diff --git a/go.mod b/go.mod index 42fc96f6a859..967298322b44 100644 --- a/go.mod +++ b/go.mod @@ -1,39 +1,39 @@ module knative.dev/serving -go 1.22 +go 1.23.0 require ( github.com/ahmetb/gen-crd-api-reference-docs v0.3.1-0.20210609063737-0067dc6dcea2 - github.com/cert-manager/cert-manager v1.13.3 + github.com/cert-manager/cert-manager v1.17.1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/ghodss/yaml v1.0.0 github.com/gogo/protobuf v1.3.2 - github.com/google/go-cmp v0.6.0 - github.com/google/go-containerregistry v0.13.0 + github.com/google/go-cmp v0.7.0 + github.com/google/go-containerregistry v0.20.3 github.com/google/go-containerregistry/pkg/authn/k8schain v0.0.0-20230209165335-3624968304fd github.com/google/gofuzz v1.2.0 - github.com/gorilla/websocket v1.5.1 + github.com/gorilla/websocket v1.5.3 github.com/hashicorp/golang-lru v1.0.2 - github.com/influxdata/influxdb-client-go/v2 v2.9.0 + github.com/influxdata/influxdb-client-go/v2 v2.14.0 github.com/kelseyhightower/envconfig v1.4.0 - github.com/tsenart/vegeta/v12 v12.11.1 + github.com/tsenart/vegeta/v12 v12.12.0 go.opencensus.io v0.24.0 - go.uber.org/atomic v1.10.0 - go.uber.org/automaxprocs v1.5.3 + go.uber.org/atomic v1.11.0 + go.uber.org/automaxprocs v1.6.0 go.uber.org/zap v1.27.0 - golang.org/x/net v0.34.0 - golang.org/x/sync v0.10.0 - golang.org/x/sys v0.29.0 - golang.org/x/time v0.5.0 - google.golang.org/api v0.183.0 - google.golang.org/grpc v1.65.0 - k8s.io/api v0.29.2 - k8s.io/apiextensions-apiserver v0.29.2 - k8s.io/apimachinery v0.29.2 - k8s.io/client-go v0.29.2 - k8s.io/code-generator v0.29.2 - k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 - k8s.io/utils v0.0.0-20240102154912-e7106e64919e + golang.org/x/net v0.39.0 + golang.org/x/sync v0.13.0 + golang.org/x/sys v0.32.0 + golang.org/x/time v0.8.0 + google.golang.org/api v0.198.0 + google.golang.org/grpc v1.69.2 + k8s.io/api v0.32.0 + k8s.io/apiextensions-apiserver v0.32.0 + k8s.io/apimachinery v0.32.0 + k8s.io/client-go v0.32.0 + k8s.io/code-generator v0.32.0 + k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 + k8s.io/utils v0.0.0-20241210054802-24370beab758 knative.dev/caching v0.0.0-20240716132144-989f54c83776 knative.dev/hack v0.0.0-20240704013904-b9799599afcf knative.dev/networking v0.0.0-20240716111826-bab7f2a3e556 @@ -42,9 +42,9 @@ require ( ) require ( - cloud.google.com/go/auth v0.5.1 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/auth v0.9.4 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d // indirect contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect contrib.go.opencensus.io/exporter/zipkin v0.1.2 // indirect @@ -57,108 +57,112 @@ require ( github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/aws/aws-sdk-go-v2 v1.16.16 // indirect - github.com/aws/aws-sdk-go-v2/config v1.17.8 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.12.21 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 // indirect + github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect + github.com/aws/aws-sdk-go-v2 v1.31.0 // indirect + github.com/aws/aws-sdk-go-v2/config v1.27.36 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.34 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect github.com/aws/aws-sdk-go-v2/service/ecr v1.17.18 // indirect github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.17 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.11.23 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.6 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.16.19 // indirect - github.com/aws/smithy-go v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.23.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.31.0 // indirect + github.com/aws/smithy-go v1.21.0 // indirect github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20221004211355-a250ad2ca1e3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/blendle/zapdriver v1.3.1 // indirect - github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b // indirect + github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chrismellard/docker-credential-acr-env v0.0.0-20221002210726-e883f69e0206 // indirect - github.com/containerd/stargz-snapshotter/estargz v0.12.1 // indirect - github.com/deepmap/oapi-codegen v1.8.2 // indirect + github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect github.com/dimchansky/utfbom v1.1.1 // indirect - github.com/docker/cli v20.10.20+incompatible // indirect - github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v25.0.6+incompatible // indirect - github.com/docker/docker-credential-helpers v0.7.0 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/evanphx/json-patch v5.6.0+incompatible // indirect + github.com/docker/cli v27.5.0+incompatible // indirect + github.com/docker/distribution v2.8.3+incompatible // indirect + github.com/docker/docker-credential-helpers v0.8.2 // indirect + github.com/emicklei/go-restful/v3 v3.12.1 // indirect github.com/evanphx/json-patch/v5 v5.9.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/jsonpointer v0.20.2 // indirect - github.com/go-openapi/jsonreference v0.20.4 // indirect - github.com/go-openapi/swag v0.22.7 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/gobuffalo/flect v1.0.2 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gnostic-models v0.6.9 // indirect github.com/google/go-containerregistry/pkg/authn/kubernetes v0.0.0-20230209165335-3624968304fd // indirect - github.com/google/s2a-go v0.1.7 // indirect + github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.4 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect - github.com/imdario/mergo v0.3.12 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect + github.com/googleapis/gax-go/v2 v2.13.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 // indirect github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 // indirect github.com/influxdata/tdigest v0.0.1 // indirect github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.8 // indirect - github.com/mailru/easyjson v0.7.7 // indirect + github.com/klauspost/compress v1.17.11 // indirect + github.com/mailru/easyjson v0.9.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/oapi-codegen/runtime v1.0.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc2 // indirect + github.com/opencontainers/image-spec v1.1.0 // indirect github.com/openzipkin/zipkin-go v0.4.3 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus/client_golang v1.19.1 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.54.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/common v0.61.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/prometheus/statsd_exporter v0.22.7 // indirect - github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 // indirect + github.com/rs/dnscache v0.0.0-20230804202142-fc85eb664529 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/tsenart/go-tsz v0.0.0-20180814235614-0bd30b3df1c3 // indirect - github.com/vbatts/tar-split v0.11.2 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect + github.com/vbatts/tar-split v0.11.6 // indirect + github.com/x448/float16 v0.8.4 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect + go.opentelemetry.io/otel v1.33.0 // indirect + go.opentelemetry.io/otel/metric v1.33.0 // indirect + go.opentelemetry.io/otel/trace v1.33.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.32.0 // indirect - golang.org/x/mod v0.19.0 // indirect - golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/term v0.28.0 // indirect - golang.org/x/text v0.21.0 // indirect - golang.org/x/tools v0.23.0 // indirect + golang.org/x/crypto v0.37.0 // indirect + golang.org/x/mod v0.22.0 // indirect + golang.org/x/oauth2 v0.25.0 // indirect + golang.org/x/term v0.31.0 // indirect + golang.org/x/text v0.24.0 // indirect + golang.org/x/tools v0.29.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect - google.golang.org/protobuf v1.34.1 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241219192143-6b3ec007d9bb // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241219192143-6b3ec007d9bb // indirect + google.golang.org/protobuf v1.36.3 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/gengo v0.0.0-20240129211411-f967bbeff4b4 // indirect + k8s.io/gengo/v2 v2.0.0-20240911193312-2b36238f13e9 // indirect k8s.io/klog v1.0.0 // indirect - k8s.io/klog/v2 v2.120.1 // indirect - sigs.k8s.io/gateway-api v0.8.0 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + sigs.k8s.io/gateway-api v1.1.0 // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.5.0 // indirect ) // TODO: https://github.com/knative/serving/issues/14597 diff --git a/go.sum b/go.sum index 7bd5c612f275..708a5668261f 100644 --- a/go.sum +++ b/go.sum @@ -13,18 +13,18 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go/auth v0.5.1 h1:0QNO7VThG54LUzKiQxv8C6x1YX7lUrzlAa1nVLF8CIw= -cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s= -cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= -cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= +cloud.google.com/go/auth v0.9.4 h1:DxF7imbEbiFu9+zdKC6cKBko1e8XeJnipNqIbWZ+kDI= +cloud.google.com/go/auth v0.9.4/go.mod h1:SHia8n6//Ya940F1rLimhJCjjx7KE17t0ctFEci3HkA= +cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= +cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -70,6 +70,7 @@ github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUM github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/ahmetb/gen-crd-api-reference-docs v0.3.1-0.20210609063737-0067dc6dcea2 h1:t/ces1/q8tuApSb+T5ajsu3wqkofUT43U1gpDYTPYME= @@ -81,34 +82,50 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/aws/aws-sdk-go-v2 v1.16.16 h1:M1fj4FE2lB4NzRb9Y0xdWsn2P0+2UHVxwKyOa4YJNjk= +github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ= +github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk= github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k= -github.com/aws/aws-sdk-go-v2/config v1.17.8 h1:b9LGqNnOdg9vR4Q43tBTVWk4J6F+W774MSchvKJsqnE= +github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U= +github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA= github.com/aws/aws-sdk-go-v2/config v1.17.8/go.mod h1:UkCI3kb0sCdvtjiXYiU4Zx5h07BOpgBTtkPu/49r+kA= -github.com/aws/aws-sdk-go-v2/credentials v1.12.21 h1:4tjlyCD0hRGNQivh5dN8hbP30qQhMLBE/FgQR1vHHWM= +github.com/aws/aws-sdk-go-v2/config v1.27.36 h1:4IlvHh6Olc7+61O1ktesh0jOcqmq/4WG6C2Aj5SKXy0= +github.com/aws/aws-sdk-go-v2/config v1.27.36/go.mod h1:IiBpC0HPAGq9Le0Xxb1wpAKzEfAQ3XlYgJLYKEVYcfw= github.com/aws/aws-sdk-go-v2/credentials v1.12.21/go.mod h1:O+4XyAt4e+oBAoIwNUYkRg3CVMscaIJdmZBOcPgJ8D8= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17 h1:r08j4sbZu/RVi+BNxkBJwPMUYY3P8mgSDuKkZ/ZN1lE= +github.com/aws/aws-sdk-go-v2/credentials v1.17.34 h1:gmkk1l/cDGSowPRzkdxYi8edw+gN4HmVK151D/pqGNc= +github.com/aws/aws-sdk-go-v2/credentials v1.17.34/go.mod h1:4R9OEV3tgFMsok4ZeFpExn7zQaZRa9MRGFYnI/xC/vs= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17/go.mod h1:yIkQcCDYNsZfXpd5UX2Cy+sWA1jPgIhGTw9cOBzfVnQ= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23 h1:s4g/wnzMf+qepSNgTvaQQHNxyMLKSawNhKCPNy++2xY= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17 h1:/K482T5A3623WJgWT8w1yRAFK4RzGzEl7y39yhtn9eA= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 h1:kYQ3H1u0ANr9KEKlGs/jTLrBFPo8P8NaH/w7A01NeeM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18/go.mod h1:r506HmK5JDUh9+Mw4CfGJGSSoqIiLCndAuqXuhbv67Y= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 h1:wj5Rwc05hvUSvKuOF29IYb9QrCLjU+rHAy/x/o0DK2c= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 h1:Z7IdFUONvTcvS7YuhtVxN99v2cCoHRXOS4mTr0B/pUc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18/go.mod h1:DkKMmksZVVyat+Y+r1dEOgJEfUeA7UngIHWeKsi0yNc= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= github.com/aws/aws-sdk-go-v2/service/ecr v1.17.18 h1:uiF/RI+Up8H2xdgT2GWa20YzxiKEalHieqNjm6HC3Xk= github.com/aws/aws-sdk-go-v2/service/ecr v1.17.18/go.mod h1:DQtDYmexqR+z+B6HBCvY7zK/tuXKv6Zy/IwOXOK3eow= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.17 h1:bcQy5/dcJO8VQD+p0tDoIYdgEC3ch9f1/BNRES7XMug= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.17/go.mod h1:r1Vuka0kyzqN0sZm4lYTXf0Vhl+o/mTLq6vKpBBZYaQ= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17 h1:Jrd/oMh0PKQc6+BowB+pLEwLIgaQF29eYbe7E1Av9Ug= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI= -github.com/aws/aws-sdk-go-v2/service/sso v1.11.23 h1:pwvCchFUEnlceKIgPUouBJwK81aCkQ8UDMORfeFtW10= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg= github.com/aws/aws-sdk-go-v2/service/sso v1.11.23/go.mod h1:/w0eg9IhFGjGyyncHIQrXtU8wvNsTJOP0R6PPj0wf80= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.6 h1:OwhhKc1P9ElfWbMKPIbMMZBV6hzJlL2JKD76wNNVzgQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.23.0 h1:fHySkG0IGj2nepgGJPmmhZYL9ndnsq1Tvc6MeuVQCaQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.23.0/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.6/go.mod h1:csZuQY65DAdFBt1oIjO5hhBR49kQqop4+lcuCjf2arA= -github.com/aws/aws-sdk-go-v2/service/sts v1.16.19 h1:9pPi0PsFNAGILFfPCk8Y0iyEBGc6lu6OQ97U7hmdesg= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0 h1:cU/OeQPNReyMj1JEBgjE29aclYZYtXcsPMXbTkVGMFk= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E= github.com/aws/aws-sdk-go-v2/service/sts v1.16.19/go.mod h1:h4J3oPZQbxLhzGnk+j9dfYHi5qIOVJ5kczZd658/ydM= -github.com/aws/smithy-go v1.13.3 h1:l7LYxGuzK6/K+NzJ2mC+VvLUbae0sL3bXU//04MkmnA= +github.com/aws/aws-sdk-go-v2/service/sts v1.31.0 h1:GNVxIHBTi2EgwCxpNiozhNasMOK+ROUA2Z3X+cSBX58= +github.com/aws/aws-sdk-go-v2/service/sts v1.31.0/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI= github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA= +github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20221004211355-a250ad2ca1e3 h1:Ted/bR1N6ltMrASdwRhX1BrGYSFg3aeGMlK8GlgkGh4= github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20221004211355-a250ad2ca1e3/go.mod h1:m06KtrZgOloUaePAQMv+Ha8kRmTnKdozTHZrweepIrw= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -119,15 +136,16 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE= github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= +github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/bmizerany/perks v0.0.0-20230307044200-03f9df79da1e h1:mWOqoK5jV13ChKf/aF3plwQ96laasTJgZi4f1aSOu+M= github.com/bmizerany/perks v0.0.0-20230307044200-03f9df79da1e/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q= -github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b h1:6+ZFm0flnudZzdSE0JxlhR2hKnGPcNB35BjQf4RYQDY= -github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= +github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 h1:6lhrsTEnloDPXyeZBvSYvQf8u86jbKehZPVDDlkgDl4= +github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/cert-manager/cert-manager v1.13.3 h1:3R4G0RI7K0OkTZhWlVOC5SGZMYa2NwqmQJoyKydrz/M= -github.com/cert-manager/cert-manager v1.13.3/go.mod h1:BM2+Pt/NmSv1Zr25/MHv6BgIEF9IUxA1xAjp80qkxgc= +github.com/cert-manager/cert-manager v1.17.1 h1:Aig+lWMoLsmpGd9TOlTvO4t0Ah3D+/vGB37x/f+ZKt0= +github.com/cert-manager/cert-manager v1.17.1/go.mod h1:zeG4D+AdzqA7hFMNpYCJgcQ2VOfFNBa+Jzm3kAwiDU4= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -139,53 +157,47 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/containerd/stargz-snapshotter/estargz v0.12.1 h1:+7nYmHJb0tEkcRaAW+MHqoKaJYZmkikupxCqVtmPuY0= -github.com/containerd/stargz-snapshotter/estargz v0.12.1/go.mod h1:12VUuCq3qPq4y8yUW+l5w3+oXV3cx2Po3KSe/SmPGqw= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8= +github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deepmap/oapi-codegen v1.8.2 h1:SegyeYGcdi0jLLrpbCMoJxnUUn8GBXHsvr4rbzjuhfU= -github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-gk v0.0.0-20200319235926-a69029f61654 h1:XOPLOMn/zT4jIgxfxSsoXPxkrzz0FaCHwp33x5POJ+Q= github.com/dgryski/go-gk v0.0.0-20200319235926-a69029f61654/go.mod h1:qm+vckxRlDt0aOla0RYJJVeqHZlWfOm2UIxHaqPB46E= github.com/dgryski/go-lttb v0.0.0-20230207170358-f8fc36cdbff1 h1:dxwR3CStJdJamsIoMPCmxuIfBAPTgmzvFax+MvFav3M= github.com/dgryski/go-lttb v0.0.0-20230207170358-f8fc36cdbff1/go.mod h1:UwftcHUI/qTYvLAxrWmANuRckf8+08O3C3hwStvkhDU= github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= -github.com/docker/cli v20.10.20+incompatible h1:lWQbHSHUFs7KraSN2jOJK7zbMS2jNCHI4mt4xUFUVQ4= -github.com/docker/cli v20.10.20+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= -github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg= -github.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= +github.com/docker/cli v27.5.0+incompatible h1:aMphQkcGtpHixwwhAXJT1rrK/detk2JIvDaFkLctbGM= +github.com/docker/cli v27.5.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= +github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= +github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= +github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= +github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= -github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= +github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -203,21 +215,20 @@ github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KE github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= -github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= -github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= -github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.22.7 h1:JWrc1uc/P9cSomxfnsFSVWoE1FW6bNbrVPmpQYpCcR8= -github.com/go-openapi/swag v0.22.7/go.mod h1:Gl91UqO+btAM0plGGxHqJcQZ1ZTy6jbmridBTsDy8A0= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA= github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -231,8 +242,6 @@ github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -264,11 +273,10 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= +github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -281,10 +289,10 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.13.0 h1:y1C7Z3e149OJbOPDBxLYR8ITPz8dTKqQwjErKVHJC8k= -github.com/google/go-containerregistry v0.13.0/go.mod h1:J9FQ+eSS4a1aC2GNZxvNpbWhgp0487v+cgiilB4FqDo= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-containerregistry v0.20.3 h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI= +github.com/google/go-containerregistry v0.20.3/go.mod h1:w00pIgBRDVUDFM6bq+Qx8lwNWK+cxgCuX1vd3PIBDNI= github.com/google/go-containerregistry/pkg/authn/k8schain v0.0.0-20230209165335-3624968304fd h1:hQf//Ak0trkoqnm94i9mw00d7axUwfK92hMxslxNKYc= github.com/google/go-containerregistry/pkg/authn/k8schain v0.0.0-20230209165335-3624968304fd/go.mod h1:x5fIlj5elU+/eYF60q4eASMQ9kDc+GMFa7UU9M3mFFw= github.com/google/go-containerregistry/pkg/authn/kubernetes v0.0.0-20230209165335-3624968304fd h1:AQZlI371LcvBYY/7Q55TjxrpZJs6wtEXMw4Wq38XLy8= @@ -302,40 +310,37 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= +github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= +github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg= -github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= +github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= +github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd h1:PpuIBO5P3e9hpqBD0O/HjhShYuM6XE0i/lbE6J94kww= -github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= +github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= +github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3ArSgIyScOAyMRqBxRg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/influxdata/influxdb-client-go/v2 v2.9.0 h1:1Ejxpt+cpWkadefxd5xvVx7pFgFaafdNp1ItfHzKRW4= -github.com/influxdata/influxdb-client-go/v2 v2.9.0/go.mod h1:x7Jo5UHHl+w8wu8UnGiNobDDHygojXwJX4mx7rXGKMk= +github.com/influxdata/influxdb-client-go/v2 v2.14.0 h1:AjbBfJuq+QoaXNcrova8smSjwJdUHnwvfjMF71M1iI4= +github.com/influxdata/influxdb-client-go/v2 v2.14.0/go.mod h1:Ahpm3QXKMJslpXl3IftVLVezreAUtBOTZssDrjZEFHI= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= github.com/influxdata/tdigest v0.0.1 h1:XpFptwYmnEKUqmkcDjrzffswZ3nvNeevbUSLPP/ZzIY= @@ -355,15 +360,15 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= -github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -375,23 +380,14 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= +github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.1.56 h1:5imZaSeoRNvpM9SzWNhEcP9QliKiz20/dA2QabIGVnE= -github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY= +github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= +github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -405,18 +401,20 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo= +github.com/oapi-codegen/runtime v1.0.0/go.mod h1:LmCUMQuPB4M/nLXilQXhHw+BLZdDb18B34OO356yJ/A= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= -github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg= -github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= -github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.4.3 h1:9EGwpqkgnwdEIJ+Od7QVSEIH+ocmm5nPat0G7sjsSdg= github.com/openzipkin/zipkin-go v0.4.3/go.mod h1:M9wCJZFWCo2RiY+o1eBCEMe0Dp2S5LDHcMZmk3RmK7c= @@ -438,8 +436,8 @@ github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqr github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -452,27 +450,27 @@ github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9 github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.54.0 h1:ZlZy0BgJhTwVZUn7dLOkwCZHUkrAqd3WYtcFCWnM1D8= -github.com/prometheus/common v0.54.0/go.mod h1:/TQgMJP5CuVYveyT7n/0Ix8yLNNXy9yRSkhnLTHPDIQ= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/prometheus/prometheus v0.47.0 h1:tIJJKZGlmrMVsvIt6rMfB8he7CRHEc8ZxS5ubcZtbkM= -github.com/prometheus/prometheus v0.47.0/go.mod h1:J/bmOSjgH7lFxz2gZhrWEZs2i64vMS+HIuZfmYNhJ/M= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/prometheus v0.53.1 h1:B0xu4VuVTKYrIuBMn/4YSUoIPYxs956qsOfcS4rqCuA= +github.com/prometheus/prometheus v0.53.1/go.mod h1:RZDkzs+ShMBDkAPQkLEaLBXpjmDcjhNxU2drUVPgKUU= github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 h1:Lt9DzQALzHoDwMBGJ6v8ObDPR0dzr2a6sXTB1Fq7IHs= -github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417/go.mod h1:qe5TWALJ8/a1Lqznoc5BDHpYX/8HU60Hm2AwRmqzxqA= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rs/dnscache v0.0.0-20230804202142-fc85eb664529 h1:18kd+8ZUlt/ARXhljq+14TwAoKa61q6dX8jtwOf6DH8= +github.com/rs/dnscache v0.0.0-20230804202142-fc85eb664529/go.mod h1:qe5TWALJ8/a1Lqznoc5BDHpYX/8HU60Hm2AwRmqzxqA= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -480,12 +478,12 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/quantile v0.0.0-20220407130108-4246515d968d h1:X4+kt6zM/OVO6gbJdAfJR60MGPsqCzbtXNnjoGqdfAs= github.com/streadway/quantile v0.0.0-20220407130108-4246515d968d/go.mod h1:lbP8tGiBjZ5YWIc2fzuRpTaz0b/53vT6PEs3QuAWzuU= @@ -496,26 +494,23 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/tsenart/go-tsz v0.0.0-20180814235614-0bd30b3df1c3 h1:pcQGQzTwCg//7FgVywqge1sW9Yf8VMsMdG58MI5kd8s= github.com/tsenart/go-tsz v0.0.0-20180814235614-0bd30b3df1c3/go.mod h1:SWZznP1z5Ki7hDT2ioqiFKEse8K9tU2OUvaRI0NeGQo= -github.com/tsenart/vegeta/v12 v12.11.1 h1:Rbwe7Zxr7sJ+BDTReemeQalYPvKiSV+O7nwmUs20B3E= -github.com/tsenart/vegeta/v12 v12.11.1/go.mod h1:swiFmrgpqj2llHURgHYFRFN0tfrIrlnspg01HjwOnSQ= -github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/vbatts/tar-split v0.11.2 h1:Via6XqJr0hceW4wff3QRzD5gAk/tatMw/4ZA7cTlIME= -github.com/vbatts/tar-split v0.11.2/go.mod h1:vV3ZuO2yWSVsz+pfFzDG/upWH1JhjOiEaWq6kXyQ3VI= +github.com/tsenart/vegeta/v12 v12.12.0 h1:FKMMNomd3auAElO/TtbXzRFXAKGee6N/GKCGweFVm2U= +github.com/tsenart/vegeta/v12 v12.12.0/go.mod h1:gpdfR++WHV9/RZh4oux0f6lNPhsOH8pCjIGUlcPQe1M= +github.com/vbatts/tar-split v0.11.6 h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs= +github.com/vbatts/tar-split v0.11.6/go.mod h1:dqKNtesIOr2j2Qv3W/cHjnvk9I8+G7oAkFDFN6TCBEI= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -529,19 +524,25 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= +go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= +go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= +go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= +go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= +go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= +go.opentelemetry.io/otel/sdk v1.33.0/go.mod h1:A1Q5oi7/9XaMlIWzPSxLRWOI8nG3FnzHJNbiENQuihM= +go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= +go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= +go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= +go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= -go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= +go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= @@ -556,14 +557,12 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -575,8 +574,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= +golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -598,8 +597,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= -golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -632,7 +631,6 @@ golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -640,8 +638,8 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -649,8 +647,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= +golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -663,14 +661,13 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -679,14 +676,11 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -701,7 +695,6 @@ golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -717,32 +710,28 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= -golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -788,8 +777,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= -golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -816,8 +805,8 @@ google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.183.0 h1:PNMeRDwo1pJdgNcFQ9GstuLe/noWKIc89pRWRLMvLwE= -google.golang.org/api v0.183.0/go.mod h1:q43adC5/pHoSZTx5h2mSmdF7NcyfW9JuDyIOJAgS9ZQ= +google.golang.org/api v0.198.0 h1:OOH5fZatk57iN0A7tjJQzt6aPfYQ1JiWkt1yGseazks= +google.golang.org/api v0.198.0/go.mod h1:/Lblzl3/Xqqk9hw/yS97TImKTUwnf1bv89v7+OagJzc= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -855,10 +844,10 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/api v0.0.0-20241219192143-6b3ec007d9bb h1:B7GIB7sr443wZ/EAEl7VZjmh1V6qzkt5V+RYcUYtS1U= +google.golang.org/genproto/googleapis/api v0.0.0-20241219192143-6b3ec007d9bb/go.mod h1:E5//3O5ZIG2l71Xnt+P/CYUY8Bxs8E7WMoZ9tlcMbAY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241219192143-6b3ec007d9bb h1:3oy2tynMOP1QbTC0MsNNAV+Se8M2Bd0A5+x1QHyw+pI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241219192143-6b3ec007d9bb/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -873,8 +862,8 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= +google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -889,8 +878,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= +google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -898,6 +887,8 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= @@ -923,29 +914,31 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.29.2 h1:hBC7B9+MU+ptchxEqTNW2DkUosJpp1P+Wn6YncZ474A= -k8s.io/api v0.29.2/go.mod h1:sdIaaKuU7P44aoyyLlikSLayT6Vb7bvJNCX105xZXY0= -k8s.io/apiextensions-apiserver v0.29.2 h1:UK3xB5lOWSnhaCk0RFZ0LUacPZz9RY4wi/yt2Iu+btg= -k8s.io/apiextensions-apiserver v0.29.2/go.mod h1:aLfYjpA5p3OwtqNXQFkhJ56TB+spV8Gc4wfMhUA3/b8= -k8s.io/apimachinery v0.29.2 h1:EWGpfJ856oj11C52NRCHuU7rFDwxev48z+6DSlGNsV8= -k8s.io/apimachinery v0.29.2/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU= -k8s.io/client-go v0.29.2 h1:FEg85el1TeZp+/vYJM7hkDlSTFZ+c5nnK44DJ4FyoRg= -k8s.io/client-go v0.29.2/go.mod h1:knlvFZE58VpqbQpJNbCbctTVXcd35mMyAAwBdpt4jrA= -k8s.io/code-generator v0.29.2 h1:c9/iw2KnNpw2IRV+wwuG/Wns2TjPSgjWzbbjTevyiHI= -k8s.io/code-generator v0.29.2/go.mod h1:FwFi3C9jCrmbPjekhaCYcYG1n07CYiW1+PAPCockaos= +k8s.io/api v0.32.0 h1:OL9JpbvAU5ny9ga2fb24X8H6xQlVp+aJMFlgtQjR9CE= +k8s.io/api v0.32.0/go.mod h1:4LEwHZEf6Q/cG96F3dqR965sYOfmPM7rq81BLgsE0p0= +k8s.io/apiextensions-apiserver v0.32.0 h1:S0Xlqt51qzzqjKPxfgX1xh4HBZE+p8KKBq+k2SWNOE0= +k8s.io/apiextensions-apiserver v0.32.0/go.mod h1:86hblMvN5yxMvZrZFX2OhIHAuFIMJIZ19bTvzkP+Fmw= +k8s.io/apimachinery v0.32.0 h1:cFSE7N3rmEEtv4ei5X6DaJPHHX0C+upp+v5lVPiEwpg= +k8s.io/apimachinery v0.32.0/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.0 h1:DimtMcnN/JIKZcrSrstiwvvZvLjG0aSxy8PxN8IChp8= +k8s.io/client-go v0.32.0/go.mod h1:boDWvdM1Drk4NJj/VddSLnx59X3OPgwrOo0vGbtq9+8= +k8s.io/code-generator v0.32.0 h1:s0lNN8VSWny8LBz5t5iy7MCdgwdOhdg7vAGVxvS+VWU= +k8s.io/code-generator v0.32.0/go.mod h1:b7Q7KMZkvsYFy72A79QYjiv4aTz3GvW0f1T3UfhFq4s= k8s.io/gengo v0.0.0-20201203183100-97869a43a9d9/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20240129211411-f967bbeff4b4 h1:izq7u3SJBdOAuA5YYe1/PIp9jczrih/jGlKRRt0G7bQ= k8s.io/gengo v0.0.0-20240129211411-f967bbeff4b4/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo/v2 v2.0.0-20240911193312-2b36238f13e9 h1:si3PfKm8dDYxgfbeA6orqrtLkvvIeH8UqffFJDl0bz4= +k8s.io/gengo/v2 v2.0.0-20240911193312-2b36238f13e9/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU= k8s.io/klog v0.2.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= -k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ= -k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= +k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= +k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0= +k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= knative.dev/caching v0.0.0-20240716132144-989f54c83776 h1:2nINnWuXtb9e2nG/EJxSCeghcmu6qmvmomJ7woiP5Is= knative.dev/caching v0.0.0-20240716132144-989f54c83776/go.mod h1:Uj74eO9rLiK1eb8wmDBED1hJBZQ7MJ9cvq/d8Ktsm3c= knative.dev/hack v0.0.0-20240704013904-b9799599afcf h1:n92FmZRywgtHso7pFAku7CW0qvRAs1hXtMQqO0R6eiE= @@ -959,12 +952,12 @@ pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/gateway-api v0.8.0 h1:isQQ3Jx2qFP7vaA3ls0846F0Amp9Eq14P08xbSwVbQg= -sigs.k8s.io/gateway-api v0.8.0/go.mod h1:okOnjPNBFbIS/Rw9kAhuIUaIkLhTKEu+ARIuXk2dgaM= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +sigs.k8s.io/gateway-api v1.1.0 h1:DsLDXCi6jR+Xz8/xd0Z1PYl2Pn0TyaFMOPPZIj4inDM= +sigs.k8s.io/gateway-api v1.1.0/go.mod h1:ZH4lHrL2sDi0FHZ9jjneb8kKnGzFWyrTya35sWUTrRs= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= +sigs.k8s.io/structured-merge-diff/v4 v4.5.0 h1:nbCitCK2hfnhyiKo6uf2HxUPTCodY6Qaf85SbDIaMBk= +sigs.k8s.io/structured-merge-diff/v4 v4.5.0/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/openshift/ci-operator/build-image/Dockerfile b/openshift/ci-operator/build-image/Dockerfile index c141d4fb9022..d462d29e3b86 100755 --- a/openshift/ci-operator/build-image/Dockerfile +++ b/openshift/ci-operator/build-image/Dockerfile @@ -3,7 +3,7 @@ FROM registry.ci.openshift.org/ocp/4.17:cli-artifacts as tools # Dockerfile to bootstrap build and test in openshift-ci -FROM registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 as builder +FROM registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 as builder ARG TARGETARCH diff --git a/openshift/ci-operator/knative-images/activator/Dockerfile b/openshift/ci-operator/knative-images/activator/Dockerfile index d19b657547a2..94a73accd606 100755 --- a/openshift/ci-operator/knative-images/activator/Dockerfile +++ b/openshift/ci-operator/knative-images/activator/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for cmd/activator. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-images/autoscaler-hpa/Dockerfile b/openshift/ci-operator/knative-images/autoscaler-hpa/Dockerfile index 4d95a3d17cee..5b39b7cb9306 100755 --- a/openshift/ci-operator/knative-images/autoscaler-hpa/Dockerfile +++ b/openshift/ci-operator/knative-images/autoscaler-hpa/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for cmd/autoscaler-hpa. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-images/autoscaler/Dockerfile b/openshift/ci-operator/knative-images/autoscaler/Dockerfile index 3f6aedac2dcd..d6916a4f17e2 100755 --- a/openshift/ci-operator/knative-images/autoscaler/Dockerfile +++ b/openshift/ci-operator/knative-images/autoscaler/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for cmd/autoscaler. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-images/cleanup/Dockerfile b/openshift/ci-operator/knative-images/cleanup/Dockerfile index 0f6ed8d22875..5e06571c2b45 100755 --- a/openshift/ci-operator/knative-images/cleanup/Dockerfile +++ b/openshift/ci-operator/knative-images/cleanup/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for pkg/cleanup/cmd/cleanup. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-images/controller/Dockerfile b/openshift/ci-operator/knative-images/controller/Dockerfile index d12e5548a0de..8f8ab9b27282 100755 --- a/openshift/ci-operator/knative-images/controller/Dockerfile +++ b/openshift/ci-operator/knative-images/controller/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for cmd/controller. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-images/default-domain/Dockerfile b/openshift/ci-operator/knative-images/default-domain/Dockerfile index 64c72516e065..8c839197aa00 100755 --- a/openshift/ci-operator/knative-images/default-domain/Dockerfile +++ b/openshift/ci-operator/knative-images/default-domain/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for cmd/default-domain. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-images/migrate/Dockerfile b/openshift/ci-operator/knative-images/migrate/Dockerfile index fd98bcbc48d6..0f78098ce17f 100755 --- a/openshift/ci-operator/knative-images/migrate/Dockerfile +++ b/openshift/ci-operator/knative-images/migrate/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for vendor/knative.dev/pkg/apiextensions/storageversion/cmd/migrate. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-images/queue/Dockerfile b/openshift/ci-operator/knative-images/queue/Dockerfile index 7e2d248576e8..53c00db851d6 100755 --- a/openshift/ci-operator/knative-images/queue/Dockerfile +++ b/openshift/ci-operator/knative-images/queue/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for cmd/queue. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-images/webhook/Dockerfile b/openshift/ci-operator/knative-images/webhook/Dockerfile index 19f4854333b4..0073e3ce0033 100755 --- a/openshift/ci-operator/knative-images/webhook/Dockerfile +++ b/openshift/ci-operator/knative-images/webhook/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for cmd/webhook. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-perf-images/dataplane-probe/Dockerfile b/openshift/ci-operator/knative-perf-images/dataplane-probe/Dockerfile index 9d4b36c66f45..47c90d1b94ef 100755 --- a/openshift/ci-operator/knative-perf-images/dataplane-probe/Dockerfile +++ b/openshift/ci-operator/knative-perf-images/dataplane-probe/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/performance/benchmarks/dataplane-probe. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-perf-images/load-test/Dockerfile b/openshift/ci-operator/knative-perf-images/load-test/Dockerfile index e32a04c410e3..23b43ddcec87 100755 --- a/openshift/ci-operator/knative-perf-images/load-test/Dockerfile +++ b/openshift/ci-operator/knative-perf-images/load-test/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/performance/benchmarks/load-test. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-perf-images/real-traffic-test/Dockerfile b/openshift/ci-operator/knative-perf-images/real-traffic-test/Dockerfile index eb5db7cc6c5b..585f1ecf28bc 100755 --- a/openshift/ci-operator/knative-perf-images/real-traffic-test/Dockerfile +++ b/openshift/ci-operator/knative-perf-images/real-traffic-test/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/performance/benchmarks/real-traffic-test. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-perf-images/reconciliation-delay/Dockerfile b/openshift/ci-operator/knative-perf-images/reconciliation-delay/Dockerfile index 6d31d243a641..7331ff140af2 100755 --- a/openshift/ci-operator/knative-perf-images/reconciliation-delay/Dockerfile +++ b/openshift/ci-operator/knative-perf-images/reconciliation-delay/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/performance/benchmarks/reconciliation-delay. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-perf-images/rollout-probe/Dockerfile b/openshift/ci-operator/knative-perf-images/rollout-probe/Dockerfile index eccd602b9bde..b2321af96ea3 100755 --- a/openshift/ci-operator/knative-perf-images/rollout-probe/Dockerfile +++ b/openshift/ci-operator/knative-perf-images/rollout-probe/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/performance/benchmarks/rollout-probe. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-perf-images/scale-from-zero/Dockerfile b/openshift/ci-operator/knative-perf-images/scale-from-zero/Dockerfile index 08fad970aa3f..732ee8b3940e 100755 --- a/openshift/ci-operator/knative-perf-images/scale-from-zero/Dockerfile +++ b/openshift/ci-operator/knative-perf-images/scale-from-zero/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/performance/benchmarks/scale-from-zero. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/autoscale/Dockerfile b/openshift/ci-operator/knative-test-images/autoscale/Dockerfile index ed5029795b46..a70efb97bee2 100755 --- a/openshift/ci-operator/knative-test-images/autoscale/Dockerfile +++ b/openshift/ci-operator/knative-test-images/autoscale/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/autoscale. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/failing/Dockerfile b/openshift/ci-operator/knative-test-images/failing/Dockerfile index ebcd77208f39..2c0d524f244d 100755 --- a/openshift/ci-operator/knative-test-images/failing/Dockerfile +++ b/openshift/ci-operator/knative-test-images/failing/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/failing. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/grpc-ping/Dockerfile b/openshift/ci-operator/knative-test-images/grpc-ping/Dockerfile index 53c12ecdda9a..9d76d8927ea0 100755 --- a/openshift/ci-operator/knative-test-images/grpc-ping/Dockerfile +++ b/openshift/ci-operator/knative-test-images/grpc-ping/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/grpc-ping. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/hellohttp2/Dockerfile b/openshift/ci-operator/knative-test-images/hellohttp2/Dockerfile index 6b2ee7e87d15..608c835fb27e 100755 --- a/openshift/ci-operator/knative-test-images/hellohttp2/Dockerfile +++ b/openshift/ci-operator/knative-test-images/hellohttp2/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/hellohttp2. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/hellovolume/Dockerfile b/openshift/ci-operator/knative-test-images/hellovolume/Dockerfile index 12db14118234..849fe63f1f51 100755 --- a/openshift/ci-operator/knative-test-images/hellovolume/Dockerfile +++ b/openshift/ci-operator/knative-test-images/hellovolume/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/hellovolume. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/helloworld/Dockerfile b/openshift/ci-operator/knative-test-images/helloworld/Dockerfile index 41f0e525a7ce..0fd81662b253 100755 --- a/openshift/ci-operator/knative-test-images/helloworld/Dockerfile +++ b/openshift/ci-operator/knative-test-images/helloworld/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/helloworld. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/httpproxy/Dockerfile b/openshift/ci-operator/knative-test-images/httpproxy/Dockerfile index 5ef2a269d5ad..984820e51874 100755 --- a/openshift/ci-operator/knative-test-images/httpproxy/Dockerfile +++ b/openshift/ci-operator/knative-test-images/httpproxy/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/httpproxy. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/pizzaplanetv1/Dockerfile b/openshift/ci-operator/knative-test-images/pizzaplanetv1/Dockerfile index d15be650916b..d8e4d34028bc 100755 --- a/openshift/ci-operator/knative-test-images/pizzaplanetv1/Dockerfile +++ b/openshift/ci-operator/knative-test-images/pizzaplanetv1/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/pizzaplanetv1. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/pizzaplanetv2/Dockerfile b/openshift/ci-operator/knative-test-images/pizzaplanetv2/Dockerfile index 28e575e2fb88..ede0c2ec4174 100755 --- a/openshift/ci-operator/knative-test-images/pizzaplanetv2/Dockerfile +++ b/openshift/ci-operator/knative-test-images/pizzaplanetv2/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/pizzaplanetv2. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/readiness/Dockerfile b/openshift/ci-operator/knative-test-images/readiness/Dockerfile index a86afaf8f121..f280327ed865 100755 --- a/openshift/ci-operator/knative-test-images/readiness/Dockerfile +++ b/openshift/ci-operator/knative-test-images/readiness/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/readiness. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/revisionfailure/Dockerfile b/openshift/ci-operator/knative-test-images/revisionfailure/Dockerfile index 591026d6bd7d..cb7b4db09dc3 100755 --- a/openshift/ci-operator/knative-test-images/revisionfailure/Dockerfile +++ b/openshift/ci-operator/knative-test-images/revisionfailure/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/revisionfailure. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/runtime/Dockerfile b/openshift/ci-operator/knative-test-images/runtime/Dockerfile index 301202a4b913..7e2df3aa8e5c 100755 --- a/openshift/ci-operator/knative-test-images/runtime/Dockerfile +++ b/openshift/ci-operator/knative-test-images/runtime/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/runtime. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/servingcontainer/Dockerfile b/openshift/ci-operator/knative-test-images/servingcontainer/Dockerfile index 9c29a4e27d75..e0cd1961732c 100755 --- a/openshift/ci-operator/knative-test-images/servingcontainer/Dockerfile +++ b/openshift/ci-operator/knative-test-images/servingcontainer/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/multicontainer/servingcontainer. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/sidecarcontainer/Dockerfile b/openshift/ci-operator/knative-test-images/sidecarcontainer/Dockerfile index ae7d88c8a5e1..f3ffea3642b4 100755 --- a/openshift/ci-operator/knative-test-images/sidecarcontainer/Dockerfile +++ b/openshift/ci-operator/knative-test-images/sidecarcontainer/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/multicontainer/sidecarcontainer. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/singlethreaded/Dockerfile b/openshift/ci-operator/knative-test-images/singlethreaded/Dockerfile index 29e3393d7aba..cf97aeb93614 100755 --- a/openshift/ci-operator/knative-test-images/singlethreaded/Dockerfile +++ b/openshift/ci-operator/knative-test-images/singlethreaded/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/singlethreaded. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/slowstart/Dockerfile b/openshift/ci-operator/knative-test-images/slowstart/Dockerfile index dcd6549844f6..f62d723fd784 100755 --- a/openshift/ci-operator/knative-test-images/slowstart/Dockerfile +++ b/openshift/ci-operator/knative-test-images/slowstart/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/slowstart. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/timeout/Dockerfile b/openshift/ci-operator/knative-test-images/timeout/Dockerfile index 23d1d1994dea..a0611033aebd 100755 --- a/openshift/ci-operator/knative-test-images/timeout/Dockerfile +++ b/openshift/ci-operator/knative-test-images/timeout/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/timeout. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/volumes/Dockerfile b/openshift/ci-operator/knative-test-images/volumes/Dockerfile index f762543950d6..3e2288b1bf9f 100755 --- a/openshift/ci-operator/knative-test-images/volumes/Dockerfile +++ b/openshift/ci-operator/knative-test-images/volumes/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/volumes. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/openshift/ci-operator/knative-test-images/wsserver/Dockerfile b/openshift/ci-operator/knative-test-images/wsserver/Dockerfile index d180da319d43..f22aa4ae01e2 100755 --- a/openshift/ci-operator/knative-test-images/wsserver/Dockerfile +++ b/openshift/ci-operator/knative-test-images/wsserver/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT! Generated Dockerfile for test/test_images/wsserver. -ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 +ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.23-openshift-4.17 ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal FROM $GO_BUILDER as builder diff --git a/vendor/cloud.google.com/go/auth/CHANGES.md b/vendor/cloud.google.com/go/auth/CHANGES.md index 7ef5fc0def97..e82cf5a901a9 100644 --- a/vendor/cloud.google.com/go/auth/CHANGES.md +++ b/vendor/cloud.google.com/go/auth/CHANGES.md @@ -1,5 +1,124 @@ # Changelog +## [0.9.4](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.3...auth/v0.9.4) (2024-09-11) + + +### Bug Fixes + +* **auth:** Enable self-signed JWT for non-GDU universe domain ([#10831](https://github.com/googleapis/google-cloud-go/issues/10831)) ([f9869f7](https://github.com/googleapis/google-cloud-go/commit/f9869f7903cfd34d1b97c25d0dc5669d2c5138e6)) + +## [0.9.3](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.2...auth/v0.9.3) (2024-09-03) + + +### Bug Fixes + +* **auth:** Choose quota project envvar over file when both present ([#10807](https://github.com/googleapis/google-cloud-go/issues/10807)) ([2d8dd77](https://github.com/googleapis/google-cloud-go/commit/2d8dd7700eff92d4b95027be55e26e1e7aa79181)), refs [#10804](https://github.com/googleapis/google-cloud-go/issues/10804) + +## [0.9.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.1...auth/v0.9.2) (2024-08-30) + + +### Bug Fixes + +* **auth:** Handle non-Transport DefaultTransport ([#10733](https://github.com/googleapis/google-cloud-go/issues/10733)) ([98d91dc](https://github.com/googleapis/google-cloud-go/commit/98d91dc8316b247498fab41ab35e57a0446fe556)), refs [#10742](https://github.com/googleapis/google-cloud-go/issues/10742) +* **auth:** Make sure quota option takes precedence over env/file ([#10797](https://github.com/googleapis/google-cloud-go/issues/10797)) ([f1b050d](https://github.com/googleapis/google-cloud-go/commit/f1b050d56d804b245cab048c2980d32b0eaceb4e)), refs [#10795](https://github.com/googleapis/google-cloud-go/issues/10795) + + +### Documentation + +* **auth:** Fix Go doc comment link ([#10751](https://github.com/googleapis/google-cloud-go/issues/10751)) ([015acfa](https://github.com/googleapis/google-cloud-go/commit/015acfab4d172650928bb1119bc2cd6307b9a437)) + +## [0.9.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.9.0...auth/v0.9.1) (2024-08-22) + + +### Bug Fixes + +* **auth:** Setting expireEarly to default when the value is 0 ([#10732](https://github.com/googleapis/google-cloud-go/issues/10732)) ([5e67869](https://github.com/googleapis/google-cloud-go/commit/5e67869a31e9e8ecb4eeebd2cfa11a761c3b1948)) + +## [0.9.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.8.1...auth/v0.9.0) (2024-08-16) + + +### Features + +* **auth:** Auth library can talk to S2A over mTLS ([#10634](https://github.com/googleapis/google-cloud-go/issues/10634)) ([5250a13](https://github.com/googleapis/google-cloud-go/commit/5250a13ec95b8d4eefbe0158f82857ff2189cb45)) + +## [0.8.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.8.0...auth/v0.8.1) (2024-08-13) + + +### Bug Fixes + +* **auth:** Make default client creation more lenient ([#10669](https://github.com/googleapis/google-cloud-go/issues/10669)) ([1afb9ee](https://github.com/googleapis/google-cloud-go/commit/1afb9ee1ee9de9810722800018133304a0ca34d1)), refs [#10638](https://github.com/googleapis/google-cloud-go/issues/10638) + +## [0.8.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.7.3...auth/v0.8.0) (2024-08-07) + + +### Features + +* **auth:** Adds support for X509 workload identity federation ([#10373](https://github.com/googleapis/google-cloud-go/issues/10373)) ([5d07505](https://github.com/googleapis/google-cloud-go/commit/5d075056cbe27bb1da4072a26070c41f8999eb9b)) + +## [0.7.3](https://github.com/googleapis/google-cloud-go/compare/auth/v0.7.2...auth/v0.7.3) (2024-08-01) + + +### Bug Fixes + +* **auth/oauth2adapt:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) +* **auth:** Disable automatic universe domain check for MDS ([#10620](https://github.com/googleapis/google-cloud-go/issues/10620)) ([7cea5ed](https://github.com/googleapis/google-cloud-go/commit/7cea5edd5a0c1e6bca558696f5607879141910e8)) +* **auth:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + +## [0.7.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.7.1...auth/v0.7.2) (2024-07-22) + + +### Bug Fixes + +* **auth:** Use default client for universe metadata lookup ([#10551](https://github.com/googleapis/google-cloud-go/issues/10551)) ([d9046fd](https://github.com/googleapis/google-cloud-go/commit/d9046fdd1435d1ce48f374806c1def4cb5ac6cd3)), refs [#10544](https://github.com/googleapis/google-cloud-go/issues/10544) + +## [0.7.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.7.0...auth/v0.7.1) (2024-07-10) + + +### Bug Fixes + +* **auth:** Bump google.golang.org/grpc@v1.64.1 ([8ecc4e9](https://github.com/googleapis/google-cloud-go/commit/8ecc4e9622e5bbe9b90384d5848ab816027226c5)) + +## [0.7.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.6.1...auth/v0.7.0) (2024-07-09) + + +### Features + +* **auth:** Add workload X509 cert provider as a default cert provider ([#10479](https://github.com/googleapis/google-cloud-go/issues/10479)) ([c51ee6c](https://github.com/googleapis/google-cloud-go/commit/c51ee6cf65ce05b4d501083e49d468c75ac1ea63)) + + +### Bug Fixes + +* **auth/oauth2adapt:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b)) +* **auth:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b)) +* **auth:** Check len of slices, not non-nil ([#10483](https://github.com/googleapis/google-cloud-go/issues/10483)) ([0a966a1](https://github.com/googleapis/google-cloud-go/commit/0a966a183e5f0e811977216d736d875b7233e942)) + +## [0.6.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.6.0...auth/v0.6.1) (2024-07-01) + + +### Bug Fixes + +* **auth:** Support gRPC API keys ([#10460](https://github.com/googleapis/google-cloud-go/issues/10460)) ([daa6646](https://github.com/googleapis/google-cloud-go/commit/daa6646d2af5d7fb5b30489f4934c7db89868c7c)) +* **auth:** Update http and grpc transports to support token exchange over mTLS ([#10397](https://github.com/googleapis/google-cloud-go/issues/10397)) ([c6dfdcf](https://github.com/googleapis/google-cloud-go/commit/c6dfdcf893c3f971eba15026c12db0a960ae81f2)) + +## [0.6.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.5.2...auth/v0.6.0) (2024-06-25) + + +### Features + +* **auth:** Add non-blocking token refresh for compute MDS ([#10263](https://github.com/googleapis/google-cloud-go/issues/10263)) ([9ac350d](https://github.com/googleapis/google-cloud-go/commit/9ac350da11a49b8e2174d3fc5b1a5070fec78b4e)) + + +### Bug Fixes + +* **auth:** Return error if envvar detected file returns an error ([#10431](https://github.com/googleapis/google-cloud-go/issues/10431)) ([e52b9a7](https://github.com/googleapis/google-cloud-go/commit/e52b9a7c45468827f5d220ab00965191faeb9d05)) + +## [0.5.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.5.1...auth/v0.5.2) (2024-06-24) + + +### Bug Fixes + +* **auth:** Fetch initial token when CachedTokenProviderOptions.DisableAutoRefresh is true ([#10415](https://github.com/googleapis/google-cloud-go/issues/10415)) ([3266763](https://github.com/googleapis/google-cloud-go/commit/32667635ca2efad05cd8c087c004ca07d7406913)), refs [#10414](https://github.com/googleapis/google-cloud-go/issues/10414) + ## [0.5.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.5.0...auth/v0.5.1) (2024-05-31) diff --git a/vendor/cloud.google.com/go/auth/auth.go b/vendor/cloud.google.com/go/auth/auth.go index d579e482e896..bc37ea85fb51 100644 --- a/vendor/cloud.google.com/go/auth/auth.go +++ b/vendor/cloud.google.com/go/auth/auth.go @@ -12,6 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. +// Package auth provides utilities for managing Google Cloud credentials, +// including functionality for creating, caching, and refreshing OAuth2 tokens. +// It offers customizable options for different OAuth2 flows, such as 2-legged +// (2LO) and 3-legged (3LO) OAuth, along with support for PKCE and automatic +// token management. package auth import ( @@ -44,6 +49,21 @@ const ( universeDomainDefault = "googleapis.com" ) +// tokenState represents different states for a [Token]. +type tokenState int + +const ( + // fresh indicates that the [Token] is valid. It is not expired or close to + // expired, or the token has no expiry. + fresh tokenState = iota + // stale indicates that the [Token] is close to expired, and should be + // refreshed. The token can be used normally. + stale + // invalid indicates that the [Token] is expired or invalid. The token + // cannot be used for a normal operation. + invalid +) + var ( defaultGrantType = "urn:ietf:params:oauth:grant-type:jwt-bearer" defaultHeader = &jwt.Header{Algorithm: jwt.HeaderAlgRSA256, Type: jwt.HeaderType} @@ -81,13 +101,27 @@ type Token struct { // IsValid reports that a [Token] is non-nil, has a [Token.Value], and has not // expired. A token is considered expired if [Token.Expiry] has passed or will -// pass in the next 10 seconds. +// pass in the next 225 seconds. func (t *Token) IsValid() bool { return t.isValidWithEarlyExpiry(defaultExpiryDelta) } +// MetadataString is a convenience method for accessing string values in the +// token's metadata. Returns an empty string if the metadata is nil or the value +// for the given key cannot be cast to a string. +func (t *Token) MetadataString(k string) string { + if t.Metadata == nil { + return "" + } + s, ok := t.Metadata[k].(string) + if !ok { + return "" + } + return s +} + func (t *Token) isValidWithEarlyExpiry(earlyExpiry time.Duration) bool { - if t == nil || t.Value == "" { + if t.isEmpty() { return false } if t.Expiry.IsZero() { @@ -96,8 +130,14 @@ func (t *Token) isValidWithEarlyExpiry(earlyExpiry time.Duration) bool { return !t.Expiry.Round(0).Add(-earlyExpiry).Before(timeNow()) } +func (t *Token) isEmpty() bool { + return t == nil || t.Value == "" +} + // Credentials holds Google credentials, including -// [Application Default Credentials](https://developers.google.com/accounts/docs/application-default-credentials). +// [Application Default Credentials]. +// +// [Application Default Credentials]: https://developers.google.com/accounts/docs/application-default-credentials type Credentials struct { json []byte projectID CredentialsPropertyProvider @@ -206,11 +246,15 @@ func NewCredentials(opts *CredentialsOptions) *Credentials { // CachedTokenProvider. type CachedTokenProviderOptions struct { // DisableAutoRefresh makes the TokenProvider always return the same token, - // even if it is expired. + // even if it is expired. The default is false. Optional. DisableAutoRefresh bool // ExpireEarly configures the amount of time before a token expires, that it - // should be refreshed. If unset, the default value is 10 seconds. + // should be refreshed. If unset, the default value is 3 minutes and 45 + // seconds. Optional. ExpireEarly time.Duration + // DisableAsyncRefresh configures a synchronous workflow that refreshes + // stale tokens while blocking. The default is false. Optional. + DisableAsyncRefresh bool } func (ctpo *CachedTokenProviderOptions) autoRefresh() bool { @@ -221,40 +265,132 @@ func (ctpo *CachedTokenProviderOptions) autoRefresh() bool { } func (ctpo *CachedTokenProviderOptions) expireEarly() time.Duration { - if ctpo == nil { + if ctpo == nil || ctpo.ExpireEarly == 0 { return defaultExpiryDelta } return ctpo.ExpireEarly } +func (ctpo *CachedTokenProviderOptions) blockingRefresh() bool { + if ctpo == nil { + return false + } + return ctpo.DisableAsyncRefresh +} + // NewCachedTokenProvider wraps a [TokenProvider] to cache the tokens returned -// by the underlying provider. By default it will refresh tokens ten seconds -// before they expire, but this time can be configured with the optional -// options. +// by the underlying provider. By default it will refresh tokens asynchronously +// (non-blocking mode) within a window that starts 3 minutes and 45 seconds +// before they expire. The asynchronous (non-blocking) refresh can be changed to +// a synchronous (blocking) refresh using the +// CachedTokenProviderOptions.DisableAsyncRefresh option. The time-before-expiry +// duration can be configured using the CachedTokenProviderOptions.ExpireEarly +// option. func NewCachedTokenProvider(tp TokenProvider, opts *CachedTokenProviderOptions) TokenProvider { if ctp, ok := tp.(*cachedTokenProvider); ok { return ctp } return &cachedTokenProvider{ - tp: tp, - autoRefresh: opts.autoRefresh(), - expireEarly: opts.expireEarly(), + tp: tp, + autoRefresh: opts.autoRefresh(), + expireEarly: opts.expireEarly(), + blockingRefresh: opts.blockingRefresh(), } } type cachedTokenProvider struct { - tp TokenProvider - autoRefresh bool - expireEarly time.Duration + tp TokenProvider + autoRefresh bool + expireEarly time.Duration + blockingRefresh bool mu sync.Mutex cachedToken *Token + // isRefreshRunning ensures that the non-blocking refresh will only be + // attempted once, even if multiple callers enter the Token method. + isRefreshRunning bool + // isRefreshErr ensures that the non-blocking refresh will only be attempted + // once per refresh window if an error is encountered. + isRefreshErr bool } func (c *cachedTokenProvider) Token(ctx context.Context) (*Token, error) { + if c.blockingRefresh { + return c.tokenBlocking(ctx) + } + return c.tokenNonBlocking(ctx) +} + +func (c *cachedTokenProvider) tokenNonBlocking(ctx context.Context) (*Token, error) { + switch c.tokenState() { + case fresh: + c.mu.Lock() + defer c.mu.Unlock() + return c.cachedToken, nil + case stale: + c.tokenAsync(ctx) + // Return the stale token immediately to not block customer requests to Cloud services. + c.mu.Lock() + defer c.mu.Unlock() + return c.cachedToken, nil + default: // invalid + return c.tokenBlocking(ctx) + } +} + +// tokenState reports the token's validity. +func (c *cachedTokenProvider) tokenState() tokenState { + c.mu.Lock() + defer c.mu.Unlock() + t := c.cachedToken + if t == nil || t.Value == "" { + return invalid + } else if t.Expiry.IsZero() { + return fresh + } else if timeNow().After(t.Expiry.Round(0)) { + return invalid + } else if timeNow().After(t.Expiry.Round(0).Add(-c.expireEarly)) { + return stale + } + return fresh +} + +// tokenAsync uses a bool to ensure that only one non-blocking token refresh +// happens at a time, even if multiple callers have entered this function +// concurrently. This avoids creating an arbitrary number of concurrent +// goroutines. Retries should be attempted and managed within the Token method. +// If the refresh attempt fails, no further attempts are made until the refresh +// window expires and the token enters the invalid state, at which point the +// blocking call to Token should likely return the same error on the main goroutine. +func (c *cachedTokenProvider) tokenAsync(ctx context.Context) { + fn := func() { + c.mu.Lock() + c.isRefreshRunning = true + c.mu.Unlock() + t, err := c.tp.Token(ctx) + c.mu.Lock() + defer c.mu.Unlock() + c.isRefreshRunning = false + if err != nil { + // Discard errors from the non-blocking refresh, but prevent further + // attempts. + c.isRefreshErr = true + return + } + c.cachedToken = t + } + c.mu.Lock() + defer c.mu.Unlock() + if !c.isRefreshRunning && !c.isRefreshErr { + go fn() + } +} + +func (c *cachedTokenProvider) tokenBlocking(ctx context.Context) (*Token, error) { c.mu.Lock() defer c.mu.Unlock() - if c.cachedToken.IsValid() || !c.autoRefresh { + c.isRefreshErr = false + if c.cachedToken.IsValid() || (!c.autoRefresh && !c.cachedToken.isEmpty()) { return c.cachedToken, nil } t, err := c.tp.Token(ctx) @@ -364,7 +500,7 @@ func (o *Options2LO) client() *http.Client { if o.Client != nil { return o.Client } - return internal.CloneDefaultClient() + return internal.DefaultClient() } func (o *Options2LO) validate() error { @@ -423,12 +559,12 @@ func (tp tokenProvider2LO) Token(ctx context.Context) (*Token, error) { v := url.Values{} v.Set("grant_type", defaultGrantType) v.Set("assertion", payload) - resp, err := tp.Client.PostForm(tp.opts.TokenURL, v) + req, err := http.NewRequestWithContext(ctx, "POST", tp.opts.TokenURL, strings.NewReader(v.Encode())) if err != nil { - return nil, fmt.Errorf("auth: cannot fetch token: %w", err) + return nil, err } - defer resp.Body.Close() - body, err := internal.ReadAll(resp.Body) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + resp, body, err := internal.DoRequest(tp.Client, req) if err != nil { return nil, fmt.Errorf("auth: cannot fetch token: %w", err) } diff --git a/vendor/cloud.google.com/go/auth/credentials/compute.go b/vendor/cloud.google.com/go/auth/credentials/compute.go index f3ec8882424f..6f70fa353b00 100644 --- a/vendor/cloud.google.com/go/auth/credentials/compute.go +++ b/vendor/cloud.google.com/go/auth/credentials/compute.go @@ -37,9 +37,10 @@ var ( // computeTokenProvider creates a [cloud.google.com/go/auth.TokenProvider] that // uses the metadata service to retrieve tokens. -func computeTokenProvider(earlyExpiry time.Duration, scope ...string) auth.TokenProvider { - return auth.NewCachedTokenProvider(computeProvider{scopes: scope}, &auth.CachedTokenProviderOptions{ - ExpireEarly: earlyExpiry, +func computeTokenProvider(opts *DetectOptions) auth.TokenProvider { + return auth.NewCachedTokenProvider(computeProvider{scopes: opts.Scopes}, &auth.CachedTokenProviderOptions{ + ExpireEarly: opts.EarlyTokenRefresh, + DisableAsyncRefresh: opts.DisableAsyncRefresh, }) } diff --git a/vendor/cloud.google.com/go/auth/credentials/detect.go b/vendor/cloud.google.com/go/auth/credentials/detect.go index cb3f44f5873f..010afc37c8fe 100644 --- a/vendor/cloud.google.com/go/auth/credentials/detect.go +++ b/vendor/cloud.google.com/go/auth/credentials/detect.go @@ -37,6 +37,9 @@ const ( googleAuthURL = "https://accounts.google.com/o/oauth2/auth" googleTokenURL = "https://oauth2.googleapis.com/token" + // GoogleMTLSTokenURL is Google's default OAuth2.0 mTLS endpoint. + GoogleMTLSTokenURL = "https://oauth2.mtls.googleapis.com/token" + // Help on default credentials adcSetupURL = "https://cloud.google.com/docs/authentication/external/set-up-adc" ) @@ -73,16 +76,18 @@ func DetectDefault(opts *DetectOptions) (*auth.Credentials, error) { if err := opts.validate(); err != nil { return nil, err } - if opts.CredentialsJSON != nil { + if len(opts.CredentialsJSON) > 0 { return readCredentialsFileJSON(opts.CredentialsJSON, opts) } if opts.CredentialsFile != "" { return readCredentialsFile(opts.CredentialsFile, opts) } if filename := os.Getenv(credsfile.GoogleAppCredsEnvVar); filename != "" { - if creds, err := readCredentialsFile(filename, opts); err == nil { - return creds, err + creds, err := readCredentialsFile(filename, opts) + if err != nil { + return nil, err } + return creds, nil } fileName := credsfile.GetWellKnownFileName() @@ -92,9 +97,9 @@ func DetectDefault(opts *DetectOptions) (*auth.Credentials, error) { if OnGCE() { return auth.NewCredentials(&auth.CredentialsOptions{ - TokenProvider: computeTokenProvider(opts.EarlyTokenRefresh, opts.Scopes...), - ProjectIDProvider: auth.CredentialsPropertyFunc(func(context.Context) (string, error) { - return metadata.ProjectID() + TokenProvider: computeTokenProvider(opts), + ProjectIDProvider: auth.CredentialsPropertyFunc(func(ctx context.Context) (string, error) { + return metadata.ProjectIDWithContext(ctx) }), UniverseDomainProvider: &internal.ComputeUniverseDomainProvider{}, }), nil @@ -116,8 +121,13 @@ type DetectOptions struct { // Optional. Subject string // EarlyTokenRefresh configures how early before a token expires that it - // should be refreshed. + // should be refreshed. Once the token’s time until expiration has entered + // this refresh window the token is considered valid but stale. If unset, + // the default value is 3 minutes and 45 seconds. Optional. EarlyTokenRefresh time.Duration + // DisableAsyncRefresh configures a synchronous workflow that refreshes + // stale tokens while blocking. The default is false. Optional. + DisableAsyncRefresh bool // AuthHandlerOptions configures an authorization handler and other options // for 3LO flows. It is required, and only used, for client credential // flows. @@ -180,7 +190,7 @@ func (o *DetectOptions) client() *http.Client { if o.Client != nil { return o.Client } - return internal.CloneDefaultClient() + return internal.DefaultClient() } func readCredentialsFile(filename string, opts *DetectOptions) (*auth.Credentials, error) { diff --git a/vendor/cloud.google.com/go/auth/credentials/filetypes.go b/vendor/cloud.google.com/go/auth/credentials/filetypes.go index fe93557389d2..6591b181132f 100644 --- a/vendor/cloud.google.com/go/auth/credentials/filetypes.go +++ b/vendor/cloud.google.com/go/auth/credentials/filetypes.go @@ -33,7 +33,7 @@ func fileCredentials(b []byte, opts *DetectOptions) (*auth.Credentials, error) { return nil, err } - var projectID, quotaProjectID, universeDomain string + var projectID, universeDomain string var tp auth.TokenProvider switch fileType { case credsfile.ServiceAccountKey: @@ -56,7 +56,6 @@ func fileCredentials(b []byte, opts *DetectOptions) (*auth.Credentials, error) { if err != nil { return nil, err } - quotaProjectID = f.QuotaProjectID universeDomain = f.UniverseDomain case credsfile.ExternalAccountKey: f, err := credsfile.ParseExternalAccount(b) @@ -67,7 +66,6 @@ func fileCredentials(b []byte, opts *DetectOptions) (*auth.Credentials, error) { if err != nil { return nil, err } - quotaProjectID = f.QuotaProjectID universeDomain = resolveUniverseDomain(opts.UniverseDomain, f.UniverseDomain) case credsfile.ExternalAccountAuthorizedUserKey: f, err := credsfile.ParseExternalAccountAuthorizedUser(b) @@ -78,7 +76,6 @@ func fileCredentials(b []byte, opts *DetectOptions) (*auth.Credentials, error) { if err != nil { return nil, err } - quotaProjectID = f.QuotaProjectID universeDomain = f.UniverseDomain case credsfile.ImpersonatedServiceAccountKey: f, err := credsfile.ParseImpersonatedServiceAccount(b) @@ -108,9 +105,9 @@ func fileCredentials(b []byte, opts *DetectOptions) (*auth.Credentials, error) { TokenProvider: auth.NewCachedTokenProvider(tp, &auth.CachedTokenProviderOptions{ ExpireEarly: opts.EarlyTokenRefresh, }), - JSON: b, - ProjectIDProvider: internalauth.StaticCredentialsProperty(projectID), - QuotaProjectIDProvider: internalauth.StaticCredentialsProperty(quotaProjectID), + JSON: b, + ProjectIDProvider: internalauth.StaticCredentialsProperty(projectID), + // TODO(codyoss): only set quota project here if there was a user override UniverseDomainProvider: internalauth.StaticCredentialsProperty(universeDomain), }), nil } @@ -127,8 +124,14 @@ func resolveUniverseDomain(optsUniverseDomain, fileUniverseDomain string) string } func handleServiceAccount(f *credsfile.ServiceAccountFile, opts *DetectOptions) (auth.TokenProvider, error) { + ud := resolveUniverseDomain(opts.UniverseDomain, f.UniverseDomain) if opts.UseSelfSignedJWT { return configureSelfSignedJWT(f, opts) + } else if ud != "" && ud != internalauth.DefaultUniverseDomain { + // For non-GDU universe domains, token exchange is impossible and services + // must support self-signed JWTs. + opts.UseSelfSignedJWT = true + return configureSelfSignedJWT(f, opts) } opts2LO := &auth.Options2LO{ Email: f.ClientEmail, @@ -174,6 +177,7 @@ func handleExternalAccount(f *credsfile.ExternalAccountFile, opts *DetectOptions Scopes: opts.scopes(), WorkforcePoolUserProject: f.WorkforcePoolUserProject, Client: opts.client(), + IsDefaultClient: opts.Client == nil, } if f.ServiceAccountImpersonation != nil { externalOpts.ServiceAccountImpersonationLifetimeSeconds = f.ServiceAccountImpersonation.TokenLifetimeSeconds diff --git a/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/aws_provider.go b/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/aws_provider.go index d9e1dcddf64d..a34f6b06f846 100644 --- a/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/aws_provider.go +++ b/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/aws_provider.go @@ -122,7 +122,7 @@ func (sp *awsSubjectProvider) subjectToken(ctx context.Context) (string, error) // Generate the signed request to AWS STS GetCallerIdentity API. // Use the required regional endpoint. Otherwise, the request will fail. - req, err := http.NewRequest("POST", strings.Replace(sp.RegionalCredVerificationURL, "{region}", sp.region, 1), nil) + req, err := http.NewRequestWithContext(ctx, "POST", strings.Replace(sp.RegionalCredVerificationURL, "{region}", sp.region, 1), nil) if err != nil { return "", err } @@ -194,20 +194,14 @@ func (sp *awsSubjectProvider) getAWSSessionToken(ctx context.Context) (string, e } req.Header.Set(awsIMDSv2SessionTTLHeader, awsIMDSv2SessionTTL) - resp, err := sp.Client.Do(req) - if err != nil { - return "", err - } - defer resp.Body.Close() - - respBody, err := internal.ReadAll(resp.Body) + resp, body, err := internal.DoRequest(sp.Client, req) if err != nil { return "", err } if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("credentials: unable to retrieve AWS session token: %s", respBody) + return "", fmt.Errorf("credentials: unable to retrieve AWS session token: %s", body) } - return string(respBody), nil + return string(body), nil } func (sp *awsSubjectProvider) getRegion(ctx context.Context, headers map[string]string) (string, error) { @@ -233,29 +227,21 @@ func (sp *awsSubjectProvider) getRegion(ctx context.Context, headers map[string] for name, value := range headers { req.Header.Add(name, value) } - - resp, err := sp.Client.Do(req) + resp, body, err := internal.DoRequest(sp.Client, req) if err != nil { return "", err } - defer resp.Body.Close() - - respBody, err := internal.ReadAll(resp.Body) - if err != nil { - return "", err - } - if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("credentials: unable to retrieve AWS region - %s", respBody) + return "", fmt.Errorf("credentials: unable to retrieve AWS region - %s", body) } // This endpoint will return the region in format: us-east-2b. // Only the us-east-2 part should be used. - bodyLen := len(respBody) + bodyLen := len(body) if bodyLen == 0 { return "", nil } - return string(respBody[:bodyLen-1]), nil + return string(body[:bodyLen-1]), nil } func (sp *awsSubjectProvider) getSecurityCredentials(ctx context.Context, headers map[string]string) (result *AwsSecurityCredentials, err error) { @@ -299,22 +285,17 @@ func (sp *awsSubjectProvider) getMetadataSecurityCredentials(ctx context.Context for name, value := range headers { req.Header.Add(name, value) } - - resp, err := sp.Client.Do(req) - if err != nil { - return result, err - } - defer resp.Body.Close() - - respBody, err := internal.ReadAll(resp.Body) + resp, body, err := internal.DoRequest(sp.Client, req) if err != nil { return result, err } if resp.StatusCode != http.StatusOK { - return result, fmt.Errorf("credentials: unable to retrieve AWS security credentials - %s", respBody) + return result, fmt.Errorf("credentials: unable to retrieve AWS security credentials - %s", body) + } + if err := json.Unmarshal(body, &result); err != nil { + return nil, err } - err = json.Unmarshal(respBody, &result) - return result, err + return result, nil } func (sp *awsSubjectProvider) getMetadataRoleName(ctx context.Context, headers map[string]string) (string, error) { @@ -329,20 +310,14 @@ func (sp *awsSubjectProvider) getMetadataRoleName(ctx context.Context, headers m req.Header.Add(name, value) } - resp, err := sp.Client.Do(req) - if err != nil { - return "", err - } - defer resp.Body.Close() - - respBody, err := internal.ReadAll(resp.Body) + resp, body, err := internal.DoRequest(sp.Client, req) if err != nil { return "", err } if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("credentials: unable to retrieve AWS role name - %s", respBody) + return "", fmt.Errorf("credentials: unable to retrieve AWS role name - %s", body) } - return string(respBody), nil + return string(body), nil } // awsRequestSigner is a utility class to sign http requests using a AWS V4 signature. diff --git a/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/externalaccount.go b/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/externalaccount.go index b19c6edeae5a..112186a9e6ef 100644 --- a/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/externalaccount.go +++ b/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/externalaccount.go @@ -100,6 +100,10 @@ type Options struct { AwsSecurityCredentialsProvider AwsSecurityCredentialsProvider // Client for token request. Client *http.Client + // IsDefaultClient marks whether the client passed in is a default client that can be overriden. + // This is important for X509 credentials which should create a new client if the default was used + // but should respect a client explicitly passed in by the user. + IsDefaultClient bool } // SubjectTokenProvider can be used to supply a subject token to exchange for a @@ -181,6 +185,26 @@ func (o *Options) validate() error { return nil } +// client returns the http client that should be used for the token exchange. If a non-default client +// is provided, then the client configured in the options will always be returned. If a default client +// is provided and the options are configured for X509 credentials, a new client will be created. +func (o *Options) client() (*http.Client, error) { + // If a client was provided and no override certificate config location was provided, use the provided client. + if o.CredentialSource == nil || o.CredentialSource.Certificate == nil || (!o.IsDefaultClient && o.CredentialSource.Certificate.CertificateConfigLocation == "") { + return o.Client, nil + } + + // If a new client should be created, validate and use the certificate source to create a new mTLS client. + cert := o.CredentialSource.Certificate + if !cert.UseDefaultCertificateConfig && cert.CertificateConfigLocation == "" { + return nil, errors.New("credentials: \"certificate\" object must either specify a certificate_config_location or use_default_certificate_config should be true") + } + if cert.UseDefaultCertificateConfig && cert.CertificateConfigLocation != "" { + return nil, errors.New("credentials: \"certificate\" object cannot specify both a certificate_config_location and use_default_certificate_config=true") + } + return createX509Client(cert.CertificateConfigLocation) +} + // resolveTokenURL sets the default STS token endpoint with the configured // universe domain. func (o *Options) resolveTokenURL() { @@ -204,11 +228,18 @@ func NewTokenProvider(opts *Options) (auth.TokenProvider, error) { if err != nil { return nil, err } + + client, err := opts.client() + if err != nil { + return nil, err + } + tp := &tokenProvider{ - client: opts.Client, + client: client, opts: opts, stp: stp, } + if opts.ServiceAccountImpersonationURL == "" { return auth.NewCachedTokenProvider(tp, nil), nil } @@ -218,7 +249,7 @@ func NewTokenProvider(opts *Options) (auth.TokenProvider, error) { // needed for impersonation tp.opts.Scopes = []string{"https://www.googleapis.com/auth/cloud-platform"} imp, err := impersonate.NewTokenProvider(&impersonate.Options{ - Client: opts.Client, + Client: client, URL: opts.ServiceAccountImpersonationURL, Scopes: scopes, Tp: auth.NewCachedTokenProvider(tp, nil), @@ -353,6 +384,15 @@ func newSubjectTokenProvider(o *Options) (subjectTokenProvider, error) { execProvider.opts = o execProvider.env = runtimeEnvironment{} return execProvider, nil + } else if o.CredentialSource.Certificate != nil { + cert := o.CredentialSource.Certificate + if !cert.UseDefaultCertificateConfig && cert.CertificateConfigLocation == "" { + return nil, errors.New("credentials: \"certificate\" object must either specify a certificate_config_location or use_default_certificate_config should be true") + } + if cert.UseDefaultCertificateConfig && cert.CertificateConfigLocation != "" { + return nil, errors.New("credentials: \"certificate\" object cannot specify both a certificate_config_location and use_default_certificate_config=true") + } + return &x509Provider{}, nil } return nil, errors.New("credentials: unable to parse credential source") } diff --git a/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/url_provider.go b/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/url_provider.go index 22b8af1c11b8..0a020599e07f 100644 --- a/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/url_provider.go +++ b/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/url_provider.go @@ -30,6 +30,7 @@ const ( fileTypeJSON = "json" urlProviderType = "url" programmaticProviderType = "programmatic" + x509ProviderType = "x509" ) type urlSubjectProvider struct { @@ -48,27 +49,21 @@ func (sp *urlSubjectProvider) subjectToken(ctx context.Context) (string, error) for key, val := range sp.Headers { req.Header.Add(key, val) } - resp, err := sp.Client.Do(req) + resp, body, err := internal.DoRequest(sp.Client, req) if err != nil { return "", fmt.Errorf("credentials: invalid response when retrieving subject token: %w", err) } - defer resp.Body.Close() - - respBody, err := internal.ReadAll(resp.Body) - if err != nil { - return "", fmt.Errorf("credentials: invalid body in subject token URL query: %w", err) - } if c := resp.StatusCode; c < http.StatusOK || c >= http.StatusMultipleChoices { - return "", fmt.Errorf("credentials: status code %d: %s", c, respBody) + return "", fmt.Errorf("credentials: status code %d: %s", c, body) } if sp.Format == nil { - return string(respBody), nil + return string(body), nil } switch sp.Format.Type { case "json": jsonData := make(map[string]interface{}) - err = json.Unmarshal(respBody, &jsonData) + err = json.Unmarshal(body, &jsonData) if err != nil { return "", fmt.Errorf("credentials: failed to unmarshal subject token file: %w", err) } @@ -82,7 +77,7 @@ func (sp *urlSubjectProvider) subjectToken(ctx context.Context) (string, error) } return token, nil case fileTypeText: - return string(respBody), nil + return string(body), nil default: return "", errors.New("credentials: invalid credential_source file format type: " + sp.Format.Type) } diff --git a/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/x509_provider.go b/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/x509_provider.go new file mode 100644 index 000000000000..115df5881f12 --- /dev/null +++ b/vendor/cloud.google.com/go/auth/credentials/internal/externalaccount/x509_provider.go @@ -0,0 +1,63 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package externalaccount + +import ( + "context" + "crypto/tls" + "net/http" + "time" + + "cloud.google.com/go/auth/internal/transport/cert" +) + +// x509Provider implements the subjectTokenProvider type for +// x509 workload identity credentials. Because x509 credentials +// rely on an mTLS connection to represent the 3rd party identity +// rather than a subject token, this provider will always return +// an empty string when a subject token is requested by the external account +// token provider. +type x509Provider struct { +} + +func (xp *x509Provider) providerType() string { + return x509ProviderType +} + +func (xp *x509Provider) subjectToken(ctx context.Context) (string, error) { + return "", nil +} + +// createX509Client creates a new client that is configured with mTLS, using the +// certificate configuration specified in the credential source. +func createX509Client(certificateConfigLocation string) (*http.Client, error) { + certProvider, err := cert.NewWorkloadX509CertProvider(certificateConfigLocation) + if err != nil { + return nil, err + } + trans := http.DefaultTransport.(*http.Transport).Clone() + + trans.TLSClientConfig = &tls.Config{ + GetClientCertificate: certProvider, + } + + // Create a client with default settings plus the X509 workload cert and key. + client := &http.Client{ + Transport: trans, + Timeout: 30 * time.Second, + } + + return client, nil +} diff --git a/vendor/cloud.google.com/go/auth/credentials/internal/gdch/gdch.go b/vendor/cloud.google.com/go/auth/credentials/internal/gdch/gdch.go index 467edb9088e4..720045d3b072 100644 --- a/vendor/cloud.google.com/go/auth/credentials/internal/gdch/gdch.go +++ b/vendor/cloud.google.com/go/auth/credentials/internal/gdch/gdch.go @@ -25,6 +25,7 @@ import ( "net/http" "net/url" "os" + "strings" "time" "cloud.google.com/go/auth" @@ -129,12 +130,13 @@ func (g gdchProvider) Token(ctx context.Context) (*auth.Token, error) { v.Set("requested_token_type", requestTokenType) v.Set("subject_token", payload) v.Set("subject_token_type", subjectTokenType) - resp, err := g.client.PostForm(g.tokenURL, v) + + req, err := http.NewRequestWithContext(ctx, "POST", g.tokenURL, strings.NewReader(v.Encode())) if err != nil { - return nil, fmt.Errorf("credentials: cannot fetch token: %w", err) + return nil, err } - defer resp.Body.Close() - body, err := internal.ReadAll(resp.Body) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + resp, body, err := internal.DoRequest(g.client, req) if err != nil { return nil, fmt.Errorf("credentials: cannot fetch token: %w", err) } diff --git a/vendor/cloud.google.com/go/auth/credentials/internal/impersonate/impersonate.go b/vendor/cloud.google.com/go/auth/credentials/internal/impersonate/impersonate.go index 3ceab873b8e4..ed53afa519e7 100644 --- a/vendor/cloud.google.com/go/auth/credentials/internal/impersonate/impersonate.go +++ b/vendor/cloud.google.com/go/auth/credentials/internal/impersonate/impersonate.go @@ -109,15 +109,10 @@ func (o *Options) Token(ctx context.Context) (*auth.Token, error) { if err := setAuthHeader(ctx, o.Tp, req); err != nil { return nil, err } - resp, err := o.Client.Do(req) + resp, body, err := internal.DoRequest(o.Client, req) if err != nil { return nil, fmt.Errorf("credentials: unable to generate access token: %w", err) } - defer resp.Body.Close() - body, err := internal.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("credentials: unable to read body: %w", err) - } if c := resp.StatusCode; c < http.StatusOK || c >= http.StatusMultipleChoices { return nil, fmt.Errorf("credentials: status code %d: %s", c, body) } diff --git a/vendor/cloud.google.com/go/auth/credentials/internal/stsexchange/sts_exchange.go b/vendor/cloud.google.com/go/auth/credentials/internal/stsexchange/sts_exchange.go index f70e0aef48fe..768a9dafc13a 100644 --- a/vendor/cloud.google.com/go/auth/credentials/internal/stsexchange/sts_exchange.go +++ b/vendor/cloud.google.com/go/auth/credentials/internal/stsexchange/sts_exchange.go @@ -93,16 +93,10 @@ func doRequest(ctx context.Context, opts *Options, data url.Values) (*TokenRespo } req.Header.Set("Content-Length", strconv.Itoa(len(encodedData))) - resp, err := opts.Client.Do(req) + resp, body, err := internal.DoRequest(opts.Client, req) if err != nil { return nil, fmt.Errorf("credentials: invalid response from Secure Token Server: %w", err) } - defer resp.Body.Close() - - body, err := internal.ReadAll(resp.Body) - if err != nil { - return nil, err - } if c := resp.StatusCode; c < http.StatusOK || c > http.StatusMultipleChoices { return nil, fmt.Errorf("credentials: status code %d: %s", c, body) } diff --git a/vendor/cloud.google.com/go/auth/credentials/selfsignedjwt.go b/vendor/cloud.google.com/go/auth/credentials/selfsignedjwt.go index b62a8ae4d5d7..6ae29de6c278 100644 --- a/vendor/cloud.google.com/go/auth/credentials/selfsignedjwt.go +++ b/vendor/cloud.google.com/go/auth/credentials/selfsignedjwt.go @@ -17,6 +17,7 @@ package credentials import ( "context" "crypto/rsa" + "errors" "fmt" "strings" "time" @@ -35,6 +36,9 @@ var ( // configureSelfSignedJWT uses the private key in the service account to create // a JWT without making a network call. func configureSelfSignedJWT(f *credsfile.ServiceAccountFile, opts *DetectOptions) (auth.TokenProvider, error) { + if len(opts.scopes()) == 0 && opts.Audience == "" { + return nil, errors.New("credentials: both scopes and audience are empty") + } pk, err := internal.ParseKey([]byte(f.PrivateKey)) if err != nil { return nil, fmt.Errorf("credentials: could not parse key: %w", err) diff --git a/vendor/cloud.google.com/go/auth/httptransport/httptransport.go b/vendor/cloud.google.com/go/auth/httptransport/httptransport.go index ef09c1b75238..30fedf9562f9 100644 --- a/vendor/cloud.google.com/go/auth/httptransport/httptransport.go +++ b/vendor/cloud.google.com/go/auth/httptransport/httptransport.go @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +// Package httptransport provides functionality for managing HTTP client +// connections to Google Cloud services. package httptransport import ( @@ -116,6 +118,13 @@ func (o *Options) resolveDetectOptions() *detect.DetectOptions { if len(do.Scopes) == 0 && do.Audience == "" && io != nil { do.Audience = o.InternalOptions.DefaultAudience } + if o.ClientCertProvider != nil { + tlsConfig := &tls.Config{ + GetClientCertificate: o.ClientCertProvider, + } + do.Client = transport.DefaultHTTPClientWithTLS(tlsConfig) + do.TokenURL = detect.GoogleMTLSTokenURL + } return do } @@ -195,6 +204,8 @@ func NewClient(opts *Options) (*http.Client, error) { if baseRoundTripper == nil { baseRoundTripper = defaultBaseTransport(clientCertProvider, dialTLSContext) } + // Ensure the token exchange transport uses the same ClientCertProvider as the API transport. + opts.ClientCertProvider = clientCertProvider trans, err := newTransport(baseRoundTripper, opts) if err != nil { return nil, err diff --git a/vendor/cloud.google.com/go/auth/httptransport/transport.go b/vendor/cloud.google.com/go/auth/httptransport/transport.go index 94caeb00f0ab..274bb01254c9 100644 --- a/vendor/cloud.google.com/go/auth/httptransport/transport.go +++ b/vendor/cloud.google.com/go/auth/httptransport/transport.go @@ -31,7 +31,7 @@ import ( ) const ( - quotaProjectHeaderKey = "X-Goog-User-Project" + quotaProjectHeaderKey = "X-goog-user-project" ) func newTransport(base http.RoundTripper, opts *Options) (http.RoundTripper, error) { @@ -76,7 +76,10 @@ func newTransport(base http.RoundTripper, opts *Options) (http.RoundTripper, err if headers == nil { headers = make(map[string][]string, 1) } - headers.Set(quotaProjectHeaderKey, qp) + // Don't overwrite user specified quota + if v := headers.Get(quotaProjectHeaderKey); v == "" { + headers.Set(quotaProjectHeaderKey, qp) + } } creds.TokenProvider = auth.NewCachedTokenProvider(creds.TokenProvider, nil) trans = &authTransport{ @@ -94,7 +97,11 @@ func newTransport(base http.RoundTripper, opts *Options) (http.RoundTripper, err // http.DefaultTransport. // If TLSCertificate is available, set TLSClientConfig as well. func defaultBaseTransport(clientCertSource cert.Provider, dialTLSContext func(context.Context, string, string) (net.Conn, error)) http.RoundTripper { - trans := http.DefaultTransport.(*http.Transport).Clone() + defaultTransport, ok := http.DefaultTransport.(*http.Transport) + if !ok { + defaultTransport = transport.BaseTransport() + } + trans := defaultTransport.Clone() trans.MaxIdleConnsPerHost = 100 if clientCertSource != nil { @@ -193,17 +200,19 @@ func (t *authTransport) RoundTrip(req *http.Request) (*http.Response, error) { } }() } - credentialsUniverseDomain, err := t.creds.UniverseDomain(req.Context()) - if err != nil { - return nil, err - } - if err := transport.ValidateUniverseDomain(t.getClientUniverseDomain(), credentialsUniverseDomain); err != nil { - return nil, err - } token, err := t.creds.Token(req.Context()) if err != nil { return nil, err } + if token.MetadataString("auth.google.tokenSource") != "compute-metadata" { + credentialsUniverseDomain, err := t.creds.UniverseDomain(req.Context()) + if err != nil { + return nil, err + } + if err := transport.ValidateUniverseDomain(t.getClientUniverseDomain(), credentialsUniverseDomain); err != nil { + return nil, err + } + } req2 := req.Clone(req.Context()) SetAuthHeader(token, req2) reqBodyClosed = true diff --git a/vendor/cloud.google.com/go/auth/internal/credsfile/filetype.go b/vendor/cloud.google.com/go/auth/internal/credsfile/filetype.go index 69e30779f987..3be6e5bbb418 100644 --- a/vendor/cloud.google.com/go/auth/internal/credsfile/filetype.go +++ b/vendor/cloud.google.com/go/auth/internal/credsfile/filetype.go @@ -90,19 +90,20 @@ type ExternalAccountAuthorizedUserFile struct { // CredentialSource stores the information necessary to retrieve the credentials for the STS exchange. // -// One field amongst File, URL, and Executable should be filled, depending on the kind of credential in question. +// One field amongst File, URL, Certificate, and Executable should be filled, depending on the kind of credential in question. // The EnvironmentID should start with AWS if being used for an AWS credential. type CredentialSource struct { - File string `json:"file"` - URL string `json:"url"` - Headers map[string]string `json:"headers"` - Executable *ExecutableConfig `json:"executable,omitempty"` - EnvironmentID string `json:"environment_id"` - RegionURL string `json:"region_url"` - RegionalCredVerificationURL string `json:"regional_cred_verification_url"` - CredVerificationURL string `json:"cred_verification_url"` - IMDSv2SessionTokenURL string `json:"imdsv2_session_token_url"` - Format *Format `json:"format,omitempty"` + File string `json:"file"` + URL string `json:"url"` + Headers map[string]string `json:"headers"` + Executable *ExecutableConfig `json:"executable,omitempty"` + Certificate *CertificateConfig `json:"certificate"` + EnvironmentID string `json:"environment_id"` // TODO: Make type for this + RegionURL string `json:"region_url"` + RegionalCredVerificationURL string `json:"regional_cred_verification_url"` + CredVerificationURL string `json:"cred_verification_url"` + IMDSv2SessionTokenURL string `json:"imdsv2_session_token_url"` + Format *Format `json:"format,omitempty"` } // Format describes the format of a [CredentialSource]. @@ -121,6 +122,13 @@ type ExecutableConfig struct { OutputFile string `json:"output_file"` } +// CertificateConfig represents the options used to set up X509 based workload +// [CredentialSource] +type CertificateConfig struct { + UseDefaultCertificateConfig bool `json:"use_default_certificate_config"` + CertificateConfigLocation string `json:"certificate_config_location"` +} + // ServiceAccountImpersonationInfo has impersonation configuration. type ServiceAccountImpersonationInfo struct { TokenLifetimeSeconds int `json:"token_lifetime_seconds"` diff --git a/vendor/cloud.google.com/go/auth/internal/internal.go b/vendor/cloud.google.com/go/auth/internal/internal.go index 70534e809a4a..4308345eda33 100644 --- a/vendor/cloud.google.com/go/auth/internal/internal.go +++ b/vendor/cloud.google.com/go/auth/internal/internal.go @@ -46,10 +46,24 @@ const ( DefaultUniverseDomain = "googleapis.com" ) -// CloneDefaultClient returns a [http.Client] with some good defaults. -func CloneDefaultClient() *http.Client { +type clonableTransport interface { + Clone() *http.Transport +} + +// DefaultClient returns an [http.Client] with some defaults set. If +// the current [http.DefaultTransport] is a [clonableTransport], as +// is the case for an [*http.Transport], the clone will be used. +// Otherwise the [http.DefaultTransport] is used directly. +func DefaultClient() *http.Client { + if transport, ok := http.DefaultTransport.(clonableTransport); ok { + return &http.Client{ + Transport: transport.Clone(), + Timeout: 30 * time.Second, + } + } + return &http.Client{ - Transport: http.DefaultTransport.(*http.Transport).Clone(), + Transport: http.DefaultTransport, Timeout: 30 * time.Second, } } @@ -124,6 +138,21 @@ func GetProjectID(b []byte, override string) string { return v.Project } +// DoRequest executes the provided req with the client. It reads the response +// body, closes it, and returns it. +func DoRequest(client *http.Client, req *http.Request) (*http.Response, []byte, error) { + resp, err := client.Do(req) + if err != nil { + return nil, nil, err + } + defer resp.Body.Close() + body, err := ReadAll(io.LimitReader(resp.Body, maxBodySize)) + if err != nil { + return nil, nil, err + } + return resp, body, nil +} + // ReadAll consumes the whole reader and safely reads the content of its body // with some overflow protection. func ReadAll(r io.Reader) ([]byte, error) { @@ -166,9 +195,9 @@ func (c *ComputeUniverseDomainProvider) GetProperty(ctx context.Context) (string // httpGetMetadataUniverseDomain is a package var for unit test substitution. var httpGetMetadataUniverseDomain = func(ctx context.Context) (string, error) { - client := metadata.NewClient(&http.Client{Timeout: time.Second}) - // TODO(quartzmo): set ctx on request - return client.Get("universe/universe_domain") + ctx, cancel := context.WithTimeout(ctx, 1*time.Second) + defer cancel() + return metadata.GetWithContext(ctx, "universe/universe_domain") } func getMetadataUniverseDomain(ctx context.Context) (string, error) { diff --git a/vendor/cloud.google.com/go/auth/internal/transport/cba.go b/vendor/cloud.google.com/go/auth/internal/transport/cba.go index 6ef88311a249..26e037c1a374 100644 --- a/vendor/cloud.google.com/go/auth/internal/transport/cba.go +++ b/vendor/cloud.google.com/go/auth/internal/transport/cba.go @@ -17,7 +17,9 @@ package transport import ( "context" "crypto/tls" + "crypto/x509" "errors" + "log" "net" "net/http" "net/url" @@ -44,10 +46,12 @@ const ( googleAPIUseMTLSOld = "GOOGLE_API_USE_MTLS" universeDomainPlaceholder = "UNIVERSE_DOMAIN" + + mtlsMDSRoot = "/run/google-mds-mtls/root.crt" + mtlsMDSKey = "/run/google-mds-mtls/client.key" ) var ( - mdsMTLSAutoConfigSource mtlsConfigSource errUniverseNotSupportedMTLS = errors.New("mTLS is not supported in any universe other than googleapis.com") ) @@ -120,7 +124,20 @@ func GetGRPCTransportCredsAndEndpoint(opts *Options) (credentials.TransportCrede defaultTransportCreds := credentials.NewTLS(&tls.Config{ GetClientCertificate: config.clientCertSource, }) - if config.s2aAddress == "" { + + var s2aAddr string + var transportCredsForS2A credentials.TransportCredentials + + if config.mtlsS2AAddress != "" { + s2aAddr = config.mtlsS2AAddress + transportCredsForS2A, err = loadMTLSMDSTransportCreds(mtlsMDSRoot, mtlsMDSKey) + if err != nil { + log.Printf("Loading MTLS MDS credentials failed: %v", err) + return defaultTransportCreds, config.endpoint, nil + } + } else if config.s2aAddress != "" { + s2aAddr = config.s2aAddress + } else { return defaultTransportCreds, config.endpoint, nil } @@ -133,8 +150,9 @@ func GetGRPCTransportCredsAndEndpoint(opts *Options) (credentials.TransportCrede } s2aTransportCreds, err := s2a.NewClientCreds(&s2a.ClientOptions{ - S2AAddress: config.s2aAddress, - FallbackOpts: fallbackOpts, + S2AAddress: s2aAddr, + TransportCreds: transportCredsForS2A, + FallbackOpts: fallbackOpts, }) if err != nil { // Use default if we cannot initialize S2A client transport credentials. @@ -151,7 +169,19 @@ func GetHTTPTransportConfig(opts *Options) (cert.Provider, func(context.Context, return nil, nil, err } - if config.s2aAddress == "" { + var s2aAddr string + var transportCredsForS2A credentials.TransportCredentials + + if config.mtlsS2AAddress != "" { + s2aAddr = config.mtlsS2AAddress + transportCredsForS2A, err = loadMTLSMDSTransportCreds(mtlsMDSRoot, mtlsMDSKey) + if err != nil { + log.Printf("Loading MTLS MDS credentials failed: %v", err) + return config.clientCertSource, nil, nil + } + } else if config.s2aAddress != "" { + s2aAddr = config.s2aAddress + } else { return config.clientCertSource, nil, nil } @@ -169,14 +199,40 @@ func GetHTTPTransportConfig(opts *Options) (cert.Provider, func(context.Context, } dialTLSContextFunc := s2a.NewS2ADialTLSContextFunc(&s2a.ClientOptions{ - S2AAddress: config.s2aAddress, - FallbackOpts: fallbackOpts, + S2AAddress: s2aAddr, + TransportCreds: transportCredsForS2A, + FallbackOpts: fallbackOpts, }) return nil, dialTLSContextFunc, nil } +func loadMTLSMDSTransportCreds(mtlsMDSRootFile, mtlsMDSKeyFile string) (credentials.TransportCredentials, error) { + rootPEM, err := os.ReadFile(mtlsMDSRootFile) + if err != nil { + return nil, err + } + caCertPool := x509.NewCertPool() + ok := caCertPool.AppendCertsFromPEM(rootPEM) + if !ok { + return nil, errors.New("failed to load MTLS MDS root certificate") + } + // The mTLS MDS credentials are formatted as the concatenation of a PEM-encoded certificate chain + // followed by a PEM-encoded private key. For this reason, the concatenation is passed in to the + // tls.X509KeyPair function as both the certificate chain and private key arguments. + cert, err := tls.LoadX509KeyPair(mtlsMDSKeyFile, mtlsMDSKeyFile) + if err != nil { + return nil, err + } + tlsConfig := tls.Config{ + RootCAs: caCertPool, + Certificates: []tls.Certificate{cert}, + MinVersion: tls.VersionTLS13, + } + return credentials.NewTLS(&tlsConfig), nil +} + func getTransportConfig(opts *Options) (*transportConfig, error) { - clientCertSource, err := getClientCertificateSource(opts) + clientCertSource, err := GetClientCertificateProvider(opts) if err != nil { return nil, err } @@ -196,27 +252,27 @@ func getTransportConfig(opts *Options) (*transportConfig, error) { return nil, errUniverseNotSupportedMTLS } - s2aMTLSEndpoint := opts.DefaultMTLSEndpoint - s2aAddress := GetS2AAddress() - if s2aAddress == "" { + mtlsS2AAddress := GetMTLSS2AAddress() + if s2aAddress == "" && mtlsS2AAddress == "" { return &defaultTransportConfig, nil } return &transportConfig{ clientCertSource: clientCertSource, endpoint: endpoint, s2aAddress: s2aAddress, - s2aMTLSEndpoint: s2aMTLSEndpoint, + mtlsS2AAddress: mtlsS2AAddress, + s2aMTLSEndpoint: opts.DefaultMTLSEndpoint, }, nil } -// getClientCertificateSource returns a default client certificate source, if +// GetClientCertificateProvider returns a default client certificate source, if // not provided by the user. // // A nil default source can be returned if the source does not exist. Any exceptions // encountered while initializing the default source will be reported as client // error (ex. corrupt metadata file). -func getClientCertificateSource(opts *Options) (cert.Provider, error) { +func GetClientCertificateProvider(opts *Options) (cert.Provider, error) { if !isClientCertificateEnabled(opts) { return nil, nil } else if opts.ClientCertProvider != nil { @@ -241,8 +297,10 @@ type transportConfig struct { clientCertSource cert.Provider // The corresponding endpoint to use based on client certificate source. endpoint string - // The S2A address if it can be used, otherwise an empty string. + // The plaintext S2A address if it can be used, otherwise an empty string. s2aAddress string + // The MTLS S2A address if it can be used, otherwise an empty string. + mtlsS2AAddress string // The MTLS endpoint to use with S2A. s2aMTLSEndpoint string } diff --git a/vendor/cloud.google.com/go/auth/internal/transport/cert/default_cert.go b/vendor/cloud.google.com/go/auth/internal/transport/cert/default_cert.go index 96582ce7b6a2..5cedc50f1e84 100644 --- a/vendor/cloud.google.com/go/auth/internal/transport/cert/default_cert.go +++ b/vendor/cloud.google.com/go/auth/internal/transport/cert/default_cert.go @@ -50,11 +50,14 @@ var errSourceUnavailable = errors.New("certificate source is unavailable") // returned to indicate that a default certificate source is unavailable. func DefaultProvider() (Provider, error) { defaultCert.once.Do(func() { - defaultCert.provider, defaultCert.err = NewEnterpriseCertificateProxyProvider("") + defaultCert.provider, defaultCert.err = NewWorkloadX509CertProvider("") if errors.Is(defaultCert.err, errSourceUnavailable) { - defaultCert.provider, defaultCert.err = NewSecureConnectProvider("") + defaultCert.provider, defaultCert.err = NewEnterpriseCertificateProxyProvider("") if errors.Is(defaultCert.err, errSourceUnavailable) { - defaultCert.provider, defaultCert.err = nil, nil + defaultCert.provider, defaultCert.err = NewSecureConnectProvider("") + if errors.Is(defaultCert.err, errSourceUnavailable) { + defaultCert.provider, defaultCert.err = nil, nil + } } } }) diff --git a/vendor/cloud.google.com/go/auth/internal/transport/cert/secureconnect_cert.go b/vendor/cloud.google.com/go/auth/internal/transport/cert/secureconnect_cert.go index 3227aba280c8..738cb21618e7 100644 --- a/vendor/cloud.google.com/go/auth/internal/transport/cert/secureconnect_cert.go +++ b/vendor/cloud.google.com/go/auth/internal/transport/cert/secureconnect_cert.go @@ -62,11 +62,11 @@ func NewSecureConnectProvider(configFilePath string) (Provider, error) { file, err := os.ReadFile(configFilePath) if err != nil { - if errors.Is(err, os.ErrNotExist) { - // Config file missing means Secure Connect is not supported. - return nil, errSourceUnavailable - } - return nil, err + // Config file missing means Secure Connect is not supported. + // There are non-os.ErrNotExist errors that may be returned. + // (e.g. if the home directory is /dev/null, *nix systems will + // return ENOTDIR instead of ENOENT) + return nil, errSourceUnavailable } var metadata secureConnectMetadata diff --git a/vendor/cloud.google.com/go/auth/internal/transport/cert/workload_cert.go b/vendor/cloud.google.com/go/auth/internal/transport/cert/workload_cert.go index ea1e1febbc25..e8675bf824b5 100644 --- a/vendor/cloud.google.com/go/auth/internal/transport/cert/workload_cert.go +++ b/vendor/cloud.google.com/go/auth/internal/transport/cert/workload_cert.go @@ -99,7 +99,7 @@ func getCertAndKeyFiles(configFilePath string) (string, string, error) { } if config.CertConfigs.Workload == nil { - return "", "", errors.New("no Workload Identity Federation certificate information found in the certificate configuration file") + return "", "", errSourceUnavailable } certFile := config.CertConfigs.Workload.CertPath diff --git a/vendor/cloud.google.com/go/auth/internal/transport/s2a.go b/vendor/cloud.google.com/go/auth/internal/transport/s2a.go index 2ed532deb7a0..37894bfcd013 100644 --- a/vendor/cloud.google.com/go/auth/internal/transport/s2a.go +++ b/vendor/cloud.google.com/go/auth/internal/transport/s2a.go @@ -15,12 +15,13 @@ package transport import ( + "context" "encoding/json" + "fmt" "log" "os" "strconv" "sync" - "time" "cloud.google.com/go/auth/internal/transport/cert" "cloud.google.com/go/compute/metadata" @@ -31,41 +32,38 @@ const ( ) var ( - // The period an MTLS config can be reused before needing refresh. - configExpiry = time.Hour + mtlsConfiguration *mtlsConfig - // mdsMTLSAutoConfigSource is an instance of reuseMTLSConfigSource, with metadataMTLSAutoConfig as its config source. mtlsOnce sync.Once ) // GetS2AAddress returns the S2A address to be reached via plaintext connection. // Returns empty string if not set or invalid. func GetS2AAddress() string { - c, err := getMetadataMTLSAutoConfig().Config() - if err != nil { - return "" - } - if !c.Valid() { + getMetadataMTLSAutoConfig() + if !mtlsConfiguration.valid() { return "" } - return c.S2A.PlaintextAddress + return mtlsConfiguration.S2A.PlaintextAddress } -type mtlsConfigSource interface { - Config() (*mtlsConfig, error) +// GetMTLSS2AAddress returns the S2A address to be reached via MTLS connection. +// Returns empty string if not set or invalid. +func GetMTLSS2AAddress() string { + getMetadataMTLSAutoConfig() + if !mtlsConfiguration.valid() { + return "" + } + return mtlsConfiguration.S2A.MTLSAddress } // mtlsConfig contains the configuration for establishing MTLS connections with Google APIs. type mtlsConfig struct { - S2A *s2aAddresses `json:"s2a"` - Expiry time.Time + S2A *s2aAddresses `json:"s2a"` } -func (c *mtlsConfig) Valid() bool { - return c != nil && c.S2A != nil && !c.expired() -} -func (c *mtlsConfig) expired() bool { - return c.Expiry.Before(time.Now()) +func (c *mtlsConfig) valid() bool { + return c != nil && c.S2A != nil } // s2aAddresses contains the plaintext and/or MTLS S2A addresses. @@ -76,80 +74,36 @@ type s2aAddresses struct { MTLSAddress string `json:"mtls_address"` } -// getMetadataMTLSAutoConfig returns mdsMTLSAutoConfigSource, which is backed by config from MDS with auto-refresh. -func getMetadataMTLSAutoConfig() mtlsConfigSource { +func getMetadataMTLSAutoConfig() { + var err error mtlsOnce.Do(func() { - mdsMTLSAutoConfigSource = &reuseMTLSConfigSource{ - src: &metadataMTLSAutoConfig{}, + mtlsConfiguration, err = queryConfig() + if err != nil { + log.Printf("Getting MTLS config failed: %v", err) } }) - return mdsMTLSAutoConfigSource -} - -// reuseMTLSConfigSource caches a valid version of mtlsConfig, and uses `src` to refresh upon config expiry. -// It implements the mtlsConfigSource interface, so calling Config() on it returns an mtlsConfig. -type reuseMTLSConfigSource struct { - src mtlsConfigSource // src.Config() is called when config is expired - mu sync.Mutex // mutex guards config - config *mtlsConfig // cached config } -func (cs *reuseMTLSConfigSource) Config() (*mtlsConfig, error) { - cs.mu.Lock() - defer cs.mu.Unlock() - - if cs.config.Valid() { - return cs.config, nil - } - c, err := cs.src.Config() - if err != nil { - return nil, err - } - cs.config = c - return c, nil -} - -// metadataMTLSAutoConfig is an implementation of the interface mtlsConfigSource -// It has the logic to query MDS and return an mtlsConfig -type metadataMTLSAutoConfig struct{} - var httpGetMetadataMTLSConfig = func() (string, error) { - return metadata.Get(configEndpointSuffix) + return metadata.GetWithContext(context.Background(), configEndpointSuffix) } -func (cs *metadataMTLSAutoConfig) Config() (*mtlsConfig, error) { +func queryConfig() (*mtlsConfig, error) { resp, err := httpGetMetadataMTLSConfig() if err != nil { - log.Printf("querying MTLS config from MDS endpoint failed: %v", err) - return defaultMTLSConfig(), nil + return nil, fmt.Errorf("querying MTLS config from MDS endpoint failed: %w", err) } var config mtlsConfig err = json.Unmarshal([]byte(resp), &config) if err != nil { - log.Printf("unmarshalling MTLS config from MDS endpoint failed: %v", err) - return defaultMTLSConfig(), nil + return nil, fmt.Errorf("unmarshalling MTLS config from MDS endpoint failed: %w", err) } - if config.S2A == nil { - log.Printf("returned MTLS config from MDS endpoint is invalid: %v", config) - return defaultMTLSConfig(), nil + return nil, fmt.Errorf("returned MTLS config from MDS endpoint is invalid: %v", config) } - - // set new expiry - config.Expiry = time.Now().Add(configExpiry) return &config, nil } -func defaultMTLSConfig() *mtlsConfig { - return &mtlsConfig{ - S2A: &s2aAddresses{ - PlaintextAddress: "", - MTLSAddress: "", - }, - Expiry: time.Now().Add(configExpiry), - } -} - func shouldUseS2A(clientCertSource cert.Provider, opts *Options) bool { // If client cert is found, use that over S2A. if clientCertSource != nil { diff --git a/vendor/cloud.google.com/go/auth/internal/transport/transport.go b/vendor/cloud.google.com/go/auth/internal/transport/transport.go index b76386d3c0df..cc586ec5b1a5 100644 --- a/vendor/cloud.google.com/go/auth/internal/transport/transport.go +++ b/vendor/cloud.google.com/go/auth/internal/transport/transport.go @@ -17,7 +17,11 @@ package transport import ( + "crypto/tls" "fmt" + "net" + "net/http" + "time" "cloud.google.com/go/auth/credentials" ) @@ -49,11 +53,11 @@ func CloneDetectOptions(oldDo *credentials.DetectOptions) *credentials.DetectOpt } // Smartly size this memory and copy below. - if oldDo.CredentialsJSON != nil { + if len(oldDo.CredentialsJSON) > 0 { newDo.CredentialsJSON = make([]byte, len(oldDo.CredentialsJSON)) copy(newDo.CredentialsJSON, oldDo.CredentialsJSON) } - if oldDo.Scopes != nil { + if len(oldDo.Scopes) > 0 { newDo.Scopes = make([]string, len(oldDo.Scopes)) copy(newDo.Scopes, oldDo.Scopes) } @@ -74,3 +78,28 @@ func ValidateUniverseDomain(clientUniverseDomain, credentialsUniverseDomain stri } return nil } + +// DefaultHTTPClientWithTLS constructs an HTTPClient using the provided tlsConfig, to support mTLS. +func DefaultHTTPClientWithTLS(tlsConfig *tls.Config) *http.Client { + trans := BaseTransport() + trans.TLSClientConfig = tlsConfig + return &http.Client{Transport: trans} +} + +// BaseTransport returns a default [http.Transport] which can be used if +// [http.DefaultTransport] has been overwritten. +func BaseTransport() *http.Transport { + return &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + DualStack: true, + }).DialContext, + MaxIdleConns: 100, + MaxIdleConnsPerHost: 100, + IdleConnTimeout: 90 * time.Second, + TLSHandshakeTimeout: 10 * time.Second, + ExpectContinueTimeout: 1 * time.Second, + } +} diff --git a/vendor/cloud.google.com/go/auth/oauth2adapt/CHANGES.md b/vendor/cloud.google.com/go/auth/oauth2adapt/CHANGES.md index ff9747beda0b..7faf6e0c9856 100644 --- a/vendor/cloud.google.com/go/auth/oauth2adapt/CHANGES.md +++ b/vendor/cloud.google.com/go/auth/oauth2adapt/CHANGES.md @@ -1,5 +1,19 @@ # Changelog +## [0.2.4](https://github.com/googleapis/google-cloud-go/compare/auth/oauth2adapt/v0.2.3...auth/oauth2adapt/v0.2.4) (2024-08-08) + + +### Bug Fixes + +* **auth/oauth2adapt:** Update dependencies ([257c40b](https://github.com/googleapis/google-cloud-go/commit/257c40bd6d7e59730017cf32bda8823d7a232758)) + +## [0.2.3](https://github.com/googleapis/google-cloud-go/compare/auth/oauth2adapt/v0.2.2...auth/oauth2adapt/v0.2.3) (2024-07-10) + + +### Bug Fixes + +* **auth/oauth2adapt:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b)) + ## [0.2.2](https://github.com/googleapis/google-cloud-go/compare/auth/oauth2adapt/v0.2.1...auth/oauth2adapt/v0.2.2) (2024-04-23) diff --git a/vendor/cloud.google.com/go/auth/threelegged.go b/vendor/cloud.google.com/go/auth/threelegged.go index 1b8d83c4b4fe..97a57f4694b0 100644 --- a/vendor/cloud.google.com/go/auth/threelegged.go +++ b/vendor/cloud.google.com/go/auth/threelegged.go @@ -62,7 +62,8 @@ type Options3LO struct { // Optional. Client *http.Client // EarlyTokenExpiry is the time before the token expires that it should be - // refreshed. If not set the default value is 10 seconds. Optional. + // refreshed. If not set the default value is 3 minutes and 45 seconds. + // Optional. EarlyTokenExpiry time.Duration // AuthHandlerOpts provides a set of options for doing a @@ -127,7 +128,7 @@ func (o *Options3LO) client() *http.Client { if o.Client != nil { return o.Client } - return internal.CloneDefaultClient() + return internal.DefaultClient() } // authCodeURL returns a URL that points to a OAuth2 consent page. @@ -284,7 +285,7 @@ func fetchToken(ctx context.Context, o *Options3LO, v url.Values) (*Token, strin v.Set("client_secret", o.ClientSecret) } } - req, err := http.NewRequest("POST", o.TokenURL, strings.NewReader(v.Encode())) + req, err := http.NewRequestWithContext(ctx, "POST", o.TokenURL, strings.NewReader(v.Encode())) if err != nil { return nil, refreshToken, err } @@ -294,25 +295,19 @@ func fetchToken(ctx context.Context, o *Options3LO, v url.Values) (*Token, strin } // Make request - r, err := o.client().Do(req.WithContext(ctx)) + resp, body, err := internal.DoRequest(o.client(), req) if err != nil { return nil, refreshToken, err } - body, err := internal.ReadAll(r.Body) - r.Body.Close() - if err != nil { - return nil, refreshToken, fmt.Errorf("auth: cannot fetch token: %w", err) - } - - failureStatus := r.StatusCode < 200 || r.StatusCode > 299 + failureStatus := resp.StatusCode < 200 || resp.StatusCode > 299 tokError := &Error{ - Response: r, + Response: resp, Body: body, } var token *Token // errors ignored because of default switch on content - content, _, _ := mime.ParseMediaType(r.Header.Get("Content-Type")) + content, _, _ := mime.ParseMediaType(resp.Header.Get("Content-Type")) switch content { case "application/x-www-form-urlencoded", "text/plain": // some endpoints return a query string diff --git a/vendor/cloud.google.com/go/compute/metadata/CHANGES.md b/vendor/cloud.google.com/go/compute/metadata/CHANGES.md index 967e060747fc..bcfb5d816591 100644 --- a/vendor/cloud.google.com/go/compute/metadata/CHANGES.md +++ b/vendor/cloud.google.com/go/compute/metadata/CHANGES.md @@ -1,5 +1,45 @@ # Changes +## [0.6.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.5.2...compute/metadata/v0.6.0) (2024-12-13) + + +### Features + +* **compute/metadata:** Add debug logging ([#11078](https://github.com/googleapis/google-cloud-go/issues/11078)) ([a816814](https://github.com/googleapis/google-cloud-go/commit/a81681463906e4473570a2f426eb0dc2de64e53f)) + +## [0.5.2](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.5.1...compute/metadata/v0.5.2) (2024-09-20) + + +### Bug Fixes + +* **compute/metadata:** Close Response Body for failed request ([#10891](https://github.com/googleapis/google-cloud-go/issues/10891)) ([e91d45e](https://github.com/googleapis/google-cloud-go/commit/e91d45e4757a9e354114509ba9800085d9e0ff1f)) + +## [0.5.1](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.5.0...compute/metadata/v0.5.1) (2024-09-12) + + +### Bug Fixes + +* **compute/metadata:** Check error chain for retryable error ([#10840](https://github.com/googleapis/google-cloud-go/issues/10840)) ([2bdedef](https://github.com/googleapis/google-cloud-go/commit/2bdedeff621b223d63cebc4355fcf83bc68412cd)) + +## [0.5.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.4.0...compute/metadata/v0.5.0) (2024-07-10) + + +### Features + +* **compute/metadata:** Add sys check for windows OnGCE ([#10521](https://github.com/googleapis/google-cloud-go/issues/10521)) ([3b9a830](https://github.com/googleapis/google-cloud-go/commit/3b9a83063960d2a2ac20beb47cc15818a68bd302)) + +## [0.4.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.3.0...compute/metadata/v0.4.0) (2024-07-01) + + +### Features + +* **compute/metadata:** Add context for all functions/methods ([#10370](https://github.com/googleapis/google-cloud-go/issues/10370)) ([66b8efe](https://github.com/googleapis/google-cloud-go/commit/66b8efe7ad877e052b2987bb4475477e38c67bb3)) + + +### Documentation + +* **compute/metadata:** Update OnGCE description ([#10408](https://github.com/googleapis/google-cloud-go/issues/10408)) ([6a46dca](https://github.com/googleapis/google-cloud-go/commit/6a46dca4eae4f88ec6f88822e01e5bf8aeca787f)) + ## [0.3.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.2.3...compute/metadata/v0.3.0) (2024-04-15) diff --git a/vendor/cloud.google.com/go/compute/metadata/log.go b/vendor/cloud.google.com/go/compute/metadata/log.go new file mode 100644 index 000000000000..8ec673b88230 --- /dev/null +++ b/vendor/cloud.google.com/go/compute/metadata/log.go @@ -0,0 +1,149 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package metadata + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "log/slog" + "net/http" + "strings" +) + +// Code below this point is copied from github.com/googleapis/gax-go/v2/internallog +// to avoid the dependency. The compute/metadata module is used by too many +// non-client library modules that can't justify the dependency. + +// The handler returned if logging is not enabled. +type noOpHandler struct{} + +func (h noOpHandler) Enabled(_ context.Context, _ slog.Level) bool { + return false +} + +func (h noOpHandler) Handle(_ context.Context, _ slog.Record) error { + return nil +} + +func (h noOpHandler) WithAttrs(_ []slog.Attr) slog.Handler { + return h +} + +func (h noOpHandler) WithGroup(_ string) slog.Handler { + return h +} + +// httpRequest returns a lazily evaluated [slog.LogValuer] for a +// [http.Request] and the associated body. +func httpRequest(req *http.Request, body []byte) slog.LogValuer { + return &request{ + req: req, + payload: body, + } +} + +type request struct { + req *http.Request + payload []byte +} + +func (r *request) LogValue() slog.Value { + if r == nil || r.req == nil { + return slog.Value{} + } + var groupValueAttrs []slog.Attr + groupValueAttrs = append(groupValueAttrs, slog.String("method", r.req.Method)) + groupValueAttrs = append(groupValueAttrs, slog.String("url", r.req.URL.String())) + + var headerAttr []slog.Attr + for k, val := range r.req.Header { + headerAttr = append(headerAttr, slog.String(k, strings.Join(val, ","))) + } + if len(headerAttr) > 0 { + groupValueAttrs = append(groupValueAttrs, slog.Any("headers", headerAttr)) + } + + if len(r.payload) > 0 { + if attr, ok := processPayload(r.payload); ok { + groupValueAttrs = append(groupValueAttrs, attr) + } + } + return slog.GroupValue(groupValueAttrs...) +} + +// httpResponse returns a lazily evaluated [slog.LogValuer] for a +// [http.Response] and the associated body. +func httpResponse(resp *http.Response, body []byte) slog.LogValuer { + return &response{ + resp: resp, + payload: body, + } +} + +type response struct { + resp *http.Response + payload []byte +} + +func (r *response) LogValue() slog.Value { + if r == nil { + return slog.Value{} + } + var groupValueAttrs []slog.Attr + groupValueAttrs = append(groupValueAttrs, slog.String("status", fmt.Sprint(r.resp.StatusCode))) + + var headerAttr []slog.Attr + for k, val := range r.resp.Header { + headerAttr = append(headerAttr, slog.String(k, strings.Join(val, ","))) + } + if len(headerAttr) > 0 { + groupValueAttrs = append(groupValueAttrs, slog.Any("headers", headerAttr)) + } + + if len(r.payload) > 0 { + if attr, ok := processPayload(r.payload); ok { + groupValueAttrs = append(groupValueAttrs, attr) + } + } + return slog.GroupValue(groupValueAttrs...) +} + +func processPayload(payload []byte) (slog.Attr, bool) { + peekChar := payload[0] + if peekChar == '{' { + // JSON object + var m map[string]any + if err := json.Unmarshal(payload, &m); err == nil { + return slog.Any("payload", m), true + } + } else if peekChar == '[' { + // JSON array + var m []any + if err := json.Unmarshal(payload, &m); err == nil { + return slog.Any("payload", m), true + } + } else { + // Everything else + buf := &bytes.Buffer{} + if err := json.Compact(buf, payload); err != nil { + // Write raw payload incase of error + buf.Write(payload) + } + return slog.String("payload", buf.String()), true + } + return slog.Attr{}, false +} diff --git a/vendor/cloud.google.com/go/compute/metadata/metadata.go b/vendor/cloud.google.com/go/compute/metadata/metadata.go index f67e3c7eeae0..4c18a383a439 100644 --- a/vendor/cloud.google.com/go/compute/metadata/metadata.go +++ b/vendor/cloud.google.com/go/compute/metadata/metadata.go @@ -24,11 +24,11 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net" "net/http" "net/url" "os" - "runtime" "strings" "sync" "time" @@ -61,7 +61,10 @@ var ( instID = &cachedValue{k: "instance/id", trim: true} ) -var defaultClient = &Client{hc: newDefaultHTTPClient()} +var defaultClient = &Client{ + hc: newDefaultHTTPClient(), + logger: slog.New(noOpHandler{}), +} func newDefaultHTTPClient() *http.Client { return &http.Client{ @@ -88,16 +91,16 @@ func (suffix NotDefinedError) Error() string { return fmt.Sprintf("metadata: GCE metadata %q not defined", string(suffix)) } -func (c *cachedValue) get(cl *Client) (v string, err error) { +func (c *cachedValue) get(ctx context.Context, cl *Client) (v string, err error) { defer c.mu.Unlock() c.mu.Lock() if c.v != "" { return c.v, nil } if c.trim { - v, err = cl.getTrimmed(context.Background(), c.k) + v, err = cl.getTrimmed(ctx, c.k) } else { - v, err = cl.GetWithContext(context.Background(), c.k) + v, err = cl.GetWithContext(ctx, c.k) } if err == nil { c.v = v @@ -110,7 +113,9 @@ var ( onGCE bool ) -// OnGCE reports whether this process is running on Google Compute Engine. +// OnGCE reports whether this process is running on Google Compute Platforms. +// NOTE: True returned from `OnGCE` does not guarantee that the metadata server +// is accessible from this process and have all the metadata defined. func OnGCE() bool { onGCEOnce.Do(initOnGCE) return onGCE @@ -188,21 +193,9 @@ func testOnGCE() bool { return <-resc } -// systemInfoSuggestsGCE reports whether the local system (without -// doing network requests) suggests that we're running on GCE. If this -// returns true, testOnGCE tries a bit harder to reach its metadata -// server. -func systemInfoSuggestsGCE() bool { - if runtime.GOOS != "linux" { - // We don't have any non-Linux clues available, at least yet. - return false - } - slurp, _ := os.ReadFile("/sys/class/dmi/id/product_name") - name := strings.TrimSpace(string(slurp)) - return name == "Google" || name == "Google Compute Engine" -} - // Subscribe calls Client.SubscribeWithContext on the default client. +// +// Deprecated: Please use the context aware variant [SubscribeWithContext]. func Subscribe(suffix string, fn func(v string, ok bool) error) error { return defaultClient.SubscribeWithContext(context.Background(), suffix, func(ctx context.Context, v string, ok bool) error { return fn(v, ok) }) } @@ -225,55 +218,188 @@ func GetWithContext(ctx context.Context, suffix string) (string, error) { } // ProjectID returns the current instance's project ID string. -func ProjectID() (string, error) { return defaultClient.ProjectID() } +// +// Deprecated: Please use the context aware variant [ProjectIDWithContext]. +func ProjectID() (string, error) { + return defaultClient.ProjectIDWithContext(context.Background()) +} + +// ProjectIDWithContext returns the current instance's project ID string. +func ProjectIDWithContext(ctx context.Context) (string, error) { + return defaultClient.ProjectIDWithContext(ctx) +} // NumericProjectID returns the current instance's numeric project ID. -func NumericProjectID() (string, error) { return defaultClient.NumericProjectID() } +// +// Deprecated: Please use the context aware variant [NumericProjectIDWithContext]. +func NumericProjectID() (string, error) { + return defaultClient.NumericProjectIDWithContext(context.Background()) +} + +// NumericProjectIDWithContext returns the current instance's numeric project ID. +func NumericProjectIDWithContext(ctx context.Context) (string, error) { + return defaultClient.NumericProjectIDWithContext(ctx) +} // InternalIP returns the instance's primary internal IP address. -func InternalIP() (string, error) { return defaultClient.InternalIP() } +// +// Deprecated: Please use the context aware variant [InternalIPWithContext]. +func InternalIP() (string, error) { + return defaultClient.InternalIPWithContext(context.Background()) +} + +// InternalIPWithContext returns the instance's primary internal IP address. +func InternalIPWithContext(ctx context.Context) (string, error) { + return defaultClient.InternalIPWithContext(ctx) +} // ExternalIP returns the instance's primary external (public) IP address. -func ExternalIP() (string, error) { return defaultClient.ExternalIP() } +// +// Deprecated: Please use the context aware variant [ExternalIPWithContext]. +func ExternalIP() (string, error) { + return defaultClient.ExternalIPWithContext(context.Background()) +} -// Email calls Client.Email on the default client. -func Email(serviceAccount string) (string, error) { return defaultClient.Email(serviceAccount) } +// ExternalIPWithContext returns the instance's primary external (public) IP address. +func ExternalIPWithContext(ctx context.Context) (string, error) { + return defaultClient.ExternalIPWithContext(ctx) +} + +// Email calls Client.EmailWithContext on the default client. +// +// Deprecated: Please use the context aware variant [EmailWithContext]. +func Email(serviceAccount string) (string, error) { + return defaultClient.EmailWithContext(context.Background(), serviceAccount) +} + +// EmailWithContext calls Client.EmailWithContext on the default client. +func EmailWithContext(ctx context.Context, serviceAccount string) (string, error) { + return defaultClient.EmailWithContext(ctx, serviceAccount) +} // Hostname returns the instance's hostname. This will be of the form // ".c..internal". -func Hostname() (string, error) { return defaultClient.Hostname() } +// +// Deprecated: Please use the context aware variant [HostnameWithContext]. +func Hostname() (string, error) { + return defaultClient.HostnameWithContext(context.Background()) +} + +// HostnameWithContext returns the instance's hostname. This will be of the form +// ".c..internal". +func HostnameWithContext(ctx context.Context) (string, error) { + return defaultClient.HostnameWithContext(ctx) +} // InstanceTags returns the list of user-defined instance tags, // assigned when initially creating a GCE instance. -func InstanceTags() ([]string, error) { return defaultClient.InstanceTags() } +// +// Deprecated: Please use the context aware variant [InstanceTagsWithContext]. +func InstanceTags() ([]string, error) { + return defaultClient.InstanceTagsWithContext(context.Background()) +} + +// InstanceTagsWithContext returns the list of user-defined instance tags, +// assigned when initially creating a GCE instance. +func InstanceTagsWithContext(ctx context.Context) ([]string, error) { + return defaultClient.InstanceTagsWithContext(ctx) +} // InstanceID returns the current VM's numeric instance ID. -func InstanceID() (string, error) { return defaultClient.InstanceID() } +// +// Deprecated: Please use the context aware variant [InstanceIDWithContext]. +func InstanceID() (string, error) { + return defaultClient.InstanceIDWithContext(context.Background()) +} + +// InstanceIDWithContext returns the current VM's numeric instance ID. +func InstanceIDWithContext(ctx context.Context) (string, error) { + return defaultClient.InstanceIDWithContext(ctx) +} // InstanceName returns the current VM's instance ID string. -func InstanceName() (string, error) { return defaultClient.InstanceName() } +// +// Deprecated: Please use the context aware variant [InstanceNameWithContext]. +func InstanceName() (string, error) { + return defaultClient.InstanceNameWithContext(context.Background()) +} + +// InstanceNameWithContext returns the current VM's instance ID string. +func InstanceNameWithContext(ctx context.Context) (string, error) { + return defaultClient.InstanceNameWithContext(ctx) +} // Zone returns the current VM's zone, such as "us-central1-b". -func Zone() (string, error) { return defaultClient.Zone() } +// +// Deprecated: Please use the context aware variant [ZoneWithContext]. +func Zone() (string, error) { + return defaultClient.ZoneWithContext(context.Background()) +} -// InstanceAttributes calls Client.InstanceAttributes on the default client. -func InstanceAttributes() ([]string, error) { return defaultClient.InstanceAttributes() } +// ZoneWithContext returns the current VM's zone, such as "us-central1-b". +func ZoneWithContext(ctx context.Context) (string, error) { + return defaultClient.ZoneWithContext(ctx) +} -// ProjectAttributes calls Client.ProjectAttributes on the default client. -func ProjectAttributes() ([]string, error) { return defaultClient.ProjectAttributes() } +// InstanceAttributes calls Client.InstanceAttributesWithContext on the default client. +// +// Deprecated: Please use the context aware variant [InstanceAttributesWithContext. +func InstanceAttributes() ([]string, error) { + return defaultClient.InstanceAttributesWithContext(context.Background()) +} -// InstanceAttributeValue calls Client.InstanceAttributeValue on the default client. +// InstanceAttributesWithContext calls Client.ProjectAttributesWithContext on the default client. +func InstanceAttributesWithContext(ctx context.Context) ([]string, error) { + return defaultClient.InstanceAttributesWithContext(ctx) +} + +// ProjectAttributes calls Client.ProjectAttributesWithContext on the default client. +// +// Deprecated: Please use the context aware variant [ProjectAttributesWithContext]. +func ProjectAttributes() ([]string, error) { + return defaultClient.ProjectAttributesWithContext(context.Background()) +} + +// ProjectAttributesWithContext calls Client.ProjectAttributesWithContext on the default client. +func ProjectAttributesWithContext(ctx context.Context) ([]string, error) { + return defaultClient.ProjectAttributesWithContext(ctx) +} + +// InstanceAttributeValue calls Client.InstanceAttributeValueWithContext on the default client. +// +// Deprecated: Please use the context aware variant [InstanceAttributeValueWithContext]. func InstanceAttributeValue(attr string) (string, error) { - return defaultClient.InstanceAttributeValue(attr) + return defaultClient.InstanceAttributeValueWithContext(context.Background(), attr) +} + +// InstanceAttributeValueWithContext calls Client.InstanceAttributeValueWithContext on the default client. +func InstanceAttributeValueWithContext(ctx context.Context, attr string) (string, error) { + return defaultClient.InstanceAttributeValueWithContext(ctx, attr) } -// ProjectAttributeValue calls Client.ProjectAttributeValue on the default client. +// ProjectAttributeValue calls Client.ProjectAttributeValueWithContext on the default client. +// +// Deprecated: Please use the context aware variant [ProjectAttributeValueWithContext]. func ProjectAttributeValue(attr string) (string, error) { - return defaultClient.ProjectAttributeValue(attr) + return defaultClient.ProjectAttributeValueWithContext(context.Background(), attr) +} + +// ProjectAttributeValueWithContext calls Client.ProjectAttributeValueWithContext on the default client. +func ProjectAttributeValueWithContext(ctx context.Context, attr string) (string, error) { + return defaultClient.ProjectAttributeValueWithContext(ctx, attr) +} + +// Scopes calls Client.ScopesWithContext on the default client. +// +// Deprecated: Please use the context aware variant [ScopesWithContext]. +func Scopes(serviceAccount string) ([]string, error) { + return defaultClient.ScopesWithContext(context.Background(), serviceAccount) } -// Scopes calls Client.Scopes on the default client. -func Scopes(serviceAccount string) ([]string, error) { return defaultClient.Scopes(serviceAccount) } +// ScopesWithContext calls Client.ScopesWithContext on the default client. +func ScopesWithContext(ctx context.Context, serviceAccount string) ([]string, error) { + return defaultClient.ScopesWithContext(ctx, serviceAccount) +} func strsContains(ss []string, s string) bool { for _, v := range ss { @@ -286,18 +412,42 @@ func strsContains(ss []string, s string) bool { // A Client provides metadata. type Client struct { - hc *http.Client + hc *http.Client + logger *slog.Logger +} + +// Options for configuring a [Client]. +type Options struct { + // Client is the HTTP client used to make requests. Optional. + Client *http.Client + // Logger is used to log information about HTTP request and responses. + // If not provided, nothing will be logged. Optional. + Logger *slog.Logger } // NewClient returns a Client that can be used to fetch metadata. // Returns the client that uses the specified http.Client for HTTP requests. // If nil is specified, returns the default client. func NewClient(c *http.Client) *Client { - if c == nil { + return NewWithOptions(&Options{ + Client: c, + }) +} + +// NewWithOptions returns a Client that is configured with the provided Options. +func NewWithOptions(opts *Options) *Client { + if opts == nil { return defaultClient } - - return &Client{hc: c} + client := opts.Client + if client == nil { + client = newDefaultHTTPClient() + } + logger := opts.Logger + if logger == nil { + logger = slog.New(noOpHandler{}) + } + return &Client{hc: client, logger: logger} } // getETag returns a value from the metadata service as well as the associated ETag. @@ -327,14 +477,26 @@ func (c *Client) getETag(ctx context.Context, suffix string) (value, etag string req.Header.Set("User-Agent", userAgent) var res *http.Response var reqErr error + var body []byte retryer := newRetryer() for { + c.logger.DebugContext(ctx, "metadata request", "request", httpRequest(req, nil)) res, reqErr = c.hc.Do(req) var code int if res != nil { code = res.StatusCode + body, err = io.ReadAll(res.Body) + if err != nil { + res.Body.Close() + return "", "", err + } + c.logger.DebugContext(ctx, "metadata response", "response", httpResponse(res, body)) + res.Body.Close() } if delay, shouldRetry := retryer.Retry(code, reqErr); shouldRetry { + if res != nil && res.Body != nil { + res.Body.Close() + } if err := sleep(ctx, delay); err != nil { return "", "", err } @@ -345,18 +507,13 @@ func (c *Client) getETag(ctx context.Context, suffix string) (value, etag string if reqErr != nil { return "", "", reqErr } - defer res.Body.Close() if res.StatusCode == http.StatusNotFound { return "", "", NotDefinedError(suffix) } - all, err := io.ReadAll(res.Body) - if err != nil { - return "", "", err - } if res.StatusCode != 200 { - return "", "", &Error{Code: res.StatusCode, Message: string(all)} + return "", "", &Error{Code: res.StatusCode, Message: string(body)} } - return string(all), res.Header.Get("Etag"), nil + return string(body), res.Header.Get("Etag"), nil } // Get returns a value from the metadata service. @@ -381,6 +538,10 @@ func (c *Client) Get(suffix string) (string, error) { // // If the requested metadata is not defined, the returned error will // be of type NotDefinedError. +// +// NOTE: Without an extra deadline in the context this call can take in the +// worst case, with internal backoff retries, up to 15 seconds (e.g. when server +// is responding slowly). Pass context with additional timeouts when needed. func (c *Client) GetWithContext(ctx context.Context, suffix string) (string, error) { val, _, err := c.getETag(ctx, suffix) return val, err @@ -392,8 +553,8 @@ func (c *Client) getTrimmed(ctx context.Context, suffix string) (s string, err e return } -func (c *Client) lines(suffix string) ([]string, error) { - j, err := c.GetWithContext(context.Background(), suffix) +func (c *Client) lines(ctx context.Context, suffix string) ([]string, error) { + j, err := c.GetWithContext(ctx, suffix) if err != nil { return nil, err } @@ -405,45 +566,104 @@ func (c *Client) lines(suffix string) ([]string, error) { } // ProjectID returns the current instance's project ID string. -func (c *Client) ProjectID() (string, error) { return projID.get(c) } +// +// Deprecated: Please use the context aware variant [Client.ProjectIDWithContext]. +func (c *Client) ProjectID() (string, error) { return c.ProjectIDWithContext(context.Background()) } + +// ProjectIDWithContext returns the current instance's project ID string. +func (c *Client) ProjectIDWithContext(ctx context.Context) (string, error) { return projID.get(ctx, c) } // NumericProjectID returns the current instance's numeric project ID. -func (c *Client) NumericProjectID() (string, error) { return projNum.get(c) } +// +// Deprecated: Please use the context aware variant [Client.NumericProjectIDWithContext]. +func (c *Client) NumericProjectID() (string, error) { + return c.NumericProjectIDWithContext(context.Background()) +} + +// NumericProjectIDWithContext returns the current instance's numeric project ID. +func (c *Client) NumericProjectIDWithContext(ctx context.Context) (string, error) { + return projNum.get(ctx, c) +} // InstanceID returns the current VM's numeric instance ID. -func (c *Client) InstanceID() (string, error) { return instID.get(c) } +// +// Deprecated: Please use the context aware variant [Client.InstanceIDWithContext]. +func (c *Client) InstanceID() (string, error) { + return c.InstanceIDWithContext(context.Background()) +} + +// InstanceIDWithContext returns the current VM's numeric instance ID. +func (c *Client) InstanceIDWithContext(ctx context.Context) (string, error) { + return instID.get(ctx, c) +} // InternalIP returns the instance's primary internal IP address. +// +// Deprecated: Please use the context aware variant [Client.InternalIPWithContext]. func (c *Client) InternalIP() (string, error) { - return c.getTrimmed(context.Background(), "instance/network-interfaces/0/ip") + return c.InternalIPWithContext(context.Background()) +} + +// InternalIPWithContext returns the instance's primary internal IP address. +func (c *Client) InternalIPWithContext(ctx context.Context) (string, error) { + return c.getTrimmed(ctx, "instance/network-interfaces/0/ip") } // Email returns the email address associated with the service account. -// The account may be empty or the string "default" to use the instance's -// main account. +// +// Deprecated: Please use the context aware variant [Client.EmailWithContext]. func (c *Client) Email(serviceAccount string) (string, error) { + return c.EmailWithContext(context.Background(), serviceAccount) +} + +// EmailWithContext returns the email address associated with the service account. +// The serviceAccount parameter default value (empty string or "default" value) +// will use the instance's main account. +func (c *Client) EmailWithContext(ctx context.Context, serviceAccount string) (string, error) { if serviceAccount == "" { serviceAccount = "default" } - return c.getTrimmed(context.Background(), "instance/service-accounts/"+serviceAccount+"/email") + return c.getTrimmed(ctx, "instance/service-accounts/"+serviceAccount+"/email") } // ExternalIP returns the instance's primary external (public) IP address. +// +// Deprecated: Please use the context aware variant [Client.ExternalIPWithContext]. func (c *Client) ExternalIP() (string, error) { - return c.getTrimmed(context.Background(), "instance/network-interfaces/0/access-configs/0/external-ip") + return c.ExternalIPWithContext(context.Background()) +} + +// ExternalIPWithContext returns the instance's primary external (public) IP address. +func (c *Client) ExternalIPWithContext(ctx context.Context) (string, error) { + return c.getTrimmed(ctx, "instance/network-interfaces/0/access-configs/0/external-ip") } // Hostname returns the instance's hostname. This will be of the form // ".c..internal". +// +// Deprecated: Please use the context aware variant [Client.HostnameWithContext]. func (c *Client) Hostname() (string, error) { - return c.getTrimmed(context.Background(), "instance/hostname") + return c.HostnameWithContext(context.Background()) } -// InstanceTags returns the list of user-defined instance tags, -// assigned when initially creating a GCE instance. +// HostnameWithContext returns the instance's hostname. This will be of the form +// ".c..internal". +func (c *Client) HostnameWithContext(ctx context.Context) (string, error) { + return c.getTrimmed(ctx, "instance/hostname") +} + +// InstanceTags returns the list of user-defined instance tags. +// +// Deprecated: Please use the context aware variant [Client.InstanceTagsWithContext]. func (c *Client) InstanceTags() ([]string, error) { + return c.InstanceTagsWithContext(context.Background()) +} + +// InstanceTagsWithContext returns the list of user-defined instance tags, +// assigned when initially creating a GCE instance. +func (c *Client) InstanceTagsWithContext(ctx context.Context) ([]string, error) { var s []string - j, err := c.GetWithContext(context.Background(), "instance/tags") + j, err := c.GetWithContext(ctx, "instance/tags") if err != nil { return nil, err } @@ -454,13 +674,27 @@ func (c *Client) InstanceTags() ([]string, error) { } // InstanceName returns the current VM's instance ID string. +// +// Deprecated: Please use the context aware variant [Client.InstanceNameWithContext]. func (c *Client) InstanceName() (string, error) { - return c.getTrimmed(context.Background(), "instance/name") + return c.InstanceNameWithContext(context.Background()) +} + +// InstanceNameWithContext returns the current VM's instance ID string. +func (c *Client) InstanceNameWithContext(ctx context.Context) (string, error) { + return c.getTrimmed(ctx, "instance/name") } // Zone returns the current VM's zone, such as "us-central1-b". +// +// Deprecated: Please use the context aware variant [Client.ZoneWithContext]. func (c *Client) Zone() (string, error) { - zone, err := c.getTrimmed(context.Background(), "instance/zone") + return c.ZoneWithContext(context.Background()) +} + +// ZoneWithContext returns the current VM's zone, such as "us-central1-b". +func (c *Client) ZoneWithContext(ctx context.Context) (string, error) { + zone, err := c.getTrimmed(ctx, "instance/zone") // zone is of the form "projects//zones/". if err != nil { return "", err @@ -471,12 +705,34 @@ func (c *Client) Zone() (string, error) { // InstanceAttributes returns the list of user-defined attributes, // assigned when initially creating a GCE VM instance. The value of an // attribute can be obtained with InstanceAttributeValue. -func (c *Client) InstanceAttributes() ([]string, error) { return c.lines("instance/attributes/") } +// +// Deprecated: Please use the context aware variant [Client.InstanceAttributesWithContext]. +func (c *Client) InstanceAttributes() ([]string, error) { + return c.InstanceAttributesWithContext(context.Background()) +} + +// InstanceAttributesWithContext returns the list of user-defined attributes, +// assigned when initially creating a GCE VM instance. The value of an +// attribute can be obtained with InstanceAttributeValue. +func (c *Client) InstanceAttributesWithContext(ctx context.Context) ([]string, error) { + return c.lines(ctx, "instance/attributes/") +} // ProjectAttributes returns the list of user-defined attributes // applying to the project as a whole, not just this VM. The value of // an attribute can be obtained with ProjectAttributeValue. -func (c *Client) ProjectAttributes() ([]string, error) { return c.lines("project/attributes/") } +// +// Deprecated: Please use the context aware variant [Client.ProjectAttributesWithContext]. +func (c *Client) ProjectAttributes() ([]string, error) { + return c.ProjectAttributesWithContext(context.Background()) +} + +// ProjectAttributesWithContext returns the list of user-defined attributes +// applying to the project as a whole, not just this VM. The value of +// an attribute can be obtained with ProjectAttributeValue. +func (c *Client) ProjectAttributesWithContext(ctx context.Context) ([]string, error) { + return c.lines(ctx, "project/attributes/") +} // InstanceAttributeValue returns the value of the provided VM // instance attribute. @@ -486,8 +742,22 @@ func (c *Client) ProjectAttributes() ([]string, error) { return c.lines("project // // InstanceAttributeValue may return ("", nil) if the attribute was // defined to be the empty string. +// +// Deprecated: Please use the context aware variant [Client.InstanceAttributeValueWithContext]. func (c *Client) InstanceAttributeValue(attr string) (string, error) { - return c.GetWithContext(context.Background(), "instance/attributes/"+attr) + return c.InstanceAttributeValueWithContext(context.Background(), attr) +} + +// InstanceAttributeValueWithContext returns the value of the provided VM +// instance attribute. +// +// If the requested attribute is not defined, the returned error will +// be of type NotDefinedError. +// +// InstanceAttributeValue may return ("", nil) if the attribute was +// defined to be the empty string. +func (c *Client) InstanceAttributeValueWithContext(ctx context.Context, attr string) (string, error) { + return c.GetWithContext(ctx, "instance/attributes/"+attr) } // ProjectAttributeValue returns the value of the provided @@ -498,18 +768,41 @@ func (c *Client) InstanceAttributeValue(attr string) (string, error) { // // ProjectAttributeValue may return ("", nil) if the attribute was // defined to be the empty string. +// +// Deprecated: Please use the context aware variant [Client.ProjectAttributeValueWithContext]. func (c *Client) ProjectAttributeValue(attr string) (string, error) { - return c.GetWithContext(context.Background(), "project/attributes/"+attr) + return c.ProjectAttributeValueWithContext(context.Background(), attr) +} + +// ProjectAttributeValueWithContext returns the value of the provided +// project attribute. +// +// If the requested attribute is not defined, the returned error will +// be of type NotDefinedError. +// +// ProjectAttributeValue may return ("", nil) if the attribute was +// defined to be the empty string. +func (c *Client) ProjectAttributeValueWithContext(ctx context.Context, attr string) (string, error) { + return c.GetWithContext(ctx, "project/attributes/"+attr) } // Scopes returns the service account scopes for the given account. // The account may be empty or the string "default" to use the instance's // main account. +// +// Deprecated: Please use the context aware variant [Client.ScopesWithContext]. func (c *Client) Scopes(serviceAccount string) ([]string, error) { + return c.ScopesWithContext(context.Background(), serviceAccount) +} + +// ScopesWithContext returns the service account scopes for the given account. +// The account may be empty or the string "default" to use the instance's +// main account. +func (c *Client) ScopesWithContext(ctx context.Context, serviceAccount string) ([]string, error) { if serviceAccount == "" { serviceAccount = "default" } - return c.lines("instance/service-accounts/" + serviceAccount + "/scopes") + return c.lines(ctx, "instance/service-accounts/"+serviceAccount+"/scopes") } // Subscribe subscribes to a value from the metadata service. diff --git a/vendor/cloud.google.com/go/compute/metadata/retry_linux.go b/vendor/cloud.google.com/go/compute/metadata/retry_linux.go index bb412f8917e3..2e53f0123009 100644 --- a/vendor/cloud.google.com/go/compute/metadata/retry_linux.go +++ b/vendor/cloud.google.com/go/compute/metadata/retry_linux.go @@ -17,10 +17,15 @@ package metadata -import "syscall" +import ( + "errors" + "syscall" +) func init() { // Initialize syscallRetryable to return true on transient socket-level // errors. These errors are specific to Linux. - syscallRetryable = func(err error) bool { return err == syscall.ECONNRESET || err == syscall.ECONNREFUSED } + syscallRetryable = func(err error) bool { + return errors.Is(err, syscall.ECONNRESET) || errors.Is(err, syscall.ECONNREFUSED) + } } diff --git a/vendor/cloud.google.com/go/compute/metadata/syscheck.go b/vendor/cloud.google.com/go/compute/metadata/syscheck.go new file mode 100644 index 000000000000..e0704fa64771 --- /dev/null +++ b/vendor/cloud.google.com/go/compute/metadata/syscheck.go @@ -0,0 +1,26 @@ +// Copyright 2024 Google LLC +// +// 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. + +//go:build !windows && !linux + +package metadata + +// systemInfoSuggestsGCE reports whether the local system (without +// doing network requests) suggests that we're running on GCE. If this +// returns true, testOnGCE tries a bit harder to reach its metadata +// server. +func systemInfoSuggestsGCE() bool { + // We don't currently have checks for other GOOS + return false +} diff --git a/vendor/cloud.google.com/go/compute/metadata/syscheck_linux.go b/vendor/cloud.google.com/go/compute/metadata/syscheck_linux.go new file mode 100644 index 000000000000..74689acbbbf6 --- /dev/null +++ b/vendor/cloud.google.com/go/compute/metadata/syscheck_linux.go @@ -0,0 +1,28 @@ +// Copyright 2024 Google LLC +// +// 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. + +//go:build linux + +package metadata + +import ( + "os" + "strings" +) + +func systemInfoSuggestsGCE() bool { + b, _ := os.ReadFile("/sys/class/dmi/id/product_name") + name := strings.TrimSpace(string(b)) + return name == "Google" || name == "Google Compute Engine" +} diff --git a/vendor/cloud.google.com/go/compute/metadata/syscheck_windows.go b/vendor/cloud.google.com/go/compute/metadata/syscheck_windows.go new file mode 100644 index 000000000000..c0ce627872fb --- /dev/null +++ b/vendor/cloud.google.com/go/compute/metadata/syscheck_windows.go @@ -0,0 +1,38 @@ +// Copyright 2024 Google LLC +// +// 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. + +//go:build windows + +package metadata + +import ( + "strings" + + "golang.org/x/sys/windows/registry" +) + +func systemInfoSuggestsGCE() bool { + k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SYSTEM\HardwareConfig\Current`, registry.QUERY_VALUE) + if err != nil { + return false + } + defer k.Close() + + s, _, err := k.GetStringValue("SystemProductName") + if err != nil { + return false + } + s = strings.TrimSpace(s) + return strings.HasPrefix(s, "Google") +} diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/.editorconfig b/vendor/github.com/apapsch/go-jsonmerge/v2/.editorconfig new file mode 100644 index 000000000000..fbb2c8f3605e --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/.editorconfig @@ -0,0 +1,6 @@ +[*] +end_of_line = lf +insert_final_newline = true + +[*.{cmd,bat}] +end_of_line = crlf diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/.gitattributes b/vendor/github.com/apapsch/go-jsonmerge/v2/.gitattributes new file mode 100644 index 000000000000..9be55028cd32 --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/.gitattributes @@ -0,0 +1,175 @@ +## AUTO-DETECT - Handle line endings automatically for files detected +## as text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto + +# Custom for Visual Studio +*.sln text eol=crlf +*.csproj text eol=crlf +*.vbproj text eol=crlf +*.fsproj text eol=crlf +*.dbproj text eol=crlf + +*.vcxproj text eol=crlf +*.vcxitems text eol=crlf +*.props text eol=crlf +*.filters text eol=crlf + +# Documents +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain +*.csv text +*.sql text +*.ini text + +## SOURCE CODE +*.go text eol=lf +*.c text eol=lf +*.h text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf +*.coffee text eol=lf + +*.htm text diff=html +*.html text diff=html +*.xml text diff=html +*.xhtml text diff=html + +*.js text eol=lf +*.jsx text eol=lf +*.json text eol=lf +*.ts text eol=lf + +*.css text diff=css eol=lf +*.scss text diff=css eol=lf +*.less text diff=css eol=lf +*.sass text eol=lf + +*.sh text eol=lf + +## DOCUMENTATION +*.md text eol=lf +*.txt text +AUTHORS text eol=lf +CHANGELOG text eol=lf +CHANGES text eol=lf +CONTRIBUTING text eol=lf +COPYING text eol=lf +INSTALL text eol=lf +license text eol=lf +LICENSE text eol=lf +NEWS text eol=lf +readme text eol=lf +*README* text eol=lf +TODO text eol=lf + +## TEMPLATES +*.dot text +*.ejs text +*.haml text +*.handlebars text +*.hbs text +*.hbt text +*.jade text +*.latte text +*.mustache text +*.tmpl text + +## LINTERS +.csslintrc text eol=lf +.eslintrc text eol=lf +.jscsrc text eol=lf +.jshintrc text eol=lf +.jshintignore text eol=lf +.stylelintrc text eol=lf + +## CONFIGS +*.bowerrc text eol=lf +*.cnf text +*.conf text +*.config text +.editorconfig text eol=lf +.gitattributes text eol=lf +.gitconfig text eol=lf +.gitignore text eol=lf +*.npmignore text eol=lf +*.yaml text eol=lf +*.yml text eol=lf +Makefile text eol=lf +makefile text eol=lf + +## GRAPHICS +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +*.svg text +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + +## AUDIO +*.kar binary +*.m4a binary +*.mid binary +*.midi binary +*.mp3 binary +*.ogg binary +*.ra binary + +## VIDEO +*.3gpp binary +*.3gp binary +*.as binary +*.asf binary +*.asx binary +*.fla binary +*.flv binary +*.m4v binary +*.mng binary +*.mov binary +*.mp4 binary +*.mpeg binary +*.mpg binary +*.swc binary +*.swf binary +*.webm binary + +## ARCHIVES +*.7z binary +*.gz binary +*.rar binary +*.tar binary +*.zip binary + +## FONTS +*.ttf binary +*.eot binary +*.otf binary +*.woff binary +*.woff2 binary + +## EXECUTABLES +*.exe binary +*.dll binary diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/.gitignore b/vendor/github.com/apapsch/go-jsonmerge/v2/.gitignore new file mode 100644 index 000000000000..5efe425bd705 --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/.gitignore @@ -0,0 +1,11 @@ +# GoLand +/.idea/ + +/vendor/ + +/cmd/cmd.exe +/cmd/cmd + +/artifacts/ +/test/ +/cmd/test/ diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/.gitlab-ci.yml b/vendor/github.com/apapsch/go-jsonmerge/v2/.gitlab-ci.yml new file mode 100644 index 000000000000..a0d178f93053 --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/.gitlab-ci.yml @@ -0,0 +1,42 @@ +variables: + GOPROJ: "github.com/RaveNoX/go-jsonmerge" + + +stages: +- test +- build + +test: + tags: + - docker + - linux + image: golang:latest + stage: test + script: + - mkdir -p artifacts + - go test -cover -v -coverprofile="./artifacts/cover.out" ./ + - go tool cover -html="./artifacts/cover.out" -o "./artifacts/cover.htm" + - go test -cover -v -coverprofile="./artifacts/cover_cmd.out" ./cmd/jsonmerge + - go tool cover -html="./artifacts/cover_cmd.out" -o "./artifacts/cover_cmd.htm" + artifacts: + paths: + - artifacts/* + +build: + stage: build + tags: + - docker + - linux + image: golang:latest + script: + - mkdir -p artifacts + - echo "Building for Linux" + - GOOS=linux GOARCH=amd64 go build -o artifacts/jsonmerge ./cmd/jsonmerge + - echo "Building for MacOS (darwin)" + - GOOS=darwin GOARCH=amd64 go build -o artifacts/jsonmerge_darwin ./cmd/jsonmerge + - echo "Building for Windows" + - GOOS=windows GOARCH=amd64 go build -o artifacts/jsonmerge.exe ./cmd/jsonmerge + artifacts: + paths: + - artifacts/* + diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/.travis.yml b/vendor/github.com/apapsch/go-jsonmerge/v2/.travis.yml new file mode 100644 index 000000000000..eae1a8a2658e --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/.travis.yml @@ -0,0 +1,19 @@ +language: go + +go: +- 1.x + +install: +- mkdir -p artifacts + +env: + - GO111MODULE=on + +script: +- go test -cover -v -coverprofile="./artifacts/cover.out" ./ +- go tool cover -html="./artifacts/cover.out" -o "./artifacts/cover.htm" +- go test -cover -v -coverprofile="./artifacts/cover_cmd.out" ./cmd/jsonmerge +- go tool cover -html="./artifacts/cover_cmd.out" -o "./artifacts/cover_cmd.htm" +- GOARCH=amd64 GOOS=linux go build -o artifacts/jsonmerge ./cmd/jsonmerge +- GOARCH=amd64 GOOS=windows go build -o artifacts/jsonmerge.exe ./cmd/jsonmerge +- GOARCH=amd64 GOOS=darwin go build -o artifacts/jsonmerge_darwin ./cmd/jsonmerge diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/LICENSE b/vendor/github.com/apapsch/go-jsonmerge/v2/LICENSE new file mode 100644 index 000000000000..f23057e460bb --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016-2019 Artur Kraev + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/README.md b/vendor/github.com/apapsch/go-jsonmerge/v2/README.md new file mode 100644 index 000000000000..e11bd4c4846b --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/README.md @@ -0,0 +1,81 @@ +# go-jsonmerge +[![Build Status](https://travis-ci.org/RaveNoX/go-jsonmerge.svg?branch=master)](https://travis-ci.org/RaveNoX/go-jsonmerge) +[![GoDoc](https://godoc.org/github.com/RaveNoX/go-jsonmerge?status.svg)](https://godoc.org/github.com/RaveNoX/go-jsonmerge) + +GO library for merging JSON objects + +## Original document +```json +{ + "number": 1, + "string": "value", + "object": { + "number": 1, + "string": "value", + "nested object": { + "number": 2 + }, + "array": [1, 2, 3], + "partial_array": [1, 2, 3] + } +} +``` + +## Patch +```json +{ + "number": 2, + "string": "value1", + "nonexitent": "woot", + "object": { + "number": 3, + "string": "value2", + "nested object": { + "number": 4 + }, + "array": [3, 2, 1], + "partial_array": { + "1": 4 + } + } +} +``` + +## Result +```json +{ + "number": 2, + "string": "value1", + "object": { + "number": 3, + "string": "value2", + "nested object": { + "number": 4 + }, + "array": [3, 2, 1], + "partial_array": [1, 4, 3] + } +} +``` + +## Commandline Tool + +```bash +$ go get -u github.com/RaveNoX/go-jsonmerge/cmd/jsonmerge +$ jsonmerge [options] ... +# For help +$ jsonmerge -h +``` + +## Development +``` +# Install depencencies +./init.sh + +# Build +./build.sh +``` + + +## License +[MIT](./LICENSE.MD) diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/build.cmd b/vendor/github.com/apapsch/go-jsonmerge/v2/build.cmd new file mode 100644 index 000000000000..ebd987673fcb --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/build.cmd @@ -0,0 +1,25 @@ +@ECHO OFF +setlocal + +set GOARCH=amd64 + +cd %~dp0 +md artifacts + +echo Windows +set GOOS=windows +call go build -o artifacts\jsonmerge.exe .\cmd || goto :error + +echo Linux +set GOOS=linux +call go build -o artifacts\jsonmerge .\cmd || goto :error + +echo Darwin +set GOOS=darwin +call go build -o artifacts\jsonmerge_darwin .\cmd || goto :error + +echo Build done +exit + +:error +exit /b %errorlevel% diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/build.sh b/vendor/github.com/apapsch/go-jsonmerge/v2/build.sh new file mode 100644 index 000000000000..29be8924cf2c --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/build.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +MY_DIR=$(dirname "$0") + +cd "${MY_DIR}" +mkdir -p "artifacts" + +echo "Linux" +GOARCH=amd64 GOOS=linux go build -o "artifacts/jsonmerge" ./cmd + +echo "Windows" +GOARCH=amd64 GOOS=windows go build -o "artifacts/jsonmerge.exe" ./cmd + +echo "Mac(darwin)" +GOARCH=amd64 GOOS=darwin go build -o "artifacts/jsonmerge_darwin" ./cmd + +echo "Build done" diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/doc.go b/vendor/github.com/apapsch/go-jsonmerge/v2/doc.go new file mode 100644 index 000000000000..5bd6e15eb44d --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/doc.go @@ -0,0 +1,52 @@ +// Package jsonmerge helps mergeing JSON objects +// +// For example you have this documents: +// +// original.json +// { +// "number": 1, +// "string": "value", +// "object": { +// "number": 1, +// "string": "value", +// "nested object": { +// "number": 2 +// }, +// "array": [1, 2, 3], +// "partial_array": [1, 2, 3] +// } +// } +// +// patch.json +// { +// "number": 2, +// "string": "value1", +// "nonexitent": "woot", +// "object": { +// "number": 3, +// "string": "value2", +// "nested object": { +// "number": 4 +// }, +// "array": [3, 2, 1], +// "partial_array": { +// "1": 4 +// } +// } +// } +// +// After merge you will have this result: +// { +// "number": 2, +// "string": "value1", +// "object": { +// "number": 3, +// "string": "value2", +// "nested object": { +// "number": 4 +// }, +// "array": [3, 2, 1], +// "partial_array": [1, 4, 3] +// } +// } +package jsonmerge diff --git a/vendor/github.com/apapsch/go-jsonmerge/v2/merge.go b/vendor/github.com/apapsch/go-jsonmerge/v2/merge.go new file mode 100644 index 000000000000..8ba052f18819 --- /dev/null +++ b/vendor/github.com/apapsch/go-jsonmerge/v2/merge.go @@ -0,0 +1,167 @@ +package jsonmerge + +import ( + "bytes" + "encoding/json" + "fmt" + "reflect" + "strconv" + "strings" +) + +// Merger describes result of merge operation and provides +// configuration. +type Merger struct { + // Errors is slice of non-critical errors of merge operations + Errors []error + // Replaced is describe replacements + // Key is path in document like + // "prop1.prop2.prop3" for object properties or + // "arr1.1.prop" for arrays + // Value is value of replacemet + Replaced map[string]interface{} + // CopyNonexistent enables setting fields into the result + // which only exist in the patch. + CopyNonexistent bool +} + +func (m *Merger) mergeValue(path []string, patch map[string]interface{}, key string, value interface{}) interface{} { + patchValue, patchHasValue := patch[key] + + if !patchHasValue { + return value + } + + _, patchValueIsObject := patchValue.(map[string]interface{}) + + path = append(path, key) + pathStr := strings.Join(path, ".") + + if _, ok := value.(map[string]interface{}); ok { + if !patchValueIsObject { + err := fmt.Errorf("patch value must be object for key \"%v\"", pathStr) + m.Errors = append(m.Errors, err) + return value + } + + return m.mergeObjects(value, patchValue, path) + } + + if _, ok := value.([]interface{}); ok && patchValueIsObject { + return m.mergeObjects(value, patchValue, path) + } + + if !reflect.DeepEqual(value, patchValue) { + m.Replaced[pathStr] = patchValue + } + + return patchValue +} + +func (m *Merger) mergeObjects(data, patch interface{}, path []string) interface{} { + if patchObject, ok := patch.(map[string]interface{}); ok { + if dataArray, ok := data.([]interface{}); ok { + ret := make([]interface{}, len(dataArray)) + + for i, val := range dataArray { + ret[i] = m.mergeValue(path, patchObject, strconv.Itoa(i), val) + } + + return ret + } else if dataObject, ok := data.(map[string]interface{}); ok { + ret := make(map[string]interface{}) + + for k, v := range dataObject { + ret[k] = m.mergeValue(path, patchObject, k, v) + } + if m.CopyNonexistent { + for k, v := range patchObject { + if _, ok := dataObject[k]; !ok { + ret[k] = v + } + } + } + + return ret + } + } + + return data +} + +// Merge merges patch document to data document +// +// Returning merged document. Result of merge operation can be +// obtained from the Merger. Result information is discarded before +// merging. +func (m *Merger) Merge(data, patch interface{}) interface{} { + m.Replaced = make(map[string]interface{}) + m.Errors = make([]error, 0) + return m.mergeObjects(data, patch, nil) +} + +// MergeBytesIndent merges patch document buffer to data document buffer +// +// Use prefix and indent for set indentation like in json.MarshalIndent +// +// Returning merged document buffer and error if any. +func (m *Merger) MergeBytesIndent(dataBuff, patchBuff []byte, prefix, indent string) (mergedBuff []byte, err error) { + var data, patch, merged interface{} + + err = unmarshalJSON(dataBuff, &data) + if err != nil { + err = fmt.Errorf("error in data JSON: %v", err) + return + } + + err = unmarshalJSON(patchBuff, &patch) + if err != nil { + err = fmt.Errorf("error in patch JSON: %v", err) + return + } + + merged = m.Merge(data, patch) + + mergedBuff, err = json.MarshalIndent(merged, prefix, indent) + if err != nil { + err = fmt.Errorf("error writing merged JSON: %v", err) + } + + return +} + +// MergeBytes merges patch document buffer to data document buffer +// +// Returning merged document buffer, merge info and +// error if any +func (m *Merger) MergeBytes(dataBuff, patchBuff []byte) (mergedBuff []byte, err error) { + var data, patch, merged interface{} + + err = unmarshalJSON(dataBuff, &data) + if err != nil { + err = fmt.Errorf("error in data JSON: %v", err) + return + } + + err = unmarshalJSON(patchBuff, &patch) + if err != nil { + err = fmt.Errorf("error in patch JSON: %v", err) + return + } + + merged = m.Merge(data, patch) + + mergedBuff, err = json.Marshal(merged) + if err != nil { + err = fmt.Errorf("error writing merged JSON: %v", err) + } + + return +} + +func unmarshalJSON(buff []byte, data interface{}) error { + decoder := json.NewDecoder(bytes.NewReader(buff)) + decoder.UseNumber() + + return decoder.Decode(data) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/.gitignore b/vendor/github.com/aws/aws-sdk-go-v2/.gitignore deleted file mode 100644 index e736820b3d21..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -dist -/doc -/doc-staging -.yardoc -Gemfile.lock -/internal/awstesting/integration/smoke/**/importmarker__.go -/internal/awstesting/integration/smoke/_test/ -/vendor -/private/model/cli/gen-api/gen-api -.gradle/ -build/ -.idea/ diff --git a/vendor/github.com/aws/aws-sdk-go-v2/.golangci.toml b/vendor/github.com/aws/aws-sdk-go-v2/.golangci.toml deleted file mode 100644 index 8792d0ca6b1f..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/.golangci.toml +++ /dev/null @@ -1,27 +0,0 @@ -[run] -concurrency = 4 -timeout = "1m" -issues-exit-code = 0 -modules-download-mode = "readonly" -allow-parallel-runners = true -skip-dirs = ["internal/repotools"] -skip-dirs-use-default = true -skip-files = ["service/transcribestreaming/eventstream_test.go"] -[output] -format = "github-actions" - -[linters-settings.cyclop] -skip-tests = false - -[linters-settings.errcheck] -check-blank = true - -[linters] -disable-all = true -enable = ["errcheck"] -fast = false - -[issues] -exclude-use-default = false - -# Refer config definitions at https://golangci-lint.run/usage/configuration/#config-file diff --git a/vendor/github.com/aws/aws-sdk-go-v2/.travis.yml b/vendor/github.com/aws/aws-sdk-go-v2/.travis.yml deleted file mode 100644 index 4b498a7a2bb7..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/.travis.yml +++ /dev/null @@ -1,31 +0,0 @@ -language: go -sudo: true -dist: bionic - -branches: - only: - - main - -os: - - linux - - osx - # Travis doesn't work with windows and Go tip - #- windows - -go: - - tip - -matrix: - allow_failures: - - go: tip - -before_install: - - if [ "$TRAVIS_OS_NAME" = "windows" ]; then choco install make; fi - - (cd /tmp/; go get golang.org/x/lint/golint) - -env: - - EACHMODULE_CONCURRENCY=4 - -script: - - make ci-test-no-generate; - diff --git a/vendor/github.com/aws/aws-sdk-go-v2/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/CHANGELOG.md deleted file mode 100644 index 78de90a371c4..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/CHANGELOG.md +++ /dev/null @@ -1,5715 +0,0 @@ -# Release (2022-09-20) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.16.16 - * **Documentation**: added clafirfication on the Credential object to show usage of loadDefaultConfig to load credentials -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.58.0](service/ec2/CHANGELOG.md#v1580-2022-09-20) - * **Feature**: This release adds support for blocked paths to Amazon VPC Reachability Analyzer. - -# Release (2022-09-19) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.18.0](service/cloudtrail/CHANGELOG.md#v1180-2022-09-19) - * **Feature**: This release includes support for importing existing trails into CloudTrail Lake. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.57.0](service/ec2/CHANGELOG.md#v1570-2022-09-19) - * **Feature**: This release adds CapacityAllocations field to DescribeCapacityReservations -* `github.com/aws/aws-sdk-go-v2/service/mediaconnect`: [v1.17.0](service/mediaconnect/CHANGELOG.md#v1170-2022-09-19) - * **Feature**: This change allows the customer to use the SRT Caller protocol as part of their flows -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.26.0](service/rds/CHANGELOG.md#v1260-2022-09-19) - * **Feature**: This release adds support for Amazon RDS Proxy with SQL Server compatibility. - -# Release (2022-09-16) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/codestarnotifications`: [v1.13.0](service/codestarnotifications/CHANGELOG.md#v1130-2022-09-16) - * **Feature**: This release adds tag based access control for the UntagResource API. -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.18.21](service/ecs/CHANGELOG.md#v11821-2022-09-16) - * **Documentation**: This release supports new task definition sizes. - -# Release (2022-09-15) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.17.0](service/dynamodb/CHANGELOG.md#v1170-2022-09-15) - * **Feature**: Increased DynamoDB transaction limit from 25 to 100. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.56.0](service/ec2/CHANGELOG.md#v1560-2022-09-15) - * **Feature**: This feature allows customers to create tags for vpc-endpoint-connections and vpc-endpoint-service-permissions. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.43.0](service/sagemaker/CHANGELOG.md#v1430-2022-09-15) - * **Feature**: Amazon SageMaker Automatic Model Tuning now supports specifying Hyperband strategy for tuning jobs, which uses a multi-fidelity based tuning strategy to stop underperforming hyperparameter configurations early. - -# Release (2022-09-14) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/feature/rds/auth`: [v1.2.0](feature/rds/auth/CHANGELOG.md#v120-2022-09-14) - * **Feature**: Updated `BuildAuthToken` to validate the provided endpoint contains a port. -* `github.com/aws/aws-sdk-go-v2/internal/v4a`: [v1.0.13](internal/v4a/CHANGELOG.md#v1013-2022-09-14) - * **Bug Fix**: Fixes an issues where an error from an underlying SigV4 credential provider would not be surfaced from the SigV4a credential provider. Contribution by [sakthipriyan-aqfer](https://github.com/sakthipriyan-aqfer). -* `github.com/aws/aws-sdk-go-v2/service/acmpca`: [v1.18.0](service/acmpca/CHANGELOG.md#v1180-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/amplifyuibuilder`: [v1.7.0](service/amplifyuibuilder/CHANGELOG.md#v170-2022-09-14) - * **Feature**: Amplify Studio UIBuilder is introducing forms functionality. Forms can be configured from Data Store models, JSON, or from scratch. These forms can then be generated in your project and used like any other React components. -* `github.com/aws/aws-sdk-go-v2/service/appconfig`: [v1.14.0](service/appconfig/CHANGELOG.md#v1140-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.17.0](service/appflow/CHANGELOG.md#v1170-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/appmesh`: [v1.16.0](service/appmesh/CHANGELOG.md#v1160-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.17.0](service/cloudtrail/CHANGELOG.md#v1170-2022-09-14) - * **Feature**: This release adds CloudTrail getChannel and listChannels APIs to allow customer to view the ServiceLinkedChannel configurations. -* `github.com/aws/aws-sdk-go-v2/service/codestar`: [v1.12.0](service/codestar/CHANGELOG.md#v1120-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/codestarnotifications`: [v1.12.0](service/codestarnotifications/CHANGELOG.md#v1120-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentity`: [v1.14.0](service/cognitoidentity/CHANGELOG.md#v1140-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.20.0](service/cognitoidentityprovider/CHANGELOG.md#v1200-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.26.0](service/configservice/CHANGELOG.md#v1260-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.30.0](service/connect/CHANGELOG.md#v1300-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/connectparticipant`: [v1.12.0](service/connectparticipant/CHANGELOG.md#v1120-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/costexplorer`: [v1.20.0](service/costexplorer/CHANGELOG.md#v1200-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/customerprofiles`: [v1.19.0](service/customerprofiles/CHANGELOG.md#v1190-2022-09-14) - * **Feature**: Added isUnstructured in response for Customer Profiles Integration APIs - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/dataexchange`: [v1.16.0](service/dataexchange/CHANGELOG.md#v1160-2022-09-14) - * **Feature**: Documentation updates for AWS Data Exchange. -* `github.com/aws/aws-sdk-go-v2/service/drs`: [v1.8.0](service/drs/CHANGELOG.md#v180-2022-09-14) - * **Feature**: Fixed the data type of lagDuration that is returned in Describe Source Server API -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.55.0](service/ec2/CHANGELOG.md#v1550-2022-09-14) - * **Feature**: Documentation updates for Amazon EC2. - * **Feature**: This release adds support to send VPC Flow Logs to kinesis-data-firehose as new destination type - * **Feature**: This update introduces API operations to manage and create local gateway route tables, CoIP pools, and VIF group associations. - * **Feature**: Two new features for local gateway route tables: support for static routes targeting Elastic Network Interfaces and direct VPC routing. -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.22.0](service/eks/CHANGELOG.md#v1220-2022-09-14) - * **Feature**: Adding support for local Amazon EKS clusters on Outposts - * **Feature**: Adds support for EKS Addons ResolveConflicts "preserve" flag. Also adds new update failed status for EKS Addons. -* `github.com/aws/aws-sdk-go-v2/service/emrcontainers`: [v1.14.0](service/emrcontainers/CHANGELOG.md#v1140-2022-09-14) - * **Feature**: EMR on EKS now allows running Spark SQL using the newly introduced Spark SQL Job Driver in the Start Job Run API -* `github.com/aws/aws-sdk-go-v2/service/emrserverless`: [v1.2.0](service/emrserverless/CHANGELOG.md#v120-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/evidently`: [v1.9.0](service/evidently/CHANGELOG.md#v190-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. - * **Feature**: This release adds support for the client-side evaluation - powered by AWS AppConfig feature. -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.13.0](service/finspacedata/CHANGELOG.md#v1130-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/fis`: [v1.13.0](service/fis/CHANGELOG.md#v1130-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.24.12](service/fsx/CHANGELOG.md#v12412-2022-09-14) - * **Documentation**: Documentation update for Amazon FSx. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.31.0](service/glue/CHANGELOG.md#v1310-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.18.0](service/greengrassv2/CHANGELOG.md#v1180-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.15.3](service/identitystore/CHANGELOG.md#v1153-2022-09-14) - * **Documentation**: Documentation updates for the Identity Store CLI Reference. -* `github.com/aws/aws-sdk-go-v2/service/imagebuilder`: [v1.20.0](service/imagebuilder/CHANGELOG.md#v1200-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/inspector2`: [v1.8.0](service/inspector2/CHANGELOG.md#v180-2022-09-14) - * **Feature**: This release adds new fields like fixAvailable, fixedInVersion and remediation to the finding model. The requirement to have vulnerablePackages in the finding model has also been removed. The documentation has been updated to reflect these changes. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.29.0](service/iot/CHANGELOG.md#v1290-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/iotanalytics`: [v1.13.0](service/iotanalytics/CHANGELOG.md#v1130-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/iotsecuretunneling`: [v1.14.0](service/iotsecuretunneling/CHANGELOG.md#v1140-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.25.0](service/iotsitewise/CHANGELOG.md#v1250-2022-09-14) - * **Feature**: Allow specifying units in Asset Properties -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.34.0](service/kendra/CHANGELOG.md#v1340-2022-09-14) - * **Feature**: This release enables our customer to choose the option of Sharepoint 2019 for the on-premise Sharepoint connector. -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.24.0](service/lexmodelsv2/CHANGELOG.md#v1240-2022-09-14) - * **Feature**: This release is for supporting Composite Slot Type feature in AWS Lex V2. Composite Slot Type will help developer to logically group coherent slots and maintain their inter-relationships in runtime conversation. -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.15.0](service/lexruntimev2/CHANGELOG.md#v1150-2022-09-14) - * **Feature**: This release is for supporting Composite Slot Type feature in AWS Lex V2. Composite Slot Type will help developer to logically group coherent slots and maintain their inter-relationships in runtime conversation. -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.18.0](service/lookoutmetrics/CHANGELOG.md#v1180-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. - * **Feature**: Release dimension value filtering feature to allow customers to define dimension filters for including only a subset of their dataset to be used by LookoutMetrics. -* `github.com/aws/aws-sdk-go-v2/service/m2`: [v1.1.0](service/m2/CHANGELOG.md#v110-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.23.0](service/medialive/CHANGELOG.md#v1230-2022-09-14) - * **Feature**: This change exposes API settings which allow Dolby Atmos and Dolby Vision to be used when running a channel using Elemental Media Live -* `github.com/aws/aws-sdk-go-v2/service/networkfirewall`: [v1.19.0](service/networkfirewall/CHANGELOG.md#v1190-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/pi`: [v1.15.0](service/pi/CHANGELOG.md#v1150-2022-09-14) - * **Feature**: Increases the maximum values of two RDS Performance Insights APIs. The maximum value of the Limit parameter of DimensionGroup is 25. The MaxResult maximum is now 25 for the following APIs: DescribeDimensionKeys, GetResourceMetrics, ListAvailableResourceDimensions, and ListAvailableResourceMetrics. -* `github.com/aws/aws-sdk-go-v2/service/pricing`: [v1.17.0](service/pricing/CHANGELOG.md#v1170-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.25.0](service/quicksight/CHANGELOG.md#v1250-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.26.9](service/redshift/CHANGELOG.md#v1269-2022-09-14) - * **Documentation**: This release updates documentation for AQUA features and other description updates. -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.22.0](service/route53/CHANGELOG.md#v1220-2022-09-14) - * **Feature**: Amazon Route 53 now supports the Middle East (UAE) Region (me-central-1) for latency records, geoproximity records, and private DNS for Amazon VPCs in that region. -* `github.com/aws/aws-sdk-go-v2/service/route53recoverycluster`: [v1.10.0](service/route53recoverycluster/CHANGELOG.md#v1100-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.22.0](service/s3control/CHANGELOG.md#v1220-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.42.0](service/sagemaker/CHANGELOG.md#v1420-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. - * **Feature**: SageMaker Hosting now allows customization on ML instance storage volume size, model data download timeout and inference container startup ping health check timeout for each ProductionVariant in CreateEndpointConfig API. - * **Feature**: This release adds HyperParameterTuningJob type in Search API. - * **Feature**: This release adds Mode to AutoMLJobConfig. -* `github.com/aws/aws-sdk-go-v2/service/sagemakera2iruntime`: [v1.14.0](service/sagemakera2iruntime/CHANGELOG.md#v1140-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.16.0](service/secretsmanager/CHANGELOG.md#v1160-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry`: [v1.14.0](service/servicecatalogappregistry/CHANGELOG.md#v1140-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/sfn`: [v1.14.0](service/sfn/CHANGELOG.md#v1140-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/sns`: [v1.18.0](service/sns/CHANGELOG.md#v1180-2022-09-14) - * **Feature**: Amazon SNS introduces the Data Protection Policy APIs, which enable customers to attach a data protection policy to an SNS topic. This allows topic owners to enable the new message data protection feature to audit and block sensitive data that is exchanged through their topics. -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.28.0](service/ssm/CHANGELOG.md#v1280-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. - * **Feature**: This release adds support for Systems Manager State Manager Association tagging. -* `github.com/aws/aws-sdk-go-v2/service/timestreamwrite`: [v1.14.0](service/timestreamwrite/CHANGELOG.md#v1140-2022-09-14) - * **Feature**: Fixed a bug in the API client generation which caused some operation parameters to be incorrectly generated as value types instead of pointer types. The service API always required these affected parameters to be nilable. This fixes the SDK client to match the expectations of the the service API. -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.22.0](service/transfer/CHANGELOG.md#v1220-2022-09-14) - * **Feature**: This release introduces the ability to have multiple server host keys for any of your Transfer Family servers that use the SFTP protocol. - -# Release (2022-09-02.2) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.15.2](service/identitystore/CHANGELOG.md#v1152-2022-09-022) - * **Bug Fix**: Reverts a change to the identitystore module so that MaxResults members of ListGroupMemberShips, ListGroupMembershipsForMembers, ListGroups, and ListUsers are correctly generated as pointer types instead of value types - -# Release (2022-09-02) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.19.0](service/cognitoidentityprovider/CHANGELOG.md#v1190-2022-09-02) - * **Feature**: This release adds a new "AuthSessionValidity" field to the UserPoolClient in Cognito. Application admins can configure this value for their users' authentication duration, which is currently fixed at 3 minutes, up to 15 minutes. Setting this field will also apply to the SMS MFA authentication flow. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.29.0](service/connect/CHANGELOG.md#v1290-2022-09-02) - * **Feature**: This release adds search APIs for Routing Profiles and Queues, which can be used to search for those resources within a Connect Instance. -* `github.com/aws/aws-sdk-go-v2/service/mediapackage`: [v1.19.0](service/mediapackage/CHANGELOG.md#v1190-2022-09-02) - * **Feature**: Added support for AES_CTR encryption to CMAF origin endpoints -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.41.0](service/sagemaker/CHANGELOG.md#v1410-2022-09-02) - * **Feature**: This release enables administrators to attribute user activity and API calls from Studio notebooks, Data Wrangler and Canvas to specific users even when users share the same execution IAM role. ExecutionRoleIdentityConfig at Sagemaker domain level enables this feature. - -# Release (2022-09-01) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/codegurureviewer`: [v1.16.11](service/codegurureviewer/CHANGELOG.md#v11611-2022-09-01) - * **Documentation**: Documentation updates to fix formatting issues in CLI and SDK documentation. -* `github.com/aws/aws-sdk-go-v2/service/controltower`: [v1.0.0](service/controltower/CHANGELOG.md#v100-2022-09-01) - * **Release**: New AWS service client module - * **Feature**: This release contains the first SDK for AWS Control Tower. It introduces a new set of APIs: EnableControl, DisableControl, GetControlOperation, and ListEnabledControls. -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.21.10](service/route53/CHANGELOG.md#v12110-2022-09-01) - * **Documentation**: Documentation updates for Amazon Route 53. - -# Release (2022-08-31) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cloudfront`: [v1.20.2](service/cloudfront/CHANGELOG.md#v1202-2022-08-31) - * **Documentation**: Update API documentation for CloudFront origin access control (OAC) -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.15.0](service/identitystore/CHANGELOG.md#v1150-2022-08-31) - * **Feature**: Expand IdentityStore API to support Create, Read, Update, Delete and Get operations for User, Group and GroupMembership resources. -* `github.com/aws/aws-sdk-go-v2/service/iotthingsgraph`: [v1.13.0](service/iotthingsgraph/CHANGELOG.md#v1130-2022-08-31) - * **Feature**: This release deprecates all APIs of the ThingsGraph service -* `github.com/aws/aws-sdk-go-v2/service/ivs`: [v1.18.0](service/ivs/CHANGELOG.md#v1180-2022-08-31) - * **Feature**: IVS Merge Fragmented Streams. This release adds support for recordingReconnectWindow field in IVS recordingConfigurations. For more information see https://docs.aws.amazon.com/ivs/latest/APIReference/Welcome.html -* `github.com/aws/aws-sdk-go-v2/service/rdsdata`: [v1.12.12](service/rdsdata/CHANGELOG.md#v11212-2022-08-31) - * **Documentation**: Documentation updates for RDS Data API -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.40.0](service/sagemaker/CHANGELOG.md#v1400-2022-08-31) - * **Feature**: SageMaker Inference Recommender now accepts Inference Recommender fields: Domain, Task, Framework, SamplePayloadUrl, SupportedContentTypes, SupportedInstanceTypes, directly in our CreateInferenceRecommendationsJob API through ContainerConfig - -# Release (2022-08-30) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.17.0](service/greengrassv2/CHANGELOG.md#v1170-2022-08-30) - * **Feature**: Adds topologyFilter to ListInstalledComponentsRequest which allows filtration of components by ROOT or ALL (including root and dependency components). Adds lastStatusChangeTimestamp to ListInstalledComponents response to show the last time a component changed state on a device. -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.14.15](service/identitystore/CHANGELOG.md#v11415-2022-08-30) - * **Documentation**: Documentation updates for the Identity Store CLI Reference. -* `github.com/aws/aws-sdk-go-v2/service/lookoutequipment`: [v1.15.0](service/lookoutequipment/CHANGELOG.md#v1150-2022-08-30) - * **Feature**: This release adds new apis for providing labels. -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.23.0](service/macie2/CHANGELOG.md#v1230-2022-08-30) - * **Feature**: This release of the Amazon Macie API adds support for using allow lists to define specific text and text patterns to ignore when inspecting data sources for sensitive data. -* `github.com/aws/aws-sdk-go-v2/service/sso`: [v1.11.19](service/sso/CHANGELOG.md#v11119-2022-08-30) - * **Documentation**: Documentation updates for the AWS IAM Identity Center Portal CLI Reference. -* `github.com/aws/aws-sdk-go-v2/service/ssoadmin`: [v1.15.7](service/ssoadmin/CHANGELOG.md#v1157-2022-08-30) - * **Documentation**: Documentation updates for the AWS IAM Identity Center CLI Reference. - -# Release (2022-08-29) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.24.9](service/fsx/CHANGELOG.md#v1249-2022-08-29) - * **Documentation**: Documentation updates for Amazon FSx for NetApp ONTAP. -* `github.com/aws/aws-sdk-go-v2/service/voiceid`: [v1.11.0](service/voiceid/CHANGELOG.md#v1110-2022-08-29) - * **Feature**: Amazon Connect Voice ID now detects voice spoofing. When a prospective fraudster tries to spoof caller audio using audio playback or synthesized speech, Voice ID will return a risk score and outcome to indicate the how likely it is that the voice is spoofed. - -# Release (2022-08-26) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/mediapackage`: [v1.18.0](service/mediapackage/CHANGELOG.md#v1180-2022-08-26) - * **Feature**: This release adds Ads AdTriggers and AdsOnDeliveryRestrictions to describe calls for CMAF endpoints on MediaPackage. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.25.1](service/rds/CHANGELOG.md#v1251-2022-08-26) - * **Documentation**: Removes support for RDS Custom from DBInstanceClass in ModifyDBInstance - -# Release (2022-08-25) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.18.13](service/elasticloadbalancingv2/CHANGELOG.md#v11813-2022-08-25) - * **Documentation**: Documentation updates for ELBv2. Gateway Load Balancer now supports Configurable Flow Stickiness, enabling you to configure the hashing used to maintain stickiness of flows to a specific target appliance. -* `github.com/aws/aws-sdk-go-v2/service/gamelift`: [v1.15.0](service/gamelift/CHANGELOG.md#v1150-2022-08-25) - * **Feature**: This release adds support for eight EC2 local zones as fleet locations; Atlanta, Chicago, Dallas, Denver, Houston, Kansas City (us-east-1-mci-1a), Los Angeles, and Phoenix. It also adds support for C5d, C6a, C6i, and R5d EC2 instance families. -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.22.0](service/iotwireless/CHANGELOG.md#v1220-2022-08-25) - * **Feature**: This release includes a new feature for the customers to enable the LoRa gateways to send out beacons for Class B devices and an option to select one or more gateways for Class C devices when sending the LoRaWAN downlink messages. -* `github.com/aws/aws-sdk-go-v2/service/ivschat`: [v1.0.13](service/ivschat/CHANGELOG.md#v1013-2022-08-25) - * **Documentation**: Documentation change for IVS Chat API Reference. Doc-only update to add a paragraph on ARNs to the Welcome section. -* `github.com/aws/aws-sdk-go-v2/service/panorama`: [v1.8.0](service/panorama/CHANGELOG.md#v180-2022-08-25) - * **Feature**: Support sorting and filtering in ListDevices API, and add more fields to device listings and single device detail -* `github.com/aws/aws-sdk-go-v2/service/ssooidc`: [v1.13.0](service/ssooidc/CHANGELOG.md#v1130-2022-08-25) - * **Feature**: Updated required request parameters on IAM Identity Center's OIDC CreateToken action. - -# Release (2022-08-24) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cloudfront`: [v1.20.0](service/cloudfront/CHANGELOG.md#v1200-2022-08-24) - * **Feature**: Adds support for CloudFront origin access control (OAC), making it possible to restrict public access to S3 bucket origins in all AWS Regions, those with SSE-KMS, and more. -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.25.0](service/configservice/CHANGELOG.md#v1250-2022-08-24) - * **Feature**: AWS Config now supports ConformancePackTemplate documents in SSM Docs for the deployment and update of conformance packs. -* `github.com/aws/aws-sdk-go-v2/service/iam`: [v1.18.14](service/iam/CHANGELOG.md#v11814-2022-08-24) - * **Documentation**: Documentation updates for AWS Identity and Access Management (IAM). -* `github.com/aws/aws-sdk-go-v2/service/ivs`: [v1.17.1](service/ivs/CHANGELOG.md#v1171-2022-08-24) - * **Documentation**: Documentation Change for IVS API Reference - Doc-only update to type field description for CreateChannel and UpdateChannel actions and for Channel data type. Also added Amazon Resource Names (ARNs) paragraph to Welcome section. -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.24.0](service/quicksight/CHANGELOG.md#v1240-2022-08-24) - * **Feature**: Added a new optional property DashboardVisual under ExperienceConfiguration parameter of GenerateEmbedUrlForAnonymousUser and GenerateEmbedUrlForRegisteredUser API operations. This supports embedding of specific visuals in QuickSight dashboards. -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.21.5](service/transfer/CHANGELOG.md#v1215-2022-08-24) - * **Documentation**: Documentation updates for AWS Transfer Family - -# Release (2022-08-23) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.25.0](service/rds/CHANGELOG.md#v1250-2022-08-23) - * **Feature**: RDS for Oracle supports Oracle Data Guard switchover and read replica backups. -* `github.com/aws/aws-sdk-go-v2/service/ssoadmin`: [v1.15.5](service/ssoadmin/CHANGELOG.md#v1155-2022-08-23) - * **Documentation**: Documentation updates to reflect service rename - AWS IAM Identity Center (successor to AWS Single Sign-On) - -# Release (2022-08-22) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.19.5](service/docdb/CHANGELOG.md#v1195-2022-08-22) - * **Documentation**: Update document for volume clone -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.54.0](service/ec2/CHANGELOG.md#v1540-2022-08-22) - * **Feature**: R6a instances are powered by 3rd generation AMD EPYC (Milan) processors delivering all-core turbo frequency of 3.6 GHz. C6id, M6id, and R6id instances are powered by 3rd generation Intel Xeon Scalable processor (Ice Lake) delivering all-core turbo frequency of 3.5 GHz. -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.23.0](service/forecast/CHANGELOG.md#v1230-2022-08-22) - * **Feature**: releasing What-If Analysis APIs and update ARN regex pattern to be more strict in accordance with security recommendation -* `github.com/aws/aws-sdk-go-v2/service/forecastquery`: [v1.12.0](service/forecastquery/CHANGELOG.md#v1120-2022-08-22) - * **Feature**: releasing What-If Analysis APIs -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.24.0](service/iotsitewise/CHANGELOG.md#v1240-2022-08-22) - * **Feature**: Enable non-unique asset names under different hierarchies -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.23.0](service/lexmodelsv2/CHANGELOG.md#v1230-2022-08-22) - * **Feature**: This release introduces a new feature to stop a running BotRecommendation Job for Automated Chatbot Designer. -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.23.0](service/securityhub/CHANGELOG.md#v1230-2022-08-22) - * **Feature**: Added new resource details objects to ASFF, including resources for AwsBackupBackupVault, AwsBackupBackupPlan and AwsBackupRecoveryPoint. Added FixAvailable, FixedInVersion and Remediation to Vulnerability. -* `github.com/aws/aws-sdk-go-v2/service/supportapp`: [v1.0.0](service/supportapp/CHANGELOG.md#v100-2022-08-22) - * **Release**: New AWS service client module - * **Feature**: This is the initial SDK release for the AWS Support App in Slack. - -# Release (2022-08-19) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.28.0](service/connect/CHANGELOG.md#v1280-2022-08-19) - * **Feature**: This release adds SearchSecurityProfiles API which can be used to search for Security Profile resources within a Connect Instance. -* `github.com/aws/aws-sdk-go-v2/service/ivschat`: [v1.0.12](service/ivschat/CHANGELOG.md#v1012-2022-08-19) - * **Documentation**: Documentation Change for IVS Chat API Reference - Doc-only update to change text/description for tags field. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.33.0](service/kendra/CHANGELOG.md#v1330-2022-08-19) - * **Feature**: This release adds support for a new authentication type - Personal Access Token (PAT) for confluence server. -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.17.0](service/lookoutmetrics/CHANGELOG.md#v1170-2022-08-19) - * **Feature**: This release is to make GetDataQualityMetrics API publicly available. - -# Release (2022-08-18) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines`: [v1.1.0](service/chimesdkmediapipelines/CHANGELOG.md#v110-2022-08-18) - * **Feature**: The Amazon Chime SDK now supports live streaming of real-time video from the Amazon Chime SDK sessions to streaming platforms such as Amazon IVS and Amazon Elemental MediaLive. We have also added support for concatenation to create a single media capture file. -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.21.0](service/cloudwatch/CHANGELOG.md#v1210-2022-08-18) - * **Feature**: Add support for managed Contributor Insights Rules -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.18.4](service/cognitoidentityprovider/CHANGELOG.md#v1184-2022-08-18) - * **Documentation**: This change is being made simply to fix the public documentation based on the models. We have included the PasswordChange and ResendCode events, along with the Pass, Fail and InProgress status. We have removed the Success and Failure status which are never returned by our APIs. -* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.16.0](service/dynamodb/CHANGELOG.md#v1160-2022-08-18) - * **Feature**: This release adds support for importing data from S3 into a new DynamoDB table -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.53.0](service/ec2/CHANGELOG.md#v1530-2022-08-18) - * **Feature**: This release adds support for VPN log options , a new feature allowing S2S VPN connections to send IKE activity logs to CloudWatch Logs -* `github.com/aws/aws-sdk-go-v2/service/networkmanager`: [v1.15.0](service/networkmanager/CHANGELOG.md#v1150-2022-08-18) - * **Feature**: Add TransitGatewayPeeringAttachmentId property to TransitGatewayPeering Model - -# Release (2022-08-17) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/appmesh`: [v1.15.0](service/appmesh/CHANGELOG.md#v1150-2022-08-17) - * **Feature**: AWS App Mesh release to support Multiple Listener and Access Log Format feature -* `github.com/aws/aws-sdk-go-v2/service/connectcampaigns`: [v1.1.0](service/connectcampaigns/CHANGELOG.md#v110-2022-08-17) - * **Feature**: Updated exceptions for Amazon Connect Outbound Campaign api's. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.32.0](service/kendra/CHANGELOG.md#v1320-2022-08-17) - * **Feature**: This release adds Zendesk connector (which allows you to specify Zendesk SAAS platform as data source), Proxy Support for Sharepoint and Confluence Server (which allows you to specify the proxy configuration if proxy is required to connect to your Sharepoint/Confluence Server as data source). -* `github.com/aws/aws-sdk-go-v2/service/lakeformation`: [v1.17.0](service/lakeformation/CHANGELOG.md#v1170-2022-08-17) - * **Feature**: This release adds a new API support "AssumeDecoratedRoleWithSAML" and also release updates the corresponding documentation. -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.24.0](service/lambda/CHANGELOG.md#v1240-2022-08-17) - * **Feature**: Added support for customization of Consumer Group ID for MSK and Kafka Event Source Mappings. -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.22.0](service/lexmodelsv2/CHANGELOG.md#v1220-2022-08-17) - * **Feature**: This release introduces support for enhanced conversation design with the ability to define custom conversation flows with conditional branching and new bot responses. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.24.0](service/rds/CHANGELOG.md#v1240-2022-08-17) - * **Feature**: Adds support for Internet Protocol Version 6 (IPv6) for RDS Aurora database clusters. -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.15.18](service/secretsmanager/CHANGELOG.md#v11518-2022-08-17) - * **Documentation**: Documentation updates for Secrets Manager. - -# Release (2022-08-16) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.20.0](service/rekognition/CHANGELOG.md#v1200-2022-08-16) - * **Feature**: This release adds APIs which support copying an Amazon Rekognition Custom Labels model and managing project policies across AWS account. -* `github.com/aws/aws-sdk-go-v2/service/servicecatalog`: [v1.14.12](service/servicecatalog/CHANGELOG.md#v11412-2022-08-16) - * **Documentation**: Documentation updates for Service Catalog - -# Release (2022-08-15) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cloudfront`: [v1.19.0](service/cloudfront/CHANGELOG.md#v1190-2022-08-15) - * **Feature**: Adds Http 3 support to distributions -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.14.13](service/identitystore/CHANGELOG.md#v11413-2022-08-15) - * **Documentation**: Documentation updates to reflect service rename - AWS IAM Identity Center (successor to AWS Single Sign-On) -* `github.com/aws/aws-sdk-go-v2/service/sso`: [v1.11.17](service/sso/CHANGELOG.md#v11117-2022-08-15) - * **Documentation**: Documentation updates to reflect service rename - AWS IAM Identity Center (successor to AWS Single Sign-On) -* `github.com/aws/aws-sdk-go-v2/service/wisdom`: [v1.9.0](service/wisdom/CHANGELOG.md#v190-2022-08-15) - * **Feature**: This release introduces a new API PutFeedback that allows submitting feedback to Wisdom on content relevance. - -# Release (2022-08-14) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/config`: [v1.17.0](config/CHANGELOG.md#v1170-2022-08-14) - * **Feature**: Add alternative mechanism for determning the users `$HOME` or `%USERPROFILE%` location when the environment variables are not present. -* `github.com/aws/aws-sdk-go-v2/service/amp`: [v1.15.0](service/amp/CHANGELOG.md#v1150-2022-08-14) - * **Feature**: This release adds log APIs that allow customers to manage logging for their Amazon Managed Service for Prometheus workspaces. -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmessaging`: [v1.11.0](service/chimesdkmessaging/CHANGELOG.md#v1110-2022-08-14) - * **Feature**: The Amazon Chime SDK now supports channels with up to one million participants with elastic channels. -* `github.com/aws/aws-sdk-go-v2/service/ivs`: [v1.17.0](service/ivs/CHANGELOG.md#v1170-2022-08-14) - * **Feature**: Updates various list api MaxResults ranges -* `github.com/aws/aws-sdk-go-v2/service/personalizeruntime`: [v1.12.0](service/personalizeruntime/CHANGELOG.md#v1120-2022-08-14) - * **Feature**: This release provides support for promotions in AWS Personalize runtime. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.23.6](service/rds/CHANGELOG.md#v1236-2022-08-14) - * **Documentation**: Adds support for RDS Custom to DBInstanceClass in ModifyDBInstance - -# Release (2022-08-11) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/backupstorage`: [v1.0.0](service/backupstorage/CHANGELOG.md#v100-2022-08-11) - * **Release**: New AWS service client module - * **Feature**: This is the first public release of AWS Backup Storage. We are exposing some previously-internal APIs for use by external services. These APIs are not meant to be used directly by customers. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.30.0](service/glue/CHANGELOG.md#v1300-2022-08-11) - * **Feature**: Add support for Python 3.9 AWS Glue Python Shell jobs -* `github.com/aws/aws-sdk-go-v2/service/privatenetworks`: [v1.0.0](service/privatenetworks/CHANGELOG.md#v100-2022-08-11) - * **Release**: New AWS service client module - * **Feature**: This is the initial SDK release for AWS Private 5G. AWS Private 5G is a managed service that makes it easy to deploy, operate, and scale your own private mobile network at your on-premises location. - -# Release (2022-08-10) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/config`: [v1.16.0](config/CHANGELOG.md#v1160-2022-08-10) - * **Feature**: Adds support for the following settings in the `~/.aws/credentials` file: `sso_account_id`, `sso_region`, `sso_role_name`, `sso_start_url`, and `ca_bundle`. -* `github.com/aws/aws-sdk-go-v2/service/dlm`: [v1.12.0](service/dlm/CHANGELOG.md#v1120-2022-08-10) - * **Feature**: This release adds support for excluding specific data (non-boot) volumes from multi-volume snapshot sets created by snapshot lifecycle policies -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.52.0](service/ec2/CHANGELOG.md#v1520-2022-08-10) - * **Feature**: This release adds support for excluding specific data (non-root) volumes from multi-volume snapshot sets created from instances. - -# Release (2022-08-09) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.20.0](service/cloudwatch/CHANGELOG.md#v1200-2022-08-09) - * **Feature**: Various quota increases related to dimensions and custom metrics -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.18.0](service/location/CHANGELOG.md#v1180-2022-08-09) - * **Feature**: Amazon Location Service now allows circular geofences in BatchPutGeofence, PutGeofence, and GetGeofence APIs. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.39.0](service/sagemaker/CHANGELOG.md#v1390-2022-08-09) - * **Feature**: Amazon SageMaker Automatic Model Tuning now supports specifying multiple alternate EC2 instance types to make tuning jobs more robust when the preferred instance type is not available due to insufficient capacity. -* `github.com/aws/aws-sdk-go-v2/service/sagemakera2iruntime`: [v1.13.0](service/sagemakera2iruntime/CHANGELOG.md#v1130-2022-08-09) - * **Feature**: Fix bug with parsing ISO-8601 CreationTime in Java SDK in DescribeHumanLoop - -# Release (2022-08-08) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.16.9 - * **Bug Fix**: aws/signer/v4: Fixes a panic in SDK's handling of endpoint URLs with ports by correcting how URL path is parsed from opaque URLs. Fixes [#1294](https://github.com/aws/aws-sdk-go-v2/issues/1294). -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.29.0](service/glue/CHANGELOG.md#v1290-2022-08-08) - * **Feature**: Add an option to run non-urgent or non-time sensitive Glue Jobs on spare capacity -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.14.10](service/identitystore/CHANGELOG.md#v11410-2022-08-08) - * **Documentation**: Documentation updates to reflect service rename - AWS IAM Identity Center (successor to AWS Single Sign-On) -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.21.0](service/iotwireless/CHANGELOG.md#v1210-2022-08-08) - * **Feature**: AWS IoT Wireless release support for sidewalk data reliability. -* `github.com/aws/aws-sdk-go-v2/service/pinpoint`: [v1.17.0](service/pinpoint/CHANGELOG.md#v1170-2022-08-08) - * **Feature**: Adds support for Advance Quiet Time in Journeys. Adds RefreshOnSegmentUpdate and WaitForQuietTime to JourneyResponse. -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.23.2](service/quicksight/CHANGELOG.md#v1232-2022-08-08) - * **Documentation**: A series of documentation updates to the QuickSight API reference. -* `github.com/aws/aws-sdk-go-v2/service/sso`: [v1.11.14](service/sso/CHANGELOG.md#v11114-2022-08-08) - * **Documentation**: Documentation updates to reflect service rename - AWS IAM Identity Center (successor to AWS Single Sign-On) -* `github.com/aws/aws-sdk-go-v2/service/ssoadmin`: [v1.15.2](service/ssoadmin/CHANGELOG.md#v1152-2022-08-08) - * **Documentation**: Documentation updates to reflect service rename - AWS IAM Identity Center (successor to AWS Single Sign-On) -* `github.com/aws/aws-sdk-go-v2/service/ssooidc`: [v1.12.12](service/ssooidc/CHANGELOG.md#v11212-2022-08-08) - * **Documentation**: Documentation updates to reflect service rename - AWS IAM Identity Center (successor to AWS Single Sign-On) - -# Release (2022-08-04) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.13.0](service/chimesdkmeetings/CHANGELOG.md#v1130-2022-08-04) - * **Feature**: Adds support for Tags on Amazon Chime SDK WebRTC sessions -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.24.0](service/configservice/CHANGELOG.md#v1240-2022-08-04) - * **Feature**: Add resourceType enums for Athena, GlobalAccelerator, Detective and EC2 types -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.21.3](service/databasemigrationservice/CHANGELOG.md#v1213-2022-08-04) - * **Documentation**: Documentation updates for Database Migration Service (DMS). -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.28.0](service/iot/CHANGELOG.md#v1280-2022-08-04) - * **Feature**: The release is to support attach a provisioning template to CACert for JITP function, Customer now doesn't have to hardcode a roleArn and templateBody during register a CACert to enable JITP. - -# Release (2022-08-03) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.18.0](service/cognitoidentityprovider/CHANGELOG.md#v1180-2022-08-03) - * **Feature**: Add a new exception type, ForbiddenException, that is returned when request is not allowed -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.22.0](service/wafv2/CHANGELOG.md#v1220-2022-08-03) - * **Feature**: You can now associate an AWS WAF web ACL with an Amazon Cognito user pool. - -# Release (2022-08-02) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/licensemanagerusersubscriptions`: [v1.0.0](service/licensemanagerusersubscriptions/CHANGELOG.md#v100-2022-08-02) - * **Release**: New AWS service client module - * **Feature**: This release supports user based subscription for Microsoft Visual Studio Professional and Enterprise on EC2. -* `github.com/aws/aws-sdk-go-v2/service/personalize`: [v1.21.0](service/personalize/CHANGELOG.md#v1210-2022-08-02) - * **Feature**: This release adds support for incremental bulk ingestion for the Personalize CreateDatasetImportJob API. - -# Release (2022-08-01) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.23.1](service/configservice/CHANGELOG.md#v1231-2022-08-01) - * **Documentation**: Documentation update for PutConfigRule and PutOrganizationConfigRule -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.22.0](service/workspaces/CHANGELOG.md#v1220-2022-08-01) - * **Feature**: This release introduces ModifySamlProperties, a new API that allows control of SAML properties associated with a WorkSpaces directory. The DescribeWorkspaceDirectories API will now additionally return SAML properties in its responses. - -# Release (2022-07-29) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.51.0](service/ec2/CHANGELOG.md#v1510-2022-07-29) - * **Feature**: Documentation updates for Amazon EC2. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.24.4](service/fsx/CHANGELOG.md#v1244-2022-07-29) - * **Documentation**: Documentation updates for Amazon FSx -* `github.com/aws/aws-sdk-go-v2/service/shield`: [v1.17.0](service/shield/CHANGELOG.md#v1170-2022-07-29) - * **Feature**: AWS Shield Advanced now supports filtering for ListProtections and ListProtectionGroups. - -# Release (2022-07-28) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.50.1](service/ec2/CHANGELOG.md#v1501-2022-07-28) - * **Documentation**: Documentation updates for VM Import/Export. -* `github.com/aws/aws-sdk-go-v2/service/elasticsearchservice`: [v1.16.0](service/elasticsearchservice/CHANGELOG.md#v1160-2022-07-28) - * **Feature**: This release adds support for gp3 EBS (Elastic Block Store) storage. -* `github.com/aws/aws-sdk-go-v2/service/lookoutvision`: [v1.14.0](service/lookoutvision/CHANGELOG.md#v1140-2022-07-28) - * **Feature**: This release introduces support for image segmentation models and updates CPU accelerator options for models hosted on edge devices. -* `github.com/aws/aws-sdk-go-v2/service/opensearch`: [v1.10.0](service/opensearch/CHANGELOG.md#v1100-2022-07-28) - * **Feature**: This release adds support for gp3 EBS (Elastic Block Store) storage. - -# Release (2022-07-27) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.20.0](service/auditmanager/CHANGELOG.md#v1200-2022-07-27) - * **Feature**: This release adds an exceeded quota exception to several APIs. We added a ServiceQuotaExceededException for the following operations: CreateAssessment, CreateControl, CreateAssessmentFramework, and UpdateAssessmentStatus. -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.21.0](service/chime/CHANGELOG.md#v1210-2022-07-27) - * **Feature**: Chime VoiceConnector will now support ValidateE911Address which will allow customers to prevalidate their addresses included in their SIP invites for emergency calling -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.23.0](service/configservice/CHANGELOG.md#v1230-2022-07-27) - * **Feature**: This release adds ListConformancePackComplianceScores API to support the new compliance score feature, which provides a percentage of the number of compliant rule-resource combinations in a conformance pack compared to the number of total possible rule-resource combinations in the conformance pack. -* `github.com/aws/aws-sdk-go-v2/service/globalaccelerator`: [v1.14.0](service/globalaccelerator/CHANGELOG.md#v1140-2022-07-27) - * **Feature**: Global Accelerator now supports dual-stack accelerators, enabling support for IPv4 and IPv6 traffic. -* `github.com/aws/aws-sdk-go-v2/service/marketplacecatalog`: [v1.13.0](service/marketplacecatalog/CHANGELOG.md#v1130-2022-07-27) - * **Feature**: The SDK for the StartChangeSet API will now automatically set and use an idempotency token in the ClientRequestToken request parameter if the customer does not provide it. -* `github.com/aws/aws-sdk-go-v2/service/polly`: [v1.17.0](service/polly/CHANGELOG.md#v1170-2022-07-27) - * **Feature**: Amazon Polly adds new English and Hindi voice - Kajal. Kajal is available as Neural voice only. -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.27.5](service/ssm/CHANGELOG.md#v1275-2022-07-27) - * **Documentation**: Adding doc updates for OpsCenter support in Service Setting actions. -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.21.0](service/workspaces/CHANGELOG.md#v1210-2022-07-27) - * **Feature**: Added CreateWorkspaceImage API to create a new WorkSpace image from an existing WorkSpace. - -# Release (2022-07-26) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/appsync`: [v1.15.0](service/appsync/CHANGELOG.md#v1150-2022-07-26) - * **Feature**: Adds support for a new API to evaluate mapping templates with mock data, allowing you to remotely unit test your AppSync resolvers and functions. -* `github.com/aws/aws-sdk-go-v2/service/detective`: [v1.16.0](service/detective/CHANGELOG.md#v1160-2022-07-26) - * **Feature**: Added the ability to get data source package information for the behavior graph. Graph administrators can now start (or stop) optional datasources on the behavior graph. -* `github.com/aws/aws-sdk-go-v2/service/guardduty`: [v1.15.0](service/guardduty/CHANGELOG.md#v1150-2022-07-26) - * **Feature**: Amazon GuardDuty introduces a new Malware Protection feature that triggers malware scan on selected EC2 instance resources, after the service detects a potentially malicious activity. -* `github.com/aws/aws-sdk-go-v2/service/lookoutvision`: [v1.13.0](service/lookoutvision/CHANGELOG.md#v1130-2022-07-26) - * **Feature**: This release introduces support for the automatic scaling of inference units used by Amazon Lookout for Vision models. -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.22.0](service/macie2/CHANGELOG.md#v1220-2022-07-26) - * **Feature**: This release adds support for retrieving (revealing) sample occurrences of sensitive data that Amazon Macie detects and reports in findings. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.23.1](service/rds/CHANGELOG.md#v1231-2022-07-26) - * **Documentation**: Adds support for using RDS Proxies with RDS for MariaDB databases. -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.19.0](service/rekognition/CHANGELOG.md#v1190-2022-07-26) - * **Feature**: This release introduces support for the automatic scaling of inference units used by Amazon Rekognition Custom Labels models. -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.22.3](service/securityhub/CHANGELOG.md#v1223-2022-07-26) - * **Documentation**: Documentation updates for AWS Security Hub -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.21.0](service/transfer/CHANGELOG.md#v1210-2022-07-26) - * **Feature**: AWS Transfer Family now supports Applicability Statement 2 (AS2), a network protocol used for the secure and reliable transfer of critical Business-to-Business (B2B) data over the public internet using HTTP/HTTPS as the transport mechanism. - -# Release (2022-07-25) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.23.6](service/autoscaling/CHANGELOG.md#v1236-2022-07-25) - * **Documentation**: Documentation update for Amazon EC2 Auto Scaling. - -# Release (2022-07-22) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/account`: [v1.7.0](service/account/CHANGELOG.md#v170-2022-07-22) - * **Feature**: This release enables customers to manage the primary contact information for their AWS accounts. For more information, see https://docs.aws.amazon.com/accounts/latest/reference/API_Operations.html -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.50.0](service/ec2/CHANGELOG.md#v1500-2022-07-22) - * **Feature**: Added support for EC2 M1 Mac instances. For more information, please visit aws.amazon.com/mac. -* `github.com/aws/aws-sdk-go-v2/service/iotdeviceadvisor`: [v1.15.0](service/iotdeviceadvisor/CHANGELOG.md#v1150-2022-07-22) - * **Feature**: Added new service feature (Early access only) - Long Duration Test, where customers can test the IoT device to observe how it behaves when the device is in operation for longer period. -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.22.0](service/medialive/CHANGELOG.md#v1220-2022-07-22) - * **Feature**: Link devices now support remote rebooting. Link devices now support maintenance windows. Maintenance windows allow a Link device to install software updates without stopping the MediaLive channel. The channel will experience a brief loss of input from the device while updates are installed. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.23.0](service/rds/CHANGELOG.md#v1230-2022-07-22) - * **Feature**: This release adds the "ModifyActivityStream" API with support for audit policy state locking and unlocking. -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.21.0](service/transcribe/CHANGELOG.md#v1210-2022-07-22) - * **Feature**: Remove unsupported language codes for StartTranscriptionJob and update VocabularyFileUri for UpdateMedicalVocabulary - -# Release (2022-07-21) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/athena`: [v1.18.0](service/athena/CHANGELOG.md#v1180-2022-07-21) - * **Feature**: This feature allows customers to retrieve runtime statistics for completed queries -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.19.0](service/cloudwatch/CHANGELOG.md#v1190-2022-07-21) - * **Feature**: Adding support for the suppression of Composite Alarm actions -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.21.1](service/databasemigrationservice/CHANGELOG.md#v1211-2022-07-21) - * **Documentation**: Documentation updates for Database Migration Service (DMS). -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.19.0](service/docdb/CHANGELOG.md#v1190-2022-07-21) - * **Feature**: Enable copy-on-write restore type -* `github.com/aws/aws-sdk-go-v2/service/ec2instanceconnect`: [v1.14.0](service/ec2instanceconnect/CHANGELOG.md#v1140-2022-07-21) - * **Feature**: This release includes a new exception type "EC2InstanceUnavailableException" for SendSSHPublicKey and SendSerialConsoleSSHPublicKey APIs. -* `github.com/aws/aws-sdk-go-v2/service/frauddetector`: [v1.20.0](service/frauddetector/CHANGELOG.md#v1200-2022-07-21) - * **Feature**: The release introduces Account Takeover Insights (ATI) model. The ATI model detects fraud relating to account takeover. This release also adds support for new variable types: ARE_CREDENTIALS_VALID and SESSION_ID and adds new structures to Model Version APIs. -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.23.0](service/iotsitewise/CHANGELOG.md#v1230-2022-07-21) - * **Feature**: Added asynchronous API to ingest bulk historical and current data into IoT SiteWise. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.31.0](service/kendra/CHANGELOG.md#v1310-2022-07-21) - * **Feature**: Amazon Kendra now provides Oauth2 support for SharePoint Online. For more information, see https://docs.aws.amazon.com/kendra/latest/dg/data-source-sharepoint.html -* `github.com/aws/aws-sdk-go-v2/service/networkfirewall`: [v1.18.0](service/networkfirewall/CHANGELOG.md#v1180-2022-07-21) - * **Feature**: Network Firewall now supports referencing dynamic IP sets from stateful rule groups, for IP sets stored in Amazon VPC prefix lists. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.22.1](service/rds/CHANGELOG.md#v1221-2022-07-21) - * **Documentation**: Adds support for creating an RDS Proxy for an RDS for MariaDB database. - -# Release (2022-07-20) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/acmpca`: [v1.17.11](service/acmpca/CHANGELOG.md#v11711-2022-07-20) - * **Documentation**: AWS Certificate Manager (ACM) Private Certificate Authority (PCA) documentation updates -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.27.0](service/iot/CHANGELOG.md#v1270-2022-07-20) - * **Feature**: GA release the ability to enable/disable IoT Fleet Indexing for Device Defender and Named Shadow information, and search them through IoT Fleet Indexing APIs. This includes Named Shadow Selection as a part of the UpdateIndexingConfiguration API. - -# Release (2022-07-19) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/devopsguru`: [v1.18.0](service/devopsguru/CHANGELOG.md#v1180-2022-07-19) - * **Feature**: Added new APIs for log anomaly detection feature. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.28.1](service/glue/CHANGELOG.md#v1281-2022-07-19) - * **Documentation**: Documentation updates for AWS Glue Job Timeout and Autoscaling -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.38.0](service/sagemaker/CHANGELOG.md#v1380-2022-07-19) - * **Feature**: Fixed an issue with cross account QueryLineage -* `github.com/aws/aws-sdk-go-v2/service/sagemakeredge`: [v1.12.0](service/sagemakeredge/CHANGELOG.md#v1120-2022-07-19) - * **Feature**: Amazon SageMaker Edge Manager provides lightweight model deployment feature to deploy machine learning models on requested devices. -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.20.0](service/workspaces/CHANGELOG.md#v1200-2022-07-19) - * **Feature**: Increased the character limit of the login message from 850 to 2000 characters. - -# Release (2022-07-18) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/applicationdiscoveryservice`: [v1.14.0](service/applicationdiscoveryservice/CHANGELOG.md#v1140-2022-07-18) - * **Feature**: Add AWS Agentless Collector details to the GetDiscoverySummary API response -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.49.1](service/ec2/CHANGELOG.md#v1491-2022-07-18) - * **Documentation**: Documentation updates for Amazon EC2. -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.22.0](service/elasticache/CHANGELOG.md#v1220-2022-07-18) - * **Feature**: Adding AutoMinorVersionUpgrade in the DescribeReplicationGroups API -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.18.0](service/kms/CHANGELOG.md#v1180-2022-07-18) - * **Feature**: Added support for the SM2 KeySpec in China Partition Regions -* `github.com/aws/aws-sdk-go-v2/service/mediapackage`: [v1.17.0](service/mediapackage/CHANGELOG.md#v1170-2022-07-18) - * **Feature**: This release adds "IncludeIframeOnlyStream" for Dash endpoints and increases the number of supported video and audio encryption presets for Speke v2 -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.37.0](service/sagemaker/CHANGELOG.md#v1370-2022-07-18) - * **Feature**: Amazon SageMaker Edge Manager provides lightweight model deployment feature to deploy machine learning models on requested devices. -* `github.com/aws/aws-sdk-go-v2/service/ssoadmin`: [v1.15.0](service/ssoadmin/CHANGELOG.md#v1150-2022-07-18) - * **Feature**: AWS SSO now supports attaching customer managed policies and a permissions boundary to your permission sets. This release adds new API operations to manage and view the customer managed policies and the permissions boundary for a given permission set. - -# Release (2022-07-15) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.18.3](service/datasync/CHANGELOG.md#v1183-2022-07-15) - * **Documentation**: Documentation updates for AWS DataSync regarding configuring Amazon FSx for ONTAP location security groups and SMB user permissions. -* `github.com/aws/aws-sdk-go-v2/service/drs`: [v1.7.0](service/drs/CHANGELOG.md#v170-2022-07-15) - * **Feature**: Changed existing APIs to allow choosing a dynamic volume type for replicating volumes, to reduce costs for customers. -* `github.com/aws/aws-sdk-go-v2/service/evidently`: [v1.8.0](service/evidently/CHANGELOG.md#v180-2022-07-15) - * **Feature**: This release adds support for the new segmentation feature. -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.21.0](service/wafv2/CHANGELOG.md#v1210-2022-07-15) - * **Feature**: This SDK release provide customers ability to add sensitivity level for WAF SQLI Match Statements. - -# Release (2022-07-14) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/athena`: [v1.17.0](service/athena/CHANGELOG.md#v1170-2022-07-14) - * **Feature**: This release updates data types that contain either QueryExecutionId, NamedQueryId or ExpectedBucketOwner. Ids must be between 1 and 128 characters and contain only non-whitespace characters. ExpectedBucketOwner must be 12-digit string. -* `github.com/aws/aws-sdk-go-v2/service/codeartifact`: [v1.13.0](service/codeartifact/CHANGELOG.md#v1130-2022-07-14) - * **Feature**: This release introduces Package Origin Controls, a mechanism used to counteract Dependency Confusion attacks. Adds two new APIs, PutPackageOriginConfiguration and DescribePackage, and updates the ListPackage, DescribePackageVersion and ListPackageVersion APIs in support of the feature. -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.22.0](service/configservice/CHANGELOG.md#v1220-2022-07-14) - * **Feature**: Update ResourceType enum with values for Route53Resolver, Batch, DMS, Workspaces, Stepfunctions, SageMaker, ElasticLoadBalancingV2, MSK types -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.49.0](service/ec2/CHANGELOG.md#v1490-2022-07-14) - * **Feature**: This release adds flow logs for Transit Gateway to allow customers to gain deeper visibility and insights into network traffic through their Transit Gateways. -* `github.com/aws/aws-sdk-go-v2/service/fms`: [v1.18.0](service/fms/CHANGELOG.md#v1180-2022-07-14) - * **Feature**: Adds support for strict ordering in stateful rule groups in Network Firewall policies. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.28.0](service/glue/CHANGELOG.md#v1280-2022-07-14) - * **Feature**: This release adds an additional worker type for Glue Streaming jobs. -* `github.com/aws/aws-sdk-go-v2/service/inspector2`: [v1.7.0](service/inspector2/CHANGELOG.md#v170-2022-07-14) - * **Feature**: This release adds support for Inspector V2 scan configurations through the get and update configuration APIs. Currently this allows configuring ECR automated re-scan duration to lifetime or 180 days or 30 days. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.30.0](service/kendra/CHANGELOG.md#v1300-2022-07-14) - * **Feature**: This release adds AccessControlConfigurations which allow you to redefine your document level access control without the need for content re-indexing. -* `github.com/aws/aws-sdk-go-v2/service/nimble`: [v1.13.0](service/nimble/CHANGELOG.md#v1130-2022-07-14) - * **Feature**: Amazon Nimble Studio adds support for IAM-based access to AWS resources for Nimble Studio components and custom studio components. Studio Component scripts use these roles on Nimble Studio workstation to mount filesystems, access S3 buckets, or other configured resources in the Studio's AWS account -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.22.0](service/outposts/CHANGELOG.md#v1220-2022-07-14) - * **Feature**: This release adds the ShipmentInformation and AssetInformationList fields to the GetOrder API response. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.36.0](service/sagemaker/CHANGELOG.md#v1360-2022-07-14) - * **Feature**: This release adds support for G5, P4d, and C6i instance types in Amazon SageMaker Inference and increases the number of hyperparameters that can be searched from 20 to 30 in Amazon SageMaker Automatic Model Tuning - -# Release (2022-07-13) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/appconfig`: [v1.13.0](service/appconfig/CHANGELOG.md#v1130-2022-07-13) - * **Feature**: Adding Create, Get, Update, Delete, and List APIs for new two new resources: Extensions and ExtensionAssociations. - -# Release (2022-07-12) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/networkmanager`: [v1.14.0](service/networkmanager/CHANGELOG.md#v1140-2022-07-12) - * **Feature**: This release adds general availability API support for AWS Cloud WAN. - -# Release (2022-07-11) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.48.0](service/ec2/CHANGELOG.md#v1480-2022-07-11) - * **Feature**: Build, manage, and monitor a unified global network that connects resources running across your cloud and on-premises environments using the AWS Cloud WAN APIs. -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.26.0](service/redshift/CHANGELOG.md#v1260-2022-07-11) - * **Feature**: This release adds a new --snapshot-arn field for describe-cluster-snapshots, describe-node-configuration-options, restore-from-cluster-snapshot, authorize-snapshot-acsess, and revoke-snapshot-acsess APIs. It allows customers to give a Redshift snapshot ARN or a Redshift Serverless ARN as input. -* `github.com/aws/aws-sdk-go-v2/service/redshiftserverless`: [v1.2.2](service/redshiftserverless/CHANGELOG.md#v122-2022-07-11) - * **Documentation**: Removed prerelease language for GA launch. - -# Release (2022-07-08) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/backup`: [v1.17.0](service/backup/CHANGELOG.md#v1170-2022-07-08) - * **Feature**: This release adds support for authentication using IAM user identity instead of passed IAM role, identified by excluding the IamRoleArn field in the StartRestoreJob API. This feature applies to only resource clients with a destructive restore nature (e.g. SAP HANA). - -# Release (2022-07-07) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.12.0](service/chimesdkmeetings/CHANGELOG.md#v1120-2022-07-07) - * **Feature**: Adds support for AppKeys and TenantIds in Amazon Chime SDK WebRTC sessions -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.21.0](service/databasemigrationservice/CHANGELOG.md#v1210-2022-07-07) - * **Feature**: New api to migrate event subscriptions to event bridge rules -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.26.0](service/iot/CHANGELOG.md#v1260-2022-07-07) - * **Feature**: This release adds support to register a CA certificate without having to provide a verification certificate. This also allows multiple AWS accounts to register the same CA in the same region. -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.20.0](service/iotwireless/CHANGELOG.md#v1200-2022-07-07) - * **Feature**: Adds 5 APIs: PutPositionConfiguration, GetPositionConfiguration, ListPositionConfigurations, UpdatePosition, GetPosition for the new Positioning Service feature which enables customers to configure solvers to calculate position of LoRaWAN devices, or specify position of LoRaWAN devices & gateways. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.35.0](service/sagemaker/CHANGELOG.md#v1350-2022-07-07) - * **Feature**: Heterogeneous clusters: the ability to launch training jobs with multiple instance types. This enables running component of the training job on the instance type that is most suitable for it. e.g. doing data processing and augmentation on CPU instances and neural network training on GPU instances - -# Release (2022-07-06) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.22.0](service/cloudformation/CHANGELOG.md#v1220-2022-07-06) - * **Feature**: My AWS Service (placeholder) - Add a new feature Account-level Targeting for StackSet operation -* `github.com/aws/aws-sdk-go-v2/service/synthetics`: [v1.16.0](service/synthetics/CHANGELOG.md#v1160-2022-07-06) - * **Feature**: This release introduces Group feature, which enables users to group cross-region canaries. - -# Release (2022-07-05) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.21.5](service/configservice/CHANGELOG.md#v1215-2022-07-05) - * **Documentation**: Updating documentation service limits -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.21.0](service/lexmodelsv2/CHANGELOG.md#v1210-2022-07-05) - * **Feature**: This release introduces additional optional parameters "messageSelectionStrategy" to PromptSpecification, which enables the users to configure the bot to play messages in orderly manner. -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.23.0](service/quicksight/CHANGELOG.md#v1230-2022-07-05) - * **Feature**: This release allows customers to programmatically create QuickSight accounts with Enterprise and Enterprise + Q editions. It also releases allowlisting domains for embedding QuickSight dashboards at runtime through the embedding APIs. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.22.0](service/rds/CHANGELOG.md#v1220-2022-07-05) - * **Feature**: Adds waiters support for DBCluster. -* `github.com/aws/aws-sdk-go-v2/service/rolesanywhere`: [v1.0.0](service/rolesanywhere/CHANGELOG.md#v100-2022-07-05) - * **Release**: New AWS service client module - * **Feature**: IAM Roles Anywhere allows your workloads such as servers, containers, and applications to obtain temporary AWS credentials and use the same IAM roles and policies that you have configured for your AWS workloads to access AWS resources. -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.19.0](service/sqs/CHANGELOG.md#v1190-2022-07-05) - * **Feature**: Adds support for the SQS client to automatically validate message checksums for SendMessage, SendMessageBatch, and ReceiveMessage. A DisableMessageChecksumValidation parameter has been added to the Options struct for SQS package. Setting this to true will disable the checksum validation. This can be set when creating a client, or per operation call. -* `github.com/aws/aws-sdk-go-v2/service/ssmincidents`: [v1.15.0](service/ssmincidents/CHANGELOG.md#v1150-2022-07-05) - * **Feature**: Adds support for tagging incident-record on creation by providing incident tags in the template within a response-plan. - -# Release (2022-07-01) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.20.0](service/databasemigrationservice/CHANGELOG.md#v1200-2022-07-01) - * **Feature**: Added new features for AWS DMS version 3.4.7 that includes new endpoint settings for S3, OpenSearch, Postgres, SQLServer and Oracle. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.21.5](service/rds/CHANGELOG.md#v1215-2022-07-01) - * **Documentation**: Adds support for additional retention periods to Performance Insights. -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.27.0](service/s3/CHANGELOG.md#v1270-2022-07-01) - * **Feature**: Add presign support for HeadBucket, DeleteObject, and DeleteBucket. Fixes [#1076](https://github.com/aws/aws-sdk-go-v2/issues/1076). - -# Release (2022-06-30) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/athena`: [v1.16.0](service/athena/CHANGELOG.md#v1160-2022-06-30) - * **Feature**: This feature introduces the API support for Athena's parameterized query and BatchGetPreparedStatement API. -* `github.com/aws/aws-sdk-go-v2/service/customerprofiles`: [v1.18.0](service/customerprofiles/CHANGELOG.md#v1180-2022-06-30) - * **Feature**: This release adds the optional MinAllowedConfidenceScoreForMerging parameter to the CreateDomain, UpdateDomain, and GetAutoMergingPreview APIs in Customer Profiles. This parameter is used as a threshold to influence the profile auto-merging step of the Identity Resolution process. -* `github.com/aws/aws-sdk-go-v2/service/emr`: [v1.20.0](service/emr/CHANGELOG.md#v1200-2022-06-30) - * **Feature**: This release adds support for the ExecutionRoleArn parameter in the AddJobFlowSteps and DescribeStep APIs. Customers can use ExecutionRoleArn to specify the IAM role used for each job they submit using the AddJobFlowSteps API. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.27.0](service/glue/CHANGELOG.md#v1270-2022-06-30) - * **Feature**: This release adds tag as an input of CreateDatabase -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.29.0](service/kendra/CHANGELOG.md#v1290-2022-06-30) - * **Feature**: Amazon Kendra now provides a data source connector for alfresco -* `github.com/aws/aws-sdk-go-v2/service/mwaa`: [v1.13.0](service/mwaa/CHANGELOG.md#v1130-2022-06-30) - * **Feature**: Documentation updates for Amazon Managed Workflows for Apache Airflow. -* `github.com/aws/aws-sdk-go-v2/service/pricing`: [v1.16.0](service/pricing/CHANGELOG.md#v1160-2022-06-30) - * **Feature**: Documentation update for GetProducts Response. -* `github.com/aws/aws-sdk-go-v2/service/wellarchitected`: [v1.16.0](service/wellarchitected/CHANGELOG.md#v1160-2022-06-30) - * **Feature**: Added support for UpdateGlobalSettings API. Added status filter to ListWorkloadShares and ListLensShares. -* `github.com/aws/aws-sdk-go-v2/service/workmail`: [v1.16.0](service/workmail/CHANGELOG.md#v1160-2022-06-30) - * **Feature**: This release adds support for managing user availability configurations in Amazon WorkMail. - -# Release (2022-06-29) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.16.6 - * **Bug Fix**: Fix aws/signer/v4 to not double sign Content-Length header. Fixes [#1728](https://github.com/aws/aws-sdk-go-v2/issues/1728). Thanks to @matelang for creating the issue and PR. -* `github.com/aws/aws-sdk-go-v2/service/appstream`: [v1.17.0](service/appstream/CHANGELOG.md#v1170-2022-06-29) - * **Feature**: Includes support for StreamingExperienceSettings in CreateStack and UpdateStack APIs -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.18.7](service/elasticloadbalancingv2/CHANGELOG.md#v1187-2022-06-29) - * **Documentation**: This release adds two attributes for ALB. One, helps to preserve the host header and the other helps to modify, preserve, or remove the X-Forwarded-For header in the HTTP request. -* `github.com/aws/aws-sdk-go-v2/service/emr`: [v1.19.0](service/emr/CHANGELOG.md#v1190-2022-06-29) - * **Feature**: This release introduces additional optional parameter "Throughput" to VolumeSpecification to enable user to configure throughput for gp3 ebs volumes. -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.21.0](service/medialive/CHANGELOG.md#v1210-2022-06-29) - * **Feature**: This release adds support for automatic renewal of MediaLive reservations at the end of each reservation term. Automatic renewal is optional. This release also adds support for labelling accessibility-focused audio and caption tracks in HLS outputs. -* `github.com/aws/aws-sdk-go-v2/service/redshiftserverless`: [v1.2.0](service/redshiftserverless/CHANGELOG.md#v120-2022-06-29) - * **Feature**: Add new API operations for Amazon Redshift Serverless, a new way of using Amazon Redshift without needing to manually manage provisioned clusters. The new operations let you interact with Redshift Serverless resources, such as create snapshots, list VPC endpoints, delete resource policies, and more. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.34.0](service/sagemaker/CHANGELOG.md#v1340-2022-06-29) - * **Feature**: This release adds: UpdateFeatureGroup, UpdateFeatureMetadata, DescribeFeatureMetadata APIs; FeatureMetadata type in Search API; LastModifiedTime, LastUpdateStatus, OnlineStoreTotalSizeBytes in DescribeFeatureGroup API. -* `github.com/aws/aws-sdk-go-v2/service/translate`: [v1.14.0](service/translate/CHANGELOG.md#v1140-2022-06-29) - * **Feature**: Added ListLanguages API which can be used to list the languages supported by Translate. - -# Release (2022-06-28) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.18.0](service/datasync/CHANGELOG.md#v1180-2022-06-28) - * **Feature**: AWS DataSync now supports Amazon FSx for NetApp ONTAP locations. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.47.0](service/ec2/CHANGELOG.md#v1470-2022-06-28) - * **Feature**: This release adds a new spread placement group to EC2 Placement Groups: host level spread, which spread instances between physical hosts, available to Outpost customers only. CreatePlacementGroup and DescribePlacementGroups APIs were updated with a new parameter: SpreadLevel to support this feature. -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.12.0](service/finspacedata/CHANGELOG.md#v1120-2022-06-28) - * **Feature**: Release new API GetExternalDataViewAccessDetails -* `github.com/aws/aws-sdk-go-v2/service/polly`: [v1.16.0](service/polly/CHANGELOG.md#v1160-2022-06-28) - * **Feature**: Add 4 new neural voices - Pedro (es-US), Liam (fr-CA), Daniel (de-DE) and Arthur (en-GB). - -# Release (2022-06-24.2) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/emrcontainers`: [v1.13.7](service/emrcontainers/CHANGELOG.md#v1137-2022-06-242) - * **Bug Fix**: Fixes bug with incorrect modeled timestamp format - -# Release (2022-06-23) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/lookoutequipment`: [v1.14.0](service/lookoutequipment/CHANGELOG.md#v1140-2022-06-23) - * **Feature**: This release adds visualizations to the scheduled inference results. Users will be able to see interference results, including diagnostic results from their running inference schedulers. -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.25.1](service/mediaconvert/CHANGELOG.md#v1251-2022-06-23) - * **Documentation**: AWS Elemental MediaConvert SDK has released support for automatic DolbyVision metadata generation when converting HDR10 to DolbyVision. -* `github.com/aws/aws-sdk-go-v2/service/mgn`: [v1.15.0](service/mgn/CHANGELOG.md#v1150-2022-06-23) - * **Feature**: New and modified APIs for the Post-Migration Framework -* `github.com/aws/aws-sdk-go-v2/service/migrationhubrefactorspaces`: [v1.6.0](service/migrationhubrefactorspaces/CHANGELOG.md#v160-2022-06-23) - * **Feature**: This release adds the new API UpdateRoute that allows route to be updated to ACTIVE/INACTIVE state. In addition, CreateRoute API will now allow users to create route in ACTIVE/INACTIVE state. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.33.0](service/sagemaker/CHANGELOG.md#v1330-2022-06-23) - * **Feature**: SageMaker Ground Truth now supports Virtual Private Cloud. Customers can launch labeling jobs and access to their private workforce in VPC mode. - -# Release (2022-06-22) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/apigateway`: [v1.15.8](service/apigateway/CHANGELOG.md#v1158-2022-06-22) - * **Documentation**: Documentation updates for Amazon API Gateway -* `github.com/aws/aws-sdk-go-v2/service/pricing`: [v1.15.0](service/pricing/CHANGELOG.md#v1150-2022-06-22) - * **Feature**: This release introduces 1 update to the GetProducts API. The serviceCode attribute is now required when you use the GetProductsRequest. -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.20.0](service/transfer/CHANGELOG.md#v1200-2022-06-22) - * **Feature**: Until today, the service supported only RSA host keys and user keys. Now with this launch, Transfer Family has expanded the support for ECDSA and ED25519 host keys and user keys, enabling customers to support a broader set of clients by choosing RSA, ECDSA, and ED25519 host and user keys. - -# Release (2022-06-21) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.46.0](service/ec2/CHANGELOG.md#v1460-2022-06-21) - * **Feature**: This release adds support for Private IP VPNs, a new feature allowing S2S VPN connections to use private ip addresses as the tunnel outside ip address over Direct Connect as transport. -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.18.9](service/ecs/CHANGELOG.md#v1189-2022-06-21) - * **Documentation**: Amazon ECS UpdateService now supports the following parameters: PlacementStrategies, PlacementConstraints and CapacityProviderStrategy. -* `github.com/aws/aws-sdk-go-v2/service/wellarchitected`: [v1.15.0](service/wellarchitected/CHANGELOG.md#v1150-2022-06-21) - * **Feature**: Adds support for lens tagging, Adds support for multiple helpful-resource urls and multiple improvement-plan urls. - -# Release (2022-06-20) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/directoryservice`: [v1.14.0](service/directoryservice/CHANGELOG.md#v1140-2022-06-20) - * **Feature**: This release adds support for describing and updating AWS Managed Microsoft AD settings -* `github.com/aws/aws-sdk-go-v2/service/kafka`: [v1.17.7](service/kafka/CHANGELOG.md#v1177-2022-06-20) - * **Documentation**: Documentation updates to use Az Id during cluster creation. -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.21.0](service/outposts/CHANGELOG.md#v1210-2022-06-20) - * **Feature**: This release adds the AssetLocation structure to the ListAssets response. AssetLocation includes the RackElevation for an Asset. - -# Release (2022-06-17) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.27.0](service/connect/CHANGELOG.md#v1270-2022-06-17) - * **Feature**: This release updates these APIs: UpdateInstanceAttribute, DescribeInstanceAttribute and ListInstanceAttributes. You can use it to programmatically enable/disable High volume outbound communications using attribute type HIGH_VOLUME_OUTBOUND on the specified Amazon Connect instance. -* `github.com/aws/aws-sdk-go-v2/service/connectcampaigns`: [v1.0.0](service/connectcampaigns/CHANGELOG.md#v100-2022-06-17) - * **Release**: New AWS service client module - * **Feature**: Added Amazon Connect high volume outbound communications SDK. -* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.15.7](service/dynamodb/CHANGELOG.md#v1157-2022-06-17) - * **Documentation**: Doc only update for DynamoDB service -* `github.com/aws/aws-sdk-go-v2/service/dynamodbstreams`: [v1.13.7](service/dynamodbstreams/CHANGELOG.md#v1137-2022-06-17) - * **Documentation**: Doc only update for DynamoDB service - -# Release (2022-06-16) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/redshiftdata`: [v1.16.0](service/redshiftdata/CHANGELOG.md#v1160-2022-06-16) - * **Feature**: This release adds a new --workgroup-name field to operations that connect to an endpoint. Customers can now execute queries against their serverless workgroups. -* `github.com/aws/aws-sdk-go-v2/service/redshiftserverless`: [v1.1.0](service/redshiftserverless/CHANGELOG.md#v110-2022-06-16) - * **Feature**: Add new API operations for Amazon Redshift Serverless, a new way of using Amazon Redshift without needing to manually manage provisioned clusters. The new operations let you interact with Redshift Serverless resources, such as create snapshots, list VPC endpoints, delete resource policies, and more. -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.15.11](service/secretsmanager/CHANGELOG.md#v11511-2022-06-16) - * **Documentation**: Documentation updates for Secrets Manager -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.22.0](service/securityhub/CHANGELOG.md#v1220-2022-06-16) - * **Feature**: Added Threats field for security findings. Added new resource details for ECS Container, ECS Task, RDS SecurityGroup, Kinesis Stream, EC2 TransitGateway, EFS AccessPoint, CloudFormation Stack, CloudWatch Alarm, VPC Peering Connection and WAF Rules - -# Release (2022-06-15) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.11.0](service/finspacedata/CHANGELOG.md#v1110-2022-06-15) - * **Feature**: This release adds a new set of APIs, GetPermissionGroup, DisassociateUserFromPermissionGroup, AssociateUserToPermissionGroup, ListPermissionGroupsByUser, ListUsersByPermissionGroup. -* `github.com/aws/aws-sdk-go-v2/service/guardduty`: [v1.14.0](service/guardduty/CHANGELOG.md#v1140-2022-06-15) - * **Feature**: Adds finding fields available from GuardDuty Console. Adds FreeTrial related operations. Deprecates the use of various APIs related to Master Accounts and Replace them with Administrator Accounts. -* `github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry`: [v1.13.0](service/servicecatalogappregistry/CHANGELOG.md#v1130-2022-06-15) - * **Feature**: This release adds a new API ListAttributeGroupsForApplication that returns associated attribute groups of an application. In addition, the UpdateApplication and UpdateAttributeGroup APIs will not allow users to update the 'Name' attribute. -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.19.0](service/workspaces/CHANGELOG.md#v1190-2022-06-15) - * **Feature**: Added new field "reason" to OperationNotSupportedException. Receiving this exception in the DeregisterWorkspaceDirectory API will now return a reason giving more context on the failure. - -# Release (2022-06-14) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/budgets`: [v1.13.0](service/budgets/CHANGELOG.md#v1130-2022-06-14) - * **Feature**: Add a budgets ThrottlingException. Update the CostFilters value pattern. -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.16.0](service/lookoutmetrics/CHANGELOG.md#v1160-2022-06-14) - * **Feature**: Adding filters to Alert and adding new UpdateAlert API. -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.25.0](service/mediaconvert/CHANGELOG.md#v1250-2022-06-14) - * **Feature**: AWS Elemental MediaConvert SDK has added support for rules that constrain Automatic-ABR rendition selection when generating ABR package ladders. - -# Release (2022-06-13) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.20.0](service/outposts/CHANGELOG.md#v1200-2022-06-13) - * **Feature**: This release adds API operations AWS uses to install Outpost servers. - -# Release (2022-06-10) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/frauddetector`: [v1.19.7](service/frauddetector/CHANGELOG.md#v1197-2022-06-10) - * **Documentation**: Documentation updates for Amazon Fraud Detector (AWSHawksNest) - -# Release (2022-06-09) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.11.0](service/chimesdkmeetings/CHANGELOG.md#v1110-2022-06-09) - * **Feature**: Adds support for live transcription in AWS GovCloud (US) Regions. - -# Release (2022-06-08) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.19.0](service/databasemigrationservice/CHANGELOG.md#v1190-2022-06-08) - * **Feature**: This release adds DMS Fleet Advisor APIs and exposes functionality for DMS Fleet Advisor. It adds functionality to create and modify fleet advisor instances, and to collect and analyze information about the local data infrastructure. -* `github.com/aws/aws-sdk-go-v2/service/iam`: [v1.18.7](service/iam/CHANGELOG.md#v1187-2022-06-08) - * **Documentation**: Documentation updates for AWS Identity and Access Management (IAM). -* `github.com/aws/aws-sdk-go-v2/service/m2`: [v1.0.0](service/m2/CHANGELOG.md#v100-2022-06-08) - * **Release**: New AWS service client module - * **Feature**: AWS Mainframe Modernization service is a managed mainframe service and set of tools for planning, migrating, modernizing, and running mainframe workloads on AWS -* `github.com/aws/aws-sdk-go-v2/service/neptune`: [v1.17.0](service/neptune/CHANGELOG.md#v1170-2022-06-08) - * **Feature**: This release adds support for Neptune to be configured as a global database, with a primary DB cluster in one region, and up to five secondary DB clusters in other regions. -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.25.0](service/redshift/CHANGELOG.md#v1250-2022-06-08) - * **Feature**: Adds new API GetClusterCredentialsWithIAM to return temporary credentials. -* `github.com/aws/aws-sdk-go-v2/service/redshiftserverless`: [v1.0.0](service/redshiftserverless/CHANGELOG.md#v100-2022-06-08) - * **Release**: New AWS service client module - * **Feature**: Add new API operations for Amazon Redshift Serverless, a new way of using Amazon Redshift without needing to manually manage provisioned clusters. The new operations let you interact with Redshift Serverless resources, such as create snapshots, list VPC endpoints, delete resource policies, and more. - -# Release (2022-06-07) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.19.0](service/auditmanager/CHANGELOG.md#v1190-2022-06-07) - * **Feature**: This release introduces 2 updates to the Audit Manager API. The roleType and roleArn attributes are now required when you use the CreateAssessment or UpdateAssessment operation. We also added a throttling exception to the RegisterAccount API operation. -* `github.com/aws/aws-sdk-go-v2/service/costexplorer`: [v1.19.0](service/costexplorer/CHANGELOG.md#v1190-2022-06-07) - * **Feature**: Added two new APIs to support cost allocation tags operations: ListCostAllocationTags, UpdateCostAllocationTagsStatus. - -# Release (2022-06-06) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmessaging`: [v1.10.0](service/chimesdkmessaging/CHANGELOG.md#v1100-2022-06-06) - * **Feature**: This release adds support for searching channels by members via the SearchChannels API, removes required restrictions for Name and Mode in UpdateChannel API and enhances CreateChannel API by exposing member and moderator list as well as channel id as optional parameters. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.26.0](service/connect/CHANGELOG.md#v1260-2022-06-06) - * **Feature**: This release adds a new API, GetCurrentUserData, which returns real-time details about users' current activity. - -# Release (2022-06-02) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/applicationinsights`: [v1.16.0](service/applicationinsights/CHANGELOG.md#v1160-2022-06-02) - * **Feature**: Provide Account Level onboarding support through CFN/CLI -* `github.com/aws/aws-sdk-go-v2/service/codeartifact`: [v1.12.6](service/codeartifact/CHANGELOG.md#v1126-2022-06-02) - * **Documentation**: Documentation updates for CodeArtifact -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.25.0](service/connect/CHANGELOG.md#v1250-2022-06-02) - * **Feature**: This release adds the following features: 1) New APIs to manage (create, list, update) task template resources, 2) Updates to startTaskContact API to support task templates, and 3) new TransferContact API to programmatically transfer in-progress tasks via a contact flow. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.28.0](service/kendra/CHANGELOG.md#v1280-2022-06-02) - * **Feature**: Amazon Kendra now provides a data source connector for GitHub. For more information, see https://docs.aws.amazon.com/kendra/latest/dg/data-source-github.html -* `github.com/aws/aws-sdk-go-v2/service/proton`: [v1.14.0](service/proton/CHANGELOG.md#v1140-2022-06-02) - * **Feature**: Add new "Components" API to enable users to Create, Delete and Update AWS Proton components. -* `github.com/aws/aws-sdk-go-v2/service/voiceid`: [v1.10.0](service/voiceid/CHANGELOG.md#v1100-2022-06-02) - * **Feature**: Added a new attribute ServerSideEncryptionUpdateDetails to Domain and DomainSummary. - -# Release (2022-06-01) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/backupgateway`: [v1.6.0](service/backupgateway/CHANGELOG.md#v160-2022-06-01) - * **Feature**: Adds GetGateway and UpdateGatewaySoftwareNow API and adds hypervisor name to UpdateHypervisor API -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.10.0](service/chimesdkmeetings/CHANGELOG.md#v1100-2022-06-01) - * **Feature**: Adds support for centrally controlling each participant's ability to send and receive audio, video and screen share within a WebRTC session. Attendee capabilities can be specified when the attendee is created and updated during the session with the new BatchUpdateAttendeeCapabilitiesExcept API. -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.22.0](service/forecast/CHANGELOG.md#v1220-2022-06-01) - * **Feature**: Added Format field to Import and Export APIs in Amazon Forecast. Added TimeSeriesSelector to Create Forecast API. -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.21.0](service/route53/CHANGELOG.md#v1210-2022-06-01) - * **Feature**: Add new APIs to support Route 53 IP Based Routing - -# Release (2022-05-31) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.17.0](service/cognitoidentityprovider/CHANGELOG.md#v1170-2022-05-31) - * **Feature**: Amazon Cognito now supports IP Address propagation for all unauthenticated APIs (e.g. SignUp, ForgotPassword). -* `github.com/aws/aws-sdk-go-v2/service/drs`: [v1.6.0](service/drs/CHANGELOG.md#v160-2022-05-31) - * **Feature**: Changed existing APIs and added new APIs to accommodate using multiple AWS accounts with AWS Elastic Disaster Recovery. -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.22.0](service/iotsitewise/CHANGELOG.md#v1220-2022-05-31) - * **Feature**: This release adds the following new optional field to the IoT SiteWise asset resource: assetDescription. -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.15.0](service/lookoutmetrics/CHANGELOG.md#v1150-2022-05-31) - * **Feature**: Adding backtest mode to detectors using the Cloudwatch data source. -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.20.0](service/transcribe/CHANGELOG.md#v1200-2022-05-31) - * **Feature**: Amazon Transcribe now supports automatic language identification for multi-lingual audio in batch mode. - -# Release (2022-05-27) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.16.0](service/appflow/CHANGELOG.md#v1160-2022-05-27) - * **Feature**: Adding the following features/changes: Parquet output that preserves typing from the source connector, Failed executions threshold before deactivation for scheduled flows, increasing max size of access and refresh token from 2048 to 4096 -* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.17.0](service/datasync/CHANGELOG.md#v1170-2022-05-27) - * **Feature**: AWS DataSync now supports TLS encryption in transit, file system policies and access points for EFS locations. -* `github.com/aws/aws-sdk-go-v2/service/emrserverless`: [v1.1.0](service/emrserverless/CHANGELOG.md#v110-2022-05-27) - * **Feature**: This release adds support for Amazon EMR Serverless, a serverless runtime environment that simplifies running analytics applications using the latest open source frameworks such as Apache Spark and Apache Hive. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.32.0](service/sagemaker/CHANGELOG.md#v1320-2022-05-27) - * **Feature**: Amazon SageMaker Notebook Instances now allows configuration of Instance Metadata Service version and Amazon SageMaker Studio now supports G5 instance types. - -# Release (2022-05-26) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.45.0](service/ec2/CHANGELOG.md#v1450-2022-05-26) - * **Feature**: C7g instances, powered by the latest generation AWS Graviton3 processors, provide the best price performance in Amazon EC2 for compute-intensive workloads. -* `github.com/aws/aws-sdk-go-v2/service/emrserverless`: [v1.0.0](service/emrserverless/CHANGELOG.md#v100-2022-05-26) - * **Release**: New AWS service client module - * **Feature**: This release adds support for Amazon EMR Serverless, a serverless runtime environment that simplifies running analytics applications using the latest open source frameworks such as Apache Spark and Apache Hive. -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.21.0](service/forecast/CHANGELOG.md#v1210-2022-05-26) - * **Feature**: Introduced a new field in Auto Predictor as Time Alignment Boundary. It helps in aligning the timestamps generated during Forecast exports -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.22.0](service/lightsail/CHANGELOG.md#v1220-2022-05-26) - * **Feature**: Amazon Lightsail now supports the ability to configure a Lightsail Container Service to pull images from Amazon ECR private repositories in your account. - -# Release (2022-05-25) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/apigateway`: [v1.15.6](service/apigateway/CHANGELOG.md#v1156-2022-05-25) - * **Documentation**: Documentation updates for Amazon API Gateway -* `github.com/aws/aws-sdk-go-v2/service/apprunner`: [v1.12.3](service/apprunner/CHANGELOG.md#v1123-2022-05-25) - * **Documentation**: Documentation-only update added for CodeConfiguration. -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.21.0](service/cloudformation/CHANGELOG.md#v1210-2022-05-25) - * **Feature**: Add a new parameter statusReason to DescribeStackSetOperation output for additional details -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.24.0](service/fsx/CHANGELOG.md#v1240-2022-05-25) - * **Feature**: This release adds root squash support to FSx for Lustre to restrict root level access from clients by mapping root users to a less-privileged user/group with limited permissions. -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.14.0](service/lookoutmetrics/CHANGELOG.md#v1140-2022-05-25) - * **Feature**: Adding AthenaSourceConfig for MetricSet APIs to support Athena as a data source. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.31.0](service/sagemaker/CHANGELOG.md#v1310-2022-05-25) - * **Feature**: Amazon SageMaker Autopilot adds support for manually selecting features from the input dataset using the CreateAutoMLJob API. -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.15.9](service/secretsmanager/CHANGELOG.md#v1159-2022-05-25) - * **Documentation**: Documentation updates for Secrets Manager -* `github.com/aws/aws-sdk-go-v2/service/voiceid`: [v1.9.0](service/voiceid/CHANGELOG.md#v190-2022-05-25) - * **Feature**: VoiceID will now automatically expire Speakers if they haven't been accessed for Enrollment, Re-enrollment or Successful Auth for three years. The Speaker APIs now return a "LastAccessedAt" time for Speakers, and the EvaluateSession API returns "SPEAKER_EXPIRED" Auth Decision for EXPIRED Speakers. - -# Release (2022-05-24) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.16.0](service/cognitoidentityprovider/CHANGELOG.md#v1160-2022-05-24) - * **Feature**: Amazon Cognito now supports requiring attribute verification (ex. email and phone number) before update. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.44.0](service/ec2/CHANGELOG.md#v1440-2022-05-24) - * **Feature**: Stop Protection feature enables customers to protect their instances from accidental stop actions. -* `github.com/aws/aws-sdk-go-v2/service/ivschat`: [v1.0.4](service/ivschat/CHANGELOG.md#v104-2022-05-24) - * **Documentation**: Doc-only update. For MessageReviewHandler structure, added timeout period in the description of the fallbackResult field -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.24.0](service/mediaconvert/CHANGELOG.md#v1240-2022-05-24) - * **Feature**: AWS Elemental MediaConvert SDK has added support for rules that constrain Automatic-ABR rendition selection when generating ABR package ladders. -* `github.com/aws/aws-sdk-go-v2/service/networkmanager`: [v1.13.0](service/networkmanager/CHANGELOG.md#v1130-2022-05-24) - * **Feature**: This release adds Multi Account API support for a TGW Global Network, to enable and disable AWSServiceAccess with AwsOrganizations for Network Manager service and dependency CloudFormation StackSets service. - -# Release (2022-05-23) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.21.0](service/elasticache/CHANGELOG.md#v1210-2022-05-23) - * **Feature**: Added support for encryption in transit for Memcached clusters. Customers can now launch Memcached cluster with encryption in transit enabled when using Memcached version 1.6.12 or later. -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.20.0](service/forecast/CHANGELOG.md#v1200-2022-05-23) - * **Feature**: New APIs for Monitor that help you understand how your predictors perform over time. -* `github.com/aws/aws-sdk-go-v2/service/personalize`: [v1.20.0](service/personalize/CHANGELOG.md#v1200-2022-05-23) - * **Feature**: Adding modelMetrics as part of DescribeRecommender API response for Personalize. - -# Release (2022-05-20) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs`: [v1.15.7](service/cloudwatchlogs/CHANGELOG.md#v1157-2022-05-20) - * **Documentation**: Doc-only update to publish the new valid values for log retention -* `github.com/aws/aws-sdk-go-v2/service/comprehend`: [v1.18.0](service/comprehend/CHANGELOG.md#v1180-2022-05-20) - * **Feature**: Comprehend releases 14 new entity types for DetectPiiEntities and ContainsPiiEntities APIs. - -# Release (2022-05-19) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/gamesparks`: [v1.1.0](service/gamesparks/CHANGELOG.md#v110-2022-05-19) - * **Feature**: This release adds an optional DeploymentResult field in the responses of GetStageDeploymentIntegrationTests and ListStageDeploymentIntegrationTests APIs. -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.13.0](service/lookoutmetrics/CHANGELOG.md#v1130-2022-05-19) - * **Feature**: In this release we added SnsFormat to SNSConfiguration to support human readable alert. - -# Release (2022-05-18) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/appmesh`: [v1.14.0](service/appmesh/CHANGELOG.md#v1140-2022-05-18) - * **Feature**: This release updates the existing Create and Update APIs for meshes and virtual nodes by adding a new IP preference field. This new IP preference field can be used to control the IP versions being used with the mesh and allows for IPv6 support within App Mesh. -* `github.com/aws/aws-sdk-go-v2/service/batch`: [v1.18.3](service/batch/CHANGELOG.md#v1183-2022-05-18) - * **Documentation**: Documentation updates for AWS Batch. -* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.16.0](service/greengrassv2/CHANGELOG.md#v1160-2022-05-18) - * **Feature**: This release adds the new DeleteDeployment API operation that you can use to delete deployment resources. This release also adds support for discontinued AWS-provided components, so AWS can communicate when a component has any issues that you should consider before you deploy it. -* `github.com/aws/aws-sdk-go-v2/service/ioteventsdata`: [v1.12.0](service/ioteventsdata/CHANGELOG.md#v1120-2022-05-18) - * **Feature**: Introducing new API for deleting detectors: BatchDeleteDetector. -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.22.0](service/quicksight/CHANGELOG.md#v1220-2022-05-18) - * **Feature**: API UpdatePublicSharingSettings enables IAM admins to enable/disable account level setting for public access of dashboards. When enabled, owners/co-owners for dashboards can enable public access on their dashboards. These dashboards can only be accessed through share link or embedding. -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.19.0](service/transfer/CHANGELOG.md#v1190-2022-05-18) - * **Feature**: AWS Transfer Family now supports SetStat server configuration option, which provides the ability to ignore SetStat command issued by file transfer clients, enabling customers to upload files without any errors. - -# Release (2022-05-17) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/internal/ini`: [v1.3.12](internal/ini/CHANGELOG.md#v1312-2022-05-17) - * **Bug Fix**: Removes the fuzz testing files from the module, as they are invalid and not used. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.25.0](service/glue/CHANGELOG.md#v1250-2022-05-17) - * **Feature**: This release adds a new optional parameter called codeGenNodeConfiguration to CRUD job APIs that allows users to manage visual jobs via APIs. The updated CreateJob and UpdateJob will create jobs that can be viewed in Glue Studio as a visual graph. GetJob can be used to get codeGenNodeConfiguration. -* `github.com/aws/aws-sdk-go-v2/service/iotsecuretunneling`: [v1.13.1](service/iotsecuretunneling/CHANGELOG.md#v1131-2022-05-17) - * **Bug Fix**: Fixes iotsecuretunneling and mobile API clients to use the correct name for signing requests, Fixes [#1686](https://github.com/aws/aws-sdk-go-v2/issues/1686). -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.17.2](service/kms/CHANGELOG.md#v1172-2022-05-17) - * **Documentation**: Add HMAC best practice tip, annual rotation of AWS managed keys. -* `github.com/aws/aws-sdk-go-v2/service/mobile`: [v1.11.5](service/mobile/CHANGELOG.md#v1115-2022-05-17) - * **Bug Fix**: Fixes iotsecuretunneling and mobile API clients to use the correct name for signing requests, Fixes [#1686](https://github.com/aws/aws-sdk-go-v2/issues/1686). - -# Release (2022-05-16) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/applicationdiscoveryservice`: [v1.13.0](service/applicationdiscoveryservice/CHANGELOG.md#v1130-2022-05-16) - * **Feature**: Add Migration Evaluator Collector details to the GetDiscoverySummary API response -* `github.com/aws/aws-sdk-go-v2/service/cloudfront`: [v1.18.0](service/cloudfront/CHANGELOG.md#v1180-2022-05-16) - * **Feature**: Introduced a new error (TooLongCSPInResponseHeadersPolicy) that is returned when the value of the Content-Security-Policy header in a response headers policy exceeds the maximum allowed length. -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.18.1](service/rekognition/CHANGELOG.md#v1181-2022-05-16) - * **Documentation**: Documentation updates for Amazon Rekognition. -* `github.com/aws/aws-sdk-go-v2/service/resiliencehub`: [v1.6.0](service/resiliencehub/CHANGELOG.md#v160-2022-05-16) - * **Feature**: In this release, we are introducing support for Amazon Elastic Container Service, Amazon Route 53, AWS Elastic Disaster Recovery, AWS Backup in addition to the existing supported Services. This release also supports Terraform file input from S3 and scheduling daily assessments -* `github.com/aws/aws-sdk-go-v2/service/servicecatalog`: [v1.14.2](service/servicecatalog/CHANGELOG.md#v1142-2022-05-16) - * **Documentation**: Updated the descriptions for the ListAcceptedPortfolioShares API description and the PortfolioShareType parameters. -* `github.com/aws/aws-sdk-go-v2/service/sts`: [v1.16.5](service/sts/CHANGELOG.md#v1165-2022-05-16) - * **Documentation**: Documentation updates for AWS Security Token Service. -* `github.com/aws/aws-sdk-go-v2/service/workspacesweb`: [v1.6.0](service/workspacesweb/CHANGELOG.md#v160-2022-05-16) - * **Feature**: Amazon WorkSpaces Web now supports Administrator timeout control - -# Release (2022-05-13) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/grafana`: [v1.9.0](service/grafana/CHANGELOG.md#v190-2022-05-13) - * **Feature**: This release adds APIs for creating and deleting API keys in an Amazon Managed Grafana workspace. - -# Release (2022-05-12) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.43.0](service/ec2/CHANGELOG.md#v1430-2022-05-12) - * **Feature**: This release introduces a target type Gateway Load Balancer Endpoint for mirrored traffic. Customers can now specify GatewayLoadBalancerEndpoint option during the creation of a traffic mirror target. -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.10.5](service/finspacedata/CHANGELOG.md#v1105-2022-05-12) - * **Documentation**: We've now deprecated CreateSnapshot permission for creating a data view, instead use CreateDataView permission. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.25.1](service/iot/CHANGELOG.md#v1251-2022-05-12) - * **Documentation**: Documentation update for China region ListMetricValues for IoT -* `github.com/aws/aws-sdk-go-v2/service/ivschat`: [v1.0.2](service/ivschat/CHANGELOG.md#v102-2022-05-12) - * **Documentation**: Documentation-only updates for IVS Chat API Reference. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.27.0](service/kendra/CHANGELOG.md#v1270-2022-05-12) - * **Feature**: Amazon Kendra now provides a data source connector for Jira. For more information, see https://docs.aws.amazon.com/kendra/latest/dg/data-source-jira.html -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.23.0](service/lambda/CHANGELOG.md#v1230-2022-05-12) - * **Feature**: Lambda releases NodeJs 16 managed runtime to be available in all commercial regions. -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.21.0](service/lightsail/CHANGELOG.md#v1210-2022-05-12) - * **Feature**: This release adds support to include inactive database bundles in the response of the GetRelationalDatabaseBundles request. -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.19.1](service/outposts/CHANGELOG.md#v1191-2022-05-12) - * **Documentation**: Documentation updates for AWS Outposts. -* `github.com/aws/aws-sdk-go-v2/service/ssmincidents`: [v1.14.0](service/ssmincidents/CHANGELOG.md#v1140-2022-05-12) - * **Feature**: Adding support for dynamic SSM Runbook parameter values. Updating validation pattern for engagements. Adding ConflictException to UpdateReplicationSet API contract. -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.18.6](service/transfer/CHANGELOG.md#v1186-2022-05-12) - * **Documentation**: AWS Transfer Family now accepts ECDSA keys for server host keys - -# Release (2022-05-11) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.42.0](service/ec2/CHANGELOG.md#v1420-2022-05-11) - * **Feature**: This release updates AWS PrivateLink APIs to support IPv6 for PrivateLink Services and Endpoints of type 'Interface'. -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.15.7](service/secretsmanager/CHANGELOG.md#v1157-2022-05-11) - * **Documentation**: Doc only update for Secrets Manager that fixes several customer-reported issues. - -# Release (2022-05-10) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.17.5](service/computeoptimizer/CHANGELOG.md#v1175-2022-05-10) - * **Documentation**: Documentation updates for Compute Optimizer -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.41.0](service/ec2/CHANGELOG.md#v1410-2022-05-10) - * **Feature**: Added support for using NitroTPM and UEFI Secure Boot on EC2 instances. -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.21.0](service/eks/CHANGELOG.md#v1210-2022-05-10) - * **Feature**: Adds BOTTLEROCKET_ARM_64_NVIDIA and BOTTLEROCKET_x86_64_NVIDIA AMI types to EKS managed nodegroups -* `github.com/aws/aws-sdk-go-v2/service/emr`: [v1.18.0](service/emr/CHANGELOG.md#v1180-2022-05-10) - * **Feature**: This release updates the Amazon EMR ModifyInstanceGroups API to support "MERGE" type cluster reconfiguration. Also, added the ability to specify a particular Amazon Linux release for all nodes in a cluster launch request. -* `github.com/aws/aws-sdk-go-v2/service/migrationhubrefactorspaces`: [v1.5.5](service/migrationhubrefactorspaces/CHANGELOG.md#v155-2022-05-10) - * **Documentation**: AWS Migration Hub Refactor Spaces documentation only update to fix a formatting issue. - -# Release (2022-05-09) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/config`: [v1.15.5](config/CHANGELOG.md#v1155-2022-05-09) - * **Bug Fix**: Fixes a bug in LoadDefaultConfig to correctly assign ConfigSources so all config resolvers have access to the config sources. This fixes the feature/ec2/imds client not having configuration applied via config.LoadOptions such as EC2IMDSClientEnableState. PR [#1682](https://github.com/aws/aws-sdk-go-v2/pull/1682) -* `github.com/aws/aws-sdk-go-v2/service/cloudcontrol`: [v1.10.0](service/cloudcontrol/CHANGELOG.md#v1100-2022-05-09) - * **Feature**: SDK release for Cloud Control API to include paginators for Python SDK. -* `github.com/aws/aws-sdk-go-v2/service/evidently`: [v1.7.0](service/evidently/CHANGELOG.md#v170-2022-05-09) - * **Feature**: Add detail message inside GetExperimentResults API response to indicate experiment result availability -* `github.com/aws/aws-sdk-go-v2/service/ssmcontacts`: [v1.13.5](service/ssmcontacts/CHANGELOG.md#v1135-2022-05-09) - * **Documentation**: Fixed an error in the DescribeEngagement example for AWS Incident Manager. - -# Release (2022-05-06) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.40.0](service/ec2/CHANGELOG.md#v1400-2022-05-06) - * **Feature**: Add new state values for IPAMs, IPAM Scopes, and IPAM Pools. -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.17.0](service/location/CHANGELOG.md#v1170-2022-05-06) - * **Feature**: Amazon Location Service now includes a MaxResults parameter for ListGeofences requests. -* `github.com/aws/aws-sdk-go-v2/service/mediapackage`: [v1.16.0](service/mediapackage/CHANGELOG.md#v1160-2022-05-06) - * **Feature**: This release adds Dvb Dash 2014 as an available profile option for Dash Origin Endpoints. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.21.1](service/rds/CHANGELOG.md#v1211-2022-05-06) - * **Documentation**: Various documentation improvements. -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.24.0](service/redshift/CHANGELOG.md#v1240-2022-05-06) - * **Feature**: Introduces new field 'LoadSampleData' in CreateCluster operation. Customers can now specify 'LoadSampleData' option during creation of a cluster, which results in loading of sample data in the cluster that is created. -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.21.1](service/securityhub/CHANGELOG.md#v1211-2022-05-06) - * **Documentation**: Documentation updates for Security Hub API reference - -# Release (2022-05-05) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.16.0](service/datasync/CHANGELOG.md#v1160-2022-05-05) - * **Feature**: AWS DataSync now supports a new ObjectTags Task API option that can be used to control whether Object Tags are transferred. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.39.0](service/ec2/CHANGELOG.md#v1390-2022-05-05) - * **Feature**: Amazon EC2 I4i instances are powered by 3rd generation Intel Xeon Scalable processors and feature up to 30 TB of local AWS Nitro SSD storage -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.25.0](service/iot/CHANGELOG.md#v1250-2022-05-05) - * **Feature**: AWS IoT Jobs now allows you to create up to 100,000 active continuous and snapshot jobs by using concurrency control. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.26.0](service/kendra/CHANGELOG.md#v1260-2022-05-05) - * **Feature**: AWS Kendra now supports hierarchical facets for a query. For more information, see https://docs.aws.amazon.com/kendra/latest/dg/filtering.html - -# Release (2022-05-04) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/backup`: [v1.16.0](service/backup/CHANGELOG.md#v1160-2022-05-04) - * **Feature**: Adds support to 2 new filters about job complete time for 3 list jobs APIs in AWS Backup -* `github.com/aws/aws-sdk-go-v2/service/iotsecuretunneling`: [v1.13.0](service/iotsecuretunneling/CHANGELOG.md#v1130-2022-05-04) - * **Feature**: This release introduces a new API RotateTunnelAccessToken that allow revoking the existing tokens and generate new tokens -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.20.1](service/lightsail/CHANGELOG.md#v1201-2022-05-04) - * **Documentation**: Documentation updates for Lightsail -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.27.0](service/ssm/CHANGELOG.md#v1270-2022-05-04) - * **Feature**: This release adds the TargetMaps parameter in SSM State Manager API. - -# Release (2022-05-03) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.38.0](service/ec2/CHANGELOG.md#v1380-2022-05-03) - * **Feature**: Adds support for allocating Dedicated Hosts on AWS Outposts. The AllocateHosts API now accepts an OutpostArn request parameter, and the DescribeHosts API now includes an OutpostArn response parameter. -* `github.com/aws/aws-sdk-go-v2/service/kinesisvideo`: [v1.12.0](service/kinesisvideo/CHANGELOG.md#v1120-2022-05-03) - * **Feature**: Add support for multiple image feature related APIs for configuring image generation and notification of a video stream. Add "GET_IMAGES" to the list of supported API names for the GetDataEndpoint API. -* `github.com/aws/aws-sdk-go-v2/service/kinesisvideoarchivedmedia`: [v1.13.0](service/kinesisvideoarchivedmedia/CHANGELOG.md#v1130-2022-05-03) - * **Feature**: Add support for GetImages API for retrieving images from a video stream -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.26.8](service/s3/CHANGELOG.md#v1268-2022-05-03) - * **Documentation**: Documentation only update for doc bug fixes for the S3 API docs. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.30.0](service/sagemaker/CHANGELOG.md#v1300-2022-05-03) - * **Feature**: SageMaker Autopilot adds new metrics for all candidate models generated by Autopilot experiments; RStudio on SageMaker now allows users to bring your own development environment in a custom image. - -# Release (2022-05-02) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/organizations`: [v1.16.0](service/organizations/CHANGELOG.md#v1160-2022-05-02) - * **Feature**: This release adds the INVALID_PAYMENT_INSTRUMENT as a fail reason and an error message. -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.19.0](service/outposts/CHANGELOG.md#v1190-2022-05-02) - * **Feature**: This release adds a new API called ListAssets to the Outposts SDK, which lists the hardware assets in an Outpost. -* `github.com/aws/aws-sdk-go-v2/service/synthetics`: [v1.15.0](service/synthetics/CHANGELOG.md#v1150-2022-05-02) - * **Feature**: CloudWatch Synthetics has introduced a new feature to provide customers with an option to delete the underlying resources that Synthetics canary creates when the user chooses to delete the canary. - -# Release (2022-04-29) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/codegurureviewer`: [v1.16.0](service/codegurureviewer/CHANGELOG.md#v1160-2022-04-29) - * **Feature**: Amazon CodeGuru Reviewer now supports suppressing recommendations from being generated on specific files and directories. -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.23.0](service/mediaconvert/CHANGELOG.md#v1230-2022-04-29) - * **Feature**: AWS Elemental MediaConvert SDK nows supports creation of Dolby Vision profile 8.1, the ability to generate black frames of video, and introduces audio-only DASH and CMAF support. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.21.0](service/rds/CHANGELOG.md#v1210-2022-04-29) - * **Feature**: Feature - Adds support for Internet Protocol Version 6 (IPv6) on RDS database instances. -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.26.0](service/ssm/CHANGELOG.md#v1260-2022-04-29) - * **Feature**: Update the StartChangeRequestExecution, adding TargetMaps to the Runbook parameter -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.20.0](service/wafv2/CHANGELOG.md#v1200-2022-04-29) - * **Feature**: You can now inspect all request headers and all cookies. You can now specify how to handle oversize body contents in your rules that inspect the body. - -# Release (2022-04-28) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.18.5](service/auditmanager/CHANGELOG.md#v1185-2022-04-28) - * **Documentation**: This release adds documentation updates for Audit Manager. We provided examples of how to use the Custom_ prefix for the keywordValue attribute. We also provided more details about the DeleteAssessmentReport operation. -* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.16.0](service/braket/CHANGELOG.md#v1160-2022-04-28) - * **Feature**: This release enables Braket Hybrid Jobs with Embedded Simulators to have multiple instances. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.24.0](service/connect/CHANGELOG.md#v1240-2022-04-28) - * **Feature**: This release introduces an API for changing the current agent status of a user in Connect. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.37.0](service/ec2/CHANGELOG.md#v1370-2022-04-28) - * **Feature**: This release adds support to query the public key and creation date of EC2 Key Pairs. Additionally, the format (pem or ppk) of a key pair can be specified when creating a new key pair. -* `github.com/aws/aws-sdk-go-v2/service/guardduty`: [v1.13.5](service/guardduty/CHANGELOG.md#v1135-2022-04-28) - * **Documentation**: Documentation update for API description. -* `github.com/aws/aws-sdk-go-v2/service/networkfirewall`: [v1.17.0](service/networkfirewall/CHANGELOG.md#v1170-2022-04-28) - * **Feature**: AWS Network Firewall adds support for stateful threat signature AWS managed rule groups. - -# Release (2022-04-27) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/amplify`: [v1.11.5](service/amplify/CHANGELOG.md#v1115-2022-04-27) - * **Documentation**: Documentation only update to support the Amplify GitHub App feature launch -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines`: [v1.0.0](service/chimesdkmediapipelines/CHANGELOG.md#v100-2022-04-27) - * **Release**: New AWS service client module - * **Feature**: For Amazon Chime SDK meetings, the Amazon Chime Media Pipelines SDK allows builders to capture audio, video, and content share streams. You can also capture meeting events, live transcripts, and data messages. The pipelines save the artifacts to an Amazon S3 bucket that you designate. -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.16.0](service/cloudtrail/CHANGELOG.md#v1160-2022-04-27) - * **Feature**: Increases the retention period maximum to 2557 days. Deprecates unused fields of the ListEventDataStores API response. Updates documentation. -* `github.com/aws/aws-sdk-go-v2/service/internal/checksum`: [v1.1.5](service/internal/checksum/CHANGELOG.md#v115-2022-04-27) - * **Bug Fix**: Fixes a bug that could cause the SigV4 payload hash to be incorrectly encoded, leading to signing errors. -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.19.0](service/iotwireless/CHANGELOG.md#v1190-2022-04-27) - * **Feature**: Add list support for event configurations, allow to get and update event configurations by resource type, support LoRaWAN events; Make NetworkAnalyzerConfiguration as a resource, add List, Create, Delete API support; Add FCntStart attribute support for ABP WirelessDevice. -* `github.com/aws/aws-sdk-go-v2/service/lookoutequipment`: [v1.13.0](service/lookoutequipment/CHANGELOG.md#v1130-2022-04-27) - * **Feature**: This release adds the following new features: 1) Introduces an option for automatic schema creation 2) Now allows for Ingestion of data containing most common errors and allows automatic data cleaning 3) Introduces new API ListSensorStatistics that gives further information about the ingested data -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.18.0](service/rekognition/CHANGELOG.md#v1180-2022-04-27) - * **Feature**: This release adds support to configure stream-processor resources for label detections on streaming-videos. UpateStreamProcessor API is also launched with this release, which could be used to update an existing stream-processor. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.29.0](service/sagemaker/CHANGELOG.md#v1290-2022-04-27) - * **Feature**: Amazon SageMaker Autopilot adds support for custom validation dataset and validation ratio through the CreateAutoMLJob and DescribeAutoMLJob APIs. - -# Release (2022-04-26) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cloudfront`: [v1.17.0](service/cloudfront/CHANGELOG.md#v1170-2022-04-26) - * **Feature**: CloudFront now supports the Server-Timing header in HTTP responses sent from CloudFront. You can use this header to view metrics that help you gain insights about the behavior and performance of CloudFront. To use this header, enable it in a response headers policy. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.24.2](service/glue/CHANGELOG.md#v1242-2022-04-26) - * **Documentation**: This release adds documentation for the APIs to create, read, delete, list, and batch read of AWS Glue custom patterns, and for Lake Formation configuration settings in the AWS Glue crawler. -* `github.com/aws/aws-sdk-go-v2/service/ivschat`: [v1.0.0](service/ivschat/CHANGELOG.md#v100-2022-04-26) - * **Release**: New AWS service client module - * **Feature**: Adds new APIs for IVS Chat, a feature for building interactive chat experiences alongside an IVS broadcast. -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.20.0](service/lightsail/CHANGELOG.md#v1200-2022-04-26) - * **Feature**: This release adds support for Lightsail load balancer HTTP to HTTPS redirect and TLS policy configuration. -* `github.com/aws/aws-sdk-go-v2/service/networkfirewall`: [v1.16.0](service/networkfirewall/CHANGELOG.md#v1160-2022-04-26) - * **Feature**: AWS Network Firewall now enables customers to use a customer managed AWS KMS key for the encryption of their firewall resources. -* `github.com/aws/aws-sdk-go-v2/service/pricing`: [v1.14.5](service/pricing/CHANGELOG.md#v1145-2022-04-26) - * **Documentation**: Documentation updates for Price List API -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.28.0](service/sagemaker/CHANGELOG.md#v1280-2022-04-26) - * **Feature**: SageMaker Inference Recommender now accepts customer KMS key ID for encryption of endpoints and compilation outputs created during inference recommendation. - -# Release (2022-04-25) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.16.3 - * **Dependency Update**: Update SDK's internal copy of golang.org/x/sync/singleflight to address issue with test failing due to timeing issues -* `github.com/aws/aws-sdk-go-v2/credentials`: [v1.12.0](credentials/CHANGELOG.md#v1120-2022-04-25) - * **Feature**: Adds Duration and Policy options that can be used when creating stscreds.WebIdentityRoleProvider credentials provider. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.23.0](service/connect/CHANGELOG.md#v1230-2022-04-25) - * **Feature**: This release adds SearchUsers API which can be used to search for users with a Connect Instance -* `github.com/aws/aws-sdk-go-v2/service/gamelift`: [v1.14.4](service/gamelift/CHANGELOG.md#v1144-2022-04-25) - * **Documentation**: Documentation updates for Amazon GameLift. -* `github.com/aws/aws-sdk-go-v2/service/mq`: [v1.13.0](service/mq/CHANGELOG.md#v1130-2022-04-25) - * **Feature**: This release adds the CRITICAL_ACTION_REQUIRED broker state and the ActionRequired API property. CRITICAL_ACTION_REQUIRED informs you when your broker is degraded. ActionRequired provides you with a code which you can use to find instructions in the Developer Guide on how to resolve the issue. -* `github.com/aws/aws-sdk-go-v2/service/rdsdata`: [v1.12.0](service/rdsdata/CHANGELOG.md#v1120-2022-04-25) - * **Feature**: Support to receive SQL query results in the form of a simplified JSON string. This enables developers using the new JSON string format to more easily convert it to an object using popular JSON string parsing libraries. -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.21.0](service/securityhub/CHANGELOG.md#v1210-2022-04-25) - * **Feature**: Security Hub now lets you opt-out of auto-enabling the defaults standards (CIS and FSBP) in accounts that are auto-enabled with Security Hub via Security Hub's integration with AWS Organizations. - -# Release (2022-04-22) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.9.0](service/chimesdkmeetings/CHANGELOG.md#v190-2022-04-22) - * **Feature**: Include additional exceptions types. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.36.0](service/ec2/CHANGELOG.md#v1360-2022-04-22) - * **Feature**: Adds support for waiters that automatically poll for a deleted NAT Gateway until it reaches the deleted state. - -# Release (2022-04-21) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.20.5](service/elasticache/CHANGELOG.md#v1205-2022-04-21) - * **Documentation**: Doc only update for ElastiCache -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.24.0](service/glue/CHANGELOG.md#v1240-2022-04-21) - * **Feature**: This release adds APIs to create, read, delete, list, and batch read of Glue custom entity types -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.21.0](service/iotsitewise/CHANGELOG.md#v1210-2022-04-21) - * **Feature**: This release adds 3 new batch data query APIs : BatchGetAssetPropertyValue, BatchGetAssetPropertyValueHistory and BatchGetAssetPropertyAggregates -* `github.com/aws/aws-sdk-go-v2/service/iottwinmaker`: [v1.7.0](service/iottwinmaker/CHANGELOG.md#v170-2022-04-21) - * **Feature**: General availability (GA) for AWS IoT TwinMaker. For more information, see https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/Welcome.html -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.12.0](service/lookoutmetrics/CHANGELOG.md#v1120-2022-04-21) - * **Feature**: Added DetectMetricSetConfig API for detecting configuration required for creating metric set from provided S3 data source. -* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.17.0](service/mediatailor/CHANGELOG.md#v1170-2022-04-21) - * **Feature**: This release introduces tiered channels and adds support for live sources. Customers using a STANDARD channel can now create programs using live sources. -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.15.5](service/secretsmanager/CHANGELOG.md#v1155-2022-04-21) - * **Documentation**: Documentation updates for Secrets Manager -* `github.com/aws/aws-sdk-go-v2/service/storagegateway`: [v1.17.0](service/storagegateway/CHANGELOG.md#v1170-2022-04-21) - * **Feature**: This release adds support for minimum of 5 character length virtual tape barcodes. -* `github.com/aws/aws-sdk-go-v2/service/wisdom`: [v1.8.0](service/wisdom/CHANGELOG.md#v180-2022-04-21) - * **Feature**: This release updates the GetRecommendations API to include a trigger event list for classifying and grouping recommendations. - -# Release (2022-04-20) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.22.0](service/connect/CHANGELOG.md#v1220-2022-04-20) - * **Feature**: This release adds APIs to search, claim, release, list, update, and describe phone numbers. You can also use them to associate and disassociate contact flows to phone numbers. -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.21.0](service/macie2/CHANGELOG.md#v1210-2022-04-20) - * **Feature**: Sensitive data findings in Amazon Macie now indicate how Macie found the sensitive data that produced a finding (originType). -* `github.com/aws/aws-sdk-go-v2/service/mgn`: [v1.14.0](service/mgn/CHANGELOG.md#v1140-2022-04-20) - * **Feature**: Removed required annotation from input fields in Describe operations requests. Added quotaValue to ServiceQuotaExceededException -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.20.0](service/rds/CHANGELOG.md#v1200-2022-04-20) - * **Feature**: Added a new cluster-level attribute to set the capacity range for Aurora Serverless v2 instances. - -# Release (2022-04-19) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.23.0](service/autoscaling/CHANGELOG.md#v1230-2022-04-19) - * **Feature**: EC2 Auto Scaling now adds default instance warm-up times for all scaling activities, health check replacements, and other replacement events in the Auto Scaling instance lifecycle. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.25.0](service/kendra/CHANGELOG.md#v1250-2022-04-19) - * **Feature**: Amazon Kendra now provides a data source connector for Quip. For more information, see https://docs.aws.amazon.com/kendra/latest/dg/data-source-quip.html -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.17.0](service/kms/CHANGELOG.md#v1170-2022-04-19) - * **Feature**: Adds support for KMS keys and APIs that generate and verify HMAC codes -* `github.com/aws/aws-sdk-go-v2/service/personalize`: [v1.19.0](service/personalize/CHANGELOG.md#v1190-2022-04-19) - * **Feature**: Adding StartRecommender and StopRecommender APIs for Personalize. -* `github.com/aws/aws-sdk-go-v2/service/polly`: [v1.15.0](service/polly/CHANGELOG.md#v1150-2022-04-19) - * **Feature**: Amazon Polly adds new Austrian German voice - Hannah. Hannah is available as Neural voice only. -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.23.0](service/redshift/CHANGELOG.md#v1230-2022-04-19) - * **Feature**: Introduces new fields for LogDestinationType and LogExports on EnableLogging requests and Enable/Disable/DescribeLogging responses. Customers can now select CloudWatch Logs as a destination for their Audit Logs. -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.25.0](service/ssm/CHANGELOG.md#v1250-2022-04-19) - * **Feature**: Added offset support for specifying the number of days to wait after the date and time specified by a CRON expression when creating SSM association. -* `github.com/aws/aws-sdk-go-v2/service/textract`: [v1.15.0](service/textract/CHANGELOG.md#v1150-2022-04-19) - * **Feature**: This release adds support for specifying and extracting information from documents using the Queries feature within Analyze Document API -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.18.4](service/transfer/CHANGELOG.md#v1184-2022-04-19) - * **Documentation**: This release contains corrected HomeDirectoryMappings examples for several API functions: CreateAccess, UpdateAccess, CreateUser, and UpdateUser,. -* `github.com/aws/aws-sdk-go-v2/service/worklink`: [v1.12.0](service/worklink/CHANGELOG.md#v1120-2022-04-19) - * **Feature**: Amazon WorkLink is no longer supported. This will be removed in a future version of the SDK. - -# Release (2022-04-15) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue`: [v1.9.0](feature/dynamodb/attributevalue/CHANGELOG.md#v190-2022-04-15) - * **Feature**: Support has been added for specifying a custom time format when encoding and decoding DynamoDB AttributeValues. Use `EncoderOptions.EncodeTime` to specify a custom time encoding function, and use `DecoderOptions.DecodeTime` for specifying how to handle the corresponding AttributeValues using the format. Thank you [Pablo Lopez](https://github.com/plopezlpz) for this contribution. -* `github.com/aws/aws-sdk-go-v2/feature/dynamodbstreams/attributevalue`: [v1.9.0](feature/dynamodbstreams/attributevalue/CHANGELOG.md#v190-2022-04-15) - * **Feature**: Support has been added for specifying a custom time format when encoding and decoding DynamoDB AttributeValues. Use `EncoderOptions.EncodeTime` to specify a custom time encoding function, and use `DecoderOptions.DecodeTime` for specifying how to handle the corresponding AttributeValues using the format. Thank you [Pablo Lopez](https://github.com/plopezlpz) for this contribution. -* `github.com/aws/aws-sdk-go-v2/service/athena`: [v1.15.0](service/athena/CHANGELOG.md#v1150-2022-04-15) - * **Feature**: This release adds subfields, ErrorMessage, Retryable, to the AthenaError response object in the GetQueryExecution API when a query fails. -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.19.0](service/lightsail/CHANGELOG.md#v1190-2022-04-15) - * **Feature**: This release adds support to describe the synchronization status of the account-level block public access feature for your Amazon Lightsail buckets. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.19.0](service/rds/CHANGELOG.md#v1190-2022-04-15) - * **Feature**: Removes Amazon RDS on VMware with the deletion of APIs related to Custom Availability Zones and Media installation - -# Release (2022-04-14) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.15.0](service/appflow/CHANGELOG.md#v1150-2022-04-14) - * **Feature**: Enables users to pass custom token URL parameters for Oauth2 authentication during create connector profile -* `github.com/aws/aws-sdk-go-v2/service/appstream`: [v1.16.0](service/appstream/CHANGELOG.md#v1160-2022-04-14) - * **Feature**: Includes updates for create and update fleet APIs to manage the session scripts locations for Elastic fleets. -* `github.com/aws/aws-sdk-go-v2/service/batch`: [v1.18.0](service/batch/CHANGELOG.md#v1180-2022-04-14) - * **Feature**: Enables configuration updates for compute environments with BEST_FIT_PROGRESSIVE and SPOT_CAPACITY_OPTIMIZED allocation strategies. -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.18.1](service/cloudwatch/CHANGELOG.md#v1181-2022-04-14) - * **Documentation**: Updates documentation for additional statistics in CloudWatch Metric Streams. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.35.1](service/ec2/CHANGELOG.md#v1351-2022-04-14) - * **Documentation**: Documentation updates for Amazon EC2. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.23.0](service/glue/CHANGELOG.md#v1230-2022-04-14) - * **Feature**: Auto Scaling for Glue version 3.0 and later jobs to dynamically scale compute resources. This SDK change provides customers with the auto-scaled DPU usage - -# Release (2022-04-13) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.18.0](service/cloudwatch/CHANGELOG.md#v1180-2022-04-13) - * **Feature**: Adds support for additional statistics in CloudWatch Metric Streams. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.23.0](service/fsx/CHANGELOG.md#v1230-2022-04-13) - * **Feature**: This release adds support for deploying FSx for ONTAP file systems in a single Availability Zone. - -# Release (2022-04-12) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/devopsguru`: [v1.17.0](service/devopsguru/CHANGELOG.md#v1170-2022-04-12) - * **Feature**: This release adds new APIs DeleteInsight to deletes the insight along with the associated anomalies, events and recommendations. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.35.0](service/ec2/CHANGELOG.md#v1350-2022-04-12) - * **Feature**: X2idn and X2iedn instances are powered by 3rd generation Intel Xeon Scalable processors with an all-core turbo frequency up to 3.5 GHzAmazon EC2. C6a instances are powered by 3rd generation AMD EPYC processors. -* `github.com/aws/aws-sdk-go-v2/service/efs`: [v1.17.0](service/efs/CHANGELOG.md#v1170-2022-04-12) - * **Feature**: Amazon EFS adds support for a ThrottlingException when using the CreateAccessPoint API if the account is nearing the AccessPoint limit(120). -* `github.com/aws/aws-sdk-go-v2/service/iottwinmaker`: [v1.6.0](service/iottwinmaker/CHANGELOG.md#v160-2022-04-12) - * **Feature**: This release adds the following new features: 1) ListEntities API now supports search using ExternalId. 2) BatchPutPropertyValue and GetPropertyValueHistory API now allows users to represent time in sub-second level precisions. -* `github.com/aws/aws-sdk-go-v2/service/kinesis`: [v1.15.4](service/kinesis/CHANGELOG.md#v1154-2022-04-12) - * **Bug Fix**: Fixes an issue that caused the unexported constructor function names for EventStream types to be swapped for the event reader and writer respectivly. -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.14.4](service/lexruntimev2/CHANGELOG.md#v1144-2022-04-12) - * **Bug Fix**: Fixes an issue that caused the unexported constructor function names for EventStream types to be swapped for the event reader and writer respectivly. -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.26.5](service/s3/CHANGELOG.md#v1265-2022-04-12) - * **Bug Fix**: Fixes an issue that caused the unexported constructor function names for EventStream types to be swapped for the event reader and writer respectivly. -* `github.com/aws/aws-sdk-go-v2/service/transcribestreaming`: [v1.6.4](service/transcribestreaming/CHANGELOG.md#v164-2022-04-12) - * **Bug Fix**: Fixes an issue that caused the unexported constructor function names for EventStream types to be swapped for the event reader and writer respectivly. - -# Release (2022-04-11) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/amplifyuibuilder`: [v1.6.0](service/amplifyuibuilder/CHANGELOG.md#v160-2022-04-11) - * **Feature**: In this release, we have added the ability to bind events to component level actions. -* `github.com/aws/aws-sdk-go-v2/service/apprunner`: [v1.12.0](service/apprunner/CHANGELOG.md#v1120-2022-04-11) - * **Feature**: This release adds tracing for App Runner services with X-Ray using AWS Distro for OpenTelemetry. New APIs: CreateObservabilityConfiguration, DescribeObservabilityConfiguration, ListObservabilityConfigurations, and DeleteObservabilityConfiguration. Updated APIs: CreateService and UpdateService. -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.18.0](service/workspaces/CHANGELOG.md#v1180-2022-04-11) - * **Feature**: Added API support that allows customers to create GPU-enabled WorkSpaces using EC2 G4dn instances. - -# Release (2022-04-08) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.22.0](service/mediaconvert/CHANGELOG.md#v1220-2022-04-08) - * **Feature**: AWS Elemental MediaConvert SDK has added support for the pass-through of WebVTT styling to WebVTT outputs, pass-through of KLV metadata to supported formats, and improved filter support for processing 444/RGB content. -* `github.com/aws/aws-sdk-go-v2/service/mediapackagevod`: [v1.17.0](service/mediapackagevod/CHANGELOG.md#v1170-2022-04-08) - * **Feature**: This release adds ScteMarkersSource as an available field for Dash Packaging Configurations. When set to MANIFEST, MediaPackage will source the SCTE-35 markers from the manifest. When set to SEGMENTS, MediaPackage will source the SCTE-35 markers from the segments. -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.19.0](service/wafv2/CHANGELOG.md#v1190-2022-04-08) - * **Feature**: Add a new CurrentDefaultVersion field to ListAvailableManagedRuleGroupVersions API response; add a new VersioningSupported boolean to each ManagedRuleGroup returned from ListAvailableManagedRuleGroups API response. - -# Release (2022-04-07) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/internal/v4a`: [v1.0.0](internal/v4a/CHANGELOG.md#v100-2022-04-07) - * **Release**: New internal v4a signing module location. -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.18.0](service/docdb/CHANGELOG.md#v1180-2022-04-07) - * **Feature**: Added support to enable/disable performance insights when creating or modifying db instances -* `github.com/aws/aws-sdk-go-v2/service/eventbridge`: [v1.16.0](service/eventbridge/CHANGELOG.md#v1160-2022-04-07) - * **Feature**: Adds new EventBridge Endpoint resources for disaster recovery, multi-region failover, and cross-region replication capabilities to help you build resilient event-driven applications. -* `github.com/aws/aws-sdk-go-v2/service/personalize`: [v1.18.0](service/personalize/CHANGELOG.md#v1180-2022-04-07) - * **Feature**: This release provides tagging support in AWS Personalize. -* `github.com/aws/aws-sdk-go-v2/service/pi`: [v1.14.4](service/pi/CHANGELOG.md#v1144-2022-04-07) - * **Documentation**: Adds support for DocumentDB to the Performance Insights API. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.27.0](service/sagemaker/CHANGELOG.md#v1270-2022-04-07) - * **Feature**: Amazon Sagemaker Notebook Instances now supports G5 instance types - -# Release (2022-04-06) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.21.0](service/configservice/CHANGELOG.md#v1210-2022-04-06) - * **Feature**: Add resourceType enums for AWS::EMR::SecurityConfiguration and AWS::SageMaker::CodeRepository -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.24.0](service/kendra/CHANGELOG.md#v1240-2022-04-06) - * **Feature**: Amazon Kendra now provides a data source connector for Box. For more information, see https://docs.aws.amazon.com/kendra/latest/dg/data-source-box.html -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.22.0](service/lambda/CHANGELOG.md#v1220-2022-04-06) - * **Feature**: This release adds new APIs for creating and managing Lambda Function URLs and adds a new FunctionUrlAuthType parameter to the AddPermission API. Customers can use Function URLs to create built-in HTTPS endpoints on their functions. -* `github.com/aws/aws-sdk-go-v2/service/panorama`: [v1.7.0](service/panorama/CHANGELOG.md#v170-2022-04-06) - * **Feature**: Added Brand field to device listings. - -# Release (2022-04-05) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.15.0](service/datasync/CHANGELOG.md#v1150-2022-04-05) - * **Feature**: AWS DataSync now supports Amazon FSx for OpenZFS locations. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.22.0](service/fsx/CHANGELOG.md#v1220-2022-04-05) - * **Feature**: Provide customers more visibility into file system status by adding new "Misconfigured Unavailable" status for Amazon FSx for Windows File Server. -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.21.4](service/s3control/CHANGELOG.md#v1214-2022-04-05) - * **Documentation**: Documentation-only update for doc bug fixes for the S3 Control API docs. -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.20.0](service/securityhub/CHANGELOG.md#v1200-2022-04-05) - * **Feature**: Added additional ASFF details for RdsSecurityGroup AutoScalingGroup, ElbLoadBalancer, CodeBuildProject and RedshiftCluster. - -# Release (2022-04-04) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.24.0](service/iot/CHANGELOG.md#v1240-2022-04-04) - * **Feature**: AWS IoT - AWS IoT Device Defender adds support to list metric datapoints collected for IoT devices through the ListMetricValues API -* `github.com/aws/aws-sdk-go-v2/service/proton`: [v1.13.0](service/proton/CHANGELOG.md#v1130-2022-04-04) - * **Feature**: SDK release to support tagging for AWS Proton Repository resource -* `github.com/aws/aws-sdk-go-v2/service/servicecatalog`: [v1.14.0](service/servicecatalog/CHANGELOG.md#v1140-2022-04-04) - * **Feature**: This release adds ProvisioningArtifictOutputKeys to DescribeProvisioningParameters to reference the outputs of a Provisioned Product and deprecates ProvisioningArtifactOutputs. -* `github.com/aws/aws-sdk-go-v2/service/sms`: [v1.12.4](service/sms/CHANGELOG.md#v1124-2022-04-04) - * **Documentation**: Revised product update notice for SMS console deprecation. - -# Release (2022-04-01) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.21.0](service/connect/CHANGELOG.md#v1210-2022-04-01) - * **Feature**: This release updates these APIs: UpdateInstanceAttribute, DescribeInstanceAttribute and ListInstanceAttributes. You can use it to programmatically enable/disable multi-party conferencing using attribute type MULTI_PARTY_CONFERENCING on the specified Amazon Connect instance. - -# Release (2022-03-31) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue`: [v1.8.4](feature/dynamodb/attributevalue/CHANGELOG.md#v184-2022-03-31) - * **Documentation**: Fixes documentation typos in Number type's helper methods -* `github.com/aws/aws-sdk-go-v2/feature/dynamodbstreams/attributevalue`: [v1.8.4](feature/dynamodbstreams/attributevalue/CHANGELOG.md#v184-2022-03-31) - * **Documentation**: Fixes documentation typos in Number type's helper methods -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.18.3](service/auditmanager/CHANGELOG.md#v1183-2022-03-31) - * **Documentation**: This release adds documentation updates for Audit Manager. The updates provide data deletion guidance when a customer deregisters Audit Manager or deregisters a delegated administrator. -* `github.com/aws/aws-sdk-go-v2/service/cloudcontrol`: [v1.9.0](service/cloudcontrol/CHANGELOG.md#v190-2022-03-31) - * **Feature**: SDK release for Cloud Control API in Amazon Web Services China (Beijing) Region, operated by Sinnet, and Amazon Web Services China (Ningxia) Region, operated by NWCD -* `github.com/aws/aws-sdk-go-v2/service/databrew`: [v1.20.0](service/databrew/CHANGELOG.md#v1200-2022-03-31) - * **Feature**: This AWS Glue Databrew release adds feature to support ORC as an input format. -* `github.com/aws/aws-sdk-go-v2/service/grafana`: [v1.8.0](service/grafana/CHANGELOG.md#v180-2022-03-31) - * **Feature**: This release adds tagging support to the Managed Grafana service. New APIs: TagResource, UntagResource and ListTagsForResource. Updates: add optional field tags to support tagging while calling CreateWorkspace. -* `github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2`: [v1.0.0](service/pinpointsmsvoicev2/CHANGELOG.md#v100-2022-03-31) - * **Release**: New AWS service client module - * **Feature**: Amazon Pinpoint now offers a version 2.0 suite of SMS and voice APIs, providing increased control over sending and configuration. This release is a new SDK for sending SMS and voice messages called PinpointSMSVoiceV2. -* `github.com/aws/aws-sdk-go-v2/service/route53recoverycluster`: [v1.9.0](service/route53recoverycluster/CHANGELOG.md#v190-2022-03-31) - * **Feature**: This release adds a new API "ListRoutingControls" to list routing control states using the highly reliable Route 53 ARC data plane endpoints. -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.17.0](service/workspaces/CHANGELOG.md#v1170-2022-03-31) - * **Feature**: Added APIs that allow you to customize the logo, login message, and help links in the WorkSpaces client login page. To learn more, visit https://docs.aws.amazon.com/workspaces/latest/adminguide/customize-branding.html - -# Release (2022-03-30) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.34.0](service/ec2/CHANGELOG.md#v1340-2022-03-30) - * **Feature**: This release simplifies the auto-recovery configuration process enabling customers to set the recovery behavior to disabled or default -* `github.com/aws/aws-sdk-go-v2/service/fms`: [v1.17.0](service/fms/CHANGELOG.md#v1170-2022-03-30) - * **Feature**: AWS Firewall Manager now supports the configuration of third-party policies that can use either the centralized or distributed deployment models. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.21.0](service/fsx/CHANGELOG.md#v1210-2022-03-30) - * **Feature**: This release adds support for modifying throughput capacity for FSx for ONTAP file systems. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.23.3](service/iot/CHANGELOG.md#v1233-2022-03-30) - * **Documentation**: Doc only update for IoT that fixes customer-reported issues. -* `github.com/aws/aws-sdk-go-v2/service/iotdataplane`: [v1.12.0](service/iotdataplane/CHANGELOG.md#v1120-2022-03-30) - * **Feature**: Update the default AWS IoT Core Data Plane endpoint from VeriSign signed to ATS signed. If you have firewalls with strict egress rules, configure the rules to grant you access to data-ats.iot.[region].amazonaws.com or data-ats.iot.[region].amazonaws.com.cn. - -# Release (2022-03-29) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/organizations`: [v1.15.0](service/organizations/CHANGELOG.md#v1150-2022-03-29) - * **Feature**: This release provides the new CloseAccount API that enables principals in the management account to close any member account within an organization. - -# Release (2022-03-28) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/acmpca`: [v1.17.3](service/acmpca/CHANGELOG.md#v1173-2022-03-28) - * **Documentation**: Updating service name entities -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.20.0](service/medialive/CHANGELOG.md#v1200-2022-03-28) - * **Feature**: This release adds support for selecting a maintenance window. - -# Release (2022-03-25) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/batch`: [v1.17.0](service/batch/CHANGELOG.md#v1170-2022-03-25) - * **Feature**: Bug Fix: Fixed a bug where shapes were marked as unboxed and were not serialized and sent over the wire, causing an API error from the service. - * This is a breaking change, and has been accepted due to the API operation not being usable due to the members modeled as unboxed (aka value) types. The update changes the members to boxed (aka pointer) types so that the zero value of the members can be handled correctly by the SDK and service. Your application will fail to compile with the updated module. To workaround this you'll need to update your application to use pointer types for the members impacted. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.33.0](service/ec2/CHANGELOG.md#v1330-2022-03-25) - * **Feature**: This is release adds support for Amazon VPC Reachability Analyzer to analyze path through a Transit Gateway. -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.24.0](service/ssm/CHANGELOG.md#v1240-2022-03-25) - * **Feature**: This Patch Manager release supports creating, updating, and deleting Patch Baselines for Rocky Linux OS. - -# Release (2022-03-24) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.20.0](service/configservice/CHANGELOG.md#v1200-2022-03-24) - * **Feature**: Added new APIs GetCustomRulePolicy and GetOrganizationCustomRulePolicy, and updated existing APIs PutConfigRule, DescribeConfigRule, DescribeConfigRuleEvaluationStatus, PutOrganizationConfigRule, DescribeConfigRule to support a new feature for building AWS Config rules with AWS CloudFormation Guard -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.21.0](service/lambda/CHANGELOG.md#v1210-2022-03-24) - * **Feature**: Adds support for increased ephemeral storage (/tmp) up to 10GB for Lambda functions. Customers can now provision up to 10 GB of ephemeral storage per function instance, a 20x increase over the previous limit of 512 MB. -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.19.0](service/transcribe/CHANGELOG.md#v1190-2022-03-24) - * **Feature**: This release adds an additional parameter for subtitling with Amazon Transcribe batch jobs: outputStartIndex. - -# Release (2022-03-23) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.16.0 - * **Feature**: Update CredentialsCache to make use of two new optional CredentialsProvider interfaces to give the cache, per provider, behavior how the cache handles credentials that fail to refresh, and adjusting expires time. See [aws.CredentialsCache](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#CredentialsCache) for more details. - * **Feature**: Update `ec2rolecreds` package's `Provider` to implememnt support for CredentialsCache new optional caching strategy interfaces, HandleFailRefreshCredentialsCacheStrategy and AdjustExpiresByCredentialsCacheStrategy. -* `github.com/aws/aws-sdk-go-v2/credentials`: [v1.11.0](credentials/CHANGELOG.md#v1110-2022-03-23) - * **Feature**: Update `ec2rolecreds` package's `Provider` to implememnt support for CredentialsCache new optional caching strategy interfaces, HandleFailRefreshCredentialsCacheStrategy and AdjustExpiresByCredentialsCacheStrategy. -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.18.0](service/auditmanager/CHANGELOG.md#v1180-2022-03-23) - * **Feature**: This release updates 1 API parameter, the SnsArn attribute. The character length and regex pattern for the SnsArn attribute have been updated, which enables you to deselect an SNS topic when using the UpdateSettings operation. -* `github.com/aws/aws-sdk-go-v2/service/ebs`: [v1.15.0](service/ebs/CHANGELOG.md#v1150-2022-03-23) - * **Feature**: Increased the maximum supported value for the Timeout parameter of the StartSnapshot API from 60 minutes to 4320 minutes. Changed the HTTP error code for ConflictException from 503 to 409. -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.20.2](service/elasticache/CHANGELOG.md#v1202-2022-03-23) - * **Documentation**: Doc only update for ElastiCache -* `github.com/aws/aws-sdk-go-v2/service/gamesparks`: [v1.0.0](service/gamesparks/CHANGELOG.md#v100-2022-03-23) - * **Release**: New AWS service client module - * **Feature**: Released the preview of Amazon GameSparks, a fully managed AWS service that provides a multi-service backend for game developers. -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.22.0](service/redshift/CHANGELOG.md#v1220-2022-03-23) - * **Feature**: This release adds a new [--encrypted | --no-encrypted] field in restore-from-cluster-snapshot API. Customers can now restore an unencrypted snapshot to a cluster encrypted with AWS Managed Key or their own KMS key. -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.23.0](service/ssm/CHANGELOG.md#v1230-2022-03-23) - * **Feature**: Update AddTagsToResource, ListTagsForResource, and RemoveTagsFromResource APIs to reflect the support for tagging Automation resources. Includes other minor documentation updates. -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.18.1](service/transfer/CHANGELOG.md#v1181-2022-03-23) - * **Documentation**: Documentation updates for AWS Transfer Family to describe how to remove an associated workflow from a server. - -# Release (2022-03-22) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/costexplorer`: [v1.18.0](service/costexplorer/CHANGELOG.md#v1180-2022-03-22) - * **Feature**: Added three new APIs to support tagging and resource-level authorization on Cost Explorer resources: TagResource, UntagResource, ListTagsForResource. Added optional parameters to CreateCostCategoryDefinition, CreateAnomalySubscription and CreateAnomalyMonitor APIs to support Tag On Create. -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.18.2](service/ecs/CHANGELOG.md#v1182-2022-03-22) - * **Documentation**: Documentation only update to address tickets -* `github.com/aws/aws-sdk-go-v2/service/lakeformation`: [v1.16.0](service/lakeformation/CHANGELOG.md#v1160-2022-03-22) - * **Feature**: The release fixes the incorrect permissions called out in the documentation - DESCRIBE_TAG, ASSOCIATE_TAG, DELETE_TAG, ALTER_TAG. This trebuchet release fixes the corresponding SDK and documentation. -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.16.0](service/location/CHANGELOG.md#v1160-2022-03-22) - * **Feature**: Amazon Location Service now includes a MaxResults parameter for GetDevicePositionHistory requests. -* `github.com/aws/aws-sdk-go-v2/service/polly`: [v1.14.0](service/polly/CHANGELOG.md#v1140-2022-03-22) - * **Feature**: Amazon Polly adds new Catalan voice - Arlet. Arlet is available as Neural voice only. - -# Release (2022-03-21) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.8.0](service/chimesdkmeetings/CHANGELOG.md#v180-2022-03-21) - * **Feature**: Add support for media replication to link multiple WebRTC media sessions together to reach larger and global audiences. Participants connected to a replica session can be granted access to join the primary session and can switch sessions with their existing WebRTC connection -* `github.com/aws/aws-sdk-go-v2/service/ecr`: [v1.17.0](service/ecr/CHANGELOG.md#v1170-2022-03-21) - * **Feature**: This release includes a fix in the DescribeImageScanFindings paginated output. -* `github.com/aws/aws-sdk-go-v2/service/mediaconnect`: [v1.16.0](service/mediaconnect/CHANGELOG.md#v1160-2022-03-21) - * **Feature**: This release adds support for selecting a maintenance window. -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.21.0](service/quicksight/CHANGELOG.md#v1210-2022-03-21) - * **Feature**: AWS QuickSight Service Features - Expand public API support for group management. -* `github.com/aws/aws-sdk-go-v2/service/ram`: [v1.16.1](service/ram/CHANGELOG.md#v1161-2022-03-21) - * **Documentation**: Document improvements to the RAM API operations and parameter descriptions. - -# Release (2022-03-18) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.22.0](service/glue/CHANGELOG.md#v1220-2022-03-18) - * **Feature**: Added 9 new APIs for AWS Glue Interactive Sessions: ListSessions, StopSession, CreateSession, GetSession, DeleteSession, RunStatement, GetStatement, ListStatements, CancelStatement - -# Release (2022-03-16) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/acmpca`: [v1.17.0](service/acmpca/CHANGELOG.md#v1170-2022-03-16) - * **Feature**: AWS Certificate Manager (ACM) Private Certificate Authority (CA) now supports customizable certificate subject names and extensions. -* `github.com/aws/aws-sdk-go-v2/service/amplifybackend`: [v1.13.0](service/amplifybackend/CHANGELOG.md#v1130-2022-03-16) - * **Feature**: Adding the ability to customize Cognito verification messages for email and SMS in CreateBackendAuth and UpdateBackendAuth. Adding deprecation documentation for ForgotPassword in CreateBackendAuth and UpdateBackendAuth -* `github.com/aws/aws-sdk-go-v2/service/billingconductor`: [v1.0.0](service/billingconductor/CHANGELOG.md#v100-2022-03-16) - * **Release**: New AWS service client module - * **Feature**: This is the initial SDK release for AWS Billing Conductor. The AWS Billing Conductor is a customizable billing service, allowing you to customize your billing data to match your desired business structure. -* `github.com/aws/aws-sdk-go-v2/service/s3outposts`: [v1.13.0](service/s3outposts/CHANGELOG.md#v1130-2022-03-16) - * **Feature**: S3 on Outposts is releasing a new API, ListSharedEndpoints, that lists all endpoints associated with S3 on Outpost, that has been shared by Resource Access Manager (RAM). -* `github.com/aws/aws-sdk-go-v2/service/ssmincidents`: [v1.13.0](service/ssmincidents/CHANGELOG.md#v1130-2022-03-16) - * **Feature**: Removed incorrect validation pattern for IncidentRecordSource.invokedBy - -# Release (2022-03-15) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.15.0](service/cognitoidentityprovider/CHANGELOG.md#v1150-2022-03-15) - * **Feature**: Updated EmailConfigurationType and SmsConfigurationType to reflect that you can now choose Amazon SES and Amazon SNS resources in the same Region. -* `github.com/aws/aws-sdk-go-v2/service/dataexchange`: [v1.15.0](service/dataexchange/CHANGELOG.md#v1150-2022-03-15) - * **Feature**: This feature enables data providers to use the RevokeRevision operation to revoke subscriber access to a given revision. Subscribers are unable to interact with assets within a revoked revision. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.32.0](service/ec2/CHANGELOG.md#v1320-2022-03-15) - * **Feature**: Adds the Cascade parameter to the DeleteIpam API. Customers can use this parameter to automatically delete their IPAM, including non-default scopes, pools, cidrs, and allocations. There mustn't be any pools provisioned in the default public scope to use this parameter. -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.18.1](service/ecs/CHANGELOG.md#v1181-2022-03-15) - * **Documentation**: Documentation only update to address tickets -* `github.com/aws/aws-sdk-go-v2/service/keyspaces`: [v1.0.2](service/keyspaces/CHANGELOG.md#v102-2022-03-15) - * **Documentation**: Fixing formatting issues in CLI and SDK documentation -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.15.1](service/location/CHANGELOG.md#v1151-2022-03-15) - * **Documentation**: New HERE style "VectorHereExplore" and "VectorHereExploreTruck". -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.18.1](service/rds/CHANGELOG.md#v1181-2022-03-15) - * **Documentation**: Various documentation improvements -* `github.com/aws/aws-sdk-go-v2/service/robomaker`: [v1.17.0](service/robomaker/CHANGELOG.md#v1170-2022-03-15) - * **Feature**: This release deprecates ROS, Ubuntu and Gazbeo from RoboMaker Simulation Service Software Suites in favor of user-supplied containers and Relaxed Software Suites. - -# Release (2022-03-14) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.19.0](service/configservice/CHANGELOG.md#v1190-2022-03-14) - * **Feature**: Add resourceType enums for AWS::ECR::PublicRepository and AWS::EC2::LaunchTemplate -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.20.1](service/elasticache/CHANGELOG.md#v1201-2022-03-14) - * **Documentation**: Doc only update for ElastiCache -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.23.0](service/kendra/CHANGELOG.md#v1230-2022-03-14) - * **Feature**: Amazon Kendra now provides a data source connector for Slack. For more information, see https://docs.aws.amazon.com/kendra/latest/dg/data-source-slack.html -* `github.com/aws/aws-sdk-go-v2/service/timestreamquery`: [v1.14.0](service/timestreamquery/CHANGELOG.md#v1140-2022-03-14) - * **Feature**: Amazon Timestream Scheduled Queries now support Timestamp datatype in a multi-measure record. - -# Release (2022-03-11) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.20.0](service/chime/CHANGELOG.md#v1200-2022-03-11) - * **Feature**: Chime VoiceConnector Logging APIs will now support MediaMetricLogs. Also CreateMeetingDialOut now returns AccessDeniedException. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.20.0](service/connect/CHANGELOG.md#v1200-2022-03-11) - * **Feature**: This release adds support for enabling Rich Messaging when starting a new chat session via the StartChatContact API. Rich Messaging enables the following formatting options: bold, italics, hyperlinks, bulleted lists, and numbered lists. -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.20.0](service/lambda/CHANGELOG.md#v1200-2022-03-11) - * **Feature**: Adds PrincipalOrgID support to AddPermission API. Customers can use it to manage permissions to lambda functions at AWS Organizations level. -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.18.0](service/outposts/CHANGELOG.md#v1180-2022-03-11) - * **Feature**: This release adds address filters for listSites -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.15.1](service/secretsmanager/CHANGELOG.md#v1151-2022-03-11) - * **Documentation**: Documentation updates for Secrets Manager. -* `github.com/aws/aws-sdk-go-v2/service/transcribestreaming`: [v1.6.0](service/transcribestreaming/CHANGELOG.md#v160-2022-03-11) - * **Feature**: Amazon Transcribe StartTranscription API now supports additional parameters for Language Identification feature: customVocabularies and customFilterVocabularies - -# Release (2022-03-10) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.20.0](service/lexmodelsv2/CHANGELOG.md#v1200-2022-03-10) - * **Feature**: This release makes slotTypeId an optional parameter in CreateSlot and UpdateSlot APIs in Amazon Lex V2 for model building. Customers can create and update slots without specifying a slot type id. -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.18.0](service/transcribe/CHANGELOG.md#v1180-2022-03-10) - * **Feature**: Documentation fix for API `StartMedicalTranscriptionJobRequest`, now showing min sample rate as 16khz -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.18.0](service/transfer/CHANGELOG.md#v1180-2022-03-10) - * **Feature**: Adding more descriptive error types for managed workflows - -# Release (2022-03-09) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/comprehend`: [v1.17.0](service/comprehend/CHANGELOG.md#v1170-2022-03-09) - * **Feature**: Amazon Comprehend now supports extracting the sentiment associated with entities such as brands, products and services from text documents. - -# Release (2022-03-08.3) - -* No change notes available for this release. - -# Release (2022-03-08.2) - -* No change notes available for this release. - -# Release (2022-03-08) - -## General Highlights -* **Feature**: Updated `github.com/aws/smithy-go` to latest version -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/amplify`: [v1.11.0](service/amplify/CHANGELOG.md#v1110-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/amplifyuibuilder`: [v1.5.0](service/amplifyuibuilder/CHANGELOG.md#v150-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.14.0](service/appflow/CHANGELOG.md#v1140-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/apprunner`: [v1.11.0](service/apprunner/CHANGELOG.md#v1110-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/athena`: [v1.14.0](service/athena/CHANGELOG.md#v1140-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.15.0](service/braket/CHANGELOG.md#v1150-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.7.0](service/chimesdkmeetings/CHANGELOG.md#v170-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.15.0](service/cloudtrail/CHANGELOG.md#v1150-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.19.0](service/connect/CHANGELOG.md#v1190-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/devopsguru`: [v1.16.0](service/devopsguru/CHANGELOG.md#v1160-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.31.0](service/ec2/CHANGELOG.md#v1310-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/ecr`: [v1.16.0](service/ecr/CHANGELOG.md#v1160-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.18.0](service/ecs/CHANGELOG.md#v1180-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.20.0](service/elasticache/CHANGELOG.md#v1200-2022-03-08) - * **Documentation**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.10.0](service/finspacedata/CHANGELOG.md#v1100-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/fis`: [v1.12.0](service/fis/CHANGELOG.md#v1120-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.20.0](service/fsx/CHANGELOG.md#v1200-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/gamelift`: [v1.14.0](service/gamelift/CHANGELOG.md#v1140-2022-03-08) - * **Documentation**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.15.0](service/greengrassv2/CHANGELOG.md#v1150-2022-03-08) - * **Documentation**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/internal/checksum`: [v1.1.0](service/internal/checksum/CHANGELOG.md#v110-2022-03-08) - * **Feature**: Updates the SDK's checksum validation logic to require opt-in to output response payload validation. The SDK was always preforming output response payload checksum validation, not respecting the output validation model option. Fixes [#1606](https://github.com/aws/aws-sdk-go-v2/issues/1606) -* `github.com/aws/aws-sdk-go-v2/service/kafkaconnect`: [v1.8.0](service/kafkaconnect/CHANGELOG.md#v180-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.22.0](service/kendra/CHANGELOG.md#v1220-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/keyspaces`: [v1.0.0](service/keyspaces/CHANGELOG.md#v100-2022-03-08) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/macie`: [v1.14.0](service/macie/CHANGELOG.md#v1140-2022-03-08) - * **Documentation**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/mediapackage`: [v1.15.0](service/mediapackage/CHANGELOG.md#v1150-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/mgn`: [v1.13.0](service/mgn/CHANGELOG.md#v1130-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/migrationhubrefactorspaces`: [v1.5.0](service/migrationhubrefactorspaces/CHANGELOG.md#v150-2022-03-08) - * **Documentation**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/mq`: [v1.12.0](service/mq/CHANGELOG.md#v1120-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/panorama`: [v1.6.0](service/panorama/CHANGELOG.md#v160-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.18.0](service/rds/CHANGELOG.md#v1180-2022-03-08) - * **Documentation**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/route53recoverycluster`: [v1.8.0](service/route53recoverycluster/CHANGELOG.md#v180-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry`: [v1.12.0](service/servicecatalogappregistry/CHANGELOG.md#v1120-2022-03-08) - * **Documentation**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.18.0](service/sqs/CHANGELOG.md#v1180-2022-03-08) - * **Feature**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/sts`: [v1.16.0](service/sts/CHANGELOG.md#v1160-2022-03-08) - * **Documentation**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/synthetics`: [v1.14.0](service/synthetics/CHANGELOG.md#v1140-2022-03-08) - * **Documentation**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/timestreamquery`: [v1.13.0](service/timestreamquery/CHANGELOG.md#v1130-2022-03-08) - * **Documentation**: Updated service client model to latest release. -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.17.0](service/transfer/CHANGELOG.md#v1170-2022-03-08) - * **Feature**: Updated service client model to latest release. - -# Release (2022-02-24.2) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.21.0](service/autoscaling/CHANGELOG.md#v1210-2022-02-242) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databrew`: [v1.18.0](service/databrew/CHANGELOG.md#v1180-2022-02-242) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/fms`: [v1.15.0](service/fms/CHANGELOG.md#v1150-2022-02-242) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.17.0](service/lightsail/CHANGELOG.md#v1170-2022-02-242) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.19.0](service/route53/CHANGELOG.md#v1190-2022-02-242) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.20.0](service/s3control/CHANGELOG.md#v1200-2022-02-242) - * **Feature**: API client updated - -# Release (2022-02-24) - -## General Highlights -* **Feature**: Adds RetryMaxAttempts and RetryMod to API client Options. This allows the API clients' default Retryer to be configured from the shared configuration files or environment variables. Adding a new Retry mode of `Adaptive`. `Adaptive` retry mode is an experimental mode, adding client rate limiting when throttles reponses are received from an API. See [retry.AdaptiveMode](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws/retry#AdaptiveMode) for more details, and configuration options. -* **Feature**: Updated `github.com/aws/smithy-go` to latest version -* **Bug Fix**: Fixes the AWS Sigv4 signer to trim header value's whitespace when computing the canonical headers block of the string to sign. -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.14.0 - * **Feature**: Add new AdaptiveMode retryer to aws/retry package. This new retryer uses dynamic token bucketing with client ratelimiting when throttle responses are received. - * **Feature**: Adds new interface aws.RetryerV2, replacing aws.Retryer and deprecating the GetInitialToken method in favor of GetAttemptToken so Context can be provided. The SDK will use aws.RetryerV2 internally. Wrapping aws.Retryers as aws.RetryerV2 automatically. -* `github.com/aws/aws-sdk-go-v2/config`: [v1.14.0](config/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: Adds support for loading RetryMaxAttempts and RetryMod from the environment and shared configuration files. These parameters drive how the SDK's API client will initialize its default retryer, if custome retryer has not been specified. See [config](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/config) module and [aws.Config](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#Config) for more information about and how to use these new options. - * **Feature**: Adds support for the `ca_bundle` parameter in shared config and credentials files. The usage of the file is the same as environment variable, `AWS_CA_BUNDLE`, but sourced from shared config. Fixes [#1589](https://github.com/aws/aws-sdk-go-v2/issues/1589) -* `github.com/aws/aws-sdk-go-v2/credentials`: [v1.9.0](credentials/CHANGELOG.md#v190-2022-02-24) - * **Feature**: Adds support for `SourceIdentity` to `stscreds.AssumeRoleProvider` [#1588](https://github.com/aws/aws-sdk-go-v2/pull/1588). Fixes [#1575](https://github.com/aws/aws-sdk-go-v2/issues/1575) -* `github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue`: [v1.7.0](feature/dynamodb/attributevalue/CHANGELOG.md#v170-2022-02-24) - * **Feature**: Fixes [#645](https://github.com/aws/aws-sdk-go-v2/issues/645), [#411](https://github.com/aws/aws-sdk-go-v2/issues/411) by adding support for (un)marshaling AttributeValue maps to Go maps key types of string, number, bool, and types implementing encoding.Text(un)Marshaler interface - * **Bug Fix**: Fixes [#1569](https://github.com/aws/aws-sdk-go-v2/issues/1569) inconsistent serialization of Go struct field names -* `github.com/aws/aws-sdk-go-v2/feature/dynamodb/expression`: [v1.4.0](feature/dynamodb/expression/CHANGELOG.md#v140-2022-02-24) - * **Feature**: Add support for expression names with dots via new NameBuilder function NameNoDotSplit, related to [aws/aws-sdk-go#2570](https://github.com/aws/aws-sdk-go/issues/2570) -* `github.com/aws/aws-sdk-go-v2/feature/dynamodbstreams/attributevalue`: [v1.7.0](feature/dynamodbstreams/attributevalue/CHANGELOG.md#v170-2022-02-24) - * **Feature**: Fixes [#645](https://github.com/aws/aws-sdk-go-v2/issues/645), [#411](https://github.com/aws/aws-sdk-go-v2/issues/411) by adding support for (un)marshaling AttributeValue maps to Go maps key types of string, number, bool, and types implementing encoding.Text(un)Marshaler interface - * **Bug Fix**: Fixes [#1569](https://github.com/aws/aws-sdk-go-v2/issues/1569) inconsistent serialization of Go struct field names -* `github.com/aws/aws-sdk-go-v2/service/accessanalyzer`: [v1.14.0](service/accessanalyzer/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/account`: [v1.5.0](service/account/CHANGELOG.md#v150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/acm`: [v1.13.0](service/acm/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/acmpca`: [v1.15.0](service/acmpca/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/alexaforbusiness`: [v1.13.0](service/alexaforbusiness/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/amp`: [v1.13.0](service/amp/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/amplify`: [v1.10.0](service/amplify/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/amplifybackend`: [v1.11.0](service/amplifybackend/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/amplifyuibuilder`: [v1.4.0](service/amplifyuibuilder/CHANGELOG.md#v140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/apigateway`: [v1.14.0](service/apigateway/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/apigatewaymanagementapi`: [v1.9.0](service/apigatewaymanagementapi/CHANGELOG.md#v190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/apigatewayv2`: [v1.11.0](service/apigatewayv2/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appconfig`: [v1.11.0](service/appconfig/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appconfigdata`: [v1.3.0](service/appconfigdata/CHANGELOG.md#v130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.13.0](service/appflow/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appintegrations`: [v1.12.0](service/appintegrations/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/applicationautoscaling`: [v1.14.0](service/applicationautoscaling/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/applicationcostprofiler`: [v1.8.0](service/applicationcostprofiler/CHANGELOG.md#v180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/applicationdiscoveryservice`: [v1.11.0](service/applicationdiscoveryservice/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/applicationinsights`: [v1.14.0](service/applicationinsights/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appmesh`: [v1.12.0](service/appmesh/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/apprunner`: [v1.10.0](service/apprunner/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appstream`: [v1.14.0](service/appstream/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appsync`: [v1.13.0](service/appsync/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/athena`: [v1.13.0](service/athena/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.16.0](service/auditmanager/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.20.0](service/autoscaling/CHANGELOG.md#v1200-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/autoscalingplans`: [v1.11.0](service/autoscalingplans/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/backup`: [v1.14.0](service/backup/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/backupgateway`: [v1.4.0](service/backupgateway/CHANGELOG.md#v140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/batch`: [v1.15.0](service/batch/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.14.0](service/braket/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/budgets`: [v1.11.0](service/budgets/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.18.0](service/chime/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chimesdkidentity`: [v1.8.0](service/chimesdkidentity/CHANGELOG.md#v180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.6.0](service/chimesdkmeetings/CHANGELOG.md#v160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmessaging`: [v1.8.0](service/chimesdkmessaging/CHANGELOG.md#v180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloud9`: [v1.15.0](service/cloud9/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudcontrol`: [v1.7.0](service/cloudcontrol/CHANGELOG.md#v170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/clouddirectory`: [v1.11.0](service/clouddirectory/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.19.0](service/cloudformation/CHANGELOG.md#v1190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudfront`: [v1.15.0](service/cloudfront/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudhsm`: [v1.11.0](service/cloudhsm/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudhsmv2`: [v1.12.0](service/cloudhsmv2/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudsearch`: [v1.12.0](service/cloudsearch/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudsearchdomain`: [v1.10.0](service/cloudsearchdomain/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.14.0](service/cloudtrail/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.16.0](service/cloudwatch/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchevents`: [v1.13.0](service/cloudwatchevents/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs`: [v1.14.0](service/cloudwatchlogs/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codeartifact`: [v1.11.0](service/codeartifact/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codebuild`: [v1.18.0](service/codebuild/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codecommit`: [v1.12.0](service/codecommit/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codedeploy`: [v1.13.0](service/codedeploy/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codeguruprofiler`: [v1.11.0](service/codeguruprofiler/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codegurureviewer`: [v1.14.0](service/codegurureviewer/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codepipeline`: [v1.12.0](service/codepipeline/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codestar`: [v1.10.0](service/codestar/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codestarconnections`: [v1.12.0](service/codestarconnections/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codestarnotifications`: [v1.10.0](service/codestarnotifications/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentity`: [v1.12.0](service/cognitoidentity/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.13.0](service/cognitoidentityprovider/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cognitosync`: [v1.10.0](service/cognitosync/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/comprehend`: [v1.15.0](service/comprehend/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/comprehendmedical`: [v1.12.0](service/comprehendmedical/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.16.0](service/computeoptimizer/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.17.0](service/configservice/CHANGELOG.md#v1170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.18.0](service/connect/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/connectcontactlens`: [v1.11.0](service/connectcontactlens/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/connectparticipant`: [v1.10.0](service/connectparticipant/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/costandusagereportservice`: [v1.12.0](service/costandusagereportservice/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/costexplorer`: [v1.16.0](service/costexplorer/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/customerprofiles`: [v1.16.0](service/customerprofiles/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.17.0](service/databasemigrationservice/CHANGELOG.md#v1170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databrew`: [v1.17.0](service/databrew/CHANGELOG.md#v1170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dataexchange`: [v1.13.0](service/dataexchange/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/datapipeline`: [v1.12.0](service/datapipeline/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.13.0](service/datasync/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dax`: [v1.10.0](service/dax/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/detective`: [v1.14.0](service/detective/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/devicefarm`: [v1.12.0](service/devicefarm/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/devopsguru`: [v1.15.0](service/devopsguru/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/directconnect`: [v1.16.0](service/directconnect/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/directoryservice`: [v1.12.0](service/directoryservice/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dlm`: [v1.10.0](service/dlm/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.16.0](service/docdb/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/drs`: [v1.4.0](service/drs/CHANGELOG.md#v140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.14.0](service/dynamodb/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dynamodbstreams`: [v1.12.0](service/dynamodbstreams/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ebs`: [v1.13.0](service/ebs/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.30.0](service/ec2/CHANGELOG.md#v1300-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2instanceconnect`: [v1.12.0](service/ec2instanceconnect/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ecr`: [v1.15.0](service/ecr/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ecrpublic`: [v1.12.0](service/ecrpublic/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.17.0](service/ecs/CHANGELOG.md#v1170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/efs`: [v1.15.0](service/efs/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.19.0](service/eks/CHANGELOG.md#v1190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.19.0](service/elasticache/CHANGELOG.md#v1190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk`: [v1.13.0](service/elasticbeanstalk/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticinference`: [v1.10.0](service/elasticinference/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing`: [v1.13.0](service/elasticloadbalancing/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.17.0](service/elasticloadbalancingv2/CHANGELOG.md#v1170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticsearchservice`: [v1.14.0](service/elasticsearchservice/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elastictranscoder`: [v1.12.0](service/elastictranscoder/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/emr`: [v1.16.0](service/emr/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/emrcontainers`: [v1.12.0](service/emrcontainers/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/eventbridge`: [v1.14.0](service/eventbridge/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/evidently`: [v1.5.0](service/evidently/CHANGELOG.md#v150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/finspace`: [v1.7.0](service/finspace/CHANGELOG.md#v170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.9.0](service/finspacedata/CHANGELOG.md#v190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/firehose`: [v1.13.0](service/firehose/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/fis`: [v1.11.0](service/fis/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/fms`: [v1.14.0](service/fms/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.18.0](service/forecast/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/forecastquery`: [v1.10.0](service/forecastquery/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated - * **Bug Fix**: Fixed an issue that resulted in the wrong service endpoints being constructed. -* `github.com/aws/aws-sdk-go-v2/service/frauddetector`: [v1.18.0](service/frauddetector/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.19.0](service/fsx/CHANGELOG.md#v1190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/gamelift`: [v1.13.0](service/gamelift/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/glacier`: [v1.12.0](service/glacier/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/globalaccelerator`: [v1.12.0](service/globalaccelerator/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.20.0](service/glue/CHANGELOG.md#v1200-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/grafana`: [v1.6.0](service/grafana/CHANGELOG.md#v160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/greengrass`: [v1.12.0](service/greengrass/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.14.0](service/greengrassv2/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/groundstation`: [v1.12.0](service/groundstation/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/guardduty`: [v1.12.0](service/guardduty/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/health`: [v1.14.0](service/health/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/healthlake`: [v1.13.0](service/healthlake/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/honeycode`: [v1.11.0](service/honeycode/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iam`: [v1.17.0](service/iam/CHANGELOG.md#v1170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.13.0](service/identitystore/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/imagebuilder`: [v1.18.0](service/imagebuilder/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/inspector`: [v1.11.0](service/inspector/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/inspector2`: [v1.5.0](service/inspector2/CHANGELOG.md#v150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/internal/checksum`: [v1.0.0](service/internal/checksum/CHANGELOG.md#v100-2022-02-24) - * **Release**: New module for computing checksums -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.22.0](service/iot/CHANGELOG.md#v1220-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iot1clickdevicesservice`: [v1.9.0](service/iot1clickdevicesservice/CHANGELOG.md#v190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iot1clickprojects`: [v1.10.0](service/iot1clickprojects/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotanalytics`: [v1.11.0](service/iotanalytics/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotdataplane`: [v1.10.0](service/iotdataplane/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotdeviceadvisor`: [v1.13.0](service/iotdeviceadvisor/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotevents`: [v1.13.0](service/iotevents/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ioteventsdata`: [v1.10.0](service/ioteventsdata/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotfleethub`: [v1.11.0](service/iotfleethub/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotjobsdataplane`: [v1.10.0](service/iotjobsdataplane/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotsecuretunneling`: [v1.11.0](service/iotsecuretunneling/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.19.0](service/iotsitewise/CHANGELOG.md#v1190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotthingsgraph`: [v1.11.0](service/iotthingsgraph/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iottwinmaker`: [v1.4.0](service/iottwinmaker/CHANGELOG.md#v140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.17.0](service/iotwireless/CHANGELOG.md#v1170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ivs`: [v1.15.0](service/ivs/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kafka`: [v1.16.0](service/kafka/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kafkaconnect`: [v1.7.0](service/kafkaconnect/CHANGELOG.md#v170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.21.0](service/kendra/CHANGELOG.md#v1210-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesis`: [v1.14.0](service/kinesis/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesisanalytics`: [v1.12.0](service/kinesisanalytics/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2`: [v1.13.0](service/kinesisanalyticsv2/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesisvideo`: [v1.10.0](service/kinesisvideo/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesisvideoarchivedmedia`: [v1.11.0](service/kinesisvideoarchivedmedia/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesisvideomedia`: [v1.9.0](service/kinesisvideomedia/CHANGELOG.md#v190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesisvideosignaling`: [v1.9.0](service/kinesisvideosignaling/CHANGELOG.md#v190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.15.0](service/kms/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lakeformation`: [v1.14.0](service/lakeformation/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.18.0](service/lambda/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice`: [v1.15.0](service/lexmodelbuildingservice/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.18.0](service/lexmodelsv2/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexruntimeservice`: [v1.11.0](service/lexruntimeservice/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.13.0](service/lexruntimev2/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/licensemanager`: [v1.14.0](service/licensemanager/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.16.0](service/lightsail/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.14.0](service/location/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lookoutequipment`: [v1.11.0](service/lookoutequipment/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.10.0](service/lookoutmetrics/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lookoutvision`: [v1.11.0](service/lookoutvision/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/machinelearning`: [v1.13.0](service/machinelearning/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/macie`: [v1.13.0](service/macie/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.19.0](service/macie2/CHANGELOG.md#v1190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/managedblockchain`: [v1.11.0](service/managedblockchain/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/marketplacecatalog`: [v1.11.0](service/marketplacecatalog/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/marketplacecommerceanalytics`: [v1.10.0](service/marketplacecommerceanalytics/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/marketplaceentitlementservice`: [v1.10.0](service/marketplaceentitlementservice/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/marketplacemetering`: [v1.12.0](service/marketplacemetering/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediaconnect`: [v1.14.0](service/mediaconnect/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.20.0](service/mediaconvert/CHANGELOG.md#v1200-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.18.0](service/medialive/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediapackage`: [v1.14.0](service/mediapackage/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediapackagevod`: [v1.15.0](service/mediapackagevod/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediastore`: [v1.11.0](service/mediastore/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediastoredata`: [v1.11.0](service/mediastoredata/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.15.0](service/mediatailor/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/memorydb`: [v1.8.0](service/memorydb/CHANGELOG.md#v180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mgn`: [v1.12.0](service/mgn/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/migrationhub`: [v1.11.0](service/migrationhub/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/migrationhubconfig`: [v1.11.0](service/migrationhubconfig/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/migrationhubrefactorspaces`: [v1.4.0](service/migrationhubrefactorspaces/CHANGELOG.md#v140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/migrationhubstrategy`: [v1.4.0](service/migrationhubstrategy/CHANGELOG.md#v140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mobile`: [v1.10.0](service/mobile/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mq`: [v1.11.0](service/mq/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mturk`: [v1.12.0](service/mturk/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mwaa`: [v1.11.0](service/mwaa/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/neptune`: [v1.15.0](service/neptune/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/networkfirewall`: [v1.14.0](service/networkfirewall/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/networkmanager`: [v1.11.0](service/networkmanager/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/nimble`: [v1.11.0](service/nimble/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/opensearch`: [v1.8.0](service/opensearch/CHANGELOG.md#v180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/opsworks`: [v1.12.0](service/opsworks/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/opsworkscm`: [v1.13.0](service/opsworkscm/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/organizations`: [v1.13.0](service/organizations/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.16.0](service/outposts/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/panorama`: [v1.5.0](service/panorama/CHANGELOG.md#v150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/personalize`: [v1.16.0](service/personalize/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/personalizeevents`: [v1.10.0](service/personalizeevents/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/personalizeruntime`: [v1.10.0](service/personalizeruntime/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/pi`: [v1.13.0](service/pi/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/pinpoint`: [v1.15.0](service/pinpoint/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/pinpointemail`: [v1.10.0](service/pinpointemail/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoice`: [v1.9.0](service/pinpointsmsvoice/CHANGELOG.md#v190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/polly`: [v1.12.0](service/polly/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/pricing`: [v1.13.0](service/pricing/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/proton`: [v1.11.0](service/proton/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/qldb`: [v1.13.0](service/qldb/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/qldbsession`: [v1.12.0](service/qldbsession/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.19.0](service/quicksight/CHANGELOG.md#v1190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ram`: [v1.15.0](service/ram/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rbin`: [v1.5.0](service/rbin/CHANGELOG.md#v150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.17.0](service/rds/CHANGELOG.md#v1170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rdsdata`: [v1.10.0](service/rdsdata/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.20.0](service/redshift/CHANGELOG.md#v1200-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/redshiftdata`: [v1.14.0](service/redshiftdata/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.16.0](service/rekognition/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/resiliencehub`: [v1.4.0](service/resiliencehub/CHANGELOG.md#v140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/resourcegroups`: [v1.11.0](service/resourcegroups/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi`: [v1.12.0](service/resourcegroupstaggingapi/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/robomaker`: [v1.15.0](service/robomaker/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.18.0](service/route53/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53domains`: [v1.11.0](service/route53domains/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53recoverycluster`: [v1.7.0](service/route53recoverycluster/CHANGELOG.md#v170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig`: [v1.8.0](service/route53recoverycontrolconfig/CHANGELOG.md#v180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness`: [v1.7.0](service/route53recoveryreadiness/CHANGELOG.md#v170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53resolver`: [v1.14.0](service/route53resolver/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rum`: [v1.5.0](service/rum/CHANGELOG.md#v150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.25.0](service/s3/CHANGELOG.md#v1250-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.19.0](service/s3control/CHANGELOG.md#v1190-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3outposts`: [v1.11.0](service/s3outposts/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.25.0](service/sagemaker/CHANGELOG.md#v1250-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemakera2iruntime`: [v1.11.0](service/sagemakera2iruntime/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemakeredge`: [v1.10.0](service/sagemakeredge/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemakerfeaturestoreruntime`: [v1.10.0](service/sagemakerfeaturestoreruntime/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemakerruntime`: [v1.14.0](service/sagemakerruntime/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/savingsplans`: [v1.10.0](service/savingsplans/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/schemas`: [v1.13.0](service/schemas/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.14.0](service/secretsmanager/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.18.0](service/securityhub/CHANGELOG.md#v1180-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/serverlessapplicationrepository`: [v1.10.0](service/serverlessapplicationrepository/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/servicecatalog`: [v1.12.0](service/servicecatalog/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry`: [v1.11.0](service/servicecatalogappregistry/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/servicediscovery`: [v1.16.0](service/servicediscovery/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/servicequotas`: [v1.12.0](service/servicequotas/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ses`: [v1.13.0](service/ses/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sesv2`: [v1.12.0](service/sesv2/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sfn`: [v1.12.0](service/sfn/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/shield`: [v1.15.0](service/shield/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/signer`: [v1.12.0](service/signer/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sms`: [v1.11.0](service/sms/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/snowball`: [v1.14.0](service/snowball/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/snowdevicemanagement`: [v1.7.0](service/snowdevicemanagement/CHANGELOG.md#v170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sns`: [v1.16.0](service/sns/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.17.0](service/sqs/CHANGELOG.md#v1170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.21.0](service/ssm/CHANGELOG.md#v1210-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssmcontacts`: [v1.12.0](service/ssmcontacts/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssmincidents`: [v1.11.0](service/ssmincidents/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sso`: [v1.10.0](service/sso/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssoadmin`: [v1.13.0](service/ssoadmin/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssooidc`: [v1.11.0](service/ssooidc/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/storagegateway`: [v1.15.0](service/storagegateway/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sts`: [v1.15.0](service/sts/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/support`: [v1.12.0](service/support/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/swf`: [v1.12.0](service/swf/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/synthetics`: [v1.13.0](service/synthetics/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/textract`: [v1.13.0](service/textract/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/timestreamquery`: [v1.12.0](service/timestreamquery/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/timestreamwrite`: [v1.12.0](service/timestreamwrite/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.16.0](service/transcribe/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/transcribestreaming`: [v1.4.0](service/transcribestreaming/CHANGELOG.md#v140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.16.0](service/transfer/CHANGELOG.md#v1160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/translate`: [v1.12.0](service/translate/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/voiceid`: [v1.7.0](service/voiceid/CHANGELOG.md#v170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/waf`: [v1.10.0](service/waf/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/wafregional`: [v1.11.0](service/wafregional/CHANGELOG.md#v1110-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.17.0](service/wafv2/CHANGELOG.md#v1170-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/wellarchitected`: [v1.13.0](service/wellarchitected/CHANGELOG.md#v1130-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/wisdom`: [v1.6.0](service/wisdom/CHANGELOG.md#v160-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workdocs`: [v1.10.0](service/workdocs/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/worklink`: [v1.10.0](service/worklink/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workmail`: [v1.14.0](service/workmail/CHANGELOG.md#v1140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workmailmessageflow`: [v1.10.0](service/workmailmessageflow/CHANGELOG.md#v1100-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.15.0](service/workspaces/CHANGELOG.md#v1150-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workspacesweb`: [v1.4.0](service/workspacesweb/CHANGELOG.md#v140-2022-02-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/xray`: [v1.12.0](service/xray/CHANGELOG.md#v1120-2022-02-24) - * **Feature**: API client updated - -# Release (2022-01-28) - -## General Highlights -* **Bug Fix**: Fixes the SDK's handling of `duration_sections` in the shared credentials file or specified in multiple shared config and shared credentials files under the same profile. [#1568](https://github.com/aws/aws-sdk-go-v2/pull/1568). Thanks to [Amir Szekely](https://github.com/kichik) for help reproduce this bug. -* **Bug Fix**: Updates SDK API client deserialization to pre-allocate byte slice and string response payloads, [#1565](https://github.com/aws/aws-sdk-go-v2/pull/1565). Thanks to [Tyson Mote](https://github.com/tysonmote) for submitting this PR. -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/config`: [v1.13.1](config/CHANGELOG.md#v1131-2022-01-28) - * **Bug Fix**: Fixes LoadDefaultConfig handling of errors returned by passed in functional options. Previously errors returned from the LoadOptions passed into LoadDefaultConfig were incorrectly ignored. [#1562](https://github.com/aws/aws-sdk-go-v2/pull/1562). Thanks to [Pinglei Guo](https://github.com/pingleig) for submitting this PR. - * **Bug Fix**: Updates `config` module to use os.UserHomeDir instead of hard coded environment variable for OS. [#1563](https://github.com/aws/aws-sdk-go-v2/pull/1563) -* `github.com/aws/aws-sdk-go-v2/service/applicationinsights`: [v1.13.0](service/applicationinsights/CHANGELOG.md#v1130-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.13.1](service/cloudtrail/CHANGELOG.md#v1131-2022-01-28) - * **Documentation**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/codegurureviewer`: [v1.13.1](service/codegurureviewer/CHANGELOG.md#v1131-2022-01-28) - * **Documentation**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.16.0](service/configservice/CHANGELOG.md#v1160-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.17.0](service/connect/CHANGELOG.md#v1170-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ebs`: [v1.12.1](service/ebs/CHANGELOG.md#v1121-2022-01-28) - * **Documentation**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.29.0](service/ec2/CHANGELOG.md#v1290-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ec2instanceconnect`: [v1.11.0](service/ec2instanceconnect/CHANGELOG.md#v1110-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/efs`: [v1.14.0](service/efs/CHANGELOG.md#v1140-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/fis`: [v1.10.0](service/fis/CHANGELOG.md#v1100-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/frauddetector`: [v1.17.0](service/frauddetector/CHANGELOG.md#v1170-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.18.0](service/fsx/CHANGELOG.md#v1180-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/greengrass`: [v1.11.0](service/greengrass/CHANGELOG.md#v1110-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.13.0](service/greengrassv2/CHANGELOG.md#v1130-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/guardduty`: [v1.11.0](service/guardduty/CHANGELOG.md#v1110-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/honeycode`: [v1.10.0](service/honeycode/CHANGELOG.md#v1100-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ivs`: [v1.14.0](service/ivs/CHANGELOG.md#v1140-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/kafka`: [v1.15.0](service/kafka/CHANGELOG.md#v1150-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.13.0](service/location/CHANGELOG.md#v1130-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.9.0](service/lookoutmetrics/CHANGELOG.md#v190-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.18.0](service/macie2/CHANGELOG.md#v1180-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.19.0](service/mediaconvert/CHANGELOG.md#v1190-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.14.0](service/mediatailor/CHANGELOG.md#v1140-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ram`: [v1.14.0](service/ram/CHANGELOG.md#v1140-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness`: [v1.6.1](service/route53recoveryreadiness/CHANGELOG.md#v161-2022-01-28) - * **Documentation**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.24.0](service/sagemaker/CHANGELOG.md#v1240-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.17.0](service/securityhub/CHANGELOG.md#v1170-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/storagegateway`: [v1.14.0](service/storagegateway/CHANGELOG.md#v1140-2022-01-28) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.15.0](service/transcribe/CHANGELOG.md#v1150-2022-01-28) - * **Feature**: Updated to latest API model. - -# Release (2022-01-14) - -## General Highlights -* **Feature**: Updated `github.com/aws/smithy-go` to latest version -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.13.0 - * **Bug Fix**: Updates the Retry middleware to release the retry token, on subsequent attempts. This fixes #1413, and is based on PR #1424 -* `github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue`: [v1.6.0](feature/dynamodb/attributevalue/CHANGELOG.md#v160-2022-01-14) - * **Feature**: Adds new MarshalWithOptions and UnmarshalWithOptions helpers allowing Encoding and Decoding options to be specified when serializing AttributeValues. Addresses issue: https://github.com/aws/aws-sdk-go-v2/issues/1494 -* `github.com/aws/aws-sdk-go-v2/feature/dynamodbstreams/attributevalue`: [v1.6.0](feature/dynamodbstreams/attributevalue/CHANGELOG.md#v160-2022-01-14) - * **Feature**: Adds new MarshalWithOptions and UnmarshalWithOptions helpers allowing Encoding and Decoding options to be specified when serializing AttributeValues. Addresses issue: https://github.com/aws/aws-sdk-go-v2/issues/1494 -* `github.com/aws/aws-sdk-go-v2/service/appsync`: [v1.12.0](service/appsync/CHANGELOG.md#v1120-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/autoscalingplans`: [v1.10.0](service/autoscalingplans/CHANGELOG.md#v1100-2022-01-14) - * **Documentation**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.15.0](service/computeoptimizer/CHANGELOG.md#v1150-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/costexplorer`: [v1.15.0](service/costexplorer/CHANGELOG.md#v1150-2022-01-14) - * **Documentation**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.16.0](service/databasemigrationservice/CHANGELOG.md#v1160-2022-01-14) - * **Documentation**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/databrew`: [v1.16.0](service/databrew/CHANGELOG.md#v1160-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.28.0](service/ec2/CHANGELOG.md#v1280-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.18.0](service/elasticache/CHANGELOG.md#v1180-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/elasticsearchservice`: [v1.13.0](service/elasticsearchservice/CHANGELOG.md#v1130-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.8.0](service/finspacedata/CHANGELOG.md#v180-2022-01-14) - * **Documentation**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/fms`: [v1.13.0](service/fms/CHANGELOG.md#v1130-2022-01-14) - * **Documentation**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.19.0](service/glue/CHANGELOG.md#v1190-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/honeycode`: [v1.9.0](service/honeycode/CHANGELOG.md#v190-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.12.0](service/identitystore/CHANGELOG.md#v1120-2022-01-14) - * **Documentation**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/ioteventsdata`: [v1.9.0](service/ioteventsdata/CHANGELOG.md#v190-2022-01-14) - * **Documentation**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.16.0](service/iotwireless/CHANGELOG.md#v1160-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.20.0](service/kendra/CHANGELOG.md#v1200-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.17.0](service/lexmodelsv2/CHANGELOG.md#v1170-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.12.0](service/lexruntimev2/CHANGELOG.md#v1120-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.8.0](service/lookoutmetrics/CHANGELOG.md#v180-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.17.0](service/medialive/CHANGELOG.md#v1170-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.13.0](service/mediatailor/CHANGELOG.md#v1130-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/mwaa`: [v1.10.0](service/mwaa/CHANGELOG.md#v1100-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/nimble`: [v1.10.0](service/nimble/CHANGELOG.md#v1100-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/opensearch`: [v1.7.0](service/opensearch/CHANGELOG.md#v170-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/pi`: [v1.12.0](service/pi/CHANGELOG.md#v1120-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/pinpoint`: [v1.14.0](service/pinpoint/CHANGELOG.md#v1140-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.16.0](service/rds/CHANGELOG.md#v1160-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.20.0](service/ssm/CHANGELOG.md#v1200-2022-01-14) - * **Feature**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/sso`: [v1.9.0](service/sso/CHANGELOG.md#v190-2022-01-14) - * **Documentation**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.14.0](service/transcribe/CHANGELOG.md#v1140-2022-01-14) - * **Documentation**: Updated API models -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.14.0](service/workspaces/CHANGELOG.md#v1140-2022-01-14) - * **Feature**: Updated API models - -# Release (2022-01-07) - -## General Highlights -* **Feature**: Updated `github.com/aws/smithy-go` to latest version -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/config`: [v1.12.0](config/CHANGELOG.md#v1120-2022-01-07) - * **Feature**: Add load option for CredentialCache. Adds a new member to the LoadOptions struct, CredentialsCacheOptions. This member allows specifying a function that will be used to configure the CredentialsCache. The CredentialsCacheOptions will only be used if the configuration loader will wrap the underlying credential provider in the CredentialsCache. -* `github.com/aws/aws-sdk-go-v2/service/appstream`: [v1.12.0](service/appstream/CHANGELOG.md#v1120-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.12.0](service/cloudtrail/CHANGELOG.md#v1120-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/detective`: [v1.12.0](service/detective/CHANGELOG.md#v1120-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.27.0](service/ec2/CHANGELOG.md#v1270-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.15.0](service/ecs/CHANGELOG.md#v1150-2022-01-07) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.17.0](service/eks/CHANGELOG.md#v1170-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.18.0](service/glue/CHANGELOG.md#v1180-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.11.0](service/greengrassv2/CHANGELOG.md#v1110-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.20.0](service/iot/CHANGELOG.md#v1200-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lakeformation`: [v1.12.0](service/lakeformation/CHANGELOG.md#v1120-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.16.0](service/lambda/CHANGELOG.md#v1160-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.17.0](service/mediaconvert/CHANGELOG.md#v1170-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.17.0](service/quicksight/CHANGELOG.md#v1170-2022-01-07) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.15.0](service/rds/CHANGELOG.md#v1150-2022-01-07) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.14.0](service/rekognition/CHANGELOG.md#v1140-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.23.0](service/s3/CHANGELOG.md#v1230-2022-01-07) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.17.0](service/s3control/CHANGELOG.md#v1170-2022-01-07) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3outposts`: [v1.9.0](service/s3outposts/CHANGELOG.md#v190-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.22.0](service/sagemaker/CHANGELOG.md#v1220-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.12.0](service/secretsmanager/CHANGELOG.md#v1120-2022-01-07) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssooidc`: [v1.9.0](service/ssooidc/CHANGELOG.md#v190-2022-01-07) - * **Feature**: API client updated - -# Release (2021-12-21) - -## General Highlights -* **Feature**: API Paginators now support specifying the initial starting token, and support stopping on empty string tokens. -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/accessanalyzer`: [v1.11.0](service/accessanalyzer/CHANGELOG.md#v1110-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/acm`: [v1.10.0](service/acm/CHANGELOG.md#v1100-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/apigateway`: [v1.11.0](service/apigateway/CHANGELOG.md#v1110-2021-12-21) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/applicationautoscaling`: [v1.11.0](service/applicationautoscaling/CHANGELOG.md#v1110-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/appsync`: [v1.10.0](service/appsync/CHANGELOG.md#v1100-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.17.0](service/autoscaling/CHANGELOG.md#v1170-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.3.0](service/chimesdkmeetings/CHANGELOG.md#v130-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmessaging`: [v1.5.0](service/chimesdkmessaging/CHANGELOG.md#v150-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudcontrol`: [v1.4.0](service/cloudcontrol/CHANGELOG.md#v140-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.16.0](service/cloudformation/CHANGELOG.md#v1160-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.13.0](service/cloudwatch/CHANGELOG.md#v1130-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchevents`: [v1.10.0](service/cloudwatchevents/CHANGELOG.md#v1100-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs`: [v1.11.0](service/cloudwatchlogs/CHANGELOG.md#v1110-2021-12-21) - * **Feature**: API client updated - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/codedeploy`: [v1.10.0](service/codedeploy/CHANGELOG.md#v1100-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/comprehendmedical`: [v1.9.0](service/comprehendmedical/CHANGELOG.md#v190-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.13.0](service/configservice/CHANGELOG.md#v1130-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/customerprofiles`: [v1.13.0](service/customerprofiles/CHANGELOG.md#v1130-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.14.0](service/databasemigrationservice/CHANGELOG.md#v1140-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.10.0](service/datasync/CHANGELOG.md#v1100-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/devopsguru`: [v1.12.0](service/devopsguru/CHANGELOG.md#v1120-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/directconnect`: [v1.13.0](service/directconnect/CHANGELOG.md#v1130-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.13.0](service/docdb/CHANGELOG.md#v1130-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.11.0](service/dynamodb/CHANGELOG.md#v1110-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/dynamodbstreams`: [v1.9.0](service/dynamodbstreams/CHANGELOG.md#v190-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.26.0](service/ec2/CHANGELOG.md#v1260-2021-12-21) - * **Feature**: API client updated - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/ecr`: [v1.12.0](service/ecr/CHANGELOG.md#v1120-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.14.0](service/ecs/CHANGELOG.md#v1140-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.16.0](service/elasticache/CHANGELOG.md#v1160-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing`: [v1.10.0](service/elasticloadbalancing/CHANGELOG.md#v1100-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.14.0](service/elasticloadbalancingv2/CHANGELOG.md#v1140-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/elasticsearchservice`: [v1.11.0](service/elasticsearchservice/CHANGELOG.md#v1110-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/emr`: [v1.13.0](service/emr/CHANGELOG.md#v1130-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/eventbridge`: [v1.11.0](service/eventbridge/CHANGELOG.md#v1110-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.6.0](service/finspacedata/CHANGELOG.md#v160-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.15.0](service/forecast/CHANGELOG.md#v1150-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/glacier`: [v1.9.0](service/glacier/CHANGELOG.md#v190-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/groundstation`: [v1.9.0](service/groundstation/CHANGELOG.md#v190-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/health`: [v1.11.0](service/health/CHANGELOG.md#v1110-2021-12-21) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/imagebuilder`: [v1.15.0](service/imagebuilder/CHANGELOG.md#v1150-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.19.0](service/iot/CHANGELOG.md#v1190-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesis`: [v1.11.0](service/kinesis/CHANGELOG.md#v1110-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/kinesisanalytics`: [v1.9.0](service/kinesisanalytics/CHANGELOG.md#v190-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2`: [v1.10.0](service/kinesisanalyticsv2/CHANGELOG.md#v1100-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.12.0](service/kms/CHANGELOG.md#v1120-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.15.0](service/lambda/CHANGELOG.md#v1150-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.15.0](service/lexmodelsv2/CHANGELOG.md#v1150-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.10.0](service/location/CHANGELOG.md#v1100-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.6.0](service/lookoutmetrics/CHANGELOG.md#v160-2021-12-21) - * **Feature**: API client updated - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/lookoutvision`: [v1.8.0](service/lookoutvision/CHANGELOG.md#v180-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/marketplacemetering`: [v1.9.0](service/marketplacemetering/CHANGELOG.md#v190-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/mediaconnect`: [v1.11.0](service/mediaconnect/CHANGELOG.md#v1110-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/neptune`: [v1.12.0](service/neptune/CHANGELOG.md#v1120-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/networkfirewall`: [v1.11.0](service/networkfirewall/CHANGELOG.md#v1110-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/nimble`: [v1.8.0](service/nimble/CHANGELOG.md#v180-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/opensearch`: [v1.5.0](service/opensearch/CHANGELOG.md#v150-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.13.0](service/outposts/CHANGELOG.md#v1130-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/pi`: [v1.10.0](service/pi/CHANGELOG.md#v1100-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/qldb`: [v1.10.0](service/qldb/CHANGELOG.md#v1100-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.14.0](service/rds/CHANGELOG.md#v1140-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.17.0](service/redshift/CHANGELOG.md#v1170-2021-12-21) - * **Feature**: API client updated - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/resourcegroups`: [v1.8.0](service/resourcegroups/CHANGELOG.md#v180-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi`: [v1.9.0](service/resourcegroupstaggingapi/CHANGELOG.md#v190-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.15.0](service/route53/CHANGELOG.md#v1150-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53domains`: [v1.8.0](service/route53domains/CHANGELOG.md#v180-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig`: [v1.5.0](service/route53recoverycontrolconfig/CHANGELOG.md#v150-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.22.0](service/s3/CHANGELOG.md#v1220-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.16.0](service/s3control/CHANGELOG.md#v1160-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.21.0](service/sagemaker/CHANGELOG.md#v1210-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/savingsplans`: [v1.7.3](service/savingsplans/CHANGELOG.md#v173-2021-12-21) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.11.0](service/secretsmanager/CHANGELOG.md#v1110-2021-12-21) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.14.0](service/securityhub/CHANGELOG.md#v1140-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sfn`: [v1.9.0](service/sfn/CHANGELOG.md#v190-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/sms`: [v1.8.0](service/sms/CHANGELOG.md#v180-2021-12-21) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sns`: [v1.13.0](service/sns/CHANGELOG.md#v1130-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.14.0](service/sqs/CHANGELOG.md#v1140-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.18.0](service/ssm/CHANGELOG.md#v1180-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/sts`: [v1.12.0](service/sts/CHANGELOG.md#v1120-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/support`: [v1.9.0](service/support/CHANGELOG.md#v190-2021-12-21) - * **Documentation**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/swf`: [v1.9.0](service/swf/CHANGELOG.md#v190-2021-12-21) - * **Feature**: Updated to latest service endpoints -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.13.0](service/transfer/CHANGELOG.md#v1130-2021-12-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workmail`: [v1.11.0](service/workmail/CHANGELOG.md#v1110-2021-12-21) - * **Feature**: API client updated - -# Release (2021-12-03) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/accessanalyzer`: [v1.10.1](service/accessanalyzer/CHANGELOG.md#v1101-2021-12-03) - * **Bug Fix**: Fixed an issue that prevent auto-filling of an API's idempotency parameters when not explictly provided by the caller. -* `github.com/aws/aws-sdk-go-v2/service/amp`: [v1.9.3](service/amp/CHANGELOG.md#v193-2021-12-03) - * **Bug Fix**: Fixed an issue that prevent auto-filling of an API's idempotency parameters when not explictly provided by the caller. -* `github.com/aws/aws-sdk-go-v2/service/amplifyuibuilder`: [v1.0.0](service/amplifyuibuilder/CHANGELOG.md#v100-2021-12-03) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/appmesh`: [v1.8.3](service/appmesh/CHANGELOG.md#v183-2021-12-03) - * **Bug Fix**: Fixed an issue that prevent auto-filling of an API's idempotency parameters when not explictly provided by the caller. -* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.10.2](service/braket/CHANGELOG.md#v1102-2021-12-03) - * **Bug Fix**: Fixed an issue that prevent auto-filling of an API's idempotency parameters when not explictly provided by the caller. -* `github.com/aws/aws-sdk-go-v2/service/codeguruprofiler`: [v1.7.3](service/codeguruprofiler/CHANGELOG.md#v173-2021-12-03) - * **Bug Fix**: Fixed an issue that prevent auto-filling of an API's idempotency parameters when not explictly provided by the caller. -* `github.com/aws/aws-sdk-go-v2/service/evidently`: [v1.1.1](service/evidently/CHANGELOG.md#v111-2021-12-03) - * **Bug Fix**: Fixed a bug that prevented the resolution of the correct endpoint for some API operations. -* `github.com/aws/aws-sdk-go-v2/service/grafana`: [v1.2.3](service/grafana/CHANGELOG.md#v123-2021-12-03) - * **Bug Fix**: Fixed an issue that prevent auto-filling of an API's idempotency parameters when not explictly provided by the caller. -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.9.2](service/location/CHANGELOG.md#v192-2021-12-03) - * **Bug Fix**: Fixed a bug that prevented the resolution of the correct endpoint for some API operations. - * **Bug Fix**: Fixed an issue that caused some operations to not be signed using sigv4, resulting in authentication failures. -* `github.com/aws/aws-sdk-go-v2/service/networkmanager`: [v1.7.0](service/networkmanager/CHANGELOG.md#v170-2021-12-03) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/nimble`: [v1.7.3](service/nimble/CHANGELOG.md#v173-2021-12-03) - * **Bug Fix**: Fixed an issue that prevent auto-filling of an API's idempotency parameters when not explictly provided by the caller. -* `github.com/aws/aws-sdk-go-v2/service/proton`: [v1.7.2](service/proton/CHANGELOG.md#v172-2021-12-03) - * **Bug Fix**: Fixed an issue that prevent auto-filling of an API's idempotency parameters when not explictly provided by the caller. -* `github.com/aws/aws-sdk-go-v2/service/ram`: [v1.10.0](service/ram/CHANGELOG.md#v1100-2021-12-03) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.12.0](service/rekognition/CHANGELOG.md#v1120-2021-12-03) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/snowdevicemanagement`: [v1.3.3](service/snowdevicemanagement/CHANGELOG.md#v133-2021-12-03) - * **Bug Fix**: Fixed an issue that prevent auto-filling of an API's idempotency parameters when not explictly provided by the caller. -* `github.com/aws/aws-sdk-go-v2/service/wisdom`: [v1.2.3](service/wisdom/CHANGELOG.md#v123-2021-12-03) - * **Bug Fix**: Fixed an issue that prevent auto-filling of an API's idempotency parameters when not explictly provided by the caller. - -# Release (2021-12-02) - -## General Highlights -* **Bug Fix**: Fixes a bug that prevented aws.EndpointResolverWithOptions from being used by the service client. ([#1514](https://github.com/aws/aws-sdk-go-v2/pull/1514)) -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/config`: [v1.11.0](config/CHANGELOG.md#v1110-2021-12-02) - * **Feature**: Add support for specifying `EndpointResolverWithOptions` on `LoadOptions`, and associated `WithEndpointResolverWithOptions`. -* `github.com/aws/aws-sdk-go-v2/service/accessanalyzer`: [v1.10.0](service/accessanalyzer/CHANGELOG.md#v1100-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/applicationinsights`: [v1.9.0](service/applicationinsights/CHANGELOG.md#v190-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/backupgateway`: [v1.0.0](service/backupgateway/CHANGELOG.md#v100-2021-12-02) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/cloudhsm`: [v1.8.0](service/cloudhsm/CHANGELOG.md#v180-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/devopsguru`: [v1.11.0](service/devopsguru/CHANGELOG.md#v1110-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/directconnect`: [v1.12.0](service/directconnect/CHANGELOG.md#v1120-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.10.0](service/dynamodb/CHANGELOG.md#v1100-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.25.0](service/ec2/CHANGELOG.md#v1250-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/evidently`: [v1.1.0](service/evidently/CHANGELOG.md#v110-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.14.0](service/fsx/CHANGELOG.md#v1140-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.16.0](service/glue/CHANGELOG.md#v1160-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/inspector2`: [v1.1.0](service/inspector2/CHANGELOG.md#v110-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.18.0](service/iot/CHANGELOG.md#v1180-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iottwinmaker`: [v1.0.0](service/iottwinmaker/CHANGELOG.md#v100-2021-12-02) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/kafka`: [v1.11.0](service/kafka/CHANGELOG.md#v1110-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.17.0](service/kendra/CHANGELOG.md#v1170-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesis`: [v1.10.0](service/kinesis/CHANGELOG.md#v1100-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lakeformation`: [v1.10.0](service/lakeformation/CHANGELOG.md#v1100-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.14.0](service/lexmodelsv2/CHANGELOG.md#v1140-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.10.0](service/lexruntimev2/CHANGELOG.md#v1100-2021-12-02) - * **Feature**: Support has been added for the `StartConversation` API. -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.12.0](service/outposts/CHANGELOG.md#v1120-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rbin`: [v1.1.0](service/rbin/CHANGELOG.md#v110-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/redshiftdata`: [v1.10.0](service/redshiftdata/CHANGELOG.md#v1100-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rum`: [v1.1.0](service/rum/CHANGELOG.md#v110-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.21.0](service/s3/CHANGELOG.md#v1210-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.20.0](service/sagemaker/CHANGELOG.md#v1200-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemakerruntime`: [v1.11.0](service/sagemakerruntime/CHANGELOG.md#v1110-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/shield`: [v1.11.0](service/shield/CHANGELOG.md#v1110-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/snowball`: [v1.10.0](service/snowball/CHANGELOG.md#v1100-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/storagegateway`: [v1.10.0](service/storagegateway/CHANGELOG.md#v1100-2021-12-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workspacesweb`: [v1.0.0](service/workspacesweb/CHANGELOG.md#v100-2021-12-02) - * **Release**: New AWS service client module - -# Release (2021-11-30) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.16.0](service/autoscaling/CHANGELOG.md#v1160-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/backup`: [v1.10.0](service/backup/CHANGELOG.md#v1100-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.10.0](service/braket/CHANGELOG.md#v1100-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.2.0](service/chimesdkmeetings/CHANGELOG.md#v120-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.15.0](service/cloudformation/CHANGELOG.md#v1150-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.13.0](service/computeoptimizer/CHANGELOG.md#v1130-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.13.0](service/connect/CHANGELOG.md#v1130-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/customerprofiles`: [v1.12.0](service/customerprofiles/CHANGELOG.md#v1120-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.13.0](service/databasemigrationservice/CHANGELOG.md#v1130-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dataexchange`: [v1.9.0](service/dataexchange/CHANGELOG.md#v190-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.9.0](service/dynamodb/CHANGELOG.md#v190-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.24.0](service/ec2/CHANGELOG.md#v1240-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ecr`: [v1.11.0](service/ecr/CHANGELOG.md#v1110-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.13.0](service/ecs/CHANGELOG.md#v1130-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.15.0](service/eks/CHANGELOG.md#v1150-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.15.0](service/elasticache/CHANGELOG.md#v1150-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.13.0](service/elasticloadbalancingv2/CHANGELOG.md#v1130-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticsearchservice`: [v1.10.0](service/elasticsearchservice/CHANGELOG.md#v1100-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/evidently`: [v1.0.0](service/evidently/CHANGELOG.md#v100-2021-11-30) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.5.0](service/finspacedata/CHANGELOG.md#v150-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/imagebuilder`: [v1.14.0](service/imagebuilder/CHANGELOG.md#v1140-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/inspector2`: [v1.0.0](service/inspector2/CHANGELOG.md#v100-2021-11-30) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery`: [v1.3.2](service/internal/endpoint-discovery/CHANGELOG.md#v132-2021-11-30) - * **Bug Fix**: Fixed a race condition that caused concurrent calls relying on endpoint discovery to share the same `url.URL` reference in their operation's http.Request. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.17.0](service/iot/CHANGELOG.md#v1170-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotdeviceadvisor`: [v1.9.0](service/iotdeviceadvisor/CHANGELOG.md#v190-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.15.0](service/iotsitewise/CHANGELOG.md#v1150-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.13.0](service/iotwireless/CHANGELOG.md#v1130-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.14.0](service/lambda/CHANGELOG.md#v1140-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.14.0](service/macie2/CHANGELOG.md#v1140-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mgn`: [v1.8.0](service/mgn/CHANGELOG.md#v180-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/migrationhubrefactorspaces`: [v1.0.0](service/migrationhubrefactorspaces/CHANGELOG.md#v100-2021-11-30) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/opensearch`: [v1.4.0](service/opensearch/CHANGELOG.md#v140-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.11.0](service/outposts/CHANGELOG.md#v1110-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/personalize`: [v1.12.0](service/personalize/CHANGELOG.md#v1120-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/personalizeruntime`: [v1.7.0](service/personalizeruntime/CHANGELOG.md#v170-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/pinpoint`: [v1.12.0](service/pinpoint/CHANGELOG.md#v1120-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/proton`: [v1.7.0](service/proton/CHANGELOG.md#v170-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.15.0](service/quicksight/CHANGELOG.md#v1150-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rbin`: [v1.0.0](service/rbin/CHANGELOG.md#v100-2021-11-30) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.13.0](service/rds/CHANGELOG.md#v1130-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.16.0](service/redshift/CHANGELOG.md#v1160-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rum`: [v1.0.0](service/rum/CHANGELOG.md#v100-2021-11-30) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.20.0](service/s3/CHANGELOG.md#v1200-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.15.0](service/s3control/CHANGELOG.md#v1150-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.13.0](service/sqs/CHANGELOG.md#v1130-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.17.0](service/ssm/CHANGELOG.md#v1170-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sts`: [v1.11.0](service/sts/CHANGELOG.md#v1110-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/textract`: [v1.10.0](service/textract/CHANGELOG.md#v1100-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/timestreamquery`: [v1.8.0](service/timestreamquery/CHANGELOG.md#v180-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/timestreamwrite`: [v1.8.0](service/timestreamwrite/CHANGELOG.md#v180-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/transcribestreaming`: [v1.1.0](service/transcribestreaming/CHANGELOG.md#v110-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/translate`: [v1.8.0](service/translate/CHANGELOG.md#v180-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/wellarchitected`: [v1.9.0](service/wellarchitected/CHANGELOG.md#v190-2021-11-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.11.0](service/workspaces/CHANGELOG.md#v1110-2021-11-30) - * **Feature**: API client updated - -# Release (2021-11-19) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.11.1 - * **Bug Fix**: Fixed a bug that prevented aws.EndpointResolverWithOptionsFunc from satisfying the aws.EndpointResolverWithOptions interface. -* `github.com/aws/aws-sdk-go-v2/service/amplifybackend`: [v1.8.0](service/amplifybackend/CHANGELOG.md#v180-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/apigateway`: [v1.10.0](service/apigateway/CHANGELOG.md#v1100-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appconfig`: [v1.7.0](service/appconfig/CHANGELOG.md#v170-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appconfigdata`: [v1.0.0](service/appconfigdata/CHANGELOG.md#v100-2021-11-19) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/applicationinsights`: [v1.8.0](service/applicationinsights/CHANGELOG.md#v180-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appstream`: [v1.10.0](service/appstream/CHANGELOG.md#v1100-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.12.0](service/auditmanager/CHANGELOG.md#v1120-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/batch`: [v1.11.0](service/batch/CHANGELOG.md#v1110-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.14.0](service/chime/CHANGELOG.md#v1140-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.1.0](service/chimesdkmeetings/CHANGELOG.md#v110-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.14.0](service/cloudformation/CHANGELOG.md#v1140-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.10.0](service/cloudtrail/CHANGELOG.md#v1100-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.12.0](service/cloudwatch/CHANGELOG.md#v1120-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.12.0](service/connect/CHANGELOG.md#v1120-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.12.0](service/databasemigrationservice/CHANGELOG.md#v1120-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databrew`: [v1.13.0](service/databrew/CHANGELOG.md#v1130-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/devopsguru`: [v1.10.0](service/devopsguru/CHANGELOG.md#v1100-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/drs`: [v1.0.0](service/drs/CHANGELOG.md#v100-2021-11-19) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/dynamodbstreams`: [v1.8.0](service/dynamodbstreams/CHANGELOG.md#v180-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.23.0](service/ec2/CHANGELOG.md#v1230-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.14.0](service/eks/CHANGELOG.md#v1140-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.14.0](service/forecast/CHANGELOG.md#v1140-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ivs`: [v1.10.0](service/ivs/CHANGELOG.md#v1100-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kafka`: [v1.10.0](service/kafka/CHANGELOG.md#v1100-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.16.0](service/kendra/CHANGELOG.md#v1160-2021-11-19) - * **Announcement**: Fix API modeling bug incorrectly generating `DocumentAttributeValue` type as a union instead of a structure. This update corrects this bug by correcting the `DocumentAttributeValue` type to be a `struct` instead of an `interface`. This change also removes the `DocumentAttributeValueMember` types. To migrate to this change your application using service/kendra will need to be updated to use struct members in `DocumentAttributeValue` instead of `DocumentAttributeValueMember` types. - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.11.0](service/kms/CHANGELOG.md#v1110-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.13.0](service/lambda/CHANGELOG.md#v1130-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.13.0](service/lexmodelsv2/CHANGELOG.md#v1130-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.9.0](service/lexruntimev2/CHANGELOG.md#v190-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.9.0](service/location/CHANGELOG.md#v190-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.15.0](service/mediaconvert/CHANGELOG.md#v1150-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.14.0](service/medialive/CHANGELOG.md#v1140-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mgn`: [v1.7.0](service/mgn/CHANGELOG.md#v170-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/migrationhubstrategy`: [v1.0.0](service/migrationhubstrategy/CHANGELOG.md#v100-2021-11-19) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/qldb`: [v1.9.0](service/qldb/CHANGELOG.md#v190-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/qldbsession`: [v1.9.0](service/qldbsession/CHANGELOG.md#v190-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.15.0](service/redshift/CHANGELOG.md#v1150-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sns`: [v1.12.0](service/sns/CHANGELOG.md#v1120-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.16.0](service/ssm/CHANGELOG.md#v1160-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.12.0](service/transfer/CHANGELOG.md#v1120-2021-11-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.14.0](service/wafv2/CHANGELOG.md#v1140-2021-11-19) - * **Feature**: API client updated - -# Release (2021-11-12) - -## General Highlights -* **Feature**: Service clients now support custom endpoints that have an initial URI path defined. -* **Feature**: Waiters now have a `WaitForOutput` method, which can be used to retrieve the output of the successful wait operation. Thank you to [Andrew Haines](https://github.com/haines) for contributing this feature. -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/backup`: [v1.9.0](service/backup/CHANGELOG.md#v190-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/batch`: [v1.10.0](service/batch/CHANGELOG.md#v1100-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings`: [v1.0.0](service/chimesdkmeetings/CHANGELOG.md#v100-2021-11-12) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.12.0](service/computeoptimizer/CHANGELOG.md#v1120-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.11.0](service/connect/CHANGELOG.md#v1110-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.12.0](service/docdb/CHANGELOG.md#v1120-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.8.0](service/dynamodb/CHANGELOG.md#v180-2021-11-12) - * **Documentation**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.22.0](service/ec2/CHANGELOG.md#v1220-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.12.0](service/ecs/CHANGELOG.md#v1120-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/gamelift`: [v1.9.0](service/gamelift/CHANGELOG.md#v190-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.9.0](service/greengrassv2/CHANGELOG.md#v190-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/health`: [v1.10.0](service/health/CHANGELOG.md#v1100-2021-11-12) - * **Documentation**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.9.0](service/identitystore/CHANGELOG.md#v190-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.12.0](service/iotwireless/CHANGELOG.md#v1120-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/neptune`: [v1.11.0](service/neptune/CHANGELOG.md#v1110-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.12.0](service/rds/CHANGELOG.md#v1120-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/resiliencehub`: [v1.0.0](service/resiliencehub/CHANGELOG.md#v100-2021-11-12) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi`: [v1.8.0](service/resourcegroupstaggingapi/CHANGELOG.md#v180-2021-11-12) - * **Documentation**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.14.0](service/s3control/CHANGELOG.md#v1140-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.19.0](service/sagemaker/CHANGELOG.md#v1190-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/sagemakerruntime`: [v1.10.0](service/sagemakerruntime/CHANGELOG.md#v1100-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ssmincidents`: [v1.7.0](service/ssmincidents/CHANGELOG.md#v170-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.11.0](service/transcribe/CHANGELOG.md#v1110-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/translate`: [v1.7.0](service/translate/CHANGELOG.md#v170-2021-11-12) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.13.0](service/wafv2/CHANGELOG.md#v1130-2021-11-12) - * **Feature**: Updated service to latest API model. - -# Release (2021-11-06) - -## General Highlights -* **Feature**: The SDK now supports configuration of FIPS and DualStack endpoints using environment variables, shared configuration, or programmatically. -* **Feature**: Updated `github.com/aws/smithy-go` to latest version -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream`: [v1.0.0](aws/protocol/eventstream/CHANGELOG.md#v100-2021-11-06) - * **Announcement**: Support has been added for AWS EventStream APIs for Kinesis, S3, and Transcribe Streaming. Support for the Lex Runtime V2 EventStream API will be added in a future release. - * **Release**: Protocol support has been added for AWS event stream. -* `github.com/aws/aws-sdk-go-v2/internal/endpoints/v2`: [v2.0.0](internal/endpoints/v2/CHANGELOG.md#v200-2021-11-06) - * **Release**: Endpoint Variant Model Support -* `github.com/aws/aws-sdk-go-v2/service/applicationinsights`: [v1.6.0](service/applicationinsights/CHANGELOG.md#v160-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/appstream`: [v1.8.0](service/appstream/CHANGELOG.md#v180-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.11.0](service/auditmanager/CHANGELOG.md#v1110-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.14.0](service/autoscaling/CHANGELOG.md#v1140-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.13.0](service/chime/CHANGELOG.md#v1130-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/chimesdkidentity`: [v1.4.0](service/chimesdkidentity/CHANGELOG.md#v140-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmessaging`: [v1.4.0](service/chimesdkmessaging/CHANGELOG.md#v140-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/cloudfront`: [v1.10.0](service/cloudfront/CHANGELOG.md#v1100-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/codecommit`: [v1.7.0](service/codecommit/CHANGELOG.md#v170-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.10.0](service/connect/CHANGELOG.md#v1100-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/connectcontactlens`: [v1.7.0](service/connectcontactlens/CHANGELOG.md#v170-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/connectparticipant`: [v1.6.0](service/connectparticipant/CHANGELOG.md#v160-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.10.0](service/databasemigrationservice/CHANGELOG.md#v1100-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.8.0](service/datasync/CHANGELOG.md#v180-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.11.0](service/docdb/CHANGELOG.md#v1110-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ebs`: [v1.9.0](service/ebs/CHANGELOG.md#v190-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.21.0](service/ec2/CHANGELOG.md#v1210-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ecr`: [v1.9.0](service/ecr/CHANGELOG.md#v190-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.11.0](service/ecs/CHANGELOG.md#v1110-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.12.0](service/eks/CHANGELOG.md#v1120-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.13.0](service/elasticache/CHANGELOG.md#v1130-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/elasticsearchservice`: [v1.9.0](service/elasticsearchservice/CHANGELOG.md#v190-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/emrcontainers`: [v1.8.0](service/emrcontainers/CHANGELOG.md#v180-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/finspace`: [v1.4.0](service/finspace/CHANGELOG.md#v140-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.12.0](service/fsx/CHANGELOG.md#v1120-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/gamelift`: [v1.8.0](service/gamelift/CHANGELOG.md#v180-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/health`: [v1.9.0](service/health/CHANGELOG.md#v190-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/iam`: [v1.12.0](service/iam/CHANGELOG.md#v1120-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/internal/eventstreamtesting`: [v1.0.0](service/internal/eventstreamtesting/CHANGELOG.md#v100-2021-11-06) - * **Release**: Protocol support has been added for AWS event stream. -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.13.0](service/iotsitewise/CHANGELOG.md#v1130-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.14.0](service/kendra/CHANGELOG.md#v1140-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/kinesis`: [v1.8.0](service/kinesis/CHANGELOG.md#v180-2021-11-06) - * **Feature**: Support has been added for the SubscribeToShard API. -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.9.0](service/kms/CHANGELOG.md#v190-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.12.0](service/lightsail/CHANGELOG.md#v1120-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.13.0](service/macie2/CHANGELOG.md#v1130-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/mgn`: [v1.6.0](service/mgn/CHANGELOG.md#v160-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/neptune`: [v1.10.0](service/neptune/CHANGELOG.md#v1100-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/networkmanager`: [v1.6.0](service/networkmanager/CHANGELOG.md#v160-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/nimble`: [v1.6.0](service/nimble/CHANGELOG.md#v160-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/opensearch`: [v1.3.0](service/opensearch/CHANGELOG.md#v130-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.14.0](service/quicksight/CHANGELOG.md#v1140-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.11.0](service/rds/CHANGELOG.md#v1110-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.10.0](service/rekognition/CHANGELOG.md#v1100-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/route53resolver`: [v1.9.0](service/route53resolver/CHANGELOG.md#v190-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.18.0](service/s3/CHANGELOG.md#v1180-2021-11-06) - * **Feature**: Support has been added for the SelectObjectContent API. - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.13.0](service/s3control/CHANGELOG.md#v1130-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.18.0](service/sagemaker/CHANGELOG.md#v1180-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/servicediscovery`: [v1.11.0](service/servicediscovery/CHANGELOG.md#v1110-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ssmincidents`: [v1.6.0](service/ssmincidents/CHANGELOG.md#v160-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/sso`: [v1.6.0](service/sso/CHANGELOG.md#v160-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/storagegateway`: [v1.8.0](service/storagegateway/CHANGELOG.md#v180-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/support`: [v1.7.0](service/support/CHANGELOG.md#v170-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/textract`: [v1.8.0](service/textract/CHANGELOG.md#v180-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.10.0](service/transcribe/CHANGELOG.md#v1100-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/transcribestreaming`: [v1.0.0](service/transcribestreaming/CHANGELOG.md#v100-2021-11-06) - * **Release**: New AWS service client module - * **Feature**: Support has been added for the StartStreamTranscription and StartMedicalStreamTranscription APIs. -* `github.com/aws/aws-sdk-go-v2/service/waf`: [v1.6.0](service/waf/CHANGELOG.md#v160-2021-11-06) - * **Feature**: Updated service to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/wisdom`: [v1.2.0](service/wisdom/CHANGELOG.md#v120-2021-11-06) - * **Feature**: Updated service to latest API model. - -# Release (2021-10-21) - -## General Highlights -* **Feature**: Updated to latest version -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.10.0 - * **Feature**: Adds dynamic signing middleware that switches to unsigned payload when TLS is enabled. -* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.8.0](service/appflow/CHANGELOG.md#v180-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/applicationautoscaling`: [v1.8.0](service/applicationautoscaling/CHANGELOG.md#v180-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.13.0](service/autoscaling/CHANGELOG.md#v1130-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmessaging`: [v1.3.0](service/chimesdkmessaging/CHANGELOG.md#v130-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.11.0](service/cloudformation/CHANGELOG.md#v1110-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudsearch`: [v1.7.0](service/cloudsearch/CHANGELOG.md#v170-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.7.0](service/cloudtrail/CHANGELOG.md#v170-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.9.0](service/cloudwatch/CHANGELOG.md#v190-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchevents`: [v1.7.0](service/cloudwatchevents/CHANGELOG.md#v170-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs`: [v1.8.0](service/cloudwatchlogs/CHANGELOG.md#v180-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codedeploy`: [v1.7.0](service/codedeploy/CHANGELOG.md#v170-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.10.0](service/configservice/CHANGELOG.md#v1100-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dataexchange`: [v1.7.0](service/dataexchange/CHANGELOG.md#v170-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/directconnect`: [v1.9.0](service/directconnect/CHANGELOG.md#v190-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.10.0](service/docdb/CHANGELOG.md#v1100-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.6.0](service/dynamodb/CHANGELOG.md#v160-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.20.0](service/ec2/CHANGELOG.md#v1200-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ecr`: [v1.8.0](service/ecr/CHANGELOG.md#v180-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.10.0](service/ecs/CHANGELOG.md#v1100-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/efs`: [v1.9.0](service/efs/CHANGELOG.md#v190-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.12.0](service/elasticache/CHANGELOG.md#v1120-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing`: [v1.7.0](service/elasticloadbalancing/CHANGELOG.md#v170-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.10.0](service/elasticloadbalancingv2/CHANGELOG.md#v1100-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/emr`: [v1.10.0](service/emr/CHANGELOG.md#v1100-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/eventbridge`: [v1.8.0](service/eventbridge/CHANGELOG.md#v180-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/glacier`: [v1.6.0](service/glacier/CHANGELOG.md#v160-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.13.0](service/glue/CHANGELOG.md#v1130-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ivs`: [v1.8.0](service/ivs/CHANGELOG.md#v180-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.13.0](service/kendra/CHANGELOG.md#v1130-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesis`: [v1.7.0](service/kinesis/CHANGELOG.md#v170-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2`: [v1.7.0](service/kinesisanalyticsv2/CHANGELOG.md#v170-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.8.0](service/kms/CHANGELOG.md#v180-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.10.0](service/lambda/CHANGELOG.md#v1100-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.13.0](service/mediaconvert/CHANGELOG.md#v1130-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediapackage`: [v1.9.0](service/mediapackage/CHANGELOG.md#v190-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediapackagevod`: [v1.10.0](service/mediapackagevod/CHANGELOG.md#v1100-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.9.0](service/mediatailor/CHANGELOG.md#v190-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/neptune`: [v1.9.0](service/neptune/CHANGELOG.md#v190-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/panorama`: [v1.0.0](service/panorama/CHANGELOG.md#v100-2021-10-21) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.13.0](service/quicksight/CHANGELOG.md#v1130-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.10.0](service/rds/CHANGELOG.md#v1100-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.12.0](service/redshift/CHANGELOG.md#v1120-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/robomaker`: [v1.10.0](service/robomaker/CHANGELOG.md#v1100-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.17.0](service/s3/CHANGELOG.md#v1170-2021-10-21) - * **Feature**: Updates S3 streaming operations - PutObject, UploadPart, WriteGetObjectResponse to use unsigned payload signing auth when TLS is enabled. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.17.0](service/sagemaker/CHANGELOG.md#v1170-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.12.0](service/securityhub/CHANGELOG.md#v1120-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sfn`: [v1.6.0](service/sfn/CHANGELOG.md#v160-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sns`: [v1.9.0](service/sns/CHANGELOG.md#v190-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.10.0](service/sqs/CHANGELOG.md#v1100-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/storagegateway`: [v1.7.0](service/storagegateway/CHANGELOG.md#v170-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sts`: [v1.8.0](service/sts/CHANGELOG.md#v180-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/swf`: [v1.6.0](service/swf/CHANGELOG.md#v160-2021-10-21) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workmail`: [v1.8.0](service/workmail/CHANGELOG.md#v180-2021-10-21) - * **Feature**: API client updated - -# Release (2021-10-11) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/feature/ec2/imds`: [v1.6.0](feature/ec2/imds/CHANGELOG.md#v160-2021-10-11) - * **Feature**: Respect passed in Context Deadline/Timeout. Updates the IMDS Client operations to not override the passed in Context's Deadline or Timeout options. If an Client operation is called with a Context with a Deadline or Timeout, the client will no longer override it with the client's default timeout. - * **Bug Fix**: Fix IMDS client's response handling and operation timeout race. Fixes #1253 -* `github.com/aws/aws-sdk-go-v2/service/amplifybackend`: [v1.5.0](service/amplifybackend/CHANGELOG.md#v150-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/applicationautoscaling`: [v1.7.0](service/applicationautoscaling/CHANGELOG.md#v170-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/apprunner`: [v1.3.0](service/apprunner/CHANGELOG.md#v130-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/backup`: [v1.6.0](service/backup/CHANGELOG.md#v160-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.11.0](service/chime/CHANGELOG.md#v1110-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codebuild`: [v1.11.0](service/codebuild/CHANGELOG.md#v1110-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databrew`: [v1.10.0](service/databrew/CHANGELOG.md#v1100-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.19.0](service/ec2/CHANGELOG.md#v1190-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/efs`: [v1.8.0](service/efs/CHANGELOG.md#v180-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.9.0](service/elasticloadbalancingv2/CHANGELOG.md#v190-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/firehose`: [v1.7.0](service/firehose/CHANGELOG.md#v170-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/frauddetector`: [v1.10.0](service/frauddetector/CHANGELOG.md#v1100-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.10.0](service/fsx/CHANGELOG.md#v1100-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.12.0](service/glue/CHANGELOG.md#v1120-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/grafana`: [v1.0.0](service/grafana/CHANGELOG.md#v100-2021-10-11) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotevents`: [v1.8.0](service/iotevents/CHANGELOG.md#v180-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.12.0](service/kendra/CHANGELOG.md#v1120-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.7.0](service/kms/CHANGELOG.md#v170-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.9.0](service/lexmodelsv2/CHANGELOG.md#v190-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.6.0](service/lexruntimev2/CHANGELOG.md#v160-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.6.0](service/location/CHANGELOG.md#v160-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.12.0](service/mediaconvert/CHANGELOG.md#v1120-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.10.0](service/medialive/CHANGELOG.md#v1100-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.16.0](service/sagemaker/CHANGELOG.md#v1160-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.7.0](service/secretsmanager/CHANGELOG.md#v170-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.11.0](service/securityhub/CHANGELOG.md#v1110-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.12.0](service/ssm/CHANGELOG.md#v1120-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssooidc`: [v1.6.0](service/ssooidc/CHANGELOG.md#v160-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/synthetics`: [v1.7.0](service/synthetics/CHANGELOG.md#v170-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/textract`: [v1.6.0](service/textract/CHANGELOG.md#v160-2021-10-11) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workmail`: [v1.7.0](service/workmail/CHANGELOG.md#v170-2021-10-11) - * **Feature**: API client updated - -# Release (2021-09-30) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/account`: [v1.0.0](service/account/CHANGELOG.md#v100-2021-09-30) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/amp`: [v1.6.0](service/amp/CHANGELOG.md#v160-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appintegrations`: [v1.7.0](service/appintegrations/CHANGELOG.md#v170-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudcontrol`: [v1.0.0](service/cloudcontrol/CHANGELOG.md#v100-2021-09-30) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudhsmv2`: [v1.5.0](service/cloudhsmv2/CHANGELOG.md#v150-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.8.0](service/connect/CHANGELOG.md#v180-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dataexchange`: [v1.6.0](service/dataexchange/CHANGELOG.md#v160-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.8.0](service/elasticloadbalancingv2/CHANGELOG.md#v180-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/imagebuilder`: [v1.11.0](service/imagebuilder/CHANGELOG.md#v1110-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.9.0](service/lambda/CHANGELOG.md#v190-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.11.0](service/macie2/CHANGELOG.md#v1110-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/networkfirewall`: [v1.7.0](service/networkfirewall/CHANGELOG.md#v170-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/pinpoint`: [v1.8.0](service/pinpoint/CHANGELOG.md#v180-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sesv2`: [v1.6.0](service/sesv2/CHANGELOG.md#v160-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.8.0](service/transfer/CHANGELOG.md#v180-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/voiceid`: [v1.0.0](service/voiceid/CHANGELOG.md#v100-2021-09-30) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/wisdom`: [v1.0.0](service/wisdom/CHANGELOG.md#v100-2021-09-30) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workmail`: [v1.6.0](service/workmail/CHANGELOG.md#v160-2021-09-30) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.7.0](service/workspaces/CHANGELOG.md#v170-2021-09-30) - * **Feature**: API client updated - -# Release (2021-09-24) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/feature/dynamodb/expression`: [v1.2.4](feature/dynamodb/expression/CHANGELOG.md#v124-2021-09-24) - * **Documentation**: Fixes typo in NameBuilder.NamesList example documentation to use the correct variable name. -* `github.com/aws/aws-sdk-go-v2/service/appmesh`: [v1.6.0](service/appmesh/CHANGELOG.md#v160-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appsync`: [v1.7.0](service/appsync/CHANGELOG.md#v170-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.9.0](service/auditmanager/CHANGELOG.md#v190-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codecommit`: [v1.5.0](service/codecommit/CHANGELOG.md#v150-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/comprehend`: [v1.8.0](service/comprehend/CHANGELOG.md#v180-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.8.0](service/databasemigrationservice/CHANGELOG.md#v180-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.18.0](service/ec2/CHANGELOG.md#v1180-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ecr`: [v1.7.0](service/ecr/CHANGELOG.md#v170-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticsearchservice`: [v1.7.0](service/elasticsearchservice/CHANGELOG.md#v170-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iam`: [v1.10.0](service/iam/CHANGELOG.md#v1100-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.6.0](service/identitystore/CHANGELOG.md#v160-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/imagebuilder`: [v1.10.0](service/imagebuilder/CHANGELOG.md#v1100-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.13.0](service/iot/CHANGELOG.md#v1130-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotevents`: [v1.7.0](service/iotevents/CHANGELOG.md#v170-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kafkaconnect`: [v1.1.0](service/kafkaconnect/CHANGELOG.md#v110-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lakeformation`: [v1.6.0](service/lakeformation/CHANGELOG.md#v160-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.8.0](service/lexmodelsv2/CHANGELOG.md#v180-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.5.0](service/lexruntimev2/CHANGELOG.md#v150-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/licensemanager`: [v1.8.0](service/licensemanager/CHANGELOG.md#v180-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.11.0](service/mediaconvert/CHANGELOG.md#v1110-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediapackagevod`: [v1.9.0](service/mediapackagevod/CHANGELOG.md#v190-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.8.0](service/mediatailor/CHANGELOG.md#v180-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/opensearch`: [v1.1.0](service/opensearch/CHANGELOG.md#v110-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.12.0](service/quicksight/CHANGELOG.md#v1120-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.11.0](service/ssm/CHANGELOG.md#v1110-2021-09-24) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.10.0](service/wafv2/CHANGELOG.md#v1100-2021-09-24) - * **Feature**: API client updated - -# Release (2021-09-17) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.10.0](service/chime/CHANGELOG.md#v1100-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.10.1](service/cloudformation/CHANGELOG.md#v1101-2021-09-17) - * **Documentation**: Updated API client documentation. -* `github.com/aws/aws-sdk-go-v2/service/comprehend`: [v1.7.0](service/comprehend/CHANGELOG.md#v170-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.17.0](service/ec2/CHANGELOG.md#v1170-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/ecr`: [v1.6.0](service/ecr/CHANGELOG.md#v160-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.12.0](service/iot/CHANGELOG.md#v1120-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/kafkaconnect`: [v1.0.0](service/kafkaconnect/CHANGELOG.md#v100-2021-09-17) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.7.0](service/lexmodelsv2/CHANGELOG.md#v170-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.4.0](service/lexruntimev2/CHANGELOG.md#v140-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.10.0](service/macie2/CHANGELOG.md#v1100-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/mediapackagevod`: [v1.8.0](service/mediapackagevod/CHANGELOG.md#v180-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/networkfirewall`: [v1.6.0](service/networkfirewall/CHANGELOG.md#v160-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/pinpoint`: [v1.7.0](service/pinpoint/CHANGELOG.md#v170-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.11.0](service/quicksight/CHANGELOG.md#v1110-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.9.0](service/rds/CHANGELOG.md#v190-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/robomaker`: [v1.9.0](service/robomaker/CHANGELOG.md#v190-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.16.0](service/s3/CHANGELOG.md#v1160-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.15.0](service/sagemaker/CHANGELOG.md#v1150-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/ssooidc`: [v1.5.0](service/ssooidc/CHANGELOG.md#v150-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.8.0](service/transcribe/CHANGELOG.md#v180-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.9.0](service/wafv2/CHANGELOG.md#v190-2021-09-17) - * **Feature**: Updated API client and endpoints to latest revision. - -# Release (2021-09-10) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/credentials`: [v1.4.1](credentials/CHANGELOG.md#v141-2021-09-10) - * **Documentation**: Fixes the AssumeRoleProvider's documentation for using custom TokenProviders. -* `github.com/aws/aws-sdk-go-v2/service/amp`: [v1.5.0](service/amp/CHANGELOG.md#v150-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.7.0](service/braket/CHANGELOG.md#v170-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chimesdkidentity`: [v1.2.0](service/chimesdkidentity/CHANGELOG.md#v120-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmessaging`: [v1.2.0](service/chimesdkmessaging/CHANGELOG.md#v120-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codegurureviewer`: [v1.7.0](service/codegurureviewer/CHANGELOG.md#v170-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.10.0](service/eks/CHANGELOG.md#v1100-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.11.0](service/elasticache/CHANGELOG.md#v1110-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/emr`: [v1.9.0](service/emr/CHANGELOG.md#v190-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.10.0](service/forecast/CHANGELOG.md#v1100-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/frauddetector`: [v1.9.0](service/frauddetector/CHANGELOG.md#v190-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kafka`: [v1.7.0](service/kafka/CHANGELOG.md#v170-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lookoutequipment`: [v1.4.0](service/lookoutequipment/CHANGELOG.md#v140-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediapackage`: [v1.8.0](service/mediapackage/CHANGELOG.md#v180-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/opensearch`: [v1.0.0](service/opensearch/CHANGELOG.md#v100-2021-09-10) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.8.0](service/outposts/CHANGELOG.md#v180-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ram`: [v1.7.0](service/ram/CHANGELOG.md#v170-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.14.0](service/sagemaker/CHANGELOG.md#v1140-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/servicediscovery`: [v1.9.0](service/servicediscovery/CHANGELOG.md#v190-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssmcontacts`: [v1.5.0](service/ssmcontacts/CHANGELOG.md#v150-2021-09-10) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/xray`: [v1.6.0](service/xray/CHANGELOG.md#v160-2021-09-10) - * **Feature**: API client updated - -# Release (2021-09-02) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/config`: [v1.8.0](config/CHANGELOG.md#v180-2021-09-02) - * **Feature**: Add support for S3 Multi-Region Access Point ARNs. -* `github.com/aws/aws-sdk-go-v2/service/accessanalyzer`: [v1.7.0](service/accessanalyzer/CHANGELOG.md#v170-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/acmpca`: [v1.8.0](service/acmpca/CHANGELOG.md#v180-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloud9`: [v1.8.0](service/cloud9/CHANGELOG.md#v180-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.10.0](service/cloudformation/CHANGELOG.md#v1100-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.6.0](service/cloudtrail/CHANGELOG.md#v160-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codebuild`: [v1.10.0](service/codebuild/CHANGELOG.md#v1100-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.9.0](service/computeoptimizer/CHANGELOG.md#v190-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.9.0](service/configservice/CHANGELOG.md#v190-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ebs`: [v1.7.0](service/ebs/CHANGELOG.md#v170-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.16.0](service/ec2/CHANGELOG.md#v1160-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/efs`: [v1.7.0](service/efs/CHANGELOG.md#v170-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/emr`: [v1.8.0](service/emr/CHANGELOG.md#v180-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/firehose`: [v1.6.0](service/firehose/CHANGELOG.md#v160-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/frauddetector`: [v1.8.0](service/frauddetector/CHANGELOG.md#v180-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.9.0](service/fsx/CHANGELOG.md#v190-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/internal/s3shared`: [v1.7.0](service/internal/s3shared/CHANGELOG.md#v170-2021-09-02) - * **Feature**: Add support for S3 Multi-Region Access Point ARNs. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.11.0](service/iot/CHANGELOG.md#v1110-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotjobsdataplane`: [v1.5.0](service/iotjobsdataplane/CHANGELOG.md#v150-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ivs`: [v1.7.0](service/ivs/CHANGELOG.md#v170-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.6.0](service/kms/CHANGELOG.md#v160-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice`: [v1.9.0](service/lexmodelbuildingservice/CHANGELOG.md#v190-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.7.0](service/mediatailor/CHANGELOG.md#v170-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/memorydb`: [v1.2.0](service/memorydb/CHANGELOG.md#v120-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mwaa`: [v1.5.0](service/mwaa/CHANGELOG.md#v150-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/polly`: [v1.6.0](service/polly/CHANGELOG.md#v160-2021-09-02) - * **Feature**: API client updated - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.10.0](service/quicksight/CHANGELOG.md#v1100-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.15.0](service/s3/CHANGELOG.md#v1150-2021-09-02) - * **Feature**: API client updated - * **Feature**: Add support for S3 Multi-Region Access Point ARNs. -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.11.0](service/s3control/CHANGELOG.md#v1110-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemakerruntime`: [v1.7.0](service/sagemakerruntime/CHANGELOG.md#v170-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/schemas`: [v1.6.0](service/schemas/CHANGELOG.md#v160-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.10.0](service/securityhub/CHANGELOG.md#v1100-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry`: [v1.5.0](service/servicecatalogappregistry/CHANGELOG.md#v150-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.9.0](service/sqs/CHANGELOG.md#v190-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssmincidents`: [v1.4.0](service/ssmincidents/CHANGELOG.md#v140-2021-09-02) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.7.0](service/transfer/CHANGELOG.md#v170-2021-09-02) - * **Feature**: API client updated - -# Release (2021-08-27) - -## General Highlights -* **Feature**: Updated `github.com/aws/smithy-go` to latest version -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/credentials`: [v1.4.0](credentials/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Adds support for Tags and TransitiveTagKeys to stscreds.AssumeRoleProvider. Closes https://github.com/aws/aws-sdk-go-v2/issues/723 -* `github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue`: [v1.2.0](feature/dynamodb/attributevalue/CHANGELOG.md#v120-2021-08-27) - * **Bug Fix**: Fix unmarshaler's decoding of AttributeValueMemberN into a type that is a string alias. -* `github.com/aws/aws-sdk-go-v2/service/acmpca`: [v1.7.0](service/acmpca/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/amplify`: [v1.5.0](service/amplify/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/amplifybackend`: [v1.4.0](service/amplifybackend/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/apigateway`: [v1.7.0](service/apigateway/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/apigatewaymanagementapi`: [v1.4.0](service/apigatewaymanagementapi/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.7.0](service/appflow/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/applicationinsights`: [v1.4.0](service/applicationinsights/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/apprunner`: [v1.2.0](service/apprunner/CHANGELOG.md#v120-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/appstream`: [v1.6.0](service/appstream/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/appsync`: [v1.6.0](service/appsync/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/athena`: [v1.6.0](service/athena/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.8.0](service/auditmanager/CHANGELOG.md#v180-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/autoscalingplans`: [v1.5.0](service/autoscalingplans/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/backup`: [v1.5.0](service/backup/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/batch`: [v1.7.0](service/batch/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.6.0](service/braket/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/chimesdkidentity`: [v1.1.0](service/chimesdkidentity/CHANGELOG.md#v110-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmessaging`: [v1.1.0](service/chimesdkmessaging/CHANGELOG.md#v110-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.5.0](service/cloudtrail/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchevents`: [v1.6.0](service/cloudwatchevents/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/codeartifact`: [v1.5.0](service/codeartifact/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/codebuild`: [v1.9.0](service/codebuild/CHANGELOG.md#v190-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/codecommit`: [v1.4.0](service/codecommit/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/codeguruprofiler`: [v1.5.0](service/codeguruprofiler/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/codestarnotifications`: [v1.4.0](service/codestarnotifications/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentity`: [v1.5.0](service/cognitoidentity/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.6.0](service/cognitoidentityprovider/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/comprehend`: [v1.6.0](service/comprehend/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.8.0](service/computeoptimizer/CHANGELOG.md#v180-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/connectcontactlens`: [v1.5.0](service/connectcontactlens/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/customerprofiles`: [v1.9.0](service/customerprofiles/CHANGELOG.md#v190-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.7.0](service/databasemigrationservice/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.6.0](service/datasync/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/dax`: [v1.4.0](service/dax/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/directoryservice`: [v1.5.0](service/directoryservice/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/dlm`: [v1.5.0](service/dlm/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/dynamodbstreams`: [v1.4.0](service/dynamodbstreams/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.15.0](service/ec2/CHANGELOG.md#v1150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/ecrpublic`: [v1.5.0](service/ecrpublic/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/efs`: [v1.6.0](service/efs/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.9.0](service/eks/CHANGELOG.md#v190-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/emrcontainers`: [v1.6.0](service/emrcontainers/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/eventbridge`: [v1.7.0](service/eventbridge/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/finspace`: [v1.2.0](service/finspace/CHANGELOG.md#v120-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.2.0](service/finspacedata/CHANGELOG.md#v120-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/firehose`: [v1.5.0](service/firehose/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/fms`: [v1.7.0](service/fms/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.9.0](service/forecast/CHANGELOG.md#v190-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/forecastquery`: [v1.4.0](service/forecastquery/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/frauddetector`: [v1.7.0](service/frauddetector/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.8.0](service/fsx/CHANGELOG.md#v180-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/gamelift`: [v1.6.0](service/gamelift/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.11.0](service/glue/CHANGELOG.md#v1110-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/groundstation`: [v1.6.0](service/groundstation/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/guardduty`: [v1.5.0](service/guardduty/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/health`: [v1.7.0](service/health/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/healthlake`: [v1.6.0](service/healthlake/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.10.0](service/iot/CHANGELOG.md#v1100-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/iot1clickdevicesservice`: [v1.4.0](service/iot1clickdevicesservice/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/iotanalytics`: [v1.5.0](service/iotanalytics/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/iotdataplane`: [v1.4.0](service/iotdataplane/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/iotfleethub`: [v1.5.0](service/iotfleethub/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.11.0](service/iotsitewise/CHANGELOG.md#v1110-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/ivs`: [v1.6.0](service/ivs/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/lakeformation`: [v1.5.0](service/lakeformation/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.6.0](service/lexmodelsv2/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.3.0](service/lexruntimev2/CHANGELOG.md#v130-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/licensemanager`: [v1.7.0](service/licensemanager/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.10.0](service/lightsail/CHANGELOG.md#v1100-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/lookoutequipment`: [v1.3.0](service/lookoutequipment/CHANGELOG.md#v130-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.3.0](service/lookoutmetrics/CHANGELOG.md#v130-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.9.0](service/macie2/CHANGELOG.md#v190-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.10.0](service/mediaconvert/CHANGELOG.md#v1100-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/mediapackage`: [v1.7.0](service/mediapackage/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/mediapackagevod`: [v1.7.0](service/mediapackagevod/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/mq`: [v1.5.0](service/mq/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/networkfirewall`: [v1.5.0](service/networkfirewall/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.7.0](service/outposts/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/pi`: [v1.6.0](service/pi/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoice`: [v1.4.0](service/pinpointsmsvoice/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/polly`: [v1.5.0](service/polly/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/qldb`: [v1.6.0](service/qldb/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/qldbsession`: [v1.5.0](service/qldbsession/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/ram`: [v1.6.0](service/ram/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.8.0](service/rekognition/CHANGELOG.md#v180-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi`: [v1.5.0](service/resourcegroupstaggingapi/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/robomaker`: [v1.8.0](service/robomaker/CHANGELOG.md#v180-2021-08-27) - * **Bug Fix**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig`: [v1.1.0](service/route53recoverycontrolconfig/CHANGELOG.md#v110-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/route53resolver`: [v1.7.0](service/route53resolver/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.14.0](service/s3/CHANGELOG.md#v1140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.10.0](service/s3control/CHANGELOG.md#v1100-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/s3outposts`: [v1.5.0](service/s3outposts/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/servicecatalog`: [v1.5.0](service/servicecatalog/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry`: [v1.4.0](service/servicecatalogappregistry/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/signer`: [v1.5.0](service/signer/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/ssooidc`: [v1.4.0](service/ssooidc/CHANGELOG.md#v140-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/storagegateway`: [v1.6.0](service/storagegateway/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/synthetics`: [v1.6.0](service/synthetics/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/textract`: [v1.5.0](service/textract/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.7.0](service/transcribe/CHANGELOG.md#v170-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.6.0](service/transfer/CHANGELOG.md#v160-2021-08-27) - * **Feature**: Updated API model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/wafregional`: [v1.5.0](service/wafregional/CHANGELOG.md#v150-2021-08-27) - * **Feature**: Updated API model to latest revision. - -# Release (2021-08-19) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/apigateway`: [v1.6.0](service/apigateway/CHANGELOG.md#v160-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/apigatewayv2`: [v1.5.0](service/apigatewayv2/CHANGELOG.md#v150-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.6.0](service/appflow/CHANGELOG.md#v160-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/applicationautoscaling`: [v1.5.0](service/applicationautoscaling/CHANGELOG.md#v150-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloud9`: [v1.6.0](service/cloud9/CHANGELOG.md#v160-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/clouddirectory`: [v1.4.0](service/clouddirectory/CHANGELOG.md#v140-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs`: [v1.6.0](service/cloudwatchlogs/CHANGELOG.md#v160-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codebuild`: [v1.8.0](service/codebuild/CHANGELOG.md#v180-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.7.0](service/configservice/CHANGELOG.md#v170-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/costexplorer`: [v1.8.0](service/costexplorer/CHANGELOG.md#v180-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/customerprofiles`: [v1.8.0](service/customerprofiles/CHANGELOG.md#v180-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databrew`: [v1.8.0](service/databrew/CHANGELOG.md#v180-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/directoryservice`: [v1.4.0](service/directoryservice/CHANGELOG.md#v140-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.14.0](service/ec2/CHANGELOG.md#v1140-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.9.0](service/elasticache/CHANGELOG.md#v190-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/emr`: [v1.6.0](service/emr/CHANGELOG.md#v160-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.10.0](service/iotsitewise/CHANGELOG.md#v1100-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.7.0](service/lambda/CHANGELOG.md#v170-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/licensemanager`: [v1.6.0](service/licensemanager/CHANGELOG.md#v160-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/memorydb`: [v1.0.0](service/memorydb/CHANGELOG.md#v100-2021-08-19) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.8.0](service/quicksight/CHANGELOG.md#v180-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.10.0](service/route53/CHANGELOG.md#v1100-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53resolver`: [v1.6.0](service/route53resolver/CHANGELOG.md#v160-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.13.0](service/s3/CHANGELOG.md#v1130-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.12.0](service/sagemaker/CHANGELOG.md#v1120-2021-08-19) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemakerruntime`: [v1.5.0](service/sagemakerruntime/CHANGELOG.md#v150-2021-08-19) - * **Feature**: API client updated - -# Release (2021-08-12) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/feature/cloudfront/sign`: [v1.3.1](feature/cloudfront/sign/CHANGELOG.md#v131-2021-08-12) - * **Bug Fix**: Update to not escape HTML when encoding the policy. -* `github.com/aws/aws-sdk-go-v2/service/athena`: [v1.5.0](service/athena/CHANGELOG.md#v150-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.11.0](service/autoscaling/CHANGELOG.md#v1110-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.8.0](service/chime/CHANGELOG.md#v180-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chimesdkidentity`: [v1.0.0](service/chimesdkidentity/CHANGELOG.md#v100-2021-08-12) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chimesdkmessaging`: [v1.0.0](service/chimesdkmessaging/CHANGELOG.md#v100-2021-08-12) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codebuild`: [v1.7.0](service/codebuild/CHANGELOG.md#v170-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.6.0](service/connect/CHANGELOG.md#v160-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ebs`: [v1.5.0](service/ebs/CHANGELOG.md#v150-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.8.0](service/ecs/CHANGELOG.md#v180-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.5.0](service/lexmodelsv2/CHANGELOG.md#v150-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.9.0](service/lightsail/CHANGELOG.md#v190-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/nimble`: [v1.3.0](service/nimble/CHANGELOG.md#v130-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.7.0](service/rekognition/CHANGELOG.md#v170-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.9.0](service/route53/CHANGELOG.md#v190-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/snowdevicemanagement`: [v1.0.0](service/snowdevicemanagement/CHANGELOG.md#v100-2021-08-12) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.9.0](service/ssm/CHANGELOG.md#v190-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/synthetics`: [v1.5.0](service/synthetics/CHANGELOG.md#v150-2021-08-12) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.7.0](service/wafv2/CHANGELOG.md#v170-2021-08-12) - * **Feature**: API client updated - -# Release (2021-08-04) - -## General Highlights -* **Feature**: adds error handling for defered close calls -* **Dependency Update**: Updated `github.com/aws/smithy-go` to latest version. -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.8.0 - * **Bug Fix**: Corrected an issue where the retryer was not using the last attempt's ResultMetadata as the bases for the return result from the stack. ([#1345](https://github.com/aws/aws-sdk-go-v2/pull/1345)) -* `github.com/aws/aws-sdk-go-v2/feature/dynamodb/expression`: [v1.2.0](feature/dynamodb/expression/CHANGELOG.md#v120-2021-08-04) - * **Feature**: Add IsSet helper for ConditionBuilder and KeyConditionBuilder ([#1329](https://github.com/aws/aws-sdk-go-v2/pull/1329)) -* `github.com/aws/aws-sdk-go-v2/service/accessanalyzer`: [v1.5.2](service/accessanalyzer/CHANGELOG.md#v152-2021-08-04) - * **Bug Fix**: Fixed an issue that caused one or more API operations to fail when attempting to resolve the service endpoint. ([#1349](https://github.com/aws/aws-sdk-go-v2/pull/1349)) -* `github.com/aws/aws-sdk-go-v2/service/amp`: [v1.3.1](service/amp/CHANGELOG.md#v131-2021-08-04) - * **Bug Fix**: Fixed an issue that caused one or more API operations to fail when attempting to resolve the service endpoint. ([#1349](https://github.com/aws/aws-sdk-go-v2/pull/1349)) -* `github.com/aws/aws-sdk-go-v2/service/appintegrations`: [v1.5.0](service/appintegrations/CHANGELOG.md#v150-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/appmesh`: [v1.4.2](service/appmesh/CHANGELOG.md#v142-2021-08-04) - * **Bug Fix**: Fixed an issue that caused one or more API operations to fail when attempting to resolve the service endpoint. ([#1349](https://github.com/aws/aws-sdk-go-v2/pull/1349)) -* `github.com/aws/aws-sdk-go-v2/service/appsync`: [v1.5.0](service/appsync/CHANGELOG.md#v150-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/auditmanager`: [v1.7.0](service/auditmanager/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/batch`: [v1.6.0](service/batch/CHANGELOG.md#v160-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.5.2](service/braket/CHANGELOG.md#v152-2021-08-04) - * **Bug Fix**: Fixed an issue that caused one or more API operations to fail when attempting to resolve the service endpoint. ([#1349](https://github.com/aws/aws-sdk-go-v2/pull/1349)) -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.7.0](service/chime/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.8.0](service/cloudformation/CHANGELOG.md#v180-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.7.0](service/cloudwatch/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/codebuild`: [v1.6.0](service/codebuild/CHANGELOG.md#v160-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/codeguruprofiler`: [v1.4.2](service/codeguruprofiler/CHANGELOG.md#v142-2021-08-04) - * **Bug Fix**: Fixed an issue that caused one or more API operations to fail when attempting to resolve the service endpoint. ([#1349](https://github.com/aws/aws-sdk-go-v2/pull/1349)) -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.5.0](service/cognitoidentityprovider/CHANGELOG.md#v150-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.7.0](service/computeoptimizer/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/databrew`: [v1.7.0](service/databrew/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/directconnect`: [v1.7.0](service/directconnect/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.13.0](service/ec2/CHANGELOG.md#v1130-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.7.0](service/ecs/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.6.0](service/elasticloadbalancingv2/CHANGELOG.md#v160-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/emr`: [v1.5.0](service/emr/CHANGELOG.md#v150-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/emrcontainers`: [v1.5.0](service/emrcontainers/CHANGELOG.md#v150-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/eventbridge`: [v1.6.0](service/eventbridge/CHANGELOG.md#v160-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.10.0](service/glue/CHANGELOG.md#v1100-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.5.0](service/greengrassv2/CHANGELOG.md#v150-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/groundstation`: [v1.5.2](service/groundstation/CHANGELOG.md#v152-2021-08-04) - * **Bug Fix**: Fixed an issue that caused one or more API operations to fail when attempting to resolve the service endpoint. ([#1349](https://github.com/aws/aws-sdk-go-v2/pull/1349)) -* `github.com/aws/aws-sdk-go-v2/service/iam`: [v1.8.0](service/iam/CHANGELOG.md#v180-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/identitystore`: [v1.4.0](service/identitystore/CHANGELOG.md#v140-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/imagebuilder`: [v1.8.0](service/imagebuilder/CHANGELOG.md#v180-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.9.0](service/iot/CHANGELOG.md#v190-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/iotanalytics`: [v1.4.0](service/iotanalytics/CHANGELOG.md#v140-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.9.0](service/iotsitewise/CHANGELOG.md#v190-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.8.0](service/iotwireless/CHANGELOG.md#v180-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.10.0](service/kendra/CHANGELOG.md#v1100-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.6.0](service/lambda/CHANGELOG.md#v160-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice`: [v1.7.0](service/lexmodelbuildingservice/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.4.0](service/lexmodelsv2/CHANGELOG.md#v140-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.4.0](service/location/CHANGELOG.md#v140-2021-08-04) - * **Feature**: Updated to latest API model. - * **Bug Fix**: Fixed an issue that caused one or more API operations to fail when attempting to resolve the service endpoint. ([#1349](https://github.com/aws/aws-sdk-go-v2/pull/1349)) -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.9.0](service/mediaconvert/CHANGELOG.md#v190-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.8.0](service/medialive/CHANGELOG.md#v180-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/mgn`: [v1.3.1](service/mgn/CHANGELOG.md#v131-2021-08-04) - * **Bug Fix**: Fixed an issue that caused one or more API operations to fail when attempting to resolve the service endpoint. ([#1349](https://github.com/aws/aws-sdk-go-v2/pull/1349)) -* `github.com/aws/aws-sdk-go-v2/service/personalize`: [v1.7.0](service/personalize/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/proton`: [v1.2.0](service/proton/CHANGELOG.md#v120-2021-08-04) - * **Feature**: Updated to latest API model. - * **Bug Fix**: Fixed an issue that caused one or more API operations to fail when attempting to resolve the service endpoint. ([#1349](https://github.com/aws/aws-sdk-go-v2/pull/1349)) -* `github.com/aws/aws-sdk-go-v2/service/qldb`: [v1.5.0](service/qldb/CHANGELOG.md#v150-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.7.0](service/quicksight/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.7.0](service/rds/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.10.0](service/redshift/CHANGELOG.md#v1100-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/redshiftdata`: [v1.5.0](service/redshiftdata/CHANGELOG.md#v150-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/robomaker`: [v1.7.0](service/robomaker/CHANGELOG.md#v170-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.8.0](service/route53/CHANGELOG.md#v180-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/route53recoverycluster`: [v1.0.0](service/route53recoverycluster/CHANGELOG.md#v100-2021-08-04) - * **Release**: New AWS service client module - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig`: [v1.0.0](service/route53recoverycontrolconfig/CHANGELOG.md#v100-2021-08-04) - * **Release**: New AWS service client module - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness`: [v1.0.0](service/route53recoveryreadiness/CHANGELOG.md#v100-2021-08-04) - * **Release**: New AWS service client module - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.12.0](service/s3/CHANGELOG.md#v1120-2021-08-04) - * **Feature**: Add `HeadObject` presign support. ([#1346](https://github.com/aws/aws-sdk-go-v2/pull/1346)) -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.9.0](service/s3control/CHANGELOG.md#v190-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/s3outposts`: [v1.4.0](service/s3outposts/CHANGELOG.md#v140-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.11.0](service/sagemaker/CHANGELOG.md#v1110-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/secretsmanager`: [v1.5.0](service/secretsmanager/CHANGELOG.md#v150-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.8.0](service/securityhub/CHANGELOG.md#v180-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/shield`: [v1.6.0](service/shield/CHANGELOG.md#v160-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ssmcontacts`: [v1.3.0](service/ssmcontacts/CHANGELOG.md#v130-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ssmincidents`: [v1.2.0](service/ssmincidents/CHANGELOG.md#v120-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ssoadmin`: [v1.5.0](service/ssoadmin/CHANGELOG.md#v150-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/synthetics`: [v1.4.0](service/synthetics/CHANGELOG.md#v140-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/textract`: [v1.4.0](service/textract/CHANGELOG.md#v140-2021-08-04) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.6.0](service/transcribe/CHANGELOG.md#v160-2021-08-04) - * **Feature**: Updated to latest API model. - -# Release (2021-07-15) - -## General Highlights -* **Dependency Update**: Updated `github.com/aws/smithy-go` to latest version -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/config`: [v1.5.0](config/CHANGELOG.md#v150-2021-07-15) - * **Feature**: Support has been added for EC2 IPv6-enabled Instance Metadata Service Endpoints. -* `github.com/aws/aws-sdk-go-v2/feature/ec2/imds`: [v1.3.0](feature/ec2/imds/CHANGELOG.md#v130-2021-07-15) - * **Feature**: Support has been added for EC2 IPv6-enabled Instance Metadata Service Endpoints. -* `github.com/aws/aws-sdk-go-v2/service/acm`: [v1.5.0](service/acm/CHANGELOG.md#v150-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/amp`: [v1.3.0](service/amp/CHANGELOG.md#v130-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/amplify`: [v1.4.0](service/amplify/CHANGELOG.md#v140-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/amplifybackend`: [v1.3.0](service/amplifybackend/CHANGELOG.md#v130-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.10.0](service/autoscaling/CHANGELOG.md#v1100-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.6.0](service/chime/CHANGELOG.md#v160-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.7.0](service/cloudformation/CHANGELOG.md#v170-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/cloudfront`: [v1.7.0](service/cloudfront/CHANGELOG.md#v170-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/cloudsearch`: [v1.5.0](service/cloudsearch/CHANGELOG.md#v150-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.6.0](service/cloudwatch/CHANGELOG.md#v160-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/databasemigrationservice`: [v1.6.0](service/databasemigrationservice/CHANGELOG.md#v160-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/devopsguru`: [v1.6.0](service/devopsguru/CHANGELOG.md#v160-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/directconnect`: [v1.6.0](service/directconnect/CHANGELOG.md#v160-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.8.0](service/docdb/CHANGELOG.md#v180-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.12.0](service/ec2/CHANGELOG.md#v1120-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.8.0](service/eks/CHANGELOG.md#v180-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.8.0](service/elasticache/CHANGELOG.md#v180-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk`: [v1.5.0](service/elasticbeanstalk/CHANGELOG.md#v150-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing`: [v1.5.0](service/elasticloadbalancing/CHANGELOG.md#v150-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. - * **Documentation**: Updated service model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.5.0](service/elasticloadbalancingv2/CHANGELOG.md#v150-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. - * **Documentation**: Updated service model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/fms`: [v1.6.0](service/fms/CHANGELOG.md#v160-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/frauddetector`: [v1.6.0](service/frauddetector/CHANGELOG.md#v160-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.9.0](service/glue/CHANGELOG.md#v190-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/health`: [v1.6.0](service/health/CHANGELOG.md#v160-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/healthlake`: [v1.5.0](service/healthlake/CHANGELOG.md#v150-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/iam`: [v1.7.0](service/iam/CHANGELOG.md#v170-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. - * **Documentation**: Updated service model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/imagebuilder`: [v1.7.0](service/imagebuilder/CHANGELOG.md#v170-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.8.0](service/iot/CHANGELOG.md#v180-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.8.0](service/iotsitewise/CHANGELOG.md#v180-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.9.0](service/kendra/CHANGELOG.md#v190-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/lambda`: [v1.5.0](service/lambda/CHANGELOG.md#v150-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice`: [v1.6.0](service/lexmodelbuildingservice/CHANGELOG.md#v160-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.8.0](service/lightsail/CHANGELOG.md#v180-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/macie`: [v1.5.1](service/macie/CHANGELOG.md#v151-2021-07-15) - * **Documentation**: Updated service model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.8.1](service/macie2/CHANGELOG.md#v181-2021-07-15) - * **Documentation**: Updated service model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.8.0](service/mediaconvert/CHANGELOG.md#v180-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.5.0](service/mediatailor/CHANGELOG.md#v150-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/mgn`: [v1.3.0](service/mgn/CHANGELOG.md#v130-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/mq`: [v1.4.0](service/mq/CHANGELOG.md#v140-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/neptune`: [v1.7.0](service/neptune/CHANGELOG.md#v170-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.6.0](service/outposts/CHANGELOG.md#v160-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/pricing`: [v1.5.1](service/pricing/CHANGELOG.md#v151-2021-07-15) - * **Documentation**: Updated service model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.6.0](service/rds/CHANGELOG.md#v160-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.9.0](service/redshift/CHANGELOG.md#v190-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.10.0](service/sagemaker/CHANGELOG.md#v1100-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/ses`: [v1.5.0](service/ses/CHANGELOG.md#v150-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/sns`: [v1.7.0](service/sns/CHANGELOG.md#v170-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. - * **Documentation**: Updated service model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.7.0](service/sqs/CHANGELOG.md#v170-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.8.0](service/ssm/CHANGELOG.md#v180-2021-07-15) - * **Feature**: Updated service model to latest version. - * **Documentation**: Updated service model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/storagegateway`: [v1.5.0](service/storagegateway/CHANGELOG.md#v150-2021-07-15) - * **Feature**: Updated service model to latest version. -* `github.com/aws/aws-sdk-go-v2/service/sts`: [v1.6.0](service/sts/CHANGELOG.md#v160-2021-07-15) - * **Feature**: The ErrorCode method on generated service error types has been corrected to match the API model. - * **Documentation**: Updated service model to latest revision. -* `github.com/aws/aws-sdk-go-v2/service/wellarchitected`: [v1.5.0](service/wellarchitected/CHANGELOG.md#v150-2021-07-15) - * **Feature**: Updated service model to latest version. - -# Release (2021-07-01) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/internal/ini`: [v1.1.0](internal/ini/CHANGELOG.md#v110-2021-07-01) - * **Feature**: Support for `:`, `=`, `[`, `]` being present in expression values. -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.9.0](service/autoscaling/CHANGELOG.md#v190-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/databrew`: [v1.6.0](service/databrew/CHANGELOG.md#v160-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.11.0](service/ec2/CHANGELOG.md#v1110-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.8.0](service/glue/CHANGELOG.md#v180-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.8.0](service/kendra/CHANGELOG.md#v180-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.7.0](service/mediaconvert/CHANGELOG.md#v170-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediapackagevod`: [v1.6.0](service/mediapackagevod/CHANGELOG.md#v160-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.8.0](service/redshift/CHANGELOG.md#v180-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.9.0](service/sagemaker/CHANGELOG.md#v190-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/servicediscovery`: [v1.7.0](service/servicediscovery/CHANGELOG.md#v170-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.6.0](service/sqs/CHANGELOG.md#v160-2021-07-01) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssmcontacts`: [v1.2.0](service/ssmcontacts/CHANGELOG.md#v120-2021-07-01) - * **Feature**: API client updated - -# Release (2021-06-25) - -## General Highlights -* **Feature**: Updated `github.com/aws/smithy-go` to latest version -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.7.0 - * **Feature**: Adds configuration values for enabling endpoint discovery. - * **Bug Fix**: Keep Object-Lock headers a header when presigning Sigv4 signing requests -* `github.com/aws/aws-sdk-go-v2/config`: [v1.4.0](config/CHANGELOG.md#v140-2021-06-25) - * **Feature**: Adds configuration setting for enabling endpoint discovery. -* `github.com/aws/aws-sdk-go-v2/credentials`: [v1.3.0](credentials/CHANGELOG.md#v130-2021-06-25) - * **Bug Fix**: Fixed example usages of aws.CredentialsCache ([#1275](https://github.com/aws/aws-sdk-go-v2/pull/1275)) -* `github.com/aws/aws-sdk-go-v2/feature/cloudfront/sign`: [v1.2.0](feature/cloudfront/sign/CHANGELOG.md#v120-2021-06-25) - * **Feature**: Add UnmarshalJSON for AWSEpochTime to correctly unmarshal AWSEpochTime, ([#1298](https://github.com/aws/aws-sdk-go-v2/pull/1298)) -* `github.com/aws/aws-sdk-go-v2/internal/configsources`: [v1.0.0](internal/configsources/CHANGELOG.md#v100-2021-06-25) - * **Release**: Release new modules -* `github.com/aws/aws-sdk-go-v2/service/amp`: [v1.2.0](service/amp/CHANGELOG.md#v120-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/amplify`: [v1.3.0](service/amplify/CHANGELOG.md#v130-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/amplifybackend`: [v1.2.0](service/amplifybackend/CHANGELOG.md#v120-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appflow`: [v1.5.0](service/appflow/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/appmesh`: [v1.4.0](service/appmesh/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/chime`: [v1.5.0](service/chime/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloud9`: [v1.5.0](service/cloud9/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudformation`: [v1.6.0](service/cloudformation/CHANGELOG.md#v160-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudfront`: [v1.6.0](service/cloudfront/CHANGELOG.md#v160-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudsearch`: [v1.4.0](service/cloudsearch/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudwatch`: [v1.5.0](service/cloudwatch/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchevents`: [v1.5.0](service/cloudwatchevents/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codebuild`: [v1.5.0](service/codebuild/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/codegurureviewer`: [v1.5.0](service/codegurureviewer/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentity`: [v1.4.0](service/cognitoidentity/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.4.0](service/cognitoidentityprovider/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.5.0](service/connect/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dax`: [v1.3.0](service/dax/CHANGELOG.md#v130-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.7.0](service/docdb/CHANGELOG.md#v170-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/dynamodb`: [v1.4.0](service/dynamodb/CHANGELOG.md#v140-2021-06-25) - * **Feature**: Adds support for endpoint discovery. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.10.0](service/ec2/CHANGELOG.md#v1100-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.7.0](service/elasticache/CHANGELOG.md#v170-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk`: [v1.4.0](service/elasticbeanstalk/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing`: [v1.4.0](service/elasticloadbalancing/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2`: [v1.4.0](service/elasticloadbalancingv2/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/eventbridge`: [v1.5.0](service/eventbridge/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/greengrass`: [v1.5.0](service/greengrass/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/greengrassv2`: [v1.4.0](service/greengrassv2/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iam`: [v1.6.0](service/iam/CHANGELOG.md#v160-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery`: [v1.0.0](service/internal/endpoint-discovery/CHANGELOG.md#v100-2021-06-25) - * **Release**: Release new modules - * **Feature**: Module supporting endpoint-discovery across all service clients. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.7.0](service/iot/CHANGELOG.md#v170-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotanalytics`: [v1.3.0](service/iotanalytics/CHANGELOG.md#v130-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.7.0](service/kendra/CHANGELOG.md#v170-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kms`: [v1.4.0](service/kms/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.3.0](service/lexmodelsv2/CHANGELOG.md#v130-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexruntimev2`: [v1.2.0](service/lexruntimev2/CHANGELOG.md#v120-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/licensemanager`: [v1.5.0](service/licensemanager/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.2.0](service/lookoutmetrics/CHANGELOG.md#v120-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/managedblockchain`: [v1.4.0](service/managedblockchain/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediaconnect`: [v1.6.0](service/mediaconnect/CHANGELOG.md#v160-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.7.0](service/medialive/CHANGELOG.md#v170-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediatailor`: [v1.4.0](service/mediatailor/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/neptune`: [v1.6.0](service/neptune/CHANGELOG.md#v160-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/proton`: [v1.1.0](service/proton/CHANGELOG.md#v110-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.6.0](service/quicksight/CHANGELOG.md#v160-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ram`: [v1.5.0](service/ram/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.5.0](service/rds/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/redshift`: [v1.7.0](service/redshift/CHANGELOG.md#v170-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/redshiftdata`: [v1.4.0](service/redshiftdata/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.7.0](service/route53/CHANGELOG.md#v170-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.8.0](service/sagemaker/CHANGELOG.md#v180-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemakerfeaturestoreruntime`: [v1.4.0](service/sagemakerfeaturestoreruntime/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.7.0](service/securityhub/CHANGELOG.md#v170-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ses`: [v1.4.0](service/ses/CHANGELOG.md#v140-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/snowball`: [v1.5.0](service/snowball/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sns`: [v1.6.0](service/sns/CHANGELOG.md#v160-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.5.0](service/sqs/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sts`: [v1.5.0](service/sts/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/timestreamquery`: [v1.3.0](service/timestreamquery/CHANGELOG.md#v130-2021-06-25) - * **Feature**: Adds support for endpoint discovery. -* `github.com/aws/aws-sdk-go-v2/service/timestreamwrite`: [v1.3.0](service/timestreamwrite/CHANGELOG.md#v130-2021-06-25) - * **Feature**: Adds support for endpoint discovery. -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.5.0](service/transfer/CHANGELOG.md#v150-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/waf`: [v1.3.0](service/waf/CHANGELOG.md#v130-2021-06-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/wafv2`: [v1.6.0](service/wafv2/CHANGELOG.md#v160-2021-06-25) - * **Feature**: API client updated - -# Release (2021-06-11) - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.7.0](service/autoscaling/CHANGELOG.md#v170-2021-06-11) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/cloudtrail`: [v1.3.2](service/cloudtrail/CHANGELOG.md#v132-2021-06-11) - * **Documentation**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.3.3](service/cognitoidentityprovider/CHANGELOG.md#v133-2021-06-11) - * **Documentation**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.6.0](service/eks/CHANGELOG.md#v160-2021-06-11) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.6.0](service/fsx/CHANGELOG.md#v160-2021-06-11) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/glue`: [v1.6.0](service/glue/CHANGELOG.md#v160-2021-06-11) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.6.0](service/kendra/CHANGELOG.md#v160-2021-06-11) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.7.0](service/macie2/CHANGELOG.md#v170-2021-06-11) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/medialive`: [v1.6.0](service/medialive/CHANGELOG.md#v160-2021-06-11) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/pi`: [v1.4.0](service/pi/CHANGELOG.md#v140-2021-06-11) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/proton`: [v1.0.0](service/proton/CHANGELOG.md#v100-2021-06-11) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/qldb`: [v1.3.1](service/qldb/CHANGELOG.md#v131-2021-06-11) - * **Documentation**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/rds`: [v1.4.2](service/rds/CHANGELOG.md#v142-2021-06-11) - * **Documentation**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.7.0](service/sagemaker/CHANGELOG.md#v170-2021-06-11) - * **Feature**: Updated to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.4.1](service/transfer/CHANGELOG.md#v141-2021-06-11) - * **Documentation**: Updated to latest API model. - -# Release (2021-06-04) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/acmpca`: [v1.5.0](service/acmpca/CHANGELOG.md#v150-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.6.0](service/autoscaling/CHANGELOG.md#v160-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/braket`: [v1.4.0](service/braket/CHANGELOG.md#v140-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/cloudfront`: [v1.5.2](service/cloudfront/CHANGELOG.md#v152-2021-06-04) - * **Documentation**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/datasync`: [v1.4.0](service/datasync/CHANGELOG.md#v140-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/devicefarm`: [v1.3.0](service/devicefarm/CHANGELOG.md#v130-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/docdb`: [v1.6.0](service/docdb/CHANGELOG.md#v160-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.9.0](service/ec2/CHANGELOG.md#v190-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.5.0](service/ecs/CHANGELOG.md#v150-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.7.0](service/forecast/CHANGELOG.md#v170-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/fsx`: [v1.5.0](service/fsx/CHANGELOG.md#v150-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/iam`: [v1.5.1](service/iam/CHANGELOG.md#v151-2021-06-04) - * **Documentation**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/internal/s3shared`: [v1.4.0](service/internal/s3shared/CHANGELOG.md#v140-2021-06-04) - * **Feature**: The handling of AccessPoint and Outpost ARNs have been updated. -* `github.com/aws/aws-sdk-go-v2/service/iotevents`: [v1.4.0](service/iotevents/CHANGELOG.md#v140-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ioteventsdata`: [v1.3.0](service/ioteventsdata/CHANGELOG.md#v130-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.6.0](service/iotsitewise/CHANGELOG.md#v160-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.6.0](service/iotwireless/CHANGELOG.md#v160-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/kendra`: [v1.5.0](service/kendra/CHANGELOG.md#v150-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.6.1](service/lightsail/CHANGELOG.md#v161-2021-06-04) - * **Documentation**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/location`: [v1.2.0](service/location/CHANGELOG.md#v120-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/mwaa`: [v1.2.0](service/mwaa/CHANGELOG.md#v120-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/outposts`: [v1.4.0](service/outposts/CHANGELOG.md#v140-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/polly`: [v1.3.0](service/polly/CHANGELOG.md#v130-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/qldb`: [v1.3.0](service/qldb/CHANGELOG.md#v130-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/resourcegroups`: [v1.3.2](service/resourcegroups/CHANGELOG.md#v132-2021-06-04) - * **Documentation**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.6.2](service/route53/CHANGELOG.md#v162-2021-06-04) - * **Documentation**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/route53resolver`: [v1.4.2](service/route53resolver/CHANGELOG.md#v142-2021-06-04) - * **Documentation**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.10.0](service/s3/CHANGELOG.md#v1100-2021-06-04) - * **Feature**: The handling of AccessPoint and Outpost ARNs have been updated. - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.7.0](service/s3control/CHANGELOG.md#v170-2021-06-04) - * **Feature**: The handling of AccessPoint and Outpost ARNs have been updated. - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/servicediscovery`: [v1.5.0](service/servicediscovery/CHANGELOG.md#v150-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/sns`: [v1.5.0](service/sns/CHANGELOG.md#v150-2021-06-04) - * **Feature**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/sqs`: [v1.4.2](service/sqs/CHANGELOG.md#v142-2021-06-04) - * **Documentation**: Updated service client to latest API model. -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.6.2](service/ssm/CHANGELOG.md#v162-2021-06-04) - * **Documentation**: Updated service client to latest API model. - -# Release (2021-05-25) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs`: [v1.4.0](service/cloudwatchlogs/CHANGELOG.md#v140-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/commander`: [v1.1.0](service/commander/CHANGELOG.md#v110-2021-05-25) - * **Feature**: Deprecated module. The API client was incorrectly named. Use AWS Systems Manager Incident Manager (ssmincidents) instead. -* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.5.0](service/computeoptimizer/CHANGELOG.md#v150-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/costexplorer`: [v1.6.0](service/costexplorer/CHANGELOG.md#v160-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.8.0](service/ec2/CHANGELOG.md#v180-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/efs`: [v1.4.0](service/efs/CHANGELOG.md#v140-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/forecast`: [v1.6.0](service/forecast/CHANGELOG.md#v160-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.6.0](service/iot/CHANGELOG.md#v160-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/opsworkscm`: [v1.4.0](service/opsworkscm/CHANGELOG.md#v140-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.5.0](service/quicksight/CHANGELOG.md#v150-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.9.0](service/s3/CHANGELOG.md#v190-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/ssmincidents`: [v1.0.0](service/ssmincidents/CHANGELOG.md#v100-2021-05-25) - * **Release**: New AWS service client module -* `github.com/aws/aws-sdk-go-v2/service/transfer`: [v1.4.0](service/transfer/CHANGELOG.md#v140-2021-05-25) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/workspaces`: [v1.4.0](service/workspaces/CHANGELOG.md#v140-2021-05-25) - * **Feature**: API client updated - -# Release (2021-05-20) - -## General Highlights -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.6.0 - * **Feature**: `internal/ini`: This package has been migrated to a separate module at `github.com/aws/aws-sdk-go-v2/internal/ini`. -* `github.com/aws/aws-sdk-go-v2/config`: [v1.3.0](config/CHANGELOG.md#v130-2021-05-20) - * **Feature**: SSO credentials can now be defined alongside other credential providers within the same configuration profile. - * **Bug Fix**: Profile names were incorrectly normalized to lower-case, which could result in unexpected profile configurations. -* `github.com/aws/aws-sdk-go-v2/internal/ini`: [v1.0.0](internal/ini/CHANGELOG.md#v100-2021-05-20) - * **Release**: The `github.com/aws/aws-sdk-go-v2/internal/ini` package is now a Go Module. -* `github.com/aws/aws-sdk-go-v2/service/applicationcostprofiler`: [v1.0.0](service/applicationcostprofiler/CHANGELOG.md#v100-2021-05-20) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/apprunner`: [v1.0.0](service/apprunner/CHANGELOG.md#v100-2021-05-20) - * **Release**: New AWS service client module - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/autoscaling`: [v1.5.0](service/autoscaling/CHANGELOG.md#v150-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/computeoptimizer`: [v1.4.0](service/computeoptimizer/CHANGELOG.md#v140-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/detective`: [v1.6.0](service/detective/CHANGELOG.md#v160-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.5.0](service/eks/CHANGELOG.md#v150-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticache`: [v1.6.0](service/elasticache/CHANGELOG.md#v160-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/elasticsearchservice`: [v1.4.0](service/elasticsearchservice/CHANGELOG.md#v140-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iam`: [v1.5.0](service/iam/CHANGELOG.md#v150-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/imagebuilder`: [v1.5.0](service/imagebuilder/CHANGELOG.md#v150-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.5.0](service/iot/CHANGELOG.md#v150-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotdeviceadvisor`: [v1.4.0](service/iotdeviceadvisor/CHANGELOG.md#v140-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.5.0](service/iotsitewise/CHANGELOG.md#v150-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesis`: [v1.4.0](service/kinesis/CHANGELOG.md#v140-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesisanalytics`: [v1.3.0](service/kinesisanalytics/CHANGELOG.md#v130-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2`: [v1.4.0](service/kinesisanalyticsv2/CHANGELOG.md#v140-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lexmodelsv2`: [v1.2.0](service/lexmodelsv2/CHANGELOG.md#v120-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/licensemanager`: [v1.4.0](service/licensemanager/CHANGELOG.md#v140-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/lightsail`: [v1.6.0](service/lightsail/CHANGELOG.md#v160-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/macie`: [v1.4.0](service/macie/CHANGELOG.md#v140-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/macie2`: [v1.6.0](service/macie2/CHANGELOG.md#v160-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/mediaconnect`: [v1.5.0](service/mediaconnect/CHANGELOG.md#v150-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/neptune`: [v1.5.0](service/neptune/CHANGELOG.md#v150-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/personalize`: [v1.5.0](service/personalize/CHANGELOG.md#v150-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.4.0](service/quicksight/CHANGELOG.md#v140-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/rekognition`: [v1.5.0](service/rekognition/CHANGELOG.md#v150-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.8.0](service/s3/CHANGELOG.md#v180-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemaker`: [v1.6.0](service/sagemaker/CHANGELOG.md#v160-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/sagemakera2iruntime`: [v1.3.0](service/sagemakera2iruntime/CHANGELOG.md#v130-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/securityhub`: [v1.6.0](service/securityhub/CHANGELOG.md#v160-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/support`: [v1.3.0](service/support/CHANGELOG.md#v130-2021-05-20) - * **Feature**: API client updated -* `github.com/aws/aws-sdk-go-v2/service/transcribe`: [v1.4.0](service/transcribe/CHANGELOG.md#v140-2021-05-20) - * **Feature**: API client updated - -# Release (2021-05-14) - -## General Highlights -* **Feature**: Constant has been added to modules to enable runtime version inspection for reporting. -* **Dependency Update**: Updated to the latest SDK module versions - -## Module Highlights -* `github.com/aws/aws-sdk-go-v2`: v1.5.0 - * **Feature**: `AddSDKAgentKey` and `AddSDKAgentKeyValue` in `aws/middleware` package have been updated to direct metadata to `User-Agent` HTTP header. -* `github.com/aws/aws-sdk-go-v2/service/codeartifact`: [v1.3.0](service/codeartifact/CHANGELOG.md#v130-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/commander`: [v1.0.0](service/commander/CHANGELOG.md#v100-2021-05-14) - * **Release**: New AWS service client module - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/configservice`: [v1.5.0](service/configservice/CHANGELOG.md#v150-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.4.0](service/connect/CHANGELOG.md#v140-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/ec2`: [v1.7.0](service/ec2/CHANGELOG.md#v170-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/ecs`: [v1.4.0](service/ecs/CHANGELOG.md#v140-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/eks`: [v1.4.0](service/eks/CHANGELOG.md#v140-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/finspace`: [v1.0.0](service/finspace/CHANGELOG.md#v100-2021-05-14) - * **Release**: New AWS service client module - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/finspacedata`: [v1.0.0](service/finspacedata/CHANGELOG.md#v100-2021-05-14) - * **Release**: New AWS service client module - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/iot`: [v1.4.0](service/iot/CHANGELOG.md#v140-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/iotwireless`: [v1.5.0](service/iotwireless/CHANGELOG.md#v150-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/kinesis`: [v1.3.0](service/kinesis/CHANGELOG.md#v130-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/kinesisanalytics`: [v1.2.0](service/kinesisanalytics/CHANGELOG.md#v120-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/kinesisanalyticsv2`: [v1.3.0](service/kinesisanalyticsv2/CHANGELOG.md#v130-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/lakeformation`: [v1.3.0](service/lakeformation/CHANGELOG.md#v130-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/lookoutmetrics`: [v1.1.0](service/lookoutmetrics/CHANGELOG.md#v110-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/mediaconvert`: [v1.5.0](service/mediaconvert/CHANGELOG.md#v150-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/route53`: [v1.6.0](service/route53/CHANGELOG.md#v160-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/s3`: [v1.7.0](service/s3/CHANGELOG.md#v170-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/s3control`: [v1.6.0](service/s3control/CHANGELOG.md#v160-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/ssm`: [v1.6.0](service/ssm/CHANGELOG.md#v160-2021-05-14) - * **Feature**: Updated to latest service API model. -* `github.com/aws/aws-sdk-go-v2/service/ssmcontacts`: [v1.0.0](service/ssmcontacts/CHANGELOG.md#v100-2021-05-14) - * **Release**: New AWS service client module - * **Feature**: Updated to latest service API model. - -# Release 2021-05-06 - -## Breaking change -* `service/ec2` - v1.6.0 - * This release contains a breaking change to the Amazon EC2 API client. API number(int/int64/etc) and boolean members were changed from value, to pointer type. Your applications using the EC2 API client will fail to compile after upgrading for all members that were updated. To migrate to this module you'll need to update your application to use pointers for all number and boolean members in the API client module. The SDK provides helper utilities to convert between value and pointer types. For example the [aws.Bool](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#Bool) function to get the address from a bool literal. Similar utilities are available for all other primitive types in the [aws](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws) package. - -## Service Client Highlights -* `service/acmpca` - v1.3.0 - * Feature: API client updated -* `service/apigateway` - v1.3.0 - * Feature: API client updated -* `service/auditmanager` - v1.4.0 - * Feature: API client updated -* `service/chime` - v1.3.0 - * Feature: API client updated -* `service/cloudformation` - v1.4.0 - * Feature: API client updated -* `service/cloudfront` - v1.4.0 - * Feature: API client updated -* `service/codegurureviewer` - v1.3.0 - * Feature: API client updated -* `service/connect` - v1.3.0 - * Feature: API client updated -* `service/customerprofiles` - v1.5.0 - * Feature: API client updated -* `service/devopsguru` - v1.3.0 - * Feature: API client updated -* `service/docdb` - v1.4.0 - * Feature: API client updated -* `service/ec2` - v1.6.0 - * Bug Fix: Fix incorrectly modeled Amazon EC2 number and boolean members in structures. The Amazon EC2 API client has been updated with a breaking change to fix all structure number and boolean members to be pointer types instead of value types. Fixes [#1107](https://github.com/aws/aws-sdk-go-v2/issues/1107), [#1178](https://github.com/aws/aws-sdk-go-v2/issues/1178), and [#1190](https://github.com/aws/aws-sdk-go-v2/issues/1190). This breaking change is made within the major version of the client' module, because the client operations failed and were unusable with value type number and boolean members with the EC2 API. - * Feature: API client updated -* `service/ecs` - v1.3.0 - * Feature: API client updated -* `service/eks` - v1.3.0 - * Feature: API client updated -* `service/forecast` - v1.4.0 - * Feature: API client updated -* `service/glue` - v1.4.0 - * Feature: API client updated -* `service/health` - v1.3.0 - * Feature: API client updated -* `service/iotsitewise` - v1.3.0 - * Feature: API client updated -* `service/iotwireless` - v1.4.0 - * Feature: API client updated -* `service/kafka` - v1.3.0 - * Feature: API client updated -* `service/kinesisanalyticsv2` - v1.2.0 - * Feature: API client updated -* `service/macie2` - v1.4.0 - * Feature: API client updated -* `service/marketplacecatalog` - v1.2.0 - * Feature: API client updated -* `service/mediaconvert` - v1.4.0 - * Feature: API client updated -* `service/mediapackage` - v1.4.0 - * Feature: API client updated -* `service/mediapackagevod` - v1.3.0 - * Feature: API client updated -* `service/mturk` - v1.2.0 - * Feature: API client updated -* `service/nimble` - v1.0.0 - * Feature: API client updated -* `service/organizations` - v1.3.0 - * Feature: API client updated -* `service/personalize` - v1.3.0 - * Feature: API client updated -* `service/robomaker` - v1.4.0 - * Feature: API client updated -* `service/route53` - v1.5.0 - * Feature: API client updated -* `service/s3` - v1.6.0 - * Bug Fix: Fix PutObject and UploadPart unseekable stream documentation link to point to the correct location. - * Feature: API client updated -* `service/sagemaker` - v1.4.0 - * Feature: API client updated -* `service/securityhub` - v1.4.0 - * Feature: API client updated -* `service/servicediscovery` - v1.3.0 - * Feature: API client updated -* `service/snowball` - v1.3.0 - * Feature: API client updated -* `service/sns` - v1.3.0 - * Feature: API client updated -* `service/ssm` - v1.5.0 - * Feature: API client updated -## Core SDK Highlights -* Dependency Update: Update smithy-go dependency to v1.4.0 -* Dependency Update: Updated SDK dependencies to their latest versions. -* `aws` - v1.4.0 - * Feature: Add support for FIPS global partition endpoints ([#1242](https://github.com/aws/aws-sdk-go-v2/pull/1242)) - -# Release 2021-04-23 -## Service Client Highlights -* `service/cloudformation` - v1.3.2 - * Documentation: Service Documentation Updates -* `service/cognitoidentityprovider` - v1.2.3 - * Documentation: Service Documentation Updates -* `service/costexplorer` - v1.4.0 - * Feature: Service API Updates -* `service/databasemigrationservice` - v1.3.0 - * Feature: Service API Updates -* `service/detective` - v1.4.0 - * Feature: Service API Updates -* `service/elasticache` - v1.4.0 - * Feature: Service API Updates -* `service/forecast` - v1.3.0 - * Feature: Service API Updates -* `service/groundstation` - v1.3.0 - * Feature: Service API Updates -* `service/kendra` - v1.3.0 - * Feature: Service API Updates -* `service/redshift` - v1.5.0 - * Feature: Service API Updates -* `service/savingsplans` - v1.2.0 - * Feature: Service API Updates -* `service/securityhub` - v1.3.0 - * Feature: Service API Updates -## Core SDK Highlights -* Dependency Update: Updated SDK dependencies to their latest versions. -* `feature/rds/auth` - v1.0.0 - * Feature: Add Support for Amazon RDS IAM Authentication - -# Release 2021-04-14 -## Service Client Highlights -* `service/codebuild` - v1.3.0 - * Feature: API client updated -* `service/codestarconnections` - v1.2.0 - * Feature: API client updated -* `service/comprehendmedical` - v1.2.0 - * Feature: API client updated -* `service/configservice` - v1.4.0 - * Feature: API client updated -* `service/ec2` - v1.5.0 - * Feature: API client updated -* `service/fsx` - v1.3.0 - * Feature: API client updated -* `service/lightsail` - v1.4.0 - * Feature: API client updated -* `service/mediaconnect` - v1.3.0 - * Feature: API client updated -* `service/rds` - v1.3.0 - * Feature: API client updated -* `service/redshift` - v1.4.0 - * Feature: API client updated -* `service/shield` - v1.3.0 - * Feature: API client updated -* `service/sts` - v1.3.0 - * Feature: API client updated -## Core SDK Highlights -* Dependency Update: Updated SDK dependencies to their latest versions. - -# Release 2021-04-08 -## Service Client Highlights -* Feature: API model sync -* `service/lookoutequipment` - v1.0.0 - * v1 Release: new service client -* `service/mgn` - v1.0.0 - * v1 Release: new service client -## Core SDK Highlights -* Dependency Update: smithy-go version bump -* Dependency Update: Updated SDK dependencies to their latest versions. - -# Release 2021-04-01 -## Service Client Highlights -* Bug Fix: Fix URL Path and RawQuery of resolved endpoint being ignored by the API client's request serialization. - * Fixes [issue#1191](https://github.com/aws/aws-sdk-go-v2/issues/1191) -* Refactored internal endpoints model for accessors -* Feature: updated to latest models -* New services - * `service/location` - v1.0.0 - * `service/lookoutmetrics` - v1.0.0 -## Core SDK Highlights -* Dependency Update: update smithy-go module -* Dependency Update: Updated SDK dependencies to their latest versions. - -# Release 2021-03-18 -## Service Client Highlights -* Bug Fix: Updated presign URLs to no longer include the X-Amz-User-Agent header -* Feature: Update API model -* Add New supported API -* `service/internal/s3shared` - v1.2.0 - * Feature: Support for S3 Object Lambda -* `service/s3` - v1.3.0 - * Bug Fix: Adds documentation to the PutObject and UploadPart operations Body member how to upload unseekable objects to an Amazon S3 Bucket. - * Feature: S3 Object Lambda is a new S3 feature that enables users to apply their own custom code to process the output of a standard S3 GET request by automatically invoking a Lambda function with a GET request -* `service/s3control` - v1.3.0 - * Feature: S3 Object Lambda is a new S3 feature that enables users to apply their own custom code to process the output of a standard S3 GET request by automatically invoking a Lambda function with a GET request -## Core SDK Highlights -* Dependency Update: Updated SDK dependencies to their latest versions. -* `aws` - v1.3.0 - * Feature: Add helper to V4 signer package to swap compute payload hash middleware with unsigned payload middleware -* `feature/s3/manager` - v1.1.0 - * Bug Fix: Add support for Amazon S3 Object Lambda feature. - * Feature: Updates for S3 Object Lambda feature - -# Release 2021-03-12 -## Service Client Highlights -* Bug Fix: Fixed a bug that could union shape types to be deserialized incorrectly -* Bug Fix: Fixed a bug where unboxed shapes that were marked as required were not serialized and sent over the wire, causing an API error from the service. -* Bug Fix: Fixed a bug with generated API Paginators' handling of nil input parameters causing a panic. -* Dependency Update: update smithy-go dependency -* `service/detective` - v1.1.2 - * Bug Fix: Fix deserialization of API response timestamp member. -* `service/docdb` - v1.2.0 - * Feature: Client now support presigned URL generation for CopyDBClusterSnapshot and CreateDBCluster operations by specifying the target SourceRegion -* `service/neptune` - v1.2.0 - * Feature: Client now support presigned URL generation for CopyDBClusterSnapshot and CreateDBCluster operations by specifying the target SourceRegion -* `service/s3` - v1.2.1 - * Bug Fix: Fixed an issue where ListObjectsV2 and ListParts paginators could loop infinitely - * Bug Fix: Fixed key encoding when addressing S3 Access Points -## Core SDK Highlights -* Dependency Update: Updated SDK dependencies to their latest versions. -* `config` - v1.1.2 - * Bug Fix: Fixed a panic when using WithEC2IMDSRegion without a specified IMDS client - -# Release 2021-02-09 -## Service Client Highlights -* `service/s3` - v1.2.0 - * Feature: adds support for s3 vpc endpoint interface [#1113](https://github.com/aws/aws-sdk-go-v2/pull/1113) -* `service/s3control` - v1.2.0 - * Feature: adds support for s3 vpc endpoint interface [#1113](https://github.com/aws/aws-sdk-go-v2/pull/1113) -## Core SDK Highlights -* Dependency Update: Updated SDK dependencies to their latest versions. -* `aws` - v1.2.0 - * Feature: support to add endpoint source on context. Adds getter/setter for the endpoint source [#1113](https://github.com/aws/aws-sdk-go-v2/pull/1113) -* `config` - v1.1.1 - * Bug Fix: Only Validate SSO profile configuration when attempting to use SSO credentials [#1103](https://github.com/aws/aws-sdk-go-v2/pull/1103) - * Bug Fix: Environment credentials were not taking precedence over AWS_PROFILE [#1103](https://github.com/aws/aws-sdk-go-v2/pull/1103) - -# Release 2021-01-29 -## Service Client Highlights -* Bug Fix: A serialization bug has been fixed that caused some service operations with empty inputs to not be serialized correctly ([#1071](https://github.com/aws/aws-sdk-go-v2/pull/1071)) -* Bug Fix: Fixes a bug that could cause a waiter to fail when comparing types ([#1083](https://github.com/aws/aws-sdk-go-v2/pull/1083)) -## Core SDK Highlights -* Feature: EndpointResolverFromURL helpers have been added for constructing a service EndpointResolver type ([#1066](https://github.com/aws/aws-sdk-go-v2/pull/1066)) -* Dependency Update: Updated SDK dependencies to their latest versions. -* `aws` - v1.1.0 - * Feature: Add support for specifying the EndpointSource on aws.Endpoint types ([#1070](https://github.com/aws/aws-sdk-go-v2/pull/1070/)) -* `config` - v1.1.0 - * Feature: Add Support for AWS Single Sign-On (SSO) credential provider ([#1072](https://github.com/aws/aws-sdk-go-v2/pull/1072)) -* `credentials` - v1.1.0 - * Feature: Add AWS Single Sign-On (SSO) credential provider ([#1072](https://github.com/aws/aws-sdk-go-v2/pull/1072)) - -# Release 2021-01-19 - -We are excited to announce the [General Availability](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-version-2-general-availability/) -(GA) release of the [AWS SDK for Go version 2 (v2)](https://github.com/aws/aws-sdk-go-v2). -This release follows the [Release candidate](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-version-2-v2-release-candidate) -of the AWS SDK for Go v2. Version 2 incorporates customer feedback from version 1 and takes advantage of modern Go language features. - -## Breaking Changes -* `aws`: Updated Config.Retryer member to be a func that returns aws.Retryer ([#1033](https://github.com/aws/aws-sdk-go-v2/pull/1033)) - * Updates the SDK's references to Config.Retryer to be a function that returns aws.Retryer value. This ensures that custom retry options specified in the `aws.Config` are scoped to individual client instances. - * All API clients created with the config will call the `Config.Retryer` function to get an aws.Retryer. - * Removes duplicate `Retryer` interface from `retry` package. Single definition is `aws.Retryer` now. -* `aws/middleware`: Updates `AddAttemptClockSkewMiddleware` to use appropriate `AddRecordResponseTiming` naming ([#1031](https://github.com/aws/aws-sdk-go-v2/pull/1031)) - * Removes `ResponseMetadata` struct type, and adds its members to middleware metadata directly, to improve discoverability. -* `config`: Updated the `WithRetryer` helper to take a function that returns an aws.Retryer ([#1033](https://github.com/aws/aws-sdk-go-v2/pull/1033)) - * All API clients created with the config will call the `Config.Retryer` function to get an aws.Retryer. -* `API Clients`: Fix SDK's API client enum constant name generation to have expected casing ([#1020](https://github.com/aws/aws-sdk-go-v2/pull/1020)) - * This updates of the generated enum const value names in API client's `types` package to have the expected casing. Prior to this, enum names were being generated with lowercase names instead of camel case. -* `API Clients`: Updates SDK's API client request middleware stack values to be scoped to individual operation call ([#1019](https://github.com/aws/aws-sdk-go-v2/pull/1019)) - * The API client request middleware stack values were mistakenly allowed to escape to nested API operation calls. This broke the SDK's presigners. - * Stack values that should not escape are not scoped to the individual operation call. -* `Multiple API Clients`: Unexported the API client's `WithEndpointResolver` this type wasn't intended to be exported ([#1051](https://github.com/aws/aws-sdk-go-v2/pull/1051)) - * Using the `aws.Config.EndpointResolver` member for setting custom endpoint resolver instead. - -## New Features -* `service/sts`: Add support for presigning GetCallerIdentity operation ([#1030](https://github.com/aws/aws-sdk-go-v2/pull/1030)) - * Adds a PresignClient to the `sts` API client module. Use PresignGetCallerIdentity to obtain presigned URLs for the create presigned URLs for the GetCallerIdentity operation. - * Fixes [#1021](https://github.com/aws/aws-sdk-go-v2/issues/1021) -* `aws/retry`: Add package documentation for retry package ([#1033](https://github.com/aws/aws-sdk-go-v2/pull/1033)) - * Adds documentation for the retry package - -## Bug Fixes -* `Multiple API Clients`: Fix SDK's generated serde for unmodeled operation input/output ([#1050](https://github.com/aws/aws-sdk-go-v2/pull/1050)) - * Fixes [#1047](https://github.com/aws/aws-sdk-go-v2/issues/1047) by fixing the how the SDKs generated serialization and deserialization of API operations that did not have modeled input or output types. This caused the SDK to incorrectly attempt to deserialize response documents that were either empty, or contained unexpected data. -* `service/s3`: Fix Tagging parameter not serialized correctly for presigned PutObject requests ([#1017](https://github.com/aws/aws-sdk-go-v2/pull/1017)) - * Fixes the Tagging parameter incorrectly being serialized to the URL's query string instead of being signed as a HTTP request header. - * When using PresignPutObject make sure to add all signed headers returned by the method to your down stream's HTTP client's request. These headers must be included in the request, or the request will fail with signature errors. - * Fixes [#1016](https://github.com/aws/aws-sdk-go-v2/issues/1016) -* `service/s3`: Fix Unmarshaling `GetObjectAcl` operation's Grantee type response ([#1034](https://github.com/aws/aws-sdk-go-v2/pull/1034)) - * Updates the SDK's codegen for correctly deserializing XML attributes in tags with XML namespaces. - * Fixes [#1013](https://github.com/aws/aws-sdk-go-v2/issues/1013) -* `service/s3`: Fix Unmarshaling `GetBucketLocation` operation's response ([#1027](https://github.com/aws/aws-sdk-go-v2/pull/1027)) - * Fixes [#908](https://github.com/aws/aws-sdk-go-v2/issues/908) - -## Migrating from v2 preview SDK's v0.31.0 to v1.0.0 - -### aws.Config Retryer member - -If your application sets the `Config.Retryer` member the application will need -to be updated to set a function that returns an `aws.Retryer`. In addition, if -your application used the `config.WithRetryer` helper a function that returns -an `aws.Retryer` needs to be used. - -If your application used the `retry.Retryer` type, update to using the -`aws.Retryer` type instead. - -### API Client enum value names - -If your application used the enum values in the API Client's `types` package between v0.31.0 and the latest version of the client module you may need to update the naming of the enum value. The enum value name casing were updated to camel case instead lowercased. - -# Release 2020-12-23 - -We’re happy to announce the Release Candidate (RC) of the AWS SDK for Go v2. -This RC follows the developer preview release of the AWS SDK for Go v2. The SDK -has undergone a major rewrite from the v1 code base to incorporate your -feedback and to take advantage of modern Go language features. - -## Documentation -* Developer Guide: https://aws.github.io/aws-sdk-go-v2/docs/ -* API Reference docs: https://pkg.go.dev/github.com/aws/aws-sdk-go-v2 -* Migration Guide: https://aws.github.io/aws-sdk-go-v2/docs/migrating/ - -## Breaking Changes -* Dependency `github.com/awslabs/smithy-go` has been relocated to `github.com/aws/smithy-go` - * The `smithy-go` repository was moved from the `awslabs` GitHub organization to `aws`. - * `xml`, `httpbinding`, and `json` package relocated under `encoding` package. -* The module `ec2imds` moved to `feature/ec2/imds` path ([#984](https://github.com/aws/aws-sdk-go-v2/pull/984)) - * Moves the `ec2imds` feature module to be in common location as other SDK features. -* `aws/signer/v4`: Refactor AWS Sigv4 Signer and options types to allow function options ([#955](https://github.com/aws/aws-sdk-go-v2/pull/955)) - * Fixes [#917](https://github.com/aws/aws-sdk-go-v2/issues/917), [#960](https://github.com/aws/aws-sdk-go-v2/issues/960), [#958](https://github.com/aws/aws-sdk-go-v2/issues/958) -* `aws`: CredentialCache type updated to require constructor function ([#946](https://github.com/aws/aws-sdk-go-v2/pull/946)) - * Fixes [#940](https://github.com/aws/aws-sdk-go-v2/issues/940) -* `credentials`: ExpiryWindow and Jitter moved from credential provider to `CredentialCache` ([#946](https://github.com/aws/aws-sdk-go-v2/pull/946)) - * Moves ExpiryWindow and Jitter options to common option of the `CredentialCache` instead of duplicated across providers. - * Fixes [#940](https://github.com/aws/aws-sdk-go-v2/issues/940) -* `config`: Ensure shared credentials file has precedence over shared config file ([#990](https://github.com/aws/aws-sdk-go-v2/pull/990)) - * The shared config file was incorrectly overriding the shared credentials file when merging values. -* `config`: Add `context.Context` to `LoadDefaultConfig` ([#951](https://github.com/aws/aws-sdk-go-v2/pull/951)) - * Updates `config#LoadDefaultConfig` function to take `context.Context` as well as functional options for the `config#LoadOptions` type. - * Fixes [#926](https://github.com/aws/aws-sdk-go-v2/issues/926), [#819](https://github.com/aws/aws-sdk-go-v2/issues/819) -* `aws`: Rename `NoOpRetryer` to `NopRetryer` to have consistent naming with rest of SDK ([#987](https://github.com/aws/aws-sdk-go-v2/pull/987)) - * Fixes [#878](https://github.com/aws/aws-sdk-go-v2/issues/878) -* `service/s3control`: Change `S3InitiateRestoreObjectOperation.ExpirationInDays` from value to pointer type ([#988](https://github.com/aws/aws-sdk-go-v2/pull/988)) -* `aws`: `ReaderSeekerCloser` and `WriteAtBuffer` have been relocated to `feature/s3/manager`. - -## New Features -* *Waiters*: Add Waiter utilities for API clients ([aws/smithy-go#237](https://github.com/aws/smithy-go/pull/237)) - * Your application can now use Waiter utilities to wait for AWS resources. -* `feature/dynamodb/attributevalue`: Add Amazon DynamoDB Attribute value marshaler utility ([#948](https://github.com/aws/aws-sdk-go-v2/pull/948)) - * Adds a utility for marshaling Go types too and from Amazon DynamoDB AttributeValues. - * Also includes utility for converting from Amazon DynamoDB Streams AttributeValues to Amazon DynamoDB AttributeValues. -* `feature/dynamodbstreams/attributevalue`: Add Amazon DynamoDB Streams Attribute value marshaler utility ([#948](https://github.com/aws/aws-sdk-go-v2/pull/948)) - * Adds a utility for marshaling Go types too and from Amazon DynamoDB Streams AttributeValues. - * Also includes utility for converting from Amazon DynamoDB AttributeValues to Amazon DynamoDB Streams AttributeValues. -* `feature/dynamodb/expression`: Add Amazon DynamoDB expression utility ([#981](https://github.com/aws/aws-sdk-go-v2/pull/981)) - * Adds the expression utility to the SDK for easily building Amazon DynamoDB operation expressions in code. - -## Bug Fixes -* `service/s3`: Fix Presigner to configure client correctly for Amazon S3 ([#969](https://github.com/aws/aws-sdk-go-v2/pull/969)) -* service/s3: Fix deserialization of CompleteMultipartUpload ([#965](https://github.com/aws/aws-sdk-go-v2/pull/965) - * Fixes [#927](https://github.com/aws/aws-sdk-go-v2/issues/927) -* `codegen`: Fix API client union serialization ([#979](https://github.com/aws/aws-sdk-go-v2/pull/979)) - * Fixes [#978](https://github.com/aws/aws-sdk-go-v2/issues/978) - -## Service Client Highlights -* API Clients have been bumped to version `v0.31.0` -* Regenerate API Clients from updated API models adding waiter utilities, and union parameters. -* `codegen`: - * Add documentation to union API parameters describing valid member types, and usage example ([aws/smithy-go#239](https://github.com/aws/smithy-go/pull/239)) - * Normalize Metadata header map keys to be lower case ([aws/smithy-go#241](https://github.com/aws/smithy-go/pull/241)), ([#982](https://github.com/aws/aws-sdk-go-v2/pull/982)) - * Fixes [#376](https://github.com/aws/aws-sdk-go-v2/issues/376) Amazon S3 Metadata parameters keys are always returned as lower case. - * Fix API client deserialization of XML based responses ([aws/smithy-go#245](https://github.com/aws/smithy-go/pull/245)), ([#992](https://github.com/aws/aws-sdk-go-v2/pull/992)) - * Fixes [#910](https://github.com/aws/aws-sdk-go-v2/issues/910) -* `service/s3`, `service/s3control`: - * Add support for reading `s3_use_arn_region` from shared config file ([#991](https://github.com/aws/aws-sdk-go-v2/pull/991)) - * Add Utility for getting RequestID and HostID of response ([#983](https://github.com/aws/aws-sdk-go-v2/pull/983)) - - -## Other changes -* Updates branch `HEAD` points from `master` to `main`. - * This should not impact your application, but if you have pull requests or forks of the SDK you may need to update the upstream branch your fork is based off of. - -## Migrating from v2 preview SDK's v0.30.0 to v0.31.0 release candidate - -### smithy-go module relocation - -If your application uses `smithy-go` utilities for request pipeline your application will need to be updated to refer to the new import path of `github.com/aws/smithy-go`. If you application did *not* use `smithy-go` utilities directly, your application will update automatically. - -### EC2 IMDS module relocation - -If your application used the `ec2imds` module, it has been relocated to `feature/ec2/imds`. Your application will need to update to the new import path, `github.com/aws/aws-sdk-go-v2/feature/ec2/imds`. - -### CredentialsCache Constructor and ExpiryWindow Options - -The `aws#CredentialsCache` type was updated, and a new constructor function, `NewCredentialsCache` was added. This function needs to be used to initialize the `CredentialCache`. The constructor also has function options to specify additional configuration, e.g. ExpiryWindow and Jitter. - -If your application was specifying the `ExpiryWindow` with the `credentials/stscreds#AssumeRoleOptions`, `credentials/stscreds#WebIdentityRoleOptions`, `credentials/processcreds#Options`, or `credentials/ec2rolecrds#Options` types the `ExpiryWindow` option will need to specified on the `CredentialsCache` constructor instead. - -### AWS Sigv4 Signer Refactor - -The `aws/signer/v4` package's `Signer.SignHTTP` and `Signer.PresignHTTP` methods were updated to take functional options. If your application provided a custom implementation for API client's `HTTPSignerV4` or `HTTPPresignerV4` interfaces, that implementation will need to be updated for the new function signature. - -### Configuration Loading - -The `config#LoadDefaultConfig` function has been updated to require a `context.Context` as the first parameter, with additional optional function options as variadic additional arguments. Your application will need to update its usage of `LoadDefaultConfig` to pass in `context.Context` as the first parameter. If your application used the `With...` helpers those should continue to work without issue. - -The v2 SDK corrects its behavior to be inline with the AWS CLI and other AWS SDKs. Refer to https://docs.aws.amazon.com/credref/latest/refdocs/overview.html for more information how to use the shared config and credentials files. - - -# Release 2020-11-30 - -## Breaking Change -* `codegen`: Add support for slice and maps generated with value members instead of pointer ([#887](https://github.com/aws/aws-sdk-go-v2/pull/887)) - * This update allow the SDK's code generation to be aware of API shapes and members that are not nullable, and can be rendered as value types by the code generation instead of pointer types. - * Several API client parameter types will change from pointer members to value members for slice, map, number and bool member types. - * See Migration notes for migrating to v0.30.0 with this change. -* `aws/transport/http`: Move aws.BuildableHTTPClient to HTTP transport package ([#898](https://github.com/aws/aws-sdk-go-v2/pull/898)) - * Moves the `BuildableHTTPClient` from the SDK's `aws` package to the `aws/transport/http` package as `BuildableClient` to with other HTTP specific utilities. -* `feature/cloudfront/sign`: Add CloudFront sign feature as module ([#884](https://github.com/aws/aws-sdk-go-v2/pull/884)) - * Moves `service/cloudfront/sign` package out of the `cloudfront` module, and into its own module as `github.com/aws/aws-sdk-go-v2/feature/cloudfront/sign`. - -## New Features -* `config`: Add a WithRetryer provider helper to the config loader ([#897](https://github.com/aws/aws-sdk-go-v2/pull/897)) - * Adds a `WithRetryer` configuration provider to the config loader as a convenience helper to set the `Retryer` on the `aws.Config` when its being loaded. -* `config`: Default to TLS 1.2 for HTTPS requests ([#892](https://github.com/aws/aws-sdk-go-v2/pull/892)) - * Updates the SDK's default HTTP client to use TLS 1.2 as the minimum TLS version for all HTTPS requests by default. - -## Bug Fixes -* `config`: Fix AWS_CA_BUNDLE usage while loading default config ([#912](https://github.com/aws/aws-sdk-go-v2/pull/)) - * Fixes the `LoadDefaultConfig`'s configuration provider order to correctly load a custom HTTP client prior to configuring the client for `AWS_CA_BUNDLE` environment variable. -* `service/s3`: Fix signature mismatch error for s3 ([#913](https://github.com/aws/aws-sdk-go-v2/pull/913)) - * Fixes ([#883](https://github.com/aws/aws-sdk-go-v2/issues/883)) -* `service/s3control`: - * Fix HostPrefix addition behavior for s3control ([#882](https://github.com/aws/aws-sdk-go-v2/pull/882)) - * Fixes ([#863](https://github.com/aws/aws-sdk-go-v2/issues/863)) - * Fix s3control error deserializer ([#875](https://github.com/aws/aws-sdk-go-v2/pull/875)) - * Fixes ([#864](https://github.com/aws/aws-sdk-go-v2/issues/864)) - -## Service Client Highlights -* Pagination support has been added to supported APIs. See [Using Operation Paginators](https://aws.github.io/aws-sdk-go-v2/docs/making-requests/#using-operation-paginators) in the Developer Guide. ([#885](https://github.com/aws/aws-sdk-go-v2/pull/885)) -* Logging support has been added to service clients. See [Logging](https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/logging/) in the Developer Guide. ([#872](https://github.com/aws/aws-sdk-go-v2/pull/872)) -* `service`: Add support for pre-signed URL clients for S3, RDS, EC2 service ([#888](https://github.com/aws/aws-sdk-go-v2/pull/888)) - * `service/s3`: operations `PutObject` and `GetObject` are now supported with s3 pre-signed url client. - * `service/ec2`: operation `CopySnapshot` is now supported with ec2 pre-signed url client. - * `service/rds`: operations `CopyDBSnapshot`, `CreateDBInstanceReadReplica`, `CopyDBClusterSnapshot`, `CreateDBCluster` are now supported with rds pre-signed url client. -* `service/s3`: Add support for S3 access point and S3 on outposts access point ARNs ([#870](https://github.com/aws/aws-sdk-go-v2/pull/870)) -* `service/s3control`: Adds support for S3 on outposts access point and S3 on outposts bucket ARNs ([#870](https://github.com/aws/aws-sdk-go-v2/pull/870)) - -## Migrating from v2 preview SDK's v0.29.0 to v0.30.0 - -### aws.BuildableHTTPClient move -The `aws`'s `BuildableHTTPClient` HTTP client implementation was moved to `aws/transport/http` as `BuildableClient`. If your application used the `aws.BuildableHTTPClient` type, update it to use the `BuildableClient` in the `aws/transport/http` package. - -### Slice and Map API member types -This release includes several code generation updates for API client's slice map members. Using API modeling metadata the Slice and map members are now generated as value types instead of pointer types. For your application this means that for these types, the SDK no longer will have pointer member types, and have value member types. - -To migrate to this change you'll need to remove the pointer handling for slice and map members, and instead use value type handling of the member values. - -### Boolean and Number API member types -Similar to the slice and map API member types being generated as value, the SDK's code generation now has metadata where the SDK can generate boolean and number members as value type instead of pointer types. - -To migrate to this change you'll need to remove the pointer handling for numbers and boolean member types, and instead use value handling. - -# Release 2020-10-30 - -## New Features -* Adds HostnameImmutable flag on aws.Endpoint to direct SDK if the associated endpoint is modifiable.([#848](https://github.com/aws/aws-sdk-go-v2/pull/848)) - -## Bug Fixes -* Fix SDK handling of xml based services - xml namespaces ([#858](https://github.com/aws/aws-sdk-go-v2/pull/858)) - * Fixes ([#850](https://github.com/aws/aws-sdk-go-v2/issues/850)) - -## Service Client Highlights -* API Clients have been bumped to version `v0.29.0` - * Regenerate API Clients from update API models. -* Improve client doc generation. - -## Core SDK Highlights -* Dependency Update: Updated SDK dependencies to their latest versions. - -## Migrating from v2 preview SDK's v0.28.0 to v0.29.0 -* API Clients ResolverOptions type renamed to EndpointResolverOptions - -# Release 2020-10-26 - -## New Features -* `service/s3`: Add support for Accelerate, and Dualstack ([#836](https://github.com/aws/aws-sdk-go-v2/pull/836)) -* `service/s3control`: Add support for Dualstack ([#836](https://github.com/aws/aws-sdk-go-v2/pull/836)) - -## Service Client Highlights -* API Clients have been bumped to version `v0.28.0` - * Regenerate API Clients from update API models. -* `service/s3`: Add support for Accelerate, and Dualstack ([#836](https://github.com/aws/aws-sdk-go-v2/pull/836)) -* `service/s3control`: Add support for Dualstack ([#836](https://github.com/aws/aws-sdk-go-v2/pull/836)) -* `service/route53`: Fix sanitizeURL customization to handle leading slash(`/`) [#846](https://github.com/aws/aws-sdk-go-v2/pull/846) - * Fixes [#843](https://github.com/aws/aws-sdk-go-v2/issues/843) -* `service/route53`: Fix codegen to correctly look for operations that need sanitize url ([#851](https://github.com/aws/aws-sdk-go-v2/pull/851)) - -## Core SDK Highlights -* `aws/protocol/restjson`: Fix unexpected JSON error response deserialization ([#837](https://github.com/aws/aws-sdk-go-v2/pull/837)) - * Fixes [#832](https://github.com/aws/aws-sdk-go-v2/issues/832) -* `example/service/s3/listobjects`: Add example for Amazon S3 ListObjectsV2 ([#838](https://github.com/aws/aws-sdk-go-v2/pull/838)) - -# Release 2020-10-16 - -## New Features -* `feature/s3/manager`: - * Initial `v0.1.0` release - * Add the Amazon S3 Upload and Download transfer manager ([#802](https://github.com/aws/aws-sdk-go-v2/pull/802)) - -## Service Client Highlights -* Clients have been bumped to version `v0.27.0` -* `service/machinelearning`: Add customization for setting client endpoint with PredictEndpoint value if set ([#782](https://github.com/aws/aws-sdk-go-v2/pull/782)) -* `service/s3`: Fix empty response body deserialization in case of error response ([#801](https://github.com/aws/aws-sdk-go-v2/pull/801)) - * Fixes xml deserialization util to correctly handle empty response body in case of an error response. -* `service/s3`: Add customization to auto fill Content-Md5 request header for Amazon S3 operations ([#812](https://github.com/aws/aws-sdk-go-v2/pull/812)) -* `service/s3`: Add fallback to using HTTP status code for error code ([#818](https://github.com/aws/aws-sdk-go-v2/pull/818)) - * Adds falling back to using the HTTP status code to create a API Error code when not error code is received from the service, such as HeadObject. -* `service/route53`: Add support for deserialzing `InvalidChangeBatch` API error ([#792](https://github.com/aws/aws-sdk-go-v2/pull/792)) -* `codegen`: Remove API client `Options` getter methods ([#788](https://github.com/aws/aws-sdk-go-v2/pull/788)) -* `codegen`: Regenerate API Client modeled endpoints ([#791](https://github.com/aws/aws-sdk-go-v2/pull/791)) -* `codegen`: Sort API Client struct member paramaters by required and alphabetical ([#787](https://github.com/aws/aws-sdk-go-v2/pull/787)) -* `codegen`: Add package docs to API client modules ([#821](https://github.com/aws/aws-sdk-go-v2/pull/821)) -* `codegen`: Rename `smithy-go`'s `smithy.OperationError` to `smithy.OperationInvokeError`. - -## Core SDK Highlights -* `config`: - * Bumped to `v0.2.0` - * Refactor Config Module, Add Config Package Documentation and Examples, Improve Overall SDK Readme ([#822](https://github.com/aws/aws-sdk-go-v2/pull/822)) -* `credentials`: - * Bumped to `v0.1.2` - * Strip Monotonic Clock Readings when Comparing Credential Expiry Time ([#789](https://github.com/aws/aws-sdk-go-v2/pull/789)) -* `ec2imds`: - * Bumped to `v0.1.2` - * Fix refreshing API token if expired ([#789](https://github.com/aws/aws-sdk-go-v2/pull/789)) - -## Migrating from v0.26.0 to v0.27.0 - -#### Configuration - -The `config` module's exported types were trimmed down to add clarity and reduce confusion. Additional changes to the `config` module' helpers. - -* Refactored `WithCredentialsProvider`, `WithHTTPClient`, and `WithEndpointResolver` to functions instead of structs. -* Removed `MFATokenFuncProvider`, use `AssumeRoleCredentialOptionsProvider` for setting options for `stscreds.AssumeRoleOptions`. -* Renamed `WithWebIdentityCredentialProviderOptions` to `WithWebIdentityRoleCredentialOptions` -* Renamed `AssumeRoleCredentialProviderOptions` to `AssumeRoleCredentialOptionsProvider` -* Renamed `EndpointResolverFuncProvider` to `EndpointResolverProvider` - -#### API Client -* API Client `Options` type getter methods have been removed. Use the struct members instead. -* The error returned by API Client operations was renamed from `smithy.OperationError` to `smithy.OperationInvokeError`. - -# Release 2020-09-30 - -## Service Client Highlights -* Service clients have been bumped to `v0.26.0` simplify the documentation experience when using [pkg.go.dev](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2). -* `service/s3`: Disable automatic decompression of getting Amazon S3 objects with the `Content-Encoding: gzip` metadata header. ([#748](https://github.com/aws/aws-sdk-go-v2/pull/748)) - * This changes the SDK's default behavior with regard to making S3 API calls. The client will no longer automatically set the `Accept-Encoding` HTTP request header, nor will it automatically decompress the gzipped response when the `Content-Encoding: gzip` response header was received. - * If you'd like the client to sent the `Accept-Encoding: gzip` request header, you can add this header to the API operation method call with the [SetHeaderValue](https://pkg.go.dev/github.com/awslabs/smithy-go/transport/http#SetHeaderValue). middleware helper. -* `service/cloudfront/sign`: Fix cloudfront example usage of SignWithPolicy ([#673](https://github.com/aws/aws-sdk-go-v2/pull/673)) - * Fixes [#671](https://github.com/aws/aws-sdk-go-v2/issues/671) documentation typo by correcting the usage of `SignWithPolicy`. - -## Core SDK Highlights -* SDK core module released at `v0.26.0` -* `config` module released at `v0.1.1` -* `credentials` module released at `v0.1.1` -* `ec2imds` module released at `v0.1.1` - - -# Release 2020-09-28 -## Announcements -We’re happy to share the updated clients for the v0.25.0 preview version of the AWS SDK for Go V2. - -The updated clients leverage new developments and advancements within AWS and the Go software ecosystem at large since -our original preview announcement. Using the new clients will be a bit different than before. The key differences are: -simplified API operation invocation, performance improvements, support for error wrapping, and a new middleware architecture. -So below we have a guided walkthrough to help try it out and share your feedback in order to better influence the features -you’d like to see in the GA version. - -See [Announcement Blog Post](https://aws.amazon.com/blogs/developer/client-updates-in-the-preview-version-of-the-aws-sdk-for-go-v2/) for more details. - -## Service Client Highlights -* Initial service clients released at version `v0.1.0` -## Core SDK Highlights -* SDK core module released at `v0.25.0` -* `config` module released at `v0.1.0` -* `credentials` module released at `v0.1.0` -* `ec2imds` module released at `v0.1.0` - -## Migrating from v2 preview SDK's v0.24.0 to v0.25.0 - -#### Design changes - -The v2 preview SDK `v0.25.0` release represents a significant stepping stone bringing the v2 SDK closer to its target design and usability. This release includes significant breaking changes to the v2 preview SDK. The updates in the `v0.25.0` release focus on refactoring and modularization of the SDK’s API clients to use the new [client design](https://github.com/aws/aws-sdk-go-v2/issues/438), updated request pipeline (aka [middleware](https://pkg.go.dev/github.com/awslabs/smithy-go/middleware)), refactored [credential providers](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials), and [configuration loading](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/config) packages. - -We've also bumped the minimum supported Go version with this release. Starting with v0.25.0 the SDK requires a minimum version of Go `v1.15`. - -As a part of the refactoring done to v2 preview SDK some components have not been included in this update. The following is a non exhaustive list of features that are not available. - -* API Paginators - [#439](https://github.com/aws/aws-sdk-go-v2/issues/439) -* API Waiters - [#442](https://github.com/aws/aws-sdk-go-v2/issues/442) -* Presign URL - [#794](https://github.com/aws/aws-sdk-go-v2/issues/794) -* Amazon S3 Upload and Download manager - [#802](https://github.com/aws/aws-sdk-go-v2/pull/802) -* Amazon DynamoDB's AttributeValue marshaler, and Expression package - [#790](https://github.com/aws/aws-sdk-go-v2/issues/790) -* Debug Logging - [#594](https://github.com/aws/aws-sdk-go-v2/issues/594) - -We expect additional breaking changes to the v2 preview SDK in the coming releases. We expect these changes to focus on organizational, naming, and hardening the SDK's design for future feature capabilities after it is released for general availability. - - -#### Relocated Packages - -In this release packages within the SDK were relocated, and in some cases those packages were converted to Go modules. The following is a list of packages have were relocated. - -* `github.com/aws/aws-sdk-go-v2/aws/external` => `github.com/aws/aws-sdk-go-v2/config` module -* `github.com/aws/aws-sdk-go-v2/aws/ec2metadata` => `github.com/aws/aws-sdk-go-v2/ec2imds` module - -The `github.com/aws/aws-sdk-go-v2/credentials` module contains refactored credentials providers. - -* `github.com/aws/aws-sdk-go-v2/ec2rolecreds` => `github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds` -* `github.com/aws/aws-sdk-go-v2/endpointcreds` => `github.com/aws/aws-sdk-go-v2/credentials/endpointcreds` -* `github.com/aws/aws-sdk-go-v2/processcreds` => `github.com/aws/aws-sdk-go-v2/credentials/processcreds` -* `github.com/aws/aws-sdk-go-v2/stscreds` => `github.com/aws/aws-sdk-go-v2/credentials/stscreds` - - -#### Modularization - -New modules were added to the v2 preview SDK to allow the components to be versioned independently from each other. This allows your application to depend on specific versions of an API client module, and take discrete updates from the SDK core and other API client modules as desired. - -* [github.com/aws/aws-sdk-go-v2/config](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/config) -* [github.com/aws/aws-sdk-go-v2/credentials](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials) -* Module for each API client, e.g. [github.com/aws/aws-sdk-go-v2/service/s3](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/s3) - - -#### API Clients - -The following is a list of the major changes to the API client modules - -* Removed paginators: we plan to add these back once they are implemented to integrate with the SDK's new API client design. -* Removed waiters: we need to further investigate how the V2 SDK should expose waiters, and how their behavior should be modeled. -* API Clients are now Go modules. When migrating to the v2 preview SDK `v0.25.0`, you'll need to add the API client's module to your application's go.mod file. -* API parameter nested types have been moved to a `types` package within the API client's module, e.g. `github.com/aws/aws-sdk-go-v2/service/s3/types` These types were moved to improve documentation and discovery of the API client, operation, and input/output types. For example Amazon S3's ListObject's operation [ListObjectOutput.Contents](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/s3/#ListObjectsOutput) input parameter is a slice of [types.Object](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/s3/types#Object). -* The client operation method has been renamed, removing the `Request` suffix. The method now invokes the operation instead of constructing a request, which needed to be invoked separately. The operation methods were also expanded to include functional options for providing operation specific configuration, such as modifying the request pipeline. - -```go -result, err := client.Scan(context.TODO(), &dynamodb.ScanInput{ - TableName: aws.String("exampleTable"), -}, func(o *Options) { - // Limit operation calls to only 1 attempt. - o.Retryer = retry.AddWithMaxAttempts(o.Retryer, 1) -}) -``` - - -#### Configuration - -In addition to the `github.com/aws/aws-sdk-go-v2/aws/external` package being made a module at `github.com/aws/aws-sdk-go-v2/config`, the `LoadDefaultAWSConfig` function was renamed to `LoadDefaultConfig`. - -The `github.com/aws/aws-sdk-go-v2/aws/defaults` package has been removed. Its components have been migrated to the `github.com/aws/aws-sdk-go-v2/aws` package, and `github.com/aws/aws-sdk-go-v2/config` module. - - -#### Error Handling - -The `github.com/aws/aws-sdk-go-v2/aws/awserr` package was removed as a part of the SDK error handling refactor. The SDK now uses typed errors built around [Go v1.13](https://golang.org/doc/go1.13#error_wrapping)'s [errors.As](https://pkg.go.dev/errors#As) and [errors.Unwrap](https://pkg.go.dev/errors#Unwrap) features. All SDK error types that wrap other errors implement the `Unwrap` method. Generic v2 preview SDK errors created with `fmt.Errorf` use `%w` to wrap the underlying error. - -The SDK API clients now include generated public error types for errors modeled for an API. The SDK will automatically deserialize the error response from the API into the appropriate error type. Your application should use `errors.As` to check if the returned error matches one it is interested in. Your application can also use the generic interface [smithy.APIError](https://pkg.go.dev/github.com/awslabs/smithy-go/#APIError) to test if the API client's operation method returned an API error, but not check against a specific error. - -API client errors returned to the caller will use error wrapping to layer the error values. This allows underlying error types to be specific to their use case, and the SDK's more generic error types to wrap the underlying error. - -For example, if an [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) [Scan](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/dynamodb#Scan) operation call cannot find the `TableName` requested, the error returned will contain [dynamodb.ResourceNotFoundException](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/dynamodb/types#ResourceNotFoundException). The SDK will return this error value wrapped in a couple layers, with each layer adding additional contextual information such as [ResponseError](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws/transport/http#ResponseError) for AWS HTTP response error metadata , and [smithy.OperationError](https://pkg.go.dev/github.com/awslabs/smithy-go/#OperationError) for API operation call metadata. - -```go -result, err := client.Scan(context.TODO(), params) -if err != nil { - // To get a specific API error - var notFoundErr *types.ResourceNotFoundException - if errors.As(err, ¬FoundErr) { - log.Printf("scan failed because the table was not found, %v", - notFoundErr.ErrorMessage()) - } - - // To get any API error - var apiErr smithy.APIError - if errors.As(err, &apiErr) { - log.Printf("scan failed because of an API error, Code: %v, Message: %v", - apiErr.ErrorCode(), apiErr.ErrorMessage()) - } - - // To get the AWS response metadata, such as RequestID - var respErr *awshttp.ResponseError // Using import alias "awshttp" for package github.com/aws/aws-sdk-go-v2/aws/transport/http - if errors.As(err, &respErr) { - log.Printf("scan failed with HTTP status code %v, Request ID %v and error %v", - respErr.HTTPStatusCode(), respErr.ServiceRequestID(), respErr) - } - - return err -} -``` - -Logging an error value will include information from each wrapped error. For example, the following is a mock error logged for a Scan operation call that failed because the table was not found. - -> 2020/10/15 16:03:37 operation error DynamoDB: Scan, https response error StatusCode: 400, RequestID: ABCREQUESTID123, ResourceNotFoundException: Requested resource not found - - -#### Endpoints - -The `github.com/aws/aws-sdk-go-v2/aws/endpoints` has been removed from the SDK, along with all exported endpoint definitions and iteration behavior. Each generated API client now includes its own endpoint definition internally to the module. - -API clients can optionally be configured with a generic [aws.EndpointResolver](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#EndpointResolver) via the [aws.Config.EndpointResolver](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#Config.EndpointResolver). If the API client is not configured with a custom endpoint resolver it will defer to the endpoint resolver the client module was generated with. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/CODE_OF_CONDUCT.md b/vendor/github.com/aws/aws-sdk-go-v2/CODE_OF_CONDUCT.md deleted file mode 100644 index 3b64466870c9..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,4 +0,0 @@ -## Code of Conduct -This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). -For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact -opensource-codeofconduct@amazon.com with any additional questions or comments. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/CONTRIBUTING.md b/vendor/github.com/aws/aws-sdk-go-v2/CONTRIBUTING.md deleted file mode 100644 index c2fc3b8f5b0a..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/CONTRIBUTING.md +++ /dev/null @@ -1,178 +0,0 @@ -# Contributing to the AWS SDK for Go - -Thank you for your interest in contributing to the AWS SDK for Go! -We work hard to provide a high-quality and useful SDK, and we greatly value -feedback and contributions from our community. Whether it's a bug report, -new feature, correction, or additional documentation, we welcome your issues -and pull requests. Please read through this document before submitting any -[issues] or [pull requests][pr] to ensure we have all the necessary information to -effectively respond to your bug report or contribution. - -Jump To: - -* [Bug Reports](#bug-reports) -* [Feature Requests](#feature-requests) -* [Code Contributions](#code-contributions) - - -## How to contribute - -*Before you send us a pull request, please be sure that:* - -1. You're working from the latest source on the master branch. -2. You check existing open, and recently closed, pull requests to be sure - that someone else hasn't already addressed the problem. -3. You create an issue before working on a contribution that will take a - significant amount of your time. - -*Creating a Pull Request* - -1. Fork the repository. -2. In your fork, make your change in a branch that's based on this repo's master branch. -3. Commit the change to your fork, using a clear and descriptive commit message. -4. Create a pull request, answering any questions in the pull request form. - -For contributions that will take a significant amount of time, open a new -issue to pitch your idea before you get started. Explain the problem and -describe the content you want to see added to the documentation. Let us know -if you'll write it yourself or if you'd like us to help. We'll discuss your -proposal with you and let you know whether we're likely to accept it. - -## Bug Reports - -You can file bug reports against the SDK on the [GitHub issues][issues] page. - -If you are filing a report for a bug or regression in the SDK, it's extremely -helpful to provide as much information as possible when opening the original -issue. This helps us reproduce and investigate the possible bug without having -to wait for this extra information to be provided. Please read the following -guidelines prior to filing a bug report. - -1. Search through existing [issues][] to ensure that your specific issue has - not yet been reported. If it is a common issue, it is likely there is - already a bug report for your problem. - -2. Ensure that you have tested the latest version of the SDK. Although you - may have an issue against an older version of the SDK, we cannot provide - bug fixes for old versions. It's also possible that the bug may have been - fixed in the latest release. - -3. Provide as much information about your environment, SDK version, and - relevant dependencies as possible. For example, let us know what version - of Go you are using, which and version of the operating system, and the - the environment your code is running in. e.g Container. - -4. Provide a minimal test case that reproduces your issue or any error - information you related to your problem. We can provide feedback much - more quickly if we know what operations you are calling in the SDK. If - you cannot provide a full test case, provide as much code as you can - to help us diagnose the problem. Any relevant information should be provided - as well, like whether this is a persistent issue, or if it only occurs - some of the time. - -## Feature Requests - -Open an [issue][issues] with the following: - -* A short, descriptive title. Ideally, other community members should be able - to get a good idea of the feature just from reading the title. -* A detailed description of the the proposed feature. - * Why it should be added to the SDK. - * If possible, example code to illustrate how it should work. -* Use Markdown to make the request easier to read; -* If you intend to implement this feature, indicate that you'd like to the issue to be assigned to you. - -## Code Contributions - -We are always happy to receive code and documentation contributions to the SDK. -Please be aware of the following notes prior to opening a pull request: - -1. The SDK is released under the [Apache license][license]. Any code you submit - will be released under that license. For substantial contributions, we may - ask you to sign a [Contributor License Agreement (CLA)][cla]. - -2. If you would like to implement support for a significant feature that is not - yet available in the SDK, please talk to us beforehand to avoid any - duplication of effort. - -3. Wherever possible, pull requests should contain tests as appropriate. - Bugfixes should contain tests that exercise the corrected behavior (i.e., the - test should fail without the bugfix and pass with it), and new features - should be accompanied by tests exercising the feature. - -4. Pull requests that contain failing tests will not be merged until the test - failures are addressed. Pull requests that cause a significant drop in the - SDK's test coverage percentage are unlikely to be merged until tests have - been added. - -5. The JSON files under the SDK's `models` folder are sourced from outside the SDK. - Such as `models/apis/ec2/2016-11-15/api.json`. We will not accept pull requests - directly on these models. If you discover an issue with the models please - create a [GitHub issue][issues] describing the issue. - -### Testing - -To run the tests locally, running the `make unit` command will `go get` the -SDK's testing dependencies, and run vet, link and unit tests for the SDK. - -``` -make unit -``` - -Standard go testing functionality is supported as well. To test SDK code that -is tagged with `codegen` you'll need to set the build tag in the go test -command. The `make unit` command will do this automatically. - -``` -go test -tags codegen ./private/... -``` - -See the `Makefile` for additional testing tags that can be used in testing. - -To test on multiple platform the SDK includes several DockerFiles under the -`awstesting/sandbox` folder, and associated make recipes to to execute -unit testing within environments configured for specific Go versions. - -``` -make sandbox-test-go18 -``` - -To run all sandbox environments use the following make recipe - -``` -# Optionally update the Go tip that will be used during the batch testing -make update-aws-golang-tip - -# Run all SDK tests for supported Go versions in sandboxes -make sandbox-test -``` - -In addition the sandbox environment include make recipes for interactive modes -so you can run command within the Docker container and context of the SDK. - -``` -make sandbox-go18 -``` - -### Changelog Documents - -You can see all release changes in the `CHANGELOG.md` file at the root of the -repository. The release notes added to this file will contain service client -updates, and major SDK changes. When submitting a pull request please include an entry in `CHANGELOG_PENDING.md` under the appropriate changelog type so your changelog entry is included on the following release. - -#### Changelog Types - -* `SDK Features` - For major additive features, internal changes that have -outward impact, or updates to the SDK foundations. This will result in a minor -version change. -* `SDK Enhancements` - For minor additive features or incremental sized changes. -This will result in a patch version change. -* `SDK Bugs` - For minor changes that resolve an issue. This will result in a -patch version change. - -[issues]: https://github.com/aws/aws-sdk-go/issues -[pr]: https://github.com/aws/aws-sdk-go/pulls -[license]: http://aws.amazon.com/apache2.0/ -[cla]: http://en.wikipedia.org/wiki/Contributor_License_Agreement -[releasenotes]: https://github.com/aws/aws-sdk-go/releases - diff --git a/vendor/github.com/aws/aws-sdk-go-v2/DESIGN.md b/vendor/github.com/aws/aws-sdk-go-v2/DESIGN.md deleted file mode 100644 index 8490c7d67362..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/DESIGN.md +++ /dev/null @@ -1,15 +0,0 @@ -Open Discussions ---- -The following issues are currently open for community feedback. -All discourse must adhere to the [Code of Conduct] policy. - -* [Refactoring API Client Paginators](https://github.com/aws/aws-sdk-go-v2/issues/439) -* [Refactoring API Client Waiters](https://github.com/aws/aws-sdk-go-v2/issues/442) -* [Refactoring API Client Enums and Types to Discrete Packages](https://github.com/aws/aws-sdk-go-v2/issues/445) -* [SDK Modularization](https://github.com/aws/aws-sdk-go-v2/issues/444) - -Past Discussions ---- -The issues listed here are for documentation purposes, and is used to capture issues and their associated discussions. - -[Code of Conduct]: https://github.com/aws/aws-sdk-go-v2/blob/master/CODE_OF_CONDUCT.md diff --git a/vendor/github.com/aws/aws-sdk-go-v2/Makefile b/vendor/github.com/aws/aws-sdk-go-v2/Makefile deleted file mode 100644 index 4b761e771aea..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/Makefile +++ /dev/null @@ -1,519 +0,0 @@ -# Lint rules to ignore -LINTIGNORESINGLEFIGHT='internal/sync/singleflight/singleflight.go:.+error should be the last type' -LINT_IGNORE_S3MANAGER_INPUT='feature/s3/manager/upload.go:.+struct field SSEKMSKeyId should be SSEKMSKeyID' - -UNIT_TEST_TAGS= -BUILD_TAGS=-tags "example,codegen,integration,ec2env,perftest" - -SMITHY_GO_SRC ?= $(shell pwd)/../smithy-go - -SDK_MIN_GO_VERSION ?= 1.15 - -EACHMODULE_FAILFAST ?= true -EACHMODULE_FAILFAST_FLAG=-fail-fast=${EACHMODULE_FAILFAST} - -EACHMODULE_CONCURRENCY ?= 1 -EACHMODULE_CONCURRENCY_FLAG=-c ${EACHMODULE_CONCURRENCY} - -EACHMODULE_SKIP ?= -EACHMODULE_SKIP_FLAG=-skip="${EACHMODULE_SKIP}" - -EACHMODULE_FLAGS=${EACHMODULE_CONCURRENCY_FLAG} ${EACHMODULE_FAILFAST_FLAG} ${EACHMODULE_SKIP_FLAG} - -# SDK's Core and client packages that are compatible with Go 1.9+. -SDK_CORE_PKGS=./aws/... ./internal/... -SDK_CLIENT_PKGS=./service/... -SDK_COMPA_PKGS=${SDK_CORE_PKGS} ${SDK_CLIENT_PKGS} - -# SDK additional packages that are used for development of the SDK. -SDK_EXAMPLES_PKGS= -SDK_ALL_PKGS=${SDK_COMPA_PKGS} ${SDK_EXAMPLES_PKGS} - -RUN_NONE=-run NONE -RUN_INTEG=-run '^TestInteg_' - -CODEGEN_RESOURCES_PATH=$(shell pwd)/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen -CODEGEN_API_MODELS_PATH=$(shell pwd)/codegen/sdk-codegen/aws-models -ENDPOINTS_JSON=${CODEGEN_RESOURCES_PATH}/endpoints.json -ENDPOINT_PREFIX_JSON=${CODEGEN_RESOURCES_PATH}/endpoint-prefix.json - -LICENSE_FILE=$(shell pwd)/LICENSE.txt - -SMITHY_GO_VERSION ?= -PRE_RELEASE_VERSION ?= -RELEASE_MANIFEST_FILE ?= -RELEASE_CHGLOG_DESC_FILE ?= - -REPOTOOLS_VERSION ?= latest -REPOTOOLS_MODULE = github.com/awslabs/aws-go-multi-module-repository-tools -REPOTOOLS_CMD_ANNOTATE_STABLE_GEN = ${REPOTOOLS_MODULE}/cmd/annotatestablegen@${REPOTOOLS_VERSION} -REPOTOOLS_CMD_MAKE_RELATIVE = ${REPOTOOLS_MODULE}/cmd/makerelative@${REPOTOOLS_VERSION} -REPOTOOLS_CMD_CALCULATE_RELEASE = ${REPOTOOLS_MODULE}/cmd/calculaterelease@${REPOTOOLS_VERSION} -REPOTOOLS_CMD_UPDATE_REQUIRES = ${REPOTOOLS_MODULE}/cmd/updaterequires@${REPOTOOLS_VERSION} -REPOTOOLS_CMD_UPDATE_MODULE_METADATA = ${REPOTOOLS_MODULE}/cmd/updatemodulemeta@${REPOTOOLS_VERSION} -REPOTOOLS_CMD_GENERATE_CHANGELOG = ${REPOTOOLS_MODULE}/cmd/generatechangelog@${REPOTOOLS_VERSION} -REPOTOOLS_CMD_CHANGELOG = ${REPOTOOLS_MODULE}/cmd/changelog@${REPOTOOLS_VERSION} -REPOTOOLS_CMD_TAG_RELEASE = ${REPOTOOLS_MODULE}/cmd/tagrelease@${REPOTOOLS_VERSION} -REPOTOOLS_CMD_EDIT_MODULE_DEPENDENCY = ${REPOTOOLS_MODULE}/cmd/editmoduledependency@${REPOTOOLS_VERSION} - -REPOTOOLS_CALCULATE_RELEASE_VERBOSE ?= false -REPOTOOLS_CALCULATE_RELEASE_VERBOSE_FLAG=-v=${REPOTOOLS_CALCULATE_RELEASE_VERBOSE} - -REPOTOOLS_CALCULATE_RELEASE_ADDITIONAL_ARGS ?= - -ifneq ($(PRE_RELEASE_VERSION),) - REPOTOOLS_CALCULATE_RELEASE_ADDITIONAL_ARGS += -preview=${PRE_RELEASE_VERSION} -endif - -.PHONY: all -all: generate unit - -################### -# Code Generation # -################### -.PHONY: generate smithy-generate smithy-build smithy-build-% smithy-clean smithy-go-publish-local format \ -gen-config-asserts gen-repo-mod-replace gen-mod-replace-smithy gen-mod-dropreplace-smithy-% gen-aws-ptrs tidy-modules-% \ -add-module-license-files sync-models sync-endpoints-model sync-endpoints.json clone-v1-models gen-internal-codegen \ -sync-api-models copy-attributevalue-feature min-go-version-% update-requires smithy-annotate-stable \ -update-module-metadata download-modules-% - -generate: smithy-generate update-requires gen-repo-mod-replace update-module-metadata smithy-annotate-stable \ -gen-config-asserts gen-internal-codegen copy-attributevalue-feature gen-mod-dropreplace-smithy-. min-go-version-. \ -tidy-modules-. add-module-license-files gen-aws-ptrs format - -smithy-generate: - cd codegen && ./gradlew clean build -Plog-tests && ./gradlew clean - -smithy-build: - cd codegen && ./gradlew clean build -Plog-tests - -smithy-build-%: - @# smithy-build- command that uses the pattern to define build filter that - @# the smithy API model service id starts with. Strips off the - @# "smithy-build-". - @# - @# e.g. smithy-build-com.amazonaws.rds - @# e.g. smithy-build-com.amazonaws.rds#AmazonRDSv19 - cd codegen && \ - SMITHY_GO_BUILD_API="$(subst smithy-build-,,$@)" ./gradlew clean build -Plog-tests - -smithy-annotate-stable: - go run ${REPOTOOLS_CMD_ANNOTATE_STABLE_GEN} - -smithy-clean: - cd codegen && ./gradlew clean - -smithy-go-publish-local: - rm -rf /tmp/smithy-go-local - git clone https://github.com/aws/smithy-go /tmp/smithy-go-local - make -C /tmp/smithy-go-local smithy-clean smithy-publish-local - -format: - gofmt -w -s . - -gen-config-asserts: - @echo "Generating SDK config package implementor assertions" - cd config \ - && go mod tidy \ - && go generate - -gen-internal-codegen: - @echo "Generating internal/codegen" - cd internal/codegen \ - && go generate - -gen-repo-mod-replace: - @echo "Generating go.mod replace for repo modules" - go run ${REPOTOOLS_CMD_MAKE_RELATIVE} - -gen-mod-replace-smithy-%: - @# gen-mod-replace-smithy- command that uses the pattern to define build filter that - @# for modules to add replace to. Strips off the "gen-mod-replace-smithy-". - @# - @# SMITHY_GO_SRC environment variable is the path to add replace to - @# - @# e.g. gen-mod-replace-smithy-service_ssooidc - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst gen-mod-replace-smithy-,,$@)) ${EACHMODULE_FLAGS} \ - "go mod edit -replace github.com/aws/smithy-go=${SMITHY_GO_SRC}" - -gen-mod-dropreplace-smithy-%: - @# gen-mod-dropreplace-smithy- command that uses the pattern to define build filter that - @# for modules to add replace to. Strips off the "gen-mod-dropreplace-smithy-". - @# - @# e.g. gen-mod-dropreplace-smithy-service_ssooidc - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst gen-mod-dropreplace-smithy-,,$@)) ${EACHMODULE_FLAGS} \ - "go mod edit -dropreplace github.com/aws/smithy-go" - -gen-aws-ptrs: - cd aws && go generate - -tidy-modules-%: - @# tidy command that uses the pattern to define the root path that the - @# module testing will start from. Strips off the "tidy-modules-" and - @# replaces all "_" with "/". - @# - @# e.g. tidy-modules-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst tidy-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go mod tidy" - -download-modules-%: - @# download command that uses the pattern to define the root path that the - @# module testing will start from. Strips off the "download-modules-" and - @# replaces all "_" with "/". - @# - @# e.g. download-modules-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst download-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go mod download all" - -add-module-license-files: - cd internal/repotools/cmd/eachmodule && \ - go run . -skip-root \ - "cp $(LICENSE_FILE) ." - -sync-models: sync-endpoints-model sync-api-models - -sync-endpoints-model: sync-endpoints.json - -sync-endpoints.json: - [[ ! -z "${ENDPOINTS_MODEL}" ]] && cp ${ENDPOINTS_MODEL} ${ENDPOINTS_JSON} || echo "ENDPOINTS_MODEL not set, must not be empty" - -clone-v1-models: - rm -rf /tmp/aws-sdk-go-model-sync - git clone https://github.com/aws/aws-sdk-go.git --depth 1 /tmp/aws-sdk-go-model-sync - -sync-api-models: - cd internal/repotools/cmd/syncAPIModels && \ - go run . \ - -m ${API_MODELS} \ - -o ${CODEGEN_API_MODELS_PATH} - -copy-attributevalue-feature: - cd ./feature/dynamodbstreams/attributevalue && \ - find . -name "*.go" | grep -v "doc.go" | xargs -I % rm % && \ - find ../../dynamodb/attributevalue -name "*.go" | grep -v "doc.go" | xargs -I % cp % . && \ - ls *.go | grep -v "convert.go" | grep -v "doc.go" | \ - xargs -I % sed -i.bk -E 's:github.com/aws/aws-sdk-go-v2/(service|feature)/dynamodb:github.com/aws/aws-sdk-go-v2/\1/dynamodbstreams:g' % && \ - ls *.go | grep -v "convert.go" | grep -v "doc.go" | \ - xargs -I % sed -i.bk 's:DynamoDB:DynamoDBStreams:g' % && \ - ls *.go | grep -v "doc.go" | \ - xargs -I % sed -i.bk 's:dynamodb\.:dynamodbstreams.:g' % && \ - sed -i.bk 's:streams\.:ddbtypes.:g' "convert.go" && \ - sed -i.bk 's:ddb\.:streams.:g' "convert.go" && \ - sed -i.bk 's:ddbtypes\.:ddb.:g' "convert.go" &&\ - sed -i.bk 's:Streams::g' "convert.go" && \ - rm -rf ./*.bk && \ - go mod tidy && \ - gofmt -w -s . && \ - go test . - -min-go-version-%: - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst min-go-version-,,$@)) ${EACHMODULE_FLAGS} \ - "go mod edit -go=${SDK_MIN_GO_VERSION}" - -update-requires: - go run ${REPOTOOLS_CMD_UPDATE_REQUIRES} - -update-module-metadata: - go run ${REPOTOOLS_CMD_UPDATE_MODULE_METADATA} - -################ -# Unit Testing # -################ -.PHONY: unit unit-race unit-test unit-race-test unit-race-modules-% unit-modules-% build build-modules-% \ -go-build-modules-% test test-race-modules-% test-modules-% cachedep cachedep-modules-% api-diff-modules-% - -unit: lint unit-modules-. -unit-race: lint unit-race-modules-. - -unit-test: test-modules-. -unit-race-test: test-race-modules-. - -unit-race-modules-%: - @# unit command that uses the pattern to define the root path that the - @# module testing will start from. Strips off the "unit-race-modules-" and - @# replaces all "_" with "/". - @# - @# e.g. unit-race-modules-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst unit-race-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go vet ${BUILD_TAGS} --all ./..." \ - "go test ${BUILD_TAGS} ${RUN_NONE} ./..." \ - "go test -timeout=1m ${UNIT_TEST_TAGS} -race -cpu=4 ./..." - - -unit-modules-%: - @# unit command that uses the pattern to define the root path that the - @# module testing will start from. Strips off the "unit-modules-" and - @# replaces all "_" with "/". - @# - @# e.g. unit-modules-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst unit-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go vet ${BUILD_TAGS} --all ./..." \ - "go test ${BUILD_TAGS} ${RUN_NONE} ./..." \ - "go test -timeout=1m ${UNIT_TEST_TAGS} ./..." - -build: build-modules-. - -build-modules-%: - @# build command that uses the pattern to define the root path that the - @# module testing will start from. Strips off the "build-modules-" and - @# replaces all "_" with "/". - @# - @# e.g. build-modules-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst build-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go test ${BUILD_TAGS} ${RUN_NONE} ./..." - -go-build-modules-%: - @# build command that uses the pattern to define the root path that the - @# module testing will start from. Strips off the "build-modules-" and - @# replaces all "_" with "/". - @# - @# Validates that all modules in the repo have buildable Go files. - @# - @# e.g. go-build-modules-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst go-build-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go build ${BUILD_TAGS} ./..." - -test: test-modules-. - -test-race-modules-%: - @# Test command that uses the pattern to define the root path that the - @# module testing will start from. Strips off the "test-race-modules-" and - @# replaces all "_" with "/". - @# - @# e.g. test-race-modules-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst test-race-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go test -timeout=1m ${UNIT_TEST_TAGS} -race -cpu=4 ./..." - -test-modules-%: - @# Test command that uses the pattern to define the root path that the - @# module testing will start from. Strips off the "test-modules-" and - @# replaces all "_" with "/". - @# - @# e.g. test-modules-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst test-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go test -timeout=1m ${UNIT_TEST_TAGS} ./..." - -cachedep: cachedep-modules-. - -cachedep-modules-%: - @# build command that uses the pattern to define the root path that the - @# module caching will start from. Strips off the "cachedep-modules-" and - @# replaces all "_" with "/". - @# - @# e.g. cachedep-modules-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst cachedep-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go mod download" - -api-diff-modules-%: - @# Command that uses the pattern to define the root path that the - @# module testing will start from. Strips off the "api-diff-modules-" and - @# replaces all "_" with "/". - @# - @# Requires golang.org/x/exp/cmd/gorelease to be available in the GOPATH. - @# - @# e.g. api-diff-modules-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst api-diff-modules-,,$@)) \ - -fail-fast=true \ - -c 1 \ - -skip="internal/repotools" \ - "$$(go env GOPATH)/bin/gorelease" - -############## -# CI Testing # -############## -.PHONY: ci-test ci-test-no-generate ci-test-generate-validate - -ci-test: generate unit-race ci-test-generate-validate -ci-test-no-generate: unit-race - -ci-test-generate-validate: - @echo "CI test validate no generated code changes" - git update-index --assume-unchanged go.mod go.sum - git add . -A - gitstatus=`git diff --cached --ignore-space-change`; \ - echo "$$gitstatus"; \ - if [ "$$gitstatus" != "" ] && [ "$$gitstatus" != "skipping validation" ]; then echo "$$gitstatus"; exit 1; fi - git update-index --no-assume-unchanged go.mod go.sum - -ci-lint: ci-lint-. - -ci-lint-%: - @# Run golangci-lint command that uses the pattern to define the root path that the - @# module check will start from. Strips off the "ci-lint-" and - @# replaces all "_" with "/". - @# - @# e.g. ci-lint-internal_protocoltest - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst ci-lint-,,$@)) \ - -fail-fast=false \ - -c 1 \ - -skip="internal/repotools" \ - "golangci-lint run" - -ci-lint-install: - @# Installs golangci-lint at GoPATH. - @# This should be used to run golangci-lint locally. - @# - go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest - -####################### -# Integration Testing # -####################### -.PHONY: integration integ-modules-% cleanup-integ-buckets - -integration: integ-modules-service - -integ-modules-%: - @# integration command that uses the pattern to define the root path that - @# the module testing will start from. Strips off the "integ-modules-" and - @# replaces all "_" with "/". - @# - @# e.g. test-modules-service_dynamodb - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst integ-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go test -timeout=10m -tags "integration" -v ${RUN_INTEG} -count 1 ./..." - -cleanup-integ-buckets: - @echo "Cleaning up SDK integration resources" - go run -tags "integration" ./internal/awstesting/cmd/bucket_cleanup/main.go "aws-sdk-go-integration" - -############## -# Benchmarks # -############## -.PHONY: bench bench-modules-% - -bench: bench-modules-. - -bench-modules-%: - @# benchmark command that uses the pattern to define the root path that - @# the module testing will start from. Strips off the "bench-modules-" and - @# replaces all "_" with "/". - @# - @# e.g. bench-modules-service_dynamodb - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst bench-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go test -timeout=10m -bench . --benchmem ${BUILD_TAGS} ${RUN_NONE} ./..." - - -##################### -# Release Process # -##################### -.PHONY: preview-release pre-release-validation release - -ls-changes: - go run ${REPOTOOLS_CMD_CHANGELOG} ls - -preview-release: - go run ${REPOTOOLS_CMD_CALCULATE_RELEASE} ${REPOTOOLS_CALCULATE_RELEASE_VERBOSE_FLAG} ${REPOTOOLS_CALCULATE_RELEASE_ADDITIONAL_ARGS} - -pre-release-validation: - @if [[ -z "${RELEASE_MANIFEST_FILE}" ]]; then \ - echo "RELEASE_MANIFEST_FILE is required to specify the file to write the release manifest" && false; \ - fi - @if [[ -z "${RELEASE_CHGLOG_DESC_FILE}" ]]; then \ - echo "RELEASE_CHGLOG_DESC_FILE is required to specify the file to write the release notes" && false; \ - fi - -release: pre-release-validation - go run ${REPOTOOLS_CMD_CALCULATE_RELEASE} -o ${RELEASE_MANIFEST_FILE} ${REPOTOOLS_CALCULATE_RELEASE_VERBOSE_FLAG} ${REPOTOOLS_CALCULATE_RELEASE_ADDITIONAL_ARGS} - go run ${REPOTOOLS_CMD_UPDATE_REQUIRES} -release ${RELEASE_MANIFEST_FILE} - go run ${REPOTOOLS_CMD_UPDATE_MODULE_METADATA} -release ${RELEASE_MANIFEST_FILE} - go run ${REPOTOOLS_CMD_GENERATE_CHANGELOG} -release ${RELEASE_MANIFEST_FILE} -o ${RELEASE_CHGLOG_DESC_FILE} - go run ${REPOTOOLS_CMD_CHANGELOG} rm -all - go run ${REPOTOOLS_CMD_TAG_RELEASE} -release ${RELEASE_MANIFEST_FILE} - -############## -# Repo Tools # -############## -.PHONY: install-repotools - -install-repotools: - go install ${REPOTOOLS_MODULE}/cmd/changelog@${REPOTOOLS_VERSION} - -set-smithy-go-version: - @if [[ -z "${SMITHY_GO_VERSION}" ]]; then \ - echo "SMITHY_GO_VERSION is required to update SDK's smithy-go module dependency version" && false; \ - fi - go run ${REPOTOOLS_CMD_EDIT_MODULE_DEPENDENCY} -s "github.com/aws/smithy-go" -v "${SMITHY_GO_VERSION}" - -################## -# Linting/Verify # -################## -.PHONY: verify lint vet vet-modules-% sdkv1check - -verify: lint vet sdkv1check - -lint: - @echo "go lint SDK and vendor packages" - @lint=`golint ./...`; \ - dolint=`echo "$$lint" | grep -E -v \ - -e ${LINT_IGNORE_S3MANAGER_INPUT} \ - -e ${LINTIGNORESINGLEFIGHT}`; \ - echo "$$dolint"; \ - if [ "$$dolint" != "" ]; then exit 1; fi - -vet: vet-modules-. - -vet-modules-%: - cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst vet-modules-,,$@)) ${EACHMODULE_FLAGS} \ - "go vet ${BUILD_TAGS} --all ./..." - -sdkv1check: - @echo "Checking for usage of AWS SDK for Go v1" - @sdkv1usage=`go list -test -f '''{{ if not .Standard }}{{ range $$_, $$name := .Imports }} * {{ $$.ImportPath }} -> {{ $$name }}{{ print "\n" }}{{ end }}{{ range $$_, $$name := .TestImports }} *: {{ $$.ImportPath }} -> {{ $$name }}{{ print "\n" }}{{ end }}{{ end}}''' ./... | sort -u | grep '''/aws-sdk-go/'''`; \ - echo "$$sdkv1usage"; \ - if [ "$$sdkv1usage" != "" ]; then exit 1; fi - -list-deps: list-deps-. - -list-deps-%: - @# command that uses the pattern to define the root path that the - @# module testing will start from. Strips off the "list-deps-" and - @# replaces all "_" with "/". - @# - @# Trim output to only include stdout for list of dependencies only. - @# make list-deps 2>&- - @# - @# e.g. list-deps-internal_protocoltest - @cd ./internal/repotools/cmd/eachmodule \ - && go run . -p $(subst _,/,$(subst list-deps-,,$@)) ${EACHMODULE_FLAGS} \ - "go list -m all | grep -v 'github.com/aws/aws-sdk-go-v2'" | sort -u - -################### -# Sandbox Testing # -################### -.PHONY: sandbox-tests sandbox-build-% sandbox-run-% sandbox-test-% update-aws-golang-tip - -sandbox-tests: sandbox-test-go1.15 sandbox-test-go1.16 sandbox-test-go1.17 sandbox-test-gotip - -sandbox-build-%: - @# sandbox-build-go1.17 - @# sandbox-build-gotip - docker build \ - -f ./internal/awstesting/sandbox/Dockerfile.test.$(subst sandbox-build-,,$@) \ - -t "aws-sdk-go-$(subst sandbox-build-,,$@)" . -sandbox-run-%: sandbox-build-% - @# sandbox-run-go1.17 - @# sandbox-run-gotip - docker run -i -t "aws-sdk-go-$(subst sandbox-run-,,$@)" bash -sandbox-test-%: sandbox-build-% - @# sandbox-test-go1.17 - @# sandbox-test-gotip - docker run -t "aws-sdk-go-$(subst sandbox-test-,,$@)" - -update-aws-golang-tip: - docker build --no-cache=true -f ./internal/awstesting/sandbox/Dockerfile.golang-tip -t "aws-golang:tip" . diff --git a/vendor/github.com/aws/aws-sdk-go-v2/NOTICE.txt b/vendor/github.com/aws/aws-sdk-go-v2/NOTICE.txt index 5f14d1162ed4..899129ecc465 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/NOTICE.txt +++ b/vendor/github.com/aws/aws-sdk-go-v2/NOTICE.txt @@ -1,3 +1,3 @@ AWS SDK for Go -Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. +Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. Copyright 2014-2015 Stripe, Inc. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/README.md b/vendor/github.com/aws/aws-sdk-go-v2/README.md deleted file mode 100644 index cda17f77d615..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/README.md +++ /dev/null @@ -1,157 +0,0 @@ -# AWS SDK for Go v2 - -[![Go Build status](https://github.com/aws/aws-sdk-go-v2/actions/workflows/go.yml/badge.svg?branch=main)](https://github.com/aws/aws-sdk-go-v2/actions/workflows/go.yml)[![Codegen Build status](https://github.com/aws/aws-sdk-go-v2/actions/workflows/codegen.yml/badge.svg?branch=main)](https://github.com/aws/aws-sdk-go-v2/actions/workflows/codegen.yml) [![SDK Documentation](https://img.shields.io/badge/SDK-Documentation-blue)](https://aws.github.io/aws-sdk-go-v2/docs/) [![Migration Guide](https://img.shields.io/badge/Migration-Guide-blue)](https://aws.github.io/aws-sdk-go-v2/docs/migrating/) [![API Reference](https://img.shields.io/badge/api-reference-blue.svg)](https://pkg.go.dev/mod/github.com/aws/aws-sdk-go-v2) [![Apache V2 License](https://img.shields.io/badge/license-Apache%20V2-blue.svg)](https://github.com/aws/aws-sdk-go/blob/master/LICENSE.txt) - - -`aws-sdk-go-v2` is the v2 AWS SDK for the Go programming language. - -The v2 SDK requires a minimum version of `Go 1.15`. - -Checkout out the [release notes](https://github.com/aws/aws-sdk-go-v2/blob/main/CHANGELOG.md) for information about the latest bug -fixes, updates, and features added to the SDK. - -Jump To: -* [Getting Started](#getting-started) -* [Getting Help](#getting-help) -* [Contributing](#feedback-and-contributing) -* [More Resources](#resources) - -## Maintenance and support for SDK major versions - -For information about maintenance and support for SDK major versions and their underlying dependencies, see the -following in the AWS SDKs and Tools Shared Configuration and Credentials Reference Guide: - -* [AWS SDKs and Tools Maintenance Policy](https://docs.aws.amazon.com/credref/latest/refdocs/maint-policy.html) -* [AWS SDKs and Tools Version Support Matrix](https://docs.aws.amazon.com/credref/latest/refdocs/version-support-matrix.html) - -## Getting started -To get started working with the SDK setup your project for Go modules, and retrieve the SDK dependencies with `go get`. -This example shows how you can use the v2 SDK to make an API request using the SDK's [Amazon DynamoDB] client. - -###### Initialize Project -```sh -$ mkdir ~/helloaws -$ cd ~/helloaws -$ go mod init helloaws -``` -###### Add SDK Dependencies -```sh -$ go get github.com/aws/aws-sdk-go-v2/aws -$ go get github.com/aws/aws-sdk-go-v2/config -$ go get github.com/aws/aws-sdk-go-v2/service/dynamodb -``` - -###### Write Code -In your preferred editor add the following content to `main.go` - -```go -package main - -import ( - "context" - "fmt" - "log" - - "github.com/aws/aws-sdk-go-v2/aws" - "github.com/aws/aws-sdk-go-v2/config" - "github.com/aws/aws-sdk-go-v2/service/dynamodb" -) - -func main() { - // Using the SDK's default configuration, loading additional config - // and credentials values from the environment variables, shared - // credentials, and shared configuration files - cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2")) - if err != nil { - log.Fatalf("unable to load SDK config, %v", err) - } - - // Using the Config value, create the DynamoDB client - svc := dynamodb.NewFromConfig(cfg) - - // Build the request with its input parameters - resp, err := svc.ListTables(context.TODO(), &dynamodb.ListTablesInput{ - Limit: aws.Int32(5), - }) - if err != nil { - log.Fatalf("failed to list tables, %v", err) - } - - fmt.Println("Tables:") - for _, tableName := range resp.TableNames { - fmt.Println(tableName) - } -} -``` - -###### Compile and Execute -```sh -$ go run . -Table: -tableOne -tableTwo -``` - -## Getting Help - -Please use these community resources for getting help. We use the GitHub issues -for tracking bugs and feature requests. - -* Ask a question on [StackOverflow](http://stackoverflow.com/) and tag it with the [`aws-sdk-go`](http://stackoverflow.com/questions/tagged/aws-sdk-go) tag. -* Open a support ticket with [AWS Support](http://docs.aws.amazon.com/awssupport/latest/user/getting-started.html). -* If you think you may have found a bug, please open an [issue](https://github.com/aws/aws-sdk-go-v2/issues/new/choose). - -This SDK implements AWS service APIs. For general issues regarding the AWS services and their limitations, you may also take a look at the [Amazon Web Services Discussion Forums](https://forums.aws.amazon.com/). - -### Opening Issues - -If you encounter a bug with the AWS SDK for Go we would like to hear about it. -Search the [existing issues][Issues] and see -if others are also experiencing the issue before opening a new issue. Please -include the version of AWS SDK for Go, Go language, and OS you’re using. Please -also include reproduction case when appropriate. - -The GitHub issues are intended for bug reports and feature requests. For help -and questions with using AWS SDK for Go please make use of the resources listed -in the [Getting Help](#getting-help) section. -Keeping the list of open issues lean will help us respond in a timely manner. - -## Feedback and contributing - -The v2 SDK will use GitHub [Issues] to track feature requests and issues with the SDK. In addition, we'll use GitHub [Projects] to track large tasks spanning multiple pull requests, such as refactoring the SDK's internal request lifecycle. You can provide feedback to us in several ways. - -**GitHub issues**. To provide feedback or report bugs, file GitHub [Issues] on the SDK. This is the preferred mechanism to give feedback so that other users can engage in the conversation, +1 issues, etc. Issues you open will be evaluated, and included in our roadmap for the GA launch. - -**Contributing**. You can open pull requests for fixes or additions to the AWS SDK for Go 2.0. All pull requests must be submitted under the Apache 2.0 license and will be reviewed by an SDK team member before being merged in. Accompanying unit tests, where possible, are appreciated. - -## Resources - -[SDK Developer Guide](https://aws.github.io/aws-sdk-go-v2/docs/) - Use this document to learn how to get started and -use the AWS SDK for Go V2. - -[SDK Migration Guide](https://aws.github.io/aws-sdk-go-v2/docs/migrating/) - Use this document to learn how to migrate to V2 from the AWS SDK for Go. - -[SDK API Reference Documentation](https://pkg.go.dev/mod/github.com/aws/aws-sdk-go-v2) - Use this -document to look up all API operation input and output parameters for AWS -services supported by the SDK. The API reference also includes documentation of -the SDK, and examples how to using the SDK, service client API operations, and -API operation require parameters. - -[Service Documentation](https://aws.amazon.com/documentation/) - Use this -documentation to learn how to interface with AWS services. These guides are -great for getting started with a service, or when looking for more -information about a service. While this document is not required for coding, -services may supply helpful samples to look out for. - -[Forum](https://forums.aws.amazon.com/forum.jspa?forumID=293) - Ask questions, get help, and give feedback - -[Issues] - Report issues, submit pull requests, and get involved - (see [Apache 2.0 License][license]) - -[Dep]: https://github.com/golang/dep -[Issues]: https://github.com/aws/aws-sdk-go-v2/issues -[Projects]: https://github.com/aws/aws-sdk-go-v2/projects -[CHANGELOG]: https://github.com/aws/aws-sdk-go-v2/blob/master/CHANGELOG.md -[Amazon DynamoDB]: https://aws.amazon.com/dynamodb/ -[design]: https://github.com/aws/aws-sdk-go-v2/blob/master/DESIGN.md -[license]: http://aws.amazon.com/apache2.0/ diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/accountid_endpoint_mode.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/accountid_endpoint_mode.go new file mode 100644 index 000000000000..6504a21864cb --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/accountid_endpoint_mode.go @@ -0,0 +1,18 @@ +package aws + +// AccountIDEndpointMode controls how a resolved AWS account ID is handled for endpoint routing. +type AccountIDEndpointMode string + +const ( + // AccountIDEndpointModeUnset indicates the AWS account ID will not be used for endpoint routing + AccountIDEndpointModeUnset AccountIDEndpointMode = "" + + // AccountIDEndpointModePreferred indicates the AWS account ID will be used for endpoint routing if present + AccountIDEndpointModePreferred = "preferred" + + // AccountIDEndpointModeRequired indicates an error will be returned if the AWS account ID is not resolved from identity + AccountIDEndpointModeRequired = "required" + + // AccountIDEndpointModeDisabled indicates the AWS account ID will be ignored during endpoint routing + AccountIDEndpointModeDisabled = "disabled" +) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go index 20153586bae3..16000d792790 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go @@ -68,6 +68,12 @@ type Config struct { // // See the `aws.EndpointResolverWithOptions` documentation for additional // usage information. + // + // Deprecated: with the release of endpoint resolution v2 in API clients, + // EndpointResolver and EndpointResolverWithOptions are deprecated. + // Providing a value for this field will likely prevent you from using + // newer endpoint-related service features. See API client options + // EndpointResolverV2 and BaseEndpoint. EndpointResolverWithOptions EndpointResolverWithOptions // RetryMaxAttempts specifies the maximum number attempts an API client @@ -132,6 +138,33 @@ type Config struct { // `config.LoadDefaultConfig`. You should not populate this structure // programmatically, or rely on the values here within your applications. RuntimeEnvironment RuntimeEnvironment + + // AppId is an optional application specific identifier that can be set. + // When set it will be appended to the User-Agent header of every request + // in the form of App/{AppId}. This variable is sourced from environment + // variable AWS_SDK_UA_APP_ID or the shared config profile attribute sdk_ua_app_id. + // See https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html for + // more information on environment variables and shared config settings. + AppID string + + // BaseEndpoint is an intermediary transfer location to a service specific + // BaseEndpoint on a service's Options. + BaseEndpoint *string + + // DisableRequestCompression toggles if an operation request could be + // compressed or not. Will be set to false by default. This variable is sourced from + // environment variable AWS_DISABLE_REQUEST_COMPRESSION or the shared config profile attribute + // disable_request_compression + DisableRequestCompression bool + + // RequestMinCompressSizeBytes sets the inclusive min bytes of a request body that could be + // compressed. Will be set to 10240 by default and must be within 0 and 10485760 bytes inclusively. + // This variable is sourced from environment variable AWS_REQUEST_MIN_COMPRESSION_SIZE_BYTES or + // the shared config profile attribute request_min_compression_size_bytes + RequestMinCompressSizeBytes int64 + + // Controls how a resolved AWS account ID is handled for endpoint routing. + AccountIDEndpointMode AccountIDEndpointMode } // NewConfig returns a new Config pointer that can be chained with builder @@ -140,8 +173,7 @@ func NewConfig() *Config { return &Config{} } -// Copy will return a shallow copy of the Config object. If any additional -// configurations are provided they will be merged into the new config returned. +// Copy will return a shallow copy of the Config object. func (c Config) Copy() Config { cp := c return cp diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/credential_cache.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/credential_cache.go index 9e9525231c58..781ac0ae2c01 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/credential_cache.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/credential_cache.go @@ -178,6 +178,12 @@ func (p *CredentialsCache) Invalidate() { p.creds.Store((*Credentials)(nil)) } +// IsCredentialsProvider returns whether credential provider wrapped by CredentialsCache +// matches the target provider type. +func (p *CredentialsCache) IsCredentialsProvider(target CredentialsProvider) bool { + return IsCredentialsProvider(p.provider, target) +} + // HandleFailRefreshCredentialsCacheStrategy is an interface for // CredentialsCache to allow CredentialsProvider how failed to refresh // credentials is handled. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/credentials.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/credentials.go index 24c8ce4a73f2..98ba77056427 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/credentials.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/credentials.go @@ -3,6 +3,7 @@ package aws import ( "context" "fmt" + "reflect" "time" "github.com/aws/aws-sdk-go-v2/internal/sdk" @@ -89,6 +90,9 @@ type Credentials struct { // The time the credentials will expire at. Should be ignored if CanExpire // is false. Expires time.Time + + // The ID of the account for the credentials. + AccountID string } // Expired returns if the credentials have expired. @@ -129,3 +133,41 @@ type CredentialsProviderFunc func(context.Context) (Credentials, error) func (fn CredentialsProviderFunc) Retrieve(ctx context.Context) (Credentials, error) { return fn(ctx) } + +type isCredentialsProvider interface { + IsCredentialsProvider(CredentialsProvider) bool +} + +// IsCredentialsProvider returns whether the target CredentialProvider is the same type as provider when comparing the +// implementation type. +// +// If provider has a method IsCredentialsProvider(CredentialsProvider) bool it will be responsible for validating +// whether target matches the credential provider type. +// +// When comparing the CredentialProvider implementations provider and target for equality, the following rules are used: +// +// If provider is of type T and target is of type V, true if type *T is the same as type *V, otherwise false +// If provider is of type *T and target is of type V, true if type *T is the same as type *V, otherwise false +// If provider is of type T and target is of type *V, true if type *T is the same as type *V, otherwise false +// If provider is of type *T and target is of type *V,true if type *T is the same as type *V, otherwise false +func IsCredentialsProvider(provider, target CredentialsProvider) bool { + if target == nil || provider == nil { + return provider == target + } + + if x, ok := provider.(isCredentialsProvider); ok { + return x.IsCredentialsProvider(target) + } + + targetType := reflect.TypeOf(target) + if targetType.Kind() != reflect.Ptr { + targetType = reflect.PtrTo(targetType) + } + + providerType := reflect.TypeOf(provider) + if providerType.Kind() != reflect.Ptr { + providerType = reflect.PtrTo(providerType) + } + + return targetType.AssignableTo(providerType) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/endpoints.go index aa10a9b40f0d..99edbf3ee634 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/endpoints.go @@ -70,6 +70,10 @@ func GetUseFIPSEndpoint(options ...interface{}) (value FIPSEndpointState, found // The SDK will automatically resolve these endpoints per API client using an // internal endpoint resolvers. If you'd like to provide custom endpoint // resolving behavior you can implement the EndpointResolver interface. +// +// Deprecated: This structure was used with the global [EndpointResolver] +// interface, which has been deprecated in favor of service-specific endpoint +// resolution. See the deprecation docs on that interface for more information. type Endpoint struct { // The base URL endpoint the SDK API clients will use to make API calls to. // The SDK will suffix URI path and query elements to this endpoint. @@ -124,6 +128,8 @@ type Endpoint struct { } // EndpointSource is the endpoint source type. +// +// Deprecated: The global [Endpoint] structure is deprecated. type EndpointSource int const ( @@ -161,19 +167,25 @@ func (e *EndpointNotFoundError) Unwrap() error { // API clients will fallback to attempting to resolve the endpoint using its // internal default endpoint resolver. // -// Deprecated: See EndpointResolverWithOptions +// Deprecated: The global endpoint resolution interface is deprecated. The API +// for endpoint resolution is now unique to each service and is set via the +// EndpointResolverV2 field on service client options. Setting a value for +// EndpointResolver on aws.Config or service client options will prevent you +// from using any endpoint-related service features released after the +// introduction of EndpointResolverV2. You may also encounter broken or +// unexpected behavior when using the old global interface with services that +// use many endpoint-related customizations such as S3. type EndpointResolver interface { ResolveEndpoint(service, region string) (Endpoint, error) } // EndpointResolverFunc wraps a function to satisfy the EndpointResolver interface. // -// Deprecated: See EndpointResolverWithOptionsFunc +// Deprecated: The global endpoint resolution interface is deprecated. See +// deprecation docs on [EndpointResolver]. type EndpointResolverFunc func(service, region string) (Endpoint, error) // ResolveEndpoint calls the wrapped function and returns the results. -// -// Deprecated: See EndpointResolverWithOptions.ResolveEndpoint func (e EndpointResolverFunc) ResolveEndpoint(service, region string) (Endpoint, error) { return e(service, region) } @@ -184,11 +196,17 @@ func (e EndpointResolverFunc) ResolveEndpoint(service, region string) (Endpoint, // available. If the EndpointResolverWithOptions returns an EndpointNotFoundError error, // API clients will fallback to attempting to resolve the endpoint using its // internal default endpoint resolver. +// +// Deprecated: The global endpoint resolution interface is deprecated. See +// deprecation docs on [EndpointResolver]. type EndpointResolverWithOptions interface { ResolveEndpoint(service, region string, options ...interface{}) (Endpoint, error) } // EndpointResolverWithOptionsFunc wraps a function to satisfy the EndpointResolverWithOptions interface. +// +// Deprecated: The global endpoint resolution interface is deprecated. See +// deprecation docs on [EndpointResolver]. type EndpointResolverWithOptionsFunc func(service, region string, options ...interface{}) (Endpoint, error) // ResolveEndpoint calls the wrapped function and returns the results. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go index 5ca68262b80b..4321d2f8aabb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go @@ -3,4 +3,4 @@ package aws // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.16.16" +const goModuleVersion = "1.31.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/metadata.go index e6e87ac77764..d66f0960aa50 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/metadata.go @@ -2,6 +2,7 @@ package middleware import ( "context" + "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/smithy-go/middleware" @@ -42,12 +43,13 @@ func (s RegisterServiceMetadata) HandleInitialize( // service metadata keys for storing and lookup of runtime stack information. type ( - serviceIDKey struct{} - signingNameKey struct{} - signingRegionKey struct{} - regionKey struct{} - operationNameKey struct{} - partitionIDKey struct{} + serviceIDKey struct{} + signingNameKey struct{} + signingRegionKey struct{} + regionKey struct{} + operationNameKey struct{} + partitionIDKey struct{} + requiresLegacyEndpointsKey struct{} ) // GetServiceID retrieves the service id from the context. @@ -63,6 +65,9 @@ func GetServiceID(ctx context.Context) (v string) { // // Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues // to clear all stack values. +// +// Deprecated: This value is unstable. The resolved signing name is available +// in the signer properties object passed to the signer. func GetSigningName(ctx context.Context) (v string) { v, _ = middleware.GetStackValue(ctx, signingNameKey{}).(string) return v @@ -72,6 +77,9 @@ func GetSigningName(ctx context.Context) (v string) { // // Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues // to clear all stack values. +// +// Deprecated: This value is unstable. The resolved signing region is available +// in the signer properties object passed to the signer. func GetSigningRegion(ctx context.Context) (v string) { v, _ = middleware.GetStackValue(ctx, signingRegionKey{}).(string) return v @@ -104,10 +112,32 @@ func GetPartitionID(ctx context.Context) string { return v } -// SetSigningName set or modifies the signing name on the context. +// GetRequiresLegacyEndpoints the flag used to indicate if legacy endpoint +// customizations need to be executed. +// +// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues +// to clear all stack values. +func GetRequiresLegacyEndpoints(ctx context.Context) bool { + v, _ := middleware.GetStackValue(ctx, requiresLegacyEndpointsKey{}).(bool) + return v +} + +// SetRequiresLegacyEndpoints set or modifies the flag indicated that +// legacy endpoint customizations are needed. +// +// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues +// to clear all stack values. +func SetRequiresLegacyEndpoints(ctx context.Context, value bool) context.Context { + return middleware.WithStackValue(ctx, requiresLegacyEndpointsKey{}, value) +} + +// SetSigningName set or modifies the sigv4 or sigv4a signing name on the context. // // Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues // to clear all stack values. +// +// Deprecated: This value is unstable. Use WithSigV4SigningName client option +// funcs instead. func SetSigningName(ctx context.Context, value string) context.Context { return middleware.WithStackValue(ctx, signingNameKey{}, value) } @@ -116,6 +146,9 @@ func SetSigningName(ctx context.Context, value string) context.Context { // // Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues // to clear all stack values. +// +// Deprecated: This value is unstable. Use WithSigV4SigningRegion client option +// funcs instead. func SetSigningRegion(ctx context.Context, value string) context.Context { return middleware.WithStackValue(ctx, signingRegionKey{}, value) } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/middleware.go index 9bd0dfb15086..6d5f0079c2f1 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/middleware.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/middleware.go @@ -139,16 +139,16 @@ func AddRecordResponseTiming(stack *middleware.Stack) error { // raw response within the response metadata. type rawResponseKey struct{} -// addRawResponse middleware adds raw response on to the metadata -type addRawResponse struct{} +// AddRawResponse middleware adds raw response on to the metadata +type AddRawResponse struct{} // ID the identifier for the ClientRequestID -func (m *addRawResponse) ID() string { +func (m *AddRawResponse) ID() string { return "AddRawResponseToMetadata" } // HandleDeserialize adds raw response on the middleware metadata -func (m addRawResponse) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m AddRawResponse) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -159,7 +159,7 @@ func (m addRawResponse) HandleDeserialize(ctx context.Context, in middleware.Des // AddRawResponseToMetadata adds middleware to the middleware stack that // store raw response on to the metadata. func AddRawResponseToMetadata(stack *middleware.Stack) error { - return stack.Deserialize.Add(&addRawResponse{}, middleware.Before) + return stack.Deserialize.Add(&AddRawResponse{}, middleware.Before) } // GetRawResponse returns raw response set on metadata diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.go new file mode 100644 index 000000000000..19d6107c4615 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.go @@ -0,0 +1,320 @@ +// Package metrics implements metrics gathering for SDK development purposes. +// +// This package is designated as private and is intended for use only by the +// AWS client runtime. The exported API therein is not considered stable and +// is subject to breaking changes without notice. +package metrics + +import ( + "context" + "encoding/json" + "fmt" + "sync" + "time" + + "github.com/aws/smithy-go/middleware" +) + +const ( + // ServiceIDKey is the key for the service ID metric. + ServiceIDKey = "ServiceId" + // OperationNameKey is the key for the operation name metric. + OperationNameKey = "OperationName" + // ClientRequestIDKey is the key for the client request ID metric. + ClientRequestIDKey = "ClientRequestId" + // APICallDurationKey is the key for the API call duration metric. + APICallDurationKey = "ApiCallDuration" + // APICallSuccessfulKey is the key for the API call successful metric. + APICallSuccessfulKey = "ApiCallSuccessful" + // MarshallingDurationKey is the key for the marshalling duration metric. + MarshallingDurationKey = "MarshallingDuration" + // InThroughputKey is the key for the input throughput metric. + InThroughputKey = "InThroughput" + // OutThroughputKey is the key for the output throughput metric. + OutThroughputKey = "OutThroughput" + // RetryCountKey is the key for the retry count metric. + RetryCountKey = "RetryCount" + // HTTPStatusCodeKey is the key for the HTTP status code metric. + HTTPStatusCodeKey = "HttpStatusCode" + // AWSExtendedRequestIDKey is the key for the AWS extended request ID metric. + AWSExtendedRequestIDKey = "AwsExtendedRequestId" + // AWSRequestIDKey is the key for the AWS request ID metric. + AWSRequestIDKey = "AwsRequestId" + // BackoffDelayDurationKey is the key for the backoff delay duration metric. + BackoffDelayDurationKey = "BackoffDelayDuration" + // StreamThroughputKey is the key for the stream throughput metric. + StreamThroughputKey = "Throughput" + // ConcurrencyAcquireDurationKey is the key for the concurrency acquire duration metric. + ConcurrencyAcquireDurationKey = "ConcurrencyAcquireDuration" + // PendingConcurrencyAcquiresKey is the key for the pending concurrency acquires metric. + PendingConcurrencyAcquiresKey = "PendingConcurrencyAcquires" + // SigningDurationKey is the key for the signing duration metric. + SigningDurationKey = "SigningDuration" + // UnmarshallingDurationKey is the key for the unmarshalling duration metric. + UnmarshallingDurationKey = "UnmarshallingDuration" + // TimeToFirstByteKey is the key for the time to first byte metric. + TimeToFirstByteKey = "TimeToFirstByte" + // ServiceCallDurationKey is the key for the service call duration metric. + ServiceCallDurationKey = "ServiceCallDuration" + // EndpointResolutionDurationKey is the key for the endpoint resolution duration metric. + EndpointResolutionDurationKey = "EndpointResolutionDuration" + // AttemptNumberKey is the key for the attempt number metric. + AttemptNumberKey = "AttemptNumber" + // MaxConcurrencyKey is the key for the max concurrency metric. + MaxConcurrencyKey = "MaxConcurrency" + // AvailableConcurrencyKey is the key for the available concurrency metric. + AvailableConcurrencyKey = "AvailableConcurrency" +) + +// MetricPublisher provides the interface to provide custom MetricPublishers. +// PostRequestMetrics will be invoked by the MetricCollection middleware to post request. +// PostStreamMetrics will be invoked by ReadCloserWithMetrics to post stream metrics. +type MetricPublisher interface { + PostRequestMetrics(*MetricData) error + PostStreamMetrics(*MetricData) error +} + +// Serializer provides the interface to provide custom Serializers. +// Serialize will transform any input object in its corresponding string representation. +type Serializer interface { + Serialize(obj interface{}) (string, error) +} + +// DefaultSerializer is an implementation of the Serializer interface. +type DefaultSerializer struct{} + +// Serialize uses the default JSON serializer to obtain the string representation of an object. +func (DefaultSerializer) Serialize(obj interface{}) (string, error) { + bytes, err := json.Marshal(obj) + if err != nil { + return "", err + } + return string(bytes), nil +} + +type metricContextKey struct{} + +// MetricContext contains fields to store metric-related information. +type MetricContext struct { + connectionCounter *SharedConnectionCounter + publisher MetricPublisher + data *MetricData +} + +// MetricData stores the collected metric data. +type MetricData struct { + RequestStartTime time.Time + RequestEndTime time.Time + APICallDuration time.Duration + SerializeStartTime time.Time + SerializeEndTime time.Time + MarshallingDuration time.Duration + ResolveEndpointStartTime time.Time + ResolveEndpointEndTime time.Time + EndpointResolutionDuration time.Duration + GetIdentityStartTime time.Time + GetIdentityEndTime time.Time + InThroughput float64 + OutThroughput float64 + RetryCount int + Success uint8 + StatusCode int + ClientRequestID string + ServiceID string + OperationName string + PartitionID string + Region string + UserAgent string + RequestContentLength int64 + Stream StreamMetrics + Attempts []AttemptMetrics +} + +// StreamMetrics stores metrics related to streaming data. +type StreamMetrics struct { + ReadDuration time.Duration + ReadBytes int64 + Throughput float64 +} + +// AttemptMetrics stores metrics related to individual attempts. +type AttemptMetrics struct { + ServiceCallStart time.Time + ServiceCallEnd time.Time + ServiceCallDuration time.Duration + FirstByteTime time.Time + TimeToFirstByte time.Duration + ConnRequestedTime time.Time + ConnObtainedTime time.Time + ConcurrencyAcquireDuration time.Duration + SignStartTime time.Time + SignEndTime time.Time + SigningDuration time.Duration + DeserializeStartTime time.Time + DeserializeEndTime time.Time + UnMarshallingDuration time.Duration + RetryDelay time.Duration + ResponseContentLength int64 + StatusCode int + RequestID string + ExtendedRequestID string + HTTPClient string + MaxConcurrency int + PendingConnectionAcquires int + AvailableConcurrency int + ActiveRequests int + ReusedConnection bool +} + +// Data returns the MetricData associated with the MetricContext. +func (mc *MetricContext) Data() *MetricData { + return mc.data +} + +// ConnectionCounter returns the SharedConnectionCounter associated with the MetricContext. +func (mc *MetricContext) ConnectionCounter() *SharedConnectionCounter { + return mc.connectionCounter +} + +// Publisher returns the MetricPublisher associated with the MetricContext. +func (mc *MetricContext) Publisher() MetricPublisher { + return mc.publisher +} + +// ComputeRequestMetrics calculates and populates derived metrics based on the collected data. +func (md *MetricData) ComputeRequestMetrics() { + + for idx := range md.Attempts { + attempt := &md.Attempts[idx] + attempt.ConcurrencyAcquireDuration = attempt.ConnObtainedTime.Sub(attempt.ConnRequestedTime) + attempt.SigningDuration = attempt.SignEndTime.Sub(attempt.SignStartTime) + attempt.UnMarshallingDuration = attempt.DeserializeEndTime.Sub(attempt.DeserializeStartTime) + attempt.TimeToFirstByte = attempt.FirstByteTime.Sub(attempt.ServiceCallStart) + attempt.ServiceCallDuration = attempt.ServiceCallEnd.Sub(attempt.ServiceCallStart) + } + + md.APICallDuration = md.RequestEndTime.Sub(md.RequestStartTime) + md.MarshallingDuration = md.SerializeEndTime.Sub(md.SerializeStartTime) + md.EndpointResolutionDuration = md.ResolveEndpointEndTime.Sub(md.ResolveEndpointStartTime) + + md.RetryCount = len(md.Attempts) - 1 + + latestAttempt, err := md.LatestAttempt() + + if err != nil { + fmt.Printf("error retrieving attempts data due to: %s. Skipping Throughput metrics", err.Error()) + } else { + + md.StatusCode = latestAttempt.StatusCode + + if md.Success == 1 { + if latestAttempt.ResponseContentLength > 0 && latestAttempt.ServiceCallDuration > 0 { + md.InThroughput = float64(latestAttempt.ResponseContentLength) / latestAttempt.ServiceCallDuration.Seconds() + } + if md.RequestContentLength > 0 && latestAttempt.ServiceCallDuration > 0 { + md.OutThroughput = float64(md.RequestContentLength) / latestAttempt.ServiceCallDuration.Seconds() + } + } + } +} + +// LatestAttempt returns the latest attempt metrics. +// It returns an error if no attempts are initialized. +func (md *MetricData) LatestAttempt() (*AttemptMetrics, error) { + if md.Attempts == nil || len(md.Attempts) == 0 { + return nil, fmt.Errorf("no attempts initialized. NewAttempt() should be called first") + } + return &md.Attempts[len(md.Attempts)-1], nil +} + +// NewAttempt initializes new attempt metrics. +func (md *MetricData) NewAttempt() { + if md.Attempts == nil { + md.Attempts = []AttemptMetrics{} + } + md.Attempts = append(md.Attempts, AttemptMetrics{}) +} + +// SharedConnectionCounter is a counter shared across API calls. +type SharedConnectionCounter struct { + mu sync.Mutex + + activeRequests int + pendingConnectionAcquire int +} + +// ActiveRequests returns the count of active requests. +func (cc *SharedConnectionCounter) ActiveRequests() int { + cc.mu.Lock() + defer cc.mu.Unlock() + + return cc.activeRequests +} + +// PendingConnectionAcquire returns the count of pending connection acquires. +func (cc *SharedConnectionCounter) PendingConnectionAcquire() int { + cc.mu.Lock() + defer cc.mu.Unlock() + + return cc.pendingConnectionAcquire +} + +// AddActiveRequest increments the count of active requests. +func (cc *SharedConnectionCounter) AddActiveRequest() { + cc.mu.Lock() + defer cc.mu.Unlock() + + cc.activeRequests++ +} + +// RemoveActiveRequest decrements the count of active requests. +func (cc *SharedConnectionCounter) RemoveActiveRequest() { + cc.mu.Lock() + defer cc.mu.Unlock() + + cc.activeRequests-- +} + +// AddPendingConnectionAcquire increments the count of pending connection acquires. +func (cc *SharedConnectionCounter) AddPendingConnectionAcquire() { + cc.mu.Lock() + defer cc.mu.Unlock() + + cc.pendingConnectionAcquire++ +} + +// RemovePendingConnectionAcquire decrements the count of pending connection acquires. +func (cc *SharedConnectionCounter) RemovePendingConnectionAcquire() { + cc.mu.Lock() + defer cc.mu.Unlock() + + cc.pendingConnectionAcquire-- +} + +// InitMetricContext initializes the metric context with the provided counter and publisher. +// It returns the updated context. +func InitMetricContext( + ctx context.Context, counter *SharedConnectionCounter, publisher MetricPublisher, +) context.Context { + if middleware.GetStackValue(ctx, metricContextKey{}) == nil { + ctx = middleware.WithStackValue(ctx, metricContextKey{}, &MetricContext{ + connectionCounter: counter, + publisher: publisher, + data: &MetricData{ + Attempts: []AttemptMetrics{}, + Stream: StreamMetrics{}, + }, + }) + } + return ctx +} + +// Context returns the metric context from the given context. +// It returns nil if the metric context is not found. +func Context(ctx context.Context) *MetricContext { + mctx := middleware.GetStackValue(ctx, metricContextKey{}) + if mctx == nil { + return nil + } + return mctx.(*MetricContext) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/recursion_detection.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/recursion_detection.go new file mode 100644 index 000000000000..3f6aaf231e19 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/recursion_detection.go @@ -0,0 +1,94 @@ +package middleware + +import ( + "context" + "fmt" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" + "os" +) + +const envAwsLambdaFunctionName = "AWS_LAMBDA_FUNCTION_NAME" +const envAmznTraceID = "_X_AMZN_TRACE_ID" +const amznTraceIDHeader = "X-Amzn-Trace-Id" + +// AddRecursionDetection adds recursionDetection to the middleware stack +func AddRecursionDetection(stack *middleware.Stack) error { + return stack.Build.Add(&RecursionDetection{}, middleware.After) +} + +// RecursionDetection detects Lambda environment and sets its X-Ray trace ID to request header if absent +// to avoid recursion invocation in Lambda +type RecursionDetection struct{} + +// ID returns the middleware identifier +func (m *RecursionDetection) ID() string { + return "RecursionDetection" +} + +// HandleBuild detects Lambda environment and adds its trace ID to request header if absent +func (m *RecursionDetection) HandleBuild( + ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler, +) ( + out middleware.BuildOutput, metadata middleware.Metadata, err error, +) { + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown request type %T", req) + } + + _, hasLambdaEnv := os.LookupEnv(envAwsLambdaFunctionName) + xAmznTraceID, hasTraceID := os.LookupEnv(envAmznTraceID) + value := req.Header.Get(amznTraceIDHeader) + // only set the X-Amzn-Trace-Id header when it is not set initially, the + // current environment is Lambda and the _X_AMZN_TRACE_ID env variable exists + if value != "" || !hasLambdaEnv || !hasTraceID { + return next.HandleBuild(ctx, in) + } + + req.Header.Set(amznTraceIDHeader, percentEncode(xAmznTraceID)) + return next.HandleBuild(ctx, in) +} + +func percentEncode(s string) string { + upperhex := "0123456789ABCDEF" + hexCount := 0 + for i := 0; i < len(s); i++ { + c := s[i] + if shouldEncode(c) { + hexCount++ + } + } + + if hexCount == 0 { + return s + } + + required := len(s) + 2*hexCount + t := make([]byte, required) + j := 0 + for i := 0; i < len(s); i++ { + if c := s[i]; shouldEncode(c) { + t[j] = '%' + t[j+1] = upperhex[c>>4] + t[j+2] = upperhex[c&15] + j += 3 + } else { + t[j] = c + j++ + } + } + return string(t) +} + +func shouldEncode(c byte) bool { + if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' { + return false + } + switch c { + case '-', '=', ';', ':', '+', '&', '[', ']', '{', '}', '"', '\'', ',': + return false + default: + return true + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id_retriever.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id_retriever.go index 7ce48c611cd1..128b60a73103 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id_retriever.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id_retriever.go @@ -4,6 +4,7 @@ import ( "context" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" ) @@ -11,18 +12,22 @@ import ( func AddRequestIDRetrieverMiddleware(stack *middleware.Stack) error { // add error wrapper middleware before operation deserializers so that it can wrap the error response // returned by operation deserializers - return stack.Deserialize.Insert(&requestIDRetriever{}, "OperationDeserializer", middleware.Before) + return stack.Deserialize.Insert(&RequestIDRetriever{}, "OperationDeserializer", middleware.Before) } -type requestIDRetriever struct { +// RequestIDRetriever middleware captures the AWS service request ID from the +// raw response. +type RequestIDRetriever struct { } // ID returns the middleware identifier -func (m *requestIDRetriever) ID() string { +func (m *RequestIDRetriever) ID() string { return "RequestIDRetriever" } -func (m *requestIDRetriever) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +// HandleDeserialize pulls the AWS request ID from the response, storing it in +// operation metadata. +func (m *RequestIDRetriever) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -41,6 +46,9 @@ func (m *requestIDRetriever) HandleDeserialize(ctx context.Context, in middlewar if v := resp.Header.Get(h); len(v) != 0 { // set reqID on metadata for successful responses. SetRequestIDMetadata(&metadata, v) + + span, _ := tracing.GetSpan(ctx) + span.SetProperty("aws.request_id", v) break } } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/user_agent.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/user_agent.go index 285b2bba8971..ff0bc921f1bf 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/user_agent.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/user_agent.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "runtime" + "sort" "strings" "github.com/aws/aws-sdk-go-v2/aws" @@ -30,6 +31,7 @@ const ( FrameworkMetadata AdditionalMetadata ApplicationIdentifier + FeatureMetadata2 ) func (k SDKAgentKeyType) string() string { @@ -50,6 +52,8 @@ func (k SDKAgentKeyType) string() string { return "lib" case ApplicationIdentifier: return "app" + case FeatureMetadata2: + return "m" case AdditionalMetadata: fallthrough default: @@ -59,12 +63,37 @@ func (k SDKAgentKeyType) string() string { const execEnvVar = `AWS_EXECUTION_ENV` -// requestUserAgent is a build middleware that set the User-Agent for the request. -type requestUserAgent struct { +var validChars = map[rune]bool{ + '!': true, '#': true, '$': true, '%': true, '&': true, '\'': true, '*': true, '+': true, + '-': true, '.': true, '^': true, '_': true, '`': true, '|': true, '~': true, +} + +// UserAgentFeature enumerates tracked SDK features. +type UserAgentFeature string + +// Enumerates UserAgentFeature. +const ( + UserAgentFeatureResourceModel UserAgentFeature = "A" // n/a (we don't generate separate resource types) + UserAgentFeatureWaiter = "B" + UserAgentFeaturePaginator = "C" + UserAgentFeatureRetryModeLegacy = "D" // n/a (equivalent to standard) + UserAgentFeatureRetryModeStandard = "E" + UserAgentFeatureRetryModeAdaptive = "F" + UserAgentFeatureS3Transfer = "G" + UserAgentFeatureS3CryptoV1N = "H" // n/a (crypto client is external) + UserAgentFeatureS3CryptoV2 = "I" // n/a + UserAgentFeatureS3ExpressBucket = "J" + UserAgentFeatureS3AccessGrants = "K" // not yet implemented + UserAgentFeatureGZIPRequestCompression = "L" +) + +// RequestUserAgent is a build middleware that set the User-Agent for the request. +type RequestUserAgent struct { sdkAgent, userAgent *smithyhttp.UserAgentBuilder + features map[UserAgentFeature]struct{} } -// newRequestUserAgent returns a new requestUserAgent which will set the User-Agent and X-Amz-User-Agent for the +// NewRequestUserAgent returns a new requestUserAgent which will set the User-Agent and X-Amz-User-Agent for the // request. // // User-Agent example: @@ -74,14 +103,15 @@ type requestUserAgent struct { // X-Amz-User-Agent example: // // aws-sdk-go-v2/1.2.3 md/GOOS/linux md/GOARCH/amd64 lang/go/1.15 -func newRequestUserAgent() *requestUserAgent { +func NewRequestUserAgent() *RequestUserAgent { userAgent, sdkAgent := smithyhttp.NewUserAgentBuilder(), smithyhttp.NewUserAgentBuilder() addProductName(userAgent) addProductName(sdkAgent) - r := &requestUserAgent{ + r := &RequestUserAgent{ sdkAgent: sdkAgent, userAgent: userAgent, + features: map[UserAgentFeature]struct{}{}, } addSDKMetadata(r) @@ -89,7 +119,7 @@ func newRequestUserAgent() *requestUserAgent { return r } -func addSDKMetadata(r *requestUserAgent) { +func addSDKMetadata(r *RequestUserAgent) { r.AddSDKAgentKey(OperatingSystemMetadata, getNormalizedOSName()) r.AddSDKAgentKeyValue(LanguageMetadata, "go", languageVersion) r.AddSDKAgentKeyValue(AdditionalMetadata, "GOOS", runtime.GOOS) @@ -157,18 +187,18 @@ func AddRequestUserAgentMiddleware(stack *middleware.Stack) error { return err } -func getOrAddRequestUserAgent(stack *middleware.Stack) (*requestUserAgent, error) { - id := (*requestUserAgent)(nil).ID() +func getOrAddRequestUserAgent(stack *middleware.Stack) (*RequestUserAgent, error) { + id := (*RequestUserAgent)(nil).ID() bm, ok := stack.Build.Get(id) if !ok { - bm = newRequestUserAgent() + bm = NewRequestUserAgent() err := stack.Build.Add(bm, middleware.After) if err != nil { return nil, err } } - requestUserAgent, ok := bm.(*requestUserAgent) + requestUserAgent, ok := bm.(*RequestUserAgent) if !ok { return nil, fmt.Errorf("%T for %s middleware did not match expected type", bm, id) } @@ -177,34 +207,40 @@ func getOrAddRequestUserAgent(stack *middleware.Stack) (*requestUserAgent, error } // AddUserAgentKey adds the component identified by name to the User-Agent string. -func (u *requestUserAgent) AddUserAgentKey(key string) { - u.userAgent.AddKey(key) +func (u *RequestUserAgent) AddUserAgentKey(key string) { + u.userAgent.AddKey(strings.Map(rules, key)) } // AddUserAgentKeyValue adds the key identified by the given name and value to the User-Agent string. -func (u *requestUserAgent) AddUserAgentKeyValue(key, value string) { - u.userAgent.AddKeyValue(key, value) +func (u *RequestUserAgent) AddUserAgentKeyValue(key, value string) { + u.userAgent.AddKeyValue(strings.Map(rules, key), strings.Map(rules, value)) } -// AddUserAgentKey adds the component identified by name to the User-Agent string. -func (u *requestUserAgent) AddSDKAgentKey(keyType SDKAgentKeyType, key string) { +// AddUserAgentFeature adds the feature ID to the tracking list to be emitted +// in the final User-Agent string. +func (u *RequestUserAgent) AddUserAgentFeature(feature UserAgentFeature) { + u.features[feature] = struct{}{} +} + +// AddSDKAgentKey adds the component identified by name to the User-Agent string. +func (u *RequestUserAgent) AddSDKAgentKey(keyType SDKAgentKeyType, key string) { // TODO: should target sdkAgent - u.userAgent.AddKey(keyType.string() + "/" + key) + u.userAgent.AddKey(keyType.string() + "/" + strings.Map(rules, key)) } -// AddUserAgentKeyValue adds the key identified by the given name and value to the User-Agent string. -func (u *requestUserAgent) AddSDKAgentKeyValue(keyType SDKAgentKeyType, key, value string) { +// AddSDKAgentKeyValue adds the key identified by the given name and value to the User-Agent string. +func (u *RequestUserAgent) AddSDKAgentKeyValue(keyType SDKAgentKeyType, key, value string) { // TODO: should target sdkAgent - u.userAgent.AddKeyValue(keyType.string()+"/"+key, value) + u.userAgent.AddKeyValue(keyType.string(), strings.Map(rules, key)+"#"+strings.Map(rules, value)) } // ID the name of the middleware. -func (u *requestUserAgent) ID() string { +func (u *RequestUserAgent) ID() string { return "UserAgent" } // HandleBuild adds or appends the constructed user agent to the request. -func (u *requestUserAgent) HandleBuild(ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler) ( +func (u *RequestUserAgent) HandleBuild(ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler) ( out middleware.BuildOutput, metadata middleware.Metadata, err error, ) { switch req := in.Request.(type) { @@ -219,12 +255,15 @@ func (u *requestUserAgent) HandleBuild(ctx context.Context, in middleware.BuildI return next.HandleBuild(ctx, in) } -func (u *requestUserAgent) addHTTPUserAgent(request *smithyhttp.Request) { +func (u *RequestUserAgent) addHTTPUserAgent(request *smithyhttp.Request) { const userAgent = "User-Agent" updateHTTPHeader(request, userAgent, u.userAgent.Build()) + if len(u.features) > 0 { + updateHTTPHeader(request, userAgent, buildFeatureMetrics(u.features)) + } } -func (u *requestUserAgent) addHTTPSDKAgent(request *smithyhttp.Request) { +func (u *RequestUserAgent) addHTTPSDKAgent(request *smithyhttp.Request) { const sdkAgent = "X-Amz-User-Agent" updateHTTPHeader(request, sdkAgent, u.sdkAgent.Build()) } @@ -241,3 +280,26 @@ func updateHTTPHeader(request *smithyhttp.Request, header string, value string) } request.Header[header] = append(request.Header[header][:0], current) } + +func rules(r rune) rune { + switch { + case r >= '0' && r <= '9': + return r + case r >= 'A' && r <= 'Z' || r >= 'a' && r <= 'z': + return r + case validChars[r]: + return r + default: + return '-' + } +} + +func buildFeatureMetrics(features map[UserAgentFeature]struct{}) string { + fs := make([]string, 0, len(features)) + for f := range features { + fs = append(fs, string(f)) + } + + sort.Strings(fs) + return fmt.Sprintf("%s/%s", FeatureMetadata2.string(), strings.Join(fs, ",")) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/array.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/array.go index 9d7d3a0cb5e4..47ebc0f54761 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/array.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/array.go @@ -36,20 +36,31 @@ type Array struct { memberName string // Elements are stored in values, so we keep track of the list size here. size int32 + // Empty lists are encoded as "=", if we add a value later we will + // remove this encoding + emptyValue Value } func newArray(values url.Values, prefix string, flat bool, memberName string) *Array { + emptyValue := newValue(values, prefix, flat) + emptyValue.String("") + return &Array{ values: values, prefix: prefix, flat: flat, memberName: memberName, + emptyValue: emptyValue, } } // Value adds a new element to the Query Array. Returns a Value type used to // encode the array element. func (a *Array) Value() Value { + if a.size == 0 { + delete(a.values, a.emptyValue.key) + } + // Query lists start a 1, so adjust the size first a.size++ prefix := a.prefix diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/object.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/object.go index 6a99d4ea8f63..455b92515cae 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/object.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/object.go @@ -41,6 +41,12 @@ func (o *Object) Key(name string) Value { return o.key(name, false) } +// KeyWithValues adds the given named key to the Query object. +// Returns a Value encoder that should be used to encode a Query list of values. +func (o *Object) KeyWithValues(name string) Value { + return o.keyWithValues(name, false) +} + // FlatKey adds the given named key to the Query object. // Returns a Value encoder that should be used to encode a Query value type. The // value will be flattened if it is a map or array. @@ -54,3 +60,10 @@ func (o *Object) key(name string, flatValue bool) Value { } return newValue(o.values, name, flatValue) } + +func (o *Object) keyWithValues(name string, flatValue bool) Value { + if o.prefix != "" { + return newAppendValue(o.values, fmt.Sprintf("%s.%s", o.prefix, name), flatValue) + } + return newAppendValue(o.values, name, flatValue) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/value.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/value.go index 302525ab1014..a9251521f123 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/value.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/query/value.go @@ -27,6 +27,15 @@ func newValue(values url.Values, key string, flat bool) Value { } } +func newAppendValue(values url.Values, key string, flat bool) Value { + return Value{ + values: values, + key: key, + flat: flat, + queryValue: httpbinding.NewQueryValue(values, key, true), + } +} + func newBaseValue(values url.Values) Value { return Value{ values: values, diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/xml/error_utils.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/xml/error_utils.go index c228f7d87858..6975ce6524d9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/xml/error_utils.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/protocol/xml/error_utils.go @@ -21,26 +21,18 @@ func GetErrorResponseComponents(r io.Reader, noErrorWrapping bool) (ErrorCompone if err := xml.NewDecoder(r).Decode(&errResponse); err != nil && err != io.EOF { return ErrorComponents{}, fmt.Errorf("error while deserializing xml error response: %w", err) } - return ErrorComponents{ - Code: errResponse.Code, - Message: errResponse.Message, - RequestID: errResponse.RequestID, - }, nil + return ErrorComponents(errResponse), nil } var errResponse wrappedErrorResponse if err := xml.NewDecoder(r).Decode(&errResponse); err != nil && err != io.EOF { return ErrorComponents{}, fmt.Errorf("error while deserializing xml error response: %w", err) } - return ErrorComponents{ - Code: errResponse.Code, - Message: errResponse.Message, - RequestID: errResponse.RequestID, - }, nil + return ErrorComponents(errResponse), nil } // noWrappedErrorResponse represents the error response body with -// no internal ... +// wrapped within Error type wrappedErrorResponse struct { Code string `xml:"Error>Code"` Message string `xml:"Error>Message"` diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/none.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/none.go new file mode 100644 index 000000000000..8c78364105bf --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/none.go @@ -0,0 +1,20 @@ +package ratelimit + +import "context" + +// None implements a no-op rate limiter which effectively disables client-side +// rate limiting (also known as "retry quotas"). +// +// GetToken does nothing and always returns a nil error. The returned +// token-release function does nothing, and always returns a nil error. +// +// AddTokens does nothing and always returns a nil error. +var None = &none{} + +type none struct{} + +func (*none) GetToken(ctx context.Context, cost uint) (func() error, error) { + return func() error { return nil }, nil +} + +func (*none) AddTokens(v uint) error { return nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/token_rate_limit.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/token_rate_limit.go index 12a3f0c4fbb5..d89090ad38e6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/token_rate_limit.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/ratelimit/token_rate_limit.go @@ -30,10 +30,6 @@ func NewTokenRateLimit(tokens uint) *TokenRateLimit { } } -func isTimeoutError(error) bool { - return false -} - type canceledError struct { Err error } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/attempt_metrics.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/attempt_metrics.go new file mode 100644 index 000000000000..bfa5bf7d130e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/attempt_metrics.go @@ -0,0 +1,51 @@ +package retry + +import ( + "context" + + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" +) + +type attemptMetrics struct { + Attempts metrics.Int64Counter + Errors metrics.Int64Counter + + AttemptDuration metrics.Float64Histogram +} + +func newAttemptMetrics(meter metrics.Meter) (*attemptMetrics, error) { + m := &attemptMetrics{} + var err error + + m.Attempts, err = meter.Int64Counter("client.call.attempts", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "{attempt}" + o.Description = "The number of attempts for an individual operation" + }) + if err != nil { + return nil, err + } + m.Errors, err = meter.Int64Counter("client.call.errors", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "{error}" + o.Description = "The number of errors for an operation" + }) + if err != nil { + return nil, err + } + m.AttemptDuration, err = meter.Float64Histogram("client.call.attempt_duration", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = "The time it takes to connect to the service, send the request, and get back HTTP status code and headers (including time queued waiting to be sent)" + }) + if err != nil { + return nil, err + } + + return m, nil +} + +func withOperationMetadata(ctx context.Context) metrics.RecordMetricOption { + return func(o *metrics.RecordMetricOptions) { + o.Properties.Set("rpc.service", middleware.GetServiceID(ctx)) + o.Properties.Set("rpc.method", middleware.GetOperationName(ctx)) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go index 3326289a151b..286892adc801 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go @@ -2,17 +2,23 @@ package retry import ( "context" + "errors" "fmt" "strconv" "strings" "time" + privatemetrics "github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics" + internalcontext "github.com/aws/aws-sdk-go-v2/internal/context" + "github.com/aws/smithy-go" + "github.com/aws/aws-sdk-go-v2/aws" awsmiddle "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/internal/sdk" "github.com/aws/smithy-go/logging" - "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/metrics" smithymiddle "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" "github.com/aws/smithy-go/transport/http" ) @@ -35,10 +41,17 @@ type Attempt struct { // attempts are reached. LogAttempts bool + // A Meter instance for recording retry-related metrics. + OperationMeter metrics.Meter + retryer aws.RetryerV2 requestCloner RequestCloner } +// define the threshold at which we will consider certain kind of errors to be probably +// caused by clock skew +const skewThreshold = 4 * time.Minute + // NewAttemptMiddleware returns a new Attempt retry middleware. func NewAttemptMiddleware(retryer aws.Retryer, requestCloner RequestCloner, optFns ...func(*Attempt)) *Attempt { m := &Attempt{ @@ -48,6 +61,10 @@ func NewAttemptMiddleware(retryer aws.Retryer, requestCloner RequestCloner, optF for _, fn := range optFns { fn(m) } + if m.OperationMeter == nil { + m.OperationMeter = metrics.NopMeterProvider{}.Meter("") + } + return m } @@ -73,6 +90,11 @@ func (r *Attempt) HandleFinalize(ctx context.Context, in smithymiddle.FinalizeIn maxAttempts := r.retryer.MaxAttempts() releaseRetryToken := nopRelease + retryMetrics, err := newAttemptMetrics(r.OperationMeter) + if err != nil { + return out, metadata, err + } + for { attemptNum++ attemptInput := in @@ -86,8 +108,29 @@ func (r *Attempt) HandleFinalize(ctx context.Context, in smithymiddle.FinalizeIn AttemptClockSkew: attemptClockSkew, }) + // Setting clock skew to be used on other context (like signing) + ctx = internalcontext.SetAttemptSkewContext(ctx, attemptClockSkew) + var attemptResult AttemptResult + + attemptCtx, span := tracing.StartSpan(attemptCtx, "Attempt", func(o *tracing.SpanOptions) { + o.Properties.Set("operation.attempt", attemptNum) + }) + retryMetrics.Attempts.Add(ctx, 1, withOperationMetadata(ctx)) + + start := sdk.NowTime() out, attemptResult, releaseRetryToken, err = r.handleAttempt(attemptCtx, attemptInput, releaseRetryToken, next) + elapsed := sdk.NowTime().Sub(start) + + retryMetrics.AttemptDuration.Record(ctx, float64(elapsed)/1e9, withOperationMetadata(ctx)) + if err != nil { + retryMetrics.Errors.Add(ctx, 1, withOperationMetadata(ctx), func(o *metrics.RecordMetricOptions) { + o.Properties.Set("exception.type", errorType(err)) + }) + } + + span.End() + attemptClockSkew, _ = awsmiddle.GetAttemptSkew(attemptResult.ResponseMetadata) // AttemptResult Retried states that the attempt was not successful, and @@ -185,6 +228,8 @@ func (r *Attempt) handleAttempt( return out, attemptResult, nopRelease, err } + err = wrapAsClockSkew(ctx, err) + //------------------------------ // Is Retryable and Should Retry //------------------------------ @@ -226,6 +271,13 @@ func (r *Attempt) handleAttempt( // that time. Potentially early exist if the sleep is canceled via the // context. retryDelay, reqErr := r.retryer.RetryDelay(attemptNum, err) + mctx := privatemetrics.Context(ctx) + if mctx != nil { + attempt, err := mctx.Data().LatestAttempt() + if err != nil { + attempt.RetryDelay = retryDelay + } + } if reqErr != nil { return out, attemptResult, releaseRetryToken, reqErr } @@ -240,6 +292,37 @@ func (r *Attempt) handleAttempt( return out, attemptResult, releaseRetryToken, err } +// errors that, if detected when we know there's a clock skew, +// can be retried and have a high chance of success +var possibleSkewCodes = map[string]struct{}{ + "InvalidSignatureException": {}, + "SignatureDoesNotMatch": {}, + "AuthFailure": {}, +} + +var definiteSkewCodes = map[string]struct{}{ + "RequestExpired": {}, + "RequestInTheFuture": {}, + "RequestTimeTooSkewed": {}, +} + +// wrapAsClockSkew checks if this error could be related to a clock skew +// error and if so, wrap the error. +func wrapAsClockSkew(ctx context.Context, err error) error { + var v interface{ ErrorCode() string } + if !errors.As(err, &v) { + return err + } + if _, ok := definiteSkewCodes[v.ErrorCode()]; ok { + return &retryableClockSkewError{Err: err} + } + _, isPossibleSkewCode := possibleSkewCodes[v.ErrorCode()] + if skew := internalcontext.GetAttemptSkewContext(ctx); skew > skewThreshold && isPossibleSkewCode { + return &retryableClockSkewError{Err: err} + } + return err +} + // MetricsHeader attaches SDK request metric header for retries to the transport type MetricsHeader struct{} @@ -292,7 +375,7 @@ type retryMetadataKey struct{} // Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues // to clear all stack values. func getRetryMetadata(ctx context.Context) (metadata retryMetadata, ok bool) { - metadata, ok = middleware.GetStackValue(ctx, retryMetadataKey{}).(retryMetadata) + metadata, ok = smithymiddle.GetStackValue(ctx, retryMetadataKey{}).(retryMetadata) return metadata, ok } @@ -301,7 +384,7 @@ func getRetryMetadata(ctx context.Context) (metadata retryMetadata, ok bool) { // Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues // to clear all stack values. func setRetryMetadata(ctx context.Context, metadata retryMetadata) context.Context { - return middleware.WithStackValue(ctx, retryMetadataKey{}, metadata) + return smithymiddle.WithStackValue(ctx, retryMetadataKey{}, metadata) } // AddRetryMiddlewaresOptions is the set of options that can be passed to @@ -321,11 +404,23 @@ func AddRetryMiddlewares(stack *smithymiddle.Stack, options AddRetryMiddlewaresO middleware.LogAttempts = options.LogRetryAttempts }) - if err := stack.Finalize.Add(attempt, smithymiddle.After); err != nil { + // index retry to before signing, if signing exists + if err := stack.Finalize.Insert(attempt, "Signing", smithymiddle.Before); err != nil { return err } - if err := stack.Finalize.Add(&MetricsHeader{}, smithymiddle.After); err != nil { + + if err := stack.Finalize.Insert(&MetricsHeader{}, attempt.ID(), smithymiddle.After); err != nil { return err } return nil } + +// Determines the value of exception.type for metrics purposes. We prefer an +// API-specific error code, otherwise it's just the Go type for the value. +func errorType(err error) string { + var terr smithy.APIError + if errors.As(err, &terr) { + return terr.ErrorCode() + } + return fmt.Sprintf("%T", err) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retryable_error.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retryable_error.go index c695e6fe5277..acd8d1cc3d66 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retryable_error.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/retryable_error.go @@ -2,6 +2,7 @@ package retry import ( "errors" + "fmt" "net" "net/url" "strings" @@ -95,6 +96,21 @@ func (r RetryableConnectionError) IsErrorRetryable(err error) aws.Ternary { var timeoutErr interface{ Timeout() bool } var urlErr *url.Error var netOpErr *net.OpError + var dnsError *net.DNSError + + if errors.As(err, &dnsError) { + // NXDOMAIN errors should not be retried + if dnsError.IsNotFound { + return aws.BoolTernary(false) + } + + // if !dnsError.Temporary(), error may or may not be temporary, + // (i.e. !Temporary() =/=> !retryable) so we should fall through to + // remaining checks + if dnsError.Temporary() { + return aws.BoolTernary(true) + } + } switch { case errors.As(err, &conErr) && conErr.ConnectionError(): @@ -184,3 +200,23 @@ func (r RetryableErrorCode) IsErrorRetryable(err error) aws.Ternary { return aws.TrueTernary } + +// retryableClockSkewError marks errors that can be caused by clock skew +// (difference between server time and client time). +// This is returned when there's certain confidence that adjusting the client time +// could allow a retry to succeed +type retryableClockSkewError struct{ Err error } + +func (e *retryableClockSkewError) Error() string { + return fmt.Sprintf("Probable clock skew error: %v", e.Err) +} + +// Unwrap returns the wrapped error. +func (e *retryableClockSkewError) Unwrap() error { + return e.Err +} + +// RetryableError allows the retryer to retry this request +func (e *retryableClockSkewError) RetryableError() bool { + return true +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/standard.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/standard.go index 25abffc81289..d5ea93222ed1 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/standard.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/standard.go @@ -123,6 +123,17 @@ type StandardOptions struct { // Provides the rate limiting strategy for rate limiting attempt retries // across all attempts the retryer is being used with. + // + // A RateLimiter operates as a token bucket with a set capacity, where + // attempt failures events consume tokens. A retry attempt that attempts to + // consume more tokens than what's available results in operation failure. + // The default implementation is parameterized as follows: + // - a capacity of 500 (DefaultRetryRateTokens) + // - a retry caused by a timeout costs 10 tokens (DefaultRetryCost) + // - a retry caused by other errors costs 5 tokens (DefaultRetryTimeoutCost) + // - an operation that succeeds on the 1st attempt adds 1 token (DefaultNoRetryIncrement) + // + // You can disable rate limiting by setting this field to ratelimit.None. RateLimiter RateLimiter // The cost to deduct from the RateLimiter's token bucket per retry. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/retryer.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/retryer.go index 6777e21ef092..b0ba4cb2f08d 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/retryer.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/retryer.go @@ -54,7 +54,7 @@ type Retryer interface { MaxAttempts() int // RetryDelay returns the delay that should be used before retrying the - // attempt. Will return error if the if the delay could not be determined. + // attempt. Will return error if the delay could not be determined. RetryDelay(attempt int, opErr error) (time.Duration, error) // GetRetryToken attempts to deduct the retry cost from the retry token pool. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go index 85a1d8f032fb..734e548bd643 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go @@ -7,6 +7,7 @@ var IgnoredHeaders = Rules{ "Authorization": struct{}{}, "User-Agent": struct{}{}, "X-Amzn-Trace-Id": struct{}{}, + "Expect": struct{}{}, }, }, } @@ -44,9 +45,9 @@ var RequiredSignedHeaders = Rules{ "X-Amz-Grant-Write-Acp": struct{}{}, "X-Amz-Metadata-Directive": struct{}{}, "X-Amz-Mfa": struct{}{}, - "X-Amz-Request-Payer": struct{}{}, "X-Amz-Server-Side-Encryption": struct{}{}, "X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id": struct{}{}, + "X-Amz-Server-Side-Encryption-Context": struct{}{}, "X-Amz-Server-Side-Encryption-Customer-Algorithm": struct{}{}, "X-Amz-Server-Side-Encryption-Customer-Key": struct{}{}, "X-Amz-Server-Side-Encryption-Customer-Key-Md5": struct{}{}, diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/middleware.go index db8377ae5093..a10ee510afe3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/middleware.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/middleware.go @@ -12,8 +12,10 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" v4Internal "github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4" + internalauth "github.com/aws/aws-sdk-go-v2/internal/auth" "github.com/aws/aws-sdk-go-v2/internal/sdk" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" ) @@ -57,7 +59,7 @@ func (e *SigningError) Unwrap() error { // S3 PutObject API allows unsigned payload signing auth usage when TLS is enabled, and uses this middleware to // dynamically switch between unsigned and signed payload based on TLS state for request. func UseDynamicPayloadSigningMiddleware(stack *middleware.Stack) error { - _, err := stack.Build.Swap(computePayloadHashMiddlewareID, &dynamicPayloadSigningMiddleware{}) + _, err := stack.Finalize.Swap(computePayloadHashMiddlewareID, &dynamicPayloadSigningMiddleware{}) return err } @@ -70,27 +72,25 @@ func (m *dynamicPayloadSigningMiddleware) ID() string { return computePayloadHashMiddlewareID } -// HandleBuild sets a resolver that directs to the payload sha256 compute handler. -func (m *dynamicPayloadSigningMiddleware) HandleBuild( - ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler, +// HandleFinalize delegates SHA256 computation according to whether the request +// is TLS-enabled. +func (m *dynamicPayloadSigningMiddleware) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, ) ( - out middleware.BuildOutput, metadata middleware.Metadata, err error, + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, ) { req, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) } - // if TLS is enabled, use unsigned payload when supported if req.IsHTTPS() { - return (&unsignedPayload{}).HandleBuild(ctx, in, next) + return (&UnsignedPayload{}).HandleFinalize(ctx, in, next) } - - // else fall back to signed payload - return (&computePayloadSHA256{}).HandleBuild(ctx, in, next) + return (&ComputePayloadSHA256{}).HandleFinalize(ctx, in, next) } -// unsignedPayload sets the SigV4 request payload hash to unsigned. +// UnsignedPayload sets the SigV4 request payload hash to unsigned. // // Will not set the Unsigned Payload magic SHA value, if a SHA has already been // stored in the context. (e.g. application pre-computed SHA256 before making @@ -98,39 +98,32 @@ func (m *dynamicPayloadSigningMiddleware) HandleBuild( // // This middleware does not check the X-Amz-Content-Sha256 header, if that // header is serialized a middleware must translate it into the context. -type unsignedPayload struct{} +type UnsignedPayload struct{} // AddUnsignedPayloadMiddleware adds unsignedPayload to the operation // middleware stack func AddUnsignedPayloadMiddleware(stack *middleware.Stack) error { - return stack.Build.Add(&unsignedPayload{}, middleware.After) + return stack.Finalize.Insert(&UnsignedPayload{}, "ResolveEndpointV2", middleware.After) } // ID returns the unsignedPayload identifier -func (m *unsignedPayload) ID() string { +func (m *UnsignedPayload) ID() string { return computePayloadHashMiddlewareID } -// HandleBuild sets the payload hash to be an unsigned payload -func (m *unsignedPayload) HandleBuild( - ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler, +// HandleFinalize sets the payload hash magic value to the unsigned sentinel. +func (m *UnsignedPayload) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, ) ( - out middleware.BuildOutput, metadata middleware.Metadata, err error, + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, ) { - // This should not compute the content SHA256 if the value is already - // known. (e.g. application pre-computed SHA256 before making API call). - // Does not have any tight coupling to the X-Amz-Content-Sha256 header, if - // that header is provided a middleware must translate it into the context. - contentSHA := GetPayloadHash(ctx) - if len(contentSHA) == 0 { - contentSHA = v4Internal.UnsignedPayload + if GetPayloadHash(ctx) == "" { + ctx = SetPayloadHash(ctx, v4Internal.UnsignedPayload) } - - ctx = SetPayloadHash(ctx, contentSHA) - return next.HandleBuild(ctx, in) + return next.HandleFinalize(ctx, in) } -// computePayloadSHA256 computes SHA256 payload hash to sign. +// ComputePayloadSHA256 computes SHA256 payload hash to sign. // // Will not set the Unsigned Payload magic SHA value, if a SHA has already been // stored in the context. (e.g. application pre-computed SHA256 before making @@ -138,32 +131,40 @@ func (m *unsignedPayload) HandleBuild( // // This middleware does not check the X-Amz-Content-Sha256 header, if that // header is serialized a middleware must translate it into the context. -type computePayloadSHA256 struct{} +type ComputePayloadSHA256 struct{} // AddComputePayloadSHA256Middleware adds computePayloadSHA256 to the // operation middleware stack func AddComputePayloadSHA256Middleware(stack *middleware.Stack) error { - return stack.Build.Add(&computePayloadSHA256{}, middleware.After) + return stack.Finalize.Insert(&ComputePayloadSHA256{}, "ResolveEndpointV2", middleware.After) } // RemoveComputePayloadSHA256Middleware removes computePayloadSHA256 from the // operation middleware stack func RemoveComputePayloadSHA256Middleware(stack *middleware.Stack) error { - _, err := stack.Build.Remove(computePayloadHashMiddlewareID) + _, err := stack.Finalize.Remove(computePayloadHashMiddlewareID) return err } // ID is the middleware name -func (m *computePayloadSHA256) ID() string { +func (m *ComputePayloadSHA256) ID() string { return computePayloadHashMiddlewareID } -// HandleBuild compute the payload hash for the request payload -func (m *computePayloadSHA256) HandleBuild( - ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler, +// HandleFinalize computes the payload hash for the request, storing it to the +// context. This is a no-op if a caller has previously set that value. +func (m *ComputePayloadSHA256) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, ) ( - out middleware.BuildOutput, metadata middleware.Metadata, err error, + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, ) { + if GetPayloadHash(ctx) != "" { + return next.HandleFinalize(ctx, in) + } + + _, span := tracing.StartSpan(ctx, "ComputePayloadSHA256") + defer span.End() + req, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &HashComputationError{ @@ -171,14 +172,6 @@ func (m *computePayloadSHA256) HandleBuild( } } - // This should not compute the content SHA256 if the value is already - // known. (e.g. application pre-computed SHA256 before making API call) - // Does not have any tight coupling to the X-Amz-Content-Sha256 header, if - // that header is provided a middleware must translate it into the context. - if contentSHA := GetPayloadHash(ctx); len(contentSHA) != 0 { - return next.HandleBuild(ctx, in) - } - hash := sha256.New() if stream := req.GetStream(); stream != nil { _, err = io.Copy(hash, stream) @@ -197,7 +190,8 @@ func (m *computePayloadSHA256) HandleBuild( ctx = SetPayloadHash(ctx, hex.EncodeToString(hash.Sum(nil))) - return next.HandleBuild(ctx, in) + span.End() + return next.HandleFinalize(ctx, in) } // SwapComputePayloadSHA256ForUnsignedPayloadMiddleware replaces the @@ -206,38 +200,38 @@ func (m *computePayloadSHA256) HandleBuild( // Use this to disable computing the Payload SHA256 checksum and instead use // UNSIGNED-PAYLOAD for the SHA256 value. func SwapComputePayloadSHA256ForUnsignedPayloadMiddleware(stack *middleware.Stack) error { - _, err := stack.Build.Swap(computePayloadHashMiddlewareID, &unsignedPayload{}) + _, err := stack.Finalize.Swap(computePayloadHashMiddlewareID, &UnsignedPayload{}) return err } -// contentSHA256Header sets the X-Amz-Content-Sha256 header value to +// ContentSHA256Header sets the X-Amz-Content-Sha256 header value to // the Payload hash stored in the context. -type contentSHA256Header struct{} +type ContentSHA256Header struct{} // AddContentSHA256HeaderMiddleware adds ContentSHA256Header to the // operation middleware stack func AddContentSHA256HeaderMiddleware(stack *middleware.Stack) error { - return stack.Build.Insert(&contentSHA256Header{}, computePayloadHashMiddlewareID, middleware.After) + return stack.Finalize.Insert(&ContentSHA256Header{}, computePayloadHashMiddlewareID, middleware.After) } // RemoveContentSHA256HeaderMiddleware removes contentSHA256Header middleware // from the operation middleware stack func RemoveContentSHA256HeaderMiddleware(stack *middleware.Stack) error { - _, err := stack.Build.Remove((*contentSHA256Header)(nil).ID()) + _, err := stack.Finalize.Remove((*ContentSHA256Header)(nil).ID()) return err } // ID returns the ContentSHA256HeaderMiddleware identifier -func (m *contentSHA256Header) ID() string { +func (m *ContentSHA256Header) ID() string { return "SigV4ContentSHA256Header" } -// HandleBuild sets the X-Amz-Content-Sha256 header value to the Payload hash +// HandleFinalize sets the X-Amz-Content-Sha256 header value to the Payload hash // stored in the context. -func (m *contentSHA256Header) HandleBuild( - ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler, +func (m *ContentSHA256Header) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, ) ( - out middleware.BuildOutput, metadata middleware.Metadata, err error, + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, ) { req, ok := in.Request.(*smithyhttp.Request) if !ok { @@ -245,25 +239,35 @@ func (m *contentSHA256Header) HandleBuild( } req.Header.Set(v4Internal.ContentSHAKey, GetPayloadHash(ctx)) - - return next.HandleBuild(ctx, in) + return next.HandleFinalize(ctx, in) } -// SignHTTPRequestMiddlewareOptions is the configuration options for the SignHTTPRequestMiddleware middleware. +// SignHTTPRequestMiddlewareOptions is the configuration options for +// [SignHTTPRequestMiddleware]. +// +// Deprecated: [SignHTTPRequestMiddleware] is deprecated. type SignHTTPRequestMiddlewareOptions struct { CredentialsProvider aws.CredentialsProvider Signer HTTPSigner LogSigning bool } -// SignHTTPRequestMiddleware is a `FinalizeMiddleware` implementation for SigV4 HTTP Signing +// SignHTTPRequestMiddleware is a `FinalizeMiddleware` implementation for SigV4 +// HTTP Signing. +// +// Deprecated: AWS service clients no longer use this middleware. Signing as an +// SDK operation is now performed through an internal per-service middleware +// which opaquely selects and uses the signer from the resolved auth scheme. type SignHTTPRequestMiddleware struct { credentialsProvider aws.CredentialsProvider signer HTTPSigner logSigning bool } -// NewSignHTTPRequestMiddleware constructs a SignHTTPRequestMiddleware using the given Signer for signing requests +// NewSignHTTPRequestMiddleware constructs a [SignHTTPRequestMiddleware] using +// the given [Signer] for signing requests. +// +// Deprecated: SignHTTPRequestMiddleware is deprecated. func NewSignHTTPRequestMiddleware(options SignHTTPRequestMiddlewareOptions) *SignHTTPRequestMiddleware { return &SignHTTPRequestMiddleware{ credentialsProvider: options.CredentialsProvider, @@ -272,12 +276,17 @@ func NewSignHTTPRequestMiddleware(options SignHTTPRequestMiddlewareOptions) *Sig } } -// ID is the SignHTTPRequestMiddleware identifier +// ID is the SignHTTPRequestMiddleware identifier. +// +// Deprecated: SignHTTPRequestMiddleware is deprecated. func (s *SignHTTPRequestMiddleware) ID() string { return "Signing" } -// HandleFinalize will take the provided input and sign the request using the SigV4 authentication scheme +// HandleFinalize will take the provided input and sign the request using the +// SigV4 authentication scheme. +// +// Deprecated: SignHTTPRequestMiddleware is deprecated. func (s *SignHTTPRequestMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( out middleware.FinalizeOutput, metadata middleware.Metadata, err error, ) { @@ -301,11 +310,23 @@ func (s *SignHTTPRequestMiddleware) HandleFinalize(ctx context.Context, in middl return out, metadata, &SigningError{Err: fmt.Errorf("failed to retrieve credentials: %w", err)} } - err = s.signer.SignHTTP(ctx, credentials, req.Request, payloadHash, signingName, signingRegion, sdk.NowTime(), + signerOptions := []func(o *SignerOptions){ func(o *SignerOptions) { o.Logger = middleware.GetLogger(ctx) o.LogSigning = s.logSigning + }, + } + + // existing DisableURIPathEscaping is equivalent in purpose + // to authentication scheme property DisableDoubleEncoding + disableDoubleEncoding, overridden := internalauth.GetDisableDoubleEncoding(ctx) + if overridden { + signerOptions = append(signerOptions, func(o *SignerOptions) { + o.DisableURIPathEscaping = disableDoubleEncoding }) + } + + err = s.signer.SignHTTP(ctx, credentials, req.Request, payloadHash, signingName, signingRegion, sdk.NowTime(), signerOptions...) if err != nil { return out, metadata, &SigningError{Err: fmt.Errorf("failed to sign http request, %w", err)} } @@ -315,21 +336,24 @@ func (s *SignHTTPRequestMiddleware) HandleFinalize(ctx context.Context, in middl return next.HandleFinalize(ctx, in) } -type streamingEventsPayload struct{} +// StreamingEventsPayload signs input event stream messages. +type StreamingEventsPayload struct{} // AddStreamingEventsPayload adds the streamingEventsPayload middleware to the stack. func AddStreamingEventsPayload(stack *middleware.Stack) error { - return stack.Build.Add(&streamingEventsPayload{}, middleware.After) + return stack.Finalize.Add(&StreamingEventsPayload{}, middleware.Before) } -func (s *streamingEventsPayload) ID() string { +// ID identifies the middleware. +func (s *StreamingEventsPayload) ID() string { return computePayloadHashMiddlewareID } -func (s *streamingEventsPayload) HandleBuild( - ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler, +// HandleFinalize marks the input stream to be signed with SigV4. +func (s *StreamingEventsPayload) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, ) ( - out middleware.BuildOutput, metadata middleware.Metadata, err error, + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, ) { contentSHA := GetPayloadHash(ctx) if len(contentSHA) == 0 { @@ -338,7 +362,7 @@ func (s *streamingEventsPayload) HandleBuild( ctx = SetPayloadHash(ctx, contentSHA) - return next.HandleBuild(ctx, in) + return next.HandleFinalize(ctx, in) } // GetSignedRequestSignature attempts to extract the signature of the request. @@ -371,13 +395,8 @@ func haveCredentialProvider(p aws.CredentialsProvider) bool { if p == nil { return false } - switch p.(type) { - case aws.AnonymousCredentials, - *aws.AnonymousCredentials: - return false - } - return true + return !aws.IsCredentialsProvider(p, (*aws.AnonymousCredentials)(nil)) } type payloadHashKey struct{} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/v4.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/v4.go index afd069c1f395..7ed91d5bac17 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/v4.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/v4.go @@ -1,48 +1,41 @@ -// Package v4 implements signing for AWS V4 signer +// Package v4 implements the AWS signature version 4 algorithm (commonly known +// as SigV4). // -// Provides request signing for request that need to be signed with -// AWS V4 Signatures. +// For more information about SigV4, see [Signing AWS API requests] in the IAM +// user guide. // -// # Standalone Signer +// While this implementation CAN work in an external context, it is developed +// primarily for SDK use and you may encounter fringe behaviors around header +// canonicalization. // -// Generally using the signer outside of the SDK should not require any additional +// # Pre-escaping a request URI // -// The signer does this by taking advantage of the URL.EscapedPath method. If your request URI requires +// AWS v4 signature validation requires that the canonical string's URI path +// component must be the escaped form of the HTTP request's path. +// +// The Go HTTP client will perform escaping automatically on the HTTP request. +// This may cause signature validation errors because the request differs from +// the URI path or query from which the signature was generated. // -// additional escaping you many need to use the URL.Opaque to define what the raw URI should be sent -// to the service as. +// Because of this, we recommend that you explicitly escape the request when +// using this signer outside of the SDK to prevent possible signature mismatch. +// This can be done by setting URL.Opaque on the request. The signer will +// prefer that value, falling back to the return of URL.EscapedPath if unset. // -// The signer will first check the URL.Opaque field, and use its value if set. -// The signer does require the URL.Opaque field to be set in the form of: +// When setting URL.Opaque you must do so in the form of: // // "///" // // // e.g. // "//example.com/some/path" // -// The leading "//" and hostname are required or the URL.Opaque escaping will -// not work correctly. +// The leading "//" and hostname are required or the escaping will not work +// correctly. // -// If URL.Opaque is not set the signer will fallback to the URL.EscapedPath() -// method and using the returned value. -// -// AWS v4 signature validation requires that the canonical string's URI path -// element must be the URI escaped form of the HTTP request's path. -// http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html +// The TestStandaloneSign unit test provides a complete example of using the +// signer outside of the SDK and pre-escaping the URI path. // -// The Go HTTP client will perform escaping automatically on the request. Some -// of these escaping may cause signature validation errors because the HTTP -// request differs from the URI path or query that the signature was generated. -// https://golang.org/pkg/net/url/#URL.EscapedPath -// -// Because of this, it is recommended that when using the signer outside of the -// SDK that explicitly escaping the request prior to being signed is preferable, -// and will help prevent signature validation errors. This can be done by setting -// the URL.Opaque or URL.RawPath. The SDK will use URL.Opaque first and then -// call URL.EscapedPath() if Opaque is not set. -// -// Test `TestStandaloneSign` provides a complete example of using the signer -// outside of the SDK and pre-escaping the URI path. +// [Signing AWS API requests]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html package v4 import ( @@ -68,6 +61,9 @@ import ( const ( signingAlgorithm = "AWS4-HMAC-SHA256" authorizationHeader = "Authorization" + + // Version of signing v4 + Version = "SigV4" ) // HTTPSigner is an interface to a SigV4 signer that can sign HTTP requests @@ -103,6 +99,11 @@ type SignerOptions struct { // This will enable logging of the canonical request, the string to sign, and for presigning the subsequent // presigned URL. LogSigning bool + + // Disables setting the session token on the request as part of signing + // through X-Amz-Security-Token. This is needed for variations of v4 that + // present the token elsewhere. + DisableSessionToken bool } // Signer applies AWS v4 signing to given request. Use this to sign requests @@ -136,6 +137,7 @@ type httpSigner struct { DisableHeaderHoisting bool DisableURIPathEscaping bool + DisableSessionToken bool } func (s *httpSigner) Build() (signedRequest, error) { @@ -284,6 +286,7 @@ func (s Signer) SignHTTP(ctx context.Context, credentials aws.Credentials, r *ht Time: v4Internal.NewSigningTime(signingTime.UTC()), DisableHeaderHoisting: options.DisableHeaderHoisting, DisableURIPathEscaping: options.DisableURIPathEscaping, + DisableSessionToken: options.DisableSessionToken, KeyDerivator: s.keyDerivator, } @@ -335,7 +338,7 @@ func (s Signer) SignHTTP(ctx context.Context, credentials aws.Credentials, r *ht // // expires := 20 * time.Minute // query := req.URL.Query() -// query.Set("X-Amz-Expires", strconv.FormatInt(int64(expires/time.Second), 10) +// query.Set("X-Amz-Expires", strconv.FormatInt(int64(expires/time.Second), 10)) // req.URL.RawQuery = query.Encode() // // This method does not modify the provided request. @@ -360,6 +363,7 @@ func (s *Signer) PresignHTTP( IsPreSign: true, DisableHeaderHoisting: options.DisableHeaderHoisting, DisableURIPathEscaping: options.DisableURIPathEscaping, + DisableSessionToken: options.DisableSessionToken, KeyDerivator: s.keyDerivator, } @@ -390,7 +394,18 @@ func (s *httpSigner) buildCredentialScope() string { func buildQuery(r v4Internal.Rule, header http.Header) (url.Values, http.Header) { query := url.Values{} unsignedHeaders := http.Header{} + + // A list of headers to be converted to lower case to mitigate a limitation from S3 + lowerCaseHeaders := map[string]string{ + "X-Amz-Expected-Bucket-Owner": "x-amz-expected-bucket-owner", // see #2508 + "X-Amz-Request-Payer": "x-amz-request-payer", // see #2764 + } + for k, h := range header { + if newKey, ok := lowerCaseHeaders[k]; ok { + k = newKey + } + if r.IsValid(k) { query[k] = h } else { @@ -502,7 +517,8 @@ func (s *httpSigner) setRequiredSigningFields(headers http.Header, query url.Val if s.IsPreSign { query.Set(v4Internal.AmzAlgorithmKey, signingAlgorithm) - if sessionToken := s.Credentials.SessionToken; len(sessionToken) > 0 { + sessionToken := s.Credentials.SessionToken + if !s.DisableSessionToken && len(sessionToken) > 0 { query.Set("X-Amz-Security-Token", sessionToken) } @@ -512,7 +528,7 @@ func (s *httpSigner) setRequiredSigningFields(headers http.Header, query url.Val headers[v4Internal.AmzDateKey] = append(headers[v4Internal.AmzDateKey][:0], amzDate) - if len(s.Credentials.SessionToken) > 0 { + if !s.DisableSessionToken && len(s.Credentials.SessionToken) > 0 { headers[v4Internal.AmzSecurityTokenKey] = append(headers[v4Internal.AmzSecurityTokenKey][:0], s.Credentials.SessionToken) } } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go index 26d90719b2d5..8d7c35a9ec81 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go @@ -1,13 +1,16 @@ package http import ( + "context" "crypto/tls" - "github.com/aws/aws-sdk-go-v2/aws" "net" "net/http" "reflect" "sync" "time" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/smithy-go/tracing" ) // Defaults for the HTTPTransportBuilder. @@ -179,7 +182,7 @@ func defaultHTTPTransport() *http.Transport { tr := &http.Transport{ Proxy: http.ProxyFromEnvironment, - DialContext: dialer.DialContext, + DialContext: traceDialContext(dialer.DialContext), TLSHandshakeTimeout: DefaultHTTPTransportTLSHandleshakeTimeout, MaxIdleConns: DefaultHTTPTransportMaxIdleConns, MaxIdleConnsPerHost: DefaultHTTPTransportMaxIdleConnsPerHost, @@ -194,6 +197,35 @@ func defaultHTTPTransport() *http.Transport { return tr } +type dialContext func(ctx context.Context, network, addr string) (net.Conn, error) + +func traceDialContext(dc dialContext) dialContext { + return func(ctx context.Context, network, addr string) (net.Conn, error) { + span, _ := tracing.GetSpan(ctx) + span.SetProperty("net.peer.name", addr) + + conn, err := dc(ctx, network, addr) + if err != nil { + return conn, err + } + + raddr := conn.RemoteAddr() + if raddr == nil { + return conn, err + } + + host, port, err := net.SplitHostPort(raddr.String()) + if err != nil { // don't blow up just because we couldn't parse + span.SetProperty("net.peer.addr", raddr.String()) + } else { + span.SetProperty("net.peer.host", host) + span.SetProperty("net.peer.port", port) + } + + return conn, err + } +} + // shallowCopyStruct creates a shallow copy of the passed in source struct, and // returns that copy of the same struct type. func shallowCopyStruct(src interface{}) interface{} { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/response_error_middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/response_error_middleware.go index 8fd14cecd231..a1ad20fe3418 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/response_error_middleware.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/response_error_middleware.go @@ -12,18 +12,20 @@ import ( func AddResponseErrorMiddleware(stack *middleware.Stack) error { // add error wrapper middleware before request id retriever middleware so that it can wrap the error response // returned by operation deserializers - return stack.Deserialize.Insert(&responseErrorWrapper{}, "RequestIDRetriever", middleware.Before) + return stack.Deserialize.Insert(&ResponseErrorWrapper{}, "RequestIDRetriever", middleware.Before) } -type responseErrorWrapper struct { +// ResponseErrorWrapper wraps operation errors with ResponseError. +type ResponseErrorWrapper struct { } // ID returns the middleware identifier -func (m *responseErrorWrapper) ID() string { +func (m *ResponseErrorWrapper) ID() string { return "ResponseErrorWrapper" } -func (m *responseErrorWrapper) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +// HandleDeserialize wraps the stack error with smithyhttp.ResponseError. +func (m *ResponseErrorWrapper) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/buildspec.yml b/vendor/github.com/aws/aws-sdk-go-v2/buildspec.yml deleted file mode 100644 index b11df5082a4a..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/buildspec.yml +++ /dev/null @@ -1,12 +0,0 @@ -version: 0.2 - -phases: - build: - commands: - - echo Build started on `date` - - export GOPATH=/go - - export SDK_CODEBUILD_ROOT=`pwd` - - make ci-test-no-generate - post_build: - commands: - - echo Build completed on `date` diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md index 5ba189c56869..9e4050464803 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md @@ -1,3 +1,486 @@ +# v1.27.36 (2024-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.35 (2024-09-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.34 (2024-09-16) + +* **Bug Fix**: Read `AWS_CONTAINER_CREDENTIALS_FULL_URI` env variable if set when reading a profile with `credential_source`. Also ensure `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` is always read before it + +# v1.27.33 (2024-09-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.32 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.31 (2024-08-26) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.30 (2024-08-23) + +* **Bug Fix**: Don't fail credentials unit tests if credentials are found on a file + +# v1.27.29 (2024-08-22) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.28 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.27 (2024-07-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.26 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.25 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.24 (2024-07-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.23 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.22 (2024-06-26) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.21 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.20 (2024-06-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.19 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.18 (2024-06-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.17 (2024-06-03) + +* **Documentation**: Add deprecation docs to global endpoint resolution interfaces. These APIs were previously deprecated with the introduction of service-specific endpoint resolution (EndpointResolverV2 and BaseEndpoint on service client options). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.16 (2024-05-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.15 (2024-05-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.14 (2024-05-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.13 (2024-05-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.12 (2024-05-08) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.11 (2024-04-05) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.10 (2024-03-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.9 (2024-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.8 (2024-03-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.7 (2024-03-07) + +* **Bug Fix**: Remove dependency on go-cmp. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.6 (2024-03-05) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.5 (2024-03-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.4 (2024-02-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.3 (2024-02-22) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.2 (2024-02-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.1 (2024-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.6 (2024-01-22) + +* **Bug Fix**: Remove invalid escaping of shared config values. All values in the shared config file will now be interpreted literally, save for fully-quoted strings which are unwrapped for legacy reasons. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.5 (2024-01-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.4 (2024-01-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.3 (2024-01-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.2 (2023-12-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.1 (2023-12-08) + +* **Bug Fix**: Correct loading of [services *] sections into shared config. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.0 (2023-12-07) + +* **Feature**: Support modeled request compression. The only algorithm supported at this time is `gzip`. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.12 (2023-12-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.11 (2023-12-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.10 (2023-11-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.9 (2023-11-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.8 (2023-11-28.3) + +* **Bug Fix**: Correct resolution of S3Express auth disable toggle. + +# v1.25.7 (2023-11-28.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.6 (2023-11-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.5 (2023-11-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.4 (2023-11-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.3 (2023-11-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.2 (2023-11-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.1 (2023-11-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.0 (2023-11-14) + +* **Feature**: Add support for dynamic auth token from file and EKS container host in absolute/relative URIs in the HTTP credential provider. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.0 (2023-11-13) + +* **Feature**: Replace the legacy config parser with a modern, less-strict implementation. Parsing failures within a section will now simply ignore the invalid line rather than silently drop the entire section. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.0 (2023-11-09.2) + +* **Feature**: BREAKFIX: In order to support subproperty parsing, invalid property definitions must not be ignored +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.22.3 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.22.2 (2023-11-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.22.1 (2023-11-06) + +* No change notes available for this release. + +# v1.22.0 (2023-11-02) + +* **Feature**: Add env and shared config settings for disabling IMDSv1 fallback. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.0 (2023-11-01) + +* **Feature**: Adds support for configured endpoints via environment variables and the AWS shared configuration file. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.19.1 (2023-10-24) + +* No change notes available for this release. + +# v1.19.0 (2023-10-16) + +* **Feature**: Modify logic of retrieving user agent appID from env config + +# v1.18.45 (2023-10-12) + +* **Bug Fix**: Fail to load config if an explicitly provided profile doesn't exist. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.44 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.43 (2023-10-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.42 (2023-09-22) + +* **Bug Fix**: Fixed a bug where merging `max_attempts` or `duration_seconds` fields across shared config files with invalid values would silently default them to 0. +* **Bug Fix**: Move type assertion of config values out of the parsing stage, which resolves an issue where the contents of a profile would silently be dropped with certain numeric formats. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.41 (2023-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.40 (2023-09-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.39 (2023-09-05) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.38 (2023-08-31) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.37 (2023-08-23) + +* No change notes available for this release. + +# v1.18.36 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.35 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.34 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.33 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.32 (2023-08-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.31 (2023-07-31) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.30 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.29 (2023-07-25) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.28 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.27 (2023-06-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.26 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.25 (2023-05-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.24 (2023-05-08) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.23 (2023-05-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.22 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.21 (2023-04-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.20 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.19 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.18 (2023-03-16) + +* **Bug Fix**: Allow RoleARN to be set as functional option on STS WebIdentityRoleOptions. Fixes aws/aws-sdk-go-v2#2015. + +# v1.18.17 (2023-03-14) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.16 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.15 (2023-02-22) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.14 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.13 (2023-02-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.12 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.11 (2023-02-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.10 (2023-01-25) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.9 (2023-01-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.8 (2023-01-05) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.7 (2022-12-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.6 (2022-12-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.5 (2022-12-15) + +* **Bug Fix**: Unify logic between shared config and in finding home directory +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.4 (2022-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.3 (2022-11-22) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.2 (2022-11-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.1 (2022-11-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.0 (2022-11-11) + +* **Announcement**: When using the SSOTokenProvider, a previous implementation incorrectly compensated for invalid SSOTokenProvider configurations in the shared profile. This has been fixed via PR #1903 and tracked in issue #1846 +* **Feature**: Adds token refresh support (via SSOTokenProvider) when using the SSOCredentialProvider +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.11 (2022-11-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.10 (2022-10-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.9 (2022-10-21) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.17.8 (2022-09-30) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/config.go b/vendor/github.com/aws/aws-sdk-go-v2/config/config.go index 5940f8e7eaef..d5226cb04374 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/config.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/config.go @@ -2,18 +2,11 @@ package config import ( "context" + "os" "github.com/aws/aws-sdk-go-v2/aws" ) -// defaultLoaders are a slice of functions that will read external configuration -// sources for configuration values. These values are read by the AWSConfigResolvers -// using interfaces to extract specific information from the external configuration. -var defaultLoaders = []loader{ - loadEnvConfig, - loadSharedConfigIgnoreNotExist, -} - // defaultAWSConfigResolvers are a slice of functions that will resolve external // configuration values into AWS configuration values. // @@ -76,6 +69,20 @@ var defaultAWSConfigResolvers = []awsConfigResolver{ // Sets the resolved bearer authentication token API clients will use for // httpBearerAuth authentication scheme. resolveBearerAuthToken, + + // Sets the sdk app ID if present in env var or shared config profile + resolveAppID, + + resolveBaseEndpoint, + + // Sets the DisableRequestCompression if present in env var or shared config profile + resolveDisableRequestCompression, + + // Sets the RequestMinCompressSizeBytes if present in env var or shared config profile + resolveRequestMinCompressSizeBytes, + + // Sets the AccountIDEndpointMode if present in env var or shared config profile + resolveAccountIDEndpointMode, } // A Config represents a generic configuration value or set of values. This type @@ -167,7 +174,7 @@ func (cs configs) ResolveConfig(f func(configs []interface{}) error) error { // or the custom data will be ignored by the resolvers and config loaders. // // cfg, err := config.LoadDefaultConfig( context.TODO(), -// WithSharedConfigProfile("test-profile"), +// config.WithSharedConfigProfile("test-profile"), // ) // if err != nil { // panic(fmt.Sprintf("failed loading config, %v", err)) @@ -187,7 +194,7 @@ func LoadDefaultConfig(ctx context.Context, optFns ...func(*LoadOptions) error) // assign Load Options to configs var cfgCpy = configs{options} - cfgCpy, err = cfgCpy.AppendFromLoaders(ctx, defaultLoaders) + cfgCpy, err = cfgCpy.AppendFromLoaders(ctx, resolveConfigLoaders(&options)) if err != nil { return aws.Config{}, err } @@ -199,3 +206,17 @@ func LoadDefaultConfig(ctx context.Context, optFns ...func(*LoadOptions) error) return cfg, nil } + +func resolveConfigLoaders(options *LoadOptions) []loader { + loaders := make([]loader, 2) + loaders[0] = loadEnvConfig + + // specification of a profile should cause a load failure if it doesn't exist + if os.Getenv(awsProfileEnvVar) != "" || options.SharedConfigProfile != "" { + loaders[1] = loadSharedConfig + } else { + loaders[1] = loadSharedConfigIgnoreNotExist + } + + return loaders +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/env_config.go b/vendor/github.com/aws/aws-sdk-go-v2/config/env_config.go index 18c8e0121b9d..3a06f1412a7c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/env_config.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/env_config.go @@ -12,6 +12,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/feature/ec2/imds" + smithyrequestcompression "github.com/aws/smithy-go/private/requestcompression" ) // CredentialsSourceName provides a name of the provider when config is @@ -57,7 +58,8 @@ const ( awsEc2MetadataServiceEndpointEnvVar = "AWS_EC2_METADATA_SERVICE_ENDPOINT" - awsEc2MetadataDisabled = "AWS_EC2_METADATA_DISABLED" + awsEc2MetadataDisabled = "AWS_EC2_METADATA_DISABLED" + awsEc2MetadataV1DisabledEnvVar = "AWS_EC2_METADATA_V1_DISABLED" awsS3DisableMultiRegionAccessPointEnvVar = "AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS" @@ -69,6 +71,18 @@ const ( awsRetryMaxAttempts = "AWS_MAX_ATTEMPTS" awsRetryMode = "AWS_RETRY_MODE" + awsSdkAppID = "AWS_SDK_UA_APP_ID" + + awsIgnoreConfiguredEndpoints = "AWS_IGNORE_CONFIGURED_ENDPOINT_URLS" + awsEndpointURL = "AWS_ENDPOINT_URL" + + awsDisableRequestCompression = "AWS_DISABLE_REQUEST_COMPRESSION" + awsRequestMinCompressionSizeBytes = "AWS_REQUEST_MIN_COMPRESSION_SIZE_BYTES" + + awsS3DisableExpressSessionAuthEnv = "AWS_S3_DISABLE_EXPRESS_SESSION_AUTH" + + awsAccountIDEnv = "AWS_ACCOUNT_ID" + awsAccountIDEndpointModeEnv = "AWS_ACCOUNT_ID_ENDPOINT_MODE" ) var ( @@ -205,6 +219,11 @@ type EnvConfig struct { // AWS_EC2_METADATA_DISABLED=true EC2IMDSClientEnableState imds.ClientEnableState + // Specifies if EC2 IMDSv1 fallback is disabled. + // + // AWS_EC2_METADATA_V1_DISABLED=true + EC2IMDSv1Disabled *bool + // Specifies the EC2 Instance Metadata Service default endpoint selection mode (IPv4 or IPv6) // // AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE=IPv6 @@ -248,6 +267,35 @@ type EnvConfig struct { // // aws_retry_mode=standard RetryMode aws.RetryMode + + // aws sdk app ID that can be added to user agent header string + AppID string + + // Flag used to disable configured endpoints. + IgnoreConfiguredEndpoints *bool + + // Value to contain configured endpoints to be propagated to + // corresponding endpoint resolution field. + BaseEndpoint string + + // determine if request compression is allowed, default to false + // retrieved from env var AWS_DISABLE_REQUEST_COMPRESSION + DisableRequestCompression *bool + + // inclusive threshold request body size to trigger compression, + // default to 10240 and must be within 0 and 10485760 bytes inclusive + // retrieved from env var AWS_REQUEST_MIN_COMPRESSION_SIZE_BYTES + RequestMinCompressSizeBytes *int64 + + // Whether S3Express auth is disabled. + // + // This will NOT prevent requests from being made to S3Express buckets, it + // will only bypass the modified endpoint routing and signing behaviors + // associated with the feature. + S3DisableExpressAuth *bool + + // Indicates whether account ID will be required/ignored in endpoint2.0 routing + AccountIDEndpointMode aws.AccountIDEndpointMode } // loadEnvConfig reads configuration values from the OS's environment variables. @@ -267,6 +315,7 @@ func NewEnvConfig() (EnvConfig, error) { setStringFromEnvVal(&creds.AccessKeyID, credAccessEnvKeys) setStringFromEnvVal(&creds.SecretAccessKey, credSecretEnvKeys) if creds.HasKeys() { + creds.AccountID = os.Getenv(awsAccountIDEnv) creds.SessionToken = os.Getenv(awsSessionTokenEnvVar) cfg.Credentials = creds } @@ -288,6 +337,15 @@ func NewEnvConfig() (EnvConfig, error) { cfg.RoleARN = os.Getenv(awsRoleARNEnvVar) cfg.RoleSessionName = os.Getenv(awsRoleSessionNameEnvVar) + cfg.AppID = os.Getenv(awsSdkAppID) + + if err := setBoolPtrFromEnvVal(&cfg.DisableRequestCompression, []string{awsDisableRequestCompression}); err != nil { + return cfg, err + } + if err := setInt64PtrFromEnvVal(&cfg.RequestMinCompressSizeBytes, []string{awsRequestMinCompressionSizeBytes}, smithyrequestcompression.MaxRequestMinCompressSizeBytes); err != nil { + return cfg, err + } + if err := setEndpointDiscoveryTypeFromEnvVal(&cfg.EnableEndpointDiscovery, []string{awsEnableEndpointDiscoveryEnvVar}); err != nil { return cfg, err } @@ -301,6 +359,9 @@ func NewEnvConfig() (EnvConfig, error) { return cfg, err } cfg.EC2IMDSEndpoint = os.Getenv(awsEc2MetadataServiceEndpointEnvVar) + if err := setBoolPtrFromEnvVal(&cfg.EC2IMDSv1Disabled, []string{awsEc2MetadataV1DisabledEnvVar}); err != nil { + return cfg, err + } if err := setBoolPtrFromEnvVal(&cfg.S3DisableMultiRegionAccessPoints, []string{awsS3DisableMultiRegionAccessPointEnvVar}); err != nil { return cfg, err @@ -325,6 +386,20 @@ func NewEnvConfig() (EnvConfig, error) { return cfg, err } + setStringFromEnvVal(&cfg.BaseEndpoint, []string{awsEndpointURL}) + + if err := setBoolPtrFromEnvVal(&cfg.IgnoreConfiguredEndpoints, []string{awsIgnoreConfiguredEndpoints}); err != nil { + return cfg, err + } + + if err := setBoolPtrFromEnvVal(&cfg.S3DisableExpressAuth, []string{awsS3DisableExpressSessionAuthEnv}); err != nil { + return cfg, err + } + + if err := setAIDEndPointModeFromEnvVal(&cfg.AccountIDEndpointMode, []string{awsAccountIDEndpointModeEnv}); err != nil { + return cfg, err + } + return cfg, nil } @@ -335,6 +410,28 @@ func (c EnvConfig) getDefaultsMode(ctx context.Context) (aws.DefaultsMode, bool, return c.DefaultsMode, true, nil } +func (c EnvConfig) getAppID(context.Context) (string, bool, error) { + return c.AppID, len(c.AppID) > 0, nil +} + +func (c EnvConfig) getDisableRequestCompression(context.Context) (bool, bool, error) { + if c.DisableRequestCompression == nil { + return false, false, nil + } + return *c.DisableRequestCompression, true, nil +} + +func (c EnvConfig) getRequestMinCompressSizeBytes(context.Context) (int64, bool, error) { + if c.RequestMinCompressSizeBytes == nil { + return 0, false, nil + } + return *c.RequestMinCompressSizeBytes, true, nil +} + +func (c EnvConfig) getAccountIDEndpointMode(context.Context) (aws.AccountIDEndpointMode, bool, error) { + return c.AccountIDEndpointMode, len(c.AccountIDEndpointMode) > 0, nil +} + // GetRetryMaxAttempts returns the value of AWS_MAX_ATTEMPTS if was specified, // and not 0. func (c EnvConfig) GetRetryMaxAttempts(ctx context.Context) (int, bool, error) { @@ -409,6 +506,28 @@ func setEC2IMDSEndpointMode(mode *imds.EndpointModeState, keys []string) error { return nil } +func setAIDEndPointModeFromEnvVal(m *aws.AccountIDEndpointMode, keys []string) error { + for _, k := range keys { + value := os.Getenv(k) + if len(value) == 0 { + continue + } + + switch value { + case "preferred": + *m = aws.AccountIDEndpointModePreferred + case "required": + *m = aws.AccountIDEndpointModeRequired + case "disabled": + *m = aws.AccountIDEndpointModeDisabled + default: + return fmt.Errorf("invalid value for environment variable, %s=%s, must be preferred/required/disabled", k, value) + } + break + } + return nil +} + // GetRegion returns the AWS Region if set in the environment. Returns an empty // string if not set. func (c EnvConfig) getRegion(ctx context.Context) (string, bool, error) { @@ -472,6 +591,34 @@ func (c EnvConfig) getCustomCABundle(context.Context) (io.Reader, bool, error) { return bytes.NewReader(b), true, nil } +// GetIgnoreConfiguredEndpoints is used in knowing when to disable configured +// endpoints feature. +func (c EnvConfig) GetIgnoreConfiguredEndpoints(context.Context) (bool, bool, error) { + if c.IgnoreConfiguredEndpoints == nil { + return false, false, nil + } + + return *c.IgnoreConfiguredEndpoints, true, nil +} + +func (c EnvConfig) getBaseEndpoint(context.Context) (string, bool, error) { + return c.BaseEndpoint, len(c.BaseEndpoint) > 0, nil +} + +// GetServiceBaseEndpoint is used to retrieve a normalized SDK ID for use +// with configured endpoints. +func (c EnvConfig) GetServiceBaseEndpoint(ctx context.Context, sdkID string) (string, bool, error) { + if endpt := os.Getenv(fmt.Sprintf("%s_%s", awsEndpointURL, normalizeEnv(sdkID))); endpt != "" { + return endpt, true, nil + } + return "", false, nil +} + +func normalizeEnv(sdkID string) string { + upper := strings.ToUpper(sdkID) + return strings.ReplaceAll(upper, " ", "_") +} + // GetS3UseARNRegion returns whether to allow ARNs to direct the region // the S3 client's requests are sent to. func (c EnvConfig) GetS3UseARNRegion(ctx context.Context) (value, ok bool, err error) { @@ -482,9 +629,9 @@ func (c EnvConfig) GetS3UseARNRegion(ctx context.Context) (value, ok bool, err e return *c.S3UseARNRegion, true, nil } -// GetS3DisableMultRegionAccessPoints returns whether to disable multi-region access point +// GetS3DisableMultiRegionAccessPoints returns whether to disable multi-region access point // support for the S3 client. -func (c EnvConfig) GetS3DisableMultRegionAccessPoints(ctx context.Context) (value, ok bool, err error) { +func (c EnvConfig) GetS3DisableMultiRegionAccessPoints(ctx context.Context) (value, ok bool, err error) { if c.S3DisableMultiRegionAccessPoints == nil { return false, false, nil } @@ -563,6 +710,30 @@ func setBoolPtrFromEnvVal(dst **bool, keys []string) error { return nil } +func setInt64PtrFromEnvVal(dst **int64, keys []string, max int64) error { + for _, k := range keys { + value := os.Getenv(k) + if len(value) == 0 { + continue + } + + v, err := strconv.ParseInt(value, 10, 64) + if err != nil { + return fmt.Errorf("invalid value for env var, %s=%s, need int64", k, value) + } else if v < 0 || v > max { + return fmt.Errorf("invalid range for env var min request compression size bytes %q, must be within 0 and 10485760 inclusively", v) + } + if *dst == nil { + *dst = new(int64) + } + + **dst = v + break + } + + return nil +} + func setEndpointDiscoveryTypeFromEnvVal(dst *aws.EndpointDiscoveryEnableState, keys []string) error { for _, k := range keys { value := os.Getenv(k) @@ -663,3 +834,23 @@ func (c EnvConfig) GetEC2IMDSEndpoint() (string, bool, error) { return c.EC2IMDSEndpoint, true, nil } + +// GetEC2IMDSV1FallbackDisabled implements an EC2IMDSV1FallbackDisabled option +// resolver interface. +func (c EnvConfig) GetEC2IMDSV1FallbackDisabled() (bool, bool) { + if c.EC2IMDSv1Disabled == nil { + return false, false + } + + return *c.EC2IMDSv1Disabled, true +} + +// GetS3DisableExpressAuth returns the configured value for +// [EnvConfig.S3DisableExpressAuth]. +func (c EnvConfig) GetS3DisableExpressAuth() (value, ok bool) { + if c.S3DisableExpressAuth == nil { + return false, false + } + + return *c.S3DisableExpressAuth, true +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go index 0f31e03b20f7..d822849850c9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go @@ -3,4 +3,4 @@ package config // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.17.8" +const goModuleVersion = "1.27.36" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/load_options.go b/vendor/github.com/aws/aws-sdk-go-v2/config/load_options.go index 625147e97070..5f643977b009 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/load_options.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/load_options.go @@ -172,6 +172,10 @@ type LoadOptions struct { // the region, the client's requests are sent to. S3UseARNRegion *bool + // S3DisableMultiRegionAccessPoints specifies if the S3 service should disable + // the S3 Multi-Region access points feature. + S3DisableMultiRegionAccessPoints *bool + // EnableEndpointDiscovery specifies if endpoint discovery is enable for // the client. EnableEndpointDiscovery aws.EndpointDiscoveryEnableState @@ -199,6 +203,20 @@ type LoadOptions struct { // Specifies the SDK configuration mode for defaults. DefaultsModeOptions DefaultsModeOptions + + // The sdk app ID retrieved from env var or shared config to be added to request user agent header + AppID string + + // Specifies whether an operation request could be compressed + DisableRequestCompression *bool + + // The inclusive min bytes of a request body that could be compressed + RequestMinCompressSizeBytes *int64 + + // Whether S3 Express auth is disabled. + S3DisableExpressAuth *bool + + AccountIDEndpointMode aws.AccountIDEndpointMode } func (o LoadOptions) getDefaultsMode(ctx context.Context) (aws.DefaultsMode, bool, error) { @@ -241,6 +259,31 @@ func (o LoadOptions) getRegion(ctx context.Context) (string, bool, error) { return o.Region, true, nil } +// getAppID returns AppID from config's LoadOptions +func (o LoadOptions) getAppID(ctx context.Context) (string, bool, error) { + return o.AppID, len(o.AppID) > 0, nil +} + +// getDisableRequestCompression returns DisableRequestCompression from config's LoadOptions +func (o LoadOptions) getDisableRequestCompression(ctx context.Context) (bool, bool, error) { + if o.DisableRequestCompression == nil { + return false, false, nil + } + return *o.DisableRequestCompression, true, nil +} + +// getRequestMinCompressSizeBytes returns RequestMinCompressSizeBytes from config's LoadOptions +func (o LoadOptions) getRequestMinCompressSizeBytes(ctx context.Context) (int64, bool, error) { + if o.RequestMinCompressSizeBytes == nil { + return 0, false, nil + } + return *o.RequestMinCompressSizeBytes, true, nil +} + +func (o LoadOptions) getAccountIDEndpointMode(ctx context.Context) (aws.AccountIDEndpointMode, bool, error) { + return o.AccountIDEndpointMode, len(o.AccountIDEndpointMode) > 0, nil +} + // WithRegion is a helper function to construct functional options // that sets Region on config's LoadOptions. Setting the region to // an empty string, will result in the region value being ignored. @@ -253,6 +296,50 @@ func WithRegion(v string) LoadOptionsFunc { } } +// WithAppID is a helper function to construct functional options +// that sets AppID on config's LoadOptions. +func WithAppID(ID string) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.AppID = ID + return nil + } +} + +// WithDisableRequestCompression is a helper function to construct functional options +// that sets DisableRequestCompression on config's LoadOptions. +func WithDisableRequestCompression(DisableRequestCompression *bool) LoadOptionsFunc { + return func(o *LoadOptions) error { + if DisableRequestCompression == nil { + return nil + } + o.DisableRequestCompression = DisableRequestCompression + return nil + } +} + +// WithRequestMinCompressSizeBytes is a helper function to construct functional options +// that sets RequestMinCompressSizeBytes on config's LoadOptions. +func WithRequestMinCompressSizeBytes(RequestMinCompressSizeBytes *int64) LoadOptionsFunc { + return func(o *LoadOptions) error { + if RequestMinCompressSizeBytes == nil { + return nil + } + o.RequestMinCompressSizeBytes = RequestMinCompressSizeBytes + return nil + } +} + +// WithAccountIDEndpointMode is a helper function to construct functional options +// that sets AccountIDEndpointMode on config's LoadOptions +func WithAccountIDEndpointMode(m aws.AccountIDEndpointMode) LoadOptionsFunc { + return func(o *LoadOptions) error { + if m != "" { + o.AccountIDEndpointMode = m + } + return nil + } +} + // getDefaultRegion returns DefaultRegion from config's LoadOptions func (o LoadOptions) getDefaultRegion(ctx context.Context) (string, bool, error) { if len(o.DefaultRegion) == 0 { @@ -754,7 +841,14 @@ func (o LoadOptions) getEndpointResolver(ctx context.Context) (aws.EndpointResol // the EndpointResolver value is ignored. If multiple WithEndpointResolver calls // are made, the last call overrides the previous call values. // -// Deprecated: See WithEndpointResolverWithOptions +// Deprecated: The global endpoint resolution interface is deprecated. The API +// for endpoint resolution is now unique to each service and is set via the +// EndpointResolverV2 field on service client options. Use of +// WithEndpointResolver or WithEndpointResolverWithOptions will prevent you +// from using any endpoint-related service features released after the +// introduction of EndpointResolverV2. You may also encounter broken or +// unexpected behavior when using the old global interface with services that +// use many endpoint-related customizations such as S3. func WithEndpointResolver(v aws.EndpointResolver) LoadOptionsFunc { return func(o *LoadOptions) error { o.EndpointResolver = v @@ -774,6 +868,9 @@ func (o LoadOptions) getEndpointResolverWithOptions(ctx context.Context) (aws.En // that sets the EndpointResolverWithOptions on LoadOptions. If the EndpointResolverWithOptions is set to nil, // the EndpointResolver value is ignored. If multiple WithEndpointResolver calls // are made, the last call overrides the previous call values. +// +// Deprecated: The global endpoint resolution interface is deprecated. See +// deprecation docs on [WithEndpointResolver]. func WithEndpointResolverWithOptions(v aws.EndpointResolverWithOptions) LoadOptionsFunc { return func(o *LoadOptions) error { o.EndpointResolverWithOptions = v @@ -859,6 +956,26 @@ func WithS3UseARNRegion(v bool) LoadOptionsFunc { } } +// GetS3DisableMultiRegionAccessPoints returns whether to disable +// the S3 multi-region access points feature. +func (o LoadOptions) GetS3DisableMultiRegionAccessPoints(ctx context.Context) (v bool, found bool, err error) { + if o.S3DisableMultiRegionAccessPoints == nil { + return false, false, nil + } + return *o.S3DisableMultiRegionAccessPoints, true, nil +} + +// WithS3DisableMultiRegionAccessPoints is a helper function to construct functional options +// that can be used to set S3DisableMultiRegionAccessPoints on LoadOptions. +// If multiple WithS3DisableMultiRegionAccessPoints calls are made, the last call overrides +// the previous call values. +func WithS3DisableMultiRegionAccessPoints(v bool) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.S3DisableMultiRegionAccessPoints = &v + return nil + } +} + // GetEnableEndpointDiscovery returns if the EnableEndpointDiscovery flag is set. func (o LoadOptions) GetEnableEndpointDiscovery(ctx context.Context) (value aws.EndpointDiscoveryEnableState, ok bool, err error) { if o.EnableEndpointDiscovery == aws.EndpointDiscoveryUnset { @@ -1003,3 +1120,22 @@ func WithDefaultsMode(mode aws.DefaultsMode, optFns ...func(options *DefaultsMod return nil } } + +// GetS3DisableExpressAuth returns the configured value for +// [EnvConfig.S3DisableExpressAuth]. +func (o LoadOptions) GetS3DisableExpressAuth() (value, ok bool) { + if o.S3DisableExpressAuth == nil { + return false, false + } + + return *o.S3DisableExpressAuth, true +} + +// WithS3DisableExpressAuth sets [LoadOptions.S3DisableExpressAuth] +// to the value provided. +func WithS3DisableExpressAuth(v bool) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.S3DisableExpressAuth = &v + return nil + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/provider.go b/vendor/github.com/aws/aws-sdk-go-v2/config/provider.go index 6f1ab8cd14bb..043781f1f772 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/provider.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/provider.go @@ -122,6 +122,126 @@ func getRegion(ctx context.Context, configs configs) (value string, found bool, return } +// IgnoreConfiguredEndpointsProvider is needed to search for all providers +// that provide a flag to disable configured endpoints. +type IgnoreConfiguredEndpointsProvider interface { + GetIgnoreConfiguredEndpoints(ctx context.Context) (bool, bool, error) +} + +// GetIgnoreConfiguredEndpoints is used in knowing when to disable configured +// endpoints feature. +func GetIgnoreConfiguredEndpoints(ctx context.Context, configs []interface{}) (value bool, found bool, err error) { + for _, cfg := range configs { + if p, ok := cfg.(IgnoreConfiguredEndpointsProvider); ok { + value, found, err = p.GetIgnoreConfiguredEndpoints(ctx) + if err != nil || found { + break + } + } + } + return +} + +type baseEndpointProvider interface { + getBaseEndpoint(ctx context.Context) (string, bool, error) +} + +func getBaseEndpoint(ctx context.Context, configs configs) (value string, found bool, err error) { + for _, cfg := range configs { + if p, ok := cfg.(baseEndpointProvider); ok { + value, found, err = p.getBaseEndpoint(ctx) + if err != nil || found { + break + } + } + } + return +} + +type servicesObjectProvider interface { + getServicesObject(ctx context.Context) (map[string]map[string]string, bool, error) +} + +func getServicesObject(ctx context.Context, configs configs) (value map[string]map[string]string, found bool, err error) { + for _, cfg := range configs { + if p, ok := cfg.(servicesObjectProvider); ok { + value, found, err = p.getServicesObject(ctx) + if err != nil || found { + break + } + } + } + return +} + +// appIDProvider provides access to the sdk app ID value +type appIDProvider interface { + getAppID(ctx context.Context) (string, bool, error) +} + +func getAppID(ctx context.Context, configs configs) (value string, found bool, err error) { + for _, cfg := range configs { + if p, ok := cfg.(appIDProvider); ok { + value, found, err = p.getAppID(ctx) + if err != nil || found { + break + } + } + } + return +} + +// disableRequestCompressionProvider provides access to the DisableRequestCompression +type disableRequestCompressionProvider interface { + getDisableRequestCompression(context.Context) (bool, bool, error) +} + +func getDisableRequestCompression(ctx context.Context, configs configs) (value bool, found bool, err error) { + for _, cfg := range configs { + if p, ok := cfg.(disableRequestCompressionProvider); ok { + value, found, err = p.getDisableRequestCompression(ctx) + if err != nil || found { + break + } + } + } + return +} + +// requestMinCompressSizeBytesProvider provides access to the MinCompressSizeBytes +type requestMinCompressSizeBytesProvider interface { + getRequestMinCompressSizeBytes(context.Context) (int64, bool, error) +} + +func getRequestMinCompressSizeBytes(ctx context.Context, configs configs) (value int64, found bool, err error) { + for _, cfg := range configs { + if p, ok := cfg.(requestMinCompressSizeBytesProvider); ok { + value, found, err = p.getRequestMinCompressSizeBytes(ctx) + if err != nil || found { + break + } + } + } + return +} + +// accountIDEndpointModeProvider provides access to the AccountIDEndpointMode +type accountIDEndpointModeProvider interface { + getAccountIDEndpointMode(context.Context) (aws.AccountIDEndpointMode, bool, error) +} + +func getAccountIDEndpointMode(ctx context.Context, configs configs) (value aws.AccountIDEndpointMode, found bool, err error) { + for _, cfg := range configs { + if p, ok := cfg.(accountIDEndpointModeProvider); ok { + value, found, err = p.getAccountIDEndpointMode(ctx) + if err != nil || found { + break + } + } + } + return +} + // ec2IMDSRegionProvider provides access to the ec2 imds region // configuration value type ec2IMDSRegionProvider interface { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/resolve.go b/vendor/github.com/aws/aws-sdk-go-v2/config/resolve.go index 4428ba49c203..41009c7da06c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/resolve.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/resolve.go @@ -27,7 +27,6 @@ func resolveDefaultAWSConfig(ctx context.Context, cfg *aws.Config, cfgs configs) } *cfg = aws.Config{ - Credentials: aws.AnonymousCredentials{}, Logger: logging.NewStandardLogger(os.Stderr), ConfigSources: sources, } @@ -106,6 +105,83 @@ func resolveRegion(ctx context.Context, cfg *aws.Config, configs configs) error return nil } +func resolveBaseEndpoint(ctx context.Context, cfg *aws.Config, configs configs) error { + var downcastCfgSources []interface{} + for _, cs := range configs { + downcastCfgSources = append(downcastCfgSources, interface{}(cs)) + } + + if val, found, err := GetIgnoreConfiguredEndpoints(ctx, downcastCfgSources); found && val && err == nil { + cfg.BaseEndpoint = nil + return nil + } + + v, found, err := getBaseEndpoint(ctx, configs) + if err != nil { + return err + } + + if !found { + return nil + } + cfg.BaseEndpoint = aws.String(v) + return nil +} + +// resolveAppID extracts the sdk app ID from the configs slice's SharedConfig or env var +func resolveAppID(ctx context.Context, cfg *aws.Config, configs configs) error { + ID, _, err := getAppID(ctx, configs) + if err != nil { + return err + } + + cfg.AppID = ID + return nil +} + +// resolveDisableRequestCompression extracts the DisableRequestCompression from the configs slice's +// SharedConfig or EnvConfig +func resolveDisableRequestCompression(ctx context.Context, cfg *aws.Config, configs configs) error { + disable, _, err := getDisableRequestCompression(ctx, configs) + if err != nil { + return err + } + + cfg.DisableRequestCompression = disable + return nil +} + +// resolveRequestMinCompressSizeBytes extracts the RequestMinCompressSizeBytes from the configs slice's +// SharedConfig or EnvConfig +func resolveRequestMinCompressSizeBytes(ctx context.Context, cfg *aws.Config, configs configs) error { + minBytes, found, err := getRequestMinCompressSizeBytes(ctx, configs) + if err != nil { + return err + } + // must set a default min size 10240 if not configured + if !found { + minBytes = 10240 + } + cfg.RequestMinCompressSizeBytes = minBytes + return nil +} + +// resolveAccountIDEndpointMode extracts the AccountIDEndpointMode from the configs slice's +// SharedConfig or EnvConfig +func resolveAccountIDEndpointMode(ctx context.Context, cfg *aws.Config, configs configs) error { + m, found, err := getAccountIDEndpointMode(ctx, configs) + if err != nil { + return err + } + + if !found { + m = aws.AccountIDEndpointModePreferred + } + + cfg.AccountIDEndpointMode = m + return nil +} + // resolveDefaultRegion extracts the first instance of a default region and sets `aws.Config.Region` to the default // region if region had not been resolved from other sources. func resolveDefaultRegion(ctx context.Context, cfg *aws.Config, configs configs) error { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/resolve_bearer_token.go b/vendor/github.com/aws/aws-sdk-go-v2/config/resolve_bearer_token.go index ae5fb27bd7fd..a8ebb3c0a390 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/resolve_bearer_token.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/resolve_bearer_token.go @@ -54,20 +54,9 @@ func resolveBearerAuthTokenProviderChain(ctx context.Context, cfg *aws.Config, c var provider smithybearer.TokenProvider - if sharedConfig.SSOSession != nil || (sharedConfig.SSORegion != "" && sharedConfig.SSOStartURL != "") { - ssoSession := sharedConfig.SSOSession - if ssoSession == nil { - // Fallback to legacy SSO session config parameters, if the - // sso-session section wasn't used. - ssoSession = &SSOSession{ - Name: sharedConfig.SSOStartURL, - SSORegion: sharedConfig.SSORegion, - SSOStartURL: sharedConfig.SSOStartURL, - } - } - + if sharedConfig.SSOSession != nil { provider, err = resolveBearerAuthSSOTokenProvider( - ctx, cfg, ssoSession, configs) + ctx, cfg, sharedConfig.SSOSession, configs) } if err == nil && provider != nil { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/resolve_credentials.go b/vendor/github.com/aws/aws-sdk-go-v2/config/resolve_credentials.go index 28705f47fb06..7ae252e2e876 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/resolve_credentials.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/resolve_credentials.go @@ -3,7 +3,10 @@ package config import ( "context" "fmt" + "io/ioutil" + "net" "net/url" + "os" "time" "github.com/aws/aws-sdk-go-v2/aws" @@ -15,16 +18,39 @@ import ( "github.com/aws/aws-sdk-go-v2/credentials/stscreds" "github.com/aws/aws-sdk-go-v2/feature/ec2/imds" "github.com/aws/aws-sdk-go-v2/service/sso" + "github.com/aws/aws-sdk-go-v2/service/ssooidc" "github.com/aws/aws-sdk-go-v2/service/sts" ) const ( // valid credential source values - credSourceEc2Metadata = "Ec2InstanceMetadata" - credSourceEnvironment = "Environment" - credSourceECSContainer = "EcsContainer" + credSourceEc2Metadata = "Ec2InstanceMetadata" + credSourceEnvironment = "Environment" + credSourceECSContainer = "EcsContainer" + httpProviderAuthFileEnvVar = "AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE" ) +// direct representation of the IPv4 address for the ECS container +// "169.254.170.2" +var ecsContainerIPv4 net.IP = []byte{ + 169, 254, 170, 2, +} + +// direct representation of the IPv4 address for the EKS container +// "169.254.170.23" +var eksContainerIPv4 net.IP = []byte{ + 169, 254, 170, 23, +} + +// direct representation of the IPv6 address for the EKS container +// "fd00:ec2::23" +var eksContainerIPv6 net.IP = []byte{ + 0xFD, 0, 0xE, 0xC2, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0x23, +} + var ( ecsContainerEndpoint = "http://169.254.170.2" // not constant to allow for swapping during unit-testing ) @@ -136,12 +162,12 @@ func resolveCredsFromProfile(ctx context.Context, cfg *aws.Config, envConfig *En // Get credentials from CredentialProcess err = processCredentials(ctx, cfg, sharedConfig, configs) - case len(envConfig.ContainerCredentialsEndpoint) != 0: - err = resolveLocalHTTPCredProvider(ctx, cfg, envConfig.ContainerCredentialsEndpoint, envConfig.ContainerAuthorizationToken, configs) - case len(envConfig.ContainerCredentialsRelativePath) != 0: err = resolveHTTPCredProvider(ctx, cfg, ecsContainerURI(envConfig.ContainerCredentialsRelativePath), envConfig.ContainerAuthorizationToken, configs) + case len(envConfig.ContainerCredentialsEndpoint) != 0: + err = resolveLocalHTTPCredProvider(ctx, cfg, envConfig.ContainerCredentialsEndpoint, envConfig.ContainerAuthorizationToken, configs) + default: err = resolveEC2RoleCredentials(ctx, cfg, configs) } @@ -171,7 +197,30 @@ func resolveSSOCredentials(ctx context.Context, cfg *aws.Config, sharedConfig *S } cfgCopy := cfg.Copy() - cfgCopy.Region = sharedConfig.SSORegion + + if sharedConfig.SSOSession != nil { + ssoTokenProviderOptionsFn, found, err := getSSOTokenProviderOptions(ctx, configs) + if err != nil { + return fmt.Errorf("failed to get SSOTokenProviderOptions from config sources, %w", err) + } + var optFns []func(*ssocreds.SSOTokenProviderOptions) + if found { + optFns = append(optFns, ssoTokenProviderOptionsFn) + } + cfgCopy.Region = sharedConfig.SSOSession.SSORegion + cachedPath, err := ssocreds.StandardCachedTokenFilepath(sharedConfig.SSOSession.Name) + if err != nil { + return err + } + oidcClient := ssooidc.NewFromConfig(cfgCopy) + tokenProvider := ssocreds.NewSSOTokenProvider(oidcClient, cachedPath, optFns...) + options = append(options, func(o *ssocreds.Options) { + o.SSOTokenProvider = tokenProvider + o.CachedTokenFilepath = cachedPath + }) + } else { + cfgCopy.Region = sharedConfig.SSORegion + } cfg.Credentials = ssocreds.New(sso.NewFromConfig(cfgCopy), sharedConfig.SSOAccountID, sharedConfig.SSORoleName, sharedConfig.SSOStartURL, options...) @@ -198,6 +247,36 @@ func processCredentials(ctx context.Context, cfg *aws.Config, sharedConfig *Shar return nil } +// isAllowedHost allows host to be loopback or known ECS/EKS container IPs +// +// host can either be an IP address OR an unresolved hostname - resolution will +// be automatically performed in the latter case +func isAllowedHost(host string) (bool, error) { + if ip := net.ParseIP(host); ip != nil { + return isIPAllowed(ip), nil + } + + addrs, err := lookupHostFn(host) + if err != nil { + return false, err + } + + for _, addr := range addrs { + if ip := net.ParseIP(addr); ip == nil || !isIPAllowed(ip) { + return false, nil + } + } + + return true, nil +} + +func isIPAllowed(ip net.IP) bool { + return ip.IsLoopback() || + ip.Equal(ecsContainerIPv4) || + ip.Equal(eksContainerIPv4) || + ip.Equal(eksContainerIPv6) +} + func resolveLocalHTTPCredProvider(ctx context.Context, cfg *aws.Config, endpointURL, authToken string, configs configs) error { var resolveErr error @@ -208,10 +287,12 @@ func resolveLocalHTTPCredProvider(ctx context.Context, cfg *aws.Config, endpoint host := parsed.Hostname() if len(host) == 0 { resolveErr = fmt.Errorf("unable to parse host from local HTTP cred provider URL") - } else if isLoopback, loopbackErr := isLoopbackHost(host); loopbackErr != nil { - resolveErr = fmt.Errorf("failed to resolve host %q, %v", host, loopbackErr) - } else if !isLoopback { - resolveErr = fmt.Errorf("invalid endpoint host, %q, only loopback hosts are allowed", host) + } else if parsed.Scheme == "http" { + if isAllowedHost, allowHostErr := isAllowedHost(host); allowHostErr != nil { + resolveErr = fmt.Errorf("failed to resolve host %q, %v", host, allowHostErr) + } else if !isAllowedHost { + resolveErr = fmt.Errorf("invalid endpoint host, %q, only loopback/ecs/eks hosts are allowed", host) + } } } @@ -228,6 +309,16 @@ func resolveHTTPCredProvider(ctx context.Context, cfg *aws.Config, url, authToke if len(authToken) != 0 { options.AuthorizationToken = authToken } + if authFilePath := os.Getenv(httpProviderAuthFileEnvVar); authFilePath != "" { + options.AuthorizationTokenProvider = endpointcreds.TokenProviderFunc(func() (string, error) { + var contents []byte + var err error + if contents, err = ioutil.ReadFile(authFilePath); err != nil { + return "", fmt.Errorf("failed to read authorization token from %v: %v", authFilePath, err) + } + return string(contents), nil + }) + } options.APIOptions = cfg.APIOptions if cfg.Retryer != nil { options.Retryer = cfg.Retryer() @@ -264,10 +355,13 @@ func resolveCredsFromSource(ctx context.Context, cfg *aws.Config, envConfig *Env cfg.Credentials = credentials.StaticCredentialsProvider{Value: envConfig.Credentials} case credSourceECSContainer: - if len(envConfig.ContainerCredentialsRelativePath) == 0 { - return fmt.Errorf("EcsContainer was specified as the credential_source, but 'AWS_CONTAINER_CREDENTIALS_RELATIVE_URI' was not set") + if len(envConfig.ContainerCredentialsRelativePath) != 0 { + return resolveHTTPCredProvider(ctx, cfg, ecsContainerURI(envConfig.ContainerCredentialsRelativePath), envConfig.ContainerAuthorizationToken, configs) + } + if len(envConfig.ContainerCredentialsEndpoint) != 0 { + return resolveLocalHTTPCredProvider(ctx, cfg, envConfig.ContainerCredentialsEndpoint, envConfig.ContainerAuthorizationToken, configs) } - return resolveHTTPCredProvider(ctx, cfg, ecsContainerURI(envConfig.ContainerCredentialsRelativePath), envConfig.ContainerAuthorizationToken, configs) + return fmt.Errorf("EcsContainer was specified as the credential_source, but neither 'AWS_CONTAINER_CREDENTIALS_RELATIVE_URI' or AWS_CONTAINER_CREDENTIALS_FULL_URI' was set") default: return fmt.Errorf("credential_source values must be EcsContainer, Ec2InstanceMetadata, or Environment") @@ -360,10 +454,6 @@ func assumeWebIdentity(ctx context.Context, cfg *aws.Config, filepath string, ro return fmt.Errorf("token file path is not set") } - if len(roleARN) == 0 { - return fmt.Errorf("role ARN is not set") - } - optFns := []func(*stscreds.WebIdentityRoleOptions){ func(options *stscreds.WebIdentityRoleOptions) { options.RoleSessionName = sessionName @@ -374,11 +464,29 @@ func assumeWebIdentity(ctx context.Context, cfg *aws.Config, filepath string, ro if err != nil { return err } + if found { optFns = append(optFns, optFn) } - provider := stscreds.NewWebIdentityRoleProvider(sts.NewFromConfig(*cfg), roleARN, stscreds.IdentityTokenFile(filepath), optFns...) + opts := stscreds.WebIdentityRoleOptions{ + RoleARN: roleARN, + } + + for _, fn := range optFns { + fn(&opts) + } + + if len(opts.RoleARN) == 0 { + return fmt.Errorf("role ARN is not set") + } + + client := opts.Client + if client == nil { + client = sts.NewFromConfig(*cfg) + } + + provider := stscreds.NewWebIdentityRoleProvider(client, roleARN, stscreds.IdentityTokenFile(filepath), optFns...) cfg.Credentials = provider diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/shared_config.go b/vendor/github.com/aws/aws-sdk-go-v2/config/shared_config.go index 48aa7a8cf0b1..d7a2b5307eab 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/shared_config.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/shared_config.go @@ -8,7 +8,6 @@ import ( "io" "io/ioutil" "os" - "os/user" "path/filepath" "strings" "time" @@ -16,7 +15,9 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/feature/ec2/imds" "github.com/aws/aws-sdk-go-v2/internal/ini" + "github.com/aws/aws-sdk-go-v2/internal/shareddefaults" "github.com/aws/smithy-go/logging" + smithyrequestcompression "github.com/aws/smithy-go/private/requestcompression" ) const ( @@ -28,6 +29,10 @@ const ( // the shared config file, not the credentials file. ssoSectionPrefix = `sso-session ` + // Prefix for services section. It is referenced in profile via the services + // parameter to configure clients for service-specific parameters. + servicesPrefix = `services ` + // string equivalent for boolean endpointDiscoveryDisabled = `false` endpointDiscoveryEnabled = `true` @@ -75,6 +80,8 @@ const ( ec2MetadataServiceEndpointKey = "ec2_metadata_service_endpoint" + ec2MetadataV1DisabledKey = "ec2_metadata_v1_disabled" + // Use DualStack Endpoint Resolution useDualStackEndpoint = "use_dualstack_endpoint" @@ -95,6 +102,22 @@ const ( retryModeKey = "retry_mode" caBundleKey = "ca_bundle" + + sdkAppID = "sdk_ua_app_id" + + ignoreConfiguredEndpoints = "ignore_configured_endpoint_urls" + + endpointURL = "endpoint_url" + + servicesSectionKey = "services" + + disableRequestCompression = "disable_request_compression" + requestMinCompressionSizeBytes = "request_min_compression_size_bytes" + + s3DisableExpressSessionAuthKey = "s3_disable_express_session_auth" + + accountIDKey = "aws_account_id" + accountIDEndpointMode = "account_id_endpoint_mode" ) // defaultSharedConfigProfile allows for swapping the default profile for testing @@ -108,7 +131,7 @@ var defaultSharedConfigProfile = DefaultSharedConfigProfile // - Linux/Unix: $HOME/.aws/credentials // - Windows: %USERPROFILE%\.aws\credentials func DefaultSharedCredentialsFilename() string { - return filepath.Join(userHomeDir(), ".aws", "credentials") + return filepath.Join(shareddefaults.UserHomeDir(), ".aws", "credentials") } // DefaultSharedConfigFilename returns the SDK's default file path for @@ -119,7 +142,7 @@ func DefaultSharedCredentialsFilename() string { // - Linux/Unix: $HOME/.aws/config // - Windows: %USERPROFILE%\.aws\config func DefaultSharedConfigFilename() string { - return filepath.Join(userHomeDir(), ".aws", "config") + return filepath.Join(shareddefaults.UserHomeDir(), ".aws", "config") } // DefaultSharedConfigFiles is a slice of the default shared config files that @@ -142,18 +165,28 @@ type SSOSession struct { SSOStartURL string } -func (s *SSOSession) setFromIniSection(section ini.Section) error { +func (s *SSOSession) setFromIniSection(section ini.Section) { + updateString(&s.Name, section, ssoSessionNameKey) updateString(&s.SSORegion, section, ssoRegionKey) updateString(&s.SSOStartURL, section, ssoStartURLKey) +} - if s.SSORegion == "" || s.SSOStartURL == "" { - return fmt.Errorf( - "%v and %v are required parameters in sso-session section", - ssoRegionKey, ssoStartURLKey, - ) - } +// Services contains values configured in the services section +// of the AWS configuration file. +type Services struct { + // Services section values + // {"serviceId": {"key": "value"}} + // e.g. {"s3": {"endpoint_url": "example.com"}} + ServiceValues map[string]map[string]string +} - return nil +func (s *Services) setFromIniSection(section ini.Section) { + if s.ServiceValues == nil { + s.ServiceValues = make(map[string]map[string]string) + } + for _, service := range section.List() { + s.ServiceValues[service] = section.Map(service) + } } // SharedConfig represents the configuration fields of the SDK config files. @@ -226,6 +259,12 @@ type SharedConfig struct { // ec2_metadata_service_endpoint=http://fd00:ec2::254 EC2IMDSEndpoint string + // Specifies that IMDS clients should not fallback to IMDSv1 if token + // requests fail. + // + // ec2_metadata_v1_disabled=true + EC2IMDSv1Disabled *bool + // Specifies if the S3 service should disable support for Multi-Region // access-points // @@ -275,6 +314,38 @@ type SharedConfig struct { // // ca_bundle=$HOME/my_custom_ca_bundle CustomCABundle string + + // aws sdk app ID that can be added to user agent header string + AppID string + + // Flag used to disable configured endpoints. + IgnoreConfiguredEndpoints *bool + + // Value to contain configured endpoints to be propagated to + // corresponding endpoint resolution field. + BaseEndpoint string + + // Services section config. + ServicesSectionName string + Services Services + + // determine if request compression is allowed, default to false + // retrieved from config file's profile field disable_request_compression + DisableRequestCompression *bool + + // inclusive threshold request body size to trigger compression, + // default to 10240 and must be within 0 and 10485760 bytes inclusive + // retrieved from config file's profile field request_min_compression_size_bytes + RequestMinCompressSizeBytes *int64 + + // Whether S3Express auth is disabled. + // + // This will NOT prevent requests from being made to S3Express buckets, it + // will only bypass the modified endpoint routing and signing behaviors + // associated with the feature. + S3DisableExpressAuth *bool + + AccountIDEndpointMode aws.AccountIDEndpointMode } func (c SharedConfig) getDefaultsMode(ctx context.Context) (value aws.DefaultsMode, ok bool, err error) { @@ -364,6 +435,16 @@ func (c SharedConfig) GetEC2IMDSEndpoint() (string, bool, error) { return c.EC2IMDSEndpoint, true, nil } +// GetEC2IMDSV1FallbackDisabled implements an EC2IMDSV1FallbackDisabled option +// resolver interface. +func (c SharedConfig) GetEC2IMDSV1FallbackDisabled() (bool, bool) { + if c.EC2IMDSv1Disabled == nil { + return false, false + } + + return *c.EC2IMDSv1Disabled, true +} + // GetUseDualStackEndpoint returns whether the service's dual-stack endpoint should be // used for requests. func (c SharedConfig) GetUseDualStackEndpoint(ctx context.Context) (value aws.DualStackEndpointState, found bool, err error) { @@ -384,6 +465,16 @@ func (c SharedConfig) GetUseFIPSEndpoint(ctx context.Context) (value aws.FIPSEnd return c.UseFIPSEndpoint, true, nil } +// GetS3DisableExpressAuth returns the configured value for +// [SharedConfig.S3DisableExpressAuth]. +func (c SharedConfig) GetS3DisableExpressAuth() (value, ok bool) { + if c.S3DisableExpressAuth == nil { + return false, false + } + + return *c.S3DisableExpressAuth, true +} + // GetCustomCABundle returns the custom CA bundle's PEM bytes if the file was func (c SharedConfig) getCustomCABundle(context.Context) (io.Reader, bool, error) { if len(c.CustomCABundle) == 0 { @@ -397,6 +488,45 @@ func (c SharedConfig) getCustomCABundle(context.Context) (io.Reader, bool, error return bytes.NewReader(b), true, nil } +// getAppID returns the sdk app ID if set in shared config profile +func (c SharedConfig) getAppID(context.Context) (string, bool, error) { + return c.AppID, len(c.AppID) > 0, nil +} + +// GetIgnoreConfiguredEndpoints is used in knowing when to disable configured +// endpoints feature. +func (c SharedConfig) GetIgnoreConfiguredEndpoints(context.Context) (bool, bool, error) { + if c.IgnoreConfiguredEndpoints == nil { + return false, false, nil + } + + return *c.IgnoreConfiguredEndpoints, true, nil +} + +func (c SharedConfig) getBaseEndpoint(context.Context) (string, bool, error) { + return c.BaseEndpoint, len(c.BaseEndpoint) > 0, nil +} + +// GetServiceBaseEndpoint is used to retrieve a normalized SDK ID for use +// with configured endpoints. +func (c SharedConfig) GetServiceBaseEndpoint(ctx context.Context, sdkID string) (string, bool, error) { + if service, ok := c.Services.ServiceValues[normalizeShared(sdkID)]; ok { + if endpt, ok := service[endpointURL]; ok { + return endpt, true, nil + } + } + return "", false, nil +} + +func normalizeShared(sdkID string) string { + lower := strings.ToLower(sdkID) + return strings.ReplaceAll(lower, " ", "_") +} + +func (c SharedConfig) getServicesObject(context.Context) (map[string]map[string]string, bool, error) { + return c.Services.ServiceValues, c.Services.ServiceValues != nil, nil +} + // loadSharedConfigIgnoreNotExist is an alias for loadSharedConfig with the // addition of ignoring when none of the files exist or when the profile // is not found in any of the files. @@ -546,6 +676,7 @@ func LoadSharedConfigProfile(ctx context.Context, profile string, optFns ...func cfg := SharedConfig{} profiles := map[string]struct{}{} + if err = cfg.setFromIniSections(profiles, profile, configSections, option.Logger); err != nil { return SharedConfig{}, err } @@ -574,6 +705,7 @@ func processConfigSections(ctx context.Context, sections *ini.Sections, logger l skipSections[newName] = struct{}{} case strings.HasPrefix(section, ssoSectionPrefix): + case strings.HasPrefix(section, servicesPrefix): case strings.EqualFold(section, "default"): default: // drop this section, as invalid profile name @@ -733,11 +865,14 @@ func mergeSections(dst *ini.Sections, src ini.Sections) error { s3DisableMultiRegionAccessPointsKey, ec2MetadataServiceEndpointModeKey, ec2MetadataServiceEndpointKey, + ec2MetadataV1DisabledKey, useDualStackEndpoint, useFIPSEndpointKey, defaultsModeKey, retryModeKey, caBundleKey, + roleDurationSecondsKey, + retryMaxAttemptsKey, ssoSessionNameKey, ssoAccountIDKey, @@ -751,16 +886,6 @@ func mergeSections(dst *ini.Sections, src ini.Sections) error { } } - intKeys := []string{ - roleDurationSecondsKey, - retryMaxAttemptsKey, - } - for i := range intKeys { - if err := mergeIntKey(&srcSection, &dstSection, sectionName, intKeys[i]); err != nil { - return err - } - } - // set srcSection on dst srcSection *dst = dst.SetSection(sectionName, dstSection) } @@ -787,26 +912,6 @@ func mergeStringKey(srcSection *ini.Section, dstSection *ini.Section, sectionNam return nil } -func mergeIntKey(srcSection *ini.Section, dstSection *ini.Section, sectionName, key string) error { - if srcSection.Has(key) { - srcValue := srcSection.Int(key) - v, err := ini.NewIntValue(srcValue) - if err != nil { - return fmt.Errorf("error merging %s, %w", key, err) - } - - if dstSection.Has(key) { - dstSection.Logs = append(dstSection.Logs, newMergeKeyLogMessage(sectionName, key, - dstSection.SourceFile[key], srcSection.SourceFile[key])) - - } - - dstSection.UpdateValue(key, v) - dstSection.UpdateSourceFile(key, srcSection.SourceFile[key]) - } - return nil -} - func newMergeKeyLogMessage(sectionName, key, dstSourceFile, srcSourceFile string) string { return fmt.Sprintf("For profile: %v, overriding %v value, defined in %v "+ "with a %v value found in a duplicate profile defined at file %v. \n", @@ -846,9 +951,8 @@ func (c *SharedConfig) setFromIniSections(profiles map[string]struct{}, profile // profile only have credential provider options. c.clearAssumeRoleOptions() } else { - // First time a profile has been seen, It must either be a assume role - // credentials, or SSO. Assert if the credential type requires a role ARN, - // the ARN is also set, or validate that the SSO configuration is complete. + // First time a profile has been seen. Assert if the credential type + // requires a role ARN, the ARN is also set if err := c.validateCredentialsConfig(profile); err != nil { return err } @@ -900,29 +1004,26 @@ func (c *SharedConfig) setFromIniSections(profiles map[string]struct{}, profile // as a section in the config file. Load the SSO session using the name // provided. If the session section is not found or incomplete an error // will be returned. - if c.SSOSessionName != "" { - c.SSOSession, err = getSSOSession(c.SSOSessionName, sections, logger) - if err != nil { - return err + if c.hasSSOTokenProviderConfiguration() { + section, ok := sections.GetSection(ssoSectionPrefix + strings.TrimSpace(c.SSOSessionName)) + if !ok { + return fmt.Errorf("failed to find SSO session section, %v", c.SSOSessionName) } + var ssoSession SSOSession + ssoSession.setFromIniSection(section) + ssoSession.Name = c.SSOSessionName + c.SSOSession = &ssoSession } - return nil -} - -func getSSOSession(name string, sections ini.Sections, logger logging.Logger) (*SSOSession, error) { - section, ok := sections.GetSection(ssoSectionPrefix + strings.TrimSpace(name)) - if !ok { - return nil, fmt.Errorf("failed to find SSO session section, %v", name) - } - - var ssoSession SSOSession - if err := ssoSession.setFromIniSection(section); err != nil { - return nil, fmt.Errorf("failed to load SSO session %v, %w", name, err) + if len(c.ServicesSectionName) > 0 { + if section, ok := sections.GetSection(servicesPrefix + c.ServicesSectionName); ok { + var svcs Services + svcs.setFromIniSection(section) + c.Services = svcs + } } - ssoSession.Name = name - return &ssoSession, nil + return nil } // setFromIniSection loads the configuration from the profile section defined in @@ -972,9 +1073,16 @@ func (c *SharedConfig) setFromIniSection(profile string, section ini.Section) er updateString(&c.SSOAccountID, section, ssoAccountIDKey) updateString(&c.SSORoleName, section, ssoRoleNameKey) + // we're retaining a behavioral quirk with this field that existed before + // the removal of literal parsing for #2276: + // - if the key is missing, the config field will not be set + // - if the key is set to a non-numeric, the config field will be set to 0 if section.Has(roleDurationSecondsKey) { - d := time.Duration(section.Int(roleDurationSecondsKey)) * time.Second - c.RoleDurationSeconds = &d + if v, ok := section.Int(roleDurationSecondsKey); ok { + c.RoleDurationSeconds = aws.Duration(time.Duration(v) * time.Second) + } else { + c.RoleDurationSeconds = aws.Duration(time.Duration(0)) + } } updateString(&c.CredentialProcess, section, credentialProcessKey) @@ -983,11 +1091,13 @@ func (c *SharedConfig) setFromIniSection(profile string, section ini.Section) er updateEndpointDiscoveryType(&c.EnableEndpointDiscovery, section, enableEndpointDiscoveryKey) updateBoolPtr(&c.S3UseARNRegion, section, s3UseARNRegionKey) updateBoolPtr(&c.S3DisableMultiRegionAccessPoints, section, s3DisableMultiRegionAccessPointsKey) + updateBoolPtr(&c.S3DisableExpressAuth, section, s3DisableExpressSessionAuthKey) if err := updateEC2MetadataServiceEndpointMode(&c.EC2IMDSEndpointMode, section, ec2MetadataServiceEndpointModeKey); err != nil { return fmt.Errorf("failed to load %s from shared config, %v", ec2MetadataServiceEndpointModeKey, err) } updateString(&c.EC2IMDSEndpoint, section, ec2MetadataServiceEndpointKey) + updateBoolPtr(&c.EC2IMDSv1Disabled, section, ec2MetadataV1DisabledKey) updateUseDualStackEndpoint(&c.UseDualStackEndpoint, section, useDualStackEndpoint) updateUseFIPSEndpoint(&c.UseFIPSEndpoint, section, useFIPSEndpointKey) @@ -1005,21 +1115,116 @@ func (c *SharedConfig) setFromIniSection(profile string, section ini.Section) er updateString(&c.CustomCABundle, section, caBundleKey) + // user agent app ID added to request User-Agent header + updateString(&c.AppID, section, sdkAppID) + + updateBoolPtr(&c.IgnoreConfiguredEndpoints, section, ignoreConfiguredEndpoints) + + updateString(&c.BaseEndpoint, section, endpointURL) + + if err := updateDisableRequestCompression(&c.DisableRequestCompression, section, disableRequestCompression); err != nil { + return fmt.Errorf("failed to load %s from shared config, %w", disableRequestCompression, err) + } + if err := updateRequestMinCompressSizeBytes(&c.RequestMinCompressSizeBytes, section, requestMinCompressionSizeBytes); err != nil { + return fmt.Errorf("failed to load %s from shared config, %w", requestMinCompressionSizeBytes, err) + } + + if err := updateAIDEndpointMode(&c.AccountIDEndpointMode, section, accountIDEndpointMode); err != nil { + return fmt.Errorf("failed to load %s from shared config, %w", accountIDEndpointMode, err) + } + // Shared Credentials creds := aws.Credentials{ AccessKeyID: section.String(accessKeyIDKey), SecretAccessKey: section.String(secretAccessKey), SessionToken: section.String(sessionTokenKey), Source: fmt.Sprintf("SharedConfigCredentials: %s", section.SourceFile[accessKeyIDKey]), + AccountID: section.String(accountIDKey), } if creds.HasKeys() { c.Credentials = creds } + updateString(&c.ServicesSectionName, section, servicesSectionKey) + + return nil +} + +func updateRequestMinCompressSizeBytes(bytes **int64, sec ini.Section, key string) error { + if !sec.Has(key) { + return nil + } + + v, ok := sec.Int(key) + if !ok { + return fmt.Errorf("invalid value for min request compression size bytes %s, need int64", sec.String(key)) + } + if v < 0 || v > smithyrequestcompression.MaxRequestMinCompressSizeBytes { + return fmt.Errorf("invalid range for min request compression size bytes %d, must be within 0 and 10485760 inclusively", v) + } + *bytes = new(int64) + **bytes = v + return nil +} + +func updateDisableRequestCompression(disable **bool, sec ini.Section, key string) error { + if !sec.Has(key) { + return nil + } + + v := sec.String(key) + switch { + case v == "true": + *disable = new(bool) + **disable = true + case v == "false": + *disable = new(bool) + **disable = false + default: + return fmt.Errorf("invalid value for shared config profile field, %s=%s, need true or false", key, v) + } + return nil +} + +func updateAIDEndpointMode(m *aws.AccountIDEndpointMode, sec ini.Section, key string) error { + if !sec.Has(key) { + return nil + } + + v := sec.String(key) + switch v { + case "preferred": + *m = aws.AccountIDEndpointModePreferred + case "required": + *m = aws.AccountIDEndpointModeRequired + case "disabled": + *m = aws.AccountIDEndpointModeDisabled + default: + return fmt.Errorf("invalid value for shared config profile field, %s=%s, must be preferred/required/disabled", key, v) + } + return nil } +func (c SharedConfig) getRequestMinCompressSizeBytes(ctx context.Context) (int64, bool, error) { + if c.RequestMinCompressSizeBytes == nil { + return 0, false, nil + } + return *c.RequestMinCompressSizeBytes, true, nil +} + +func (c SharedConfig) getDisableRequestCompression(ctx context.Context) (bool, bool, error) { + if c.DisableRequestCompression == nil { + return false, false, nil + } + return *c.DisableRequestCompression, true, nil +} + +func (c SharedConfig) getAccountIDEndpointMode(ctx context.Context) (aws.AccountIDEndpointMode, bool, error) { + return c.AccountIDEndpointMode, len(c.AccountIDEndpointMode) > 0, nil +} + func updateDefaultsMode(mode *aws.DefaultsMode, section ini.Section, key string) error { if !section.Has(key) { return nil @@ -1088,17 +1293,66 @@ func (c *SharedConfig) validateCredentialType() error { len(c.CredentialProcess) != 0, len(c.WebIdentityTokenFile) != 0, ) { - return fmt.Errorf("only one credential type may be specified per profile: source profile, credential source, credential process, web identity token, or sso") + return fmt.Errorf("only one credential type may be specified per profile: source profile, credential source, credential process, web identity token") } return nil } func (c *SharedConfig) validateSSOConfiguration() error { - if !c.hasSSOConfiguration() { + if c.hasSSOTokenProviderConfiguration() { + err := c.validateSSOTokenProviderConfiguration() + if err != nil { + return err + } return nil } + if c.hasLegacySSOConfiguration() { + err := c.validateLegacySSOConfiguration() + if err != nil { + return err + } + } + return nil +} + +func (c *SharedConfig) validateSSOTokenProviderConfiguration() error { + var missing []string + + if len(c.SSOSessionName) == 0 { + missing = append(missing, ssoSessionNameKey) + } + + if c.SSOSession == nil { + missing = append(missing, ssoSectionPrefix) + } else { + if len(c.SSOSession.SSORegion) == 0 { + missing = append(missing, ssoRegionKey) + } + + if len(c.SSOSession.SSOStartURL) == 0 { + missing = append(missing, ssoStartURLKey) + } + } + + if len(missing) > 0 { + return fmt.Errorf("profile %q is configured to use SSO but is missing required configuration: %s", + c.Profile, strings.Join(missing, ", ")) + } + + if len(c.SSORegion) > 0 && c.SSORegion != c.SSOSession.SSORegion { + return fmt.Errorf("%s in profile %q must match %s in %s", ssoRegionKey, c.Profile, ssoRegionKey, ssoSectionPrefix) + } + + if len(c.SSOStartURL) > 0 && c.SSOStartURL != c.SSOSession.SSOStartURL { + return fmt.Errorf("%s in profile %q must match %s in %s", ssoStartURLKey, c.Profile, ssoStartURLKey, ssoSectionPrefix) + } + + return nil +} + +func (c *SharedConfig) validateLegacySSOConfiguration() error { var missing []string if len(c.SSORegion) == 0 { @@ -1109,11 +1363,18 @@ func (c *SharedConfig) validateSSOConfiguration() error { missing = append(missing, ssoStartURLKey) } + if len(c.SSOAccountID) == 0 { + missing = append(missing, ssoAccountIDKey) + } + + if len(c.SSORoleName) == 0 { + missing = append(missing, ssoRoleNameKey) + } + if len(missing) > 0 { return fmt.Errorf("profile %q is configured to use SSO but is missing required configuration: %s", c.Profile, strings.Join(missing, ", ")) } - return nil } @@ -1133,15 +1394,15 @@ func (c *SharedConfig) hasCredentials() bool { } func (c *SharedConfig) hasSSOConfiguration() bool { - switch { - case len(c.SSOAccountID) != 0: - case len(c.SSORegion) != 0: - case len(c.SSORoleName) != 0: - case len(c.SSOStartURL) != 0: - default: - return false - } - return true + return c.hasSSOTokenProviderConfiguration() || c.hasLegacySSOConfiguration() +} + +func (c *SharedConfig) hasSSOTokenProviderConfiguration() bool { + return len(c.SSOSessionName) > 0 +} + +func (c *SharedConfig) hasLegacySSOConfiguration() bool { + return len(c.SSORegion) > 0 || len(c.SSOAccountID) > 0 || len(c.SSOStartURL) > 0 || len(c.SSORoleName) > 0 } func (c *SharedConfig) clearAssumeRoleOptions() { @@ -1232,22 +1493,6 @@ func (e CredentialRequiresARNError) Error() string { ) } -func userHomeDir() string { - // Ignore errors since we only care about Windows and *nix. - home, _ := os.UserHomeDir() - - if len(home) > 0 { - return home - } - - currUser, _ := user.Current() - if currUser != nil { - home = currUser.HomeDir - } - - return home -} - func oneOrNone(bs ...bool) bool { var count int @@ -1281,12 +1526,13 @@ func updateInt(dst *int, section ini.Section, key string) error { if !section.Has(key) { return nil } - if vt, _ := section.ValueType(key); vt != ini.IntegerType { - return fmt.Errorf("invalid value %s=%s, expect integer", - key, section.String(key)) + v, ok := section.Int(key) + if !ok { + return fmt.Errorf("invalid value %s=%s, expect integer", key, section.String(key)) } - *dst = int(section.Int(key)) + + *dst = int(v) return nil } @@ -1296,7 +1542,10 @@ func updateBool(dst *bool, section ini.Section, key string) { if !section.Has(key) { return } - *dst = section.Bool(key) + + // retains pre-#2276 behavior where non-bool value would resolve to false + v, _ := section.Bool(key) + *dst = v } // updateBoolPtr will only update the dst with the value in the section key, @@ -1305,8 +1554,11 @@ func updateBoolPtr(dst **bool, section ini.Section, key string) { if !section.Has(key) { return } + + // retains pre-#2276 behavior where non-bool value would resolve to false + v, _ := section.Bool(key) *dst = new(bool) - **dst = section.Bool(key) + **dst = v } // updateEndpointDiscoveryType will only update the dst with the value in the section, if @@ -1338,7 +1590,8 @@ func updateUseDualStackEndpoint(dst *aws.DualStackEndpointState, section ini.Sec return } - if section.Bool(key) { + // retains pre-#2276 behavior where non-bool value would resolve to false + if v, _ := section.Bool(key); v { *dst = aws.DualStackEndpointStateEnabled } else { *dst = aws.DualStackEndpointStateDisabled @@ -1354,7 +1607,8 @@ func updateUseFIPSEndpoint(dst *aws.FIPSEndpointState, section ini.Section, key return } - if section.Bool(key) { + // retains pre-#2276 behavior where non-bool value would resolve to false + if v, _ := section.Bool(key); v { *dst = aws.FIPSEndpointStateEnabled } else { *dst = aws.FIPSEndpointStateDisabled diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md index 436bc86d8bae..eb7c3fe68f1e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md @@ -1,3 +1,422 @@ +# v1.17.34 (2024-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.33 (2024-09-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.32 (2024-09-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.31 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.30 (2024-08-26) + +* **Bug Fix**: Save SSO cached token expiry in UTC to ensure cross-SDK compatibility. + +# v1.17.29 (2024-08-22) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.28 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.27 (2024-07-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.26 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.25 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.24 (2024-07-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.23 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.22 (2024-06-26) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.21 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.20 (2024-06-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.19 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.18 (2024-06-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.17 (2024-06-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.16 (2024-05-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.15 (2024-05-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.14 (2024-05-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.13 (2024-05-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.12 (2024-05-08) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.11 (2024-04-05) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.10 (2024-03-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.9 (2024-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.8 (2024-03-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.7 (2024-03-07) + +* **Bug Fix**: Remove dependency on go-cmp. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.6 (2024-03-05) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.5 (2024-03-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.4 (2024-02-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.3 (2024-02-22) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.2 (2024-02-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.1 (2024-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.16 (2024-01-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.15 (2024-01-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.14 (2024-01-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.13 (2023-12-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.12 (2023-12-08) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.11 (2023-12-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.10 (2023-12-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.9 (2023-12-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.8 (2023-11-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.7 (2023-11-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.6 (2023-11-28.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.5 (2023-11-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.4 (2023-11-21) + +* **Bug Fix**: Don't expect error responses to have a JSON payload in the endpointcreds provider. + +# v1.16.3 (2023-11-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.2 (2023-11-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.1 (2023-11-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.0 (2023-11-14) + +* **Feature**: Add support for dynamic auth token from file and EKS container host in absolute/relative URIs in the HTTP credential provider. + +# v1.15.2 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.1 (2023-11-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.0 (2023-11-01) + +* **Feature**: Adds support for configured endpoints via environment variables and the AWS shared configuration file. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.43 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.42 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.41 (2023-10-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.40 (2023-09-22) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.39 (2023-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.38 (2023-09-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.37 (2023-09-05) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.36 (2023-08-31) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.35 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.34 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.33 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.32 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.31 (2023-08-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.30 (2023-07-31) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.29 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.28 (2023-07-25) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.27 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.26 (2023-06-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.25 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.24 (2023-05-09) + +* No change notes available for this release. + +# v1.13.23 (2023-05-08) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.22 (2023-05-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.21 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.20 (2023-04-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.19 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.18 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.17 (2023-03-14) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.16 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.15 (2023-02-22) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.14 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.13 (2023-02-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.12 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.11 (2023-02-01) + +* No change notes available for this release. + +# v1.13.10 (2023-01-25) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.9 (2023-01-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.8 (2023-01-05) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.7 (2022-12-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.6 (2022-12-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.5 (2022-12-15) + +* **Bug Fix**: Unify logic between shared config and in finding home directory +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.4 (2022-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.3 (2022-11-22) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.2 (2022-11-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.1 (2022-11-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.0 (2022-11-11) + +* **Announcement**: When using the SSOTokenProvider, a previous implementation incorrectly compensated for invalid SSOTokenProvider configurations in the shared profile. This has been fixed via PR #1903 and tracked in issue #1846 +* **Feature**: Adds token refresh support (via SSOTokenProvider) when using the SSOCredentialProvider + +# v1.12.24 (2022-11-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.23 (2022-10-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.22 (2022-10-21) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.12.21 (2022-09-30) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds/doc.go index 72214bf40535..6ed71b42b283 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds/doc.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds/doc.go @@ -11,7 +11,7 @@ // # Loading credentials with the SDK's AWS Config // // The EC2 Instance role credentials provider will automatically be the resolved -// credential provider int he credential chain if no other credential provider is +// credential provider in the credential chain if no other credential provider is // resolved first. // // To explicitly instruct the SDK's credentials resolving to use the EC2 Instance diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/auth.go new file mode 100644 index 000000000000..c3f5dadcec9a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/auth.go @@ -0,0 +1,48 @@ +package client + +import ( + "context" + "github.com/aws/smithy-go/middleware" +) + +type getIdentityMiddleware struct { + options Options +} + +func (*getIdentityMiddleware) ID() string { + return "GetIdentity" +} + +func (m *getIdentityMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + return next.HandleFinalize(ctx, in) +} + +type signRequestMiddleware struct { +} + +func (*signRequestMiddleware) ID() string { + return "Signing" +} + +func (m *signRequestMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + return next.HandleFinalize(ctx, in) +} + +type resolveAuthSchemeMiddleware struct { + operation string + options Options +} + +func (*resolveAuthSchemeMiddleware) ID() string { + return "ResolveAuthScheme" +} + +func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/client.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/client.go index 60b8298f86fc..dc291c97cd7e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/client.go @@ -62,7 +62,16 @@ func New(options Options, optFns ...func(*Options)) *Client { } if options.Retryer == nil { - options.Retryer = retry.NewStandard() + // Amazon-owned implementations of this endpoint are known to sometimes + // return plaintext responses (i.e. no Code) like normal, add a few + // additional status codes + options.Retryer = retry.NewStandard(func(o *retry.StandardOptions) { + o.Retryables = append(o.Retryables, retry.RetryableHTTPStatusCode{ + Codes: map[int]struct{}{ + http.StatusTooManyRequests: {}, + }, + }) + }) } for _, fn := range optFns { @@ -92,6 +101,7 @@ func (c *Client) GetCredentials(ctx context.Context, params *GetCredentialsInput stack.Serialize.Add(&serializeOpGetCredential{}, smithymiddleware.After) stack.Build.Add(&buildEndpoint{Endpoint: options.Endpoint}, smithymiddleware.After) stack.Deserialize.Add(&deserializeOpGetCredential{}, smithymiddleware.After) + addProtocolFinalizerMiddlewares(stack, options, "GetCredentials") retry.AddRetryMiddlewares(stack, retry.AddRetryMiddlewaresOptions{Retryer: options.Retryer}) middleware.AddSDKAgentKey(middleware.FeatureMetadata, ServiceID) smithyhttp.AddErrorCloseResponseBodyMiddleware(stack) @@ -118,13 +128,15 @@ type GetCredentialsOutput struct { AccessKeyID string SecretAccessKey string Token string + AccountID string } // EndpointError is an error returned from the endpoint service type EndpointError struct { - Code string `json:"code"` - Message string `json:"message"` - Fault smithy.ErrorFault `json:"-"` + Code string `json:"code"` + Message string `json:"message"` + Fault smithy.ErrorFault `json:"-"` + statusCode int `json:"-"` } // Error is the error mesage string @@ -146,3 +158,8 @@ func (e *EndpointError) ErrorMessage() string { func (e *EndpointError) ErrorFault() smithy.ErrorFault { return e.Fault } + +// HTTPStatusCode implements retry.HTTPStatusCode. +func (e *EndpointError) HTTPStatusCode() int { + return e.statusCode +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/endpoints.go new file mode 100644 index 000000000000..748ee67244ef --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/endpoints.go @@ -0,0 +1,20 @@ +package client + +import ( + "context" + "github.com/aws/smithy-go/middleware" +) + +type resolveEndpointV2Middleware struct { + options Options +} + +func (*resolveEndpointV2Middleware) ID() string { + return "ResolveEndpointV2" +} + +func (m *resolveEndpointV2Middleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/middleware.go index 40747a53c18f..f2820d20eac7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/middleware.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client/middleware.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "io" "net/url" "github.com/aws/smithy-go" @@ -104,17 +105,60 @@ func (d *deserializeOpGetCredential) HandleDeserialize(ctx context.Context, in s } func deserializeError(response *smithyhttp.Response) error { - var errShape *EndpointError - err := json.NewDecoder(response.Body).Decode(&errShape) + // we could be talking to anything, json isn't guaranteed + // see https://github.com/aws/aws-sdk-go-v2/issues/2316 + if response.Header.Get("Content-Type") == "application/json" { + return deserializeJSONError(response) + } + + msg, err := io.ReadAll(response.Body) if err != nil { - return &smithy.DeserializationError{Err: fmt.Errorf("failed to decode error message, %w", err)} + return &smithy.DeserializationError{ + Err: fmt.Errorf("read response, %w", err), + } + } + + return &EndpointError{ + // no sensible value for Code + Message: string(msg), + Fault: stof(response.StatusCode), + statusCode: response.StatusCode, } +} - if response.StatusCode >= 500 { - errShape.Fault = smithy.FaultServer - } else { - errShape.Fault = smithy.FaultClient +func deserializeJSONError(response *smithyhttp.Response) error { + var errShape *EndpointError + if err := json.NewDecoder(response.Body).Decode(&errShape); err != nil { + return &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode error message, %w", err), + } } + errShape.Fault = stof(response.StatusCode) + errShape.statusCode = response.StatusCode return errShape } + +// maps HTTP status code to smithy ErrorFault +func stof(code int) smithy.ErrorFault { + if code >= 500 { + return smithy.FaultServer + } + return smithy.FaultClient +} + +func addProtocolFinalizerMiddlewares(stack *smithymiddleware.Stack, options Options, operation string) error { + if err := stack.Finalize.Add(&resolveAuthSchemeMiddleware{operation: operation, options: options}, smithymiddleware.Before); err != nil { + return fmt.Errorf("add ResolveAuthScheme: %w", err) + } + if err := stack.Finalize.Insert(&getIdentityMiddleware{options: options}, "ResolveAuthScheme", smithymiddleware.After); err != nil { + return fmt.Errorf("add GetIdentity: %w", err) + } + if err := stack.Finalize.Insert(&resolveEndpointV2Middleware{options: options}, "GetIdentity", smithymiddleware.After); err != nil { + return fmt.Errorf("add ResolveEndpointV2: %w", err) + } + if err := stack.Finalize.Insert(&signRequestMiddleware{}, "ResolveEndpointV2", smithymiddleware.After); err != nil { + return fmt.Errorf("add Signing: %w", err) + } + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/provider.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/provider.go index adc7fc6b0006..2386153a9ec0 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/provider.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/provider.go @@ -36,6 +36,7 @@ import ( "context" "fmt" "net/http" + "strings" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client" @@ -81,7 +82,37 @@ type Options struct { // Optional authorization token value if set will be used as the value of // the Authorization header of the endpoint credential request. + // + // When constructed from environment, the provider will use the value of + // AWS_CONTAINER_AUTHORIZATION_TOKEN environment variable as the token + // + // Will be overridden if AuthorizationTokenProvider is configured AuthorizationToken string + + // Optional auth provider func to dynamically load the auth token from a file + // everytime a credential is retrieved + // + // When constructed from environment, the provider will read and use the content + // of the file pointed to by AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE environment variable + // as the auth token everytime credentials are retrieved + // + // Will override AuthorizationToken if configured + AuthorizationTokenProvider AuthTokenProvider +} + +// AuthTokenProvider defines an interface to dynamically load a value to be passed +// for the Authorization header of a credentials request. +type AuthTokenProvider interface { + GetToken() (string, error) +} + +// TokenProviderFunc is a func type implementing AuthTokenProvider interface +// and enables customizing token provider behavior +type TokenProviderFunc func() (string, error) + +// GetToken func retrieves auth token according to TokenProviderFunc implementation +func (p TokenProviderFunc) GetToken() (string, error) { + return p() } // New returns a credentials Provider for retrieving AWS credentials @@ -121,6 +152,7 @@ func (p *Provider) Retrieve(ctx context.Context) (aws.Credentials, error) { SecretAccessKey: resp.SecretAccessKey, SessionToken: resp.Token, Source: ProviderName, + AccountID: resp.AccountID, } if resp.Expiration != nil { @@ -132,5 +164,30 @@ func (p *Provider) Retrieve(ctx context.Context) (aws.Credentials, error) { } func (p *Provider) getCredentials(ctx context.Context) (*client.GetCredentialsOutput, error) { - return p.client.GetCredentials(ctx, &client.GetCredentialsInput{AuthorizationToken: p.options.AuthorizationToken}) + authToken, err := p.resolveAuthToken() + if err != nil { + return nil, fmt.Errorf("resolve auth token: %v", err) + } + + return p.client.GetCredentials(ctx, &client.GetCredentialsInput{ + AuthorizationToken: authToken, + }) +} + +func (p *Provider) resolveAuthToken() (string, error) { + authToken := p.options.AuthorizationToken + + var err error + if p.options.AuthorizationTokenProvider != nil { + authToken, err = p.options.AuthorizationTokenProvider.GetToken() + if err != nil { + return "", err + } + } + + if strings.ContainsAny(authToken, "\r\n") { + return "", fmt.Errorf("authorization token contains invalid newline sequence") + } + + return authToken, nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go index e3b81cd6f442..99ec3eb56700 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go @@ -3,4 +3,4 @@ package credentials // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.12.21" +const goModuleVersion = "1.17.34" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/processcreds/provider.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/processcreds/provider.go index 3921da34cd7e..911fcc327294 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/processcreds/provider.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/processcreds/provider.go @@ -149,12 +149,27 @@ func NewProviderCommand(builder NewCommandBuilder, options ...func(*Options)) *P return p } -type credentialProcessResponse struct { - Version int - AccessKeyID string `json:"AccessKeyId"` +// A CredentialProcessResponse is the AWS credentials format that must be +// returned when executing an external credential_process. +type CredentialProcessResponse struct { + // As of this writing, the Version key must be set to 1. This might + // increment over time as the structure evolves. + Version int + + // The access key ID that identifies the temporary security credentials. + AccessKeyID string `json:"AccessKeyId"` + + // The secret access key that can be used to sign requests. SecretAccessKey string - SessionToken string - Expiration *time.Time + + // The token that users must pass to the service API to use the temporary credentials. + SessionToken string + + // The date on which the current credentials expire. + Expiration *time.Time + + // The ID of the account for credentials + AccountID string `json:"AccountId"` } // Retrieve executes the credential process command and returns the @@ -166,7 +181,7 @@ func (p *Provider) Retrieve(ctx context.Context) (aws.Credentials, error) { } // Serialize and validate response - resp := &credentialProcessResponse{} + resp := &CredentialProcessResponse{} if err = json.Unmarshal(out, resp); err != nil { return aws.Credentials{Source: ProviderName}, &ProviderError{ Err: fmt.Errorf("parse failed of process output: %s, error: %w", out, err), @@ -196,6 +211,7 @@ func (p *Provider) Retrieve(ctx context.Context) (aws.Credentials, error) { AccessKeyID: resp.AccessKeyID, SecretAccessKey: resp.SecretAccessKey, SessionToken: resp.SessionToken, + AccountID: resp.AccountID, } // Handle expiration diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/doc.go index 43e5676d3484..ece1e65f73bf 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/doc.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/doc.go @@ -11,12 +11,11 @@ // # Loading AWS SSO credentials with the AWS shared configuration file // // You can use configure AWS SSO credentials from the AWS shared configuration file by -// providing the specifying the required keys in the profile: +// specifying the required keys in the profile and referencing an sso-session: // +// sso_session // sso_account_id -// sso_region // sso_role_name -// sso_start_url // // For example, the following defines a profile "devsso" and specifies the AWS // SSO parameters that defines the target account, role, sign-on portal, and @@ -24,11 +23,15 @@ // provided, or an error will be returned. // // [profile devsso] -// sso_start_url = https://my-sso-portal.awsapps.com/start +// sso_session = dev-session // sso_role_name = SSOReadOnlyRole -// sso_region = us-east-1 // sso_account_id = 123456789012 // +// [sso-session dev-session] +// sso_start_url = https://my-sso-portal.awsapps.com/start +// sso_region = us-east-1 +// sso_registration_scopes = sso:account:access +// // Using the config module, you can load the AWS SDK shared configuration, and // specify that this profile be used to retrieve credentials. For example: // @@ -43,10 +46,17 @@ // and provide the necessary information to load and retrieve temporary // credentials using an access token from ~/.aws/sso/cache. // -// client := sso.NewFromConfig(cfg) +// ssoClient := sso.NewFromConfig(cfg) +// ssoOidcClient := ssooidc.NewFromConfig(cfg) +// tokenPath, err := ssocreds.StandardCachedTokenFilepath("dev-session") +// if err != nil { +// return err +// } // // var provider aws.CredentialsProvider -// provider = ssocreds.New(client, "123456789012", "SSOReadOnlyRole", "us-east-1", "https://my-sso-portal.awsapps.com/start") +// provider = ssocreds.New(ssoClient, "123456789012", "SSOReadOnlyRole", "https://my-sso-portal.awsapps.com/start", func(options *ssocreds.Options) { +// options.SSOTokenProvider = ssocreds.NewSSOTokenProvider(ssoOidcClient, tokenPath) +// }) // // // Wrap the provider with aws.CredentialsCache to cache the credentials until their expire time // provider = aws.NewCredentialsCache(provider) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_cached_token.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_cached_token.go index 40743f0d709a..46ae2f92310f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_cached_token.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_cached_token.go @@ -13,9 +13,10 @@ import ( "time" "github.com/aws/aws-sdk-go-v2/internal/sdk" + "github.com/aws/aws-sdk-go-v2/internal/shareddefaults" ) -var osUserHomeDur = os.UserHomeDir +var osUserHomeDur = shareddefaults.UserHomeDir // StandardCachedTokenFilepath returns the filepath for the cached SSO token file, or // error if unable get derive the path. Key that will be used to compute a SHA1 @@ -25,13 +26,12 @@ var osUserHomeDur = os.UserHomeDir // // ~/.aws/sso/cache/.json func StandardCachedTokenFilepath(key string) (string, error) { - homeDir, err := osUserHomeDur() - if err != nil { - return "", fmt.Errorf("unable to get USER's home directory for cached token, %w", err) + homeDir := osUserHomeDur() + if len(homeDir) == 0 { + return "", fmt.Errorf("unable to get USER's home directory for cached token") } - hash := sha1.New() - if _, err = hash.Write([]byte(key)); err != nil { + if _, err := hash.Write([]byte(key)); err != nil { return "", fmt.Errorf("unable to compute cached token filepath key SHA1 hash, %w", err) } @@ -225,7 +225,7 @@ func (r *rfc3339) UnmarshalJSON(bytes []byte) (err error) { } func (r *rfc3339) MarshalJSON() ([]byte, error) { - value := time.Time(*r).Format(time.RFC3339) + value := time.Time(*r).UTC().Format(time.RFC3339) // Use JSON unmarshal to unescape the quoted value making use of JSON's // quoting rules. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_credentials_provider.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_credentials_provider.go index bd7603bbc4c8..8c230be8eb8e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_credentials_provider.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/ssocreds/sso_credentials_provider.go @@ -45,6 +45,10 @@ type Options struct { // If custom cached token filepath is used, the Provider's startUrl // parameter will be ignored. CachedTokenFilepath string + + // Used by the SSOCredentialProvider if a token configuration + // profile is used in the shared config + SSOTokenProvider *SSOTokenProvider } // Provider is an AWS credential provider that retrieves temporary AWS @@ -78,27 +82,39 @@ func New(client GetRoleCredentialsAPIClient, accountID, roleName, startURL strin // Retrieve retrieves temporary AWS credentials from the configured Amazon // Single Sign-On (AWS SSO) user portal by exchanging the accessToken present -// in ~/.aws/sso/cache. +// in ~/.aws/sso/cache. However, if a token provider configuration exists +// in the shared config, then we ought to use the token provider rather then +// direct access on the cached token. func (p *Provider) Retrieve(ctx context.Context) (aws.Credentials, error) { - if p.cachedTokenFilepath == "" { - cachedTokenFilepath, err := StandardCachedTokenFilepath(p.options.StartURL) + var accessToken *string + if p.options.SSOTokenProvider != nil { + token, err := p.options.SSOTokenProvider.RetrieveBearerToken(ctx) if err != nil { - return aws.Credentials{}, &InvalidTokenError{Err: err} + return aws.Credentials{}, err + } + accessToken = &token.Value + } else { + if p.cachedTokenFilepath == "" { + cachedTokenFilepath, err := StandardCachedTokenFilepath(p.options.StartURL) + if err != nil { + return aws.Credentials{}, &InvalidTokenError{Err: err} + } + p.cachedTokenFilepath = cachedTokenFilepath } - p.cachedTokenFilepath = cachedTokenFilepath - } - tokenFile, err := loadCachedToken(p.cachedTokenFilepath) - if err != nil { - return aws.Credentials{}, &InvalidTokenError{Err: err} - } + tokenFile, err := loadCachedToken(p.cachedTokenFilepath) + if err != nil { + return aws.Credentials{}, &InvalidTokenError{Err: err} + } - if tokenFile.ExpiresAt == nil || sdk.NowTime().After(time.Time(*tokenFile.ExpiresAt)) { - return aws.Credentials{}, &InvalidTokenError{} + if tokenFile.ExpiresAt == nil || sdk.NowTime().After(time.Time(*tokenFile.ExpiresAt)) { + return aws.Credentials{}, &InvalidTokenError{} + } + accessToken = &tokenFile.AccessToken } output, err := p.options.Client.GetRoleCredentials(ctx, &sso.GetRoleCredentialsInput{ - AccessToken: &tokenFile.AccessToken, + AccessToken: accessToken, AccountId: &p.options.AccountID, RoleName: &p.options.RoleName, }) @@ -113,6 +129,7 @@ func (p *Provider) Retrieve(ctx context.Context) (aws.Credentials, error) { CanExpire: true, Expires: time.Unix(0, output.RoleCredentials.Expiration*int64(time.Millisecond)).UTC(), Source: ProviderName, + AccountID: p.options.AccountID, }, nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/assume_role_provider.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/assume_role_provider.go index 289707b6de44..4c7f7993f544 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/assume_role_provider.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/assume_role_provider.go @@ -308,6 +308,11 @@ func (p *AssumeRoleProvider) Retrieve(ctx context.Context) (aws.Credentials, err return aws.Credentials{Source: ProviderName}, err } + var accountID string + if resp.AssumedRoleUser != nil { + accountID = getAccountID(resp.AssumedRoleUser) + } + return aws.Credentials{ AccessKeyID: *resp.Credentials.AccessKeyId, SecretAccessKey: *resp.Credentials.SecretAccessKey, @@ -316,5 +321,6 @@ func (p *AssumeRoleProvider) Retrieve(ctx context.Context) (aws.Credentials, err CanExpire: true, Expires: *resp.Credentials.Expiration, + AccountID: accountID, }, nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/web_identity_provider.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/web_identity_provider.go index ddaf6df6ce11..b4b719708620 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/web_identity_provider.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/stscreds/web_identity_provider.go @@ -5,6 +5,7 @@ import ( "fmt" "io/ioutil" "strconv" + "strings" "time" "github.com/aws/aws-sdk-go-v2/aws" @@ -135,6 +136,11 @@ func (p *WebIdentityRoleProvider) Retrieve(ctx context.Context) (aws.Credentials return aws.Credentials{}, fmt.Errorf("failed to retrieve credentials, %w", err) } + var accountID string + if resp.AssumedRoleUser != nil { + accountID = getAccountID(resp.AssumedRoleUser) + } + // InvalidIdentityToken error is a temporary error that can occur // when assuming an Role with a JWT web identity token. @@ -145,6 +151,19 @@ func (p *WebIdentityRoleProvider) Retrieve(ctx context.Context) (aws.Credentials Source: WebIdentityProviderName, CanExpire: true, Expires: *resp.Credentials.Expiration, + AccountID: accountID, } return value, nil } + +// extract accountID from arn with format "arn:partition:service:region:account-id:[resource-section]" +func getAccountID(u *types.AssumedRoleUser) string { + if u.Arn == nil { + return "" + } + parts := strings.Split(*u.Arn, ":") + if len(parts) < 5 { + return "" + } + return parts[4] +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/doc.go deleted file mode 100644 index 944feac55310..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/doc.go +++ /dev/null @@ -1,58 +0,0 @@ -// Package sdk is the official AWS SDK v2 for the Go programming language. -// -// aws-sdk-go-v2 is the the v2 of the AWS SDK for the Go programming language. -// -// # Getting started -// -// The best way to get started working with the SDK is to use `go get` to add the -// SDK and desired service clients to your Go dependencies explicitly. -// -// go get github.com/aws/aws-sdk-go-v2 -// go get github.com/aws/aws-sdk-go-v2/config -// go get github.com/aws/aws-sdk-go-v2/service/dynamodb -// -// # Hello AWS -// -// This example shows how you can use the v2 SDK to make an API request using the -// SDK's Amazon DynamoDB client. -// -// package main -// -// import ( -// "context" -// "fmt" -// "log" -// -// "github.com/aws/aws-sdk-go-v2/aws" -// "github.com/aws/aws-sdk-go-v2/config" -// "github.com/aws/aws-sdk-go-v2/service/dynamodb" -// ) -// -// func main() { -// // Using the SDK's default configuration, loading additional config -// // and credentials values from the environment variables, shared -// // credentials, and shared configuration files -// cfg, err := config.LoadDefaultConfig(context.TODO(), -// config.WithRegion("us-west-2"), -// ) -// if err != nil { -// log.Fatalf("unable to load SDK config, %v", err) -// } -// -// // Using the Config value, create the DynamoDB client -// svc := dynamodb.NewFromConfig(cfg) -// -// // Build the request with its input parameters -// resp, err := svc.ListTables(context.TODO(), &dynamodb.ListTablesInput{ -// Limit: aws.Int32(5), -// }) -// if err != nil { -// log.Fatalf("failed to list tables, %v", err) -// } -// -// fmt.Println("Tables:") -// for _, tableName := range resp.TableNames { -// fmt.Println(tableName) -// } -// } -package sdk diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md index e8d4e2a5a7f7..045ceee610a9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md @@ -1,3 +1,220 @@ +# v1.16.14 (2024-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.13 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.12 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.11 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.10 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.9 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.8 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.7 (2024-06-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.6 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.5 (2024-06-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.4 (2024-06-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.3 (2024-05-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.2 (2024-05-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.1 (2024-03-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.0 (2024-03-21) + +* **Feature**: Add config switch `DisableDefaultTimeout` that allows you to disable the default operation timeout (5 seconds) for IMDS calls. + +# v1.15.4 (2024-03-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.3 (2024-03-07) + +* **Bug Fix**: Remove dependency on go-cmp. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.2 (2024-02-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.1 (2024-02-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.11 (2024-01-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.10 (2023-12-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.9 (2023-12-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.8 (2023-11-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.7 (2023-11-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.6 (2023-11-28.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.5 (2023-11-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.4 (2023-11-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.3 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.2 (2023-11-02) + +* No change notes available for this release. + +# v1.14.1 (2023-11-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.13 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.12 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.11 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.10 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.9 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.8 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.7 (2023-07-31) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.6 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.5 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.4 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.3 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.2 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.1 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.0 (2023-03-14) + +* **Feature**: Add flag to disable IMDSv1 fallback + +# v1.12.24 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.23 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.22 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.21 (2022-12-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.20 (2022-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.19 (2022-10-24) + +* **Bug Fix**: Fixes an issue that prevented logging of the API request or responses when the respective log modes were enabled. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.18 (2022-10-21) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.12.17 (2022-09-20) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_client.go index 53f3d3c781ae..3f4a10e2c164 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_client.go @@ -106,8 +106,10 @@ func New(options Options, optFns ...func(*Options)) *Client { // or adding custom middleware behavior. func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { opts := Options{ - APIOptions: append([]func(*middleware.Stack) error{}, cfg.APIOptions...), - HTTPClient: cfg.HTTPClient, + APIOptions: append([]func(*middleware.Stack) error{}, cfg.APIOptions...), + HTTPClient: cfg.HTTPClient, + ClientLogMode: cfg.ClientLogMode, + Logger: cfg.Logger, } if cfg.Retryer != nil { @@ -117,6 +119,7 @@ func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { resolveClientEnableState(cfg, &opts) resolveEndpointConfig(cfg, &opts) resolveEndpointModeConfig(cfg, &opts) + resolveEnableFallback(cfg, &opts) return New(opts, optFns...) } @@ -172,6 +175,20 @@ type Options struct { // The logger writer interface to write logging messages to. Logger logging.Logger + // Configure IMDSv1 fallback behavior. By default, the client will attempt + // to fall back to IMDSv1 as needed for backwards compatibility. When set to [aws.FalseTernary] + // the client will return any errors encountered from attempting to fetch a token + // instead of silently using the insecure data flow of IMDSv1. + // + // See [configuring IMDS] for more information. + // + // [configuring IMDS]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html + EnableFallback aws.Ternary + + // By default, all IMDS client operations enforce a 5-second timeout. You + // can disable that behavior with this setting. + DisableDefaultTimeout bool + // provides the caching of API tokens used for operation calls. If unset, // the API token will not be retrieved for the operation. tokenProvider *tokenProvider @@ -316,3 +333,20 @@ func resolveEndpointConfig(cfg aws.Config, options *Options) error { options.Endpoint = value return nil } + +func resolveEnableFallback(cfg aws.Config, options *Options) { + if options.EnableFallback != aws.UnknownTernary { + return + } + + disabled, ok := internalconfig.ResolveV1FallbackDisabled(cfg.ConfigSources) + if !ok { + return + } + + if disabled { + options.EnableFallback = aws.FalseTernary + } else { + options.EnableFallback = aws.TrueTernary + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetDynamicData.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetDynamicData.go index 9e3bdb0e66e2..af58b6bb1029 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetDynamicData.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetDynamicData.go @@ -56,6 +56,7 @@ type GetDynamicDataOutput struct { func addGetDynamicDataMiddleware(stack *middleware.Stack, options Options) error { return addAPIRequestMiddleware(stack, options, + "GetDynamicData", buildGetDynamicDataPath, buildGetDynamicDataOutput) } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetIAMInfo.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetIAMInfo.go index 24845dccd6d5..5111cc90cac4 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetIAMInfo.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetIAMInfo.go @@ -53,6 +53,7 @@ type GetIAMInfoOutput struct { func addGetIAMInfoMiddleware(stack *middleware.Stack, options Options) error { return addAPIRequestMiddleware(stack, options, + "GetIAMInfo", buildGetIAMInfoPath, buildGetIAMInfoOutput, ) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetInstanceIdentityDocument.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetInstanceIdentityDocument.go index a87758ed302d..dc8c09edf034 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetInstanceIdentityDocument.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetInstanceIdentityDocument.go @@ -54,6 +54,7 @@ type GetInstanceIdentityDocumentOutput struct { func addGetInstanceIdentityDocumentMiddleware(stack *middleware.Stack, options Options) error { return addAPIRequestMiddleware(stack, options, + "GetInstanceIdentityDocument", buildGetInstanceIdentityDocumentPath, buildGetInstanceIdentityDocumentOutput, ) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetMetadata.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetMetadata.go index cb0ce4c0004d..869bfc9feb9d 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetMetadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetMetadata.go @@ -56,6 +56,7 @@ type GetMetadataOutput struct { func addGetMetadataMiddleware(stack *middleware.Stack, options Options) error { return addAPIRequestMiddleware(stack, options, + "GetMetadata", buildGetMetadataPath, buildGetMetadataOutput) } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetRegion.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetRegion.go index 7b9b48912af3..8c0572bb5c89 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetRegion.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetRegion.go @@ -45,6 +45,7 @@ type GetRegionOutput struct { func addGetRegionMiddleware(stack *middleware.Stack, options Options) error { return addAPIRequestMiddleware(stack, options, + "GetRegion", buildGetInstanceIdentityDocumentPath, buildGetRegionOutput, ) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetToken.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetToken.go index 841f802c1a36..1f9ee97a5b71 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetToken.go @@ -49,6 +49,7 @@ func addGetTokenMiddleware(stack *middleware.Stack, options Options) error { err := addRequestMiddleware(stack, options, "PUT", + "GetToken", buildGetTokenPath, buildGetTokenOutput) if err != nil { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetUserData.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetUserData.go index 88aa61e9ad95..8903697244ae 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetUserData.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_op_GetUserData.go @@ -45,6 +45,7 @@ type GetUserDataOutput struct { func addGetUserDataMiddleware(stack *middleware.Stack, options Options) error { return addAPIRequestMiddleware(stack, options, + "GetUserData", buildGetUserDataPath, buildGetUserDataOutput) } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/auth.go new file mode 100644 index 000000000000..ad283cf825f4 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/auth.go @@ -0,0 +1,48 @@ +package imds + +import ( + "context" + "github.com/aws/smithy-go/middleware" +) + +type getIdentityMiddleware struct { + options Options +} + +func (*getIdentityMiddleware) ID() string { + return "GetIdentity" +} + +func (m *getIdentityMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + return next.HandleFinalize(ctx, in) +} + +type signRequestMiddleware struct { +} + +func (*signRequestMiddleware) ID() string { + return "Signing" +} + +func (m *signRequestMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + return next.HandleFinalize(ctx, in) +} + +type resolveAuthSchemeMiddleware struct { + operation string + options Options +} + +func (*resolveAuthSchemeMiddleware) ID() string { + return "ResolveAuthScheme" +} + +func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/doc.go index bacdb5d21f26..d5765c36b170 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/doc.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/doc.go @@ -3,8 +3,9 @@ // // All Client operation calls have a default timeout. If the operation is not // completed before this timeout expires, the operation will be canceled. This -// timeout can be overridden by providing Context with a timeout or deadline -// with calling the client's operations. +// timeout can be overridden through the following: +// - Set the options flag DisableDefaultTimeout +// - Provide a Context with a timeout or deadline with calling the client's operations. // // See the EC2 IMDS user guide for more information on using the API. // https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/endpoints.go new file mode 100644 index 000000000000..d7540da3481e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/endpoints.go @@ -0,0 +1,20 @@ +package imds + +import ( + "context" + "github.com/aws/smithy-go/middleware" +) + +type resolveEndpointV2Middleware struct { + options Options +} + +func (*resolveEndpointV2Middleware) ID() string { + return "ResolveEndpointV2" +} + +func (m *resolveEndpointV2Middleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go index caf7671eebff..3134fabd3697 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go @@ -3,4 +3,4 @@ package imds // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.12.17" +const goModuleVersion = "1.16.14" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config/resolvers.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config/resolvers.go index d72fcb5626f6..ce7745589325 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config/resolvers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config/resolvers.go @@ -58,6 +58,10 @@ type EndpointResolver interface { GetEC2IMDSEndpoint() (string, bool, error) } +type v1FallbackDisabledResolver interface { + GetEC2IMDSV1FallbackDisabled() (bool, bool) +} + // ResolveClientEnableState resolves the ClientEnableState from a list of configuration sources. func ResolveClientEnableState(sources []interface{}) (value ClientEnableState, found bool, err error) { for _, source := range sources { @@ -96,3 +100,15 @@ func ResolveEndpointConfig(sources []interface{}) (value string, found bool, err } return value, found, err } + +// ResolveV1FallbackDisabled ... +func ResolveV1FallbackDisabled(sources []interface{}) (bool, bool) { + for _, source := range sources { + if resolver, ok := source.(v1FallbackDisabledResolver); ok { + if v, found := resolver.GetEC2IMDSV1FallbackDisabled(); found { + return v, true + } + } + } + return false, false +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/request_middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/request_middleware.go index 605cbd13140f..90cf4aeb3df3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/request_middleware.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/request_middleware.go @@ -17,10 +17,11 @@ import ( func addAPIRequestMiddleware(stack *middleware.Stack, options Options, + operation string, getPath func(interface{}) (string, error), getOutput func(*smithyhttp.Response) (interface{}, error), ) (err error) { - err = addRequestMiddleware(stack, options, "GET", getPath, getOutput) + err = addRequestMiddleware(stack, options, "GET", operation, getPath, getOutput) if err != nil { return err } @@ -44,6 +45,7 @@ func addAPIRequestMiddleware(stack *middleware.Stack, func addRequestMiddleware(stack *middleware.Stack, options Options, method string, + operation string, getPath func(interface{}) (string, error), getOutput func(*smithyhttp.Response) (interface{}, error), ) (err error) { @@ -54,6 +56,7 @@ func addRequestMiddleware(stack *middleware.Stack, // Operation timeout err = stack.Initialize.Add(&operationTimeout{ + Disabled: options.DisableDefaultTimeout, DefaultTimeout: defaultOperationTimeout, }, middleware.Before) if err != nil { @@ -86,6 +89,25 @@ func addRequestMiddleware(stack *middleware.Stack, return err } + err = stack.Deserialize.Add(&smithyhttp.RequestResponseLogger{ + LogRequest: options.ClientLogMode.IsRequest(), + LogRequestWithBody: options.ClientLogMode.IsRequestWithBody(), + LogResponse: options.ClientLogMode.IsResponse(), + LogResponseWithBody: options.ClientLogMode.IsResponseWithBody(), + }, middleware.After) + if err != nil { + return err + } + + err = addSetLoggerMiddleware(stack, options) + if err != nil { + return err + } + + if err := addProtocolFinalizerMiddlewares(stack, options, operation); err != nil { + return fmt.Errorf("add protocol finalizers: %w", err) + } + // Retry support return retry.AddRetryMiddlewares(stack, retry.AddRetryMiddlewaresOptions{ Retryer: options.Retryer, @@ -93,6 +115,10 @@ func addRequestMiddleware(stack *middleware.Stack, }) } +func addSetLoggerMiddleware(stack *middleware.Stack, o Options) error { + return middleware.AddSetLoggerMiddleware(stack, o.Logger) +} + type serializeRequest struct { GetPath func(interface{}) (string, error) Method string @@ -235,6 +261,7 @@ const ( // Otherwise the timeout cleanup will race the resource being consumed // upstream. type operationTimeout struct { + Disabled bool DefaultTimeout time.Duration } @@ -245,6 +272,10 @@ func (m *operationTimeout) HandleInitialize( ) ( output middleware.InitializeOutput, metadata middleware.Metadata, err error, ) { + if m.Disabled { + return next.HandleInitialize(ctx, input) + } + if _, ok := ctx.Deadline(); !ok && m.DefaultTimeout != 0 { var cancelFn func() ctx, cancelFn = context.WithTimeout(ctx, m.DefaultTimeout) @@ -264,3 +295,19 @@ func appendURIPath(base, add string) string { } return reqPath } + +func addProtocolFinalizerMiddlewares(stack *middleware.Stack, options Options, operation string) error { + if err := stack.Finalize.Add(&resolveAuthSchemeMiddleware{operation: operation, options: options}, middleware.Before); err != nil { + return fmt.Errorf("add ResolveAuthScheme: %w", err) + } + if err := stack.Finalize.Insert(&getIdentityMiddleware{options: options}, "ResolveAuthScheme", middleware.After); err != nil { + return fmt.Errorf("add GetIdentity: %w", err) + } + if err := stack.Finalize.Insert(&resolveEndpointV2Middleware{options: options}, "GetIdentity", middleware.After); err != nil { + return fmt.Errorf("add ResolveEndpointV2: %w", err) + } + if err := stack.Finalize.Insert(&signRequestMiddleware{}, "ResolveEndpointV2", middleware.After); err != nil { + return fmt.Errorf("add Signing: %w", err) + } + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/token_provider.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/token_provider.go index 275fade488a1..5703c6e16add 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/token_provider.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/token_provider.go @@ -4,12 +4,14 @@ import ( "context" "errors" "fmt" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/smithy-go" + "github.com/aws/smithy-go/logging" "net/http" "sync" "sync/atomic" "time" - smithy "github.com/aws/smithy-go" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) @@ -68,7 +70,7 @@ func (t *tokenProvider) HandleFinalize( ) ( out middleware.FinalizeOutput, metadata middleware.Metadata, err error, ) { - if !t.enabled() { + if t.fallbackEnabled() && !t.enabled() { // short-circuits to insecure data flow if token provider is disabled. return next.HandleFinalize(ctx, input) } @@ -115,23 +117,15 @@ func (t *tokenProvider) HandleDeserialize( } if resp.StatusCode == http.StatusUnauthorized { // unauthorized - err = &retryableError{Err: err} t.enable() + err = &retryableError{Err: err, isRetryable: true} } return out, metadata, err } -type retryableError struct { - Err error -} - -func (*retryableError) RetryableError() bool { return true } - -func (e *retryableError) Error() string { return e.Err.Error() } - func (t *tokenProvider) getToken(ctx context.Context) (tok *apiToken, err error) { - if !t.enabled() { + if t.fallbackEnabled() && !t.enabled() { return nil, &bypassTokenRetrievalError{ Err: fmt.Errorf("cannot get API token, provider disabled"), } @@ -147,7 +141,7 @@ func (t *tokenProvider) getToken(ctx context.Context) (tok *apiToken, err error) tok, err = t.updateToken(ctx) if err != nil { - return nil, fmt.Errorf("cannot get API token, %w", err) + return nil, err } return tok, nil @@ -167,17 +161,19 @@ func (t *tokenProvider) updateToken(ctx context.Context) (*apiToken, error) { TokenTTL: t.tokenTTL, }) if err != nil { - // change the disabled flag on token provider to true, when error is request timeout error. var statusErr interface{ HTTPStatusCode() int } if errors.As(err, &statusErr) { switch statusErr.HTTPStatusCode() { - - // Disable get token if failed because of 403, 404, or 405 + // Disable future get token if failed because of 403, 404, or 405 case http.StatusForbidden, http.StatusNotFound, http.StatusMethodNotAllowed: - t.disable() + if t.fallbackEnabled() { + logger := middleware.GetLogger(ctx) + logger.Logf(logging.Warn, "falling back to IMDSv1: %v", err) + t.disable() + } // 400 errors are terminal, and need to be upstreamed case http.StatusBadRequest: @@ -192,8 +188,17 @@ func (t *tokenProvider) updateToken(ctx context.Context) (*apiToken, error) { atomic.StoreUint32(&t.disabled, 1) } - // Token couldn't be retrieved, but bypass this, and allow the - // request to continue. + if !t.fallbackEnabled() { + // NOTE: getToken() is an implementation detail of some outer operation + // (e.g. GetMetadata). It has its own retries that have already been exhausted. + // Mark the underlying error as a terminal error. + err = &retryableError{Err: err, isRetryable: false} + return nil, err + } + + // Token couldn't be retrieved, fallback to IMDSv1 insecure flow for this request + // and allow the request to proceed. Future requests _may_ re-attempt fetching a + // token if not disabled. return nil, &bypassTokenRetrievalError{Err: err} } @@ -206,21 +211,21 @@ func (t *tokenProvider) updateToken(ctx context.Context) (*apiToken, error) { return tok, nil } -type bypassTokenRetrievalError struct { - Err error -} - -func (e *bypassTokenRetrievalError) Error() string { - return fmt.Sprintf("bypass token retrieval, %v", e.Err) -} - -func (e *bypassTokenRetrievalError) Unwrap() error { return e.Err } - // enabled returns if the token provider is current enabled or not. func (t *tokenProvider) enabled() bool { return atomic.LoadUint32(&t.disabled) == 0 } +// fallbackEnabled returns false if EnableFallback is [aws.FalseTernary], true otherwise +func (t *tokenProvider) fallbackEnabled() bool { + switch t.client.options.EnableFallback { + case aws.FalseTernary: + return false + default: + return true + } +} + // disable disables the token provider and it will no longer attempt to inject // the token, nor request updates. func (t *tokenProvider) disable() { @@ -235,3 +240,22 @@ func (t *tokenProvider) enable() { t.tokenMux.Unlock() atomic.StoreUint32(&t.disabled, 0) } + +type bypassTokenRetrievalError struct { + Err error +} + +func (e *bypassTokenRetrievalError) Error() string { + return fmt.Sprintf("bypass token retrieval, %v", e.Err) +} + +func (e *bypassTokenRetrievalError) Unwrap() error { return e.Err } + +type retryableError struct { + Err error + isRetryable bool +} + +func (e *retryableError) RetryableError() bool { return e.isRetryable } + +func (e *retryableError) Error() string { return e.Err.Error() } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/auth.go new file mode 100644 index 000000000000..0b81db5480c6 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/auth.go @@ -0,0 +1,45 @@ +package auth + +import ( + "github.com/aws/smithy-go/auth" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// HTTPAuthScheme is the SDK's internal implementation of smithyhttp.AuthScheme +// for pre-existing implementations where the signer was added to client +// config. SDK clients will key off of this type and ensure per-operation +// updates to those signers persist on the scheme itself. +type HTTPAuthScheme struct { + schemeID string + signer smithyhttp.Signer +} + +var _ smithyhttp.AuthScheme = (*HTTPAuthScheme)(nil) + +// NewHTTPAuthScheme returns an auth scheme instance with the given config. +func NewHTTPAuthScheme(schemeID string, signer smithyhttp.Signer) *HTTPAuthScheme { + return &HTTPAuthScheme{ + schemeID: schemeID, + signer: signer, + } +} + +// SchemeID identifies the auth scheme. +func (s *HTTPAuthScheme) SchemeID() string { + return s.schemeID +} + +// IdentityResolver gets the identity resolver for the auth scheme. +func (s *HTTPAuthScheme) IdentityResolver(o auth.IdentityResolverOptions) auth.IdentityResolver { + return o.GetIdentityResolver(s.schemeID) +} + +// Signer gets the signer for the auth scheme. +func (s *HTTPAuthScheme) Signer() smithyhttp.Signer { + return s.signer +} + +// WithSigner returns a new instance of the auth scheme with the updated signer. +func (s *HTTPAuthScheme) WithSigner(signer smithyhttp.Signer) *HTTPAuthScheme { + return NewHTTPAuthScheme(s.schemeID, signer) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/scheme.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/scheme.go new file mode 100644 index 000000000000..bbc2ec06ecce --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/scheme.go @@ -0,0 +1,191 @@ +package auth + +import ( + "context" + "fmt" + + smithy "github.com/aws/smithy-go" + "github.com/aws/smithy-go/middleware" +) + +// SigV4 is a constant representing +// Authentication Scheme Signature Version 4 +const SigV4 = "sigv4" + +// SigV4A is a constant representing +// Authentication Scheme Signature Version 4A +const SigV4A = "sigv4a" + +// SigV4S3Express identifies the S3 S3Express auth scheme. +const SigV4S3Express = "sigv4-s3express" + +// None is a constant representing the +// None Authentication Scheme +const None = "none" + +// SupportedSchemes is a data structure +// that indicates the list of supported AWS +// authentication schemes +var SupportedSchemes = map[string]bool{ + SigV4: true, + SigV4A: true, + SigV4S3Express: true, + None: true, +} + +// AuthenticationScheme is a representation of +// AWS authentication schemes +type AuthenticationScheme interface { + isAuthenticationScheme() +} + +// AuthenticationSchemeV4 is a AWS SigV4 representation +type AuthenticationSchemeV4 struct { + Name string + SigningName *string + SigningRegion *string + DisableDoubleEncoding *bool +} + +func (a *AuthenticationSchemeV4) isAuthenticationScheme() {} + +// AuthenticationSchemeV4A is a AWS SigV4A representation +type AuthenticationSchemeV4A struct { + Name string + SigningName *string + SigningRegionSet []string + DisableDoubleEncoding *bool +} + +func (a *AuthenticationSchemeV4A) isAuthenticationScheme() {} + +// AuthenticationSchemeNone is a representation for the none auth scheme +type AuthenticationSchemeNone struct{} + +func (a *AuthenticationSchemeNone) isAuthenticationScheme() {} + +// NoAuthenticationSchemesFoundError is used in signaling +// that no authentication schemes have been specified. +type NoAuthenticationSchemesFoundError struct{} + +func (e *NoAuthenticationSchemesFoundError) Error() string { + return fmt.Sprint("No authentication schemes specified.") +} + +// UnSupportedAuthenticationSchemeSpecifiedError is used in +// signaling that only unsupported authentication schemes +// were specified. +type UnSupportedAuthenticationSchemeSpecifiedError struct { + UnsupportedSchemes []string +} + +func (e *UnSupportedAuthenticationSchemeSpecifiedError) Error() string { + return fmt.Sprint("Unsupported authentication scheme specified.") +} + +// GetAuthenticationSchemes extracts the relevant authentication scheme data +// into a custom strongly typed Go data structure. +func GetAuthenticationSchemes(p *smithy.Properties) ([]AuthenticationScheme, error) { + var result []AuthenticationScheme + if !p.Has("authSchemes") { + return nil, &NoAuthenticationSchemesFoundError{} + } + + authSchemes, _ := p.Get("authSchemes").([]interface{}) + + var unsupportedSchemes []string + for _, scheme := range authSchemes { + authScheme, _ := scheme.(map[string]interface{}) + + version := authScheme["name"].(string) + switch version { + case SigV4, SigV4S3Express: + v4Scheme := AuthenticationSchemeV4{ + Name: version, + SigningName: getSigningName(authScheme), + SigningRegion: getSigningRegion(authScheme), + DisableDoubleEncoding: getDisableDoubleEncoding(authScheme), + } + result = append(result, AuthenticationScheme(&v4Scheme)) + case SigV4A: + v4aScheme := AuthenticationSchemeV4A{ + Name: SigV4A, + SigningName: getSigningName(authScheme), + SigningRegionSet: getSigningRegionSet(authScheme), + DisableDoubleEncoding: getDisableDoubleEncoding(authScheme), + } + result = append(result, AuthenticationScheme(&v4aScheme)) + case None: + noneScheme := AuthenticationSchemeNone{} + result = append(result, AuthenticationScheme(&noneScheme)) + default: + unsupportedSchemes = append(unsupportedSchemes, authScheme["name"].(string)) + continue + } + } + + if len(result) == 0 { + return nil, &UnSupportedAuthenticationSchemeSpecifiedError{ + UnsupportedSchemes: unsupportedSchemes, + } + } + + return result, nil +} + +type disableDoubleEncoding struct{} + +// SetDisableDoubleEncoding sets or modifies the disable double encoding option +// on the context. +// +// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues +// to clear all stack values. +func SetDisableDoubleEncoding(ctx context.Context, value bool) context.Context { + return middleware.WithStackValue(ctx, disableDoubleEncoding{}, value) +} + +// GetDisableDoubleEncoding retrieves the disable double encoding option +// from the context. +// +// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues +// to clear all stack values. +func GetDisableDoubleEncoding(ctx context.Context) (value bool, ok bool) { + value, ok = middleware.GetStackValue(ctx, disableDoubleEncoding{}).(bool) + return value, ok +} + +func getSigningName(authScheme map[string]interface{}) *string { + signingName, ok := authScheme["signingName"].(string) + if !ok || signingName == "" { + return nil + } + return &signingName +} + +func getSigningRegionSet(authScheme map[string]interface{}) []string { + untypedSigningRegionSet, ok := authScheme["signingRegionSet"].([]interface{}) + if !ok { + return nil + } + signingRegionSet := []string{} + for _, item := range untypedSigningRegionSet { + signingRegionSet = append(signingRegionSet, item.(string)) + } + return signingRegionSet +} + +func getSigningRegion(authScheme map[string]interface{}) *string { + signingRegion, ok := authScheme["signingRegion"].(string) + if !ok || signingRegion == "" { + return nil + } + return &signingRegion +} + +func getDisableDoubleEncoding(authScheme map[string]interface{}) *bool { + disableDoubleEncoding, ok := authScheme["disableDoubleEncoding"].(bool) + if !ok { + return nil + } + return &disableDoubleEncoding +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_adapter.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_adapter.go new file mode 100644 index 000000000000..f059b5d391f4 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_adapter.go @@ -0,0 +1,43 @@ +package smithy + +import ( + "context" + "fmt" + "time" + + "github.com/aws/smithy-go" + "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/auth/bearer" +) + +// BearerTokenAdapter adapts smithy bearer.Token to smithy auth.Identity. +type BearerTokenAdapter struct { + Token bearer.Token +} + +var _ auth.Identity = (*BearerTokenAdapter)(nil) + +// Expiration returns the time of expiration for the token. +func (v *BearerTokenAdapter) Expiration() time.Time { + return v.Token.Expires +} + +// BearerTokenProviderAdapter adapts smithy bearer.TokenProvider to smithy +// auth.IdentityResolver. +type BearerTokenProviderAdapter struct { + Provider bearer.TokenProvider +} + +var _ (auth.IdentityResolver) = (*BearerTokenProviderAdapter)(nil) + +// GetIdentity retrieves a bearer token using the underlying provider. +func (v *BearerTokenProviderAdapter) GetIdentity(ctx context.Context, _ smithy.Properties) ( + auth.Identity, error, +) { + token, err := v.Provider.RetrieveBearerToken(ctx) + if err != nil { + return nil, fmt.Errorf("get token: %w", err) + } + + return &BearerTokenAdapter{Token: token}, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_signer_adapter.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_signer_adapter.go new file mode 100644 index 000000000000..a88281527c02 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_signer_adapter.go @@ -0,0 +1,35 @@ +package smithy + +import ( + "context" + "fmt" + + "github.com/aws/smithy-go" + "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/auth/bearer" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// BearerTokenSignerAdapter adapts smithy bearer.Signer to smithy http +// auth.Signer. +type BearerTokenSignerAdapter struct { + Signer bearer.Signer +} + +var _ (smithyhttp.Signer) = (*BearerTokenSignerAdapter)(nil) + +// SignRequest signs the request with the provided bearer token. +func (v *BearerTokenSignerAdapter) SignRequest(ctx context.Context, r *smithyhttp.Request, identity auth.Identity, _ smithy.Properties) error { + ca, ok := identity.(*BearerTokenAdapter) + if !ok { + return fmt.Errorf("unexpected identity type: %T", identity) + } + + signed, err := v.Signer.SignWithBearerToken(ctx, ca.Token, r) + if err != nil { + return fmt.Errorf("sign request: %w", err) + } + + *r = *signed.(*smithyhttp.Request) + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/credentials_adapter.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/credentials_adapter.go new file mode 100644 index 000000000000..f926c4aaa76c --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/credentials_adapter.go @@ -0,0 +1,46 @@ +package smithy + +import ( + "context" + "fmt" + "time" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/smithy-go" + "github.com/aws/smithy-go/auth" +) + +// CredentialsAdapter adapts aws.Credentials to auth.Identity. +type CredentialsAdapter struct { + Credentials aws.Credentials +} + +var _ auth.Identity = (*CredentialsAdapter)(nil) + +// Expiration returns the time of expiration for the credentials. +func (v *CredentialsAdapter) Expiration() time.Time { + return v.Credentials.Expires +} + +// CredentialsProviderAdapter adapts aws.CredentialsProvider to auth.IdentityResolver. +type CredentialsProviderAdapter struct { + Provider aws.CredentialsProvider +} + +var _ (auth.IdentityResolver) = (*CredentialsProviderAdapter)(nil) + +// GetIdentity retrieves AWS credentials using the underlying provider. +func (v *CredentialsProviderAdapter) GetIdentity(ctx context.Context, _ smithy.Properties) ( + auth.Identity, error, +) { + if v.Provider == nil { + return &CredentialsAdapter{Credentials: aws.Credentials{}}, nil + } + + creds, err := v.Provider.Retrieve(ctx) + if err != nil { + return nil, fmt.Errorf("get credentials: %w", err) + } + + return &CredentialsAdapter{Credentials: creds}, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/smithy.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/smithy.go new file mode 100644 index 000000000000..42b458673390 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/smithy.go @@ -0,0 +1,2 @@ +// Package smithy adapts concrete AWS auth and signing types to the generic smithy versions. +package smithy diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/v4signer_adapter.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/v4signer_adapter.go new file mode 100644 index 000000000000..24db8e144cba --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/v4signer_adapter.go @@ -0,0 +1,57 @@ +package smithy + +import ( + "context" + "fmt" + + v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + internalcontext "github.com/aws/aws-sdk-go-v2/internal/context" + "github.com/aws/aws-sdk-go-v2/internal/sdk" + "github.com/aws/smithy-go" + "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/logging" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// V4SignerAdapter adapts v4.HTTPSigner to smithy http.Signer. +type V4SignerAdapter struct { + Signer v4.HTTPSigner + Logger logging.Logger + LogSigning bool +} + +var _ (smithyhttp.Signer) = (*V4SignerAdapter)(nil) + +// SignRequest signs the request with the provided identity. +func (v *V4SignerAdapter) SignRequest(ctx context.Context, r *smithyhttp.Request, identity auth.Identity, props smithy.Properties) error { + ca, ok := identity.(*CredentialsAdapter) + if !ok { + return fmt.Errorf("unexpected identity type: %T", identity) + } + + name, ok := smithyhttp.GetSigV4SigningName(&props) + if !ok { + return fmt.Errorf("sigv4 signing name is required") + } + + region, ok := smithyhttp.GetSigV4SigningRegion(&props) + if !ok { + return fmt.Errorf("sigv4 signing region is required") + } + + hash := v4.GetPayloadHash(ctx) + signingTime := sdk.NowTime() + skew := internalcontext.GetAttemptSkewContext(ctx) + signingTime = signingTime.Add(skew) + err := v.Signer.SignHTTP(ctx, ca.Credentials, r.Request, hash, name, region, signingTime, func(o *v4.SignerOptions) { + o.DisableURIPathEscaping, _ = smithyhttp.GetDisableDoubleEncoding(&props) + + o.Logger = v.Logger + o.LogSigning = v.LogSigning + }) + if err != nil { + return fmt.Errorf("sign http: %w", err) + } + + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md index 56750f889268..4370f9481ffc 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md @@ -1,3 +1,206 @@ +# v1.3.18 (2024-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.17 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.16 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.15 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.14 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.13 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.12 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.11 (2024-06-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.10 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.9 (2024-06-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.8 (2024-06-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.7 (2024-05-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.6 (2024-05-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.5 (2024-03-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.4 (2024-03-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.3 (2024-03-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.2 (2024-02-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.1 (2024-02-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.10 (2024-01-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.9 (2023-12-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.8 (2023-12-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.7 (2023-11-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.6 (2023-11-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.5 (2023-11-28.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.4 (2023-11-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.3 (2023-11-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.2 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.1 (2023-11-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.2.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.43 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.42 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.41 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.40 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.39 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.38 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.37 (2023-07-31) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.36 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.35 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.34 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.33 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.32 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.31 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.30 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.29 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.28 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.27 (2022-12-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.26 (2022-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.25 (2022-10-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.1.24 (2022-10-21) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.1.23 (2022-09-20) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/endpoints.go new file mode 100644 index 000000000000..e7835f852415 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/endpoints.go @@ -0,0 +1,57 @@ +package configsources + +import ( + "context" +) + +// ServiceBaseEndpointProvider is needed to search for all providers +// that provide a configured service endpoint +type ServiceBaseEndpointProvider interface { + GetServiceBaseEndpoint(ctx context.Context, sdkID string) (string, bool, error) +} + +// IgnoreConfiguredEndpointsProvider is needed to search for all providers +// that provide a flag to disable configured endpoints. +// +// Currently duplicated from github.com/aws/aws-sdk-go-v2/config because +// service packages cannot import github.com/aws/aws-sdk-go-v2/config +// due to result import cycle error. +type IgnoreConfiguredEndpointsProvider interface { + GetIgnoreConfiguredEndpoints(ctx context.Context) (bool, bool, error) +} + +// GetIgnoreConfiguredEndpoints is used in knowing when to disable configured +// endpoints feature. +// +// Currently duplicated from github.com/aws/aws-sdk-go-v2/config because +// service packages cannot import github.com/aws/aws-sdk-go-v2/config +// due to result import cycle error. +func GetIgnoreConfiguredEndpoints(ctx context.Context, configs []interface{}) (value bool, found bool, err error) { + for _, cfg := range configs { + if p, ok := cfg.(IgnoreConfiguredEndpointsProvider); ok { + value, found, err = p.GetIgnoreConfiguredEndpoints(ctx) + if err != nil || found { + break + } + } + } + return +} + +// ResolveServiceBaseEndpoint is used to retrieve service endpoints from configured sources +// while allowing for configured endpoints to be disabled +func ResolveServiceBaseEndpoint(ctx context.Context, sdkID string, configs []interface{}) (value string, found bool, err error) { + if val, found, _ := GetIgnoreConfiguredEndpoints(ctx, configs); found && val { + return "", false, nil + } + + for _, cs := range configs { + if p, ok := cs.(ServiceBaseEndpointProvider); ok { + value, found, err = p.GetServiceBaseEndpoint(context.Background(), sdkID) + if err != nil || found { + break + } + } + } + return +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go index 99eaea1b823b..236805edc939 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go @@ -3,4 +3,4 @@ package configsources // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.1.23" +const goModuleVersion = "1.3.18" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/context/context.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/context/context.go new file mode 100644 index 000000000000..f0c283d3942b --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/context/context.go @@ -0,0 +1,52 @@ +package context + +import ( + "context" + "time" + + "github.com/aws/smithy-go/middleware" +) + +type s3BackendKey struct{} +type checksumInputAlgorithmKey struct{} +type clockSkew struct{} + +const ( + // S3BackendS3Express identifies the S3Express backend + S3BackendS3Express = "S3Express" +) + +// SetS3Backend stores the resolved endpoint backend within the request +// context, which is required for a variety of custom S3 behaviors. +func SetS3Backend(ctx context.Context, typ string) context.Context { + return middleware.WithStackValue(ctx, s3BackendKey{}, typ) +} + +// GetS3Backend retrieves the stored endpoint backend within the context. +func GetS3Backend(ctx context.Context) string { + v, _ := middleware.GetStackValue(ctx, s3BackendKey{}).(string) + return v +} + +// SetChecksumInputAlgorithm sets the request checksum algorithm on the +// context. +func SetChecksumInputAlgorithm(ctx context.Context, value string) context.Context { + return middleware.WithStackValue(ctx, checksumInputAlgorithmKey{}, value) +} + +// GetChecksumInputAlgorithm returns the checksum algorithm from the context. +func GetChecksumInputAlgorithm(ctx context.Context) string { + v, _ := middleware.GetStackValue(ctx, checksumInputAlgorithmKey{}).(string) + return v +} + +// SetAttemptSkewContext sets the clock skew value on the context +func SetAttemptSkewContext(ctx context.Context, v time.Duration) context.Context { + return middleware.WithStackValue(ctx, clockSkew{}, v) +} + +// GetAttemptSkewContext gets the clock skew value from the context +func GetAttemptSkewContext(ctx context.Context) time.Duration { + x, _ := middleware.GetStackValue(ctx, clockSkew{}).(time.Duration) + return x +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/arn.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/arn.go new file mode 100644 index 000000000000..e6223dd3b3e6 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/arn.go @@ -0,0 +1,94 @@ +package awsrulesfn + +import ( + "strings" +) + +// ARN provides AWS ARN components broken out into a data structure. +type ARN struct { + Partition string + Service string + Region string + AccountId string + ResourceId OptionalStringSlice +} + +const ( + arnDelimiters = ":" + resourceDelimiters = "/:" + arnSections = 6 + arnPrefix = "arn:" + + // zero-indexed + sectionPartition = 1 + sectionService = 2 + sectionRegion = 3 + sectionAccountID = 4 + sectionResource = 5 +) + +// ParseARN returns an [ARN] value parsed from the input string provided. If +// the ARN cannot be parsed nil will be returned, and error added to +// [ErrorCollector]. +func ParseARN(input string) *ARN { + if !strings.HasPrefix(input, arnPrefix) { + return nil + } + + sections := strings.SplitN(input, arnDelimiters, arnSections) + if numSections := len(sections); numSections != arnSections { + return nil + } + + if sections[sectionPartition] == "" { + return nil + } + if sections[sectionService] == "" { + return nil + } + if sections[sectionResource] == "" { + return nil + } + + return &ARN{ + Partition: sections[sectionPartition], + Service: sections[sectionService], + Region: sections[sectionRegion], + AccountId: sections[sectionAccountID], + ResourceId: splitResource(sections[sectionResource]), + } +} + +// splitResource splits the resource components by the ARN resource delimiters. +func splitResource(v string) []string { + var parts []string + var offset int + + for offset <= len(v) { + idx := strings.IndexAny(v[offset:], "/:") + if idx < 0 { + parts = append(parts, v[offset:]) + break + } + parts = append(parts, v[offset:idx+offset]) + offset += idx + 1 + } + + return parts +} + +// OptionalStringSlice provides a helper to safely get the index of a string +// slice that may be out of bounds. Returns pointer to string if index is +// valid. Otherwise returns nil. +type OptionalStringSlice []string + +// Get returns a string pointer of the string at index i if the index is valid. +// Otherwise returns nil. +func (s OptionalStringSlice) Get(i int) *string { + if i < 0 || i >= len(s) { + return nil + } + + v := s[i] + return &v +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/doc.go new file mode 100644 index 000000000000..d5a365853f82 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/doc.go @@ -0,0 +1,3 @@ +// Package awsrulesfn provides AWS focused endpoint rule functions for +// evaluating endpoint resolution rules. +package awsrulesfn diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/generate.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/generate.go new file mode 100644 index 000000000000..df72da97ce30 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/generate.go @@ -0,0 +1,7 @@ +//go:build codegen +// +build codegen + +package awsrulesfn + +//go:generate go run -tags codegen ./internal/partition/codegen.go -model partitions.json -output partitions.go +//go:generate gofmt -w -s . diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/host.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/host.go new file mode 100644 index 000000000000..637e5fc18e42 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/host.go @@ -0,0 +1,51 @@ +package awsrulesfn + +import ( + "net" + "strings" + + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// IsVirtualHostableS3Bucket returns if the input is a DNS compatible bucket +// name and can be used with Amazon S3 virtual hosted style addressing. Similar +// to [rulesfn.IsValidHostLabel] with the added restriction that the length of label +// must be [3:63] characters long, all lowercase, and not formatted as an IP +// address. +func IsVirtualHostableS3Bucket(input string, allowSubDomains bool) bool { + // input should not be formatted as an IP address + // NOTE: this will technically trip up on IPv6 hosts with zone IDs, but + // validation further down will catch that anyway (it's guaranteed to have + // unfriendly characters % and : if that's the case) + if net.ParseIP(input) != nil { + return false + } + + var labels []string + if allowSubDomains { + labels = strings.Split(input, ".") + } else { + labels = []string{input} + } + + for _, label := range labels { + // validate special length constraints + if l := len(label); l < 3 || l > 63 { + return false + } + + // Validate no capital letters + for _, r := range label { + if r >= 'A' && r <= 'Z' { + return false + } + } + + // Validate valid host label + if !smithyhttp.ValidHostLabel(label) { + return false + } + } + + return true +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go new file mode 100644 index 000000000000..91414afe81c5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go @@ -0,0 +1,76 @@ +package awsrulesfn + +import "regexp" + +// Partition provides the metadata describing an AWS partition. +type Partition struct { + ID string `json:"id"` + Regions map[string]RegionOverrides `json:"regions"` + RegionRegex string `json:"regionRegex"` + DefaultConfig PartitionConfig `json:"outputs"` +} + +// PartitionConfig provides the endpoint metadata for an AWS region or partition. +type PartitionConfig struct { + Name string `json:"name"` + DnsSuffix string `json:"dnsSuffix"` + DualStackDnsSuffix string `json:"dualStackDnsSuffix"` + SupportsFIPS bool `json:"supportsFIPS"` + SupportsDualStack bool `json:"supportsDualStack"` + ImplicitGlobalRegion string `json:"implicitGlobalRegion"` +} + +type RegionOverrides struct { + Name *string `json:"name"` + DnsSuffix *string `json:"dnsSuffix"` + DualStackDnsSuffix *string `json:"dualStackDnsSuffix"` + SupportsFIPS *bool `json:"supportsFIPS"` + SupportsDualStack *bool `json:"supportsDualStack"` +} + +const defaultPartition = "aws" + +func getPartition(partitions []Partition, region string) *PartitionConfig { + for _, partition := range partitions { + if v, ok := partition.Regions[region]; ok { + p := mergeOverrides(partition.DefaultConfig, v) + return &p + } + } + + for _, partition := range partitions { + regionRegex := regexp.MustCompile(partition.RegionRegex) + if regionRegex.MatchString(region) { + v := partition.DefaultConfig + return &v + } + } + + for _, partition := range partitions { + if partition.ID == defaultPartition { + v := partition.DefaultConfig + return &v + } + } + + return nil +} + +func mergeOverrides(into PartitionConfig, from RegionOverrides) PartitionConfig { + if from.Name != nil { + into.Name = *from.Name + } + if from.DnsSuffix != nil { + into.DnsSuffix = *from.DnsSuffix + } + if from.DualStackDnsSuffix != nil { + into.DualStackDnsSuffix = *from.DualStackDnsSuffix + } + if from.SupportsFIPS != nil { + into.SupportsFIPS = *from.SupportsFIPS + } + if from.SupportsDualStack != nil { + into.SupportsDualStack = *from.SupportsDualStack + } + return into +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go new file mode 100644 index 000000000000..5f0779997deb --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go @@ -0,0 +1,403 @@ +// Code generated by endpoint/awsrulesfn/internal/partition. DO NOT EDIT. + +package awsrulesfn + +// GetPartition returns an AWS [Partition] for the region provided. If the +// partition cannot be determined nil will be returned. +func GetPartition(region string) *PartitionConfig { + return getPartition(partitions, region) +} + +var partitions = []Partition{ + { + ID: "aws", + RegionRegex: "^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$", + DefaultConfig: PartitionConfig{ + Name: "aws", + DnsSuffix: "amazonaws.com", + DualStackDnsSuffix: "api.aws", + SupportsFIPS: true, + SupportsDualStack: true, + ImplicitGlobalRegion: "us-east-1", + }, + Regions: map[string]RegionOverrides{ + "af-south-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-east-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-northeast-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-northeast-2": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-northeast-3": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-south-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-south-2": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-southeast-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-southeast-2": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-southeast-3": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-southeast-4": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "aws-global": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ca-central-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ca-west-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "eu-central-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "eu-central-2": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "eu-north-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "eu-south-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "eu-south-2": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "eu-west-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "eu-west-2": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "eu-west-3": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "il-central-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "me-central-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "me-south-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "sa-east-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-east-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-east-2": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-west-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-west-2": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + }, + }, + { + ID: "aws-cn", + RegionRegex: "^cn\\-\\w+\\-\\d+$", + DefaultConfig: PartitionConfig{ + Name: "aws-cn", + DnsSuffix: "amazonaws.com.cn", + DualStackDnsSuffix: "api.amazonwebservices.com.cn", + SupportsFIPS: true, + SupportsDualStack: true, + ImplicitGlobalRegion: "cn-northwest-1", + }, + Regions: map[string]RegionOverrides{ + "aws-cn-global": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "cn-north-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "cn-northwest-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + }, + }, + { + ID: "aws-us-gov", + RegionRegex: "^us\\-gov\\-\\w+\\-\\d+$", + DefaultConfig: PartitionConfig{ + Name: "aws-us-gov", + DnsSuffix: "amazonaws.com", + DualStackDnsSuffix: "api.aws", + SupportsFIPS: true, + SupportsDualStack: true, + ImplicitGlobalRegion: "us-gov-west-1", + }, + Regions: map[string]RegionOverrides{ + "aws-us-gov-global": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-gov-east-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-gov-west-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + }, + }, + { + ID: "aws-iso", + RegionRegex: "^us\\-iso\\-\\w+\\-\\d+$", + DefaultConfig: PartitionConfig{ + Name: "aws-iso", + DnsSuffix: "c2s.ic.gov", + DualStackDnsSuffix: "c2s.ic.gov", + SupportsFIPS: true, + SupportsDualStack: false, + ImplicitGlobalRegion: "us-iso-east-1", + }, + Regions: map[string]RegionOverrides{ + "aws-iso-global": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-iso-east-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-iso-west-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + }, + }, + { + ID: "aws-iso-b", + RegionRegex: "^us\\-isob\\-\\w+\\-\\d+$", + DefaultConfig: PartitionConfig{ + Name: "aws-iso-b", + DnsSuffix: "sc2s.sgov.gov", + DualStackDnsSuffix: "sc2s.sgov.gov", + SupportsFIPS: true, + SupportsDualStack: false, + ImplicitGlobalRegion: "us-isob-east-1", + }, + Regions: map[string]RegionOverrides{ + "aws-iso-b-global": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-isob-east-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + }, + }, + { + ID: "aws-iso-e", + RegionRegex: "^eu\\-isoe\\-\\w+\\-\\d+$", + DefaultConfig: PartitionConfig{ + Name: "aws-iso-e", + DnsSuffix: "cloud.adc-e.uk", + DualStackDnsSuffix: "cloud.adc-e.uk", + SupportsFIPS: true, + SupportsDualStack: false, + ImplicitGlobalRegion: "eu-isoe-west-1", + }, + Regions: map[string]RegionOverrides{ + "eu-isoe-west-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + }, + }, + { + ID: "aws-iso-f", + RegionRegex: "^us\\-isof\\-\\w+\\-\\d+$", + DefaultConfig: PartitionConfig{ + Name: "aws-iso-f", + DnsSuffix: "csp.hci.ic.gov", + DualStackDnsSuffix: "csp.hci.ic.gov", + SupportsFIPS: true, + SupportsDualStack: false, + ImplicitGlobalRegion: "us-isof-south-1", + }, + Regions: map[string]RegionOverrides{}, + }, +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json new file mode 100644 index 000000000000..a2f0680888e2 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json @@ -0,0 +1,223 @@ +{ + "partitions" : [ { + "id" : "aws", + "outputs" : { + "dnsSuffix" : "amazonaws.com", + "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-east-1", + "name" : "aws", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + "regions" : { + "af-south-1" : { + "description" : "Africa (Cape Town)" + }, + "ap-east-1" : { + "description" : "Asia Pacific (Hong Kong)" + }, + "ap-northeast-1" : { + "description" : "Asia Pacific (Tokyo)" + }, + "ap-northeast-2" : { + "description" : "Asia Pacific (Seoul)" + }, + "ap-northeast-3" : { + "description" : "Asia Pacific (Osaka)" + }, + "ap-south-1" : { + "description" : "Asia Pacific (Mumbai)" + }, + "ap-south-2" : { + "description" : "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1" : { + "description" : "Asia Pacific (Singapore)" + }, + "ap-southeast-2" : { + "description" : "Asia Pacific (Sydney)" + }, + "ap-southeast-3" : { + "description" : "Asia Pacific (Jakarta)" + }, + "ap-southeast-4" : { + "description" : "Asia Pacific (Melbourne)" + }, + "ap-southeast-5" : { + "description" : "Asia Pacific (Malaysia)" + }, + "aws-global" : { + "description" : "AWS Standard global region" + }, + "ca-central-1" : { + "description" : "Canada (Central)" + }, + "ca-west-1" : { + "description" : "Canada West (Calgary)" + }, + "eu-central-1" : { + "description" : "Europe (Frankfurt)" + }, + "eu-central-2" : { + "description" : "Europe (Zurich)" + }, + "eu-north-1" : { + "description" : "Europe (Stockholm)" + }, + "eu-south-1" : { + "description" : "Europe (Milan)" + }, + "eu-south-2" : { + "description" : "Europe (Spain)" + }, + "eu-west-1" : { + "description" : "Europe (Ireland)" + }, + "eu-west-2" : { + "description" : "Europe (London)" + }, + "eu-west-3" : { + "description" : "Europe (Paris)" + }, + "il-central-1" : { + "description" : "Israel (Tel Aviv)" + }, + "me-central-1" : { + "description" : "Middle East (UAE)" + }, + "me-south-1" : { + "description" : "Middle East (Bahrain)" + }, + "sa-east-1" : { + "description" : "South America (Sao Paulo)" + }, + "us-east-1" : { + "description" : "US East (N. Virginia)" + }, + "us-east-2" : { + "description" : "US East (Ohio)" + }, + "us-west-1" : { + "description" : "US West (N. California)" + }, + "us-west-2" : { + "description" : "US West (Oregon)" + } + } + }, { + "id" : "aws-cn", + "outputs" : { + "dnsSuffix" : "amazonaws.com.cn", + "dualStackDnsSuffix" : "api.amazonwebservices.com.cn", + "implicitGlobalRegion" : "cn-northwest-1", + "name" : "aws-cn", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^cn\\-\\w+\\-\\d+$", + "regions" : { + "aws-cn-global" : { + "description" : "AWS China global region" + }, + "cn-north-1" : { + "description" : "China (Beijing)" + }, + "cn-northwest-1" : { + "description" : "China (Ningxia)" + } + } + }, { + "id" : "aws-us-gov", + "outputs" : { + "dnsSuffix" : "amazonaws.com", + "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-gov-west-1", + "name" : "aws-us-gov", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-gov\\-\\w+\\-\\d+$", + "regions" : { + "aws-us-gov-global" : { + "description" : "AWS GovCloud (US) global region" + }, + "us-gov-east-1" : { + "description" : "AWS GovCloud (US-East)" + }, + "us-gov-west-1" : { + "description" : "AWS GovCloud (US-West)" + } + } + }, { + "id" : "aws-iso", + "outputs" : { + "dnsSuffix" : "c2s.ic.gov", + "dualStackDnsSuffix" : "c2s.ic.gov", + "implicitGlobalRegion" : "us-iso-east-1", + "name" : "aws-iso", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-iso\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-global" : { + "description" : "AWS ISO (US) global region" + }, + "us-iso-east-1" : { + "description" : "US ISO East" + }, + "us-iso-west-1" : { + "description" : "US ISO WEST" + } + } + }, { + "id" : "aws-iso-b", + "outputs" : { + "dnsSuffix" : "sc2s.sgov.gov", + "dualStackDnsSuffix" : "sc2s.sgov.gov", + "implicitGlobalRegion" : "us-isob-east-1", + "name" : "aws-iso-b", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-isob\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-b-global" : { + "description" : "AWS ISOB (US) global region" + }, + "us-isob-east-1" : { + "description" : "US ISOB East (Ohio)" + } + } + }, { + "id" : "aws-iso-e", + "outputs" : { + "dnsSuffix" : "cloud.adc-e.uk", + "dualStackDnsSuffix" : "cloud.adc-e.uk", + "implicitGlobalRegion" : "eu-isoe-west-1", + "name" : "aws-iso-e", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^eu\\-isoe\\-\\w+\\-\\d+$", + "regions" : { + "eu-isoe-west-1" : { + "description" : "EU ISOE West" + } + } + }, { + "id" : "aws-iso-f", + "outputs" : { + "dnsSuffix" : "csp.hci.ic.gov", + "dualStackDnsSuffix" : "csp.hci.ic.gov", + "implicitGlobalRegion" : "us-isof-south-1", + "name" : "aws-iso-f", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-isof\\-\\w+\\-\\d+$", + "regions" : { } + } ], + "version" : "1.1" +} \ No newline at end of file diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/endpoints.go new file mode 100644 index 000000000000..67950ca3661d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/endpoints.go @@ -0,0 +1,201 @@ +package endpoints + +import ( + "fmt" + "regexp" + "strings" + + "github.com/aws/aws-sdk-go-v2/aws" +) + +const ( + defaultProtocol = "https" + defaultSigner = "v4" +) + +var ( + protocolPriority = []string{"https", "http"} + signerPriority = []string{"v4"} +) + +// Options provide configuration needed to direct how endpoints are resolved. +type Options struct { + // Disable usage of HTTPS (TLS / SSL) + DisableHTTPS bool +} + +// Partitions is a slice of partition +type Partitions []Partition + +// ResolveEndpoint resolves a service endpoint for the given region and options. +func (ps Partitions) ResolveEndpoint(region string, opts Options) (aws.Endpoint, error) { + if len(ps) == 0 { + return aws.Endpoint{}, fmt.Errorf("no partitions found") + } + + for i := 0; i < len(ps); i++ { + if !ps[i].canResolveEndpoint(region) { + continue + } + + return ps[i].ResolveEndpoint(region, opts) + } + + // fallback to first partition format to use when resolving the endpoint. + return ps[0].ResolveEndpoint(region, opts) +} + +// Partition is an AWS partition description for a service and its' region endpoints. +type Partition struct { + ID string + RegionRegex *regexp.Regexp + PartitionEndpoint string + IsRegionalized bool + Defaults Endpoint + Endpoints Endpoints +} + +func (p Partition) canResolveEndpoint(region string) bool { + _, ok := p.Endpoints[region] + return ok || p.RegionRegex.MatchString(region) +} + +// ResolveEndpoint resolves and service endpoint for the given region and options. +func (p Partition) ResolveEndpoint(region string, options Options) (resolved aws.Endpoint, err error) { + if len(region) == 0 && len(p.PartitionEndpoint) != 0 { + region = p.PartitionEndpoint + } + + e, _ := p.endpointForRegion(region) + + return e.resolve(p.ID, region, p.Defaults, options), nil +} + +func (p Partition) endpointForRegion(region string) (Endpoint, bool) { + if e, ok := p.Endpoints[region]; ok { + return e, true + } + + if !p.IsRegionalized { + return p.Endpoints[p.PartitionEndpoint], region == p.PartitionEndpoint + } + + // Unable to find any matching endpoint, return + // blank that will be used for generic endpoint creation. + return Endpoint{}, false +} + +// Endpoints is a map of service config regions to endpoints +type Endpoints map[string]Endpoint + +// CredentialScope is the credential scope of a region and service +type CredentialScope struct { + Region string + Service string +} + +// Endpoint is a service endpoint description +type Endpoint struct { + // True if the endpoint cannot be resolved for this partition/region/service + Unresolveable aws.Ternary + + Hostname string + Protocols []string + + CredentialScope CredentialScope + + SignatureVersions []string `json:"signatureVersions"` +} + +func (e Endpoint) resolve(partition, region string, def Endpoint, options Options) aws.Endpoint { + var merged Endpoint + merged.mergeIn(def) + merged.mergeIn(e) + e = merged + + var u string + if e.Unresolveable != aws.TrueTernary { + // Only attempt to resolve the endpoint if it can be resolved. + hostname := strings.Replace(e.Hostname, "{region}", region, 1) + + scheme := getEndpointScheme(e.Protocols, options.DisableHTTPS) + u = scheme + "://" + hostname + } + + signingRegion := e.CredentialScope.Region + if len(signingRegion) == 0 { + signingRegion = region + } + signingName := e.CredentialScope.Service + + return aws.Endpoint{ + URL: u, + PartitionID: partition, + SigningRegion: signingRegion, + SigningName: signingName, + SigningMethod: getByPriority(e.SignatureVersions, signerPriority, defaultSigner), + } +} + +func (e *Endpoint) mergeIn(other Endpoint) { + if other.Unresolveable != aws.UnknownTernary { + e.Unresolveable = other.Unresolveable + } + if len(other.Hostname) > 0 { + e.Hostname = other.Hostname + } + if len(other.Protocols) > 0 { + e.Protocols = other.Protocols + } + if len(other.CredentialScope.Region) > 0 { + e.CredentialScope.Region = other.CredentialScope.Region + } + if len(other.CredentialScope.Service) > 0 { + e.CredentialScope.Service = other.CredentialScope.Service + } + if len(other.SignatureVersions) > 0 { + e.SignatureVersions = other.SignatureVersions + } +} + +func getEndpointScheme(protocols []string, disableHTTPS bool) string { + if disableHTTPS { + return "http" + } + + return getByPriority(protocols, protocolPriority, defaultProtocol) +} + +func getByPriority(s []string, p []string, def string) string { + if len(s) == 0 { + return def + } + + for i := 0; i < len(p); i++ { + for j := 0; j < len(s); j++ { + if s[j] == p[i] { + return s[j] + } + } + } + + return s[0] +} + +// MapFIPSRegion extracts the intrinsic AWS region from one that may have an +// embedded FIPS microformat. +func MapFIPSRegion(region string) string { + const fipsInfix = "-fips-" + const fipsPrefix = "fips-" + const fipsSuffix = "-fips" + + if strings.Contains(region, fipsInfix) || + strings.Contains(region, fipsPrefix) || + strings.Contains(region, fipsSuffix) { + region = strings.ReplaceAll(region, fipsInfix, "-") + region = strings.ReplaceAll(region, fipsPrefix, "") + region = strings.ReplaceAll(region, fipsSuffix, "") + } + + return region +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md index f715bf166825..351e4f2d8773 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md @@ -1,3 +1,207 @@ +# v2.6.18 (2024-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.17 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.16 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.15 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.14 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.13 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.12 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.11 (2024-06-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.10 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.9 (2024-06-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.8 (2024-06-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.7 (2024-05-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.6 (2024-05-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.5 (2024-03-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.4 (2024-03-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.3 (2024-03-07) + +* **Bug Fix**: Remove dependency on go-cmp. +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.2 (2024-02-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.1 (2024-02-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.10 (2024-01-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.9 (2023-12-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.8 (2023-12-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.7 (2023-11-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.6 (2023-11-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.5 (2023-11-28.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.4 (2023-11-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.3 (2023-11-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.2 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.1 (2023-11-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.5.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.37 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.36 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.35 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.34 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.33 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.32 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.31 (2023-07-31) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.30 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.29 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.28 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.27 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.26 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.25 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.24 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.23 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.22 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.21 (2022-12-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.20 (2022-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.19 (2022-10-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.4.18 (2022-10-21) + +* **Dependency Update**: Updated to the latest SDK module versions + # v2.4.17 (2022-09-20) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go index 4c105f81e945..7b257d351bbb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go @@ -3,4 +3,4 @@ package endpoints // goModuleVersion is the tagged release for this module -const goModuleVersion = "2.4.17" +const goModuleVersion = "2.6.18" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md index 3c2ff160e7d6..be61098b46dc 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md @@ -1,3 +1,134 @@ +# v1.8.1 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. + +# v1.8.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. + +# v1.7.3 (2024-01-22) + +* **Bug Fix**: Remove invalid escaping of shared config values. All values in the shared config file will now be interpreted literally, save for fully-quoted strings which are unwrapped for legacy reasons. + +# v1.7.2 (2023-12-08) + +* **Bug Fix**: Correct loading of [services *] sections into shared config. + +# v1.7.1 (2023-11-16) + +* **Bug Fix**: Fix recognition of trailing comments in shared config properties. # or ; separators that aren't preceded by whitespace at the end of a property value should be considered part of it. + +# v1.7.0 (2023-11-13) + +* **Feature**: Replace the legacy config parser with a modern, less-strict implementation. Parsing failures within a section will now simply ignore the invalid line rather than silently drop the entire section. + +# v1.6.0 (2023-11-09.2) + +* **Feature**: BREAKFIX: In order to support subproperty parsing, invalid property definitions must not be ignored + +# v1.5.2 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.5.1 (2023-11-07) + +* **Bug Fix**: Fix subproperty performance regression + +# v1.5.0 (2023-11-01) + +* **Feature**: Adds support for configured endpoints via environment variables and the AWS shared configuration file. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.45 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.44 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.43 (2023-09-22) + +* **Bug Fix**: Fixed a bug where merging `max_attempts` or `duration_seconds` fields across shared config files with invalid values would silently default them to 0. +* **Bug Fix**: Move type assertion of config values out of the parsing stage, which resolves an issue where the contents of a profile would silently be dropped with certain numeric formats. + +# v1.3.42 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.41 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.40 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.39 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.38 (2023-07-31) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.37 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.36 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.35 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.34 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.33 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.32 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.31 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.30 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.29 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.28 (2022-12-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.27 (2022-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.26 (2022-10-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.25 (2022-10-21) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.3.24 (2022-09-20) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ast.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ast.go deleted file mode 100644 index e83a99886bcc..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ast.go +++ /dev/null @@ -1,120 +0,0 @@ -package ini - -// ASTKind represents different states in the parse table -// and the type of AST that is being constructed -type ASTKind int - -// ASTKind* is used in the parse table to transition between -// the different states -const ( - ASTKindNone = ASTKind(iota) - ASTKindStart - ASTKindExpr - ASTKindEqualExpr - ASTKindStatement - ASTKindSkipStatement - ASTKindExprStatement - ASTKindSectionStatement - ASTKindNestedSectionStatement - ASTKindCompletedNestedSectionStatement - ASTKindCommentStatement - ASTKindCompletedSectionStatement -) - -func (k ASTKind) String() string { - switch k { - case ASTKindNone: - return "none" - case ASTKindStart: - return "start" - case ASTKindExpr: - return "expr" - case ASTKindStatement: - return "stmt" - case ASTKindSectionStatement: - return "section_stmt" - case ASTKindExprStatement: - return "expr_stmt" - case ASTKindCommentStatement: - return "comment" - case ASTKindNestedSectionStatement: - return "nested_section_stmt" - case ASTKindCompletedSectionStatement: - return "completed_stmt" - case ASTKindSkipStatement: - return "skip" - default: - return "" - } -} - -// AST interface allows us to determine what kind of node we -// are on and casting may not need to be necessary. -// -// The root is always the first node in Children -type AST struct { - Kind ASTKind - Root Token - RootToken bool - Children []AST -} - -func newAST(kind ASTKind, root AST, children ...AST) AST { - return AST{ - Kind: kind, - Children: append([]AST{root}, children...), - } -} - -func newASTWithRootToken(kind ASTKind, root Token, children ...AST) AST { - return AST{ - Kind: kind, - Root: root, - RootToken: true, - Children: children, - } -} - -// AppendChild will append to the list of children an AST has. -func (a *AST) AppendChild(child AST) { - a.Children = append(a.Children, child) -} - -// GetRoot will return the root AST which can be the first entry -// in the children list or a token. -func (a *AST) GetRoot() AST { - if a.RootToken { - return *a - } - - if len(a.Children) == 0 { - return AST{} - } - - return a.Children[0] -} - -// GetChildren will return the current AST's list of children -func (a *AST) GetChildren() []AST { - if len(a.Children) == 0 { - return []AST{} - } - - if a.RootToken { - return a.Children - } - - return a.Children[1:] -} - -// SetChildren will set and override all children of the AST. -func (a *AST) SetChildren(children []AST) { - if a.RootToken { - a.Children = children - } else { - a.Children = append(a.Children[:1], children...) - } -} - -// Start is used to indicate the starting state of the parse table. -var Start = newAST(ASTKindStart, AST{}) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/comma_token.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/comma_token.go deleted file mode 100644 index 0895d53cbe65..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/comma_token.go +++ /dev/null @@ -1,11 +0,0 @@ -package ini - -var commaRunes = []rune(",") - -func isComma(b rune) bool { - return b == ',' -} - -func newCommaToken() Token { - return newToken(TokenComma, commaRunes, NoneType) -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/comment_token.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/comment_token.go deleted file mode 100644 index 0b76999ba1f3..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/comment_token.go +++ /dev/null @@ -1,35 +0,0 @@ -package ini - -// isComment will return whether or not the next byte(s) is a -// comment. -func isComment(b []rune) bool { - if len(b) == 0 { - return false - } - - switch b[0] { - case ';': - return true - case '#': - return true - } - - return false -} - -// newCommentToken will create a comment token and -// return how many bytes were read. -func newCommentToken(b []rune) (Token, int, error) { - i := 0 - for ; i < len(b); i++ { - if b[i] == '\n' { - break - } - - if len(b)-i > 2 && b[i] == '\r' && b[i+1] == '\n' { - break - } - } - - return newToken(TokenComment, b[:i], NoneType), i, nil -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/dependency.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/dependency.go deleted file mode 100644 index f5ebe52e1a55..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/dependency.go +++ /dev/null @@ -1,6 +0,0 @@ -package ini - -import ( - // internal/ini module was carved out of this module - _ "github.com/aws/aws-sdk-go-v2" -) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/doc.go deleted file mode 100644 index fdd5321b4c64..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/doc.go +++ /dev/null @@ -1,43 +0,0 @@ -// Package ini is an LL(1) parser for configuration files. -// -// Example: -// sections, err := ini.OpenFile("/path/to/file") -// if err != nil { -// panic(err) -// } -// -// profile := "foo" -// section, ok := sections.GetSection(profile) -// if !ok { -// fmt.Printf("section %q could not be found", profile) -// } -// -// Below is the BNF that describes this parser -// -// Grammar: -// stmt -> section | stmt' -// stmt' -> epsilon | expr -// expr -> value (stmt)* | equal_expr (stmt)* -// equal_expr -> value ( ':' | '=' ) equal_expr' -// equal_expr' -> number | string | quoted_string -// quoted_string -> " quoted_string' -// quoted_string' -> string quoted_string_end -// quoted_string_end -> " -// -// section -> [ section' -// section' -> section_value section_close -// section_value -> number | string_subset | boolean | quoted_string_subset -// quoted_string_subset -> " quoted_string_subset' -// quoted_string_subset' -> string_subset quoted_string_end -// quoted_string_subset -> " -// section_close -> ] -// -// value -> number | string_subset | boolean -// string -> ? UTF-8 Code-Points except '\n' (U+000A) and '\r\n' (U+000D U+000A) ? -// string_subset -> ? Code-points excepted by grammar except ':' (U+003A), '=' (U+003D), '[' (U+005B), and ']' (U+005D) ? -// -// SkipState will skip (NL WS)+ -// -// comment -> # comment' | ; comment' -// comment' -> epsilon | value -package ini diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/empty_token.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/empty_token.go deleted file mode 100644 index 04345a54c20d..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/empty_token.go +++ /dev/null @@ -1,4 +0,0 @@ -package ini - -// emptyToken is used to satisfy the Token interface -var emptyToken = newToken(TokenNone, []rune{}, NoneType) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/expression.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/expression.go deleted file mode 100644 index 91ba2a59dd5e..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/expression.go +++ /dev/null @@ -1,24 +0,0 @@ -package ini - -// newExpression will return an expression AST. -// Expr represents an expression -// -// grammar: -// expr -> string | number -func newExpression(tok Token) AST { - return newASTWithRootToken(ASTKindExpr, tok) -} - -func newEqualExpr(left AST, tok Token) AST { - return newASTWithRootToken(ASTKindEqualExpr, tok, left) -} - -// EqualExprKey will return a LHS value in the equal expr -func EqualExprKey(ast AST) string { - children := ast.GetChildren() - if len(children) == 0 || ast.Kind != ASTKindEqualExpr { - return "" - } - - return string(children[0].Root.Raw()) -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go index 404ac67348a9..ef6a38110ed2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go @@ -3,4 +3,4 @@ package ini // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.3.24" +const goModuleVersion = "1.8.1" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini.go index f7406231318d..cefcce91e76c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini.go @@ -1,13 +1,26 @@ +// Package ini implements parsing of the AWS shared config file. +// +// Example: +// sections, err := ini.OpenFile("/path/to/file") +// if err != nil { +// panic(err) +// } +// +// profile := "foo" +// section, ok := sections.GetSection(profile) +// if !ok { +// fmt.Printf("section %q could not be found", profile) +// } package ini import ( "fmt" "io" "os" + "strings" ) -// OpenFile takes a path to a given file, and will open and parse -// that file. +// OpenFile parses shared config from the given file path. func OpenFile(path string) (sections Sections, err error) { f, oerr := os.Open(path) if oerr != nil { @@ -26,33 +39,18 @@ func OpenFile(path string) (sections Sections, err error) { return Parse(f, path) } -// Parse will parse the given file using the shared config -// visitor. -func Parse(f io.Reader, path string) (Sections, error) { - tree, err := ParseAST(f) +// Parse parses shared config from the given reader. +func Parse(r io.Reader, path string) (Sections, error) { + contents, err := io.ReadAll(r) if err != nil { - return Sections{}, err + return Sections{}, fmt.Errorf("read all: %v", err) } - v := NewDefaultVisitor(path) - if err = Walk(tree, v); err != nil { - return Sections{}, err - } - - return v.Sections, nil -} - -// ParseBytes will parse the given bytes and return the parsed sections. -func ParseBytes(b []byte) (Sections, error) { - tree, err := ParseASTBytes(b) + lines := strings.Split(string(contents), "\n") + tokens, err := tokenize(lines) if err != nil { - return Sections{}, err - } - - v := NewDefaultVisitor("") - if err = Walk(tree, v); err != nil { - return Sections{}, err + return Sections{}, fmt.Errorf("tokenize: %v", err) } - return v.Sections, nil + return parse(tokens, path), nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini_lexer.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini_lexer.go deleted file mode 100644 index abf1fb036262..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini_lexer.go +++ /dev/null @@ -1,157 +0,0 @@ -package ini - -import ( - "bytes" - "io" - "io/ioutil" -) - -// TokenType represents the various different tokens types -type TokenType int - -func (t TokenType) String() string { - switch t { - case TokenNone: - return "none" - case TokenLit: - return "literal" - case TokenSep: - return "sep" - case TokenOp: - return "op" - case TokenWS: - return "ws" - case TokenNL: - return "newline" - case TokenComment: - return "comment" - case TokenComma: - return "comma" - default: - return "" - } -} - -// TokenType enums -const ( - TokenNone = TokenType(iota) - TokenLit - TokenSep - TokenComma - TokenOp - TokenWS - TokenNL - TokenComment -) - -type iniLexer struct{} - -// Tokenize will return a list of tokens during lexical analysis of the -// io.Reader. -func (l *iniLexer) Tokenize(r io.Reader) ([]Token, error) { - b, err := ioutil.ReadAll(r) - if err != nil { - return nil, &UnableToReadFile{Err: err} - } - - return l.tokenize(b) -} - -func (l *iniLexer) tokenize(b []byte) ([]Token, error) { - runes := bytes.Runes(b) - var err error - n := 0 - tokenAmount := countTokens(runes) - tokens := make([]Token, tokenAmount) - count := 0 - - for len(runes) > 0 && count < tokenAmount { - switch { - case isWhitespace(runes[0]): - tokens[count], n, err = newWSToken(runes) - case isComma(runes[0]): - tokens[count], n = newCommaToken(), 1 - case isComment(runes): - tokens[count], n, err = newCommentToken(runes) - case isNewline(runes): - tokens[count], n, err = newNewlineToken(runes) - case isSep(runes): - tokens[count], n, err = newSepToken(runes) - case isOp(runes): - tokens[count], n, err = newOpToken(runes) - default: - tokens[count], n, err = newLitToken(runes) - } - - if err != nil { - return nil, err - } - - count++ - - runes = runes[n:] - } - - return tokens[:count], nil -} - -func countTokens(runes []rune) int { - count, n := 0, 0 - var err error - - for len(runes) > 0 { - switch { - case isWhitespace(runes[0]): - _, n, err = newWSToken(runes) - case isComma(runes[0]): - _, n = newCommaToken(), 1 - case isComment(runes): - _, n, err = newCommentToken(runes) - case isNewline(runes): - _, n, err = newNewlineToken(runes) - case isSep(runes): - _, n, err = newSepToken(runes) - case isOp(runes): - _, n, err = newOpToken(runes) - default: - _, n, err = newLitToken(runes) - } - - if err != nil { - return 0 - } - - count++ - runes = runes[n:] - } - - return count + 1 -} - -// Token indicates a metadata about a given value. -type Token struct { - t TokenType - ValueType ValueType - base int - raw []rune -} - -var emptyValue = Value{} - -func newToken(t TokenType, raw []rune, v ValueType) Token { - return Token{ - t: t, - raw: raw, - ValueType: v, - } -} - -// Raw return the raw runes that were consumed -func (tok Token) Raw() []rune { - return tok.raw -} - -// Type returns the token type -func (tok Token) Type() TokenType { - return tok.t -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini_parser.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini_parser.go deleted file mode 100644 index 12fc7d5aa495..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini_parser.go +++ /dev/null @@ -1,349 +0,0 @@ -package ini - -import ( - "fmt" - "io" -) - -// ParseState represents the current state of the parser. -type ParseState uint - -// State enums for the parse table -const ( - InvalidState ParseState = iota - // stmt -> value stmt' - StatementState - // stmt' -> MarkComplete | op stmt - StatementPrimeState - // value -> number | string | boolean | quoted_string - ValueState - // section -> [ section' - OpenScopeState - // section' -> value section_close - SectionState - // section_close -> ] - CloseScopeState - // SkipState will skip (NL WS)+ - SkipState - // SkipTokenState will skip any token and push the previous - // state onto the stack. - SkipTokenState - // comment -> # comment' | ; comment' - // comment' -> MarkComplete | value - CommentState - // MarkComplete state will complete statements and move that - // to the completed AST list - MarkCompleteState - // TerminalState signifies that the tokens have been fully parsed - TerminalState -) - -// parseTable is a state machine to dictate the grammar above. -var parseTable = map[ASTKind]map[TokenType]ParseState{ - ASTKindStart: { - TokenLit: StatementState, - TokenSep: OpenScopeState, - TokenWS: SkipTokenState, - TokenNL: SkipTokenState, - TokenComment: CommentState, - TokenNone: TerminalState, - }, - ASTKindCommentStatement: { - TokenLit: StatementState, - TokenSep: OpenScopeState, - TokenWS: SkipTokenState, - TokenNL: SkipTokenState, - TokenComment: CommentState, - TokenNone: MarkCompleteState, - }, - ASTKindExpr: { - TokenOp: StatementPrimeState, - TokenLit: ValueState, - TokenSep: OpenScopeState, - TokenWS: ValueState, - TokenNL: SkipState, - TokenComment: CommentState, - TokenNone: MarkCompleteState, - }, - ASTKindEqualExpr: { - TokenLit: ValueState, - TokenSep: ValueState, - TokenOp: ValueState, - TokenWS: SkipTokenState, - TokenNL: SkipState, - }, - ASTKindStatement: { - TokenLit: SectionState, - TokenSep: CloseScopeState, - TokenWS: SkipTokenState, - TokenNL: SkipTokenState, - TokenComment: CommentState, - TokenNone: MarkCompleteState, - }, - ASTKindExprStatement: { - TokenLit: ValueState, - TokenSep: ValueState, - TokenOp: ValueState, - TokenWS: ValueState, - TokenNL: MarkCompleteState, - TokenComment: CommentState, - TokenNone: TerminalState, - TokenComma: SkipState, - }, - ASTKindSectionStatement: { - TokenLit: SectionState, - TokenOp: SectionState, - TokenSep: CloseScopeState, - TokenWS: SectionState, - TokenNL: SkipTokenState, - }, - ASTKindCompletedSectionStatement: { - TokenWS: SkipTokenState, - TokenNL: SkipTokenState, - TokenLit: StatementState, - TokenSep: OpenScopeState, - TokenComment: CommentState, - TokenNone: MarkCompleteState, - }, - ASTKindSkipStatement: { - TokenLit: StatementState, - TokenSep: OpenScopeState, - TokenWS: SkipTokenState, - TokenNL: SkipTokenState, - TokenComment: CommentState, - TokenNone: TerminalState, - }, -} - -// ParseAST will parse input from an io.Reader using -// an LL(1) parser. -func ParseAST(r io.Reader) ([]AST, error) { - lexer := iniLexer{} - tokens, err := lexer.Tokenize(r) - if err != nil { - return []AST{}, err - } - - return parse(tokens) -} - -// ParseASTBytes will parse input from a byte slice using -// an LL(1) parser. -func ParseASTBytes(b []byte) ([]AST, error) { - lexer := iniLexer{} - tokens, err := lexer.tokenize(b) - if err != nil { - return []AST{}, err - } - - return parse(tokens) -} - -func parse(tokens []Token) ([]AST, error) { - start := Start - stack := newParseStack(3, len(tokens)) - - stack.Push(start) - s := newSkipper() - -loop: - for stack.Len() > 0 { - k := stack.Pop() - - var tok Token - if len(tokens) == 0 { - // this occurs when all the tokens have been processed - // but reduction of what's left on the stack needs to - // occur. - tok = emptyToken - } else { - tok = tokens[0] - } - - step := parseTable[k.Kind][tok.Type()] - if s.ShouldSkip(tok) { - // being in a skip state with no tokens will break out of - // the parse loop since there is nothing left to process. - if len(tokens) == 0 { - break loop - } - // if should skip is true, we skip the tokens until should skip is set to false. - step = SkipTokenState - } - - switch step { - case TerminalState: - // Finished parsing. Push what should be the last - // statement to the stack. If there is anything left - // on the stack, an error in parsing has occurred. - if k.Kind != ASTKindStart { - stack.MarkComplete(k) - } - break loop - case SkipTokenState: - // When skipping a token, the previous state was popped off the stack. - // To maintain the correct state, the previous state will be pushed - // onto the stack. - stack.Push(k) - case StatementState: - if k.Kind != ASTKindStart { - stack.MarkComplete(k) - } - expr := newExpression(tok) - stack.Push(expr) - case StatementPrimeState: - if tok.Type() != TokenOp { - stack.MarkComplete(k) - continue - } - - if k.Kind != ASTKindExpr { - return nil, NewParseError( - fmt.Sprintf("invalid expression: expected Expr type, but found %T type", k), - ) - } - - k = trimSpaces(k) - expr := newEqualExpr(k, tok) - stack.Push(expr) - case ValueState: - // ValueState requires the previous state to either be an equal expression - // or an expression statement. - switch k.Kind { - case ASTKindEqualExpr: - // assigning a value to some key - k.AppendChild(newExpression(tok)) - stack.Push(newExprStatement(k)) - case ASTKindExpr: - k.Root.raw = append(k.Root.raw, tok.Raw()...) - stack.Push(k) - case ASTKindExprStatement: - root := k.GetRoot() - children := root.GetChildren() - if len(children) == 0 { - return nil, NewParseError( - fmt.Sprintf("invalid expression: AST contains no children %s", k.Kind), - ) - } - - rhs := children[len(children)-1] - - if rhs.Root.ValueType != QuotedStringType { - rhs.Root.ValueType = StringType - rhs.Root.raw = append(rhs.Root.raw, tok.Raw()...) - - } - - children[len(children)-1] = rhs - root.SetChildren(children) - - stack.Push(k) - } - case OpenScopeState: - if !runeCompare(tok.Raw(), openBrace) { - return nil, NewParseError("expected '['") - } - // If OpenScopeState is not at the start, we must mark the previous ast as complete - // - // for example: if previous ast was a skip statement; - // we should mark it as complete before we create a new statement - if k.Kind != ASTKindStart { - stack.MarkComplete(k) - } - - stmt := newStatement() - stack.Push(stmt) - case CloseScopeState: - if !runeCompare(tok.Raw(), closeBrace) { - return nil, NewParseError("expected ']'") - } - - k = trimSpaces(k) - stack.Push(newCompletedSectionStatement(k)) - case SectionState: - var stmt AST - - switch k.Kind { - case ASTKindStatement: - // If there are multiple literals inside of a scope declaration, - // then the current token's raw value will be appended to the Name. - // - // This handles cases like [ profile default ] - // - // k will represent a SectionStatement with the children representing - // the label of the section - stmt = newSectionStatement(tok) - case ASTKindSectionStatement: - k.Root.raw = append(k.Root.raw, tok.Raw()...) - stmt = k - default: - return nil, NewParseError( - fmt.Sprintf("invalid statement: expected statement: %v", k.Kind), - ) - } - - stack.Push(stmt) - case MarkCompleteState: - if k.Kind != ASTKindStart { - stack.MarkComplete(k) - } - - if stack.Len() == 0 { - stack.Push(start) - } - case SkipState: - stack.Push(newSkipStatement(k)) - s.Skip() - case CommentState: - if k.Kind == ASTKindStart { - stack.Push(k) - } else { - stack.MarkComplete(k) - } - - stmt := newCommentStatement(tok) - stack.Push(stmt) - default: - return nil, NewParseError( - fmt.Sprintf("invalid state with ASTKind %v and TokenType %v", - k.Kind, tok.Type())) - } - - if len(tokens) > 0 { - tokens = tokens[1:] - } - } - - // this occurs when a statement has not been completed - if stack.top > 1 { - return nil, NewParseError(fmt.Sprintf("incomplete ini expression")) - } - - // returns a sublist which exludes the start symbol - return stack.List(), nil -} - -// trimSpaces will trim spaces on the left and right hand side of -// the literal. -func trimSpaces(k AST) AST { - // trim left hand side of spaces - for i := 0; i < len(k.Root.raw); i++ { - if !isWhitespace(k.Root.raw[i]) { - break - } - - k.Root.raw = k.Root.raw[1:] - i-- - } - - // trim right hand side of spaces - for i := len(k.Root.raw) - 1; i >= 0; i-- { - if !isWhitespace(k.Root.raw[i]) { - break - } - - k.Root.raw = k.Root.raw[:len(k.Root.raw)-1] - } - - return k -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/literal_tokens.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/literal_tokens.go deleted file mode 100644 index eca42d1b2937..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/literal_tokens.go +++ /dev/null @@ -1,336 +0,0 @@ -package ini - -import ( - "fmt" - "strconv" - "strings" - "unicode" -) - -var ( - runesTrue = []rune("true") - runesFalse = []rune("false") -) - -var literalValues = [][]rune{ - runesTrue, - runesFalse, -} - -func isBoolValue(b []rune) bool { - for _, lv := range literalValues { - if isCaselessLitValue(lv, b) { - return true - } - } - return false -} - -func isLitValue(want, have []rune) bool { - if len(have) < len(want) { - return false - } - - for i := 0; i < len(want); i++ { - if want[i] != have[i] { - return false - } - } - - return true -} - -// isCaselessLitValue is a caseless value comparison, assumes want is already lower-cased for efficiency. -func isCaselessLitValue(want, have []rune) bool { - if len(have) < len(want) { - return false - } - - for i := 0; i < len(want); i++ { - if want[i] != unicode.ToLower(have[i]) { - return false - } - } - - return true -} - -// isNumberValue will return whether not the leading characters in -// a byte slice is a number. A number is delimited by whitespace or -// the newline token. -// -// A number is defined to be in a binary, octal, decimal (int | float), hex format, -// or in scientific notation. -func isNumberValue(b []rune) bool { - negativeIndex := 0 - helper := numberHelper{} - needDigit := false - - for i := 0; i < len(b); i++ { - negativeIndex++ - - switch b[i] { - case '-': - if helper.IsNegative() || negativeIndex != 1 { - return false - } - helper.Determine(b[i]) - needDigit = true - continue - case 'e', 'E': - if err := helper.Determine(b[i]); err != nil { - return false - } - negativeIndex = 0 - needDigit = true - continue - case 'b': - if helper.numberFormat == hex { - break - } - fallthrough - case 'o', 'x': - needDigit = true - if i == 0 { - return false - } - - fallthrough - case '.': - if err := helper.Determine(b[i]); err != nil { - return false - } - needDigit = true - continue - } - - if i > 0 && (isNewline(b[i:]) || isWhitespace(b[i])) { - return !needDigit - } - - if !helper.CorrectByte(b[i]) { - return false - } - needDigit = false - } - - return !needDigit -} - -func isValid(b []rune) (bool, int, error) { - if len(b) == 0 { - // TODO: should probably return an error - return false, 0, nil - } - - return isValidRune(b[0]), 1, nil -} - -func isValidRune(r rune) bool { - return r != ':' && r != '=' && r != '[' && r != ']' && r != ' ' && r != '\n' -} - -// ValueType is an enum that will signify what type -// the Value is -type ValueType int - -func (v ValueType) String() string { - switch v { - case NoneType: - return "NONE" - case DecimalType: - return "FLOAT" - case IntegerType: - return "INT" - case StringType: - return "STRING" - case BoolType: - return "BOOL" - } - - return "" -} - -// ValueType enums -const ( - NoneType = ValueType(iota) - DecimalType - IntegerType - StringType - QuotedStringType - BoolType -) - -// Value is a union container -type Value struct { - Type ValueType - raw []rune - - integer int64 - decimal float64 - boolean bool - str string -} - -func newValue(t ValueType, base int, raw []rune) (Value, error) { - v := Value{ - Type: t, - raw: raw, - } - var err error - - switch t { - case DecimalType: - v.decimal, err = strconv.ParseFloat(string(raw), 64) - case IntegerType: - if base != 10 { - raw = raw[2:] - } - - v.integer, err = strconv.ParseInt(string(raw), base, 64) - case StringType: - v.str = string(raw) - case QuotedStringType: - v.str = string(raw[1 : len(raw)-1]) - case BoolType: - v.boolean = isCaselessLitValue(runesTrue, v.raw) - } - - // issue 2253 - // - // if the value trying to be parsed is too large, then we will use - // the 'StringType' and raw value instead. - if nerr, ok := err.(*strconv.NumError); ok && nerr.Err == strconv.ErrRange { - v.Type = StringType - v.str = string(raw) - err = nil - } - - return v, err -} - -// NewStringValue returns a Value type generated using a string input. -func NewStringValue(str string) (Value, error) { - return newValue(StringType, 10, []rune(str)) -} - -// NewIntValue returns a Value type generated using an int64 input. -func NewIntValue(i int64) (Value, error) { - v := strconv.FormatInt(i, 10) - return newValue(IntegerType, 10, []rune(v)) -} - -func (v Value) String() string { - switch v.Type { - case DecimalType: - return fmt.Sprintf("decimal: %f", v.decimal) - case IntegerType: - return fmt.Sprintf("integer: %d", v.integer) - case StringType: - return fmt.Sprintf("string: %s", string(v.raw)) - case QuotedStringType: - return fmt.Sprintf("quoted string: %s", string(v.raw)) - case BoolType: - return fmt.Sprintf("bool: %t", v.boolean) - default: - return "union not set" - } -} - -func newLitToken(b []rune) (Token, int, error) { - n := 0 - var err error - - token := Token{} - if b[0] == '"' { - n, err = getStringValue(b) - if err != nil { - return token, n, err - } - - token = newToken(TokenLit, b[:n], QuotedStringType) - } else if isNumberValue(b) { - var base int - base, n, err = getNumericalValue(b) - if err != nil { - return token, 0, err - } - - value := b[:n] - vType := IntegerType - if contains(value, '.') || hasExponent(value) { - vType = DecimalType - } - token = newToken(TokenLit, value, vType) - token.base = base - } else if isBoolValue(b) { - n, err = getBoolValue(b) - - token = newToken(TokenLit, b[:n], BoolType) - } else { - n, err = getValue(b) - token = newToken(TokenLit, b[:n], StringType) - } - - return token, n, err -} - -// IntValue returns an integer value -func (v Value) IntValue() int64 { - return v.integer -} - -// FloatValue returns a float value -func (v Value) FloatValue() float64 { - return v.decimal -} - -// BoolValue returns a bool value -func (v Value) BoolValue() bool { - return v.boolean -} - -func isTrimmable(r rune) bool { - switch r { - case '\n', ' ': - return true - } - return false -} - -// StringValue returns the string value -func (v Value) StringValue() string { - switch v.Type { - case StringType: - return strings.TrimFunc(string(v.raw), isTrimmable) - case QuotedStringType: - // preserve all characters in the quotes - return string(removeEscapedCharacters(v.raw[1 : len(v.raw)-1])) - default: - return strings.TrimFunc(string(v.raw), isTrimmable) - } -} - -func contains(runes []rune, c rune) bool { - for i := 0; i < len(runes); i++ { - if runes[i] == c { - return true - } - } - - return false -} - -func runeCompare(v1 []rune, v2 []rune) bool { - if len(v1) != len(v2) { - return false - } - - for i := 0; i < len(v1); i++ { - if v1[i] != v2[i] { - return false - } - } - - return true -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/newline_token.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/newline_token.go deleted file mode 100644 index e52ac399f17d..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/newline_token.go +++ /dev/null @@ -1,30 +0,0 @@ -package ini - -func isNewline(b []rune) bool { - if len(b) == 0 { - return false - } - - if b[0] == '\n' { - return true - } - - if len(b) < 2 { - return false - } - - return b[0] == '\r' && b[1] == '\n' -} - -func newNewlineToken(b []rune) (Token, int, error) { - i := 1 - if b[0] == '\r' && isNewline(b[1:]) { - i++ - } - - if !isNewline([]rune(b[:i])) { - return emptyToken, 0, NewParseError("invalid new line token") - } - - return newToken(TokenNL, b[:i], NoneType), i, nil -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/number_helper.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/number_helper.go deleted file mode 100644 index a45c0bc56622..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/number_helper.go +++ /dev/null @@ -1,152 +0,0 @@ -package ini - -import ( - "bytes" - "fmt" - "strconv" -) - -const ( - none = numberFormat(iota) - binary - octal - decimal - hex - exponent -) - -type numberFormat int - -// numberHelper is used to dictate what format a number is in -// and what to do for negative values. Since -1e-4 is a valid -// number, we cannot just simply check for duplicate negatives. -type numberHelper struct { - numberFormat numberFormat - - negative bool - negativeExponent bool -} - -func (b numberHelper) Exists() bool { - return b.numberFormat != none -} - -func (b numberHelper) IsNegative() bool { - return b.negative || b.negativeExponent -} - -func (b *numberHelper) Determine(c rune) error { - if b.Exists() { - return NewParseError(fmt.Sprintf("multiple number formats: 0%v", string(c))) - } - - switch c { - case 'b': - b.numberFormat = binary - case 'o': - b.numberFormat = octal - case 'x': - b.numberFormat = hex - case 'e', 'E': - b.numberFormat = exponent - case '-': - if b.numberFormat != exponent { - b.negative = true - } else { - b.negativeExponent = true - } - case '.': - b.numberFormat = decimal - default: - return NewParseError(fmt.Sprintf("invalid number character: %v", string(c))) - } - - return nil -} - -func (b numberHelper) CorrectByte(c rune) bool { - switch { - case b.numberFormat == binary: - if !isBinaryByte(c) { - return false - } - case b.numberFormat == octal: - if !isOctalByte(c) { - return false - } - case b.numberFormat == hex: - if !isHexByte(c) { - return false - } - case b.numberFormat == decimal: - if !isDigit(c) { - return false - } - case b.numberFormat == exponent: - if !isDigit(c) { - return false - } - case b.negativeExponent: - if !isDigit(c) { - return false - } - case b.negative: - if !isDigit(c) { - return false - } - default: - if !isDigit(c) { - return false - } - } - - return true -} - -func (b numberHelper) Base() int { - switch b.numberFormat { - case binary: - return 2 - case octal: - return 8 - case hex: - return 16 - default: - return 10 - } -} - -func (b numberHelper) String() string { - buf := bytes.Buffer{} - i := 0 - - switch b.numberFormat { - case binary: - i++ - buf.WriteString(strconv.Itoa(i) + ": binary format\n") - case octal: - i++ - buf.WriteString(strconv.Itoa(i) + ": octal format\n") - case hex: - i++ - buf.WriteString(strconv.Itoa(i) + ": hex format\n") - case exponent: - i++ - buf.WriteString(strconv.Itoa(i) + ": exponent format\n") - default: - i++ - buf.WriteString(strconv.Itoa(i) + ": integer format\n") - } - - if b.negative { - i++ - buf.WriteString(strconv.Itoa(i) + ": negative format\n") - } - - if b.negativeExponent { - i++ - buf.WriteString(strconv.Itoa(i) + ": negative exponent format\n") - } - - return buf.String() -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/op_tokens.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/op_tokens.go deleted file mode 100644 index 8a84c7cbe080..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/op_tokens.go +++ /dev/null @@ -1,39 +0,0 @@ -package ini - -import ( - "fmt" -) - -var ( - equalOp = []rune("=") - equalColonOp = []rune(":") -) - -func isOp(b []rune) bool { - if len(b) == 0 { - return false - } - - switch b[0] { - case '=': - return true - case ':': - return true - default: - return false - } -} - -func newOpToken(b []rune) (Token, int, error) { - tok := Token{} - - switch b[0] { - case '=': - tok = newToken(TokenOp, equalOp, NoneType) - case ':': - tok = newToken(TokenOp, equalColonOp, NoneType) - default: - return tok, 0, NewParseError(fmt.Sprintf("unexpected op type, %v", b[0])) - } - return tok, 1, nil -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse.go new file mode 100644 index 000000000000..2422d90461be --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse.go @@ -0,0 +1,109 @@ +package ini + +import ( + "fmt" + "strings" +) + +func parse(tokens []lineToken, path string) Sections { + parser := &parser{ + path: path, + sections: NewSections(), + } + parser.parse(tokens) + return parser.sections +} + +type parser struct { + csection, ckey string // current state + path string // source file path + sections Sections // parse result +} + +func (p *parser) parse(tokens []lineToken) { + for _, otok := range tokens { + switch tok := otok.(type) { + case *lineTokenProfile: + p.handleProfile(tok) + case *lineTokenProperty: + p.handleProperty(tok) + case *lineTokenSubProperty: + p.handleSubProperty(tok) + case *lineTokenContinuation: + p.handleContinuation(tok) + } + } +} + +func (p *parser) handleProfile(tok *lineTokenProfile) { + name := tok.Name + if tok.Type != "" { + name = fmt.Sprintf("%s %s", tok.Type, tok.Name) + } + p.ckey = "" + p.csection = name + if _, ok := p.sections.container[name]; !ok { + p.sections.container[name] = NewSection(name) + } +} + +func (p *parser) handleProperty(tok *lineTokenProperty) { + if p.csection == "" { + return // LEGACY: don't error on "global" properties + } + + p.ckey = tok.Key + if _, ok := p.sections.container[p.csection].values[tok.Key]; ok { + section := p.sections.container[p.csection] + section.Logs = append(p.sections.container[p.csection].Logs, + fmt.Sprintf( + "For profile: %v, overriding %v value, with a %v value found in a duplicate profile defined later in the same file %v. \n", + p.csection, tok.Key, tok.Key, p.path, + ), + ) + p.sections.container[p.csection] = section + } + + p.sections.container[p.csection].values[tok.Key] = Value{ + str: tok.Value, + } + p.sections.container[p.csection].SourceFile[tok.Key] = p.path +} + +func (p *parser) handleSubProperty(tok *lineTokenSubProperty) { + if p.csection == "" { + return // LEGACY: don't error on "global" properties + } + + if p.ckey == "" || p.sections.container[p.csection].values[p.ckey].str != "" { + // This is an "orphaned" subproperty, either because it's at + // the beginning of a section or because the last property's + // value isn't empty. Either way we're lenient here and + // "promote" this to a normal property. + p.handleProperty(&lineTokenProperty{ + Key: tok.Key, + Value: strings.TrimSpace(trimPropertyComment(tok.Value)), + }) + return + } + + if p.sections.container[p.csection].values[p.ckey].mp == nil { + p.sections.container[p.csection].values[p.ckey] = Value{ + mp: map[string]string{}, + } + } + p.sections.container[p.csection].values[p.ckey].mp[tok.Key] = tok.Value +} + +func (p *parser) handleContinuation(tok *lineTokenContinuation) { + if p.ckey == "" { + return + } + + value, _ := p.sections.container[p.csection].values[p.ckey] + if value.str != "" && value.mp == nil { + value.str = fmt.Sprintf("%s\n%s", value.str, tok.Value) + } + + p.sections.container[p.csection].values[p.ckey] = value +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse_error.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse_error.go deleted file mode 100644 index 30ae0b8f228f..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse_error.go +++ /dev/null @@ -1,19 +0,0 @@ -package ini - -// ParseError is an error which is returned during any part of -// the parsing process. -type ParseError struct { - msg string -} - -// NewParseError will return a new ParseError where message -// is the description of the error. -func NewParseError(message string) *ParseError { - return &ParseError{ - msg: message, - } -} - -func (err *ParseError) Error() string { - return err.msg -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse_stack.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse_stack.go deleted file mode 100644 index 7f01cf7c7036..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse_stack.go +++ /dev/null @@ -1,60 +0,0 @@ -package ini - -import ( - "bytes" - "fmt" -) - -// ParseStack is a stack that contains a container, the stack portion, -// and the list which is the list of ASTs that have been successfully -// parsed. -type ParseStack struct { - top int - container []AST - list []AST - index int -} - -func newParseStack(sizeContainer, sizeList int) ParseStack { - return ParseStack{ - container: make([]AST, sizeContainer), - list: make([]AST, sizeList), - } -} - -// Pop will return and truncate the last container element. -func (s *ParseStack) Pop() AST { - s.top-- - return s.container[s.top] -} - -// Push will add the new AST to the container -func (s *ParseStack) Push(ast AST) { - s.container[s.top] = ast - s.top++ -} - -// MarkComplete will append the AST to the list of completed statements -func (s *ParseStack) MarkComplete(ast AST) { - s.list[s.index] = ast - s.index++ -} - -// List will return the completed statements -func (s ParseStack) List() []AST { - return s.list[:s.index] -} - -// Len will return the length of the container -func (s *ParseStack) Len() int { - return s.top -} - -func (s ParseStack) String() string { - buf := bytes.Buffer{} - for i, node := range s.list { - buf.WriteString(fmt.Sprintf("%d: %v\n", i+1, node)) - } - - return buf.String() -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sections.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sections.go new file mode 100644 index 000000000000..dd89848e6961 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sections.go @@ -0,0 +1,157 @@ +package ini + +import ( + "sort" +) + +// Sections is a map of Section structures that represent +// a configuration. +type Sections struct { + container map[string]Section +} + +// NewSections returns empty ini Sections +func NewSections() Sections { + return Sections{ + container: make(map[string]Section, 0), + } +} + +// GetSection will return section p. If section p does not exist, +// false will be returned in the second parameter. +func (t Sections) GetSection(p string) (Section, bool) { + v, ok := t.container[p] + return v, ok +} + +// HasSection denotes if Sections consist of a section with +// provided name. +func (t Sections) HasSection(p string) bool { + _, ok := t.container[p] + return ok +} + +// SetSection sets a section value for provided section name. +func (t Sections) SetSection(p string, v Section) Sections { + t.container[p] = v + return t +} + +// DeleteSection deletes a section entry/value for provided section name./ +func (t Sections) DeleteSection(p string) { + delete(t.container, p) +} + +// values represents a map of union values. +type values map[string]Value + +// List will return a list of all sections that were successfully +// parsed. +func (t Sections) List() []string { + keys := make([]string, len(t.container)) + i := 0 + for k := range t.container { + keys[i] = k + i++ + } + + sort.Strings(keys) + return keys +} + +// Section contains a name and values. This represent +// a sectioned entry in a configuration file. +type Section struct { + // Name is the Section profile name + Name string + + // values are the values within parsed profile + values values + + // Errors is the list of errors + Errors []error + + // Logs is the list of logs + Logs []string + + // SourceFile is the INI Source file from where this section + // was retrieved. They key is the property, value is the + // source file the property was retrieved from. + SourceFile map[string]string +} + +// NewSection returns an initialize section for the name +func NewSection(name string) Section { + return Section{ + Name: name, + values: values{}, + SourceFile: map[string]string{}, + } +} + +// List will return a list of all +// services in values +func (t Section) List() []string { + keys := make([]string, len(t.values)) + i := 0 + for k := range t.values { + keys[i] = k + i++ + } + + sort.Strings(keys) + return keys +} + +// UpdateSourceFile updates source file for a property to provided filepath. +func (t Section) UpdateSourceFile(property string, filepath string) { + t.SourceFile[property] = filepath +} + +// UpdateValue updates value for a provided key with provided value +func (t Section) UpdateValue(k string, v Value) error { + t.values[k] = v + return nil +} + +// Has will return whether or not an entry exists in a given section +func (t Section) Has(k string) bool { + _, ok := t.values[k] + return ok +} + +// ValueType will returned what type the union is set to. If +// k was not found, the NoneType will be returned. +func (t Section) ValueType(k string) (ValueType, bool) { + v, ok := t.values[k] + return v.Type, ok +} + +// Bool returns a bool value at k +func (t Section) Bool(k string) (bool, bool) { + return t.values[k].BoolValue() +} + +// Int returns an integer value at k +func (t Section) Int(k string) (int64, bool) { + return t.values[k].IntValue() +} + +// Map returns a map value at k +func (t Section) Map(k string) map[string]string { + return t.values[k].MapValue() +} + +// Float64 returns a float value at k +func (t Section) Float64(k string) (float64, bool) { + return t.values[k].FloatValue() +} + +// String returns the string value at k +func (t Section) String(k string) string { + _, ok := t.values[k] + if !ok { + return "" + } + return t.values[k].StringValue() +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sep_tokens.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sep_tokens.go deleted file mode 100644 index f82095ba2594..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sep_tokens.go +++ /dev/null @@ -1,41 +0,0 @@ -package ini - -import ( - "fmt" -) - -var ( - emptyRunes = []rune{} -) - -func isSep(b []rune) bool { - if len(b) == 0 { - return false - } - - switch b[0] { - case '[', ']': - return true - default: - return false - } -} - -var ( - openBrace = []rune("[") - closeBrace = []rune("]") -) - -func newSepToken(b []rune) (Token, int, error) { - tok := Token{} - - switch b[0] { - case '[': - tok = newToken(TokenSep, openBrace, NoneType) - case ']': - tok = newToken(TokenSep, closeBrace, NoneType) - default: - return tok, 0, NewParseError(fmt.Sprintf("unexpected sep type, %v", b[0])) - } - return tok, 1, nil -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/skipper.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/skipper.go deleted file mode 100644 index 07e90876a4a9..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/skipper.go +++ /dev/null @@ -1,45 +0,0 @@ -package ini - -// skipper is used to skip certain blocks of an ini file. -// Currently skipper is used to skip nested blocks of ini -// files. See example below -// -// [ foo ] -// nested = ; this section will be skipped -// a=b -// c=d -// bar=baz ; this will be included -type skipper struct { - shouldSkip bool - TokenSet bool - prevTok Token -} - -func newSkipper() skipper { - return skipper{ - prevTok: emptyToken, - } -} - -func (s *skipper) ShouldSkip(tok Token) bool { - // should skip state will be modified only if previous token was new line (NL); - // and the current token is not WhiteSpace (WS). - if s.shouldSkip && - s.prevTok.Type() == TokenNL && - tok.Type() != TokenWS { - s.Continue() - return false - } - - s.prevTok = tok - return s.shouldSkip -} - -func (s *skipper) Skip() { - s.shouldSkip = true -} - -func (s *skipper) Continue() { - s.shouldSkip = false - s.prevTok = emptyToken -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/statement.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/statement.go deleted file mode 100644 index ba0af01b53b4..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/statement.go +++ /dev/null @@ -1,35 +0,0 @@ -package ini - -// Statement is an empty AST mostly used for transitioning states. -func newStatement() AST { - return newAST(ASTKindStatement, AST{}) -} - -// SectionStatement represents a section AST -func newSectionStatement(tok Token) AST { - return newASTWithRootToken(ASTKindSectionStatement, tok) -} - -// ExprStatement represents a completed expression AST -func newExprStatement(ast AST) AST { - return newAST(ASTKindExprStatement, ast) -} - -// CommentStatement represents a comment in the ini defintion. -// -// grammar: -// comment -> #comment' | ;comment' -// comment' -> epsilon | value -func newCommentStatement(tok Token) AST { - return newAST(ASTKindCommentStatement, newExpression(tok)) -} - -// CompletedSectionStatement represents a completed section -func newCompletedSectionStatement(ast AST) AST { - return newAST(ASTKindCompletedSectionStatement, ast) -} - -// SkipStatement is used to skip whole statements -func newSkipStatement(ast AST) AST { - return newAST(ASTKindSkipStatement, ast) -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/strings.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/strings.go new file mode 100644 index 000000000000..ed77d0835179 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/strings.go @@ -0,0 +1,89 @@ +package ini + +import ( + "strings" +) + +func trimProfileComment(s string) string { + r, _, _ := strings.Cut(s, "#") + r, _, _ = strings.Cut(r, ";") + return r +} + +func trimPropertyComment(s string) string { + r, _, _ := strings.Cut(s, " #") + r, _, _ = strings.Cut(r, " ;") + r, _, _ = strings.Cut(r, "\t#") + r, _, _ = strings.Cut(r, "\t;") + return r +} + +// assumes no surrounding comment +func splitProperty(s string) (string, string, bool) { + equalsi := strings.Index(s, "=") + coloni := strings.Index(s, ":") // LEGACY: also supported for property assignment + sep := "=" + if equalsi == -1 || coloni != -1 && coloni < equalsi { + sep = ":" + } + + k, v, ok := strings.Cut(s, sep) + if !ok { + return "", "", false + } + return strings.TrimSpace(k), strings.TrimSpace(v), true +} + +// assumes no surrounding comment, whitespace, or profile brackets +func splitProfile(s string) (string, string) { + var first int + for i, r := range s { + if isLineSpace(r) { + if first == 0 { + first = i + } + } else { + if first != 0 { + return s[:first], s[i:] + } + } + } + if first == 0 { + return "", s // type component is effectively blank + } + return "", "" +} + +func isLineSpace(r rune) bool { + return r == ' ' || r == '\t' +} + +func unquote(s string) string { + if isSingleQuoted(s) || isDoubleQuoted(s) { + return s[1 : len(s)-1] + } + return s +} + +// applies various legacy conversions to property values: +// - remote wrapping single/doublequotes +func legacyStrconv(s string) string { + s = unquote(s) + return s +} + +func isSingleQuoted(s string) bool { + return hasAffixes(s, "'", "'") +} + +func isDoubleQuoted(s string) bool { + return hasAffixes(s, `"`, `"`) +} + +func isBracketed(s string) bool { + return hasAffixes(s, "[", "]") +} + +func hasAffixes(s, left, right string) bool { + return strings.HasPrefix(s, left) && strings.HasSuffix(s, right) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/token.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/token.go new file mode 100644 index 000000000000..6e9a03744e0e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/token.go @@ -0,0 +1,32 @@ +package ini + +type lineToken interface { + isLineToken() +} + +type lineTokenProfile struct { + Type string + Name string +} + +func (*lineTokenProfile) isLineToken() {} + +type lineTokenProperty struct { + Key string + Value string +} + +func (*lineTokenProperty) isLineToken() {} + +type lineTokenContinuation struct { + Value string +} + +func (*lineTokenContinuation) isLineToken() {} + +type lineTokenSubProperty struct { + Key string + Value string +} + +func (*lineTokenSubProperty) isLineToken() {} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/tokenize.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/tokenize.go new file mode 100644 index 000000000000..89a7736841ee --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/tokenize.go @@ -0,0 +1,92 @@ +package ini + +import ( + "strings" +) + +func tokenize(lines []string) ([]lineToken, error) { + tokens := make([]lineToken, 0, len(lines)) + for _, line := range lines { + if len(strings.TrimSpace(line)) == 0 || isLineComment(line) { + continue + } + + if tok := asProfile(line); tok != nil { + tokens = append(tokens, tok) + } else if tok := asProperty(line); tok != nil { + tokens = append(tokens, tok) + } else if tok := asSubProperty(line); tok != nil { + tokens = append(tokens, tok) + } else if tok := asContinuation(line); tok != nil { + tokens = append(tokens, tok) + } // unrecognized tokens are effectively ignored + } + return tokens, nil +} + +func isLineComment(line string) bool { + trimmed := strings.TrimLeft(line, " \t") + return strings.HasPrefix(trimmed, "#") || strings.HasPrefix(trimmed, ";") +} + +func asProfile(line string) *lineTokenProfile { // " [ type name ] ; comment" + trimmed := strings.TrimSpace(trimProfileComment(line)) // "[ type name ]" + if !isBracketed(trimmed) { + return nil + } + trimmed = trimmed[1 : len(trimmed)-1] // " type name " (or just " name ") + trimmed = strings.TrimSpace(trimmed) // "type name" / "name" + typ, name := splitProfile(trimmed) + return &lineTokenProfile{ + Type: typ, + Name: name, + } +} + +func asProperty(line string) *lineTokenProperty { + if isLineSpace(rune(line[0])) { + return nil + } + + trimmed := trimPropertyComment(line) + trimmed = strings.TrimRight(trimmed, " \t") + k, v, ok := splitProperty(trimmed) + if !ok { + return nil + } + + return &lineTokenProperty{ + Key: strings.ToLower(k), // LEGACY: normalize key case + Value: legacyStrconv(v), // LEGACY: see func docs + } +} + +func asSubProperty(line string) *lineTokenSubProperty { + if !isLineSpace(rune(line[0])) { + return nil + } + + // comments on sub-properties are included in the value + trimmed := strings.TrimLeft(line, " \t") + k, v, ok := splitProperty(trimmed) + if !ok { + return nil + } + + return &lineTokenSubProperty{ // same LEGACY constraints as in normal property + Key: strings.ToLower(k), + Value: legacyStrconv(v), + } +} + +func asContinuation(line string) *lineTokenContinuation { + if !isLineSpace(rune(line[0])) { + return nil + } + + // includes comments like sub-properties + trimmed := strings.TrimLeft(line, " \t") + return &lineTokenContinuation{ + Value: trimmed, + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value.go new file mode 100644 index 000000000000..e3706b3c31b1 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value.go @@ -0,0 +1,93 @@ +package ini + +import ( + "fmt" + "strconv" + "strings" +) + +// ValueType is an enum that will signify what type +// the Value is +type ValueType int + +func (v ValueType) String() string { + switch v { + case NoneType: + return "NONE" + case StringType: + return "STRING" + } + + return "" +} + +// ValueType enums +const ( + NoneType = ValueType(iota) + StringType + QuotedStringType +) + +// Value is a union container +type Value struct { + Type ValueType + + str string + mp map[string]string +} + +// NewStringValue returns a Value type generated using a string input. +func NewStringValue(str string) (Value, error) { + return Value{str: str}, nil +} + +func (v Value) String() string { + switch v.Type { + case StringType: + return fmt.Sprintf("string: %s", string(v.str)) + case QuotedStringType: + return fmt.Sprintf("quoted string: %s", string(v.str)) + default: + return "union not set" + } +} + +// MapValue returns a map value for sub properties +func (v Value) MapValue() map[string]string { + return v.mp +} + +// IntValue returns an integer value +func (v Value) IntValue() (int64, bool) { + i, err := strconv.ParseInt(string(v.str), 0, 64) + if err != nil { + return 0, false + } + return i, true +} + +// FloatValue returns a float value +func (v Value) FloatValue() (float64, bool) { + f, err := strconv.ParseFloat(string(v.str), 64) + if err != nil { + return 0, false + } + return f, true +} + +// BoolValue returns a bool value +func (v Value) BoolValue() (bool, bool) { + // we don't use ParseBool as it recognizes more than what we've + // historically supported + if strings.EqualFold(v.str, "true") { + return true, true + } else if strings.EqualFold(v.str, "false") { + return false, true + } + return false, false +} + +// StringValue returns the string value +func (v Value) StringValue() string { + return v.str +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value_util.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value_util.go deleted file mode 100644 index b5480fdeb359..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value_util.go +++ /dev/null @@ -1,284 +0,0 @@ -package ini - -import ( - "fmt" -) - -// getStringValue will return a quoted string and the amount -// of bytes read -// -// an error will be returned if the string is not properly formatted -func getStringValue(b []rune) (int, error) { - if b[0] != '"' { - return 0, NewParseError("strings must start with '\"'") - } - - endQuote := false - i := 1 - - for ; i < len(b) && !endQuote; i++ { - if escaped := isEscaped(b[:i], b[i]); b[i] == '"' && !escaped { - endQuote = true - break - } else if escaped { - /*c, err := getEscapedByte(b[i]) - if err != nil { - return 0, err - } - - b[i-1] = c - b = append(b[:i], b[i+1:]...) - i--*/ - - continue - } - } - - if !endQuote { - return 0, NewParseError("missing '\"' in string value") - } - - return i + 1, nil -} - -// getBoolValue will return a boolean and the amount -// of bytes read -// -// an error will be returned if the boolean is not of a correct -// value -func getBoolValue(b []rune) (int, error) { - if len(b) < 4 { - return 0, NewParseError("invalid boolean value") - } - - n := 0 - for _, lv := range literalValues { - if len(lv) > len(b) { - continue - } - - if isCaselessLitValue(lv, b) { - n = len(lv) - } - } - - if n == 0 { - return 0, NewParseError("invalid boolean value") - } - - return n, nil -} - -// getNumericalValue will return a numerical string, the amount -// of bytes read, and the base of the number -// -// an error will be returned if the number is not of a correct -// value -func getNumericalValue(b []rune) (int, int, error) { - if !isDigit(b[0]) { - return 0, 0, NewParseError("invalid digit value") - } - - i := 0 - helper := numberHelper{} - -loop: - for negativeIndex := 0; i < len(b); i++ { - negativeIndex++ - - if !isDigit(b[i]) { - switch b[i] { - case '-': - if helper.IsNegative() || negativeIndex != 1 { - return 0, 0, NewParseError("parse error '-'") - } - - n := getNegativeNumber(b[i:]) - i += (n - 1) - helper.Determine(b[i]) - continue - case '.': - if err := helper.Determine(b[i]); err != nil { - return 0, 0, err - } - case 'e', 'E': - if err := helper.Determine(b[i]); err != nil { - return 0, 0, err - } - - negativeIndex = 0 - case 'b': - if helper.numberFormat == hex { - break - } - fallthrough - case 'o', 'x': - if i == 0 && b[i] != '0' { - return 0, 0, NewParseError("incorrect base format, expected leading '0'") - } - - if i != 1 { - return 0, 0, NewParseError(fmt.Sprintf("incorrect base format found %s at %d index", string(b[i]), i)) - } - - if err := helper.Determine(b[i]); err != nil { - return 0, 0, err - } - default: - if isWhitespace(b[i]) { - break loop - } - - if isNewline(b[i:]) { - break loop - } - - if !(helper.numberFormat == hex && isHexByte(b[i])) { - if i+2 < len(b) && !isNewline(b[i:i+2]) { - return 0, 0, NewParseError("invalid numerical character") - } else if !isNewline([]rune{b[i]}) { - return 0, 0, NewParseError("invalid numerical character") - } - - break loop - } - } - } - } - - return helper.Base(), i, nil -} - -// isDigit will return whether or not something is an integer -func isDigit(b rune) bool { - return b >= '0' && b <= '9' -} - -func hasExponent(v []rune) bool { - return contains(v, 'e') || contains(v, 'E') -} - -func isBinaryByte(b rune) bool { - switch b { - case '0', '1': - return true - default: - return false - } -} - -func isOctalByte(b rune) bool { - switch b { - case '0', '1', '2', '3', '4', '5', '6', '7': - return true - default: - return false - } -} - -func isHexByte(b rune) bool { - if isDigit(b) { - return true - } - return (b >= 'A' && b <= 'F') || - (b >= 'a' && b <= 'f') -} - -func getValue(b []rune) (int, error) { - i := 0 - - for i < len(b) { - if isNewline(b[i:]) { - break - } - - if isOp(b[i:]) { - break - } - - valid, n, err := isValid(b[i:]) - if err != nil { - return 0, err - } - - if !valid { - break - } - - i += n - } - - return i, nil -} - -// getNegativeNumber will return a negative number from a -// byte slice. This will iterate through all characters until -// a non-digit has been found. -func getNegativeNumber(b []rune) int { - if b[0] != '-' { - return 0 - } - - i := 1 - for ; i < len(b); i++ { - if !isDigit(b[i]) { - return i - } - } - - return i -} - -// isEscaped will return whether or not the character is an escaped -// character. -func isEscaped(value []rune, b rune) bool { - if len(value) == 0 { - return false - } - - switch b { - case '\'': // single quote - case '"': // quote - case 'n': // newline - case 't': // tab - case '\\': // backslash - default: - return false - } - - return value[len(value)-1] == '\\' -} - -func getEscapedByte(b rune) (rune, error) { - switch b { - case '\'': // single quote - return '\'', nil - case '"': // quote - return '"', nil - case 'n': // newline - return '\n', nil - case 't': // table - return '\t', nil - case '\\': // backslash - return '\\', nil - default: - return b, NewParseError(fmt.Sprintf("invalid escaped character %c", b)) - } -} - -func removeEscapedCharacters(b []rune) []rune { - for i := 0; i < len(b); i++ { - if isEscaped(b[:i], b[i]) { - c, err := getEscapedByte(b[i]) - if err != nil { - return b - } - - b[i-1] = c - b = append(b[:i], b[i+1:]...) - i-- - } - } - - return b -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/visitor.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/visitor.go deleted file mode 100644 index a07a6373897c..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/visitor.go +++ /dev/null @@ -1,269 +0,0 @@ -package ini - -import ( - "fmt" - "sort" - "strings" -) - -// Visitor is an interface used by walkers that will -// traverse an array of ASTs. -type Visitor interface { - VisitExpr(AST) error - VisitStatement(AST) error -} - -// DefaultVisitor is used to visit statements and expressions -// and ensure that they are both of the correct format. -// In addition, upon visiting this will build sections and populate -// the Sections field which can be used to retrieve profile -// configuration. -type DefaultVisitor struct { - - // scope is the profile which is being visited - scope string - - // path is the file path which the visitor is visiting - path string - - // Sections defines list of the profile section - Sections Sections -} - -// NewDefaultVisitor returns a DefaultVisitor. It takes in a filepath -// which points to the file it is visiting. -func NewDefaultVisitor(filepath string) *DefaultVisitor { - return &DefaultVisitor{ - Sections: Sections{ - container: map[string]Section{}, - }, - path: filepath, - } -} - -// VisitExpr visits expressions... -func (v *DefaultVisitor) VisitExpr(expr AST) error { - t := v.Sections.container[v.scope] - if t.values == nil { - t.values = values{} - } - if t.SourceFile == nil { - t.SourceFile = make(map[string]string, 0) - } - - switch expr.Kind { - case ASTKindExprStatement: - opExpr := expr.GetRoot() - switch opExpr.Kind { - case ASTKindEqualExpr: - children := opExpr.GetChildren() - if len(children) <= 1 { - return NewParseError("unexpected token type") - } - - rhs := children[1] - - // The right-hand value side the equality expression is allowed to contain '[', ']', ':', '=' in the values. - // If the token is not either a literal or one of the token types that identifies those four additional - // tokens then error. - if !(rhs.Root.Type() == TokenLit || rhs.Root.Type() == TokenOp || rhs.Root.Type() == TokenSep) { - return NewParseError("unexpected token type") - } - - key := EqualExprKey(opExpr) - val, err := newValue(rhs.Root.ValueType, rhs.Root.base, rhs.Root.Raw()) - if err != nil { - return err - } - - // lower case key to standardize - k := strings.ToLower(key) - - // identify if the section already had this key, append log on section - if t.Has(k) { - t.Logs = append(t.Logs, - fmt.Sprintf("For profile: %v, overriding %v value, "+ - "with a %v value found in a duplicate profile defined later in the same file %v. \n", - t.Name, k, k, v.path)) - } - - // assign the value - t.values[k] = val - // update the source file path for region - t.SourceFile[k] = v.path - default: - return NewParseError(fmt.Sprintf("unsupported expression %v", expr)) - } - default: - return NewParseError(fmt.Sprintf("unsupported expression %v", expr)) - } - - v.Sections.container[v.scope] = t - return nil -} - -// VisitStatement visits statements... -func (v *DefaultVisitor) VisitStatement(stmt AST) error { - switch stmt.Kind { - case ASTKindCompletedSectionStatement: - child := stmt.GetRoot() - if child.Kind != ASTKindSectionStatement { - return NewParseError(fmt.Sprintf("unsupported child statement: %T", child)) - } - - name := string(child.Root.Raw()) - - // trim start and end space - name = strings.TrimSpace(name) - - // if has prefix "profile " + [ws+] + "profile-name", - // we standardize by removing the [ws+] between prefix and profile-name. - if strings.HasPrefix(name, "profile ") { - names := strings.SplitN(name, " ", 2) - name = names[0] + " " + strings.TrimLeft(names[1], " ") - } - - // attach profile name on section - if !v.Sections.HasSection(name) { - v.Sections.container[name] = NewSection(name) - } - v.scope = name - default: - return NewParseError(fmt.Sprintf("unsupported statement: %s", stmt.Kind)) - } - - return nil -} - -// Sections is a map of Section structures that represent -// a configuration. -type Sections struct { - container map[string]Section -} - -// NewSections returns empty ini Sections -func NewSections() Sections { - return Sections{ - container: make(map[string]Section, 0), - } -} - -// GetSection will return section p. If section p does not exist, -// false will be returned in the second parameter. -func (t Sections) GetSection(p string) (Section, bool) { - v, ok := t.container[p] - return v, ok -} - -// HasSection denotes if Sections consist of a section with -// provided name. -func (t Sections) HasSection(p string) bool { - _, ok := t.container[p] - return ok -} - -// SetSection sets a section value for provided section name. -func (t Sections) SetSection(p string, v Section) Sections { - t.container[p] = v - return t -} - -// DeleteSection deletes a section entry/value for provided section name./ -func (t Sections) DeleteSection(p string) { - delete(t.container, p) -} - -// values represents a map of union values. -type values map[string]Value - -// List will return a list of all sections that were successfully -// parsed. -func (t Sections) List() []string { - keys := make([]string, len(t.container)) - i := 0 - for k := range t.container { - keys[i] = k - i++ - } - - sort.Strings(keys) - return keys -} - -// Section contains a name and values. This represent -// a sectioned entry in a configuration file. -type Section struct { - // Name is the Section profile name - Name string - - // values are the values within parsed profile - values values - - // Errors is the list of errors - Errors []error - - // Logs is the list of logs - Logs []string - - // SourceFile is the INI Source file from where this section - // was retrieved. They key is the property, value is the - // source file the property was retrieved from. - SourceFile map[string]string -} - -// NewSection returns an initialize section for the name -func NewSection(name string) Section { - return Section{ - Name: name, - values: values{}, - SourceFile: map[string]string{}, - } -} - -// UpdateSourceFile updates source file for a property to provided filepath. -func (t Section) UpdateSourceFile(property string, filepath string) { - t.SourceFile[property] = filepath -} - -// UpdateValue updates value for a provided key with provided value -func (t Section) UpdateValue(k string, v Value) error { - t.values[k] = v - return nil -} - -// Has will return whether or not an entry exists in a given section -func (t Section) Has(k string) bool { - _, ok := t.values[k] - return ok -} - -// ValueType will returned what type the union is set to. If -// k was not found, the NoneType will be returned. -func (t Section) ValueType(k string) (ValueType, bool) { - v, ok := t.values[k] - return v.Type, ok -} - -// Bool returns a bool value at k -func (t Section) Bool(k string) bool { - return t.values[k].BoolValue() -} - -// Int returns an integer value at k -func (t Section) Int(k string) int64 { - return t.values[k].IntValue() -} - -// Float64 returns a float value at k -func (t Section) Float64(k string) float64 { - return t.values[k].FloatValue() -} - -// String returns the string value at k -func (t Section) String(k string) string { - _, ok := t.values[k] - if !ok { - return "" - } - return t.values[k].StringValue() -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/walker.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/walker.go deleted file mode 100644 index 99915f7f777c..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/walker.go +++ /dev/null @@ -1,25 +0,0 @@ -package ini - -// Walk will traverse the AST using the v, the Visitor. -func Walk(tree []AST, v Visitor) error { - for _, node := range tree { - switch node.Kind { - case ASTKindExpr, - ASTKindExprStatement: - - if err := v.VisitExpr(node); err != nil { - return err - } - case ASTKindStatement, - ASTKindCompletedSectionStatement, - ASTKindNestedSectionStatement, - ASTKindCompletedNestedSectionStatement: - - if err := v.VisitStatement(node); err != nil { - return err - } - } - } - - return nil -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ws_token.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ws_token.go deleted file mode 100644 index 7ffb4ae06ff0..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ws_token.go +++ /dev/null @@ -1,24 +0,0 @@ -package ini - -import ( - "unicode" -) - -// isWhitespace will return whether or not the character is -// a whitespace character. -// -// Whitespace is defined as a space or tab. -func isWhitespace(c rune) bool { - return unicode.IsSpace(c) && c != '\n' && c != '\r' -} - -func newWSToken(b []rune) (Token, int, error) { - i := 0 - for ; i < len(b); i++ { - if !isWhitespace(b[i]) { - break - } - } - - return newToken(TokenWS, b[:i], NoneType), i, nil -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/middleware/middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/middleware/middleware.go new file mode 100644 index 000000000000..8e24a3f0a470 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/middleware/middleware.go @@ -0,0 +1,42 @@ +package middleware + +import ( + "context" + "sync/atomic" + "time" + + internalcontext "github.com/aws/aws-sdk-go-v2/internal/context" + "github.com/aws/smithy-go/middleware" +) + +// AddTimeOffsetMiddleware sets a value representing clock skew on the request context. +// This can be read by other operations (such as signing) to correct the date value they send +// on the request +type AddTimeOffsetMiddleware struct { + Offset *atomic.Int64 +} + +// ID the identifier for AddTimeOffsetMiddleware +func (m *AddTimeOffsetMiddleware) ID() string { return "AddTimeOffsetMiddleware" } + +// HandleBuild sets a value for attemptSkew on the request context if one is set on the client. +func (m AddTimeOffsetMiddleware) HandleBuild(ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler) ( + out middleware.BuildOutput, metadata middleware.Metadata, err error, +) { + if m.Offset != nil { + offset := time.Duration(m.Offset.Load()) + ctx = internalcontext.SetAttemptSkewContext(ctx, offset) + } + return next.HandleBuild(ctx, in) +} + +// HandleDeserialize gets the clock skew context from the context, and if set, sets it on the pointer +// held by AddTimeOffsetMiddleware +func (m *AddTimeOffsetMiddleware) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + if v := internalcontext.GetAttemptSkewContext(ctx); v != 0 { + m.Offset.Store(v.Nanoseconds()) + } + return next.HandleDeserialize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/shareddefaults/shared_config.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/shareddefaults/shared_config.go new file mode 100644 index 000000000000..c96b717e08a2 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/shareddefaults/shared_config.go @@ -0,0 +1,47 @@ +package shareddefaults + +import ( + "os" + "os/user" + "path/filepath" +) + +// SharedCredentialsFilename returns the SDK's default file path +// for the shared credentials file. +// +// Builds the shared config file path based on the OS's platform. +// +// - Linux/Unix: $HOME/.aws/credentials +// - Windows: %USERPROFILE%\.aws\credentials +func SharedCredentialsFilename() string { + return filepath.Join(UserHomeDir(), ".aws", "credentials") +} + +// SharedConfigFilename returns the SDK's default file path for +// the shared config file. +// +// Builds the shared config file path based on the OS's platform. +// +// - Linux/Unix: $HOME/.aws/config +// - Windows: %USERPROFILE%\.aws\config +func SharedConfigFilename() string { + return filepath.Join(UserHomeDir(), ".aws", "config") +} + +// UserHomeDir returns the home directory for the user the process is +// running under. +func UserHomeDir() string { + // Ignore errors since we only care about Windows and *nix. + home, _ := os.UserHomeDir() + + if len(home) > 0 { + return home + } + + currUser, _ := user.Current() + if currUser != nil { + home = currUser.HomeDir + } + + return home +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/local-mod-replace.sh b/vendor/github.com/aws/aws-sdk-go-v2/local-mod-replace.sh deleted file mode 100644 index 81a836127566..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/local-mod-replace.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -PROJECT_DIR="" -SDK_SOURCE_DIR=$(cd `dirname $0` && pwd) - -usage() { - echo "Usage: $0 [-s SDK_SOURCE_DIR] [-d PROJECT_DIR]" 1>&2 - exit 1 -} - -while getopts "hs:d:" options; do - case "${options}" in - s) - SDK_SOURCE_DIR=${OPTARG} - if [ "$SDK_SOURCE_DIR" == "" ]; then - echo "path to SDK source directory is required" || exit - usage - fi - ;; - d) - PROJECT_DIR=${OPTARG} - ;; - h) - usage - ;; - *) - usage - ;; - esac -done - -if [ "$PROJECT_DIR" != "" ]; then - cd "$PROJECT_DIR" || exit -fi - -go mod graph | awk '{print $1}' | cut -d '@' -f 1 | sort | uniq | grep "github.com/aws/aws-sdk-go-v2" | while read x; do - repPath=${x/github.com\/aws\/aws-sdk-go-v2/${SDK_SOURCE_DIR}} - echo -replace $x=$repPath -done | xargs go mod edit diff --git a/vendor/github.com/aws/aws-sdk-go-v2/modman.toml b/vendor/github.com/aws/aws-sdk-go-v2/modman.toml deleted file mode 100644 index 969f0e467a67..000000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/modman.toml +++ /dev/null @@ -1,78 +0,0 @@ - -[dependencies] - "github.com/aws/aws-sdk-go" = "v1.44.28" - "github.com/aws/smithy-go" = "v1.13.3" - "github.com/google/go-cmp" = "v0.5.8" - "github.com/jmespath/go-jmespath" = "v0.4.0" - "golang.org/x/net" = "v0.0.0-20220127200216-cd36cc0744dd" - -[modules] - - [modules."."] - metadata_package = "aws" - - [modules.codegen] - no_tag = true - - [modules."example/service/dynamodb/createTable"] - no_tag = true - - [modules."example/service/dynamodb/scanItems"] - no_tag = true - - [modules."example/service/s3/listObjects"] - no_tag = true - - [modules."example/service/s3/usingPrivateLink"] - no_tag = true - - [modules."feature/ec2/imds/internal/configtesting"] - no_tag = true - - [modules."internal/codegen"] - no_tag = true - - [modules."internal/configsources/configtesting"] - no_tag = true - - [modules."internal/protocoltest/awsrestjson"] - no_tag = true - - [modules."internal/protocoltest/ec2query"] - no_tag = true - - [modules."internal/protocoltest/jsonrpc"] - no_tag = true - - [modules."internal/protocoltest/jsonrpc10"] - no_tag = true - - [modules."internal/protocoltest/query"] - no_tag = true - - [modules."internal/protocoltest/restxml"] - no_tag = true - - [modules."internal/protocoltest/restxmlwithnamespace"] - no_tag = true - - [modules."internal/repotools"] - no_tag = true - - [modules."internal/repotools/changes"] - no_tag = true - - [modules."service/internal/benchmark"] - no_tag = true - - [modules."service/internal/integrationtest"] - no_tag = true - - [modules."service/kinesis/internal/testing"] - no_tag = true - - [modules."service/s3/internal/configtesting"] - no_tag = true - - [modules."service/transcribestreaming/internal/testing"] - no_tag = true diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md new file mode 100644 index 000000000000..d4bc00fdee7f --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md @@ -0,0 +1,148 @@ +# v1.11.5 (2024-09-20) + +* No change notes available for this release. + +# v1.11.4 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. + +# v1.11.3 (2024-06-28) + +* No change notes available for this release. + +# v1.11.2 (2024-03-29) + +* No change notes available for this release. + +# v1.11.1 (2024-02-21) + +* No change notes available for this release. + +# v1.11.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. + +# v1.10.4 (2023-12-07) + +* No change notes available for this release. + +# v1.10.3 (2023-11-30) + +* No change notes available for this release. + +# v1.10.2 (2023-11-29) + +* No change notes available for this release. + +# v1.10.1 (2023-11-15) + +* No change notes available for this release. + +# v1.10.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). + +# v1.9.15 (2023-10-06) + +* No change notes available for this release. + +# v1.9.14 (2023-08-18) + +* No change notes available for this release. + +# v1.9.13 (2023-08-07) + +* No change notes available for this release. + +# v1.9.12 (2023-07-31) + +* No change notes available for this release. + +# v1.9.11 (2022-12-02) + +* No change notes available for this release. + +# v1.9.10 (2022-10-24) + +* No change notes available for this release. + +# v1.9.9 (2022-09-14) + +* No change notes available for this release. + +# v1.9.8 (2022-09-02) + +* No change notes available for this release. + +# v1.9.7 (2022-08-31) + +* No change notes available for this release. + +# v1.9.6 (2022-08-29) + +* No change notes available for this release. + +# v1.9.5 (2022-08-11) + +* No change notes available for this release. + +# v1.9.4 (2022-08-09) + +* No change notes available for this release. + +# v1.9.3 (2022-06-29) + +* No change notes available for this release. + +# v1.9.2 (2022-06-07) + +* No change notes available for this release. + +# v1.9.1 (2022-03-24) + +* No change notes available for this release. + +# v1.9.0 (2022-03-08) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version + +# v1.8.0 (2022-02-24) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version + +# v1.7.0 (2022-01-14) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version + +# v1.6.0 (2022-01-07) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version + +# v1.5.0 (2021-11-06) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version + +# v1.4.0 (2021-10-21) + +* **Feature**: Updated to latest version + +# v1.3.0 (2021-08-27) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version + +# v1.2.2 (2021-08-04) + +* **Dependency Update**: Updated `github.com/aws/smithy-go` to latest version. + +# v1.2.1 (2021-07-15) + +* **Dependency Update**: Updated `github.com/aws/smithy-go` to latest version + +# v1.2.0 (2021-06-25) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version + +# v1.1.0 (2021-05-14) + +* **Feature**: Constant has been added to modules to enable runtime version inspection for reporting. + diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/LICENSE.txt b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/LICENSE.txt new file mode 100644 index 000000000000..d64569567334 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/accept_encoding_gzip.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/accept_encoding_gzip.go new file mode 100644 index 000000000000..3f451fc9b453 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/accept_encoding_gzip.go @@ -0,0 +1,176 @@ +package acceptencoding + +import ( + "compress/gzip" + "context" + "fmt" + "io" + + "github.com/aws/smithy-go" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +const acceptEncodingHeaderKey = "Accept-Encoding" +const contentEncodingHeaderKey = "Content-Encoding" + +// AddAcceptEncodingGzipOptions provides the options for the +// AddAcceptEncodingGzip middleware setup. +type AddAcceptEncodingGzipOptions struct { + Enable bool +} + +// AddAcceptEncodingGzip explicitly adds handling for accept-encoding GZIP +// middleware to the operation stack. This allows checksums to be correctly +// computed without disabling GZIP support. +func AddAcceptEncodingGzip(stack *middleware.Stack, options AddAcceptEncodingGzipOptions) error { + if options.Enable { + if err := stack.Finalize.Add(&EnableGzip{}, middleware.Before); err != nil { + return err + } + if err := stack.Deserialize.Insert(&DecompressGzip{}, "OperationDeserializer", middleware.After); err != nil { + return err + } + return nil + } + + return stack.Finalize.Add(&DisableGzip{}, middleware.Before) +} + +// DisableGzip provides the middleware that will +// disable the underlying http client automatically enabling for gzip +// decompress content-encoding support. +type DisableGzip struct{} + +// ID returns the id for the middleware. +func (*DisableGzip) ID() string { + return "DisableAcceptEncodingGzip" +} + +// HandleFinalize implements the FinalizeMiddleware interface. +func (*DisableGzip) HandleFinalize( + ctx context.Context, input middleware.FinalizeInput, next middleware.FinalizeHandler, +) ( + output middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + req, ok := input.Request.(*smithyhttp.Request) + if !ok { + return output, metadata, &smithy.SerializationError{ + Err: fmt.Errorf("unknown request type %T", input.Request), + } + } + + // Explicitly enable gzip support, this will prevent the http client from + // auto extracting the zipped content. + req.Header.Set(acceptEncodingHeaderKey, "identity") + + return next.HandleFinalize(ctx, input) +} + +// EnableGzip provides a middleware to enable support for +// gzip responses, with manual decompression. This prevents the underlying HTTP +// client from performing the gzip decompression automatically. +type EnableGzip struct{} + +// ID returns the id for the middleware. +func (*EnableGzip) ID() string { + return "AcceptEncodingGzip" +} + +// HandleFinalize implements the FinalizeMiddleware interface. +func (*EnableGzip) HandleFinalize( + ctx context.Context, input middleware.FinalizeInput, next middleware.FinalizeHandler, +) ( + output middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + req, ok := input.Request.(*smithyhttp.Request) + if !ok { + return output, metadata, &smithy.SerializationError{ + Err: fmt.Errorf("unknown request type %T", input.Request), + } + } + + // Explicitly enable gzip support, this will prevent the http client from + // auto extracting the zipped content. + req.Header.Set(acceptEncodingHeaderKey, "gzip") + + return next.HandleFinalize(ctx, input) +} + +// DecompressGzip provides the middleware for decompressing a gzip +// response from the service. +type DecompressGzip struct{} + +// ID returns the id for the middleware. +func (*DecompressGzip) ID() string { + return "DecompressGzip" +} + +// HandleDeserialize implements the DeserializeMiddlware interface. +func (*DecompressGzip) HandleDeserialize( + ctx context.Context, input middleware.DeserializeInput, next middleware.DeserializeHandler, +) ( + output middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + output, metadata, err = next.HandleDeserialize(ctx, input) + if err != nil { + return output, metadata, err + } + + resp, ok := output.RawResponse.(*smithyhttp.Response) + if !ok { + return output, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("unknown response type %T", output.RawResponse), + } + } + if v := resp.Header.Get(contentEncodingHeaderKey); v != "gzip" { + return output, metadata, err + } + + // Clear content length since it will no longer be valid once the response + // body is decompressed. + resp.Header.Del("Content-Length") + resp.ContentLength = -1 + + resp.Body = wrapGzipReader(resp.Body) + + return output, metadata, err +} + +type gzipReader struct { + reader io.ReadCloser + gzip *gzip.Reader +} + +func wrapGzipReader(reader io.ReadCloser) *gzipReader { + return &gzipReader{ + reader: reader, + } +} + +// Read wraps the gzip reader around the underlying io.Reader to extract the +// response bytes on the fly. +func (g *gzipReader) Read(b []byte) (n int, err error) { + if g.gzip == nil { + g.gzip, err = gzip.NewReader(g.reader) + if err != nil { + g.gzip = nil // ensure uninitialized gzip value isn't used in close. + return 0, fmt.Errorf("failed to decompress gzip response, %w", err) + } + } + + return g.gzip.Read(b) +} + +func (g *gzipReader) Close() error { + if g.gzip == nil { + return nil + } + + if err := g.gzip.Close(); err != nil { + g.reader.Close() + return fmt.Errorf("failed to decompress gzip response, %w", err) + } + + return g.reader.Close() +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/doc.go new file mode 100644 index 000000000000..7056d9bf6fa3 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/doc.go @@ -0,0 +1,22 @@ +/* +Package acceptencoding provides customizations associated with Accept Encoding Header. + +# Accept encoding gzip + +The Go HTTP client automatically supports accept-encoding and content-encoding +gzip by default. This default behavior is not desired by the SDK, and prevents +validating the response body's checksum. To prevent this the SDK must manually +control usage of content-encoding gzip. + +To control content-encoding, the SDK must always set the `Accept-Encoding` +header to a value. This prevents the HTTP client from using gzip automatically. +When gzip is enabled on the API client, the SDK's customization will control +decompressing the gzip data in order to not break the checksum validation. When +gzip is disabled, the API client will disable gzip, preventing the HTTP +client's default behavior. + +An `EnableAcceptEncodingGzip` option may or may not be present depending on the client using +the below middleware. The option if present can be used to enable auto decompressing +gzip by the SDK. +*/ +package acceptencoding diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go new file mode 100644 index 000000000000..823c5f15748e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go @@ -0,0 +1,6 @@ +// Code generated by internal/repotools/cmd/updatemodulemeta DO NOT EDIT. + +package acceptencoding + +// goModuleVersion is the tagged release for this module +const goModuleVersion = "1.11.5" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md index f19fdf9c325f..8e859f5b1fba 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md @@ -1,3 +1,215 @@ +# v1.11.20 (2024-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.19 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.18 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.17 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.16 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.15 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.14 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.13 (2024-06-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.12 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.11 (2024-06-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.10 (2024-06-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.9 (2024-05-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.8 (2024-05-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.7 (2024-03-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.6 (2024-03-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.5 (2024-03-07) + +* **Bug Fix**: Remove dependency on go-cmp. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.4 (2024-03-05) + +* **Bug Fix**: Restore typo'd API `AddAsIsInternalPresigingMiddleware` as an alias for backwards compatibility. + +# v1.11.3 (2024-03-04) + +* **Bug Fix**: Correct a typo in internal AddAsIsPresigningMiddleware API. + +# v1.11.2 (2024-02-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.1 (2024-02-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.10 (2024-01-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.9 (2023-12-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.8 (2023-12-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.7 (2023-11-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.6 (2023-11-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.5 (2023-11-28.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.4 (2023-11-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.3 (2023-11-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.2 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.1 (2023-11-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.37 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.36 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.35 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.34 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.33 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.32 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.31 (2023-07-31) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.30 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.29 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.28 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.27 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.26 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.25 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.24 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.23 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.22 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.21 (2022-12-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.20 (2022-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.19 (2022-10-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.18 (2022-10-21) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.9.17 (2022-09-20) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/context.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/context.go index cc919701a06f..5d5286f92cc8 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/context.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/context.go @@ -27,13 +27,21 @@ func GetIsPresigning(ctx context.Context) bool { type isPresigningKey struct{} -// AddAsIsPresigingMiddleware adds a middleware to the head of the stack that +// AddAsIsPresigningMiddleware adds a middleware to the head of the stack that // will update the stack's context to be flagged as being invoked for the // purpose of presigning. -func AddAsIsPresigingMiddleware(stack *middleware.Stack) error { +func AddAsIsPresigningMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(asIsPresigningMiddleware{}, middleware.Before) } +// AddAsIsPresigingMiddleware is an alias for backwards compatibility. +// +// Deprecated: This API was released with a typo. Use +// [AddAsIsPresigningMiddleware] instead. +func AddAsIsPresigingMiddleware(stack *middleware.Stack) error { + return AddAsIsPresigningMiddleware(stack) +} + type asIsPresigningMiddleware struct{} func (asIsPresigningMiddleware) ID() string { return "AsIsPresigningMiddleware" } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go index da09a149ed39..fa0269d34fae 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go @@ -3,4 +3,4 @@ package presignedurl // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.9.17" +const goModuleVersion = "1.11.20" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md index f58d0adb94c6..4d7a71c175ef 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md @@ -1,3 +1,318 @@ +# v1.23.0 (2024-09-20) + +* **Feature**: Add tracing and metrics support to service clients. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.22.8 (2024-09-17) + +* **Bug Fix**: **BREAKFIX**: Only generate AccountIDEndpointMode config for services that use it. This is a compiler break, but removes no actual functionality, as no services currently use the account ID in endpoint resolution. + +# v1.22.7 (2024-09-04) + +* No change notes available for this release. + +# v1.22.6 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.22.5 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.22.4 (2024-07-18) + +* No change notes available for this release. + +# v1.22.3 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.22.2 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.22.1 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.22.0 (2024-06-26) + +* **Feature**: Support list-of-string endpoint parameter. + +# v1.21.1 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.0 (2024-06-18) + +* **Feature**: Track usage of various AWS SDK features in user-agent string. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.12 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.11 (2024-06-07) + +* **Bug Fix**: Add clock skew correction on all service clients +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.10 (2024-06-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.9 (2024-05-23) + +* No change notes available for this release. + +# v1.20.8 (2024-05-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.7 (2024-05-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.6 (2024-05-08) + +* **Bug Fix**: GoDoc improvement + +# v1.20.5 (2024-04-05) + +* No change notes available for this release. + +# v1.20.4 (2024-03-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.3 (2024-03-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.2 (2024-03-07) + +* **Bug Fix**: Remove dependency on go-cmp. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.1 (2024-02-23) + +* **Bug Fix**: Move all common, SDK-side middleware stack ops into the service client module to prevent cross-module compatibility issues in the future. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.0 (2024-02-22) + +* **Feature**: Add middleware stack snapshot tests. + +# v1.19.2 (2024-02-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.19.1 (2024-02-20) + +* **Bug Fix**: When sourcing values for a service's `EndpointParameters`, the lack of a configured region (i.e. `options.Region == ""`) will now translate to a `nil` value for `EndpointParameters.Region` instead of a pointer to the empty string `""`. This will result in a much more explicit error when calling an operation instead of an obscure hostname lookup failure. + +# v1.19.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.7 (2024-01-18) + +* No change notes available for this release. + +# v1.18.6 (2024-01-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.5 (2023-12-08) + +* **Bug Fix**: Reinstate presence of default Retryer in functional options, but still respect max attempts set therein. + +# v1.18.4 (2023-12-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.3 (2023-12-06) + +* **Bug Fix**: Restore pre-refactor auth behavior where all operations could technically be performed anonymously. + +# v1.18.2 (2023-12-01) + +* **Bug Fix**: Correct wrapping of errors in authentication workflow. +* **Bug Fix**: Correctly recognize cache-wrapped instances of AnonymousCredentials at client construction. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.1 (2023-11-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.0 (2023-11-29) + +* **Feature**: Expose Options() accessor on service clients. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.5 (2023-11-28.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.4 (2023-11-28) + +* **Bug Fix**: Respect setting RetryMaxAttempts in functional options at client construction. + +# v1.17.3 (2023-11-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.2 (2023-11-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.1 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.0 (2023-11-01) + +* **Feature**: Adds support for configured endpoints via environment variables and the AWS shared configuration file. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.2 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.1 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.0 (2023-10-02) + +* **Feature**: Fix FIPS Endpoints in aws-us-gov. + +# v1.14.1 (2023-09-22) + +* No change notes available for this release. + +# v1.14.0 (2023-09-18) + +* **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* **Feature**: Adds several endpoint ruleset changes across all models: smaller rulesets, removed non-unique regional endpoints, fixes FIPS and DualStack endpoints, and make region not required in SDK::Endpoint. Additional breakfix to cognito-sync field. + +# v1.13.6 (2023-08-31) + +* No change notes available for this release. + +# v1.13.5 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.4 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.3 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.2 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.1 (2023-08-01) + +* No change notes available for this release. + +# v1.13.0 (2023-07-31) + +* **Feature**: Adds support for smithy-modeled endpoint resolution. A new rules-based endpoint resolution will be added to the SDK which will supercede and deprecate existing endpoint resolution. Specifically, EndpointResolver will be deprecated while BaseEndpoint and EndpointResolverV2 will take its place. For more information, please see the Endpoints section in our Developer Guide. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.14 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.13 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.12 (2023-06-15) + +* No change notes available for this release. + +# v1.12.11 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.10 (2023-05-04) + +* No change notes available for this release. + +# v1.12.9 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.8 (2023-04-10) + +* No change notes available for this release. + +# v1.12.7 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.6 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.5 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.4 (2023-02-22) + +* **Bug Fix**: Prevent nil pointer dereference when retrieving error codes. + +# v1.12.3 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.2 (2023-02-15) + +* **Announcement**: When receiving an error response in restJson-based services, an incorrect error type may have been returned based on the content of the response. This has been fixed via PR #2012 tracked in issue #1910. +* **Bug Fix**: Correct error type parsing for restJson services. + +# v1.12.1 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.0 (2023-01-05) + +* **Feature**: Add `ErrorCodeOverride` field to all error structs (aws/smithy-go#401). + +# v1.11.28 (2022-12-20) + +* No change notes available for this release. + +# v1.11.27 (2022-12-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.26 (2022-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.25 (2022-10-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.11.24 (2022-10-21) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.11.23 (2022-09-20) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_client.go index 7bb069844422..fe8e46769da3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_client.go @@ -4,169 +4,241 @@ package sso import ( "context" + "errors" + "fmt" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/aws/defaults" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/retry" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" + internalauth "github.com/aws/aws-sdk-go-v2/internal/auth" + internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy" internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + internalmiddleware "github.com/aws/aws-sdk-go-v2/internal/middleware" smithy "github.com/aws/smithy-go" + smithyauth "github.com/aws/smithy-go/auth" smithydocument "github.com/aws/smithy-go/document" "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/metrics" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" "net" "net/http" + "sync/atomic" "time" ) const ServiceID = "SSO" const ServiceAPIVersion = "2019-06-10" -// Client provides the API client to make operations call for AWS Single Sign-On. -type Client struct { - options Options +type operationMetrics struct { + Duration metrics.Float64Histogram + SerializeDuration metrics.Float64Histogram + ResolveIdentityDuration metrics.Float64Histogram + ResolveEndpointDuration metrics.Float64Histogram + SignRequestDuration metrics.Float64Histogram + DeserializeDuration metrics.Float64Histogram } -// New returns an initialized Client based on the functional options. Provide -// additional functional options to further configure the behavior of the client, -// such as changing the client's endpoint or adding custom middleware behavior. -func New(options Options, optFns ...func(*Options)) *Client { - options = options.Copy() +func (m *operationMetrics) histogramFor(name string) metrics.Float64Histogram { + switch name { + case "client.call.duration": + return m.Duration + case "client.call.serialization_duration": + return m.SerializeDuration + case "client.call.resolve_identity_duration": + return m.ResolveIdentityDuration + case "client.call.resolve_endpoint_duration": + return m.ResolveEndpointDuration + case "client.call.signing_duration": + return m.SignRequestDuration + case "client.call.deserialization_duration": + return m.DeserializeDuration + default: + panic("unrecognized operation metric") + } +} - resolveDefaultLogger(&options) +func timeOperationMetric[T any]( + ctx context.Context, metric string, fn func() (T, error), + opts ...metrics.RecordMetricOption, +) (T, error) { + instr := getOperationMetrics(ctx).histogramFor(metric) + opts = append([]metrics.RecordMetricOption{withOperationMetadata(ctx)}, opts...) - setResolvedDefaultsMode(&options) + start := time.Now() + v, err := fn() + end := time.Now() - resolveRetryer(&options) + elapsed := end.Sub(start) + instr.Record(ctx, float64(elapsed)/1e9, opts...) + return v, err +} - resolveHTTPClient(&options) +func startMetricTimer(ctx context.Context, metric string, opts ...metrics.RecordMetricOption) func() { + instr := getOperationMetrics(ctx).histogramFor(metric) + opts = append([]metrics.RecordMetricOption{withOperationMetadata(ctx)}, opts...) - resolveHTTPSignerV4(&options) + var ended bool + start := time.Now() + return func() { + if ended { + return + } + ended = true - resolveDefaultEndpointConfiguration(&options) + end := time.Now() - for _, fn := range optFns { - fn(&options) + elapsed := end.Sub(start) + instr.Record(ctx, float64(elapsed)/1e9, opts...) } +} - client := &Client{ - options: options, +func withOperationMetadata(ctx context.Context) metrics.RecordMetricOption { + return func(o *metrics.RecordMetricOptions) { + o.Properties.Set("rpc.service", middleware.GetServiceID(ctx)) + o.Properties.Set("rpc.method", middleware.GetOperationName(ctx)) } +} - return client +type operationMetricsKey struct{} + +func withOperationMetrics(parent context.Context, mp metrics.MeterProvider) (context.Context, error) { + meter := mp.Meter("github.com/aws/aws-sdk-go-v2/service/sso") + om := &operationMetrics{} + + var err error + + om.Duration, err = operationMetricTimer(meter, "client.call.duration", + "Overall call duration (including retries and time to send or receive request and response body)") + if err != nil { + return nil, err + } + om.SerializeDuration, err = operationMetricTimer(meter, "client.call.serialization_duration", + "The time it takes to serialize a message body") + if err != nil { + return nil, err + } + om.ResolveIdentityDuration, err = operationMetricTimer(meter, "client.call.auth.resolve_identity_duration", + "The time taken to acquire an identity (AWS credentials, bearer token, etc) from an Identity Provider") + if err != nil { + return nil, err + } + om.ResolveEndpointDuration, err = operationMetricTimer(meter, "client.call.resolve_endpoint_duration", + "The time it takes to resolve an endpoint (endpoint resolver, not DNS) for the request") + if err != nil { + return nil, err + } + om.SignRequestDuration, err = operationMetricTimer(meter, "client.call.auth.signing_duration", + "The time it takes to sign a request") + if err != nil { + return nil, err + } + om.DeserializeDuration, err = operationMetricTimer(meter, "client.call.deserialization_duration", + "The time it takes to deserialize a message body") + if err != nil { + return nil, err + } + + return context.WithValue(parent, operationMetricsKey{}, om), nil } -type Options struct { - // Set of options to modify how an operation is invoked. These apply to all - // operations invoked for this client. Use functional options on operation call to - // modify this list for per operation behavior. - APIOptions []func(*middleware.Stack) error +func operationMetricTimer(m metrics.Meter, name, desc string) (metrics.Float64Histogram, error) { + return m.Float64Histogram(name, func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = desc + }) +} - // Configures the events that will be sent to the configured logger. - ClientLogMode aws.ClientLogMode +func getOperationMetrics(ctx context.Context) *operationMetrics { + return ctx.Value(operationMetricsKey{}).(*operationMetrics) +} - // The credentials object to use when signing requests. - Credentials aws.CredentialsProvider +func operationTracer(p tracing.TracerProvider) tracing.Tracer { + return p.Tracer("github.com/aws/aws-sdk-go-v2/service/sso") +} - // The configuration DefaultsMode that the SDK should use when constructing the - // clients initial default settings. - DefaultsMode aws.DefaultsMode +// Client provides the API client to make operations call for AWS Single Sign-On. +type Client struct { + options Options - // The endpoint options to be used when attempting to resolve an endpoint. - EndpointOptions EndpointResolverOptions + // Difference between the time reported by the server and the client + timeOffset *atomic.Int64 +} - // The service endpoint resolver. - EndpointResolver EndpointResolver +// New returns an initialized Client based on the functional options. Provide +// additional functional options to further configure the behavior of the client, +// such as changing the client's endpoint or adding custom middleware behavior. +func New(options Options, optFns ...func(*Options)) *Client { + options = options.Copy() - // Signature Version 4 (SigV4) Signer - HTTPSignerV4 HTTPSignerV4 + resolveDefaultLogger(&options) - // The logger writer interface to write logging messages to. - Logger logging.Logger + setResolvedDefaultsMode(&options) - // The region to send requests to. (Required) - Region string + resolveRetryer(&options) - // RetryMaxAttempts specifies the maximum number attempts an API client will call - // an operation that fails with a retryable error. A value of 0 is ignored, and - // will not be used to configure the API client created default retryer, or modify - // per operation call's retry max attempts. When creating a new API Clients this - // member will only be used if the Retryer Options member is nil. This value will - // be ignored if Retryer is not nil. If specified in an operation call's functional - // options with a value that is different than the constructed client's Options, - // the Client's Retryer will be wrapped to use the operation's specific - // RetryMaxAttempts value. - RetryMaxAttempts int + resolveHTTPClient(&options) - // RetryMode specifies the retry mode the API client will be created with, if - // Retryer option is not also specified. When creating a new API Clients this - // member will only be used if the Retryer Options member is nil. This value will - // be ignored if Retryer is not nil. Currently does not support per operation call - // overrides, may in the future. - RetryMode aws.RetryMode + resolveHTTPSignerV4(&options) - // Retryer guides how HTTP requests should be retried in case of recoverable - // failures. When nil the API client will use a default retryer. The kind of - // default retry created by the API client can be changed with the RetryMode - // option. - Retryer aws.Retryer + resolveEndpointResolverV2(&options) - // The RuntimeEnvironment configuration, only populated if the DefaultsMode is set - // to DefaultsModeAuto and is initialized using config.LoadDefaultConfig. You - // should not populate this structure programmatically, or rely on the values here - // within your applications. - RuntimeEnvironment aws.RuntimeEnvironment + resolveTracerProvider(&options) - // The initial DefaultsMode used when the client options were constructed. If the - // DefaultsMode was set to aws.DefaultsModeAuto this will store what the resolved - // value was at that point in time. Currently does not support per operation call - // overrides, may in the future. - resolvedDefaultsMode aws.DefaultsMode + resolveMeterProvider(&options) - // The HTTP client to invoke API calls with. Defaults to client's default HTTP - // implementation if nil. - HTTPClient HTTPClient -} + resolveAuthSchemeResolver(&options) -// WithAPIOptions returns a functional option for setting the Client's APIOptions -// option. -func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) { - return func(o *Options) { - o.APIOptions = append(o.APIOptions, optFns...) + for _, fn := range optFns { + fn(&options) } -} -// WithEndpointResolver returns a functional option for setting the Client's -// EndpointResolver option. -func WithEndpointResolver(v EndpointResolver) func(*Options) { - return func(o *Options) { - o.EndpointResolver = v + finalizeRetryMaxAttempts(&options) + + ignoreAnonymousAuth(&options) + + wrapWithAnonymousAuth(&options) + + resolveAuthSchemes(&options) + + client := &Client{ + options: options, } -} -type HTTPClient interface { - Do(*http.Request) (*http.Response, error) -} + initializeTimeOffsetResolver(client) -// Copy creates a clone where the APIOptions list is deep copied. -func (o Options) Copy() Options { - to := o - to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) - copy(to.APIOptions, o.APIOptions) + return client +} - return to +// Options returns a copy of the client configuration. +// +// Callers SHOULD NOT perform mutations on any inner structures within client +// config. Config overrides should instead be made on a per-operation basis through +// functional options. +func (c *Client) Options() Options { + return c.options.Copy() } -func (c *Client) invokeOperation(ctx context.Context, opID string, params interface{}, optFns []func(*Options), stackFns ...func(*middleware.Stack, Options) error) (result interface{}, metadata middleware.Metadata, err error) { + +func (c *Client) invokeOperation( + ctx context.Context, opID string, params interface{}, optFns []func(*Options), stackFns ...func(*middleware.Stack, Options) error, +) ( + result interface{}, metadata middleware.Metadata, err error, +) { ctx = middleware.ClearStackValues(ctx) + ctx = middleware.WithServiceID(ctx, ServiceID) + ctx = middleware.WithOperationName(ctx, opID) + stack := middleware.NewStack(opID, smithyhttp.NewStackRequest) options := c.options.Copy() + for _, fn := range optFns { fn(&options) } - finalizeRetryMaxAttemptOptions(&options, *c) + finalizeOperationRetryMaxAttempts(&options, *c) finalizeClientEndpointResolverOptions(&options) @@ -182,20 +254,140 @@ func (c *Client) invokeOperation(ctx context.Context, opID string, params interf } } - handler := middleware.DecorateHandler(smithyhttp.NewClientHandler(options.HTTPClient), stack) - result, metadata, err = handler.Handle(ctx, params) + ctx, err = withOperationMetrics(ctx, options.MeterProvider) + if err != nil { + return nil, metadata, err + } + + tracer := operationTracer(options.TracerProvider) + spanName := fmt.Sprintf("%s.%s", ServiceID, opID) + + ctx = tracing.WithOperationTracer(ctx, tracer) + + ctx, span := tracer.StartSpan(ctx, spanName, func(o *tracing.SpanOptions) { + o.Kind = tracing.SpanKindClient + o.Properties.Set("rpc.system", "aws-api") + o.Properties.Set("rpc.method", opID) + o.Properties.Set("rpc.service", ServiceID) + }) + endTimer := startMetricTimer(ctx, "client.call.duration") + defer endTimer() + defer span.End() + + handler := smithyhttp.NewClientHandler(options.HTTPClient) + decorated := middleware.DecorateHandler(handler, stack) + result, metadata, err = decorated.Handle(ctx, params) if err != nil { + span.SetProperty("exception.type", fmt.Sprintf("%T", err)) + span.SetProperty("exception.message", err.Error()) + + var aerr smithy.APIError + if errors.As(err, &aerr) { + span.SetProperty("api.error_code", aerr.ErrorCode()) + span.SetProperty("api.error_message", aerr.ErrorMessage()) + span.SetProperty("api.error_fault", aerr.ErrorFault().String()) + } + err = &smithy.OperationError{ ServiceID: ServiceID, OperationName: opID, Err: err, } } + + span.SetProperty("error", err != nil) + if err == nil { + span.SetStatus(tracing.SpanStatusOK) + } else { + span.SetStatus(tracing.SpanStatusError) + } + return result, metadata, err } +type operationInputKey struct{} + +func setOperationInput(ctx context.Context, input interface{}) context.Context { + return middleware.WithStackValue(ctx, operationInputKey{}, input) +} + +func getOperationInput(ctx context.Context) interface{} { + return middleware.GetStackValue(ctx, operationInputKey{}) +} + +type setOperationInputMiddleware struct { +} + +func (*setOperationInputMiddleware) ID() string { + return "setOperationInput" +} + +func (m *setOperationInputMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + ctx = setOperationInput(ctx, in.Parameters) + return next.HandleSerialize(ctx, in) +} + +func addProtocolFinalizerMiddlewares(stack *middleware.Stack, options Options, operation string) error { + if err := stack.Finalize.Add(&resolveAuthSchemeMiddleware{operation: operation, options: options}, middleware.Before); err != nil { + return fmt.Errorf("add ResolveAuthScheme: %w", err) + } + if err := stack.Finalize.Insert(&getIdentityMiddleware{options: options}, "ResolveAuthScheme", middleware.After); err != nil { + return fmt.Errorf("add GetIdentity: %v", err) + } + if err := stack.Finalize.Insert(&resolveEndpointV2Middleware{options: options}, "GetIdentity", middleware.After); err != nil { + return fmt.Errorf("add ResolveEndpointV2: %v", err) + } + if err := stack.Finalize.Insert(&signRequestMiddleware{options: options}, "ResolveEndpointV2", middleware.After); err != nil { + return fmt.Errorf("add Signing: %w", err) + } + return nil +} +func resolveAuthSchemeResolver(options *Options) { + if options.AuthSchemeResolver == nil { + options.AuthSchemeResolver = &defaultAuthSchemeResolver{} + } +} + +func resolveAuthSchemes(options *Options) { + if options.AuthSchemes == nil { + options.AuthSchemes = []smithyhttp.AuthScheme{ + internalauth.NewHTTPAuthScheme("aws.auth#sigv4", &internalauthsmithy.V4SignerAdapter{ + Signer: options.HTTPSignerV4, + Logger: options.Logger, + LogSigning: options.ClientLogMode.IsSigning(), + }), + } + } +} + type noSmithyDocumentSerde = smithydocument.NoSerde +type legacyEndpointContextSetter struct { + LegacyResolver EndpointResolver +} + +func (*legacyEndpointContextSetter) ID() string { + return "legacyEndpointContextSetter" +} + +func (m *legacyEndpointContextSetter) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.LegacyResolver != nil { + ctx = awsmiddleware.SetRequiresLegacyEndpoints(ctx, true) + } + + return next.HandleInitialize(ctx, in) + +} +func addlegacyEndpointContextSetter(stack *middleware.Stack, o Options) error { + return stack.Initialize.Add(&legacyEndpointContextSetter{ + LegacyResolver: o.EndpointResolver, + }, middleware.Before) +} + func resolveDefaultLogger(o *Options) { if o.Logger != nil { return @@ -233,6 +425,7 @@ func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { APIOptions: cfg.APIOptions, Logger: cfg.Logger, ClientLogMode: cfg.ClientLogMode, + AppID: cfg.AppID, } resolveAWSRetryerProvider(cfg, &opts) resolveAWSRetryMaxAttempts(cfg, &opts) @@ -240,6 +433,7 @@ func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { resolveAWSEndpointResolver(cfg, &opts) resolveUseDualStackEndpoint(cfg, &opts) resolveUseFIPSEndpoint(cfg, &opts) + resolveBaseEndpoint(cfg, &opts) return New(opts, optFns...) } @@ -331,7 +525,15 @@ func resolveAWSRetryMaxAttempts(cfg aws.Config, o *Options) { o.RetryMaxAttempts = cfg.RetryMaxAttempts } -func finalizeRetryMaxAttemptOptions(o *Options, client Client) { +func finalizeRetryMaxAttempts(o *Options) { + if o.RetryMaxAttempts == 0 { + return + } + + o.Retryer = retry.AddWithMaxAttempts(o.Retryer, o.RetryMaxAttempts) +} + +func finalizeOperationRetryMaxAttempts(o *Options, client Client) { if v := o.RetryMaxAttempts; v == 0 || v == client.options.RetryMaxAttempts { return } @@ -343,20 +545,39 @@ func resolveAWSEndpointResolver(cfg aws.Config, o *Options) { if cfg.EndpointResolver == nil && cfg.EndpointResolverWithOptions == nil { return } - o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions, NewDefaultEndpointResolver()) + o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions) } -func addClientUserAgent(stack *middleware.Stack) error { - return awsmiddleware.AddSDKAgentKeyValue(awsmiddleware.APIMetadata, "sso", goModuleVersion)(stack) +func addClientUserAgent(stack *middleware.Stack, options Options) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddSDKAgentKeyValue(awsmiddleware.APIMetadata, "sso", goModuleVersion) + if len(options.AppID) > 0 { + ua.AddSDKAgentKey(awsmiddleware.ApplicationIdentifier, options.AppID) + } + + return nil } -func addHTTPSignerV4Middleware(stack *middleware.Stack, o Options) error { - mw := v4.NewSignHTTPRequestMiddleware(v4.SignHTTPRequestMiddlewareOptions{ - CredentialsProvider: o.Credentials, - Signer: o.HTTPSignerV4, - LogSigning: o.ClientLogMode.IsSigning(), - }) - return stack.Finalize.Add(mw, middleware.After) +func getOrAddRequestUserAgent(stack *middleware.Stack) (*awsmiddleware.RequestUserAgent, error) { + id := (*awsmiddleware.RequestUserAgent)(nil).ID() + mw, ok := stack.Build.Get(id) + if !ok { + mw = awsmiddleware.NewRequestUserAgent() + if err := stack.Build.Add(mw, middleware.After); err != nil { + return nil, err + } + } + + ua, ok := mw.(*awsmiddleware.RequestUserAgent) + if !ok { + return nil, fmt.Errorf("%T for %s middleware did not match expected type", mw, id) + } + + return ua, nil } type HTTPSignerV4 interface { @@ -377,12 +598,97 @@ func newDefaultV4Signer(o Options) *v4.Signer { }) } -func addRetryMiddlewares(stack *middleware.Stack, o Options) error { - mo := retry.AddRetryMiddlewaresOptions{ - Retryer: o.Retryer, - LogRetryAttempts: o.ClientLogMode.IsRetries(), +func addClientRequestID(stack *middleware.Stack) error { + return stack.Build.Add(&awsmiddleware.ClientRequestID{}, middleware.After) +} + +func addComputeContentLength(stack *middleware.Stack) error { + return stack.Build.Add(&smithyhttp.ComputeContentLength{}, middleware.After) +} + +func addRawResponseToMetadata(stack *middleware.Stack) error { + return stack.Deserialize.Add(&awsmiddleware.AddRawResponse{}, middleware.Before) +} + +func addRecordResponseTiming(stack *middleware.Stack) error { + return stack.Deserialize.Add(&awsmiddleware.RecordResponseTiming{}, middleware.After) +} + +func addSpanRetryLoop(stack *middleware.Stack, options Options) error { + return stack.Finalize.Insert(&spanRetryLoop{options: options}, "Retry", middleware.Before) +} + +type spanRetryLoop struct { + options Options +} + +func (*spanRetryLoop) ID() string { + return "spanRetryLoop" +} + +func (m *spanRetryLoop) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, +) ( + middleware.FinalizeOutput, middleware.Metadata, error, +) { + tracer := operationTracer(m.options.TracerProvider) + ctx, span := tracer.StartSpan(ctx, "RetryLoop") + defer span.End() + + return next.HandleFinalize(ctx, in) +} +func addStreamingEventsPayload(stack *middleware.Stack) error { + return stack.Finalize.Add(&v4.StreamingEventsPayload{}, middleware.Before) +} + +func addUnsignedPayload(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.UnsignedPayload{}, "ResolveEndpointV2", middleware.After) +} + +func addComputePayloadSHA256(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.ComputePayloadSHA256{}, "ResolveEndpointV2", middleware.After) +} + +func addContentSHA256Header(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.ContentSHA256Header{}, (*v4.ComputePayloadSHA256)(nil).ID(), middleware.After) +} + +func addIsWaiterUserAgent(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureWaiter) + return nil + }) +} + +func addIsPaginatorUserAgent(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeaturePaginator) + return nil + }) +} + +func addRetry(stack *middleware.Stack, o Options) error { + attempt := retry.NewAttemptMiddleware(o.Retryer, smithyhttp.RequestCloner, func(m *retry.Attempt) { + m.LogAttempts = o.ClientLogMode.IsRetries() + m.OperationMeter = o.MeterProvider.Meter("github.com/aws/aws-sdk-go-v2/service/sso") + }) + if err := stack.Finalize.Insert(attempt, "Signing", middleware.Before); err != nil { + return err } - return retry.AddRetryMiddlewares(stack, mo) + if err := stack.Finalize.Insert(&retry.MetricsHeader{}, attempt.ID(), middleware.After); err != nil { + return err + } + return nil } // resolves dual-stack endpoint configuration @@ -415,12 +721,68 @@ func resolveUseFIPSEndpoint(cfg aws.Config, o *Options) error { return nil } +func resolveAccountID(identity smithyauth.Identity, mode aws.AccountIDEndpointMode) *string { + if mode == aws.AccountIDEndpointModeDisabled { + return nil + } + + if ca, ok := identity.(*internalauthsmithy.CredentialsAdapter); ok && ca.Credentials.AccountID != "" { + return aws.String(ca.Credentials.AccountID) + } + + return nil +} + +func addTimeOffsetBuild(stack *middleware.Stack, c *Client) error { + mw := internalmiddleware.AddTimeOffsetMiddleware{Offset: c.timeOffset} + if err := stack.Build.Add(&mw, middleware.After); err != nil { + return err + } + return stack.Deserialize.Insert(&mw, "RecordResponseTiming", middleware.Before) +} +func initializeTimeOffsetResolver(c *Client) { + c.timeOffset = new(atomic.Int64) +} + +func addUserAgentRetryMode(stack *middleware.Stack, options Options) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + switch options.Retryer.(type) { + case *retry.Standard: + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureRetryModeStandard) + case *retry.AdaptiveMode: + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureRetryModeAdaptive) + } + return nil +} + +func resolveTracerProvider(options *Options) { + if options.TracerProvider == nil { + options.TracerProvider = &tracing.NopTracerProvider{} + } +} + +func resolveMeterProvider(options *Options) { + if options.MeterProvider == nil { + options.MeterProvider = metrics.NopMeterProvider{} + } +} + +func addRecursionDetection(stack *middleware.Stack) error { + return stack.Build.Add(&awsmiddleware.RecursionDetection{}, middleware.After) +} + func addRequestIDRetrieverMiddleware(stack *middleware.Stack) error { - return awsmiddleware.AddRequestIDRetrieverMiddleware(stack) + return stack.Deserialize.Insert(&awsmiddleware.RequestIDRetriever{}, "OperationDeserializer", middleware.Before) + } func addResponseErrorMiddleware(stack *middleware.Stack) error { - return awshttp.AddResponseErrorMiddleware(stack) + return stack.Deserialize.Insert(&awshttp.ResponseErrorWrapper{}, "RequestIDRetriever", middleware.Before) + } func addRequestResponseLogging(stack *middleware.Stack, o Options) error { @@ -431,3 +793,118 @@ func addRequestResponseLogging(stack *middleware.Stack, o Options) error { LogResponseWithBody: o.ClientLogMode.IsResponseWithBody(), }, middleware.After) } + +type disableHTTPSMiddleware struct { + DisableHTTPS bool +} + +func (*disableHTTPSMiddleware) ID() string { + return "disableHTTPS" +} + +func (m *disableHTTPSMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.DisableHTTPS && !smithyhttp.GetHostnameImmutable(ctx) { + req.URL.Scheme = "http" + } + + return next.HandleFinalize(ctx, in) +} + +func addDisableHTTPSMiddleware(stack *middleware.Stack, o Options) error { + return stack.Finalize.Insert(&disableHTTPSMiddleware{ + DisableHTTPS: o.EndpointOptions.DisableHTTPS, + }, "ResolveEndpointV2", middleware.After) +} + +type spanInitializeStart struct { +} + +func (*spanInitializeStart) ID() string { + return "spanInitializeStart" +} + +func (m *spanInitializeStart) HandleInitialize( + ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, +) ( + middleware.InitializeOutput, middleware.Metadata, error, +) { + ctx, _ = tracing.StartSpan(ctx, "Initialize") + + return next.HandleInitialize(ctx, in) +} + +type spanInitializeEnd struct { +} + +func (*spanInitializeEnd) ID() string { + return "spanInitializeEnd" +} + +func (m *spanInitializeEnd) HandleInitialize( + ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, +) ( + middleware.InitializeOutput, middleware.Metadata, error, +) { + ctx, span := tracing.PopSpan(ctx) + span.End() + + return next.HandleInitialize(ctx, in) +} + +type spanBuildRequestStart struct { +} + +func (*spanBuildRequestStart) ID() string { + return "spanBuildRequestStart" +} + +func (m *spanBuildRequestStart) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + middleware.SerializeOutput, middleware.Metadata, error, +) { + ctx, _ = tracing.StartSpan(ctx, "BuildRequest") + + return next.HandleSerialize(ctx, in) +} + +type spanBuildRequestEnd struct { +} + +func (*spanBuildRequestEnd) ID() string { + return "spanBuildRequestEnd" +} + +func (m *spanBuildRequestEnd) HandleBuild( + ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler, +) ( + middleware.BuildOutput, middleware.Metadata, error, +) { + ctx, span := tracing.PopSpan(ctx) + span.End() + + return next.HandleBuild(ctx, in) +} + +func addSpanInitializeStart(stack *middleware.Stack) error { + return stack.Initialize.Add(&spanInitializeStart{}, middleware.Before) +} + +func addSpanInitializeEnd(stack *middleware.Stack) error { + return stack.Initialize.Add(&spanInitializeEnd{}, middleware.After) +} + +func addSpanBuildRequestStart(stack *middleware.Stack) error { + return stack.Serialize.Add(&spanBuildRequestStart{}, middleware.Before) +} + +func addSpanBuildRequestEnd(stack *middleware.Stack) error { + return stack.Build.Add(&spanBuildRequestEnd{}, middleware.After) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_GetRoleCredentials.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_GetRoleCredentials.go index 1c2b7499d58d..a6560202376b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_GetRoleCredentials.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_GetRoleCredentials.go @@ -4,14 +4,15 @@ package sso import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/service/sso/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Returns the STS short-term credentials for a given role name that is assigned to -// the user. +// Returns the STS short-term credentials for a given role name that is assigned +// to the user. func (c *Client) GetRoleCredentials(ctx context.Context, params *GetRoleCredentialsInput, optFns ...func(*Options)) (*GetRoleCredentialsOutput, error) { if params == nil { params = &GetRoleCredentialsInput{} @@ -29,10 +30,10 @@ func (c *Client) GetRoleCredentials(ctx context.Context, params *GetRoleCredenti type GetRoleCredentialsInput struct { - // The token issued by the CreateToken API call. For more information, see - // CreateToken - // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html) - // in the IAM Identity Center OIDC API Reference Guide. + // The token issued by the CreateToken API call. For more information, see [CreateToken] in the + // IAM Identity Center OIDC API Reference Guide. + // + // [CreateToken]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html // // This member is required. AccessToken *string @@ -62,6 +63,9 @@ type GetRoleCredentialsOutput struct { } func (c *Client) addOperationGetRoleCredentialsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsRestjson1_serializeOpGetRoleCredentials{}, middleware.After) if err != nil { return err @@ -70,28 +74,38 @@ func (c *Client) addOperationGetRoleCredentialsMiddlewares(stack *middleware.Sta if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "GetRoleCredentials"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -100,12 +114,24 @@ func (c *Client) addOperationGetRoleCredentialsMiddlewares(stack *middleware.Sta if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpGetRoleCredentialsValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetRoleCredentials(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -115,6 +141,21 @@ func (c *Client) addOperationGetRoleCredentialsMiddlewares(stack *middleware.Sta if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccountRoles.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccountRoles.go index 4fffc77af544..315526ef1a0f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccountRoles.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccountRoles.go @@ -29,10 +29,10 @@ func (c *Client) ListAccountRoles(ctx context.Context, params *ListAccountRolesI type ListAccountRolesInput struct { - // The token issued by the CreateToken API call. For more information, see - // CreateToken - // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html) - // in the IAM Identity Center OIDC API Reference Guide. + // The token issued by the CreateToken API call. For more information, see [CreateToken] in the + // IAM Identity Center OIDC API Reference Guide. + // + // [CreateToken]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html // // This member is required. AccessToken *string @@ -68,6 +68,9 @@ type ListAccountRolesOutput struct { } func (c *Client) addOperationListAccountRolesMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsRestjson1_serializeOpListAccountRoles{}, middleware.After) if err != nil { return err @@ -76,28 +79,38 @@ func (c *Client) addOperationListAccountRolesMiddlewares(stack *middleware.Stack if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListAccountRoles"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -106,12 +119,24 @@ func (c *Client) addOperationListAccountRolesMiddlewares(stack *middleware.Stack if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpListAccountRolesValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAccountRoles(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -121,17 +146,24 @@ func (c *Client) addOperationListAccountRolesMiddlewares(stack *middleware.Stack if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } -// ListAccountRolesAPIClient is a client that implements the ListAccountRoles -// operation. -type ListAccountRolesAPIClient interface { - ListAccountRoles(context.Context, *ListAccountRolesInput, ...func(*Options)) (*ListAccountRolesOutput, error) -} - -var _ ListAccountRolesAPIClient = (*Client)(nil) - // ListAccountRolesPaginatorOptions is the paginator options for ListAccountRoles type ListAccountRolesPaginatorOptions struct { // The number of items that clients can request per page. @@ -195,6 +227,9 @@ func (p *ListAccountRolesPaginator) NextPage(ctx context.Context, optFns ...func } params.MaxResults = limit + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) result, err := p.client.ListAccountRoles(ctx, ¶ms, optFns...) if err != nil { return nil, err @@ -214,6 +249,14 @@ func (p *ListAccountRolesPaginator) NextPage(ctx context.Context, optFns ...func return result, nil } +// ListAccountRolesAPIClient is a client that implements the ListAccountRoles +// operation. +type ListAccountRolesAPIClient interface { + ListAccountRoles(context.Context, *ListAccountRolesInput, ...func(*Options)) (*ListAccountRolesOutput, error) +} + +var _ ListAccountRolesAPIClient = (*Client)(nil) + func newServiceMetadataMiddleware_opListAccountRoles(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccounts.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccounts.go index e717a426c54b..d867b78a6f25 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccounts.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccounts.go @@ -12,10 +12,10 @@ import ( ) // Lists all AWS accounts assigned to the user. These AWS accounts are assigned by -// the administrator of the account. For more information, see Assign User Access -// (https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#assignusers) -// in the IAM Identity Center User Guide. This operation returns a paginated -// response. +// the administrator of the account. For more information, see [Assign User Access]in the IAM Identity +// Center User Guide. This operation returns a paginated response. +// +// [Assign User Access]: https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#assignusers func (c *Client) ListAccounts(ctx context.Context, params *ListAccountsInput, optFns ...func(*Options)) (*ListAccountsOutput, error) { if params == nil { params = &ListAccountsInput{} @@ -33,10 +33,10 @@ func (c *Client) ListAccounts(ctx context.Context, params *ListAccountsInput, op type ListAccountsInput struct { - // The token issued by the CreateToken API call. For more information, see - // CreateToken - // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html) - // in the IAM Identity Center OIDC API Reference Guide. + // The token issued by the CreateToken API call. For more information, see [CreateToken] in the + // IAM Identity Center OIDC API Reference Guide. + // + // [CreateToken]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html // // This member is required. AccessToken *string @@ -67,6 +67,9 @@ type ListAccountsOutput struct { } func (c *Client) addOperationListAccountsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsRestjson1_serializeOpListAccounts{}, middleware.After) if err != nil { return err @@ -75,28 +78,38 @@ func (c *Client) addOperationListAccountsMiddlewares(stack *middleware.Stack, op if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListAccounts"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -105,12 +118,24 @@ func (c *Client) addOperationListAccountsMiddlewares(stack *middleware.Stack, op if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpListAccountsValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAccounts(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -120,16 +145,24 @@ func (c *Client) addOperationListAccountsMiddlewares(stack *middleware.Stack, op if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } -// ListAccountsAPIClient is a client that implements the ListAccounts operation. -type ListAccountsAPIClient interface { - ListAccounts(context.Context, *ListAccountsInput, ...func(*Options)) (*ListAccountsOutput, error) -} - -var _ ListAccountsAPIClient = (*Client)(nil) - // ListAccountsPaginatorOptions is the paginator options for ListAccounts type ListAccountsPaginatorOptions struct { // This is the number of items clients can request per page. @@ -193,6 +226,9 @@ func (p *ListAccountsPaginator) NextPage(ctx context.Context, optFns ...func(*Op } params.MaxResults = limit + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) result, err := p.client.ListAccounts(ctx, ¶ms, optFns...) if err != nil { return nil, err @@ -212,6 +248,13 @@ func (p *ListAccountsPaginator) NextPage(ctx context.Context, optFns ...func(*Op return result, nil } +// ListAccountsAPIClient is a client that implements the ListAccounts operation. +type ListAccountsAPIClient interface { + ListAccounts(context.Context, *ListAccountsInput, ...func(*Options)) (*ListAccountsOutput, error) +} + +var _ ListAccountsAPIClient = (*Client)(nil) + func newServiceMetadataMiddleware_opListAccounts(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_Logout.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_Logout.go index 8b9b44745e7c..434b430852ea 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_Logout.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_Logout.go @@ -4,6 +4,7 @@ package sso import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" @@ -11,17 +12,20 @@ import ( // Removes the locally stored SSO tokens from the client-side cache and sends an // API call to the IAM Identity Center service to invalidate the corresponding -// server-side IAM Identity Center sign in session. If a user uses IAM Identity -// Center to access the AWS CLI, the user’s IAM Identity Center sign in session is -// used to obtain an IAM session, as specified in the corresponding IAM Identity -// Center permission set. More specifically, IAM Identity Center assumes an IAM -// role in the target account on behalf of the user, and the corresponding -// temporary AWS credentials are returned to the client. After user logout, any -// existing IAM role sessions that were created by using IAM Identity Center -// permission sets continue based on the duration configured in the permission set. -// For more information, see User authentications -// (https://docs.aws.amazon.com/singlesignon/latest/userguide/authconcept.html) in -// the IAM Identity Center User Guide. +// server-side IAM Identity Center sign in session. +// +// If a user uses IAM Identity Center to access the AWS CLI, the user’s IAM +// Identity Center sign in session is used to obtain an IAM session, as specified +// in the corresponding IAM Identity Center permission set. More specifically, IAM +// Identity Center assumes an IAM role in the target account on behalf of the user, +// and the corresponding temporary AWS credentials are returned to the client. +// +// After user logout, any existing IAM role sessions that were created by using +// IAM Identity Center permission sets continue based on the duration configured in +// the permission set. For more information, see [User authentications]in the IAM Identity Center User +// Guide. +// +// [User authentications]: https://docs.aws.amazon.com/singlesignon/latest/userguide/authconcept.html func (c *Client) Logout(ctx context.Context, params *LogoutInput, optFns ...func(*Options)) (*LogoutOutput, error) { if params == nil { params = &LogoutInput{} @@ -39,10 +43,10 @@ func (c *Client) Logout(ctx context.Context, params *LogoutInput, optFns ...func type LogoutInput struct { - // The token issued by the CreateToken API call. For more information, see - // CreateToken - // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html) - // in the IAM Identity Center OIDC API Reference Guide. + // The token issued by the CreateToken API call. For more information, see [CreateToken] in the + // IAM Identity Center OIDC API Reference Guide. + // + // [CreateToken]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html // // This member is required. AccessToken *string @@ -58,6 +62,9 @@ type LogoutOutput struct { } func (c *Client) addOperationLogoutMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsRestjson1_serializeOpLogout{}, middleware.After) if err != nil { return err @@ -66,28 +73,38 @@ func (c *Client) addOperationLogoutMiddlewares(stack *middleware.Stack, options if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "Logout"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -96,12 +113,24 @@ func (c *Client) addOperationLogoutMiddlewares(stack *middleware.Stack, options if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpLogoutValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opLogout(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -111,6 +140,21 @@ func (c *Client) addOperationLogoutMiddlewares(stack *middleware.Stack, options if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/auth.go new file mode 100644 index 000000000000..366963b49f62 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/auth.go @@ -0,0 +1,337 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package sso + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + smithy "github.com/aws/smithy-go" + smithyauth "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +func bindAuthParamsRegion(_ interface{}, params *AuthResolverParameters, _ interface{}, options Options) { + params.Region = options.Region +} + +type setLegacyContextSigningOptionsMiddleware struct { +} + +func (*setLegacyContextSigningOptionsMiddleware) ID() string { + return "setLegacyContextSigningOptions" +} + +func (m *setLegacyContextSigningOptionsMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + rscheme := getResolvedAuthScheme(ctx) + schemeID := rscheme.Scheme.SchemeID() + + if sn := awsmiddleware.GetSigningName(ctx); sn != "" { + if schemeID == "aws.auth#sigv4" { + smithyhttp.SetSigV4SigningName(&rscheme.SignerProperties, sn) + } else if schemeID == "aws.auth#sigv4a" { + smithyhttp.SetSigV4ASigningName(&rscheme.SignerProperties, sn) + } + } + + if sr := awsmiddleware.GetSigningRegion(ctx); sr != "" { + if schemeID == "aws.auth#sigv4" { + smithyhttp.SetSigV4SigningRegion(&rscheme.SignerProperties, sr) + } else if schemeID == "aws.auth#sigv4a" { + smithyhttp.SetSigV4ASigningRegions(&rscheme.SignerProperties, []string{sr}) + } + } + + return next.HandleFinalize(ctx, in) +} + +func addSetLegacyContextSigningOptionsMiddleware(stack *middleware.Stack) error { + return stack.Finalize.Insert(&setLegacyContextSigningOptionsMiddleware{}, "Signing", middleware.Before) +} + +type withAnonymous struct { + resolver AuthSchemeResolver +} + +var _ AuthSchemeResolver = (*withAnonymous)(nil) + +func (v *withAnonymous) ResolveAuthSchemes(ctx context.Context, params *AuthResolverParameters) ([]*smithyauth.Option, error) { + opts, err := v.resolver.ResolveAuthSchemes(ctx, params) + if err != nil { + return nil, err + } + + opts = append(opts, &smithyauth.Option{ + SchemeID: smithyauth.SchemeIDAnonymous, + }) + return opts, nil +} + +func wrapWithAnonymousAuth(options *Options) { + if _, ok := options.AuthSchemeResolver.(*defaultAuthSchemeResolver); !ok { + return + } + + options.AuthSchemeResolver = &withAnonymous{ + resolver: options.AuthSchemeResolver, + } +} + +// AuthResolverParameters contains the set of inputs necessary for auth scheme +// resolution. +type AuthResolverParameters struct { + // The name of the operation being invoked. + Operation string + + // The region in which the operation is being invoked. + Region string +} + +func bindAuthResolverParams(ctx context.Context, operation string, input interface{}, options Options) *AuthResolverParameters { + params := &AuthResolverParameters{ + Operation: operation, + } + + bindAuthParamsRegion(ctx, params, input, options) + + return params +} + +// AuthSchemeResolver returns a set of possible authentication options for an +// operation. +type AuthSchemeResolver interface { + ResolveAuthSchemes(context.Context, *AuthResolverParameters) ([]*smithyauth.Option, error) +} + +type defaultAuthSchemeResolver struct{} + +var _ AuthSchemeResolver = (*defaultAuthSchemeResolver)(nil) + +func (*defaultAuthSchemeResolver) ResolveAuthSchemes(ctx context.Context, params *AuthResolverParameters) ([]*smithyauth.Option, error) { + if overrides, ok := operationAuthOptions[params.Operation]; ok { + return overrides(params), nil + } + return serviceAuthOptions(params), nil +} + +var operationAuthOptions = map[string]func(*AuthResolverParameters) []*smithyauth.Option{ + "GetRoleCredentials": func(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + {SchemeID: smithyauth.SchemeIDAnonymous}, + } + }, + + "ListAccountRoles": func(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + {SchemeID: smithyauth.SchemeIDAnonymous}, + } + }, + + "ListAccounts": func(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + {SchemeID: smithyauth.SchemeIDAnonymous}, + } + }, + + "Logout": func(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + {SchemeID: smithyauth.SchemeIDAnonymous}, + } + }, +} + +func serviceAuthOptions(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + { + SchemeID: smithyauth.SchemeIDSigV4, + SignerProperties: func() smithy.Properties { + var props smithy.Properties + smithyhttp.SetSigV4SigningName(&props, "awsssoportal") + smithyhttp.SetSigV4SigningRegion(&props, params.Region) + return props + }(), + }, + } +} + +type resolveAuthSchemeMiddleware struct { + operation string + options Options +} + +func (*resolveAuthSchemeMiddleware) ID() string { + return "ResolveAuthScheme" +} + +func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "ResolveAuthScheme") + defer span.End() + + params := bindAuthResolverParams(ctx, m.operation, getOperationInput(ctx), m.options) + options, err := m.options.AuthSchemeResolver.ResolveAuthSchemes(ctx, params) + if err != nil { + return out, metadata, fmt.Errorf("resolve auth scheme: %w", err) + } + + scheme, ok := m.selectScheme(options) + if !ok { + return out, metadata, fmt.Errorf("could not select an auth scheme") + } + + ctx = setResolvedAuthScheme(ctx, scheme) + + span.SetProperty("auth.scheme_id", scheme.Scheme.SchemeID()) + span.End() + return next.HandleFinalize(ctx, in) +} + +func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) (*resolvedAuthScheme, bool) { + for _, option := range options { + if option.SchemeID == smithyauth.SchemeIDAnonymous { + return newResolvedAuthScheme(smithyhttp.NewAnonymousScheme(), option), true + } + + for _, scheme := range m.options.AuthSchemes { + if scheme.SchemeID() != option.SchemeID { + continue + } + + if scheme.IdentityResolver(m.options) != nil { + return newResolvedAuthScheme(scheme, option), true + } + } + } + + return nil, false +} + +type resolvedAuthSchemeKey struct{} + +type resolvedAuthScheme struct { + Scheme smithyhttp.AuthScheme + IdentityProperties smithy.Properties + SignerProperties smithy.Properties +} + +func newResolvedAuthScheme(scheme smithyhttp.AuthScheme, option *smithyauth.Option) *resolvedAuthScheme { + return &resolvedAuthScheme{ + Scheme: scheme, + IdentityProperties: option.IdentityProperties, + SignerProperties: option.SignerProperties, + } +} + +func setResolvedAuthScheme(ctx context.Context, scheme *resolvedAuthScheme) context.Context { + return middleware.WithStackValue(ctx, resolvedAuthSchemeKey{}, scheme) +} + +func getResolvedAuthScheme(ctx context.Context) *resolvedAuthScheme { + v, _ := middleware.GetStackValue(ctx, resolvedAuthSchemeKey{}).(*resolvedAuthScheme) + return v +} + +type getIdentityMiddleware struct { + options Options +} + +func (*getIdentityMiddleware) ID() string { + return "GetIdentity" +} + +func (m *getIdentityMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + innerCtx, span := tracing.StartSpan(ctx, "GetIdentity") + defer span.End() + + rscheme := getResolvedAuthScheme(innerCtx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + resolver := rscheme.Scheme.IdentityResolver(m.options) + if resolver == nil { + return out, metadata, fmt.Errorf("no identity resolver") + } + + identity, err := timeOperationMetric(ctx, "client.call.resolve_identity_duration", + func() (smithyauth.Identity, error) { + return resolver.GetIdentity(innerCtx, rscheme.IdentityProperties) + }, + func(o *metrics.RecordMetricOptions) { + o.Properties.Set("auth.scheme_id", rscheme.Scheme.SchemeID()) + }) + if err != nil { + return out, metadata, fmt.Errorf("get identity: %w", err) + } + + ctx = setIdentity(ctx, identity) + + span.End() + return next.HandleFinalize(ctx, in) +} + +type identityKey struct{} + +func setIdentity(ctx context.Context, identity smithyauth.Identity) context.Context { + return middleware.WithStackValue(ctx, identityKey{}, identity) +} + +func getIdentity(ctx context.Context) smithyauth.Identity { + v, _ := middleware.GetStackValue(ctx, identityKey{}).(smithyauth.Identity) + return v +} + +type signRequestMiddleware struct { + options Options +} + +func (*signRequestMiddleware) ID() string { + return "Signing" +} + +func (m *signRequestMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "SignRequest") + defer span.End() + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unexpected transport type %T", in.Request) + } + + rscheme := getResolvedAuthScheme(ctx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + identity := getIdentity(ctx) + if identity == nil { + return out, metadata, fmt.Errorf("no identity") + } + + signer := rscheme.Scheme.Signer() + if signer == nil { + return out, metadata, fmt.Errorf("no signer") + } + + _, err = timeOperationMetric(ctx, "client.call.signing_duration", func() (any, error) { + return nil, signer.SignRequest(ctx, req, identity, rscheme.SignerProperties) + }, func(o *metrics.RecordMetricOptions) { + o.Properties.Set("auth.scheme_id", rscheme.Scheme.SchemeID()) + }) + if err != nil { + return out, metadata, fmt.Errorf("sign request: %w", err) + } + + span.End() + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.go index 6a1851da2510..5f0cce2bf1e1 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.go @@ -13,12 +13,23 @@ import ( smithyio "github.com/aws/smithy-go/io" "github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/ptr" + smithytime "github.com/aws/smithy-go/time" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" "io" "io/ioutil" "strings" + "time" ) +func deserializeS3Expires(v string) (*time.Time, error) { + t, err := smithytime.ParseHTTPDate(v) + if err != nil { + return nil, nil + } + return &t, nil +} + type awsRestjson1_deserializeOpGetRoleCredentials struct { } @@ -34,6 +45,10 @@ func (m *awsRestjson1_deserializeOpGetRoleCredentials) HandleDeserialize(ctx con return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -73,6 +88,7 @@ func (m *awsRestjson1_deserializeOpGetRoleCredentials) HandleDeserialize(ctx con } } + span.End() return out, metadata, err } @@ -86,9 +102,9 @@ func awsRestjson1_deserializeOpErrorGetRoleCredentials(response *smithyhttp.Resp errorCode := "UnknownError" errorMessage := errorCode - code := response.Header.Get("X-Amzn-ErrorType") - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + headerCode := response.Header.Get("X-Amzn-ErrorType") + if len(headerCode) != 0 { + errorCode = restjson.SanitizeErrorCode(headerCode) } var buff [1024]byte @@ -97,7 +113,7 @@ func awsRestjson1_deserializeOpErrorGetRoleCredentials(response *smithyhttp.Resp body := io.TeeReader(errorBody, ringBuffer) decoder := json.NewDecoder(body) decoder.UseNumber() - code, message, err := restjson.GetErrorInfo(decoder) + jsonCode, message, err := restjson.GetErrorInfo(decoder) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -109,8 +125,8 @@ func awsRestjson1_deserializeOpErrorGetRoleCredentials(response *smithyhttp.Resp } errorBody.Seek(0, io.SeekStart) - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + if len(headerCode) == 0 && len(jsonCode) != 0 { + errorCode = restjson.SanitizeErrorCode(jsonCode) } if len(message) != 0 { errorMessage = message @@ -190,6 +206,10 @@ func (m *awsRestjson1_deserializeOpListAccountRoles) HandleDeserialize(ctx conte return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -229,6 +249,7 @@ func (m *awsRestjson1_deserializeOpListAccountRoles) HandleDeserialize(ctx conte } } + span.End() return out, metadata, err } @@ -242,9 +263,9 @@ func awsRestjson1_deserializeOpErrorListAccountRoles(response *smithyhttp.Respon errorCode := "UnknownError" errorMessage := errorCode - code := response.Header.Get("X-Amzn-ErrorType") - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + headerCode := response.Header.Get("X-Amzn-ErrorType") + if len(headerCode) != 0 { + errorCode = restjson.SanitizeErrorCode(headerCode) } var buff [1024]byte @@ -253,7 +274,7 @@ func awsRestjson1_deserializeOpErrorListAccountRoles(response *smithyhttp.Respon body := io.TeeReader(errorBody, ringBuffer) decoder := json.NewDecoder(body) decoder.UseNumber() - code, message, err := restjson.GetErrorInfo(decoder) + jsonCode, message, err := restjson.GetErrorInfo(decoder) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -265,8 +286,8 @@ func awsRestjson1_deserializeOpErrorListAccountRoles(response *smithyhttp.Respon } errorBody.Seek(0, io.SeekStart) - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + if len(headerCode) == 0 && len(jsonCode) != 0 { + errorCode = restjson.SanitizeErrorCode(jsonCode) } if len(message) != 0 { errorMessage = message @@ -355,6 +376,10 @@ func (m *awsRestjson1_deserializeOpListAccounts) HandleDeserialize(ctx context.C return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -394,6 +419,7 @@ func (m *awsRestjson1_deserializeOpListAccounts) HandleDeserialize(ctx context.C } } + span.End() return out, metadata, err } @@ -407,9 +433,9 @@ func awsRestjson1_deserializeOpErrorListAccounts(response *smithyhttp.Response, errorCode := "UnknownError" errorMessage := errorCode - code := response.Header.Get("X-Amzn-ErrorType") - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + headerCode := response.Header.Get("X-Amzn-ErrorType") + if len(headerCode) != 0 { + errorCode = restjson.SanitizeErrorCode(headerCode) } var buff [1024]byte @@ -418,7 +444,7 @@ func awsRestjson1_deserializeOpErrorListAccounts(response *smithyhttp.Response, body := io.TeeReader(errorBody, ringBuffer) decoder := json.NewDecoder(body) decoder.UseNumber() - code, message, err := restjson.GetErrorInfo(decoder) + jsonCode, message, err := restjson.GetErrorInfo(decoder) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -430,8 +456,8 @@ func awsRestjson1_deserializeOpErrorListAccounts(response *smithyhttp.Response, } errorBody.Seek(0, io.SeekStart) - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + if len(headerCode) == 0 && len(jsonCode) != 0 { + errorCode = restjson.SanitizeErrorCode(jsonCode) } if len(message) != 0 { errorMessage = message @@ -520,6 +546,10 @@ func (m *awsRestjson1_deserializeOpLogout) HandleDeserialize(ctx context.Context return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -537,6 +567,7 @@ func (m *awsRestjson1_deserializeOpLogout) HandleDeserialize(ctx context.Context } } + span.End() return out, metadata, err } @@ -550,9 +581,9 @@ func awsRestjson1_deserializeOpErrorLogout(response *smithyhttp.Response, metada errorCode := "UnknownError" errorMessage := errorCode - code := response.Header.Get("X-Amzn-ErrorType") - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + headerCode := response.Header.Get("X-Amzn-ErrorType") + if len(headerCode) != 0 { + errorCode = restjson.SanitizeErrorCode(headerCode) } var buff [1024]byte @@ -561,7 +592,7 @@ func awsRestjson1_deserializeOpErrorLogout(response *smithyhttp.Response, metada body := io.TeeReader(errorBody, ringBuffer) decoder := json.NewDecoder(body) decoder.UseNumber() - code, message, err := restjson.GetErrorInfo(decoder) + jsonCode, message, err := restjson.GetErrorInfo(decoder) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -573,8 +604,8 @@ func awsRestjson1_deserializeOpErrorLogout(response *smithyhttp.Response, metada } errorBody.Seek(0, io.SeekStart) - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + if len(headerCode) == 0 && len(jsonCode) != 0 { + errorCode = restjson.SanitizeErrorCode(jsonCode) } if len(message) != 0 { errorMessage = message diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/doc.go index f981b154fb46..7f6e429fda8a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/doc.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/doc.go @@ -6,17 +6,22 @@ // AWS IAM Identity Center (successor to AWS Single Sign-On) Portal is a web // service that makes it easy for you to assign user access to IAM Identity Center // resources such as the AWS access portal. Users can get AWS account applications -// and roles assigned to them and get federated into the application. Although AWS -// Single Sign-On was renamed, the sso and identitystore API namespaces will -// continue to retain their original name for backward compatibility purposes. For -// more information, see IAM Identity Center rename -// (https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed). +// and roles assigned to them and get federated into the application. +// +// Although AWS Single Sign-On was renamed, the sso and identitystore API +// namespaces will continue to retain their original name for backward +// compatibility purposes. For more information, see [IAM Identity Center rename]. +// // This reference guide describes the IAM Identity Center Portal operations that // you can call programatically and includes detailed information on data types and -// errors. AWS provides SDKs that consist of libraries and sample code for various +// errors. +// +// AWS provides SDKs that consist of libraries and sample code for various // programming languages and platforms, such as Java, Ruby, .Net, iOS, or Android. // The SDKs provide a convenient way to create programmatic access to IAM Identity // Center and other AWS services. For more information about the AWS SDKs, -// including how to download and install them, see Tools for Amazon Web Services -// (http://aws.amazon.com/tools/). +// including how to download and install them, see [Tools for Amazon Web Services]. +// +// [Tools for Amazon Web Services]: http://aws.amazon.com/tools/ +// [IAM Identity Center rename]: https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed package sso diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/endpoints.go index 43c06f11afea..53c6bc756124 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/endpoints.go @@ -8,10 +8,19 @@ import ( "fmt" "github.com/aws/aws-sdk-go-v2/aws" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + "github.com/aws/aws-sdk-go-v2/internal/endpoints" + "github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn" internalendpoints "github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints" + smithyauth "github.com/aws/smithy-go/auth" + smithyendpoints "github.com/aws/smithy-go/endpoints" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/ptr" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" + "net/http" "net/url" + "os" "strings" ) @@ -39,13 +48,6 @@ func (fn EndpointResolverFunc) ResolveEndpoint(region string, options EndpointRe return fn(region, options) } -func resolveDefaultEndpointConfiguration(o *Options) { - if o.EndpointResolver != nil { - return - } - o.EndpointResolver = NewDefaultEndpointResolver() -} - // EndpointResolverFromURL returns an EndpointResolver configured using the // provided endpoint url. By default, the resolved endpoint resolver uses the // client region as signing region, and the endpoint source is set to @@ -79,6 +81,10 @@ func (*ResolveEndpoint) ID() string { func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + if !awsmiddleware.GetRequiresLegacyEndpoints(ctx) { + return next.HandleSerialize(ctx, in) + } + req, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) @@ -94,6 +100,11 @@ func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.Ser var endpoint aws.Endpoint endpoint, err = m.Resolver.ResolveEndpoint(awsmiddleware.GetRegion(ctx), eo) if err != nil { + nf := (&aws.EndpointNotFoundError{}) + if errors.As(err, &nf) { + ctx = awsmiddleware.SetRequiresLegacyEndpoints(ctx, false) + return next.HandleSerialize(ctx, in) + } return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err) } @@ -129,27 +140,10 @@ func removeResolveEndpointMiddleware(stack *middleware.Stack) error { type wrappedEndpointResolver struct { awsResolver aws.EndpointResolverWithOptions - resolver EndpointResolver } func (w *wrappedEndpointResolver) ResolveEndpoint(region string, options EndpointResolverOptions) (endpoint aws.Endpoint, err error) { - if w.awsResolver == nil { - goto fallback - } - endpoint, err = w.awsResolver.ResolveEndpoint(ServiceID, region, options) - if err == nil { - return endpoint, nil - } - - if nf := (&aws.EndpointNotFoundError{}); !errors.As(err, &nf) { - return endpoint, err - } - -fallback: - if w.resolver == nil { - return endpoint, fmt.Errorf("default endpoint resolver provided was nil") - } - return w.resolver.ResolveEndpoint(region, options) + return w.awsResolver.ResolveEndpoint(ServiceID, region, options) } type awsEndpointResolverAdaptor func(service, region string) (aws.Endpoint, error) @@ -160,12 +154,13 @@ func (a awsEndpointResolverAdaptor) ResolveEndpoint(service, region string, opti var _ aws.EndpointResolverWithOptions = awsEndpointResolverAdaptor(nil) -// withEndpointResolver returns an EndpointResolver that first delegates endpoint resolution to the awsResolver. -// If awsResolver returns aws.EndpointNotFoundError error, the resolver will use the the provided -// fallbackResolver for resolution. +// withEndpointResolver returns an aws.EndpointResolverWithOptions that first delegates endpoint resolution to the awsResolver. +// If awsResolver returns aws.EndpointNotFoundError error, the v1 resolver middleware will swallow the error, +// and set an appropriate context flag such that fallback will occur when EndpointResolverV2 is invoked +// via its middleware. // -// fallbackResolver must not be nil -func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptions aws.EndpointResolverWithOptions, fallbackResolver EndpointResolver) EndpointResolver { +// If another error (besides aws.EndpointNotFoundError) is returned, then that error will be propagated. +func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptions aws.EndpointResolverWithOptions) EndpointResolver { var resolver aws.EndpointResolverWithOptions if awsResolverWithOptions != nil { @@ -176,7 +171,6 @@ func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptio return &wrappedEndpointResolver{ awsResolver: resolver, - resolver: fallbackResolver, } } @@ -198,3 +192,365 @@ func finalizeClientEndpointResolverOptions(options *Options) { } } + +func resolveEndpointResolverV2(options *Options) { + if options.EndpointResolverV2 == nil { + options.EndpointResolverV2 = NewDefaultEndpointResolverV2() + } +} + +func resolveBaseEndpoint(cfg aws.Config, o *Options) { + if cfg.BaseEndpoint != nil { + o.BaseEndpoint = cfg.BaseEndpoint + } + + _, g := os.LookupEnv("AWS_ENDPOINT_URL") + _, s := os.LookupEnv("AWS_ENDPOINT_URL_SSO") + + if g && !s { + return + } + + value, found, err := internalConfig.ResolveServiceBaseEndpoint(context.Background(), "SSO", cfg.ConfigSources) + if found && err == nil { + o.BaseEndpoint = &value + } +} + +func bindRegion(region string) *string { + if region == "" { + return nil + } + return aws.String(endpoints.MapFIPSRegion(region)) +} + +// EndpointParameters provides the parameters that influence how endpoints are +// resolved. +type EndpointParameters struct { + // The AWS region used to dispatch the request. + // + // Parameter is + // required. + // + // AWS::Region + Region *string + + // When true, use the dual-stack endpoint. If the configured endpoint does not + // support dual-stack, dispatching the request MAY return an error. + // + // Defaults to + // false if no value is provided. + // + // AWS::UseDualStack + UseDualStack *bool + + // When true, send this request to the FIPS-compliant regional endpoint. If the + // configured endpoint does not have a FIPS compliant endpoint, dispatching the + // request will return an error. + // + // Defaults to false if no value is + // provided. + // + // AWS::UseFIPS + UseFIPS *bool + + // Override the endpoint used to send this request + // + // Parameter is + // required. + // + // SDK::Endpoint + Endpoint *string +} + +// ValidateRequired validates required parameters are set. +func (p EndpointParameters) ValidateRequired() error { + if p.UseDualStack == nil { + return fmt.Errorf("parameter UseDualStack is required") + } + + if p.UseFIPS == nil { + return fmt.Errorf("parameter UseFIPS is required") + } + + return nil +} + +// WithDefaults returns a shallow copy of EndpointParameterswith default values +// applied to members where applicable. +func (p EndpointParameters) WithDefaults() EndpointParameters { + if p.UseDualStack == nil { + p.UseDualStack = ptr.Bool(false) + } + + if p.UseFIPS == nil { + p.UseFIPS = ptr.Bool(false) + } + return p +} + +type stringSlice []string + +func (s stringSlice) Get(i int) *string { + if i < 0 || i >= len(s) { + return nil + } + + v := s[i] + return &v +} + +// EndpointResolverV2 provides the interface for resolving service endpoints. +type EndpointResolverV2 interface { + // ResolveEndpoint attempts to resolve the endpoint with the provided options, + // returning the endpoint if found. Otherwise an error is returned. + ResolveEndpoint(ctx context.Context, params EndpointParameters) ( + smithyendpoints.Endpoint, error, + ) +} + +// resolver provides the implementation for resolving endpoints. +type resolver struct{} + +func NewDefaultEndpointResolverV2() EndpointResolverV2 { + return &resolver{} +} + +// ResolveEndpoint attempts to resolve the endpoint with the provided options, +// returning the endpoint if found. Otherwise an error is returned. +func (r *resolver) ResolveEndpoint( + ctx context.Context, params EndpointParameters, +) ( + endpoint smithyendpoints.Endpoint, err error, +) { + params = params.WithDefaults() + if err = params.ValidateRequired(); err != nil { + return endpoint, fmt.Errorf("endpoint parameters are not valid, %w", err) + } + _UseDualStack := *params.UseDualStack + _UseFIPS := *params.UseFIPS + + if exprVal := params.Endpoint; exprVal != nil { + _Endpoint := *exprVal + _ = _Endpoint + if _UseFIPS == true { + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: FIPS and custom endpoint are not supported") + } + if _UseDualStack == true { + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: Dualstack and custom endpoint are not supported") + } + uriString := _Endpoint + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + if exprVal := params.Region; exprVal != nil { + _Region := *exprVal + _ = _Region + if exprVal := awsrulesfn.GetPartition(_Region); exprVal != nil { + _PartitionResult := *exprVal + _ = _PartitionResult + if _UseFIPS == true { + if _UseDualStack == true { + if true == _PartitionResult.SupportsFIPS { + if true == _PartitionResult.SupportsDualStack { + uriString := func() string { + var out strings.Builder + out.WriteString("https://portal.sso-fips.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DualStackDnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "FIPS and DualStack are enabled, but this partition does not support one or both") + } + } + if _UseFIPS == true { + if true == _PartitionResult.SupportsFIPS { + if "aws-us-gov" == _PartitionResult.Name { + uriString := func() string { + var out strings.Builder + out.WriteString("https://portal.sso.") + out.WriteString(_Region) + out.WriteString(".amazonaws.com") + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + uriString := func() string { + var out strings.Builder + out.WriteString("https://portal.sso-fips.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "FIPS is enabled but this partition does not support FIPS") + } + if _UseDualStack == true { + if true == _PartitionResult.SupportsDualStack { + uriString := func() string { + var out strings.Builder + out.WriteString("https://portal.sso.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DualStackDnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "DualStack is enabled but this partition does not support DualStack") + } + uriString := func() string { + var out strings.Builder + out.WriteString("https://portal.sso.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("Endpoint resolution failed. Invalid operation or environment input.") + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: Missing Region") +} + +type endpointParamsBinder interface { + bindEndpointParams(*EndpointParameters) +} + +func bindEndpointParams(ctx context.Context, input interface{}, options Options) *EndpointParameters { + params := &EndpointParameters{} + + params.Region = bindRegion(options.Region) + params.UseDualStack = aws.Bool(options.EndpointOptions.UseDualStackEndpoint == aws.DualStackEndpointStateEnabled) + params.UseFIPS = aws.Bool(options.EndpointOptions.UseFIPSEndpoint == aws.FIPSEndpointStateEnabled) + params.Endpoint = options.BaseEndpoint + + if b, ok := input.(endpointParamsBinder); ok { + b.bindEndpointParams(params) + } + + return params +} + +type resolveEndpointV2Middleware struct { + options Options +} + +func (*resolveEndpointV2Middleware) ID() string { + return "ResolveEndpointV2" +} + +func (m *resolveEndpointV2Middleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "ResolveEndpoint") + defer span.End() + + if awsmiddleware.GetRequiresLegacyEndpoints(ctx) { + return next.HandleFinalize(ctx, in) + } + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.options.EndpointResolverV2 == nil { + return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil") + } + + params := bindEndpointParams(ctx, getOperationInput(ctx), m.options) + endpt, err := timeOperationMetric(ctx, "client.call.resolve_endpoint_duration", + func() (smithyendpoints.Endpoint, error) { + return m.options.EndpointResolverV2.ResolveEndpoint(ctx, *params) + }) + if err != nil { + return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err) + } + + span.SetProperty("client.call.resolved_endpoint", endpt.URI.String()) + + if endpt.URI.RawPath == "" && req.URL.RawPath != "" { + endpt.URI.RawPath = endpt.URI.Path + } + req.URL.Scheme = endpt.URI.Scheme + req.URL.Host = endpt.URI.Host + req.URL.Path = smithyhttp.JoinPath(endpt.URI.Path, req.URL.Path) + req.URL.RawPath = smithyhttp.JoinPath(endpt.URI.RawPath, req.URL.RawPath) + for k := range endpt.Headers { + req.Header.Set(k, endpt.Headers.Get(k)) + } + + rscheme := getResolvedAuthScheme(ctx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + opts, _ := smithyauth.GetAuthOptions(&endpt.Properties) + for _, o := range opts { + rscheme.SignerProperties.SetAll(&o.SignerProperties) + } + + span.End() + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/generated.json b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/generated.json index 5be0e34cd6ae..936253d7cae7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/generated.json +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/generated.json @@ -12,14 +12,19 @@ "api_op_ListAccountRoles.go", "api_op_ListAccounts.go", "api_op_Logout.go", + "auth.go", "deserializers.go", "doc.go", "endpoints.go", + "endpoints_config_test.go", + "endpoints_test.go", "generated.json", "internal/endpoints/endpoints.go", "internal/endpoints/endpoints_test.go", + "options.go", "protocol_test.go", "serializers.go", + "snapshot_test.go", "types/errors.go", "types/types.go", "validators.go" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go index 268b841f699b..69b4efccbfe7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go @@ -3,4 +3,4 @@ package sso // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.11.23" +const goModuleVersion = "1.23.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints/endpoints.go index aeac293ea40e..081867b3daa6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints/endpoints.go @@ -89,13 +89,17 @@ var partitionRegexp = struct { AwsCn *regexp.Regexp AwsIso *regexp.Regexp AwsIsoB *regexp.Regexp + AwsIsoE *regexp.Regexp + AwsIsoF *regexp.Regexp AwsUsGov *regexp.Regexp }{ - Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$"), + Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$"), AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"), AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"), AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"), + AwsIsoE: regexp.MustCompile("^eu\\-isoe\\-\\w+\\-\\d+$"), + AwsIsoF: regexp.MustCompile("^us\\-isof\\-\\w+\\-\\d+$"), AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"), } @@ -135,6 +139,14 @@ var defaultPartitions = endpoints.Partitions{ RegionRegex: partitionRegexp.Aws, IsRegionalized: true, Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "af-south-1", + }: endpoints.Endpoint{ + Hostname: "portal.sso.af-south-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "af-south-1", + }, + }, endpoints.EndpointKey{ Region: "ap-east-1", }: endpoints.Endpoint{ @@ -175,6 +187,14 @@ var defaultPartitions = endpoints.Partitions{ Region: "ap-south-1", }, }, + endpoints.EndpointKey{ + Region: "ap-south-2", + }: endpoints.Endpoint{ + Hostname: "portal.sso.ap-south-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-south-2", + }, + }, endpoints.EndpointKey{ Region: "ap-southeast-1", }: endpoints.Endpoint{ @@ -191,6 +211,22 @@ var defaultPartitions = endpoints.Partitions{ Region: "ap-southeast-2", }, }, + endpoints.EndpointKey{ + Region: "ap-southeast-3", + }: endpoints.Endpoint{ + Hostname: "portal.sso.ap-southeast-3.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-southeast-3", + }, + }, + endpoints.EndpointKey{ + Region: "ap-southeast-4", + }: endpoints.Endpoint{ + Hostname: "portal.sso.ap-southeast-4.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-southeast-4", + }, + }, endpoints.EndpointKey{ Region: "ca-central-1", }: endpoints.Endpoint{ @@ -199,6 +235,14 @@ var defaultPartitions = endpoints.Partitions{ Region: "ca-central-1", }, }, + endpoints.EndpointKey{ + Region: "ca-west-1", + }: endpoints.Endpoint{ + Hostname: "portal.sso.ca-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ca-west-1", + }, + }, endpoints.EndpointKey{ Region: "eu-central-1", }: endpoints.Endpoint{ @@ -207,6 +251,14 @@ var defaultPartitions = endpoints.Partitions{ Region: "eu-central-1", }, }, + endpoints.EndpointKey{ + Region: "eu-central-2", + }: endpoints.Endpoint{ + Hostname: "portal.sso.eu-central-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-central-2", + }, + }, endpoints.EndpointKey{ Region: "eu-north-1", }: endpoints.Endpoint{ @@ -223,6 +275,14 @@ var defaultPartitions = endpoints.Partitions{ Region: "eu-south-1", }, }, + endpoints.EndpointKey{ + Region: "eu-south-2", + }: endpoints.Endpoint{ + Hostname: "portal.sso.eu-south-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-south-2", + }, + }, endpoints.EndpointKey{ Region: "eu-west-1", }: endpoints.Endpoint{ @@ -247,6 +307,22 @@ var defaultPartitions = endpoints.Partitions{ Region: "eu-west-3", }, }, + endpoints.EndpointKey{ + Region: "il-central-1", + }: endpoints.Endpoint{ + Hostname: "portal.sso.il-central-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "il-central-1", + }, + }, + endpoints.EndpointKey{ + Region: "me-central-1", + }: endpoints.Endpoint{ + Hostname: "portal.sso.me-central-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "me-central-1", + }, + }, endpoints.EndpointKey{ Region: "me-south-1", }: endpoints.Endpoint{ @@ -279,6 +355,14 @@ var defaultPartitions = endpoints.Partitions{ Region: "us-east-2", }, }, + endpoints.EndpointKey{ + Region: "us-west-1", + }: endpoints.Endpoint{ + Hostname: "portal.sso.us-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-west-1", + }, + }, endpoints.EndpointKey{ Region: "us-west-2", }: endpoints.Endpoint{ @@ -323,6 +407,24 @@ var defaultPartitions = endpoints.Partitions{ }, RegionRegex: partitionRegexp.AwsCn, IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "cn-north-1", + }: endpoints.Endpoint{ + Hostname: "portal.sso.cn-north-1.amazonaws.com.cn", + CredentialScope: endpoints.CredentialScope{ + Region: "cn-north-1", + }, + }, + endpoints.EndpointKey{ + Region: "cn-northwest-1", + }: endpoints.Endpoint{ + Hostname: "portal.sso.cn-northwest-1.amazonaws.com.cn", + CredentialScope: endpoints.CredentialScope{ + Region: "cn-northwest-1", + }, + }, + }, }, { ID: "aws-iso", @@ -366,6 +468,48 @@ var defaultPartitions = endpoints.Partitions{ RegionRegex: partitionRegexp.AwsIsoB, IsRegionalized: true, }, + { + ID: "aws-iso-e", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "portal.sso-fips.{region}.cloud.adc-e.uk", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "portal.sso.{region}.cloud.adc-e.uk", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoE, + IsRegionalized: true, + }, + { + ID: "aws-iso-f", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "portal.sso-fips.{region}.csp.hci.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "portal.sso.{region}.csp.hci.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoF, + IsRegionalized: true, + }, { ID: "aws-us-gov", Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/options.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/options.go new file mode 100644 index 000000000000..aa744f1594dd --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/options.go @@ -0,0 +1,232 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package sso + +import ( + "context" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy" + smithyauth "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" + "net/http" +) + +type HTTPClient interface { + Do(*http.Request) (*http.Response, error) +} + +type Options struct { + // Set of options to modify how an operation is invoked. These apply to all + // operations invoked for this client. Use functional options on operation call to + // modify this list for per operation behavior. + APIOptions []func(*middleware.Stack) error + + // The optional application specific identifier appended to the User-Agent header. + AppID string + + // This endpoint will be given as input to an EndpointResolverV2. It is used for + // providing a custom base endpoint that is subject to modifications by the + // processing EndpointResolverV2. + BaseEndpoint *string + + // Configures the events that will be sent to the configured logger. + ClientLogMode aws.ClientLogMode + + // The credentials object to use when signing requests. + Credentials aws.CredentialsProvider + + // The configuration DefaultsMode that the SDK should use when constructing the + // clients initial default settings. + DefaultsMode aws.DefaultsMode + + // The endpoint options to be used when attempting to resolve an endpoint. + EndpointOptions EndpointResolverOptions + + // The service endpoint resolver. + // + // Deprecated: Deprecated: EndpointResolver and WithEndpointResolver. Providing a + // value for this field will likely prevent you from using any endpoint-related + // service features released after the introduction of EndpointResolverV2 and + // BaseEndpoint. + // + // To migrate an EndpointResolver implementation that uses a custom endpoint, set + // the client option BaseEndpoint instead. + EndpointResolver EndpointResolver + + // Resolves the endpoint used for a particular service operation. This should be + // used over the deprecated EndpointResolver. + EndpointResolverV2 EndpointResolverV2 + + // Signature Version 4 (SigV4) Signer + HTTPSignerV4 HTTPSignerV4 + + // The logger writer interface to write logging messages to. + Logger logging.Logger + + // The client meter provider. + MeterProvider metrics.MeterProvider + + // The region to send requests to. (Required) + Region string + + // RetryMaxAttempts specifies the maximum number attempts an API client will call + // an operation that fails with a retryable error. A value of 0 is ignored, and + // will not be used to configure the API client created default retryer, or modify + // per operation call's retry max attempts. + // + // If specified in an operation call's functional options with a value that is + // different than the constructed client's Options, the Client's Retryer will be + // wrapped to use the operation's specific RetryMaxAttempts value. + RetryMaxAttempts int + + // RetryMode specifies the retry mode the API client will be created with, if + // Retryer option is not also specified. + // + // When creating a new API Clients this member will only be used if the Retryer + // Options member is nil. This value will be ignored if Retryer is not nil. + // + // Currently does not support per operation call overrides, may in the future. + RetryMode aws.RetryMode + + // Retryer guides how HTTP requests should be retried in case of recoverable + // failures. When nil the API client will use a default retryer. The kind of + // default retry created by the API client can be changed with the RetryMode + // option. + Retryer aws.Retryer + + // The RuntimeEnvironment configuration, only populated if the DefaultsMode is set + // to DefaultsModeAuto and is initialized using config.LoadDefaultConfig . You + // should not populate this structure programmatically, or rely on the values here + // within your applications. + RuntimeEnvironment aws.RuntimeEnvironment + + // The client tracer provider. + TracerProvider tracing.TracerProvider + + // The initial DefaultsMode used when the client options were constructed. If the + // DefaultsMode was set to aws.DefaultsModeAuto this will store what the resolved + // value was at that point in time. + // + // Currently does not support per operation call overrides, may in the future. + resolvedDefaultsMode aws.DefaultsMode + + // The HTTP client to invoke API calls with. Defaults to client's default HTTP + // implementation if nil. + HTTPClient HTTPClient + + // The auth scheme resolver which determines how to authenticate for each + // operation. + AuthSchemeResolver AuthSchemeResolver + + // The list of auth schemes supported by the client. + AuthSchemes []smithyhttp.AuthScheme +} + +// Copy creates a clone where the APIOptions list is deep copied. +func (o Options) Copy() Options { + to := o + to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) + copy(to.APIOptions, o.APIOptions) + + return to +} + +func (o Options) GetIdentityResolver(schemeID string) smithyauth.IdentityResolver { + if schemeID == "aws.auth#sigv4" { + return getSigV4IdentityResolver(o) + } + if schemeID == "smithy.api#noAuth" { + return &smithyauth.AnonymousIdentityResolver{} + } + return nil +} + +// WithAPIOptions returns a functional option for setting the Client's APIOptions +// option. +func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) { + return func(o *Options) { + o.APIOptions = append(o.APIOptions, optFns...) + } +} + +// Deprecated: EndpointResolver and WithEndpointResolver. Providing a value for +// this field will likely prevent you from using any endpoint-related service +// features released after the introduction of EndpointResolverV2 and BaseEndpoint. +// +// To migrate an EndpointResolver implementation that uses a custom endpoint, set +// the client option BaseEndpoint instead. +func WithEndpointResolver(v EndpointResolver) func(*Options) { + return func(o *Options) { + o.EndpointResolver = v + } +} + +// WithEndpointResolverV2 returns a functional option for setting the Client's +// EndpointResolverV2 option. +func WithEndpointResolverV2(v EndpointResolverV2) func(*Options) { + return func(o *Options) { + o.EndpointResolverV2 = v + } +} + +func getSigV4IdentityResolver(o Options) smithyauth.IdentityResolver { + if o.Credentials != nil { + return &internalauthsmithy.CredentialsProviderAdapter{Provider: o.Credentials} + } + return nil +} + +// WithSigV4SigningName applies an override to the authentication workflow to +// use the given signing name for SigV4-authenticated operations. +// +// This is an advanced setting. The value here is FINAL, taking precedence over +// the resolved signing name from both auth scheme resolution and endpoint +// resolution. +func WithSigV4SigningName(name string) func(*Options) { + fn := func(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, + ) { + return next.HandleInitialize(awsmiddleware.SetSigningName(ctx, name), in) + } + return func(o *Options) { + o.APIOptions = append(o.APIOptions, func(s *middleware.Stack) error { + return s.Initialize.Add( + middleware.InitializeMiddlewareFunc("withSigV4SigningName", fn), + middleware.Before, + ) + }) + } +} + +// WithSigV4SigningRegion applies an override to the authentication workflow to +// use the given signing region for SigV4-authenticated operations. +// +// This is an advanced setting. The value here is FINAL, taking precedence over +// the resolved signing region from both auth scheme resolution and endpoint +// resolution. +func WithSigV4SigningRegion(region string) func(*Options) { + fn := func(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, + ) { + return next.HandleInitialize(awsmiddleware.SetSigningRegion(ctx, region), in) + } + return func(o *Options) { + o.APIOptions = append(o.APIOptions, func(s *middleware.Stack) error { + return s.Initialize.Add( + middleware.InitializeMiddlewareFunc("withSigV4SigningRegion", fn), + middleware.Before, + ) + }) + } +} + +func ignoreAnonymousAuth(options *Options) { + if aws.IsCredentialsProvider(options.Credentials, (*aws.AnonymousCredentials)(nil)) { + options.Credentials = nil + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/serializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/serializers.go index 29e320811942..4dacb14b68b3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/serializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/serializers.go @@ -8,6 +8,7 @@ import ( smithy "github.com/aws/smithy-go" "github.com/aws/smithy-go/encoding/httpbinding" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" ) @@ -21,6 +22,10 @@ func (*awsRestjson1_serializeOpGetRoleCredentials) ID() string { func (m *awsRestjson1_serializeOpGetRoleCredentials) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -36,7 +41,14 @@ func (m *awsRestjson1_serializeOpGetRoleCredentials) HandleSerialize(ctx context request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" - restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + var restEncoder *httpbinding.Encoder + if request.URL.RawPath == "" { + restEncoder, err = httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + } else { + request.URL.RawPath = smithyhttp.JoinPath(request.URL.RawPath, opPath) + restEncoder, err = httpbinding.NewEncoderWithRawPath(request.URL.Path, request.URL.RawPath, request.URL.RawQuery, request.Header) + } + if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -50,6 +62,8 @@ func (m *awsRestjson1_serializeOpGetRoleCredentials) HandleSerialize(ctx context } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } func awsRestjson1_serializeOpHttpBindingsGetRoleCredentialsInput(v *GetRoleCredentialsInput, encoder *httpbinding.Encoder) error { @@ -83,6 +97,10 @@ func (*awsRestjson1_serializeOpListAccountRoles) ID() string { func (m *awsRestjson1_serializeOpListAccountRoles) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -98,7 +116,14 @@ func (m *awsRestjson1_serializeOpListAccountRoles) HandleSerialize(ctx context.C request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" - restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + var restEncoder *httpbinding.Encoder + if request.URL.RawPath == "" { + restEncoder, err = httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + } else { + request.URL.RawPath = smithyhttp.JoinPath(request.URL.RawPath, opPath) + restEncoder, err = httpbinding.NewEncoderWithRawPath(request.URL.Path, request.URL.RawPath, request.URL.RawQuery, request.Header) + } + if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -112,6 +137,8 @@ func (m *awsRestjson1_serializeOpListAccountRoles) HandleSerialize(ctx context.C } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } func awsRestjson1_serializeOpHttpBindingsListAccountRolesInput(v *ListAccountRolesInput, encoder *httpbinding.Encoder) error { @@ -149,6 +176,10 @@ func (*awsRestjson1_serializeOpListAccounts) ID() string { func (m *awsRestjson1_serializeOpListAccounts) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -164,7 +195,14 @@ func (m *awsRestjson1_serializeOpListAccounts) HandleSerialize(ctx context.Conte request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" - restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + var restEncoder *httpbinding.Encoder + if request.URL.RawPath == "" { + restEncoder, err = httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + } else { + request.URL.RawPath = smithyhttp.JoinPath(request.URL.RawPath, opPath) + restEncoder, err = httpbinding.NewEncoderWithRawPath(request.URL.Path, request.URL.RawPath, request.URL.RawQuery, request.Header) + } + if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -178,6 +216,8 @@ func (m *awsRestjson1_serializeOpListAccounts) HandleSerialize(ctx context.Conte } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } func awsRestjson1_serializeOpHttpBindingsListAccountsInput(v *ListAccountsInput, encoder *httpbinding.Encoder) error { @@ -211,6 +251,10 @@ func (*awsRestjson1_serializeOpLogout) ID() string { func (m *awsRestjson1_serializeOpLogout) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -226,7 +270,14 @@ func (m *awsRestjson1_serializeOpLogout) HandleSerialize(ctx context.Context, in request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "POST" - restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + var restEncoder *httpbinding.Encoder + if request.URL.RawPath == "" { + restEncoder, err = httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + } else { + request.URL.RawPath = smithyhttp.JoinPath(request.URL.RawPath, opPath) + restEncoder, err = httpbinding.NewEncoderWithRawPath(request.URL.Path, request.URL.RawPath, request.URL.RawQuery, request.Header) + } + if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -240,6 +291,8 @@ func (m *awsRestjson1_serializeOpLogout) HandleSerialize(ctx context.Context, in } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } func awsRestjson1_serializeOpHttpBindingsLogoutInput(v *LogoutInput, encoder *httpbinding.Encoder) error { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/errors.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/errors.go index 1401d585cfed..e97a126e8bb5 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/errors.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/errors.go @@ -12,6 +12,8 @@ import ( type InvalidRequestException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -24,13 +26,20 @@ func (e *InvalidRequestException) ErrorMessage() string { } return *e.Message } -func (e *InvalidRequestException) ErrorCode() string { return "InvalidRequestException" } +func (e *InvalidRequestException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidRequestException" + } + return *e.ErrorCodeOverride +} func (e *InvalidRequestException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // The specified resource doesn't exist. type ResourceNotFoundException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -43,7 +52,12 @@ func (e *ResourceNotFoundException) ErrorMessage() string { } return *e.Message } -func (e *ResourceNotFoundException) ErrorCode() string { return "ResourceNotFoundException" } +func (e *ResourceNotFoundException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ResourceNotFoundException" + } + return *e.ErrorCodeOverride +} func (e *ResourceNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // Indicates that the request is being made too frequently and is more than what @@ -51,6 +65,8 @@ func (e *ResourceNotFoundException) ErrorFault() smithy.ErrorFault { return smit type TooManyRequestsException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -63,7 +79,12 @@ func (e *TooManyRequestsException) ErrorMessage() string { } return *e.Message } -func (e *TooManyRequestsException) ErrorCode() string { return "TooManyRequestsException" } +func (e *TooManyRequestsException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "TooManyRequestsException" + } + return *e.ErrorCodeOverride +} func (e *TooManyRequestsException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // Indicates that the request is not authorized. This can happen due to an invalid @@ -71,6 +92,8 @@ func (e *TooManyRequestsException) ErrorFault() smithy.ErrorFault { return smith type UnauthorizedException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -83,5 +106,10 @@ func (e *UnauthorizedException) ErrorMessage() string { } return *e.Message } -func (e *UnauthorizedException) ErrorCode() string { return "UnauthorizedException" } +func (e *UnauthorizedException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "UnauthorizedException" + } + return *e.ErrorCodeOverride +} func (e *UnauthorizedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/types.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/types.go index 051056b75985..07ac468e3184 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/types.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/types/types.go @@ -25,25 +25,24 @@ type AccountInfo struct { type RoleCredentials struct { // The identifier used for the temporary security credentials. For more - // information, see Using Temporary Security Credentials to Request Access to AWS - // Resources - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) - // in the AWS IAM User Guide. + // information, see [Using Temporary Security Credentials to Request Access to AWS Resources]in the AWS IAM User Guide. + // + // [Using Temporary Security Credentials to Request Access to AWS Resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html AccessKeyId *string // The date on which temporary security credentials expire. Expiration int64 - // The key that is used to sign the request. For more information, see Using - // Temporary Security Credentials to Request Access to AWS Resources - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) - // in the AWS IAM User Guide. + // The key that is used to sign the request. For more information, see [Using Temporary Security Credentials to Request Access to AWS Resources] in the AWS + // IAM User Guide. + // + // [Using Temporary Security Credentials to Request Access to AWS Resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html SecretAccessKey *string - // The token used for temporary credentials. For more information, see Using - // Temporary Security Credentials to Request Access to AWS Resources - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) - // in the AWS IAM User Guide. + // The token used for temporary credentials. For more information, see [Using Temporary Security Credentials to Request Access to AWS Resources] in the AWS + // IAM User Guide. + // + // [Using Temporary Security Credentials to Request Access to AWS Resources]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html SessionToken *string noSmithyDocumentSerde diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md index 6dbbde19d04e..474e7f7f5b7e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md @@ -1,3 +1,322 @@ +# v1.27.0 (2024-09-20) + +* **Feature**: Add tracing and metrics support to service clients. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.8 (2024-09-17) + +* **Bug Fix**: **BREAKFIX**: Only generate AccountIDEndpointMode config for services that use it. This is a compiler break, but removes no actual functionality, as no services currently use the account ID in endpoint resolution. + +# v1.26.7 (2024-09-04) + +* No change notes available for this release. + +# v1.26.6 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.5 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.4 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.3 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.2 (2024-07-03) + +* No change notes available for this release. + +# v1.26.1 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.0 (2024-06-26) + +* **Feature**: Support list-of-string endpoint parameter. + +# v1.25.1 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.0 (2024-06-18) + +* **Feature**: Track usage of various AWS SDK features in user-agent string. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.6 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.5 (2024-06-07) + +* **Bug Fix**: Add clock skew correction on all service clients +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.4 (2024-06-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.3 (2024-05-23) + +* No change notes available for this release. + +# v1.24.2 (2024-05-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.1 (2024-05-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.0 (2024-05-10) + +* **Feature**: Updated request parameters for PKCE support. + +# v1.23.5 (2024-05-08) + +* **Bug Fix**: GoDoc improvement + +# v1.23.4 (2024-03-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.3 (2024-03-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.2 (2024-03-07) + +* **Bug Fix**: Remove dependency on go-cmp. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.1 (2024-02-23) + +* **Bug Fix**: Move all common, SDK-side middleware stack ops into the service client module to prevent cross-module compatibility issues in the future. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.0 (2024-02-22) + +* **Feature**: Add middleware stack snapshot tests. + +# v1.22.2 (2024-02-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.22.1 (2024-02-20) + +* **Bug Fix**: When sourcing values for a service's `EndpointParameters`, the lack of a configured region (i.e. `options.Region == ""`) will now translate to a `nil` value for `EndpointParameters.Region` instead of a pointer to the empty string `""`. This will result in a much more explicit error when calling an operation instead of an obscure hostname lookup failure. + +# v1.22.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.7 (2024-01-16) + +* No change notes available for this release. + +# v1.21.6 (2024-01-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.5 (2023-12-08) + +* **Bug Fix**: Reinstate presence of default Retryer in functional options, but still respect max attempts set therein. + +# v1.21.4 (2023-12-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.3 (2023-12-06) + +* **Bug Fix**: Restore pre-refactor auth behavior where all operations could technically be performed anonymously. + +# v1.21.2 (2023-12-01) + +* **Bug Fix**: Correct wrapping of errors in authentication workflow. +* **Bug Fix**: Correctly recognize cache-wrapped instances of AnonymousCredentials at client construction. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.1 (2023-11-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.0 (2023-11-29) + +* **Feature**: Expose Options() accessor on service clients. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.3 (2023-11-28.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.2 (2023-11-28) + +* **Bug Fix**: Respect setting RetryMaxAttempts in functional options at client construction. + +# v1.20.1 (2023-11-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.0 (2023-11-17) + +* **Feature**: Adding support for `sso-oauth:CreateTokenWithIAM`. + +# v1.19.2 (2023-11-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.19.1 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.19.0 (2023-11-01) + +* **Feature**: Adds support for configured endpoints via environment variables and the AWS shared configuration file. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.3 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.2 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.1 (2023-09-22) + +* No change notes available for this release. + +# v1.17.0 (2023-09-20) + +* **Feature**: Update FIPS endpoints in aws-us-gov. + +# v1.16.0 (2023-09-18) + +* **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* **Feature**: Adds several endpoint ruleset changes across all models: smaller rulesets, removed non-unique regional endpoints, fixes FIPS and DualStack endpoints, and make region not required in SDK::Endpoint. Additional breakfix to cognito-sync field. + +# v1.15.6 (2023-09-05) + +* No change notes available for this release. + +# v1.15.5 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.4 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.3 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.2 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.1 (2023-08-01) + +* No change notes available for this release. + +# v1.15.0 (2023-07-31) + +* **Feature**: Adds support for smithy-modeled endpoint resolution. A new rules-based endpoint resolution will be added to the SDK which will supercede and deprecate existing endpoint resolution. Specifically, EndpointResolver will be deprecated while BaseEndpoint and EndpointResolverV2 will take its place. For more information, please see the Endpoints section in our Developer Guide. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.14 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.13 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.12 (2023-06-15) + +* No change notes available for this release. + +# v1.14.11 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.10 (2023-05-04) + +* No change notes available for this release. + +# v1.14.9 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.8 (2023-04-10) + +* No change notes available for this release. + +# v1.14.7 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.6 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.5 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.4 (2023-02-22) + +* **Bug Fix**: Prevent nil pointer dereference when retrieving error codes. + +# v1.14.3 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.2 (2023-02-15) + +* **Announcement**: When receiving an error response in restJson-based services, an incorrect error type may have been returned based on the content of the response. This has been fixed via PR #2012 tracked in issue #1910. +* **Bug Fix**: Correct error type parsing for restJson services. + +# v1.14.1 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.0 (2023-01-05) + +* **Feature**: Add `ErrorCodeOverride` field to all error structs (aws/smithy-go#401). + +# v1.13.11 (2022-12-19) + +* No change notes available for this release. + +# v1.13.10 (2022-12-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.9 (2022-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.8 (2022-10-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.7 (2022-10-21) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.13.6 (2022-09-30) * **Documentation**: Documentation updates for the IAM Identity Center OIDC CLI Reference. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_client.go index 5e0a85a2c1a2..aa1f3ab31606 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_client.go @@ -4,169 +4,241 @@ package ssooidc import ( "context" + "errors" + "fmt" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/aws/defaults" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/retry" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" + internalauth "github.com/aws/aws-sdk-go-v2/internal/auth" + internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy" internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + internalmiddleware "github.com/aws/aws-sdk-go-v2/internal/middleware" smithy "github.com/aws/smithy-go" + smithyauth "github.com/aws/smithy-go/auth" smithydocument "github.com/aws/smithy-go/document" "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/metrics" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" "net" "net/http" + "sync/atomic" "time" ) const ServiceID = "SSO OIDC" const ServiceAPIVersion = "2019-06-10" -// Client provides the API client to make operations call for AWS SSO OIDC. -type Client struct { - options Options +type operationMetrics struct { + Duration metrics.Float64Histogram + SerializeDuration metrics.Float64Histogram + ResolveIdentityDuration metrics.Float64Histogram + ResolveEndpointDuration metrics.Float64Histogram + SignRequestDuration metrics.Float64Histogram + DeserializeDuration metrics.Float64Histogram } -// New returns an initialized Client based on the functional options. Provide -// additional functional options to further configure the behavior of the client, -// such as changing the client's endpoint or adding custom middleware behavior. -func New(options Options, optFns ...func(*Options)) *Client { - options = options.Copy() +func (m *operationMetrics) histogramFor(name string) metrics.Float64Histogram { + switch name { + case "client.call.duration": + return m.Duration + case "client.call.serialization_duration": + return m.SerializeDuration + case "client.call.resolve_identity_duration": + return m.ResolveIdentityDuration + case "client.call.resolve_endpoint_duration": + return m.ResolveEndpointDuration + case "client.call.signing_duration": + return m.SignRequestDuration + case "client.call.deserialization_duration": + return m.DeserializeDuration + default: + panic("unrecognized operation metric") + } +} - resolveDefaultLogger(&options) +func timeOperationMetric[T any]( + ctx context.Context, metric string, fn func() (T, error), + opts ...metrics.RecordMetricOption, +) (T, error) { + instr := getOperationMetrics(ctx).histogramFor(metric) + opts = append([]metrics.RecordMetricOption{withOperationMetadata(ctx)}, opts...) - setResolvedDefaultsMode(&options) + start := time.Now() + v, err := fn() + end := time.Now() - resolveRetryer(&options) + elapsed := end.Sub(start) + instr.Record(ctx, float64(elapsed)/1e9, opts...) + return v, err +} - resolveHTTPClient(&options) +func startMetricTimer(ctx context.Context, metric string, opts ...metrics.RecordMetricOption) func() { + instr := getOperationMetrics(ctx).histogramFor(metric) + opts = append([]metrics.RecordMetricOption{withOperationMetadata(ctx)}, opts...) - resolveHTTPSignerV4(&options) + var ended bool + start := time.Now() + return func() { + if ended { + return + } + ended = true - resolveDefaultEndpointConfiguration(&options) + end := time.Now() - for _, fn := range optFns { - fn(&options) + elapsed := end.Sub(start) + instr.Record(ctx, float64(elapsed)/1e9, opts...) } +} - client := &Client{ - options: options, +func withOperationMetadata(ctx context.Context) metrics.RecordMetricOption { + return func(o *metrics.RecordMetricOptions) { + o.Properties.Set("rpc.service", middleware.GetServiceID(ctx)) + o.Properties.Set("rpc.method", middleware.GetOperationName(ctx)) } +} - return client +type operationMetricsKey struct{} + +func withOperationMetrics(parent context.Context, mp metrics.MeterProvider) (context.Context, error) { + meter := mp.Meter("github.com/aws/aws-sdk-go-v2/service/ssooidc") + om := &operationMetrics{} + + var err error + + om.Duration, err = operationMetricTimer(meter, "client.call.duration", + "Overall call duration (including retries and time to send or receive request and response body)") + if err != nil { + return nil, err + } + om.SerializeDuration, err = operationMetricTimer(meter, "client.call.serialization_duration", + "The time it takes to serialize a message body") + if err != nil { + return nil, err + } + om.ResolveIdentityDuration, err = operationMetricTimer(meter, "client.call.auth.resolve_identity_duration", + "The time taken to acquire an identity (AWS credentials, bearer token, etc) from an Identity Provider") + if err != nil { + return nil, err + } + om.ResolveEndpointDuration, err = operationMetricTimer(meter, "client.call.resolve_endpoint_duration", + "The time it takes to resolve an endpoint (endpoint resolver, not DNS) for the request") + if err != nil { + return nil, err + } + om.SignRequestDuration, err = operationMetricTimer(meter, "client.call.auth.signing_duration", + "The time it takes to sign a request") + if err != nil { + return nil, err + } + om.DeserializeDuration, err = operationMetricTimer(meter, "client.call.deserialization_duration", + "The time it takes to deserialize a message body") + if err != nil { + return nil, err + } + + return context.WithValue(parent, operationMetricsKey{}, om), nil } -type Options struct { - // Set of options to modify how an operation is invoked. These apply to all - // operations invoked for this client. Use functional options on operation call to - // modify this list for per operation behavior. - APIOptions []func(*middleware.Stack) error +func operationMetricTimer(m metrics.Meter, name, desc string) (metrics.Float64Histogram, error) { + return m.Float64Histogram(name, func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = desc + }) +} - // Configures the events that will be sent to the configured logger. - ClientLogMode aws.ClientLogMode +func getOperationMetrics(ctx context.Context) *operationMetrics { + return ctx.Value(operationMetricsKey{}).(*operationMetrics) +} - // The credentials object to use when signing requests. - Credentials aws.CredentialsProvider +func operationTracer(p tracing.TracerProvider) tracing.Tracer { + return p.Tracer("github.com/aws/aws-sdk-go-v2/service/ssooidc") +} - // The configuration DefaultsMode that the SDK should use when constructing the - // clients initial default settings. - DefaultsMode aws.DefaultsMode +// Client provides the API client to make operations call for AWS SSO OIDC. +type Client struct { + options Options - // The endpoint options to be used when attempting to resolve an endpoint. - EndpointOptions EndpointResolverOptions + // Difference between the time reported by the server and the client + timeOffset *atomic.Int64 +} - // The service endpoint resolver. - EndpointResolver EndpointResolver +// New returns an initialized Client based on the functional options. Provide +// additional functional options to further configure the behavior of the client, +// such as changing the client's endpoint or adding custom middleware behavior. +func New(options Options, optFns ...func(*Options)) *Client { + options = options.Copy() - // Signature Version 4 (SigV4) Signer - HTTPSignerV4 HTTPSignerV4 + resolveDefaultLogger(&options) - // The logger writer interface to write logging messages to. - Logger logging.Logger + setResolvedDefaultsMode(&options) - // The region to send requests to. (Required) - Region string + resolveRetryer(&options) - // RetryMaxAttempts specifies the maximum number attempts an API client will call - // an operation that fails with a retryable error. A value of 0 is ignored, and - // will not be used to configure the API client created default retryer, or modify - // per operation call's retry max attempts. When creating a new API Clients this - // member will only be used if the Retryer Options member is nil. This value will - // be ignored if Retryer is not nil. If specified in an operation call's functional - // options with a value that is different than the constructed client's Options, - // the Client's Retryer will be wrapped to use the operation's specific - // RetryMaxAttempts value. - RetryMaxAttempts int + resolveHTTPClient(&options) - // RetryMode specifies the retry mode the API client will be created with, if - // Retryer option is not also specified. When creating a new API Clients this - // member will only be used if the Retryer Options member is nil. This value will - // be ignored if Retryer is not nil. Currently does not support per operation call - // overrides, may in the future. - RetryMode aws.RetryMode + resolveHTTPSignerV4(&options) - // Retryer guides how HTTP requests should be retried in case of recoverable - // failures. When nil the API client will use a default retryer. The kind of - // default retry created by the API client can be changed with the RetryMode - // option. - Retryer aws.Retryer + resolveEndpointResolverV2(&options) - // The RuntimeEnvironment configuration, only populated if the DefaultsMode is set - // to DefaultsModeAuto and is initialized using config.LoadDefaultConfig. You - // should not populate this structure programmatically, or rely on the values here - // within your applications. - RuntimeEnvironment aws.RuntimeEnvironment + resolveTracerProvider(&options) - // The initial DefaultsMode used when the client options were constructed. If the - // DefaultsMode was set to aws.DefaultsModeAuto this will store what the resolved - // value was at that point in time. Currently does not support per operation call - // overrides, may in the future. - resolvedDefaultsMode aws.DefaultsMode + resolveMeterProvider(&options) - // The HTTP client to invoke API calls with. Defaults to client's default HTTP - // implementation if nil. - HTTPClient HTTPClient -} + resolveAuthSchemeResolver(&options) -// WithAPIOptions returns a functional option for setting the Client's APIOptions -// option. -func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) { - return func(o *Options) { - o.APIOptions = append(o.APIOptions, optFns...) + for _, fn := range optFns { + fn(&options) } -} -// WithEndpointResolver returns a functional option for setting the Client's -// EndpointResolver option. -func WithEndpointResolver(v EndpointResolver) func(*Options) { - return func(o *Options) { - o.EndpointResolver = v + finalizeRetryMaxAttempts(&options) + + ignoreAnonymousAuth(&options) + + wrapWithAnonymousAuth(&options) + + resolveAuthSchemes(&options) + + client := &Client{ + options: options, } -} -type HTTPClient interface { - Do(*http.Request) (*http.Response, error) -} + initializeTimeOffsetResolver(client) -// Copy creates a clone where the APIOptions list is deep copied. -func (o Options) Copy() Options { - to := o - to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) - copy(to.APIOptions, o.APIOptions) + return client +} - return to +// Options returns a copy of the client configuration. +// +// Callers SHOULD NOT perform mutations on any inner structures within client +// config. Config overrides should instead be made on a per-operation basis through +// functional options. +func (c *Client) Options() Options { + return c.options.Copy() } -func (c *Client) invokeOperation(ctx context.Context, opID string, params interface{}, optFns []func(*Options), stackFns ...func(*middleware.Stack, Options) error) (result interface{}, metadata middleware.Metadata, err error) { + +func (c *Client) invokeOperation( + ctx context.Context, opID string, params interface{}, optFns []func(*Options), stackFns ...func(*middleware.Stack, Options) error, +) ( + result interface{}, metadata middleware.Metadata, err error, +) { ctx = middleware.ClearStackValues(ctx) + ctx = middleware.WithServiceID(ctx, ServiceID) + ctx = middleware.WithOperationName(ctx, opID) + stack := middleware.NewStack(opID, smithyhttp.NewStackRequest) options := c.options.Copy() + for _, fn := range optFns { fn(&options) } - finalizeRetryMaxAttemptOptions(&options, *c) + finalizeOperationRetryMaxAttempts(&options, *c) finalizeClientEndpointResolverOptions(&options) @@ -182,20 +254,140 @@ func (c *Client) invokeOperation(ctx context.Context, opID string, params interf } } - handler := middleware.DecorateHandler(smithyhttp.NewClientHandler(options.HTTPClient), stack) - result, metadata, err = handler.Handle(ctx, params) + ctx, err = withOperationMetrics(ctx, options.MeterProvider) + if err != nil { + return nil, metadata, err + } + + tracer := operationTracer(options.TracerProvider) + spanName := fmt.Sprintf("%s.%s", ServiceID, opID) + + ctx = tracing.WithOperationTracer(ctx, tracer) + + ctx, span := tracer.StartSpan(ctx, spanName, func(o *tracing.SpanOptions) { + o.Kind = tracing.SpanKindClient + o.Properties.Set("rpc.system", "aws-api") + o.Properties.Set("rpc.method", opID) + o.Properties.Set("rpc.service", ServiceID) + }) + endTimer := startMetricTimer(ctx, "client.call.duration") + defer endTimer() + defer span.End() + + handler := smithyhttp.NewClientHandler(options.HTTPClient) + decorated := middleware.DecorateHandler(handler, stack) + result, metadata, err = decorated.Handle(ctx, params) if err != nil { + span.SetProperty("exception.type", fmt.Sprintf("%T", err)) + span.SetProperty("exception.message", err.Error()) + + var aerr smithy.APIError + if errors.As(err, &aerr) { + span.SetProperty("api.error_code", aerr.ErrorCode()) + span.SetProperty("api.error_message", aerr.ErrorMessage()) + span.SetProperty("api.error_fault", aerr.ErrorFault().String()) + } + err = &smithy.OperationError{ ServiceID: ServiceID, OperationName: opID, Err: err, } } + + span.SetProperty("error", err != nil) + if err == nil { + span.SetStatus(tracing.SpanStatusOK) + } else { + span.SetStatus(tracing.SpanStatusError) + } + return result, metadata, err } +type operationInputKey struct{} + +func setOperationInput(ctx context.Context, input interface{}) context.Context { + return middleware.WithStackValue(ctx, operationInputKey{}, input) +} + +func getOperationInput(ctx context.Context) interface{} { + return middleware.GetStackValue(ctx, operationInputKey{}) +} + +type setOperationInputMiddleware struct { +} + +func (*setOperationInputMiddleware) ID() string { + return "setOperationInput" +} + +func (m *setOperationInputMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + ctx = setOperationInput(ctx, in.Parameters) + return next.HandleSerialize(ctx, in) +} + +func addProtocolFinalizerMiddlewares(stack *middleware.Stack, options Options, operation string) error { + if err := stack.Finalize.Add(&resolveAuthSchemeMiddleware{operation: operation, options: options}, middleware.Before); err != nil { + return fmt.Errorf("add ResolveAuthScheme: %w", err) + } + if err := stack.Finalize.Insert(&getIdentityMiddleware{options: options}, "ResolveAuthScheme", middleware.After); err != nil { + return fmt.Errorf("add GetIdentity: %v", err) + } + if err := stack.Finalize.Insert(&resolveEndpointV2Middleware{options: options}, "GetIdentity", middleware.After); err != nil { + return fmt.Errorf("add ResolveEndpointV2: %v", err) + } + if err := stack.Finalize.Insert(&signRequestMiddleware{options: options}, "ResolveEndpointV2", middleware.After); err != nil { + return fmt.Errorf("add Signing: %w", err) + } + return nil +} +func resolveAuthSchemeResolver(options *Options) { + if options.AuthSchemeResolver == nil { + options.AuthSchemeResolver = &defaultAuthSchemeResolver{} + } +} + +func resolveAuthSchemes(options *Options) { + if options.AuthSchemes == nil { + options.AuthSchemes = []smithyhttp.AuthScheme{ + internalauth.NewHTTPAuthScheme("aws.auth#sigv4", &internalauthsmithy.V4SignerAdapter{ + Signer: options.HTTPSignerV4, + Logger: options.Logger, + LogSigning: options.ClientLogMode.IsSigning(), + }), + } + } +} + type noSmithyDocumentSerde = smithydocument.NoSerde +type legacyEndpointContextSetter struct { + LegacyResolver EndpointResolver +} + +func (*legacyEndpointContextSetter) ID() string { + return "legacyEndpointContextSetter" +} + +func (m *legacyEndpointContextSetter) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.LegacyResolver != nil { + ctx = awsmiddleware.SetRequiresLegacyEndpoints(ctx, true) + } + + return next.HandleInitialize(ctx, in) + +} +func addlegacyEndpointContextSetter(stack *middleware.Stack, o Options) error { + return stack.Initialize.Add(&legacyEndpointContextSetter{ + LegacyResolver: o.EndpointResolver, + }, middleware.Before) +} + func resolveDefaultLogger(o *Options) { if o.Logger != nil { return @@ -233,6 +425,7 @@ func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { APIOptions: cfg.APIOptions, Logger: cfg.Logger, ClientLogMode: cfg.ClientLogMode, + AppID: cfg.AppID, } resolveAWSRetryerProvider(cfg, &opts) resolveAWSRetryMaxAttempts(cfg, &opts) @@ -240,6 +433,7 @@ func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { resolveAWSEndpointResolver(cfg, &opts) resolveUseDualStackEndpoint(cfg, &opts) resolveUseFIPSEndpoint(cfg, &opts) + resolveBaseEndpoint(cfg, &opts) return New(opts, optFns...) } @@ -331,7 +525,15 @@ func resolveAWSRetryMaxAttempts(cfg aws.Config, o *Options) { o.RetryMaxAttempts = cfg.RetryMaxAttempts } -func finalizeRetryMaxAttemptOptions(o *Options, client Client) { +func finalizeRetryMaxAttempts(o *Options) { + if o.RetryMaxAttempts == 0 { + return + } + + o.Retryer = retry.AddWithMaxAttempts(o.Retryer, o.RetryMaxAttempts) +} + +func finalizeOperationRetryMaxAttempts(o *Options, client Client) { if v := o.RetryMaxAttempts; v == 0 || v == client.options.RetryMaxAttempts { return } @@ -343,20 +545,39 @@ func resolveAWSEndpointResolver(cfg aws.Config, o *Options) { if cfg.EndpointResolver == nil && cfg.EndpointResolverWithOptions == nil { return } - o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions, NewDefaultEndpointResolver()) + o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions) } -func addClientUserAgent(stack *middleware.Stack) error { - return awsmiddleware.AddSDKAgentKeyValue(awsmiddleware.APIMetadata, "ssooidc", goModuleVersion)(stack) +func addClientUserAgent(stack *middleware.Stack, options Options) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddSDKAgentKeyValue(awsmiddleware.APIMetadata, "ssooidc", goModuleVersion) + if len(options.AppID) > 0 { + ua.AddSDKAgentKey(awsmiddleware.ApplicationIdentifier, options.AppID) + } + + return nil } -func addHTTPSignerV4Middleware(stack *middleware.Stack, o Options) error { - mw := v4.NewSignHTTPRequestMiddleware(v4.SignHTTPRequestMiddlewareOptions{ - CredentialsProvider: o.Credentials, - Signer: o.HTTPSignerV4, - LogSigning: o.ClientLogMode.IsSigning(), - }) - return stack.Finalize.Add(mw, middleware.After) +func getOrAddRequestUserAgent(stack *middleware.Stack) (*awsmiddleware.RequestUserAgent, error) { + id := (*awsmiddleware.RequestUserAgent)(nil).ID() + mw, ok := stack.Build.Get(id) + if !ok { + mw = awsmiddleware.NewRequestUserAgent() + if err := stack.Build.Add(mw, middleware.After); err != nil { + return nil, err + } + } + + ua, ok := mw.(*awsmiddleware.RequestUserAgent) + if !ok { + return nil, fmt.Errorf("%T for %s middleware did not match expected type", mw, id) + } + + return ua, nil } type HTTPSignerV4 interface { @@ -377,12 +598,97 @@ func newDefaultV4Signer(o Options) *v4.Signer { }) } -func addRetryMiddlewares(stack *middleware.Stack, o Options) error { - mo := retry.AddRetryMiddlewaresOptions{ - Retryer: o.Retryer, - LogRetryAttempts: o.ClientLogMode.IsRetries(), +func addClientRequestID(stack *middleware.Stack) error { + return stack.Build.Add(&awsmiddleware.ClientRequestID{}, middleware.After) +} + +func addComputeContentLength(stack *middleware.Stack) error { + return stack.Build.Add(&smithyhttp.ComputeContentLength{}, middleware.After) +} + +func addRawResponseToMetadata(stack *middleware.Stack) error { + return stack.Deserialize.Add(&awsmiddleware.AddRawResponse{}, middleware.Before) +} + +func addRecordResponseTiming(stack *middleware.Stack) error { + return stack.Deserialize.Add(&awsmiddleware.RecordResponseTiming{}, middleware.After) +} + +func addSpanRetryLoop(stack *middleware.Stack, options Options) error { + return stack.Finalize.Insert(&spanRetryLoop{options: options}, "Retry", middleware.Before) +} + +type spanRetryLoop struct { + options Options +} + +func (*spanRetryLoop) ID() string { + return "spanRetryLoop" +} + +func (m *spanRetryLoop) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, +) ( + middleware.FinalizeOutput, middleware.Metadata, error, +) { + tracer := operationTracer(m.options.TracerProvider) + ctx, span := tracer.StartSpan(ctx, "RetryLoop") + defer span.End() + + return next.HandleFinalize(ctx, in) +} +func addStreamingEventsPayload(stack *middleware.Stack) error { + return stack.Finalize.Add(&v4.StreamingEventsPayload{}, middleware.Before) +} + +func addUnsignedPayload(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.UnsignedPayload{}, "ResolveEndpointV2", middleware.After) +} + +func addComputePayloadSHA256(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.ComputePayloadSHA256{}, "ResolveEndpointV2", middleware.After) +} + +func addContentSHA256Header(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.ContentSHA256Header{}, (*v4.ComputePayloadSHA256)(nil).ID(), middleware.After) +} + +func addIsWaiterUserAgent(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureWaiter) + return nil + }) +} + +func addIsPaginatorUserAgent(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeaturePaginator) + return nil + }) +} + +func addRetry(stack *middleware.Stack, o Options) error { + attempt := retry.NewAttemptMiddleware(o.Retryer, smithyhttp.RequestCloner, func(m *retry.Attempt) { + m.LogAttempts = o.ClientLogMode.IsRetries() + m.OperationMeter = o.MeterProvider.Meter("github.com/aws/aws-sdk-go-v2/service/ssooidc") + }) + if err := stack.Finalize.Insert(attempt, "Signing", middleware.Before); err != nil { + return err } - return retry.AddRetryMiddlewares(stack, mo) + if err := stack.Finalize.Insert(&retry.MetricsHeader{}, attempt.ID(), middleware.After); err != nil { + return err + } + return nil } // resolves dual-stack endpoint configuration @@ -415,12 +721,68 @@ func resolveUseFIPSEndpoint(cfg aws.Config, o *Options) error { return nil } +func resolveAccountID(identity smithyauth.Identity, mode aws.AccountIDEndpointMode) *string { + if mode == aws.AccountIDEndpointModeDisabled { + return nil + } + + if ca, ok := identity.(*internalauthsmithy.CredentialsAdapter); ok && ca.Credentials.AccountID != "" { + return aws.String(ca.Credentials.AccountID) + } + + return nil +} + +func addTimeOffsetBuild(stack *middleware.Stack, c *Client) error { + mw := internalmiddleware.AddTimeOffsetMiddleware{Offset: c.timeOffset} + if err := stack.Build.Add(&mw, middleware.After); err != nil { + return err + } + return stack.Deserialize.Insert(&mw, "RecordResponseTiming", middleware.Before) +} +func initializeTimeOffsetResolver(c *Client) { + c.timeOffset = new(atomic.Int64) +} + +func addUserAgentRetryMode(stack *middleware.Stack, options Options) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + switch options.Retryer.(type) { + case *retry.Standard: + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureRetryModeStandard) + case *retry.AdaptiveMode: + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureRetryModeAdaptive) + } + return nil +} + +func resolveTracerProvider(options *Options) { + if options.TracerProvider == nil { + options.TracerProvider = &tracing.NopTracerProvider{} + } +} + +func resolveMeterProvider(options *Options) { + if options.MeterProvider == nil { + options.MeterProvider = metrics.NopMeterProvider{} + } +} + +func addRecursionDetection(stack *middleware.Stack) error { + return stack.Build.Add(&awsmiddleware.RecursionDetection{}, middleware.After) +} + func addRequestIDRetrieverMiddleware(stack *middleware.Stack) error { - return awsmiddleware.AddRequestIDRetrieverMiddleware(stack) + return stack.Deserialize.Insert(&awsmiddleware.RequestIDRetriever{}, "OperationDeserializer", middleware.Before) + } func addResponseErrorMiddleware(stack *middleware.Stack) error { - return awshttp.AddResponseErrorMiddleware(stack) + return stack.Deserialize.Insert(&awshttp.ResponseErrorWrapper{}, "RequestIDRetriever", middleware.Before) + } func addRequestResponseLogging(stack *middleware.Stack, o Options) error { @@ -431,3 +793,118 @@ func addRequestResponseLogging(stack *middleware.Stack, o Options) error { LogResponseWithBody: o.ClientLogMode.IsResponseWithBody(), }, middleware.After) } + +type disableHTTPSMiddleware struct { + DisableHTTPS bool +} + +func (*disableHTTPSMiddleware) ID() string { + return "disableHTTPS" +} + +func (m *disableHTTPSMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.DisableHTTPS && !smithyhttp.GetHostnameImmutable(ctx) { + req.URL.Scheme = "http" + } + + return next.HandleFinalize(ctx, in) +} + +func addDisableHTTPSMiddleware(stack *middleware.Stack, o Options) error { + return stack.Finalize.Insert(&disableHTTPSMiddleware{ + DisableHTTPS: o.EndpointOptions.DisableHTTPS, + }, "ResolveEndpointV2", middleware.After) +} + +type spanInitializeStart struct { +} + +func (*spanInitializeStart) ID() string { + return "spanInitializeStart" +} + +func (m *spanInitializeStart) HandleInitialize( + ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, +) ( + middleware.InitializeOutput, middleware.Metadata, error, +) { + ctx, _ = tracing.StartSpan(ctx, "Initialize") + + return next.HandleInitialize(ctx, in) +} + +type spanInitializeEnd struct { +} + +func (*spanInitializeEnd) ID() string { + return "spanInitializeEnd" +} + +func (m *spanInitializeEnd) HandleInitialize( + ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, +) ( + middleware.InitializeOutput, middleware.Metadata, error, +) { + ctx, span := tracing.PopSpan(ctx) + span.End() + + return next.HandleInitialize(ctx, in) +} + +type spanBuildRequestStart struct { +} + +func (*spanBuildRequestStart) ID() string { + return "spanBuildRequestStart" +} + +func (m *spanBuildRequestStart) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + middleware.SerializeOutput, middleware.Metadata, error, +) { + ctx, _ = tracing.StartSpan(ctx, "BuildRequest") + + return next.HandleSerialize(ctx, in) +} + +type spanBuildRequestEnd struct { +} + +func (*spanBuildRequestEnd) ID() string { + return "spanBuildRequestEnd" +} + +func (m *spanBuildRequestEnd) HandleBuild( + ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler, +) ( + middleware.BuildOutput, middleware.Metadata, error, +) { + ctx, span := tracing.PopSpan(ctx) + span.End() + + return next.HandleBuild(ctx, in) +} + +func addSpanInitializeStart(stack *middleware.Stack) error { + return stack.Initialize.Add(&spanInitializeStart{}, middleware.Before) +} + +func addSpanInitializeEnd(stack *middleware.Stack) error { + return stack.Initialize.Add(&spanInitializeEnd{}, middleware.After) +} + +func addSpanBuildRequestStart(stack *middleware.Stack) error { + return stack.Serialize.Add(&spanBuildRequestStart{}, middleware.Before) +} + +func addSpanBuildRequestEnd(stack *middleware.Stack) error { + return stack.Build.Add(&spanBuildRequestEnd{}, middleware.After) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateToken.go index cde97b4f3abb..5fb8d2ab946b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateToken.go @@ -4,14 +4,16 @@ package ssooidc import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Creates and returns an access token for the authorized client. The access token -// issued will be used to fetch short-term credentials for the assigned roles in -// the AWS account. +// Creates and returns access and refresh tokens for clients that are +// authenticated using client secrets. The access token can be used to fetch +// short-term credentials for the assigned AWS accounts or to access application +// APIs using bearer authentication. func (c *Client) CreateToken(ctx context.Context, params *CreateTokenInput, optFns ...func(*Options)) (*CreateTokenOutput, error) { if params == nil { params = &CreateTokenInput{} @@ -29,50 +31,65 @@ func (c *Client) CreateToken(ctx context.Context, params *CreateTokenInput, optF type CreateTokenInput struct { - // The unique identifier string for each client. This value should come from the - // persisted result of the RegisterClient API. + // The unique identifier string for the client or application. This value comes + // from the result of the RegisterClientAPI. // // This member is required. ClientId *string // A secret string generated for the client. This value should come from the - // persisted result of the RegisterClient API. + // persisted result of the RegisterClientAPI. // // This member is required. ClientSecret *string - // Supports grant types for the authorization code, refresh token, and device code - // request. For device code requests, specify the following value: - // urn:ietf:params:oauth:grant-type:device_code For information about how to - // obtain the device code, see the StartDeviceAuthorization topic. + // Supports the following OAuth grant types: Device Code and Refresh Token. + // Specify either of the following values, depending on the grant type that you + // want: + // + // * Device Code - urn:ietf:params:oauth:grant-type:device_code + // + // * Refresh Token - refresh_token + // + // For information about how to obtain the device code, see the StartDeviceAuthorization topic. // // This member is required. GrantType *string - // The authorization code received from the authorization service. This parameter - // is required to perform an authorization grant request to get access to a token. + // Used only when calling this API for the Authorization Code grant type. The + // short-term code is used to identify this authorization request. This grant type + // is currently unsupported for the CreateTokenAPI. Code *string - // Used only when calling this API for the device code grant type. This short-term - // code is used to identify this authentication attempt. This should come from an - // in-memory reference to the result of the StartDeviceAuthorization API. + // Used only when calling this API for the Authorization Code grant type. This + // value is generated by the client and presented to validate the original code + // challenge value the client passed at authorization time. + CodeVerifier *string + + // Used only when calling this API for the Device Code grant type. This short-term + // code is used to identify this authorization request. This comes from the result + // of the StartDeviceAuthorizationAPI. DeviceCode *string - // The location of the application that will receive the authorization code. Users - // authorize the service to send the request to this location. + // Used only when calling this API for the Authorization Code grant type. This + // value specifies the location of the client or application that has registered to + // receive the authorization code. RedirectUri *string - // Currently, refreshToken is not yet implemented and is not supported. For more - // information about the features and limitations of the current IAM Identity - // Center OIDC implementation, see Considerations for Using this Guide in the IAM - // Identity Center OIDC API Reference - // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html). - // The token used to obtain an access token in the event that the access token is - // invalid or expired. + // Used only when calling this API for the Refresh Token grant type. This token is + // used to refresh short-term tokens, such as the access token, that might expire. + // + // For more information about the features and limitations of the current IAM + // Identity Center OIDC implementation, see Considerations for Using this Guide in + // the [IAM Identity Center OIDC API Reference]. + // + // [IAM Identity Center OIDC API Reference]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html RefreshToken *string - // The list of scopes that is defined by the client. Upon authorization, this list - // is used to restrict permissions when granting an access token. + // The list of scopes for which authorization is requested. The access token that + // is issued is limited to the scopes that are granted. If this value is not + // specified, IAM Identity Center authorizes all scopes that are configured for the + // client during the call to RegisterClient. Scope []string noSmithyDocumentSerde @@ -80,31 +97,35 @@ type CreateTokenInput struct { type CreateTokenOutput struct { - // An opaque token to access IAM Identity Center resources assigned to a user. + // A bearer token to access Amazon Web Services accounts and applications assigned + // to a user. AccessToken *string // Indicates the time in seconds when an access token will expire. ExpiresIn int32 - // Currently, idToken is not yet implemented and is not supported. For more - // information about the features and limitations of the current IAM Identity - // Center OIDC implementation, see Considerations for Using this Guide in the IAM - // Identity Center OIDC API Reference - // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html). - // The identifier of the user that associated with the access token, if present. + // The idToken is not implemented or supported. For more information about the + // features and limitations of the current IAM Identity Center OIDC implementation, + // see Considerations for Using this Guide in the [IAM Identity Center OIDC API Reference]. + // + // A JSON Web Token (JWT) that identifies who is associated with the issued access + // token. + // + // [IAM Identity Center OIDC API Reference]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html IdToken *string - // Currently, refreshToken is not yet implemented and is not supported. For more - // information about the features and limitations of the current IAM Identity - // Center OIDC implementation, see Considerations for Using this Guide in the IAM - // Identity Center OIDC API Reference - // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html). // A token that, if present, can be used to refresh a previously issued access // token that might have expired. + // + // For more information about the features and limitations of the current IAM + // Identity Center OIDC implementation, see Considerations for Using this Guide in + // the [IAM Identity Center OIDC API Reference]. + // + // [IAM Identity Center OIDC API Reference]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html RefreshToken *string // Used to notify the client that the returned token is an access token. The - // supported type is BearerToken. + // supported token type is Bearer . TokenType *string // Metadata pertaining to the operation's result. @@ -114,6 +135,9 @@ type CreateTokenOutput struct { } func (c *Client) addOperationCreateTokenMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateToken{}, middleware.After) if err != nil { return err @@ -122,28 +146,38 @@ func (c *Client) addOperationCreateTokenMiddlewares(stack *middleware.Stack, opt if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "CreateToken"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -152,12 +186,24 @@ func (c *Client) addOperationCreateTokenMiddlewares(stack *middleware.Stack, opt if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpCreateTokenValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateToken(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -167,6 +213,21 @@ func (c *Client) addOperationCreateTokenMiddlewares(stack *middleware.Stack, opt if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateTokenWithIAM.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateTokenWithIAM.go new file mode 100644 index 000000000000..8abd43690d29 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateTokenWithIAM.go @@ -0,0 +1,271 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ssooidc + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates and returns access and refresh tokens for clients and applications that +// are authenticated using IAM entities. The access token can be used to fetch +// short-term credentials for the assigned Amazon Web Services accounts or to +// access application APIs using bearer authentication. +func (c *Client) CreateTokenWithIAM(ctx context.Context, params *CreateTokenWithIAMInput, optFns ...func(*Options)) (*CreateTokenWithIAMOutput, error) { + if params == nil { + params = &CreateTokenWithIAMInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateTokenWithIAM", params, optFns, c.addOperationCreateTokenWithIAMMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateTokenWithIAMOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateTokenWithIAMInput struct { + + // The unique identifier string for the client or application. This value is an + // application ARN that has OAuth grants configured. + // + // This member is required. + ClientId *string + + // Supports the following OAuth grant types: Authorization Code, Refresh Token, + // JWT Bearer, and Token Exchange. Specify one of the following values, depending + // on the grant type that you want: + // + // * Authorization Code - authorization_code + // + // * Refresh Token - refresh_token + // + // * JWT Bearer - urn:ietf:params:oauth:grant-type:jwt-bearer + // + // * Token Exchange - urn:ietf:params:oauth:grant-type:token-exchange + // + // This member is required. + GrantType *string + + // Used only when calling this API for the JWT Bearer grant type. This value + // specifies the JSON Web Token (JWT) issued by a trusted token issuer. To + // authorize a trusted token issuer, configure the JWT Bearer GrantOptions for the + // application. + Assertion *string + + // Used only when calling this API for the Authorization Code grant type. This + // short-term code is used to identify this authorization request. The code is + // obtained through a redirect from IAM Identity Center to a redirect URI persisted + // in the Authorization Code GrantOptions for the application. + Code *string + + // Used only when calling this API for the Authorization Code grant type. This + // value is generated by the client and presented to validate the original code + // challenge value the client passed at authorization time. + CodeVerifier *string + + // Used only when calling this API for the Authorization Code grant type. This + // value specifies the location of the client or application that has registered to + // receive the authorization code. + RedirectUri *string + + // Used only when calling this API for the Refresh Token grant type. This token is + // used to refresh short-term tokens, such as the access token, that might expire. + // + // For more information about the features and limitations of the current IAM + // Identity Center OIDC implementation, see Considerations for Using this Guide in + // the [IAM Identity Center OIDC API Reference]. + // + // [IAM Identity Center OIDC API Reference]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html + RefreshToken *string + + // Used only when calling this API for the Token Exchange grant type. This value + // specifies the type of token that the requester can receive. The following values + // are supported: + // + // * Access Token - urn:ietf:params:oauth:token-type:access_token + // + // * Refresh Token - urn:ietf:params:oauth:token-type:refresh_token + RequestedTokenType *string + + // The list of scopes for which authorization is requested. The access token that + // is issued is limited to the scopes that are granted. If the value is not + // specified, IAM Identity Center authorizes all scopes configured for the + // application, including the following default scopes: openid , aws , + // sts:identity_context . + Scope []string + + // Used only when calling this API for the Token Exchange grant type. This value + // specifies the subject of the exchange. The value of the subject token must be an + // access token issued by IAM Identity Center to a different client or application. + // The access token must have authorized scopes that indicate the requested + // application as a target audience. + SubjectToken *string + + // Used only when calling this API for the Token Exchange grant type. This value + // specifies the type of token that is passed as the subject of the exchange. The + // following value is supported: + // + // * Access Token - urn:ietf:params:oauth:token-type:access_token + SubjectTokenType *string + + noSmithyDocumentSerde +} + +type CreateTokenWithIAMOutput struct { + + // A bearer token to access Amazon Web Services accounts and applications assigned + // to a user. + AccessToken *string + + // Indicates the time in seconds when an access token will expire. + ExpiresIn int32 + + // A JSON Web Token (JWT) that identifies the user associated with the issued + // access token. + IdToken *string + + // Indicates the type of tokens that are issued by IAM Identity Center. The + // following values are supported: + // + // * Access Token - urn:ietf:params:oauth:token-type:access_token + // + // * Refresh Token - urn:ietf:params:oauth:token-type:refresh_token + IssuedTokenType *string + + // A token that, if present, can be used to refresh a previously issued access + // token that might have expired. + // + // For more information about the features and limitations of the current IAM + // Identity Center OIDC implementation, see Considerations for Using this Guide in + // the [IAM Identity Center OIDC API Reference]. + // + // [IAM Identity Center OIDC API Reference]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html + RefreshToken *string + + // The list of scopes for which authorization is granted. The access token that is + // issued is limited to the scopes that are granted. + Scope []string + + // Used to notify the requester that the returned token is an access token. The + // supported token type is Bearer . + TokenType *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateTokenWithIAMMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateTokenWithIAM{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateTokenWithIAM{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "CreateTokenWithIAM"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpCreateTokenWithIAMValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateTokenWithIAM(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opCreateTokenWithIAM(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "CreateTokenWithIAM", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_RegisterClient.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_RegisterClient.go index 3ed8cc35f789..03a3594be0ba 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_RegisterClient.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_RegisterClient.go @@ -4,6 +4,7 @@ package ssooidc import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" @@ -40,8 +41,27 @@ type RegisterClientInput struct { // This member is required. ClientType *string - // The list of scopes that are defined by the client. Upon authorization, this list - // is used to restrict permissions when granting an access token. + // This IAM Identity Center application ARN is used to define + // administrator-managed configuration for public client access to resources. At + // authorization, the scopes, grants, and redirect URI available to this client + // will be restricted by this application resource. + EntitledApplicationArn *string + + // The list of OAuth 2.0 grant types that are defined by the client. This list is + // used to restrict the token granting flows available to the client. + GrantTypes []string + + // The IAM Identity Center Issuer URL associated with an instance of IAM Identity + // Center. This value is needed for user access to resources through the client. + IssuerUrl *string + + // The list of redirect URI that are defined by the client. At completion of + // authorization, this list is used to restrict what locations the user agent can + // be redirected back to. + RedirectUris []string + + // The list of scopes that are defined by the client. Upon authorization, this + // list is used to restrict permissions when granting an access token. Scopes []string noSmithyDocumentSerde @@ -49,7 +69,7 @@ type RegisterClientInput struct { type RegisterClientOutput struct { - // The endpoint where the client can request authorization. + // An endpoint that the client can use to request authorization. AuthorizationEndpoint *string // The unique identifier string for each client. This client uses this identifier @@ -59,14 +79,14 @@ type RegisterClientOutput struct { // Indicates the time at which the clientId and clientSecret were issued. ClientIdIssuedAt int64 - // A secret string generated for the client. The client will use this string to get - // authenticated by the service in subsequent calls. + // A secret string generated for the client. The client will use this string to + // get authenticated by the service in subsequent calls. ClientSecret *string // Indicates the time at which the clientId and clientSecret will become invalid. ClientSecretExpiresAt int64 - // The endpoint where the client can get an access token. + // An endpoint that the client can use to create tokens. TokenEndpoint *string // Metadata pertaining to the operation's result. @@ -76,6 +96,9 @@ type RegisterClientOutput struct { } func (c *Client) addOperationRegisterClientMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsRestjson1_serializeOpRegisterClient{}, middleware.After) if err != nil { return err @@ -84,28 +107,38 @@ func (c *Client) addOperationRegisterClientMiddlewares(stack *middleware.Stack, if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "RegisterClient"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -114,12 +147,24 @@ func (c *Client) addOperationRegisterClientMiddlewares(stack *middleware.Stack, if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpRegisterClientValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opRegisterClient(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -129,6 +174,21 @@ func (c *Client) addOperationRegisterClientMiddlewares(stack *middleware.Stack, if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_StartDeviceAuthorization.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_StartDeviceAuthorization.go index 013ccbc9358c..203ca5e67b8b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_StartDeviceAuthorization.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_StartDeviceAuthorization.go @@ -4,6 +4,7 @@ package ssooidc import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" @@ -28,24 +29,24 @@ func (c *Client) StartDeviceAuthorization(ctx context.Context, params *StartDevi type StartDeviceAuthorizationInput struct { - // The unique identifier string for the client that is registered with IAM Identity - // Center. This value should come from the persisted result of the RegisterClient - // API operation. + // The unique identifier string for the client that is registered with IAM + // Identity Center. This value should come from the persisted result of the RegisterClientAPI + // operation. // // This member is required. ClientId *string // A secret string that is generated for the client. This value should come from - // the persisted result of the RegisterClient API operation. + // the persisted result of the RegisterClientAPI operation. // // This member is required. ClientSecret *string - // The URL for the AWS access portal. For more information, see Using the AWS - // access portal - // (https://docs.aws.amazon.com/singlesignon/latest/userguide/using-the-portal.html) + // The URL for the Amazon Web Services access portal. For more information, see [Using the Amazon Web Services access portal] // in the IAM Identity Center User Guide. // + // [Using the Amazon Web Services access portal]: https://docs.aws.amazon.com/singlesignon/latest/userguide/using-the-portal.html + // // This member is required. StartUrl *string @@ -73,9 +74,9 @@ type StartDeviceAuthorizationOutput struct { // device. VerificationUri *string - // An alternate URL that the client can use to automatically launch a browser. This - // process skips the manual step in which the user visits the verification page and - // enters their code. + // An alternate URL that the client can use to automatically launch a browser. + // This process skips the manual step in which the user visits the verification + // page and enters their code. VerificationUriComplete *string // Metadata pertaining to the operation's result. @@ -85,6 +86,9 @@ type StartDeviceAuthorizationOutput struct { } func (c *Client) addOperationStartDeviceAuthorizationMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsRestjson1_serializeOpStartDeviceAuthorization{}, middleware.After) if err != nil { return err @@ -93,28 +97,38 @@ func (c *Client) addOperationStartDeviceAuthorizationMiddlewares(stack *middlewa if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "StartDeviceAuthorization"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -123,12 +137,24 @@ func (c *Client) addOperationStartDeviceAuthorizationMiddlewares(stack *middlewa if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpStartDeviceAuthorizationValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStartDeviceAuthorization(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -138,6 +164,21 @@ func (c *Client) addOperationStartDeviceAuthorizationMiddlewares(stack *middlewa if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/auth.go new file mode 100644 index 000000000000..e4b87f5bc41d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/auth.go @@ -0,0 +1,331 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ssooidc + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + smithy "github.com/aws/smithy-go" + smithyauth "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +func bindAuthParamsRegion(_ interface{}, params *AuthResolverParameters, _ interface{}, options Options) { + params.Region = options.Region +} + +type setLegacyContextSigningOptionsMiddleware struct { +} + +func (*setLegacyContextSigningOptionsMiddleware) ID() string { + return "setLegacyContextSigningOptions" +} + +func (m *setLegacyContextSigningOptionsMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + rscheme := getResolvedAuthScheme(ctx) + schemeID := rscheme.Scheme.SchemeID() + + if sn := awsmiddleware.GetSigningName(ctx); sn != "" { + if schemeID == "aws.auth#sigv4" { + smithyhttp.SetSigV4SigningName(&rscheme.SignerProperties, sn) + } else if schemeID == "aws.auth#sigv4a" { + smithyhttp.SetSigV4ASigningName(&rscheme.SignerProperties, sn) + } + } + + if sr := awsmiddleware.GetSigningRegion(ctx); sr != "" { + if schemeID == "aws.auth#sigv4" { + smithyhttp.SetSigV4SigningRegion(&rscheme.SignerProperties, sr) + } else if schemeID == "aws.auth#sigv4a" { + smithyhttp.SetSigV4ASigningRegions(&rscheme.SignerProperties, []string{sr}) + } + } + + return next.HandleFinalize(ctx, in) +} + +func addSetLegacyContextSigningOptionsMiddleware(stack *middleware.Stack) error { + return stack.Finalize.Insert(&setLegacyContextSigningOptionsMiddleware{}, "Signing", middleware.Before) +} + +type withAnonymous struct { + resolver AuthSchemeResolver +} + +var _ AuthSchemeResolver = (*withAnonymous)(nil) + +func (v *withAnonymous) ResolveAuthSchemes(ctx context.Context, params *AuthResolverParameters) ([]*smithyauth.Option, error) { + opts, err := v.resolver.ResolveAuthSchemes(ctx, params) + if err != nil { + return nil, err + } + + opts = append(opts, &smithyauth.Option{ + SchemeID: smithyauth.SchemeIDAnonymous, + }) + return opts, nil +} + +func wrapWithAnonymousAuth(options *Options) { + if _, ok := options.AuthSchemeResolver.(*defaultAuthSchemeResolver); !ok { + return + } + + options.AuthSchemeResolver = &withAnonymous{ + resolver: options.AuthSchemeResolver, + } +} + +// AuthResolverParameters contains the set of inputs necessary for auth scheme +// resolution. +type AuthResolverParameters struct { + // The name of the operation being invoked. + Operation string + + // The region in which the operation is being invoked. + Region string +} + +func bindAuthResolverParams(ctx context.Context, operation string, input interface{}, options Options) *AuthResolverParameters { + params := &AuthResolverParameters{ + Operation: operation, + } + + bindAuthParamsRegion(ctx, params, input, options) + + return params +} + +// AuthSchemeResolver returns a set of possible authentication options for an +// operation. +type AuthSchemeResolver interface { + ResolveAuthSchemes(context.Context, *AuthResolverParameters) ([]*smithyauth.Option, error) +} + +type defaultAuthSchemeResolver struct{} + +var _ AuthSchemeResolver = (*defaultAuthSchemeResolver)(nil) + +func (*defaultAuthSchemeResolver) ResolveAuthSchemes(ctx context.Context, params *AuthResolverParameters) ([]*smithyauth.Option, error) { + if overrides, ok := operationAuthOptions[params.Operation]; ok { + return overrides(params), nil + } + return serviceAuthOptions(params), nil +} + +var operationAuthOptions = map[string]func(*AuthResolverParameters) []*smithyauth.Option{ + "CreateToken": func(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + {SchemeID: smithyauth.SchemeIDAnonymous}, + } + }, + + "RegisterClient": func(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + {SchemeID: smithyauth.SchemeIDAnonymous}, + } + }, + + "StartDeviceAuthorization": func(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + {SchemeID: smithyauth.SchemeIDAnonymous}, + } + }, +} + +func serviceAuthOptions(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + { + SchemeID: smithyauth.SchemeIDSigV4, + SignerProperties: func() smithy.Properties { + var props smithy.Properties + smithyhttp.SetSigV4SigningName(&props, "sso-oauth") + smithyhttp.SetSigV4SigningRegion(&props, params.Region) + return props + }(), + }, + } +} + +type resolveAuthSchemeMiddleware struct { + operation string + options Options +} + +func (*resolveAuthSchemeMiddleware) ID() string { + return "ResolveAuthScheme" +} + +func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "ResolveAuthScheme") + defer span.End() + + params := bindAuthResolverParams(ctx, m.operation, getOperationInput(ctx), m.options) + options, err := m.options.AuthSchemeResolver.ResolveAuthSchemes(ctx, params) + if err != nil { + return out, metadata, fmt.Errorf("resolve auth scheme: %w", err) + } + + scheme, ok := m.selectScheme(options) + if !ok { + return out, metadata, fmt.Errorf("could not select an auth scheme") + } + + ctx = setResolvedAuthScheme(ctx, scheme) + + span.SetProperty("auth.scheme_id", scheme.Scheme.SchemeID()) + span.End() + return next.HandleFinalize(ctx, in) +} + +func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) (*resolvedAuthScheme, bool) { + for _, option := range options { + if option.SchemeID == smithyauth.SchemeIDAnonymous { + return newResolvedAuthScheme(smithyhttp.NewAnonymousScheme(), option), true + } + + for _, scheme := range m.options.AuthSchemes { + if scheme.SchemeID() != option.SchemeID { + continue + } + + if scheme.IdentityResolver(m.options) != nil { + return newResolvedAuthScheme(scheme, option), true + } + } + } + + return nil, false +} + +type resolvedAuthSchemeKey struct{} + +type resolvedAuthScheme struct { + Scheme smithyhttp.AuthScheme + IdentityProperties smithy.Properties + SignerProperties smithy.Properties +} + +func newResolvedAuthScheme(scheme smithyhttp.AuthScheme, option *smithyauth.Option) *resolvedAuthScheme { + return &resolvedAuthScheme{ + Scheme: scheme, + IdentityProperties: option.IdentityProperties, + SignerProperties: option.SignerProperties, + } +} + +func setResolvedAuthScheme(ctx context.Context, scheme *resolvedAuthScheme) context.Context { + return middleware.WithStackValue(ctx, resolvedAuthSchemeKey{}, scheme) +} + +func getResolvedAuthScheme(ctx context.Context) *resolvedAuthScheme { + v, _ := middleware.GetStackValue(ctx, resolvedAuthSchemeKey{}).(*resolvedAuthScheme) + return v +} + +type getIdentityMiddleware struct { + options Options +} + +func (*getIdentityMiddleware) ID() string { + return "GetIdentity" +} + +func (m *getIdentityMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + innerCtx, span := tracing.StartSpan(ctx, "GetIdentity") + defer span.End() + + rscheme := getResolvedAuthScheme(innerCtx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + resolver := rscheme.Scheme.IdentityResolver(m.options) + if resolver == nil { + return out, metadata, fmt.Errorf("no identity resolver") + } + + identity, err := timeOperationMetric(ctx, "client.call.resolve_identity_duration", + func() (smithyauth.Identity, error) { + return resolver.GetIdentity(innerCtx, rscheme.IdentityProperties) + }, + func(o *metrics.RecordMetricOptions) { + o.Properties.Set("auth.scheme_id", rscheme.Scheme.SchemeID()) + }) + if err != nil { + return out, metadata, fmt.Errorf("get identity: %w", err) + } + + ctx = setIdentity(ctx, identity) + + span.End() + return next.HandleFinalize(ctx, in) +} + +type identityKey struct{} + +func setIdentity(ctx context.Context, identity smithyauth.Identity) context.Context { + return middleware.WithStackValue(ctx, identityKey{}, identity) +} + +func getIdentity(ctx context.Context) smithyauth.Identity { + v, _ := middleware.GetStackValue(ctx, identityKey{}).(smithyauth.Identity) + return v +} + +type signRequestMiddleware struct { + options Options +} + +func (*signRequestMiddleware) ID() string { + return "Signing" +} + +func (m *signRequestMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "SignRequest") + defer span.End() + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unexpected transport type %T", in.Request) + } + + rscheme := getResolvedAuthScheme(ctx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + identity := getIdentity(ctx) + if identity == nil { + return out, metadata, fmt.Errorf("no identity") + } + + signer := rscheme.Scheme.Signer() + if signer == nil { + return out, metadata, fmt.Errorf("no signer") + } + + _, err = timeOperationMetric(ctx, "client.call.signing_duration", func() (any, error) { + return nil, signer.SignRequest(ctx, req, identity, rscheme.SignerProperties) + }, func(o *metrics.RecordMetricOptions) { + o.Properties.Set("auth.scheme_id", rscheme.Scheme.SchemeID()) + }) + if err != nil { + return out, metadata, fmt.Errorf("sign request: %w", err) + } + + span.End() + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/deserializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/deserializers.go index e9939aff0db5..ae9f145e6279 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/deserializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/deserializers.go @@ -13,11 +13,22 @@ import ( smithyio "github.com/aws/smithy-go/io" "github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/ptr" + smithytime "github.com/aws/smithy-go/time" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" "io" "strings" + "time" ) +func deserializeS3Expires(v string) (*time.Time, error) { + t, err := smithytime.ParseHTTPDate(v) + if err != nil { + return nil, nil + } + return &t, nil +} + type awsRestjson1_deserializeOpCreateToken struct { } @@ -33,6 +44,10 @@ func (m *awsRestjson1_deserializeOpCreateToken) HandleDeserialize(ctx context.Co return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -72,6 +87,7 @@ func (m *awsRestjson1_deserializeOpCreateToken) HandleDeserialize(ctx context.Co } } + span.End() return out, metadata, err } @@ -85,9 +101,9 @@ func awsRestjson1_deserializeOpErrorCreateToken(response *smithyhttp.Response, m errorCode := "UnknownError" errorMessage := errorCode - code := response.Header.Get("X-Amzn-ErrorType") - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + headerCode := response.Header.Get("X-Amzn-ErrorType") + if len(headerCode) != 0 { + errorCode = restjson.SanitizeErrorCode(headerCode) } var buff [1024]byte @@ -96,7 +112,7 @@ func awsRestjson1_deserializeOpErrorCreateToken(response *smithyhttp.Response, m body := io.TeeReader(errorBody, ringBuffer) decoder := json.NewDecoder(body) decoder.UseNumber() - code, message, err := restjson.GetErrorInfo(decoder) + jsonCode, message, err := restjson.GetErrorInfo(decoder) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -108,8 +124,8 @@ func awsRestjson1_deserializeOpErrorCreateToken(response *smithyhttp.Response, m } errorBody.Seek(0, io.SeekStart) - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + if len(headerCode) == 0 && len(jsonCode) != 0 { + errorCode = restjson.SanitizeErrorCode(jsonCode) } if len(message) != 0 { errorMessage = message @@ -239,6 +255,249 @@ func awsRestjson1_deserializeOpDocumentCreateTokenOutput(v **CreateTokenOutput, return nil } +type awsRestjson1_deserializeOpCreateTokenWithIAM struct { +} + +func (*awsRestjson1_deserializeOpCreateTokenWithIAM) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateTokenWithIAM) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateTokenWithIAM(response, &metadata) + } + output := &CreateTokenWithIAMOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateTokenWithIAMOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + span.End() + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateTokenWithIAM(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + if len(headerCode) != 0 { + errorCode = restjson.SanitizeErrorCode(headerCode) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + jsonCode, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(headerCode) == 0 && len(jsonCode) != 0 { + errorCode = restjson.SanitizeErrorCode(jsonCode) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("AuthorizationPendingException", errorCode): + return awsRestjson1_deserializeErrorAuthorizationPendingException(response, errorBody) + + case strings.EqualFold("ExpiredTokenException", errorCode): + return awsRestjson1_deserializeErrorExpiredTokenException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("InvalidClientException", errorCode): + return awsRestjson1_deserializeErrorInvalidClientException(response, errorBody) + + case strings.EqualFold("InvalidGrantException", errorCode): + return awsRestjson1_deserializeErrorInvalidGrantException(response, errorBody) + + case strings.EqualFold("InvalidRequestException", errorCode): + return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody) + + case strings.EqualFold("InvalidRequestRegionException", errorCode): + return awsRestjson1_deserializeErrorInvalidRequestRegionException(response, errorBody) + + case strings.EqualFold("InvalidScopeException", errorCode): + return awsRestjson1_deserializeErrorInvalidScopeException(response, errorBody) + + case strings.EqualFold("SlowDownException", errorCode): + return awsRestjson1_deserializeErrorSlowDownException(response, errorBody) + + case strings.EqualFold("UnauthorizedClientException", errorCode): + return awsRestjson1_deserializeErrorUnauthorizedClientException(response, errorBody) + + case strings.EqualFold("UnsupportedGrantTypeException", errorCode): + return awsRestjson1_deserializeErrorUnsupportedGrantTypeException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateTokenWithIAMOutput(v **CreateTokenWithIAMOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateTokenWithIAMOutput + if *v == nil { + sv = &CreateTokenWithIAMOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "accessToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AccessToken to be of type string, got %T instead", value) + } + sv.AccessToken = ptr.String(jtv) + } + + case "expiresIn": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected ExpirationInSeconds to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ExpiresIn = int32(i64) + } + + case "idToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected IdToken to be of type string, got %T instead", value) + } + sv.IdToken = ptr.String(jtv) + } + + case "issuedTokenType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TokenTypeURI to be of type string, got %T instead", value) + } + sv.IssuedTokenType = ptr.String(jtv) + } + + case "refreshToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected RefreshToken to be of type string, got %T instead", value) + } + sv.RefreshToken = ptr.String(jtv) + } + + case "scope": + if err := awsRestjson1_deserializeDocumentScopes(&sv.Scope, value); err != nil { + return err + } + + case "tokenType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TokenType to be of type string, got %T instead", value) + } + sv.TokenType = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + type awsRestjson1_deserializeOpRegisterClient struct { } @@ -254,6 +513,10 @@ func (m *awsRestjson1_deserializeOpRegisterClient) HandleDeserialize(ctx context return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -293,6 +556,7 @@ func (m *awsRestjson1_deserializeOpRegisterClient) HandleDeserialize(ctx context } } + span.End() return out, metadata, err } @@ -306,9 +570,9 @@ func awsRestjson1_deserializeOpErrorRegisterClient(response *smithyhttp.Response errorCode := "UnknownError" errorMessage := errorCode - code := response.Header.Get("X-Amzn-ErrorType") - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + headerCode := response.Header.Get("X-Amzn-ErrorType") + if len(headerCode) != 0 { + errorCode = restjson.SanitizeErrorCode(headerCode) } var buff [1024]byte @@ -317,7 +581,7 @@ func awsRestjson1_deserializeOpErrorRegisterClient(response *smithyhttp.Response body := io.TeeReader(errorBody, ringBuffer) decoder := json.NewDecoder(body) decoder.UseNumber() - code, message, err := restjson.GetErrorInfo(decoder) + jsonCode, message, err := restjson.GetErrorInfo(decoder) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -329,8 +593,8 @@ func awsRestjson1_deserializeOpErrorRegisterClient(response *smithyhttp.Response } errorBody.Seek(0, io.SeekStart) - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + if len(headerCode) == 0 && len(jsonCode) != 0 { + errorCode = restjson.SanitizeErrorCode(jsonCode) } if len(message) != 0 { errorMessage = message @@ -343,12 +607,18 @@ func awsRestjson1_deserializeOpErrorRegisterClient(response *smithyhttp.Response case strings.EqualFold("InvalidClientMetadataException", errorCode): return awsRestjson1_deserializeErrorInvalidClientMetadataException(response, errorBody) + case strings.EqualFold("InvalidRedirectUriException", errorCode): + return awsRestjson1_deserializeErrorInvalidRedirectUriException(response, errorBody) + case strings.EqualFold("InvalidRequestException", errorCode): return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody) case strings.EqualFold("InvalidScopeException", errorCode): return awsRestjson1_deserializeErrorInvalidScopeException(response, errorBody) + case strings.EqualFold("UnsupportedGrantTypeException", errorCode): + return awsRestjson1_deserializeErrorUnsupportedGrantTypeException(response, errorBody) + default: genericError := &smithy.GenericAPIError{ Code: errorCode, @@ -467,6 +737,10 @@ func (m *awsRestjson1_deserializeOpStartDeviceAuthorization) HandleDeserialize(c return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -506,6 +780,7 @@ func (m *awsRestjson1_deserializeOpStartDeviceAuthorization) HandleDeserialize(c } } + span.End() return out, metadata, err } @@ -519,9 +794,9 @@ func awsRestjson1_deserializeOpErrorStartDeviceAuthorization(response *smithyhtt errorCode := "UnknownError" errorMessage := errorCode - code := response.Header.Get("X-Amzn-ErrorType") - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + headerCode := response.Header.Get("X-Amzn-ErrorType") + if len(headerCode) != 0 { + errorCode = restjson.SanitizeErrorCode(headerCode) } var buff [1024]byte @@ -530,7 +805,7 @@ func awsRestjson1_deserializeOpErrorStartDeviceAuthorization(response *smithyhtt body := io.TeeReader(errorBody, ringBuffer) decoder := json.NewDecoder(body) decoder.UseNumber() - code, message, err := restjson.GetErrorInfo(decoder) + jsonCode, message, err := restjson.GetErrorInfo(decoder) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -542,8 +817,8 @@ func awsRestjson1_deserializeOpErrorStartDeviceAuthorization(response *smithyhtt } errorBody.Seek(0, io.SeekStart) - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) + if len(headerCode) == 0 && len(jsonCode) != 0 { + errorCode = restjson.SanitizeErrorCode(jsonCode) } if len(message) != 0 { errorMessage = message @@ -920,6 +1195,42 @@ func awsRestjson1_deserializeErrorInvalidGrantException(response *smithyhttp.Res return output } +func awsRestjson1_deserializeErrorInvalidRedirectUriException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.InvalidRedirectUriException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentInvalidRedirectUriException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + func awsRestjson1_deserializeErrorInvalidRequestException(response *smithyhttp.Response, errorBody *bytes.Reader) error { output := &types.InvalidRequestException{} var buff [1024]byte @@ -956,6 +1267,42 @@ func awsRestjson1_deserializeErrorInvalidRequestException(response *smithyhttp.R return output } +func awsRestjson1_deserializeErrorInvalidRequestRegionException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.InvalidRequestRegionException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentInvalidRequestRegionException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + func awsRestjson1_deserializeErrorInvalidScopeException(response *smithyhttp.Response, errorBody *bytes.Reader) error { output := &types.InvalidScopeException{} var buff [1024]byte @@ -1443,6 +1790,55 @@ func awsRestjson1_deserializeDocumentInvalidGrantException(v **types.InvalidGran return nil } +func awsRestjson1_deserializeDocumentInvalidRedirectUriException(v **types.InvalidRedirectUriException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.InvalidRedirectUriException + if *v == nil { + sv = &types.InvalidRedirectUriException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "error": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Error to be of type string, got %T instead", value) + } + sv.Error_ = ptr.String(jtv) + } + + case "error_description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value) + } + sv.Error_description = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentInvalidRequestException(v **types.InvalidRequestException, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -1492,6 +1888,73 @@ func awsRestjson1_deserializeDocumentInvalidRequestException(v **types.InvalidRe return nil } +func awsRestjson1_deserializeDocumentInvalidRequestRegionException(v **types.InvalidRequestRegionException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.InvalidRequestRegionException + if *v == nil { + sv = &types.InvalidRequestRegionException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "endpoint": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Location to be of type string, got %T instead", value) + } + sv.Endpoint = ptr.String(jtv) + } + + case "error": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Error to be of type string, got %T instead", value) + } + sv.Error_ = ptr.String(jtv) + } + + case "error_description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value) + } + sv.Error_description = ptr.String(jtv) + } + + case "region": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Region to be of type string, got %T instead", value) + } + sv.Region = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentInvalidScopeException(v **types.InvalidScopeException, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -1541,6 +2004,42 @@ func awsRestjson1_deserializeDocumentInvalidScopeException(v **types.InvalidScop return nil } +func awsRestjson1_deserializeDocumentScopes(v *[]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Scope to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentSlowDownException(v **types.SlowDownException, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/doc.go index a025f7327eb6..1d258e5677b8 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/doc.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/doc.go @@ -1,46 +1,46 @@ // Code generated by smithy-go-codegen DO NOT EDIT. -// Package ssooidc provides the API client, operations, and parameter types for AWS -// SSO OIDC. -// -// AWS IAM Identity Center (successor to AWS Single Sign-On) OpenID Connect (OIDC) -// is a web service that enables a client (such as AWS CLI or a native application) -// to register with IAM Identity Center. The service also enables the client to -// fetch the user’s access token upon successful authentication and authorization -// with IAM Identity Center. Although AWS Single Sign-On was renamed, the sso and -// identitystore API namespaces will continue to retain their original name for -// backward compatibility purposes. For more information, see IAM Identity Center -// rename -// (https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed). -// Considerations for Using This Guide Before you begin using this guide, we -// recommend that you first review the following important information about how -// the IAM Identity Center OIDC service works. -// -// * The IAM Identity Center OIDC -// service currently implements only the portions of the OAuth 2.0 Device -// Authorization Grant standard (https://tools.ietf.org/html/rfc8628 -// (https://tools.ietf.org/html/rfc8628)) that are necessary to enable single -// sign-on authentication with the AWS CLI. Support for other OIDC flows frequently -// needed for native applications, such as Authorization Code Flow (+ PKCE), will -// be addressed in future releases. -// -// * The service emits only OIDC access tokens, -// such that obtaining a new token (For example, token refresh) requires explicit -// user re-authentication. -// -// * The access tokens provided by this service grant -// access to all AWS account entitlements assigned to an IAM Identity Center user, -// not just a particular application. -// -// * The documentation in this guide does not -// describe the mechanism to convert the access token into AWS Auth (“sigv4”) -// credentials for use with IAM-protected AWS service endpoints. For more -// information, see GetRoleCredentials -// (https://docs.aws.amazon.com/singlesignon/latest/PortalAPIReference/API_GetRoleCredentials.html) -// in the IAM Identity Center Portal API Reference Guide. -// -// For general information -// about IAM Identity Center, see What is IAM Identity Center? -// (https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) in the -// IAM Identity Center User Guide. +// Package ssooidc provides the API client, operations, and parameter types for +// AWS SSO OIDC. +// +// IAM Identity Center OpenID Connect (OIDC) is a web service that enables a +// client (such as CLI or a native application) to register with IAM Identity +// Center. The service also enables the client to fetch the user’s access token +// upon successful authentication and authorization with IAM Identity Center. +// +// IAM Identity Center uses the sso and identitystore API namespaces. +// +// # Considerations for Using This Guide +// +// Before you begin using this guide, we recommend that you first review the +// following important information about how the IAM Identity Center OIDC service +// works. +// +// - The IAM Identity Center OIDC service currently implements only the portions +// of the OAuth 2.0 Device Authorization Grant standard ([https://tools.ietf.org/html/rfc8628] ) that are necessary to +// enable single sign-on authentication with the CLI. +// +// - With older versions of the CLI, the service only emits OIDC access tokens, +// so to obtain a new token, users must explicitly re-authenticate. To access the +// OIDC flow that supports token refresh and doesn’t require re-authentication, +// update to the latest CLI version (1.27.10 for CLI V1 and 2.9.0 for CLI V2) with +// support for OIDC token refresh and configurable IAM Identity Center session +// durations. For more information, see [Configure Amazon Web Services access portal session duration]. +// +// - The access tokens provided by this service grant access to all Amazon Web +// Services account entitlements assigned to an IAM Identity Center user, not just +// a particular application. +// +// - The documentation in this guide does not describe the mechanism to convert +// the access token into Amazon Web Services Auth (“sigv4”) credentials for use +// with IAM-protected Amazon Web Services service endpoints. For more information, +// see [GetRoleCredentials]in the IAM Identity Center Portal API Reference Guide. +// +// For general information about IAM Identity Center, see [What is IAM Identity Center?] in the IAM Identity +// Center User Guide. +// +// [Configure Amazon Web Services access portal session duration]: https://docs.aws.amazon.com/singlesignon/latest/userguide/configure-user-session.html +// [GetRoleCredentials]: https://docs.aws.amazon.com/singlesignon/latest/PortalAPIReference/API_GetRoleCredentials.html +// [https://tools.ietf.org/html/rfc8628]: https://tools.ietf.org/html/rfc8628 +// [What is IAM Identity Center?]: https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html package ssooidc diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/endpoints.go index 35cd21f18c95..6feea0c9fec4 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/endpoints.go @@ -8,10 +8,19 @@ import ( "fmt" "github.com/aws/aws-sdk-go-v2/aws" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + "github.com/aws/aws-sdk-go-v2/internal/endpoints" + "github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn" internalendpoints "github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints" + smithyauth "github.com/aws/smithy-go/auth" + smithyendpoints "github.com/aws/smithy-go/endpoints" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/ptr" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" + "net/http" "net/url" + "os" "strings" ) @@ -39,13 +48,6 @@ func (fn EndpointResolverFunc) ResolveEndpoint(region string, options EndpointRe return fn(region, options) } -func resolveDefaultEndpointConfiguration(o *Options) { - if o.EndpointResolver != nil { - return - } - o.EndpointResolver = NewDefaultEndpointResolver() -} - // EndpointResolverFromURL returns an EndpointResolver configured using the // provided endpoint url. By default, the resolved endpoint resolver uses the // client region as signing region, and the endpoint source is set to @@ -79,6 +81,10 @@ func (*ResolveEndpoint) ID() string { func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + if !awsmiddleware.GetRequiresLegacyEndpoints(ctx) { + return next.HandleSerialize(ctx, in) + } + req, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) @@ -94,6 +100,11 @@ func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.Ser var endpoint aws.Endpoint endpoint, err = m.Resolver.ResolveEndpoint(awsmiddleware.GetRegion(ctx), eo) if err != nil { + nf := (&aws.EndpointNotFoundError{}) + if errors.As(err, &nf) { + ctx = awsmiddleware.SetRequiresLegacyEndpoints(ctx, false) + return next.HandleSerialize(ctx, in) + } return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err) } @@ -105,7 +116,7 @@ func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.Ser if len(awsmiddleware.GetSigningName(ctx)) == 0 { signingName := endpoint.SigningName if len(signingName) == 0 { - signingName = "awsssooidc" + signingName = "sso-oauth" } ctx = awsmiddleware.SetSigningName(ctx, signingName) } @@ -129,27 +140,10 @@ func removeResolveEndpointMiddleware(stack *middleware.Stack) error { type wrappedEndpointResolver struct { awsResolver aws.EndpointResolverWithOptions - resolver EndpointResolver } func (w *wrappedEndpointResolver) ResolveEndpoint(region string, options EndpointResolverOptions) (endpoint aws.Endpoint, err error) { - if w.awsResolver == nil { - goto fallback - } - endpoint, err = w.awsResolver.ResolveEndpoint(ServiceID, region, options) - if err == nil { - return endpoint, nil - } - - if nf := (&aws.EndpointNotFoundError{}); !errors.As(err, &nf) { - return endpoint, err - } - -fallback: - if w.resolver == nil { - return endpoint, fmt.Errorf("default endpoint resolver provided was nil") - } - return w.resolver.ResolveEndpoint(region, options) + return w.awsResolver.ResolveEndpoint(ServiceID, region, options) } type awsEndpointResolverAdaptor func(service, region string) (aws.Endpoint, error) @@ -160,12 +154,13 @@ func (a awsEndpointResolverAdaptor) ResolveEndpoint(service, region string, opti var _ aws.EndpointResolverWithOptions = awsEndpointResolverAdaptor(nil) -// withEndpointResolver returns an EndpointResolver that first delegates endpoint resolution to the awsResolver. -// If awsResolver returns aws.EndpointNotFoundError error, the resolver will use the the provided -// fallbackResolver for resolution. +// withEndpointResolver returns an aws.EndpointResolverWithOptions that first delegates endpoint resolution to the awsResolver. +// If awsResolver returns aws.EndpointNotFoundError error, the v1 resolver middleware will swallow the error, +// and set an appropriate context flag such that fallback will occur when EndpointResolverV2 is invoked +// via its middleware. // -// fallbackResolver must not be nil -func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptions aws.EndpointResolverWithOptions, fallbackResolver EndpointResolver) EndpointResolver { +// If another error (besides aws.EndpointNotFoundError) is returned, then that error will be propagated. +func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptions aws.EndpointResolverWithOptions) EndpointResolver { var resolver aws.EndpointResolverWithOptions if awsResolverWithOptions != nil { @@ -176,7 +171,6 @@ func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptio return &wrappedEndpointResolver{ awsResolver: resolver, - resolver: fallbackResolver, } } @@ -198,3 +192,365 @@ func finalizeClientEndpointResolverOptions(options *Options) { } } + +func resolveEndpointResolverV2(options *Options) { + if options.EndpointResolverV2 == nil { + options.EndpointResolverV2 = NewDefaultEndpointResolverV2() + } +} + +func resolveBaseEndpoint(cfg aws.Config, o *Options) { + if cfg.BaseEndpoint != nil { + o.BaseEndpoint = cfg.BaseEndpoint + } + + _, g := os.LookupEnv("AWS_ENDPOINT_URL") + _, s := os.LookupEnv("AWS_ENDPOINT_URL_SSO_OIDC") + + if g && !s { + return + } + + value, found, err := internalConfig.ResolveServiceBaseEndpoint(context.Background(), "SSO OIDC", cfg.ConfigSources) + if found && err == nil { + o.BaseEndpoint = &value + } +} + +func bindRegion(region string) *string { + if region == "" { + return nil + } + return aws.String(endpoints.MapFIPSRegion(region)) +} + +// EndpointParameters provides the parameters that influence how endpoints are +// resolved. +type EndpointParameters struct { + // The AWS region used to dispatch the request. + // + // Parameter is + // required. + // + // AWS::Region + Region *string + + // When true, use the dual-stack endpoint. If the configured endpoint does not + // support dual-stack, dispatching the request MAY return an error. + // + // Defaults to + // false if no value is provided. + // + // AWS::UseDualStack + UseDualStack *bool + + // When true, send this request to the FIPS-compliant regional endpoint. If the + // configured endpoint does not have a FIPS compliant endpoint, dispatching the + // request will return an error. + // + // Defaults to false if no value is + // provided. + // + // AWS::UseFIPS + UseFIPS *bool + + // Override the endpoint used to send this request + // + // Parameter is + // required. + // + // SDK::Endpoint + Endpoint *string +} + +// ValidateRequired validates required parameters are set. +func (p EndpointParameters) ValidateRequired() error { + if p.UseDualStack == nil { + return fmt.Errorf("parameter UseDualStack is required") + } + + if p.UseFIPS == nil { + return fmt.Errorf("parameter UseFIPS is required") + } + + return nil +} + +// WithDefaults returns a shallow copy of EndpointParameterswith default values +// applied to members where applicable. +func (p EndpointParameters) WithDefaults() EndpointParameters { + if p.UseDualStack == nil { + p.UseDualStack = ptr.Bool(false) + } + + if p.UseFIPS == nil { + p.UseFIPS = ptr.Bool(false) + } + return p +} + +type stringSlice []string + +func (s stringSlice) Get(i int) *string { + if i < 0 || i >= len(s) { + return nil + } + + v := s[i] + return &v +} + +// EndpointResolverV2 provides the interface for resolving service endpoints. +type EndpointResolverV2 interface { + // ResolveEndpoint attempts to resolve the endpoint with the provided options, + // returning the endpoint if found. Otherwise an error is returned. + ResolveEndpoint(ctx context.Context, params EndpointParameters) ( + smithyendpoints.Endpoint, error, + ) +} + +// resolver provides the implementation for resolving endpoints. +type resolver struct{} + +func NewDefaultEndpointResolverV2() EndpointResolverV2 { + return &resolver{} +} + +// ResolveEndpoint attempts to resolve the endpoint with the provided options, +// returning the endpoint if found. Otherwise an error is returned. +func (r *resolver) ResolveEndpoint( + ctx context.Context, params EndpointParameters, +) ( + endpoint smithyendpoints.Endpoint, err error, +) { + params = params.WithDefaults() + if err = params.ValidateRequired(); err != nil { + return endpoint, fmt.Errorf("endpoint parameters are not valid, %w", err) + } + _UseDualStack := *params.UseDualStack + _UseFIPS := *params.UseFIPS + + if exprVal := params.Endpoint; exprVal != nil { + _Endpoint := *exprVal + _ = _Endpoint + if _UseFIPS == true { + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: FIPS and custom endpoint are not supported") + } + if _UseDualStack == true { + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: Dualstack and custom endpoint are not supported") + } + uriString := _Endpoint + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + if exprVal := params.Region; exprVal != nil { + _Region := *exprVal + _ = _Region + if exprVal := awsrulesfn.GetPartition(_Region); exprVal != nil { + _PartitionResult := *exprVal + _ = _PartitionResult + if _UseFIPS == true { + if _UseDualStack == true { + if true == _PartitionResult.SupportsFIPS { + if true == _PartitionResult.SupportsDualStack { + uriString := func() string { + var out strings.Builder + out.WriteString("https://oidc-fips.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DualStackDnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "FIPS and DualStack are enabled, but this partition does not support one or both") + } + } + if _UseFIPS == true { + if _PartitionResult.SupportsFIPS == true { + if _PartitionResult.Name == "aws-us-gov" { + uriString := func() string { + var out strings.Builder + out.WriteString("https://oidc.") + out.WriteString(_Region) + out.WriteString(".amazonaws.com") + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + uriString := func() string { + var out strings.Builder + out.WriteString("https://oidc-fips.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "FIPS is enabled but this partition does not support FIPS") + } + if _UseDualStack == true { + if true == _PartitionResult.SupportsDualStack { + uriString := func() string { + var out strings.Builder + out.WriteString("https://oidc.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DualStackDnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "DualStack is enabled but this partition does not support DualStack") + } + uriString := func() string { + var out strings.Builder + out.WriteString("https://oidc.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("Endpoint resolution failed. Invalid operation or environment input.") + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: Missing Region") +} + +type endpointParamsBinder interface { + bindEndpointParams(*EndpointParameters) +} + +func bindEndpointParams(ctx context.Context, input interface{}, options Options) *EndpointParameters { + params := &EndpointParameters{} + + params.Region = bindRegion(options.Region) + params.UseDualStack = aws.Bool(options.EndpointOptions.UseDualStackEndpoint == aws.DualStackEndpointStateEnabled) + params.UseFIPS = aws.Bool(options.EndpointOptions.UseFIPSEndpoint == aws.FIPSEndpointStateEnabled) + params.Endpoint = options.BaseEndpoint + + if b, ok := input.(endpointParamsBinder); ok { + b.bindEndpointParams(params) + } + + return params +} + +type resolveEndpointV2Middleware struct { + options Options +} + +func (*resolveEndpointV2Middleware) ID() string { + return "ResolveEndpointV2" +} + +func (m *resolveEndpointV2Middleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "ResolveEndpoint") + defer span.End() + + if awsmiddleware.GetRequiresLegacyEndpoints(ctx) { + return next.HandleFinalize(ctx, in) + } + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.options.EndpointResolverV2 == nil { + return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil") + } + + params := bindEndpointParams(ctx, getOperationInput(ctx), m.options) + endpt, err := timeOperationMetric(ctx, "client.call.resolve_endpoint_duration", + func() (smithyendpoints.Endpoint, error) { + return m.options.EndpointResolverV2.ResolveEndpoint(ctx, *params) + }) + if err != nil { + return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err) + } + + span.SetProperty("client.call.resolved_endpoint", endpt.URI.String()) + + if endpt.URI.RawPath == "" && req.URL.RawPath != "" { + endpt.URI.RawPath = endpt.URI.Path + } + req.URL.Scheme = endpt.URI.Scheme + req.URL.Host = endpt.URI.Host + req.URL.Path = smithyhttp.JoinPath(endpt.URI.Path, req.URL.Path) + req.URL.RawPath = smithyhttp.JoinPath(endpt.URI.RawPath, req.URL.RawPath) + for k := range endpt.Headers { + req.Header.Set(k, endpt.Headers.Get(k)) + } + + rscheme := getResolvedAuthScheme(ctx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + opts, _ := smithyauth.GetAuthOptions(&endpt.Properties) + for _, o := range opts { + rscheme.SignerProperties.SetAll(&o.SignerProperties) + } + + span.End() + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/generated.json b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/generated.json index 4afe3223e27e..b2a52633ba66 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/generated.json +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/generated.json @@ -9,16 +9,22 @@ "api_client.go", "api_client_test.go", "api_op_CreateToken.go", + "api_op_CreateTokenWithIAM.go", "api_op_RegisterClient.go", "api_op_StartDeviceAuthorization.go", + "auth.go", "deserializers.go", "doc.go", "endpoints.go", + "endpoints_config_test.go", + "endpoints_test.go", "generated.json", "internal/endpoints/endpoints.go", "internal/endpoints/endpoints_test.go", + "options.go", "protocol_test.go", "serializers.go", + "snapshot_test.go", "types/errors.go", "types/types.go", "validators.go" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go index a32a60138357..ba33b37ea5ff 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go @@ -3,4 +3,4 @@ package ssooidc // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.13.6" +const goModuleVersion = "1.27.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints/endpoints.go index 090c04b3d01f..b4c61ebad933 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints/endpoints.go @@ -89,13 +89,17 @@ var partitionRegexp = struct { AwsCn *regexp.Regexp AwsIso *regexp.Regexp AwsIsoB *regexp.Regexp + AwsIsoE *regexp.Regexp + AwsIsoF *regexp.Regexp AwsUsGov *regexp.Regexp }{ - Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$"), + Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$"), AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"), AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"), AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"), + AwsIsoE: regexp.MustCompile("^eu\\-isoe\\-\\w+\\-\\d+$"), + AwsIsoF: regexp.MustCompile("^us\\-isof\\-\\w+\\-\\d+$"), AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"), } @@ -135,6 +139,14 @@ var defaultPartitions = endpoints.Partitions{ RegionRegex: partitionRegexp.Aws, IsRegionalized: true, Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "af-south-1", + }: endpoints.Endpoint{ + Hostname: "oidc.af-south-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "af-south-1", + }, + }, endpoints.EndpointKey{ Region: "ap-east-1", }: endpoints.Endpoint{ @@ -175,6 +187,14 @@ var defaultPartitions = endpoints.Partitions{ Region: "ap-south-1", }, }, + endpoints.EndpointKey{ + Region: "ap-south-2", + }: endpoints.Endpoint{ + Hostname: "oidc.ap-south-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-south-2", + }, + }, endpoints.EndpointKey{ Region: "ap-southeast-1", }: endpoints.Endpoint{ @@ -191,6 +211,22 @@ var defaultPartitions = endpoints.Partitions{ Region: "ap-southeast-2", }, }, + endpoints.EndpointKey{ + Region: "ap-southeast-3", + }: endpoints.Endpoint{ + Hostname: "oidc.ap-southeast-3.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-southeast-3", + }, + }, + endpoints.EndpointKey{ + Region: "ap-southeast-4", + }: endpoints.Endpoint{ + Hostname: "oidc.ap-southeast-4.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-southeast-4", + }, + }, endpoints.EndpointKey{ Region: "ca-central-1", }: endpoints.Endpoint{ @@ -199,6 +235,14 @@ var defaultPartitions = endpoints.Partitions{ Region: "ca-central-1", }, }, + endpoints.EndpointKey{ + Region: "ca-west-1", + }: endpoints.Endpoint{ + Hostname: "oidc.ca-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ca-west-1", + }, + }, endpoints.EndpointKey{ Region: "eu-central-1", }: endpoints.Endpoint{ @@ -207,6 +251,14 @@ var defaultPartitions = endpoints.Partitions{ Region: "eu-central-1", }, }, + endpoints.EndpointKey{ + Region: "eu-central-2", + }: endpoints.Endpoint{ + Hostname: "oidc.eu-central-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-central-2", + }, + }, endpoints.EndpointKey{ Region: "eu-north-1", }: endpoints.Endpoint{ @@ -223,6 +275,14 @@ var defaultPartitions = endpoints.Partitions{ Region: "eu-south-1", }, }, + endpoints.EndpointKey{ + Region: "eu-south-2", + }: endpoints.Endpoint{ + Hostname: "oidc.eu-south-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-south-2", + }, + }, endpoints.EndpointKey{ Region: "eu-west-1", }: endpoints.Endpoint{ @@ -247,6 +307,22 @@ var defaultPartitions = endpoints.Partitions{ Region: "eu-west-3", }, }, + endpoints.EndpointKey{ + Region: "il-central-1", + }: endpoints.Endpoint{ + Hostname: "oidc.il-central-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "il-central-1", + }, + }, + endpoints.EndpointKey{ + Region: "me-central-1", + }: endpoints.Endpoint{ + Hostname: "oidc.me-central-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "me-central-1", + }, + }, endpoints.EndpointKey{ Region: "me-south-1", }: endpoints.Endpoint{ @@ -279,6 +355,14 @@ var defaultPartitions = endpoints.Partitions{ Region: "us-east-2", }, }, + endpoints.EndpointKey{ + Region: "us-west-1", + }: endpoints.Endpoint{ + Hostname: "oidc.us-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-west-1", + }, + }, endpoints.EndpointKey{ Region: "us-west-2", }: endpoints.Endpoint{ @@ -323,6 +407,24 @@ var defaultPartitions = endpoints.Partitions{ }, RegionRegex: partitionRegexp.AwsCn, IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "cn-north-1", + }: endpoints.Endpoint{ + Hostname: "oidc.cn-north-1.amazonaws.com.cn", + CredentialScope: endpoints.CredentialScope{ + Region: "cn-north-1", + }, + }, + endpoints.EndpointKey{ + Region: "cn-northwest-1", + }: endpoints.Endpoint{ + Hostname: "oidc.cn-northwest-1.amazonaws.com.cn", + CredentialScope: endpoints.CredentialScope{ + Region: "cn-northwest-1", + }, + }, + }, }, { ID: "aws-iso", @@ -366,6 +468,48 @@ var defaultPartitions = endpoints.Partitions{ RegionRegex: partitionRegexp.AwsIsoB, IsRegionalized: true, }, + { + ID: "aws-iso-e", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "oidc-fips.{region}.cloud.adc-e.uk", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "oidc.{region}.cloud.adc-e.uk", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoE, + IsRegionalized: true, + }, + { + ID: "aws-iso-f", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "oidc-fips.{region}.csp.hci.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "oidc.{region}.csp.hci.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoF, + IsRegionalized: true, + }, { ID: "aws-us-gov", Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/options.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/options.go new file mode 100644 index 000000000000..55dd80d0e055 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/options.go @@ -0,0 +1,232 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ssooidc + +import ( + "context" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy" + smithyauth "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" + "net/http" +) + +type HTTPClient interface { + Do(*http.Request) (*http.Response, error) +} + +type Options struct { + // Set of options to modify how an operation is invoked. These apply to all + // operations invoked for this client. Use functional options on operation call to + // modify this list for per operation behavior. + APIOptions []func(*middleware.Stack) error + + // The optional application specific identifier appended to the User-Agent header. + AppID string + + // This endpoint will be given as input to an EndpointResolverV2. It is used for + // providing a custom base endpoint that is subject to modifications by the + // processing EndpointResolverV2. + BaseEndpoint *string + + // Configures the events that will be sent to the configured logger. + ClientLogMode aws.ClientLogMode + + // The credentials object to use when signing requests. + Credentials aws.CredentialsProvider + + // The configuration DefaultsMode that the SDK should use when constructing the + // clients initial default settings. + DefaultsMode aws.DefaultsMode + + // The endpoint options to be used when attempting to resolve an endpoint. + EndpointOptions EndpointResolverOptions + + // The service endpoint resolver. + // + // Deprecated: Deprecated: EndpointResolver and WithEndpointResolver. Providing a + // value for this field will likely prevent you from using any endpoint-related + // service features released after the introduction of EndpointResolverV2 and + // BaseEndpoint. + // + // To migrate an EndpointResolver implementation that uses a custom endpoint, set + // the client option BaseEndpoint instead. + EndpointResolver EndpointResolver + + // Resolves the endpoint used for a particular service operation. This should be + // used over the deprecated EndpointResolver. + EndpointResolverV2 EndpointResolverV2 + + // Signature Version 4 (SigV4) Signer + HTTPSignerV4 HTTPSignerV4 + + // The logger writer interface to write logging messages to. + Logger logging.Logger + + // The client meter provider. + MeterProvider metrics.MeterProvider + + // The region to send requests to. (Required) + Region string + + // RetryMaxAttempts specifies the maximum number attempts an API client will call + // an operation that fails with a retryable error. A value of 0 is ignored, and + // will not be used to configure the API client created default retryer, or modify + // per operation call's retry max attempts. + // + // If specified in an operation call's functional options with a value that is + // different than the constructed client's Options, the Client's Retryer will be + // wrapped to use the operation's specific RetryMaxAttempts value. + RetryMaxAttempts int + + // RetryMode specifies the retry mode the API client will be created with, if + // Retryer option is not also specified. + // + // When creating a new API Clients this member will only be used if the Retryer + // Options member is nil. This value will be ignored if Retryer is not nil. + // + // Currently does not support per operation call overrides, may in the future. + RetryMode aws.RetryMode + + // Retryer guides how HTTP requests should be retried in case of recoverable + // failures. When nil the API client will use a default retryer. The kind of + // default retry created by the API client can be changed with the RetryMode + // option. + Retryer aws.Retryer + + // The RuntimeEnvironment configuration, only populated if the DefaultsMode is set + // to DefaultsModeAuto and is initialized using config.LoadDefaultConfig . You + // should not populate this structure programmatically, or rely on the values here + // within your applications. + RuntimeEnvironment aws.RuntimeEnvironment + + // The client tracer provider. + TracerProvider tracing.TracerProvider + + // The initial DefaultsMode used when the client options were constructed. If the + // DefaultsMode was set to aws.DefaultsModeAuto this will store what the resolved + // value was at that point in time. + // + // Currently does not support per operation call overrides, may in the future. + resolvedDefaultsMode aws.DefaultsMode + + // The HTTP client to invoke API calls with. Defaults to client's default HTTP + // implementation if nil. + HTTPClient HTTPClient + + // The auth scheme resolver which determines how to authenticate for each + // operation. + AuthSchemeResolver AuthSchemeResolver + + // The list of auth schemes supported by the client. + AuthSchemes []smithyhttp.AuthScheme +} + +// Copy creates a clone where the APIOptions list is deep copied. +func (o Options) Copy() Options { + to := o + to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) + copy(to.APIOptions, o.APIOptions) + + return to +} + +func (o Options) GetIdentityResolver(schemeID string) smithyauth.IdentityResolver { + if schemeID == "aws.auth#sigv4" { + return getSigV4IdentityResolver(o) + } + if schemeID == "smithy.api#noAuth" { + return &smithyauth.AnonymousIdentityResolver{} + } + return nil +} + +// WithAPIOptions returns a functional option for setting the Client's APIOptions +// option. +func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) { + return func(o *Options) { + o.APIOptions = append(o.APIOptions, optFns...) + } +} + +// Deprecated: EndpointResolver and WithEndpointResolver. Providing a value for +// this field will likely prevent you from using any endpoint-related service +// features released after the introduction of EndpointResolverV2 and BaseEndpoint. +// +// To migrate an EndpointResolver implementation that uses a custom endpoint, set +// the client option BaseEndpoint instead. +func WithEndpointResolver(v EndpointResolver) func(*Options) { + return func(o *Options) { + o.EndpointResolver = v + } +} + +// WithEndpointResolverV2 returns a functional option for setting the Client's +// EndpointResolverV2 option. +func WithEndpointResolverV2(v EndpointResolverV2) func(*Options) { + return func(o *Options) { + o.EndpointResolverV2 = v + } +} + +func getSigV4IdentityResolver(o Options) smithyauth.IdentityResolver { + if o.Credentials != nil { + return &internalauthsmithy.CredentialsProviderAdapter{Provider: o.Credentials} + } + return nil +} + +// WithSigV4SigningName applies an override to the authentication workflow to +// use the given signing name for SigV4-authenticated operations. +// +// This is an advanced setting. The value here is FINAL, taking precedence over +// the resolved signing name from both auth scheme resolution and endpoint +// resolution. +func WithSigV4SigningName(name string) func(*Options) { + fn := func(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, + ) { + return next.HandleInitialize(awsmiddleware.SetSigningName(ctx, name), in) + } + return func(o *Options) { + o.APIOptions = append(o.APIOptions, func(s *middleware.Stack) error { + return s.Initialize.Add( + middleware.InitializeMiddlewareFunc("withSigV4SigningName", fn), + middleware.Before, + ) + }) + } +} + +// WithSigV4SigningRegion applies an override to the authentication workflow to +// use the given signing region for SigV4-authenticated operations. +// +// This is an advanced setting. The value here is FINAL, taking precedence over +// the resolved signing region from both auth scheme resolution and endpoint +// resolution. +func WithSigV4SigningRegion(region string) func(*Options) { + fn := func(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, + ) { + return next.HandleInitialize(awsmiddleware.SetSigningRegion(ctx, region), in) + } + return func(o *Options) { + o.APIOptions = append(o.APIOptions, func(s *middleware.Stack) error { + return s.Initialize.Add( + middleware.InitializeMiddlewareFunc("withSigV4SigningRegion", fn), + middleware.Before, + ) + }) + } +} + +func ignoreAnonymousAuth(options *Options) { + if aws.IsCredentialsProvider(options.Credentials, (*aws.AnonymousCredentials)(nil)) { + options.Credentials = nil + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/serializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/serializers.go index a8cfd7b46c57..1ad103d1ed88 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/serializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/serializers.go @@ -10,6 +10,7 @@ import ( "github.com/aws/smithy-go/encoding/httpbinding" smithyjson "github.com/aws/smithy-go/encoding/json" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" ) @@ -23,6 +24,10 @@ func (*awsRestjson1_serializeOpCreateToken) ID() string { func (m *awsRestjson1_serializeOpCreateToken) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -38,7 +43,14 @@ func (m *awsRestjson1_serializeOpCreateToken) HandleSerialize(ctx context.Contex request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "POST" - restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + var restEncoder *httpbinding.Encoder + if request.URL.RawPath == "" { + restEncoder, err = httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + } else { + request.URL.RawPath = smithyhttp.JoinPath(request.URL.RawPath, opPath) + restEncoder, err = httpbinding.NewEncoderWithRawPath(request.URL.Path, request.URL.RawPath, request.URL.RawQuery, request.Header) + } + if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -59,6 +71,8 @@ func (m *awsRestjson1_serializeOpCreateToken) HandleSerialize(ctx context.Contex } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } func awsRestjson1_serializeOpHttpBindingsCreateTokenInput(v *CreateTokenInput, encoder *httpbinding.Encoder) error { @@ -88,6 +102,11 @@ func awsRestjson1_serializeOpDocumentCreateTokenInput(v *CreateTokenInput, value ok.String(*v.Code) } + if v.CodeVerifier != nil { + ok := object.Key("codeVerifier") + ok.String(*v.CodeVerifier) + } + if v.DeviceCode != nil { ok := object.Key("deviceCode") ok.String(*v.DeviceCode) @@ -118,6 +137,139 @@ func awsRestjson1_serializeOpDocumentCreateTokenInput(v *CreateTokenInput, value return nil } +type awsRestjson1_serializeOpCreateTokenWithIAM struct { +} + +func (*awsRestjson1_serializeOpCreateTokenWithIAM) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpCreateTokenWithIAM) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateTokenWithIAMInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/token?aws_iam=t") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + var restEncoder *httpbinding.Encoder + if request.URL.RawPath == "" { + restEncoder, err = httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + } else { + request.URL.RawPath = smithyhttp.JoinPath(request.URL.RawPath, opPath) + restEncoder, err = httpbinding.NewEncoderWithRawPath(request.URL.Path, request.URL.RawPath, request.URL.RawQuery, request.Header) + } + + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateTokenWithIAMInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsCreateTokenWithIAMInput(v *CreateTokenWithIAMInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentCreateTokenWithIAMInput(v *CreateTokenWithIAMInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Assertion != nil { + ok := object.Key("assertion") + ok.String(*v.Assertion) + } + + if v.ClientId != nil { + ok := object.Key("clientId") + ok.String(*v.ClientId) + } + + if v.Code != nil { + ok := object.Key("code") + ok.String(*v.Code) + } + + if v.CodeVerifier != nil { + ok := object.Key("codeVerifier") + ok.String(*v.CodeVerifier) + } + + if v.GrantType != nil { + ok := object.Key("grantType") + ok.String(*v.GrantType) + } + + if v.RedirectUri != nil { + ok := object.Key("redirectUri") + ok.String(*v.RedirectUri) + } + + if v.RefreshToken != nil { + ok := object.Key("refreshToken") + ok.String(*v.RefreshToken) + } + + if v.RequestedTokenType != nil { + ok := object.Key("requestedTokenType") + ok.String(*v.RequestedTokenType) + } + + if v.Scope != nil { + ok := object.Key("scope") + if err := awsRestjson1_serializeDocumentScopes(v.Scope, ok); err != nil { + return err + } + } + + if v.SubjectToken != nil { + ok := object.Key("subjectToken") + ok.String(*v.SubjectToken) + } + + if v.SubjectTokenType != nil { + ok := object.Key("subjectTokenType") + ok.String(*v.SubjectTokenType) + } + + return nil +} + type awsRestjson1_serializeOpRegisterClient struct { } @@ -128,6 +280,10 @@ func (*awsRestjson1_serializeOpRegisterClient) ID() string { func (m *awsRestjson1_serializeOpRegisterClient) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -143,7 +299,14 @@ func (m *awsRestjson1_serializeOpRegisterClient) HandleSerialize(ctx context.Con request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "POST" - restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + var restEncoder *httpbinding.Encoder + if request.URL.RawPath == "" { + restEncoder, err = httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + } else { + request.URL.RawPath = smithyhttp.JoinPath(request.URL.RawPath, opPath) + restEncoder, err = httpbinding.NewEncoderWithRawPath(request.URL.Path, request.URL.RawPath, request.URL.RawQuery, request.Header) + } + if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -164,6 +327,8 @@ func (m *awsRestjson1_serializeOpRegisterClient) HandleSerialize(ctx context.Con } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } func awsRestjson1_serializeOpHttpBindingsRegisterClientInput(v *RegisterClientInput, encoder *httpbinding.Encoder) error { @@ -188,6 +353,30 @@ func awsRestjson1_serializeOpDocumentRegisterClientInput(v *RegisterClientInput, ok.String(*v.ClientType) } + if v.EntitledApplicationArn != nil { + ok := object.Key("entitledApplicationArn") + ok.String(*v.EntitledApplicationArn) + } + + if v.GrantTypes != nil { + ok := object.Key("grantTypes") + if err := awsRestjson1_serializeDocumentGrantTypes(v.GrantTypes, ok); err != nil { + return err + } + } + + if v.IssuerUrl != nil { + ok := object.Key("issuerUrl") + ok.String(*v.IssuerUrl) + } + + if v.RedirectUris != nil { + ok := object.Key("redirectUris") + if err := awsRestjson1_serializeDocumentRedirectUris(v.RedirectUris, ok); err != nil { + return err + } + } + if v.Scopes != nil { ok := object.Key("scopes") if err := awsRestjson1_serializeDocumentScopes(v.Scopes, ok); err != nil { @@ -208,6 +397,10 @@ func (*awsRestjson1_serializeOpStartDeviceAuthorization) ID() string { func (m *awsRestjson1_serializeOpStartDeviceAuthorization) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -223,7 +416,14 @@ func (m *awsRestjson1_serializeOpStartDeviceAuthorization) HandleSerialize(ctx c request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "POST" - restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + var restEncoder *httpbinding.Encoder + if request.URL.RawPath == "" { + restEncoder, err = httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + } else { + request.URL.RawPath = smithyhttp.JoinPath(request.URL.RawPath, opPath) + restEncoder, err = httpbinding.NewEncoderWithRawPath(request.URL.Path, request.URL.RawPath, request.URL.RawQuery, request.Header) + } + if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -244,6 +444,8 @@ func (m *awsRestjson1_serializeOpStartDeviceAuthorization) HandleSerialize(ctx c } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } func awsRestjson1_serializeOpHttpBindingsStartDeviceAuthorizationInput(v *StartDeviceAuthorizationInput, encoder *httpbinding.Encoder) error { @@ -276,6 +478,28 @@ func awsRestjson1_serializeOpDocumentStartDeviceAuthorizationInput(v *StartDevic return nil } +func awsRestjson1_serializeDocumentGrantTypes(v []string, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(v[i]) + } + return nil +} + +func awsRestjson1_serializeDocumentRedirectUris(v []string, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(v[i]) + } + return nil +} + func awsRestjson1_serializeDocumentScopes(v []string, value smithyjson.Value) error { array := value.Array() defer array.Close() diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/types/errors.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/types/errors.go index beef5aaa37a1..2cfe7b48fed6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/types/errors.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/types/errors.go @@ -11,6 +11,8 @@ import ( type AccessDeniedException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -26,14 +28,21 @@ func (e *AccessDeniedException) ErrorMessage() string { } return *e.Message } -func (e *AccessDeniedException) ErrorCode() string { return "AccessDeniedException" } +func (e *AccessDeniedException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "AccessDeniedException" + } + return *e.ErrorCodeOverride +} func (e *AccessDeniedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// Indicates that a request to authorize a client with an access user session token -// is pending. +// Indicates that a request to authorize a client with an access user session +// token is pending. type AuthorizationPendingException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -49,7 +58,12 @@ func (e *AuthorizationPendingException) ErrorMessage() string { } return *e.Message } -func (e *AuthorizationPendingException) ErrorCode() string { return "AuthorizationPendingException" } +func (e *AuthorizationPendingException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "AuthorizationPendingException" + } + return *e.ErrorCodeOverride +} func (e *AuthorizationPendingException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // Indicates that the token issued by the service is expired and is no longer @@ -57,6 +71,8 @@ func (e *AuthorizationPendingException) ErrorFault() smithy.ErrorFault { return type ExpiredTokenException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -72,7 +88,12 @@ func (e *ExpiredTokenException) ErrorMessage() string { } return *e.Message } -func (e *ExpiredTokenException) ErrorCode() string { return "ExpiredTokenException" } +func (e *ExpiredTokenException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ExpiredTokenException" + } + return *e.ErrorCodeOverride +} func (e *ExpiredTokenException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // Indicates that an error from the service occurred while trying to process a @@ -80,6 +101,8 @@ func (e *ExpiredTokenException) ErrorFault() smithy.ErrorFault { return smithy.F type InternalServerException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -95,15 +118,22 @@ func (e *InternalServerException) ErrorMessage() string { } return *e.Message } -func (e *InternalServerException) ErrorCode() string { return "InternalServerException" } +func (e *InternalServerException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InternalServerException" + } + return *e.ErrorCodeOverride +} func (e *InternalServerException) ErrorFault() smithy.ErrorFault { return smithy.FaultServer } // Indicates that the clientId or clientSecret in the request is invalid. For // example, this can occur when a client sends an incorrect clientId or an expired -// clientSecret. +// clientSecret . type InvalidClientException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -119,14 +149,21 @@ func (e *InvalidClientException) ErrorMessage() string { } return *e.Message } -func (e *InvalidClientException) ErrorCode() string { return "InvalidClientException" } +func (e *InvalidClientException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidClientException" + } + return *e.ErrorCodeOverride +} func (e *InvalidClientException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// Indicates that the client information sent in the request during registration is -// invalid. +// Indicates that the client information sent in the request during registration +// is invalid. type InvalidClientMetadataException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -142,14 +179,21 @@ func (e *InvalidClientMetadataException) ErrorMessage() string { } return *e.Message } -func (e *InvalidClientMetadataException) ErrorCode() string { return "InvalidClientMetadataException" } +func (e *InvalidClientMetadataException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidClientMetadataException" + } + return *e.ErrorCodeOverride +} func (e *InvalidClientMetadataException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // Indicates that a request contains an invalid grant. This can occur if a client -// makes a CreateToken request with an invalid grant type. +// makes a CreateTokenrequest with an invalid grant type. type InvalidGrantException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -165,14 +209,51 @@ func (e *InvalidGrantException) ErrorMessage() string { } return *e.Message } -func (e *InvalidGrantException) ErrorCode() string { return "InvalidGrantException" } +func (e *InvalidGrantException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidGrantException" + } + return *e.ErrorCodeOverride +} func (e *InvalidGrantException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } +// Indicates that one or more redirect URI in the request is not supported for +// this operation. +type InvalidRedirectUriException struct { + Message *string + + ErrorCodeOverride *string + + Error_ *string + Error_description *string + + noSmithyDocumentSerde +} + +func (e *InvalidRedirectUriException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *InvalidRedirectUriException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *InvalidRedirectUriException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidRedirectUriException" + } + return *e.ErrorCodeOverride +} +func (e *InvalidRedirectUriException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + // Indicates that something is wrong with the input to the request. For example, a // required parameter might be missing or out of range. type InvalidRequestException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -188,13 +269,52 @@ func (e *InvalidRequestException) ErrorMessage() string { } return *e.Message } -func (e *InvalidRequestException) ErrorCode() string { return "InvalidRequestException" } +func (e *InvalidRequestException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidRequestException" + } + return *e.ErrorCodeOverride +} func (e *InvalidRequestException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } +// Indicates that a token provided as input to the request was issued by and is +// only usable by calling IAM Identity Center endpoints in another region. +type InvalidRequestRegionException struct { + Message *string + + ErrorCodeOverride *string + + Error_ *string + Error_description *string + Endpoint *string + Region *string + + noSmithyDocumentSerde +} + +func (e *InvalidRequestRegionException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *InvalidRequestRegionException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *InvalidRequestRegionException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidRequestRegionException" + } + return *e.ErrorCodeOverride +} +func (e *InvalidRequestRegionException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + // Indicates that the scope provided in the request is invalid. type InvalidScopeException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -210,7 +330,12 @@ func (e *InvalidScopeException) ErrorMessage() string { } return *e.Message } -func (e *InvalidScopeException) ErrorCode() string { return "InvalidScopeException" } +func (e *InvalidScopeException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidScopeException" + } + return *e.ErrorCodeOverride +} func (e *InvalidScopeException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // Indicates that the client is making the request too frequently and is more than @@ -218,6 +343,8 @@ func (e *InvalidScopeException) ErrorFault() smithy.ErrorFault { return smithy.F type SlowDownException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -233,7 +360,12 @@ func (e *SlowDownException) ErrorMessage() string { } return *e.Message } -func (e *SlowDownException) ErrorCode() string { return "SlowDownException" } +func (e *SlowDownException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "SlowDownException" + } + return *e.ErrorCodeOverride +} func (e *SlowDownException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // Indicates that the client is not currently authorized to make the request. This @@ -241,6 +373,8 @@ func (e *SlowDownException) ErrorFault() smithy.ErrorFault { return smithy.Fault type UnauthorizedClientException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -256,13 +390,20 @@ func (e *UnauthorizedClientException) ErrorMessage() string { } return *e.Message } -func (e *UnauthorizedClientException) ErrorCode() string { return "UnauthorizedClientException" } +func (e *UnauthorizedClientException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "UnauthorizedClientException" + } + return *e.ErrorCodeOverride +} func (e *UnauthorizedClientException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // Indicates that the grant type in the request is not supported by the service. type UnsupportedGrantTypeException struct { Message *string + ErrorCodeOverride *string + Error_ *string Error_description *string @@ -278,5 +419,10 @@ func (e *UnsupportedGrantTypeException) ErrorMessage() string { } return *e.Message } -func (e *UnsupportedGrantTypeException) ErrorCode() string { return "UnsupportedGrantTypeException" } +func (e *UnsupportedGrantTypeException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "UnsupportedGrantTypeException" + } + return *e.ErrorCodeOverride +} func (e *UnsupportedGrantTypeException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/validators.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/validators.go index 5a309484e016..9c17e4c8e184 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/validators.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/validators.go @@ -29,6 +29,26 @@ func (m *validateOpCreateToken) HandleInitialize(ctx context.Context, in middlew return next.HandleInitialize(ctx, in) } +type validateOpCreateTokenWithIAM struct { +} + +func (*validateOpCreateTokenWithIAM) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateTokenWithIAM) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateTokenWithIAMInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateTokenWithIAMInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpRegisterClient struct { } @@ -73,6 +93,10 @@ func addOpCreateTokenValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpCreateToken{}, middleware.After) } +func addOpCreateTokenWithIAMValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateTokenWithIAM{}, middleware.After) +} + func addOpRegisterClientValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpRegisterClient{}, middleware.After) } @@ -102,6 +126,24 @@ func validateOpCreateTokenInput(v *CreateTokenInput) error { } } +func validateOpCreateTokenWithIAMInput(v *CreateTokenWithIAMInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateTokenWithIAMInput"} + if v.ClientId == nil { + invalidParams.Add(smithy.NewErrParamRequired("ClientId")) + } + if v.GrantType == nil { + invalidParams.Add(smithy.NewErrParamRequired("GrantType")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpRegisterClientInput(v *RegisterClientInput) error { if v == nil { return nil diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md index 6c66c2137526..82ff30c3114d 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md @@ -1,3 +1,346 @@ +# v1.31.0 (2024-09-20) + +* **Feature**: Add tracing and metrics support to service clients. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.8 (2024-09-17) + +* **Bug Fix**: **BREAKFIX**: Only generate AccountIDEndpointMode config for services that use it. This is a compiler break, but removes no actual functionality, as no services currently use the account ID in endpoint resolution. + +# v1.30.7 (2024-09-04) + +* No change notes available for this release. + +# v1.30.6 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.5 (2024-08-22) + +* No change notes available for this release. + +# v1.30.4 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.3 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.2 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.1 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.0 (2024-06-26) + +* **Feature**: Support list-of-string endpoint parameter. + +# v1.29.1 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.29.0 (2024-06-18) + +* **Feature**: Track usage of various AWS SDK features in user-agent string. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.13 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.12 (2024-06-07) + +* **Bug Fix**: Add clock skew correction on all service clients +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.11 (2024-06-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.10 (2024-05-23) + +* No change notes available for this release. + +# v1.28.9 (2024-05-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.8 (2024-05-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.7 (2024-05-08) + +* **Bug Fix**: GoDoc improvement + +# v1.28.6 (2024-03-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.5 (2024-03-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.4 (2024-03-07) + +* **Bug Fix**: Remove dependency on go-cmp. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.3 (2024-03-05) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.2 (2024-03-04) + +* **Bug Fix**: Update internal/presigned-url dependency for corrected API name. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.1 (2024-02-23) + +* **Bug Fix**: Move all common, SDK-side middleware stack ops into the service client module to prevent cross-module compatibility issues in the future. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.0 (2024-02-22) + +* **Feature**: Add middleware stack snapshot tests. + +# v1.27.2 (2024-02-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.1 (2024-02-20) + +* **Bug Fix**: When sourcing values for a service's `EndpointParameters`, the lack of a configured region (i.e. `options.Region == ""`) will now translate to a `nil` value for `EndpointParameters.Region` instead of a pointer to the empty string `""`. This will result in a much more explicit error when calling an operation instead of an obscure hostname lookup failure. + +# v1.27.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.7 (2024-01-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.6 (2023-12-20) + +* No change notes available for this release. + +# v1.26.5 (2023-12-08) + +* **Bug Fix**: Reinstate presence of default Retryer in functional options, but still respect max attempts set therein. + +# v1.26.4 (2023-12-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.3 (2023-12-06) + +* **Bug Fix**: Restore pre-refactor auth behavior where all operations could technically be performed anonymously. +* **Bug Fix**: STS `AssumeRoleWithSAML` and `AssumeRoleWithWebIdentity` would incorrectly attempt to use SigV4 authentication. + +# v1.26.2 (2023-12-01) + +* **Bug Fix**: Correct wrapping of errors in authentication workflow. +* **Bug Fix**: Correctly recognize cache-wrapped instances of AnonymousCredentials at client construction. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.1 (2023-11-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.0 (2023-11-29) + +* **Feature**: Expose Options() accessor on service clients. +* **Documentation**: Documentation updates for AWS Security Token Service. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.6 (2023-11-28.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.5 (2023-11-28) + +* **Bug Fix**: Respect setting RetryMaxAttempts in functional options at client construction. + +# v1.25.4 (2023-11-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.3 (2023-11-17) + +* **Documentation**: API updates for the AWS Security Token Service + +# v1.25.2 (2023-11-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.1 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.0 (2023-11-01) + +* **Feature**: Adds support for configured endpoints via environment variables and the AWS shared configuration file. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.2 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.1 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.0 (2023-10-02) + +* **Feature**: STS API updates for assumeRole + +# v1.22.0 (2023-09-18) + +* **Announcement**: [BREAKFIX] Change in MaxResults datatype from value to pointer type in cognito-sync service. +* **Feature**: Adds several endpoint ruleset changes across all models: smaller rulesets, removed non-unique regional endpoints, fixes FIPS and DualStack endpoints, and make region not required in SDK::Endpoint. Additional breakfix to cognito-sync field. + +# v1.21.5 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.4 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.3 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.2 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.21.1 (2023-08-01) + +* No change notes available for this release. + +# v1.21.0 (2023-07-31) + +* **Feature**: Adds support for smithy-modeled endpoint resolution. A new rules-based endpoint resolution will be added to the SDK which will supercede and deprecate existing endpoint resolution. Specifically, EndpointResolver will be deprecated while BaseEndpoint and EndpointResolverV2 will take its place. For more information, please see the Endpoints section in our Developer Guide. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.1 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.0 (2023-07-25) + +* **Feature**: API updates for the AWS Security Token Service + +# v1.19.3 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.19.2 (2023-06-15) + +* No change notes available for this release. + +# v1.19.1 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.19.0 (2023-05-08) + +* **Feature**: Documentation updates for AWS Security Token Service. + +# v1.18.11 (2023-05-04) + +* No change notes available for this release. + +# v1.18.10 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.9 (2023-04-10) + +* No change notes available for this release. + +# v1.18.8 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.7 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.6 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.5 (2023-02-22) + +* **Bug Fix**: Prevent nil pointer dereference when retrieving error codes. + +# v1.18.4 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.3 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions +* **Dependency Update**: Upgrade smithy to 1.27.2 and correct empty query list serialization. + +# v1.18.2 (2023-01-25) + +* **Documentation**: Doc only change to update wording in a key topic + +# v1.18.1 (2023-01-23) + +* No change notes available for this release. + +# v1.18.0 (2023-01-05) + +* **Feature**: Add `ErrorCodeOverride` field to all error structs (aws/smithy-go#401). + +# v1.17.7 (2022-12-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.6 (2022-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.5 (2022-11-22) + +* No change notes available for this release. + +# v1.17.4 (2022-11-17) + +* **Documentation**: Documentation updates for AWS Security Token Service. + +# v1.17.3 (2022-11-16) + +* No change notes available for this release. + +# v1.17.2 (2022-11-10) + +* No change notes available for this release. + +# v1.17.1 (2022-10-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.0 (2022-10-21) + +* **Feature**: Add presign functionality for sts:AssumeRole operation +* **Dependency Update**: Updated to the latest SDK module versions + # v1.16.19 (2022-09-20) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go index 3041fc467e74..0df1bddf7415 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go @@ -4,6 +4,8 @@ package sts import ( "context" + "errors" + "fmt" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/aws/defaults" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" @@ -11,165 +13,236 @@ import ( "github.com/aws/aws-sdk-go-v2/aws/retry" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" + internalauth "github.com/aws/aws-sdk-go-v2/internal/auth" + internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy" internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + internalmiddleware "github.com/aws/aws-sdk-go-v2/internal/middleware" + acceptencodingcust "github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding" presignedurlcust "github.com/aws/aws-sdk-go-v2/service/internal/presigned-url" smithy "github.com/aws/smithy-go" + smithyauth "github.com/aws/smithy-go/auth" smithydocument "github.com/aws/smithy-go/document" "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/metrics" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" "net" "net/http" + "sync/atomic" "time" ) const ServiceID = "STS" const ServiceAPIVersion = "2011-06-15" -// Client provides the API client to make operations call for AWS Security Token -// Service. -type Client struct { - options Options +type operationMetrics struct { + Duration metrics.Float64Histogram + SerializeDuration metrics.Float64Histogram + ResolveIdentityDuration metrics.Float64Histogram + ResolveEndpointDuration metrics.Float64Histogram + SignRequestDuration metrics.Float64Histogram + DeserializeDuration metrics.Float64Histogram } -// New returns an initialized Client based on the functional options. Provide -// additional functional options to further configure the behavior of the client, -// such as changing the client's endpoint or adding custom middleware behavior. -func New(options Options, optFns ...func(*Options)) *Client { - options = options.Copy() +func (m *operationMetrics) histogramFor(name string) metrics.Float64Histogram { + switch name { + case "client.call.duration": + return m.Duration + case "client.call.serialization_duration": + return m.SerializeDuration + case "client.call.resolve_identity_duration": + return m.ResolveIdentityDuration + case "client.call.resolve_endpoint_duration": + return m.ResolveEndpointDuration + case "client.call.signing_duration": + return m.SignRequestDuration + case "client.call.deserialization_duration": + return m.DeserializeDuration + default: + panic("unrecognized operation metric") + } +} - resolveDefaultLogger(&options) +func timeOperationMetric[T any]( + ctx context.Context, metric string, fn func() (T, error), + opts ...metrics.RecordMetricOption, +) (T, error) { + instr := getOperationMetrics(ctx).histogramFor(metric) + opts = append([]metrics.RecordMetricOption{withOperationMetadata(ctx)}, opts...) - setResolvedDefaultsMode(&options) + start := time.Now() + v, err := fn() + end := time.Now() - resolveRetryer(&options) + elapsed := end.Sub(start) + instr.Record(ctx, float64(elapsed)/1e9, opts...) + return v, err +} - resolveHTTPClient(&options) +func startMetricTimer(ctx context.Context, metric string, opts ...metrics.RecordMetricOption) func() { + instr := getOperationMetrics(ctx).histogramFor(metric) + opts = append([]metrics.RecordMetricOption{withOperationMetadata(ctx)}, opts...) - resolveHTTPSignerV4(&options) + var ended bool + start := time.Now() + return func() { + if ended { + return + } + ended = true - resolveDefaultEndpointConfiguration(&options) + end := time.Now() - for _, fn := range optFns { - fn(&options) + elapsed := end.Sub(start) + instr.Record(ctx, float64(elapsed)/1e9, opts...) } +} - client := &Client{ - options: options, +func withOperationMetadata(ctx context.Context) metrics.RecordMetricOption { + return func(o *metrics.RecordMetricOptions) { + o.Properties.Set("rpc.service", middleware.GetServiceID(ctx)) + o.Properties.Set("rpc.method", middleware.GetOperationName(ctx)) } +} - return client +type operationMetricsKey struct{} + +func withOperationMetrics(parent context.Context, mp metrics.MeterProvider) (context.Context, error) { + meter := mp.Meter("github.com/aws/aws-sdk-go-v2/service/sts") + om := &operationMetrics{} + + var err error + + om.Duration, err = operationMetricTimer(meter, "client.call.duration", + "Overall call duration (including retries and time to send or receive request and response body)") + if err != nil { + return nil, err + } + om.SerializeDuration, err = operationMetricTimer(meter, "client.call.serialization_duration", + "The time it takes to serialize a message body") + if err != nil { + return nil, err + } + om.ResolveIdentityDuration, err = operationMetricTimer(meter, "client.call.auth.resolve_identity_duration", + "The time taken to acquire an identity (AWS credentials, bearer token, etc) from an Identity Provider") + if err != nil { + return nil, err + } + om.ResolveEndpointDuration, err = operationMetricTimer(meter, "client.call.resolve_endpoint_duration", + "The time it takes to resolve an endpoint (endpoint resolver, not DNS) for the request") + if err != nil { + return nil, err + } + om.SignRequestDuration, err = operationMetricTimer(meter, "client.call.auth.signing_duration", + "The time it takes to sign a request") + if err != nil { + return nil, err + } + om.DeserializeDuration, err = operationMetricTimer(meter, "client.call.deserialization_duration", + "The time it takes to deserialize a message body") + if err != nil { + return nil, err + } + + return context.WithValue(parent, operationMetricsKey{}, om), nil } -type Options struct { - // Set of options to modify how an operation is invoked. These apply to all - // operations invoked for this client. Use functional options on operation call to - // modify this list for per operation behavior. - APIOptions []func(*middleware.Stack) error +func operationMetricTimer(m metrics.Meter, name, desc string) (metrics.Float64Histogram, error) { + return m.Float64Histogram(name, func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = desc + }) +} - // Configures the events that will be sent to the configured logger. - ClientLogMode aws.ClientLogMode +func getOperationMetrics(ctx context.Context) *operationMetrics { + return ctx.Value(operationMetricsKey{}).(*operationMetrics) +} - // The credentials object to use when signing requests. - Credentials aws.CredentialsProvider +func operationTracer(p tracing.TracerProvider) tracing.Tracer { + return p.Tracer("github.com/aws/aws-sdk-go-v2/service/sts") +} - // The configuration DefaultsMode that the SDK should use when constructing the - // clients initial default settings. - DefaultsMode aws.DefaultsMode +// Client provides the API client to make operations call for AWS Security Token +// Service. +type Client struct { + options Options - // The endpoint options to be used when attempting to resolve an endpoint. - EndpointOptions EndpointResolverOptions + // Difference between the time reported by the server and the client + timeOffset *atomic.Int64 +} - // The service endpoint resolver. - EndpointResolver EndpointResolver +// New returns an initialized Client based on the functional options. Provide +// additional functional options to further configure the behavior of the client, +// such as changing the client's endpoint or adding custom middleware behavior. +func New(options Options, optFns ...func(*Options)) *Client { + options = options.Copy() - // Signature Version 4 (SigV4) Signer - HTTPSignerV4 HTTPSignerV4 + resolveDefaultLogger(&options) - // The logger writer interface to write logging messages to. - Logger logging.Logger + setResolvedDefaultsMode(&options) - // The region to send requests to. (Required) - Region string + resolveRetryer(&options) - // RetryMaxAttempts specifies the maximum number attempts an API client will call - // an operation that fails with a retryable error. A value of 0 is ignored, and - // will not be used to configure the API client created default retryer, or modify - // per operation call's retry max attempts. When creating a new API Clients this - // member will only be used if the Retryer Options member is nil. This value will - // be ignored if Retryer is not nil. If specified in an operation call's functional - // options with a value that is different than the constructed client's Options, - // the Client's Retryer will be wrapped to use the operation's specific - // RetryMaxAttempts value. - RetryMaxAttempts int + resolveHTTPClient(&options) - // RetryMode specifies the retry mode the API client will be created with, if - // Retryer option is not also specified. When creating a new API Clients this - // member will only be used if the Retryer Options member is nil. This value will - // be ignored if Retryer is not nil. Currently does not support per operation call - // overrides, may in the future. - RetryMode aws.RetryMode + resolveHTTPSignerV4(&options) - // Retryer guides how HTTP requests should be retried in case of recoverable - // failures. When nil the API client will use a default retryer. The kind of - // default retry created by the API client can be changed with the RetryMode - // option. - Retryer aws.Retryer + resolveEndpointResolverV2(&options) - // The RuntimeEnvironment configuration, only populated if the DefaultsMode is set - // to DefaultsModeAuto and is initialized using config.LoadDefaultConfig. You - // should not populate this structure programmatically, or rely on the values here - // within your applications. - RuntimeEnvironment aws.RuntimeEnvironment + resolveTracerProvider(&options) - // The initial DefaultsMode used when the client options were constructed. If the - // DefaultsMode was set to aws.DefaultsModeAuto this will store what the resolved - // value was at that point in time. Currently does not support per operation call - // overrides, may in the future. - resolvedDefaultsMode aws.DefaultsMode + resolveMeterProvider(&options) - // The HTTP client to invoke API calls with. Defaults to client's default HTTP - // implementation if nil. - HTTPClient HTTPClient -} + resolveAuthSchemeResolver(&options) -// WithAPIOptions returns a functional option for setting the Client's APIOptions -// option. -func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) { - return func(o *Options) { - o.APIOptions = append(o.APIOptions, optFns...) + for _, fn := range optFns { + fn(&options) } -} -// WithEndpointResolver returns a functional option for setting the Client's -// EndpointResolver option. -func WithEndpointResolver(v EndpointResolver) func(*Options) { - return func(o *Options) { - o.EndpointResolver = v + finalizeRetryMaxAttempts(&options) + + ignoreAnonymousAuth(&options) + + wrapWithAnonymousAuth(&options) + + resolveAuthSchemes(&options) + + client := &Client{ + options: options, } -} -type HTTPClient interface { - Do(*http.Request) (*http.Response, error) -} + initializeTimeOffsetResolver(client) -// Copy creates a clone where the APIOptions list is deep copied. -func (o Options) Copy() Options { - to := o - to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) - copy(to.APIOptions, o.APIOptions) + return client +} - return to +// Options returns a copy of the client configuration. +// +// Callers SHOULD NOT perform mutations on any inner structures within client +// config. Config overrides should instead be made on a per-operation basis through +// functional options. +func (c *Client) Options() Options { + return c.options.Copy() } -func (c *Client) invokeOperation(ctx context.Context, opID string, params interface{}, optFns []func(*Options), stackFns ...func(*middleware.Stack, Options) error) (result interface{}, metadata middleware.Metadata, err error) { + +func (c *Client) invokeOperation( + ctx context.Context, opID string, params interface{}, optFns []func(*Options), stackFns ...func(*middleware.Stack, Options) error, +) ( + result interface{}, metadata middleware.Metadata, err error, +) { ctx = middleware.ClearStackValues(ctx) + ctx = middleware.WithServiceID(ctx, ServiceID) + ctx = middleware.WithOperationName(ctx, opID) + stack := middleware.NewStack(opID, smithyhttp.NewStackRequest) options := c.options.Copy() + for _, fn := range optFns { fn(&options) } - finalizeRetryMaxAttemptOptions(&options, *c) + finalizeOperationRetryMaxAttempts(&options, *c) finalizeClientEndpointResolverOptions(&options) @@ -185,20 +258,140 @@ func (c *Client) invokeOperation(ctx context.Context, opID string, params interf } } - handler := middleware.DecorateHandler(smithyhttp.NewClientHandler(options.HTTPClient), stack) - result, metadata, err = handler.Handle(ctx, params) + ctx, err = withOperationMetrics(ctx, options.MeterProvider) + if err != nil { + return nil, metadata, err + } + + tracer := operationTracer(options.TracerProvider) + spanName := fmt.Sprintf("%s.%s", ServiceID, opID) + + ctx = tracing.WithOperationTracer(ctx, tracer) + + ctx, span := tracer.StartSpan(ctx, spanName, func(o *tracing.SpanOptions) { + o.Kind = tracing.SpanKindClient + o.Properties.Set("rpc.system", "aws-api") + o.Properties.Set("rpc.method", opID) + o.Properties.Set("rpc.service", ServiceID) + }) + endTimer := startMetricTimer(ctx, "client.call.duration") + defer endTimer() + defer span.End() + + handler := smithyhttp.NewClientHandler(options.HTTPClient) + decorated := middleware.DecorateHandler(handler, stack) + result, metadata, err = decorated.Handle(ctx, params) if err != nil { + span.SetProperty("exception.type", fmt.Sprintf("%T", err)) + span.SetProperty("exception.message", err.Error()) + + var aerr smithy.APIError + if errors.As(err, &aerr) { + span.SetProperty("api.error_code", aerr.ErrorCode()) + span.SetProperty("api.error_message", aerr.ErrorMessage()) + span.SetProperty("api.error_fault", aerr.ErrorFault().String()) + } + err = &smithy.OperationError{ ServiceID: ServiceID, OperationName: opID, Err: err, } } + + span.SetProperty("error", err != nil) + if err == nil { + span.SetStatus(tracing.SpanStatusOK) + } else { + span.SetStatus(tracing.SpanStatusError) + } + return result, metadata, err } +type operationInputKey struct{} + +func setOperationInput(ctx context.Context, input interface{}) context.Context { + return middleware.WithStackValue(ctx, operationInputKey{}, input) +} + +func getOperationInput(ctx context.Context) interface{} { + return middleware.GetStackValue(ctx, operationInputKey{}) +} + +type setOperationInputMiddleware struct { +} + +func (*setOperationInputMiddleware) ID() string { + return "setOperationInput" +} + +func (m *setOperationInputMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + ctx = setOperationInput(ctx, in.Parameters) + return next.HandleSerialize(ctx, in) +} + +func addProtocolFinalizerMiddlewares(stack *middleware.Stack, options Options, operation string) error { + if err := stack.Finalize.Add(&resolveAuthSchemeMiddleware{operation: operation, options: options}, middleware.Before); err != nil { + return fmt.Errorf("add ResolveAuthScheme: %w", err) + } + if err := stack.Finalize.Insert(&getIdentityMiddleware{options: options}, "ResolveAuthScheme", middleware.After); err != nil { + return fmt.Errorf("add GetIdentity: %v", err) + } + if err := stack.Finalize.Insert(&resolveEndpointV2Middleware{options: options}, "GetIdentity", middleware.After); err != nil { + return fmt.Errorf("add ResolveEndpointV2: %v", err) + } + if err := stack.Finalize.Insert(&signRequestMiddleware{options: options}, "ResolveEndpointV2", middleware.After); err != nil { + return fmt.Errorf("add Signing: %w", err) + } + return nil +} +func resolveAuthSchemeResolver(options *Options) { + if options.AuthSchemeResolver == nil { + options.AuthSchemeResolver = &defaultAuthSchemeResolver{} + } +} + +func resolveAuthSchemes(options *Options) { + if options.AuthSchemes == nil { + options.AuthSchemes = []smithyhttp.AuthScheme{ + internalauth.NewHTTPAuthScheme("aws.auth#sigv4", &internalauthsmithy.V4SignerAdapter{ + Signer: options.HTTPSignerV4, + Logger: options.Logger, + LogSigning: options.ClientLogMode.IsSigning(), + }), + } + } +} + type noSmithyDocumentSerde = smithydocument.NoSerde +type legacyEndpointContextSetter struct { + LegacyResolver EndpointResolver +} + +func (*legacyEndpointContextSetter) ID() string { + return "legacyEndpointContextSetter" +} + +func (m *legacyEndpointContextSetter) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.LegacyResolver != nil { + ctx = awsmiddleware.SetRequiresLegacyEndpoints(ctx, true) + } + + return next.HandleInitialize(ctx, in) + +} +func addlegacyEndpointContextSetter(stack *middleware.Stack, o Options) error { + return stack.Initialize.Add(&legacyEndpointContextSetter{ + LegacyResolver: o.EndpointResolver, + }, middleware.Before) +} + func resolveDefaultLogger(o *Options) { if o.Logger != nil { return @@ -236,6 +429,7 @@ func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { APIOptions: cfg.APIOptions, Logger: cfg.Logger, ClientLogMode: cfg.ClientLogMode, + AppID: cfg.AppID, } resolveAWSRetryerProvider(cfg, &opts) resolveAWSRetryMaxAttempts(cfg, &opts) @@ -243,6 +437,7 @@ func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { resolveAWSEndpointResolver(cfg, &opts) resolveUseDualStackEndpoint(cfg, &opts) resolveUseFIPSEndpoint(cfg, &opts) + resolveBaseEndpoint(cfg, &opts) return New(opts, optFns...) } @@ -334,7 +529,15 @@ func resolveAWSRetryMaxAttempts(cfg aws.Config, o *Options) { o.RetryMaxAttempts = cfg.RetryMaxAttempts } -func finalizeRetryMaxAttemptOptions(o *Options, client Client) { +func finalizeRetryMaxAttempts(o *Options) { + if o.RetryMaxAttempts == 0 { + return + } + + o.Retryer = retry.AddWithMaxAttempts(o.Retryer, o.RetryMaxAttempts) +} + +func finalizeOperationRetryMaxAttempts(o *Options, client Client) { if v := o.RetryMaxAttempts; v == 0 || v == client.options.RetryMaxAttempts { return } @@ -346,20 +549,39 @@ func resolveAWSEndpointResolver(cfg aws.Config, o *Options) { if cfg.EndpointResolver == nil && cfg.EndpointResolverWithOptions == nil { return } - o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions, NewDefaultEndpointResolver()) + o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions) } -func addClientUserAgent(stack *middleware.Stack) error { - return awsmiddleware.AddSDKAgentKeyValue(awsmiddleware.APIMetadata, "sts", goModuleVersion)(stack) +func addClientUserAgent(stack *middleware.Stack, options Options) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddSDKAgentKeyValue(awsmiddleware.APIMetadata, "sts", goModuleVersion) + if len(options.AppID) > 0 { + ua.AddSDKAgentKey(awsmiddleware.ApplicationIdentifier, options.AppID) + } + + return nil } -func addHTTPSignerV4Middleware(stack *middleware.Stack, o Options) error { - mw := v4.NewSignHTTPRequestMiddleware(v4.SignHTTPRequestMiddlewareOptions{ - CredentialsProvider: o.Credentials, - Signer: o.HTTPSignerV4, - LogSigning: o.ClientLogMode.IsSigning(), - }) - return stack.Finalize.Add(mw, middleware.After) +func getOrAddRequestUserAgent(stack *middleware.Stack) (*awsmiddleware.RequestUserAgent, error) { + id := (*awsmiddleware.RequestUserAgent)(nil).ID() + mw, ok := stack.Build.Get(id) + if !ok { + mw = awsmiddleware.NewRequestUserAgent() + if err := stack.Build.Add(mw, middleware.After); err != nil { + return nil, err + } + } + + ua, ok := mw.(*awsmiddleware.RequestUserAgent) + if !ok { + return nil, fmt.Errorf("%T for %s middleware did not match expected type", mw, id) + } + + return ua, nil } type HTTPSignerV4 interface { @@ -380,12 +602,97 @@ func newDefaultV4Signer(o Options) *v4.Signer { }) } -func addRetryMiddlewares(stack *middleware.Stack, o Options) error { - mo := retry.AddRetryMiddlewaresOptions{ - Retryer: o.Retryer, - LogRetryAttempts: o.ClientLogMode.IsRetries(), +func addClientRequestID(stack *middleware.Stack) error { + return stack.Build.Add(&awsmiddleware.ClientRequestID{}, middleware.After) +} + +func addComputeContentLength(stack *middleware.Stack) error { + return stack.Build.Add(&smithyhttp.ComputeContentLength{}, middleware.After) +} + +func addRawResponseToMetadata(stack *middleware.Stack) error { + return stack.Deserialize.Add(&awsmiddleware.AddRawResponse{}, middleware.Before) +} + +func addRecordResponseTiming(stack *middleware.Stack) error { + return stack.Deserialize.Add(&awsmiddleware.RecordResponseTiming{}, middleware.After) +} + +func addSpanRetryLoop(stack *middleware.Stack, options Options) error { + return stack.Finalize.Insert(&spanRetryLoop{options: options}, "Retry", middleware.Before) +} + +type spanRetryLoop struct { + options Options +} + +func (*spanRetryLoop) ID() string { + return "spanRetryLoop" +} + +func (m *spanRetryLoop) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, +) ( + middleware.FinalizeOutput, middleware.Metadata, error, +) { + tracer := operationTracer(m.options.TracerProvider) + ctx, span := tracer.StartSpan(ctx, "RetryLoop") + defer span.End() + + return next.HandleFinalize(ctx, in) +} +func addStreamingEventsPayload(stack *middleware.Stack) error { + return stack.Finalize.Add(&v4.StreamingEventsPayload{}, middleware.Before) +} + +func addUnsignedPayload(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.UnsignedPayload{}, "ResolveEndpointV2", middleware.After) +} + +func addComputePayloadSHA256(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.ComputePayloadSHA256{}, "ResolveEndpointV2", middleware.After) +} + +func addContentSHA256Header(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.ContentSHA256Header{}, (*v4.ComputePayloadSHA256)(nil).ID(), middleware.After) +} + +func addIsWaiterUserAgent(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureWaiter) + return nil + }) +} + +func addIsPaginatorUserAgent(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeaturePaginator) + return nil + }) +} + +func addRetry(stack *middleware.Stack, o Options) error { + attempt := retry.NewAttemptMiddleware(o.Retryer, smithyhttp.RequestCloner, func(m *retry.Attempt) { + m.LogAttempts = o.ClientLogMode.IsRetries() + m.OperationMeter = o.MeterProvider.Meter("github.com/aws/aws-sdk-go-v2/service/sts") + }) + if err := stack.Finalize.Insert(attempt, "Signing", middleware.Before); err != nil { + return err } - return retry.AddRetryMiddlewares(stack, mo) + if err := stack.Finalize.Insert(&retry.MetricsHeader{}, attempt.ID(), middleware.After); err != nil { + return err + } + return nil } // resolves dual-stack endpoint configuration @@ -418,12 +725,68 @@ func resolveUseFIPSEndpoint(cfg aws.Config, o *Options) error { return nil } +func resolveAccountID(identity smithyauth.Identity, mode aws.AccountIDEndpointMode) *string { + if mode == aws.AccountIDEndpointModeDisabled { + return nil + } + + if ca, ok := identity.(*internalauthsmithy.CredentialsAdapter); ok && ca.Credentials.AccountID != "" { + return aws.String(ca.Credentials.AccountID) + } + + return nil +} + +func addTimeOffsetBuild(stack *middleware.Stack, c *Client) error { + mw := internalmiddleware.AddTimeOffsetMiddleware{Offset: c.timeOffset} + if err := stack.Build.Add(&mw, middleware.After); err != nil { + return err + } + return stack.Deserialize.Insert(&mw, "RecordResponseTiming", middleware.Before) +} +func initializeTimeOffsetResolver(c *Client) { + c.timeOffset = new(atomic.Int64) +} + +func addUserAgentRetryMode(stack *middleware.Stack, options Options) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + switch options.Retryer.(type) { + case *retry.Standard: + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureRetryModeStandard) + case *retry.AdaptiveMode: + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureRetryModeAdaptive) + } + return nil +} + +func resolveTracerProvider(options *Options) { + if options.TracerProvider == nil { + options.TracerProvider = &tracing.NopTracerProvider{} + } +} + +func resolveMeterProvider(options *Options) { + if options.MeterProvider == nil { + options.MeterProvider = metrics.NopMeterProvider{} + } +} + +func addRecursionDetection(stack *middleware.Stack) error { + return stack.Build.Add(&awsmiddleware.RecursionDetection{}, middleware.After) +} + func addRequestIDRetrieverMiddleware(stack *middleware.Stack) error { - return awsmiddleware.AddRequestIDRetrieverMiddleware(stack) + return stack.Deserialize.Insert(&awsmiddleware.RequestIDRetriever{}, "OperationDeserializer", middleware.Before) + } func addResponseErrorMiddleware(stack *middleware.Stack) error { - return awshttp.AddResponseErrorMiddleware(stack) + return stack.Deserialize.Insert(&awshttp.ResponseErrorWrapper{}, "RequestIDRetriever", middleware.Before) + } // HTTPPresignerV4 represents presigner interface used by presign url client @@ -496,20 +859,67 @@ func withNopHTTPClientAPIOption(o *Options) { o.HTTPClient = smithyhttp.NopClient{} } +type presignContextPolyfillMiddleware struct { +} + +func (*presignContextPolyfillMiddleware) ID() string { + return "presignContextPolyfill" +} + +func (m *presignContextPolyfillMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + rscheme := getResolvedAuthScheme(ctx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + schemeID := rscheme.Scheme.SchemeID() + + if schemeID == "aws.auth#sigv4" || schemeID == "com.amazonaws.s3#sigv4express" { + if sn, ok := smithyhttp.GetSigV4SigningName(&rscheme.SignerProperties); ok { + ctx = awsmiddleware.SetSigningName(ctx, sn) + } + if sr, ok := smithyhttp.GetSigV4SigningRegion(&rscheme.SignerProperties); ok { + ctx = awsmiddleware.SetSigningRegion(ctx, sr) + } + } else if schemeID == "aws.auth#sigv4a" { + if sn, ok := smithyhttp.GetSigV4ASigningName(&rscheme.SignerProperties); ok { + ctx = awsmiddleware.SetSigningName(ctx, sn) + } + if sr, ok := smithyhttp.GetSigV4ASigningRegions(&rscheme.SignerProperties); ok { + ctx = awsmiddleware.SetSigningRegion(ctx, sr[0]) + } + } + + return next.HandleFinalize(ctx, in) +} + type presignConverter PresignOptions func (c presignConverter) convertToPresignMiddleware(stack *middleware.Stack, options Options) (err error) { - stack.Finalize.Clear() + if _, ok := stack.Finalize.Get((*acceptencodingcust.DisableGzip)(nil).ID()); ok { + stack.Finalize.Remove((*acceptencodingcust.DisableGzip)(nil).ID()) + } + if _, ok := stack.Finalize.Get((*retry.Attempt)(nil).ID()); ok { + stack.Finalize.Remove((*retry.Attempt)(nil).ID()) + } + if _, ok := stack.Finalize.Get((*retry.MetricsHeader)(nil).ID()); ok { + stack.Finalize.Remove((*retry.MetricsHeader)(nil).ID()) + } stack.Deserialize.Clear() stack.Build.Remove((*awsmiddleware.ClientRequestID)(nil).ID()) stack.Build.Remove("UserAgent") + if err := stack.Finalize.Insert(&presignContextPolyfillMiddleware{}, "Signing", middleware.Before); err != nil { + return err + } + pmw := v4.NewPresignHTTPRequestMiddleware(v4.PresignHTTPRequestMiddlewareOptions{ CredentialsProvider: options.Credentials, Presigner: c.Presigner, LogSigning: options.ClientLogMode.IsSigning(), }) - err = stack.Finalize.Add(pmw, middleware.After) - if err != nil { + if _, err := stack.Finalize.Swap("Signing", pmw); err != nil { return err } if err = smithyhttp.AddNoPayloadDefaultContentTypeRemover(stack); err != nil { @@ -520,7 +930,7 @@ func (c presignConverter) convertToPresignMiddleware(stack *middleware.Stack, op if err != nil { return err } - err = presignedurlcust.AddAsIsPresigingMiddleware(stack) + err = presignedurlcust.AddAsIsPresigningMiddleware(stack) if err != nil { return err } @@ -535,3 +945,118 @@ func addRequestResponseLogging(stack *middleware.Stack, o Options) error { LogResponseWithBody: o.ClientLogMode.IsResponseWithBody(), }, middleware.After) } + +type disableHTTPSMiddleware struct { + DisableHTTPS bool +} + +func (*disableHTTPSMiddleware) ID() string { + return "disableHTTPS" +} + +func (m *disableHTTPSMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.DisableHTTPS && !smithyhttp.GetHostnameImmutable(ctx) { + req.URL.Scheme = "http" + } + + return next.HandleFinalize(ctx, in) +} + +func addDisableHTTPSMiddleware(stack *middleware.Stack, o Options) error { + return stack.Finalize.Insert(&disableHTTPSMiddleware{ + DisableHTTPS: o.EndpointOptions.DisableHTTPS, + }, "ResolveEndpointV2", middleware.After) +} + +type spanInitializeStart struct { +} + +func (*spanInitializeStart) ID() string { + return "spanInitializeStart" +} + +func (m *spanInitializeStart) HandleInitialize( + ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, +) ( + middleware.InitializeOutput, middleware.Metadata, error, +) { + ctx, _ = tracing.StartSpan(ctx, "Initialize") + + return next.HandleInitialize(ctx, in) +} + +type spanInitializeEnd struct { +} + +func (*spanInitializeEnd) ID() string { + return "spanInitializeEnd" +} + +func (m *spanInitializeEnd) HandleInitialize( + ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, +) ( + middleware.InitializeOutput, middleware.Metadata, error, +) { + ctx, span := tracing.PopSpan(ctx) + span.End() + + return next.HandleInitialize(ctx, in) +} + +type spanBuildRequestStart struct { +} + +func (*spanBuildRequestStart) ID() string { + return "spanBuildRequestStart" +} + +func (m *spanBuildRequestStart) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + middleware.SerializeOutput, middleware.Metadata, error, +) { + ctx, _ = tracing.StartSpan(ctx, "BuildRequest") + + return next.HandleSerialize(ctx, in) +} + +type spanBuildRequestEnd struct { +} + +func (*spanBuildRequestEnd) ID() string { + return "spanBuildRequestEnd" +} + +func (m *spanBuildRequestEnd) HandleBuild( + ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler, +) ( + middleware.BuildOutput, middleware.Metadata, error, +) { + ctx, span := tracing.PopSpan(ctx) + span.End() + + return next.HandleBuild(ctx, in) +} + +func addSpanInitializeStart(stack *middleware.Stack) error { + return stack.Initialize.Add(&spanInitializeStart{}, middleware.Before) +} + +func addSpanInitializeEnd(stack *middleware.Stack) error { + return stack.Initialize.Add(&spanInitializeEnd{}, middleware.After) +} + +func addSpanBuildRequestStart(stack *middleware.Stack) error { + return stack.Serialize.Add(&spanBuildRequestStart{}, middleware.Before) +} + +func addSpanBuildRequestEnd(stack *middleware.Stack) error { + return stack.Build.Add(&spanBuildRequestEnd{}, middleware.After) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go index 7d00b6bd7fa1..be03f017d478 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go @@ -4,6 +4,7 @@ package sts import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/aws-sdk-go-v2/service/sts/types" @@ -12,87 +13,102 @@ import ( ) // Returns a set of temporary security credentials that you can use to access -// Amazon Web Services resources that you might not normally have access to. These -// temporary credentials consist of an access key ID, a secret access key, and a -// security token. Typically, you use AssumeRole within your account or for -// cross-account access. For a comparison of AssumeRole with other API operations -// that produce temporary credentials, see Requesting Temporary Security -// Credentials -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) -// and Comparing the Amazon Web Services STS API operations -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) -// in the IAM User Guide. Permissions The temporary security credentials created by -// AssumeRole can be used to make API calls to any Amazon Web Services service with -// the following exception: You cannot call the Amazon Web Services STS -// GetFederationToken or GetSessionToken API operations. (Optional) You can pass -// inline or managed session policies -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) -// to this operation. You can pass a single JSON policy document to use as an -// inline session policy. You can also specify up to 10 managed policies to use as -// managed session policies. The plaintext that you use for both inline and managed -// session policies can't exceed 2,048 characters. Passing policies to this -// operation returns new temporary credentials. The resulting session's permissions -// are the intersection of the role's identity-based policy and the session -// policies. You can use the role's temporary credentials in subsequent Amazon Web -// Services API calls to access resources in the account that owns the role. You -// cannot use session policies to grant more permissions than those allowed by the +// Amazon Web Services resources. These temporary credentials consist of an access +// key ID, a secret access key, and a security token. Typically, you use AssumeRole +// within your account or for cross-account access. For a comparison of AssumeRole +// with other API operations that produce temporary credentials, see [Requesting Temporary Security Credentials]and [Comparing the Amazon Web Services STS API operations] in the +// IAM User Guide. +// +// # Permissions +// +// The temporary security credentials created by AssumeRole can be used to make +// API calls to any Amazon Web Services service with the following exception: You +// cannot call the Amazon Web Services STS GetFederationToken or GetSessionToken +// API operations. +// +// (Optional) You can pass inline or managed [session policies] to this operation. You can pass a +// single JSON policy document to use as an inline session policy. You can also +// specify up to 10 managed policy Amazon Resource Names (ARNs) to use as managed +// session policies. The plaintext that you use for both inline and managed session +// policies can't exceed 2,048 characters. Passing policies to this operation +// returns new temporary credentials. The resulting session's permissions are the +// intersection of the role's identity-based policy and the session policies. You +// can use the role's temporary credentials in subsequent Amazon Web Services API +// calls to access resources in the account that owns the role. You cannot use +// session policies to grant more permissions than those allowed by the // identity-based policy of the role that is being assumed. For more information, -// see Session Policies -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) -// in the IAM User Guide. When you create a role, you create two policies: A role -// trust policy that specifies who can assume the role and a permissions policy -// that specifies what can be done with the role. You specify the trusted principal -// who is allowed to assume the role in the role trust policy. To assume a role -// from a different account, your Amazon Web Services account must be trusted by -// the role. The trust relationship is defined in the role's trust policy when the -// role is created. That trust policy states which accounts are allowed to delegate -// that access to users in the account. A user who wants to access a role in a -// different account must also have permissions that are delegated from the user -// account administrator. The administrator must attach a policy that allows the -// user to call AssumeRole for the ARN of the role in the other account. To allow a -// user to assume a role in the same account, you can do either of the +// see [Session Policies]in the IAM User Guide. +// +// When you create a role, you create two policies: a role trust policy that +// specifies who can assume the role, and a permissions policy that specifies what +// can be done with the role. You specify the trusted principal that is allowed to +// assume the role in the role trust policy. +// +// To assume a role from a different account, your Amazon Web Services account +// must be trusted by the role. The trust relationship is defined in the role's +// trust policy when the role is created. That trust policy states which accounts +// are allowed to delegate that access to users in the account. +// +// A user who wants to access a role in a different account must also have +// permissions that are delegated from the account administrator. The administrator +// must attach a policy that allows the user to call AssumeRole for the ARN of the +// role in the other account. +// +// To allow a user to assume a role in the same account, you can do either of the // following: // -// * Attach a policy to the user that allows the user to call -// AssumeRole (as long as the role's trust policy trusts the account). +// - Attach a policy to the user that allows the user to call AssumeRole (as long +// as the role's trust policy trusts the account). +// +// - Add the user as a principal directly in the role's trust policy. +// +// You can do either because the role’s trust policy acts as an IAM resource-based +// policy. When a resource-based policy grants access to a principal in the same +// account, no additional identity-based policy is required. For more information +// about trust policies and resource-based policies, see [IAM Policies]in the IAM User Guide. +// +// # Tags +// +// (Optional) You can pass tag key-value pairs to your session. These tags are +// called session tags. For more information about session tags, see [Passing Session Tags in STS]in the IAM +// User Guide. +// +// An administrator must grant you the permissions necessary to pass session tags. +// The administrator can also create granular permissions to allow you to pass only +// specific session tags. For more information, see [Tutorial: Using Tags for Attribute-Based Access Control]in the IAM User Guide. +// +// You can set the session tags as transitive. Transitive tags persist during role +// chaining. For more information, see [Chaining Roles with Session Tags]in the IAM User Guide. // -// * Add the -// user as a principal directly in the role's trust policy. +// # Using MFA with AssumeRole // -// You can do either -// because the role’s trust policy acts as an IAM resource-based policy. When a -// resource-based policy grants access to a principal in the same account, no -// additional identity-based policy is required. For more information about trust -// policies and resource-based policies, see IAM Policies -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) in the -// IAM User Guide. Tags (Optional) You can pass tag key-value pairs to your -// session. These tags are called session tags. For more information about session -// tags, see Passing Session Tags in STS -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) in the -// IAM User Guide. An administrator must grant you the permissions necessary to -// pass session tags. The administrator can also create granular permissions to -// allow you to pass only specific session tags. For more information, see -// Tutorial: Using Tags for Attribute-Based Access Control -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) -// in the IAM User Guide. You can set the session tags as transitive. Transitive -// tags persist during role chaining. For more information, see Chaining Roles with -// Session Tags -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining) -// in the IAM User Guide. Using MFA with AssumeRole (Optional) You can include -// multi-factor authentication (MFA) information when you call AssumeRole. This is -// useful for cross-account scenarios to ensure that the user that assumes the role -// has been authenticated with an Amazon Web Services MFA device. In that scenario, -// the trust policy of the role being assumed includes a condition that tests for -// MFA authentication. If the caller does not include valid MFA information, the -// request to assume the role is denied. The condition in a trust policy that tests -// for MFA authentication might look like the following example. "Condition": -// {"Bool": {"aws:MultiFactorAuthPresent": true}} For more information, see -// Configuring MFA-Protected API Access -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/MFAProtectedAPI.html) in the -// IAM User Guide guide. To use MFA with AssumeRole, you pass values for the -// SerialNumber and TokenCode parameters. The SerialNumber value identifies the -// user's hardware or virtual MFA device. The TokenCode is the time-based one-time -// password (TOTP) that the MFA device produces. +// (Optional) You can include multi-factor authentication (MFA) information when +// you call AssumeRole . This is useful for cross-account scenarios to ensure that +// the user that assumes the role has been authenticated with an Amazon Web +// Services MFA device. In that scenario, the trust policy of the role being +// assumed includes a condition that tests for MFA authentication. If the caller +// does not include valid MFA information, the request to assume the role is +// denied. The condition in a trust policy that tests for MFA authentication might +// look like the following example. +// +// "Condition": {"Bool": {"aws:MultiFactorAuthPresent": true}} +// +// For more information, see [Configuring MFA-Protected API Access] in the IAM User Guide guide. +// +// To use MFA with AssumeRole , you pass values for the SerialNumber and TokenCode +// parameters. The SerialNumber value identifies the user's hardware or virtual +// MFA device. The TokenCode is the time-based one-time password (TOTP) that the +// MFA device produces. +// +// [Configuring MFA-Protected API Access]: https://docs.aws.amazon.com/IAM/latest/UserGuide/MFAProtectedAPI.html +// [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session +// [Passing Session Tags in STS]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html +// [Chaining Roles with Session Tags]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining +// [Comparing the Amazon Web Services STS API operations]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison +// [session policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session +// [IAM Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html +// [Requesting Temporary Security Credentials]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html +// [Tutorial: Using Tags for Attribute-Based Access Control]: https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html func (c *Client) AssumeRole(ctx context.Context, params *AssumeRoleInput, optFns ...func(*Options)) (*AssumeRoleOutput, error) { if params == nil { params = &AssumeRoleInput{} @@ -115,17 +131,19 @@ type AssumeRoleInput struct { // This member is required. RoleArn *string - // An identifier for the assumed role session. Use the role session name to - // uniquely identify a session when the same role is assumed by different - // principals or for different reasons. In cross-account scenarios, the role - // session name is visible to, and can be logged by the account that owns the role. - // The role session name is also used in the ARN of the assumed role principal. - // This means that subsequent cross-account API requests that use the temporary - // security credentials will expose the role session name to the external account - // in their CloudTrail logs. The regex used to validate this parameter is a string - // of characters consisting of upper- and lower-case alphanumeric characters with - // no spaces. You can also include underscores or any of the following characters: - // =,.@- + // An identifier for the assumed role session. + // + // Use the role session name to uniquely identify a session when the same role is + // assumed by different principals or for different reasons. In cross-account + // scenarios, the role session name is visible to, and can be logged by the account + // that owns the role. The role session name is also used in the ARN of the assumed + // role principal. This means that subsequent cross-account API requests that use + // the temporary security credentials will expose the role session name to the + // external account in their CloudTrail logs. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can also + // include underscores or any of the following characters: =,.@- // // This member is required. RoleSessionName *string @@ -136,25 +154,27 @@ type AssumeRoleInput struct { // hours. If you specify a value higher than this setting or the administrator // setting (whichever is lower), the operation fails. For example, if you specify a // session duration of 12 hours, but your administrator set the maximum session - // duration to 6 hours, your operation fails. Role chaining limits your Amazon Web - // Services CLI or Amazon Web Services API role session to a maximum of one hour. - // When you use the AssumeRole API operation to assume a role, you can specify the - // duration of your role session with the DurationSeconds parameter. You can - // specify a parameter value of up to 43200 seconds (12 hours), depending on the - // maximum session duration setting for your role. However, if you assume a role - // using role chaining and provide a DurationSeconds parameter value greater than - // one hour, the operation fails. To learn how to view the maximum value for your - // role, see View the Maximum Session Duration Setting for a Role - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) - // in the IAM User Guide. By default, the value is set to 3600 seconds. The - // DurationSeconds parameter is separate from the duration of a console session - // that you might request using the returned credentials. The request to the - // federation endpoint for a console sign-in token takes a SessionDuration + // duration to 6 hours, your operation fails. + // + // Role chaining limits your Amazon Web Services CLI or Amazon Web Services API + // role session to a maximum of one hour. When you use the AssumeRole API + // operation to assume a role, you can specify the duration of your role session + // with the DurationSeconds parameter. You can specify a parameter value of up to + // 43200 seconds (12 hours), depending on the maximum session duration setting for + // your role. However, if you assume a role using role chaining and provide a + // DurationSeconds parameter value greater than one hour, the operation fails. To + // learn how to view the maximum value for your role, see [View the Maximum Session Duration Setting for a Role]in the IAM User Guide. + // + // By default, the value is set to 3600 seconds. + // + // The DurationSeconds parameter is separate from the duration of a console + // session that you might request using the returned credentials. The request to + // the federation endpoint for a console sign-in token takes a SessionDuration // parameter that specifies the maximum length of the console session. For more - // information, see Creating a URL that Enables Federated Users to Access the - // Amazon Web Services Management Console - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) - // in the IAM User Guide. + // information, see [Creating a URL that Enables Federated Users to Access the Amazon Web Services Management Console]in the IAM User Guide. + // + // [View the Maximum Session Duration Setting for a Role]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session + // [Creating a URL that Enables Federated Users to Access the Amazon Web Services Management Console]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html DurationSeconds *int32 // A unique identifier that might be required when you assume a role in another @@ -165,156 +185,191 @@ type AssumeRoleInput struct { // the administrator of the trusting account might send an external ID to the // administrator of the trusted account. That way, only someone with the ID can // assume the role, rather than everyone in the account. For more information about - // the external ID, see How to Use an External ID When Granting Access to Your - // Amazon Web Services Resources to a Third Party - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html) - // in the IAM User Guide. The regex used to validate this parameter is a string of - // characters consisting of upper- and lower-case alphanumeric characters with no - // spaces. You can also include underscores or any of the following characters: - // =,.@:/- + // the external ID, see [How to Use an External ID When Granting Access to Your Amazon Web Services Resources to a Third Party]in the IAM User Guide. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can also + // include underscores or any of the following characters: =,.@:/- + // + // [How to Use an External ID When Granting Access to Your Amazon Web Services Resources to a Third Party]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html ExternalId *string // An IAM policy in JSON format that you want to use as an inline session policy. + // // This parameter is optional. Passing policies to this operation returns new // temporary credentials. The resulting session's permissions are the intersection // of the role's identity-based policy and the session policies. You can use the // role's temporary credentials in subsequent Amazon Web Services API calls to // access resources in the account that owns the role. You cannot use session // policies to grant more permissions than those allowed by the identity-based - // policy of the role that is being assumed. For more information, see Session - // Policies - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) - // in the IAM User Guide. The plaintext that you use for both inline and managed - // session policies can't exceed 2,048 characters. The JSON policy characters can - // be any ASCII character from the space character to the end of the valid - // character list (\u0020 through \u00FF). It can also include the tab (\u0009), - // linefeed (\u000A), and carriage return (\u000D) characters. An Amazon Web - // Services conversion compresses the passed session policies and session tags into - // a packed binary format that has a separate limit. Your request can fail for this - // limit even if your plaintext meets the other requirements. The PackedPolicySize - // response element indicates by percentage how close the policies and tags for - // your request are to the upper size limit. + // policy of the role that is being assumed. For more information, see [Session Policies]in the IAM + // User Guide. + // + // The plaintext that you use for both inline and managed session policies can't + // exceed 2,048 characters. The JSON policy characters can be any ASCII character + // from the space character to the end of the valid character list (\u0020 through + // \u00FF). It can also include the tab (\u0009), linefeed (\u000A), and carriage + // return (\u000D) characters. + // + // An Amazon Web Services conversion compresses the passed inline session policy, + // managed policy ARNs, and session tags into a packed binary format that has a + // separate limit. Your request can fail for this limit even if your plaintext + // meets the other requirements. The PackedPolicySize response element indicates + // by percentage how close the policies and tags for your request are to the upper + // size limit. + // + // [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session Policy *string // The Amazon Resource Names (ARNs) of the IAM managed policies that you want to // use as managed session policies. The policies must exist in the same account as - // the role. This parameter is optional. You can provide up to 10 managed policy - // ARNs. However, the plaintext that you use for both inline and managed session - // policies can't exceed 2,048 characters. For more information about ARNs, see - // Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces - // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in - // the Amazon Web Services General Reference. An Amazon Web Services conversion - // compresses the passed session policies and session tags into a packed binary - // format that has a separate limit. Your request can fail for this limit even if - // your plaintext meets the other requirements. The PackedPolicySize response - // element indicates by percentage how close the policies and tags for your request - // are to the upper size limit. Passing policies to this operation returns new - // temporary credentials. The resulting session's permissions are the intersection - // of the role's identity-based policy and the session policies. You can use the - // role's temporary credentials in subsequent Amazon Web Services API calls to - // access resources in the account that owns the role. You cannot use session - // policies to grant more permissions than those allowed by the identity-based - // policy of the role that is being assumed. For more information, see Session - // Policies - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) - // in the IAM User Guide. + // the role. + // + // This parameter is optional. You can provide up to 10 managed policy ARNs. + // However, the plaintext that you use for both inline and managed session policies + // can't exceed 2,048 characters. For more information about ARNs, see [Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces]in the + // Amazon Web Services General Reference. + // + // An Amazon Web Services conversion compresses the passed inline session policy, + // managed policy ARNs, and session tags into a packed binary format that has a + // separate limit. Your request can fail for this limit even if your plaintext + // meets the other requirements. The PackedPolicySize response element indicates + // by percentage how close the policies and tags for your request are to the upper + // size limit. + // + // Passing policies to this operation returns new temporary credentials. The + // resulting session's permissions are the intersection of the role's + // identity-based policy and the session policies. You can use the role's temporary + // credentials in subsequent Amazon Web Services API calls to access resources in + // the account that owns the role. You cannot use session policies to grant more + // permissions than those allowed by the identity-based policy of the role that is + // being assumed. For more information, see [Session Policies]in the IAM User Guide. + // + // [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session + // [Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html PolicyArns []types.PolicyDescriptorType - // The identification number of the MFA device that is associated with the user who - // is making the AssumeRole call. Specify this value if the trust policy of the - // role being assumed includes a condition that requires MFA authentication. The - // value is either the serial number for a hardware device (such as GAHT12345678) - // or an Amazon Resource Name (ARN) for a virtual device (such as - // arn:aws:iam::123456789012:mfa/user). The regex used to validate this parameter - // is a string of characters consisting of upper- and lower-case alphanumeric - // characters with no spaces. You can also include underscores or any of the - // following characters: =,.@- + // A list of previously acquired trusted context assertions in the format of a + // JSON array. The trusted context assertion is signed and encrypted by Amazon Web + // Services STS. + // + // The following is an example of a ProvidedContext value that includes a single + // trusted context assertion and the ARN of the context provider from which the + // trusted context assertion was generated. + // + // [{"ProviderArn":"arn:aws:iam::aws:contextProvider/IdentityCenter","ContextAssertion":"trusted-context-assertion"}] + ProvidedContexts []types.ProvidedContext + + // The identification number of the MFA device that is associated with the user + // who is making the AssumeRole call. Specify this value if the trust policy of + // the role being assumed includes a condition that requires MFA authentication. + // The value is either the serial number for a hardware device (such as + // GAHT12345678 ) or an Amazon Resource Name (ARN) for a virtual device (such as + // arn:aws:iam::123456789012:mfa/user ). + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can also + // include underscores or any of the following characters: =,.@- SerialNumber *string // The source identity specified by the principal that is calling the AssumeRole - // operation. You can require users to specify a source identity when they assume a - // role. You do this by using the sts:SourceIdentity condition key in a role trust - // policy. You can use source identity information in CloudTrail logs to determine - // who took actions with a role. You can use the aws:SourceIdentity condition key - // to further control access to Amazon Web Services resources based on the value of - // source identity. For more information about using source identity, see Monitor - // and control actions taken with assumed roles - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html) - // in the IAM User Guide. The regex used to validate this parameter is a string of - // characters consisting of upper- and lower-case alphanumeric characters with no - // spaces. You can also include underscores or any of the following characters: - // =,.@-. You cannot use a value that begins with the text aws:. This prefix is - // reserved for Amazon Web Services internal use. + // operation. + // + // You can require users to specify a source identity when they assume a role. You + // do this by using the sts:SourceIdentity condition key in a role trust policy. + // You can use source identity information in CloudTrail logs to determine who took + // actions with a role. You can use the aws:SourceIdentity condition key to + // further control access to Amazon Web Services resources based on the value of + // source identity. For more information about using source identity, see [Monitor and control actions taken with assumed roles]in the + // IAM User Guide. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can also + // include underscores or any of the following characters: =,.@-. You cannot use a + // value that begins with the text aws: . This prefix is reserved for Amazon Web + // Services internal use. + // + // [Monitor and control actions taken with assumed roles]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html SourceIdentity *string - // A list of session tags that you want to pass. Each session tag consists of a key - // name and an associated value. For more information about session tags, see - // Tagging Amazon Web Services STS Sessions - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) in the - // IAM User Guide. This parameter is optional. You can pass up to 50 session tags. - // The plaintext session tag keys can’t exceed 128 characters, and the values can’t - // exceed 256 characters. For these and additional limits, see IAM and STS - // Character Limits - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length) - // in the IAM User Guide. An Amazon Web Services conversion compresses the passed - // session policies and session tags into a packed binary format that has a - // separate limit. Your request can fail for this limit even if your plaintext - // meets the other requirements. The PackedPolicySize response element indicates by - // percentage how close the policies and tags for your request are to the upper - // size limit. You can pass a session tag with the same key as a tag that is - // already attached to the role. When you do, session tags override a role tag with - // the same key. Tag key–value pairs are not case sensitive, but case is preserved. - // This means that you cannot have separate Department and department tag keys. - // Assume that the role has the Department=Marketing tag and you pass the - // department=engineering session tag. Department and department are not saved as - // separate tags, and the session tag passed in the request takes precedence over - // the role tag. Additionally, if you used temporary credentials to perform this - // operation, the new session inherits any transitive session tags from the calling - // session. If you pass a session tag with the same key as an inherited tag, the - // operation fails. To view the inherited tags for a session, see the CloudTrail - // logs. For more information, see Viewing Session Tags in CloudTrail - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_ctlogs) + // A list of session tags that you want to pass. Each session tag consists of a + // key name and an associated value. For more information about session tags, see [Tagging Amazon Web Services STS Sessions] // in the IAM User Guide. + // + // This parameter is optional. You can pass up to 50 session tags. The plaintext + // session tag keys can’t exceed 128 characters, and the values can’t exceed 256 + // characters. For these and additional limits, see [IAM and STS Character Limits]in the IAM User Guide. + // + // An Amazon Web Services conversion compresses the passed inline session policy, + // managed policy ARNs, and session tags into a packed binary format that has a + // separate limit. Your request can fail for this limit even if your plaintext + // meets the other requirements. The PackedPolicySize response element indicates + // by percentage how close the policies and tags for your request are to the upper + // size limit. + // + // You can pass a session tag with the same key as a tag that is already attached + // to the role. When you do, session tags override a role tag with the same key. + // + // Tag key–value pairs are not case sensitive, but case is preserved. This means + // that you cannot have separate Department and department tag keys. Assume that + // the role has the Department = Marketing tag and you pass the department = + // engineering session tag. Department and department are not saved as separate + // tags, and the session tag passed in the request takes precedence over the role + // tag. + // + // Additionally, if you used temporary credentials to perform this operation, the + // new session inherits any transitive session tags from the calling session. If + // you pass a session tag with the same key as an inherited tag, the operation + // fails. To view the inherited tags for a session, see the CloudTrail logs. For + // more information, see [Viewing Session Tags in CloudTrail]in the IAM User Guide. + // + // [Tagging Amazon Web Services STS Sessions]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html + // [IAM and STS Character Limits]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length + // [Viewing Session Tags in CloudTrail]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_ctlogs Tags []types.Tag // The value provided by the MFA device, if the trust policy of the role being // assumed requires MFA. (In other words, if the policy includes a condition that // tests for MFA). If the role being assumed requires MFA and if the TokenCode // value is missing or expired, the AssumeRole call returns an "access denied" - // error. The format for this parameter, as described by its regex pattern, is a - // sequence of six numeric digits. + // error. + // + // The format for this parameter, as described by its regex pattern, is a sequence + // of six numeric digits. TokenCode *string - // A list of keys for session tags that you want to set as transitive. If you set a - // tag key as transitive, the corresponding key and value passes to subsequent - // sessions in a role chain. For more information, see Chaining Roles with Session - // Tags - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining) - // in the IAM User Guide. This parameter is optional. When you set session tags as - // transitive, the session policy and session tags packed binary limit is not - // affected. If you choose not to specify a transitive tag key, then no tags are - // passed from this session to any subsequent sessions. + // A list of keys for session tags that you want to set as transitive. If you set + // a tag key as transitive, the corresponding key and value passes to subsequent + // sessions in a role chain. For more information, see [Chaining Roles with Session Tags]in the IAM User Guide. + // + // This parameter is optional. When you set session tags as transitive, the + // session policy and session tags packed binary limit is not affected. + // + // If you choose not to specify a transitive tag key, then no tags are passed from + // this session to any subsequent sessions. + // + // [Chaining Roles with Session Tags]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining TransitiveTagKeys []string noSmithyDocumentSerde } -// Contains the response to a successful AssumeRole request, including temporary -// Amazon Web Services credentials that can be used to make Amazon Web Services -// requests. +// Contains the response to a successful AssumeRole request, including temporary Amazon Web +// Services credentials that can be used to make Amazon Web Services requests. type AssumeRoleOutput struct { // The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers // that you can use to refer to the resulting temporary security credentials. For // example, you can reference these credentials as a principal in a resource-based // policy by using the ARN or assumed role ID. The ARN and ID include the - // RoleSessionName that you specified when you called AssumeRole. + // RoleSessionName that you specified when you called AssumeRole . AssumedRoleUser *types.AssumedRoleUser // The temporary security credentials, which include an access key ID, a secret - // access key, and a security (or session) token. The size of the security token - // that STS API operations return is not fixed. We strongly recommend that you make - // no assumptions about the maximum size. + // access key, and a security (or session) token. + // + // The size of the security token that STS API operations return is not fixed. We + // strongly recommend that you make no assumptions about the maximum size. Credentials *types.Credentials // A percentage value that indicates the packed size of the session policies and @@ -324,18 +379,21 @@ type AssumeRoleOutput struct { PackedPolicySize *int32 // The source identity specified by the principal that is calling the AssumeRole - // operation. You can require users to specify a source identity when they assume a - // role. You do this by using the sts:SourceIdentity condition key in a role trust - // policy. You can use source identity information in CloudTrail logs to determine - // who took actions with a role. You can use the aws:SourceIdentity condition key - // to further control access to Amazon Web Services resources based on the value of - // source identity. For more information about using source identity, see Monitor - // and control actions taken with assumed roles - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html) - // in the IAM User Guide. The regex used to validate this parameter is a string of - // characters consisting of upper- and lower-case alphanumeric characters with no - // spaces. You can also include underscores or any of the following characters: - // =,.@- + // operation. + // + // You can require users to specify a source identity when they assume a role. You + // do this by using the sts:SourceIdentity condition key in a role trust policy. + // You can use source identity information in CloudTrail logs to determine who took + // actions with a role. You can use the aws:SourceIdentity condition key to + // further control access to Amazon Web Services resources based on the value of + // source identity. For more information about using source identity, see [Monitor and control actions taken with assumed roles]in the + // IAM User Guide. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can also + // include underscores or any of the following characters: =,.@- + // + // [Monitor and control actions taken with assumed roles]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html SourceIdentity *string // Metadata pertaining to the operation's result. @@ -345,6 +403,9 @@ type AssumeRoleOutput struct { } func (c *Client) addOperationAssumeRoleMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsAwsquery_serializeOpAssumeRole{}, middleware.After) if err != nil { return err @@ -353,34 +414,41 @@ func (c *Client) addOperationAssumeRoleMiddlewares(stack *middleware.Stack, opti if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "AssumeRole"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + if err = addComputePayloadSHA256(stack); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { return err } - if err = addHTTPSignerV4Middleware(stack, options); err != nil { + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -389,12 +457,24 @@ func (c *Client) addOperationAssumeRoleMiddlewares(stack *middleware.Stack, opti if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpAssumeRoleValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opAssumeRole(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -404,6 +484,21 @@ func (c *Client) addOperationAssumeRoleMiddlewares(stack *middleware.Stack, opti if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } @@ -411,7 +506,30 @@ func newServiceMetadataMiddleware_opAssumeRole(region string) *awsmiddleware.Reg return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, - SigningName: "sts", OperationName: "AssumeRole", } } + +// PresignAssumeRole is used to generate a presigned HTTP Request which contains +// presigned URL, signed headers and HTTP method used. +func (c *PresignClient) PresignAssumeRole(ctx context.Context, params *AssumeRoleInput, optFns ...func(*PresignOptions)) (*v4.PresignedHTTPRequest, error) { + if params == nil { + params = &AssumeRoleInput{} + } + options := c.options.copy() + for _, fn := range optFns { + fn(&options) + } + clientOptFns := append(options.ClientOptions, withNopHTTPClientAPIOption) + + result, _, err := c.client.invokeOperation(ctx, "AssumeRole", params, clientOptFns, + c.client.addOperationAssumeRoleMiddlewares, + presignConverter(options).convertToPresignMiddleware, + ) + if err != nil { + return nil, err + } + + out := result.(*v4.PresignedHTTPRequest) + return out, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go index e12315e4c140..b8b0c095f7eb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go @@ -4,6 +4,7 @@ package sts import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/service/sts/types" "github.com/aws/smithy-go/middleware" @@ -15,112 +16,132 @@ import ( // mechanism for tying an enterprise identity store or directory to role-based // Amazon Web Services access without user-specific credentials or configuration. // For a comparison of AssumeRoleWithSAML with the other API operations that -// produce temporary credentials, see Requesting Temporary Security Credentials -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) -// and Comparing the Amazon Web Services STS API operations -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) -// in the IAM User Guide. The temporary security credentials returned by this -// operation consist of an access key ID, a secret access key, and a security -// token. Applications can use these temporary security credentials to sign calls -// to Amazon Web Services services. Session Duration By default, the temporary -// security credentials created by AssumeRoleWithSAML last for one hour. However, -// you can use the optional DurationSeconds parameter to specify the duration of -// your session. Your role session lasts for the duration that you specify, or -// until the time specified in the SAML authentication response's -// SessionNotOnOrAfter value, whichever is shorter. You can provide a -// DurationSeconds value from 900 seconds (15 minutes) up to the maximum session -// duration setting for the role. This setting can have a value from 1 hour to 12 -// hours. To learn how to view the maximum value for your role, see View the -// Maximum Session Duration Setting for a Role -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) -// in the IAM User Guide. The maximum session duration limit applies when you use -// the AssumeRole* API operations or the assume-role* CLI commands. However the -// limit does not apply when you use those operations to create a console URL. For -// more information, see Using IAM Roles -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) in the IAM -// User Guide. Role chaining -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-role-chaining) -// limits your CLI or Amazon Web Services API role session to a maximum of one +// produce temporary credentials, see [Requesting Temporary Security Credentials]and [Comparing the Amazon Web Services STS API operations] in the IAM User Guide. +// +// The temporary security credentials returned by this operation consist of an +// access key ID, a secret access key, and a security token. Applications can use +// these temporary security credentials to sign calls to Amazon Web Services +// services. +// +// # Session Duration +// +// By default, the temporary security credentials created by AssumeRoleWithSAML +// last for one hour. However, you can use the optional DurationSeconds parameter +// to specify the duration of your session. Your role session lasts for the +// duration that you specify, or until the time specified in the SAML +// authentication response's SessionNotOnOrAfter value, whichever is shorter. You +// can provide a DurationSeconds value from 900 seconds (15 minutes) up to the +// maximum session duration setting for the role. This setting can have a value +// from 1 hour to 12 hours. To learn how to view the maximum value for your role, +// see [View the Maximum Session Duration Setting for a Role]in the IAM User Guide. The maximum session duration limit applies when you +// use the AssumeRole* API operations or the assume-role* CLI commands. However +// the limit does not apply when you use those operations to create a console URL. +// For more information, see [Using IAM Roles]in the IAM User Guide. +// +// [Role chaining]limits your CLI or Amazon Web Services API role session to a maximum of one // hour. When you use the AssumeRole API operation to assume a role, you can // specify the duration of your role session with the DurationSeconds parameter. // You can specify a parameter value of up to 43200 seconds (12 hours), depending // on the maximum session duration setting for your role. However, if you assume a // role using role chaining and provide a DurationSeconds parameter value greater -// than one hour, the operation fails. Permissions The temporary security -// credentials created by AssumeRoleWithSAML can be used to make API calls to any -// Amazon Web Services service with the following exception: you cannot call the -// STS GetFederationToken or GetSessionToken API operations. (Optional) You can -// pass inline or managed session policies -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) -// to this operation. You can pass a single JSON policy document to use as an -// inline session policy. You can also specify up to 10 managed policies to use as -// managed session policies. The plaintext that you use for both inline and managed -// session policies can't exceed 2,048 characters. Passing policies to this -// operation returns new temporary credentials. The resulting session's permissions -// are the intersection of the role's identity-based policy and the session -// policies. You can use the role's temporary credentials in subsequent Amazon Web -// Services API calls to access resources in the account that owns the role. You -// cannot use session policies to grant more permissions than those allowed by the +// than one hour, the operation fails. +// +// # Permissions +// +// The temporary security credentials created by AssumeRoleWithSAML can be used to +// make API calls to any Amazon Web Services service with the following exception: +// you cannot call the STS GetFederationToken or GetSessionToken API operations. +// +// (Optional) You can pass inline or managed [session policies] to this operation. You can pass a +// single JSON policy document to use as an inline session policy. You can also +// specify up to 10 managed policy Amazon Resource Names (ARNs) to use as managed +// session policies. The plaintext that you use for both inline and managed session +// policies can't exceed 2,048 characters. Passing policies to this operation +// returns new temporary credentials. The resulting session's permissions are the +// intersection of the role's identity-based policy and the session policies. You +// can use the role's temporary credentials in subsequent Amazon Web Services API +// calls to access resources in the account that owns the role. You cannot use +// session policies to grant more permissions than those allowed by the // identity-based policy of the role that is being assumed. For more information, -// see Session Policies -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) -// in the IAM User Guide. Calling AssumeRoleWithSAML does not require the use of -// Amazon Web Services security credentials. The identity of the caller is -// validated by using keys in the metadata document that is uploaded for the SAML -// provider entity for your identity provider. Calling AssumeRoleWithSAML can -// result in an entry in your CloudTrail logs. The entry includes the value in the -// NameID element of the SAML assertion. We recommend that you use a NameIDType -// that is not associated with any personally identifiable information (PII). For -// example, you could instead use the persistent identifier -// (urn:oasis:names:tc:SAML:2.0:nameid-format:persistent). Tags (Optional) You can -// configure your IdP to pass attributes into your SAML assertion as session tags. -// Each session tag consists of a key name and an associated value. For more -// information about session tags, see Passing Session Tags in STS -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) in the -// IAM User Guide. You can pass up to 50 session tags. The plaintext session tag -// keys can’t exceed 128 characters and the values can’t exceed 256 characters. For -// these and additional limits, see IAM and STS Character Limits -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length) -// in the IAM User Guide. An Amazon Web Services conversion compresses the passed -// session policies and session tags into a packed binary format that has a +// see [Session Policies]in the IAM User Guide. +// +// Calling AssumeRoleWithSAML does not require the use of Amazon Web Services +// security credentials. The identity of the caller is validated by using keys in +// the metadata document that is uploaded for the SAML provider entity for your +// identity provider. +// +// Calling AssumeRoleWithSAML can result in an entry in your CloudTrail logs. The +// entry includes the value in the NameID element of the SAML assertion. We +// recommend that you use a NameIDType that is not associated with any personally +// identifiable information (PII). For example, you could instead use the +// persistent identifier ( urn:oasis:names:tc:SAML:2.0:nameid-format:persistent ). +// +// # Tags +// +// (Optional) You can configure your IdP to pass attributes into your SAML +// assertion as session tags. Each session tag consists of a key name and an +// associated value. For more information about session tags, see [Passing Session Tags in STS]in the IAM User +// Guide. +// +// You can pass up to 50 session tags. The plaintext session tag keys can’t exceed +// 128 characters and the values can’t exceed 256 characters. For these and +// additional limits, see [IAM and STS Character Limits]in the IAM User Guide. +// +// An Amazon Web Services conversion compresses the passed inline session policy, +// managed policy ARNs, and session tags into a packed binary format that has a // separate limit. Your request can fail for this limit even if your plaintext -// meets the other requirements. The PackedPolicySize response element indicates by -// percentage how close the policies and tags for your request are to the upper -// size limit. You can pass a session tag with the same key as a tag that is -// attached to the role. When you do, session tags override the role's tags with -// the same key. An administrator must grant you the permissions necessary to pass -// session tags. The administrator can also create granular permissions to allow -// you to pass only specific session tags. For more information, see Tutorial: -// Using Tags for Attribute-Based Access Control -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) -// in the IAM User Guide. You can set the session tags as transitive. Transitive -// tags persist during role chaining. For more information, see Chaining Roles with -// Session Tags -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining) -// in the IAM User Guide. SAML Configuration Before your application can call -// AssumeRoleWithSAML, you must configure your SAML identity provider (IdP) to -// issue the claims required by Amazon Web Services. Additionally, you must use -// Identity and Access Management (IAM) to create a SAML provider entity in your -// Amazon Web Services account that represents your identity provider. You must -// also create an IAM role that specifies this SAML provider in its trust policy. +// meets the other requirements. The PackedPolicySize response element indicates +// by percentage how close the policies and tags for your request are to the upper +// size limit. +// +// You can pass a session tag with the same key as a tag that is attached to the +// role. When you do, session tags override the role's tags with the same key. +// +// An administrator must grant you the permissions necessary to pass session tags. +// The administrator can also create granular permissions to allow you to pass only +// specific session tags. For more information, see [Tutorial: Using Tags for Attribute-Based Access Control]in the IAM User Guide. +// +// You can set the session tags as transitive. Transitive tags persist during role +// chaining. For more information, see [Chaining Roles with Session Tags]in the IAM User Guide. +// +// # SAML Configuration +// +// Before your application can call AssumeRoleWithSAML , you must configure your +// SAML identity provider (IdP) to issue the claims required by Amazon Web +// Services. Additionally, you must use Identity and Access Management (IAM) to +// create a SAML provider entity in your Amazon Web Services account that +// represents your identity provider. You must also create an IAM role that +// specifies this SAML provider in its trust policy. +// // For more information, see the following resources: // -// * About SAML 2.0-based -// Federation -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html) -// in the IAM User Guide. +// [About SAML 2.0-based Federation] +// - in the IAM User Guide. +// +// [Creating SAML Identity Providers] +// - in the IAM User Guide. // -// * Creating SAML Identity Providers -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html) -// in the IAM User Guide. +// [Configuring a Relying Party and Claims] +// - in the IAM User Guide. // -// * Configuring a Relying Party and Claims -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html) -// in the IAM User Guide. +// [Creating a Role for SAML 2.0 Federation] +// - in the IAM User Guide. // -// * Creating a Role for SAML 2.0 Federation -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html) -// in the IAM User Guide. +// [View the Maximum Session Duration Setting for a Role]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session +// [Creating a Role for SAML 2.0 Federation]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html +// [IAM and STS Character Limits]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length +// [Comparing the Amazon Web Services STS API operations]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison +// [Creating SAML Identity Providers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html +// [session policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session +// [Requesting Temporary Security Credentials]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html +// [Tutorial: Using Tags for Attribute-Based Access Control]: https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html +// [Configuring a Relying Party and Claims]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html +// [Role chaining]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-role-chaining +// [Using IAM Roles]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html +// [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session +// [Passing Session Tags in STS]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html +// [About SAML 2.0-based Federation]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html +// [Chaining Roles with Session Tags]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining func (c *Client) AssumeRoleWithSAML(ctx context.Context, params *AssumeRoleWithSAMLInput, optFns ...func(*Options)) (*AssumeRoleWithSAMLOutput, error) { if params == nil { params = &AssumeRoleWithSAMLInput{} @@ -149,10 +170,11 @@ type AssumeRoleWithSAMLInput struct { // This member is required. RoleArn *string - // The base64 encoded SAML authentication response provided by the IdP. For more - // information, see Configuring a Relying Party and Adding Claims - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/create-role-saml-IdP-tasks.html) - // in the IAM User Guide. + // The base64 encoded SAML authentication response provided by the IdP. + // + // For more information, see [Configuring a Relying Party and Adding Claims] in the IAM User Guide. + // + // [Configuring a Relying Party and Adding Claims]: https://docs.aws.amazon.com/IAM/latest/UserGuide/create-role-saml-IdP-tasks.html // // This member is required. SAMLAssertion *string @@ -166,85 +188,95 @@ type AssumeRoleWithSAMLInput struct { // than this setting, the operation fails. For example, if you specify a session // duration of 12 hours, but your administrator set the maximum session duration to // 6 hours, your operation fails. To learn how to view the maximum value for your - // role, see View the Maximum Session Duration Setting for a Role - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) - // in the IAM User Guide. By default, the value is set to 3600 seconds. The - // DurationSeconds parameter is separate from the duration of a console session - // that you might request using the returned credentials. The request to the - // federation endpoint for a console sign-in token takes a SessionDuration + // role, see [View the Maximum Session Duration Setting for a Role]in the IAM User Guide. + // + // By default, the value is set to 3600 seconds. + // + // The DurationSeconds parameter is separate from the duration of a console + // session that you might request using the returned credentials. The request to + // the federation endpoint for a console sign-in token takes a SessionDuration // parameter that specifies the maximum length of the console session. For more - // information, see Creating a URL that Enables Federated Users to Access the - // Amazon Web Services Management Console - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) - // in the IAM User Guide. + // information, see [Creating a URL that Enables Federated Users to Access the Amazon Web Services Management Console]in the IAM User Guide. + // + // [View the Maximum Session Duration Setting for a Role]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session + // [Creating a URL that Enables Federated Users to Access the Amazon Web Services Management Console]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html DurationSeconds *int32 // An IAM policy in JSON format that you want to use as an inline session policy. + // // This parameter is optional. Passing policies to this operation returns new // temporary credentials. The resulting session's permissions are the intersection // of the role's identity-based policy and the session policies. You can use the // role's temporary credentials in subsequent Amazon Web Services API calls to // access resources in the account that owns the role. You cannot use session // policies to grant more permissions than those allowed by the identity-based - // policy of the role that is being assumed. For more information, see Session - // Policies - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) - // in the IAM User Guide. The plaintext that you use for both inline and managed - // session policies can't exceed 2,048 characters. The JSON policy characters can - // be any ASCII character from the space character to the end of the valid - // character list (\u0020 through \u00FF). It can also include the tab (\u0009), - // linefeed (\u000A), and carriage return (\u000D) characters. An Amazon Web - // Services conversion compresses the passed session policies and session tags into - // a packed binary format that has a separate limit. Your request can fail for this - // limit even if your plaintext meets the other requirements. The PackedPolicySize - // response element indicates by percentage how close the policies and tags for - // your request are to the upper size limit. + // policy of the role that is being assumed. For more information, see [Session Policies]in the IAM + // User Guide. + // + // The plaintext that you use for both inline and managed session policies can't + // exceed 2,048 characters. The JSON policy characters can be any ASCII character + // from the space character to the end of the valid character list (\u0020 through + // \u00FF). It can also include the tab (\u0009), linefeed (\u000A), and carriage + // return (\u000D) characters. + // + // An Amazon Web Services conversion compresses the passed inline session policy, + // managed policy ARNs, and session tags into a packed binary format that has a + // separate limit. Your request can fail for this limit even if your plaintext + // meets the other requirements. The PackedPolicySize response element indicates + // by percentage how close the policies and tags for your request are to the upper + // size limit. + // + // [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session Policy *string // The Amazon Resource Names (ARNs) of the IAM managed policies that you want to // use as managed session policies. The policies must exist in the same account as - // the role. This parameter is optional. You can provide up to 10 managed policy - // ARNs. However, the plaintext that you use for both inline and managed session - // policies can't exceed 2,048 characters. For more information about ARNs, see - // Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces - // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in - // the Amazon Web Services General Reference. An Amazon Web Services conversion - // compresses the passed session policies and session tags into a packed binary - // format that has a separate limit. Your request can fail for this limit even if - // your plaintext meets the other requirements. The PackedPolicySize response - // element indicates by percentage how close the policies and tags for your request - // are to the upper size limit. Passing policies to this operation returns new - // temporary credentials. The resulting session's permissions are the intersection - // of the role's identity-based policy and the session policies. You can use the - // role's temporary credentials in subsequent Amazon Web Services API calls to - // access resources in the account that owns the role. You cannot use session - // policies to grant more permissions than those allowed by the identity-based - // policy of the role that is being assumed. For more information, see Session - // Policies - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) - // in the IAM User Guide. + // the role. + // + // This parameter is optional. You can provide up to 10 managed policy ARNs. + // However, the plaintext that you use for both inline and managed session policies + // can't exceed 2,048 characters. For more information about ARNs, see [Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces]in the + // Amazon Web Services General Reference. + // + // An Amazon Web Services conversion compresses the passed inline session policy, + // managed policy ARNs, and session tags into a packed binary format that has a + // separate limit. Your request can fail for this limit even if your plaintext + // meets the other requirements. The PackedPolicySize response element indicates + // by percentage how close the policies and tags for your request are to the upper + // size limit. + // + // Passing policies to this operation returns new temporary credentials. The + // resulting session's permissions are the intersection of the role's + // identity-based policy and the session policies. You can use the role's temporary + // credentials in subsequent Amazon Web Services API calls to access resources in + // the account that owns the role. You cannot use session policies to grant more + // permissions than those allowed by the identity-based policy of the role that is + // being assumed. For more information, see [Session Policies]in the IAM User Guide. + // + // [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session + // [Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html PolicyArns []types.PolicyDescriptorType noSmithyDocumentSerde } -// Contains the response to a successful AssumeRoleWithSAML request, including -// temporary Amazon Web Services credentials that can be used to make Amazon Web -// Services requests. +// Contains the response to a successful AssumeRoleWithSAML request, including temporary Amazon Web +// Services credentials that can be used to make Amazon Web Services requests. type AssumeRoleWithSAMLOutput struct { // The identifiers for the temporary security credentials that the operation // returns. AssumedRoleUser *types.AssumedRoleUser - // The value of the Recipient attribute of the SubjectConfirmationData element of + // The value of the Recipient attribute of the SubjectConfirmationData element of // the SAML assertion. Audience *string // The temporary security credentials, which include an access key ID, a secret - // access key, and a security (or session) token. The size of the security token - // that STS API operations return is not fixed. We strongly recommend that you make - // no assumptions about the maximum size. + // access key, and a security (or session) token. + // + // The size of the security token that STS API operations return is not fixed. We + // strongly recommend that you make no assumptions about the maximum size. Credentials *types.Credentials // The value of the Issuer element of the SAML assertion. @@ -252,18 +284,18 @@ type AssumeRoleWithSAMLOutput struct { // A hash value based on the concatenation of the following: // - // * The Issuer response - // value. + // - The Issuer response value. + // + // - The Amazon Web Services account ID. + // + // - The friendly name (the last part of the ARN) of the SAML provider in IAM. // - // * The Amazon Web Services account ID. + // The combination of NameQualifier and Subject can be used to uniquely identify a + // user. // - // * The friendly name (the last - // part of the ARN) of the SAML provider in IAM. + // The following pseudocode shows how the hash value is calculated: // - // The combination of NameQualifier - // and Subject can be used to uniquely identify a federated user. The following - // pseudocode shows how the hash value is calculated: BASE64 ( SHA1 ( - // "https://example.com/saml" + "123456789012" + "/MySAMLIdP" ) ) + // BASE64 ( SHA1 ( "https://example.com/saml" + "123456789012" + "/MySAMLIdP" ) ) NameQualifier *string // A percentage value that indicates the packed size of the session policies and @@ -272,35 +304,38 @@ type AssumeRoleWithSAMLOutput struct { // allowed space. PackedPolicySize *int32 - // The value in the SourceIdentity attribute in the SAML assertion. You can require - // users to set a source identity value when they assume a role. You do this by - // using the sts:SourceIdentity condition key in a role trust policy. That way, - // actions that are taken with the role are associated with that user. After the - // source identity is set, the value cannot be changed. It is present in the - // request for all actions that are taken by the role and persists across chained - // role - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts#iam-term-role-chaining) - // sessions. You can configure your SAML identity provider to use an attribute - // associated with your users, like user name or email, as the source identity when - // calling AssumeRoleWithSAML. You do this by adding an attribute to the SAML - // assertion. For more information about using source identity, see Monitor and - // control actions taken with assumed roles - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html) - // in the IAM User Guide. The regex used to validate this parameter is a string of - // characters consisting of upper- and lower-case alphanumeric characters with no - // spaces. You can also include underscores or any of the following characters: - // =,.@- + // The value in the SourceIdentity attribute in the SAML assertion. + // + // You can require users to set a source identity value when they assume a role. + // You do this by using the sts:SourceIdentity condition key in a role trust + // policy. That way, actions that are taken with the role are associated with that + // user. After the source identity is set, the value cannot be changed. It is + // present in the request for all actions that are taken by the role and persists + // across [chained role]sessions. You can configure your SAML identity provider to use an + // attribute associated with your users, like user name or email, as the source + // identity when calling AssumeRoleWithSAML . You do this by adding an attribute to + // the SAML assertion. For more information about using source identity, see [Monitor and control actions taken with assumed roles]in + // the IAM User Guide. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can also + // include underscores or any of the following characters: =,.@- + // + // [chained role]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts#iam-term-role-chaining + // [Monitor and control actions taken with assumed roles]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html SourceIdentity *string // The value of the NameID element in the Subject element of the SAML assertion. Subject *string - // The format of the name ID, as defined by the Format attribute in the NameID + // The format of the name ID, as defined by the Format attribute in the NameID // element of the SAML assertion. Typical examples of the format are transient or - // persistent. If the format includes the prefix - // urn:oasis:names:tc:SAML:2.0:nameid-format, that prefix is removed. For example, - // urn:oasis:names:tc:SAML:2.0:nameid-format:transient is returned as transient. If - // the format includes any other prefix, the format is returned with no + // persistent . + // + // If the format includes the prefix urn:oasis:names:tc:SAML:2.0:nameid-format , + // that prefix is removed. For example, + // urn:oasis:names:tc:SAML:2.0:nameid-format:transient is returned as transient . + // If the format includes any other prefix, the format is returned with no // modifications. SubjectType *string @@ -311,6 +346,9 @@ type AssumeRoleWithSAMLOutput struct { } func (c *Client) addOperationAssumeRoleWithSAMLMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsAwsquery_serializeOpAssumeRoleWithSAML{}, middleware.After) if err != nil { return err @@ -319,28 +357,38 @@ func (c *Client) addOperationAssumeRoleWithSAMLMiddlewares(stack *middleware.Sta if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "AssumeRoleWithSAML"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -349,12 +397,24 @@ func (c *Client) addOperationAssumeRoleWithSAMLMiddlewares(stack *middleware.Sta if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpAssumeRoleWithSAMLValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opAssumeRoleWithSAML(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -364,6 +424,21 @@ func (c *Client) addOperationAssumeRoleWithSAMLMiddlewares(stack *middleware.Sta if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } @@ -371,7 +446,6 @@ func newServiceMetadataMiddleware_opAssumeRoleWithSAML(region string) *awsmiddle return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, - SigningName: "sts", OperationName: "AssumeRoleWithSAML", } } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go index 2e8b51c98d5f..ffe2479f6362 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go @@ -4,6 +4,7 @@ package sts import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/service/sts/types" "github.com/aws/smithy-go/middleware" @@ -13,132 +14,143 @@ import ( // Returns a set of temporary security credentials for users who have been // authenticated in a mobile or web application with a web identity provider. // Example providers include the OAuth 2.0 providers Login with Amazon and -// Facebook, or any OpenID Connect-compatible identity provider such as Google or -// Amazon Cognito federated identities -// (https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html). +// Facebook, or any OpenID Connect-compatible identity provider such as Google or [Amazon Cognito federated identities]. +// // For mobile applications, we recommend that you use Amazon Cognito. You can use -// Amazon Cognito with the Amazon Web Services SDK for iOS Developer Guide -// (http://aws.amazon.com/sdkforios/) and the Amazon Web Services SDK for Android -// Developer Guide (http://aws.amazon.com/sdkforandroid/) to uniquely identify a -// user. You can also supply the user with a consistent identity throughout the -// lifetime of an application. To learn more about Amazon Cognito, see Amazon -// Cognito Overview -// (https://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-auth.html#d0e840) -// in Amazon Web Services SDK for Android Developer Guide and Amazon Cognito -// Overview -// (https://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-auth.html#d0e664) -// in the Amazon Web Services SDK for iOS Developer Guide. Calling -// AssumeRoleWithWebIdentity does not require the use of Amazon Web Services -// security credentials. Therefore, you can distribute an application (for example, -// on mobile devices) that requests temporary security credentials without +// Amazon Cognito with the [Amazon Web Services SDK for iOS Developer Guide]and the [Amazon Web Services SDK for Android Developer Guide] to uniquely identify a user. You can also +// supply the user with a consistent identity throughout the lifetime of an +// application. +// +// To learn more about Amazon Cognito, see [Amazon Cognito identity pools] in Amazon Cognito Developer Guide. +// +// Calling AssumeRoleWithWebIdentity does not require the use of Amazon Web +// Services security credentials. Therefore, you can distribute an application (for +// example, on mobile devices) that requests temporary security credentials without // including long-term Amazon Web Services credentials in the application. You also // don't need to deploy server-based proxy services that use long-term Amazon Web // Services credentials. Instead, the identity of the caller is validated by using // a token from the web identity provider. For a comparison of // AssumeRoleWithWebIdentity with the other API operations that produce temporary -// credentials, see Requesting Temporary Security Credentials -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) -// and Comparing the Amazon Web Services STS API operations -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) -// in the IAM User Guide. The temporary security credentials returned by this API -// consist of an access key ID, a secret access key, and a security token. -// Applications can use these temporary security credentials to sign calls to -// Amazon Web Services service API operations. Session Duration By default, the -// temporary security credentials created by AssumeRoleWithWebIdentity last for one -// hour. However, you can use the optional DurationSeconds parameter to specify the -// duration of your session. You can provide a value from 900 seconds (15 minutes) -// up to the maximum session duration setting for the role. This setting can have a -// value from 1 hour to 12 hours. To learn how to view the maximum value for your -// role, see View the Maximum Session Duration Setting for a Role -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) -// in the IAM User Guide. The maximum session duration limit applies when you use -// the AssumeRole* API operations or the assume-role* CLI commands. However the -// limit does not apply when you use those operations to create a console URL. For -// more information, see Using IAM Roles -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) in the IAM -// User Guide. Permissions The temporary security credentials created by -// AssumeRoleWithWebIdentity can be used to make API calls to any Amazon Web -// Services service with the following exception: you cannot call the STS -// GetFederationToken or GetSessionToken API operations. (Optional) You can pass -// inline or managed session policies -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) -// to this operation. You can pass a single JSON policy document to use as an -// inline session policy. You can also specify up to 10 managed policies to use as -// managed session policies. The plaintext that you use for both inline and managed -// session policies can't exceed 2,048 characters. Passing policies to this -// operation returns new temporary credentials. The resulting session's permissions -// are the intersection of the role's identity-based policy and the session -// policies. You can use the role's temporary credentials in subsequent Amazon Web -// Services API calls to access resources in the account that owns the role. You -// cannot use session policies to grant more permissions than those allowed by the +// credentials, see [Requesting Temporary Security Credentials]and [Comparing the Amazon Web Services STS API operations] in the IAM User Guide. +// +// The temporary security credentials returned by this API consist of an access +// key ID, a secret access key, and a security token. Applications can use these +// temporary security credentials to sign calls to Amazon Web Services service API +// operations. +// +// # Session Duration +// +// By default, the temporary security credentials created by +// AssumeRoleWithWebIdentity last for one hour. However, you can use the optional +// DurationSeconds parameter to specify the duration of your session. You can +// provide a value from 900 seconds (15 minutes) up to the maximum session duration +// setting for the role. This setting can have a value from 1 hour to 12 hours. To +// learn how to view the maximum value for your role, see [View the Maximum Session Duration Setting for a Role]in the IAM User Guide. +// The maximum session duration limit applies when you use the AssumeRole* API +// operations or the assume-role* CLI commands. However the limit does not apply +// when you use those operations to create a console URL. For more information, see +// [Using IAM Roles]in the IAM User Guide. +// +// # Permissions +// +// The temporary security credentials created by AssumeRoleWithWebIdentity can be +// used to make API calls to any Amazon Web Services service with the following +// exception: you cannot call the STS GetFederationToken or GetSessionToken API +// operations. +// +// (Optional) You can pass inline or managed [session policies] to this operation. You can pass a +// single JSON policy document to use as an inline session policy. You can also +// specify up to 10 managed policy Amazon Resource Names (ARNs) to use as managed +// session policies. The plaintext that you use for both inline and managed session +// policies can't exceed 2,048 characters. Passing policies to this operation +// returns new temporary credentials. The resulting session's permissions are the +// intersection of the role's identity-based policy and the session policies. You +// can use the role's temporary credentials in subsequent Amazon Web Services API +// calls to access resources in the account that owns the role. You cannot use +// session policies to grant more permissions than those allowed by the // identity-based policy of the role that is being assumed. For more information, -// see Session Policies -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) -// in the IAM User Guide. Tags (Optional) You can configure your IdP to pass -// attributes into your web identity token as session tags. Each session tag -// consists of a key name and an associated value. For more information about -// session tags, see Passing Session Tags in STS -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) in the -// IAM User Guide. You can pass up to 50 session tags. The plaintext session tag -// keys can’t exceed 128 characters and the values can’t exceed 256 characters. For -// these and additional limits, see IAM and STS Character Limits -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length) -// in the IAM User Guide. An Amazon Web Services conversion compresses the passed -// session policies and session tags into a packed binary format that has a +// see [Session Policies]in the IAM User Guide. +// +// # Tags +// +// (Optional) You can configure your IdP to pass attributes into your web identity +// token as session tags. Each session tag consists of a key name and an associated +// value. For more information about session tags, see [Passing Session Tags in STS]in the IAM User Guide. +// +// You can pass up to 50 session tags. The plaintext session tag keys can’t exceed +// 128 characters and the values can’t exceed 256 characters. For these and +// additional limits, see [IAM and STS Character Limits]in the IAM User Guide. +// +// An Amazon Web Services conversion compresses the passed inline session policy, +// managed policy ARNs, and session tags into a packed binary format that has a // separate limit. Your request can fail for this limit even if your plaintext -// meets the other requirements. The PackedPolicySize response element indicates by -// percentage how close the policies and tags for your request are to the upper -// size limit. You can pass a session tag with the same key as a tag that is -// attached to the role. When you do, the session tag overrides the role tag with -// the same key. An administrator must grant you the permissions necessary to pass -// session tags. The administrator can also create granular permissions to allow -// you to pass only specific session tags. For more information, see Tutorial: -// Using Tags for Attribute-Based Access Control -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) -// in the IAM User Guide. You can set the session tags as transitive. Transitive -// tags persist during role chaining. For more information, see Chaining Roles with -// Session Tags -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining) -// in the IAM User Guide. Identities Before your application can call -// AssumeRoleWithWebIdentity, you must have an identity token from a supported -// identity provider and create a role that the application can assume. The role -// that your application assumes must trust the identity provider that is -// associated with the identity token. In other words, the identity provider must -// be specified in the role's trust policy. Calling AssumeRoleWithWebIdentity can -// result in an entry in your CloudTrail logs. The entry includes the Subject -// (http://openid.net/specs/openid-connect-core-1_0.html#Claims) of the provided -// web identity token. We recommend that you avoid using any personally -// identifiable information (PII) in this field. For example, you could instead use -// a GUID or a pairwise identifier, as suggested in the OIDC specification -// (http://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes). For more -// information about how to use web identity federation and the +// meets the other requirements. The PackedPolicySize response element indicates +// by percentage how close the policies and tags for your request are to the upper +// size limit. +// +// You can pass a session tag with the same key as a tag that is attached to the +// role. When you do, the session tag overrides the role tag with the same key. +// +// An administrator must grant you the permissions necessary to pass session tags. +// The administrator can also create granular permissions to allow you to pass only +// specific session tags. For more information, see [Tutorial: Using Tags for Attribute-Based Access Control]in the IAM User Guide. +// +// You can set the session tags as transitive. Transitive tags persist during role +// chaining. For more information, see [Chaining Roles with Session Tags]in the IAM User Guide. +// +// # Identities +// +// Before your application can call AssumeRoleWithWebIdentity , you must have an +// identity token from a supported identity provider and create a role that the +// application can assume. The role that your application assumes must trust the +// identity provider that is associated with the identity token. In other words, +// the identity provider must be specified in the role's trust policy. +// +// Calling AssumeRoleWithWebIdentity can result in an entry in your CloudTrail +// logs. The entry includes the [Subject]of the provided web identity token. We recommend +// that you avoid using any personally identifiable information (PII) in this +// field. For example, you could instead use a GUID or a pairwise identifier, as [suggested in the OIDC specification]. +// +// For more information about how to use web identity federation and the // AssumeRoleWithWebIdentity API, see the following resources: // -// * Using Web -// Identity Federation API Operations for Mobile Apps -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_manual.html) -// and Federation Through a Web-based Identity Provider -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity). +// [Using Web Identity Federation API Operations for Mobile Apps] +// - and [Federation Through a Web-based Identity Provider]. +// +// [Web Identity Federation Playground] +// - . Walk through the process of authenticating through Login with Amazon, +// Facebook, or Google, getting temporary security credentials, and then using +// those credentials to make a request to Amazon Web Services. // -// * -// Web Identity Federation Playground -// (https://aws.amazon.com/blogs/aws/the-aws-web-identity-federation-playground/). -// Walk through the process of authenticating through Login with Amazon, Facebook, -// or Google, getting temporary security credentials, and then using those -// credentials to make a request to Amazon Web Services. +// [Amazon Web Services SDK for iOS Developer Guide] +// - and [Amazon Web Services SDK for Android Developer Guide]. These toolkits contain sample apps that show how to invoke the +// identity providers. The toolkits then show how to use the information from these +// providers to get and use temporary security credentials. // -// * Amazon Web Services SDK -// for iOS Developer Guide (http://aws.amazon.com/sdkforios/) and Amazon Web -// Services SDK for Android Developer Guide (http://aws.amazon.com/sdkforandroid/). -// These toolkits contain sample apps that show how to invoke the identity -// providers. The toolkits then show how to use the information from these -// providers to get and use temporary security credentials. +// [Web Identity Federation with Mobile Applications] +// - . This article discusses web identity federation and shows an example of +// how to use web identity federation to get access to content in Amazon S3. // -// * Web Identity -// Federation with Mobile Applications -// (http://aws.amazon.com/articles/web-identity-federation-with-mobile-applications). -// This article discusses web identity federation and shows an example of how to -// use web identity federation to get access to content in Amazon S3. +// [Amazon Web Services SDK for iOS Developer Guide]: http://aws.amazon.com/sdkforios/ +// [View the Maximum Session Duration Setting for a Role]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session +// [Web Identity Federation Playground]: https://aws.amazon.com/blogs/aws/the-aws-web-identity-federation-playground/ +// [Amazon Web Services SDK for Android Developer Guide]: http://aws.amazon.com/sdkforandroid/ +// [IAM and STS Character Limits]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length +// [Comparing the Amazon Web Services STS API operations]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison +// [session policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session +// [Requesting Temporary Security Credentials]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html +// [Subject]: http://openid.net/specs/openid-connect-core-1_0.html#Claims +// [Tutorial: Using Tags for Attribute-Based Access Control]: https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html +// [Amazon Cognito identity pools]: https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html +// [Federation Through a Web-based Identity Provider]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity +// [Using IAM Roles]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html +// [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session +// [Amazon Cognito federated identities]: https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html +// [Passing Session Tags in STS]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html +// [Chaining Roles with Session Tags]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining +// [Web Identity Federation with Mobile Applications]: http://aws.amazon.com/articles/web-identity-federation-with-mobile-applications +// [Using Web Identity Federation API Operations for Mobile Apps]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_manual.html +// [suggested in the OIDC specification]: http://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes func (c *Client) AssumeRoleWithWebIdentity(ctx context.Context, params *AssumeRoleWithWebIdentityInput, optFns ...func(*Options)) (*AssumeRoleWithWebIdentityOutput, error) { if params == nil { params = &AssumeRoleWithWebIdentityInput{} @@ -165,10 +177,11 @@ type AssumeRoleWithWebIdentityInput struct { // identifier that is associated with the user who is using your application. That // way, the temporary security credentials that your application will use are // associated with that user. This session name is included as part of the ARN and - // assumed role ID in the AssumedRoleUser response element. The regex used to - // validate this parameter is a string of characters consisting of upper- and - // lower-case alphanumeric characters with no spaces. You can also include - // underscores or any of the following characters: =,.@- + // assumed role ID in the AssumedRoleUser response element. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can also + // include underscores or any of the following characters: =,.@- // // This member is required. RoleSessionName *string @@ -176,7 +189,8 @@ type AssumeRoleWithWebIdentityInput struct { // The OAuth 2.0 access token or OpenID Connect ID token that is provided by the // identity provider. Your application must get this token by authenticating the // user who is using your application with a web identity provider before the - // application makes an AssumeRoleWithWebIdentity call. + // application makes an AssumeRoleWithWebIdentity call. Only tokens with RSA + // algorithms (RS256) are supported. // // This member is required. WebIdentityToken *string @@ -187,85 +201,97 @@ type AssumeRoleWithWebIdentityInput struct { // higher than this setting, the operation fails. For example, if you specify a // session duration of 12 hours, but your administrator set the maximum session // duration to 6 hours, your operation fails. To learn how to view the maximum - // value for your role, see View the Maximum Session Duration Setting for a Role - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session) - // in the IAM User Guide. By default, the value is set to 3600 seconds. The - // DurationSeconds parameter is separate from the duration of a console session - // that you might request using the returned credentials. The request to the - // federation endpoint for a console sign-in token takes a SessionDuration + // value for your role, see [View the Maximum Session Duration Setting for a Role]in the IAM User Guide. + // + // By default, the value is set to 3600 seconds. + // + // The DurationSeconds parameter is separate from the duration of a console + // session that you might request using the returned credentials. The request to + // the federation endpoint for a console sign-in token takes a SessionDuration // parameter that specifies the maximum length of the console session. For more - // information, see Creating a URL that Enables Federated Users to Access the - // Amazon Web Services Management Console - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html) - // in the IAM User Guide. + // information, see [Creating a URL that Enables Federated Users to Access the Amazon Web Services Management Console]in the IAM User Guide. + // + // [View the Maximum Session Duration Setting for a Role]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session + // [Creating a URL that Enables Federated Users to Access the Amazon Web Services Management Console]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html DurationSeconds *int32 // An IAM policy in JSON format that you want to use as an inline session policy. + // // This parameter is optional. Passing policies to this operation returns new // temporary credentials. The resulting session's permissions are the intersection // of the role's identity-based policy and the session policies. You can use the // role's temporary credentials in subsequent Amazon Web Services API calls to // access resources in the account that owns the role. You cannot use session // policies to grant more permissions than those allowed by the identity-based - // policy of the role that is being assumed. For more information, see Session - // Policies - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) - // in the IAM User Guide. The plaintext that you use for both inline and managed - // session policies can't exceed 2,048 characters. The JSON policy characters can - // be any ASCII character from the space character to the end of the valid - // character list (\u0020 through \u00FF). It can also include the tab (\u0009), - // linefeed (\u000A), and carriage return (\u000D) characters. An Amazon Web - // Services conversion compresses the passed session policies and session tags into - // a packed binary format that has a separate limit. Your request can fail for this - // limit even if your plaintext meets the other requirements. The PackedPolicySize - // response element indicates by percentage how close the policies and tags for - // your request are to the upper size limit. + // policy of the role that is being assumed. For more information, see [Session Policies]in the IAM + // User Guide. + // + // The plaintext that you use for both inline and managed session policies can't + // exceed 2,048 characters. The JSON policy characters can be any ASCII character + // from the space character to the end of the valid character list (\u0020 through + // \u00FF). It can also include the tab (\u0009), linefeed (\u000A), and carriage + // return (\u000D) characters. + // + // An Amazon Web Services conversion compresses the passed inline session policy, + // managed policy ARNs, and session tags into a packed binary format that has a + // separate limit. Your request can fail for this limit even if your plaintext + // meets the other requirements. The PackedPolicySize response element indicates + // by percentage how close the policies and tags for your request are to the upper + // size limit. + // + // [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session Policy *string // The Amazon Resource Names (ARNs) of the IAM managed policies that you want to // use as managed session policies. The policies must exist in the same account as - // the role. This parameter is optional. You can provide up to 10 managed policy - // ARNs. However, the plaintext that you use for both inline and managed session - // policies can't exceed 2,048 characters. For more information about ARNs, see - // Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces - // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in - // the Amazon Web Services General Reference. An Amazon Web Services conversion - // compresses the passed session policies and session tags into a packed binary - // format that has a separate limit. Your request can fail for this limit even if - // your plaintext meets the other requirements. The PackedPolicySize response - // element indicates by percentage how close the policies and tags for your request - // are to the upper size limit. Passing policies to this operation returns new - // temporary credentials. The resulting session's permissions are the intersection - // of the role's identity-based policy and the session policies. You can use the - // role's temporary credentials in subsequent Amazon Web Services API calls to - // access resources in the account that owns the role. You cannot use session - // policies to grant more permissions than those allowed by the identity-based - // policy of the role that is being assumed. For more information, see Session - // Policies - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) - // in the IAM User Guide. + // the role. + // + // This parameter is optional. You can provide up to 10 managed policy ARNs. + // However, the plaintext that you use for both inline and managed session policies + // can't exceed 2,048 characters. For more information about ARNs, see [Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces]in the + // Amazon Web Services General Reference. + // + // An Amazon Web Services conversion compresses the passed inline session policy, + // managed policy ARNs, and session tags into a packed binary format that has a + // separate limit. Your request can fail for this limit even if your plaintext + // meets the other requirements. The PackedPolicySize response element indicates + // by percentage how close the policies and tags for your request are to the upper + // size limit. + // + // Passing policies to this operation returns new temporary credentials. The + // resulting session's permissions are the intersection of the role's + // identity-based policy and the session policies. You can use the role's temporary + // credentials in subsequent Amazon Web Services API calls to access resources in + // the account that owns the role. You cannot use session policies to grant more + // permissions than those allowed by the identity-based policy of the role that is + // being assumed. For more information, see [Session Policies]in the IAM User Guide. + // + // [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session + // [Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html PolicyArns []types.PolicyDescriptorType // The fully qualified host component of the domain name of the OAuth 2.0 identity // provider. Do not specify this value for an OpenID Connect identity provider. + // // Currently www.amazon.com and graph.facebook.com are the only supported identity // providers for OAuth 2.0 access tokens. Do not include URL schemes and port - // numbers. Do not specify this value for OpenID Connect ID tokens. + // numbers. + // + // Do not specify this value for OpenID Connect ID tokens. ProviderId *string noSmithyDocumentSerde } -// Contains the response to a successful AssumeRoleWithWebIdentity request, -// including temporary Amazon Web Services credentials that can be used to make -// Amazon Web Services requests. +// Contains the response to a successful AssumeRoleWithWebIdentity request, including temporary Amazon Web +// Services credentials that can be used to make Amazon Web Services requests. type AssumeRoleWithWebIdentityOutput struct { // The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers // that you can use to refer to the resulting temporary security credentials. For // example, you can reference these credentials as a principal in a resource-based // policy by using the ARN or assumed role ID. The ARN and ID include the - // RoleSessionName that you specified when you called AssumeRole. + // RoleSessionName that you specified when you called AssumeRole . AssumedRoleUser *types.AssumedRoleUser // The intended audience (also known as client ID) of the web identity token. This @@ -274,9 +300,10 @@ type AssumeRoleWithWebIdentityOutput struct { Audience *string // The temporary security credentials, which include an access key ID, a secret - // access key, and a security token. The size of the security token that STS API - // operations return is not fixed. We strongly recommend that you make no - // assumptions about the maximum size. + // access key, and a security token. + // + // The size of the security token that STS API operations return is not fixed. We + // strongly recommend that you make no assumptions about the maximum size. Credentials *types.Credentials // A percentage value that indicates the packed size of the session policies and @@ -285,33 +312,34 @@ type AssumeRoleWithWebIdentityOutput struct { // allowed space. PackedPolicySize *int32 - // The issuing authority of the web identity token presented. For OpenID Connect ID - // tokens, this contains the value of the iss field. For OAuth 2.0 access tokens, - // this contains the value of the ProviderId parameter that was passed in the - // AssumeRoleWithWebIdentity request. + // The issuing authority of the web identity token presented. For OpenID Connect + // ID tokens, this contains the value of the iss field. For OAuth 2.0 access + // tokens, this contains the value of the ProviderId parameter that was passed in + // the AssumeRoleWithWebIdentity request. Provider *string // The value of the source identity that is returned in the JSON web token (JWT) - // from the identity provider. You can require users to set a source identity value - // when they assume a role. You do this by using the sts:SourceIdentity condition - // key in a role trust policy. That way, actions that are taken with the role are - // associated with that user. After the source identity is set, the value cannot be - // changed. It is present in the request for all actions that are taken by the role - // and persists across chained role - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts#iam-term-role-chaining) - // sessions. You can configure your identity provider to use an attribute + // from the identity provider. + // + // You can require users to set a source identity value when they assume a role. + // You do this by using the sts:SourceIdentity condition key in a role trust + // policy. That way, actions that are taken with the role are associated with that + // user. After the source identity is set, the value cannot be changed. It is + // present in the request for all actions that are taken by the role and persists + // across [chained role]sessions. You can configure your identity provider to use an attribute // associated with your users, like user name or email, as the source identity when - // calling AssumeRoleWithWebIdentity. You do this by adding a claim to the JSON web - // token. To learn more about OIDC tokens and claims, see Using Tokens with User - // Pools - // (https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) - // in the Amazon Cognito Developer Guide. For more information about using source - // identity, see Monitor and control actions taken with assumed roles - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html) - // in the IAM User Guide. The regex used to validate this parameter is a string of - // characters consisting of upper- and lower-case alphanumeric characters with no - // spaces. You can also include underscores or any of the following characters: - // =,.@- + // calling AssumeRoleWithWebIdentity . You do this by adding a claim to the JSON + // web token. To learn more about OIDC tokens and claims, see [Using Tokens with User Pools]in the Amazon + // Cognito Developer Guide. For more information about using source identity, see [Monitor and control actions taken with assumed roles] + // in the IAM User Guide. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can also + // include underscores or any of the following characters: =,.@- + // + // [chained role]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts#iam-term-role-chaining + // [Monitor and control actions taken with assumed roles]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html + // [Using Tokens with User Pools]: https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html SourceIdentity *string // The unique user identifier that is returned by the identity provider. This @@ -329,6 +357,9 @@ type AssumeRoleWithWebIdentityOutput struct { } func (c *Client) addOperationAssumeRoleWithWebIdentityMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsAwsquery_serializeOpAssumeRoleWithWebIdentity{}, middleware.After) if err != nil { return err @@ -337,28 +368,38 @@ func (c *Client) addOperationAssumeRoleWithWebIdentityMiddlewares(stack *middlew if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "AssumeRoleWithWebIdentity"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -367,12 +408,24 @@ func (c *Client) addOperationAssumeRoleWithWebIdentityMiddlewares(stack *middlew if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpAssumeRoleWithWebIdentityValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opAssumeRoleWithWebIdentity(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -382,6 +435,21 @@ func (c *Client) addOperationAssumeRoleWithWebIdentityMiddlewares(stack *middlew if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } @@ -389,7 +457,6 @@ func newServiceMetadataMiddleware_opAssumeRoleWithWebIdentity(region string) *aw return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, - SigningName: "sts", OperationName: "AssumeRoleWithWebIdentity", } } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go index b7a637d420cc..a56840e1b0da 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go @@ -4,45 +4,46 @@ package sts import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" - "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) // Decodes additional information about the authorization status of a request from -// an encoded message returned in response to an Amazon Web Services request. For -// example, if a user is not authorized to perform an operation that he or she has -// requested, the request returns a Client.UnauthorizedOperation response (an HTTP -// 403 response). Some Amazon Web Services operations additionally return an -// encoded message that can provide details about this authorization failure. Only -// certain Amazon Web Services operations return an encoded authorization message. -// The documentation for an individual operation indicates whether that operation -// returns an encoded message in addition to returning an HTTP code. The message is -// encoded because the details of the authorization status can contain privileged -// information that the user who requested the operation should not see. To decode -// an authorization status message, a user must be granted permissions through an -// IAM policy -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) to -// request the DecodeAuthorizationMessage (sts:DecodeAuthorizationMessage) action. +// an encoded message returned in response to an Amazon Web Services request. +// +// For example, if a user is not authorized to perform an operation that he or she +// has requested, the request returns a Client.UnauthorizedOperation response (an +// HTTP 403 response). Some Amazon Web Services operations additionally return an +// encoded message that can provide details about this authorization failure. +// +// Only certain Amazon Web Services operations return an encoded authorization +// message. The documentation for an individual operation indicates whether that +// operation returns an encoded message in addition to returning an HTTP code. +// +// The message is encoded because the details of the authorization status can +// contain privileged information that the user who requested the operation should +// not see. To decode an authorization status message, a user must be granted +// permissions through an IAM [policy]to request the DecodeAuthorizationMessage ( +// sts:DecodeAuthorizationMessage ) action. +// // The decoded message includes the following type of information: // -// * Whether the -// request was denied due to an explicit deny or due to the absence of an explicit -// allow. For more information, see Determining Whether a Request is Allowed or -// Denied -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow) -// in the IAM User Guide. +// - Whether the request was denied due to an explicit deny or due to the +// absence of an explicit allow. For more information, see [Determining Whether a Request is Allowed or Denied]in the IAM User +// Guide. // -// * The principal who made the request. +// - The principal who made the request. // -// * The requested -// action. +// - The requested action. // -// * The requested resource. +// - The requested resource. // -// * The values of condition keys in the -// context of the user's request. +// - The values of condition keys in the context of the user's request. +// +// [Determining Whether a Request is Allowed or Denied]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow +// [policy]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html func (c *Client) DecodeAuthorizationMessage(ctx context.Context, params *DecodeAuthorizationMessageInput, optFns ...func(*Options)) (*DecodeAuthorizationMessageOutput, error) { if params == nil { params = &DecodeAuthorizationMessageInput{} @@ -83,6 +84,9 @@ type DecodeAuthorizationMessageOutput struct { } func (c *Client) addOperationDecodeAuthorizationMessageMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsAwsquery_serializeOpDecodeAuthorizationMessage{}, middleware.After) if err != nil { return err @@ -91,34 +95,41 @@ func (c *Client) addOperationDecodeAuthorizationMessageMiddlewares(stack *middle if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "DecodeAuthorizationMessage"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + if err = addComputePayloadSHA256(stack); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { return err } - if err = addHTTPSignerV4Middleware(stack, options); err != nil { + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -127,12 +138,24 @@ func (c *Client) addOperationDecodeAuthorizationMessageMiddlewares(stack *middle if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpDecodeAuthorizationMessageValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDecodeAuthorizationMessage(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -142,6 +165,21 @@ func (c *Client) addOperationDecodeAuthorizationMessageMiddlewares(stack *middle if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } @@ -149,7 +187,6 @@ func newServiceMetadataMiddleware_opDecodeAuthorizationMessage(region string) *a return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, - SigningName: "sts", OperationName: "DecodeAuthorizationMessage", } } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go index b86a425d0a87..c80b0550b043 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go @@ -4,32 +4,37 @@ package sts import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" - "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Returns the account identifier for the specified access key ID. Access keys -// consist of two parts: an access key ID (for example, AKIAIOSFODNN7EXAMPLE) and a -// secret access key (for example, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY). For -// more information about access keys, see Managing Access Keys for IAM Users -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) -// in the IAM User Guide. When you pass an access key ID to this operation, it -// returns the ID of the Amazon Web Services account to which the keys belong. -// Access key IDs beginning with AKIA are long-term credentials for an IAM user or -// the Amazon Web Services account root user. Access key IDs beginning with ASIA -// are temporary credentials that are created using STS operations. If the account -// in the response belongs to you, you can sign in as the root user and review your -// root user access keys. Then, you can pull a credentials report -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html) -// to learn which IAM user owns the keys. To learn who requested the temporary -// credentials for an ASIA access key, view the STS events in your CloudTrail logs -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html) -// in the IAM User Guide. This operation does not indicate the state of the access -// key. The key might be active, inactive, or deleted. Active keys might not have -// permissions to perform an operation. Providing a deleted access key might return -// an error that the key doesn't exist. +// Returns the account identifier for the specified access key ID. +// +// Access keys consist of two parts: an access key ID (for example, +// AKIAIOSFODNN7EXAMPLE ) and a secret access key (for example, +// wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ). For more information about access +// keys, see [Managing Access Keys for IAM Users]in the IAM User Guide. +// +// When you pass an access key ID to this operation, it returns the ID of the +// Amazon Web Services account to which the keys belong. Access key IDs beginning +// with AKIA are long-term credentials for an IAM user or the Amazon Web Services +// account root user. Access key IDs beginning with ASIA are temporary credentials +// that are created using STS operations. If the account in the response belongs to +// you, you can sign in as the root user and review your root user access keys. +// Then, you can pull a [credentials report]to learn which IAM user owns the keys. To learn who +// requested the temporary credentials for an ASIA access key, view the STS events +// in your [CloudTrail logs]in the IAM User Guide. +// +// This operation does not indicate the state of the access key. The key might be +// active, inactive, or deleted. Active keys might not have permissions to perform +// an operation. Providing a deleted access key might return an error that the key +// doesn't exist. +// +// [credentials report]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html +// [CloudTrail logs]: https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html +// [Managing Access Keys for IAM Users]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html func (c *Client) GetAccessKeyInfo(ctx context.Context, params *GetAccessKeyInfoInput, optFns ...func(*Options)) (*GetAccessKeyInfoOutput, error) { if params == nil { params = &GetAccessKeyInfoInput{} @@ -47,9 +52,10 @@ func (c *Client) GetAccessKeyInfo(ctx context.Context, params *GetAccessKeyInfoI type GetAccessKeyInfoInput struct { - // The identifier of an access key. This parameter allows (through its regex - // pattern) a string of characters that can consist of any upper- or lowercase - // letter or digit. + // The identifier of an access key. + // + // This parameter allows (through its regex pattern) a string of characters that + // can consist of any upper- or lowercase letter or digit. // // This member is required. AccessKeyId *string @@ -69,6 +75,9 @@ type GetAccessKeyInfoOutput struct { } func (c *Client) addOperationGetAccessKeyInfoMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsAwsquery_serializeOpGetAccessKeyInfo{}, middleware.After) if err != nil { return err @@ -77,34 +86,41 @@ func (c *Client) addOperationGetAccessKeyInfoMiddlewares(stack *middleware.Stack if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "GetAccessKeyInfo"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + if err = addComputePayloadSHA256(stack); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { return err } - if err = addHTTPSignerV4Middleware(stack, options); err != nil { + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -113,12 +129,24 @@ func (c *Client) addOperationGetAccessKeyInfoMiddlewares(stack *middleware.Stack if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpGetAccessKeyInfoValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetAccessKeyInfo(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -128,6 +156,21 @@ func (c *Client) addOperationGetAccessKeyInfoMiddlewares(stack *middleware.Stack if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } @@ -135,7 +178,6 @@ func newServiceMetadataMiddleware_opGetAccessKeyInfo(region string) *awsmiddlewa return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, - SigningName: "sts", OperationName: "GetAccessKeyInfo", } } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go index a7f96c22014e..49304bdaf7eb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go @@ -4,6 +4,7 @@ package sts import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/smithy-go/middleware" @@ -11,14 +12,15 @@ import ( ) // Returns details about the IAM user or role whose credentials are used to call -// the operation. No permissions are required to perform this operation. If an -// administrator adds a policy to your IAM user or role that explicitly denies -// access to the sts:GetCallerIdentity action, you can still perform this -// operation. Permissions are not required because the same information is returned -// when an IAM user or role is denied access. To view an example response, see I Am -// Not Authorized to Perform: iam:DeleteVirtualMFADevice -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_access-denied-delete-mfa) -// in the IAM User Guide. +// the operation. +// +// No permissions are required to perform this operation. If an administrator +// attaches a policy to your identity that explicitly denies access to the +// sts:GetCallerIdentity action, you can still perform this operation. Permissions +// are not required because the same information is returned when access is denied. +// To view an example response, see [I Am Not Authorized to Perform: iam:DeleteVirtualMFADevice]in the IAM User Guide. +// +// [I Am Not Authorized to Perform: iam:DeleteVirtualMFADevice]: https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_access-denied-delete-mfa func (c *Client) GetCallerIdentity(ctx context.Context, params *GetCallerIdentityInput, optFns ...func(*Options)) (*GetCallerIdentityOutput, error) { if params == nil { params = &GetCallerIdentityInput{} @@ -38,8 +40,8 @@ type GetCallerIdentityInput struct { noSmithyDocumentSerde } -// Contains the response to a successful GetCallerIdentity request, including -// information about the entity making the request. +// Contains the response to a successful GetCallerIdentity request, including information about the +// entity making the request. type GetCallerIdentityOutput struct { // The Amazon Web Services account ID number of the account that owns or contains @@ -49,11 +51,12 @@ type GetCallerIdentityOutput struct { // The Amazon Web Services ARN associated with the calling entity. Arn *string - // The unique identifier of the calling entity. The exact value depends on the type - // of entity that is making the call. The values returned are those listed in the - // aws:userid column in the Principal table - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#principaltable) - // found on the Policy Variables reference page in the IAM User Guide. + // The unique identifier of the calling entity. The exact value depends on the + // type of entity that is making the call. The values returned are those listed in + // the aws:userid column in the [Principal table]found on the Policy Variables reference page in + // the IAM User Guide. + // + // [Principal table]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#principaltable UserId *string // Metadata pertaining to the operation's result. @@ -63,6 +66,9 @@ type GetCallerIdentityOutput struct { } func (c *Client) addOperationGetCallerIdentityMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsAwsquery_serializeOpGetCallerIdentity{}, middleware.After) if err != nil { return err @@ -71,34 +77,41 @@ func (c *Client) addOperationGetCallerIdentityMiddlewares(stack *middleware.Stac if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "GetCallerIdentity"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + if err = addComputePayloadSHA256(stack); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { return err } - if err = addHTTPSignerV4Middleware(stack, options); err != nil { + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -107,9 +120,21 @@ func (c *Client) addOperationGetCallerIdentityMiddlewares(stack *middleware.Stac if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetCallerIdentity(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -119,6 +144,21 @@ func (c *Client) addOperationGetCallerIdentityMiddlewares(stack *middleware.Stac if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } @@ -126,7 +166,6 @@ func newServiceMetadataMiddleware_opGetCallerIdentity(region string) *awsmiddlew return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, - SigningName: "sts", OperationName: "GetCallerIdentity", } } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go index 01a3d411b2cf..96f59ec63dad 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go @@ -4,98 +4,110 @@ package sts import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" - "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/aws-sdk-go-v2/service/sts/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Returns a set of temporary security credentials (consisting of an access key ID, -// a secret access key, and a security token) for a federated user. A typical use -// is in a proxy application that gets temporary security credentials on behalf of -// distributed applications inside a corporate network. You must call the -// GetFederationToken operation using the long-term security credentials of an IAM -// user. As a result, this call is appropriate in contexts where those credentials -// can be safely stored, usually in a server-based application. For a comparison of -// GetFederationToken with the other API operations that produce temporary -// credentials, see Requesting Temporary Security Credentials -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) -// and Comparing the Amazon Web Services STS API operations -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) -// in the IAM User Guide. You can create a mobile-based or browser-based app that -// can authenticate users using a web identity provider like Login with Amazon, -// Facebook, Google, or an OpenID Connect-compatible identity provider. In this -// case, we recommend that you use Amazon Cognito (http://aws.amazon.com/cognito/) -// or AssumeRoleWithWebIdentity. For more information, see Federation Through a -// Web-based Identity Provider -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity) -// in the IAM User Guide. You can also call GetFederationToken using the security -// credentials of an Amazon Web Services account root user, but we do not recommend -// it. Instead, we recommend that you create an IAM user for the purpose of the -// proxy application. Then attach a policy to the IAM user that limits federated -// users to only the actions and resources that they need to access. For more -// information, see IAM Best Practices -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) in the -// IAM User Guide. Session duration The temporary credentials are valid for the -// specified duration, from 900 seconds (15 minutes) up to a maximum of 129,600 -// seconds (36 hours). The default session duration is 43,200 seconds (12 hours). -// Temporary credentials obtained by using the Amazon Web Services account root -// user credentials have a maximum duration of 3,600 seconds (1 hour). Permissions +// Returns a set of temporary security credentials (consisting of an access key +// ID, a secret access key, and a security token) for a user. A typical use is in a +// proxy application that gets temporary security credentials on behalf of +// distributed applications inside a corporate network. +// +// You must call the GetFederationToken operation using the long-term security +// credentials of an IAM user. As a result, this call is appropriate in contexts +// where those credentials can be safeguarded, usually in a server-based +// application. For a comparison of GetFederationToken with the other API +// operations that produce temporary credentials, see [Requesting Temporary Security Credentials]and [Comparing the Amazon Web Services STS API operations] in the IAM User Guide. +// +// Although it is possible to call GetFederationToken using the security +// credentials of an Amazon Web Services account root user rather than an IAM user +// that you create for the purpose of a proxy application, we do not recommend it. +// For more information, see [Safeguard your root user credentials and don't use them for everyday tasks]in the IAM User Guide. +// +// You can create a mobile-based or browser-based app that can authenticate users +// using a web identity provider like Login with Amazon, Facebook, Google, or an +// OpenID Connect-compatible identity provider. In this case, we recommend that you +// use [Amazon Cognito]or AssumeRoleWithWebIdentity . For more information, see [Federation Through a Web-based Identity Provider] in the IAM User +// Guide. +// +// # Session duration +// +// The temporary credentials are valid for the specified duration, from 900 +// seconds (15 minutes) up to a maximum of 129,600 seconds (36 hours). The default +// session duration is 43,200 seconds (12 hours). Temporary credentials obtained by +// using the root user credentials have a maximum duration of 3,600 seconds (1 +// hour). +// +// # Permissions +// // You can use the temporary credentials created by GetFederationToken in any -// Amazon Web Services service except the following: +// Amazon Web Services service with the following exceptions: +// +// - You cannot call any IAM operations using the CLI or the Amazon Web Services +// API. This limitation does not apply to console sessions. // -// * You cannot call any IAM -// operations using the CLI or the Amazon Web Services API. +// - You cannot call any STS operations except GetCallerIdentity . // -// * You cannot call any -// STS operations except GetCallerIdentity. +// You can use temporary credentials for single sign-on (SSO) to the console. +// +// You must pass an inline or managed [session policy] to this operation. You can pass a single +// JSON policy document to use as an inline session policy. You can also specify up +// to 10 managed policy Amazon Resource Names (ARNs) to use as managed session +// policies. The plaintext that you use for both inline and managed session +// policies can't exceed 2,048 characters. +// +// Though the session policy parameters are optional, if you do not pass a policy, +// then the resulting federated user session has no permissions. When you pass +// session policies, the session permissions are the intersection of the IAM user +// policies and the session policies that you pass. This gives you a way to further +// restrict the permissions for a federated user. You cannot use session policies +// to grant more permissions than those that are defined in the permissions policy +// of the IAM user. For more information, see [Session Policies]in the IAM User Guide. For +// information about using GetFederationToken to create temporary security +// credentials, see [GetFederationToken—Federation Through a Custom Identity Broker]. // -// You must pass an inline or managed -// session policy -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) -// to this operation. You can pass a single JSON policy document to use as an -// inline session policy. You can also specify up to 10 managed policies to use as -// managed session policies. The plaintext that you use for both inline and managed -// session policies can't exceed 2,048 characters. Though the session policy -// parameters are optional, if you do not pass a policy, then the resulting -// federated user session has no permissions. When you pass session policies, the -// session permissions are the intersection of the IAM user policies and the -// session policies that you pass. This gives you a way to further restrict the -// permissions for a federated user. You cannot use session policies to grant more -// permissions than those that are defined in the permissions policy of the IAM -// user. For more information, see Session Policies -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) -// in the IAM User Guide. For information about using GetFederationToken to create -// temporary security credentials, see GetFederationToken—Federation Through a -// Custom Identity Broker -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getfederationtoken). // You can use the credentials to access a resource that has a resource-based // policy. If that policy specifically references the federated user session in the // Principal element of the policy, the session has the permissions allowed by the // policy. These permissions are granted in addition to the permissions granted by -// the session policies. Tags (Optional) You can pass tag key-value pairs to your -// session. These are called session tags. For more information about session tags, -// see Passing Session Tags in STS -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) in the -// IAM User Guide. You can create a mobile-based or browser-based app that can -// authenticate users using a web identity provider like Login with Amazon, -// Facebook, Google, or an OpenID Connect-compatible identity provider. In this -// case, we recommend that you use Amazon Cognito (http://aws.amazon.com/cognito/) -// or AssumeRoleWithWebIdentity. For more information, see Federation Through a -// Web-based Identity Provider -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity) -// in the IAM User Guide. An administrator must grant you the permissions necessary -// to pass session tags. The administrator can also create granular permissions to -// allow you to pass only specific session tags. For more information, see -// Tutorial: Using Tags for Attribute-Based Access Control -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) -// in the IAM User Guide. Tag key–value pairs are not case sensitive, but case is -// preserved. This means that you cannot have separate Department and department -// tag keys. Assume that the user that you are federating has the -// Department=Marketing tag and you pass the department=engineering session tag. -// Department and department are not saved as separate tags, and the session tag -// passed in the request takes precedence over the user tag. +// the session policies. +// +// # Tags +// +// (Optional) You can pass tag key-value pairs to your session. These are called +// session tags. For more information about session tags, see [Passing Session Tags in STS]in the IAM User +// Guide. +// +// You can create a mobile-based or browser-based app that can authenticate users +// using a web identity provider like Login with Amazon, Facebook, Google, or an +// OpenID Connect-compatible identity provider. In this case, we recommend that you +// use [Amazon Cognito]or AssumeRoleWithWebIdentity . For more information, see [Federation Through a Web-based Identity Provider] in the IAM User +// Guide. +// +// An administrator must grant you the permissions necessary to pass session tags. +// The administrator can also create granular permissions to allow you to pass only +// specific session tags. For more information, see [Tutorial: Using Tags for Attribute-Based Access Control]in the IAM User Guide. +// +// Tag key–value pairs are not case sensitive, but case is preserved. This means +// that you cannot have separate Department and department tag keys. Assume that +// the user that you are federating has the Department = Marketing tag and you +// pass the department = engineering session tag. Department and department are +// not saved as separate tags, and the session tag passed in the request takes +// precedence over the user tag. +// +// [Federation Through a Web-based Identity Provider]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity +// [session policy]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session +// [Amazon Cognito]: http://aws.amazon.com/cognito/ +// [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session +// [Passing Session Tags in STS]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html +// [GetFederationToken—Federation Through a Custom Identity Broker]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getfederationtoken +// [Comparing the Amazon Web Services STS API operations]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison +// [Safeguard your root user credentials and don't use them for everyday tasks]: https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#lock-away-credentials +// [Requesting Temporary Security Credentials]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html +// [Tutorial: Using Tags for Attribute-Based Access Control]: https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html func (c *Client) GetFederationToken(ctx context.Context, params *GetFederationTokenInput, optFns ...func(*Options)) (*GetFederationTokenOutput, error) { if params == nil { params = &GetFederationTokenInput{} @@ -114,127 +126,151 @@ func (c *Client) GetFederationToken(ctx context.Context, params *GetFederationTo type GetFederationTokenInput struct { // The name of the federated user. The name is used as an identifier for the - // temporary security credentials (such as Bob). For example, you can reference the - // federated user name in a resource-based policy, such as in an Amazon S3 bucket - // policy. The regex used to validate this parameter is a string of characters - // consisting of upper- and lower-case alphanumeric characters with no spaces. You - // can also include underscores or any of the following characters: =,.@- + // temporary security credentials (such as Bob ). For example, you can reference + // the federated user name in a resource-based policy, such as in an Amazon S3 + // bucket policy. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can also + // include underscores or any of the following characters: =,.@- // // This member is required. Name *string - // The duration, in seconds, that the session should last. Acceptable durations for - // federation sessions range from 900 seconds (15 minutes) to 129,600 seconds (36 - // hours), with 43,200 seconds (12 hours) as the default. Sessions obtained using - // Amazon Web Services account root user credentials are restricted to a maximum of - // 3,600 seconds (one hour). If the specified duration is longer than one hour, the - // session obtained by using root user credentials defaults to one hour. + // The duration, in seconds, that the session should last. Acceptable durations + // for federation sessions range from 900 seconds (15 minutes) to 129,600 seconds + // (36 hours), with 43,200 seconds (12 hours) as the default. Sessions obtained + // using root user credentials are restricted to a maximum of 3,600 seconds (one + // hour). If the specified duration is longer than one hour, the session obtained + // by using root user credentials defaults to one hour. DurationSeconds *int32 // An IAM policy in JSON format that you want to use as an inline session policy. - // You must pass an inline or managed session policy - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) - // to this operation. You can pass a single JSON policy document to use as an - // inline session policy. You can also specify up to 10 managed policies to use as - // managed session policies. This parameter is optional. However, if you do not - // pass any session policies, then the resulting federated user session has no - // permissions. When you pass session policies, the session permissions are the - // intersection of the IAM user policies and the session policies that you pass. - // This gives you a way to further restrict the permissions for a federated user. - // You cannot use session policies to grant more permissions than those that are - // defined in the permissions policy of the IAM user. For more information, see - // Session Policies - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) - // in the IAM User Guide. The resulting credentials can be used to access a - // resource that has a resource-based policy. If that policy specifically - // references the federated user session in the Principal element of the policy, - // the session has the permissions allowed by the policy. These permissions are - // granted in addition to the permissions that are granted by the session policies. + // + // You must pass an inline or managed [session policy] to this operation. You can pass a single + // JSON policy document to use as an inline session policy. You can also specify up + // to 10 managed policy Amazon Resource Names (ARNs) to use as managed session + // policies. + // + // This parameter is optional. However, if you do not pass any session policies, + // then the resulting federated user session has no permissions. + // + // When you pass session policies, the session permissions are the intersection of + // the IAM user policies and the session policies that you pass. This gives you a + // way to further restrict the permissions for a federated user. You cannot use + // session policies to grant more permissions than those that are defined in the + // permissions policy of the IAM user. For more information, see [Session Policies]in the IAM User + // Guide. + // + // The resulting credentials can be used to access a resource that has a + // resource-based policy. If that policy specifically references the federated user + // session in the Principal element of the policy, the session has the permissions + // allowed by the policy. These permissions are granted in addition to the + // permissions that are granted by the session policies. + // // The plaintext that you use for both inline and managed session policies can't // exceed 2,048 characters. The JSON policy characters can be any ASCII character // from the space character to the end of the valid character list (\u0020 through // \u00FF). It can also include the tab (\u0009), linefeed (\u000A), and carriage - // return (\u000D) characters. An Amazon Web Services conversion compresses the - // passed session policies and session tags into a packed binary format that has a + // return (\u000D) characters. + // + // An Amazon Web Services conversion compresses the passed inline session policy, + // managed policy ARNs, and session tags into a packed binary format that has a // separate limit. Your request can fail for this limit even if your plaintext - // meets the other requirements. The PackedPolicySize response element indicates by - // percentage how close the policies and tags for your request are to the upper + // meets the other requirements. The PackedPolicySize response element indicates + // by percentage how close the policies and tags for your request are to the upper // size limit. + // + // [session policy]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session + // [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session Policy *string // The Amazon Resource Names (ARNs) of the IAM managed policies that you want to // use as a managed session policy. The policies must exist in the same account as - // the IAM user that is requesting federated access. You must pass an inline or - // managed session policy - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) - // to this operation. You can pass a single JSON policy document to use as an - // inline session policy. You can also specify up to 10 managed policies to use as - // managed session policies. The plaintext that you use for both inline and managed - // session policies can't exceed 2,048 characters. You can provide up to 10 managed - // policy ARNs. For more information about ARNs, see Amazon Resource Names (ARNs) - // and Amazon Web Services Service Namespaces - // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in - // the Amazon Web Services General Reference. This parameter is optional. However, - // if you do not pass any session policies, then the resulting federated user - // session has no permissions. When you pass session policies, the session - // permissions are the intersection of the IAM user policies and the session - // policies that you pass. This gives you a way to further restrict the permissions - // for a federated user. You cannot use session policies to grant more permissions - // than those that are defined in the permissions policy of the IAM user. For more - // information, see Session Policies - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) - // in the IAM User Guide. The resulting credentials can be used to access a - // resource that has a resource-based policy. If that policy specifically - // references the federated user session in the Principal element of the policy, - // the session has the permissions allowed by the policy. These permissions are - // granted in addition to the permissions that are granted by the session policies. - // An Amazon Web Services conversion compresses the passed session policies and - // session tags into a packed binary format that has a separate limit. Your request - // can fail for this limit even if your plaintext meets the other requirements. The - // PackedPolicySize response element indicates by percentage how close the policies - // and tags for your request are to the upper size limit. + // the IAM user that is requesting federated access. + // + // You must pass an inline or managed [session policy] to this operation. You can pass a single + // JSON policy document to use as an inline session policy. You can also specify up + // to 10 managed policy Amazon Resource Names (ARNs) to use as managed session + // policies. The plaintext that you use for both inline and managed session + // policies can't exceed 2,048 characters. You can provide up to 10 managed policy + // ARNs. For more information about ARNs, see [Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces]in the Amazon Web Services General + // Reference. + // + // This parameter is optional. However, if you do not pass any session policies, + // then the resulting federated user session has no permissions. + // + // When you pass session policies, the session permissions are the intersection of + // the IAM user policies and the session policies that you pass. This gives you a + // way to further restrict the permissions for a federated user. You cannot use + // session policies to grant more permissions than those that are defined in the + // permissions policy of the IAM user. For more information, see [Session Policies]in the IAM User + // Guide. + // + // The resulting credentials can be used to access a resource that has a + // resource-based policy. If that policy specifically references the federated user + // session in the Principal element of the policy, the session has the permissions + // allowed by the policy. These permissions are granted in addition to the + // permissions that are granted by the session policies. + // + // An Amazon Web Services conversion compresses the passed inline session policy, + // managed policy ARNs, and session tags into a packed binary format that has a + // separate limit. Your request can fail for this limit even if your plaintext + // meets the other requirements. The PackedPolicySize response element indicates + // by percentage how close the policies and tags for your request are to the upper + // size limit. + // + // [session policy]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session + // [Session Policies]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session + // [Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html PolicyArns []types.PolicyDescriptorType // A list of session tags. Each session tag consists of a key name and an - // associated value. For more information about session tags, see Passing Session - // Tags in STS - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) in the - // IAM User Guide. This parameter is optional. You can pass up to 50 session tags. - // The plaintext session tag keys can’t exceed 128 characters and the values can’t - // exceed 256 characters. For these and additional limits, see IAM and STS - // Character Limits - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length) - // in the IAM User Guide. An Amazon Web Services conversion compresses the passed - // session policies and session tags into a packed binary format that has a + // associated value. For more information about session tags, see [Passing Session Tags in STS]in the IAM User + // Guide. + // + // This parameter is optional. You can pass up to 50 session tags. The plaintext + // session tag keys can’t exceed 128 characters and the values can’t exceed 256 + // characters. For these and additional limits, see [IAM and STS Character Limits]in the IAM User Guide. + // + // An Amazon Web Services conversion compresses the passed inline session policy, + // managed policy ARNs, and session tags into a packed binary format that has a // separate limit. Your request can fail for this limit even if your plaintext - // meets the other requirements. The PackedPolicySize response element indicates by - // percentage how close the policies and tags for your request are to the upper - // size limit. You can pass a session tag with the same key as a tag that is - // already attached to the user you are federating. When you do, session tags - // override a user tag with the same key. Tag key–value pairs are not case - // sensitive, but case is preserved. This means that you cannot have separate - // Department and department tag keys. Assume that the role has the - // Department=Marketing tag and you pass the department=engineering session tag. - // Department and department are not saved as separate tags, and the session tag - // passed in the request takes precedence over the role tag. + // meets the other requirements. The PackedPolicySize response element indicates + // by percentage how close the policies and tags for your request are to the upper + // size limit. + // + // You can pass a session tag with the same key as a tag that is already attached + // to the user you are federating. When you do, session tags override a user tag + // with the same key. + // + // Tag key–value pairs are not case sensitive, but case is preserved. This means + // that you cannot have separate Department and department tag keys. Assume that + // the role has the Department = Marketing tag and you pass the department = + // engineering session tag. Department and department are not saved as separate + // tags, and the session tag passed in the request takes precedence over the role + // tag. + // + // [Passing Session Tags in STS]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html + // [IAM and STS Character Limits]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length Tags []types.Tag noSmithyDocumentSerde } -// Contains the response to a successful GetFederationToken request, including -// temporary Amazon Web Services credentials that can be used to make Amazon Web -// Services requests. +// Contains the response to a successful GetFederationToken request, including temporary Amazon Web +// Services credentials that can be used to make Amazon Web Services requests. type GetFederationTokenOutput struct { // The temporary security credentials, which include an access key ID, a secret - // access key, and a security (or session) token. The size of the security token - // that STS API operations return is not fixed. We strongly recommend that you make - // no assumptions about the maximum size. + // access key, and a security (or session) token. + // + // The size of the security token that STS API operations return is not fixed. We + // strongly recommend that you make no assumptions about the maximum size. Credentials *types.Credentials // Identifiers for the federated user associated with the credentials (such as - // arn:aws:sts::123456789012:federated-user/Bob or 123456789012:Bob). You can use + // arn:aws:sts::123456789012:federated-user/Bob or 123456789012:Bob ). You can use // the federated user's ARN in your resource-based policies, such as an Amazon S3 // bucket policy. FederatedUser *types.FederatedUser @@ -252,6 +288,9 @@ type GetFederationTokenOutput struct { } func (c *Client) addOperationGetFederationTokenMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsAwsquery_serializeOpGetFederationToken{}, middleware.After) if err != nil { return err @@ -260,34 +299,41 @@ func (c *Client) addOperationGetFederationTokenMiddlewares(stack *middleware.Sta if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "GetFederationToken"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + if err = addComputePayloadSHA256(stack); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { return err } - if err = addHTTPSignerV4Middleware(stack, options); err != nil { + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -296,12 +342,24 @@ func (c *Client) addOperationGetFederationTokenMiddlewares(stack *middleware.Sta if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = addOpGetFederationTokenValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetFederationToken(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -311,6 +369,21 @@ func (c *Client) addOperationGetFederationTokenMiddlewares(stack *middleware.Sta if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } @@ -318,7 +391,6 @@ func newServiceMetadataMiddleware_opGetFederationToken(region string) *awsmiddle return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, - SigningName: "sts", OperationName: "GetFederationToken", } } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go index bfde51689d11..0ed9ecbc74ed 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go @@ -4,67 +4,69 @@ package sts import ( "context" + "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" - "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/aws-sdk-go-v2/service/sts/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Returns a set of temporary credentials for an Amazon Web Services account or IAM -// user. The credentials consist of an access key ID, a secret access key, and a -// security token. Typically, you use GetSessionToken if you want to use MFA to +// Returns a set of temporary credentials for an Amazon Web Services account or +// IAM user. The credentials consist of an access key ID, a secret access key, and +// a security token. Typically, you use GetSessionToken if you want to use MFA to // protect programmatic calls to specific Amazon Web Services API operations like -// Amazon EC2 StopInstances. MFA-enabled IAM users would need to call -// GetSessionToken and submit an MFA code that is associated with their MFA device. -// Using the temporary security credentials that are returned from the call, IAM -// users can then make programmatic calls to API operations that require MFA -// authentication. If you do not supply a correct MFA code, then the API returns an -// access denied error. For a comparison of GetSessionToken with the other API -// operations that produce temporary credentials, see Requesting Temporary Security -// Credentials -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) -// and Comparing the Amazon Web Services STS API operations -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) -// in the IAM User Guide. No permissions are required for users to perform this -// operation. The purpose of the sts:GetSessionToken operation is to authenticate -// the user using MFA. You cannot use policies to control authentication -// operations. For more information, see Permissions for GetSessionToken -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_getsessiontoken.html) -// in the IAM User Guide. Session Duration The GetSessionToken operation must be -// called by using the long-term Amazon Web Services security credentials of the -// Amazon Web Services account root user or an IAM user. Credentials that are -// created by IAM users are valid for the duration that you specify. This duration -// can range from 900 seconds (15 minutes) up to a maximum of 129,600 seconds (36 -// hours), with a default of 43,200 seconds (12 hours). Credentials based on -// account credentials can range from 900 seconds (15 minutes) up to 3,600 seconds -// (1 hour), with a default of 1 hour. Permissions The temporary security -// credentials created by GetSessionToken can be used to make API calls to any -// Amazon Web Services service with the following exceptions: +// Amazon EC2 StopInstances . // -// * You cannot call -// any IAM API operations unless MFA authentication information is included in the -// request. +// MFA-enabled IAM users must call GetSessionToken and submit an MFA code that is +// associated with their MFA device. Using the temporary security credentials that +// the call returns, IAM users can then make programmatic calls to API operations +// that require MFA authentication. An incorrect MFA code causes the API to return +// an access denied error. For a comparison of GetSessionToken with the other API +// operations that produce temporary credentials, see [Requesting Temporary Security Credentials]and [Comparing the Amazon Web Services STS API operations] in the IAM User Guide. // -// * You cannot call any STS API except AssumeRole or -// GetCallerIdentity. +// No permissions are required for users to perform this operation. The purpose of +// the sts:GetSessionToken operation is to authenticate the user using MFA. You +// cannot use policies to control authentication operations. For more information, +// see [Permissions for GetSessionToken]in the IAM User Guide. // -// We recommend that you do not call GetSessionToken with -// Amazon Web Services account root user credentials. Instead, follow our best -// practices -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#create-iam-users) -// by creating one or more IAM users, giving them the necessary permissions, and -// using IAM users for everyday interaction with Amazon Web Services. The -// credentials that are returned by GetSessionToken are based on permissions -// associated with the user whose credentials were used to call the operation. If -// GetSessionToken is called using Amazon Web Services account root user -// credentials, the temporary credentials have root user permissions. Similarly, if -// GetSessionToken is called using the credentials of an IAM user, the temporary -// credentials have the same permissions as the IAM user. For more information -// about using GetSessionToken to create temporary credentials, go to Temporary -// Credentials for Users in Untrusted Environments -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken) -// in the IAM User Guide. +// # Session Duration +// +// The GetSessionToken operation must be called by using the long-term Amazon Web +// Services security credentials of an IAM user. Credentials that are created by +// IAM users are valid for the duration that you specify. This duration can range +// from 900 seconds (15 minutes) up to a maximum of 129,600 seconds (36 hours), +// with a default of 43,200 seconds (12 hours). Credentials based on account +// credentials can range from 900 seconds (15 minutes) up to 3,600 seconds (1 +// hour), with a default of 1 hour. +// +// # Permissions +// +// The temporary security credentials created by GetSessionToken can be used to +// make API calls to any Amazon Web Services service with the following exceptions: +// +// - You cannot call any IAM API operations unless MFA authentication +// information is included in the request. +// +// - You cannot call any STS API except AssumeRole or GetCallerIdentity . +// +// The credentials that GetSessionToken returns are based on permissions +// associated with the IAM user whose credentials were used to call the operation. +// The temporary credentials have the same permissions as the IAM user. +// +// Although it is possible to call GetSessionToken using the security credentials +// of an Amazon Web Services account root user rather than an IAM user, we do not +// recommend it. If GetSessionToken is called using root user credentials, the +// temporary credentials have root user permissions. For more information, see [Safeguard your root user credentials and don't use them for everyday tasks]in +// the IAM User Guide +// +// For more information about using GetSessionToken to create temporary +// credentials, see [Temporary Credentials for Users in Untrusted Environments]in the IAM User Guide. +// +// [Permissions for GetSessionToken]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_getsessiontoken.html +// [Comparing the Amazon Web Services STS API operations]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison +// [Temporary Credentials for Users in Untrusted Environments]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken +// [Safeguard your root user credentials and don't use them for everyday tasks]: https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#lock-away-credentials +// [Requesting Temporary Security Credentials]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html func (c *Client) GetSessionToken(ctx context.Context, params *GetSessionTokenInput, optFns ...func(*Options)) (*GetSessionTokenOutput, error) { if params == nil { params = &GetSessionTokenInput{} @@ -90,39 +92,42 @@ type GetSessionTokenInput struct { // Services account owners defaults to one hour. DurationSeconds *int32 - // The identification number of the MFA device that is associated with the IAM user - // who is making the GetSessionToken call. Specify this value if the IAM user has a - // policy that requires MFA authentication. The value is either the serial number - // for a hardware device (such as GAHT12345678) or an Amazon Resource Name (ARN) - // for a virtual device (such as arn:aws:iam::123456789012:mfa/user). You can find - // the device for an IAM user by going to the Amazon Web Services Management - // Console and viewing the user's security credentials. The regex used to validate - // this parameter is a string of characters consisting of upper- and lower-case - // alphanumeric characters with no spaces. You can also include underscores or any - // of the following characters: =,.@:/- + // The identification number of the MFA device that is associated with the IAM + // user who is making the GetSessionToken call. Specify this value if the IAM user + // has a policy that requires MFA authentication. The value is either the serial + // number for a hardware device (such as GAHT12345678 ) or an Amazon Resource Name + // (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user ). You + // can find the device for an IAM user by going to the Amazon Web Services + // Management Console and viewing the user's security credentials. + // + // The regex used to validate this parameter is a string of characters consisting + // of upper- and lower-case alphanumeric characters with no spaces. You can also + // include underscores or any of the following characters: =,.@:/- SerialNumber *string - // The value provided by the MFA device, if MFA is required. If any policy requires - // the IAM user to submit an MFA code, specify this value. If MFA authentication is - // required, the user must provide a code when requesting a set of temporary - // security credentials. A user who fails to provide the code receives an "access - // denied" response when requesting resources that require MFA authentication. The - // format for this parameter, as described by its regex pattern, is a sequence of - // six numeric digits. + // The value provided by the MFA device, if MFA is required. If any policy + // requires the IAM user to submit an MFA code, specify this value. If MFA + // authentication is required, the user must provide a code when requesting a set + // of temporary security credentials. A user who fails to provide the code receives + // an "access denied" response when requesting resources that require MFA + // authentication. + // + // The format for this parameter, as described by its regex pattern, is a sequence + // of six numeric digits. TokenCode *string noSmithyDocumentSerde } -// Contains the response to a successful GetSessionToken request, including -// temporary Amazon Web Services credentials that can be used to make Amazon Web -// Services requests. +// Contains the response to a successful GetSessionToken request, including temporary Amazon Web +// Services credentials that can be used to make Amazon Web Services requests. type GetSessionTokenOutput struct { // The temporary security credentials, which include an access key ID, a secret - // access key, and a security (or session) token. The size of the security token - // that STS API operations return is not fixed. We strongly recommend that you make - // no assumptions about the maximum size. + // access key, and a security (or session) token. + // + // The size of the security token that STS API operations return is not fixed. We + // strongly recommend that you make no assumptions about the maximum size. Credentials *types.Credentials // Metadata pertaining to the operation's result. @@ -132,6 +137,9 @@ type GetSessionTokenOutput struct { } func (c *Client) addOperationGetSessionTokenMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } err = stack.Serialize.Add(&awsAwsquery_serializeOpGetSessionToken{}, middleware.After) if err != nil { return err @@ -140,34 +148,41 @@ func (c *Client) addOperationGetSessionTokenMiddlewares(stack *middleware.Stack, if err != nil { return err } + if err := addProtocolFinalizerMiddlewares(stack, options, "GetSessionToken"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } - if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + if err = addClientRequestID(stack); err != nil { return err } - if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } - if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + if err = addComputePayloadSHA256(stack); err != nil { return err } - if err = addRetryMiddlewares(stack, options); err != nil { + if err = addRetry(stack, options); err != nil { return err } - if err = addHTTPSignerV4Middleware(stack, options); err != nil { + if err = addRawResponseToMetadata(stack); err != nil { return err } - if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + if err = addRecordResponseTiming(stack); err != nil { return err } - if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + if err = addSpanRetryLoop(stack, options); err != nil { return err } - if err = addClientUserAgent(stack); err != nil { + if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { @@ -176,9 +191,21 @@ func (c *Client) addOperationGetSessionTokenMiddlewares(stack *middleware.Stack, if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetSessionToken(options.Region), middleware.Before); err != nil { return err } + if err = addRecursionDetection(stack); err != nil { + return err + } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } @@ -188,6 +215,21 @@ func (c *Client) addOperationGetSessionTokenMiddlewares(stack *middleware.Stack, if err = addRequestResponseLogging(stack, options); err != nil { return err } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } return nil } @@ -195,7 +237,6 @@ func newServiceMetadataMiddleware_opGetSessionToken(region string) *awsmiddlewar return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, - SigningName: "sts", OperationName: "GetSessionToken", } } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/auth.go new file mode 100644 index 000000000000..a90b2b7362d1 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/auth.go @@ -0,0 +1,325 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package sts + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + smithy "github.com/aws/smithy-go" + smithyauth "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +func bindAuthParamsRegion(_ interface{}, params *AuthResolverParameters, _ interface{}, options Options) { + params.Region = options.Region +} + +type setLegacyContextSigningOptionsMiddleware struct { +} + +func (*setLegacyContextSigningOptionsMiddleware) ID() string { + return "setLegacyContextSigningOptions" +} + +func (m *setLegacyContextSigningOptionsMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + rscheme := getResolvedAuthScheme(ctx) + schemeID := rscheme.Scheme.SchemeID() + + if sn := awsmiddleware.GetSigningName(ctx); sn != "" { + if schemeID == "aws.auth#sigv4" { + smithyhttp.SetSigV4SigningName(&rscheme.SignerProperties, sn) + } else if schemeID == "aws.auth#sigv4a" { + smithyhttp.SetSigV4ASigningName(&rscheme.SignerProperties, sn) + } + } + + if sr := awsmiddleware.GetSigningRegion(ctx); sr != "" { + if schemeID == "aws.auth#sigv4" { + smithyhttp.SetSigV4SigningRegion(&rscheme.SignerProperties, sr) + } else if schemeID == "aws.auth#sigv4a" { + smithyhttp.SetSigV4ASigningRegions(&rscheme.SignerProperties, []string{sr}) + } + } + + return next.HandleFinalize(ctx, in) +} + +func addSetLegacyContextSigningOptionsMiddleware(stack *middleware.Stack) error { + return stack.Finalize.Insert(&setLegacyContextSigningOptionsMiddleware{}, "Signing", middleware.Before) +} + +type withAnonymous struct { + resolver AuthSchemeResolver +} + +var _ AuthSchemeResolver = (*withAnonymous)(nil) + +func (v *withAnonymous) ResolveAuthSchemes(ctx context.Context, params *AuthResolverParameters) ([]*smithyauth.Option, error) { + opts, err := v.resolver.ResolveAuthSchemes(ctx, params) + if err != nil { + return nil, err + } + + opts = append(opts, &smithyauth.Option{ + SchemeID: smithyauth.SchemeIDAnonymous, + }) + return opts, nil +} + +func wrapWithAnonymousAuth(options *Options) { + if _, ok := options.AuthSchemeResolver.(*defaultAuthSchemeResolver); !ok { + return + } + + options.AuthSchemeResolver = &withAnonymous{ + resolver: options.AuthSchemeResolver, + } +} + +// AuthResolverParameters contains the set of inputs necessary for auth scheme +// resolution. +type AuthResolverParameters struct { + // The name of the operation being invoked. + Operation string + + // The region in which the operation is being invoked. + Region string +} + +func bindAuthResolverParams(ctx context.Context, operation string, input interface{}, options Options) *AuthResolverParameters { + params := &AuthResolverParameters{ + Operation: operation, + } + + bindAuthParamsRegion(ctx, params, input, options) + + return params +} + +// AuthSchemeResolver returns a set of possible authentication options for an +// operation. +type AuthSchemeResolver interface { + ResolveAuthSchemes(context.Context, *AuthResolverParameters) ([]*smithyauth.Option, error) +} + +type defaultAuthSchemeResolver struct{} + +var _ AuthSchemeResolver = (*defaultAuthSchemeResolver)(nil) + +func (*defaultAuthSchemeResolver) ResolveAuthSchemes(ctx context.Context, params *AuthResolverParameters) ([]*smithyauth.Option, error) { + if overrides, ok := operationAuthOptions[params.Operation]; ok { + return overrides(params), nil + } + return serviceAuthOptions(params), nil +} + +var operationAuthOptions = map[string]func(*AuthResolverParameters) []*smithyauth.Option{ + "AssumeRoleWithSAML": func(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + {SchemeID: smithyauth.SchemeIDAnonymous}, + } + }, + + "AssumeRoleWithWebIdentity": func(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + {SchemeID: smithyauth.SchemeIDAnonymous}, + } + }, +} + +func serviceAuthOptions(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + { + SchemeID: smithyauth.SchemeIDSigV4, + SignerProperties: func() smithy.Properties { + var props smithy.Properties + smithyhttp.SetSigV4SigningName(&props, "sts") + smithyhttp.SetSigV4SigningRegion(&props, params.Region) + return props + }(), + }, + } +} + +type resolveAuthSchemeMiddleware struct { + operation string + options Options +} + +func (*resolveAuthSchemeMiddleware) ID() string { + return "ResolveAuthScheme" +} + +func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "ResolveAuthScheme") + defer span.End() + + params := bindAuthResolverParams(ctx, m.operation, getOperationInput(ctx), m.options) + options, err := m.options.AuthSchemeResolver.ResolveAuthSchemes(ctx, params) + if err != nil { + return out, metadata, fmt.Errorf("resolve auth scheme: %w", err) + } + + scheme, ok := m.selectScheme(options) + if !ok { + return out, metadata, fmt.Errorf("could not select an auth scheme") + } + + ctx = setResolvedAuthScheme(ctx, scheme) + + span.SetProperty("auth.scheme_id", scheme.Scheme.SchemeID()) + span.End() + return next.HandleFinalize(ctx, in) +} + +func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) (*resolvedAuthScheme, bool) { + for _, option := range options { + if option.SchemeID == smithyauth.SchemeIDAnonymous { + return newResolvedAuthScheme(smithyhttp.NewAnonymousScheme(), option), true + } + + for _, scheme := range m.options.AuthSchemes { + if scheme.SchemeID() != option.SchemeID { + continue + } + + if scheme.IdentityResolver(m.options) != nil { + return newResolvedAuthScheme(scheme, option), true + } + } + } + + return nil, false +} + +type resolvedAuthSchemeKey struct{} + +type resolvedAuthScheme struct { + Scheme smithyhttp.AuthScheme + IdentityProperties smithy.Properties + SignerProperties smithy.Properties +} + +func newResolvedAuthScheme(scheme smithyhttp.AuthScheme, option *smithyauth.Option) *resolvedAuthScheme { + return &resolvedAuthScheme{ + Scheme: scheme, + IdentityProperties: option.IdentityProperties, + SignerProperties: option.SignerProperties, + } +} + +func setResolvedAuthScheme(ctx context.Context, scheme *resolvedAuthScheme) context.Context { + return middleware.WithStackValue(ctx, resolvedAuthSchemeKey{}, scheme) +} + +func getResolvedAuthScheme(ctx context.Context) *resolvedAuthScheme { + v, _ := middleware.GetStackValue(ctx, resolvedAuthSchemeKey{}).(*resolvedAuthScheme) + return v +} + +type getIdentityMiddleware struct { + options Options +} + +func (*getIdentityMiddleware) ID() string { + return "GetIdentity" +} + +func (m *getIdentityMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + innerCtx, span := tracing.StartSpan(ctx, "GetIdentity") + defer span.End() + + rscheme := getResolvedAuthScheme(innerCtx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + resolver := rscheme.Scheme.IdentityResolver(m.options) + if resolver == nil { + return out, metadata, fmt.Errorf("no identity resolver") + } + + identity, err := timeOperationMetric(ctx, "client.call.resolve_identity_duration", + func() (smithyauth.Identity, error) { + return resolver.GetIdentity(innerCtx, rscheme.IdentityProperties) + }, + func(o *metrics.RecordMetricOptions) { + o.Properties.Set("auth.scheme_id", rscheme.Scheme.SchemeID()) + }) + if err != nil { + return out, metadata, fmt.Errorf("get identity: %w", err) + } + + ctx = setIdentity(ctx, identity) + + span.End() + return next.HandleFinalize(ctx, in) +} + +type identityKey struct{} + +func setIdentity(ctx context.Context, identity smithyauth.Identity) context.Context { + return middleware.WithStackValue(ctx, identityKey{}, identity) +} + +func getIdentity(ctx context.Context) smithyauth.Identity { + v, _ := middleware.GetStackValue(ctx, identityKey{}).(smithyauth.Identity) + return v +} + +type signRequestMiddleware struct { + options Options +} + +func (*signRequestMiddleware) ID() string { + return "Signing" +} + +func (m *signRequestMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "SignRequest") + defer span.End() + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unexpected transport type %T", in.Request) + } + + rscheme := getResolvedAuthScheme(ctx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + identity := getIdentity(ctx) + if identity == nil { + return out, metadata, fmt.Errorf("no identity") + } + + signer := rscheme.Scheme.Signer() + if signer == nil { + return out, metadata, fmt.Errorf("no signer") + } + + _, err = timeOperationMetric(ctx, "client.call.signing_duration", func() (any, error) { + return nil, signer.SignRequest(ctx, req, identity, rscheme.SignerProperties) + }, func(o *metrics.RecordMetricOptions) { + o.Properties.Set("auth.scheme_id", rscheme.Scheme.SchemeID()) + }) + if err != nil { + return out, metadata, fmt.Errorf("sign request: %w", err) + } + + span.End() + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/deserializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/deserializers.go index 5d634ce35c8f..cf0cc54e2aff 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/deserializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/deserializers.go @@ -16,12 +16,22 @@ import ( "github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/ptr" smithytime "github.com/aws/smithy-go/time" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" "io" "strconv" "strings" + "time" ) +func deserializeS3Expires(v string) (*time.Time, error) { + t, err := smithytime.ParseHTTPDate(v) + if err != nil { + return nil, nil + } + return &t, nil +} + type awsAwsquery_deserializeOpAssumeRole struct { } @@ -37,6 +47,10 @@ func (m *awsAwsquery_deserializeOpAssumeRole) HandleDeserialize(ctx context.Cont return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -154,6 +168,10 @@ func (m *awsAwsquery_deserializeOpAssumeRoleWithSAML) HandleDeserialize(ctx cont return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -277,6 +295,10 @@ func (m *awsAwsquery_deserializeOpAssumeRoleWithWebIdentity) HandleDeserialize(c return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -403,6 +425,10 @@ func (m *awsAwsquery_deserializeOpDecodeAuthorizationMessage) HandleDeserialize( return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -511,6 +537,10 @@ func (m *awsAwsquery_deserializeOpGetAccessKeyInfo) HandleDeserialize(ctx contex return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -616,6 +646,10 @@ func (m *awsAwsquery_deserializeOpGetCallerIdentity) HandleDeserialize(ctx conte return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -721,6 +755,10 @@ func (m *awsAwsquery_deserializeOpGetFederationToken) HandleDeserialize(ctx cont return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} @@ -835,6 +873,10 @@ func (m *awsAwsquery_deserializeOpGetSessionToken) HandleDeserialize(ctx context return out, metadata, err } + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/doc.go index 7cabbb97e9f5..cbb19c7f6686 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/doc.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/doc.go @@ -3,10 +3,11 @@ // Package sts provides the API client, operations, and parameter types for AWS // Security Token Service. // -// Security Token Service Security Token Service (STS) enables you to request -// temporary, limited-privilege credentials for Identity and Access Management -// (IAM) users or for users that you authenticate (federated users). This guide -// provides descriptions of the STS API. For more information about using this -// service, see Temporary Security Credentials -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html). +// # Security Token Service +// +// Security Token Service (STS) enables you to request temporary, +// limited-privilege credentials for users. This guide provides descriptions of the +// STS API. For more information about using this service, see [Temporary Security Credentials]. +// +// [Temporary Security Credentials]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html package sts diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/endpoints.go index cababea22d90..dca2ce3599e4 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/endpoints.go @@ -8,10 +8,20 @@ import ( "fmt" "github.com/aws/aws-sdk-go-v2/aws" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + "github.com/aws/aws-sdk-go-v2/internal/endpoints" + "github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn" internalendpoints "github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints" + smithy "github.com/aws/smithy-go" + smithyauth "github.com/aws/smithy-go/auth" + smithyendpoints "github.com/aws/smithy-go/endpoints" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/ptr" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" + "net/http" "net/url" + "os" "strings" ) @@ -39,13 +49,6 @@ func (fn EndpointResolverFunc) ResolveEndpoint(region string, options EndpointRe return fn(region, options) } -func resolveDefaultEndpointConfiguration(o *Options) { - if o.EndpointResolver != nil { - return - } - o.EndpointResolver = NewDefaultEndpointResolver() -} - // EndpointResolverFromURL returns an EndpointResolver configured using the // provided endpoint url. By default, the resolved endpoint resolver uses the // client region as signing region, and the endpoint source is set to @@ -79,6 +82,10 @@ func (*ResolveEndpoint) ID() string { func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + if !awsmiddleware.GetRequiresLegacyEndpoints(ctx) { + return next.HandleSerialize(ctx, in) + } + req, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) @@ -94,6 +101,11 @@ func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.Ser var endpoint aws.Endpoint endpoint, err = m.Resolver.ResolveEndpoint(awsmiddleware.GetRegion(ctx), eo) if err != nil { + nf := (&aws.EndpointNotFoundError{}) + if errors.As(err, &nf) { + ctx = awsmiddleware.SetRequiresLegacyEndpoints(ctx, false) + return next.HandleSerialize(ctx, in) + } return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err) } @@ -129,27 +141,10 @@ func removeResolveEndpointMiddleware(stack *middleware.Stack) error { type wrappedEndpointResolver struct { awsResolver aws.EndpointResolverWithOptions - resolver EndpointResolver } func (w *wrappedEndpointResolver) ResolveEndpoint(region string, options EndpointResolverOptions) (endpoint aws.Endpoint, err error) { - if w.awsResolver == nil { - goto fallback - } - endpoint, err = w.awsResolver.ResolveEndpoint(ServiceID, region, options) - if err == nil { - return endpoint, nil - } - - if nf := (&aws.EndpointNotFoundError{}); !errors.As(err, &nf) { - return endpoint, err - } - -fallback: - if w.resolver == nil { - return endpoint, fmt.Errorf("default endpoint resolver provided was nil") - } - return w.resolver.ResolveEndpoint(region, options) + return w.awsResolver.ResolveEndpoint(ServiceID, region, options) } type awsEndpointResolverAdaptor func(service, region string) (aws.Endpoint, error) @@ -160,12 +155,13 @@ func (a awsEndpointResolverAdaptor) ResolveEndpoint(service, region string, opti var _ aws.EndpointResolverWithOptions = awsEndpointResolverAdaptor(nil) -// withEndpointResolver returns an EndpointResolver that first delegates endpoint resolution to the awsResolver. -// If awsResolver returns aws.EndpointNotFoundError error, the resolver will use the the provided -// fallbackResolver for resolution. +// withEndpointResolver returns an aws.EndpointResolverWithOptions that first delegates endpoint resolution to the awsResolver. +// If awsResolver returns aws.EndpointNotFoundError error, the v1 resolver middleware will swallow the error, +// and set an appropriate context flag such that fallback will occur when EndpointResolverV2 is invoked +// via its middleware. // -// fallbackResolver must not be nil -func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptions aws.EndpointResolverWithOptions, fallbackResolver EndpointResolver) EndpointResolver { +// If another error (besides aws.EndpointNotFoundError) is returned, then that error will be propagated. +func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptions aws.EndpointResolverWithOptions) EndpointResolver { var resolver aws.EndpointResolverWithOptions if awsResolverWithOptions != nil { @@ -176,7 +172,6 @@ func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptio return &wrappedEndpointResolver{ awsResolver: resolver, - resolver: fallbackResolver, } } @@ -198,3 +193,944 @@ func finalizeClientEndpointResolverOptions(options *Options) { } } + +func resolveEndpointResolverV2(options *Options) { + if options.EndpointResolverV2 == nil { + options.EndpointResolverV2 = NewDefaultEndpointResolverV2() + } +} + +func resolveBaseEndpoint(cfg aws.Config, o *Options) { + if cfg.BaseEndpoint != nil { + o.BaseEndpoint = cfg.BaseEndpoint + } + + _, g := os.LookupEnv("AWS_ENDPOINT_URL") + _, s := os.LookupEnv("AWS_ENDPOINT_URL_STS") + + if g && !s { + return + } + + value, found, err := internalConfig.ResolveServiceBaseEndpoint(context.Background(), "STS", cfg.ConfigSources) + if found && err == nil { + o.BaseEndpoint = &value + } +} + +func bindRegion(region string) *string { + if region == "" { + return nil + } + return aws.String(endpoints.MapFIPSRegion(region)) +} + +// EndpointParameters provides the parameters that influence how endpoints are +// resolved. +type EndpointParameters struct { + // The AWS region used to dispatch the request. + // + // Parameter is + // required. + // + // AWS::Region + Region *string + + // When true, use the dual-stack endpoint. If the configured endpoint does not + // support dual-stack, dispatching the request MAY return an error. + // + // Defaults to + // false if no value is provided. + // + // AWS::UseDualStack + UseDualStack *bool + + // When true, send this request to the FIPS-compliant regional endpoint. If the + // configured endpoint does not have a FIPS compliant endpoint, dispatching the + // request will return an error. + // + // Defaults to false if no value is + // provided. + // + // AWS::UseFIPS + UseFIPS *bool + + // Override the endpoint used to send this request + // + // Parameter is + // required. + // + // SDK::Endpoint + Endpoint *string + + // Whether the global endpoint should be used, rather then the regional endpoint + // for us-east-1. + // + // Defaults to false if no value is + // provided. + // + // AWS::STS::UseGlobalEndpoint + UseGlobalEndpoint *bool +} + +// ValidateRequired validates required parameters are set. +func (p EndpointParameters) ValidateRequired() error { + if p.UseDualStack == nil { + return fmt.Errorf("parameter UseDualStack is required") + } + + if p.UseFIPS == nil { + return fmt.Errorf("parameter UseFIPS is required") + } + + if p.UseGlobalEndpoint == nil { + return fmt.Errorf("parameter UseGlobalEndpoint is required") + } + + return nil +} + +// WithDefaults returns a shallow copy of EndpointParameterswith default values +// applied to members where applicable. +func (p EndpointParameters) WithDefaults() EndpointParameters { + if p.UseDualStack == nil { + p.UseDualStack = ptr.Bool(false) + } + + if p.UseFIPS == nil { + p.UseFIPS = ptr.Bool(false) + } + + if p.UseGlobalEndpoint == nil { + p.UseGlobalEndpoint = ptr.Bool(false) + } + return p +} + +type stringSlice []string + +func (s stringSlice) Get(i int) *string { + if i < 0 || i >= len(s) { + return nil + } + + v := s[i] + return &v +} + +// EndpointResolverV2 provides the interface for resolving service endpoints. +type EndpointResolverV2 interface { + // ResolveEndpoint attempts to resolve the endpoint with the provided options, + // returning the endpoint if found. Otherwise an error is returned. + ResolveEndpoint(ctx context.Context, params EndpointParameters) ( + smithyendpoints.Endpoint, error, + ) +} + +// resolver provides the implementation for resolving endpoints. +type resolver struct{} + +func NewDefaultEndpointResolverV2() EndpointResolverV2 { + return &resolver{} +} + +// ResolveEndpoint attempts to resolve the endpoint with the provided options, +// returning the endpoint if found. Otherwise an error is returned. +func (r *resolver) ResolveEndpoint( + ctx context.Context, params EndpointParameters, +) ( + endpoint smithyendpoints.Endpoint, err error, +) { + params = params.WithDefaults() + if err = params.ValidateRequired(); err != nil { + return endpoint, fmt.Errorf("endpoint parameters are not valid, %w", err) + } + _UseDualStack := *params.UseDualStack + _UseFIPS := *params.UseFIPS + _UseGlobalEndpoint := *params.UseGlobalEndpoint + + if _UseGlobalEndpoint == true { + if !(params.Endpoint != nil) { + if exprVal := params.Region; exprVal != nil { + _Region := *exprVal + _ = _Region + if exprVal := awsrulesfn.GetPartition(_Region); exprVal != nil { + _PartitionResult := *exprVal + _ = _PartitionResult + if _UseFIPS == false { + if _UseDualStack == false { + if _Region == "ap-northeast-1" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "ap-south-1" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "ap-southeast-1" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "ap-southeast-2" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "aws-global" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "ca-central-1" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "eu-central-1" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "eu-north-1" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "eu-west-1" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "eu-west-2" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "eu-west-3" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "sa-east-1" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "us-east-1" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "us-east-2" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "us-west-1" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + if _Region == "us-west-2" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + uriString := func() string { + var out strings.Builder + out.WriteString("https://sts.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, _Region) + return sp + }(), + }, + }) + return out + }(), + }, nil + } + } + } + } + } + } + if exprVal := params.Endpoint; exprVal != nil { + _Endpoint := *exprVal + _ = _Endpoint + if _UseFIPS == true { + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: FIPS and custom endpoint are not supported") + } + if _UseDualStack == true { + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: Dualstack and custom endpoint are not supported") + } + uriString := _Endpoint + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + if exprVal := params.Region; exprVal != nil { + _Region := *exprVal + _ = _Region + if exprVal := awsrulesfn.GetPartition(_Region); exprVal != nil { + _PartitionResult := *exprVal + _ = _PartitionResult + if _UseFIPS == true { + if _UseDualStack == true { + if true == _PartitionResult.SupportsFIPS { + if true == _PartitionResult.SupportsDualStack { + uriString := func() string { + var out strings.Builder + out.WriteString("https://sts-fips.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DualStackDnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "FIPS and DualStack are enabled, but this partition does not support one or both") + } + } + if _UseFIPS == true { + if _PartitionResult.SupportsFIPS == true { + if _PartitionResult.Name == "aws-us-gov" { + uriString := func() string { + var out strings.Builder + out.WriteString("https://sts.") + out.WriteString(_Region) + out.WriteString(".amazonaws.com") + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + uriString := func() string { + var out strings.Builder + out.WriteString("https://sts-fips.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "FIPS is enabled but this partition does not support FIPS") + } + if _UseDualStack == true { + if true == _PartitionResult.SupportsDualStack { + uriString := func() string { + var out strings.Builder + out.WriteString("https://sts.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DualStackDnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "DualStack is enabled but this partition does not support DualStack") + } + if _Region == "aws-global" { + uriString := "https://sts.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: func() smithy.Properties { + var out smithy.Properties + smithyauth.SetAuthOptions(&out, []*smithyauth.Option{ + { + SchemeID: "aws.auth#sigv4", + SignerProperties: func() smithy.Properties { + var sp smithy.Properties + smithyhttp.SetSigV4SigningName(&sp, "sts") + smithyhttp.SetSigV4ASigningName(&sp, "sts") + + smithyhttp.SetSigV4SigningRegion(&sp, "us-east-1") + return sp + }(), + }, + }) + return out + }(), + }, nil + } + uriString := func() string { + var out strings.Builder + out.WriteString("https://sts.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("Endpoint resolution failed. Invalid operation or environment input.") + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: Missing Region") +} + +type endpointParamsBinder interface { + bindEndpointParams(*EndpointParameters) +} + +func bindEndpointParams(ctx context.Context, input interface{}, options Options) *EndpointParameters { + params := &EndpointParameters{} + + params.Region = bindRegion(options.Region) + params.UseDualStack = aws.Bool(options.EndpointOptions.UseDualStackEndpoint == aws.DualStackEndpointStateEnabled) + params.UseFIPS = aws.Bool(options.EndpointOptions.UseFIPSEndpoint == aws.FIPSEndpointStateEnabled) + params.Endpoint = options.BaseEndpoint + + if b, ok := input.(endpointParamsBinder); ok { + b.bindEndpointParams(params) + } + + return params +} + +type resolveEndpointV2Middleware struct { + options Options +} + +func (*resolveEndpointV2Middleware) ID() string { + return "ResolveEndpointV2" +} + +func (m *resolveEndpointV2Middleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "ResolveEndpoint") + defer span.End() + + if awsmiddleware.GetRequiresLegacyEndpoints(ctx) { + return next.HandleFinalize(ctx, in) + } + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.options.EndpointResolverV2 == nil { + return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil") + } + + params := bindEndpointParams(ctx, getOperationInput(ctx), m.options) + endpt, err := timeOperationMetric(ctx, "client.call.resolve_endpoint_duration", + func() (smithyendpoints.Endpoint, error) { + return m.options.EndpointResolverV2.ResolveEndpoint(ctx, *params) + }) + if err != nil { + return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err) + } + + span.SetProperty("client.call.resolved_endpoint", endpt.URI.String()) + + if endpt.URI.RawPath == "" && req.URL.RawPath != "" { + endpt.URI.RawPath = endpt.URI.Path + } + req.URL.Scheme = endpt.URI.Scheme + req.URL.Host = endpt.URI.Host + req.URL.Path = smithyhttp.JoinPath(endpt.URI.Path, req.URL.Path) + req.URL.RawPath = smithyhttp.JoinPath(endpt.URI.RawPath, req.URL.RawPath) + for k := range endpt.Headers { + req.Header.Set(k, endpt.Headers.Get(k)) + } + + rscheme := getResolvedAuthScheme(ctx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + opts, _ := smithyauth.GetAuthOptions(&endpt.Properties) + for _, o := range opts { + rscheme.SignerProperties.SetAll(&o.SignerProperties) + } + + span.End() + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/generated.json b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/generated.json index 86341bb7d7ee..6b6e839e6c97 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/generated.json +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/generated.json @@ -3,6 +3,7 @@ "github.com/aws/aws-sdk-go-v2": "v1.4.0", "github.com/aws/aws-sdk-go-v2/internal/configsources": "v0.0.0-00010101000000-000000000000", "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2": "v2.0.0-00010101000000-000000000000", + "github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding": "v1.0.5", "github.com/aws/aws-sdk-go-v2/service/internal/presigned-url": "v1.0.7", "github.com/aws/smithy-go": "v1.4.0" }, @@ -17,14 +18,19 @@ "api_op_GetCallerIdentity.go", "api_op_GetFederationToken.go", "api_op_GetSessionToken.go", + "auth.go", "deserializers.go", "doc.go", "endpoints.go", + "endpoints_config_test.go", + "endpoints_test.go", "generated.json", "internal/endpoints/endpoints.go", "internal/endpoints/endpoints_test.go", + "options.go", "protocol_test.go", "serializers.go", + "snapshot_test.go", "types/errors.go", "types/types.go", "validators.go" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go index 9b9e052e3a59..8b3c00566d10 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go @@ -3,4 +3,4 @@ package sts // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.16.19" +const goModuleVersion = "1.31.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints/endpoints.go index d061a4e9926f..9fe930b8d7b3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints/endpoints.go @@ -89,13 +89,17 @@ var partitionRegexp = struct { AwsCn *regexp.Regexp AwsIso *regexp.Regexp AwsIsoB *regexp.Regexp + AwsIsoE *regexp.Regexp + AwsIsoF *regexp.Regexp AwsUsGov *regexp.Regexp }{ - Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$"), + Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$"), AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"), AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"), AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"), + AwsIsoE: regexp.MustCompile("^eu\\-isoe\\-\\w+\\-\\d+$"), + AwsIsoF: regexp.MustCompile("^us\\-isof\\-\\w+\\-\\d+$"), AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"), } @@ -153,6 +157,9 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "ap-south-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-south-2", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "ap-southeast-1", }: endpoints.Endpoint{}, @@ -162,6 +169,12 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "ap-southeast-3", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-southeast-4", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-southeast-5", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "aws-global", }: endpoints.Endpoint{ @@ -173,15 +186,24 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "ca-central-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ca-west-1", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "eu-central-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-central-2", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "eu-north-1", }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "eu-south-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-south-2", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "eu-west-1", }: endpoints.Endpoint{}, @@ -191,6 +213,9 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "eu-west-3", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "il-central-1", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "me-central-1", }: endpoints.Endpoint{}, @@ -372,6 +397,48 @@ var defaultPartitions = endpoints.Partitions{ }: endpoints.Endpoint{}, }, }, + { + ID: "aws-iso-e", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "sts-fips.{region}.cloud.adc-e.uk", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "sts.{region}.cloud.adc-e.uk", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoE, + IsRegionalized: true, + }, + { + ID: "aws-iso-f", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "sts-fips.{region}.csp.hci.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "sts.{region}.csp.hci.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoF, + IsRegionalized: true, + }, { ID: "aws-us-gov", Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/options.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/options.go new file mode 100644 index 000000000000..e1398f3bb852 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/options.go @@ -0,0 +1,232 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package sts + +import ( + "context" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy" + smithyauth "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" + "net/http" +) + +type HTTPClient interface { + Do(*http.Request) (*http.Response, error) +} + +type Options struct { + // Set of options to modify how an operation is invoked. These apply to all + // operations invoked for this client. Use functional options on operation call to + // modify this list for per operation behavior. + APIOptions []func(*middleware.Stack) error + + // The optional application specific identifier appended to the User-Agent header. + AppID string + + // This endpoint will be given as input to an EndpointResolverV2. It is used for + // providing a custom base endpoint that is subject to modifications by the + // processing EndpointResolverV2. + BaseEndpoint *string + + // Configures the events that will be sent to the configured logger. + ClientLogMode aws.ClientLogMode + + // The credentials object to use when signing requests. + Credentials aws.CredentialsProvider + + // The configuration DefaultsMode that the SDK should use when constructing the + // clients initial default settings. + DefaultsMode aws.DefaultsMode + + // The endpoint options to be used when attempting to resolve an endpoint. + EndpointOptions EndpointResolverOptions + + // The service endpoint resolver. + // + // Deprecated: Deprecated: EndpointResolver and WithEndpointResolver. Providing a + // value for this field will likely prevent you from using any endpoint-related + // service features released after the introduction of EndpointResolverV2 and + // BaseEndpoint. + // + // To migrate an EndpointResolver implementation that uses a custom endpoint, set + // the client option BaseEndpoint instead. + EndpointResolver EndpointResolver + + // Resolves the endpoint used for a particular service operation. This should be + // used over the deprecated EndpointResolver. + EndpointResolverV2 EndpointResolverV2 + + // Signature Version 4 (SigV4) Signer + HTTPSignerV4 HTTPSignerV4 + + // The logger writer interface to write logging messages to. + Logger logging.Logger + + // The client meter provider. + MeterProvider metrics.MeterProvider + + // The region to send requests to. (Required) + Region string + + // RetryMaxAttempts specifies the maximum number attempts an API client will call + // an operation that fails with a retryable error. A value of 0 is ignored, and + // will not be used to configure the API client created default retryer, or modify + // per operation call's retry max attempts. + // + // If specified in an operation call's functional options with a value that is + // different than the constructed client's Options, the Client's Retryer will be + // wrapped to use the operation's specific RetryMaxAttempts value. + RetryMaxAttempts int + + // RetryMode specifies the retry mode the API client will be created with, if + // Retryer option is not also specified. + // + // When creating a new API Clients this member will only be used if the Retryer + // Options member is nil. This value will be ignored if Retryer is not nil. + // + // Currently does not support per operation call overrides, may in the future. + RetryMode aws.RetryMode + + // Retryer guides how HTTP requests should be retried in case of recoverable + // failures. When nil the API client will use a default retryer. The kind of + // default retry created by the API client can be changed with the RetryMode + // option. + Retryer aws.Retryer + + // The RuntimeEnvironment configuration, only populated if the DefaultsMode is set + // to DefaultsModeAuto and is initialized using config.LoadDefaultConfig . You + // should not populate this structure programmatically, or rely on the values here + // within your applications. + RuntimeEnvironment aws.RuntimeEnvironment + + // The client tracer provider. + TracerProvider tracing.TracerProvider + + // The initial DefaultsMode used when the client options were constructed. If the + // DefaultsMode was set to aws.DefaultsModeAuto this will store what the resolved + // value was at that point in time. + // + // Currently does not support per operation call overrides, may in the future. + resolvedDefaultsMode aws.DefaultsMode + + // The HTTP client to invoke API calls with. Defaults to client's default HTTP + // implementation if nil. + HTTPClient HTTPClient + + // The auth scheme resolver which determines how to authenticate for each + // operation. + AuthSchemeResolver AuthSchemeResolver + + // The list of auth schemes supported by the client. + AuthSchemes []smithyhttp.AuthScheme +} + +// Copy creates a clone where the APIOptions list is deep copied. +func (o Options) Copy() Options { + to := o + to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) + copy(to.APIOptions, o.APIOptions) + + return to +} + +func (o Options) GetIdentityResolver(schemeID string) smithyauth.IdentityResolver { + if schemeID == "aws.auth#sigv4" { + return getSigV4IdentityResolver(o) + } + if schemeID == "smithy.api#noAuth" { + return &smithyauth.AnonymousIdentityResolver{} + } + return nil +} + +// WithAPIOptions returns a functional option for setting the Client's APIOptions +// option. +func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) { + return func(o *Options) { + o.APIOptions = append(o.APIOptions, optFns...) + } +} + +// Deprecated: EndpointResolver and WithEndpointResolver. Providing a value for +// this field will likely prevent you from using any endpoint-related service +// features released after the introduction of EndpointResolverV2 and BaseEndpoint. +// +// To migrate an EndpointResolver implementation that uses a custom endpoint, set +// the client option BaseEndpoint instead. +func WithEndpointResolver(v EndpointResolver) func(*Options) { + return func(o *Options) { + o.EndpointResolver = v + } +} + +// WithEndpointResolverV2 returns a functional option for setting the Client's +// EndpointResolverV2 option. +func WithEndpointResolverV2(v EndpointResolverV2) func(*Options) { + return func(o *Options) { + o.EndpointResolverV2 = v + } +} + +func getSigV4IdentityResolver(o Options) smithyauth.IdentityResolver { + if o.Credentials != nil { + return &internalauthsmithy.CredentialsProviderAdapter{Provider: o.Credentials} + } + return nil +} + +// WithSigV4SigningName applies an override to the authentication workflow to +// use the given signing name for SigV4-authenticated operations. +// +// This is an advanced setting. The value here is FINAL, taking precedence over +// the resolved signing name from both auth scheme resolution and endpoint +// resolution. +func WithSigV4SigningName(name string) func(*Options) { + fn := func(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, + ) { + return next.HandleInitialize(awsmiddleware.SetSigningName(ctx, name), in) + } + return func(o *Options) { + o.APIOptions = append(o.APIOptions, func(s *middleware.Stack) error { + return s.Initialize.Add( + middleware.InitializeMiddlewareFunc("withSigV4SigningName", fn), + middleware.Before, + ) + }) + } +} + +// WithSigV4SigningRegion applies an override to the authentication workflow to +// use the given signing region for SigV4-authenticated operations. +// +// This is an advanced setting. The value here is FINAL, taking precedence over +// the resolved signing region from both auth scheme resolution and endpoint +// resolution. +func WithSigV4SigningRegion(region string) func(*Options) { + fn := func(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, + ) { + return next.HandleInitialize(awsmiddleware.SetSigningRegion(ctx, region), in) + } + return func(o *Options) { + o.APIOptions = append(o.APIOptions, func(s *middleware.Stack) error { + return s.Initialize.Add( + middleware.InitializeMiddlewareFunc("withSigV4SigningRegion", fn), + middleware.Before, + ) + }) + } +} + +func ignoreAnonymousAuth(options *Options) { + if aws.IsCredentialsProvider(options.Credentials, (*aws.AnonymousCredentials)(nil)) { + options.Credentials = nil + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/serializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/serializers.go index 05531d369599..1bcbc828423b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/serializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/serializers.go @@ -11,6 +11,7 @@ import ( smithy "github.com/aws/smithy-go" "github.com/aws/smithy-go/encoding/httpbinding" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" "path" ) @@ -25,6 +26,10 @@ func (*awsAwsquery_serializeOpAssumeRole) ID() string { func (m *awsAwsquery_serializeOpAssumeRole) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -76,6 +81,8 @@ func (m *awsAwsquery_serializeOpAssumeRole) HandleSerialize(ctx context.Context, } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } @@ -89,6 +96,10 @@ func (*awsAwsquery_serializeOpAssumeRoleWithSAML) ID() string { func (m *awsAwsquery_serializeOpAssumeRoleWithSAML) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -140,6 +151,8 @@ func (m *awsAwsquery_serializeOpAssumeRoleWithSAML) HandleSerialize(ctx context. } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } @@ -153,6 +166,10 @@ func (*awsAwsquery_serializeOpAssumeRoleWithWebIdentity) ID() string { func (m *awsAwsquery_serializeOpAssumeRoleWithWebIdentity) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -204,6 +221,8 @@ func (m *awsAwsquery_serializeOpAssumeRoleWithWebIdentity) HandleSerialize(ctx c } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } @@ -217,6 +236,10 @@ func (*awsAwsquery_serializeOpDecodeAuthorizationMessage) ID() string { func (m *awsAwsquery_serializeOpDecodeAuthorizationMessage) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -268,6 +291,8 @@ func (m *awsAwsquery_serializeOpDecodeAuthorizationMessage) HandleSerialize(ctx } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } @@ -281,6 +306,10 @@ func (*awsAwsquery_serializeOpGetAccessKeyInfo) ID() string { func (m *awsAwsquery_serializeOpGetAccessKeyInfo) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -332,6 +361,8 @@ func (m *awsAwsquery_serializeOpGetAccessKeyInfo) HandleSerialize(ctx context.Co } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } @@ -345,6 +376,10 @@ func (*awsAwsquery_serializeOpGetCallerIdentity) ID() string { func (m *awsAwsquery_serializeOpGetCallerIdentity) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -392,6 +427,8 @@ func (m *awsAwsquery_serializeOpGetCallerIdentity) HandleSerialize(ctx context.C } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } @@ -405,6 +442,10 @@ func (*awsAwsquery_serializeOpGetFederationToken) ID() string { func (m *awsAwsquery_serializeOpGetFederationToken) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -456,6 +497,8 @@ func (m *awsAwsquery_serializeOpGetFederationToken) HandleSerialize(ctx context. } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } @@ -469,6 +512,10 @@ func (*awsAwsquery_serializeOpGetSessionToken) ID() string { func (m *awsAwsquery_serializeOpGetSessionToken) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() request, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} @@ -520,12 +567,11 @@ func (m *awsAwsquery_serializeOpGetSessionToken) HandleSerialize(ctx context.Con } in.Request = request + endTimer() + span.End() return next.HandleSerialize(ctx, in) } func awsAwsquery_serializeDocumentPolicyDescriptorListType(v []types.PolicyDescriptorType, value query.Value) error { - if len(v) == 0 { - return nil - } array := value.Array("member") for i := range v { @@ -549,6 +595,35 @@ func awsAwsquery_serializeDocumentPolicyDescriptorType(v *types.PolicyDescriptor return nil } +func awsAwsquery_serializeDocumentProvidedContext(v *types.ProvidedContext, value query.Value) error { + object := value.Object() + _ = object + + if v.ContextAssertion != nil { + objectKey := object.Key("ContextAssertion") + objectKey.String(*v.ContextAssertion) + } + + if v.ProviderArn != nil { + objectKey := object.Key("ProviderArn") + objectKey.String(*v.ProviderArn) + } + + return nil +} + +func awsAwsquery_serializeDocumentProvidedContextsListType(v []types.ProvidedContext, value query.Value) error { + array := value.Array("member") + + for i := range v { + av := array.Value() + if err := awsAwsquery_serializeDocumentProvidedContext(&v[i], av); err != nil { + return err + } + } + return nil +} + func awsAwsquery_serializeDocumentTag(v *types.Tag, value query.Value) error { object := value.Object() _ = object @@ -567,9 +642,6 @@ func awsAwsquery_serializeDocumentTag(v *types.Tag, value query.Value) error { } func awsAwsquery_serializeDocumentTagKeyListType(v []string, value query.Value) error { - if len(v) == 0 { - return nil - } array := value.Array("member") for i := range v { @@ -580,9 +652,6 @@ func awsAwsquery_serializeDocumentTagKeyListType(v []string, value query.Value) } func awsAwsquery_serializeDocumentTagListType(v []types.Tag, value query.Value) error { - if len(v) == 0 { - return nil - } array := value.Array("member") for i := range v { @@ -620,6 +689,13 @@ func awsAwsquery_serializeOpDocumentAssumeRoleInput(v *AssumeRoleInput, value qu } } + if v.ProvidedContexts != nil { + objectKey := object.Key("ProvidedContexts") + if err := awsAwsquery_serializeDocumentProvidedContextsListType(v.ProvidedContexts, objectKey); err != nil { + return err + } + } + if v.RoleArn != nil { objectKey := object.Key("RoleArn") objectKey.String(*v.RoleArn) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/errors.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/errors.go index b109fe5fc181..9573a4b6461f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/errors.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/errors.go @@ -12,6 +12,8 @@ import ( type ExpiredTokenException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -24,7 +26,12 @@ func (e *ExpiredTokenException) ErrorMessage() string { } return *e.Message } -func (e *ExpiredTokenException) ErrorCode() string { return "ExpiredTokenException" } +func (e *ExpiredTokenException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ExpiredTokenException" + } + return *e.ErrorCodeOverride +} func (e *ExpiredTokenException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // The request could not be fulfilled because the identity provider (IDP) that was @@ -35,6 +42,8 @@ func (e *ExpiredTokenException) ErrorFault() smithy.ErrorFault { return smithy.F type IDPCommunicationErrorException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -47,16 +56,24 @@ func (e *IDPCommunicationErrorException) ErrorMessage() string { } return *e.Message } -func (e *IDPCommunicationErrorException) ErrorCode() string { return "IDPCommunicationError" } +func (e *IDPCommunicationErrorException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "IDPCommunicationError" + } + return *e.ErrorCodeOverride +} func (e *IDPCommunicationErrorException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // The identity provider (IdP) reported that authentication failed. This might be -// because the claim is invalid. If this error is returned for the -// AssumeRoleWithWebIdentity operation, it can also mean that the claim has expired -// or has been explicitly revoked. +// because the claim is invalid. +// +// If this error is returned for the AssumeRoleWithWebIdentity operation, it can +// also mean that the claim has expired or has been explicitly revoked. type IDPRejectedClaimException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -69,7 +86,12 @@ func (e *IDPRejectedClaimException) ErrorMessage() string { } return *e.Message } -func (e *IDPRejectedClaimException) ErrorCode() string { return "IDPRejectedClaim" } +func (e *IDPRejectedClaimException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "IDPRejectedClaim" + } + return *e.ErrorCodeOverride +} func (e *IDPRejectedClaimException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // The error returned if the message passed to DecodeAuthorizationMessage was @@ -78,6 +100,8 @@ func (e *IDPRejectedClaimException) ErrorFault() smithy.ErrorFault { return smit type InvalidAuthorizationMessageException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -91,7 +115,10 @@ func (e *InvalidAuthorizationMessageException) ErrorMessage() string { return *e.Message } func (e *InvalidAuthorizationMessageException) ErrorCode() string { - return "InvalidAuthorizationMessageException" + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidAuthorizationMessageException" + } + return *e.ErrorCodeOverride } func (e *InvalidAuthorizationMessageException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient @@ -103,6 +130,8 @@ func (e *InvalidAuthorizationMessageException) ErrorFault() smithy.ErrorFault { type InvalidIdentityTokenException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -115,7 +144,12 @@ func (e *InvalidIdentityTokenException) ErrorMessage() string { } return *e.Message } -func (e *InvalidIdentityTokenException) ErrorCode() string { return "InvalidIdentityToken" } +func (e *InvalidIdentityTokenException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidIdentityToken" + } + return *e.ErrorCodeOverride +} func (e *InvalidIdentityTokenException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // The request was rejected because the policy document was malformed. The error @@ -123,6 +157,8 @@ func (e *InvalidIdentityTokenException) ErrorFault() smithy.ErrorFault { return type MalformedPolicyDocumentException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -135,7 +171,12 @@ func (e *MalformedPolicyDocumentException) ErrorMessage() string { } return *e.Message } -func (e *MalformedPolicyDocumentException) ErrorCode() string { return "MalformedPolicyDocument" } +func (e *MalformedPolicyDocumentException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "MalformedPolicyDocument" + } + return *e.ErrorCodeOverride +} func (e *MalformedPolicyDocumentException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // The request was rejected because the total packed size of the session policies @@ -143,16 +184,18 @@ func (e *MalformedPolicyDocumentException) ErrorFault() smithy.ErrorFault { retu // compresses the session policy document, session policy ARNs, and session tags // into a packed binary format that has a separate limit. The error message // indicates by percentage how close the policies and tags are to the upper size -// limit. For more information, see Passing Session Tags in STS -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) in the -// IAM User Guide. You could receive this error even though you meet other defined -// session policy and session tag limits. For more information, see IAM and STS -// Entity Character Limits -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-limits-entity-length) -// in the IAM User Guide. +// limit. For more information, see [Passing Session Tags in STS]in the IAM User Guide. +// +// You could receive this error even though you meet other defined session policy +// and session tag limits. For more information, see [IAM and STS Entity Character Limits]in the IAM User Guide. +// +// [Passing Session Tags in STS]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html +// [IAM and STS Entity Character Limits]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-limits-entity-length type PackedPolicyTooLargeException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -165,18 +208,25 @@ func (e *PackedPolicyTooLargeException) ErrorMessage() string { } return *e.Message } -func (e *PackedPolicyTooLargeException) ErrorCode() string { return "PackedPolicyTooLarge" } +func (e *PackedPolicyTooLargeException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "PackedPolicyTooLarge" + } + return *e.ErrorCodeOverride +} func (e *PackedPolicyTooLargeException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// STS is not activated in the requested region for the account that is being asked -// to generate credentials. The account administrator must use the IAM console to -// activate STS in that region. For more information, see Activating and -// Deactivating Amazon Web Services STS in an Amazon Web Services Region -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) -// in the IAM User Guide. +// STS is not activated in the requested region for the account that is being +// asked to generate credentials. The account administrator must use the IAM +// console to activate STS in that region. For more information, see [Activating and Deactivating Amazon Web Services STS in an Amazon Web Services Region]in the IAM +// User Guide. +// +// [Activating and Deactivating Amazon Web Services STS in an Amazon Web Services Region]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html type RegionDisabledException struct { Message *string + ErrorCodeOverride *string + noSmithyDocumentSerde } @@ -189,5 +239,10 @@ func (e *RegionDisabledException) ErrorMessage() string { } return *e.Message } -func (e *RegionDisabledException) ErrorCode() string { return "RegionDisabledException" } +func (e *RegionDisabledException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "RegionDisabledException" + } + return *e.ErrorCodeOverride +} func (e *RegionDisabledException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/types.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/types.go index 86e509905bea..dff7a3c2e769 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/types.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/types/types.go @@ -11,12 +11,12 @@ import ( // returns. type AssumedRoleUser struct { - // The ARN of the temporary security credentials that are returned from the - // AssumeRole action. For more information about ARNs and how to use them in - // policies, see IAM Identifiers - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) in + // The ARN of the temporary security credentials that are returned from the AssumeRole + // action. For more information about ARNs and how to use them in policies, see [IAM Identifiers]in // the IAM User Guide. // + // [IAM Identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html + // // This member is required. Arn *string @@ -62,9 +62,9 @@ type FederatedUser struct { // The ARN that specifies the federated user that is associated with the // credentials. For more information about ARNs and how to use them in policies, - // see IAM Identifiers - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) in - // the IAM User Guide. + // see [IAM Identifiers]in the IAM User Guide. + // + // [IAM Identifiers]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html // // This member is required. Arn *string @@ -83,37 +83,57 @@ type FederatedUser struct { type PolicyDescriptorType struct { // The Amazon Resource Name (ARN) of the IAM managed policy to use as a session - // policy for the role. For more information about ARNs, see Amazon Resource Names - // (ARNs) and Amazon Web Services Service Namespaces - // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in - // the Amazon Web Services General Reference. + // policy for the role. For more information about ARNs, see [Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces]in the Amazon Web + // Services General Reference. + // + // [Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Arn *string noSmithyDocumentSerde } -// You can pass custom key-value pair attributes when you assume a role or federate -// a user. These are called session tags. You can then use the session tags to -// control access to resources. For more information, see Tagging Amazon Web -// Services STS Sessions -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) in the -// IAM User Guide. +// Contains information about the provided context. This includes the signed and +// encrypted trusted context assertion and the context provider ARN from which the +// trusted context assertion was generated. +type ProvidedContext struct { + + // The signed and encrypted trusted context assertion generated by the context + // provider. The trusted context assertion is signed and encrypted by Amazon Web + // Services STS. + ContextAssertion *string + + // The context provider ARN from which the trusted context assertion was generated. + ProviderArn *string + + noSmithyDocumentSerde +} + +// You can pass custom key-value pair attributes when you assume a role or +// federate a user. These are called session tags. You can then use the session +// tags to control access to resources. For more information, see [Tagging Amazon Web Services STS Sessions]in the IAM User +// Guide. +// +// [Tagging Amazon Web Services STS Sessions]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html type Tag struct { - // The key for a session tag. You can pass up to 50 session tags. The plain text - // session tag keys can’t exceed 128 characters. For these and additional limits, - // see IAM and STS Character Limits - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length) - // in the IAM User Guide. + // The key for a session tag. + // + // You can pass up to 50 session tags. The plain text session tag keys can’t + // exceed 128 characters. For these and additional limits, see [IAM and STS Character Limits]in the IAM User + // Guide. + // + // [IAM and STS Character Limits]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length // // This member is required. Key *string - // The value for a session tag. You can pass up to 50 session tags. The plain text - // session tag values can’t exceed 256 characters. For these and additional limits, - // see IAM and STS Character Limits - // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length) - // in the IAM User Guide. + // The value for a session tag. + // + // You can pass up to 50 session tags. The plain text session tag values can’t + // exceed 256 characters. For these and additional limits, see [IAM and STS Character Limits]in the IAM User + // Guide. + // + // [IAM and STS Character Limits]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length // // This member is required. Value *string diff --git a/vendor/github.com/aws/smithy-go/.gitignore b/vendor/github.com/aws/smithy-go/.gitignore index c01141aa450d..2518b3491549 100644 --- a/vendor/github.com/aws/smithy-go/.gitignore +++ b/vendor/github.com/aws/smithy-go/.gitignore @@ -20,3 +20,10 @@ target/ build/ */out/ */*/out/ + +# VS Code +bin/ +.vscode/ + +# make +c.out diff --git a/vendor/github.com/aws/smithy-go/CHANGELOG.md b/vendor/github.com/aws/smithy-go/CHANGELOG.md index a608e2b63243..28d3ccb90f63 100644 --- a/vendor/github.com/aws/smithy-go/CHANGELOG.md +++ b/vendor/github.com/aws/smithy-go/CHANGELOG.md @@ -1,3 +1,104 @@ +# Release (2024-09-19) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/smithy-go`: v1.21.0 + * **Feature**: Add tracing and metrics APIs, and builtin instrumentation for both, in generated clients. +* `github.com/aws/smithy-go/metrics/smithyotelmetrics`: [v1.0.0](metrics/smithyotelmetrics/CHANGELOG.md#v100-2024-09-19) + * **Release**: Initial release of `smithyotelmetrics` module, which is used to adapt an OpenTelemetry SDK meter provider to be used with Smithy clients. +* `github.com/aws/smithy-go/tracing/smithyoteltracing`: [v1.0.0](tracing/smithyoteltracing/CHANGELOG.md#v100-2024-09-19) + * **Release**: Initial release of `smithyoteltracing` module, which is used to adapt an OpenTelemetry SDK tracer provider to be used with Smithy clients. + +# Release (2024-08-14) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.20.4 + * **Dependency Update**: Bump minimum Go version to 1.21. + +# Release (2024-06-27) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.20.3 + * **Bug Fix**: Fix encoding/cbor test overflow on x86. + +# Release (2024-03-29) + +* No change notes available for this release. + +# Release (2024-02-21) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.20.1 + * **Bug Fix**: Remove runtime dependency on go-cmp. + +# Release (2024-02-13) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.20.0 + * **Feature**: Add codegen definition for sigv4a trait. + * **Feature**: Bump minimum Go version to 1.20 per our language support policy. + +# Release (2023-12-07) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.19.0 + * **Feature**: Support modeled request compression. + +# Release (2023-11-30) + +* No change notes available for this release. + +# Release (2023-11-29) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.18.0 + * **Feature**: Expose Options() method on generated service clients. + +# Release (2023-11-15) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.17.0 + * **Feature**: Support identity/auth components of client reference architecture. + +# Release (2023-10-31) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.16.0 + * **Feature**: **LANG**: Bump minimum go version to 1.19. + +# Release (2023-10-06) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.15.0 + * **Feature**: Add `http.WithHeaderComment` middleware. + +# Release (2023-08-18) + +* No change notes available for this release. + +# Release (2023-08-07) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.14.1 + * **Bug Fix**: Prevent duplicated error returns in EndpointResolverV2 default implementation. + +# Release (2023-07-31) + +## General Highlights +* **Feature**: Adds support for smithy-modeled endpoint resolution. + +# Release (2022-12-02) + +* No change notes available for this release. + +# Release (2022-10-24) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.13.4 + * **Bug Fix**: fixed document type checking for encoding nested types + # Release (2022-09-14) * No change notes available for this release. diff --git a/vendor/github.com/aws/smithy-go/Makefile b/vendor/github.com/aws/smithy-go/Makefile index b8c657435ee5..e66fa8caceb1 100644 --- a/vendor/github.com/aws/smithy-go/Makefile +++ b/vendor/github.com/aws/smithy-go/Makefile @@ -14,6 +14,9 @@ REPOTOOLS_CMD_CHANGELOG = ${REPOTOOLS_MODULE}/cmd/changelog@${REPOTOOLS_VERSION} REPOTOOLS_CMD_TAG_RELEASE = ${REPOTOOLS_MODULE}/cmd/tagrelease@${REPOTOOLS_VERSION} REPOTOOLS_CMD_MODULE_VERSION = ${REPOTOOLS_MODULE}/cmd/moduleversion@${REPOTOOLS_VERSION} +UNIT_TEST_TAGS= +BUILD_TAGS= + ifneq ($(PRE_RELEASE_VERSION),) REPOTOOLS_CMD_CALCULATE_RELEASE_ADDITIONAL_ARGS += -preview=${PRE_RELEASE_VERSION} endif @@ -27,6 +30,42 @@ smithy-build: smithy-clean: cd codegen && ./gradlew clean +################## +# Linting/Verify # +################## +.PHONY: verify vet cover + +verify: vet + +vet: + go vet ${BUILD_TAGS} --all ./... + +cover: + go test ${BUILD_TAGS} -coverprofile c.out ./... + @cover=`go tool cover -func c.out | grep '^total:' | awk '{ print $$3+0 }'`; \ + echo "total (statements): $$cover%"; + +################ +# Unit Testing # +################ +.PHONY: unit unit-race unit-test unit-race-test + +unit: verify + go vet ${BUILD_TAGS} --all ./... && \ + go test ${BUILD_TAGS} ${RUN_NONE} ./... && \ + go test -timeout=1m ${UNIT_TEST_TAGS} ./... + +unit-race: verify + go vet ${BUILD_TAGS} --all ./... && \ + go test ${BUILD_TAGS} ${RUN_NONE} ./... && \ + go test -timeout=1m ${UNIT_TEST_TAGS} -race -cpu=4 ./... + +unit-test: verify + go test -timeout=1m ${UNIT_TEST_TAGS} ./... + +unit-race-test: verify + go test -timeout=1m ${UNIT_TEST_TAGS} -race -cpu=4 ./... + ##################### # Release Process # ##################### diff --git a/vendor/github.com/aws/smithy-go/README.md b/vendor/github.com/aws/smithy-go/README.md index 789b37889606..08df74589a80 100644 --- a/vendor/github.com/aws/smithy-go/README.md +++ b/vendor/github.com/aws/smithy-go/README.md @@ -1,11 +1,92 @@ -## Smithy Go +# Smithy Go [![Go Build Status](https://github.com/aws/smithy-go/actions/workflows/go.yml/badge.svg?branch=main)](https://github.com/aws/smithy-go/actions/workflows/go.yml)[![Codegen Build Status](https://github.com/aws/smithy-go/actions/workflows/codegen.yml/badge.svg?branch=main)](https://github.com/aws/smithy-go/actions/workflows/codegen.yml) -Smithy code generators for Go. +[Smithy](https://smithy.io/) code generators for Go and the accompanying smithy-go runtime. + +The smithy-go runtime requires a minimum version of Go 1.20. **WARNING: All interfaces are subject to change.** +## Can I use the code generators? + +In order to generate a usable smithy client you must provide a [protocol definition](https://github.com/aws/smithy-go/blob/main/codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/integration/ProtocolGenerator.java), +such as [AWS restJson1](https://smithy.io/2.0/aws/protocols/aws-restjson1-protocol.html), +in order to generate transport mechanisms and serialization/deserialization +code ("serde") accordingly. + +The code generator does not currently support any protocols out of the box other than the new `smithy.protocols#rpcv2Cbor`, +therefore the useability of this project on its own is currently limited. +Support for all [AWS protocols](https://smithy.io/2.0/aws/protocols/index.html) +exists in [aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2). We are +tracking the movement of those out of the SDK into smithy-go in +[#458](https://github.com/aws/smithy-go/issues/458), but there's currently no +timeline for doing so. + +## Plugins + +This repository implements the following Smithy build plugins: + +| ID | GAV prefix | Description | +|----|------------|-------------| +| `go-codegen` | `software.amazon.smithy.go:smithy-go-codegen` | Implements Go client code generation for Smithy models. | +| `go-server-codegen` | `software.amazon.smithy.go:smithy-go-codegen` | Implements Go server code generation for Smithy models. | + +**NOTE: Build plugins are not currently published to mavenCentral. You must publish to mavenLocal to make the build plugins visible to the Smithy CLI. The artifact version is currently fixed at 0.1.0.** + +## `go-codegen` + +### Configuration + +[`GoSettings`](codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/GoSettings.java) +contains all of the settings enabled from `smithy-build.json` and helper +methods and types. The up-to-date list of top-level properties enabled for +`go-client-codegen` can be found in `GoSettings::from()`. + +| Setting | Type | Required | Description | +|-----------------|---------|----------|-----------------------------------------------------------------------------------------------------------------------------| +| `service` | string | yes | The Shape ID of the service for which to generate the client. | +| `module` | string | yes | Name of the module in `generated.json` (and `go.mod` if `generateGoMod` is enabled) and `doc.go`. | +| `generateGoMod` | boolean | | Whether to generate a default `go.mod` file. The default value is `false`. | +| `goDirective` | string | | [Go directive](https://go.dev/ref/mod#go-mod-file-go) of the module. The default value is the minimum supported Go version. | + +### Supported protocols + +| Protocol | Notes | +|----------|-------| +| [`smithy.protocols#rpcv2Cbor`](https://smithy.io/2.0/additional-specs/protocols/smithy-rpc-v2.html) | Event streaming not yet implemented. | + +### Example + +This example applies the `go-codegen` build plugin to the Smithy quickstart +example created from `smithy init`: + +```json +{ + "version": "1.0", + "sources": [ + "models" + ], + "maven": { + "dependencies": [ + "software.amazon.smithy.go:smithy-go-codegen:0.1.0" + ] + }, + "plugins": { + "go-codegen": { + "service": "example.weather#Weather", + "module": "github.com/example/weather", + "generateGoMod": true, + "goDirective": "1.20" + } + } +} +``` + +## `go-server-codegen` + +This plugin is a work-in-progress and is currently undocumented. + ## License This project is licensed under the Apache-2.0 License. diff --git a/vendor/github.com/aws/smithy-go/auth/auth.go b/vendor/github.com/aws/smithy-go/auth/auth.go new file mode 100644 index 000000000000..5bdb70c9a781 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/auth/auth.go @@ -0,0 +1,3 @@ +// Package auth defines protocol-agnostic authentication types for smithy +// clients. +package auth diff --git a/vendor/github.com/aws/smithy-go/auth/identity.go b/vendor/github.com/aws/smithy-go/auth/identity.go new file mode 100644 index 000000000000..ba8cf70d4d44 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/auth/identity.go @@ -0,0 +1,47 @@ +package auth + +import ( + "context" + "time" + + "github.com/aws/smithy-go" +) + +// Identity contains information that identifies who the user making the +// request is. +type Identity interface { + Expiration() time.Time +} + +// IdentityResolver defines the interface through which an Identity is +// retrieved. +type IdentityResolver interface { + GetIdentity(context.Context, smithy.Properties) (Identity, error) +} + +// IdentityResolverOptions defines the interface through which an entity can be +// queried to retrieve an IdentityResolver for a given auth scheme. +type IdentityResolverOptions interface { + GetIdentityResolver(schemeID string) IdentityResolver +} + +// AnonymousIdentity is a sentinel to indicate no identity. +type AnonymousIdentity struct{} + +var _ Identity = (*AnonymousIdentity)(nil) + +// Expiration returns the zero value for time, as anonymous identity never +// expires. +func (*AnonymousIdentity) Expiration() time.Time { + return time.Time{} +} + +// AnonymousIdentityResolver returns AnonymousIdentity. +type AnonymousIdentityResolver struct{} + +var _ IdentityResolver = (*AnonymousIdentityResolver)(nil) + +// GetIdentity returns AnonymousIdentity. +func (*AnonymousIdentityResolver) GetIdentity(_ context.Context, _ smithy.Properties) (Identity, error) { + return &AnonymousIdentity{}, nil +} diff --git a/vendor/github.com/aws/smithy-go/auth/option.go b/vendor/github.com/aws/smithy-go/auth/option.go new file mode 100644 index 000000000000..d5dabff04bf0 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/auth/option.go @@ -0,0 +1,25 @@ +package auth + +import "github.com/aws/smithy-go" + +type ( + authOptionsKey struct{} +) + +// Option represents a possible authentication method for an operation. +type Option struct { + SchemeID string + IdentityProperties smithy.Properties + SignerProperties smithy.Properties +} + +// GetAuthOptions gets auth Options from Properties. +func GetAuthOptions(p *smithy.Properties) ([]*Option, bool) { + v, ok := p.Get(authOptionsKey{}).([]*Option) + return v, ok +} + +// SetAuthOptions sets auth Options on Properties. +func SetAuthOptions(p *smithy.Properties, options []*Option) { + p.Set(authOptionsKey{}, options) +} diff --git a/vendor/github.com/aws/smithy-go/auth/scheme_id.go b/vendor/github.com/aws/smithy-go/auth/scheme_id.go new file mode 100644 index 000000000000..fb6a57c640fc --- /dev/null +++ b/vendor/github.com/aws/smithy-go/auth/scheme_id.go @@ -0,0 +1,20 @@ +package auth + +// Anonymous +const ( + SchemeIDAnonymous = "smithy.api#noAuth" +) + +// HTTP auth schemes +const ( + SchemeIDHTTPBasic = "smithy.api#httpBasicAuth" + SchemeIDHTTPDigest = "smithy.api#httpDigestAuth" + SchemeIDHTTPBearer = "smithy.api#httpBearerAuth" + SchemeIDHTTPAPIKey = "smithy.api#httpApiKeyAuth" +) + +// AWS auth schemes +const ( + SchemeIDSigV4 = "aws.auth#sigv4" + SchemeIDSigV4A = "aws.auth#sigv4a" +) diff --git a/vendor/github.com/aws/smithy-go/encoding/httpbinding/encode.go b/vendor/github.com/aws/smithy-go/encoding/httpbinding/encode.go index 96abd073ab1c..543e7cf03871 100644 --- a/vendor/github.com/aws/smithy-go/encoding/httpbinding/encode.go +++ b/vendor/github.com/aws/smithy-go/encoding/httpbinding/encode.go @@ -26,10 +26,17 @@ type Encoder struct { header http.Header } -// NewEncoder creates a new encoder from the passed in request. All query and +// NewEncoder creates a new encoder from the passed in request. It assumes that +// raw path contains no valuable information at this point, so it passes in path +// as path and raw path for subsequent trans +func NewEncoder(path, query string, headers http.Header) (*Encoder, error) { + return NewEncoderWithRawPath(path, path, query, headers) +} + +// NewHTTPBindingEncoder creates a new encoder from the passed in request. All query and // header values will be added on top of the request's existing values. Overwriting // duplicate values. -func NewEncoder(path, query string, headers http.Header) (*Encoder, error) { +func NewEncoderWithRawPath(path, rawPath, query string, headers http.Header) (*Encoder, error) { parseQuery, err := url.ParseQuery(query) if err != nil { return nil, fmt.Errorf("failed to parse query string: %w", err) @@ -37,7 +44,7 @@ func NewEncoder(path, query string, headers http.Header) (*Encoder, error) { e := &Encoder{ path: []byte(path), - rawPath: []byte(path), + rawPath: []byte(rawPath), query: parseQuery, header: headers.Clone(), } diff --git a/vendor/github.com/aws/smithy-go/encoding/xml/doc.go b/vendor/github.com/aws/smithy-go/encoding/xml/doc.go index d6e1e41e164d..f9200093e879 100644 --- a/vendor/github.com/aws/smithy-go/encoding/xml/doc.go +++ b/vendor/github.com/aws/smithy-go/encoding/xml/doc.go @@ -2,7 +2,7 @@ Package xml holds the XMl encoder utility. This utility is written in accordance to our design to delegate to shape serializer function in which a xml.Value will be passed around. -Resources followed: https://awslabs.github.io/smithy/1.0/spec/core/xml-traits.html# +Resources followed: https://smithy.io/2.0/spec/protocol-traits.html#xml-bindings Member Element diff --git a/vendor/github.com/aws/smithy-go/endpoints/endpoint.go b/vendor/github.com/aws/smithy-go/endpoints/endpoint.go new file mode 100644 index 000000000000..a9352839748e --- /dev/null +++ b/vendor/github.com/aws/smithy-go/endpoints/endpoint.go @@ -0,0 +1,23 @@ +package transport + +import ( + "net/http" + "net/url" + + "github.com/aws/smithy-go" +) + +// Endpoint is the endpoint object returned by Endpoint resolution V2 +type Endpoint struct { + // The complete URL minimally specfiying the scheme and host. + // May optionally specify the port and base path component. + URI url.URL + + // An optional set of headers to be sent using transport layer headers. + Headers http.Header + + // A grab-bag property map of endpoint attributes. The + // values present here are subject to change, or being add/removed at any + // time. + Properties smithy.Properties +} diff --git a/vendor/github.com/aws/smithy-go/go_module_metadata.go b/vendor/github.com/aws/smithy-go/go_module_metadata.go index 08db245f89ea..24162a6f5b44 100644 --- a/vendor/github.com/aws/smithy-go/go_module_metadata.go +++ b/vendor/github.com/aws/smithy-go/go_module_metadata.go @@ -3,4 +3,4 @@ package smithy // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.13.3" +const goModuleVersion = "1.21.0" diff --git a/vendor/github.com/aws/smithy-go/metrics/metrics.go b/vendor/github.com/aws/smithy-go/metrics/metrics.go new file mode 100644 index 000000000000..c009d9f278b6 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/metrics/metrics.go @@ -0,0 +1,136 @@ +// Package metrics defines the metrics APIs used by Smithy clients. +package metrics + +import ( + "context" + + "github.com/aws/smithy-go" +) + +// MeterProvider is the entry point for creating a Meter. +type MeterProvider interface { + Meter(scope string, opts ...MeterOption) Meter +} + +// MeterOption applies configuration to a Meter. +type MeterOption func(o *MeterOptions) + +// MeterOptions represents configuration for a Meter. +type MeterOptions struct { + Properties smithy.Properties +} + +// Meter is the entry point for creation of measurement instruments. +type Meter interface { + // integer/synchronous + Int64Counter(name string, opts ...InstrumentOption) (Int64Counter, error) + Int64UpDownCounter(name string, opts ...InstrumentOption) (Int64UpDownCounter, error) + Int64Gauge(name string, opts ...InstrumentOption) (Int64Gauge, error) + Int64Histogram(name string, opts ...InstrumentOption) (Int64Histogram, error) + + // integer/asynchronous + Int64AsyncCounter(name string, callback Int64Callback, opts ...InstrumentOption) (AsyncInstrument, error) + Int64AsyncUpDownCounter(name string, callback Int64Callback, opts ...InstrumentOption) (AsyncInstrument, error) + Int64AsyncGauge(name string, callback Int64Callback, opts ...InstrumentOption) (AsyncInstrument, error) + + // floating-point/synchronous + Float64Counter(name string, opts ...InstrumentOption) (Float64Counter, error) + Float64UpDownCounter(name string, opts ...InstrumentOption) (Float64UpDownCounter, error) + Float64Gauge(name string, opts ...InstrumentOption) (Float64Gauge, error) + Float64Histogram(name string, opts ...InstrumentOption) (Float64Histogram, error) + + // floating-point/asynchronous + Float64AsyncCounter(name string, callback Float64Callback, opts ...InstrumentOption) (AsyncInstrument, error) + Float64AsyncUpDownCounter(name string, callback Float64Callback, opts ...InstrumentOption) (AsyncInstrument, error) + Float64AsyncGauge(name string, callback Float64Callback, opts ...InstrumentOption) (AsyncInstrument, error) +} + +// InstrumentOption applies configuration to an instrument. +type InstrumentOption func(o *InstrumentOptions) + +// InstrumentOptions represents configuration for an instrument. +type InstrumentOptions struct { + UnitLabel string + Description string +} + +// Int64Counter measures a monotonically increasing int64 value. +type Int64Counter interface { + Add(context.Context, int64, ...RecordMetricOption) +} + +// Int64UpDownCounter measures a fluctuating int64 value. +type Int64UpDownCounter interface { + Add(context.Context, int64, ...RecordMetricOption) +} + +// Int64Gauge samples a discrete int64 value. +type Int64Gauge interface { + Sample(context.Context, int64, ...RecordMetricOption) +} + +// Int64Histogram records multiple data points for an int64 value. +type Int64Histogram interface { + Record(context.Context, int64, ...RecordMetricOption) +} + +// Float64Counter measures a monotonically increasing float64 value. +type Float64Counter interface { + Add(context.Context, float64, ...RecordMetricOption) +} + +// Float64UpDownCounter measures a fluctuating float64 value. +type Float64UpDownCounter interface { + Add(context.Context, float64, ...RecordMetricOption) +} + +// Float64Gauge samples a discrete float64 value. +type Float64Gauge interface { + Sample(context.Context, float64, ...RecordMetricOption) +} + +// Float64Histogram records multiple data points for an float64 value. +type Float64Histogram interface { + Record(context.Context, float64, ...RecordMetricOption) +} + +// AsyncInstrument is the universal handle returned for creation of all async +// instruments. +// +// Callers use the Stop() API to unregister the callback passed at instrument +// creation. +type AsyncInstrument interface { + Stop() +} + +// Int64Callback describes a function invoked when an async int64 instrument is +// read. +type Int64Callback func(context.Context, Int64Observer) + +// Int64Observer is the interface passed to async int64 instruments. +// +// Callers use the Observe() API of this interface to report metrics to the +// underlying collector. +type Int64Observer interface { + Observe(context.Context, int64, ...RecordMetricOption) +} + +// Float64Callback describes a function invoked when an async float64 +// instrument is read. +type Float64Callback func(context.Context, Float64Observer) + +// Float64Observer is the interface passed to async int64 instruments. +// +// Callers use the Observe() API of this interface to report metrics to the +// underlying collector. +type Float64Observer interface { + Observe(context.Context, float64, ...RecordMetricOption) +} + +// RecordMetricOption applies configuration to a recorded metric. +type RecordMetricOption func(o *RecordMetricOptions) + +// RecordMetricOptions represents configuration for a recorded metric. +type RecordMetricOptions struct { + Properties smithy.Properties +} diff --git a/vendor/github.com/aws/smithy-go/metrics/nop.go b/vendor/github.com/aws/smithy-go/metrics/nop.go new file mode 100644 index 000000000000..fb374e1fb850 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/metrics/nop.go @@ -0,0 +1,67 @@ +package metrics + +import "context" + +// NopMeterProvider is a no-op metrics implementation. +type NopMeterProvider struct{} + +var _ MeterProvider = (*NopMeterProvider)(nil) + +// Meter returns a meter which creates no-op instruments. +func (NopMeterProvider) Meter(string, ...MeterOption) Meter { + return nopMeter{} +} + +type nopMeter struct{} + +var _ Meter = (*nopMeter)(nil) + +func (nopMeter) Int64Counter(string, ...InstrumentOption) (Int64Counter, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64UpDownCounter(string, ...InstrumentOption) (Int64UpDownCounter, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64Gauge(string, ...InstrumentOption) (Int64Gauge, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64Histogram(string, ...InstrumentOption) (Int64Histogram, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64AsyncCounter(string, Int64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64AsyncUpDownCounter(string, Int64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64AsyncGauge(string, Int64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Float64Counter(string, ...InstrumentOption) (Float64Counter, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64UpDownCounter(string, ...InstrumentOption) (Float64UpDownCounter, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64Gauge(string, ...InstrumentOption) (Float64Gauge, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64Histogram(string, ...InstrumentOption) (Float64Histogram, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64AsyncCounter(string, Float64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64AsyncUpDownCounter(string, Float64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64AsyncGauge(string, Float64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[float64]{}, nil +} + +type nopInstrument[N any] struct{} + +func (nopInstrument[N]) Add(context.Context, N, ...RecordMetricOption) {} +func (nopInstrument[N]) Sample(context.Context, N, ...RecordMetricOption) {} +func (nopInstrument[N]) Record(context.Context, N, ...RecordMetricOption) {} +func (nopInstrument[_]) Stop() {} diff --git a/vendor/github.com/aws/smithy-go/middleware/context.go b/vendor/github.com/aws/smithy-go/middleware/context.go new file mode 100644 index 000000000000..f51aa4f04fc4 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/middleware/context.go @@ -0,0 +1,41 @@ +package middleware + +import "context" + +type ( + serviceIDKey struct{} + operationNameKey struct{} +) + +// WithServiceID adds a service ID to the context, scoped to middleware stack +// values. +// +// This API is called in the client runtime when bootstrapping an operation and +// should not typically be used directly. +func WithServiceID(parent context.Context, id string) context.Context { + return WithStackValue(parent, serviceIDKey{}, id) +} + +// GetServiceID retrieves the service ID from the context. This is typically +// the service shape's name from its Smithy model. Service clients for specific +// systems (e.g. AWS SDK) may use an alternate designated value. +func GetServiceID(ctx context.Context) string { + id, _ := GetStackValue(ctx, serviceIDKey{}).(string) + return id +} + +// WithOperationName adds the operation name to the context, scoped to +// middleware stack values. +// +// This API is called in the client runtime when bootstrapping an operation and +// should not typically be used directly. +func WithOperationName(parent context.Context, id string) context.Context { + return WithStackValue(parent, operationNameKey{}, id) +} + +// GetOperationName retrieves the operation name from the context. This is +// typically the operation shape's name from its Smithy model. +func GetOperationName(ctx context.Context) string { + name, _ := GetStackValue(ctx, operationNameKey{}).(string) + return name +} diff --git a/vendor/github.com/aws/smithy-go/modman.toml b/vendor/github.com/aws/smithy-go/modman.toml index 20295cdd2aa4..9d94b7cbd0a2 100644 --- a/vendor/github.com/aws/smithy-go/modman.toml +++ b/vendor/github.com/aws/smithy-go/modman.toml @@ -1,5 +1,4 @@ [dependencies] - "github.com/google/go-cmp" = "v0.5.8" "github.com/jmespath/go-jmespath" = "v0.4.0" [modules] diff --git a/vendor/github.com/aws/smithy-go/private/requestcompression/gzip.go b/vendor/github.com/aws/smithy-go/private/requestcompression/gzip.go new file mode 100644 index 000000000000..004d78f21360 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/private/requestcompression/gzip.go @@ -0,0 +1,30 @@ +package requestcompression + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" +) + +func gzipCompress(input io.Reader) ([]byte, error) { + var b bytes.Buffer + w, err := gzip.NewWriterLevel(&b, gzip.DefaultCompression) + if err != nil { + return nil, fmt.Errorf("failed to create gzip writer, %v", err) + } + + inBytes, err := io.ReadAll(input) + if err != nil { + return nil, fmt.Errorf("failed read payload to compress, %v", err) + } + + if _, err = w.Write(inBytes); err != nil { + return nil, fmt.Errorf("failed to write payload to be compressed, %v", err) + } + if err = w.Close(); err != nil { + return nil, fmt.Errorf("failed to flush payload being compressed, %v", err) + } + + return b.Bytes(), nil +} diff --git a/vendor/github.com/aws/smithy-go/private/requestcompression/middleware_capture_request_compression.go b/vendor/github.com/aws/smithy-go/private/requestcompression/middleware_capture_request_compression.go new file mode 100644 index 000000000000..06c16afc1130 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/private/requestcompression/middleware_capture_request_compression.go @@ -0,0 +1,52 @@ +package requestcompression + +import ( + "bytes" + "context" + "fmt" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" + "io" + "net/http" +) + +const captureUncompressedRequestID = "CaptureUncompressedRequest" + +// AddCaptureUncompressedRequestMiddleware captures http request before compress encoding for check +func AddCaptureUncompressedRequestMiddleware(stack *middleware.Stack, buf *bytes.Buffer) error { + return stack.Serialize.Insert(&captureUncompressedRequestMiddleware{ + buf: buf, + }, "RequestCompression", middleware.Before) +} + +type captureUncompressedRequestMiddleware struct { + req *http.Request + buf *bytes.Buffer + bytes []byte +} + +// ID returns id of the captureUncompressedRequestMiddleware +func (*captureUncompressedRequestMiddleware) ID() string { + return captureUncompressedRequestID +} + +// HandleSerialize captures request payload before it is compressed by request compression middleware +func (m *captureUncompressedRequestMiddleware) HandleSerialize(ctx context.Context, input middleware.SerializeInput, next middleware.SerializeHandler, +) ( + output middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := input.Request.(*smithyhttp.Request) + if !ok { + return output, metadata, fmt.Errorf("error when retrieving http request") + } + + _, err = io.Copy(m.buf, request.GetStream()) + if err != nil { + return output, metadata, fmt.Errorf("error when copying http request stream: %q", err) + } + if err = request.RewindStream(); err != nil { + return output, metadata, fmt.Errorf("error when rewinding request stream: %q", err) + } + + return next.HandleSerialize(ctx, input) +} diff --git a/vendor/github.com/aws/smithy-go/private/requestcompression/request_compression.go b/vendor/github.com/aws/smithy-go/private/requestcompression/request_compression.go new file mode 100644 index 000000000000..7c41476039dd --- /dev/null +++ b/vendor/github.com/aws/smithy-go/private/requestcompression/request_compression.go @@ -0,0 +1,103 @@ +// Package requestcompression implements runtime support for smithy-modeled +// request compression. +// +// This package is designated as private and is intended for use only by the +// smithy client runtime. The exported API therein is not considered stable and +// is subject to breaking changes without notice. +package requestcompression + +import ( + "bytes" + "context" + "fmt" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/transport/http" + "io" +) + +const MaxRequestMinCompressSizeBytes = 10485760 + +// Enumeration values for supported compress Algorithms. +const ( + GZIP = "gzip" +) + +type compressFunc func(io.Reader) ([]byte, error) + +var allowedAlgorithms = map[string]compressFunc{ + GZIP: gzipCompress, +} + +// AddRequestCompression add requestCompression middleware to op stack +func AddRequestCompression(stack *middleware.Stack, disabled bool, minBytes int64, algorithms []string) error { + return stack.Serialize.Add(&requestCompression{ + disableRequestCompression: disabled, + requestMinCompressSizeBytes: minBytes, + compressAlgorithms: algorithms, + }, middleware.After) +} + +type requestCompression struct { + disableRequestCompression bool + requestMinCompressSizeBytes int64 + compressAlgorithms []string +} + +// ID returns the ID of the middleware +func (m requestCompression) ID() string { + return "RequestCompression" +} + +// HandleSerialize gzip compress the request's stream/body if enabled by config fields +func (m requestCompression) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + if m.disableRequestCompression { + return next.HandleSerialize(ctx, in) + } + // still need to check requestMinCompressSizeBytes in case it is out of range after service client config + if m.requestMinCompressSizeBytes < 0 || m.requestMinCompressSizeBytes > MaxRequestMinCompressSizeBytes { + return out, metadata, fmt.Errorf("invalid range for min request compression size bytes %d, must be within 0 and 10485760 inclusively", m.requestMinCompressSizeBytes) + } + + req, ok := in.Request.(*http.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown request type %T", req) + } + + for _, algorithm := range m.compressAlgorithms { + compressFunc := allowedAlgorithms[algorithm] + if compressFunc != nil { + if stream := req.GetStream(); stream != nil { + size, found, err := req.StreamLength() + if err != nil { + return out, metadata, fmt.Errorf("error while finding request stream length, %v", err) + } else if !found || size < m.requestMinCompressSizeBytes { + return next.HandleSerialize(ctx, in) + } + + compressedBytes, err := compressFunc(stream) + if err != nil { + return out, metadata, fmt.Errorf("failed to compress request stream, %v", err) + } + + var newReq *http.Request + if newReq, err = req.SetStream(bytes.NewReader(compressedBytes)); err != nil { + return out, metadata, fmt.Errorf("failed to set request stream, %v", err) + } + *req = *newReq + + if val := req.Header.Get("Content-Encoding"); val != "" { + req.Header.Set("Content-Encoding", fmt.Sprintf("%s, %s", val, algorithm)) + } else { + req.Header.Set("Content-Encoding", algorithm) + } + } + break + } + } + + return next.HandleSerialize(ctx, in) +} diff --git a/vendor/github.com/aws/smithy-go/properties.go b/vendor/github.com/aws/smithy-go/properties.go new file mode 100644 index 000000000000..68df4c4e0e2b --- /dev/null +++ b/vendor/github.com/aws/smithy-go/properties.go @@ -0,0 +1,69 @@ +package smithy + +import "maps" + +// PropertiesReader provides an interface for reading metadata from the +// underlying metadata container. +type PropertiesReader interface { + Get(key any) any +} + +// Properties provides storing and reading metadata values. Keys may be any +// comparable value type. Get and Set will panic if a key is not comparable. +// +// The zero value for a Properties instance is ready for reads/writes without +// any additional initialization. +type Properties struct { + values map[any]any +} + +// Get attempts to retrieve the value the key points to. Returns nil if the +// key was not found. +// +// Panics if key type is not comparable. +func (m *Properties) Get(key any) any { + m.lazyInit() + return m.values[key] +} + +// Set stores the value pointed to by the key. If a value already exists at +// that key it will be replaced with the new value. +// +// Panics if the key type is not comparable. +func (m *Properties) Set(key, value any) { + m.lazyInit() + m.values[key] = value +} + +// Has returns whether the key exists in the metadata. +// +// Panics if the key type is not comparable. +func (m *Properties) Has(key any) bool { + m.lazyInit() + _, ok := m.values[key] + return ok +} + +// SetAll accepts all of the given Properties into the receiver, overwriting +// any existing keys in the case of conflicts. +func (m *Properties) SetAll(other *Properties) { + if other.values == nil { + return + } + + m.lazyInit() + for k, v := range other.values { + m.values[k] = v + } +} + +// Values returns a shallow clone of the property set's values. +func (m *Properties) Values() map[any]any { + return maps.Clone(m.values) +} + +func (m *Properties) lazyInit() { + if m.values == nil { + m.values = map[any]any{} + } +} diff --git a/vendor/github.com/aws/smithy-go/tracing/context.go b/vendor/github.com/aws/smithy-go/tracing/context.go new file mode 100644 index 000000000000..a404ed9d37de --- /dev/null +++ b/vendor/github.com/aws/smithy-go/tracing/context.go @@ -0,0 +1,96 @@ +package tracing + +import "context" + +type ( + operationTracerKey struct{} + spanLineageKey struct{} +) + +// GetSpan returns the active trace Span on the context. +// +// The boolean in the return indicates whether a Span was actually in the +// context, but a no-op implementation will be returned if not, so callers +// can generally disregard the boolean unless they wish to explicitly confirm +// presence/absence of a Span. +func GetSpan(ctx context.Context) (Span, bool) { + lineage := getLineage(ctx) + if len(lineage) == 0 { + return nopSpan{}, false + } + + return lineage[len(lineage)-1], true +} + +// WithSpan sets the active trace Span on the context. +func WithSpan(parent context.Context, span Span) context.Context { + lineage := getLineage(parent) + if len(lineage) == 0 { + return context.WithValue(parent, spanLineageKey{}, []Span{span}) + } + + lineage = append(lineage, span) + return context.WithValue(parent, spanLineageKey{}, lineage) +} + +// PopSpan pops the current Span off the context, setting the active Span on +// the returned Context back to its parent and returning the REMOVED one. +// +// PopSpan on a context with no active Span will return a no-op instance. +// +// This is mostly necessary for the runtime to manage base trace spans due to +// the wrapped-function nature of the middleware stack. End-users of Smithy +// clients SHOULD NOT generally be using this API. +func PopSpan(parent context.Context) (context.Context, Span) { + lineage := getLineage(parent) + if len(lineage) == 0 { + return parent, nopSpan{} + } + + span := lineage[len(lineage)-1] + lineage = lineage[:len(lineage)-1] + return context.WithValue(parent, spanLineageKey{}, lineage), span +} + +func getLineage(ctx context.Context) []Span { + v := ctx.Value(spanLineageKey{}) + if v == nil { + return nil + } + + return v.([]Span) +} + +// GetOperationTracer returns the embedded operation-scoped Tracer on a +// Context. +// +// The boolean in the return indicates whether a Tracer was actually in the +// context, but a no-op implementation will be returned if not, so callers +// can generally disregard the boolean unless they wish to explicitly confirm +// presence/absence of a Tracer. +func GetOperationTracer(ctx context.Context) (Tracer, bool) { + v := ctx.Value(operationTracerKey{}) + if v == nil { + return nopTracer{}, false + } + + return v.(Tracer), true +} + +// WithOperationTracer returns a child Context embedding the given Tracer. +// +// The runtime will use this embed a scoped tracer for client operations, +// Smithy/SDK client callers DO NOT need to do this explicitly. +func WithOperationTracer(parent context.Context, tracer Tracer) context.Context { + return context.WithValue(parent, operationTracerKey{}, tracer) +} + +// StartSpan is a convenience API for creating tracing Spans from a Context. +// +// StartSpan uses the operation-scoped Tracer, previously stored using +// [WithOperationTracer], to start the Span. If a Tracer has not been embedded +// the returned Span will be a no-op implementation. +func StartSpan(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) { + tracer, _ := GetOperationTracer(ctx) + return tracer.StartSpan(ctx, name, opts...) +} diff --git a/vendor/github.com/aws/smithy-go/tracing/nop.go b/vendor/github.com/aws/smithy-go/tracing/nop.go new file mode 100644 index 000000000000..573d28b1c1bd --- /dev/null +++ b/vendor/github.com/aws/smithy-go/tracing/nop.go @@ -0,0 +1,32 @@ +package tracing + +import "context" + +// NopTracerProvider is a no-op tracing implementation. +type NopTracerProvider struct{} + +var _ TracerProvider = (*NopTracerProvider)(nil) + +// Tracer returns a tracer which creates no-op spans. +func (NopTracerProvider) Tracer(string, ...TracerOption) Tracer { + return nopTracer{} +} + +type nopTracer struct{} + +var _ Tracer = (*nopTracer)(nil) + +func (nopTracer) StartSpan(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) { + return ctx, nopSpan{} +} + +type nopSpan struct{} + +var _ Span = (*nopSpan)(nil) + +func (nopSpan) Name() string { return "" } +func (nopSpan) Context() SpanContext { return SpanContext{} } +func (nopSpan) AddEvent(string, ...EventOption) {} +func (nopSpan) SetProperty(any, any) {} +func (nopSpan) SetStatus(SpanStatus) {} +func (nopSpan) End() {} diff --git a/vendor/github.com/aws/smithy-go/tracing/tracing.go b/vendor/github.com/aws/smithy-go/tracing/tracing.go new file mode 100644 index 000000000000..089ed3932e2d --- /dev/null +++ b/vendor/github.com/aws/smithy-go/tracing/tracing.go @@ -0,0 +1,95 @@ +// Package tracing defines tracing APIs to be used by Smithy clients. +package tracing + +import ( + "context" + + "github.com/aws/smithy-go" +) + +// SpanStatus records the "success" state of an observed span. +type SpanStatus int + +// Enumeration of SpanStatus. +const ( + SpanStatusUnset SpanStatus = iota + SpanStatusOK + SpanStatusError +) + +// SpanKind indicates the nature of the work being performed. +type SpanKind int + +// Enumeration of SpanKind. +const ( + SpanKindInternal SpanKind = iota + SpanKindClient + SpanKindServer + SpanKindProducer + SpanKindConsumer +) + +// TracerProvider is the entry point for creating client traces. +type TracerProvider interface { + Tracer(scope string, opts ...TracerOption) Tracer +} + +// TracerOption applies configuration to a tracer. +type TracerOption func(o *TracerOptions) + +// TracerOptions represent configuration for tracers. +type TracerOptions struct { + Properties smithy.Properties +} + +// Tracer is the entry point for creating observed client Spans. +// +// Spans created by tracers propagate by existing on the Context. Consumers of +// the API can use [GetSpan] to pull the active Span from a Context. +// +// Creation of child Spans is implicit through Context persistence. If +// CreateSpan is called with a Context that holds a Span, the result will be a +// child of that Span. +type Tracer interface { + StartSpan(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) +} + +// SpanOption applies configuration to a span. +type SpanOption func(o *SpanOptions) + +// SpanOptions represent configuration for span events. +type SpanOptions struct { + Kind SpanKind + Properties smithy.Properties +} + +// Span records a conceptually individual unit of work that takes place in a +// Smithy client operation. +type Span interface { + Name() string + Context() SpanContext + AddEvent(name string, opts ...EventOption) + SetStatus(status SpanStatus) + SetProperty(k, v any) + End() +} + +// EventOption applies configuration to a span event. +type EventOption func(o *EventOptions) + +// EventOptions represent configuration for span events. +type EventOptions struct { + Properties smithy.Properties +} + +// SpanContext uniquely identifies a Span. +type SpanContext struct { + TraceID string + SpanID string + IsRemote bool +} + +// IsValid is true when a span has nonzero trace and span IDs. +func (ctx *SpanContext) IsValid() bool { + return len(ctx.TraceID) != 0 && len(ctx.SpanID) != 0 +} diff --git a/vendor/github.com/aws/smithy-go/transport/http/auth.go b/vendor/github.com/aws/smithy-go/transport/http/auth.go new file mode 100644 index 000000000000..58e1ab5ef876 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/transport/http/auth.go @@ -0,0 +1,21 @@ +package http + +import ( + "context" + + smithy "github.com/aws/smithy-go" + "github.com/aws/smithy-go/auth" +) + +// AuthScheme defines an HTTP authentication scheme. +type AuthScheme interface { + SchemeID() string + IdentityResolver(auth.IdentityResolverOptions) auth.IdentityResolver + Signer() Signer +} + +// Signer defines the interface through which HTTP requests are supplemented +// with an Identity. +type Signer interface { + SignRequest(context.Context, *Request, auth.Identity, smithy.Properties) error +} diff --git a/vendor/github.com/aws/smithy-go/transport/http/auth_schemes.go b/vendor/github.com/aws/smithy-go/transport/http/auth_schemes.go new file mode 100644 index 000000000000..d60cf2a60fd6 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/transport/http/auth_schemes.go @@ -0,0 +1,45 @@ +package http + +import ( + "context" + + smithy "github.com/aws/smithy-go" + "github.com/aws/smithy-go/auth" +) + +// NewAnonymousScheme returns the anonymous HTTP auth scheme. +func NewAnonymousScheme() AuthScheme { + return &authScheme{ + schemeID: auth.SchemeIDAnonymous, + signer: &nopSigner{}, + } +} + +// authScheme is parameterized to generically implement the exported AuthScheme +// interface +type authScheme struct { + schemeID string + signer Signer +} + +var _ AuthScheme = (*authScheme)(nil) + +func (s *authScheme) SchemeID() string { + return s.schemeID +} + +func (s *authScheme) IdentityResolver(o auth.IdentityResolverOptions) auth.IdentityResolver { + return o.GetIdentityResolver(s.schemeID) +} + +func (s *authScheme) Signer() Signer { + return s.signer +} + +type nopSigner struct{} + +var _ Signer = (*nopSigner)(nil) + +func (*nopSigner) SignRequest(context.Context, *Request, auth.Identity, smithy.Properties) error { + return nil +} diff --git a/vendor/github.com/aws/smithy-go/transport/http/client.go b/vendor/github.com/aws/smithy-go/transport/http/client.go index e691c69bf444..c43c346b6fb4 100644 --- a/vendor/github.com/aws/smithy-go/transport/http/client.go +++ b/vendor/github.com/aws/smithy-go/transport/http/client.go @@ -7,6 +7,7 @@ import ( smithy "github.com/aws/smithy-go" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" ) // ClientDo provides the interface for custom HTTP client implementations. @@ -42,6 +43,9 @@ func NewClientHandler(client ClientDo) ClientHandler { func (c ClientHandler) Handle(ctx context.Context, input interface{}) ( out interface{}, metadata middleware.Metadata, err error, ) { + ctx, span := tracing.StartSpan(ctx, "DoHTTPRequest") + defer span.End() + req, ok := input.(*Request) if !ok { return nil, metadata, fmt.Errorf("expect Smithy http.Request value as input, got unsupported type %T", input) @@ -52,6 +56,16 @@ func (c ClientHandler) Handle(ctx context.Context, input interface{}) ( return nil, metadata, err } + span.SetProperty("http.method", req.Method) + span.SetProperty("http.request_content_length", -1) // at least indicate unknown + length, ok, err := req.StreamLength() + if err != nil { + return nil, metadata, err + } + if ok { + span.SetProperty("http.request_content_length", length) + } + resp, err := c.client.Do(builtRequest) if resp == nil { // Ensure a http response value is always present to prevent unexpected @@ -79,6 +93,10 @@ func (c ClientHandler) Handle(ctx context.Context, input interface{}) ( _ = builtRequest.Body.Close() } + span.SetProperty("net.protocol.version", fmt.Sprintf("%d.%d", resp.ProtoMajor, resp.ProtoMinor)) + span.SetProperty("http.status_code", resp.StatusCode) + span.SetProperty("http.response_content_length", resp.ContentLength) + return &Response{Response: resp}, metadata, err } diff --git a/vendor/github.com/aws/smithy-go/transport/http/middleware_header_comment.go b/vendor/github.com/aws/smithy-go/transport/http/middleware_header_comment.go new file mode 100644 index 000000000000..855c22720315 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/transport/http/middleware_header_comment.go @@ -0,0 +1,81 @@ +package http + +import ( + "context" + "fmt" + "net/http" + + "github.com/aws/smithy-go/middleware" +) + +// WithHeaderComment instruments a middleware stack to append an HTTP field +// comment to the given header as specified in RFC 9110 +// (https://www.rfc-editor.org/rfc/rfc9110#name-comments). +// +// The header is case-insensitive. If the provided header exists when the +// middleware runs, the content will be inserted as-is enclosed in parentheses. +// +// Note that per the HTTP specification, comments are only allowed in fields +// containing "comment" as part of their field value definition, but this API +// will NOT verify whether the provided header is one of them. +// +// WithHeaderComment MAY be applied more than once to a middleware stack and/or +// more than once per header. +func WithHeaderComment(header, content string) func(*middleware.Stack) error { + return func(s *middleware.Stack) error { + m, err := getOrAddHeaderComment(s) + if err != nil { + return fmt.Errorf("get or add header comment: %v", err) + } + + m.values.Add(header, content) + return nil + } +} + +type headerCommentMiddleware struct { + values http.Header // hijack case-insensitive access APIs +} + +func (*headerCommentMiddleware) ID() string { + return "headerComment" +} + +func (m *headerCommentMiddleware) HandleBuild(ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler) ( + out middleware.BuildOutput, metadata middleware.Metadata, err error, +) { + r, ok := in.Request.(*Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + for h, contents := range m.values { + for _, c := range contents { + if existing := r.Header.Get(h); existing != "" { + r.Header.Set(h, fmt.Sprintf("%s (%s)", existing, c)) + } + } + } + + return next.HandleBuild(ctx, in) +} + +func getOrAddHeaderComment(s *middleware.Stack) (*headerCommentMiddleware, error) { + id := (*headerCommentMiddleware)(nil).ID() + m, ok := s.Build.Get(id) + if !ok { + m := &headerCommentMiddleware{values: http.Header{}} + if err := s.Build.Add(m, middleware.After); err != nil { + return nil, fmt.Errorf("add build: %v", err) + } + + return m, nil + } + + hc, ok := m.(*headerCommentMiddleware) + if !ok { + return nil, fmt.Errorf("existing middleware w/ id %s is not *headerCommentMiddleware", id) + } + + return hc, nil +} diff --git a/vendor/github.com/aws/smithy-go/transport/http/properties.go b/vendor/github.com/aws/smithy-go/transport/http/properties.go new file mode 100644 index 000000000000..c65aa3932015 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/transport/http/properties.go @@ -0,0 +1,80 @@ +package http + +import smithy "github.com/aws/smithy-go" + +type ( + sigV4SigningNameKey struct{} + sigV4SigningRegionKey struct{} + + sigV4ASigningNameKey struct{} + sigV4ASigningRegionsKey struct{} + + isUnsignedPayloadKey struct{} + disableDoubleEncodingKey struct{} +) + +// GetSigV4SigningName gets the signing name from Properties. +func GetSigV4SigningName(p *smithy.Properties) (string, bool) { + v, ok := p.Get(sigV4SigningNameKey{}).(string) + return v, ok +} + +// SetSigV4SigningName sets the signing name on Properties. +func SetSigV4SigningName(p *smithy.Properties, name string) { + p.Set(sigV4SigningNameKey{}, name) +} + +// GetSigV4SigningRegion gets the signing region from Properties. +func GetSigV4SigningRegion(p *smithy.Properties) (string, bool) { + v, ok := p.Get(sigV4SigningRegionKey{}).(string) + return v, ok +} + +// SetSigV4SigningRegion sets the signing region on Properties. +func SetSigV4SigningRegion(p *smithy.Properties, region string) { + p.Set(sigV4SigningRegionKey{}, region) +} + +// GetSigV4ASigningName gets the v4a signing name from Properties. +func GetSigV4ASigningName(p *smithy.Properties) (string, bool) { + v, ok := p.Get(sigV4ASigningNameKey{}).(string) + return v, ok +} + +// SetSigV4ASigningName sets the signing name on Properties. +func SetSigV4ASigningName(p *smithy.Properties, name string) { + p.Set(sigV4ASigningNameKey{}, name) +} + +// GetSigV4ASigningRegion gets the v4a signing region set from Properties. +func GetSigV4ASigningRegions(p *smithy.Properties) ([]string, bool) { + v, ok := p.Get(sigV4ASigningRegionsKey{}).([]string) + return v, ok +} + +// SetSigV4ASigningRegions sets the v4a signing region set on Properties. +func SetSigV4ASigningRegions(p *smithy.Properties, regions []string) { + p.Set(sigV4ASigningRegionsKey{}, regions) +} + +// GetIsUnsignedPayload gets whether the payload is unsigned from Properties. +func GetIsUnsignedPayload(p *smithy.Properties) (bool, bool) { + v, ok := p.Get(isUnsignedPayloadKey{}).(bool) + return v, ok +} + +// SetIsUnsignedPayload sets whether the payload is unsigned on Properties. +func SetIsUnsignedPayload(p *smithy.Properties, isUnsignedPayload bool) { + p.Set(isUnsignedPayloadKey{}, isUnsignedPayload) +} + +// GetDisableDoubleEncoding gets whether the payload is unsigned from Properties. +func GetDisableDoubleEncoding(p *smithy.Properties) (bool, bool) { + v, ok := p.Get(disableDoubleEncodingKey{}).(bool) + return v, ok +} + +// SetDisableDoubleEncoding sets whether the payload is unsigned on Properties. +func SetDisableDoubleEncoding(p *smithy.Properties, disableDoubleEncoding bool) { + p.Set(disableDoubleEncodingKey{}, disableDoubleEncoding) +} diff --git a/vendor/github.com/c2h5oh/datasize/README.md b/vendor/github.com/c2h5oh/datasize/README.md index f6e828587f00..a2d38706de14 100644 --- a/vendor/github.com/c2h5oh/datasize/README.md +++ b/vendor/github.com/c2h5oh/datasize/README.md @@ -23,10 +23,10 @@ Just like `time` package provides `duration.Nanoseconds() uint64 `, `duration.Ho * `ByteSize.Megabytes() float64` * `ByteSize.Gigabytes() float64` * `ByteSize.Terabytes() float64` -* `ByteSize.Petebytes() float64` +* `ByteSize.Petabytes() float64` * `ByteSize.Exabytes() float64` -Warning: see limitations at the end of this document about a possible precission loss +Warning: see limitations at the end of this document about a possible precision loss ### Parsing strings diff --git a/vendor/github.com/cert-manager/cert-manager/LICENSE b/vendor/github.com/cert-manager/cert-manager/LICENSE index d64569567334..261eeb9e9f8b 100644 --- a/vendor/github.com/cert-manager/cert-manager/LICENSE +++ b/vendor/github.com/cert-manager/cert-manager/LICENSE @@ -1,4 +1,3 @@ - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ diff --git a/vendor/github.com/cert-manager/cert-manager/LICENSES b/vendor/github.com/cert-manager/cert-manager/LICENSES index 22764fe9def5..5cf5755c0d54 100644 --- a/vendor/github.com/cert-manager/cert-manager/LICENSES +++ b/vendor/github.com/cert-manager/cert-manager/LICENSES @@ -1,89 +1,110 @@ -cloud.google.com/go/compute/metadata,https://github.com/googleapis/google-cloud-go/blob/compute/metadata/v0.2.3/compute/metadata/LICENSE,Apache-2.0 -github.com/Azure/azure-sdk-for-go,https://github.com/Azure/azure-sdk-for-go/blob/v68.0.0/LICENSE.txt,MIT -github.com/Azure/go-autorest/autorest,https://github.com/Azure/go-autorest/blob/autorest/v0.11.29/autorest/LICENSE,Apache-2.0 -github.com/Azure/go-autorest/autorest/adal,https://github.com/Azure/go-autorest/blob/autorest/adal/v0.9.23/autorest/adal/LICENSE,Apache-2.0 -github.com/Azure/go-autorest/autorest/date,https://github.com/Azure/go-autorest/blob/autorest/date/v0.3.0/autorest/date/LICENSE,Apache-2.0 -github.com/Azure/go-autorest/autorest/to,https://github.com/Azure/go-autorest/blob/autorest/to/v0.4.0/autorest/to/LICENSE,Apache-2.0 -github.com/Azure/go-autorest/autorest/validation,https://github.com/Azure/go-autorest/blob/autorest/validation/v0.3.1/autorest/validation/LICENSE,Apache-2.0 -github.com/Azure/go-autorest/logger,https://github.com/Azure/go-autorest/blob/logger/v0.2.1/logger/LICENSE,Apache-2.0 -github.com/Azure/go-autorest/tracing,https://github.com/Azure/go-autorest/blob/tracing/v0.6.0/tracing/LICENSE,Apache-2.0 +cel.dev/expr,https://github.com/google/cel-spec/blob/v0.19.1/LICENSE,Apache-2.0 +cloud.google.com/go/auth,https://github.com/googleapis/google-cloud-go/blob/auth/v0.9.4/auth/LICENSE,Apache-2.0 +cloud.google.com/go/auth/oauth2adapt,https://github.com/googleapis/google-cloud-go/blob/auth/oauth2adapt/v0.2.4/auth/oauth2adapt/LICENSE,Apache-2.0 +cloud.google.com/go/compute/metadata,https://github.com/googleapis/google-cloud-go/blob/compute/metadata/v0.5.2/compute/metadata/LICENSE,Apache-2.0 +github.com/Azure/azure-sdk-for-go/sdk/azcore,https://github.com/Azure/azure-sdk-for-go/blob/sdk/azcore/v1.14.0/sdk/azcore/LICENSE.txt,MIT +github.com/Azure/azure-sdk-for-go/sdk/azidentity,https://github.com/Azure/azure-sdk-for-go/blob/sdk/azidentity/v1.7.0/sdk/azidentity/LICENSE.txt,MIT +github.com/Azure/azure-sdk-for-go/sdk/internal,https://github.com/Azure/azure-sdk-for-go/blob/sdk/internal/v1.10.0/sdk/internal/LICENSE.txt,MIT +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns,https://github.com/Azure/azure-sdk-for-go/blob/sdk/resourcemanager/dns/armdns/v1.2.0/sdk/resourcemanager/dns/armdns/LICENSE.txt,MIT github.com/Azure/go-ntlmssp,https://github.com/Azure/go-ntlmssp/blob/754e69321358/LICENSE,MIT +github.com/AzureAD/microsoft-authentication-library-for-go/apps,https://github.com/AzureAD/microsoft-authentication-library-for-go/blob/v1.2.2/LICENSE,MIT +github.com/Khan/genqlient/graphql,https://github.com/Khan/genqlient/blob/v0.7.0/LICENSE,MIT github.com/NYTimes/gziphandler,https://github.com/NYTimes/gziphandler/blob/v1.1.1/LICENSE,Apache-2.0 -github.com/Venafi/vcert/v4,https://github.com/Venafi/vcert/blob/69f417ae176d/LICENSE,Apache-2.0 +github.com/Venafi/vcert/v5,https://github.com/Venafi/vcert/blob/v5.8.0/LICENSE,Apache-2.0 github.com/akamai/AkamaiOPEN-edgegrid-golang,https://github.com/akamai/AkamaiOPEN-edgegrid-golang/blob/v1.2.2/LICENSE,Apache-2.0 -github.com/antlr/antlr4/runtime/Go/antlr/v4,https://github.com/antlr/antlr4/blob/8188dc5388df/runtime/Go/antlr/v4/LICENSE,BSD-3-Clause -github.com/asaskevich/govalidator,https://github.com/asaskevich/govalidator/blob/21a406dcc535/LICENSE,MIT -github.com/aws/aws-sdk-go,https://github.com/aws/aws-sdk-go/blob/v1.45.7/LICENSE.txt,Apache-2.0 -github.com/aws/aws-sdk-go/internal/sync/singleflight,https://github.com/aws/aws-sdk-go/blob/v1.45.7/internal/sync/singleflight/LICENSE,BSD-3-Clause +github.com/antlr4-go/antlr/v4,https://github.com/antlr4-go/antlr/blob/v4.13.1/LICENSE,BSD-3-Clause +github.com/asaskevich/govalidator,https://github.com/asaskevich/govalidator/blob/a9d515a09cc2/LICENSE,MIT +github.com/aws/aws-sdk-go-v2,https://github.com/aws/aws-sdk-go-v2/blob/v1.31.0/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/config,https://github.com/aws/aws-sdk-go-v2/blob/config/v1.27.36/config/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/credentials,https://github.com/aws/aws-sdk-go-v2/blob/credentials/v1.17.34/credentials/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/feature/ec2/imds,https://github.com/aws/aws-sdk-go-v2/blob/feature/ec2/imds/v1.16.14/feature/ec2/imds/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/internal/configsources,https://github.com/aws/aws-sdk-go-v2/blob/internal/configsources/v1.3.18/internal/configsources/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2,https://github.com/aws/aws-sdk-go-v2/blob/internal/endpoints/v2.6.18/internal/endpoints/v2/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/internal/ini,https://github.com/aws/aws-sdk-go-v2/blob/internal/ini/v1.8.1/internal/ini/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/internal/sync/singleflight,https://github.com/aws/aws-sdk-go-v2/blob/v1.31.0/internal/sync/singleflight/LICENSE,BSD-3-Clause +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding,https://github.com/aws/aws-sdk-go-v2/blob/service/internal/accept-encoding/v1.11.5/service/internal/accept-encoding/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url,https://github.com/aws/aws-sdk-go-v2/blob/service/internal/presigned-url/v1.11.20/service/internal/presigned-url/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/route53,https://github.com/aws/aws-sdk-go-v2/blob/service/route53/v1.44.0/service/route53/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/sso,https://github.com/aws/aws-sdk-go-v2/blob/service/sso/v1.23.0/service/sso/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/ssooidc,https://github.com/aws/aws-sdk-go-v2/blob/service/ssooidc/v1.27.0/service/ssooidc/LICENSE.txt,Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/sts,https://github.com/aws/aws-sdk-go-v2/blob/service/sts/v1.31.0/service/sts/LICENSE.txt,Apache-2.0 +github.com/aws/smithy-go,https://github.com/aws/smithy-go/blob/v1.21.0/LICENSE,Apache-2.0 +github.com/aws/smithy-go/internal/sync/singleflight,https://github.com/aws/smithy-go/blob/v1.21.0/internal/sync/singleflight/LICENSE,BSD-3-Clause github.com/beorn7/perks/quantile,https://github.com/beorn7/perks/blob/v1.0.1/LICENSE,MIT github.com/blang/semver/v4,https://github.com/blang/semver/blob/v4.0.0/v4/LICENSE,MIT -github.com/cenkalti/backoff/v3,https://github.com/cenkalti/backoff/blob/v3.2.2/LICENSE,MIT -github.com/cenkalti/backoff/v4,https://github.com/cenkalti/backoff/blob/v4.2.1/LICENSE,MIT +github.com/cenkalti/backoff/v4,https://github.com/cenkalti/backoff/blob/v4.3.0/LICENSE,MIT github.com/cert-manager/cert-manager,https://github.com/cert-manager/cert-manager/blob/HEAD/LICENSE,Apache-2.0 github.com/cert-manager/cert-manager/pkg/issuer/acme/dns/azuredns,https://github.com/cert-manager/cert-manager/blob/HEAD/pkg/issuer/acme/dns/azuredns/LICENSE,MIT github.com/cert-manager/cert-manager/pkg/issuer/acme/dns/clouddns,https://github.com/cert-manager/cert-manager/blob/HEAD/pkg/issuer/acme/dns/clouddns/LICENSE,MIT github.com/cert-manager/cert-manager/pkg/issuer/acme/dns/cloudflare,https://github.com/cert-manager/cert-manager/blob/HEAD/pkg/issuer/acme/dns/cloudflare/LICENSE,MIT github.com/cert-manager/cert-manager/pkg/issuer/acme/dns/route53,https://github.com/cert-manager/cert-manager/blob/HEAD/pkg/issuer/acme/dns/route53/LICENSE,MIT github.com/cert-manager/cert-manager/pkg/issuer/acme/dns/util,https://github.com/cert-manager/cert-manager/blob/HEAD/pkg/issuer/acme/dns/util/LICENSE,MIT -github.com/cespare/xxhash/v2,https://github.com/cespare/xxhash/blob/v2.2.0/LICENSE.txt,MIT +github.com/cespare/xxhash/v2,https://github.com/cespare/xxhash/blob/v2.3.0/LICENSE.txt,MIT github.com/coreos/go-semver/semver,https://github.com/coreos/go-semver/blob/v0.3.1/LICENSE,Apache-2.0 github.com/coreos/go-systemd/v22,https://github.com/coreos/go-systemd/blob/v22.5.0/LICENSE,Apache-2.0 github.com/cpu/goacmedns,https://github.com/cpu/goacmedns/blob/v0.1.1/LICENSE,MIT github.com/davecgh/go-spew/spew,https://github.com/davecgh/go-spew/blob/d8f796af33cc/LICENSE,ISC -github.com/digitalocean/godo,https://github.com/digitalocean/godo/blob/v1.102.1/LICENSE.txt,MIT -github.com/digitalocean/godo,https://github.com/digitalocean/godo/blob/v1.102.1/LICENSE.txt,BSD-3-Clause -github.com/emicklei/go-restful/v3,https://github.com/emicklei/go-restful/blob/v3.11.0/LICENSE,MIT -github.com/evanphx/json-patch,https://github.com/evanphx/json-patch/blob/v5.6.0/LICENSE,BSD-3-Clause -github.com/evanphx/json-patch/v5,https://github.com/evanphx/json-patch/blob/v5.6.0/v5/LICENSE,BSD-3-Clause +github.com/digitalocean/godo,https://github.com/digitalocean/godo/blob/v1.125.0/LICENSE.txt,MIT +github.com/digitalocean/godo,https://github.com/digitalocean/godo/blob/v1.125.0/LICENSE.txt,BSD-3-Clause +github.com/emicklei/go-restful/v3,https://github.com/emicklei/go-restful/blob/v3.12.1/LICENSE,MIT +github.com/evanphx/json-patch/v5,https://github.com/evanphx/json-patch/blob/v5.9.0/v5/LICENSE,BSD-3-Clause github.com/felixge/httpsnoop,https://github.com/felixge/httpsnoop/blob/v1.0.4/LICENSE.txt,MIT -github.com/fsnotify/fsnotify,https://github.com/fsnotify/fsnotify/blob/v1.6.0/LICENSE,BSD-3-Clause -github.com/go-asn1-ber/asn1-ber,https://github.com/go-asn1-ber/asn1-ber/blob/v1.5.4/LICENSE,MIT -github.com/go-jose/go-jose/v3,https://github.com/go-jose/go-jose/blob/v3.0.1/LICENSE,Apache-2.0 -github.com/go-jose/go-jose/v3/json,https://github.com/go-jose/go-jose/blob/v3.0.1/json/LICENSE,BSD-3-Clause -github.com/go-ldap/ldap/v3,https://github.com/go-ldap/ldap/blob/v3.4.5/v3/LICENSE,MIT -github.com/go-logr/logr,https://github.com/go-logr/logr/blob/v1.3.0/LICENSE,Apache-2.0 +github.com/fsnotify/fsnotify,https://github.com/fsnotify/fsnotify/blob/v1.8.0/LICENSE,BSD-3-Clause +github.com/fxamacker/cbor/v2,https://github.com/fxamacker/cbor/blob/v2.7.0/LICENSE,MIT +github.com/go-asn1-ber/asn1-ber,https://github.com/go-asn1-ber/asn1-ber/blob/v1.5.6/LICENSE,MIT +github.com/go-http-utils/headers,https://github.com/go-http-utils/headers/blob/fed159eddc2a/LICENSE,MIT +github.com/go-jose/go-jose/v4,https://github.com/go-jose/go-jose/blob/v4.0.2/LICENSE,Apache-2.0 +github.com/go-jose/go-jose/v4/json,https://github.com/go-jose/go-jose/blob/v4.0.2/json/LICENSE,BSD-3-Clause +github.com/go-ldap/ldap/v3,https://github.com/go-ldap/ldap/blob/v3.4.8/v3/LICENSE,MIT +github.com/go-logr/logr,https://github.com/go-logr/logr/blob/v1.4.2/LICENSE,Apache-2.0 github.com/go-logr/stdr,https://github.com/go-logr/stdr/blob/v1.2.2/LICENSE,Apache-2.0 -github.com/go-logr/zapr,https://github.com/go-logr/zapr/blob/v1.2.4/LICENSE,Apache-2.0 -github.com/go-openapi/jsonpointer,https://github.com/go-openapi/jsonpointer/blob/v0.19.6/LICENSE,Apache-2.0 -github.com/go-openapi/jsonreference,https://github.com/go-openapi/jsonreference/blob/v0.20.2/LICENSE,Apache-2.0 -github.com/go-openapi/swag,https://github.com/go-openapi/swag/blob/v0.22.3/LICENSE,Apache-2.0 +github.com/go-logr/zapr,https://github.com/go-logr/zapr/blob/v1.3.0/LICENSE,Apache-2.0 +github.com/go-openapi/jsonpointer,https://github.com/go-openapi/jsonpointer/blob/v0.21.0/LICENSE,Apache-2.0 +github.com/go-openapi/jsonreference,https://github.com/go-openapi/jsonreference/blob/v0.21.0/LICENSE,Apache-2.0 +github.com/go-openapi/swag,https://github.com/go-openapi/swag/blob/v0.23.0/LICENSE,Apache-2.0 github.com/gogo/protobuf,https://github.com/gogo/protobuf/blob/v1.3.2/LICENSE,BSD-3-Clause -github.com/golang-jwt/jwt/v4,https://github.com/golang-jwt/jwt/blob/v4.5.0/LICENSE,MIT +github.com/golang-jwt/jwt/v5,https://github.com/golang-jwt/jwt/blob/v5.2.1/LICENSE,MIT github.com/golang/groupcache/lru,https://github.com/golang/groupcache/blob/41bb18bfe9da/LICENSE,Apache-2.0 -github.com/golang/protobuf,https://github.com/golang/protobuf/blob/v1.5.3/LICENSE,BSD-3-Clause +github.com/golang/protobuf/proto,https://github.com/golang/protobuf/blob/v1.5.4/LICENSE,BSD-3-Clause github.com/golang/snappy,https://github.com/golang/snappy/blob/v0.0.4/LICENSE,BSD-3-Clause -github.com/google/cel-go,https://github.com/google/cel-go/blob/v0.16.0/LICENSE,Apache-2.0 -github.com/google/cel-go,https://github.com/google/cel-go/blob/v0.16.0/LICENSE,BSD-3-Clause -github.com/google/gnostic-models,https://github.com/google/gnostic-models/blob/v0.6.8/LICENSE,Apache-2.0 +github.com/google/btree,https://github.com/google/btree/blob/v1.1.3/LICENSE,Apache-2.0 +github.com/google/cel-go,https://github.com/google/cel-go/blob/v0.22.1/LICENSE,Apache-2.0 +github.com/google/cel-go,https://github.com/google/cel-go/blob/v0.22.1/LICENSE,BSD-3-Clause +github.com/google/gnostic-models,https://github.com/google/gnostic-models/blob/v0.6.9/LICENSE,Apache-2.0 github.com/google/go-cmp/cmp,https://github.com/google/go-cmp/blob/v0.6.0/LICENSE,BSD-3-Clause github.com/google/go-querystring/query,https://github.com/google/go-querystring/blob/v1.1.0/LICENSE,BSD-3-Clause github.com/google/gofuzz,https://github.com/google/gofuzz/blob/v1.2.0/LICENSE,Apache-2.0 -github.com/google/s2a-go,https://github.com/google/s2a-go/blob/v0.1.7/LICENSE.md,Apache-2.0 -github.com/google/uuid,https://github.com/google/uuid/blob/v1.3.1/LICENSE,BSD-3-Clause -github.com/googleapis/enterprise-certificate-proxy/client,https://github.com/googleapis/enterprise-certificate-proxy/blob/v0.2.5/LICENSE,Apache-2.0 -github.com/googleapis/gax-go/v2,https://github.com/googleapis/gax-go/blob/v2.12.0/v2/LICENSE,BSD-3-Clause +github.com/google/s2a-go,https://github.com/google/s2a-go/blob/v0.1.8/LICENSE.md,Apache-2.0 +github.com/google/uuid,https://github.com/google/uuid/blob/v1.6.0/LICENSE,BSD-3-Clause +github.com/googleapis/enterprise-certificate-proxy/client,https://github.com/googleapis/enterprise-certificate-proxy/blob/v0.3.4/LICENSE,Apache-2.0 +github.com/googleapis/gax-go/v2,https://github.com/googleapis/gax-go/blob/v2.13.0/v2/LICENSE,BSD-3-Clause +github.com/gorilla/websocket,https://github.com/gorilla/websocket/blob/v1.5.3/LICENSE,BSD-2-Clause github.com/grpc-ecosystem/go-grpc-prometheus,https://github.com/grpc-ecosystem/go-grpc-prometheus/blob/v1.2.0/LICENSE,Apache-2.0 -github.com/grpc-ecosystem/grpc-gateway/v2,https://github.com/grpc-ecosystem/grpc-gateway/blob/v2.16.0/LICENSE.txt,BSD-3-Clause +github.com/grpc-ecosystem/grpc-gateway/v2,https://github.com/grpc-ecosystem/grpc-gateway/blob/v2.25.1/LICENSE,BSD-3-Clause github.com/hashicorp/errwrap,https://github.com/hashicorp/errwrap/blob/v1.1.0/LICENSE,MPL-2.0 github.com/hashicorp/go-cleanhttp,https://github.com/hashicorp/go-cleanhttp/blob/v0.5.2/LICENSE,MPL-2.0 github.com/hashicorp/go-multierror,https://github.com/hashicorp/go-multierror/blob/v1.1.1/LICENSE,MPL-2.0 -github.com/hashicorp/go-retryablehttp,https://github.com/hashicorp/go-retryablehttp/blob/v0.7.4/LICENSE,MPL-2.0 +github.com/hashicorp/go-retryablehttp,https://github.com/hashicorp/go-retryablehttp/blob/v0.7.7/LICENSE,MPL-2.0 github.com/hashicorp/go-rootcerts,https://github.com/hashicorp/go-rootcerts/blob/v1.0.2/LICENSE,MPL-2.0 -github.com/hashicorp/go-secure-stdlib/parseutil,https://github.com/hashicorp/go-secure-stdlib/blob/parseutil/v0.1.7/parseutil/LICENSE,MPL-2.0 +github.com/hashicorp/go-secure-stdlib/parseutil,https://github.com/hashicorp/go-secure-stdlib/blob/parseutil/v0.1.8/parseutil/LICENSE,MPL-2.0 github.com/hashicorp/go-secure-stdlib/strutil,https://github.com/hashicorp/go-secure-stdlib/blob/strutil/v0.1.2/strutil/LICENSE,MPL-2.0 -github.com/hashicorp/go-sockaddr,https://github.com/hashicorp/go-sockaddr/blob/v1.0.2/LICENSE,MPL-2.0 +github.com/hashicorp/go-sockaddr,https://github.com/hashicorp/go-sockaddr/blob/v1.0.6/LICENSE,MPL-2.0 github.com/hashicorp/hcl,https://github.com/hashicorp/hcl/blob/v1.0.1-vault-5/LICENSE,MPL-2.0 -github.com/hashicorp/vault/api,https://github.com/hashicorp/vault/blob/api/v1.10.0/api/LICENSE,MPL-2.0 -github.com/hashicorp/vault/sdk/helper,https://github.com/hashicorp/vault/blob/sdk/v0.10.0/sdk/LICENSE,MPL-2.0 -github.com/imdario/mergo,https://github.com/imdario/mergo/blob/v0.3.13/LICENSE,BSD-3-Clause +github.com/hashicorp/vault/api,https://github.com/hashicorp/vault/blob/api/v1.15.0/api/LICENSE,MPL-2.0 +github.com/hashicorp/vault/sdk/helper,https://github.com/hashicorp/vault/blob/sdk/v0.14.0/sdk/LICENSE,MPL-2.0 github.com/jmespath/go-jmespath,https://github.com/jmespath/go-jmespath/blob/b0104c826a24/LICENSE,Apache-2.0 github.com/josharian/intern,https://github.com/josharian/intern/blob/v1.0.0/license.md,MIT github.com/json-iterator/go,https://github.com/json-iterator/go/blob/v1.1.12/LICENSE,MIT +github.com/klauspost/compress,https://github.com/klauspost/compress/blob/v1.17.11/LICENSE,MIT +github.com/klauspost/compress,https://github.com/klauspost/compress/blob/v1.17.11/LICENSE,Apache-2.0 +github.com/klauspost/compress,https://github.com/klauspost/compress/blob/v1.17.11/LICENSE,BSD-3-Clause +github.com/klauspost/compress/internal/snapref,https://github.com/klauspost/compress/blob/v1.17.11/internal/snapref/LICENSE,BSD-3-Clause +github.com/klauspost/compress/zstd/internal/xxhash,https://github.com/klauspost/compress/blob/v1.17.11/zstd/internal/xxhash/LICENSE.txt,MIT github.com/kr/pretty,https://github.com/kr/pretty/blob/v0.3.1/License,MIT github.com/kr/text,https://github.com/kr/text/blob/v0.2.0/License,MIT -github.com/mailru/easyjson,https://github.com/mailru/easyjson/blob/v0.7.7/LICENSE,MIT -github.com/matttproud/golang_protobuf_extensions/pbutil,https://github.com/matttproud/golang_protobuf_extensions/blob/v1.0.4/LICENSE,Apache-2.0 -github.com/miekg/dns,https://github.com/miekg/dns/blob/v1.1.55/LICENSE,BSD-3-Clause +github.com/kylelemons/godebug,https://github.com/kylelemons/godebug/blob/v1.1.0/LICENSE,Apache-2.0 +github.com/mailru/easyjson,https://github.com/mailru/easyjson/blob/v0.9.0/LICENSE,MIT +github.com/miekg/dns,https://github.com/miekg/dns/blob/v1.1.62/LICENSE,BSD-3-Clause github.com/mitchellh/go-homedir,https://github.com/mitchellh/go-homedir/blob/v1.1.0/LICENSE,MIT github.com/mitchellh/mapstructure,https://github.com/mitchellh/mapstructure/blob/v1.5.0/LICENSE,MIT github.com/modern-go/concurrent,https://github.com/modern-go/concurrent/blob/bacd9c7ef1dd/LICENSE,Apache-2.0 @@ -92,78 +113,87 @@ github.com/munnerz/goautoneg,https://github.com/munnerz/goautoneg/blob/a7dc8b61c github.com/patrickmn/go-cache,https://github.com/patrickmn/go-cache/blob/v2.1.0/LICENSE,MIT github.com/pavlo-v-chernykh/keystore-go/v4,https://github.com/pavlo-v-chernykh/keystore-go/blob/v4.5.0/LICENSE,MIT github.com/pierrec/lz4,https://github.com/pierrec/lz4/blob/v2.6.1/LICENSE,BSD-3-Clause +github.com/pkg/browser,https://github.com/pkg/browser/blob/5ac0b6a4141c/LICENSE,BSD-2-Clause github.com/pkg/errors,https://github.com/pkg/errors/blob/v0.9.1/LICENSE,BSD-2-Clause -github.com/prometheus/client_golang/prometheus,https://github.com/prometheus/client_golang/blob/v1.16.0/LICENSE,Apache-2.0 -github.com/prometheus/client_model/go,https://github.com/prometheus/client_model/blob/v0.4.0/LICENSE,Apache-2.0 -github.com/prometheus/common,https://github.com/prometheus/common/blob/v0.44.0/LICENSE,Apache-2.0 -github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg,https://github.com/prometheus/common/blob/v0.44.0/internal/bitbucket.org/ww/goautoneg/README.txt,BSD-3-Clause -github.com/prometheus/procfs,https://github.com/prometheus/procfs/blob/v0.10.1/LICENSE,Apache-2.0 -github.com/rogpeppe/go-internal/fmtsort,https://github.com/rogpeppe/go-internal/blob/v1.11.0/LICENSE,BSD-3-Clause +github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil,https://github.com/prometheus/client_golang/blob/v1.20.5/internal/github.com/golang/gddo/LICENSE,BSD-3-Clause +github.com/prometheus/client_golang/prometheus,https://github.com/prometheus/client_golang/blob/v1.20.5/LICENSE,Apache-2.0 +github.com/prometheus/client_model/go,https://github.com/prometheus/client_model/blob/v0.6.1/LICENSE,Apache-2.0 +github.com/prometheus/common,https://github.com/prometheus/common/blob/v0.61.0/LICENSE,Apache-2.0 +github.com/prometheus/procfs,https://github.com/prometheus/procfs/blob/v0.15.1/LICENSE,Apache-2.0 +github.com/rogpeppe/go-internal/fmtsort,https://github.com/rogpeppe/go-internal/blob/v1.13.1/LICENSE,BSD-3-Clause github.com/ryanuber/go-glob,https://github.com/ryanuber/go-glob/blob/v1.0.0/LICENSE,MIT github.com/sirupsen/logrus,https://github.com/sirupsen/logrus/blob/v1.9.3/LICENSE,MIT -github.com/spf13/cobra,https://github.com/spf13/cobra/blob/v1.7.0/LICENSE.txt,Apache-2.0 +github.com/sosodev/duration,https://github.com/sosodev/duration/blob/v1.3.1/LICENSE,MIT +github.com/spf13/cobra,https://github.com/spf13/cobra/blob/v1.8.1/LICENSE.txt,Apache-2.0 github.com/spf13/pflag,https://github.com/spf13/pflag/blob/v1.0.5/LICENSE,BSD-3-Clause -github.com/stoewer/go-strcase,https://github.com/stoewer/go-strcase/blob/v1.2.0/LICENSE,MIT -github.com/youmark/pkcs8,https://github.com/youmark/pkcs8/blob/1326539a0a0a/LICENSE,MIT -go.etcd.io/etcd/api/v3,https://github.com/etcd-io/etcd/blob/api/v3.5.9/api/LICENSE,Apache-2.0 -go.etcd.io/etcd/client/pkg/v3,https://github.com/etcd-io/etcd/blob/client/pkg/v3.5.9/client/pkg/LICENSE,Apache-2.0 -go.etcd.io/etcd/client/v3,https://github.com/etcd-io/etcd/blob/client/v3.5.9/client/v3/LICENSE,Apache-2.0 +github.com/stoewer/go-strcase,https://github.com/stoewer/go-strcase/blob/v1.3.0/LICENSE,MIT +github.com/vektah/gqlparser/v2,https://github.com/vektah/gqlparser/blob/v2.5.15/LICENSE,MIT +github.com/x448/float16,https://github.com/x448/float16/blob/v0.8.4/LICENSE,MIT +github.com/youmark/pkcs8,https://github.com/youmark/pkcs8/blob/3c2c7870ae76/LICENSE,MIT +go.etcd.io/etcd/api/v3,https://github.com/etcd-io/etcd/blob/api/v3.5.17/api/LICENSE,Apache-2.0 +go.etcd.io/etcd/client/pkg/v3,https://github.com/etcd-io/etcd/blob/client/pkg/v3.5.17/client/pkg/LICENSE,Apache-2.0 +go.etcd.io/etcd/client/v3,https://github.com/etcd-io/etcd/blob/client/v3.5.17/client/v3/LICENSE,Apache-2.0 go.opencensus.io,https://github.com/census-instrumentation/opencensus-go/blob/v0.24.0/LICENSE,Apache-2.0 -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc,https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/google.golang.org/grpc/otelgrpc/v0.46.0/instrumentation/google.golang.org/grpc/otelgrpc/LICENSE,Apache-2.0 -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp,https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/net/http/otelhttp/v0.46.0/instrumentation/net/http/otelhttp/LICENSE,Apache-2.0 -go.opentelemetry.io/otel,https://github.com/open-telemetry/opentelemetry-go/blob/v1.20.0/LICENSE,Apache-2.0 -go.opentelemetry.io/otel/exporters/otlp/otlptrace,https://github.com/open-telemetry/opentelemetry-go/blob/exporters/otlp/otlptrace/v1.20.0/exporters/otlp/otlptrace/LICENSE,Apache-2.0 -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc,https://github.com/open-telemetry/opentelemetry-go/blob/exporters/otlp/otlptrace/otlptracegrpc/v1.20.0/exporters/otlp/otlptrace/otlptracegrpc/LICENSE,Apache-2.0 -go.opentelemetry.io/otel/metric,https://github.com/open-telemetry/opentelemetry-go/blob/metric/v1.20.0/metric/LICENSE,Apache-2.0 -go.opentelemetry.io/otel/sdk,https://github.com/open-telemetry/opentelemetry-go/blob/sdk/v1.20.0/sdk/LICENSE,Apache-2.0 -go.opentelemetry.io/otel/trace,https://github.com/open-telemetry/opentelemetry-go/blob/trace/v1.20.0/trace/LICENSE,Apache-2.0 -go.opentelemetry.io/proto/otlp,https://github.com/open-telemetry/opentelemetry-proto-go/blob/otlp/v1.0.0/otlp/LICENSE,Apache-2.0 +go.opentelemetry.io/auto/sdk,https://github.com/open-telemetry/opentelemetry-go-instrumentation/blob/sdk/v1.1.0/sdk/LICENSE,Apache-2.0 +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc,https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/google.golang.org/grpc/otelgrpc/v0.58.0/instrumentation/google.golang.org/grpc/otelgrpc/LICENSE,Apache-2.0 +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp,https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/net/http/otelhttp/v0.58.0/instrumentation/net/http/otelhttp/LICENSE,Apache-2.0 +go.opentelemetry.io/otel,https://github.com/open-telemetry/opentelemetry-go/blob/v1.33.0/LICENSE,Apache-2.0 +go.opentelemetry.io/otel/exporters/otlp/otlptrace,https://github.com/open-telemetry/opentelemetry-go/blob/exporters/otlp/otlptrace/v1.33.0/exporters/otlp/otlptrace/LICENSE,Apache-2.0 +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc,https://github.com/open-telemetry/opentelemetry-go/blob/exporters/otlp/otlptrace/otlptracegrpc/v1.33.0/exporters/otlp/otlptrace/otlptracegrpc/LICENSE,Apache-2.0 +go.opentelemetry.io/otel/metric,https://github.com/open-telemetry/opentelemetry-go/blob/metric/v1.33.0/metric/LICENSE,Apache-2.0 +go.opentelemetry.io/otel/sdk,https://github.com/open-telemetry/opentelemetry-go/blob/sdk/v1.33.0/sdk/LICENSE,Apache-2.0 +go.opentelemetry.io/otel/trace,https://github.com/open-telemetry/opentelemetry-go/blob/trace/v1.33.0/trace/LICENSE,Apache-2.0 +go.opentelemetry.io/proto/otlp,https://github.com/open-telemetry/opentelemetry-proto-go/blob/otlp/v1.4.0/otlp/LICENSE,Apache-2.0 go.uber.org/multierr,https://github.com/uber-go/multierr/blob/v1.11.0/LICENSE.txt,MIT -go.uber.org/zap,https://github.com/uber-go/zap/blob/v1.25.0/LICENSE.txt,MIT -golang.org/x/crypto,https://cs.opensource.google/go/x/crypto/+/v0.14.0:LICENSE,BSD-3-Clause -golang.org/x/exp,https://cs.opensource.google/go/x/exp/+/92128663:LICENSE,BSD-3-Clause -golang.org/x/net,https://cs.opensource.google/go/x/net/+/v0.17.0:LICENSE,BSD-3-Clause -golang.org/x/oauth2,https://cs.opensource.google/go/x/oauth2/+/v0.12.0:LICENSE,BSD-3-Clause -golang.org/x/sync,https://cs.opensource.google/go/x/sync/+/v0.3.0:LICENSE,BSD-3-Clause -golang.org/x/sys,https://cs.opensource.google/go/x/sys/+/v0.14.0:LICENSE,BSD-3-Clause -golang.org/x/term,https://cs.opensource.google/go/x/term/+/v0.13.0:LICENSE,BSD-3-Clause -golang.org/x/text,https://cs.opensource.google/go/x/text/+/v0.13.0:LICENSE,BSD-3-Clause -golang.org/x/time/rate,https://cs.opensource.google/go/x/time/+/v0.3.0:LICENSE,BSD-3-Clause +go.uber.org/zap,https://github.com/uber-go/zap/blob/v1.27.0/LICENSE,MIT +golang.org/x/crypto,https://cs.opensource.google/go/x/crypto/+/v0.31.0:LICENSE,BSD-3-Clause +golang.org/x/exp,https://cs.opensource.google/go/x/exp/+/b2144cdd:LICENSE,BSD-3-Clause +golang.org/x/net,https://cs.opensource.google/go/x/net/+/v0.33.0:LICENSE,BSD-3-Clause +golang.org/x/oauth2,https://cs.opensource.google/go/x/oauth2/+/v0.24.0:LICENSE,BSD-3-Clause +golang.org/x/sync,https://cs.opensource.google/go/x/sync/+/v0.10.0:LICENSE,BSD-3-Clause +golang.org/x/sys,https://cs.opensource.google/go/x/sys/+/v0.28.0:LICENSE,BSD-3-Clause +golang.org/x/term,https://cs.opensource.google/go/x/term/+/v0.27.0:LICENSE,BSD-3-Clause +golang.org/x/text,https://cs.opensource.google/go/x/text/+/v0.21.0:LICENSE,BSD-3-Clause +golang.org/x/time/rate,https://cs.opensource.google/go/x/time/+/v0.8.0:LICENSE,BSD-3-Clause gomodules.xyz/jsonpatch/v2,https://github.com/gomodules/jsonpatch/blob/v2.4.0/v2/LICENSE,Apache-2.0 -google.golang.org/api,https://github.com/googleapis/google-api-go-client/blob/v0.140.0/LICENSE,BSD-3-Clause -google.golang.org/api/internal/third_party/uritemplates,https://github.com/googleapis/google-api-go-client/blob/v0.140.0/internal/third_party/uritemplates/LICENSE,BSD-3-Clause -google.golang.org/genproto/googleapis/api,https://github.com/googleapis/go-genproto/blob/b8732ec3820d/googleapis/api/LICENSE,Apache-2.0 -google.golang.org/genproto/googleapis/rpc,https://github.com/googleapis/go-genproto/blob/2d3300fd4832/googleapis/rpc/LICENSE,Apache-2.0 -google.golang.org/grpc,https://github.com/grpc/grpc-go/blob/v1.59.0/LICENSE,Apache-2.0 -google.golang.org/protobuf,https://github.com/protocolbuffers/protobuf-go/blob/v1.31.0/LICENSE,BSD-3-Clause +google.golang.org/api,https://github.com/googleapis/google-api-go-client/blob/v0.198.0/LICENSE,BSD-3-Clause +google.golang.org/api/internal/third_party/uritemplates,https://github.com/googleapis/google-api-go-client/blob/v0.198.0/internal/third_party/uritemplates/LICENSE,BSD-3-Clause +google.golang.org/genproto/googleapis/api,https://github.com/googleapis/go-genproto/blob/6b3ec007d9bb/googleapis/api/LICENSE,Apache-2.0 +google.golang.org/genproto/googleapis/rpc,https://github.com/googleapis/go-genproto/blob/6b3ec007d9bb/googleapis/rpc/LICENSE,Apache-2.0 +google.golang.org/grpc,https://github.com/grpc/grpc-go/blob/v1.69.2/LICENSE,Apache-2.0 +google.golang.org/protobuf,https://github.com/protocolbuffers/protobuf-go/blob/v1.36.0/LICENSE,BSD-3-Clause +gopkg.in/evanphx/json-patch.v4,https://github.com/evanphx/json-patch/blob/v4.12.0/LICENSE,BSD-3-Clause gopkg.in/inf.v0,https://github.com/go-inf/inf/blob/v0.9.1/LICENSE,BSD-3-Clause -gopkg.in/ini.v1,https://github.com/go-ini/ini/blob/v1.62.0/LICENSE,Apache-2.0 +gopkg.in/ini.v1,https://github.com/go-ini/ini/blob/v1.67.0/LICENSE,Apache-2.0 gopkg.in/natefinch/lumberjack.v2,https://github.com/natefinch/lumberjack/blob/v2.2.1/LICENSE,MIT gopkg.in/yaml.v2,https://github.com/go-yaml/yaml/blob/v2.4.0/LICENSE,Apache-2.0 gopkg.in/yaml.v3,https://github.com/go-yaml/yaml/blob/v3.0.1/LICENSE,MIT -k8s.io/api,https://github.com/kubernetes/api/blob/v0.28.1/LICENSE,Apache-2.0 -k8s.io/apiextensions-apiserver/pkg,https://github.com/kubernetes/apiextensions-apiserver/blob/v0.28.1/LICENSE,Apache-2.0 -k8s.io/apimachinery/pkg,https://github.com/kubernetes/apimachinery/blob/v0.28.1/LICENSE,Apache-2.0 -k8s.io/apimachinery/third_party/forked/golang,https://github.com/kubernetes/apimachinery/blob/v0.28.1/third_party/forked/golang/LICENSE,BSD-3-Clause -k8s.io/apiserver,https://github.com/kubernetes/apiserver/blob/v0.28.1/LICENSE,Apache-2.0 -k8s.io/client-go,https://github.com/kubernetes/client-go/blob/v0.28.1/LICENSE,Apache-2.0 -k8s.io/component-base,https://github.com/kubernetes/component-base/blob/v0.28.1/LICENSE,Apache-2.0 -k8s.io/klog/v2,https://github.com/kubernetes/klog/blob/v2.100.1/LICENSE,Apache-2.0 -k8s.io/kms,https://github.com/kubernetes/kms/blob/v0.28.1/LICENSE,Apache-2.0 -k8s.io/kube-aggregator/pkg/apis/apiregistration,https://github.com/kubernetes/kube-aggregator/blob/v0.28.1/LICENSE,Apache-2.0 -k8s.io/kube-openapi/pkg,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/LICENSE,Apache-2.0 -k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/pkg/internal/third_party/go-json-experiment/json/LICENSE,BSD-3-Clause -k8s.io/kube-openapi/pkg/validation/errors,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/pkg/validation/errors/LICENSE,Apache-2.0 -k8s.io/kube-openapi/pkg/validation/spec,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/pkg/validation/spec/LICENSE,Apache-2.0 -k8s.io/kube-openapi/pkg/validation/strfmt,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/pkg/validation/strfmt/LICENSE,Apache-2.0 -k8s.io/utils,https://github.com/kubernetes/utils/blob/3b25d923346b/LICENSE,Apache-2.0 -k8s.io/utils/internal/third_party/forked/golang,https://github.com/kubernetes/utils/blob/3b25d923346b/internal/third_party/forked/golang/LICENSE,BSD-3-Clause -sigs.k8s.io/apiserver-network-proxy/konnectivity-client,https://github.com/kubernetes-sigs/apiserver-network-proxy/blob/konnectivity-client/v0.1.2/konnectivity-client/LICENSE,Apache-2.0 -sigs.k8s.io/controller-runtime,https://github.com/kubernetes-sigs/controller-runtime/blob/v0.16.1/LICENSE,Apache-2.0 -sigs.k8s.io/gateway-api,https://github.com/kubernetes-sigs/gateway-api/blob/v0.8.0/LICENSE,Apache-2.0 -sigs.k8s.io/json,https://github.com/kubernetes-sigs/json/blob/bc3834ca7abd/LICENSE,Apache-2.0 -sigs.k8s.io/json,https://github.com/kubernetes-sigs/json/blob/bc3834ca7abd/LICENSE,BSD-3-Clause -sigs.k8s.io/structured-merge-diff/v4,https://github.com/kubernetes-sigs/structured-merge-diff/blob/v4.3.0/LICENSE,Apache-2.0 -sigs.k8s.io/yaml,https://github.com/kubernetes-sigs/yaml/blob/v1.3.0/LICENSE,MIT -sigs.k8s.io/yaml,https://github.com/kubernetes-sigs/yaml/blob/v1.3.0/LICENSE,BSD-3-Clause -software.sslmate.com/src/go-pkcs12,https://github.com/SSLMate/go-pkcs12/blob/v0.2.1/LICENSE,BSD-3-Clause +k8s.io/api,https://github.com/kubernetes/api/blob/v0.32.0/LICENSE,Apache-2.0 +k8s.io/apiextensions-apiserver/pkg,https://github.com/kubernetes/apiextensions-apiserver/blob/v0.32.0/LICENSE,Apache-2.0 +k8s.io/apimachinery/pkg,https://github.com/kubernetes/apimachinery/blob/v0.32.0/LICENSE,Apache-2.0 +k8s.io/apimachinery/third_party/forked/golang,https://github.com/kubernetes/apimachinery/blob/v0.32.0/third_party/forked/golang/LICENSE,BSD-3-Clause +k8s.io/apiserver,https://github.com/kubernetes/apiserver/blob/v0.32.0/LICENSE,Apache-2.0 +k8s.io/client-go,https://github.com/kubernetes/client-go/blob/v0.32.0/LICENSE,Apache-2.0 +k8s.io/component-base,https://github.com/kubernetes/component-base/blob/v0.32.0/LICENSE,Apache-2.0 +k8s.io/klog/v2,https://github.com/kubernetes/klog/blob/v2.130.1/LICENSE,Apache-2.0 +k8s.io/kms,https://github.com/kubernetes/kms/blob/v0.32.0/LICENSE,Apache-2.0 +k8s.io/kube-aggregator/pkg/apis/apiregistration,https://github.com/kubernetes/kube-aggregator/blob/v0.31.1/LICENSE,Apache-2.0 +k8s.io/kube-openapi/pkg,https://github.com/kubernetes/kube-openapi/blob/2c72e554b1e7/LICENSE,Apache-2.0 +k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json,https://github.com/kubernetes/kube-openapi/blob/2c72e554b1e7/pkg/internal/third_party/go-json-experiment/json/LICENSE,BSD-3-Clause +k8s.io/kube-openapi/pkg/internal/third_party/govalidator,https://github.com/kubernetes/kube-openapi/blob/2c72e554b1e7/pkg/internal/third_party/govalidator/LICENSE,MIT +k8s.io/kube-openapi/pkg/validation/errors,https://github.com/kubernetes/kube-openapi/blob/2c72e554b1e7/pkg/validation/errors/LICENSE,Apache-2.0 +k8s.io/kube-openapi/pkg/validation/spec,https://github.com/kubernetes/kube-openapi/blob/2c72e554b1e7/pkg/validation/spec/LICENSE,Apache-2.0 +k8s.io/kube-openapi/pkg/validation/strfmt,https://github.com/kubernetes/kube-openapi/blob/2c72e554b1e7/pkg/validation/strfmt/LICENSE,Apache-2.0 +k8s.io/utils,https://github.com/kubernetes/utils/blob/24370beab758/LICENSE,Apache-2.0 +k8s.io/utils/internal/third_party/forked/golang,https://github.com/kubernetes/utils/blob/24370beab758/internal/third_party/forked/golang/LICENSE,BSD-3-Clause +sigs.k8s.io/apiserver-network-proxy/konnectivity-client,https://github.com/kubernetes-sigs/apiserver-network-proxy/blob/konnectivity-client/v0.31.1/konnectivity-client/LICENSE,Apache-2.0 +sigs.k8s.io/controller-runtime,https://github.com/kubernetes-sigs/controller-runtime/blob/v0.19.0/LICENSE,Apache-2.0 +sigs.k8s.io/gateway-api,https://github.com/kubernetes-sigs/gateway-api/blob/v1.1.0/LICENSE,Apache-2.0 +sigs.k8s.io/json,https://github.com/kubernetes-sigs/json/blob/cfa47c3a1cc8/LICENSE,Apache-2.0 +sigs.k8s.io/json,https://github.com/kubernetes-sigs/json/blob/cfa47c3a1cc8/LICENSE,BSD-3-Clause +sigs.k8s.io/structured-merge-diff/v4,https://github.com/kubernetes-sigs/structured-merge-diff/blob/v4.5.0/LICENSE,Apache-2.0 +sigs.k8s.io/yaml,https://github.com/kubernetes-sigs/yaml/blob/v1.4.0/LICENSE,MIT +sigs.k8s.io/yaml,https://github.com/kubernetes-sigs/yaml/blob/v1.4.0/LICENSE,Apache-2.0 +sigs.k8s.io/yaml,https://github.com/kubernetes-sigs/yaml/blob/v1.4.0/LICENSE,BSD-3-Clause +sigs.k8s.io/yaml/goyaml.v2,https://github.com/kubernetes-sigs/yaml/blob/v1.4.0/goyaml.v2/LICENSE,Apache-2.0 +software.sslmate.com/src/go-pkcs12,https://github.com/SSLMate/go-pkcs12/blob/v0.5.0/LICENSE,BSD-3-Clause diff --git a/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/const.go b/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/const.go index 287ed2f6d7d2..ffc76533ac1f 100644 --- a/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/const.go +++ b/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/const.go @@ -17,5 +17,6 @@ limitations under the License. package v1 const ( - ACMEFinalizer = "finalizer.acme.cert-manager.io" + ACMELegacyFinalizer = "finalizer.acme.cert-manager.io" + ACMEDomainQualifiedFinalizer = "acme.cert-manager.io/finalizer" ) diff --git a/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/types_issuer.go b/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/types_issuer.go index 9f663280cbcc..7f6365e25a8a 100644 --- a/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/types_issuer.go +++ b/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/types_issuer.go @@ -19,7 +19,7 @@ package v1 import ( corev1 "k8s.io/api/core/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" - gwapi "sigs.k8s.io/gateway-api/apis/v1beta1" + gwapi "sigs.k8s.io/gateway-api/apis/v1" cmmeta "github.com/cert-manager/cert-manager/pkg/apis/meta/v1" ) @@ -48,8 +48,9 @@ type ACMEIssuer struct { // endpoint. // For example, for Let's Encrypt's DST crosssign you would use: // "DST Root CA X3" or "ISRG Root X1" for the newer Let's Encrypt root CA. - // This value picks the first certificate bundle in the ACME alternative - // chains that has a certificate with this value as its issuer's CN + // This value picks the first certificate bundle in the combined set of + // ACME default and alternative chains that has a root-most certificate with + // this value as its issuer's commonname. // +optional // +kubebuilder:validation:MaxLength=64 PreferredChain string `json:"preferredChain,omitempty"` @@ -109,7 +110,7 @@ type ACMEIssuer struct { // Enables requesting a Not After date on certificates that matches the // duration of the certificate. This is not supported by all ACME servers // like Let's Encrypt. If set to true when the ACME server does not support - // it it will create an error on the Order. + // it, it will create an error on the Order. // Defaults to false. // +optional EnableDurationFeature bool `json:"enableDurationFeature,omitempty"` @@ -285,6 +286,11 @@ type ACMEChallengeSolverHTTP01GatewayHTTPRoute struct { // the HTTPRoute. Usually, the parentRef references a Gateway. See: // https://gateway-api.sigs.k8s.io/api-types/httproute/#attaching-to-gateways ParentRefs []gwapi.ParentReference `json:"parentRefs,omitempty"` + + // Optional pod template used to configure the ACME challenge solver pods + // used for HTTP01 challenges. + // +optional + PodTemplate *ACMEChallengeSolverHTTP01IngressPodTemplate `json:"podTemplate,omitempty"` } type ACMEChallengeSolverHTTP01IngressPodTemplate struct { @@ -303,7 +309,7 @@ type ACMEChallengeSolverHTTP01IngressPodTemplate struct { } type ACMEChallengeSolverHTTP01IngressPodObjectMeta struct { - // Annotations that should be added to the create ACME HTTP01 solver pods. + // Annotations that should be added to the created ACME HTTP01 solver pods. // +optional Annotations map[string]string `json:"annotations,omitempty"` @@ -337,7 +343,11 @@ type ACMEChallengeSolverHTTP01IngressPodSpec struct { // If specified, the pod's imagePullSecrets // +optional - ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty" patchStrategy:"merge" patchMergeKey:"name"` + ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty" patchMergeKey:"name" patchStrategy:"merge"` + + // If specified, the pod's security context + // +optional + SecurityContext *ACMEChallengeSolverHTTP01IngressPodSecurityContext `json:"securityContext,omitempty"` } type ACMEChallengeSolverHTTP01IngressTemplate struct { @@ -408,6 +418,80 @@ type ACMEChallengeSolverDNS01 struct { Webhook *ACMEIssuerDNS01ProviderWebhook `json:"webhook,omitempty"` } +type ACMEChallengeSolverHTTP01IngressPodSecurityContext struct { + // The SELinux context to be applied to all containers. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in SecurityContext. If set in + // both SecurityContext and PodSecurityContext, the value specified in SecurityContext + // takes precedence for that container. + // Note that this field cannot be set when spec.os.name is windows. + // +optional + SELinuxOptions *corev1.SELinuxOptions `json:"seLinuxOptions,omitempty"` + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + // Note that this field cannot be set when spec.os.name is windows. + // +optional + RunAsUser *int64 `json:"runAsUser,omitempty"` + // The GID to run the entrypoint of the container process. + // Uses runtime default if unset. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + // Note that this field cannot be set when spec.os.name is windows. + // +optional + RunAsGroup *int64 `json:"runAsGroup,omitempty"` + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + RunAsNonRoot *bool `json:"runAsNonRoot,omitempty"` + // A list of groups applied to the first process run in each container, in addition + // to the container's primary GID, the fsGroup (if specified), and group memberships + // defined in the container image for the uid of the container process. If unspecified, + // no additional groups are added to any container. Note that group memberships + // defined in the container image for the uid of the container process are still effective, + // even if they are not included in this list. + // Note that this field cannot be set when spec.os.name is windows. + // +optional + SupplementalGroups []int64 `json:"supplementalGroups,omitempty"` + // A special supplemental group that applies to all containers in a pod. + // Some volume types allow the Kubelet to change the ownership of that volume + // to be owned by the pod: + // + // 1. The owning GID will be the FSGroup + // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) + // 3. The permission bits are OR'd with rw-rw---- + // + // If unset, the Kubelet will not modify the ownership and permissions of any volume. + // Note that this field cannot be set when spec.os.name is windows. + // +optional + FSGroup *int64 `json:"fsGroup,omitempty"` + // Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported + // sysctls (by the container runtime) might fail to launch. + // Note that this field cannot be set when spec.os.name is windows. + // +optional + Sysctls []corev1.Sysctl `json:"sysctls,omitempty"` + // fsGroupChangePolicy defines behavior of changing ownership and permission of the volume + // before being exposed inside Pod. This field will only apply to + // volume types which support fsGroup based ownership(and permissions). + // It will have no effect on ephemeral volume types such as: secret, configmaps + // and emptydir. + // Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. + // Note that this field cannot be set when spec.os.name is windows. + // +optional + FSGroupChangePolicy *corev1.PodFSGroupChangePolicy `json:"fsGroupChangePolicy,omitempty"` + // The seccomp options to use by the containers in this pod. + // Note that this field cannot be set when spec.os.name is windows. + // +optional + SeccompProfile *corev1.SeccompProfile `json:"seccompProfile,omitempty"` +} + // CNAMEStrategy configures how the DNS01 provider should handle CNAME records // when found in DNS zones. // By default, the None strategy will be applied (i.e. do not follow CNAMEs). @@ -478,6 +562,10 @@ type ACMEIssuerDNS01ProviderDigitalOcean struct { // ACMEIssuerDNS01ProviderRoute53 is a structure containing the Route 53 // configuration for AWS type ACMEIssuerDNS01ProviderRoute53 struct { + // Auth configures how cert-manager authenticates. + // +optional + Auth *Route53Auth `json:"auth,omitempty"` + // The AccessKeyID is used for authentication. // Cannot be set when SecretAccessKeyID is set. // If neither the Access Key nor Key ID are set, we fall-back to using env @@ -507,29 +595,88 @@ type ACMEIssuerDNS01ProviderRoute53 struct { // +optional Role string `json:"role,omitempty"` - // If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call. + // If set, the provider will manage only this zone in Route53 and will not do a lookup using the route53:ListHostedZonesByName api call. // +optional HostedZoneID string `json:"hostedZoneID,omitempty"` - // Always set the region when using AccessKeyID and SecretAccessKey - Region string `json:"region"` + // Override the AWS region. + // + // Route53 is a global service and does not have regional endpoints but the + // region specified here (or via environment variables) is used as a hint to + // help compute the correct AWS credential scope and partition when it + // connects to Route53. See: + // - [Amazon Route 53 endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/r53.html) + // - [Global services](https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/global-services.html) + // + // If you omit this region field, cert-manager will use the region from + // AWS_REGION and AWS_DEFAULT_REGION environment variables, if they are set + // in the cert-manager controller Pod. + // + // The `region` field is not needed if you use [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html). + // Instead an AWS_REGION environment variable is added to the cert-manager controller Pod by: + // [Amazon EKS Pod Identity Webhook](https://github.com/aws/amazon-eks-pod-identity-webhook). + // In this case this `region` field value is ignored. + // + // The `region` field is not needed if you use [EKS Pod Identities](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html). + // Instead an AWS_REGION environment variable is added to the cert-manager controller Pod by: + // [Amazon EKS Pod Identity Agent](https://github.com/aws/eks-pod-identity-agent), + // In this case this `region` field value is ignored. + // + // +optional + Region string `json:"region,omitempty"` +} + +// Route53Auth is configuration used to authenticate with a Route53. +type Route53Auth struct { + // Kubernetes authenticates with Route53 using AssumeRoleWithWebIdentity + // by passing a bound ServiceAccount token. + Kubernetes *Route53KubernetesAuth `json:"kubernetes"` +} + +// Route53KubernetesAuth is a configuration to authenticate against Route53 +// using a bound Kubernetes ServiceAccount token. +type Route53KubernetesAuth struct { + // A reference to a service account that will be used to request a bound + // token (also known as "projected token"). To use this field, you must + // configure an RBAC rule to let cert-manager request a token. + ServiceAccountRef *ServiceAccountRef `json:"serviceAccountRef"` +} + +// ServiceAccountRef is a service account used by cert-manager to request a +// token. The expiration of the token is also set by cert-manager to 10 minutes. +type ServiceAccountRef struct { + // Name of the ServiceAccount used to request a token. + Name string `json:"name"` + + // TokenAudiences is an optional list of audiences to include in the + // token passed to AWS. The default token consisting of the issuer's namespace + // and name is always included. + // If unset the audience defaults to `sts.amazonaws.com`. + // +optional + TokenAudiences []string `json:"audiences,omitempty"` } // ACMEIssuerDNS01ProviderAzureDNS is a structure containing the // configuration for Azure DNS type ACMEIssuerDNS01ProviderAzureDNS struct { - // if both this and ClientSecret are left unset MSI will be used + // Auth: Azure Service Principal: + // The ClientID of the Azure Service Principal used to authenticate with Azure DNS. + // If set, ClientSecret and TenantID must also be set. // +optional ClientID string `json:"clientID,omitempty"` - // if both this and ClientID are left unset MSI will be used + // Auth: Azure Service Principal: + // A reference to a Secret containing the password associated with the Service Principal. + // If set, ClientID and TenantID must also be set. // +optional ClientSecret *cmmeta.SecretKeySelector `json:"clientSecretSecretRef,omitempty"` // ID of the Azure subscription SubscriptionID string `json:"subscriptionID"` - // when specifying ClientID and ClientSecret then this field is also needed + // Auth: Azure Service Principal: + // The TenantID of the Azure Service Principal used to authenticate with Azure DNS. + // If set, ClientID and ClientSecret must also be set. // +optional TenantID string `json:"tenantID,omitempty"` @@ -544,19 +691,29 @@ type ACMEIssuerDNS01ProviderAzureDNS struct { // +optional Environment AzureDNSEnvironment `json:"environment,omitempty"` - // managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID + // Auth: Azure Workload Identity or Azure Managed Service Identity: + // Settings to enable Azure Workload Identity or Azure Managed Service Identity + // If set, ClientID, ClientSecret and TenantID must not be set. // +optional ManagedIdentity *AzureManagedIdentity `json:"managedIdentity,omitempty"` } +// AzureManagedIdentity contains the configuration for Azure Workload Identity or Azure Managed Service Identity +// If the AZURE_FEDERATED_TOKEN_FILE environment variable is set, the Azure Workload Identity will be used. +// Otherwise, we fall-back to using Azure Managed Service Identity. type AzureManagedIdentity struct { // client ID of the managed identity, can not be used at the same time as resourceID // +optional ClientID string `json:"clientID,omitempty"` // resource ID of the managed identity, can not be used at the same time as clientID + // Cannot be used for Azure Managed Service Identity // +optional ResourceID string `json:"resourceID,omitempty"` + + // tenant ID of the managed identity, can not be used at the same time as resourceID + // +optional + TenantID string `json:"tenantID,omitempty"` } // +kubebuilder:validation:Enum=AzurePublicCloud;AzureChinaCloud;AzureGermanCloud;AzureUSGovernmentCloud diff --git a/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/types_order.go b/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/types_order.go index e9a50a30134b..f945a43ff00f 100644 --- a/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/types_order.go +++ b/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/types_order.go @@ -223,7 +223,7 @@ const ( Processing State = "processing" // Invalid signifies that an ACME resource is invalid for some reason. - // If an Order is marked 'invalid', one of its validations be have invalid for some reason. + // If an Order is marked 'invalid', one of its validations must be invalid for some reason. // This is a final state. Invalid State = "invalid" diff --git a/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/zz_generated.deepcopy.go b/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/zz_generated.deepcopy.go index b5472216ccd9..09f27f5cc5fd 100644 --- a/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/zz_generated.deepcopy.go +++ b/vendor/github.com/cert-manager/cert-manager/pkg/apis/acme/v1/zz_generated.deepcopy.go @@ -27,7 +27,7 @@ import ( apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" - v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" + apisv1 "sigs.k8s.io/gateway-api/apis/v1" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -202,11 +202,16 @@ func (in *ACMEChallengeSolverHTTP01GatewayHTTPRoute) DeepCopyInto(out *ACMEChall } if in.ParentRefs != nil { in, out := &in.ParentRefs, &out.ParentRefs - *out = make([]v1beta1.ParentReference, len(*in)) + *out = make([]apisv1.ParentReference, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.PodTemplate != nil { + in, out := &in.PodTemplate, &out.PodTemplate + *out = new(ACMEChallengeSolverHTTP01IngressPodTemplate) + (*in).DeepCopyInto(*out) + } return } @@ -316,6 +321,67 @@ func (in *ACMEChallengeSolverHTTP01IngressPodObjectMeta) DeepCopy() *ACMEChallen return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ACMEChallengeSolverHTTP01IngressPodSecurityContext) DeepCopyInto(out *ACMEChallengeSolverHTTP01IngressPodSecurityContext) { + *out = *in + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(corev1.SELinuxOptions) + **out = **in + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + *out = new(int64) + **out = **in + } + if in.RunAsGroup != nil { + in, out := &in.RunAsGroup, &out.RunAsGroup + *out = new(int64) + **out = **in + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + *out = new(bool) + **out = **in + } + if in.SupplementalGroups != nil { + in, out := &in.SupplementalGroups, &out.SupplementalGroups + *out = make([]int64, len(*in)) + copy(*out, *in) + } + if in.FSGroup != nil { + in, out := &in.FSGroup, &out.FSGroup + *out = new(int64) + **out = **in + } + if in.Sysctls != nil { + in, out := &in.Sysctls, &out.Sysctls + *out = make([]corev1.Sysctl, len(*in)) + copy(*out, *in) + } + if in.FSGroupChangePolicy != nil { + in, out := &in.FSGroupChangePolicy, &out.FSGroupChangePolicy + *out = new(corev1.PodFSGroupChangePolicy) + **out = **in + } + if in.SeccompProfile != nil { + in, out := &in.SeccompProfile, &out.SeccompProfile + *out = new(corev1.SeccompProfile) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ACMEChallengeSolverHTTP01IngressPodSecurityContext. +func (in *ACMEChallengeSolverHTTP01IngressPodSecurityContext) DeepCopy() *ACMEChallengeSolverHTTP01IngressPodSecurityContext { + if in == nil { + return nil + } + out := new(ACMEChallengeSolverHTTP01IngressPodSecurityContext) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ACMEChallengeSolverHTTP01IngressPodSpec) DeepCopyInto(out *ACMEChallengeSolverHTTP01IngressPodSpec) { *out = *in @@ -343,6 +409,11 @@ func (in *ACMEChallengeSolverHTTP01IngressPodSpec) DeepCopyInto(out *ACMEChallen *out = make([]corev1.LocalObjectReference, len(*in)) copy(*out, *in) } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(ACMEChallengeSolverHTTP01IngressPodSecurityContext) + (*in).DeepCopyInto(*out) + } return } @@ -588,6 +659,11 @@ func (in *ACMEIssuerDNS01ProviderRFC2136) DeepCopy() *ACMEIssuerDNS01ProviderRFC // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ACMEIssuerDNS01ProviderRoute53) DeepCopyInto(out *ACMEIssuerDNS01ProviderRoute53) { *out = *in + if in.Auth != nil { + in, out := &in.Auth, &out.Auth + *out = new(Route53Auth) + (*in).DeepCopyInto(*out) + } if in.SecretAccessKeyID != nil { in, out := &in.SecretAccessKeyID, &out.SecretAccessKeyID *out = new(metav1.SecretKeySelector) @@ -917,3 +993,66 @@ func (in *OrderStatus) DeepCopy() *OrderStatus { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Route53Auth) DeepCopyInto(out *Route53Auth) { + *out = *in + if in.Kubernetes != nil { + in, out := &in.Kubernetes, &out.Kubernetes + *out = new(Route53KubernetesAuth) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Route53Auth. +func (in *Route53Auth) DeepCopy() *Route53Auth { + if in == nil { + return nil + } + out := new(Route53Auth) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Route53KubernetesAuth) DeepCopyInto(out *Route53KubernetesAuth) { + *out = *in + if in.ServiceAccountRef != nil { + in, out := &in.ServiceAccountRef, &out.ServiceAccountRef + *out = new(ServiceAccountRef) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Route53KubernetesAuth. +func (in *Route53KubernetesAuth) DeepCopy() *Route53KubernetesAuth { + if in == nil { + return nil + } + out := new(Route53KubernetesAuth) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountRef) DeepCopyInto(out *ServiceAccountRef) { + *out = *in + if in.TokenAudiences != nil { + in, out := &in.TokenAudiences, &out.TokenAudiences + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountRef. +func (in *ServiceAccountRef) DeepCopy() *ServiceAccountRef { + if in == nil { + return nil + } + out := new(ServiceAccountRef) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/const.go b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/const.go index 7b8a8b0b6789..9d61baebaf2a 100644 --- a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/const.go +++ b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/const.go @@ -40,4 +40,9 @@ const ( // (/v1/auth/kubernetes). The endpoint will then be called at `/login`, so // left as the default, `/v1/auth/kubernetes/login` will be called. DefaultVaultKubernetesAuthMountPath = "/v1/auth/kubernetes" + + // Default mount path location for client certificate authentication + // (/v1/auth/cert). The endpoint will then be called at `/login`, so + // left as the default, `/v1/auth/cert/login` will be called. + DefaultVaultClientCertificateAuthMountPath = "/v1/auth/cert" ) diff --git a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types.go b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types.go index 276722793e95..4b0c35a785e8 100644 --- a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types.go +++ b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types.go @@ -50,6 +50,9 @@ const ( // Annotation key for certificate renewBefore. RenewBeforeAnnotationKey = "cert-manager.io/renew-before" + // Annotation key for certificate renewBeforePercentage. + RenewBeforePercentageAnnotationKey = "cert-manager.io/renew-before-percentage" + // Annotation key for emails subjectAltNames. EmailsAnnotationKey = "cert-manager.io/email-sans" @@ -145,6 +148,10 @@ const ( // controller only processes Ingresses with this annotation either unset, or // set to either the configured value or the empty string. IngressClassAnnotationKey = "kubernetes.io/ingress.class" + + // IngressSecretTemplate can be used to set the secretTemplate field in the generated Certificate. + // The value is a JSON representation of secretTemplate and must not have any unknown fields. + IngressSecretTemplate = "cert-manager.io/secret-template" ) // Annotation names for CertificateRequests @@ -287,6 +294,9 @@ const ( JKSSecretKey = "keystore.jks" // Data Entry Name in the Secret resource for JKS containing Certificate Authority JKSTruststoreKey = "truststore.jks" + + // The password used to encrypt the keystore and truststore + KeystorePassword = "keystorePassword" ) // DefaultKeyUsages contains the default list of key usages diff --git a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_certificate.go b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_certificate.go index 64e789443bb0..89979e7accf6 100644 --- a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_certificate.go +++ b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_certificate.go @@ -22,7 +22,7 @@ import ( cmmeta "github.com/cert-manager/cert-manager/pkg/apis/meta/v1" ) -// NOTE: Be mindful of adding OpenAPI validation- see https://github.com/cert-manager/cert-manager/issues/3644 +// NOTE: Be mindful of adding OpenAPI validation - see https://github.com/cert-manager/cert-manager/issues/3644 // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object @@ -128,9 +128,6 @@ type CertificateSpec struct { // More info: https://github.com/cert-manager/cert-manager/issues/4424 // // Cannot be set if the `subject` or `commonName` field is set. - // This is an Alpha Feature and is only enabled with the - // `--feature-gates=LiteralCertificateSubject=true` option set on both - // the controller and webhook components. // +optional LiteralSubject string `json:"literalSubject,omitempty"` @@ -167,9 +164,27 @@ type CertificateSpec struct { // If unset, this defaults to 1/3 of the issued certificate's lifetime. // Minimum accepted value is 5 minutes. // Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration. + // Cannot be set if the `renewBeforePercentage` field is set. // +optional RenewBefore *metav1.Duration `json:"renewBefore,omitempty"` + // `renewBeforePercentage` is like `renewBefore`, except it is a relative percentage + // rather than an absolute duration. For example, if a certificate is valid for 60 + // minutes, and `renewBeforePercentage=25`, cert-manager will begin to attempt to + // renew the certificate 45 minutes after it was issued (i.e. when there are 15 + // minutes (25%) remaining until the certificate is no longer valid). + // + // NOTE: The actual lifetime of the issued certificate is used to determine the + // renewal time. If an issuer returns a certificate with a different lifetime than + // the one requested, cert-manager will use the lifetime of the issued certificate. + // + // Value must be an integer in the range (0,100). The minimum effective + // `renewBefore` derived from the `renewBeforePercentage` and `duration` fields is 5 + // minutes. + // Cannot be set if the `renewBefore` field is set. + // +optional + RenewBeforePercentage *int32 `json:"renewBeforePercentage,omitempty"` + // Requested DNS subject alternative names. // +optional DNSNames []string `json:"dnsNames,omitempty"` @@ -182,6 +197,13 @@ type CertificateSpec struct { // +optional URIs []string `json:"uris,omitempty"` + // `otherNames` is an escape hatch for SAN that allows any type. We currently restrict the support to string like otherNames, cf RFC 5280 p 37 + // Any UTF8 String valued otherName can be passed with by setting the keys oid: x.x.x.x and UTF8Value: somevalue for `otherName`. + // Most commonly this would be UPN set with oid: 1.3.6.1.4.1.311.20.2.3 + // You should ensure that any OID passed is valid for the UTF8String type as we do not explicitly validate this. + // +optional + OtherNames []OtherName `json:"otherNames,omitempty"` + // Requested email subject alternative names. // +optional EmailAddresses []string `json:"emailAddresses,omitempty"` @@ -258,11 +280,31 @@ type CertificateSpec struct { // Defines extra output formats of the private key and signed certificate chain // to be written to this Certificate's target Secret. // - // This is an Alpha Feature and is only enabled with the - // `--feature-gates=AdditionalCertificateOutputFormats=true` option set on both + // This is a Beta Feature enabled by default. It can be disabled with the + // `--feature-gates=AdditionalCertificateOutputFormats=false` option set on both // the controller and webhook components. // +optional AdditionalOutputFormats []CertificateAdditionalOutputFormat `json:"additionalOutputFormats,omitempty"` + + // x.509 certificate NameConstraint extension which MUST NOT be used in a non-CA certificate. + // More Info: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10 + // + // This is an Alpha Feature and is only enabled with the + // `--feature-gates=NameConstraints=true` option set on both + // the controller and webhook components. + // +optional + NameConstraints *NameConstraints `json:"nameConstraints,omitempty"` +} + +type OtherName struct { + // OID is the object identifier for the otherName SAN. + // The object identifier must be expressed as a dotted string, for + // example, "1.2.840.113556.1.4.221". + OID string `json:"oid,omitempty"` + + // utf8Value is the string value of the otherName SAN. + // The utf8Value accepts any valid UTF8 string to set as value for the otherName SAN. + UTF8Value string `json:"utf8Value,omitempty"` } // CertificatePrivateKey contains configuration options for private keys @@ -274,7 +316,7 @@ type CertificatePrivateKey struct { // re-issuance is being processed. // // If set to `Never`, a private key will only be generated if one does not - // already exist in the target `spec.secretName`. If one does exists but it + // already exist in the target `spec.secretName`. If one does exist but it // does not have the correct algorithm or size, a warning will be raised // to await user intervention. // If set to `Always`, a private key matching the specified requirements @@ -323,7 +365,7 @@ type PrivateKeyRotationPolicy string var ( // RotationPolicyNever means a private key will only be generated if one // does not already exist in the target `spec.secretName`. - // If one does exists but it does not have the correct algorithm or size, + // If one does exist but it does not have the correct algorithm or size, // a warning will be raised to await user intervention. RotationPolicyNever PrivateKeyRotationPolicy = "Never" @@ -416,13 +458,13 @@ type CertificateKeystores struct { PKCS12 *PKCS12Keystore `json:"pkcs12,omitempty"` } -// JKS configures options for storing a JKS keystore in the `spec.secretName` -// Secret resource. +// JKS configures options for storing a JKS keystore in the target secret. +// Either PasswordSecretRef or Password must be provided. type JKSKeystore struct { // Create enables JKS keystore creation for the Certificate. // If true, a file named `keystore.jks` will be created in the target // Secret resource, encrypted using the password stored in - // `passwordSecretRef`. + // `passwordSecretRef` or `password`. // The keystore file will be updated immediately. // If the issuer provided a CA certificate, a file named `truststore.jks` // will also be created in the target Secret resource, encrypted using the @@ -430,9 +472,23 @@ type JKSKeystore struct { // containing the issuing Certificate Authority Create bool `json:"create"` - // PasswordSecretRef is a reference to a key in a Secret resource + // Alias specifies the alias of the key in the keystore, required by the JKS format. + // If not provided, the default alias `certificate` will be used. + // +optional + Alias *string `json:"alias,omitempty"` + + // PasswordSecretRef is a reference to a non-empty key in a Secret resource // containing the password used to encrypt the JKS keystore. - PasswordSecretRef cmmeta.SecretKeySelector `json:"passwordSecretRef"` + // Mutually exclusive with password. + // One of password or passwordSecretRef must provide a password with a non-zero length. + // +optional + PasswordSecretRef cmmeta.SecretKeySelector `json:"passwordSecretRef,omitempty"` + + // Password provides a literal password used to encrypt the JKS keystore. + // Mutually exclusive with passwordSecretRef. + // One of password or passwordSecretRef must provide a password with a non-zero length. + // +optional + Password *string `json:"password,omitempty"` } // PKCS12 configures options for storing a PKCS12 keystore in the @@ -441,7 +497,7 @@ type PKCS12Keystore struct { // Create enables PKCS12 keystore creation for the Certificate. // If true, a file named `keystore.p12` will be created in the target // Secret resource, encrypted using the password stored in - // `passwordSecretRef`. + // `passwordSecretRef` or in `password`. // The keystore file will be updated immediately. // If the issuer provided a CA certificate, a file named `truststore.p12` will // also be created in the target Secret resource, encrypted using the @@ -449,11 +505,46 @@ type PKCS12Keystore struct { // Authority Create bool `json:"create"` - // PasswordSecretRef is a reference to a key in a Secret resource - // containing the password used to encrypt the PKCS12 keystore. - PasswordSecretRef cmmeta.SecretKeySelector `json:"passwordSecretRef"` + // Profile specifies the key and certificate encryption algorithms and the HMAC algorithm + // used to create the PKCS12 keystore. Default value is `LegacyRC2` for backward compatibility. + // + // If provided, allowed values are: + // `LegacyRC2`: Deprecated. Not supported by default in OpenSSL 3 or Java 20. + // `LegacyDES`: Less secure algorithm. Use this option for maximal compatibility. + // `Modern2023`: Secure algorithm. Use this option in case you have to always use secure algorithms + // (eg. because of company policy). Please note that the security of the algorithm is not that important + // in reality, because the unencrypted certificate and private key are also stored in the Secret. + // +optional + Profile PKCS12Profile `json:"profile,omitempty"` + + // PasswordSecretRef is a reference to a non-empty key in a Secret resource + // containing the password used to encrypt the PKCS#12 keystore. + // Mutually exclusive with password. + // One of password or passwordSecretRef must provide a password with a non-zero length. + // +optional + PasswordSecretRef cmmeta.SecretKeySelector `json:"passwordSecretRef,omitempty"` + + // Password provides a literal password used to encrypt the PKCS#12 keystore. + // Mutually exclusive with passwordSecretRef. + // One of password or passwordSecretRef must provide a password with a non-zero length. + // +optional + Password *string `json:"password,omitempty"` } +// +kubebuilder:validation:Enum=LegacyRC2;LegacyDES;Modern2023 +type PKCS12Profile string + +const ( + // see: https://pkg.go.dev/software.sslmate.com/src/go-pkcs12#LegacyRC2 + LegacyRC2PKCS12Profile PKCS12Profile = "LegacyRC2" + + // see: https://pkg.go.dev/software.sslmate.com/src/go-pkcs12#LegacyDES + LegacyDESPKCS12Profile PKCS12Profile = "LegacyDES" + + // see: https://pkg.go.dev/software.sslmate.com/src/go-pkcs12#Modern2023 + Modern2023PKCS12Profile PKCS12Profile = "Modern2023" +) + // CertificateStatus defines the observed state of Certificate type CertificateStatus struct { // List of status conditions to indicate the status of certificates. @@ -463,7 +554,7 @@ type CertificateStatus struct { // +optional Conditions []CertificateCondition `json:"conditions,omitempty"` - // LastFailureTime is set only if the lastest issuance for this + // LastFailureTime is set only if the latest issuance for this // Certificate failed and contains the time of the failure. If an // issuance has failed, the delay till the next issuance will be // calculated using formula time.Hour * 2 ^ (failedIssuanceAttempts - @@ -522,7 +613,7 @@ type CertificateStatus struct { FailedIssuanceAttempts *int `json:"failedIssuanceAttempts,omitempty"` } -// CertificateCondition contains condition information for an Certificate. +// CertificateCondition contains condition information for a Certificate. type CertificateCondition struct { // Type of the condition, known values are (`Ready`, `Issuing`). Type CertificateConditionType `json:"type"` @@ -554,7 +645,7 @@ type CertificateCondition struct { ObservedGeneration int64 `json:"observedGeneration,omitempty"` } -// CertificateConditionType represents an Certificate condition value. +// CertificateConditionType represents a Certificate condition value. type CertificateConditionType string const ( @@ -596,3 +687,41 @@ type CertificateSecretTemplate struct { // +optional Labels map[string]string `json:"labels,omitempty"` } + +// NameConstraints is a type to represent x509 NameConstraints +type NameConstraints struct { + // if true then the name constraints are marked critical. + // + // +optional + Critical bool `json:"critical,omitempty"` + // Permitted contains the constraints in which the names must be located. + // + // +optional + Permitted *NameConstraintItem `json:"permitted,omitempty"` + // Excluded contains the constraints which must be disallowed. Any name matching a + // restriction in the excluded field is invalid regardless + // of information appearing in the permitted + // + // +optional + Excluded *NameConstraintItem `json:"excluded,omitempty"` +} + +type NameConstraintItem struct { + // DNSDomains is a list of DNS domains that are permitted or excluded. + // + // +optional + DNSDomains []string `json:"dnsDomains,omitempty"` + // IPRanges is a list of IP Ranges that are permitted or excluded. + // This should be a valid CIDR notation. + // + // +optional + IPRanges []string `json:"ipRanges,omitempty"` + // EmailAddresses is a list of Email Addresses that are permitted or excluded. + // + // +optional + EmailAddresses []string `json:"emailAddresses,omitempty"` + // URIDomains is a list of URI domains that are permitted or excluded. + // + // +optional + URIDomains []string `json:"uriDomains,omitempty"` +} diff --git a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_certificaterequest.go b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_certificaterequest.go index 59797c76c754..8f31d84c0a28 100644 --- a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_certificaterequest.go +++ b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_certificaterequest.go @@ -220,7 +220,7 @@ type CertificateRequestCondition struct { Message string `json:"message,omitempty"` } -// CertificateRequestConditionType represents an Certificate condition value. +// CertificateRequestConditionType represents a Certificate condition value. type CertificateRequestConditionType string const ( diff --git a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_issuer.go b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_issuer.go index c901d9e7a409..efb1f5286da8 100644 --- a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_issuer.go +++ b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/types_issuer.go @@ -149,9 +149,9 @@ type VenafiTPP struct { // for example: "https://tpp.example.com/vedsdk". URL string `json:"url"` - // CredentialsRef is a reference to a Secret containing the username and - // password for the TPP server. - // The secret must contain two keys, 'username' and 'password'. + // CredentialsRef is a reference to a Secret containing the Venafi TPP API credentials. + // The secret must contain the key 'access-token' for the Access Token Authentication, + // or two keys, 'username' and 'password' for the API Keys Authentication. CredentialsRef cmmeta.LocalObjectReference `json:"credentialsRef"` // Base64-encoded bundle of PEM CAs which will be used to validate the certificate @@ -160,6 +160,14 @@ type VenafiTPP struct { // is used to validate the chain. // +optional CABundle []byte `json:"caBundle,omitempty"` + + // Reference to a Secret containing a base64-encoded bundle of PEM CAs + // which will be used to validate the certificate chain presented by the TPP server. + // Only used if using HTTPS; ignored for HTTP. Mutually exclusive with CABundle. + // If neither CABundle nor CABundleSecretRef is defined, the certificate bundle in + // the cert-manager controller container is used to validate the TLS connection. + // +optional + CABundleSecretRef *cmmeta.SecretKeySelector `json:"caBundleSecretRef,omitempty"` } // VenafiCloud defines connection configuration details for Venafi Cloud @@ -218,10 +226,20 @@ type VaultIssuer struct { // If no key for the Secret is specified, cert-manager will default to 'ca.crt'. // +optional CABundleSecretRef *cmmeta.SecretKeySelector `json:"caBundleSecretRef,omitempty"` + + // Reference to a Secret containing a PEM-encoded Client Certificate to use when the + // Vault server requires mTLS. + // +optional + ClientCertSecretRef *cmmeta.SecretKeySelector `json:"clientCertSecretRef,omitempty"` + + // Reference to a Secret containing a PEM-encoded Client Private Key to use when the + // Vault server requires mTLS. + // +optional + ClientKeySecretRef *cmmeta.SecretKeySelector `json:"clientKeySecretRef,omitempty"` } // VaultAuth is configuration used to authenticate with a Vault server. The -// order of precedence is [`tokenSecretRef`, `appRole` or `kubernetes`]. +// order of precedence is [`tokenSecretRef`, `appRole`, `clientCertificate` or `kubernetes`]. type VaultAuth struct { // TokenSecretRef authenticates with Vault by presenting a token. // +optional @@ -232,6 +250,12 @@ type VaultAuth struct { // +optional AppRole *VaultAppRole `json:"appRole,omitempty"` + // ClientCertificate authenticates with Vault by presenting a client + // certificate during the request's TLS handshake. + // Works only when using HTTPS protocol. + // +optional + ClientCertificate *VaultClientCertificateAuth `json:"clientCertificate,omitempty"` + // Kubernetes authenticates with Vault by passing the ServiceAccount // token stored in the named Secret resource to the Vault server. // +optional @@ -256,6 +280,28 @@ type VaultAppRole struct { SecretRef cmmeta.SecretKeySelector `json:"secretRef"` } +// VaultKubernetesAuth is used to authenticate against Vault using a client +// certificate stored in a Secret. +type VaultClientCertificateAuth struct { + // The Vault mountPath here is the mount path to use when authenticating with + // Vault. For example, setting a value to `/v1/auth/foo`, will use the path + // `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the + // default value "/v1/auth/cert" will be used. + // +optional + Path string `json:"mountPath,omitempty"` + + // Reference to Kubernetes Secret of type "kubernetes.io/tls" (hence containing + // tls.crt and tls.key) used to authenticate to Vault using TLS client + // authentication. + // +optional + SecretName string `json:"secretName,omitempty"` + + // Name of the certificate role to authenticate against. + // If not set, matching any certificate role, if available. + // +optional + Name string `json:"name,omitempty"` +} + // Authenticate against Vault using a Kubernetes ServiceAccount token stored in // a Secret. type VaultKubernetesAuth struct { @@ -287,13 +333,17 @@ type VaultKubernetesAuth struct { } // ServiceAccountRef is a service account used by cert-manager to request a -// token. The audience cannot be configured. The audience is generated by +// token. Default audience is generated by // cert-manager and takes the form `vault://namespace-name/issuer-name` for an // Issuer and `vault://issuer-name` for a ClusterIssuer. The expiration of the // token is also set by cert-manager to 10 minutes. type ServiceAccountRef struct { // Name of the ServiceAccount used to request a token. Name string `json:"name"` + // TokenAudiences is an optional list of extra audiences to include in the token passed to Vault. The default token + // consisting of the issuer's namespace and name is always included. + // +optional + TokenAudiences []string `json:"audiences,omitempty"` } type CAIssuer struct { @@ -314,6 +364,12 @@ type CAIssuer struct { // OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org". // +optional OCSPServers []string `json:"ocspServers,omitempty"` + + // IssuingCertificateURLs is a list of URLs which this issuer should embed into certificates + // it creates. See https://www.rfc-editor.org/rfc/rfc5280#section-4.2.2.1 for more details. + // As an example, such a URL might be "http://ca.domain.com/ca.crt". + // +optional + IssuingCertificateURLs []string `json:"issuingCertificateURLs,omitempty"` } // IssuerStatus contains status information about an Issuer diff --git a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/zz_generated.deepcopy.go b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/zz_generated.deepcopy.go index 8ba5ea3aaf6c..e889ecf1a9ab 100644 --- a/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/zz_generated.deepcopy.go +++ b/vendor/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1/zz_generated.deepcopy.go @@ -41,6 +41,11 @@ func (in *CAIssuer) DeepCopyInto(out *CAIssuer) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.IssuingCertificateURLs != nil { + in, out := &in.IssuingCertificateURLs, &out.IssuingCertificateURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } return } @@ -124,12 +129,12 @@ func (in *CertificateKeystores) DeepCopyInto(out *CertificateKeystores) { if in.JKS != nil { in, out := &in.JKS, &out.JKS *out = new(JKSKeystore) - **out = **in + (*in).DeepCopyInto(*out) } if in.PKCS12 != nil { in, out := &in.PKCS12, &out.PKCS12 *out = new(PKCS12Keystore) - **out = **in + (*in).DeepCopyInto(*out) } return } @@ -411,6 +416,11 @@ func (in *CertificateSpec) DeepCopyInto(out *CertificateSpec) { *out = new(metav1.Duration) **out = **in } + if in.RenewBeforePercentage != nil { + in, out := &in.RenewBeforePercentage, &out.RenewBeforePercentage + *out = new(int32) + **out = **in + } if in.DNSNames != nil { in, out := &in.DNSNames, &out.DNSNames *out = make([]string, len(*in)) @@ -426,6 +436,11 @@ func (in *CertificateSpec) DeepCopyInto(out *CertificateSpec) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.OtherNames != nil { + in, out := &in.OtherNames, &out.OtherNames + *out = make([]OtherName, len(*in)) + copy(*out, *in) + } if in.EmailAddresses != nil { in, out := &in.EmailAddresses, &out.EmailAddresses *out = make([]string, len(*in)) @@ -467,6 +482,11 @@ func (in *CertificateSpec) DeepCopyInto(out *CertificateSpec) { *out = make([]CertificateAdditionalOutputFormat, len(*in)) copy(*out, *in) } + if in.NameConstraints != nil { + in, out := &in.NameConstraints, &out.NameConstraints + *out = new(NameConstraints) + (*in).DeepCopyInto(*out) + } return } @@ -765,7 +785,17 @@ func (in *IssuerStatus) DeepCopy() *IssuerStatus { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *JKSKeystore) DeepCopyInto(out *JKSKeystore) { *out = *in + if in.Alias != nil { + in, out := &in.Alias, &out.Alias + *out = new(string) + **out = **in + } out.PasswordSecretRef = in.PasswordSecretRef + if in.Password != nil { + in, out := &in.Password, &out.Password + *out = new(string) + **out = **in + } return } @@ -779,10 +809,93 @@ func (in *JKSKeystore) DeepCopy() *JKSKeystore { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NameConstraintItem) DeepCopyInto(out *NameConstraintItem) { + *out = *in + if in.DNSDomains != nil { + in, out := &in.DNSDomains, &out.DNSDomains + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.IPRanges != nil { + in, out := &in.IPRanges, &out.IPRanges + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.EmailAddresses != nil { + in, out := &in.EmailAddresses, &out.EmailAddresses + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.URIDomains != nil { + in, out := &in.URIDomains, &out.URIDomains + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NameConstraintItem. +func (in *NameConstraintItem) DeepCopy() *NameConstraintItem { + if in == nil { + return nil + } + out := new(NameConstraintItem) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NameConstraints) DeepCopyInto(out *NameConstraints) { + *out = *in + if in.Permitted != nil { + in, out := &in.Permitted, &out.Permitted + *out = new(NameConstraintItem) + (*in).DeepCopyInto(*out) + } + if in.Excluded != nil { + in, out := &in.Excluded, &out.Excluded + *out = new(NameConstraintItem) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NameConstraints. +func (in *NameConstraints) DeepCopy() *NameConstraints { + if in == nil { + return nil + } + out := new(NameConstraints) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OtherName) DeepCopyInto(out *OtherName) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OtherName. +func (in *OtherName) DeepCopy() *OtherName { + if in == nil { + return nil + } + out := new(OtherName) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PKCS12Keystore) DeepCopyInto(out *PKCS12Keystore) { *out = *in out.PasswordSecretRef = in.PasswordSecretRef + if in.Password != nil { + in, out := &in.Password, &out.Password + *out = new(string) + **out = **in + } return } @@ -820,6 +933,11 @@ func (in *SelfSignedIssuer) DeepCopy() *SelfSignedIssuer { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ServiceAccountRef) DeepCopyInto(out *ServiceAccountRef) { *out = *in + if in.TokenAudiences != nil { + in, out := &in.TokenAudiences, &out.TokenAudiences + *out = make([]string, len(*in)) + copy(*out, *in) + } return } @@ -863,6 +981,11 @@ func (in *VaultAuth) DeepCopyInto(out *VaultAuth) { *out = new(VaultAppRole) **out = **in } + if in.ClientCertificate != nil { + in, out := &in.ClientCertificate, &out.ClientCertificate + *out = new(VaultClientCertificateAuth) + **out = **in + } if in.Kubernetes != nil { in, out := &in.Kubernetes, &out.Kubernetes *out = new(VaultKubernetesAuth) @@ -881,6 +1004,22 @@ func (in *VaultAuth) DeepCopy() *VaultAuth { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VaultClientCertificateAuth) DeepCopyInto(out *VaultClientCertificateAuth) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VaultClientCertificateAuth. +func (in *VaultClientCertificateAuth) DeepCopy() *VaultClientCertificateAuth { + if in == nil { + return nil + } + out := new(VaultClientCertificateAuth) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VaultIssuer) DeepCopyInto(out *VaultIssuer) { *out = *in @@ -895,6 +1034,16 @@ func (in *VaultIssuer) DeepCopyInto(out *VaultIssuer) { *out = new(apismetav1.SecretKeySelector) **out = **in } + if in.ClientCertSecretRef != nil { + in, out := &in.ClientCertSecretRef, &out.ClientCertSecretRef + *out = new(apismetav1.SecretKeySelector) + **out = **in + } + if in.ClientKeySecretRef != nil { + in, out := &in.ClientKeySecretRef, &out.ClientKeySecretRef + *out = new(apismetav1.SecretKeySelector) + **out = **in + } return } @@ -915,7 +1064,7 @@ func (in *VaultKubernetesAuth) DeepCopyInto(out *VaultKubernetesAuth) { if in.ServiceAccountRef != nil { in, out := &in.ServiceAccountRef, &out.ServiceAccountRef *out = new(ServiceAccountRef) - **out = **in + (*in).DeepCopyInto(*out) } return } @@ -982,6 +1131,11 @@ func (in *VenafiTPP) DeepCopyInto(out *VenafiTPP) { *out = make([]byte, len(*in)) copy(*out, *in) } + if in.CABundleSecretRef != nil { + in, out := &in.CABundleSecretRef, &out.CABundleSecretRef + *out = new(apismetav1.SecretKeySelector) + **out = **in + } return } diff --git a/vendor/github.com/containerd/stargz-snapshotter/estargz/build.go b/vendor/github.com/containerd/stargz-snapshotter/estargz/build.go index 0da3efe4c21e..6aba0ef1f692 100644 --- a/vendor/github.com/containerd/stargz-snapshotter/estargz/build.go +++ b/vendor/github.com/containerd/stargz-snapshotter/estargz/build.go @@ -49,6 +49,7 @@ type options struct { missedPrioritizedFiles *[]string compression Compression ctx context.Context + minChunkSize int } type Option func(o *options) error @@ -63,6 +64,7 @@ func WithChunkSize(chunkSize int) Option { // WithCompressionLevel option specifies the gzip compression level. // The default is gzip.BestCompression. +// This option will be ignored if WithCompression option is used. // See also: https://godoc.org/compress/gzip#pkg-constants func WithCompressionLevel(level int) Option { return func(o *options) error { @@ -113,6 +115,18 @@ func WithContext(ctx context.Context) Option { } } +// WithMinChunkSize option specifies the minimal number of bytes of data +// must be written in one gzip stream. +// By increasing this number, one gzip stream can contain multiple files +// and it hopefully leads to smaller result blob. +// NOTE: This adds a TOC property that old reader doesn't understand. +func WithMinChunkSize(minChunkSize int) Option { + return func(o *options) error { + o.minChunkSize = minChunkSize + return nil + } +} + // Blob is an eStargz blob. type Blob struct { io.ReadCloser @@ -180,7 +194,14 @@ func Build(tarBlob *io.SectionReader, opt ...Option) (_ *Blob, rErr error) { if err != nil { return nil, err } - tarParts := divideEntries(entries, runtime.GOMAXPROCS(0)) + var tarParts [][]*entry + if opts.minChunkSize > 0 { + // Each entry needs to know the size of the current gzip stream so they + // cannot be processed in parallel. + tarParts = [][]*entry{entries} + } else { + tarParts = divideEntries(entries, runtime.GOMAXPROCS(0)) + } writers := make([]*Writer, len(tarParts)) payloads := make([]*os.File, len(tarParts)) var mu sync.Mutex @@ -195,6 +216,13 @@ func Build(tarBlob *io.SectionReader, opt ...Option) (_ *Blob, rErr error) { } sw := NewWriterWithCompressor(esgzFile, opts.compression) sw.ChunkSize = opts.chunkSize + sw.MinChunkSize = opts.minChunkSize + if sw.needsOpenGzEntries == nil { + sw.needsOpenGzEntries = make(map[string]struct{}) + } + for _, f := range []string{PrefetchLandmark, NoPrefetchLandmark} { + sw.needsOpenGzEntries[f] = struct{}{} + } if err := sw.AppendTar(readerFromEntries(parts...)); err != nil { return err } @@ -209,7 +237,7 @@ func Build(tarBlob *io.SectionReader, opt ...Option) (_ *Blob, rErr error) { rErr = err return nil, err } - tocAndFooter, tocDgst, err := closeWithCombine(opts.compressionLevel, writers...) + tocAndFooter, tocDgst, err := closeWithCombine(writers...) if err != nil { rErr = err return nil, err @@ -252,7 +280,7 @@ func Build(tarBlob *io.SectionReader, opt ...Option) (_ *Blob, rErr error) { // Writers doesn't write TOC and footer to the underlying writers so they can be // combined into a single eStargz and tocAndFooter returned by this function can // be appended at the tail of that combined blob. -func closeWithCombine(compressionLevel int, ws ...*Writer) (tocAndFooterR io.Reader, tocDgst digest.Digest, err error) { +func closeWithCombine(ws ...*Writer) (tocAndFooterR io.Reader, tocDgst digest.Digest, err error) { if len(ws) == 0 { return nil, "", fmt.Errorf("at least one writer must be passed") } @@ -395,7 +423,7 @@ func readerFromEntries(entries ...*entry) io.Reader { func importTar(in io.ReaderAt) (*tarFile, error) { tf := &tarFile{} - pw, err := newCountReader(in) + pw, err := newCountReadSeeker(in) if err != nil { return nil, fmt.Errorf("failed to make position watcher: %w", err) } @@ -408,9 +436,8 @@ func importTar(in io.ReaderAt) (*tarFile, error) { if err != nil { if err == io.EOF { break - } else { - return nil, fmt.Errorf("failed to parse tar file, %w", err) } + return nil, fmt.Errorf("failed to parse tar file, %w", err) } switch cleanEntryName(h.Name) { case PrefetchLandmark, NoPrefetchLandmark: @@ -571,19 +598,19 @@ func (tf *tempFiles) cleanupAll() error { return errorutil.Aggregate(allErr) } -func newCountReader(r io.ReaderAt) (*countReader, error) { +func newCountReadSeeker(r io.ReaderAt) (*countReadSeeker, error) { pos := int64(0) - return &countReader{r: r, cPos: &pos}, nil + return &countReadSeeker{r: r, cPos: &pos}, nil } -type countReader struct { +type countReadSeeker struct { r io.ReaderAt cPos *int64 mu sync.Mutex } -func (cr *countReader) Read(p []byte) (int, error) { +func (cr *countReadSeeker) Read(p []byte) (int, error) { cr.mu.Lock() defer cr.mu.Unlock() @@ -594,7 +621,7 @@ func (cr *countReader) Read(p []byte) (int, error) { return n, err } -func (cr *countReader) Seek(offset int64, whence int) (int64, error) { +func (cr *countReadSeeker) Seek(offset int64, whence int) (int64, error) { cr.mu.Lock() defer cr.mu.Unlock() @@ -615,7 +642,7 @@ func (cr *countReader) Seek(offset int64, whence int) (int64, error) { return offset, nil } -func (cr *countReader) currentPos() int64 { +func (cr *countReadSeeker) currentPos() int64 { cr.mu.Lock() defer cr.mu.Unlock() diff --git a/vendor/github.com/containerd/stargz-snapshotter/estargz/estargz.go b/vendor/github.com/containerd/stargz-snapshotter/estargz/estargz.go index 921e59ec6efc..f4d55465584e 100644 --- a/vendor/github.com/containerd/stargz-snapshotter/estargz/estargz.go +++ b/vendor/github.com/containerd/stargz-snapshotter/estargz/estargz.go @@ -150,10 +150,10 @@ func Open(sr *io.SectionReader, opt ...OpenOption) (*Reader, error) { allErr = append(allErr, err) continue } - if tocSize <= 0 { + if tocOffset >= 0 && tocSize <= 0 { tocSize = sr.Size() - tocOffset - fSize } - if tocSize < int64(len(maybeTocBytes)) { + if tocOffset >= 0 && tocSize < int64(len(maybeTocBytes)) { maybeTocBytes = maybeTocBytes[:tocSize] } r, err = parseTOC(d, sr, tocOffset, tocSize, maybeTocBytes, opts) @@ -207,8 +207,16 @@ func (r *Reader) initFields() error { uname := map[int]string{} gname := map[int]string{} var lastRegEnt *TOCEntry - for _, ent := range r.toc.Entries { + var chunkTopIndex int + for i, ent := range r.toc.Entries { ent.Name = cleanEntryName(ent.Name) + switch ent.Type { + case "reg", "chunk": + if ent.Offset != r.toc.Entries[chunkTopIndex].Offset { + chunkTopIndex = i + } + ent.chunkTopIndex = chunkTopIndex + } if ent.Type == "reg" { lastRegEnt = ent } @@ -294,7 +302,7 @@ func (r *Reader) initFields() error { if e.isDataType() { e.nextOffset = lastOffset } - if e.Offset != 0 { + if e.Offset != 0 && e.InnerOffset == 0 { lastOffset = e.Offset } } @@ -488,6 +496,14 @@ func (r *Reader) Lookup(path string) (e *TOCEntry, ok bool) { // // Name must be absolute path or one that is relative to root. func (r *Reader) OpenFile(name string) (*io.SectionReader, error) { + fr, err := r.newFileReader(name) + if err != nil { + return nil, err + } + return io.NewSectionReader(fr, 0, fr.size), nil +} + +func (r *Reader) newFileReader(name string) (*fileReader, error) { name = cleanEntryName(name) ent, ok := r.Lookup(name) if !ok { @@ -505,11 +521,19 @@ func (r *Reader) OpenFile(name string) (*io.SectionReader, error) { Err: errors.New("not a regular file"), } } - fr := &fileReader{ + return &fileReader{ r: r, size: ent.Size, ents: r.getChunks(ent), + }, nil +} + +func (r *Reader) OpenFileWithPreReader(name string, preRead func(*TOCEntry, io.Reader) error) (*io.SectionReader, error) { + fr, err := r.newFileReader(name) + if err != nil { + return nil, err } + fr.preRead = preRead return io.NewSectionReader(fr, 0, fr.size), nil } @@ -521,9 +545,10 @@ func (r *Reader) getChunks(ent *TOCEntry) []*TOCEntry { } type fileReader struct { - r *Reader - size int64 - ents []*TOCEntry // 1 or more reg/chunk entries + r *Reader + size int64 + ents []*TOCEntry // 1 or more reg/chunk entries + preRead func(*TOCEntry, io.Reader) error } func (fr *fileReader) ReadAt(p []byte, off int64) (n int, err error) { @@ -578,10 +603,48 @@ func (fr *fileReader) ReadAt(p []byte, off int64) (n int, err error) { return 0, fmt.Errorf("fileReader.ReadAt.decompressor.Reader: %v", err) } defer dr.Close() - if n, err := io.CopyN(io.Discard, dr, off); n != off || err != nil { - return 0, fmt.Errorf("discard of %d bytes = %v, %v", off, n, err) + + if fr.preRead == nil { + if n, err := io.CopyN(io.Discard, dr, ent.InnerOffset+off); n != ent.InnerOffset+off || err != nil { + return 0, fmt.Errorf("discard of %d bytes != %v, %v", ent.InnerOffset+off, n, err) + } + return io.ReadFull(dr, p) + } + + var retN int + var retErr error + var found bool + var nr int64 + for _, e := range fr.r.toc.Entries[ent.chunkTopIndex:] { + if !e.isDataType() { + continue + } + if e.Offset != fr.r.toc.Entries[ent.chunkTopIndex].Offset { + break + } + if in, err := io.CopyN(io.Discard, dr, e.InnerOffset-nr); err != nil || in != e.InnerOffset-nr { + return 0, fmt.Errorf("discard of remaining %d bytes != %v, %v", e.InnerOffset-nr, in, err) + } + nr = e.InnerOffset + if e == ent { + found = true + if n, err := io.CopyN(io.Discard, dr, off); n != off || err != nil { + return 0, fmt.Errorf("discard of offset %d bytes != %v, %v", off, n, err) + } + retN, retErr = io.ReadFull(dr, p) + nr += off + int64(retN) + continue + } + cr := &countReader{r: io.LimitReader(dr, e.ChunkSize)} + if err := fr.preRead(e, cr); err != nil { + return 0, fmt.Errorf("failed to pre read: %w", err) + } + nr += cr.n + } + if !found { + return 0, fmt.Errorf("fileReader.ReadAt: target entry not found") } - return io.ReadFull(dr, p) + return retN, retErr } // A Writer writes stargz files. @@ -599,11 +662,20 @@ type Writer struct { lastGroupname map[int]string compressor Compressor + uncompressedCounter *countWriteFlusher + // ChunkSize optionally controls the maximum number of bytes // of data of a regular file that can be written in one gzip // stream before a new gzip stream is started. // Zero means to use a default, currently 4 MiB. ChunkSize int + + // MinChunkSize optionally controls the minimum number of bytes + // of data must be written in one gzip stream before a new gzip + // NOTE: This adds a TOC property that stargz snapshotter < v0.13.0 doesn't understand. + MinChunkSize int + + needsOpenGzEntries map[string]struct{} } // currentCompressionWriter writes to the current w.gz field, which can @@ -646,6 +718,9 @@ func Unpack(sr *io.SectionReader, c Decompressor) (io.ReadCloser, error) { if err != nil { return nil, fmt.Errorf("failed to parse footer: %w", err) } + if blobPayloadSize < 0 { + blobPayloadSize = sr.Size() + } return c.Reader(io.LimitReader(sr, blobPayloadSize)) } @@ -672,11 +747,12 @@ func NewWriterWithCompressor(w io.Writer, c Compressor) *Writer { bw := bufio.NewWriter(w) cw := &countWriter{w: bw} return &Writer{ - bw: bw, - cw: cw, - toc: &JTOC{Version: 1}, - diffHash: sha256.New(), - compressor: c, + bw: bw, + cw: cw, + toc: &JTOC{Version: 1}, + diffHash: sha256.New(), + compressor: c, + uncompressedCounter: &countWriteFlusher{}, } } @@ -717,6 +793,20 @@ func (w *Writer) closeGz() error { return nil } +func (w *Writer) flushGz() error { + if w.closed { + return errors.New("flush on closed Writer") + } + if w.gz != nil { + if f, ok := w.gz.(interface { + Flush() error + }); ok { + return f.Flush() + } + } + return nil +} + // nameIfChanged returns name, unless it was the already the value of (*mp)[id], // in which case it returns the empty string. func (w *Writer) nameIfChanged(mp *map[int]string, id int, name string) string { @@ -736,6 +826,9 @@ func (w *Writer) nameIfChanged(mp *map[int]string, id int, name string) string { func (w *Writer) condOpenGz() (err error) { if w.gz == nil { w.gz, err = w.compressor.Writer(w.cw) + if w.gz != nil { + w.gz = w.uncompressedCounter.register(w.gz) + } } return } @@ -784,6 +877,8 @@ func (w *Writer) appendTar(r io.Reader, lossless bool) error { if lossless { tr.RawAccounting = true } + prevOffset := w.cw.n + var prevOffsetUncompressed int64 for { h, err := tr.Next() if err == io.EOF { @@ -883,10 +978,6 @@ func (w *Writer) appendTar(r io.Reader, lossless bool) error { totalSize := ent.Size // save it before we destroy ent tee := io.TeeReader(tr, payloadDigest.Hash()) for written < totalSize { - if err := w.closeGz(); err != nil { - return err - } - chunkSize := int64(w.chunkSize()) remain := totalSize - written if remain < chunkSize { @@ -894,7 +985,23 @@ func (w *Writer) appendTar(r io.Reader, lossless bool) error { } else { ent.ChunkSize = chunkSize } - ent.Offset = w.cw.n + + // We flush the underlying compression writer here to correctly calculate "w.cw.n". + if err := w.flushGz(); err != nil { + return err + } + if w.needsOpenGz(ent) || w.cw.n-prevOffset >= int64(w.MinChunkSize) { + if err := w.closeGz(); err != nil { + return err + } + ent.Offset = w.cw.n + prevOffset = ent.Offset + prevOffsetUncompressed = w.uncompressedCounter.n + } else { + ent.Offset = prevOffset + ent.InnerOffset = w.uncompressedCounter.n - prevOffsetUncompressed + } + ent.ChunkOffset = written chunkDigest := digest.Canonical.Digester() @@ -940,6 +1047,17 @@ func (w *Writer) appendTar(r io.Reader, lossless bool) error { return err } +func (w *Writer) needsOpenGz(ent *TOCEntry) bool { + if ent.Type != "reg" { + return false + } + if w.needsOpenGzEntries == nil { + return false + } + _, ok := w.needsOpenGzEntries[ent.Name] + return ok +} + // DiffID returns the SHA-256 of the uncompressed tar bytes. // It is only valid to call DiffID after Close. func (w *Writer) DiffID() string { @@ -956,6 +1074,28 @@ func maxFooterSize(blobSize int64, decompressors ...Decompressor) (res int64) { } func parseTOC(d Decompressor, sr *io.SectionReader, tocOff, tocSize int64, tocBytes []byte, opts openOpts) (*Reader, error) { + if tocOff < 0 { + // This means that TOC isn't contained in the blob. + // We pass nil reader to ParseTOC and expect that ParseTOC acquire TOC from + // the external location. + start := time.Now() + toc, tocDgst, err := d.ParseTOC(nil) + if err != nil { + return nil, err + } + if opts.telemetry != nil && opts.telemetry.GetTocLatency != nil { + opts.telemetry.GetTocLatency(start) + } + if opts.telemetry != nil && opts.telemetry.DeserializeTocLatency != nil { + opts.telemetry.DeserializeTocLatency(start) + } + return &Reader{ + sr: sr, + toc: toc, + tocDigest: tocDgst, + decompressor: d, + }, nil + } if len(tocBytes) > 0 { start := time.Now() toc, tocDgst, err := d.ParseTOC(bytes.NewReader(tocBytes)) @@ -1021,6 +1161,37 @@ func (cw *countWriter) Write(p []byte) (n int, err error) { return } +type countWriteFlusher struct { + io.WriteCloser + n int64 +} + +func (wc *countWriteFlusher) register(w io.WriteCloser) io.WriteCloser { + wc.WriteCloser = w + return wc +} + +func (wc *countWriteFlusher) Write(p []byte) (n int, err error) { + n, err = wc.WriteCloser.Write(p) + wc.n += int64(n) + return +} + +func (wc *countWriteFlusher) Flush() error { + if f, ok := wc.WriteCloser.(interface { + Flush() error + }); ok { + return f.Flush() + } + return nil +} + +func (wc *countWriteFlusher) Close() error { + err := wc.WriteCloser.Close() + wc.WriteCloser = nil + return err +} + // isGzip reports whether br is positioned right before an upcoming gzip stream. // It does not consume any bytes from br. func isGzip(br *bufio.Reader) bool { @@ -1039,3 +1210,14 @@ func positive(n int64) int64 { } return n } + +type countReader struct { + r io.Reader + n int64 +} + +func (cr *countReader) Read(p []byte) (n int, err error) { + n, err = cr.r.Read(p) + cr.n += int64(n) + return +} diff --git a/vendor/github.com/containerd/stargz-snapshotter/estargz/gzip.go b/vendor/github.com/containerd/stargz-snapshotter/estargz/gzip.go index 591d7a62e117..f24afe32f450 100644 --- a/vendor/github.com/containerd/stargz-snapshotter/estargz/gzip.go +++ b/vendor/github.com/containerd/stargz-snapshotter/estargz/gzip.go @@ -60,7 +60,7 @@ type GzipCompressor struct { compressionLevel int } -func (gc *GzipCompressor) Writer(w io.Writer) (io.WriteCloser, error) { +func (gc *GzipCompressor) Writer(w io.Writer) (WriteFlushCloser, error) { return gzip.NewWriterLevel(w, gc.compressionLevel) } diff --git a/vendor/github.com/containerd/stargz-snapshotter/estargz/testutil.go b/vendor/github.com/containerd/stargz-snapshotter/estargz/testutil.go index 37448cae0855..ba650b4d1d77 100644 --- a/vendor/github.com/containerd/stargz-snapshotter/estargz/testutil.go +++ b/vendor/github.com/containerd/stargz-snapshotter/estargz/testutil.go @@ -26,11 +26,13 @@ import ( "archive/tar" "bytes" "compress/gzip" + "crypto/rand" "crypto/sha256" "encoding/json" "errors" "fmt" "io" + "math/big" "os" "path/filepath" "reflect" @@ -47,18 +49,20 @@ import ( // TestingController is Compression with some helper methods necessary for testing. type TestingController interface { Compression - CountStreams(*testing.T, []byte) int + TestStreams(t *testing.T, b []byte, streams []int64) DiffIDOf(*testing.T, []byte) string String() string } // CompressionTestSuite tests this pkg with controllers can build valid eStargz blobs and parse them. -func CompressionTestSuite(t *testing.T, controllers ...TestingController) { +func CompressionTestSuite(t *testing.T, controllers ...TestingControllerFactory) { t.Run("testBuild", func(t *testing.T) { t.Parallel(); testBuild(t, controllers...) }) t.Run("testDigestAndVerify", func(t *testing.T) { t.Parallel(); testDigestAndVerify(t, controllers...) }) t.Run("testWriteAndOpen", func(t *testing.T) { t.Parallel(); testWriteAndOpen(t, controllers...) }) } +type TestingControllerFactory func() TestingController + const ( uncompressedType int = iota gzipType @@ -75,11 +79,12 @@ var allowedPrefix = [4]string{"", "./", "/", "../"} // testBuild tests the resulting stargz blob built by this pkg has the same // contents as the normal stargz blob. -func testBuild(t *testing.T, controllers ...TestingController) { +func testBuild(t *testing.T, controllers ...TestingControllerFactory) { tests := []struct { - name string - chunkSize int - in []tarEntry + name string + chunkSize int + minChunkSize []int + in []tarEntry }{ { name: "regfiles and directories", @@ -108,11 +113,14 @@ func testBuild(t *testing.T, controllers ...TestingController) { ), }, { - name: "various files", - chunkSize: 4, + name: "various files", + chunkSize: 4, + minChunkSize: []int{0, 64000}, in: tarOf( file("baz.txt", "bazbazbazbazbazbazbaz"), - file("foo.txt", "a"), + file("foo1.txt", "a"), + file("bar/foo2.txt", "b"), + file("foo3.txt", "c"), symlink("barlink", "test/bar.txt"), dir("test/"), dir("dev/"), @@ -144,99 +152,112 @@ func testBuild(t *testing.T, controllers ...TestingController) { }, } for _, tt := range tests { + if len(tt.minChunkSize) == 0 { + tt.minChunkSize = []int{0} + } for _, srcCompression := range srcCompressions { srcCompression := srcCompression - for _, cl := range controllers { - cl := cl + for _, newCL := range controllers { + newCL := newCL for _, srcTarFormat := range []tar.Format{tar.FormatUSTAR, tar.FormatPAX, tar.FormatGNU} { srcTarFormat := srcTarFormat for _, prefix := range allowedPrefix { prefix := prefix - t.Run(tt.name+"-"+fmt.Sprintf("compression=%v,prefix=%q,src=%d,format=%s", cl, prefix, srcCompression, srcTarFormat), func(t *testing.T) { - tarBlob := buildTar(t, tt.in, prefix, srcTarFormat) - // Test divideEntries() - entries, err := sortEntries(tarBlob, nil, nil) // identical order - if err != nil { - t.Fatalf("failed to parse tar: %v", err) - } - var merged []*entry - for _, part := range divideEntries(entries, 4) { - merged = append(merged, part...) - } - if !reflect.DeepEqual(entries, merged) { - for _, e := range entries { - t.Logf("Original: %v", e.header) + for _, minChunkSize := range tt.minChunkSize { + minChunkSize := minChunkSize + t.Run(tt.name+"-"+fmt.Sprintf("compression=%v,prefix=%q,src=%d,format=%s,minChunkSize=%d", newCL(), prefix, srcCompression, srcTarFormat, minChunkSize), func(t *testing.T) { + tarBlob := buildTar(t, tt.in, prefix, srcTarFormat) + // Test divideEntries() + entries, err := sortEntries(tarBlob, nil, nil) // identical order + if err != nil { + t.Fatalf("failed to parse tar: %v", err) } - for _, e := range merged { - t.Logf("Merged: %v", e.header) + var merged []*entry + for _, part := range divideEntries(entries, 4) { + merged = append(merged, part...) + } + if !reflect.DeepEqual(entries, merged) { + for _, e := range entries { + t.Logf("Original: %v", e.header) + } + for _, e := range merged { + t.Logf("Merged: %v", e.header) + } + t.Errorf("divided entries couldn't be merged") + return } - t.Errorf("divided entries couldn't be merged") - return - } - // Prepare sample data - wantBuf := new(bytes.Buffer) - sw := NewWriterWithCompressor(wantBuf, cl) - sw.ChunkSize = tt.chunkSize - if err := sw.AppendTar(tarBlob); err != nil { - t.Fatalf("failed to append tar to want stargz: %v", err) - } - if _, err := sw.Close(); err != nil { - t.Fatalf("failed to prepare want stargz: %v", err) - } - wantData := wantBuf.Bytes() - want, err := Open(io.NewSectionReader( - bytes.NewReader(wantData), 0, int64(len(wantData))), - WithDecompressors(cl), - ) - if err != nil { - t.Fatalf("failed to parse the want stargz: %v", err) - } + // Prepare sample data + cl1 := newCL() + wantBuf := new(bytes.Buffer) + sw := NewWriterWithCompressor(wantBuf, cl1) + sw.MinChunkSize = minChunkSize + sw.ChunkSize = tt.chunkSize + if err := sw.AppendTar(tarBlob); err != nil { + t.Fatalf("failed to append tar to want stargz: %v", err) + } + if _, err := sw.Close(); err != nil { + t.Fatalf("failed to prepare want stargz: %v", err) + } + wantData := wantBuf.Bytes() + want, err := Open(io.NewSectionReader( + bytes.NewReader(wantData), 0, int64(len(wantData))), + WithDecompressors(cl1), + ) + if err != nil { + t.Fatalf("failed to parse the want stargz: %v", err) + } - // Prepare testing data - rc, err := Build(compressBlob(t, tarBlob, srcCompression), - WithChunkSize(tt.chunkSize), WithCompression(cl)) - if err != nil { - t.Fatalf("failed to build stargz: %v", err) - } - defer rc.Close() - gotBuf := new(bytes.Buffer) - if _, err := io.Copy(gotBuf, rc); err != nil { - t.Fatalf("failed to copy built stargz blob: %v", err) - } - gotData := gotBuf.Bytes() - got, err := Open(io.NewSectionReader( - bytes.NewReader(gotBuf.Bytes()), 0, int64(len(gotData))), - WithDecompressors(cl), - ) - if err != nil { - t.Fatalf("failed to parse the got stargz: %v", err) - } + // Prepare testing data + var opts []Option + if minChunkSize > 0 { + opts = append(opts, WithMinChunkSize(minChunkSize)) + } + cl2 := newCL() + rc, err := Build(compressBlob(t, tarBlob, srcCompression), + append(opts, WithChunkSize(tt.chunkSize), WithCompression(cl2))...) + if err != nil { + t.Fatalf("failed to build stargz: %v", err) + } + defer rc.Close() + gotBuf := new(bytes.Buffer) + if _, err := io.Copy(gotBuf, rc); err != nil { + t.Fatalf("failed to copy built stargz blob: %v", err) + } + gotData := gotBuf.Bytes() + got, err := Open(io.NewSectionReader( + bytes.NewReader(gotBuf.Bytes()), 0, int64(len(gotData))), + WithDecompressors(cl2), + ) + if err != nil { + t.Fatalf("failed to parse the got stargz: %v", err) + } - // Check DiffID is properly calculated - rc.Close() - diffID := rc.DiffID() - wantDiffID := cl.DiffIDOf(t, gotData) - if diffID.String() != wantDiffID { - t.Errorf("DiffID = %q; want %q", diffID, wantDiffID) - } + // Check DiffID is properly calculated + rc.Close() + diffID := rc.DiffID() + wantDiffID := cl2.DiffIDOf(t, gotData) + if diffID.String() != wantDiffID { + t.Errorf("DiffID = %q; want %q", diffID, wantDiffID) + } - // Compare as stargz - if !isSameVersion(t, cl, wantData, gotData) { - t.Errorf("built stargz hasn't same json") - return - } - if !isSameEntries(t, want, got) { - t.Errorf("built stargz isn't same as the original") - return - } + // Compare as stargz + if !isSameVersion(t, cl1, wantData, cl2, gotData) { + t.Errorf("built stargz hasn't same json") + return + } + if !isSameEntries(t, want, got) { + t.Errorf("built stargz isn't same as the original") + return + } - // Compare as tar.gz - if !isSameTarGz(t, cl, wantData, gotData) { - t.Errorf("built stargz isn't same tar.gz") - return - } - }) + // Compare as tar.gz + if !isSameTarGz(t, cl1, wantData, cl2, gotData) { + t.Errorf("built stargz isn't same tar.gz") + return + } + }) + } } } } @@ -244,13 +265,13 @@ func testBuild(t *testing.T, controllers ...TestingController) { } } -func isSameTarGz(t *testing.T, controller TestingController, a, b []byte) bool { - aGz, err := controller.Reader(bytes.NewReader(a)) +func isSameTarGz(t *testing.T, cla TestingController, a []byte, clb TestingController, b []byte) bool { + aGz, err := cla.Reader(bytes.NewReader(a)) if err != nil { t.Fatalf("failed to read A") } defer aGz.Close() - bGz, err := controller.Reader(bytes.NewReader(b)) + bGz, err := clb.Reader(bytes.NewReader(b)) if err != nil { t.Fatalf("failed to read B") } @@ -304,12 +325,12 @@ func isSameTarGz(t *testing.T, controller TestingController, a, b []byte) bool { return true } -func isSameVersion(t *testing.T, controller TestingController, a, b []byte) bool { - aJTOC, _, err := parseStargz(io.NewSectionReader(bytes.NewReader(a), 0, int64(len(a))), controller) +func isSameVersion(t *testing.T, cla TestingController, a []byte, clb TestingController, b []byte) bool { + aJTOC, _, err := parseStargz(io.NewSectionReader(bytes.NewReader(a), 0, int64(len(a))), cla) if err != nil { t.Fatalf("failed to parse A: %v", err) } - bJTOC, _, err := parseStargz(io.NewSectionReader(bytes.NewReader(b), 0, int64(len(b))), controller) + bJTOC, _, err := parseStargz(io.NewSectionReader(bytes.NewReader(b), 0, int64(len(b))), clb) if err != nil { t.Fatalf("failed to parse B: %v", err) } @@ -463,7 +484,7 @@ func equalEntry(a, b *TOCEntry) bool { a.GID == b.GID && a.Uname == b.Uname && a.Gname == b.Gname && - (a.Offset > 0) == (b.Offset > 0) && + (a.Offset >= 0) == (b.Offset >= 0) && (a.NextOffset() > 0) == (b.NextOffset() > 0) && a.DevMajor == b.DevMajor && a.DevMinor == b.DevMinor && @@ -510,14 +531,15 @@ func dumpTOCJSON(t *testing.T, tocJSON *JTOC) string { const chunkSize = 3 // type check func(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, compressionLevel int) -type check func(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController) +type check func(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController, newController TestingControllerFactory) // testDigestAndVerify runs specified checks against sample stargz blobs. -func testDigestAndVerify(t *testing.T, controllers ...TestingController) { +func testDigestAndVerify(t *testing.T, controllers ...TestingControllerFactory) { tests := []struct { - name string - tarInit func(t *testing.T, dgstMap map[string]digest.Digest) (blob []tarEntry) - checks []check + name string + tarInit func(t *testing.T, dgstMap map[string]digest.Digest) (blob []tarEntry) + checks []check + minChunkSize []int }{ { name: "no-regfile", @@ -544,6 +566,7 @@ func testDigestAndVerify(t *testing.T, controllers ...TestingController) { regDigest(t, "test/bar.txt", "bbb", dgstMap), ) }, + minChunkSize: []int{0, 64000}, checks: []check{ checkStargzTOC, checkVerifyTOC, @@ -581,11 +604,14 @@ func testDigestAndVerify(t *testing.T, controllers ...TestingController) { }, }, { - name: "with-non-regfiles", + name: "with-non-regfiles", + minChunkSize: []int{0, 64000}, tarInit: func(t *testing.T, dgstMap map[string]digest.Digest) (blob []tarEntry) { return tarOf( regDigest(t, "baz.txt", "bazbazbazbazbazbazbaz", dgstMap), regDigest(t, "foo.txt", "a", dgstMap), + regDigest(t, "bar/foo2.txt", "b", dgstMap), + regDigest(t, "foo3.txt", "c", dgstMap), symlink("barlink", "test/bar.txt"), dir("test/"), regDigest(t, "test/bar.txt", "testbartestbar", dgstMap), @@ -599,6 +625,8 @@ func testDigestAndVerify(t *testing.T, controllers ...TestingController) { checkVerifyInvalidStargzFail(buildTar(t, tarOf( file("baz.txt", "bazbazbazbazbazbazbaz"), file("foo.txt", "a"), + file("bar/foo2.txt", "b"), + file("foo3.txt", "c"), symlink("barlink", "test/bar.txt"), dir("test/"), file("test/bar.txt", "testbartestbar"), @@ -612,38 +640,45 @@ func testDigestAndVerify(t *testing.T, controllers ...TestingController) { } for _, tt := range tests { + if len(tt.minChunkSize) == 0 { + tt.minChunkSize = []int{0} + } for _, srcCompression := range srcCompressions { srcCompression := srcCompression - for _, cl := range controllers { - cl := cl + for _, newCL := range controllers { + newCL := newCL for _, prefix := range allowedPrefix { prefix := prefix for _, srcTarFormat := range []tar.Format{tar.FormatUSTAR, tar.FormatPAX, tar.FormatGNU} { srcTarFormat := srcTarFormat - t.Run(tt.name+"-"+fmt.Sprintf("compression=%v,prefix=%q,format=%s", cl, prefix, srcTarFormat), func(t *testing.T) { - // Get original tar file and chunk digests - dgstMap := make(map[string]digest.Digest) - tarBlob := buildTar(t, tt.tarInit(t, dgstMap), prefix, srcTarFormat) - - rc, err := Build(compressBlob(t, tarBlob, srcCompression), - WithChunkSize(chunkSize), WithCompression(cl)) - if err != nil { - t.Fatalf("failed to convert stargz: %v", err) - } - tocDigest := rc.TOCDigest() - defer rc.Close() - buf := new(bytes.Buffer) - if _, err := io.Copy(buf, rc); err != nil { - t.Fatalf("failed to copy built stargz blob: %v", err) - } - newStargz := buf.Bytes() - // NoPrefetchLandmark is added during `Bulid`, which is expected behaviour. - dgstMap[chunkID(NoPrefetchLandmark, 0, int64(len([]byte{landmarkContents})))] = digest.FromBytes([]byte{landmarkContents}) + for _, minChunkSize := range tt.minChunkSize { + minChunkSize := minChunkSize + t.Run(tt.name+"-"+fmt.Sprintf("compression=%v,prefix=%q,format=%s,minChunkSize=%d", newCL(), prefix, srcTarFormat, minChunkSize), func(t *testing.T) { + // Get original tar file and chunk digests + dgstMap := make(map[string]digest.Digest) + tarBlob := buildTar(t, tt.tarInit(t, dgstMap), prefix, srcTarFormat) + + cl := newCL() + rc, err := Build(compressBlob(t, tarBlob, srcCompression), + WithChunkSize(chunkSize), WithCompression(cl)) + if err != nil { + t.Fatalf("failed to convert stargz: %v", err) + } + tocDigest := rc.TOCDigest() + defer rc.Close() + buf := new(bytes.Buffer) + if _, err := io.Copy(buf, rc); err != nil { + t.Fatalf("failed to copy built stargz blob: %v", err) + } + newStargz := buf.Bytes() + // NoPrefetchLandmark is added during `Bulid`, which is expected behaviour. + dgstMap[chunkID(NoPrefetchLandmark, 0, int64(len([]byte{landmarkContents})))] = digest.FromBytes([]byte{landmarkContents}) - for _, check := range tt.checks { - check(t, newStargz, tocDigest, dgstMap, cl) - } - }) + for _, check := range tt.checks { + check(t, newStargz, tocDigest, dgstMap, cl, newCL) + } + }) + } } } } @@ -654,7 +689,7 @@ func testDigestAndVerify(t *testing.T, controllers ...TestingController) { // checkStargzTOC checks the TOC JSON of the passed stargz has the expected // digest and contains valid chunks. It walks all entries in the stargz and // checks all chunk digests stored to the TOC JSON match the actual contents. -func checkStargzTOC(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController) { +func checkStargzTOC(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController, newController TestingControllerFactory) { sgz, err := Open( io.NewSectionReader(bytes.NewReader(sgzData), 0, int64(len(sgzData))), WithDecompressors(controller), @@ -765,7 +800,7 @@ func checkStargzTOC(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstM // checkVerifyTOC checks the verification works for the TOC JSON of the passed // stargz. It walks all entries in the stargz and checks the verifications for // all chunks work. -func checkVerifyTOC(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController) { +func checkVerifyTOC(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController, newController TestingControllerFactory) { sgz, err := Open( io.NewSectionReader(bytes.NewReader(sgzData), 0, int64(len(sgzData))), WithDecompressors(controller), @@ -846,7 +881,7 @@ func checkVerifyTOC(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstM // checkVerifyInvalidTOCEntryFail checks if misconfigured TOC JSON can be // detected during the verification and the verification returns an error. func checkVerifyInvalidTOCEntryFail(filename string) check { - return func(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController) { + return func(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController, newController TestingControllerFactory) { funcs := map[string]rewriteFunc{ "lost digest in a entry": func(t *testing.T, toc *JTOC, sgz *io.SectionReader) { var found bool @@ -882,9 +917,11 @@ func checkVerifyInvalidTOCEntryFail(filename string) check { } if sampleEntry == nil { t.Fatalf("TOC must contain at least one regfile or chunk entry other than the rewrite target") + return } if targetEntry == nil { t.Fatalf("rewrite target not found") + return } targetEntry.Offset = sampleEntry.Offset }, @@ -920,8 +957,9 @@ func checkVerifyInvalidTOCEntryFail(filename string) check { // checkVerifyInvalidStargzFail checks if the verification detects that the // given stargz file doesn't match to the expected digest and returns error. func checkVerifyInvalidStargzFail(invalid *io.SectionReader) check { - return func(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController) { - rc, err := Build(invalid, WithChunkSize(chunkSize), WithCompression(controller)) + return func(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController, newController TestingControllerFactory) { + cl := newController() + rc, err := Build(invalid, WithChunkSize(chunkSize), WithCompression(cl)) if err != nil { t.Fatalf("failed to convert stargz: %v", err) } @@ -934,7 +972,7 @@ func checkVerifyInvalidStargzFail(invalid *io.SectionReader) check { sgz, err := Open( io.NewSectionReader(bytes.NewReader(mStargz), 0, int64(len(mStargz))), - WithDecompressors(controller), + WithDecompressors(cl), ) if err != nil { t.Fatalf("failed to parse converted stargz: %v", err) @@ -951,7 +989,7 @@ func checkVerifyInvalidStargzFail(invalid *io.SectionReader) check { // checkVerifyBrokenContentFail checks if the verifier detects broken contents // that doesn't match to the expected digest and returns error. func checkVerifyBrokenContentFail(filename string) check { - return func(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController) { + return func(t *testing.T, sgzData []byte, tocDigest digest.Digest, dgstMap map[string]digest.Digest, controller TestingController, newController TestingControllerFactory) { // Parse stargz file sgz, err := Open( io.NewSectionReader(bytes.NewReader(sgzData), 0, int64(len(sgzData))), @@ -1070,7 +1108,10 @@ func parseStargz(sgz *io.SectionReader, controller TestingController) (decodedJT } // Decode the TOC JSON - tocReader := io.NewSectionReader(sgz, tocOffset, sgz.Size()-tocOffset-fSize) + var tocReader io.Reader + if tocOffset >= 0 { + tocReader = io.NewSectionReader(sgz, tocOffset, sgz.Size()-tocOffset-fSize) + } decodedJTOC, _, err = controller.ParseTOC(tocReader) if err != nil { return nil, 0, fmt.Errorf("failed to parse TOC: %w", err) @@ -1078,28 +1119,31 @@ func parseStargz(sgz *io.SectionReader, controller TestingController) (decodedJT return decodedJTOC, tocOffset, nil } -func testWriteAndOpen(t *testing.T, controllers ...TestingController) { +func testWriteAndOpen(t *testing.T, controllers ...TestingControllerFactory) { const content = "Some contents" invalidUtf8 := "\xff\xfe\xfd" xAttrFile := xAttr{"foo": "bar", "invalid-utf8": invalidUtf8} sampleOwner := owner{uid: 50, gid: 100} + data64KB := randomContents(64000) + tests := []struct { - name string - chunkSize int - in []tarEntry - want []stargzCheck - wantNumGz int // expected number of streams + name string + chunkSize int + minChunkSize int + in []tarEntry + want []stargzCheck + wantNumGz int // expected number of streams wantNumGzLossLess int // expected number of streams (> 0) in lossless mode if it's different from wantNumGz wantFailOnLossLess bool + wantTOCVersion int // default = 1 }{ { - name: "empty", - in: tarOf(), - wantNumGz: 2, // empty tar + TOC + footer - wantNumGzLossLess: 3, // empty tar + TOC + footer + name: "empty", + in: tarOf(), + wantNumGz: 2, // (empty tar) + TOC + footer want: checks( numTOCEntries(0), ), @@ -1195,7 +1239,7 @@ func testWriteAndOpen(t *testing.T, controllers ...TestingController) { dir("foo/"), file("foo/big.txt", "This "+"is s"+"uch "+"a bi"+"g fi"+"le"), ), - wantNumGz: 9, + wantNumGz: 9, // dir + big.txt(6 chunks) + TOC + footer want: checks( numTOCEntries(7), // 1 for foo dir, 6 for the foo/big.txt file hasDir("foo/"), @@ -1326,23 +1370,108 @@ func testWriteAndOpen(t *testing.T, controllers ...TestingController) { mustSameEntry("foo/foo1", "foolink"), ), }, + { + name: "several_files_in_chunk", + minChunkSize: 8000, + in: tarOf( + dir("foo/"), + file("foo/foo1", data64KB), + file("foo2", "bb"), + file("foo22", "ccc"), + dir("bar/"), + file("bar/bar.txt", "aaa"), + file("foo3", data64KB), + ), + // NOTE: we assume that the compressed "data64KB" is still larger than 8KB + wantNumGz: 4, // dir+foo1, foo2+foo22+dir+bar.txt+foo3, TOC, footer + want: checks( + numTOCEntries(7), // dir, foo1, foo2, foo22, dir, bar.txt, foo3 + hasDir("foo/"), + hasDir("bar/"), + hasFileLen("foo/foo1", len(data64KB)), + hasFileLen("foo2", len("bb")), + hasFileLen("foo22", len("ccc")), + hasFileLen("bar/bar.txt", len("aaa")), + hasFileLen("foo3", len(data64KB)), + hasFileDigest("foo/foo1", digestFor(data64KB)), + hasFileDigest("foo2", digestFor("bb")), + hasFileDigest("foo22", digestFor("ccc")), + hasFileDigest("bar/bar.txt", digestFor("aaa")), + hasFileDigest("foo3", digestFor(data64KB)), + hasFileContentsWithPreRead("foo22", 0, "ccc", chunkInfo{"foo2", "bb"}, chunkInfo{"bar/bar.txt", "aaa"}, chunkInfo{"foo3", data64KB}), + hasFileContentsRange("foo/foo1", 0, data64KB), + hasFileContentsRange("foo2", 0, "bb"), + hasFileContentsRange("foo2", 1, "b"), + hasFileContentsRange("foo22", 0, "ccc"), + hasFileContentsRange("foo22", 1, "cc"), + hasFileContentsRange("foo22", 2, "c"), + hasFileContentsRange("bar/bar.txt", 0, "aaa"), + hasFileContentsRange("bar/bar.txt", 1, "aa"), + hasFileContentsRange("bar/bar.txt", 2, "a"), + hasFileContentsRange("foo3", 0, data64KB), + hasFileContentsRange("foo3", 1, data64KB[1:]), + hasFileContentsRange("foo3", 2, data64KB[2:]), + hasFileContentsRange("foo3", len(data64KB)/2, data64KB[len(data64KB)/2:]), + hasFileContentsRange("foo3", len(data64KB)-1, data64KB[len(data64KB)-1:]), + ), + }, + { + name: "several_files_in_chunk_chunked", + minChunkSize: 8000, + chunkSize: 32000, + in: tarOf( + dir("foo/"), + file("foo/foo1", data64KB), + file("foo2", "bb"), + dir("bar/"), + file("foo3", data64KB), + ), + // NOTE: we assume that the compressed chunk of "data64KB" is still larger than 8KB + wantNumGz: 6, // dir+foo1(1), foo1(2), foo2+dir+foo3(1), foo3(2), TOC, footer + want: checks( + numTOCEntries(7), // dir, foo1(2 chunks), foo2, dir, foo3(2 chunks) + hasDir("foo/"), + hasDir("bar/"), + hasFileLen("foo/foo1", len(data64KB)), + hasFileLen("foo2", len("bb")), + hasFileLen("foo3", len(data64KB)), + hasFileDigest("foo/foo1", digestFor(data64KB)), + hasFileDigest("foo2", digestFor("bb")), + hasFileDigest("foo3", digestFor(data64KB)), + hasFileContentsWithPreRead("foo2", 0, "bb", chunkInfo{"foo3", data64KB[:32000]}), + hasFileContentsRange("foo/foo1", 0, data64KB), + hasFileContentsRange("foo/foo1", 1, data64KB[1:]), + hasFileContentsRange("foo/foo1", 2, data64KB[2:]), + hasFileContentsRange("foo/foo1", len(data64KB)/2, data64KB[len(data64KB)/2:]), + hasFileContentsRange("foo/foo1", len(data64KB)-1, data64KB[len(data64KB)-1:]), + hasFileContentsRange("foo2", 0, "bb"), + hasFileContentsRange("foo2", 1, "b"), + hasFileContentsRange("foo3", 0, data64KB), + hasFileContentsRange("foo3", 1, data64KB[1:]), + hasFileContentsRange("foo3", 2, data64KB[2:]), + hasFileContentsRange("foo3", len(data64KB)/2, data64KB[len(data64KB)/2:]), + hasFileContentsRange("foo3", len(data64KB)-1, data64KB[len(data64KB)-1:]), + ), + }, } for _, tt := range tests { - for _, cl := range controllers { - cl := cl + for _, newCL := range controllers { + newCL := newCL for _, prefix := range allowedPrefix { prefix := prefix for _, srcTarFormat := range []tar.Format{tar.FormatUSTAR, tar.FormatPAX, tar.FormatGNU} { srcTarFormat := srcTarFormat for _, lossless := range []bool{true, false} { - t.Run(tt.name+"-"+fmt.Sprintf("compression=%v,prefix=%q,lossless=%v,format=%s", cl, prefix, lossless, srcTarFormat), func(t *testing.T) { + t.Run(tt.name+"-"+fmt.Sprintf("compression=%v,prefix=%q,lossless=%v,format=%s", newCL(), prefix, lossless, srcTarFormat), func(t *testing.T) { var tr io.Reader = buildTar(t, tt.in, prefix, srcTarFormat) origTarDgstr := digest.Canonical.Digester() tr = io.TeeReader(tr, origTarDgstr.Hash()) var stargzBuf bytes.Buffer - w := NewWriterWithCompressor(&stargzBuf, cl) + cl1 := newCL() + w := NewWriterWithCompressor(&stargzBuf, cl1) w.ChunkSize = tt.chunkSize + w.MinChunkSize = tt.minChunkSize if lossless { err := w.AppendTarLossLess(tr) if tt.wantFailOnLossLess { @@ -1366,7 +1495,7 @@ func testWriteAndOpen(t *testing.T, controllers ...TestingController) { if lossless { // Check if the result blob reserves original tar metadata - rc, err := Unpack(io.NewSectionReader(bytes.NewReader(b), 0, int64(len(b))), cl) + rc, err := Unpack(io.NewSectionReader(bytes.NewReader(b), 0, int64(len(b))), cl1) if err != nil { t.Errorf("failed to decompress blob: %v", err) return @@ -1385,32 +1514,71 @@ func testWriteAndOpen(t *testing.T, controllers ...TestingController) { } diffID := w.DiffID() - wantDiffID := cl.DiffIDOf(t, b) + wantDiffID := cl1.DiffIDOf(t, b) if diffID != wantDiffID { t.Errorf("DiffID = %q; want %q", diffID, wantDiffID) } - got := cl.CountStreams(t, b) - wantNumGz := tt.wantNumGz - if lossless && tt.wantNumGzLossLess > 0 { - wantNumGz = tt.wantNumGzLossLess - } - if got != wantNumGz { - t.Errorf("number of streams = %d; want %d", got, wantNumGz) - } - telemetry, checkCalled := newCalledTelemetry() + sr := io.NewSectionReader(bytes.NewReader(b), 0, int64(len(b))) r, err := Open( - io.NewSectionReader(bytes.NewReader(b), 0, int64(len(b))), - WithDecompressors(cl), + sr, + WithDecompressors(cl1), WithTelemetry(telemetry), ) if err != nil { t.Fatalf("stargz.Open: %v", err) } - if err := checkCalled(); err != nil { + wantTOCVersion := 1 + if tt.wantTOCVersion > 0 { + wantTOCVersion = tt.wantTOCVersion + } + if r.toc.Version != wantTOCVersion { + t.Fatalf("invalid TOC Version %d; wanted %d", r.toc.Version, wantTOCVersion) + } + + footerSize := cl1.FooterSize() + footerOffset := sr.Size() - footerSize + footer := make([]byte, footerSize) + if _, err := sr.ReadAt(footer, footerOffset); err != nil { + t.Errorf("failed to read footer: %v", err) + } + _, tocOffset, _, err := cl1.ParseFooter(footer) + if err != nil { + t.Errorf("failed to parse footer: %v", err) + } + if err := checkCalled(tocOffset >= 0); err != nil { t.Errorf("telemetry failure: %v", err) } + + wantNumGz := tt.wantNumGz + if lossless && tt.wantNumGzLossLess > 0 { + wantNumGz = tt.wantNumGzLossLess + } + streamOffsets := []int64{0} + prevOffset := int64(-1) + streams := 0 + for _, e := range r.toc.Entries { + if e.Offset > prevOffset { + streamOffsets = append(streamOffsets, e.Offset) + prevOffset = e.Offset + streams++ + } + } + streams++ // TOC + if tocOffset >= 0 { + // toc is in the blob + streamOffsets = append(streamOffsets, tocOffset) + } + streams++ // footer + streamOffsets = append(streamOffsets, footerOffset) + if streams != wantNumGz { + t.Errorf("number of streams in TOC = %d; want %d", streams, wantNumGz) + } + + t.Logf("testing streams: %+v", streamOffsets) + cl1.TestStreams(t, b, streamOffsets) + for _, want := range tt.want { want.check(t, r) } @@ -1422,7 +1590,12 @@ func testWriteAndOpen(t *testing.T, controllers ...TestingController) { } } -func newCalledTelemetry() (telemetry *Telemetry, check func() error) { +type chunkInfo struct { + name string + data string +} + +func newCalledTelemetry() (telemetry *Telemetry, check func(needsGetTOC bool) error) { var getFooterLatencyCalled bool var getTocLatencyCalled bool var deserializeTocLatencyCalled bool @@ -1430,13 +1603,15 @@ func newCalledTelemetry() (telemetry *Telemetry, check func() error) { func(time.Time) { getFooterLatencyCalled = true }, func(time.Time) { getTocLatencyCalled = true }, func(time.Time) { deserializeTocLatencyCalled = true }, - }, func() error { + }, func(needsGetTOC bool) error { var allErr []error if !getFooterLatencyCalled { allErr = append(allErr, fmt.Errorf("metrics GetFooterLatency isn't called")) } - if !getTocLatencyCalled { - allErr = append(allErr, fmt.Errorf("metrics GetTocLatency isn't called")) + if needsGetTOC { + if !getTocLatencyCalled { + allErr = append(allErr, fmt.Errorf("metrics GetTocLatency isn't called")) + } } if !deserializeTocLatencyCalled { allErr = append(allErr, fmt.Errorf("metrics DeserializeTocLatency isn't called")) @@ -1573,6 +1748,53 @@ func hasFileDigest(file string, digest string) stargzCheck { }) } +func hasFileContentsWithPreRead(file string, offset int, want string, extra ...chunkInfo) stargzCheck { + return stargzCheckFn(func(t *testing.T, r *Reader) { + extraMap := make(map[string]chunkInfo) + for _, e := range extra { + extraMap[e.name] = e + } + var extraNames []string + for n := range extraMap { + extraNames = append(extraNames, n) + } + f, err := r.OpenFileWithPreReader(file, func(e *TOCEntry, cr io.Reader) error { + t.Logf("On %q: got preread of %q", file, e.Name) + ex, ok := extraMap[e.Name] + if !ok { + t.Fatalf("fail on %q: unexpected entry %q: %+v, %+v", file, e.Name, e, extraNames) + } + got, err := io.ReadAll(cr) + if err != nil { + t.Fatalf("fail on %q: failed to read %q: %v", file, e.Name, err) + } + if ex.data != string(got) { + t.Fatalf("fail on %q: unexpected contents of %q: len=%d; want=%d", file, e.Name, len(got), len(ex.data)) + } + delete(extraMap, e.Name) + return nil + }) + if err != nil { + t.Fatal(err) + } + got := make([]byte, len(want)) + n, err := f.ReadAt(got, int64(offset)) + if err != nil { + t.Fatalf("ReadAt(len %d, offset %d, size %d) = %v, %v", len(got), offset, f.Size(), n, err) + } + if string(got) != want { + t.Fatalf("ReadAt(len %d, offset %d) = %q, want %q", len(got), offset, viewContent(got), viewContent([]byte(want))) + } + if len(extraMap) != 0 { + var exNames []string + for _, ex := range extraMap { + exNames = append(exNames, ex.name) + } + t.Fatalf("fail on %q: some entries aren't read: %+v", file, exNames) + } + }) +} + func hasFileContentsRange(file string, offset int, want string) stargzCheck { return stargzCheckFn(func(t *testing.T, r *Reader) { f, err := r.OpenFile(file) @@ -1585,7 +1807,7 @@ func hasFileContentsRange(file string, offset int, want string) stargzCheck { t.Fatalf("ReadAt(len %d, offset %d) = %v, %v", len(got), offset, n, err) } if string(got) != want { - t.Fatalf("ReadAt(len %d, offset %d) = %q, want %q", len(got), offset, got, want) + t.Fatalf("ReadAt(len %d, offset %d) = %q, want %q", len(got), offset, viewContent(got), viewContent([]byte(want))) } }) } @@ -1797,6 +2019,13 @@ func mustSameEntry(files ...string) stargzCheck { }) } +func viewContent(c []byte) string { + if len(c) < 100 { + return string(c) + } + return string(c[:50]) + "...(omit)..." + string(c[50:100]) +} + func tarOf(s ...tarEntry) []tarEntry { return s } type tarEntry interface { @@ -2056,6 +2285,20 @@ func regDigest(t *testing.T, name string, contentStr string, digestMap map[strin }) } +var runes = []rune("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") + +func randomContents(n int) string { + b := make([]rune, n) + for i := range b { + bi, err := rand.Int(rand.Reader, big.NewInt(int64(len(runes)))) + if err != nil { + panic(err) + } + b[i] = runes[int(bi.Int64())] + } + return string(b) +} + func fileModeToTarMode(mode os.FileMode) (int64, error) { h, err := tar.FileInfoHeader(fileInfoOnlyMode(mode), "") if err != nil { @@ -2073,3 +2316,54 @@ func (f fileInfoOnlyMode) Mode() os.FileMode { return os.FileMode(f) } func (f fileInfoOnlyMode) ModTime() time.Time { return time.Now() } func (f fileInfoOnlyMode) IsDir() bool { return os.FileMode(f).IsDir() } func (f fileInfoOnlyMode) Sys() interface{} { return nil } + +func CheckGzipHasStreams(t *testing.T, b []byte, streams []int64) { + if len(streams) == 0 { + return // nop + } + + wants := map[int64]struct{}{} + for _, s := range streams { + wants[s] = struct{}{} + } + + len0 := len(b) + br := bytes.NewReader(b) + zr := new(gzip.Reader) + t.Logf("got gzip streams:") + numStreams := 0 + for { + zoff := len0 - br.Len() + if err := zr.Reset(br); err != nil { + if err == io.EOF { + return + } + t.Fatalf("countStreams(gzip), Reset: %v", err) + } + zr.Multistream(false) + n, err := io.Copy(io.Discard, zr) + if err != nil { + t.Fatalf("countStreams(gzip), Copy: %v", err) + } + var extra string + if len(zr.Header.Extra) > 0 { + extra = fmt.Sprintf("; extra=%q", zr.Header.Extra) + } + t.Logf(" [%d] at %d in stargz, uncompressed length %d%s", numStreams, zoff, n, extra) + delete(wants, int64(zoff)) + numStreams++ + } +} + +func GzipDiffIDOf(t *testing.T, b []byte) string { + h := sha256.New() + zr, err := gzip.NewReader(bytes.NewReader(b)) + if err != nil { + t.Fatalf("diffIDOf(gzip): %v", err) + } + defer zr.Close() + if _, err := io.Copy(h, zr); err != nil { + t.Fatalf("diffIDOf(gzip).Copy: %v", err) + } + return fmt.Sprintf("sha256:%x", h.Sum(nil)) +} diff --git a/vendor/github.com/containerd/stargz-snapshotter/estargz/types.go b/vendor/github.com/containerd/stargz-snapshotter/estargz/types.go index 3bc74463ecfd..57e0aa614e4a 100644 --- a/vendor/github.com/containerd/stargz-snapshotter/estargz/types.go +++ b/vendor/github.com/containerd/stargz-snapshotter/estargz/types.go @@ -149,6 +149,12 @@ type TOCEntry struct { // ChunkSize. Offset int64 `json:"offset,omitempty"` + // InnerOffset is an optional field indicates uncompressed offset + // of this "reg" or "chunk" payload in a stream starts from Offset. + // This field enables to put multiple "reg" or "chunk" payloads + // in one chunk with having the same Offset but different InnerOffset. + InnerOffset int64 `json:"innerOffset,omitempty"` + nextOffset int64 // the Offset of the next entry with a non-zero Offset // DevMajor is the major device number for "char" and "block" types. @@ -186,6 +192,9 @@ type TOCEntry struct { ChunkDigest string `json:"chunkDigest,omitempty"` children map[string]*TOCEntry + + // chunkTopIndex is index of the entry where Offset starts in the blob. + chunkTopIndex int } // ModTime returns the entry's modification time. @@ -279,7 +288,10 @@ type Compressor interface { // Writer returns WriteCloser to be used for writing a chunk to eStargz. // Everytime a chunk is written, the WriteCloser is closed and Writer is // called again for writing the next chunk. - Writer(w io.Writer) (io.WriteCloser, error) + // + // The returned writer should implement "Flush() error" function that flushes + // any pending compressed data to the underlying writer. + Writer(w io.Writer) (WriteFlushCloser, error) // WriteTOCAndFooter is called to write JTOC to the passed Writer. // diffHash calculates the DiffID (uncompressed sha256 hash) of the blob @@ -303,8 +315,12 @@ type Decompressor interface { // payloadBlobSize is the (compressed) size of the blob payload (i.e. the size between // the top until the TOC JSON). // - // Here, tocSize is optional. If tocSize <= 0, it's by default the size of the range - // from tocOffset until the beginning of the footer (blob size - tocOff - FooterSize). + // If tocOffset < 0, we assume that TOC isn't contained in the blob and pass nil reader + // to ParseTOC. We expect that ParseTOC acquire TOC from the external location and return it. + // + // tocSize is optional. If tocSize <= 0, it's by default the size of the range from tocOffset until the beginning of the + // footer (blob size - tocOff - FooterSize). + // If blobPayloadSize < 0, blobPayloadSize become the blob size. ParseFooter(p []byte) (blobPayloadSize, tocOffset, tocSize int64, err error) // ParseTOC parses TOC from the passed reader. The reader provides the partial contents @@ -313,5 +329,14 @@ type Decompressor interface { // This function returns tocDgst that represents the digest of TOC that will be used // to verify this blob. This must match to the value returned from // Compressor.WriteTOCAndFooter that is used when creating this blob. + // + // If tocOffset returned by ParseFooter is < 0, we assume that TOC isn't contained in the blob. + // Pass nil reader to ParseTOC then we expect that ParseTOC acquire TOC from the external location + // and return it. ParseTOC(r io.Reader) (toc *JTOC, tocDgst digest.Digest, err error) } + +type WriteFlushCloser interface { + io.WriteCloser + Flush() error +} diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/types/email.go b/vendor/github.com/deepmap/oapi-codegen/pkg/types/email.go deleted file mode 100644 index 00a4cf6b939d..000000000000 --- a/vendor/github.com/deepmap/oapi-codegen/pkg/types/email.go +++ /dev/null @@ -1,27 +0,0 @@ -package types - -import ( - "encoding/json" - "errors" -) - -type Email string - -func (e Email) MarshalJSON() ([]byte, error) { - if !emailRegex.MatchString(string(e)) { - return nil, errors.New("email: failed to pass regex validation") - } - return json.Marshal(string(e)) -} - -func (e *Email) UnmarshalJSON(data []byte) error { - var s string - if err := json.Unmarshal(data, &s); err != nil { - return err - } - if !emailRegex.MatchString(s) { - return errors.New("email: failed to pass regex validation") - } - *e = Email(s) - return nil -} diff --git a/vendor/github.com/docker/cli/AUTHORS b/vendor/github.com/docker/cli/AUTHORS index 8990f85b56e4..ad1abd49642e 100644 --- a/vendor/github.com/docker/cli/AUTHORS +++ b/vendor/github.com/docker/cli/AUTHORS @@ -1,9 +1,11 @@ -# This file lists all individuals having contributed content to the repository. -# For how it is generated, see `scripts/docs/generate-authors.sh`. +# File @generated by scripts/docs/generate-authors.sh. DO NOT EDIT. +# This file lists all contributors to the repository. +# See scripts/docs/generate-authors.sh to make modifications. +A. Lester Buck III Aanand Prasad Aaron L. Xu -Aaron Lehmann +Aaron Lehmann Aaron.L.Xu Abdur Rehman Abhinandan Prativadi @@ -15,6 +17,7 @@ Adolfo Ochagavía Adrian Plata Adrien Duermael Adrien Folie +Adyanth Hosavalike Ahmet Alp Balkan Aidan Feldman Aidan Hobson Sayers @@ -23,23 +26,31 @@ Akhil Mohan Akihiro Suda Akim Demaille Alan Thompson +Alano Terblanche Albert Callarisa -Albin Kerouanton +Alberto Roura +Albin Kerouanton Aleksa Sarai Aleksander Piotrowski Alessandro Boch +Alex Couture-Beil Alex Mavrogiannis Alex Mayer Alexander Boyd +Alexander Chneerov Alexander Larsson -Alexander Morozov +Alexander Morozov Alexander Ryabov Alexandre González +Alexey Igrychev +Alexis Couvreur Alfred Landrum +Ali Rostami Alicia Lauerman Allen Sun Alvin Deng Amen Belayneh +Amey Shrivastava <72866602+AmeyShrivastava@users.noreply.github.com> Amir Goldstein Amit Krishnan Amit Shukla @@ -48,11 +59,14 @@ Anca Iordache Anda Xu Andrea Luzzardi Andreas Köhler +Andres G. Aragoneses +Andres Leon Rangel Andrew France Andrew Hsu Andrew Macpherson Andrew McDonnell Andrew Po +Andrew-Zipperer Andrey Petrov Andrii Berehuliak André Martins @@ -67,27 +81,37 @@ Antonis Kalipetis Anusha Ragunathan Ao Li Arash Deshmeh -Arko Dasgupta -Arnaud Porterie +Arko Dasgupta +Arnaud Porterie +Arnaud Rebillout Arthur Peka +Ashly Mathew Ashwini Oruganti +Aslam Ahemad Azat Khuyiyakhmetov Bardia Keyoumarsi Barnaby Gray Bastiaan Bakker BastianHofmann +Ben Bodenmiller Ben Bonnefoy Ben Creasy Ben Firshman Benjamin Boudreau +Benjamin Böhmke +Benjamin Nater Benoit Sigoure Bhumika Bayani Bill Wang Bin Liu Bingshen Wang +Bishal Das +Bjorn Neergaard Boaz Shuster +Boban Acimovic Bogdan Anton Boris Pruessmann +Brad Baker Bradley Cicenas Brandon Mitchell Brandon Philips @@ -95,16 +119,20 @@ Brent Salisbury Bret Fisher Brian (bex) Exelbierd Brian Goff +Brian Tracy Brian Wieder +Bruno Sousa Bryan Bess Bryan Boreham Bryan Murphy bryfry +Calvin Liu Cameron Spear Cao Weiwei Carlo Mion Carlos Alexandro Becker Carlos de Paula +Casey Korver Ce Gao Cedric Davies Cezar Sa Espinola @@ -114,15 +142,20 @@ Charles Chan Charles Law Charles Smith Charlie Drage +Charlotte Mach ChaYoung You +Chee Hau Lim Chen Chuanliang Chen Hanxiao Chen Mingjie Chen Qiu +Chris Chinchilla +Chris Couzens Chris Gavin Chris Gibson Chris McKinnel Chris Snow +Chris Vermilion Chris Weyl Christian Persson Christian Stefanescu @@ -131,6 +164,9 @@ Christophe Vidal Christopher Biscardi Christopher Crone Christopher Jones +Christopher Petito <47751006+krissetto@users.noreply.github.com> +Christopher Petito +Christopher Svensson Christy Norman Chun Chen Clinton Kitson @@ -139,8 +175,12 @@ Colin Hebert Collin Guarino Colm Hally Comical Derskeal <27731088+derskeal@users.noreply.github.com> +Conner Crosby Corey Farrell Corey Quon +Cory Bennet +Cory Snider +Craig Osterhout Craig Wilhite Cristian Staretu Daehyeok Mun @@ -149,6 +189,7 @@ Daisuke Ito dalanlan Damien Nadé Dan Cotora +Danial Gharib Daniel Artine Daniel Cassidy Daniel Dao @@ -170,11 +211,14 @@ Dattatraya Kumbhar Dave Goodchild Dave Henderson Dave Tucker +David Alvarez David Beitey David Calavera David Cramer David Dooling David Gageot +David Karlsson +David le Blanc David Lechner David Scott David Sheets @@ -186,7 +230,9 @@ Denis Defreyne Denis Gladkikh Denis Ollier Dennis Docter -Derek McGowan +dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Derek McGowan +Des Preston Deshi Xiao Dharmit Shah Dhawal Yogesh Bhanushali @@ -196,27 +242,33 @@ Dimitry Andric Ding Fei Diogo Monica Djordje Lukic +Dmitriy Fishman Dmitry Gusev Dmitry Smirnov Dmitry V. Krivenok Dominik Braun Don Kjer Dong Chen +DongGeon Lee Doug Davis Drew Erny Ed Costello +Ed Morley <501702+edmorley@users.noreply.github.com> Elango Sivanandam Eli Uriegas Eli Uriegas Elias Faxö Elliot Luo <956941328@qq.com> +Eric Bode Eric Curtin +Eric Engestrom Eric G. Noriega Eric Rosenberg Eric Sage Eric-Olivier Lamey Erica Windisch Erik Hollensbe +Erik Humphrey Erik St. Martin Essam A. Hassan Ethan Haynes @@ -225,12 +277,15 @@ Eugene Yakubovich Evan Allrich Evan Hazlett Evan Krall +Evan Lezar Evelyn Xu Everett Toews Fabio Falci Fabrizio Soppelsa +Felix Geyer Felix Hupfeld Felix Rabe +fezzik1620 Filip Jareš Flavio Crisciani Florian Klein @@ -242,22 +297,32 @@ Frederic Hemberger Frederick F. Kautz IV Frederik Nordahl Jul Sabroe Frieder Bluemle +Gabriel Gore Gabriel Nicolas Avellaneda +Gabriela Georgieva Gaetan de Villele Gang Qiao Gary Schaetz Genki Takiuchi George MacRorie +George Margaritis George Xie Gianluca Borello Gildas Cuisinier +Gio d'Amelio +Gleb Stsenov Goksu Toprak Gou Rao +Govind Rai +Grace Choi +Graeme Wiebe Grant Reaber Greg Pflaum +Gsealy Guilhem Lettron Guillaume J. Charmes Guillaume Le Floch +Guillaume Tardif gwx296173 Günther Jungbluth Hakan Özler @@ -274,10 +339,12 @@ Hernan Garcia Hongbin Lu Hu Keping Huayi Zhang +Hugo Chastel Hugo Gabriel Eyherabide huqun Huu Nguyen Hyzhou Zhy +Iain Samuel McLean Elder Ian Campbell Ian Philpot Ignacio Capurro @@ -287,12 +354,16 @@ Ilya Sotkov Ioan Eugen Stan Isabel Jimenez Ivan Grcic +Ivan Grund Ivan Markin Jacob Atzen Jacob Tomlinson +Jacopo Rigoli Jaivish Kothari Jake Lambert Jake Sanders +Jake Stokes +Jakub Panek James Nesbitt James Turnbull Jamie Hannaford @@ -302,15 +373,18 @@ Jan-Jaap Driessen Jana Radhakrishnan Jared Hocutt Jasmine Hegman +Jason Hall Jason Heiss Jason Plum Jay Kamat +Jean Lecordier Jean Rouge Jean-Christophe Sirot Jean-Pierre Huynh Jeff Lindsay Jeff Nickoloff Jeff Silberman +Jennings Zhang Jeremy Chambers Jeremy Unruh Jeremy Yallop @@ -321,7 +395,9 @@ Jezeniel Zapanta Jian Zhang Jie Luo Jilles Oldenbeuving +Jim Chen Jim Galasyn +Jim Lin Jimmy Leger Jimmy Song jimmyxian @@ -338,6 +414,7 @@ Johannes 'fish' Ziemke John Feminella John Harris John Howard +John Howard John Laswell John Maguire John Mulhausen @@ -347,13 +424,17 @@ John Tims John V. Martinez John Willis Jon Johnson +Jon Zeolla Jonatas Baldin +Jonathan A. Sternberg Jonathan Boulle Jonathan Lee Jonathan Lomas Jonathan McCrohan +Jonathan Warriss-Simmons Jonh Wendell Jordan Jennings +Jorge Vallecillo Jose J. Escobar <53836904+jescobar-docker@users.noreply.github.com> Joseph Kern Josh Bodah @@ -361,10 +442,12 @@ Josh Chorlton Josh Hawn Josh Horwitz Josh Soref +Julian Julien Barbier Julien Kassar Julien Maitrehenry Justas Brazauskas +Justin Chadwell Justin Cormack Justin Simonelis Justyn Temme @@ -383,9 +466,11 @@ Katie McLaughlin Ke Xu Kei Ohmura Keith Hudgins +Kelton Bassingthwaite Ken Cochrane Ken ICHIKAWA Kenfe-Mickaël Laventure +Kevin Alvarez Kevin Burke Kevin Feyrer Kevin Kern @@ -396,25 +481,29 @@ Kevin Woblick khaled souf Kim Eik Kir Kolyshkin +Kirill A. Korinsky Kotaro Yoshimatsu Krasi Georgiev Kris-Mikael Krister Kun Zhang Kunal Kushwaha +Kyle Mitofsky Lachlan Cooper Lai Jiangshan Lars Kellogg-Stedman +Laura Brehm Laura Frank Laurent Erignoux Lee Gaines Lei Jitang Lennie Leo Gallucci +Leonid Skorospelov Lewis Daly +Li Fu Bang Li Yi Li Yi Liang-Chi Hsieh -Lifubang Lihua Tang Lily Guo Lin Lu @@ -429,6 +518,7 @@ Louis Opter Luca Favatella Luca Marturana Lucas Chan +Luis Henrique Mulinari Luka Hartwig Lukas Heeren Lukasz Zajaczkowski @@ -445,11 +535,14 @@ Manjunath A Kumatagi Mansi Nahar mapk0y Marc Bihlmaier +Marc Cornellà Marco Mariani +Marco Spiess Marco Vedovati Marcus Martins Marianna Tessel Marius Ileana +Marius Meschter Marius Sturm Mark Oates Marsh Macy @@ -458,7 +551,9 @@ Mary Anthony Mason Fish Mason Malone Mateusz Major +Mathias Duedahl <64321057+Lussebullen@users.noreply.github.com> Mathieu Champlon +Mathieu Rollet Matt Gucci Matt Robenolt Matteo Orefice @@ -466,12 +561,16 @@ Matthew Heon Matthieu Hauglustaine Mauro Porras P Max Shytikov +Max-Julian Pogner Maxime Petazzoni +Maximillian Fan Xavier Mei ChunTao +Melroy van den Berg +Metal <2466052+tedhexaflow@users.noreply.github.com> Micah Zoltu Michael A. Smith Michael Bridgen -Michael Crosby +Michael Crosby Michael Friis Michael Irwin Michael Käufl @@ -487,6 +586,7 @@ Mihai Borobocea Mihuleacc Sergiu Mike Brown Mike Casas +Mike Dalton Mike Danese Mike Dillon Mike Goelzer @@ -503,9 +603,12 @@ Mohini Anne Dsouza Moorthy RS Morgan Bauer Morten Hekkvang +Morten Linderud Moysés Borges +Mozi <29089388+pzhlkj6612@users.noreply.github.com> Mrunal Patel muicoder +Murukesh Mohanan Muthukumar R Máximo Cuadros Mårten Cassel @@ -521,6 +624,8 @@ Nathan LeClaire Nathan McCauley Neil Peterson Nick Adcock +Nick Santos +Nick Sieger Nico Stapelbroek Nicola Kabar Nicolas Borboën @@ -533,8 +638,11 @@ Nishant Totla NIWA Hideyuki Noah Treuhaft O.S. Tezer +Oded Arbel Odin Ugedal ohmystack +OKA Naoya +Oliver Pomeroy Olle Jonsson Olli Janatuinen Oscar Wieman @@ -542,17 +650,22 @@ Otto Kekäläinen Ovidio Mallo Pascal Borreli Patrick Böänziger +Patrick Daigle <114765035+pdaig@users.noreply.github.com> Patrick Hemmer Patrick Lang Paul Paul Kehrer Paul Lietar Paul Mulders +Paul Seyfert Paul Weaver Pavel Pospisil +Paweł Gronowski +Paweł Pokrywka Paweł Szczekutowicz Peeyush Gupta -Per Lundberg +Per Lundberg +Peter Dave Hello Peter Edge Peter Hsu Peter Jaffe @@ -560,11 +673,13 @@ Peter Kehl Peter Nagy Peter Salvatore Peter Waller -Phil Estes +Phil Estes Philip Alexander Etling Philipp Gillé Philipp Schmied +Phong Tran pidster +Pieter E Smit pixelistik Pratik Karki Prayag Verma @@ -572,8 +687,10 @@ Preston Cowley Pure White Qiang Huang Qinglan Peng +QQ喵 qudongfang Raghavendra K T +Rahul Kadyan Rahul Zoldyck Ravi Shekhar Jethani Ray Tsang @@ -582,15 +699,18 @@ Remy Suen Renaud Gaubert Ricardo N Feliciano Rich Moyse +Richard Chen Zheng <58443436+rchenzheng@users.noreply.github.com> Richard Mathie Richard Scothern Rick Wieman Ritesh H Shukla Riyaz Faizullabhoy Rob Gulewich +Rob Murray Robert Wallis Robin Naundorf Robin Speekenbrink +Roch Feuillade Rodolfo Ortiz Rogelio Canedo Rohan Verma @@ -600,6 +720,7 @@ Rory Hunter Ross Boucher Rubens Figueiredo Rui Cao +Rui JingAn Ryan Belgrave Ryan Detzel Ryan Stelly @@ -609,14 +730,17 @@ Sainath Grandhi Sakeven Jiang Sally O'Malley Sam Neirinck +Sam Thibault Samarth Shah Sambuddha Basu Sami Tabet Samuel Cochran Samuel Karp +Sandro Jäckel Santhosh Manohar Sargun Dhillon Saswat Bhattacharya +Saurabh Kumar Scott Brenner Scott Collier Sean Christopherson @@ -643,7 +767,8 @@ Slava Semushin Solomon Hykes Song Gao Spencer Brown -squeegels <1674195+squeegels@users.noreply.github.com> +Spring Lee +squeegels Srini Brahmaroutu Stefan S. Stefan Scherer @@ -654,6 +779,7 @@ Stephen Rust Steve Durrheimer Steve Richards Steven Burgess +Stoica-Marcu Floris-Andrei Subhajit Ghosh Sun Jianbo Sune Keller @@ -665,7 +791,10 @@ Sébastien HOUZÉ T K Sourabh TAGOMORI Satoshi taiji-tech +Takeshi Koenuma +Takuya Noguchi Taylor Jones +Teiva Harsanyi Tejaswini Duggaraju Tengfei Wang Teppei Fukuda @@ -685,6 +814,7 @@ Tim Hockin Tim Sampson Tim Smith Tim Waugh +Tim Welsh Tim Wraight timfeirg Timothy Hobbs @@ -696,6 +826,7 @@ Tom Fotherby Tom Klingenberg Tom Milligan Tom X. Tobin +Tomas Bäckman Tomas Tomecek Tomasz Kopczynski Tomáš Hrčka @@ -710,12 +841,15 @@ uhayate Ulrich Bareth Ulysses Souza Umesh Yadav +Vaclav Struhar Valentin Lorentz +Vardan Pogosian Venkateswara Reddy Bukkasamudram Veres Lajos Victor Vieux Victoria Bialas Viktor Stanchev +Ville Skyttä Vimal Raghubir Vincent Batts Vincent Bernat @@ -752,20 +886,25 @@ Yong Tang Yosef Fertel Yu Peng Yuan Sun +Yucheng Wu Yue Zhang Yunxiang Huang Zachary Romero Zander Mackie zebrilee +Zeel B Patel Zhang Kun Zhang Wei Zhang Wentao ZhangHang zhenghenghuo +Zhiwei Liang Zhou Hao Zhoulin Xie Zhu Guihua +Zhuo Zhi Álex González Álvaro Lázaro Átila Camurça Alves +Александр Менщиков <__Singleton__@hackerdom.ru> 徐俊杰 diff --git a/vendor/github.com/docker/cli/NOTICE b/vendor/github.com/docker/cli/NOTICE index 58b19b6d15b9..1c40faaec612 100644 --- a/vendor/github.com/docker/cli/NOTICE +++ b/vendor/github.com/docker/cli/NOTICE @@ -14,6 +14,6 @@ United States and other governments. It is your responsibility to ensure that your use and/or transfer does not violate applicable laws. -For more information, please see https://www.bis.doc.gov +For more information, see https://www.bis.doc.gov See also https://www.apache.org/dev/crypto.html and/or seek legal counsel. diff --git a/vendor/github.com/docker/cli/cli/config/config.go b/vendor/github.com/docker/cli/cli/config/config.go index 31ad117d4159..5a518432601d 100644 --- a/vendor/github.com/docker/cli/cli/config/config.go +++ b/vendor/github.com/docker/cli/cli/config/config.go @@ -4,44 +4,38 @@ import ( "fmt" "io" "os" + "os/user" "path/filepath" + "runtime" "strings" "sync" "github.com/docker/cli/cli/config/configfile" "github.com/docker/cli/cli/config/credentials" "github.com/docker/cli/cli/config/types" - "github.com/docker/docker/pkg/homedir" "github.com/pkg/errors" ) const ( - // ConfigFileName is the name of config file + // EnvOverrideConfigDir is the name of the environment variable that can be + // used to override the location of the client configuration files (~/.docker). + // + // It takes priority over the default, but can be overridden by the "--config" + // command line option. + EnvOverrideConfigDir = "DOCKER_CONFIG" + + // ConfigFileName is the name of the client configuration file inside the + // config-directory. ConfigFileName = "config.json" configFileDir = ".docker" - oldConfigfile = ".dockercfg" contextsDir = "contexts" ) var ( initConfigDir = new(sync.Once) configDir string - homeDir string ) -// resetHomeDir is used in testing to reset the "homeDir" package variable to -// force re-lookup of the home directory between tests. -func resetHomeDir() { - homeDir = "" -} - -func getHomeDir() string { - if homeDir == "" { - homeDir = homedir.Get() - } - return homeDir -} - // resetConfigDir is used in testing to reset the "configDir" package variable // and its sync.Once to force re-lookup between tests. func resetConfigDir() { @@ -49,19 +43,40 @@ func resetConfigDir() { initConfigDir = new(sync.Once) } -func setConfigDir() { - if configDir != "" { - return - } - configDir = os.Getenv("DOCKER_CONFIG") - if configDir == "" { - configDir = filepath.Join(getHomeDir(), configFileDir) +// getHomeDir returns the home directory of the current user with the help of +// environment variables depending on the target operating system. +// Returned path should be used with "path/filepath" to form new paths. +// +// On non-Windows platforms, it falls back to nss lookups, if the home +// directory cannot be obtained from environment-variables. +// +// If linking statically with cgo enabled against glibc, ensure the +// osusergo build tag is used. +// +// If needing to do nss lookups, do not disable cgo or set osusergo. +// +// getHomeDir is a copy of [pkg/homedir.Get] to prevent adding docker/docker +// as dependency for consumers that only need to read the config-file. +// +// [pkg/homedir.Get]: https://pkg.go.dev/github.com/docker/docker@v26.1.4+incompatible/pkg/homedir#Get +func getHomeDir() string { + home, _ := os.UserHomeDir() + if home == "" && runtime.GOOS != "windows" { + if u, err := user.Current(); err == nil { + return u.HomeDir + } } + return home } // Dir returns the directory the configuration file is stored in func Dir() string { - initConfigDir.Do(setConfigDir) + initConfigDir.Do(func() { + configDir = os.Getenv(EnvOverrideConfigDir) + if configDir == "" { + configDir = filepath.Join(getHomeDir(), configFileDir) + } + }) return configDir } @@ -72,6 +87,8 @@ func ContextStoreDir() string { // SetDir sets the directory the configuration file is stored in func SetDir(dir string) { + // trigger the sync.Once to synchronise with Dir() + initConfigDir.Do(func() {}) configDir = filepath.Clean(dir) } @@ -84,18 +101,8 @@ func Path(p ...string) (string, error) { return path, nil } -// LegacyLoadFromReader is a convenience function that creates a ConfigFile object from -// a non-nested reader -func LegacyLoadFromReader(configData io.Reader) (*configfile.ConfigFile, error) { - configFile := configfile.ConfigFile{ - AuthConfigs: make(map[string]types.AuthConfig), - } - err := configFile.LegacyLoadFromReader(configData) - return &configFile, err -} - // LoadFromReader is a convenience function that creates a ConfigFile object from -// a reader +// a reader. It returns an error if configData is malformed. func LoadFromReader(configData io.Reader) (*configfile.ConfigFile, error) { configFile := configfile.ConfigFile{ AuthConfigs: make(map[string]types.AuthConfig), @@ -104,61 +111,59 @@ func LoadFromReader(configData io.Reader) (*configfile.ConfigFile, error) { return &configFile, err } -// Load reads the configuration files in the given directory, and sets up -// the auth config information and returns values. -// FIXME: use the internal golang config parser +// Load reads the configuration file ([ConfigFileName]) from the given directory. +// If no directory is given, it uses the default [Dir]. A [*configfile.ConfigFile] +// is returned containing the contents of the configuration file, or a default +// struct if no configfile exists in the given location. +// +// Load returns an error if a configuration file exists in the given location, +// but cannot be read, or is malformed. Consumers must handle errors to prevent +// overwriting an existing configuration file. func Load(configDir string) (*configfile.ConfigFile, error) { - cfg, _, err := load(configDir) - return cfg, err -} - -// TODO remove this temporary hack, which is used to warn about the deprecated ~/.dockercfg file -// so we can remove the bool return value and collapse this back into `Load` -func load(configDir string) (*configfile.ConfigFile, bool, error) { - printLegacyFileWarning := false - if configDir == "" { configDir = Dir() } + return load(configDir) +} +func load(configDir string) (*configfile.ConfigFile, error) { filename := filepath.Join(configDir, ConfigFileName) configFile := configfile.New(filename) - // Try happy path first - latest config file - if file, err := os.Open(filename); err == nil { - defer file.Close() - err = configFile.LoadFromReader(file) - if err != nil { - err = errors.Wrap(err, filename) + file, err := os.Open(filename) + if err != nil { + if os.IsNotExist(err) { + // It is OK for no configuration file to be present, in which + // case we return a default struct. + return configFile, nil } - return configFile, printLegacyFileWarning, err - } else if !os.IsNotExist(err) { - // if file is there but we can't stat it for any reason other - // than it doesn't exist then stop - return configFile, printLegacyFileWarning, errors.Wrap(err, filename) + // Any other error happening when failing to read the file must be returned. + return configFile, errors.Wrap(err, "loading config file") } - - // Can't find latest config file so check for the old one - filename = filepath.Join(getHomeDir(), oldConfigfile) - if file, err := os.Open(filename); err == nil { - printLegacyFileWarning = true - defer file.Close() - if err := configFile.LegacyLoadFromReader(file); err != nil { - return configFile, printLegacyFileWarning, errors.Wrap(err, filename) - } + defer file.Close() + err = configFile.LoadFromReader(file) + if err != nil { + err = errors.Wrapf(err, "loading config file: %s: ", filename) } - return configFile, printLegacyFileWarning, nil + return configFile, err } // LoadDefaultConfigFile attempts to load the default config file and returns -// an initialized ConfigFile struct if none is found. +// a reference to the ConfigFile struct. If none is found or when failing to load +// the configuration file, it initializes a default ConfigFile struct. If no +// credentials-store is set in the configuration file, it attempts to discover +// the default store to use for the current platform. +// +// Important: LoadDefaultConfigFile prints a warning to stderr when failing to +// load the configuration file, but otherwise ignores errors. Consumers should +// consider using [Load] (and [credentials.DetectDefaultStore]) to detect errors +// when updating the configuration file, to prevent discarding a (malformed) +// configuration file. func LoadDefaultConfigFile(stderr io.Writer) *configfile.ConfigFile { - configFile, printLegacyFileWarning, err := load(Dir()) + configFile, err := load(Dir()) if err != nil { - fmt.Fprintf(stderr, "WARNING: Error loading config file: %v\n", err) - } - if printLegacyFileWarning { - _, _ = fmt.Fprintln(stderr, "WARNING: Support for the legacy ~/.dockercfg configuration file and file-format is deprecated and will be removed in an upcoming release") + // FIXME(thaJeztah): we should not proceed here to prevent overwriting existing (but malformed) config files; see https://github.com/docker/cli/issues/5075 + _, _ = fmt.Fprintln(stderr, "WARNING: Error", err) } if !configFile.ContainsAuth() { configFile.CredentialsStore = credentials.DetectDefaultStore(configFile.CredentialsStore) diff --git a/vendor/github.com/docker/cli/cli/config/configfile/file.go b/vendor/github.com/docker/cli/cli/config/configfile/file.go index d6f710817ab2..ae9dcb3370c7 100644 --- a/vendor/github.com/docker/cli/cli/config/configfile/file.go +++ b/vendor/github.com/docker/cli/cli/config/configfile/file.go @@ -3,9 +3,7 @@ package configfile import ( "encoding/base64" "encoding/json" - "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -16,13 +14,6 @@ import ( "github.com/sirupsen/logrus" ) -const ( - // This constant is only used for really old config files when the - // URL wasn't saved as part of the config file and it was just - // assumed to be this value. - defaultIndexServer = "https://index.docker.io/v1/" -) - // ConfigFile ~/.docker/config.json file info type ConfigFile struct { AuthConfigs map[string]types.AuthConfig `json:"auths"` @@ -46,12 +37,11 @@ type ConfigFile struct { PruneFilters []string `json:"pruneFilters,omitempty"` Proxies map[string]ProxyConfig `json:"proxies,omitempty"` Experimental string `json:"experimental,omitempty"` - StackOrchestrator string `json:"stackOrchestrator,omitempty"` - Kubernetes *KubernetesConfig `json:"kubernetes,omitempty"` CurrentContext string `json:"currentContext,omitempty"` CLIPluginsExtraDirs []string `json:"cliPluginsExtraDirs,omitempty"` Plugins map[string]map[string]string `json:"plugins,omitempty"` Aliases map[string]string `json:"aliases,omitempty"` + Features map[string]string `json:"features,omitempty"` } // ProxyConfig contains proxy configuration settings @@ -60,11 +50,7 @@ type ProxyConfig struct { HTTPSProxy string `json:"httpsProxy,omitempty"` NoProxy string `json:"noProxy,omitempty"` FTPProxy string `json:"ftpProxy,omitempty"` -} - -// KubernetesConfig contains Kubernetes orchestrator settings -type KubernetesConfig struct { - AllNamespaces string `json:"allNamespaces,omitempty"` + AllProxy string `json:"allProxy,omitempty"` } // New initializes an empty configuration file for the given filename 'fn' @@ -78,44 +64,6 @@ func New(fn string) *ConfigFile { } } -// LegacyLoadFromReader reads the non-nested configuration data given and sets up the -// auth config information with given directory and populates the receiver object -func (configFile *ConfigFile) LegacyLoadFromReader(configData io.Reader) error { - b, err := ioutil.ReadAll(configData) - if err != nil { - return err - } - - if err := json.Unmarshal(b, &configFile.AuthConfigs); err != nil { - arr := strings.Split(string(b), "\n") - if len(arr) < 2 { - return errors.Errorf("The Auth config file is empty") - } - authConfig := types.AuthConfig{} - origAuth := strings.Split(arr[0], " = ") - if len(origAuth) != 2 { - return errors.Errorf("Invalid Auth config file") - } - authConfig.Username, authConfig.Password, err = decodeAuth(origAuth[1]) - if err != nil { - return err - } - authConfig.ServerAddress = defaultIndexServer - configFile.AuthConfigs[defaultIndexServer] = authConfig - } else { - for k, authConfig := range configFile.AuthConfigs { - authConfig.Username, authConfig.Password, err = decodeAuth(authConfig.Auth) - if err != nil { - return err - } - authConfig.Auth = "" - authConfig.ServerAddress = k - configFile.AuthConfigs[k] = authConfig - } - } - return nil -} - // LoadFromReader reads the configuration data given and sets up the auth config // information with given directory and populates the receiver object func (configFile *ConfigFile) LoadFromReader(configData io.Reader) error { @@ -134,7 +82,7 @@ func (configFile *ConfigFile) LoadFromReader(configData io.Reader) error { ac.ServerAddress = addr configFile.AuthConfigs[addr] = ac } - return checkKubernetesConfiguration(configFile.Kubernetes) + return nil } // ContainsAuth returns whether there is authentication configured @@ -147,6 +95,9 @@ func (configFile *ConfigFile) ContainsAuth() bool { // GetAuthConfigs returns the mapping of repo to auth configuration func (configFile *ConfigFile) GetAuthConfigs() map[string]types.AuthConfig { + if configFile.AuthConfigs == nil { + configFile.AuthConfigs = make(map[string]types.AuthConfig) + } return configFile.AuthConfigs } @@ -191,10 +142,10 @@ func (configFile *ConfigFile) Save() (retErr error) { } dir := filepath.Dir(configFile.Filename) - if err := os.MkdirAll(dir, 0700); err != nil { + if err := os.MkdirAll(dir, 0o700); err != nil { return err } - temp, err := ioutil.TempFile(dir, filepath.Base(configFile.Filename)) + temp, err := os.CreateTemp(dir, filepath.Base(configFile.Filename)) if err != nil { return err } @@ -244,6 +195,7 @@ func (configFile *ConfigFile) ParseProxyConfig(host string, runOpts map[string]* "HTTPS_PROXY": &config.HTTPSProxy, "NO_PROXY": &config.NoProxy, "FTP_PROXY": &config.FTPProxy, + "ALL_PROXY": &config.AllProxy, } m := runOpts if m == nil { @@ -292,12 +244,11 @@ func decodeAuth(authStr string) (string, string, error) { if n > decLen { return "", "", errors.Errorf("Something went wrong decoding auth config") } - arr := strings.SplitN(string(decoded), ":", 2) - if len(arr) != 2 { + userName, password, ok := strings.Cut(string(decoded), ":") + if !ok || userName == "" { return "", "", errors.Errorf("Invalid auth configuration file") } - password := strings.Trim(arr[1], "\x00") - return arr[0], password, nil + return userName, strings.Trim(password, "\x00"), nil } // GetCredentialsStore returns a new credentials store from the settings in the @@ -352,7 +303,9 @@ func (configFile *ConfigFile) GetAllCredentials() (map[string]types.AuthConfig, for registryHostname := range configFile.CredentialHelpers { newAuth, err := configFile.GetAuthConfig(registryHostname) if err != nil { - return nil, err + // TODO(thaJeztah): use context-logger, so that this output can be suppressed (in tests). + logrus.WithError(err).Warnf("Failed to get credentials for registry: %s", registryHostname) + continue } auths[registryHostname] = newAuth } @@ -399,17 +352,3 @@ func (configFile *ConfigFile) SetPluginConfig(pluginname, option, value string) delete(configFile.Plugins, pluginname) } } - -func checkKubernetesConfiguration(kubeConfig *KubernetesConfig) error { - if kubeConfig == nil { - return nil - } - switch kubeConfig.AllNamespaces { - case "": - case "enabled": - case "disabled": - default: - return fmt.Errorf("invalid 'kubernetes.allNamespaces' value, should be 'enabled' or 'disabled': %s", kubeConfig.AllNamespaces) - } - return nil -} diff --git a/vendor/github.com/docker/cli/cli/config/configfile/file_unix.go b/vendor/github.com/docker/cli/cli/config/configfile/file_unix.go index 6af67181268a..06b811e7d5fd 100644 --- a/vendor/github.com/docker/cli/cli/config/configfile/file_unix.go +++ b/vendor/github.com/docker/cli/cli/config/configfile/file_unix.go @@ -1,5 +1,4 @@ //go:build !windows -// +build !windows package configfile @@ -12,7 +11,7 @@ import ( // ignoring any error during the process. func copyFilePermissions(src, dst string) { var ( - mode os.FileMode = 0600 + mode os.FileMode = 0o600 uid, gid int ) diff --git a/vendor/github.com/docker/cli/cli/config/credentials/default_store.go b/vendor/github.com/docker/cli/cli/config/credentials/default_store.go index 402235bff025..a36afc41f4f5 100644 --- a/vendor/github.com/docker/cli/cli/config/credentials/default_store.go +++ b/vendor/github.com/docker/cli/cli/config/credentials/default_store.go @@ -1,21 +1,22 @@ package credentials -import ( - exec "golang.org/x/sys/execabs" -) +import "os/exec" // DetectDefaultStore return the default credentials store for the platform if -// the store executable is available. +// no user-defined store is passed, and the store executable is available. func DetectDefaultStore(store string) string { - platformDefault := defaultCredentialsStore() - - // user defined or no default for platform - if store != "" || platformDefault == "" { + if store != "" { + // use user-defined return store } - if _, err := exec.LookPath(remoteCredentialsPrefix + platformDefault); err == nil { - return platformDefault + platformDefault := defaultCredentialsStore() + if platformDefault == "" { + return "" + } + + if _, err := exec.LookPath(remoteCredentialsPrefix + platformDefault); err != nil { + return "" } - return "" + return platformDefault } diff --git a/vendor/github.com/docker/cli/cli/config/credentials/default_store_unsupported.go b/vendor/github.com/docker/cli/cli/config/credentials/default_store_unsupported.go index c9630ea51bad..40c16eb837d9 100644 --- a/vendor/github.com/docker/cli/cli/config/credentials/default_store_unsupported.go +++ b/vendor/github.com/docker/cli/cli/config/credentials/default_store_unsupported.go @@ -1,5 +1,4 @@ //go:build !windows && !darwin && !linux -// +build !windows,!darwin,!linux package credentials diff --git a/vendor/github.com/docker/cli/cli/config/credentials/file_store.go b/vendor/github.com/docker/cli/cli/config/credentials/file_store.go index e509820b73f0..95406281501c 100644 --- a/vendor/github.com/docker/cli/cli/config/credentials/file_store.go +++ b/vendor/github.com/docker/cli/cli/config/credentials/file_store.go @@ -1,6 +1,8 @@ package credentials import ( + "net" + "net/url" "strings" "github.com/docker/cli/cli/config/types" @@ -23,8 +25,13 @@ func NewFileStore(file store) Store { return &fileStore{file: file} } -// Erase removes the given credentials from the file store. +// Erase removes the given credentials from the file store.This function is +// idempotent and does not update the file if credentials did not change. func (c *fileStore) Erase(serverAddress string) error { + if _, exists := c.file.GetAuthConfigs()[serverAddress]; !exists { + // nothing to do; no credentials found for the given serverAddress + return nil + } delete(c.file.GetAuthConfigs(), serverAddress) return c.file.Save() } @@ -50,9 +57,15 @@ func (c *fileStore) GetAll() (map[string]types.AuthConfig, error) { return c.file.GetAuthConfigs(), nil } -// Store saves the given credentials in the file store. +// Store saves the given credentials in the file store. This function is +// idempotent and does not update the file if credentials did not change. func (c *fileStore) Store(authConfig types.AuthConfig) error { - c.file.GetAuthConfigs()[authConfig.ServerAddress] = authConfig + authConfigs := c.file.GetAuthConfigs() + if oldAuthConfig, ok := authConfigs[authConfig.ServerAddress]; ok && oldAuthConfig == authConfig { + // Credentials didn't change, so skip updating the configuration file. + return nil + } + authConfigs[authConfig.ServerAddress] = authConfig return c.file.Save() } @@ -67,15 +80,17 @@ func (c *fileStore) IsFileStore() bool { // ConvertToHostname converts a registry url which has http|https prepended // to just an hostname. // Copied from github.com/docker/docker/registry.ConvertToHostname to reduce dependencies. -func ConvertToHostname(url string) string { - stripped := url - if strings.HasPrefix(url, "http://") { - stripped = strings.TrimPrefix(url, "http://") - } else if strings.HasPrefix(url, "https://") { - stripped = strings.TrimPrefix(url, "https://") +func ConvertToHostname(maybeURL string) string { + stripped := maybeURL + if strings.Contains(stripped, "://") { + u, err := url.Parse(stripped) + if err == nil && u.Hostname() != "" { + if u.Port() == "" { + return u.Hostname() + } + return net.JoinHostPort(u.Hostname(), u.Port()) + } } - - nameParts := strings.SplitN(stripped, "/", 2) - - return nameParts[0] + hostName, _, _ := strings.Cut(stripped, "/") + return hostName } diff --git a/vendor/github.com/docker/cli/cli/config/credentials/native_store.go b/vendor/github.com/docker/cli/cli/config/credentials/native_store.go index f9619b0381c8..b9af145b9dcb 100644 --- a/vendor/github.com/docker/cli/cli/config/credentials/native_store.go +++ b/vendor/github.com/docker/cli/cli/config/credentials/native_store.go @@ -51,6 +51,7 @@ func (c *nativeStore) Get(serverAddress string) (types.AuthConfig, error) { auth.Username = creds.Username auth.IdentityToken = creds.IdentityToken auth.Password = creds.Password + auth.ServerAddress = creds.ServerAddress return auth, nil } @@ -76,6 +77,9 @@ func (c *nativeStore) GetAll() (map[string]types.AuthConfig, error) { ac.Username = creds.Username ac.Password = creds.Password ac.IdentityToken = creds.IdentityToken + if ac.ServerAddress == "" { + ac.ServerAddress = creds.ServerAddress + } authConfigs[registry] = ac } diff --git a/vendor/github.com/docker/docker-credential-helpers/client/client.go b/vendor/github.com/docker/docker-credential-helpers/client/client.go index d1d0434cb558..7ca5ab722288 100644 --- a/vendor/github.com/docker/docker-credential-helpers/client/client.go +++ b/vendor/github.com/docker/docker-credential-helpers/client/client.go @@ -16,17 +16,15 @@ func isValidCredsMessage(msg string) error { if credentials.IsCredentialsMissingServerURLMessage(msg) { return credentials.NewErrCredentialsMissingServerURL() } - if credentials.IsCredentialsMissingUsernameMessage(msg) { return credentials.NewErrCredentialsMissingUsername() } - return nil } // Store uses an external program to save credentials. func Store(program ProgramFunc, creds *credentials.Credentials) error { - cmd := program("store") + cmd := program(credentials.ActionStore) buffer := new(bytes.Buffer) if err := json.NewEncoder(buffer).Encode(creds); err != nil { @@ -36,13 +34,10 @@ func Store(program ProgramFunc, creds *credentials.Credentials) error { out, err := cmd.Output() if err != nil { - t := strings.TrimSpace(string(out)) - - if isValidErr := isValidCredsMessage(t); isValidErr != nil { + if isValidErr := isValidCredsMessage(string(out)); isValidErr != nil { err = isValidErr } - - return fmt.Errorf("error storing credentials - err: %v, out: `%s`", err, t) + return fmt.Errorf("error storing credentials - err: %v, out: `%s`", err, strings.TrimSpace(string(out))) } return nil @@ -50,22 +45,20 @@ func Store(program ProgramFunc, creds *credentials.Credentials) error { // Get executes an external program to get the credentials from a native store. func Get(program ProgramFunc, serverURL string) (*credentials.Credentials, error) { - cmd := program("get") + cmd := program(credentials.ActionGet) cmd.Input(strings.NewReader(serverURL)) out, err := cmd.Output() if err != nil { - t := strings.TrimSpace(string(out)) - - if credentials.IsErrCredentialsNotFoundMessage(t) { + if credentials.IsErrCredentialsNotFoundMessage(string(out)) { return nil, credentials.NewErrCredentialsNotFound() } - if isValidErr := isValidCredsMessage(t); isValidErr != nil { + if isValidErr := isValidCredsMessage(string(out)); isValidErr != nil { err = isValidErr } - return nil, fmt.Errorf("error getting credentials - err: %v, out: `%s`", err, t) + return nil, fmt.Errorf("error getting credentials - err: %v, out: `%s`", err, strings.TrimSpace(string(out))) } resp := &credentials.Credentials{ @@ -81,7 +74,7 @@ func Get(program ProgramFunc, serverURL string) (*credentials.Credentials, error // Erase executes a program to remove the server credentials from the native store. func Erase(program ProgramFunc, serverURL string) error { - cmd := program("erase") + cmd := program(credentials.ActionErase) cmd.Input(strings.NewReader(serverURL)) out, err := cmd.Output() if err != nil { @@ -99,7 +92,7 @@ func Erase(program ProgramFunc, serverURL string) error { // List executes a program to list server credentials in the native store. func List(program ProgramFunc) (map[string]string, error) { - cmd := program("list") + cmd := program(credentials.ActionList) cmd.Input(strings.NewReader("unused")) out, err := cmd.Output() if err != nil { diff --git a/vendor/github.com/docker/docker-credential-helpers/client/command.go b/vendor/github.com/docker/docker-credential-helpers/client/command.go index 0183c0639393..1936234befdb 100644 --- a/vendor/github.com/docker/docker-credential-helpers/client/command.go +++ b/vendor/github.com/docker/docker-credential-helpers/client/command.go @@ -1,11 +1,9 @@ package client import ( - "fmt" "io" "os" - - exec "golang.org/x/sys/execabs" + "os/exec" ) // Program is an interface to execute external programs. @@ -31,27 +29,26 @@ func NewShellProgramFuncWithEnv(name string, env *map[string]string) ProgramFunc func createProgramCmdRedirectErr(commandName string, args []string, env *map[string]string) *exec.Cmd { programCmd := exec.Command(commandName, args...) - programCmd.Env = os.Environ() if env != nil { for k, v := range *env { - programCmd.Env = append(programCmd.Env, fmt.Sprintf("%s=%s", k, v)) + programCmd.Env = append(programCmd.Environ(), k+"="+v) } } programCmd.Stderr = os.Stderr return programCmd } -// Shell invokes shell commands to talk with a remote credentials helper. +// Shell invokes shell commands to talk with a remote credentials-helper. type Shell struct { cmd *exec.Cmd } -// Output returns responses from the remote credentials helper. +// Output returns responses from the remote credentials-helper. func (s *Shell) Output() ([]byte, error) { return s.cmd.Output() } -// Input sets the input to send to a remote credentials helper. +// Input sets the input to send to a remote credentials-helper. func (s *Shell) Input(in io.Reader) { s.cmd.Stdin = in } diff --git a/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go b/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go index 91d9d4bbae9f..eac55188497b 100644 --- a/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go +++ b/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go @@ -10,6 +10,20 @@ import ( "strings" ) +// Action defines the name of an action (sub-command) supported by a +// credential-helper binary. It is an alias for "string", and mostly +// for convenience. +type Action = string + +// List of actions (sub-commands) supported by credential-helper binaries. +const ( + ActionStore Action = "store" + ActionGet Action = "get" + ActionErase Action = "erase" + ActionList Action = "list" + ActionVersion Action = "version" +) + // Credentials holds the information shared between docker and the credentials store. type Credentials struct { ServerURL string @@ -43,42 +57,52 @@ func SetCredsLabel(label string) { CredsLabel = label } -// Serve initializes the credentials helper and parses the action argument. +// Serve initializes the credentials-helper and parses the action argument. // This function is designed to be called from a command line interface. // It uses os.Args[1] as the key for the action. // It uses os.Stdin as input and os.Stdout as output. // This function terminates the program with os.Exit(1) if there is an error. func Serve(helper Helper) { - var err error if len(os.Args) != 2 { - err = fmt.Errorf("Usage: %s ", os.Args[0]) + _, _ = fmt.Fprintln(os.Stdout, usage()) + os.Exit(1) } - if err == nil { - err = HandleCommand(helper, os.Args[1], os.Stdin, os.Stdout) + switch os.Args[1] { + case "--version", "-v": + _ = PrintVersion(os.Stdout) + os.Exit(0) + case "--help", "-h": + _, _ = fmt.Fprintln(os.Stdout, usage()) + os.Exit(0) } - if err != nil { - fmt.Fprintf(os.Stdout, "%v\n", err) + if err := HandleCommand(helper, os.Args[1], os.Stdin, os.Stdout); err != nil { + _, _ = fmt.Fprintln(os.Stdout, err) os.Exit(1) } } -// HandleCommand uses a helper and a key to run a credential action. -func HandleCommand(helper Helper, key string, in io.Reader, out io.Writer) error { - switch key { - case "store": +func usage() string { + return fmt.Sprintf("Usage: %s ", Name) +} + +// HandleCommand runs a helper to execute a credential action. +func HandleCommand(helper Helper, action Action, in io.Reader, out io.Writer) error { + switch action { + case ActionStore: return Store(helper, in) - case "get": + case ActionGet: return Get(helper, in, out) - case "erase": + case ActionErase: return Erase(helper, in) - case "list": + case ActionList: return List(helper, out) - case "version": + case ActionVersion: return PrintVersion(out) + default: + return fmt.Errorf("%s: unknown action: %s", Name, action) } - return fmt.Errorf("Unknown credential action `%s`", key) } // Store uses a helper and an input reader to save credentials. @@ -132,18 +156,17 @@ func Get(helper Helper, reader io.Reader, writer io.Writer) error { return err } - resp := Credentials{ + buffer.Reset() + err = json.NewEncoder(buffer).Encode(Credentials{ ServerURL: serverURL, Username: username, Secret: secret, - } - - buffer.Reset() - if err := json.NewEncoder(buffer).Encode(resp); err != nil { + }) + if err != nil { return err } - fmt.Fprint(writer, buffer.String()) + _, _ = fmt.Fprint(writer, buffer.String()) return nil } @@ -181,6 +204,6 @@ func List(helper Helper, writer io.Writer) error { // PrintVersion outputs the current version. func PrintVersion(writer io.Writer) error { - fmt.Fprintf(writer, "%s (%s) %s\n", Name, Package, Version) + _, _ = fmt.Fprintf(writer, "%s (%s) %s\n", Name, Package, Version) return nil } diff --git a/vendor/github.com/docker/docker-credential-helpers/credentials/error.go b/vendor/github.com/docker/docker-credential-helpers/credentials/error.go index fe6a5aef45c0..2283d5a44c7f 100644 --- a/vendor/github.com/docker/docker-credential-helpers/credentials/error.go +++ b/vendor/github.com/docker/docker-credential-helpers/credentials/error.go @@ -1,5 +1,10 @@ package credentials +import ( + "errors" + "strings" +) + const ( // ErrCredentialsNotFound standardizes the not found error, so every helper returns // the same message and docker can handle it properly. @@ -21,6 +26,11 @@ func (errCredentialsNotFound) Error() string { return errCredentialsNotFoundMessage } +// NotFound implements the [ErrNotFound][errdefs.ErrNotFound] interface. +// +// [errdefs.ErrNotFound]: https://pkg.go.dev/github.com/docker/docker@v24.0.1+incompatible/errdefs#ErrNotFound +func (errCredentialsNotFound) NotFound() {} + // NewErrCredentialsNotFound creates a new error // for when the credentials are not in the store. func NewErrCredentialsNotFound() error { @@ -30,8 +40,8 @@ func NewErrCredentialsNotFound() error { // IsErrCredentialsNotFound returns true if the error // was caused by not having a set of credentials in a store. func IsErrCredentialsNotFound(err error) bool { - _, ok := err.(errCredentialsNotFound) - return ok + var target errCredentialsNotFound + return errors.As(err, &target) } // IsErrCredentialsNotFoundMessage returns true if the error @@ -40,7 +50,7 @@ func IsErrCredentialsNotFound(err error) bool { // This function helps to check messages returned by an // external program via its standard output. func IsErrCredentialsNotFoundMessage(err string) bool { - return err == errCredentialsNotFoundMessage + return strings.TrimSpace(err) == errCredentialsNotFoundMessage } // errCredentialsMissingServerURL represents an error raised @@ -53,6 +63,12 @@ func (errCredentialsMissingServerURL) Error() string { return errCredentialsMissingServerURLMessage } +// InvalidParameter implements the [ErrInvalidParameter][errdefs.ErrInvalidParameter] +// interface. +// +// [errdefs.ErrInvalidParameter]: https://pkg.go.dev/github.com/docker/docker@v24.0.1+incompatible/errdefs#ErrInvalidParameter +func (errCredentialsMissingServerURL) InvalidParameter() {} + // errCredentialsMissingUsername represents an error raised // when the credentials object has no username or when no // username is provided to a credentials operation requiring @@ -63,6 +79,12 @@ func (errCredentialsMissingUsername) Error() string { return errCredentialsMissingUsernameMessage } +// InvalidParameter implements the [ErrInvalidParameter][errdefs.ErrInvalidParameter] +// interface. +// +// [errdefs.ErrInvalidParameter]: https://pkg.go.dev/github.com/docker/docker@v24.0.1+incompatible/errdefs#ErrInvalidParameter +func (errCredentialsMissingUsername) InvalidParameter() {} + // NewErrCredentialsMissingServerURL creates a new error for // errCredentialsMissingServerURL. func NewErrCredentialsMissingServerURL() error { @@ -78,25 +100,25 @@ func NewErrCredentialsMissingUsername() error { // IsCredentialsMissingServerURL returns true if the error // was an errCredentialsMissingServerURL. func IsCredentialsMissingServerURL(err error) bool { - _, ok := err.(errCredentialsMissingServerURL) - return ok + var target errCredentialsMissingServerURL + return errors.As(err, &target) } // IsCredentialsMissingServerURLMessage checks for an // errCredentialsMissingServerURL in the error message. func IsCredentialsMissingServerURLMessage(err string) bool { - return err == errCredentialsMissingServerURLMessage + return strings.TrimSpace(err) == errCredentialsMissingServerURLMessage } // IsCredentialsMissingUsername returns true if the error // was an errCredentialsMissingUsername. func IsCredentialsMissingUsername(err error) bool { - _, ok := err.(errCredentialsMissingUsername) - return ok + var target errCredentialsMissingUsername + return errors.As(err, &target) } // IsCredentialsMissingUsernameMessage checks for an // errCredentialsMissingUsername in the error message. func IsCredentialsMissingUsernameMessage(err string) bool { - return err == errCredentialsMissingUsernameMessage + return strings.TrimSpace(err) == errCredentialsMissingUsernameMessage } diff --git a/vendor/github.com/docker/docker/AUTHORS b/vendor/github.com/docker/docker/AUTHORS deleted file mode 100644 index 48d04f9a983f..000000000000 --- a/vendor/github.com/docker/docker/AUTHORS +++ /dev/null @@ -1,2429 +0,0 @@ -# File @generated by hack/generate-authors.sh. DO NOT EDIT. -# This file lists all contributors to the repository. -# See hack/generate-authors.sh to make modifications. - -Aanand Prasad -Aaron Davidson -Aaron Feng -Aaron Hnatiw -Aaron Huslage -Aaron L. Xu -Aaron Lehmann -Aaron Welch -Abel Muiño -Abhijeet Kasurde -Abhinandan Prativadi -Abhinav Ajgaonkar -Abhishek Chanda -Abhishek Sharma -Abin Shahab -Abirdcfly -Ada Mancini -Adam Avilla -Adam Dobrawy -Adam Eijdenberg -Adam Kunk -Adam Miller -Adam Mills -Adam Pointer -Adam Singer -Adam Thornton -Adam Walz -Adam Williams -AdamKorcz -Addam Hardy -Aditi Rajagopal -Aditya -Adnan Khan -Adolfo Ochagavía -Adria Casas -Adrian Moisey -Adrian Mouat -Adrian Oprea -Adrien Folie -Adrien Gallouët -Ahmed Kamal -Ahmet Alp Balkan -Aidan Feldman -Aidan Hobson Sayers -AJ Bowen -Ajey Charantimath -ajneu -Akash Gupta -Akhil Mohan -Akihiro Matsushima -Akihiro Suda -Akim Demaille -Akira Koyasu -Akshay Karle -Akshay Moghe -Al Tobey -alambike -Alan Hoyle -Alan Scherger -Alan Thompson -Albert Callarisa -Albert Zhang -Albin Kerouanton -Alec Benson -Alejandro González Hevia -Aleksa Sarai -Aleksandr Chebotov -Aleksandrs Fadins -Alena Prokharchyk -Alessandro Boch -Alessio Biancalana -Alex Chan -Alex Chen -Alex Coventry -Alex Crawford -Alex Ellis -Alex Gaynor -Alex Goodman -Alex Nordlund -Alex Olshansky -Alex Samorukov -Alex Stockinger -Alex Warhawk -Alexander Artemenko -Alexander Boyd -Alexander Larsson -Alexander Midlash -Alexander Morozov -Alexander Polakov -Alexander Shopov -Alexandre Beslic -Alexandre Garnier -Alexandre González -Alexandre Jomin -Alexandru Sfirlogea -Alexei Margasov -Alexey Guskov -Alexey Kotlyarov -Alexey Shamrin -Alexis Ries -Alexis Thomas -Alfred Landrum -Ali Dehghani -Alicia Lauerman -Alihan Demir -Allen Madsen -Allen Sun -almoehi -Alvaro Saurin -Alvin Deng -Alvin Richards -amangoel -Amen Belayneh -Ameya Gawde -Amir Goldstein -Amit Bakshi -Amit Krishnan -Amit Shukla -Amr Gawish -Amy Lindburg -Anand Patil -AnandkumarPatel -Anatoly Borodin -Anca Iordache -Anchal Agrawal -Anda Xu -Anders Janmyr -Andre Dublin <81dublin@gmail.com> -Andre Granovsky -Andrea Denisse Gómez -Andrea Luzzardi -Andrea Turli -Andreas Elvers -Andreas Köhler -Andreas Savvides -Andreas Tiefenthaler -Andrei Gherzan -Andrei Ushakov -Andrei Vagin -Andrew C. Bodine -Andrew Clay Shafer -Andrew Duckworth -Andrew France -Andrew Gerrand -Andrew Guenther -Andrew He -Andrew Hsu -Andrew Kim -Andrew Kuklewicz -Andrew Macgregor -Andrew Macpherson -Andrew Martin -Andrew McDonnell -Andrew Munsell -Andrew Pennebaker -Andrew Po -Andrew Weiss -Andrew Williams -Andrews Medina -Andrey Kolomentsev -Andrey Petrov -Andrey Stolbovsky -André Martins -Andy Chambers -andy diller -Andy Goldstein -Andy Kipp -Andy Lindeman -Andy Rothfusz -Andy Smith -Andy Wilson -Andy Zhang -Aneesh Kulkarni -Anes Hasicic -Angel Velazquez -Anil Belur -Anil Madhavapeddy -Ankit Jain -Ankush Agarwal -Anonmily -Anran Qiao -Anshul Pundir -Anthon van der Neut -Anthony Baire -Anthony Bishopric -Anthony Dahanne -Anthony Sottile -Anton Löfgren -Anton Nikitin -Anton Polonskiy -Anton Tiurin -Antonio Murdaca -Antonis Kalipetis -Antony Messerli -Anuj Bahuguna -Anuj Varma -Anusha Ragunathan -Anyu Wang -apocas -Arash Deshmeh -arcosx -ArikaChen -Arko Dasgupta -Arnaud Lefebvre -Arnaud Porterie -Arnaud Rebillout -Artem Khramov -Arthur Barr -Arthur Gautier -Artur Meyster -Arun Gupta -Asad Saeeduddin -Asbjørn Enge -Austin Vazquez -averagehuman -Avi Das -Avi Kivity -Avi Miller -Avi Vaid -ayoshitake -Azat Khuyiyakhmetov -Bao Yonglei -Bardia Keyoumarsi -Barnaby Gray -Barry Allard -Bartłomiej Piotrowski -Bastiaan Bakker -Bastien Pascard -bdevloed -Bearice Ren -Ben Bonnefoy -Ben Firshman -Ben Golub -Ben Gould -Ben Hall -Ben Langfeld -Ben Lovy -Ben Sargent -Ben Severson -Ben Toews -Ben Wiklund -Benjamin Atkin -Benjamin Baker -Benjamin Boudreau -Benjamin Böhmke -Benjamin Wang -Benjamin Yolken -Benny Ng -Benoit Chesneau -Bernerd Schaefer -Bernhard M. Wiedemann -Bert Goethals -Bertrand Roussel -Bevisy Zhang -Bharath Thiruveedula -Bhiraj Butala -Bhumika Bayani -Bilal Amarni -Bill Wang -Billy Ridgway -Bily Zhang -Bin Liu -Bingshen Wang -Bjorn Neergaard -Blake Geno -Boaz Shuster -bobby abbott -Bojun Zhu -Boqin Qin -Boris Pruessmann -Boshi Lian -Bouke Haarsma -Boyd Hemphill -boynux -Bradley Cicenas -Bradley Wright -Brandon Liu -Brandon Philips -Brandon Rhodes -Brendan Dixon -Brennan Kinney <5098581+polarathene@users.noreply.github.com> -Brent Salisbury -Brett Higgins -Brett Kochendorfer -Brett Milford -Brett Randall -Brian (bex) Exelbierd -Brian Bland -Brian DeHamer -Brian Dorsey -Brian Flad -Brian Goff -Brian McCallister -Brian Olsen -Brian Schwind -Brian Shumate -Brian Torres-Gil -Brian Trump -Brice Jaglin -Briehan Lombaard -Brielle Broder -Bruno Bigras -Bruno Binet -Bruno Gazzera -Bruno Renié -Bruno Tavares -Bryan Bess -Bryan Boreham -Bryan Matsuo -Bryan Murphy -Burke Libbey -Byung Kang -Caleb Spare -Calen Pennington -Cameron Boehmer -Cameron Sparr -Cameron Spear -Campbell Allen -Candid Dauth -Cao Weiwei -Carl Henrik Lunde -Carl Loa Odin -Carl X. Su -Carlo Mion -Carlos Alexandro Becker -Carlos de Paula -Carlos Sanchez -Carol Fager-Higgins -Cary -Casey Bisson -Catalin Pirvu -Ce Gao -Cedric Davies -Cezar Sa Espinola -Chad Swenson -Chance Zibolski -Chander Govindarajan -Chanhun Jeong -Chao Wang -Charles Chan -Charles Hooper -Charles Law -Charles Lindsay -Charles Merriam -Charles Sarrazin -Charles Smith -Charlie Drage -Charlie Lewis -Chase Bolt -ChaYoung You -Chee Hau Lim -Chen Chao -Chen Chuanliang -Chen Hanxiao -Chen Min -Chen Mingjie -Chen Qiu -Cheng-mean Liu -Chengfei Shang -Chengguang Xu -Chenyang Yan -chenyuzhu -Chetan Birajdar -Chewey -Chia-liang Kao -Chiranjeevi Tirunagari -chli -Cholerae Hu -Chris Alfonso -Chris Armstrong -Chris Dias -Chris Dituri -Chris Fordham -Chris Gavin -Chris Gibson -Chris Khoo -Chris Kreussling (Flatbush Gardener) -Chris McKinnel -Chris McKinnel -Chris Price -Chris Seto -Chris Snow -Chris St. Pierre -Chris Stivers -Chris Swan -Chris Telfer -Chris Wahl -Chris Weyl -Chris White -Christian Becker -Christian Berendt -Christian Brauner -Christian Böhme -Christian Muehlhaeuser -Christian Persson -Christian Rotzoll -Christian Simon -Christian Stefanescu -Christoph Ziebuhr -Christophe Mehay -Christophe Troestler -Christophe Vidal -Christopher Biscardi -Christopher Crone -Christopher Currie -Christopher Jones -Christopher Latham -Christopher Rigor -Christy Norman -Chun Chen -Ciro S. Costa -Clayton Coleman -Clint Armstrong -Clinton Kitson -clubby789 -Cody Roseborough -Coenraad Loubser -Colin Dunklau -Colin Hebert -Colin Panisset -Colin Rice -Colin Walters -Collin Guarino -Colm Hally -companycy -Conor Evans -Corbin Coleman -Corey Farrell -Cory Forsyth -Cory Snider -cressie176 -Cristian Ariza -Cristian Staretu -cristiano balducci -Cristina Yenyxe Gonzalez Garcia -Cruceru Calin-Cristian -cui fliter -CUI Wei -Cuong Manh Le -Cyprian Gracz -Cyril F -Da McGrady -Daan van Berkel -Daehyeok Mun -Dafydd Crosby -dalanlan -Damian Smyth -Damien Nadé -Damien Nozay -Damjan Georgievski -Dan Anolik -Dan Buch -Dan Cotora -Dan Feldman -Dan Griffin -Dan Hirsch -Dan Keder -Dan Levy -Dan McPherson -Dan Plamadeala -Dan Stine -Dan Williams -Dani Hodovic -Dani Louca -Daniel Antlinger -Daniel Black -Daniel Dao -Daniel Exner -Daniel Farrell -Daniel Garcia -Daniel Gasienica -Daniel Grunwell -Daniel Helfand -Daniel Hiltgen -Daniel J Walsh -Daniel Menet -Daniel Mizyrycki -Daniel Nephin -Daniel Norberg -Daniel Nordberg -Daniel P. Berrangé -Daniel Robinson -Daniel S -Daniel Sweet -Daniel Von Fange -Daniel Watkins -Daniel X Moore -Daniel YC Lin -Daniel Zhang -Daniele Rondina -Danny Berger -Danny Milosavljevic -Danny Yates -Danyal Khaliq -Darren Coxall -Darren Shepherd -Darren Stahl -Dattatraya Kumbhar -Davanum Srinivas -Dave Barboza -Dave Goodchild -Dave Henderson -Dave MacDonald -Dave Tucker -David Anderson -David Bellotti -David Calavera -David Chung -David Corking -David Cramer -David Currie -David Davis -David Dooling -David Gageot -David Gebler -David Glasser -David Karlsson <35727626+dvdksn@users.noreply.github.com> -David Lawrence -David Lechner -David M. Karr -David Mackey -David Manouchehri -David Mat -David Mcanulty -David McKay -David O'Rourke -David P Hilton -David Pelaez -David R. Jenni -David Röthlisberger -David Sheets -David Sissitka -David Trott -David Wang <00107082@163.com> -David Williamson -David Xia -David Young -Davide Ceretti -Dawn Chen -dbdd -dcylabs -Debayan De -Deborah Gertrude Digges -deed02392 -Deep Debroy -Deng Guangxing -Deni Bertovic -Denis Defreyne -Denis Gladkikh -Denis Ollier -Dennis Chen -Dennis Chen -Dennis Docter -Derek -Derek -Derek Ch -Derek McGowan -Deric Crago -Deshi Xiao -Devon Estes -Devvyn Murphy -Dharmit Shah -Dhawal Yogesh Bhanushali -Dhilip Kumars -Diego Romero -Diego Siqueira -Dieter Reuter -Dillon Dixon -Dima Stopel -Dimitri John Ledkov -Dimitris Mandalidis -Dimitris Rozakis -Dimitry Andric -Dinesh Subhraveti -Ding Fei -dingwei -Diogo Monica -DiuDiugirl -Djibril Koné -Djordje Lukic -dkumor -Dmitri Logvinenko -Dmitri Shuralyov -Dmitry Demeshchuk -Dmitry Gusev -Dmitry Kononenko -Dmitry Sharshakov -Dmitry Shyshkin -Dmitry Smirnov -Dmitry V. Krivenok -Dmitry Vorobev -Dmytro Iakovliev -docker-unir[bot] -Dolph Mathews -Dominic Tubach -Dominic Yin -Dominik Dingel -Dominik Finkbeiner -Dominik Honnef -Don Kirkby -Don Kjer -Don Spaulding -Donald Huang -Dong Chen -Donghwa Kim -Donovan Jones -Dorin Geman -Doron Podoleanu -Doug Davis -Doug MacEachern -Doug Tangren -Douglas Curtis -Dr Nic Williams -dragon788 -Dražen Lučanin -Drew Erny -Drew Hubl -Dustin Sallings -Ed Costello -Edmund Wagner -Eiichi Tsukata -Eike Herzbach -Eivin Giske Skaaren -Eivind Uggedal -Elan Ruusamäe -Elango Sivanandam -Elena Morozova -Eli Uriegas -Elias Faxö -Elias Koromilas -Elias Probst -Elijah Zupancic -eluck -Elvir Kuric -Emil Davtyan -Emil Hernvall -Emily Maier -Emily Rose -Emir Ozer -Eng Zer Jun -Enguerran -Enrico Weigelt, metux IT consult -Eohyung Lee -epeterso -er0k -Eric Barch -Eric Curtin -Eric G. Noriega -Eric Hanchrow -Eric Lee -Eric Mountain -Eric Myhre -Eric Paris -Eric Rafaloff -Eric Rosenberg -Eric Sage -Eric Soderstrom -Eric Yang -Eric-Olivier Lamey -Erica Windisch -Erich Cordoba -Erik Bray -Erik Dubbelboer -Erik Hollensbe -Erik Inge Bolsø -Erik Kristensen -Erik Sipsma -Erik St. Martin -Erik Weathers -Erno Hopearuoho -Erwin van der Koogh -Espen Suenson -Ethan Bell -Ethan Mosbaugh -Euan Harris -Euan Kemp -Eugen Krizo -Eugene Yakubovich -Evan Allrich -Evan Carmi -Evan Hazlett -Evan Krall -Evan Lezar -Evan Phoenix -Evan Wies -Evelyn Xu -Everett Toews -Evgeniy Makhrov -Evgeny Shmarnev -Evgeny Vereshchagin -Ewa Czechowska -Eystein Måløy Stenberg -ezbercih -Ezra Silvera -Fabian Kramm -Fabian Lauer -Fabian Raetz -Fabiano Rosas -Fabio Falci -Fabio Kung -Fabio Rapposelli -Fabio Rehm -Fabrizio Regini -Fabrizio Soppelsa -Faiz Khan -falmp -Fangming Fang -Fangyuan Gao <21551127@zju.edu.cn> -fanjiyun -Fareed Dudhia -Fathi Boudra -Federico Gimenez -Felipe Oliveira -Felipe Ruhland -Felix Abecassis -Felix Geisendörfer -Felix Hupfeld -Felix Rabe -Felix Ruess -Felix Schindler -Feng Yan -Fengtu Wang -Ferenc Szabo -Fernando -Fero Volar -Feroz Salam -Ferran Rodenas -Filipe Brandenburger -Filipe Oliveira -Flavio Castelli -Flavio Crisciani -Florian -Florian Klein -Florian Maier -Florian Noeding -Florian Schmaus -Florian Weingarten -Florin Asavoaie -Florin Patan -fonglh -Foysal Iqbal -Francesc Campoy -Francesco Degrassi -Francesco Mari -Francis Chuang -Francisco Carriedo -Francisco Souza -Frank Groeneveld -Frank Herrmann -Frank Macreery -Frank Rosquin -Frank Villaro-Dixon -Frank Yang -Fred Lifton -Frederick F. Kautz IV -Frederico F. de Oliveira -Frederik Loeffert -Frederik Nordahl Jul Sabroe -Freek Kalter -Frieder Bluemle -frobnicaty <92033765+frobnicaty@users.noreply.github.com> -Frédéric Dalleau -Fu JinLin -Félix Baylac-Jacqué -Félix Cantournet -Gabe Rosenhouse -Gabor Nagy -Gabriel Adrian Samfira -Gabriel Goller -Gabriel L. Somlo -Gabriel Linder -Gabriel Monroy -Gabriel Nicolas Avellaneda -Gaetan de Villele -Galen Sampson -Gang Qiao -Gareth Rushgrove -Garrett Barboza -Gary Schaetz -Gaurav -Gaurav Singh -Gaël PORTAY -Genki Takiuchi -GennadySpb -Geoff Levand -Geoffrey Bachelet -Geon Kim -George Kontridze -George MacRorie -George Xie -Georgi Hristozov -Georgy Yakovlev -Gereon Frey -German DZ -Gert van Valkenhoef -Gerwim Feiken -Ghislain Bourgeois -Giampaolo Mancini -Gianluca Borello -Gildas Cuisinier -Giovan Isa Musthofa -gissehel -Giuseppe Mazzotta -Giuseppe Scrivano -Gleb Fotengauer-Malinovskiy -Gleb M Borisov -Glyn Normington -GoBella -Goffert van Gool -Goldwyn Rodrigues -Gopikannan Venugopalsamy -Gosuke Miyashita -Gou Rao -Govinda Fichtner -Grant Millar -Grant Reaber -Graydon Hoare -Greg Fausak -Greg Pflaum -Greg Stephens -Greg Thornton -Grzegorz Jaśkiewicz -Guilhem Lettron -Guilherme Salgado -Guillaume Dufour -Guillaume J. Charmes -Gunadhya S. <6939749+gunadhya@users.noreply.github.com> -Guoqiang QI -guoxiuyan -Guri -Gurjeet Singh -Guruprasad -Gustav Sinder -gwx296173 -Günter Zöchbauer -Haichao Yang -haikuoliu -haining.cao -Hakan Özler -Hamish Hutchings -Hannes Ljungberg -Hans Kristian Flaatten -Hans Rødtang -Hao Shu Wei -Hao Zhang <21521210@zju.edu.cn> -Harald Albers -Harald Niesche -Harley Laue -Harold Cooper -Harrison Turton -Harry Zhang -Harshal Patil -Harshal Patil -He Simei -He Xiaoxi -He Xin -heartlock <21521209@zju.edu.cn> -Hector Castro -Helen Xie -Henning Sprang -Hiroshi Hatake -Hiroyuki Sasagawa -Hobofan -Hollie Teal -Hong Xu -Hongbin Lu -Hongxu Jia -Honza Pokorny -Hsing-Hui Hsu -Hsing-Yu (David) Chen -hsinko <21551195@zju.edu.cn> -Hu Keping -Hu Tao -HuanHuan Ye -Huanzhong Zhang -Huayi Zhang -Hugo Barrera -Hugo Duncan -Hugo Marisco <0x6875676f@gmail.com> -Hui Kang -Hunter Blanks -huqun -Huu Nguyen -Hyeongkyu Lee -Hyzhou Zhy -Iago López Galeiras -Ian Bishop -Ian Bull -Ian Calvert -Ian Campbell -Ian Chen -Ian Lee -Ian Main -Ian Philpot -Ian Truslove -Iavael -Icaro Seara -Ignacio Capurro -Igor Dolzhikov -Igor Karpovich -Iliana Weller -Ilkka Laukkanen -Illia Antypenko -Illo Abdulrahim -Ilya Dmitrichenko -Ilya Gusev -Ilya Khlopotov -imre Fitos -inglesp -Ingo Gottwald -Innovimax -Isaac Dupree -Isabel Jimenez -Isaiah Grace -Isao Jonas -Iskander Sharipov -Ivan Babrou -Ivan Fraixedes -Ivan Grcic -Ivan Markin -J Bruni -J. Nunn -Jack Danger Canty -Jack Laxson -Jacob Atzen -Jacob Edelman -Jacob Tomlinson -Jacob Vallejo -Jacob Wen -Jaime Cepeda -Jaivish Kothari -Jake Champlin -Jake Moshenko -Jake Sanders -Jakub Drahos -Jakub Guzik -James Allen -James Carey -James Carr -James DeFelice -James Harrison Fisher -James Kyburz -James Kyle -James Lal -James Mills -James Nesbitt -James Nugent -James Sanders -James Turnbull -James Watkins-Harvey -Jamie Hannaford -Jamshid Afshar -Jan Breig -Jan Chren -Jan Garcia -Jan Götte -Jan Keromnes -Jan Koprowski -Jan Pazdziora -Jan Toebes -Jan-Gerd Tenberge -Jan-Jaap Driessen -Jana Radhakrishnan -Jannick Fahlbusch -Januar Wayong -Jared Biel -Jared Hocutt -Jaroslaw Zabiello -Jasmine Hegman -Jason A. Donenfeld -Jason Divock -Jason Giedymin -Jason Green -Jason Hall -Jason Heiss -Jason Livesay -Jason McVetta -Jason Plum -Jason Shepherd -Jason Smith -Jason Sommer -Jason Stangroome -Javier Bassi -jaxgeller -Jay -Jay Kamat -Jay Lim -Jean Rouge -Jean-Baptiste Barth -Jean-Baptiste Dalido -Jean-Christophe Berthon -Jean-Michel Rouet -Jean-Paul Calderone -Jean-Pierre Huynh -Jean-Tiare Le Bigot -Jeeva S. Chelladhurai -Jeff Anderson -Jeff Hajewski -Jeff Johnston -Jeff Lindsay -Jeff Mickey -Jeff Minard -Jeff Nickoloff -Jeff Silberman -Jeff Welch -Jeff Zvier -Jeffrey Bolle -Jeffrey Morgan -Jeffrey van Gogh -Jenny Gebske -Jeremy Chambers -Jeremy Grosser -Jeremy Huntwork -Jeremy Price -Jeremy Qian -Jeremy Unruh -Jeremy Yallop -Jeroen Franse -Jeroen Jacobs -Jesse Dearing -Jesse Dubay -Jessica Frazelle -Jeyanthinath Muthuram -Jezeniel Zapanta -Jhon Honce -Ji.Zhilong -Jian Liao -Jian Zhang -Jiang Jinyang -Jianyong Wu -Jie Luo -Jie Ma -Jihyun Hwang -Jilles Oldenbeuving -Jim Alateras -Jim Carroll -Jim Ehrismann -Jim Galasyn -Jim Lin -Jim Minter -Jim Perrin -Jimmy Cuadra -Jimmy Puckett -Jimmy Song -Jinsoo Park -Jintao Zhang -Jiri Appl -Jiri Popelka -Jiuyue Ma -Jiří Župka -Joakim Roubert -Joao Fernandes -Joao Trindade -Joe Beda -Joe Doliner -Joe Ferguson -Joe Gordon -Joe Shaw -Joe Van Dyk -Joel Friedly -Joel Handwell -Joel Hansson -Joel Wurtz -Joey Geiger -Joey Geiger -Joey Gibson -Joffrey F -Johan Euphrosine -Johan Rydberg -Johanan Lieberman -Johannes 'fish' Ziemke -John Costa -John Feminella -John Gardiner Myers -John Gossman -John Harris -John Howard -John Laswell -John Maguire -John Mulhausen -John OBrien III -John Starks -John Stephens -John Tims -John V. Martinez -John Warwick -John Willis -Jon Johnson -Jon Surrell -Jon Wedaman -Jonas Dohse -Jonas Heinrich -Jonas Pfenniger -Jonathan A. Schweder -Jonathan A. Sternberg -Jonathan Boulle -Jonathan Camp -Jonathan Choy -Jonathan Dowland -Jonathan Lebon -Jonathan Lomas -Jonathan McCrohan -Jonathan Mueller -Jonathan Pares -Jonathan Rudenberg -Jonathan Stoppani -Jonh Wendell -Joni Sar -Joost Cassee -Jordan Arentsen -Jordan Jennings -Jordan Sissel -Jordi Massaguer Pla -Jorge Marin -Jorit Kleine-Möllhoff -Jose Diaz-Gonzalez -Joseph Anthony Pasquale Holsten -Joseph Hager -Joseph Kern -Joseph Rothrock -Josh -Josh Bodah -Josh Bonczkowski -Josh Chorlton -Josh Eveleth -Josh Hawn -Josh Horwitz -Josh Poimboeuf -Josh Soref -Josh Wilson -Josiah Kiehl -José Tomás Albornoz -Joyce Jang -JP -Julian Taylor -Julien Barbier -Julien Bisconti -Julien Bordellier -Julien Dubois -Julien Kassar -Julien Maitrehenry -Julien Pervillé -Julien Pivotto -Julio Guerra -Julio Montes -Jun Du -Jun-Ru Chang -junxu -Jussi Nummelin -Justas Brazauskas -Justen Martin -Justin Chadwell -Justin Cormack -Justin Force -Justin Keller <85903732+jk-vb@users.noreply.github.com> -Justin Menga -Justin Plock -Justin Simonelis -Justin Terry -Justyn Temme -Jyrki Puttonen -Jérémy Leherpeur -Jérôme Petazzoni -Jörg Thalheim -K. Heller -Kai Blin -Kai Qiang Wu (Kennan) -Kaijie Chen -Kamil Domański -Kamjar Gerami -Kanstantsin Shautsou -Kara Alexandra -Karan Lyons -Kareem Khazem -kargakis -Karl Grzeszczak -Karol Duleba -Karthik Karanth -Karthik Nayak -Kasper Fabæch Brandt -Kate Heddleston -Katie McLaughlin -Kato Kazuyoshi -Katrina Owen -Kawsar Saiyeed -Kay Yan -kayrus -Kazuhiro Sera -Kazuyoshi Kato -Ke Li -Ke Xu -Kei Ohmura -Keith Hudgins -Keli Hu -Ken Bannister -Ken Cochrane -Ken Herner -Ken ICHIKAWA -Ken Reese -Kenfe-Mickaël Laventure -Kenjiro Nakayama -Kent Johnson -Kenta Tada -Kevin "qwazerty" Houdebert -Kevin Alvarez -Kevin Burke -Kevin Clark -Kevin Feyrer -Kevin J. Lynagh -Kevin Jing Qiu -Kevin Kern -Kevin Menard -Kevin Meredith -Kevin P. Kucharczyk -Kevin Parsons -Kevin Richardson -Kevin Shi -Kevin Wallace -Kevin Yap -Keyvan Fatehi -kies -Kim BKC Carlbacker -Kim Eik -Kimbro Staken -Kir Kolyshkin -Kiran Gangadharan -Kirill SIbirev -Kirk Easterson -knappe -Kohei Tsuruta -Koichi Shiraishi -Konrad Kleine -Konrad Ponichtera -Konstantin Gribov -Konstantin L -Konstantin Pelykh -Kostadin Plachkov -kpcyrd -Krasi Georgiev -Krasimir Georgiev -Kris-Mikael Krister -Kristian Haugene -Kristina Zabunova -Krystian Wojcicki -Kunal Kushwaha -Kunal Tyagi -Kyle Conroy -Kyle Linden -Kyle Squizzato -Kyle Wuolle -kyu -Lachlan Coote -Lai Jiangshan -Lajos Papp -Lakshan Perera -Lalatendu Mohanty -Lance Chen -Lance Kinley -Lars Butler -Lars Kellogg-Stedman -Lars R. Damerow -Lars-Magnus Skog -Laszlo Meszaros -Laura Brehm -Laura Frank -Laurent Bernaille -Laurent Erignoux -Laurie Voss -Leandro Motta Barros -Leandro Siqueira -Lee Calcote -Lee Chao <932819864@qq.com> -Lee, Meng-Han -Lei Gong -Lei Jitang -Leiiwang -Len Weincier -Lennie -Leo Gallucci -Leonardo Nodari -Leonardo Taccari -Leszek Kowalski -Levi Blackstone -Levi Gross -Levi Harrison -Lewis Daly -Lewis Marshall -Lewis Peckover -Li Yi -Liam Macgillavry -Liana Lo -Liang Mingqiang -Liang-Chi Hsieh -liangwei -Liao Qingwei -Lifubang -Lihua Tang -Lily Guo -limeidan -Lin Lu -LingFaKe -Linus Heckemann -Liran Tal -Liron Levin -Liu Bo -Liu Hua -liwenqi -lixiaobing10051267 -Liz Zhang -LIZAO LI -Lizzie Dixon <_@lizzie.io> -Lloyd Dewolf -Lokesh Mandvekar -longliqiang88 <394564827@qq.com> -Lorenz Leutgeb -Lorenzo Fontana -Lotus Fenn -Louis Delossantos -Louis Opter -Luboslav Pivarc -Luca Favatella -Luca Marturana -Luca Orlandi -Luca-Bogdan Grigorescu -Lucas Chan -Lucas Chi -Lucas Molas -Lucas Silvestre -Luciano Mores -Luis Henrique Mulinari -Luis Martínez de Bartolomé Izquierdo -Luiz Svoboda -Lukas Heeren -Lukas Waslowski -lukaspustina -Lukasz Zajaczkowski -Luke Marsden -Lyn -Lynda O'Leary -Lénaïc Huard -Ma Müller -Ma Shimiao -Mabin -Madhan Raj Mookkandy -Madhav Puri -Madhu Venugopal -Mageee -Mahesh Tiyyagura -malnick -Malte Janduda -Manfred Touron -Manfred Zabarauskas -Manjunath A Kumatagi -Mansi Nahar -Manuel Meurer -Manuel Rüger -Manuel Woelker -mapk0y -Marat Radchenko -Marc Abramowitz -Marc Kuo -Marc Tamsky -Marcel Edmund Franke -Marcelo Horacio Fortino -Marcelo Salazar -Marco Hennings -Marcus Cobden -Marcus Farkas -Marcus Linke -Marcus Martins -Marcus Ramberg -Marek Goldmann -Marian Marinov -Marianna Tessel -Mario Loriedo -Marius Gundersen -Marius Sturm -Marius Voila -Mark Allen -Mark Feit -Mark Jeromin -Mark McGranaghan -Mark McKinstry -Mark Milstein -Mark Oates -Mark Parker -Mark Vainomaa -Mark West -Markan Patel -Marko Mikulicic -Marko Tibold -Markus Fix -Markus Kortlang -Martijn Dwars -Martijn van Oosterhout -Martin Braun -Martin Dojcak -Martin Honermeyer -Martin Jirku -Martin Kelly -Martin Mosegaard Amdisen -Martin Muzatko -Martin Redmond -Maru Newby -Mary Anthony -Masahito Zembutsu -Masato Ohba -Masayuki Morita -Mason Malone -Mateusz Sulima -Mathias Monnerville -Mathieu Champlon -Mathieu Le Marec - Pasquet -Mathieu Parent -Mathieu Paturel -Matt Apperson -Matt Bachmann -Matt Bajor -Matt Bentley -Matt Haggard -Matt Hoyle -Matt McCormick -Matt Moore -Matt Morrison <3maven@gmail.com> -Matt Richardson -Matt Rickard -Matt Robenolt -Matt Schurenko -Matt Williams -Matthew Heon -Matthew Lapworth -Matthew Mayer -Matthew Mosesohn -Matthew Mueller -Matthew Riley -Matthias Klumpp -Matthias Kühnle -Matthias Rampke -Matthieu Fronton -Matthieu Hauglustaine -Mattias Jernberg -Mauricio Garavaglia -mauriyouth -Max Harmathy -Max Shytikov -Max Timchenko -Maxim Fedchyshyn -Maxim Ivanov -Maxim Kulkin -Maxim Treskin -Maxime Petazzoni -Maximiliano Maccanti -Maxwell -Meaglith Ma -meejah -Megan Kostick -Mehul Kar -Mei ChunTao -Mengdi Gao -Menghui Chen -Mert Yazıcıoğlu -mgniu -Micah Zoltu -Michael A. Smith -Michael Beskin -Michael Bridgen -Michael Brown -Michael Chiang -Michael Crosby -Michael Currie -Michael Friis -Michael Gorsuch -Michael Grauer -Michael Holzheu -Michael Hudson-Doyle -Michael Huettermann -Michael Irwin -Michael Kebe -Michael Kuehn -Michael Käufl -Michael Neale -Michael Nussbaum -Michael Prokop -Michael Scharf -Michael Spetsiotis -Michael Stapelberg -Michael Steinert -Michael Thies -Michael Weidmann -Michael West -Michael Zhao -Michal Fojtik -Michal Gebauer -Michal Jemala -Michal Kostrzewa -Michal Minář -Michal Rostecki -Michal Wieczorek -Michaël Pailloncy -Michał Czeraszkiewicz -Michał Gryko -Michał Kosek -Michiel de Jong -Mickaël Fortunato -Mickaël Remars -Miguel Angel Fernández -Miguel Morales -Miguel Perez -Mihai Borobocea -Mihuleacc Sergiu -Mikael Davranche -Mike Brown -Mike Bush -Mike Casas -Mike Chelen -Mike Danese -Mike Dillon -Mike Dougherty -Mike Estes -Mike Gaffney -Mike Goelzer -Mike Leone -Mike Lundy -Mike MacCana -Mike Naberezny -Mike Snitzer -Mike Sul -mikelinjie <294893458@qq.com> -Mikhail Sobolev -Miklos Szegedi -Milas Bowman -Milind Chawre -Miloslav Trmač -mingqing -Mingzhen Feng -Misty Stanley-Jones -Mitch Capper -Mizuki Urushida -mlarcher -Mohammad Banikazemi -Mohammad Nasirifar -Mohammed Aaqib Ansari -Mohd Sadiq -Mohit Soni -Moorthy RS -Morgan Bauer -Morgante Pell -Morgy93 -Morten Siebuhr -Morton Fox -Moysés Borges -mrfly -Mrunal Patel -Muayyad Alsadi -Muhammad Zohaib Aslam -Mustafa Akın -Muthukumar R -Máximo Cuadros -Médi-Rémi Hashim -Nace Oroz -Nahum Shalman -Nakul Pathak -Nalin Dahyabhai -Nan Monnand Deng -Naoki Orii -Natalie Parker -Natanael Copa -Natasha Jarus -Nate Brennand -Nate Eagleson -Nate Jones -Nathan Carlson -Nathan Herald -Nathan Hsieh -Nathan Kleyn -Nathan LeClaire -Nathan McCauley -Nathan Williams -Naveed Jamil -Neal McBurnett -Neil Horman -Neil Peterson -Nelson Chen -Neyazul Haque -Nghia Tran -Niall O'Higgins -Nicholas E. Rabenau -Nick Adcock -Nick DeCoursin -Nick Irvine -Nick Neisen -Nick Parker -Nick Payne -Nick Russo -Nick Santos -Nick Stenning -Nick Stinemates -Nick Wood -NickrenREN -Nicola Kabar -Nicolas Borboën -Nicolas De Loof -Nicolas Dudebout -Nicolas Goy -Nicolas Kaiser -Nicolas Sterchele -Nicolas V Castet -Nicolás Hock Isaza -Niel Drummond -Nigel Poulton -Nik Nyby -Nikhil Chawla -NikolaMandic -Nikolas Garofil -Nikolay Edigaryev -Nikolay Milovanov -ningmingxiao -Nirmal Mehta -Nishant Totla -NIWA Hideyuki -Noah Meyerhans -Noah Treuhaft -NobodyOnSE -noducks -Nolan Darilek -Nolan Miles -Noriki Nakamura -nponeccop -Nurahmadie -Nuutti Kotivuori -nzwsch -O.S. Tezer -objectified -Odin Ugedal -Oguz Bilgic -Oh Jinkyun -Ohad Schneider -ohmystack -Ole Reifschneider -Oliver Neal -Oliver Reason -Olivier Gambier -Olle Jonsson -Olli Janatuinen -Olly Pomeroy -Omri Shiv -Onur Filiz -Oriol Francès -Oscar Bonilla <6f6231@gmail.com> -oscar.chen <2972789494@qq.com> -Oskar Niburski -Otto Kekäläinen -Ouyang Liduo -Ovidio Mallo -Panagiotis Moustafellos -Paolo G. Giarrusso -Pascal -Pascal Bach -Pascal Borreli -Pascal Hartig -Patrick Böänziger -Patrick Devine -Patrick Haas -Patrick Hemmer -Patrick Stapleton -Patrik Cyvoct -pattichen -Paul "TBBle" Hampson -Paul -paul -Paul Annesley -Paul Bellamy -Paul Bowsher -Paul Furtado -Paul Hammond -Paul Jimenez -Paul Kehrer -Paul Lietar -Paul Liljenberg -Paul Morie -Paul Nasrat -Paul Seiffert -Paul Weaver -Paulo Gomes -Paulo Ribeiro -Pavel Lobashov -Pavel Matěja -Pavel Pletenev -Pavel Pospisil -Pavel Sutyrin -Pavel Tikhomirov -Pavlos Ratis -Pavol Vargovcik -Pawel Konczalski -Paweł Gronowski -payall4u -Peeyush Gupta -Peggy Li -Pei Su -Peng Tao -Penghan Wang -Per Weijnitz -perhapszzy@sina.com -Pete Woods -Peter Bourgon -Peter Braden -Peter Bücker -Peter Choi -Peter Dave Hello -Peter Edge -Peter Ericson -Peter Esbensen -Peter Jaffe -Peter Kang -Peter Malmgren -Peter Salvatore -Peter Volpe -Peter Waller -Petr Švihlík -Petros Angelatos -Phil -Phil Estes -Phil Sphicas -Phil Spitler -Philip Alexander Etling -Philip K. Warren -Philip Monroe -Philipp Fruck -Philipp Gillé -Philipp Wahala -Philipp Weissensteiner -Phillip Alexander -phineas -pidster -Piergiuliano Bossi -Pierre -Pierre Carrier -Pierre Dal-Pra -Pierre Wacrenier -Pierre-Alain RIVIERE -Piotr Bogdan -Piotr Karbowski -Porjo -Poul Kjeldager Sørensen -Pradeep Chhetri -Pradip Dhara -Pradipta Kr. Banerjee -Prasanna Gautam -Pratik Karki -Prayag Verma -Priya Wadhwa -Projjol Banerji -Przemek Hejman -Puneet Pruthi -Pure White -pysqz -Qiang Huang -Qin TianHuan -Qinglan Peng -Quan Tian -qudongfang -Quentin Brossard -Quentin Perez -Quentin Tayssier -r0n22 -Rachit Sharma -Radostin Stoyanov -Rafal Jeczalik -Rafe Colton -Raghavendra K T -Raghuram Devarakonda -Raja Sami -Rajat Pandit -Rajdeep Dua -Ralf Sippl -Ralle -Ralph Bean -Ramkumar Ramachandra -Ramon Brooker -Ramon van Alteren -RaviTeja Pothana -Ray Tsang -ReadmeCritic -realityone -Recursive Madman -Reficul -Regan McCooey -Remi Rampin -Remy Suen -Renato Riccieri Santos Zannon -Renaud Gaubert -Rhys Hiltner -Ri Xu -Ricardo N Feliciano -Rich Horwood -Rich Moyse -Rich Seymour -Richard Burnison -Richard Hansen -Richard Harvey -Richard Mathie -Richard Metzler -Richard Scothern -Richo Healey -Rick Bradley -Rick van de Loo -Rick Wieman -Rik Nijessen -Riku Voipio -Riley Guerin -Ritesh H Shukla -Riyaz Faizullabhoy -Rob Cowsill <42620235+rcowsill@users.noreply.github.com> -Rob Gulewich -Rob Murray -Rob Vesse -Robert Bachmann -Robert Bittle -Robert Obryk -Robert Schneider -Robert Shade -Robert Stern -Robert Terhaar -Robert Wallis -Robert Wang -Roberto G. Hashioka -Roberto Muñoz Fernández -Robin Naundorf -Robin Schneider -Robin Speekenbrink -Robin Thoni -robpc -Rodolfo Carvalho -Rodrigo Campos -Rodrigo Vaz -Roel Van Nyen -Roger Peppe -Rohit Jnagal -Rohit Kadam -Rohit Kapur -Rojin George -Roland Huß -Roland Kammerer -Roland Moriz -Roma Sokolov -Roman Dudin -Roman Mazur -Roman Strashkin -Roman Volosatovs -Roman Zabaluev -Ron Smits -Ron Williams -Rong Gao -Rong Zhang -Rongxiang Song -Rony Weng -root -root -root -root -Rory Hunter -Rory McCune -Ross Boucher -Rovanion Luckey -Roy Reznik -Royce Remer -Rozhnov Alexandr -Rudolph Gottesheim -Rui Cao -Rui Lopes -Ruilin Li -Runshen Zhu -Russ Magee -Ryan Abrams -Ryan Anderson -Ryan Aslett -Ryan Barry -Ryan Belgrave -Ryan Campbell -Ryan Detzel -Ryan Fowler -Ryan Liu -Ryan McLaughlin -Ryan O'Donnell -Ryan Seto -Ryan Shea -Ryan Simmen -Ryan Stelly -Ryan Thomas -Ryan Trauntvein -Ryan Wallner -Ryan Zhang -ryancooper7 -RyanDeng -Ryo Nakao -Ryoga Saito -Régis Behmo -Rémy Greinhofer -s. rannou -Sabin Basyal -Sachin Joshi -Sagar Hani -Sainath Grandhi -Sakeven Jiang -Salahuddin Khan -Sally O'Malley -Sam Abed -Sam Alba -Sam Bailey -Sam J Sharpe -Sam Neirinck -Sam Reis -Sam Rijs -Sam Thibault -Sam Whited -Sambuddha Basu -Sami Wagiaalla -Samuel Andaya -Samuel Dion-Girardeau -Samuel Karp -Samuel PHAN -sanchayanghosh -Sandeep Bansal -Sankar சங்கர் -Sanket Saurav -Santhosh Manohar -sapphiredev -Sargun Dhillon -Sascha Andres -Sascha Grunert -SataQiu -Satnam Singh -Satoshi Amemiya -Satoshi Tagomori -Scott Bessler -Scott Collier -Scott Johnston -Scott Moser -Scott Percival -Scott Stamp -Scott Walls -sdreyesg -Sean Christopherson -Sean Cronin -Sean Lee -Sean McIntyre -Sean OMeara -Sean P. Kane -Sean Rodman -Sebastiaan van Steenis -Sebastiaan van Stijn -Sebastian Höffner -Sebastian Radloff -Sebastian Thomschke -Sebastien Goasguen -Senthil Kumar Selvaraj -Senthil Kumaran -SeongJae Park -Seongyeol Lim -Serge Hallyn -Sergey Alekseev -Sergey Evstifeev -Sergii Kabashniuk -Sergio Lopez -Serhat Gülçiçek -SeungUkLee -Sevki Hasirci -Shane Canon -Shane da Silva -Shaun Kaasten -shaunol -Shawn Landden -Shawn Siefkas -shawnhe -Shayan Pooya -Shayne Wang -Shekhar Gulati -Sheng Yang -Shengbo Song -Shengjing Zhu -Shev Yan -Shih-Yuan Lee -Shihao Xia -Shijiang Wei -Shijun Qin -Shishir Mahajan -Shoubhik Bose -Shourya Sarcar -Shu-Wai Chow -shuai-z -Shukui Yang -Sian Lerk Lau -Siarhei Rasiukevich -Sidhartha Mani -sidharthamani -Silas Sewell -Silvan Jegen -Simão Reis -Simon Barendse -Simon Eskildsen -Simon Ferquel -Simon Leinen -Simon Menke -Simon Taranto -Simon Vikstrom -Sindhu S -Sjoerd Langkemper -skanehira -Smark Meng -Solganik Alexander -Solomon Hykes -Song Gao -Soshi Katsuta -Sotiris Salloumis -Soulou -Spencer Brown -Spencer Smith -Spike Curtis -Sridatta Thatipamala -Sridhar Ratnakumar -Srini Brahmaroutu -Srinivasan Srivatsan -Staf Wagemakers -Stanislav Bondarenko -Stanislav Levin -Steeve Morin -Stefan Berger -Stefan Gehrig -Stefan J. Wernli -Stefan Praszalowicz -Stefan S. -Stefan Scherer -Stefan Staudenmeyer -Stefan Weil -Steffen Butzer -Stephan Henningsen -Stephan Spindler -Stephen Benjamin -Stephen Crosby -Stephen Day -Stephen Drake -Stephen Rust -Steve Desmond -Steve Dougherty -Steve Durrheimer -Steve Francia -Steve Koch -Steven Burgess -Steven Erenst -Steven Hartland -Steven Iveson -Steven Merrill -Steven Richards -Steven Taylor -Stéphane Este-Gracias -Stig Larsson -Su Wang -Subhajit Ghosh -Sujith Haridasan -Sun Gengze <690388648@qq.com> -Sun Jianbo -Sune Keller -Sunny Gogoi -Suryakumar Sudar -Sven Dowideit -Swapnil Daingade -Sylvain Baubeau -Sylvain Bellemare -Sébastien -Sébastien HOUZÉ -Sébastien Luttringer -Sébastien Stormacq -Sören Tempel -Tabakhase -Tadej Janež -Takuto Sato -tang0th -Tangi Colin -Tatsuki Sugiura -Tatsushi Inagaki -Taylan Isikdemir -Taylor Jones -Ted M. Young -Tehmasp Chaudhri -Tejaswini Duggaraju -Tejesh Mehta -Terry Chu -terryding77 <550147740@qq.com> -Thatcher Peskens -theadactyl -Thell 'Bo' Fowler -Thermionix -Thiago Alves Silva -Thijs Terlouw -Thomas Bikeev -Thomas Frössman -Thomas Gazagnaire -Thomas Graf -Thomas Grainger -Thomas Hansen -Thomas Ledos -Thomas Leonard -Thomas Léveil -Thomas Orozco -Thomas Riccardi -Thomas Schroeter -Thomas Sjögren -Thomas Swift -Thomas Tanaka -Thomas Texier -Ti Zhou -Tiago Seabra -Tianon Gravi -Tianyi Wang -Tibor Vass -Tiffany Jernigan -Tiffany Low -Till Claassen -Till Wegmüller -Tim -Tim Bart -Tim Bosse -Tim Dettrick -Tim Düsterhus -Tim Hockin -Tim Potter -Tim Ruffles -Tim Smith -Tim Terhorst -Tim Wagner -Tim Wang -Tim Waugh -Tim Wraight -Tim Zju <21651152@zju.edu.cn> -timchenxiaoyu <837829664@qq.com> -timfeirg -Timo Rothenpieler -Timothy Hobbs -tjwebb123 -tobe -Tobias Bieniek -Tobias Bradtke -Tobias Gesellchen -Tobias Klauser -Tobias Munk -Tobias Pfandzelter -Tobias Schmidt -Tobias Schwab -Todd Crane -Todd Lunter -Todd Whiteman -Toli Kuznets -Tom Barlow -Tom Booth -Tom Denham -Tom Fotherby -Tom Howe -Tom Hulihan -Tom Maaswinkel -Tom Parker -Tom Sweeney -Tom Wilkie -Tom X. Tobin -Tom Zhao -Tomas Janousek -Tomas Kral -Tomas Tomecek -Tomasz Kopczynski -Tomasz Lipinski -Tomasz Nurkiewicz -Tomek Mańko -Tommaso Visconti -Tomoya Tabuchi -Tomáš Hrčka -tonic -Tonny Xu -Tony Abboud -Tony Daws -Tony Miller -toogley -Torstein Husebø -Toshiaki Makita -Tõnis Tiigi -Trace Andreason -tracylihui <793912329@qq.com> -Trapier Marshall -Travis Cline -Travis Thieman -Trent Ogren -Trevor -Trevor Pounds -Trevor Sullivan -Trishna Guha -Tristan Carel -Troy Denton -Tudor Brindus -Ty Alexander -Tycho Andersen -Tyler Brock -Tyler Brown -Tzu-Jung Lee -uhayate -Ulysse Carion -Umesh Yadav -Utz Bacher -vagrant -Vaidas Jablonskis -Valentin Kulesh -vanderliang -Velko Ivanov -Veres Lajos -Victor Algaze -Victor Coisne -Victor Costan -Victor I. Wood -Victor Lyuboslavsky -Victor Marmol -Victor Palma -Victor Vieux -Victoria Bialas -Vijaya Kumar K -Vikas Choudhary -Vikram bir Singh -Viktor Stanchev -Viktor Vojnovski -VinayRaghavanKS -Vincent Batts -Vincent Bernat -Vincent Boulineau -Vincent Demeester -Vincent Giersch -Vincent Mayers -Vincent Woo -Vinod Kulkarni -Vishal Doshi -Vishnu Kannan -Vitaly Ostrosablin -Vitor Anjos -Vitor Monteiro -Vivek Agarwal -Vivek Dasgupta -Vivek Goyal -Vladimir Bulyga -Vladimir Kirillov -Vladimir Pouzanov -Vladimir Rutsky -Vladimir Varankin -VladimirAus -Vladislav Kolesnikov -Vlastimil Zeman -Vojtech Vitek (V-Teq) -Walter Leibbrandt -Walter Stanish -Wang Chao -Wang Guoliang -Wang Jie -Wang Long -Wang Ping -Wang Xing -Wang Yuexiao -Wang Yumu <37442693@qq.com> -wanghuaiqing -Ward Vandewege -WarheadsSE -Wassim Dhif -Wataru Ishida -Wayne Chang -Wayne Song -Weerasak Chongnguluam -Wei Fu -Wei Wu -Wei-Ting Kuo -weipeng -weiyan -Weiyang Zhu -Wen Cheng Ma -Wendel Fleming -Wenjun Tang -Wenkai Yin -wenlxie -Wenxuan Zhao -Wenyu You <21551128@zju.edu.cn> -Wenzhi Liang -Wes Morgan -Wesley Pettit -Wewang Xiaorenfine -Wiktor Kwapisiewicz -Will Dietz -Will Rouesnel -Will Weaver -willhf -William Delanoue -William Henry -William Hubbs -William Martin -William Riancho -William Thurston -Wilson Júnior -Wing-Kam Wong -WiseTrem -Wolfgang Nagele -Wolfgang Powisch -Wonjun Kim -WuLonghui -xamyzhao -Xia Wu -Xian Chaobo -Xianglin Gao -Xianjie -Xianlu Bird -Xiao YongBiao -Xiao Zhang -XiaoBing Jiang -Xiaodong Liu -Xiaodong Zhang -Xiaohua Ding -Xiaoxi He -Xiaoxu Chen -Xiaoyu Zhang -xichengliudui <1693291525@qq.com> -xiekeyang -Ximo Guanter Gonzálbez -xin.li -Xinbo Weng -Xinfeng Liu -Xinzi Zhou -Xiuming Chen -Xuecong Liao -xuzhaokui -Yadnyawalkya Tale -Yahya -yalpul -YAMADA Tsuyoshi -Yamasaki Masahide -Yamazaki Masashi -Yan Feng -Yan Zhu -Yang Bai -Yang Li -Yang Pengfei -yangchenliang -Yann Autissier -Yanqiang Miao -Yao Zaiyong -Yash Murty -Yassine Tijani -Yasunori Mahata -Yazhong Liu -Yestin Sun -Yi EungJun -Yibai Zhang -Yihang Ho -Ying Li -Yohei Ueda -Yong Tang -Yongxin Li -Yongzhi Pan -Yosef Fertel -You-Sheng Yang (楊有勝) -youcai -Youcef YEKHLEF -Youfu Zhang -Yu Changchun -Yu Chengxia -Yu Peng -Yu-Ju Hong -Yuan Sun -Yuanhong Peng -Yue Zhang -Yufei Xiong -Yuhao Fang -Yuichiro Kaneko -YujiOshima -Yunxiang Huang -Yurii Rashkovskii -Yusuf Tarık Günaydın -Yves Blusseau <90z7oey02@sneakemail.com> -Yves Junqueira -Zac Dover -Zach Borboa -Zach Gershman -Zachary Jaffee -Zain Memon -Zaiste! -Zane DeGraffenried -Zefan Li -Zen Lin(Zhinan Lin) -Zhang Kun -Zhang Wei -Zhang Wentao -zhangguanzhang -ZhangHang -zhangxianwei -Zhenan Ye <21551168@zju.edu.cn> -zhenghenghuo -Zhenhai Gao -Zhenkun Bi -ZhiPeng Lu -zhipengzuo -Zhou Hao -Zhoulin Xie -Zhu Guihua -Zhu Kunjia -Zhuoyun Wei -Ziheng Liu -Zilin Du -zimbatm -Ziming Dong -ZJUshuaizhou <21551191@zju.edu.cn> -zmarouf -Zoltan Tombol -Zou Yu -zqh -Zuhayr Elahi -Zunayed Ali -Álvaro Lázaro -Átila Camurça Alves -吴小白 <296015668@qq.com> -尹吉峰 -屈骏 -徐俊杰 -慕陶 -搏通 -黄艳红00139573 -정재영 diff --git a/vendor/github.com/docker/docker/NOTICE b/vendor/github.com/docker/docker/NOTICE deleted file mode 100644 index 58b19b6d15b9..000000000000 --- a/vendor/github.com/docker/docker/NOTICE +++ /dev/null @@ -1,19 +0,0 @@ -Docker -Copyright 2012-2017 Docker, Inc. - -This product includes software developed at Docker, Inc. (https://www.docker.com). - -This product contains software (https://github.com/creack/pty) developed -by Keith Rarick, licensed under the MIT License. - -The following is courtesy of our legal counsel: - - -Use and transfer of Docker may be subject to certain restrictions by the -United States and other governments. -It is your responsibility to ensure that your use and/or transfer does not -violate applicable laws. - -For more information, please see https://www.bis.doc.gov - -See also https://www.apache.org/dev/crypto.html and/or seek legal counsel. diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir.go b/vendor/github.com/docker/docker/pkg/homedir/homedir.go deleted file mode 100644 index 590683206c3b..000000000000 --- a/vendor/github.com/docker/docker/pkg/homedir/homedir.go +++ /dev/null @@ -1,44 +0,0 @@ -package homedir - -import ( - "os" - "os/user" - "runtime" -) - -// Key returns the env var name for the user's home dir based on -// the platform being run on. -// -// Deprecated: this function is no longer used, and will be removed in the next release. -func Key() string { - return envKeyName -} - -// Get returns the home directory of the current user with the help of -// environment variables depending on the target operating system. -// Returned path should be used with "path/filepath" to form new paths. -// -// On non-Windows platforms, it falls back to nss lookups, if the home -// directory cannot be obtained from environment-variables. -// -// If linking statically with cgo enabled against glibc, ensure the -// osusergo build tag is used. -// -// If needing to do nss lookups, do not disable cgo or set osusergo. -func Get() string { - home, _ := os.UserHomeDir() - if home == "" && runtime.GOOS != "windows" { - if u, err := user.Current(); err == nil { - return u.HomeDir - } - } - return home -} - -// GetShortcutString returns the string that is shortcut to user's home directory -// in the native shell of the platform running on. -// -// Deprecated: this function is no longer used, and will be removed in the next release. -func GetShortcutString() string { - return homeShortCut -} diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_linux.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_linux.go deleted file mode 100644 index ded1c7c8c61e..000000000000 --- a/vendor/github.com/docker/docker/pkg/homedir/homedir_linux.go +++ /dev/null @@ -1,105 +0,0 @@ -package homedir // import "github.com/docker/docker/pkg/homedir" - -import ( - "errors" - "os" - "path/filepath" - "strings" -) - -// GetRuntimeDir returns XDG_RUNTIME_DIR. -// XDG_RUNTIME_DIR is typically configured via pam_systemd. -// GetRuntimeDir returns non-nil error if XDG_RUNTIME_DIR is not set. -// -// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html -func GetRuntimeDir() (string, error) { - if xdgRuntimeDir := os.Getenv("XDG_RUNTIME_DIR"); xdgRuntimeDir != "" { - return xdgRuntimeDir, nil - } - return "", errors.New("could not get XDG_RUNTIME_DIR") -} - -// StickRuntimeDirContents sets the sticky bit on files that are under -// XDG_RUNTIME_DIR, so that the files won't be periodically removed by the system. -// -// StickyRuntimeDir returns slice of sticked files. -// StickyRuntimeDir returns nil error if XDG_RUNTIME_DIR is not set. -// -// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html -func StickRuntimeDirContents(files []string) ([]string, error) { - runtimeDir, err := GetRuntimeDir() - if err != nil { - // ignore error if runtimeDir is empty - return nil, nil - } - runtimeDir, err = filepath.Abs(runtimeDir) - if err != nil { - return nil, err - } - var sticked []string - for _, f := range files { - f, err = filepath.Abs(f) - if err != nil { - return sticked, err - } - if strings.HasPrefix(f, runtimeDir+"/") { - if err = stick(f); err != nil { - return sticked, err - } - sticked = append(sticked, f) - } - } - return sticked, nil -} - -func stick(f string) error { - st, err := os.Stat(f) - if err != nil { - return err - } - m := st.Mode() - m |= os.ModeSticky - return os.Chmod(f, m) -} - -// GetDataHome returns XDG_DATA_HOME. -// GetDataHome returns $HOME/.local/share and nil error if XDG_DATA_HOME is not set. -// If HOME and XDG_DATA_HOME are not set, getpwent(3) is consulted to determine the users home directory. -// -// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html -func GetDataHome() (string, error) { - if xdgDataHome := os.Getenv("XDG_DATA_HOME"); xdgDataHome != "" { - return xdgDataHome, nil - } - home := Get() - if home == "" { - return "", errors.New("could not get either XDG_DATA_HOME or HOME") - } - return filepath.Join(home, ".local", "share"), nil -} - -// GetConfigHome returns XDG_CONFIG_HOME. -// GetConfigHome returns $HOME/.config and nil error if XDG_CONFIG_HOME is not set. -// If HOME and XDG_CONFIG_HOME are not set, getpwent(3) is consulted to determine the users home directory. -// -// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html -func GetConfigHome() (string, error) { - if xdgConfigHome := os.Getenv("XDG_CONFIG_HOME"); xdgConfigHome != "" { - return xdgConfigHome, nil - } - home := Get() - if home == "" { - return "", errors.New("could not get either XDG_CONFIG_HOME or HOME") - } - return filepath.Join(home, ".config"), nil -} - -// GetLibHome returns $HOME/.local/lib -// If HOME is not set, getpwent(3) is consulted to determine the users home directory. -func GetLibHome() (string, error) { - home := Get() - if home == "" { - return "", errors.New("could not get HOME") - } - return filepath.Join(home, ".local/lib"), nil -} diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_others.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_others.go deleted file mode 100644 index 4eeb26b5dcab..000000000000 --- a/vendor/github.com/docker/docker/pkg/homedir/homedir_others.go +++ /dev/null @@ -1,32 +0,0 @@ -//go:build !linux - -package homedir // import "github.com/docker/docker/pkg/homedir" - -import ( - "errors" -) - -// GetRuntimeDir is unsupported on non-linux system. -func GetRuntimeDir() (string, error) { - return "", errors.New("homedir.GetRuntimeDir() is not supported on this system") -} - -// StickRuntimeDirContents is unsupported on non-linux system. -func StickRuntimeDirContents(files []string) ([]string, error) { - return nil, errors.New("homedir.StickRuntimeDirContents() is not supported on this system") -} - -// GetDataHome is unsupported on non-linux system. -func GetDataHome() (string, error) { - return "", errors.New("homedir.GetDataHome() is not supported on this system") -} - -// GetConfigHome is unsupported on non-linux system. -func GetConfigHome() (string, error) { - return "", errors.New("homedir.GetConfigHome() is not supported on this system") -} - -// GetLibHome is unsupported on non-linux system. -func GetLibHome() (string, error) { - return "", errors.New("homedir.GetLibHome() is not supported on this system") -} diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_unix.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_unix.go deleted file mode 100644 index feae4d736c4f..000000000000 --- a/vendor/github.com/docker/docker/pkg/homedir/homedir_unix.go +++ /dev/null @@ -1,8 +0,0 @@ -//go:build !windows - -package homedir // import "github.com/docker/docker/pkg/homedir" - -const ( - envKeyName = "HOME" - homeShortCut = "~" -) diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_windows.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_windows.go deleted file mode 100644 index 37f4ee67014d..000000000000 --- a/vendor/github.com/docker/docker/pkg/homedir/homedir_windows.go +++ /dev/null @@ -1,6 +0,0 @@ -package homedir // import "github.com/docker/docker/pkg/homedir" - -const ( - envKeyName = "USERPROFILE" - homeShortCut = "%USERPROFILE%" // be careful while using in format functions -) diff --git a/vendor/github.com/emicklei/go-restful/v3/CHANGES.md b/vendor/github.com/emicklei/go-restful/v3/CHANGES.md index 5edd5a7ca9a3..92b78048e23d 100644 --- a/vendor/github.com/emicklei/go-restful/v3/CHANGES.md +++ b/vendor/github.com/emicklei/go-restful/v3/CHANGES.md @@ -1,6 +1,24 @@ # Change history of go-restful -## [v3.11.0] - 2023-08-19 + +## [v3.12.1] - 2024-05-28 + +- fix misroute when dealing multiple webservice with regex (#549) (thanks Haitao Chen) + +## [v3.12.0] - 2024-03-11 + +- add Flush method #529 (#538) +- fix: Improper handling of empty POST requests (#543) + +## [v3.11.3] - 2024-01-09 + +- better not have 2 tags on one commit + +## [v3.11.1, v3.11.2] - 2024-01-09 + +- fix by restoring custom JSON handler functions (Mike Beaumont #540) + +## [v3.12.0] - 2023-08-19 - restored behavior as <= v3.9.0 with option to change path strategy using TrimRightSlashEnabled. diff --git a/vendor/github.com/emicklei/go-restful/v3/README.md b/vendor/github.com/emicklei/go-restful/v3/README.md index e3e30080ec18..7234604e47b8 100644 --- a/vendor/github.com/emicklei/go-restful/v3/README.md +++ b/vendor/github.com/emicklei/go-restful/v3/README.md @@ -2,7 +2,6 @@ go-restful ========== package for building REST-style Web Services using Google Go -[![Build Status](https://travis-ci.org/emicklei/go-restful.png)](https://travis-ci.org/emicklei/go-restful) [![Go Report Card](https://goreportcard.com/badge/github.com/emicklei/go-restful)](https://goreportcard.com/report/github.com/emicklei/go-restful) [![GoDoc](https://godoc.org/github.com/emicklei/go-restful?status.svg)](https://pkg.go.dev/github.com/emicklei/go-restful) [![codecov](https://codecov.io/gh/emicklei/go-restful/branch/master/graph/badge.svg)](https://codecov.io/gh/emicklei/go-restful) @@ -95,8 +94,7 @@ There are several hooks to customize the behavior of the go-restful package. - Trace logging - Compression - Encoders for other serializers -- Use [jsoniter](https://github.com/json-iterator/go) by building this package using a build tag, e.g. `go build -tags=jsoniter .` -- Use the package variable `TrimRightSlashEnabled` (default true) to control the behavior of matching routes that end with a slash `/` +- Use the package variable `TrimRightSlashEnabled` (default true) to control the behavior of matching routes that end with a slash `/` ## Resources diff --git a/vendor/github.com/emicklei/go-restful/v3/compress.go b/vendor/github.com/emicklei/go-restful/v3/compress.go index 1ff239f99fe7..80adf55fdfee 100644 --- a/vendor/github.com/emicklei/go-restful/v3/compress.go +++ b/vendor/github.com/emicklei/go-restful/v3/compress.go @@ -49,6 +49,16 @@ func (c *CompressingResponseWriter) CloseNotify() <-chan bool { return c.writer.(http.CloseNotifier).CloseNotify() } +// Flush is part of http.Flusher interface. Noop if the underlying writer doesn't support it. +func (c *CompressingResponseWriter) Flush() { + flusher, ok := c.writer.(http.Flusher) + if !ok { + // writer doesn't support http.Flusher interface + return + } + flusher.Flush() +} + // Close the underlying compressor func (c *CompressingResponseWriter) Close() error { if c.isCompressorClosed() { diff --git a/vendor/github.com/emicklei/go-restful/v3/curly.go b/vendor/github.com/emicklei/go-restful/v3/curly.go index ba1fc5d5f15a..6fd2bcd5a117 100644 --- a/vendor/github.com/emicklei/go-restful/v3/curly.go +++ b/vendor/github.com/emicklei/go-restful/v3/curly.go @@ -46,10 +46,10 @@ func (c CurlyRouter) SelectRoute( // selectRoutes return a collection of Route from a WebService that matches the path tokens from the request. func (c CurlyRouter) selectRoutes(ws *WebService, requestTokens []string) sortableCurlyRoutes { candidates := make(sortableCurlyRoutes, 0, 8) - for _, each := range ws.routes { - matches, paramCount, staticCount := c.matchesRouteByPathTokens(each.pathParts, requestTokens, each.hasCustomVerb) + for _, eachRoute := range ws.routes { + matches, paramCount, staticCount := c.matchesRouteByPathTokens(eachRoute.pathParts, requestTokens, eachRoute.hasCustomVerb) if matches { - candidates.add(curlyRoute{each, paramCount, staticCount}) // TODO make sure Routes() return pointers? + candidates.add(curlyRoute{eachRoute, paramCount, staticCount}) // TODO make sure Routes() return pointers? } } sort.Sort(candidates) @@ -72,7 +72,7 @@ func (c CurlyRouter) matchesRouteByPathTokens(routeTokens, requestTokens []strin return false, 0, 0 } requestToken := requestTokens[i] - if routeHasCustomVerb && hasCustomVerb(routeToken){ + if routeHasCustomVerb && hasCustomVerb(routeToken) { if !isMatchCustomVerb(routeToken, requestToken) { return false, 0, 0 } @@ -129,44 +129,52 @@ func (c CurlyRouter) detectRoute(candidateRoutes sortableCurlyRoutes, httpReques // detectWebService returns the best matching webService given the list of path tokens. // see also computeWebserviceScore func (c CurlyRouter) detectWebService(requestTokens []string, webServices []*WebService) *WebService { - var best *WebService + var bestWs *WebService score := -1 - for _, each := range webServices { - matches, eachScore := c.computeWebserviceScore(requestTokens, each.pathExpr.tokens) + for _, eachWS := range webServices { + matches, eachScore := c.computeWebserviceScore(requestTokens, eachWS.pathExpr.tokens) if matches && (eachScore > score) { - best = each + bestWs = eachWS score = eachScore } } - return best + return bestWs } // computeWebserviceScore returns whether tokens match and // the weighted score of the longest matching consecutive tokens from the beginning. -func (c CurlyRouter) computeWebserviceScore(requestTokens []string, tokens []string) (bool, int) { - if len(tokens) > len(requestTokens) { +func (c CurlyRouter) computeWebserviceScore(requestTokens []string, routeTokens []string) (bool, int) { + if len(routeTokens) > len(requestTokens) { return false, 0 } score := 0 - for i := 0; i < len(tokens); i++ { - each := requestTokens[i] - other := tokens[i] - if len(each) == 0 && len(other) == 0 { + for i := 0; i < len(routeTokens); i++ { + eachRequestToken := requestTokens[i] + eachRouteToken := routeTokens[i] + if len(eachRequestToken) == 0 && len(eachRouteToken) == 0 { score++ continue } - if len(other) > 0 && strings.HasPrefix(other, "{") { + if len(eachRouteToken) > 0 && strings.HasPrefix(eachRouteToken, "{") { // no empty match - if len(each) == 0 { + if len(eachRequestToken) == 0 { return false, score } - score += 1 + score++ + + if colon := strings.Index(eachRouteToken, ":"); colon != -1 { + // match by regex + matchesToken, _ := c.regularMatchesPathToken(eachRouteToken, colon, eachRequestToken) + if matchesToken { + score++ // extra score for regex match + } + } } else { // not a parameter - if each != other { + if eachRequestToken != eachRouteToken { return false, score } - score += (len(tokens) - i) * 10 //fuzzy + score += (len(routeTokens) - i) * 10 //fuzzy } } return true, score diff --git a/vendor/github.com/emicklei/go-restful/v3/entity_accessors.go b/vendor/github.com/emicklei/go-restful/v3/entity_accessors.go index 66dfc824f55b..9808752acdf9 100644 --- a/vendor/github.com/emicklei/go-restful/v3/entity_accessors.go +++ b/vendor/github.com/emicklei/go-restful/v3/entity_accessors.go @@ -5,11 +5,18 @@ package restful // that can be found in the LICENSE file. import ( + "encoding/json" "encoding/xml" "strings" "sync" ) +var ( + MarshalIndent = json.MarshalIndent + NewDecoder = json.NewDecoder + NewEncoder = json.NewEncoder +) + // EntityReaderWriter can read and write values using an encoding such as JSON,XML. type EntityReaderWriter interface { // Read a serialized version of the value from the request. diff --git a/vendor/github.com/emicklei/go-restful/v3/json.go b/vendor/github.com/emicklei/go-restful/v3/json.go deleted file mode 100644 index 871165166a16..000000000000 --- a/vendor/github.com/emicklei/go-restful/v3/json.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build !jsoniter - -package restful - -import "encoding/json" - -var ( - MarshalIndent = json.MarshalIndent - NewDecoder = json.NewDecoder - NewEncoder = json.NewEncoder -) diff --git a/vendor/github.com/emicklei/go-restful/v3/jsoniter.go b/vendor/github.com/emicklei/go-restful/v3/jsoniter.go deleted file mode 100644 index 11b8f8ae7f17..000000000000 --- a/vendor/github.com/emicklei/go-restful/v3/jsoniter.go +++ /dev/null @@ -1,12 +0,0 @@ -// +build jsoniter - -package restful - -import "github.com/json-iterator/go" - -var ( - json = jsoniter.ConfigCompatibleWithStandardLibrary - MarshalIndent = json.MarshalIndent - NewDecoder = json.NewDecoder - NewEncoder = json.NewEncoder -) diff --git a/vendor/github.com/emicklei/go-restful/v3/jsr311.go b/vendor/github.com/emicklei/go-restful/v3/jsr311.go index 07a0c91e9424..a9b3faaa81fa 100644 --- a/vendor/github.com/emicklei/go-restful/v3/jsr311.go +++ b/vendor/github.com/emicklei/go-restful/v3/jsr311.go @@ -155,7 +155,7 @@ func (r RouterJSR311) detectRoute(routes []Route, httpRequest *http.Request) (*R method, length := httpRequest.Method, httpRequest.Header.Get("Content-Length") if (method == http.MethodPost || method == http.MethodPut || - method == http.MethodPatch) && length == "" { + method == http.MethodPatch) && (length == "" || length == "0") { return nil, NewError( http.StatusUnsupportedMediaType, fmt.Sprintf("415: Unsupported Media Type\n\nAvailable representations: %s", strings.Join(available, ", ")), diff --git a/vendor/github.com/fxamacker/cbor/v2/.gitignore b/vendor/github.com/fxamacker/cbor/v2/.gitignore new file mode 100644 index 000000000000..f1c181ec9c5c --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/.gitignore @@ -0,0 +1,12 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out diff --git a/vendor/github.com/fxamacker/cbor/v2/.golangci.yml b/vendor/github.com/fxamacker/cbor/v2/.golangci.yml new file mode 100644 index 000000000000..38cb9ae101b8 --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/.golangci.yml @@ -0,0 +1,104 @@ +# Do not delete linter settings. Linters like gocritic can be enabled on the command line. + +linters-settings: + depguard: + rules: + prevent_unmaintained_packages: + list-mode: strict + files: + - $all + - "!$test" + allow: + - $gostd + - github.com/x448/float16 + deny: + - pkg: io/ioutil + desc: "replaced by io and os packages since Go 1.16: https://tip.golang.org/doc/go1.16#ioutil" + dupl: + threshold: 100 + funlen: + lines: 100 + statements: 50 + goconst: + ignore-tests: true + min-len: 2 + min-occurrences: 3 + gocritic: + enabled-tags: + - diagnostic + - experimental + - opinionated + - performance + - style + disabled-checks: + - commentedOutCode + - dupImport # https://github.com/go-critic/go-critic/issues/845 + - ifElseChain + - octalLiteral + - paramTypeCombine + - whyNoLint + gofmt: + simplify: false + goimports: + local-prefixes: github.com/fxamacker/cbor + golint: + min-confidence: 0 + govet: + check-shadowing: true + lll: + line-length: 140 + maligned: + suggest-new: true + misspell: + locale: US + staticcheck: + checks: ["all"] + +linters: + disable-all: true + enable: + - asciicheck + - bidichk + - depguard + - errcheck + - exportloopref + - goconst + - gocritic + - gocyclo + - gofmt + - goimports + - goprintffuncname + - gosec + - gosimple + - govet + - ineffassign + - misspell + - nilerr + - revive + - staticcheck + - stylecheck + - typecheck + - unconvert + - unused + +issues: + # max-issues-per-linter default is 50. Set to 0 to disable limit. + max-issues-per-linter: 0 + # max-same-issues default is 3. Set to 0 to disable limit. + max-same-issues: 0 + + exclude-rules: + - path: decode.go + text: "string ` overflows ` has (\\d+) occurrences, make it a constant" + - path: decode.go + text: "string ` \\(range is \\[` has (\\d+) occurrences, make it a constant" + - path: decode.go + text: "string `, ` has (\\d+) occurrences, make it a constant" + - path: decode.go + text: "string ` overflows Go's int64` has (\\d+) occurrences, make it a constant" + - path: decode.go + text: "string `\\]\\)` has (\\d+) occurrences, make it a constant" + - path: valid.go + text: "string ` for type ` has (\\d+) occurrences, make it a constant" + - path: valid.go + text: "string `cbor: ` has (\\d+) occurrences, make it a constant" diff --git a/vendor/github.com/fxamacker/cbor/v2/CODE_OF_CONDUCT.md b/vendor/github.com/fxamacker/cbor/v2/CODE_OF_CONDUCT.md new file mode 100644 index 000000000000..c794b2b0c666 --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/CODE_OF_CONDUCT.md @@ -0,0 +1,133 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +faye.github@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/vendor/github.com/fxamacker/cbor/v2/CONTRIBUTING.md b/vendor/github.com/fxamacker/cbor/v2/CONTRIBUTING.md new file mode 100644 index 000000000000..de0965e12d17 --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/CONTRIBUTING.md @@ -0,0 +1,41 @@ +# How to contribute + +You can contribute by using the library, opening issues, or opening pull requests. + +## Bug reports and security vulnerabilities + +Most issues are tracked publicly on [GitHub](https://github.com/fxamacker/cbor/issues). + +To report security vulnerabilities, please email faye.github@gmail.com and allow time for the problem to be resolved before disclosing it to the public. For more info, see [Security Policy](https://github.com/fxamacker/cbor#security-policy). + +Please do not send data that might contain personally identifiable information, even if you think you have permission. That type of support requires payment and a signed contract where I'm indemnified, held harmless, and defended by you for any data you send to me. + +## Pull requests + +Please [create an issue](https://github.com/fxamacker/cbor/issues/new/choose) before you begin work on a PR. The improvement may have already been considered, etc. + +Pull requests have signing requirements and must not be anonymous. Exceptions are usually made for docs and CI scripts. + +See the [Pull Request Template](https://github.com/fxamacker/cbor/blob/master/.github/pull_request_template.md) for details. + +Pull requests have a greater chance of being approved if: +- it does not reduce speed, increase memory use, reduce security, etc. for people not using the new option or feature. +- it has > 97% code coverage. + +## Describe your issue + +Clearly describe the issue: +* If it's a bug, please provide: **version of this library** and **Go** (`go version`), **unmodified error message**, and describe **how to reproduce it**. Also state **what you expected to happen** instead of the error. +* If you propose a change or addition, try to give an example how the improved code could look like or how to use it. +* If you found a compilation error, please confirm you're using a supported version of Go. If you are, then provide the output of `go version` first, followed by the complete error message. + +## Please don't + +Please don't send data containing personally identifiable information, even if you think you have permission. That type of support requires payment and a contract where I'm indemnified, held harmless, and defended for any data you send to me. + +Please don't send CBOR data larger than 1024 bytes by email. If you want to send crash-producing CBOR data > 1024 bytes by email, please get my permission before sending it to me. + +## Credits + +- This guide used nlohmann/json contribution guidelines for inspiration as suggested in issue #22. +- Special thanks to @lukseven for pointing out the contribution guidelines didn't mention signing requirements. diff --git a/vendor/github.com/fxamacker/cbor/v2/LICENSE b/vendor/github.com/fxamacker/cbor/v2/LICENSE new file mode 100644 index 000000000000..eaa850492144 --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019-present Faye Amacker + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/fxamacker/cbor/v2/README.md b/vendor/github.com/fxamacker/cbor/v2/README.md new file mode 100644 index 000000000000..af0a79507e59 --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/README.md @@ -0,0 +1,691 @@ +# CBOR Codec in Go + + + +[fxamacker/cbor](https://github.com/fxamacker/cbor) is a library for encoding and decoding [CBOR](https://www.rfc-editor.org/info/std94) and [CBOR Sequences](https://www.rfc-editor.org/rfc/rfc8742.html). + +CBOR is a [trusted alternative](https://www.rfc-editor.org/rfc/rfc8949.html#name-comparison-of-other-binary-) to JSON, MessagePack, Protocol Buffers, etc.  CBOR is an Internet Standard defined by [IETF STD 94 (RFC 8949)](https://www.rfc-editor.org/info/std94) and is designed to be relevant for decades. + +`fxamacker/cbor` is used in projects by Arm Ltd., Cisco, EdgeX Foundry, Flow Foundation, Fraunhofer‑AISEC, Kubernetes, Let's Encrypt (ISRG), Linux Foundation, Microsoft, Mozilla, Oasis Protocol, Tailscale, Teleport, [etc](https://github.com/fxamacker/cbor#who-uses-fxamackercbor). + +See [Quick Start](#quick-start) and [Releases](https://github.com/fxamacker/cbor/releases/). 🆕 `UnmarshalFirst` and `DiagnoseFirst` can decode CBOR Sequences. `cbor.MarshalToBuffer()` and `UserBufferEncMode` accepts user-specified buffer. + +## fxamacker/cbor + +[![](https://github.com/fxamacker/cbor/workflows/ci/badge.svg)](https://github.com/fxamacker/cbor/actions?query=workflow%3Aci) +[![](https://github.com/fxamacker/cbor/workflows/cover%20%E2%89%A596%25/badge.svg)](https://github.com/fxamacker/cbor/actions?query=workflow%3A%22cover+%E2%89%A596%25%22) +[![CodeQL](https://github.com/fxamacker/cbor/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/fxamacker/cbor/actions/workflows/codeql-analysis.yml) +[![](https://img.shields.io/badge/fuzzing-passing-44c010)](#fuzzing-and-code-coverage) +[![Go Report Card](https://goreportcard.com/badge/github.com/fxamacker/cbor)](https://goreportcard.com/report/github.com/fxamacker/cbor) + +`fxamacker/cbor` is a CBOR codec in full conformance with [IETF STD 94 (RFC 8949)](https://www.rfc-editor.org/info/std94). It also supports CBOR Sequences ([RFC 8742](https://www.rfc-editor.org/rfc/rfc8742.html)) and Extended Diagnostic Notation ([Appendix G of RFC 8610](https://www.rfc-editor.org/rfc/rfc8610.html#appendix-G)). + +Features include full support for CBOR tags, [Core Deterministic Encoding](https://www.rfc-editor.org/rfc/rfc8949.html#name-core-deterministic-encoding), duplicate map key detection, etc. + +Design balances trade-offs between security, speed, concurrency, encoded data size, usability, etc. + +
Highlights

+ +__🚀  Speed__ + +Encoding and decoding is fast without using Go's `unsafe` package. Slower settings are opt-in. Default limits allow very fast and memory efficient rejection of malformed CBOR data. + +__🔒  Security__ + +Decoder has configurable limits that defend against malicious inputs. Duplicate map key detection is supported. By contrast, `encoding/gob` is [not designed to be hardened against adversarial inputs](https://pkg.go.dev/encoding/gob#hdr-Security). + +Codec passed multiple confidential security assessments in 2022. No vulnerabilities found in subset of codec in a [nonconfidential security assessment](https://github.com/veraison/go-cose/blob/v1.0.0-rc.1/reports/NCC_Microsoft-go-cose-Report_2022-05-26_v1.0.pdf) prepared by NCC Group for Microsoft Corporation. + +__🗜️  Data Size__ + +Struct tags (`toarray`, `keyasint`, `omitempty`) automatically reduce size of encoded structs. Encoding optionally shrinks float64→32→16 when values fit. + +__:jigsaw:  Usability__ + +API is mostly same as `encoding/json` plus interfaces that simplify concurrency for CBOR options. Encoding and decoding modes can be created at startup and reused by any goroutines. + +Presets include Core Deterministic Encoding, Preferred Serialization, CTAP2 Canonical CBOR, etc. + +__📆  Extensibility__ + +Features include CBOR [extension points](https://www.rfc-editor.org/rfc/rfc8949.html#section-7.1) (e.g. CBOR tags) and extensive settings. API has interfaces that allow users to create custom encoding and decoding without modifying this library. + +


+ +
+ +### Secure Decoding with Configurable Settings + +`fxamacker/cbor` has configurable limits, etc. that defend against malicious CBOR data. + +By contrast, `encoding/gob` is [not designed to be hardened against adversarial inputs](https://pkg.go.dev/encoding/gob#hdr-Security). + +
Example decoding with encoding/gob 💥 fatal error (out of memory)

+ +```Go +// Example of encoding/gob having "fatal error: runtime: out of memory" +// while decoding 181 bytes. +package main +import ( + "bytes" + "encoding/gob" + "encoding/hex" + "fmt" +) + +// Example data is from https://github.com/golang/go/issues/24446 +// (shortened to 181 bytes). +const data = "4dffb503010102303001ff30000109010130010800010130010800010130" + + "01ffb80001014a01ffb60001014b01ff860001013001ff860001013001ff" + + "860001013001ff860001013001ffb80000001eff850401010e3030303030" + + "30303030303030303001ff3000010c0104000016ffb70201010830303030" + + "3030303001ff3000010c000030ffb6040405fcff00303030303030303030" + + "303030303030303030303030303030303030303030303030303030303030" + + "30" + +type X struct { + J *X + K map[string]int +} + +func main() { + raw, _ := hex.DecodeString(data) + decoder := gob.NewDecoder(bytes.NewReader(raw)) + + var x X + decoder.Decode(&x) // fatal error: runtime: out of memory + fmt.Println("Decoding finished.") +} +``` + +


+ +
+ +`fxamacker/cbor` is fast at rejecting malformed CBOR data. E.g. attempts to +decode 10 bytes of malicious CBOR data to `[]byte` (with default settings): + +| Codec | Speed (ns/op) | Memory | Allocs | +| :---- | ------------: | -----: | -----: | +| fxamacker/cbor 2.5.0 | 44 ± 5% | 32 B/op | 2 allocs/op | +| ugorji/go 1.2.11 | 5353261 ± 4% | 67111321 B/op | 13 allocs/op | + +
Benchmark details

+ +Latest comparison used: +- Input: `[]byte{0x9B, 0x00, 0x00, 0x42, 0xFA, 0x42, 0xFA, 0x42, 0xFA, 0x42}` +- go1.19.10, linux/amd64, i5-13600K (disabled all e-cores, DDR4 @2933) +- go test -bench=. -benchmem -count=20 + +#### Prior comparisons + +| Codec | Speed (ns/op) | Memory | Allocs | +| :---- | ------------: | -----: | -----: | +| fxamacker/cbor 2.5.0-beta2 | 44.33 ± 2% | 32 B/op | 2 allocs/op | +| fxamacker/cbor 0.1.0 - 2.4.0 | ~44.68 ± 6% | 32 B/op | 2 allocs/op | +| ugorji/go 1.2.10 | 5524792.50 ± 3% | 67110491 B/op | 12 allocs/op | +| ugorji/go 1.1.0 - 1.2.6 | 💥 runtime: | out of memory: | cannot allocate | + +- Input: `[]byte{0x9B, 0x00, 0x00, 0x42, 0xFA, 0x42, 0xFA, 0x42, 0xFA, 0x42}` +- go1.19.6, linux/amd64, i5-13600K (DDR4) +- go test -bench=. -benchmem -count=20 + +


+ +
+ +### Smaller Encodings with Struct Tags + +Struct tags (`toarray`, `keyasint`, `omitempty`) reduce encoded size of structs. + +
Example encoding 3-level nested Go struct to 1 byte CBOR

+ +https://go.dev/play/p/YxwvfPdFQG2 + +```Go +// Example encoding nested struct (with omitempty tag) +// - encoding/json: 18 byte JSON +// - fxamacker/cbor: 1 byte CBOR +package main + +import ( + "encoding/hex" + "encoding/json" + "fmt" + + "github.com/fxamacker/cbor/v2" +) + +type GrandChild struct { + Quux int `json:",omitempty"` +} + +type Child struct { + Baz int `json:",omitempty"` + Qux GrandChild `json:",omitempty"` +} + +type Parent struct { + Foo Child `json:",omitempty"` + Bar int `json:",omitempty"` +} + +func cb() { + results, _ := cbor.Marshal(Parent{}) + fmt.Println("hex(CBOR): " + hex.EncodeToString(results)) + + text, _ := cbor.Diagnose(results) // Diagnostic Notation + fmt.Println("DN: " + text) +} + +func js() { + results, _ := json.Marshal(Parent{}) + fmt.Println("hex(JSON): " + hex.EncodeToString(results)) + + text := string(results) // JSON + fmt.Println("JSON: " + text) +} + +func main() { + cb() + fmt.Println("-------------") + js() +} +``` + +Output (DN is Diagnostic Notation): +``` +hex(CBOR): a0 +DN: {} +------------- +hex(JSON): 7b22466f6f223a7b22517578223a7b7d7d7d +JSON: {"Foo":{"Qux":{}}} +``` + +


+ +
+ +Example using different struct tags together: + +![alt text](https://github.com/fxamacker/images/raw/master/cbor/v2.3.0/cbor_struct_tags_api.svg?sanitize=1 "CBOR API and Go Struct Tags") + +API is mostly same as `encoding/json`, plus interfaces that simplify concurrency for CBOR options. + +## Quick Start + +__Install__: `go get github.com/fxamacker/cbor/v2` and `import "github.com/fxamacker/cbor/v2"`. + +### Key Points + +This library can encode and decode CBOR (RFC 8949) and CBOR Sequences (RFC 8742). + +- __CBOR data item__ is a single piece of CBOR data and its structure may contain 0 or more nested data items. +- __CBOR sequence__ is a concatenation of 0 or more encoded CBOR data items. + +Configurable limits and options can be used to balance trade-offs. + +- Encoding and decoding modes are created from options (settings). +- Modes can be created at startup and reused. +- Modes are safe for concurrent use. + +### Default Mode + +Package level functions only use this library's default settings. +They provide the "default mode" of encoding and decoding. + +```go +// API matches encoding/json for Marshal, Unmarshal, Encode, Decode, etc. +b, err = cbor.Marshal(v) // encode v to []byte b +err = cbor.Unmarshal(b, &v) // decode []byte b to v +decoder = cbor.NewDecoder(r) // create decoder with io.Reader r +err = decoder.Decode(&v) // decode a CBOR data item to v + +// v2.7.0 added MarshalToBuffer() and UserBufferEncMode interface. +err = cbor.MarshalToBuffer(v, b) // encode v to b instead of using built-in buf pool. + +// v2.5.0 added new functions that return remaining bytes. + +// UnmarshalFirst decodes first CBOR data item and returns remaining bytes. +rest, err = cbor.UnmarshalFirst(b, &v) // decode []byte b to v + +// DiagnoseFirst translates first CBOR data item to text and returns remaining bytes. +text, rest, err = cbor.DiagnoseFirst(b) // decode []byte b to Diagnostic Notation text + +// NOTE: Unmarshal returns ExtraneousDataError if there are remaining bytes, +// but new funcs UnmarshalFirst and DiagnoseFirst do not. +``` + +__IMPORTANT__: 👉 CBOR settings allow trade-offs between speed, security, encoding size, etc. + +- Different CBOR libraries may use different default settings. +- CBOR-based formats or protocols usually require specific settings. + +For example, WebAuthn uses "CTAP2 Canonical CBOR" which is available as a preset. + +### Presets + +Presets can be used as-is or as a starting point for custom settings. + +```go +// EncOptions is a struct of encoder settings. +func CoreDetEncOptions() EncOptions // RFC 8949 Core Deterministic Encoding +func PreferredUnsortedEncOptions() EncOptions // RFC 8949 Preferred Serialization +func CanonicalEncOptions() EncOptions // RFC 7049 Canonical CBOR +func CTAP2EncOptions() EncOptions // FIDO2 CTAP2 Canonical CBOR +``` + +Presets are used to create custom modes. + +### Custom Modes + +Modes are created from settings. Once created, modes have immutable settings. + +💡 Create the mode at startup and reuse it. It is safe for concurrent use. + +```Go +// Create encoding mode. +opts := cbor.CoreDetEncOptions() // use preset options as a starting point +opts.Time = cbor.TimeUnix // change any settings if needed +em, err := opts.EncMode() // create an immutable encoding mode + +// Reuse the encoding mode. It is safe for concurrent use. + +// API matches encoding/json. +b, err := em.Marshal(v) // encode v to []byte b +encoder := em.NewEncoder(w) // create encoder with io.Writer w +err := encoder.Encode(v) // encode v to io.Writer w +``` + +Default mode and custom modes automatically apply struct tags. + +### User Specified Buffer for Encoding (v2.7.0) + +`UserBufferEncMode` interface extends `EncMode` interface to add `MarshalToBuffer()`. It accepts a user-specified buffer instead of using built-in buffer pool. + +```Go +em, err := myEncOptions.UserBufferEncMode() // create UserBufferEncMode mode + +var buf bytes.Buffer +err = em.MarshalToBuffer(v, &buf) // encode v to provided buf +``` + +### Struct Tags + +Struct tags (`toarray`, `keyasint`, `omitempty`) reduce encoded size of structs. + +
Example encoding 3-level nested Go struct to 1 byte CBOR

+ +https://go.dev/play/p/YxwvfPdFQG2 + +```Go +// Example encoding nested struct (with omitempty tag) +// - encoding/json: 18 byte JSON +// - fxamacker/cbor: 1 byte CBOR +package main + +import ( + "encoding/hex" + "encoding/json" + "fmt" + + "github.com/fxamacker/cbor/v2" +) + +type GrandChild struct { + Quux int `json:",omitempty"` +} + +type Child struct { + Baz int `json:",omitempty"` + Qux GrandChild `json:",omitempty"` +} + +type Parent struct { + Foo Child `json:",omitempty"` + Bar int `json:",omitempty"` +} + +func cb() { + results, _ := cbor.Marshal(Parent{}) + fmt.Println("hex(CBOR): " + hex.EncodeToString(results)) + + text, _ := cbor.Diagnose(results) // Diagnostic Notation + fmt.Println("DN: " + text) +} + +func js() { + results, _ := json.Marshal(Parent{}) + fmt.Println("hex(JSON): " + hex.EncodeToString(results)) + + text := string(results) // JSON + fmt.Println("JSON: " + text) +} + +func main() { + cb() + fmt.Println("-------------") + js() +} +``` + +Output (DN is Diagnostic Notation): +``` +hex(CBOR): a0 +DN: {} +------------- +hex(JSON): 7b22466f6f223a7b22517578223a7b7d7d7d +JSON: {"Foo":{"Qux":{}}} +``` + +


+ +
+ +
Example using several struct tags

+ +![alt text](https://github.com/fxamacker/images/raw/master/cbor/v2.3.0/cbor_struct_tags_api.svg?sanitize=1 "CBOR API and Go Struct Tags") + +

+ +Struct tags simplify use of CBOR-based protocols that require CBOR arrays or maps with integer keys. + +### CBOR Tags + +CBOR tags are specified in a `TagSet`. + +Custom modes can be created with a `TagSet` to handle CBOR tags. + +```go +em, err := opts.EncMode() // no CBOR tags +em, err := opts.EncModeWithTags(ts) // immutable CBOR tags +em, err := opts.EncModeWithSharedTags(ts) // mutable shared CBOR tags +``` + +`TagSet` and modes using it are safe for concurrent use. Equivalent API is available for `DecMode`. + +
Example using TagSet and TagOptions

+ +```go +// Use signedCWT struct defined in "Decoding CWT" example. + +// Create TagSet (safe for concurrency). +tags := cbor.NewTagSet() +// Register tag COSE_Sign1 18 with signedCWT type. +tags.Add( + cbor.TagOptions{EncTag: cbor.EncTagRequired, DecTag: cbor.DecTagRequired}, + reflect.TypeOf(signedCWT{}), + 18) + +// Create DecMode with immutable tags. +dm, _ := cbor.DecOptions{}.DecModeWithTags(tags) + +// Unmarshal to signedCWT with tag support. +var v signedCWT +if err := dm.Unmarshal(data, &v); err != nil { + return err +} + +// Create EncMode with immutable tags. +em, _ := cbor.EncOptions{}.EncModeWithTags(tags) + +// Marshal signedCWT with tag number. +if data, err := cbor.Marshal(v); err != nil { + return err +} +``` + +

+ +### Functions and Interfaces + +
Functions and interfaces at a glance

+ +Common functions with same API as `encoding/json`: +- `Marshal`, `Unmarshal` +- `NewEncoder`, `(*Encoder).Encode` +- `NewDecoder`, `(*Decoder).Decode` + +NOTE: `Unmarshal` will return `ExtraneousDataError` if there are remaining bytes +because RFC 8949 treats CBOR data item with remaining bytes as malformed. +- 💡 Use `UnmarshalFirst` to decode first CBOR data item and return any remaining bytes. + +Other useful functions: +- `Diagnose`, `DiagnoseFirst` produce human-readable [Extended Diagnostic Notation](https://www.rfc-editor.org/rfc/rfc8610.html#appendix-G) from CBOR data. +- `UnmarshalFirst` decodes first CBOR data item and return any remaining bytes. +- `Wellformed` returns true if the the CBOR data item is well-formed. + +Interfaces identical or comparable to Go `encoding` packages include: +`Marshaler`, `Unmarshaler`, `BinaryMarshaler`, and `BinaryUnmarshaler`. + +The `RawMessage` type can be used to delay CBOR decoding or precompute CBOR encoding. + +

+ +### Security Tips + +🔒 Use Go's `io.LimitReader` to limit size when decoding very large or indefinite size data. + +Default limits may need to be increased for systems handling very large data (e.g. blockchains). + +`DecOptions` can be used to modify default limits for `MaxArrayElements`, `MaxMapPairs`, and `MaxNestedLevels`. + +## Status + +v2.7.0 (June 23, 2024) adds features and improvements that help large projects (e.g. Kubernetes) use CBOR as an alternative to JSON and Protocol Buffers. Other improvements include speedups, improved memory use, bug fixes, new serialization options, etc. It passed fuzz tests (5+ billion executions) and is production quality. + +For more details, see [release notes](https://github.com/fxamacker/cbor/releases). + +### Prior Release + +[v2.6.0](https://github.com/fxamacker/cbor/releases/tag/v2.6.0) (February 2024) adds important new features, optimizations, and bug fixes. It is especially useful to systems that need to convert data between CBOR and JSON. New options and optimizations improve handling of bignum, integers, maps, and strings. + +v2.5.0 was released on Sunday, August 13, 2023 with new features and important bug fixes. It is fuzz tested and production quality after extended beta [v2.5.0-beta](https://github.com/fxamacker/cbor/releases/tag/v2.5.0-beta) (Dec 2022) -> [v2.5.0](https://github.com/fxamacker/cbor/releases/tag/v2.5.0) (Aug 2023). + +__IMPORTANT__: 👉 Before upgrading from v2.4 or older release, please read the notable changes highlighted in the release notes. v2.5.0 is a large release with bug fixes to error handling for extraneous data in `Unmarshal`, etc. that should be reviewed before upgrading. + +See [v2.5.0 release notes](https://github.com/fxamacker/cbor/releases/tag/v2.5.0) for list of new features, improvements, and bug fixes. + +See ["Version and API Changes"](https://github.com/fxamacker/cbor#versions-and-api-changes) section for more info about version numbering, etc. + + + +## Who uses fxamacker/cbor + +`fxamacker/cbor` is used in projects by Arm Ltd., Berlin Institute of Health at Charité, Chainlink, Cisco, Confidential Computing Consortium, ConsenSys, Dapper Labs, EdgeX Foundry, F5, FIDO Alliance, Fraunhofer‑AISEC, Kubernetes, Let's Encrypt (ISRG), Linux Foundation, Matrix.org, Microsoft, Mozilla, National Cybersecurity Agency of France (govt), Netherlands (govt), Oasis Protocol, Smallstep, Tailscale, Taurus SA, Teleport, TIBCO, and others. + +`fxamacker/cbor` passed multiple confidential security assessments. A [nonconfidential security assessment](https://github.com/veraison/go-cose/blob/v1.0.0-rc.1/reports/NCC_Microsoft-go-cose-Report_2022-05-26_v1.0.pdf) (prepared by NCC Group for Microsoft Corporation) includes a subset of fxamacker/cbor v2.4.0 in its scope. + +## Standards + +`fxamacker/cbor` is a CBOR codec in full conformance with [IETF STD 94 (RFC 8949)](https://www.rfc-editor.org/info/std94). It also supports CBOR Sequences ([RFC 8742](https://www.rfc-editor.org/rfc/rfc8742.html)) and Extended Diagnostic Notation ([Appendix G of RFC 8610](https://www.rfc-editor.org/rfc/rfc8610.html#appendix-G)). + +Notable CBOR features include: + +| CBOR Feature | Description | +| :--- | :--- | +| CBOR tags | API supports built-in and user-defined tags. | +| Preferred serialization | Integers encode to fewest bytes. Optional float64 → float32 → float16. | +| Map key sorting | Unsorted, length-first (Canonical CBOR), and bytewise-lexicographic (CTAP2). | +| Duplicate map keys | Always forbid for encoding and option to allow/forbid for decoding. | +| Indefinite length data | Option to allow/forbid for encoding and decoding. | +| Well-formedness | Always checked and enforced. | +| Basic validity checks | Optionally check UTF-8 validity and duplicate map keys. | +| Security considerations | Prevent integer overflow and resource exhaustion (RFC 8949 Section 10). | + +Known limitations are noted in the [Limitations section](#limitations). + +Go nil values for slices, maps, pointers, etc. are encoded as CBOR null. Empty slices, maps, etc. are encoded as empty CBOR arrays and maps. + +Decoder checks for all required well-formedness errors, including all "subkinds" of syntax errors and too little data. + +After well-formedness is verified, basic validity errors are handled as follows: + +* Invalid UTF-8 string: Decoder has option to check and return invalid UTF-8 string error. This check is enabled by default. +* Duplicate keys in a map: Decoder has options to ignore or enforce rejection of duplicate map keys. + +When decoding well-formed CBOR arrays and maps, decoder saves the first error it encounters and continues with the next item. Options to handle this differently may be added in the future. + +By default, decoder treats time values of floating-point NaN and Infinity as if they are CBOR Null or CBOR Undefined. + +__Click to expand topic:__ + +
+ Duplicate Map Keys

+ +This library provides options for fast detection and rejection of duplicate map keys based on applying a Go-specific data model to CBOR's extended generic data model in order to determine duplicate vs distinct map keys. Detection relies on whether the CBOR map key would be a duplicate "key" when decoded and applied to the user-provided Go map or struct. + +`DupMapKeyQuiet` turns off detection of duplicate map keys. It tries to use a "keep fastest" method by choosing either "keep first" or "keep last" depending on the Go data type. + +`DupMapKeyEnforcedAPF` enforces detection and rejection of duplidate map keys. Decoding stops immediately and returns `DupMapKeyError` when the first duplicate key is detected. The error includes the duplicate map key and the index number. + +APF suffix means "Allow Partial Fill" so the destination map or struct can contain some decoded values at the time of error. It is the caller's responsibility to respond to the `DupMapKeyError` by discarding the partially filled result if that's required by their protocol. + +

+ +
+ Tag Validity

+ +This library checks tag validity for built-in tags (currently tag numbers 0, 1, 2, 3, and 55799): + +* Inadmissible type for tag content +* Inadmissible value for tag content + +Unknown tag data items (not tag number 0, 1, 2, 3, or 55799) are handled in two ways: + +* When decoding into an empty interface, unknown tag data item will be decoded into `cbor.Tag` data type, which contains tag number and tag content. The tag content will be decoded into the default Go data type for the CBOR data type. +* When decoding into other Go types, unknown tag data item is decoded into the specified Go type. If Go type is registered with a tag number, the tag number can optionally be verified. + +Decoder also has an option to forbid tag data items (treat any tag data item as error) which is specified by protocols such as CTAP2 Canonical CBOR. + +For more information, see [decoding options](#decoding-options-1) and [tag options](#tag-options). + +

+ +## Limitations + +If any of these limitations prevent you from using this library, please open an issue along with a link to your project. + +* CBOR `Undefined` (0xf7) value decodes to Go's `nil` value. CBOR `Null` (0xf6) more closely matches Go's `nil`. +* CBOR map keys with data types not supported by Go for map keys are ignored and an error is returned after continuing to decode remaining items. +* When decoding registered CBOR tag data to interface type, decoder creates a pointer to registered Go type matching CBOR tag number. Requiring a pointer for this is a Go limitation. + +## Fuzzing and Code Coverage + +__Code coverage__ is always 95% or higher (with `go test -cover`) when tagging a release. + +__Coverage-guided fuzzing__ must pass billions of execs using before tagging a release. Fuzzing is done using nonpublic code which may eventually get merged into this project. Until then, reports like OpenSSF Scorecard can't detect fuzz tests being used by this project. + +
+ +## Versions and API Changes +This project uses [Semantic Versioning](https://semver.org), so the API is always backwards compatible unless the major version number changes. + +These functions have signatures identical to encoding/json and their API will continue to match `encoding/json` even after major new releases: +`Marshal`, `Unmarshal`, `NewEncoder`, `NewDecoder`, `(*Encoder).Encode`, and `(*Decoder).Decode`. + +Exclusions from SemVer: +- Newly added API documented as "subject to change". +- Newly added API in the master branch that has never been tagged in non-beta release. +- If function parameters are unchanged, bug fixes that change behavior (e.g. return error for edge case was missed in prior version). We try to highlight these in the release notes and add extended beta period. E.g. [v2.5.0-beta](https://github.com/fxamacker/cbor/releases/tag/v2.5.0-beta) (Dec 2022) -> [v2.5.0](https://github.com/fxamacker/cbor/releases/tag/v2.5.0) (Aug 2023). + +This project avoids breaking changes to behavior of encoding and decoding functions unless required to improve conformance with supported RFCs (e.g. RFC 8949, RFC 8742, etc.) Visible changes that don't improve conformance to standards are typically made available as new opt-in settings or new functions. + +## Code of Conduct + +This project has adopted the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). Contact [faye.github@gmail.com](mailto:faye.github@gmail.com) with any questions or comments. + +## Contributing + +Please open an issue before beginning work on a PR. The improvement may have already been considered, etc. + +For more info, see [How to Contribute](CONTRIBUTING.md). + +## Security Policy + +Security fixes are provided for the latest released version of fxamacker/cbor. + +For the full text of the Security Policy, see [SECURITY.md](SECURITY.md). + +## Acknowledgements + +Many thanks to all the contributors on this project! + +I'm especially grateful to Bastian Müller and Dieter Shirley for suggesting and collaborating on CBOR stream mode, and much more. + +I'm very grateful to Stefan Tatschner, Yawning Angel, Jernej Kos, x448, ZenGround0, and Jakob Borg for their contributions or support in the very early days. + +Big thanks to Ben Luddy for his contributions in v2.6.0 and v2.7.0. + +This library clearly wouldn't be possible without Carsten Bormann authoring CBOR RFCs. + +Special thanks to Laurence Lundblade and Jeffrey Yasskin for their help on IETF mailing list or at [7049bis](https://github.com/cbor-wg/CBORbis). + +Huge thanks to The Go Authors for creating a fun and practical programming language with batteries included! + +This library uses `x448/float16` which used to be included. As a standalone package, `x448/float16` is useful to other projects as well. + +## License + +Copyright © 2019-2024 [Faye Amacker](https://github.com/fxamacker). + +fxamacker/cbor is licensed under the MIT License. See [LICENSE](LICENSE) for the full license text. + +
diff --git a/vendor/github.com/fxamacker/cbor/v2/SECURITY.md b/vendor/github.com/fxamacker/cbor/v2/SECURITY.md new file mode 100644 index 000000000000..9c05146d16cf --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/SECURITY.md @@ -0,0 +1,7 @@ +# Security Policy + +Security fixes are provided for the latest released version of fxamacker/cbor. + +If the security vulnerability is already known to the public, then you can open an issue as a bug report. + +To report security vulnerabilities not yet known to the public, please email faye.github@gmail.com and allow time for the problem to be resolved before reporting it to the public. diff --git a/vendor/github.com/fxamacker/cbor/v2/bytestring.go b/vendor/github.com/fxamacker/cbor/v2/bytestring.go new file mode 100644 index 000000000000..823bff12ce14 --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/bytestring.go @@ -0,0 +1,63 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +package cbor + +import ( + "errors" +) + +// ByteString represents CBOR byte string (major type 2). ByteString can be used +// when using a Go []byte is not possible or convenient. For example, Go doesn't +// allow []byte as map key, so ByteString can be used to support data formats +// having CBOR map with byte string keys. ByteString can also be used to +// encode invalid UTF-8 string as CBOR byte string. +// See DecOption.MapKeyByteStringMode for more details. +type ByteString string + +// Bytes returns bytes representing ByteString. +func (bs ByteString) Bytes() []byte { + return []byte(bs) +} + +// MarshalCBOR encodes ByteString as CBOR byte string (major type 2). +func (bs ByteString) MarshalCBOR() ([]byte, error) { + e := getEncodeBuffer() + defer putEncodeBuffer(e) + + // Encode length + encodeHead(e, byte(cborTypeByteString), uint64(len(bs))) + + // Encode data + buf := make([]byte, e.Len()+len(bs)) + n := copy(buf, e.Bytes()) + copy(buf[n:], bs) + + return buf, nil +} + +// UnmarshalCBOR decodes CBOR byte string (major type 2) to ByteString. +// Decoding CBOR null and CBOR undefined sets ByteString to be empty. +func (bs *ByteString) UnmarshalCBOR(data []byte) error { + if bs == nil { + return errors.New("cbor.ByteString: UnmarshalCBOR on nil pointer") + } + + // Decoding CBOR null and CBOR undefined to ByteString resets data. + // This behavior is similar to decoding CBOR null and CBOR undefined to []byte. + if len(data) == 1 && (data[0] == 0xf6 || data[0] == 0xf7) { + *bs = "" + return nil + } + + d := decoder{data: data, dm: defaultDecMode} + + // Check if CBOR data type is byte string + if typ := d.nextCBORType(); typ != cborTypeByteString { + return &UnmarshalTypeError{CBORType: typ.String(), GoType: typeByteString.String()} + } + + b, _ := d.parseByteString() + *bs = ByteString(b) + return nil +} diff --git a/vendor/github.com/fxamacker/cbor/v2/cache.go b/vendor/github.com/fxamacker/cbor/v2/cache.go new file mode 100644 index 000000000000..ea0f39e24f0d --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/cache.go @@ -0,0 +1,363 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +package cbor + +import ( + "bytes" + "errors" + "fmt" + "reflect" + "sort" + "strconv" + "strings" + "sync" +) + +type encodeFuncs struct { + ef encodeFunc + ief isEmptyFunc +} + +var ( + decodingStructTypeCache sync.Map // map[reflect.Type]*decodingStructType + encodingStructTypeCache sync.Map // map[reflect.Type]*encodingStructType + encodeFuncCache sync.Map // map[reflect.Type]encodeFuncs + typeInfoCache sync.Map // map[reflect.Type]*typeInfo +) + +type specialType int + +const ( + specialTypeNone specialType = iota + specialTypeUnmarshalerIface + specialTypeEmptyIface + specialTypeIface + specialTypeTag + specialTypeTime +) + +type typeInfo struct { + elemTypeInfo *typeInfo + keyTypeInfo *typeInfo + typ reflect.Type + kind reflect.Kind + nonPtrType reflect.Type + nonPtrKind reflect.Kind + spclType specialType +} + +func newTypeInfo(t reflect.Type) *typeInfo { + tInfo := typeInfo{typ: t, kind: t.Kind()} + + for t.Kind() == reflect.Ptr { + t = t.Elem() + } + + k := t.Kind() + + tInfo.nonPtrType = t + tInfo.nonPtrKind = k + + if k == reflect.Interface { + if t.NumMethod() == 0 { + tInfo.spclType = specialTypeEmptyIface + } else { + tInfo.spclType = specialTypeIface + } + } else if t == typeTag { + tInfo.spclType = specialTypeTag + } else if t == typeTime { + tInfo.spclType = specialTypeTime + } else if reflect.PtrTo(t).Implements(typeUnmarshaler) { + tInfo.spclType = specialTypeUnmarshalerIface + } + + switch k { + case reflect.Array, reflect.Slice: + tInfo.elemTypeInfo = getTypeInfo(t.Elem()) + case reflect.Map: + tInfo.keyTypeInfo = getTypeInfo(t.Key()) + tInfo.elemTypeInfo = getTypeInfo(t.Elem()) + } + + return &tInfo +} + +type decodingStructType struct { + fields fields + fieldIndicesByName map[string]int + err error + toArray bool +} + +// The stdlib errors.Join was introduced in Go 1.20, and we still support Go 1.17, so instead, +// here's a very basic implementation of an aggregated error. +type multierror []error + +func (m multierror) Error() string { + var sb strings.Builder + for i, err := range m { + sb.WriteString(err.Error()) + if i < len(m)-1 { + sb.WriteString(", ") + } + } + return sb.String() +} + +func getDecodingStructType(t reflect.Type) *decodingStructType { + if v, _ := decodingStructTypeCache.Load(t); v != nil { + return v.(*decodingStructType) + } + + flds, structOptions := getFields(t) + + toArray := hasToArrayOption(structOptions) + + var errs []error + for i := 0; i < len(flds); i++ { + if flds[i].keyAsInt { + nameAsInt, numErr := strconv.Atoi(flds[i].name) + if numErr != nil { + errs = append(errs, errors.New("cbor: failed to parse field name \""+flds[i].name+"\" to int ("+numErr.Error()+")")) + break + } + flds[i].nameAsInt = int64(nameAsInt) + } + + flds[i].typInfo = getTypeInfo(flds[i].typ) + } + + fieldIndicesByName := make(map[string]int, len(flds)) + for i, fld := range flds { + if _, ok := fieldIndicesByName[fld.name]; ok { + errs = append(errs, fmt.Errorf("cbor: two or more fields of %v have the same name %q", t, fld.name)) + continue + } + fieldIndicesByName[fld.name] = i + } + + var err error + { + var multi multierror + for _, each := range errs { + if each != nil { + multi = append(multi, each) + } + } + if len(multi) == 1 { + err = multi[0] + } else if len(multi) > 1 { + err = multi + } + } + + structType := &decodingStructType{ + fields: flds, + fieldIndicesByName: fieldIndicesByName, + err: err, + toArray: toArray, + } + decodingStructTypeCache.Store(t, structType) + return structType +} + +type encodingStructType struct { + fields fields + bytewiseFields fields + lengthFirstFields fields + omitEmptyFieldsIdx []int + err error + toArray bool +} + +func (st *encodingStructType) getFields(em *encMode) fields { + switch em.sort { + case SortNone, SortFastShuffle: + return st.fields + case SortLengthFirst: + return st.lengthFirstFields + default: + return st.bytewiseFields + } +} + +type bytewiseFieldSorter struct { + fields fields +} + +func (x *bytewiseFieldSorter) Len() int { + return len(x.fields) +} + +func (x *bytewiseFieldSorter) Swap(i, j int) { + x.fields[i], x.fields[j] = x.fields[j], x.fields[i] +} + +func (x *bytewiseFieldSorter) Less(i, j int) bool { + return bytes.Compare(x.fields[i].cborName, x.fields[j].cborName) <= 0 +} + +type lengthFirstFieldSorter struct { + fields fields +} + +func (x *lengthFirstFieldSorter) Len() int { + return len(x.fields) +} + +func (x *lengthFirstFieldSorter) Swap(i, j int) { + x.fields[i], x.fields[j] = x.fields[j], x.fields[i] +} + +func (x *lengthFirstFieldSorter) Less(i, j int) bool { + if len(x.fields[i].cborName) != len(x.fields[j].cborName) { + return len(x.fields[i].cborName) < len(x.fields[j].cborName) + } + return bytes.Compare(x.fields[i].cborName, x.fields[j].cborName) <= 0 +} + +func getEncodingStructType(t reflect.Type) (*encodingStructType, error) { + if v, _ := encodingStructTypeCache.Load(t); v != nil { + structType := v.(*encodingStructType) + return structType, structType.err + } + + flds, structOptions := getFields(t) + + if hasToArrayOption(structOptions) { + return getEncodingStructToArrayType(t, flds) + } + + var err error + var hasKeyAsInt bool + var hasKeyAsStr bool + var omitEmptyIdx []int + e := getEncodeBuffer() + for i := 0; i < len(flds); i++ { + // Get field's encodeFunc + flds[i].ef, flds[i].ief = getEncodeFunc(flds[i].typ) + if flds[i].ef == nil { + err = &UnsupportedTypeError{t} + break + } + + // Encode field name + if flds[i].keyAsInt { + nameAsInt, numErr := strconv.Atoi(flds[i].name) + if numErr != nil { + err = errors.New("cbor: failed to parse field name \"" + flds[i].name + "\" to int (" + numErr.Error() + ")") + break + } + flds[i].nameAsInt = int64(nameAsInt) + if nameAsInt >= 0 { + encodeHead(e, byte(cborTypePositiveInt), uint64(nameAsInt)) + } else { + n := nameAsInt*(-1) - 1 + encodeHead(e, byte(cborTypeNegativeInt), uint64(n)) + } + flds[i].cborName = make([]byte, e.Len()) + copy(flds[i].cborName, e.Bytes()) + e.Reset() + + hasKeyAsInt = true + } else { + encodeHead(e, byte(cborTypeTextString), uint64(len(flds[i].name))) + flds[i].cborName = make([]byte, e.Len()+len(flds[i].name)) + n := copy(flds[i].cborName, e.Bytes()) + copy(flds[i].cborName[n:], flds[i].name) + e.Reset() + + // If cborName contains a text string, then cborNameByteString contains a + // string that has the byte string major type but is otherwise identical to + // cborName. + flds[i].cborNameByteString = make([]byte, len(flds[i].cborName)) + copy(flds[i].cborNameByteString, flds[i].cborName) + // Reset encoded CBOR type to byte string, preserving the "additional + // information" bits: + flds[i].cborNameByteString[0] = byte(cborTypeByteString) | + getAdditionalInformation(flds[i].cborNameByteString[0]) + + hasKeyAsStr = true + } + + // Check if field can be omitted when empty + if flds[i].omitEmpty { + omitEmptyIdx = append(omitEmptyIdx, i) + } + } + putEncodeBuffer(e) + + if err != nil { + structType := &encodingStructType{err: err} + encodingStructTypeCache.Store(t, structType) + return structType, structType.err + } + + // Sort fields by canonical order + bytewiseFields := make(fields, len(flds)) + copy(bytewiseFields, flds) + sort.Sort(&bytewiseFieldSorter{bytewiseFields}) + + lengthFirstFields := bytewiseFields + if hasKeyAsInt && hasKeyAsStr { + lengthFirstFields = make(fields, len(flds)) + copy(lengthFirstFields, flds) + sort.Sort(&lengthFirstFieldSorter{lengthFirstFields}) + } + + structType := &encodingStructType{ + fields: flds, + bytewiseFields: bytewiseFields, + lengthFirstFields: lengthFirstFields, + omitEmptyFieldsIdx: omitEmptyIdx, + } + + encodingStructTypeCache.Store(t, structType) + return structType, structType.err +} + +func getEncodingStructToArrayType(t reflect.Type, flds fields) (*encodingStructType, error) { + for i := 0; i < len(flds); i++ { + // Get field's encodeFunc + flds[i].ef, flds[i].ief = getEncodeFunc(flds[i].typ) + if flds[i].ef == nil { + structType := &encodingStructType{err: &UnsupportedTypeError{t}} + encodingStructTypeCache.Store(t, structType) + return structType, structType.err + } + } + + structType := &encodingStructType{ + fields: flds, + toArray: true, + } + encodingStructTypeCache.Store(t, structType) + return structType, structType.err +} + +func getEncodeFunc(t reflect.Type) (encodeFunc, isEmptyFunc) { + if v, _ := encodeFuncCache.Load(t); v != nil { + fs := v.(encodeFuncs) + return fs.ef, fs.ief + } + ef, ief := getEncodeFuncInternal(t) + encodeFuncCache.Store(t, encodeFuncs{ef, ief}) + return ef, ief +} + +func getTypeInfo(t reflect.Type) *typeInfo { + if v, _ := typeInfoCache.Load(t); v != nil { + return v.(*typeInfo) + } + tInfo := newTypeInfo(t) + typeInfoCache.Store(t, tInfo) + return tInfo +} + +func hasToArrayOption(tag string) bool { + s := ",toarray" + idx := strings.Index(tag, s) + return idx >= 0 && (len(tag) == idx+len(s) || tag[idx+len(s)] == ',') +} diff --git a/vendor/github.com/fxamacker/cbor/v2/common.go b/vendor/github.com/fxamacker/cbor/v2/common.go new file mode 100644 index 000000000000..ec038a49ec26 --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/common.go @@ -0,0 +1,182 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +package cbor + +import ( + "fmt" + "strconv" +) + +type cborType uint8 + +const ( + cborTypePositiveInt cborType = 0x00 + cborTypeNegativeInt cborType = 0x20 + cborTypeByteString cborType = 0x40 + cborTypeTextString cborType = 0x60 + cborTypeArray cborType = 0x80 + cborTypeMap cborType = 0xa0 + cborTypeTag cborType = 0xc0 + cborTypePrimitives cborType = 0xe0 +) + +func (t cborType) String() string { + switch t { + case cborTypePositiveInt: + return "positive integer" + case cborTypeNegativeInt: + return "negative integer" + case cborTypeByteString: + return "byte string" + case cborTypeTextString: + return "UTF-8 text string" + case cborTypeArray: + return "array" + case cborTypeMap: + return "map" + case cborTypeTag: + return "tag" + case cborTypePrimitives: + return "primitives" + default: + return "Invalid type " + strconv.Itoa(int(t)) + } +} + +type additionalInformation uint8 + +const ( + maxAdditionalInformationWithoutArgument = 23 + additionalInformationWith1ByteArgument = 24 + additionalInformationWith2ByteArgument = 25 + additionalInformationWith4ByteArgument = 26 + additionalInformationWith8ByteArgument = 27 + + // For major type 7. + additionalInformationAsFalse = 20 + additionalInformationAsTrue = 21 + additionalInformationAsNull = 22 + additionalInformationAsUndefined = 23 + additionalInformationAsFloat16 = 25 + additionalInformationAsFloat32 = 26 + additionalInformationAsFloat64 = 27 + + // For major type 2, 3, 4, 5. + additionalInformationAsIndefiniteLengthFlag = 31 +) + +const ( + maxSimpleValueInAdditionalInformation = 23 + minSimpleValueIn1ByteArgument = 32 +) + +func (ai additionalInformation) isIndefiniteLength() bool { + return ai == additionalInformationAsIndefiniteLengthFlag +} + +const ( + // From RFC 8949 Section 3: + // "The initial byte of each encoded data item contains both information about the major type + // (the high-order 3 bits, described in Section 3.1) and additional information + // (the low-order 5 bits)." + + // typeMask is used to extract major type in initial byte of encoded data item. + typeMask = 0xe0 + + // additionalInformationMask is used to extract additional information in initial byte of encoded data item. + additionalInformationMask = 0x1f +) + +func getType(raw byte) cborType { + return cborType(raw & typeMask) +} + +func getAdditionalInformation(raw byte) byte { + return raw & additionalInformationMask +} + +func isBreakFlag(raw byte) bool { + return raw == cborBreakFlag +} + +func parseInitialByte(b byte) (t cborType, ai byte) { + return getType(b), getAdditionalInformation(b) +} + +const ( + tagNumRFC3339Time = 0 + tagNumEpochTime = 1 + tagNumUnsignedBignum = 2 + tagNumNegativeBignum = 3 + tagNumExpectedLaterEncodingBase64URL = 21 + tagNumExpectedLaterEncodingBase64 = 22 + tagNumExpectedLaterEncodingBase16 = 23 + tagNumSelfDescribedCBOR = 55799 +) + +const ( + cborBreakFlag = byte(0xff) + cborByteStringWithIndefiniteLengthHead = byte(0x5f) + cborTextStringWithIndefiniteLengthHead = byte(0x7f) + cborArrayWithIndefiniteLengthHead = byte(0x9f) + cborMapWithIndefiniteLengthHead = byte(0xbf) +) + +var ( + cborFalse = []byte{0xf4} + cborTrue = []byte{0xf5} + cborNil = []byte{0xf6} + cborNaN = []byte{0xf9, 0x7e, 0x00} + cborPositiveInfinity = []byte{0xf9, 0x7c, 0x00} + cborNegativeInfinity = []byte{0xf9, 0xfc, 0x00} +) + +// validBuiltinTag checks that supported built-in tag numbers are followed by expected content types. +func validBuiltinTag(tagNum uint64, contentHead byte) error { + t := getType(contentHead) + switch tagNum { + case tagNumRFC3339Time: + // Tag content (date/time text string in RFC 3339 format) must be string type. + if t != cborTypeTextString { + return newInadmissibleTagContentTypeError( + tagNumRFC3339Time, + "text string", + t.String()) + } + return nil + + case tagNumEpochTime: + // Tag content (epoch date/time) must be uint, int, or float type. + if t != cborTypePositiveInt && t != cborTypeNegativeInt && (contentHead < 0xf9 || contentHead > 0xfb) { + return newInadmissibleTagContentTypeError( + tagNumEpochTime, + "integer or floating-point number", + t.String()) + } + return nil + + case tagNumUnsignedBignum, tagNumNegativeBignum: + // Tag content (bignum) must be byte type. + if t != cborTypeByteString { + return newInadmissibleTagContentTypeErrorf( + fmt.Sprintf( + "tag number %d or %d must be followed by byte string, got %s", + tagNumUnsignedBignum, + tagNumNegativeBignum, + t.String(), + )) + } + return nil + + case tagNumExpectedLaterEncodingBase64URL, tagNumExpectedLaterEncodingBase64, tagNumExpectedLaterEncodingBase16: + // From RFC 8949 3.4.5.2: + // The data item tagged can be a byte string or any other data item. In the latter + // case, the tag applies to all of the byte string data items contained in the data + // item, except for those contained in a nested data item tagged with an expected + // conversion. + return nil + } + + return nil +} diff --git a/vendor/github.com/fxamacker/cbor/v2/decode.go b/vendor/github.com/fxamacker/cbor/v2/decode.go new file mode 100644 index 000000000000..85842ac7367c --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/decode.go @@ -0,0 +1,3187 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +package cbor + +import ( + "encoding" + "encoding/base64" + "encoding/binary" + "encoding/hex" + "errors" + "fmt" + "io" + "math" + "math/big" + "reflect" + "strconv" + "strings" + "time" + "unicode/utf8" + + "github.com/x448/float16" +) + +// Unmarshal parses the CBOR-encoded data into the value pointed to by v +// using default decoding options. If v is nil, not a pointer, or +// a nil pointer, Unmarshal returns an error. +// +// To unmarshal CBOR into a value implementing the Unmarshaler interface, +// Unmarshal calls that value's UnmarshalCBOR method with a valid +// CBOR value. +// +// To unmarshal CBOR byte string into a value implementing the +// encoding.BinaryUnmarshaler interface, Unmarshal calls that value's +// UnmarshalBinary method with decoded CBOR byte string. +// +// To unmarshal CBOR into a pointer, Unmarshal sets the pointer to nil +// if CBOR data is null (0xf6) or undefined (0xf7). Otherwise, Unmarshal +// unmarshals CBOR into the value pointed to by the pointer. If the +// pointer is nil, Unmarshal creates a new value for it to point to. +// +// To unmarshal CBOR into an empty interface value, Unmarshal uses the +// following rules: +// +// CBOR booleans decode to bool. +// CBOR positive integers decode to uint64. +// CBOR negative integers decode to int64 (big.Int if value overflows). +// CBOR floating points decode to float64. +// CBOR byte strings decode to []byte. +// CBOR text strings decode to string. +// CBOR arrays decode to []interface{}. +// CBOR maps decode to map[interface{}]interface{}. +// CBOR null and undefined values decode to nil. +// CBOR times (tag 0 and 1) decode to time.Time. +// CBOR bignums (tag 2 and 3) decode to big.Int. +// CBOR tags with an unrecognized number decode to cbor.Tag +// +// To unmarshal a CBOR array into a slice, Unmarshal allocates a new slice +// if the CBOR array is empty or slice capacity is less than CBOR array length. +// Otherwise Unmarshal overwrites existing elements, and sets slice length +// to CBOR array length. +// +// To unmarshal a CBOR array into a Go array, Unmarshal decodes CBOR array +// elements into Go array elements. If the Go array is smaller than the +// CBOR array, the extra CBOR array elements are discarded. If the CBOR +// array is smaller than the Go array, the extra Go array elements are +// set to zero values. +// +// To unmarshal a CBOR array into a struct, struct must have a special field "_" +// with struct tag `cbor:",toarray"`. Go array elements are decoded into struct +// fields. Any "omitempty" struct field tag option is ignored in this case. +// +// To unmarshal a CBOR map into a map, Unmarshal allocates a new map only if the +// map is nil. Otherwise Unmarshal reuses the existing map and keeps existing +// entries. Unmarshal stores key-value pairs from the CBOR map into Go map. +// See DecOptions.DupMapKey to enable duplicate map key detection. +// +// To unmarshal a CBOR map into a struct, Unmarshal matches CBOR map keys to the +// keys in the following priority: +// +// 1. "cbor" key in struct field tag, +// 2. "json" key in struct field tag, +// 3. struct field name. +// +// Unmarshal tries an exact match for field name, then a case-insensitive match. +// Map key-value pairs without corresponding struct fields are ignored. See +// DecOptions.ExtraReturnErrors to return error at unknown field. +// +// To unmarshal a CBOR text string into a time.Time value, Unmarshal parses text +// string formatted in RFC3339. To unmarshal a CBOR integer/float into a +// time.Time value, Unmarshal creates an unix time with integer/float as seconds +// and fractional seconds since January 1, 1970 UTC. As a special case, Infinite +// and NaN float values decode to time.Time's zero value. +// +// To unmarshal CBOR null (0xf6) and undefined (0xf7) values into a +// slice/map/pointer, Unmarshal sets Go value to nil. Because null is often +// used to mean "not present", unmarshalling CBOR null and undefined value +// into any other Go type has no effect and returns no error. +// +// Unmarshal supports CBOR tag 55799 (self-describe CBOR), tag 0 and 1 (time), +// and tag 2 and 3 (bignum). +// +// Unmarshal returns ExtraneousDataError error (without decoding into v) +// if there are any remaining bytes following the first valid CBOR data item. +// See UnmarshalFirst, if you want to unmarshal only the first +// CBOR data item without ExtraneousDataError caused by remaining bytes. +func Unmarshal(data []byte, v interface{}) error { + return defaultDecMode.Unmarshal(data, v) +} + +// UnmarshalFirst parses the first CBOR data item into the value pointed to by v +// using default decoding options. Any remaining bytes are returned in rest. +// +// If v is nil, not a pointer, or a nil pointer, UnmarshalFirst returns an error. +// +// See the documentation for Unmarshal for details. +func UnmarshalFirst(data []byte, v interface{}) (rest []byte, err error) { + return defaultDecMode.UnmarshalFirst(data, v) +} + +// Valid checks whether data is a well-formed encoded CBOR data item and +// that it complies with default restrictions such as MaxNestedLevels, +// MaxArrayElements, MaxMapPairs, etc. +// +// If there are any remaining bytes after the CBOR data item, +// an ExtraneousDataError is returned. +// +// WARNING: Valid doesn't check if encoded CBOR data item is valid (i.e. validity) +// and RFC 8949 distinctly defines what is "Valid" and what is "Well-formed". +// +// Deprecated: Valid is kept for compatibility and should not be used. +// Use Wellformed instead because it has a more appropriate name. +func Valid(data []byte) error { + return defaultDecMode.Valid(data) +} + +// Wellformed checks whether data is a well-formed encoded CBOR data item and +// that it complies with default restrictions such as MaxNestedLevels, +// MaxArrayElements, MaxMapPairs, etc. +// +// If there are any remaining bytes after the CBOR data item, +// an ExtraneousDataError is returned. +func Wellformed(data []byte) error { + return defaultDecMode.Wellformed(data) +} + +// Unmarshaler is the interface implemented by types that wish to unmarshal +// CBOR data themselves. The input is a valid CBOR value. UnmarshalCBOR +// must copy the CBOR data if it needs to use it after returning. +type Unmarshaler interface { + UnmarshalCBOR([]byte) error +} + +// InvalidUnmarshalError describes an invalid argument passed to Unmarshal. +type InvalidUnmarshalError struct { + s string +} + +func (e *InvalidUnmarshalError) Error() string { + return e.s +} + +// UnmarshalTypeError describes a CBOR value that can't be decoded to a Go type. +type UnmarshalTypeError struct { + CBORType string // type of CBOR value + GoType string // type of Go value it could not be decoded into + StructFieldName string // name of the struct field holding the Go value (optional) + errorMsg string // additional error message (optional) +} + +func (e *UnmarshalTypeError) Error() string { + var s string + if e.StructFieldName != "" { + s = "cbor: cannot unmarshal " + e.CBORType + " into Go struct field " + e.StructFieldName + " of type " + e.GoType + } else { + s = "cbor: cannot unmarshal " + e.CBORType + " into Go value of type " + e.GoType + } + if e.errorMsg != "" { + s += " (" + e.errorMsg + ")" + } + return s +} + +// InvalidMapKeyTypeError describes invalid Go map key type when decoding CBOR map. +// For example, Go doesn't allow slice as map key. +type InvalidMapKeyTypeError struct { + GoType string +} + +func (e *InvalidMapKeyTypeError) Error() string { + return "cbor: invalid map key type: " + e.GoType +} + +// DupMapKeyError describes detected duplicate map key in CBOR map. +type DupMapKeyError struct { + Key interface{} + Index int +} + +func (e *DupMapKeyError) Error() string { + return fmt.Sprintf("cbor: found duplicate map key \"%v\" at map element index %d", e.Key, e.Index) +} + +// UnknownFieldError describes detected unknown field in CBOR map when decoding to Go struct. +type UnknownFieldError struct { + Index int +} + +func (e *UnknownFieldError) Error() string { + return fmt.Sprintf("cbor: found unknown field at map element index %d", e.Index) +} + +// UnacceptableDataItemError is returned when unmarshaling a CBOR input that contains a data item +// that is not acceptable to a specific CBOR-based application protocol ("invalid or unexpected" as +// described in RFC 8949 Section 5 Paragraph 3). +type UnacceptableDataItemError struct { + CBORType string + Message string +} + +func (e UnacceptableDataItemError) Error() string { + return fmt.Sprintf("cbor: data item of cbor type %s is not accepted by protocol: %s", e.CBORType, e.Message) +} + +// ByteStringExpectedFormatError is returned when unmarshaling CBOR byte string fails when +// using non-default ByteStringExpectedFormat decoding option that makes decoder expect +// a specified format such as base64, hex, etc. +type ByteStringExpectedFormatError struct { + expectedFormatOption ByteStringExpectedFormatMode + err error +} + +func newByteStringExpectedFormatError(expectedFormatOption ByteStringExpectedFormatMode, err error) *ByteStringExpectedFormatError { + return &ByteStringExpectedFormatError{expectedFormatOption, err} +} + +func (e *ByteStringExpectedFormatError) Error() string { + switch e.expectedFormatOption { + case ByteStringExpectedBase64URL: + return fmt.Sprintf("cbor: failed to decode base64url from byte string: %s", e.err) + + case ByteStringExpectedBase64: + return fmt.Sprintf("cbor: failed to decode base64 from byte string: %s", e.err) + + case ByteStringExpectedBase16: + return fmt.Sprintf("cbor: failed to decode hex from byte string: %s", e.err) + + default: + return fmt.Sprintf("cbor: failed to decode byte string in expected format %d: %s", e.expectedFormatOption, e.err) + } +} + +func (e *ByteStringExpectedFormatError) Unwrap() error { + return e.err +} + +// InadmissibleTagContentTypeError is returned when unmarshaling built-in CBOR tags +// fails because of inadmissible type for tag content. Currently, the built-in +// CBOR tags in this codec are tags 0-3 and 21-23. +// See "Tag validity" in RFC 8949 Section 5.3.2. +type InadmissibleTagContentTypeError struct { + s string + tagNum int + expectedTagContentType string + gotTagContentType string +} + +func newInadmissibleTagContentTypeError( + tagNum int, + expectedTagContentType string, + gotTagContentType string, +) *InadmissibleTagContentTypeError { + return &InadmissibleTagContentTypeError{ + tagNum: tagNum, + expectedTagContentType: expectedTagContentType, + gotTagContentType: gotTagContentType, + } +} + +func newInadmissibleTagContentTypeErrorf(s string) *InadmissibleTagContentTypeError { + return &InadmissibleTagContentTypeError{s: "cbor: " + s} //nolint:goconst // ignore "cbor" +} + +func (e *InadmissibleTagContentTypeError) Error() string { + if e.s == "" { + return fmt.Sprintf( + "cbor: tag number %d must be followed by %s, got %s", + e.tagNum, + e.expectedTagContentType, + e.gotTagContentType, + ) + } + return e.s +} + +// DupMapKeyMode specifies how to enforce duplicate map key. Two map keys are considered duplicates if: +// 1. When decoding into a struct, both keys match the same struct field. The keys are also +// considered duplicates if neither matches any field and decoding to interface{} would produce +// equal (==) values for both keys. +// 2. When decoding into a map, both keys are equal (==) when decoded into values of the +// destination map's key type. +type DupMapKeyMode int + +const ( + // DupMapKeyQuiet doesn't enforce duplicate map key. Decoder quietly (no error) + // uses faster of "keep first" or "keep last" depending on Go data type and other factors. + DupMapKeyQuiet DupMapKeyMode = iota + + // DupMapKeyEnforcedAPF enforces detection and rejection of duplicate map keys. + // APF means "Allow Partial Fill" and the destination map or struct can be partially filled. + // If a duplicate map key is detected, DupMapKeyError is returned without further decoding + // of the map. It's the caller's responsibility to respond to DupMapKeyError by + // discarding the partially filled result if their protocol requires it. + // WARNING: using DupMapKeyEnforcedAPF will decrease performance and increase memory use. + DupMapKeyEnforcedAPF + + maxDupMapKeyMode +) + +func (dmkm DupMapKeyMode) valid() bool { + return dmkm >= 0 && dmkm < maxDupMapKeyMode +} + +// IndefLengthMode specifies whether to allow indefinite length items. +type IndefLengthMode int + +const ( + // IndefLengthAllowed allows indefinite length items. + IndefLengthAllowed IndefLengthMode = iota + + // IndefLengthForbidden disallows indefinite length items. + IndefLengthForbidden + + maxIndefLengthMode +) + +func (m IndefLengthMode) valid() bool { + return m >= 0 && m < maxIndefLengthMode +} + +// TagsMode specifies whether to allow CBOR tags. +type TagsMode int + +const ( + // TagsAllowed allows CBOR tags. + TagsAllowed TagsMode = iota + + // TagsForbidden disallows CBOR tags. + TagsForbidden + + maxTagsMode +) + +func (tm TagsMode) valid() bool { + return tm >= 0 && tm < maxTagsMode +} + +// IntDecMode specifies which Go type (int64, uint64, or big.Int) should +// be used when decoding CBOR integers (major type 0 and 1) to Go interface{}. +type IntDecMode int + +const ( + // IntDecConvertNone affects how CBOR integers (major type 0 and 1) decode to Go interface{}. + // It decodes CBOR unsigned integer (major type 0) to: + // - uint64 + // It decodes CBOR negative integer (major type 1) to: + // - int64 if value fits + // - big.Int or *big.Int (see BigIntDecMode) if value doesn't fit into int64 + IntDecConvertNone IntDecMode = iota + + // IntDecConvertSigned affects how CBOR integers (major type 0 and 1) decode to Go interface{}. + // It decodes CBOR integers (major type 0 and 1) to: + // - int64 if value fits + // - big.Int or *big.Int (see BigIntDecMode) if value < math.MinInt64 + // - return UnmarshalTypeError if value > math.MaxInt64 + // Deprecated: IntDecConvertSigned should not be used. + // Please use other options, such as IntDecConvertSignedOrError, IntDecConvertSignedOrBigInt, IntDecConvertNone. + IntDecConvertSigned + + // IntDecConvertSignedOrFail affects how CBOR integers (major type 0 and 1) decode to Go interface{}. + // It decodes CBOR integers (major type 0 and 1) to: + // - int64 if value fits + // - return UnmarshalTypeError if value doesn't fit into int64 + IntDecConvertSignedOrFail + + // IntDecConvertSigned affects how CBOR integers (major type 0 and 1) decode to Go interface{}. + // It makes CBOR integers (major type 0 and 1) decode to: + // - int64 if value fits + // - big.Int or *big.Int (see BigIntDecMode) if value doesn't fit into int64 + IntDecConvertSignedOrBigInt + + maxIntDec +) + +func (idm IntDecMode) valid() bool { + return idm >= 0 && idm < maxIntDec +} + +// MapKeyByteStringMode specifies how to decode CBOR byte string (major type 2) +// as Go map key when decoding CBOR map key into an empty Go interface value. +// Specifically, this option applies when decoding CBOR map into +// - Go empty interface, or +// - Go map with empty interface as key type. +// The CBOR map key types handled by this option are +// - byte string +// - tagged byte string +// - nested tagged byte string +type MapKeyByteStringMode int + +const ( + // MapKeyByteStringAllowed allows CBOR byte string to be decoded as Go map key. + // Since Go doesn't allow []byte as map key, CBOR byte string is decoded to + // ByteString which has underlying string type. + // This is the default setting. + MapKeyByteStringAllowed MapKeyByteStringMode = iota + + // MapKeyByteStringForbidden forbids CBOR byte string being decoded as Go map key. + // Attempting to decode CBOR byte string as map key into empty interface value + // returns a decoding error. + MapKeyByteStringForbidden + + maxMapKeyByteStringMode +) + +func (mkbsm MapKeyByteStringMode) valid() bool { + return mkbsm >= 0 && mkbsm < maxMapKeyByteStringMode +} + +// ExtraDecErrorCond specifies extra conditions that should be treated as errors. +type ExtraDecErrorCond uint + +// ExtraDecErrorNone indicates no extra error condition. +const ExtraDecErrorNone ExtraDecErrorCond = 0 + +const ( + // ExtraDecErrorUnknownField indicates error condition when destination + // Go struct doesn't have a field matching a CBOR map key. + ExtraDecErrorUnknownField ExtraDecErrorCond = 1 << iota + + maxExtraDecError +) + +func (ec ExtraDecErrorCond) valid() bool { + return ec < maxExtraDecError +} + +// UTF8Mode option specifies if decoder should +// decode CBOR Text containing invalid UTF-8 string. +type UTF8Mode int + +const ( + // UTF8RejectInvalid rejects CBOR Text containing + // invalid UTF-8 string. + UTF8RejectInvalid UTF8Mode = iota + + // UTF8DecodeInvalid allows decoding CBOR Text containing + // invalid UTF-8 string. + UTF8DecodeInvalid + + maxUTF8Mode +) + +func (um UTF8Mode) valid() bool { + return um >= 0 && um < maxUTF8Mode +} + +// FieldNameMatchingMode specifies how string keys in CBOR maps are matched to Go struct field names. +type FieldNameMatchingMode int + +const ( + // FieldNameMatchingPreferCaseSensitive prefers to decode map items into struct fields whose names (or tag + // names) exactly match the item's key. If there is no such field, a map item will be decoded into a field whose + // name is a case-insensitive match for the item's key. + FieldNameMatchingPreferCaseSensitive FieldNameMatchingMode = iota + + // FieldNameMatchingCaseSensitive decodes map items only into a struct field whose name (or tag name) is an + // exact match for the item's key. + FieldNameMatchingCaseSensitive + + maxFieldNameMatchingMode +) + +func (fnmm FieldNameMatchingMode) valid() bool { + return fnmm >= 0 && fnmm < maxFieldNameMatchingMode +} + +// BigIntDecMode specifies how to decode CBOR bignum to Go interface{}. +type BigIntDecMode int + +const ( + // BigIntDecodeValue makes CBOR bignum decode to big.Int (instead of *big.Int) + // when unmarshalling into a Go interface{}. + BigIntDecodeValue BigIntDecMode = iota + + // BigIntDecodePointer makes CBOR bignum decode to *big.Int when + // unmarshalling into a Go interface{}. + BigIntDecodePointer + + maxBigIntDecMode +) + +func (bidm BigIntDecMode) valid() bool { + return bidm >= 0 && bidm < maxBigIntDecMode +} + +// ByteStringToStringMode specifies the behavior when decoding a CBOR byte string into a Go string. +type ByteStringToStringMode int + +const ( + // ByteStringToStringForbidden generates an error on an attempt to decode a CBOR byte string into a Go string. + ByteStringToStringForbidden ByteStringToStringMode = iota + + // ByteStringToStringAllowed permits decoding a CBOR byte string into a Go string. + ByteStringToStringAllowed + + // ByteStringToStringAllowedWithExpectedLaterEncoding permits decoding a CBOR byte string + // into a Go string. Also, if the byte string is enclosed (directly or indirectly) by one of + // the "expected later encoding" tags (numbers 21 through 23), the destination string will + // be populated by applying the designated text encoding to the contents of the input byte + // string. + ByteStringToStringAllowedWithExpectedLaterEncoding + + maxByteStringToStringMode +) + +func (bstsm ByteStringToStringMode) valid() bool { + return bstsm >= 0 && bstsm < maxByteStringToStringMode +} + +// FieldNameByteStringMode specifies the behavior when decoding a CBOR byte string map key as a Go struct field name. +type FieldNameByteStringMode int + +const ( + // FieldNameByteStringForbidden generates an error on an attempt to decode a CBOR byte string map key as a Go struct field name. + FieldNameByteStringForbidden FieldNameByteStringMode = iota + + // FieldNameByteStringAllowed permits CBOR byte string map keys to be recognized as Go struct field names. + FieldNameByteStringAllowed + + maxFieldNameByteStringMode +) + +func (fnbsm FieldNameByteStringMode) valid() bool { + return fnbsm >= 0 && fnbsm < maxFieldNameByteStringMode +} + +// UnrecognizedTagToAnyMode specifies how to decode unrecognized CBOR tag into an empty interface (any). +// Currently, recognized CBOR tag numbers are 0, 1, 2, 3, or registered by TagSet. +type UnrecognizedTagToAnyMode int + +const ( + // UnrecognizedTagNumAndContentToAny decodes CBOR tag number and tag content to cbor.Tag + // when decoding unrecognized CBOR tag into an empty interface. + UnrecognizedTagNumAndContentToAny UnrecognizedTagToAnyMode = iota + + // UnrecognizedTagContentToAny decodes only CBOR tag content (into its default type) + // when decoding unrecognized CBOR tag into an empty interface. + UnrecognizedTagContentToAny + + maxUnrecognizedTagToAny +) + +func (uttam UnrecognizedTagToAnyMode) valid() bool { + return uttam >= 0 && uttam < maxUnrecognizedTagToAny +} + +// TimeTagToAnyMode specifies how to decode CBOR tag 0 and 1 into an empty interface (any). +// Based on the specified mode, Unmarshal can return a time.Time value or a time string in a specific format. +type TimeTagToAnyMode int + +const ( + // TimeTagToTime decodes CBOR tag 0 and 1 into a time.Time value + // when decoding tag 0 or 1 into an empty interface. + TimeTagToTime TimeTagToAnyMode = iota + + // TimeTagToRFC3339 decodes CBOR tag 0 and 1 into a time string in RFC3339 format + // when decoding tag 0 or 1 into an empty interface. + TimeTagToRFC3339 + + // TimeTagToRFC3339Nano decodes CBOR tag 0 and 1 into a time string in RFC3339Nano format + // when decoding tag 0 or 1 into an empty interface. + TimeTagToRFC3339Nano + + maxTimeTagToAnyMode +) + +func (tttam TimeTagToAnyMode) valid() bool { + return tttam >= 0 && tttam < maxTimeTagToAnyMode +} + +// SimpleValueRegistry is a registry of unmarshaling behaviors for each possible CBOR simple value +// number (0...23 and 32...255). +type SimpleValueRegistry struct { + rejected [256]bool +} + +// WithRejectedSimpleValue registers the given simple value as rejected. If the simple value is +// encountered in a CBOR input during unmarshaling, an UnacceptableDataItemError is returned. +func WithRejectedSimpleValue(sv SimpleValue) func(*SimpleValueRegistry) error { + return func(r *SimpleValueRegistry) error { + if sv >= 24 && sv <= 31 { + return fmt.Errorf("cbor: cannot set analog for reserved simple value %d", sv) + } + r.rejected[sv] = true + return nil + } +} + +// Creates a new SimpleValueRegistry. The registry state is initialized by executing the provided +// functions in order against a registry that is pre-populated with the defaults for all well-formed +// simple value numbers. +func NewSimpleValueRegistryFromDefaults(fns ...func(*SimpleValueRegistry) error) (*SimpleValueRegistry, error) { + var r SimpleValueRegistry + for _, fn := range fns { + if err := fn(&r); err != nil { + return nil, err + } + } + return &r, nil +} + +// NaNMode specifies how to decode floating-point values (major type 7, additional information 25 +// through 27) representing NaN (not-a-number). +type NaNMode int + +const ( + // NaNDecodeAllowed will decode NaN values to Go float32 or float64. + NaNDecodeAllowed NaNMode = iota + + // NaNDecodeForbidden will return an UnacceptableDataItemError on an attempt to decode a NaN value. + NaNDecodeForbidden + + maxNaNDecode +) + +func (ndm NaNMode) valid() bool { + return ndm >= 0 && ndm < maxNaNDecode +} + +// InfMode specifies how to decode floating-point values (major type 7, additional information 25 +// through 27) representing positive or negative infinity. +type InfMode int + +const ( + // InfDecodeAllowed will decode infinite values to Go float32 or float64. + InfDecodeAllowed InfMode = iota + + // InfDecodeForbidden will return an UnacceptableDataItemError on an attempt to decode an + // infinite value. + InfDecodeForbidden + + maxInfDecode +) + +func (idm InfMode) valid() bool { + return idm >= 0 && idm < maxInfDecode +} + +// ByteStringToTimeMode specifies the behavior when decoding a CBOR byte string into a Go time.Time. +type ByteStringToTimeMode int + +const ( + // ByteStringToTimeForbidden generates an error on an attempt to decode a CBOR byte string into a Go time.Time. + ByteStringToTimeForbidden ByteStringToTimeMode = iota + + // ByteStringToTimeAllowed permits decoding a CBOR byte string into a Go time.Time. + ByteStringToTimeAllowed + + maxByteStringToTimeMode +) + +func (bttm ByteStringToTimeMode) valid() bool { + return bttm >= 0 && bttm < maxByteStringToTimeMode +} + +// ByteStringExpectedFormatMode specifies how to decode CBOR byte string into Go byte slice +// when the byte string is NOT enclosed in CBOR tag 21, 22, or 23. An error is returned if +// the CBOR byte string does not contain the expected format (e.g. base64) specified. +// For tags 21-23, see "Expected Later Encoding for CBOR-to-JSON Converters" +// in RFC 8949 Section 3.4.5.2. +type ByteStringExpectedFormatMode int + +const ( + // ByteStringExpectedFormatNone copies the unmodified CBOR byte string into Go byte slice + // if the byte string is not tagged by CBOR tag 21-23. + ByteStringExpectedFormatNone ByteStringExpectedFormatMode = iota + + // ByteStringExpectedBase64URL expects CBOR byte strings to contain base64url-encoded bytes + // if the byte string is not tagged by CBOR tag 21-23. The decoder will attempt to decode + // the base64url-encoded bytes into Go slice. + ByteStringExpectedBase64URL + + // ByteStringExpectedBase64 expects CBOR byte strings to contain base64-encoded bytes + // if the byte string is not tagged by CBOR tag 21-23. The decoder will attempt to decode + // the base64-encoded bytes into Go slice. + ByteStringExpectedBase64 + + // ByteStringExpectedBase16 expects CBOR byte strings to contain base16-encoded bytes + // if the byte string is not tagged by CBOR tag 21-23. The decoder will attempt to decode + // the base16-encoded bytes into Go slice. + ByteStringExpectedBase16 + + maxByteStringExpectedFormatMode +) + +func (bsefm ByteStringExpectedFormatMode) valid() bool { + return bsefm >= 0 && bsefm < maxByteStringExpectedFormatMode +} + +// BignumTagMode specifies whether or not the "bignum" tags 2 and 3 (RFC 8949 Section 3.4.3) can be +// decoded. +type BignumTagMode int + +const ( + // BignumTagAllowed allows bignum tags to be decoded. + BignumTagAllowed BignumTagMode = iota + + // BignumTagForbidden produces an UnacceptableDataItemError during Unmarshal if a bignum tag + // is encountered in the input. + BignumTagForbidden + + maxBignumTag +) + +func (btm BignumTagMode) valid() bool { + return btm >= 0 && btm < maxBignumTag +} + +// BinaryUnmarshalerMode specifies how to decode into types that implement +// encoding.BinaryUnmarshaler. +type BinaryUnmarshalerMode int + +const ( + // BinaryUnmarshalerByteString will invoke UnmarshalBinary on the contents of a CBOR byte + // string when decoding into a value that implements BinaryUnmarshaler. + BinaryUnmarshalerByteString BinaryUnmarshalerMode = iota + + // BinaryUnmarshalerNone does not recognize BinaryUnmarshaler implementations during decode. + BinaryUnmarshalerNone + + maxBinaryUnmarshalerMode +) + +func (bum BinaryUnmarshalerMode) valid() bool { + return bum >= 0 && bum < maxBinaryUnmarshalerMode +} + +// DecOptions specifies decoding options. +type DecOptions struct { + // DupMapKey specifies whether to enforce duplicate map key. + DupMapKey DupMapKeyMode + + // TimeTag specifies whether or not untagged data items, or tags other + // than tag 0 and tag 1, can be decoded to time.Time. If tag 0 or tag 1 + // appears in an input, the type of its content is always validated as + // specified in RFC 8949. That behavior is not controlled by this + // option. The behavior of the supported modes are: + // + // DecTagIgnored (default): Untagged text strings and text strings + // enclosed in tags other than 0 and 1 are decoded as though enclosed + // in tag 0. Untagged unsigned integers, negative integers, and + // floating-point numbers (or those enclosed in tags other than 0 and + // 1) are decoded as though enclosed in tag 1. Decoding a tag other + // than 0 or 1 enclosing simple values null or undefined into a + // time.Time does not modify the destination value. + // + // DecTagOptional: Untagged text strings are decoded as though + // enclosed in tag 0. Untagged unsigned integers, negative integers, + // and floating-point numbers are decoded as though enclosed in tag + // 1. Tags other than 0 and 1 will produce an error on attempts to + // decode them into a time.Time. + // + // DecTagRequired: Only tags 0 and 1 can be decoded to time.Time. Any + // other input will produce an error. + TimeTag DecTagMode + + // MaxNestedLevels specifies the max nested levels allowed for any combination of CBOR array, maps, and tags. + // Default is 32 levels and it can be set to [4, 65535]. Note that higher maximum levels of nesting can + // require larger amounts of stack to deserialize. Don't increase this higher than you require. + MaxNestedLevels int + + // MaxArrayElements specifies the max number of elements for CBOR arrays. + // Default is 128*1024=131072 and it can be set to [16, 2147483647] + MaxArrayElements int + + // MaxMapPairs specifies the max number of key-value pairs for CBOR maps. + // Default is 128*1024=131072 and it can be set to [16, 2147483647] + MaxMapPairs int + + // IndefLength specifies whether to allow indefinite length CBOR items. + IndefLength IndefLengthMode + + // TagsMd specifies whether to allow CBOR tags (major type 6). + TagsMd TagsMode + + // IntDec specifies which Go integer type (int64 or uint64) to use + // when decoding CBOR int (major type 0 and 1) to Go interface{}. + IntDec IntDecMode + + // MapKeyByteString specifies how to decode CBOR byte string as map key + // when decoding CBOR map with byte string key into an empty interface value. + // By default, an error is returned when attempting to decode CBOR byte string + // as map key because Go doesn't allow []byte as map key. + MapKeyByteString MapKeyByteStringMode + + // ExtraReturnErrors specifies extra conditions that should be treated as errors. + ExtraReturnErrors ExtraDecErrorCond + + // DefaultMapType specifies Go map type to create and decode to + // when unmarshalling CBOR into an empty interface value. + // By default, unmarshal uses map[interface{}]interface{}. + DefaultMapType reflect.Type + + // UTF8 specifies if decoder should decode CBOR Text containing invalid UTF-8. + // By default, unmarshal rejects CBOR text containing invalid UTF-8. + UTF8 UTF8Mode + + // FieldNameMatching specifies how string keys in CBOR maps are matched to Go struct field names. + FieldNameMatching FieldNameMatchingMode + + // BigIntDec specifies how to decode CBOR bignum to Go interface{}. + BigIntDec BigIntDecMode + + // DefaultByteStringType is the Go type that should be produced when decoding a CBOR byte + // string into an empty interface value. Types to which a []byte is convertible are valid + // for this option, except for array and pointer-to-array types. If nil, the default is + // []byte. + DefaultByteStringType reflect.Type + + // ByteStringToString specifies the behavior when decoding a CBOR byte string into a Go string. + ByteStringToString ByteStringToStringMode + + // FieldNameByteString specifies the behavior when decoding a CBOR byte string map key as a + // Go struct field name. + FieldNameByteString FieldNameByteStringMode + + // UnrecognizedTagToAny specifies how to decode unrecognized CBOR tag into an empty interface. + // Currently, recognized CBOR tag numbers are 0, 1, 2, 3, or registered by TagSet. + UnrecognizedTagToAny UnrecognizedTagToAnyMode + + // TimeTagToAny specifies how to decode CBOR tag 0 and 1 into an empty interface (any). + // Based on the specified mode, Unmarshal can return a time.Time value or a time string in a specific format. + TimeTagToAny TimeTagToAnyMode + + // SimpleValues is an immutable mapping from each CBOR simple value to a corresponding + // unmarshal behavior. If nil, the simple values false, true, null, and undefined are mapped + // to the Go analog values false, true, nil, and nil, respectively, and all other simple + // values N (except the reserved simple values 24 through 31) are mapped to + // cbor.SimpleValue(N). In other words, all well-formed simple values can be decoded. + // + // Users may provide a custom SimpleValueRegistry constructed via + // NewSimpleValueRegistryFromDefaults. + SimpleValues *SimpleValueRegistry + + // NaN specifies how to decode floating-point values (major type 7, additional information + // 25 through 27) representing NaN (not-a-number). + NaN NaNMode + + // Inf specifies how to decode floating-point values (major type 7, additional information + // 25 through 27) representing positive or negative infinity. + Inf InfMode + + // ByteStringToTime specifies how to decode CBOR byte string into Go time.Time. + ByteStringToTime ByteStringToTimeMode + + // ByteStringExpectedFormat specifies how to decode CBOR byte string into Go byte slice + // when the byte string is NOT enclosed in CBOR tag 21, 22, or 23. An error is returned if + // the CBOR byte string does not contain the expected format (e.g. base64) specified. + // For tags 21-23, see "Expected Later Encoding for CBOR-to-JSON Converters" + // in RFC 8949 Section 3.4.5.2. + ByteStringExpectedFormat ByteStringExpectedFormatMode + + // BignumTag specifies whether or not the "bignum" tags 2 and 3 (RFC 8949 Section 3.4.3) can + // be decoded. Unlike BigIntDec, this option applies to all bignum tags encountered in a + // CBOR input, independent of the type of the destination value of a particular Unmarshal + // operation. + BignumTag BignumTagMode + + // BinaryUnmarshaler specifies how to decode into types that implement + // encoding.BinaryUnmarshaler. + BinaryUnmarshaler BinaryUnmarshalerMode +} + +// DecMode returns DecMode with immutable options and no tags (safe for concurrency). +func (opts DecOptions) DecMode() (DecMode, error) { //nolint:gocritic // ignore hugeParam + return opts.decMode() +} + +// validForTags checks that the provided tag set is compatible with these options and returns a +// non-nil error if and only if the provided tag set is incompatible. +func (opts DecOptions) validForTags(tags TagSet) error { //nolint:gocritic // ignore hugeParam + if opts.TagsMd == TagsForbidden { + return errors.New("cbor: cannot create DecMode with TagSet when TagsMd is TagsForbidden") + } + if tags == nil { + return errors.New("cbor: cannot create DecMode with nil value as TagSet") + } + if opts.ByteStringToString == ByteStringToStringAllowedWithExpectedLaterEncoding || + opts.ByteStringExpectedFormat != ByteStringExpectedFormatNone { + for _, tagNum := range []uint64{ + tagNumExpectedLaterEncodingBase64URL, + tagNumExpectedLaterEncodingBase64, + tagNumExpectedLaterEncodingBase16, + } { + if rt := tags.getTypeFromTagNum([]uint64{tagNum}); rt != nil { + return fmt.Errorf("cbor: DecMode with non-default StringExpectedEncoding or ByteSliceExpectedEncoding treats tag %d as built-in and conflicts with the provided TagSet's registration of %v", tagNum, rt) + } + } + + } + return nil +} + +// DecModeWithTags returns DecMode with options and tags that are both immutable (safe for concurrency). +func (opts DecOptions) DecModeWithTags(tags TagSet) (DecMode, error) { //nolint:gocritic // ignore hugeParam + if err := opts.validForTags(tags); err != nil { + return nil, err + } + dm, err := opts.decMode() + if err != nil { + return nil, err + } + + // Copy tags + ts := tagSet(make(map[reflect.Type]*tagItem)) + syncTags := tags.(*syncTagSet) + syncTags.RLock() + for contentType, tag := range syncTags.t { + if tag.opts.DecTag != DecTagIgnored { + ts[contentType] = tag + } + } + syncTags.RUnlock() + + if len(ts) > 0 { + dm.tags = ts + } + + return dm, nil +} + +// DecModeWithSharedTags returns DecMode with immutable options and mutable shared tags (safe for concurrency). +func (opts DecOptions) DecModeWithSharedTags(tags TagSet) (DecMode, error) { //nolint:gocritic // ignore hugeParam + if err := opts.validForTags(tags); err != nil { + return nil, err + } + dm, err := opts.decMode() + if err != nil { + return nil, err + } + dm.tags = tags + return dm, nil +} + +const ( + defaultMaxArrayElements = 131072 + minMaxArrayElements = 16 + maxMaxArrayElements = 2147483647 + + defaultMaxMapPairs = 131072 + minMaxMapPairs = 16 + maxMaxMapPairs = 2147483647 + + defaultMaxNestedLevels = 32 + minMaxNestedLevels = 4 + maxMaxNestedLevels = 65535 +) + +var defaultSimpleValues = func() *SimpleValueRegistry { + registry, err := NewSimpleValueRegistryFromDefaults() + if err != nil { + panic(err) + } + return registry +}() + +//nolint:gocyclo // Each option comes with some manageable boilerplate +func (opts DecOptions) decMode() (*decMode, error) { //nolint:gocritic // ignore hugeParam + if !opts.DupMapKey.valid() { + return nil, errors.New("cbor: invalid DupMapKey " + strconv.Itoa(int(opts.DupMapKey))) + } + + if !opts.TimeTag.valid() { + return nil, errors.New("cbor: invalid TimeTag " + strconv.Itoa(int(opts.TimeTag))) + } + + if !opts.IndefLength.valid() { + return nil, errors.New("cbor: invalid IndefLength " + strconv.Itoa(int(opts.IndefLength))) + } + + if !opts.TagsMd.valid() { + return nil, errors.New("cbor: invalid TagsMd " + strconv.Itoa(int(opts.TagsMd))) + } + + if !opts.IntDec.valid() { + return nil, errors.New("cbor: invalid IntDec " + strconv.Itoa(int(opts.IntDec))) + } + + if !opts.MapKeyByteString.valid() { + return nil, errors.New("cbor: invalid MapKeyByteString " + strconv.Itoa(int(opts.MapKeyByteString))) + } + + if opts.MaxNestedLevels == 0 { + opts.MaxNestedLevels = defaultMaxNestedLevels + } else if opts.MaxNestedLevels < minMaxNestedLevels || opts.MaxNestedLevels > maxMaxNestedLevels { + return nil, errors.New("cbor: invalid MaxNestedLevels " + strconv.Itoa(opts.MaxNestedLevels) + + " (range is [" + strconv.Itoa(minMaxNestedLevels) + ", " + strconv.Itoa(maxMaxNestedLevels) + "])") + } + + if opts.MaxArrayElements == 0 { + opts.MaxArrayElements = defaultMaxArrayElements + } else if opts.MaxArrayElements < minMaxArrayElements || opts.MaxArrayElements > maxMaxArrayElements { + return nil, errors.New("cbor: invalid MaxArrayElements " + strconv.Itoa(opts.MaxArrayElements) + + " (range is [" + strconv.Itoa(minMaxArrayElements) + ", " + strconv.Itoa(maxMaxArrayElements) + "])") + } + + if opts.MaxMapPairs == 0 { + opts.MaxMapPairs = defaultMaxMapPairs + } else if opts.MaxMapPairs < minMaxMapPairs || opts.MaxMapPairs > maxMaxMapPairs { + return nil, errors.New("cbor: invalid MaxMapPairs " + strconv.Itoa(opts.MaxMapPairs) + + " (range is [" + strconv.Itoa(minMaxMapPairs) + ", " + strconv.Itoa(maxMaxMapPairs) + "])") + } + + if !opts.ExtraReturnErrors.valid() { + return nil, errors.New("cbor: invalid ExtraReturnErrors " + strconv.Itoa(int(opts.ExtraReturnErrors))) + } + + if opts.DefaultMapType != nil && opts.DefaultMapType.Kind() != reflect.Map { + return nil, fmt.Errorf("cbor: invalid DefaultMapType %s", opts.DefaultMapType) + } + + if !opts.UTF8.valid() { + return nil, errors.New("cbor: invalid UTF8 " + strconv.Itoa(int(opts.UTF8))) + } + + if !opts.FieldNameMatching.valid() { + return nil, errors.New("cbor: invalid FieldNameMatching " + strconv.Itoa(int(opts.FieldNameMatching))) + } + + if !opts.BigIntDec.valid() { + return nil, errors.New("cbor: invalid BigIntDec " + strconv.Itoa(int(opts.BigIntDec))) + } + + if opts.DefaultByteStringType != nil && + opts.DefaultByteStringType.Kind() != reflect.String && + (opts.DefaultByteStringType.Kind() != reflect.Slice || opts.DefaultByteStringType.Elem().Kind() != reflect.Uint8) { + return nil, fmt.Errorf("cbor: invalid DefaultByteStringType: %s is not of kind string or []uint8", opts.DefaultByteStringType) + } + + if !opts.ByteStringToString.valid() { + return nil, errors.New("cbor: invalid ByteStringToString " + strconv.Itoa(int(opts.ByteStringToString))) + } + + if !opts.FieldNameByteString.valid() { + return nil, errors.New("cbor: invalid FieldNameByteString " + strconv.Itoa(int(opts.FieldNameByteString))) + } + + if !opts.UnrecognizedTagToAny.valid() { + return nil, errors.New("cbor: invalid UnrecognizedTagToAnyMode " + strconv.Itoa(int(opts.UnrecognizedTagToAny))) + } + simpleValues := opts.SimpleValues + if simpleValues == nil { + simpleValues = defaultSimpleValues + } + + if !opts.TimeTagToAny.valid() { + return nil, errors.New("cbor: invalid TimeTagToAny " + strconv.Itoa(int(opts.TimeTagToAny))) + } + + if !opts.NaN.valid() { + return nil, errors.New("cbor: invalid NaNDec " + strconv.Itoa(int(opts.NaN))) + } + + if !opts.Inf.valid() { + return nil, errors.New("cbor: invalid InfDec " + strconv.Itoa(int(opts.Inf))) + } + + if !opts.ByteStringToTime.valid() { + return nil, errors.New("cbor: invalid ByteStringToTime " + strconv.Itoa(int(opts.ByteStringToTime))) + } + + if !opts.ByteStringExpectedFormat.valid() { + return nil, errors.New("cbor: invalid ByteStringExpectedFormat " + strconv.Itoa(int(opts.ByteStringExpectedFormat))) + } + + if !opts.BignumTag.valid() { + return nil, errors.New("cbor: invalid BignumTag " + strconv.Itoa(int(opts.BignumTag))) + } + + if !opts.BinaryUnmarshaler.valid() { + return nil, errors.New("cbor: invalid BinaryUnmarshaler " + strconv.Itoa(int(opts.BinaryUnmarshaler))) + } + + dm := decMode{ + dupMapKey: opts.DupMapKey, + timeTag: opts.TimeTag, + maxNestedLevels: opts.MaxNestedLevels, + maxArrayElements: opts.MaxArrayElements, + maxMapPairs: opts.MaxMapPairs, + indefLength: opts.IndefLength, + tagsMd: opts.TagsMd, + intDec: opts.IntDec, + mapKeyByteString: opts.MapKeyByteString, + extraReturnErrors: opts.ExtraReturnErrors, + defaultMapType: opts.DefaultMapType, + utf8: opts.UTF8, + fieldNameMatching: opts.FieldNameMatching, + bigIntDec: opts.BigIntDec, + defaultByteStringType: opts.DefaultByteStringType, + byteStringToString: opts.ByteStringToString, + fieldNameByteString: opts.FieldNameByteString, + unrecognizedTagToAny: opts.UnrecognizedTagToAny, + timeTagToAny: opts.TimeTagToAny, + simpleValues: simpleValues, + nanDec: opts.NaN, + infDec: opts.Inf, + byteStringToTime: opts.ByteStringToTime, + byteStringExpectedFormat: opts.ByteStringExpectedFormat, + bignumTag: opts.BignumTag, + binaryUnmarshaler: opts.BinaryUnmarshaler, + } + + return &dm, nil +} + +// DecMode is the main interface for CBOR decoding. +type DecMode interface { + // Unmarshal parses the CBOR-encoded data into the value pointed to by v + // using the decoding mode. If v is nil, not a pointer, or a nil pointer, + // Unmarshal returns an error. + // + // See the documentation for Unmarshal for details. + Unmarshal(data []byte, v interface{}) error + + // UnmarshalFirst parses the first CBOR data item into the value pointed to by v + // using the decoding mode. Any remaining bytes are returned in rest. + // + // If v is nil, not a pointer, or a nil pointer, UnmarshalFirst returns an error. + // + // See the documentation for Unmarshal for details. + UnmarshalFirst(data []byte, v interface{}) (rest []byte, err error) + + // Valid checks whether data is a well-formed encoded CBOR data item and + // that it complies with configurable restrictions such as MaxNestedLevels, + // MaxArrayElements, MaxMapPairs, etc. + // + // If there are any remaining bytes after the CBOR data item, + // an ExtraneousDataError is returned. + // + // WARNING: Valid doesn't check if encoded CBOR data item is valid (i.e. validity) + // and RFC 8949 distinctly defines what is "Valid" and what is "Well-formed". + // + // Deprecated: Valid is kept for compatibility and should not be used. + // Use Wellformed instead because it has a more appropriate name. + Valid(data []byte) error + + // Wellformed checks whether data is a well-formed encoded CBOR data item and + // that it complies with configurable restrictions such as MaxNestedLevels, + // MaxArrayElements, MaxMapPairs, etc. + // + // If there are any remaining bytes after the CBOR data item, + // an ExtraneousDataError is returned. + Wellformed(data []byte) error + + // NewDecoder returns a new decoder that reads from r using dm DecMode. + NewDecoder(r io.Reader) *Decoder + + // DecOptions returns user specified options used to create this DecMode. + DecOptions() DecOptions +} + +type decMode struct { + tags tagProvider + dupMapKey DupMapKeyMode + timeTag DecTagMode + maxNestedLevels int + maxArrayElements int + maxMapPairs int + indefLength IndefLengthMode + tagsMd TagsMode + intDec IntDecMode + mapKeyByteString MapKeyByteStringMode + extraReturnErrors ExtraDecErrorCond + defaultMapType reflect.Type + utf8 UTF8Mode + fieldNameMatching FieldNameMatchingMode + bigIntDec BigIntDecMode + defaultByteStringType reflect.Type + byteStringToString ByteStringToStringMode + fieldNameByteString FieldNameByteStringMode + unrecognizedTagToAny UnrecognizedTagToAnyMode + timeTagToAny TimeTagToAnyMode + simpleValues *SimpleValueRegistry + nanDec NaNMode + infDec InfMode + byteStringToTime ByteStringToTimeMode + byteStringExpectedFormat ByteStringExpectedFormatMode + bignumTag BignumTagMode + binaryUnmarshaler BinaryUnmarshalerMode +} + +var defaultDecMode, _ = DecOptions{}.decMode() + +// DecOptions returns user specified options used to create this DecMode. +func (dm *decMode) DecOptions() DecOptions { + simpleValues := dm.simpleValues + if simpleValues == defaultSimpleValues { + // Users can't explicitly set this to defaultSimpleValues. It must have been nil in + // the original DecOptions. + simpleValues = nil + } + + return DecOptions{ + DupMapKey: dm.dupMapKey, + TimeTag: dm.timeTag, + MaxNestedLevels: dm.maxNestedLevels, + MaxArrayElements: dm.maxArrayElements, + MaxMapPairs: dm.maxMapPairs, + IndefLength: dm.indefLength, + TagsMd: dm.tagsMd, + IntDec: dm.intDec, + MapKeyByteString: dm.mapKeyByteString, + ExtraReturnErrors: dm.extraReturnErrors, + DefaultMapType: dm.defaultMapType, + UTF8: dm.utf8, + FieldNameMatching: dm.fieldNameMatching, + BigIntDec: dm.bigIntDec, + DefaultByteStringType: dm.defaultByteStringType, + ByteStringToString: dm.byteStringToString, + FieldNameByteString: dm.fieldNameByteString, + UnrecognizedTagToAny: dm.unrecognizedTagToAny, + TimeTagToAny: dm.timeTagToAny, + SimpleValues: simpleValues, + NaN: dm.nanDec, + Inf: dm.infDec, + ByteStringToTime: dm.byteStringToTime, + ByteStringExpectedFormat: dm.byteStringExpectedFormat, + BignumTag: dm.bignumTag, + BinaryUnmarshaler: dm.binaryUnmarshaler, + } +} + +// Unmarshal parses the CBOR-encoded data into the value pointed to by v +// using dm decoding mode. If v is nil, not a pointer, or a nil pointer, +// Unmarshal returns an error. +// +// See the documentation for Unmarshal for details. +func (dm *decMode) Unmarshal(data []byte, v interface{}) error { + d := decoder{data: data, dm: dm} + + // Check well-formedness. + off := d.off // Save offset before data validation + err := d.wellformed(false, false) // don't allow any extra data after valid data item. + d.off = off // Restore offset + if err != nil { + return err + } + + return d.value(v) +} + +// UnmarshalFirst parses the first CBOR data item into the value pointed to by v +// using dm decoding mode. Any remaining bytes are returned in rest. +// +// If v is nil, not a pointer, or a nil pointer, UnmarshalFirst returns an error. +// +// See the documentation for Unmarshal for details. +func (dm *decMode) UnmarshalFirst(data []byte, v interface{}) (rest []byte, err error) { + d := decoder{data: data, dm: dm} + + // check well-formedness. + off := d.off // Save offset before data validation + err = d.wellformed(true, false) // allow extra data after well-formed data item + d.off = off // Restore offset + + // If it is well-formed, parse the value. This is structured like this to allow + // better test coverage + if err == nil { + err = d.value(v) + } + + // If either wellformed or value returned an error, do not return rest bytes + if err != nil { + return nil, err + } + + // Return the rest of the data slice (which might be len 0) + return d.data[d.off:], nil +} + +// Valid checks whether data is a well-formed encoded CBOR data item and +// that it complies with configurable restrictions such as MaxNestedLevels, +// MaxArrayElements, MaxMapPairs, etc. +// +// If there are any remaining bytes after the CBOR data item, +// an ExtraneousDataError is returned. +// +// WARNING: Valid doesn't check if encoded CBOR data item is valid (i.e. validity) +// and RFC 8949 distinctly defines what is "Valid" and what is "Well-formed". +// +// Deprecated: Valid is kept for compatibility and should not be used. +// Use Wellformed instead because it has a more appropriate name. +func (dm *decMode) Valid(data []byte) error { + return dm.Wellformed(data) +} + +// Wellformed checks whether data is a well-formed encoded CBOR data item and +// that it complies with configurable restrictions such as MaxNestedLevels, +// MaxArrayElements, MaxMapPairs, etc. +// +// If there are any remaining bytes after the CBOR data item, +// an ExtraneousDataError is returned. +func (dm *decMode) Wellformed(data []byte) error { + d := decoder{data: data, dm: dm} + return d.wellformed(false, false) +} + +// NewDecoder returns a new decoder that reads from r using dm DecMode. +func (dm *decMode) NewDecoder(r io.Reader) *Decoder { + return &Decoder{r: r, d: decoder{dm: dm}} +} + +type decoder struct { + data []byte + off int // next read offset in data + dm *decMode + + // expectedLaterEncodingTags stores a stack of encountered "Expected Later Encoding" tags, + // if any. + // + // The "Expected Later Encoding" tags (21 to 23) are valid for any data item. When decoding + // byte strings, the effective encoding comes from the tag nearest to the byte string being + // decoded. For example, the effective encoding of the byte string 21(22(h'41')) would be + // controlled by tag 22,and in the data item 23(h'42', 22([21(h'43')])]) the effective + // encoding of the byte strings h'42' and h'43' would be controlled by tag 23 and 21, + // respectively. + expectedLaterEncodingTags []uint64 +} + +// value decodes CBOR data item into the value pointed to by v. +// If CBOR data item fails to be decoded into v, +// error is returned and offset is moved to the next CBOR data item. +// Precondition: d.data contains at least one well-formed CBOR data item. +func (d *decoder) value(v interface{}) error { + // v can't be nil, non-pointer, or nil pointer value. + if v == nil { + return &InvalidUnmarshalError{"cbor: Unmarshal(nil)"} + } + rv := reflect.ValueOf(v) + if rv.Kind() != reflect.Ptr { + return &InvalidUnmarshalError{"cbor: Unmarshal(non-pointer " + rv.Type().String() + ")"} + } else if rv.IsNil() { + return &InvalidUnmarshalError{"cbor: Unmarshal(nil " + rv.Type().String() + ")"} + } + rv = rv.Elem() + return d.parseToValue(rv, getTypeInfo(rv.Type())) +} + +// parseToValue decodes CBOR data to value. It assumes data is well-formed, +// and does not perform bounds checking. +func (d *decoder) parseToValue(v reflect.Value, tInfo *typeInfo) error { //nolint:gocyclo + + // Decode CBOR nil or CBOR undefined to pointer value by setting pointer value to nil. + if d.nextCBORNil() && v.Kind() == reflect.Ptr { + d.skip() + v.Set(reflect.Zero(v.Type())) + return nil + } + + if tInfo.spclType == specialTypeIface { + if !v.IsNil() { + // Use value type + v = v.Elem() + tInfo = getTypeInfo(v.Type()) + } else { //nolint:gocritic + // Create and use registered type if CBOR data is registered tag + if d.dm.tags != nil && d.nextCBORType() == cborTypeTag { + + off := d.off + var tagNums []uint64 + for d.nextCBORType() == cborTypeTag { + _, _, tagNum := d.getHead() + tagNums = append(tagNums, tagNum) + } + d.off = off + + registeredType := d.dm.tags.getTypeFromTagNum(tagNums) + if registeredType != nil { + if registeredType.Implements(tInfo.nonPtrType) || + reflect.PtrTo(registeredType).Implements(tInfo.nonPtrType) { + v.Set(reflect.New(registeredType)) + v = v.Elem() + tInfo = getTypeInfo(registeredType) + } + } + } + } + } + + // Create new value for the pointer v to point to. + // At this point, CBOR value is not nil/undefined if v is a pointer. + for v.Kind() == reflect.Ptr { + if v.IsNil() { + if !v.CanSet() { + d.skip() + return errors.New("cbor: cannot set new value for " + v.Type().String()) + } + v.Set(reflect.New(v.Type().Elem())) + } + v = v.Elem() + } + + // Strip self-described CBOR tag number. + for d.nextCBORType() == cborTypeTag { + off := d.off + _, _, tagNum := d.getHead() + if tagNum != tagNumSelfDescribedCBOR { + d.off = off + break + } + } + + // Check validity of supported built-in tags. + off := d.off + for d.nextCBORType() == cborTypeTag { + _, _, tagNum := d.getHead() + if err := validBuiltinTag(tagNum, d.data[d.off]); err != nil { + d.skip() + return err + } + } + d.off = off + + if tInfo.spclType != specialTypeNone { + switch tInfo.spclType { + case specialTypeEmptyIface: + iv, err := d.parse(false) // Skipped self-described CBOR tag number already. + if iv != nil { + v.Set(reflect.ValueOf(iv)) + } + return err + + case specialTypeTag: + return d.parseToTag(v) + + case specialTypeTime: + if d.nextCBORNil() { + // Decoding CBOR null and undefined to time.Time is no-op. + d.skip() + return nil + } + tm, ok, err := d.parseToTime() + if err != nil { + return err + } + if ok { + v.Set(reflect.ValueOf(tm)) + } + return nil + + case specialTypeUnmarshalerIface: + return d.parseToUnmarshaler(v) + } + } + + // Check registered tag number + if tagItem := d.getRegisteredTagItem(tInfo.nonPtrType); tagItem != nil { + t := d.nextCBORType() + if t != cborTypeTag { + if tagItem.opts.DecTag == DecTagRequired { + d.skip() // Required tag number is absent, skip entire tag + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: tInfo.typ.String(), + errorMsg: "expect CBOR tag value"} + } + } else if err := d.validRegisteredTagNums(tagItem); err != nil { + d.skip() // Skip tag content + return err + } + } + + t := d.nextCBORType() + + switch t { + case cborTypePositiveInt: + _, _, val := d.getHead() + return fillPositiveInt(t, val, v) + + case cborTypeNegativeInt: + _, _, val := d.getHead() + if val > math.MaxInt64 { + // CBOR negative integer overflows int64, use big.Int to store value. + bi := new(big.Int) + bi.SetUint64(val) + bi.Add(bi, big.NewInt(1)) + bi.Neg(bi) + + if tInfo.nonPtrType == typeBigInt { + v.Set(reflect.ValueOf(*bi)) + return nil + } + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: tInfo.nonPtrType.String(), + errorMsg: bi.String() + " overflows Go's int64", + } + } + nValue := int64(-1) ^ int64(val) + return fillNegativeInt(t, nValue, v) + + case cborTypeByteString: + b, copied := d.parseByteString() + b, converted, err := d.applyByteStringTextConversion(b, v.Type()) + if err != nil { + return err + } + copied = copied || converted + return fillByteString(t, b, !copied, v, d.dm.byteStringToString, d.dm.binaryUnmarshaler) + + case cborTypeTextString: + b, err := d.parseTextString() + if err != nil { + return err + } + return fillTextString(t, b, v) + + case cborTypePrimitives: + _, ai, val := d.getHead() + switch ai { + case additionalInformationAsFloat16: + f := float64(float16.Frombits(uint16(val)).Float32()) + return fillFloat(t, f, v) + + case additionalInformationAsFloat32: + f := float64(math.Float32frombits(uint32(val))) + return fillFloat(t, f, v) + + case additionalInformationAsFloat64: + f := math.Float64frombits(val) + return fillFloat(t, f, v) + + default: // ai <= 24 + if d.dm.simpleValues.rejected[SimpleValue(val)] { + return &UnacceptableDataItemError{ + CBORType: t.String(), + Message: "simple value " + strconv.FormatInt(int64(val), 10) + " is not recognized", + } + } + + switch ai { + case additionalInformationAsFalse, + additionalInformationAsTrue: + return fillBool(t, ai == additionalInformationAsTrue, v) + + case additionalInformationAsNull, + additionalInformationAsUndefined: + return fillNil(t, v) + + default: + return fillPositiveInt(t, val, v) + } + } + + case cborTypeTag: + _, _, tagNum := d.getHead() + switch tagNum { + case tagNumUnsignedBignum: + // Bignum (tag 2) can be decoded to uint, int, float, slice, array, or big.Int. + b, copied := d.parseByteString() + bi := new(big.Int).SetBytes(b) + + if tInfo.nonPtrType == typeBigInt { + v.Set(reflect.ValueOf(*bi)) + return nil + } + if tInfo.nonPtrKind == reflect.Slice || tInfo.nonPtrKind == reflect.Array { + return fillByteString(t, b, !copied, v, ByteStringToStringForbidden, d.dm.binaryUnmarshaler) + } + if bi.IsUint64() { + return fillPositiveInt(t, bi.Uint64(), v) + } + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: tInfo.nonPtrType.String(), + errorMsg: bi.String() + " overflows " + v.Type().String(), + } + + case tagNumNegativeBignum: + // Bignum (tag 3) can be decoded to int, float, slice, array, or big.Int. + b, copied := d.parseByteString() + bi := new(big.Int).SetBytes(b) + bi.Add(bi, big.NewInt(1)) + bi.Neg(bi) + + if tInfo.nonPtrType == typeBigInt { + v.Set(reflect.ValueOf(*bi)) + return nil + } + if tInfo.nonPtrKind == reflect.Slice || tInfo.nonPtrKind == reflect.Array { + return fillByteString(t, b, !copied, v, ByteStringToStringForbidden, d.dm.binaryUnmarshaler) + } + if bi.IsInt64() { + return fillNegativeInt(t, bi.Int64(), v) + } + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: tInfo.nonPtrType.String(), + errorMsg: bi.String() + " overflows " + v.Type().String(), + } + + case tagNumExpectedLaterEncodingBase64URL, tagNumExpectedLaterEncodingBase64, tagNumExpectedLaterEncodingBase16: + // If conversion for interoperability with text encodings is not configured, + // treat tags 21-23 as unregistered tags. + if d.dm.byteStringToString == ByteStringToStringAllowedWithExpectedLaterEncoding || d.dm.byteStringExpectedFormat != ByteStringExpectedFormatNone { + d.expectedLaterEncodingTags = append(d.expectedLaterEncodingTags, tagNum) + defer func() { + d.expectedLaterEncodingTags = d.expectedLaterEncodingTags[:len(d.expectedLaterEncodingTags)-1] + }() + } + } + + return d.parseToValue(v, tInfo) + + case cborTypeArray: + if tInfo.nonPtrKind == reflect.Slice { + return d.parseArrayToSlice(v, tInfo) + } else if tInfo.nonPtrKind == reflect.Array { + return d.parseArrayToArray(v, tInfo) + } else if tInfo.nonPtrKind == reflect.Struct { + return d.parseArrayToStruct(v, tInfo) + } + d.skip() + return &UnmarshalTypeError{CBORType: t.String(), GoType: tInfo.nonPtrType.String()} + + case cborTypeMap: + if tInfo.nonPtrKind == reflect.Struct { + return d.parseMapToStruct(v, tInfo) + } else if tInfo.nonPtrKind == reflect.Map { + return d.parseMapToMap(v, tInfo) + } + d.skip() + return &UnmarshalTypeError{CBORType: t.String(), GoType: tInfo.nonPtrType.String()} + } + + return nil +} + +func (d *decoder) parseToTag(v reflect.Value) error { + if d.nextCBORNil() { + // Decoding CBOR null and undefined to cbor.Tag is no-op. + d.skip() + return nil + } + + t := d.nextCBORType() + if t != cborTypeTag { + d.skip() + return &UnmarshalTypeError{CBORType: t.String(), GoType: typeTag.String()} + } + + // Unmarshal tag number + _, _, num := d.getHead() + + // Unmarshal tag content + content, err := d.parse(false) + if err != nil { + return err + } + + v.Set(reflect.ValueOf(Tag{num, content})) + return nil +} + +// parseToTime decodes the current data item as a time.Time. The bool return value is false if and +// only if the destination value should remain unmodified. +func (d *decoder) parseToTime() (time.Time, bool, error) { + // Verify that tag number or absence of tag number is acceptable to specified timeTag. + if t := d.nextCBORType(); t == cborTypeTag { + if d.dm.timeTag == DecTagIgnored { + // Skip all enclosing tags + for t == cborTypeTag { + d.getHead() + t = d.nextCBORType() + } + if d.nextCBORNil() { + d.skip() + return time.Time{}, false, nil + } + } else { + // Read tag number + _, _, tagNum := d.getHead() + if tagNum != 0 && tagNum != 1 { + d.skip() // skip tag content + return time.Time{}, false, errors.New("cbor: wrong tag number for time.Time, got " + strconv.Itoa(int(tagNum)) + ", expect 0 or 1") + } + } + } else { + if d.dm.timeTag == DecTagRequired { + d.skip() + return time.Time{}, false, &UnmarshalTypeError{CBORType: t.String(), GoType: typeTime.String(), errorMsg: "expect CBOR tag value"} + } + } + + switch t := d.nextCBORType(); t { + case cborTypeByteString: + if d.dm.byteStringToTime == ByteStringToTimeAllowed { + b, _ := d.parseByteString() + t, err := time.Parse(time.RFC3339, string(b)) + if err != nil { + return time.Time{}, false, fmt.Errorf("cbor: cannot set %q for time.Time: %w", string(b), err) + } + return t, true, nil + } + return time.Time{}, false, &UnmarshalTypeError{CBORType: t.String(), GoType: typeTime.String()} + + case cborTypeTextString: + s, err := d.parseTextString() + if err != nil { + return time.Time{}, false, err + } + t, err := time.Parse(time.RFC3339, string(s)) + if err != nil { + return time.Time{}, false, errors.New("cbor: cannot set " + string(s) + " for time.Time: " + err.Error()) + } + return t, true, nil + + case cborTypePositiveInt: + _, _, val := d.getHead() + if val > math.MaxInt64 { + return time.Time{}, false, &UnmarshalTypeError{ + CBORType: t.String(), + GoType: typeTime.String(), + errorMsg: fmt.Sprintf("%d overflows Go's int64", val), + } + } + return time.Unix(int64(val), 0), true, nil + + case cborTypeNegativeInt: + _, _, val := d.getHead() + if val > math.MaxInt64 { + if val == math.MaxUint64 { + // Maximum absolute value representable by negative integer is 2^64, + // not 2^64-1, so it overflows uint64. + return time.Time{}, false, &UnmarshalTypeError{ + CBORType: t.String(), + GoType: typeTime.String(), + errorMsg: "-18446744073709551616 overflows Go's int64", + } + } + return time.Time{}, false, &UnmarshalTypeError{ + CBORType: t.String(), + GoType: typeTime.String(), + errorMsg: fmt.Sprintf("-%d overflows Go's int64", val+1), + } + } + return time.Unix(int64(-1)^int64(val), 0), true, nil + + case cborTypePrimitives: + _, ai, val := d.getHead() + var f float64 + switch ai { + case additionalInformationAsFloat16: + f = float64(float16.Frombits(uint16(val)).Float32()) + + case additionalInformationAsFloat32: + f = float64(math.Float32frombits(uint32(val))) + + case additionalInformationAsFloat64: + f = math.Float64frombits(val) + + default: + return time.Time{}, false, &UnmarshalTypeError{CBORType: t.String(), GoType: typeTime.String()} + } + + if math.IsNaN(f) || math.IsInf(f, 0) { + // https://www.rfc-editor.org/rfc/rfc8949.html#section-3.4.2-6 + return time.Time{}, true, nil + } + seconds, fractional := math.Modf(f) + return time.Unix(int64(seconds), int64(fractional*1e9)), true, nil + + default: + return time.Time{}, false, &UnmarshalTypeError{CBORType: t.String(), GoType: typeTime.String()} + } +} + +// parseToUnmarshaler parses CBOR data to value implementing Unmarshaler interface. +// It assumes data is well-formed, and does not perform bounds checking. +func (d *decoder) parseToUnmarshaler(v reflect.Value) error { + if d.nextCBORNil() && v.Kind() == reflect.Ptr && v.IsNil() { + d.skip() + return nil + } + + if v.Kind() != reflect.Ptr && v.CanAddr() { + v = v.Addr() + } + if u, ok := v.Interface().(Unmarshaler); ok { + start := d.off + d.skip() + return u.UnmarshalCBOR(d.data[start:d.off]) + } + d.skip() + return errors.New("cbor: failed to assert " + v.Type().String() + " as cbor.Unmarshaler") +} + +// parse parses CBOR data and returns value in default Go type. +// It assumes data is well-formed, and does not perform bounds checking. +func (d *decoder) parse(skipSelfDescribedTag bool) (interface{}, error) { //nolint:gocyclo + // Strip self-described CBOR tag number. + if skipSelfDescribedTag { + for d.nextCBORType() == cborTypeTag { + off := d.off + _, _, tagNum := d.getHead() + if tagNum != tagNumSelfDescribedCBOR { + d.off = off + break + } + } + } + + // Check validity of supported built-in tags. + off := d.off + for d.nextCBORType() == cborTypeTag { + _, _, tagNum := d.getHead() + if err := validBuiltinTag(tagNum, d.data[d.off]); err != nil { + d.skip() + return nil, err + } + } + d.off = off + + t := d.nextCBORType() + switch t { + case cborTypePositiveInt: + _, _, val := d.getHead() + + switch d.dm.intDec { + case IntDecConvertNone: + return val, nil + + case IntDecConvertSigned, IntDecConvertSignedOrFail: + if val > math.MaxInt64 { + return nil, &UnmarshalTypeError{ + CBORType: t.String(), + GoType: reflect.TypeOf(int64(0)).String(), + errorMsg: strconv.FormatUint(val, 10) + " overflows Go's int64", + } + } + + return int64(val), nil + + case IntDecConvertSignedOrBigInt: + if val > math.MaxInt64 { + bi := new(big.Int).SetUint64(val) + if d.dm.bigIntDec == BigIntDecodePointer { + return bi, nil + } + return *bi, nil + } + + return int64(val), nil + + default: + // not reachable + } + + case cborTypeNegativeInt: + _, _, val := d.getHead() + + if val > math.MaxInt64 { + // CBOR negative integer value overflows Go int64, use big.Int instead. + bi := new(big.Int).SetUint64(val) + bi.Add(bi, big.NewInt(1)) + bi.Neg(bi) + + if d.dm.intDec == IntDecConvertSignedOrFail { + return nil, &UnmarshalTypeError{ + CBORType: t.String(), + GoType: reflect.TypeOf(int64(0)).String(), + errorMsg: bi.String() + " overflows Go's int64", + } + } + + if d.dm.bigIntDec == BigIntDecodePointer { + return bi, nil + } + return *bi, nil + } + + nValue := int64(-1) ^ int64(val) + return nValue, nil + + case cborTypeByteString: + b, copied := d.parseByteString() + var effectiveByteStringType = d.dm.defaultByteStringType + if effectiveByteStringType == nil { + effectiveByteStringType = typeByteSlice + } + b, converted, err := d.applyByteStringTextConversion(b, effectiveByteStringType) + if err != nil { + return nil, err + } + copied = copied || converted + + switch effectiveByteStringType { + case typeByteSlice: + if copied { + return b, nil + } + clone := make([]byte, len(b)) + copy(clone, b) + return clone, nil + + case typeString: + return string(b), nil + + default: + if copied || d.dm.defaultByteStringType.Kind() == reflect.String { + // Avoid an unnecessary copy since the conversion to string must + // copy the underlying bytes. + return reflect.ValueOf(b).Convert(d.dm.defaultByteStringType).Interface(), nil + } + clone := make([]byte, len(b)) + copy(clone, b) + return reflect.ValueOf(clone).Convert(d.dm.defaultByteStringType).Interface(), nil + } + + case cborTypeTextString: + b, err := d.parseTextString() + if err != nil { + return nil, err + } + return string(b), nil + + case cborTypeTag: + tagOff := d.off + _, _, tagNum := d.getHead() + contentOff := d.off + + switch tagNum { + case tagNumRFC3339Time, tagNumEpochTime: + d.off = tagOff + tm, _, err := d.parseToTime() + if err != nil { + return nil, err + } + + switch d.dm.timeTagToAny { + case TimeTagToTime: + return tm, nil + + case TimeTagToRFC3339: + if tagNum == 1 { + tm = tm.UTC() + } + // Call time.MarshalText() to format decoded time to RFC3339 format, + // and return error on time value that cannot be represented in + // RFC3339 format. E.g. year cannot exceed 9999, etc. + text, err := tm.Truncate(time.Second).MarshalText() + if err != nil { + return nil, fmt.Errorf("cbor: decoded time cannot be represented in RFC3339 format: %v", err) + } + return string(text), nil + + case TimeTagToRFC3339Nano: + if tagNum == 1 { + tm = tm.UTC() + } + // Call time.MarshalText() to format decoded time to RFC3339 format, + // and return error on time value that cannot be represented in + // RFC3339 format with sub-second precision. + text, err := tm.MarshalText() + if err != nil { + return nil, fmt.Errorf("cbor: decoded time cannot be represented in RFC3339 format with sub-second precision: %v", err) + } + return string(text), nil + + default: + // not reachable + } + + case tagNumUnsignedBignum: + b, _ := d.parseByteString() + bi := new(big.Int).SetBytes(b) + + if d.dm.bigIntDec == BigIntDecodePointer { + return bi, nil + } + return *bi, nil + + case tagNumNegativeBignum: + b, _ := d.parseByteString() + bi := new(big.Int).SetBytes(b) + bi.Add(bi, big.NewInt(1)) + bi.Neg(bi) + + if d.dm.bigIntDec == BigIntDecodePointer { + return bi, nil + } + return *bi, nil + + case tagNumExpectedLaterEncodingBase64URL, tagNumExpectedLaterEncodingBase64, tagNumExpectedLaterEncodingBase16: + // If conversion for interoperability with text encodings is not configured, + // treat tags 21-23 as unregistered tags. + if d.dm.byteStringToString == ByteStringToStringAllowedWithExpectedLaterEncoding || + d.dm.byteStringExpectedFormat != ByteStringExpectedFormatNone { + d.expectedLaterEncodingTags = append(d.expectedLaterEncodingTags, tagNum) + defer func() { + d.expectedLaterEncodingTags = d.expectedLaterEncodingTags[:len(d.expectedLaterEncodingTags)-1] + }() + return d.parse(false) + } + } + + if d.dm.tags != nil { + // Parse to specified type if tag number is registered. + tagNums := []uint64{tagNum} + for d.nextCBORType() == cborTypeTag { + _, _, num := d.getHead() + tagNums = append(tagNums, num) + } + registeredType := d.dm.tags.getTypeFromTagNum(tagNums) + if registeredType != nil { + d.off = tagOff + rv := reflect.New(registeredType) + if err := d.parseToValue(rv.Elem(), getTypeInfo(registeredType)); err != nil { + return nil, err + } + return rv.Elem().Interface(), nil + } + } + + // Parse tag content + d.off = contentOff + content, err := d.parse(false) + if err != nil { + return nil, err + } + if d.dm.unrecognizedTagToAny == UnrecognizedTagContentToAny { + return content, nil + } + return Tag{tagNum, content}, nil + + case cborTypePrimitives: + _, ai, val := d.getHead() + if ai <= 24 && d.dm.simpleValues.rejected[SimpleValue(val)] { + return nil, &UnacceptableDataItemError{ + CBORType: t.String(), + Message: "simple value " + strconv.FormatInt(int64(val), 10) + " is not recognized", + } + } + if ai < 20 || ai == 24 { + return SimpleValue(val), nil + } + + switch ai { + case additionalInformationAsFalse, + additionalInformationAsTrue: + return (ai == additionalInformationAsTrue), nil + + case additionalInformationAsNull, + additionalInformationAsUndefined: + return nil, nil + + case additionalInformationAsFloat16: + f := float64(float16.Frombits(uint16(val)).Float32()) + return f, nil + + case additionalInformationAsFloat32: + f := float64(math.Float32frombits(uint32(val))) + return f, nil + + case additionalInformationAsFloat64: + f := math.Float64frombits(val) + return f, nil + } + + case cborTypeArray: + return d.parseArray() + + case cborTypeMap: + if d.dm.defaultMapType != nil { + m := reflect.New(d.dm.defaultMapType) + err := d.parseToValue(m, getTypeInfo(m.Elem().Type())) + if err != nil { + return nil, err + } + return m.Elem().Interface(), nil + } + return d.parseMap() + } + + return nil, nil +} + +// parseByteString parses a CBOR encoded byte string. The returned byte slice +// may be backed directly by the input. The second return value will be true if +// and only if the slice is backed by a copy of the input. Callers are +// responsible for making a copy if necessary. +func (d *decoder) parseByteString() ([]byte, bool) { + _, _, val, indefiniteLength := d.getHeadWithIndefiniteLengthFlag() + if !indefiniteLength { + b := d.data[d.off : d.off+int(val)] + d.off += int(val) + return b, false + } + // Process indefinite length string chunks. + b := []byte{} + for !d.foundBreak() { + _, _, val = d.getHead() + b = append(b, d.data[d.off:d.off+int(val)]...) + d.off += int(val) + } + return b, true +} + +// applyByteStringTextConversion converts bytes read from a byte string to or from a configured text +// encoding. If no transformation was performed (because it was not required), the original byte +// slice is returned and the bool return value is false. Otherwise, a new slice containing the +// converted bytes is returned along with the bool value true. +func (d *decoder) applyByteStringTextConversion( + src []byte, + dstType reflect.Type, +) ( + dst []byte, + transformed bool, + err error, +) { + switch dstType.Kind() { + case reflect.String: + if d.dm.byteStringToString != ByteStringToStringAllowedWithExpectedLaterEncoding || len(d.expectedLaterEncodingTags) == 0 { + return src, false, nil + } + + switch d.expectedLaterEncodingTags[len(d.expectedLaterEncodingTags)-1] { + case tagNumExpectedLaterEncodingBase64URL: + encoded := make([]byte, base64.RawURLEncoding.EncodedLen(len(src))) + base64.RawURLEncoding.Encode(encoded, src) + return encoded, true, nil + + case tagNumExpectedLaterEncodingBase64: + encoded := make([]byte, base64.StdEncoding.EncodedLen(len(src))) + base64.StdEncoding.Encode(encoded, src) + return encoded, true, nil + + case tagNumExpectedLaterEncodingBase16: + encoded := make([]byte, hex.EncodedLen(len(src))) + hex.Encode(encoded, src) + return encoded, true, nil + + default: + // If this happens, there is a bug: the decoder has pushed an invalid + // "expected later encoding" tag to the stack. + panic(fmt.Sprintf("unrecognized expected later encoding tag: %d", d.expectedLaterEncodingTags)) + } + + case reflect.Slice: + if dstType.Elem().Kind() != reflect.Uint8 || len(d.expectedLaterEncodingTags) > 0 { + // Either the destination is not a slice of bytes, or the encoder that + // produced the input indicated an expected text encoding tag and therefore + // the content of the byte string has NOT been text encoded. + return src, false, nil + } + + switch d.dm.byteStringExpectedFormat { + case ByteStringExpectedBase64URL: + decoded := make([]byte, base64.RawURLEncoding.DecodedLen(len(src))) + n, err := base64.RawURLEncoding.Decode(decoded, src) + if err != nil { + return nil, false, newByteStringExpectedFormatError(ByteStringExpectedBase64URL, err) + } + return decoded[:n], true, nil + + case ByteStringExpectedBase64: + decoded := make([]byte, base64.StdEncoding.DecodedLen(len(src))) + n, err := base64.StdEncoding.Decode(decoded, src) + if err != nil { + return nil, false, newByteStringExpectedFormatError(ByteStringExpectedBase64, err) + } + return decoded[:n], true, nil + + case ByteStringExpectedBase16: + decoded := make([]byte, hex.DecodedLen(len(src))) + n, err := hex.Decode(decoded, src) + if err != nil { + return nil, false, newByteStringExpectedFormatError(ByteStringExpectedBase16, err) + } + return decoded[:n], true, nil + } + } + + return src, false, nil +} + +// parseTextString parses CBOR encoded text string. It returns a byte slice +// to prevent creating an extra copy of string. Caller should wrap returned +// byte slice as string when needed. +func (d *decoder) parseTextString() ([]byte, error) { + _, _, val, indefiniteLength := d.getHeadWithIndefiniteLengthFlag() + if !indefiniteLength { + b := d.data[d.off : d.off+int(val)] + d.off += int(val) + if d.dm.utf8 == UTF8RejectInvalid && !utf8.Valid(b) { + return nil, &SemanticError{"cbor: invalid UTF-8 string"} + } + return b, nil + } + // Process indefinite length string chunks. + b := []byte{} + for !d.foundBreak() { + _, _, val = d.getHead() + x := d.data[d.off : d.off+int(val)] + d.off += int(val) + if d.dm.utf8 == UTF8RejectInvalid && !utf8.Valid(x) { + for !d.foundBreak() { + d.skip() // Skip remaining chunk on error + } + return nil, &SemanticError{"cbor: invalid UTF-8 string"} + } + b = append(b, x...) + } + return b, nil +} + +func (d *decoder) parseArray() ([]interface{}, error) { + _, _, val, indefiniteLength := d.getHeadWithIndefiniteLengthFlag() + hasSize := !indefiniteLength + count := int(val) + if !hasSize { + count = d.numOfItemsUntilBreak() // peek ahead to get array size to preallocate slice for better performance + } + v := make([]interface{}, count) + var e interface{} + var err, lastErr error + for i := 0; (hasSize && i < count) || (!hasSize && !d.foundBreak()); i++ { + if e, lastErr = d.parse(true); lastErr != nil { + if err == nil { + err = lastErr + } + continue + } + v[i] = e + } + return v, err +} + +func (d *decoder) parseArrayToSlice(v reflect.Value, tInfo *typeInfo) error { + _, _, val, indefiniteLength := d.getHeadWithIndefiniteLengthFlag() + hasSize := !indefiniteLength + count := int(val) + if !hasSize { + count = d.numOfItemsUntilBreak() // peek ahead to get array size to preallocate slice for better performance + } + if v.IsNil() || v.Cap() < count || count == 0 { + v.Set(reflect.MakeSlice(tInfo.nonPtrType, count, count)) + } + v.SetLen(count) + var err error + for i := 0; (hasSize && i < count) || (!hasSize && !d.foundBreak()); i++ { + if lastErr := d.parseToValue(v.Index(i), tInfo.elemTypeInfo); lastErr != nil { + if err == nil { + err = lastErr + } + } + } + return err +} + +func (d *decoder) parseArrayToArray(v reflect.Value, tInfo *typeInfo) error { + _, _, val, indefiniteLength := d.getHeadWithIndefiniteLengthFlag() + hasSize := !indefiniteLength + count := int(val) + gi := 0 + vLen := v.Len() + var err error + for ci := 0; (hasSize && ci < count) || (!hasSize && !d.foundBreak()); ci++ { + if gi < vLen { + // Read CBOR array element and set array element + if lastErr := d.parseToValue(v.Index(gi), tInfo.elemTypeInfo); lastErr != nil { + if err == nil { + err = lastErr + } + } + gi++ + } else { + d.skip() // Skip remaining CBOR array element + } + } + // Set remaining Go array elements to zero values. + if gi < vLen { + zeroV := reflect.Zero(tInfo.elemTypeInfo.typ) + for ; gi < vLen; gi++ { + v.Index(gi).Set(zeroV) + } + } + return err +} + +func (d *decoder) parseMap() (interface{}, error) { + _, _, val, indefiniteLength := d.getHeadWithIndefiniteLengthFlag() + hasSize := !indefiniteLength + count := int(val) + m := make(map[interface{}]interface{}) + var k, e interface{} + var err, lastErr error + keyCount := 0 + for i := 0; (hasSize && i < count) || (!hasSize && !d.foundBreak()); i++ { + // Parse CBOR map key. + if k, lastErr = d.parse(true); lastErr != nil { + if err == nil { + err = lastErr + } + d.skip() + continue + } + + // Detect if CBOR map key can be used as Go map key. + rv := reflect.ValueOf(k) + if !isHashableValue(rv) { + var converted bool + if d.dm.mapKeyByteString == MapKeyByteStringAllowed { + k, converted = convertByteSliceToByteString(k) + } + if !converted { + if err == nil { + err = &InvalidMapKeyTypeError{rv.Type().String()} + } + d.skip() + continue + } + } + + // Parse CBOR map value. + if e, lastErr = d.parse(true); lastErr != nil { + if err == nil { + err = lastErr + } + continue + } + + // Add key-value pair to Go map. + m[k] = e + + // Detect duplicate map key. + if d.dm.dupMapKey == DupMapKeyEnforcedAPF { + newKeyCount := len(m) + if newKeyCount == keyCount { + m[k] = nil + err = &DupMapKeyError{k, i} + i++ + // skip the rest of the map + for ; (hasSize && i < count) || (!hasSize && !d.foundBreak()); i++ { + d.skip() // Skip map key + d.skip() // Skip map value + } + return m, err + } + keyCount = newKeyCount + } + } + return m, err +} + +func (d *decoder) parseMapToMap(v reflect.Value, tInfo *typeInfo) error { //nolint:gocyclo + _, _, val, indefiniteLength := d.getHeadWithIndefiniteLengthFlag() + hasSize := !indefiniteLength + count := int(val) + if v.IsNil() { + mapsize := count + if !hasSize { + mapsize = 0 + } + v.Set(reflect.MakeMapWithSize(tInfo.nonPtrType, mapsize)) + } + keyType, eleType := tInfo.keyTypeInfo.typ, tInfo.elemTypeInfo.typ + reuseKey, reuseEle := isImmutableKind(tInfo.keyTypeInfo.kind), isImmutableKind(tInfo.elemTypeInfo.kind) + var keyValue, eleValue, zeroKeyValue, zeroEleValue reflect.Value + keyIsInterfaceType := keyType == typeIntf // If key type is interface{}, need to check if key value is hashable. + var err, lastErr error + keyCount := v.Len() + var existingKeys map[interface{}]bool // Store existing map keys, used for detecting duplicate map key. + if d.dm.dupMapKey == DupMapKeyEnforcedAPF { + existingKeys = make(map[interface{}]bool, keyCount) + if keyCount > 0 { + vKeys := v.MapKeys() + for i := 0; i < len(vKeys); i++ { + existingKeys[vKeys[i].Interface()] = true + } + } + } + for i := 0; (hasSize && i < count) || (!hasSize && !d.foundBreak()); i++ { + // Parse CBOR map key. + if !keyValue.IsValid() { + keyValue = reflect.New(keyType).Elem() + } else if !reuseKey { + if !zeroKeyValue.IsValid() { + zeroKeyValue = reflect.Zero(keyType) + } + keyValue.Set(zeroKeyValue) + } + if lastErr = d.parseToValue(keyValue, tInfo.keyTypeInfo); lastErr != nil { + if err == nil { + err = lastErr + } + d.skip() + continue + } + + // Detect if CBOR map key can be used as Go map key. + if keyIsInterfaceType && keyValue.Elem().IsValid() { + if !isHashableValue(keyValue.Elem()) { + var converted bool + if d.dm.mapKeyByteString == MapKeyByteStringAllowed { + var k interface{} + k, converted = convertByteSliceToByteString(keyValue.Elem().Interface()) + if converted { + keyValue.Set(reflect.ValueOf(k)) + } + } + if !converted { + if err == nil { + err = &InvalidMapKeyTypeError{keyValue.Elem().Type().String()} + } + d.skip() + continue + } + } + } + + // Parse CBOR map value. + if !eleValue.IsValid() { + eleValue = reflect.New(eleType).Elem() + } else if !reuseEle { + if !zeroEleValue.IsValid() { + zeroEleValue = reflect.Zero(eleType) + } + eleValue.Set(zeroEleValue) + } + if lastErr := d.parseToValue(eleValue, tInfo.elemTypeInfo); lastErr != nil { + if err == nil { + err = lastErr + } + continue + } + + // Add key-value pair to Go map. + v.SetMapIndex(keyValue, eleValue) + + // Detect duplicate map key. + if d.dm.dupMapKey == DupMapKeyEnforcedAPF { + newKeyCount := v.Len() + if newKeyCount == keyCount { + kvi := keyValue.Interface() + if !existingKeys[kvi] { + v.SetMapIndex(keyValue, reflect.New(eleType).Elem()) + err = &DupMapKeyError{kvi, i} + i++ + // skip the rest of the map + for ; (hasSize && i < count) || (!hasSize && !d.foundBreak()); i++ { + d.skip() // skip map key + d.skip() // skip map value + } + return err + } + delete(existingKeys, kvi) + } + keyCount = newKeyCount + } + } + return err +} + +func (d *decoder) parseArrayToStruct(v reflect.Value, tInfo *typeInfo) error { + structType := getDecodingStructType(tInfo.nonPtrType) + if structType.err != nil { + return structType.err + } + + if !structType.toArray { + t := d.nextCBORType() + d.skip() + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: tInfo.nonPtrType.String(), + errorMsg: "cannot decode CBOR array to struct without toarray option", + } + } + + start := d.off + _, _, val, indefiniteLength := d.getHeadWithIndefiniteLengthFlag() + hasSize := !indefiniteLength + count := int(val) + if !hasSize { + count = d.numOfItemsUntilBreak() // peek ahead to get array size + } + if count != len(structType.fields) { + d.off = start + d.skip() + return &UnmarshalTypeError{ + CBORType: cborTypeArray.String(), + GoType: tInfo.typ.String(), + errorMsg: "cannot decode CBOR array to struct with different number of elements", + } + } + var err, lastErr error + for i := 0; (hasSize && i < count) || (!hasSize && !d.foundBreak()); i++ { + f := structType.fields[i] + + // Get field value by index + var fv reflect.Value + if len(f.idx) == 1 { + fv = v.Field(f.idx[0]) + } else { + fv, lastErr = getFieldValue(v, f.idx, func(v reflect.Value) (reflect.Value, error) { + // Return a new value for embedded field null pointer to point to, or return error. + if !v.CanSet() { + return reflect.Value{}, errors.New("cbor: cannot set embedded pointer to unexported struct: " + v.Type().String()) + } + v.Set(reflect.New(v.Type().Elem())) + return v, nil + }) + if lastErr != nil && err == nil { + err = lastErr + } + if !fv.IsValid() { + d.skip() + continue + } + } + + if lastErr = d.parseToValue(fv, f.typInfo); lastErr != nil { + if err == nil { + if typeError, ok := lastErr.(*UnmarshalTypeError); ok { + typeError.StructFieldName = tInfo.typ.String() + "." + f.name + err = typeError + } else { + err = lastErr + } + } + } + } + return err +} + +// parseMapToStruct needs to be fast so gocyclo can be ignored for now. +func (d *decoder) parseMapToStruct(v reflect.Value, tInfo *typeInfo) error { //nolint:gocyclo + structType := getDecodingStructType(tInfo.nonPtrType) + if structType.err != nil { + return structType.err + } + + if structType.toArray { + t := d.nextCBORType() + d.skip() + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: tInfo.nonPtrType.String(), + errorMsg: "cannot decode CBOR map to struct with toarray option", + } + } + + var err, lastErr error + + // Get CBOR map size + _, _, val, indefiniteLength := d.getHeadWithIndefiniteLengthFlag() + hasSize := !indefiniteLength + count := int(val) + + // Keeps track of matched struct fields + var foundFldIdx []bool + { + const maxStackFields = 128 + if nfields := len(structType.fields); nfields <= maxStackFields { + // For structs with typical field counts, expect that this can be + // stack-allocated. + var a [maxStackFields]bool + foundFldIdx = a[:nfields] + } else { + foundFldIdx = make([]bool, len(structType.fields)) + } + } + + // Keeps track of CBOR map keys to detect duplicate map key + keyCount := 0 + var mapKeys map[interface{}]struct{} + + errOnUnknownField := (d.dm.extraReturnErrors & ExtraDecErrorUnknownField) > 0 + +MapEntryLoop: + for j := 0; (hasSize && j < count) || (!hasSize && !d.foundBreak()); j++ { + var f *field + + // If duplicate field detection is enabled and the key at index j did not match any + // field, k will hold the map key. + var k interface{} + + t := d.nextCBORType() + if t == cborTypeTextString || (t == cborTypeByteString && d.dm.fieldNameByteString == FieldNameByteStringAllowed) { + var keyBytes []byte + if t == cborTypeTextString { + keyBytes, lastErr = d.parseTextString() + if lastErr != nil { + if err == nil { + err = lastErr + } + d.skip() // skip value + continue + } + } else { // cborTypeByteString + keyBytes, _ = d.parseByteString() + } + + // Check for exact match on field name. + if i, ok := structType.fieldIndicesByName[string(keyBytes)]; ok { + fld := structType.fields[i] + + if !foundFldIdx[i] { + f = fld + foundFldIdx[i] = true + } else if d.dm.dupMapKey == DupMapKeyEnforcedAPF { + err = &DupMapKeyError{fld.name, j} + d.skip() // skip value + j++ + // skip the rest of the map + for ; (hasSize && j < count) || (!hasSize && !d.foundBreak()); j++ { + d.skip() + d.skip() + } + return err + } else { + // discard repeated match + d.skip() + continue MapEntryLoop + } + } + + // Find field with case-insensitive match + if f == nil && d.dm.fieldNameMatching == FieldNameMatchingPreferCaseSensitive { + keyLen := len(keyBytes) + keyString := string(keyBytes) + for i := 0; i < len(structType.fields); i++ { + fld := structType.fields[i] + if len(fld.name) == keyLen && strings.EqualFold(fld.name, keyString) { + if !foundFldIdx[i] { + f = fld + foundFldIdx[i] = true + } else if d.dm.dupMapKey == DupMapKeyEnforcedAPF { + err = &DupMapKeyError{keyString, j} + d.skip() // skip value + j++ + // skip the rest of the map + for ; (hasSize && j < count) || (!hasSize && !d.foundBreak()); j++ { + d.skip() + d.skip() + } + return err + } else { + // discard repeated match + d.skip() + continue MapEntryLoop + } + break + } + } + } + + if d.dm.dupMapKey == DupMapKeyEnforcedAPF && f == nil { + k = string(keyBytes) + } + } else if t <= cborTypeNegativeInt { // uint/int + var nameAsInt int64 + + if t == cborTypePositiveInt { + _, _, val := d.getHead() + nameAsInt = int64(val) + } else { + _, _, val := d.getHead() + if val > math.MaxInt64 { + if err == nil { + err = &UnmarshalTypeError{ + CBORType: t.String(), + GoType: reflect.TypeOf(int64(0)).String(), + errorMsg: "-1-" + strconv.FormatUint(val, 10) + " overflows Go's int64", + } + } + d.skip() // skip value + continue + } + nameAsInt = int64(-1) ^ int64(val) + } + + // Find field + for i := 0; i < len(structType.fields); i++ { + fld := structType.fields[i] + if fld.keyAsInt && fld.nameAsInt == nameAsInt { + if !foundFldIdx[i] { + f = fld + foundFldIdx[i] = true + } else if d.dm.dupMapKey == DupMapKeyEnforcedAPF { + err = &DupMapKeyError{nameAsInt, j} + d.skip() // skip value + j++ + // skip the rest of the map + for ; (hasSize && j < count) || (!hasSize && !d.foundBreak()); j++ { + d.skip() + d.skip() + } + return err + } else { + // discard repeated match + d.skip() + continue MapEntryLoop + } + break + } + } + + if d.dm.dupMapKey == DupMapKeyEnforcedAPF && f == nil { + k = nameAsInt + } + } else { + if err == nil { + err = &UnmarshalTypeError{ + CBORType: t.String(), + GoType: reflect.TypeOf("").String(), + errorMsg: "map key is of type " + t.String() + " and cannot be used to match struct field name", + } + } + if d.dm.dupMapKey == DupMapKeyEnforcedAPF { + // parse key + k, lastErr = d.parse(true) + if lastErr != nil { + d.skip() // skip value + continue + } + // Detect if CBOR map key can be used as Go map key. + if !isHashableValue(reflect.ValueOf(k)) { + d.skip() // skip value + continue + } + } else { + d.skip() // skip key + } + } + + if f == nil { + if errOnUnknownField { + err = &UnknownFieldError{j} + d.skip() // Skip value + j++ + // skip the rest of the map + for ; (hasSize && j < count) || (!hasSize && !d.foundBreak()); j++ { + d.skip() + d.skip() + } + return err + } + + // Two map keys that match the same struct field are immediately considered + // duplicates. This check detects duplicates between two map keys that do + // not match a struct field. If unknown field errors are enabled, then this + // check is never reached. + if d.dm.dupMapKey == DupMapKeyEnforcedAPF { + if mapKeys == nil { + mapKeys = make(map[interface{}]struct{}, 1) + } + mapKeys[k] = struct{}{} + newKeyCount := len(mapKeys) + if newKeyCount == keyCount { + err = &DupMapKeyError{k, j} + d.skip() // skip value + j++ + // skip the rest of the map + for ; (hasSize && j < count) || (!hasSize && !d.foundBreak()); j++ { + d.skip() + d.skip() + } + return err + } + keyCount = newKeyCount + } + + d.skip() // Skip value + continue + } + + // Get field value by index + var fv reflect.Value + if len(f.idx) == 1 { + fv = v.Field(f.idx[0]) + } else { + fv, lastErr = getFieldValue(v, f.idx, func(v reflect.Value) (reflect.Value, error) { + // Return a new value for embedded field null pointer to point to, or return error. + if !v.CanSet() { + return reflect.Value{}, errors.New("cbor: cannot set embedded pointer to unexported struct: " + v.Type().String()) + } + v.Set(reflect.New(v.Type().Elem())) + return v, nil + }) + if lastErr != nil && err == nil { + err = lastErr + } + if !fv.IsValid() { + d.skip() + continue + } + } + + if lastErr = d.parseToValue(fv, f.typInfo); lastErr != nil { + if err == nil { + if typeError, ok := lastErr.(*UnmarshalTypeError); ok { + typeError.StructFieldName = tInfo.nonPtrType.String() + "." + f.name + err = typeError + } else { + err = lastErr + } + } + } + } + return err +} + +// validRegisteredTagNums verifies that tag numbers match registered tag numbers of type t. +// validRegisteredTagNums assumes next CBOR data type is tag. It scans all tag numbers, and stops at tag content. +func (d *decoder) validRegisteredTagNums(registeredTag *tagItem) error { + // Scan until next cbor data is tag content. + tagNums := make([]uint64, 0, 1) + for d.nextCBORType() == cborTypeTag { + _, _, val := d.getHead() + tagNums = append(tagNums, val) + } + + if !registeredTag.equalTagNum(tagNums) { + return &WrongTagError{registeredTag.contentType, registeredTag.num, tagNums} + } + return nil +} + +func (d *decoder) getRegisteredTagItem(vt reflect.Type) *tagItem { + if d.dm.tags != nil { + return d.dm.tags.getTagItemFromType(vt) + } + return nil +} + +// skip moves data offset to the next item. skip assumes data is well-formed, +// and does not perform bounds checking. +func (d *decoder) skip() { + t, _, val, indefiniteLength := d.getHeadWithIndefiniteLengthFlag() + + if indefiniteLength { + switch t { + case cborTypeByteString, cborTypeTextString, cborTypeArray, cborTypeMap: + for { + if isBreakFlag(d.data[d.off]) { + d.off++ + return + } + d.skip() + } + } + } + + switch t { + case cborTypeByteString, cborTypeTextString: + d.off += int(val) + + case cborTypeArray: + for i := 0; i < int(val); i++ { + d.skip() + } + + case cborTypeMap: + for i := 0; i < int(val)*2; i++ { + d.skip() + } + + case cborTypeTag: + d.skip() + } +} + +func (d *decoder) getHeadWithIndefiniteLengthFlag() ( + t cborType, + ai byte, + val uint64, + indefiniteLength bool, +) { + t, ai, val = d.getHead() + indefiniteLength = additionalInformation(ai).isIndefiniteLength() + return +} + +// getHead assumes data is well-formed, and does not perform bounds checking. +func (d *decoder) getHead() (t cborType, ai byte, val uint64) { + t, ai = parseInitialByte(d.data[d.off]) + val = uint64(ai) + d.off++ + + if ai <= maxAdditionalInformationWithoutArgument { + return + } + + if ai == additionalInformationWith1ByteArgument { + val = uint64(d.data[d.off]) + d.off++ + return + } + + if ai == additionalInformationWith2ByteArgument { + const argumentSize = 2 + val = uint64(binary.BigEndian.Uint16(d.data[d.off : d.off+argumentSize])) + d.off += argumentSize + return + } + + if ai == additionalInformationWith4ByteArgument { + const argumentSize = 4 + val = uint64(binary.BigEndian.Uint32(d.data[d.off : d.off+argumentSize])) + d.off += argumentSize + return + } + + if ai == additionalInformationWith8ByteArgument { + const argumentSize = 8 + val = binary.BigEndian.Uint64(d.data[d.off : d.off+argumentSize]) + d.off += argumentSize + return + } + return +} + +func (d *decoder) numOfItemsUntilBreak() int { + savedOff := d.off + i := 0 + for !d.foundBreak() { + d.skip() + i++ + } + d.off = savedOff + return i +} + +// foundBreak returns true if next byte is CBOR break code and moves cursor by 1, +// otherwise it returns false. +// foundBreak assumes data is well-formed, and does not perform bounds checking. +func (d *decoder) foundBreak() bool { + if isBreakFlag(d.data[d.off]) { + d.off++ + return true + } + return false +} + +func (d *decoder) reset(data []byte) { + d.data = data + d.off = 0 + d.expectedLaterEncodingTags = d.expectedLaterEncodingTags[:0] +} + +func (d *decoder) nextCBORType() cborType { + return getType(d.data[d.off]) +} + +func (d *decoder) nextCBORNil() bool { + return d.data[d.off] == 0xf6 || d.data[d.off] == 0xf7 +} + +var ( + typeIntf = reflect.TypeOf([]interface{}(nil)).Elem() + typeTime = reflect.TypeOf(time.Time{}) + typeBigInt = reflect.TypeOf(big.Int{}) + typeUnmarshaler = reflect.TypeOf((*Unmarshaler)(nil)).Elem() + typeBinaryUnmarshaler = reflect.TypeOf((*encoding.BinaryUnmarshaler)(nil)).Elem() + typeString = reflect.TypeOf("") + typeByteSlice = reflect.TypeOf([]byte(nil)) +) + +func fillNil(_ cborType, v reflect.Value) error { + switch v.Kind() { + case reflect.Slice, reflect.Map, reflect.Interface, reflect.Ptr: + v.Set(reflect.Zero(v.Type())) + return nil + } + return nil +} + +func fillPositiveInt(t cborType, val uint64, v reflect.Value) error { + switch v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if val > math.MaxInt64 { + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: v.Type().String(), + errorMsg: strconv.FormatUint(val, 10) + " overflows " + v.Type().String(), + } + } + if v.OverflowInt(int64(val)) { + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: v.Type().String(), + errorMsg: strconv.FormatUint(val, 10) + " overflows " + v.Type().String(), + } + } + v.SetInt(int64(val)) + return nil + + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + if v.OverflowUint(val) { + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: v.Type().String(), + errorMsg: strconv.FormatUint(val, 10) + " overflows " + v.Type().String(), + } + } + v.SetUint(val) + return nil + + case reflect.Float32, reflect.Float64: + f := float64(val) + v.SetFloat(f) + return nil + } + + if v.Type() == typeBigInt { + i := new(big.Int).SetUint64(val) + v.Set(reflect.ValueOf(*i)) + return nil + } + return &UnmarshalTypeError{CBORType: t.String(), GoType: v.Type().String()} +} + +func fillNegativeInt(t cborType, val int64, v reflect.Value) error { + switch v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if v.OverflowInt(val) { + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: v.Type().String(), + errorMsg: strconv.FormatInt(val, 10) + " overflows " + v.Type().String(), + } + } + v.SetInt(val) + return nil + + case reflect.Float32, reflect.Float64: + f := float64(val) + v.SetFloat(f) + return nil + } + if v.Type() == typeBigInt { + i := new(big.Int).SetInt64(val) + v.Set(reflect.ValueOf(*i)) + return nil + } + return &UnmarshalTypeError{CBORType: t.String(), GoType: v.Type().String()} +} + +func fillBool(t cborType, val bool, v reflect.Value) error { + if v.Kind() == reflect.Bool { + v.SetBool(val) + return nil + } + return &UnmarshalTypeError{CBORType: t.String(), GoType: v.Type().String()} +} + +func fillFloat(t cborType, val float64, v reflect.Value) error { + switch v.Kind() { + case reflect.Float32, reflect.Float64: + if v.OverflowFloat(val) { + return &UnmarshalTypeError{ + CBORType: t.String(), + GoType: v.Type().String(), + errorMsg: strconv.FormatFloat(val, 'E', -1, 64) + " overflows " + v.Type().String(), + } + } + v.SetFloat(val) + return nil + } + return &UnmarshalTypeError{CBORType: t.String(), GoType: v.Type().String()} +} + +func fillByteString(t cborType, val []byte, shared bool, v reflect.Value, bsts ByteStringToStringMode, bum BinaryUnmarshalerMode) error { + if bum == BinaryUnmarshalerByteString && reflect.PtrTo(v.Type()).Implements(typeBinaryUnmarshaler) { + if v.CanAddr() { + v = v.Addr() + if u, ok := v.Interface().(encoding.BinaryUnmarshaler); ok { + // The contract of BinaryUnmarshaler forbids + // retaining the input bytes, so no copying is + // required even if val is shared. + return u.UnmarshalBinary(val) + } + } + return errors.New("cbor: cannot set new value for " + v.Type().String()) + } + if bsts != ByteStringToStringForbidden && v.Kind() == reflect.String { + v.SetString(string(val)) + return nil + } + if v.Kind() == reflect.Slice && v.Type().Elem().Kind() == reflect.Uint8 { + src := val + if shared { + // SetBytes shares the underlying bytes of the source slice. + src = make([]byte, len(val)) + copy(src, val) + } + v.SetBytes(src) + return nil + } + if v.Kind() == reflect.Array && v.Type().Elem().Kind() == reflect.Uint8 { + vLen := v.Len() + i := 0 + for ; i < vLen && i < len(val); i++ { + v.Index(i).SetUint(uint64(val[i])) + } + // Set remaining Go array elements to zero values. + if i < vLen { + zeroV := reflect.Zero(reflect.TypeOf(byte(0))) + for ; i < vLen; i++ { + v.Index(i).Set(zeroV) + } + } + return nil + } + return &UnmarshalTypeError{CBORType: t.String(), GoType: v.Type().String()} +} + +func fillTextString(t cborType, val []byte, v reflect.Value) error { + if v.Kind() == reflect.String { + v.SetString(string(val)) + return nil + } + return &UnmarshalTypeError{CBORType: t.String(), GoType: v.Type().String()} +} + +func isImmutableKind(k reflect.Kind) bool { + switch k { + case reflect.Bool, + reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, + reflect.Float32, reflect.Float64, + reflect.String: + return true + + default: + return false + } +} + +func isHashableValue(rv reflect.Value) bool { + switch rv.Kind() { + case reflect.Slice, reflect.Map, reflect.Func: + return false + + case reflect.Struct: + switch rv.Type() { + case typeTag: + tag := rv.Interface().(Tag) + return isHashableValue(reflect.ValueOf(tag.Content)) + case typeBigInt: + return false + } + } + return true +} + +// convertByteSliceToByteString converts []byte to ByteString if +// - v is []byte type, or +// - v is Tag type and tag content type is []byte +// This function also handles nested tags. +// CBOR data is already verified to be well-formed before this function is used, +// so the recursion won't exceed max nested levels. +func convertByteSliceToByteString(v interface{}) (interface{}, bool) { + switch v := v.(type) { + case []byte: + return ByteString(v), true + + case Tag: + content, converted := convertByteSliceToByteString(v.Content) + if converted { + return Tag{Number: v.Number, Content: content}, true + } + } + return v, false +} diff --git a/vendor/github.com/fxamacker/cbor/v2/diagnose.go b/vendor/github.com/fxamacker/cbor/v2/diagnose.go new file mode 100644 index 000000000000..44afb866089c --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/diagnose.go @@ -0,0 +1,724 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +package cbor + +import ( + "bytes" + "encoding/base32" + "encoding/base64" + "encoding/hex" + "errors" + "fmt" + "io" + "math" + "math/big" + "strconv" + "unicode/utf16" + "unicode/utf8" + + "github.com/x448/float16" +) + +// DiagMode is the main interface for CBOR diagnostic notation. +type DiagMode interface { + // Diagnose returns extended diagnostic notation (EDN) of CBOR data items using this DiagMode. + Diagnose([]byte) (string, error) + + // DiagnoseFirst returns extended diagnostic notation (EDN) of the first CBOR data item using the DiagMode. Any remaining bytes are returned in rest. + DiagnoseFirst([]byte) (string, []byte, error) + + // DiagOptions returns user specified options used to create this DiagMode. + DiagOptions() DiagOptions +} + +// ByteStringEncoding specifies the base encoding that byte strings are notated. +type ByteStringEncoding uint8 + +const ( + // ByteStringBase16Encoding encodes byte strings in base16, without padding. + ByteStringBase16Encoding ByteStringEncoding = iota + + // ByteStringBase32Encoding encodes byte strings in base32, without padding. + ByteStringBase32Encoding + + // ByteStringBase32HexEncoding encodes byte strings in base32hex, without padding. + ByteStringBase32HexEncoding + + // ByteStringBase64Encoding encodes byte strings in base64url, without padding. + ByteStringBase64Encoding + + maxByteStringEncoding +) + +func (bse ByteStringEncoding) valid() error { + if bse >= maxByteStringEncoding { + return errors.New("cbor: invalid ByteStringEncoding " + strconv.Itoa(int(bse))) + } + return nil +} + +// DiagOptions specifies Diag options. +type DiagOptions struct { + // ByteStringEncoding specifies the base encoding that byte strings are notated. + // Default is ByteStringBase16Encoding. + ByteStringEncoding ByteStringEncoding + + // ByteStringHexWhitespace specifies notating with whitespace in byte string + // when ByteStringEncoding is ByteStringBase16Encoding. + ByteStringHexWhitespace bool + + // ByteStringText specifies notating with text in byte string + // if it is a valid UTF-8 text. + ByteStringText bool + + // ByteStringEmbeddedCBOR specifies notating embedded CBOR in byte string + // if it is a valid CBOR bytes. + ByteStringEmbeddedCBOR bool + + // CBORSequence specifies notating CBOR sequences. + // otherwise, it returns an error if there are more bytes after the first CBOR. + CBORSequence bool + + // FloatPrecisionIndicator specifies appending a suffix to indicate float precision. + // Refer to https://www.rfc-editor.org/rfc/rfc8949.html#name-encoding-indicators. + FloatPrecisionIndicator bool + + // MaxNestedLevels specifies the max nested levels allowed for any combination of CBOR array, maps, and tags. + // Default is 32 levels and it can be set to [4, 65535]. Note that higher maximum levels of nesting can + // require larger amounts of stack to deserialize. Don't increase this higher than you require. + MaxNestedLevels int + + // MaxArrayElements specifies the max number of elements for CBOR arrays. + // Default is 128*1024=131072 and it can be set to [16, 2147483647] + MaxArrayElements int + + // MaxMapPairs specifies the max number of key-value pairs for CBOR maps. + // Default is 128*1024=131072 and it can be set to [16, 2147483647] + MaxMapPairs int +} + +// DiagMode returns a DiagMode with immutable options. +func (opts DiagOptions) DiagMode() (DiagMode, error) { + return opts.diagMode() +} + +func (opts DiagOptions) diagMode() (*diagMode, error) { + if err := opts.ByteStringEncoding.valid(); err != nil { + return nil, err + } + + decMode, err := DecOptions{ + MaxNestedLevels: opts.MaxNestedLevels, + MaxArrayElements: opts.MaxArrayElements, + MaxMapPairs: opts.MaxMapPairs, + }.decMode() + if err != nil { + return nil, err + } + + return &diagMode{ + byteStringEncoding: opts.ByteStringEncoding, + byteStringHexWhitespace: opts.ByteStringHexWhitespace, + byteStringText: opts.ByteStringText, + byteStringEmbeddedCBOR: opts.ByteStringEmbeddedCBOR, + cborSequence: opts.CBORSequence, + floatPrecisionIndicator: opts.FloatPrecisionIndicator, + decMode: decMode, + }, nil +} + +type diagMode struct { + byteStringEncoding ByteStringEncoding + byteStringHexWhitespace bool + byteStringText bool + byteStringEmbeddedCBOR bool + cborSequence bool + floatPrecisionIndicator bool + decMode *decMode +} + +// DiagOptions returns user specified options used to create this DiagMode. +func (dm *diagMode) DiagOptions() DiagOptions { + return DiagOptions{ + ByteStringEncoding: dm.byteStringEncoding, + ByteStringHexWhitespace: dm.byteStringHexWhitespace, + ByteStringText: dm.byteStringText, + ByteStringEmbeddedCBOR: dm.byteStringEmbeddedCBOR, + CBORSequence: dm.cborSequence, + FloatPrecisionIndicator: dm.floatPrecisionIndicator, + MaxNestedLevels: dm.decMode.maxNestedLevels, + MaxArrayElements: dm.decMode.maxArrayElements, + MaxMapPairs: dm.decMode.maxMapPairs, + } +} + +// Diagnose returns extended diagnostic notation (EDN) of CBOR data items using the DiagMode. +func (dm *diagMode) Diagnose(data []byte) (string, error) { + return newDiagnose(data, dm.decMode, dm).diag(dm.cborSequence) +} + +// DiagnoseFirst returns extended diagnostic notation (EDN) of the first CBOR data item using the DiagMode. Any remaining bytes are returned in rest. +func (dm *diagMode) DiagnoseFirst(data []byte) (diagNotation string, rest []byte, err error) { + return newDiagnose(data, dm.decMode, dm).diagFirst() +} + +var defaultDiagMode, _ = DiagOptions{}.diagMode() + +// Diagnose returns extended diagnostic notation (EDN) of CBOR data items +// using the default diagnostic mode. +// +// Refer to https://www.rfc-editor.org/rfc/rfc8949.html#name-diagnostic-notation. +func Diagnose(data []byte) (string, error) { + return defaultDiagMode.Diagnose(data) +} + +// Diagnose returns extended diagnostic notation (EDN) of the first CBOR data item using the DiagMode. Any remaining bytes are returned in rest. +func DiagnoseFirst(data []byte) (diagNotation string, rest []byte, err error) { + return defaultDiagMode.DiagnoseFirst(data) +} + +type diagnose struct { + dm *diagMode + d *decoder + w *bytes.Buffer +} + +func newDiagnose(data []byte, decm *decMode, diagm *diagMode) *diagnose { + return &diagnose{ + dm: diagm, + d: &decoder{data: data, dm: decm}, + w: &bytes.Buffer{}, + } +} + +func (di *diagnose) diag(cborSequence bool) (string, error) { + // CBOR Sequence + firstItem := true + for { + switch err := di.wellformed(cborSequence); err { + case nil: + if !firstItem { + di.w.WriteString(", ") + } + firstItem = false + if itemErr := di.item(); itemErr != nil { + return di.w.String(), itemErr + } + + case io.EOF: + if firstItem { + return di.w.String(), err + } + return di.w.String(), nil + + default: + return di.w.String(), err + } + } +} + +func (di *diagnose) diagFirst() (diagNotation string, rest []byte, err error) { + err = di.wellformed(true) + if err == nil { + err = di.item() + } + + if err == nil { + // Return EDN and the rest of the data slice (which might be len 0) + return di.w.String(), di.d.data[di.d.off:], nil + } + + return di.w.String(), nil, err +} + +func (di *diagnose) wellformed(allowExtraData bool) error { + off := di.d.off + err := di.d.wellformed(allowExtraData, false) + di.d.off = off + return err +} + +func (di *diagnose) item() error { //nolint:gocyclo + initialByte := di.d.data[di.d.off] + switch initialByte { + case cborByteStringWithIndefiniteLengthHead, + cborTextStringWithIndefiniteLengthHead: // indefinite-length byte/text string + di.d.off++ + if isBreakFlag(di.d.data[di.d.off]) { + di.d.off++ + switch initialByte { + case cborByteStringWithIndefiniteLengthHead: + // indefinite-length bytes with no chunks. + di.w.WriteString(`''_`) + return nil + case cborTextStringWithIndefiniteLengthHead: + // indefinite-length text with no chunks. + di.w.WriteString(`""_`) + return nil + } + } + + di.w.WriteString("(_ ") + + i := 0 + for !di.d.foundBreak() { + if i > 0 { + di.w.WriteString(", ") + } + + i++ + // wellformedIndefiniteString() already checked that the next item is a byte/text string. + if err := di.item(); err != nil { + return err + } + } + + di.w.WriteByte(')') + return nil + + case cborArrayWithIndefiniteLengthHead: // indefinite-length array + di.d.off++ + di.w.WriteString("[_ ") + + i := 0 + for !di.d.foundBreak() { + if i > 0 { + di.w.WriteString(", ") + } + + i++ + if err := di.item(); err != nil { + return err + } + } + + di.w.WriteByte(']') + return nil + + case cborMapWithIndefiniteLengthHead: // indefinite-length map + di.d.off++ + di.w.WriteString("{_ ") + + i := 0 + for !di.d.foundBreak() { + if i > 0 { + di.w.WriteString(", ") + } + + i++ + // key + if err := di.item(); err != nil { + return err + } + + di.w.WriteString(": ") + + // value + if err := di.item(); err != nil { + return err + } + } + + di.w.WriteByte('}') + return nil + } + + t := di.d.nextCBORType() + switch t { + case cborTypePositiveInt: + _, _, val := di.d.getHead() + di.w.WriteString(strconv.FormatUint(val, 10)) + return nil + + case cborTypeNegativeInt: + _, _, val := di.d.getHead() + if val > math.MaxInt64 { + // CBOR negative integer overflows int64, use big.Int to store value. + bi := new(big.Int) + bi.SetUint64(val) + bi.Add(bi, big.NewInt(1)) + bi.Neg(bi) + di.w.WriteString(bi.String()) + return nil + } + + nValue := int64(-1) ^ int64(val) + di.w.WriteString(strconv.FormatInt(nValue, 10)) + return nil + + case cborTypeByteString: + b, _ := di.d.parseByteString() + return di.encodeByteString(b) + + case cborTypeTextString: + b, err := di.d.parseTextString() + if err != nil { + return err + } + return di.encodeTextString(string(b), '"') + + case cborTypeArray: + _, _, val := di.d.getHead() + count := int(val) + di.w.WriteByte('[') + + for i := 0; i < count; i++ { + if i > 0 { + di.w.WriteString(", ") + } + if err := di.item(); err != nil { + return err + } + } + di.w.WriteByte(']') + return nil + + case cborTypeMap: + _, _, val := di.d.getHead() + count := int(val) + di.w.WriteByte('{') + + for i := 0; i < count; i++ { + if i > 0 { + di.w.WriteString(", ") + } + // key + if err := di.item(); err != nil { + return err + } + di.w.WriteString(": ") + // value + if err := di.item(); err != nil { + return err + } + } + di.w.WriteByte('}') + return nil + + case cborTypeTag: + _, _, tagNum := di.d.getHead() + switch tagNum { + case tagNumUnsignedBignum: + if nt := di.d.nextCBORType(); nt != cborTypeByteString { + return newInadmissibleTagContentTypeError( + tagNumUnsignedBignum, + "byte string", + nt.String()) + } + + b, _ := di.d.parseByteString() + bi := new(big.Int).SetBytes(b) + di.w.WriteString(bi.String()) + return nil + + case tagNumNegativeBignum: + if nt := di.d.nextCBORType(); nt != cborTypeByteString { + return newInadmissibleTagContentTypeError( + tagNumNegativeBignum, + "byte string", + nt.String(), + ) + } + + b, _ := di.d.parseByteString() + bi := new(big.Int).SetBytes(b) + bi.Add(bi, big.NewInt(1)) + bi.Neg(bi) + di.w.WriteString(bi.String()) + return nil + + default: + di.w.WriteString(strconv.FormatUint(tagNum, 10)) + di.w.WriteByte('(') + if err := di.item(); err != nil { + return err + } + di.w.WriteByte(')') + return nil + } + + case cborTypePrimitives: + _, ai, val := di.d.getHead() + switch ai { + case additionalInformationAsFalse: + di.w.WriteString("false") + return nil + + case additionalInformationAsTrue: + di.w.WriteString("true") + return nil + + case additionalInformationAsNull: + di.w.WriteString("null") + return nil + + case additionalInformationAsUndefined: + di.w.WriteString("undefined") + return nil + + case additionalInformationAsFloat16, + additionalInformationAsFloat32, + additionalInformationAsFloat64: + return di.encodeFloat(ai, val) + + default: + di.w.WriteString("simple(") + di.w.WriteString(strconv.FormatUint(val, 10)) + di.w.WriteByte(')') + return nil + } + } + + return nil +} + +// writeU16 format a rune as "\uxxxx" +func (di *diagnose) writeU16(val rune) { + di.w.WriteString("\\u") + var in [2]byte + in[0] = byte(val >> 8) + in[1] = byte(val) + sz := hex.EncodedLen(len(in)) + di.w.Grow(sz) + dst := di.w.Bytes()[di.w.Len() : di.w.Len()+sz] + hex.Encode(dst, in[:]) + di.w.Write(dst) +} + +var rawBase32Encoding = base32.StdEncoding.WithPadding(base32.NoPadding) +var rawBase32HexEncoding = base32.HexEncoding.WithPadding(base32.NoPadding) + +func (di *diagnose) encodeByteString(val []byte) error { + if len(val) > 0 { + if di.dm.byteStringText && utf8.Valid(val) { + return di.encodeTextString(string(val), '\'') + } + + if di.dm.byteStringEmbeddedCBOR { + di2 := newDiagnose(val, di.dm.decMode, di.dm) + // should always notating embedded CBOR sequence. + if str, err := di2.diag(true); err == nil { + di.w.WriteString("<<") + di.w.WriteString(str) + di.w.WriteString(">>") + return nil + } + } + } + + switch di.dm.byteStringEncoding { + case ByteStringBase16Encoding: + di.w.WriteString("h'") + if di.dm.byteStringHexWhitespace { + sz := hex.EncodedLen(len(val)) + if len(val) > 0 { + sz += len(val) - 1 + } + di.w.Grow(sz) + + dst := di.w.Bytes()[di.w.Len():] + for i := range val { + if i > 0 { + dst = append(dst, ' ') + } + hex.Encode(dst[len(dst):len(dst)+2], val[i:i+1]) + dst = dst[:len(dst)+2] + } + di.w.Write(dst) + } else { + sz := hex.EncodedLen(len(val)) + di.w.Grow(sz) + dst := di.w.Bytes()[di.w.Len() : di.w.Len()+sz] + hex.Encode(dst, val) + di.w.Write(dst) + } + di.w.WriteByte('\'') + return nil + + case ByteStringBase32Encoding: + di.w.WriteString("b32'") + sz := rawBase32Encoding.EncodedLen(len(val)) + di.w.Grow(sz) + dst := di.w.Bytes()[di.w.Len() : di.w.Len()+sz] + rawBase32Encoding.Encode(dst, val) + di.w.Write(dst) + di.w.WriteByte('\'') + return nil + + case ByteStringBase32HexEncoding: + di.w.WriteString("h32'") + sz := rawBase32HexEncoding.EncodedLen(len(val)) + di.w.Grow(sz) + dst := di.w.Bytes()[di.w.Len() : di.w.Len()+sz] + rawBase32HexEncoding.Encode(dst, val) + di.w.Write(dst) + di.w.WriteByte('\'') + return nil + + case ByteStringBase64Encoding: + di.w.WriteString("b64'") + sz := base64.RawURLEncoding.EncodedLen(len(val)) + di.w.Grow(sz) + dst := di.w.Bytes()[di.w.Len() : di.w.Len()+sz] + base64.RawURLEncoding.Encode(dst, val) + di.w.Write(dst) + di.w.WriteByte('\'') + return nil + + default: + // It should not be possible for users to construct a *diagMode with an invalid byte + // string encoding. + panic(fmt.Sprintf("diagmode has invalid ByteStringEncoding %v", di.dm.byteStringEncoding)) + } +} + +const utf16SurrSelf = rune(0x10000) + +// quote should be either `'` or `"` +func (di *diagnose) encodeTextString(val string, quote byte) error { + di.w.WriteByte(quote) + + for i := 0; i < len(val); { + if b := val[i]; b < utf8.RuneSelf { + switch { + case b == '\t', b == '\n', b == '\r', b == '\\', b == quote: + di.w.WriteByte('\\') + + switch b { + case '\t': + b = 't' + case '\n': + b = 'n' + case '\r': + b = 'r' + } + di.w.WriteByte(b) + + case b >= ' ' && b <= '~': + di.w.WriteByte(b) + + default: + di.writeU16(rune(b)) + } + + i++ + continue + } + + c, size := utf8.DecodeRuneInString(val[i:]) + switch { + case c == utf8.RuneError: + return &SemanticError{"cbor: invalid UTF-8 string"} + + case c < utf16SurrSelf: + di.writeU16(c) + + default: + c1, c2 := utf16.EncodeRune(c) + di.writeU16(c1) + di.writeU16(c2) + } + + i += size + } + + di.w.WriteByte(quote) + return nil +} + +func (di *diagnose) encodeFloat(ai byte, val uint64) error { + f64 := float64(0) + switch ai { + case additionalInformationAsFloat16: + f16 := float16.Frombits(uint16(val)) + switch { + case f16.IsNaN(): + di.w.WriteString("NaN") + return nil + case f16.IsInf(1): + di.w.WriteString("Infinity") + return nil + case f16.IsInf(-1): + di.w.WriteString("-Infinity") + return nil + default: + f64 = float64(f16.Float32()) + } + + case additionalInformationAsFloat32: + f32 := math.Float32frombits(uint32(val)) + switch { + case f32 != f32: + di.w.WriteString("NaN") + return nil + case f32 > math.MaxFloat32: + di.w.WriteString("Infinity") + return nil + case f32 < -math.MaxFloat32: + di.w.WriteString("-Infinity") + return nil + default: + f64 = float64(f32) + } + + case additionalInformationAsFloat64: + f64 = math.Float64frombits(val) + switch { + case f64 != f64: + di.w.WriteString("NaN") + return nil + case f64 > math.MaxFloat64: + di.w.WriteString("Infinity") + return nil + case f64 < -math.MaxFloat64: + di.w.WriteString("-Infinity") + return nil + } + } + // Use ES6 number to string conversion which should match most JSON generators. + // Inspired by https://github.com/golang/go/blob/4df10fba1687a6d4f51d7238a403f8f2298f6a16/src/encoding/json/encode.go#L585 + const bitSize = 64 + b := make([]byte, 0, 32) + if abs := math.Abs(f64); abs != 0 && (abs < 1e-6 || abs >= 1e21) { + b = strconv.AppendFloat(b, f64, 'e', -1, bitSize) + // clean up e-09 to e-9 + n := len(b) + if n >= 4 && string(b[n-4:n-1]) == "e-0" { + b = append(b[:n-2], b[n-1]) + } + } else { + b = strconv.AppendFloat(b, f64, 'f', -1, bitSize) + } + + // add decimal point and trailing zero if needed + if bytes.IndexByte(b, '.') < 0 { + if i := bytes.IndexByte(b, 'e'); i < 0 { + b = append(b, '.', '0') + } else { + b = append(b[:i+2], b[i:]...) + b[i] = '.' + b[i+1] = '0' + } + } + + di.w.WriteString(string(b)) + + if di.dm.floatPrecisionIndicator { + switch ai { + case additionalInformationAsFloat16: + di.w.WriteString("_1") + return nil + + case additionalInformationAsFloat32: + di.w.WriteString("_2") + return nil + + case additionalInformationAsFloat64: + di.w.WriteString("_3") + return nil + } + } + + return nil +} diff --git a/vendor/github.com/fxamacker/cbor/v2/doc.go b/vendor/github.com/fxamacker/cbor/v2/doc.go new file mode 100644 index 000000000000..23f68b984c63 --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/doc.go @@ -0,0 +1,129 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +/* +Package cbor is a modern CBOR codec (RFC 8949 & RFC 7049) with CBOR tags, +Go struct tags (toarray/keyasint/omitempty), Core Deterministic Encoding, +CTAP2, Canonical CBOR, float64->32->16, and duplicate map key detection. + +Encoding options allow "preferred serialization" by encoding integers and floats +to their smallest forms (e.g. float16) when values fit. + +Struct tags like "keyasint", "toarray" and "omitempty" make CBOR data smaller +and easier to use with structs. + +For example, "toarray" tag makes struct fields encode to CBOR array elements. And +"keyasint" makes a field encode to an element of CBOR map with specified int key. + +Latest docs can be viewed at https://github.com/fxamacker/cbor#cbor-library-in-go + +# Basics + +The Quick Start guide is at https://github.com/fxamacker/cbor#quick-start + +Function signatures identical to encoding/json include: + + Marshal, Unmarshal, NewEncoder, NewDecoder, (*Encoder).Encode, (*Decoder).Decode. + +Standard interfaces include: + + BinaryMarshaler, BinaryUnmarshaler, Marshaler, and Unmarshaler. + +Custom encoding and decoding is possible by implementing standard interfaces for +user-defined Go types. + +Codec functions are available at package-level (using defaults options) or by +creating modes from options at runtime. + +"Mode" in this API means definite way of encoding (EncMode) or decoding (DecMode). + +EncMode and DecMode interfaces are created from EncOptions or DecOptions structs. + + em, err := cbor.EncOptions{...}.EncMode() + em, err := cbor.CanonicalEncOptions().EncMode() + em, err := cbor.CTAP2EncOptions().EncMode() + +Modes use immutable options to avoid side-effects and simplify concurrency. Behavior of +modes won't accidentally change at runtime after they're created. + +Modes are intended to be reused and are safe for concurrent use. + +EncMode and DecMode Interfaces + + // EncMode interface uses immutable options and is safe for concurrent use. + type EncMode interface { + Marshal(v interface{}) ([]byte, error) + NewEncoder(w io.Writer) *Encoder + EncOptions() EncOptions // returns copy of options + } + + // DecMode interface uses immutable options and is safe for concurrent use. + type DecMode interface { + Unmarshal(data []byte, v interface{}) error + NewDecoder(r io.Reader) *Decoder + DecOptions() DecOptions // returns copy of options + } + +Using Default Encoding Mode + + b, err := cbor.Marshal(v) + + encoder := cbor.NewEncoder(w) + err = encoder.Encode(v) + +Using Default Decoding Mode + + err := cbor.Unmarshal(b, &v) + + decoder := cbor.NewDecoder(r) + err = decoder.Decode(&v) + +Creating and Using Encoding Modes + + // Create EncOptions using either struct literal or a function. + opts := cbor.CanonicalEncOptions() + + // If needed, modify encoding options + opts.Time = cbor.TimeUnix + + // Create reusable EncMode interface with immutable options, safe for concurrent use. + em, err := opts.EncMode() + + // Use EncMode like encoding/json, with same function signatures. + b, err := em.Marshal(v) + // or + encoder := em.NewEncoder(w) + err := encoder.Encode(v) + + // NOTE: Both em.Marshal(v) and encoder.Encode(v) use encoding options + // specified during creation of em (encoding mode). + +# CBOR Options + +Predefined Encoding Options: https://github.com/fxamacker/cbor#predefined-encoding-options + +Encoding Options: https://github.com/fxamacker/cbor#encoding-options + +Decoding Options: https://github.com/fxamacker/cbor#decoding-options + +# Struct Tags + +Struct tags like `cbor:"name,omitempty"` and `json:"name,omitempty"` work as expected. +If both struct tags are specified then `cbor` is used. + +Struct tags like "keyasint", "toarray", and "omitempty" make it easy to use +very compact formats like COSE and CWT (CBOR Web Tokens) with structs. + +For example, "toarray" makes struct fields encode to array elements. And "keyasint" +makes struct fields encode to elements of CBOR map with int keys. + +https://raw.githubusercontent.com/fxamacker/images/master/cbor/v2.0.0/cbor_easy_api.png + +Struct tags are listed at https://github.com/fxamacker/cbor#struct-tags-1 + +# Tests and Fuzzing + +Over 375 tests are included in this package. Cover-guided fuzzing is handled by +a private fuzzer that replaced fxamacker/cbor-fuzz years ago. +*/ +package cbor diff --git a/vendor/github.com/fxamacker/cbor/v2/encode.go b/vendor/github.com/fxamacker/cbor/v2/encode.go new file mode 100644 index 000000000000..6508e291d618 --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/encode.go @@ -0,0 +1,1989 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +package cbor + +import ( + "bytes" + "encoding" + "encoding/binary" + "errors" + "fmt" + "io" + "math" + "math/big" + "math/rand" + "reflect" + "sort" + "strconv" + "sync" + "time" + + "github.com/x448/float16" +) + +// Marshal returns the CBOR encoding of v using default encoding options. +// See EncOptions for encoding options. +// +// Marshal uses the following encoding rules: +// +// If value implements the Marshaler interface, Marshal calls its +// MarshalCBOR method. +// +// If value implements encoding.BinaryMarshaler, Marhsal calls its +// MarshalBinary method and encode it as CBOR byte string. +// +// Boolean values encode as CBOR booleans (type 7). +// +// Positive integer values encode as CBOR positive integers (type 0). +// +// Negative integer values encode as CBOR negative integers (type 1). +// +// Floating point values encode as CBOR floating points (type 7). +// +// String values encode as CBOR text strings (type 3). +// +// []byte values encode as CBOR byte strings (type 2). +// +// Array and slice values encode as CBOR arrays (type 4). +// +// Map values encode as CBOR maps (type 5). +// +// Struct values encode as CBOR maps (type 5). Each exported struct field +// becomes a pair with field name encoded as CBOR text string (type 3) and +// field value encoded based on its type. See struct tag option "keyasint" +// to encode field name as CBOR integer (type 0 and 1). Also see struct +// tag option "toarray" for special field "_" to encode struct values as +// CBOR array (type 4). +// +// Marshal supports format string stored under the "cbor" key in the struct +// field's tag. CBOR format string can specify the name of the field, +// "omitempty" and "keyasint" options, and special case "-" for field omission. +// If "cbor" key is absent, Marshal uses "json" key. +// +// Struct field name is treated as integer if it has "keyasint" option in +// its format string. The format string must specify an integer as its +// field name. +// +// Special struct field "_" is used to specify struct level options, such as +// "toarray". "toarray" option enables Go struct to be encoded as CBOR array. +// "omitempty" is disabled by "toarray" to ensure that the same number +// of elements are encoded every time. +// +// Anonymous struct fields are marshaled as if their exported fields +// were fields in the outer struct. Marshal follows the same struct fields +// visibility rules used by JSON encoding package. +// +// time.Time values encode as text strings specified in RFC3339 or numerical +// representation of seconds since January 1, 1970 UTC depending on +// EncOptions.Time setting. Also See EncOptions.TimeTag to encode +// time.Time as CBOR tag with tag number 0 or 1. +// +// big.Int values encode as CBOR integers (type 0 and 1) if values fit. +// Otherwise, big.Int values encode as CBOR bignums (tag 2 and 3). See +// EncOptions.BigIntConvert to always encode big.Int values as CBOR +// bignums. +// +// Pointer values encode as the value pointed to. +// +// Interface values encode as the value stored in the interface. +// +// Nil slice/map/pointer/interface values encode as CBOR nulls (type 7). +// +// Values of other types cannot be encoded in CBOR. Attempting +// to encode such a value causes Marshal to return an UnsupportedTypeError. +func Marshal(v interface{}) ([]byte, error) { + return defaultEncMode.Marshal(v) +} + +// MarshalToBuffer encodes v into provided buffer (instead of using built-in buffer pool) +// and uses default encoding options. +// +// NOTE: Unlike Marshal, the buffer provided to MarshalToBuffer can contain +// partially encoded data if error is returned. +// +// See Marshal for more details. +func MarshalToBuffer(v interface{}, buf *bytes.Buffer) error { + return defaultEncMode.MarshalToBuffer(v, buf) +} + +// Marshaler is the interface implemented by types that can marshal themselves +// into valid CBOR. +type Marshaler interface { + MarshalCBOR() ([]byte, error) +} + +// MarshalerError represents error from checking encoded CBOR data item +// returned from MarshalCBOR for well-formedness and some very limited tag validation. +type MarshalerError struct { + typ reflect.Type + err error +} + +func (e *MarshalerError) Error() string { + return "cbor: error calling MarshalCBOR for type " + + e.typ.String() + + ": " + e.err.Error() +} + +func (e *MarshalerError) Unwrap() error { + return e.err +} + +// UnsupportedTypeError is returned by Marshal when attempting to encode value +// of an unsupported type. +type UnsupportedTypeError struct { + Type reflect.Type +} + +func (e *UnsupportedTypeError) Error() string { + return "cbor: unsupported type: " + e.Type.String() +} + +// UnsupportedValueError is returned by Marshal when attempting to encode an +// unsupported value. +type UnsupportedValueError struct { + msg string +} + +func (e *UnsupportedValueError) Error() string { + return "cbor: unsupported value: " + e.msg +} + +// SortMode identifies supported sorting order. +type SortMode int + +const ( + // SortNone encodes map pairs and struct fields in an arbitrary order. + SortNone SortMode = 0 + + // SortLengthFirst causes map keys or struct fields to be sorted such that: + // - If two keys have different lengths, the shorter one sorts earlier; + // - If two keys have the same length, the one with the lower value in + // (byte-wise) lexical order sorts earlier. + // It is used in "Canonical CBOR" encoding in RFC 7049 3.9. + SortLengthFirst SortMode = 1 + + // SortBytewiseLexical causes map keys or struct fields to be sorted in the + // bytewise lexicographic order of their deterministic CBOR encodings. + // It is used in "CTAP2 Canonical CBOR" and "Core Deterministic Encoding" + // in RFC 7049bis. + SortBytewiseLexical SortMode = 2 + + // SortShuffle encodes map pairs and struct fields in a shuffled + // order. This mode does not guarantee an unbiased permutation, but it + // does guarantee that the runtime of the shuffle algorithm used will be + // constant. + SortFastShuffle SortMode = 3 + + // SortCanonical is used in "Canonical CBOR" encoding in RFC 7049 3.9. + SortCanonical SortMode = SortLengthFirst + + // SortCTAP2 is used in "CTAP2 Canonical CBOR". + SortCTAP2 SortMode = SortBytewiseLexical + + // SortCoreDeterministic is used in "Core Deterministic Encoding" in RFC 7049bis. + SortCoreDeterministic SortMode = SortBytewiseLexical + + maxSortMode SortMode = 4 +) + +func (sm SortMode) valid() bool { + return sm >= 0 && sm < maxSortMode +} + +// StringMode specifies how to encode Go string values. +type StringMode int + +const ( + // StringToTextString encodes Go string to CBOR text string (major type 3). + StringToTextString StringMode = iota + + // StringToByteString encodes Go string to CBOR byte string (major type 2). + StringToByteString +) + +func (st StringMode) cborType() (cborType, error) { + switch st { + case StringToTextString: + return cborTypeTextString, nil + + case StringToByteString: + return cborTypeByteString, nil + } + return 0, errors.New("cbor: invalid StringType " + strconv.Itoa(int(st))) +} + +// ShortestFloatMode specifies which floating-point format should +// be used as the shortest possible format for CBOR encoding. +// It is not used for encoding Infinity and NaN values. +type ShortestFloatMode int + +const ( + // ShortestFloatNone makes float values encode without any conversion. + // This is the default for ShortestFloatMode in v1. + // E.g. a float32 in Go will encode to CBOR float32. And + // a float64 in Go will encode to CBOR float64. + ShortestFloatNone ShortestFloatMode = iota + + // ShortestFloat16 specifies float16 as the shortest form that preserves value. + // E.g. if float64 can convert to float32 while preserving value, then + // encoding will also try to convert float32 to float16. So a float64 might + // encode as CBOR float64, float32 or float16 depending on the value. + ShortestFloat16 + + maxShortestFloat +) + +func (sfm ShortestFloatMode) valid() bool { + return sfm >= 0 && sfm < maxShortestFloat +} + +// NaNConvertMode specifies how to encode NaN and overrides ShortestFloatMode. +// ShortestFloatMode is not used for encoding Infinity and NaN values. +type NaNConvertMode int + +const ( + // NaNConvert7e00 always encodes NaN to 0xf97e00 (CBOR float16 = 0x7e00). + NaNConvert7e00 NaNConvertMode = iota + + // NaNConvertNone never modifies or converts NaN to other representations + // (float64 NaN stays float64, etc. even if it can use float16 without losing + // any bits). + NaNConvertNone + + // NaNConvertPreserveSignal converts NaN to the smallest form that preserves + // value (quiet bit + payload) as described in RFC 7049bis Draft 12. + NaNConvertPreserveSignal + + // NaNConvertQuiet always forces quiet bit = 1 and shortest form that preserves + // NaN payload. + NaNConvertQuiet + + // NaNConvertReject returns UnsupportedValueError on attempts to encode a NaN value. + NaNConvertReject + + maxNaNConvert +) + +func (ncm NaNConvertMode) valid() bool { + return ncm >= 0 && ncm < maxNaNConvert +} + +// InfConvertMode specifies how to encode Infinity and overrides ShortestFloatMode. +// ShortestFloatMode is not used for encoding Infinity and NaN values. +type InfConvertMode int + +const ( + // InfConvertFloat16 always converts Inf to lossless IEEE binary16 (float16). + InfConvertFloat16 InfConvertMode = iota + + // InfConvertNone never converts (used by CTAP2 Canonical CBOR). + InfConvertNone + + // InfConvertReject returns UnsupportedValueError on attempts to encode an infinite value. + InfConvertReject + + maxInfConvert +) + +func (icm InfConvertMode) valid() bool { + return icm >= 0 && icm < maxInfConvert +} + +// TimeMode specifies how to encode time.Time values. +type TimeMode int + +const ( + // TimeUnix causes time.Time to be encoded as epoch time in integer with second precision. + TimeUnix TimeMode = iota + + // TimeUnixMicro causes time.Time to be encoded as epoch time in float-point rounded to microsecond precision. + TimeUnixMicro + + // TimeUnixDynamic causes time.Time to be encoded as integer if time.Time doesn't have fractional seconds, + // otherwise float-point rounded to microsecond precision. + TimeUnixDynamic + + // TimeRFC3339 causes time.Time to be encoded as RFC3339 formatted string with second precision. + TimeRFC3339 + + // TimeRFC3339Nano causes time.Time to be encoded as RFC3339 formatted string with nanosecond precision. + TimeRFC3339Nano + + maxTimeMode +) + +func (tm TimeMode) valid() bool { + return tm >= 0 && tm < maxTimeMode +} + +// BigIntConvertMode specifies how to encode big.Int values. +type BigIntConvertMode int + +const ( + // BigIntConvertShortest makes big.Int encode to CBOR integer if value fits. + // E.g. if big.Int value can be converted to CBOR integer while preserving + // value, encoder will encode it to CBOR integer (major type 0 or 1). + BigIntConvertShortest BigIntConvertMode = iota + + // BigIntConvertNone makes big.Int encode to CBOR bignum (tag 2 or 3) without + // converting it to another CBOR type. + BigIntConvertNone + + // BigIntConvertReject returns an UnsupportedTypeError instead of marshaling a big.Int. + BigIntConvertReject + + maxBigIntConvert +) + +func (bim BigIntConvertMode) valid() bool { + return bim >= 0 && bim < maxBigIntConvert +} + +// NilContainersMode specifies how to encode nil slices and maps. +type NilContainersMode int + +const ( + // NilContainerAsNull encodes nil slices and maps as CBOR null. + // This is the default. + NilContainerAsNull NilContainersMode = iota + + // NilContainerAsEmpty encodes nil slices and maps as + // empty container (CBOR bytestring, array, or map). + NilContainerAsEmpty + + maxNilContainersMode +) + +func (m NilContainersMode) valid() bool { + return m >= 0 && m < maxNilContainersMode +} + +// OmitEmptyMode specifies how to encode struct fields with omitempty tag. +// The default behavior omits if field value would encode as empty CBOR value. +type OmitEmptyMode int + +const ( + // OmitEmptyCBORValue specifies that struct fields tagged with "omitempty" + // should be omitted from encoding if the field would be encoded as an empty + // CBOR value, such as CBOR false, 0, 0.0, nil, empty byte, empty string, + // empty array, or empty map. + OmitEmptyCBORValue OmitEmptyMode = iota + + // OmitEmptyGoValue specifies that struct fields tagged with "omitempty" + // should be omitted from encoding if the field has an empty Go value, + // defined as false, 0, 0.0, a nil pointer, a nil interface value, and + // any empty array, slice, map, or string. + // This behavior is the same as the current (aka v1) encoding/json package + // included in Go. + OmitEmptyGoValue + + maxOmitEmptyMode +) + +func (om OmitEmptyMode) valid() bool { + return om >= 0 && om < maxOmitEmptyMode +} + +// FieldNameMode specifies the CBOR type to use when encoding struct field names. +type FieldNameMode int + +const ( + // FieldNameToTextString encodes struct fields to CBOR text string (major type 3). + FieldNameToTextString FieldNameMode = iota + + // FieldNameToTextString encodes struct fields to CBOR byte string (major type 2). + FieldNameToByteString + + maxFieldNameMode +) + +func (fnm FieldNameMode) valid() bool { + return fnm >= 0 && fnm < maxFieldNameMode +} + +// ByteSliceLaterFormatMode specifies which later format conversion hint (CBOR tag 21-23) +// to include (if any) when encoding Go byte slice to CBOR byte string. The encoder will +// always encode unmodified bytes from the byte slice and just wrap it within +// CBOR tag 21, 22, or 23 if specified. +// See "Expected Later Encoding for CBOR-to-JSON Converters" in RFC 8949 Section 3.4.5.2. +type ByteSliceLaterFormatMode int + +const ( + // ByteSliceLaterFormatNone encodes unmodified bytes from Go byte slice to CBOR byte string (major type 2) + // without adding CBOR tag 21, 22, or 23. + ByteSliceLaterFormatNone ByteSliceLaterFormatMode = iota + + // ByteSliceLaterFormatBase64URL encodes unmodified bytes from Go byte slice to CBOR byte string (major type 2) + // inside CBOR tag 21 (expected later conversion to base64url encoding, see RFC 8949 Section 3.4.5.2). + ByteSliceLaterFormatBase64URL + + // ByteSliceLaterFormatBase64 encodes unmodified bytes from Go byte slice to CBOR byte string (major type 2) + // inside CBOR tag 22 (expected later conversion to base64 encoding, see RFC 8949 Section 3.4.5.2). + ByteSliceLaterFormatBase64 + + // ByteSliceLaterFormatBase16 encodes unmodified bytes from Go byte slice to CBOR byte string (major type 2) + // inside CBOR tag 23 (expected later conversion to base16 encoding, see RFC 8949 Section 3.4.5.2). + ByteSliceLaterFormatBase16 +) + +func (bsefm ByteSliceLaterFormatMode) encodingTag() (uint64, error) { + switch bsefm { + case ByteSliceLaterFormatNone: + return 0, nil + + case ByteSliceLaterFormatBase64URL: + return tagNumExpectedLaterEncodingBase64URL, nil + + case ByteSliceLaterFormatBase64: + return tagNumExpectedLaterEncodingBase64, nil + + case ByteSliceLaterFormatBase16: + return tagNumExpectedLaterEncodingBase16, nil + } + return 0, errors.New("cbor: invalid ByteSliceLaterFormat " + strconv.Itoa(int(bsefm))) +} + +// ByteArrayMode specifies how to encode byte arrays. +type ByteArrayMode int + +const ( + // ByteArrayToByteSlice encodes byte arrays the same way that a byte slice with identical + // length and contents is encoded. + ByteArrayToByteSlice ByteArrayMode = iota + + // ByteArrayToArray encodes byte arrays to the CBOR array type with one unsigned integer + // item for each byte in the array. + ByteArrayToArray + + maxByteArrayMode +) + +func (bam ByteArrayMode) valid() bool { + return bam >= 0 && bam < maxByteArrayMode +} + +// BinaryMarshalerMode specifies how to encode types that implement encoding.BinaryMarshaler. +type BinaryMarshalerMode int + +const ( + // BinaryMarshalerByteString encodes the output of MarshalBinary to a CBOR byte string. + BinaryMarshalerByteString BinaryMarshalerMode = iota + + // BinaryMarshalerNone does not recognize BinaryMarshaler implementations during encode. + BinaryMarshalerNone + + maxBinaryMarshalerMode +) + +func (bmm BinaryMarshalerMode) valid() bool { + return bmm >= 0 && bmm < maxBinaryMarshalerMode +} + +// EncOptions specifies encoding options. +type EncOptions struct { + // Sort specifies sorting order. + Sort SortMode + + // ShortestFloat specifies the shortest floating-point encoding that preserves + // the value being encoded. + ShortestFloat ShortestFloatMode + + // NaNConvert specifies how to encode NaN and it overrides ShortestFloatMode. + NaNConvert NaNConvertMode + + // InfConvert specifies how to encode Inf and it overrides ShortestFloatMode. + InfConvert InfConvertMode + + // BigIntConvert specifies how to encode big.Int values. + BigIntConvert BigIntConvertMode + + // Time specifies how to encode time.Time. + Time TimeMode + + // TimeTag allows time.Time to be encoded with a tag number. + // RFC3339 format gets tag number 0, and numeric epoch time tag number 1. + TimeTag EncTagMode + + // IndefLength specifies whether to allow indefinite length CBOR items. + IndefLength IndefLengthMode + + // NilContainers specifies how to encode nil slices and maps. + NilContainers NilContainersMode + + // TagsMd specifies whether to allow CBOR tags (major type 6). + TagsMd TagsMode + + // OmitEmptyMode specifies how to encode struct fields with omitempty tag. + OmitEmpty OmitEmptyMode + + // String specifies which CBOR type to use when encoding Go strings. + // - CBOR text string (major type 3) is default + // - CBOR byte string (major type 2) + String StringMode + + // FieldName specifies the CBOR type to use when encoding struct field names. + FieldName FieldNameMode + + // ByteSliceLaterFormat specifies which later format conversion hint (CBOR tag 21-23) + // to include (if any) when encoding Go byte slice to CBOR byte string. The encoder will + // always encode unmodified bytes from the byte slice and just wrap it within + // CBOR tag 21, 22, or 23 if specified. + // See "Expected Later Encoding for CBOR-to-JSON Converters" in RFC 8949 Section 3.4.5.2. + ByteSliceLaterFormat ByteSliceLaterFormatMode + + // ByteArray specifies how to encode byte arrays. + ByteArray ByteArrayMode + + // BinaryMarshaler specifies how to encode types that implement encoding.BinaryMarshaler. + BinaryMarshaler BinaryMarshalerMode +} + +// CanonicalEncOptions returns EncOptions for "Canonical CBOR" encoding, +// defined in RFC 7049 Section 3.9 with the following rules: +// +// 1. "Integers must be as small as possible." +// 2. "The expression of lengths in major types 2 through 5 must be as short as possible." +// 3. The keys in every map must be sorted in length-first sorting order. +// See SortLengthFirst for details. +// 4. "Indefinite-length items must be made into definite-length items." +// 5. "If a protocol allows for IEEE floats, then additional canonicalization rules might +// need to be added. One example rule might be to have all floats start as a 64-bit +// float, then do a test conversion to a 32-bit float; if the result is the same numeric +// value, use the shorter value and repeat the process with a test conversion to a +// 16-bit float. (This rule selects 16-bit float for positive and negative Infinity +// as well.) Also, there are many representations for NaN. If NaN is an allowed value, +// it must always be represented as 0xf97e00." +func CanonicalEncOptions() EncOptions { + return EncOptions{ + Sort: SortCanonical, + ShortestFloat: ShortestFloat16, + NaNConvert: NaNConvert7e00, + InfConvert: InfConvertFloat16, + IndefLength: IndefLengthForbidden, + } +} + +// CTAP2EncOptions returns EncOptions for "CTAP2 Canonical CBOR" encoding, +// defined in CTAP specification, with the following rules: +// +// 1. "Integers must be encoded as small as possible." +// 2. "The representations of any floating-point values are not changed." +// 3. "The expression of lengths in major types 2 through 5 must be as short as possible." +// 4. "Indefinite-length items must be made into definite-length items."" +// 5. The keys in every map must be sorted in bytewise lexicographic order. +// See SortBytewiseLexical for details. +// 6. "Tags as defined in Section 2.4 in [RFC7049] MUST NOT be present." +func CTAP2EncOptions() EncOptions { + return EncOptions{ + Sort: SortCTAP2, + ShortestFloat: ShortestFloatNone, + NaNConvert: NaNConvertNone, + InfConvert: InfConvertNone, + IndefLength: IndefLengthForbidden, + TagsMd: TagsForbidden, + } +} + +// CoreDetEncOptions returns EncOptions for "Core Deterministic" encoding, +// defined in RFC 7049bis with the following rules: +// +// 1. "Preferred serialization MUST be used. In particular, this means that arguments +// (see Section 3) for integers, lengths in major types 2 through 5, and tags MUST +// be as short as possible" +// "Floating point values also MUST use the shortest form that preserves the value" +// 2. "Indefinite-length items MUST NOT appear." +// 3. "The keys in every map MUST be sorted in the bytewise lexicographic order of +// their deterministic encodings." +func CoreDetEncOptions() EncOptions { + return EncOptions{ + Sort: SortCoreDeterministic, + ShortestFloat: ShortestFloat16, + NaNConvert: NaNConvert7e00, + InfConvert: InfConvertFloat16, + IndefLength: IndefLengthForbidden, + } +} + +// PreferredUnsortedEncOptions returns EncOptions for "Preferred Serialization" encoding, +// defined in RFC 7049bis with the following rules: +// +// 1. "The preferred serialization always uses the shortest form of representing the argument +// (Section 3);" +// 2. "it also uses the shortest floating-point encoding that preserves the value being +// encoded (see Section 5.5)." +// "The preferred encoding for a floating-point value is the shortest floating-point encoding +// that preserves its value, e.g., 0xf94580 for the number 5.5, and 0xfa45ad9c00 for the +// number 5555.5, unless the CBOR-based protocol specifically excludes the use of the shorter +// floating-point encodings. For NaN values, a shorter encoding is preferred if zero-padding +// the shorter significand towards the right reconstitutes the original NaN value (for many +// applications, the single NaN encoding 0xf97e00 will suffice)." +// 3. "Definite length encoding is preferred whenever the length is known at the time the +// serialization of the item starts." +func PreferredUnsortedEncOptions() EncOptions { + return EncOptions{ + Sort: SortNone, + ShortestFloat: ShortestFloat16, + NaNConvert: NaNConvert7e00, + InfConvert: InfConvertFloat16, + } +} + +// EncMode returns EncMode with immutable options and no tags (safe for concurrency). +func (opts EncOptions) EncMode() (EncMode, error) { //nolint:gocritic // ignore hugeParam + return opts.encMode() +} + +// UserBufferEncMode returns UserBufferEncMode with immutable options and no tags (safe for concurrency). +func (opts EncOptions) UserBufferEncMode() (UserBufferEncMode, error) { //nolint:gocritic // ignore hugeParam + return opts.encMode() +} + +// EncModeWithTags returns EncMode with options and tags that are both immutable (safe for concurrency). +func (opts EncOptions) EncModeWithTags(tags TagSet) (EncMode, error) { //nolint:gocritic // ignore hugeParam + return opts.UserBufferEncModeWithTags(tags) +} + +// UserBufferEncModeWithTags returns UserBufferEncMode with options and tags that are both immutable (safe for concurrency). +func (opts EncOptions) UserBufferEncModeWithTags(tags TagSet) (UserBufferEncMode, error) { //nolint:gocritic // ignore hugeParam + if opts.TagsMd == TagsForbidden { + return nil, errors.New("cbor: cannot create EncMode with TagSet when TagsMd is TagsForbidden") + } + if tags == nil { + return nil, errors.New("cbor: cannot create EncMode with nil value as TagSet") + } + em, err := opts.encMode() + if err != nil { + return nil, err + } + // Copy tags + ts := tagSet(make(map[reflect.Type]*tagItem)) + syncTags := tags.(*syncTagSet) + syncTags.RLock() + for contentType, tag := range syncTags.t { + if tag.opts.EncTag != EncTagNone { + ts[contentType] = tag + } + } + syncTags.RUnlock() + if len(ts) > 0 { + em.tags = ts + } + return em, nil +} + +// EncModeWithSharedTags returns EncMode with immutable options and mutable shared tags (safe for concurrency). +func (opts EncOptions) EncModeWithSharedTags(tags TagSet) (EncMode, error) { //nolint:gocritic // ignore hugeParam + return opts.UserBufferEncModeWithSharedTags(tags) +} + +// UserBufferEncModeWithSharedTags returns UserBufferEncMode with immutable options and mutable shared tags (safe for concurrency). +func (opts EncOptions) UserBufferEncModeWithSharedTags(tags TagSet) (UserBufferEncMode, error) { //nolint:gocritic // ignore hugeParam + if opts.TagsMd == TagsForbidden { + return nil, errors.New("cbor: cannot create EncMode with TagSet when TagsMd is TagsForbidden") + } + if tags == nil { + return nil, errors.New("cbor: cannot create EncMode with nil value as TagSet") + } + em, err := opts.encMode() + if err != nil { + return nil, err + } + em.tags = tags + return em, nil +} + +func (opts EncOptions) encMode() (*encMode, error) { //nolint:gocritic // ignore hugeParam + if !opts.Sort.valid() { + return nil, errors.New("cbor: invalid SortMode " + strconv.Itoa(int(opts.Sort))) + } + if !opts.ShortestFloat.valid() { + return nil, errors.New("cbor: invalid ShortestFloatMode " + strconv.Itoa(int(opts.ShortestFloat))) + } + if !opts.NaNConvert.valid() { + return nil, errors.New("cbor: invalid NaNConvertMode " + strconv.Itoa(int(opts.NaNConvert))) + } + if !opts.InfConvert.valid() { + return nil, errors.New("cbor: invalid InfConvertMode " + strconv.Itoa(int(opts.InfConvert))) + } + if !opts.BigIntConvert.valid() { + return nil, errors.New("cbor: invalid BigIntConvertMode " + strconv.Itoa(int(opts.BigIntConvert))) + } + if !opts.Time.valid() { + return nil, errors.New("cbor: invalid TimeMode " + strconv.Itoa(int(opts.Time))) + } + if !opts.TimeTag.valid() { + return nil, errors.New("cbor: invalid TimeTag " + strconv.Itoa(int(opts.TimeTag))) + } + if !opts.IndefLength.valid() { + return nil, errors.New("cbor: invalid IndefLength " + strconv.Itoa(int(opts.IndefLength))) + } + if !opts.NilContainers.valid() { + return nil, errors.New("cbor: invalid NilContainers " + strconv.Itoa(int(opts.NilContainers))) + } + if !opts.TagsMd.valid() { + return nil, errors.New("cbor: invalid TagsMd " + strconv.Itoa(int(opts.TagsMd))) + } + if opts.TagsMd == TagsForbidden && opts.TimeTag == EncTagRequired { + return nil, errors.New("cbor: cannot set TagsMd to TagsForbidden when TimeTag is EncTagRequired") + } + if !opts.OmitEmpty.valid() { + return nil, errors.New("cbor: invalid OmitEmpty " + strconv.Itoa(int(opts.OmitEmpty))) + } + stringMajorType, err := opts.String.cborType() + if err != nil { + return nil, err + } + if !opts.FieldName.valid() { + return nil, errors.New("cbor: invalid FieldName " + strconv.Itoa(int(opts.FieldName))) + } + byteSliceLaterEncodingTag, err := opts.ByteSliceLaterFormat.encodingTag() + if err != nil { + return nil, err + } + if !opts.ByteArray.valid() { + return nil, errors.New("cbor: invalid ByteArray " + strconv.Itoa(int(opts.ByteArray))) + } + if !opts.BinaryMarshaler.valid() { + return nil, errors.New("cbor: invalid BinaryMarshaler " + strconv.Itoa(int(opts.BinaryMarshaler))) + } + em := encMode{ + sort: opts.Sort, + shortestFloat: opts.ShortestFloat, + nanConvert: opts.NaNConvert, + infConvert: opts.InfConvert, + bigIntConvert: opts.BigIntConvert, + time: opts.Time, + timeTag: opts.TimeTag, + indefLength: opts.IndefLength, + nilContainers: opts.NilContainers, + tagsMd: opts.TagsMd, + omitEmpty: opts.OmitEmpty, + stringType: opts.String, + stringMajorType: stringMajorType, + fieldName: opts.FieldName, + byteSliceLaterFormat: opts.ByteSliceLaterFormat, + byteSliceLaterEncodingTag: byteSliceLaterEncodingTag, + byteArray: opts.ByteArray, + binaryMarshaler: opts.BinaryMarshaler, + } + return &em, nil +} + +// EncMode is the main interface for CBOR encoding. +type EncMode interface { + Marshal(v interface{}) ([]byte, error) + NewEncoder(w io.Writer) *Encoder + EncOptions() EncOptions +} + +// UserBufferEncMode is an interface for CBOR encoding, which extends EncMode by +// adding MarshalToBuffer to support user specified buffer rather than encoding +// into the built-in buffer pool. +type UserBufferEncMode interface { + EncMode + MarshalToBuffer(v interface{}, buf *bytes.Buffer) error + + // This private method is to prevent users implementing + // this interface and so future additions to it will + // not be breaking changes. + // See https://go.dev/blog/module-compatibility + unexport() +} + +type encMode struct { + tags tagProvider + sort SortMode + shortestFloat ShortestFloatMode + nanConvert NaNConvertMode + infConvert InfConvertMode + bigIntConvert BigIntConvertMode + time TimeMode + timeTag EncTagMode + indefLength IndefLengthMode + nilContainers NilContainersMode + tagsMd TagsMode + omitEmpty OmitEmptyMode + stringType StringMode + stringMajorType cborType + fieldName FieldNameMode + byteSliceLaterFormat ByteSliceLaterFormatMode + byteSliceLaterEncodingTag uint64 + byteArray ByteArrayMode + binaryMarshaler BinaryMarshalerMode +} + +var defaultEncMode, _ = EncOptions{}.encMode() + +// These four decoding modes are used by getMarshalerDecMode. +// maxNestedLevels, maxArrayElements, and maxMapPairs are +// set to max allowed limits to avoid rejecting Marshaler +// output that would have been the allowable output of a +// non-Marshaler object that exceeds default limits. +var ( + marshalerForbidIndefLengthForbidTagsDecMode = decMode{ + maxNestedLevels: maxMaxNestedLevels, + maxArrayElements: maxMaxArrayElements, + maxMapPairs: maxMaxMapPairs, + indefLength: IndefLengthForbidden, + tagsMd: TagsForbidden, + } + + marshalerAllowIndefLengthForbidTagsDecMode = decMode{ + maxNestedLevels: maxMaxNestedLevels, + maxArrayElements: maxMaxArrayElements, + maxMapPairs: maxMaxMapPairs, + indefLength: IndefLengthAllowed, + tagsMd: TagsForbidden, + } + + marshalerForbidIndefLengthAllowTagsDecMode = decMode{ + maxNestedLevels: maxMaxNestedLevels, + maxArrayElements: maxMaxArrayElements, + maxMapPairs: maxMaxMapPairs, + indefLength: IndefLengthForbidden, + tagsMd: TagsAllowed, + } + + marshalerAllowIndefLengthAllowTagsDecMode = decMode{ + maxNestedLevels: maxMaxNestedLevels, + maxArrayElements: maxMaxArrayElements, + maxMapPairs: maxMaxMapPairs, + indefLength: IndefLengthAllowed, + tagsMd: TagsAllowed, + } +) + +// getMarshalerDecMode returns one of four existing decoding modes +// which can be reused (safe for parallel use) for the purpose of +// checking if data returned by Marshaler is well-formed. +func getMarshalerDecMode(indefLength IndefLengthMode, tagsMd TagsMode) *decMode { + switch { + case indefLength == IndefLengthAllowed && tagsMd == TagsAllowed: + return &marshalerAllowIndefLengthAllowTagsDecMode + + case indefLength == IndefLengthAllowed && tagsMd == TagsForbidden: + return &marshalerAllowIndefLengthForbidTagsDecMode + + case indefLength == IndefLengthForbidden && tagsMd == TagsAllowed: + return &marshalerForbidIndefLengthAllowTagsDecMode + + case indefLength == IndefLengthForbidden && tagsMd == TagsForbidden: + return &marshalerForbidIndefLengthForbidTagsDecMode + + default: + // This should never happen, unless we add new options to + // IndefLengthMode or TagsMode without updating this function. + return &decMode{ + maxNestedLevels: maxMaxNestedLevels, + maxArrayElements: maxMaxArrayElements, + maxMapPairs: maxMaxMapPairs, + indefLength: indefLength, + tagsMd: tagsMd, + } + } +} + +// EncOptions returns user specified options used to create this EncMode. +func (em *encMode) EncOptions() EncOptions { + return EncOptions{ + Sort: em.sort, + ShortestFloat: em.shortestFloat, + NaNConvert: em.nanConvert, + InfConvert: em.infConvert, + BigIntConvert: em.bigIntConvert, + Time: em.time, + TimeTag: em.timeTag, + IndefLength: em.indefLength, + NilContainers: em.nilContainers, + TagsMd: em.tagsMd, + OmitEmpty: em.omitEmpty, + String: em.stringType, + FieldName: em.fieldName, + ByteSliceLaterFormat: em.byteSliceLaterFormat, + ByteArray: em.byteArray, + BinaryMarshaler: em.binaryMarshaler, + } +} + +func (em *encMode) unexport() {} + +func (em *encMode) encTagBytes(t reflect.Type) []byte { + if em.tags != nil { + if tagItem := em.tags.getTagItemFromType(t); tagItem != nil { + return tagItem.cborTagNum + } + } + return nil +} + +// Marshal returns the CBOR encoding of v using em encoding mode. +// +// See the documentation for Marshal for details. +func (em *encMode) Marshal(v interface{}) ([]byte, error) { + e := getEncodeBuffer() + + if err := encode(e, em, reflect.ValueOf(v)); err != nil { + putEncodeBuffer(e) + return nil, err + } + + buf := make([]byte, e.Len()) + copy(buf, e.Bytes()) + + putEncodeBuffer(e) + return buf, nil +} + +// MarshalToBuffer encodes v into provided buffer (instead of using built-in buffer pool) +// and uses em encoding mode. +// +// NOTE: Unlike Marshal, the buffer provided to MarshalToBuffer can contain +// partially encoded data if error is returned. +// +// See Marshal for more details. +func (em *encMode) MarshalToBuffer(v interface{}, buf *bytes.Buffer) error { + if buf == nil { + return fmt.Errorf("cbor: encoding buffer provided by user is nil") + } + return encode(buf, em, reflect.ValueOf(v)) +} + +// NewEncoder returns a new encoder that writes to w using em EncMode. +func (em *encMode) NewEncoder(w io.Writer) *Encoder { + return &Encoder{w: w, em: em} +} + +// encodeBufferPool caches unused bytes.Buffer objects for later reuse. +var encodeBufferPool = sync.Pool{ + New: func() interface{} { + e := new(bytes.Buffer) + e.Grow(32) // TODO: make this configurable + return e + }, +} + +func getEncodeBuffer() *bytes.Buffer { + return encodeBufferPool.Get().(*bytes.Buffer) +} + +func putEncodeBuffer(e *bytes.Buffer) { + e.Reset() + encodeBufferPool.Put(e) +} + +type encodeFunc func(e *bytes.Buffer, em *encMode, v reflect.Value) error +type isEmptyFunc func(em *encMode, v reflect.Value) (empty bool, err error) + +func encode(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if !v.IsValid() { + // v is zero value + e.Write(cborNil) + return nil + } + vt := v.Type() + f, _ := getEncodeFunc(vt) + if f == nil { + return &UnsupportedTypeError{vt} + } + + return f(e, em, v) +} + +func encodeBool(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if b := em.encTagBytes(v.Type()); b != nil { + e.Write(b) + } + b := cborFalse + if v.Bool() { + b = cborTrue + } + e.Write(b) + return nil +} + +func encodeInt(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if b := em.encTagBytes(v.Type()); b != nil { + e.Write(b) + } + i := v.Int() + if i >= 0 { + encodeHead(e, byte(cborTypePositiveInt), uint64(i)) + return nil + } + i = i*(-1) - 1 + encodeHead(e, byte(cborTypeNegativeInt), uint64(i)) + return nil +} + +func encodeUint(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if b := em.encTagBytes(v.Type()); b != nil { + e.Write(b) + } + encodeHead(e, byte(cborTypePositiveInt), v.Uint()) + return nil +} + +func encodeFloat(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if b := em.encTagBytes(v.Type()); b != nil { + e.Write(b) + } + f64 := v.Float() + if math.IsNaN(f64) { + return encodeNaN(e, em, v) + } + if math.IsInf(f64, 0) { + return encodeInf(e, em, v) + } + fopt := em.shortestFloat + if v.Kind() == reflect.Float64 && (fopt == ShortestFloatNone || cannotFitFloat32(f64)) { + // Encode float64 + // Don't use encodeFloat64() because it cannot be inlined. + const argumentSize = 8 + const headSize = 1 + argumentSize + var scratch [headSize]byte + scratch[0] = byte(cborTypePrimitives) | byte(additionalInformationAsFloat64) + binary.BigEndian.PutUint64(scratch[1:], math.Float64bits(f64)) + e.Write(scratch[:]) + return nil + } + + f32 := float32(f64) + if fopt == ShortestFloat16 { + var f16 float16.Float16 + p := float16.PrecisionFromfloat32(f32) + if p == float16.PrecisionExact { + // Roundtrip float32->float16->float32 test isn't needed. + f16 = float16.Fromfloat32(f32) + } else if p == float16.PrecisionUnknown { + // Try roundtrip float32->float16->float32 to determine if float32 can fit into float16. + f16 = float16.Fromfloat32(f32) + if f16.Float32() == f32 { + p = float16.PrecisionExact + } + } + if p == float16.PrecisionExact { + // Encode float16 + // Don't use encodeFloat16() because it cannot be inlined. + const argumentSize = 2 + const headSize = 1 + argumentSize + var scratch [headSize]byte + scratch[0] = byte(cborTypePrimitives) | additionalInformationAsFloat16 + binary.BigEndian.PutUint16(scratch[1:], uint16(f16)) + e.Write(scratch[:]) + return nil + } + } + + // Encode float32 + // Don't use encodeFloat32() because it cannot be inlined. + const argumentSize = 4 + const headSize = 1 + argumentSize + var scratch [headSize]byte + scratch[0] = byte(cborTypePrimitives) | additionalInformationAsFloat32 + binary.BigEndian.PutUint32(scratch[1:], math.Float32bits(f32)) + e.Write(scratch[:]) + return nil +} + +func encodeInf(e *bytes.Buffer, em *encMode, v reflect.Value) error { + f64 := v.Float() + switch em.infConvert { + case InfConvertReject: + return &UnsupportedValueError{msg: "floating-point infinity"} + + case InfConvertFloat16: + if f64 > 0 { + e.Write(cborPositiveInfinity) + } else { + e.Write(cborNegativeInfinity) + } + return nil + } + if v.Kind() == reflect.Float64 { + return encodeFloat64(e, f64) + } + return encodeFloat32(e, float32(f64)) +} + +func encodeNaN(e *bytes.Buffer, em *encMode, v reflect.Value) error { + switch em.nanConvert { + case NaNConvert7e00: + e.Write(cborNaN) + return nil + + case NaNConvertNone: + if v.Kind() == reflect.Float64 { + return encodeFloat64(e, v.Float()) + } + f32 := float32NaNFromReflectValue(v) + return encodeFloat32(e, f32) + + case NaNConvertReject: + return &UnsupportedValueError{msg: "floating-point NaN"} + + default: // NaNConvertPreserveSignal, NaNConvertQuiet + if v.Kind() == reflect.Float64 { + f64 := v.Float() + f64bits := math.Float64bits(f64) + if em.nanConvert == NaNConvertQuiet && f64bits&(1<<51) == 0 { + f64bits |= 1 << 51 // Set quiet bit = 1 + f64 = math.Float64frombits(f64bits) + } + // The lower 29 bits are dropped when converting from float64 to float32. + if f64bits&0x1fffffff != 0 { + // Encode NaN as float64 because dropped coef bits from float64 to float32 are not all 0s. + return encodeFloat64(e, f64) + } + // Create float32 from float64 manually because float32(f64) always turns on NaN's quiet bits. + sign := uint32(f64bits>>32) & (1 << 31) + exp := uint32(0x7f800000) + coef := uint32((f64bits & 0xfffffffffffff) >> 29) + f32bits := sign | exp | coef + f32 := math.Float32frombits(f32bits) + // The lower 13 bits are dropped when converting from float32 to float16. + if f32bits&0x1fff != 0 { + // Encode NaN as float32 because dropped coef bits from float32 to float16 are not all 0s. + return encodeFloat32(e, f32) + } + // Encode NaN as float16 + f16, _ := float16.FromNaN32ps(f32) // Ignore err because it only returns error when f32 is not a NaN. + return encodeFloat16(e, f16) + } + + f32 := float32NaNFromReflectValue(v) + f32bits := math.Float32bits(f32) + if em.nanConvert == NaNConvertQuiet && f32bits&(1<<22) == 0 { + f32bits |= 1 << 22 // Set quiet bit = 1 + f32 = math.Float32frombits(f32bits) + } + // The lower 13 bits are dropped coef bits when converting from float32 to float16. + if f32bits&0x1fff != 0 { + // Encode NaN as float32 because dropped coef bits from float32 to float16 are not all 0s. + return encodeFloat32(e, f32) + } + f16, _ := float16.FromNaN32ps(f32) // Ignore err because it only returns error when f32 is not a NaN. + return encodeFloat16(e, f16) + } +} + +func encodeFloat16(e *bytes.Buffer, f16 float16.Float16) error { + const argumentSize = 2 + const headSize = 1 + argumentSize + var scratch [headSize]byte + scratch[0] = byte(cborTypePrimitives) | additionalInformationAsFloat16 + binary.BigEndian.PutUint16(scratch[1:], uint16(f16)) + e.Write(scratch[:]) + return nil +} + +func encodeFloat32(e *bytes.Buffer, f32 float32) error { + const argumentSize = 4 + const headSize = 1 + argumentSize + var scratch [headSize]byte + scratch[0] = byte(cborTypePrimitives) | additionalInformationAsFloat32 + binary.BigEndian.PutUint32(scratch[1:], math.Float32bits(f32)) + e.Write(scratch[:]) + return nil +} + +func encodeFloat64(e *bytes.Buffer, f64 float64) error { + const argumentSize = 8 + const headSize = 1 + argumentSize + var scratch [headSize]byte + scratch[0] = byte(cborTypePrimitives) | additionalInformationAsFloat64 + binary.BigEndian.PutUint64(scratch[1:], math.Float64bits(f64)) + e.Write(scratch[:]) + return nil +} + +func encodeByteString(e *bytes.Buffer, em *encMode, v reflect.Value) error { + vk := v.Kind() + if vk == reflect.Slice && v.IsNil() && em.nilContainers == NilContainerAsNull { + e.Write(cborNil) + return nil + } + if vk == reflect.Slice && v.Type().Elem().Kind() == reflect.Uint8 && em.byteSliceLaterEncodingTag != 0 { + encodeHead(e, byte(cborTypeTag), em.byteSliceLaterEncodingTag) + } + if b := em.encTagBytes(v.Type()); b != nil { + e.Write(b) + } + slen := v.Len() + if slen == 0 { + return e.WriteByte(byte(cborTypeByteString)) + } + encodeHead(e, byte(cborTypeByteString), uint64(slen)) + if vk == reflect.Array { + for i := 0; i < slen; i++ { + e.WriteByte(byte(v.Index(i).Uint())) + } + return nil + } + e.Write(v.Bytes()) + return nil +} + +func encodeString(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if b := em.encTagBytes(v.Type()); b != nil { + e.Write(b) + } + s := v.String() + encodeHead(e, byte(em.stringMajorType), uint64(len(s))) + e.WriteString(s) + return nil +} + +type arrayEncodeFunc struct { + f encodeFunc +} + +func (ae arrayEncodeFunc) encode(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if em.byteArray == ByteArrayToByteSlice && v.Type().Elem().Kind() == reflect.Uint8 { + return encodeByteString(e, em, v) + } + if v.Kind() == reflect.Slice && v.IsNil() && em.nilContainers == NilContainerAsNull { + e.Write(cborNil) + return nil + } + if b := em.encTagBytes(v.Type()); b != nil { + e.Write(b) + } + alen := v.Len() + if alen == 0 { + return e.WriteByte(byte(cborTypeArray)) + } + encodeHead(e, byte(cborTypeArray), uint64(alen)) + for i := 0; i < alen; i++ { + if err := ae.f(e, em, v.Index(i)); err != nil { + return err + } + } + return nil +} + +// encodeKeyValueFunc encodes key/value pairs in map (v). +// If kvs is provided (having the same length as v), length of encoded key and value are stored in kvs. +// kvs is used for canonical encoding of map. +type encodeKeyValueFunc func(e *bytes.Buffer, em *encMode, v reflect.Value, kvs []keyValue) error + +type mapEncodeFunc struct { + e encodeKeyValueFunc +} + +func (me mapEncodeFunc) encode(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if v.IsNil() && em.nilContainers == NilContainerAsNull { + e.Write(cborNil) + return nil + } + if b := em.encTagBytes(v.Type()); b != nil { + e.Write(b) + } + mlen := v.Len() + if mlen == 0 { + return e.WriteByte(byte(cborTypeMap)) + } + + encodeHead(e, byte(cborTypeMap), uint64(mlen)) + if em.sort == SortNone || em.sort == SortFastShuffle || mlen <= 1 { + return me.e(e, em, v, nil) + } + + kvsp := getKeyValues(v.Len()) // for sorting keys + defer putKeyValues(kvsp) + kvs := *kvsp + + kvBeginOffset := e.Len() + if err := me.e(e, em, v, kvs); err != nil { + return err + } + kvTotalLen := e.Len() - kvBeginOffset + + // Use the capacity at the tail of the encode buffer as a staging area to rearrange the + // encoded pairs into sorted order. + e.Grow(kvTotalLen) + tmp := e.Bytes()[e.Len() : e.Len()+kvTotalLen] // Can use e.AvailableBuffer() in Go 1.21+. + dst := e.Bytes()[kvBeginOffset:] + + if em.sort == SortBytewiseLexical { + sort.Sort(&bytewiseKeyValueSorter{kvs: kvs, data: dst}) + } else { + sort.Sort(&lengthFirstKeyValueSorter{kvs: kvs, data: dst}) + } + + // This is where the encoded bytes are actually rearranged in the output buffer to reflect + // the desired order. + sortedOffset := 0 + for _, kv := range kvs { + copy(tmp[sortedOffset:], dst[kv.offset:kv.nextOffset]) + sortedOffset += kv.nextOffset - kv.offset + } + copy(dst, tmp[:kvTotalLen]) + + return nil + +} + +// keyValue is the position of an encoded pair in a buffer. All offsets are zero-based and relative +// to the first byte of the first encoded pair. +type keyValue struct { + offset int + valueOffset int + nextOffset int +} + +type bytewiseKeyValueSorter struct { + kvs []keyValue + data []byte +} + +func (x *bytewiseKeyValueSorter) Len() int { + return len(x.kvs) +} + +func (x *bytewiseKeyValueSorter) Swap(i, j int) { + x.kvs[i], x.kvs[j] = x.kvs[j], x.kvs[i] +} + +func (x *bytewiseKeyValueSorter) Less(i, j int) bool { + kvi, kvj := x.kvs[i], x.kvs[j] + return bytes.Compare(x.data[kvi.offset:kvi.valueOffset], x.data[kvj.offset:kvj.valueOffset]) <= 0 +} + +type lengthFirstKeyValueSorter struct { + kvs []keyValue + data []byte +} + +func (x *lengthFirstKeyValueSorter) Len() int { + return len(x.kvs) +} + +func (x *lengthFirstKeyValueSorter) Swap(i, j int) { + x.kvs[i], x.kvs[j] = x.kvs[j], x.kvs[i] +} + +func (x *lengthFirstKeyValueSorter) Less(i, j int) bool { + kvi, kvj := x.kvs[i], x.kvs[j] + if keyLengthDifference := (kvi.valueOffset - kvi.offset) - (kvj.valueOffset - kvj.offset); keyLengthDifference != 0 { + return keyLengthDifference < 0 + } + return bytes.Compare(x.data[kvi.offset:kvi.valueOffset], x.data[kvj.offset:kvj.valueOffset]) <= 0 +} + +var keyValuePool = sync.Pool{} + +func getKeyValues(length int) *[]keyValue { + v := keyValuePool.Get() + if v == nil { + y := make([]keyValue, length) + return &y + } + x := v.(*[]keyValue) + if cap(*x) >= length { + *x = (*x)[:length] + return x + } + // []keyValue from the pool does not have enough capacity. + // Return it back to the pool and create a new one. + keyValuePool.Put(x) + y := make([]keyValue, length) + return &y +} + +func putKeyValues(x *[]keyValue) { + *x = (*x)[:0] + keyValuePool.Put(x) +} + +func encodeStructToArray(e *bytes.Buffer, em *encMode, v reflect.Value) (err error) { + structType, err := getEncodingStructType(v.Type()) + if err != nil { + return err + } + + if b := em.encTagBytes(v.Type()); b != nil { + e.Write(b) + } + + flds := structType.fields + + encodeHead(e, byte(cborTypeArray), uint64(len(flds))) + for i := 0; i < len(flds); i++ { + f := flds[i] + + var fv reflect.Value + if len(f.idx) == 1 { + fv = v.Field(f.idx[0]) + } else { + // Get embedded field value. No error is expected. + fv, _ = getFieldValue(v, f.idx, func(reflect.Value) (reflect.Value, error) { + // Write CBOR nil for null pointer to embedded struct + e.Write(cborNil) + return reflect.Value{}, nil + }) + if !fv.IsValid() { + continue + } + } + + if err := f.ef(e, em, fv); err != nil { + return err + } + } + return nil +} + +func encodeStruct(e *bytes.Buffer, em *encMode, v reflect.Value) (err error) { + structType, err := getEncodingStructType(v.Type()) + if err != nil { + return err + } + + flds := structType.getFields(em) + + start := 0 + if em.sort == SortFastShuffle && len(flds) > 0 { + start = rand.Intn(len(flds)) //nolint:gosec // Don't need a CSPRNG for deck cutting. + } + + if b := em.encTagBytes(v.Type()); b != nil { + e.Write(b) + } + + // Encode head with struct field count. + // Head is rewritten later if actual encoded field count is different from struct field count. + encodedHeadLen := encodeHead(e, byte(cborTypeMap), uint64(len(flds))) + + kvbegin := e.Len() + kvcount := 0 + for offset := 0; offset < len(flds); offset++ { + f := flds[(start+offset)%len(flds)] + + var fv reflect.Value + if len(f.idx) == 1 { + fv = v.Field(f.idx[0]) + } else { + // Get embedded field value. No error is expected. + fv, _ = getFieldValue(v, f.idx, func(reflect.Value) (reflect.Value, error) { + // Skip null pointer to embedded struct + return reflect.Value{}, nil + }) + if !fv.IsValid() { + continue + } + } + if f.omitEmpty { + empty, err := f.ief(em, fv) + if err != nil { + return err + } + if empty { + continue + } + } + + if !f.keyAsInt && em.fieldName == FieldNameToByteString { + e.Write(f.cborNameByteString) + } else { // int or text string + e.Write(f.cborName) + } + + if err := f.ef(e, em, fv); err != nil { + return err + } + + kvcount++ + } + + if len(flds) == kvcount { + // Encoded element count in head is the same as actual element count. + return nil + } + + // Overwrite the bytes that were reserved for the head before encoding the map entries. + var actualHeadLen int + { + headbuf := *bytes.NewBuffer(e.Bytes()[kvbegin-encodedHeadLen : kvbegin-encodedHeadLen : kvbegin]) + actualHeadLen = encodeHead(&headbuf, byte(cborTypeMap), uint64(kvcount)) + } + + if actualHeadLen == encodedHeadLen { + // The bytes reserved for the encoded head were exactly the right size, so the + // encoded entries are already in their final positions. + return nil + } + + // We reserved more bytes than needed for the encoded head, based on the number of fields + // encoded. The encoded entries are offset to the right by the number of excess reserved + // bytes. Shift the entries left to remove the gap. + excessReservedBytes := encodedHeadLen - actualHeadLen + dst := e.Bytes()[kvbegin-excessReservedBytes : e.Len()-excessReservedBytes] + src := e.Bytes()[kvbegin:e.Len()] + copy(dst, src) + + // After shifting, the excess bytes are at the end of the output buffer and they are + // garbage. + e.Truncate(e.Len() - excessReservedBytes) + return nil +} + +func encodeIntf(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if v.IsNil() { + e.Write(cborNil) + return nil + } + return encode(e, em, v.Elem()) +} + +func encodeTime(e *bytes.Buffer, em *encMode, v reflect.Value) error { + t := v.Interface().(time.Time) + if t.IsZero() { + e.Write(cborNil) // Even if tag is required, encode as CBOR null. + return nil + } + if em.timeTag == EncTagRequired { + tagNumber := 1 + if em.time == TimeRFC3339 || em.time == TimeRFC3339Nano { + tagNumber = 0 + } + encodeHead(e, byte(cborTypeTag), uint64(tagNumber)) + } + switch em.time { + case TimeUnix: + secs := t.Unix() + return encodeInt(e, em, reflect.ValueOf(secs)) + + case TimeUnixMicro: + t = t.UTC().Round(time.Microsecond) + f := float64(t.UnixNano()) / 1e9 + return encodeFloat(e, em, reflect.ValueOf(f)) + + case TimeUnixDynamic: + t = t.UTC().Round(time.Microsecond) + secs, nsecs := t.Unix(), uint64(t.Nanosecond()) + if nsecs == 0 { + return encodeInt(e, em, reflect.ValueOf(secs)) + } + f := float64(secs) + float64(nsecs)/1e9 + return encodeFloat(e, em, reflect.ValueOf(f)) + + case TimeRFC3339: + s := t.Format(time.RFC3339) + return encodeString(e, em, reflect.ValueOf(s)) + + default: // TimeRFC3339Nano + s := t.Format(time.RFC3339Nano) + return encodeString(e, em, reflect.ValueOf(s)) + } +} + +func encodeBigInt(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if em.bigIntConvert == BigIntConvertReject { + return &UnsupportedTypeError{Type: typeBigInt} + } + + vbi := v.Interface().(big.Int) + sign := vbi.Sign() + bi := new(big.Int).SetBytes(vbi.Bytes()) // bi is absolute value of v + if sign < 0 { + // For negative number, convert to CBOR encoded number (-v-1). + bi.Sub(bi, big.NewInt(1)) + } + + if em.bigIntConvert == BigIntConvertShortest { + if bi.IsUint64() { + if sign >= 0 { + // Encode as CBOR pos int (major type 0) + encodeHead(e, byte(cborTypePositiveInt), bi.Uint64()) + return nil + } + // Encode as CBOR neg int (major type 1) + encodeHead(e, byte(cborTypeNegativeInt), bi.Uint64()) + return nil + } + } + + tagNum := 2 + if sign < 0 { + tagNum = 3 + } + // Write tag number + encodeHead(e, byte(cborTypeTag), uint64(tagNum)) + // Write bignum byte string + b := bi.Bytes() + encodeHead(e, byte(cborTypeByteString), uint64(len(b))) + e.Write(b) + return nil +} + +type binaryMarshalerEncoder struct { + alternateEncode encodeFunc + alternateIsEmpty isEmptyFunc +} + +func (bme binaryMarshalerEncoder) encode(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if em.binaryMarshaler != BinaryMarshalerByteString { + return bme.alternateEncode(e, em, v) + } + + vt := v.Type() + m, ok := v.Interface().(encoding.BinaryMarshaler) + if !ok { + pv := reflect.New(vt) + pv.Elem().Set(v) + m = pv.Interface().(encoding.BinaryMarshaler) + } + data, err := m.MarshalBinary() + if err != nil { + return err + } + if b := em.encTagBytes(vt); b != nil { + e.Write(b) + } + encodeHead(e, byte(cborTypeByteString), uint64(len(data))) + e.Write(data) + return nil +} + +func (bme binaryMarshalerEncoder) isEmpty(em *encMode, v reflect.Value) (bool, error) { + if em.binaryMarshaler != BinaryMarshalerByteString { + return bme.alternateIsEmpty(em, v) + } + + m, ok := v.Interface().(encoding.BinaryMarshaler) + if !ok { + pv := reflect.New(v.Type()) + pv.Elem().Set(v) + m = pv.Interface().(encoding.BinaryMarshaler) + } + data, err := m.MarshalBinary() + if err != nil { + return false, err + } + return len(data) == 0, nil +} + +func encodeMarshalerType(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if em.tagsMd == TagsForbidden && v.Type() == typeRawTag { + return errors.New("cbor: cannot encode cbor.RawTag when TagsMd is TagsForbidden") + } + m, ok := v.Interface().(Marshaler) + if !ok { + pv := reflect.New(v.Type()) + pv.Elem().Set(v) + m = pv.Interface().(Marshaler) + } + data, err := m.MarshalCBOR() + if err != nil { + return err + } + + // Verify returned CBOR data item from MarshalCBOR() is well-formed and passes tag validity for builtin tags 0-3. + d := decoder{data: data, dm: getMarshalerDecMode(em.indefLength, em.tagsMd)} + err = d.wellformed(false, true) + if err != nil { + return &MarshalerError{typ: v.Type(), err: err} + } + + e.Write(data) + return nil +} + +func encodeTag(e *bytes.Buffer, em *encMode, v reflect.Value) error { + if em.tagsMd == TagsForbidden { + return errors.New("cbor: cannot encode cbor.Tag when TagsMd is TagsForbidden") + } + + t := v.Interface().(Tag) + + if t.Number == 0 && t.Content == nil { + // Marshal uninitialized cbor.Tag + e.Write(cborNil) + return nil + } + + // Marshal tag number + encodeHead(e, byte(cborTypeTag), t.Number) + + vem := *em // shallow copy + + // For built-in tags, disable settings that may introduce tag validity errors when + // marshaling certain Content values. + switch t.Number { + case tagNumRFC3339Time: + vem.stringType = StringToTextString + vem.stringMajorType = cborTypeTextString + case tagNumUnsignedBignum, tagNumNegativeBignum: + vem.byteSliceLaterFormat = ByteSliceLaterFormatNone + vem.byteSliceLaterEncodingTag = 0 + } + + // Marshal tag content + return encode(e, &vem, reflect.ValueOf(t.Content)) +} + +// encodeHead writes CBOR head of specified type t and returns number of bytes written. +func encodeHead(e *bytes.Buffer, t byte, n uint64) int { + if n <= maxAdditionalInformationWithoutArgument { + const headSize = 1 + e.WriteByte(t | byte(n)) + return headSize + } + + if n <= math.MaxUint8 { + const headSize = 2 + scratch := [headSize]byte{ + t | byte(additionalInformationWith1ByteArgument), + byte(n), + } + e.Write(scratch[:]) + return headSize + } + + if n <= math.MaxUint16 { + const headSize = 3 + var scratch [headSize]byte + scratch[0] = t | byte(additionalInformationWith2ByteArgument) + binary.BigEndian.PutUint16(scratch[1:], uint16(n)) + e.Write(scratch[:]) + return headSize + } + + if n <= math.MaxUint32 { + const headSize = 5 + var scratch [headSize]byte + scratch[0] = t | byte(additionalInformationWith4ByteArgument) + binary.BigEndian.PutUint32(scratch[1:], uint32(n)) + e.Write(scratch[:]) + return headSize + } + + const headSize = 9 + var scratch [headSize]byte + scratch[0] = t | byte(additionalInformationWith8ByteArgument) + binary.BigEndian.PutUint64(scratch[1:], n) + e.Write(scratch[:]) + return headSize +} + +var ( + typeMarshaler = reflect.TypeOf((*Marshaler)(nil)).Elem() + typeBinaryMarshaler = reflect.TypeOf((*encoding.BinaryMarshaler)(nil)).Elem() + typeRawMessage = reflect.TypeOf(RawMessage(nil)) + typeByteString = reflect.TypeOf(ByteString("")) +) + +func getEncodeFuncInternal(t reflect.Type) (ef encodeFunc, ief isEmptyFunc) { + k := t.Kind() + if k == reflect.Ptr { + return getEncodeIndirectValueFunc(t), isEmptyPtr + } + switch t { + case typeSimpleValue: + return encodeMarshalerType, isEmptyUint + + case typeTag: + return encodeTag, alwaysNotEmpty + + case typeTime: + return encodeTime, alwaysNotEmpty + + case typeBigInt: + return encodeBigInt, alwaysNotEmpty + + case typeRawMessage: + return encodeMarshalerType, isEmptySlice + + case typeByteString: + return encodeMarshalerType, isEmptyString + } + if reflect.PtrTo(t).Implements(typeMarshaler) { + return encodeMarshalerType, alwaysNotEmpty + } + if reflect.PtrTo(t).Implements(typeBinaryMarshaler) { + defer func() { + // capture encoding method used for modes that disable BinaryMarshaler + bme := binaryMarshalerEncoder{ + alternateEncode: ef, + alternateIsEmpty: ief, + } + ef = bme.encode + ief = bme.isEmpty + }() + } + switch k { + case reflect.Bool: + return encodeBool, isEmptyBool + + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return encodeInt, isEmptyInt + + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return encodeUint, isEmptyUint + + case reflect.Float32, reflect.Float64: + return encodeFloat, isEmptyFloat + + case reflect.String: + return encodeString, isEmptyString + + case reflect.Slice: + if t.Elem().Kind() == reflect.Uint8 { + return encodeByteString, isEmptySlice + } + fallthrough + + case reflect.Array: + f, _ := getEncodeFunc(t.Elem()) + if f == nil { + return nil, nil + } + return arrayEncodeFunc{f: f}.encode, isEmptySlice + + case reflect.Map: + f := getEncodeMapFunc(t) + if f == nil { + return nil, nil + } + return f, isEmptyMap + + case reflect.Struct: + // Get struct's special field "_" tag options + if f, ok := t.FieldByName("_"); ok { + tag := f.Tag.Get("cbor") + if tag != "-" { + if hasToArrayOption(tag) { + return encodeStructToArray, isEmptyStruct + } + } + } + return encodeStruct, isEmptyStruct + + case reflect.Interface: + return encodeIntf, isEmptyIntf + } + return nil, nil +} + +func getEncodeIndirectValueFunc(t reflect.Type) encodeFunc { + for t.Kind() == reflect.Ptr { + t = t.Elem() + } + f, _ := getEncodeFunc(t) + if f == nil { + return nil + } + return func(e *bytes.Buffer, em *encMode, v reflect.Value) error { + for v.Kind() == reflect.Ptr && !v.IsNil() { + v = v.Elem() + } + if v.Kind() == reflect.Ptr && v.IsNil() { + e.Write(cborNil) + return nil + } + return f(e, em, v) + } +} + +func alwaysNotEmpty(_ *encMode, _ reflect.Value) (empty bool, err error) { + return false, nil +} + +func isEmptyBool(_ *encMode, v reflect.Value) (bool, error) { + return !v.Bool(), nil +} + +func isEmptyInt(_ *encMode, v reflect.Value) (bool, error) { + return v.Int() == 0, nil +} + +func isEmptyUint(_ *encMode, v reflect.Value) (bool, error) { + return v.Uint() == 0, nil +} + +func isEmptyFloat(_ *encMode, v reflect.Value) (bool, error) { + return v.Float() == 0.0, nil +} + +func isEmptyString(_ *encMode, v reflect.Value) (bool, error) { + return v.Len() == 0, nil +} + +func isEmptySlice(_ *encMode, v reflect.Value) (bool, error) { + return v.Len() == 0, nil +} + +func isEmptyMap(_ *encMode, v reflect.Value) (bool, error) { + return v.Len() == 0, nil +} + +func isEmptyPtr(_ *encMode, v reflect.Value) (bool, error) { + return v.IsNil(), nil +} + +func isEmptyIntf(_ *encMode, v reflect.Value) (bool, error) { + return v.IsNil(), nil +} + +func isEmptyStruct(em *encMode, v reflect.Value) (bool, error) { + structType, err := getEncodingStructType(v.Type()) + if err != nil { + return false, err + } + + if em.omitEmpty == OmitEmptyGoValue { + return false, nil + } + + if structType.toArray { + return len(structType.fields) == 0, nil + } + + if len(structType.fields) > len(structType.omitEmptyFieldsIdx) { + return false, nil + } + + for _, i := range structType.omitEmptyFieldsIdx { + f := structType.fields[i] + + // Get field value + var fv reflect.Value + if len(f.idx) == 1 { + fv = v.Field(f.idx[0]) + } else { + // Get embedded field value. No error is expected. + fv, _ = getFieldValue(v, f.idx, func(reflect.Value) (reflect.Value, error) { + // Skip null pointer to embedded struct + return reflect.Value{}, nil + }) + if !fv.IsValid() { + continue + } + } + + empty, err := f.ief(em, fv) + if err != nil { + return false, err + } + if !empty { + return false, nil + } + } + return true, nil +} + +func cannotFitFloat32(f64 float64) bool { + f32 := float32(f64) + return float64(f32) != f64 +} + +// float32NaNFromReflectValue extracts float32 NaN from reflect.Value while preserving NaN's quiet bit. +func float32NaNFromReflectValue(v reflect.Value) float32 { + // Keith Randall's workaround for issue https://github.com/golang/go/issues/36400 + p := reflect.New(v.Type()) + p.Elem().Set(v) + f32 := p.Convert(reflect.TypeOf((*float32)(nil))).Elem().Interface().(float32) + return f32 +} diff --git a/vendor/github.com/fxamacker/cbor/v2/encode_map.go b/vendor/github.com/fxamacker/cbor/v2/encode_map.go new file mode 100644 index 000000000000..8b4b4bbc59fb --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/encode_map.go @@ -0,0 +1,94 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +//go:build go1.20 + +package cbor + +import ( + "bytes" + "reflect" + "sync" +) + +type mapKeyValueEncodeFunc struct { + kf, ef encodeFunc + kpool, vpool sync.Pool +} + +func (me *mapKeyValueEncodeFunc) encodeKeyValues(e *bytes.Buffer, em *encMode, v reflect.Value, kvs []keyValue) error { + iterk := me.kpool.Get().(*reflect.Value) + defer func() { + iterk.SetZero() + me.kpool.Put(iterk) + }() + iterv := me.vpool.Get().(*reflect.Value) + defer func() { + iterv.SetZero() + me.vpool.Put(iterv) + }() + + if kvs == nil { + for i, iter := 0, v.MapRange(); iter.Next(); i++ { + iterk.SetIterKey(iter) + iterv.SetIterValue(iter) + + if err := me.kf(e, em, *iterk); err != nil { + return err + } + if err := me.ef(e, em, *iterv); err != nil { + return err + } + } + return nil + } + + initial := e.Len() + for i, iter := 0, v.MapRange(); iter.Next(); i++ { + iterk.SetIterKey(iter) + iterv.SetIterValue(iter) + + offset := e.Len() + if err := me.kf(e, em, *iterk); err != nil { + return err + } + valueOffset := e.Len() + if err := me.ef(e, em, *iterv); err != nil { + return err + } + kvs[i] = keyValue{ + offset: offset - initial, + valueOffset: valueOffset - initial, + nextOffset: e.Len() - initial, + } + } + + return nil +} + +func getEncodeMapFunc(t reflect.Type) encodeFunc { + kf, _ := getEncodeFunc(t.Key()) + ef, _ := getEncodeFunc(t.Elem()) + if kf == nil || ef == nil { + return nil + } + mkv := &mapKeyValueEncodeFunc{ + kf: kf, + ef: ef, + kpool: sync.Pool{ + New: func() interface{} { + rk := reflect.New(t.Key()).Elem() + return &rk + }, + }, + vpool: sync.Pool{ + New: func() interface{} { + rv := reflect.New(t.Elem()).Elem() + return &rv + }, + }, + } + return mapEncodeFunc{ + e: mkv.encodeKeyValues, + }.encode +} diff --git a/vendor/github.com/fxamacker/cbor/v2/encode_map_go117.go b/vendor/github.com/fxamacker/cbor/v2/encode_map_go117.go new file mode 100644 index 000000000000..31c39336ddfc --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/encode_map_go117.go @@ -0,0 +1,60 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +//go:build !go1.20 + +package cbor + +import ( + "bytes" + "reflect" +) + +type mapKeyValueEncodeFunc struct { + kf, ef encodeFunc +} + +func (me *mapKeyValueEncodeFunc) encodeKeyValues(e *bytes.Buffer, em *encMode, v reflect.Value, kvs []keyValue) error { + if kvs == nil { + for i, iter := 0, v.MapRange(); iter.Next(); i++ { + if err := me.kf(e, em, iter.Key()); err != nil { + return err + } + if err := me.ef(e, em, iter.Value()); err != nil { + return err + } + } + return nil + } + + initial := e.Len() + for i, iter := 0, v.MapRange(); iter.Next(); i++ { + offset := e.Len() + if err := me.kf(e, em, iter.Key()); err != nil { + return err + } + valueOffset := e.Len() + if err := me.ef(e, em, iter.Value()); err != nil { + return err + } + kvs[i] = keyValue{ + offset: offset - initial, + valueOffset: valueOffset - initial, + nextOffset: e.Len() - initial, + } + } + + return nil +} + +func getEncodeMapFunc(t reflect.Type) encodeFunc { + kf, _ := getEncodeFunc(t.Key()) + ef, _ := getEncodeFunc(t.Elem()) + if kf == nil || ef == nil { + return nil + } + mkv := &mapKeyValueEncodeFunc{kf: kf, ef: ef} + return mapEncodeFunc{ + e: mkv.encodeKeyValues, + }.encode +} diff --git a/vendor/github.com/fxamacker/cbor/v2/simplevalue.go b/vendor/github.com/fxamacker/cbor/v2/simplevalue.go new file mode 100644 index 000000000000..de175cee4add --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/simplevalue.go @@ -0,0 +1,69 @@ +package cbor + +import ( + "errors" + "fmt" + "reflect" +) + +// SimpleValue represents CBOR simple value. +// CBOR simple value is: +// - an extension point like CBOR tag. +// - a subset of CBOR major type 7 that isn't floating-point. +// - "identified by a number between 0 and 255, but distinct from that number itself". +// For example, "a simple value 2 is not equivalent to an integer 2" as a CBOR map key. +// +// CBOR simple values identified by 20..23 are: "false", "true" , "null", and "undefined". +// Other CBOR simple values are currently unassigned/reserved by IANA. +type SimpleValue uint8 + +var ( + typeSimpleValue = reflect.TypeOf(SimpleValue(0)) +) + +// MarshalCBOR encodes SimpleValue as CBOR simple value (major type 7). +func (sv SimpleValue) MarshalCBOR() ([]byte, error) { + // RFC 8949 3.3. Floating-Point Numbers and Values with No Content says: + // "An encoder MUST NOT issue two-byte sequences that start with 0xf8 + // (major type 7, additional information 24) and continue with a byte + // less than 0x20 (32 decimal). Such sequences are not well-formed. + // (This implies that an encoder cannot encode false, true, null, or + // undefined in two-byte sequences and that only the one-byte variants + // of these are well-formed; more generally speaking, each simple value + // only has a single representation variant)." + + switch { + case sv <= maxSimpleValueInAdditionalInformation: + return []byte{byte(cborTypePrimitives) | byte(sv)}, nil + + case sv >= minSimpleValueIn1ByteArgument: + return []byte{byte(cborTypePrimitives) | additionalInformationWith1ByteArgument, byte(sv)}, nil + + default: + return nil, &UnsupportedValueError{msg: fmt.Sprintf("SimpleValue(%d)", sv)} + } +} + +// UnmarshalCBOR decodes CBOR simple value (major type 7) to SimpleValue. +func (sv *SimpleValue) UnmarshalCBOR(data []byte) error { + if sv == nil { + return errors.New("cbor.SimpleValue: UnmarshalCBOR on nil pointer") + } + + d := decoder{data: data, dm: defaultDecMode} + + typ, ai, val := d.getHead() + + if typ != cborTypePrimitives { + return &UnmarshalTypeError{CBORType: typ.String(), GoType: "SimpleValue"} + } + if ai > additionalInformationWith1ByteArgument { + return &UnmarshalTypeError{CBORType: typ.String(), GoType: "SimpleValue", errorMsg: "not simple values"} + } + + // It is safe to cast val to uint8 here because + // - data is already verified to be well-formed CBOR simple value and + // - val is <= math.MaxUint8. + *sv = SimpleValue(val) + return nil +} diff --git a/vendor/github.com/fxamacker/cbor/v2/stream.go b/vendor/github.com/fxamacker/cbor/v2/stream.go new file mode 100644 index 000000000000..507ab6c18494 --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/stream.go @@ -0,0 +1,277 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +package cbor + +import ( + "bytes" + "errors" + "io" + "reflect" +) + +// Decoder reads and decodes CBOR values from io.Reader. +type Decoder struct { + r io.Reader + d decoder + buf []byte + off int // next read offset in buf + bytesRead int +} + +// NewDecoder returns a new decoder that reads and decodes from r using +// the default decoding options. +func NewDecoder(r io.Reader) *Decoder { + return defaultDecMode.NewDecoder(r) +} + +// Decode reads CBOR value and decodes it into the value pointed to by v. +func (dec *Decoder) Decode(v interface{}) error { + _, err := dec.readNext() + if err != nil { + // Return validation error or read error. + return err + } + + dec.d.reset(dec.buf[dec.off:]) + err = dec.d.value(v) + + // Increment dec.off even if decoding err is not nil because + // dec.d.off points to the next CBOR data item if current + // CBOR data item is valid but failed to be decoded into v. + // This allows next CBOR data item to be decoded in next + // call to this function. + dec.off += dec.d.off + dec.bytesRead += dec.d.off + + return err +} + +// Skip skips to the next CBOR data item (if there is any), +// otherwise it returns error such as io.EOF, io.UnexpectedEOF, etc. +func (dec *Decoder) Skip() error { + n, err := dec.readNext() + if err != nil { + // Return validation error or read error. + return err + } + + dec.off += n + dec.bytesRead += n + return nil +} + +// NumBytesRead returns the number of bytes read. +func (dec *Decoder) NumBytesRead() int { + return dec.bytesRead +} + +// Buffered returns a reader for data remaining in Decoder's buffer. +// Returned reader is valid until the next call to Decode or Skip. +func (dec *Decoder) Buffered() io.Reader { + return bytes.NewReader(dec.buf[dec.off:]) +} + +// readNext() reads next CBOR data item from Reader to buffer. +// It returns the size of next CBOR data item. +// It also returns validation error or read error if any. +func (dec *Decoder) readNext() (int, error) { + var readErr error + var validErr error + + for { + // Process any unread data in dec.buf. + if dec.off < len(dec.buf) { + dec.d.reset(dec.buf[dec.off:]) + off := dec.off // Save offset before data validation + validErr = dec.d.wellformed(true, false) + dec.off = off // Restore offset + + if validErr == nil { + return dec.d.off, nil + } + + if validErr != io.ErrUnexpectedEOF { + return 0, validErr + } + + // Process last read error on io.ErrUnexpectedEOF. + if readErr != nil { + if readErr == io.EOF { + // current CBOR data item is incomplete. + return 0, io.ErrUnexpectedEOF + } + return 0, readErr + } + } + + // More data is needed and there was no read error. + var n int + for n == 0 { + n, readErr = dec.read() + if n == 0 && readErr != nil { + // No more data can be read and read error is encountered. + // At this point, validErr is either nil or io.ErrUnexpectedEOF. + if readErr == io.EOF { + if validErr == io.ErrUnexpectedEOF { + // current CBOR data item is incomplete. + return 0, io.ErrUnexpectedEOF + } + } + return 0, readErr + } + } + + // At this point, dec.buf contains new data from last read (n > 0). + } +} + +// read() reads data from Reader to buffer. +// It returns number of bytes read and any read error encountered. +// Postconditions: +// - dec.buf contains previously unread data and new data. +// - dec.off is 0. +func (dec *Decoder) read() (int, error) { + // Grow buf if needed. + const minRead = 512 + if cap(dec.buf)-len(dec.buf)+dec.off < minRead { + oldUnreadBuf := dec.buf[dec.off:] + dec.buf = make([]byte, len(dec.buf)-dec.off, 2*cap(dec.buf)+minRead) + dec.overwriteBuf(oldUnreadBuf) + } + + // Copy unread data over read data and reset off to 0. + if dec.off > 0 { + dec.overwriteBuf(dec.buf[dec.off:]) + } + + // Read from reader and reslice buf. + n, err := dec.r.Read(dec.buf[len(dec.buf):cap(dec.buf)]) + dec.buf = dec.buf[0 : len(dec.buf)+n] + return n, err +} + +func (dec *Decoder) overwriteBuf(newBuf []byte) { + n := copy(dec.buf, newBuf) + dec.buf = dec.buf[:n] + dec.off = 0 +} + +// Encoder writes CBOR values to io.Writer. +type Encoder struct { + w io.Writer + em *encMode + indefTypes []cborType +} + +// NewEncoder returns a new encoder that writes to w using the default encoding options. +func NewEncoder(w io.Writer) *Encoder { + return defaultEncMode.NewEncoder(w) +} + +// Encode writes the CBOR encoding of v. +func (enc *Encoder) Encode(v interface{}) error { + if len(enc.indefTypes) > 0 && v != nil { + indefType := enc.indefTypes[len(enc.indefTypes)-1] + if indefType == cborTypeTextString { + k := reflect.TypeOf(v).Kind() + if k != reflect.String { + return errors.New("cbor: cannot encode item type " + k.String() + " for indefinite-length text string") + } + } else if indefType == cborTypeByteString { + t := reflect.TypeOf(v) + k := t.Kind() + if (k != reflect.Array && k != reflect.Slice) || t.Elem().Kind() != reflect.Uint8 { + return errors.New("cbor: cannot encode item type " + k.String() + " for indefinite-length byte string") + } + } + } + + buf := getEncodeBuffer() + + err := encode(buf, enc.em, reflect.ValueOf(v)) + if err == nil { + _, err = enc.w.Write(buf.Bytes()) + } + + putEncodeBuffer(buf) + return err +} + +// StartIndefiniteByteString starts byte string encoding of indefinite length. +// Subsequent calls of (*Encoder).Encode() encodes definite length byte strings +// ("chunks") as one contiguous string until EndIndefinite is called. +func (enc *Encoder) StartIndefiniteByteString() error { + return enc.startIndefinite(cborTypeByteString) +} + +// StartIndefiniteTextString starts text string encoding of indefinite length. +// Subsequent calls of (*Encoder).Encode() encodes definite length text strings +// ("chunks") as one contiguous string until EndIndefinite is called. +func (enc *Encoder) StartIndefiniteTextString() error { + return enc.startIndefinite(cborTypeTextString) +} + +// StartIndefiniteArray starts array encoding of indefinite length. +// Subsequent calls of (*Encoder).Encode() encodes elements of the array +// until EndIndefinite is called. +func (enc *Encoder) StartIndefiniteArray() error { + return enc.startIndefinite(cborTypeArray) +} + +// StartIndefiniteMap starts array encoding of indefinite length. +// Subsequent calls of (*Encoder).Encode() encodes elements of the map +// until EndIndefinite is called. +func (enc *Encoder) StartIndefiniteMap() error { + return enc.startIndefinite(cborTypeMap) +} + +// EndIndefinite closes last opened indefinite length value. +func (enc *Encoder) EndIndefinite() error { + if len(enc.indefTypes) == 0 { + return errors.New("cbor: cannot encode \"break\" code outside indefinite length values") + } + _, err := enc.w.Write([]byte{cborBreakFlag}) + if err == nil { + enc.indefTypes = enc.indefTypes[:len(enc.indefTypes)-1] + } + return err +} + +var cborIndefHeader = map[cborType][]byte{ + cborTypeByteString: {cborByteStringWithIndefiniteLengthHead}, + cborTypeTextString: {cborTextStringWithIndefiniteLengthHead}, + cborTypeArray: {cborArrayWithIndefiniteLengthHead}, + cborTypeMap: {cborMapWithIndefiniteLengthHead}, +} + +func (enc *Encoder) startIndefinite(typ cborType) error { + if enc.em.indefLength == IndefLengthForbidden { + return &IndefiniteLengthError{typ} + } + _, err := enc.w.Write(cborIndefHeader[typ]) + if err == nil { + enc.indefTypes = append(enc.indefTypes, typ) + } + return err +} + +// RawMessage is a raw encoded CBOR value. +type RawMessage []byte + +// MarshalCBOR returns m or CBOR nil if m is nil. +func (m RawMessage) MarshalCBOR() ([]byte, error) { + if len(m) == 0 { + return cborNil, nil + } + return m, nil +} + +// UnmarshalCBOR creates a copy of data and saves to *m. +func (m *RawMessage) UnmarshalCBOR(data []byte) error { + if m == nil { + return errors.New("cbor.RawMessage: UnmarshalCBOR on nil pointer") + } + *m = append((*m)[0:0], data...) + return nil +} diff --git a/vendor/github.com/fxamacker/cbor/v2/structfields.go b/vendor/github.com/fxamacker/cbor/v2/structfields.go new file mode 100644 index 000000000000..81228acf0fdc --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/structfields.go @@ -0,0 +1,260 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +package cbor + +import ( + "reflect" + "sort" + "strings" +) + +type field struct { + name string + nameAsInt int64 // used to decoder to match field name with CBOR int + cborName []byte + cborNameByteString []byte // major type 2 name encoding iff cborName has major type 3 + idx []int + typ reflect.Type + ef encodeFunc + ief isEmptyFunc + typInfo *typeInfo // used to decoder to reuse type info + tagged bool // used to choose dominant field (at the same level tagged fields dominate untagged fields) + omitEmpty bool // used to skip empty field + keyAsInt bool // used to encode/decode field name as int +} + +type fields []*field + +// indexFieldSorter sorts fields by field idx at each level, breaking ties with idx depth. +type indexFieldSorter struct { + fields fields +} + +func (x *indexFieldSorter) Len() int { + return len(x.fields) +} + +func (x *indexFieldSorter) Swap(i, j int) { + x.fields[i], x.fields[j] = x.fields[j], x.fields[i] +} + +func (x *indexFieldSorter) Less(i, j int) bool { + iIdx, jIdx := x.fields[i].idx, x.fields[j].idx + for k := 0; k < len(iIdx) && k < len(jIdx); k++ { + if iIdx[k] != jIdx[k] { + return iIdx[k] < jIdx[k] + } + } + return len(iIdx) <= len(jIdx) +} + +// nameLevelAndTagFieldSorter sorts fields by field name, idx depth, and presence of tag. +type nameLevelAndTagFieldSorter struct { + fields fields +} + +func (x *nameLevelAndTagFieldSorter) Len() int { + return len(x.fields) +} + +func (x *nameLevelAndTagFieldSorter) Swap(i, j int) { + x.fields[i], x.fields[j] = x.fields[j], x.fields[i] +} + +func (x *nameLevelAndTagFieldSorter) Less(i, j int) bool { + fi, fj := x.fields[i], x.fields[j] + if fi.name != fj.name { + return fi.name < fj.name + } + if len(fi.idx) != len(fj.idx) { + return len(fi.idx) < len(fj.idx) + } + if fi.tagged != fj.tagged { + return fi.tagged + } + return i < j // Field i and j have the same name, depth, and tagged status. Nothing else matters. +} + +// getFields returns visible fields of struct type t following visibility rules for JSON encoding. +func getFields(t reflect.Type) (flds fields, structOptions string) { + // Get special field "_" tag options + if f, ok := t.FieldByName("_"); ok { + tag := f.Tag.Get("cbor") + if tag != "-" { + structOptions = tag + } + } + + // nTypes contains next level anonymous fields' types and indexes + // (there can be multiple fields of the same type at the same level) + flds, nTypes := appendFields(t, nil, nil, nil) + + if len(nTypes) > 0 { + + var cTypes map[reflect.Type][][]int // current level anonymous fields' types and indexes + vTypes := map[reflect.Type]bool{t: true} // visited field types at less nested levels + + for len(nTypes) > 0 { + cTypes, nTypes = nTypes, nil + + for t, idx := range cTypes { + // If there are multiple anonymous fields of the same struct type at the same level, all are ignored. + if len(idx) > 1 { + continue + } + + // Anonymous field of the same type at deeper nested level is ignored. + if vTypes[t] { + continue + } + vTypes[t] = true + + flds, nTypes = appendFields(t, idx[0], flds, nTypes) + } + } + } + + sort.Sort(&nameLevelAndTagFieldSorter{flds}) + + // Keep visible fields. + j := 0 // index of next unique field + for i := 0; i < len(flds); { + name := flds[i].name + if i == len(flds)-1 || // last field + name != flds[i+1].name || // field i has unique field name + len(flds[i].idx) < len(flds[i+1].idx) || // field i is at a less nested level than field i+1 + (flds[i].tagged && !flds[i+1].tagged) { // field i is tagged while field i+1 is not + flds[j] = flds[i] + j++ + } + + // Skip fields with the same field name. + for i++; i < len(flds) && name == flds[i].name; i++ { //nolint:revive + } + } + if j != len(flds) { + flds = flds[:j] + } + + // Sort fields by field index + sort.Sort(&indexFieldSorter{flds}) + + return flds, structOptions +} + +// appendFields appends type t's exportable fields to flds and anonymous struct fields to nTypes . +func appendFields( + t reflect.Type, + idx []int, + flds fields, + nTypes map[reflect.Type][][]int, +) ( + _flds fields, + _nTypes map[reflect.Type][][]int, +) { + for i := 0; i < t.NumField(); i++ { + f := t.Field(i) + + ft := f.Type + for ft.Kind() == reflect.Ptr { + ft = ft.Elem() + } + + if !isFieldExportable(f, ft.Kind()) { + continue + } + + tag := f.Tag.Get("cbor") + if tag == "" { + tag = f.Tag.Get("json") + } + if tag == "-" { + continue + } + + tagged := tag != "" + + // Parse field tag options + var tagFieldName string + var omitempty, keyasint bool + for j := 0; tag != ""; j++ { + var token string + idx := strings.IndexByte(tag, ',') + if idx == -1 { + token, tag = tag, "" + } else { + token, tag = tag[:idx], tag[idx+1:] + } + if j == 0 { + tagFieldName = token + } else { + switch token { + case "omitempty": + omitempty = true + case "keyasint": + keyasint = true + } + } + } + + fieldName := tagFieldName + if tagFieldName == "" { + fieldName = f.Name + } + + fIdx := make([]int, len(idx)+1) + copy(fIdx, idx) + fIdx[len(fIdx)-1] = i + + if !f.Anonymous || ft.Kind() != reflect.Struct || tagFieldName != "" { + flds = append(flds, &field{ + name: fieldName, + idx: fIdx, + typ: f.Type, + omitEmpty: omitempty, + keyAsInt: keyasint, + tagged: tagged}) + } else { + if nTypes == nil { + nTypes = make(map[reflect.Type][][]int) + } + nTypes[ft] = append(nTypes[ft], fIdx) + } + } + + return flds, nTypes +} + +// isFieldExportable returns true if f is an exportable (regular or anonymous) field or +// a nonexportable anonymous field of struct type. +// Nonexportable anonymous field of struct type can contain exportable fields. +func isFieldExportable(f reflect.StructField, fk reflect.Kind) bool { //nolint:gocritic // ignore hugeParam + exportable := f.PkgPath == "" + return exportable || (f.Anonymous && fk == reflect.Struct) +} + +type embeddedFieldNullPtrFunc func(reflect.Value) (reflect.Value, error) + +// getFieldValue returns field value of struct v by index. When encountering null pointer +// to anonymous (embedded) struct field, f is called with the last traversed field value. +func getFieldValue(v reflect.Value, idx []int, f embeddedFieldNullPtrFunc) (fv reflect.Value, err error) { + fv = v + for i, n := range idx { + fv = fv.Field(n) + + if i < len(idx)-1 { + if fv.Kind() == reflect.Ptr && fv.Type().Elem().Kind() == reflect.Struct { + if fv.IsNil() { + // Null pointer to embedded struct field + fv, err = f(fv) + if err != nil || !fv.IsValid() { + return fv, err + } + } + fv = fv.Elem() + } + } + } + return fv, nil +} diff --git a/vendor/github.com/fxamacker/cbor/v2/tag.go b/vendor/github.com/fxamacker/cbor/v2/tag.go new file mode 100644 index 000000000000..5c4d2b7a42fc --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/tag.go @@ -0,0 +1,299 @@ +package cbor + +import ( + "errors" + "fmt" + "reflect" + "sync" +) + +// Tag represents CBOR tag data, including tag number and unmarshaled tag content. Marshaling and +// unmarshaling of tag content is subject to any encode and decode options that would apply to +// enclosed data item if it were to appear outside of a tag. +type Tag struct { + Number uint64 + Content interface{} +} + +// RawTag represents CBOR tag data, including tag number and raw tag content. +// RawTag implements Unmarshaler and Marshaler interfaces. +type RawTag struct { + Number uint64 + Content RawMessage +} + +// UnmarshalCBOR sets *t with tag number and raw tag content copied from data. +func (t *RawTag) UnmarshalCBOR(data []byte) error { + if t == nil { + return errors.New("cbor.RawTag: UnmarshalCBOR on nil pointer") + } + + // Decoding CBOR null and undefined to cbor.RawTag is no-op. + if len(data) == 1 && (data[0] == 0xf6 || data[0] == 0xf7) { + return nil + } + + d := decoder{data: data, dm: defaultDecMode} + + // Unmarshal tag number. + typ, _, num := d.getHead() + if typ != cborTypeTag { + return &UnmarshalTypeError{CBORType: typ.String(), GoType: typeRawTag.String()} + } + t.Number = num + + // Unmarshal tag content. + c := d.data[d.off:] + t.Content = make([]byte, len(c)) + copy(t.Content, c) + return nil +} + +// MarshalCBOR returns CBOR encoding of t. +func (t RawTag) MarshalCBOR() ([]byte, error) { + if t.Number == 0 && len(t.Content) == 0 { + // Marshal uninitialized cbor.RawTag + b := make([]byte, len(cborNil)) + copy(b, cborNil) + return b, nil + } + + e := getEncodeBuffer() + + encodeHead(e, byte(cborTypeTag), t.Number) + + content := t.Content + if len(content) == 0 { + content = cborNil + } + + buf := make([]byte, len(e.Bytes())+len(content)) + n := copy(buf, e.Bytes()) + copy(buf[n:], content) + + putEncodeBuffer(e) + return buf, nil +} + +// DecTagMode specifies how decoder handles tag number. +type DecTagMode int + +const ( + // DecTagIgnored makes decoder ignore tag number (skips if present). + DecTagIgnored DecTagMode = iota + + // DecTagOptional makes decoder verify tag number if it's present. + DecTagOptional + + // DecTagRequired makes decoder verify tag number and tag number must be present. + DecTagRequired + + maxDecTagMode +) + +func (dtm DecTagMode) valid() bool { + return dtm >= 0 && dtm < maxDecTagMode +} + +// EncTagMode specifies how encoder handles tag number. +type EncTagMode int + +const ( + // EncTagNone makes encoder not encode tag number. + EncTagNone EncTagMode = iota + + // EncTagRequired makes encoder encode tag number. + EncTagRequired + + maxEncTagMode +) + +func (etm EncTagMode) valid() bool { + return etm >= 0 && etm < maxEncTagMode +} + +// TagOptions specifies how encoder and decoder handle tag number. +type TagOptions struct { + DecTag DecTagMode + EncTag EncTagMode +} + +// TagSet is an interface to add and remove tag info. It is used by EncMode and DecMode +// to provide CBOR tag support. +type TagSet interface { + // Add adds given tag number(s), content type, and tag options to TagSet. + Add(opts TagOptions, contentType reflect.Type, num uint64, nestedNum ...uint64) error + + // Remove removes given tag content type from TagSet. + Remove(contentType reflect.Type) + + tagProvider +} + +type tagProvider interface { + getTagItemFromType(t reflect.Type) *tagItem + getTypeFromTagNum(num []uint64) reflect.Type +} + +type tagItem struct { + num []uint64 + cborTagNum []byte + contentType reflect.Type + opts TagOptions +} + +func (t *tagItem) equalTagNum(num []uint64) bool { + // Fast path to compare 1 tag number + if len(t.num) == 1 && len(num) == 1 && t.num[0] == num[0] { + return true + } + + if len(t.num) != len(num) { + return false + } + + for i := 0; i < len(t.num); i++ { + if t.num[i] != num[i] { + return false + } + } + + return true +} + +type ( + tagSet map[reflect.Type]*tagItem + + syncTagSet struct { + sync.RWMutex + t tagSet + } +) + +func (t tagSet) getTagItemFromType(typ reflect.Type) *tagItem { + return t[typ] +} + +func (t tagSet) getTypeFromTagNum(num []uint64) reflect.Type { + for typ, tag := range t { + if tag.equalTagNum(num) { + return typ + } + } + return nil +} + +// NewTagSet returns TagSet (safe for concurrency). +func NewTagSet() TagSet { + return &syncTagSet{t: make(map[reflect.Type]*tagItem)} +} + +// Add adds given tag number(s), content type, and tag options to TagSet. +func (t *syncTagSet) Add(opts TagOptions, contentType reflect.Type, num uint64, nestedNum ...uint64) error { + if contentType == nil { + return errors.New("cbor: cannot add nil content type to TagSet") + } + for contentType.Kind() == reflect.Ptr { + contentType = contentType.Elem() + } + tag, err := newTagItem(opts, contentType, num, nestedNum...) + if err != nil { + return err + } + t.Lock() + defer t.Unlock() + for typ, ti := range t.t { + if typ == contentType { + return errors.New("cbor: content type " + contentType.String() + " already exists in TagSet") + } + if ti.equalTagNum(tag.num) { + return fmt.Errorf("cbor: tag number %v already exists in TagSet", tag.num) + } + } + t.t[contentType] = tag + return nil +} + +// Remove removes given tag content type from TagSet. +func (t *syncTagSet) Remove(contentType reflect.Type) { + for contentType.Kind() == reflect.Ptr { + contentType = contentType.Elem() + } + t.Lock() + delete(t.t, contentType) + t.Unlock() +} + +func (t *syncTagSet) getTagItemFromType(typ reflect.Type) *tagItem { + t.RLock() + ti := t.t[typ] + t.RUnlock() + return ti +} + +func (t *syncTagSet) getTypeFromTagNum(num []uint64) reflect.Type { + t.RLock() + rt := t.t.getTypeFromTagNum(num) + t.RUnlock() + return rt +} + +func newTagItem(opts TagOptions, contentType reflect.Type, num uint64, nestedNum ...uint64) (*tagItem, error) { + if opts.DecTag == DecTagIgnored && opts.EncTag == EncTagNone { + return nil, errors.New("cbor: cannot add tag with DecTagIgnored and EncTagNone options to TagSet") + } + if contentType.PkgPath() == "" || contentType.Kind() == reflect.Interface { + return nil, errors.New("cbor: can only add named types to TagSet, got " + contentType.String()) + } + if contentType == typeTime { + return nil, errors.New("cbor: cannot add time.Time to TagSet, use EncOptions.TimeTag and DecOptions.TimeTag instead") + } + if contentType == typeBigInt { + return nil, errors.New("cbor: cannot add big.Int to TagSet, it's built-in and supported automatically") + } + if contentType == typeTag { + return nil, errors.New("cbor: cannot add cbor.Tag to TagSet") + } + if contentType == typeRawTag { + return nil, errors.New("cbor: cannot add cbor.RawTag to TagSet") + } + if num == 0 || num == 1 { + return nil, errors.New("cbor: cannot add tag number 0 or 1 to TagSet, use EncOptions.TimeTag and DecOptions.TimeTag instead") + } + if num == 2 || num == 3 { + return nil, errors.New("cbor: cannot add tag number 2 or 3 to TagSet, it's built-in and supported automatically") + } + if num == tagNumSelfDescribedCBOR { + return nil, errors.New("cbor: cannot add tag number 55799 to TagSet, it's built-in and ignored automatically") + } + + te := tagItem{num: []uint64{num}, opts: opts, contentType: contentType} + te.num = append(te.num, nestedNum...) + + // Cache encoded tag numbers + e := getEncodeBuffer() + for _, n := range te.num { + encodeHead(e, byte(cborTypeTag), n) + } + te.cborTagNum = make([]byte, e.Len()) + copy(te.cborTagNum, e.Bytes()) + putEncodeBuffer(e) + + return &te, nil +} + +var ( + typeTag = reflect.TypeOf(Tag{}) + typeRawTag = reflect.TypeOf(RawTag{}) +) + +// WrongTagError describes mismatch between CBOR tag and registered tag. +type WrongTagError struct { + RegisteredType reflect.Type + RegisteredTagNum []uint64 + TagNum []uint64 +} + +func (e *WrongTagError) Error() string { + return fmt.Sprintf("cbor: wrong tag number for %s, got %v, expected %v", e.RegisteredType.String(), e.TagNum, e.RegisteredTagNum) +} diff --git a/vendor/github.com/fxamacker/cbor/v2/valid.go b/vendor/github.com/fxamacker/cbor/v2/valid.go new file mode 100644 index 000000000000..b40793b95e3f --- /dev/null +++ b/vendor/github.com/fxamacker/cbor/v2/valid.go @@ -0,0 +1,394 @@ +// Copyright (c) Faye Amacker. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +package cbor + +import ( + "encoding/binary" + "errors" + "io" + "math" + "strconv" + + "github.com/x448/float16" +) + +// SyntaxError is a description of a CBOR syntax error. +type SyntaxError struct { + msg string +} + +func (e *SyntaxError) Error() string { return e.msg } + +// SemanticError is a description of a CBOR semantic error. +type SemanticError struct { + msg string +} + +func (e *SemanticError) Error() string { return e.msg } + +// MaxNestedLevelError indicates exceeded max nested level of any combination of CBOR arrays/maps/tags. +type MaxNestedLevelError struct { + maxNestedLevels int +} + +func (e *MaxNestedLevelError) Error() string { + return "cbor: exceeded max nested level " + strconv.Itoa(e.maxNestedLevels) +} + +// MaxArrayElementsError indicates exceeded max number of elements for CBOR arrays. +type MaxArrayElementsError struct { + maxArrayElements int +} + +func (e *MaxArrayElementsError) Error() string { + return "cbor: exceeded max number of elements " + strconv.Itoa(e.maxArrayElements) + " for CBOR array" +} + +// MaxMapPairsError indicates exceeded max number of key-value pairs for CBOR maps. +type MaxMapPairsError struct { + maxMapPairs int +} + +func (e *MaxMapPairsError) Error() string { + return "cbor: exceeded max number of key-value pairs " + strconv.Itoa(e.maxMapPairs) + " for CBOR map" +} + +// IndefiniteLengthError indicates found disallowed indefinite length items. +type IndefiniteLengthError struct { + t cborType +} + +func (e *IndefiniteLengthError) Error() string { + return "cbor: indefinite-length " + e.t.String() + " isn't allowed" +} + +// TagsMdError indicates found disallowed CBOR tags. +type TagsMdError struct { +} + +func (e *TagsMdError) Error() string { + return "cbor: CBOR tag isn't allowed" +} + +// ExtraneousDataError indicates found extraneous data following well-formed CBOR data item. +type ExtraneousDataError struct { + numOfBytes int // number of bytes of extraneous data + index int // location of extraneous data +} + +func (e *ExtraneousDataError) Error() string { + return "cbor: " + strconv.Itoa(e.numOfBytes) + " bytes of extraneous data starting at index " + strconv.Itoa(e.index) +} + +// wellformed checks whether the CBOR data item is well-formed. +// allowExtraData indicates if extraneous data is allowed after the CBOR data item. +// - use allowExtraData = true when using Decoder.Decode() +// - use allowExtraData = false when using Unmarshal() +func (d *decoder) wellformed(allowExtraData bool, checkBuiltinTags bool) error { + if len(d.data) == d.off { + return io.EOF + } + _, err := d.wellformedInternal(0, checkBuiltinTags) + if err == nil { + if !allowExtraData && d.off != len(d.data) { + err = &ExtraneousDataError{len(d.data) - d.off, d.off} + } + } + return err +} + +// wellformedInternal checks data's well-formedness and returns max depth and error. +func (d *decoder) wellformedInternal(depth int, checkBuiltinTags bool) (int, error) { //nolint:gocyclo + t, _, val, indefiniteLength, err := d.wellformedHeadWithIndefiniteLengthFlag() + if err != nil { + return 0, err + } + + switch t { + case cborTypeByteString, cborTypeTextString: + if indefiniteLength { + if d.dm.indefLength == IndefLengthForbidden { + return 0, &IndefiniteLengthError{t} + } + return d.wellformedIndefiniteString(t, depth, checkBuiltinTags) + } + valInt := int(val) + if valInt < 0 { + // Detect integer overflow + return 0, errors.New("cbor: " + t.String() + " length " + strconv.FormatUint(val, 10) + " is too large, causing integer overflow") + } + if len(d.data)-d.off < valInt { // valInt+off may overflow integer + return 0, io.ErrUnexpectedEOF + } + d.off += valInt + + case cborTypeArray, cborTypeMap: + depth++ + if depth > d.dm.maxNestedLevels { + return 0, &MaxNestedLevelError{d.dm.maxNestedLevels} + } + + if indefiniteLength { + if d.dm.indefLength == IndefLengthForbidden { + return 0, &IndefiniteLengthError{t} + } + return d.wellformedIndefiniteArrayOrMap(t, depth, checkBuiltinTags) + } + + valInt := int(val) + if valInt < 0 { + // Detect integer overflow + return 0, errors.New("cbor: " + t.String() + " length " + strconv.FormatUint(val, 10) + " is too large, it would cause integer overflow") + } + + if t == cborTypeArray { + if valInt > d.dm.maxArrayElements { + return 0, &MaxArrayElementsError{d.dm.maxArrayElements} + } + } else { + if valInt > d.dm.maxMapPairs { + return 0, &MaxMapPairsError{d.dm.maxMapPairs} + } + } + + count := 1 + if t == cborTypeMap { + count = 2 + } + maxDepth := depth + for j := 0; j < count; j++ { + for i := 0; i < valInt; i++ { + var dpt int + if dpt, err = d.wellformedInternal(depth, checkBuiltinTags); err != nil { + return 0, err + } + if dpt > maxDepth { + maxDepth = dpt // Save max depth + } + } + } + depth = maxDepth + + case cborTypeTag: + if d.dm.tagsMd == TagsForbidden { + return 0, &TagsMdError{} + } + + tagNum := val + + // Scan nested tag numbers to avoid recursion. + for { + if len(d.data) == d.off { // Tag number must be followed by tag content. + return 0, io.ErrUnexpectedEOF + } + if checkBuiltinTags { + err = validBuiltinTag(tagNum, d.data[d.off]) + if err != nil { + return 0, err + } + } + if d.dm.bignumTag == BignumTagForbidden && (tagNum == 2 || tagNum == 3) { + return 0, &UnacceptableDataItemError{ + CBORType: cborTypeTag.String(), + Message: "bignum", + } + } + if getType(d.data[d.off]) != cborTypeTag { + break + } + if _, _, tagNum, err = d.wellformedHead(); err != nil { + return 0, err + } + depth++ + if depth > d.dm.maxNestedLevels { + return 0, &MaxNestedLevelError{d.dm.maxNestedLevels} + } + } + // Check tag content. + return d.wellformedInternal(depth, checkBuiltinTags) + } + + return depth, nil +} + +// wellformedIndefiniteString checks indefinite length byte/text string's well-formedness and returns max depth and error. +func (d *decoder) wellformedIndefiniteString(t cborType, depth int, checkBuiltinTags bool) (int, error) { + var err error + for { + if len(d.data) == d.off { + return 0, io.ErrUnexpectedEOF + } + if isBreakFlag(d.data[d.off]) { + d.off++ + break + } + // Peek ahead to get next type and indefinite length status. + nt, ai := parseInitialByte(d.data[d.off]) + if t != nt { + return 0, &SyntaxError{"cbor: wrong element type " + nt.String() + " for indefinite-length " + t.String()} + } + if additionalInformation(ai).isIndefiniteLength() { + return 0, &SyntaxError{"cbor: indefinite-length " + t.String() + " chunk is not definite-length"} + } + if depth, err = d.wellformedInternal(depth, checkBuiltinTags); err != nil { + return 0, err + } + } + return depth, nil +} + +// wellformedIndefiniteArrayOrMap checks indefinite length array/map's well-formedness and returns max depth and error. +func (d *decoder) wellformedIndefiniteArrayOrMap(t cborType, depth int, checkBuiltinTags bool) (int, error) { + var err error + maxDepth := depth + i := 0 + for { + if len(d.data) == d.off { + return 0, io.ErrUnexpectedEOF + } + if isBreakFlag(d.data[d.off]) { + d.off++ + break + } + var dpt int + if dpt, err = d.wellformedInternal(depth, checkBuiltinTags); err != nil { + return 0, err + } + if dpt > maxDepth { + maxDepth = dpt + } + i++ + if t == cborTypeArray { + if i > d.dm.maxArrayElements { + return 0, &MaxArrayElementsError{d.dm.maxArrayElements} + } + } else { + if i%2 == 0 && i/2 > d.dm.maxMapPairs { + return 0, &MaxMapPairsError{d.dm.maxMapPairs} + } + } + } + if t == cborTypeMap && i%2 == 1 { + return 0, &SyntaxError{"cbor: unexpected \"break\" code"} + } + return maxDepth, nil +} + +func (d *decoder) wellformedHeadWithIndefiniteLengthFlag() ( + t cborType, + ai byte, + val uint64, + indefiniteLength bool, + err error, +) { + t, ai, val, err = d.wellformedHead() + if err != nil { + return + } + indefiniteLength = additionalInformation(ai).isIndefiniteLength() + return +} + +func (d *decoder) wellformedHead() (t cborType, ai byte, val uint64, err error) { + dataLen := len(d.data) - d.off + if dataLen == 0 { + return 0, 0, 0, io.ErrUnexpectedEOF + } + + t, ai = parseInitialByte(d.data[d.off]) + val = uint64(ai) + d.off++ + dataLen-- + + if ai <= maxAdditionalInformationWithoutArgument { + return t, ai, val, nil + } + + if ai == additionalInformationWith1ByteArgument { + const argumentSize = 1 + if dataLen < argumentSize { + return 0, 0, 0, io.ErrUnexpectedEOF + } + val = uint64(d.data[d.off]) + d.off++ + if t == cborTypePrimitives && val < 32 { + return 0, 0, 0, &SyntaxError{"cbor: invalid simple value " + strconv.Itoa(int(val)) + " for type " + t.String()} + } + return t, ai, val, nil + } + + if ai == additionalInformationWith2ByteArgument { + const argumentSize = 2 + if dataLen < argumentSize { + return 0, 0, 0, io.ErrUnexpectedEOF + } + val = uint64(binary.BigEndian.Uint16(d.data[d.off : d.off+argumentSize])) + d.off += argumentSize + if t == cborTypePrimitives { + if err := d.acceptableFloat(float64(float16.Frombits(uint16(val)).Float32())); err != nil { + return 0, 0, 0, err + } + } + return t, ai, val, nil + } + + if ai == additionalInformationWith4ByteArgument { + const argumentSize = 4 + if dataLen < argumentSize { + return 0, 0, 0, io.ErrUnexpectedEOF + } + val = uint64(binary.BigEndian.Uint32(d.data[d.off : d.off+argumentSize])) + d.off += argumentSize + if t == cborTypePrimitives { + if err := d.acceptableFloat(float64(math.Float32frombits(uint32(val)))); err != nil { + return 0, 0, 0, err + } + } + return t, ai, val, nil + } + + if ai == additionalInformationWith8ByteArgument { + const argumentSize = 8 + if dataLen < argumentSize { + return 0, 0, 0, io.ErrUnexpectedEOF + } + val = binary.BigEndian.Uint64(d.data[d.off : d.off+argumentSize]) + d.off += argumentSize + if t == cborTypePrimitives { + if err := d.acceptableFloat(math.Float64frombits(val)); err != nil { + return 0, 0, 0, err + } + } + return t, ai, val, nil + } + + if additionalInformation(ai).isIndefiniteLength() { + switch t { + case cborTypePositiveInt, cborTypeNegativeInt, cborTypeTag: + return 0, 0, 0, &SyntaxError{"cbor: invalid additional information " + strconv.Itoa(int(ai)) + " for type " + t.String()} + case cborTypePrimitives: // 0xff (break code) should not be outside wellformedIndefinite(). + return 0, 0, 0, &SyntaxError{"cbor: unexpected \"break\" code"} + } + return t, ai, val, nil + } + + // ai == 28, 29, 30 + return 0, 0, 0, &SyntaxError{"cbor: invalid additional information " + strconv.Itoa(int(ai)) + " for type " + t.String()} +} + +func (d *decoder) acceptableFloat(f float64) error { + switch { + case d.dm.nanDec == NaNDecodeForbidden && math.IsNaN(f): + return &UnacceptableDataItemError{ + CBORType: cborTypePrimitives.String(), + Message: "floating-point NaN", + } + case d.dm.infDec == InfDecodeForbidden && math.IsInf(f, 0): + return &UnacceptableDataItemError{ + CBORType: cborTypePrimitives.String(), + Message: "floating-point infinity", + } + } + return nil +} diff --git a/vendor/github.com/go-logr/logr/README.md b/vendor/github.com/go-logr/logr/README.md index 8969526a6e5d..7c7f0c69cd91 100644 --- a/vendor/github.com/go-logr/logr/README.md +++ b/vendor/github.com/go-logr/logr/README.md @@ -1,6 +1,7 @@ # A minimal logging API for Go [![Go Reference](https://pkg.go.dev/badge/github.com/go-logr/logr.svg)](https://pkg.go.dev/github.com/go-logr/logr) +[![Go Report Card](https://goreportcard.com/badge/github.com/go-logr/logr)](https://goreportcard.com/report/github.com/go-logr/logr) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/go-logr/logr/badge)](https://securityscorecards.dev/viewer/?platform=github.com&org=go-logr&repo=logr) logr offers an(other) opinion on how Go programs and libraries can do logging diff --git a/vendor/github.com/go-logr/logr/funcr/funcr.go b/vendor/github.com/go-logr/logr/funcr/funcr.go index fb2f866f4b74..30568e768dce 100644 --- a/vendor/github.com/go-logr/logr/funcr/funcr.go +++ b/vendor/github.com/go-logr/logr/funcr/funcr.go @@ -236,15 +236,14 @@ func newFormatter(opts Options, outfmt outputFormat) Formatter { // implementation. It should be constructed with NewFormatter. Some of // its methods directly implement logr.LogSink. type Formatter struct { - outputFormat outputFormat - prefix string - values []any - valuesStr string - parentValuesStr string - depth int - opts *Options - group string // for slog groups - groupDepth int + outputFormat outputFormat + prefix string + values []any + valuesStr string + depth int + opts *Options + groupName string // for slog groups + groups []groupDef } // outputFormat indicates which outputFormat to use. @@ -257,6 +256,13 @@ const ( outputJSON ) +// groupDef represents a saved group. The values may be empty, but we don't +// know if we need to render the group until the final record is rendered. +type groupDef struct { + name string + values string +} + // PseudoStruct is a list of key-value pairs that gets logged as a struct. type PseudoStruct []any @@ -264,76 +270,102 @@ type PseudoStruct []any func (f Formatter) render(builtins, args []any) string { // Empirically bytes.Buffer is faster than strings.Builder for this. buf := bytes.NewBuffer(make([]byte, 0, 1024)) + if f.outputFormat == outputJSON { - buf.WriteByte('{') // for the whole line + buf.WriteByte('{') // for the whole record } + // Render builtins vals := builtins if hook := f.opts.RenderBuiltinsHook; hook != nil { vals = hook(f.sanitize(vals)) } - f.flatten(buf, vals, false, false) // keys are ours, no need to escape + f.flatten(buf, vals, false) // keys are ours, no need to escape continuing := len(builtins) > 0 - if f.parentValuesStr != "" { - if continuing { - buf.WriteByte(f.comma()) + // Turn the inner-most group into a string + argsStr := func() string { + buf := bytes.NewBuffer(make([]byte, 0, 1024)) + + vals = args + if hook := f.opts.RenderArgsHook; hook != nil { + vals = hook(f.sanitize(vals)) } - buf.WriteString(f.parentValuesStr) - continuing = true - } + f.flatten(buf, vals, true) // escape user-provided keys - groupDepth := f.groupDepth - if f.group != "" { - if f.valuesStr != "" || len(args) != 0 { - if continuing { - buf.WriteByte(f.comma()) - } - buf.WriteString(f.quoted(f.group, true)) // escape user-provided keys - buf.WriteByte(f.colon()) - buf.WriteByte('{') // for the group - continuing = false - } else { - // The group was empty - groupDepth-- + return buf.String() + }() + + // Render the stack of groups from the inside out. + bodyStr := f.renderGroup(f.groupName, f.valuesStr, argsStr) + for i := len(f.groups) - 1; i >= 0; i-- { + grp := &f.groups[i] + if grp.values == "" && bodyStr == "" { + // no contents, so we must elide the whole group + continue } + bodyStr = f.renderGroup(grp.name, grp.values, bodyStr) } - if f.valuesStr != "" { + if bodyStr != "" { if continuing { buf.WriteByte(f.comma()) } - buf.WriteString(f.valuesStr) - continuing = true + buf.WriteString(bodyStr) } - vals = args - if hook := f.opts.RenderArgsHook; hook != nil { - vals = hook(f.sanitize(vals)) + if f.outputFormat == outputJSON { + buf.WriteByte('}') // for the whole record } - f.flatten(buf, vals, continuing, true) // escape user-provided keys - for i := 0; i < groupDepth; i++ { - buf.WriteByte('}') // for the groups + return buf.String() +} + +// renderGroup returns a string representation of the named group with rendered +// values and args. If the name is empty, this will return the values and args, +// joined. If the name is not empty, this will return a single key-value pair, +// where the value is a grouping of the values and args. If the values and +// args are both empty, this will return an empty string, even if the name was +// specified. +func (f Formatter) renderGroup(name string, values string, args string) string { + buf := bytes.NewBuffer(make([]byte, 0, 1024)) + + needClosingBrace := false + if name != "" && (values != "" || args != "") { + buf.WriteString(f.quoted(name, true)) // escape user-provided keys + buf.WriteByte(f.colon()) + buf.WriteByte('{') + needClosingBrace = true } - if f.outputFormat == outputJSON { - buf.WriteByte('}') // for the whole line + continuing := false + if values != "" { + buf.WriteString(values) + continuing = true + } + + if args != "" { + if continuing { + buf.WriteByte(f.comma()) + } + buf.WriteString(args) + } + + if needClosingBrace { + buf.WriteByte('}') } return buf.String() } -// flatten renders a list of key-value pairs into a buffer. If continuing is -// true, it assumes that the buffer has previous values and will emit a -// separator (which depends on the output format) before the first pair it -// writes. If escapeKeys is true, the keys are assumed to have -// non-JSON-compatible characters in them and must be evaluated for escapes. +// flatten renders a list of key-value pairs into a buffer. If escapeKeys is +// true, the keys are assumed to have non-JSON-compatible characters in them +// and must be evaluated for escapes. // // This function returns a potentially modified version of kvList, which // ensures that there is a value for every key (adding a value if needed) and // that each key is a string (substituting a key if needed). -func (f Formatter) flatten(buf *bytes.Buffer, kvList []any, continuing bool, escapeKeys bool) []any { +func (f Formatter) flatten(buf *bytes.Buffer, kvList []any, escapeKeys bool) []any { // This logic overlaps with sanitize() but saves one type-cast per key, // which can be measurable. if len(kvList)%2 != 0 { @@ -354,7 +386,7 @@ func (f Formatter) flatten(buf *bytes.Buffer, kvList []any, continuing bool, esc } v := kvList[i+1] - if i > 0 || continuing { + if i > 0 { if f.outputFormat == outputJSON { buf.WriteByte(f.comma()) } else { @@ -766,46 +798,17 @@ func (f Formatter) sanitize(kvList []any) []any { // startGroup opens a new group scope (basically a sub-struct), which locks all // the current saved values and starts them anew. This is needed to satisfy // slog. -func (f *Formatter) startGroup(group string) { +func (f *Formatter) startGroup(name string) { // Unnamed groups are just inlined. - if group == "" { + if name == "" { return } - // Any saved values can no longer be changed. - buf := bytes.NewBuffer(make([]byte, 0, 1024)) - continuing := false - - if f.parentValuesStr != "" { - buf.WriteString(f.parentValuesStr) - continuing = true - } - - if f.group != "" && f.valuesStr != "" { - if continuing { - buf.WriteByte(f.comma()) - } - buf.WriteString(f.quoted(f.group, true)) // escape user-provided keys - buf.WriteByte(f.colon()) - buf.WriteByte('{') // for the group - continuing = false - } - - if f.valuesStr != "" { - if continuing { - buf.WriteByte(f.comma()) - } - buf.WriteString(f.valuesStr) - } - - // NOTE: We don't close the scope here - that's done later, when a log line - // is actually rendered (because we have N scopes to close). - - f.parentValuesStr = buf.String() + n := len(f.groups) + f.groups = append(f.groups[:n:n], groupDef{f.groupName, f.valuesStr}) // Start collecting new values. - f.group = group - f.groupDepth++ + f.groupName = name f.valuesStr = "" f.values = nil } @@ -900,7 +903,7 @@ func (f *Formatter) AddValues(kvList []any) { // Pre-render values, so we don't have to do it on each Info/Error call. buf := bytes.NewBuffer(make([]byte, 0, 1024)) - f.flatten(buf, vals, false, true) // escape user-provided keys + f.flatten(buf, vals, true) // escape user-provided keys f.valuesStr = buf.String() } diff --git a/vendor/github.com/go-openapi/jsonpointer/pointer.go b/vendor/github.com/go-openapi/jsonpointer/pointer.go index d975773d4901..d970c7cf448e 100644 --- a/vendor/github.com/go-openapi/jsonpointer/pointer.go +++ b/vendor/github.com/go-openapi/jsonpointer/pointer.go @@ -264,7 +264,7 @@ func (p *Pointer) set(node, data any, nameProvider *swag.NameProvider) error { knd := reflect.ValueOf(node).Kind() if knd != reflect.Ptr && knd != reflect.Struct && knd != reflect.Map && knd != reflect.Slice && knd != reflect.Array { - return fmt.Errorf("only structs, pointers, maps and slices are supported for setting values") + return errors.New("only structs, pointers, maps and slices are supported for setting values") } if nameProvider == nil { diff --git a/vendor/github.com/go-openapi/swag/BENCHMARK.md b/vendor/github.com/go-openapi/swag/BENCHMARK.md new file mode 100644 index 000000000000..e7f28ed6b789 --- /dev/null +++ b/vendor/github.com/go-openapi/swag/BENCHMARK.md @@ -0,0 +1,52 @@ +# Benchmarks + +## Name mangling utilities + +```bash +go test -bench XXX -run XXX -benchtime 30s +``` + +### Benchmarks at b3e7a5386f996177e4808f11acb2aa93a0f660df + +``` +goos: linux +goarch: amd64 +pkg: github.com/go-openapi/swag +cpu: Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz +BenchmarkToXXXName/ToGoName-4 862623 44101 ns/op 10450 B/op 732 allocs/op +BenchmarkToXXXName/ToVarName-4 853656 40728 ns/op 10468 B/op 734 allocs/op +BenchmarkToXXXName/ToFileName-4 1268312 27813 ns/op 9785 B/op 617 allocs/op +BenchmarkToXXXName/ToCommandName-4 1276322 27903 ns/op 9785 B/op 617 allocs/op +BenchmarkToXXXName/ToHumanNameLower-4 895334 40354 ns/op 10472 B/op 731 allocs/op +BenchmarkToXXXName/ToHumanNameTitle-4 882441 40678 ns/op 10566 B/op 749 allocs/op +``` + +### Benchmarks after PR #79 + +~ x10 performance improvement and ~ /100 memory allocations. + +``` +goos: linux +goarch: amd64 +pkg: github.com/go-openapi/swag +cpu: Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz +BenchmarkToXXXName/ToGoName-4 9595830 3991 ns/op 42 B/op 5 allocs/op +BenchmarkToXXXName/ToVarName-4 9194276 3984 ns/op 62 B/op 7 allocs/op +BenchmarkToXXXName/ToFileName-4 17002711 2123 ns/op 147 B/op 7 allocs/op +BenchmarkToXXXName/ToCommandName-4 16772926 2111 ns/op 147 B/op 7 allocs/op +BenchmarkToXXXName/ToHumanNameLower-4 9788331 3749 ns/op 92 B/op 6 allocs/op +BenchmarkToXXXName/ToHumanNameTitle-4 9188260 3941 ns/op 104 B/op 6 allocs/op +``` + +``` +goos: linux +goarch: amd64 +pkg: github.com/go-openapi/swag +cpu: AMD Ryzen 7 5800X 8-Core Processor +BenchmarkToXXXName/ToGoName-16 18527378 1972 ns/op 42 B/op 5 allocs/op +BenchmarkToXXXName/ToVarName-16 15552692 2093 ns/op 62 B/op 7 allocs/op +BenchmarkToXXXName/ToFileName-16 32161176 1117 ns/op 147 B/op 7 allocs/op +BenchmarkToXXXName/ToCommandName-16 32256634 1137 ns/op 147 B/op 7 allocs/op +BenchmarkToXXXName/ToHumanNameLower-16 18599661 1946 ns/op 92 B/op 6 allocs/op +BenchmarkToXXXName/ToHumanNameTitle-16 17581353 2054 ns/op 105 B/op 6 allocs/op +``` diff --git a/vendor/github.com/go-openapi/swag/initialism_index.go b/vendor/github.com/go-openapi/swag/initialism_index.go index 03555184d1b2..20a359bb60a2 100644 --- a/vendor/github.com/go-openapi/swag/initialism_index.go +++ b/vendor/github.com/go-openapi/swag/initialism_index.go @@ -16,9 +16,130 @@ package swag import ( "sort" + "strings" "sync" ) +var ( + // commonInitialisms are common acronyms that are kept as whole uppercased words. + commonInitialisms *indexOfInitialisms + + // initialisms is a slice of sorted initialisms + initialisms []string + + // a copy of initialisms pre-baked as []rune + initialismsRunes [][]rune + initialismsUpperCased [][]rune + + isInitialism func(string) bool + + maxAllocMatches int +) + +func init() { + // Taken from https://github.com/golang/lint/blob/3390df4df2787994aea98de825b964ac7944b817/lint.go#L732-L769 + configuredInitialisms := map[string]bool{ + "ACL": true, + "API": true, + "ASCII": true, + "CPU": true, + "CSS": true, + "DNS": true, + "EOF": true, + "GUID": true, + "HTML": true, + "HTTPS": true, + "HTTP": true, + "ID": true, + "IP": true, + "IPv4": true, + "IPv6": true, + "JSON": true, + "LHS": true, + "OAI": true, + "QPS": true, + "RAM": true, + "RHS": true, + "RPC": true, + "SLA": true, + "SMTP": true, + "SQL": true, + "SSH": true, + "TCP": true, + "TLS": true, + "TTL": true, + "UDP": true, + "UI": true, + "UID": true, + "UUID": true, + "URI": true, + "URL": true, + "UTF8": true, + "VM": true, + "XML": true, + "XMPP": true, + "XSRF": true, + "XSS": true, + } + + // a thread-safe index of initialisms + commonInitialisms = newIndexOfInitialisms().load(configuredInitialisms) + initialisms = commonInitialisms.sorted() + initialismsRunes = asRunes(initialisms) + initialismsUpperCased = asUpperCased(initialisms) + maxAllocMatches = maxAllocHeuristic(initialismsRunes) + + // a test function + isInitialism = commonInitialisms.isInitialism +} + +func asRunes(in []string) [][]rune { + out := make([][]rune, len(in)) + for i, initialism := range in { + out[i] = []rune(initialism) + } + + return out +} + +func asUpperCased(in []string) [][]rune { + out := make([][]rune, len(in)) + + for i, initialism := range in { + out[i] = []rune(upper(trim(initialism))) + } + + return out +} + +func maxAllocHeuristic(in [][]rune) int { + heuristic := make(map[rune]int) + for _, initialism := range in { + heuristic[initialism[0]]++ + } + + var maxAlloc int + for _, val := range heuristic { + if val > maxAlloc { + maxAlloc = val + } + } + + return maxAlloc +} + +// AddInitialisms add additional initialisms +func AddInitialisms(words ...string) { + for _, word := range words { + // commonInitialisms[upper(word)] = true + commonInitialisms.add(upper(word)) + } + // sort again + initialisms = commonInitialisms.sorted() + initialismsRunes = asRunes(initialisms) + initialismsUpperCased = asUpperCased(initialisms) +} + // indexOfInitialisms is a thread-safe implementation of the sorted index of initialisms. // Since go1.9, this may be implemented with sync.Map. type indexOfInitialisms struct { @@ -55,7 +176,7 @@ func (m *indexOfInitialisms) add(key string) *indexOfInitialisms { func (m *indexOfInitialisms) sorted() (result []string) { m.sortMutex.Lock() defer m.sortMutex.Unlock() - m.index.Range(func(key, value interface{}) bool { + m.index.Range(func(key, _ interface{}) bool { k := key.(string) result = append(result, k) return true @@ -63,3 +184,19 @@ func (m *indexOfInitialisms) sorted() (result []string) { sort.Sort(sort.Reverse(byInitialism(result))) return } + +type byInitialism []string + +func (s byInitialism) Len() int { + return len(s) +} +func (s byInitialism) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} +func (s byInitialism) Less(i, j int) bool { + if len(s[i]) != len(s[j]) { + return len(s[i]) < len(s[j]) + } + + return strings.Compare(s[i], s[j]) > 0 +} diff --git a/vendor/github.com/go-openapi/swag/name_lexem.go b/vendor/github.com/go-openapi/swag/name_lexem.go index aa7f6a9bb8eb..8bb64ac32f90 100644 --- a/vendor/github.com/go-openapi/swag/name_lexem.go +++ b/vendor/github.com/go-openapi/swag/name_lexem.go @@ -14,74 +14,80 @@ package swag -import "unicode" +import ( + "unicode" + "unicode/utf8" +) type ( - nameLexem interface { - GetUnsafeGoName() string - GetOriginal() string - IsInitialism() bool - } + lexemKind uint8 - initialismNameLexem struct { + nameLexem struct { original string matchedInitialism string + kind lexemKind } +) - casualNameLexem struct { - original string - } +const ( + lexemKindCasualName lexemKind = iota + lexemKindInitialismName ) -func newInitialismNameLexem(original, matchedInitialism string) *initialismNameLexem { - return &initialismNameLexem{ +func newInitialismNameLexem(original, matchedInitialism string) nameLexem { + return nameLexem{ + kind: lexemKindInitialismName, original: original, matchedInitialism: matchedInitialism, } } -func newCasualNameLexem(original string) *casualNameLexem { - return &casualNameLexem{ +func newCasualNameLexem(original string) nameLexem { + return nameLexem{ + kind: lexemKindCasualName, original: original, } } -func (l *initialismNameLexem) GetUnsafeGoName() string { - return l.matchedInitialism -} +func (l nameLexem) GetUnsafeGoName() string { + if l.kind == lexemKindInitialismName { + return l.matchedInitialism + } + + var ( + first rune + rest string + ) -func (l *casualNameLexem) GetUnsafeGoName() string { - var first rune - var rest string for i, orig := range l.original { if i == 0 { first = orig continue } + if i > 0 { rest = l.original[i:] break } } + if len(l.original) > 1 { - return string(unicode.ToUpper(first)) + lower(rest) + b := poolOfBuffers.BorrowBuffer(utf8.UTFMax + len(rest)) + defer func() { + poolOfBuffers.RedeemBuffer(b) + }() + b.WriteRune(unicode.ToUpper(first)) + b.WriteString(lower(rest)) + return b.String() } return l.original } -func (l *initialismNameLexem) GetOriginal() string { +func (l nameLexem) GetOriginal() string { return l.original } -func (l *casualNameLexem) GetOriginal() string { - return l.original -} - -func (l *initialismNameLexem) IsInitialism() bool { - return true -} - -func (l *casualNameLexem) IsInitialism() bool { - return false +func (l nameLexem) IsInitialism() bool { + return l.kind == lexemKindInitialismName } diff --git a/vendor/github.com/go-openapi/swag/split.go b/vendor/github.com/go-openapi/swag/split.go index a1825fb7dc9a..274727a866c4 100644 --- a/vendor/github.com/go-openapi/swag/split.go +++ b/vendor/github.com/go-openapi/swag/split.go @@ -15,124 +15,269 @@ package swag import ( + "bytes" + "sync" "unicode" + "unicode/utf8" ) -var nameReplaceTable = map[rune]string{ - '@': "At ", - '&': "And ", - '|': "Pipe ", - '$': "Dollar ", - '!': "Bang ", - '-': "", - '_': "", -} - type ( splitter struct { - postSplitInitialismCheck bool initialisms []string + initialismsRunes [][]rune + initialismsUpperCased [][]rune // initialisms cached in their trimmed, upper-cased version + postSplitInitialismCheck bool + } + + splitterOption func(*splitter) + + initialismMatch struct { + body []rune + start, end int + complete bool + } + initialismMatches []initialismMatch +) + +type ( + // memory pools of temporary objects. + // + // These are used to recycle temporarily allocated objects + // and relieve the GC from undue pressure. + + matchesPool struct { + *sync.Pool } - splitterOption func(*splitter) *splitter + buffersPool struct { + *sync.Pool + } + + lexemsPool struct { + *sync.Pool + } + + splittersPool struct { + *sync.Pool + } ) -// split calls the splitter; splitter provides more control and post options +var ( + // poolOfMatches holds temporary slices for recycling during the initialism match process + poolOfMatches = matchesPool{ + Pool: &sync.Pool{ + New: func() any { + s := make(initialismMatches, 0, maxAllocMatches) + + return &s + }, + }, + } + + poolOfBuffers = buffersPool{ + Pool: &sync.Pool{ + New: func() any { + return new(bytes.Buffer) + }, + }, + } + + poolOfLexems = lexemsPool{ + Pool: &sync.Pool{ + New: func() any { + s := make([]nameLexem, 0, maxAllocMatches) + + return &s + }, + }, + } + + poolOfSplitters = splittersPool{ + Pool: &sync.Pool{ + New: func() any { + s := newSplitter() + + return &s + }, + }, + } +) + +// nameReplaceTable finds a word representation for special characters. +func nameReplaceTable(r rune) (string, bool) { + switch r { + case '@': + return "At ", true + case '&': + return "And ", true + case '|': + return "Pipe ", true + case '$': + return "Dollar ", true + case '!': + return "Bang ", true + case '-': + return "", true + case '_': + return "", true + default: + return "", false + } +} + +// split calls the splitter. +// +// Use newSplitter for more control and options func split(str string) []string { - lexems := newSplitter().split(str) - result := make([]string, 0, len(lexems)) + s := poolOfSplitters.BorrowSplitter() + lexems := s.split(str) + result := make([]string, 0, len(*lexems)) - for _, lexem := range lexems { + for _, lexem := range *lexems { result = append(result, lexem.GetOriginal()) } + poolOfLexems.RedeemLexems(lexems) + poolOfSplitters.RedeemSplitter(s) return result } -func (s *splitter) split(str string) []nameLexem { - return s.toNameLexems(str) -} - -func newSplitter(options ...splitterOption) *splitter { - splitter := &splitter{ +func newSplitter(options ...splitterOption) splitter { + s := splitter{ postSplitInitialismCheck: false, initialisms: initialisms, + initialismsRunes: initialismsRunes, + initialismsUpperCased: initialismsUpperCased, } for _, option := range options { - splitter = option(splitter) + option(&s) } - return splitter + return s } // withPostSplitInitialismCheck allows to catch initialisms after main split process -func withPostSplitInitialismCheck(s *splitter) *splitter { +func withPostSplitInitialismCheck(s *splitter) { s.postSplitInitialismCheck = true +} + +func (p matchesPool) BorrowMatches() *initialismMatches { + s := p.Get().(*initialismMatches) + *s = (*s)[:0] // reset slice, keep allocated capacity + return s } -type ( - initialismMatch struct { - start, end int - body []rune - complete bool +func (p buffersPool) BorrowBuffer(size int) *bytes.Buffer { + s := p.Get().(*bytes.Buffer) + s.Reset() + + if s.Cap() < size { + s.Grow(size) } - initialismMatches []*initialismMatch -) -func (s *splitter) toNameLexems(name string) []nameLexem { + return s +} + +func (p lexemsPool) BorrowLexems() *[]nameLexem { + s := p.Get().(*[]nameLexem) + *s = (*s)[:0] // reset slice, keep allocated capacity + + return s +} + +func (p splittersPool) BorrowSplitter(options ...splitterOption) *splitter { + s := p.Get().(*splitter) + s.postSplitInitialismCheck = false // reset options + for _, apply := range options { + apply(s) + } + + return s +} + +func (p matchesPool) RedeemMatches(s *initialismMatches) { + p.Put(s) +} + +func (p buffersPool) RedeemBuffer(s *bytes.Buffer) { + p.Put(s) +} + +func (p lexemsPool) RedeemLexems(s *[]nameLexem) { + p.Put(s) +} + +func (p splittersPool) RedeemSplitter(s *splitter) { + p.Put(s) +} + +func (m initialismMatch) isZero() bool { + return m.start == 0 && m.end == 0 +} + +func (s splitter) split(name string) *[]nameLexem { nameRunes := []rune(name) matches := s.gatherInitialismMatches(nameRunes) + if matches == nil { + return poolOfLexems.BorrowLexems() + } + return s.mapMatchesToNameLexems(nameRunes, matches) } -func (s *splitter) gatherInitialismMatches(nameRunes []rune) initialismMatches { - matches := make(initialismMatches, 0) +func (s splitter) gatherInitialismMatches(nameRunes []rune) *initialismMatches { + var matches *initialismMatches for currentRunePosition, currentRune := range nameRunes { - newMatches := make(initialismMatches, 0, len(matches)) + // recycle these allocations as we loop over runes + // with such recycling, only 2 slices should be allocated per call + // instead of o(n). + newMatches := poolOfMatches.BorrowMatches() // check current initialism matches - for _, match := range matches { - if keepCompleteMatch := match.complete; keepCompleteMatch { - newMatches = append(newMatches, match) - continue - } + if matches != nil { // skip first iteration + for _, match := range *matches { + if keepCompleteMatch := match.complete; keepCompleteMatch { + *newMatches = append(*newMatches, match) + continue + } - // drop failed match - currentMatchRune := match.body[currentRunePosition-match.start] - if !s.initialismRuneEqual(currentMatchRune, currentRune) { - continue - } + // drop failed match + currentMatchRune := match.body[currentRunePosition-match.start] + if currentMatchRune != currentRune { + continue + } - // try to complete ongoing match - if currentRunePosition-match.start == len(match.body)-1 { - // we are close; the next step is to check the symbol ahead - // if it is a small letter, then it is not the end of match - // but beginning of the next word - - if currentRunePosition < len(nameRunes)-1 { - nextRune := nameRunes[currentRunePosition+1] - if newWord := unicode.IsLower(nextRune); newWord { - // oh ok, it was the start of a new word - continue + // try to complete ongoing match + if currentRunePosition-match.start == len(match.body)-1 { + // we are close; the next step is to check the symbol ahead + // if it is a small letter, then it is not the end of match + // but beginning of the next word + + if currentRunePosition < len(nameRunes)-1 { + nextRune := nameRunes[currentRunePosition+1] + if newWord := unicode.IsLower(nextRune); newWord { + // oh ok, it was the start of a new word + continue + } } + + match.complete = true + match.end = currentRunePosition } - match.complete = true - match.end = currentRunePosition + *newMatches = append(*newMatches, match) } - - newMatches = append(newMatches, match) } // check for new initialism matches - for _, initialism := range s.initialisms { - initialismRunes := []rune(initialism) - if s.initialismRuneEqual(initialismRunes[0], currentRune) { - newMatches = append(newMatches, &initialismMatch{ + for i := range s.initialisms { + initialismRunes := s.initialismsRunes[i] + if initialismRunes[0] == currentRune { + *newMatches = append(*newMatches, initialismMatch{ start: currentRunePosition, body: initialismRunes, complete: false, @@ -140,24 +285,28 @@ func (s *splitter) gatherInitialismMatches(nameRunes []rune) initialismMatches { } } + if matches != nil { + poolOfMatches.RedeemMatches(matches) + } matches = newMatches } + // up to the caller to redeem this last slice return matches } -func (s *splitter) mapMatchesToNameLexems(nameRunes []rune, matches initialismMatches) []nameLexem { - nameLexems := make([]nameLexem, 0) +func (s splitter) mapMatchesToNameLexems(nameRunes []rune, matches *initialismMatches) *[]nameLexem { + nameLexems := poolOfLexems.BorrowLexems() - var lastAcceptedMatch *initialismMatch - for _, match := range matches { + var lastAcceptedMatch initialismMatch + for _, match := range *matches { if !match.complete { continue } - if firstMatch := lastAcceptedMatch == nil; firstMatch { - nameLexems = append(nameLexems, s.breakCasualString(nameRunes[:match.start])...) - nameLexems = append(nameLexems, s.breakInitialism(string(match.body))) + if firstMatch := lastAcceptedMatch.isZero(); firstMatch { + s.appendBrokenDownCasualString(nameLexems, nameRunes[:match.start]) + *nameLexems = append(*nameLexems, s.breakInitialism(string(match.body))) lastAcceptedMatch = match @@ -169,63 +318,66 @@ func (s *splitter) mapMatchesToNameLexems(nameRunes []rune, matches initialismMa } middle := nameRunes[lastAcceptedMatch.end+1 : match.start] - nameLexems = append(nameLexems, s.breakCasualString(middle)...) - nameLexems = append(nameLexems, s.breakInitialism(string(match.body))) + s.appendBrokenDownCasualString(nameLexems, middle) + *nameLexems = append(*nameLexems, s.breakInitialism(string(match.body))) lastAcceptedMatch = match } // we have not found any accepted matches - if lastAcceptedMatch == nil { - return s.breakCasualString(nameRunes) - } - - if lastAcceptedMatch.end+1 != len(nameRunes) { + if lastAcceptedMatch.isZero() { + *nameLexems = (*nameLexems)[:0] + s.appendBrokenDownCasualString(nameLexems, nameRunes) + } else if lastAcceptedMatch.end+1 != len(nameRunes) { rest := nameRunes[lastAcceptedMatch.end+1:] - nameLexems = append(nameLexems, s.breakCasualString(rest)...) + s.appendBrokenDownCasualString(nameLexems, rest) } - return nameLexems -} + poolOfMatches.RedeemMatches(matches) -func (s *splitter) initialismRuneEqual(a, b rune) bool { - return a == b + return nameLexems } -func (s *splitter) breakInitialism(original string) nameLexem { +func (s splitter) breakInitialism(original string) nameLexem { return newInitialismNameLexem(original, original) } -func (s *splitter) breakCasualString(str []rune) []nameLexem { - segments := make([]nameLexem, 0) - currentSegment := "" +func (s splitter) appendBrokenDownCasualString(segments *[]nameLexem, str []rune) { + currentSegment := poolOfBuffers.BorrowBuffer(len(str)) // unlike strings.Builder, bytes.Buffer initial storage can reused + defer func() { + poolOfBuffers.RedeemBuffer(currentSegment) + }() addCasualNameLexem := func(original string) { - segments = append(segments, newCasualNameLexem(original)) + *segments = append(*segments, newCasualNameLexem(original)) } addInitialismNameLexem := func(original, match string) { - segments = append(segments, newInitialismNameLexem(original, match)) + *segments = append(*segments, newInitialismNameLexem(original, match)) } - addNameLexem := func(original string) { - if s.postSplitInitialismCheck { - for _, initialism := range s.initialisms { - if upper(initialism) == upper(original) { - addInitialismNameLexem(original, initialism) + var addNameLexem func(string) + if s.postSplitInitialismCheck { + addNameLexem = func(original string) { + for i := range s.initialisms { + if isEqualFoldIgnoreSpace(s.initialismsUpperCased[i], original) { + addInitialismNameLexem(original, s.initialisms[i]) + return } } - } - addCasualNameLexem(original) + addCasualNameLexem(original) + } + } else { + addNameLexem = addCasualNameLexem } - for _, rn := range string(str) { - if replace, found := nameReplaceTable[rn]; found { - if currentSegment != "" { - addNameLexem(currentSegment) - currentSegment = "" + for _, rn := range str { + if replace, found := nameReplaceTable(rn); found { + if currentSegment.Len() > 0 { + addNameLexem(currentSegment.String()) + currentSegment.Reset() } if replace != "" { @@ -236,27 +388,121 @@ func (s *splitter) breakCasualString(str []rune) []nameLexem { } if !unicode.In(rn, unicode.L, unicode.M, unicode.N, unicode.Pc) { - if currentSegment != "" { - addNameLexem(currentSegment) - currentSegment = "" + if currentSegment.Len() > 0 { + addNameLexem(currentSegment.String()) + currentSegment.Reset() } continue } if unicode.IsUpper(rn) { - if currentSegment != "" { - addNameLexem(currentSegment) + if currentSegment.Len() > 0 { + addNameLexem(currentSegment.String()) } - currentSegment = "" + currentSegment.Reset() } - currentSegment += string(rn) + currentSegment.WriteRune(rn) + } + + if currentSegment.Len() > 0 { + addNameLexem(currentSegment.String()) } +} + +// isEqualFoldIgnoreSpace is the same as strings.EqualFold, but +// it ignores leading and trailing blank spaces in the compared +// string. +// +// base is assumed to be composed of upper-cased runes, and be already +// trimmed. +// +// This code is heavily inspired from strings.EqualFold. +func isEqualFoldIgnoreSpace(base []rune, str string) bool { + var i, baseIndex int + // equivalent to b := []byte(str), but without data copy + b := hackStringBytes(str) + + for i < len(b) { + if c := b[i]; c < utf8.RuneSelf { + // fast path for ASCII + if c != ' ' && c != '\t' { + break + } + i++ + + continue + } + + // unicode case + r, size := utf8.DecodeRune(b[i:]) + if !unicode.IsSpace(r) { + break + } + i += size + } + + if i >= len(b) { + return len(base) == 0 + } + + for _, baseRune := range base { + if i >= len(b) { + break + } + + if c := b[i]; c < utf8.RuneSelf { + // single byte rune case (ASCII) + if baseRune >= utf8.RuneSelf { + return false + } + + baseChar := byte(baseRune) + if c != baseChar && + !('a' <= c && c <= 'z' && c-'a'+'A' == baseChar) { + return false + } + + baseIndex++ + i++ + + continue + } + + // unicode case + r, size := utf8.DecodeRune(b[i:]) + if unicode.ToUpper(r) != baseRune { + return false + } + baseIndex++ + i += size + } + + if baseIndex != len(base) { + return false + } + + // all passed: now we should only have blanks + for i < len(b) { + if c := b[i]; c < utf8.RuneSelf { + // fast path for ASCII + if c != ' ' && c != '\t' { + return false + } + i++ + + continue + } + + // unicode case + r, size := utf8.DecodeRune(b[i:]) + if !unicode.IsSpace(r) { + return false + } - if currentSegment != "" { - addNameLexem(currentSegment) + i += size } - return segments + return true } diff --git a/vendor/github.com/go-openapi/swag/string_bytes.go b/vendor/github.com/go-openapi/swag/string_bytes.go new file mode 100644 index 000000000000..90745d5ca9f1 --- /dev/null +++ b/vendor/github.com/go-openapi/swag/string_bytes.go @@ -0,0 +1,8 @@ +package swag + +import "unsafe" + +// hackStringBytes returns the (unsafe) underlying bytes slice of a string. +func hackStringBytes(str string) []byte { + return unsafe.Slice(unsafe.StringData(str), len(str)) +} diff --git a/vendor/github.com/go-openapi/swag/util.go b/vendor/github.com/go-openapi/swag/util.go index 0413f7447ccb..5051401c49ff 100644 --- a/vendor/github.com/go-openapi/swag/util.go +++ b/vendor/github.com/go-openapi/swag/util.go @@ -18,76 +18,25 @@ import ( "reflect" "strings" "unicode" + "unicode/utf8" ) -// commonInitialisms are common acronyms that are kept as whole uppercased words. -var commonInitialisms *indexOfInitialisms - -// initialisms is a slice of sorted initialisms -var initialisms []string - -var isInitialism func(string) bool - // GoNamePrefixFunc sets an optional rule to prefix go names // which do not start with a letter. // +// The prefix function is assumed to return a string that starts with an upper case letter. +// // e.g. to help convert "123" into "{prefix}123" // // The default is to prefix with "X" var GoNamePrefixFunc func(string) string -func init() { - // Taken from https://github.com/golang/lint/blob/3390df4df2787994aea98de825b964ac7944b817/lint.go#L732-L769 - var configuredInitialisms = map[string]bool{ - "ACL": true, - "API": true, - "ASCII": true, - "CPU": true, - "CSS": true, - "DNS": true, - "EOF": true, - "GUID": true, - "HTML": true, - "HTTPS": true, - "HTTP": true, - "ID": true, - "IP": true, - "IPv4": true, - "IPv6": true, - "JSON": true, - "LHS": true, - "OAI": true, - "QPS": true, - "RAM": true, - "RHS": true, - "RPC": true, - "SLA": true, - "SMTP": true, - "SQL": true, - "SSH": true, - "TCP": true, - "TLS": true, - "TTL": true, - "UDP": true, - "UI": true, - "UID": true, - "UUID": true, - "URI": true, - "URL": true, - "UTF8": true, - "VM": true, - "XML": true, - "XMPP": true, - "XSRF": true, - "XSS": true, +func prefixFunc(name, in string) string { + if GoNamePrefixFunc == nil { + return "X" + in } - // a thread-safe index of initialisms - commonInitialisms = newIndexOfInitialisms().load(configuredInitialisms) - initialisms = commonInitialisms.sorted() - - // a test function - isInitialism = commonInitialisms.isInitialism + return GoNamePrefixFunc(name) + in } const ( @@ -156,22 +105,6 @@ func SplitByFormat(data, format string) []string { return result } -type byInitialism []string - -func (s byInitialism) Len() int { - return len(s) -} -func (s byInitialism) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} -func (s byInitialism) Less(i, j int) bool { - if len(s[i]) != len(s[j]) { - return len(s[i]) < len(s[j]) - } - - return strings.Compare(s[i], s[j]) > 0 -} - // Removes leading whitespaces func trim(str string) string { return strings.TrimSpace(str) @@ -188,15 +121,20 @@ func lower(str string) string { } // Camelize an uppercased word -func Camelize(word string) (camelized string) { +func Camelize(word string) string { + camelized := poolOfBuffers.BorrowBuffer(len(word)) + defer func() { + poolOfBuffers.RedeemBuffer(camelized) + }() + for pos, ru := range []rune(word) { if pos > 0 { - camelized += string(unicode.ToLower(ru)) + camelized.WriteRune(unicode.ToLower(ru)) } else { - camelized += string(unicode.ToUpper(ru)) + camelized.WriteRune(unicode.ToUpper(ru)) } } - return + return camelized.String() } // ToFileName lowercases and underscores a go type name @@ -224,26 +162,31 @@ func ToCommandName(name string) string { // ToHumanNameLower represents a code name as a human series of words func ToHumanNameLower(name string) string { - in := newSplitter(withPostSplitInitialismCheck).split(name) - out := make([]string, 0, len(in)) + s := poolOfSplitters.BorrowSplitter(withPostSplitInitialismCheck) + in := s.split(name) + poolOfSplitters.RedeemSplitter(s) + out := make([]string, 0, len(*in)) - for _, w := range in { + for _, w := range *in { if !w.IsInitialism() { out = append(out, lower(w.GetOriginal())) } else { out = append(out, trim(w.GetOriginal())) } } + poolOfLexems.RedeemLexems(in) return strings.Join(out, " ") } // ToHumanNameTitle represents a code name as a human series of words with the first letters titleized func ToHumanNameTitle(name string) string { - in := newSplitter(withPostSplitInitialismCheck).split(name) + s := poolOfSplitters.BorrowSplitter(withPostSplitInitialismCheck) + in := s.split(name) + poolOfSplitters.RedeemSplitter(s) - out := make([]string, 0, len(in)) - for _, w := range in { + out := make([]string, 0, len(*in)) + for _, w := range *in { original := trim(w.GetOriginal()) if !w.IsInitialism() { out = append(out, Camelize(original)) @@ -251,6 +194,8 @@ func ToHumanNameTitle(name string) string { out = append(out, original) } } + poolOfLexems.RedeemLexems(in) + return strings.Join(out, " ") } @@ -283,35 +228,70 @@ func ToVarName(name string) string { // ToGoName translates a swagger name which can be underscored or camel cased to a name that golint likes func ToGoName(name string) string { - lexems := newSplitter(withPostSplitInitialismCheck).split(name) + s := poolOfSplitters.BorrowSplitter(withPostSplitInitialismCheck) + lexems := s.split(name) + poolOfSplitters.RedeemSplitter(s) + defer func() { + poolOfLexems.RedeemLexems(lexems) + }() + lexemes := *lexems + + if len(lexemes) == 0 { + return "" + } + + result := poolOfBuffers.BorrowBuffer(len(name)) + defer func() { + poolOfBuffers.RedeemBuffer(result) + }() + + // check if not starting with a letter, upper case + firstPart := lexemes[0].GetUnsafeGoName() + if lexemes[0].IsInitialism() { + firstPart = upper(firstPart) + } + + if c := firstPart[0]; c < utf8.RuneSelf { + // ASCII + switch { + case 'A' <= c && c <= 'Z': + result.WriteString(firstPart) + case 'a' <= c && c <= 'z': + result.WriteByte(c - 'a' + 'A') + result.WriteString(firstPart[1:]) + default: + result.WriteString(prefixFunc(name, firstPart)) + // NOTE: no longer check if prefixFunc returns a string that starts with uppercase: + // assume this is always the case + } + } else { + // unicode + firstRune, _ := utf8.DecodeRuneInString(firstPart) + switch { + case !unicode.IsLetter(firstRune): + result.WriteString(prefixFunc(name, firstPart)) + case !unicode.IsUpper(firstRune): + result.WriteString(prefixFunc(name, firstPart)) + /* + result.WriteRune(unicode.ToUpper(firstRune)) + result.WriteString(firstPart[offset:]) + */ + default: + result.WriteString(firstPart) + } + } - result := "" - for _, lexem := range lexems { + for _, lexem := range lexemes[1:] { goName := lexem.GetUnsafeGoName() // to support old behavior if lexem.IsInitialism() { goName = upper(goName) } - result += goName + result.WriteString(goName) } - if len(result) > 0 { - // Only prefix with X when the first character isn't an ascii letter - first := []rune(result)[0] - if !unicode.IsLetter(first) || (first > unicode.MaxASCII && !unicode.IsUpper(first)) { - if GoNamePrefixFunc == nil { - return "X" + result - } - result = GoNamePrefixFunc(name) + result - } - first = []rune(result)[0] - if unicode.IsLetter(first) && !unicode.IsUpper(first) { - result = string(append([]rune{unicode.ToUpper(first)}, []rune(result)[1:]...)) - } - } - - return result + return result.String() } // ContainsStrings searches a slice of strings for a case-sensitive match @@ -376,16 +356,6 @@ func IsZero(data interface{}) bool { } } -// AddInitialisms add additional initialisms -func AddInitialisms(words ...string) { - for _, word := range words { - // commonInitialisms[upper(word)] = true - commonInitialisms.add(upper(word)) - } - // sort again - initialisms = commonInitialisms.sorted() -} - // CommandLineOptionsGroup represents a group of user-defined command line options type CommandLineOptionsGroup struct { ShortDescription string diff --git a/vendor/github.com/go-openapi/swag/yaml.go b/vendor/github.com/go-openapi/swag/yaml.go index a8c4e359ea65..f59e0259320c 100644 --- a/vendor/github.com/go-openapi/swag/yaml.go +++ b/vendor/github.com/go-openapi/swag/yaml.go @@ -16,6 +16,7 @@ package swag import ( "encoding/json" + "errors" "fmt" "path/filepath" "reflect" @@ -50,7 +51,7 @@ func BytesToYAMLDoc(data []byte) (interface{}, error) { return nil, err } if document.Kind != yaml.DocumentNode || len(document.Content) != 1 || document.Content[0].Kind != yaml.MappingNode { - return nil, fmt.Errorf("only YAML documents that are objects are supported") + return nil, errors.New("only YAML documents that are objects are supported") } return &document, nil } diff --git a/vendor/github.com/golang/protobuf/ptypes/any.go b/vendor/github.com/golang/protobuf/ptypes/any.go deleted file mode 100644 index fdff3fdb4cba..000000000000 --- a/vendor/github.com/golang/protobuf/ptypes/any.go +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ptypes - -import ( - "fmt" - "strings" - - "github.com/golang/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" - - anypb "github.com/golang/protobuf/ptypes/any" -) - -const urlPrefix = "type.googleapis.com/" - -// AnyMessageName returns the message name contained in an anypb.Any message. -// Most type assertions should use the Is function instead. -// -// Deprecated: Call the any.MessageName method instead. -func AnyMessageName(any *anypb.Any) (string, error) { - name, err := anyMessageName(any) - return string(name), err -} -func anyMessageName(any *anypb.Any) (protoreflect.FullName, error) { - if any == nil { - return "", fmt.Errorf("message is nil") - } - name := protoreflect.FullName(any.TypeUrl) - if i := strings.LastIndex(any.TypeUrl, "/"); i >= 0 { - name = name[i+len("/"):] - } - if !name.IsValid() { - return "", fmt.Errorf("message type url %q is invalid", any.TypeUrl) - } - return name, nil -} - -// MarshalAny marshals the given message m into an anypb.Any message. -// -// Deprecated: Call the anypb.New function instead. -func MarshalAny(m proto.Message) (*anypb.Any, error) { - switch dm := m.(type) { - case DynamicAny: - m = dm.Message - case *DynamicAny: - if dm == nil { - return nil, proto.ErrNil - } - m = dm.Message - } - b, err := proto.Marshal(m) - if err != nil { - return nil, err - } - return &anypb.Any{TypeUrl: urlPrefix + proto.MessageName(m), Value: b}, nil -} - -// Empty returns a new message of the type specified in an anypb.Any message. -// It returns protoregistry.NotFound if the corresponding message type could not -// be resolved in the global registry. -// -// Deprecated: Use protoregistry.GlobalTypes.FindMessageByName instead -// to resolve the message name and create a new instance of it. -func Empty(any *anypb.Any) (proto.Message, error) { - name, err := anyMessageName(any) - if err != nil { - return nil, err - } - mt, err := protoregistry.GlobalTypes.FindMessageByName(name) - if err != nil { - return nil, err - } - return proto.MessageV1(mt.New().Interface()), nil -} - -// UnmarshalAny unmarshals the encoded value contained in the anypb.Any message -// into the provided message m. It returns an error if the target message -// does not match the type in the Any message or if an unmarshal error occurs. -// -// The target message m may be a *DynamicAny message. If the underlying message -// type could not be resolved, then this returns protoregistry.NotFound. -// -// Deprecated: Call the any.UnmarshalTo method instead. -func UnmarshalAny(any *anypb.Any, m proto.Message) error { - if dm, ok := m.(*DynamicAny); ok { - if dm.Message == nil { - var err error - dm.Message, err = Empty(any) - if err != nil { - return err - } - } - m = dm.Message - } - - anyName, err := AnyMessageName(any) - if err != nil { - return err - } - msgName := proto.MessageName(m) - if anyName != msgName { - return fmt.Errorf("mismatched message type: got %q want %q", anyName, msgName) - } - return proto.Unmarshal(any.Value, m) -} - -// Is reports whether the Any message contains a message of the specified type. -// -// Deprecated: Call the any.MessageIs method instead. -func Is(any *anypb.Any, m proto.Message) bool { - if any == nil || m == nil { - return false - } - name := proto.MessageName(m) - if !strings.HasSuffix(any.TypeUrl, name) { - return false - } - return len(any.TypeUrl) == len(name) || any.TypeUrl[len(any.TypeUrl)-len(name)-1] == '/' -} - -// DynamicAny is a value that can be passed to UnmarshalAny to automatically -// allocate a proto.Message for the type specified in an anypb.Any message. -// The allocated message is stored in the embedded proto.Message. -// -// Example: -// -// var x ptypes.DynamicAny -// if err := ptypes.UnmarshalAny(a, &x); err != nil { ... } -// fmt.Printf("unmarshaled message: %v", x.Message) -// -// Deprecated: Use the any.UnmarshalNew method instead to unmarshal -// the any message contents into a new instance of the underlying message. -type DynamicAny struct{ proto.Message } - -func (m DynamicAny) String() string { - if m.Message == nil { - return "" - } - return m.Message.String() -} -func (m DynamicAny) Reset() { - if m.Message == nil { - return - } - m.Message.Reset() -} -func (m DynamicAny) ProtoMessage() { - return -} -func (m DynamicAny) ProtoReflect() protoreflect.Message { - if m.Message == nil { - return nil - } - return dynamicAny{proto.MessageReflect(m.Message)} -} - -type dynamicAny struct{ protoreflect.Message } - -func (m dynamicAny) Type() protoreflect.MessageType { - return dynamicAnyType{m.Message.Type()} -} -func (m dynamicAny) New() protoreflect.Message { - return dynamicAnyType{m.Message.Type()}.New() -} -func (m dynamicAny) Interface() protoreflect.ProtoMessage { - return DynamicAny{proto.MessageV1(m.Message.Interface())} -} - -type dynamicAnyType struct{ protoreflect.MessageType } - -func (t dynamicAnyType) New() protoreflect.Message { - return dynamicAny{t.MessageType.New()} -} -func (t dynamicAnyType) Zero() protoreflect.Message { - return dynamicAny{t.MessageType.Zero()} -} diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go deleted file mode 100644 index 0ef27d33deb9..000000000000 --- a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go +++ /dev/null @@ -1,62 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: github.com/golang/protobuf/ptypes/any/any.proto - -package any - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - anypb "google.golang.org/protobuf/types/known/anypb" - reflect "reflect" -) - -// Symbols defined in public import of google/protobuf/any.proto. - -type Any = anypb.Any - -var File_github_com_golang_protobuf_ptypes_any_any_proto protoreflect.FileDescriptor - -var file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc = []byte{ - 0x0a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, - 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2f, 0x61, 0x6e, 0x79, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x2b, 0x5a, 0x29, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, - 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2f, 0x61, 0x6e, 0x79, 0x3b, 0x61, 0x6e, 0x79, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} - -var file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes = []interface{}{} -var file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_github_com_golang_protobuf_ptypes_any_any_proto_init() } -func file_github_com_golang_protobuf_ptypes_any_any_proto_init() { - if File_github_com_golang_protobuf_ptypes_any_any_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc, - NumEnums: 0, - NumMessages: 0, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes, - DependencyIndexes: file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs, - }.Build() - File_github_com_golang_protobuf_ptypes_any_any_proto = out.File - file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc = nil - file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes = nil - file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs = nil -} diff --git a/vendor/github.com/golang/protobuf/ptypes/doc.go b/vendor/github.com/golang/protobuf/ptypes/doc.go deleted file mode 100644 index d3c33259d28d..000000000000 --- a/vendor/github.com/golang/protobuf/ptypes/doc.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package ptypes provides functionality for interacting with well-known types. -// -// Deprecated: Well-known types have specialized functionality directly -// injected into the generated packages for each message type. -// See the deprecation notice for each function for the suggested alternative. -package ptypes diff --git a/vendor/github.com/golang/protobuf/ptypes/duration.go b/vendor/github.com/golang/protobuf/ptypes/duration.go deleted file mode 100644 index b2b55dd851f5..000000000000 --- a/vendor/github.com/golang/protobuf/ptypes/duration.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ptypes - -import ( - "errors" - "fmt" - "time" - - durationpb "github.com/golang/protobuf/ptypes/duration" -) - -// Range of google.protobuf.Duration as specified in duration.proto. -// This is about 10,000 years in seconds. -const ( - maxSeconds = int64(10000 * 365.25 * 24 * 60 * 60) - minSeconds = -maxSeconds -) - -// Duration converts a durationpb.Duration to a time.Duration. -// Duration returns an error if dur is invalid or overflows a time.Duration. -// -// Deprecated: Call the dur.AsDuration and dur.CheckValid methods instead. -func Duration(dur *durationpb.Duration) (time.Duration, error) { - if err := validateDuration(dur); err != nil { - return 0, err - } - d := time.Duration(dur.Seconds) * time.Second - if int64(d/time.Second) != dur.Seconds { - return 0, fmt.Errorf("duration: %v is out of range for time.Duration", dur) - } - if dur.Nanos != 0 { - d += time.Duration(dur.Nanos) * time.Nanosecond - if (d < 0) != (dur.Nanos < 0) { - return 0, fmt.Errorf("duration: %v is out of range for time.Duration", dur) - } - } - return d, nil -} - -// DurationProto converts a time.Duration to a durationpb.Duration. -// -// Deprecated: Call the durationpb.New function instead. -func DurationProto(d time.Duration) *durationpb.Duration { - nanos := d.Nanoseconds() - secs := nanos / 1e9 - nanos -= secs * 1e9 - return &durationpb.Duration{ - Seconds: int64(secs), - Nanos: int32(nanos), - } -} - -// validateDuration determines whether the durationpb.Duration is valid -// according to the definition in google/protobuf/duration.proto. -// A valid durpb.Duration may still be too large to fit into a time.Duration -// Note that the range of durationpb.Duration is about 10,000 years, -// while the range of time.Duration is about 290 years. -func validateDuration(dur *durationpb.Duration) error { - if dur == nil { - return errors.New("duration: nil Duration") - } - if dur.Seconds < minSeconds || dur.Seconds > maxSeconds { - return fmt.Errorf("duration: %v: seconds out of range", dur) - } - if dur.Nanos <= -1e9 || dur.Nanos >= 1e9 { - return fmt.Errorf("duration: %v: nanos out of range", dur) - } - // Seconds and Nanos must have the same sign, unless d.Nanos is zero. - if (dur.Seconds < 0 && dur.Nanos > 0) || (dur.Seconds > 0 && dur.Nanos < 0) { - return fmt.Errorf("duration: %v: seconds and nanos have different signs", dur) - } - return nil -} diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go b/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go deleted file mode 100644 index d0079ee3ef37..000000000000 --- a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go +++ /dev/null @@ -1,63 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: github.com/golang/protobuf/ptypes/duration/duration.proto - -package duration - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - durationpb "google.golang.org/protobuf/types/known/durationpb" - reflect "reflect" -) - -// Symbols defined in public import of google/protobuf/duration.proto. - -type Duration = durationpb.Duration - -var File_github_com_golang_protobuf_ptypes_duration_duration_proto protoreflect.FileDescriptor - -var file_github_com_golang_protobuf_ptypes_duration_duration_proto_rawDesc = []byte{ - 0x0a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, - 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x35, 0x5a, 0x33, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var file_github_com_golang_protobuf_ptypes_duration_duration_proto_goTypes = []interface{}{} -var file_github_com_golang_protobuf_ptypes_duration_duration_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_github_com_golang_protobuf_ptypes_duration_duration_proto_init() } -func file_github_com_golang_protobuf_ptypes_duration_duration_proto_init() { - if File_github_com_golang_protobuf_ptypes_duration_duration_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_golang_protobuf_ptypes_duration_duration_proto_rawDesc, - NumEnums: 0, - NumMessages: 0, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_github_com_golang_protobuf_ptypes_duration_duration_proto_goTypes, - DependencyIndexes: file_github_com_golang_protobuf_ptypes_duration_duration_proto_depIdxs, - }.Build() - File_github_com_golang_protobuf_ptypes_duration_duration_proto = out.File - file_github_com_golang_protobuf_ptypes_duration_duration_proto_rawDesc = nil - file_github_com_golang_protobuf_ptypes_duration_duration_proto_goTypes = nil - file_github_com_golang_protobuf_ptypes_duration_duration_proto_depIdxs = nil -} diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp.go b/vendor/github.com/golang/protobuf/ptypes/timestamp.go deleted file mode 100644 index 8368a3f70d38..000000000000 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp.go +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ptypes - -import ( - "errors" - "fmt" - "time" - - timestamppb "github.com/golang/protobuf/ptypes/timestamp" -) - -// Range of google.protobuf.Duration as specified in timestamp.proto. -const ( - // Seconds field of the earliest valid Timestamp. - // This is time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC).Unix(). - minValidSeconds = -62135596800 - // Seconds field just after the latest valid Timestamp. - // This is time.Date(10000, 1, 1, 0, 0, 0, 0, time.UTC).Unix(). - maxValidSeconds = 253402300800 -) - -// Timestamp converts a timestamppb.Timestamp to a time.Time. -// It returns an error if the argument is invalid. -// -// Unlike most Go functions, if Timestamp returns an error, the first return -// value is not the zero time.Time. Instead, it is the value obtained from the -// time.Unix function when passed the contents of the Timestamp, in the UTC -// locale. This may or may not be a meaningful time; many invalid Timestamps -// do map to valid time.Times. -// -// A nil Timestamp returns an error. The first return value in that case is -// undefined. -// -// Deprecated: Call the ts.AsTime and ts.CheckValid methods instead. -func Timestamp(ts *timestamppb.Timestamp) (time.Time, error) { - // Don't return the zero value on error, because corresponds to a valid - // timestamp. Instead return whatever time.Unix gives us. - var t time.Time - if ts == nil { - t = time.Unix(0, 0).UTC() // treat nil like the empty Timestamp - } else { - t = time.Unix(ts.Seconds, int64(ts.Nanos)).UTC() - } - return t, validateTimestamp(ts) -} - -// TimestampNow returns a google.protobuf.Timestamp for the current time. -// -// Deprecated: Call the timestamppb.Now function instead. -func TimestampNow() *timestamppb.Timestamp { - ts, err := TimestampProto(time.Now()) - if err != nil { - panic("ptypes: time.Now() out of Timestamp range") - } - return ts -} - -// TimestampProto converts the time.Time to a google.protobuf.Timestamp proto. -// It returns an error if the resulting Timestamp is invalid. -// -// Deprecated: Call the timestamppb.New function instead. -func TimestampProto(t time.Time) (*timestamppb.Timestamp, error) { - ts := ×tamppb.Timestamp{ - Seconds: t.Unix(), - Nanos: int32(t.Nanosecond()), - } - if err := validateTimestamp(ts); err != nil { - return nil, err - } - return ts, nil -} - -// TimestampString returns the RFC 3339 string for valid Timestamps. -// For invalid Timestamps, it returns an error message in parentheses. -// -// Deprecated: Call the ts.AsTime method instead, -// followed by a call to the Format method on the time.Time value. -func TimestampString(ts *timestamppb.Timestamp) string { - t, err := Timestamp(ts) - if err != nil { - return fmt.Sprintf("(%v)", err) - } - return t.Format(time.RFC3339Nano) -} - -// validateTimestamp determines whether a Timestamp is valid. -// A valid timestamp represents a time in the range [0001-01-01, 10000-01-01) -// and has a Nanos field in the range [0, 1e9). -// -// If the Timestamp is valid, validateTimestamp returns nil. -// Otherwise, it returns an error that describes the problem. -// -// Every valid Timestamp can be represented by a time.Time, -// but the converse is not true. -func validateTimestamp(ts *timestamppb.Timestamp) error { - if ts == nil { - return errors.New("timestamp: nil Timestamp") - } - if ts.Seconds < minValidSeconds { - return fmt.Errorf("timestamp: %v before 0001-01-01", ts) - } - if ts.Seconds >= maxValidSeconds { - return fmt.Errorf("timestamp: %v after 10000-01-01", ts) - } - if ts.Nanos < 0 || ts.Nanos >= 1e9 { - return fmt.Errorf("timestamp: %v: nanos not in range [0, 1e9)", ts) - } - return nil -} diff --git a/vendor/github.com/google/gnostic-models/compiler/extensions.go b/vendor/github.com/google/gnostic-models/compiler/extensions.go index 250c81e8c854..16ae66faa3cb 100644 --- a/vendor/github.com/google/gnostic-models/compiler/extensions.go +++ b/vendor/github.com/google/gnostic-models/compiler/extensions.go @@ -20,8 +20,8 @@ import ( "os/exec" "strings" - "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes/any" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/anypb" yaml "gopkg.in/yaml.v3" extensions "github.com/google/gnostic-models/extensions" @@ -33,7 +33,7 @@ type ExtensionHandler struct { } // CallExtension calls a binary extension handler. -func CallExtension(context *Context, in *yaml.Node, extensionName string) (handled bool, response *any.Any, err error) { +func CallExtension(context *Context, in *yaml.Node, extensionName string) (handled bool, response *anypb.Any, err error) { if context == nil || context.ExtensionHandlers == nil { return false, nil, nil } @@ -50,7 +50,7 @@ func CallExtension(context *Context, in *yaml.Node, extensionName string) (handl return handled, response, err } -func (extensionHandlers *ExtensionHandler) handle(in *yaml.Node, extensionName string) (*any.Any, error) { +func (extensionHandlers *ExtensionHandler) handle(in *yaml.Node, extensionName string) (*anypb.Any, error) { if extensionHandlers.Name != "" { yamlData, _ := yaml.Marshal(in) request := &extensions.ExtensionHandlerRequest{ diff --git a/vendor/github.com/google/gnostic-models/extensions/extension.pb.go b/vendor/github.com/google/gnostic-models/extensions/extension.pb.go index a71df8abecc6..16c40d985fd1 100644 --- a/vendor/github.com/google/gnostic-models/extensions/extension.pb.go +++ b/vendor/github.com/google/gnostic-models/extensions/extension.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.27.1 -// protoc v3.19.3 +// protoc-gen-go v1.35.1 +// protoc v4.23.4 // source: extensions/extension.proto package gnostic_extension_v1 @@ -51,11 +51,9 @@ type Version struct { func (x *Version) Reset() { *x = Version{} - if protoimpl.UnsafeEnabled { - mi := &file_extensions_extension_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_extensions_extension_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Version) String() string { @@ -66,7 +64,7 @@ func (*Version) ProtoMessage() {} func (x *Version) ProtoReflect() protoreflect.Message { mi := &file_extensions_extension_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,11 +121,9 @@ type ExtensionHandlerRequest struct { func (x *ExtensionHandlerRequest) Reset() { *x = ExtensionHandlerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_extensions_extension_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_extensions_extension_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExtensionHandlerRequest) String() string { @@ -138,7 +134,7 @@ func (*ExtensionHandlerRequest) ProtoMessage() {} func (x *ExtensionHandlerRequest) ProtoReflect() protoreflect.Message { mi := &file_extensions_extension_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -191,11 +187,9 @@ type ExtensionHandlerResponse struct { func (x *ExtensionHandlerResponse) Reset() { *x = ExtensionHandlerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_extensions_extension_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_extensions_extension_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExtensionHandlerResponse) String() string { @@ -206,7 +200,7 @@ func (*ExtensionHandlerResponse) ProtoMessage() {} func (x *ExtensionHandlerResponse) ProtoReflect() protoreflect.Message { mi := &file_extensions_extension_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -257,11 +251,9 @@ type Wrapper struct { func (x *Wrapper) Reset() { *x = Wrapper{} - if protoimpl.UnsafeEnabled { - mi := &file_extensions_extension_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_extensions_extension_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Wrapper) String() string { @@ -272,7 +264,7 @@ func (*Wrapper) ProtoMessage() {} func (x *Wrapper) ProtoReflect() protoreflect.Message { mi := &file_extensions_extension_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -367,7 +359,7 @@ func file_extensions_extension_proto_rawDescGZIP() []byte { } var file_extensions_extension_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_extensions_extension_proto_goTypes = []interface{}{ +var file_extensions_extension_proto_goTypes = []any{ (*Version)(nil), // 0: gnostic.extension.v1.Version (*ExtensionHandlerRequest)(nil), // 1: gnostic.extension.v1.ExtensionHandlerRequest (*ExtensionHandlerResponse)(nil), // 2: gnostic.extension.v1.ExtensionHandlerResponse @@ -390,56 +382,6 @@ func file_extensions_extension_proto_init() { if File_extensions_extension_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_extensions_extension_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Version); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_extensions_extension_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtensionHandlerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_extensions_extension_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtensionHandlerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_extensions_extension_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Wrapper); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/vendor/github.com/google/gnostic-models/extensions/extensions.go b/vendor/github.com/google/gnostic-models/extensions/extensions.go index ec8afd009239..0768163e5ae2 100644 --- a/vendor/github.com/google/gnostic-models/extensions/extensions.go +++ b/vendor/github.com/google/gnostic-models/extensions/extensions.go @@ -19,8 +19,8 @@ import ( "log" "os" - "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/anypb" ) type extensionHandler func(name string, yamlInput string) (bool, proto.Message, error) @@ -54,7 +54,7 @@ func Main(handler extensionHandler) { response.Errors = append(response.Errors, err.Error()) } else if handled { response.Handled = true - response.Value, err = ptypes.MarshalAny(output) + response.Value, err = anypb.New(output) if err != nil { response.Errors = append(response.Errors, err.Error()) } diff --git a/vendor/github.com/google/gnostic-models/openapiv2/OpenAPIv2.pb.go b/vendor/github.com/google/gnostic-models/openapiv2/OpenAPIv2.pb.go index 65c4c913ce70..3b930b3de2a8 100644 --- a/vendor/github.com/google/gnostic-models/openapiv2/OpenAPIv2.pb.go +++ b/vendor/github.com/google/gnostic-models/openapiv2/OpenAPIv2.pb.go @@ -16,8 +16,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.27.1 -// protoc v3.19.3 +// protoc-gen-go v1.35.1 +// protoc v4.23.4 // source: openapiv2/OpenAPIv2.proto package openapi_v2 @@ -43,6 +43,7 @@ type AdditionalPropertiesItem struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *AdditionalPropertiesItem_Schema // *AdditionalPropertiesItem_Boolean Oneof isAdditionalPropertiesItem_Oneof `protobuf_oneof:"oneof"` @@ -50,11 +51,9 @@ type AdditionalPropertiesItem struct { func (x *AdditionalPropertiesItem) Reset() { *x = AdditionalPropertiesItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AdditionalPropertiesItem) String() string { @@ -65,7 +64,7 @@ func (*AdditionalPropertiesItem) ProtoMessage() {} func (x *AdditionalPropertiesItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -128,11 +127,9 @@ type Any struct { func (x *Any) Reset() { *x = Any{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Any) String() string { @@ -143,7 +140,7 @@ func (*Any) ProtoMessage() {} func (x *Any) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -186,11 +183,9 @@ type ApiKeySecurity struct { func (x *ApiKeySecurity) Reset() { *x = ApiKeySecurity{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApiKeySecurity) String() string { @@ -201,7 +196,7 @@ func (*ApiKeySecurity) ProtoMessage() {} func (x *ApiKeySecurity) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -263,11 +258,9 @@ type BasicAuthenticationSecurity struct { func (x *BasicAuthenticationSecurity) Reset() { *x = BasicAuthenticationSecurity{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BasicAuthenticationSecurity) String() string { @@ -278,7 +271,7 @@ func (*BasicAuthenticationSecurity) ProtoMessage() {} func (x *BasicAuthenticationSecurity) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -333,11 +326,9 @@ type BodyParameter struct { func (x *BodyParameter) Reset() { *x = BodyParameter{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BodyParameter) String() string { @@ -348,7 +339,7 @@ func (*BodyParameter) ProtoMessage() {} func (x *BodyParameter) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -422,11 +413,9 @@ type Contact struct { func (x *Contact) Reset() { *x = Contact{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Contact) String() string { @@ -437,7 +426,7 @@ func (*Contact) ProtoMessage() {} func (x *Contact) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -490,11 +479,9 @@ type Default struct { func (x *Default) Reset() { *x = Default{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Default) String() string { @@ -505,7 +492,7 @@ func (*Default) ProtoMessage() {} func (x *Default) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -538,11 +525,9 @@ type Definitions struct { func (x *Definitions) Reset() { *x = Definitions{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Definitions) String() string { @@ -553,7 +538,7 @@ func (*Definitions) ProtoMessage() {} func (x *Definitions) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -606,11 +591,9 @@ type Document struct { func (x *Document) Reset() { *x = Document{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Document) String() string { @@ -621,7 +604,7 @@ func (*Document) ProtoMessage() {} func (x *Document) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -758,11 +741,9 @@ type Examples struct { func (x *Examples) Reset() { *x = Examples{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Examples) String() string { @@ -773,7 +754,7 @@ func (*Examples) ProtoMessage() {} func (x *Examples) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -808,11 +789,9 @@ type ExternalDocs struct { func (x *ExternalDocs) Reset() { *x = ExternalDocs{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExternalDocs) String() string { @@ -823,7 +802,7 @@ func (*ExternalDocs) ProtoMessage() {} func (x *ExternalDocs) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -879,11 +858,9 @@ type FileSchema struct { func (x *FileSchema) Reset() { *x = FileSchema{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FileSchema) String() string { @@ -894,7 +871,7 @@ func (*FileSchema) ProtoMessage() {} func (x *FileSchema) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1016,11 +993,9 @@ type FormDataParameterSubSchema struct { func (x *FormDataParameterSubSchema) Reset() { *x = FormDataParameterSubSchema{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FormDataParameterSubSchema) String() string { @@ -1031,7 +1006,7 @@ func (*FormDataParameterSubSchema) ProtoMessage() {} func (x *FormDataParameterSubSchema) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1235,11 +1210,9 @@ type Header struct { func (x *Header) Reset() { *x = Header{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Header) String() string { @@ -1250,7 +1223,7 @@ func (*Header) ProtoMessage() {} func (x *Header) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1433,11 +1406,9 @@ type HeaderParameterSubSchema struct { func (x *HeaderParameterSubSchema) Reset() { *x = HeaderParameterSubSchema{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderParameterSubSchema) String() string { @@ -1448,7 +1419,7 @@ func (*HeaderParameterSubSchema) ProtoMessage() {} func (x *HeaderParameterSubSchema) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1627,11 +1598,9 @@ type Headers struct { func (x *Headers) Reset() { *x = Headers{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Headers) String() string { @@ -1642,7 +1611,7 @@ func (*Headers) ProtoMessage() {} func (x *Headers) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1685,11 +1654,9 @@ type Info struct { func (x *Info) Reset() { *x = Info{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Info) String() string { @@ -1700,7 +1667,7 @@ func (*Info) ProtoMessage() {} func (x *Info) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1774,11 +1741,9 @@ type ItemsItem struct { func (x *ItemsItem) Reset() { *x = ItemsItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ItemsItem) String() string { @@ -1789,7 +1754,7 @@ func (*ItemsItem) ProtoMessage() {} func (x *ItemsItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1822,11 +1787,9 @@ type JsonReference struct { func (x *JsonReference) Reset() { *x = JsonReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JsonReference) String() string { @@ -1837,7 +1800,7 @@ func (*JsonReference) ProtoMessage() {} func (x *JsonReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1880,11 +1843,9 @@ type License struct { func (x *License) Reset() { *x = License{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *License) String() string { @@ -1895,7 +1856,7 @@ func (*License) ProtoMessage() {} func (x *License) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1945,11 +1906,9 @@ type NamedAny struct { func (x *NamedAny) Reset() { *x = NamedAny{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedAny) String() string { @@ -1960,7 +1919,7 @@ func (*NamedAny) ProtoMessage() {} func (x *NamedAny) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2003,11 +1962,9 @@ type NamedHeader struct { func (x *NamedHeader) Reset() { *x = NamedHeader{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedHeader) String() string { @@ -2018,7 +1975,7 @@ func (*NamedHeader) ProtoMessage() {} func (x *NamedHeader) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2061,11 +2018,9 @@ type NamedParameter struct { func (x *NamedParameter) Reset() { *x = NamedParameter{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedParameter) String() string { @@ -2076,7 +2031,7 @@ func (*NamedParameter) ProtoMessage() {} func (x *NamedParameter) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2119,11 +2074,9 @@ type NamedPathItem struct { func (x *NamedPathItem) Reset() { *x = NamedPathItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedPathItem) String() string { @@ -2134,7 +2087,7 @@ func (*NamedPathItem) ProtoMessage() {} func (x *NamedPathItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2177,11 +2130,9 @@ type NamedResponse struct { func (x *NamedResponse) Reset() { *x = NamedResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedResponse) String() string { @@ -2192,7 +2143,7 @@ func (*NamedResponse) ProtoMessage() {} func (x *NamedResponse) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2235,11 +2186,9 @@ type NamedResponseValue struct { func (x *NamedResponseValue) Reset() { *x = NamedResponseValue{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedResponseValue) String() string { @@ -2250,7 +2199,7 @@ func (*NamedResponseValue) ProtoMessage() {} func (x *NamedResponseValue) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2293,11 +2242,9 @@ type NamedSchema struct { func (x *NamedSchema) Reset() { *x = NamedSchema{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedSchema) String() string { @@ -2308,7 +2255,7 @@ func (*NamedSchema) ProtoMessage() {} func (x *NamedSchema) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2351,11 +2298,9 @@ type NamedSecurityDefinitionsItem struct { func (x *NamedSecurityDefinitionsItem) Reset() { *x = NamedSecurityDefinitionsItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedSecurityDefinitionsItem) String() string { @@ -2366,7 +2311,7 @@ func (*NamedSecurityDefinitionsItem) ProtoMessage() {} func (x *NamedSecurityDefinitionsItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2409,11 +2354,9 @@ type NamedString struct { func (x *NamedString) Reset() { *x = NamedString{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedString) String() string { @@ -2424,7 +2367,7 @@ func (*NamedString) ProtoMessage() {} func (x *NamedString) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2467,11 +2410,9 @@ type NamedStringArray struct { func (x *NamedStringArray) Reset() { *x = NamedStringArray{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedStringArray) String() string { @@ -2482,7 +2423,7 @@ func (*NamedStringArray) ProtoMessage() {} func (x *NamedStringArray) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2517,6 +2458,7 @@ type NonBodyParameter struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *NonBodyParameter_HeaderParameterSubSchema // *NonBodyParameter_FormDataParameterSubSchema // *NonBodyParameter_QueryParameterSubSchema @@ -2526,11 +2468,9 @@ type NonBodyParameter struct { func (x *NonBodyParameter) Reset() { *x = NonBodyParameter{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NonBodyParameter) String() string { @@ -2541,7 +2481,7 @@ func (*NonBodyParameter) ProtoMessage() {} func (x *NonBodyParameter) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2635,11 +2575,9 @@ type Oauth2AccessCodeSecurity struct { func (x *Oauth2AccessCodeSecurity) Reset() { *x = Oauth2AccessCodeSecurity{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Oauth2AccessCodeSecurity) String() string { @@ -2650,7 +2588,7 @@ func (*Oauth2AccessCodeSecurity) ProtoMessage() {} func (x *Oauth2AccessCodeSecurity) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2729,11 +2667,9 @@ type Oauth2ApplicationSecurity struct { func (x *Oauth2ApplicationSecurity) Reset() { *x = Oauth2ApplicationSecurity{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Oauth2ApplicationSecurity) String() string { @@ -2744,7 +2680,7 @@ func (*Oauth2ApplicationSecurity) ProtoMessage() {} func (x *Oauth2ApplicationSecurity) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2816,11 +2752,9 @@ type Oauth2ImplicitSecurity struct { func (x *Oauth2ImplicitSecurity) Reset() { *x = Oauth2ImplicitSecurity{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Oauth2ImplicitSecurity) String() string { @@ -2831,7 +2765,7 @@ func (*Oauth2ImplicitSecurity) ProtoMessage() {} func (x *Oauth2ImplicitSecurity) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2903,11 +2837,9 @@ type Oauth2PasswordSecurity struct { func (x *Oauth2PasswordSecurity) Reset() { *x = Oauth2PasswordSecurity{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Oauth2PasswordSecurity) String() string { @@ -2918,7 +2850,7 @@ func (*Oauth2PasswordSecurity) ProtoMessage() {} func (x *Oauth2PasswordSecurity) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2985,11 +2917,9 @@ type Oauth2Scopes struct { func (x *Oauth2Scopes) Reset() { *x = Oauth2Scopes{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Oauth2Scopes) String() string { @@ -3000,7 +2930,7 @@ func (*Oauth2Scopes) ProtoMessage() {} func (x *Oauth2Scopes) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3051,11 +2981,9 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Operation) String() string { @@ -3066,7 +2994,7 @@ func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3178,6 +3106,7 @@ type Parameter struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *Parameter_BodyParameter // *Parameter_NonBodyParameter Oneof isParameter_Oneof `protobuf_oneof:"oneof"` @@ -3185,11 +3114,9 @@ type Parameter struct { func (x *Parameter) Reset() { *x = Parameter{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Parameter) String() string { @@ -3200,7 +3127,7 @@ func (*Parameter) ProtoMessage() {} func (x *Parameter) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3263,11 +3190,9 @@ type ParameterDefinitions struct { func (x *ParameterDefinitions) Reset() { *x = ParameterDefinitions{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ParameterDefinitions) String() string { @@ -3278,7 +3203,7 @@ func (*ParameterDefinitions) ProtoMessage() {} func (x *ParameterDefinitions) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3306,6 +3231,7 @@ type ParametersItem struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *ParametersItem_Parameter // *ParametersItem_JsonReference Oneof isParametersItem_Oneof `protobuf_oneof:"oneof"` @@ -3313,11 +3239,9 @@ type ParametersItem struct { func (x *ParametersItem) Reset() { *x = ParametersItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ParametersItem) String() string { @@ -3328,7 +3252,7 @@ func (*ParametersItem) ProtoMessage() {} func (x *ParametersItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3400,11 +3324,9 @@ type PathItem struct { func (x *PathItem) Reset() { *x = PathItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PathItem) String() string { @@ -3415,7 +3337,7 @@ func (*PathItem) ProtoMessage() {} func (x *PathItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3535,11 +3457,9 @@ type PathParameterSubSchema struct { func (x *PathParameterSubSchema) Reset() { *x = PathParameterSubSchema{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PathParameterSubSchema) String() string { @@ -3550,7 +3470,7 @@ func (*PathParameterSubSchema) ProtoMessage() {} func (x *PathParameterSubSchema) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3731,11 +3651,9 @@ type Paths struct { func (x *Paths) Reset() { *x = Paths{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Paths) String() string { @@ -3746,7 +3664,7 @@ func (*Paths) ProtoMessage() {} func (x *Paths) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3802,11 +3720,9 @@ type PrimitivesItems struct { func (x *PrimitivesItems) Reset() { *x = PrimitivesItems{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PrimitivesItems) String() string { @@ -3817,7 +3733,7 @@ func (*PrimitivesItems) ProtoMessage() {} func (x *PrimitivesItems) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3968,11 +3884,9 @@ type Properties struct { func (x *Properties) Reset() { *x = Properties{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Properties) String() string { @@ -3983,7 +3897,7 @@ func (*Properties) ProtoMessage() {} func (x *Properties) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4042,11 +3956,9 @@ type QueryParameterSubSchema struct { func (x *QueryParameterSubSchema) Reset() { *x = QueryParameterSubSchema{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *QueryParameterSubSchema) String() string { @@ -4057,7 +3969,7 @@ func (*QueryParameterSubSchema) ProtoMessage() {} func (x *QueryParameterSubSchema) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4247,11 +4159,9 @@ type Response struct { func (x *Response) Reset() { *x = Response{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Response) String() string { @@ -4262,7 +4172,7 @@ func (*Response) ProtoMessage() {} func (x *Response) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4323,11 +4233,9 @@ type ResponseDefinitions struct { func (x *ResponseDefinitions) Reset() { *x = ResponseDefinitions{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseDefinitions) String() string { @@ -4338,7 +4246,7 @@ func (*ResponseDefinitions) ProtoMessage() {} func (x *ResponseDefinitions) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4366,6 +4274,7 @@ type ResponseValue struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *ResponseValue_Response // *ResponseValue_JsonReference Oneof isResponseValue_Oneof `protobuf_oneof:"oneof"` @@ -4373,11 +4282,9 @@ type ResponseValue struct { func (x *ResponseValue) Reset() { *x = ResponseValue{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseValue) String() string { @@ -4388,7 +4295,7 @@ func (*ResponseValue) ProtoMessage() {} func (x *ResponseValue) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4452,11 +4359,9 @@ type Responses struct { func (x *Responses) Reset() { *x = Responses{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Responses) String() string { @@ -4467,7 +4372,7 @@ func (*Responses) ProtoMessage() {} func (x *Responses) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4537,11 +4442,9 @@ type Schema struct { func (x *Schema) Reset() { *x = Schema{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Schema) String() string { @@ -4552,7 +4455,7 @@ func (*Schema) ProtoMessage() {} func (x *Schema) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4790,6 +4693,7 @@ type SchemaItem struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *SchemaItem_Schema // *SchemaItem_FileSchema Oneof isSchemaItem_Oneof `protobuf_oneof:"oneof"` @@ -4797,11 +4701,9 @@ type SchemaItem struct { func (x *SchemaItem) Reset() { *x = SchemaItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemaItem) String() string { @@ -4812,7 +4714,7 @@ func (*SchemaItem) ProtoMessage() {} func (x *SchemaItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4874,11 +4776,9 @@ type SecurityDefinitions struct { func (x *SecurityDefinitions) Reset() { *x = SecurityDefinitions{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SecurityDefinitions) String() string { @@ -4889,7 +4789,7 @@ func (*SecurityDefinitions) ProtoMessage() {} func (x *SecurityDefinitions) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4917,6 +4817,7 @@ type SecurityDefinitionsItem struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *SecurityDefinitionsItem_BasicAuthenticationSecurity // *SecurityDefinitionsItem_ApiKeySecurity // *SecurityDefinitionsItem_Oauth2ImplicitSecurity @@ -4928,11 +4829,9 @@ type SecurityDefinitionsItem struct { func (x *SecurityDefinitionsItem) Reset() { *x = SecurityDefinitionsItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SecurityDefinitionsItem) String() string { @@ -4943,7 +4842,7 @@ func (*SecurityDefinitionsItem) ProtoMessage() {} func (x *SecurityDefinitionsItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5057,11 +4956,9 @@ type SecurityRequirement struct { func (x *SecurityRequirement) Reset() { *x = SecurityRequirement{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SecurityRequirement) String() string { @@ -5072,7 +4969,7 @@ func (*SecurityRequirement) ProtoMessage() {} func (x *SecurityRequirement) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5104,11 +5001,9 @@ type StringArray struct { func (x *StringArray) Reset() { *x = StringArray{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StringArray) String() string { @@ -5119,7 +5014,7 @@ func (*StringArray) ProtoMessage() {} func (x *StringArray) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5154,11 +5049,9 @@ type Tag struct { func (x *Tag) Reset() { *x = Tag{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Tag) String() string { @@ -5169,7 +5062,7 @@ func (*Tag) ProtoMessage() {} func (x *Tag) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5222,11 +5115,9 @@ type TypeItem struct { func (x *TypeItem) Reset() { *x = TypeItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TypeItem) String() string { @@ -5237,7 +5128,7 @@ func (*TypeItem) ProtoMessage() {} func (x *TypeItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5270,11 +5161,9 @@ type VendorExtension struct { func (x *VendorExtension) Reset() { *x = VendorExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VendorExtension) String() string { @@ -5285,7 +5174,7 @@ func (*VendorExtension) ProtoMessage() {} func (x *VendorExtension) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5322,11 +5211,9 @@ type Xml struct { func (x *Xml) Reset() { *x = Xml{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Xml) String() string { @@ -5337,7 +5224,7 @@ func (*Xml) ProtoMessage() {} func (x *Xml) ProtoReflect() protoreflect.Message { mi := &file_openapiv2_OpenAPIv2_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6356,7 +6243,7 @@ func file_openapiv2_OpenAPIv2_proto_rawDescGZIP() []byte { } var file_openapiv2_OpenAPIv2_proto_msgTypes = make([]protoimpl.MessageInfo, 60) -var file_openapiv2_OpenAPIv2_proto_goTypes = []interface{}{ +var file_openapiv2_OpenAPIv2_proto_goTypes = []any{ (*AdditionalPropertiesItem)(nil), // 0: openapi.v2.AdditionalPropertiesItem (*Any)(nil), // 1: openapi.v2.Any (*ApiKeySecurity)(nil), // 2: openapi.v2.ApiKeySecurity @@ -6565,755 +6452,33 @@ func file_openapiv2_OpenAPIv2_proto_init() { if File_openapiv2_OpenAPIv2_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_openapiv2_OpenAPIv2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdditionalPropertiesItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Any); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiKeySecurity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BasicAuthenticationSecurity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BodyParameter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Contact); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Default); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Definitions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Document); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Examples); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExternalDocs); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileSchema); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FormDataParameterSubSchema); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Header); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderParameterSubSchema); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Headers); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Info); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ItemsItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JsonReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*License); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedAny); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedHeader); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedParameter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedPathItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedResponseValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedSchema); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedSecurityDefinitionsItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedString); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedStringArray); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NonBodyParameter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Oauth2AccessCodeSecurity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Oauth2ApplicationSecurity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Oauth2ImplicitSecurity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Oauth2PasswordSecurity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Oauth2Scopes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Operation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Parameter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParameterDefinitions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParametersItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PathItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PathParameterSubSchema); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Paths); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrimitivesItems); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Properties); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryParameterSubSchema); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Response); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseDefinitions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Responses); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Schema); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SchemaItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecurityDefinitions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecurityDefinitionsItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecurityRequirement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StringArray); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Tag); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TypeItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VendorExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Xml); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_openapiv2_OpenAPIv2_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_openapiv2_OpenAPIv2_proto_msgTypes[0].OneofWrappers = []any{ (*AdditionalPropertiesItem_Schema)(nil), (*AdditionalPropertiesItem_Boolean)(nil), } - file_openapiv2_OpenAPIv2_proto_msgTypes[30].OneofWrappers = []interface{}{ + file_openapiv2_OpenAPIv2_proto_msgTypes[30].OneofWrappers = []any{ (*NonBodyParameter_HeaderParameterSubSchema)(nil), (*NonBodyParameter_FormDataParameterSubSchema)(nil), (*NonBodyParameter_QueryParameterSubSchema)(nil), (*NonBodyParameter_PathParameterSubSchema)(nil), } - file_openapiv2_OpenAPIv2_proto_msgTypes[37].OneofWrappers = []interface{}{ + file_openapiv2_OpenAPIv2_proto_msgTypes[37].OneofWrappers = []any{ (*Parameter_BodyParameter)(nil), (*Parameter_NonBodyParameter)(nil), } - file_openapiv2_OpenAPIv2_proto_msgTypes[39].OneofWrappers = []interface{}{ + file_openapiv2_OpenAPIv2_proto_msgTypes[39].OneofWrappers = []any{ (*ParametersItem_Parameter)(nil), (*ParametersItem_JsonReference)(nil), } - file_openapiv2_OpenAPIv2_proto_msgTypes[48].OneofWrappers = []interface{}{ + file_openapiv2_OpenAPIv2_proto_msgTypes[48].OneofWrappers = []any{ (*ResponseValue_Response)(nil), (*ResponseValue_JsonReference)(nil), } - file_openapiv2_OpenAPIv2_proto_msgTypes[51].OneofWrappers = []interface{}{ + file_openapiv2_OpenAPIv2_proto_msgTypes[51].OneofWrappers = []any{ (*SchemaItem_Schema)(nil), (*SchemaItem_FileSchema)(nil), } - file_openapiv2_OpenAPIv2_proto_msgTypes[53].OneofWrappers = []interface{}{ + file_openapiv2_OpenAPIv2_proto_msgTypes[53].OneofWrappers = []any{ (*SecurityDefinitionsItem_BasicAuthenticationSecurity)(nil), (*SecurityDefinitionsItem_ApiKeySecurity)(nil), (*SecurityDefinitionsItem_Oauth2ImplicitSecurity)(nil), diff --git a/vendor/github.com/google/gnostic-models/openapiv3/OpenAPIv3.pb.go b/vendor/github.com/google/gnostic-models/openapiv3/OpenAPIv3.pb.go index 945b8d11ff59..b9df95a37935 100644 --- a/vendor/github.com/google/gnostic-models/openapiv3/OpenAPIv3.pb.go +++ b/vendor/github.com/google/gnostic-models/openapiv3/OpenAPIv3.pb.go @@ -16,8 +16,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.27.1 -// protoc v3.19.3 +// protoc-gen-go v1.35.1 +// protoc v4.23.4 // source: openapiv3/OpenAPIv3.proto package openapi_v3 @@ -43,6 +43,7 @@ type AdditionalPropertiesItem struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *AdditionalPropertiesItem_SchemaOrReference // *AdditionalPropertiesItem_Boolean Oneof isAdditionalPropertiesItem_Oneof `protobuf_oneof:"oneof"` @@ -50,11 +51,9 @@ type AdditionalPropertiesItem struct { func (x *AdditionalPropertiesItem) Reset() { *x = AdditionalPropertiesItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AdditionalPropertiesItem) String() string { @@ -65,7 +64,7 @@ func (*AdditionalPropertiesItem) ProtoMessage() {} func (x *AdditionalPropertiesItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -128,11 +127,9 @@ type Any struct { func (x *Any) Reset() { *x = Any{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Any) String() string { @@ -143,7 +140,7 @@ func (*Any) ProtoMessage() {} func (x *Any) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -178,6 +175,7 @@ type AnyOrExpression struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *AnyOrExpression_Any // *AnyOrExpression_Expression Oneof isAnyOrExpression_Oneof `protobuf_oneof:"oneof"` @@ -185,11 +183,9 @@ type AnyOrExpression struct { func (x *AnyOrExpression) Reset() { *x = AnyOrExpression{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AnyOrExpression) String() string { @@ -200,7 +196,7 @@ func (*AnyOrExpression) ProtoMessage() {} func (x *AnyOrExpression) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -264,11 +260,9 @@ type Callback struct { func (x *Callback) Reset() { *x = Callback{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Callback) String() string { @@ -279,7 +273,7 @@ func (*Callback) ProtoMessage() {} func (x *Callback) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -314,6 +308,7 @@ type CallbackOrReference struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *CallbackOrReference_Callback // *CallbackOrReference_Reference Oneof isCallbackOrReference_Oneof `protobuf_oneof:"oneof"` @@ -321,11 +316,9 @@ type CallbackOrReference struct { func (x *CallbackOrReference) Reset() { *x = CallbackOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CallbackOrReference) String() string { @@ -336,7 +329,7 @@ func (*CallbackOrReference) ProtoMessage() {} func (x *CallbackOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -398,11 +391,9 @@ type CallbacksOrReferences struct { func (x *CallbacksOrReferences) Reset() { *x = CallbacksOrReferences{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CallbacksOrReferences) String() string { @@ -413,7 +404,7 @@ func (*CallbacksOrReferences) ProtoMessage() {} func (x *CallbacksOrReferences) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -455,11 +446,9 @@ type Components struct { func (x *Components) Reset() { *x = Components{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Components) String() string { @@ -470,7 +459,7 @@ func (*Components) ProtoMessage() {} func (x *Components) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -569,11 +558,9 @@ type Contact struct { func (x *Contact) Reset() { *x = Contact{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Contact) String() string { @@ -584,7 +571,7 @@ func (*Contact) ProtoMessage() {} func (x *Contact) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -633,6 +620,7 @@ type DefaultType struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *DefaultType_Number // *DefaultType_Boolean // *DefaultType_String_ @@ -641,11 +629,9 @@ type DefaultType struct { func (x *DefaultType) Reset() { *x = DefaultType{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DefaultType) String() string { @@ -656,7 +642,7 @@ func (*DefaultType) ProtoMessage() {} func (x *DefaultType) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -734,11 +720,9 @@ type Discriminator struct { func (x *Discriminator) Reset() { *x = Discriminator{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Discriminator) String() string { @@ -749,7 +733,7 @@ func (*Discriminator) ProtoMessage() {} func (x *Discriminator) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -803,11 +787,9 @@ type Document struct { func (x *Document) Reset() { *x = Document{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Document) String() string { @@ -818,7 +800,7 @@ func (*Document) ProtoMessage() {} func (x *Document) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -912,11 +894,9 @@ type Encoding struct { func (x *Encoding) Reset() { *x = Encoding{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Encoding) String() string { @@ -927,7 +907,7 @@ func (*Encoding) ProtoMessage() {} func (x *Encoding) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -994,11 +974,9 @@ type Encodings struct { func (x *Encodings) Reset() { *x = Encodings{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Encodings) String() string { @@ -1009,7 +987,7 @@ func (*Encodings) ProtoMessage() {} func (x *Encodings) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1045,11 +1023,9 @@ type Example struct { func (x *Example) Reset() { *x = Example{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Example) String() string { @@ -1060,7 +1036,7 @@ func (*Example) ProtoMessage() {} func (x *Example) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1116,6 +1092,7 @@ type ExampleOrReference struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *ExampleOrReference_Example // *ExampleOrReference_Reference Oneof isExampleOrReference_Oneof `protobuf_oneof:"oneof"` @@ -1123,11 +1100,9 @@ type ExampleOrReference struct { func (x *ExampleOrReference) Reset() { *x = ExampleOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExampleOrReference) String() string { @@ -1138,7 +1113,7 @@ func (*ExampleOrReference) ProtoMessage() {} func (x *ExampleOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1200,11 +1175,9 @@ type ExamplesOrReferences struct { func (x *ExamplesOrReferences) Reset() { *x = ExamplesOrReferences{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExamplesOrReferences) String() string { @@ -1215,7 +1188,7 @@ func (*ExamplesOrReferences) ProtoMessage() {} func (x *ExamplesOrReferences) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1247,11 +1220,9 @@ type Expression struct { func (x *Expression) Reset() { *x = Expression{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Expression) String() string { @@ -1262,7 +1233,7 @@ func (*Expression) ProtoMessage() {} func (x *Expression) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1297,11 +1268,9 @@ type ExternalDocs struct { func (x *ExternalDocs) Reset() { *x = ExternalDocs{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExternalDocs) String() string { @@ -1312,7 +1281,7 @@ func (*ExternalDocs) ProtoMessage() {} func (x *ExternalDocs) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1370,11 +1339,9 @@ type Header struct { func (x *Header) Reset() { *x = Header{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Header) String() string { @@ -1385,7 +1352,7 @@ func (*Header) ProtoMessage() {} func (x *Header) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1490,6 +1457,7 @@ type HeaderOrReference struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *HeaderOrReference_Header // *HeaderOrReference_Reference Oneof isHeaderOrReference_Oneof `protobuf_oneof:"oneof"` @@ -1497,11 +1465,9 @@ type HeaderOrReference struct { func (x *HeaderOrReference) Reset() { *x = HeaderOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeaderOrReference) String() string { @@ -1512,7 +1478,7 @@ func (*HeaderOrReference) ProtoMessage() {} func (x *HeaderOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1574,11 +1540,9 @@ type HeadersOrReferences struct { func (x *HeadersOrReferences) Reset() { *x = HeadersOrReferences{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeadersOrReferences) String() string { @@ -1589,7 +1553,7 @@ func (*HeadersOrReferences) ProtoMessage() {} func (x *HeadersOrReferences) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1629,11 +1593,9 @@ type Info struct { func (x *Info) Reset() { *x = Info{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Info) String() string { @@ -1644,7 +1606,7 @@ func (*Info) ProtoMessage() {} func (x *Info) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1725,11 +1687,9 @@ type ItemsItem struct { func (x *ItemsItem) Reset() { *x = ItemsItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ItemsItem) String() string { @@ -1740,7 +1700,7 @@ func (*ItemsItem) ProtoMessage() {} func (x *ItemsItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1775,11 +1735,9 @@ type License struct { func (x *License) Reset() { *x = License{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *License) String() string { @@ -1790,7 +1748,7 @@ func (*License) ProtoMessage() {} func (x *License) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1843,11 +1801,9 @@ type Link struct { func (x *Link) Reset() { *x = Link{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Link) String() string { @@ -1858,7 +1814,7 @@ func (*Link) ProtoMessage() {} func (x *Link) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1928,6 +1884,7 @@ type LinkOrReference struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *LinkOrReference_Link // *LinkOrReference_Reference Oneof isLinkOrReference_Oneof `protobuf_oneof:"oneof"` @@ -1935,11 +1892,9 @@ type LinkOrReference struct { func (x *LinkOrReference) Reset() { *x = LinkOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LinkOrReference) String() string { @@ -1950,7 +1905,7 @@ func (*LinkOrReference) ProtoMessage() {} func (x *LinkOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2012,11 +1967,9 @@ type LinksOrReferences struct { func (x *LinksOrReferences) Reset() { *x = LinksOrReferences{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LinksOrReferences) String() string { @@ -2027,7 +1980,7 @@ func (*LinksOrReferences) ProtoMessage() {} func (x *LinksOrReferences) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2064,11 +2017,9 @@ type MediaType struct { func (x *MediaType) Reset() { *x = MediaType{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MediaType) String() string { @@ -2079,7 +2030,7 @@ func (*MediaType) ProtoMessage() {} func (x *MediaType) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2139,11 +2090,9 @@ type MediaTypes struct { func (x *MediaTypes) Reset() { *x = MediaTypes{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MediaTypes) String() string { @@ -2154,7 +2103,7 @@ func (*MediaTypes) ProtoMessage() {} func (x *MediaTypes) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2190,11 +2139,9 @@ type NamedAny struct { func (x *NamedAny) Reset() { *x = NamedAny{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedAny) String() string { @@ -2205,7 +2152,7 @@ func (*NamedAny) ProtoMessage() {} func (x *NamedAny) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2248,11 +2195,9 @@ type NamedCallbackOrReference struct { func (x *NamedCallbackOrReference) Reset() { *x = NamedCallbackOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedCallbackOrReference) String() string { @@ -2263,7 +2208,7 @@ func (*NamedCallbackOrReference) ProtoMessage() {} func (x *NamedCallbackOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2306,11 +2251,9 @@ type NamedEncoding struct { func (x *NamedEncoding) Reset() { *x = NamedEncoding{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedEncoding) String() string { @@ -2321,7 +2264,7 @@ func (*NamedEncoding) ProtoMessage() {} func (x *NamedEncoding) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2364,11 +2307,9 @@ type NamedExampleOrReference struct { func (x *NamedExampleOrReference) Reset() { *x = NamedExampleOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedExampleOrReference) String() string { @@ -2379,7 +2320,7 @@ func (*NamedExampleOrReference) ProtoMessage() {} func (x *NamedExampleOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2422,11 +2363,9 @@ type NamedHeaderOrReference struct { func (x *NamedHeaderOrReference) Reset() { *x = NamedHeaderOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedHeaderOrReference) String() string { @@ -2437,7 +2376,7 @@ func (*NamedHeaderOrReference) ProtoMessage() {} func (x *NamedHeaderOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2480,11 +2419,9 @@ type NamedLinkOrReference struct { func (x *NamedLinkOrReference) Reset() { *x = NamedLinkOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedLinkOrReference) String() string { @@ -2495,7 +2432,7 @@ func (*NamedLinkOrReference) ProtoMessage() {} func (x *NamedLinkOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2538,11 +2475,9 @@ type NamedMediaType struct { func (x *NamedMediaType) Reset() { *x = NamedMediaType{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedMediaType) String() string { @@ -2553,7 +2488,7 @@ func (*NamedMediaType) ProtoMessage() {} func (x *NamedMediaType) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2596,11 +2531,9 @@ type NamedParameterOrReference struct { func (x *NamedParameterOrReference) Reset() { *x = NamedParameterOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedParameterOrReference) String() string { @@ -2611,7 +2544,7 @@ func (*NamedParameterOrReference) ProtoMessage() {} func (x *NamedParameterOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2654,11 +2587,9 @@ type NamedPathItem struct { func (x *NamedPathItem) Reset() { *x = NamedPathItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedPathItem) String() string { @@ -2669,7 +2600,7 @@ func (*NamedPathItem) ProtoMessage() {} func (x *NamedPathItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2712,11 +2643,9 @@ type NamedRequestBodyOrReference struct { func (x *NamedRequestBodyOrReference) Reset() { *x = NamedRequestBodyOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedRequestBodyOrReference) String() string { @@ -2727,7 +2656,7 @@ func (*NamedRequestBodyOrReference) ProtoMessage() {} func (x *NamedRequestBodyOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2770,11 +2699,9 @@ type NamedResponseOrReference struct { func (x *NamedResponseOrReference) Reset() { *x = NamedResponseOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedResponseOrReference) String() string { @@ -2785,7 +2712,7 @@ func (*NamedResponseOrReference) ProtoMessage() {} func (x *NamedResponseOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2828,11 +2755,9 @@ type NamedSchemaOrReference struct { func (x *NamedSchemaOrReference) Reset() { *x = NamedSchemaOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedSchemaOrReference) String() string { @@ -2843,7 +2768,7 @@ func (*NamedSchemaOrReference) ProtoMessage() {} func (x *NamedSchemaOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2886,11 +2811,9 @@ type NamedSecuritySchemeOrReference struct { func (x *NamedSecuritySchemeOrReference) Reset() { *x = NamedSecuritySchemeOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedSecuritySchemeOrReference) String() string { @@ -2901,7 +2824,7 @@ func (*NamedSecuritySchemeOrReference) ProtoMessage() {} func (x *NamedSecuritySchemeOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2944,11 +2867,9 @@ type NamedServerVariable struct { func (x *NamedServerVariable) Reset() { *x = NamedServerVariable{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedServerVariable) String() string { @@ -2959,7 +2880,7 @@ func (*NamedServerVariable) ProtoMessage() {} func (x *NamedServerVariable) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3002,11 +2923,9 @@ type NamedString struct { func (x *NamedString) Reset() { *x = NamedString{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedString) String() string { @@ -3017,7 +2936,7 @@ func (*NamedString) ProtoMessage() {} func (x *NamedString) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3060,11 +2979,9 @@ type NamedStringArray struct { func (x *NamedStringArray) Reset() { *x = NamedStringArray{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NamedStringArray) String() string { @@ -3075,7 +2992,7 @@ func (*NamedStringArray) ProtoMessage() {} func (x *NamedStringArray) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3119,11 +3036,9 @@ type OauthFlow struct { func (x *OauthFlow) Reset() { *x = OauthFlow{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OauthFlow) String() string { @@ -3134,7 +3049,7 @@ func (*OauthFlow) ProtoMessage() {} func (x *OauthFlow) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3199,11 +3114,9 @@ type OauthFlows struct { func (x *OauthFlows) Reset() { *x = OauthFlows{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OauthFlows) String() string { @@ -3214,7 +3127,7 @@ func (*OauthFlows) ProtoMessage() {} func (x *OauthFlows) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3274,11 +3187,9 @@ type Object struct { func (x *Object) Reset() { *x = Object{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Object) String() string { @@ -3289,7 +3200,7 @@ func (*Object) ProtoMessage() {} func (x *Object) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3334,11 +3245,9 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Operation) String() string { @@ -3349,7 +3258,7 @@ func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3479,11 +3388,9 @@ type Parameter struct { func (x *Parameter) Reset() { *x = Parameter{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Parameter) String() string { @@ -3494,7 +3401,7 @@ func (*Parameter) ProtoMessage() {} func (x *Parameter) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3613,6 +3520,7 @@ type ParameterOrReference struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *ParameterOrReference_Parameter // *ParameterOrReference_Reference Oneof isParameterOrReference_Oneof `protobuf_oneof:"oneof"` @@ -3620,11 +3528,9 @@ type ParameterOrReference struct { func (x *ParameterOrReference) Reset() { *x = ParameterOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ParameterOrReference) String() string { @@ -3635,7 +3541,7 @@ func (*ParameterOrReference) ProtoMessage() {} func (x *ParameterOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3697,11 +3603,9 @@ type ParametersOrReferences struct { func (x *ParametersOrReferences) Reset() { *x = ParametersOrReferences{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ParametersOrReferences) String() string { @@ -3712,7 +3616,7 @@ func (*ParametersOrReferences) ProtoMessage() {} func (x *ParametersOrReferences) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3758,11 +3662,9 @@ type PathItem struct { func (x *PathItem) Reset() { *x = PathItem{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PathItem) String() string { @@ -3773,7 +3675,7 @@ func (*PathItem) ProtoMessage() {} func (x *PathItem) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3898,11 +3800,9 @@ type Paths struct { func (x *Paths) Reset() { *x = Paths{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Paths) String() string { @@ -3913,7 +3813,7 @@ func (*Paths) ProtoMessage() {} func (x *Paths) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3952,11 +3852,9 @@ type Properties struct { func (x *Properties) Reset() { *x = Properties{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Properties) String() string { @@ -3967,7 +3865,7 @@ func (*Properties) ProtoMessage() {} func (x *Properties) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4002,11 +3900,9 @@ type Reference struct { func (x *Reference) Reset() { *x = Reference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Reference) String() string { @@ -4017,7 +3913,7 @@ func (*Reference) ProtoMessage() {} func (x *Reference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4063,11 +3959,9 @@ type RequestBodiesOrReferences struct { func (x *RequestBodiesOrReferences) Reset() { *x = RequestBodiesOrReferences{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequestBodiesOrReferences) String() string { @@ -4078,7 +3972,7 @@ func (*RequestBodiesOrReferences) ProtoMessage() {} func (x *RequestBodiesOrReferences) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4114,11 +4008,9 @@ type RequestBody struct { func (x *RequestBody) Reset() { *x = RequestBody{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequestBody) String() string { @@ -4129,7 +4021,7 @@ func (*RequestBody) ProtoMessage() {} func (x *RequestBody) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4178,6 +4070,7 @@ type RequestBodyOrReference struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *RequestBodyOrReference_RequestBody // *RequestBodyOrReference_Reference Oneof isRequestBodyOrReference_Oneof `protobuf_oneof:"oneof"` @@ -4185,11 +4078,9 @@ type RequestBodyOrReference struct { func (x *RequestBodyOrReference) Reset() { *x = RequestBodyOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequestBodyOrReference) String() string { @@ -4200,7 +4091,7 @@ func (*RequestBodyOrReference) ProtoMessage() {} func (x *RequestBodyOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4267,11 +4158,9 @@ type Response struct { func (x *Response) Reset() { *x = Response{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Response) String() string { @@ -4282,7 +4171,7 @@ func (*Response) ProtoMessage() {} func (x *Response) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4338,6 +4227,7 @@ type ResponseOrReference struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *ResponseOrReference_Response // *ResponseOrReference_Reference Oneof isResponseOrReference_Oneof `protobuf_oneof:"oneof"` @@ -4345,11 +4235,9 @@ type ResponseOrReference struct { func (x *ResponseOrReference) Reset() { *x = ResponseOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponseOrReference) String() string { @@ -4360,7 +4248,7 @@ func (*ResponseOrReference) ProtoMessage() {} func (x *ResponseOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4425,11 +4313,9 @@ type Responses struct { func (x *Responses) Reset() { *x = Responses{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Responses) String() string { @@ -4440,7 +4326,7 @@ func (*Responses) ProtoMessage() {} func (x *Responses) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4486,11 +4372,9 @@ type ResponsesOrReferences struct { func (x *ResponsesOrReferences) Reset() { *x = ResponsesOrReferences{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResponsesOrReferences) String() string { @@ -4501,7 +4385,7 @@ func (*ResponsesOrReferences) ProtoMessage() {} func (x *ResponsesOrReferences) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4569,11 +4453,9 @@ type Schema struct { func (x *Schema) Reset() { *x = Schema{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Schema) String() string { @@ -4584,7 +4466,7 @@ func (*Schema) ProtoMessage() {} func (x *Schema) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4857,6 +4739,7 @@ type SchemaOrReference struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *SchemaOrReference_Schema // *SchemaOrReference_Reference Oneof isSchemaOrReference_Oneof `protobuf_oneof:"oneof"` @@ -4864,11 +4747,9 @@ type SchemaOrReference struct { func (x *SchemaOrReference) Reset() { *x = SchemaOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemaOrReference) String() string { @@ -4879,7 +4760,7 @@ func (*SchemaOrReference) ProtoMessage() {} func (x *SchemaOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4941,11 +4822,9 @@ type SchemasOrReferences struct { func (x *SchemasOrReferences) Reset() { *x = SchemasOrReferences{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemasOrReferences) String() string { @@ -4956,7 +4835,7 @@ func (*SchemasOrReferences) ProtoMessage() {} func (x *SchemasOrReferences) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[65] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4989,11 +4868,9 @@ type SecurityRequirement struct { func (x *SecurityRequirement) Reset() { *x = SecurityRequirement{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SecurityRequirement) String() string { @@ -5004,7 +4881,7 @@ func (*SecurityRequirement) ProtoMessage() {} func (x *SecurityRequirement) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[66] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5045,11 +4922,9 @@ type SecurityScheme struct { func (x *SecurityScheme) Reset() { *x = SecurityScheme{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SecurityScheme) String() string { @@ -5060,7 +4935,7 @@ func (*SecurityScheme) ProtoMessage() {} func (x *SecurityScheme) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[67] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5144,6 +5019,7 @@ type SecuritySchemeOrReference struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *SecuritySchemeOrReference_SecurityScheme // *SecuritySchemeOrReference_Reference Oneof isSecuritySchemeOrReference_Oneof `protobuf_oneof:"oneof"` @@ -5151,11 +5027,9 @@ type SecuritySchemeOrReference struct { func (x *SecuritySchemeOrReference) Reset() { *x = SecuritySchemeOrReference{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SecuritySchemeOrReference) String() string { @@ -5166,7 +5040,7 @@ func (*SecuritySchemeOrReference) ProtoMessage() {} func (x *SecuritySchemeOrReference) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[68] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5228,11 +5102,9 @@ type SecuritySchemesOrReferences struct { func (x *SecuritySchemesOrReferences) Reset() { *x = SecuritySchemesOrReferences{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SecuritySchemesOrReferences) String() string { @@ -5243,7 +5115,7 @@ func (*SecuritySchemesOrReferences) ProtoMessage() {} func (x *SecuritySchemesOrReferences) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[69] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5279,11 +5151,9 @@ type Server struct { func (x *Server) Reset() { *x = Server{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Server) String() string { @@ -5294,7 +5164,7 @@ func (*Server) ProtoMessage() {} func (x *Server) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[70] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5351,11 +5221,9 @@ type ServerVariable struct { func (x *ServerVariable) Reset() { *x = ServerVariable{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServerVariable) String() string { @@ -5366,7 +5234,7 @@ func (*ServerVariable) ProtoMessage() {} func (x *ServerVariable) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[71] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5419,11 +5287,9 @@ type ServerVariables struct { func (x *ServerVariables) Reset() { *x = ServerVariables{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServerVariables) String() string { @@ -5434,7 +5300,7 @@ func (*ServerVariables) ProtoMessage() {} func (x *ServerVariables) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[72] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5463,6 +5329,7 @@ type SpecificationExtension struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Oneof: + // // *SpecificationExtension_Number // *SpecificationExtension_Boolean // *SpecificationExtension_String_ @@ -5471,11 +5338,9 @@ type SpecificationExtension struct { func (x *SpecificationExtension) Reset() { *x = SpecificationExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SpecificationExtension) String() string { @@ -5486,7 +5351,7 @@ func (*SpecificationExtension) ProtoMessage() {} func (x *SpecificationExtension) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[73] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5561,11 +5426,9 @@ type StringArray struct { func (x *StringArray) Reset() { *x = StringArray{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StringArray) String() string { @@ -5576,7 +5439,7 @@ func (*StringArray) ProtoMessage() {} func (x *StringArray) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[74] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5608,11 +5471,9 @@ type Strings struct { func (x *Strings) Reset() { *x = Strings{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Strings) String() string { @@ -5623,7 +5484,7 @@ func (*Strings) ProtoMessage() {} func (x *Strings) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[75] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5659,11 +5520,9 @@ type Tag struct { func (x *Tag) Reset() { *x = Tag{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Tag) String() string { @@ -5674,7 +5533,7 @@ func (*Tag) ProtoMessage() {} func (x *Tag) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[76] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5733,11 +5592,9 @@ type Xml struct { func (x *Xml) Reset() { *x = Xml{} - if protoimpl.UnsafeEnabled { - mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[77] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Xml) String() string { @@ -5748,7 +5605,7 @@ func (*Xml) ProtoMessage() {} func (x *Xml) ProtoReflect() protoreflect.Message { mi := &file_openapiv3_OpenAPIv3_proto_msgTypes[77] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6781,7 +6638,7 @@ func file_openapiv3_OpenAPIv3_proto_rawDescGZIP() []byte { } var file_openapiv3_OpenAPIv3_proto_msgTypes = make([]protoimpl.MessageInfo, 78) -var file_openapiv3_OpenAPIv3_proto_goTypes = []interface{}{ +var file_openapiv3_OpenAPIv3_proto_goTypes = []any{ (*AdditionalPropertiesItem)(nil), // 0: openapi.v3.AdditionalPropertiesItem (*Any)(nil), // 1: openapi.v3.Any (*AnyOrExpression)(nil), // 2: openapi.v3.AnyOrExpression @@ -7040,994 +6897,56 @@ func file_openapiv3_OpenAPIv3_proto_init() { if File_openapiv3_OpenAPIv3_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_openapiv3_OpenAPIv3_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdditionalPropertiesItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Any); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnyOrExpression); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Callback); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallbackOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallbacksOrReferences); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Components); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Contact); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DefaultType); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Discriminator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Document); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Encoding); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Encodings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Example); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExampleOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExamplesOrReferences); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExternalDocs); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Header); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeadersOrReferences); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Info); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ItemsItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*License); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Link); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LinkOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LinksOrReferences); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaType); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaTypes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedAny); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedCallbackOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedEncoding); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedExampleOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedHeaderOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedLinkOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedMediaType); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedParameterOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedPathItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedRequestBodyOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedResponseOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedSchemaOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedSecuritySchemeOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedServerVariable); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedString); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedStringArray); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OauthFlow); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OauthFlows); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Object); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Operation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Parameter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParameterOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParametersOrReferences); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PathItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Paths); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Properties); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Reference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestBodiesOrReferences); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestBody); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestBodyOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Response); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Responses); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponsesOrReferences); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Schema); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SchemaOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SchemasOrReferences); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecurityRequirement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecurityScheme); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecuritySchemeOrReference); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecuritySchemesOrReferences); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Server); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerVariable); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerVariables); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SpecificationExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StringArray); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Strings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Tag); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Xml); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_openapiv3_OpenAPIv3_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[0].OneofWrappers = []any{ (*AdditionalPropertiesItem_SchemaOrReference)(nil), (*AdditionalPropertiesItem_Boolean)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[2].OneofWrappers = []any{ (*AnyOrExpression_Any)(nil), (*AnyOrExpression_Expression)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[4].OneofWrappers = []any{ (*CallbackOrReference_Callback)(nil), (*CallbackOrReference_Reference)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[8].OneofWrappers = []any{ (*DefaultType_Number)(nil), (*DefaultType_Boolean)(nil), (*DefaultType_String_)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[14].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[14].OneofWrappers = []any{ (*ExampleOrReference_Example)(nil), (*ExampleOrReference_Reference)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[19].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[19].OneofWrappers = []any{ (*HeaderOrReference_Header)(nil), (*HeaderOrReference_Reference)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[25].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[25].OneofWrappers = []any{ (*LinkOrReference_Link)(nil), (*LinkOrReference_Reference)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[50].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[50].OneofWrappers = []any{ (*ParameterOrReference_Parameter)(nil), (*ParameterOrReference_Reference)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[58].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[58].OneofWrappers = []any{ (*RequestBodyOrReference_RequestBody)(nil), (*RequestBodyOrReference_Reference)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[60].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[60].OneofWrappers = []any{ (*ResponseOrReference_Response)(nil), (*ResponseOrReference_Reference)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[64].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[64].OneofWrappers = []any{ (*SchemaOrReference_Schema)(nil), (*SchemaOrReference_Reference)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[68].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[68].OneofWrappers = []any{ (*SecuritySchemeOrReference_SecurityScheme)(nil), (*SecuritySchemeOrReference_Reference)(nil), } - file_openapiv3_OpenAPIv3_proto_msgTypes[73].OneofWrappers = []interface{}{ + file_openapiv3_OpenAPIv3_proto_msgTypes[73].OneofWrappers = []any{ (*SpecificationExtension_Number)(nil), (*SpecificationExtension_Boolean)(nil), (*SpecificationExtension_String_)(nil), diff --git a/vendor/github.com/google/gnostic-models/openapiv3/annotations.pb.go b/vendor/github.com/google/gnostic-models/openapiv3/annotations.pb.go new file mode 100644 index 000000000000..f9f1bd26547a --- /dev/null +++ b/vendor/github.com/google/gnostic-models/openapiv3/annotations.pb.go @@ -0,0 +1,182 @@ +// Copyright 2022 Google LLC. All Rights Reserved. +// +// 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 protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.1 +// protoc v4.23.4 +// source: openapiv3/annotations.proto + +package openapi_v3 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" + reflect "reflect" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var file_openapiv3_annotations_proto_extTypes = []protoimpl.ExtensionInfo{ + { + ExtendedType: (*descriptorpb.FileOptions)(nil), + ExtensionType: (*Document)(nil), + Field: 1143, + Name: "openapi.v3.document", + Tag: "bytes,1143,opt,name=document", + Filename: "openapiv3/annotations.proto", + }, + { + ExtendedType: (*descriptorpb.MethodOptions)(nil), + ExtensionType: (*Operation)(nil), + Field: 1143, + Name: "openapi.v3.operation", + Tag: "bytes,1143,opt,name=operation", + Filename: "openapiv3/annotations.proto", + }, + { + ExtendedType: (*descriptorpb.MessageOptions)(nil), + ExtensionType: (*Schema)(nil), + Field: 1143, + Name: "openapi.v3.schema", + Tag: "bytes,1143,opt,name=schema", + Filename: "openapiv3/annotations.proto", + }, + { + ExtendedType: (*descriptorpb.FieldOptions)(nil), + ExtensionType: (*Schema)(nil), + Field: 1143, + Name: "openapi.v3.property", + Tag: "bytes,1143,opt,name=property", + Filename: "openapiv3/annotations.proto", + }, +} + +// Extension fields to descriptorpb.FileOptions. +var ( + // optional openapi.v3.Document document = 1143; + E_Document = &file_openapiv3_annotations_proto_extTypes[0] +) + +// Extension fields to descriptorpb.MethodOptions. +var ( + // optional openapi.v3.Operation operation = 1143; + E_Operation = &file_openapiv3_annotations_proto_extTypes[1] +) + +// Extension fields to descriptorpb.MessageOptions. +var ( + // optional openapi.v3.Schema schema = 1143; + E_Schema = &file_openapiv3_annotations_proto_extTypes[2] +) + +// Extension fields to descriptorpb.FieldOptions. +var ( + // optional openapi.v3.Schema property = 1143; + E_Property = &file_openapiv3_annotations_proto_extTypes[3] +) + +var File_openapiv3_annotations_proto protoreflect.FileDescriptor + +var file_openapiv3_annotations_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x33, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x76, 0x33, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x50, 0x49, 0x76, 0x33, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3a, 0x4f, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0xf7, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x54, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf7, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x4c, 0x0a, + 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf7, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x3a, 0x4e, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf7, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x42, 0x42, 0x0a, 0x0e, 0x6f, + 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x33, 0x42, 0x10, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x16, 0x2e, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x33, 0x3b, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x33, 0xa2, 0x02, 0x03, 0x4f, 0x41, 0x53, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_openapiv3_annotations_proto_goTypes = []any{ + (*descriptorpb.FileOptions)(nil), // 0: google.protobuf.FileOptions + (*descriptorpb.MethodOptions)(nil), // 1: google.protobuf.MethodOptions + (*descriptorpb.MessageOptions)(nil), // 2: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 3: google.protobuf.FieldOptions + (*Document)(nil), // 4: openapi.v3.Document + (*Operation)(nil), // 5: openapi.v3.Operation + (*Schema)(nil), // 6: openapi.v3.Schema +} +var file_openapiv3_annotations_proto_depIdxs = []int32{ + 0, // 0: openapi.v3.document:extendee -> google.protobuf.FileOptions + 1, // 1: openapi.v3.operation:extendee -> google.protobuf.MethodOptions + 2, // 2: openapi.v3.schema:extendee -> google.protobuf.MessageOptions + 3, // 3: openapi.v3.property:extendee -> google.protobuf.FieldOptions + 4, // 4: openapi.v3.document:type_name -> openapi.v3.Document + 5, // 5: openapi.v3.operation:type_name -> openapi.v3.Operation + 6, // 6: openapi.v3.schema:type_name -> openapi.v3.Schema + 6, // 7: openapi.v3.property:type_name -> openapi.v3.Schema + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 4, // [4:8] is the sub-list for extension type_name + 0, // [0:4] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_openapiv3_annotations_proto_init() } +func file_openapiv3_annotations_proto_init() { + if File_openapiv3_annotations_proto != nil { + return + } + file_openapiv3_OpenAPIv3_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_openapiv3_annotations_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 4, + NumServices: 0, + }, + GoTypes: file_openapiv3_annotations_proto_goTypes, + DependencyIndexes: file_openapiv3_annotations_proto_depIdxs, + ExtensionInfos: file_openapiv3_annotations_proto_extTypes, + }.Build() + File_openapiv3_annotations_proto = out.File + file_openapiv3_annotations_proto_rawDesc = nil + file_openapiv3_annotations_proto_goTypes = nil + file_openapiv3_annotations_proto_depIdxs = nil +} diff --git a/vendor/github.com/google/gnostic-models/openapiv3/annotations.proto b/vendor/github.com/google/gnostic-models/openapiv3/annotations.proto new file mode 100644 index 000000000000..09ee0aac51b4 --- /dev/null +++ b/vendor/github.com/google/gnostic-models/openapiv3/annotations.proto @@ -0,0 +1,56 @@ +// Copyright 2022 Google LLC. All Rights Reserved. +// +// 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. + +syntax = "proto3"; + +package openapi.v3; + +import "google/protobuf/descriptor.proto"; +import "openapiv3/OpenAPIv3.proto"; + +// The Go package name. +option go_package = "./openapiv3;openapi_v3"; +// This option lets the proto compiler generate Java code inside the package +// name (see below) instead of inside an outer class. It creates a simpler +// developer experience by reducing one-level of name nesting and be +// consistent with most programming languages that don't support outer classes. +option java_multiple_files = true; +// The Java outer classname should be the filename in UpperCamelCase. This +// class is only used to hold proto descriptor, so developers don't need to +// work with it directly. +option java_outer_classname = "AnnotationsProto"; +// The Java package name must be proto package name with proper prefix. +option java_package = "org.openapi_v3"; +// A reasonable prefix for the Objective-C symbols generated from the package. +// It should at a minimum be 3 characters long, all uppercase, and convention +// is to use an abbreviation of the package name. Something short, but +// hopefully unique enough to not conflict with things that may come along in +// the future. 'GPB' is reserved for the protocol buffer implementation itself. +option objc_class_prefix = "OAS"; + +extend google.protobuf.FileOptions { + Document document = 1143; +} + +extend google.protobuf.MethodOptions { + Operation operation = 1143; +} + +extend google.protobuf.MessageOptions { + Schema schema = 1143; +} + +extend google.protobuf.FieldOptions { + Schema property = 1143; +} diff --git a/vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go b/vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go index c6d09dae402d..720f3cdf57c7 100644 --- a/vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go +++ b/vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go @@ -14,22 +14,29 @@ import ( ) // SortSlices returns a [cmp.Transformer] option that sorts all []V. -// The less function must be of the form "func(T, T) bool" which is used to -// sort any slice with element type V that is assignable to T. +// The lessOrCompareFunc function must be either +// a less function of the form "func(T, T) bool" or +// a compare function of the format "func(T, T) int" +// which is used to sort any slice with element type V that is assignable to T. // -// The less function must be: +// A less function must be: // - Deterministic: less(x, y) == less(x, y) // - Irreflexive: !less(x, x) // - Transitive: if !less(x, y) and !less(y, z), then !less(x, z) // -// The less function does not have to be "total". That is, if !less(x, y) and -// !less(y, x) for two elements x and y, their relative order is maintained. +// A compare function must be: +// - Deterministic: compare(x, y) == compare(x, y) +// - Irreflexive: compare(x, x) == 0 +// - Transitive: if !less(x, y) and !less(y, z), then !less(x, z) +// +// The function does not have to be "total". That is, if x != y, but +// less or compare report inequality, their relative order is maintained. // // SortSlices can be used in conjunction with [EquateEmpty]. -func SortSlices(lessFunc interface{}) cmp.Option { - vf := reflect.ValueOf(lessFunc) - if !function.IsType(vf.Type(), function.Less) || vf.IsNil() { - panic(fmt.Sprintf("invalid less function: %T", lessFunc)) +func SortSlices(lessOrCompareFunc interface{}) cmp.Option { + vf := reflect.ValueOf(lessOrCompareFunc) + if (!function.IsType(vf.Type(), function.Less) && !function.IsType(vf.Type(), function.Compare)) || vf.IsNil() { + panic(fmt.Sprintf("invalid less or compare function: %T", lessOrCompareFunc)) } ss := sliceSorter{vf.Type().In(0), vf} return cmp.FilterValues(ss.filter, cmp.Transformer("cmpopts.SortSlices", ss.sort)) @@ -79,28 +86,40 @@ func (ss sliceSorter) checkSort(v reflect.Value) { } func (ss sliceSorter) less(v reflect.Value, i, j int) bool { vx, vy := v.Index(i), v.Index(j) - return ss.fnc.Call([]reflect.Value{vx, vy})[0].Bool() + vo := ss.fnc.Call([]reflect.Value{vx, vy})[0] + if vo.Kind() == reflect.Bool { + return vo.Bool() + } else { + return vo.Int() < 0 + } } -// SortMaps returns a [cmp.Transformer] option that flattens map[K]V types to be a -// sorted []struct{K, V}. The less function must be of the form -// "func(T, T) bool" which is used to sort any map with key K that is -// assignable to T. +// SortMaps returns a [cmp.Transformer] option that flattens map[K]V types to be +// a sorted []struct{K, V}. The lessOrCompareFunc function must be either +// a less function of the form "func(T, T) bool" or +// a compare function of the format "func(T, T) int" +// which is used to sort any map with key K that is assignable to T. // // Flattening the map into a slice has the property that [cmp.Equal] is able to // use [cmp.Comparer] options on K or the K.Equal method if it exists. // -// The less function must be: +// A less function must be: // - Deterministic: less(x, y) == less(x, y) // - Irreflexive: !less(x, x) // - Transitive: if !less(x, y) and !less(y, z), then !less(x, z) // - Total: if x != y, then either less(x, y) or less(y, x) // +// A compare function must be: +// - Deterministic: compare(x, y) == compare(x, y) +// - Irreflexive: compare(x, x) == 0 +// - Transitive: if compare(x, y) < 0 and compare(y, z) < 0, then compare(x, z) < 0 +// - Total: if x != y, then compare(x, y) != 0 +// // SortMaps can be used in conjunction with [EquateEmpty]. -func SortMaps(lessFunc interface{}) cmp.Option { - vf := reflect.ValueOf(lessFunc) - if !function.IsType(vf.Type(), function.Less) || vf.IsNil() { - panic(fmt.Sprintf("invalid less function: %T", lessFunc)) +func SortMaps(lessOrCompareFunc interface{}) cmp.Option { + vf := reflect.ValueOf(lessOrCompareFunc) + if (!function.IsType(vf.Type(), function.Less) && !function.IsType(vf.Type(), function.Compare)) || vf.IsNil() { + panic(fmt.Sprintf("invalid less or compare function: %T", lessOrCompareFunc)) } ms := mapSorter{vf.Type().In(0), vf} return cmp.FilterValues(ms.filter, cmp.Transformer("cmpopts.SortMaps", ms.sort)) @@ -143,5 +162,10 @@ func (ms mapSorter) checkSort(v reflect.Value) { } func (ms mapSorter) less(v reflect.Value, i, j int) bool { vx, vy := v.Index(i).Field(0), v.Index(j).Field(0) - return ms.fnc.Call([]reflect.Value{vx, vy})[0].Bool() + vo := ms.fnc.Call([]reflect.Value{vx, vy})[0] + if vo.Kind() == reflect.Bool { + return vo.Bool() + } else { + return vo.Int() < 0 + } } diff --git a/vendor/github.com/google/go-cmp/cmp/internal/function/func.go b/vendor/github.com/google/go-cmp/cmp/internal/function/func.go index d127d436230d..def01a6be30e 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/function/func.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/function/func.go @@ -19,6 +19,7 @@ const ( tbFunc // func(T) bool ttbFunc // func(T, T) bool + ttiFunc // func(T, T) int trbFunc // func(T, R) bool tibFunc // func(T, I) bool trFunc // func(T) R @@ -28,11 +29,13 @@ const ( Transformer = trFunc // func(T) R ValueFilter = ttbFunc // func(T, T) bool Less = ttbFunc // func(T, T) bool + Compare = ttiFunc // func(T, T) int ValuePredicate = tbFunc // func(T) bool KeyValuePredicate = trbFunc // func(T, R) bool ) var boolType = reflect.TypeOf(true) +var intType = reflect.TypeOf(0) // IsType reports whether the reflect.Type is of the specified function type. func IsType(t reflect.Type, ft funcType) bool { @@ -49,6 +52,10 @@ func IsType(t reflect.Type, ft funcType) bool { if ni == 2 && no == 1 && t.In(0) == t.In(1) && t.Out(0) == boolType { return true } + case ttiFunc: // func(T, T) int + if ni == 2 && no == 1 && t.In(0) == t.In(1) && t.Out(0) == intType { + return true + } case trbFunc: // func(T, R) bool if ni == 2 && no == 1 && t.Out(0) == boolType { return true diff --git a/vendor/github.com/google/go-cmp/cmp/options.go b/vendor/github.com/google/go-cmp/cmp/options.go index 754496f3b3f8..ba3fce81ff13 100644 --- a/vendor/github.com/google/go-cmp/cmp/options.go +++ b/vendor/github.com/google/go-cmp/cmp/options.go @@ -232,7 +232,15 @@ func (validator) apply(s *state, vx, vy reflect.Value) { if t := s.curPath.Index(-2).Type(); t.Name() != "" { // Named type with unexported fields. name = fmt.Sprintf("%q.%v", t.PkgPath(), t.Name()) // e.g., "path/to/package".MyType - if _, ok := reflect.New(t).Interface().(error); ok { + isProtoMessage := func(t reflect.Type) bool { + m, ok := reflect.PointerTo(t).MethodByName("ProtoReflect") + return ok && m.Type.NumIn() == 1 && m.Type.NumOut() == 1 && + m.Type.Out(0).PkgPath() == "google.golang.org/protobuf/reflect/protoreflect" && + m.Type.Out(0).Name() == "Message" + } + if isProtoMessage(t) { + help = `consider using "google.golang.org/protobuf/testing/protocmp".Transform to compare proto.Message types` + } else if _, ok := reflect.New(t).Interface().(error); ok { help = "consider using cmpopts.EquateErrors to compare error values" } else if t.Comparable() { help = "consider using cmpopts.EquateComparable to compare comparable Go types" diff --git a/vendor/github.com/google/go-containerregistry/internal/redact/redact.go b/vendor/github.com/google/go-containerregistry/internal/redact/redact.go index b2e3f186ccb3..6d4757007616 100644 --- a/vendor/github.com/google/go-containerregistry/internal/redact/redact.go +++ b/vendor/github.com/google/go-containerregistry/internal/redact/redact.go @@ -51,7 +51,7 @@ func Error(err error) error { if perr != nil { return err // If the URL can't be parsed, just return the original error. } - uerr.URL = URL(u).String() // Update the URL to the redacted URL. + uerr.URL = URL(u) // Update the URL to the redacted URL. return uerr } @@ -73,7 +73,7 @@ var paramAllowlist = map[string]struct{}{ } // URL redacts potentially sensitive query parameter values from the URL's query string. -func URL(u *url.URL) *url.URL { +func URL(u *url.URL) string { qs := u.Query() for k, v := range qs { for i := range v { @@ -85,5 +85,5 @@ func URL(u *url.URL) *url.URL { } r := *u r.RawQuery = qs.Encode() - return &r + return r.Redacted() } diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go b/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go index 172d218e4fc3..1555efae04f8 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go @@ -15,6 +15,7 @@ package authn import ( + "context" "encoding/base64" "encoding/json" "fmt" @@ -27,6 +28,22 @@ type Authenticator interface { Authorization() (*AuthConfig, error) } +// ContextAuthenticator is like Authenticator, but allows for context to be passed in. +type ContextAuthenticator interface { + // Authorization returns the value to use in an http transport's Authorization header. + AuthorizationContext(context.Context) (*AuthConfig, error) +} + +// Authorization calls AuthorizationContext with ctx if the given [Authenticator] implements [ContextAuthenticator], +// otherwise it calls Resolve with the given [Resource]. +func Authorization(ctx context.Context, authn Authenticator) (*AuthConfig, error) { + if actx, ok := authn.(ContextAuthenticator); ok { + return actx.AuthorizationContext(ctx) + } + + return authn.Authorization() +} + // AuthConfig contains authorization information for connecting to a Registry // Inlined what we use from github.com/docker/cli/cli/config/types type AuthConfig struct { diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go b/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go index a4a88b3d5569..6e8814d80841 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go @@ -15,9 +15,11 @@ package authn import ( + "context" "os" "path/filepath" "sync" + "time" "github.com/docker/cli/cli/config" "github.com/docker/cli/cli/config/configfile" @@ -44,6 +46,11 @@ type Keychain interface { Resolve(Resource) (Authenticator, error) } +// ContextKeychain is like Keychain, but allows for context to be passed in. +type ContextKeychain interface { + ResolveContext(context.Context, Resource) (Authenticator, error) +} + // defaultKeychain implements Keychain with the semantics of the standard Docker // credential keychain. type defaultKeychain struct { @@ -52,7 +59,7 @@ type defaultKeychain struct { var ( // DefaultKeychain implements Keychain by interpreting the docker config file. - DefaultKeychain Keychain = &defaultKeychain{} + DefaultKeychain = &defaultKeychain{} ) const ( @@ -61,8 +68,23 @@ const ( DefaultAuthKey = "https://" + name.DefaultRegistry + "/v1/" ) -// Resolve implements Keychain. +// Resolve calls ResolveContext with ctx if the given [Keychain] implements [ContextKeychain], +// otherwise it calls Resolve with the given [Resource]. +func Resolve(ctx context.Context, keychain Keychain, target Resource) (Authenticator, error) { + if rctx, ok := keychain.(ContextKeychain); ok { + return rctx.ResolveContext(ctx, target) + } + + return keychain.Resolve(target) +} + +// ResolveContext implements ContextKeychain. func (dk *defaultKeychain) Resolve(target Resource) (Authenticator, error) { + return dk.ResolveContext(context.Background(), target) +} + +// Resolve implements Keychain. +func (dk *defaultKeychain) ResolveContext(_ context.Context, target Resource) (Authenticator, error) { dk.mu.Lock() defer dk.mu.Unlock() @@ -85,8 +107,8 @@ func (dk *defaultKeychain) Resolve(target Resource) (Authenticator, error) { // config.Load, which may fail if the config can't be parsed. // // If neither was found, look for Podman's auth at - // $XDG_RUNTIME_DIR/containers/auth.json and attempt to load it as a - // Docker config. + // $REGISTRY_AUTH_FILE or $XDG_RUNTIME_DIR/containers/auth.json + // and attempt to load it as a Docker config. // // If neither are found, fallback to Anonymous. var cf *configfile.ConfigFile @@ -95,16 +117,28 @@ func (dk *defaultKeychain) Resolve(target Resource) (Authenticator, error) { if err != nil { return nil, err } - } else { + } else if fileExists(os.Getenv("REGISTRY_AUTH_FILE")) { + f, err := os.Open(os.Getenv("REGISTRY_AUTH_FILE")) + if err != nil { + return nil, err + } + defer f.Close() + cf, err = config.LoadFromReader(f) + if err != nil { + return nil, err + } + } else if fileExists(filepath.Join(os.Getenv("XDG_RUNTIME_DIR"), "containers/auth.json")) { f, err := os.Open(filepath.Join(os.Getenv("XDG_RUNTIME_DIR"), "containers/auth.json")) if err != nil { - return Anonymous, nil + return nil, err } defer f.Close() cf, err = config.LoadFromReader(f) if err != nil { return nil, err } + } else { + return Anonymous, nil } // See: @@ -167,6 +201,10 @@ func NewKeychainFromHelper(h Helper) Keychain { return wrapper{h} } type wrapper struct{ h Helper } func (w wrapper) Resolve(r Resource) (Authenticator, error) { + return w.ResolveContext(context.Background(), r) +} + +func (w wrapper) ResolveContext(_ context.Context, r Resource) (Authenticator, error) { u, p, err := w.h.Get(r.RegistryStr()) if err != nil { return Anonymous, nil @@ -178,3 +216,79 @@ func (w wrapper) Resolve(r Resource) (Authenticator, error) { } return FromConfig(AuthConfig{Username: u, Password: p}), nil } + +func RefreshingKeychain(inner Keychain, duration time.Duration) Keychain { + return &refreshingKeychain{ + keychain: inner, + duration: duration, + } +} + +type refreshingKeychain struct { + keychain Keychain + duration time.Duration + clock func() time.Time +} + +func (r *refreshingKeychain) Resolve(target Resource) (Authenticator, error) { + return r.ResolveContext(context.Background(), target) +} + +func (r *refreshingKeychain) ResolveContext(ctx context.Context, target Resource) (Authenticator, error) { + last := time.Now() + auth, err := Resolve(ctx, r.keychain, target) + if err != nil || auth == Anonymous { + return auth, err + } + return &refreshing{ + target: target, + keychain: r.keychain, + last: last, + cached: auth, + duration: r.duration, + clock: r.clock, + }, nil +} + +type refreshing struct { + sync.Mutex + target Resource + keychain Keychain + + duration time.Duration + + last time.Time + cached Authenticator + + // for testing + clock func() time.Time +} + +func (r *refreshing) Authorization() (*AuthConfig, error) { + return r.AuthorizationContext(context.Background()) +} + +func (r *refreshing) AuthorizationContext(ctx context.Context) (*AuthConfig, error) { + r.Lock() + defer r.Unlock() + if r.cached == nil || r.expired() { + r.last = r.now() + auth, err := Resolve(ctx, r.keychain, r.target) + if err != nil { + return nil, err + } + r.cached = auth + } + return Authorization(ctx, r.cached) +} + +func (r *refreshing) now() time.Time { + if r.clock == nil { + return time.Now() + } + return r.clock() +} + +func (r *refreshing) expired() bool { + return r.now().Sub(r.last) > r.duration +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go b/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go index 3b1804f5d057..fe241a0fd9fa 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go @@ -14,6 +14,8 @@ package authn +import "context" + type multiKeychain struct { keychains []Keychain } @@ -28,8 +30,12 @@ func NewMultiKeychain(kcs ...Keychain) Keychain { // Resolve implements Keychain. func (mk *multiKeychain) Resolve(target Resource) (Authenticator, error) { + return mk.ResolveContext(context.Background(), target) +} + +func (mk *multiKeychain) ResolveContext(ctx context.Context, target Resource) (Authenticator, error) { for _, kc := range mk.keychains { - auth, err := kc.Resolve(target) + auth, err := Resolve(ctx, kc, target) if err != nil { return nil, err } diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/digest.go b/vendor/github.com/google/go-containerregistry/pkg/name/digest.go index c4a2e693e339..28f6967ba70b 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/name/digest.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/digest.go @@ -15,7 +15,9 @@ package name import ( + // nolint: depguard _ "crypto/sha256" // Recommended by go-digest. + "encoding/json" "strings" "github.com/opencontainers/go-digest" @@ -58,6 +60,25 @@ func (d Digest) String() string { return d.original } +// MarshalJSON formats the digest into a string for JSON serialization. +func (d Digest) MarshalJSON() ([]byte, error) { + return json.Marshal(d.String()) +} + +// UnmarshalJSON parses a JSON string into a Digest. +func (d *Digest) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + n, err := NewDigest(s) + if err != nil { + return err + } + *d = n + return nil +} + // NewDigest returns a new Digest representing the given name. func NewDigest(name string, opts ...Option) (Digest, error) { // Split on "@" diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/ref.go b/vendor/github.com/google/go-containerregistry/pkg/name/ref.go index 912ab33018ff..0a0486772302 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/name/ref.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/ref.go @@ -44,7 +44,7 @@ func ParseReference(s string, opts ...Option) (Reference, error) { if d, err := NewDigest(s, opts...); err == nil { return d, nil } - return nil, newErrBadName("could not parse reference: " + s) + return nil, newErrBadName("could not parse reference: %s", s) } type stringConst string diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/registry.go b/vendor/github.com/google/go-containerregistry/pkg/name/registry.go index 2a26b66d046d..5b0d01769c8b 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/name/registry.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/registry.go @@ -17,6 +17,7 @@ package name import ( "net" "net/url" + "path" "regexp" "strings" ) @@ -50,6 +51,11 @@ func (r Registry) String() string { return r.Name() } +// Repo returns a Repository in the Registry with the given name. +func (r Registry) Repo(repo ...string) Repository { + return Repository{Registry: r, repository: path.Join(repo...)} +} + // Scope returns the scope required to access the registry. func (r Registry) Scope(string) string { // The only resource under 'registry' is 'catalog'. http://goo.gl/N9cN9Z diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/config.go b/vendor/github.com/google/go-containerregistry/pkg/v1/config.go index 08ec0158f6ff..960c93b5f412 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/config.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/config.go @@ -38,6 +38,21 @@ type ConfigFile struct { Config Config `json:"config"` OSVersion string `json:"os.version,omitempty"` Variant string `json:"variant,omitempty"` + OSFeatures []string `json:"os.features,omitempty"` +} + +// Platform attempts to generates a Platform from the ConfigFile fields. +func (cf *ConfigFile) Platform() *Platform { + if cf.OS == "" && cf.Architecture == "" && cf.OSVersion == "" && cf.Variant == "" && len(cf.OSFeatures) == 0 { + return nil + } + return &Platform{ + OS: cf.OS, + Architecture: cf.Architecture, + OSVersion: cf.OSVersion, + Variant: cf.Variant, + OSFeatures: cf.OSFeatures, + } } // History is one entry of a list recording how this container image was built. diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/empty/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/empty/index.go index 8edab24d4ad3..18b414891b22 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/empty/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/empty/index.go @@ -59,5 +59,7 @@ func (i emptyIndex) ImageIndex(v1.Hash) (v1.ImageIndex, error) { func base() *v1.IndexManifest { return &v1.IndexManifest{ SchemaVersion: 2, + MediaType: types.OCIImageIndex, + Manifests: []v1.Descriptor{}, } } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/google/auth.go b/vendor/github.com/google/go-containerregistry/pkg/v1/google/auth.go index 11ae3979695d..4e64eda43cc8 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/google/auth.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/google/auth.go @@ -31,7 +31,7 @@ import ( const cloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform" // GetGcloudCmd is exposed so we can test this. -var GetGcloudCmd = func() *exec.Cmd { +var GetGcloudCmd = func(ctx context.Context) *exec.Cmd { // This is odd, but basically what docker-credential-gcr does. // // config-helper is undocumented, but it's purportedly the only supported way @@ -39,15 +39,15 @@ var GetGcloudCmd = func() *exec.Cmd { // // --force-auth-refresh means we are getting a token that is valid for about // an hour (we reuse it until it's expired). - return exec.Command("gcloud", "config", "config-helper", "--force-auth-refresh", "--format=json(credential)") + return exec.CommandContext(ctx, "gcloud", "config", "config-helper", "--force-auth-refresh", "--format=json(credential)") } // NewEnvAuthenticator returns an authn.Authenticator that generates access // tokens from the environment we're running in. // // See: https://godoc.org/golang.org/x/oauth2/google#FindDefaultCredentials -func NewEnvAuthenticator() (authn.Authenticator, error) { - ts, err := googauth.DefaultTokenSource(context.Background(), cloudPlatformScope) +func NewEnvAuthenticator(ctx context.Context) (authn.Authenticator, error) { + ts, err := googauth.DefaultTokenSource(ctx, cloudPlatformScope) if err != nil { return nil, err } @@ -62,14 +62,14 @@ func NewEnvAuthenticator() (authn.Authenticator, error) { // NewGcloudAuthenticator returns an oauth2.TokenSource that generates access // tokens by shelling out to the gcloud sdk. -func NewGcloudAuthenticator() (authn.Authenticator, error) { +func NewGcloudAuthenticator(ctx context.Context) (authn.Authenticator, error) { if _, err := exec.LookPath("gcloud"); err != nil { // gcloud is not available, fall back to anonymous logs.Warn.Println("gcloud binary not found") return authn.Anonymous, nil } - ts := gcloudSource{GetGcloudCmd} + ts := gcloudSource{ctx, GetGcloudCmd} // Attempt to fetch a token to ensure gcloud is installed and we can run it. token, err := ts.Token() @@ -143,13 +143,15 @@ type gcloudOutput struct { } type gcloudSource struct { + ctx context.Context + // This is passed in so that we mock out gcloud and test Token. - exec func() *exec.Cmd + exec func(ctx context.Context) *exec.Cmd } // Token implements oauath2.TokenSource. func (gs gcloudSource) Token() (*oauth2.Token, error) { - cmd := gs.exec() + cmd := gs.exec(gs.ctx) var out bytes.Buffer cmd.Stdout = &out diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/google/keychain.go b/vendor/github.com/google/go-containerregistry/pkg/v1/google/keychain.go index 6dc7a50eac67..0645768c8bfa 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/google/keychain.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/google/keychain.go @@ -15,6 +15,7 @@ package google import ( + "context" "strings" "sync" @@ -52,30 +53,31 @@ type googleKeychain struct { // In general, we don't worry about that here because we expect to use the same // gcloud configuration in the scope of this one process. func (gk *googleKeychain) Resolve(target authn.Resource) (authn.Authenticator, error) { + return gk.ResolveContext(context.Background(), target) +} + +// ResolveContext implements authn.ContextKeychain. +func (gk *googleKeychain) ResolveContext(ctx context.Context, target authn.Resource) (authn.Authenticator, error) { // Only authenticate GCR and AR so it works with authn.NewMultiKeychain to fallback. - host := target.RegistryStr() - if host != "gcr.io" && - !strings.HasSuffix(host, ".gcr.io") && - !strings.HasSuffix(host, ".pkg.dev") && - !strings.HasSuffix(host, ".google.com") { + if !isGoogle(target.RegistryStr()) { return authn.Anonymous, nil } gk.once.Do(func() { - gk.auth = resolve() + gk.auth = resolve(ctx) }) return gk.auth, nil } -func resolve() authn.Authenticator { - auth, envErr := NewEnvAuthenticator() +func resolve(ctx context.Context) authn.Authenticator { + auth, envErr := NewEnvAuthenticator(ctx) if envErr == nil && auth != authn.Anonymous { logs.Debug.Println("google.Keychain: using Application Default Credentials") return auth } - auth, gErr := NewGcloudAuthenticator() + auth, gErr := NewGcloudAuthenticator(ctx) if gErr == nil && auth != authn.Anonymous { logs.Debug.Println("google.Keychain: using gcloud fallback") return auth @@ -90,3 +92,10 @@ func resolve() authn.Authenticator { } return authn.Anonymous } + +func isGoogle(host string) bool { + return host == "gcr.io" || + strings.HasSuffix(host, ".gcr.io") || + strings.HasSuffix(host, ".pkg.dev") || + strings.HasSuffix(host, ".google.com") +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/google/list.go b/vendor/github.com/google/go-containerregistry/pkg/v1/google/list.go index a70bb27ee55d..8a5906c235e9 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/google/list.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/google/list.go @@ -89,12 +89,16 @@ func newLister(repo name.Repository, options ...Option) (*lister, error) { func (l *lister) list(repo name.Repository) (*Tags, error) { uri := &url.URL{ - Scheme: repo.Registry.Scheme(), - Host: repo.Registry.RegistryStr(), - Path: fmt.Sprintf("/v2/%s/tags/list", repo.RepositoryStr()), - // ECR returns an error if n > 1000: - // https://github.com/google/go-containerregistry/issues/681 - RawQuery: "n=1000", + Scheme: repo.Registry.Scheme(), + Host: repo.Registry.RegistryStr(), + Path: fmt.Sprintf("/v2/%s/tags/list", repo.RepositoryStr()), + RawQuery: "n=10000", + } + + // ECR returns an error if n > 1000: + // https://github.com/google/go-containerregistry/issues/681 + if !isGoogle(repo.RegistryStr()) { + uri.RawQuery = "n=1000" } tags := Tags{} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go b/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go index e9630087e160..f78a5fa89e54 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go @@ -15,7 +15,7 @@ package v1 import ( - "crypto/sha256" + "crypto" "encoding/hex" "encoding/json" "fmt" @@ -78,7 +78,7 @@ func (h *Hash) UnmarshalText(text []byte) error { func Hasher(name string) (hash.Hash, error) { switch name { case "sha256": - return sha256.New(), nil + return crypto.SHA256.New(), nil default: return nil, fmt.Errorf("unsupported hash: %q", name) } @@ -111,7 +111,7 @@ func (h *Hash) parse(unquoted string) error { // SHA256 computes the Hash of the provided io.Reader's content. func SHA256(r io.Reader) (Hash, int64, error) { - hasher := sha256.New() + hasher := crypto.SHA256.New() n, err := io.Copy(hasher, r) if err != nil { return Hash{}, 0, err diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go b/vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go index 8ded1ee53a0f..22d483f3bd14 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go @@ -28,6 +28,7 @@ type Manifest struct { Config Descriptor `json:"config"` Layers []Descriptor `json:"layers"` Annotations map[string]string `json:"annotations,omitempty"` + Subject *Descriptor `json:"subject,omitempty"` } // IndexManifest represents an OCI image index in a structured way. @@ -36,17 +37,19 @@ type IndexManifest struct { MediaType types.MediaType `json:"mediaType,omitempty"` Manifests []Descriptor `json:"manifests"` Annotations map[string]string `json:"annotations,omitempty"` + Subject *Descriptor `json:"subject,omitempty"` } // Descriptor holds a reference from the manifest to one of its constituent elements. type Descriptor struct { - MediaType types.MediaType `json:"mediaType"` - Size int64 `json:"size"` - Digest Hash `json:"digest"` - Data []byte `json:"data,omitempty"` - URLs []string `json:"urls,omitempty"` - Annotations map[string]string `json:"annotations,omitempty"` - Platform *Platform `json:"platform,omitempty"` + MediaType types.MediaType `json:"mediaType"` + Size int64 `json:"size"` + Digest Hash `json:"digest"` + Data []byte `json:"data,omitempty"` + URLs []string `json:"urls,omitempty"` + Annotations map[string]string `json:"annotations,omitempty"` + Platform *Platform `json:"platform,omitempty"` + ArtifactType string `json:"artifactType,omitempty"` } // ParseManifest parses the io.Reader's contents into a Manifest. diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/image.go index 93c230e3b2e5..3ea27fe47f6e 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/image.go @@ -18,6 +18,7 @@ import ( "bytes" "encoding/json" "errors" + "sync" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/partial" @@ -37,6 +38,9 @@ type image struct { configMediaType *types.MediaType diffIDMap map[v1.Hash]v1.Layer digestMap map[v1.Hash]v1.Layer + subject *v1.Descriptor + + sync.Mutex } var _ v1.Image = (*image)(nil) @@ -49,6 +53,9 @@ func (i *image) MediaType() (types.MediaType, error) { } func (i *image) compute() error { + i.Lock() + defer i.Unlock() + // Don't re-compute if already computed. if i.computed { return nil @@ -153,6 +160,7 @@ func (i *image) compute() error { manifest.Annotations[k] = v } } + manifest.Subject = i.subject i.configFile = configFile i.manifest = manifest diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/index.go index 841995f15831..512effef67c9 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/index.go @@ -16,12 +16,15 @@ package mutate import ( "encoding/json" + "errors" "fmt" + "sync" "github.com/google/go-containerregistry/pkg/logs" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/match" "github.com/google/go-containerregistry/pkg/v1/partial" + "github.com/google/go-containerregistry/pkg/v1/stream" "github.com/google/go-containerregistry/pkg/v1/types" ) @@ -70,6 +73,9 @@ type index struct { imageMap map[v1.Hash]v1.Image indexMap map[v1.Hash]v1.ImageIndex layerMap map[v1.Hash]v1.Layer + subject *v1.Descriptor + + sync.Mutex } var _ v1.ImageIndex = (*index)(nil) @@ -84,6 +90,9 @@ func (i *index) MediaType() (types.MediaType, error) { func (i *index) Size() (int64, error) { return partial.Size(i) } func (i *index) compute() error { + i.Lock() + defer i.Unlock() + // Don't re-compute if already computed. if i.computed { return nil @@ -142,6 +151,7 @@ func (i *index) compute() error { manifest.Annotations[k] = v } } + manifest.Subject = i.subject i.manifest = manifest i.computed = true @@ -200,3 +210,23 @@ func (i *index) RawManifest() ([]byte, error) { } return json.Marshal(i.manifest) } + +func (i *index) Manifests() ([]partial.Describable, error) { + if err := i.compute(); errors.Is(err, stream.ErrNotComputed) { + // Index contains a streamable layer which has not yet been + // consumed. Just return the manifests we have in case the caller + // is going to consume the streamable layers. + manifests, err := partial.Manifests(i.base) + if err != nil { + return nil, err + } + for _, add := range i.adds { + manifests = append(manifests, add.Add) + } + return manifests, nil + } else if err != nil { + return nil, err + } + + return partial.ComputeManifests(i) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go index 022fc818a1fd..4207740c3582 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go @@ -21,6 +21,7 @@ import ( "errors" "fmt" "io" + "maps" "path/filepath" "strings" "time" @@ -115,9 +116,33 @@ func Config(base v1.Image, cfg v1.Config) (v1.Image, error) { return ConfigFile(base, cf) } -// Annotatable represents a manifest that can carry annotations. -type Annotatable interface { - partial.WithRawManifest +// Subject mutates the subject on an image or index manifest. +// +// The input is expected to be a v1.Image or v1.ImageIndex, and +// returns the same type. You can type-assert the result like so: +// +// img := Subject(empty.Image, subj).(v1.Image) +// +// Or for an index: +// +// idx := Subject(empty.Index, subj).(v1.ImageIndex) +// +// If the input is not an Image or ImageIndex, the result will +// attempt to lazily annotate the raw manifest. +func Subject(f partial.WithRawManifest, subject v1.Descriptor) partial.WithRawManifest { + if img, ok := f.(v1.Image); ok { + return &image{ + base: img, + subject: &subject, + } + } + if idx, ok := f.(v1.ImageIndex); ok { + return &index{ + base: idx, + subject: &subject, + } + } + return arbitraryRawManifest{a: f, subject: &subject} } // Annotations mutates the annotations on an annotatable image or index manifest. @@ -137,25 +162,26 @@ type Annotatable interface { // // If the input Annotatable is not an Image or ImageIndex, the result will // attempt to lazily annotate the raw manifest. -func Annotations(f Annotatable, anns map[string]string) Annotatable { +func Annotations(f partial.WithRawManifest, anns map[string]string) partial.WithRawManifest { if img, ok := f.(v1.Image); ok { return &image{ base: img, - annotations: anns, + annotations: maps.Clone(anns), } } if idx, ok := f.(v1.ImageIndex); ok { return &index{ base: idx, - annotations: anns, + annotations: maps.Clone(anns), } } - return arbitraryRawManifest{f, anns} + return arbitraryRawManifest{a: f, anns: maps.Clone(anns)} } type arbitraryRawManifest struct { - a Annotatable - anns map[string]string + a partial.WithRawManifest + anns map[string]string + subject *v1.Descriptor } func (a arbitraryRawManifest) RawManifest() ([]byte, error) { @@ -178,6 +204,9 @@ func (a arbitraryRawManifest) RawManifest() ([]byte, error) { } else { m["annotations"] = a.anns } + if a.subject != nil { + m["subject"] = a.subject + } return json.Marshal(m) } @@ -374,7 +403,9 @@ func Time(img v1.Image, t time.Time) (v1.Image, error) { historyIdx++ break } - addendums[addendumIdx].Layer = newLayer + if addendumIdx < len(addendums) { + addendums[addendumIdx].Layer = newLayer + } } // add all leftover History entries @@ -437,6 +468,13 @@ func layerTime(layer v1.Layer, t time.Time) (v1.Layer, error) { } header.ModTime = t + + //PAX and GNU Format support additional timestamps in the header + if header.Format == tar.FormatPAX || header.Format == tar.FormatGNU { + header.AccessTime = t + header.ChangeTime = t + } + if err := tarWriter.WriteHeader(header); err != nil { return nil, fmt.Errorf("writing tar header: %w", err) } @@ -500,6 +538,8 @@ func MediaType(img v1.Image, mt types.MediaType) v1.Image { } // ConfigMediaType modifies the MediaType() of the given image's Config. +// +// If !mt.IsConfig(), this will be the image's artifactType in any indexes it's a part of. func ConfigMediaType(img v1.Image, mt types.MediaType) v1.Image { return &image{ base: img, diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/index.go index f17f27446fb3..10cfb2b2f6e3 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/index.go @@ -19,6 +19,7 @@ import ( v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/match" + "github.com/google/go-containerregistry/pkg/v1/types" ) // FindManifests given a v1.ImageIndex, find the manifests that fit the matcher. @@ -83,3 +84,82 @@ func FindIndexes(index v1.ImageIndex, matcher match.Matcher) ([]v1.ImageIndex, e } return matches, nil } + +type withManifests interface { + Manifests() ([]Describable, error) +} + +type withLayer interface { + Layer(v1.Hash) (v1.Layer, error) +} + +type describable struct { + desc v1.Descriptor +} + +func (d describable) Digest() (v1.Hash, error) { + return d.desc.Digest, nil +} + +func (d describable) Size() (int64, error) { + return d.desc.Size, nil +} + +func (d describable) MediaType() (types.MediaType, error) { + return d.desc.MediaType, nil +} + +func (d describable) Descriptor() (*v1.Descriptor, error) { + return &d.desc, nil +} + +// Manifests is analogous to v1.Image.Layers in that it allows values in the +// returned list to be lazily evaluated, which enables an index to contain +// an image that contains a streaming layer. +// +// This should have been part of the v1.ImageIndex interface, but wasn't. +// It is instead usable through this extension interface. +func Manifests(idx v1.ImageIndex) ([]Describable, error) { + if wm, ok := idx.(withManifests); ok { + return wm.Manifests() + } + + return ComputeManifests(idx) +} + +// ComputeManifests provides a fallback implementation for Manifests. +func ComputeManifests(idx v1.ImageIndex) ([]Describable, error) { + m, err := idx.IndexManifest() + if err != nil { + return nil, err + } + manifests := []Describable{} + for _, desc := range m.Manifests { + switch { + case desc.MediaType.IsImage(): + img, err := idx.Image(desc.Digest) + if err != nil { + return nil, err + } + manifests = append(manifests, img) + case desc.MediaType.IsIndex(): + idx, err := idx.ImageIndex(desc.Digest) + if err != nil { + return nil, err + } + manifests = append(manifests, idx) + default: + if wl, ok := idx.(withLayer); ok { + layer, err := wl.Layer(desc.Digest) + if err != nil { + return nil, err + } + manifests = append(manifests, layer) + } else { + manifests = append(manifests, describable{desc}) + } + } + } + + return manifests, nil +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go index 3ad4992892ee..c8b22b3f9545 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go @@ -328,10 +328,28 @@ func Descriptor(d Describable) (*v1.Descriptor, error) { if desc.MediaType, err = d.MediaType(); err != nil { return nil, err } + if wat, ok := d.(withArtifactType); ok { + if desc.ArtifactType, err = wat.ArtifactType(); err != nil { + return nil, err + } + } else { + if wrm, ok := d.(WithRawManifest); ok && desc.MediaType.IsImage() { + mf, _ := Manifest(wrm) + // Failing to parse as a manifest should just be ignored. + // The manifest might not be valid, and that's okay. + if mf != nil && !mf.Config.MediaType.IsConfig() { + desc.ArtifactType = string(mf.Config.MediaType) + } + } + } return &desc, nil } +type withArtifactType interface { + ArtifactType() (string, error) +} + type withUncompressedSize interface { UncompressedSize() (int64, error) } @@ -399,3 +417,20 @@ func unwrap(i any) any { } return i } + +// ArtifactType returns the artifact type for the given manifest. +// +// If the manifest reports its own artifact type, that's returned, otherwise +// the manifest is parsed and, if successful, its config.mediaType is returned. +func ArtifactType(w WithManifest) (string, error) { + if wat, ok := w.(withArtifactType); ok { + return wat.ArtifactType() + } + mf, _ := w.Manifest() + // Failing to parse as a manifest should just be ignored. + // The manifest might not be valid, and that's okay. + if mf != nil && !mf.Config.MediaType.IsConfig() { + return string(mf.Config.MediaType), nil + } + return "", nil +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/platform.go b/vendor/github.com/google/go-containerregistry/pkg/v1/platform.go index 9ee91ee292a7..59ca402698cc 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/platform.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/platform.go @@ -85,6 +85,47 @@ func (p Platform) Equals(o Platform) bool { stringSliceEqualIgnoreOrder(p.Features, o.Features) } +// Satisfies returns true if this Platform "satisfies" the given spec Platform. +// +// Note that this is different from Equals and that Satisfies is not reflexive. +// +// The given spec represents "requirements" such that any missing values in the +// spec are not compared. +// +// For OSFeatures and Features, Satisfies will return true if this Platform's +// fields contain a superset of the values in the spec's fields (order ignored). +func (p Platform) Satisfies(spec Platform) bool { + return satisfies(spec.OS, p.OS) && + satisfies(spec.Architecture, p.Architecture) && + satisfies(spec.Variant, p.Variant) && + satisfies(spec.OSVersion, p.OSVersion) && + satisfiesList(spec.OSFeatures, p.OSFeatures) && + satisfiesList(spec.Features, p.Features) +} + +func satisfies(want, have string) bool { + return want == "" || want == have +} + +func satisfiesList(want, have []string) bool { + if len(want) == 0 { + return true + } + + set := map[string]struct{}{} + for _, h := range have { + set[h] = struct{}{} + } + + for _, w := range want { + if _, ok := set[w]; !ok { + return false + } + } + + return true +} + // stringSliceEqual compares 2 string slices and returns if their contents are identical. func stringSliceEqual(a, b []string) bool { if len(a) != len(b) { diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go index f54746277763..6121aa715cc9 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go @@ -17,13 +17,11 @@ package random import ( "archive/tar" "bytes" - "crypto/rand" - "crypto/sha256" + "crypto" "encoding/hex" "fmt" "io" - mrand "math/rand" - "time" + "math/rand" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/empty" @@ -57,10 +55,10 @@ func (ul *uncompressedLayer) MediaType() (types.MediaType, error) { var _ partial.UncompressedLayer = (*uncompressedLayer)(nil) // Image returns a pseudo-randomly generated Image. -func Image(byteSize, layers int64) (v1.Image, error) { +func Image(byteSize, layers int64, options ...Option) (v1.Image, error) { adds := make([]mutate.Addendum, 0, 5) for i := int64(0); i < layers; i++ { - layer, err := Layer(byteSize, types.DockerLayer) + layer, err := Layer(byteSize, types.DockerLayer, options...) if err != nil { return nil, err } @@ -70,7 +68,6 @@ func Image(byteSize, layers int64) (v1.Image, error) { Author: "random.Image", Comment: fmt.Sprintf("this is a random history %d of %d", i, layers), CreatedBy: "random", - Created: v1.Time{Time: time.Now()}, }, }) } @@ -79,12 +76,15 @@ func Image(byteSize, layers int64) (v1.Image, error) { } // Layer returns a layer with pseudo-randomly generated content. -func Layer(byteSize int64, mt types.MediaType) (v1.Layer, error) { - fileName := fmt.Sprintf("random_file_%d.txt", mrand.Int()) //nolint: gosec +func Layer(byteSize int64, mt types.MediaType, options ...Option) (v1.Layer, error) { + o := getOptions(options) + rng := rand.New(o.source) //nolint:gosec + + fileName := fmt.Sprintf("random_file_%d.txt", rng.Int()) // Hash the contents as we write it out to the buffer. var b bytes.Buffer - hasher := sha256.New() + hasher := crypto.SHA256.New() mw := io.MultiWriter(&b, hasher) // Write a single file with a random name and random contents. @@ -92,11 +92,11 @@ func Layer(byteSize int64, mt types.MediaType) (v1.Layer, error) { if err := tw.WriteHeader(&tar.Header{ Name: fileName, Size: byteSize, - Typeflag: tar.TypeRegA, + Typeflag: tar.TypeReg, }); err != nil { return nil, err } - if _, err := io.CopyN(tw, rand.Reader, byteSize); err != nil { + if _, err := io.CopyN(tw, rng, byteSize); err != nil { return nil, err } if err := tw.Close(); err != nil { diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/random/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/random/index.go index 89a88438f472..4368bddff3c0 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/random/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/random/index.go @@ -31,7 +31,7 @@ type randomIndex struct { // Index returns a pseudo-randomly generated ImageIndex with count images, each // having the given number of layers of size byteSize. -func Index(byteSize, layers, count int64) (v1.ImageIndex, error) { +func Index(byteSize, layers, count int64, options ...Option) (v1.ImageIndex, error) { manifest := v1.IndexManifest{ SchemaVersion: 2, MediaType: types.OCIImageIndex, @@ -40,7 +40,7 @@ func Index(byteSize, layers, count int64) (v1.ImageIndex, error) { images := make(map[v1.Hash]v1.Image) for i := int64(0); i < count; i++ { - img, err := Image(byteSize, layers) + img, err := Image(byteSize, layers, options...) if err != nil { return nil, err } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/random/options.go b/vendor/github.com/google/go-containerregistry/pkg/v1/random/options.go new file mode 100644 index 000000000000..af1d2f969572 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/random/options.go @@ -0,0 +1,60 @@ +// Copyright 2018 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package random + +import "math/rand" + +// Option is an optional parameter to the random functions +type Option func(opts *options) + +type options struct { + source rand.Source + + // TODO opens the door to add this in the future + // algorithm digest.Algorithm +} + +func getOptions(opts []Option) *options { + // get a random seed + + // TODO in go 1.20 this is fine (it will be random) + seed := rand.Int63() //nolint:gosec + /* + // in prior go versions this needs to come from crypto/rand + var b [8]byte + _, err := crypto_rand.Read(b[:]) + if err != nil { + panic("cryptographically secure random number generator is not working") + } + seed := int64(binary.LittleEndian.Int64(b[:])) + */ + + // defaults + o := &options{ + source: rand.NewSource(seed), + } + + for _, opt := range opts { + opt(o) + } + return o +} + +// WithSource sets the random number generator source +func WithSource(source rand.Source) Option { + return func(opts *options) { + opts.source = source + } +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/catalog.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/catalog.go index eb4306f287bc..a0281b9fd20a 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/catalog.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/catalog.go @@ -25,38 +25,35 @@ import ( "github.com/google/go-containerregistry/pkg/v1/remote/transport" ) -type catalog struct { +type Catalogs struct { Repos []string `json:"repositories"` + Next string `json:"next,omitempty"` } // CatalogPage calls /_catalog, returning the list of repositories on the registry. func CatalogPage(target name.Registry, last string, n int, options ...Option) ([]string, error) { - o, err := makeOptions(target, options...) + o, err := makeOptions(options...) if err != nil { return nil, err } - scopes := []string{target.Scope(transport.PullScope)} - tr, err := transport.NewWithContext(o.context, target, o.auth, o.transport, scopes) + f, err := newPuller(o).fetcher(o.context, target) if err != nil { return nil, err } - query := fmt.Sprintf("last=%s&n=%d", url.QueryEscape(last), n) - uri := url.URL{ Scheme: target.Scheme(), Host: target.RegistryStr(), Path: "/v2/_catalog", - RawQuery: query, + RawQuery: fmt.Sprintf("last=%s&n=%d", url.QueryEscape(last), n), } - client := http.Client{Transport: tr} req, err := http.NewRequest(http.MethodGet, uri.String(), nil) if err != nil { return nil, err } - resp, err := client.Do(req.WithContext(o.context)) + resp, err := f.client.Do(req.WithContext(o.context)) if err != nil { return nil, err } @@ -66,7 +63,7 @@ func CatalogPage(target name.Registry, last string, n int, options ...Option) ([ return nil, err } - var parsed catalog + var parsed Catalogs if err := json.NewDecoder(resp.Body).Decode(&parsed); err != nil { return nil, err } @@ -76,79 +73,87 @@ func CatalogPage(target name.Registry, last string, n int, options ...Option) ([ // Catalog calls /_catalog, returning the list of repositories on the registry. func Catalog(ctx context.Context, target name.Registry, options ...Option) ([]string, error) { - o, err := makeOptions(target, options...) + o, err := makeOptions(options...) if err != nil { return nil, err } - scopes := []string{target.Scope(transport.PullScope)} - tr, err := transport.NewWithContext(o.context, target, o.auth, o.transport, scopes) + // WithContext overrides the ctx passed directly. + if o.context != context.Background() { + ctx = o.context + } + + return newPuller(o).catalog(ctx, target, o.pageSize) +} + +func (f *fetcher) catalogPage(ctx context.Context, reg name.Registry, next string, pageSize int) (*Catalogs, error) { + if next == "" { + uri := &url.URL{ + Scheme: reg.Scheme(), + Host: reg.RegistryStr(), + Path: "/v2/_catalog", + } + if pageSize > 0 { + uri.RawQuery = fmt.Sprintf("n=%d", pageSize) + } + next = uri.String() + } + + req, err := http.NewRequestWithContext(ctx, "GET", next, nil) if err != nil { return nil, err } - uri := &url.URL{ - Scheme: target.Scheme(), - Host: target.RegistryStr(), - Path: "/v2/_catalog", + resp, err := f.client.Do(req) + if err != nil { + return nil, err } - if o.pageSize > 0 { - uri.RawQuery = fmt.Sprintf("n=%d", o.pageSize) + if err := transport.CheckError(resp, http.StatusOK); err != nil { + return nil, err } - client := http.Client{Transport: tr} - - // WithContext overrides the ctx passed directly. - if o.context != context.Background() { - ctx = o.context + parsed := Catalogs{} + if err := json.NewDecoder(resp.Body).Decode(&parsed); err != nil { + return nil, err } - var ( - parsed catalog - repoList []string - ) + if err := resp.Body.Close(); err != nil { + return nil, err + } - // get responses until there is no next page - for { - select { - case <-ctx.Done(): - return nil, ctx.Err() - default: - } + uri, err := getNextPageURL(resp) + if err != nil { + return nil, err + } - req, err := http.NewRequest("GET", uri.String(), nil) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) + if uri != nil { + parsed.Next = uri.String() + } - resp, err := client.Do(req) - if err != nil { - return nil, err - } + return &parsed, nil +} - if err := transport.CheckError(resp, http.StatusOK); err != nil { - return nil, err - } +type Catalogger struct { + f *fetcher + reg name.Registry + pageSize int - if err := json.NewDecoder(resp.Body).Decode(&parsed); err != nil { - return nil, err - } - if err := resp.Body.Close(); err != nil { - return nil, err - } + page *Catalogs + err error - repoList = append(repoList, parsed.Repos...) + needMore bool +} - uri, err = getNextPageURL(resp) - if err != nil { - return nil, err - } - // no next page - if uri == nil { - break - } +func (l *Catalogger) Next(ctx context.Context) (*Catalogs, error) { + if l.needMore { + l.page, l.err = l.f.catalogPage(ctx, l.reg, l.page.Next, l.pageSize) + } else { + l.needMore = true } - return repoList, nil + return l.page, l.err +} + +func (l *Catalogger) HasNext() bool { + return l.page != nil && (!l.needMore || l.page.Next != "") } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go index 3b9022719c23..36e1d0816e37 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go @@ -15,43 +15,14 @@ package remote import ( - "fmt" - "net/http" - "net/url" - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1/remote/transport" ) // Delete removes the specified image reference from the remote registry. func Delete(ref name.Reference, options ...Option) error { - o, err := makeOptions(ref.Context(), options...) - if err != nil { - return err - } - scopes := []string{ref.Scope(transport.DeleteScope)} - tr, err := transport.NewWithContext(o.context, ref.Context().Registry, o.auth, o.transport, scopes) + o, err := makeOptions(options...) if err != nil { return err } - c := &http.Client{Transport: tr} - - u := url.URL{ - Scheme: ref.Context().Registry.Scheme(), - Host: ref.Context().RegistryStr(), - Path: fmt.Sprintf("/v2/%s/manifests/%s", ref.Context().RepositoryStr(), ref.Identifier()), - } - - req, err := http.NewRequest(http.MethodDelete, u.String(), nil) - if err != nil { - return err - } - - resp, err := c.Do(req.WithContext(o.context)) - if err != nil { - return err - } - defer resp.Body.Close() - - return transport.CheckError(resp, http.StatusOK, http.StatusAccepted) + return newPusher(o).Delete(o.context, ref) } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/descriptor.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/descriptor.go index 9c8ae168fadb..fafe910e95a8 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/descriptor.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/descriptor.go @@ -15,54 +15,50 @@ package remote import ( - "bytes" "context" + "errors" "fmt" - "io" - "net/http" - "net/url" - "strings" - "github.com/google/go-containerregistry/internal/redact" - "github.com/google/go-containerregistry/internal/verify" "github.com/google/go-containerregistry/pkg/logs" "github.com/google/go-containerregistry/pkg/name" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/partial" - "github.com/google/go-containerregistry/pkg/v1/remote/transport" "github.com/google/go-containerregistry/pkg/v1/types" ) +var allManifestMediaTypes = append(append([]types.MediaType{ + types.DockerManifestSchema1, + types.DockerManifestSchema1Signed, +}, acceptableImageMediaTypes...), acceptableIndexMediaTypes...) + // ErrSchema1 indicates that we received a schema1 manifest from the registry. // This library doesn't have plans to support this legacy image format: // https://github.com/google/go-containerregistry/issues/377 -type ErrSchema1 struct { - schema string -} +var ErrSchema1 = errors.New("see https://github.com/google/go-containerregistry/issues/377") // newErrSchema1 returns an ErrSchema1 with the unexpected MediaType. func newErrSchema1(schema types.MediaType) error { - return &ErrSchema1{ - schema: string(schema), - } -} - -// Error implements error. -func (e *ErrSchema1) Error() string { - return fmt.Sprintf("unsupported MediaType: %q, see https://github.com/google/go-containerregistry/issues/377", e.schema) + return fmt.Errorf("unsupported MediaType: %q, %w", schema, ErrSchema1) } // Descriptor provides access to metadata about remote artifact and accessors // for efficiently converting it into a v1.Image or v1.ImageIndex. type Descriptor struct { - fetcher + fetcher fetcher v1.Descriptor + + ref name.Reference Manifest []byte + ctx context.Context - // So we can share this implementation with Image.. + // So we can share this implementation with Image. platform v1.Platform } +func (d *Descriptor) toDesc() v1.Descriptor { + return d.Descriptor +} + // RawManifest exists to satisfy the Taggable interface. func (d *Descriptor) RawManifest() ([]byte, error) { return d.Manifest, nil @@ -74,14 +70,7 @@ func (d *Descriptor) RawManifest() ([]byte, error) { // // See Head if you don't need the response body. func Get(ref name.Reference, options ...Option) (*Descriptor, error) { - acceptable := []types.MediaType{ - // Just to look at them. - types.DockerManifestSchema1, - types.DockerManifestSchema1Signed, - } - acceptable = append(acceptable, acceptableImageMediaTypes...) - acceptable = append(acceptable, acceptableIndexMediaTypes...) - return get(ref, acceptable, options...) + return get(ref, allManifestMediaTypes, options...) } // Head returns a v1.Descriptor for the given reference by issuing a HEAD @@ -90,48 +79,22 @@ func Get(ref name.Reference, options ...Option) (*Descriptor, error) { // Note that the server response will not have a body, so any errors encountered // should be retried with Get to get more details. func Head(ref name.Reference, options ...Option) (*v1.Descriptor, error) { - acceptable := []types.MediaType{ - // Just to look at them. - types.DockerManifestSchema1, - types.DockerManifestSchema1Signed, - } - acceptable = append(acceptable, acceptableImageMediaTypes...) - acceptable = append(acceptable, acceptableIndexMediaTypes...) - - o, err := makeOptions(ref.Context(), options...) - if err != nil { - return nil, err - } - - f, err := makeFetcher(ref, o) + o, err := makeOptions(options...) if err != nil { return nil, err } - return f.headManifest(ref, acceptable) + return newPuller(o).Head(o.context, ref) } // Handle options and fetch the manifest with the acceptable MediaTypes in the // Accept header. func get(ref name.Reference, acceptable []types.MediaType, options ...Option) (*Descriptor, error) { - o, err := makeOptions(ref.Context(), options...) + o, err := makeOptions(options...) if err != nil { return nil, err } - f, err := makeFetcher(ref, o) - if err != nil { - return nil, err - } - b, desc, err := f.fetchManifest(ref, acceptable) - if err != nil { - return nil, err - } - return &Descriptor{ - fetcher: *f, - Manifest: b, - Descriptor: *desc, - platform: o.platform, - }, nil + return newPuller(o).get(o.context, ref, acceptable, o.platform) } // Image converts the Descriptor into a v1.Image. @@ -167,7 +130,28 @@ func (d *Descriptor) Image() (v1.Image, error) { } return &mountableImage{ Image: imgCore, - Reference: d.Ref, + Reference: d.ref, + }, nil +} + +// Schema1 converts the Descriptor into a v1.Image for v2 schema 1 media types. +// +// The v1.Image returned by this method does not implement the entire interface because it would be inefficient. +// This exists mostly to make it easier to copy schema 1 images around or look at their filesystems. +// This is separate from Image() to avoid a backward incompatible change for callers expecting ErrSchema1. +func (d *Descriptor) Schema1() (v1.Image, error) { + i := &schema1{ + ref: d.ref, + fetcher: d.fetcher, + ctx: d.ctx, + manifest: d.Manifest, + mediaType: d.MediaType, + descriptor: &d.Descriptor, + } + + return &mountableImage{ + Image: i, + Reference: d.ref, }, nil } @@ -193,6 +177,8 @@ func (d *Descriptor) ImageIndex() (v1.ImageIndex, error) { func (d *Descriptor) remoteImage() *remoteImage { return &remoteImage{ + ref: d.ref, + ctx: d.ctx, fetcher: d.fetcher, manifest: d.Manifest, mediaType: d.MediaType, @@ -202,229 +188,11 @@ func (d *Descriptor) remoteImage() *remoteImage { func (d *Descriptor) remoteIndex() *remoteIndex { return &remoteIndex{ + ref: d.ref, + ctx: d.ctx, fetcher: d.fetcher, manifest: d.Manifest, mediaType: d.MediaType, descriptor: &d.Descriptor, } } - -// fetcher implements methods for reading from a registry. -type fetcher struct { - Ref name.Reference - Client *http.Client - context context.Context -} - -func makeFetcher(ref name.Reference, o *options) (*fetcher, error) { - tr, err := transport.NewWithContext(o.context, ref.Context().Registry, o.auth, o.transport, []string{ref.Scope(transport.PullScope)}) - if err != nil { - return nil, err - } - return &fetcher{ - Ref: ref, - Client: &http.Client{Transport: tr}, - context: o.context, - }, nil -} - -// url returns a url.Url for the specified path in the context of this remote image reference. -func (f *fetcher) url(resource, identifier string) url.URL { - return url.URL{ - Scheme: f.Ref.Context().Registry.Scheme(), - Host: f.Ref.Context().RegistryStr(), - Path: fmt.Sprintf("/v2/%s/%s/%s", f.Ref.Context().RepositoryStr(), resource, identifier), - } -} - -func (f *fetcher) fetchManifest(ref name.Reference, acceptable []types.MediaType) ([]byte, *v1.Descriptor, error) { - u := f.url("manifests", ref.Identifier()) - req, err := http.NewRequest(http.MethodGet, u.String(), nil) - if err != nil { - return nil, nil, err - } - accept := []string{} - for _, mt := range acceptable { - accept = append(accept, string(mt)) - } - req.Header.Set("Accept", strings.Join(accept, ",")) - - resp, err := f.Client.Do(req.WithContext(f.context)) - if err != nil { - return nil, nil, err - } - defer resp.Body.Close() - - if err := transport.CheckError(resp, http.StatusOK); err != nil { - return nil, nil, err - } - - manifest, err := io.ReadAll(resp.Body) - if err != nil { - return nil, nil, err - } - - digest, size, err := v1.SHA256(bytes.NewReader(manifest)) - if err != nil { - return nil, nil, err - } - - mediaType := types.MediaType(resp.Header.Get("Content-Type")) - contentDigest, err := v1.NewHash(resp.Header.Get("Docker-Content-Digest")) - if err == nil && mediaType == types.DockerManifestSchema1Signed { - // If we can parse the digest from the header, and it's a signed schema 1 - // manifest, let's use that for the digest to appease older registries. - digest = contentDigest - } - - // Validate the digest matches what we asked for, if pulling by digest. - if dgst, ok := ref.(name.Digest); ok { - if digest.String() != dgst.DigestStr() { - return nil, nil, fmt.Errorf("manifest digest: %q does not match requested digest: %q for %q", digest, dgst.DigestStr(), f.Ref) - } - } - // Do nothing for tags; I give up. - // - // We'd like to validate that the "Docker-Content-Digest" header matches what is returned by the registry, - // but so many registries implement this incorrectly that it's not worth checking. - // - // For reference: - // https://github.com/GoogleContainerTools/kaniko/issues/298 - - // Return all this info since we have to calculate it anyway. - desc := v1.Descriptor{ - Digest: digest, - Size: size, - MediaType: mediaType, - } - - return manifest, &desc, nil -} - -func (f *fetcher) headManifest(ref name.Reference, acceptable []types.MediaType) (*v1.Descriptor, error) { - u := f.url("manifests", ref.Identifier()) - req, err := http.NewRequest(http.MethodHead, u.String(), nil) - if err != nil { - return nil, err - } - accept := []string{} - for _, mt := range acceptable { - accept = append(accept, string(mt)) - } - req.Header.Set("Accept", strings.Join(accept, ",")) - - resp, err := f.Client.Do(req.WithContext(f.context)) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - if err := transport.CheckError(resp, http.StatusOK); err != nil { - return nil, err - } - - mth := resp.Header.Get("Content-Type") - if mth == "" { - return nil, fmt.Errorf("HEAD %s: response did not include Content-Type header", u.String()) - } - mediaType := types.MediaType(mth) - - size := resp.ContentLength - if size == -1 { - return nil, fmt.Errorf("GET %s: response did not include Content-Length header", u.String()) - } - - dh := resp.Header.Get("Docker-Content-Digest") - if dh == "" { - return nil, fmt.Errorf("HEAD %s: response did not include Docker-Content-Digest header", u.String()) - } - digest, err := v1.NewHash(dh) - if err != nil { - return nil, err - } - - // Validate the digest matches what we asked for, if pulling by digest. - if dgst, ok := ref.(name.Digest); ok { - if digest.String() != dgst.DigestStr() { - return nil, fmt.Errorf("manifest digest: %q does not match requested digest: %q for %q", digest, dgst.DigestStr(), f.Ref) - } - } - - // Return all this info since we have to calculate it anyway. - return &v1.Descriptor{ - Digest: digest, - Size: size, - MediaType: mediaType, - }, nil -} - -func (f *fetcher) fetchBlob(ctx context.Context, size int64, h v1.Hash) (io.ReadCloser, error) { - u := f.url("blobs", h.String()) - req, err := http.NewRequest(http.MethodGet, u.String(), nil) - if err != nil { - return nil, err - } - - resp, err := f.Client.Do(req.WithContext(ctx)) - if err != nil { - return nil, redact.Error(err) - } - - if err := transport.CheckError(resp, http.StatusOK); err != nil { - resp.Body.Close() - return nil, err - } - - // Do whatever we can. - // If we have an expected size and Content-Length doesn't match, return an error. - // If we don't have an expected size and we do have a Content-Length, use Content-Length. - if hsize := resp.ContentLength; hsize != -1 { - if size == verify.SizeUnknown { - size = hsize - } else if hsize != size { - return nil, fmt.Errorf("GET %s: Content-Length header %d does not match expected size %d", u.String(), hsize, size) - } - } - - return verify.ReadCloser(resp.Body, size, h) -} - -func (f *fetcher) headBlob(h v1.Hash) (*http.Response, error) { - u := f.url("blobs", h.String()) - req, err := http.NewRequest(http.MethodHead, u.String(), nil) - if err != nil { - return nil, err - } - - resp, err := f.Client.Do(req.WithContext(f.context)) - if err != nil { - return nil, redact.Error(err) - } - - if err := transport.CheckError(resp, http.StatusOK); err != nil { - resp.Body.Close() - return nil, err - } - - return resp, nil -} - -func (f *fetcher) blobExists(h v1.Hash) (bool, error) { - u := f.url("blobs", h.String()) - req, err := http.NewRequest(http.MethodHead, u.String(), nil) - if err != nil { - return false, err - } - - resp, err := f.Client.Do(req.WithContext(f.context)) - if err != nil { - return false, redact.Error(err) - } - defer resp.Body.Close() - - if err := transport.CheckError(resp, http.StatusOK, http.StatusNotFound); err != nil { - return false, err - } - - return resp.StatusCode == http.StatusOK, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/fetcher.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/fetcher.go new file mode 100644 index 000000000000..d77b37c0c2ea --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/fetcher.go @@ -0,0 +1,317 @@ +// Copyright 2023 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package remote + +import ( + "bytes" + "context" + "fmt" + "io" + "net/http" + "net/url" + "strings" + + "github.com/google/go-containerregistry/internal/redact" + "github.com/google/go-containerregistry/internal/verify" + "github.com/google/go-containerregistry/pkg/authn" + "github.com/google/go-containerregistry/pkg/name" + v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/remote/transport" + "github.com/google/go-containerregistry/pkg/v1/types" +) + +const ( + kib = 1024 + mib = 1024 * kib + manifestLimit = 100 * mib +) + +// fetcher implements methods for reading from a registry. +type fetcher struct { + target resource + client *http.Client +} + +func makeFetcher(ctx context.Context, target resource, o *options) (*fetcher, error) { + auth := o.auth + if o.keychain != nil { + kauth, err := authn.Resolve(ctx, o.keychain, target) + if err != nil { + return nil, err + } + auth = kauth + } + + reg, ok := target.(name.Registry) + if !ok { + repo, ok := target.(name.Repository) + if !ok { + return nil, fmt.Errorf("unexpected resource: %T", target) + } + reg = repo.Registry + } + + tr, err := transport.NewWithContext(ctx, reg, auth, o.transport, []string{target.Scope(transport.PullScope)}) + if err != nil { + return nil, err + } + return &fetcher{ + target: target, + client: &http.Client{Transport: tr}, + }, nil +} + +func (f *fetcher) Do(req *http.Request) (*http.Response, error) { + return f.client.Do(req) +} + +type resource interface { + Scheme() string + RegistryStr() string + Scope(string) string + + authn.Resource +} + +// url returns a url.Url for the specified path in the context of this remote image reference. +func (f *fetcher) url(resource, identifier string) url.URL { + u := url.URL{ + Scheme: f.target.Scheme(), + Host: f.target.RegistryStr(), + // Default path if this is not a repository. + Path: "/v2/_catalog", + } + if repo, ok := f.target.(name.Repository); ok { + u.Path = fmt.Sprintf("/v2/%s/%s/%s", repo.RepositoryStr(), resource, identifier) + } + return u +} + +func (f *fetcher) get(ctx context.Context, ref name.Reference, acceptable []types.MediaType, platform v1.Platform) (*Descriptor, error) { + b, desc, err := f.fetchManifest(ctx, ref, acceptable) + if err != nil { + return nil, err + } + return &Descriptor{ + ref: ref, + ctx: ctx, + fetcher: *f, + Manifest: b, + Descriptor: *desc, + platform: platform, + }, nil +} + +func (f *fetcher) fetchManifest(ctx context.Context, ref name.Reference, acceptable []types.MediaType) ([]byte, *v1.Descriptor, error) { + u := f.url("manifests", ref.Identifier()) + req, err := http.NewRequest(http.MethodGet, u.String(), nil) + if err != nil { + return nil, nil, err + } + accept := []string{} + for _, mt := range acceptable { + accept = append(accept, string(mt)) + } + req.Header.Set("Accept", strings.Join(accept, ",")) + + resp, err := f.client.Do(req.WithContext(ctx)) + if err != nil { + return nil, nil, err + } + defer resp.Body.Close() + + if err := transport.CheckError(resp, http.StatusOK); err != nil { + return nil, nil, err + } + + manifest, err := io.ReadAll(io.LimitReader(resp.Body, manifestLimit)) + if err != nil { + return nil, nil, err + } + + digest, size, err := v1.SHA256(bytes.NewReader(manifest)) + if err != nil { + return nil, nil, err + } + + mediaType := types.MediaType(resp.Header.Get("Content-Type")) + contentDigest, err := v1.NewHash(resp.Header.Get("Docker-Content-Digest")) + if err == nil && mediaType == types.DockerManifestSchema1Signed { + // If we can parse the digest from the header, and it's a signed schema 1 + // manifest, let's use that for the digest to appease older registries. + digest = contentDigest + } + + // Validate the digest matches what we asked for, if pulling by digest. + if dgst, ok := ref.(name.Digest); ok { + if digest.String() != dgst.DigestStr() { + return nil, nil, fmt.Errorf("manifest digest: %q does not match requested digest: %q for %q", digest, dgst.DigestStr(), ref) + } + } + + var artifactType string + mf, _ := v1.ParseManifest(bytes.NewReader(manifest)) + // Failing to parse as a manifest should just be ignored. + // The manifest might not be valid, and that's okay. + if mf != nil && !mf.Config.MediaType.IsConfig() { + artifactType = string(mf.Config.MediaType) + } + + // Do nothing for tags; I give up. + // + // We'd like to validate that the "Docker-Content-Digest" header matches what is returned by the registry, + // but so many registries implement this incorrectly that it's not worth checking. + // + // For reference: + // https://github.com/GoogleContainerTools/kaniko/issues/298 + + // Return all this info since we have to calculate it anyway. + desc := v1.Descriptor{ + Digest: digest, + Size: size, + MediaType: mediaType, + ArtifactType: artifactType, + } + + return manifest, &desc, nil +} + +func (f *fetcher) headManifest(ctx context.Context, ref name.Reference, acceptable []types.MediaType) (*v1.Descriptor, error) { + u := f.url("manifests", ref.Identifier()) + req, err := http.NewRequest(http.MethodHead, u.String(), nil) + if err != nil { + return nil, err + } + accept := []string{} + for _, mt := range acceptable { + accept = append(accept, string(mt)) + } + req.Header.Set("Accept", strings.Join(accept, ",")) + + resp, err := f.client.Do(req.WithContext(ctx)) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if err := transport.CheckError(resp, http.StatusOK); err != nil { + return nil, err + } + + mth := resp.Header.Get("Content-Type") + if mth == "" { + return nil, fmt.Errorf("HEAD %s: response did not include Content-Type header", u.String()) + } + mediaType := types.MediaType(mth) + + size := resp.ContentLength + if size == -1 { + return nil, fmt.Errorf("GET %s: response did not include Content-Length header", u.String()) + } + + dh := resp.Header.Get("Docker-Content-Digest") + if dh == "" { + return nil, fmt.Errorf("HEAD %s: response did not include Docker-Content-Digest header", u.String()) + } + digest, err := v1.NewHash(dh) + if err != nil { + return nil, err + } + + // Validate the digest matches what we asked for, if pulling by digest. + if dgst, ok := ref.(name.Digest); ok { + if digest.String() != dgst.DigestStr() { + return nil, fmt.Errorf("manifest digest: %q does not match requested digest: %q for %q", digest, dgst.DigestStr(), ref) + } + } + + // Return all this info since we have to calculate it anyway. + return &v1.Descriptor{ + Digest: digest, + Size: size, + MediaType: mediaType, + }, nil +} + +func (f *fetcher) fetchBlob(ctx context.Context, size int64, h v1.Hash) (io.ReadCloser, error) { + u := f.url("blobs", h.String()) + req, err := http.NewRequest(http.MethodGet, u.String(), nil) + if err != nil { + return nil, err + } + + resp, err := f.client.Do(req.WithContext(ctx)) + if err != nil { + return nil, redact.Error(err) + } + + if err := transport.CheckError(resp, http.StatusOK); err != nil { + resp.Body.Close() + return nil, err + } + + // Do whatever we can. + // If we have an expected size and Content-Length doesn't match, return an error. + // If we don't have an expected size and we do have a Content-Length, use Content-Length. + if hsize := resp.ContentLength; hsize != -1 { + if size == verify.SizeUnknown { + size = hsize + } else if hsize != size { + return nil, fmt.Errorf("GET %s: Content-Length header %d does not match expected size %d", u.String(), hsize, size) + } + } + + return verify.ReadCloser(resp.Body, size, h) +} + +func (f *fetcher) headBlob(ctx context.Context, h v1.Hash) (*http.Response, error) { + u := f.url("blobs", h.String()) + req, err := http.NewRequest(http.MethodHead, u.String(), nil) + if err != nil { + return nil, err + } + + resp, err := f.client.Do(req.WithContext(ctx)) + if err != nil { + return nil, redact.Error(err) + } + + if err := transport.CheckError(resp, http.StatusOK); err != nil { + resp.Body.Close() + return nil, err + } + + return resp, nil +} + +func (f *fetcher) blobExists(ctx context.Context, h v1.Hash) (bool, error) { + u := f.url("blobs", h.String()) + req, err := http.NewRequest(http.MethodHead, u.String(), nil) + if err != nil { + return false, err + } + + resp, err := f.client.Do(req.WithContext(ctx)) + if err != nil { + return false, redact.Error(err) + } + defer resp.Body.Close() + + if err := transport.CheckError(resp, http.StatusOK, http.StatusNotFound); err != nil { + return false, err + } + + return resp.StatusCode == http.StatusOK, nil +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go index 4e17de76e84f..f085967ed510 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go @@ -16,6 +16,7 @@ package remote import ( "bytes" + "context" "io" "net/http" "net/url" @@ -37,7 +38,9 @@ var acceptableImageMediaTypes = []types.MediaType{ // remoteImage accesses an image from a remote registry type remoteImage struct { - fetcher + fetcher fetcher + ref name.Reference + ctx context.Context manifestLock sync.Mutex // Protects manifest manifest []byte configLock sync.Mutex // Protects config @@ -46,6 +49,15 @@ type remoteImage struct { descriptor *v1.Descriptor } +func (r *remoteImage) ArtifactType() (string, error) { + // kind of a hack, but RawManifest does appropriate locking/memoization + // and makes sure r.descriptor is populated. + if _, err := r.RawManifest(); err != nil { + return "", err + } + return r.descriptor.ArtifactType, nil +} + var _ partial.CompressedImageCore = (*remoteImage)(nil) // Image provides access to a remote image reference. @@ -75,7 +87,7 @@ func (r *remoteImage) RawManifest() ([]byte, error) { // NOTE(jonjohnsonjr): We should never get here because the public entrypoints // do type-checking via remote.Descriptor. I've left this here for tests that // directly instantiate a remoteImage. - manifest, desc, err := r.fetchManifest(r.Ref, acceptableImageMediaTypes) + manifest, desc, err := r.fetcher.fetchManifest(r.ctx, r.ref, acceptableImageMediaTypes) if err != nil { return nil, err } @@ -108,7 +120,7 @@ func (r *remoteImage) RawConfigFile() ([]byte, error) { return r.config, nil } - body, err := r.fetchBlob(r.context, m.Config.Size, m.Config.Digest) + body, err := r.fetcher.fetchBlob(r.ctx, m.Config.Size, m.Config.Digest) if err != nil { return nil, err } @@ -130,9 +142,26 @@ func (r *remoteImage) Descriptor() (*v1.Descriptor, error) { return r.descriptor, err } +func (r *remoteImage) ConfigLayer() (v1.Layer, error) { + if _, err := r.RawManifest(); err != nil { + return nil, err + } + m, err := partial.Manifest(r) + if err != nil { + return nil, err + } + + return partial.CompressedToLayer(&remoteImageLayer{ + ri: r, + ctx: r.ctx, + digest: m.Config.Digest, + }) +} + // remoteImageLayer implements partial.CompressedLayer type remoteImageLayer struct { ri *remoteImage + ctx context.Context digest v1.Hash } @@ -143,7 +172,7 @@ func (rl *remoteImageLayer) Digest() (v1.Hash, error) { // Compressed implements partial.CompressedLayer func (rl *remoteImageLayer) Compressed() (io.ReadCloser, error) { - urls := []url.URL{rl.ri.url("blobs", rl.digest.String())} + urls := []url.URL{rl.ri.fetcher.url("blobs", rl.digest.String())} // Add alternative layer sources from URLs (usually none). d, err := partial.BlobDescriptor(rl, rl.digest) @@ -156,7 +185,7 @@ func (rl *remoteImageLayer) Compressed() (io.ReadCloser, error) { } // We don't want to log binary layers -- this can break terminals. - ctx := redact.NewContext(rl.ri.context, "omitting binary blobs from logs") + ctx := redact.NewContext(rl.ctx, "omitting binary blobs from logs") for _, s := range d.URLs { u, err := url.Parse(s) @@ -177,7 +206,7 @@ func (rl *remoteImageLayer) Compressed() (io.ReadCloser, error) { return nil, err } - resp, err := rl.ri.Client.Do(req.WithContext(ctx)) + resp, err := rl.ri.fetcher.Do(req.WithContext(ctx)) if err != nil { lastErr = err continue @@ -235,13 +264,14 @@ func (rl *remoteImageLayer) Descriptor() (*v1.Descriptor, error) { // See partial.Exists. func (rl *remoteImageLayer) Exists() (bool, error) { - return rl.ri.blobExists(rl.digest) + return rl.ri.fetcher.blobExists(rl.ri.ctx, rl.digest) } // LayerByDigest implements partial.CompressedLayer func (r *remoteImage) LayerByDigest(h v1.Hash) (partial.CompressedLayer, error) { return &remoteImageLayer{ ri: r, + ctx: r.ctx, digest: h, }, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/index.go index a4ee74c0574b..b80972c80e41 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/index.go @@ -16,6 +16,7 @@ package remote import ( "bytes" + "context" "fmt" "sync" @@ -33,7 +34,9 @@ var acceptableIndexMediaTypes = []types.MediaType{ // remoteIndex accesses an index from a remote registry type remoteIndex struct { - fetcher + fetcher fetcher + ref name.Reference + ctx context.Context manifestLock sync.Mutex // Protects manifest manifest []byte mediaType types.MediaType @@ -75,7 +78,7 @@ func (r *remoteIndex) RawManifest() ([]byte, error) { // NOTE(jonjohnsonjr): We should never get here because the public entrypoints // do type-checking via remote.Descriptor. I've left this here for tests that // directly instantiate a remoteIndex. - manifest, desc, err := r.fetchManifest(r.Ref, acceptableIndexMediaTypes) + manifest, desc, err := r.fetcher.fetchManifest(r.ctx, r.ref, acceptableIndexMediaTypes) if err != nil { return nil, err } @@ -133,6 +136,7 @@ func (r *remoteIndex) Layer(h v1.Hash) (v1.Layer, error) { if h == childDesc.Digest { l, err := partial.CompressedToLayer(&remoteLayer{ fetcher: r.fetcher, + ctx: r.ctx, digest: h, }) if err != nil { @@ -140,47 +144,13 @@ func (r *remoteIndex) Layer(h v1.Hash) (v1.Layer, error) { } return &MountableLayer{ Layer: l, - Reference: r.Ref.Context().Digest(h.String()), + Reference: r.ref.Context().Digest(h.String()), }, nil } } return nil, fmt.Errorf("layer not found: %s", h) } -// Experiment with a better API for v1.ImageIndex. We might want to move this -// to partial? -func (r *remoteIndex) Manifests() ([]partial.Describable, error) { - m, err := r.IndexManifest() - if err != nil { - return nil, err - } - manifests := []partial.Describable{} - for _, desc := range m.Manifests { - switch { - case desc.MediaType.IsImage(): - img, err := r.Image(desc.Digest) - if err != nil { - return nil, err - } - manifests = append(manifests, img) - case desc.MediaType.IsIndex(): - idx, err := r.ImageIndex(desc.Digest) - if err != nil { - return nil, err - } - manifests = append(manifests, idx) - default: - layer, err := r.Layer(desc.Digest) - if err != nil { - return nil, err - } - manifests = append(manifests, layer) - } - } - - return manifests, nil -} - func (r *remoteIndex) imageByPlatform(platform v1.Platform) (v1.Image, error) { desc, err := r.childByPlatform(platform) if err != nil { @@ -216,7 +186,7 @@ func (r *remoteIndex) childByPlatform(platform v1.Platform) (*Descriptor, error) return r.childDescriptor(childDesc, platform) } } - return nil, fmt.Errorf("no child with platform %+v in index %s", platform, r.Ref) + return nil, fmt.Errorf("no child with platform %+v in index %s", platform, r.ref) } func (r *remoteIndex) childByHash(h v1.Hash) (*Descriptor, error) { @@ -229,12 +199,12 @@ func (r *remoteIndex) childByHash(h v1.Hash) (*Descriptor, error) { return r.childDescriptor(childDesc, defaultPlatform) } } - return nil, fmt.Errorf("no child with digest %s in index %s", h, r.Ref) + return nil, fmt.Errorf("no child with digest %s in index %s", h, r.ref) } // Convert one of this index's child's v1.Descriptor into a remote.Descriptor, with the given platform option. func (r *remoteIndex) childDescriptor(child v1.Descriptor, platform v1.Platform) (*Descriptor, error) { - ref := r.Ref.Context().Digest(child.Digest.String()) + ref := r.ref.Context().Digest(child.Digest.String()) var ( manifest []byte err error @@ -245,17 +215,25 @@ func (r *remoteIndex) childDescriptor(child v1.Descriptor, platform v1.Platform) } manifest = child.Data } else { - manifest, _, err = r.fetchManifest(ref, []types.MediaType{child.MediaType}) + manifest, _, err = r.fetcher.fetchManifest(r.ctx, ref, []types.MediaType{child.MediaType}) if err != nil { return nil, err } } + + if child.MediaType.IsImage() { + mf, _ := v1.ParseManifest(bytes.NewReader(manifest)) + // Failing to parse as a manifest should just be ignored. + // The manifest might not be valid, and that's okay. + if mf != nil && !mf.Config.MediaType.IsConfig() { + child.ArtifactType = string(mf.Config.MediaType) + } + } + return &Descriptor{ - fetcher: fetcher{ - Ref: ref, - Client: r.Client, - context: r.context, - }, + ref: ref, + ctx: r.ctx, + fetcher: r.fetcher, Manifest: manifest, Descriptor: child, platform: platform, diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/layer.go index b2126f599d44..39c205950256 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/layer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/layer.go @@ -15,32 +15,33 @@ package remote import ( + "context" "io" "github.com/google/go-containerregistry/internal/redact" "github.com/google/go-containerregistry/internal/verify" "github.com/google/go-containerregistry/pkg/name" v1 "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/partial" "github.com/google/go-containerregistry/pkg/v1/types" ) // remoteImagelayer implements partial.CompressedLayer type remoteLayer struct { - fetcher - digest v1.Hash + ctx context.Context + fetcher fetcher + digest v1.Hash } // Compressed implements partial.CompressedLayer func (rl *remoteLayer) Compressed() (io.ReadCloser, error) { // We don't want to log binary layers -- this can break terminals. - ctx := redact.NewContext(rl.context, "omitting binary blobs from logs") - return rl.fetchBlob(ctx, verify.SizeUnknown, rl.digest) + ctx := redact.NewContext(rl.ctx, "omitting binary blobs from logs") + return rl.fetcher.fetchBlob(ctx, verify.SizeUnknown, rl.digest) } // Compressed implements partial.CompressedLayer func (rl *remoteLayer) Size() (int64, error) { - resp, err := rl.headBlob(rl.digest) + resp, err := rl.fetcher.headBlob(rl.ctx, rl.digest) if err != nil { return -1, err } @@ -60,7 +61,7 @@ func (rl *remoteLayer) MediaType() (types.MediaType, error) { // See partial.Exists. func (rl *remoteLayer) Exists() (bool, error) { - return rl.blobExists(rl.digest) + return rl.fetcher.blobExists(rl.ctx, rl.digest) } // Layer reads the given blob reference from a registry as a Layer. A blob @@ -68,27 +69,9 @@ func (rl *remoteLayer) Exists() (bool, error) { // digest of the blob to be read and the repository portion is the repo where // that blob lives. func Layer(ref name.Digest, options ...Option) (v1.Layer, error) { - o, err := makeOptions(ref.Context(), options...) + o, err := makeOptions(options...) if err != nil { return nil, err } - f, err := makeFetcher(ref, o) - if err != nil { - return nil, err - } - h, err := v1.NewHash(ref.Identifier()) - if err != nil { - return nil, err - } - l, err := partial.CompressedToLayer(&remoteLayer{ - fetcher: *f, - digest: h, - }) - if err != nil { - return nil, err - } - return &MountableLayer{ - Layer: l, - Reference: ref, - }, nil + return newPuller(o).Layer(o.context, ref) } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go index e643c49aabf1..910d2a94c776 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go @@ -26,11 +26,6 @@ import ( "github.com/google/go-containerregistry/pkg/v1/remote/transport" ) -type tags struct { - Name string `json:"name"` - Tags []string `json:"tags"` -} - // ListWithContext calls List with the given context. // // Deprecated: Use List and WithContext. This will be removed in a future release. @@ -41,73 +36,65 @@ func ListWithContext(ctx context.Context, repo name.Repository, options ...Optio // List calls /tags/list for the given repository, returning the list of tags // in the "tags" property. func List(repo name.Repository, options ...Option) ([]string, error) { - o, err := makeOptions(repo, options...) + o, err := makeOptions(options...) if err != nil { return nil, err } - scopes := []string{repo.Scope(transport.PullScope)} - tr, err := transport.NewWithContext(o.context, repo.Registry, o.auth, o.transport, scopes) + return newPuller(o).List(o.context, repo) +} + +type Tags struct { + Name string `json:"name"` + Tags []string `json:"tags"` + Next string `json:"next,omitempty"` +} + +func (f *fetcher) listPage(ctx context.Context, repo name.Repository, next string, pageSize int) (*Tags, error) { + if next == "" { + uri := &url.URL{ + Scheme: repo.Scheme(), + Host: repo.RegistryStr(), + Path: fmt.Sprintf("/v2/%s/tags/list", repo.RepositoryStr()), + } + if pageSize > 0 { + uri.RawQuery = fmt.Sprintf("n=%d", pageSize) + } + next = uri.String() + } + + req, err := http.NewRequestWithContext(ctx, "GET", next, nil) if err != nil { return nil, err } - uri := &url.URL{ - Scheme: repo.Registry.Scheme(), - Host: repo.Registry.RegistryStr(), - Path: fmt.Sprintf("/v2/%s/tags/list", repo.RepositoryStr()), + resp, err := f.client.Do(req) + if err != nil { + return nil, err } - if o.pageSize > 0 { - uri.RawQuery = fmt.Sprintf("n=%d", o.pageSize) + if err := transport.CheckError(resp, http.StatusOK); err != nil { + return nil, err } - client := http.Client{Transport: tr} - tagList := []string{} - parsed := tags{} - - // get responses until there is no next page - for { - select { - case <-o.context.Done(): - return nil, o.context.Err() - default: - } - - req, err := http.NewRequestWithContext(o.context, "GET", uri.String(), nil) - if err != nil { - return nil, err - } - - resp, err := client.Do(req) - if err != nil { - return nil, err - } - - if err := transport.CheckError(resp, http.StatusOK); err != nil { - return nil, err - } - - if err := json.NewDecoder(resp.Body).Decode(&parsed); err != nil { - return nil, err - } + parsed := Tags{} + if err := json.NewDecoder(resp.Body).Decode(&parsed); err != nil { + return nil, err + } - if err := resp.Body.Close(); err != nil { - return nil, err - } + if err := resp.Body.Close(); err != nil { + return nil, err + } - tagList = append(tagList, parsed.Tags...) + uri, err := getNextPageURL(resp) + if err != nil { + return nil, err + } - uri, err = getNextPageURL(resp) - if err != nil { - return nil, err - } - // no next page - if uri == nil { - break - } + if uri != nil { + parsed.Next = uri.String() } - return tagList, nil + return &parsed, nil } // getNextPageURL checks if there is a Link header in a http.Response which @@ -139,3 +126,27 @@ func getNextPageURL(resp *http.Response) (*url.URL, error) { linkURL = resp.Request.URL.ResolveReference(linkURL) return linkURL, nil } + +type Lister struct { + f *fetcher + repo name.Repository + pageSize int + + page *Tags + err error + + needMore bool +} + +func (l *Lister) Next(ctx context.Context) (*Tags, error) { + if l.needMore { + l.page, l.err = l.f.listPage(ctx, l.repo, l.page.Next, l.pageSize) + } else { + l.needMore = true + } + return l.page, l.err +} + +func (l *Lister) HasNext() bool { + return l.page != nil && (!l.needMore || l.page.Next != "") +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/multi_write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/multi_write.go index 7f32413ceee8..a6705de895c8 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/multi_write.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/multi_write.go @@ -15,288 +15,32 @@ package remote import ( - "context" - "fmt" - "net/http" - "github.com/google/go-containerregistry/pkg/name" - v1 "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/partial" - "github.com/google/go-containerregistry/pkg/v1/remote/transport" - "github.com/google/go-containerregistry/pkg/v1/types" "golang.org/x/sync/errgroup" ) // MultiWrite writes the given Images or ImageIndexes to the given refs, as -// efficiently as possible, by deduping shared layer blobs and uploading layers -// in parallel, then uploading all manifests in parallel. -// -// Current limitations: -// - All refs must share the same repository. -// - Images cannot consist of stream.Layers. -func MultiWrite(m map[name.Reference]Taggable, options ...Option) (rerr error) { - // Determine the repository being pushed to; if asked to push to - // multiple repositories, give up. - var repo, zero name.Repository - for ref := range m { - if repo == zero { - repo = ref.Context() - } else if ref.Context() != repo { - return fmt.Errorf("MultiWrite can only push to the same repository (saw %q and %q)", repo, ref.Context()) - } - } - - o, err := makeOptions(repo, options...) - if err != nil { - return err - } - - // Collect unique blobs (layers and config blobs). - blobs := map[v1.Hash]v1.Layer{} - newManifests := []map[name.Reference]Taggable{} - // Separate originally requested images and indexes, so we can push images first. - images, indexes := map[name.Reference]Taggable{}, map[name.Reference]Taggable{} - for ref, i := range m { - if img, ok := i.(v1.Image); ok { - images[ref] = i - if err := addImageBlobs(img, blobs, o.allowNondistributableArtifacts); err != nil { - return err - } - continue - } - if idx, ok := i.(v1.ImageIndex); ok { - indexes[ref] = i - newManifests, err = addIndexBlobs(idx, blobs, repo, newManifests, 0, o.allowNondistributableArtifacts) - if err != nil { - return err - } - continue - } - return fmt.Errorf("pushable resource was not Image or ImageIndex: %T", i) - } - - // Determine if any of the layers are Mountable, because if so we need - // to request Pull scope too. - ls := []v1.Layer{} - for _, l := range blobs { - ls = append(ls, l) - } - scopes := scopesForUploadingImage(repo, ls) - tr, err := transport.NewWithContext(o.context, repo.Registry, o.auth, o.transport, scopes) +// efficiently as possible, by deduping shared layer blobs while uploading them +// in parallel. +func MultiWrite(todo map[name.Reference]Taggable, options ...Option) (rerr error) { + o, err := makeOptions(options...) if err != nil { return err } - w := writer{ - repo: repo, - client: &http.Client{Transport: tr}, - backoff: o.retryBackoff, - predicate: o.retryPredicate, + if o.progress != nil { + defer func() { o.progress.Close(rerr) }() } + p := newPusher(o) - // Collect the total size of blobs and manifests we're about to write. - if o.updates != nil { - w.progress = &progress{updates: o.updates} - w.progress.lastUpdate = &v1.Update{} - defer close(o.updates) - defer func() { _ = w.progress.err(rerr) }() - for _, b := range blobs { - size, err := b.Size() - if err != nil { - return err - } - w.progress.total(size) - } - countManifest := func(t Taggable) error { - b, err := t.RawManifest() - if err != nil { - return err - } - w.progress.total(int64(len(b))) - return nil - } - for _, i := range images { - if err := countManifest(i); err != nil { - return err - } - } - for _, nm := range newManifests { - for _, i := range nm { - if err := countManifest(i); err != nil { - return err - } - } - } - for _, i := range indexes { - if err := countManifest(i); err != nil { - return err - } - } - } + g, ctx := errgroup.WithContext(o.context) + g.SetLimit(o.jobs) - // Upload individual blobs and collect any errors. - blobChan := make(chan v1.Layer, 2*o.jobs) - ctx := o.context - g, gctx := errgroup.WithContext(o.context) - for i := 0; i < o.jobs; i++ { - // Start N workers consuming blobs to upload. + for ref, t := range todo { + ref, t := ref, t g.Go(func() error { - for b := range blobChan { - if err := w.uploadOne(gctx, b); err != nil { - return err - } - } - return nil + return p.Push(ctx, ref, t) }) } - g.Go(func() error { - defer close(blobChan) - for _, b := range blobs { - select { - case blobChan <- b: - case <-gctx.Done(): - return gctx.Err() - } - } - return nil - }) - if err := g.Wait(); err != nil { - return err - } - - commitMany := func(ctx context.Context, m map[name.Reference]Taggable) error { - g, ctx := errgroup.WithContext(ctx) - // With all of the constituent elements uploaded, upload the manifests - // to commit the images and indexes, and collect any errors. - type task struct { - i Taggable - ref name.Reference - } - taskChan := make(chan task, 2*o.jobs) - for i := 0; i < o.jobs; i++ { - // Start N workers consuming tasks to upload manifests. - g.Go(func() error { - for t := range taskChan { - if err := w.commitManifest(ctx, t.i, t.ref); err != nil { - return err - } - } - return nil - }) - } - go func() { - for ref, i := range m { - taskChan <- task{i, ref} - } - close(taskChan) - }() - return g.Wait() - } - // Push originally requested image manifests. These have no - // dependencies. - if err := commitMany(ctx, images); err != nil { - return err - } - // Push new manifests from lowest levels up. - for i := len(newManifests) - 1; i >= 0; i-- { - if err := commitMany(ctx, newManifests[i]); err != nil { - return err - } - } - // Push originally requested index manifests, which might depend on - // newly discovered manifests. - - return commitMany(ctx, indexes) -} -// addIndexBlobs adds blobs to the set of blobs we intend to upload, and -// returns the latest copy of the ordered collection of manifests to upload. -func addIndexBlobs(idx v1.ImageIndex, blobs map[v1.Hash]v1.Layer, repo name.Repository, newManifests []map[name.Reference]Taggable, lvl int, allowNondistributableArtifacts bool) ([]map[name.Reference]Taggable, error) { - if lvl > len(newManifests)-1 { - newManifests = append(newManifests, map[name.Reference]Taggable{}) - } - - im, err := idx.IndexManifest() - if err != nil { - return nil, err - } - for _, desc := range im.Manifests { - switch desc.MediaType { - case types.OCIImageIndex, types.DockerManifestList: - idx, err := idx.ImageIndex(desc.Digest) - if err != nil { - return nil, err - } - newManifests, err = addIndexBlobs(idx, blobs, repo, newManifests, lvl+1, allowNondistributableArtifacts) - if err != nil { - return nil, err - } - - // Also track the sub-index manifest to upload later by digest. - newManifests[lvl][repo.Digest(desc.Digest.String())] = idx - case types.OCIManifestSchema1, types.DockerManifestSchema2: - img, err := idx.Image(desc.Digest) - if err != nil { - return nil, err - } - if err := addImageBlobs(img, blobs, allowNondistributableArtifacts); err != nil { - return nil, err - } - - // Also track the sub-image manifest to upload later by digest. - newManifests[lvl][repo.Digest(desc.Digest.String())] = img - default: - // Workaround for #819. - if wl, ok := idx.(withLayer); ok { - layer, err := wl.Layer(desc.Digest) - if err != nil { - return nil, err - } - if err := addLayerBlob(layer, blobs, allowNondistributableArtifacts); err != nil { - return nil, err - } - } else { - return nil, fmt.Errorf("unknown media type: %v", desc.MediaType) - } - } - } - return newManifests, nil -} - -func addLayerBlob(l v1.Layer, blobs map[v1.Hash]v1.Layer, allowNondistributableArtifacts bool) error { - // Ignore foreign layers. - mt, err := l.MediaType() - if err != nil { - return err - } - - if mt.IsDistributable() || allowNondistributableArtifacts { - d, err := l.Digest() - if err != nil { - return err - } - - blobs[d] = l - } - - return nil -} - -func addImageBlobs(img v1.Image, blobs map[v1.Hash]v1.Layer, allowNondistributableArtifacts bool) error { - ls, err := img.Layers() - if err != nil { - return err - } - // Collect all layers. - for _, l := range ls { - if err := addLayerBlob(l, blobs, allowNondistributableArtifacts); err != nil { - return err - } - } - - // Collect config blob. - cl, err := partial.ConfigLayer(img) - if err != nil { - return err - } - return addLayerBlob(cl, blobs, allowNondistributableArtifacts) + return g.Wait() } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go index 91b9005c990f..99a2bb2eb229 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go @@ -37,15 +37,23 @@ type options struct { auth authn.Authenticator keychain authn.Keychain transport http.RoundTripper - platform v1.Platform context context.Context jobs int userAgent string allowNondistributableArtifacts bool - updates chan<- v1.Update - pageSize int + progress *progress retryBackoff Backoff retryPredicate retry.Predicate + retryStatusCodes []int + + // Only these options can overwrite Reuse()d options. + platform v1.Platform + pageSize int + filter map[string]string + + // Set by Reuse, we currently store one or the other. + puller *Puller + pusher *Pusher } var defaultPlatform = v1.Platform{ @@ -59,7 +67,7 @@ type Backoff = retry.Backoff var defaultRetryPredicate retry.Predicate = func(err error) bool { // Various failure modes here, as we're often reading from and writing to // the network. - if retry.IsTemporary(err) || errors.Is(err, io.ErrUnexpectedEOF) || errors.Is(err, io.EOF) || errors.Is(err, syscall.EPIPE) || errors.Is(err, syscall.ECONNRESET) { + if retry.IsTemporary(err) || errors.Is(err, io.ErrUnexpectedEOF) || errors.Is(err, io.EOF) || errors.Is(err, syscall.EPIPE) || errors.Is(err, syscall.ECONNRESET) || errors.Is(err, net.ErrClosed) { logs.Warn.Printf("retrying %v", err) return true } @@ -82,12 +90,14 @@ var fastBackoff = Backoff{ Steps: 3, } -var retryableStatusCodes = []int{ +var defaultRetryStatusCodes = []int{ http.StatusRequestTimeout, http.StatusInternalServerError, http.StatusBadGateway, http.StatusServiceUnavailable, http.StatusGatewayTimeout, + 499, // nginx-specific, client closed request + 522, // Cloudflare-specific, connection timeout } const ( @@ -111,17 +121,20 @@ var DefaultTransport http.RoundTripper = &http.Transport{ IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 1 * time.Second, + // We usually are dealing with 2 hosts (at most), split MaxIdleConns between them. + MaxIdleConnsPerHost: 50, } -func makeOptions(target authn.Resource, opts ...Option) (*options, error) { +func makeOptions(opts ...Option) (*options, error) { o := &options{ - transport: DefaultTransport, - platform: defaultPlatform, - context: context.Background(), - jobs: defaultJobs, - pageSize: defaultPageSize, - retryPredicate: defaultRetryPredicate, - retryBackoff: defaultRetryBackoff, + transport: DefaultTransport, + platform: defaultPlatform, + context: context.Background(), + jobs: defaultJobs, + pageSize: defaultPageSize, + retryPredicate: defaultRetryPredicate, + retryBackoff: defaultRetryBackoff, + retryStatusCodes: defaultRetryStatusCodes, } for _, option := range opts { @@ -135,12 +148,6 @@ func makeOptions(target authn.Resource, opts ...Option) (*options, error) { // It is a better experience to explicitly tell a caller their auth is misconfigured // than potentially fail silently when the correct auth is overridden by option misuse. return nil, errors.New("provide an option for either authn.Authenticator or authn.Keychain, not both") - case o.keychain != nil: - auth, err := o.keychain.Resolve(target) - if err != nil { - return nil, err - } - o.auth = auth case o.auth == nil: o.auth = authn.Anonymous } @@ -156,7 +163,7 @@ func makeOptions(target authn.Resource, opts ...Option) (*options, error) { } // Wrap the transport in something that can retry network flakes. - o.transport = transport.NewRetry(o.transport, transport.WithRetryPredicate(defaultRetryPredicate), transport.WithRetryStatusCodes(retryableStatusCodes...)) + o.transport = transport.NewRetry(o.transport, transport.WithRetryPredicate(defaultRetryPredicate), transport.WithRetryStatusCodes(o.retryStatusCodes...)) // Wrap this last to prevent transport.New from double-wrapping. if o.userAgent != "" { @@ -272,7 +279,8 @@ func WithNondistributable(o *options) error { // should provide a buffered channel to avoid potential deadlocks. func WithProgress(updates chan<- v1.Update) Option { return func(o *options) error { - o.updates = updates + o.progress = &progress{updates: updates} + o.progress.lastUpdate = &v1.Update{} return nil } } @@ -303,3 +311,39 @@ func WithRetryPredicate(predicate retry.Predicate) Option { return nil } } + +// WithRetryStatusCodes sets which http response codes will be retried. +func WithRetryStatusCodes(codes ...int) Option { + return func(o *options) error { + o.retryStatusCodes = codes + return nil + } +} + +// WithFilter sets the filter querystring for HTTP operations. +func WithFilter(key string, value string) Option { + return func(o *options) error { + if o.filter == nil { + o.filter = map[string]string{} + } + o.filter[key] = value + return nil + } +} + +// Reuse takes a Puller or Pusher and reuses it for remote interactions +// rather than starting from a clean slate. For example, it will reuse token exchanges +// when possible and avoid sending redundant HEAD requests. +// +// Reuse will take precedence over other options passed to most remote functions because +// most options deal with setting up auth and transports, which Reuse intetionally skips. +func Reuse[I *Puller | *Pusher](i I) Option { + return func(o *options) error { + if puller, ok := any(i).(*Puller); ok { + o.puller = puller + } else if pusher, ok := any(i).(*Pusher); ok { + o.pusher = pusher + } + return nil + } +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/progress.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/progress.go index 1f4396350a7b..fe60c8c353ab 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/progress.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/progress.go @@ -29,6 +29,8 @@ type progress struct { } func (p *progress) total(delta int64) { + p.Lock() + defer p.Unlock() atomic.AddInt64(&p.lastUpdate.Total, delta) } @@ -48,6 +50,11 @@ func (p *progress) err(err error) error { return err } +func (p *progress) Close(err error) { + _ = p.err(err) + close(p.updates) +} + type progressReader struct { rc io.ReadCloser diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/puller.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/puller.go new file mode 100644 index 000000000000..7da8017eeca2 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/puller.go @@ -0,0 +1,222 @@ +// Copyright 2023 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package remote + +import ( + "context" + "sync" + + "github.com/google/go-containerregistry/pkg/name" + v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/partial" + "github.com/google/go-containerregistry/pkg/v1/types" +) + +type Puller struct { + o *options + + // map[resource]*reader + readers sync.Map +} + +func NewPuller(options ...Option) (*Puller, error) { + o, err := makeOptions(options...) + if err != nil { + return nil, err + } + + return newPuller(o), nil +} + +func newPuller(o *options) *Puller { + if o.puller != nil { + return o.puller + } + return &Puller{ + o: o, + } +} + +type reader struct { + // in + target resource + o *options + + // f() + once sync.Once + + // out + f *fetcher + err error +} + +// this will run once per reader instance +func (r *reader) init(ctx context.Context) error { + r.once.Do(func() { + r.f, r.err = makeFetcher(ctx, r.target, r.o) + }) + return r.err +} + +func (p *Puller) fetcher(ctx context.Context, target resource) (*fetcher, error) { + v, _ := p.readers.LoadOrStore(target, &reader{ + target: target, + o: p.o, + }) + rr := v.(*reader) + return rr.f, rr.init(ctx) +} + +// Head is like remote.Head, but avoids re-authenticating when possible. +func (p *Puller) Head(ctx context.Context, ref name.Reference) (*v1.Descriptor, error) { + f, err := p.fetcher(ctx, ref.Context()) + if err != nil { + return nil, err + } + + return f.headManifest(ctx, ref, allManifestMediaTypes) +} + +// Get is like remote.Get, but avoids re-authenticating when possible. +func (p *Puller) Get(ctx context.Context, ref name.Reference) (*Descriptor, error) { + return p.get(ctx, ref, allManifestMediaTypes, p.o.platform) +} + +func (p *Puller) get(ctx context.Context, ref name.Reference, acceptable []types.MediaType, platform v1.Platform) (*Descriptor, error) { + f, err := p.fetcher(ctx, ref.Context()) + if err != nil { + return nil, err + } + return f.get(ctx, ref, acceptable, platform) +} + +// Layer is like remote.Layer, but avoids re-authenticating when possible. +func (p *Puller) Layer(ctx context.Context, ref name.Digest) (v1.Layer, error) { + f, err := p.fetcher(ctx, ref.Context()) + if err != nil { + return nil, err + } + + h, err := v1.NewHash(ref.Identifier()) + if err != nil { + return nil, err + } + l, err := partial.CompressedToLayer(&remoteLayer{ + fetcher: *f, + ctx: ctx, + digest: h, + }) + if err != nil { + return nil, err + } + return &MountableLayer{ + Layer: l, + Reference: ref, + }, nil +} + +// List lists tags in a repo and handles pagination, returning the full list of tags. +func (p *Puller) List(ctx context.Context, repo name.Repository) ([]string, error) { + lister, err := p.Lister(ctx, repo) + if err != nil { + return nil, err + } + + tagList := []string{} + for lister.HasNext() { + tags, err := lister.Next(ctx) + if err != nil { + return nil, err + } + tagList = append(tagList, tags.Tags...) + } + + return tagList, nil +} + +// Lister lists tags in a repo and returns a Lister for paginating through the results. +func (p *Puller) Lister(ctx context.Context, repo name.Repository) (*Lister, error) { + return p.lister(ctx, repo, p.o.pageSize) +} + +func (p *Puller) lister(ctx context.Context, repo name.Repository, pageSize int) (*Lister, error) { + f, err := p.fetcher(ctx, repo) + if err != nil { + return nil, err + } + page, err := f.listPage(ctx, repo, "", pageSize) + if err != nil { + return nil, err + } + return &Lister{ + f: f, + repo: repo, + pageSize: pageSize, + page: page, + err: err, + }, nil +} + +// Catalog lists repos in a registry and handles pagination, returning the full list of repos. +func (p *Puller) Catalog(ctx context.Context, reg name.Registry) ([]string, error) { + return p.catalog(ctx, reg, p.o.pageSize) +} + +func (p *Puller) catalog(ctx context.Context, reg name.Registry, pageSize int) ([]string, error) { + catalogger, err := p.catalogger(ctx, reg, pageSize) + if err != nil { + return nil, err + } + repoList := []string{} + for catalogger.HasNext() { + repos, err := catalogger.Next(ctx) + if err != nil { + return nil, err + } + repoList = append(repoList, repos.Repos...) + } + return repoList, nil +} + +// Catalogger lists repos in a registry and returns a Catalogger for paginating through the results. +func (p *Puller) Catalogger(ctx context.Context, reg name.Registry) (*Catalogger, error) { + return p.catalogger(ctx, reg, p.o.pageSize) +} + +func (p *Puller) catalogger(ctx context.Context, reg name.Registry, pageSize int) (*Catalogger, error) { + f, err := p.fetcher(ctx, reg) + if err != nil { + return nil, err + } + page, err := f.catalogPage(ctx, reg, "", pageSize) + if err != nil { + return nil, err + } + return &Catalogger{ + f: f, + reg: reg, + pageSize: pageSize, + page: page, + err: err, + }, nil +} + +func (p *Puller) referrers(ctx context.Context, d name.Digest, filter map[string]string) (v1.ImageIndex, error) { + f, err := p.fetcher(ctx, d.Context()) + if err != nil { + return nil, err + } + return f.fetchReferrers(ctx, filter, d) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/pusher.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/pusher.go new file mode 100644 index 000000000000..332d8ca0ad50 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/pusher.go @@ -0,0 +1,573 @@ +// Copyright 2023 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package remote + +import ( + "bytes" + "context" + "errors" + "fmt" + "net/http" + "net/url" + "sync" + + "github.com/google/go-containerregistry/pkg/logs" + "github.com/google/go-containerregistry/pkg/name" + v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/partial" + "github.com/google/go-containerregistry/pkg/v1/remote/transport" + "github.com/google/go-containerregistry/pkg/v1/stream" + "github.com/google/go-containerregistry/pkg/v1/types" + "golang.org/x/sync/errgroup" +) + +type manifest interface { + Taggable + partial.Describable +} + +// key is either v1.Hash or v1.Layer (for stream.Layer) +type workers struct { + // map[v1.Hash|v1.Layer]*sync.Once + onces sync.Map + + // map[v1.Hash|v1.Layer]error + errors sync.Map +} + +func nop() error { + return nil +} + +func (w *workers) err(digest v1.Hash) error { + v, ok := w.errors.Load(digest) + if !ok || v == nil { + return nil + } + return v.(error) +} + +func (w *workers) Do(digest v1.Hash, f func() error) error { + // We don't care if it was loaded or not because the sync.Once will do it for us. + once, _ := w.onces.LoadOrStore(digest, &sync.Once{}) + + once.(*sync.Once).Do(func() { + w.errors.Store(digest, f()) + }) + + err := w.err(digest) + if err != nil { + // Allow this to be retried by another caller. + w.onces.Delete(digest) + } + return err +} + +func (w *workers) Stream(layer v1.Layer, f func() error) error { + // We don't care if it was loaded or not because the sync.Once will do it for us. + once, _ := w.onces.LoadOrStore(layer, &sync.Once{}) + + once.(*sync.Once).Do(func() { + w.errors.Store(layer, f()) + }) + + v, ok := w.errors.Load(layer) + if !ok || v == nil { + return nil + } + + return v.(error) +} + +type Pusher struct { + o *options + + // map[name.Repository]*repoWriter + writers sync.Map +} + +func NewPusher(options ...Option) (*Pusher, error) { + o, err := makeOptions(options...) + if err != nil { + return nil, err + } + + return newPusher(o), nil +} + +func newPusher(o *options) *Pusher { + if o.pusher != nil { + return o.pusher + } + return &Pusher{ + o: o, + } +} + +func (p *Pusher) writer(ctx context.Context, repo name.Repository, o *options) (*repoWriter, error) { + v, _ := p.writers.LoadOrStore(repo, &repoWriter{ + repo: repo, + o: o, + }) + rw := v.(*repoWriter) + return rw, rw.init(ctx) +} + +func (p *Pusher) Put(ctx context.Context, ref name.Reference, t Taggable) error { + w, err := p.writer(ctx, ref.Context(), p.o) + if err != nil { + return err + } + + m, err := taggableToManifest(t) + if err != nil { + return err + } + + return w.commitManifest(ctx, ref, m) +} + +func (p *Pusher) Push(ctx context.Context, ref name.Reference, t Taggable) error { + w, err := p.writer(ctx, ref.Context(), p.o) + if err != nil { + return err + } + return w.writeManifest(ctx, ref, t) +} + +func (p *Pusher) Upload(ctx context.Context, repo name.Repository, l v1.Layer) error { + w, err := p.writer(ctx, repo, p.o) + if err != nil { + return err + } + return w.writeLayer(ctx, l) +} + +func (p *Pusher) Delete(ctx context.Context, ref name.Reference) error { + w, err := p.writer(ctx, ref.Context(), p.o) + if err != nil { + return err + } + + u := url.URL{ + Scheme: ref.Context().Registry.Scheme(), + Host: ref.Context().RegistryStr(), + Path: fmt.Sprintf("/v2/%s/manifests/%s", ref.Context().RepositoryStr(), ref.Identifier()), + } + + req, err := http.NewRequest(http.MethodDelete, u.String(), nil) + if err != nil { + return err + } + + resp, err := w.w.client.Do(req.WithContext(ctx)) + if err != nil { + return err + } + defer resp.Body.Close() + + return transport.CheckError(resp, http.StatusOK, http.StatusAccepted) + + // TODO(jason): If the manifest had a `subject`, and if the registry + // doesn't support Referrers, update the index pointed to by the + // subject's fallback tag to remove the descriptor for this manifest. +} + +type repoWriter struct { + repo name.Repository + o *options + once sync.Once + + w *writer + err error + + work *workers +} + +// this will run once per repoWriter instance +func (rw *repoWriter) init(ctx context.Context) error { + rw.once.Do(func() { + rw.work = &workers{} + rw.w, rw.err = makeWriter(ctx, rw.repo, nil, rw.o) + }) + return rw.err +} + +func (rw *repoWriter) writeDeps(ctx context.Context, m manifest) error { + if img, ok := m.(v1.Image); ok { + return rw.writeLayers(ctx, img) + } + + if idx, ok := m.(v1.ImageIndex); ok { + return rw.writeChildren(ctx, idx) + } + + // This has no deps, not an error (e.g. something you want to just PUT). + return nil +} + +type describable struct { + desc v1.Descriptor +} + +func (d describable) Digest() (v1.Hash, error) { + return d.desc.Digest, nil +} + +func (d describable) Size() (int64, error) { + return d.desc.Size, nil +} + +func (d describable) MediaType() (types.MediaType, error) { + return d.desc.MediaType, nil +} + +type tagManifest struct { + Taggable + partial.Describable +} + +func taggableToManifest(t Taggable) (manifest, error) { + if m, ok := t.(manifest); ok { + return m, nil + } + + if d, ok := t.(*Descriptor); ok { + if d.MediaType.IsIndex() { + return d.ImageIndex() + } + + if d.MediaType.IsImage() { + return d.Image() + } + + if d.MediaType.IsSchema1() { + return d.Schema1() + } + + return tagManifest{t, describable{d.toDesc()}}, nil + } + + desc := v1.Descriptor{ + // A reasonable default if Taggable doesn't implement MediaType. + MediaType: types.DockerManifestSchema2, + } + + b, err := t.RawManifest() + if err != nil { + return nil, err + } + + if wmt, ok := t.(withMediaType); ok { + desc.MediaType, err = wmt.MediaType() + if err != nil { + return nil, err + } + } + + desc.Digest, desc.Size, err = v1.SHA256(bytes.NewReader(b)) + if err != nil { + return nil, err + } + + return tagManifest{t, describable{desc}}, nil +} + +func (rw *repoWriter) writeManifest(ctx context.Context, ref name.Reference, t Taggable) error { + m, err := taggableToManifest(t) + if err != nil { + return err + } + + needDeps := true + + digest, err := m.Digest() + if errors.Is(err, stream.ErrNotComputed) { + if err := rw.writeDeps(ctx, m); err != nil { + return err + } + + needDeps = false + + digest, err = m.Digest() + if err != nil { + return err + } + } else if err != nil { + return err + } + + // This may be a lazy child where we have no ref until digest is computed. + if ref == nil { + ref = rw.repo.Digest(digest.String()) + } + + // For tags, we want to do this check outside of our Work.Do closure because + // we don't want to dedupe based on the manifest digest. + _, byTag := ref.(name.Tag) + if byTag { + if exists, err := rw.manifestExists(ctx, ref, t); err != nil { + return err + } else if exists { + return nil + } + } + + // The following work.Do will get deduped by digest, so it won't happen unless + // this tag happens to be the first commitManifest to run for that digest. + needPut := byTag + + if err := rw.work.Do(digest, func() error { + if !byTag { + if exists, err := rw.manifestExists(ctx, ref, t); err != nil { + return err + } else if exists { + return nil + } + } + + if needDeps { + if err := rw.writeDeps(ctx, m); err != nil { + return err + } + } + + needPut = false + return rw.commitManifest(ctx, ref, m) + }); err != nil { + return err + } + + if !needPut { + return nil + } + + // Only runs for tags that got deduped by digest. + return rw.commitManifest(ctx, ref, m) +} + +func (rw *repoWriter) writeChildren(ctx context.Context, idx v1.ImageIndex) error { + children, err := partial.Manifests(idx) + if err != nil { + return err + } + + g, ctx := errgroup.WithContext(ctx) + g.SetLimit(rw.o.jobs) + + for _, child := range children { + child := child + if err := rw.writeChild(ctx, child, g); err != nil { + return err + } + } + + return g.Wait() +} + +func (rw *repoWriter) writeChild(ctx context.Context, child partial.Describable, g *errgroup.Group) error { + switch child := child.(type) { + case v1.ImageIndex: + // For recursive index, we want to do a depth-first launching of goroutines + // to avoid deadlocking. + // + // Note that this is rare, so the impact of this should be really small. + return rw.writeManifest(ctx, nil, child) + case v1.Image: + g.Go(func() error { + return rw.writeManifest(ctx, nil, child) + }) + case v1.Layer: + g.Go(func() error { + return rw.writeLayer(ctx, child) + }) + default: + // This can't happen. + return fmt.Errorf("encountered unknown child: %T", child) + } + return nil +} + +// TODO: Consider caching some representation of the tags/digests in the destination +// repository as a hint to avoid this optimistic check in cases where we will most +// likely have to do a PUT anyway, e.g. if we are overwriting a tag we just wrote. +func (rw *repoWriter) manifestExists(ctx context.Context, ref name.Reference, t Taggable) (bool, error) { + f := &fetcher{ + target: ref.Context(), + client: rw.w.client, + } + + m, err := taggableToManifest(t) + if err != nil { + return false, err + } + + digest, err := m.Digest() + if err != nil { + // Possibly due to streaming layers. + return false, nil + } + got, err := f.headManifest(ctx, ref, allManifestMediaTypes) + if err != nil { + var terr *transport.Error + if errors.As(err, &terr) { + if terr.StatusCode == http.StatusNotFound { + return false, nil + } + + // We treat a 403 here as non-fatal because this existence check is an optimization and + // some registries will return a 403 instead of a 404 in certain situations. + // E.g. https://jfrog.atlassian.net/browse/RTFACT-13797 + if terr.StatusCode == http.StatusForbidden { + logs.Debug.Printf("manifestExists unexpected 403: %v", err) + return false, nil + } + } + + return false, err + } + + if digest != got.Digest { + // Mark that we saw this digest in the registry so we don't have to check it again. + rw.work.Do(got.Digest, nop) + + return false, nil + } + + if tag, ok := ref.(name.Tag); ok { + logs.Progress.Printf("existing manifest: %s@%s", tag.Identifier(), got.Digest) + } else { + logs.Progress.Print("existing manifest: ", got.Digest) + } + + return true, nil +} + +func (rw *repoWriter) commitManifest(ctx context.Context, ref name.Reference, m manifest) error { + if rw.o.progress != nil { + size, err := m.Size() + if err != nil { + return err + } + rw.o.progress.total(size) + } + + return rw.w.commitManifest(ctx, m, ref) +} + +func (rw *repoWriter) writeLayers(pctx context.Context, img v1.Image) error { + ls, err := img.Layers() + if err != nil { + return err + } + + g, ctx := errgroup.WithContext(pctx) + g.SetLimit(rw.o.jobs) + + for _, l := range ls { + l := l + + g.Go(func() error { + return rw.writeLayer(ctx, l) + }) + } + + mt, err := img.MediaType() + if err != nil { + return err + } + + if mt.IsSchema1() { + return g.Wait() + } + + cl, err := partial.ConfigLayer(img) + if errors.Is(err, stream.ErrNotComputed) { + if err := g.Wait(); err != nil { + return err + } + + cl, err := partial.ConfigLayer(img) + if err != nil { + return err + } + + return rw.writeLayer(pctx, cl) + } else if err != nil { + return err + } + + g.Go(func() error { + return rw.writeLayer(ctx, cl) + }) + + return g.Wait() +} + +func (rw *repoWriter) writeLayer(ctx context.Context, l v1.Layer) error { + // Skip any non-distributable things. + mt, err := l.MediaType() + if err != nil { + return err + } + if !mt.IsDistributable() && !rw.o.allowNondistributableArtifacts { + return nil + } + + digest, err := l.Digest() + if err != nil { + if errors.Is(err, stream.ErrNotComputed) { + return rw.lazyWriteLayer(ctx, l) + } + return err + } + + return rw.work.Do(digest, func() error { + if rw.o.progress != nil { + size, err := l.Size() + if err != nil { + return err + } + rw.o.progress.total(size) + } + return rw.w.uploadOne(ctx, l) + }) +} + +func (rw *repoWriter) lazyWriteLayer(ctx context.Context, l v1.Layer) error { + return rw.work.Stream(l, func() error { + if err := rw.w.uploadOne(ctx, l); err != nil { + return err + } + + // Mark this upload completed. + digest, err := l.Digest() + if err != nil { + return err + } + + rw.work.Do(digest, nop) + + if rw.o.progress != nil { + size, err := l.Size() + if err != nil { + return err + } + rw.o.progress.total(size) + } + + return nil + }) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/referrers.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/referrers.go new file mode 100644 index 000000000000..4bc6f70a8533 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/referrers.go @@ -0,0 +1,117 @@ +// Copyright 2023 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package remote + +import ( + "bytes" + "context" + "errors" + "io" + "net/http" + "strings" + + "github.com/google/go-containerregistry/pkg/name" + v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/empty" + "github.com/google/go-containerregistry/pkg/v1/mutate" + "github.com/google/go-containerregistry/pkg/v1/remote/transport" + "github.com/google/go-containerregistry/pkg/v1/types" +) + +// Referrers returns a list of descriptors that refer to the given manifest digest. +// +// The subject manifest doesn't have to exist in the registry for there to be descriptors that refer to it. +func Referrers(d name.Digest, options ...Option) (v1.ImageIndex, error) { + o, err := makeOptions(options...) + if err != nil { + return nil, err + } + return newPuller(o).referrers(o.context, d, o.filter) +} + +// https://github.com/opencontainers/distribution-spec/blob/main/spec.md#referrers-tag-schema +func fallbackTag(d name.Digest) name.Tag { + return d.Context().Tag(strings.Replace(d.DigestStr(), ":", "-", 1)) +} + +func (f *fetcher) fetchReferrers(ctx context.Context, filter map[string]string, d name.Digest) (v1.ImageIndex, error) { + // Check the Referrers API endpoint first. + u := f.url("referrers", d.DigestStr()) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, u.String(), nil) + if err != nil { + return nil, err + } + req.Header.Set("Accept", string(types.OCIImageIndex)) + + resp, err := f.client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if err := transport.CheckError(resp, http.StatusOK, http.StatusNotFound, http.StatusBadRequest, http.StatusNotAcceptable); err != nil { + return nil, err + } + + var b []byte + if resp.StatusCode == http.StatusOK && resp.Header.Get("Content-Type") == string(types.OCIImageIndex) { + b, err = io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + } else { + // The registry doesn't support the Referrers API endpoint, so we'll use the fallback tag scheme. + b, _, err = f.fetchManifest(ctx, fallbackTag(d), []types.MediaType{types.OCIImageIndex}) + var terr *transport.Error + if errors.As(err, &terr) && terr.StatusCode == http.StatusNotFound { + // Not found just means there are no attachments yet. Start with an empty manifest. + return empty.Index, nil + } else if err != nil { + return nil, err + } + } + + h, sz, err := v1.SHA256(bytes.NewReader(b)) + if err != nil { + return nil, err + } + idx := &remoteIndex{ + fetcher: *f, + ctx: ctx, + manifest: b, + mediaType: types.OCIImageIndex, + descriptor: &v1.Descriptor{ + Digest: h, + MediaType: types.OCIImageIndex, + Size: sz, + }, + } + return filterReferrersResponse(filter, idx), nil +} + +// If filter applied, filter out by artifactType. +// See https://github.com/opencontainers/distribution-spec/blob/main/spec.md#listing-referrers +func filterReferrersResponse(filter map[string]string, in v1.ImageIndex) v1.ImageIndex { + if filter == nil { + return in + } + v, ok := filter["artifactType"] + if !ok { + return in + } + return mutate.RemoveManifests(in, func(desc v1.Descriptor) bool { + return desc.ArtifactType != v + }) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/schema1.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/schema1.go new file mode 100644 index 000000000000..4bc1c4c45735 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/schema1.go @@ -0,0 +1,118 @@ +// Copyright 2023 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package remote + +import ( + "bytes" + "context" + "encoding/json" + + "github.com/google/go-containerregistry/pkg/name" + v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/partial" + "github.com/google/go-containerregistry/pkg/v1/types" +) + +type schema1 struct { + ref name.Reference + ctx context.Context + fetcher fetcher + manifest []byte + mediaType types.MediaType + descriptor *v1.Descriptor +} + +func (s *schema1) Layers() ([]v1.Layer, error) { + m := schema1Manifest{} + if err := json.NewDecoder(bytes.NewReader(s.manifest)).Decode(&m); err != nil { + return nil, err + } + + layers := []v1.Layer{} + for i := len(m.FSLayers) - 1; i >= 0; i-- { + fsl := m.FSLayers[i] + + h, err := v1.NewHash(fsl.BlobSum) + if err != nil { + return nil, err + } + l, err := s.LayerByDigest(h) + if err != nil { + return nil, err + } + layers = append(layers, l) + } + + return layers, nil +} + +func (s *schema1) MediaType() (types.MediaType, error) { + return s.mediaType, nil +} + +func (s *schema1) Size() (int64, error) { + return s.descriptor.Size, nil +} + +func (s *schema1) ConfigName() (v1.Hash, error) { + return partial.ConfigName(s) +} + +func (s *schema1) ConfigFile() (*v1.ConfigFile, error) { + return nil, newErrSchema1(s.mediaType) +} + +func (s *schema1) RawConfigFile() ([]byte, error) { + return []byte("{}"), nil +} + +func (s *schema1) Digest() (v1.Hash, error) { + return s.descriptor.Digest, nil +} + +func (s *schema1) Manifest() (*v1.Manifest, error) { + return nil, newErrSchema1(s.mediaType) +} + +func (s *schema1) RawManifest() ([]byte, error) { + return s.manifest, nil +} + +func (s *schema1) LayerByDigest(h v1.Hash) (v1.Layer, error) { + l, err := partial.CompressedToLayer(&remoteLayer{ + fetcher: s.fetcher, + ctx: s.ctx, + digest: h, + }) + if err != nil { + return nil, err + } + return &MountableLayer{ + Layer: l, + Reference: s.ref.Context().Digest(h.String()), + }, nil +} + +func (s *schema1) LayerByDiffID(v1.Hash) (v1.Layer, error) { + return nil, newErrSchema1(s.mediaType) +} + +type fslayer struct { + BlobSum string `json:"blobSum"` +} + +type schema1Manifest struct { + FSLayers []fslayer `json:"fsLayers"` +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go index fdb362b76205..f2452469d2b7 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go @@ -33,7 +33,7 @@ var _ http.RoundTripper = (*basicTransport)(nil) // RoundTrip implements http.RoundTripper func (bt *basicTransport) RoundTrip(in *http.Request) (*http.Response, error) { if bt.auth != authn.Anonymous { - auth, err := bt.auth.Authorization() + auth, err := authn.Authorization(in.Context(), bt.auth) if err != nil { return nil, err } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go index ea07ff6abbea..ea652d4ae818 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go @@ -24,15 +24,83 @@ import ( "net/http" "net/url" "strings" + "sync" authchallenge "github.com/docker/distribution/registry/client/auth/challenge" + "github.com/google/go-containerregistry/internal/redact" "github.com/google/go-containerregistry/pkg/authn" "github.com/google/go-containerregistry/pkg/logs" "github.com/google/go-containerregistry/pkg/name" ) +type Token struct { + Token string `json:"token"` + AccessToken string `json:"access_token,omitempty"` + RefreshToken string `json:"refresh_token"` + ExpiresIn int `json:"expires_in"` +} + +// Exchange requests a registry Token with the given scopes. +func Exchange(ctx context.Context, reg name.Registry, auth authn.Authenticator, t http.RoundTripper, scopes []string, pr *Challenge) (*Token, error) { + if strings.ToLower(pr.Scheme) != "bearer" { + // TODO: Pretend token for basic? + return nil, fmt.Errorf("challenge scheme %q is not bearer", pr.Scheme) + } + bt, err := fromChallenge(reg, auth, t, pr, scopes...) + if err != nil { + return nil, err + } + authcfg, err := authn.Authorization(ctx, auth) + if err != nil { + return nil, err + } + tok, err := bt.Refresh(ctx, authcfg) + if err != nil { + return nil, err + } + return tok, nil +} + +// FromToken returns a transport given a Challenge + Token. +func FromToken(reg name.Registry, auth authn.Authenticator, t http.RoundTripper, pr *Challenge, tok *Token) (http.RoundTripper, error) { + if strings.ToLower(pr.Scheme) != "bearer" { + return &Wrapper{&basicTransport{inner: t, auth: auth, target: reg.RegistryStr()}}, nil + } + bt, err := fromChallenge(reg, auth, t, pr) + if err != nil { + return nil, err + } + if tok.Token != "" { + bt.bearer.RegistryToken = tok.Token + } + return &Wrapper{bt}, nil +} + +func fromChallenge(reg name.Registry, auth authn.Authenticator, t http.RoundTripper, pr *Challenge, scopes ...string) (*bearerTransport, error) { + // We require the realm, which tells us where to send our Basic auth to turn it into Bearer auth. + realm, ok := pr.Parameters["realm"] + if !ok { + return nil, fmt.Errorf("malformed www-authenticate, missing realm: %v", pr.Parameters) + } + service := pr.Parameters["service"] + scheme := "https" + if pr.Insecure { + scheme = "http" + } + return &bearerTransport{ + inner: t, + basic: auth, + realm: realm, + registry: reg, + service: service, + scopes: scopes, + scheme: scheme, + }, nil +} + type bearerTransport struct { + mx sync.RWMutex // Wrapped by bearerTransport. inner http.RoundTripper // Basic credentials that we exchange for bearer tokens. @@ -73,8 +141,11 @@ func (bt *bearerTransport) RoundTrip(in *http.Request) (*http.Response, error) { // we are redirected, only set it when the authorization header matches // the registry with which we are interacting. // In case of redirect http.Client can use an empty Host, check URL too. - if matchesHost(bt.registry, in, bt.scheme) { - hdr := fmt.Sprintf("Bearer %s", bt.bearer.RegistryToken) + if matchesHost(bt.registry.RegistryStr(), in, bt.scheme) { + bt.mx.RLock() + localToken := bt.bearer.RegistryToken + bt.mx.RUnlock() + hdr := fmt.Sprintf("Bearer %s", localToken) in.Header.Set("Authorization", hdr) } return bt.inner.RoundTrip(in) @@ -91,11 +162,12 @@ func (bt *bearerTransport) RoundTrip(in *http.Request) (*http.Response, error) { res.Body.Close() newScopes := []string{} + bt.mx.Lock() + got := stringSet(bt.scopes) for _, wac := range challenges { // TODO(jonjohnsonjr): Should we also update "realm" or "service"? if want, ok := wac.Parameters["scope"]; ok { // Add any scopes that we don't already request. - got := stringSet(bt.scopes) if _, ok := got[want]; !ok { newScopes = append(newScopes, want) } @@ -107,6 +179,7 @@ func (bt *bearerTransport) RoundTrip(in *http.Request) (*http.Response, error) { // otherwise the registry might just ignore it :/ newScopes = append(newScopes, bt.scopes...) bt.scopes = newScopes + bt.mx.Unlock() // TODO(jonjohnsonjr): Teach transport.Error about "error" and "error_description" from challenge. @@ -125,17 +198,50 @@ func (bt *bearerTransport) RoundTrip(in *http.Request) (*http.Response, error) { // The basic token exchange is attempted first, falling back to the oauth flow. // If the IdentityToken is set, this indicates that we should start with the oauth flow. func (bt *bearerTransport) refresh(ctx context.Context) error { - auth, err := bt.basic.Authorization() + auth, err := authn.Authorization(ctx, bt.basic) if err != nil { return err } if auth.RegistryToken != "" { + bt.mx.Lock() bt.bearer.RegistryToken = auth.RegistryToken + bt.mx.Unlock() return nil } - var content []byte + response, err := bt.Refresh(ctx, auth) + if err != nil { + return err + } + + // Some registries set access_token instead of token. See #54. + if response.AccessToken != "" { + response.Token = response.AccessToken + } + + // Find a token to turn into a Bearer authenticator + if response.Token != "" { + bt.mx.Lock() + bt.bearer.RegistryToken = response.Token + bt.mx.Unlock() + } + + // If we obtained a refresh token from the oauth flow, use that for refresh() now. + if response.RefreshToken != "" { + bt.basic = authn.FromConfig(authn.AuthConfig{ + IdentityToken: response.RefreshToken, + }) + } + + return nil +} + +func (bt *bearerTransport) Refresh(ctx context.Context, auth *authn.AuthConfig) (*Token, error) { + var ( + content []byte + err error + ) if auth.IdentityToken != "" { // If the secret being stored is an identity token, // the Username should be set to , which indicates @@ -152,48 +258,25 @@ func (bt *bearerTransport) refresh(ctx context.Context) error { content, err = bt.refreshBasic(ctx) } if err != nil { - return err - } - - // Some registries don't have "token" in the response. See #54. - type tokenResponse struct { - Token string `json:"token"` - AccessToken string `json:"access_token"` - RefreshToken string `json:"refresh_token"` - // TODO: handle expiry? + return nil, err } - var response tokenResponse + var response Token if err := json.Unmarshal(content, &response); err != nil { - return err - } - - // Some registries set access_token instead of token. - if response.AccessToken != "" { - response.Token = response.AccessToken - } - - // Find a token to turn into a Bearer authenticator - if response.Token != "" { - bt.bearer.RegistryToken = response.Token - } else { - return fmt.Errorf("no token in bearer response:\n%s", content) + return nil, err } - // If we obtained a refresh token from the oauth flow, use that for refresh() now. - if response.RefreshToken != "" { - bt.basic = authn.FromConfig(authn.AuthConfig{ - IdentityToken: response.RefreshToken, - }) + if response.Token == "" && response.AccessToken == "" { + return &response, fmt.Errorf("no token in bearer response:\n%s", content) } - return nil + return &response, nil } -func matchesHost(reg name.Registry, in *http.Request, scheme string) bool { +func matchesHost(host string, in *http.Request, scheme string) bool { canonicalHeaderHost := canonicalAddress(in.Host, scheme) canonicalURLHost := canonicalAddress(in.URL.Host, scheme) - canonicalRegistryHost := canonicalAddress(reg.RegistryStr(), scheme) + canonicalRegistryHost := canonicalAddress(host, scheme) return canonicalHeaderHost == canonicalRegistryHost || canonicalURLHost == canonicalRegistryHost } @@ -224,7 +307,7 @@ func canonicalAddress(host, scheme string) (address string) { // https://docs.docker.com/registry/spec/auth/oauth/ func (bt *bearerTransport) refreshOauth(ctx context.Context) ([]byte, error) { - auth, err := bt.basic.Authorization() + auth, err := authn.Authorization(ctx, bt.basic) if err != nil { return nil, err } @@ -235,7 +318,9 @@ func (bt *bearerTransport) refreshOauth(ctx context.Context) ([]byte, error) { } v := url.Values{} + bt.mx.RLock() v.Set("scope", strings.Join(bt.scopes, " ")) + bt.mx.RUnlock() if bt.service != "" { v.Set("service", bt.service) } @@ -291,7 +376,9 @@ func (bt *bearerTransport) refreshBasic(ctx context.Context) ([]byte, error) { client := http.Client{Transport: b} v := u.Query() + bt.mx.RLock() v["scope"] = bt.scopes + bt.mx.RUnlock() v.Set("service", bt.service) u.RawQuery = v.Encode() diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/error.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/error.go index c0e43373005a..482a4adee7c6 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/error.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/error.go @@ -34,6 +34,9 @@ type Error struct { Request *http.Request // The raw body if we couldn't understand it. rawBody string + + // Bit of a hack to make it easier to force a retry. + temporary bool } // Check that Error implements error @@ -72,6 +75,10 @@ func (e *Error) responseErr() string { // Temporary returns whether the request that preceded the error is temporary. func (e *Error) Temporary() bool { + if e.temporary { + return true + } + if len(e.Errors) == 0 { _, ok := temporaryStatusCodes[e.StatusCode] return ok @@ -153,21 +160,37 @@ func CheckError(resp *http.Response, codes ...int) error { return nil } } + b, err := io.ReadAll(resp.Body) if err != nil { return err } + return makeError(resp, b) +} + +func makeError(resp *http.Response, body []byte) *Error { // https://github.com/docker/distribution/blob/master/docs/spec/api.md#errors structuredError := &Error{} // This can fail if e.g. the response body is not valid JSON. That's fine, // we'll construct an appropriate error string from the body and status code. - _ = json.Unmarshal(b, structuredError) + _ = json.Unmarshal(body, structuredError) - structuredError.rawBody = string(b) + structuredError.rawBody = string(body) structuredError.StatusCode = resp.StatusCode structuredError.Request = resp.Request return structuredError } + +func retryError(resp *http.Response) error { + b, err := io.ReadAll(resp.Body) + if err != nil { + return err + } + + rerr := makeError(resp, b) + rerr.temporary = true + return rerr +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go index d852ef845572..799c7ea08bcd 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go @@ -28,33 +28,22 @@ import ( "github.com/google/go-containerregistry/pkg/name" ) -type challenge string - -const ( - anonymous challenge = "anonymous" - basic challenge = "basic" - bearer challenge = "bearer" -) - // 300ms is the default fallback period for go's DNS dialer but we could make this configurable. var fallbackDelay = 300 * time.Millisecond -type pingResp struct { - challenge challenge +type Challenge struct { + Scheme string // Following the challenge there are often key/value pairs // e.g. Bearer service="gcr.io",realm="https://auth.gcr.io/v36/tokenz" - parameters map[string]string + Parameters map[string]string - // The registry's scheme to use. Communicates whether we fell back to http. - scheme string + // Whether we had to use http to complete the Ping. + Insecure bool } -func (c challenge) Canonical() challenge { - return challenge(strings.ToLower(string(c))) -} - -func ping(ctx context.Context, reg name.Registry, t http.RoundTripper) (*pingResp, error) { +// Ping does a GET /v2/ against the registry and returns the response. +func Ping(ctx context.Context, reg name.Registry, t http.RoundTripper) (*Challenge, error) { // This first attempts to use "https" for every request, falling back to http // if the registry matches our localhost heuristic or if it is intentionally // set to insecure via name.NewInsecureRegistry. @@ -68,9 +57,9 @@ func ping(ctx context.Context, reg name.Registry, t http.RoundTripper) (*pingRes return pingParallel(ctx, reg, t, schemes) } -func pingSingle(ctx context.Context, reg name.Registry, t http.RoundTripper, scheme string) (*pingResp, error) { +func pingSingle(ctx context.Context, reg name.Registry, t http.RoundTripper, scheme string) (*Challenge, error) { client := http.Client{Transport: t} - url := fmt.Sprintf("%s://%s/v2/", scheme, reg.Name()) + url := fmt.Sprintf("%s://%s/v2/", scheme, reg.RegistryStr()) req, err := http.NewRequest(http.MethodGet, url, nil) if err != nil { return nil, err @@ -86,27 +75,28 @@ func pingSingle(ctx context.Context, reg name.Registry, t http.RoundTripper, sch resp.Body.Close() }() + insecure := scheme == "http" + switch resp.StatusCode { case http.StatusOK: // If we get a 200, then no authentication is needed. - return &pingResp{ - challenge: anonymous, - scheme: scheme, + return &Challenge{ + Insecure: insecure, }, nil case http.StatusUnauthorized: if challenges := authchallenge.ResponseChallenges(resp); len(challenges) != 0 { // If we hit more than one, let's try to find one that we know how to handle. wac := pickFromMultipleChallenges(challenges) - return &pingResp{ - challenge: challenge(wac.Scheme).Canonical(), - parameters: wac.Parameters, - scheme: scheme, + return &Challenge{ + Scheme: wac.Scheme, + Parameters: wac.Parameters, + Insecure: insecure, }, nil } // Otherwise, just return the challenge without parameters. - return &pingResp{ - challenge: challenge(resp.Header.Get("WWW-Authenticate")).Canonical(), - scheme: scheme, + return &Challenge{ + Scheme: resp.Header.Get("WWW-Authenticate"), + Insecure: insecure, }, nil default: return nil, CheckError(resp, http.StatusOK, http.StatusUnauthorized) @@ -114,12 +104,12 @@ func pingSingle(ctx context.Context, reg name.Registry, t http.RoundTripper, sch } // Based on the golang happy eyeballs dialParallel impl in net/dial.go. -func pingParallel(ctx context.Context, reg name.Registry, t http.RoundTripper, schemes []string) (*pingResp, error) { +func pingParallel(ctx context.Context, reg name.Registry, t http.RoundTripper, schemes []string) (*Challenge, error) { returned := make(chan struct{}) defer close(returned) type pingResult struct { - *pingResp + *Challenge error primary bool done bool @@ -130,7 +120,7 @@ func pingParallel(ctx context.Context, reg name.Registry, t http.RoundTripper, s startRacer := func(ctx context.Context, scheme string) { pr, err := pingSingle(ctx, reg, t, scheme) select { - case results <- pingResult{pingResp: pr, error: err, primary: scheme == "https", done: true}: + case results <- pingResult{Challenge: pr, error: err, primary: scheme == "https", done: true}: case <-returned: if pr != nil { logs.Debug.Printf("%s lost race", scheme) @@ -156,7 +146,7 @@ func pingParallel(ctx context.Context, reg name.Registry, t http.RoundTripper, s case res := <-results: if res.error == nil { - return res.pingResp, nil + return res.Challenge, nil } if res.primary { primary = res @@ -164,7 +154,7 @@ func pingParallel(ctx context.Context, reg name.Registry, t http.RoundTripper, s fallback = res } if primary.done && fallback.done { - return nil, multierrs([]error{primary.error, fallback.error}) + return nil, multierrs{primary.error, fallback.error} } if res.primary && fallbackTimer.Stop() { // Primary failed and we haven't started the fallback, diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/retry.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/retry.go index e5621e305374..093f55d02fff 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/retry.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/retry.go @@ -100,7 +100,7 @@ func (t *retryTransport) RoundTrip(in *http.Request) (out *http.Response, err er if out != nil { for _, code := range t.codes { if out.StatusCode == code { - return CheckError(out) + return retryError(out) } } } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/schemer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/schemer.go index d70b6a850cd6..05844db136b0 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/schemer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/schemer.go @@ -37,7 +37,7 @@ func (st *schemeTransport) RoundTrip(in *http.Request) (*http.Response, error) { // based on which scheme was successful. That is only valid for the // registry server and not e.g. a separate token server or blob storage, // so we should only override the scheme if the host is the registry. - if matchesHost(st.registry, in, st.scheme) { + if matchesHost(st.registry.String(), in, st.scheme) { in.URL.Scheme = st.scheme } return st.inner.RoundTrip(in) diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go index 01fe1fa820ed..bd539b44fb42 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go @@ -16,8 +16,8 @@ package transport import ( "context" - "fmt" "net/http" + "strings" "github.com/google/go-containerregistry/pkg/authn" "github.com/google/go-containerregistry/pkg/name" @@ -59,7 +59,7 @@ func NewWithContext(ctx context.Context, reg name.Registry, auth authn.Authentic // First we ping the registry to determine the parameters of the authentication handshake // (if one is even necessary). - pr, err := ping(ctx, reg, t) + pr, err := Ping(ctx, reg, t) if err != nil { return nil, err } @@ -69,39 +69,32 @@ func NewWithContext(ctx context.Context, reg name.Registry, auth authn.Authentic t = NewUserAgent(t, "") } + scheme := "https" + if pr.Insecure { + scheme = "http" + } + // Wrap t in a transport that selects the appropriate scheme based on the ping response. t = &schemeTransport{ - scheme: pr.scheme, + scheme: scheme, registry: reg, inner: t, } - switch pr.challenge.Canonical() { - case anonymous, basic: + if strings.ToLower(pr.Scheme) != "bearer" { return &Wrapper{&basicTransport{inner: t, auth: auth, target: reg.RegistryStr()}}, nil - case bearer: - // We require the realm, which tells us where to send our Basic auth to turn it into Bearer auth. - realm, ok := pr.parameters["realm"] - if !ok { - return nil, fmt.Errorf("malformed www-authenticate, missing realm: %v", pr.parameters) - } - service := pr.parameters["service"] - bt := &bearerTransport{ - inner: t, - basic: auth, - realm: realm, - registry: reg, - service: service, - scopes: scopes, - scheme: pr.scheme, - } - if err := bt.refresh(ctx); err != nil { - return nil, err - } - return &Wrapper{bt}, nil - default: - return nil, fmt.Errorf("unrecognized challenge: %s", pr.challenge) } + + bt, err := fromChallenge(reg, auth, t, pr) + if err != nil { + return nil, err + } + bt.scopes = scopes + + if err := bt.refresh(ctx); err != nil { + return nil, err + } + return &Wrapper{bt}, nil } // Wrapper results in *not* wrapping supplied transport with additional logic such as retries, useragent and debug logging diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go index 99e9fe837bee..1167cb793acf 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go @@ -17,23 +17,25 @@ package remote import ( "bytes" "context" + "encoding/json" "errors" "fmt" "io" "net/http" "net/url" + "sort" "strings" + "sync" "github.com/google/go-containerregistry/internal/redact" "github.com/google/go-containerregistry/internal/retry" + "github.com/google/go-containerregistry/pkg/authn" "github.com/google/go-containerregistry/pkg/logs" "github.com/google/go-containerregistry/pkg/name" v1 "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/partial" "github.com/google/go-containerregistry/pkg/v1/remote/transport" "github.com/google/go-containerregistry/pkg/v1/stream" "github.com/google/go-containerregistry/pkg/v1/types" - "golang.org/x/sync/errgroup" ) // Taggable is an interface that enables a manifest PUT (e.g. for tagging). @@ -43,146 +45,94 @@ type Taggable interface { // Write pushes the provided img to the specified image reference. func Write(ref name.Reference, img v1.Image, options ...Option) (rerr error) { - o, err := makeOptions(ref.Context(), options...) - if err != nil { - return err - } + return Push(ref, img, options...) +} + +// writer writes the elements of an image to a remote image reference. +type writer struct { + repo name.Repository + auth authn.Authenticator + transport http.RoundTripper + + client *http.Client - var p *progress - if o.updates != nil { - p = &progress{updates: o.updates} - p.lastUpdate = &v1.Update{} - p.lastUpdate.Total, err = countImage(img, o.allowNondistributableArtifacts) + progress *progress + backoff Backoff + predicate retry.Predicate + + scopeLock sync.Mutex + // Keep track of scopes that we have already requested. + scopeSet map[string]struct{} + scopes []string +} + +func makeWriter(ctx context.Context, repo name.Repository, ls []v1.Layer, o *options) (*writer, error) { + auth := o.auth + if o.keychain != nil { + kauth, err := authn.Resolve(ctx, o.keychain, repo) if err != nil { - return err + return nil, err } - defer close(o.updates) - defer func() { _ = p.err(rerr) }() + auth = kauth } - return writeImage(o.context, ref, img, o, p) -} - -func writeImage(ctx context.Context, ref name.Reference, img v1.Image, o *options, progress *progress) error { - ls, err := img.Layers() + scopes := scopesForUploadingImage(repo, ls) + tr, err := transport.NewWithContext(ctx, repo.Registry, auth, o.transport, scopes) if err != nil { - return err + return nil, err } - scopes := scopesForUploadingImage(ref.Context(), ls) - tr, err := transport.NewWithContext(o.context, ref.Context().Registry, o.auth, o.transport, scopes) - if err != nil { - return err + + scopeSet := map[string]struct{}{} + for _, scope := range scopes { + scopeSet[scope] = struct{}{} } - w := writer{ - repo: ref.Context(), + return &writer{ + repo: repo, client: &http.Client{Transport: tr}, - progress: progress, + auth: auth, + transport: o.transport, + progress: o.progress, backoff: o.retryBackoff, predicate: o.retryPredicate, - } + scopes: scopes, + scopeSet: scopeSet, + }, nil +} - // Upload individual blobs and collect any errors. - blobChan := make(chan v1.Layer, 2*o.jobs) - g, gctx := errgroup.WithContext(ctx) - for i := 0; i < o.jobs; i++ { - // Start N workers consuming blobs to upload. - g.Go(func() error { - for b := range blobChan { - if err := w.uploadOne(gctx, b); err != nil { - return err - } - } - return nil - }) +// url returns a url.Url for the specified path in the context of this remote image reference. +func (w *writer) url(path string) url.URL { + return url.URL{ + Scheme: w.repo.Registry.Scheme(), + Host: w.repo.RegistryStr(), + Path: path, } +} - // Upload individual layers in goroutines and collect any errors. - // If we can dedupe by the layer digest, try to do so. If we can't determine - // the digest for whatever reason, we can't dedupe and might re-upload. - g.Go(func() error { - defer close(blobChan) - uploaded := map[v1.Hash]bool{} - for _, l := range ls { - l := l +func (w *writer) maybeUpdateScopes(ctx context.Context, ml *MountableLayer) error { + if ml.Reference.Context().String() == w.repo.String() { + return nil + } + if ml.Reference.Context().Registry.String() != w.repo.Registry.String() { + return nil + } - // Handle foreign layers. - mt, err := l.MediaType() - if err != nil { - return err - } - if !mt.IsDistributable() && !o.allowNondistributableArtifacts { - continue - } + scope := ml.Reference.Scope(transport.PullScope) - // Streaming layers calculate their digests while uploading them. Assume - // an error here indicates we need to upload the layer. - h, err := l.Digest() - if err == nil { - // If we can determine the layer's digest ahead of - // time, use it to dedupe uploads. - if uploaded[h] { - continue // Already uploading. - } - uploaded[h] = true - } - select { - case blobChan <- l: - case <-gctx.Done(): - return gctx.Err() - } - } - return nil - }) + w.scopeLock.Lock() + defer w.scopeLock.Unlock() - if l, err := partial.ConfigLayer(img); err != nil { - // We can't read the ConfigLayer, possibly because of streaming layers, - // since the layer DiffIDs haven't been calculated yet. Attempt to wait - // for the other layers to be uploaded, then try the config again. - if err := g.Wait(); err != nil { - return err - } + if _, ok := w.scopeSet[scope]; !ok { + w.scopeSet[scope] = struct{}{} + w.scopes = append(w.scopes, scope) - // Now that all the layers are uploaded, try to upload the config file blob. - l, err := partial.ConfigLayer(img) + logs.Debug.Printf("Refreshing token to add scope %q", scope) + wt, err := transport.NewWithContext(ctx, w.repo.Registry, w.auth, w.transport, w.scopes) if err != nil { return err } - if err := w.uploadOne(ctx, l); err != nil { - return err - } - } else { - // We *can* read the ConfigLayer, so upload it concurrently with the layers. - g.Go(func() error { - return w.uploadOne(gctx, l) - }) - - // Wait for the layers + config. - if err := g.Wait(); err != nil { - return err - } + w.client = &http.Client{Transport: wt} } - // With all of the constituent elements uploaded, upload the manifest - // to commit the image. - return w.commitManifest(ctx, img, ref) -} - -// writer writes the elements of an image to a remote image reference. -type writer struct { - repo name.Repository - client *http.Client - - progress *progress - backoff Backoff - predicate retry.Predicate -} - -// url returns a url.Url for the specified path in the context of this remote image reference. -func (w *writer) url(path string) url.URL { - return url.URL{ - Scheme: w.repo.Registry.Scheme(), - Host: w.repo.RegistryStr(), - Path: path, - } + return nil } // nextLocation extracts the fully-qualified URL to which we should send the next request in an upload sequence. @@ -226,30 +176,6 @@ func (w *writer) checkExistingBlob(ctx context.Context, h v1.Hash) (bool, error) return resp.StatusCode == http.StatusOK, nil } -// checkExistingManifest checks if a manifest exists already in the repository -// by making a HEAD request to the manifest API. -func (w *writer) checkExistingManifest(ctx context.Context, h v1.Hash, mt types.MediaType) (bool, error) { - u := w.url(fmt.Sprintf("/v2/%s/manifests/%s", w.repo.RepositoryStr(), h.String())) - - req, err := http.NewRequest(http.MethodHead, u.String(), nil) - if err != nil { - return false, err - } - req.Header.Set("Accept", string(mt)) - - resp, err := w.client.Do(req.WithContext(ctx)) - if err != nil { - return false, err - } - defer resp.Body.Close() - - if err := transport.CheckError(resp, http.StatusOK, http.StatusNotFound); err != nil { - return false, err - } - - return resp.StatusCode == http.StatusOK, nil -} - // initiateUpload initiates the blob upload, which starts with a POST that can // optionally include the hash of the layer and a list of repositories from // which that layer might be read. On failure, an error is returned. @@ -277,12 +203,17 @@ func (w *writer) initiateUpload(ctx context.Context, from, mount, origin string) req.Header.Set("Content-Type", "application/json") resp, err := w.client.Do(req.WithContext(ctx)) if err != nil { + if from != "" { + // https://github.com/google/go-containerregistry/issues/1679 + logs.Warn.Printf("retrying without mount: %v", err) + return w.initiateUpload(ctx, "", "", "") + } return "", false, err } defer resp.Body.Close() if err := transport.CheckError(resp, http.StatusCreated, http.StatusAccepted); err != nil { - if origin != "" && origin != w.repo.RegistryStr() { + if from != "" { // https://github.com/google/go-containerregistry/issues/1404 logs.Warn.Printf("retrying without mount: %v", err) return w.initiateUpload(ctx, "", "", "") @@ -342,6 +273,11 @@ func (w *writer) streamBlob(ctx context.Context, layer v1.Layer, streamLocation if _, ok := layer.(*stream.Layer); !ok { // We can't retry streaming layers. req.GetBody = getBody + + // If we know the size, set it. + if size, err := layer.Size(); err == nil { + req.ContentLength = size + } } req.Header.Set("Content-Type", "application/octet-stream") @@ -419,8 +355,19 @@ func (w *writer) uploadOne(ctx context.Context, l v1.Layer) error { mount = h.String() } if ml, ok := l.(*MountableLayer); ok { + if err := w.maybeUpdateScopes(ctx, ml); err != nil { + return err + } + from = ml.Reference.Context().RepositoryStr() origin = ml.Reference.Context().RegistryStr() + + // This keeps breaking with DockerHub. + // https://github.com/google/go-containerregistry/issues/1741 + if w.repo.RegistryStr() == name.DefaultRegistry && origin != w.repo.RegistryStr() { + from = "" + origin = "" + } } location, mounted, err := w.initiateUpload(ctx, from, mount, origin) @@ -472,69 +419,6 @@ func (w *writer) uploadOne(ctx context.Context, l v1.Layer) error { return retry.Retry(tryUpload, w.predicate, w.backoff) } -type withLayer interface { - Layer(v1.Hash) (v1.Layer, error) -} - -func (w *writer) writeIndex(ctx context.Context, ref name.Reference, ii v1.ImageIndex, options ...Option) error { - index, err := ii.IndexManifest() - if err != nil { - return err - } - - o, err := makeOptions(ref.Context(), options...) - if err != nil { - return err - } - - // TODO(#803): Pipe through remote.WithJobs and upload these in parallel. - for _, desc := range index.Manifests { - ref := ref.Context().Digest(desc.Digest.String()) - exists, err := w.checkExistingManifest(ctx, desc.Digest, desc.MediaType) - if err != nil { - return err - } - if exists { - logs.Progress.Print("existing manifest: ", desc.Digest) - continue - } - - switch desc.MediaType { - case types.OCIImageIndex, types.DockerManifestList: - ii, err := ii.ImageIndex(desc.Digest) - if err != nil { - return err - } - if err := w.writeIndex(ctx, ref, ii, options...); err != nil { - return err - } - case types.OCIManifestSchema1, types.DockerManifestSchema2: - img, err := ii.Image(desc.Digest) - if err != nil { - return err - } - if err := writeImage(ctx, ref, img, o, w.progress); err != nil { - return err - } - default: - // Workaround for #819. - if wl, ok := ii.(withLayer); ok { - layer, err := wl.Layer(desc.Digest) - if err != nil { - return err - } - if err := w.uploadOne(ctx, layer); err != nil { - return err - } - } - } - } - - // With all of the constituent elements uploaded, upload the manifest - // to commit the image. - return w.commitManifest(ctx, ii, ref) -} - type withMediaType interface { MediaType() (types.MediaType, error) } @@ -577,8 +461,110 @@ func unpackTaggable(t Taggable) ([]byte, *v1.Descriptor, error) { }, nil } +// commitSubjectReferrers is responsible for updating the fallback tag manifest to track descriptors referring to a subject for registries that don't yet support the Referrers API. +// TODO: use conditional requests to avoid race conditions +func (w *writer) commitSubjectReferrers(ctx context.Context, sub name.Digest, add v1.Descriptor) error { + // Check if the registry supports Referrers API. + // TODO: This should be done once per registry, not once per subject. + u := w.url(fmt.Sprintf("/v2/%s/referrers/%s", w.repo.RepositoryStr(), sub.DigestStr())) + req, err := http.NewRequest(http.MethodGet, u.String(), nil) + if err != nil { + return err + } + req.Header.Set("Accept", string(types.OCIImageIndex)) + resp, err := w.client.Do(req.WithContext(ctx)) + if err != nil { + return err + } + defer resp.Body.Close() + + if err := transport.CheckError(resp, http.StatusOK, http.StatusNotFound, http.StatusBadRequest); err != nil { + return err + } + if resp.StatusCode == http.StatusOK { + // The registry supports Referrers API. The registry is responsible for updating the referrers list. + return nil + } + + // The registry doesn't support Referrers API, we need to update the manifest tagged with the fallback tag. + // Make the request to GET the current manifest. + t := fallbackTag(sub) + u = w.url(fmt.Sprintf("/v2/%s/manifests/%s", w.repo.RepositoryStr(), t.Identifier())) + req, err = http.NewRequest(http.MethodGet, u.String(), nil) + if err != nil { + return err + } + req.Header.Set("Accept", string(types.OCIImageIndex)) + resp, err = w.client.Do(req.WithContext(ctx)) + if err != nil { + return err + } + defer resp.Body.Close() + + var im v1.IndexManifest + if err := transport.CheckError(resp, http.StatusOK, http.StatusNotFound); err != nil { + return err + } else if resp.StatusCode == http.StatusNotFound { + // Not found just means there are no attachments. Start with an empty index. + im = v1.IndexManifest{ + SchemaVersion: 2, + MediaType: types.OCIImageIndex, + Manifests: []v1.Descriptor{add}, + } + } else { + if err := json.NewDecoder(resp.Body).Decode(&im); err != nil { + return err + } + if im.SchemaVersion != 2 { + return fmt.Errorf("fallback tag manifest is not a schema version 2: %d", im.SchemaVersion) + } + if im.MediaType != types.OCIImageIndex { + return fmt.Errorf("fallback tag manifest is not an OCI image index: %s", im.MediaType) + } + for _, desc := range im.Manifests { + if desc.Digest == add.Digest { + // The digest is already attached, nothing to do. + logs.Progress.Printf("fallback tag %s already had referrer", t.Identifier()) + return nil + } + } + // Append the new descriptor to the index. + im.Manifests = append(im.Manifests, add) + } + + // Sort the manifests for reproducibility. + sort.Slice(im.Manifests, func(i, j int) bool { + return im.Manifests[i].Digest.String() < im.Manifests[j].Digest.String() + }) + logs.Progress.Printf("updating fallback tag %s with new referrer", t.Identifier()) + return w.commitManifest(ctx, fallbackTaggable{im}, t) +} + +type fallbackTaggable struct { + im v1.IndexManifest +} + +func (f fallbackTaggable) RawManifest() ([]byte, error) { return json.Marshal(f.im) } +func (f fallbackTaggable) MediaType() (types.MediaType, error) { return types.OCIImageIndex, nil } + // commitManifest does a PUT of the image's manifest. func (w *writer) commitManifest(ctx context.Context, t Taggable, ref name.Reference) error { + // If the manifest refers to a subject, we need to check whether we need to update the fallback tag manifest. + raw, err := t.RawManifest() + if err != nil { + return err + } + var mf struct { + MediaType types.MediaType `json:"mediaType"` + Subject *v1.Descriptor `json:"subject,omitempty"` + Config struct { + MediaType types.MediaType `json:"mediaType"` + } `json:"config"` + } + if err := json.Unmarshal(raw, &mf); err != nil { + return err + } + tryUpload := func() error { ctx := retry.Never(ctx) raw, desc, err := unpackTaggable(t) @@ -605,6 +591,26 @@ func (w *writer) commitManifest(ctx context.Context, t Taggable, ref name.Refere return err } + // If the manifest referred to a subject, we may need to update the fallback tag manifest. + // TODO: If this fails, we'll retry the whole upload. We should retry just this part. + if mf.Subject != nil { + h, size, err := v1.SHA256(bytes.NewReader(raw)) + if err != nil { + return err + } + desc := v1.Descriptor{ + ArtifactType: string(mf.Config.MediaType), + MediaType: mf.MediaType, + Digest: h, + Size: size, + } + if err := w.commitSubjectReferrers(ctx, + ref.Context().Digest(mf.Subject.Digest.String()), + desc); err != nil { + return err + } + } + // The image was successfully pushed! logs.Progress.Printf("%v: digest: %v size: %d", ref, desc.Digest, desc.Size) w.incrProgress(int64(len(raw))) @@ -643,183 +649,19 @@ func scopesForUploadingImage(repo name.Repository, layers []v1.Layer) []string { // WriteIndex will attempt to push all of the referenced manifests before // attempting to push the ImageIndex, to retain referential integrity. func WriteIndex(ref name.Reference, ii v1.ImageIndex, options ...Option) (rerr error) { - o, err := makeOptions(ref.Context(), options...) - if err != nil { - return err - } - - scopes := []string{ref.Scope(transport.PushScope)} - tr, err := transport.NewWithContext(o.context, ref.Context().Registry, o.auth, o.transport, scopes) - if err != nil { - return err - } - w := writer{ - repo: ref.Context(), - client: &http.Client{Transport: tr}, - backoff: o.retryBackoff, - predicate: o.retryPredicate, - } - - if o.updates != nil { - w.progress = &progress{updates: o.updates} - w.progress.lastUpdate = &v1.Update{} - - defer close(o.updates) - defer func() { w.progress.err(rerr) }() - - w.progress.lastUpdate.Total, err = countIndex(ii, o.allowNondistributableArtifacts) - if err != nil { - return err - } - } - - return w.writeIndex(o.context, ref, ii, options...) -} - -// countImage counts the total size of all layers + config blob + manifest for -// an image. It de-dupes duplicate layers. -func countImage(img v1.Image, allowNondistributableArtifacts bool) (int64, error) { - var total int64 - ls, err := img.Layers() - if err != nil { - return 0, err - } - seen := map[v1.Hash]bool{} - for _, l := range ls { - // Handle foreign layers. - mt, err := l.MediaType() - if err != nil { - return 0, err - } - if !mt.IsDistributable() && !allowNondistributableArtifacts { - continue - } - - // TODO: support streaming layers which update the total count as they write. - if _, ok := l.(*stream.Layer); ok { - return 0, errors.New("cannot use stream.Layer and WithProgress") - } - - // Dedupe layers. - d, err := l.Digest() - if err != nil { - return 0, err - } - if seen[d] { - continue - } - seen[d] = true - - size, err := l.Size() - if err != nil { - return 0, err - } - total += size - } - b, err := img.RawConfigFile() - if err != nil { - return 0, err - } - total += int64(len(b)) - size, err := img.Size() - if err != nil { - return 0, err - } - total += size - return total, nil -} - -// countIndex counts the total size of all images + sub-indexes for an index. -// It does not attempt to de-dupe duplicate images, etc. -func countIndex(idx v1.ImageIndex, allowNondistributableArtifacts bool) (int64, error) { - var total int64 - mf, err := idx.IndexManifest() - if err != nil { - return 0, err - } - - for _, desc := range mf.Manifests { - switch desc.MediaType { - case types.OCIImageIndex, types.DockerManifestList: - sidx, err := idx.ImageIndex(desc.Digest) - if err != nil { - return 0, err - } - size, err := countIndex(sidx, allowNondistributableArtifacts) - if err != nil { - return 0, err - } - total += size - case types.OCIManifestSchema1, types.DockerManifestSchema2: - simg, err := idx.Image(desc.Digest) - if err != nil { - return 0, err - } - size, err := countImage(simg, allowNondistributableArtifacts) - if err != nil { - return 0, err - } - total += size - default: - // Workaround for #819. - if wl, ok := idx.(withLayer); ok { - layer, err := wl.Layer(desc.Digest) - if err != nil { - return 0, err - } - size, err := layer.Size() - if err != nil { - return 0, err - } - total += size - } - } - } - - size, err := idx.Size() - if err != nil { - return 0, err - } - total += size - return total, nil + return Push(ref, ii, options...) } // WriteLayer uploads the provided Layer to the specified repo. func WriteLayer(repo name.Repository, layer v1.Layer, options ...Option) (rerr error) { - o, err := makeOptions(repo, options...) + o, err := makeOptions(options...) if err != nil { return err } - scopes := scopesForUploadingImage(repo, []v1.Layer{layer}) - tr, err := transport.NewWithContext(o.context, repo.Registry, o.auth, o.transport, scopes) - if err != nil { - return err + if o.progress != nil { + defer func() { o.progress.Close(rerr) }() } - w := writer{ - repo: repo, - client: &http.Client{Transport: tr}, - backoff: o.retryBackoff, - predicate: o.retryPredicate, - } - - if o.updates != nil { - w.progress = &progress{updates: o.updates} - w.progress.lastUpdate = &v1.Update{} - - defer close(o.updates) - defer func() { w.progress.err(rerr) }() - - // TODO: support streaming layers which update the total count as they write. - if _, ok := layer.(*stream.Layer); ok { - return errors.New("cannot use stream.Layer and WithProgress") - } - size, err := layer.Size() - if err != nil { - return err - } - w.progress.total(size) - } - return w.uploadOne(o.context, layer) + return newPusher(o).Upload(o.context, repo, layer) } // Tag adds a tag to the given Taggable via PUT /v2/.../manifests/ @@ -849,28 +691,21 @@ func Tag(tag name.Tag, t Taggable, options ...Option) error { // should ensure that all blobs or manifests that are referenced by t exist // in the target registry. func Put(ref name.Reference, t Taggable, options ...Option) error { - o, err := makeOptions(ref.Context(), options...) + o, err := makeOptions(options...) if err != nil { return err } - scopes := []string{ref.Scope(transport.PushScope)} + return newPusher(o).Put(o.context, ref, t) +} - // TODO: This *always* does a token exchange. For some registries, - // that's pretty slow. Some ideas; - // * Tag could take a list of tags. - // * Allow callers to pass in a transport.Transport, typecheck - // it to allow them to reuse the transport across multiple calls. - // * WithTag option to do multiple manifest PUTs in commitManifest. - tr, err := transport.NewWithContext(o.context, ref.Context().Registry, o.auth, o.transport, scopes) +// Push uploads the given Taggable to the specified reference. +func Push(ref name.Reference, t Taggable, options ...Option) (rerr error) { + o, err := makeOptions(options...) if err != nil { return err } - w := writer{ - repo: ref.Context(), - client: &http.Client{Transport: tr}, - backoff: o.retryBackoff, - predicate: o.retryPredicate, + if o.progress != nil { + defer func() { o.progress.Close(rerr) }() } - - return w.commitManifest(o.context, t, ref) + return newPusher(o).Push(o.context, ref, t) } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go index 9dd3e5ffbed0..2b0354479563 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go @@ -18,7 +18,7 @@ package stream import ( "bufio" "compress/gzip" - "crypto/sha256" + "crypto" "encoding/hex" "errors" "hash" @@ -130,6 +130,8 @@ func (l *Layer) Uncompressed() (io.ReadCloser, error) { // Compressed implements v1.Layer. func (l *Layer) Compressed() (io.ReadCloser, error) { + l.mu.Lock() + defer l.mu.Unlock() if l.consumed { return nil, ErrConsumed } @@ -166,8 +168,8 @@ type compressedReader struct { func newCompressedReader(l *Layer) (*compressedReader, error) { // Collect digests of compressed and uncompressed stream and size of // compressed stream. - h := sha256.New() - zh := sha256.New() + h := crypto.SHA256.New() + zh := crypto.SHA256.New() count := &countWriter{} // gzip.Writer writes to the output stream via pipe, a hasher to diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go index 1f977e16a949..aba609deac52 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go @@ -223,9 +223,9 @@ func extractFileFromTar(opener Opener, filePath string) (io.ReadCloser, error) { if err != nil { return nil, err } - close := true + needClose := true defer func() { - if close { + if needClose { f.Close() } }() @@ -244,7 +244,7 @@ func extractFileFromTar(opener Opener, filePath string) (io.ReadCloser, error) { currentDir := filepath.Dir(filePath) return extractFileFromTar(opener, path.Join(currentDir, path.Clean(hdr.Linkname))) } - close = false + needClose = false return tarFile{ Reader: tf, Closer: f, @@ -299,18 +299,29 @@ func (i *uncompressedImage) LayerByDiffID(h v1.Hash) (partial.UncompressedLayer, // v1.Layer doesn't force consumers to care about whether the layer is compressed // we should be fine returning the DockerLayer media type mt := types.DockerLayer - if bd, ok := i.imgDescriptor.LayerSources[h]; ok { - // Overwrite the mediaType for foreign layers. - return &foreignUncompressedLayer{ - uncompressedLayerFromTarball: uncompressedLayerFromTarball{ - diffID: diffID, - mediaType: bd.MediaType, - opener: i.opener, - filePath: i.imgDescriptor.Layers[idx], - }, - desc: bd, - }, nil + bd, ok := i.imgDescriptor.LayerSources[h] + if ok { + // This is janky, but we don't want to implement Descriptor for + // uncompressed layers because it breaks a bunch of assumptions in partial. + // See https://github.com/google/go-containerregistry/issues/1870 + docker25workaround := bd.MediaType == types.DockerUncompressedLayer || bd.MediaType == types.OCIUncompressedLayer + + if !docker25workaround { + // Overwrite the mediaType for foreign layers. + return &foreignUncompressedLayer{ + uncompressedLayerFromTarball: uncompressedLayerFromTarball{ + diffID: diffID, + mediaType: bd.MediaType, + opener: i.opener, + filePath: i.imgDescriptor.Layers[idx], + }, + desc: bd, + }, nil + } + + // Intentional fall through. } + return &uncompressedLayerFromTarball{ diffID: diffID, mediaType: mt, diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go index a344e9206943..8a26309618cf 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go @@ -160,6 +160,8 @@ func WithCompressedCaching(l *layer) { // WithEstargzOptions is a functional option that allow the caller to pass // through estargz.Options to the underlying compression layer. This is // only meaningful when estargz is enabled. +// +// Deprecated: WithEstargz is deprecated, and will be removed in a future release. func WithEstargzOptions(opts ...estargz.Option) LayerOption { return func(l *layer) { l.estgzopts = opts @@ -167,6 +169,8 @@ func WithEstargzOptions(opts ...estargz.Option) LayerOption { } // WithEstargz is a functional option that explicitly enables estargz support. +// +// Deprecated: WithEstargz is deprecated, and will be removed in a future release. func WithEstargz(l *layer) { oguncompressed := l.uncompressedopener estargz := func() (io.ReadCloser, error) { @@ -238,6 +242,7 @@ func LayerFromOpener(opener Opener, opts ...LayerOption) (v1.Layer, error) { } if estgz := os.Getenv("GGCR_EXPERIMENT_ESTARGZ"); estgz == "1" { + logs.Warn.Println("GGCR_EXPERIMENT_ESTARGZ is deprecated, and will be removed in a future release.") opts = append([]LayerOption{WithEstargz}, opts...) } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go index 7d7a0b3b6824..e607df164a1e 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go @@ -69,7 +69,7 @@ func Write(ref name.Reference, img v1.Image, w io.Writer, opts ...WriteOption) e return MultiRefWrite(map[name.Reference]v1.Image{ref: img}, w, opts...) } -// MultiWrite writes the contents of each image to the provided reader, in the compressed format. +// MultiWrite writes the contents of each image to the provided writer, in the compressed format. // The contents are written in the following format: // One manifest.json file at the top level containing information about several images. // One file for each layer, named after the layer's SHA. @@ -82,7 +82,7 @@ func MultiWrite(tagToImage map[name.Tag]v1.Image, w io.Writer, opts ...WriteOpti return MultiRefWrite(refToImage, w, opts...) } -// MultiRefWrite writes the contents of each image to the provided reader, in the compressed format. +// MultiRefWrite writes the contents of each image to the provided writer, in the compressed format. // The contents are written in the following format: // One manifest.json file at the top level containing information about several images. // One file for each layer, named after the layer's SHA. @@ -98,12 +98,13 @@ func MultiRefWrite(refToImage map[name.Reference]v1.Image, w io.Writer, opts ... } } - size, mBytes, err := getSizeAndManifest(refToImage) + imageToTags := dedupRefToImage(refToImage) + size, mBytes, err := getSizeAndManifest(imageToTags) if err != nil { return sendUpdateReturn(o, err) } - return writeImagesToTar(refToImage, mBytes, size, w, o) + return writeImagesToTar(imageToTags, mBytes, size, w, o) } // sendUpdateReturn return the passed in error message, also sending on update channel, if it exists @@ -125,11 +126,10 @@ func sendProgressWriterReturn(pw *progressWriter, err error) error { } // writeImagesToTar writes the images to the tarball -func writeImagesToTar(refToImage map[name.Reference]v1.Image, m []byte, size int64, w io.Writer, o *writeOptions) (err error) { +func writeImagesToTar(imageToTags map[v1.Image][]string, m []byte, size int64, w io.Writer, o *writeOptions) (err error) { if w == nil { return sendUpdateReturn(o, errors.New("must pass valid writer")) } - imageToTags := dedupRefToImage(refToImage) tw := w var pw *progressWriter @@ -219,9 +219,7 @@ func writeImagesToTar(refToImage map[name.Reference]v1.Image, m []byte, size int } // calculateManifest calculates the manifest and optionally the size of the tar file -func calculateManifest(refToImage map[name.Reference]v1.Image) (m Manifest, err error) { - imageToTags := dedupRefToImage(refToImage) - +func calculateManifest(imageToTags map[v1.Image][]string) (m Manifest, err error) { if len(imageToTags) == 0 { return nil, errors.New("set of images is empty") } @@ -290,12 +288,13 @@ func calculateManifest(refToImage map[name.Reference]v1.Image) (m Manifest, err // CalculateSize calculates the expected complete size of the output tar file func CalculateSize(refToImage map[name.Reference]v1.Image) (size int64, err error) { - size, _, err = getSizeAndManifest(refToImage) + imageToTags := dedupRefToImage(refToImage) + size, _, err = getSizeAndManifest(imageToTags) return size, err } -func getSizeAndManifest(refToImage map[name.Reference]v1.Image) (int64, []byte, error) { - m, err := calculateManifest(refToImage) +func getSizeAndManifest(imageToTags map[v1.Image][]string) (int64, []byte, error) { + m, err := calculateManifest(imageToTags) if err != nil { return 0, nil, fmt.Errorf("unable to calculate manifest: %w", err) } @@ -304,7 +303,7 @@ func getSizeAndManifest(refToImage map[name.Reference]v1.Image) (int64, []byte, return 0, nil, fmt.Errorf("could not marshall manifest to bytes: %w", err) } - size, err := calculateTarballSize(refToImage, mBytes) + size, err := calculateTarballSize(imageToTags, mBytes) if err != nil { return 0, nil, fmt.Errorf("error calculating tarball size: %w", err) } @@ -312,9 +311,7 @@ func getSizeAndManifest(refToImage map[name.Reference]v1.Image) (int64, []byte, } // calculateTarballSize calculates the size of the tar file -func calculateTarballSize(refToImage map[name.Reference]v1.Image, mBytes []byte) (size int64, err error) { - imageToTags := dedupRefToImage(refToImage) - +func calculateTarballSize(imageToTags map[v1.Image][]string, mBytes []byte) (size int64, err error) { seenLayerDigests := make(map[string]struct{}) for img, name := range imageToTags { manifest, err := img.Manifest() @@ -386,7 +383,8 @@ func writeTarEntry(tf *tar.Writer, path string, r io.Reader, size int64) error { // ComputeManifest get the manifest.json that will be written to the tarball // for multiple references func ComputeManifest(refToImage map[name.Reference]v1.Image) (Manifest, error) { - return calculateManifest(refToImage) + imageToTags := dedupRefToImage(refToImage) + return calculateManifest(imageToTags) } // WriteOption a function option to pass to Write() diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go b/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go index 363e989fe2bd..c86657d7b8b5 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go @@ -71,3 +71,28 @@ func (m MediaType) IsIndex() bool { } return false } + +// IsConfig returns true if the mediaType represents a config, as opposed to something else, like an image. +func (m MediaType) IsConfig() bool { + switch m { + case OCIConfigJSON, DockerConfigJSON: + return true + } + return false +} + +func (m MediaType) IsSchema1() bool { + switch m { + case DockerManifestSchema1, DockerManifestSchema1Signed: + return true + } + return false +} + +func (m MediaType) IsLayer() bool { + switch m { + case DockerLayer, DockerUncompressedLayer, OCILayer, OCILayerZStd, OCIUncompressedLayer, DockerForeignLayer, OCIRestrictedLayer, OCIUncompressedRestrictedLayer: + return true + } + return false +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go b/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go index 0cb1586f1e3d..a47b7475ed59 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go @@ -99,6 +99,11 @@ func (in *ConfigFile) DeepCopyInto(out *ConfigFile) { } in.RootFS.DeepCopyInto(&out.RootFS) in.Config.DeepCopyInto(&out.Config) + if in.OSFeatures != nil { + in, out := &in.OSFeatures, &out.OSFeatures + *out = make([]string, len(*in)) + copy(*out, *in) + } return } @@ -222,6 +227,11 @@ func (in *IndexManifest) DeepCopyInto(out *IndexManifest) { (*out)[key] = val } } + if in.Subject != nil { + in, out := &in.Subject, &out.Subject + *out = new(Descriptor) + (*in).DeepCopyInto(*out) + } return } @@ -253,6 +263,11 @@ func (in *Manifest) DeepCopyInto(out *Manifest) { (*out)[key] = val } } + if in.Subject != nil { + in, out := &in.Subject, &out.Subject + *out = new(Descriptor) + (*in).DeepCopyInto(*out) + } return } diff --git a/vendor/github.com/google/s2a-go/internal/proto/common_go_proto/common.pb.go b/vendor/github.com/google/s2a-go/internal/proto/common_go_proto/common.pb.go index 16278a1d995e..fcd049de922e 100644 --- a/vendor/github.com/google/s2a-go/internal/proto/common_go_proto/common.pb.go +++ b/vendor/github.com/google/s2a-go/internal/proto/common_go_proto/common.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.34.2 // protoc v3.21.12 // source: internal/proto/common/common.proto @@ -145,8 +145,8 @@ type Identity struct { // *Identity_SpiffeId // *Identity_Hostname // *Identity_Uid - // *Identity_MdbUsername - // *Identity_GaiaId + // *Identity_Username + // *Identity_GcpId IdentityOneof isIdentity_IdentityOneof `protobuf_oneof:"identity_oneof"` // Additional identity-specific attributes. Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` @@ -212,16 +212,16 @@ func (x *Identity) GetUid() string { return "" } -func (x *Identity) GetMdbUsername() string { - if x, ok := x.GetIdentityOneof().(*Identity_MdbUsername); ok { - return x.MdbUsername +func (x *Identity) GetUsername() string { + if x, ok := x.GetIdentityOneof().(*Identity_Username); ok { + return x.Username } return "" } -func (x *Identity) GetGaiaId() string { - if x, ok := x.GetIdentityOneof().(*Identity_GaiaId); ok { - return x.GaiaId +func (x *Identity) GetGcpId() string { + if x, ok := x.GetIdentityOneof().(*Identity_GcpId); ok { + return x.GcpId } return "" } @@ -252,14 +252,14 @@ type Identity_Uid struct { Uid string `protobuf:"bytes,4,opt,name=uid,proto3,oneof"` } -type Identity_MdbUsername struct { - // The MDB username of a connection endpoint. - MdbUsername string `protobuf:"bytes,5,opt,name=mdb_username,json=mdbUsername,proto3,oneof"` +type Identity_Username struct { + // The username of a connection endpoint. + Username string `protobuf:"bytes,5,opt,name=username,proto3,oneof"` } -type Identity_GaiaId struct { - // The Gaia ID of a connection endpoint. - GaiaId string `protobuf:"bytes,6,opt,name=gaia_id,json=gaiaId,proto3,oneof"` +type Identity_GcpId struct { + // The GCP ID of a connection endpoint. + GcpId string `protobuf:"bytes,6,opt,name=gcp_id,json=gcpId,proto3,oneof"` } func (*Identity_SpiffeId) isIdentity_IdentityOneof() {} @@ -268,9 +268,9 @@ func (*Identity_Hostname) isIdentity_IdentityOneof() {} func (*Identity_Uid) isIdentity_IdentityOneof() {} -func (*Identity_MdbUsername) isIdentity_IdentityOneof() {} +func (*Identity_Username) isIdentity_IdentityOneof() {} -func (*Identity_GaiaId) isIdentity_IdentityOneof() {} +func (*Identity_GcpId) isIdentity_IdentityOneof() {} var File_internal_proto_common_common_proto protoreflect.FileDescriptor @@ -278,38 +278,37 @@ var file_internal_proto_common_common_proto_rawDesc = []byte{ 0x0a, 0x22, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xb1, 0x02, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x09, + 0xa8, 0x02, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x09, 0x73, 0x70, 0x69, 0x66, 0x66, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x70, 0x69, 0x66, 0x66, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x23, 0x0a, - 0x0c, 0x6d, 0x64, 0x62, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x64, 0x62, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x67, 0x61, 0x69, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x67, 0x61, 0x69, 0x61, 0x49, 0x64, 0x12, 0x43, 0x0a, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x2a, 0x5b, 0x0a, 0x0b, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, 0x75, 0x69, - 0x74, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, - 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x45, - 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, - 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, - 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x02, - 0x2a, 0x24, 0x0a, 0x0a, 0x54, 0x4c, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0a, - 0x0a, 0x06, 0x54, 0x4c, 0x53, 0x31, 0x5f, 0x32, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x4c, - 0x53, 0x31, 0x5f, 0x33, 0x10, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x32, 0x61, 0x2f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x06, 0x67, + 0x63, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x67, + 0x63, 0x70, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x2a, 0x5b, 0x0a, 0x0b, 0x43, 0x69, + 0x70, 0x68, 0x65, 0x72, 0x73, 0x75, 0x69, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x45, 0x53, + 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, + 0x00, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, + 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, + 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x5f, 0x53, + 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x02, 0x2a, 0x24, 0x0a, 0x0a, 0x54, 0x4c, 0x53, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x4c, 0x53, 0x31, 0x5f, 0x32, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x4c, 0x53, 0x31, 0x5f, 0x33, 0x10, 0x01, 0x42, 0x36, 0x5a, + 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x73, 0x32, 0x61, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x67, 0x6f, 0x5f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -326,7 +325,7 @@ func file_internal_proto_common_common_proto_rawDescGZIP() []byte { var file_internal_proto_common_common_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_internal_proto_common_common_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_internal_proto_common_common_proto_goTypes = []interface{}{ +var file_internal_proto_common_common_proto_goTypes = []any{ (Ciphersuite)(0), // 0: s2a.proto.Ciphersuite (TLSVersion)(0), // 1: s2a.proto.TLSVersion (*Identity)(nil), // 2: s2a.proto.Identity @@ -347,7 +346,7 @@ func file_internal_proto_common_common_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_internal_proto_common_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_common_common_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Identity); i { case 0: return &v.state @@ -360,12 +359,12 @@ func file_internal_proto_common_common_proto_init() { } } } - file_internal_proto_common_common_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_internal_proto_common_common_proto_msgTypes[0].OneofWrappers = []any{ (*Identity_SpiffeId)(nil), (*Identity_Hostname)(nil), (*Identity_Uid)(nil), - (*Identity_MdbUsername)(nil), - (*Identity_GaiaId)(nil), + (*Identity_Username)(nil), + (*Identity_GcpId)(nil), } type x struct{} out := protoimpl.TypeBuilder{ diff --git a/vendor/github.com/google/s2a-go/internal/proto/s2a_context_go_proto/s2a_context.pb.go b/vendor/github.com/google/s2a-go/internal/proto/s2a_context_go_proto/s2a_context.pb.go index f4f763ae1020..2af3ee3dc1c8 100644 --- a/vendor/github.com/google/s2a-go/internal/proto/s2a_context_go_proto/s2a_context.pb.go +++ b/vendor/github.com/google/s2a-go/internal/proto/s2a_context_go_proto/s2a_context.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.34.2 // protoc v3.21.12 // source: internal/proto/s2a_context/s2a_context.proto @@ -209,7 +209,7 @@ func file_internal_proto_s2a_context_s2a_context_proto_rawDescGZIP() []byte { } var file_internal_proto_s2a_context_s2a_context_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_internal_proto_s2a_context_s2a_context_proto_goTypes = []interface{}{ +var file_internal_proto_s2a_context_s2a_context_proto_goTypes = []any{ (*S2AContext)(nil), // 0: s2a.proto.S2AContext (common_go_proto.TLSVersion)(0), // 1: s2a.proto.TLSVersion (common_go_proto.Ciphersuite)(0), // 2: s2a.proto.Ciphersuite @@ -233,7 +233,7 @@ func file_internal_proto_s2a_context_s2a_context_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_internal_proto_s2a_context_s2a_context_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_context_s2a_context_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*S2AContext); i { case 0: return &v.state diff --git a/vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a.pb.go b/vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a.pb.go index 0a86ebee5925..8919232fd881 100644 --- a/vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a.pb.go +++ b/vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.34.2 // protoc v3.21.12 // source: internal/proto/s2a/s2a.proto @@ -1171,7 +1171,7 @@ func file_internal_proto_s2a_s2a_proto_rawDescGZIP() []byte { } var file_internal_proto_s2a_s2a_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_internal_proto_s2a_s2a_proto_goTypes = []interface{}{ +var file_internal_proto_s2a_s2a_proto_goTypes = []any{ (*AuthenticationMechanism)(nil), // 0: s2a.proto.AuthenticationMechanism (*ClientSessionStartReq)(nil), // 1: s2a.proto.ClientSessionStartReq (*ServerSessionStartReq)(nil), // 2: s2a.proto.ServerSessionStartReq @@ -1226,7 +1226,7 @@ func file_internal_proto_s2a_s2a_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_internal_proto_s2a_s2a_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_s2a_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*AuthenticationMechanism); i { case 0: return &v.state @@ -1238,7 +1238,7 @@ func file_internal_proto_s2a_s2a_proto_init() { return nil } } - file_internal_proto_s2a_s2a_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_s2a_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*ClientSessionStartReq); i { case 0: return &v.state @@ -1250,7 +1250,7 @@ func file_internal_proto_s2a_s2a_proto_init() { return nil } } - file_internal_proto_s2a_s2a_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_s2a_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*ServerSessionStartReq); i { case 0: return &v.state @@ -1262,7 +1262,7 @@ func file_internal_proto_s2a_s2a_proto_init() { return nil } } - file_internal_proto_s2a_s2a_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_s2a_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*SessionNextReq); i { case 0: return &v.state @@ -1274,7 +1274,7 @@ func file_internal_proto_s2a_s2a_proto_init() { return nil } } - file_internal_proto_s2a_s2a_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_s2a_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*ResumptionTicketReq); i { case 0: return &v.state @@ -1286,7 +1286,7 @@ func file_internal_proto_s2a_s2a_proto_init() { return nil } } - file_internal_proto_s2a_s2a_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_s2a_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*SessionReq); i { case 0: return &v.state @@ -1298,7 +1298,7 @@ func file_internal_proto_s2a_s2a_proto_init() { return nil } } - file_internal_proto_s2a_s2a_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_s2a_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*SessionState); i { case 0: return &v.state @@ -1310,7 +1310,7 @@ func file_internal_proto_s2a_s2a_proto_init() { return nil } } - file_internal_proto_s2a_s2a_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_s2a_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*SessionResult); i { case 0: return &v.state @@ -1322,7 +1322,7 @@ func file_internal_proto_s2a_s2a_proto_init() { return nil } } - file_internal_proto_s2a_s2a_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_s2a_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*SessionStatus); i { case 0: return &v.state @@ -1334,7 +1334,7 @@ func file_internal_proto_s2a_s2a_proto_init() { return nil } } - file_internal_proto_s2a_s2a_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_s2a_s2a_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*SessionResp); i { case 0: return &v.state @@ -1347,10 +1347,10 @@ func file_internal_proto_s2a_s2a_proto_init() { } } } - file_internal_proto_s2a_s2a_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_internal_proto_s2a_s2a_proto_msgTypes[0].OneofWrappers = []any{ (*AuthenticationMechanism_Token)(nil), } - file_internal_proto_s2a_s2a_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_internal_proto_s2a_s2a_proto_msgTypes[5].OneofWrappers = []any{ (*SessionReq_ClientStart)(nil), (*SessionReq_ServerStart)(nil), (*SessionReq_Next)(nil), diff --git a/vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a_grpc.pb.go b/vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a_grpc.pb.go index 0fa582fc874d..8fac3841be5d 100644 --- a/vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a_grpc.pb.go +++ b/vendor/github.com/google/s2a-go/internal/proto/s2a_go_proto/s2a_grpc.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc v3.21.12 // source: internal/proto/s2a/s2a.proto @@ -29,8 +29,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( S2AService_SetUpSession_FullMethodName = "/s2a.proto.S2AService/SetUpSession" @@ -61,11 +61,12 @@ func NewS2AServiceClient(cc grpc.ClientConnInterface) S2AServiceClient { } func (c *s2AServiceClient) SetUpSession(ctx context.Context, opts ...grpc.CallOption) (S2AService_SetUpSessionClient, error) { - stream, err := c.cc.NewStream(ctx, &S2AService_ServiceDesc.Streams[0], S2AService_SetUpSession_FullMethodName, opts...) + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &S2AService_ServiceDesc.Streams[0], S2AService_SetUpSession_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &s2AServiceSetUpSessionClient{stream} + x := &s2AServiceSetUpSessionClient{ClientStream: stream} return x, nil } @@ -129,7 +130,7 @@ func RegisterS2AServiceServer(s grpc.ServiceRegistrar, srv S2AServiceServer) { } func _S2AService_SetUpSession_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(S2AServiceServer).SetUpSession(&s2AServiceSetUpSessionServer{stream}) + return srv.(S2AServiceServer).SetUpSession(&s2AServiceSetUpSessionServer{ServerStream: stream}) } type S2AService_SetUpSessionServer interface { diff --git a/vendor/github.com/google/s2a-go/internal/proto/v2/common_go_proto/common.pb.go b/vendor/github.com/google/s2a-go/internal/proto/v2/common_go_proto/common.pb.go index c84bed977482..e9aa5d14c0d6 100644 --- a/vendor/github.com/google/s2a-go/internal/proto/v2/common_go_proto/common.pb.go +++ b/vendor/github.com/google/s2a-go/internal/proto/v2/common_go_proto/common.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.34.2 // protoc v3.21.12 // source: internal/proto/v2/common/common.proto @@ -256,62 +256,218 @@ func (AlpnProtocol) EnumDescriptor() ([]byte, []int) { return file_internal_proto_v2_common_common_proto_rawDescGZIP(), []int{3} } +type Identity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to IdentityOneof: + // + // *Identity_SpiffeId + // *Identity_Hostname + // *Identity_Uid + // *Identity_Username + // *Identity_GcpId + IdentityOneof isIdentity_IdentityOneof `protobuf_oneof:"identity_oneof"` + // Additional identity-specific attributes. + Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *Identity) Reset() { + *x = Identity{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_proto_v2_common_common_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Identity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Identity) ProtoMessage() {} + +func (x *Identity) ProtoReflect() protoreflect.Message { + mi := &file_internal_proto_v2_common_common_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Identity.ProtoReflect.Descriptor instead. +func (*Identity) Descriptor() ([]byte, []int) { + return file_internal_proto_v2_common_common_proto_rawDescGZIP(), []int{0} +} + +func (m *Identity) GetIdentityOneof() isIdentity_IdentityOneof { + if m != nil { + return m.IdentityOneof + } + return nil +} + +func (x *Identity) GetSpiffeId() string { + if x, ok := x.GetIdentityOneof().(*Identity_SpiffeId); ok { + return x.SpiffeId + } + return "" +} + +func (x *Identity) GetHostname() string { + if x, ok := x.GetIdentityOneof().(*Identity_Hostname); ok { + return x.Hostname + } + return "" +} + +func (x *Identity) GetUid() string { + if x, ok := x.GetIdentityOneof().(*Identity_Uid); ok { + return x.Uid + } + return "" +} + +func (x *Identity) GetUsername() string { + if x, ok := x.GetIdentityOneof().(*Identity_Username); ok { + return x.Username + } + return "" +} + +func (x *Identity) GetGcpId() string { + if x, ok := x.GetIdentityOneof().(*Identity_GcpId); ok { + return x.GcpId + } + return "" +} + +func (x *Identity) GetAttributes() map[string]string { + if x != nil { + return x.Attributes + } + return nil +} + +type isIdentity_IdentityOneof interface { + isIdentity_IdentityOneof() +} + +type Identity_SpiffeId struct { + // The SPIFFE ID of a connection endpoint. + SpiffeId string `protobuf:"bytes,1,opt,name=spiffe_id,json=spiffeId,proto3,oneof"` +} + +type Identity_Hostname struct { + // The hostname of a connection endpoint. + Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3,oneof"` +} + +type Identity_Uid struct { + // The UID of a connection endpoint. + Uid string `protobuf:"bytes,4,opt,name=uid,proto3,oneof"` +} + +type Identity_Username struct { + // The username of a connection endpoint. + Username string `protobuf:"bytes,5,opt,name=username,proto3,oneof"` +} + +type Identity_GcpId struct { + // The GCP ID of a connection endpoint. + GcpId string `protobuf:"bytes,6,opt,name=gcp_id,json=gcpId,proto3,oneof"` +} + +func (*Identity_SpiffeId) isIdentity_IdentityOneof() {} + +func (*Identity_Hostname) isIdentity_IdentityOneof() {} + +func (*Identity_Uid) isIdentity_IdentityOneof() {} + +func (*Identity_Username) isIdentity_IdentityOneof() {} + +func (*Identity_GcpId) isIdentity_IdentityOneof() {} + var File_internal_proto_v2_common_common_proto protoreflect.FileDescriptor var file_internal_proto_v2_common_common_proto_rawDesc = []byte{ 0x0a, 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2a, 0xee, 0x02, 0x0a, 0x0b, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, - 0x73, 0x75, 0x69, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x53, - 0x55, 0x49, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x33, 0x0a, 0x2f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x53, 0x55, 0x49, 0x54, - 0x45, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, - 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, - 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x01, 0x12, 0x33, 0x0a, 0x2f, 0x43, 0x49, 0x50, 0x48, 0x45, - 0x52, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, - 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, - 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x02, 0x12, 0x39, 0x0a, 0x35, - 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x48, - 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x43, 0x48, 0x41, - 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x5f, 0x53, - 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x49, 0x50, 0x48, 0x45, - 0x52, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, - 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, - 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x04, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x49, + 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x22, 0xab, 0x02, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x09, 0x73, 0x70, 0x69, 0x66, 0x66, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x70, 0x69, 0x66, 0x66, 0x65, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, + 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x17, 0x0a, 0x06, 0x67, 0x63, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x05, 0x67, 0x63, 0x70, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x0a, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x6e, + 0x65, 0x6f, 0x66, 0x2a, 0xee, 0x02, 0x0a, 0x0b, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, 0x75, + 0x69, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x53, 0x55, 0x49, + 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x33, 0x0a, 0x2f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, + 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, + 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, + 0x32, 0x35, 0x36, 0x10, 0x01, 0x12, 0x33, 0x0a, 0x2f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x53, + 0x55, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, + 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, + 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x02, 0x12, 0x39, 0x0a, 0x35, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, - 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, - 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x05, 0x12, 0x37, 0x0a, - 0x33, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x43, 0x44, - 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x43, 0x48, 0x41, 0x43, - 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x5f, 0x53, 0x48, - 0x41, 0x32, 0x35, 0x36, 0x10, 0x06, 0x2a, 0x7d, 0x0a, 0x0a, 0x54, 0x4c, 0x53, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x4c, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x4c, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x4c, 0x53, 0x5f, 0x56, 0x45, - 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x31, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x54, - 0x4c, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x31, 0x5f, 0x32, 0x10, 0x03, - 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x4c, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, - 0x31, 0x5f, 0x33, 0x10, 0x04, 0x2a, 0x69, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x4f, 0x4e, 0x4e, 0x45, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x4e, - 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, - 0x4e, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, - 0x2a, 0x79, 0x0a, 0x0c, 0x41, 0x6c, 0x70, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x4c, 0x50, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, - 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x16, 0x0a, 0x12, 0x41, 0x4c, 0x50, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, - 0x5f, 0x47, 0x52, 0x50, 0x43, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x4c, 0x50, 0x4e, 0x5f, - 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x32, 0x10, 0x02, - 0x12, 0x19, 0x0a, 0x15, 0x41, 0x4c, 0x50, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, - 0x4c, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x31, 0x5f, 0x31, 0x10, 0x03, 0x42, 0x39, 0x5a, 0x37, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x73, 0x32, 0x61, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x67, 0x6f, - 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x43, 0x48, 0x41, 0x43, 0x48, + 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x5f, 0x53, 0x48, 0x41, + 0x32, 0x35, 0x36, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x53, + 0x55, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, + 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x5f, + 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x04, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x49, 0x50, 0x48, + 0x45, 0x52, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, 0x5f, 0x52, 0x53, + 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, + 0x43, 0x4d, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x05, 0x12, 0x37, 0x0a, 0x33, 0x43, + 0x49, 0x50, 0x48, 0x45, 0x52, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x43, 0x44, 0x48, 0x45, + 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, + 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x5f, 0x53, 0x48, 0x41, 0x32, + 0x35, 0x36, 0x10, 0x06, 0x2a, 0x7d, 0x0a, 0x0a, 0x54, 0x4c, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x4c, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x13, 0x0a, 0x0f, 0x54, 0x4c, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x31, + 0x5f, 0x30, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x4c, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x31, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x4c, 0x53, + 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x31, 0x5f, 0x32, 0x10, 0x03, 0x12, 0x13, + 0x0a, 0x0f, 0x54, 0x4c, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x31, 0x5f, + 0x33, 0x10, 0x04, 0x2a, 0x69, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, + 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x2a, 0x79, + 0x0a, 0x0c, 0x41, 0x6c, 0x70, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1d, + 0x0a, 0x19, 0x41, 0x4c, 0x50, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, + 0x12, 0x41, 0x4c, 0x50, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x47, + 0x52, 0x50, 0x43, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x4c, 0x50, 0x4e, 0x5f, 0x50, 0x52, + 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x32, 0x10, 0x02, 0x12, 0x19, + 0x0a, 0x15, 0x41, 0x4c, 0x50, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, + 0x48, 0x54, 0x54, 0x50, 0x31, 0x5f, 0x31, 0x10, 0x03, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, + 0x32, 0x61, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x67, 0x6f, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -327,18 +483,22 @@ func file_internal_proto_v2_common_common_proto_rawDescGZIP() []byte { } var file_internal_proto_v2_common_common_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_internal_proto_v2_common_common_proto_goTypes = []interface{}{ +var file_internal_proto_v2_common_common_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_internal_proto_v2_common_common_proto_goTypes = []any{ (Ciphersuite)(0), // 0: s2a.proto.v2.Ciphersuite (TLSVersion)(0), // 1: s2a.proto.v2.TLSVersion (ConnectionSide)(0), // 2: s2a.proto.v2.ConnectionSide (AlpnProtocol)(0), // 3: s2a.proto.v2.AlpnProtocol + (*Identity)(nil), // 4: s2a.proto.v2.Identity + nil, // 5: s2a.proto.v2.Identity.AttributesEntry } var file_internal_proto_v2_common_common_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name + 5, // 0: s2a.proto.v2.Identity.attributes:type_name -> s2a.proto.v2.Identity.AttributesEntry + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name } func init() { file_internal_proto_v2_common_common_proto_init() } @@ -346,19 +506,41 @@ func file_internal_proto_v2_common_common_proto_init() { if File_internal_proto_v2_common_common_proto != nil { return } + if !protoimpl.UnsafeEnabled { + file_internal_proto_v2_common_common_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*Identity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_internal_proto_v2_common_common_proto_msgTypes[0].OneofWrappers = []any{ + (*Identity_SpiffeId)(nil), + (*Identity_Hostname)(nil), + (*Identity_Uid)(nil), + (*Identity_Username)(nil), + (*Identity_GcpId)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_internal_proto_v2_common_common_proto_rawDesc, NumEnums: 4, - NumMessages: 0, + NumMessages: 2, NumExtensions: 0, NumServices: 0, }, GoTypes: file_internal_proto_v2_common_common_proto_goTypes, DependencyIndexes: file_internal_proto_v2_common_common_proto_depIdxs, EnumInfos: file_internal_proto_v2_common_common_proto_enumTypes, + MessageInfos: file_internal_proto_v2_common_common_proto_msgTypes, }.Build() File_internal_proto_v2_common_common_proto = out.File file_internal_proto_v2_common_common_proto_rawDesc = nil diff --git a/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto/s2a_context.pb.go b/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto/s2a_context.pb.go index b7fd871c7a75..418331a4bde1 100644 --- a/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto/s2a_context.pb.go +++ b/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto/s2a_context.pb.go @@ -14,14 +14,14 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.34.2 // protoc v3.21.12 // source: internal/proto/v2/s2a_context/s2a_context.proto package s2a_context_go_proto import ( - common_go_proto "github.com/google/s2a-go/internal/proto/common_go_proto" + common_go_proto "github.com/google/s2a-go/internal/proto/v2/common_go_proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -64,7 +64,7 @@ type S2AContext struct { // certificate chain was NOT validated successfully. PeerCertificateChainFingerprints []string `protobuf:"bytes,4,rep,name=peer_certificate_chain_fingerprints,json=peerCertificateChainFingerprints,proto3" json:"peer_certificate_chain_fingerprints,omitempty"` // The local identity used during session setup. - LocalIdentity *common_go_proto.Identity `protobuf:"bytes,5,opt,name=local_identity,json=localIdentity,proto3" json:"local_identity,omitempty"` + LocalIdentity *common_go_proto.Identity `protobuf:"bytes,9,opt,name=local_identity,json=localIdentity,proto3" json:"local_identity,omitempty"` // The SHA256 hash of the DER-encoding of the local leaf certificate used in // the handshake. LocalLeafCertFingerprint []byte `protobuf:"bytes,6,opt,name=local_leaf_cert_fingerprint,json=localLeafCertFingerprint,proto3" json:"local_leaf_cert_fingerprint,omitempty"` @@ -151,35 +151,36 @@ var file_internal_proto_v2_s2a_context_s2a_context_proto_rawDesc = []byte{ 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x32, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x73, 0x32, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x1a, - 0x22, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xd9, 0x02, 0x0a, 0x0a, 0x53, 0x32, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, - 0x73, 0x70, 0x69, 0x66, 0x66, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x6c, 0x65, 0x61, 0x66, 0x43, 0x65, 0x72, 0x74, 0x53, 0x70, 0x69, 0x66, 0x66, 0x65, 0x49, - 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x75, - 0x72, 0x69, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x66, 0x43, - 0x65, 0x72, 0x74, 0x55, 0x72, 0x69, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x65, 0x61, 0x66, 0x5f, - 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x6e, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x65, 0x61, 0x66, 0x43, 0x65, 0x72, 0x74, 0x44, 0x6e, 0x73, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x23, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, - 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x20, 0x70, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, - 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x12, 0x3d, 0x0a, 0x1b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x63, - 0x65, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4c, 0x65, 0x61, 0x66, - 0x43, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x42, - 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x32, 0x61, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x32, 0x61, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xee, 0x02, 0x0a, 0x0a, 0x53, 0x32, 0x41, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x63, 0x65, + 0x72, 0x74, 0x5f, 0x73, 0x70, 0x69, 0x66, 0x66, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x6c, 0x65, 0x61, 0x66, 0x43, 0x65, 0x72, 0x74, 0x53, 0x70, 0x69, 0x66, + 0x66, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x63, 0x65, 0x72, + 0x74, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x65, + 0x61, 0x66, 0x43, 0x65, 0x72, 0x74, 0x55, 0x72, 0x69, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x65, + 0x61, 0x66, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x6e, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x65, 0x61, 0x66, 0x43, 0x65, 0x72, 0x74, + 0x44, 0x6e, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x23, 0x70, 0x65, 0x65, 0x72, + 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, + 0x69, 0x6e, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x20, 0x70, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x46, 0x69, 0x6e, 0x67, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x1b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, + 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x18, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x4c, 0x65, 0x61, 0x66, 0x43, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x07, 0x10, + 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x32, 0x61, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x76, 0x32, 0x2f, 0x73, 0x32, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x67, + 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -195,12 +196,12 @@ func file_internal_proto_v2_s2a_context_s2a_context_proto_rawDescGZIP() []byte { } var file_internal_proto_v2_s2a_context_s2a_context_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_internal_proto_v2_s2a_context_s2a_context_proto_goTypes = []interface{}{ +var file_internal_proto_v2_s2a_context_s2a_context_proto_goTypes = []any{ (*S2AContext)(nil), // 0: s2a.proto.v2.S2AContext - (*common_go_proto.Identity)(nil), // 1: s2a.proto.Identity + (*common_go_proto.Identity)(nil), // 1: s2a.proto.v2.Identity } var file_internal_proto_v2_s2a_context_s2a_context_proto_depIdxs = []int32{ - 1, // 0: s2a.proto.v2.S2AContext.local_identity:type_name -> s2a.proto.Identity + 1, // 0: s2a.proto.v2.S2AContext.local_identity:type_name -> s2a.proto.v2.Identity 1, // [1:1] is the sub-list for method output_type 1, // [1:1] is the sub-list for method input_type 1, // [1:1] is the sub-list for extension type_name @@ -214,7 +215,7 @@ func file_internal_proto_v2_s2a_context_s2a_context_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_internal_proto_v2_s2a_context_s2a_context_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_context_s2a_context_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*S2AContext); i { case 0: return &v.state diff --git a/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a.pb.go b/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a.pb.go index e843450c7edb..548f31da2d5a 100644 --- a/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a.pb.go +++ b/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a.pb.go @@ -14,14 +14,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.34.2 // protoc v3.21.12 // source: internal/proto/v2/s2a/s2a.proto package s2a_go_proto import ( - common_go_proto1 "github.com/google/s2a-go/internal/proto/common_go_proto" common_go_proto "github.com/google/s2a-go/internal/proto/v2/common_go_proto" s2a_context_go_proto "github.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -292,6 +291,12 @@ const ( // The connect-to-Google verification mode uses the trust bundle for // connecting to Google, e.g. *.mtls.googleapis.com endpoints. ValidatePeerCertificateChainReq_CONNECT_TO_GOOGLE ValidatePeerCertificateChainReq_VerificationMode = 2 + // Internal use only. + ValidatePeerCertificateChainReq_RESERVED_CUSTOM_VERIFICATION_MODE_3 ValidatePeerCertificateChainReq_VerificationMode = 3 + // Internal use only. + ValidatePeerCertificateChainReq_RESERVED_CUSTOM_VERIFICATION_MODE_4 ValidatePeerCertificateChainReq_VerificationMode = 4 + // Internal use only. + ValidatePeerCertificateChainReq_RESERVED_CUSTOM_VERIFICATION_MODE_5 ValidatePeerCertificateChainReq_VerificationMode = 5 ) // Enum value maps for ValidatePeerCertificateChainReq_VerificationMode. @@ -300,11 +305,17 @@ var ( 0: "UNSPECIFIED", 1: "SPIFFE", 2: "CONNECT_TO_GOOGLE", + 3: "RESERVED_CUSTOM_VERIFICATION_MODE_3", + 4: "RESERVED_CUSTOM_VERIFICATION_MODE_4", + 5: "RESERVED_CUSTOM_VERIFICATION_MODE_5", } ValidatePeerCertificateChainReq_VerificationMode_value = map[string]int32{ - "UNSPECIFIED": 0, - "SPIFFE": 1, - "CONNECT_TO_GOOGLE": 2, + "UNSPECIFIED": 0, + "SPIFFE": 1, + "CONNECT_TO_GOOGLE": 2, + "RESERVED_CUSTOM_VERIFICATION_MODE_3": 3, + "RESERVED_CUSTOM_VERIFICATION_MODE_4": 4, + "RESERVED_CUSTOM_VERIFICATION_MODE_5": 5, } ) @@ -454,7 +465,7 @@ type AuthenticationMechanism struct { // mechanism. Otherwise, S2A assumes that the authentication mechanism is // associated with the default identity. If the default identity cannot be // determined, the request is rejected. - Identity *common_go_proto1.Identity `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` + Identity *common_go_proto.Identity `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` // Types that are assignable to MechanismOneof: // // *AuthenticationMechanism_Token @@ -493,7 +504,7 @@ func (*AuthenticationMechanism) Descriptor() ([]byte, []int) { return file_internal_proto_v2_s2a_s2a_proto_rawDescGZIP(), []int{1} } -func (x *AuthenticationMechanism) GetIdentity() *common_go_proto1.Identity { +func (x *AuthenticationMechanism) GetIdentity() *common_go_proto.Identity { if x != nil { return x.Identity } @@ -1185,7 +1196,7 @@ type SessionReq struct { // identity is not populated, S2A will try to deduce the managed identity to // use from the SNI extension. If that also fails, S2A uses the default // identity (if one exists). - LocalIdentity *common_go_proto1.Identity `protobuf:"bytes,1,opt,name=local_identity,json=localIdentity,proto3" json:"local_identity,omitempty"` + LocalIdentity *common_go_proto.Identity `protobuf:"bytes,7,opt,name=local_identity,json=localIdentity,proto3" json:"local_identity,omitempty"` // The authentication mechanisms that the application wishes to use to // authenticate to S2A, ordered by preference. S2A will always use the first // authentication mechanism that matches the managed identity. @@ -1231,7 +1242,7 @@ func (*SessionReq) Descriptor() ([]byte, []int) { return file_internal_proto_v2_s2a_s2a_proto_rawDescGZIP(), []int{11} } -func (x *SessionReq) GetLocalIdentity() *common_go_proto1.Identity { +func (x *SessionReq) GetLocalIdentity() *common_go_proto.Identity { if x != nil { return x.LocalIdentity } @@ -1790,358 +1801,365 @@ var file_internal_proto_v2_s2a_s2a_proto_rawDesc = []byte{ 0x0a, 0x1f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x32, 0x61, 0x2f, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x1a, - 0x22, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x32, - 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x73, 0x32, 0x61, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x87, 0x01, 0x0a, 0x0a, - 0x41, 0x6c, 0x70, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x70, 0x6e, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0e, 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x73, 0x32, 0x61, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6c, 0x70, 0x6e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x0d, 0x61, 0x6c, 0x70, 0x6e, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0x75, 0x0a, 0x17, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, - 0x12, 0x2f, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x16, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x6d, 0x65, 0x63, - 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x36, 0x0a, 0x06, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x22, 0x71, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x45, - 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x69, 0x64, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x69, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x73, 0x6e, 0x69, 0x22, 0xf1, 0x0b, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, - 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x78, 0x0a, 0x18, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6c, - 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6c, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x78, 0x0a, - 0x18, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3c, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6c, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xcf, 0x02, 0x0a, 0x16, 0x43, 0x6c, 0x69, 0x65, + 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x32, 0x61, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x73, 0x32, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x87, 0x01, 0x0a, 0x0a, 0x41, 0x6c, 0x70, 0x6e, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, + 0x6c, 0x70, 0x6e, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, + 0x0a, 0x0e, 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6c, 0x70, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x52, 0x0d, 0x61, 0x6c, 0x70, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x73, 0x22, 0x7e, 0x0a, 0x17, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x12, 0x32, 0x0a, 0x08, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 0x16, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x6d, 0x65, 0x63, 0x68, + 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4a, 0x04, 0x08, 0x01, 0x10, + 0x02, 0x22, 0x36, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x71, 0x0a, 0x16, 0x47, 0x65, 0x74, + 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x12, 0x45, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, + 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, + 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x6e, 0x69, 0x22, 0xf1, 0x0b, 0x0a, + 0x17, 0x47, 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x78, 0x0a, 0x18, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x32, 0x61, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6c, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, - 0x40, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x4c, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x54, 0x6c, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73, 0x32, 0x61, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x4c, 0x53, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x54, 0x6c, 0x73, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, 0x75, 0x69, - 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x32, 0x61, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, - 0x75, 0x69, 0x74, 0x65, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, 0x75, 0x69, 0x74, - 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6c, 0x70, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x0a, 0x61, 0x6c, 0x70, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x04, 0x08, - 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x1a, 0xfa, 0x06, 0x0a, 0x16, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73, 0x32, 0x61, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x4c, 0x53, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x54, 0x6c, 0x73, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73, - 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x4c, 0x53, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x54, 0x6c, 0x73, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, - 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x32, - 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, - 0x72, 0x73, 0x75, 0x69, 0x74, 0x65, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, 0x75, - 0x69, 0x74, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6c, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, - 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x74, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x55, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6c, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x18, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, - 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x65, 0x61, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x6d, 0x61, 0x78, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, - 0x61, 0x64, 0x4f, 0x66, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x65, 0x61, 0x64, 0x12, 0x39, - 0x0a, 0x0b, 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x76, 0x32, 0x2e, 0x41, 0x6c, 0x70, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x61, - 0x6c, 0x70, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x9e, 0x02, 0x0a, 0x18, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x4f, 0x4e, 0x54, 0x5f, - 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x43, - 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, - 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x43, - 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x42, 0x55, 0x54, 0x5f, 0x44, - 0x4f, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x02, 0x12, 0x29, 0x0a, 0x25, - 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x43, - 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x56, - 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x03, 0x12, 0x3a, 0x0a, 0x36, 0x52, 0x45, 0x51, 0x55, 0x45, - 0x53, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x5f, 0x43, - 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, - 0x45, 0x5f, 0x42, 0x55, 0x54, 0x5f, 0x44, 0x4f, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, - 0x59, 0x10, 0x04, 0x12, 0x35, 0x0a, 0x31, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, - 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, - 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4e, - 0x44, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, - 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x42, 0x13, 0x0a, 0x11, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb0, 0x03, 0x0a, 0x1d, - 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, - 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x5d, 0x0a, - 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x3f, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, - 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, - 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x72, + 0x6f, 0x6e, 0x12, 0x78, 0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x6c, 0x73, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6c, 0x73, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xcf, 0x02, 0x0a, + 0x16, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6c, 0x73, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, + 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x4c, 0x53, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x54, 0x6c, 0x73, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6c, + 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x18, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x54, + 0x4c, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x54, 0x6c, + 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x69, 0x70, 0x68, + 0x65, 0x72, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x19, + 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x69, + 0x70, 0x68, 0x65, 0x72, 0x73, 0x75, 0x69, 0x74, 0x65, 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, + 0x72, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x61, 0x6c, 0x70, 0x6e, 0x5f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, + 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6c, 0x70, 0x6e, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x61, 0x6c, 0x70, 0x6e, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x1a, 0xfa, + 0x06, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6c, + 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x18, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x54, + 0x4c, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x54, 0x6c, + 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, + 0x74, 0x6c, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x18, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, + 0x2e, 0x54, 0x4c, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x61, 0x78, + 0x54, 0x6c, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x69, + 0x70, 0x68, 0x65, 0x72, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x19, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, + 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x73, 0x75, 0x69, 0x74, 0x65, 0x52, 0x0c, 0x63, 0x69, 0x70, + 0x68, 0x65, 0x72, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6c, 0x73, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x74, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x93, 0x01, 0x0a, 0x1a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x55, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x18, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x76, 0x65, + 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x61, 0x65, 0x61, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x6d, 0x61, 0x78, 0x4f, + 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x4f, 0x66, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x41, + 0x65, 0x61, 0x64, 0x12, 0x39, 0x0a, 0x0b, 0x61, 0x6c, 0x70, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6c, 0x70, 0x6e, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x0a, 0x61, 0x6c, 0x70, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x9e, + 0x02, 0x0a, 0x18, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, + 0x44, 0x4f, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4c, 0x49, + 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x10, + 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4c, 0x49, + 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, + 0x42, 0x55, 0x54, 0x5f, 0x44, 0x4f, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, + 0x02, 0x12, 0x29, 0x0a, 0x25, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4c, 0x49, + 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, + 0x41, 0x4e, 0x44, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x03, 0x12, 0x3a, 0x0a, 0x36, + 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, + 0x49, 0x52, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, + 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x42, 0x55, 0x54, 0x5f, 0x44, 0x4f, 0x4e, 0x54, 0x5f, + 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x04, 0x12, 0x35, 0x0a, 0x31, 0x52, 0x45, 0x51, 0x55, + 0x45, 0x53, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x5f, + 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, + 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x05, 0x4a, + 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x42, 0x13, 0x0a, 0x11, 0x74, + 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xb0, 0x03, 0x0a, 0x1d, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x12, 0x5d, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x51, 0x0a, 0x13, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x61, + 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, + 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, + 0x52, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x08, 0x72, 0x61, 0x77, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x64, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x68, + 0x61, 0x32, 0x35, 0x36, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x68, + 0x61, 0x33, 0x38, 0x34, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0c, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x33, 0x38, 0x34, 0x44, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x35, 0x31, 0x32, 0x5f, 0x64, 0x69, 0x67, 0x65, + 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x35, + 0x31, 0x32, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x3d, 0x0a, 0x13, 0x50, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x08, 0x0a, 0x04, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, + 0x43, 0x52, 0x59, 0x50, 0x54, 0x10, 0x02, 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x22, 0x3d, 0x0a, 0x1e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x13, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x32, 0x61, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x12, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, - 0x1d, 0x0a, 0x09, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0c, 0x48, 0x00, 0x52, 0x08, 0x72, 0x61, 0x77, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25, - 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x44, - 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x33, 0x38, 0x34, 0x5f, - 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0c, - 0x73, 0x68, 0x61, 0x33, 0x38, 0x34, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0d, - 0x73, 0x68, 0x61, 0x35, 0x31, 0x32, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x35, 0x31, 0x32, 0x44, 0x69, 0x67, - 0x65, 0x73, 0x74, 0x22, 0x3d, 0x0a, 0x13, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, - 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, - 0x49, 0x47, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x43, 0x52, 0x59, 0x50, 0x54, - 0x10, 0x02, 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x3d, - 0x0a, 0x1e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xe7, 0x01, - 0x0a, 0x20, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x12, 0x63, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x45, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, - 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x69, 0x6e, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x22, 0x43, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, - 0x07, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, - 0x43, 0x52, 0x59, 0x50, 0x54, 0x10, 0x02, 0x22, 0x40, 0x0a, 0x21, 0x4f, 0x66, 0x66, 0x6c, 0x6f, - 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, - 0x6f, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x08, 0x6f, 0x75, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xf8, 0x04, 0x0a, 0x1f, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x52, 0x0a, - 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x73, 0x32, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x20, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, + 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x63, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x45, 0x2e, 0x73, 0x32, 0x61, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, + 0x64, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, + 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, + 0x69, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x43, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x75, 0x6d, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x10, 0x01, 0x12, + 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x43, 0x52, 0x59, 0x50, 0x54, 0x10, 0x02, 0x22, 0x40, 0x0a, 0x21, + 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x75, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xf4, + 0x05, 0x0a, 0x1f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, + 0x65, 0x71, 0x12, 0x52, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x3e, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x2e, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, + 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x5b, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, - 0x65, 0x12, 0x5b, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, - 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, - 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x5b, - 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, - 0x65, 0x71, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x65, 0x65, 0x72, 0x48, 0x00, 0x52, - 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x65, 0x65, 0x72, 0x1a, 0x39, 0x0a, 0x0a, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x1a, 0xb5, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, - 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, - 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x25, 0x73, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x72, 0x65, 0x73, 0x74, - 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x22, 0x73, 0x65, 0x72, 0x69, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, - 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x46, - 0x0a, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, - 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x49, 0x46, 0x46, 0x45, 0x10, 0x01, 0x12, - 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x47, 0x4f, - 0x4f, 0x47, 0x4c, 0x45, 0x10, 0x02, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6f, - 0x6e, 0x65, 0x6f, 0x66, 0x22, 0xb2, 0x02, 0x0a, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6c, 0x0a, 0x11, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x32, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x3d, 0x0a, 0x10, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, - 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x02, 0x22, 0x97, 0x05, 0x0a, 0x0a, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x62, 0x0a, 0x19, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x52, 0x18, - 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x73, 0x12, 0x61, 0x0a, 0x19, 0x67, 0x65, 0x74, 0x5f, - 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x32, - 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6c, - 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x48, 0x00, 0x52, 0x16, 0x67, 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x77, 0x0a, 0x21, 0x6f, - 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1d, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x12, 0x80, 0x01, 0x0a, 0x24, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x20, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, + 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x50, 0x65, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, + 0x65, 0x65, 0x72, 0x12, 0x5b, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x65, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x65, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x65, 0x65, 0x72, + 0x1a, 0x39, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2b, + 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x1a, 0xb5, 0x01, 0x0a, 0x0a, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x51, 0x0a, 0x25, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x75, + 0x6e, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x22, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x55, 0x6e, 0x72, 0x65, 0x73, + 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x22, 0xc1, 0x01, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x50, 0x49, + 0x46, 0x46, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, + 0x5f, 0x54, 0x4f, 0x5f, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, + 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, + 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x44, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x27, + 0x0a, 0x23, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, + 0x4d, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x35, 0x10, 0x05, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0xb2, 0x02, 0x0a, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6c, 0x0a, 0x11, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, + 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x32, 0x41, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x3d, 0x0a, 0x10, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x02, 0x22, 0xa0, 0x05, 0x0a, 0x0a, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3d, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, + 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x62, 0x0a, 0x19, 0x61, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x63, 0x68, 0x61, + 0x6e, 0x69, 0x73, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x32, + 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, + 0x73, 0x6d, 0x52, 0x18, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x73, 0x12, 0x61, 0x0a, 0x19, + 0x67, 0x65, 0x74, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x16, 0x67, 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, + 0x77, 0x0a, 0x21, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x72, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x32, 0x61, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, + 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1d, 0x6f, 0x66, 0x66, 0x6c, 0x6f, + 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x80, 0x01, 0x0a, 0x24, 0x6f, 0x66, 0x66, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, + 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x7d, 0x0a, 0x23, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x5f, 0x6f, 0x6e, - 0x65, 0x6f, 0x66, 0x22, 0xb4, 0x04, 0x0a, 0x0b, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x64, 0x0a, 0x1a, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x17, - 0x67, 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x7a, 0x0a, 0x22, 0x6f, 0x66, 0x66, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x48, 0x00, 0x52, 0x1e, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x83, 0x01, 0x0a, 0x25, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x72, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x21, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x52, - 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x80, 0x01, 0x0a, 0x24, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, - 0x73, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x20, 0x6f, 0x66, 0x66, 0x6c, 0x6f, + 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x7d, 0x0a, 0x23, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, + 0x65, 0x71, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, - 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x20, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0c, 0x0a, 0x0a, - 0x72, 0x65, 0x73, 0x70, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x2a, 0xa2, 0x03, 0x0a, 0x12, 0x53, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, - 0x6d, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, - 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x1f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, + 0x71, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0xb4, 0x04, + 0x0a, 0x0b, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x64, 0x0a, 0x1a, 0x67, + 0x65, 0x74, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x17, 0x67, 0x65, 0x74, 0x54, 0x6c, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x7a, 0x0a, 0x22, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, + 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, 0x52, 0x1e, 0x6f, + 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x83, 0x01, + 0x0a, 0x25, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x66, 0x66, + 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x48, 0x00, + 0x52, 0x21, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x80, 0x01, 0x0a, 0x24, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, + 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x48, 0x00, 0x52, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, + 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x70, 0x5f, 0x6f, + 0x6e, 0x65, 0x6f, 0x66, 0x2a, 0xa2, 0x03, 0x0a, 0x12, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1c, 0x0a, 0x18, 0x53, + 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x32, 0x41, + 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x4b, + 0x43, 0x53, 0x31, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, + 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x52, 0x53, 0x41, + 0x5f, 0x50, 0x4b, 0x43, 0x53, 0x31, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, - 0x52, 0x53, 0x41, 0x5f, 0x50, 0x4b, 0x43, 0x53, 0x31, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, - 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, - 0x47, 0x4e, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x4b, 0x43, 0x53, 0x31, 0x5f, 0x53, 0x48, 0x41, - 0x33, 0x38, 0x34, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, - 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x4b, 0x43, 0x53, 0x31, 0x5f, - 0x53, 0x48, 0x41, 0x35, 0x31, 0x32, 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x32, 0x41, 0x5f, - 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x53, - 0x45, 0x43, 0x50, 0x32, 0x35, 0x36, 0x52, 0x31, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, - 0x04, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, - 0x4e, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x33, 0x38, 0x34, 0x52, - 0x31, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x05, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x32, - 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, - 0x5f, 0x53, 0x45, 0x43, 0x50, 0x35, 0x32, 0x31, 0x52, 0x31, 0x5f, 0x53, 0x48, 0x41, 0x35, 0x31, - 0x32, 0x10, 0x06, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, + 0x52, 0x53, 0x41, 0x5f, 0x50, 0x4b, 0x43, 0x53, 0x31, 0x5f, 0x53, 0x48, 0x41, 0x35, 0x31, 0x32, + 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, + 0x47, 0x4e, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x32, 0x35, 0x36, + 0x52, 0x31, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x53, + 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x43, 0x44, 0x53, + 0x41, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x33, 0x38, 0x34, 0x52, 0x31, 0x5f, 0x53, 0x48, 0x41, 0x33, + 0x38, 0x34, 0x10, 0x05, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, + 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x53, 0x45, 0x43, 0x50, 0x35, + 0x32, 0x31, 0x52, 0x31, 0x5f, 0x53, 0x48, 0x41, 0x35, 0x31, 0x32, 0x10, 0x06, 0x12, 0x24, 0x0a, + 0x20, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x52, 0x53, + 0x41, 0x5f, 0x50, 0x53, 0x53, 0x5f, 0x52, 0x53, 0x41, 0x45, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, + 0x36, 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x53, 0x53, 0x5f, 0x52, 0x53, 0x41, 0x45, - 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x32, 0x41, + 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x08, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x53, - 0x53, 0x5f, 0x52, 0x53, 0x41, 0x45, 0x5f, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x10, 0x08, 0x12, - 0x24, 0x0a, 0x20, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, - 0x52, 0x53, 0x41, 0x5f, 0x50, 0x53, 0x53, 0x5f, 0x52, 0x53, 0x41, 0x45, 0x5f, 0x53, 0x48, 0x41, - 0x35, 0x31, 0x32, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, - 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x44, 0x32, 0x35, 0x35, 0x31, 0x39, 0x10, 0x0a, 0x32, - 0x57, 0x0a, 0x0a, 0x53, 0x32, 0x41, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, - 0x0c, 0x53, 0x65, 0x74, 0x55, 0x70, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, - 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, + 0x53, 0x5f, 0x52, 0x53, 0x41, 0x45, 0x5f, 0x53, 0x48, 0x41, 0x35, 0x31, 0x32, 0x10, 0x09, 0x12, + 0x18, 0x0a, 0x14, 0x53, 0x32, 0x41, 0x5f, 0x53, 0x53, 0x4c, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x5f, + 0x45, 0x44, 0x32, 0x35, 0x35, 0x31, 0x39, 0x10, 0x0a, 0x32, 0x57, 0x0a, 0x0a, 0x53, 0x32, 0x41, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x55, 0x70, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x32, - 0x61, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x32, 0x61, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x1a, 0x19, 0x2e, 0x73, 0x32, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x32, + 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x28, 0x01, + 0x30, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x32, 0x61, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x32, + 0x61, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -2158,7 +2176,7 @@ func file_internal_proto_v2_s2a_s2a_proto_rawDescGZIP() []byte { var file_internal_proto_v2_s2a_s2a_proto_enumTypes = make([]protoimpl.EnumInfo, 6) var file_internal_proto_v2_s2a_s2a_proto_msgTypes = make([]protoimpl.MessageInfo, 17) -var file_internal_proto_v2_s2a_s2a_proto_goTypes = []interface{}{ +var file_internal_proto_v2_s2a_s2a_proto_goTypes = []any{ (SignatureAlgorithm)(0), // 0: s2a.proto.v2.SignatureAlgorithm (GetTlsConfigurationResp_ServerTlsConfiguration_RequestClientCertificate)(0), // 1: s2a.proto.v2.GetTlsConfigurationResp.ServerTlsConfiguration.RequestClientCertificate (OffloadPrivateKeyOperationReq_PrivateKeyOperation)(0), // 2: s2a.proto.v2.OffloadPrivateKeyOperationReq.PrivateKeyOperation @@ -2183,7 +2201,7 @@ var file_internal_proto_v2_s2a_s2a_proto_goTypes = []interface{}{ (*ValidatePeerCertificateChainReq_ClientPeer)(nil), // 21: s2a.proto.v2.ValidatePeerCertificateChainReq.ClientPeer (*ValidatePeerCertificateChainReq_ServerPeer)(nil), // 22: s2a.proto.v2.ValidatePeerCertificateChainReq.ServerPeer (common_go_proto.AlpnProtocol)(0), // 23: s2a.proto.v2.AlpnProtocol - (*common_go_proto1.Identity)(nil), // 24: s2a.proto.Identity + (*common_go_proto.Identity)(nil), // 24: s2a.proto.v2.Identity (common_go_proto.ConnectionSide)(0), // 25: s2a.proto.v2.ConnectionSide (*s2a_context_go_proto.S2AContext)(nil), // 26: s2a.proto.v2.S2AContext (common_go_proto.TLSVersion)(0), // 27: s2a.proto.v2.TLSVersion @@ -2191,7 +2209,7 @@ var file_internal_proto_v2_s2a_s2a_proto_goTypes = []interface{}{ } var file_internal_proto_v2_s2a_s2a_proto_depIdxs = []int32{ 23, // 0: s2a.proto.v2.AlpnPolicy.alpn_protocols:type_name -> s2a.proto.v2.AlpnProtocol - 24, // 1: s2a.proto.v2.AuthenticationMechanism.identity:type_name -> s2a.proto.Identity + 24, // 1: s2a.proto.v2.AuthenticationMechanism.identity:type_name -> s2a.proto.v2.Identity 25, // 2: s2a.proto.v2.GetTlsConfigurationReq.connection_side:type_name -> s2a.proto.v2.ConnectionSide 19, // 3: s2a.proto.v2.GetTlsConfigurationResp.client_tls_configuration:type_name -> s2a.proto.v2.GetTlsConfigurationResp.ClientTlsConfiguration 20, // 4: s2a.proto.v2.GetTlsConfigurationResp.server_tls_configuration:type_name -> s2a.proto.v2.GetTlsConfigurationResp.ServerTlsConfiguration @@ -2203,7 +2221,7 @@ var file_internal_proto_v2_s2a_s2a_proto_depIdxs = []int32{ 22, // 10: s2a.proto.v2.ValidatePeerCertificateChainReq.server_peer:type_name -> s2a.proto.v2.ValidatePeerCertificateChainReq.ServerPeer 5, // 11: s2a.proto.v2.ValidatePeerCertificateChainResp.validation_result:type_name -> s2a.proto.v2.ValidatePeerCertificateChainResp.ValidationResult 26, // 12: s2a.proto.v2.ValidatePeerCertificateChainResp.context:type_name -> s2a.proto.v2.S2AContext - 24, // 13: s2a.proto.v2.SessionReq.local_identity:type_name -> s2a.proto.Identity + 24, // 13: s2a.proto.v2.SessionReq.local_identity:type_name -> s2a.proto.v2.Identity 7, // 14: s2a.proto.v2.SessionReq.authentication_mechanisms:type_name -> s2a.proto.v2.AuthenticationMechanism 9, // 15: s2a.proto.v2.SessionReq.get_tls_configuration_req:type_name -> s2a.proto.v2.GetTlsConfigurationReq 11, // 16: s2a.proto.v2.SessionReq.offload_private_key_operation_req:type_name -> s2a.proto.v2.OffloadPrivateKeyOperationReq @@ -2238,7 +2256,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_internal_proto_v2_s2a_s2a_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*AlpnPolicy); i { case 0: return &v.state @@ -2250,7 +2268,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*AuthenticationMechanism); i { case 0: return &v.state @@ -2262,7 +2280,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*Status); i { case 0: return &v.state @@ -2274,7 +2292,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*GetTlsConfigurationReq); i { case 0: return &v.state @@ -2286,7 +2304,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*GetTlsConfigurationResp); i { case 0: return &v.state @@ -2298,7 +2316,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*OffloadPrivateKeyOperationReq); i { case 0: return &v.state @@ -2310,7 +2328,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*OffloadPrivateKeyOperationResp); i { case 0: return &v.state @@ -2322,7 +2340,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*OffloadResumptionKeyOperationReq); i { case 0: return &v.state @@ -2334,7 +2352,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*OffloadResumptionKeyOperationResp); i { case 0: return &v.state @@ -2346,7 +2364,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*ValidatePeerCertificateChainReq); i { case 0: return &v.state @@ -2358,7 +2376,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*ValidatePeerCertificateChainResp); i { case 0: return &v.state @@ -2370,7 +2388,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*SessionReq); i { case 0: return &v.state @@ -2382,7 +2400,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*SessionResp); i { case 0: return &v.state @@ -2394,7 +2412,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*GetTlsConfigurationResp_ClientTlsConfiguration); i { case 0: return &v.state @@ -2406,7 +2424,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*GetTlsConfigurationResp_ServerTlsConfiguration); i { case 0: return &v.state @@ -2418,7 +2436,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*ValidatePeerCertificateChainReq_ClientPeer); i { case 0: return &v.state @@ -2430,7 +2448,7 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { return nil } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_internal_proto_v2_s2a_s2a_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*ValidatePeerCertificateChainReq_ServerPeer); i { case 0: return &v.state @@ -2443,30 +2461,30 @@ func file_internal_proto_v2_s2a_s2a_proto_init() { } } } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_internal_proto_v2_s2a_s2a_proto_msgTypes[1].OneofWrappers = []any{ (*AuthenticationMechanism_Token)(nil), } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_internal_proto_v2_s2a_s2a_proto_msgTypes[4].OneofWrappers = []any{ (*GetTlsConfigurationResp_ClientTlsConfiguration_)(nil), (*GetTlsConfigurationResp_ServerTlsConfiguration_)(nil), } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_internal_proto_v2_s2a_s2a_proto_msgTypes[5].OneofWrappers = []any{ (*OffloadPrivateKeyOperationReq_RawBytes)(nil), (*OffloadPrivateKeyOperationReq_Sha256Digest)(nil), (*OffloadPrivateKeyOperationReq_Sha384Digest)(nil), (*OffloadPrivateKeyOperationReq_Sha512Digest)(nil), } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[9].OneofWrappers = []interface{}{ + file_internal_proto_v2_s2a_s2a_proto_msgTypes[9].OneofWrappers = []any{ (*ValidatePeerCertificateChainReq_ClientPeer_)(nil), (*ValidatePeerCertificateChainReq_ServerPeer_)(nil), } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[11].OneofWrappers = []interface{}{ + file_internal_proto_v2_s2a_s2a_proto_msgTypes[11].OneofWrappers = []any{ (*SessionReq_GetTlsConfigurationReq)(nil), (*SessionReq_OffloadPrivateKeyOperationReq)(nil), (*SessionReq_OffloadResumptionKeyOperationReq)(nil), (*SessionReq_ValidatePeerCertificateChainReq)(nil), } - file_internal_proto_v2_s2a_s2a_proto_msgTypes[12].OneofWrappers = []interface{}{ + file_internal_proto_v2_s2a_s2a_proto_msgTypes[12].OneofWrappers = []any{ (*SessionResp_GetTlsConfigurationResp)(nil), (*SessionResp_OffloadPrivateKeyOperationResp)(nil), (*SessionResp_OffloadResumptionKeyOperationResp)(nil), diff --git a/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a_grpc.pb.go b/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a_grpc.pb.go index 2566df6c3040..c93f75a78b0e 100644 --- a/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a_grpc.pb.go +++ b/vendor/github.com/google/s2a-go/internal/proto/v2/s2a_go_proto/s2a_grpc.pb.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc v3.21.12 // source: internal/proto/v2/s2a/s2a.proto @@ -29,8 +29,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( S2AService_SetUpSession_FullMethodName = "/s2a.proto.v2.S2AService/SetUpSession" @@ -54,11 +54,12 @@ func NewS2AServiceClient(cc grpc.ClientConnInterface) S2AServiceClient { } func (c *s2AServiceClient) SetUpSession(ctx context.Context, opts ...grpc.CallOption) (S2AService_SetUpSessionClient, error) { - stream, err := c.cc.NewStream(ctx, &S2AService_ServiceDesc.Streams[0], S2AService_SetUpSession_FullMethodName, opts...) + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &S2AService_ServiceDesc.Streams[0], S2AService_SetUpSession_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &s2AServiceSetUpSessionClient{stream} + x := &s2AServiceSetUpSessionClient{ClientStream: stream} return x, nil } @@ -115,7 +116,7 @@ func RegisterS2AServiceServer(s grpc.ServiceRegistrar, srv S2AServiceServer) { } func _S2AService_SetUpSession_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(S2AServiceServer).SetUpSession(&s2AServiceSetUpSessionServer{stream}) + return srv.(S2AServiceServer).SetUpSession(&s2AServiceSetUpSessionServer{ServerStream: stream}) } type S2AService_SetUpSessionServer interface { diff --git a/vendor/github.com/google/s2a-go/internal/record/record.go b/vendor/github.com/google/s2a-go/internal/record/record.go index c60515510a7a..e76509ef01ad 100644 --- a/vendor/github.com/google/s2a-go/internal/record/record.go +++ b/vendor/github.com/google/s2a-go/internal/record/record.go @@ -378,11 +378,6 @@ func (p *conn) Read(b []byte) (n int, err error) { if len(p.handshakeBuf) > 0 { return 0, errors.New("application data received while processing fragmented handshake messages") } - if p.ticketState == receivingTickets { - p.ticketState = notReceivingTickets - grpclog.Infof("Sending session tickets to S2A.") - p.ticketSender.sendTicketsToS2A(p.sessionTickets, p.callComplete) - } case alert: return 0, p.handleAlertMessage() case handshake: @@ -500,17 +495,7 @@ func (p *conn) buildRecord(plaintext []byte, recordType byte, recordStartIndex i } func (p *conn) Close() error { - p.readMutex.Lock() - defer p.readMutex.Unlock() - p.writeMutex.Lock() - defer p.writeMutex.Unlock() - // If p.ticketState is equal to notReceivingTickets, then S2A has - // been sent a flight of session tickets, and we must wait for the - // call to S2A to complete before closing the record protocol. - if p.ticketState == notReceivingTickets { - <-p.callComplete - grpclog.Infof("Safe to close the connection because sending tickets to S2A is (already) complete.") - } + // Close the connection immediately. return p.Conn.Close() } @@ -663,7 +648,7 @@ func (p *conn) handleHandshakeMessage() error { // Several handshake messages may be coalesced into a single record. // Continue reading them until the handshake buffer is empty. for len(p.handshakeBuf) > 0 { - handshakeMsgType, msgLen, msg, rawMsg, ok := p.parseHandshakeMsg() + handshakeMsgType, msgLen, msg, _, ok := p.parseHandshakeMsg() if !ok { // The handshake could not be fully parsed, so read in another // record and try again later. @@ -681,20 +666,7 @@ func (p *conn) handleHandshakeMessage() error { return err } case tlsHandshakeNewSessionTicketType: - // Ignore tickets that are received after a batch of tickets has - // been sent to S2A. - if p.ticketState == notReceivingTickets { - continue - } - if p.ticketState == ticketsNotYetReceived { - p.ticketState = receivingTickets - } - p.sessionTickets = append(p.sessionTickets, rawMsg) - if len(p.sessionTickets) == maxAllowedTickets { - p.ticketState = notReceivingTickets - grpclog.Infof("Sending session tickets to S2A.") - p.ticketSender.sendTicketsToS2A(p.sessionTickets, p.callComplete) - } + // Do nothing for session ticket. default: return errors.New("unknown handshake message type") } diff --git a/vendor/github.com/google/s2a-go/internal/tokenmanager/tokenmanager.go b/vendor/github.com/google/s2a-go/internal/tokenmanager/tokenmanager.go index ec96ba3b6a66..4057e70c8add 100644 --- a/vendor/github.com/google/s2a-go/internal/tokenmanager/tokenmanager.go +++ b/vendor/github.com/google/s2a-go/internal/tokenmanager/tokenmanager.go @@ -23,7 +23,8 @@ import ( "fmt" "os" - commonpb "github.com/google/s2a-go/internal/proto/common_go_proto" + commonpbv1 "github.com/google/s2a-go/internal/proto/common_go_proto" + commonpb "github.com/google/s2a-go/internal/proto/v2/common_go_proto" ) const ( @@ -37,7 +38,7 @@ type AccessTokenManager interface { DefaultToken() (token string, err error) // Token returns a token that an application with local identity equal to // identity must use to authenticate to S2A. - Token(identity *commonpb.Identity) (token string, err error) + Token(identity interface{}) (token string, err error) } type singleTokenAccessTokenManager struct { @@ -65,6 +66,14 @@ func (m *singleTokenAccessTokenManager) DefaultToken() (string, error) { } // Token always returns the token managed by the singleTokenAccessTokenManager. -func (m *singleTokenAccessTokenManager) Token(*commonpb.Identity) (string, error) { +func (m *singleTokenAccessTokenManager) Token(identity interface{}) (string, error) { + switch v := identity.(type) { + case *commonpbv1.Identity: + // valid type. + case *commonpb.Identity: + // valid type. + default: + return "", fmt.Errorf("Incorrect identity type: %v", v) + } return m.token, nil } diff --git a/vendor/github.com/google/s2a-go/internal/v2/s2av2.go b/vendor/github.com/google/s2a-go/internal/v2/s2av2.go index 85a8379d8332..a6402ee48cc8 100644 --- a/vendor/github.com/google/s2a-go/internal/v2/s2av2.go +++ b/vendor/github.com/google/s2a-go/internal/v2/s2av2.go @@ -28,7 +28,6 @@ import ( "os" "time" - "github.com/golang/protobuf/proto" "github.com/google/s2a-go/fallback" "github.com/google/s2a-go/internal/handshaker/service" "github.com/google/s2a-go/internal/tokenmanager" @@ -38,8 +37,9 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials" "google.golang.org/grpc/grpclog" + "google.golang.org/protobuf/proto" - commonpbv1 "github.com/google/s2a-go/internal/proto/common_go_proto" + commonpb "github.com/google/s2a-go/internal/proto/v2/common_go_proto" s2av2pb "github.com/google/s2a-go/internal/proto/v2/s2a_go_proto" ) @@ -59,9 +59,9 @@ type s2av2TransportCreds struct { transportCreds credentials.TransportCredentials tokenManager *tokenmanager.AccessTokenManager // localIdentity should only be used by the client. - localIdentity *commonpbv1.Identity + localIdentity *commonpb.Identity // localIdentities should only be used by the server. - localIdentities []*commonpbv1.Identity + localIdentities []*commonpb.Identity verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode fallbackClientHandshake fallback.ClientHandshake getS2AStream func(ctx context.Context, s2av2Address string) (stream.S2AStream, error) @@ -70,7 +70,7 @@ type s2av2TransportCreds struct { // NewClientCreds returns a client-side transport credentials object that uses // the S2Av2 to establish a secure connection with a server. -func NewClientCreds(s2av2Address string, transportCreds credentials.TransportCredentials, localIdentity *commonpbv1.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode, fallbackClientHandshakeFunc fallback.ClientHandshake, getS2AStream func(ctx context.Context, s2av2Address string) (stream.S2AStream, error), serverAuthorizationPolicy []byte) (credentials.TransportCredentials, error) { +func NewClientCreds(s2av2Address string, transportCreds credentials.TransportCredentials, localIdentity *commonpb.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode, fallbackClientHandshakeFunc fallback.ClientHandshake, getS2AStream func(ctx context.Context, s2av2Address string) (stream.S2AStream, error), serverAuthorizationPolicy []byte) (credentials.TransportCredentials, error) { // Create an AccessTokenManager instance to use to authenticate to S2Av2. accessTokenManager, err := tokenmanager.NewSingleTokenAccessTokenManager() @@ -101,7 +101,7 @@ func NewClientCreds(s2av2Address string, transportCreds credentials.TransportCre // NewServerCreds returns a server-side transport credentials object that uses // the S2Av2 to establish a secure connection with a client. -func NewServerCreds(s2av2Address string, transportCreds credentials.TransportCredentials, localIdentities []*commonpbv1.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode, getS2AStream func(ctx context.Context, s2av2Address string) (stream.S2AStream, error)) (credentials.TransportCredentials, error) { +func NewServerCreds(s2av2Address string, transportCreds credentials.TransportCredentials, localIdentities []*commonpb.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode, getS2AStream func(ctx context.Context, s2av2Address string) (stream.S2AStream, error)) (credentials.TransportCredentials, error) { // Create an AccessTokenManager instance to use to authenticate to S2Av2. accessTokenManager, err := tokenmanager.NewSingleTokenAccessTokenManager() creds := &s2av2TransportCreds{ @@ -183,13 +183,7 @@ func (c *s2av2TransportCreds) ClientHandshake(ctx context.Context, serverAuthori } creds := credentials.NewTLS(config) - var conn net.Conn - var authInfo credentials.AuthInfo - retry.Run(timeoutCtx, - func() error { - conn, authInfo, err = creds.ClientHandshake(timeoutCtx, serverName, rawConn) - return err - }) + conn, authInfo, err := creds.ClientHandshake(timeoutCtx, serverName, rawConn) if err != nil { grpclog.Infof("Failed to do client handshake using S2Av2: %v", err) if c.fallbackClientHandshake != nil { @@ -197,7 +191,7 @@ func (c *s2av2TransportCreds) ClientHandshake(ctx context.Context, serverAuthori } return nil, nil, err } - grpclog.Infof("Successfully done client handshake using S2Av2 to: %s", serverName) + grpclog.Infof("client-side handshake is done using S2Av2 to: %s", serverName) return conn, authInfo, err } @@ -247,13 +241,7 @@ func (c *s2av2TransportCreds) ServerHandshake(rawConn net.Conn) (net.Conn, crede } creds := credentials.NewTLS(config) - var conn net.Conn - var authInfo credentials.AuthInfo - retry.Run(ctx, - func() error { - conn, authInfo, err = creds.ServerHandshake(rawConn) - return err - }) + conn, authInfo, err := creds.ServerHandshake(rawConn) if err != nil { grpclog.Infof("Failed to do server handshake using S2Av2: %v", err) return nil, nil, err @@ -280,15 +268,15 @@ func (c *s2av2TransportCreds) Clone() credentials.TransportCredentials { tokenManager = *c.tokenManager } verificationMode := c.verificationMode - var localIdentity *commonpbv1.Identity + var localIdentity *commonpb.Identity if c.localIdentity != nil { - localIdentity = proto.Clone(c.localIdentity).(*commonpbv1.Identity) + localIdentity = proto.Clone(c.localIdentity).(*commonpb.Identity) } - var localIdentities []*commonpbv1.Identity + var localIdentities []*commonpb.Identity if c.localIdentities != nil { - localIdentities = make([]*commonpbv1.Identity, len(c.localIdentities)) + localIdentities = make([]*commonpb.Identity, len(c.localIdentities)) for i, localIdentity := range c.localIdentities { - localIdentities[i] = proto.Clone(localIdentity).(*commonpbv1.Identity) + localIdentities[i] = proto.Clone(localIdentity).(*commonpb.Identity) } } creds := &s2av2TransportCreds{ diff --git a/vendor/github.com/google/s2a-go/internal/v2/tlsconfigstore/tlsconfigstore.go b/vendor/github.com/google/s2a-go/internal/v2/tlsconfigstore/tlsconfigstore.go index 4d919132295b..fa0002e36b7c 100644 --- a/vendor/github.com/google/s2a-go/internal/v2/tlsconfigstore/tlsconfigstore.go +++ b/vendor/github.com/google/s2a-go/internal/v2/tlsconfigstore/tlsconfigstore.go @@ -33,7 +33,6 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" - commonpbv1 "github.com/google/s2a-go/internal/proto/common_go_proto" commonpb "github.com/google/s2a-go/internal/proto/v2/common_go_proto" s2av2pb "github.com/google/s2a-go/internal/proto/v2/s2a_go_proto" ) @@ -44,8 +43,8 @@ const ( ) // GetTLSConfigurationForClient returns a tls.Config instance for use by a client application. -func GetTLSConfigurationForClient(serverHostname string, s2AStream stream.S2AStream, tokenManager tokenmanager.AccessTokenManager, localIdentity *commonpbv1.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode, serverAuthorizationPolicy []byte) (*tls.Config, error) { - authMechanisms := getAuthMechanisms(tokenManager, []*commonpbv1.Identity{localIdentity}) +func GetTLSConfigurationForClient(serverHostname string, s2AStream stream.S2AStream, tokenManager tokenmanager.AccessTokenManager, localIdentity *commonpb.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode, serverAuthorizationPolicy []byte) (*tls.Config, error) { + authMechanisms := getAuthMechanisms(tokenManager, []*commonpb.Identity{localIdentity}) if grpclog.V(1) { grpclog.Infof("Sending request to S2Av2 for client TLS config.") @@ -126,7 +125,7 @@ func GetTLSConfigurationForClient(serverHostname string, s2AStream stream.S2AStr } // GetTLSConfigurationForServer returns a tls.Config instance for use by a server application. -func GetTLSConfigurationForServer(s2AStream stream.S2AStream, tokenManager tokenmanager.AccessTokenManager, localIdentities []*commonpbv1.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode) (*tls.Config, error) { +func GetTLSConfigurationForServer(s2AStream stream.S2AStream, tokenManager tokenmanager.AccessTokenManager, localIdentities []*commonpb.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode) (*tls.Config, error) { return &tls.Config{ GetConfigForClient: ClientConfig(tokenManager, localIdentities, verificationMode, s2AStream), }, nil @@ -136,7 +135,7 @@ func GetTLSConfigurationForServer(s2AStream stream.S2AStream, tokenManager token // connection with a client, based on SNI communicated during ClientHello. // Ensures that server presents the correct certificate to establish a TLS // connection. -func ClientConfig(tokenManager tokenmanager.AccessTokenManager, localIdentities []*commonpbv1.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode, s2AStream stream.S2AStream) func(chi *tls.ClientHelloInfo) (*tls.Config, error) { +func ClientConfig(tokenManager tokenmanager.AccessTokenManager, localIdentities []*commonpb.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode, s2AStream stream.S2AStream) func(chi *tls.ClientHelloInfo) (*tls.Config, error) { return func(chi *tls.ClientHelloInfo) (*tls.Config, error) { tlsConfig, err := getServerConfigFromS2Av2(tokenManager, localIdentities, chi.ServerName, s2AStream) if err != nil { @@ -219,9 +218,9 @@ func getTLSCipherSuite(tlsCipherSuite commonpb.Ciphersuite) uint16 { } } -func getServerConfigFromS2Av2(tokenManager tokenmanager.AccessTokenManager, localIdentities []*commonpbv1.Identity, sni string, s2AStream stream.S2AStream) (*s2av2pb.GetTlsConfigurationResp_ServerTlsConfiguration, error) { +func getServerConfigFromS2Av2(tokenManager tokenmanager.AccessTokenManager, localIdentities []*commonpb.Identity, sni string, s2AStream stream.S2AStream) (*s2av2pb.GetTlsConfigurationResp_ServerTlsConfiguration, error) { authMechanisms := getAuthMechanisms(tokenManager, localIdentities) - var locID *commonpbv1.Identity + var locID *commonpb.Identity if localIdentities != nil { locID = localIdentities[0] } @@ -283,7 +282,7 @@ func getTLSClientAuthType(tlsConfig *s2av2pb.GetTlsConfigurationResp_ServerTlsCo return clientAuth } -func getAuthMechanisms(tokenManager tokenmanager.AccessTokenManager, localIdentities []*commonpbv1.Identity) []*s2av2pb.AuthenticationMechanism { +func getAuthMechanisms(tokenManager tokenmanager.AccessTokenManager, localIdentities []*commonpb.Identity) []*s2av2pb.AuthenticationMechanism { if tokenManager == nil { return nil } diff --git a/vendor/github.com/google/s2a-go/s2a.go b/vendor/github.com/google/s2a-go/s2a.go index 5ecb06f930eb..cc79bd09a677 100644 --- a/vendor/github.com/google/s2a-go/s2a.go +++ b/vendor/github.com/google/s2a-go/s2a.go @@ -29,7 +29,6 @@ import ( "sync" "time" - "github.com/golang/protobuf/proto" "github.com/google/s2a-go/fallback" "github.com/google/s2a-go/internal/handshaker" "github.com/google/s2a-go/internal/handshaker/service" @@ -38,8 +37,10 @@ import ( "github.com/google/s2a-go/retry" "google.golang.org/grpc/credentials" "google.golang.org/grpc/grpclog" + "google.golang.org/protobuf/proto" - commonpb "github.com/google/s2a-go/internal/proto/common_go_proto" + commonpbv1 "github.com/google/s2a-go/internal/proto/common_go_proto" + commonpb "github.com/google/s2a-go/internal/proto/v2/common_go_proto" s2av2pb "github.com/google/s2a-go/internal/proto/v2/s2a_go_proto" ) @@ -54,17 +55,17 @@ const ( // credentials.TransportCredentials interface. type s2aTransportCreds struct { info *credentials.ProtocolInfo - minTLSVersion commonpb.TLSVersion - maxTLSVersion commonpb.TLSVersion + minTLSVersion commonpbv1.TLSVersion + maxTLSVersion commonpbv1.TLSVersion // tlsCiphersuites contains the ciphersuites used in the S2A connection. // Note that these are currently unconfigurable. - tlsCiphersuites []commonpb.Ciphersuite + tlsCiphersuites []commonpbv1.Ciphersuite // localIdentity should only be used by the client. - localIdentity *commonpb.Identity + localIdentity *commonpbv1.Identity // localIdentities should only be used by the server. - localIdentities []*commonpb.Identity + localIdentities []*commonpbv1.Identity // targetIdentities should only be used by the client. - targetIdentities []*commonpb.Identity + targetIdentities []*commonpbv1.Identity isClient bool s2aAddr string ensureProcessSessionTickets *sync.WaitGroup @@ -76,7 +77,7 @@ func NewClientCreds(opts *ClientOptions) (credentials.TransportCredentials, erro if opts == nil { return nil, errors.New("nil client options") } - var targetIdentities []*commonpb.Identity + var targetIdentities []*commonpbv1.Identity for _, targetIdentity := range opts.TargetIdentities { protoTargetIdentity, err := toProtoIdentity(targetIdentity) if err != nil { @@ -93,12 +94,12 @@ func NewClientCreds(opts *ClientOptions) (credentials.TransportCredentials, erro info: &credentials.ProtocolInfo{ SecurityProtocol: s2aSecurityProtocol, }, - minTLSVersion: commonpb.TLSVersion_TLS1_3, - maxTLSVersion: commonpb.TLSVersion_TLS1_3, - tlsCiphersuites: []commonpb.Ciphersuite{ - commonpb.Ciphersuite_AES_128_GCM_SHA256, - commonpb.Ciphersuite_AES_256_GCM_SHA384, - commonpb.Ciphersuite_CHACHA20_POLY1305_SHA256, + minTLSVersion: commonpbv1.TLSVersion_TLS1_3, + maxTLSVersion: commonpbv1.TLSVersion_TLS1_3, + tlsCiphersuites: []commonpbv1.Ciphersuite{ + commonpbv1.Ciphersuite_AES_128_GCM_SHA256, + commonpbv1.Ciphersuite_AES_256_GCM_SHA384, + commonpbv1.Ciphersuite_CHACHA20_POLY1305_SHA256, }, localIdentity: localIdentity, targetIdentities: targetIdentities, @@ -112,7 +113,11 @@ func NewClientCreds(opts *ClientOptions) (credentials.TransportCredentials, erro if opts.FallbackOpts != nil && opts.FallbackOpts.FallbackClientHandshakeFunc != nil { fallbackFunc = opts.FallbackOpts.FallbackClientHandshakeFunc } - return v2.NewClientCreds(opts.S2AAddress, opts.TransportCreds, localIdentity, verificationMode, fallbackFunc, opts.getS2AStream, opts.serverAuthorizationPolicy) + v2LocalIdentity, err := toV2ProtoIdentity(opts.LocalIdentity) + if err != nil { + return nil, err + } + return v2.NewClientCreds(opts.S2AAddress, opts.TransportCreds, v2LocalIdentity, verificationMode, fallbackFunc, opts.getS2AStream, opts.serverAuthorizationPolicy) } // NewServerCreds returns a server-side transport credentials object that uses @@ -121,7 +126,7 @@ func NewServerCreds(opts *ServerOptions) (credentials.TransportCredentials, erro if opts == nil { return nil, errors.New("nil server options") } - var localIdentities []*commonpb.Identity + var localIdentities []*commonpbv1.Identity for _, localIdentity := range opts.LocalIdentities { protoLocalIdentity, err := toProtoIdentity(localIdentity) if err != nil { @@ -134,12 +139,12 @@ func NewServerCreds(opts *ServerOptions) (credentials.TransportCredentials, erro info: &credentials.ProtocolInfo{ SecurityProtocol: s2aSecurityProtocol, }, - minTLSVersion: commonpb.TLSVersion_TLS1_3, - maxTLSVersion: commonpb.TLSVersion_TLS1_3, - tlsCiphersuites: []commonpb.Ciphersuite{ - commonpb.Ciphersuite_AES_128_GCM_SHA256, - commonpb.Ciphersuite_AES_256_GCM_SHA384, - commonpb.Ciphersuite_CHACHA20_POLY1305_SHA256, + minTLSVersion: commonpbv1.TLSVersion_TLS1_3, + maxTLSVersion: commonpbv1.TLSVersion_TLS1_3, + tlsCiphersuites: []commonpbv1.Ciphersuite{ + commonpbv1.Ciphersuite_AES_128_GCM_SHA256, + commonpbv1.Ciphersuite_AES_256_GCM_SHA384, + commonpbv1.Ciphersuite_CHACHA20_POLY1305_SHA256, }, localIdentities: localIdentities, isClient: false, @@ -147,7 +152,15 @@ func NewServerCreds(opts *ServerOptions) (credentials.TransportCredentials, erro }, nil } verificationMode := getVerificationMode(opts.VerificationMode) - return v2.NewServerCreds(opts.S2AAddress, opts.TransportCreds, localIdentities, verificationMode, opts.getS2AStream) + var v2LocalIdentities []*commonpb.Identity + for _, localIdentity := range opts.LocalIdentities { + protoLocalIdentity, err := toV2ProtoIdentity(localIdentity) + if err != nil { + return nil, err + } + v2LocalIdentities = append(v2LocalIdentities, protoLocalIdentity) + } + return v2.NewServerCreds(opts.S2AAddress, opts.TransportCreds, v2LocalIdentities, verificationMode, opts.getS2AStream) } // ClientHandshake initiates a client-side TLS handshake using the S2A. @@ -248,22 +261,22 @@ func (c *s2aTransportCreds) Info() credentials.ProtocolInfo { func (c *s2aTransportCreds) Clone() credentials.TransportCredentials { info := *c.info - var localIdentity *commonpb.Identity + var localIdentity *commonpbv1.Identity if c.localIdentity != nil { - localIdentity = proto.Clone(c.localIdentity).(*commonpb.Identity) + localIdentity = proto.Clone(c.localIdentity).(*commonpbv1.Identity) } - var localIdentities []*commonpb.Identity + var localIdentities []*commonpbv1.Identity if c.localIdentities != nil { - localIdentities = make([]*commonpb.Identity, len(c.localIdentities)) + localIdentities = make([]*commonpbv1.Identity, len(c.localIdentities)) for i, localIdentity := range c.localIdentities { - localIdentities[i] = proto.Clone(localIdentity).(*commonpb.Identity) + localIdentities[i] = proto.Clone(localIdentity).(*commonpbv1.Identity) } } - var targetIdentities []*commonpb.Identity + var targetIdentities []*commonpbv1.Identity if c.targetIdentities != nil { - targetIdentities = make([]*commonpb.Identity, len(c.targetIdentities)) + targetIdentities = make([]*commonpbv1.Identity, len(c.targetIdentities)) for i, targetIdentity := range c.targetIdentities { - targetIdentities[i] = proto.Clone(targetIdentity).(*commonpb.Identity) + targetIdentities[i] = proto.Clone(targetIdentity).(*commonpbv1.Identity) } } return &s2aTransportCreds{ @@ -351,6 +364,12 @@ func getVerificationMode(verificationMode VerificationModeType) s2av2pb.Validate return s2av2pb.ValidatePeerCertificateChainReq_CONNECT_TO_GOOGLE case Spiffe: return s2av2pb.ValidatePeerCertificateChainReq_SPIFFE + case ReservedCustomVerificationMode3: + return s2av2pb.ValidatePeerCertificateChainReq_RESERVED_CUSTOM_VERIFICATION_MODE_3 + case ReservedCustomVerificationMode4: + return s2av2pb.ValidatePeerCertificateChainReq_RESERVED_CUSTOM_VERIFICATION_MODE_4 + case ReservedCustomVerificationMode5: + return s2av2pb.ValidatePeerCertificateChainReq_RESERVED_CUSTOM_VERIFICATION_MODE_5 default: return s2av2pb.ValidatePeerCertificateChainReq_UNSPECIFIED } @@ -396,24 +415,20 @@ func NewS2ADialTLSContextFunc(opts *ClientOptions) func(ctx context.Context, net defer cancel() var s2aTLSConfig *tls.Config + var c net.Conn retry.Run(timeoutCtx, func() error { s2aTLSConfig, err = factory.Build(timeoutCtx, &TLSClientConfigOptions{ ServerName: serverName, }) - return err - }) - if err != nil { - grpclog.Infof("error building S2A TLS config: %v", err) - return fallback(err) - } + if err != nil { + grpclog.Infof("error building S2A TLS config: %v", err) + return err + } - s2aDialer := &tls.Dialer{ - Config: s2aTLSConfig, - } - var c net.Conn - retry.Run(timeoutCtx, - func() error { + s2aDialer := &tls.Dialer{ + Config: s2aTLSConfig, + } c, err = s2aDialer.DialContext(timeoutCtx, network, addr) return err }) diff --git a/vendor/github.com/google/s2a-go/s2a_options.go b/vendor/github.com/google/s2a-go/s2a_options.go index fcdbc1621bd1..5bbf31bf4129 100644 --- a/vendor/github.com/google/s2a-go/s2a_options.go +++ b/vendor/github.com/google/s2a-go/s2a_options.go @@ -28,7 +28,8 @@ import ( "github.com/google/s2a-go/stream" "google.golang.org/grpc/credentials" - s2apb "github.com/google/s2a-go/internal/proto/common_go_proto" + s2apbv1 "github.com/google/s2a-go/internal/proto/common_go_proto" + s2apb "github.com/google/s2a-go/internal/proto/v2/common_go_proto" ) // Identity is the interface for S2A identities. @@ -76,9 +77,12 @@ type VerificationModeType int // Three types of verification modes. const ( - Unspecified = iota - ConnectToGoogle + Unspecified VerificationModeType = iota Spiffe + ConnectToGoogle + ReservedCustomVerificationMode3 + ReservedCustomVerificationMode4 + ReservedCustomVerificationMode5 ) // ClientOptions contains the client-side options used to establish a secure @@ -198,7 +202,23 @@ func DefaultServerOptions(s2aAddress string) *ServerOptions { } } -func toProtoIdentity(identity Identity) (*s2apb.Identity, error) { +func toProtoIdentity(identity Identity) (*s2apbv1.Identity, error) { + if identity == nil { + return nil, nil + } + switch id := identity.(type) { + case *spiffeID: + return &s2apbv1.Identity{IdentityOneof: &s2apbv1.Identity_SpiffeId{SpiffeId: id.Name()}}, nil + case *hostname: + return &s2apbv1.Identity{IdentityOneof: &s2apbv1.Identity_Hostname{Hostname: id.Name()}}, nil + case *uid: + return &s2apbv1.Identity{IdentityOneof: &s2apbv1.Identity_Uid{Uid: id.Name()}}, nil + default: + return nil, errors.New("unrecognized identity type") + } +} + +func toV2ProtoIdentity(identity Identity) (*s2apb.Identity, error) { if identity == nil { return nil, nil } diff --git a/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json b/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json index d51736e7e364..44d4d00202f9 100644 --- a/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json +++ b/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "v2": "2.12.4" + "v2": "2.13.0" } diff --git a/vendor/github.com/googleapis/gax-go/v2/CHANGES.md b/vendor/github.com/googleapis/gax-go/v2/CHANGES.md index 7e36eb48ff81..d63421b71caa 100644 --- a/vendor/github.com/googleapis/gax-go/v2/CHANGES.md +++ b/vendor/github.com/googleapis/gax-go/v2/CHANGES.md @@ -1,5 +1,19 @@ # Changelog +## [2.13.0](https://github.com/googleapis/gax-go/compare/v2.12.5...v2.13.0) (2024-07-22) + + +### Features + +* **iterator:** add package to help work with new iter.Seq types ([#358](https://github.com/googleapis/gax-go/issues/358)) ([6bccdaa](https://github.com/googleapis/gax-go/commit/6bccdaac011fe6fd147e4eb533a8e6520b7d4acc)) + +## [2.12.5](https://github.com/googleapis/gax-go/compare/v2.12.4...v2.12.5) (2024-06-18) + + +### Bug Fixes + +* **v2/apierror:** fix (*APIError).Error() for unwrapped Status ([#351](https://github.com/googleapis/gax-go/issues/351)) ([22c16e7](https://github.com/googleapis/gax-go/commit/22c16e7bff5402bdc4c25063771cdd01c650b500)), refs [#350](https://github.com/googleapis/gax-go/issues/350) + ## [2.12.4](https://github.com/googleapis/gax-go/compare/v2.12.3...v2.12.4) (2024-05-03) diff --git a/vendor/github.com/googleapis/gax-go/v2/apierror/apierror.go b/vendor/github.com/googleapis/gax-go/v2/apierror/apierror.go index d785a065cab2..7de60773d639 100644 --- a/vendor/github.com/googleapis/gax-go/v2/apierror/apierror.go +++ b/vendor/github.com/googleapis/gax-go/v2/apierror/apierror.go @@ -206,8 +206,10 @@ func (a *APIError) Error() string { // Truncate the googleapi.Error message because it dumps the Details in // an ugly way. msg = fmt.Sprintf("googleapi: Error %d: %s", a.httpErr.Code, a.httpErr.Message) - } else if a.status != nil { + } else if a.status != nil && a.err != nil { msg = a.err.Error() + } else if a.status != nil { + msg = a.status.Message() } return strings.TrimSpace(fmt.Sprintf("%s\n%s", msg, a.details)) } diff --git a/vendor/github.com/googleapis/gax-go/v2/header.go b/vendor/github.com/googleapis/gax-go/v2/header.go index 3e53729e5fc7..f5273985afc2 100644 --- a/vendor/github.com/googleapis/gax-go/v2/header.go +++ b/vendor/github.com/googleapis/gax-go/v2/header.go @@ -163,11 +163,38 @@ func insertMetadata(ctx context.Context, keyvals ...string) metadata.MD { out = metadata.MD(make(map[string][]string)) } headers := callctx.HeadersFromContext(ctx) - for k, v := range headers { - out[k] = append(out[k], v...) + + // x-goog-api-client is a special case that we want to make sure gets merged + // into a single header. + const xGoogHeader = "x-goog-api-client" + var mergedXgoogHeader strings.Builder + + for k, vals := range headers { + if k == xGoogHeader { + // Merge all values for the x-goog-api-client header set on the ctx. + for _, v := range vals { + mergedXgoogHeader.WriteString(v) + mergedXgoogHeader.WriteRune(' ') + } + continue + } + out[k] = append(out[k], vals...) } for i := 0; i < len(keyvals); i = i + 2 { out[keyvals[i]] = append(out[keyvals[i]], keyvals[i+1]) + + if keyvals[i] == xGoogHeader { + // Merge the x-goog-api-client header values set on the ctx with any + // values passed in for it from the client. + mergedXgoogHeader.WriteString(keyvals[i+1]) + mergedXgoogHeader.WriteRune(' ') + } + } + + // Add the x goog header back in, replacing the separate values that were set. + if mergedXgoogHeader.Len() > 0 { + out[xGoogHeader] = []string{mergedXgoogHeader.String()[:mergedXgoogHeader.Len()-1]} } + return out } diff --git a/vendor/github.com/googleapis/gax-go/v2/internal/version.go b/vendor/github.com/googleapis/gax-go/v2/internal/version.go index 3006ad7bd91f..e12421cf5999 100644 --- a/vendor/github.com/googleapis/gax-go/v2/internal/version.go +++ b/vendor/github.com/googleapis/gax-go/v2/internal/version.go @@ -30,4 +30,4 @@ package internal // Version is the current tagged release of the library. -const Version = "2.12.4" +const Version = "2.13.0" diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/LICENSE.txt b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/LICENSE similarity index 100% rename from vendor/github.com/grpc-ecosystem/grpc-gateway/v2/LICENSE.txt rename to vendor/github.com/grpc-ecosystem/grpc-gateway/v2/LICENSE diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.go index 31553e7848a9..2f2b342431d6 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.go @@ -49,6 +49,7 @@ var malformedHTTPHeaders = map[string]struct{}{ type ( rpcMethodKey struct{} httpPathPatternKey struct{} + httpPatternKey struct{} AnnotateContextOption func(ctx context.Context) context.Context ) @@ -148,6 +149,12 @@ func annotateContext(ctx context.Context, mux *ServeMux, req *http.Request, rpcM var pairs []string for key, vals := range req.Header { key = textproto.CanonicalMIMEHeaderKey(key) + switch key { + case xForwardedFor, xForwardedHost: + // Handled separately below + continue + } + for _, val := range vals { // For backwards-compatibility, pass through 'authorization' header with no prefix. if key == "Authorization" { @@ -181,18 +188,17 @@ func annotateContext(ctx context.Context, mux *ServeMux, req *http.Request, rpcM pairs = append(pairs, strings.ToLower(xForwardedHost), req.Host) } + xff := req.Header.Values(xForwardedFor) if addr := req.RemoteAddr; addr != "" { if remoteIP, _, err := net.SplitHostPort(addr); err == nil { - if fwd := req.Header.Get(xForwardedFor); fwd == "" { - pairs = append(pairs, strings.ToLower(xForwardedFor), remoteIP) - } else { - pairs = append(pairs, strings.ToLower(xForwardedFor), fmt.Sprintf("%s, %s", fwd, remoteIP)) - } + xff = append(xff, remoteIP) } } + if len(xff) > 0 { + pairs = append(pairs, strings.ToLower(xForwardedFor), strings.Join(xff, ", ")) + } if timeout != 0 { - //nolint:govet // The context outlives this function ctx, _ = context.WithTimeout(ctx, timeout) } if len(pairs) == 0 { @@ -399,3 +405,13 @@ func HTTPPathPattern(ctx context.Context) (string, bool) { func withHTTPPathPattern(ctx context.Context, httpPathPattern string) context.Context { return context.WithValue(ctx, httpPathPatternKey{}, httpPathPattern) } + +// HTTPPattern returns the HTTP path pattern struct relating to the HTTP handler, if one exists. +func HTTPPattern(ctx context.Context) (Pattern, bool) { + v, ok := ctx.Value(httpPatternKey{}).(Pattern) + return v, ok +} + +func withHTTPPattern(ctx context.Context, httpPattern Pattern) context.Context { + return context.WithValue(ctx, httpPatternKey{}, httpPattern) +} diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/convert.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/convert.go index d7b15fcfb3f8..2e50082ad116 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/convert.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/convert.go @@ -94,7 +94,7 @@ func Int64(val string) (int64, error) { } // Int64Slice converts 'val' where individual integers are separated by -// 'sep' into a int64 slice. +// 'sep' into an int64 slice. func Int64Slice(val, sep string) ([]int64, error) { s := strings.Split(val, sep) values := make([]int64, len(s)) @@ -118,7 +118,7 @@ func Int32(val string) (int32, error) { } // Int32Slice converts 'val' where individual integers are separated by -// 'sep' into a int32 slice. +// 'sep' into an int32 slice. func Int32Slice(val, sep string) ([]int32, error) { s := strings.Split(val, sep) values := make([]int32, len(s)) @@ -190,7 +190,7 @@ func Bytes(val string) ([]byte, error) { } // BytesSlice converts 'val' where individual bytes sequences, encoded in URL-safe -// base64 without padding, are separated by 'sep' into a slice of bytes slices slice. +// base64 without padding, are separated by 'sep' into a slice of byte slices. func BytesSlice(val, sep string) ([][]byte, error) { s := strings.Split(val, sep) values := make([][]byte, len(s)) diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.go index d2bcbb7d2a20..41cd4f5030e4 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.go @@ -71,7 +71,7 @@ func HTTPStatusFromCode(code codes.Code) int { case codes.DataLoss: return http.StatusInternalServerError default: - grpclog.Infof("Unknown gRPC error code: %v", code) + grpclog.Warningf("Unknown gRPC error code: %v", code) return http.StatusInternalServerError } } @@ -81,6 +81,21 @@ func HTTPError(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.R mux.errorHandler(ctx, mux, marshaler, w, r, err) } +// HTTPStreamError uses the mux-configured stream error handler to notify error to the client without closing the connection. +func HTTPStreamError(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, r *http.Request, err error) { + st := mux.streamErrorHandler(ctx, err) + msg := errorChunk(st) + buf, err := marshaler.Marshal(msg) + if err != nil { + grpclog.Errorf("Failed to marshal an error: %v", err) + return + } + if _, err := w.Write(buf); err != nil { + grpclog.Errorf("Failed to notify error to client: %v", err) + return + } +} + // DefaultHTTPErrorHandler is the default error handler. // If "err" is a gRPC Status, the function replies with the status code mapped by HTTPStatusFromCode. // If "err" is a HTTPStatusError, the function replies with the status code provide by that struct. This is @@ -93,6 +108,7 @@ func HTTPError(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.R func DefaultHTTPErrorHandler(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, r *http.Request, err error) { // return Internal when Marshal failed const fallback = `{"code": 13, "message": "failed to marshal error message"}` + const fallbackRewriter = `{"code": 13, "message": "failed to rewrite error message"}` var customStatus *HTTPStatusError if errors.As(err, &customStatus) { @@ -100,31 +116,40 @@ func DefaultHTTPErrorHandler(ctx context.Context, mux *ServeMux, marshaler Marsh } s := status.Convert(err) - pb := s.Proto() w.Header().Del("Trailer") w.Header().Del("Transfer-Encoding") - contentType := marshaler.ContentType(pb) + respRw, err := mux.forwardResponseRewriter(ctx, s.Proto()) + if err != nil { + grpclog.Errorf("Failed to rewrite error message %q: %v", s, err) + w.WriteHeader(http.StatusInternalServerError) + if _, err := io.WriteString(w, fallbackRewriter); err != nil { + grpclog.Errorf("Failed to write response: %v", err) + } + return + } + + contentType := marshaler.ContentType(respRw) w.Header().Set("Content-Type", contentType) if s.Code() == codes.Unauthenticated { w.Header().Set("WWW-Authenticate", s.Message()) } - buf, merr := marshaler.Marshal(pb) + buf, merr := marshaler.Marshal(respRw) if merr != nil { - grpclog.Infof("Failed to marshal error message %q: %v", s, merr) + grpclog.Errorf("Failed to marshal error message %q: %v", s, merr) w.WriteHeader(http.StatusInternalServerError) if _, err := io.WriteString(w, fallback); err != nil { - grpclog.Infof("Failed to write response: %v", err) + grpclog.Errorf("Failed to write response: %v", err) } return } md, ok := ServerMetadataFromContext(ctx) if !ok { - grpclog.Infof("Failed to extract ServerMetadata from context") + grpclog.Error("Failed to extract ServerMetadata from context") } handleForwardResponseServerMetadata(w, mux, md) @@ -137,7 +162,7 @@ func DefaultHTTPErrorHandler(ctx context.Context, mux *ServeMux, marshaler Marsh doForwardTrailers := requestAcceptsTrailers(r) if doForwardTrailers { - handleForwardResponseTrailerHeader(w, md) + handleForwardResponseTrailerHeader(w, mux, md) w.Header().Set("Transfer-Encoding", "chunked") } @@ -148,11 +173,11 @@ func DefaultHTTPErrorHandler(ctx context.Context, mux *ServeMux, marshaler Marsh w.WriteHeader(st) if _, err := w.Write(buf); err != nil { - grpclog.Infof("Failed to write response: %v", err) + grpclog.Errorf("Failed to write response: %v", err) } if doForwardTrailers { - handleForwardResponseTrailer(w, md) + handleForwardResponseTrailer(w, mux, md) } } diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.go index a03dd166bd79..2fcd7af3c40e 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.go @@ -27,7 +27,7 @@ func FieldMaskFromRequestBody(r io.Reader, msg proto.Message) (*field_mask.Field var root interface{} if err := json.NewDecoder(r).Decode(&root); err != nil { - if err == io.EOF { + if errors.Is(err, io.EOF) { return fm, nil } return nil, err @@ -41,7 +41,7 @@ func FieldMaskFromRequestBody(r io.Reader, msg proto.Message) (*field_mask.Field m, ok := item.node.(map[string]interface{}) switch { - case ok: + case ok && len(m) > 0: // if the item is an object, then enqueue all of its children for k, v := range m { if item.msg == nil { @@ -96,6 +96,8 @@ func FieldMaskFromRequestBody(r io.Reader, msg proto.Message) (*field_mask.Field queue = append(queue, child) } } + case ok && len(m) == 0: + fallthrough case len(item.path) > 0: // otherwise, it's a leaf node so print its path fm.Paths = append(fm.Paths, item.path) @@ -153,7 +155,7 @@ func buildPathsBlindly(name string, in interface{}) []string { return paths } -// fieldMaskPathItem stores a in-progress deconstruction of a path for a fieldmask +// fieldMaskPathItem stores an in-progress deconstruction of a path for a fieldmask type fieldMaskPathItem struct { // the list of prior fields leading up to node connected by dots path string diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.go index 945f3a5ebf3a..0fa907656612 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.go @@ -2,10 +2,12 @@ package runtime import ( "context" + "errors" "fmt" "io" "net/http" "net/textproto" + "strconv" "strings" "google.golang.org/genproto/googleapis/api/httpbody" @@ -17,16 +19,10 @@ import ( // ForwardResponseStream forwards the stream from gRPC server to REST client. func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, req *http.Request, recv func() (proto.Message, error), opts ...func(context.Context, http.ResponseWriter, proto.Message) error) { - f, ok := w.(http.Flusher) - if !ok { - grpclog.Infof("Flush not supported in %T", w) - http.Error(w, "unexpected type of web server", http.StatusInternalServerError) - return - } - + rc := http.NewResponseController(w) md, ok := ServerMetadataFromContext(ctx) if !ok { - grpclog.Infof("Failed to extract ServerMetadata from context") + grpclog.Error("Failed to extract ServerMetadata from context") http.Error(w, "unexpected error", http.StatusInternalServerError) return } @@ -48,7 +44,7 @@ func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshal var wroteHeader bool for { resp, err := recv() - if err == io.EOF { + if errors.Is(err, io.EOF) { return } if err != nil { @@ -60,20 +56,33 @@ func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshal return } + respRw, err := mux.forwardResponseRewriter(ctx, resp) + if err != nil { + grpclog.Errorf("Rewrite error: %v", err) + handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err, delimiter) + return + } + if !wroteHeader { - w.Header().Set("Content-Type", marshaler.ContentType(resp)) + var contentType string + if sct, ok := marshaler.(StreamContentType); ok { + contentType = sct.StreamContentType(respRw) + } else { + contentType = marshaler.ContentType(respRw) + } + w.Header().Set("Content-Type", contentType) } var buf []byte - httpBody, isHTTPBody := resp.(*httpbody.HttpBody) + httpBody, isHTTPBody := respRw.(*httpbody.HttpBody) switch { - case resp == nil: + case respRw == nil: buf, err = marshaler.Marshal(errorChunk(status.New(codes.Internal, "empty response"))) case isHTTPBody: buf = httpBody.GetData() default: - result := map[string]interface{}{"result": resp} - if rb, ok := resp.(responseBody); ok { + result := map[string]interface{}{"result": respRw} + if rb, ok := respRw.(responseBody); ok { result["result"] = rb.XXX_ResponseBody() } @@ -81,20 +90,29 @@ func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshal } if err != nil { - grpclog.Infof("Failed to marshal response chunk: %v", err) + grpclog.Errorf("Failed to marshal response chunk: %v", err) handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err, delimiter) return } if _, err := w.Write(buf); err != nil { - grpclog.Infof("Failed to send response chunk: %v", err) + grpclog.Errorf("Failed to send response chunk: %v", err) return } wroteHeader = true if _, err := w.Write(delimiter); err != nil { - grpclog.Infof("Failed to send delimiter chunk: %v", err) + grpclog.Errorf("Failed to send delimiter chunk: %v", err) + return + } + err = rc.Flush() + if err != nil { + if errors.Is(err, http.ErrNotSupported) { + grpclog.Errorf("Flush not supported in %T", w) + http.Error(w, "unexpected type of web server", http.StatusInternalServerError) + return + } + grpclog.Errorf("Failed to flush response to client: %v", err) return } - f.Flush() } } @@ -108,18 +126,20 @@ func handleForwardResponseServerMetadata(w http.ResponseWriter, mux *ServeMux, m } } -func handleForwardResponseTrailerHeader(w http.ResponseWriter, md ServerMetadata) { +func handleForwardResponseTrailerHeader(w http.ResponseWriter, mux *ServeMux, md ServerMetadata) { for k := range md.TrailerMD { - tKey := textproto.CanonicalMIMEHeaderKey(fmt.Sprintf("%s%s", MetadataTrailerPrefix, k)) - w.Header().Add("Trailer", tKey) + if h, ok := mux.outgoingTrailerMatcher(k); ok { + w.Header().Add("Trailer", textproto.CanonicalMIMEHeaderKey(h)) + } } } -func handleForwardResponseTrailer(w http.ResponseWriter, md ServerMetadata) { +func handleForwardResponseTrailer(w http.ResponseWriter, mux *ServeMux, md ServerMetadata) { for k, vs := range md.TrailerMD { - tKey := fmt.Sprintf("%s%s", MetadataTrailerPrefix, k) - for _, v := range vs { - w.Header().Add(tKey, v) + if h, ok := mux.outgoingTrailerMatcher(k); ok { + for _, v := range vs { + w.Header().Add(h, v) + } } } } @@ -134,7 +154,7 @@ type responseBody interface { func ForwardResponseMessage(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, req *http.Request, resp proto.Message, opts ...func(context.Context, http.ResponseWriter, proto.Message) error) { md, ok := ServerMetadataFromContext(ctx) if !ok { - grpclog.Infof("Failed to extract ServerMetadata from context") + grpclog.Error("Failed to extract ServerMetadata from context") } handleForwardResponseServerMetadata(w, mux, md) @@ -147,12 +167,10 @@ func ForwardResponseMessage(ctx context.Context, mux *ServeMux, marshaler Marsha doForwardTrailers := requestAcceptsTrailers(req) if doForwardTrailers { - handleForwardResponseTrailerHeader(w, md) + handleForwardResponseTrailerHeader(w, mux, md) w.Header().Set("Transfer-Encoding", "chunked") } - handleForwardResponseTrailerHeader(w, md) - contentType := marshaler.ContentType(resp) w.Header().Set("Content-Type", contentType) @@ -160,25 +178,34 @@ func ForwardResponseMessage(ctx context.Context, mux *ServeMux, marshaler Marsha HTTPError(ctx, mux, marshaler, w, req, err) return } + respRw, err := mux.forwardResponseRewriter(ctx, resp) + if err != nil { + grpclog.Errorf("Rewrite error: %v", err) + HTTPError(ctx, mux, marshaler, w, req, err) + return + } var buf []byte - var err error - if rb, ok := resp.(responseBody); ok { + if rb, ok := respRw.(responseBody); ok { buf, err = marshaler.Marshal(rb.XXX_ResponseBody()) } else { - buf, err = marshaler.Marshal(resp) + buf, err = marshaler.Marshal(respRw) } if err != nil { - grpclog.Infof("Marshal error: %v", err) + grpclog.Errorf("Marshal error: %v", err) HTTPError(ctx, mux, marshaler, w, req, err) return } - if _, err = w.Write(buf); err != nil { - grpclog.Infof("Failed to write response: %v", err) + if !doForwardTrailers { + w.Header().Set("Content-Length", strconv.Itoa(len(buf))) + } + + if _, err = w.Write(buf); err != nil && !errors.Is(err, http.ErrBodyNotAllowed) { + grpclog.Errorf("Failed to write response: %v", err) } if doForwardTrailers { - handleForwardResponseTrailer(w, md) + handleForwardResponseTrailer(w, mux, md) } } @@ -193,8 +220,7 @@ func handleForwardResponseOptions(ctx context.Context, w http.ResponseWriter, re } for _, opt := range opts { if err := opt(ctx, w, resp); err != nil { - grpclog.Infof("Error handling ForwardResponseOptions: %v", err) - return err + return fmt.Errorf("error handling ForwardResponseOptions: %w", err) } } return nil @@ -209,15 +235,15 @@ func handleForwardResponseStreamError(ctx context.Context, wroteHeader bool, mar } buf, err := marshaler.Marshal(msg) if err != nil { - grpclog.Infof("Failed to marshal an error: %v", err) + grpclog.Errorf("Failed to marshal an error: %v", err) return } if _, err := w.Write(buf); err != nil { - grpclog.Infof("Failed to notify error to client: %v", err) + grpclog.Errorf("Failed to notify error to client: %v", err) return } if _, err := w.Write(delimiter); err != nil { - grpclog.Infof("Failed to send delimiter chunk: %v", err) + grpclog.Errorf("Failed to send delimiter chunk: %v", err) return } } diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_httpbodyproto.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_httpbodyproto.go index b86135c889b9..6de2e220c7fc 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_httpbodyproto.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_httpbodyproto.go @@ -26,7 +26,7 @@ func (h *HTTPBodyMarshaler) ContentType(v interface{}) string { // google.api.HttpBody message, otherwise it falls back to the default Marshaler. func (h *HTTPBodyMarshaler) Marshal(v interface{}) ([]byte, error) { if httpBody, ok := v.(*httpbody.HttpBody); ok { - return httpBody.Data, nil + return httpBody.GetData(), nil } return h.Marshaler.Marshal(v) } diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_json.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_json.go index d6aa82578369..fe52081ab940 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_json.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_json.go @@ -24,6 +24,11 @@ func (j *JSONBuiltin) Marshal(v interface{}) ([]byte, error) { return json.Marshal(v) } +// MarshalIndent is like Marshal but applies Indent to format the output +func (j *JSONBuiltin) MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { + return json.MarshalIndent(v, prefix, indent) +} + // Unmarshal unmarshals JSON data into "v". func (j *JSONBuiltin) Unmarshal(data []byte, v interface{}) error { return json.Unmarshal(data, v) diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.go index 51b8247da2a0..8376d1e0efd5 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.go @@ -30,10 +30,6 @@ func (*JSONPb) ContentType(_ interface{}) string { // Marshal marshals "v" into JSON. func (j *JSONPb) Marshal(v interface{}) ([]byte, error) { - if _, ok := v.(proto.Message); !ok { - return j.marshalNonProtoField(v) - } - var buf bytes.Buffer if err := j.marshalTo(&buf, v); err != nil { return nil, err @@ -48,9 +44,17 @@ func (j *JSONPb) marshalTo(w io.Writer, v interface{}) error { if err != nil { return err } + if j.Indent != "" { + b := &bytes.Buffer{} + if err := json.Indent(b, buf, "", j.Indent); err != nil { + return err + } + buf = b.Bytes() + } _, err = w.Write(buf) return err } + b, err := j.MarshalOptions.Marshal(p) if err != nil { return err @@ -150,9 +154,6 @@ func (j *JSONPb) marshalNonProtoField(v interface{}) ([]byte, error) { } m[fmt.Sprintf("%v", k.Interface())] = (*json.RawMessage)(&buf) } - if j.Indent != "" { - return json.MarshalIndent(m, "", j.Indent) - } return json.Marshal(m) } if enum, ok := rv.Interface().(protoEnum); ok && !j.UseEnumNumbers { diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler.go index 2c0d25ff4935..b1dfc37af9b9 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler.go @@ -48,3 +48,11 @@ type Delimited interface { // Delimiter returns the record separator for the stream. Delimiter() []byte } + +// StreamContentType defines the streaming content type. +type StreamContentType interface { + // StreamContentType returns the content type for a stream. This shares the + // same behaviour as for `Marshaler.ContentType`, but is called, if present, + // in the case of a streamed response. + StreamContentType(v interface{}) string +} diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler_registry.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler_registry.go index a714de024068..07c28112c899 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler_registry.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler_registry.go @@ -46,7 +46,7 @@ func MarshalerForRequest(mux *ServeMux, r *http.Request) (inbound Marshaler, out for _, contentTypeVal := range r.Header[contentTypeHeader] { contentType, _, err := mime.ParseMediaType(contentTypeVal) if err != nil { - grpclog.Infof("Failed to parse Content-Type %s: %v", contentTypeVal, err) + grpclog.Errorf("Failed to parse Content-Type %s: %v", contentTypeVal, err) continue } if m, ok := mux.marshalers.mimeMap[contentType]; ok { @@ -86,8 +86,8 @@ func (m marshalerRegistry) add(mime string, marshaler Marshaler) error { // It allows for a mapping of case-sensitive Content-Type MIME type string to runtime.Marshaler interfaces. // // For example, you could allow the client to specify the use of the runtime.JSONPb marshaler -// with a "application/jsonpb" Content-Type and the use of the runtime.JSONBuiltin marshaler -// with a "application/json" Content-Type. +// with an "application/jsonpb" Content-Type and the use of the runtime.JSONBuiltin marshaler +// with an "application/json" Content-Type. // "*" can be used to match any Content-Type. // This can be attached to a ServerMux with the marshaler option. func makeMarshalerMIMERegistry() marshalerRegistry { diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.go index f451cb441f40..60c2065ddcbb 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.go @@ -48,15 +48,23 @@ var encodedPathSplitter = regexp.MustCompile("(/|%2F)") // A HandlerFunc handles a specific pair of path pattern and HTTP method. type HandlerFunc func(w http.ResponseWriter, r *http.Request, pathParams map[string]string) +// A Middleware handler wraps another HandlerFunc to do some pre- and/or post-processing of the request. This is used as an alternative to gRPC interceptors when using the direct-to-implementation +// registration methods. It is generally recommended to use gRPC client or server interceptors instead +// where possible. +type Middleware func(HandlerFunc) HandlerFunc + // ServeMux is a request multiplexer for grpc-gateway. // It matches http requests to patterns and invokes the corresponding handler. type ServeMux struct { // handlers maps HTTP method to a list of handlers. handlers map[string][]handler + middlewares []Middleware forwardResponseOptions []func(context.Context, http.ResponseWriter, proto.Message) error + forwardResponseRewriter ForwardResponseRewriter marshalers marshalerRegistry incomingHeaderMatcher HeaderMatcherFunc outgoingHeaderMatcher HeaderMatcherFunc + outgoingTrailerMatcher HeaderMatcherFunc metadataAnnotators []func(context.Context, *http.Request) metadata.MD errorHandler ErrorHandlerFunc streamErrorHandler StreamErrorHandlerFunc @@ -68,6 +76,24 @@ type ServeMux struct { // ServeMuxOption is an option that can be given to a ServeMux on construction. type ServeMuxOption func(*ServeMux) +// ForwardResponseRewriter is the signature of a function that is capable of rewriting messages +// before they are forwarded in a unary, stream, or error response. +type ForwardResponseRewriter func(ctx context.Context, response proto.Message) (any, error) + +// WithForwardResponseRewriter returns a ServeMuxOption that allows for implementers to insert logic +// that can rewrite the final response before it is forwarded. +// +// The response rewriter function is called during unary message forwarding, stream message +// forwarding and when errors are being forwarded. +// +// NOTE: Using this option will likely make what is generated by `protoc-gen-openapiv2` incorrect. +// Since this option involves making runtime changes to the response shape or type. +func WithForwardResponseRewriter(fwdResponseRewriter ForwardResponseRewriter) ServeMuxOption { + return func(sm *ServeMux) { + sm.forwardResponseRewriter = fwdResponseRewriter + } +} + // WithForwardResponseOption returns a ServeMuxOption representing the forwardResponseOption. // // forwardResponseOption is an option that will be called on the relevant context.Context, @@ -88,6 +114,15 @@ func WithUnescapingMode(mode UnescapingMode) ServeMuxOption { } } +// WithMiddlewares sets server middleware for all handlers. This is useful as an alternative to gRPC +// interceptors when using the direct-to-implementation registration methods and cannot rely +// on gRPC interceptors. It's recommended to use gRPC interceptors instead if possible. +func WithMiddlewares(middlewares ...Middleware) ServeMuxOption { + return func(serveMux *ServeMux) { + serveMux.middlewares = append(serveMux.middlewares, middlewares...) + } +} + // SetQueryParameterParser sets the query parameter parser, used to populate message from query parameters. // Configuring this will mean the generated OpenAPI output is no longer correct, and it should be // done with careful consideration. @@ -114,10 +149,18 @@ func DefaultHeaderMatcher(key string) (string, bool) { return "", false } +func defaultOutgoingHeaderMatcher(key string) (string, bool) { + return fmt.Sprintf("%s%s", MetadataHeaderPrefix, key), true +} + +func defaultOutgoingTrailerMatcher(key string) (string, bool) { + return fmt.Sprintf("%s%s", MetadataTrailerPrefix, key), true +} + // WithIncomingHeaderMatcher returns a ServeMuxOption representing a headerMatcher for incoming request to gateway. // // This matcher will be called with each header in http.Request. If matcher returns true, that header will be -// passed to gRPC context. To transform the header before passing to gRPC context, matcher should return modified header. +// passed to gRPC context. To transform the header before passing to gRPC context, matcher should return the modified header. func WithIncomingHeaderMatcher(fn HeaderMatcherFunc) ServeMuxOption { for _, header := range fn.matchedMalformedHeaders() { grpclog.Warningf("The configured forwarding filter would allow %q to be sent to the gRPC server, which will likely cause errors. See https://github.com/grpc/grpc-go/pull/4803#issuecomment-986093310 for more information.", header) @@ -147,13 +190,24 @@ func (fn HeaderMatcherFunc) matchedMalformedHeaders() []string { // // This matcher will be called with each header in response header metadata. If matcher returns true, that header will be // passed to http response returned from gateway. To transform the header before passing to response, -// matcher should return modified header. +// matcher should return the modified header. func WithOutgoingHeaderMatcher(fn HeaderMatcherFunc) ServeMuxOption { return func(mux *ServeMux) { mux.outgoingHeaderMatcher = fn } } +// WithOutgoingTrailerMatcher returns a ServeMuxOption representing a headerMatcher for outgoing response from gateway. +// +// This matcher will be called with each header in response trailer metadata. If matcher returns true, that header will be +// passed to http response returned from gateway. To transform the header before passing to response, +// matcher should return the modified header. +func WithOutgoingTrailerMatcher(fn HeaderMatcherFunc) ServeMuxOption { + return func(mux *ServeMux) { + mux.outgoingTrailerMatcher = fn + } +} + // WithMetadata returns a ServeMuxOption for passing metadata to a gRPC context. // // This can be used by services that need to read from http.Request and modify gRPC context. A common use case @@ -257,13 +311,14 @@ func WithHealthzEndpoint(healthCheckClient grpc_health_v1.HealthClient) ServeMux // NewServeMux returns a new ServeMux whose internal mapping is empty. func NewServeMux(opts ...ServeMuxOption) *ServeMux { serveMux := &ServeMux{ - handlers: make(map[string][]handler), - forwardResponseOptions: make([]func(context.Context, http.ResponseWriter, proto.Message) error, 0), - marshalers: makeMarshalerMIMERegistry(), - errorHandler: DefaultHTTPErrorHandler, - streamErrorHandler: DefaultStreamErrorHandler, - routingErrorHandler: DefaultRoutingErrorHandler, - unescapingMode: UnescapingModeDefault, + handlers: make(map[string][]handler), + forwardResponseOptions: make([]func(context.Context, http.ResponseWriter, proto.Message) error, 0), + forwardResponseRewriter: func(ctx context.Context, response proto.Message) (any, error) { return response, nil }, + marshalers: makeMarshalerMIMERegistry(), + errorHandler: DefaultHTTPErrorHandler, + streamErrorHandler: DefaultStreamErrorHandler, + routingErrorHandler: DefaultRoutingErrorHandler, + unescapingMode: UnescapingModeDefault, } for _, opt := range opts { @@ -273,11 +328,11 @@ func NewServeMux(opts ...ServeMuxOption) *ServeMux { if serveMux.incomingHeaderMatcher == nil { serveMux.incomingHeaderMatcher = DefaultHeaderMatcher } - if serveMux.outgoingHeaderMatcher == nil { - serveMux.outgoingHeaderMatcher = func(key string) (string, bool) { - return fmt.Sprintf("%s%s", MetadataHeaderPrefix, key), true - } + serveMux.outgoingHeaderMatcher = defaultOutgoingHeaderMatcher + } + if serveMux.outgoingTrailerMatcher == nil { + serveMux.outgoingTrailerMatcher = defaultOutgoingTrailerMatcher } return serveMux @@ -285,6 +340,9 @@ func NewServeMux(opts ...ServeMuxOption) *ServeMux { // Handle associates "h" to the pair of HTTP method and path pattern. func (s *ServeMux) Handle(meth string, pat Pattern, h HandlerFunc) { + if len(s.middlewares) > 0 { + h = chainMiddlewares(s.middlewares)(h) + } s.handlers[meth] = append([]handler{{pat: pat, h: h}}, s.handlers[meth]...) } @@ -321,13 +379,13 @@ func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) { } if override := r.Header.Get("X-HTTP-Method-Override"); override != "" && s.isPathLengthFallback(r) { - r.Method = strings.ToUpper(override) if err := r.ParseForm(); err != nil { _, outboundMarshaler := MarshalerForRequest(s, r) sterr := status.Error(codes.InvalidArgument, err.Error()) s.errorHandler(ctx, s, outboundMarshaler, w, r, sterr) return } + r.Method = strings.ToUpper(override) } var pathComponents []string @@ -385,7 +443,7 @@ func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) { } continue } - h.h(w, r, pathParams) + s.handleHandler(h, w, r, pathParams) return } @@ -438,7 +496,7 @@ func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) { s.errorHandler(ctx, s, outboundMarshaler, w, r, sterr) return } - h.h(w, r, pathParams) + s.handleHandler(h, w, r, pathParams) return } _, outboundMarshaler := MarshalerForRequest(s, r) @@ -464,3 +522,16 @@ type handler struct { pat Pattern h HandlerFunc } + +func (s *ServeMux) handleHandler(h handler, w http.ResponseWriter, r *http.Request, pathParams map[string]string) { + h.h(w, r.WithContext(withHTTPPattern(r.Context(), h.pat)), pathParams) +} + +func chainMiddlewares(mws []Middleware) Middleware { + return func(next HandlerFunc) HandlerFunc { + for i := len(mws); i > 0; i-- { + next = mws[i-1](next) + } + return next + } +} diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/pattern.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/pattern.go index 8f90d15a5620..e54507145b66 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/pattern.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/pattern.go @@ -52,13 +52,13 @@ type Pattern struct { // It returns an error if the given definition is invalid. func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, error) { if version != 1 { - grpclog.Infof("unsupported version: %d", version) + grpclog.Errorf("unsupported version: %d", version) return Pattern{}, ErrInvalidPattern } l := len(ops) if l%2 != 0 { - grpclog.Infof("odd number of ops codes: %d", l) + grpclog.Errorf("odd number of ops codes: %d", l) return Pattern{}, ErrInvalidPattern } @@ -81,14 +81,14 @@ func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, er stack++ case utilities.OpPushM: if pushMSeen { - grpclog.Infof("pushM appears twice") + grpclog.Error("pushM appears twice") return Pattern{}, ErrInvalidPattern } pushMSeen = true stack++ case utilities.OpLitPush: if op.operand < 0 || len(pool) <= op.operand { - grpclog.Infof("negative literal index: %d", op.operand) + grpclog.Errorf("negative literal index: %d", op.operand) return Pattern{}, ErrInvalidPattern } if pushMSeen { @@ -97,18 +97,18 @@ func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, er stack++ case utilities.OpConcatN: if op.operand <= 0 { - grpclog.Infof("negative concat size: %d", op.operand) + grpclog.Errorf("negative concat size: %d", op.operand) return Pattern{}, ErrInvalidPattern } stack -= op.operand if stack < 0 { - grpclog.Info("stack underflow") + grpclog.Error("stack underflow") return Pattern{}, ErrInvalidPattern } stack++ case utilities.OpCapture: if op.operand < 0 || len(pool) <= op.operand { - grpclog.Infof("variable name index out of bound: %d", op.operand) + grpclog.Errorf("variable name index out of bound: %d", op.operand) return Pattern{}, ErrInvalidPattern } v := pool[op.operand] @@ -116,11 +116,11 @@ func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, er vars = append(vars, v) stack-- if stack < 0 { - grpclog.Infof("stack underflow") + grpclog.Error("stack underflow") return Pattern{}, ErrInvalidPattern } default: - grpclog.Infof("invalid opcode: %d", op.code) + grpclog.Errorf("invalid opcode: %d", op.code) return Pattern{}, ErrInvalidPattern } diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/proto2_convert.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/proto2_convert.go index d549407f20fb..f710036b350c 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/proto2_convert.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/proto2_convert.go @@ -40,7 +40,7 @@ func Float32P(val string) (*float32, error) { } // Int64P parses the given string representation of an integer -// and returns a pointer to a int64 whose value is same as the parsed integer. +// and returns a pointer to an int64 whose value is same as the parsed integer. func Int64P(val string) (*int64, error) { i, err := Int64(val) if err != nil { @@ -50,7 +50,7 @@ func Int64P(val string) (*int64, error) { } // Int32P parses the given string representation of an integer -// and returns a pointer to a int32 whose value is same as the parsed integer. +// and returns a pointer to an int32 whose value is same as the parsed integer. func Int32P(val string) (*int32, error) { i, err := Int32(val) if err != nil { diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/query.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/query.go index d01933c4fd20..0a1ca7e06fe9 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/query.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/query.go @@ -51,11 +51,13 @@ func (*DefaultQueryParser) Parse(msg proto.Message, values url.Values, filter *u key = match[1] values = append([]string{match[2]}, values...) } - fieldPath := strings.Split(key, ".") + + msgValue := msg.ProtoReflect() + fieldPath := normalizeFieldPath(msgValue, strings.Split(key, ".")) if filter.HasCommonPrefix(fieldPath) { continue } - if err := populateFieldValueFromPath(msg.ProtoReflect(), fieldPath, values); err != nil { + if err := populateFieldValueFromPath(msgValue, fieldPath, values); err != nil { return err } } @@ -68,6 +70,38 @@ func PopulateFieldFromPath(msg proto.Message, fieldPathString string, value stri return populateFieldValueFromPath(msg.ProtoReflect(), fieldPath, []string{value}) } +func normalizeFieldPath(msgValue protoreflect.Message, fieldPath []string) []string { + newFieldPath := make([]string, 0, len(fieldPath)) + for i, fieldName := range fieldPath { + fields := msgValue.Descriptor().Fields() + fieldDesc := fields.ByTextName(fieldName) + if fieldDesc == nil { + fieldDesc = fields.ByJSONName(fieldName) + } + if fieldDesc == nil { + // return initial field path values if no matching message field was found + return fieldPath + } + + newFieldPath = append(newFieldPath, string(fieldDesc.Name())) + + // If this is the last element, we're done + if i == len(fieldPath)-1 { + break + } + + // Only singular message fields are allowed + if fieldDesc.Message() == nil || fieldDesc.Cardinality() == protoreflect.Repeated { + return fieldPath + } + + // Get the nested message + msgValue = msgValue.Get(fieldDesc).Message() + } + + return newFieldPath +} + func populateFieldValueFromPath(msgValue protoreflect.Message, fieldPath []string, values []string) error { if len(fieldPath) < 1 { return errors.New("no field path") @@ -107,7 +141,7 @@ func populateFieldValueFromPath(msgValue protoreflect.Message, fieldPath []strin } // Check if oneof already set - if of := fieldDescriptor.ContainingOneof(); of != nil { + if of := fieldDescriptor.ContainingOneof(); of != nil && !of.IsSynthetic() { if f := msgValue.WhichOneof(of); f != nil { return fmt.Errorf("field already set for oneof %q", of.FullName().Name()) } @@ -257,7 +291,11 @@ func parseMessage(msgDescriptor protoreflect.MessageDescriptor, value string) (p if err != nil { return protoreflect.Value{}, err } - msg = timestamppb.New(t) + timestamp := timestamppb.New(t) + if ok := timestamp.IsValid(); !ok { + return protoreflect.Value{}, fmt.Errorf("%s before 0001-01-01", value) + } + msg = timestamp case "google.protobuf.Duration": d, err := time.ParseDuration(value) if err != nil { diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/pattern.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/pattern.go index dfe7de4864ab..38ca39cc5380 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/pattern.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/pattern.go @@ -1,6 +1,6 @@ package utilities -// An OpCode is a opcode of compiled path patterns. +// OpCode is an opcode of compiled path patterns. type OpCode int // These constants are the valid values of OpCode. diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.go index d224ab776c0c..66aa5f2dcc57 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.go @@ -5,7 +5,7 @@ import ( "strings" ) -// flagInterface is an cut down interface to `flag` +// flagInterface is a cut down interface to `flag` type flagInterface interface { Var(value flag.Value, name string, usage string) } diff --git a/vendor/github.com/imdario/mergo/.deepsource.toml b/vendor/github.com/imdario/mergo/.deepsource.toml deleted file mode 100644 index 8a0681af8559..000000000000 --- a/vendor/github.com/imdario/mergo/.deepsource.toml +++ /dev/null @@ -1,12 +0,0 @@ -version = 1 - -test_patterns = [ - "*_test.go" -] - -[[analyzers]] -name = "go" -enabled = true - - [analyzers.meta] - import_path = "github.com/imdario/mergo" \ No newline at end of file diff --git a/vendor/github.com/imdario/mergo/.gitignore b/vendor/github.com/imdario/mergo/.gitignore deleted file mode 100644 index 529c3412ba95..000000000000 --- a/vendor/github.com/imdario/mergo/.gitignore +++ /dev/null @@ -1,33 +0,0 @@ -#### joe made this: http://goel.io/joe - -#### go #### -# Binaries for programs and plugins -*.exe -*.dll -*.so -*.dylib - -# Test binary, build with `go test -c` -*.test - -# Output of the go coverage tool, specifically when used with LiteIDE -*.out - -# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 -.glide/ - -#### vim #### -# Swap -[._]*.s[a-v][a-z] -[._]*.sw[a-p] -[._]s[a-v][a-z] -[._]sw[a-p] - -# Session -Session.vim - -# Temporary -.netrwhist -*~ -# Auto-generated tag files -tags diff --git a/vendor/github.com/imdario/mergo/.travis.yml b/vendor/github.com/imdario/mergo/.travis.yml deleted file mode 100644 index d324c43ba4df..000000000000 --- a/vendor/github.com/imdario/mergo/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: go -arch: - - amd64 - - ppc64le -install: - - go get -t - - go get golang.org/x/tools/cmd/cover - - go get github.com/mattn/goveralls -script: - - go test -race -v ./... -after_script: - - $HOME/gopath/bin/goveralls -service=travis-ci -repotoken $COVERALLS_TOKEN diff --git a/vendor/github.com/imdario/mergo/CODE_OF_CONDUCT.md b/vendor/github.com/imdario/mergo/CODE_OF_CONDUCT.md deleted file mode 100644 index 469b44907a09..000000000000 --- a/vendor/github.com/imdario/mergo/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at i@dario.im. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/imdario/mergo/README.md b/vendor/github.com/imdario/mergo/README.md deleted file mode 100644 index aa8cbd7ce6d7..000000000000 --- a/vendor/github.com/imdario/mergo/README.md +++ /dev/null @@ -1,247 +0,0 @@ -# Mergo - - -[![GoDoc][3]][4] -[![GitHub release][5]][6] -[![GoCard][7]][8] -[![Build Status][1]][2] -[![Coverage Status][9]][10] -[![Sourcegraph][11]][12] -[![FOSSA Status][13]][14] - -[![GoCenter Kudos][15]][16] - -[1]: https://travis-ci.org/imdario/mergo.png -[2]: https://travis-ci.org/imdario/mergo -[3]: https://godoc.org/github.com/imdario/mergo?status.svg -[4]: https://godoc.org/github.com/imdario/mergo -[5]: https://img.shields.io/github/release/imdario/mergo.svg -[6]: https://github.com/imdario/mergo/releases -[7]: https://goreportcard.com/badge/imdario/mergo -[8]: https://goreportcard.com/report/github.com/imdario/mergo -[9]: https://coveralls.io/repos/github/imdario/mergo/badge.svg?branch=master -[10]: https://coveralls.io/github/imdario/mergo?branch=master -[11]: https://sourcegraph.com/github.com/imdario/mergo/-/badge.svg -[12]: https://sourcegraph.com/github.com/imdario/mergo?badge -[13]: https://app.fossa.io/api/projects/git%2Bgithub.com%2Fimdario%2Fmergo.svg?type=shield -[14]: https://app.fossa.io/projects/git%2Bgithub.com%2Fimdario%2Fmergo?ref=badge_shield -[15]: https://search.gocenter.io/api/ui/badge/github.com%2Fimdario%2Fmergo -[16]: https://search.gocenter.io/github.com/imdario/mergo - -A helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements. - -Mergo merges same-type structs and maps by setting default values in zero-value fields. Mergo won't merge unexported (private) fields. It will do recursively any exported one. It also won't merge structs inside maps (because they are not addressable using Go reflection). - -Also a lovely [comune](http://en.wikipedia.org/wiki/Mergo) (municipality) in the Province of Ancona in the Italian region of Marche. - -## Status - -It is ready for production use. [It is used in several projects by Docker, Google, The Linux Foundation, VMWare, Shopify, etc](https://github.com/imdario/mergo#mergo-in-the-wild). - -### Important note - -Please keep in mind that a problematic PR broke [0.3.9](//github.com/imdario/mergo/releases/tag/0.3.9). I reverted it in [0.3.10](//github.com/imdario/mergo/releases/tag/0.3.10), and I consider it stable but not bug-free. Also, this version adds suppot for go modules. - -Keep in mind that in [0.3.2](//github.com/imdario/mergo/releases/tag/0.3.2), Mergo changed `Merge()`and `Map()` signatures to support [transformers](#transformers). I added an optional/variadic argument so that it won't break the existing code. - -If you were using Mergo before April 6th, 2015, please check your project works as intended after updating your local copy with ```go get -u github.com/imdario/mergo```. I apologize for any issue caused by its previous behavior and any future bug that Mergo could cause in existing projects after the change (release 0.2.0). - -### Donations - -If Mergo is useful to you, consider buying me a coffee, a beer, or making a monthly donation to allow me to keep building great free software. :heart_eyes: - -Buy Me a Coffee at ko-fi.com -[![Beerpay](https://beerpay.io/imdario/mergo/badge.svg)](https://beerpay.io/imdario/mergo) -[![Beerpay](https://beerpay.io/imdario/mergo/make-wish.svg)](https://beerpay.io/imdario/mergo) -Donate using Liberapay - -### Mergo in the wild - -- [moby/moby](https://github.com/moby/moby) -- [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) -- [vmware/dispatch](https://github.com/vmware/dispatch) -- [Shopify/themekit](https://github.com/Shopify/themekit) -- [imdario/zas](https://github.com/imdario/zas) -- [matcornic/hermes](https://github.com/matcornic/hermes) -- [OpenBazaar/openbazaar-go](https://github.com/OpenBazaar/openbazaar-go) -- [kataras/iris](https://github.com/kataras/iris) -- [michaelsauter/crane](https://github.com/michaelsauter/crane) -- [go-task/task](https://github.com/go-task/task) -- [sensu/uchiwa](https://github.com/sensu/uchiwa) -- [ory/hydra](https://github.com/ory/hydra) -- [sisatech/vcli](https://github.com/sisatech/vcli) -- [dairycart/dairycart](https://github.com/dairycart/dairycart) -- [projectcalico/felix](https://github.com/projectcalico/felix) -- [resin-os/balena](https://github.com/resin-os/balena) -- [go-kivik/kivik](https://github.com/go-kivik/kivik) -- [Telefonica/govice](https://github.com/Telefonica/govice) -- [supergiant/supergiant](supergiant/supergiant) -- [SergeyTsalkov/brooce](https://github.com/SergeyTsalkov/brooce) -- [soniah/dnsmadeeasy](https://github.com/soniah/dnsmadeeasy) -- [ohsu-comp-bio/funnel](https://github.com/ohsu-comp-bio/funnel) -- [EagerIO/Stout](https://github.com/EagerIO/Stout) -- [lynndylanhurley/defsynth-api](https://github.com/lynndylanhurley/defsynth-api) -- [russross/canvasassignments](https://github.com/russross/canvasassignments) -- [rdegges/cryptly-api](https://github.com/rdegges/cryptly-api) -- [casualjim/exeggutor](https://github.com/casualjim/exeggutor) -- [divshot/gitling](https://github.com/divshot/gitling) -- [RWJMurphy/gorl](https://github.com/RWJMurphy/gorl) -- [andrerocker/deploy42](https://github.com/andrerocker/deploy42) -- [elwinar/rambler](https://github.com/elwinar/rambler) -- [tmaiaroto/gopartman](https://github.com/tmaiaroto/gopartman) -- [jfbus/impressionist](https://github.com/jfbus/impressionist) -- [Jmeyering/zealot](https://github.com/Jmeyering/zealot) -- [godep-migrator/rigger-host](https://github.com/godep-migrator/rigger-host) -- [Dronevery/MultiwaySwitch-Go](https://github.com/Dronevery/MultiwaySwitch-Go) -- [thoas/picfit](https://github.com/thoas/picfit) -- [mantasmatelis/whooplist-server](https://github.com/mantasmatelis/whooplist-server) -- [jnuthong/item_search](https://github.com/jnuthong/item_search) -- [bukalapak/snowboard](https://github.com/bukalapak/snowboard) -- [containerssh/containerssh](https://github.com/containerssh/containerssh) - -## Install - - go get github.com/imdario/mergo - - // use in your .go code - import ( - "github.com/imdario/mergo" - ) - -## Usage - -You can only merge same-type structs with exported fields initialized as zero value of their type and same-types maps. Mergo won't merge unexported (private) fields but will do recursively any exported one. It won't merge empty structs value as [they are zero values](https://golang.org/ref/spec#The_zero_value) too. Also, maps will be merged recursively except for structs inside maps (because they are not addressable using Go reflection). - -```go -if err := mergo.Merge(&dst, src); err != nil { - // ... -} -``` - -Also, you can merge overwriting values using the transformer `WithOverride`. - -```go -if err := mergo.Merge(&dst, src, mergo.WithOverride); err != nil { - // ... -} -``` - -Additionally, you can map a `map[string]interface{}` to a struct (and otherwise, from struct to map), following the same restrictions as in `Merge()`. Keys are capitalized to find each corresponding exported field. - -```go -if err := mergo.Map(&dst, srcMap); err != nil { - // ... -} -``` - -Warning: if you map a struct to map, it won't do it recursively. Don't expect Mergo to map struct members of your struct as `map[string]interface{}`. They will be just assigned as values. - -Here is a nice example: - -```go -package main - -import ( - "fmt" - "github.com/imdario/mergo" -) - -type Foo struct { - A string - B int64 -} - -func main() { - src := Foo{ - A: "one", - B: 2, - } - dest := Foo{ - A: "two", - } - mergo.Merge(&dest, src) - fmt.Println(dest) - // Will print - // {two 2} -} -``` - -Note: if test are failing due missing package, please execute: - - go get gopkg.in/yaml.v2 - -### Transformers - -Transformers allow to merge specific types differently than in the default behavior. In other words, now you can customize how some types are merged. For example, `time.Time` is a struct; it doesn't have zero value but IsZero can return true because it has fields with zero value. How can we merge a non-zero `time.Time`? - -```go -package main - -import ( - "fmt" - "github.com/imdario/mergo" - "reflect" - "time" -) - -type timeTransformer struct { -} - -func (t timeTransformer) Transformer(typ reflect.Type) func(dst, src reflect.Value) error { - if typ == reflect.TypeOf(time.Time{}) { - return func(dst, src reflect.Value) error { - if dst.CanSet() { - isZero := dst.MethodByName("IsZero") - result := isZero.Call([]reflect.Value{}) - if result[0].Bool() { - dst.Set(src) - } - } - return nil - } - } - return nil -} - -type Snapshot struct { - Time time.Time - // ... -} - -func main() { - src := Snapshot{time.Now()} - dest := Snapshot{} - mergo.Merge(&dest, src, mergo.WithTransformers(timeTransformer{})) - fmt.Println(dest) - // Will print - // { 2018-01-12 01:15:00 +0000 UTC m=+0.000000001 } -} -``` - - -## Contact me - -If I can help you, you have an idea or you are using Mergo in your projects, don't hesitate to drop me a line (or a pull request): [@im_dario](https://twitter.com/im_dario) - -## About - -Written by [Dario Castañé](http://dario.im). - -## Top Contributors - -[![0](https://sourcerer.io/fame/imdario/imdario/mergo/images/0)](https://sourcerer.io/fame/imdario/imdario/mergo/links/0) -[![1](https://sourcerer.io/fame/imdario/imdario/mergo/images/1)](https://sourcerer.io/fame/imdario/imdario/mergo/links/1) -[![2](https://sourcerer.io/fame/imdario/imdario/mergo/images/2)](https://sourcerer.io/fame/imdario/imdario/mergo/links/2) -[![3](https://sourcerer.io/fame/imdario/imdario/mergo/images/3)](https://sourcerer.io/fame/imdario/imdario/mergo/links/3) -[![4](https://sourcerer.io/fame/imdario/imdario/mergo/images/4)](https://sourcerer.io/fame/imdario/imdario/mergo/links/4) -[![5](https://sourcerer.io/fame/imdario/imdario/mergo/images/5)](https://sourcerer.io/fame/imdario/imdario/mergo/links/5) -[![6](https://sourcerer.io/fame/imdario/imdario/mergo/images/6)](https://sourcerer.io/fame/imdario/imdario/mergo/links/6) -[![7](https://sourcerer.io/fame/imdario/imdario/mergo/images/7)](https://sourcerer.io/fame/imdario/imdario/mergo/links/7) - - -## License - -[BSD 3-Clause](http://opensource.org/licenses/BSD-3-Clause) license, as [Go language](http://golang.org/LICENSE). - - -[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fimdario%2Fmergo.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fimdario%2Fmergo?ref=badge_large) diff --git a/vendor/github.com/imdario/mergo/doc.go b/vendor/github.com/imdario/mergo/doc.go deleted file mode 100644 index fcd985f995dc..000000000000 --- a/vendor/github.com/imdario/mergo/doc.go +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2013 Dario Castañé. All rights reserved. -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -A helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements. - -Mergo merges same-type structs and maps by setting default values in zero-value fields. Mergo won't merge unexported (private) fields. It will do recursively any exported one. It also won't merge structs inside maps (because they are not addressable using Go reflection). - -Status - -It is ready for production use. It is used in several projects by Docker, Google, The Linux Foundation, VMWare, Shopify, etc. - -Important note - -Please keep in mind that a problematic PR broke 0.3.9. We reverted it in 0.3.10. We consider 0.3.10 as stable but not bug-free. . Also, this version adds suppot for go modules. - -Keep in mind that in 0.3.2, Mergo changed Merge() and Map() signatures to support transformers. We added an optional/variadic argument so that it won't break the existing code. - -If you were using Mergo before April 6th, 2015, please check your project works as intended after updating your local copy with go get -u github.com/imdario/mergo. I apologize for any issue caused by its previous behavior and any future bug that Mergo could cause in existing projects after the change (release 0.2.0). - -Install - -Do your usual installation procedure: - - go get github.com/imdario/mergo - - // use in your .go code - import ( - "github.com/imdario/mergo" - ) - -Usage - -You can only merge same-type structs with exported fields initialized as zero value of their type and same-types maps. Mergo won't merge unexported (private) fields but will do recursively any exported one. It won't merge empty structs value as they are zero values too. Also, maps will be merged recursively except for structs inside maps (because they are not addressable using Go reflection). - - if err := mergo.Merge(&dst, src); err != nil { - // ... - } - -Also, you can merge overwriting values using the transformer WithOverride. - - if err := mergo.Merge(&dst, src, mergo.WithOverride); err != nil { - // ... - } - -Additionally, you can map a map[string]interface{} to a struct (and otherwise, from struct to map), following the same restrictions as in Merge(). Keys are capitalized to find each corresponding exported field. - - if err := mergo.Map(&dst, srcMap); err != nil { - // ... - } - -Warning: if you map a struct to map, it won't do it recursively. Don't expect Mergo to map struct members of your struct as map[string]interface{}. They will be just assigned as values. - -Here is a nice example: - - package main - - import ( - "fmt" - "github.com/imdario/mergo" - ) - - type Foo struct { - A string - B int64 - } - - func main() { - src := Foo{ - A: "one", - B: 2, - } - dest := Foo{ - A: "two", - } - mergo.Merge(&dest, src) - fmt.Println(dest) - // Will print - // {two 2} - } - -Transformers - -Transformers allow to merge specific types differently than in the default behavior. In other words, now you can customize how some types are merged. For example, time.Time is a struct; it doesn't have zero value but IsZero can return true because it has fields with zero value. How can we merge a non-zero time.Time? - - package main - - import ( - "fmt" - "github.com/imdario/mergo" - "reflect" - "time" - ) - - type timeTransformer struct { - } - - func (t timeTransformer) Transformer(typ reflect.Type) func(dst, src reflect.Value) error { - if typ == reflect.TypeOf(time.Time{}) { - return func(dst, src reflect.Value) error { - if dst.CanSet() { - isZero := dst.MethodByName("IsZero") - result := isZero.Call([]reflect.Value{}) - if result[0].Bool() { - dst.Set(src) - } - } - return nil - } - } - return nil - } - - type Snapshot struct { - Time time.Time - // ... - } - - func main() { - src := Snapshot{time.Now()} - dest := Snapshot{} - mergo.Merge(&dest, src, mergo.WithTransformers(timeTransformer{})) - fmt.Println(dest) - // Will print - // { 2018-01-12 01:15:00 +0000 UTC m=+0.000000001 } - } - -Contact me - -If I can help you, you have an idea or you are using Mergo in your projects, don't hesitate to drop me a line (or a pull request): https://twitter.com/im_dario - -About - -Written by Dario Castañé: https://da.rio.hn - -License - -BSD 3-Clause license, as Go language. - -*/ -package mergo diff --git a/vendor/github.com/imdario/mergo/map.go b/vendor/github.com/imdario/mergo/map.go deleted file mode 100644 index a13a7ee46c77..000000000000 --- a/vendor/github.com/imdario/mergo/map.go +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright 2014 Dario Castañé. All rights reserved. -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Based on src/pkg/reflect/deepequal.go from official -// golang's stdlib. - -package mergo - -import ( - "fmt" - "reflect" - "unicode" - "unicode/utf8" -) - -func changeInitialCase(s string, mapper func(rune) rune) string { - if s == "" { - return s - } - r, n := utf8.DecodeRuneInString(s) - return string(mapper(r)) + s[n:] -} - -func isExported(field reflect.StructField) bool { - r, _ := utf8.DecodeRuneInString(field.Name) - return r >= 'A' && r <= 'Z' -} - -// Traverses recursively both values, assigning src's fields values to dst. -// The map argument tracks comparisons that have already been seen, which allows -// short circuiting on recursive types. -func deepMap(dst, src reflect.Value, visited map[uintptr]*visit, depth int, config *Config) (err error) { - overwrite := config.Overwrite - if dst.CanAddr() { - addr := dst.UnsafeAddr() - h := 17 * addr - seen := visited[h] - typ := dst.Type() - for p := seen; p != nil; p = p.next { - if p.ptr == addr && p.typ == typ { - return nil - } - } - // Remember, remember... - visited[h] = &visit{addr, typ, seen} - } - zeroValue := reflect.Value{} - switch dst.Kind() { - case reflect.Map: - dstMap := dst.Interface().(map[string]interface{}) - for i, n := 0, src.NumField(); i < n; i++ { - srcType := src.Type() - field := srcType.Field(i) - if !isExported(field) { - continue - } - fieldName := field.Name - fieldName = changeInitialCase(fieldName, unicode.ToLower) - if v, ok := dstMap[fieldName]; !ok || (isEmptyValue(reflect.ValueOf(v)) || overwrite) { - dstMap[fieldName] = src.Field(i).Interface() - } - } - case reflect.Ptr: - if dst.IsNil() { - v := reflect.New(dst.Type().Elem()) - dst.Set(v) - } - dst = dst.Elem() - fallthrough - case reflect.Struct: - srcMap := src.Interface().(map[string]interface{}) - for key := range srcMap { - config.overwriteWithEmptyValue = true - srcValue := srcMap[key] - fieldName := changeInitialCase(key, unicode.ToUpper) - dstElement := dst.FieldByName(fieldName) - if dstElement == zeroValue { - // We discard it because the field doesn't exist. - continue - } - srcElement := reflect.ValueOf(srcValue) - dstKind := dstElement.Kind() - srcKind := srcElement.Kind() - if srcKind == reflect.Ptr && dstKind != reflect.Ptr { - srcElement = srcElement.Elem() - srcKind = reflect.TypeOf(srcElement.Interface()).Kind() - } else if dstKind == reflect.Ptr { - // Can this work? I guess it can't. - if srcKind != reflect.Ptr && srcElement.CanAddr() { - srcPtr := srcElement.Addr() - srcElement = reflect.ValueOf(srcPtr) - srcKind = reflect.Ptr - } - } - - if !srcElement.IsValid() { - continue - } - if srcKind == dstKind { - if err = deepMerge(dstElement, srcElement, visited, depth+1, config); err != nil { - return - } - } else if dstKind == reflect.Interface && dstElement.Kind() == reflect.Interface { - if err = deepMerge(dstElement, srcElement, visited, depth+1, config); err != nil { - return - } - } else if srcKind == reflect.Map { - if err = deepMap(dstElement, srcElement, visited, depth+1, config); err != nil { - return - } - } else { - return fmt.Errorf("type mismatch on %s field: found %v, expected %v", fieldName, srcKind, dstKind) - } - } - } - return -} - -// Map sets fields' values in dst from src. -// src can be a map with string keys or a struct. dst must be the opposite: -// if src is a map, dst must be a valid pointer to struct. If src is a struct, -// dst must be map[string]interface{}. -// It won't merge unexported (private) fields and will do recursively -// any exported field. -// If dst is a map, keys will be src fields' names in lower camel case. -// Missing key in src that doesn't match a field in dst will be skipped. This -// doesn't apply if dst is a map. -// This is separated method from Merge because it is cleaner and it keeps sane -// semantics: merging equal types, mapping different (restricted) types. -func Map(dst, src interface{}, opts ...func(*Config)) error { - return _map(dst, src, opts...) -} - -// MapWithOverwrite will do the same as Map except that non-empty dst attributes will be overridden by -// non-empty src attribute values. -// Deprecated: Use Map(…) with WithOverride -func MapWithOverwrite(dst, src interface{}, opts ...func(*Config)) error { - return _map(dst, src, append(opts, WithOverride)...) -} - -func _map(dst, src interface{}, opts ...func(*Config)) error { - if dst != nil && reflect.ValueOf(dst).Kind() != reflect.Ptr { - return ErrNonPointerAgument - } - var ( - vDst, vSrc reflect.Value - err error - ) - config := &Config{} - - for _, opt := range opts { - opt(config) - } - - if vDst, vSrc, err = resolveValues(dst, src); err != nil { - return err - } - // To be friction-less, we redirect equal-type arguments - // to deepMerge. Only because arguments can be anything. - if vSrc.Kind() == vDst.Kind() { - return deepMerge(vDst, vSrc, make(map[uintptr]*visit), 0, config) - } - switch vSrc.Kind() { - case reflect.Struct: - if vDst.Kind() != reflect.Map { - return ErrExpectedMapAsDestination - } - case reflect.Map: - if vDst.Kind() != reflect.Struct { - return ErrExpectedStructAsDestination - } - default: - return ErrNotSupported - } - return deepMap(vDst, vSrc, make(map[uintptr]*visit), 0, config) -} diff --git a/vendor/github.com/imdario/mergo/merge.go b/vendor/github.com/imdario/mergo/merge.go deleted file mode 100644 index 8c2a8fcd9019..000000000000 --- a/vendor/github.com/imdario/mergo/merge.go +++ /dev/null @@ -1,380 +0,0 @@ -// Copyright 2013 Dario Castañé. All rights reserved. -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Based on src/pkg/reflect/deepequal.go from official -// golang's stdlib. - -package mergo - -import ( - "fmt" - "reflect" -) - -func hasMergeableFields(dst reflect.Value) (exported bool) { - for i, n := 0, dst.NumField(); i < n; i++ { - field := dst.Type().Field(i) - if field.Anonymous && dst.Field(i).Kind() == reflect.Struct { - exported = exported || hasMergeableFields(dst.Field(i)) - } else if isExportedComponent(&field) { - exported = exported || len(field.PkgPath) == 0 - } - } - return -} - -func isExportedComponent(field *reflect.StructField) bool { - pkgPath := field.PkgPath - if len(pkgPath) > 0 { - return false - } - c := field.Name[0] - if 'a' <= c && c <= 'z' || c == '_' { - return false - } - return true -} - -type Config struct { - Overwrite bool - AppendSlice bool - TypeCheck bool - Transformers Transformers - overwriteWithEmptyValue bool - overwriteSliceWithEmptyValue bool - sliceDeepCopy bool - debug bool -} - -type Transformers interface { - Transformer(reflect.Type) func(dst, src reflect.Value) error -} - -// Traverses recursively both values, assigning src's fields values to dst. -// The map argument tracks comparisons that have already been seen, which allows -// short circuiting on recursive types. -func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, config *Config) (err error) { - overwrite := config.Overwrite - typeCheck := config.TypeCheck - overwriteWithEmptySrc := config.overwriteWithEmptyValue - overwriteSliceWithEmptySrc := config.overwriteSliceWithEmptyValue - sliceDeepCopy := config.sliceDeepCopy - - if !src.IsValid() { - return - } - if dst.CanAddr() { - addr := dst.UnsafeAddr() - h := 17 * addr - seen := visited[h] - typ := dst.Type() - for p := seen; p != nil; p = p.next { - if p.ptr == addr && p.typ == typ { - return nil - } - } - // Remember, remember... - visited[h] = &visit{addr, typ, seen} - } - - if config.Transformers != nil && !isEmptyValue(dst) { - if fn := config.Transformers.Transformer(dst.Type()); fn != nil { - err = fn(dst, src) - return - } - } - - switch dst.Kind() { - case reflect.Struct: - if hasMergeableFields(dst) { - for i, n := 0, dst.NumField(); i < n; i++ { - if err = deepMerge(dst.Field(i), src.Field(i), visited, depth+1, config); err != nil { - return - } - } - } else { - if dst.CanSet() && (isReflectNil(dst) || overwrite) && (!isEmptyValue(src) || overwriteWithEmptySrc) { - dst.Set(src) - } - } - case reflect.Map: - if dst.IsNil() && !src.IsNil() { - if dst.CanSet() { - dst.Set(reflect.MakeMap(dst.Type())) - } else { - dst = src - return - } - } - - if src.Kind() != reflect.Map { - if overwrite { - dst.Set(src) - } - return - } - - for _, key := range src.MapKeys() { - srcElement := src.MapIndex(key) - if !srcElement.IsValid() { - continue - } - dstElement := dst.MapIndex(key) - switch srcElement.Kind() { - case reflect.Chan, reflect.Func, reflect.Map, reflect.Interface, reflect.Slice: - if srcElement.IsNil() { - if overwrite { - dst.SetMapIndex(key, srcElement) - } - continue - } - fallthrough - default: - if !srcElement.CanInterface() { - continue - } - switch reflect.TypeOf(srcElement.Interface()).Kind() { - case reflect.Struct: - fallthrough - case reflect.Ptr: - fallthrough - case reflect.Map: - srcMapElm := srcElement - dstMapElm := dstElement - if srcMapElm.CanInterface() { - srcMapElm = reflect.ValueOf(srcMapElm.Interface()) - if dstMapElm.IsValid() { - dstMapElm = reflect.ValueOf(dstMapElm.Interface()) - } - } - if err = deepMerge(dstMapElm, srcMapElm, visited, depth+1, config); err != nil { - return - } - case reflect.Slice: - srcSlice := reflect.ValueOf(srcElement.Interface()) - - var dstSlice reflect.Value - if !dstElement.IsValid() || dstElement.IsNil() { - dstSlice = reflect.MakeSlice(srcSlice.Type(), 0, srcSlice.Len()) - } else { - dstSlice = reflect.ValueOf(dstElement.Interface()) - } - - if (!isEmptyValue(src) || overwriteWithEmptySrc || overwriteSliceWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice && !sliceDeepCopy { - if typeCheck && srcSlice.Type() != dstSlice.Type() { - return fmt.Errorf("cannot override two slices with different type (%s, %s)", srcSlice.Type(), dstSlice.Type()) - } - dstSlice = srcSlice - } else if config.AppendSlice { - if srcSlice.Type() != dstSlice.Type() { - return fmt.Errorf("cannot append two slices with different type (%s, %s)", srcSlice.Type(), dstSlice.Type()) - } - dstSlice = reflect.AppendSlice(dstSlice, srcSlice) - } else if sliceDeepCopy { - i := 0 - for ; i < srcSlice.Len() && i < dstSlice.Len(); i++ { - srcElement := srcSlice.Index(i) - dstElement := dstSlice.Index(i) - - if srcElement.CanInterface() { - srcElement = reflect.ValueOf(srcElement.Interface()) - } - if dstElement.CanInterface() { - dstElement = reflect.ValueOf(dstElement.Interface()) - } - - if err = deepMerge(dstElement, srcElement, visited, depth+1, config); err != nil { - return - } - } - - } - dst.SetMapIndex(key, dstSlice) - } - } - if dstElement.IsValid() && !isEmptyValue(dstElement) && (reflect.TypeOf(srcElement.Interface()).Kind() == reflect.Map || reflect.TypeOf(srcElement.Interface()).Kind() == reflect.Slice) { - continue - } - - if srcElement.IsValid() && ((srcElement.Kind() != reflect.Ptr && overwrite) || !dstElement.IsValid() || isEmptyValue(dstElement)) { - if dst.IsNil() { - dst.Set(reflect.MakeMap(dst.Type())) - } - dst.SetMapIndex(key, srcElement) - } - } - case reflect.Slice: - if !dst.CanSet() { - break - } - if (!isEmptyValue(src) || overwriteWithEmptySrc || overwriteSliceWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice && !sliceDeepCopy { - dst.Set(src) - } else if config.AppendSlice { - if src.Type() != dst.Type() { - return fmt.Errorf("cannot append two slice with different type (%s, %s)", src.Type(), dst.Type()) - } - dst.Set(reflect.AppendSlice(dst, src)) - } else if sliceDeepCopy { - for i := 0; i < src.Len() && i < dst.Len(); i++ { - srcElement := src.Index(i) - dstElement := dst.Index(i) - if srcElement.CanInterface() { - srcElement = reflect.ValueOf(srcElement.Interface()) - } - if dstElement.CanInterface() { - dstElement = reflect.ValueOf(dstElement.Interface()) - } - - if err = deepMerge(dstElement, srcElement, visited, depth+1, config); err != nil { - return - } - } - } - case reflect.Ptr: - fallthrough - case reflect.Interface: - if isReflectNil(src) { - if overwriteWithEmptySrc && dst.CanSet() && src.Type().AssignableTo(dst.Type()) { - dst.Set(src) - } - break - } - - if src.Kind() != reflect.Interface { - if dst.IsNil() || (src.Kind() != reflect.Ptr && overwrite) { - if dst.CanSet() && (overwrite || isEmptyValue(dst)) { - dst.Set(src) - } - } else if src.Kind() == reflect.Ptr { - if err = deepMerge(dst.Elem(), src.Elem(), visited, depth+1, config); err != nil { - return - } - } else if dst.Elem().Type() == src.Type() { - if err = deepMerge(dst.Elem(), src, visited, depth+1, config); err != nil { - return - } - } else { - return ErrDifferentArgumentsTypes - } - break - } - - if dst.IsNil() || overwrite { - if dst.CanSet() && (overwrite || isEmptyValue(dst)) { - dst.Set(src) - } - break - } - - if dst.Elem().Kind() == src.Elem().Kind() { - if err = deepMerge(dst.Elem(), src.Elem(), visited, depth+1, config); err != nil { - return - } - break - } - default: - mustSet := (isEmptyValue(dst) || overwrite) && (!isEmptyValue(src) || overwriteWithEmptySrc) - if mustSet { - if dst.CanSet() { - dst.Set(src) - } else { - dst = src - } - } - } - - return -} - -// Merge will fill any empty for value type attributes on the dst struct using corresponding -// src attributes if they themselves are not empty. dst and src must be valid same-type structs -// and dst must be a pointer to struct. -// It won't merge unexported (private) fields and will do recursively any exported field. -func Merge(dst, src interface{}, opts ...func(*Config)) error { - return merge(dst, src, opts...) -} - -// MergeWithOverwrite will do the same as Merge except that non-empty dst attributes will be overridden by -// non-empty src attribute values. -// Deprecated: use Merge(…) with WithOverride -func MergeWithOverwrite(dst, src interface{}, opts ...func(*Config)) error { - return merge(dst, src, append(opts, WithOverride)...) -} - -// WithTransformers adds transformers to merge, allowing to customize the merging of some types. -func WithTransformers(transformers Transformers) func(*Config) { - return func(config *Config) { - config.Transformers = transformers - } -} - -// WithOverride will make merge override non-empty dst attributes with non-empty src attributes values. -func WithOverride(config *Config) { - config.Overwrite = true -} - -// WithOverwriteWithEmptyValue will make merge override non empty dst attributes with empty src attributes values. -func WithOverwriteWithEmptyValue(config *Config) { - config.Overwrite = true - config.overwriteWithEmptyValue = true -} - -// WithOverrideEmptySlice will make merge override empty dst slice with empty src slice. -func WithOverrideEmptySlice(config *Config) { - config.overwriteSliceWithEmptyValue = true -} - -// WithAppendSlice will make merge append slices instead of overwriting it. -func WithAppendSlice(config *Config) { - config.AppendSlice = true -} - -// WithTypeCheck will make merge check types while overwriting it (must be used with WithOverride). -func WithTypeCheck(config *Config) { - config.TypeCheck = true -} - -// WithSliceDeepCopy will merge slice element one by one with Overwrite flag. -func WithSliceDeepCopy(config *Config) { - config.sliceDeepCopy = true - config.Overwrite = true -} - -func merge(dst, src interface{}, opts ...func(*Config)) error { - if dst != nil && reflect.ValueOf(dst).Kind() != reflect.Ptr { - return ErrNonPointerAgument - } - var ( - vDst, vSrc reflect.Value - err error - ) - - config := &Config{} - - for _, opt := range opts { - opt(config) - } - - if vDst, vSrc, err = resolveValues(dst, src); err != nil { - return err - } - if vDst.Type() != vSrc.Type() { - return ErrDifferentArgumentsTypes - } - return deepMerge(vDst, vSrc, make(map[uintptr]*visit), 0, config) -} - -// IsReflectNil is the reflect value provided nil -func isReflectNil(v reflect.Value) bool { - k := v.Kind() - switch k { - case reflect.Interface, reflect.Slice, reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr: - // Both interface and slice are nil if first word is 0. - // Both are always bigger than a word; assume flagIndir. - return v.IsNil() - default: - return false - } -} diff --git a/vendor/github.com/imdario/mergo/mergo.go b/vendor/github.com/imdario/mergo/mergo.go deleted file mode 100644 index 3cc926c7f624..000000000000 --- a/vendor/github.com/imdario/mergo/mergo.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2013 Dario Castañé. All rights reserved. -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Based on src/pkg/reflect/deepequal.go from official -// golang's stdlib. - -package mergo - -import ( - "errors" - "reflect" -) - -// Errors reported by Mergo when it finds invalid arguments. -var ( - ErrNilArguments = errors.New("src and dst must not be nil") - ErrDifferentArgumentsTypes = errors.New("src and dst must be of same type") - ErrNotSupported = errors.New("only structs and maps are supported") - ErrExpectedMapAsDestination = errors.New("dst was expected to be a map") - ErrExpectedStructAsDestination = errors.New("dst was expected to be a struct") - ErrNonPointerAgument = errors.New("dst must be a pointer") -) - -// During deepMerge, must keep track of checks that are -// in progress. The comparison algorithm assumes that all -// checks in progress are true when it reencounters them. -// Visited are stored in a map indexed by 17 * a1 + a2; -type visit struct { - ptr uintptr - typ reflect.Type - next *visit -} - -// From src/pkg/encoding/json/encode.go. -func isEmptyValue(v reflect.Value) bool { - switch v.Kind() { - case reflect.Array, reflect.Map, reflect.Slice, reflect.String: - return v.Len() == 0 - case reflect.Bool: - return !v.Bool() - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.Interface, reflect.Ptr: - if v.IsNil() { - return true - } - return isEmptyValue(v.Elem()) - case reflect.Func: - return v.IsNil() - case reflect.Invalid: - return true - } - return false -} - -func resolveValues(dst, src interface{}) (vDst, vSrc reflect.Value, err error) { - if dst == nil || src == nil { - err = ErrNilArguments - return - } - vDst = reflect.ValueOf(dst).Elem() - if vDst.Kind() != reflect.Struct && vDst.Kind() != reflect.Map { - err = ErrNotSupported - return - } - vSrc = reflect.ValueOf(src) - // We check if vSrc is a pointer to dereference it. - if vSrc.Kind() == reflect.Ptr { - vSrc = vSrc.Elem() - } - return -} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/CHANGELOG.md b/vendor/github.com/influxdata/influxdb-client-go/v2/CHANGELOG.md index 3bd2a8186f8a..f627c881cab2 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/CHANGELOG.md +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/CHANGELOG.md @@ -1,205 +1,395 @@ +## 2.14.0 [2024-08-12] + +### Features + +- [#404](https://github.com/influxdata/influxdb-client-go/pull/404) Expose HTTP response headers in the Error type to aid analysis and debugging of error results. Add selected response headers to the error log. + + Also, unified errors returned by WriteAPI, which now always returns `http.Error` + +### Fixes +- [#403](https://github.com/influxdata/influxdb-client-go/pull/403) Custom checks de/serialization to allow calling server Check API + +## 2.13.0 [2023-12-05] + +### Features + +- [#394](https://github.com/influxdata/influxdb-client-go/pull/394) Add `DataToPoint` utility to convert a struct to a `write.Point` + +### Dependencies + +- [#393](https://github.com/influxdata/influxdb-client-go/pull/393) Replace deprecated `io/ioutil` +- [#392](https://github.com/influxdata/influxdb-client-go/pull/392) Upgrade `deepmap/oapi-codegen` to new major version + +## 2.12.4 [2023-11-03] + +### Bug fixes + +- [#386](https://github.com/influxdata/influxdb-client-go/pull/386) Remove deprecated pkg/errors +- [#387](https://github.com/influxdata/influxdb-client-go/pull/387) Upgrade `deepmap/oapi-codegen` + +## 2.12.3 [2023-03-29] + +### Bug fixes + +- Update golang.org/x/net from 0.0.0-20210119194325-5f4716e94777 to 0.7.0 + +## 2.12.2 [2023-01-26] + +### Bug fixes + +- [#368](https://github.com/influxdata/influxdb-client-go/pull/368) Allowing proxy from environment variable + +## 2.12.1 [2022-12-01] + +### Bug fixes + +- [#363](https://github.com/influxdata/influxdb-client-go/pull/363) Generated server stubs return also error message from InfluxDB 1.x forward compatible API. +- [#364](https://github.com/influxdata/influxdb-client-go/pull/364) Fixed panic when retrying over a long period without a server connection. + +### Documentation + +- [#366](https://github.com/influxdata/influxdb-client-go/pull/366) Readme improvements: + - Added GOPATH installation description + - Added error handling to Basic Example. + +## 2.12.0 [2022-10-27] + +### Features + +- [#358](https://github.com/influxdata/influxdb-client-go/pull/358): + - Added possibility to set an application name, which will be part of the User-Agent HTTP header: + - Set using `Options.SetApplicationName` + - Warning message is written to log if an application name is not set + - This may change to be logged as an error in a future release + - Added example how to fully override `User-Agent` header using `Doer` interface + +### Bug fixes + +- [#359](https://github.com/influxdata/influxdb-client-go/pull/359) `WriteAPIBlocking.Flush()` correctly returns nil error. + +## 2.11.0 [2022-09-29] + +### Features + +- [#353](https://github.com/influxdata/influxdb-client-go/pull/353) Simplify generated code. +- [#353](https://github.com/influxdata/influxdb-client-go/pull/353) Regenerate code from swagger. +- [#355](https://github.com/influxdata/influxdb-client-go/pull/355) Upgrade of lib gopkg.in/yaml from v2 to v3 + +### Bug fixes + +- [#354](https://github.com/influxdata/influxdb-client-go/pull/354) More efficient synchronization in WriteAPIBlocking. + +### Breaking change + +- [#353](https://github.com/influxdata/influxdb-client-go/pull/353): + - Interface `Client` has been extended with `APIClient()` function. + - The generated client API changed: + - Function names are simplified (was `PostDBRPWithResponse`, now `PostDBRP`) + - All functions now accept a context and a single wrapper structure with request body and HTTP parameters + - The functions return deserialized response body or an error (it was a response wrapper with a status code that had to be then validated) + +## 2.10.0 [2022-08-25] + +### Features + +- [#348](https://github.com/influxdata/influxdb-client-go/pull/348) Added `write.Options.Consitency` parameter to support InfluxDB Enterprise. +- [#350](https://github.com/influxdata/influxdb-client-go/pull/350) Added support for implicit batching to `WriteAPIBlocking`. It's off by default, enabled by `EnableBatching()`. + +### Bug fixes + +- [#349](https://github.com/influxdata/influxdb-client-go/pull/349) Skip retrying on specific write errors (mostly partial write error). + +### Breaking change + +- [#350](https://github.com/influxdata/influxdb-client-go/pull/350) Interface `WriteAPIBlocking` is extend with `EnableBatching()` and `Flush()`. + +## 2.9.2 [2022-07-29] + +### Bug fixes + +- [#341](https://github.com/influxdata/influxdb-client-go/pull/341) Changing logging level of messages about discarding batch to Error. +- [#344](https://github.com/influxdata/influxdb-client-go/pull/344) `WriteAPI.Flush()` writes also batches from the retry queue. + +### Test + +- [#345](https://github.com/influxdata/influxdb-client-go/pul/345) Added makefile for simplifying testing from command line. + +## 2.9.1 [2022-06-24] + +### Bug fixes + +- [#332](https://github.com/influxdata/influxdb-client-go/pull/332) Retry strategy drops expired batches as soon as they expire. +- [#335](https://github.com/influxdata/influxdb-client-go/pull/335) Retry strategy keeps max retry delay for new batches. + ## 2.9.0 [2022-05-20] + ### Features + - [#323](https://github.com/influxdata/influxdb-client-go/pull/323) Added `TasksAPI.CreateTaskByFlux` to allow full control of task script. - [#328](https://github.com/influxdata/influxdb-client-go/pull/328) Added `Client.SetupWithToken` allowing to specify a custom token. ### Bug fixes -- [#324](https://github.com/influxdata/influxdb-client-go/issues/324) Non-empty error channel will not block writes + +- [#324](https://github.com/influxdata/influxdb-client-go/pull/324) Non-empty error channel will not block writes ## 2.8.2 [2022-04-19] + ### Bug fixes + - [#319](https://github.com/influxdata/influxdb-client-go/pull/319) Synchronize `WriteAPIImpl.Close` to prevent panic when closing client by multiple go-routines. ## 2.8.1 [2022-03-21] + ### Bug fixes + - [#311](https://github.com/influxdata/influxdb-client-go/pull/311) Correctly unwrapping http.Error from Server API calls - [#315](https://github.com/influxdata/influxdb-client-go/pull/315) Masking authorization token in log ## 2.8.0 [2022-02-18] + ### Features + - [#304](https://github.com/influxdata/influxdb-client-go/pull/304) Added public constructor for `QueryTableResult` -- [#307](https://github.com/influxdata/influxdb-client-go/pull/307) Synced generated server API with the latest [oss.yml](https://github.com/influxdata/openapi/blob/master/contracts/oss.yml). +- [#307](https://github.com/influxdata/influxdb-client-go/pull/307) Synced generated server API with the latest [oss.yml](https://github.com/influxdata/openapi/blob/master/contracts/oss.yml). - [#308](https://github.com/influxdata/influxdb-client-go/pull/308) Added Flux query parameters. Supported by InfluxDB Cloud only now. - [#308](https://github.com/influxdata/influxdb-client-go/pull/308) Go 1.17 is required ## 2.7.0[2022-01-20] -### Features -- [#297](https://github.com/influxdata/influxdb-client-go/pull/297),[#298](https://github.com/influxdata/influxdb-client-go/pull/298) Optimized `WriteRecord` of [WriteAPIBlocking](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPIBlocking). Custom batch can be written by single argument. + +### Features + +- [#297](https://github.com/influxdata/influxdb-client-go/pull/297),[#298](https://github.com/influxdata/influxdb-client-go/pull/298) Optimized `WriteRecord` of [WriteAPIBlocking](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPIBlocking). Custom batch can be written by single argument. ### Bug fixes -- [#294](https://github.com/influxdata/influxdb-client-go/pull/294) `WritePoint` and `WriteRecord` of [WriteAPIBlocking](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPIBlocking) returns always full error information. + +- [#294](https://github.com/influxdata/influxdb-client-go/pull/294) `WritePoint` and `WriteRecord` of [WriteAPIBlocking](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPIBlocking) returns always full error information. - [300](https://github.com/influxdata/influxdb-client-go/pull/300) Closing the response body after write batch. - [302](https://github.com/influxdata/influxdb-client-go/pull/302) FluxRecord.Table() returns value of the table column. ## 2.6.0[2021-11-26] + ### Features -- [#285](https://github.com/influxdata/influxdb-client-go/pull/285) Added *Client.Ping()* function as the only validation method available in both OSS and Cloud. + +- [#285](https://github.com/influxdata/influxdb-client-go/pull/285) Added _Client.Ping()_ function as the only validation method available in both OSS and Cloud. - [#286](https://github.com/influxdata/influxdb-client-go/pull/286) Synced generated server API with the latest [oss.yml](https://github.com/influxdata/openapi/blob/master/contracts/oss.yml). -- [#287](https://github.com/influxdata/influxdb-client-go/pull/287) Added *FluxRecord.Result()* function as a convenient way to retrieve the Flux result name of data. +- [#287](https://github.com/influxdata/influxdb-client-go/pull/287) Added _FluxRecord.Result()_ function as a convenient way to retrieve the Flux result name of data. ### Bug fixes -- [#285](https://github.com/influxdata/influxdb-client-go/pull/285) Functions *Client.Health()* and *Client.Ready()* correctly report an error when called against InfluxDB Cloud. + +- [#285](https://github.com/influxdata/influxdb-client-go/pull/285) Functions _Client.Health()_ and _Client.Ready()_ correctly report an error when called against InfluxDB Cloud. ### Breaking change -- [#285](https://github.com/influxdata/influxdb-client-go/pull/285) Function *Client.Ready()* now returns `*domain.Ready` with full uptime info. + +- [#285](https://github.com/influxdata/influxdb-client-go/pull/285) Function _Client.Ready()_ now returns `*domain.Ready` with full uptime info. ## 2.5.1[2021-09-17] + ### Bug fixes - - [#276](https://github.com/influxdata/influxdb-client-go/pull/276) Synchronized logging methods of _log.Logger_. - + +- [#276](https://github.com/influxdata/influxdb-client-go/pull/276) Synchronized logging methods of _log.Logger_. + ## 2.5.0 [2021-08-20] + ### Features - - [#264](https://github.com/influxdata/influxdb-client-go/pull/264) Synced generated server API with the latest [oss.yml](https://github.com/influxdata/openapi/blob/master/contracts/oss.yml). - - [#271](https://github.com/influxdata/influxdb-client-go/pull/271) Use exponential _random_ retry strategy - - [#273](https://github.com/influxdata/influxdb-client-go/pull/273) Added `WriteFailedCallback` for `WriteAPI` allowing to be _synchronously_ notified about failed writes and decide on further batch processing. + +- [#264](https://github.com/influxdata/influxdb-client-go/pull/264) Synced generated server API with the latest [oss.yml](https://github.com/influxdata/openapi/blob/master/contracts/oss.yml). +- [#271](https://github.com/influxdata/influxdb-client-go/pull/271) Use exponential _random_ retry strategy +- [#273](https://github.com/influxdata/influxdb-client-go/pull/273) Added `WriteFailedCallback` for `WriteAPI` allowing to be _synchronously_ notified about failed writes and decide on further batch processing. ### Bug fixes - - [#269](https://github.com/influxdata/influxdb-client-go/pull/269) Synchronized setters of _log.Logger_ to allow concurrent usage - - [#270](https://github.com/influxdata/influxdb-client-go/pull/270) Fixed duplicate `Content-Type` header in requests to managemet API + +- [#269](https://github.com/influxdata/influxdb-client-go/pull/269) Synchronized setters of _log.Logger_ to allow concurrent usage +- [#270](https://github.com/influxdata/influxdb-client-go/pull/270) Fixed duplicate `Content-Type` header in requests to managemet API ### Documentation - - [#261](https://github.com/influxdata/influxdb-client-go/pull/261) Update Line Protocol document link to v2.0 - - [#274](https://github.com/influxdata/influxdb-client-go/pull/274) Documenting proxy configuration and HTTP redirects handling + +- [#261](https://github.com/influxdata/influxdb-client-go/pull/261) Update Line Protocol document link to v2.0 +- [#274](https://github.com/influxdata/influxdb-client-go/pull/274) Documenting proxy configuration and HTTP redirects handling ## 2.4.0 [2021-06-04] + ### Features - - [#256](https://github.com/influxdata/influxdb-client-go/pull/256) Allowing 'Doer' interface for HTTP requests + +- [#256](https://github.com/influxdata/influxdb-client-go/pull/256) Allowing 'Doer' interface for HTTP requests ### Bug fixes - - [#259](https://github.com/influxdata/influxdb-client-go/pull/259) Fixed leaking connection in case of not reading whole query result on TLS connection +- [#259](https://github.com/influxdata/influxdb-client-go/pull/259) Fixed leaking connection in case of not reading whole query result on TLS connection ## 2.3.0 [2021-04-30] + ### Breaking change - - [#253](https://github.com/influxdata/influxdb-client-go/pull/253) Interface 'Logger' extended with 'LogLevel() uint' getter. + +- [#253](https://github.com/influxdata/influxdb-client-go/pull/253) Interface 'Logger' extended with 'LogLevel() uint' getter. ### Features - - [#241](https://github.com/influxdata/influxdb-client-go/pull/241),[#248](https://github.com/influxdata/influxdb-client-go/pull/248) Synced with InfluxDB 2.0.5 swagger: - - Setup (onboarding) now sends correctly retentionDuration if specified - - `RetentionRule` used in `Bucket` now contains `ShardGroupDurationSeconds` to specify the shard group duration. + +- [#241](https://github.com/influxdata/influxdb-client-go/pull/241),[#248](https://github.com/influxdata/influxdb-client-go/pull/248) Synced with InfluxDB 2.0.5 swagger: + - Setup (onboarding) now sends correctly retentionDuration if specified + - `RetentionRule` used in `Bucket` now contains `ShardGroupDurationSeconds` to specify the shard group duration. ### Documentation + 1. [#242](https://github.com/influxdata/influxdb-client-go/pull/242) Documentation improvements: - - [Custom server API example](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2#example-Client-CustomServerAPICall) now shows how to create DBRP mapping - - Improved documentation about concurrency + +- [Custom server API example](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2#example-Client-CustomServerAPICall) now shows how to create DBRP mapping +- Improved documentation about concurrency + 1. [#251](https://github.com/influxdata/influxdb-client-go/pull/251) Fixed Readme.md formatting - + ### Bug fixes -1. [#252](https://github.com/influxdata/influxdb-client-go/pull/252) Fixed panic when getting not present standard Flux columns -1. [#253](https://github.com/influxdata/influxdb-client-go/pull/253) Conditional debug logging of buffers -1. [#254](https://github.com/influxdata/influxdb-client-go/pull/254) Fixed golint issues + +1. [#252](https://github.com/influxdata/influxdb-client-go/pull/252) Fixed panic when getting not present standard Flux columns +1. [#253](https://github.com/influxdata/influxdb-client-go/pull/253) Conditional debug logging of buffers +1. [#254](https://github.com/influxdata/influxdb-client-go/pull/254) Fixed golint pull ## 2.2.3 [2021-04-01] + ### Bug fixes + 1. [#236](https://github.com/influxdata/influxdb-client-go/pull/236) Setting MaxRetries to zero value disables retry strategy. -1. [#239](https://github.com/influxdata/influxdb-client-go/pull/239) Blocking write client doesn't use retry handling. +1. [#239](https://github.com/influxdata/influxdb-client-go/pull/239) Blocking write client doesn't use retry handling. ## 2.2.2 [2021-01-29] + ### Bug fixes + 1. [#229](https://github.com/influxdata/influxdb-client-go/pull/229) Connection errors are also subject for retrying. ## 2.2.1 [2020-12-24] + ### Bug fixes + 1. [#220](https://github.com/influxdata/influxdb-client-go/pull/220) Fixed runtime error occurring when calling v2 API on v1 server. ### Documentation + 1. [#218](https://github.com/influxdata/influxdb-client-go/pull/218), [#221](https://github.com/influxdata/influxdb-client-go/pull/221), [#222](https://github.com/influxdata/influxdb-client-go/pull/222), Changed links leading to sources to point to API docs in Readme, fixed broken links to InfluxDB docs. ## 2.2.0 [2020-10-30] + ### Features + 1. [#206](https://github.com/influxdata/influxdb-client-go/pull/206) Adding TasksAPI for managing tasks and associated logs and runs. ### Bug fixes + 1. [#209](https://github.com/influxdata/influxdb-client-go/pull/209) Synchronizing access to the write service in WriteAPIBlocking. ## 2.1.0 [2020-10-02] + ### Features + 1. [#193](https://github.com/influxdata/influxdb-client-go/pull/193) Added authentication using username and password. See `UsersAPI.SignIn()` and `UsersAPI.SignOut()` -1. [#204](https://github.com/influxdata/influxdb-client-go/pull/204) Synced with InfluxDB 2 RC0 swagger. Added pagination to Organizations API and `After` paging param to Buckets API. +1. [#204](https://github.com/influxdata/influxdb-client-go/pull/204) Synced with InfluxDB 2 RC0 swagger. Added pagination to Organizations API and `After` paging param to Buckets API. ### Bug fixes + 1. [#191](https://github.com/influxdata/influxdb-client-go/pull/191) Fixed QueryTableResult.Next() failed to parse boolean datatype. 1. [#192](https://github.com/influxdata/influxdb-client-go/pull/192) Client.Close() closes idle connections of internally created HTTP client ### Documentation -1. [#189](https://github.com/influxdata/influxdb-client-go/pull/189) Added clarification that server URL has to be the InfluxDB server base URL to API docs and all examples. -1. [#196](https://github.com/influxdata/influxdb-client-go/pull/196) Changed default server port 9999 to 8086 in docs and examples + +1. [#189](https://github.com/influxdata/influxdb-client-go/pull/189) Added clarification that server URL has to be the InfluxDB server base URL to API docs and all examples. +1. [#196](https://github.com/influxdata/influxdb-client-go/pull/196) Changed default server port 9999 to 8086 in docs and examples 1. [#200](https://github.com/influxdata/influxdb-client-go/pull/200) Fix example code in the Readme ## 2.0.1 [2020-08-14] -### Bug fixes + +### Bug fixes + 1. [#187](https://github.com/influxdata/influxdb-client-go/pull/187) Properly updated library for new major version. ## 2.0.0 [2020-08-14] + ### Breaking changes + 1. [#173](https://github.com/influxdata/influxdb-client-go/pull/173) Removed deprecated API. 1. [#174](https://github.com/influxdata/influxdb-client-go/pull/174) Removed orgs labels API cause [it has been removed from the server API](https://github.com/influxdata/influxdb/pull/19104) 1. [#175](https://github.com/influxdata/influxdb-client-go/pull/175) Removed WriteAPI.Close() ### Features + 1. [#165](https://github.com/influxdata/influxdb-client-go/pull/165) Allow overriding the http.Client for the http service. 1. [#179](https://github.com/influxdata/influxdb-client-go/pull/179) Unifying retry strategy among InfluxDB 2 clients: added exponential backoff. -1. [#180](https://github.com/influxdata/influxdb-client-go/pull/180) Provided public logger API to enable overriding logging. It is also possible to disable logging. -1. [#181](https://github.com/influxdata/influxdb-client-go/pull/181) Exposed HTTP service to allow custom server API calls. Added example. +1. [#180](https://github.com/influxdata/influxdb-client-go/pull/180) Provided public logger API to enable overriding logging. It is also possible to disable logging. +1. [#181](https://github.com/influxdata/influxdb-client-go/pull/181) Exposed HTTP service to allow custom server API calls. Added example. + +### Bug fixes -### Bug fixes 1. [#175](https://github.com/influxdata/influxdb-client-go/pull/175) Fixed WriteAPIs management. Keeping single instance for each org and bucket pair. ### Documentation -1. [#185](https://github.com/influxdata/influxdb-client-go/pull/185) DeleteAPI and sample WriteAPIBlocking wrapper for implicit batching + +1. [#185](https://github.com/influxdata/influxdb-client-go/pull/185) DeleteAPI and sample WriteAPIBlocking wrapper for implicit batching ## 1.4.0 [2020-07-17] + ### Breaking changes -1. [#156](https://github.com/influxdata/influxdb-client-go/pull/156) Fixing Go naming and code style violations: -- Introducing new *API interfaces with proper name of types, methods and arguments. -- This also affects the `Client` interface and the `Options` type. -- Affected types and methods have been deprecated and they will be removed in the next release. -### Bug fixes +1. [#156](https://github.com/influxdata/influxdb-client-go/pull/156) Fixing Go naming and code style violations: + +- Introducing new \*API interfaces with proper name of types, methods and arguments. +- This also affects the `Client` interface and the `Options` type. +- Affected types and methods have been deprecated and they will be removed in the next release. + +### Bug fixes + 1. [#152](https://github.com/influxdata/influxdb-client-go/pull/152) Allow connecting to server on a URL path 1. [#154](https://github.com/influxdata/influxdb-client-go/pull/154) Use idiomatic go style for write channels (internal) 1. [#155](https://github.com/influxdata/influxdb-client-go/pull/155) Fix panic in FindOrganizationByName in case of no permissions - ## 1.3.0 [2020-06-19] + ### Features + 1. [#131](https://github.com/influxdata/influxdb-client-go/pull/131) Labels API 1. [#136](https://github.com/influxdata/influxdb-client-go/pull/136) Possibility to specify default tags 1. [#138](https://github.com/influxdata/influxdb-client-go/pull/138) Fix errors from InfluxDB 1.8 being empty -### Bug fixes +### Bug fixes + 1. [#132](https://github.com/influxdata/influxdb-client-go/pull/132) Handle unsupported write type as string instead of generating panic 1. [#134](https://github.com/influxdata/influxdb-client-go/pull/134) FluxQueryResult: support reordering of annotations ## 1.2.0 [2020-05-15] + ### Breaking Changes - - [#107](https://github.com/influxdata/influxdb-client-go/pull/107) Renamed `InfluxDBClient` interface to `Client`, so the full name `influxdb2.Client` suits better to Go naming conventions - - [#125](https://github.com/influxdata/influxdb-client-go/pull/125) `WriteApi`,`WriteApiBlocking`,`QueryApi` interfaces and related objects like `Point`, `FluxTableMetadata`, `FluxTableColumn`, `FluxRecord`, moved to the `api` ( and `api/write`, `api/query`) packages - to provide consistent interface - + +- [#107](https://github.com/influxdata/influxdb-client-go/pull/107) Renamed `InfluxDBClient` interface to `Client`, so the full name `influxdb2.Client` suits better to Go naming conventions +- [#125](https://github.com/influxdata/influxdb-client-go/pull/125) `WriteApi`,`WriteApiBlocking`,`QueryApi` interfaces and related objects like `Point`, `FluxTableMetadata`, `FluxTableColumn`, `FluxRecord`, moved to the `api` ( and `api/write`, `api/query`) packages + to provide consistent interface + ### Features -1. [#120](https://github.com/influxdata/influxdb-client-go/pull/120) Health check API + +1. [#120](https://github.com/influxdata/influxdb-client-go/pull/120) Health check API 1. [#122](https://github.com/influxdata/influxdb-client-go/pull/122) Delete API 1. [#124](https://github.com/influxdata/influxdb-client-go/pull/124) Buckets API -### Bug fixes -1. [#108](https://github.com/influxdata/influxdb-client-go/issues/108) Fix default retry interval doc -1. [#110](https://github.com/influxdata/influxdb-client-go/issues/110) Allowing empty (nil) values in query result +### Bug fixes + +1. [#108](https://github.com/influxdata/influxdb-client-go/pull/108) Fix default retry interval doc +1. [#110](https://github.com/influxdata/influxdb-client-go/pull/110) Allowing empty (nil) values in query result ### Documentation - - [#112](https://github.com/influxdata/influxdb-client-go/pull/112) Clarify how to use client with InfluxDB 1.8+ - - [#115](https://github.com/influxdata/influxdb-client-go/pull/115) Doc and examples for reading write api errors + +- [#112](https://github.com/influxdata/influxdb-client-go/pull/112) Clarify how to use client with InfluxDB 1.8+ +- [#115](https://github.com/influxdata/influxdb-client-go/pull/115) Doc and examples for reading write api errors ## 1.1.0 [2020-04-24] + ### Features -1. [#100](https://github.com/influxdata/influxdb-client-go/pull/100) HTTP request timeout made configurable -1. [#99](https://github.com/influxdata/influxdb-client-go/pull/99) Organizations API and Users API -1. [#96](https://github.com/influxdata/influxdb-client-go/pull/96) Authorization API + +1. [#100](https://github.com/influxdata/influxdb-client-go/pull/100) HTTP request timeout made configurable +1. [#99](https://github.com/influxdata/influxdb-client-go/pull/99) Organizations API and Users API +1. [#96](https://github.com/influxdata/influxdb-client-go/pull/96) Authorization API ### Docs + 1. [#101](https://github.com/influxdata/influxdb-client-go/pull/101) Added examples to API docs ## 1.0.0 [2020-04-01] + ### Core - initial release of new client version diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/Makefile b/vendor/github.com/influxdata/influxdb-client-go/v2/Makefile new file mode 100644 index 000000000000..849aef17dc5e --- /dev/null +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/Makefile @@ -0,0 +1,31 @@ +artifacts_path := /tmp/artifacts + +help: + @echo 'Targets:' + @echo ' all - runs lint, server, coverage' + @echo ' lint - runs code style checks' + @echo ' shorttest - runs unit and integration tests' + @echo ' test - runs all tests, including e2e tests - requires running influxdb 2 server' + @echo ' coverage - runs all tests, including e2e tests, with coverage report - requires running influxdb 2 server' + @echo ' server - prepares InfluxDB in docker environment' + +lint: + go vet ./... + go install honnef.co/go/tools/cmd/staticcheck@latest && staticcheck --checks='all' --tags e2e ./... + go install golang.org/x/lint/golint@latest && golint ./... + +shorttest: + go test -race -v -count=1 ./... + +test: + go test -race -v -count=1 --tags e2e ./... + +coverage: + go install gotest.tools/gotestsum@latest && gotestsum --junitfile /tmp/test-results/unit-tests.xml -- -race -coverprofile=coverage.txt -covermode=atomic -coverpkg '.,./api/...,./internal/.../,./log/...' -tags e2e ./... + if test ! -e $(artifacts_path); then mkdir $(artifacts_path); fi + go tool cover -html=coverage.txt -o $(artifacts_path)/coverage.html + +server: + ./scripts/influxdb-restart.sh + +all: lint server coverage diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/README.md b/vendor/github.com/influxdata/influxdb-client-go/v2/README.md index 9cae6c4909e4..49a984273efa 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/README.md +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/README.md @@ -5,18 +5,19 @@ [![License](https://img.shields.io/github/license/influxdata/influxdb-client-go.svg)](https://github.com/influxdata/influxdb-client-go/blob/master/LICENSE) [![Slack Status](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social)](https://www.influxdata.com/slack) -This repository contains the reference Go client for InfluxDB 2. +This repository contains the Go client library for use with InfluxDB 2.x and Flux. InfluxDB 3.x users should instead use the lightweight [v3 client library](https://github.com/InfluxCommunity/influxdb3-go). InfluxDB 1.x users should use the [v1 client library](https://github.com/influxdata/influxdb/tree/1.8/client). -#### Note: Use this client library with InfluxDB 2.x and InfluxDB 1.8+ ([see details](#influxdb-18-api-compatibility)). For connecting to InfluxDB 1.7 or earlier instances, use the [influxdb1-go](https://github.com/influxdata/influxdb1-client) client library. +For ease of migration and a consistent query and write experience, v2 users should consider using InfluxQL and the [v1 client library](https://github.com/influxdata/influxdb/tree/1.8/client). - [Features](#features) - [Documentation](#documentation) - [Examples](#examples) - [How To Use](#how-to-use) + - [Installation](#installation) - [Basic Example](#basic-example) - [Writes in Detail](#writes) - [Queries in Detail](#queries) - - [Parametrized Queries](#parametrized-queries) + - [Parametrized Queries](#parametrized-queries) - [Concurrency](#concurrency) - [Proxy and redirects](#proxy-and-redirects) - [Checking Server State](#checking-server-state) @@ -26,8 +27,8 @@ This repository contains the reference Go client for InfluxDB 2. ## Features -- InfluxDB 2 client - - Querying data +- InfluxDB 2 client + - Querying data - using the Flux language - into raw data, flux table representation - [How to queries](#queries) @@ -35,13 +36,13 @@ This repository contains the reference Go client for InfluxDB 2. - [Line Protocol](https://docs.influxdata.com/influxdb/v2.0/reference/syntax/line-protocol/) - [Data Point](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api/write#Point) - Both [asynchronous](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPI) or [synchronous](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPIBlocking) ways - - [How to writes](#writes) + - [How to writes](#writes) - InfluxDB 2 API - setup, ready, health - authotizations, users, organizations - buckets, delete - ... - + ## Documentation This section contains links to the client library documentation. @@ -53,22 +54,28 @@ This section contains links to the client library documentation. ### Examples -Examples for basic writing and querying data are shown below in this document +Examples for basic writing and querying data are shown below in this document There are also other examples in the API docs: - - [Client usage](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2?tab=doc#pkg-examples) - - [Management APIs](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api?tab=doc#pkg-examples) + - [Client usage](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2?tab=doc#pkg-examples) + - [Management APIs](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api?tab=doc#pkg-examples) ## How To Use ### Installation **Go 1.17** or later is required. -1. Add the client package your to your project dependencies (go.mod). +#### Go mod project +1. Add the latest version of the client package to your project dependencies (go.mod). ```sh go get github.com/influxdata/influxdb-client-go/v2 ``` 1. Add import `github.com/influxdata/influxdb-client-go/v2` to your source code. +#### GOPATH project + ```sh + go get github.com/influxdata/influxdb-client-go + ``` +Note: To have _go get_ in the GOPATH mode, the environment variable `GO111MODULE` must have the `off` value. ### Basic Example The following example demonstrates how to write data to InfluxDB 2 and read them back using the Flux language: @@ -88,12 +95,12 @@ func main() { client := influxdb2.NewClient("http://localhost:8086", "my-token") // Use blocking write client for writes to desired bucket writeAPI := client.WriteAPIBlocking("my-org", "my-bucket") - // Create point using full params constructor + // Create point using full params constructor p := influxdb2.NewPoint("stat", map[string]string{"unit": "temperature"}, map[string]interface{}{"avg": 24.5, "max": 45.0}, time.Now()) - // write point immediately + // write point immediately writeAPI.WritePoint(context.Background(), p) // Create point using fluent style p = influxdb2.NewPointWithMeasurement("stat"). @@ -101,11 +108,16 @@ func main() { AddField("avg", 23.2). AddField("max", 45.0). SetTime(time.Now()) - writeAPI.WritePoint(context.Background(), p) - + err := writeAPI.WritePoint(context.Background(), p) + if err != nil { + panic(err) + } // Or write directly line protocol line := fmt.Sprintf("stat,unit=temperature avg=%f,max=%f", 23.5, 45.0) - writeAPI.WriteRecord(context.Background(), line) + err = writeAPI.WriteRecord(context.Background(), line) + if err != nil { + panic(err) + } // Get query client queryAPI := client.QueryAPI("my-org") @@ -124,6 +136,8 @@ func main() { if result.Err() != nil { fmt.Printf("Query error: %s\n", result.Err().Error()) } + } else { + panic(err) } // Ensures background processes finishes client.Close() @@ -137,10 +151,10 @@ client := influxdb2.NewClient("http://localhost:8086", "my-token") ``` will use the default options. -To set different configuration values, e.g. to set gzip compression and trust all server certificates, get default options -and change what is needed: +To set different configuration values, e.g. to set gzip compression and trust all server certificates, get default options +and change what is needed: ```go -client := influxdb2.NewClientWithOptions("http://localhost:8086", "my-token", +client := influxdb2.NewClientWithOptions("http://localhost:8086", "my-token", influxdb2.DefaultOptions(). SetUseGZip(true). SetTLSConfig(&tls.Config{ @@ -149,17 +163,17 @@ client := influxdb2.NewClientWithOptions("http://localhost:8086", "my-token", ``` ### Writes -Client offers two ways of writing, non-blocking and blocking. +Client offers two ways of writing, non-blocking and blocking. -### Non-blocking write client +### Non-blocking write client Non-blocking write client uses implicit batching. Data are asynchronously written to the underlying buffer and they are automatically sent to a server when the size of the write buffer reaches the batch size, default 5000, or the flush interval, default 1s, times out. Writes are automatically retried on server back pressure. -This write client also offers synchronous blocking method to ensure that write buffer is flushed and all pending writes are finished, +This write client also offers synchronous blocking method to ensure that write buffer is flushed and all pending writes are finished, see [Flush()](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPI.Flush) method. Always use [Close()](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2#Client.Close) method of the client to stop all background processes. - + Asynchronous write client is recommended for frequent periodic writes. ```go @@ -169,13 +183,13 @@ import ( "fmt" "math/rand" "time" - + "github.com/influxdata/influxdb-client-go/v2" ) func main() { // Create a new client using an InfluxDB server base URL and an authentication token - // and set batch size to 20 + // and set batch size to 20 client := influxdb2.NewClientWithOptions("http://localhost:8086", "my-token", influxdb2.DefaultOptions().SetBatchSize(20)) // Get non-blocking write client @@ -208,12 +222,12 @@ func main() { } ``` ### Handling of failed async writes -WriteAPI by default continues with retrying of failed writes. +WriteAPI by default continues with retrying of failed writes. Retried are automatically writes that fail on a connection failure or when server returns response HTTP status code >= 429. Retrying algorithm uses random exponential strategy to set retry time. The delay for the next retry attempt is a random value in the interval _retryInterval * exponentialBase^(attempts)_ and _retryInterval * exponentialBase^(attempts+1)_. -If writes of batch repeatedly fails, WriteAPI continues with retrying until _maxRetries_ is reached or the overall retry time of batch exceeds _maxRetryTime_. +If writes of batch repeatedly fails, WriteAPI continues with retrying until _maxRetries_ is reached or the overall retry time of batch exceeds _maxRetryTime_. The defaults parameters (part of the WriteOptions) are: - _retryInterval_=5,000ms @@ -221,23 +235,22 @@ The defaults parameters (part of the WriteOptions) are: - _maxRetryDelay_=125,000ms - _maxRetries_=5 - _maxRetryTime_=180,000ms - + Retry delays are by default randomly distributed within the ranges: 1. 5,000-10,000 1. 10,000-20,000 1. 20,000-40,000 1. 40,000-80,000 1. 80,000-125,000 - -Setting _retryInterval_ to 0 disables retry strategy and any failed write will discard the batch. -[WriteFailedCallback](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteFailedCallback) allows advanced controlling of retrying. +Setting _retryInterval_ to 0 disables retry strategy and any failed write will discard the batch. + +[WriteFailedCallback](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteFailedCallback) allows advanced controlling of retrying. It is synchronously notified in case async write fails. -It controls further batch handling by its return value. If it returns `true`, WriteAPI continues with retrying of writes of this batch. Returned `false` means the batch should be discarded. +It controls further batch handling by its return value. If it returns `true`, WriteAPI continues with retrying of writes of this batch. Returned `false` means the batch should be discarded. ### Reading async errors -[Errors()](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPI.Errors) method returns a channel for reading errors which occurs during async writes. This channel is unbuffered and it -must be read asynchronously otherwise will block write procedure: +WriteAPI automatically logs write errors. Use [Errors()](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPI.Errors) method, which returns the channel for reading errors occuring during async writes, for writing write error to a custom target: ```go package main @@ -286,8 +299,9 @@ func main() { } ``` -### Blocking write client -Blocking write client writes given point(s) synchronously. It doesn't have implicit batching. Batch is created from given set of points. +### Blocking write client +Blocking write client writes given point(s) synchronously. It doesn't do implicit batching. Batch is created from given set of points. +Implicit batching can be enabled with `WriteAPIBlocking.EnableBatching()`. ```go package main @@ -336,9 +350,9 @@ func main() { ``` ### Queries -Query client offers retrieving of query results to a parsed representation in a [QueryTableResult](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#QueryTableResult) or to a raw string. +Query client offers retrieving of query results to a parsed representation in a [QueryTableResult](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#QueryTableResult) or to a raw string. -### QueryTableResult +### QueryTableResult QueryTableResult offers comfortable way how to deal with flux query CSV response. It parses CSV stream into FluxTableMetaData, FluxColumn and FluxRecord objects for easy reading the result. @@ -382,8 +396,8 @@ func main() { ``` ### Raw -[QueryRaw()](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#QueryAPI.QueryRaw) returns raw, unparsed, query result string and process it on your own. Returned csv format -can be controlled by the third parameter, query dialect. +[QueryRaw()](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#QueryAPI.QueryRaw) returns raw, unparsed, query result string and process it on your own. Returned csv format +can be controlled by the third parameter, query dialect. ```go package main @@ -411,7 +425,7 @@ func main() { } // Ensures background processes finishes client.Close() -} +} ``` ### Parametrized Queries InfluxDB Cloud supports [Parameterized Queries](https://docs.influxdata.com/influxdb/cloud/query-data/parameterized-queries/) @@ -455,7 +469,7 @@ func main() { } // Query with parameters query := `from(bucket:"my-bucket") - |> range(start: duration(params.start)) + |> range(start: duration(params.start)) |> filter(fn: (r) => r._measurement == "stat") |> filter(fn: (r) => r._field == params.field) |> filter(fn: (r) => r._value > params.value)` @@ -487,8 +501,8 @@ func main() { ### Concurrency InfluxDB Go Client can be used in a concurrent environment. All its functions are thread-safe. -The best practise is to use a single `Client` instance per server URL. This ensures optimized resources usage, -most importantly reusing HTTP connections. +The best practise is to use a single `Client` instance per server URL. This ensures optimized resources usage, +most importantly reusing HTTP connections. For efficient reuse of HTTP resources among multiple clients, create an HTTP client and use `Options.SetHTTPClient()` for setting it to all clients: ```go @@ -514,7 +528,7 @@ For efficient reuse of HTTP resources among multiple clients, create an HTTP cli client2 := influxdb2.NewClientWithOptions("https://server:9999", "my-token2", influxdb2.DefaultOptions().SetHTTPClient(httpClient)) ``` -Client ensures that there is a single instance of each server API sub-client for the specific area. E.g. a single `WriteAPI` instance for each org/bucket pair, +Client ensures that there is a single instance of each server API sub-client for the specific area. E.g. a single `WriteAPI` instance for each org/bucket pair, a single `QueryAPI` for each org. Such a single API sub-client instance can be used concurrently: @@ -573,10 +587,10 @@ func main() { ### Proxy and redirects You can configure InfluxDB Go client behind a proxy in two ways: - 1. Using environment variable - Set environment variable `HTTP_PROXY` (or `HTTPS_PROXY` based on the scheme of your server url). + 1. Using environment variable + Set environment variable `HTTP_PROXY` (or `HTTPS_PROXY` based on the scheme of your server url). e.g. (linux) `export HTTP_PROXY=http://my-proxy:8080` or in Go code `os.Setenv("HTTP_PROXY","http://my-proxy:8080")` - + 1. Configure `http.Client` to use proxy
Create a custom `http.Client` with a proxy configuration: ```go @@ -588,7 +602,7 @@ You can configure InfluxDB Go client behind a proxy in two ways: } client := influxdb2.NewClientWithOptions("http://localhost:8086", token, influxdb2.DefaultOptions().SetHTTPClient(httpClient)) ``` - + Client automatically follows HTTP redirects. The default redirect policy is to follow up to 10 consecutive requests. Due to a security reason _Authorization_ header is not forwarded when redirect leads to a different domain. To overcome this limitation you have to set a custom redirect handler: @@ -602,7 +616,7 @@ httpClient := &http.Client{ }, } client := influxdb2.NewClientWithOptions("http://localhost:8086", token, influxdb2.DefaultOptions().SetHTTPClient(httpClient)) -``` +``` ### Checking Server State There are three functions for checking whether a server is up and ready for communication: @@ -616,23 +630,23 @@ There are three functions for checking whether a server is up and ready for comm Only the [Ping()](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2#Client.Ping) function works in InfluxDB Cloud server. ## InfluxDB 1.8 API compatibility - + [InfluxDB 1.8.0 introduced forward compatibility APIs](https://docs.influxdata.com/influxdb/latest/tools/api/#influxdb-2-0-api-compatibility-endpoints) for InfluxDB 2.0. This allow you to easily move from InfluxDB 1.x to InfluxDB 2.0 Cloud or open source. - + Client API usage differences summary: 1. Use the form `username:password` for an **authentication token**. Example: `my-user:my-password`. Use an empty string (`""`) if the server doesn't require authentication. 1. The organization parameter is not used. Use an empty string (`""`) where necessary. 1. Use the form `database/retention-policy` where a **bucket** is required. Skip retention policy if the default retention policy should be used. Examples: `telegraf/autogen`, `telegraf`.   - + The following forward compatible APIs are available: - + | API | Endpoint | Description | |:----------|:----------|:----------| | [WriteAPI](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPI) (also [WriteAPIBlocking](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#WriteAPIBlocking))| [/api/v2/write](https://docs.influxdata.com/influxdb/v2.0/write-data/developer-tools/api/) | Write data to InfluxDB 1.8.0+ using the InfluxDB 2.0 API | | [QueryAPI](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2/api#QueryAPI) | [/api/v2/query](https://docs.influxdata.com/influxdb/v2.0/query-data/execute-queries/influx-api/) | Query data in InfluxDB 1.8.0+ using the InfluxDB 2.0 API and [Flux](https://docs.influxdata.com/flux/latest/) endpoint should be enabled by the [`flux-enabled` option](https://docs.influxdata.com/influxdb/v1.8/administration/config/#flux-enabled-false) - | [Health()](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2#Client.Health) | [/health](https://docs.influxdata.com/influxdb/v2.0/api/#tag/Health) | Check the health of your InfluxDB instance | + | [Health()](https://pkg.go.dev/github.com/influxdata/influxdb-client-go/v2#Client.Health) | [/health](https://docs.influxdata.com/influxdb/v2.0/api/#tag/Health) | Check the health of your InfluxDB instance | + - ### Example ```go package main diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/authorizations.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/authorizations.go index 692659fc5b17..70c0caf100ef 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/authorizations.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/authorizations.go @@ -38,11 +38,11 @@ type AuthorizationsAPI interface { // authorizationsAPI implements AuthorizationsAPI type authorizationsAPI struct { - apiClient *domain.ClientWithResponses + apiClient *domain.Client } // NewAuthorizationsAPI creates new instance of AuthorizationsAPI -func NewAuthorizationsAPI(apiClient *domain.ClientWithResponses) AuthorizationsAPI { +func NewAuthorizationsAPI(apiClient *domain.Client) AuthorizationsAPI { return &authorizationsAPI{ apiClient: apiClient, } @@ -74,35 +74,23 @@ func (a *authorizationsAPI) FindAuthorizationsByOrgID(ctx context.Context, orgID } func (a *authorizationsAPI) listAuthorizations(ctx context.Context, query *domain.GetAuthorizationsParams) (*[]domain.Authorization, error) { - response, err := a.apiClient.GetAuthorizationsWithResponse(ctx, query) + response, err := a.apiClient.GetAuthorizations(ctx, query) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON200.Authorizations, nil + return response.Authorizations, nil } func (a *authorizationsAPI) CreateAuthorization(ctx context.Context, authorization *domain.Authorization) (*domain.Authorization, error) { - params := &domain.PostAuthorizationsParams{} - req := domain.PostAuthorizationsJSONRequestBody{ - AuthorizationUpdateRequest: authorization.AuthorizationUpdateRequest, - OrgID: authorization.OrgID, - Permissions: authorization.Permissions, - UserID: authorization.UserID, - } - response, err := a.apiClient.PostAuthorizationsWithResponse(ctx, params, req) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON400 != nil { - return nil, domain.ErrorToHTTPError(response.JSON400, response.StatusCode()) + params := &domain.PostAuthorizationsAllParams{ + Body: domain.PostAuthorizationsJSONRequestBody{ + AuthorizationUpdateRequest: authorization.AuthorizationUpdateRequest, + OrgID: authorization.OrgID, + Permissions: authorization.Permissions, + UserID: authorization.UserID, + }, } - return response.JSON201, nil + return a.apiClient.PostAuthorizations(ctx, params) } func (a *authorizationsAPI) CreateAuthorizationWithOrgID(ctx context.Context, orgID string, permissions []domain.Permission) (*domain.Authorization, error) { @@ -116,16 +104,11 @@ func (a *authorizationsAPI) CreateAuthorizationWithOrgID(ctx context.Context, or } func (a *authorizationsAPI) UpdateAuthorizationStatusWithID(ctx context.Context, authID string, status domain.AuthorizationUpdateRequestStatus) (*domain.Authorization, error) { - params := &domain.PatchAuthorizationsIDParams{} - body := &domain.PatchAuthorizationsIDJSONRequestBody{Status: &status} - response, err := a.apiClient.PatchAuthorizationsIDWithResponse(ctx, authID, params, *body) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.PatchAuthorizationsIDAllParams{ + Body: domain.PatchAuthorizationsIDJSONRequestBody{Status: &status}, + AuthID: authID, } - return response.JSON200, nil + return a.apiClient.PatchAuthorizationsID(ctx, params) } func (a *authorizationsAPI) UpdateAuthorizationStatus(ctx context.Context, authorization *domain.Authorization, status domain.AuthorizationUpdateRequestStatus) (*domain.Authorization, error) { @@ -137,13 +120,8 @@ func (a *authorizationsAPI) DeleteAuthorization(ctx context.Context, authorizati } func (a *authorizationsAPI) DeleteAuthorizationWithID(ctx context.Context, authID string) error { - params := &domain.DeleteAuthorizationsIDParams{} - response, err := a.apiClient.DeleteAuthorizationsIDWithResponse(ctx, authID, params) - if err != nil { - return err - } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.DeleteAuthorizationsIDAllParams{ + AuthID: authID, } - return nil + return a.apiClient.DeleteAuthorizationsID(ctx, params) } diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/buckets.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/buckets.go index 1befc37d6bca..4fb094845a5e 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/buckets.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/buckets.go @@ -64,11 +64,11 @@ type BucketsAPI interface { // bucketsAPI implements BucketsAPI type bucketsAPI struct { - apiClient *domain.ClientWithResponses + apiClient *domain.Client } // NewBucketsAPI creates new instance of BucketsAPI -func NewBucketsAPI(apiClient *domain.ClientWithResponses) BucketsAPI { +func NewBucketsAPI(apiClient *domain.Client) BucketsAPI { return &bucketsAPI{ apiClient: apiClient, } @@ -91,41 +91,30 @@ func (b *bucketsAPI) getBuckets(ctx context.Context, params *domain.GetBucketsPa } params.Offset = &options.offset - response, err := b.apiClient.GetBucketsWithResponse(ctx, params) + response, err := b.apiClient.GetBuckets(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON200.Buckets, nil + return response.Buckets, nil } func (b *bucketsAPI) FindBucketByName(ctx context.Context, bucketName string) (*domain.Bucket, error) { params := &domain.GetBucketsParams{Name: &bucketName} - response, err := b.apiClient.GetBucketsWithResponse(ctx, params) + response, err := b.apiClient.GetBuckets(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON200.Buckets != nil && len(*response.JSON200.Buckets) > 0 { - return &(*response.JSON200.Buckets)[0], nil + if response.Buckets != nil && len(*response.Buckets) > 0 { + return &(*response.Buckets)[0], nil } return nil, fmt.Errorf("bucket '%s' not found", bucketName) } func (b *bucketsAPI) FindBucketByID(ctx context.Context, bucketID string) (*domain.Bucket, error) { - params := &domain.GetBucketsIDParams{} - response, err := b.apiClient.GetBucketsIDWithResponse(ctx, bucketID, params) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.GetBucketsIDAllParams{ + BucketID: bucketID, } - return response.JSON200, nil + return b.apiClient.GetBucketsID(ctx, params) } func (b *bucketsAPI) FindBucketsByOrgID(ctx context.Context, orgID string, pagingOptions ...PagingOption) (*[]domain.Bucket, error) { @@ -139,18 +128,10 @@ func (b *bucketsAPI) FindBucketsByOrgName(ctx context.Context, orgName string, p } func (b *bucketsAPI) createBucket(ctx context.Context, bucketReq *domain.PostBucketRequest) (*domain.Bucket, error) { - params := &domain.PostBucketsParams{} - response, err := b.apiClient.PostBucketsWithResponse(ctx, params, domain.PostBucketsJSONRequestBody(*bucketReq)) - if err != nil { - return nil, err - } - if response.JSON422 != nil { - return nil, domain.ErrorToHTTPError(response.JSON422, response.StatusCode()) - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.PostBucketsAllParams{ + Body: domain.PostBucketsJSONRequestBody(*bucketReq), } - return response.JSON201, nil + return b.apiClient.PostBuckets(ctx, params) } func (b *bucketsAPI) CreateBucket(ctx context.Context, bucket *domain.Bucket) (*domain.Bucket, error) { @@ -158,14 +139,15 @@ func (b *bucketsAPI) CreateBucket(ctx context.Context, bucket *domain.Bucket) (* Description: bucket.Description, Name: bucket.Name, OrgID: *bucket.OrgID, - RetentionRules: bucket.RetentionRules, + RetentionRules: &bucket.RetentionRules, Rp: bucket.Rp, } return b.createBucket(ctx, bucketReq) } func (b *bucketsAPI) CreateBucketWithNameWithID(ctx context.Context, orgID, bucketName string, rules ...domain.RetentionRule) (*domain.Bucket, error) { - bucket := &domain.PostBucketRequest{Name: bucketName, OrgID: orgID, RetentionRules: rules} + rs := domain.RetentionRules(rules) + bucket := &domain.PostBucketRequest{Name: bucketName, OrgID: orgID, RetentionRules: &rs} return b.createBucket(ctx, bucket) } func (b *bucketsAPI) CreateBucketWithName(ctx context.Context, org *domain.Organization, bucketName string, rules ...domain.RetentionRule) (*domain.Bucket, error) { @@ -177,35 +159,22 @@ func (b *bucketsAPI) DeleteBucket(ctx context.Context, bucket *domain.Bucket) er } func (b *bucketsAPI) DeleteBucketWithID(ctx context.Context, bucketID string) error { - params := &domain.DeleteBucketsIDParams{} - response, err := b.apiClient.DeleteBucketsIDWithResponse(ctx, bucketID, params) - if err != nil { - return err - } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.DeleteBucketsIDAllParams{ + BucketID: bucketID, } - if response.JSON404 != nil { - return domain.ErrorToHTTPError(response.JSON404, response.StatusCode()) - } - return nil + return b.apiClient.DeleteBucketsID(ctx, params) } func (b *bucketsAPI) UpdateBucket(ctx context.Context, bucket *domain.Bucket) (*domain.Bucket, error) { - params := &domain.PatchBucketsIDParams{} - req := domain.PatchBucketsIDJSONRequestBody{ - Description: bucket.Description, - Name: &bucket.Name, - RetentionRules: retentionRulesToPatchRetentionRules(&bucket.RetentionRules), - } - response, err := b.apiClient.PatchBucketsIDWithResponse(ctx, *bucket.Id, params, req) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON200, nil + params := &domain.PatchBucketsIDAllParams{ + Body: domain.PatchBucketsIDJSONRequestBody{ + Description: bucket.Description, + Name: &bucket.Name, + RetentionRules: retentionRulesToPatchRetentionRules(&bucket.RetentionRules), + }, + BucketID: *bucket.Id, + } + return b.apiClient.PatchBucketsID(ctx, params) } func (b *bucketsAPI) GetMembers(ctx context.Context, bucket *domain.Bucket) (*[]domain.ResourceMember, error) { @@ -213,15 +182,14 @@ func (b *bucketsAPI) GetMembers(ctx context.Context, bucket *domain.Bucket) (*[] } func (b *bucketsAPI) GetMembersWithID(ctx context.Context, bucketID string) (*[]domain.ResourceMember, error) { - params := &domain.GetBucketsIDMembersParams{} - response, err := b.apiClient.GetBucketsIDMembersWithResponse(ctx, bucketID, params) + params := &domain.GetBucketsIDMembersAllParams{ + BucketID: bucketID, + } + response, err := b.apiClient.GetBucketsIDMembers(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON200.Users, nil + return response.Users, nil } func (b *bucketsAPI) AddMember(ctx context.Context, bucket *domain.Bucket, user *domain.User) (*domain.ResourceMember, error) { @@ -229,16 +197,11 @@ func (b *bucketsAPI) AddMember(ctx context.Context, bucket *domain.Bucket, user } func (b *bucketsAPI) AddMemberWithID(ctx context.Context, bucketID, memberID string) (*domain.ResourceMember, error) { - params := &domain.PostBucketsIDMembersParams{} - body := &domain.PostBucketsIDMembersJSONRequestBody{Id: memberID} - response, err := b.apiClient.PostBucketsIDMembersWithResponse(ctx, bucketID, params, *body) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.PostBucketsIDMembersAllParams{ + BucketID: bucketID, + Body: domain.PostBucketsIDMembersJSONRequestBody{Id: memberID}, } - return response.JSON201, nil + return b.apiClient.PostBucketsIDMembers(ctx, params) } func (b *bucketsAPI) RemoveMember(ctx context.Context, bucket *domain.Bucket, user *domain.User) error { @@ -246,15 +209,11 @@ func (b *bucketsAPI) RemoveMember(ctx context.Context, bucket *domain.Bucket, us } func (b *bucketsAPI) RemoveMemberWithID(ctx context.Context, bucketID, memberID string) error { - params := &domain.DeleteBucketsIDMembersIDParams{} - response, err := b.apiClient.DeleteBucketsIDMembersIDWithResponse(ctx, bucketID, memberID, params) - if err != nil { - return err - } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.DeleteBucketsIDMembersIDAllParams{ + BucketID: bucketID, + UserID: memberID, } - return nil + return b.apiClient.DeleteBucketsIDMembersID(ctx, params) } func (b *bucketsAPI) GetOwners(ctx context.Context, bucket *domain.Bucket) (*[]domain.ResourceOwner, error) { @@ -262,15 +221,14 @@ func (b *bucketsAPI) GetOwners(ctx context.Context, bucket *domain.Bucket) (*[]d } func (b *bucketsAPI) GetOwnersWithID(ctx context.Context, bucketID string) (*[]domain.ResourceOwner, error) { - params := &domain.GetBucketsIDOwnersParams{} - response, err := b.apiClient.GetBucketsIDOwnersWithResponse(ctx, bucketID, params) + params := &domain.GetBucketsIDOwnersAllParams{ + BucketID: bucketID, + } + response, err := b.apiClient.GetBucketsIDOwners(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON200.Users, nil + return response.Users, nil } func (b *bucketsAPI) AddOwner(ctx context.Context, bucket *domain.Bucket, user *domain.User) (*domain.ResourceOwner, error) { @@ -278,16 +236,11 @@ func (b *bucketsAPI) AddOwner(ctx context.Context, bucket *domain.Bucket, user * } func (b *bucketsAPI) AddOwnerWithID(ctx context.Context, bucketID, memberID string) (*domain.ResourceOwner, error) { - params := &domain.PostBucketsIDOwnersParams{} - body := &domain.PostBucketsIDOwnersJSONRequestBody{Id: memberID} - response, err := b.apiClient.PostBucketsIDOwnersWithResponse(ctx, bucketID, params, *body) - if err != nil { - return nil, err + params := &domain.PostBucketsIDOwnersAllParams{ + BucketID: bucketID, + Body: domain.PostBucketsIDOwnersJSONRequestBody{Id: memberID}, } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON201, nil + return b.apiClient.PostBucketsIDOwners(ctx, params) } func (b *bucketsAPI) RemoveOwner(ctx context.Context, bucket *domain.Bucket, user *domain.User) error { @@ -295,15 +248,11 @@ func (b *bucketsAPI) RemoveOwner(ctx context.Context, bucket *domain.Bucket, use } func (b *bucketsAPI) RemoveOwnerWithID(ctx context.Context, bucketID, memberID string) error { - params := &domain.DeleteBucketsIDOwnersIDParams{} - response, err := b.apiClient.DeleteBucketsIDOwnersIDWithResponse(ctx, bucketID, memberID, params) - if err != nil { - return err + params := &domain.DeleteBucketsIDOwnersIDAllParams{ + BucketID: bucketID, + UserID: memberID, } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return nil + return b.apiClient.DeleteBucketsIDOwnersID(ctx, params) } func retentionRulesToPatchRetentionRules(rrs *domain.RetentionRules) *domain.PatchRetentionRules { @@ -313,9 +262,12 @@ func retentionRulesToPatchRetentionRules(rrs *domain.RetentionRules) *domain.Pat prrs := make([]domain.PatchRetentionRule, len(*rrs)) for i, rr := range *rrs { prrs[i] = domain.PatchRetentionRule{ - EverySeconds: &rr.EverySeconds, + EverySeconds: rr.EverySeconds, ShardGroupDurationSeconds: rr.ShardGroupDurationSeconds, - Type: domain.PatchRetentionRuleType(rr.Type), + } + if rr.Type != nil { + rrt := domain.PatchRetentionRuleType(*rr.Type) + prrs[i].Type = &rrt } } dprrs := domain.PatchRetentionRules(prrs) diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/data_to_point.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/data_to_point.go new file mode 100644 index 000000000000..4977958746ef --- /dev/null +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/data_to_point.go @@ -0,0 +1,96 @@ +package api + +import ( + "fmt" + "reflect" + "strings" + "time" + + "github.com/influxdata/influxdb-client-go/v2/api/write" +) + +// DataToPoint converts custom point structures into a Point. +// Each visible field of the point on input must be annotated with +// 'lp' prefix and values measurement,tag, field or timestamp. +// Valid point must contain measurement and at least one field. +// +// A field with timestamp must be of a type time.Time +// +// type TemperatureSensor struct { +// Measurement string `lp:"measurement"` +// Sensor string `lp:"tag,sensor"` +// ID string `lp:"tag,device_id"` +// Temp float64 `lp:"field,temperature"` +// Hum int `lp:"field,humidity"` +// Time time.Time `lp:"timestamp,temperature"` +// Description string `lp:"-"` +// } +func DataToPoint(x interface{}) (*write.Point, error) { + t := reflect.TypeOf(x) + v := reflect.ValueOf(x) + if t.Kind() == reflect.Ptr { + t = t.Elem() + v = v.Elem() + } + if t.Kind() != reflect.Struct { + return nil, fmt.Errorf("cannot use %v as point", t) + } + fields := reflect.VisibleFields(t) + + var measurement = "" + var lpTags = make(map[string]string) + var lpFields = make(map[string]interface{}) + var lpTime time.Time + + for _, f := range fields { + name := f.Name + if tag, ok := f.Tag.Lookup("lp"); ok { + if tag == "-" { + continue + } + parts := strings.Split(tag, ",") + if len(parts) > 2 { + return nil, fmt.Errorf("multiple tag attributes are not supported") + } + typ := parts[0] + if len(parts) == 2 { + name = parts[1] + } + t := getFieldType(v.FieldByIndex(f.Index)) + if !validFieldType(t) { + return nil, fmt.Errorf("cannot use field '%s' of type '%v' as to create a point", f.Name, t) + } + switch typ { + case "measurement": + if measurement != "" { + return nil, fmt.Errorf("multiple measurement fields") + } + measurement = v.FieldByIndex(f.Index).String() + case "tag": + if name == "" { + return nil, fmt.Errorf("cannot use field '%s': invalid lp tag name \"\"", f.Name) + } + lpTags[name] = v.FieldByIndex(f.Index).String() + case "field": + if name == "" { + return nil, fmt.Errorf("cannot use field '%s': invalid lp field name \"\"", f.Name) + } + lpFields[name] = v.FieldByIndex(f.Index).Interface() + case "timestamp": + if f.Type != timeType { + return nil, fmt.Errorf("cannot use field '%s' as a timestamp", f.Name) + } + lpTime = v.FieldByIndex(f.Index).Interface().(time.Time) + default: + return nil, fmt.Errorf("invalid tag %s", typ) + } + } + } + if measurement == "" { + return nil, fmt.Errorf("no struct field with tag 'measurement'") + } + if len(lpFields) == 0 { + return nil, fmt.Errorf("no struct field with tag 'field'") + } + return write.NewPoint(measurement, lpTags, lpFields, lpTime), nil +} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/delete.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/delete.go index f40b571759d5..820ad86c0947 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/delete.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/delete.go @@ -16,44 +16,32 @@ import ( // Empty predicate string means all data from the given time range will be deleted. See https://v2.docs.influxdata.com/v2.0/reference/syntax/delete-predicate/ // for more info about predicate syntax. type DeleteAPI interface { - // Delete deletes series selected by by the time range specified by start and stop arguments and optional predicate string from the bucket bucket belonging to the organization org. + // Delete deletes series selected by the time range specified by start and stop arguments and optional predicate string from the bucket bucket belonging to the organization org. Delete(ctx context.Context, org *domain.Organization, bucket *domain.Bucket, start, stop time.Time, predicate string) error - // Delete deletes series selected by by the time range specified by start and stop arguments and optional predicate string from the bucket with ID bucketID belonging to the organization with ID orgID. + // DeleteWithID deletes series selected by the time range specified by start and stop arguments and optional predicate string from the bucket with ID bucketID belonging to the organization with ID orgID. DeleteWithID(ctx context.Context, orgID, bucketID string, start, stop time.Time, predicate string) error - // Delete deletes series selected by by the time range specified by start and stop arguments and optional predicate string from the bucket with name bucketName belonging to the organization with name orgName. + // DeleteWithName deletes series selected by the time range specified by start and stop arguments and optional predicate string from the bucket with name bucketName belonging to the organization with name orgName. DeleteWithName(ctx context.Context, orgName, bucketName string, start, stop time.Time, predicate string) error } // deleteAPI implements DeleteAPI type deleteAPI struct { - apiClient *domain.ClientWithResponses + apiClient *domain.Client } // NewDeleteAPI creates new instance of DeleteAPI -func NewDeleteAPI(apiClient *domain.ClientWithResponses) DeleteAPI { +func NewDeleteAPI(apiClient *domain.Client) DeleteAPI { return &deleteAPI{ apiClient: apiClient, } } func (d *deleteAPI) delete(ctx context.Context, params *domain.PostDeleteParams, conditions *domain.DeletePredicateRequest) error { - resp, err := d.apiClient.PostDeleteWithResponse(ctx, params, domain.PostDeleteJSONRequestBody(*conditions)) - if err != nil { - return err + allParams := &domain.PostDeleteAllParams{ + PostDeleteParams: *params, + Body: domain.PostDeleteJSONRequestBody(*conditions), } - if resp.JSON404 != nil { - return domain.ErrorToHTTPError(resp.JSON404, resp.StatusCode()) - } - if resp.JSON403 != nil { - return domain.ErrorToHTTPError(resp.JSON403, resp.StatusCode()) - } - if resp.JSON400 != nil { - return domain.ErrorToHTTPError(resp.JSON400, resp.StatusCode()) - } - if resp.JSONDefault != nil { - return domain.ErrorToHTTPError(resp.JSONDefault, resp.StatusCode()) - } - return nil + return d.apiClient.PostDelete(ctx, allParams) } func (d *deleteAPI) Delete(ctx context.Context, org *domain.Organization, bucket *domain.Bucket, start, stop time.Time, predicate string) error { diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/error.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/error.go index 2cbcae458d0a..af1a2dee84c4 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/error.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/error.go @@ -6,6 +6,7 @@ package http import ( "fmt" + "net/http" "strconv" ) @@ -16,6 +17,7 @@ type Error struct { Message string Err error RetryAfter uint + Header http.Header } // Error fulfils error interface @@ -37,6 +39,25 @@ func (e *Error) Unwrap() error { return nil } +// HeaderToString generates a string value from the Header property. Useful in logging. +func (e *Error) HeaderToString(selected []string) string { + headerString := "" + if len(selected) == 0 { + for key := range e.Header { + k := http.CanonicalHeaderKey(key) + headerString += fmt.Sprintf("%s: %s\r\n", k, e.Header.Get(k)) + } + } else { + for _, candidate := range selected { + c := http.CanonicalHeaderKey(candidate) + if e.Header.Get(c) != "" { + headerString += fmt.Sprintf("%s: %s\n", c, e.Header.Get(c)) + } + } + } + return headerString +} + // NewError returns newly created Error initialised with nested error and default values func NewError(err error) *Error { return &Error{ @@ -45,5 +66,6 @@ func NewError(err error) *Error { Message: "", Err: err, RetryAfter: 0, + Header: http.Header{}, } } diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/options.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/options.go index 66ef53934d01..f8b773dd731d 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/options.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/options.go @@ -23,6 +23,8 @@ type Options struct { tlsConfig *tls.Config // HTTP request timeout in sec. Default 20 httpRequestTimeout uint + // Application name in the User-Agent HTTP header string + appName string } // HTTPClient returns the http.Client that is configured to be used @@ -38,6 +40,7 @@ func (o *Options) HTTPClient() *http.Client { o.httpClient = &http.Client{ Timeout: time.Second * time.Duration(o.HTTPRequestTimeout()), Transport: &http.Transport{ + Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ Timeout: 5 * time.Second, }).DialContext, @@ -119,6 +122,17 @@ func (o *Options) SetHTTPRequestTimeout(httpRequestTimeout uint) *Options { return o } +// ApplicationName returns application name used in the User-Agent HTTP header +func (o *Options) ApplicationName() string { + return o.appName +} + +// SetApplicationName sets an application name to the User-Agent HTTP header +func (o *Options) SetApplicationName(appName string) *Options { + o.appName = appName + return o +} + // DefaultOptions returns Options object with default values func DefaultOptions() *Options { return &Options{httpRequestTimeout: 20} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/service.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/service.go index aa8cd1b0add1..ef1b8d138821 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/service.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/http/service.go @@ -9,14 +9,14 @@ // // Service can be obtained from client using HTTPService() method. // It can be also created directly. To instantiate a Service use NewService(). Remember, the authorization param is in form "Token your-auth-token". e.g. "Token DXnd7annkGteV5Wqx9G3YjO9Ezkw87nHk8OabcyHCxF5451kdBV0Ag2cG7OmZZgCUTHroagUPdxbuoyen6TSPw==". -// srv := http.NewService("http://localhost:8086", "Token my-token", http.DefaultOptions()) +// +// srv := http.NewService("http://localhost:8086", "Token my-token", http.DefaultOptions()) package http import ( "context" "encoding/json" "io" - "io/ioutil" "mime" "net/http" "net/url" @@ -56,6 +56,7 @@ type service struct { serverURL string authorization string client Doer + userAgent string } // NewService creates instance of http Service with given parameters @@ -73,6 +74,7 @@ func NewService(serverURL, authorization string, httpOptions *Options) Service { serverURL: serverURL, authorization: authorization, client: httpOptions.HTTPDoer(), + userAgent: http2.FormatUserAgent(httpOptions.ApplicationName()), } } @@ -128,7 +130,7 @@ func (s *service) DoHTTPRequestWithResponse(req *http.Request, requestCallback R req.Header.Set("Authorization", s.authorization) } if req.Header.Get("User-Agent") == "" { - req.Header.Set("User-Agent", http2.UserAgent) + req.Header.Set("User-Agent", s.userAgent) } if requestCallback != nil { requestCallback(req) @@ -143,12 +145,13 @@ func (s *service) parseHTTPError(r *http.Response) *Error { } defer func() { // discard body so connection can be reused - _, _ = io.Copy(ioutil.Discard, r.Body) + _, _ = io.Copy(io.Discard, r.Body) _ = r.Body.Close() }() perror := NewError(nil) perror.StatusCode = r.StatusCode + perror.Header = r.Header if v := r.Header.Get("Retry-After"); v != "" { r, err := strconv.ParseUint(v, 10, 32) @@ -162,7 +165,7 @@ func (s *service) parseHTTPError(r *http.Response) *Error { if ctype == "application/json" { perror.Err = json.NewDecoder(r.Body).Decode(perror) } else { - body, err := ioutil.ReadAll(r.Body) + body, err := io.ReadAll(r.Body) if err != nil { perror.Err = err return perror diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/labels.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/labels.go index ee5774812d26..ce0f8245f271 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/labels.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/labels.go @@ -28,7 +28,7 @@ type LabelsAPI interface { // CreateLabelWithName creates a new label with label labelName and properties, under the organization org. // Properties example: {"color": "ffb3b3", "description": "this is a description"}. CreateLabelWithName(ctx context.Context, org *domain.Organization, labelName string, properties map[string]string) (*domain.Label, error) - // CreateLabelWithName creates a new label with label labelName and properties, under the organization with id orgID. + // CreateLabelWithNameWithID creates a new label with label labelName and properties, under the organization with id orgID. // Properties example: {"color": "ffb3b3", "description": "this is a description"}. CreateLabelWithNameWithID(ctx context.Context, orgID, labelName string, properties map[string]string) (*domain.Label, error) // UpdateLabel updates the label. @@ -42,11 +42,11 @@ type LabelsAPI interface { // labelsAPI implements LabelsAPI type labelsAPI struct { - apiClient *domain.ClientWithResponses + apiClient *domain.Client } // NewLabelsAPI creates new instance of LabelsAPI -func NewLabelsAPI(apiClient *domain.ClientWithResponses) LabelsAPI { +func NewLabelsAPI(apiClient *domain.Client) LabelsAPI { return &labelsAPI{ apiClient: apiClient, } @@ -58,14 +58,11 @@ func (u *labelsAPI) GetLabels(ctx context.Context) (*[]domain.Label, error) { } func (u *labelsAPI) getLabels(ctx context.Context, params *domain.GetLabelsParams) (*[]domain.Label, error) { - response, err := u.apiClient.GetLabelsWithResponse(ctx, params) + response, err := u.apiClient.GetLabels(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return (*[]domain.Label)(response.JSON200.Labels), nil + return (*[]domain.Label)(response.Labels), nil } func (u *labelsAPI) FindLabelsByOrg(ctx context.Context, org *domain.Organization) (*[]domain.Label, error) { @@ -78,15 +75,14 @@ func (u *labelsAPI) FindLabelsByOrgID(ctx context.Context, orgID string) (*[]dom } func (u *labelsAPI) FindLabelByID(ctx context.Context, labelID string) (*domain.Label, error) { - params := &domain.GetLabelsIDParams{} - response, err := u.apiClient.GetLabelsIDWithResponse(ctx, labelID, params) + params := &domain.GetLabelsIDAllParams{ + LabelID: labelID, + } + response, err := u.apiClient.GetLabelsID(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON200.Label, nil + return response.Label, nil } func (u *labelsAPI) FindLabelByName(ctx context.Context, orgID, labelName string) (*domain.Label, error) { @@ -118,37 +114,33 @@ func (u *labelsAPI) CreateLabelWithNameWithID(ctx context.Context, orgID, labelN } func (u *labelsAPI) CreateLabel(ctx context.Context, label *domain.LabelCreateRequest) (*domain.Label, error) { - response, err := u.apiClient.PostLabelsWithResponse(ctx, domain.PostLabelsJSONRequestBody(*label)) + params := &domain.PostLabelsAllParams{ + Body: domain.PostLabelsJSONRequestBody(*label), + } + response, err := u.apiClient.PostLabels(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON201.Label, nil + return response.Label, nil } func (u *labelsAPI) UpdateLabel(ctx context.Context, label *domain.Label) (*domain.Label, error) { var props *domain.LabelUpdate_Properties - params := &domain.PatchLabelsIDParams{} if label.Properties != nil { props = &domain.LabelUpdate_Properties{AdditionalProperties: label.Properties.AdditionalProperties} } - body := &domain.LabelUpdate{ - Name: label.Name, - Properties: props, + params := &domain.PatchLabelsIDAllParams{ + Body: domain.PatchLabelsIDJSONRequestBody(domain.LabelUpdate{ + Name: label.Name, + Properties: props, + }), + LabelID: *label.Id, } - response, err := u.apiClient.PatchLabelsIDWithResponse(ctx, *label.Id, params, domain.PatchLabelsIDJSONRequestBody(*body)) + response, err := u.apiClient.PatchLabelsID(ctx, params) if err != nil { return nil, err } - if response.JSON404 != nil { - return nil, domain.ErrorToHTTPError(response.JSON404, response.StatusCode()) - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON200.Label, nil + return response.Label, nil } func (u *labelsAPI) DeleteLabel(ctx context.Context, label *domain.Label) error { @@ -156,16 +148,8 @@ func (u *labelsAPI) DeleteLabel(ctx context.Context, label *domain.Label) error } func (u *labelsAPI) DeleteLabelWithID(ctx context.Context, labelID string) error { - params := &domain.DeleteLabelsIDParams{} - response, err := u.apiClient.DeleteLabelsIDWithResponse(ctx, labelID, params) - if err != nil { - return err - } - if response.JSON404 != nil { - return domain.ErrorToHTTPError(response.JSON404, response.StatusCode()) - } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.DeleteLabelsIDAllParams{ + LabelID: labelID, } - return nil + return u.apiClient.DeleteLabelsID(ctx, params) } diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/organizations.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/organizations.go index 75bc847160ac..a54f315497a8 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/organizations.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/organizations.go @@ -61,11 +61,11 @@ type OrganizationsAPI interface { // organizationsAPI implements OrganizationsAPI type organizationsAPI struct { - apiClient *domain.ClientWithResponses + apiClient *domain.Client } // NewOrganizationsAPI creates new instance of OrganizationsAPI -func NewOrganizationsAPI(apiClient *domain.ClientWithResponses) OrganizationsAPI { +func NewOrganizationsAPI(apiClient *domain.Client) OrganizationsAPI { return &organizationsAPI{ apiClient: apiClient, } @@ -81,14 +81,11 @@ func (o *organizationsAPI) getOrganizations(ctx context.Context, params *domain. } params.Offset = &options.offset params.Descending = &options.descending - response, err := o.apiClient.GetOrgsWithResponse(ctx, params) + response, err := o.apiClient.GetOrgs(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON200.Orgs, nil + return response.Orgs, nil } func (o *organizationsAPI) GetOrganizations(ctx context.Context, pagingOptions ...PagingOption) (*[]domain.Organization, error) { params := &domain.GetOrgsParams{} @@ -108,15 +105,10 @@ func (o *organizationsAPI) FindOrganizationByName(ctx context.Context, orgName s } func (o *organizationsAPI) FindOrganizationByID(ctx context.Context, orgID string) (*domain.Organization, error) { - params := &domain.GetOrgsIDParams{} - response, err := o.apiClient.GetOrgsIDWithResponse(ctx, orgID, params) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.GetOrgsIDAllParams{ + OrgID: orgID, } - return response.JSON200, nil + return o.apiClient.GetOrgsID(ctx, params) } func (o *organizationsAPI) FindOrganizationsByUserID(ctx context.Context, userID string, pagingOptions ...PagingOption) (*[]domain.Organization, error) { @@ -125,19 +117,13 @@ func (o *organizationsAPI) FindOrganizationsByUserID(ctx context.Context, userID } func (o *organizationsAPI) CreateOrganization(ctx context.Context, org *domain.Organization) (*domain.Organization, error) { - params := &domain.PostOrgsParams{} - req := domain.PostOrgsJSONRequestBody{ - Name: org.Name, - Description: org.Description, - } - response, err := o.apiClient.PostOrgsWithResponse(ctx, params, req) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.PostOrgsAllParams{ + Body: domain.PostOrgsJSONRequestBody{ + Name: org.Name, + Description: org.Description, + }, } - return response.JSON201, nil + return o.apiClient.PostOrgs(ctx, params) } func (o *organizationsAPI) CreateOrganizationWithName(ctx context.Context, orgName string) (*domain.Organization, error) { @@ -151,34 +137,21 @@ func (o *organizationsAPI) DeleteOrganization(ctx context.Context, org *domain.O } func (o *organizationsAPI) DeleteOrganizationWithID(ctx context.Context, orgID string) error { - params := &domain.DeleteOrgsIDParams{} - response, err := o.apiClient.DeleteOrgsIDWithResponse(ctx, orgID, params) - if err != nil { - return err - } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.DeleteOrgsIDAllParams{ + OrgID: orgID, } - if response.JSON404 != nil { - return domain.ErrorToHTTPError(response.JSON404, response.StatusCode()) - } - return nil + return o.apiClient.DeleteOrgsID(ctx, params) } func (o *organizationsAPI) UpdateOrganization(ctx context.Context, org *domain.Organization) (*domain.Organization, error) { - params := &domain.PatchOrgsIDParams{} - req := domain.PatchOrgsIDJSONRequestBody{ - Name: &org.Name, - Description: org.Description, - } - response, err := o.apiClient.PatchOrgsIDWithResponse(ctx, *org.Id, params, req) - if err != nil { - return nil, err + params := &domain.PatchOrgsIDAllParams{ + Body: domain.PatchOrgsIDJSONRequestBody{ + Name: &org.Name, + Description: org.Description, + }, + OrgID: *org.Id, } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON200, nil + return o.apiClient.PatchOrgsID(ctx, params) } func (o *organizationsAPI) GetMembers(ctx context.Context, org *domain.Organization) (*[]domain.ResourceMember, error) { @@ -186,18 +159,14 @@ func (o *organizationsAPI) GetMembers(ctx context.Context, org *domain.Organizat } func (o *organizationsAPI) GetMembersWithID(ctx context.Context, orgID string) (*[]domain.ResourceMember, error) { - params := &domain.GetOrgsIDMembersParams{} - response, err := o.apiClient.GetOrgsIDMembersWithResponse(ctx, orgID, params) + params := &domain.GetOrgsIDMembersAllParams{ + OrgID: orgID, + } + response, err := o.apiClient.GetOrgsIDMembers(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON404 != nil { - return nil, domain.ErrorToHTTPError(response.JSON404, response.StatusCode()) - } - return response.JSON200.Users, nil + return response.Users, nil } func (o *organizationsAPI) AddMember(ctx context.Context, org *domain.Organization, user *domain.User) (*domain.ResourceMember, error) { @@ -205,16 +174,11 @@ func (o *organizationsAPI) AddMember(ctx context.Context, org *domain.Organizati } func (o *organizationsAPI) AddMemberWithID(ctx context.Context, orgID, memberID string) (*domain.ResourceMember, error) { - params := &domain.PostOrgsIDMembersParams{} - body := &domain.PostOrgsIDMembersJSONRequestBody{Id: memberID} - response, err := o.apiClient.PostOrgsIDMembersWithResponse(ctx, orgID, params, *body) - if err != nil { - return nil, err + params := &domain.PostOrgsIDMembersAllParams{ + Body: domain.PostOrgsIDMembersJSONRequestBody{Id: memberID}, + OrgID: orgID, } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON201, nil + return o.apiClient.PostOrgsIDMembers(ctx, params) } func (o *organizationsAPI) RemoveMember(ctx context.Context, org *domain.Organization, user *domain.User) error { @@ -222,15 +186,11 @@ func (o *organizationsAPI) RemoveMember(ctx context.Context, org *domain.Organiz } func (o *organizationsAPI) RemoveMemberWithID(ctx context.Context, orgID, memberID string) error { - params := &domain.DeleteOrgsIDMembersIDParams{} - response, err := o.apiClient.DeleteOrgsIDMembersIDWithResponse(ctx, orgID, memberID, params) - if err != nil { - return err + params := &domain.DeleteOrgsIDMembersIDAllParams{ + OrgID: orgID, + UserID: memberID, } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return nil + return o.apiClient.DeleteOrgsIDMembersID(ctx, params) } func (o *organizationsAPI) GetOwners(ctx context.Context, org *domain.Organization) (*[]domain.ResourceOwner, error) { @@ -238,18 +198,14 @@ func (o *organizationsAPI) GetOwners(ctx context.Context, org *domain.Organizati } func (o *organizationsAPI) GetOwnersWithID(ctx context.Context, orgID string) (*[]domain.ResourceOwner, error) { - params := &domain.GetOrgsIDOwnersParams{} - response, err := o.apiClient.GetOrgsIDOwnersWithResponse(ctx, orgID, params) + params := &domain.GetOrgsIDOwnersAllParams{ + OrgID: orgID, + } + response, err := o.apiClient.GetOrgsIDOwners(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON404 != nil { - return nil, domain.ErrorToHTTPError(response.JSON404, response.StatusCode()) - } - return response.JSON200.Users, nil + return response.Users, nil } func (o *organizationsAPI) AddOwner(ctx context.Context, org *domain.Organization, user *domain.User) (*domain.ResourceOwner, error) { @@ -257,16 +213,11 @@ func (o *organizationsAPI) AddOwner(ctx context.Context, org *domain.Organizatio } func (o *organizationsAPI) AddOwnerWithID(ctx context.Context, orgID, memberID string) (*domain.ResourceOwner, error) { - params := &domain.PostOrgsIDOwnersParams{} - body := &domain.PostOrgsIDOwnersJSONRequestBody{Id: memberID} - response, err := o.apiClient.PostOrgsIDOwnersWithResponse(ctx, orgID, params, *body) - if err != nil { - return nil, err + params := &domain.PostOrgsIDOwnersAllParams{ + Body: domain.PostOrgsIDOwnersJSONRequestBody{Id: memberID}, + OrgID: orgID, } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON201, nil + return o.apiClient.PostOrgsIDOwners(ctx, params) } func (o *organizationsAPI) RemoveOwner(ctx context.Context, org *domain.Organization, user *domain.User) error { @@ -274,13 +225,9 @@ func (o *organizationsAPI) RemoveOwner(ctx context.Context, org *domain.Organiza } func (o *organizationsAPI) RemoveOwnerWithID(ctx context.Context, orgID, memberID string) error { - params := &domain.DeleteOrgsIDOwnersIDParams{} - response, err := o.apiClient.DeleteOrgsIDOwnersIDWithResponse(ctx, orgID, memberID, params) - if err != nil { - return err - } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.DeleteOrgsIDOwnersIDAllParams{ + OrgID: orgID, + UserID: memberID, } - return nil + return o.apiClient.DeleteOrgsIDOwnersID(ctx, params) } diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/query.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/query.go index 9582d4540af8..a54714875f7a 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/query.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/query.go @@ -14,7 +14,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "net/http" "net/url" "path" @@ -50,20 +49,19 @@ const ( // The name of a struct field or a map key (must be a string) will be a param name. // The name of the parameter represented by a struct field can be specified by JSON annotation: // -// type Condition struct { -// Start time.Time `json:"start"` -// Field string `json:"field"` -// Value float64 `json:"value"` -// } +// type Condition struct { +// Start time.Time `json:"start"` +// Field string `json:"field"` +// Value float64 `json:"value"` +// } // -// Parameters are then accessed via the Flux params object: -// -// query:= `from(bucket: "environment") -// |> range(start: time(v: params.start)) -// |> filter(fn: (r) => r._measurement == "air") -// |> filter(fn: (r) => r._field == params.field) -// |> filter(fn: (r) => r._value > params.value)` +// Parameters are then accessed via the Flux params object: // +// query:= `from(bucket: "environment") +// |> range(start: time(v: params.start)) +// |> filter(fn: (r) => r._measurement == "air") +// |> filter(fn: (r) => r._field == params.field) +// |> filter(fn: (r) => r._value > params.value)` type QueryAPI interface { // QueryRaw executes flux query on the InfluxDB server and returns complete query result as a string with table annotations according to dialect QueryRaw(ctx context.Context, query string, dialect *domain.Dialect) (string, error) @@ -113,7 +111,7 @@ type queryAPI struct { lock sync.Mutex } -// queryBody holds the body for an HTTP query request. +// queryBody holds the body for an HTTP query request. type queryBody struct { Dialect *domain.Dialect `json:"dialect,omitempty"` Query string `json:"query"` @@ -158,7 +156,7 @@ func (q *queryAPI) QueryRawWithParams(ctx context.Context, query string, dialect return err } } - respBody, err := ioutil.ReadAll(resp.Body) + respBody, err := io.ReadAll(resp.Body) if err != nil { return err } @@ -291,22 +289,6 @@ func checkParamsType(p interface{}) error { return nil } -// getFieldType extracts type of value -func getFieldType(v reflect.Value) reflect.Type { - t := v.Type() - if t.Kind() == reflect.Ptr { - t = t.Elem() - v = v.Elem() - } - if t.Kind() == reflect.Interface && !v.IsNil() { - t = reflect.ValueOf(v.Interface()).Type() - } - return t -} - -// timeType is the exact type for the Time -var timeType = reflect.TypeOf(time.Time{}) - // validParamType validates that t is primitive type or string or interface func validParamType(t reflect.Type) bool { return (t.Kind() > reflect.Invalid && t.Kind() < reflect.Complex64) || diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/reflection.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/reflection.go new file mode 100644 index 000000000000..8becc4079d91 --- /dev/null +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/reflection.go @@ -0,0 +1,29 @@ +package api + +import ( + "reflect" + "time" +) + +// getFieldType extracts type of value +func getFieldType(v reflect.Value) reflect.Type { + t := v.Type() + if t.Kind() == reflect.Ptr { + t = t.Elem() + v = v.Elem() + } + if t.Kind() == reflect.Interface && !v.IsNil() { + t = reflect.ValueOf(v.Interface()).Type() + } + return t +} + +// timeType is the exact type for the Time +var timeType = reflect.TypeOf(time.Time{}) + +// validFieldType validates that t is primitive type or string or interface +func validFieldType(t reflect.Type) bool { + return (t.Kind() > reflect.Invalid && t.Kind() < reflect.Complex64) || + t.Kind() == reflect.String || + t == timeType +} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/tasks.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/tasks.go index e584fa3bef19..f2a219823055 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/tasks.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/tasks.go @@ -6,7 +6,6 @@ package api import ( "context" - "errors" "fmt" "time" @@ -58,7 +57,7 @@ type TasksAPI interface { // Every has higher priority. CreateTask(ctx context.Context, task *domain.Task) (*domain.Task, error) // CreateTaskWithEvery creates a new task with the name, flux script and every repetition setting, in the org orgID. - // Every holds duration values. + // Every means duration values. CreateTaskWithEvery(ctx context.Context, name, flux, every, orgID string) (*domain.Task, error) // CreateTaskWithCron creates a new task with the name, flux script and cron repetition setting, in the org orgID // Cron holds cron-like setting, e.g. once an hour at beginning of the hour "0 * * * *". @@ -127,7 +126,7 @@ type TasksAPI interface { FindLogsWithID(ctx context.Context, taskID string) ([]domain.LogEvent, error) // FindLabels retrieves labels of a task. FindLabels(ctx context.Context, task *domain.Task) ([]domain.Label, error) - // FindLabelsWithID retrieves labels of an task with taskID. + // FindLabelsWithID retrieves labels of a task with taskID. FindLabelsWithID(ctx context.Context, taskID string) ([]domain.Label, error) // AddLabel adds a label to a task. AddLabel(ctx context.Context, task *domain.Task, label *domain.Label) (*domain.Label, error) @@ -141,11 +140,11 @@ type TasksAPI interface { // tasksAPI implements TasksAPI type tasksAPI struct { - apiClient *domain.ClientWithResponses + apiClient *domain.Client } // NewTasksAPI creates new instance of TasksAPI -func NewTasksAPI(apiClient *domain.ClientWithResponses) TasksAPI { +func NewTasksAPI(apiClient *domain.Client) TasksAPI { return &tasksAPI{ apiClient: apiClient, } @@ -178,17 +177,11 @@ func (t *tasksAPI) FindTasks(ctx context.Context, filter *TaskFilter) ([]domain. } } - response, err := t.apiClient.GetTasksWithResponse(ctx, params) + response, err := t.apiClient.GetTasks(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON200.Tasks == nil { - return nil, errors.New("tasks not found") - } - return *response.JSON200.Tasks, nil + return *response.Tasks, nil } func (t *tasksAPI) GetTask(ctx context.Context, task *domain.Task) (*domain.Task, error) { @@ -196,27 +189,17 @@ func (t *tasksAPI) GetTask(ctx context.Context, task *domain.Task) (*domain.Task } func (t *tasksAPI) GetTaskByID(ctx context.Context, taskID string) (*domain.Task, error) { - params := &domain.GetTasksIDParams{} - response, err := t.apiClient.GetTasksIDWithResponse(ctx, taskID, params) - if err != nil { - return nil, err + params := &domain.GetTasksIDAllParams{ + TaskID: taskID, } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON200, nil + return t.apiClient.GetTasksID(ctx, params) } func (t *tasksAPI) createTask(ctx context.Context, taskReq *domain.TaskCreateRequest) (*domain.Task, error) { - params := &domain.PostTasksParams{} - response, err := t.apiClient.PostTasksWithResponse(ctx, params, domain.PostTasksJSONRequestBody(*taskReq)) - if err != nil { - return nil, err + params := &domain.PostTasksAllParams{ + Body: domain.PostTasksJSONRequestBody(*taskReq), } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON201, nil + return t.apiClient.PostTasks(ctx, params) } func createTaskReqDetailed(name, flux string, every, cron *string, orgID string) *domain.TaskCreateRequest { @@ -267,39 +250,29 @@ func (t *tasksAPI) DeleteTask(ctx context.Context, task *domain.Task) error { } func (t *tasksAPI) DeleteTaskWithID(ctx context.Context, taskID string) error { - params := &domain.DeleteTasksIDParams{} - response, err := t.apiClient.DeleteTasksIDWithResponse(ctx, taskID, params) - if err != nil { - return err + params := &domain.DeleteTasksIDAllParams{ + TaskID: taskID, } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return nil + return t.apiClient.DeleteTasksID(ctx, params) } func (t *tasksAPI) UpdateTask(ctx context.Context, task *domain.Task) (*domain.Task, error) { - params := &domain.PatchTasksIDParams{} - updateReq := &domain.TaskUpdateRequest{ - Description: task.Description, - Flux: &task.Flux, - Name: &task.Name, - Offset: task.Offset, - Status: task.Status, + params := &domain.PatchTasksIDAllParams{ + Body: domain.PatchTasksIDJSONRequestBody(domain.TaskUpdateRequest{ + Description: task.Description, + Flux: &task.Flux, + Name: &task.Name, + Offset: task.Offset, + Status: task.Status, + }), + TaskID: task.Id, } if task.Every != nil { - updateReq.Every = task.Every + params.Body.Every = task.Every } else { - updateReq.Cron = task.Cron - } - response, err := t.apiClient.PatchTasksIDWithResponse(ctx, task.Id, params, domain.PatchTasksIDJSONRequestBody(*updateReq)) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params.Body.Cron = task.Cron } - return response.JSON200, nil + return t.apiClient.PatchTasksID(ctx, params) } func (t *tasksAPI) FindMembers(ctx context.Context, task *domain.Task) ([]domain.ResourceMember, error) { @@ -307,18 +280,14 @@ func (t *tasksAPI) FindMembers(ctx context.Context, task *domain.Task) ([]domain } func (t *tasksAPI) FindMembersWithID(ctx context.Context, taskID string) ([]domain.ResourceMember, error) { - params := &domain.GetTasksIDMembersParams{} - response, err := t.apiClient.GetTasksIDMembersWithResponse(ctx, taskID, params) + params := &domain.GetTasksIDMembersAllParams{ + TaskID: taskID, + } + response, err := t.apiClient.GetTasksIDMembers(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON200.Users == nil { - return nil, fmt.Errorf("members for task '%s' not found", taskID) - } - return *response.JSON200.Users, nil + return *response.Users, nil } func (t *tasksAPI) AddMember(ctx context.Context, task *domain.Task, user *domain.User) (*domain.ResourceMember, error) { @@ -326,16 +295,12 @@ func (t *tasksAPI) AddMember(ctx context.Context, task *domain.Task, user *domai } func (t *tasksAPI) AddMemberWithID(ctx context.Context, taskID, memberID string) (*domain.ResourceMember, error) { - params := &domain.PostTasksIDMembersParams{} - body := &domain.PostTasksIDMembersJSONRequestBody{Id: memberID} - response, err := t.apiClient.PostTasksIDMembersWithResponse(ctx, taskID, params, *body) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.PostTasksIDMembersAllParams{ + TaskID: taskID, + Body: domain.PostTasksIDMembersJSONRequestBody{Id: memberID}, } - return response.JSON201, nil + + return t.apiClient.PostTasksIDMembers(ctx, params) } func (t *tasksAPI) RemoveMember(ctx context.Context, task *domain.Task, user *domain.User) error { @@ -343,15 +308,11 @@ func (t *tasksAPI) RemoveMember(ctx context.Context, task *domain.Task, user *do } func (t *tasksAPI) RemoveMemberWithID(ctx context.Context, taskID, memberID string) error { - params := &domain.DeleteTasksIDMembersIDParams{} - response, err := t.apiClient.DeleteTasksIDMembersIDWithResponse(ctx, taskID, memberID, params) - if err != nil { - return err - } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.DeleteTasksIDMembersIDAllParams{ + TaskID: taskID, + UserID: memberID, } - return nil + return t.apiClient.DeleteTasksIDMembersID(ctx, params) } func (t *tasksAPI) FindOwners(ctx context.Context, task *domain.Task) ([]domain.ResourceOwner, error) { @@ -359,18 +320,14 @@ func (t *tasksAPI) FindOwners(ctx context.Context, task *domain.Task) ([]domain. } func (t *tasksAPI) FindOwnersWithID(ctx context.Context, taskID string) ([]domain.ResourceOwner, error) { - params := &domain.GetTasksIDOwnersParams{} - response, err := t.apiClient.GetTasksIDOwnersWithResponse(ctx, taskID, params) + params := &domain.GetTasksIDOwnersAllParams{ + TaskID: taskID, + } + response, err := t.apiClient.GetTasksIDOwners(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON200.Users == nil { - return nil, fmt.Errorf("owners for task '%s' not found", taskID) - } - return *response.JSON200.Users, nil + return *response.Users, nil } func (t *tasksAPI) AddOwner(ctx context.Context, task *domain.Task, user *domain.User) (*domain.ResourceOwner, error) { @@ -378,16 +335,11 @@ func (t *tasksAPI) AddOwner(ctx context.Context, task *domain.Task, user *domain } func (t *tasksAPI) AddOwnerWithID(ctx context.Context, taskID, memberID string) (*domain.ResourceOwner, error) { - params := &domain.PostTasksIDOwnersParams{} - body := &domain.PostTasksIDOwnersJSONRequestBody{Id: memberID} - response, err := t.apiClient.PostTasksIDOwnersWithResponse(ctx, taskID, params, *body) - if err != nil { - return nil, err + params := &domain.PostTasksIDOwnersAllParams{ + Body: domain.PostTasksIDOwnersJSONRequestBody{Id: memberID}, + TaskID: taskID, } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON201, nil + return t.apiClient.PostTasksIDOwners(ctx, params) } func (t *tasksAPI) RemoveOwner(ctx context.Context, task *domain.Task, user *domain.User) error { @@ -395,15 +347,11 @@ func (t *tasksAPI) RemoveOwner(ctx context.Context, task *domain.Task, user *dom } func (t *tasksAPI) RemoveOwnerWithID(ctx context.Context, taskID, memberID string) error { - params := &domain.DeleteTasksIDOwnersIDParams{} - response, err := t.apiClient.DeleteTasksIDOwnersIDWithResponse(ctx, taskID, memberID, params) - if err != nil { - return err + params := &domain.DeleteTasksIDOwnersIDAllParams{ + TaskID: taskID, + UserID: memberID, } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return nil + return t.apiClient.DeleteTasksIDOwnersID(ctx, params) } func (t *tasksAPI) FindRuns(ctx context.Context, task *domain.Task, filter *RunFilter) ([]domain.Run, error) { @@ -411,7 +359,7 @@ func (t *tasksAPI) FindRuns(ctx context.Context, task *domain.Task, filter *RunF } func (t *tasksAPI) FindRunsWithID(ctx context.Context, taskID string, filter *RunFilter) ([]domain.Run, error) { - params := &domain.GetTasksIDRunsParams{} + params := &domain.GetTasksIDRunsAllParams{TaskID: taskID} if filter != nil { if !filter.AfterTime.IsZero() { params.AfterTime = &filter.AfterTime @@ -426,14 +374,11 @@ func (t *tasksAPI) FindRunsWithID(ctx context.Context, taskID string, filter *Ru params.After = &filter.After } } - response, err := t.apiClient.GetTasksIDRunsWithResponse(ctx, taskID, params) + response, err := t.apiClient.GetTasksIDRuns(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return *response.JSON200.Runs, nil + return *response.Runs, nil } func (t *tasksAPI) GetRun(ctx context.Context, run *domain.Run) (*domain.Run, error) { @@ -441,34 +386,29 @@ func (t *tasksAPI) GetRun(ctx context.Context, run *domain.Run) (*domain.Run, er } func (t *tasksAPI) GetRunByID(ctx context.Context, taskID, runID string) (*domain.Run, error) { - params := &domain.GetTasksIDRunsIDParams{} - response, err := t.apiClient.GetTasksIDRunsIDWithResponse(ctx, taskID, runID, params) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.GetTasksIDRunsIDAllParams{ + TaskID: taskID, + RunID: runID, } - return response.JSON200, nil + return t.apiClient.GetTasksIDRunsID(ctx, params) } func (t *tasksAPI) FindRunLogs(ctx context.Context, run *domain.Run) ([]domain.LogEvent, error) { return t.FindRunLogsWithID(ctx, *run.TaskID, *run.Id) } func (t *tasksAPI) FindRunLogsWithID(ctx context.Context, taskID, runID string) ([]domain.LogEvent, error) { - params := &domain.GetTasksIDRunsIDLogsParams{} - - response, err := t.apiClient.GetTasksIDRunsIDLogsWithResponse(ctx, taskID, runID, params) + params := &domain.GetTasksIDRunsIDLogsAllParams{ + TaskID: taskID, + RunID: runID, + } + response, err := t.apiClient.GetTasksIDRunsIDLogs(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON200.Events == nil { + if response.Events == nil { return nil, fmt.Errorf("logs for task '%s' run '%s 'not found", taskID, runID) } - return *response.JSON200.Events, nil + return *response.Events, nil } func (t *tasksAPI) RunManually(ctx context.Context, task *domain.Task) (*domain.Run, error) { @@ -476,15 +416,10 @@ func (t *tasksAPI) RunManually(ctx context.Context, task *domain.Task) (*domain. } func (t *tasksAPI) RunManuallyWithID(ctx context.Context, taskID string) (*domain.Run, error) { - params := domain.PostTasksIDRunsParams{} - response, err := t.apiClient.PostTasksIDRunsWithResponse(ctx, taskID, ¶ms, domain.PostTasksIDRunsJSONRequestBody{}) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.PostTasksIDRunsAllParams{ + TaskID: taskID, } - return response.JSON201, nil + return t.apiClient.PostTasksIDRuns(ctx, params) } func (t *tasksAPI) RetryRun(ctx context.Context, run *domain.Run) (*domain.Run, error) { @@ -492,15 +427,11 @@ func (t *tasksAPI) RetryRun(ctx context.Context, run *domain.Run) (*domain.Run, } func (t *tasksAPI) RetryRunWithID(ctx context.Context, taskID, runID string) (*domain.Run, error) { - params := &domain.PostTasksIDRunsIDRetryParams{} - response, err := t.apiClient.PostTasksIDRunsIDRetryWithBodyWithResponse(ctx, taskID, runID, params, "application/json; charset=utf-8", nil) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.PostTasksIDRunsIDRetryAllParams{ + TaskID: taskID, + RunID: runID, } - return response.JSON200, nil + return t.apiClient.PostTasksIDRunsIDRetry(ctx, params) } func (t *tasksAPI) CancelRun(ctx context.Context, run *domain.Run) error { @@ -508,15 +439,11 @@ func (t *tasksAPI) CancelRun(ctx context.Context, run *domain.Run) error { } func (t *tasksAPI) CancelRunWithID(ctx context.Context, taskID, runID string) error { - params := &domain.DeleteTasksIDRunsIDParams{} - response, err := t.apiClient.DeleteTasksIDRunsIDWithResponse(ctx, taskID, runID, params) - if err != nil { - return err - } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.DeleteTasksIDRunsIDAllParams{ + TaskID: taskID, + RunID: runID, } - return nil + return t.apiClient.DeleteTasksIDRunsID(ctx, params) } func (t *tasksAPI) FindLogs(ctx context.Context, task *domain.Task) ([]domain.LogEvent, error) { @@ -524,19 +451,17 @@ func (t *tasksAPI) FindLogs(ctx context.Context, task *domain.Task) ([]domain.Lo } func (t *tasksAPI) FindLogsWithID(ctx context.Context, taskID string) ([]domain.LogEvent, error) { - params := &domain.GetTasksIDLogsParams{} - - response, err := t.apiClient.GetTasksIDLogsWithResponse(ctx, taskID, params) + params := &domain.GetTasksIDLogsAllParams{ + TaskID: taskID, + } + response, err := t.apiClient.GetTasksIDLogs(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON200.Events == nil { + if response.Events == nil { return nil, fmt.Errorf("logs for task '%s' not found", taskID) } - return *response.JSON200.Events, nil + return *response.Events, nil } func (t *tasksAPI) FindLabels(ctx context.Context, task *domain.Task) ([]domain.Label, error) { @@ -544,18 +469,17 @@ func (t *tasksAPI) FindLabels(ctx context.Context, task *domain.Task) ([]domain. } func (t *tasksAPI) FindLabelsWithID(ctx context.Context, taskID string) ([]domain.Label, error) { - params := &domain.GetTasksIDLabelsParams{} - response, err := t.apiClient.GetTasksIDLabelsWithResponse(ctx, taskID, params) + params := &domain.GetTasksIDLabelsAllParams{ + TaskID: taskID, + } + response, err := t.apiClient.GetTasksIDLabels(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON200.Labels == nil { + if response.Labels == nil { return nil, fmt.Errorf("lables for task '%s' not found", taskID) } - return *response.JSON200.Labels, nil + return *response.Labels, nil } func (t *tasksAPI) AddLabel(ctx context.Context, task *domain.Task, label *domain.Label) (*domain.Label, error) { @@ -563,30 +487,25 @@ func (t *tasksAPI) AddLabel(ctx context.Context, task *domain.Task, label *domai } func (t *tasksAPI) AddLabelWithID(ctx context.Context, taskID, labelID string) (*domain.Label, error) { - params := &domain.PostTasksIDLabelsParams{} - body := &domain.PostTasksIDLabelsJSONRequestBody{LabelID: &labelID} - response, err := t.apiClient.PostTasksIDLabelsWithResponse(ctx, taskID, params, *body) + params := &domain.PostTasksIDLabelsAllParams{ + Body: domain.PostTasksIDLabelsJSONRequestBody{LabelID: &labelID}, + TaskID: taskID, + } + response, err := t.apiClient.PostTasksIDLabels(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return response.JSON201.Label, nil + return response.Label, nil } func (t *tasksAPI) RemoveLabel(ctx context.Context, task *domain.Task, label *domain.Label) error { return t.RemoveLabelWithID(ctx, task.Id, *label.Id) } -func (t *tasksAPI) RemoveLabelWithID(ctx context.Context, taskID, memberID string) error { - params := &domain.DeleteTasksIDLabelsIDParams{} - response, err := t.apiClient.DeleteTasksIDLabelsIDWithResponse(ctx, taskID, memberID, params) - if err != nil { - return err - } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) +func (t *tasksAPI) RemoveLabelWithID(ctx context.Context, taskID, labelID string) error { + params := &domain.DeleteTasksIDLabelsIDAllParams{ + TaskID: taskID, + LabelID: labelID, } - return nil + return t.apiClient.DeleteTasksIDLabelsID(ctx, params) } diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/users.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/users.go index 11d54eadb8c6..566b326ee040 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/users.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/users.go @@ -31,9 +31,9 @@ type UsersAPI interface { CreateUserWithName(ctx context.Context, userName string) (*domain.User, error) // UpdateUser updates user UpdateUser(ctx context.Context, user *domain.User) (*domain.User, error) - // UpdateUserPassword sets password for an user + // UpdateUserPassword sets password for a user UpdateUserPassword(ctx context.Context, user *domain.User, password string) error - // UpdateUserPasswordWithID sets password for an user with userID + // UpdateUserPasswordWithID sets password for a user with userID UpdateUserPasswordWithID(ctx context.Context, userID string, password string) error // DeleteUserWithID deletes an user with userID DeleteUserWithID(ctx context.Context, userID string) error @@ -45,13 +45,13 @@ type UsersAPI interface { MeUpdatePassword(ctx context.Context, oldPassword, newPassword string) error // SignIn exchanges username and password credentials to establish an authenticated session with the InfluxDB server. The Client's authentication token is then ignored, it can be empty. SignIn(ctx context.Context, username, password string) error - // SignOut signs out previously signed in user + // SignOut signs out previously signed-in user SignOut(ctx context.Context) error } // usersAPI implements UsersAPI type usersAPI struct { - apiClient *domain.ClientWithResponses + apiClient *domain.Client httpService http.Service httpClient *nethttp.Client deleteCookieJar bool @@ -59,7 +59,7 @@ type usersAPI struct { } // NewUsersAPI creates new instance of UsersAPI -func NewUsersAPI(apiClient *domain.ClientWithResponses, httpService http.Service, httpClient *nethttp.Client) UsersAPI { +func NewUsersAPI(apiClient *domain.Client, httpService http.Service, httpClient *nethttp.Client) UsersAPI { return &usersAPI{ apiClient: apiClient, httpService: httpService, @@ -69,26 +69,22 @@ func NewUsersAPI(apiClient *domain.ClientWithResponses, httpService http.Service func (u *usersAPI) GetUsers(ctx context.Context) (*[]domain.User, error) { params := &domain.GetUsersParams{} - response, err := u.apiClient.GetUsersWithResponse(ctx, params) + response, err := u.apiClient.GetUsers(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return userResponsesToUsers(response.JSON200.Users), nil + return userResponsesToUsers(response.Users), nil } func (u *usersAPI) FindUserByID(ctx context.Context, userID string) (*domain.User, error) { - params := &domain.GetUsersIDParams{} - response, err := u.apiClient.GetUsersIDWithResponse(ctx, userID, params) + params := &domain.GetUsersIDAllParams{ + UserID: userID, + } + response, err := u.apiClient.GetUsersID(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return userResponseToUser(response.JSON200), nil + return userResponseToUser(response), nil } func (u *usersAPI) FindUserByName(ctx context.Context, userName string) (*domain.User, error) { @@ -115,27 +111,26 @@ func (u *usersAPI) CreateUserWithName(ctx context.Context, userName string) (*do } func (u *usersAPI) CreateUser(ctx context.Context, user *domain.User) (*domain.User, error) { - params := &domain.PostUsersParams{} - response, err := u.apiClient.PostUsersWithResponse(ctx, params, domain.PostUsersJSONRequestBody(*user)) + params := &domain.PostUsersAllParams{ + Body: domain.PostUsersJSONRequestBody(*user), + } + response, err := u.apiClient.PostUsers(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return userResponseToUser(response.JSON201), nil + return userResponseToUser(response), nil } func (u *usersAPI) UpdateUser(ctx context.Context, user *domain.User) (*domain.User, error) { - params := &domain.PatchUsersIDParams{} - response, err := u.apiClient.PatchUsersIDWithResponse(ctx, *user.Id, params, domain.PatchUsersIDJSONRequestBody(*user)) + params := &domain.PatchUsersIDAllParams{ + Body: domain.PatchUsersIDJSONRequestBody(*user), + UserID: *user.Id, + } + response, err := u.apiClient.PatchUsersID(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return userResponseToUser(response.JSON200), nil + return userResponseToUser(response), nil } func (u *usersAPI) UpdateUserPassword(ctx context.Context, user *domain.User, password string) error { @@ -143,16 +138,11 @@ func (u *usersAPI) UpdateUserPassword(ctx context.Context, user *domain.User, pa } func (u *usersAPI) UpdateUserPasswordWithID(ctx context.Context, userID string, password string) error { - params := &domain.PostUsersIDPasswordParams{} - body := &domain.PasswordResetBody{Password: password} - response, err := u.apiClient.PostUsersIDPasswordWithResponse(ctx, userID, params, domain.PostUsersIDPasswordJSONRequestBody(*body)) - if err != nil { - return err + params := &domain.PostUsersIDPasswordAllParams{ + UserID: userID, + Body: domain.PostUsersIDPasswordJSONRequestBody(domain.PasswordResetBody{Password: password}), } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return nil + return u.apiClient.PostUsersIDPassword(ctx, params) } func (u *usersAPI) DeleteUser(ctx context.Context, user *domain.User) error { @@ -160,27 +150,19 @@ func (u *usersAPI) DeleteUser(ctx context.Context, user *domain.User) error { } func (u *usersAPI) DeleteUserWithID(ctx context.Context, userID string) error { - params := &domain.DeleteUsersIDParams{} - response, err := u.apiClient.DeleteUsersIDWithResponse(ctx, userID, params) - if err != nil { - return err - } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params := &domain.DeleteUsersIDAllParams{ + UserID: userID, } - return nil + return u.apiClient.DeleteUsersID(ctx, params) } func (u *usersAPI) Me(ctx context.Context) (*domain.User, error) { params := &domain.GetMeParams{} - response, err := u.apiClient.GetMeWithResponse(ctx, params) + response, err := u.apiClient.GetMe(ctx, params) if err != nil { return nil, err } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return userResponseToUser(response.JSON200), nil + return userResponseToUser(response), nil } func (u *usersAPI) MeUpdatePassword(ctx context.Context, oldPassword, newPassword string) error { @@ -194,16 +176,10 @@ func (u *usersAPI) MeUpdatePassword(ctx context.Context, oldPassword, newPasswor auth := u.httpService.Authorization() defer u.httpService.SetAuthorization(auth) u.httpService.SetAuthorization("Basic " + creds) - params := &domain.PutMePasswordParams{} - body := &domain.PasswordResetBody{Password: newPassword} - response, err := u.apiClient.PutMePasswordWithResponse(ctx, params, domain.PutMePasswordJSONRequestBody(*body)) - if err != nil { - return err + params := &domain.PutMePasswordAllParams{ + Body: domain.PutMePasswordJSONRequestBody(domain.PasswordResetBody{Password: newPassword}), } - if response.JSONDefault != nil { - return domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - return nil + return u.apiClient.PutMePassword(ctx, params) } func (u *usersAPI) SignIn(ctx context.Context, username, password string) error { @@ -220,39 +196,17 @@ func (u *usersAPI) SignIn(ctx context.Context, username, password string) error creds := base64.StdEncoding.EncodeToString([]byte(username + ":" + password)) u.httpService.SetAuthorization("Basic " + creds) defer u.httpService.SetAuthorization("") - resp, err := u.apiClient.PostSigninWithResponse(ctx, &domain.PostSigninParams{}) - if err != nil { - return err - } - if resp.JSONDefault != nil { - return domain.ErrorToHTTPError(resp.JSONDefault, resp.StatusCode()) - } - if resp.JSON401 != nil { - return domain.ErrorToHTTPError(resp.JSON401, resp.StatusCode()) - } - if resp.JSON403 != nil { - return domain.ErrorToHTTPError(resp.JSON403, resp.StatusCode()) - } - return nil + return u.apiClient.PostSignin(ctx, &domain.PostSigninParams{}) } func (u *usersAPI) SignOut(ctx context.Context) error { u.lock.Lock() defer u.lock.Unlock() - resp, err := u.apiClient.PostSignoutWithResponse(ctx, &domain.PostSignoutParams{}) - if err != nil { - return err - } - if resp.JSONDefault != nil { - return domain.ErrorToHTTPError(resp.JSONDefault, resp.StatusCode()) - } - if resp.JSON401 != nil { - return domain.ErrorToHTTPError(resp.JSON401, resp.StatusCode()) - } + err := u.apiClient.PostSignout(ctx, &domain.PostSignoutParams{}) if u.deleteCookieJar { u.httpClient.Jar = nil } - return nil + return err } func userResponseToUser(ur *domain.UserResponse) *domain.User { @@ -260,10 +214,9 @@ func userResponseToUser(ur *domain.UserResponse) *domain.User { return nil } user := &domain.User{ - Id: ur.Id, - Name: ur.Name, - OauthID: ur.OauthID, - Status: userResponseStatusToUserStatus(ur.Status), + Id: ur.Id, + Name: ur.Name, + Status: userResponseStatusToUserStatus(ur.Status), } return user } diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/write.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/write.go index 419af9377a24..313d21a1f18a 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/write.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/write.go @@ -51,17 +51,18 @@ type WriteAPIImpl struct { service *iwrite.Service writeBuffer []string - errCh chan error - writeCh chan *iwrite.Batch - bufferCh chan string - writeStop chan struct{} - bufferStop chan struct{} - bufferFlush chan struct{} - doneCh chan struct{} - bufferInfoCh chan writeBuffInfoReq - writeInfoCh chan writeBuffInfoReq - writeOptions *write.Options - closingMu *sync.Mutex + errCh chan error + writeCh chan *iwrite.Batch + bufferCh chan string + writeStop chan struct{} + bufferStop chan struct{} + bufferFlush chan struct{} + doneCh chan struct{} + bufferInfoCh chan writeBuffInfoReq + writeInfoCh chan writeBuffInfoReq + writeOptions *write.Options + closingMu *sync.Mutex + // more appropriate Bool type from sync/atomic cannot be used because it is available since go 1.19 isErrChReader int32 } @@ -109,10 +110,12 @@ func (w *WriteAPIImpl) Errors() <-chan error { return w.errCh } -// Flush forces all pending writes from the buffer to be sent +// Flush forces all pending writes from the buffer to be sent. +// Flush also tries sending batches from retry queue without additional retrying. func (w *WriteAPIImpl) Flush() { w.bufferFlush <- struct{}{} w.waitForFlushing() + w.service.Flush() } func (w *WriteAPIImpl) waitForFlushing() { @@ -167,7 +170,7 @@ x: func (w *WriteAPIImpl) flushBuffer() { if len(w.writeBuffer) > 0 { log.Info("sending batch") - batch := iwrite.NewBatch(buffer(w.writeBuffer), w.writeOptions.RetryInterval(), w.writeOptions.MaxRetryTime()) + batch := iwrite.NewBatch(buffer(w.writeBuffer), w.writeOptions.MaxRetryTime()) w.writeCh <- batch w.writeBuffer = w.writeBuffer[:0] } diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/write/options.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/write/options.go index 04680d29e608..7d85ad31fd4e 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/write/options.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/write/options.go @@ -33,8 +33,27 @@ type Options struct { maxRetryTime uint // The base for the exponential retry delay exponentialBase uint + // InfluxDB Enterprise write consistency as explained in https://docs.influxdata.com/enterprise_influxdb/v1.9/concepts/clustering/#write-consistency + consistency Consistency } +const ( + // ConsistencyOne requires at least one data node acknowledged a write. + ConsistencyOne Consistency = "one" + + // ConsistencyAll requires all data nodes to acknowledge a write. + ConsistencyAll Consistency = "all" + + // ConsistencyQuorum requires a quorum of data nodes to acknowledge a write. + ConsistencyQuorum Consistency = "quorum" + + // ConsistencyAny allows for hinted hand off, potentially no write happened yet. + ConsistencyAny Consistency = "any" +) + +// Consistency defines enum for allows consistency values for InfluxDB Enterprise, as explained https://docs.influxdata.com/enterprise_influxdb/v1.9/concepts/clustering/#write-consistency +type Consistency string + // BatchSize returns size of batch func (o *Options) BatchSize() uint { return o.batchSize @@ -162,6 +181,17 @@ func (o *Options) DefaultTags() map[string]string { return o.defaultTags } +// Consistency returns consistency for param value +func (o *Options) Consistency() Consistency { + return o.consistency +} + +// SetConsistency allows setting InfluxDB Enterprise write consistency, as explained in https://docs.influxdata.com/enterprise_influxdb/v1.9/concepts/clustering/#write-consistency */ +func (o *Options) SetConsistency(consistency Consistency) *Options { + o.consistency = consistency + return o +} + // DefaultOptions returns Options object with default values func DefaultOptions() *Options { return &Options{batchSize: 5_000, flushInterval: 1_000, precision: time.Nanosecond, useGZip: false, retryBufferLimit: 50_000, defaultTags: make(map[string]string), diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/api/writeAPIBlocking.go b/vendor/github.com/influxdata/influxdb-client-go/v2/api/writeAPIBlocking.go index e726e3f6e710..4529bf5b27ae 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/api/writeAPIBlocking.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/api/writeAPIBlocking.go @@ -7,6 +7,8 @@ package api import ( "context" "strings" + "sync" + "sync/atomic" http2 "github.com/influxdata/influxdb-client-go/v2/api/http" "github.com/influxdata/influxdb-client-go/v2/api/write" @@ -14,57 +16,46 @@ import ( ) // WriteAPIBlocking offers blocking methods for writing time series data synchronously into an InfluxDB server. -// It doesn't implicitly create batches of points. It is intended to use for writing less frequent data, such as a weather sensing, or if there is a need to have explicit control of failed batches. +// It doesn't implicitly create batches of points by default. Batches are created from array of points/records. // -// WriteAPIBlocking can be used concurrently. -// When using multiple goroutines for writing, use a single WriteAPIBlocking instance in all goroutines. -// -// To add implicit batching, use a wrapper, such as: -// type writer struct { -// batch []*write.Point -// writeAPI api.WriteAPIBlocking -// batchSize int -// } +// Implicit batching is enabled with EnableBatching(). In this mode, each call to WritePoint or WriteRecord adds a line +// to internal buffer. If length of the buffer is equal to the batch-size (set in write.Options), the buffer is sent to the server +// and the result of the operation is returned. +// When a point is written to the buffer, nil error is always returned. +// Flush() can be used to trigger sending of batch when it doesn't have the batch-size. // -// func (w *writer) CurrentBatch() []*write.Point { -// return w.batch -// } -// -// func newWriter(writeAPI api.WriteAPIBlocking, batchSize int) *writer { -// return &writer{ -// batch: make([]*write.Point, 0, batchSize), -// writeAPI: writeAPI, -// batchSize: batchSize, -// } -// } +// Synchronous writing is intended to use for writing less frequent data, such as a weather sensing, or if there is a need to have explicit control of failed batches. + // -// func (w *writer) write(ctx context.Context, p *write.Point) error { -// w.batch = append(w.batch, p) -// if len(w.batch) == w.batchSize { -// err := w.writeAPI.WritePoint(ctx, w.batch...) -// if err != nil { -// return err -// } -// w.batch = w.batch[:0] -// } -// return nil -// } +// WriteAPIBlocking can be used concurrently. +// When using multiple goroutines for writing, use a single WriteAPIBlocking instance in all goroutines. type WriteAPIBlocking interface { // WriteRecord writes line protocol record(s) into bucket. - // WriteRecord writes without implicit batching. Batch is created from given number of records. + // WriteRecord writes lines without implicit batching by default, batch is created from given number of records. + // Automatic batching can be enabled by EnableBatching() // Individual arguments can also be batches (multiple records separated by newline). // Non-blocking alternative is available in the WriteAPI interface WriteRecord(ctx context.Context, line ...string) error // WritePoint data point into bucket. - // WritePoint writes without implicit batching. Batch is created from given number of points + // WriteRecord writes points without implicit batching by default, batch is created from given number of points. + // Automatic batching can be enabled by EnableBatching(). // Non-blocking alternative is available in the WriteAPI interface WritePoint(ctx context.Context, point ...*write.Point) error + // EnableBatching turns on implicit batching + // Batch size is controlled via write.Options + EnableBatching() + // Flush forces write of buffer if batching is enabled, even buffer doesn't have the batch-size. + Flush(ctx context.Context) error } // writeAPIBlocking implements WriteAPIBlocking interface type writeAPIBlocking struct { service *iwrite.Service writeOptions *write.Options + // more appropriate Bool type from sync/atomic cannot be used because it is available since go 1.19 + batching int32 + batch []string + mu sync.Mutex } // NewWriteAPIBlocking creates new instance of blocking write client for writing data to bucket belonging to org @@ -72,8 +63,33 @@ func NewWriteAPIBlocking(org string, bucket string, service http2.Service, write return &writeAPIBlocking{service: iwrite.NewService(org, bucket, service, writeOptions), writeOptions: writeOptions} } +// NewWriteAPIBlockingWithBatching creates new instance of blocking write client for writing data to bucket belonging to org with batching enabled +func NewWriteAPIBlockingWithBatching(org string, bucket string, service http2.Service, writeOptions *write.Options) WriteAPIBlocking { + api := &writeAPIBlocking{service: iwrite.NewService(org, bucket, service, writeOptions), writeOptions: writeOptions} + api.EnableBatching() + return api +} + +func (w *writeAPIBlocking) EnableBatching() { + if atomic.LoadInt32(&w.batching) == 0 { + w.mu.Lock() + w.batching = 1 + w.batch = make([]string, 0, w.writeOptions.BatchSize()) + w.mu.Unlock() + } +} + func (w *writeAPIBlocking) write(ctx context.Context, line string) error { - err := w.service.WriteBatch(ctx, iwrite.NewBatch(line, w.writeOptions.RetryInterval(), w.writeOptions.MaxRetryTime())) + if atomic.LoadInt32(&w.batching) > 0 { + w.mu.Lock() + defer w.mu.Unlock() + w.batch = append(w.batch, line) + if len(w.batch) == int(w.writeOptions.BatchSize()) { + return w.flush(ctx) + } + return nil + } + err := w.service.WriteBatch(ctx, iwrite.NewBatch(line, w.writeOptions.MaxRetryTime())) if err != nil { return err } @@ -94,3 +110,26 @@ func (w *writeAPIBlocking) WritePoint(ctx context.Context, point ...*write.Point } return w.write(ctx, line) } + +// flush is unsychronized helper for creating and sending batch +// Must be called from synchronized block +func (w *writeAPIBlocking) flush(ctx context.Context) error { + if len(w.batch) > 0 { + body := strings.Join(w.batch, "\n") + w.batch = w.batch[:0] + b := iwrite.NewBatch(body, w.writeOptions.MaxRetryTime()) + if err:= w.service.WriteBatch(ctx, b); err != nil { + return err + } + } + return nil +} + +func (w *writeAPIBlocking) Flush(ctx context.Context) error { + if atomic.LoadInt32(&w.batching) > 0 { + w.mu.Lock() + defer w.mu.Unlock() + return w.flush(ctx) + } + return nil +} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/client.go b/vendor/github.com/influxdata/influxdb-client-go/v2/client.go index 9ff6a6216cad..74e13cdb0c05 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/client.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/client.go @@ -9,6 +9,7 @@ package influxdb2 import ( "context" "errors" + httpnet "net/http" "strings" "sync" "time" @@ -72,6 +73,8 @@ type Client interface { LabelsAPI() api.LabelsAPI // TasksAPI returns Tasks API client TasksAPI() api.TasksAPI + + APIClient() *domain.Client } // clientImpl implements Client interface @@ -82,7 +85,7 @@ type clientImpl struct { syncWriteAPIs map[string]api.WriteAPIBlocking lock sync.Mutex httpService http.Service - apiClient *domain.ClientWithResponses + apiClient *domain.Client authAPI api.AuthorizationsAPI orgAPI api.OrganizationsAPI usersAPI api.UsersAPI @@ -92,6 +95,10 @@ type clientImpl struct { tasksAPI api.TasksAPI } +type clientDoer struct { + service http.Service +} + // NewClient creates Client for connecting to given serverURL with provided authentication token, with the default options. // serverURL is the InfluxDB server base URL, e.g. http://localhost:8086, // authToken is an authentication token. It can be empty in case of connecting to newly installed InfluxDB server, which has not been set up yet. @@ -116,13 +123,17 @@ func NewClientWithOptions(serverURL string, authToken string, options *Options) authorization = "Token " + authToken } service := http.NewService(normServerURL, authorization, options.httpOptions) + doer := &clientDoer{service} + + apiClient, _ := domain.NewClient(service.ServerURL(), doer) + client := &clientImpl{ serverURL: serverURL, options: options, writeAPIs: make(map[string]api.WriteAPI, 5), syncWriteAPIs: make(map[string]api.WriteAPIBlocking, 5), httpService: service, - apiClient: domain.NewClientWithResponses(service), + apiClient: apiClient, } if log.Log != nil { log.Log.SetLogLevel(options.LogLevel()) @@ -134,8 +145,16 @@ func NewClientWithOptions(serverURL string, authToken string, options *Options) } ilog.Infof("Using URL '%s'%s", serverURL, tokenStr) } + if options.ApplicationName() == "" { + ilog.Warn("Application name is not set") + } return client } + +func (c *clientImpl) APIClient() *domain.Client { + return c.apiClient +} + func (c *clientImpl) Options() *Options { return c.options } @@ -148,20 +167,13 @@ func (c *clientImpl) HTTPService() http.Service { return c.httpService } +func (c *clientDoer) Do(req *httpnet.Request) (*httpnet.Response, error) { + return c.service.DoHTTPRequestWithResponse(req, nil) +} + func (c *clientImpl) Ready(ctx context.Context) (*domain.Ready, error) { params := &domain.GetReadyParams{} - response, err := c.apiClient.GetReadyWithResponse(ctx, params) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON200 == nil { //response with status 2xx, but not JSON - return nil, errors.New("cannot read Ready response") - - } - return response.JSON200, nil + return c.apiClient.GetReady(ctx, params) } func (c *clientImpl) Setup(ctx context.Context, username, password, org, bucket string, retentionPeriodHours int) (*domain.OnboardingResponse, error) { @@ -174,10 +186,10 @@ func (c *clientImpl) SetupWithToken(ctx context.Context, username, password, org } c.lock.Lock() defer c.lock.Unlock() - params := &domain.PostSetupParams{} + params := &domain.PostSetupAllParams{} retentionPeriodSeconds := int64(retentionPeriodHours * 3600) retentionPeriodHrs := int(time.Duration(retentionPeriodSeconds) * time.Second) - body := &domain.PostSetupJSONRequestBody{ + params.Body = domain.PostSetupJSONRequestBody{ Bucket: bucket, Org: org, Password: &password, @@ -186,45 +198,22 @@ func (c *clientImpl) SetupWithToken(ctx context.Context, username, password, org Username: username, } if token != "" { - body.Token = &token - } - response, err := c.apiClient.PostSetupWithResponse(ctx, params, *body) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) + params.Body.Token = &token } - c.httpService.SetAuthorization("Token " + *response.JSON201.Auth.Token) - return response.JSON201, nil + return c.apiClient.PostSetup(ctx, params) } func (c *clientImpl) Health(ctx context.Context) (*domain.HealthCheck, error) { params := &domain.GetHealthParams{} - response, err := c.apiClient.GetHealthWithResponse(ctx, params) - if err != nil { - return nil, err - } - if response.JSONDefault != nil { - return nil, domain.ErrorToHTTPError(response.JSONDefault, response.StatusCode()) - } - if response.JSON503 != nil { - //unhealthy server - return response.JSON503, nil - } - if response.JSON200 == nil { //response with status 2xx, but not JSON - return nil, errors.New("cannot read Health response") - } - - return response.JSON200, nil + return c.apiClient.GetHealth(ctx, params) } func (c *clientImpl) Ping(ctx context.Context) (bool, error) { - resp, err := c.apiClient.GetPingWithResponse(ctx) + err := c.apiClient.GetPing(ctx) if err != nil { return false, err } - return resp.StatusCode() == 204, nil + return true, nil } func createKey(org, bucket string) string { diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/Readme.md b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/Readme.md index 4209218228fe..5a2f007ec8ff 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/Readme.md +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/Readme.md @@ -1,23 +1,23 @@ # Generated types and API client -`oss.yml` is copied from InfluxDB and customized, until changes are meged. Must be periodically sync with latest changes - and types and client must be re-generated +`oss.yml`must be periodically synced with latest changes and types and client must be re-generated +to maintain full compatibility with the latest InfluxDB release ## Install oapi generator `git clone git@github.com:bonitoo-io/oapi-codegen.git` `cd oapi-codegen` -`git checkout dev-master` +`git checkout feat/template_helpers` `go install ./cmd/oapi-codegen/oapi-codegen.go` -## Download and sync latest swagger + +## Download latest swagger `wget https://raw.githubusercontent.com/influxdata/openapi/master/contracts/oss.yml` - -## Generate `cd domain` - -Generate types -`oapi-codegen -generate types -o types.gen.go -package domain oss.yml` -Generate client -`oapi-codegen -generate client -o client.gen.go -package domain -templates .\templates oss.yml` +## Generate +### Generate types +`oapi-codegen -generate types -exclude-tags Checks -o types.gen.go -package domain -templates .\templates oss.yml` + +### Generate client +`oapi-codegen -generate client -exclude-tags Checks -o client.gen.go -package domain -templates .\templates oss.yml` diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/checks.client.go b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/checks.client.go new file mode 100644 index 000000000000..e914645a74cb --- /dev/null +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/checks.client.go @@ -0,0 +1,762 @@ +// Package domain provides primitives to interact with the openapi HTTP API. +// +// Code generated by version DO NOT EDIT. +package domain + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "github.com/oapi-codegen/runtime" + "io" + "net/http" + "net/url" +) + +var typeToCheck = map[string]func() Check{ + "deadman": func() Check { return &DeadmanCheck{} }, + "threshold": func() Check { return &ThresholdCheck{} }, + "custom": func() Check { return &CustomCheck{} }, +} + +// UnmarshalJSON will convert +func unmarshalCheckJSON(b []byte) (Check, error) { + var raw struct { + Type string `json:"type"` + } + if err := json.Unmarshal(b, &raw); err != nil { + m := "unable to detect the check type from json" + e := &Error{ + Code: ErrorCodeInvalid, + Message: &m, + } + return nil, e.Error() + } + factoryFunc, ok := typeToCheck[raw.Type] + if !ok { + return nil, fmt.Errorf("invalid check type %s", raw.Type) + } + check := factoryFunc() + err := json.Unmarshal(b, check) + return check, err +} + +// GetChecks calls the GET on /checks +// List all checks +func (c *Client) GetChecks(ctx context.Context, params *GetChecksParams) (*Checks, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("./checks") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + queryValues := queryURL.Query() + + if params.Offset != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + type raw struct { + Checks *[]json.RawMessage `json:"checks,omitempty"` + + // URI pointers for additional paged results. + Links *Links `json:"links,omitempty"` + } + response := &Checks{} + + switch rsp.StatusCode { + case 200: + var a raw + if err := unmarshalJSONResponse(bodyBytes, &a); err != nil { + return nil, err + } + if a.Checks != nil && len(*a.Checks) > 0 { + c := make([]Check, len(*a.Checks)) + response.Checks = &c + for i, m := range *a.Checks { + check, err := unmarshalCheckJSON(m) + if err != nil { + return nil, err + } + (*response.Checks)[i] = check + } + } + response.Links = a.Links + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + +} + +// CreateCheck calls the POST on /checks +// Add new check +func (c *Client) CreateCheck(ctx context.Context, params *CreateCheckAllParams) (Check, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("./checks") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", "application/json") + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + switch rsp.StatusCode { + case 201: + check, err := unmarshalCheckJSON(bodyBytes) + if err != nil { + return nil, err + } + return check, nil + default: + return nil, decodeError(bodyBytes, rsp) + } +} + +// DeleteChecksID calls the DELETE on /checks/{checkID} +// Delete a check +func (c *Client) DeleteChecksID(ctx context.Context, params *DeleteChecksIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, params.CheckID) + if err != nil { + return err + } + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err + } + + operationPath := fmt.Sprintf("./checks/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err + } + + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err + } + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil + +} + +// GetChecksID calls the GET on /checks/{checkID} +// Retrieve a check +func (c *Client) GetChecksID(ctx context.Context, params *GetChecksIDAllParams) (Check, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, params.CheckID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("./checks/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + switch rsp.StatusCode { + case 200: + check, err := unmarshalCheckJSON(bodyBytes) + if err != nil { + return nil, err + } + return check, nil + default: + return nil, decodeError(bodyBytes, rsp) + } +} + +// PatchChecksID calls the PATCH on /checks/{checkID} +// Update a check +func (c *Client) PatchChecksID(ctx context.Context, params *PatchChecksIDAllParams) (Check, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, params.CheckID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("./checks/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + switch rsp.StatusCode { + case 200: + check, err := unmarshalCheckJSON(bodyBytes) + if err != nil { + return nil, err + } + return check, nil + default: + return nil, decodeError(bodyBytes, rsp) + } +} + +// PutChecksID calls the PUT on /checks/{checkID} +// Update a check +func (c *Client) PutChecksID(ctx context.Context, params *PutChecksIDAllParams) (Check, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, params.CheckID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("./checks/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + switch rsp.StatusCode { + case 200: + check, err := unmarshalCheckJSON(bodyBytes) + if err != nil { + return nil, err + } + return check, nil + default: + return nil, decodeError(bodyBytes, rsp) + } +} + +// GetChecksIDLabels calls the GET on /checks/{checkID}/labels +// List all labels for a check +func (c *Client) GetChecksIDLabels(ctx context.Context, params *GetChecksIDLabelsAllParams) (*LabelsResponse, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, params.CheckID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("./checks/%s/labels", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &LabelsResponse{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + +} + +// PostChecksIDLabels calls the POST on /checks/{checkID}/labels +// Add a label to a check +func (c *Client) PostChecksIDLabels(ctx context.Context, params *PostChecksIDLabelsAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, params.CheckID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("./checks/%s/labels", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &LabelResponse{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + +} + +// DeleteChecksIDLabelsID calls the DELETE on /checks/{checkID}/labels/{labelID} +// Delete label from a check +func (c *Client) DeleteChecksIDLabelsID(ctx context.Context, params *DeleteChecksIDLabelsIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, params.CheckID) + if err != nil { + return err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return err + } + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err + } + + operationPath := fmt.Sprintf("./checks/%s/labels/%s", pathParam0, pathParam1) + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err + } + + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err + } + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil + +} + +// GetChecksIDQuery calls the GET on /checks/{checkID}/query +// Retrieve a check query +func (c *Client) GetChecksIDQuery(ctx context.Context, params *GetChecksIDQueryAllParams) (*FluxResponse, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, params.CheckID) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("./checks/%s/query", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &FluxResponse{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + +} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/checks.types.go b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/checks.types.go new file mode 100644 index 000000000000..2bbcd891670d --- /dev/null +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/checks.types.go @@ -0,0 +1,537 @@ +// Package domain provides primitives to interact with the openapi HTTP API. +// +// Code generated by version DO NOT EDIT. +package domain + +import ( + "encoding/json" + "fmt" + "time" +) + +// Defines values for CheckBaseLastRunStatus. +const ( + CheckBaseLastRunStatusCanceled CheckBaseLastRunStatus = "canceled" + + CheckBaseLastRunStatusFailed CheckBaseLastRunStatus = "failed" + + CheckBaseLastRunStatusSuccess CheckBaseLastRunStatus = "success" +) + +// Defines values for CheckPatchStatus. +const ( + CheckPatchStatusActive CheckPatchStatus = "active" + + CheckPatchStatusInactive CheckPatchStatus = "inactive" +) + +// Defines values for CheckStatusLevel. +const ( + CheckStatusLevelCRIT CheckStatusLevel = "CRIT" + + CheckStatusLevelINFO CheckStatusLevel = "INFO" + + CheckStatusLevelOK CheckStatusLevel = "OK" + + CheckStatusLevelUNKNOWN CheckStatusLevel = "UNKNOWN" + + CheckStatusLevelWARN CheckStatusLevel = "WARN" +) + +// Defines values for DeadmanCheckType. +const ( + DeadmanCheckTypeDeadman DeadmanCheckType = "deadman" +) + +// Defines values for ThresholdCheckType. +const ( + ThresholdCheckTypeThreshold ThresholdCheckType = "threshold" +) + +// Defines values for CustomCheckType. +const ( + CustomCheckTypeCustom CustomCheckType = "custom" +) + +// CheckPatch defines model for CheckPatch. +type CheckPatch struct { + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` + Status *CheckPatchStatus `json:"status,omitempty"` +} + +// CheckPatchStatus defines model for CheckPatch.Status. +type CheckPatchStatus string + +// The state to record if check matches a criteria. +type CheckStatusLevel string + +// CustomCheckType defines model for CustomCheck.Type. +type CustomCheckType string + +// DeadmanCheckType defines model for DeadmanCheck.Type. +type DeadmanCheckType string + +// ThresholdCheckType defines model for ThresholdCheck.Type. +type ThresholdCheckType string + +// CreateCheckJSONRequestBody defines body for CreateCheck for application/json ContentType. +type CreateCheckJSONRequestBody CreateCheckJSONBody + +// PatchChecksIDJSONRequestBody defines body for PatchChecksID for application/json ContentType. +type PatchChecksIDJSONRequestBody PatchChecksIDJSONBody + +// PutChecksIDJSONRequestBody defines body for PutChecksID for application/json ContentType. +type PutChecksIDJSONRequestBody PutChecksIDJSONBody + +// PostChecksIDLabelsJSONRequestBody defines body for PostChecksIDLabels for application/json ContentType. +type PostChecksIDLabelsJSONRequestBody PostChecksIDLabelsJSONBody + +// Check defines model for Check. +type Check interface { + Type() string +} + +// Checks defines model for Checks. +type Checks struct { + Checks *[]Check `json:"checks,omitempty"` + + // URI pointers for additional paged results. + Links *Links `json:"links,omitempty"` +} + +// CheckBase defines model for CheckBase. +type CheckBase struct { + CreatedAt *time.Time `json:"createdAt,omitempty"` + + // An optional description of the check. + Description *string `json:"description,omitempty"` + Id *string `json:"id,omitempty"` + Labels *Labels `json:"labels,omitempty"` + LastRunError *string `json:"lastRunError,omitempty"` + LastRunStatus *CheckBaseLastRunStatus `json:"lastRunStatus,omitempty"` + + // A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)) of the latest scheduled and completed run. + LatestCompleted *time.Time `json:"latestCompleted,omitempty"` + Links *struct { + // URI of resource. + Labels *Link `json:"labels,omitempty"` + + // URI of resource. + Members *Link `json:"members,omitempty"` + + // URI of resource. + Owners *Link `json:"owners,omitempty"` + + // URI of resource. + Query *Link `json:"query,omitempty"` + + // URI of resource. + Self *Link `json:"self,omitempty"` + } `json:"links,omitempty"` + Name string `json:"name"` + + // The ID of the organization that owns this check. + OrgID string `json:"orgID"` + + // The ID of creator used to create this check. + OwnerID *string `json:"ownerID,omitempty"` + Query DashboardQuery `json:"query"` + + // `inactive` cancels scheduled runs and prevents manual runs of the task. + Status TaskStatusType `json:"status"` + + // The ID of the task associated with this check. + TaskID *string `json:"taskID,omitempty"` + UpdatedAt *time.Time `json:"updatedAt,omitempty"` +} + +type CheckBaseExtend struct { + CheckBase + // Embedded fields due to inline allOf schema + // Check repetition interval. + Every *string `json:"every,omitempty"` + + // Duration to delay after the schedule, before executing check. + Offset *string `json:"offset,omitempty"` + + // The template used to generate and write a status message. + StatusMessageTemplate *string `json:"statusMessageTemplate,omitempty"` + + // List of tags to write to each status. + Tags *[]struct { + Key *string `json:"key,omitempty"` + Value *string `json:"value,omitempty"` + } `json:"tags,omitempty"` +} + +// DeadmanCheck defines model for DeadmanCheck. +type DeadmanCheck struct { + CheckBaseExtend + // The state to record if check matches a criteria. + Level *CheckStatusLevel `json:"level,omitempty"` + + // If only zero values reported since time, trigger an alert + ReportZero *bool `json:"reportZero,omitempty"` + + // String duration for time that a series is considered stale and should not trigger deadman. + StaleTime *string `json:"staleTime,omitempty"` + + // String duration before deadman triggers. + TimeSince *string `json:"timeSince,omitempty"` +} + +func (d DeadmanCheck) Type() string { + return string(DeadmanCheckTypeDeadman) +} + +// MarshalJSON implement json.Marshaler interface. +func (d DeadmanCheck) MarshalJSON() ([]byte, error) { + type deadmanCheckAlias DeadmanCheck + return json.Marshal( + struct { + deadmanCheckAlias + Type string `json:"type"` + }{ + deadmanCheckAlias: deadmanCheckAlias(d), + Type: d.Type(), + }) +} + +// ThresholdCheck defines model for ThresholdCheck. +type ThresholdCheck struct { + // Embedded struct due to allOf(#/components/schemas/CheckBase) + CheckBaseExtend + Thresholds *[]Threshold `json:"thresholds,omitempty"` +} + +// MarshalJSON implement json.Marshaler interface. +func (t *ThresholdCheck) MarshalJSON() ([]byte, error) { + type thresholdCheckAlias ThresholdCheck + return json.Marshal( + struct { + thresholdCheckAlias + Type string `json:"type"` + }{ + thresholdCheckAlias: thresholdCheckAlias(*t), + Type: t.Type(), + }) +} + +type thresholdCheckDecode struct { + CheckBaseExtend + Thresholds []thresholdDecode `json:"thresholds"` +} + +type thresholdDecode struct { + ThresholdBase + Type string `json:"type"` + Value float32 `json:"value"` + Min float32 `json:"min"` + Max float32 `json:"max"` + Within bool `json:"within"` +} + +// UnmarshalJSON implement json.Unmarshaler interface. +func (t *ThresholdCheck) UnmarshalJSON(b []byte) error { + var tdRaws thresholdCheckDecode + if err := json.Unmarshal(b, &tdRaws); err != nil { + return err + } + t.CheckBaseExtend = tdRaws.CheckBaseExtend + a := make([]Threshold, 0, len(tdRaws.Thresholds)) + t.Thresholds = &a + for _, tdRaw := range tdRaws.Thresholds { + switch tdRaw.Type { + case "lesser": + td := &LesserThreshold{ + ThresholdBase: tdRaw.ThresholdBase, + Value: tdRaw.Value, + } + *t.Thresholds = append(*t.Thresholds, td) + case "greater": + td := &GreaterThreshold{ + ThresholdBase: tdRaw.ThresholdBase, + Value: tdRaw.Value, + } + *t.Thresholds = append(*t.Thresholds, td) + case "range": + td := &RangeThreshold{ + ThresholdBase: tdRaw.ThresholdBase, + Min: tdRaw.Min, + Max: tdRaw.Max, + Within: tdRaw.Within, + } + *t.Thresholds = append(*t.Thresholds, td) + default: + return fmt.Errorf("invalid threshold type %s", tdRaw.Type) + } + } + return nil +} + +func (t ThresholdCheck) Type() string { + return string(ThresholdCheckTypeThreshold) +} + +// Threshold defines model for Threshold. +type Threshold interface { + Type() string +} + +// ThresholdBase defines model for ThresholdBase. +type ThresholdBase struct { + // If true, only alert if all values meet threshold. + AllValues *bool `json:"allValues,omitempty"` + + // The state to record if check matches a criteria. + Level *CheckStatusLevel `json:"level,omitempty"` +} + +// LesserThreshold defines model for LesserThreshold. +type LesserThreshold struct { + // Embedded struct due to allOf(#/components/schemas/ThresholdBase) + ThresholdBase + // Embedded fields due to inline allOf schema + Typ LesserThresholdType `json:"type"` + Value float32 `json:"value"` +} + +func (t LesserThreshold) Type() string { + return string(LesserThresholdTypeLesser) +} + +// MarshalJSON implement json.Marshaler interface. +func (t LesserThreshold) MarshalJSON() ([]byte, error) { + type lesserThresholdAlias LesserThreshold + return json.Marshal( + struct { + lesserThresholdAlias + Type string `json:"type"` + }{ + lesserThresholdAlias: lesserThresholdAlias(t), + Type: t.Type(), + }) +} + +// GreaterThreshold defines model for GreaterThreshold. +type GreaterThreshold struct { + // Embedded struct due to allOf(#/components/schemas/ThresholdBase) + ThresholdBase + // Embedded fields due to inline allOf schema + Typ GreaterThresholdType `json:"type"` + Value float32 `json:"value"` +} + +func (t GreaterThreshold) Type() string { + return string(GreaterThresholdTypeGreater) +} + +// MarshalJSON implement json.Marshaler interface. +func (t GreaterThreshold) MarshalJSON() ([]byte, error) { + type greaterThresholdAlias GreaterThreshold + return json.Marshal( + struct { + greaterThresholdAlias + Type string `json:"type"` + }{ + greaterThresholdAlias: greaterThresholdAlias(t), + Type: t.Type(), + }) +} + +// RangeThreshold defines model for RangeThreshold. +type RangeThreshold struct { + // Embedded struct due to allOf(#/components/schemas/ThresholdBase) + ThresholdBase + // Embedded fields due to inline allOf schema + Max float32 `json:"max"` + Min float32 `json:"min"` + Typ RangeThresholdType `json:"type"` + Within bool `json:"within"` +} + +func (r RangeThreshold) Type() string { + return string(RangeThresholdTypeRange) +} + +// MarshalJSON implement json.Marshaler interface. +func (r RangeThreshold) MarshalJSON() ([]byte, error) { + type rangeThresholdAlias RangeThreshold + return json.Marshal( + struct { + rangeThresholdAlias + Type string `json:"type"` + }{ + rangeThresholdAlias: rangeThresholdAlias(r), + Type: r.Type(), + }) +} + +// CustomCheck defines model for CustomCheck. +type CustomCheck struct { + // Embedded struct due to allOf(#/components/schemas/CheckBase) + CheckBase +} + +func (c CustomCheck) Type() string { + return string(CustomCheckTypeCustom) +} + +// MarshalJSON implement json.Marshaler interface. +func (c CustomCheck) MarshalJSON() ([]byte, error) { + type customCheckAlias CustomCheck + return json.Marshal( + struct { + customCheckAlias + Type string `json:"type"` + }{ + customCheckAlias: customCheckAlias(c), + Type: c.Type(), + }) +} + +// GetChecksParams defines parameters for GetChecks. +type GetChecksParams struct { + // The offset for pagination. + // The number of records to skip. + Offset *Offset `json:"offset,omitempty"` + + // Limits the number of records returned. Default is `20`. + Limit *Limit `json:"limit,omitempty"` + + // Only show checks that belong to a specific organization ID. + OrgID string `json:"orgID"` + + // OpenTracing span context + ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +} + +// CreateCheckJSONBody defines parameters for CreateCheck. +type CreateCheckJSONBody Check + +// CreateCheckAllParams defines type for all parameters for CreateCheck. +type CreateCheckAllParams struct { + Body CreateCheckJSONRequestBody +} + +// DeleteChecksIDParams defines parameters for DeleteChecksID. +type DeleteChecksIDParams struct { + // OpenTracing span context + ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +} + +// DeleteChecksIDAllParams defines type for all parameters for DeleteChecksID. +type DeleteChecksIDAllParams struct { + DeleteChecksIDParams + + CheckID string +} + +// GetChecksIDParams defines parameters for GetChecksID. +type GetChecksIDParams struct { + // OpenTracing span context + ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +} + +// GetChecksIDAllParams defines type for all parameters for GetChecksID. +type GetChecksIDAllParams struct { + GetChecksIDParams + + CheckID string +} + +// PatchChecksIDJSONBody defines parameters for PatchChecksID. +type PatchChecksIDJSONBody CheckPatch + +// PatchChecksIDParams defines parameters for PatchChecksID. +type PatchChecksIDParams struct { + // OpenTracing span context + ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +} + +// PatchChecksIDAllParams defines type for all parameters for PatchChecksID. +type PatchChecksIDAllParams struct { + PatchChecksIDParams + + CheckID string + + Body PatchChecksIDJSONRequestBody +} + +// PutChecksIDJSONBody defines parameters for PutChecksID. +type PutChecksIDJSONBody Check + +// PutChecksIDParams defines parameters for PutChecksID. +type PutChecksIDParams struct { + // OpenTracing span context + ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +} + +// PutChecksIDAllParams defines type for all parameters for PutChecksID. +type PutChecksIDAllParams struct { + PutChecksIDParams + + CheckID string + + Body PutChecksIDJSONRequestBody +} + +// GetChecksIDLabelsParams defines parameters for GetChecksIDLabels. +type GetChecksIDLabelsParams struct { + // OpenTracing span context + ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +} + +// GetChecksIDLabelsAllParams defines type for all parameters for GetChecksIDLabels. +type GetChecksIDLabelsAllParams struct { + GetChecksIDLabelsParams + + CheckID string +} + +// PostChecksIDLabelsJSONBody defines parameters for PostChecksIDLabels. +type PostChecksIDLabelsJSONBody LabelMapping + +// PostChecksIDLabelsParams defines parameters for PostChecksIDLabels. +type PostChecksIDLabelsParams struct { + // OpenTracing span context + ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +} + +// PostChecksIDLabelsAllParams defines type for all parameters for PostChecksIDLabels. +type PostChecksIDLabelsAllParams struct { + PostChecksIDLabelsParams + + CheckID string + + Body PostChecksIDLabelsJSONRequestBody +} + +// DeleteChecksIDLabelsIDParams defines parameters for DeleteChecksIDLabelsID. +type DeleteChecksIDLabelsIDParams struct { + // OpenTracing span context + ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +} + +// DeleteChecksIDLabelsIDAllParams defines type for all parameters for DeleteChecksIDLabelsID. +type DeleteChecksIDLabelsIDAllParams struct { + DeleteChecksIDLabelsIDParams + + CheckID string + + LabelID string +} + +// GetChecksIDQueryParams defines parameters for GetChecksIDQuery. +type GetChecksIDQueryParams struct { + // OpenTracing span context + ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +} + +// GetChecksIDQueryAllParams defines type for all parameters for GetChecksIDQuery. +type GetChecksIDQueryAllParams struct { + GetChecksIDQueryParams + + CheckID string +} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/client.gen.go b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/client.gen.go index f3e06e7e2409..9b08c79657ed 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/client.gen.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/client.gen.go @@ -1,15151 +1,558 @@ // Package domain provides primitives to interact with the openapi HTTP API. // -// Code generated by github.com/deepmap/oapi-codegen version (devel) DO NOT EDIT. +// Code generated by version DO NOT EDIT. package domain import ( "bytes" "context" "encoding/json" + "errors" "fmt" "io" - "io/ioutil" + "mime" "net/http" "net/url" "strings" - "gopkg.in/yaml.v2" - - "github.com/deepmap/oapi-codegen/pkg/runtime" - ihttp "github.com/influxdata/influxdb-client-go/v2/api/http" + "github.com/oapi-codegen/runtime" ) +// Doer performs HTTP requests. +// +// The standard http.Client implements this interface. +type HTTPRequestDoer interface { + Do(req *http.Request) (*http.Response, error) +} + // Client which conforms to the OpenAPI3 specification for this service. type Client struct { - service ihttp.Service + // The endpoint of the server conforming to this interface, with scheme, + // https://api.deepmap.com for example. This can contain a path relative + // to the server, such as https://api.deepmap.com/dev-test, and all the + // paths in the swagger spec will be appended to the server. + Server string + + // Server + /api/v2/ + APIEndpoint string + + // Doer for performing requests, typically a *http.Client with any + // customized settings, such as certificate chains. + Client HTTPRequestDoer } // Creates a new Client, with reasonable defaults -func NewClient(service ihttp.Service) *Client { +func NewClient(server string, doer HTTPRequestDoer) (*Client, error) { // create a client with sane default values client := Client{ - service: service, + Server: server, + Client: doer, } - return &client -} - -// The interface specification for the client above. -type ClientInterface interface { - // GetRoutes request - GetRoutes(ctx context.Context, params *GetRoutesParams) (*http.Response, error) + // ensure the server URL always has a trailing slash + if !strings.HasSuffix(client.Server, "/") { + client.Server += "/" + } + // API endpoint + client.APIEndpoint = client.Server + "api/v2/" - // GetAuthorizations request - GetAuthorizations(ctx context.Context, params *GetAuthorizationsParams) (*http.Response, error) + // create httpClient, if not already present + if client.Client == nil { + client.Client = &http.Client{} + } + return &client, nil +} - // PostAuthorizations request with any body - PostAuthorizationsWithBody(ctx context.Context, params *PostAuthorizationsParams, contentType string, body io.Reader) (*http.Response, error) +func (e *Error) Error() error { + return fmt.Errorf("%s: %s", string(e.Code), *e.Message) +} - PostAuthorizations(ctx context.Context, params *PostAuthorizationsParams, body PostAuthorizationsJSONRequestBody) (*http.Response, error) +func unmarshalJSONResponse(bodyBytes []byte, obj interface{}) error { + if err := json.Unmarshal(bodyBytes, obj); err != nil { + return err + } + return nil +} - // DeleteAuthorizationsID request - DeleteAuthorizationsID(ctx context.Context, authID string, params *DeleteAuthorizationsIDParams) (*http.Response, error) +func isJSON(rsp *http.Response) bool { + ctype, _, _ := mime.ParseMediaType(rsp.Header.Get("Content-Type")) + return ctype == "application/json" +} - // GetAuthorizationsID request - GetAuthorizationsID(ctx context.Context, authID string, params *GetAuthorizationsIDParams) (*http.Response, error) +func decodeError(body []byte, rsp *http.Response) error { + if isJSON(rsp) { + var serverError struct { + Error + V1Error *string `json:"error,omitempty"` + } + err := json.Unmarshal(body, &serverError) + if err != nil { + message := fmt.Sprintf("cannot decode error response: %v", err) + serverError.Message = &message + } + if serverError.V1Error != nil { + serverError.Message = serverError.V1Error + serverError.Code = ErrorCodeInvalid + } + if serverError.Message == nil && serverError.Code == "" { + serverError.Message = &rsp.Status + } + return serverError.Error.Error() + } else { + message := rsp.Status + if len(body) > 0 { + message = message + ": " + string(body) + } + return errors.New(message) + } +} - // PatchAuthorizationsID request with any body - PatchAuthorizationsIDWithBody(ctx context.Context, authID string, params *PatchAuthorizationsIDParams, contentType string, body io.Reader) (*http.Response, error) +// GetAuthorizations calls the GET on /authorizations +// List authorizations +func (c *Client) GetAuthorizations(ctx context.Context, params *GetAuthorizationsParams) (*Authorizations, error) { + var err error - PatchAuthorizationsID(ctx context.Context, authID string, params *PatchAuthorizationsIDParams, body PatchAuthorizationsIDJSONRequestBody) (*http.Response, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // GetBackupKV request - GetBackupKV(ctx context.Context, params *GetBackupKVParams) (*http.Response, error) + operationPath := fmt.Sprintf("./authorizations") - // GetBackupMetadata request - GetBackupMetadata(ctx context.Context, params *GetBackupMetadataParams) (*http.Response, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // GetBackupShardId request - GetBackupShardId(ctx context.Context, shardID int64, params *GetBackupShardIdParams) (*http.Response, error) + queryValues := queryURL.Query() - // GetBuckets request - GetBuckets(ctx context.Context, params *GetBucketsParams) (*http.Response, error) + if params.UserID != nil { - // PostBuckets request with any body - PostBucketsWithBody(ctx context.Context, params *PostBucketsParams, contentType string, body io.Reader) (*http.Response, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "userID", runtime.ParamLocationQuery, *params.UserID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - PostBuckets(ctx context.Context, params *PostBucketsParams, body PostBucketsJSONRequestBody) (*http.Response, error) + } - // DeleteBucketsID request - DeleteBucketsID(ctx context.Context, bucketID string, params *DeleteBucketsIDParams) (*http.Response, error) + if params.User != nil { - // GetBucketsID request - GetBucketsID(ctx context.Context, bucketID string, params *GetBucketsIDParams) (*http.Response, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "user", runtime.ParamLocationQuery, *params.User); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - // PatchBucketsID request with any body - PatchBucketsIDWithBody(ctx context.Context, bucketID string, params *PatchBucketsIDParams, contentType string, body io.Reader) (*http.Response, error) + } - PatchBucketsID(ctx context.Context, bucketID string, params *PatchBucketsIDParams, body PatchBucketsIDJSONRequestBody) (*http.Response, error) + if params.OrgID != nil { - // GetBucketsIDLabels request - GetBucketsIDLabels(ctx context.Context, bucketID string, params *GetBucketsIDLabelsParams) (*http.Response, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - // PostBucketsIDLabels request with any body - PostBucketsIDLabelsWithBody(ctx context.Context, bucketID string, params *PostBucketsIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) + } - PostBucketsIDLabels(ctx context.Context, bucketID string, params *PostBucketsIDLabelsParams, body PostBucketsIDLabelsJSONRequestBody) (*http.Response, error) + if params.Org != nil { - // DeleteBucketsIDLabelsID request - DeleteBucketsIDLabelsID(ctx context.Context, bucketID string, labelID string, params *DeleteBucketsIDLabelsIDParams) (*http.Response, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - // GetBucketsIDMembers request - GetBucketsIDMembers(ctx context.Context, bucketID string, params *GetBucketsIDMembersParams) (*http.Response, error) + } - // PostBucketsIDMembers request with any body - PostBucketsIDMembersWithBody(ctx context.Context, bucketID string, params *PostBucketsIDMembersParams, contentType string, body io.Reader) (*http.Response, error) + queryURL.RawQuery = queryValues.Encode() - PostBucketsIDMembers(ctx context.Context, bucketID string, params *PostBucketsIDMembersParams, body PostBucketsIDMembersJSONRequestBody) (*http.Response, error) + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - // DeleteBucketsIDMembersID request - DeleteBucketsIDMembersID(ctx context.Context, bucketID string, userID string, params *DeleteBucketsIDMembersIDParams) (*http.Response, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // GetBucketsIDOwners request - GetBucketsIDOwners(ctx context.Context, bucketID string, params *GetBucketsIDOwnersParams) (*http.Response, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - // PostBucketsIDOwners request with any body - PostBucketsIDOwnersWithBody(ctx context.Context, bucketID string, params *PostBucketsIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - PostBucketsIDOwners(ctx context.Context, bucketID string, params *PostBucketsIDOwnersParams, body PostBucketsIDOwnersJSONRequestBody) (*http.Response, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // DeleteBucketsIDOwnersID request - DeleteBucketsIDOwnersID(ctx context.Context, bucketID string, userID string, params *DeleteBucketsIDOwnersIDParams) (*http.Response, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - // GetChecks request - GetChecks(ctx context.Context, params *GetChecksParams) (*http.Response, error) + response := &Authorizations{} - // CreateCheck request with any body - CreateCheckWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - CreateCheck(ctx context.Context, body CreateCheckJSONRequestBody) (*http.Response, error) +} - // DeleteChecksID request - DeleteChecksID(ctx context.Context, checkID string, params *DeleteChecksIDParams) (*http.Response, error) +// PostAuthorizations calls the POST on /authorizations +// Create an authorization +func (c *Client) PostAuthorizations(ctx context.Context, params *PostAuthorizationsAllParams) (*Authorization, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) - // GetChecksID request - GetChecksID(ctx context.Context, checkID string, params *GetChecksIDParams) (*http.Response, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // PatchChecksID request with any body - PatchChecksIDWithBody(ctx context.Context, checkID string, params *PatchChecksIDParams, contentType string, body io.Reader) (*http.Response, error) + operationPath := fmt.Sprintf("./authorizations") - PatchChecksID(ctx context.Context, checkID string, params *PatchChecksIDParams, body PatchChecksIDJSONRequestBody) (*http.Response, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // PutChecksID request with any body - PutChecksIDWithBody(ctx context.Context, checkID string, params *PutChecksIDParams, contentType string, body io.Reader) (*http.Response, error) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } - PutChecksID(ctx context.Context, checkID string, params *PutChecksIDParams, body PutChecksIDJSONRequestBody) (*http.Response, error) + req.Header.Add("Content-Type", "application/json") - // GetChecksIDLabels request - GetChecksIDLabels(ctx context.Context, checkID string, params *GetChecksIDLabelsParams) (*http.Response, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // PostChecksIDLabels request with any body - PostChecksIDLabelsWithBody(ctx context.Context, checkID string, params *PostChecksIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - PostChecksIDLabels(ctx context.Context, checkID string, params *PostChecksIDLabelsParams, body PostChecksIDLabelsJSONRequestBody) (*http.Response, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // DeleteChecksIDLabelsID request - DeleteChecksIDLabelsID(ctx context.Context, checkID string, labelID string, params *DeleteChecksIDLabelsIDParams) (*http.Response, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // GetChecksIDQuery request - GetChecksIDQuery(ctx context.Context, checkID string, params *GetChecksIDQueryParams) (*http.Response, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - // GetConfig request - GetConfig(ctx context.Context, params *GetConfigParams) (*http.Response, error) + response := &Authorization{} - // GetDashboards request - GetDashboards(ctx context.Context, params *GetDashboardsParams) (*http.Response, error) + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // PostDashboards request with any body - PostDashboardsWithBody(ctx context.Context, params *PostDashboardsParams, contentType string, body io.Reader) (*http.Response, error) +} - PostDashboards(ctx context.Context, params *PostDashboardsParams, body PostDashboardsJSONRequestBody) (*http.Response, error) +// DeleteAuthorizationsID calls the DELETE on /authorizations/{authID} +// Delete an authorization +func (c *Client) DeleteAuthorizationsID(ctx context.Context, params *DeleteAuthorizationsIDAllParams) error { + var err error - // DeleteDashboardsID request - DeleteDashboardsID(ctx context.Context, dashboardID string, params *DeleteDashboardsIDParams) (*http.Response, error) + var pathParam0 string - // GetDashboardsID request - GetDashboardsID(ctx context.Context, dashboardID string, params *GetDashboardsIDParams) (*http.Response, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "authID", runtime.ParamLocationPath, params.AuthID) + if err != nil { + return err + } - // PatchDashboardsID request with any body - PatchDashboardsIDWithBody(ctx context.Context, dashboardID string, params *PatchDashboardsIDParams, contentType string, body io.Reader) (*http.Response, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err + } - PatchDashboardsID(ctx context.Context, dashboardID string, params *PatchDashboardsIDParams, body PatchDashboardsIDJSONRequestBody) (*http.Response, error) + operationPath := fmt.Sprintf("./authorizations/%s", pathParam0) - // PostDashboardsIDCells request with any body - PostDashboardsIDCellsWithBody(ctx context.Context, dashboardID string, params *PostDashboardsIDCellsParams, contentType string, body io.Reader) (*http.Response, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err + } - PostDashboardsIDCells(ctx context.Context, dashboardID string, params *PostDashboardsIDCellsParams, body PostDashboardsIDCellsJSONRequestBody) (*http.Response, error) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err + } - // PutDashboardsIDCells request with any body - PutDashboardsIDCellsWithBody(ctx context.Context, dashboardID string, params *PutDashboardsIDCellsParams, contentType string, body io.Reader) (*http.Response, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - PutDashboardsIDCells(ctx context.Context, dashboardID string, params *PutDashboardsIDCellsParams, body PutDashboardsIDCellsJSONRequestBody) (*http.Response, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } - // DeleteDashboardsIDCellsID request - DeleteDashboardsIDCellsID(ctx context.Context, dashboardID string, cellID string, params *DeleteDashboardsIDCellsIDParams) (*http.Response, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // PatchDashboardsIDCellsID request with any body - PatchDashboardsIDCellsIDWithBody(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDParams, contentType string, body io.Reader) (*http.Response, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } - PatchDashboardsIDCellsID(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDParams, body PatchDashboardsIDCellsIDJSONRequestBody) (*http.Response, error) + defer func() { _ = rsp.Body.Close() }() - // GetDashboardsIDCellsIDView request - GetDashboardsIDCellsIDView(ctx context.Context, dashboardID string, cellID string, params *GetDashboardsIDCellsIDViewParams) (*http.Response, error) + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil - // PatchDashboardsIDCellsIDView request with any body - PatchDashboardsIDCellsIDViewWithBody(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDViewParams, contentType string, body io.Reader) (*http.Response, error) +} - PatchDashboardsIDCellsIDView(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDViewParams, body PatchDashboardsIDCellsIDViewJSONRequestBody) (*http.Response, error) +// GetAuthorizationsID calls the GET on /authorizations/{authID} +// Retrieve an authorization +func (c *Client) GetAuthorizationsID(ctx context.Context, params *GetAuthorizationsIDAllParams) (*Authorization, error) { + var err error - // GetDashboardsIDLabels request - GetDashboardsIDLabels(ctx context.Context, dashboardID string, params *GetDashboardsIDLabelsParams) (*http.Response, error) + var pathParam0 string - // PostDashboardsIDLabels request with any body - PostDashboardsIDLabelsWithBody(ctx context.Context, dashboardID string, params *PostDashboardsIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "authID", runtime.ParamLocationPath, params.AuthID) + if err != nil { + return nil, err + } - PostDashboardsIDLabels(ctx context.Context, dashboardID string, params *PostDashboardsIDLabelsParams, body PostDashboardsIDLabelsJSONRequestBody) (*http.Response, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // DeleteDashboardsIDLabelsID request - DeleteDashboardsIDLabelsID(ctx context.Context, dashboardID string, labelID string, params *DeleteDashboardsIDLabelsIDParams) (*http.Response, error) + operationPath := fmt.Sprintf("./authorizations/%s", pathParam0) - // GetDashboardsIDMembers request - GetDashboardsIDMembers(ctx context.Context, dashboardID string, params *GetDashboardsIDMembersParams) (*http.Response, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // PostDashboardsIDMembers request with any body - PostDashboardsIDMembersWithBody(ctx context.Context, dashboardID string, params *PostDashboardsIDMembersParams, contentType string, body io.Reader) (*http.Response, error) + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - PostDashboardsIDMembers(ctx context.Context, dashboardID string, params *PostDashboardsIDMembersParams, body PostDashboardsIDMembersJSONRequestBody) (*http.Response, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // DeleteDashboardsIDMembersID request - DeleteDashboardsIDMembersID(ctx context.Context, dashboardID string, userID string, params *DeleteDashboardsIDMembersIDParams) (*http.Response, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - // GetDashboardsIDOwners request - GetDashboardsIDOwners(ctx context.Context, dashboardID string, params *GetDashboardsIDOwnersParams) (*http.Response, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // PostDashboardsIDOwners request with any body - PostDashboardsIDOwnersWithBody(ctx context.Context, dashboardID string, params *PostDashboardsIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - PostDashboardsIDOwners(ctx context.Context, dashboardID string, params *PostDashboardsIDOwnersParams, body PostDashboardsIDOwnersJSONRequestBody) (*http.Response, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - // DeleteDashboardsIDOwnersID request - DeleteDashboardsIDOwnersID(ctx context.Context, dashboardID string, userID string, params *DeleteDashboardsIDOwnersIDParams) (*http.Response, error) + response := &Authorization{} - // GetDBRPs request - GetDBRPs(ctx context.Context, params *GetDBRPsParams) (*http.Response, error) + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // PostDBRP request with any body - PostDBRPWithBody(ctx context.Context, params *PostDBRPParams, contentType string, body io.Reader) (*http.Response, error) +} - PostDBRP(ctx context.Context, params *PostDBRPParams, body PostDBRPJSONRequestBody) (*http.Response, error) +// PatchAuthorizationsID calls the PATCH on /authorizations/{authID} +// Update an authorization to be active or inactive +func (c *Client) PatchAuthorizationsID(ctx context.Context, params *PatchAuthorizationsIDAllParams) (*Authorization, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) - // DeleteDBRPID request - DeleteDBRPID(ctx context.Context, dbrpID string, params *DeleteDBRPIDParams) (*http.Response, error) + var pathParam0 string - // GetDBRPsID request - GetDBRPsID(ctx context.Context, dbrpID string, params *GetDBRPsIDParams) (*http.Response, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "authID", runtime.ParamLocationPath, params.AuthID) + if err != nil { + return nil, err + } - // PatchDBRPID request with any body - PatchDBRPIDWithBody(ctx context.Context, dbrpID string, params *PatchDBRPIDParams, contentType string, body io.Reader) (*http.Response, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - PatchDBRPID(ctx context.Context, dbrpID string, params *PatchDBRPIDParams, body PatchDBRPIDJSONRequestBody) (*http.Response, error) + operationPath := fmt.Sprintf("./authorizations/%s", pathParam0) - // PostDelete request with any body - PostDeleteWithBody(ctx context.Context, params *PostDeleteParams, contentType string, body io.Reader) (*http.Response, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - PostDelete(ctx context.Context, params *PostDeleteParams, body PostDeleteJSONRequestBody) (*http.Response, error) + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } - // GetFlags request - GetFlags(ctx context.Context, params *GetFlagsParams) (*http.Response, error) + req.Header.Add("Content-Type", "application/json") - // GetHealth request - GetHealth(ctx context.Context, params *GetHealthParams) (*http.Response, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // GetLabels request - GetLabels(ctx context.Context, params *GetLabelsParams) (*http.Response, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - // PostLabels request with any body - PostLabelsWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - PostLabels(ctx context.Context, body PostLabelsJSONRequestBody) (*http.Response, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // DeleteLabelsID request - DeleteLabelsID(ctx context.Context, labelID string, params *DeleteLabelsIDParams) (*http.Response, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - // GetLabelsID request - GetLabelsID(ctx context.Context, labelID string, params *GetLabelsIDParams) (*http.Response, error) + response := &Authorization{} - // PatchLabelsID request with any body - PatchLabelsIDWithBody(ctx context.Context, labelID string, params *PatchLabelsIDParams, contentType string, body io.Reader) (*http.Response, error) + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - PatchLabelsID(ctx context.Context, labelID string, params *PatchLabelsIDParams, body PatchLabelsIDJSONRequestBody) (*http.Response, error) +} - // GetLegacyAuthorizations request - GetLegacyAuthorizations(ctx context.Context, params *GetLegacyAuthorizationsParams) (*http.Response, error) +// GetBuckets calls the GET on /buckets +// List buckets +func (c *Client) GetBuckets(ctx context.Context, params *GetBucketsParams) (*Buckets, error) { + var err error - // PostLegacyAuthorizations request with any body - PostLegacyAuthorizationsWithBody(ctx context.Context, params *PostLegacyAuthorizationsParams, contentType string, body io.Reader) (*http.Response, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - PostLegacyAuthorizations(ctx context.Context, params *PostLegacyAuthorizationsParams, body PostLegacyAuthorizationsJSONRequestBody) (*http.Response, error) - - // DeleteLegacyAuthorizationsID request - DeleteLegacyAuthorizationsID(ctx context.Context, authID string, params *DeleteLegacyAuthorizationsIDParams) (*http.Response, error) - - // GetLegacyAuthorizationsID request - GetLegacyAuthorizationsID(ctx context.Context, authID string, params *GetLegacyAuthorizationsIDParams) (*http.Response, error) - - // PatchLegacyAuthorizationsID request with any body - PatchLegacyAuthorizationsIDWithBody(ctx context.Context, authID string, params *PatchLegacyAuthorizationsIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchLegacyAuthorizationsID(ctx context.Context, authID string, params *PatchLegacyAuthorizationsIDParams, body PatchLegacyAuthorizationsIDJSONRequestBody) (*http.Response, error) - - // PostLegacyAuthorizationsIDPassword request with any body - PostLegacyAuthorizationsIDPasswordWithBody(ctx context.Context, authID string, params *PostLegacyAuthorizationsIDPasswordParams, contentType string, body io.Reader) (*http.Response, error) - - PostLegacyAuthorizationsIDPassword(ctx context.Context, authID string, params *PostLegacyAuthorizationsIDPasswordParams, body PostLegacyAuthorizationsIDPasswordJSONRequestBody) (*http.Response, error) - - // GetMe request - GetMe(ctx context.Context, params *GetMeParams) (*http.Response, error) - - // PutMePassword request with any body - PutMePasswordWithBody(ctx context.Context, params *PutMePasswordParams, contentType string, body io.Reader) (*http.Response, error) - - PutMePassword(ctx context.Context, params *PutMePasswordParams, body PutMePasswordJSONRequestBody) (*http.Response, error) - - // GetMetrics request - GetMetrics(ctx context.Context, params *GetMetricsParams) (*http.Response, error) - - // GetNotificationEndpoints request - GetNotificationEndpoints(ctx context.Context, params *GetNotificationEndpointsParams) (*http.Response, error) - - // CreateNotificationEndpoint request with any body - CreateNotificationEndpointWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) - - CreateNotificationEndpoint(ctx context.Context, body CreateNotificationEndpointJSONRequestBody) (*http.Response, error) - - // DeleteNotificationEndpointsID request - DeleteNotificationEndpointsID(ctx context.Context, endpointID string, params *DeleteNotificationEndpointsIDParams) (*http.Response, error) - - // GetNotificationEndpointsID request - GetNotificationEndpointsID(ctx context.Context, endpointID string, params *GetNotificationEndpointsIDParams) (*http.Response, error) - - // PatchNotificationEndpointsID request with any body - PatchNotificationEndpointsIDWithBody(ctx context.Context, endpointID string, params *PatchNotificationEndpointsIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchNotificationEndpointsID(ctx context.Context, endpointID string, params *PatchNotificationEndpointsIDParams, body PatchNotificationEndpointsIDJSONRequestBody) (*http.Response, error) - - // PutNotificationEndpointsID request with any body - PutNotificationEndpointsIDWithBody(ctx context.Context, endpointID string, params *PutNotificationEndpointsIDParams, contentType string, body io.Reader) (*http.Response, error) - - PutNotificationEndpointsID(ctx context.Context, endpointID string, params *PutNotificationEndpointsIDParams, body PutNotificationEndpointsIDJSONRequestBody) (*http.Response, error) - - // GetNotificationEndpointsIDLabels request - GetNotificationEndpointsIDLabels(ctx context.Context, endpointID string, params *GetNotificationEndpointsIDLabelsParams) (*http.Response, error) - - // PostNotificationEndpointIDLabels request with any body - PostNotificationEndpointIDLabelsWithBody(ctx context.Context, endpointID string, params *PostNotificationEndpointIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) - - PostNotificationEndpointIDLabels(ctx context.Context, endpointID string, params *PostNotificationEndpointIDLabelsParams, body PostNotificationEndpointIDLabelsJSONRequestBody) (*http.Response, error) - - // DeleteNotificationEndpointsIDLabelsID request - DeleteNotificationEndpointsIDLabelsID(ctx context.Context, endpointID string, labelID string, params *DeleteNotificationEndpointsIDLabelsIDParams) (*http.Response, error) - - // GetNotificationRules request - GetNotificationRules(ctx context.Context, params *GetNotificationRulesParams) (*http.Response, error) - - // CreateNotificationRule request with any body - CreateNotificationRuleWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) - - CreateNotificationRule(ctx context.Context, body CreateNotificationRuleJSONRequestBody) (*http.Response, error) - - // DeleteNotificationRulesID request - DeleteNotificationRulesID(ctx context.Context, ruleID string, params *DeleteNotificationRulesIDParams) (*http.Response, error) - - // GetNotificationRulesID request - GetNotificationRulesID(ctx context.Context, ruleID string, params *GetNotificationRulesIDParams) (*http.Response, error) - - // PatchNotificationRulesID request with any body - PatchNotificationRulesIDWithBody(ctx context.Context, ruleID string, params *PatchNotificationRulesIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchNotificationRulesID(ctx context.Context, ruleID string, params *PatchNotificationRulesIDParams, body PatchNotificationRulesIDJSONRequestBody) (*http.Response, error) - - // PutNotificationRulesID request with any body - PutNotificationRulesIDWithBody(ctx context.Context, ruleID string, params *PutNotificationRulesIDParams, contentType string, body io.Reader) (*http.Response, error) - - PutNotificationRulesID(ctx context.Context, ruleID string, params *PutNotificationRulesIDParams, body PutNotificationRulesIDJSONRequestBody) (*http.Response, error) - - // GetNotificationRulesIDLabels request - GetNotificationRulesIDLabels(ctx context.Context, ruleID string, params *GetNotificationRulesIDLabelsParams) (*http.Response, error) - - // PostNotificationRuleIDLabels request with any body - PostNotificationRuleIDLabelsWithBody(ctx context.Context, ruleID string, params *PostNotificationRuleIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) - - PostNotificationRuleIDLabels(ctx context.Context, ruleID string, params *PostNotificationRuleIDLabelsParams, body PostNotificationRuleIDLabelsJSONRequestBody) (*http.Response, error) - - // DeleteNotificationRulesIDLabelsID request - DeleteNotificationRulesIDLabelsID(ctx context.Context, ruleID string, labelID string, params *DeleteNotificationRulesIDLabelsIDParams) (*http.Response, error) - - // GetNotificationRulesIDQuery request - GetNotificationRulesIDQuery(ctx context.Context, ruleID string, params *GetNotificationRulesIDQueryParams) (*http.Response, error) - - // GetOrgs request - GetOrgs(ctx context.Context, params *GetOrgsParams) (*http.Response, error) - - // PostOrgs request with any body - PostOrgsWithBody(ctx context.Context, params *PostOrgsParams, contentType string, body io.Reader) (*http.Response, error) - - PostOrgs(ctx context.Context, params *PostOrgsParams, body PostOrgsJSONRequestBody) (*http.Response, error) - - // DeleteOrgsID request - DeleteOrgsID(ctx context.Context, orgID string, params *DeleteOrgsIDParams) (*http.Response, error) - - // GetOrgsID request - GetOrgsID(ctx context.Context, orgID string, params *GetOrgsIDParams) (*http.Response, error) - - // PatchOrgsID request with any body - PatchOrgsIDWithBody(ctx context.Context, orgID string, params *PatchOrgsIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchOrgsID(ctx context.Context, orgID string, params *PatchOrgsIDParams, body PatchOrgsIDJSONRequestBody) (*http.Response, error) - - // GetOrgsIDMembers request - GetOrgsIDMembers(ctx context.Context, orgID string, params *GetOrgsIDMembersParams) (*http.Response, error) - - // PostOrgsIDMembers request with any body - PostOrgsIDMembersWithBody(ctx context.Context, orgID string, params *PostOrgsIDMembersParams, contentType string, body io.Reader) (*http.Response, error) - - PostOrgsIDMembers(ctx context.Context, orgID string, params *PostOrgsIDMembersParams, body PostOrgsIDMembersJSONRequestBody) (*http.Response, error) - - // DeleteOrgsIDMembersID request - DeleteOrgsIDMembersID(ctx context.Context, orgID string, userID string, params *DeleteOrgsIDMembersIDParams) (*http.Response, error) - - // GetOrgsIDOwners request - GetOrgsIDOwners(ctx context.Context, orgID string, params *GetOrgsIDOwnersParams) (*http.Response, error) - - // PostOrgsIDOwners request with any body - PostOrgsIDOwnersWithBody(ctx context.Context, orgID string, params *PostOrgsIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) - - PostOrgsIDOwners(ctx context.Context, orgID string, params *PostOrgsIDOwnersParams, body PostOrgsIDOwnersJSONRequestBody) (*http.Response, error) - - // DeleteOrgsIDOwnersID request - DeleteOrgsIDOwnersID(ctx context.Context, orgID string, userID string, params *DeleteOrgsIDOwnersIDParams) (*http.Response, error) - - // GetOrgsIDSecrets request - GetOrgsIDSecrets(ctx context.Context, orgID string, params *GetOrgsIDSecretsParams) (*http.Response, error) - - // PatchOrgsIDSecrets request with any body - PatchOrgsIDSecretsWithBody(ctx context.Context, orgID string, params *PatchOrgsIDSecretsParams, contentType string, body io.Reader) (*http.Response, error) - - PatchOrgsIDSecrets(ctx context.Context, orgID string, params *PatchOrgsIDSecretsParams, body PatchOrgsIDSecretsJSONRequestBody) (*http.Response, error) - - // PostOrgsIDSecrets request with any body - PostOrgsIDSecretsWithBody(ctx context.Context, orgID string, params *PostOrgsIDSecretsParams, contentType string, body io.Reader) (*http.Response, error) - - PostOrgsIDSecrets(ctx context.Context, orgID string, params *PostOrgsIDSecretsParams, body PostOrgsIDSecretsJSONRequestBody) (*http.Response, error) - - // DeleteOrgsIDSecretsID request - DeleteOrgsIDSecretsID(ctx context.Context, orgID string, secretID string, params *DeleteOrgsIDSecretsIDParams) (*http.Response, error) - - // GetPing request - GetPing(ctx context.Context) (*http.Response, error) - - // HeadPing request - HeadPing(ctx context.Context) (*http.Response, error) - - // PostQuery request with any body - PostQueryWithBody(ctx context.Context, params *PostQueryParams, contentType string, body io.Reader) (*http.Response, error) - - PostQuery(ctx context.Context, params *PostQueryParams, body PostQueryJSONRequestBody) (*http.Response, error) - - // PostQueryAnalyze request with any body - PostQueryAnalyzeWithBody(ctx context.Context, params *PostQueryAnalyzeParams, contentType string, body io.Reader) (*http.Response, error) - - PostQueryAnalyze(ctx context.Context, params *PostQueryAnalyzeParams, body PostQueryAnalyzeJSONRequestBody) (*http.Response, error) - - // PostQueryAst request with any body - PostQueryAstWithBody(ctx context.Context, params *PostQueryAstParams, contentType string, body io.Reader) (*http.Response, error) - - PostQueryAst(ctx context.Context, params *PostQueryAstParams, body PostQueryAstJSONRequestBody) (*http.Response, error) - - // GetQuerySuggestions request - GetQuerySuggestions(ctx context.Context, params *GetQuerySuggestionsParams) (*http.Response, error) - - // GetQuerySuggestionsName request - GetQuerySuggestionsName(ctx context.Context, name string, params *GetQuerySuggestionsNameParams) (*http.Response, error) - - // GetReady request - GetReady(ctx context.Context, params *GetReadyParams) (*http.Response, error) - - // GetRemoteConnections request - GetRemoteConnections(ctx context.Context, params *GetRemoteConnectionsParams) (*http.Response, error) - - // PostRemoteConnection request with any body - PostRemoteConnectionWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) - - PostRemoteConnection(ctx context.Context, body PostRemoteConnectionJSONRequestBody) (*http.Response, error) - - // DeleteRemoteConnectionByID request - DeleteRemoteConnectionByID(ctx context.Context, remoteID string, params *DeleteRemoteConnectionByIDParams) (*http.Response, error) - - // GetRemoteConnectionByID request - GetRemoteConnectionByID(ctx context.Context, remoteID string, params *GetRemoteConnectionByIDParams) (*http.Response, error) - - // PatchRemoteConnectionByID request with any body - PatchRemoteConnectionByIDWithBody(ctx context.Context, remoteID string, params *PatchRemoteConnectionByIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchRemoteConnectionByID(ctx context.Context, remoteID string, params *PatchRemoteConnectionByIDParams, body PatchRemoteConnectionByIDJSONRequestBody) (*http.Response, error) - - // GetReplications request - GetReplications(ctx context.Context, params *GetReplicationsParams) (*http.Response, error) - - // PostReplication request with any body - PostReplicationWithBody(ctx context.Context, params *PostReplicationParams, contentType string, body io.Reader) (*http.Response, error) - - PostReplication(ctx context.Context, params *PostReplicationParams, body PostReplicationJSONRequestBody) (*http.Response, error) - - // DeleteReplicationByID request - DeleteReplicationByID(ctx context.Context, replicationID string, params *DeleteReplicationByIDParams) (*http.Response, error) - - // GetReplicationByID request - GetReplicationByID(ctx context.Context, replicationID string, params *GetReplicationByIDParams) (*http.Response, error) - - // PatchReplicationByID request with any body - PatchReplicationByIDWithBody(ctx context.Context, replicationID string, params *PatchReplicationByIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchReplicationByID(ctx context.Context, replicationID string, params *PatchReplicationByIDParams, body PatchReplicationByIDJSONRequestBody) (*http.Response, error) - - // PostValidateReplicationByID request - PostValidateReplicationByID(ctx context.Context, replicationID string, params *PostValidateReplicationByIDParams) (*http.Response, error) - - // GetResources request - GetResources(ctx context.Context, params *GetResourcesParams) (*http.Response, error) - - // PostRestoreBucketID request with any body - PostRestoreBucketIDWithBody(ctx context.Context, bucketID string, params *PostRestoreBucketIDParams, contentType string, body io.Reader) (*http.Response, error) - - // PostRestoreBucketMetadata request with any body - PostRestoreBucketMetadataWithBody(ctx context.Context, params *PostRestoreBucketMetadataParams, contentType string, body io.Reader) (*http.Response, error) - - PostRestoreBucketMetadata(ctx context.Context, params *PostRestoreBucketMetadataParams, body PostRestoreBucketMetadataJSONRequestBody) (*http.Response, error) - - // PostRestoreKV request with any body - PostRestoreKVWithBody(ctx context.Context, params *PostRestoreKVParams, contentType string, body io.Reader) (*http.Response, error) - - // PostRestoreShardId request with any body - PostRestoreShardIdWithBody(ctx context.Context, shardID string, params *PostRestoreShardIdParams, contentType string, body io.Reader) (*http.Response, error) - - // PostRestoreSQL request with any body - PostRestoreSQLWithBody(ctx context.Context, params *PostRestoreSQLParams, contentType string, body io.Reader) (*http.Response, error) - - // GetScrapers request - GetScrapers(ctx context.Context, params *GetScrapersParams) (*http.Response, error) - - // PostScrapers request with any body - PostScrapersWithBody(ctx context.Context, params *PostScrapersParams, contentType string, body io.Reader) (*http.Response, error) - - PostScrapers(ctx context.Context, params *PostScrapersParams, body PostScrapersJSONRequestBody) (*http.Response, error) - - // DeleteScrapersID request - DeleteScrapersID(ctx context.Context, scraperTargetID string, params *DeleteScrapersIDParams) (*http.Response, error) - - // GetScrapersID request - GetScrapersID(ctx context.Context, scraperTargetID string, params *GetScrapersIDParams) (*http.Response, error) - - // PatchScrapersID request with any body - PatchScrapersIDWithBody(ctx context.Context, scraperTargetID string, params *PatchScrapersIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchScrapersID(ctx context.Context, scraperTargetID string, params *PatchScrapersIDParams, body PatchScrapersIDJSONRequestBody) (*http.Response, error) - - // GetScrapersIDLabels request - GetScrapersIDLabels(ctx context.Context, scraperTargetID string, params *GetScrapersIDLabelsParams) (*http.Response, error) - - // PostScrapersIDLabels request with any body - PostScrapersIDLabelsWithBody(ctx context.Context, scraperTargetID string, params *PostScrapersIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) - - PostScrapersIDLabels(ctx context.Context, scraperTargetID string, params *PostScrapersIDLabelsParams, body PostScrapersIDLabelsJSONRequestBody) (*http.Response, error) - - // DeleteScrapersIDLabelsID request - DeleteScrapersIDLabelsID(ctx context.Context, scraperTargetID string, labelID string, params *DeleteScrapersIDLabelsIDParams) (*http.Response, error) - - // GetScrapersIDMembers request - GetScrapersIDMembers(ctx context.Context, scraperTargetID string, params *GetScrapersIDMembersParams) (*http.Response, error) - - // PostScrapersIDMembers request with any body - PostScrapersIDMembersWithBody(ctx context.Context, scraperTargetID string, params *PostScrapersIDMembersParams, contentType string, body io.Reader) (*http.Response, error) - - PostScrapersIDMembers(ctx context.Context, scraperTargetID string, params *PostScrapersIDMembersParams, body PostScrapersIDMembersJSONRequestBody) (*http.Response, error) - - // DeleteScrapersIDMembersID request - DeleteScrapersIDMembersID(ctx context.Context, scraperTargetID string, userID string, params *DeleteScrapersIDMembersIDParams) (*http.Response, error) - - // GetScrapersIDOwners request - GetScrapersIDOwners(ctx context.Context, scraperTargetID string, params *GetScrapersIDOwnersParams) (*http.Response, error) - - // PostScrapersIDOwners request with any body - PostScrapersIDOwnersWithBody(ctx context.Context, scraperTargetID string, params *PostScrapersIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) - - PostScrapersIDOwners(ctx context.Context, scraperTargetID string, params *PostScrapersIDOwnersParams, body PostScrapersIDOwnersJSONRequestBody) (*http.Response, error) - - // DeleteScrapersIDOwnersID request - DeleteScrapersIDOwnersID(ctx context.Context, scraperTargetID string, userID string, params *DeleteScrapersIDOwnersIDParams) (*http.Response, error) - - // GetSetup request - GetSetup(ctx context.Context, params *GetSetupParams) (*http.Response, error) - - // PostSetup request with any body - PostSetupWithBody(ctx context.Context, params *PostSetupParams, contentType string, body io.Reader) (*http.Response, error) - - PostSetup(ctx context.Context, params *PostSetupParams, body PostSetupJSONRequestBody) (*http.Response, error) - - // PostSignin request - PostSignin(ctx context.Context, params *PostSigninParams) (*http.Response, error) - - // PostSignout request - PostSignout(ctx context.Context, params *PostSignoutParams) (*http.Response, error) - - // GetSources request - GetSources(ctx context.Context, params *GetSourcesParams) (*http.Response, error) - - // PostSources request with any body - PostSourcesWithBody(ctx context.Context, params *PostSourcesParams, contentType string, body io.Reader) (*http.Response, error) - - PostSources(ctx context.Context, params *PostSourcesParams, body PostSourcesJSONRequestBody) (*http.Response, error) - - // DeleteSourcesID request - DeleteSourcesID(ctx context.Context, sourceID string, params *DeleteSourcesIDParams) (*http.Response, error) - - // GetSourcesID request - GetSourcesID(ctx context.Context, sourceID string, params *GetSourcesIDParams) (*http.Response, error) - - // PatchSourcesID request with any body - PatchSourcesIDWithBody(ctx context.Context, sourceID string, params *PatchSourcesIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchSourcesID(ctx context.Context, sourceID string, params *PatchSourcesIDParams, body PatchSourcesIDJSONRequestBody) (*http.Response, error) - - // GetSourcesIDBuckets request - GetSourcesIDBuckets(ctx context.Context, sourceID string, params *GetSourcesIDBucketsParams) (*http.Response, error) - - // GetSourcesIDHealth request - GetSourcesIDHealth(ctx context.Context, sourceID string, params *GetSourcesIDHealthParams) (*http.Response, error) - - // ListStacks request - ListStacks(ctx context.Context, params *ListStacksParams) (*http.Response, error) - - // CreateStack request with any body - CreateStackWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) - - CreateStack(ctx context.Context, body CreateStackJSONRequestBody) (*http.Response, error) - - // DeleteStack request - DeleteStack(ctx context.Context, stackId string, params *DeleteStackParams) (*http.Response, error) - - // ReadStack request - ReadStack(ctx context.Context, stackId string) (*http.Response, error) - - // UpdateStack request with any body - UpdateStackWithBody(ctx context.Context, stackId string, contentType string, body io.Reader) (*http.Response, error) - - UpdateStack(ctx context.Context, stackId string, body UpdateStackJSONRequestBody) (*http.Response, error) - - // UninstallStack request - UninstallStack(ctx context.Context, stackId string) (*http.Response, error) - - // GetTasks request - GetTasks(ctx context.Context, params *GetTasksParams) (*http.Response, error) - - // PostTasks request with any body - PostTasksWithBody(ctx context.Context, params *PostTasksParams, contentType string, body io.Reader) (*http.Response, error) - - PostTasks(ctx context.Context, params *PostTasksParams, body PostTasksJSONRequestBody) (*http.Response, error) - - // DeleteTasksID request - DeleteTasksID(ctx context.Context, taskID string, params *DeleteTasksIDParams) (*http.Response, error) - - // GetTasksID request - GetTasksID(ctx context.Context, taskID string, params *GetTasksIDParams) (*http.Response, error) - - // PatchTasksID request with any body - PatchTasksIDWithBody(ctx context.Context, taskID string, params *PatchTasksIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchTasksID(ctx context.Context, taskID string, params *PatchTasksIDParams, body PatchTasksIDJSONRequestBody) (*http.Response, error) - - // GetTasksIDLabels request - GetTasksIDLabels(ctx context.Context, taskID string, params *GetTasksIDLabelsParams) (*http.Response, error) - - // PostTasksIDLabels request with any body - PostTasksIDLabelsWithBody(ctx context.Context, taskID string, params *PostTasksIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) - - PostTasksIDLabels(ctx context.Context, taskID string, params *PostTasksIDLabelsParams, body PostTasksIDLabelsJSONRequestBody) (*http.Response, error) - - // DeleteTasksIDLabelsID request - DeleteTasksIDLabelsID(ctx context.Context, taskID string, labelID string, params *DeleteTasksIDLabelsIDParams) (*http.Response, error) - - // GetTasksIDLogs request - GetTasksIDLogs(ctx context.Context, taskID string, params *GetTasksIDLogsParams) (*http.Response, error) - - // GetTasksIDMembers request - GetTasksIDMembers(ctx context.Context, taskID string, params *GetTasksIDMembersParams) (*http.Response, error) - - // PostTasksIDMembers request with any body - PostTasksIDMembersWithBody(ctx context.Context, taskID string, params *PostTasksIDMembersParams, contentType string, body io.Reader) (*http.Response, error) - - PostTasksIDMembers(ctx context.Context, taskID string, params *PostTasksIDMembersParams, body PostTasksIDMembersJSONRequestBody) (*http.Response, error) - - // DeleteTasksIDMembersID request - DeleteTasksIDMembersID(ctx context.Context, taskID string, userID string, params *DeleteTasksIDMembersIDParams) (*http.Response, error) - - // GetTasksIDOwners request - GetTasksIDOwners(ctx context.Context, taskID string, params *GetTasksIDOwnersParams) (*http.Response, error) - - // PostTasksIDOwners request with any body - PostTasksIDOwnersWithBody(ctx context.Context, taskID string, params *PostTasksIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) - - PostTasksIDOwners(ctx context.Context, taskID string, params *PostTasksIDOwnersParams, body PostTasksIDOwnersJSONRequestBody) (*http.Response, error) - - // DeleteTasksIDOwnersID request - DeleteTasksIDOwnersID(ctx context.Context, taskID string, userID string, params *DeleteTasksIDOwnersIDParams) (*http.Response, error) - - // GetTasksIDRuns request - GetTasksIDRuns(ctx context.Context, taskID string, params *GetTasksIDRunsParams) (*http.Response, error) - - // PostTasksIDRuns request with any body - PostTasksIDRunsWithBody(ctx context.Context, taskID string, params *PostTasksIDRunsParams, contentType string, body io.Reader) (*http.Response, error) - - PostTasksIDRuns(ctx context.Context, taskID string, params *PostTasksIDRunsParams, body PostTasksIDRunsJSONRequestBody) (*http.Response, error) - - // DeleteTasksIDRunsID request - DeleteTasksIDRunsID(ctx context.Context, taskID string, runID string, params *DeleteTasksIDRunsIDParams) (*http.Response, error) - - // GetTasksIDRunsID request - GetTasksIDRunsID(ctx context.Context, taskID string, runID string, params *GetTasksIDRunsIDParams) (*http.Response, error) - - // GetTasksIDRunsIDLogs request - GetTasksIDRunsIDLogs(ctx context.Context, taskID string, runID string, params *GetTasksIDRunsIDLogsParams) (*http.Response, error) - - // PostTasksIDRunsIDRetry request with any body - PostTasksIDRunsIDRetryWithBody(ctx context.Context, taskID string, runID string, params *PostTasksIDRunsIDRetryParams, contentType string, body io.Reader) (*http.Response, error) - - // GetTelegrafPlugins request - GetTelegrafPlugins(ctx context.Context, params *GetTelegrafPluginsParams) (*http.Response, error) - - // GetTelegrafs request - GetTelegrafs(ctx context.Context, params *GetTelegrafsParams) (*http.Response, error) - - // PostTelegrafs request with any body - PostTelegrafsWithBody(ctx context.Context, params *PostTelegrafsParams, contentType string, body io.Reader) (*http.Response, error) - - PostTelegrafs(ctx context.Context, params *PostTelegrafsParams, body PostTelegrafsJSONRequestBody) (*http.Response, error) - - // DeleteTelegrafsID request - DeleteTelegrafsID(ctx context.Context, telegrafID string, params *DeleteTelegrafsIDParams) (*http.Response, error) - - // GetTelegrafsID request - GetTelegrafsID(ctx context.Context, telegrafID string, params *GetTelegrafsIDParams) (*http.Response, error) - - // PutTelegrafsID request with any body - PutTelegrafsIDWithBody(ctx context.Context, telegrafID string, params *PutTelegrafsIDParams, contentType string, body io.Reader) (*http.Response, error) - - PutTelegrafsID(ctx context.Context, telegrafID string, params *PutTelegrafsIDParams, body PutTelegrafsIDJSONRequestBody) (*http.Response, error) - - // GetTelegrafsIDLabels request - GetTelegrafsIDLabels(ctx context.Context, telegrafID string, params *GetTelegrafsIDLabelsParams) (*http.Response, error) - - // PostTelegrafsIDLabels request with any body - PostTelegrafsIDLabelsWithBody(ctx context.Context, telegrafID string, params *PostTelegrafsIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) - - PostTelegrafsIDLabels(ctx context.Context, telegrafID string, params *PostTelegrafsIDLabelsParams, body PostTelegrafsIDLabelsJSONRequestBody) (*http.Response, error) - - // DeleteTelegrafsIDLabelsID request - DeleteTelegrafsIDLabelsID(ctx context.Context, telegrafID string, labelID string, params *DeleteTelegrafsIDLabelsIDParams) (*http.Response, error) - - // GetTelegrafsIDMembers request - GetTelegrafsIDMembers(ctx context.Context, telegrafID string, params *GetTelegrafsIDMembersParams) (*http.Response, error) - - // PostTelegrafsIDMembers request with any body - PostTelegrafsIDMembersWithBody(ctx context.Context, telegrafID string, params *PostTelegrafsIDMembersParams, contentType string, body io.Reader) (*http.Response, error) - - PostTelegrafsIDMembers(ctx context.Context, telegrafID string, params *PostTelegrafsIDMembersParams, body PostTelegrafsIDMembersJSONRequestBody) (*http.Response, error) - - // DeleteTelegrafsIDMembersID request - DeleteTelegrafsIDMembersID(ctx context.Context, telegrafID string, userID string, params *DeleteTelegrafsIDMembersIDParams) (*http.Response, error) - - // GetTelegrafsIDOwners request - GetTelegrafsIDOwners(ctx context.Context, telegrafID string, params *GetTelegrafsIDOwnersParams) (*http.Response, error) - - // PostTelegrafsIDOwners request with any body - PostTelegrafsIDOwnersWithBody(ctx context.Context, telegrafID string, params *PostTelegrafsIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) - - PostTelegrafsIDOwners(ctx context.Context, telegrafID string, params *PostTelegrafsIDOwnersParams, body PostTelegrafsIDOwnersJSONRequestBody) (*http.Response, error) - - // DeleteTelegrafsIDOwnersID request - DeleteTelegrafsIDOwnersID(ctx context.Context, telegrafID string, userID string, params *DeleteTelegrafsIDOwnersIDParams) (*http.Response, error) - - // ApplyTemplate request with any body - ApplyTemplateWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) - - ApplyTemplate(ctx context.Context, body ApplyTemplateJSONRequestBody) (*http.Response, error) - - // ExportTemplate request with any body - ExportTemplateWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) - - ExportTemplate(ctx context.Context, body ExportTemplateJSONRequestBody) (*http.Response, error) - - // GetUsers request - GetUsers(ctx context.Context, params *GetUsersParams) (*http.Response, error) - - // PostUsers request with any body - PostUsersWithBody(ctx context.Context, params *PostUsersParams, contentType string, body io.Reader) (*http.Response, error) - - PostUsers(ctx context.Context, params *PostUsersParams, body PostUsersJSONRequestBody) (*http.Response, error) - - // DeleteUsersID request - DeleteUsersID(ctx context.Context, userID string, params *DeleteUsersIDParams) (*http.Response, error) - - // GetUsersID request - GetUsersID(ctx context.Context, userID string, params *GetUsersIDParams) (*http.Response, error) - - // PatchUsersID request with any body - PatchUsersIDWithBody(ctx context.Context, userID string, params *PatchUsersIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchUsersID(ctx context.Context, userID string, params *PatchUsersIDParams, body PatchUsersIDJSONRequestBody) (*http.Response, error) - - // PostUsersIDPassword request with any body - PostUsersIDPasswordWithBody(ctx context.Context, userID string, params *PostUsersIDPasswordParams, contentType string, body io.Reader) (*http.Response, error) - - PostUsersIDPassword(ctx context.Context, userID string, params *PostUsersIDPasswordParams, body PostUsersIDPasswordJSONRequestBody) (*http.Response, error) - - // GetVariables request - GetVariables(ctx context.Context, params *GetVariablesParams) (*http.Response, error) - - // PostVariables request with any body - PostVariablesWithBody(ctx context.Context, params *PostVariablesParams, contentType string, body io.Reader) (*http.Response, error) - - PostVariables(ctx context.Context, params *PostVariablesParams, body PostVariablesJSONRequestBody) (*http.Response, error) - - // DeleteVariablesID request - DeleteVariablesID(ctx context.Context, variableID string, params *DeleteVariablesIDParams) (*http.Response, error) - - // GetVariablesID request - GetVariablesID(ctx context.Context, variableID string, params *GetVariablesIDParams) (*http.Response, error) - - // PatchVariablesID request with any body - PatchVariablesIDWithBody(ctx context.Context, variableID string, params *PatchVariablesIDParams, contentType string, body io.Reader) (*http.Response, error) - - PatchVariablesID(ctx context.Context, variableID string, params *PatchVariablesIDParams, body PatchVariablesIDJSONRequestBody) (*http.Response, error) - - // PutVariablesID request with any body - PutVariablesIDWithBody(ctx context.Context, variableID string, params *PutVariablesIDParams, contentType string, body io.Reader) (*http.Response, error) - - PutVariablesID(ctx context.Context, variableID string, params *PutVariablesIDParams, body PutVariablesIDJSONRequestBody) (*http.Response, error) - - // GetVariablesIDLabels request - GetVariablesIDLabels(ctx context.Context, variableID string, params *GetVariablesIDLabelsParams) (*http.Response, error) - - // PostVariablesIDLabels request with any body - PostVariablesIDLabelsWithBody(ctx context.Context, variableID string, params *PostVariablesIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) - - PostVariablesIDLabels(ctx context.Context, variableID string, params *PostVariablesIDLabelsParams, body PostVariablesIDLabelsJSONRequestBody) (*http.Response, error) - - // DeleteVariablesIDLabelsID request - DeleteVariablesIDLabelsID(ctx context.Context, variableID string, labelID string, params *DeleteVariablesIDLabelsIDParams) (*http.Response, error) - - // PostWrite request with any body - PostWriteWithBody(ctx context.Context, params *PostWriteParams, contentType string, body io.Reader) (*http.Response, error) -} - -func (c *Client) GetRoutes(ctx context.Context, params *GetRoutesParams) (*http.Response, error) { - req, err := NewGetRoutesRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetAuthorizations(ctx context.Context, params *GetAuthorizationsParams) (*http.Response, error) { - req, err := NewGetAuthorizationsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostAuthorizationsWithBody(ctx context.Context, params *PostAuthorizationsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostAuthorizationsRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostAuthorizations(ctx context.Context, params *PostAuthorizationsParams, body PostAuthorizationsJSONRequestBody) (*http.Response, error) { - req, err := NewPostAuthorizationsRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteAuthorizationsID(ctx context.Context, authID string, params *DeleteAuthorizationsIDParams) (*http.Response, error) { - req, err := NewDeleteAuthorizationsIDRequest(c.service.ServerAPIURL(), authID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetAuthorizationsID(ctx context.Context, authID string, params *GetAuthorizationsIDParams) (*http.Response, error) { - req, err := NewGetAuthorizationsIDRequest(c.service.ServerAPIURL(), authID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchAuthorizationsIDWithBody(ctx context.Context, authID string, params *PatchAuthorizationsIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchAuthorizationsIDRequestWithBody(c.service.ServerAPIURL(), authID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchAuthorizationsID(ctx context.Context, authID string, params *PatchAuthorizationsIDParams, body PatchAuthorizationsIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchAuthorizationsIDRequest(c.service.ServerAPIURL(), authID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetBackupKV(ctx context.Context, params *GetBackupKVParams) (*http.Response, error) { - req, err := NewGetBackupKVRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetBackupMetadata(ctx context.Context, params *GetBackupMetadataParams) (*http.Response, error) { - req, err := NewGetBackupMetadataRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetBackupShardId(ctx context.Context, shardID int64, params *GetBackupShardIdParams) (*http.Response, error) { - req, err := NewGetBackupShardIdRequest(c.service.ServerAPIURL(), shardID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetBuckets(ctx context.Context, params *GetBucketsParams) (*http.Response, error) { - req, err := NewGetBucketsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostBucketsWithBody(ctx context.Context, params *PostBucketsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostBucketsRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostBuckets(ctx context.Context, params *PostBucketsParams, body PostBucketsJSONRequestBody) (*http.Response, error) { - req, err := NewPostBucketsRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteBucketsID(ctx context.Context, bucketID string, params *DeleteBucketsIDParams) (*http.Response, error) { - req, err := NewDeleteBucketsIDRequest(c.service.ServerAPIURL(), bucketID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetBucketsID(ctx context.Context, bucketID string, params *GetBucketsIDParams) (*http.Response, error) { - req, err := NewGetBucketsIDRequest(c.service.ServerAPIURL(), bucketID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchBucketsIDWithBody(ctx context.Context, bucketID string, params *PatchBucketsIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchBucketsIDRequestWithBody(c.service.ServerAPIURL(), bucketID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchBucketsID(ctx context.Context, bucketID string, params *PatchBucketsIDParams, body PatchBucketsIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchBucketsIDRequest(c.service.ServerAPIURL(), bucketID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetBucketsIDLabels(ctx context.Context, bucketID string, params *GetBucketsIDLabelsParams) (*http.Response, error) { - req, err := NewGetBucketsIDLabelsRequest(c.service.ServerAPIURL(), bucketID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostBucketsIDLabelsWithBody(ctx context.Context, bucketID string, params *PostBucketsIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostBucketsIDLabelsRequestWithBody(c.service.ServerAPIURL(), bucketID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostBucketsIDLabels(ctx context.Context, bucketID string, params *PostBucketsIDLabelsParams, body PostBucketsIDLabelsJSONRequestBody) (*http.Response, error) { - req, err := NewPostBucketsIDLabelsRequest(c.service.ServerAPIURL(), bucketID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteBucketsIDLabelsID(ctx context.Context, bucketID string, labelID string, params *DeleteBucketsIDLabelsIDParams) (*http.Response, error) { - req, err := NewDeleteBucketsIDLabelsIDRequest(c.service.ServerAPIURL(), bucketID, labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetBucketsIDMembers(ctx context.Context, bucketID string, params *GetBucketsIDMembersParams) (*http.Response, error) { - req, err := NewGetBucketsIDMembersRequest(c.service.ServerAPIURL(), bucketID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostBucketsIDMembersWithBody(ctx context.Context, bucketID string, params *PostBucketsIDMembersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostBucketsIDMembersRequestWithBody(c.service.ServerAPIURL(), bucketID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostBucketsIDMembers(ctx context.Context, bucketID string, params *PostBucketsIDMembersParams, body PostBucketsIDMembersJSONRequestBody) (*http.Response, error) { - req, err := NewPostBucketsIDMembersRequest(c.service.ServerAPIURL(), bucketID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteBucketsIDMembersID(ctx context.Context, bucketID string, userID string, params *DeleteBucketsIDMembersIDParams) (*http.Response, error) { - req, err := NewDeleteBucketsIDMembersIDRequest(c.service.ServerAPIURL(), bucketID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetBucketsIDOwners(ctx context.Context, bucketID string, params *GetBucketsIDOwnersParams) (*http.Response, error) { - req, err := NewGetBucketsIDOwnersRequest(c.service.ServerAPIURL(), bucketID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostBucketsIDOwnersWithBody(ctx context.Context, bucketID string, params *PostBucketsIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostBucketsIDOwnersRequestWithBody(c.service.ServerAPIURL(), bucketID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostBucketsIDOwners(ctx context.Context, bucketID string, params *PostBucketsIDOwnersParams, body PostBucketsIDOwnersJSONRequestBody) (*http.Response, error) { - req, err := NewPostBucketsIDOwnersRequest(c.service.ServerAPIURL(), bucketID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteBucketsIDOwnersID(ctx context.Context, bucketID string, userID string, params *DeleteBucketsIDOwnersIDParams) (*http.Response, error) { - req, err := NewDeleteBucketsIDOwnersIDRequest(c.service.ServerAPIURL(), bucketID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetChecks(ctx context.Context, params *GetChecksParams) (*http.Response, error) { - req, err := NewGetChecksRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) CreateCheckWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewCreateCheckRequestWithBody(c.service.ServerAPIURL(), contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) CreateCheck(ctx context.Context, body CreateCheckJSONRequestBody) (*http.Response, error) { - req, err := NewCreateCheckRequest(c.service.ServerAPIURL(), body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteChecksID(ctx context.Context, checkID string, params *DeleteChecksIDParams) (*http.Response, error) { - req, err := NewDeleteChecksIDRequest(c.service.ServerAPIURL(), checkID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetChecksID(ctx context.Context, checkID string, params *GetChecksIDParams) (*http.Response, error) { - req, err := NewGetChecksIDRequest(c.service.ServerAPIURL(), checkID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchChecksIDWithBody(ctx context.Context, checkID string, params *PatchChecksIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchChecksIDRequestWithBody(c.service.ServerAPIURL(), checkID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchChecksID(ctx context.Context, checkID string, params *PatchChecksIDParams, body PatchChecksIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchChecksIDRequest(c.service.ServerAPIURL(), checkID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutChecksIDWithBody(ctx context.Context, checkID string, params *PutChecksIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPutChecksIDRequestWithBody(c.service.ServerAPIURL(), checkID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutChecksID(ctx context.Context, checkID string, params *PutChecksIDParams, body PutChecksIDJSONRequestBody) (*http.Response, error) { - req, err := NewPutChecksIDRequest(c.service.ServerAPIURL(), checkID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetChecksIDLabels(ctx context.Context, checkID string, params *GetChecksIDLabelsParams) (*http.Response, error) { - req, err := NewGetChecksIDLabelsRequest(c.service.ServerAPIURL(), checkID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostChecksIDLabelsWithBody(ctx context.Context, checkID string, params *PostChecksIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostChecksIDLabelsRequestWithBody(c.service.ServerAPIURL(), checkID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostChecksIDLabels(ctx context.Context, checkID string, params *PostChecksIDLabelsParams, body PostChecksIDLabelsJSONRequestBody) (*http.Response, error) { - req, err := NewPostChecksIDLabelsRequest(c.service.ServerAPIURL(), checkID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteChecksIDLabelsID(ctx context.Context, checkID string, labelID string, params *DeleteChecksIDLabelsIDParams) (*http.Response, error) { - req, err := NewDeleteChecksIDLabelsIDRequest(c.service.ServerAPIURL(), checkID, labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetChecksIDQuery(ctx context.Context, checkID string, params *GetChecksIDQueryParams) (*http.Response, error) { - req, err := NewGetChecksIDQueryRequest(c.service.ServerAPIURL(), checkID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetConfig(ctx context.Context, params *GetConfigParams) (*http.Response, error) { - req, err := NewGetConfigRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetDashboards(ctx context.Context, params *GetDashboardsParams) (*http.Response, error) { - req, err := NewGetDashboardsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDashboardsWithBody(ctx context.Context, params *PostDashboardsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostDashboardsRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDashboards(ctx context.Context, params *PostDashboardsParams, body PostDashboardsJSONRequestBody) (*http.Response, error) { - req, err := NewPostDashboardsRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteDashboardsID(ctx context.Context, dashboardID string, params *DeleteDashboardsIDParams) (*http.Response, error) { - req, err := NewDeleteDashboardsIDRequest(c.service.ServerAPIURL(), dashboardID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetDashboardsID(ctx context.Context, dashboardID string, params *GetDashboardsIDParams) (*http.Response, error) { - req, err := NewGetDashboardsIDRequest(c.service.ServerAPIURL(), dashboardID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchDashboardsIDWithBody(ctx context.Context, dashboardID string, params *PatchDashboardsIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchDashboardsIDRequestWithBody(c.service.ServerAPIURL(), dashboardID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchDashboardsID(ctx context.Context, dashboardID string, params *PatchDashboardsIDParams, body PatchDashboardsIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchDashboardsIDRequest(c.service.ServerAPIURL(), dashboardID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDashboardsIDCellsWithBody(ctx context.Context, dashboardID string, params *PostDashboardsIDCellsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostDashboardsIDCellsRequestWithBody(c.service.ServerAPIURL(), dashboardID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDashboardsIDCells(ctx context.Context, dashboardID string, params *PostDashboardsIDCellsParams, body PostDashboardsIDCellsJSONRequestBody) (*http.Response, error) { - req, err := NewPostDashboardsIDCellsRequest(c.service.ServerAPIURL(), dashboardID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutDashboardsIDCellsWithBody(ctx context.Context, dashboardID string, params *PutDashboardsIDCellsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPutDashboardsIDCellsRequestWithBody(c.service.ServerAPIURL(), dashboardID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutDashboardsIDCells(ctx context.Context, dashboardID string, params *PutDashboardsIDCellsParams, body PutDashboardsIDCellsJSONRequestBody) (*http.Response, error) { - req, err := NewPutDashboardsIDCellsRequest(c.service.ServerAPIURL(), dashboardID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteDashboardsIDCellsID(ctx context.Context, dashboardID string, cellID string, params *DeleteDashboardsIDCellsIDParams) (*http.Response, error) { - req, err := NewDeleteDashboardsIDCellsIDRequest(c.service.ServerAPIURL(), dashboardID, cellID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchDashboardsIDCellsIDWithBody(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchDashboardsIDCellsIDRequestWithBody(c.service.ServerAPIURL(), dashboardID, cellID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchDashboardsIDCellsID(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDParams, body PatchDashboardsIDCellsIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchDashboardsIDCellsIDRequest(c.service.ServerAPIURL(), dashboardID, cellID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetDashboardsIDCellsIDView(ctx context.Context, dashboardID string, cellID string, params *GetDashboardsIDCellsIDViewParams) (*http.Response, error) { - req, err := NewGetDashboardsIDCellsIDViewRequest(c.service.ServerAPIURL(), dashboardID, cellID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchDashboardsIDCellsIDViewWithBody(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDViewParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchDashboardsIDCellsIDViewRequestWithBody(c.service.ServerAPIURL(), dashboardID, cellID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchDashboardsIDCellsIDView(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDViewParams, body PatchDashboardsIDCellsIDViewJSONRequestBody) (*http.Response, error) { - req, err := NewPatchDashboardsIDCellsIDViewRequest(c.service.ServerAPIURL(), dashboardID, cellID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetDashboardsIDLabels(ctx context.Context, dashboardID string, params *GetDashboardsIDLabelsParams) (*http.Response, error) { - req, err := NewGetDashboardsIDLabelsRequest(c.service.ServerAPIURL(), dashboardID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDashboardsIDLabelsWithBody(ctx context.Context, dashboardID string, params *PostDashboardsIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostDashboardsIDLabelsRequestWithBody(c.service.ServerAPIURL(), dashboardID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDashboardsIDLabels(ctx context.Context, dashboardID string, params *PostDashboardsIDLabelsParams, body PostDashboardsIDLabelsJSONRequestBody) (*http.Response, error) { - req, err := NewPostDashboardsIDLabelsRequest(c.service.ServerAPIURL(), dashboardID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteDashboardsIDLabelsID(ctx context.Context, dashboardID string, labelID string, params *DeleteDashboardsIDLabelsIDParams) (*http.Response, error) { - req, err := NewDeleteDashboardsIDLabelsIDRequest(c.service.ServerAPIURL(), dashboardID, labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetDashboardsIDMembers(ctx context.Context, dashboardID string, params *GetDashboardsIDMembersParams) (*http.Response, error) { - req, err := NewGetDashboardsIDMembersRequest(c.service.ServerAPIURL(), dashboardID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDashboardsIDMembersWithBody(ctx context.Context, dashboardID string, params *PostDashboardsIDMembersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostDashboardsIDMembersRequestWithBody(c.service.ServerAPIURL(), dashboardID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDashboardsIDMembers(ctx context.Context, dashboardID string, params *PostDashboardsIDMembersParams, body PostDashboardsIDMembersJSONRequestBody) (*http.Response, error) { - req, err := NewPostDashboardsIDMembersRequest(c.service.ServerAPIURL(), dashboardID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteDashboardsIDMembersID(ctx context.Context, dashboardID string, userID string, params *DeleteDashboardsIDMembersIDParams) (*http.Response, error) { - req, err := NewDeleteDashboardsIDMembersIDRequest(c.service.ServerAPIURL(), dashboardID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetDashboardsIDOwners(ctx context.Context, dashboardID string, params *GetDashboardsIDOwnersParams) (*http.Response, error) { - req, err := NewGetDashboardsIDOwnersRequest(c.service.ServerAPIURL(), dashboardID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDashboardsIDOwnersWithBody(ctx context.Context, dashboardID string, params *PostDashboardsIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostDashboardsIDOwnersRequestWithBody(c.service.ServerAPIURL(), dashboardID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDashboardsIDOwners(ctx context.Context, dashboardID string, params *PostDashboardsIDOwnersParams, body PostDashboardsIDOwnersJSONRequestBody) (*http.Response, error) { - req, err := NewPostDashboardsIDOwnersRequest(c.service.ServerAPIURL(), dashboardID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteDashboardsIDOwnersID(ctx context.Context, dashboardID string, userID string, params *DeleteDashboardsIDOwnersIDParams) (*http.Response, error) { - req, err := NewDeleteDashboardsIDOwnersIDRequest(c.service.ServerAPIURL(), dashboardID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetDBRPs(ctx context.Context, params *GetDBRPsParams) (*http.Response, error) { - req, err := NewGetDBRPsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDBRPWithBody(ctx context.Context, params *PostDBRPParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostDBRPRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDBRP(ctx context.Context, params *PostDBRPParams, body PostDBRPJSONRequestBody) (*http.Response, error) { - req, err := NewPostDBRPRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteDBRPID(ctx context.Context, dbrpID string, params *DeleteDBRPIDParams) (*http.Response, error) { - req, err := NewDeleteDBRPIDRequest(c.service.ServerAPIURL(), dbrpID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetDBRPsID(ctx context.Context, dbrpID string, params *GetDBRPsIDParams) (*http.Response, error) { - req, err := NewGetDBRPsIDRequest(c.service.ServerAPIURL(), dbrpID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchDBRPIDWithBody(ctx context.Context, dbrpID string, params *PatchDBRPIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchDBRPIDRequestWithBody(c.service.ServerAPIURL(), dbrpID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchDBRPID(ctx context.Context, dbrpID string, params *PatchDBRPIDParams, body PatchDBRPIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchDBRPIDRequest(c.service.ServerAPIURL(), dbrpID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDeleteWithBody(ctx context.Context, params *PostDeleteParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostDeleteRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostDelete(ctx context.Context, params *PostDeleteParams, body PostDeleteJSONRequestBody) (*http.Response, error) { - req, err := NewPostDeleteRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetFlags(ctx context.Context, params *GetFlagsParams) (*http.Response, error) { - req, err := NewGetFlagsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetHealth(ctx context.Context, params *GetHealthParams) (*http.Response, error) { - req, err := NewGetHealthRequest(c.service.ServerURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetLabels(ctx context.Context, params *GetLabelsParams) (*http.Response, error) { - req, err := NewGetLabelsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostLabelsWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostLabelsRequestWithBody(c.service.ServerAPIURL(), contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostLabels(ctx context.Context, body PostLabelsJSONRequestBody) (*http.Response, error) { - req, err := NewPostLabelsRequest(c.service.ServerAPIURL(), body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteLabelsID(ctx context.Context, labelID string, params *DeleteLabelsIDParams) (*http.Response, error) { - req, err := NewDeleteLabelsIDRequest(c.service.ServerAPIURL(), labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetLabelsID(ctx context.Context, labelID string, params *GetLabelsIDParams) (*http.Response, error) { - req, err := NewGetLabelsIDRequest(c.service.ServerAPIURL(), labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchLabelsIDWithBody(ctx context.Context, labelID string, params *PatchLabelsIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchLabelsIDRequestWithBody(c.service.ServerAPIURL(), labelID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchLabelsID(ctx context.Context, labelID string, params *PatchLabelsIDParams, body PatchLabelsIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchLabelsIDRequest(c.service.ServerAPIURL(), labelID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetLegacyAuthorizations(ctx context.Context, params *GetLegacyAuthorizationsParams) (*http.Response, error) { - req, err := NewGetLegacyAuthorizationsRequest(c.service.ServerURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostLegacyAuthorizationsWithBody(ctx context.Context, params *PostLegacyAuthorizationsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostLegacyAuthorizationsRequestWithBody(c.service.ServerURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostLegacyAuthorizations(ctx context.Context, params *PostLegacyAuthorizationsParams, body PostLegacyAuthorizationsJSONRequestBody) (*http.Response, error) { - req, err := NewPostLegacyAuthorizationsRequest(c.service.ServerURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteLegacyAuthorizationsID(ctx context.Context, authID string, params *DeleteLegacyAuthorizationsIDParams) (*http.Response, error) { - req, err := NewDeleteLegacyAuthorizationsIDRequest(c.service.ServerURL(), authID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetLegacyAuthorizationsID(ctx context.Context, authID string, params *GetLegacyAuthorizationsIDParams) (*http.Response, error) { - req, err := NewGetLegacyAuthorizationsIDRequest(c.service.ServerURL(), authID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchLegacyAuthorizationsIDWithBody(ctx context.Context, authID string, params *PatchLegacyAuthorizationsIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchLegacyAuthorizationsIDRequestWithBody(c.service.ServerURL(), authID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchLegacyAuthorizationsID(ctx context.Context, authID string, params *PatchLegacyAuthorizationsIDParams, body PatchLegacyAuthorizationsIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchLegacyAuthorizationsIDRequest(c.service.ServerURL(), authID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostLegacyAuthorizationsIDPasswordWithBody(ctx context.Context, authID string, params *PostLegacyAuthorizationsIDPasswordParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostLegacyAuthorizationsIDPasswordRequestWithBody(c.service.ServerURL(), authID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostLegacyAuthorizationsIDPassword(ctx context.Context, authID string, params *PostLegacyAuthorizationsIDPasswordParams, body PostLegacyAuthorizationsIDPasswordJSONRequestBody) (*http.Response, error) { - req, err := NewPostLegacyAuthorizationsIDPasswordRequest(c.service.ServerURL(), authID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetMe(ctx context.Context, params *GetMeParams) (*http.Response, error) { - req, err := NewGetMeRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutMePasswordWithBody(ctx context.Context, params *PutMePasswordParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPutMePasswordRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutMePassword(ctx context.Context, params *PutMePasswordParams, body PutMePasswordJSONRequestBody) (*http.Response, error) { - req, err := NewPutMePasswordRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetMetrics(ctx context.Context, params *GetMetricsParams) (*http.Response, error) { - req, err := NewGetMetricsRequest(c.service.ServerURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetNotificationEndpoints(ctx context.Context, params *GetNotificationEndpointsParams) (*http.Response, error) { - req, err := NewGetNotificationEndpointsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) CreateNotificationEndpointWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewCreateNotificationEndpointRequestWithBody(c.service.ServerAPIURL(), contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) CreateNotificationEndpoint(ctx context.Context, body CreateNotificationEndpointJSONRequestBody) (*http.Response, error) { - req, err := NewCreateNotificationEndpointRequest(c.service.ServerAPIURL(), body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteNotificationEndpointsID(ctx context.Context, endpointID string, params *DeleteNotificationEndpointsIDParams) (*http.Response, error) { - req, err := NewDeleteNotificationEndpointsIDRequest(c.service.ServerAPIURL(), endpointID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetNotificationEndpointsID(ctx context.Context, endpointID string, params *GetNotificationEndpointsIDParams) (*http.Response, error) { - req, err := NewGetNotificationEndpointsIDRequest(c.service.ServerAPIURL(), endpointID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchNotificationEndpointsIDWithBody(ctx context.Context, endpointID string, params *PatchNotificationEndpointsIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchNotificationEndpointsIDRequestWithBody(c.service.ServerAPIURL(), endpointID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchNotificationEndpointsID(ctx context.Context, endpointID string, params *PatchNotificationEndpointsIDParams, body PatchNotificationEndpointsIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchNotificationEndpointsIDRequest(c.service.ServerAPIURL(), endpointID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutNotificationEndpointsIDWithBody(ctx context.Context, endpointID string, params *PutNotificationEndpointsIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPutNotificationEndpointsIDRequestWithBody(c.service.ServerAPIURL(), endpointID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutNotificationEndpointsID(ctx context.Context, endpointID string, params *PutNotificationEndpointsIDParams, body PutNotificationEndpointsIDJSONRequestBody) (*http.Response, error) { - req, err := NewPutNotificationEndpointsIDRequest(c.service.ServerAPIURL(), endpointID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetNotificationEndpointsIDLabels(ctx context.Context, endpointID string, params *GetNotificationEndpointsIDLabelsParams) (*http.Response, error) { - req, err := NewGetNotificationEndpointsIDLabelsRequest(c.service.ServerAPIURL(), endpointID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostNotificationEndpointIDLabelsWithBody(ctx context.Context, endpointID string, params *PostNotificationEndpointIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostNotificationEndpointIDLabelsRequestWithBody(c.service.ServerAPIURL(), endpointID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostNotificationEndpointIDLabels(ctx context.Context, endpointID string, params *PostNotificationEndpointIDLabelsParams, body PostNotificationEndpointIDLabelsJSONRequestBody) (*http.Response, error) { - req, err := NewPostNotificationEndpointIDLabelsRequest(c.service.ServerAPIURL(), endpointID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteNotificationEndpointsIDLabelsID(ctx context.Context, endpointID string, labelID string, params *DeleteNotificationEndpointsIDLabelsIDParams) (*http.Response, error) { - req, err := NewDeleteNotificationEndpointsIDLabelsIDRequest(c.service.ServerAPIURL(), endpointID, labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetNotificationRules(ctx context.Context, params *GetNotificationRulesParams) (*http.Response, error) { - req, err := NewGetNotificationRulesRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) CreateNotificationRuleWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewCreateNotificationRuleRequestWithBody(c.service.ServerAPIURL(), contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) CreateNotificationRule(ctx context.Context, body CreateNotificationRuleJSONRequestBody) (*http.Response, error) { - req, err := NewCreateNotificationRuleRequest(c.service.ServerAPIURL(), body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteNotificationRulesID(ctx context.Context, ruleID string, params *DeleteNotificationRulesIDParams) (*http.Response, error) { - req, err := NewDeleteNotificationRulesIDRequest(c.service.ServerAPIURL(), ruleID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetNotificationRulesID(ctx context.Context, ruleID string, params *GetNotificationRulesIDParams) (*http.Response, error) { - req, err := NewGetNotificationRulesIDRequest(c.service.ServerAPIURL(), ruleID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchNotificationRulesIDWithBody(ctx context.Context, ruleID string, params *PatchNotificationRulesIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchNotificationRulesIDRequestWithBody(c.service.ServerAPIURL(), ruleID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchNotificationRulesID(ctx context.Context, ruleID string, params *PatchNotificationRulesIDParams, body PatchNotificationRulesIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchNotificationRulesIDRequest(c.service.ServerAPIURL(), ruleID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutNotificationRulesIDWithBody(ctx context.Context, ruleID string, params *PutNotificationRulesIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPutNotificationRulesIDRequestWithBody(c.service.ServerAPIURL(), ruleID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutNotificationRulesID(ctx context.Context, ruleID string, params *PutNotificationRulesIDParams, body PutNotificationRulesIDJSONRequestBody) (*http.Response, error) { - req, err := NewPutNotificationRulesIDRequest(c.service.ServerAPIURL(), ruleID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetNotificationRulesIDLabels(ctx context.Context, ruleID string, params *GetNotificationRulesIDLabelsParams) (*http.Response, error) { - req, err := NewGetNotificationRulesIDLabelsRequest(c.service.ServerAPIURL(), ruleID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostNotificationRuleIDLabelsWithBody(ctx context.Context, ruleID string, params *PostNotificationRuleIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostNotificationRuleIDLabelsRequestWithBody(c.service.ServerAPIURL(), ruleID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostNotificationRuleIDLabels(ctx context.Context, ruleID string, params *PostNotificationRuleIDLabelsParams, body PostNotificationRuleIDLabelsJSONRequestBody) (*http.Response, error) { - req, err := NewPostNotificationRuleIDLabelsRequest(c.service.ServerAPIURL(), ruleID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteNotificationRulesIDLabelsID(ctx context.Context, ruleID string, labelID string, params *DeleteNotificationRulesIDLabelsIDParams) (*http.Response, error) { - req, err := NewDeleteNotificationRulesIDLabelsIDRequest(c.service.ServerAPIURL(), ruleID, labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetNotificationRulesIDQuery(ctx context.Context, ruleID string, params *GetNotificationRulesIDQueryParams) (*http.Response, error) { - req, err := NewGetNotificationRulesIDQueryRequest(c.service.ServerAPIURL(), ruleID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetOrgs(ctx context.Context, params *GetOrgsParams) (*http.Response, error) { - req, err := NewGetOrgsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostOrgsWithBody(ctx context.Context, params *PostOrgsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostOrgsRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostOrgs(ctx context.Context, params *PostOrgsParams, body PostOrgsJSONRequestBody) (*http.Response, error) { - req, err := NewPostOrgsRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteOrgsID(ctx context.Context, orgID string, params *DeleteOrgsIDParams) (*http.Response, error) { - req, err := NewDeleteOrgsIDRequest(c.service.ServerAPIURL(), orgID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetOrgsID(ctx context.Context, orgID string, params *GetOrgsIDParams) (*http.Response, error) { - req, err := NewGetOrgsIDRequest(c.service.ServerAPIURL(), orgID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchOrgsIDWithBody(ctx context.Context, orgID string, params *PatchOrgsIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchOrgsIDRequestWithBody(c.service.ServerAPIURL(), orgID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchOrgsID(ctx context.Context, orgID string, params *PatchOrgsIDParams, body PatchOrgsIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchOrgsIDRequest(c.service.ServerAPIURL(), orgID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetOrgsIDMembers(ctx context.Context, orgID string, params *GetOrgsIDMembersParams) (*http.Response, error) { - req, err := NewGetOrgsIDMembersRequest(c.service.ServerAPIURL(), orgID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostOrgsIDMembersWithBody(ctx context.Context, orgID string, params *PostOrgsIDMembersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostOrgsIDMembersRequestWithBody(c.service.ServerAPIURL(), orgID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostOrgsIDMembers(ctx context.Context, orgID string, params *PostOrgsIDMembersParams, body PostOrgsIDMembersJSONRequestBody) (*http.Response, error) { - req, err := NewPostOrgsIDMembersRequest(c.service.ServerAPIURL(), orgID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteOrgsIDMembersID(ctx context.Context, orgID string, userID string, params *DeleteOrgsIDMembersIDParams) (*http.Response, error) { - req, err := NewDeleteOrgsIDMembersIDRequest(c.service.ServerAPIURL(), orgID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetOrgsIDOwners(ctx context.Context, orgID string, params *GetOrgsIDOwnersParams) (*http.Response, error) { - req, err := NewGetOrgsIDOwnersRequest(c.service.ServerAPIURL(), orgID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostOrgsIDOwnersWithBody(ctx context.Context, orgID string, params *PostOrgsIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostOrgsIDOwnersRequestWithBody(c.service.ServerAPIURL(), orgID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostOrgsIDOwners(ctx context.Context, orgID string, params *PostOrgsIDOwnersParams, body PostOrgsIDOwnersJSONRequestBody) (*http.Response, error) { - req, err := NewPostOrgsIDOwnersRequest(c.service.ServerAPIURL(), orgID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteOrgsIDOwnersID(ctx context.Context, orgID string, userID string, params *DeleteOrgsIDOwnersIDParams) (*http.Response, error) { - req, err := NewDeleteOrgsIDOwnersIDRequest(c.service.ServerAPIURL(), orgID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetOrgsIDSecrets(ctx context.Context, orgID string, params *GetOrgsIDSecretsParams) (*http.Response, error) { - req, err := NewGetOrgsIDSecretsRequest(c.service.ServerAPIURL(), orgID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchOrgsIDSecretsWithBody(ctx context.Context, orgID string, params *PatchOrgsIDSecretsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchOrgsIDSecretsRequestWithBody(c.service.ServerAPIURL(), orgID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchOrgsIDSecrets(ctx context.Context, orgID string, params *PatchOrgsIDSecretsParams, body PatchOrgsIDSecretsJSONRequestBody) (*http.Response, error) { - req, err := NewPatchOrgsIDSecretsRequest(c.service.ServerAPIURL(), orgID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostOrgsIDSecretsWithBody(ctx context.Context, orgID string, params *PostOrgsIDSecretsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostOrgsIDSecretsRequestWithBody(c.service.ServerAPIURL(), orgID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostOrgsIDSecrets(ctx context.Context, orgID string, params *PostOrgsIDSecretsParams, body PostOrgsIDSecretsJSONRequestBody) (*http.Response, error) { - req, err := NewPostOrgsIDSecretsRequest(c.service.ServerAPIURL(), orgID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteOrgsIDSecretsID(ctx context.Context, orgID string, secretID string, params *DeleteOrgsIDSecretsIDParams) (*http.Response, error) { - req, err := NewDeleteOrgsIDSecretsIDRequest(c.service.ServerAPIURL(), orgID, secretID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetPing(ctx context.Context) (*http.Response, error) { - req, err := NewGetPingRequest(c.service.ServerURL()) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) HeadPing(ctx context.Context) (*http.Response, error) { - req, err := NewHeadPingRequest(c.service.ServerURL()) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostQueryWithBody(ctx context.Context, params *PostQueryParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostQueryRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostQuery(ctx context.Context, params *PostQueryParams, body PostQueryJSONRequestBody) (*http.Response, error) { - req, err := NewPostQueryRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostQueryAnalyzeWithBody(ctx context.Context, params *PostQueryAnalyzeParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostQueryAnalyzeRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostQueryAnalyze(ctx context.Context, params *PostQueryAnalyzeParams, body PostQueryAnalyzeJSONRequestBody) (*http.Response, error) { - req, err := NewPostQueryAnalyzeRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostQueryAstWithBody(ctx context.Context, params *PostQueryAstParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostQueryAstRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostQueryAst(ctx context.Context, params *PostQueryAstParams, body PostQueryAstJSONRequestBody) (*http.Response, error) { - req, err := NewPostQueryAstRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetQuerySuggestions(ctx context.Context, params *GetQuerySuggestionsParams) (*http.Response, error) { - req, err := NewGetQuerySuggestionsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetQuerySuggestionsName(ctx context.Context, name string, params *GetQuerySuggestionsNameParams) (*http.Response, error) { - req, err := NewGetQuerySuggestionsNameRequest(c.service.ServerAPIURL(), name, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetReady(ctx context.Context, params *GetReadyParams) (*http.Response, error) { - req, err := NewGetReadyRequest(c.service.ServerURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetRemoteConnections(ctx context.Context, params *GetRemoteConnectionsParams) (*http.Response, error) { - req, err := NewGetRemoteConnectionsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostRemoteConnectionWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostRemoteConnectionRequestWithBody(c.service.ServerAPIURL(), contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostRemoteConnection(ctx context.Context, body PostRemoteConnectionJSONRequestBody) (*http.Response, error) { - req, err := NewPostRemoteConnectionRequest(c.service.ServerAPIURL(), body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteRemoteConnectionByID(ctx context.Context, remoteID string, params *DeleteRemoteConnectionByIDParams) (*http.Response, error) { - req, err := NewDeleteRemoteConnectionByIDRequest(c.service.ServerAPIURL(), remoteID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetRemoteConnectionByID(ctx context.Context, remoteID string, params *GetRemoteConnectionByIDParams) (*http.Response, error) { - req, err := NewGetRemoteConnectionByIDRequest(c.service.ServerAPIURL(), remoteID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchRemoteConnectionByIDWithBody(ctx context.Context, remoteID string, params *PatchRemoteConnectionByIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchRemoteConnectionByIDRequestWithBody(c.service.ServerAPIURL(), remoteID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchRemoteConnectionByID(ctx context.Context, remoteID string, params *PatchRemoteConnectionByIDParams, body PatchRemoteConnectionByIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchRemoteConnectionByIDRequest(c.service.ServerAPIURL(), remoteID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetReplications(ctx context.Context, params *GetReplicationsParams) (*http.Response, error) { - req, err := NewGetReplicationsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostReplicationWithBody(ctx context.Context, params *PostReplicationParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostReplicationRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostReplication(ctx context.Context, params *PostReplicationParams, body PostReplicationJSONRequestBody) (*http.Response, error) { - req, err := NewPostReplicationRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteReplicationByID(ctx context.Context, replicationID string, params *DeleteReplicationByIDParams) (*http.Response, error) { - req, err := NewDeleteReplicationByIDRequest(c.service.ServerAPIURL(), replicationID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetReplicationByID(ctx context.Context, replicationID string, params *GetReplicationByIDParams) (*http.Response, error) { - req, err := NewGetReplicationByIDRequest(c.service.ServerAPIURL(), replicationID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchReplicationByIDWithBody(ctx context.Context, replicationID string, params *PatchReplicationByIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchReplicationByIDRequestWithBody(c.service.ServerAPIURL(), replicationID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchReplicationByID(ctx context.Context, replicationID string, params *PatchReplicationByIDParams, body PatchReplicationByIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchReplicationByIDRequest(c.service.ServerAPIURL(), replicationID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostValidateReplicationByID(ctx context.Context, replicationID string, params *PostValidateReplicationByIDParams) (*http.Response, error) { - req, err := NewPostValidateReplicationByIDRequest(c.service.ServerAPIURL(), replicationID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetResources(ctx context.Context, params *GetResourcesParams) (*http.Response, error) { - req, err := NewGetResourcesRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostRestoreBucketIDWithBody(ctx context.Context, bucketID string, params *PostRestoreBucketIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostRestoreBucketIDRequestWithBody(c.service.ServerAPIURL(), bucketID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostRestoreBucketMetadataWithBody(ctx context.Context, params *PostRestoreBucketMetadataParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostRestoreBucketMetadataRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostRestoreBucketMetadata(ctx context.Context, params *PostRestoreBucketMetadataParams, body PostRestoreBucketMetadataJSONRequestBody) (*http.Response, error) { - req, err := NewPostRestoreBucketMetadataRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostRestoreKVWithBody(ctx context.Context, params *PostRestoreKVParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostRestoreKVRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostRestoreShardIdWithBody(ctx context.Context, shardID string, params *PostRestoreShardIdParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostRestoreShardIdRequestWithBody(c.service.ServerAPIURL(), shardID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostRestoreSQLWithBody(ctx context.Context, params *PostRestoreSQLParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostRestoreSQLRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetScrapers(ctx context.Context, params *GetScrapersParams) (*http.Response, error) { - req, err := NewGetScrapersRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostScrapersWithBody(ctx context.Context, params *PostScrapersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostScrapersRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostScrapers(ctx context.Context, params *PostScrapersParams, body PostScrapersJSONRequestBody) (*http.Response, error) { - req, err := NewPostScrapersRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteScrapersID(ctx context.Context, scraperTargetID string, params *DeleteScrapersIDParams) (*http.Response, error) { - req, err := NewDeleteScrapersIDRequest(c.service.ServerAPIURL(), scraperTargetID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetScrapersID(ctx context.Context, scraperTargetID string, params *GetScrapersIDParams) (*http.Response, error) { - req, err := NewGetScrapersIDRequest(c.service.ServerAPIURL(), scraperTargetID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchScrapersIDWithBody(ctx context.Context, scraperTargetID string, params *PatchScrapersIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchScrapersIDRequestWithBody(c.service.ServerAPIURL(), scraperTargetID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchScrapersID(ctx context.Context, scraperTargetID string, params *PatchScrapersIDParams, body PatchScrapersIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchScrapersIDRequest(c.service.ServerAPIURL(), scraperTargetID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetScrapersIDLabels(ctx context.Context, scraperTargetID string, params *GetScrapersIDLabelsParams) (*http.Response, error) { - req, err := NewGetScrapersIDLabelsRequest(c.service.ServerAPIURL(), scraperTargetID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostScrapersIDLabelsWithBody(ctx context.Context, scraperTargetID string, params *PostScrapersIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostScrapersIDLabelsRequestWithBody(c.service.ServerAPIURL(), scraperTargetID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostScrapersIDLabels(ctx context.Context, scraperTargetID string, params *PostScrapersIDLabelsParams, body PostScrapersIDLabelsJSONRequestBody) (*http.Response, error) { - req, err := NewPostScrapersIDLabelsRequest(c.service.ServerAPIURL(), scraperTargetID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteScrapersIDLabelsID(ctx context.Context, scraperTargetID string, labelID string, params *DeleteScrapersIDLabelsIDParams) (*http.Response, error) { - req, err := NewDeleteScrapersIDLabelsIDRequest(c.service.ServerAPIURL(), scraperTargetID, labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetScrapersIDMembers(ctx context.Context, scraperTargetID string, params *GetScrapersIDMembersParams) (*http.Response, error) { - req, err := NewGetScrapersIDMembersRequest(c.service.ServerAPIURL(), scraperTargetID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostScrapersIDMembersWithBody(ctx context.Context, scraperTargetID string, params *PostScrapersIDMembersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostScrapersIDMembersRequestWithBody(c.service.ServerAPIURL(), scraperTargetID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostScrapersIDMembers(ctx context.Context, scraperTargetID string, params *PostScrapersIDMembersParams, body PostScrapersIDMembersJSONRequestBody) (*http.Response, error) { - req, err := NewPostScrapersIDMembersRequest(c.service.ServerAPIURL(), scraperTargetID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteScrapersIDMembersID(ctx context.Context, scraperTargetID string, userID string, params *DeleteScrapersIDMembersIDParams) (*http.Response, error) { - req, err := NewDeleteScrapersIDMembersIDRequest(c.service.ServerAPIURL(), scraperTargetID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetScrapersIDOwners(ctx context.Context, scraperTargetID string, params *GetScrapersIDOwnersParams) (*http.Response, error) { - req, err := NewGetScrapersIDOwnersRequest(c.service.ServerAPIURL(), scraperTargetID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostScrapersIDOwnersWithBody(ctx context.Context, scraperTargetID string, params *PostScrapersIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostScrapersIDOwnersRequestWithBody(c.service.ServerAPIURL(), scraperTargetID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostScrapersIDOwners(ctx context.Context, scraperTargetID string, params *PostScrapersIDOwnersParams, body PostScrapersIDOwnersJSONRequestBody) (*http.Response, error) { - req, err := NewPostScrapersIDOwnersRequest(c.service.ServerAPIURL(), scraperTargetID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteScrapersIDOwnersID(ctx context.Context, scraperTargetID string, userID string, params *DeleteScrapersIDOwnersIDParams) (*http.Response, error) { - req, err := NewDeleteScrapersIDOwnersIDRequest(c.service.ServerAPIURL(), scraperTargetID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetSetup(ctx context.Context, params *GetSetupParams) (*http.Response, error) { - req, err := NewGetSetupRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostSetupWithBody(ctx context.Context, params *PostSetupParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostSetupRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostSetup(ctx context.Context, params *PostSetupParams, body PostSetupJSONRequestBody) (*http.Response, error) { - req, err := NewPostSetupRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostSignin(ctx context.Context, params *PostSigninParams) (*http.Response, error) { - req, err := NewPostSigninRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostSignout(ctx context.Context, params *PostSignoutParams) (*http.Response, error) { - req, err := NewPostSignoutRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetSources(ctx context.Context, params *GetSourcesParams) (*http.Response, error) { - req, err := NewGetSourcesRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostSourcesWithBody(ctx context.Context, params *PostSourcesParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostSourcesRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostSources(ctx context.Context, params *PostSourcesParams, body PostSourcesJSONRequestBody) (*http.Response, error) { - req, err := NewPostSourcesRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteSourcesID(ctx context.Context, sourceID string, params *DeleteSourcesIDParams) (*http.Response, error) { - req, err := NewDeleteSourcesIDRequest(c.service.ServerAPIURL(), sourceID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetSourcesID(ctx context.Context, sourceID string, params *GetSourcesIDParams) (*http.Response, error) { - req, err := NewGetSourcesIDRequest(c.service.ServerAPIURL(), sourceID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchSourcesIDWithBody(ctx context.Context, sourceID string, params *PatchSourcesIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchSourcesIDRequestWithBody(c.service.ServerAPIURL(), sourceID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchSourcesID(ctx context.Context, sourceID string, params *PatchSourcesIDParams, body PatchSourcesIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchSourcesIDRequest(c.service.ServerAPIURL(), sourceID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetSourcesIDBuckets(ctx context.Context, sourceID string, params *GetSourcesIDBucketsParams) (*http.Response, error) { - req, err := NewGetSourcesIDBucketsRequest(c.service.ServerAPIURL(), sourceID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetSourcesIDHealth(ctx context.Context, sourceID string, params *GetSourcesIDHealthParams) (*http.Response, error) { - req, err := NewGetSourcesIDHealthRequest(c.service.ServerAPIURL(), sourceID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) ListStacks(ctx context.Context, params *ListStacksParams) (*http.Response, error) { - req, err := NewListStacksRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) CreateStackWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewCreateStackRequestWithBody(c.service.ServerAPIURL(), contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) CreateStack(ctx context.Context, body CreateStackJSONRequestBody) (*http.Response, error) { - req, err := NewCreateStackRequest(c.service.ServerAPIURL(), body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteStack(ctx context.Context, stackId string, params *DeleteStackParams) (*http.Response, error) { - req, err := NewDeleteStackRequest(c.service.ServerAPIURL(), stackId, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) ReadStack(ctx context.Context, stackId string) (*http.Response, error) { - req, err := NewReadStackRequest(c.service.ServerAPIURL(), stackId) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) UpdateStackWithBody(ctx context.Context, stackId string, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewUpdateStackRequestWithBody(c.service.ServerAPIURL(), stackId, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) UpdateStack(ctx context.Context, stackId string, body UpdateStackJSONRequestBody) (*http.Response, error) { - req, err := NewUpdateStackRequest(c.service.ServerAPIURL(), stackId, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) UninstallStack(ctx context.Context, stackId string) (*http.Response, error) { - req, err := NewUninstallStackRequest(c.service.ServerAPIURL(), stackId) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTasks(ctx context.Context, params *GetTasksParams) (*http.Response, error) { - req, err := NewGetTasksRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasksWithBody(ctx context.Context, params *PostTasksParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostTasksRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasks(ctx context.Context, params *PostTasksParams, body PostTasksJSONRequestBody) (*http.Response, error) { - req, err := NewPostTasksRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteTasksID(ctx context.Context, taskID string, params *DeleteTasksIDParams) (*http.Response, error) { - req, err := NewDeleteTasksIDRequest(c.service.ServerAPIURL(), taskID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTasksID(ctx context.Context, taskID string, params *GetTasksIDParams) (*http.Response, error) { - req, err := NewGetTasksIDRequest(c.service.ServerAPIURL(), taskID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchTasksIDWithBody(ctx context.Context, taskID string, params *PatchTasksIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchTasksIDRequestWithBody(c.service.ServerAPIURL(), taskID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchTasksID(ctx context.Context, taskID string, params *PatchTasksIDParams, body PatchTasksIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchTasksIDRequest(c.service.ServerAPIURL(), taskID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTasksIDLabels(ctx context.Context, taskID string, params *GetTasksIDLabelsParams) (*http.Response, error) { - req, err := NewGetTasksIDLabelsRequest(c.service.ServerAPIURL(), taskID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasksIDLabelsWithBody(ctx context.Context, taskID string, params *PostTasksIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostTasksIDLabelsRequestWithBody(c.service.ServerAPIURL(), taskID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasksIDLabels(ctx context.Context, taskID string, params *PostTasksIDLabelsParams, body PostTasksIDLabelsJSONRequestBody) (*http.Response, error) { - req, err := NewPostTasksIDLabelsRequest(c.service.ServerAPIURL(), taskID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteTasksIDLabelsID(ctx context.Context, taskID string, labelID string, params *DeleteTasksIDLabelsIDParams) (*http.Response, error) { - req, err := NewDeleteTasksIDLabelsIDRequest(c.service.ServerAPIURL(), taskID, labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTasksIDLogs(ctx context.Context, taskID string, params *GetTasksIDLogsParams) (*http.Response, error) { - req, err := NewGetTasksIDLogsRequest(c.service.ServerAPIURL(), taskID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTasksIDMembers(ctx context.Context, taskID string, params *GetTasksIDMembersParams) (*http.Response, error) { - req, err := NewGetTasksIDMembersRequest(c.service.ServerAPIURL(), taskID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasksIDMembersWithBody(ctx context.Context, taskID string, params *PostTasksIDMembersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostTasksIDMembersRequestWithBody(c.service.ServerAPIURL(), taskID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasksIDMembers(ctx context.Context, taskID string, params *PostTasksIDMembersParams, body PostTasksIDMembersJSONRequestBody) (*http.Response, error) { - req, err := NewPostTasksIDMembersRequest(c.service.ServerAPIURL(), taskID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteTasksIDMembersID(ctx context.Context, taskID string, userID string, params *DeleteTasksIDMembersIDParams) (*http.Response, error) { - req, err := NewDeleteTasksIDMembersIDRequest(c.service.ServerAPIURL(), taskID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTasksIDOwners(ctx context.Context, taskID string, params *GetTasksIDOwnersParams) (*http.Response, error) { - req, err := NewGetTasksIDOwnersRequest(c.service.ServerAPIURL(), taskID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasksIDOwnersWithBody(ctx context.Context, taskID string, params *PostTasksIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostTasksIDOwnersRequestWithBody(c.service.ServerAPIURL(), taskID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasksIDOwners(ctx context.Context, taskID string, params *PostTasksIDOwnersParams, body PostTasksIDOwnersJSONRequestBody) (*http.Response, error) { - req, err := NewPostTasksIDOwnersRequest(c.service.ServerAPIURL(), taskID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteTasksIDOwnersID(ctx context.Context, taskID string, userID string, params *DeleteTasksIDOwnersIDParams) (*http.Response, error) { - req, err := NewDeleteTasksIDOwnersIDRequest(c.service.ServerAPIURL(), taskID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTasksIDRuns(ctx context.Context, taskID string, params *GetTasksIDRunsParams) (*http.Response, error) { - req, err := NewGetTasksIDRunsRequest(c.service.ServerAPIURL(), taskID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasksIDRunsWithBody(ctx context.Context, taskID string, params *PostTasksIDRunsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostTasksIDRunsRequestWithBody(c.service.ServerAPIURL(), taskID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasksIDRuns(ctx context.Context, taskID string, params *PostTasksIDRunsParams, body PostTasksIDRunsJSONRequestBody) (*http.Response, error) { - req, err := NewPostTasksIDRunsRequest(c.service.ServerAPIURL(), taskID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteTasksIDRunsID(ctx context.Context, taskID string, runID string, params *DeleteTasksIDRunsIDParams) (*http.Response, error) { - req, err := NewDeleteTasksIDRunsIDRequest(c.service.ServerAPIURL(), taskID, runID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTasksIDRunsID(ctx context.Context, taskID string, runID string, params *GetTasksIDRunsIDParams) (*http.Response, error) { - req, err := NewGetTasksIDRunsIDRequest(c.service.ServerAPIURL(), taskID, runID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTasksIDRunsIDLogs(ctx context.Context, taskID string, runID string, params *GetTasksIDRunsIDLogsParams) (*http.Response, error) { - req, err := NewGetTasksIDRunsIDLogsRequest(c.service.ServerAPIURL(), taskID, runID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTasksIDRunsIDRetryWithBody(ctx context.Context, taskID string, runID string, params *PostTasksIDRunsIDRetryParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostTasksIDRunsIDRetryRequestWithBody(c.service.ServerAPIURL(), taskID, runID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTelegrafPlugins(ctx context.Context, params *GetTelegrafPluginsParams) (*http.Response, error) { - req, err := NewGetTelegrafPluginsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTelegrafs(ctx context.Context, params *GetTelegrafsParams) (*http.Response, error) { - req, err := NewGetTelegrafsRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTelegrafsWithBody(ctx context.Context, params *PostTelegrafsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostTelegrafsRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTelegrafs(ctx context.Context, params *PostTelegrafsParams, body PostTelegrafsJSONRequestBody) (*http.Response, error) { - req, err := NewPostTelegrafsRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteTelegrafsID(ctx context.Context, telegrafID string, params *DeleteTelegrafsIDParams) (*http.Response, error) { - req, err := NewDeleteTelegrafsIDRequest(c.service.ServerAPIURL(), telegrafID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTelegrafsID(ctx context.Context, telegrafID string, params *GetTelegrafsIDParams) (*http.Response, error) { - req, err := NewGetTelegrafsIDRequest(c.service.ServerAPIURL(), telegrafID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutTelegrafsIDWithBody(ctx context.Context, telegrafID string, params *PutTelegrafsIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPutTelegrafsIDRequestWithBody(c.service.ServerAPIURL(), telegrafID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutTelegrafsID(ctx context.Context, telegrafID string, params *PutTelegrafsIDParams, body PutTelegrafsIDJSONRequestBody) (*http.Response, error) { - req, err := NewPutTelegrafsIDRequest(c.service.ServerAPIURL(), telegrafID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTelegrafsIDLabels(ctx context.Context, telegrafID string, params *GetTelegrafsIDLabelsParams) (*http.Response, error) { - req, err := NewGetTelegrafsIDLabelsRequest(c.service.ServerAPIURL(), telegrafID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTelegrafsIDLabelsWithBody(ctx context.Context, telegrafID string, params *PostTelegrafsIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostTelegrafsIDLabelsRequestWithBody(c.service.ServerAPIURL(), telegrafID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTelegrafsIDLabels(ctx context.Context, telegrafID string, params *PostTelegrafsIDLabelsParams, body PostTelegrafsIDLabelsJSONRequestBody) (*http.Response, error) { - req, err := NewPostTelegrafsIDLabelsRequest(c.service.ServerAPIURL(), telegrafID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteTelegrafsIDLabelsID(ctx context.Context, telegrafID string, labelID string, params *DeleteTelegrafsIDLabelsIDParams) (*http.Response, error) { - req, err := NewDeleteTelegrafsIDLabelsIDRequest(c.service.ServerAPIURL(), telegrafID, labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTelegrafsIDMembers(ctx context.Context, telegrafID string, params *GetTelegrafsIDMembersParams) (*http.Response, error) { - req, err := NewGetTelegrafsIDMembersRequest(c.service.ServerAPIURL(), telegrafID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTelegrafsIDMembersWithBody(ctx context.Context, telegrafID string, params *PostTelegrafsIDMembersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostTelegrafsIDMembersRequestWithBody(c.service.ServerAPIURL(), telegrafID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTelegrafsIDMembers(ctx context.Context, telegrafID string, params *PostTelegrafsIDMembersParams, body PostTelegrafsIDMembersJSONRequestBody) (*http.Response, error) { - req, err := NewPostTelegrafsIDMembersRequest(c.service.ServerAPIURL(), telegrafID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteTelegrafsIDMembersID(ctx context.Context, telegrafID string, userID string, params *DeleteTelegrafsIDMembersIDParams) (*http.Response, error) { - req, err := NewDeleteTelegrafsIDMembersIDRequest(c.service.ServerAPIURL(), telegrafID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetTelegrafsIDOwners(ctx context.Context, telegrafID string, params *GetTelegrafsIDOwnersParams) (*http.Response, error) { - req, err := NewGetTelegrafsIDOwnersRequest(c.service.ServerAPIURL(), telegrafID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTelegrafsIDOwnersWithBody(ctx context.Context, telegrafID string, params *PostTelegrafsIDOwnersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostTelegrafsIDOwnersRequestWithBody(c.service.ServerAPIURL(), telegrafID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostTelegrafsIDOwners(ctx context.Context, telegrafID string, params *PostTelegrafsIDOwnersParams, body PostTelegrafsIDOwnersJSONRequestBody) (*http.Response, error) { - req, err := NewPostTelegrafsIDOwnersRequest(c.service.ServerAPIURL(), telegrafID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteTelegrafsIDOwnersID(ctx context.Context, telegrafID string, userID string, params *DeleteTelegrafsIDOwnersIDParams) (*http.Response, error) { - req, err := NewDeleteTelegrafsIDOwnersIDRequest(c.service.ServerAPIURL(), telegrafID, userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) ApplyTemplateWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewApplyTemplateRequestWithBody(c.service.ServerAPIURL(), contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) ApplyTemplate(ctx context.Context, body ApplyTemplateJSONRequestBody) (*http.Response, error) { - req, err := NewApplyTemplateRequest(c.service.ServerAPIURL(), body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) ExportTemplateWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewExportTemplateRequestWithBody(c.service.ServerAPIURL(), contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) ExportTemplate(ctx context.Context, body ExportTemplateJSONRequestBody) (*http.Response, error) { - req, err := NewExportTemplateRequest(c.service.ServerAPIURL(), body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetUsers(ctx context.Context, params *GetUsersParams) (*http.Response, error) { - req, err := NewGetUsersRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostUsersWithBody(ctx context.Context, params *PostUsersParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostUsersRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostUsers(ctx context.Context, params *PostUsersParams, body PostUsersJSONRequestBody) (*http.Response, error) { - req, err := NewPostUsersRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteUsersID(ctx context.Context, userID string, params *DeleteUsersIDParams) (*http.Response, error) { - req, err := NewDeleteUsersIDRequest(c.service.ServerAPIURL(), userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetUsersID(ctx context.Context, userID string, params *GetUsersIDParams) (*http.Response, error) { - req, err := NewGetUsersIDRequest(c.service.ServerAPIURL(), userID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchUsersIDWithBody(ctx context.Context, userID string, params *PatchUsersIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchUsersIDRequestWithBody(c.service.ServerAPIURL(), userID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchUsersID(ctx context.Context, userID string, params *PatchUsersIDParams, body PatchUsersIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchUsersIDRequest(c.service.ServerAPIURL(), userID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostUsersIDPasswordWithBody(ctx context.Context, userID string, params *PostUsersIDPasswordParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostUsersIDPasswordRequestWithBody(c.service.ServerAPIURL(), userID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostUsersIDPassword(ctx context.Context, userID string, params *PostUsersIDPasswordParams, body PostUsersIDPasswordJSONRequestBody) (*http.Response, error) { - req, err := NewPostUsersIDPasswordRequest(c.service.ServerAPIURL(), userID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetVariables(ctx context.Context, params *GetVariablesParams) (*http.Response, error) { - req, err := NewGetVariablesRequest(c.service.ServerAPIURL(), params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostVariablesWithBody(ctx context.Context, params *PostVariablesParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostVariablesRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostVariables(ctx context.Context, params *PostVariablesParams, body PostVariablesJSONRequestBody) (*http.Response, error) { - req, err := NewPostVariablesRequest(c.service.ServerAPIURL(), params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteVariablesID(ctx context.Context, variableID string, params *DeleteVariablesIDParams) (*http.Response, error) { - req, err := NewDeleteVariablesIDRequest(c.service.ServerAPIURL(), variableID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetVariablesID(ctx context.Context, variableID string, params *GetVariablesIDParams) (*http.Response, error) { - req, err := NewGetVariablesIDRequest(c.service.ServerAPIURL(), variableID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchVariablesIDWithBody(ctx context.Context, variableID string, params *PatchVariablesIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPatchVariablesIDRequestWithBody(c.service.ServerAPIURL(), variableID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PatchVariablesID(ctx context.Context, variableID string, params *PatchVariablesIDParams, body PatchVariablesIDJSONRequestBody) (*http.Response, error) { - req, err := NewPatchVariablesIDRequest(c.service.ServerAPIURL(), variableID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutVariablesIDWithBody(ctx context.Context, variableID string, params *PutVariablesIDParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPutVariablesIDRequestWithBody(c.service.ServerAPIURL(), variableID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PutVariablesID(ctx context.Context, variableID string, params *PutVariablesIDParams, body PutVariablesIDJSONRequestBody) (*http.Response, error) { - req, err := NewPutVariablesIDRequest(c.service.ServerAPIURL(), variableID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) GetVariablesIDLabels(ctx context.Context, variableID string, params *GetVariablesIDLabelsParams) (*http.Response, error) { - req, err := NewGetVariablesIDLabelsRequest(c.service.ServerAPIURL(), variableID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostVariablesIDLabelsWithBody(ctx context.Context, variableID string, params *PostVariablesIDLabelsParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostVariablesIDLabelsRequestWithBody(c.service.ServerAPIURL(), variableID, params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostVariablesIDLabels(ctx context.Context, variableID string, params *PostVariablesIDLabelsParams, body PostVariablesIDLabelsJSONRequestBody) (*http.Response, error) { - req, err := NewPostVariablesIDLabelsRequest(c.service.ServerAPIURL(), variableID, params, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) DeleteVariablesIDLabelsID(ctx context.Context, variableID string, labelID string, params *DeleteVariablesIDLabelsIDParams) (*http.Response, error) { - req, err := NewDeleteVariablesIDLabelsIDRequest(c.service.ServerAPIURL(), variableID, labelID, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -func (c *Client) PostWriteWithBody(ctx context.Context, params *PostWriteParams, contentType string, body io.Reader) (*http.Response, error) { - req, err := NewPostWriteRequestWithBody(c.service.ServerAPIURL(), params, contentType, body) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - return c.service.DoHTTPRequestWithResponse(req, nil) -} - -// NewGetRoutesRequest generates requests for GetRoutes -func NewGetRoutesRequest(server string, params *GetRoutesParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetAuthorizationsRequest generates requests for GetAuthorizations -func NewGetAuthorizationsRequest(server string, params *GetAuthorizationsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/authorizations") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.UserID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "userID", runtime.ParamLocationQuery, *params.UserID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.User != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "user", runtime.ParamLocationQuery, *params.User); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostAuthorizationsRequest calls the generic PostAuthorizations builder with application/json body -func NewPostAuthorizationsRequest(server string, params *PostAuthorizationsParams, body PostAuthorizationsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostAuthorizationsRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostAuthorizationsRequestWithBody generates requests for PostAuthorizations with any type of body -func NewPostAuthorizationsRequestWithBody(server string, params *PostAuthorizationsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/authorizations") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteAuthorizationsIDRequest generates requests for DeleteAuthorizationsID -func NewDeleteAuthorizationsIDRequest(server string, authID string, params *DeleteAuthorizationsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "authID", runtime.ParamLocationPath, authID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/authorizations/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetAuthorizationsIDRequest generates requests for GetAuthorizationsID -func NewGetAuthorizationsIDRequest(server string, authID string, params *GetAuthorizationsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "authID", runtime.ParamLocationPath, authID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/authorizations/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchAuthorizationsIDRequest calls the generic PatchAuthorizationsID builder with application/json body -func NewPatchAuthorizationsIDRequest(server string, authID string, params *PatchAuthorizationsIDParams, body PatchAuthorizationsIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchAuthorizationsIDRequestWithBody(server, authID, params, "application/json", bodyReader) -} - -// NewPatchAuthorizationsIDRequestWithBody generates requests for PatchAuthorizationsID with any type of body -func NewPatchAuthorizationsIDRequestWithBody(server string, authID string, params *PatchAuthorizationsIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "authID", runtime.ParamLocationPath, authID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/authorizations/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetBackupKVRequest generates requests for GetBackupKV -func NewGetBackupKVRequest(server string, params *GetBackupKVParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/backup/kv") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetBackupMetadataRequest generates requests for GetBackupMetadata -func NewGetBackupMetadataRequest(server string, params *GetBackupMetadataParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/backup/metadata") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.AcceptEncoding != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Accept-Encoding", runtime.ParamLocationHeader, *params.AcceptEncoding) - if err != nil { - return nil, err - } - - req.Header.Set("Accept-Encoding", headerParam1) - } - - return req, nil -} - -// NewGetBackupShardIdRequest generates requests for GetBackupShardId -func NewGetBackupShardIdRequest(server string, shardID int64, params *GetBackupShardIdParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "shardID", runtime.ParamLocationPath, shardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/backup/shards/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Since != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "since", runtime.ParamLocationQuery, *params.Since); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.AcceptEncoding != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Accept-Encoding", runtime.ParamLocationHeader, *params.AcceptEncoding) - if err != nil { - return nil, err - } - - req.Header.Set("Accept-Encoding", headerParam1) - } - - return req, nil -} - -// NewGetBucketsRequest generates requests for GetBuckets -func NewGetBucketsRequest(server string, params *GetBucketsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Offset != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Limit != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.After != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "after", runtime.ParamLocationQuery, *params.After); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Name != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Id != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "id", runtime.ParamLocationQuery, *params.Id); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostBucketsRequest calls the generic PostBuckets builder with application/json body -func NewPostBucketsRequest(server string, params *PostBucketsParams, body PostBucketsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostBucketsRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostBucketsRequestWithBody generates requests for PostBuckets with any type of body -func NewPostBucketsRequestWithBody(server string, params *PostBucketsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteBucketsIDRequest generates requests for DeleteBucketsID -func NewDeleteBucketsIDRequest(server string, bucketID string, params *DeleteBucketsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetBucketsIDRequest generates requests for GetBucketsID -func NewGetBucketsIDRequest(server string, bucketID string, params *GetBucketsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchBucketsIDRequest calls the generic PatchBucketsID builder with application/json body -func NewPatchBucketsIDRequest(server string, bucketID string, params *PatchBucketsIDParams, body PatchBucketsIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchBucketsIDRequestWithBody(server, bucketID, params, "application/json", bodyReader) -} - -// NewPatchBucketsIDRequestWithBody generates requests for PatchBucketsID with any type of body -func NewPatchBucketsIDRequestWithBody(server string, bucketID string, params *PatchBucketsIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetBucketsIDLabelsRequest generates requests for GetBucketsIDLabels -func NewGetBucketsIDLabelsRequest(server string, bucketID string, params *GetBucketsIDLabelsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostBucketsIDLabelsRequest calls the generic PostBucketsIDLabels builder with application/json body -func NewPostBucketsIDLabelsRequest(server string, bucketID string, params *PostBucketsIDLabelsParams, body PostBucketsIDLabelsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostBucketsIDLabelsRequestWithBody(server, bucketID, params, "application/json", bodyReader) -} - -// NewPostBucketsIDLabelsRequestWithBody generates requests for PostBucketsIDLabels with any type of body -func NewPostBucketsIDLabelsRequestWithBody(server string, bucketID string, params *PostBucketsIDLabelsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteBucketsIDLabelsIDRequest generates requests for DeleteBucketsIDLabelsID -func NewDeleteBucketsIDLabelsIDRequest(server string, bucketID string, labelID string, params *DeleteBucketsIDLabelsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s/labels/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetBucketsIDMembersRequest generates requests for GetBucketsIDMembers -func NewGetBucketsIDMembersRequest(server string, bucketID string, params *GetBucketsIDMembersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostBucketsIDMembersRequest calls the generic PostBucketsIDMembers builder with application/json body -func NewPostBucketsIDMembersRequest(server string, bucketID string, params *PostBucketsIDMembersParams, body PostBucketsIDMembersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostBucketsIDMembersRequestWithBody(server, bucketID, params, "application/json", bodyReader) -} - -// NewPostBucketsIDMembersRequestWithBody generates requests for PostBucketsIDMembers with any type of body -func NewPostBucketsIDMembersRequestWithBody(server string, bucketID string, params *PostBucketsIDMembersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteBucketsIDMembersIDRequest generates requests for DeleteBucketsIDMembersID -func NewDeleteBucketsIDMembersIDRequest(server string, bucketID string, userID string, params *DeleteBucketsIDMembersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s/members/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetBucketsIDOwnersRequest generates requests for GetBucketsIDOwners -func NewGetBucketsIDOwnersRequest(server string, bucketID string, params *GetBucketsIDOwnersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostBucketsIDOwnersRequest calls the generic PostBucketsIDOwners builder with application/json body -func NewPostBucketsIDOwnersRequest(server string, bucketID string, params *PostBucketsIDOwnersParams, body PostBucketsIDOwnersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostBucketsIDOwnersRequestWithBody(server, bucketID, params, "application/json", bodyReader) -} - -// NewPostBucketsIDOwnersRequestWithBody generates requests for PostBucketsIDOwners with any type of body -func NewPostBucketsIDOwnersRequestWithBody(server string, bucketID string, params *PostBucketsIDOwnersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteBucketsIDOwnersIDRequest generates requests for DeleteBucketsIDOwnersID -func NewDeleteBucketsIDOwnersIDRequest(server string, bucketID string, userID string, params *DeleteBucketsIDOwnersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/buckets/%s/owners/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetChecksRequest generates requests for GetChecks -func NewGetChecksRequest(server string, params *GetChecksParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/checks") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Offset != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Limit != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewCreateCheckRequest calls the generic CreateCheck builder with application/json body -func NewCreateCheckRequest(server string, body CreateCheckJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewCreateCheckRequestWithBody(server, "application/json", bodyReader) -} - -// NewCreateCheckRequestWithBody generates requests for CreateCheck with any type of body -func NewCreateCheckRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/checks") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewDeleteChecksIDRequest generates requests for DeleteChecksID -func NewDeleteChecksIDRequest(server string, checkID string, params *DeleteChecksIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, checkID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/checks/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetChecksIDRequest generates requests for GetChecksID -func NewGetChecksIDRequest(server string, checkID string, params *GetChecksIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, checkID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/checks/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchChecksIDRequest calls the generic PatchChecksID builder with application/json body -func NewPatchChecksIDRequest(server string, checkID string, params *PatchChecksIDParams, body PatchChecksIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchChecksIDRequestWithBody(server, checkID, params, "application/json", bodyReader) -} - -// NewPatchChecksIDRequestWithBody generates requests for PatchChecksID with any type of body -func NewPatchChecksIDRequestWithBody(server string, checkID string, params *PatchChecksIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, checkID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/checks/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPutChecksIDRequest calls the generic PutChecksID builder with application/json body -func NewPutChecksIDRequest(server string, checkID string, params *PutChecksIDParams, body PutChecksIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPutChecksIDRequestWithBody(server, checkID, params, "application/json", bodyReader) -} - -// NewPutChecksIDRequestWithBody generates requests for PutChecksID with any type of body -func NewPutChecksIDRequestWithBody(server string, checkID string, params *PutChecksIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, checkID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/checks/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PUT", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetChecksIDLabelsRequest generates requests for GetChecksIDLabels -func NewGetChecksIDLabelsRequest(server string, checkID string, params *GetChecksIDLabelsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, checkID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/checks/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostChecksIDLabelsRequest calls the generic PostChecksIDLabels builder with application/json body -func NewPostChecksIDLabelsRequest(server string, checkID string, params *PostChecksIDLabelsParams, body PostChecksIDLabelsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostChecksIDLabelsRequestWithBody(server, checkID, params, "application/json", bodyReader) -} - -// NewPostChecksIDLabelsRequestWithBody generates requests for PostChecksIDLabels with any type of body -func NewPostChecksIDLabelsRequestWithBody(server string, checkID string, params *PostChecksIDLabelsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, checkID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/checks/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteChecksIDLabelsIDRequest generates requests for DeleteChecksIDLabelsID -func NewDeleteChecksIDLabelsIDRequest(server string, checkID string, labelID string, params *DeleteChecksIDLabelsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, checkID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/checks/%s/labels/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetChecksIDQueryRequest generates requests for GetChecksIDQuery -func NewGetChecksIDQueryRequest(server string, checkID string, params *GetChecksIDQueryParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "checkID", runtime.ParamLocationPath, checkID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/checks/%s/query", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetConfigRequest generates requests for GetConfig -func NewGetConfigRequest(server string, params *GetConfigParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/config") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetDashboardsRequest generates requests for GetDashboards -func NewGetDashboardsRequest(server string, params *GetDashboardsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Offset != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Limit != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Descending != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "descending", runtime.ParamLocationQuery, *params.Descending); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Owner != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "owner", runtime.ParamLocationQuery, *params.Owner); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.SortBy != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "sortBy", runtime.ParamLocationQuery, *params.SortBy); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Id != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "id", runtime.ParamLocationQuery, *params.Id); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostDashboardsRequest calls the generic PostDashboards builder with application/json body -func NewPostDashboardsRequest(server string, params *PostDashboardsParams, body PostDashboardsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostDashboardsRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostDashboardsRequestWithBody generates requests for PostDashboards with any type of body -func NewPostDashboardsRequestWithBody(server string, params *PostDashboardsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteDashboardsIDRequest generates requests for DeleteDashboardsID -func NewDeleteDashboardsIDRequest(server string, dashboardID string, params *DeleteDashboardsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetDashboardsIDRequest generates requests for GetDashboardsID -func NewGetDashboardsIDRequest(server string, dashboardID string, params *GetDashboardsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Include != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "include", runtime.ParamLocationQuery, *params.Include); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchDashboardsIDRequest calls the generic PatchDashboardsID builder with application/json body -func NewPatchDashboardsIDRequest(server string, dashboardID string, params *PatchDashboardsIDParams, body PatchDashboardsIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchDashboardsIDRequestWithBody(server, dashboardID, params, "application/json", bodyReader) -} - -// NewPatchDashboardsIDRequestWithBody generates requests for PatchDashboardsID with any type of body -func NewPatchDashboardsIDRequestWithBody(server string, dashboardID string, params *PatchDashboardsIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostDashboardsIDCellsRequest calls the generic PostDashboardsIDCells builder with application/json body -func NewPostDashboardsIDCellsRequest(server string, dashboardID string, params *PostDashboardsIDCellsParams, body PostDashboardsIDCellsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostDashboardsIDCellsRequestWithBody(server, dashboardID, params, "application/json", bodyReader) -} - -// NewPostDashboardsIDCellsRequestWithBody generates requests for PostDashboardsIDCells with any type of body -func NewPostDashboardsIDCellsRequestWithBody(server string, dashboardID string, params *PostDashboardsIDCellsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/cells", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPutDashboardsIDCellsRequest calls the generic PutDashboardsIDCells builder with application/json body -func NewPutDashboardsIDCellsRequest(server string, dashboardID string, params *PutDashboardsIDCellsParams, body PutDashboardsIDCellsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPutDashboardsIDCellsRequestWithBody(server, dashboardID, params, "application/json", bodyReader) -} - -// NewPutDashboardsIDCellsRequestWithBody generates requests for PutDashboardsIDCells with any type of body -func NewPutDashboardsIDCellsRequestWithBody(server string, dashboardID string, params *PutDashboardsIDCellsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/cells", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PUT", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteDashboardsIDCellsIDRequest generates requests for DeleteDashboardsIDCellsID -func NewDeleteDashboardsIDCellsIDRequest(server string, dashboardID string, cellID string, params *DeleteDashboardsIDCellsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "cellID", runtime.ParamLocationPath, cellID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/cells/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchDashboardsIDCellsIDRequest calls the generic PatchDashboardsIDCellsID builder with application/json body -func NewPatchDashboardsIDCellsIDRequest(server string, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDParams, body PatchDashboardsIDCellsIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchDashboardsIDCellsIDRequestWithBody(server, dashboardID, cellID, params, "application/json", bodyReader) -} - -// NewPatchDashboardsIDCellsIDRequestWithBody generates requests for PatchDashboardsIDCellsID with any type of body -func NewPatchDashboardsIDCellsIDRequestWithBody(server string, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "cellID", runtime.ParamLocationPath, cellID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/cells/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetDashboardsIDCellsIDViewRequest generates requests for GetDashboardsIDCellsIDView -func NewGetDashboardsIDCellsIDViewRequest(server string, dashboardID string, cellID string, params *GetDashboardsIDCellsIDViewParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "cellID", runtime.ParamLocationPath, cellID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/cells/%s/view", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchDashboardsIDCellsIDViewRequest calls the generic PatchDashboardsIDCellsIDView builder with application/json body -func NewPatchDashboardsIDCellsIDViewRequest(server string, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDViewParams, body PatchDashboardsIDCellsIDViewJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchDashboardsIDCellsIDViewRequestWithBody(server, dashboardID, cellID, params, "application/json", bodyReader) -} - -// NewPatchDashboardsIDCellsIDViewRequestWithBody generates requests for PatchDashboardsIDCellsIDView with any type of body -func NewPatchDashboardsIDCellsIDViewRequestWithBody(server string, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDViewParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "cellID", runtime.ParamLocationPath, cellID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/cells/%s/view", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetDashboardsIDLabelsRequest generates requests for GetDashboardsIDLabels -func NewGetDashboardsIDLabelsRequest(server string, dashboardID string, params *GetDashboardsIDLabelsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostDashboardsIDLabelsRequest calls the generic PostDashboardsIDLabels builder with application/json body -func NewPostDashboardsIDLabelsRequest(server string, dashboardID string, params *PostDashboardsIDLabelsParams, body PostDashboardsIDLabelsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostDashboardsIDLabelsRequestWithBody(server, dashboardID, params, "application/json", bodyReader) -} - -// NewPostDashboardsIDLabelsRequestWithBody generates requests for PostDashboardsIDLabels with any type of body -func NewPostDashboardsIDLabelsRequestWithBody(server string, dashboardID string, params *PostDashboardsIDLabelsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteDashboardsIDLabelsIDRequest generates requests for DeleteDashboardsIDLabelsID -func NewDeleteDashboardsIDLabelsIDRequest(server string, dashboardID string, labelID string, params *DeleteDashboardsIDLabelsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/labels/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetDashboardsIDMembersRequest generates requests for GetDashboardsIDMembers -func NewGetDashboardsIDMembersRequest(server string, dashboardID string, params *GetDashboardsIDMembersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostDashboardsIDMembersRequest calls the generic PostDashboardsIDMembers builder with application/json body -func NewPostDashboardsIDMembersRequest(server string, dashboardID string, params *PostDashboardsIDMembersParams, body PostDashboardsIDMembersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostDashboardsIDMembersRequestWithBody(server, dashboardID, params, "application/json", bodyReader) -} - -// NewPostDashboardsIDMembersRequestWithBody generates requests for PostDashboardsIDMembers with any type of body -func NewPostDashboardsIDMembersRequestWithBody(server string, dashboardID string, params *PostDashboardsIDMembersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteDashboardsIDMembersIDRequest generates requests for DeleteDashboardsIDMembersID -func NewDeleteDashboardsIDMembersIDRequest(server string, dashboardID string, userID string, params *DeleteDashboardsIDMembersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/members/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetDashboardsIDOwnersRequest generates requests for GetDashboardsIDOwners -func NewGetDashboardsIDOwnersRequest(server string, dashboardID string, params *GetDashboardsIDOwnersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostDashboardsIDOwnersRequest calls the generic PostDashboardsIDOwners builder with application/json body -func NewPostDashboardsIDOwnersRequest(server string, dashboardID string, params *PostDashboardsIDOwnersParams, body PostDashboardsIDOwnersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostDashboardsIDOwnersRequestWithBody(server, dashboardID, params, "application/json", bodyReader) -} - -// NewPostDashboardsIDOwnersRequestWithBody generates requests for PostDashboardsIDOwners with any type of body -func NewPostDashboardsIDOwnersRequestWithBody(server string, dashboardID string, params *PostDashboardsIDOwnersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteDashboardsIDOwnersIDRequest generates requests for DeleteDashboardsIDOwnersID -func NewDeleteDashboardsIDOwnersIDRequest(server string, dashboardID string, userID string, params *DeleteDashboardsIDOwnersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, dashboardID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dashboards/%s/owners/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetDBRPsRequest generates requests for GetDBRPs -func NewGetDBRPsRequest(server string, params *GetDBRPsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dbrps") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Id != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "id", runtime.ParamLocationQuery, *params.Id); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.BucketID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "bucketID", runtime.ParamLocationQuery, *params.BucketID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Default != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "default", runtime.ParamLocationQuery, *params.Default); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Db != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "db", runtime.ParamLocationQuery, *params.Db); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Rp != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "rp", runtime.ParamLocationQuery, *params.Rp); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostDBRPRequest calls the generic PostDBRP builder with application/json body -func NewPostDBRPRequest(server string, params *PostDBRPParams, body PostDBRPJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostDBRPRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostDBRPRequestWithBody generates requests for PostDBRP with any type of body -func NewPostDBRPRequestWithBody(server string, params *PostDBRPParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dbrps") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteDBRPIDRequest generates requests for DeleteDBRPID -func NewDeleteDBRPIDRequest(server string, dbrpID string, params *DeleteDBRPIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dbrpID", runtime.ParamLocationPath, dbrpID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dbrps/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetDBRPsIDRequest generates requests for GetDBRPsID -func NewGetDBRPsIDRequest(server string, dbrpID string, params *GetDBRPsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dbrpID", runtime.ParamLocationPath, dbrpID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dbrps/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchDBRPIDRequest calls the generic PatchDBRPID builder with application/json body -func NewPatchDBRPIDRequest(server string, dbrpID string, params *PatchDBRPIDParams, body PatchDBRPIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchDBRPIDRequestWithBody(server, dbrpID, params, "application/json", bodyReader) -} - -// NewPatchDBRPIDRequestWithBody generates requests for PatchDBRPID with any type of body -func NewPatchDBRPIDRequestWithBody(server string, dbrpID string, params *PatchDBRPIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dbrpID", runtime.ParamLocationPath, dbrpID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/dbrps/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostDeleteRequest calls the generic PostDelete builder with application/json body -func NewPostDeleteRequest(server string, params *PostDeleteParams, body PostDeleteJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostDeleteRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostDeleteRequestWithBody generates requests for PostDelete with any type of body -func NewPostDeleteRequestWithBody(server string, params *PostDeleteParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/delete") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Bucket != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "bucket", runtime.ParamLocationQuery, *params.Bucket); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.BucketID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "bucketID", runtime.ParamLocationQuery, *params.BucketID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetFlagsRequest generates requests for GetFlags -func NewGetFlagsRequest(server string, params *GetFlagsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/flags") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetHealthRequest generates requests for GetHealth -func NewGetHealthRequest(server string, params *GetHealthParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/health") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetLabelsRequest generates requests for GetLabels -func NewGetLabelsRequest(server string, params *GetLabelsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/labels") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostLabelsRequest calls the generic PostLabels builder with application/json body -func NewPostLabelsRequest(server string, body PostLabelsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostLabelsRequestWithBody(server, "application/json", bodyReader) -} - -// NewPostLabelsRequestWithBody generates requests for PostLabels with any type of body -func NewPostLabelsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/labels") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewDeleteLabelsIDRequest generates requests for DeleteLabelsID -func NewDeleteLabelsIDRequest(server string, labelID string, params *DeleteLabelsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/labels/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetLabelsIDRequest generates requests for GetLabelsID -func NewGetLabelsIDRequest(server string, labelID string, params *GetLabelsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/labels/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchLabelsIDRequest calls the generic PatchLabelsID builder with application/json body -func NewPatchLabelsIDRequest(server string, labelID string, params *PatchLabelsIDParams, body PatchLabelsIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchLabelsIDRequestWithBody(server, labelID, params, "application/json", bodyReader) -} - -// NewPatchLabelsIDRequestWithBody generates requests for PatchLabelsID with any type of body -func NewPatchLabelsIDRequestWithBody(server string, labelID string, params *PatchLabelsIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/labels/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetLegacyAuthorizationsRequest generates requests for GetLegacyAuthorizations -func NewGetLegacyAuthorizationsRequest(server string, params *GetLegacyAuthorizationsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/legacy/authorizations") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.UserID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "userID", runtime.ParamLocationQuery, *params.UserID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.User != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "user", runtime.ParamLocationQuery, *params.User); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Token != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "token", runtime.ParamLocationQuery, *params.Token); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.AuthID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "authID", runtime.ParamLocationQuery, *params.AuthID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostLegacyAuthorizationsRequest calls the generic PostLegacyAuthorizations builder with application/json body -func NewPostLegacyAuthorizationsRequest(server string, params *PostLegacyAuthorizationsParams, body PostLegacyAuthorizationsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostLegacyAuthorizationsRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostLegacyAuthorizationsRequestWithBody generates requests for PostLegacyAuthorizations with any type of body -func NewPostLegacyAuthorizationsRequestWithBody(server string, params *PostLegacyAuthorizationsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/legacy/authorizations") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteLegacyAuthorizationsIDRequest generates requests for DeleteLegacyAuthorizationsID -func NewDeleteLegacyAuthorizationsIDRequest(server string, authID string, params *DeleteLegacyAuthorizationsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "authID", runtime.ParamLocationPath, authID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/legacy/authorizations/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetLegacyAuthorizationsIDRequest generates requests for GetLegacyAuthorizationsID -func NewGetLegacyAuthorizationsIDRequest(server string, authID string, params *GetLegacyAuthorizationsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "authID", runtime.ParamLocationPath, authID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/legacy/authorizations/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchLegacyAuthorizationsIDRequest calls the generic PatchLegacyAuthorizationsID builder with application/json body -func NewPatchLegacyAuthorizationsIDRequest(server string, authID string, params *PatchLegacyAuthorizationsIDParams, body PatchLegacyAuthorizationsIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchLegacyAuthorizationsIDRequestWithBody(server, authID, params, "application/json", bodyReader) -} - -// NewPatchLegacyAuthorizationsIDRequestWithBody generates requests for PatchLegacyAuthorizationsID with any type of body -func NewPatchLegacyAuthorizationsIDRequestWithBody(server string, authID string, params *PatchLegacyAuthorizationsIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "authID", runtime.ParamLocationPath, authID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/legacy/authorizations/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostLegacyAuthorizationsIDPasswordRequest calls the generic PostLegacyAuthorizationsIDPassword builder with application/json body -func NewPostLegacyAuthorizationsIDPasswordRequest(server string, authID string, params *PostLegacyAuthorizationsIDPasswordParams, body PostLegacyAuthorizationsIDPasswordJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostLegacyAuthorizationsIDPasswordRequestWithBody(server, authID, params, "application/json", bodyReader) -} - -// NewPostLegacyAuthorizationsIDPasswordRequestWithBody generates requests for PostLegacyAuthorizationsIDPassword with any type of body -func NewPostLegacyAuthorizationsIDPasswordRequestWithBody(server string, authID string, params *PostLegacyAuthorizationsIDPasswordParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "authID", runtime.ParamLocationPath, authID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/legacy/authorizations/%s/password", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetMeRequest generates requests for GetMe -func NewGetMeRequest(server string, params *GetMeParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/me") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPutMePasswordRequest calls the generic PutMePassword builder with application/json body -func NewPutMePasswordRequest(server string, params *PutMePasswordParams, body PutMePasswordJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPutMePasswordRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPutMePasswordRequestWithBody generates requests for PutMePassword with any type of body -func NewPutMePasswordRequestWithBody(server string, params *PutMePasswordParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/me/password") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PUT", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetMetricsRequest generates requests for GetMetrics -func NewGetMetricsRequest(server string, params *GetMetricsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/metrics") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetNotificationEndpointsRequest generates requests for GetNotificationEndpoints -func NewGetNotificationEndpointsRequest(server string, params *GetNotificationEndpointsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationEndpoints") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Offset != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Limit != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewCreateNotificationEndpointRequest calls the generic CreateNotificationEndpoint builder with application/json body -func NewCreateNotificationEndpointRequest(server string, body CreateNotificationEndpointJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewCreateNotificationEndpointRequestWithBody(server, "application/json", bodyReader) -} - -// NewCreateNotificationEndpointRequestWithBody generates requests for CreateNotificationEndpoint with any type of body -func NewCreateNotificationEndpointRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationEndpoints") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewDeleteNotificationEndpointsIDRequest generates requests for DeleteNotificationEndpointsID -func NewDeleteNotificationEndpointsIDRequest(server string, endpointID string, params *DeleteNotificationEndpointsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, endpointID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationEndpoints/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetNotificationEndpointsIDRequest generates requests for GetNotificationEndpointsID -func NewGetNotificationEndpointsIDRequest(server string, endpointID string, params *GetNotificationEndpointsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, endpointID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationEndpoints/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchNotificationEndpointsIDRequest calls the generic PatchNotificationEndpointsID builder with application/json body -func NewPatchNotificationEndpointsIDRequest(server string, endpointID string, params *PatchNotificationEndpointsIDParams, body PatchNotificationEndpointsIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchNotificationEndpointsIDRequestWithBody(server, endpointID, params, "application/json", bodyReader) -} - -// NewPatchNotificationEndpointsIDRequestWithBody generates requests for PatchNotificationEndpointsID with any type of body -func NewPatchNotificationEndpointsIDRequestWithBody(server string, endpointID string, params *PatchNotificationEndpointsIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, endpointID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationEndpoints/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPutNotificationEndpointsIDRequest calls the generic PutNotificationEndpointsID builder with application/json body -func NewPutNotificationEndpointsIDRequest(server string, endpointID string, params *PutNotificationEndpointsIDParams, body PutNotificationEndpointsIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPutNotificationEndpointsIDRequestWithBody(server, endpointID, params, "application/json", bodyReader) -} - -// NewPutNotificationEndpointsIDRequestWithBody generates requests for PutNotificationEndpointsID with any type of body -func NewPutNotificationEndpointsIDRequestWithBody(server string, endpointID string, params *PutNotificationEndpointsIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, endpointID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationEndpoints/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PUT", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetNotificationEndpointsIDLabelsRequest generates requests for GetNotificationEndpointsIDLabels -func NewGetNotificationEndpointsIDLabelsRequest(server string, endpointID string, params *GetNotificationEndpointsIDLabelsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, endpointID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationEndpoints/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostNotificationEndpointIDLabelsRequest calls the generic PostNotificationEndpointIDLabels builder with application/json body -func NewPostNotificationEndpointIDLabelsRequest(server string, endpointID string, params *PostNotificationEndpointIDLabelsParams, body PostNotificationEndpointIDLabelsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostNotificationEndpointIDLabelsRequestWithBody(server, endpointID, params, "application/json", bodyReader) -} - -// NewPostNotificationEndpointIDLabelsRequestWithBody generates requests for PostNotificationEndpointIDLabels with any type of body -func NewPostNotificationEndpointIDLabelsRequestWithBody(server string, endpointID string, params *PostNotificationEndpointIDLabelsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, endpointID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationEndpoints/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteNotificationEndpointsIDLabelsIDRequest generates requests for DeleteNotificationEndpointsIDLabelsID -func NewDeleteNotificationEndpointsIDLabelsIDRequest(server string, endpointID string, labelID string, params *DeleteNotificationEndpointsIDLabelsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, endpointID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationEndpoints/%s/labels/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetNotificationRulesRequest generates requests for GetNotificationRules -func NewGetNotificationRulesRequest(server string, params *GetNotificationRulesParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationRules") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Offset != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Limit != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - if params.CheckID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "checkID", runtime.ParamLocationQuery, *params.CheckID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Tag != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "tag", runtime.ParamLocationQuery, *params.Tag); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewCreateNotificationRuleRequest calls the generic CreateNotificationRule builder with application/json body -func NewCreateNotificationRuleRequest(server string, body CreateNotificationRuleJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewCreateNotificationRuleRequestWithBody(server, "application/json", bodyReader) -} - -// NewCreateNotificationRuleRequestWithBody generates requests for CreateNotificationRule with any type of body -func NewCreateNotificationRuleRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationRules") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewDeleteNotificationRulesIDRequest generates requests for DeleteNotificationRulesID -func NewDeleteNotificationRulesIDRequest(server string, ruleID string, params *DeleteNotificationRulesIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, ruleID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationRules/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetNotificationRulesIDRequest generates requests for GetNotificationRulesID -func NewGetNotificationRulesIDRequest(server string, ruleID string, params *GetNotificationRulesIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, ruleID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationRules/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchNotificationRulesIDRequest calls the generic PatchNotificationRulesID builder with application/json body -func NewPatchNotificationRulesIDRequest(server string, ruleID string, params *PatchNotificationRulesIDParams, body PatchNotificationRulesIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchNotificationRulesIDRequestWithBody(server, ruleID, params, "application/json", bodyReader) -} - -// NewPatchNotificationRulesIDRequestWithBody generates requests for PatchNotificationRulesID with any type of body -func NewPatchNotificationRulesIDRequestWithBody(server string, ruleID string, params *PatchNotificationRulesIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, ruleID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationRules/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPutNotificationRulesIDRequest calls the generic PutNotificationRulesID builder with application/json body -func NewPutNotificationRulesIDRequest(server string, ruleID string, params *PutNotificationRulesIDParams, body PutNotificationRulesIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPutNotificationRulesIDRequestWithBody(server, ruleID, params, "application/json", bodyReader) -} - -// NewPutNotificationRulesIDRequestWithBody generates requests for PutNotificationRulesID with any type of body -func NewPutNotificationRulesIDRequestWithBody(server string, ruleID string, params *PutNotificationRulesIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, ruleID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationRules/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PUT", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetNotificationRulesIDLabelsRequest generates requests for GetNotificationRulesIDLabels -func NewGetNotificationRulesIDLabelsRequest(server string, ruleID string, params *GetNotificationRulesIDLabelsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, ruleID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationRules/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostNotificationRuleIDLabelsRequest calls the generic PostNotificationRuleIDLabels builder with application/json body -func NewPostNotificationRuleIDLabelsRequest(server string, ruleID string, params *PostNotificationRuleIDLabelsParams, body PostNotificationRuleIDLabelsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostNotificationRuleIDLabelsRequestWithBody(server, ruleID, params, "application/json", bodyReader) -} - -// NewPostNotificationRuleIDLabelsRequestWithBody generates requests for PostNotificationRuleIDLabels with any type of body -func NewPostNotificationRuleIDLabelsRequestWithBody(server string, ruleID string, params *PostNotificationRuleIDLabelsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, ruleID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationRules/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteNotificationRulesIDLabelsIDRequest generates requests for DeleteNotificationRulesIDLabelsID -func NewDeleteNotificationRulesIDLabelsIDRequest(server string, ruleID string, labelID string, params *DeleteNotificationRulesIDLabelsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, ruleID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationRules/%s/labels/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetNotificationRulesIDQueryRequest generates requests for GetNotificationRulesIDQuery -func NewGetNotificationRulesIDQueryRequest(server string, ruleID string, params *GetNotificationRulesIDQueryParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, ruleID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/notificationRules/%s/query", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetOrgsRequest generates requests for GetOrgs -func NewGetOrgsRequest(server string, params *GetOrgsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Offset != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Limit != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Descending != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "descending", runtime.ParamLocationQuery, *params.Descending); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.UserID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "userID", runtime.ParamLocationQuery, *params.UserID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostOrgsRequest calls the generic PostOrgs builder with application/json body -func NewPostOrgsRequest(server string, params *PostOrgsParams, body PostOrgsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostOrgsRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostOrgsRequestWithBody generates requests for PostOrgs with any type of body -func NewPostOrgsRequestWithBody(server string, params *PostOrgsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteOrgsIDRequest generates requests for DeleteOrgsID -func NewDeleteOrgsIDRequest(server string, orgID string, params *DeleteOrgsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetOrgsIDRequest generates requests for GetOrgsID -func NewGetOrgsIDRequest(server string, orgID string, params *GetOrgsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchOrgsIDRequest calls the generic PatchOrgsID builder with application/json body -func NewPatchOrgsIDRequest(server string, orgID string, params *PatchOrgsIDParams, body PatchOrgsIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchOrgsIDRequestWithBody(server, orgID, params, "application/json", bodyReader) -} - -// NewPatchOrgsIDRequestWithBody generates requests for PatchOrgsID with any type of body -func NewPatchOrgsIDRequestWithBody(server string, orgID string, params *PatchOrgsIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetOrgsIDMembersRequest generates requests for GetOrgsIDMembers -func NewGetOrgsIDMembersRequest(server string, orgID string, params *GetOrgsIDMembersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostOrgsIDMembersRequest calls the generic PostOrgsIDMembers builder with application/json body -func NewPostOrgsIDMembersRequest(server string, orgID string, params *PostOrgsIDMembersParams, body PostOrgsIDMembersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostOrgsIDMembersRequestWithBody(server, orgID, params, "application/json", bodyReader) -} - -// NewPostOrgsIDMembersRequestWithBody generates requests for PostOrgsIDMembers with any type of body -func NewPostOrgsIDMembersRequestWithBody(server string, orgID string, params *PostOrgsIDMembersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteOrgsIDMembersIDRequest generates requests for DeleteOrgsIDMembersID -func NewDeleteOrgsIDMembersIDRequest(server string, orgID string, userID string, params *DeleteOrgsIDMembersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s/members/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetOrgsIDOwnersRequest generates requests for GetOrgsIDOwners -func NewGetOrgsIDOwnersRequest(server string, orgID string, params *GetOrgsIDOwnersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostOrgsIDOwnersRequest calls the generic PostOrgsIDOwners builder with application/json body -func NewPostOrgsIDOwnersRequest(server string, orgID string, params *PostOrgsIDOwnersParams, body PostOrgsIDOwnersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostOrgsIDOwnersRequestWithBody(server, orgID, params, "application/json", bodyReader) -} - -// NewPostOrgsIDOwnersRequestWithBody generates requests for PostOrgsIDOwners with any type of body -func NewPostOrgsIDOwnersRequestWithBody(server string, orgID string, params *PostOrgsIDOwnersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteOrgsIDOwnersIDRequest generates requests for DeleteOrgsIDOwnersID -func NewDeleteOrgsIDOwnersIDRequest(server string, orgID string, userID string, params *DeleteOrgsIDOwnersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s/owners/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetOrgsIDSecretsRequest generates requests for GetOrgsIDSecrets -func NewGetOrgsIDSecretsRequest(server string, orgID string, params *GetOrgsIDSecretsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s/secrets", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchOrgsIDSecretsRequest calls the generic PatchOrgsIDSecrets builder with application/json body -func NewPatchOrgsIDSecretsRequest(server string, orgID string, params *PatchOrgsIDSecretsParams, body PatchOrgsIDSecretsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchOrgsIDSecretsRequestWithBody(server, orgID, params, "application/json", bodyReader) -} - -// NewPatchOrgsIDSecretsRequestWithBody generates requests for PatchOrgsIDSecrets with any type of body -func NewPatchOrgsIDSecretsRequestWithBody(server string, orgID string, params *PatchOrgsIDSecretsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s/secrets", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostOrgsIDSecretsRequest calls the generic PostOrgsIDSecrets builder with application/json body -func NewPostOrgsIDSecretsRequest(server string, orgID string, params *PostOrgsIDSecretsParams, body PostOrgsIDSecretsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostOrgsIDSecretsRequestWithBody(server, orgID, params, "application/json", bodyReader) -} - -// NewPostOrgsIDSecretsRequestWithBody generates requests for PostOrgsIDSecrets with any type of body -func NewPostOrgsIDSecretsRequestWithBody(server string, orgID string, params *PostOrgsIDSecretsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s/secrets/delete", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteOrgsIDSecretsIDRequest generates requests for DeleteOrgsIDSecretsID -func NewDeleteOrgsIDSecretsIDRequest(server string, orgID string, secretID string, params *DeleteOrgsIDSecretsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, orgID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "secretID", runtime.ParamLocationPath, secretID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/orgs/%s/secrets/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetPingRequest generates requests for GetPing -func NewGetPingRequest(server string) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/ping") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewHeadPingRequest generates requests for HeadPing -func NewHeadPingRequest(server string) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/ping") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("HEAD", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewPostQueryRequest calls the generic PostQuery builder with application/json body -func NewPostQueryRequest(server string, params *PostQueryParams, body PostQueryJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostQueryRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostQueryRequestWithBody generates requests for PostQuery with any type of body -func NewPostQueryRequestWithBody(server string, params *PostQueryParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/query") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.AcceptEncoding != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Accept-Encoding", runtime.ParamLocationHeader, *params.AcceptEncoding) - if err != nil { - return nil, err - } - - req.Header.Set("Accept-Encoding", headerParam1) - } - - if params.ContentType != nil { - var headerParam2 string - - headerParam2, err = runtime.StyleParamWithLocation("simple", false, "Content-Type", runtime.ParamLocationHeader, *params.ContentType) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Type", headerParam2) - } - - return req, nil -} - -// NewPostQueryAnalyzeRequest calls the generic PostQueryAnalyze builder with application/json body -func NewPostQueryAnalyzeRequest(server string, params *PostQueryAnalyzeParams, body PostQueryAnalyzeJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostQueryAnalyzeRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostQueryAnalyzeRequestWithBody generates requests for PostQueryAnalyze with any type of body -func NewPostQueryAnalyzeRequestWithBody(server string, params *PostQueryAnalyzeParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/query/analyze") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.ContentType != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Content-Type", runtime.ParamLocationHeader, *params.ContentType) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Type", headerParam1) - } - - return req, nil -} - -// NewPostQueryAstRequest calls the generic PostQueryAst builder with application/json body -func NewPostQueryAstRequest(server string, params *PostQueryAstParams, body PostQueryAstJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostQueryAstRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostQueryAstRequestWithBody generates requests for PostQueryAst with any type of body -func NewPostQueryAstRequestWithBody(server string, params *PostQueryAstParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/query/ast") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.ContentType != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Content-Type", runtime.ParamLocationHeader, *params.ContentType) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Type", headerParam1) - } - - return req, nil -} - -// NewGetQuerySuggestionsRequest generates requests for GetQuerySuggestions -func NewGetQuerySuggestionsRequest(server string, params *GetQuerySuggestionsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/query/suggestions") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetQuerySuggestionsNameRequest generates requests for GetQuerySuggestionsName -func NewGetQuerySuggestionsNameRequest(server string, name string, params *GetQuerySuggestionsNameParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "name", runtime.ParamLocationPath, name) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/query/suggestions/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetReadyRequest generates requests for GetReady -func NewGetReadyRequest(server string, params *GetReadyParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/ready") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetRemoteConnectionsRequest generates requests for GetRemoteConnections -func NewGetRemoteConnectionsRequest(server string, params *GetRemoteConnectionsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/remotes") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - if params.Name != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.RemoteURL != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "remoteURL", runtime.ParamLocationQuery, *params.RemoteURL); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostRemoteConnectionRequest calls the generic PostRemoteConnection builder with application/json body -func NewPostRemoteConnectionRequest(server string, body PostRemoteConnectionJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostRemoteConnectionRequestWithBody(server, "application/json", bodyReader) -} - -// NewPostRemoteConnectionRequestWithBody generates requests for PostRemoteConnection with any type of body -func NewPostRemoteConnectionRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/remotes") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewDeleteRemoteConnectionByIDRequest generates requests for DeleteRemoteConnectionByID -func NewDeleteRemoteConnectionByIDRequest(server string, remoteID string, params *DeleteRemoteConnectionByIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "remoteID", runtime.ParamLocationPath, remoteID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/remotes/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetRemoteConnectionByIDRequest generates requests for GetRemoteConnectionByID -func NewGetRemoteConnectionByIDRequest(server string, remoteID string, params *GetRemoteConnectionByIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "remoteID", runtime.ParamLocationPath, remoteID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/remotes/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchRemoteConnectionByIDRequest calls the generic PatchRemoteConnectionByID builder with application/json body -func NewPatchRemoteConnectionByIDRequest(server string, remoteID string, params *PatchRemoteConnectionByIDParams, body PatchRemoteConnectionByIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchRemoteConnectionByIDRequestWithBody(server, remoteID, params, "application/json", bodyReader) -} - -// NewPatchRemoteConnectionByIDRequestWithBody generates requests for PatchRemoteConnectionByID with any type of body -func NewPatchRemoteConnectionByIDRequestWithBody(server string, remoteID string, params *PatchRemoteConnectionByIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "remoteID", runtime.ParamLocationPath, remoteID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/remotes/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetReplicationsRequest generates requests for GetReplications -func NewGetReplicationsRequest(server string, params *GetReplicationsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/replications") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - if params.Name != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.RemoteID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "remoteID", runtime.ParamLocationQuery, *params.RemoteID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.LocalBucketID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "localBucketID", runtime.ParamLocationQuery, *params.LocalBucketID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostReplicationRequest calls the generic PostReplication builder with application/json body -func NewPostReplicationRequest(server string, params *PostReplicationParams, body PostReplicationJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostReplicationRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostReplicationRequestWithBody generates requests for PostReplication with any type of body -func NewPostReplicationRequestWithBody(server string, params *PostReplicationParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/replications") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Validate != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "validate", runtime.ParamLocationQuery, *params.Validate); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteReplicationByIDRequest generates requests for DeleteReplicationByID -func NewDeleteReplicationByIDRequest(server string, replicationID string, params *DeleteReplicationByIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "replicationID", runtime.ParamLocationPath, replicationID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/replications/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetReplicationByIDRequest generates requests for GetReplicationByID -func NewGetReplicationByIDRequest(server string, replicationID string, params *GetReplicationByIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "replicationID", runtime.ParamLocationPath, replicationID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/replications/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchReplicationByIDRequest calls the generic PatchReplicationByID builder with application/json body -func NewPatchReplicationByIDRequest(server string, replicationID string, params *PatchReplicationByIDParams, body PatchReplicationByIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchReplicationByIDRequestWithBody(server, replicationID, params, "application/json", bodyReader) -} - -// NewPatchReplicationByIDRequestWithBody generates requests for PatchReplicationByID with any type of body -func NewPatchReplicationByIDRequestWithBody(server string, replicationID string, params *PatchReplicationByIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "replicationID", runtime.ParamLocationPath, replicationID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/replications/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Validate != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "validate", runtime.ParamLocationQuery, *params.Validate); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostValidateReplicationByIDRequest generates requests for PostValidateReplicationByID -func NewPostValidateReplicationByIDRequest(server string, replicationID string, params *PostValidateReplicationByIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "replicationID", runtime.ParamLocationPath, replicationID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/replications/%s/validate", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetResourcesRequest generates requests for GetResources -func NewGetResourcesRequest(server string, params *GetResourcesParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/resources") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostRestoreBucketIDRequestWithBody generates requests for PostRestoreBucketID with any type of body -func NewPostRestoreBucketIDRequestWithBody(server string, bucketID string, params *PostRestoreBucketIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, bucketID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/restore/bucket/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.ContentType != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Content-Type", runtime.ParamLocationHeader, *params.ContentType) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Type", headerParam1) - } - - return req, nil -} - -// NewPostRestoreBucketMetadataRequest calls the generic PostRestoreBucketMetadata builder with application/json body -func NewPostRestoreBucketMetadataRequest(server string, params *PostRestoreBucketMetadataParams, body PostRestoreBucketMetadataJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostRestoreBucketMetadataRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostRestoreBucketMetadataRequestWithBody generates requests for PostRestoreBucketMetadata with any type of body -func NewPostRestoreBucketMetadataRequestWithBody(server string, params *PostRestoreBucketMetadataParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/restore/bucketMetadata") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostRestoreKVRequestWithBody generates requests for PostRestoreKV with any type of body -func NewPostRestoreKVRequestWithBody(server string, params *PostRestoreKVParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/restore/kv") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.ContentEncoding != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Content-Encoding", runtime.ParamLocationHeader, *params.ContentEncoding) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Encoding", headerParam1) - } - - if params.ContentType != nil { - var headerParam2 string - - headerParam2, err = runtime.StyleParamWithLocation("simple", false, "Content-Type", runtime.ParamLocationHeader, *params.ContentType) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Type", headerParam2) - } - - return req, nil -} - -// NewPostRestoreShardIdRequestWithBody generates requests for PostRestoreShardId with any type of body -func NewPostRestoreShardIdRequestWithBody(server string, shardID string, params *PostRestoreShardIdParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "shardID", runtime.ParamLocationPath, shardID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/restore/shards/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.ContentEncoding != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Content-Encoding", runtime.ParamLocationHeader, *params.ContentEncoding) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Encoding", headerParam1) - } - - if params.ContentType != nil { - var headerParam2 string - - headerParam2, err = runtime.StyleParamWithLocation("simple", false, "Content-Type", runtime.ParamLocationHeader, *params.ContentType) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Type", headerParam2) - } - - return req, nil -} - -// NewPostRestoreSQLRequestWithBody generates requests for PostRestoreSQL with any type of body -func NewPostRestoreSQLRequestWithBody(server string, params *PostRestoreSQLParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/restore/sql") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.ContentEncoding != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Content-Encoding", runtime.ParamLocationHeader, *params.ContentEncoding) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Encoding", headerParam1) - } - - if params.ContentType != nil { - var headerParam2 string - - headerParam2, err = runtime.StyleParamWithLocation("simple", false, "Content-Type", runtime.ParamLocationHeader, *params.ContentType) - if err != nil { - return nil, err - } - - req.Header.Set("Content-Type", headerParam2) - } - - return req, nil -} - -// NewGetScrapersRequest generates requests for GetScrapers -func NewGetScrapersRequest(server string, params *GetScrapersParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Name != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Id != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "id", runtime.ParamLocationQuery, *params.Id); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostScrapersRequest calls the generic PostScrapers builder with application/json body -func NewPostScrapersRequest(server string, params *PostScrapersParams, body PostScrapersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostScrapersRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostScrapersRequestWithBody generates requests for PostScrapers with any type of body -func NewPostScrapersRequestWithBody(server string, params *PostScrapersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteScrapersIDRequest generates requests for DeleteScrapersID -func NewDeleteScrapersIDRequest(server string, scraperTargetID string, params *DeleteScrapersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetScrapersIDRequest generates requests for GetScrapersID -func NewGetScrapersIDRequest(server string, scraperTargetID string, params *GetScrapersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchScrapersIDRequest calls the generic PatchScrapersID builder with application/json body -func NewPatchScrapersIDRequest(server string, scraperTargetID string, params *PatchScrapersIDParams, body PatchScrapersIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchScrapersIDRequestWithBody(server, scraperTargetID, params, "application/json", bodyReader) -} - -// NewPatchScrapersIDRequestWithBody generates requests for PatchScrapersID with any type of body -func NewPatchScrapersIDRequestWithBody(server string, scraperTargetID string, params *PatchScrapersIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetScrapersIDLabelsRequest generates requests for GetScrapersIDLabels -func NewGetScrapersIDLabelsRequest(server string, scraperTargetID string, params *GetScrapersIDLabelsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostScrapersIDLabelsRequest calls the generic PostScrapersIDLabels builder with application/json body -func NewPostScrapersIDLabelsRequest(server string, scraperTargetID string, params *PostScrapersIDLabelsParams, body PostScrapersIDLabelsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostScrapersIDLabelsRequestWithBody(server, scraperTargetID, params, "application/json", bodyReader) -} - -// NewPostScrapersIDLabelsRequestWithBody generates requests for PostScrapersIDLabels with any type of body -func NewPostScrapersIDLabelsRequestWithBody(server string, scraperTargetID string, params *PostScrapersIDLabelsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteScrapersIDLabelsIDRequest generates requests for DeleteScrapersIDLabelsID -func NewDeleteScrapersIDLabelsIDRequest(server string, scraperTargetID string, labelID string, params *DeleteScrapersIDLabelsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s/labels/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetScrapersIDMembersRequest generates requests for GetScrapersIDMembers -func NewGetScrapersIDMembersRequest(server string, scraperTargetID string, params *GetScrapersIDMembersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostScrapersIDMembersRequest calls the generic PostScrapersIDMembers builder with application/json body -func NewPostScrapersIDMembersRequest(server string, scraperTargetID string, params *PostScrapersIDMembersParams, body PostScrapersIDMembersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostScrapersIDMembersRequestWithBody(server, scraperTargetID, params, "application/json", bodyReader) -} - -// NewPostScrapersIDMembersRequestWithBody generates requests for PostScrapersIDMembers with any type of body -func NewPostScrapersIDMembersRequestWithBody(server string, scraperTargetID string, params *PostScrapersIDMembersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteScrapersIDMembersIDRequest generates requests for DeleteScrapersIDMembersID -func NewDeleteScrapersIDMembersIDRequest(server string, scraperTargetID string, userID string, params *DeleteScrapersIDMembersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s/members/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetScrapersIDOwnersRequest generates requests for GetScrapersIDOwners -func NewGetScrapersIDOwnersRequest(server string, scraperTargetID string, params *GetScrapersIDOwnersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostScrapersIDOwnersRequest calls the generic PostScrapersIDOwners builder with application/json body -func NewPostScrapersIDOwnersRequest(server string, scraperTargetID string, params *PostScrapersIDOwnersParams, body PostScrapersIDOwnersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostScrapersIDOwnersRequestWithBody(server, scraperTargetID, params, "application/json", bodyReader) -} - -// NewPostScrapersIDOwnersRequestWithBody generates requests for PostScrapersIDOwners with any type of body -func NewPostScrapersIDOwnersRequestWithBody(server string, scraperTargetID string, params *PostScrapersIDOwnersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteScrapersIDOwnersIDRequest generates requests for DeleteScrapersIDOwnersID -func NewDeleteScrapersIDOwnersIDRequest(server string, scraperTargetID string, userID string, params *DeleteScrapersIDOwnersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, scraperTargetID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/scrapers/%s/owners/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetSetupRequest generates requests for GetSetup -func NewGetSetupRequest(server string, params *GetSetupParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/setup") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostSetupRequest calls the generic PostSetup builder with application/json body -func NewPostSetupRequest(server string, params *PostSetupParams, body PostSetupJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostSetupRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostSetupRequestWithBody generates requests for PostSetup with any type of body -func NewPostSetupRequestWithBody(server string, params *PostSetupParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/setup") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostSigninRequest generates requests for PostSignin -func NewPostSigninRequest(server string, params *PostSigninParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/signin") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostSignoutRequest generates requests for PostSignout -func NewPostSignoutRequest(server string, params *PostSignoutParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/signout") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetSourcesRequest generates requests for GetSources -func NewGetSourcesRequest(server string, params *GetSourcesParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/sources") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostSourcesRequest calls the generic PostSources builder with application/json body -func NewPostSourcesRequest(server string, params *PostSourcesParams, body PostSourcesJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostSourcesRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostSourcesRequestWithBody generates requests for PostSources with any type of body -func NewPostSourcesRequestWithBody(server string, params *PostSourcesParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/sources") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteSourcesIDRequest generates requests for DeleteSourcesID -func NewDeleteSourcesIDRequest(server string, sourceID string, params *DeleteSourcesIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "sourceID", runtime.ParamLocationPath, sourceID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/sources/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetSourcesIDRequest generates requests for GetSourcesID -func NewGetSourcesIDRequest(server string, sourceID string, params *GetSourcesIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "sourceID", runtime.ParamLocationPath, sourceID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/sources/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchSourcesIDRequest calls the generic PatchSourcesID builder with application/json body -func NewPatchSourcesIDRequest(server string, sourceID string, params *PatchSourcesIDParams, body PatchSourcesIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchSourcesIDRequestWithBody(server, sourceID, params, "application/json", bodyReader) -} - -// NewPatchSourcesIDRequestWithBody generates requests for PatchSourcesID with any type of body -func NewPatchSourcesIDRequestWithBody(server string, sourceID string, params *PatchSourcesIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "sourceID", runtime.ParamLocationPath, sourceID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/sources/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetSourcesIDBucketsRequest generates requests for GetSourcesIDBuckets -func NewGetSourcesIDBucketsRequest(server string, sourceID string, params *GetSourcesIDBucketsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "sourceID", runtime.ParamLocationPath, sourceID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/sources/%s/buckets", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetSourcesIDHealthRequest generates requests for GetSourcesIDHealth -func NewGetSourcesIDHealthRequest(server string, sourceID string, params *GetSourcesIDHealthParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "sourceID", runtime.ParamLocationPath, sourceID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/sources/%s/health", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewListStacksRequest generates requests for ListStacks -func NewListStacksRequest(server string, params *ListStacksParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/stacks") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - if params.Name != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.StackID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "stackID", runtime.ParamLocationQuery, *params.StackID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewCreateStackRequest calls the generic CreateStack builder with application/json body -func NewCreateStackRequest(server string, body CreateStackJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewCreateStackRequestWithBody(server, "application/json", bodyReader) -} - -// NewCreateStackRequestWithBody generates requests for CreateStack with any type of body -func NewCreateStackRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/stacks") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewDeleteStackRequest generates requests for DeleteStack -func NewDeleteStackRequest(server string, stackId string, params *DeleteStackParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "stack_id", runtime.ParamLocationPath, stackId) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/stacks/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewReadStackRequest generates requests for ReadStack -func NewReadStackRequest(server string, stackId string) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "stack_id", runtime.ParamLocationPath, stackId) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/stacks/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewUpdateStackRequest calls the generic UpdateStack builder with application/json body -func NewUpdateStackRequest(server string, stackId string, body UpdateStackJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewUpdateStackRequestWithBody(server, stackId, "application/json", bodyReader) -} - -// NewUpdateStackRequestWithBody generates requests for UpdateStack with any type of body -func NewUpdateStackRequestWithBody(server string, stackId string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "stack_id", runtime.ParamLocationPath, stackId) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/stacks/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewUninstallStackRequest generates requests for UninstallStack -func NewUninstallStackRequest(server string, stackId string) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "stack_id", runtime.ParamLocationPath, stackId) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/stacks/%s/uninstall", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewGetTasksRequest generates requests for GetTasks -func NewGetTasksRequest(server string, params *GetTasksParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Name != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.After != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "after", runtime.ParamLocationQuery, *params.After); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.User != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "user", runtime.ParamLocationQuery, *params.User); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Org != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Status != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "status", runtime.ParamLocationQuery, *params.Status); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Limit != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Type != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "type", runtime.ParamLocationQuery, *params.Type); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostTasksRequest calls the generic PostTasks builder with application/json body -func NewPostTasksRequest(server string, params *PostTasksParams, body PostTasksJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostTasksRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostTasksRequestWithBody generates requests for PostTasks with any type of body -func NewPostTasksRequestWithBody(server string, params *PostTasksParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteTasksIDRequest generates requests for DeleteTasksID -func NewDeleteTasksIDRequest(server string, taskID string, params *DeleteTasksIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTasksIDRequest generates requests for GetTasksID -func NewGetTasksIDRequest(server string, taskID string, params *GetTasksIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPatchTasksIDRequest calls the generic PatchTasksID builder with application/json body -func NewPatchTasksIDRequest(server string, taskID string, params *PatchTasksIDParams, body PatchTasksIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPatchTasksIDRequestWithBody(server, taskID, params, "application/json", bodyReader) -} - -// NewPatchTasksIDRequestWithBody generates requests for PatchTasksID with any type of body -func NewPatchTasksIDRequestWithBody(server string, taskID string, params *PatchTasksIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTasksIDLabelsRequest generates requests for GetTasksIDLabels -func NewGetTasksIDLabelsRequest(server string, taskID string, params *GetTasksIDLabelsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostTasksIDLabelsRequest calls the generic PostTasksIDLabels builder with application/json body -func NewPostTasksIDLabelsRequest(server string, taskID string, params *PostTasksIDLabelsParams, body PostTasksIDLabelsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostTasksIDLabelsRequestWithBody(server, taskID, params, "application/json", bodyReader) -} - -// NewPostTasksIDLabelsRequestWithBody generates requests for PostTasksIDLabels with any type of body -func NewPostTasksIDLabelsRequestWithBody(server string, taskID string, params *PostTasksIDLabelsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteTasksIDLabelsIDRequest generates requests for DeleteTasksIDLabelsID -func NewDeleteTasksIDLabelsIDRequest(server string, taskID string, labelID string, params *DeleteTasksIDLabelsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/labels/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTasksIDLogsRequest generates requests for GetTasksIDLogs -func NewGetTasksIDLogsRequest(server string, taskID string, params *GetTasksIDLogsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/logs", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTasksIDMembersRequest generates requests for GetTasksIDMembers -func NewGetTasksIDMembersRequest(server string, taskID string, params *GetTasksIDMembersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostTasksIDMembersRequest calls the generic PostTasksIDMembers builder with application/json body -func NewPostTasksIDMembersRequest(server string, taskID string, params *PostTasksIDMembersParams, body PostTasksIDMembersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostTasksIDMembersRequestWithBody(server, taskID, params, "application/json", bodyReader) -} - -// NewPostTasksIDMembersRequestWithBody generates requests for PostTasksIDMembers with any type of body -func NewPostTasksIDMembersRequestWithBody(server string, taskID string, params *PostTasksIDMembersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteTasksIDMembersIDRequest generates requests for DeleteTasksIDMembersID -func NewDeleteTasksIDMembersIDRequest(server string, taskID string, userID string, params *DeleteTasksIDMembersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/members/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTasksIDOwnersRequest generates requests for GetTasksIDOwners -func NewGetTasksIDOwnersRequest(server string, taskID string, params *GetTasksIDOwnersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostTasksIDOwnersRequest calls the generic PostTasksIDOwners builder with application/json body -func NewPostTasksIDOwnersRequest(server string, taskID string, params *PostTasksIDOwnersParams, body PostTasksIDOwnersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostTasksIDOwnersRequestWithBody(server, taskID, params, "application/json", bodyReader) -} - -// NewPostTasksIDOwnersRequestWithBody generates requests for PostTasksIDOwners with any type of body -func NewPostTasksIDOwnersRequestWithBody(server string, taskID string, params *PostTasksIDOwnersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteTasksIDOwnersIDRequest generates requests for DeleteTasksIDOwnersID -func NewDeleteTasksIDOwnersIDRequest(server string, taskID string, userID string, params *DeleteTasksIDOwnersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/owners/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTasksIDRunsRequest generates requests for GetTasksIDRuns -func NewGetTasksIDRunsRequest(server string, taskID string, params *GetTasksIDRunsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/runs", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.After != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "after", runtime.ParamLocationQuery, *params.After); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Limit != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.AfterTime != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "afterTime", runtime.ParamLocationQuery, *params.AfterTime); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.BeforeTime != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "beforeTime", runtime.ParamLocationQuery, *params.BeforeTime); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostTasksIDRunsRequest calls the generic PostTasksIDRuns builder with application/json body -func NewPostTasksIDRunsRequest(server string, taskID string, params *PostTasksIDRunsParams, body PostTasksIDRunsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostTasksIDRunsRequestWithBody(server, taskID, params, "application/json", bodyReader) -} - -// NewPostTasksIDRunsRequestWithBody generates requests for PostTasksIDRuns with any type of body -func NewPostTasksIDRunsRequestWithBody(server string, taskID string, params *PostTasksIDRunsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/runs", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteTasksIDRunsIDRequest generates requests for DeleteTasksIDRunsID -func NewDeleteTasksIDRunsIDRequest(server string, taskID string, runID string, params *DeleteTasksIDRunsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "runID", runtime.ParamLocationPath, runID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/runs/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTasksIDRunsIDRequest generates requests for GetTasksIDRunsID -func NewGetTasksIDRunsIDRequest(server string, taskID string, runID string, params *GetTasksIDRunsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "runID", runtime.ParamLocationPath, runID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/runs/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTasksIDRunsIDLogsRequest generates requests for GetTasksIDRunsIDLogs -func NewGetTasksIDRunsIDLogsRequest(server string, taskID string, runID string, params *GetTasksIDRunsIDLogsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "runID", runtime.ParamLocationPath, runID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/runs/%s/logs", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostTasksIDRunsIDRetryRequestWithBody generates requests for PostTasksIDRunsIDRetry with any type of body -func NewPostTasksIDRunsIDRetryRequestWithBody(server string, taskID string, runID string, params *PostTasksIDRunsIDRetryParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, taskID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "runID", runtime.ParamLocationPath, runID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/tasks/%s/runs/%s/retry", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTelegrafPluginsRequest generates requests for GetTelegrafPlugins -func NewGetTelegrafPluginsRequest(server string, params *GetTelegrafPluginsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegraf/plugins") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.Type != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "type", runtime.ParamLocationQuery, *params.Type); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTelegrafsRequest generates requests for GetTelegrafs -func NewGetTelegrafsRequest(server string, params *GetTelegrafsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - queryValues := queryURL.Query() - - if params.OrgID != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostTelegrafsRequest calls the generic PostTelegrafs builder with application/json body -func NewPostTelegrafsRequest(server string, params *PostTelegrafsParams, body PostTelegrafsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostTelegrafsRequestWithBody(server, params, "application/json", bodyReader) -} - -// NewPostTelegrafsRequestWithBody generates requests for PostTelegrafs with any type of body -func NewPostTelegrafsRequestWithBody(server string, params *PostTelegrafsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteTelegrafsIDRequest generates requests for DeleteTelegrafsID -func NewDeleteTelegrafsIDRequest(server string, telegrafID string, params *DeleteTelegrafsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTelegrafsIDRequest generates requests for GetTelegrafsID -func NewGetTelegrafsIDRequest(server string, telegrafID string, params *GetTelegrafsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.Accept != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Accept", runtime.ParamLocationHeader, *params.Accept) - if err != nil { - return nil, err - } - - req.Header.Set("Accept", headerParam1) - } - - return req, nil -} - -// NewPutTelegrafsIDRequest calls the generic PutTelegrafsID builder with application/json body -func NewPutTelegrafsIDRequest(server string, telegrafID string, params *PutTelegrafsIDParams, body PutTelegrafsIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPutTelegrafsIDRequestWithBody(server, telegrafID, params, "application/json", bodyReader) -} - -// NewPutTelegrafsIDRequestWithBody generates requests for PutTelegrafsID with any type of body -func NewPutTelegrafsIDRequestWithBody(server string, telegrafID string, params *PutTelegrafsIDParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PUT", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTelegrafsIDLabelsRequest generates requests for GetTelegrafsIDLabels -func NewGetTelegrafsIDLabelsRequest(server string, telegrafID string, params *GetTelegrafsIDLabelsParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostTelegrafsIDLabelsRequest calls the generic PostTelegrafsIDLabels builder with application/json body -func NewPostTelegrafsIDLabelsRequest(server string, telegrafID string, params *PostTelegrafsIDLabelsParams, body PostTelegrafsIDLabelsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostTelegrafsIDLabelsRequestWithBody(server, telegrafID, params, "application/json", bodyReader) -} - -// NewPostTelegrafsIDLabelsRequestWithBody generates requests for PostTelegrafsIDLabels with any type of body -func NewPostTelegrafsIDLabelsRequestWithBody(server string, telegrafID string, params *PostTelegrafsIDLabelsParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteTelegrafsIDLabelsIDRequest generates requests for DeleteTelegrafsIDLabelsID -func NewDeleteTelegrafsIDLabelsIDRequest(server string, telegrafID string, labelID string, params *DeleteTelegrafsIDLabelsIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s/labels/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTelegrafsIDMembersRequest generates requests for GetTelegrafsIDMembers -func NewGetTelegrafsIDMembersRequest(server string, telegrafID string, params *GetTelegrafsIDMembersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostTelegrafsIDMembersRequest calls the generic PostTelegrafsIDMembers builder with application/json body -func NewPostTelegrafsIDMembersRequest(server string, telegrafID string, params *PostTelegrafsIDMembersParams, body PostTelegrafsIDMembersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostTelegrafsIDMembersRequestWithBody(server, telegrafID, params, "application/json", bodyReader) -} - -// NewPostTelegrafsIDMembersRequestWithBody generates requests for PostTelegrafsIDMembers with any type of body -func NewPostTelegrafsIDMembersRequestWithBody(server string, telegrafID string, params *PostTelegrafsIDMembersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s/members", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteTelegrafsIDMembersIDRequest generates requests for DeleteTelegrafsIDMembersID -func NewDeleteTelegrafsIDMembersIDRequest(server string, telegrafID string, userID string, params *DeleteTelegrafsIDMembersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s/members/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewGetTelegrafsIDOwnersRequest generates requests for GetTelegrafsIDOwners -func NewGetTelegrafsIDOwnersRequest(server string, telegrafID string, params *GetTelegrafsIDOwnersParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { - return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewPostTelegrafsIDOwnersRequest calls the generic PostTelegrafsIDOwners builder with application/json body -func NewPostTelegrafsIDOwnersRequest(server string, telegrafID string, params *PostTelegrafsIDOwnersParams, body PostTelegrafsIDOwnersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostTelegrafsIDOwnersRequestWithBody(server, telegrafID, params, "application/json", bodyReader) -} - -// NewPostTelegrafsIDOwnersRequestWithBody generates requests for PostTelegrafsIDOwners with any type of body -func NewPostTelegrafsIDOwnersRequestWithBody(server string, telegrafID string, params *PostTelegrafsIDOwnersParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s/owners", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + operationPath := fmt.Sprintf("./buckets") queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) + queryValues := queryURL.Query() - if params.ZapTraceSpan != nil { - var headerParam0 string + if params.Offset != nil { - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewDeleteTelegrafsIDOwnersIDRequest generates requests for DeleteTelegrafsIDOwnersID -func NewDeleteTelegrafsIDOwnersIDRequest(server string, telegrafID string, userID string, params *DeleteTelegrafsIDOwnersIDParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, telegrafID) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/telegrafs/%s/owners/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - if params.ZapTraceSpan != nil { - var headerParam0 string - - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - return req, nil -} - -// NewApplyTemplateRequest calls the generic ApplyTemplate builder with application/json body -func NewApplyTemplateRequest(server string, body ApplyTemplateJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewApplyTemplateRequestWithBody(server, "application/json", bodyReader) -} - -// NewApplyTemplateRequestWithBody generates requests for ApplyTemplate with any type of body -func NewApplyTemplateRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/templates/apply") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewExportTemplateRequest calls the generic ExportTemplate builder with application/json body -func NewExportTemplateRequest(server string, body ExportTemplateJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewExportTemplateRequestWithBody(server, "application/json", bodyReader) -} - -// NewExportTemplateRequestWithBody generates requests for ExportTemplate with any type of body -func NewExportTemplateRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/templates/export") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewGetUsersRequest generates requests for GetUsers -func NewGetUsersRequest(server string, params *GetUsersParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/users") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err } - queryValues := queryURL.Query() + if params.Limit != nil { - if params.Offset != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { + } + + if params.After != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "after", runtime.ParamLocationQuery, *params.After); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15159,9 +566,9 @@ func NewGetUsersRequest(server string, params *GetUsersParams) (*http.Request, e } - if params.Limit != nil { + if params.Org != nil { - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15175,9 +582,9 @@ func NewGetUsersRequest(server string, params *GetUsersParams) (*http.Request, e } - if params.After != nil { + if params.OrgID != nil { - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "after", runtime.ParamLocationQuery, *params.After); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15241,45 +648,61 @@ func NewGetUsersRequest(server string, params *GetUsersParams) (*http.Request, e req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil -} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) -// NewPostUsersRequest calls the generic PostUsers builder with application/json body -func NewPostUsersRequest(server string, params *PostUsersParams, body PostUsersJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - bodyReader = bytes.NewReader(buf) - return NewPostUsersRequestWithBody(server, params, "application/json", bodyReader) + + response := &Buckets{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -// NewPostUsersRequestWithBody generates requests for PostUsers with any type of body -func NewPostUsersRequestWithBody(server string, params *PostUsersParams, contentType string, body io.Reader) (*http.Request, error) { +// PostBuckets calls the POST on /buckets +// Create a bucket +func (c *Client) PostBuckets(ctx context.Context, params *PostBucketsAllParams) (*Bucket, error) { var err error - - serverURL, err := url.Parse(server) + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - operationPath := fmt.Sprintf("/users") - if operationPath[0] == '/' { - operationPath = "." + operationPath + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } + operationPath := fmt.Sprintf("./buckets") + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - req, err := http.NewRequest("POST", queryURL.String(), body) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) + req.Header.Add("Content-Type", "application/json") if params.ZapTraceSpan != nil { var headerParam0 string @@ -15292,38 +715,59 @@ func NewPostUsersRequestWithBody(server string, params *PostUsersParams, content req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &Bucket{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -// NewDeleteUsersIDRequest generates requests for DeleteUsersID -func NewDeleteUsersIDRequest(server string, userID string, params *DeleteUsersIDParams) (*http.Request, error) { +// DeleteBucketsID calls the DELETE on /buckets/{bucketID} +// Delete a bucket +func (c *Client) DeleteBucketsID(ctx context.Context, params *DeleteBucketsIDAllParams) error { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { - return nil, err + return err } - serverURL, err := url.Parse(server) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - operationPath := fmt.Sprintf("/users/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + operationPath := fmt.Sprintf("./buckets/%s", pathParam0) queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } if params.ZapTraceSpan != nil { @@ -15331,35 +775,49 @@ func NewDeleteUsersIDRequest(server string, userID string, params *DeleteUsersID headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) if err != nil { - return nil, err + return err } req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil + } -// NewGetUsersIDRequest generates requests for GetUsersID -func NewGetUsersIDRequest(server string, userID string, params *GetUsersIDParams) (*http.Request, error) { +// GetBucketsID calls the GET on /buckets/{bucketID} +// Retrieve a bucket +func (c *Client) GetBucketsID(ctx context.Context, params *GetBucketsIDAllParams) (*Bucket, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { return nil, err } - serverURL, err := url.Parse(server) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/users/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + operationPath := fmt.Sprintf("./buckets/%s", pathParam0) queryURL, err := serverURL.Parse(operationPath) if err != nil { @@ -15382,52 +840,68 @@ func NewGetUsersIDRequest(server string, userID string, params *GetUsersIDParams req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil -} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) -// NewPatchUsersIDRequest calls the generic PatchUsersID builder with application/json body -func NewPatchUsersIDRequest(server string, userID string, params *PatchUsersIDParams, body PatchUsersIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - bodyReader = bytes.NewReader(buf) - return NewPatchUsersIDRequestWithBody(server, userID, params, "application/json", bodyReader) + + response := &Bucket{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -// NewPatchUsersIDRequestWithBody generates requests for PatchUsersID with any type of body -func NewPatchUsersIDRequestWithBody(server string, userID string, params *PatchUsersIDParams, contentType string, body io.Reader) (*http.Request, error) { +// PatchBucketsID calls the PATCH on /buckets/{bucketID} +// Update a bucket +func (c *Client) PatchBucketsID(ctx context.Context, params *PatchBucketsIDAllParams) (*Bucket, error) { var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { return nil, err } - serverURL, err := url.Parse(server) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/users/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + operationPath := fmt.Sprintf("./buckets/%s", pathParam0) queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - req, err := http.NewRequest("PATCH", queryURL.String(), body) + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) + req.Header.Add("Content-Type", "application/json") if params.ZapTraceSpan != nil { var headerParam0 string @@ -15440,53 +914,61 @@ func NewPatchUsersIDRequestWithBody(server string, userID string, params *PatchU req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil -} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) -// NewPostUsersIDPasswordRequest calls the generic PostUsersIDPassword builder with application/json body -func NewPostUsersIDPasswordRequest(server string, userID string, params *PostUsersIDPasswordParams, body PostUsersIDPasswordJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - bodyReader = bytes.NewReader(buf) - return NewPostUsersIDPasswordRequestWithBody(server, userID, params, "application/json", bodyReader) + + response := &Bucket{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -// NewPostUsersIDPasswordRequestWithBody generates requests for PostUsersIDPassword with any type of body -func NewPostUsersIDPasswordRequestWithBody(server string, userID string, params *PostUsersIDPasswordParams, contentType string, body io.Reader) (*http.Request, error) { +// GetBucketsIDLabels calls the GET on /buckets/{bucketID}/labels +// List all labels for a bucket +func (c *Client) GetBucketsIDLabels(ctx context.Context, params *GetBucketsIDLabelsAllParams) (*LabelsResponse, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, userID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { return nil, err } - serverURL, err := url.Parse(server) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/users/%s/password", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + operationPath := fmt.Sprintf("./buckets/%s/labels", pathParam0) queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - req, err := http.NewRequest("POST", queryURL.String(), body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - if params.ZapTraceSpan != nil { var headerParam0 string @@ -15498,69 +980,69 @@ func NewPostUsersIDPasswordRequestWithBody(server string, userID string, params req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil -} - -// NewGetVariablesRequest generates requests for GetVariables -func NewGetVariablesRequest(server string, params *GetVariablesParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - operationPath := fmt.Sprintf("/variables") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - queryValues := queryURL.Query() - - if params.Org != nil { + response := &LabelsResponse{} - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + +} +// PostBucketsIDLabels calls the POST on /buckets/{bucketID}/labels +// Add a label to a bucket +func (c *Client) PostBucketsIDLabels(ctx context.Context, params *PostBucketsIDLabelsAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } + bodyReader = bytes.NewReader(buf) - if params.OrgID != nil { + var pathParam0 string - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) + if err != nil { + return nil, err + } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - queryURL.RawQuery = queryValues.Encode() + operationPath := fmt.Sprintf("./buckets/%s/labels", pathParam0) - req, err := http.NewRequest("GET", queryURL.String(), nil) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } + req.Header.Add("Content-Type", "application/json") + if params.ZapTraceSpan != nil { var headerParam0 string @@ -15572,87 +1054,123 @@ func NewGetVariablesRequest(server string, params *GetVariablesParams) (*http.Re req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil -} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) -// NewPostVariablesRequest calls the generic PostVariables builder with application/json body -func NewPostVariablesRequest(server string, params *PostVariablesParams, body PostVariablesJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - bodyReader = bytes.NewReader(buf) - return NewPostVariablesRequestWithBody(server, params, "application/json", bodyReader) + + response := &LabelResponse{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -// NewPostVariablesRequestWithBody generates requests for PostVariables with any type of body -func NewPostVariablesRequestWithBody(server string, params *PostVariablesParams, contentType string, body io.Reader) (*http.Request, error) { +// DeleteBucketsIDLabelsID calls the DELETE on /buckets/{bucketID}/labels/{labelID} +// Delete a label from a bucket +func (c *Client) DeleteBucketsIDLabelsID(ctx context.Context, params *DeleteBucketsIDLabelsIDAllParams) error { var err error - serverURL, err := url.Parse(server) + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { - return nil, err + return err } - operationPath := fmt.Sprintf("/variables") - if operationPath[0] == '/' { - operationPath = "." + operationPath + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return err } - queryURL, err := serverURL.Parse(operationPath) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - req, err := http.NewRequest("POST", queryURL.String(), body) + operationPath := fmt.Sprintf("./buckets/%s/labels/%s", pathParam0, pathParam1) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - req.Header.Add("Content-Type", contentType) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err + } if params.ZapTraceSpan != nil { var headerParam0 string headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) if err != nil { - return nil, err + return err } req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil + } -// NewDeleteVariablesIDRequest generates requests for DeleteVariablesID -func NewDeleteVariablesIDRequest(server string, variableID string, params *DeleteVariablesIDParams) (*http.Request, error) { +// GetBucketsIDMembers calls the GET on /buckets/{bucketID}/members +// List all users with member privileges for a bucket +func (c *Client) GetBucketsIDMembers(ctx context.Context, params *GetBucketsIDMembersAllParams) (*ResourceMembers, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, variableID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { return nil, err } - serverURL, err := url.Parse(server) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/variables/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + operationPath := fmt.Sprintf("./buckets/%s/members", pathParam0) queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - req, err := http.NewRequest("DELETE", queryURL.String(), nil) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } @@ -15668,40 +1186,69 @@ func NewDeleteVariablesIDRequest(server string, variableID string, params *Delet req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ResourceMembers{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -// NewGetVariablesIDRequest generates requests for GetVariablesID -func NewGetVariablesIDRequest(server string, variableID string, params *GetVariablesIDParams) (*http.Request, error) { +// PostBucketsIDMembers calls the POST on /buckets/{bucketID}/members +// Add a member to a bucket +func (c *Client) PostBucketsIDMembers(ctx context.Context, params *PostBucketsIDMembersAllParams) (*ResourceMember, error) { var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, variableID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { return nil, err } - serverURL, err := url.Parse(server) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/variables/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + operationPath := fmt.Sprintf("./buckets/%s/members", pathParam0) queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } + req.Header.Add("Content-Type", "application/json") + if params.ZapTraceSpan != nil { var headerParam0 string @@ -15713,111 +1260,127 @@ func NewGetVariablesIDRequest(server string, variableID string, params *GetVaria req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil -} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) -// NewPatchVariablesIDRequest calls the generic PatchVariablesID builder with application/json body -func NewPatchVariablesIDRequest(server string, variableID string, params *PatchVariablesIDParams, body PatchVariablesIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - bodyReader = bytes.NewReader(buf) - return NewPatchVariablesIDRequestWithBody(server, variableID, params, "application/json", bodyReader) + + response := &ResourceMember{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -// NewPatchVariablesIDRequestWithBody generates requests for PatchVariablesID with any type of body -func NewPatchVariablesIDRequestWithBody(server string, variableID string, params *PatchVariablesIDParams, contentType string, body io.Reader) (*http.Request, error) { +// DeleteBucketsIDMembersID calls the DELETE on /buckets/{bucketID}/members/{userID} +// Remove a member from a bucket +func (c *Client) DeleteBucketsIDMembersID(ctx context.Context, params *DeleteBucketsIDMembersIDAllParams) error { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, variableID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { - return nil, err + return err } - serverURL, err := url.Parse(server) + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) if err != nil { - return nil, err + return err } - operationPath := fmt.Sprintf("/variables/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } + operationPath := fmt.Sprintf("./buckets/%s/members/%s", pathParam0, pathParam1) + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - req, err := http.NewRequest("PATCH", queryURL.String(), body) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - req.Header.Add("Content-Type", contentType) - if params.ZapTraceSpan != nil { var headerParam0 string headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) if err != nil { - return nil, err + return err } req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil -} - -// NewPutVariablesIDRequest calls the generic PutVariablesID builder with application/json body -func NewPutVariablesIDRequest(server string, variableID string, params *PutVariablesIDParams, body PutVariablesIDJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - bodyReader = bytes.NewReader(buf) - return NewPutVariablesIDRequestWithBody(server, variableID, params, "application/json", bodyReader) + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil + } -// NewPutVariablesIDRequestWithBody generates requests for PutVariablesID with any type of body -func NewPutVariablesIDRequestWithBody(server string, variableID string, params *PutVariablesIDParams, contentType string, body io.Reader) (*http.Request, error) { +// GetBucketsIDOwners calls the GET on /buckets/{bucketID}/owners +// List all owners of a bucket +func (c *Client) GetBucketsIDOwners(ctx context.Context, params *GetBucketsIDOwnersAllParams) (*ResourceOwners, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, variableID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { return nil, err } - serverURL, err := url.Parse(server) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/variables/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + operationPath := fmt.Sprintf("./buckets/%s/owners", pathParam0) queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - req, err := http.NewRequest("PUT", queryURL.String(), body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - if params.ZapTraceSpan != nil { var headerParam0 string @@ -15829,40 +1392,69 @@ func NewPutVariablesIDRequestWithBody(server string, variableID string, params * req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) + + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ResourceOwners{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -// NewGetVariablesIDLabelsRequest generates requests for GetVariablesIDLabels -func NewGetVariablesIDLabelsRequest(server string, variableID string, params *GetVariablesIDLabelsParams) (*http.Request, error) { +// PostBucketsIDOwners calls the POST on /buckets/{bucketID}/owners +// Add an owner to a bucket +func (c *Client) PostBucketsIDOwners(ctx context.Context, params *PostBucketsIDOwnersAllParams) (*ResourceOwner, error) { var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, variableID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { return nil, err } - serverURL, err := url.Parse(server) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/variables/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + operationPath := fmt.Sprintf("./buckets/%s/owners", pathParam0) queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } + req.Header.Add("Content-Type", "application/json") + if params.ZapTraceSpan != nil { var headerParam0 string @@ -15874,132 +1466,168 @@ func NewGetVariablesIDLabelsRequest(server string, variableID string, params *Ge req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil -} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) -// NewPostVariablesIDLabelsRequest calls the generic PostVariablesIDLabels builder with application/json body -func NewPostVariablesIDLabelsRequest(server string, variableID string, params *PostVariablesIDLabelsParams, body PostVariablesIDLabelsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - bodyReader = bytes.NewReader(buf) - return NewPostVariablesIDLabelsRequestWithBody(server, variableID, params, "application/json", bodyReader) + + response := &ResourceOwner{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -// NewPostVariablesIDLabelsRequestWithBody generates requests for PostVariablesIDLabels with any type of body -func NewPostVariablesIDLabelsRequestWithBody(server string, variableID string, params *PostVariablesIDLabelsParams, contentType string, body io.Reader) (*http.Request, error) { +// DeleteBucketsIDOwnersID calls the DELETE on /buckets/{bucketID}/owners/{userID} +// Remove an owner from a bucket +func (c *Client) DeleteBucketsIDOwnersID(ctx context.Context, params *DeleteBucketsIDOwnersIDAllParams) error { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, variableID) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bucketID", runtime.ParamLocationPath, params.BucketID) if err != nil { - return nil, err + return err } - serverURL, err := url.Parse(server) + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) if err != nil { - return nil, err + return err } - operationPath := fmt.Sprintf("/variables/%s/labels", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } + operationPath := fmt.Sprintf("./buckets/%s/owners/%s", pathParam0, pathParam1) + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - req, err := http.NewRequest("POST", queryURL.String(), body) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - req.Header.Add("Content-Type", contentType) - if params.ZapTraceSpan != nil { var headerParam0 string headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) if err != nil { - return nil, err + return err } req.Header.Set("Zap-Trace-Span", headerParam0) } - return req, nil + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil + } -// NewDeleteVariablesIDLabelsIDRequest generates requests for DeleteVariablesIDLabelsID -func NewDeleteVariablesIDLabelsIDRequest(server string, variableID string, labelID string, params *DeleteVariablesIDLabelsIDParams) (*http.Request, error) { +// GetConfig calls the GET on /config +// Retrieve runtime configuration +func (c *Client) GetConfig(ctx context.Context, params *GetConfigParams) (*Config, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, variableID) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - var pathParam1 string + operationPath := fmt.Sprintf("./config") - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, labelID) + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - serverURL, err := url.Parse(server) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/variables/%s/labels/%s", pathParam0, pathParam1) - if operationPath[0] == '/' { - operationPath = "." + operationPath + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - queryURL, err := serverURL.Parse(operationPath) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - req, err := http.NewRequest("DELETE", queryURL.String(), nil) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - if params.ZapTraceSpan != nil { - var headerParam0 string + response := &Config{} - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - - req.Header.Set("Zap-Trace-Span", headerParam0) + default: + return nil, decodeError(bodyBytes, rsp) } + return response, nil - return req, nil } -// NewPostWriteRequestWithBody generates requests for PostWrite with any type of body -func NewPostWriteRequestWithBody(server string, params *PostWriteParams, contentType string, body io.Reader) (*http.Request, error) { +// GetDashboards calls the GET on /dashboards +// List all dashboards +func (c *Client) GetDashboards(ctx context.Context, params *GetDashboardsParams) (*Dashboards, error) { var err error - serverURL, err := url.Parse(server) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/write") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + operationPath := fmt.Sprintf("./dashboards") queryURL, err := serverURL.Parse(operationPath) if err != nil { @@ -16008,21 +1636,9 @@ func NewPostWriteRequestWithBody(server string, params *PostWriteParams, content queryValues := queryURL.Query() - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, params.Org); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - if params.OrgID != nil { + if params.Offset != nil { - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -16036,21 +1652,9 @@ func NewPostWriteRequestWithBody(server string, params *PostWriteParams, content } - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "bucket", runtime.ParamLocationQuery, params.Bucket); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - if params.Precision != nil { + if params.Limit != nil { - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "precision", runtime.ParamLocationQuery, *params.Precision); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -16064,17092 +1668,12476 @@ func NewPostWriteRequestWithBody(server string, params *PostWriteParams, content } - queryURL.RawQuery = queryValues.Encode() - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - if params.ZapTraceSpan != nil { - var headerParam0 string + if params.Descending != nil { - headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) - if err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "descending", runtime.ParamLocationQuery, *params.Descending); err != nil { return nil, err - } - - req.Header.Set("Zap-Trace-Span", headerParam0) - } - - if params.ContentEncoding != nil { - var headerParam1 string - - headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Content-Encoding", runtime.ParamLocationHeader, *params.ContentEncoding) - if err != nil { + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - req.Header.Set("Content-Encoding", headerParam1) } - if params.ContentType != nil { - var headerParam2 string + if params.Owner != nil { - headerParam2, err = runtime.StyleParamWithLocation("simple", false, "Content-Type", runtime.ParamLocationHeader, *params.ContentType) - if err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "owner", runtime.ParamLocationQuery, *params.Owner); err != nil { return nil, err - } - - req.Header.Set("Content-Type", headerParam2) - } - - if params.ContentLength != nil { - var headerParam3 string - - headerParam3, err = runtime.StyleParamWithLocation("simple", false, "Content-Length", runtime.ParamLocationHeader, *params.ContentLength) - if err != nil { + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - req.Header.Set("Content-Length", headerParam3) } - if params.Accept != nil { - var headerParam4 string + if params.SortBy != nil { - headerParam4, err = runtime.StyleParamWithLocation("simple", false, "Accept", runtime.ParamLocationHeader, *params.Accept) - if err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "sortBy", runtime.ParamLocationQuery, *params.SortBy); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - req.Header.Set("Accept", headerParam4) } - return req, nil -} - -// ClientWithResponses builds on ClientInterface to offer response payloads -type ClientWithResponses struct { - ClientInterface -} - -// NewClientWithResponses creates a new ClientWithResponses, which wraps -// Client with return type handling -func NewClientWithResponses(service ihttp.Service) *ClientWithResponses { - client := NewClient(service) - return &ClientWithResponses{client} -} - -// ClientWithResponsesInterface is the interface specification for the client with responses above. -type ClientWithResponsesInterface interface { - // GetRoutes request - GetRoutesWithResponse(ctx context.Context, params *GetRoutesParams) (*GetRoutesResponse, error) - - // GetAuthorizations request - GetAuthorizationsWithResponse(ctx context.Context, params *GetAuthorizationsParams) (*GetAuthorizationsResponse, error) - - // PostAuthorizations request with any body - PostAuthorizationsWithBodyWithResponse(ctx context.Context, params *PostAuthorizationsParams, contentType string, body io.Reader) (*PostAuthorizationsResponse, error) - - PostAuthorizationsWithResponse(ctx context.Context, params *PostAuthorizationsParams, body PostAuthorizationsJSONRequestBody) (*PostAuthorizationsResponse, error) - - // DeleteAuthorizationsID request - DeleteAuthorizationsIDWithResponse(ctx context.Context, authID string, params *DeleteAuthorizationsIDParams) (*DeleteAuthorizationsIDResponse, error) - - // GetAuthorizationsID request - GetAuthorizationsIDWithResponse(ctx context.Context, authID string, params *GetAuthorizationsIDParams) (*GetAuthorizationsIDResponse, error) - - // PatchAuthorizationsID request with any body - PatchAuthorizationsIDWithBodyWithResponse(ctx context.Context, authID string, params *PatchAuthorizationsIDParams, contentType string, body io.Reader) (*PatchAuthorizationsIDResponse, error) - - PatchAuthorizationsIDWithResponse(ctx context.Context, authID string, params *PatchAuthorizationsIDParams, body PatchAuthorizationsIDJSONRequestBody) (*PatchAuthorizationsIDResponse, error) - - // GetBackupKV request - GetBackupKVWithResponse(ctx context.Context, params *GetBackupKVParams) (*GetBackupKVResponse, error) - - // GetBackupMetadata request - GetBackupMetadataWithResponse(ctx context.Context, params *GetBackupMetadataParams) (*GetBackupMetadataResponse, error) - - // GetBackupShardId request - GetBackupShardIdWithResponse(ctx context.Context, shardID int64, params *GetBackupShardIdParams) (*GetBackupShardIdResponse, error) - - // GetBuckets request - GetBucketsWithResponse(ctx context.Context, params *GetBucketsParams) (*GetBucketsResponse, error) - - // PostBuckets request with any body - PostBucketsWithBodyWithResponse(ctx context.Context, params *PostBucketsParams, contentType string, body io.Reader) (*PostBucketsResponse, error) - - PostBucketsWithResponse(ctx context.Context, params *PostBucketsParams, body PostBucketsJSONRequestBody) (*PostBucketsResponse, error) - - // DeleteBucketsID request - DeleteBucketsIDWithResponse(ctx context.Context, bucketID string, params *DeleteBucketsIDParams) (*DeleteBucketsIDResponse, error) - - // GetBucketsID request - GetBucketsIDWithResponse(ctx context.Context, bucketID string, params *GetBucketsIDParams) (*GetBucketsIDResponse, error) - - // PatchBucketsID request with any body - PatchBucketsIDWithBodyWithResponse(ctx context.Context, bucketID string, params *PatchBucketsIDParams, contentType string, body io.Reader) (*PatchBucketsIDResponse, error) - - PatchBucketsIDWithResponse(ctx context.Context, bucketID string, params *PatchBucketsIDParams, body PatchBucketsIDJSONRequestBody) (*PatchBucketsIDResponse, error) - - // GetBucketsIDLabels request - GetBucketsIDLabelsWithResponse(ctx context.Context, bucketID string, params *GetBucketsIDLabelsParams) (*GetBucketsIDLabelsResponse, error) - - // PostBucketsIDLabels request with any body - PostBucketsIDLabelsWithBodyWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDLabelsParams, contentType string, body io.Reader) (*PostBucketsIDLabelsResponse, error) - - PostBucketsIDLabelsWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDLabelsParams, body PostBucketsIDLabelsJSONRequestBody) (*PostBucketsIDLabelsResponse, error) - - // DeleteBucketsIDLabelsID request - DeleteBucketsIDLabelsIDWithResponse(ctx context.Context, bucketID string, labelID string, params *DeleteBucketsIDLabelsIDParams) (*DeleteBucketsIDLabelsIDResponse, error) - - // GetBucketsIDMembers request - GetBucketsIDMembersWithResponse(ctx context.Context, bucketID string, params *GetBucketsIDMembersParams) (*GetBucketsIDMembersResponse, error) - - // PostBucketsIDMembers request with any body - PostBucketsIDMembersWithBodyWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDMembersParams, contentType string, body io.Reader) (*PostBucketsIDMembersResponse, error) - - PostBucketsIDMembersWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDMembersParams, body PostBucketsIDMembersJSONRequestBody) (*PostBucketsIDMembersResponse, error) - - // DeleteBucketsIDMembersID request - DeleteBucketsIDMembersIDWithResponse(ctx context.Context, bucketID string, userID string, params *DeleteBucketsIDMembersIDParams) (*DeleteBucketsIDMembersIDResponse, error) - - // GetBucketsIDOwners request - GetBucketsIDOwnersWithResponse(ctx context.Context, bucketID string, params *GetBucketsIDOwnersParams) (*GetBucketsIDOwnersResponse, error) - - // PostBucketsIDOwners request with any body - PostBucketsIDOwnersWithBodyWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDOwnersParams, contentType string, body io.Reader) (*PostBucketsIDOwnersResponse, error) - - PostBucketsIDOwnersWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDOwnersParams, body PostBucketsIDOwnersJSONRequestBody) (*PostBucketsIDOwnersResponse, error) - - // DeleteBucketsIDOwnersID request - DeleteBucketsIDOwnersIDWithResponse(ctx context.Context, bucketID string, userID string, params *DeleteBucketsIDOwnersIDParams) (*DeleteBucketsIDOwnersIDResponse, error) - - // GetChecks request - GetChecksWithResponse(ctx context.Context, params *GetChecksParams) (*GetChecksResponse, error) - - // CreateCheck request with any body - CreateCheckWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateCheckResponse, error) - - CreateCheckWithResponse(ctx context.Context, body CreateCheckJSONRequestBody) (*CreateCheckResponse, error) - - // DeleteChecksID request - DeleteChecksIDWithResponse(ctx context.Context, checkID string, params *DeleteChecksIDParams) (*DeleteChecksIDResponse, error) - - // GetChecksID request - GetChecksIDWithResponse(ctx context.Context, checkID string, params *GetChecksIDParams) (*GetChecksIDResponse, error) - - // PatchChecksID request with any body - PatchChecksIDWithBodyWithResponse(ctx context.Context, checkID string, params *PatchChecksIDParams, contentType string, body io.Reader) (*PatchChecksIDResponse, error) - - PatchChecksIDWithResponse(ctx context.Context, checkID string, params *PatchChecksIDParams, body PatchChecksIDJSONRequestBody) (*PatchChecksIDResponse, error) - - // PutChecksID request with any body - PutChecksIDWithBodyWithResponse(ctx context.Context, checkID string, params *PutChecksIDParams, contentType string, body io.Reader) (*PutChecksIDResponse, error) - - PutChecksIDWithResponse(ctx context.Context, checkID string, params *PutChecksIDParams, body PutChecksIDJSONRequestBody) (*PutChecksIDResponse, error) - - // GetChecksIDLabels request - GetChecksIDLabelsWithResponse(ctx context.Context, checkID string, params *GetChecksIDLabelsParams) (*GetChecksIDLabelsResponse, error) - - // PostChecksIDLabels request with any body - PostChecksIDLabelsWithBodyWithResponse(ctx context.Context, checkID string, params *PostChecksIDLabelsParams, contentType string, body io.Reader) (*PostChecksIDLabelsResponse, error) - - PostChecksIDLabelsWithResponse(ctx context.Context, checkID string, params *PostChecksIDLabelsParams, body PostChecksIDLabelsJSONRequestBody) (*PostChecksIDLabelsResponse, error) - - // DeleteChecksIDLabelsID request - DeleteChecksIDLabelsIDWithResponse(ctx context.Context, checkID string, labelID string, params *DeleteChecksIDLabelsIDParams) (*DeleteChecksIDLabelsIDResponse, error) - - // GetChecksIDQuery request - GetChecksIDQueryWithResponse(ctx context.Context, checkID string, params *GetChecksIDQueryParams) (*GetChecksIDQueryResponse, error) - - // GetConfig request - GetConfigWithResponse(ctx context.Context, params *GetConfigParams) (*GetConfigResponse, error) - - // GetDashboards request - GetDashboardsWithResponse(ctx context.Context, params *GetDashboardsParams) (*GetDashboardsResponse, error) - - // PostDashboards request with any body - PostDashboardsWithBodyWithResponse(ctx context.Context, params *PostDashboardsParams, contentType string, body io.Reader) (*PostDashboardsResponse, error) - - PostDashboardsWithResponse(ctx context.Context, params *PostDashboardsParams, body PostDashboardsJSONRequestBody) (*PostDashboardsResponse, error) - - // DeleteDashboardsID request - DeleteDashboardsIDWithResponse(ctx context.Context, dashboardID string, params *DeleteDashboardsIDParams) (*DeleteDashboardsIDResponse, error) + if params.Id != nil { - // GetDashboardsID request - GetDashboardsIDWithResponse(ctx context.Context, dashboardID string, params *GetDashboardsIDParams) (*GetDashboardsIDResponse, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "id", runtime.ParamLocationQuery, *params.Id); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - // PatchDashboardsID request with any body - PatchDashboardsIDWithBodyWithResponse(ctx context.Context, dashboardID string, params *PatchDashboardsIDParams, contentType string, body io.Reader) (*PatchDashboardsIDResponse, error) + } - PatchDashboardsIDWithResponse(ctx context.Context, dashboardID string, params *PatchDashboardsIDParams, body PatchDashboardsIDJSONRequestBody) (*PatchDashboardsIDResponse, error) + if params.OrgID != nil { - // PostDashboardsIDCells request with any body - PostDashboardsIDCellsWithBodyWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDCellsParams, contentType string, body io.Reader) (*PostDashboardsIDCellsResponse, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - PostDashboardsIDCellsWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDCellsParams, body PostDashboardsIDCellsJSONRequestBody) (*PostDashboardsIDCellsResponse, error) + } - // PutDashboardsIDCells request with any body - PutDashboardsIDCellsWithBodyWithResponse(ctx context.Context, dashboardID string, params *PutDashboardsIDCellsParams, contentType string, body io.Reader) (*PutDashboardsIDCellsResponse, error) + if params.Org != nil { - PutDashboardsIDCellsWithResponse(ctx context.Context, dashboardID string, params *PutDashboardsIDCellsParams, body PutDashboardsIDCellsJSONRequestBody) (*PutDashboardsIDCellsResponse, error) + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - // DeleteDashboardsIDCellsID request - DeleteDashboardsIDCellsIDWithResponse(ctx context.Context, dashboardID string, cellID string, params *DeleteDashboardsIDCellsIDParams) (*DeleteDashboardsIDCellsIDResponse, error) + } - // PatchDashboardsIDCellsID request with any body - PatchDashboardsIDCellsIDWithBodyWithResponse(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDParams, contentType string, body io.Reader) (*PatchDashboardsIDCellsIDResponse, error) + queryURL.RawQuery = queryValues.Encode() - PatchDashboardsIDCellsIDWithResponse(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDParams, body PatchDashboardsIDCellsIDJSONRequestBody) (*PatchDashboardsIDCellsIDResponse, error) + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - // GetDashboardsIDCellsIDView request - GetDashboardsIDCellsIDViewWithResponse(ctx context.Context, dashboardID string, cellID string, params *GetDashboardsIDCellsIDViewParams) (*GetDashboardsIDCellsIDViewResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // PatchDashboardsIDCellsIDView request with any body - PatchDashboardsIDCellsIDViewWithBodyWithResponse(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDViewParams, contentType string, body io.Reader) (*PatchDashboardsIDCellsIDViewResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - PatchDashboardsIDCellsIDViewWithResponse(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDViewParams, body PatchDashboardsIDCellsIDViewJSONRequestBody) (*PatchDashboardsIDCellsIDViewResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // GetDashboardsIDLabels request - GetDashboardsIDLabelsWithResponse(ctx context.Context, dashboardID string, params *GetDashboardsIDLabelsParams) (*GetDashboardsIDLabelsResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // PostDashboardsIDLabels request with any body - PostDashboardsIDLabelsWithBodyWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDLabelsParams, contentType string, body io.Reader) (*PostDashboardsIDLabelsResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - PostDashboardsIDLabelsWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDLabelsParams, body PostDashboardsIDLabelsJSONRequestBody) (*PostDashboardsIDLabelsResponse, error) + response := &Dashboards{} - // DeleteDashboardsIDLabelsID request - DeleteDashboardsIDLabelsIDWithResponse(ctx context.Context, dashboardID string, labelID string, params *DeleteDashboardsIDLabelsIDParams) (*DeleteDashboardsIDLabelsIDResponse, error) + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // GetDashboardsIDMembers request - GetDashboardsIDMembersWithResponse(ctx context.Context, dashboardID string, params *GetDashboardsIDMembersParams) (*GetDashboardsIDMembersResponse, error) +} - // PostDashboardsIDMembers request with any body - PostDashboardsIDMembersWithBodyWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDMembersParams, contentType string, body io.Reader) (*PostDashboardsIDMembersResponse, error) +// DeleteDashboardsID calls the DELETE on /dashboards/{dashboardID} +// Delete a dashboard +func (c *Client) DeleteDashboardsID(ctx context.Context, params *DeleteDashboardsIDAllParams) error { + var err error - PostDashboardsIDMembersWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDMembersParams, body PostDashboardsIDMembersJSONRequestBody) (*PostDashboardsIDMembersResponse, error) + var pathParam0 string - // DeleteDashboardsIDMembersID request - DeleteDashboardsIDMembersIDWithResponse(ctx context.Context, dashboardID string, userID string, params *DeleteDashboardsIDMembersIDParams) (*DeleteDashboardsIDMembersIDResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return err + } - // GetDashboardsIDOwners request - GetDashboardsIDOwnersWithResponse(ctx context.Context, dashboardID string, params *GetDashboardsIDOwnersParams) (*GetDashboardsIDOwnersResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err + } - // PostDashboardsIDOwners request with any body - PostDashboardsIDOwnersWithBodyWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDOwnersParams, contentType string, body io.Reader) (*PostDashboardsIDOwnersResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s", pathParam0) - PostDashboardsIDOwnersWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDOwnersParams, body PostDashboardsIDOwnersJSONRequestBody) (*PostDashboardsIDOwnersResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err + } - // DeleteDashboardsIDOwnersID request - DeleteDashboardsIDOwnersIDWithResponse(ctx context.Context, dashboardID string, userID string, params *DeleteDashboardsIDOwnersIDParams) (*DeleteDashboardsIDOwnersIDResponse, error) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err + } - // GetDBRPs request - GetDBRPsWithResponse(ctx context.Context, params *GetDBRPsParams) (*GetDBRPsResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // PostDBRP request with any body - PostDBRPWithBodyWithResponse(ctx context.Context, params *PostDBRPParams, contentType string, body io.Reader) (*PostDBRPResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } - PostDBRPWithResponse(ctx context.Context, params *PostDBRPParams, body PostDBRPJSONRequestBody) (*PostDBRPResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // DeleteDBRPID request - DeleteDBRPIDWithResponse(ctx context.Context, dbrpID string, params *DeleteDBRPIDParams) (*DeleteDBRPIDResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } - // GetDBRPsID request - GetDBRPsIDWithResponse(ctx context.Context, dbrpID string, params *GetDBRPsIDParams) (*GetDBRPsIDResponse, error) + defer func() { _ = rsp.Body.Close() }() - // PatchDBRPID request with any body - PatchDBRPIDWithBodyWithResponse(ctx context.Context, dbrpID string, params *PatchDBRPIDParams, contentType string, body io.Reader) (*PatchDBRPIDResponse, error) + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil - PatchDBRPIDWithResponse(ctx context.Context, dbrpID string, params *PatchDBRPIDParams, body PatchDBRPIDJSONRequestBody) (*PatchDBRPIDResponse, error) +} - // PostDelete request with any body - PostDeleteWithBodyWithResponse(ctx context.Context, params *PostDeleteParams, contentType string, body io.Reader) (*PostDeleteResponse, error) +// PatchDashboardsID calls the PATCH on /dashboards/{dashboardID} +// Update a dashboard +func (c *Client) PatchDashboardsID(ctx context.Context, params *PatchDashboardsIDAllParams) (*Dashboard, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) - PostDeleteWithResponse(ctx context.Context, params *PostDeleteParams, body PostDeleteJSONRequestBody) (*PostDeleteResponse, error) + var pathParam0 string - // GetFlags request - GetFlagsWithResponse(ctx context.Context, params *GetFlagsParams) (*GetFlagsResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - // GetHealth request - GetHealthWithResponse(ctx context.Context, params *GetHealthParams) (*GetHealthResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // GetLabels request - GetLabelsWithResponse(ctx context.Context, params *GetLabelsParams) (*GetLabelsResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s", pathParam0) - // PostLabels request with any body - PostLabelsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*PostLabelsResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - PostLabelsWithResponse(ctx context.Context, body PostLabelsJSONRequestBody) (*PostLabelsResponse, error) + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } - // DeleteLabelsID request - DeleteLabelsIDWithResponse(ctx context.Context, labelID string, params *DeleteLabelsIDParams) (*DeleteLabelsIDResponse, error) + req.Header.Add("Content-Type", "application/json") - // GetLabelsID request - GetLabelsIDWithResponse(ctx context.Context, labelID string, params *GetLabelsIDParams) (*GetLabelsIDResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // PatchLabelsID request with any body - PatchLabelsIDWithBodyWithResponse(ctx context.Context, labelID string, params *PatchLabelsIDParams, contentType string, body io.Reader) (*PatchLabelsIDResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - PatchLabelsIDWithResponse(ctx context.Context, labelID string, params *PatchLabelsIDParams, body PatchLabelsIDJSONRequestBody) (*PatchLabelsIDResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // GetLegacyAuthorizations request - GetLegacyAuthorizationsWithResponse(ctx context.Context, params *GetLegacyAuthorizationsParams) (*GetLegacyAuthorizationsResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // PostLegacyAuthorizations request with any body - PostLegacyAuthorizationsWithBodyWithResponse(ctx context.Context, params *PostLegacyAuthorizationsParams, contentType string, body io.Reader) (*PostLegacyAuthorizationsResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - PostLegacyAuthorizationsWithResponse(ctx context.Context, params *PostLegacyAuthorizationsParams, body PostLegacyAuthorizationsJSONRequestBody) (*PostLegacyAuthorizationsResponse, error) + response := &Dashboard{} - // DeleteLegacyAuthorizationsID request - DeleteLegacyAuthorizationsIDWithResponse(ctx context.Context, authID string, params *DeleteLegacyAuthorizationsIDParams) (*DeleteLegacyAuthorizationsIDResponse, error) + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // GetLegacyAuthorizationsID request - GetLegacyAuthorizationsIDWithResponse(ctx context.Context, authID string, params *GetLegacyAuthorizationsIDParams) (*GetLegacyAuthorizationsIDResponse, error) +} - // PatchLegacyAuthorizationsID request with any body - PatchLegacyAuthorizationsIDWithBodyWithResponse(ctx context.Context, authID string, params *PatchLegacyAuthorizationsIDParams, contentType string, body io.Reader) (*PatchLegacyAuthorizationsIDResponse, error) +// PostDashboardsIDCells calls the POST on /dashboards/{dashboardID}/cells +// Create a dashboard cell +func (c *Client) PostDashboardsIDCells(ctx context.Context, params *PostDashboardsIDCellsAllParams) (*Cell, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) - PatchLegacyAuthorizationsIDWithResponse(ctx context.Context, authID string, params *PatchLegacyAuthorizationsIDParams, body PatchLegacyAuthorizationsIDJSONRequestBody) (*PatchLegacyAuthorizationsIDResponse, error) + var pathParam0 string - // PostLegacyAuthorizationsIDPassword request with any body - PostLegacyAuthorizationsIDPasswordWithBodyWithResponse(ctx context.Context, authID string, params *PostLegacyAuthorizationsIDPasswordParams, contentType string, body io.Reader) (*PostLegacyAuthorizationsIDPasswordResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - PostLegacyAuthorizationsIDPasswordWithResponse(ctx context.Context, authID string, params *PostLegacyAuthorizationsIDPasswordParams, body PostLegacyAuthorizationsIDPasswordJSONRequestBody) (*PostLegacyAuthorizationsIDPasswordResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // GetMe request - GetMeWithResponse(ctx context.Context, params *GetMeParams) (*GetMeResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/cells", pathParam0) - // PutMePassword request with any body - PutMePasswordWithBodyWithResponse(ctx context.Context, params *PutMePasswordParams, contentType string, body io.Reader) (*PutMePasswordResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - PutMePasswordWithResponse(ctx context.Context, params *PutMePasswordParams, body PutMePasswordJSONRequestBody) (*PutMePasswordResponse, error) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } - // GetMetrics request - GetMetricsWithResponse(ctx context.Context, params *GetMetricsParams) (*GetMetricsResponse, error) + req.Header.Add("Content-Type", "application/json") - // GetNotificationEndpoints request - GetNotificationEndpointsWithResponse(ctx context.Context, params *GetNotificationEndpointsParams) (*GetNotificationEndpointsResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // CreateNotificationEndpoint request with any body - CreateNotificationEndpointWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateNotificationEndpointResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - CreateNotificationEndpointWithResponse(ctx context.Context, body CreateNotificationEndpointJSONRequestBody) (*CreateNotificationEndpointResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // DeleteNotificationEndpointsID request - DeleteNotificationEndpointsIDWithResponse(ctx context.Context, endpointID string, params *DeleteNotificationEndpointsIDParams) (*DeleteNotificationEndpointsIDResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // GetNotificationEndpointsID request - GetNotificationEndpointsIDWithResponse(ctx context.Context, endpointID string, params *GetNotificationEndpointsIDParams) (*GetNotificationEndpointsIDResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - // PatchNotificationEndpointsID request with any body - PatchNotificationEndpointsIDWithBodyWithResponse(ctx context.Context, endpointID string, params *PatchNotificationEndpointsIDParams, contentType string, body io.Reader) (*PatchNotificationEndpointsIDResponse, error) + response := &Cell{} - PatchNotificationEndpointsIDWithResponse(ctx context.Context, endpointID string, params *PatchNotificationEndpointsIDParams, body PatchNotificationEndpointsIDJSONRequestBody) (*PatchNotificationEndpointsIDResponse, error) + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // PutNotificationEndpointsID request with any body - PutNotificationEndpointsIDWithBodyWithResponse(ctx context.Context, endpointID string, params *PutNotificationEndpointsIDParams, contentType string, body io.Reader) (*PutNotificationEndpointsIDResponse, error) +} - PutNotificationEndpointsIDWithResponse(ctx context.Context, endpointID string, params *PutNotificationEndpointsIDParams, body PutNotificationEndpointsIDJSONRequestBody) (*PutNotificationEndpointsIDResponse, error) +// PutDashboardsIDCells calls the PUT on /dashboards/{dashboardID}/cells +// Replace cells in a dashboard +func (c *Client) PutDashboardsIDCells(ctx context.Context, params *PutDashboardsIDCellsAllParams) (*Dashboard, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) - // GetNotificationEndpointsIDLabels request - GetNotificationEndpointsIDLabelsWithResponse(ctx context.Context, endpointID string, params *GetNotificationEndpointsIDLabelsParams) (*GetNotificationEndpointsIDLabelsResponse, error) + var pathParam0 string - // PostNotificationEndpointIDLabels request with any body - PostNotificationEndpointIDLabelsWithBodyWithResponse(ctx context.Context, endpointID string, params *PostNotificationEndpointIDLabelsParams, contentType string, body io.Reader) (*PostNotificationEndpointIDLabelsResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - PostNotificationEndpointIDLabelsWithResponse(ctx context.Context, endpointID string, params *PostNotificationEndpointIDLabelsParams, body PostNotificationEndpointIDLabelsJSONRequestBody) (*PostNotificationEndpointIDLabelsResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // DeleteNotificationEndpointsIDLabelsID request - DeleteNotificationEndpointsIDLabelsIDWithResponse(ctx context.Context, endpointID string, labelID string, params *DeleteNotificationEndpointsIDLabelsIDParams) (*DeleteNotificationEndpointsIDLabelsIDResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/cells", pathParam0) - // GetNotificationRules request - GetNotificationRulesWithResponse(ctx context.Context, params *GetNotificationRulesParams) (*GetNotificationRulesResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // CreateNotificationRule request with any body - CreateNotificationRuleWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateNotificationRuleResponse, error) + req, err := http.NewRequest("PUT", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } - CreateNotificationRuleWithResponse(ctx context.Context, body CreateNotificationRuleJSONRequestBody) (*CreateNotificationRuleResponse, error) + req.Header.Add("Content-Type", "application/json") - // DeleteNotificationRulesID request - DeleteNotificationRulesIDWithResponse(ctx context.Context, ruleID string, params *DeleteNotificationRulesIDParams) (*DeleteNotificationRulesIDResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // GetNotificationRulesID request - GetNotificationRulesIDWithResponse(ctx context.Context, ruleID string, params *GetNotificationRulesIDParams) (*GetNotificationRulesIDResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - // PatchNotificationRulesID request with any body - PatchNotificationRulesIDWithBodyWithResponse(ctx context.Context, ruleID string, params *PatchNotificationRulesIDParams, contentType string, body io.Reader) (*PatchNotificationRulesIDResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - PatchNotificationRulesIDWithResponse(ctx context.Context, ruleID string, params *PatchNotificationRulesIDParams, body PatchNotificationRulesIDJSONRequestBody) (*PatchNotificationRulesIDResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // PutNotificationRulesID request with any body - PutNotificationRulesIDWithBodyWithResponse(ctx context.Context, ruleID string, params *PutNotificationRulesIDParams, contentType string, body io.Reader) (*PutNotificationRulesIDResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - PutNotificationRulesIDWithResponse(ctx context.Context, ruleID string, params *PutNotificationRulesIDParams, body PutNotificationRulesIDJSONRequestBody) (*PutNotificationRulesIDResponse, error) + response := &Dashboard{} - // GetNotificationRulesIDLabels request - GetNotificationRulesIDLabelsWithResponse(ctx context.Context, ruleID string, params *GetNotificationRulesIDLabelsParams) (*GetNotificationRulesIDLabelsResponse, error) + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // PostNotificationRuleIDLabels request with any body - PostNotificationRuleIDLabelsWithBodyWithResponse(ctx context.Context, ruleID string, params *PostNotificationRuleIDLabelsParams, contentType string, body io.Reader) (*PostNotificationRuleIDLabelsResponse, error) +} - PostNotificationRuleIDLabelsWithResponse(ctx context.Context, ruleID string, params *PostNotificationRuleIDLabelsParams, body PostNotificationRuleIDLabelsJSONRequestBody) (*PostNotificationRuleIDLabelsResponse, error) +// DeleteDashboardsIDCellsID calls the DELETE on /dashboards/{dashboardID}/cells/{cellID} +// Delete a dashboard cell +func (c *Client) DeleteDashboardsIDCellsID(ctx context.Context, params *DeleteDashboardsIDCellsIDAllParams) error { + var err error - // DeleteNotificationRulesIDLabelsID request - DeleteNotificationRulesIDLabelsIDWithResponse(ctx context.Context, ruleID string, labelID string, params *DeleteNotificationRulesIDLabelsIDParams) (*DeleteNotificationRulesIDLabelsIDResponse, error) + var pathParam0 string - // GetNotificationRulesIDQuery request - GetNotificationRulesIDQueryWithResponse(ctx context.Context, ruleID string, params *GetNotificationRulesIDQueryParams) (*GetNotificationRulesIDQueryResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return err + } - // GetOrgs request - GetOrgsWithResponse(ctx context.Context, params *GetOrgsParams) (*GetOrgsResponse, error) + var pathParam1 string - // PostOrgs request with any body - PostOrgsWithBodyWithResponse(ctx context.Context, params *PostOrgsParams, contentType string, body io.Reader) (*PostOrgsResponse, error) + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "cellID", runtime.ParamLocationPath, params.CellID) + if err != nil { + return err + } - PostOrgsWithResponse(ctx context.Context, params *PostOrgsParams, body PostOrgsJSONRequestBody) (*PostOrgsResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err + } - // DeleteOrgsID request - DeleteOrgsIDWithResponse(ctx context.Context, orgID string, params *DeleteOrgsIDParams) (*DeleteOrgsIDResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/cells/%s", pathParam0, pathParam1) - // GetOrgsID request - GetOrgsIDWithResponse(ctx context.Context, orgID string, params *GetOrgsIDParams) (*GetOrgsIDResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err + } - // PatchOrgsID request with any body - PatchOrgsIDWithBodyWithResponse(ctx context.Context, orgID string, params *PatchOrgsIDParams, contentType string, body io.Reader) (*PatchOrgsIDResponse, error) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err + } - PatchOrgsIDWithResponse(ctx context.Context, orgID string, params *PatchOrgsIDParams, body PatchOrgsIDJSONRequestBody) (*PatchOrgsIDResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // GetOrgsIDMembers request - GetOrgsIDMembersWithResponse(ctx context.Context, orgID string, params *GetOrgsIDMembersParams) (*GetOrgsIDMembersResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } - // PostOrgsIDMembers request with any body - PostOrgsIDMembersWithBodyWithResponse(ctx context.Context, orgID string, params *PostOrgsIDMembersParams, contentType string, body io.Reader) (*PostOrgsIDMembersResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - PostOrgsIDMembersWithResponse(ctx context.Context, orgID string, params *PostOrgsIDMembersParams, body PostOrgsIDMembersJSONRequestBody) (*PostOrgsIDMembersResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } - // DeleteOrgsIDMembersID request - DeleteOrgsIDMembersIDWithResponse(ctx context.Context, orgID string, userID string, params *DeleteOrgsIDMembersIDParams) (*DeleteOrgsIDMembersIDResponse, error) + defer func() { _ = rsp.Body.Close() }() - // GetOrgsIDOwners request - GetOrgsIDOwnersWithResponse(ctx context.Context, orgID string, params *GetOrgsIDOwnersParams) (*GetOrgsIDOwnersResponse, error) + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil - // PostOrgsIDOwners request with any body - PostOrgsIDOwnersWithBodyWithResponse(ctx context.Context, orgID string, params *PostOrgsIDOwnersParams, contentType string, body io.Reader) (*PostOrgsIDOwnersResponse, error) +} - PostOrgsIDOwnersWithResponse(ctx context.Context, orgID string, params *PostOrgsIDOwnersParams, body PostOrgsIDOwnersJSONRequestBody) (*PostOrgsIDOwnersResponse, error) +// PatchDashboardsIDCellsID calls the PATCH on /dashboards/{dashboardID}/cells/{cellID} +// Update the non-positional information related to a cell +func (c *Client) PatchDashboardsIDCellsID(ctx context.Context, params *PatchDashboardsIDCellsIDAllParams) (*Cell, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) - // DeleteOrgsIDOwnersID request - DeleteOrgsIDOwnersIDWithResponse(ctx context.Context, orgID string, userID string, params *DeleteOrgsIDOwnersIDParams) (*DeleteOrgsIDOwnersIDResponse, error) + var pathParam0 string - // GetOrgsIDSecrets request - GetOrgsIDSecretsWithResponse(ctx context.Context, orgID string, params *GetOrgsIDSecretsParams) (*GetOrgsIDSecretsResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - // PatchOrgsIDSecrets request with any body - PatchOrgsIDSecretsWithBodyWithResponse(ctx context.Context, orgID string, params *PatchOrgsIDSecretsParams, contentType string, body io.Reader) (*PatchOrgsIDSecretsResponse, error) + var pathParam1 string - PatchOrgsIDSecretsWithResponse(ctx context.Context, orgID string, params *PatchOrgsIDSecretsParams, body PatchOrgsIDSecretsJSONRequestBody) (*PatchOrgsIDSecretsResponse, error) + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "cellID", runtime.ParamLocationPath, params.CellID) + if err != nil { + return nil, err + } - // PostOrgsIDSecrets request with any body - PostOrgsIDSecretsWithBodyWithResponse(ctx context.Context, orgID string, params *PostOrgsIDSecretsParams, contentType string, body io.Reader) (*PostOrgsIDSecretsResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - PostOrgsIDSecretsWithResponse(ctx context.Context, orgID string, params *PostOrgsIDSecretsParams, body PostOrgsIDSecretsJSONRequestBody) (*PostOrgsIDSecretsResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/cells/%s", pathParam0, pathParam1) - // DeleteOrgsIDSecretsID request - DeleteOrgsIDSecretsIDWithResponse(ctx context.Context, orgID string, secretID string, params *DeleteOrgsIDSecretsIDParams) (*DeleteOrgsIDSecretsIDResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // GetPing request - GetPingWithResponse(ctx context.Context) (*GetPingResponse, error) + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } - // HeadPing request - HeadPingWithResponse(ctx context.Context) (*HeadPingResponse, error) + req.Header.Add("Content-Type", "application/json") - // PostQuery request with any body - PostQueryWithBodyWithResponse(ctx context.Context, params *PostQueryParams, contentType string, body io.Reader) (*PostQueryResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - PostQueryWithResponse(ctx context.Context, params *PostQueryParams, body PostQueryJSONRequestBody) (*PostQueryResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - // PostQueryAnalyze request with any body - PostQueryAnalyzeWithBodyWithResponse(ctx context.Context, params *PostQueryAnalyzeParams, contentType string, body io.Reader) (*PostQueryAnalyzeResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - PostQueryAnalyzeWithResponse(ctx context.Context, params *PostQueryAnalyzeParams, body PostQueryAnalyzeJSONRequestBody) (*PostQueryAnalyzeResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // PostQueryAst request with any body - PostQueryAstWithBodyWithResponse(ctx context.Context, params *PostQueryAstParams, contentType string, body io.Reader) (*PostQueryAstResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - PostQueryAstWithResponse(ctx context.Context, params *PostQueryAstParams, body PostQueryAstJSONRequestBody) (*PostQueryAstResponse, error) + response := &Cell{} - // GetQuerySuggestions request - GetQuerySuggestionsWithResponse(ctx context.Context, params *GetQuerySuggestionsParams) (*GetQuerySuggestionsResponse, error) + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // GetQuerySuggestionsName request - GetQuerySuggestionsNameWithResponse(ctx context.Context, name string, params *GetQuerySuggestionsNameParams) (*GetQuerySuggestionsNameResponse, error) +} - // GetReady request - GetReadyWithResponse(ctx context.Context, params *GetReadyParams) (*GetReadyResponse, error) +// GetDashboardsIDCellsIDView calls the GET on /dashboards/{dashboardID}/cells/{cellID}/view +// Retrieve the view for a cell +func (c *Client) GetDashboardsIDCellsIDView(ctx context.Context, params *GetDashboardsIDCellsIDViewAllParams) (*View, error) { + var err error - // GetRemoteConnections request - GetRemoteConnectionsWithResponse(ctx context.Context, params *GetRemoteConnectionsParams) (*GetRemoteConnectionsResponse, error) + var pathParam0 string - // PostRemoteConnection request with any body - PostRemoteConnectionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*PostRemoteConnectionResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - PostRemoteConnectionWithResponse(ctx context.Context, body PostRemoteConnectionJSONRequestBody) (*PostRemoteConnectionResponse, error) + var pathParam1 string - // DeleteRemoteConnectionByID request - DeleteRemoteConnectionByIDWithResponse(ctx context.Context, remoteID string, params *DeleteRemoteConnectionByIDParams) (*DeleteRemoteConnectionByIDResponse, error) + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "cellID", runtime.ParamLocationPath, params.CellID) + if err != nil { + return nil, err + } - // GetRemoteConnectionByID request - GetRemoteConnectionByIDWithResponse(ctx context.Context, remoteID string, params *GetRemoteConnectionByIDParams) (*GetRemoteConnectionByIDResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // PatchRemoteConnectionByID request with any body - PatchRemoteConnectionByIDWithBodyWithResponse(ctx context.Context, remoteID string, params *PatchRemoteConnectionByIDParams, contentType string, body io.Reader) (*PatchRemoteConnectionByIDResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/cells/%s/view", pathParam0, pathParam1) - PatchRemoteConnectionByIDWithResponse(ctx context.Context, remoteID string, params *PatchRemoteConnectionByIDParams, body PatchRemoteConnectionByIDJSONRequestBody) (*PatchRemoteConnectionByIDResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // GetReplications request - GetReplicationsWithResponse(ctx context.Context, params *GetReplicationsParams) (*GetReplicationsResponse, error) + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - // PostReplication request with any body - PostReplicationWithBodyWithResponse(ctx context.Context, params *PostReplicationParams, contentType string, body io.Reader) (*PostReplicationResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - PostReplicationWithResponse(ctx context.Context, params *PostReplicationParams, body PostReplicationJSONRequestBody) (*PostReplicationResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - // DeleteReplicationByID request - DeleteReplicationByIDWithResponse(ctx context.Context, replicationID string, params *DeleteReplicationByIDParams) (*DeleteReplicationByIDResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // GetReplicationByID request - GetReplicationByIDWithResponse(ctx context.Context, replicationID string, params *GetReplicationByIDParams) (*GetReplicationByIDResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // PatchReplicationByID request with any body - PatchReplicationByIDWithBodyWithResponse(ctx context.Context, replicationID string, params *PatchReplicationByIDParams, contentType string, body io.Reader) (*PatchReplicationByIDResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - PatchReplicationByIDWithResponse(ctx context.Context, replicationID string, params *PatchReplicationByIDParams, body PatchReplicationByIDJSONRequestBody) (*PatchReplicationByIDResponse, error) + response := &View{} - // PostValidateReplicationByID request - PostValidateReplicationByIDWithResponse(ctx context.Context, replicationID string, params *PostValidateReplicationByIDParams) (*PostValidateReplicationByIDResponse, error) + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // GetResources request - GetResourcesWithResponse(ctx context.Context, params *GetResourcesParams) (*GetResourcesResponse, error) +} - // PostRestoreBucketID request with any body - PostRestoreBucketIDWithBodyWithResponse(ctx context.Context, bucketID string, params *PostRestoreBucketIDParams, contentType string, body io.Reader) (*PostRestoreBucketIDResponse, error) +// PatchDashboardsIDCellsIDView calls the PATCH on /dashboards/{dashboardID}/cells/{cellID}/view +// Update the view for a cell +func (c *Client) PatchDashboardsIDCellsIDView(ctx context.Context, params *PatchDashboardsIDCellsIDViewAllParams) (*View, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) - // PostRestoreBucketMetadata request with any body - PostRestoreBucketMetadataWithBodyWithResponse(ctx context.Context, params *PostRestoreBucketMetadataParams, contentType string, body io.Reader) (*PostRestoreBucketMetadataResponse, error) + var pathParam0 string - PostRestoreBucketMetadataWithResponse(ctx context.Context, params *PostRestoreBucketMetadataParams, body PostRestoreBucketMetadataJSONRequestBody) (*PostRestoreBucketMetadataResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - // PostRestoreKV request with any body - PostRestoreKVWithBodyWithResponse(ctx context.Context, params *PostRestoreKVParams, contentType string, body io.Reader) (*PostRestoreKVResponse, error) + var pathParam1 string - // PostRestoreShardId request with any body - PostRestoreShardIdWithBodyWithResponse(ctx context.Context, shardID string, params *PostRestoreShardIdParams, contentType string, body io.Reader) (*PostRestoreShardIdResponse, error) + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "cellID", runtime.ParamLocationPath, params.CellID) + if err != nil { + return nil, err + } - // PostRestoreSQL request with any body - PostRestoreSQLWithBodyWithResponse(ctx context.Context, params *PostRestoreSQLParams, contentType string, body io.Reader) (*PostRestoreSQLResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // GetScrapers request - GetScrapersWithResponse(ctx context.Context, params *GetScrapersParams) (*GetScrapersResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/cells/%s/view", pathParam0, pathParam1) - // PostScrapers request with any body - PostScrapersWithBodyWithResponse(ctx context.Context, params *PostScrapersParams, contentType string, body io.Reader) (*PostScrapersResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - PostScrapersWithResponse(ctx context.Context, params *PostScrapersParams, body PostScrapersJSONRequestBody) (*PostScrapersResponse, error) + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } - // DeleteScrapersID request - DeleteScrapersIDWithResponse(ctx context.Context, scraperTargetID string, params *DeleteScrapersIDParams) (*DeleteScrapersIDResponse, error) + req.Header.Add("Content-Type", "application/json") - // GetScrapersID request - GetScrapersIDWithResponse(ctx context.Context, scraperTargetID string, params *GetScrapersIDParams) (*GetScrapersIDResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // PatchScrapersID request with any body - PatchScrapersIDWithBodyWithResponse(ctx context.Context, scraperTargetID string, params *PatchScrapersIDParams, contentType string, body io.Reader) (*PatchScrapersIDResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - PatchScrapersIDWithResponse(ctx context.Context, scraperTargetID string, params *PatchScrapersIDParams, body PatchScrapersIDJSONRequestBody) (*PatchScrapersIDResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // GetScrapersIDLabels request - GetScrapersIDLabelsWithResponse(ctx context.Context, scraperTargetID string, params *GetScrapersIDLabelsParams) (*GetScrapersIDLabelsResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // PostScrapersIDLabels request with any body - PostScrapersIDLabelsWithBodyWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDLabelsParams, contentType string, body io.Reader) (*PostScrapersIDLabelsResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - PostScrapersIDLabelsWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDLabelsParams, body PostScrapersIDLabelsJSONRequestBody) (*PostScrapersIDLabelsResponse, error) + response := &View{} - // DeleteScrapersIDLabelsID request - DeleteScrapersIDLabelsIDWithResponse(ctx context.Context, scraperTargetID string, labelID string, params *DeleteScrapersIDLabelsIDParams) (*DeleteScrapersIDLabelsIDResponse, error) + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // GetScrapersIDMembers request - GetScrapersIDMembersWithResponse(ctx context.Context, scraperTargetID string, params *GetScrapersIDMembersParams) (*GetScrapersIDMembersResponse, error) +} - // PostScrapersIDMembers request with any body - PostScrapersIDMembersWithBodyWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDMembersParams, contentType string, body io.Reader) (*PostScrapersIDMembersResponse, error) +// GetDashboardsIDLabels calls the GET on /dashboards/{dashboardID}/labels +// List all labels for a dashboard +func (c *Client) GetDashboardsIDLabels(ctx context.Context, params *GetDashboardsIDLabelsAllParams) (*LabelsResponse, error) { + var err error - PostScrapersIDMembersWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDMembersParams, body PostScrapersIDMembersJSONRequestBody) (*PostScrapersIDMembersResponse, error) + var pathParam0 string - // DeleteScrapersIDMembersID request - DeleteScrapersIDMembersIDWithResponse(ctx context.Context, scraperTargetID string, userID string, params *DeleteScrapersIDMembersIDParams) (*DeleteScrapersIDMembersIDResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - // GetScrapersIDOwners request - GetScrapersIDOwnersWithResponse(ctx context.Context, scraperTargetID string, params *GetScrapersIDOwnersParams) (*GetScrapersIDOwnersResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // PostScrapersIDOwners request with any body - PostScrapersIDOwnersWithBodyWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDOwnersParams, contentType string, body io.Reader) (*PostScrapersIDOwnersResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/labels", pathParam0) - PostScrapersIDOwnersWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDOwnersParams, body PostScrapersIDOwnersJSONRequestBody) (*PostScrapersIDOwnersResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // DeleteScrapersIDOwnersID request - DeleteScrapersIDOwnersIDWithResponse(ctx context.Context, scraperTargetID string, userID string, params *DeleteScrapersIDOwnersIDParams) (*DeleteScrapersIDOwnersIDResponse, error) + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - // GetSetup request - GetSetupWithResponse(ctx context.Context, params *GetSetupParams) (*GetSetupResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // PostSetup request with any body - PostSetupWithBodyWithResponse(ctx context.Context, params *PostSetupParams, contentType string, body io.Reader) (*PostSetupResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - PostSetupWithResponse(ctx context.Context, params *PostSetupParams, body PostSetupJSONRequestBody) (*PostSetupResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // PostSignin request - PostSigninWithResponse(ctx context.Context, params *PostSigninParams) (*PostSigninResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // PostSignout request - PostSignoutWithResponse(ctx context.Context, params *PostSignoutParams) (*PostSignoutResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - // GetSources request - GetSourcesWithResponse(ctx context.Context, params *GetSourcesParams) (*GetSourcesResponse, error) + response := &LabelsResponse{} - // PostSources request with any body - PostSourcesWithBodyWithResponse(ctx context.Context, params *PostSourcesParams, contentType string, body io.Reader) (*PostSourcesResponse, error) + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - PostSourcesWithResponse(ctx context.Context, params *PostSourcesParams, body PostSourcesJSONRequestBody) (*PostSourcesResponse, error) +} - // DeleteSourcesID request - DeleteSourcesIDWithResponse(ctx context.Context, sourceID string, params *DeleteSourcesIDParams) (*DeleteSourcesIDResponse, error) +// PostDashboardsIDLabels calls the POST on /dashboards/{dashboardID}/labels +// Add a label to a dashboard +func (c *Client) PostDashboardsIDLabels(ctx context.Context, params *PostDashboardsIDLabelsAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) - // GetSourcesID request - GetSourcesIDWithResponse(ctx context.Context, sourceID string, params *GetSourcesIDParams) (*GetSourcesIDResponse, error) + var pathParam0 string - // PatchSourcesID request with any body - PatchSourcesIDWithBodyWithResponse(ctx context.Context, sourceID string, params *PatchSourcesIDParams, contentType string, body io.Reader) (*PatchSourcesIDResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - PatchSourcesIDWithResponse(ctx context.Context, sourceID string, params *PatchSourcesIDParams, body PatchSourcesIDJSONRequestBody) (*PatchSourcesIDResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // GetSourcesIDBuckets request - GetSourcesIDBucketsWithResponse(ctx context.Context, sourceID string, params *GetSourcesIDBucketsParams) (*GetSourcesIDBucketsResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/labels", pathParam0) - // GetSourcesIDHealth request - GetSourcesIDHealthWithResponse(ctx context.Context, sourceID string, params *GetSourcesIDHealthParams) (*GetSourcesIDHealthResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // ListStacks request - ListStacksWithResponse(ctx context.Context, params *ListStacksParams) (*ListStacksResponse, error) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } - // CreateStack request with any body - CreateStackWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateStackResponse, error) + req.Header.Add("Content-Type", "application/json") - CreateStackWithResponse(ctx context.Context, body CreateStackJSONRequestBody) (*CreateStackResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // DeleteStack request - DeleteStackWithResponse(ctx context.Context, stackId string, params *DeleteStackParams) (*DeleteStackResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - // ReadStack request - ReadStackWithResponse(ctx context.Context, stackId string) (*ReadStackResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // UpdateStack request with any body - UpdateStackWithBodyWithResponse(ctx context.Context, stackId string, contentType string, body io.Reader) (*UpdateStackResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - UpdateStackWithResponse(ctx context.Context, stackId string, body UpdateStackJSONRequestBody) (*UpdateStackResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - // UninstallStack request - UninstallStackWithResponse(ctx context.Context, stackId string) (*UninstallStackResponse, error) + response := &LabelResponse{} - // GetTasks request - GetTasksWithResponse(ctx context.Context, params *GetTasksParams) (*GetTasksResponse, error) + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // PostTasks request with any body - PostTasksWithBodyWithResponse(ctx context.Context, params *PostTasksParams, contentType string, body io.Reader) (*PostTasksResponse, error) +} - PostTasksWithResponse(ctx context.Context, params *PostTasksParams, body PostTasksJSONRequestBody) (*PostTasksResponse, error) +// DeleteDashboardsIDLabelsID calls the DELETE on /dashboards/{dashboardID}/labels/{labelID} +// Delete a label from a dashboard +func (c *Client) DeleteDashboardsIDLabelsID(ctx context.Context, params *DeleteDashboardsIDLabelsIDAllParams) error { + var err error - // DeleteTasksID request - DeleteTasksIDWithResponse(ctx context.Context, taskID string, params *DeleteTasksIDParams) (*DeleteTasksIDResponse, error) + var pathParam0 string - // GetTasksID request - GetTasksIDWithResponse(ctx context.Context, taskID string, params *GetTasksIDParams) (*GetTasksIDResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return err + } - // PatchTasksID request with any body - PatchTasksIDWithBodyWithResponse(ctx context.Context, taskID string, params *PatchTasksIDParams, contentType string, body io.Reader) (*PatchTasksIDResponse, error) + var pathParam1 string - PatchTasksIDWithResponse(ctx context.Context, taskID string, params *PatchTasksIDParams, body PatchTasksIDJSONRequestBody) (*PatchTasksIDResponse, error) + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return err + } - // GetTasksIDLabels request - GetTasksIDLabelsWithResponse(ctx context.Context, taskID string, params *GetTasksIDLabelsParams) (*GetTasksIDLabelsResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err + } - // PostTasksIDLabels request with any body - PostTasksIDLabelsWithBodyWithResponse(ctx context.Context, taskID string, params *PostTasksIDLabelsParams, contentType string, body io.Reader) (*PostTasksIDLabelsResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/labels/%s", pathParam0, pathParam1) - PostTasksIDLabelsWithResponse(ctx context.Context, taskID string, params *PostTasksIDLabelsParams, body PostTasksIDLabelsJSONRequestBody) (*PostTasksIDLabelsResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err + } - // DeleteTasksIDLabelsID request - DeleteTasksIDLabelsIDWithResponse(ctx context.Context, taskID string, labelID string, params *DeleteTasksIDLabelsIDParams) (*DeleteTasksIDLabelsIDResponse, error) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err + } - // GetTasksIDLogs request - GetTasksIDLogsWithResponse(ctx context.Context, taskID string, params *GetTasksIDLogsParams) (*GetTasksIDLogsResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // GetTasksIDMembers request - GetTasksIDMembersWithResponse(ctx context.Context, taskID string, params *GetTasksIDMembersParams) (*GetTasksIDMembersResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } - // PostTasksIDMembers request with any body - PostTasksIDMembersWithBodyWithResponse(ctx context.Context, taskID string, params *PostTasksIDMembersParams, contentType string, body io.Reader) (*PostTasksIDMembersResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - PostTasksIDMembersWithResponse(ctx context.Context, taskID string, params *PostTasksIDMembersParams, body PostTasksIDMembersJSONRequestBody) (*PostTasksIDMembersResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } - // DeleteTasksIDMembersID request - DeleteTasksIDMembersIDWithResponse(ctx context.Context, taskID string, userID string, params *DeleteTasksIDMembersIDParams) (*DeleteTasksIDMembersIDResponse, error) + defer func() { _ = rsp.Body.Close() }() - // GetTasksIDOwners request - GetTasksIDOwnersWithResponse(ctx context.Context, taskID string, params *GetTasksIDOwnersParams) (*GetTasksIDOwnersResponse, error) + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil - // PostTasksIDOwners request with any body - PostTasksIDOwnersWithBodyWithResponse(ctx context.Context, taskID string, params *PostTasksIDOwnersParams, contentType string, body io.Reader) (*PostTasksIDOwnersResponse, error) +} - PostTasksIDOwnersWithResponse(ctx context.Context, taskID string, params *PostTasksIDOwnersParams, body PostTasksIDOwnersJSONRequestBody) (*PostTasksIDOwnersResponse, error) +// GetDashboardsIDMembers calls the GET on /dashboards/{dashboardID}/members +// List all dashboard members +func (c *Client) GetDashboardsIDMembers(ctx context.Context, params *GetDashboardsIDMembersAllParams) (*ResourceMembers, error) { + var err error - // DeleteTasksIDOwnersID request - DeleteTasksIDOwnersIDWithResponse(ctx context.Context, taskID string, userID string, params *DeleteTasksIDOwnersIDParams) (*DeleteTasksIDOwnersIDResponse, error) + var pathParam0 string - // GetTasksIDRuns request - GetTasksIDRunsWithResponse(ctx context.Context, taskID string, params *GetTasksIDRunsParams) (*GetTasksIDRunsResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - // PostTasksIDRuns request with any body - PostTasksIDRunsWithBodyWithResponse(ctx context.Context, taskID string, params *PostTasksIDRunsParams, contentType string, body io.Reader) (*PostTasksIDRunsResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - PostTasksIDRunsWithResponse(ctx context.Context, taskID string, params *PostTasksIDRunsParams, body PostTasksIDRunsJSONRequestBody) (*PostTasksIDRunsResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/members", pathParam0) - // DeleteTasksIDRunsID request - DeleteTasksIDRunsIDWithResponse(ctx context.Context, taskID string, runID string, params *DeleteTasksIDRunsIDParams) (*DeleteTasksIDRunsIDResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // GetTasksIDRunsID request - GetTasksIDRunsIDWithResponse(ctx context.Context, taskID string, runID string, params *GetTasksIDRunsIDParams) (*GetTasksIDRunsIDResponse, error) + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - // GetTasksIDRunsIDLogs request - GetTasksIDRunsIDLogsWithResponse(ctx context.Context, taskID string, runID string, params *GetTasksIDRunsIDLogsParams) (*GetTasksIDRunsIDLogsResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // PostTasksIDRunsIDRetry request with any body - PostTasksIDRunsIDRetryWithBodyWithResponse(ctx context.Context, taskID string, runID string, params *PostTasksIDRunsIDRetryParams, contentType string, body io.Reader) (*PostTasksIDRunsIDRetryResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - // GetTelegrafPlugins request - GetTelegrafPluginsWithResponse(ctx context.Context, params *GetTelegrafPluginsParams) (*GetTelegrafPluginsResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // GetTelegrafs request - GetTelegrafsWithResponse(ctx context.Context, params *GetTelegrafsParams) (*GetTelegrafsResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - // PostTelegrafs request with any body - PostTelegrafsWithBodyWithResponse(ctx context.Context, params *PostTelegrafsParams, contentType string, body io.Reader) (*PostTelegrafsResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - PostTelegrafsWithResponse(ctx context.Context, params *PostTelegrafsParams, body PostTelegrafsJSONRequestBody) (*PostTelegrafsResponse, error) + response := &ResourceMembers{} - // DeleteTelegrafsID request - DeleteTelegrafsIDWithResponse(ctx context.Context, telegrafID string, params *DeleteTelegrafsIDParams) (*DeleteTelegrafsIDResponse, error) + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - // GetTelegrafsID request - GetTelegrafsIDWithResponse(ctx context.Context, telegrafID string, params *GetTelegrafsIDParams) (*GetTelegrafsIDResponse, error) +} - // PutTelegrafsID request with any body - PutTelegrafsIDWithBodyWithResponse(ctx context.Context, telegrafID string, params *PutTelegrafsIDParams, contentType string, body io.Reader) (*PutTelegrafsIDResponse, error) +// PostDashboardsIDMembers calls the POST on /dashboards/{dashboardID}/members +// Add a member to a dashboard +func (c *Client) PostDashboardsIDMembers(ctx context.Context, params *PostDashboardsIDMembersAllParams) (*ResourceMember, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) - PutTelegrafsIDWithResponse(ctx context.Context, telegrafID string, params *PutTelegrafsIDParams, body PutTelegrafsIDJSONRequestBody) (*PutTelegrafsIDResponse, error) + var pathParam0 string - // GetTelegrafsIDLabels request - GetTelegrafsIDLabelsWithResponse(ctx context.Context, telegrafID string, params *GetTelegrafsIDLabelsParams) (*GetTelegrafsIDLabelsResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - // PostTelegrafsIDLabels request with any body - PostTelegrafsIDLabelsWithBodyWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDLabelsParams, contentType string, body io.Reader) (*PostTelegrafsIDLabelsResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - PostTelegrafsIDLabelsWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDLabelsParams, body PostTelegrafsIDLabelsJSONRequestBody) (*PostTelegrafsIDLabelsResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/members", pathParam0) - // DeleteTelegrafsIDLabelsID request - DeleteTelegrafsIDLabelsIDWithResponse(ctx context.Context, telegrafID string, labelID string, params *DeleteTelegrafsIDLabelsIDParams) (*DeleteTelegrafsIDLabelsIDResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // GetTelegrafsIDMembers request - GetTelegrafsIDMembersWithResponse(ctx context.Context, telegrafID string, params *GetTelegrafsIDMembersParams) (*GetTelegrafsIDMembersResponse, error) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err + } - // PostTelegrafsIDMembers request with any body - PostTelegrafsIDMembersWithBodyWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDMembersParams, contentType string, body io.Reader) (*PostTelegrafsIDMembersResponse, error) + req.Header.Add("Content-Type", "application/json") - PostTelegrafsIDMembersWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDMembersParams, body PostTelegrafsIDMembersJSONRequestBody) (*PostTelegrafsIDMembersResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // DeleteTelegrafsIDMembersID request - DeleteTelegrafsIDMembersIDWithResponse(ctx context.Context, telegrafID string, userID string, params *DeleteTelegrafsIDMembersIDParams) (*DeleteTelegrafsIDMembersIDResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } - // GetTelegrafsIDOwners request - GetTelegrafsIDOwnersWithResponse(ctx context.Context, telegrafID string, params *GetTelegrafsIDOwnersParams) (*GetTelegrafsIDOwnersResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // PostTelegrafsIDOwners request with any body - PostTelegrafsIDOwnersWithBodyWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDOwnersParams, contentType string, body io.Reader) (*PostTelegrafsIDOwnersResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) - PostTelegrafsIDOwnersWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDOwnersParams, body PostTelegrafsIDOwnersJSONRequestBody) (*PostTelegrafsIDOwnersResponse, error) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - // DeleteTelegrafsIDOwnersID request - DeleteTelegrafsIDOwnersIDWithResponse(ctx context.Context, telegrafID string, userID string, params *DeleteTelegrafsIDOwnersIDParams) (*DeleteTelegrafsIDOwnersIDResponse, error) + response := &ResourceMember{} - // ApplyTemplate request with any body - ApplyTemplateWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*ApplyTemplateResponse, error) + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil - ApplyTemplateWithResponse(ctx context.Context, body ApplyTemplateJSONRequestBody) (*ApplyTemplateResponse, error) +} - // ExportTemplate request with any body - ExportTemplateWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*ExportTemplateResponse, error) +// DeleteDashboardsIDMembersID calls the DELETE on /dashboards/{dashboardID}/members/{userID} +// Remove a member from a dashboard +func (c *Client) DeleteDashboardsIDMembersID(ctx context.Context, params *DeleteDashboardsIDMembersIDAllParams) error { + var err error - ExportTemplateWithResponse(ctx context.Context, body ExportTemplateJSONRequestBody) (*ExportTemplateResponse, error) + var pathParam0 string - // GetUsers request - GetUsersWithResponse(ctx context.Context, params *GetUsersParams) (*GetUsersResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return err + } - // PostUsers request with any body - PostUsersWithBodyWithResponse(ctx context.Context, params *PostUsersParams, contentType string, body io.Reader) (*PostUsersResponse, error) + var pathParam1 string - PostUsersWithResponse(ctx context.Context, params *PostUsersParams, body PostUsersJSONRequestBody) (*PostUsersResponse, error) + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) + if err != nil { + return err + } - // DeleteUsersID request - DeleteUsersIDWithResponse(ctx context.Context, userID string, params *DeleteUsersIDParams) (*DeleteUsersIDResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err + } - // GetUsersID request - GetUsersIDWithResponse(ctx context.Context, userID string, params *GetUsersIDParams) (*GetUsersIDResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/members/%s", pathParam0, pathParam1) - // PatchUsersID request with any body - PatchUsersIDWithBodyWithResponse(ctx context.Context, userID string, params *PatchUsersIDParams, contentType string, body io.Reader) (*PatchUsersIDResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err + } - PatchUsersIDWithResponse(ctx context.Context, userID string, params *PatchUsersIDParams, body PatchUsersIDJSONRequestBody) (*PatchUsersIDResponse, error) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err + } - // PostUsersIDPassword request with any body - PostUsersIDPasswordWithBodyWithResponse(ctx context.Context, userID string, params *PostUsersIDPasswordParams, contentType string, body io.Reader) (*PostUsersIDPasswordResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - PostUsersIDPasswordWithResponse(ctx context.Context, userID string, params *PostUsersIDPasswordParams, body PostUsersIDPasswordJSONRequestBody) (*PostUsersIDPasswordResponse, error) + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } - // GetVariables request - GetVariablesWithResponse(ctx context.Context, params *GetVariablesParams) (*GetVariablesResponse, error) + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // PostVariables request with any body - PostVariablesWithBodyWithResponse(ctx context.Context, params *PostVariablesParams, contentType string, body io.Reader) (*PostVariablesResponse, error) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } - PostVariablesWithResponse(ctx context.Context, params *PostVariablesParams, body PostVariablesJSONRequestBody) (*PostVariablesResponse, error) + defer func() { _ = rsp.Body.Close() }() - // DeleteVariablesID request - DeleteVariablesIDWithResponse(ctx context.Context, variableID string, params *DeleteVariablesIDParams) (*DeleteVariablesIDResponse, error) + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) + } + return nil - // GetVariablesID request - GetVariablesIDWithResponse(ctx context.Context, variableID string, params *GetVariablesIDParams) (*GetVariablesIDResponse, error) +} - // PatchVariablesID request with any body - PatchVariablesIDWithBodyWithResponse(ctx context.Context, variableID string, params *PatchVariablesIDParams, contentType string, body io.Reader) (*PatchVariablesIDResponse, error) +// GetDashboardsIDOwners calls the GET on /dashboards/{dashboardID}/owners +// List all dashboard owners +func (c *Client) GetDashboardsIDOwners(ctx context.Context, params *GetDashboardsIDOwnersAllParams) (*ResourceOwners, error) { + var err error - PatchVariablesIDWithResponse(ctx context.Context, variableID string, params *PatchVariablesIDParams, body PatchVariablesIDJSONRequestBody) (*PatchVariablesIDResponse, error) + var pathParam0 string - // PutVariablesID request with any body - PutVariablesIDWithBodyWithResponse(ctx context.Context, variableID string, params *PutVariablesIDParams, contentType string, body io.Reader) (*PutVariablesIDResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err + } - PutVariablesIDWithResponse(ctx context.Context, variableID string, params *PutVariablesIDParams, body PutVariablesIDJSONRequestBody) (*PutVariablesIDResponse, error) + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - // GetVariablesIDLabels request - GetVariablesIDLabelsWithResponse(ctx context.Context, variableID string, params *GetVariablesIDLabelsParams) (*GetVariablesIDLabelsResponse, error) + operationPath := fmt.Sprintf("./dashboards/%s/owners", pathParam0) - // PostVariablesIDLabels request with any body - PostVariablesIDLabelsWithBodyWithResponse(ctx context.Context, variableID string, params *PostVariablesIDLabelsParams, contentType string, body io.Reader) (*PostVariablesIDLabelsResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - PostVariablesIDLabelsWithResponse(ctx context.Context, variableID string, params *PostVariablesIDLabelsParams, body PostVariablesIDLabelsJSONRequestBody) (*PostVariablesIDLabelsResponse, error) + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - // DeleteVariablesIDLabelsID request - DeleteVariablesIDLabelsIDWithResponse(ctx context.Context, variableID string, labelID string, params *DeleteVariablesIDLabelsIDParams) (*DeleteVariablesIDLabelsIDResponse, error) + if params.ZapTraceSpan != nil { + var headerParam0 string - // PostWrite request with any body - PostWriteWithBodyWithResponse(ctx context.Context, params *PostWriteParams, contentType string, body io.Reader) (*PostWriteResponse, error) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -type GetRoutesResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Routes -} + req.Header.Set("Zap-Trace-Span", headerParam0) + } -// Status returns HTTPResponse.Status -func (r GetRoutesResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r GetRoutesResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type GetAuthorizationsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Authorizations - JSONDefault *Error -} + response := &ResourceOwners{} -// Status returns HTTPResponse.Status -func (r GetAuthorizationsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) + return response, nil + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetAuthorizationsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// PostDashboardsIDOwners calls the POST on /dashboards/{dashboardID}/owners +// Add an owner to a dashboard +func (c *Client) PostDashboardsIDOwners(ctx context.Context, params *PostDashboardsIDOwnersAllParams) (*ResourceOwner, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return 0 -} + bodyReader = bytes.NewReader(buf) -type PostAuthorizationsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Authorization - JSON400 *Error - JSONDefault *Error -} + var pathParam0 string -// Status returns HTTPResponse.Status -func (r PostAuthorizationsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostAuthorizationsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type DeleteAuthorizationsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + operationPath := fmt.Sprintf("./dashboards/%s/owners", pathParam0) -// Status returns HTTPResponse.Status -func (r DeleteAuthorizationsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteAuthorizationsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type GetAuthorizationsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Authorization - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r GetAuthorizationsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r GetAuthorizationsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -type PatchAuthorizationsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Authorization - JSONDefault *Error -} + req.Header.Set("Zap-Trace-Span", headerParam0) + } -// Status returns HTTPResponse.Status -func (r PatchAuthorizationsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r PatchAuthorizationsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type GetBackupKVResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + response := &ResourceOwner{} -// Status returns HTTPResponse.Status -func (r GetBackupKVResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r GetBackupKVResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type GetBackupMetadataResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} +// DeleteDashboardsIDOwnersID calls the DELETE on /dashboards/{dashboardID}/owners/{userID} +// Remove an owner from a dashboard +func (c *Client) DeleteDashboardsIDOwnersID(ctx context.Context, params *DeleteDashboardsIDOwnersIDAllParams) error { + var err error -// Status returns HTTPResponse.Status -func (r GetBackupMetadataResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + var pathParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r GetBackupMetadataResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dashboardID", runtime.ParamLocationPath, params.DashboardID) + if err != nil { + return err } - return 0 -} -type GetBackupShardIdResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + var pathParam1 string -// Status returns HTTPResponse.Status -func (r GetBackupShardIdResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetBackupShardIdResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return 0 -} -type GetBucketsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Buckets - JSONDefault *Error -} + operationPath := fmt.Sprintf("./dashboards/%s/owners/%s", pathParam0, pathParam1) -// Status returns HTTPResponse.Status -func (r GetBucketsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetBucketsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - return 0 -} -type PostBucketsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Bucket - JSON422 *Error - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } -// Status returns HTTPResponse.Status -func (r PostBucketsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostBucketsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - return 0 -} -type DeleteBucketsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + defer func() { _ = rsp.Body.Close() }() -// Status returns HTTPResponse.Status -func (r DeleteBucketsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return nil -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteBucketsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type GetBucketsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Bucket - JSONDefault *Error -} +// GetDBRPs calls the GET on /dbrps +// List database retention policy mappings +func (c *Client) GetDBRPs(ctx context.Context, params *GetDBRPsParams) (*DBRPs, error) { + var err error -// Status returns HTTPResponse.Status -func (r GetBucketsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetBucketsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + operationPath := fmt.Sprintf("./dbrps") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return 0 -} -type PatchBucketsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Bucket - JSONDefault *Error -} + queryValues := queryURL.Query() -// Status returns HTTPResponse.Status -func (r PatchBucketsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.OrgID != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r PatchBucketsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type GetBucketsIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelsResponse - JSONDefault *Error -} + if params.Org != nil { -// Status returns HTTPResponse.Status -func (r GetBucketsIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetBucketsIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type PostBucketsIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *LabelResponse - JSONDefault *Error -} + if params.Id != nil { -// Status returns HTTPResponse.Status -func (r PostBucketsIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "id", runtime.ParamLocationQuery, *params.Id); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostBucketsIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type DeleteBucketsIDLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + if params.BucketID != nil { -// Status returns HTTPResponse.Status -func (r DeleteBucketsIDLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "bucketID", runtime.ParamLocationQuery, *params.BucketID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteBucketsIDLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type GetBucketsIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceMembers - JSONDefault *Error -} + if params.Default != nil { -// Status returns HTTPResponse.Status -func (r GetBucketsIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "default", runtime.ParamLocationQuery, *params.Default); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetBucketsIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type PostBucketsIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceMember - JSONDefault *Error -} + if params.Db != nil { -// Status returns HTTPResponse.Status -func (r PostBucketsIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "db", runtime.ParamLocationQuery, *params.Db); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostBucketsIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type DeleteBucketsIDMembersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + if params.Rp != nil { -// Status returns HTTPResponse.Status -func (r DeleteBucketsIDMembersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "rp", runtime.ParamLocationQuery, *params.Rp); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteBucketsIDMembersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type GetBucketsIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceOwners - JSONDefault *Error -} + queryURL.RawQuery = queryValues.Encode() -// Status returns HTTPResponse.Status -func (r GetBucketsIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetBucketsIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + if params.ZapTraceSpan != nil { + var headerParam0 string -type PostBucketsIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceOwner - JSONDefault *Error -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// Status returns HTTPResponse.Status -func (r PostBucketsIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostBucketsIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return 0 -} - -type DeleteBucketsIDOwnersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + bodyBytes, err := io.ReadAll(rsp.Body) -// Status returns HTTPResponse.Status -func (r DeleteBucketsIDOwnersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteBucketsIDOwnersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + response := &DBRPs{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return 0 -} + return response, nil -type GetChecksResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Checks - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r GetChecksResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// PostDBRP calls the POST on /dbrps +// Add a database retention policy mapping +func (c *Client) PostDBRP(ctx context.Context, params *PostDBRPAllParams) (*DBRP, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyReader = bytes.NewReader(buf) -// StatusCode returns HTTPResponse.StatusCode -func (r GetChecksResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type CreateCheckResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Check - JSONDefault *Error -} + operationPath := fmt.Sprintf("./dbrps") -// Status returns HTTPResponse.Status -func (r CreateCheckResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r CreateCheckResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type DeleteChecksIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r DeleteChecksIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteChecksIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -type GetChecksIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Check - JSONDefault *Error -} + req.Header.Set("Zap-Trace-Span", headerParam0) + } -// Status returns HTTPResponse.Status -func (r GetChecksIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r GetChecksIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type PatchChecksIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Check - JSON404 *Error - JSONDefault *Error -} + response := &DBRP{} -// Status returns HTTPResponse.Status -func (r PatchChecksIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r PatchChecksIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type PutChecksIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Check - JSON404 *Error - JSONDefault *Error -} +// DeleteDBRPID calls the DELETE on /dbrps/{dbrpID} +// Delete a database retention policy +func (c *Client) DeleteDBRPID(ctx context.Context, params *DeleteDBRPIDAllParams) error { + var err error -// Status returns HTTPResponse.Status -func (r PutChecksIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dbrpID", runtime.ParamLocationPath, params.DbrpID) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PutChecksIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return 0 -} -type GetChecksIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelsResponse - JSONDefault *Error -} + operationPath := fmt.Sprintf("./dbrps/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r GetChecksIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetChecksIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + queryValues := queryURL.Query() -type PostChecksIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *LabelResponse - JSONDefault *Error -} + if params.OrgID != nil { -// Status returns HTTPResponse.Status -func (r PostChecksIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostChecksIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type DeleteChecksIDLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + if params.Org != nil { -// Status returns HTTPResponse.Status -func (r DeleteChecksIDLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteChecksIDLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type GetChecksIDQueryResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *FluxResponse - JSON400 *Error - JSON404 *Error - JSONDefault *Error -} + queryURL.RawQuery = queryValues.Encode() -// Status returns HTTPResponse.Status -func (r GetChecksIDQueryResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetChecksIDQueryResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + if params.ZapTraceSpan != nil { + var headerParam0 string -type GetConfigResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Config - JSON401 *Error - JSONDefault *Error -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } -// Status returns HTTPResponse.Status -func (r GetConfigResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetConfigResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - return 0 -} -type GetDashboardsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Dashboards - JSONDefault *Error -} + defer func() { _ = rsp.Body.Close() }() -// Status returns HTTPResponse.Status -func (r GetDashboardsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return nil -// StatusCode returns HTTPResponse.StatusCode -func (r GetDashboardsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type PostDashboardsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *interface{} - JSONDefault *Error -} +// GetDBRPsID calls the GET on /dbrps/{dbrpID} +// Retrieve a database retention policy mapping +func (c *Client) GetDBRPsID(ctx context.Context, params *GetDBRPsIDAllParams) (*DBRPGet, error) { + var err error + + var pathParam0 string -// Status returns HTTPResponse.Status -func (r PostDashboardsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dbrpID", runtime.ParamLocationPath, params.DbrpID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostDashboardsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type DeleteDashboardsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + operationPath := fmt.Sprintf("./dbrps/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r DeleteDashboardsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteDashboardsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + queryValues := queryURL.Query() -type GetDashboardsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *interface{} - JSON404 *Error - JSONDefault *Error -} + if params.OrgID != nil { -// Status returns HTTPResponse.Status -func (r GetDashboardsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetDashboardsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type PatchDashboardsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Dashboard - JSON404 *Error - JSONDefault *Error -} + if params.Org != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// Status returns HTTPResponse.Status -func (r PatchDashboardsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PatchDashboardsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type PostDashboardsIDCellsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Cell - JSON404 *Error - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r PostDashboardsIDCellsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostDashboardsIDCellsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} - -type PutDashboardsIDCellsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Dashboard - JSON404 *Error - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r PutDashboardsIDCellsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r PutDashboardsIDCellsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type DeleteDashboardsIDCellsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + response := &DBRPGet{} -// Status returns HTTPResponse.Status -func (r DeleteDashboardsIDCellsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) + return response, nil + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteDashboardsIDCellsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// PatchDBRPID calls the PATCH on /dbrps/{dbrpID} +// Update a database retention policy mapping +func (c *Client) PatchDBRPID(ctx context.Context, params *PatchDBRPIDAllParams) (*DBRPGet, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return 0 -} + bodyReader = bytes.NewReader(buf) -type PatchDashboardsIDCellsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Cell - JSON404 *Error - JSONDefault *Error -} + var pathParam0 string -// Status returns HTTPResponse.Status -func (r PatchDashboardsIDCellsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "dbrpID", runtime.ParamLocationPath, params.DbrpID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PatchDashboardsIDCellsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetDashboardsIDCellsIDViewResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *View - JSON404 *Error - JSONDefault *Error -} + operationPath := fmt.Sprintf("./dbrps/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r GetDashboardsIDCellsIDViewResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetDashboardsIDCellsIDViewResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + queryValues := queryURL.Query() -type PatchDashboardsIDCellsIDViewResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *View - JSON404 *Error - JSONDefault *Error -} + if params.OrgID != nil { -// Status returns HTTPResponse.Status -func (r PatchDashboardsIDCellsIDViewResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r PatchDashboardsIDCellsIDViewResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type GetDashboardsIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelsResponse - JSONDefault *Error -} + if params.Org != nil { -// Status returns HTTPResponse.Status -func (r GetDashboardsIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetDashboardsIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type PostDashboardsIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *LabelResponse - JSONDefault *Error -} + queryURL.RawQuery = queryValues.Encode() -// Status returns HTTPResponse.Status -func (r PostDashboardsIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostDashboardsIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + req.Header.Add("Content-Type", "application/json") -type DeleteDashboardsIDLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r DeleteDashboardsIDLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteDashboardsIDLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} - -type GetDashboardsIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceMembers - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r GetDashboardsIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r GetDashboardsIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} - -type PostDashboardsIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceMember - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r PostDashboardsIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + response := &DBRPGet{} -// StatusCode returns HTTPResponse.StatusCode -func (r PostDashboardsIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return 0 -} + return response, nil -type DeleteDashboardsIDMembersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r DeleteDashboardsIDMembersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// PostDelete calls the POST on /delete +// Delete data +func (c *Client) PostDelete(ctx context.Context, params *PostDeleteAllParams) error { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return err } - return http.StatusText(0) -} + bodyReader = bytes.NewReader(buf) -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteDashboardsIDMembersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return 0 -} -type GetDashboardsIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceOwners - JSONDefault *Error -} + operationPath := fmt.Sprintf("./delete") -// Status returns HTTPResponse.Status -func (r GetDashboardsIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetDashboardsIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + queryValues := queryURL.Query() -type PostDashboardsIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceOwner - JSONDefault *Error -} + if params.Org != nil { -// Status returns HTTPResponse.Status -func (r PostDashboardsIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostDashboardsIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type DeleteDashboardsIDOwnersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + if params.Bucket != nil { -// Status returns HTTPResponse.Status -func (r DeleteDashboardsIDOwnersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "bucket", runtime.ParamLocationQuery, *params.Bucket); err != nil { + return err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteDashboardsIDOwnersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type GetDBRPsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *DBRPs - JSON400 *Error - JSONDefault *Error -} + if params.OrgID != nil { -// Status returns HTTPResponse.Status -func (r GetDBRPsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetDBRPsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type PostDBRPResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *DBRP - JSON400 *Error - JSONDefault *Error -} + if params.BucketID != nil { -// Status returns HTTPResponse.Status -func (r PostDBRPResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "bucketID", runtime.ParamLocationQuery, *params.BucketID); err != nil { + return err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostDBRPResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type DeleteDBRPIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON400 *Error - JSONDefault *Error -} + queryURL.RawQuery = queryValues.Encode() -// Status returns HTTPResponse.Status -func (r DeleteDBRPIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteDBRPIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + req.Header.Add("Content-Type", "application/json") -type GetDBRPsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *DBRPGet - JSON400 *Error - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r GetDBRPsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetDBRPsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} - -type PatchDBRPIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *DBRPGet - JSON400 *Error - JSON404 *Error - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r PatchDBRPIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PatchDBRPIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return 0 -} + return nil -type PostDeleteResponse struct { - Body []byte - HTTPResponse *http.Response - JSON400 *Error - JSON403 *Error - JSON404 *Error - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r PostDeleteResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} +// GetFlags calls the GET on /flags +// Return the feature flags for the currently authenticated user +func (c *Client) GetFlags(ctx context.Context, params *GetFlagsParams) (*Flags, error) { + var err error -// StatusCode returns HTTPResponse.StatusCode -func (r PostDeleteResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetFlagsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Flags - JSONDefault *Error -} + operationPath := fmt.Sprintf("./flags") -// Status returns HTTPResponse.Status -func (r GetFlagsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetFlagsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type GetHealthResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *HealthCheck - JSON503 *HealthCheck - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r GetHealthResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetHealthResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} -type GetLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelsResponse - JSONDefault *Error -} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) -// Status returns HTTPResponse.Status -func (r GetLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + response := &Flags{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return 0 -} + return response, nil -type PostLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *LabelResponse - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r PostLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} +// GetHealth calls the GET on /health +// Retrieve the health of the instance +func (c *Client) GetHealth(ctx context.Context, params *GetHealthParams) (*HealthCheck, error) { + var err error -// StatusCode returns HTTPResponse.StatusCode -func (r PostLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.Server) + if err != nil { + return nil, err } - return 0 -} -type DeleteLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + operationPath := fmt.Sprintf("./health") -// Status returns HTTPResponse.Status -func (r DeleteLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type GetLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelResponse - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r GetLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} -type PatchLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelResponse - JSON404 *Error - JSONDefault *Error -} - -// Status returns HTTPResponse.Status -func (r PatchLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r PatchLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} - -type GetLegacyAuthorizationsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Authorizations - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r GetLegacyAuthorizationsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + response := &HealthCheck{} -// StatusCode returns HTTPResponse.StatusCode -func (r GetLegacyAuthorizationsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return 0 -} + return response, nil -type PostLegacyAuthorizationsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Authorization - JSON400 *Error - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r PostLegacyAuthorizationsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} +// GetLabels calls the GET on /labels +// List all labels +func (c *Client) GetLabels(ctx context.Context, params *GetLabelsParams) (*LabelsResponse, error) { + var err error -// StatusCode returns HTTPResponse.StatusCode -func (r PostLegacyAuthorizationsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type DeleteLegacyAuthorizationsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + operationPath := fmt.Sprintf("./labels") -// Status returns HTTPResponse.Status -func (r DeleteLegacyAuthorizationsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteLegacyAuthorizationsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + queryValues := queryURL.Query() -type GetLegacyAuthorizationsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Authorization - JSONDefault *Error -} + if params.OrgID != nil { -// Status returns HTTPResponse.Status -func (r GetLegacyAuthorizationsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetLegacyAuthorizationsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type PatchLegacyAuthorizationsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Authorization - JSONDefault *Error -} + queryURL.RawQuery = queryValues.Encode() -// Status returns HTTPResponse.Status -func (r PatchLegacyAuthorizationsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PatchLegacyAuthorizationsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + if params.ZapTraceSpan != nil { + var headerParam0 string -type PostLegacyAuthorizationsIDPasswordResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// Status returns HTTPResponse.Status -func (r PostLegacyAuthorizationsIDPasswordResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostLegacyAuthorizationsIDPasswordResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return 0 -} - -type GetMeResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *UserResponse - JSONDefault *Error -} + bodyBytes, err := io.ReadAll(rsp.Body) -// Status returns HTTPResponse.Status -func (r GetMeResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetMeResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + response := &LabelsResponse{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return 0 -} + return response, nil -type PutMePasswordResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r PutMePasswordResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// PostLabels calls the POST on /labels +// Create a label +func (c *Client) PostLabels(ctx context.Context, params *PostLabelsAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyReader = bytes.NewReader(buf) -// StatusCode returns HTTPResponse.StatusCode -func (r PutMePasswordResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetMetricsResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + operationPath := fmt.Sprintf("./labels") -// Status returns HTTPResponse.Status -func (r GetMetricsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetMetricsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type GetNotificationEndpointsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *NotificationEndpoints - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r GetNotificationEndpointsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r GetNotificationEndpointsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type CreateNotificationEndpointResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *NotificationEndpoint - JSONDefault *Error -} + response := &LabelResponse{} -// Status returns HTTPResponse.Status -func (r CreateNotificationEndpointResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r CreateNotificationEndpointResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type DeleteNotificationEndpointsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} +// DeleteLabelsID calls the DELETE on /labels/{labelID} +// Delete a label +func (c *Client) DeleteLabelsID(ctx context.Context, params *DeleteLabelsIDAllParams) error { + var err error + + var pathParam0 string -// Status returns HTTPResponse.Status -func (r DeleteNotificationEndpointsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteNotificationEndpointsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return 0 -} -type GetNotificationEndpointsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *NotificationEndpoint - JSONDefault *Error -} + operationPath := fmt.Sprintf("./labels/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r GetNotificationEndpointsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetNotificationEndpointsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - return 0 -} -type PatchNotificationEndpointsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *NotificationEndpoint - JSON404 *Error - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } -// Status returns HTTPResponse.Status -func (r PatchNotificationEndpointsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PatchNotificationEndpointsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - return 0 -} -type PutNotificationEndpointsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *NotificationEndpoint - JSON404 *Error - JSONDefault *Error -} + defer func() { _ = rsp.Body.Close() }() -// Status returns HTTPResponse.Status -func (r PutNotificationEndpointsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return nil -// StatusCode returns HTTPResponse.StatusCode -func (r PutNotificationEndpointsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type GetNotificationEndpointsIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelsResponse - JSONDefault *Error -} +// GetLabelsID calls the GET on /labels/{labelID} +// Retrieve a label +func (c *Client) GetLabelsID(ctx context.Context, params *GetLabelsIDAllParams) (*LabelResponse, error) { + var err error + + var pathParam0 string -// Status returns HTTPResponse.Status -func (r GetNotificationEndpointsIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetNotificationEndpointsIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type PostNotificationEndpointIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *LabelResponse - JSONDefault *Error -} + operationPath := fmt.Sprintf("./labels/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r PostNotificationEndpointIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostNotificationEndpointIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type DeleteNotificationEndpointsIDLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r DeleteNotificationEndpointsIDLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteNotificationEndpointsIDLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} - -type GetNotificationRulesResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *NotificationRules - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r GetNotificationRulesResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r GetNotificationRulesResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type CreateNotificationRuleResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *NotificationRule - JSONDefault *Error -} + response := &LabelResponse{} -// Status returns HTTPResponse.Status -func (r CreateNotificationRuleResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) + return response, nil + } -// StatusCode returns HTTPResponse.StatusCode -func (r CreateNotificationRuleResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// PatchLabelsID calls the PATCH on /labels/{labelID} +// Update a label +func (c *Client) PatchLabelsID(ctx context.Context, params *PatchLabelsIDAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return 0 -} + bodyReader = bytes.NewReader(buf) -type DeleteNotificationRulesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + var pathParam0 string -// Status returns HTTPResponse.Status -func (r DeleteNotificationRulesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteNotificationRulesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetNotificationRulesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *NotificationRule - JSONDefault *Error -} + operationPath := fmt.Sprintf("./labels/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r GetNotificationRulesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetNotificationRulesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type PatchNotificationRulesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *NotificationRule - JSON404 *Error - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r PatchNotificationRulesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r PatchNotificationRulesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -type PutNotificationRulesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *NotificationRule - JSON404 *Error - JSONDefault *Error -} + req.Header.Set("Zap-Trace-Span", headerParam0) + } -// Status returns HTTPResponse.Status -func (r PutNotificationRulesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r PutNotificationRulesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type GetNotificationRulesIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelsResponse - JSONDefault *Error -} + response := &LabelResponse{} -// Status returns HTTPResponse.Status -func (r GetNotificationRulesIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) + return response, nil + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetNotificationRulesIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// GetMe calls the GET on /me +// Retrieve the currently authenticated user +func (c *Client) GetMe(ctx context.Context, params *GetMeParams) (*UserResponse, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type PostNotificationRuleIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *LabelResponse - JSONDefault *Error -} + operationPath := fmt.Sprintf("./me") -// Status returns HTTPResponse.Status -func (r PostNotificationRuleIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostNotificationRuleIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type DeleteNotificationRulesIDLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r DeleteNotificationRulesIDLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteNotificationRulesIDLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} -type GetNotificationRulesIDQueryResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *FluxResponse - JSON400 *Error - JSON404 *Error - JSONDefault *Error -} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(rsp.Body) -// Status returns HTTPResponse.Status -func (r GetNotificationRulesIDQueryResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetNotificationRulesIDQueryResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + response := &UserResponse{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return 0 -} + return response, nil -type GetOrgsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Organizations - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r GetOrgsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// PutMePassword calls the PUT on /me/password +// Update a password +func (c *Client) PutMePassword(ctx context.Context, params *PutMePasswordAllParams) error { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return err } - return http.StatusText(0) -} + bodyReader = bytes.NewReader(buf) -// StatusCode returns HTTPResponse.StatusCode -func (r GetOrgsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return 0 -} -type PostOrgsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Organization - JSONDefault *Error -} + operationPath := fmt.Sprintf("./me/password") -// Status returns HTTPResponse.Status -func (r PostOrgsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostOrgsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("PUT", queryURL.String(), bodyReader) + if err != nil { + return err } - return 0 -} -type DeleteOrgsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } -// Status returns HTTPResponse.Status -func (r DeleteOrgsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteOrgsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - return 0 -} -type GetOrgsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Organization - JSONDefault *Error -} + defer func() { _ = rsp.Body.Close() }() -// Status returns HTTPResponse.Status -func (r GetOrgsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return nil -// StatusCode returns HTTPResponse.StatusCode -func (r GetOrgsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type PatchOrgsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Organization - JSONDefault *Error -} +// GetNotificationEndpoints calls the GET on /notificationEndpoints +// List all notification endpoints +func (c *Client) GetNotificationEndpoints(ctx context.Context, params *GetNotificationEndpointsParams) (*NotificationEndpoints, error) { + var err error -// Status returns HTTPResponse.Status -func (r PatchOrgsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PatchOrgsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + operationPath := fmt.Sprintf("./notificationEndpoints") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return 0 -} -type GetOrgsIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceMembers - JSON404 *Error - JSONDefault *Error -} + queryValues := queryURL.Query() -// Status returns HTTPResponse.Status -func (r GetOrgsIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.Offset != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetOrgsIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type PostOrgsIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceMember - JSONDefault *Error -} + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// Status returns HTTPResponse.Status -func (r PostOrgsIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostOrgsIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - return 0 -} -type DeleteOrgsIDMembersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + queryURL.RawQuery = queryValues.Encode() -// Status returns HTTPResponse.Status -func (r DeleteOrgsIDMembersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteOrgsIDMembersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + if params.ZapTraceSpan != nil { + var headerParam0 string -type GetOrgsIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceOwners - JSON404 *Error - JSONDefault *Error -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// Status returns HTTPResponse.Status -func (r GetOrgsIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetOrgsIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return 0 -} - -type PostOrgsIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceOwner - JSONDefault *Error -} + bodyBytes, err := io.ReadAll(rsp.Body) -// Status returns HTTPResponse.Status -func (r PostOrgsIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostOrgsIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + response := &NotificationEndpoints{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return 0 -} + return response, nil -type DeleteOrgsIDOwnersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r DeleteOrgsIDOwnersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// CreateNotificationEndpoint calls the POST on /notificationEndpoints +// Add a notification endpoint +func (c *Client) CreateNotificationEndpoint(ctx context.Context, params *CreateNotificationEndpointAllParams) (*NotificationEndpoint, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyReader = bytes.NewReader(buf) -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteOrgsIDOwnersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetOrgsIDSecretsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *SecretKeysResponse - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationEndpoints") -// Status returns HTTPResponse.Status -func (r GetOrgsIDSecretsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetOrgsIDSecretsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type PatchOrgsIDSecretsResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r PatchOrgsIDSecretsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r PatchOrgsIDSecretsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type PostOrgsIDSecretsResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + response := &NotificationEndpoint{} -// Status returns HTTPResponse.Status -func (r PostOrgsIDSecretsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r PostOrgsIDSecretsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type DeleteOrgsIDSecretsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} +// DeleteNotificationEndpointsID calls the DELETE on /notificationEndpoints/{endpointID} +// Delete a notification endpoint +func (c *Client) DeleteNotificationEndpointsID(ctx context.Context, params *DeleteNotificationEndpointsIDAllParams) error { + var err error -// Status returns HTTPResponse.Status -func (r DeleteOrgsIDSecretsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, params.EndpointID) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteOrgsIDSecretsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return 0 -} -type GetPingResponse struct { - Body []byte - HTTPResponse *http.Response -} + operationPath := fmt.Sprintf("./notificationEndpoints/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r GetPingResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetPingResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - return 0 -} -type HeadPingResponse struct { - Body []byte - HTTPResponse *http.Response -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r HeadPingResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r HeadPingResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - return 0 -} -type PostQueryResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + defer func() { _ = rsp.Body.Close() }() -// Status returns HTTPResponse.Status -func (r PostQueryResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return nil -// StatusCode returns HTTPResponse.StatusCode -func (r PostQueryResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type PostQueryAnalyzeResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *AnalyzeQueryResponse - JSONDefault *Error -} +// GetNotificationEndpointsID calls the GET on /notificationEndpoints/{endpointID} +// Retrieve a notification endpoint +func (c *Client) GetNotificationEndpointsID(ctx context.Context, params *GetNotificationEndpointsIDAllParams) (*NotificationEndpoint, error) { + var err error -// Status returns HTTPResponse.Status -func (r PostQueryAnalyzeResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, params.EndpointID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostQueryAnalyzeResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type PostQueryAstResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ASTResponse - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationEndpoints/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r PostQueryAstResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostQueryAstResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type GetQuerySuggestionsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *FluxSuggestions - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r GetQuerySuggestionsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetQuerySuggestionsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} -type GetQuerySuggestionsNameResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *FluxSuggestion - JSONDefault *Error -} - -// Status returns HTTPResponse.Status -func (r GetQuerySuggestionsNameResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r GetQuerySuggestionsNameResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type GetReadyResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Ready - JSONDefault *Error -} + response := &NotificationEndpoint{} -// Status returns HTTPResponse.Status -func (r GetReadyResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) + return response, nil + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetReadyResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// PatchNotificationEndpointsID calls the PATCH on /notificationEndpoints/{endpointID} +// Update a notification endpoint +func (c *Client) PatchNotificationEndpointsID(ctx context.Context, params *PatchNotificationEndpointsIDAllParams) (*NotificationEndpoint, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return 0 -} + bodyReader = bytes.NewReader(buf) -type GetRemoteConnectionsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *RemoteConnections - JSON404 *Error - JSONDefault *Error -} + var pathParam0 string -// Status returns HTTPResponse.Status -func (r GetRemoteConnectionsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, params.EndpointID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetRemoteConnectionsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type PostRemoteConnectionResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *RemoteConnection - JSON400 *Error - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationEndpoints/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r PostRemoteConnectionResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostRemoteConnectionResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type DeleteRemoteConnectionByIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r DeleteRemoteConnectionByIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteRemoteConnectionByIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -type GetRemoteConnectionByIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *RemoteConnection - JSON404 *Error - JSONDefault *Error -} + req.Header.Set("Zap-Trace-Span", headerParam0) + } -// Status returns HTTPResponse.Status -func (r GetRemoteConnectionByIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r GetRemoteConnectionByIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type PatchRemoteConnectionByIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *RemoteConnection - JSON400 *Error - JSON404 *Error - JSONDefault *Error -} + response := &NotificationEndpoint{} -// Status returns HTTPResponse.Status -func (r PatchRemoteConnectionByIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) + return response, nil + } -// StatusCode returns HTTPResponse.StatusCode -func (r PatchRemoteConnectionByIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// PutNotificationEndpointsID calls the PUT on /notificationEndpoints/{endpointID} +// Update a notification endpoint +func (c *Client) PutNotificationEndpointsID(ctx context.Context, params *PutNotificationEndpointsIDAllParams) (*NotificationEndpoint, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return 0 -} + bodyReader = bytes.NewReader(buf) -type GetReplicationsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Replications - JSON404 *Error - JSONDefault *Error -} + var pathParam0 string -// Status returns HTTPResponse.Status -func (r GetReplicationsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, params.EndpointID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetReplicationsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type PostReplicationResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Replication - JSON400 *Error - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationEndpoints/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r PostReplicationResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostReplicationResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("PUT", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type DeleteReplicationByIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r DeleteReplicationByIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteReplicationByIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -type GetReplicationByIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Replication - JSON404 *Error - JSONDefault *Error -} + req.Header.Set("Zap-Trace-Span", headerParam0) + } -// Status returns HTTPResponse.Status -func (r GetReplicationByIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r GetReplicationByIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type PatchReplicationByIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Replication - JSON400 *Error - JSON404 *Error - JSONDefault *Error -} + response := &NotificationEndpoint{} -// Status returns HTTPResponse.Status -func (r PatchReplicationByIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r PatchReplicationByIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type PostValidateReplicationByIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON400 *Error - JSONDefault *Error -} +// GetNotificationEndpointsIDLabels calls the GET on /notificationEndpoints/{endpointID}/labels +// List all labels for a notification endpoint +func (c *Client) GetNotificationEndpointsIDLabels(ctx context.Context, params *GetNotificationEndpointsIDLabelsAllParams) (*LabelsResponse, error) { + var err error -// Status returns HTTPResponse.Status -func (r PostValidateReplicationByIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, params.EndpointID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostValidateReplicationByIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetResourcesResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *[]string - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationEndpoints/%s/labels", pathParam0) -// Status returns HTTPResponse.Status -func (r GetResourcesResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetResourcesResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type PostRestoreBucketIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *[]byte - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r PostRestoreBucketIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostRestoreBucketIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} -type PostRestoreBucketMetadataResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *RestoredBucketMappings - JSONDefault *Error -} - -// Status returns HTTPResponse.Status -func (r PostRestoreBucketMetadataResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r PostRestoreBucketMetadataResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type PostRestoreKVResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *struct { - // token is the root token for the instance after restore (this is overwritten during the restore) - Token *string `json:"token,omitempty"` - } - JSONDefault *Error -} + response := &LabelsResponse{} -// Status returns HTTPResponse.Status -func (r PostRestoreKVResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) + return response, nil + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostRestoreKVResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// PostNotificationEndpointIDLabels calls the POST on /notificationEndpoints/{endpointID}/labels +// Add a label to a notification endpoint +func (c *Client) PostNotificationEndpointIDLabels(ctx context.Context, params *PostNotificationEndpointIDLabelsAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return 0 -} + bodyReader = bytes.NewReader(buf) -type PostRestoreShardIdResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + var pathParam0 string -// Status returns HTTPResponse.Status -func (r PostRestoreShardIdResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, params.EndpointID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostRestoreShardIdResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type PostRestoreSQLResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationEndpoints/%s/labels", pathParam0) -// Status returns HTTPResponse.Status -func (r PostRestoreSQLResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostRestoreSQLResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type GetScrapersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ScraperTargetResponses -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r GetScrapersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r GetScrapersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -type PostScrapersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ScraperTargetResponse - JSONDefault *Error -} + req.Header.Set("Zap-Trace-Span", headerParam0) + } -// Status returns HTTPResponse.Status -func (r PostScrapersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r PostScrapersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type DeleteScrapersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + response := &LabelResponse{} -// Status returns HTTPResponse.Status -func (r DeleteScrapersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteScrapersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type GetScrapersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ScraperTargetResponse - JSONDefault *Error -} +// DeleteNotificationEndpointsIDLabelsID calls the DELETE on /notificationEndpoints/{endpointID}/labels/{labelID} +// Delete a label from a notification endpoint +func (c *Client) DeleteNotificationEndpointsIDLabelsID(ctx context.Context, params *DeleteNotificationEndpointsIDLabelsIDAllParams) error { + var err error -// Status returns HTTPResponse.Status -func (r GetScrapersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + var pathParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r GetScrapersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "endpointID", runtime.ParamLocationPath, params.EndpointID) + if err != nil { + return err } - return 0 -} -type PatchScrapersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ScraperTargetResponse - JSONDefault *Error -} + var pathParam1 string -// Status returns HTTPResponse.Status -func (r PatchScrapersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PatchScrapersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return 0 -} -type GetScrapersIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelsResponse - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationEndpoints/%s/labels/%s", pathParam0, pathParam1) -// Status returns HTTPResponse.Status -func (r GetScrapersIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetScrapersIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - return 0 -} -type PostScrapersIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *LabelResponse - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r PostScrapersIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostScrapersIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} -type DeleteScrapersIDLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} - -// Status returns HTTPResponse.Status -func (r DeleteScrapersIDLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteScrapersIDLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return 0 -} + return nil -type GetScrapersIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceMembers - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r GetScrapersIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} +// GetNotificationRules calls the GET on /notificationRules +// List all notification rules +func (c *Client) GetNotificationRules(ctx context.Context, params *GetNotificationRulesParams) (*NotificationRules, error) { + var err error -// StatusCode returns HTTPResponse.StatusCode -func (r GetScrapersIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type PostScrapersIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceMember - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationRules") -// Status returns HTTPResponse.Status -func (r PostScrapersIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostScrapersIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + queryValues := queryURL.Query() -type DeleteScrapersIDMembersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + if params.Offset != nil { -// Status returns HTTPResponse.Status -func (r DeleteScrapersIDMembersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteScrapersIDMembersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type GetScrapersIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceOwners - JSONDefault *Error -} + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// Status returns HTTPResponse.Status -func (r GetScrapersIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetScrapersIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - return 0 -} -type PostScrapersIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceOwner - JSONDefault *Error -} + if params.CheckID != nil { -// Status returns HTTPResponse.Status -func (r PostScrapersIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "checkID", runtime.ParamLocationQuery, *params.CheckID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostScrapersIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type DeleteScrapersIDOwnersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + if params.Tag != nil { -// Status returns HTTPResponse.Status -func (r DeleteScrapersIDOwnersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "tag", runtime.ParamLocationQuery, *params.Tag); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteScrapersIDOwnersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type GetSetupResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *IsOnboarding -} + queryURL.RawQuery = queryValues.Encode() -// Status returns HTTPResponse.Status -func (r GetSetupResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetSetupResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + if params.ZapTraceSpan != nil { + var headerParam0 string -type PostSetupResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *OnboardingResponse - JSONDefault *Error -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// Status returns HTTPResponse.Status -func (r PostSetupResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostSetupResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return 0 -} - -type PostSigninResponse struct { - Body []byte - HTTPResponse *http.Response - JSON401 *Error - JSON403 *Error - JSONDefault *Error -} + bodyBytes, err := io.ReadAll(rsp.Body) -// Status returns HTTPResponse.Status -func (r PostSigninResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostSigninResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + response := &NotificationRules{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return 0 -} + return response, nil -type PostSignoutResponse struct { - Body []byte - HTTPResponse *http.Response - JSON401 *Error - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r PostSignoutResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// CreateNotificationRule calls the POST on /notificationRules +// Add a notification rule +func (c *Client) CreateNotificationRule(ctx context.Context, params *CreateNotificationRuleAllParams) (*NotificationRule, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyReader = bytes.NewReader(buf) -// StatusCode returns HTTPResponse.StatusCode -func (r PostSignoutResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetSourcesResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Sources - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationRules") -// Status returns HTTPResponse.Status -func (r GetSourcesResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetSourcesResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type PostSourcesResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Source - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r PostSourcesResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r PostSourcesResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type DeleteSourcesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + response := &NotificationRule{} -// Status returns HTTPResponse.Status -func (r DeleteSourcesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteSourcesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type GetSourcesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Source - JSON404 *Error - JSONDefault *Error -} +// DeleteNotificationRulesID calls the DELETE on /notificationRules/{ruleID} +// Delete a notification rule +func (c *Client) DeleteNotificationRulesID(ctx context.Context, params *DeleteNotificationRulesIDAllParams) error { + var err error + + var pathParam0 string -// Status returns HTTPResponse.Status -func (r GetSourcesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, params.RuleID) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetSourcesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return 0 -} -type PatchSourcesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Source - JSON404 *Error - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationRules/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r PatchSourcesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PatchSourcesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - return 0 -} -type GetSourcesIDBucketsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Buckets - JSON404 *Error - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } -// Status returns HTTPResponse.Status -func (r GetSourcesIDBucketsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetSourcesIDBucketsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - return 0 -} -type GetSourcesIDHealthResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *HealthCheck - JSON503 *HealthCheck - JSONDefault *Error -} + defer func() { _ = rsp.Body.Close() }() -// Status returns HTTPResponse.Status -func (r GetSourcesIDHealthResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return nil -// StatusCode returns HTTPResponse.StatusCode -func (r GetSourcesIDHealthResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type ListStacksResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *struct { - Stacks *[]Stack `json:"stacks,omitempty"` - } - JSONDefault *Error -} +// GetNotificationRulesID calls the GET on /notificationRules/{ruleID} +// Retrieve a notification rule +func (c *Client) GetNotificationRulesID(ctx context.Context, params *GetNotificationRulesIDAllParams) (*NotificationRule, error) { + var err error + + var pathParam0 string -// Status returns HTTPResponse.Status -func (r ListStacksResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, params.RuleID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r ListStacksResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type CreateStackResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Stack - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationRules/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r CreateStackResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r CreateStackResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type DeleteStackResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r DeleteStackResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteStackResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} - -type ReadStackResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Stack - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r ReadStackResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r ReadStackResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type UpdateStackResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Stack - JSONDefault *Error -} + response := &NotificationRule{} -// Status returns HTTPResponse.Status -func (r UpdateStackResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) + return response, nil + } -// StatusCode returns HTTPResponse.StatusCode -func (r UpdateStackResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// PatchNotificationRulesID calls the PATCH on /notificationRules/{ruleID} +// Update a notification rule +func (c *Client) PatchNotificationRulesID(ctx context.Context, params *PatchNotificationRulesIDAllParams) (*NotificationRule, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return 0 -} + bodyReader = bytes.NewReader(buf) -type UninstallStackResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Stack - JSONDefault *Error -} + var pathParam0 string -// Status returns HTTPResponse.Status -func (r UninstallStackResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, params.RuleID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r UninstallStackResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetTasksResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Tasks - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationRules/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r GetTasksResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetTasksResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type PostTasksResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Task - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r PostTasksResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostTasksResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} - -type DeleteTasksIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r DeleteTasksIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteTasksIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type GetTasksIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Task - JSONDefault *Error -} + response := &NotificationRule{} -// Status returns HTTPResponse.Status -func (r GetTasksIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) + return response, nil + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetTasksIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// PutNotificationRulesID calls the PUT on /notificationRules/{ruleID} +// Update a notification rule +func (c *Client) PutNotificationRulesID(ctx context.Context, params *PutNotificationRulesIDAllParams) (*NotificationRule, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return 0 -} + bodyReader = bytes.NewReader(buf) -type PatchTasksIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Task - JSONDefault *Error -} + var pathParam0 string -// Status returns HTTPResponse.Status -func (r PatchTasksIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, params.RuleID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PatchTasksIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetTasksIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelsResponse - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationRules/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r GetTasksIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetTasksIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("PUT", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type PostTasksIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *LabelResponse - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r PostTasksIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r PostTasksIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -type DeleteTasksIDLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} + req.Header.Set("Zap-Trace-Span", headerParam0) + } -// Status returns HTTPResponse.Status -func (r DeleteTasksIDLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteTasksIDLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type GetTasksIDLogsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Logs - JSONDefault *Error -} + response := &NotificationRule{} -// Status returns HTTPResponse.Status -func (r GetTasksIDLogsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r GetTasksIDLogsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type GetTasksIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceMembers - JSONDefault *Error -} +// GetNotificationRulesIDLabels calls the GET on /notificationRules/{ruleID}/labels +// List all labels for a notification rule +func (c *Client) GetNotificationRulesIDLabels(ctx context.Context, params *GetNotificationRulesIDLabelsAllParams) (*LabelsResponse, error) { + var err error + + var pathParam0 string -// Status returns HTTPResponse.Status -func (r GetTasksIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, params.RuleID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetTasksIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type PostTasksIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceMember - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationRules/%s/labels", pathParam0) -// Status returns HTTPResponse.Status -func (r PostTasksIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostTasksIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type DeleteTasksIDMembersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r DeleteTasksIDMembersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteTasksIDMembersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} - -type GetTasksIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceOwners - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r GetTasksIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r GetTasksIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type PostTasksIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceOwner - JSONDefault *Error -} + response := &LabelsResponse{} -// Status returns HTTPResponse.Status -func (r PostTasksIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) + return response, nil + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostTasksIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// PostNotificationRuleIDLabels calls the POST on /notificationRules/{ruleID}/labels +// Add a label to a notification rule +func (c *Client) PostNotificationRuleIDLabels(ctx context.Context, params *PostNotificationRuleIDLabelsAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return 0 -} + bodyReader = bytes.NewReader(buf) -type DeleteTasksIDOwnersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + var pathParam0 string -// Status returns HTTPResponse.Status -func (r DeleteTasksIDOwnersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, params.RuleID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteTasksIDOwnersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetTasksIDRunsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Runs - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationRules/%s/labels", pathParam0) -// Status returns HTTPResponse.Status -func (r GetTasksIDRunsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetTasksIDRunsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type PostTasksIDRunsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Run - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r PostTasksIDRunsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r PostTasksIDRunsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -type DeleteTasksIDRunsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + req.Header.Set("Zap-Trace-Span", headerParam0) + } -// Status returns HTTPResponse.Status -func (r DeleteTasksIDRunsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteTasksIDRunsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type GetTasksIDRunsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Run - JSONDefault *Error -} + response := &LabelResponse{} -// Status returns HTTPResponse.Status -func (r GetTasksIDRunsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r GetTasksIDRunsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type GetTasksIDRunsIDLogsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Logs - JSONDefault *Error -} +// DeleteNotificationRulesIDLabelsID calls the DELETE on /notificationRules/{ruleID}/labels/{labelID} +// Delete label from a notification rule +func (c *Client) DeleteNotificationRulesIDLabelsID(ctx context.Context, params *DeleteNotificationRulesIDLabelsIDAllParams) error { + var err error -// Status returns HTTPResponse.Status -func (r GetTasksIDRunsIDLogsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + var pathParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r GetTasksIDRunsIDLogsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, params.RuleID) + if err != nil { + return err } - return 0 -} -type PostTasksIDRunsIDRetryResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Run - JSONDefault *Error -} + var pathParam1 string -// Status returns HTTPResponse.Status -func (r PostTasksIDRunsIDRetryResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostTasksIDRunsIDRetryResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return 0 -} -type GetTelegrafPluginsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *TelegrafPlugins - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationRules/%s/labels/%s", pathParam0, pathParam1) -// Status returns HTTPResponse.Status -func (r GetTelegrafPluginsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetTelegrafPluginsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - return 0 -} -type GetTelegrafsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Telegrafs - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } -// Status returns HTTPResponse.Status -func (r GetTelegrafsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetTelegrafsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - return 0 -} -type PostTelegrafsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Telegraf - JSONDefault *Error -} + defer func() { _ = rsp.Body.Close() }() -// Status returns HTTPResponse.Status -func (r PostTelegrafsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return nil -// StatusCode returns HTTPResponse.StatusCode -func (r PostTelegrafsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type DeleteTelegrafsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} +// GetNotificationRulesIDQuery calls the GET on /notificationRules/{ruleID}/query +// Retrieve a notification rule query +func (c *Client) GetNotificationRulesIDQuery(ctx context.Context, params *GetNotificationRulesIDQueryAllParams) (*FluxResponse, error) { + var err error + + var pathParam0 string -// Status returns HTTPResponse.Status -func (r DeleteTelegrafsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleID", runtime.ParamLocationPath, params.RuleID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteTelegrafsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetTelegrafsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Telegraf - JSONDefault *Error -} + operationPath := fmt.Sprintf("./notificationRules/%s/query", pathParam0) -// Status returns HTTPResponse.Status -func (r GetTelegrafsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetTelegrafsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type PutTelegrafsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Telegraf - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r PutTelegrafsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r PutTelegrafsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} - -type GetTelegrafsIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelsResponse - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r GetTelegrafsIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r GetTelegrafsIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} - -type PostTelegrafsIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *LabelResponse - JSONDefault *Error -} -// Status returns HTTPResponse.Status -func (r PostTelegrafsIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + response := &FluxResponse{} -// StatusCode returns HTTPResponse.StatusCode -func (r PostTelegrafsIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return 0 -} + return response, nil -type DeleteTelegrafsIDLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r DeleteTelegrafsIDLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} +// GetOrgs calls the GET on /orgs +// List organizations +func (c *Client) GetOrgs(ctx context.Context, params *GetOrgsParams) (*Organizations, error) { + var err error -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteTelegrafsIDLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetTelegrafsIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceMembers - JSONDefault *Error -} + operationPath := fmt.Sprintf("./orgs") -// Status returns HTTPResponse.Status -func (r GetTelegrafsIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetTelegrafsIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + queryValues := queryURL.Query() -type PostTelegrafsIDMembersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceMember - JSONDefault *Error -} + if params.Offset != nil { -// Status returns HTTPResponse.Status -func (r PostTelegrafsIDMembersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostTelegrafsIDMembersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type DeleteTelegrafsIDMembersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + if params.Limit != nil { -// Status returns HTTPResponse.Status -func (r DeleteTelegrafsIDMembersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteTelegrafsIDMembersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type GetTelegrafsIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *ResourceOwners - JSONDefault *Error -} + if params.Descending != nil { -// Status returns HTTPResponse.Status -func (r GetTelegrafsIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "descending", runtime.ParamLocationQuery, *params.Descending); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r GetTelegrafsIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type PostTelegrafsIDOwnersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *ResourceOwner - JSONDefault *Error -} + if params.Org != nil { -// Status returns HTTPResponse.Status -func (r PostTelegrafsIDOwnersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostTelegrafsIDOwnersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type DeleteTelegrafsIDOwnersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + if params.OrgID != nil { -// Status returns HTTPResponse.Status -func (r DeleteTelegrafsIDOwnersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteTelegrafsIDOwnersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type ApplyTemplateResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *TemplateSummary - JSON201 *TemplateSummary - JSONDefault *Error -} + if params.UserID != nil { -// Status returns HTTPResponse.Status -func (r ApplyTemplateResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "userID", runtime.ParamLocationQuery, *params.UserID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// StatusCode returns HTTPResponse.StatusCode -func (r ApplyTemplateResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode } - return 0 -} -type ExportTemplateResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Template - YAML200 *Template - JSONDefault *Error -} + queryURL.RawQuery = queryValues.Encode() -// Status returns HTTPResponse.Status -func (r ExportTemplateResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r ExportTemplateResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + if params.ZapTraceSpan != nil { + var headerParam0 string -type GetUsersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Users - JSONDefault *Error -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// Status returns HTTPResponse.Status -func (r GetUsersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetUsersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return 0 -} - -type PostUsersResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *UserResponse - JSONDefault *Error -} + bodyBytes, err := io.ReadAll(rsp.Body) -// Status returns HTTPResponse.Status -func (r PostUsersResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostUsersResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + response := &Organizations{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return 0 -} + return response, nil -type DeleteUsersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error } -// Status returns HTTPResponse.Status -func (r DeleteUsersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// PostOrgs calls the POST on /orgs +// Create an organization +func (c *Client) PostOrgs(ctx context.Context, params *PostOrgsAllParams) (*Organization, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyReader = bytes.NewReader(buf) -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteUsersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetUsersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *UserResponse - JSONDefault *Error -} + operationPath := fmt.Sprintf("./orgs") -// Status returns HTTPResponse.Status -func (r GetUsersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetUsersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return 0 -} -type PatchUsersIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *UserResponse - JSONDefault *Error -} + req.Header.Add("Content-Type", "application/json") -// Status returns HTTPResponse.Status -func (r PatchUsersIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r PatchUsersIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -type PostUsersIDPasswordResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + req.Header.Set("Zap-Trace-Span", headerParam0) + } -// Status returns HTTPResponse.Status -func (r PostUsersIDPasswordResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r PostUsersIDPasswordResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type GetVariablesResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Variables - JSON400 *Error - JSONDefault *Error -} + response := &Organization{} -// Status returns HTTPResponse.Status -func (r GetVariablesResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r GetVariablesResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type PostVariablesResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Variable - JSONDefault *Error -} +// DeleteOrgsID calls the DELETE on /orgs/{orgID} +// Delete an organization +func (c *Client) DeleteOrgsID(ctx context.Context, params *DeleteOrgsIDAllParams) error { + var err error -// Status returns HTTPResponse.Status -func (r PostVariablesResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PostVariablesResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return 0 -} -type DeleteVariablesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSONDefault *Error -} + operationPath := fmt.Sprintf("./orgs/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r DeleteVariablesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteVariablesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - return 0 -} -type GetVariablesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Variable - JSON404 *Error - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r GetVariablesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetVariablesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - return 0 -} -type PatchVariablesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Variable - JSONDefault *Error -} + defer func() { _ = rsp.Body.Close() }() -// Status returns HTTPResponse.Status -func (r PatchVariablesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return nil -// StatusCode returns HTTPResponse.StatusCode -func (r PatchVariablesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -type PutVariablesIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Variable - JSONDefault *Error -} +// GetOrgsID calls the GET on /orgs/{orgID} +// Retrieve an organization +func (c *Client) GetOrgsID(ctx context.Context, params *GetOrgsIDAllParams) (*Organization, error) { + var err error -// Status returns HTTPResponse.Status -func (r PutVariablesIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r PutVariablesIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return 0 -} -type GetVariablesIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LabelsResponse - JSONDefault *Error -} + operationPath := fmt.Sprintf("./orgs/%s", pathParam0) -// Status returns HTTPResponse.Status -func (r GetVariablesIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r GetVariablesIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type PostVariablesIDLabelsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *LabelResponse - JSONDefault *Error -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// Status returns HTTPResponse.Status -func (r PostVariablesIDLabelsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// StatusCode returns HTTPResponse.StatusCode -func (r PostVariablesIDLabelsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req.Header.Set("Zap-Trace-Span", headerParam0) } - return 0 -} -type DeleteVariablesIDLabelsIDResponse struct { - Body []byte - HTTPResponse *http.Response - JSON404 *Error - JSONDefault *Error -} - -// Status returns HTTPResponse.Status -func (r DeleteVariablesIDLabelsIDResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } - return http.StatusText(0) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteVariablesIDLabelsIDResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - return 0 -} -type PostWriteResponse struct { - Body []byte - HTTPResponse *http.Response - JSON400 *LineProtocolError - JSON401 *Error - JSON404 *Error - JSON413 *LineProtocolLengthError - JSON500 *Error - JSONDefault *Error -} + response := &Organization{} -// Status returns HTTPResponse.Status -func (r PostWriteResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return http.StatusText(0) -} + return response, nil -// StatusCode returns HTTPResponse.StatusCode -func (r PostWriteResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 } -// GetRoutesWithResponse request returning *GetRoutesResponse -func (c *ClientWithResponses) GetRoutesWithResponse(ctx context.Context, params *GetRoutesParams) (*GetRoutesResponse, error) { - rsp, err := c.GetRoutes(ctx, params) +// PatchOrgsID calls the PATCH on /orgs/{orgID} +// Update an organization +func (c *Client) PatchOrgsID(ctx context.Context, params *PatchOrgsIDAllParams) (*Organization, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParseGetRoutesResponse(rsp) -} + bodyReader = bytes.NewReader(buf) -// GetAuthorizationsWithResponse request returning *GetAuthorizationsResponse -func (c *ClientWithResponses) GetAuthorizationsWithResponse(ctx context.Context, params *GetAuthorizationsParams) (*GetAuthorizationsResponse, error) { - rsp, err := c.GetAuthorizations(ctx, params) + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { return nil, err } - return ParseGetAuthorizationsResponse(rsp) -} -// PostAuthorizationsWithBodyWithResponse request with arbitrary body returning *PostAuthorizationsResponse -func (c *ClientWithResponses) PostAuthorizationsWithBodyWithResponse(ctx context.Context, params *PostAuthorizationsParams, contentType string, body io.Reader) (*PostAuthorizationsResponse, error) { - rsp, err := c.PostAuthorizationsWithBody(ctx, params, contentType, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePostAuthorizationsResponse(rsp) -} -func (c *ClientWithResponses) PostAuthorizationsWithResponse(ctx context.Context, params *PostAuthorizationsParams, body PostAuthorizationsJSONRequestBody) (*PostAuthorizationsResponse, error) { - rsp, err := c.PostAuthorizations(ctx, params, body) + operationPath := fmt.Sprintf("./orgs/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePostAuthorizationsResponse(rsp) -} -// DeleteAuthorizationsIDWithResponse request returning *DeleteAuthorizationsIDResponse -func (c *ClientWithResponses) DeleteAuthorizationsIDWithResponse(ctx context.Context, authID string, params *DeleteAuthorizationsIDParams) (*DeleteAuthorizationsIDResponse, error) { - rsp, err := c.DeleteAuthorizationsID(ctx, authID, params) + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParseDeleteAuthorizationsIDResponse(rsp) -} -// GetAuthorizationsIDWithResponse request returning *GetAuthorizationsIDResponse -func (c *ClientWithResponses) GetAuthorizationsIDWithResponse(ctx context.Context, authID string, params *GetAuthorizationsIDParams) (*GetAuthorizationsIDResponse, error) { - rsp, err := c.GetAuthorizationsID(ctx, authID, params) - if err != nil { - return nil, err + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseGetAuthorizationsIDResponse(rsp) -} -// PatchAuthorizationsIDWithBodyWithResponse request with arbitrary body returning *PatchAuthorizationsIDResponse -func (c *ClientWithResponses) PatchAuthorizationsIDWithBodyWithResponse(ctx context.Context, authID string, params *PatchAuthorizationsIDParams, contentType string, body io.Reader) (*PatchAuthorizationsIDResponse, error) { - rsp, err := c.PatchAuthorizationsIDWithBody(ctx, authID, params, contentType, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePatchAuthorizationsIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -func (c *ClientWithResponses) PatchAuthorizationsIDWithResponse(ctx context.Context, authID string, params *PatchAuthorizationsIDParams, body PatchAuthorizationsIDJSONRequestBody) (*PatchAuthorizationsIDResponse, error) { - rsp, err := c.PatchAuthorizationsID(ctx, authID, params, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePatchAuthorizationsIDResponse(rsp) -} -// GetBackupKVWithResponse request returning *GetBackupKVResponse -func (c *ClientWithResponses) GetBackupKVWithResponse(ctx context.Context, params *GetBackupKVParams) (*GetBackupKVResponse, error) { - rsp, err := c.GetBackupKV(ctx, params) - if err != nil { - return nil, err + response := &Organization{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParseGetBackupKVResponse(rsp) + return response, nil + } -// GetBackupMetadataWithResponse request returning *GetBackupMetadataResponse -func (c *ClientWithResponses) GetBackupMetadataWithResponse(ctx context.Context, params *GetBackupMetadataParams) (*GetBackupMetadataResponse, error) { - rsp, err := c.GetBackupMetadata(ctx, params) +// GetOrgsIDMembers calls the GET on /orgs/{orgID}/members +// List all members of an organization +func (c *Client) GetOrgsIDMembers(ctx context.Context, params *GetOrgsIDMembersAllParams) (*ResourceMembers, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { return nil, err } - return ParseGetBackupMetadataResponse(rsp) -} -// GetBackupShardIdWithResponse request returning *GetBackupShardIdResponse -func (c *ClientWithResponses) GetBackupShardIdWithResponse(ctx context.Context, shardID int64, params *GetBackupShardIdParams) (*GetBackupShardIdResponse, error) { - rsp, err := c.GetBackupShardId(ctx, shardID, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseGetBackupShardIdResponse(rsp) -} -// GetBucketsWithResponse request returning *GetBucketsResponse -func (c *ClientWithResponses) GetBucketsWithResponse(ctx context.Context, params *GetBucketsParams) (*GetBucketsResponse, error) { - rsp, err := c.GetBuckets(ctx, params) + operationPath := fmt.Sprintf("./orgs/%s/members", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParseGetBucketsResponse(rsp) -} -// PostBucketsWithBodyWithResponse request with arbitrary body returning *PostBucketsResponse -func (c *ClientWithResponses) PostBucketsWithBodyWithResponse(ctx context.Context, params *PostBucketsParams, contentType string, body io.Reader) (*PostBucketsResponse, error) { - rsp, err := c.PostBucketsWithBody(ctx, params, contentType, body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParsePostBucketsResponse(rsp) -} -func (c *ClientWithResponses) PostBucketsWithResponse(ctx context.Context, params *PostBucketsParams, body PostBucketsJSONRequestBody) (*PostBucketsResponse, error) { - rsp, err := c.PostBuckets(ctx, params, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostBucketsResponse(rsp) -} -// DeleteBucketsIDWithResponse request returning *DeleteBucketsIDResponse -func (c *ClientWithResponses) DeleteBucketsIDWithResponse(ctx context.Context, bucketID string, params *DeleteBucketsIDParams) (*DeleteBucketsIDResponse, error) { - rsp, err := c.DeleteBucketsID(ctx, bucketID, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseDeleteBucketsIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// GetBucketsIDWithResponse request returning *GetBucketsIDResponse -func (c *ClientWithResponses) GetBucketsIDWithResponse(ctx context.Context, bucketID string, params *GetBucketsIDParams) (*GetBucketsIDResponse, error) { - rsp, err := c.GetBucketsID(ctx, bucketID, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseGetBucketsIDResponse(rsp) -} -// PatchBucketsIDWithBodyWithResponse request with arbitrary body returning *PatchBucketsIDResponse -func (c *ClientWithResponses) PatchBucketsIDWithBodyWithResponse(ctx context.Context, bucketID string, params *PatchBucketsIDParams, contentType string, body io.Reader) (*PatchBucketsIDResponse, error) { - rsp, err := c.PatchBucketsIDWithBody(ctx, bucketID, params, contentType, body) - if err != nil { - return nil, err + response := &ResourceMembers{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePatchBucketsIDResponse(rsp) + return response, nil + } -func (c *ClientWithResponses) PatchBucketsIDWithResponse(ctx context.Context, bucketID string, params *PatchBucketsIDParams, body PatchBucketsIDJSONRequestBody) (*PatchBucketsIDResponse, error) { - rsp, err := c.PatchBucketsID(ctx, bucketID, params, body) +// PostOrgsIDMembers calls the POST on /orgs/{orgID}/members +// Add a member to an organization +func (c *Client) PostOrgsIDMembers(ctx context.Context, params *PostOrgsIDMembersAllParams) (*ResourceMember, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParsePatchBucketsIDResponse(rsp) -} + bodyReader = bytes.NewReader(buf) + + var pathParam0 string -// GetBucketsIDLabelsWithResponse request returning *GetBucketsIDLabelsResponse -func (c *ClientWithResponses) GetBucketsIDLabelsWithResponse(ctx context.Context, bucketID string, params *GetBucketsIDLabelsParams) (*GetBucketsIDLabelsResponse, error) { - rsp, err := c.GetBucketsIDLabels(ctx, bucketID, params) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { return nil, err } - return ParseGetBucketsIDLabelsResponse(rsp) -} -// PostBucketsIDLabelsWithBodyWithResponse request with arbitrary body returning *PostBucketsIDLabelsResponse -func (c *ClientWithResponses) PostBucketsIDLabelsWithBodyWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDLabelsParams, contentType string, body io.Reader) (*PostBucketsIDLabelsResponse, error) { - rsp, err := c.PostBucketsIDLabelsWithBody(ctx, bucketID, params, contentType, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePostBucketsIDLabelsResponse(rsp) -} -func (c *ClientWithResponses) PostBucketsIDLabelsWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDLabelsParams, body PostBucketsIDLabelsJSONRequestBody) (*PostBucketsIDLabelsResponse, error) { - rsp, err := c.PostBucketsIDLabels(ctx, bucketID, params, body) + operationPath := fmt.Sprintf("./orgs/%s/members", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePostBucketsIDLabelsResponse(rsp) -} -// DeleteBucketsIDLabelsIDWithResponse request returning *DeleteBucketsIDLabelsIDResponse -func (c *ClientWithResponses) DeleteBucketsIDLabelsIDWithResponse(ctx context.Context, bucketID string, labelID string, params *DeleteBucketsIDLabelsIDParams) (*DeleteBucketsIDLabelsIDResponse, error) { - rsp, err := c.DeleteBucketsIDLabelsID(ctx, bucketID, labelID, params) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParseDeleteBucketsIDLabelsIDResponse(rsp) -} -// GetBucketsIDMembersWithResponse request returning *GetBucketsIDMembersResponse -func (c *ClientWithResponses) GetBucketsIDMembersWithResponse(ctx context.Context, bucketID string, params *GetBucketsIDMembersParams) (*GetBucketsIDMembersResponse, error) { - rsp, err := c.GetBucketsIDMembers(ctx, bucketID, params) - if err != nil { - return nil, err + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseGetBucketsIDMembersResponse(rsp) -} -// PostBucketsIDMembersWithBodyWithResponse request with arbitrary body returning *PostBucketsIDMembersResponse -func (c *ClientWithResponses) PostBucketsIDMembersWithBodyWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDMembersParams, contentType string, body io.Reader) (*PostBucketsIDMembersResponse, error) { - rsp, err := c.PostBucketsIDMembersWithBody(ctx, bucketID, params, contentType, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePostBucketsIDMembersResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -func (c *ClientWithResponses) PostBucketsIDMembersWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDMembersParams, body PostBucketsIDMembersJSONRequestBody) (*PostBucketsIDMembersResponse, error) { - rsp, err := c.PostBucketsIDMembers(ctx, bucketID, params, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePostBucketsIDMembersResponse(rsp) -} -// DeleteBucketsIDMembersIDWithResponse request returning *DeleteBucketsIDMembersIDResponse -func (c *ClientWithResponses) DeleteBucketsIDMembersIDWithResponse(ctx context.Context, bucketID string, userID string, params *DeleteBucketsIDMembersIDParams) (*DeleteBucketsIDMembersIDResponse, error) { - rsp, err := c.DeleteBucketsIDMembersID(ctx, bucketID, userID, params) - if err != nil { - return nil, err + response := &ResourceMember{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParseDeleteBucketsIDMembersIDResponse(rsp) + return response, nil + } -// GetBucketsIDOwnersWithResponse request returning *GetBucketsIDOwnersResponse -func (c *ClientWithResponses) GetBucketsIDOwnersWithResponse(ctx context.Context, bucketID string, params *GetBucketsIDOwnersParams) (*GetBucketsIDOwnersResponse, error) { - rsp, err := c.GetBucketsIDOwners(ctx, bucketID, params) +// DeleteOrgsIDMembersID calls the DELETE on /orgs/{orgID}/members/{userID} +// Remove a member from an organization +func (c *Client) DeleteOrgsIDMembersID(ctx context.Context, params *DeleteOrgsIDMembersIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { - return nil, err + return err } - return ParseGetBucketsIDOwnersResponse(rsp) -} -// PostBucketsIDOwnersWithBodyWithResponse request with arbitrary body returning *PostBucketsIDOwnersResponse -func (c *ClientWithResponses) PostBucketsIDOwnersWithBodyWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDOwnersParams, contentType string, body io.Reader) (*PostBucketsIDOwnersResponse, error) { - rsp, err := c.PostBucketsIDOwnersWithBody(ctx, bucketID, params, contentType, body) + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) if err != nil { - return nil, err + return err } - return ParsePostBucketsIDOwnersResponse(rsp) -} -func (c *ClientWithResponses) PostBucketsIDOwnersWithResponse(ctx context.Context, bucketID string, params *PostBucketsIDOwnersParams, body PostBucketsIDOwnersJSONRequestBody) (*PostBucketsIDOwnersResponse, error) { - rsp, err := c.PostBucketsIDOwners(ctx, bucketID, params, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - return ParsePostBucketsIDOwnersResponse(rsp) -} -// DeleteBucketsIDOwnersIDWithResponse request returning *DeleteBucketsIDOwnersIDResponse -func (c *ClientWithResponses) DeleteBucketsIDOwnersIDWithResponse(ctx context.Context, bucketID string, userID string, params *DeleteBucketsIDOwnersIDParams) (*DeleteBucketsIDOwnersIDResponse, error) { - rsp, err := c.DeleteBucketsIDOwnersID(ctx, bucketID, userID, params) + operationPath := fmt.Sprintf("./orgs/%s/members/%s", pathParam0, pathParam1) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParseDeleteBucketsIDOwnersIDResponse(rsp) -} -// GetChecksWithResponse request returning *GetChecksResponse -func (c *ClientWithResponses) GetChecksWithResponse(ctx context.Context, params *GetChecksParams) (*GetChecksResponse, error) { - rsp, err := c.GetChecks(ctx, params) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - return ParseGetChecksResponse(rsp) -} -// CreateCheckWithBodyWithResponse request with arbitrary body returning *CreateCheckResponse -func (c *ClientWithResponses) CreateCheckWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateCheckResponse, error) { - rsp, err := c.CreateCheckWithBody(ctx, contentType, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseCreateCheckResponse(rsp) -} -func (c *ClientWithResponses) CreateCheckWithResponse(ctx context.Context, body CreateCheckJSONRequestBody) (*CreateCheckResponse, error) { - rsp, err := c.CreateCheck(ctx, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - return ParseCreateCheckResponse(rsp) -} -// DeleteChecksIDWithResponse request returning *DeleteChecksIDResponse -func (c *ClientWithResponses) DeleteChecksIDWithResponse(ctx context.Context, checkID string, params *DeleteChecksIDParams) (*DeleteChecksIDResponse, error) { - rsp, err := c.DeleteChecksID(ctx, checkID, params) - if err != nil { - return nil, err + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParseDeleteChecksIDResponse(rsp) + return nil + } -// GetChecksIDWithResponse request returning *GetChecksIDResponse -func (c *ClientWithResponses) GetChecksIDWithResponse(ctx context.Context, checkID string, params *GetChecksIDParams) (*GetChecksIDResponse, error) { - rsp, err := c.GetChecksID(ctx, checkID, params) +// GetOrgsIDOwners calls the GET on /orgs/{orgID}/owners +// List all owners of an organization +func (c *Client) GetOrgsIDOwners(ctx context.Context, params *GetOrgsIDOwnersAllParams) (*ResourceOwners, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { return nil, err } - return ParseGetChecksIDResponse(rsp) -} -// PatchChecksIDWithBodyWithResponse request with arbitrary body returning *PatchChecksIDResponse -func (c *ClientWithResponses) PatchChecksIDWithBodyWithResponse(ctx context.Context, checkID string, params *PatchChecksIDParams, contentType string, body io.Reader) (*PatchChecksIDResponse, error) { - rsp, err := c.PatchChecksIDWithBody(ctx, checkID, params, contentType, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePatchChecksIDResponse(rsp) -} -func (c *ClientWithResponses) PatchChecksIDWithResponse(ctx context.Context, checkID string, params *PatchChecksIDParams, body PatchChecksIDJSONRequestBody) (*PatchChecksIDResponse, error) { - rsp, err := c.PatchChecksID(ctx, checkID, params, body) + operationPath := fmt.Sprintf("./orgs/%s/owners", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePatchChecksIDResponse(rsp) -} -// PutChecksIDWithBodyWithResponse request with arbitrary body returning *PutChecksIDResponse -func (c *ClientWithResponses) PutChecksIDWithBodyWithResponse(ctx context.Context, checkID string, params *PutChecksIDParams, contentType string, body io.Reader) (*PutChecksIDResponse, error) { - rsp, err := c.PutChecksIDWithBody(ctx, checkID, params, contentType, body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParsePutChecksIDResponse(rsp) -} -func (c *ClientWithResponses) PutChecksIDWithResponse(ctx context.Context, checkID string, params *PutChecksIDParams, body PutChecksIDJSONRequestBody) (*PutChecksIDResponse, error) { - rsp, err := c.PutChecksID(ctx, checkID, params, body) + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePutChecksIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// GetChecksIDLabelsWithResponse request returning *GetChecksIDLabelsResponse -func (c *ClientWithResponses) GetChecksIDLabelsWithResponse(ctx context.Context, checkID string, params *GetChecksIDLabelsParams) (*GetChecksIDLabelsResponse, error) { - rsp, err := c.GetChecksIDLabels(ctx, checkID, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseGetChecksIDLabelsResponse(rsp) + + response := &ResourceOwners{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -// PostChecksIDLabelsWithBodyWithResponse request with arbitrary body returning *PostChecksIDLabelsResponse -func (c *ClientWithResponses) PostChecksIDLabelsWithBodyWithResponse(ctx context.Context, checkID string, params *PostChecksIDLabelsParams, contentType string, body io.Reader) (*PostChecksIDLabelsResponse, error) { - rsp, err := c.PostChecksIDLabelsWithBody(ctx, checkID, params, contentType, body) +// PostOrgsIDOwners calls the POST on /orgs/{orgID}/owners +// Add an owner to an organization +func (c *Client) PostOrgsIDOwners(ctx context.Context, params *PostOrgsIDOwnersAllParams) (*ResourceOwner, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParsePostChecksIDLabelsResponse(rsp) -} + bodyReader = bytes.NewReader(buf) + + var pathParam0 string -func (c *ClientWithResponses) PostChecksIDLabelsWithResponse(ctx context.Context, checkID string, params *PostChecksIDLabelsParams, body PostChecksIDLabelsJSONRequestBody) (*PostChecksIDLabelsResponse, error) { - rsp, err := c.PostChecksIDLabels(ctx, checkID, params, body) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { return nil, err } - return ParsePostChecksIDLabelsResponse(rsp) -} -// DeleteChecksIDLabelsIDWithResponse request returning *DeleteChecksIDLabelsIDResponse -func (c *ClientWithResponses) DeleteChecksIDLabelsIDWithResponse(ctx context.Context, checkID string, labelID string, params *DeleteChecksIDLabelsIDParams) (*DeleteChecksIDLabelsIDResponse, error) { - rsp, err := c.DeleteChecksIDLabelsID(ctx, checkID, labelID, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseDeleteChecksIDLabelsIDResponse(rsp) -} -// GetChecksIDQueryWithResponse request returning *GetChecksIDQueryResponse -func (c *ClientWithResponses) GetChecksIDQueryWithResponse(ctx context.Context, checkID string, params *GetChecksIDQueryParams) (*GetChecksIDQueryResponse, error) { - rsp, err := c.GetChecksIDQuery(ctx, checkID, params) + operationPath := fmt.Sprintf("./orgs/%s/owners", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParseGetChecksIDQueryResponse(rsp) -} -// GetConfigWithResponse request returning *GetConfigResponse -func (c *ClientWithResponses) GetConfigWithResponse(ctx context.Context, params *GetConfigParams) (*GetConfigResponse, error) { - rsp, err := c.GetConfig(ctx, params) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParseGetConfigResponse(rsp) -} -// GetDashboardsWithResponse request returning *GetDashboardsResponse -func (c *ClientWithResponses) GetDashboardsWithResponse(ctx context.Context, params *GetDashboardsParams) (*GetDashboardsResponse, error) { - rsp, err := c.GetDashboards(ctx, params) + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseGetDashboardsResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// PostDashboardsWithBodyWithResponse request with arbitrary body returning *PostDashboardsResponse -func (c *ClientWithResponses) PostDashboardsWithBodyWithResponse(ctx context.Context, params *PostDashboardsParams, contentType string, body io.Reader) (*PostDashboardsResponse, error) { - rsp, err := c.PostDashboardsWithBody(ctx, params, contentType, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePostDashboardsResponse(rsp) + + response := &ResourceOwner{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -func (c *ClientWithResponses) PostDashboardsWithResponse(ctx context.Context, params *PostDashboardsParams, body PostDashboardsJSONRequestBody) (*PostDashboardsResponse, error) { - rsp, err := c.PostDashboards(ctx, params, body) +// DeleteOrgsIDOwnersID calls the DELETE on /orgs/{orgID}/owners/{userID} +// Remove an owner from an organization +func (c *Client) DeleteOrgsIDOwnersID(ctx context.Context, params *DeleteOrgsIDOwnersIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { - return nil, err + return err } - return ParsePostDashboardsResponse(rsp) -} -// DeleteDashboardsIDWithResponse request returning *DeleteDashboardsIDResponse -func (c *ClientWithResponses) DeleteDashboardsIDWithResponse(ctx context.Context, dashboardID string, params *DeleteDashboardsIDParams) (*DeleteDashboardsIDResponse, error) { - rsp, err := c.DeleteDashboardsID(ctx, dashboardID, params) + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) if err != nil { - return nil, err + return err } - return ParseDeleteDashboardsIDResponse(rsp) -} -// GetDashboardsIDWithResponse request returning *GetDashboardsIDResponse -func (c *ClientWithResponses) GetDashboardsIDWithResponse(ctx context.Context, dashboardID string, params *GetDashboardsIDParams) (*GetDashboardsIDResponse, error) { - rsp, err := c.GetDashboardsID(ctx, dashboardID, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - return ParseGetDashboardsIDResponse(rsp) -} -// PatchDashboardsIDWithBodyWithResponse request with arbitrary body returning *PatchDashboardsIDResponse -func (c *ClientWithResponses) PatchDashboardsIDWithBodyWithResponse(ctx context.Context, dashboardID string, params *PatchDashboardsIDParams, contentType string, body io.Reader) (*PatchDashboardsIDResponse, error) { - rsp, err := c.PatchDashboardsIDWithBody(ctx, dashboardID, params, contentType, body) + operationPath := fmt.Sprintf("./orgs/%s/owners/%s", pathParam0, pathParam1) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParsePatchDashboardsIDResponse(rsp) -} -func (c *ClientWithResponses) PatchDashboardsIDWithResponse(ctx context.Context, dashboardID string, params *PatchDashboardsIDParams, body PatchDashboardsIDJSONRequestBody) (*PatchDashboardsIDResponse, error) { - rsp, err := c.PatchDashboardsID(ctx, dashboardID, params, body) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err + } + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePatchDashboardsIDResponse(rsp) -} -// PostDashboardsIDCellsWithBodyWithResponse request with arbitrary body returning *PostDashboardsIDCellsResponse -func (c *ClientWithResponses) PostDashboardsIDCellsWithBodyWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDCellsParams, contentType string, body io.Reader) (*PostDashboardsIDCellsResponse, error) { - rsp, err := c.PostDashboardsIDCellsWithBody(ctx, dashboardID, params, contentType, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err + } + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParsePostDashboardsIDCellsResponse(rsp) + return nil + } -func (c *ClientWithResponses) PostDashboardsIDCellsWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDCellsParams, body PostDashboardsIDCellsJSONRequestBody) (*PostDashboardsIDCellsResponse, error) { - rsp, err := c.PostDashboardsIDCells(ctx, dashboardID, params, body) +// GetOrgsIDSecrets calls the GET on /orgs/{orgID}/secrets +// List all secret keys for an organization +func (c *Client) GetOrgsIDSecrets(ctx context.Context, params *GetOrgsIDSecretsAllParams) (*SecretKeysResponse, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { return nil, err } - return ParsePostDashboardsIDCellsResponse(rsp) -} -// PutDashboardsIDCellsWithBodyWithResponse request with arbitrary body returning *PutDashboardsIDCellsResponse -func (c *ClientWithResponses) PutDashboardsIDCellsWithBodyWithResponse(ctx context.Context, dashboardID string, params *PutDashboardsIDCellsParams, contentType string, body io.Reader) (*PutDashboardsIDCellsResponse, error) { - rsp, err := c.PutDashboardsIDCellsWithBody(ctx, dashboardID, params, contentType, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePutDashboardsIDCellsResponse(rsp) -} -func (c *ClientWithResponses) PutDashboardsIDCellsWithResponse(ctx context.Context, dashboardID string, params *PutDashboardsIDCellsParams, body PutDashboardsIDCellsJSONRequestBody) (*PutDashboardsIDCellsResponse, error) { - rsp, err := c.PutDashboardsIDCells(ctx, dashboardID, params, body) + operationPath := fmt.Sprintf("./orgs/%s/secrets", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePutDashboardsIDCellsResponse(rsp) -} -// DeleteDashboardsIDCellsIDWithResponse request returning *DeleteDashboardsIDCellsIDResponse -func (c *ClientWithResponses) DeleteDashboardsIDCellsIDWithResponse(ctx context.Context, dashboardID string, cellID string, params *DeleteDashboardsIDCellsIDParams) (*DeleteDashboardsIDCellsIDResponse, error) { - rsp, err := c.DeleteDashboardsIDCellsID(ctx, dashboardID, cellID, params) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParseDeleteDashboardsIDCellsIDResponse(rsp) -} -// PatchDashboardsIDCellsIDWithBodyWithResponse request with arbitrary body returning *PatchDashboardsIDCellsIDResponse -func (c *ClientWithResponses) PatchDashboardsIDCellsIDWithBodyWithResponse(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDParams, contentType string, body io.Reader) (*PatchDashboardsIDCellsIDResponse, error) { - rsp, err := c.PatchDashboardsIDCellsIDWithBody(ctx, dashboardID, cellID, params, contentType, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePatchDashboardsIDCellsIDResponse(rsp) -} -func (c *ClientWithResponses) PatchDashboardsIDCellsIDWithResponse(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDParams, body PatchDashboardsIDCellsIDJSONRequestBody) (*PatchDashboardsIDCellsIDResponse, error) { - rsp, err := c.PatchDashboardsIDCellsID(ctx, dashboardID, cellID, params, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePatchDashboardsIDCellsIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// GetDashboardsIDCellsIDViewWithResponse request returning *GetDashboardsIDCellsIDViewResponse -func (c *ClientWithResponses) GetDashboardsIDCellsIDViewWithResponse(ctx context.Context, dashboardID string, cellID string, params *GetDashboardsIDCellsIDViewParams) (*GetDashboardsIDCellsIDViewResponse, error) { - rsp, err := c.GetDashboardsIDCellsIDView(ctx, dashboardID, cellID, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseGetDashboardsIDCellsIDViewResponse(rsp) -} -// PatchDashboardsIDCellsIDViewWithBodyWithResponse request with arbitrary body returning *PatchDashboardsIDCellsIDViewResponse -func (c *ClientWithResponses) PatchDashboardsIDCellsIDViewWithBodyWithResponse(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDViewParams, contentType string, body io.Reader) (*PatchDashboardsIDCellsIDViewResponse, error) { - rsp, err := c.PatchDashboardsIDCellsIDViewWithBody(ctx, dashboardID, cellID, params, contentType, body) - if err != nil { - return nil, err + response := &SecretKeysResponse{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePatchDashboardsIDCellsIDViewResponse(rsp) + return response, nil + } -func (c *ClientWithResponses) PatchDashboardsIDCellsIDViewWithResponse(ctx context.Context, dashboardID string, cellID string, params *PatchDashboardsIDCellsIDViewParams, body PatchDashboardsIDCellsIDViewJSONRequestBody) (*PatchDashboardsIDCellsIDViewResponse, error) { - rsp, err := c.PatchDashboardsIDCellsIDView(ctx, dashboardID, cellID, params, body) +// PatchOrgsIDSecrets calls the PATCH on /orgs/{orgID}/secrets +// Update secrets in an organization +func (c *Client) PatchOrgsIDSecrets(ctx context.Context, params *PatchOrgsIDSecretsAllParams) error { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { - return nil, err + return err } - return ParsePatchDashboardsIDCellsIDViewResponse(rsp) -} + bodyReader = bytes.NewReader(buf) + + var pathParam0 string -// GetDashboardsIDLabelsWithResponse request returning *GetDashboardsIDLabelsResponse -func (c *ClientWithResponses) GetDashboardsIDLabelsWithResponse(ctx context.Context, dashboardID string, params *GetDashboardsIDLabelsParams) (*GetDashboardsIDLabelsResponse, error) { - rsp, err := c.GetDashboardsIDLabels(ctx, dashboardID, params) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { - return nil, err + return err } - return ParseGetDashboardsIDLabelsResponse(rsp) -} -// PostDashboardsIDLabelsWithBodyWithResponse request with arbitrary body returning *PostDashboardsIDLabelsResponse -func (c *ClientWithResponses) PostDashboardsIDLabelsWithBodyWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDLabelsParams, contentType string, body io.Reader) (*PostDashboardsIDLabelsResponse, error) { - rsp, err := c.PostDashboardsIDLabelsWithBody(ctx, dashboardID, params, contentType, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - return ParsePostDashboardsIDLabelsResponse(rsp) -} -func (c *ClientWithResponses) PostDashboardsIDLabelsWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDLabelsParams, body PostDashboardsIDLabelsJSONRequestBody) (*PostDashboardsIDLabelsResponse, error) { - rsp, err := c.PostDashboardsIDLabels(ctx, dashboardID, params, body) + operationPath := fmt.Sprintf("./orgs/%s/secrets", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParsePostDashboardsIDLabelsResponse(rsp) -} -// DeleteDashboardsIDLabelsIDWithResponse request returning *DeleteDashboardsIDLabelsIDResponse -func (c *ClientWithResponses) DeleteDashboardsIDLabelsIDWithResponse(ctx context.Context, dashboardID string, labelID string, params *DeleteDashboardsIDLabelsIDParams) (*DeleteDashboardsIDLabelsIDResponse, error) { - rsp, err := c.DeleteDashboardsIDLabelsID(ctx, dashboardID, labelID, params) + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) if err != nil { - return nil, err + return err } - return ParseDeleteDashboardsIDLabelsIDResponse(rsp) -} -// GetDashboardsIDMembersWithResponse request returning *GetDashboardsIDMembersResponse -func (c *ClientWithResponses) GetDashboardsIDMembersWithResponse(ctx context.Context, dashboardID string, params *GetDashboardsIDMembersParams) (*GetDashboardsIDMembersResponse, error) { - rsp, err := c.GetDashboardsIDMembers(ctx, dashboardID, params) - if err != nil { - return nil, err + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseGetDashboardsIDMembersResponse(rsp) -} -// PostDashboardsIDMembersWithBodyWithResponse request with arbitrary body returning *PostDashboardsIDMembersResponse -func (c *ClientWithResponses) PostDashboardsIDMembersWithBodyWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDMembersParams, contentType string, body io.Reader) (*PostDashboardsIDMembersResponse, error) { - rsp, err := c.PostDashboardsIDMembersWithBody(ctx, dashboardID, params, contentType, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - return ParsePostDashboardsIDMembersResponse(rsp) -} -func (c *ClientWithResponses) PostDashboardsIDMembersWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDMembersParams, body PostDashboardsIDMembersJSONRequestBody) (*PostDashboardsIDMembersResponse, error) { - rsp, err := c.PostDashboardsIDMembers(ctx, dashboardID, params, body) - if err != nil { - return nil, err + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParsePostDashboardsIDMembersResponse(rsp) + return nil + } -// DeleteDashboardsIDMembersIDWithResponse request returning *DeleteDashboardsIDMembersIDResponse -func (c *ClientWithResponses) DeleteDashboardsIDMembersIDWithResponse(ctx context.Context, dashboardID string, userID string, params *DeleteDashboardsIDMembersIDParams) (*DeleteDashboardsIDMembersIDResponse, error) { - rsp, err := c.DeleteDashboardsIDMembersID(ctx, dashboardID, userID, params) +// PostOrgsIDSecrets calls the POST on /orgs/{orgID}/secrets/delete +// Delete secrets from an organization +func (c *Client) PostOrgsIDSecrets(ctx context.Context, params *PostOrgsIDSecretsAllParams) error { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { - return nil, err + return err } - return ParseDeleteDashboardsIDMembersIDResponse(rsp) -} + bodyReader = bytes.NewReader(buf) + + var pathParam0 string -// GetDashboardsIDOwnersWithResponse request returning *GetDashboardsIDOwnersResponse -func (c *ClientWithResponses) GetDashboardsIDOwnersWithResponse(ctx context.Context, dashboardID string, params *GetDashboardsIDOwnersParams) (*GetDashboardsIDOwnersResponse, error) { - rsp, err := c.GetDashboardsIDOwners(ctx, dashboardID, params) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { - return nil, err + return err } - return ParseGetDashboardsIDOwnersResponse(rsp) -} -// PostDashboardsIDOwnersWithBodyWithResponse request with arbitrary body returning *PostDashboardsIDOwnersResponse -func (c *ClientWithResponses) PostDashboardsIDOwnersWithBodyWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDOwnersParams, contentType string, body io.Reader) (*PostDashboardsIDOwnersResponse, error) { - rsp, err := c.PostDashboardsIDOwnersWithBody(ctx, dashboardID, params, contentType, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - return ParsePostDashboardsIDOwnersResponse(rsp) -} -func (c *ClientWithResponses) PostDashboardsIDOwnersWithResponse(ctx context.Context, dashboardID string, params *PostDashboardsIDOwnersParams, body PostDashboardsIDOwnersJSONRequestBody) (*PostDashboardsIDOwnersResponse, error) { - rsp, err := c.PostDashboardsIDOwners(ctx, dashboardID, params, body) + operationPath := fmt.Sprintf("./orgs/%s/secrets/delete", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParsePostDashboardsIDOwnersResponse(rsp) -} -// DeleteDashboardsIDOwnersIDWithResponse request returning *DeleteDashboardsIDOwnersIDResponse -func (c *ClientWithResponses) DeleteDashboardsIDOwnersIDWithResponse(ctx context.Context, dashboardID string, userID string, params *DeleteDashboardsIDOwnersIDParams) (*DeleteDashboardsIDOwnersIDResponse, error) { - rsp, err := c.DeleteDashboardsIDOwnersID(ctx, dashboardID, userID, params) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { - return nil, err + return err } - return ParseDeleteDashboardsIDOwnersIDResponse(rsp) -} -// GetDBRPsWithResponse request returning *GetDBRPsResponse -func (c *ClientWithResponses) GetDBRPsWithResponse(ctx context.Context, params *GetDBRPsParams) (*GetDBRPsResponse, error) { - rsp, err := c.GetDBRPs(ctx, params) - if err != nil { - return nil, err + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseGetDBRPsResponse(rsp) -} -// PostDBRPWithBodyWithResponse request with arbitrary body returning *PostDBRPResponse -func (c *ClientWithResponses) PostDBRPWithBodyWithResponse(ctx context.Context, params *PostDBRPParams, contentType string, body io.Reader) (*PostDBRPResponse, error) { - rsp, err := c.PostDBRPWithBody(ctx, params, contentType, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - return ParsePostDBRPResponse(rsp) -} -func (c *ClientWithResponses) PostDBRPWithResponse(ctx context.Context, params *PostDBRPParams, body PostDBRPJSONRequestBody) (*PostDBRPResponse, error) { - rsp, err := c.PostDBRP(ctx, params, body) - if err != nil { - return nil, err + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParsePostDBRPResponse(rsp) + return nil + } -// DeleteDBRPIDWithResponse request returning *DeleteDBRPIDResponse -func (c *ClientWithResponses) DeleteDBRPIDWithResponse(ctx context.Context, dbrpID string, params *DeleteDBRPIDParams) (*DeleteDBRPIDResponse, error) { - rsp, err := c.DeleteDBRPID(ctx, dbrpID, params) +// DeleteOrgsIDSecretsID calls the DELETE on /orgs/{orgID}/secrets/{secretID} +// Delete a secret from an organization +func (c *Client) DeleteOrgsIDSecretsID(ctx context.Context, params *DeleteOrgsIDSecretsIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgID", runtime.ParamLocationPath, params.OrgID) if err != nil { - return nil, err + return err } - return ParseDeleteDBRPIDResponse(rsp) -} -// GetDBRPsIDWithResponse request returning *GetDBRPsIDResponse -func (c *ClientWithResponses) GetDBRPsIDWithResponse(ctx context.Context, dbrpID string, params *GetDBRPsIDParams) (*GetDBRPsIDResponse, error) { - rsp, err := c.GetDBRPsID(ctx, dbrpID, params) + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "secretID", runtime.ParamLocationPath, params.SecretID) if err != nil { - return nil, err + return err } - return ParseGetDBRPsIDResponse(rsp) -} -// PatchDBRPIDWithBodyWithResponse request with arbitrary body returning *PatchDBRPIDResponse -func (c *ClientWithResponses) PatchDBRPIDWithBodyWithResponse(ctx context.Context, dbrpID string, params *PatchDBRPIDParams, contentType string, body io.Reader) (*PatchDBRPIDResponse, error) { - rsp, err := c.PatchDBRPIDWithBody(ctx, dbrpID, params, contentType, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - return ParsePatchDBRPIDResponse(rsp) -} -func (c *ClientWithResponses) PatchDBRPIDWithResponse(ctx context.Context, dbrpID string, params *PatchDBRPIDParams, body PatchDBRPIDJSONRequestBody) (*PatchDBRPIDResponse, error) { - rsp, err := c.PatchDBRPID(ctx, dbrpID, params, body) + operationPath := fmt.Sprintf("./orgs/%s/secrets/%s", pathParam0, pathParam1) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParsePatchDBRPIDResponse(rsp) -} -// PostDeleteWithBodyWithResponse request with arbitrary body returning *PostDeleteResponse -func (c *ClientWithResponses) PostDeleteWithBodyWithResponse(ctx context.Context, params *PostDeleteParams, contentType string, body io.Reader) (*PostDeleteResponse, error) { - rsp, err := c.PostDeleteWithBody(ctx, params, contentType, body) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - return ParsePostDeleteResponse(rsp) -} -func (c *ClientWithResponses) PostDeleteWithResponse(ctx context.Context, params *PostDeleteParams, body PostDeleteJSONRequestBody) (*PostDeleteResponse, error) { - rsp, err := c.PostDelete(ctx, params, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostDeleteResponse(rsp) -} -// GetFlagsWithResponse request returning *GetFlagsResponse -func (c *ClientWithResponses) GetFlagsWithResponse(ctx context.Context, params *GetFlagsParams) (*GetFlagsResponse, error) { - rsp, err := c.GetFlags(ctx, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - return ParseGetFlagsResponse(rsp) -} -// GetHealthWithResponse request returning *GetHealthResponse -func (c *ClientWithResponses) GetHealthWithResponse(ctx context.Context, params *GetHealthParams) (*GetHealthResponse, error) { - rsp, err := c.GetHealth(ctx, params) - if err != nil { - return nil, err + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParseGetHealthResponse(rsp) + return nil + } -// GetLabelsWithResponse request returning *GetLabelsResponse -func (c *ClientWithResponses) GetLabelsWithResponse(ctx context.Context, params *GetLabelsParams) (*GetLabelsResponse, error) { - rsp, err := c.GetLabels(ctx, params) +// GetPing calls the GET on /ping +// Get the status and version of the instance +func (c *Client) GetPing(ctx context.Context) error { + var err error + + serverURL, err := url.Parse(c.Server) if err != nil { - return nil, err + return err } - return ParseGetLabelsResponse(rsp) -} -// PostLabelsWithBodyWithResponse request with arbitrary body returning *PostLabelsResponse -func (c *ClientWithResponses) PostLabelsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*PostLabelsResponse, error) { - rsp, err := c.PostLabelsWithBody(ctx, contentType, body) + operationPath := fmt.Sprintf("./ping") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParsePostLabelsResponse(rsp) -} -func (c *ClientWithResponses) PostLabelsWithResponse(ctx context.Context, body PostLabelsJSONRequestBody) (*PostLabelsResponse, error) { - rsp, err := c.PostLabels(ctx, body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { - return nil, err + return err } - return ParsePostLabelsResponse(rsp) -} -// DeleteLabelsIDWithResponse request returning *DeleteLabelsIDResponse -func (c *ClientWithResponses) DeleteLabelsIDWithResponse(ctx context.Context, labelID string, params *DeleteLabelsIDParams) (*DeleteLabelsIDResponse, error) { - rsp, err := c.DeleteLabelsID(ctx, labelID, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - return ParseDeleteLabelsIDResponse(rsp) -} -// GetLabelsIDWithResponse request returning *GetLabelsIDResponse -func (c *ClientWithResponses) GetLabelsIDWithResponse(ctx context.Context, labelID string, params *GetLabelsIDParams) (*GetLabelsIDResponse, error) { - rsp, err := c.GetLabelsID(ctx, labelID, params) - if err != nil { - return nil, err + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParseGetLabelsIDResponse(rsp) + return nil + } -// PatchLabelsIDWithBodyWithResponse request with arbitrary body returning *PatchLabelsIDResponse -func (c *ClientWithResponses) PatchLabelsIDWithBodyWithResponse(ctx context.Context, labelID string, params *PatchLabelsIDParams, contentType string, body io.Reader) (*PatchLabelsIDResponse, error) { - rsp, err := c.PatchLabelsIDWithBody(ctx, labelID, params, contentType, body) +// HeadPing calls the HEAD on /ping +// Get the status and version of the instance +func (c *Client) HeadPing(ctx context.Context) error { + var err error + + serverURL, err := url.Parse(c.Server) if err != nil { - return nil, err + return err } - return ParsePatchLabelsIDResponse(rsp) -} -func (c *ClientWithResponses) PatchLabelsIDWithResponse(ctx context.Context, labelID string, params *PatchLabelsIDParams, body PatchLabelsIDJSONRequestBody) (*PatchLabelsIDResponse, error) { - rsp, err := c.PatchLabelsID(ctx, labelID, params, body) + operationPath := fmt.Sprintf("./ping") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParsePatchLabelsIDResponse(rsp) -} -// GetLegacyAuthorizationsWithResponse request returning *GetLegacyAuthorizationsResponse -func (c *ClientWithResponses) GetLegacyAuthorizationsWithResponse(ctx context.Context, params *GetLegacyAuthorizationsParams) (*GetLegacyAuthorizationsResponse, error) { - rsp, err := c.GetLegacyAuthorizations(ctx, params) + req, err := http.NewRequest("HEAD", queryURL.String(), nil) if err != nil { - return nil, err + return err } - return ParseGetLegacyAuthorizationsResponse(rsp) -} -// PostLegacyAuthorizationsWithBodyWithResponse request with arbitrary body returning *PostLegacyAuthorizationsResponse -func (c *ClientWithResponses) PostLegacyAuthorizationsWithBodyWithResponse(ctx context.Context, params *PostLegacyAuthorizationsParams, contentType string, body io.Reader) (*PostLegacyAuthorizationsResponse, error) { - rsp, err := c.PostLegacyAuthorizationsWithBody(ctx, params, contentType, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - return ParsePostLegacyAuthorizationsResponse(rsp) -} -func (c *ClientWithResponses) PostLegacyAuthorizationsWithResponse(ctx context.Context, params *PostLegacyAuthorizationsParams, body PostLegacyAuthorizationsJSONRequestBody) (*PostLegacyAuthorizationsResponse, error) { - rsp, err := c.PostLegacyAuthorizations(ctx, params, body) - if err != nil { - return nil, err + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParsePostLegacyAuthorizationsResponse(rsp) + return nil + } -// DeleteLegacyAuthorizationsIDWithResponse request returning *DeleteLegacyAuthorizationsIDResponse -func (c *ClientWithResponses) DeleteLegacyAuthorizationsIDWithResponse(ctx context.Context, authID string, params *DeleteLegacyAuthorizationsIDParams) (*DeleteLegacyAuthorizationsIDResponse, error) { - rsp, err := c.DeleteLegacyAuthorizationsID(ctx, authID, params) +// PostQueryAnalyze calls the POST on /query/analyze +// Analyze a Flux query +func (c *Client) PostQueryAnalyze(ctx context.Context, params *PostQueryAnalyzeAllParams) (*AnalyzeQueryResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParseDeleteLegacyAuthorizationsIDResponse(rsp) -} + bodyReader = bytes.NewReader(buf) -// GetLegacyAuthorizationsIDWithResponse request returning *GetLegacyAuthorizationsIDResponse -func (c *ClientWithResponses) GetLegacyAuthorizationsIDWithResponse(ctx context.Context, authID string, params *GetLegacyAuthorizationsIDParams) (*GetLegacyAuthorizationsIDResponse, error) { - rsp, err := c.GetLegacyAuthorizationsID(ctx, authID, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseGetLegacyAuthorizationsIDResponse(rsp) -} -// PatchLegacyAuthorizationsIDWithBodyWithResponse request with arbitrary body returning *PatchLegacyAuthorizationsIDResponse -func (c *ClientWithResponses) PatchLegacyAuthorizationsIDWithBodyWithResponse(ctx context.Context, authID string, params *PatchLegacyAuthorizationsIDParams, contentType string, body io.Reader) (*PatchLegacyAuthorizationsIDResponse, error) { - rsp, err := c.PatchLegacyAuthorizationsIDWithBody(ctx, authID, params, contentType, body) + operationPath := fmt.Sprintf("./query/analyze") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePatchLegacyAuthorizationsIDResponse(rsp) -} -func (c *ClientWithResponses) PatchLegacyAuthorizationsIDWithResponse(ctx context.Context, authID string, params *PatchLegacyAuthorizationsIDParams, body PatchLegacyAuthorizationsIDJSONRequestBody) (*PatchLegacyAuthorizationsIDResponse, error) { - rsp, err := c.PatchLegacyAuthorizationsID(ctx, authID, params, body) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParsePatchLegacyAuthorizationsIDResponse(rsp) -} -// PostLegacyAuthorizationsIDPasswordWithBodyWithResponse request with arbitrary body returning *PostLegacyAuthorizationsIDPasswordResponse -func (c *ClientWithResponses) PostLegacyAuthorizationsIDPasswordWithBodyWithResponse(ctx context.Context, authID string, params *PostLegacyAuthorizationsIDPasswordParams, contentType string, body io.Reader) (*PostLegacyAuthorizationsIDPasswordResponse, error) { - rsp, err := c.PostLegacyAuthorizationsIDPasswordWithBody(ctx, authID, params, contentType, body) - if err != nil { - return nil, err + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostLegacyAuthorizationsIDPasswordResponse(rsp) -} -func (c *ClientWithResponses) PostLegacyAuthorizationsIDPasswordWithResponse(ctx context.Context, authID string, params *PostLegacyAuthorizationsIDPasswordParams, body PostLegacyAuthorizationsIDPasswordJSONRequestBody) (*PostLegacyAuthorizationsIDPasswordResponse, error) { - rsp, err := c.PostLegacyAuthorizationsIDPassword(ctx, authID, params, body) - if err != nil { - return nil, err + if params.ContentType != nil { + var headerParam1 string + + headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Content-Type", runtime.ParamLocationHeader, *params.ContentType) + if err != nil { + return nil, err + } + + req.Header.Set("Content-Type", headerParam1) } - return ParsePostLegacyAuthorizationsIDPasswordResponse(rsp) -} -// GetMeWithResponse request returning *GetMeResponse -func (c *ClientWithResponses) GetMeWithResponse(ctx context.Context, params *GetMeParams) (*GetMeResponse, error) { - rsp, err := c.GetMe(ctx, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseGetMeResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// PutMePasswordWithBodyWithResponse request with arbitrary body returning *PutMePasswordResponse -func (c *ClientWithResponses) PutMePasswordWithBodyWithResponse(ctx context.Context, params *PutMePasswordParams, contentType string, body io.Reader) (*PutMePasswordResponse, error) { - rsp, err := c.PutMePasswordWithBody(ctx, params, contentType, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePutMePasswordResponse(rsp) + + response := &AnalyzeQueryResponse{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) + } + return response, nil + } -func (c *ClientWithResponses) PutMePasswordWithResponse(ctx context.Context, params *PutMePasswordParams, body PutMePasswordJSONRequestBody) (*PutMePasswordResponse, error) { - rsp, err := c.PutMePassword(ctx, params, body) +// PostQueryAst calls the POST on /query/ast +// Generate a query Abstract Syntax Tree (AST) +func (c *Client) PostQueryAst(ctx context.Context, params *PostQueryAstAllParams) (*ASTResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParsePutMePasswordResponse(rsp) -} + bodyReader = bytes.NewReader(buf) -// GetMetricsWithResponse request returning *GetMetricsResponse -func (c *ClientWithResponses) GetMetricsWithResponse(ctx context.Context, params *GetMetricsParams) (*GetMetricsResponse, error) { - rsp, err := c.GetMetrics(ctx, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseGetMetricsResponse(rsp) -} -// GetNotificationEndpointsWithResponse request returning *GetNotificationEndpointsResponse -func (c *ClientWithResponses) GetNotificationEndpointsWithResponse(ctx context.Context, params *GetNotificationEndpointsParams) (*GetNotificationEndpointsResponse, error) { - rsp, err := c.GetNotificationEndpoints(ctx, params) + operationPath := fmt.Sprintf("./query/ast") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParseGetNotificationEndpointsResponse(rsp) -} -// CreateNotificationEndpointWithBodyWithResponse request with arbitrary body returning *CreateNotificationEndpointResponse -func (c *ClientWithResponses) CreateNotificationEndpointWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateNotificationEndpointResponse, error) { - rsp, err := c.CreateNotificationEndpointWithBody(ctx, contentType, body) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParseCreateNotificationEndpointResponse(rsp) -} -func (c *ClientWithResponses) CreateNotificationEndpointWithResponse(ctx context.Context, body CreateNotificationEndpointJSONRequestBody) (*CreateNotificationEndpointResponse, error) { - rsp, err := c.CreateNotificationEndpoint(ctx, body) - if err != nil { - return nil, err + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + if params.ContentType != nil { + var headerParam1 string + + headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Content-Type", runtime.ParamLocationHeader, *params.ContentType) + if err != nil { + return nil, err + } + + req.Header.Set("Content-Type", headerParam1) } - return ParseCreateNotificationEndpointResponse(rsp) -} -// DeleteNotificationEndpointsIDWithResponse request returning *DeleteNotificationEndpointsIDResponse -func (c *ClientWithResponses) DeleteNotificationEndpointsIDWithResponse(ctx context.Context, endpointID string, params *DeleteNotificationEndpointsIDParams) (*DeleteNotificationEndpointsIDResponse, error) { - rsp, err := c.DeleteNotificationEndpointsID(ctx, endpointID, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseDeleteNotificationEndpointsIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// GetNotificationEndpointsIDWithResponse request returning *GetNotificationEndpointsIDResponse -func (c *ClientWithResponses) GetNotificationEndpointsIDWithResponse(ctx context.Context, endpointID string, params *GetNotificationEndpointsIDParams) (*GetNotificationEndpointsIDResponse, error) { - rsp, err := c.GetNotificationEndpointsID(ctx, endpointID, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseGetNotificationEndpointsIDResponse(rsp) -} -// PatchNotificationEndpointsIDWithBodyWithResponse request with arbitrary body returning *PatchNotificationEndpointsIDResponse -func (c *ClientWithResponses) PatchNotificationEndpointsIDWithBodyWithResponse(ctx context.Context, endpointID string, params *PatchNotificationEndpointsIDParams, contentType string, body io.Reader) (*PatchNotificationEndpointsIDResponse, error) { - rsp, err := c.PatchNotificationEndpointsIDWithBody(ctx, endpointID, params, contentType, body) - if err != nil { - return nil, err - } - return ParsePatchNotificationEndpointsIDResponse(rsp) -} + response := &ASTResponse{} -func (c *ClientWithResponses) PatchNotificationEndpointsIDWithResponse(ctx context.Context, endpointID string, params *PatchNotificationEndpointsIDParams, body PatchNotificationEndpointsIDJSONRequestBody) (*PatchNotificationEndpointsIDResponse, error) { - rsp, err := c.PatchNotificationEndpointsID(ctx, endpointID, params, body) - if err != nil { - return nil, err + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePatchNotificationEndpointsIDResponse(rsp) + return response, nil + } -// PutNotificationEndpointsIDWithBodyWithResponse request with arbitrary body returning *PutNotificationEndpointsIDResponse -func (c *ClientWithResponses) PutNotificationEndpointsIDWithBodyWithResponse(ctx context.Context, endpointID string, params *PutNotificationEndpointsIDParams, contentType string, body io.Reader) (*PutNotificationEndpointsIDResponse, error) { - rsp, err := c.PutNotificationEndpointsIDWithBody(ctx, endpointID, params, contentType, body) +// GetQuerySuggestions calls the GET on /query/suggestions +// Retrieve Flux query suggestions +func (c *Client) GetQuerySuggestions(ctx context.Context, params *GetQuerySuggestionsParams) (*FluxSuggestions, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePutNotificationEndpointsIDResponse(rsp) -} -func (c *ClientWithResponses) PutNotificationEndpointsIDWithResponse(ctx context.Context, endpointID string, params *PutNotificationEndpointsIDParams, body PutNotificationEndpointsIDJSONRequestBody) (*PutNotificationEndpointsIDResponse, error) { - rsp, err := c.PutNotificationEndpointsID(ctx, endpointID, params, body) + operationPath := fmt.Sprintf("./query/suggestions") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePutNotificationEndpointsIDResponse(rsp) -} -// GetNotificationEndpointsIDLabelsWithResponse request returning *GetNotificationEndpointsIDLabelsResponse -func (c *ClientWithResponses) GetNotificationEndpointsIDLabelsWithResponse(ctx context.Context, endpointID string, params *GetNotificationEndpointsIDLabelsParams) (*GetNotificationEndpointsIDLabelsResponse, error) { - rsp, err := c.GetNotificationEndpointsIDLabels(ctx, endpointID, params) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParseGetNotificationEndpointsIDLabelsResponse(rsp) -} -// PostNotificationEndpointIDLabelsWithBodyWithResponse request with arbitrary body returning *PostNotificationEndpointIDLabelsResponse -func (c *ClientWithResponses) PostNotificationEndpointIDLabelsWithBodyWithResponse(ctx context.Context, endpointID string, params *PostNotificationEndpointIDLabelsParams, contentType string, body io.Reader) (*PostNotificationEndpointIDLabelsResponse, error) { - rsp, err := c.PostNotificationEndpointIDLabelsWithBody(ctx, endpointID, params, contentType, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostNotificationEndpointIDLabelsResponse(rsp) -} -func (c *ClientWithResponses) PostNotificationEndpointIDLabelsWithResponse(ctx context.Context, endpointID string, params *PostNotificationEndpointIDLabelsParams, body PostNotificationEndpointIDLabelsJSONRequestBody) (*PostNotificationEndpointIDLabelsResponse, error) { - rsp, err := c.PostNotificationEndpointIDLabels(ctx, endpointID, params, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePostNotificationEndpointIDLabelsResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// DeleteNotificationEndpointsIDLabelsIDWithResponse request returning *DeleteNotificationEndpointsIDLabelsIDResponse -func (c *ClientWithResponses) DeleteNotificationEndpointsIDLabelsIDWithResponse(ctx context.Context, endpointID string, labelID string, params *DeleteNotificationEndpointsIDLabelsIDParams) (*DeleteNotificationEndpointsIDLabelsIDResponse, error) { - rsp, err := c.DeleteNotificationEndpointsIDLabelsID(ctx, endpointID, labelID, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseDeleteNotificationEndpointsIDLabelsIDResponse(rsp) -} -// GetNotificationRulesWithResponse request returning *GetNotificationRulesResponse -func (c *ClientWithResponses) GetNotificationRulesWithResponse(ctx context.Context, params *GetNotificationRulesParams) (*GetNotificationRulesResponse, error) { - rsp, err := c.GetNotificationRules(ctx, params) - if err != nil { - return nil, err + response := &FluxSuggestions{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParseGetNotificationRulesResponse(rsp) + return response, nil + } -// CreateNotificationRuleWithBodyWithResponse request with arbitrary body returning *CreateNotificationRuleResponse -func (c *ClientWithResponses) CreateNotificationRuleWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateNotificationRuleResponse, error) { - rsp, err := c.CreateNotificationRuleWithBody(ctx, contentType, body) +// GetQuerySuggestionsName calls the GET on /query/suggestions/{name} +// Retrieve a query suggestion for a branching suggestion +func (c *Client) GetQuerySuggestionsName(ctx context.Context, params *GetQuerySuggestionsNameAllParams) (*FluxSuggestion, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "name", runtime.ParamLocationPath, params.Name) if err != nil { return nil, err } - return ParseCreateNotificationRuleResponse(rsp) -} -func (c *ClientWithResponses) CreateNotificationRuleWithResponse(ctx context.Context, body CreateNotificationRuleJSONRequestBody) (*CreateNotificationRuleResponse, error) { - rsp, err := c.CreateNotificationRule(ctx, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseCreateNotificationRuleResponse(rsp) -} -// DeleteNotificationRulesIDWithResponse request returning *DeleteNotificationRulesIDResponse -func (c *ClientWithResponses) DeleteNotificationRulesIDWithResponse(ctx context.Context, ruleID string, params *DeleteNotificationRulesIDParams) (*DeleteNotificationRulesIDResponse, error) { - rsp, err := c.DeleteNotificationRulesID(ctx, ruleID, params) + operationPath := fmt.Sprintf("./query/suggestions/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParseDeleteNotificationRulesIDResponse(rsp) -} -// GetNotificationRulesIDWithResponse request returning *GetNotificationRulesIDResponse -func (c *ClientWithResponses) GetNotificationRulesIDWithResponse(ctx context.Context, ruleID string, params *GetNotificationRulesIDParams) (*GetNotificationRulesIDResponse, error) { - rsp, err := c.GetNotificationRulesID(ctx, ruleID, params) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParseGetNotificationRulesIDResponse(rsp) -} -// PatchNotificationRulesIDWithBodyWithResponse request with arbitrary body returning *PatchNotificationRulesIDResponse -func (c *ClientWithResponses) PatchNotificationRulesIDWithBodyWithResponse(ctx context.Context, ruleID string, params *PatchNotificationRulesIDParams, contentType string, body io.Reader) (*PatchNotificationRulesIDResponse, error) { - rsp, err := c.PatchNotificationRulesIDWithBody(ctx, ruleID, params, contentType, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePatchNotificationRulesIDResponse(rsp) -} -func (c *ClientWithResponses) PatchNotificationRulesIDWithResponse(ctx context.Context, ruleID string, params *PatchNotificationRulesIDParams, body PatchNotificationRulesIDJSONRequestBody) (*PatchNotificationRulesIDResponse, error) { - rsp, err := c.PatchNotificationRulesID(ctx, ruleID, params, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePatchNotificationRulesIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// PutNotificationRulesIDWithBodyWithResponse request with arbitrary body returning *PutNotificationRulesIDResponse -func (c *ClientWithResponses) PutNotificationRulesIDWithBodyWithResponse(ctx context.Context, ruleID string, params *PutNotificationRulesIDParams, contentType string, body io.Reader) (*PutNotificationRulesIDResponse, error) { - rsp, err := c.PutNotificationRulesIDWithBody(ctx, ruleID, params, contentType, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePutNotificationRulesIDResponse(rsp) -} -func (c *ClientWithResponses) PutNotificationRulesIDWithResponse(ctx context.Context, ruleID string, params *PutNotificationRulesIDParams, body PutNotificationRulesIDJSONRequestBody) (*PutNotificationRulesIDResponse, error) { - rsp, err := c.PutNotificationRulesID(ctx, ruleID, params, body) - if err != nil { - return nil, err + response := &FluxSuggestion{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePutNotificationRulesIDResponse(rsp) + return response, nil + } -// GetNotificationRulesIDLabelsWithResponse request returning *GetNotificationRulesIDLabelsResponse -func (c *ClientWithResponses) GetNotificationRulesIDLabelsWithResponse(ctx context.Context, ruleID string, params *GetNotificationRulesIDLabelsParams) (*GetNotificationRulesIDLabelsResponse, error) { - rsp, err := c.GetNotificationRulesIDLabels(ctx, ruleID, params) +// GetReady calls the GET on /ready +// Get the readiness of an instance at startup +func (c *Client) GetReady(ctx context.Context, params *GetReadyParams) (*Ready, error) { + var err error + + serverURL, err := url.Parse(c.Server) if err != nil { return nil, err } - return ParseGetNotificationRulesIDLabelsResponse(rsp) -} -// PostNotificationRuleIDLabelsWithBodyWithResponse request with arbitrary body returning *PostNotificationRuleIDLabelsResponse -func (c *ClientWithResponses) PostNotificationRuleIDLabelsWithBodyWithResponse(ctx context.Context, ruleID string, params *PostNotificationRuleIDLabelsParams, contentType string, body io.Reader) (*PostNotificationRuleIDLabelsResponse, error) { - rsp, err := c.PostNotificationRuleIDLabelsWithBody(ctx, ruleID, params, contentType, body) + operationPath := fmt.Sprintf("./ready") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePostNotificationRuleIDLabelsResponse(rsp) -} -func (c *ClientWithResponses) PostNotificationRuleIDLabelsWithResponse(ctx context.Context, ruleID string, params *PostNotificationRuleIDLabelsParams, body PostNotificationRuleIDLabelsJSONRequestBody) (*PostNotificationRuleIDLabelsResponse, error) { - rsp, err := c.PostNotificationRuleIDLabels(ctx, ruleID, params, body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParsePostNotificationRuleIDLabelsResponse(rsp) -} -// DeleteNotificationRulesIDLabelsIDWithResponse request returning *DeleteNotificationRulesIDLabelsIDResponse -func (c *ClientWithResponses) DeleteNotificationRulesIDLabelsIDWithResponse(ctx context.Context, ruleID string, labelID string, params *DeleteNotificationRulesIDLabelsIDParams) (*DeleteNotificationRulesIDLabelsIDResponse, error) { - rsp, err := c.DeleteNotificationRulesIDLabelsID(ctx, ruleID, labelID, params) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseDeleteNotificationRulesIDLabelsIDResponse(rsp) -} -// GetNotificationRulesIDQueryWithResponse request returning *GetNotificationRulesIDQueryResponse -func (c *ClientWithResponses) GetNotificationRulesIDQueryWithResponse(ctx context.Context, ruleID string, params *GetNotificationRulesIDQueryParams) (*GetNotificationRulesIDQueryResponse, error) { - rsp, err := c.GetNotificationRulesIDQuery(ctx, ruleID, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseGetNotificationRulesIDQueryResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// GetOrgsWithResponse request returning *GetOrgsResponse -func (c *ClientWithResponses) GetOrgsWithResponse(ctx context.Context, params *GetOrgsParams) (*GetOrgsResponse, error) { - rsp, err := c.GetOrgs(ctx, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseGetOrgsResponse(rsp) -} -// PostOrgsWithBodyWithResponse request with arbitrary body returning *PostOrgsResponse -func (c *ClientWithResponses) PostOrgsWithBodyWithResponse(ctx context.Context, params *PostOrgsParams, contentType string, body io.Reader) (*PostOrgsResponse, error) { - rsp, err := c.PostOrgsWithBody(ctx, params, contentType, body) - if err != nil { - return nil, err + response := &Ready{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePostOrgsResponse(rsp) + return response, nil + } -func (c *ClientWithResponses) PostOrgsWithResponse(ctx context.Context, params *PostOrgsParams, body PostOrgsJSONRequestBody) (*PostOrgsResponse, error) { - rsp, err := c.PostOrgs(ctx, params, body) +// GetRemoteConnections calls the GET on /remotes +// List all remote connections +func (c *Client) GetRemoteConnections(ctx context.Context, params *GetRemoteConnectionsParams) (*RemoteConnections, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePostOrgsResponse(rsp) -} -// DeleteOrgsIDWithResponse request returning *DeleteOrgsIDResponse -func (c *ClientWithResponses) DeleteOrgsIDWithResponse(ctx context.Context, orgID string, params *DeleteOrgsIDParams) (*DeleteOrgsIDResponse, error) { - rsp, err := c.DeleteOrgsID(ctx, orgID, params) + operationPath := fmt.Sprintf("./remotes") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParseDeleteOrgsIDResponse(rsp) -} -// GetOrgsIDWithResponse request returning *GetOrgsIDResponse -func (c *ClientWithResponses) GetOrgsIDWithResponse(ctx context.Context, orgID string, params *GetOrgsIDParams) (*GetOrgsIDResponse, error) { - rsp, err := c.GetOrgsID(ctx, orgID, params) - if err != nil { + queryValues := queryURL.Query() + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - return ParseGetOrgsIDResponse(rsp) -} -// PatchOrgsIDWithBodyWithResponse request with arbitrary body returning *PatchOrgsIDResponse -func (c *ClientWithResponses) PatchOrgsIDWithBodyWithResponse(ctx context.Context, orgID string, params *PatchOrgsIDParams, contentType string, body io.Reader) (*PatchOrgsIDResponse, error) { - rsp, err := c.PatchOrgsIDWithBody(ctx, orgID, params, contentType, body) - if err != nil { - return nil, err + if params.Name != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + } - return ParsePatchOrgsIDResponse(rsp) -} -func (c *ClientWithResponses) PatchOrgsIDWithResponse(ctx context.Context, orgID string, params *PatchOrgsIDParams, body PatchOrgsIDJSONRequestBody) (*PatchOrgsIDResponse, error) { - rsp, err := c.PatchOrgsID(ctx, orgID, params, body) - if err != nil { - return nil, err + if params.RemoteURL != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "remoteURL", runtime.ParamLocationQuery, *params.RemoteURL); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + } - return ParsePatchOrgsIDResponse(rsp) -} -// GetOrgsIDMembersWithResponse request returning *GetOrgsIDMembersResponse -func (c *ClientWithResponses) GetOrgsIDMembersWithResponse(ctx context.Context, orgID string, params *GetOrgsIDMembersParams) (*GetOrgsIDMembersResponse, error) { - rsp, err := c.GetOrgsIDMembers(ctx, orgID, params) + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParseGetOrgsIDMembersResponse(rsp) -} -// PostOrgsIDMembersWithBodyWithResponse request with arbitrary body returning *PostOrgsIDMembersResponse -func (c *ClientWithResponses) PostOrgsIDMembersWithBodyWithResponse(ctx context.Context, orgID string, params *PostOrgsIDMembersParams, contentType string, body io.Reader) (*PostOrgsIDMembersResponse, error) { - rsp, err := c.PostOrgsIDMembersWithBody(ctx, orgID, params, contentType, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostOrgsIDMembersResponse(rsp) -} -func (c *ClientWithResponses) PostOrgsIDMembersWithResponse(ctx context.Context, orgID string, params *PostOrgsIDMembersParams, body PostOrgsIDMembersJSONRequestBody) (*PostOrgsIDMembersResponse, error) { - rsp, err := c.PostOrgsIDMembers(ctx, orgID, params, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePostOrgsIDMembersResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// DeleteOrgsIDMembersIDWithResponse request returning *DeleteOrgsIDMembersIDResponse -func (c *ClientWithResponses) DeleteOrgsIDMembersIDWithResponse(ctx context.Context, orgID string, userID string, params *DeleteOrgsIDMembersIDParams) (*DeleteOrgsIDMembersIDResponse, error) { - rsp, err := c.DeleteOrgsIDMembersID(ctx, orgID, userID, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseDeleteOrgsIDMembersIDResponse(rsp) -} -// GetOrgsIDOwnersWithResponse request returning *GetOrgsIDOwnersResponse -func (c *ClientWithResponses) GetOrgsIDOwnersWithResponse(ctx context.Context, orgID string, params *GetOrgsIDOwnersParams) (*GetOrgsIDOwnersResponse, error) { - rsp, err := c.GetOrgsIDOwners(ctx, orgID, params) - if err != nil { - return nil, err + response := &RemoteConnections{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParseGetOrgsIDOwnersResponse(rsp) + return response, nil + } -// PostOrgsIDOwnersWithBodyWithResponse request with arbitrary body returning *PostOrgsIDOwnersResponse -func (c *ClientWithResponses) PostOrgsIDOwnersWithBodyWithResponse(ctx context.Context, orgID string, params *PostOrgsIDOwnersParams, contentType string, body io.Reader) (*PostOrgsIDOwnersResponse, error) { - rsp, err := c.PostOrgsIDOwnersWithBody(ctx, orgID, params, contentType, body) +// PostRemoteConnection calls the POST on /remotes +// Register a new remote connection +func (c *Client) PostRemoteConnection(ctx context.Context, params *PostRemoteConnectionAllParams) (*RemoteConnection, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParsePostOrgsIDOwnersResponse(rsp) -} + bodyReader = bytes.NewReader(buf) -func (c *ClientWithResponses) PostOrgsIDOwnersWithResponse(ctx context.Context, orgID string, params *PostOrgsIDOwnersParams, body PostOrgsIDOwnersJSONRequestBody) (*PostOrgsIDOwnersResponse, error) { - rsp, err := c.PostOrgsIDOwners(ctx, orgID, params, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePostOrgsIDOwnersResponse(rsp) -} -// DeleteOrgsIDOwnersIDWithResponse request returning *DeleteOrgsIDOwnersIDResponse -func (c *ClientWithResponses) DeleteOrgsIDOwnersIDWithResponse(ctx context.Context, orgID string, userID string, params *DeleteOrgsIDOwnersIDParams) (*DeleteOrgsIDOwnersIDResponse, error) { - rsp, err := c.DeleteOrgsIDOwnersID(ctx, orgID, userID, params) + operationPath := fmt.Sprintf("./remotes") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParseDeleteOrgsIDOwnersIDResponse(rsp) -} -// GetOrgsIDSecretsWithResponse request returning *GetOrgsIDSecretsResponse -func (c *ClientWithResponses) GetOrgsIDSecretsWithResponse(ctx context.Context, orgID string, params *GetOrgsIDSecretsParams) (*GetOrgsIDSecretsResponse, error) { - rsp, err := c.GetOrgsIDSecrets(ctx, orgID, params) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParseGetOrgsIDSecretsResponse(rsp) -} -// PatchOrgsIDSecretsWithBodyWithResponse request with arbitrary body returning *PatchOrgsIDSecretsResponse -func (c *ClientWithResponses) PatchOrgsIDSecretsWithBodyWithResponse(ctx context.Context, orgID string, params *PatchOrgsIDSecretsParams, contentType string, body io.Reader) (*PatchOrgsIDSecretsResponse, error) { - rsp, err := c.PatchOrgsIDSecretsWithBody(ctx, orgID, params, contentType, body) + req.Header.Add("Content-Type", "application/json") + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePatchOrgsIDSecretsResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -func (c *ClientWithResponses) PatchOrgsIDSecretsWithResponse(ctx context.Context, orgID string, params *PatchOrgsIDSecretsParams, body PatchOrgsIDSecretsJSONRequestBody) (*PatchOrgsIDSecretsResponse, error) { - rsp, err := c.PatchOrgsIDSecrets(ctx, orgID, params, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePatchOrgsIDSecretsResponse(rsp) -} -// PostOrgsIDSecretsWithBodyWithResponse request with arbitrary body returning *PostOrgsIDSecretsResponse -func (c *ClientWithResponses) PostOrgsIDSecretsWithBodyWithResponse(ctx context.Context, orgID string, params *PostOrgsIDSecretsParams, contentType string, body io.Reader) (*PostOrgsIDSecretsResponse, error) { - rsp, err := c.PostOrgsIDSecretsWithBody(ctx, orgID, params, contentType, body) - if err != nil { - return nil, err + response := &RemoteConnection{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePostOrgsIDSecretsResponse(rsp) + return response, nil + } -func (c *ClientWithResponses) PostOrgsIDSecretsWithResponse(ctx context.Context, orgID string, params *PostOrgsIDSecretsParams, body PostOrgsIDSecretsJSONRequestBody) (*PostOrgsIDSecretsResponse, error) { - rsp, err := c.PostOrgsIDSecrets(ctx, orgID, params, body) +// DeleteRemoteConnectionByID calls the DELETE on /remotes/{remoteID} +// Delete a remote connection +func (c *Client) DeleteRemoteConnectionByID(ctx context.Context, params *DeleteRemoteConnectionByIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "remoteID", runtime.ParamLocationPath, params.RemoteID) if err != nil { - return nil, err + return err } - return ParsePostOrgsIDSecretsResponse(rsp) -} -// DeleteOrgsIDSecretsIDWithResponse request returning *DeleteOrgsIDSecretsIDResponse -func (c *ClientWithResponses) DeleteOrgsIDSecretsIDWithResponse(ctx context.Context, orgID string, secretID string, params *DeleteOrgsIDSecretsIDParams) (*DeleteOrgsIDSecretsIDResponse, error) { - rsp, err := c.DeleteOrgsIDSecretsID(ctx, orgID, secretID, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - return ParseDeleteOrgsIDSecretsIDResponse(rsp) -} -// GetPingWithResponse request returning *GetPingResponse -func (c *ClientWithResponses) GetPingWithResponse(ctx context.Context) (*GetPingResponse, error) { - rsp, err := c.GetPing(ctx) + operationPath := fmt.Sprintf("./remotes/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParseGetPingResponse(rsp) -} -// HeadPingWithResponse request returning *HeadPingResponse -func (c *ClientWithResponses) HeadPingWithResponse(ctx context.Context) (*HeadPingResponse, error) { - rsp, err := c.HeadPing(ctx) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - return ParseHeadPingResponse(rsp) -} -// PostQueryWithBodyWithResponse request with arbitrary body returning *PostQueryResponse -func (c *ClientWithResponses) PostQueryWithBodyWithResponse(ctx context.Context, params *PostQueryParams, contentType string, body io.Reader) (*PostQueryResponse, error) { - rsp, err := c.PostQueryWithBody(ctx, params, contentType, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostQueryResponse(rsp) -} -func (c *ClientWithResponses) PostQueryWithResponse(ctx context.Context, params *PostQueryParams, body PostQueryJSONRequestBody) (*PostQueryResponse, error) { - rsp, err := c.PostQuery(ctx, params, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - return ParsePostQueryResponse(rsp) -} -// PostQueryAnalyzeWithBodyWithResponse request with arbitrary body returning *PostQueryAnalyzeResponse -func (c *ClientWithResponses) PostQueryAnalyzeWithBodyWithResponse(ctx context.Context, params *PostQueryAnalyzeParams, contentType string, body io.Reader) (*PostQueryAnalyzeResponse, error) { - rsp, err := c.PostQueryAnalyzeWithBody(ctx, params, contentType, body) - if err != nil { - return nil, err + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParsePostQueryAnalyzeResponse(rsp) + return nil + } -func (c *ClientWithResponses) PostQueryAnalyzeWithResponse(ctx context.Context, params *PostQueryAnalyzeParams, body PostQueryAnalyzeJSONRequestBody) (*PostQueryAnalyzeResponse, error) { - rsp, err := c.PostQueryAnalyze(ctx, params, body) +// GetRemoteConnectionByID calls the GET on /remotes/{remoteID} +// Retrieve a remote connection +func (c *Client) GetRemoteConnectionByID(ctx context.Context, params *GetRemoteConnectionByIDAllParams) (*RemoteConnection, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "remoteID", runtime.ParamLocationPath, params.RemoteID) if err != nil { return nil, err } - return ParsePostQueryAnalyzeResponse(rsp) -} -// PostQueryAstWithBodyWithResponse request with arbitrary body returning *PostQueryAstResponse -func (c *ClientWithResponses) PostQueryAstWithBodyWithResponse(ctx context.Context, params *PostQueryAstParams, contentType string, body io.Reader) (*PostQueryAstResponse, error) { - rsp, err := c.PostQueryAstWithBody(ctx, params, contentType, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePostQueryAstResponse(rsp) -} -func (c *ClientWithResponses) PostQueryAstWithResponse(ctx context.Context, params *PostQueryAstParams, body PostQueryAstJSONRequestBody) (*PostQueryAstResponse, error) { - rsp, err := c.PostQueryAst(ctx, params, body) + operationPath := fmt.Sprintf("./remotes/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePostQueryAstResponse(rsp) -} -// GetQuerySuggestionsWithResponse request returning *GetQuerySuggestionsResponse -func (c *ClientWithResponses) GetQuerySuggestionsWithResponse(ctx context.Context, params *GetQuerySuggestionsParams) (*GetQuerySuggestionsResponse, error) { - rsp, err := c.GetQuerySuggestions(ctx, params) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParseGetQuerySuggestionsResponse(rsp) -} -// GetQuerySuggestionsNameWithResponse request returning *GetQuerySuggestionsNameResponse -func (c *ClientWithResponses) GetQuerySuggestionsNameWithResponse(ctx context.Context, name string, params *GetQuerySuggestionsNameParams) (*GetQuerySuggestionsNameResponse, error) { - rsp, err := c.GetQuerySuggestionsName(ctx, name, params) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseGetQuerySuggestionsNameResponse(rsp) -} -// GetReadyWithResponse request returning *GetReadyResponse -func (c *ClientWithResponses) GetReadyWithResponse(ctx context.Context, params *GetReadyParams) (*GetReadyResponse, error) { - rsp, err := c.GetReady(ctx, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseGetReadyResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// GetRemoteConnectionsWithResponse request returning *GetRemoteConnectionsResponse -func (c *ClientWithResponses) GetRemoteConnectionsWithResponse(ctx context.Context, params *GetRemoteConnectionsParams) (*GetRemoteConnectionsResponse, error) { - rsp, err := c.GetRemoteConnections(ctx, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseGetRemoteConnectionsResponse(rsp) -} -// PostRemoteConnectionWithBodyWithResponse request with arbitrary body returning *PostRemoteConnectionResponse -func (c *ClientWithResponses) PostRemoteConnectionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*PostRemoteConnectionResponse, error) { - rsp, err := c.PostRemoteConnectionWithBody(ctx, contentType, body) - if err != nil { - return nil, err + response := &RemoteConnection{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePostRemoteConnectionResponse(rsp) + return response, nil + } -func (c *ClientWithResponses) PostRemoteConnectionWithResponse(ctx context.Context, body PostRemoteConnectionJSONRequestBody) (*PostRemoteConnectionResponse, error) { - rsp, err := c.PostRemoteConnection(ctx, body) +// PatchRemoteConnectionByID calls the PATCH on /remotes/{remoteID} +// Update a remote connection +func (c *Client) PatchRemoteConnectionByID(ctx context.Context, params *PatchRemoteConnectionByIDAllParams) (*RemoteConnection, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParsePostRemoteConnectionResponse(rsp) -} + bodyReader = bytes.NewReader(buf) + + var pathParam0 string -// DeleteRemoteConnectionByIDWithResponse request returning *DeleteRemoteConnectionByIDResponse -func (c *ClientWithResponses) DeleteRemoteConnectionByIDWithResponse(ctx context.Context, remoteID string, params *DeleteRemoteConnectionByIDParams) (*DeleteRemoteConnectionByIDResponse, error) { - rsp, err := c.DeleteRemoteConnectionByID(ctx, remoteID, params) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "remoteID", runtime.ParamLocationPath, params.RemoteID) if err != nil { return nil, err } - return ParseDeleteRemoteConnectionByIDResponse(rsp) -} -// GetRemoteConnectionByIDWithResponse request returning *GetRemoteConnectionByIDResponse -func (c *ClientWithResponses) GetRemoteConnectionByIDWithResponse(ctx context.Context, remoteID string, params *GetRemoteConnectionByIDParams) (*GetRemoteConnectionByIDResponse, error) { - rsp, err := c.GetRemoteConnectionByID(ctx, remoteID, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseGetRemoteConnectionByIDResponse(rsp) -} -// PatchRemoteConnectionByIDWithBodyWithResponse request with arbitrary body returning *PatchRemoteConnectionByIDResponse -func (c *ClientWithResponses) PatchRemoteConnectionByIDWithBodyWithResponse(ctx context.Context, remoteID string, params *PatchRemoteConnectionByIDParams, contentType string, body io.Reader) (*PatchRemoteConnectionByIDResponse, error) { - rsp, err := c.PatchRemoteConnectionByIDWithBody(ctx, remoteID, params, contentType, body) + operationPath := fmt.Sprintf("./remotes/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePatchRemoteConnectionByIDResponse(rsp) -} -func (c *ClientWithResponses) PatchRemoteConnectionByIDWithResponse(ctx context.Context, remoteID string, params *PatchRemoteConnectionByIDParams, body PatchRemoteConnectionByIDJSONRequestBody) (*PatchRemoteConnectionByIDResponse, error) { - rsp, err := c.PatchRemoteConnectionByID(ctx, remoteID, params, body) + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParsePatchRemoteConnectionByIDResponse(rsp) -} -// GetReplicationsWithResponse request returning *GetReplicationsResponse -func (c *ClientWithResponses) GetReplicationsWithResponse(ctx context.Context, params *GetReplicationsParams) (*GetReplicationsResponse, error) { - rsp, err := c.GetReplications(ctx, params) - if err != nil { - return nil, err + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseGetReplicationsResponse(rsp) -} -// PostReplicationWithBodyWithResponse request with arbitrary body returning *PostReplicationResponse -func (c *ClientWithResponses) PostReplicationWithBodyWithResponse(ctx context.Context, params *PostReplicationParams, contentType string, body io.Reader) (*PostReplicationResponse, error) { - rsp, err := c.PostReplicationWithBody(ctx, params, contentType, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePostReplicationResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -func (c *ClientWithResponses) PostReplicationWithResponse(ctx context.Context, params *PostReplicationParams, body PostReplicationJSONRequestBody) (*PostReplicationResponse, error) { - rsp, err := c.PostReplication(ctx, params, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePostReplicationResponse(rsp) -} -// DeleteReplicationByIDWithResponse request returning *DeleteReplicationByIDResponse -func (c *ClientWithResponses) DeleteReplicationByIDWithResponse(ctx context.Context, replicationID string, params *DeleteReplicationByIDParams) (*DeleteReplicationByIDResponse, error) { - rsp, err := c.DeleteReplicationByID(ctx, replicationID, params) - if err != nil { - return nil, err + response := &RemoteConnection{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParseDeleteReplicationByIDResponse(rsp) + return response, nil + } -// GetReplicationByIDWithResponse request returning *GetReplicationByIDResponse -func (c *ClientWithResponses) GetReplicationByIDWithResponse(ctx context.Context, replicationID string, params *GetReplicationByIDParams) (*GetReplicationByIDResponse, error) { - rsp, err := c.GetReplicationByID(ctx, replicationID, params) +// GetReplications calls the GET on /replications +// List all replications +func (c *Client) GetReplications(ctx context.Context, params *GetReplicationsParams) (*Replications, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseGetReplicationByIDResponse(rsp) -} -// PatchReplicationByIDWithBodyWithResponse request with arbitrary body returning *PatchReplicationByIDResponse -func (c *ClientWithResponses) PatchReplicationByIDWithBodyWithResponse(ctx context.Context, replicationID string, params *PatchReplicationByIDParams, contentType string, body io.Reader) (*PatchReplicationByIDResponse, error) { - rsp, err := c.PatchReplicationByIDWithBody(ctx, replicationID, params, contentType, body) + operationPath := fmt.Sprintf("./replications") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePatchReplicationByIDResponse(rsp) -} -func (c *ClientWithResponses) PatchReplicationByIDWithResponse(ctx context.Context, replicationID string, params *PatchReplicationByIDParams, body PatchReplicationByIDJSONRequestBody) (*PatchReplicationByIDResponse, error) { - rsp, err := c.PatchReplicationByID(ctx, replicationID, params, body) - if err != nil { + queryValues := queryURL.Query() + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - return ParsePatchReplicationByIDResponse(rsp) -} -// PostValidateReplicationByIDWithResponse request returning *PostValidateReplicationByIDResponse -func (c *ClientWithResponses) PostValidateReplicationByIDWithResponse(ctx context.Context, replicationID string, params *PostValidateReplicationByIDParams) (*PostValidateReplicationByIDResponse, error) { - rsp, err := c.PostValidateReplicationByID(ctx, replicationID, params) - if err != nil { - return nil, err + if params.Name != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + } - return ParsePostValidateReplicationByIDResponse(rsp) -} -// GetResourcesWithResponse request returning *GetResourcesResponse -func (c *ClientWithResponses) GetResourcesWithResponse(ctx context.Context, params *GetResourcesParams) (*GetResourcesResponse, error) { - rsp, err := c.GetResources(ctx, params) - if err != nil { - return nil, err + if params.RemoteID != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "remoteID", runtime.ParamLocationQuery, *params.RemoteID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + } - return ParseGetResourcesResponse(rsp) -} -// PostRestoreBucketIDWithBodyWithResponse request with arbitrary body returning *PostRestoreBucketIDResponse -func (c *ClientWithResponses) PostRestoreBucketIDWithBodyWithResponse(ctx context.Context, bucketID string, params *PostRestoreBucketIDParams, contentType string, body io.Reader) (*PostRestoreBucketIDResponse, error) { - rsp, err := c.PostRestoreBucketIDWithBody(ctx, bucketID, params, contentType, body) - if err != nil { - return nil, err + if params.LocalBucketID != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "localBucketID", runtime.ParamLocationQuery, *params.LocalBucketID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + } - return ParsePostRestoreBucketIDResponse(rsp) -} -// PostRestoreBucketMetadataWithBodyWithResponse request with arbitrary body returning *PostRestoreBucketMetadataResponse -func (c *ClientWithResponses) PostRestoreBucketMetadataWithBodyWithResponse(ctx context.Context, params *PostRestoreBucketMetadataParams, contentType string, body io.Reader) (*PostRestoreBucketMetadataResponse, error) { - rsp, err := c.PostRestoreBucketMetadataWithBody(ctx, params, contentType, body) + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParsePostRestoreBucketMetadataResponse(rsp) -} -func (c *ClientWithResponses) PostRestoreBucketMetadataWithResponse(ctx context.Context, params *PostRestoreBucketMetadataParams, body PostRestoreBucketMetadataJSONRequestBody) (*PostRestoreBucketMetadataResponse, error) { - rsp, err := c.PostRestoreBucketMetadata(ctx, params, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostRestoreBucketMetadataResponse(rsp) -} -// PostRestoreKVWithBodyWithResponse request with arbitrary body returning *PostRestoreKVResponse -func (c *ClientWithResponses) PostRestoreKVWithBodyWithResponse(ctx context.Context, params *PostRestoreKVParams, contentType string, body io.Reader) (*PostRestoreKVResponse, error) { - rsp, err := c.PostRestoreKVWithBody(ctx, params, contentType, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePostRestoreKVResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// PostRestoreShardIdWithBodyWithResponse request with arbitrary body returning *PostRestoreShardIdResponse -func (c *ClientWithResponses) PostRestoreShardIdWithBodyWithResponse(ctx context.Context, shardID string, params *PostRestoreShardIdParams, contentType string, body io.Reader) (*PostRestoreShardIdResponse, error) { - rsp, err := c.PostRestoreShardIdWithBody(ctx, shardID, params, contentType, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePostRestoreShardIdResponse(rsp) -} -// PostRestoreSQLWithBodyWithResponse request with arbitrary body returning *PostRestoreSQLResponse -func (c *ClientWithResponses) PostRestoreSQLWithBodyWithResponse(ctx context.Context, params *PostRestoreSQLParams, contentType string, body io.Reader) (*PostRestoreSQLResponse, error) { - rsp, err := c.PostRestoreSQLWithBody(ctx, params, contentType, body) - if err != nil { - return nil, err + response := &Replications{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePostRestoreSQLResponse(rsp) + return response, nil + } -// GetScrapersWithResponse request returning *GetScrapersResponse -func (c *ClientWithResponses) GetScrapersWithResponse(ctx context.Context, params *GetScrapersParams) (*GetScrapersResponse, error) { - rsp, err := c.GetScrapers(ctx, params) +// PostReplication calls the POST on /replications +// Register a new replication +func (c *Client) PostReplication(ctx context.Context, params *PostReplicationAllParams) (*Replication, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParseGetScrapersResponse(rsp) -} + bodyReader = bytes.NewReader(buf) -// PostScrapersWithBodyWithResponse request with arbitrary body returning *PostScrapersResponse -func (c *ClientWithResponses) PostScrapersWithBodyWithResponse(ctx context.Context, params *PostScrapersParams, contentType string, body io.Reader) (*PostScrapersResponse, error) { - rsp, err := c.PostScrapersWithBody(ctx, params, contentType, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePostScrapersResponse(rsp) -} -func (c *ClientWithResponses) PostScrapersWithResponse(ctx context.Context, params *PostScrapersParams, body PostScrapersJSONRequestBody) (*PostScrapersResponse, error) { - rsp, err := c.PostScrapers(ctx, params, body) + operationPath := fmt.Sprintf("./replications") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePostScrapersResponse(rsp) -} -// DeleteScrapersIDWithResponse request returning *DeleteScrapersIDResponse -func (c *ClientWithResponses) DeleteScrapersIDWithResponse(ctx context.Context, scraperTargetID string, params *DeleteScrapersIDParams) (*DeleteScrapersIDResponse, error) { - rsp, err := c.DeleteScrapersID(ctx, scraperTargetID, params) - if err != nil { - return nil, err + queryValues := queryURL.Query() + + if params.Validate != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "validate", runtime.ParamLocationQuery, *params.Validate); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + } - return ParseDeleteScrapersIDResponse(rsp) -} -// GetScrapersIDWithResponse request returning *GetScrapersIDResponse -func (c *ClientWithResponses) GetScrapersIDWithResponse(ctx context.Context, scraperTargetID string, params *GetScrapersIDParams) (*GetScrapersIDResponse, error) { - rsp, err := c.GetScrapersID(ctx, scraperTargetID, params) + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParseGetScrapersIDResponse(rsp) -} -// PatchScrapersIDWithBodyWithResponse request with arbitrary body returning *PatchScrapersIDResponse -func (c *ClientWithResponses) PatchScrapersIDWithBodyWithResponse(ctx context.Context, scraperTargetID string, params *PatchScrapersIDParams, contentType string, body io.Reader) (*PatchScrapersIDResponse, error) { - rsp, err := c.PatchScrapersIDWithBody(ctx, scraperTargetID, params, contentType, body) - if err != nil { - return nil, err + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePatchScrapersIDResponse(rsp) -} -func (c *ClientWithResponses) PatchScrapersIDWithResponse(ctx context.Context, scraperTargetID string, params *PatchScrapersIDParams, body PatchScrapersIDJSONRequestBody) (*PatchScrapersIDResponse, error) { - rsp, err := c.PatchScrapersID(ctx, scraperTargetID, params, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePatchScrapersIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// GetScrapersIDLabelsWithResponse request returning *GetScrapersIDLabelsResponse -func (c *ClientWithResponses) GetScrapersIDLabelsWithResponse(ctx context.Context, scraperTargetID string, params *GetScrapersIDLabelsParams) (*GetScrapersIDLabelsResponse, error) { - rsp, err := c.GetScrapersIDLabels(ctx, scraperTargetID, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseGetScrapersIDLabelsResponse(rsp) -} -// PostScrapersIDLabelsWithBodyWithResponse request with arbitrary body returning *PostScrapersIDLabelsResponse -func (c *ClientWithResponses) PostScrapersIDLabelsWithBodyWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDLabelsParams, contentType string, body io.Reader) (*PostScrapersIDLabelsResponse, error) { - rsp, err := c.PostScrapersIDLabelsWithBody(ctx, scraperTargetID, params, contentType, body) - if err != nil { - return nil, err + response := &Replication{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePostScrapersIDLabelsResponse(rsp) + return response, nil + } -func (c *ClientWithResponses) PostScrapersIDLabelsWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDLabelsParams, body PostScrapersIDLabelsJSONRequestBody) (*PostScrapersIDLabelsResponse, error) { - rsp, err := c.PostScrapersIDLabels(ctx, scraperTargetID, params, body) +// DeleteReplicationByID calls the DELETE on /replications/{replicationID} +// Delete a replication +func (c *Client) DeleteReplicationByID(ctx context.Context, params *DeleteReplicationByIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "replicationID", runtime.ParamLocationPath, params.ReplicationID) if err != nil { - return nil, err + return err } - return ParsePostScrapersIDLabelsResponse(rsp) -} -// DeleteScrapersIDLabelsIDWithResponse request returning *DeleteScrapersIDLabelsIDResponse -func (c *ClientWithResponses) DeleteScrapersIDLabelsIDWithResponse(ctx context.Context, scraperTargetID string, labelID string, params *DeleteScrapersIDLabelsIDParams) (*DeleteScrapersIDLabelsIDResponse, error) { - rsp, err := c.DeleteScrapersIDLabelsID(ctx, scraperTargetID, labelID, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - return ParseDeleteScrapersIDLabelsIDResponse(rsp) -} -// GetScrapersIDMembersWithResponse request returning *GetScrapersIDMembersResponse -func (c *ClientWithResponses) GetScrapersIDMembersWithResponse(ctx context.Context, scraperTargetID string, params *GetScrapersIDMembersParams) (*GetScrapersIDMembersResponse, error) { - rsp, err := c.GetScrapersIDMembers(ctx, scraperTargetID, params) + operationPath := fmt.Sprintf("./replications/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParseGetScrapersIDMembersResponse(rsp) -} -// PostScrapersIDMembersWithBodyWithResponse request with arbitrary body returning *PostScrapersIDMembersResponse -func (c *ClientWithResponses) PostScrapersIDMembersWithBodyWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDMembersParams, contentType string, body io.Reader) (*PostScrapersIDMembersResponse, error) { - rsp, err := c.PostScrapersIDMembersWithBody(ctx, scraperTargetID, params, contentType, body) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - return ParsePostScrapersIDMembersResponse(rsp) -} -func (c *ClientWithResponses) PostScrapersIDMembersWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDMembersParams, body PostScrapersIDMembersJSONRequestBody) (*PostScrapersIDMembersResponse, error) { - rsp, err := c.PostScrapersIDMembers(ctx, scraperTargetID, params, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostScrapersIDMembersResponse(rsp) -} -// DeleteScrapersIDMembersIDWithResponse request returning *DeleteScrapersIDMembersIDResponse -func (c *ClientWithResponses) DeleteScrapersIDMembersIDWithResponse(ctx context.Context, scraperTargetID string, userID string, params *DeleteScrapersIDMembersIDParams) (*DeleteScrapersIDMembersIDResponse, error) { - rsp, err := c.DeleteScrapersIDMembersID(ctx, scraperTargetID, userID, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - return ParseDeleteScrapersIDMembersIDResponse(rsp) -} -// GetScrapersIDOwnersWithResponse request returning *GetScrapersIDOwnersResponse -func (c *ClientWithResponses) GetScrapersIDOwnersWithResponse(ctx context.Context, scraperTargetID string, params *GetScrapersIDOwnersParams) (*GetScrapersIDOwnersResponse, error) { - rsp, err := c.GetScrapersIDOwners(ctx, scraperTargetID, params) - if err != nil { - return nil, err + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParseGetScrapersIDOwnersResponse(rsp) + return nil + } -// PostScrapersIDOwnersWithBodyWithResponse request with arbitrary body returning *PostScrapersIDOwnersResponse -func (c *ClientWithResponses) PostScrapersIDOwnersWithBodyWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDOwnersParams, contentType string, body io.Reader) (*PostScrapersIDOwnersResponse, error) { - rsp, err := c.PostScrapersIDOwnersWithBody(ctx, scraperTargetID, params, contentType, body) +// GetReplicationByID calls the GET on /replications/{replicationID} +// Retrieve a replication +func (c *Client) GetReplicationByID(ctx context.Context, params *GetReplicationByIDAllParams) (*Replication, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "replicationID", runtime.ParamLocationPath, params.ReplicationID) if err != nil { return nil, err } - return ParsePostScrapersIDOwnersResponse(rsp) -} -func (c *ClientWithResponses) PostScrapersIDOwnersWithResponse(ctx context.Context, scraperTargetID string, params *PostScrapersIDOwnersParams, body PostScrapersIDOwnersJSONRequestBody) (*PostScrapersIDOwnersResponse, error) { - rsp, err := c.PostScrapersIDOwners(ctx, scraperTargetID, params, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePostScrapersIDOwnersResponse(rsp) -} -// DeleteScrapersIDOwnersIDWithResponse request returning *DeleteScrapersIDOwnersIDResponse -func (c *ClientWithResponses) DeleteScrapersIDOwnersIDWithResponse(ctx context.Context, scraperTargetID string, userID string, params *DeleteScrapersIDOwnersIDParams) (*DeleteScrapersIDOwnersIDResponse, error) { - rsp, err := c.DeleteScrapersIDOwnersID(ctx, scraperTargetID, userID, params) + operationPath := fmt.Sprintf("./replications/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParseDeleteScrapersIDOwnersIDResponse(rsp) -} -// GetSetupWithResponse request returning *GetSetupResponse -func (c *ClientWithResponses) GetSetupWithResponse(ctx context.Context, params *GetSetupParams) (*GetSetupResponse, error) { - rsp, err := c.GetSetup(ctx, params) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParseGetSetupResponse(rsp) -} -// PostSetupWithBodyWithResponse request with arbitrary body returning *PostSetupResponse -func (c *ClientWithResponses) PostSetupWithBodyWithResponse(ctx context.Context, params *PostSetupParams, contentType string, body io.Reader) (*PostSetupResponse, error) { - rsp, err := c.PostSetupWithBody(ctx, params, contentType, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostSetupResponse(rsp) -} -func (c *ClientWithResponses) PostSetupWithResponse(ctx context.Context, params *PostSetupParams, body PostSetupJSONRequestBody) (*PostSetupResponse, error) { - rsp, err := c.PostSetup(ctx, params, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePostSetupResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// PostSigninWithResponse request returning *PostSigninResponse -func (c *ClientWithResponses) PostSigninWithResponse(ctx context.Context, params *PostSigninParams) (*PostSigninResponse, error) { - rsp, err := c.PostSignin(ctx, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePostSigninResponse(rsp) -} -// PostSignoutWithResponse request returning *PostSignoutResponse -func (c *ClientWithResponses) PostSignoutWithResponse(ctx context.Context, params *PostSignoutParams) (*PostSignoutResponse, error) { - rsp, err := c.PostSignout(ctx, params) - if err != nil { - return nil, err + response := &Replication{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePostSignoutResponse(rsp) + return response, nil + } -// GetSourcesWithResponse request returning *GetSourcesResponse -func (c *ClientWithResponses) GetSourcesWithResponse(ctx context.Context, params *GetSourcesParams) (*GetSourcesResponse, error) { - rsp, err := c.GetSources(ctx, params) +// PatchReplicationByID calls the PATCH on /replications/{replicationID} +// Update a replication +func (c *Client) PatchReplicationByID(ctx context.Context, params *PatchReplicationByIDAllParams) (*Replication, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParseGetSourcesResponse(rsp) -} + bodyReader = bytes.NewReader(buf) + + var pathParam0 string -// PostSourcesWithBodyWithResponse request with arbitrary body returning *PostSourcesResponse -func (c *ClientWithResponses) PostSourcesWithBodyWithResponse(ctx context.Context, params *PostSourcesParams, contentType string, body io.Reader) (*PostSourcesResponse, error) { - rsp, err := c.PostSourcesWithBody(ctx, params, contentType, body) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "replicationID", runtime.ParamLocationPath, params.ReplicationID) if err != nil { return nil, err } - return ParsePostSourcesResponse(rsp) -} -func (c *ClientWithResponses) PostSourcesWithResponse(ctx context.Context, params *PostSourcesParams, body PostSourcesJSONRequestBody) (*PostSourcesResponse, error) { - rsp, err := c.PostSources(ctx, params, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePostSourcesResponse(rsp) -} -// DeleteSourcesIDWithResponse request returning *DeleteSourcesIDResponse -func (c *ClientWithResponses) DeleteSourcesIDWithResponse(ctx context.Context, sourceID string, params *DeleteSourcesIDParams) (*DeleteSourcesIDResponse, error) { - rsp, err := c.DeleteSourcesID(ctx, sourceID, params) + operationPath := fmt.Sprintf("./replications/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParseDeleteSourcesIDResponse(rsp) -} -// GetSourcesIDWithResponse request returning *GetSourcesIDResponse -func (c *ClientWithResponses) GetSourcesIDWithResponse(ctx context.Context, sourceID string, params *GetSourcesIDParams) (*GetSourcesIDResponse, error) { - rsp, err := c.GetSourcesID(ctx, sourceID, params) - if err != nil { - return nil, err + queryValues := queryURL.Query() + + if params.Validate != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "validate", runtime.ParamLocationQuery, *params.Validate); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + } - return ParseGetSourcesIDResponse(rsp) -} -// PatchSourcesIDWithBodyWithResponse request with arbitrary body returning *PatchSourcesIDResponse -func (c *ClientWithResponses) PatchSourcesIDWithBodyWithResponse(ctx context.Context, sourceID string, params *PatchSourcesIDParams, contentType string, body io.Reader) (*PatchSourcesIDResponse, error) { - rsp, err := c.PatchSourcesIDWithBody(ctx, sourceID, params, contentType, body) + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParsePatchSourcesIDResponse(rsp) -} -func (c *ClientWithResponses) PatchSourcesIDWithResponse(ctx context.Context, sourceID string, params *PatchSourcesIDParams, body PatchSourcesIDJSONRequestBody) (*PatchSourcesIDResponse, error) { - rsp, err := c.PatchSourcesID(ctx, sourceID, params, body) - if err != nil { - return nil, err + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePatchSourcesIDResponse(rsp) -} -// GetSourcesIDBucketsWithResponse request returning *GetSourcesIDBucketsResponse -func (c *ClientWithResponses) GetSourcesIDBucketsWithResponse(ctx context.Context, sourceID string, params *GetSourcesIDBucketsParams) (*GetSourcesIDBucketsResponse, error) { - rsp, err := c.GetSourcesIDBuckets(ctx, sourceID, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseGetSourcesIDBucketsResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// GetSourcesIDHealthWithResponse request returning *GetSourcesIDHealthResponse -func (c *ClientWithResponses) GetSourcesIDHealthWithResponse(ctx context.Context, sourceID string, params *GetSourcesIDHealthParams) (*GetSourcesIDHealthResponse, error) { - rsp, err := c.GetSourcesIDHealth(ctx, sourceID, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseGetSourcesIDHealthResponse(rsp) -} -// ListStacksWithResponse request returning *ListStacksResponse -func (c *ClientWithResponses) ListStacksWithResponse(ctx context.Context, params *ListStacksParams) (*ListStacksResponse, error) { - rsp, err := c.ListStacks(ctx, params) - if err != nil { - return nil, err + response := &Replication{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParseListStacksResponse(rsp) + return response, nil + } -// CreateStackWithBodyWithResponse request with arbitrary body returning *CreateStackResponse -func (c *ClientWithResponses) CreateStackWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateStackResponse, error) { - rsp, err := c.CreateStackWithBody(ctx, contentType, body) +// PostValidateReplicationByID calls the POST on /replications/{replicationID}/validate +// Validate a replication +func (c *Client) PostValidateReplicationByID(ctx context.Context, params *PostValidateReplicationByIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "replicationID", runtime.ParamLocationPath, params.ReplicationID) if err != nil { - return nil, err + return err } - return ParseCreateStackResponse(rsp) -} -func (c *ClientWithResponses) CreateStackWithResponse(ctx context.Context, body CreateStackJSONRequestBody) (*CreateStackResponse, error) { - rsp, err := c.CreateStack(ctx, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - return ParseCreateStackResponse(rsp) -} -// DeleteStackWithResponse request returning *DeleteStackResponse -func (c *ClientWithResponses) DeleteStackWithResponse(ctx context.Context, stackId string, params *DeleteStackParams) (*DeleteStackResponse, error) { - rsp, err := c.DeleteStack(ctx, stackId, params) + operationPath := fmt.Sprintf("./replications/%s/validate", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParseDeleteStackResponse(rsp) -} -// ReadStackWithResponse request returning *ReadStackResponse -func (c *ClientWithResponses) ReadStackWithResponse(ctx context.Context, stackId string) (*ReadStackResponse, error) { - rsp, err := c.ReadStack(ctx, stackId) + req, err := http.NewRequest("POST", queryURL.String(), nil) if err != nil { - return nil, err + return err } - return ParseReadStackResponse(rsp) -} -// UpdateStackWithBodyWithResponse request with arbitrary body returning *UpdateStackResponse -func (c *ClientWithResponses) UpdateStackWithBodyWithResponse(ctx context.Context, stackId string, contentType string, body io.Reader) (*UpdateStackResponse, error) { - rsp, err := c.UpdateStackWithBody(ctx, stackId, contentType, body) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseUpdateStackResponse(rsp) -} -func (c *ClientWithResponses) UpdateStackWithResponse(ctx context.Context, stackId string, body UpdateStackJSONRequestBody) (*UpdateStackResponse, error) { - rsp, err := c.UpdateStack(ctx, stackId, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - return ParseUpdateStackResponse(rsp) -} -// UninstallStackWithResponse request returning *UninstallStackResponse -func (c *ClientWithResponses) UninstallStackWithResponse(ctx context.Context, stackId string) (*UninstallStackResponse, error) { - rsp, err := c.UninstallStack(ctx, stackId) - if err != nil { - return nil, err + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParseUninstallStackResponse(rsp) + return nil + } -// GetTasksWithResponse request returning *GetTasksResponse -func (c *ClientWithResponses) GetTasksWithResponse(ctx context.Context, params *GetTasksParams) (*GetTasksResponse, error) { - rsp, err := c.GetTasks(ctx, params) +// GetResources calls the GET on /resources +// List all known resources +func (c *Client) GetResources(ctx context.Context, params *GetResourcesParams) (*[]string, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseGetTasksResponse(rsp) -} -// PostTasksWithBodyWithResponse request with arbitrary body returning *PostTasksResponse -func (c *ClientWithResponses) PostTasksWithBodyWithResponse(ctx context.Context, params *PostTasksParams, contentType string, body io.Reader) (*PostTasksResponse, error) { - rsp, err := c.PostTasksWithBody(ctx, params, contentType, body) + operationPath := fmt.Sprintf("./resources") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePostTasksResponse(rsp) -} -func (c *ClientWithResponses) PostTasksWithResponse(ctx context.Context, params *PostTasksParams, body PostTasksJSONRequestBody) (*PostTasksResponse, error) { - rsp, err := c.PostTasks(ctx, params, body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParsePostTasksResponse(rsp) -} -// DeleteTasksIDWithResponse request returning *DeleteTasksIDResponse -func (c *ClientWithResponses) DeleteTasksIDWithResponse(ctx context.Context, taskID string, params *DeleteTasksIDParams) (*DeleteTasksIDResponse, error) { - rsp, err := c.DeleteTasksID(ctx, taskID, params) - if err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseDeleteTasksIDResponse(rsp) -} -// GetTasksIDWithResponse request returning *GetTasksIDResponse -func (c *ClientWithResponses) GetTasksIDWithResponse(ctx context.Context, taskID string, params *GetTasksIDParams) (*GetTasksIDResponse, error) { - rsp, err := c.GetTasksID(ctx, taskID, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseGetTasksIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// PatchTasksIDWithBodyWithResponse request with arbitrary body returning *PatchTasksIDResponse -func (c *ClientWithResponses) PatchTasksIDWithBodyWithResponse(ctx context.Context, taskID string, params *PatchTasksIDParams, contentType string, body io.Reader) (*PatchTasksIDResponse, error) { - rsp, err := c.PatchTasksIDWithBody(ctx, taskID, params, contentType, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePatchTasksIDResponse(rsp) -} -func (c *ClientWithResponses) PatchTasksIDWithResponse(ctx context.Context, taskID string, params *PatchTasksIDParams, body PatchTasksIDJSONRequestBody) (*PatchTasksIDResponse, error) { - rsp, err := c.PatchTasksID(ctx, taskID, params, body) - if err != nil { - return nil, err + response := &[]string{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePatchTasksIDResponse(rsp) + return response, nil + } -// GetTasksIDLabelsWithResponse request returning *GetTasksIDLabelsResponse -func (c *ClientWithResponses) GetTasksIDLabelsWithResponse(ctx context.Context, taskID string, params *GetTasksIDLabelsParams) (*GetTasksIDLabelsResponse, error) { - rsp, err := c.GetTasksIDLabels(ctx, taskID, params) +// PostRestoreBucketMetadata calls the POST on /restore/bucketMetadata +// Create a new bucket pre-seeded with shard info from a backup. +func (c *Client) PostRestoreBucketMetadata(ctx context.Context, params *PostRestoreBucketMetadataAllParams) (*RestoredBucketMappings, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParseGetTasksIDLabelsResponse(rsp) -} + bodyReader = bytes.NewReader(buf) -// PostTasksIDLabelsWithBodyWithResponse request with arbitrary body returning *PostTasksIDLabelsResponse -func (c *ClientWithResponses) PostTasksIDLabelsWithBodyWithResponse(ctx context.Context, taskID string, params *PostTasksIDLabelsParams, contentType string, body io.Reader) (*PostTasksIDLabelsResponse, error) { - rsp, err := c.PostTasksIDLabelsWithBody(ctx, taskID, params, contentType, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePostTasksIDLabelsResponse(rsp) -} -func (c *ClientWithResponses) PostTasksIDLabelsWithResponse(ctx context.Context, taskID string, params *PostTasksIDLabelsParams, body PostTasksIDLabelsJSONRequestBody) (*PostTasksIDLabelsResponse, error) { - rsp, err := c.PostTasksIDLabels(ctx, taskID, params, body) + operationPath := fmt.Sprintf("./restore/bucketMetadata") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePostTasksIDLabelsResponse(rsp) -} -// DeleteTasksIDLabelsIDWithResponse request returning *DeleteTasksIDLabelsIDResponse -func (c *ClientWithResponses) DeleteTasksIDLabelsIDWithResponse(ctx context.Context, taskID string, labelID string, params *DeleteTasksIDLabelsIDParams) (*DeleteTasksIDLabelsIDResponse, error) { - rsp, err := c.DeleteTasksIDLabelsID(ctx, taskID, labelID, params) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParseDeleteTasksIDLabelsIDResponse(rsp) -} -// GetTasksIDLogsWithResponse request returning *GetTasksIDLogsResponse -func (c *ClientWithResponses) GetTasksIDLogsWithResponse(ctx context.Context, taskID string, params *GetTasksIDLogsParams) (*GetTasksIDLogsResponse, error) { - rsp, err := c.GetTasksIDLogs(ctx, taskID, params) - if err != nil { - return nil, err + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } + + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseGetTasksIDLogsResponse(rsp) -} -// GetTasksIDMembersWithResponse request returning *GetTasksIDMembersResponse -func (c *ClientWithResponses) GetTasksIDMembersWithResponse(ctx context.Context, taskID string, params *GetTasksIDMembersParams) (*GetTasksIDMembersResponse, error) { - rsp, err := c.GetTasksIDMembers(ctx, taskID, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseGetTasksIDMembersResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// PostTasksIDMembersWithBodyWithResponse request with arbitrary body returning *PostTasksIDMembersResponse -func (c *ClientWithResponses) PostTasksIDMembersWithBodyWithResponse(ctx context.Context, taskID string, params *PostTasksIDMembersParams, contentType string, body io.Reader) (*PostTasksIDMembersResponse, error) { - rsp, err := c.PostTasksIDMembersWithBody(ctx, taskID, params, contentType, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePostTasksIDMembersResponse(rsp) -} -func (c *ClientWithResponses) PostTasksIDMembersWithResponse(ctx context.Context, taskID string, params *PostTasksIDMembersParams, body PostTasksIDMembersJSONRequestBody) (*PostTasksIDMembersResponse, error) { - rsp, err := c.PostTasksIDMembers(ctx, taskID, params, body) - if err != nil { - return nil, err + response := &RestoredBucketMappings{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePostTasksIDMembersResponse(rsp) + return response, nil + } -// DeleteTasksIDMembersIDWithResponse request returning *DeleteTasksIDMembersIDResponse -func (c *ClientWithResponses) DeleteTasksIDMembersIDWithResponse(ctx context.Context, taskID string, userID string, params *DeleteTasksIDMembersIDParams) (*DeleteTasksIDMembersIDResponse, error) { - rsp, err := c.DeleteTasksIDMembersID(ctx, taskID, userID, params) +// GetScrapers calls the GET on /scrapers +// List all scraper targets +func (c *Client) GetScrapers(ctx context.Context, params *GetScrapersParams) (*ScraperTargetResponses, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseDeleteTasksIDMembersIDResponse(rsp) -} -// GetTasksIDOwnersWithResponse request returning *GetTasksIDOwnersResponse -func (c *ClientWithResponses) GetTasksIDOwnersWithResponse(ctx context.Context, taskID string, params *GetTasksIDOwnersParams) (*GetTasksIDOwnersResponse, error) { - rsp, err := c.GetTasksIDOwners(ctx, taskID, params) + operationPath := fmt.Sprintf("./scrapers") + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParseGetTasksIDOwnersResponse(rsp) -} -// PostTasksIDOwnersWithBodyWithResponse request with arbitrary body returning *PostTasksIDOwnersResponse -func (c *ClientWithResponses) PostTasksIDOwnersWithBodyWithResponse(ctx context.Context, taskID string, params *PostTasksIDOwnersParams, contentType string, body io.Reader) (*PostTasksIDOwnersResponse, error) { - rsp, err := c.PostTasksIDOwnersWithBody(ctx, taskID, params, contentType, body) - if err != nil { - return nil, err + queryValues := queryURL.Query() + + if params.Name != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + } - return ParsePostTasksIDOwnersResponse(rsp) -} -func (c *ClientWithResponses) PostTasksIDOwnersWithResponse(ctx context.Context, taskID string, params *PostTasksIDOwnersParams, body PostTasksIDOwnersJSONRequestBody) (*PostTasksIDOwnersResponse, error) { - rsp, err := c.PostTasksIDOwners(ctx, taskID, params, body) - if err != nil { - return nil, err + if params.Id != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "id", runtime.ParamLocationQuery, *params.Id); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.OrgID != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Org != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + } - return ParsePostTasksIDOwnersResponse(rsp) -} -// DeleteTasksIDOwnersIDWithResponse request returning *DeleteTasksIDOwnersIDResponse -func (c *ClientWithResponses) DeleteTasksIDOwnersIDWithResponse(ctx context.Context, taskID string, userID string, params *DeleteTasksIDOwnersIDParams) (*DeleteTasksIDOwnersIDResponse, error) { - rsp, err := c.DeleteTasksIDOwnersID(ctx, taskID, userID, params) - if err != nil { - return nil, err - } - return ParseDeleteTasksIDOwnersIDResponse(rsp) -} + queryURL.RawQuery = queryValues.Encode() -// GetTasksIDRunsWithResponse request returning *GetTasksIDRunsResponse -func (c *ClientWithResponses) GetTasksIDRunsWithResponse(ctx context.Context, taskID string, params *GetTasksIDRunsParams) (*GetTasksIDRunsResponse, error) { - rsp, err := c.GetTasksIDRuns(ctx, taskID, params) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParseGetTasksIDRunsResponse(rsp) -} -// PostTasksIDRunsWithBodyWithResponse request with arbitrary body returning *PostTasksIDRunsResponse -func (c *ClientWithResponses) PostTasksIDRunsWithBodyWithResponse(ctx context.Context, taskID string, params *PostTasksIDRunsParams, contentType string, body io.Reader) (*PostTasksIDRunsResponse, error) { - rsp, err := c.PostTasksIDRunsWithBody(ctx, taskID, params, contentType, body) - if err != nil { - return nil, err - } - return ParsePostTasksIDRunsResponse(rsp) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -func (c *ClientWithResponses) PostTasksIDRunsWithResponse(ctx context.Context, taskID string, params *PostTasksIDRunsParams, body PostTasksIDRunsJSONRequestBody) (*PostTasksIDRunsResponse, error) { - rsp, err := c.PostTasksIDRuns(ctx, taskID, params, body) - if err != nil { - return nil, err - } - return ParsePostTasksIDRunsResponse(rsp) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -// DeleteTasksIDRunsIDWithResponse request returning *DeleteTasksIDRunsIDResponse -func (c *ClientWithResponses) DeleteTasksIDRunsIDWithResponse(ctx context.Context, taskID string, runID string, params *DeleteTasksIDRunsIDParams) (*DeleteTasksIDRunsIDResponse, error) { - rsp, err := c.DeleteTasksIDRunsID(ctx, taskID, runID, params) - if err != nil { - return nil, err + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParseDeleteTasksIDRunsIDResponse(rsp) -} -// GetTasksIDRunsIDWithResponse request returning *GetTasksIDRunsIDResponse -func (c *ClientWithResponses) GetTasksIDRunsIDWithResponse(ctx context.Context, taskID string, runID string, params *GetTasksIDRunsIDParams) (*GetTasksIDRunsIDResponse, error) { - rsp, err := c.GetTasksIDRunsID(ctx, taskID, runID, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseGetTasksIDRunsIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// GetTasksIDRunsIDLogsWithResponse request returning *GetTasksIDRunsIDLogsResponse -func (c *ClientWithResponses) GetTasksIDRunsIDLogsWithResponse(ctx context.Context, taskID string, runID string, params *GetTasksIDRunsIDLogsParams) (*GetTasksIDRunsIDLogsResponse, error) { - rsp, err := c.GetTasksIDRunsIDLogs(ctx, taskID, runID, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseGetTasksIDRunsIDLogsResponse(rsp) -} -// PostTasksIDRunsIDRetryWithBodyWithResponse request with arbitrary body returning *PostTasksIDRunsIDRetryResponse -func (c *ClientWithResponses) PostTasksIDRunsIDRetryWithBodyWithResponse(ctx context.Context, taskID string, runID string, params *PostTasksIDRunsIDRetryParams, contentType string, body io.Reader) (*PostTasksIDRunsIDRetryResponse, error) { - rsp, err := c.PostTasksIDRunsIDRetryWithBody(ctx, taskID, runID, params, contentType, body) - if err != nil { - return nil, err - } - return ParsePostTasksIDRunsIDRetryResponse(rsp) -} + response := &ScraperTargetResponses{} -// GetTelegrafPluginsWithResponse request returning *GetTelegrafPluginsResponse -func (c *ClientWithResponses) GetTelegrafPluginsWithResponse(ctx context.Context, params *GetTelegrafPluginsParams) (*GetTelegrafPluginsResponse, error) { - rsp, err := c.GetTelegrafPlugins(ctx, params) - if err != nil { - return nil, err + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParseGetTelegrafPluginsResponse(rsp) -} + return response, nil -// GetTelegrafsWithResponse request returning *GetTelegrafsResponse -func (c *ClientWithResponses) GetTelegrafsWithResponse(ctx context.Context, params *GetTelegrafsParams) (*GetTelegrafsResponse, error) { - rsp, err := c.GetTelegrafs(ctx, params) - if err != nil { - return nil, err - } - return ParseGetTelegrafsResponse(rsp) } -// PostTelegrafsWithBodyWithResponse request with arbitrary body returning *PostTelegrafsResponse -func (c *ClientWithResponses) PostTelegrafsWithBodyWithResponse(ctx context.Context, params *PostTelegrafsParams, contentType string, body io.Reader) (*PostTelegrafsResponse, error) { - rsp, err := c.PostTelegrafsWithBody(ctx, params, contentType, body) +// PostScrapers calls the POST on /scrapers +// Create a scraper target +func (c *Client) PostScrapers(ctx context.Context, params *PostScrapersAllParams) (*ScraperTargetResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParsePostTelegrafsResponse(rsp) -} + bodyReader = bytes.NewReader(buf) -func (c *ClientWithResponses) PostTelegrafsWithResponse(ctx context.Context, params *PostTelegrafsParams, body PostTelegrafsJSONRequestBody) (*PostTelegrafsResponse, error) { - rsp, err := c.PostTelegrafs(ctx, params, body) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParsePostTelegrafsResponse(rsp) -} -// DeleteTelegrafsIDWithResponse request returning *DeleteTelegrafsIDResponse -func (c *ClientWithResponses) DeleteTelegrafsIDWithResponse(ctx context.Context, telegrafID string, params *DeleteTelegrafsIDParams) (*DeleteTelegrafsIDResponse, error) { - rsp, err := c.DeleteTelegrafsID(ctx, telegrafID, params) - if err != nil { - return nil, err - } - return ParseDeleteTelegrafsIDResponse(rsp) -} + operationPath := fmt.Sprintf("./scrapers") -// GetTelegrafsIDWithResponse request returning *GetTelegrafsIDResponse -func (c *ClientWithResponses) GetTelegrafsIDWithResponse(ctx context.Context, telegrafID string, params *GetTelegrafsIDParams) (*GetTelegrafsIDResponse, error) { - rsp, err := c.GetTelegrafsID(ctx, telegrafID, params) + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParseGetTelegrafsIDResponse(rsp) -} -// PutTelegrafsIDWithBodyWithResponse request with arbitrary body returning *PutTelegrafsIDResponse -func (c *ClientWithResponses) PutTelegrafsIDWithBodyWithResponse(ctx context.Context, telegrafID string, params *PutTelegrafsIDParams, contentType string, body io.Reader) (*PutTelegrafsIDResponse, error) { - rsp, err := c.PutTelegrafsIDWithBody(ctx, telegrafID, params, contentType, body) + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - return ParsePutTelegrafsIDResponse(rsp) -} -func (c *ClientWithResponses) PutTelegrafsIDWithResponse(ctx context.Context, telegrafID string, params *PutTelegrafsIDParams, body PutTelegrafsIDJSONRequestBody) (*PutTelegrafsIDResponse, error) { - rsp, err := c.PutTelegrafsID(ctx, telegrafID, params, body) - if err != nil { - return nil, err - } - return ParsePutTelegrafsIDResponse(rsp) -} + req.Header.Add("Content-Type", "application/json") -// GetTelegrafsIDLabelsWithResponse request returning *GetTelegrafsIDLabelsResponse -func (c *ClientWithResponses) GetTelegrafsIDLabelsWithResponse(ctx context.Context, telegrafID string, params *GetTelegrafsIDLabelsParams) (*GetTelegrafsIDLabelsResponse, error) { - rsp, err := c.GetTelegrafsIDLabels(ctx, telegrafID, params) - if err != nil { - return nil, err - } - return ParseGetTelegrafsIDLabelsResponse(rsp) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// PostTelegrafsIDLabelsWithBodyWithResponse request with arbitrary body returning *PostTelegrafsIDLabelsResponse -func (c *ClientWithResponses) PostTelegrafsIDLabelsWithBodyWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDLabelsParams, contentType string, body io.Reader) (*PostTelegrafsIDLabelsResponse, error) { - rsp, err := c.PostTelegrafsIDLabelsWithBody(ctx, telegrafID, params, contentType, body) - if err != nil { - return nil, err - } - return ParsePostTelegrafsIDLabelsResponse(rsp) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -func (c *ClientWithResponses) PostTelegrafsIDLabelsWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDLabelsParams, body PostTelegrafsIDLabelsJSONRequestBody) (*PostTelegrafsIDLabelsResponse, error) { - rsp, err := c.PostTelegrafsIDLabels(ctx, telegrafID, params, body) - if err != nil { - return nil, err + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostTelegrafsIDLabelsResponse(rsp) -} -// DeleteTelegrafsIDLabelsIDWithResponse request returning *DeleteTelegrafsIDLabelsIDResponse -func (c *ClientWithResponses) DeleteTelegrafsIDLabelsIDWithResponse(ctx context.Context, telegrafID string, labelID string, params *DeleteTelegrafsIDLabelsIDParams) (*DeleteTelegrafsIDLabelsIDResponse, error) { - rsp, err := c.DeleteTelegrafsIDLabelsID(ctx, telegrafID, labelID, params) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParseDeleteTelegrafsIDLabelsIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -// GetTelegrafsIDMembersWithResponse request returning *GetTelegrafsIDMembersResponse -func (c *ClientWithResponses) GetTelegrafsIDMembersWithResponse(ctx context.Context, telegrafID string, params *GetTelegrafsIDMembersParams) (*GetTelegrafsIDMembersResponse, error) { - rsp, err := c.GetTelegrafsIDMembers(ctx, telegrafID, params) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseGetTelegrafsIDMembersResponse(rsp) -} -// PostTelegrafsIDMembersWithBodyWithResponse request with arbitrary body returning *PostTelegrafsIDMembersResponse -func (c *ClientWithResponses) PostTelegrafsIDMembersWithBodyWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDMembersParams, contentType string, body io.Reader) (*PostTelegrafsIDMembersResponse, error) { - rsp, err := c.PostTelegrafsIDMembersWithBody(ctx, telegrafID, params, contentType, body) - if err != nil { - return nil, err - } - return ParsePostTelegrafsIDMembersResponse(rsp) -} + response := &ScraperTargetResponse{} -func (c *ClientWithResponses) PostTelegrafsIDMembersWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDMembersParams, body PostTelegrafsIDMembersJSONRequestBody) (*PostTelegrafsIDMembersResponse, error) { - rsp, err := c.PostTelegrafsIDMembers(ctx, telegrafID, params, body) - if err != nil { - return nil, err + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParsePostTelegrafsIDMembersResponse(rsp) -} + return response, nil -// DeleteTelegrafsIDMembersIDWithResponse request returning *DeleteTelegrafsIDMembersIDResponse -func (c *ClientWithResponses) DeleteTelegrafsIDMembersIDWithResponse(ctx context.Context, telegrafID string, userID string, params *DeleteTelegrafsIDMembersIDParams) (*DeleteTelegrafsIDMembersIDResponse, error) { - rsp, err := c.DeleteTelegrafsIDMembersID(ctx, telegrafID, userID, params) - if err != nil { - return nil, err - } - return ParseDeleteTelegrafsIDMembersIDResponse(rsp) } -// GetTelegrafsIDOwnersWithResponse request returning *GetTelegrafsIDOwnersResponse -func (c *ClientWithResponses) GetTelegrafsIDOwnersWithResponse(ctx context.Context, telegrafID string, params *GetTelegrafsIDOwnersParams) (*GetTelegrafsIDOwnersResponse, error) { - rsp, err := c.GetTelegrafsIDOwners(ctx, telegrafID, params) - if err != nil { - return nil, err - } - return ParseGetTelegrafsIDOwnersResponse(rsp) -} +// DeleteScrapersID calls the DELETE on /scrapers/{scraperTargetID} +// Delete a scraper target +func (c *Client) DeleteScrapersID(ctx context.Context, params *DeleteScrapersIDAllParams) error { + var err error -// PostTelegrafsIDOwnersWithBodyWithResponse request with arbitrary body returning *PostTelegrafsIDOwnersResponse -func (c *ClientWithResponses) PostTelegrafsIDOwnersWithBodyWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDOwnersParams, contentType string, body io.Reader) (*PostTelegrafsIDOwnersResponse, error) { - rsp, err := c.PostTelegrafsIDOwnersWithBody(ctx, telegrafID, params, contentType, body) - if err != nil { - return nil, err - } - return ParsePostTelegrafsIDOwnersResponse(rsp) -} + var pathParam0 string -func (c *ClientWithResponses) PostTelegrafsIDOwnersWithResponse(ctx context.Context, telegrafID string, params *PostTelegrafsIDOwnersParams, body PostTelegrafsIDOwnersJSONRequestBody) (*PostTelegrafsIDOwnersResponse, error) { - rsp, err := c.PostTelegrafsIDOwners(ctx, telegrafID, params, body) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) if err != nil { - return nil, err + return err } - return ParsePostTelegrafsIDOwnersResponse(rsp) -} -// DeleteTelegrafsIDOwnersIDWithResponse request returning *DeleteTelegrafsIDOwnersIDResponse -func (c *ClientWithResponses) DeleteTelegrafsIDOwnersIDWithResponse(ctx context.Context, telegrafID string, userID string, params *DeleteTelegrafsIDOwnersIDParams) (*DeleteTelegrafsIDOwnersIDResponse, error) { - rsp, err := c.DeleteTelegrafsIDOwnersID(ctx, telegrafID, userID, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - return ParseDeleteTelegrafsIDOwnersIDResponse(rsp) -} -// ApplyTemplateWithBodyWithResponse request with arbitrary body returning *ApplyTemplateResponse -func (c *ClientWithResponses) ApplyTemplateWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*ApplyTemplateResponse, error) { - rsp, err := c.ApplyTemplateWithBody(ctx, contentType, body) - if err != nil { - return nil, err - } - return ParseApplyTemplateResponse(rsp) -} + operationPath := fmt.Sprintf("./scrapers/%s", pathParam0) -func (c *ClientWithResponses) ApplyTemplateWithResponse(ctx context.Context, body ApplyTemplateJSONRequestBody) (*ApplyTemplateResponse, error) { - rsp, err := c.ApplyTemplate(ctx, body) + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - return ParseApplyTemplateResponse(rsp) -} -// ExportTemplateWithBodyWithResponse request with arbitrary body returning *ExportTemplateResponse -func (c *ClientWithResponses) ExportTemplateWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*ExportTemplateResponse, error) { - rsp, err := c.ExportTemplateWithBody(ctx, contentType, body) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - return ParseExportTemplateResponse(rsp) -} -func (c *ClientWithResponses) ExportTemplateWithResponse(ctx context.Context, body ExportTemplateJSONRequestBody) (*ExportTemplateResponse, error) { - rsp, err := c.ExportTemplate(ctx, body) - if err != nil { - return nil, err - } - return ParseExportTemplateResponse(rsp) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// GetUsersWithResponse request returning *GetUsersResponse -func (c *ClientWithResponses) GetUsersWithResponse(ctx context.Context, params *GetUsersParams) (*GetUsersResponse, error) { - rsp, err := c.GetUsers(ctx, params) - if err != nil { - return nil, err - } - return ParseGetUsersResponse(rsp) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err + } -// PostUsersWithBodyWithResponse request with arbitrary body returning *PostUsersResponse -func (c *ClientWithResponses) PostUsersWithBodyWithResponse(ctx context.Context, params *PostUsersParams, contentType string, body io.Reader) (*PostUsersResponse, error) { - rsp, err := c.PostUsersWithBody(ctx, params, contentType, body) - if err != nil { - return nil, err + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePostUsersResponse(rsp) -} -func (c *ClientWithResponses) PostUsersWithResponse(ctx context.Context, params *PostUsersParams, body PostUsersJSONRequestBody) (*PostUsersResponse, error) { - rsp, err := c.PostUsers(ctx, params, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - return ParsePostUsersResponse(rsp) -} -// DeleteUsersIDWithResponse request returning *DeleteUsersIDResponse -func (c *ClientWithResponses) DeleteUsersIDWithResponse(ctx context.Context, userID string, params *DeleteUsersIDParams) (*DeleteUsersIDResponse, error) { - rsp, err := c.DeleteUsersID(ctx, userID, params) - if err != nil { - return nil, err - } - return ParseDeleteUsersIDResponse(rsp) -} + defer func() { _ = rsp.Body.Close() }() -// GetUsersIDWithResponse request returning *GetUsersIDResponse -func (c *ClientWithResponses) GetUsersIDWithResponse(ctx context.Context, userID string, params *GetUsersIDParams) (*GetUsersIDResponse, error) { - rsp, err := c.GetUsersID(ctx, userID, params) - if err != nil { - return nil, err + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err + } + return decodeError(bodyBytes, rsp) } - return ParseGetUsersIDResponse(rsp) -} + return nil -// PatchUsersIDWithBodyWithResponse request with arbitrary body returning *PatchUsersIDResponse -func (c *ClientWithResponses) PatchUsersIDWithBodyWithResponse(ctx context.Context, userID string, params *PatchUsersIDParams, contentType string, body io.Reader) (*PatchUsersIDResponse, error) { - rsp, err := c.PatchUsersIDWithBody(ctx, userID, params, contentType, body) - if err != nil { - return nil, err - } - return ParsePatchUsersIDResponse(rsp) } -func (c *ClientWithResponses) PatchUsersIDWithResponse(ctx context.Context, userID string, params *PatchUsersIDParams, body PatchUsersIDJSONRequestBody) (*PatchUsersIDResponse, error) { - rsp, err := c.PatchUsersID(ctx, userID, params, body) - if err != nil { - return nil, err - } - return ParsePatchUsersIDResponse(rsp) -} +// GetScrapersID calls the GET on /scrapers/{scraperTargetID} +// Retrieve a scraper target +func (c *Client) GetScrapersID(ctx context.Context, params *GetScrapersIDAllParams) (*ScraperTargetResponse, error) { + var err error -// PostUsersIDPasswordWithBodyWithResponse request with arbitrary body returning *PostUsersIDPasswordResponse -func (c *ClientWithResponses) PostUsersIDPasswordWithBodyWithResponse(ctx context.Context, userID string, params *PostUsersIDPasswordParams, contentType string, body io.Reader) (*PostUsersIDPasswordResponse, error) { - rsp, err := c.PostUsersIDPasswordWithBody(ctx, userID, params, contentType, body) - if err != nil { - return nil, err - } - return ParsePostUsersIDPasswordResponse(rsp) -} + var pathParam0 string -func (c *ClientWithResponses) PostUsersIDPasswordWithResponse(ctx context.Context, userID string, params *PostUsersIDPasswordParams, body PostUsersIDPasswordJSONRequestBody) (*PostUsersIDPasswordResponse, error) { - rsp, err := c.PostUsersIDPassword(ctx, userID, params, body) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) if err != nil { return nil, err } - return ParsePostUsersIDPasswordResponse(rsp) -} -// GetVariablesWithResponse request returning *GetVariablesResponse -func (c *ClientWithResponses) GetVariablesWithResponse(ctx context.Context, params *GetVariablesParams) (*GetVariablesResponse, error) { - rsp, err := c.GetVariables(ctx, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseGetVariablesResponse(rsp) -} -// PostVariablesWithBodyWithResponse request with arbitrary body returning *PostVariablesResponse -func (c *ClientWithResponses) PostVariablesWithBodyWithResponse(ctx context.Context, params *PostVariablesParams, contentType string, body io.Reader) (*PostVariablesResponse, error) { - rsp, err := c.PostVariablesWithBody(ctx, params, contentType, body) - if err != nil { - return nil, err - } - return ParsePostVariablesResponse(rsp) -} + operationPath := fmt.Sprintf("./scrapers/%s", pathParam0) -func (c *ClientWithResponses) PostVariablesWithResponse(ctx context.Context, params *PostVariablesParams, body PostVariablesJSONRequestBody) (*PostVariablesResponse, error) { - rsp, err := c.PostVariables(ctx, params, body) + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePostVariablesResponse(rsp) -} -// DeleteVariablesIDWithResponse request returning *DeleteVariablesIDResponse -func (c *ClientWithResponses) DeleteVariablesIDWithResponse(ctx context.Context, variableID string, params *DeleteVariablesIDParams) (*DeleteVariablesIDResponse, error) { - rsp, err := c.DeleteVariablesID(ctx, variableID, params) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - return ParseDeleteVariablesIDResponse(rsp) -} -// GetVariablesIDWithResponse request returning *GetVariablesIDResponse -func (c *ClientWithResponses) GetVariablesIDWithResponse(ctx context.Context, variableID string, params *GetVariablesIDParams) (*GetVariablesIDResponse, error) { - rsp, err := c.GetVariablesID(ctx, variableID, params) - if err != nil { - return nil, err - } - return ParseGetVariablesIDResponse(rsp) -} + if params.ZapTraceSpan != nil { + var headerParam0 string -// PatchVariablesIDWithBodyWithResponse request with arbitrary body returning *PatchVariablesIDResponse -func (c *ClientWithResponses) PatchVariablesIDWithBodyWithResponse(ctx context.Context, variableID string, params *PatchVariablesIDParams, contentType string, body io.Reader) (*PatchVariablesIDResponse, error) { - rsp, err := c.PatchVariablesIDWithBody(ctx, variableID, params, contentType, body) - if err != nil { - return nil, err - } - return ParsePatchVariablesIDResponse(rsp) -} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return nil, err + } -func (c *ClientWithResponses) PatchVariablesIDWithResponse(ctx context.Context, variableID string, params *PatchVariablesIDParams, body PatchVariablesIDJSONRequestBody) (*PatchVariablesIDResponse, error) { - rsp, err := c.PatchVariablesID(ctx, variableID, params, body) - if err != nil { - return nil, err + req.Header.Set("Zap-Trace-Span", headerParam0) } - return ParsePatchVariablesIDResponse(rsp) -} -// PutVariablesIDWithBodyWithResponse request with arbitrary body returning *PutVariablesIDResponse -func (c *ClientWithResponses) PutVariablesIDWithBodyWithResponse(ctx context.Context, variableID string, params *PutVariablesIDParams, contentType string, body io.Reader) (*PutVariablesIDResponse, error) { - rsp, err := c.PutVariablesIDWithBody(ctx, variableID, params, contentType, body) + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } - return ParsePutVariablesIDResponse(rsp) -} + bodyBytes, err := io.ReadAll(rsp.Body) -func (c *ClientWithResponses) PutVariablesIDWithResponse(ctx context.Context, variableID string, params *PutVariablesIDParams, body PutVariablesIDJSONRequestBody) (*PutVariablesIDResponse, error) { - rsp, err := c.PutVariablesID(ctx, variableID, params, body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParsePutVariablesIDResponse(rsp) -} -// GetVariablesIDLabelsWithResponse request returning *GetVariablesIDLabelsResponse -func (c *ClientWithResponses) GetVariablesIDLabelsWithResponse(ctx context.Context, variableID string, params *GetVariablesIDLabelsParams) (*GetVariablesIDLabelsResponse, error) { - rsp, err := c.GetVariablesIDLabels(ctx, variableID, params) - if err != nil { - return nil, err + response := &ScraperTargetResponse{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { + return nil, err + } + default: + return nil, decodeError(bodyBytes, rsp) } - return ParseGetVariablesIDLabelsResponse(rsp) + return response, nil + } -// PostVariablesIDLabelsWithBodyWithResponse request with arbitrary body returning *PostVariablesIDLabelsResponse -func (c *ClientWithResponses) PostVariablesIDLabelsWithBodyWithResponse(ctx context.Context, variableID string, params *PostVariablesIDLabelsParams, contentType string, body io.Reader) (*PostVariablesIDLabelsResponse, error) { - rsp, err := c.PostVariablesIDLabelsWithBody(ctx, variableID, params, contentType, body) +// PatchScrapersID calls the PATCH on /scrapers/{scraperTargetID} +// Update a scraper target +func (c *Client) PatchScrapersID(ctx context.Context, params *PatchScrapersIDAllParams) (*ScraperTargetResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } - return ParsePostVariablesIDLabelsResponse(rsp) -} + bodyReader = bytes.NewReader(buf) + + var pathParam0 string -func (c *ClientWithResponses) PostVariablesIDLabelsWithResponse(ctx context.Context, variableID string, params *PostVariablesIDLabelsParams, body PostVariablesIDLabelsJSONRequestBody) (*PostVariablesIDLabelsResponse, error) { - rsp, err := c.PostVariablesIDLabels(ctx, variableID, params, body) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) if err != nil { return nil, err } - return ParsePostVariablesIDLabelsResponse(rsp) -} -// DeleteVariablesIDLabelsIDWithResponse request returning *DeleteVariablesIDLabelsIDResponse -func (c *ClientWithResponses) DeleteVariablesIDLabelsIDWithResponse(ctx context.Context, variableID string, labelID string, params *DeleteVariablesIDLabelsIDParams) (*DeleteVariablesIDLabelsIDResponse, error) { - rsp, err := c.DeleteVariablesIDLabelsID(ctx, variableID, labelID, params) + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - return ParseDeleteVariablesIDLabelsIDResponse(rsp) -} -// PostWriteWithBodyWithResponse request with arbitrary body returning *PostWriteResponse -func (c *ClientWithResponses) PostWriteWithBodyWithResponse(ctx context.Context, params *PostWriteParams, contentType string, body io.Reader) (*PostWriteResponse, error) { - rsp, err := c.PostWriteWithBody(ctx, params, contentType, body) + operationPath := fmt.Sprintf("./scrapers/%s", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - return ParsePostWriteResponse(rsp) -} -// ParseGetRoutesResponse parses an HTTP response from a GetRoutesWithResponse call -func ParseGetRoutesResponse(rsp *http.Response) (*GetRoutesResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) if err != nil { return nil, err } - response := &GetRoutesResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Routes - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetAuthorizationsResponse parses an HTTP response from a GetAuthorizationsWithResponse call -func ParseGetAuthorizationsResponse(rsp *http.Response) (*GetAuthorizationsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetAuthorizationsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Authorizations - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &ScraperTargetResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostAuthorizationsResponse parses an HTTP response from a PostAuthorizationsWithResponse call -func ParsePostAuthorizationsResponse(rsp *http.Response) (*PostAuthorizationsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetScrapersIDLabels calls the GET on /scrapers/{scraperTargetID}/labels +// List all labels for a scraper target +func (c *Client) GetScrapersIDLabels(ctx context.Context, params *GetScrapersIDLabelsAllParams) (*LabelsResponse, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) if err != nil { return nil, err } - response := &PostAuthorizationsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Authorization - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./scrapers/%s/labels", pathParam0) - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} - -// ParseDeleteAuthorizationsIDResponse parses an HTTP response from a DeleteAuthorizationsIDWithResponse call -func ParseDeleteAuthorizationsIDResponse(rsp *http.Response) (*DeleteAuthorizationsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &DeleteAuthorizationsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetAuthorizationsIDResponse parses an HTTP response from a GetAuthorizationsIDWithResponse call -func ParseGetAuthorizationsIDResponse(rsp *http.Response) (*GetAuthorizationsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetAuthorizationsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Authorization - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &LabelsResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePatchAuthorizationsIDResponse parses an HTTP response from a PatchAuthorizationsIDWithResponse call -func ParsePatchAuthorizationsIDResponse(rsp *http.Response) (*PatchAuthorizationsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostScrapersIDLabels calls the POST on /scrapers/{scraperTargetID}/labels +// Add a label to a scraper target +func (c *Client) PostScrapersIDLabels(ctx context.Context, params *PostScrapersIDLabelsAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PatchAuthorizationsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Authorization - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./scrapers/%s/labels", pathParam0) -// ParseGetBackupKVResponse parses an HTTP response from a GetBackupKVWithResponse call -func ParseGetBackupKVResponse(rsp *http.Response) (*GetBackupKVResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetBackupKVResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetBackupMetadataResponse parses an HTTP response from a GetBackupMetadataWithResponse call -func ParseGetBackupMetadataResponse(rsp *http.Response) (*GetBackupMetadataResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetBackupMetadataResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &LabelResponse{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetBackupShardIdResponse parses an HTTP response from a GetBackupShardIdWithResponse call -func ParseGetBackupShardIdResponse(rsp *http.Response) (*GetBackupShardIdResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } +// DeleteScrapersIDLabelsID calls the DELETE on /scrapers/{scraperTargetID}/labels/{labelID} +// Delete a label from a scraper target +func (c *Client) DeleteScrapersIDLabelsID(ctx context.Context, params *DeleteScrapersIDLabelsIDAllParams) error { + var err error + + var pathParam0 string - response := &GetBackupShardIdResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./scrapers/%s/labels/%s", pathParam0, pathParam1) -// ParseGetBucketsResponse parses an HTTP response from a GetBucketsWithResponse call -func ParseGetBucketsResponse(rsp *http.Response) (*GetBucketsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &GetBucketsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Buckets - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostBucketsResponse parses an HTTP response from a PostBucketsWithResponse call -func ParsePostBucketsResponse(rsp *http.Response) (*PostBucketsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - response := &PostBucketsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + defer func() { _ = rsp.Body.Close() }() - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Bucket - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } - response.JSON201 = &dest + return decodeError(bodyBytes, rsp) + } + return nil - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 422: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON422 = &dest +} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest +// GetScrapersIDMembers calls the GET on /scrapers/{scraperTargetID}/members +// List all users with member privileges for a scraper target +func (c *Client) GetScrapersIDMembers(ctx context.Context, params *GetScrapersIDMembersAllParams) (*ResourceMembers, error) { + var err error - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) + if err != nil { + return nil, err } - return response, nil -} + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } -// ParseDeleteBucketsIDResponse parses an HTTP response from a DeleteBucketsIDWithResponse call -func ParseDeleteBucketsIDResponse(rsp *http.Response) (*DeleteBucketsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + operationPath := fmt.Sprintf("./scrapers/%s/members", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &DeleteBucketsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetBucketsIDResponse parses an HTTP response from a GetBucketsIDWithResponse call -func ParseGetBucketsIDResponse(rsp *http.Response) (*GetBucketsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetBucketsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Bucket - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &ResourceMembers{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePatchBucketsIDResponse parses an HTTP response from a PatchBucketsIDWithResponse call -func ParsePatchBucketsIDResponse(rsp *http.Response) (*PatchBucketsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostScrapersIDMembers calls the POST on /scrapers/{scraperTargetID}/members +// Add a member to a scraper target +func (c *Client) PostScrapersIDMembers(ctx context.Context, params *PostScrapersIDMembersAllParams) (*ResourceMember, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PatchBucketsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Bucket - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./scrapers/%s/members", pathParam0) -// ParseGetBucketsIDLabelsResponse parses an HTTP response from a GetBucketsIDLabelsWithResponse call -func ParseGetBucketsIDLabelsResponse(rsp *http.Response) (*GetBucketsIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetBucketsIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelsResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json") - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostBucketsIDLabelsResponse parses an HTTP response from a PostBucketsIDLabelsWithResponse call -func ParsePostBucketsIDLabelsResponse(rsp *http.Response) (*PostBucketsIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostBucketsIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &ResourceMember{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteBucketsIDLabelsIDResponse parses an HTTP response from a DeleteBucketsIDLabelsIDWithResponse call -func ParseDeleteBucketsIDLabelsIDResponse(rsp *http.Response) (*DeleteBucketsIDLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } +// DeleteScrapersIDMembersID calls the DELETE on /scrapers/{scraperTargetID}/members/{userID} +// Remove a member from a scraper target +func (c *Client) DeleteScrapersIDMembersID(ctx context.Context, params *DeleteScrapersIDMembersIDAllParams) error { + var err error - response := &DeleteBucketsIDLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./scrapers/%s/members/%s", pathParam0, pathParam1) -// ParseGetBucketsIDMembersResponse parses an HTTP response from a GetBucketsIDMembersWithResponse call -func ParseGetBucketsIDMembersResponse(rsp *http.Response) (*GetBucketsIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &GetBucketsIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceMembers - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostBucketsIDMembersResponse parses an HTTP response from a PostBucketsIDMembersWithResponse call -func ParsePostBucketsIDMembersResponse(rsp *http.Response) (*PostBucketsIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err - } - - response := &PostBucketsIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceMember - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + defer func() { _ = rsp.Body.Close() }() - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseDeleteBucketsIDMembersIDResponse parses an HTTP response from a DeleteBucketsIDMembersIDWithResponse call -func ParseDeleteBucketsIDMembersIDResponse(rsp *http.Response) (*DeleteBucketsIDMembersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetScrapersIDOwners calls the GET on /scrapers/{scraperTargetID}/owners +// List all owners of a scraper target +func (c *Client) GetScrapersIDOwners(ctx context.Context, params *GetScrapersIDOwnersAllParams) (*ResourceOwners, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) if err != nil { return nil, err } - response := &DeleteBucketsIDMembersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} - -// ParseGetBucketsIDOwnersResponse parses an HTTP response from a GetBucketsIDOwnersWithResponse call -func ParseGetBucketsIDOwnersResponse(rsp *http.Response) (*GetBucketsIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + operationPath := fmt.Sprintf("./scrapers/%s/owners", pathParam0) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetBucketsIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceOwners - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostBucketsIDOwnersResponse parses an HTTP response from a PostBucketsIDOwnersWithResponse call -func ParsePostBucketsIDOwnersResponse(rsp *http.Response) (*PostBucketsIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostBucketsIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceOwner - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &ResourceOwners{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteBucketsIDOwnersIDResponse parses an HTTP response from a DeleteBucketsIDOwnersIDWithResponse call -func ParseDeleteBucketsIDOwnersIDResponse(rsp *http.Response) (*DeleteBucketsIDOwnersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostScrapersIDOwners calls the POST on /scrapers/{scraperTargetID}/owners +// Add an owner to a scraper target +func (c *Client) PostScrapersIDOwners(ctx context.Context, params *PostScrapersIDOwnersAllParams) (*ResourceOwner, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &DeleteBucketsIDOwnersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + var pathParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./scrapers/%s/owners", pathParam0) -// ParseGetChecksResponse parses an HTTP response from a GetChecksWithResponse call -func ParseGetChecksResponse(rsp *http.Response) (*GetChecksResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetChecksResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Checks - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseCreateCheckResponse parses an HTTP response from a CreateCheckWithResponse call -func ParseCreateCheckResponse(rsp *http.Response) (*CreateCheckResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &CreateCheckResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Check - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &ResourceOwner{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteChecksIDResponse parses an HTTP response from a DeleteChecksIDWithResponse call -func ParseDeleteChecksIDResponse(rsp *http.Response) (*DeleteChecksIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } +// DeleteScrapersIDOwnersID calls the DELETE on /scrapers/{scraperTargetID}/owners/{userID} +// Remove an owner from a scraper target +func (c *Client) DeleteScrapersIDOwnersID(ctx context.Context, params *DeleteScrapersIDOwnersIDAllParams) error { + var err error + + var pathParam0 string - response := &DeleteChecksIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "scraperTargetID", runtime.ParamLocationPath, params.ScraperTargetID) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./scrapers/%s/owners/%s", pathParam0, pathParam1) -// ParseGetChecksIDResponse parses an HTTP response from a GetChecksIDWithResponse call -func ParseGetChecksIDResponse(rsp *http.Response) (*GetChecksIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &GetChecksIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Check - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePatchChecksIDResponse parses an HTTP response from a PatchChecksIDWithResponse call -func ParsePatchChecksIDResponse(rsp *http.Response) (*PatchChecksIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - response := &PatchChecksIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + defer func() { _ = rsp.Body.Close() }() - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Check - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } - response.JSON200 = &dest + return decodeError(bodyBytes, rsp) + } + return nil - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest +} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest +// GetSetup calls the GET on /setup +// Check if database has default user, org, bucket +func (c *Client) GetSetup(ctx context.Context, params *GetSetupParams) (*IsOnboarding, error) { + var err error - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./setup") -// ParsePutChecksIDResponse parses an HTTP response from a PutChecksIDWithResponse call -func ParsePutChecksIDResponse(rsp *http.Response) (*PutChecksIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PutChecksIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Check - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetChecksIDLabelsResponse parses an HTTP response from a GetChecksIDLabelsWithResponse call -func ParseGetChecksIDLabelsResponse(rsp *http.Response) (*GetChecksIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetChecksIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelsResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &IsOnboarding{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostChecksIDLabelsResponse parses an HTTP response from a PostChecksIDLabelsWithResponse call -func ParsePostChecksIDLabelsResponse(rsp *http.Response) (*PostChecksIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostSetup calls the POST on /setup +// Set up initial user, org and bucket +func (c *Client) PostSetup(ctx context.Context, params *PostSetupAllParams) (*OnboardingResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PostChecksIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./setup") - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} - -// ParseDeleteChecksIDLabelsIDResponse parses an HTTP response from a DeleteChecksIDLabelsIDWithResponse call -func ParseDeleteChecksIDLabelsIDResponse(rsp *http.Response) (*DeleteChecksIDLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - response := &DeleteChecksIDLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + req.Header.Add("Content-Type", "application/json") - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetChecksIDQueryResponse parses an HTTP response from a GetChecksIDQueryWithResponse call -func ParseGetChecksIDQueryResponse(rsp *http.Response) (*GetChecksIDQueryResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetChecksIDQueryResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FluxResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + response := &OnboardingResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetConfigResponse parses an HTTP response from a GetConfigWithResponse call -func ParseGetConfigResponse(rsp *http.Response) (*GetConfigResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostSignin calls the POST on /signin +// Create a user session. +func (c *Client) PostSignin(ctx context.Context, params *PostSigninParams) error { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - response := &GetConfigResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + operationPath := fmt.Sprintf("./signin") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Config - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req, err := http.NewRequest("POST", queryURL.String(), nil) + if err != nil { + return err + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetDashboardsResponse parses an HTTP response from a GetDashboardsWithResponse call -func ParseGetDashboardsResponse(rsp *http.Response) (*GetDashboardsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err - } - - response := &GetDashboardsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Dashboards - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + defer func() { _ = rsp.Body.Close() }() - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParsePostDashboardsResponse parses an HTTP response from a PostDashboardsWithResponse call -func ParsePostDashboardsResponse(rsp *http.Response) (*PostDashboardsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostSignout calls the POST on /signout +// Expire the current UI session +func (c *Client) PostSignout(ctx context.Context, params *PostSignoutParams) error { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { - return nil, err + return err } - response := &PostDashboardsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + operationPath := fmt.Sprintf("./signout") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest interface{} - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + req, err := http.NewRequest("POST", queryURL.String(), nil) + if err != nil { + return err + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - } - - return response, nil -} -// ParseDeleteDashboardsIDResponse parses an HTTP response from a DeleteDashboardsIDWithResponse call -func ParseDeleteDashboardsIDResponse(rsp *http.Response) (*DeleteDashboardsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err + req.Header.Set("Zap-Trace-Span", headerParam0) } - response := &DeleteDashboardsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + defer func() { _ = rsp.Body.Close() }() - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseGetDashboardsIDResponse parses an HTTP response from a GetDashboardsIDWithResponse call -func ParseGetDashboardsIDResponse(rsp *http.Response) (*GetDashboardsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetSources calls the GET on /sources +// List all sources +func (c *Client) GetSources(ctx context.Context, params *GetSourcesParams) (*Sources, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - response := &GetDashboardsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + operationPath := fmt.Sprintf("./sources") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest interface{} - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + queryValues := queryURL.Query() - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.Org != nil { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + queryURL.RawQuery = queryValues.Encode() -// ParsePatchDashboardsIDResponse parses an HTTP response from a PatchDashboardsIDWithResponse call -func ParsePatchDashboardsIDResponse(rsp *http.Response) (*PatchDashboardsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &PatchDashboardsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Dashboard - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostDashboardsIDCellsResponse parses an HTTP response from a PostDashboardsIDCellsWithResponse call -func ParsePostDashboardsIDCellsResponse(rsp *http.Response) (*PostDashboardsIDCellsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostDashboardsIDCellsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Cell - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + response := &Sources{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePutDashboardsIDCellsResponse parses an HTTP response from a PutDashboardsIDCellsWithResponse call -func ParsePutDashboardsIDCellsResponse(rsp *http.Response) (*PutDashboardsIDCellsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostSources calls the POST on /sources +// Create a source +func (c *Client) PostSources(ctx context.Context, params *PostSourcesAllParams) (*Source, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PutDashboardsIDCellsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Dashboard - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./sources") - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} - -// ParseDeleteDashboardsIDCellsIDResponse parses an HTTP response from a DeleteDashboardsIDCellsIDWithResponse call -func ParseDeleteDashboardsIDCellsIDResponse(rsp *http.Response) (*DeleteDashboardsIDCellsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - response := &DeleteDashboardsIDCellsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + req.Header.Add("Content-Type", "application/json") - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePatchDashboardsIDCellsIDResponse parses an HTTP response from a PatchDashboardsIDCellsIDWithResponse call -func ParsePatchDashboardsIDCellsIDResponse(rsp *http.Response) (*PatchDashboardsIDCellsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PatchDashboardsIDCellsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Cell - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + response := &Source{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetDashboardsIDCellsIDViewResponse parses an HTTP response from a GetDashboardsIDCellsIDViewWithResponse call -func ParseGetDashboardsIDCellsIDViewResponse(rsp *http.Response) (*GetDashboardsIDCellsIDViewResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// DeleteSourcesID calls the DELETE on /sources/{sourceID} +// Delete a source +func (c *Client) DeleteSourcesID(ctx context.Context, params *DeleteSourcesIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "sourceID", runtime.ParamLocationPath, params.SourceID) if err != nil { - return nil, err + return err } - response := &GetDashboardsIDCellsIDViewResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest View - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./sources/%s", pathParam0) - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return response, nil -} - -// ParsePatchDashboardsIDCellsIDViewResponse parses an HTTP response from a PatchDashboardsIDCellsIDViewWithResponse call -func ParsePatchDashboardsIDCellsIDViewResponse(rsp *http.Response) (*PatchDashboardsIDCellsIDViewResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - response := &PatchDashboardsIDCellsIDViewResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest View - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + req.Header.Set("Zap-Trace-Span", headerParam0) + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseGetDashboardsIDLabelsResponse parses an HTTP response from a GetDashboardsIDLabelsWithResponse call -func ParseGetDashboardsIDLabelsResponse(rsp *http.Response) (*GetDashboardsIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetSourcesID calls the GET on /sources/{sourceID} +// Retrieve a source +func (c *Client) GetSourcesID(ctx context.Context, params *GetSourcesIDAllParams) (*Source, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "sourceID", runtime.ParamLocationPath, params.SourceID) if err != nil { return nil, err } - response := &GetDashboardsIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelsResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./sources/%s", pathParam0) -// ParsePostDashboardsIDLabelsResponse parses an HTTP response from a PostDashboardsIDLabelsWithResponse call -func ParsePostDashboardsIDLabelsResponse(rsp *http.Response) (*PostDashboardsIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostDashboardsIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseDeleteDashboardsIDLabelsIDResponse parses an HTTP response from a DeleteDashboardsIDLabelsIDWithResponse call -func ParseDeleteDashboardsIDLabelsIDResponse(rsp *http.Response) (*DeleteDashboardsIDLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteDashboardsIDLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + response := &Source{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetDashboardsIDMembersResponse parses an HTTP response from a GetDashboardsIDMembersWithResponse call -func ParseGetDashboardsIDMembersResponse(rsp *http.Response) (*GetDashboardsIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PatchSourcesID calls the PATCH on /sources/{sourceID} +// Update a Source +func (c *Client) PatchSourcesID(ctx context.Context, params *PatchSourcesIDAllParams) (*Source, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &GetDashboardsIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceMembers - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "sourceID", runtime.ParamLocationPath, params.SourceID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./sources/%s", pathParam0) -// ParsePostDashboardsIDMembersResponse parses an HTTP response from a PostDashboardsIDMembersWithResponse call -func ParsePostDashboardsIDMembersResponse(rsp *http.Response) (*PostDashboardsIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostDashboardsIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceMember - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseDeleteDashboardsIDMembersIDResponse parses an HTTP response from a DeleteDashboardsIDMembersIDWithResponse call -func ParseDeleteDashboardsIDMembersIDResponse(rsp *http.Response) (*DeleteDashboardsIDMembersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteDashboardsIDMembersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &Source{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetDashboardsIDOwnersResponse parses an HTTP response from a GetDashboardsIDOwnersWithResponse call -func ParseGetDashboardsIDOwnersResponse(rsp *http.Response) (*GetDashboardsIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetSourcesIDBuckets calls the GET on /sources/{sourceID}/buckets +// Get buckets in a source +func (c *Client) GetSourcesIDBuckets(ctx context.Context, params *GetSourcesIDBucketsAllParams) (*Buckets, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "sourceID", runtime.ParamLocationPath, params.SourceID) if err != nil { return nil, err } - response := &GetDashboardsIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceOwners - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./sources/%s/buckets", pathParam0) -// ParsePostDashboardsIDOwnersResponse parses an HTTP response from a PostDashboardsIDOwnersWithResponse call -func ParsePostDashboardsIDOwnersResponse(rsp *http.Response) (*PostDashboardsIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostDashboardsIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + queryValues := queryURL.Query() - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceOwner - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + if params.Org != nil { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + queryURL.RawQuery = queryValues.Encode() -// ParseDeleteDashboardsIDOwnersIDResponse parses an HTTP response from a DeleteDashboardsIDOwnersIDWithResponse call -func ParseDeleteDashboardsIDOwnersIDResponse(rsp *http.Response) (*DeleteDashboardsIDOwnersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &DeleteDashboardsIDOwnersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetDBRPsResponse parses an HTTP response from a GetDBRPsWithResponse call -func ParseGetDBRPsResponse(rsp *http.Response) (*GetDBRPsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetDBRPsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest DBRPs - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest + response := &Buckets{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostDBRPResponse parses an HTTP response from a PostDBRPWithResponse call -func ParsePostDBRPResponse(rsp *http.Response) (*PostDBRPResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetSourcesIDHealth calls the GET on /sources/{sourceID}/health +// Get the health of a source +func (c *Client) GetSourcesIDHealth(ctx context.Context, params *GetSourcesIDHealthAllParams) (*HealthCheck, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "sourceID", runtime.ParamLocationPath, params.SourceID) if err != nil { return nil, err } - response := &PostDBRPResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest DBRP - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./sources/%s/health", pathParam0) -// ParseDeleteDBRPIDResponse parses an HTTP response from a DeleteDBRPIDWithResponse call -func ParseDeleteDBRPIDResponse(rsp *http.Response) (*DeleteDBRPIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &DeleteDBRPIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetDBRPsIDResponse parses an HTTP response from a GetDBRPsIDWithResponse call -func ParseGetDBRPsIDResponse(rsp *http.Response) (*GetDBRPsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetDBRPsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest DBRPGet - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest + response := &HealthCheck{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePatchDBRPIDResponse parses an HTTP response from a PatchDBRPIDWithResponse call -func ParsePatchDBRPIDResponse(rsp *http.Response) (*PatchDBRPIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// ListStacks calls the GET on /stacks +// List installed stacks +func (c *Client) ListStacks(ctx context.Context, params *ListStacksParams) (*struct { + Stacks *[]Stack `json:"stacks,omitempty"` +}, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - response := &PatchDBRPIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + operationPath := fmt.Sprintf("./stacks") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest DBRPGet - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + queryValues := queryURL.Query() - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } } - response.JSON400 = &dest + } + + if params.Name != nil { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + } + + if params.StackID != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "stackID", runtime.ParamLocationQuery, *params.StackID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + queryURL.RawQuery = queryValues.Encode() -// ParsePostDeleteResponse parses an HTTP response from a PostDeleteWithResponse call -func ParsePostDeleteResponse(rsp *http.Response) (*PostDeleteResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &PostDeleteResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON403 = &dest + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + response := &struct { + Stacks *[]Stack `json:"stacks,omitempty"` + }{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetFlagsResponse parses an HTTP response from a GetFlagsWithResponse call -func ParseGetFlagsResponse(rsp *http.Response) (*GetFlagsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// CreateStack calls the POST on /stacks +// Create a stack +func (c *Client) CreateStack(ctx context.Context, params *CreateStackAllParams) (*Stack, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &GetFlagsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Flags - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + operationPath := fmt.Sprintf("./stacks") - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return response, nil -} + req.Header.Add("Content-Type", "application/json") -// ParseGetHealthResponse parses an HTTP response from a GetHealthWithResponse call -func ParseGetHealthResponse(rsp *http.Response) (*GetHealthResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetHealthResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest HealthCheck - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: - var dest HealthCheck - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON503 = &dest + response := &Stack{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetLabelsResponse parses an HTTP response from a GetLabelsWithResponse call -func ParseGetLabelsResponse(rsp *http.Response) (*GetLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// DeleteStack calls the DELETE on /stacks/{stack_id} +// Delete a stack and associated resources +func (c *Client) DeleteStack(ctx context.Context, params *DeleteStackAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "stack_id", runtime.ParamLocationPath, params.StackId) if err != nil { - return nil, err + return err } - response := &GetLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelsResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + operationPath := fmt.Sprintf("./stacks/%s", pathParam0) - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + queryValues := queryURL.Query() + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, params.OrgID); err != nil { + return err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } } } - return response, nil -} + queryURL.RawQuery = queryValues.Encode() -// ParsePostLabelsResponse parses an HTTP response from a PostLabelsWithResponse call -func ParsePostLabelsResponse(rsp *http.Response) (*PostLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - response := &PostLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + defer func() { _ = rsp.Body.Close() }() - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseDeleteLabelsIDResponse parses an HTTP response from a DeleteLabelsIDWithResponse call -func ParseDeleteLabelsIDResponse(rsp *http.Response) (*DeleteLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// ReadStack calls the GET on /stacks/{stack_id} +// Retrieve a stack +func (c *Client) ReadStack(ctx context.Context, params *ReadStackAllParams) (*Stack, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "stack_id", runtime.ParamLocationPath, params.StackId) if err != nil { return nil, err } - response := &DeleteLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./stacks/%s", pathParam0) - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } -// ParseGetLabelsIDResponse parses an HTTP response from a GetLabelsIDWithResponse call -func ParseGetLabelsIDResponse(rsp *http.Response) (*GetLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &Stack{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePatchLabelsIDResponse parses an HTTP response from a PatchLabelsIDWithResponse call -func ParsePatchLabelsIDResponse(rsp *http.Response) (*PatchLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// UpdateStack calls the PATCH on /stacks/{stack_id} +// Update a stack +func (c *Client) UpdateStack(ctx context.Context, params *UpdateStackAllParams) (*Stack, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) + + var pathParam0 string - response := &PatchLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "stack_id", runtime.ParamLocationPath, params.StackId) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + operationPath := fmt.Sprintf("./stacks/%s", pathParam0) - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return response, nil -} + req.Header.Add("Content-Type", "application/json") -// ParseGetLegacyAuthorizationsResponse parses an HTTP response from a GetLegacyAuthorizationsWithResponse call -func ParseGetLegacyAuthorizationsResponse(rsp *http.Response) (*GetLegacyAuthorizationsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetLegacyAuthorizationsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Authorizations - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &Stack{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostLegacyAuthorizationsResponse parses an HTTP response from a PostLegacyAuthorizationsWithResponse call -func ParsePostLegacyAuthorizationsResponse(rsp *http.Response) (*PostLegacyAuthorizationsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// UninstallStack calls the POST on /stacks/{stack_id}/uninstall +// Uninstall a stack +func (c *Client) UninstallStack(ctx context.Context, params *UninstallStackAllParams) (*Stack, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "stack_id", runtime.ParamLocationPath, params.StackId) if err != nil { return nil, err } - response := &PostLegacyAuthorizationsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Authorization - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./stacks/%s/uninstall", pathParam0) - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} + req, err := http.NewRequest("POST", queryURL.String(), nil) + if err != nil { + return nil, err + } -// ParseDeleteLegacyAuthorizationsIDResponse parses an HTTP response from a DeleteLegacyAuthorizationsIDWithResponse call -func ParseDeleteLegacyAuthorizationsIDResponse(rsp *http.Response) (*DeleteLegacyAuthorizationsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteLegacyAuthorizationsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &Stack{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetLegacyAuthorizationsIDResponse parses an HTTP response from a GetLegacyAuthorizationsIDWithResponse call -func ParseGetLegacyAuthorizationsIDResponse(rsp *http.Response) (*GetLegacyAuthorizationsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTasks calls the GET on /tasks +// List tasks +func (c *Client) GetTasks(ctx context.Context, params *GetTasksParams) (*Tasks, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - response := &GetLegacyAuthorizationsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + operationPath := fmt.Sprintf("./tasks") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Authorization - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + queryValues := queryURL.Query() - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if params.Name != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + if params.After != nil { -// ParsePatchLegacyAuthorizationsIDResponse parses an HTTP response from a PatchLegacyAuthorizationsIDWithResponse call -func ParsePatchLegacyAuthorizationsIDResponse(rsp *http.Response) (*PatchLegacyAuthorizationsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "after", runtime.ParamLocationQuery, *params.After); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - response := &PatchLegacyAuthorizationsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Authorization - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.User != nil { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "user", runtime.ParamLocationQuery, *params.User); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + if params.Org != nil { -// ParsePostLegacyAuthorizationsIDPasswordResponse parses an HTTP response from a PostLegacyAuthorizationsIDPasswordWithResponse call -func ParsePostLegacyAuthorizationsIDPasswordResponse(rsp *http.Response) (*PostLegacyAuthorizationsIDPasswordResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - response := &PostLegacyAuthorizationsIDPasswordResponse{ - Body: bodyBytes, - HTTPResponse: rsp, } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if params.OrgID != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + if params.Status != nil { -// ParseGetMeResponse parses an HTTP response from a GetMeWithResponse call -func ParseGetMeResponse(rsp *http.Response) (*GetMeResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "status", runtime.ParamLocationQuery, *params.Status); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - response := &GetMeResponse{ - Body: bodyBytes, - HTTPResponse: rsp, } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest UserResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + } + + if params.Type != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "type", runtime.ParamLocationQuery, *params.Type); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + queryURL.RawQuery = queryValues.Encode() -// ParsePutMePasswordResponse parses an HTTP response from a PutMePasswordWithResponse call -func ParsePutMePasswordResponse(rsp *http.Response) (*PutMePasswordResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &PutMePasswordResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetMetricsResponse parses an HTTP response from a GetMetricsWithResponse call -func ParseGetMetricsResponse(rsp *http.Response) (*GetMetricsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetMetricsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &Tasks{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetNotificationEndpointsResponse parses an HTTP response from a GetNotificationEndpointsWithResponse call -func ParseGetNotificationEndpointsResponse(rsp *http.Response) (*GetNotificationEndpointsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostTasks calls the POST on /tasks +// Create a task +func (c *Client) PostTasks(ctx context.Context, params *PostTasksAllParams) (*Task, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &GetNotificationEndpointsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest NotificationEndpoints - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./tasks") - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} - -// ParseCreateNotificationEndpointResponse parses an HTTP response from a CreateNotificationEndpointWithResponse call -func ParseCreateNotificationEndpointResponse(rsp *http.Response) (*CreateNotificationEndpointResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - response := &CreateNotificationEndpointResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + req.Header.Add("Content-Type", "application/json") - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest NotificationEndpoint - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseDeleteNotificationEndpointsIDResponse parses an HTTP response from a DeleteNotificationEndpointsIDWithResponse call -func ParseDeleteNotificationEndpointsIDResponse(rsp *http.Response) (*DeleteNotificationEndpointsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteNotificationEndpointsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + response := &Task{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetNotificationEndpointsIDResponse parses an HTTP response from a GetNotificationEndpointsIDWithResponse call -func ParseGetNotificationEndpointsIDResponse(rsp *http.Response) (*GetNotificationEndpointsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// DeleteTasksID calls the DELETE on /tasks/{taskID} +// Delete a task +func (c *Client) DeleteTasksID(ctx context.Context, params *DeleteTasksIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { - return nil, err + return err } - response := &GetNotificationEndpointsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest NotificationEndpoint - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./tasks/%s", pathParam0) - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return response, nil -} - -// ParsePatchNotificationEndpointsIDResponse parses an HTTP response from a PatchNotificationEndpointsIDWithResponse call -func ParsePatchNotificationEndpointsIDResponse(rsp *http.Response) (*PatchNotificationEndpointsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - response := &PatchNotificationEndpointsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest NotificationEndpoint - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + req.Header.Set("Zap-Trace-Span", headerParam0) + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParsePutNotificationEndpointsIDResponse parses an HTTP response from a PutNotificationEndpointsIDWithResponse call -func ParsePutNotificationEndpointsIDResponse(rsp *http.Response) (*PutNotificationEndpointsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTasksID calls the GET on /tasks/{taskID} +// Retrieve a task +func (c *Client) GetTasksID(ctx context.Context, params *GetTasksIDAllParams) (*Task, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { return nil, err } - response := &PutNotificationEndpointsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest NotificationEndpoint - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + operationPath := fmt.Sprintf("./tasks/%s", pathParam0) - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetNotificationEndpointsIDLabelsResponse parses an HTTP response from a GetNotificationEndpointsIDLabelsWithResponse call -func ParseGetNotificationEndpointsIDLabelsResponse(rsp *http.Response) (*GetNotificationEndpointsIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetNotificationEndpointsIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelsResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &Task{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostNotificationEndpointIDLabelsResponse parses an HTTP response from a PostNotificationEndpointIDLabelsWithResponse call -func ParsePostNotificationEndpointIDLabelsResponse(rsp *http.Response) (*PostNotificationEndpointIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PatchTasksID calls the PATCH on /tasks/{taskID} +// Update a task +func (c *Client) PatchTasksID(ctx context.Context, params *PatchTasksIDAllParams) (*Task, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PostNotificationEndpointIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s", pathParam0) -// ParseDeleteNotificationEndpointsIDLabelsIDResponse parses an HTTP response from a DeleteNotificationEndpointsIDLabelsIDWithResponse call -func ParseDeleteNotificationEndpointsIDLabelsIDResponse(rsp *http.Response) (*DeleteNotificationEndpointsIDLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &DeleteNotificationEndpointsIDLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetNotificationRulesResponse parses an HTTP response from a GetNotificationRulesWithResponse call -func ParseGetNotificationRulesResponse(rsp *http.Response) (*GetNotificationRulesResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetNotificationRulesResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest NotificationRules - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &Task{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseCreateNotificationRuleResponse parses an HTTP response from a CreateNotificationRuleWithResponse call -func ParseCreateNotificationRuleResponse(rsp *http.Response) (*CreateNotificationRuleResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTasksIDLabels calls the GET on /tasks/{taskID}/labels +// List labels for a task +func (c *Client) GetTasksIDLabels(ctx context.Context, params *GetTasksIDLabelsAllParams) (*LabelsResponse, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { return nil, err } - response := &CreateNotificationRuleResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest NotificationRule - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/labels", pathParam0) -// ParseDeleteNotificationRulesIDResponse parses an HTTP response from a DeleteNotificationRulesIDWithResponse call -func ParseDeleteNotificationRulesIDResponse(rsp *http.Response) (*DeleteNotificationRulesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &DeleteNotificationRulesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetNotificationRulesIDResponse parses an HTTP response from a GetNotificationRulesIDWithResponse call -func ParseGetNotificationRulesIDResponse(rsp *http.Response) (*GetNotificationRulesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetNotificationRulesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest NotificationRule - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &LabelsResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePatchNotificationRulesIDResponse parses an HTTP response from a PatchNotificationRulesIDWithResponse call -func ParsePatchNotificationRulesIDResponse(rsp *http.Response) (*PatchNotificationRulesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostTasksIDLabels calls the POST on /tasks/{taskID}/labels +// Add a label to a task +func (c *Client) PostTasksIDLabels(ctx context.Context, params *PostTasksIDLabelsAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PatchNotificationRulesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest NotificationRule - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/labels", pathParam0) -// ParsePutNotificationRulesIDResponse parses an HTTP response from a PutNotificationRulesIDWithResponse call -func ParsePutNotificationRulesIDResponse(rsp *http.Response) (*PutNotificationRulesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PutNotificationRulesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest NotificationRule - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json") - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetNotificationRulesIDLabelsResponse parses an HTTP response from a GetNotificationRulesIDLabelsWithResponse call -func ParseGetNotificationRulesIDLabelsResponse(rsp *http.Response) (*GetNotificationRulesIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetNotificationRulesIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelsResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &LabelResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostNotificationRuleIDLabelsResponse parses an HTTP response from a PostNotificationRuleIDLabelsWithResponse call -func ParsePostNotificationRuleIDLabelsResponse(rsp *http.Response) (*PostNotificationRuleIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } +// DeleteTasksIDLabelsID calls the DELETE on /tasks/{taskID}/labels/{labelID} +// Delete a label from a task +func (c *Client) DeleteTasksIDLabelsID(ctx context.Context, params *DeleteTasksIDLabelsIDAllParams) error { + var err error + + var pathParam0 string - response := &PostNotificationRuleIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/labels/%s", pathParam0, pathParam1) -// ParseDeleteNotificationRulesIDLabelsIDResponse parses an HTTP response from a DeleteNotificationRulesIDLabelsIDWithResponse call -func ParseDeleteNotificationRulesIDLabelsIDResponse(rsp *http.Response) (*DeleteNotificationRulesIDLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &DeleteNotificationRulesIDLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseGetNotificationRulesIDQueryResponse parses an HTTP response from a GetNotificationRulesIDQueryWithResponse call -func ParseGetNotificationRulesIDQueryResponse(rsp *http.Response) (*GetNotificationRulesIDQueryResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTasksIDLogs calls the GET on /tasks/{taskID}/logs +// Retrieve all logs for a task +func (c *Client) GetTasksIDLogs(ctx context.Context, params *GetTasksIDLogsAllParams) (*Logs, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { return nil, err } - response := &GetNotificationRulesIDQueryResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FluxResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + operationPath := fmt.Sprintf("./tasks/%s/logs", pathParam0) - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetOrgsResponse parses an HTTP response from a GetOrgsWithResponse call -func ParseGetOrgsResponse(rsp *http.Response) (*GetOrgsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetOrgsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Organizations - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &Logs{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostOrgsResponse parses an HTTP response from a PostOrgsWithResponse call -func ParsePostOrgsResponse(rsp *http.Response) (*PostOrgsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTasksIDMembers calls the GET on /tasks/{taskID}/members +// List all task members +func (c *Client) GetTasksIDMembers(ctx context.Context, params *GetTasksIDMembersAllParams) (*ResourceMembers, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { return nil, err } - response := &PostOrgsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Organization - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/members", pathParam0) -// ParseDeleteOrgsIDResponse parses an HTTP response from a DeleteOrgsIDWithResponse call -func ParseDeleteOrgsIDResponse(rsp *http.Response) (*DeleteOrgsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &DeleteOrgsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetOrgsIDResponse parses an HTTP response from a GetOrgsIDWithResponse call -func ParseGetOrgsIDResponse(rsp *http.Response) (*GetOrgsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetOrgsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Organization - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &ResourceMembers{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePatchOrgsIDResponse parses an HTTP response from a PatchOrgsIDWithResponse call -func ParsePatchOrgsIDResponse(rsp *http.Response) (*PatchOrgsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostTasksIDMembers calls the POST on /tasks/{taskID}/members +// Add a member to a task +func (c *Client) PostTasksIDMembers(ctx context.Context, params *PostTasksIDMembersAllParams) (*ResourceMember, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PatchOrgsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Organization - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/members", pathParam0) -// ParseGetOrgsIDMembersResponse parses an HTTP response from a GetOrgsIDMembersWithResponse call -func ParseGetOrgsIDMembersResponse(rsp *http.Response) (*GetOrgsIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetOrgsIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceMembers - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json") - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostOrgsIDMembersResponse parses an HTTP response from a PostOrgsIDMembersWithResponse call -func ParsePostOrgsIDMembersResponse(rsp *http.Response) (*PostOrgsIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostOrgsIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceMember - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &ResourceMember{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteOrgsIDMembersIDResponse parses an HTTP response from a DeleteOrgsIDMembersIDWithResponse call -func ParseDeleteOrgsIDMembersIDResponse(rsp *http.Response) (*DeleteOrgsIDMembersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// DeleteTasksIDMembersID calls the DELETE on /tasks/{taskID}/members/{userID} +// Remove a member from a task +func (c *Client) DeleteTasksIDMembersID(ctx context.Context, params *DeleteTasksIDMembersIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { - return nil, err + return err } - response := &DeleteOrgsIDMembersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + var pathParam1 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/members/%s", pathParam0, pathParam1) -// ParseGetOrgsIDOwnersResponse parses an HTTP response from a GetOrgsIDOwnersWithResponse call -func ParseGetOrgsIDOwnersResponse(rsp *http.Response) (*GetOrgsIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &GetOrgsIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceOwners - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParsePostOrgsIDOwnersResponse parses an HTTP response from a PostOrgsIDOwnersWithResponse call -func ParsePostOrgsIDOwnersResponse(rsp *http.Response) (*PostOrgsIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTasksIDOwners calls the GET on /tasks/{taskID}/owners +// List all owners of a task +func (c *Client) GetTasksIDOwners(ctx context.Context, params *GetTasksIDOwnersAllParams) (*ResourceOwners, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { return nil, err } - response := &PostOrgsIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceOwner - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./tasks/%s/owners", pathParam0) - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} - -// ParseDeleteOrgsIDOwnersIDResponse parses an HTTP response from a DeleteOrgsIDOwnersIDWithResponse call -func ParseDeleteOrgsIDOwnersIDResponse(rsp *http.Response) (*DeleteOrgsIDOwnersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &DeleteOrgsIDOwnersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetOrgsIDSecretsResponse parses an HTTP response from a GetOrgsIDSecretsWithResponse call -func ParseGetOrgsIDSecretsResponse(rsp *http.Response) (*GetOrgsIDSecretsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetOrgsIDSecretsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest SecretKeysResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &ResourceOwners{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePatchOrgsIDSecretsResponse parses an HTTP response from a PatchOrgsIDSecretsWithResponse call -func ParsePatchOrgsIDSecretsResponse(rsp *http.Response) (*PatchOrgsIDSecretsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostTasksIDOwners calls the POST on /tasks/{taskID}/owners +// Add an owner for a task +func (c *Client) PostTasksIDOwners(ctx context.Context, params *PostTasksIDOwnersAllParams) (*ResourceOwner, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PatchOrgsIDSecretsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + var pathParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/owners", pathParam0) -// ParsePostOrgsIDSecretsResponse parses an HTTP response from a PostOrgsIDSecretsWithResponse call -func ParsePostOrgsIDSecretsResponse(rsp *http.Response) (*PostOrgsIDSecretsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostOrgsIDSecretsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseDeleteOrgsIDSecretsIDResponse parses an HTTP response from a DeleteOrgsIDSecretsIDWithResponse call -func ParseDeleteOrgsIDSecretsIDResponse(rsp *http.Response) (*DeleteOrgsIDSecretsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteOrgsIDSecretsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &ResourceOwner{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetPingResponse parses an HTTP response from a GetPingWithResponse call -func ParseGetPingResponse(rsp *http.Response) (*GetPingResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// DeleteTasksIDOwnersID calls the DELETE on /tasks/{taskID}/owners/{userID} +// Remove an owner from a task +func (c *Client) DeleteTasksIDOwnersID(ctx context.Context, params *DeleteTasksIDOwnersIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { - return nil, err + return err } - response := &GetPingResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + var pathParam1 string - switch { + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/owners/%s", pathParam0, pathParam1) -// ParseHeadPingResponse parses an HTTP response from a HeadPingWithResponse call -func ParseHeadPingResponse(rsp *http.Response) (*HeadPingResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &HeadPingResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { + if params.ZapTraceSpan != nil { + var headerParam0 string - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - } - return response, nil -} - -// ParsePostQueryResponse parses an HTTP response from a PostQueryWithResponse call -func ParsePostQueryResponse(rsp *http.Response) (*PostQueryResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err + req.Header.Set("Zap-Trace-Span", headerParam0) } - response := &PostQueryResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + defer func() { _ = rsp.Body.Close() }() - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParsePostQueryAnalyzeResponse parses an HTTP response from a PostQueryAnalyzeWithResponse call -func ParsePostQueryAnalyzeResponse(rsp *http.Response) (*PostQueryAnalyzeResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTasksIDRuns calls the GET on /tasks/{taskID}/runs +// List runs for a task +func (c *Client) GetTasksIDRuns(ctx context.Context, params *GetTasksIDRunsAllParams) (*Runs, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { return nil, err } - response := &PostQueryAnalyzeResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest AnalyzeQueryResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/runs", pathParam0) -// ParsePostQueryAstResponse parses an HTTP response from a PostQueryAstWithResponse call -func ParsePostQueryAstResponse(rsp *http.Response) (*PostQueryAstResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostQueryAstResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + queryValues := queryURL.Query() - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ASTResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.After != nil { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "after", runtime.ParamLocationQuery, *params.After); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + if params.Limit != nil { -// ParseGetQuerySuggestionsResponse parses an HTTP response from a GetQuerySuggestionsWithResponse call -func ParseGetQuerySuggestionsResponse(rsp *http.Response) (*GetQuerySuggestionsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - response := &GetQuerySuggestionsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FluxSuggestions - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if params.AfterTime != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "afterTime", runtime.ParamLocationQuery, *params.AfterTime); err != nil { return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + } + + if params.BeforeTime != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "beforeTime", runtime.ParamLocationQuery, *params.BeforeTime); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + queryURL.RawQuery = queryValues.Encode() -// ParseGetQuerySuggestionsNameResponse parses an HTTP response from a GetQuerySuggestionsNameWithResponse call -func ParseGetQuerySuggestionsNameResponse(rsp *http.Response) (*GetQuerySuggestionsNameResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &GetQuerySuggestionsNameResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FluxSuggestion - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetReadyResponse parses an HTTP response from a GetReadyWithResponse call -func ParseGetReadyResponse(rsp *http.Response) (*GetReadyResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetReadyResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Ready - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &Runs{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetRemoteConnectionsResponse parses an HTTP response from a GetRemoteConnectionsWithResponse call -func ParseGetRemoteConnectionsResponse(rsp *http.Response) (*GetRemoteConnectionsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostTasksIDRuns calls the POST on /tasks/{taskID}/runs +// Start a task run, overriding the schedule +func (c *Client) PostTasksIDRuns(ctx context.Context, params *PostTasksIDRunsAllParams) (*Run, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &GetRemoteConnectionsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest RemoteConnections - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/runs", pathParam0) -// ParsePostRemoteConnectionResponse parses an HTTP response from a PostRemoteConnectionWithResponse call -func ParsePostRemoteConnectionResponse(rsp *http.Response) (*PostRemoteConnectionResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostRemoteConnectionResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest RemoteConnection - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + req.Header.Add("Content-Type", "application/json") - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseDeleteRemoteConnectionByIDResponse parses an HTTP response from a DeleteRemoteConnectionByIDWithResponse call -func ParseDeleteRemoteConnectionByIDResponse(rsp *http.Response) (*DeleteRemoteConnectionByIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteRemoteConnectionByIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + response := &Run{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetRemoteConnectionByIDResponse parses an HTTP response from a GetRemoteConnectionByIDWithResponse call -func ParseGetRemoteConnectionByIDResponse(rsp *http.Response) (*GetRemoteConnectionByIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } +// DeleteTasksIDRunsID calls the DELETE on /tasks/{taskID}/runs/{runID} +// Cancel a running task +func (c *Client) DeleteTasksIDRunsID(ctx context.Context, params *DeleteTasksIDRunsIDAllParams) error { + var err error - response := &GetRemoteConnectionByIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + var pathParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest RemoteConnection - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) + if err != nil { + return err + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "runID", runtime.ParamLocationPath, params.RunID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/runs/%s", pathParam0, pathParam1) -// ParsePatchRemoteConnectionByIDResponse parses an HTTP response from a PatchRemoteConnectionByIDWithResponse call -func ParsePatchRemoteConnectionByIDResponse(rsp *http.Response) (*PatchRemoteConnectionByIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &PatchRemoteConnectionByIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest RemoteConnection - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + req.Header.Set("Zap-Trace-Span", headerParam0) + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseGetReplicationsResponse parses an HTTP response from a GetReplicationsWithResponse call -func ParseGetReplicationsResponse(rsp *http.Response) (*GetReplicationsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTasksIDRunsID calls the GET on /tasks/{taskID}/runs/{runID} +// Retrieve a run for a task. +func (c *Client) GetTasksIDRunsID(ctx context.Context, params *GetTasksIDRunsIDAllParams) (*Run, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { return nil, err } - response := &GetReplicationsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Replications - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + var pathParam1 string - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "runID", runtime.ParamLocationPath, params.RunID) + if err != nil { + return nil, err } - return response, nil -} + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err + } -// ParsePostReplicationResponse parses an HTTP response from a PostReplicationWithResponse call -func ParsePostReplicationResponse(rsp *http.Response) (*PostReplicationResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + operationPath := fmt.Sprintf("./tasks/%s/runs/%s", pathParam0, pathParam1) + + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostReplicationResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Replication - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseDeleteReplicationByIDResponse parses an HTTP response from a DeleteReplicationByIDWithResponse call -func ParseDeleteReplicationByIDResponse(rsp *http.Response) (*DeleteReplicationByIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteReplicationByIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + response := &Run{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetReplicationByIDResponse parses an HTTP response from a GetReplicationByIDWithResponse call -func ParseGetReplicationByIDResponse(rsp *http.Response) (*GetReplicationByIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTasksIDRunsIDLogs calls the GET on /tasks/{taskID}/runs/{runID}/logs +// Retrieve all logs for a run +func (c *Client) GetTasksIDRunsIDLogs(ctx context.Context, params *GetTasksIDRunsIDLogsAllParams) (*Logs, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) if err != nil { return nil, err } - response := &GetReplicationByIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Replication - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "runID", runtime.ParamLocationPath, params.RunID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/runs/%s/logs", pathParam0, pathParam1) -// ParsePatchReplicationByIDResponse parses an HTTP response from a PatchReplicationByIDWithResponse call -func ParsePatchReplicationByIDResponse(rsp *http.Response) (*PatchReplicationByIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PatchReplicationByIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Replication - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostValidateReplicationByIDResponse parses an HTTP response from a PostValidateReplicationByIDWithResponse call -func ParsePostValidateReplicationByIDResponse(rsp *http.Response) (*PostValidateReplicationByIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostValidateReplicationByIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest + response := &Logs{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetResourcesResponse parses an HTTP response from a GetResourcesWithResponse call -func ParseGetResourcesResponse(rsp *http.Response) (*GetResourcesResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostTasksIDRunsIDRetry calls the POST on /tasks/{taskID}/runs/{runID}/retry +// Retry a task run +func (c *Client) PostTasksIDRunsIDRetry(ctx context.Context, params *PostTasksIDRunsIDRetryAllParams) (*Run, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) + + var pathParam0 string - response := &GetResourcesResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "taskID", runtime.ParamLocationPath, params.TaskID) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest []string - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "runID", runtime.ParamLocationPath, params.RunID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./tasks/%s/runs/%s/retry", pathParam0, pathParam1) -// ParsePostRestoreBucketIDResponse parses an HTTP response from a PostRestoreBucketIDWithResponse call -func ParsePostRestoreBucketIDResponse(rsp *http.Response) (*PostRestoreBucketIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostRestoreBucketIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest []byte - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json; charset=utf-8") + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostRestoreBucketMetadataResponse parses an HTTP response from a PostRestoreBucketMetadataWithResponse call -func ParsePostRestoreBucketMetadataResponse(rsp *http.Response) (*PostRestoreBucketMetadataResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostRestoreBucketMetadataResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest RestoredBucketMappings - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &Run{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostRestoreKVResponse parses an HTTP response from a PostRestoreKVWithResponse call -func ParsePostRestoreKVResponse(rsp *http.Response) (*PostRestoreKVResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTelegrafPlugins calls the GET on /telegraf/plugins +// List all Telegraf plugins +func (c *Client) GetTelegrafPlugins(ctx context.Context, params *GetTelegrafPluginsParams) (*TelegrafPlugins, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - response := &PostRestoreKVResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + operationPath := fmt.Sprintf("./telegraf/plugins") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest struct { - // token is the root token for the instance after restore (this is overwritten during the restore) - Token *string `json:"token,omitempty"` - } - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + queryValues := queryURL.Query() + + if params.Type != nil { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "type", runtime.ParamLocationQuery, *params.Type); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + queryURL.RawQuery = queryValues.Encode() -// ParsePostRestoreShardIdResponse parses an HTTP response from a PostRestoreShardIdWithResponse call -func ParsePostRestoreShardIdResponse(rsp *http.Response) (*PostRestoreShardIdResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &PostRestoreShardIdResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostRestoreSQLResponse parses an HTTP response from a PostRestoreSQLWithResponse call -func ParsePostRestoreSQLResponse(rsp *http.Response) (*PostRestoreSQLResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostRestoreSQLResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &TelegrafPlugins{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetScrapersResponse parses an HTTP response from a GetScrapersWithResponse call -func ParseGetScrapersResponse(rsp *http.Response) (*GetScrapersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTelegrafs calls the GET on /telegrafs +// List all Telegraf configurations +func (c *Client) GetTelegrafs(ctx context.Context, params *GetTelegrafsParams) (*Telegrafs, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - response := &GetScrapersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + operationPath := fmt.Sprintf("./telegrafs") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ScraperTargetResponses - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + queryValues := queryURL.Query() + + if params.OrgID != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSON200 = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + queryURL.RawQuery = queryValues.Encode() -// ParsePostScrapersResponse parses an HTTP response from a PostScrapersWithResponse call -func ParsePostScrapersResponse(rsp *http.Response) (*PostScrapersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &PostScrapersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ScraperTargetResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseDeleteScrapersIDResponse parses an HTTP response from a DeleteScrapersIDWithResponse call -func ParseDeleteScrapersIDResponse(rsp *http.Response) (*DeleteScrapersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteScrapersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &Telegrafs{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetScrapersIDResponse parses an HTTP response from a GetScrapersIDWithResponse call -func ParseGetScrapersIDResponse(rsp *http.Response) (*GetScrapersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostTelegrafs calls the POST on /telegrafs +// Create a Telegraf configuration +func (c *Client) PostTelegrafs(ctx context.Context, params *PostTelegrafsAllParams) (*Telegraf, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &GetScrapersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ScraperTargetResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./telegrafs") - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} - -// ParsePatchScrapersIDResponse parses an HTTP response from a PatchScrapersIDWithResponse call -func ParsePatchScrapersIDResponse(rsp *http.Response) (*PatchScrapersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - response := &PatchScrapersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + req.Header.Add("Content-Type", "application/json") - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ScraperTargetResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetScrapersIDLabelsResponse parses an HTTP response from a GetScrapersIDLabelsWithResponse call -func ParseGetScrapersIDLabelsResponse(rsp *http.Response) (*GetScrapersIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetScrapersIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelsResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &Telegraf{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostScrapersIDLabelsResponse parses an HTTP response from a PostScrapersIDLabelsWithResponse call -func ParsePostScrapersIDLabelsResponse(rsp *http.Response) (*PostScrapersIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// DeleteTelegrafsID calls the DELETE on /telegrafs/{telegrafID} +// Delete a Telegraf configuration +func (c *Client) DeleteTelegrafsID(ctx context.Context, params *DeleteTelegrafsIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) if err != nil { - return nil, err + return err } - response := &PostScrapersIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./telegrafs/%s", pathParam0) - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return response, nil -} - -// ParseDeleteScrapersIDLabelsIDResponse parses an HTTP response from a DeleteScrapersIDLabelsIDWithResponse call -func ParseDeleteScrapersIDLabelsIDResponse(rsp *http.Response) (*DeleteScrapersIDLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - response := &DeleteScrapersIDLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseGetScrapersIDMembersResponse parses an HTTP response from a GetScrapersIDMembersWithResponse call -func ParseGetScrapersIDMembersResponse(rsp *http.Response) (*GetScrapersIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTelegrafsID calls the GET on /telegrafs/{telegrafID} +// Retrieve a Telegraf configuration +func (c *Client) GetTelegrafsID(ctx context.Context, params *GetTelegrafsIDAllParams) (*Telegraf, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) if err != nil { return nil, err } - response := &GetScrapersIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceMembers - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./telegrafs/%s", pathParam0) - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} - -// ParsePostScrapersIDMembersResponse parses an HTTP response from a PostScrapersIDMembersWithResponse call -func ParsePostScrapersIDMembersResponse(rsp *http.Response) (*PostScrapersIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &PostScrapersIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceMember - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSON201 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + if params.Accept != nil { + var headerParam1 string + + headerParam1, err = runtime.StyleParamWithLocation("simple", false, "Accept", runtime.ParamLocationHeader, *params.Accept) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Accept", headerParam1) } - return response, nil -} - -// ParseDeleteScrapersIDMembersIDResponse parses an HTTP response from a DeleteScrapersIDMembersIDWithResponse call -func ParseDeleteScrapersIDMembersIDResponse(rsp *http.Response) (*DeleteScrapersIDMembersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteScrapersIDMembersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &Telegraf{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetScrapersIDOwnersResponse parses an HTTP response from a GetScrapersIDOwnersWithResponse call -func ParseGetScrapersIDOwnersResponse(rsp *http.Response) (*GetScrapersIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PutTelegrafsID calls the PUT on /telegrafs/{telegrafID} +// Update a Telegraf configuration +func (c *Client) PutTelegrafsID(ctx context.Context, params *PutTelegrafsIDAllParams) (*Telegraf, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &GetScrapersIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceOwners - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./telegrafs/%s", pathParam0) -// ParsePostScrapersIDOwnersResponse parses an HTTP response from a PostScrapersIDOwnersWithResponse call -func ParsePostScrapersIDOwnersResponse(rsp *http.Response) (*PostScrapersIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostScrapersIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("PUT", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceOwner - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseDeleteScrapersIDOwnersIDResponse parses an HTTP response from a DeleteScrapersIDOwnersIDWithResponse call -func ParseDeleteScrapersIDOwnersIDResponse(rsp *http.Response) (*DeleteScrapersIDOwnersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteScrapersIDOwnersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &Telegraf{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetSetupResponse parses an HTTP response from a GetSetupWithResponse call -func ParseGetSetupResponse(rsp *http.Response) (*GetSetupResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTelegrafsIDLabels calls the GET on /telegrafs/{telegrafID}/labels +// List all labels for a Telegraf config +func (c *Client) GetTelegrafsIDLabels(ctx context.Context, params *GetTelegrafsIDLabelsAllParams) (*LabelsResponse, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) if err != nil { return nil, err } - response := &GetSetupResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest IsOnboarding - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./telegrafs/%s/labels", pathParam0) -// ParsePostSetupResponse parses an HTTP response from a PostSetupWithResponse call -func ParsePostSetupResponse(rsp *http.Response) (*PostSetupResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostSetupResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest OnboardingResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostSigninResponse parses an HTTP response from a PostSigninWithResponse call -func ParsePostSigninResponse(rsp *http.Response) (*PostSigninResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostSigninResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON403 = &dest + response := &LabelsResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostSignoutResponse parses an HTTP response from a PostSignoutWithResponse call -func ParsePostSignoutResponse(rsp *http.Response) (*PostSignoutResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostTelegrafsIDLabels calls the POST on /telegrafs/{telegrafID}/labels +// Add a label to a Telegraf config +func (c *Client) PostTelegrafsIDLabels(ctx context.Context, params *PostTelegrafsIDLabelsAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PostSignoutResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./telegrafs/%s/labels", pathParam0) -// ParseGetSourcesResponse parses an HTTP response from a GetSourcesWithResponse call -func ParseGetSourcesResponse(rsp *http.Response) (*GetSourcesResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetSourcesResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Sources - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostSourcesResponse parses an HTTP response from a PostSourcesWithResponse call -func ParsePostSourcesResponse(rsp *http.Response) (*PostSourcesResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostSourcesResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Source - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &LabelResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteSourcesIDResponse parses an HTTP response from a DeleteSourcesIDWithResponse call -func ParseDeleteSourcesIDResponse(rsp *http.Response) (*DeleteSourcesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } +// DeleteTelegrafsIDLabelsID calls the DELETE on /telegrafs/{telegrafID}/labels/{labelID} +// Delete a label from a Telegraf config +func (c *Client) DeleteTelegrafsIDLabelsID(ctx context.Context, params *DeleteTelegrafsIDLabelsIDAllParams) error { + var err error + + var pathParam0 string - response := &DeleteSourcesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./telegrafs/%s/labels/%s", pathParam0, pathParam1) -// ParseGetSourcesIDResponse parses an HTTP response from a GetSourcesIDWithResponse call -func ParseGetSourcesIDResponse(rsp *http.Response) (*GetSourcesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &GetSourcesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Source - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParsePatchSourcesIDResponse parses an HTTP response from a PatchSourcesIDWithResponse call -func ParsePatchSourcesIDResponse(rsp *http.Response) (*PatchSourcesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTelegrafsIDMembers calls the GET on /telegrafs/{telegrafID}/members +// List all users with member privileges for a Telegraf config +func (c *Client) GetTelegrafsIDMembers(ctx context.Context, params *GetTelegrafsIDMembersAllParams) (*ResourceMembers, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) if err != nil { return nil, err } - response := &PatchSourcesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Source - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./telegrafs/%s/members", pathParam0) -// ParseGetSourcesIDBucketsResponse parses an HTTP response from a GetSourcesIDBucketsWithResponse call -func ParseGetSourcesIDBucketsResponse(rsp *http.Response) (*GetSourcesIDBucketsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetSourcesIDBucketsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Buckets - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetSourcesIDHealthResponse parses an HTTP response from a GetSourcesIDHealthWithResponse call -func ParseGetSourcesIDHealthResponse(rsp *http.Response) (*GetSourcesIDHealthResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetSourcesIDHealthResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest HealthCheck - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: - var dest HealthCheck - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON503 = &dest + response := &ResourceMembers{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseListStacksResponse parses an HTTP response from a ListStacksWithResponse call -func ParseListStacksResponse(rsp *http.Response) (*ListStacksResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostTelegrafsIDMembers calls the POST on /telegrafs/{telegrafID}/members +// Add a member to a Telegraf config +func (c *Client) PostTelegrafsIDMembers(ctx context.Context, params *PostTelegrafsIDMembersAllParams) (*ResourceMember, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &ListStacksResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest struct { - Stacks *[]Stack `json:"stacks,omitempty"` - } - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./telegrafs/%s/members", pathParam0) -// ParseCreateStackResponse parses an HTTP response from a CreateStackWithResponse call -func ParseCreateStackResponse(rsp *http.Response) (*CreateStackResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &CreateStackResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Stack - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + req.Header.Add("Content-Type", "application/json") - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseDeleteStackResponse parses an HTTP response from a DeleteStackWithResponse call -func ParseDeleteStackResponse(rsp *http.Response) (*DeleteStackResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteStackResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &ResourceMember{} + + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseReadStackResponse parses an HTTP response from a ReadStackWithResponse call -func ParseReadStackResponse(rsp *http.Response) (*ReadStackResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } +// DeleteTelegrafsIDMembersID calls the DELETE on /telegrafs/{telegrafID}/members/{userID} +// Remove a member from a Telegraf config +func (c *Client) DeleteTelegrafsIDMembersID(ctx context.Context, params *DeleteTelegrafsIDMembersIDAllParams) error { + var err error + + var pathParam0 string - response := &ReadStackResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Stack - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./telegrafs/%s/members/%s", pathParam0, pathParam1) -// ParseUpdateStackResponse parses an HTTP response from a UpdateStackWithResponse call -func ParseUpdateStackResponse(rsp *http.Response) (*UpdateStackResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &UpdateStackResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Stack - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseUninstallStackResponse parses an HTTP response from a UninstallStackWithResponse call -func ParseUninstallStackResponse(rsp *http.Response) (*UninstallStackResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err - } - - response := &UninstallStackResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Stack - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + defer func() { _ = rsp.Body.Close() }() - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseGetTasksResponse parses an HTTP response from a GetTasksWithResponse call -func ParseGetTasksResponse(rsp *http.Response) (*GetTasksResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetTelegrafsIDOwners calls the GET on /telegrafs/{telegrafID}/owners +// List all owners of a Telegraf configuration +func (c *Client) GetTelegrafsIDOwners(ctx context.Context, params *GetTelegrafsIDOwnersAllParams) (*ResourceOwners, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) if err != nil { return nil, err } - response := &GetTasksResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Tasks - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./telegrafs/%s/owners", pathParam0) -// ParsePostTasksResponse parses an HTTP response from a PostTasksWithResponse call -func ParsePostTasksResponse(rsp *http.Response) (*PostTasksResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PostTasksResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Task - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseDeleteTasksIDResponse parses an HTTP response from a DeleteTasksIDWithResponse call -func ParseDeleteTasksIDResponse(rsp *http.Response) (*DeleteTasksIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &DeleteTasksIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + response := &ResourceOwners{} + + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetTasksIDResponse parses an HTTP response from a GetTasksIDWithResponse call -func ParseGetTasksIDResponse(rsp *http.Response) (*GetTasksIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostTelegrafsIDOwners calls the POST on /telegrafs/{telegrafID}/owners +// Add an owner to a Telegraf configuration +func (c *Client) PostTelegrafsIDOwners(ctx context.Context, params *PostTelegrafsIDOwnersAllParams) (*ResourceOwner, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &GetTasksIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Task - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./telegrafs/%s/owners", pathParam0) -// ParsePatchTasksIDResponse parses an HTTP response from a PatchTasksIDWithResponse call -func ParsePatchTasksIDResponse(rsp *http.Response) (*PatchTasksIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &PatchTasksIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Task - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetTasksIDLabelsResponse parses an HTTP response from a GetTasksIDLabelsWithResponse call -func ParseGetTasksIDLabelsResponse(rsp *http.Response) (*GetTasksIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetTasksIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelsResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &ResourceOwner{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostTasksIDLabelsResponse parses an HTTP response from a PostTasksIDLabelsWithResponse call -func ParsePostTasksIDLabelsResponse(rsp *http.Response) (*PostTasksIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } +// DeleteTelegrafsIDOwnersID calls the DELETE on /telegrafs/{telegrafID}/owners/{userID} +// Remove an owner from a Telegraf config +func (c *Client) DeleteTelegrafsIDOwnersID(ctx context.Context, params *DeleteTelegrafsIDOwnersIDAllParams) error { + var err error + + var pathParam0 string - response := &PostTasksIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "telegrafID", runtime.ParamLocationPath, params.TelegrafID) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./telegrafs/%s/owners/%s", pathParam0, pathParam1) -// ParseDeleteTasksIDLabelsIDResponse parses an HTTP response from a DeleteTasksIDLabelsIDWithResponse call -func ParseDeleteTasksIDLabelsIDResponse(rsp *http.Response) (*DeleteTasksIDLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &DeleteTasksIDLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetTasksIDLogsResponse parses an HTTP response from a GetTasksIDLogsWithResponse call -func ParseGetTasksIDLogsResponse(rsp *http.Response) (*GetTasksIDLogsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err - } - - response := &GetTasksIDLogsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Logs - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + defer func() { _ = rsp.Body.Close() }() - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseGetTasksIDMembersResponse parses an HTTP response from a GetTasksIDMembersWithResponse call -func ParseGetTasksIDMembersResponse(rsp *http.Response) (*GetTasksIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// ExportTemplate calls the POST on /templates/export +// Export a new template +func (c *Client) ExportTemplate(ctx context.Context, params *ExportTemplateAllParams) (*Template, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &GetTasksIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceMembers - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + operationPath := fmt.Sprintf("./templates/export") - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - return response, nil -} + req.Header.Add("Content-Type", "application/json") -// ParsePostTasksIDMembersResponse parses an HTTP response from a PostTasksIDMembersWithResponse call -func ParsePostTasksIDMembersResponse(rsp *http.Response) (*PostTasksIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostTasksIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceMember - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &Template{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteTasksIDMembersIDResponse parses an HTTP response from a DeleteTasksIDMembersIDWithResponse call -func ParseDeleteTasksIDMembersIDResponse(rsp *http.Response) (*DeleteTasksIDMembersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetUsers calls the GET on /users +// List users +func (c *Client) GetUsers(ctx context.Context, params *GetUsersParams) (*Users, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - response := &DeleteTasksIDMembersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + operationPath := fmt.Sprintf("./users") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + queryValues := queryURL.Query() + + if params.Offset != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + if params.Limit != nil { -// ParseGetTasksIDOwnersResponse parses an HTTP response from a GetTasksIDOwnersWithResponse call -func ParseGetTasksIDOwnersResponse(rsp *http.Response) (*GetTasksIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - response := &GetTasksIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceOwners - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.After != nil { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "after", runtime.ParamLocationQuery, *params.After); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + if params.Name != nil { -// ParsePostTasksIDOwnersResponse parses an HTTP response from a PostTasksIDOwnersWithResponse call -func ParsePostTasksIDOwnersResponse(rsp *http.Response) (*PostTasksIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "name", runtime.ParamLocationQuery, *params.Name); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - response := &PostTasksIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceOwner - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + if params.Id != nil { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "id", runtime.ParamLocationQuery, *params.Id); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + queryURL.RawQuery = queryValues.Encode() -// ParseDeleteTasksIDOwnersIDResponse parses an HTTP response from a DeleteTasksIDOwnersIDWithResponse call -func ParseDeleteTasksIDOwnersIDResponse(rsp *http.Response) (*DeleteTasksIDOwnersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &DeleteTasksIDOwnersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetTasksIDRunsResponse parses an HTTP response from a GetTasksIDRunsWithResponse call -func ParseGetTasksIDRunsResponse(rsp *http.Response) (*GetTasksIDRunsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetTasksIDRunsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Runs - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &Users{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostTasksIDRunsResponse parses an HTTP response from a PostTasksIDRunsWithResponse call -func ParsePostTasksIDRunsResponse(rsp *http.Response) (*PostTasksIDRunsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostUsers calls the POST on /users +// Create a user +func (c *Client) PostUsers(ctx context.Context, params *PostUsersAllParams) (*UserResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PostTasksIDRunsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Run - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./users") - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} - -// ParseDeleteTasksIDRunsIDResponse parses an HTTP response from a DeleteTasksIDRunsIDWithResponse call -func ParseDeleteTasksIDRunsIDResponse(rsp *http.Response) (*DeleteTasksIDRunsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - response := &DeleteTasksIDRunsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseGetTasksIDRunsIDResponse parses an HTTP response from a GetTasksIDRunsIDWithResponse call -func ParseGetTasksIDRunsIDResponse(rsp *http.Response) (*GetTasksIDRunsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &GetTasksIDRunsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Run - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &UserResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetTasksIDRunsIDLogsResponse parses an HTTP response from a GetTasksIDRunsIDLogsWithResponse call -func ParseGetTasksIDRunsIDLogsResponse(rsp *http.Response) (*GetTasksIDRunsIDLogsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// DeleteUsersID calls the DELETE on /users/{userID} +// Delete a user +func (c *Client) DeleteUsersID(ctx context.Context, params *DeleteUsersIDAllParams) error { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) if err != nil { - return nil, err + return err } - response := &GetTasksIDRunsIDLogsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Logs - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./users/%s", pathParam0) - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return err } - return response, nil -} - -// ParsePostTasksIDRunsIDRetryResponse parses an HTTP response from a PostTasksIDRunsIDRetryWithResponse call -func ParsePostTasksIDRunsIDRetryResponse(rsp *http.Response) (*PostTasksIDRunsIDRetryResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { - return nil, err + return err } - response := &PostTasksIDRunsIDRetryResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + if params.ZapTraceSpan != nil { + var headerParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Run - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + req.Header.Set("Zap-Trace-Span", headerParam0) + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseGetTelegrafPluginsResponse parses an HTTP response from a GetTelegrafPluginsWithResponse call -func ParseGetTelegrafPluginsResponse(rsp *http.Response) (*GetTelegrafPluginsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetUsersID calls the GET on /users/{userID} +// Retrieve a user +func (c *Client) GetUsersID(ctx context.Context, params *GetUsersIDAllParams) (*UserResponse, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) if err != nil { return nil, err } - response := &GetTelegrafPluginsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest TelegrafPlugins - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./users/%s", pathParam0) -// ParseGetTelegrafsResponse parses an HTTP response from a GetTelegrafsWithResponse call -func ParseGetTelegrafsResponse(rsp *http.Response) (*GetTelegrafsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetTelegrafsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Telegrafs - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostTelegrafsResponse parses an HTTP response from a PostTelegrafsWithResponse call -func ParsePostTelegrafsResponse(rsp *http.Response) (*PostTelegrafsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostTelegrafsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Telegraf - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &UserResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteTelegrafsIDResponse parses an HTTP response from a DeleteTelegrafsIDWithResponse call -func ParseDeleteTelegrafsIDResponse(rsp *http.Response) (*DeleteTelegrafsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PatchUsersID calls the PATCH on /users/{userID} +// Update a user +func (c *Client) PatchUsersID(ctx context.Context, params *PatchUsersIDAllParams) (*UserResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &DeleteTelegrafsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + var pathParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./users/%s", pathParam0) -// ParseGetTelegrafsIDResponse parses an HTTP response from a GetTelegrafsIDWithResponse call -func ParseGetTelegrafsIDResponse(rsp *http.Response) (*GetTelegrafsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetTelegrafsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Telegraf - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - case rsp.StatusCode == 200: - // Content-type (application/toml) unsupported - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePutTelegrafsIDResponse parses an HTTP response from a PutTelegrafsIDWithResponse call -func ParsePutTelegrafsIDResponse(rsp *http.Response) (*PutTelegrafsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PutTelegrafsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Telegraf - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &UserResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseGetTelegrafsIDLabelsResponse parses an HTTP response from a GetTelegrafsIDLabelsWithResponse call -func ParseGetTelegrafsIDLabelsResponse(rsp *http.Response) (*GetTelegrafsIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostUsersIDPassword calls the POST on /users/{userID}/password +// Update a password +func (c *Client) PostUsersIDPassword(ctx context.Context, params *PostUsersIDPasswordAllParams) error { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { - return nil, err - } - - response := &GetTelegrafsIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + return err } + bodyReader = bytes.NewReader(buf) - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelsResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "userID", runtime.ParamLocationPath, params.UserID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./users/%s/password", pathParam0) -// ParsePostTelegrafsIDLabelsResponse parses an HTTP response from a PostTelegrafsIDLabelsWithResponse call -func ParsePostTelegrafsIDLabelsResponse(rsp *http.Response) (*PostTelegrafsIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &PostTelegrafsIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + req.Header.Add("Content-Type", "application/json") - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + if params.ZapTraceSpan != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + req.Header.Set("Zap-Trace-Span", headerParam0) + } + + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } + + defer func() { _ = rsp.Body.Close() }() + + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } -// ParseDeleteTelegrafsIDLabelsIDResponse parses an HTTP response from a DeleteTelegrafsIDLabelsIDWithResponse call -func ParseDeleteTelegrafsIDLabelsIDResponse(rsp *http.Response) (*DeleteTelegrafsIDLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetVariables calls the GET on /variables +// List all variables +func (c *Client) GetVariables(ctx context.Context, params *GetVariablesParams) (*Variables, error) { + var err error + + serverURL, err := url.Parse(c.APIEndpoint) if err != nil { return nil, err } - response := &DeleteTelegrafsIDLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + operationPath := fmt.Sprintf("./variables") + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + queryValues := queryURL.Query() + + if params.Org != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "org", runtime.ParamLocationQuery, *params.Org); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + } + + if params.OrgID != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orgID", runtime.ParamLocationQuery, *params.OrgID); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } } - return response, nil -} + queryURL.RawQuery = queryValues.Encode() -// ParseGetTelegrafsIDMembersResponse parses an HTTP response from a GetTelegrafsIDMembersWithResponse call -func ParseGetTelegrafsIDMembersResponse(rsp *http.Response) (*GetTelegrafsIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - response := &GetTelegrafsIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceMembers - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostTelegrafsIDMembersResponse parses an HTTP response from a PostTelegrafsIDMembersWithResponse call -func ParsePostTelegrafsIDMembersResponse(rsp *http.Response) (*PostTelegrafsIDMembersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostTelegrafsIDMembersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceMember - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &Variables{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteTelegrafsIDMembersIDResponse parses an HTTP response from a DeleteTelegrafsIDMembersIDWithResponse call -func ParseDeleteTelegrafsIDMembersIDResponse(rsp *http.Response) (*DeleteTelegrafsIDMembersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostVariables calls the POST on /variables +// Create a variable +func (c *Client) PostVariables(ctx context.Context, params *PostVariablesAllParams) (*Variable, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &DeleteTelegrafsIDMembersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + operationPath := fmt.Sprintf("./variables") - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return response, nil -} - -// ParseGetTelegrafsIDOwnersResponse parses an HTTP response from a GetTelegrafsIDOwnersWithResponse call -func ParseGetTelegrafsIDOwnersResponse(rsp *http.Response) (*GetTelegrafsIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) if err != nil { return nil, err } - response := &GetTelegrafsIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + req.Header.Add("Content-Type", "application/json") - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ResourceOwners - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostTelegrafsIDOwnersResponse parses an HTTP response from a PostTelegrafsIDOwnersWithResponse call -func ParsePostTelegrafsIDOwnersResponse(rsp *http.Response) (*PostTelegrafsIDOwnersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostTelegrafsIDOwnersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest ResourceOwner - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &Variable{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteTelegrafsIDOwnersIDResponse parses an HTTP response from a DeleteTelegrafsIDOwnersIDWithResponse call -func ParseDeleteTelegrafsIDOwnersIDResponse(rsp *http.Response) (*DeleteTelegrafsIDOwnersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } +// DeleteVariablesID calls the DELETE on /variables/{variableID} +// Delete a variable +func (c *Client) DeleteVariablesID(ctx context.Context, params *DeleteVariablesIDAllParams) error { + var err error - response := &DeleteTelegrafsIDOwnersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + var pathParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, params.VariableID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./variables/%s", pathParam0) -// ParseApplyTemplateResponse parses an HTTP response from a ApplyTemplateWithResponse call -func ParseApplyTemplateResponse(rsp *http.Response) (*ApplyTemplateResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &ApplyTemplateResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest TemplateSummary - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest TemplateSummary - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParseExportTemplateResponse parses an HTTP response from a ExportTemplateWithResponse call -func ParseExportTemplateResponse(rsp *http.Response) (*ExportTemplateResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { - return nil, err + return err } - response := &ExportTemplateResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + defer func() { _ = rsp.Body.Close() }() - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Template - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } - response.JSON200 = &dest + return decodeError(bodyBytes, rsp) + } + return nil - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest +} + +// GetVariablesID calls the GET on /variables/{variableID} +// Retrieve a variable +func (c *Client) GetVariablesID(ctx context.Context, params *GetVariablesIDAllParams) (*Variable, error) { + var err error + + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "yaml") && rsp.StatusCode == 200: - var dest Template - if err := yaml.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.YAML200 = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, params.VariableID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./variables/%s", pathParam0) -// ParseGetUsersResponse parses an HTTP response from a GetUsersWithResponse call -func ParseGetUsersResponse(rsp *http.Response) (*GetUsersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetUsersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Users - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostUsersResponse parses an HTTP response from a PostUsersWithResponse call -func ParsePostUsersResponse(rsp *http.Response) (*PostUsersResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostUsersResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest UserResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &Variable{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteUsersIDResponse parses an HTTP response from a DeleteUsersIDWithResponse call -func ParseDeleteUsersIDResponse(rsp *http.Response) (*DeleteUsersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PatchVariablesID calls the PATCH on /variables/{variableID} +// Update a variable +func (c *Client) PatchVariablesID(ctx context.Context, params *PatchVariablesIDAllParams) (*Variable, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &DeleteUsersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + var pathParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, params.VariableID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./variables/%s", pathParam0) -// ParseGetUsersIDResponse parses an HTTP response from a GetUsersIDWithResponse call -func ParseGetUsersIDResponse(rsp *http.Response) (*GetUsersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetUsersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("PATCH", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest UserResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePatchUsersIDResponse parses an HTTP response from a PatchUsersIDWithResponse call -func ParsePatchUsersIDResponse(rsp *http.Response) (*PatchUsersIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PatchUsersIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest UserResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &Variable{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePostUsersIDPasswordResponse parses an HTTP response from a PostUsersIDPasswordWithResponse call -func ParsePostUsersIDPasswordResponse(rsp *http.Response) (*PostUsersIDPasswordResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PutVariablesID calls the PUT on /variables/{variableID} +// Replace a variable +func (c *Client) PutVariablesID(ctx context.Context, params *PutVariablesIDAllParams) (*Variable, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PostUsersIDPasswordResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + var pathParam0 string - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, params.VariableID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./variables/%s", pathParam0) -// ParseGetVariablesResponse parses an HTTP response from a GetVariablesWithResponse call -func ParseGetVariablesResponse(rsp *http.Response) (*GetVariablesResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetVariablesResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("PUT", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Variables - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json") - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostVariablesResponse parses an HTTP response from a PostVariablesWithResponse call -func ParsePostVariablesResponse(rsp *http.Response) (*PostVariablesResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostVariablesResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Variable - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &Variable{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteVariablesIDResponse parses an HTTP response from a DeleteVariablesIDWithResponse call -func ParseDeleteVariablesIDResponse(rsp *http.Response) (*DeleteVariablesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// GetVariablesIDLabels calls the GET on /variables/{variableID}/labels +// List all labels for a variable +func (c *Client) GetVariablesIDLabels(ctx context.Context, params *GetVariablesIDLabelsAllParams) (*LabelsResponse, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, params.VariableID) if err != nil { return nil, err } - response := &DeleteVariablesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest - - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./variables/%s/labels", pathParam0) -// ParseGetVariablesIDResponse parses an HTTP response from a GetVariablesIDWithResponse call -func ParseGetVariablesIDResponse(rsp *http.Response) (*GetVariablesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetVariablesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Variable - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePatchVariablesIDResponse parses an HTTP response from a PatchVariablesIDWithResponse call -func ParsePatchVariablesIDResponse(rsp *http.Response) (*PatchVariablesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PatchVariablesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Variable - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + response := &LabelsResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 200: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParsePutVariablesIDResponse parses an HTTP response from a PutVariablesIDWithResponse call -func ParsePutVariablesIDResponse(rsp *http.Response) (*PutVariablesIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() +// PostVariablesIDLabels calls the POST on /variables/{variableID}/labels +// Add a label to a variable +func (c *Client) PostVariablesIDLabels(ctx context.Context, params *PostVariablesIDLabelsAllParams) (*LabelResponse, error) { + var err error + var bodyReader io.Reader + buf, err := json.Marshal(params.Body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) - response := &PutVariablesIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Variable - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + var pathParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, params.VariableID) + if err != nil { + return nil, err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return nil, err } - return response, nil -} + operationPath := fmt.Sprintf("./variables/%s/labels", pathParam0) -// ParseGetVariablesIDLabelsResponse parses an HTTP response from a GetVariablesIDLabelsWithResponse call -func ParseGetVariablesIDLabelsResponse(rsp *http.Response) (*GetVariablesIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { return nil, err } - response := &GetVariablesIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("POST", queryURL.String(), bodyReader) + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LabelsResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest + req.Header.Add("Content-Type", "application/json") + + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { return nil, err } - response.JSONDefault = &dest - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + req.Header.Set("Zap-Trace-Span", headerParam0) } - return response, nil -} - -// ParsePostVariablesIDLabelsResponse parses an HTTP response from a PostVariablesIDLabelsWithResponse call -func ParsePostVariablesIDLabelsResponse(rsp *http.Response) (*PostVariablesIDLabelsResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) if err != nil { return nil, err } + bodyBytes, err := io.ReadAll(rsp.Body) - response := &PostVariablesIDLabelsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest LabelResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest + response := &LabelResponse{} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { + switch rsp.StatusCode { + case 201: + if err := unmarshalJSONResponse(bodyBytes, &response); err != nil { return nil, err } - response.JSONDefault = &dest - - // Fallback for unexpected error default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + return nil, decodeError(bodyBytes, rsp) } - return response, nil + } -// ParseDeleteVariablesIDLabelsIDResponse parses an HTTP response from a DeleteVariablesIDLabelsIDWithResponse call -func ParseDeleteVariablesIDLabelsIDResponse(rsp *http.Response) (*DeleteVariablesIDLabelsIDResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() - if err != nil { - return nil, err - } +// DeleteVariablesIDLabelsID calls the DELETE on /variables/{variableID}/labels/{labelID} +// Delete a label from a variable +func (c *Client) DeleteVariablesIDLabelsID(ctx context.Context, params *DeleteVariablesIDLabelsIDAllParams) error { + var err error + + var pathParam0 string - response := &DeleteVariablesIDLabelsIDResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "variableID", runtime.ParamLocationPath, params.VariableID) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + var pathParam1 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "labelID", runtime.ParamLocationPath, params.LabelID) + if err != nil { + return err + } - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} - } + serverURL, err := url.Parse(c.APIEndpoint) + if err != nil { + return err } - return response, nil -} + operationPath := fmt.Sprintf("./variables/%s/labels/%s", pathParam0, pathParam1) -// ParsePostWriteResponse parses an HTTP response from a PostWriteWithResponse call -func ParsePostWriteResponse(rsp *http.Response) (*PostWriteResponse, error) { - bodyBytes, err := ioutil.ReadAll(rsp.Body) - defer rsp.Body.Close() + queryURL, err := serverURL.Parse(operationPath) if err != nil { - return nil, err + return err } - response := &PostWriteResponse{ - Body: bodyBytes, - HTTPResponse: rsp, + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return err } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest LineProtocolError - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + if params.ZapTraceSpan != nil { + var headerParam0 string - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 413: - var dest LineProtocolLengthError - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err + headerParam0, err = runtime.StyleParamWithLocation("simple", false, "Zap-Trace-Span", runtime.ParamLocationHeader, *params.ZapTraceSpan) + if err != nil { + return err } - response.JSON413 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON500 = &dest + req.Header.Set("Zap-Trace-Span", headerParam0) + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSONDefault = &dest + req = req.WithContext(ctx) + rsp, err := c.Client.Do(req) + if err != nil { + return err + } - case rsp.StatusCode == 413: - // Content-type (text/html) unsupported + defer func() { _ = rsp.Body.Close() }() - // Fallback for unexpected error - default: - if rsp.StatusCode > 299 { - return nil, &ihttp.Error{StatusCode: rsp.StatusCode, Message: rsp.Status} + if rsp.StatusCode > 299 { + bodyBytes, err := io.ReadAll(rsp.Body) + if err != nil { + return err } + return decodeError(bodyBytes, rsp) } + return nil - return response, nil } + +/* + + */ diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/oss.yml b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/oss.yml index eb891a19ccb6..c191da0cb218 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/oss.yml +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/oss.yml @@ -7,28 +7,152 @@ info: servers: - url: /api/v2 tags: - - name: Authentication + - name: Authorizations + description: | + Create and manage _API tokens_. + An _authorization_ contains a list of `read` and `write` + permissions for organization resources and provides an API token for authentication. + An authorization belongs to an organization and only contains permissions for that organization. + + An authorization is only visible to the user that created it. + Optionally, when creating an authorization, you can scope it to a specific user. + A _user session_ carries all the permissions granted by all the user's authorizations. + To create a user session, use the [`POST /api/v2/signin`](#operation/PostSignin) endpoint. + + ### Related endpoints + + - [Signin](#tag/Signin) + - [Signout](#tag/Signout) + + ### Related guides + + - [Authorize API requests](https://docs.influxdata.com/influxdb/v2.3/api-guide/api_intro/#authentication). + - [Manage API tokens](https://docs.influxdata.com/influxdb/v2.3/security/tokens/). + - [Assign a token to a specific user](https://docs.influxdata.com/influxdb/v2.3/security/tokens/create-token/). + - name: Buckets + description: | + Store your data in InfluxDB [buckets](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#bucket). + A bucket is a named location where time series data is stored. All buckets + have a [retention period](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#retention-period), + a duration of time that each data point persists. InfluxDB drops all + points with timestamps older than the bucket’s retention period. + A bucket belongs to an organization. + + ### Related guides + + - [Manage buckets](https://docs.influxdata.com/influxdb/v2.3/organizations/buckets/) + - name: Debug + description: | + Generate profiling and trace reports. + + Use routes under `/debug/pprof` to analyze the Go runtime of InfluxDB. + These endpoints generate [Go runtime profiles](https://pkg.go.dev/runtime/pprof) + and **trace** reports. + **Profiles** are collections of stack traces that show call sequences + leading to instances of a particular event, such as allocation. + + For more information about **pprof profile** and **trace** reports, + see the following resources: + - [Google pprof tool](https://github.com/google/pprof) + - [Golang diagnostics](https://go.dev/doc/diagnostics) + - name: Delete + description: | + Delete data from an InfluxDB bucket. + - name: Query description: | - The InfluxDB `/api/v2` API requires authentication for all requests. - Use InfluxDB API tokens to authenticate requests to the `/api/v2` API. + Retrieve data, analyze queries, and get query suggestions. + - name: Tasks + description: | + Process and analyze your data with tasks in the InfluxDB task engine. + With tasks, you can schedule Flux scripts to query, analyze, modify, and act on data. + + Use the `/api/v2/tasks` endpoints to create and manage tasks, retry task runs, and retrieve run logs. + + #### Related guides + + - [Get started with tasks](https://docs.influxdata.com/influxdb/v2.3/process-data/get-started/) + - [Common data processing tasks](https://docs.influxdata.com/influxdb/v2.3/process-data/common-tasks/) + - name: Templates + description: | + Export and apply InfluxDB **templates**. + Manage **stacks** of templated InfluxDB resources. + + InfluxDB templates are prepackaged configurations for + everything from dashboards and Telegraf to notifications and alerts. + Use InfluxDB templates to quickly configure a fresh instance of InfluxDB, + back up your dashboard configuration, or share your configuration with the + InfluxData community. + + Use the `/api/v2/templates` endpoints to export templates and apply templates. + **InfluxDB stacks** are stateful InfluxDB templates that let you + add, update, and remove installed template resources over time, avoid duplicating + resources when applying the same or similar templates more than once, and + apply changes to distributed instances of InfluxDB OSS or InfluxDB Cloud. - For examples and more information, see - [Token authentication](#section/Authentication/TokenAuthentication) + Use the `/api/v2/stacks` endpoints to manage installed template resources. + #### Related guides + + - [InfluxDB stacks](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/stacks/) + - [InfluxDB templates](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/) + - name: Write + description: | + Write time series data to buckets. + - name: Authentication + description: | + Use one of the following schemes to authenticate to the InfluxDB API: + + - [Token authentication](#section/Authentication/TokenAuthentication) + - [Basic authentication](#section/Authentication/BasicAuthentication) + - [Querystring authentication](#section/Authentication/QuerystringAuthentication) x-traitTag: true - name: Quick start x-traitTag: true description: | - See the [**API Quick Start**](https://docs.influxdata.com/influxdb/v2.1/api-guide/api_intro/) to get up and running authenticating with tokens, writing to buckets, and querying data. + See the [**API Quick Start**](https://docs.influxdata.com/influxdb/v2.3/api-guide/api_intro/) + to get up and running authenticating with tokens, writing to buckets, and querying data. + + [**InfluxDB API client libraries**](https://docs.influxdata.com/influxdb/v2.3/api-guide/client-libraries/) + are available for popular languages and ready to import into your application. + - name: Common parameters + x-traitTag: true + description: | + Many InfluxDB API endpoints require parameters to specify resources--for example, + writing to a **bucket** in an **organization**. + + ### Common query parameters + + | Query parameter | Value type | Description | + |:------------------------ |:--------------------- |:-------------------------------------------| + | `bucket` | string | The bucket name or ID ([find your bucket](https://docs.influxdata.com/influxdb/v2.3/organizations/buckets/view-buckets/). | + | `bucketID` | string | The bucket ID ([find your bucket](https://docs.influxdata.com/influxdb/v2.3/organizations/buckets/view-buckets/). | + | `org` | string | The organization name or ID ([find your organization](https://docs.influxdata.com/influxdb/v2.3/organizations/view-orgs/). | + | `orgID` | 16-byte string | The organization ID ([find your organization](https://docs.influxdata.com/influxdb/v2.3/organizations/view-orgs/). | + - name: Headers + x-traitTag: true + description: | + InfluxDB API endpoints use standard HTTP request and response headers. + + **Note**: Not all operations support all headers. + + ### Request headers - [**InfluxDB API client libraries**](https://docs.influxdata.com/influxdb/v2.1/api-guide/client-libraries/) are available for popular languages and ready to import into your application. + | Header | Value type | Description | + |:------------------------ |:--------------------- |:-------------------------------------------| + | `Accept` | string | The content type that the client can understand. | + | `Authorization` | string | The authorization scheme and credential. | + | `Content-Encoding` | string | The compression applied to the line protocol in the request payload. | + | `Content-Length` | integer | The size of the entity-body, in bytes, sent to the database. | + | `Content-Type` | string | The format of the data in the request body. | - name: Response codes x-traitTag: true description: | - The InfluxDB API uses standard HTTP status codes for success and failure responses. - The response body may include additional details. For details about a specific operation's response, see **Responses** and **Response Samples** for that operation. + InfluxDB API endpoints use standard HTTP status codes for success and failure responses. + The response body may include additional details. + For details about a specific operation's response, + see **Responses** and **Response Samples** for that operation. API operations may return the following HTTP status codes: @@ -36,129 +160,61 @@ tags: |:-----------:|:------------------------ |:--------------------- | | `200` | Success | | | `204` | No content | For a `POST` request, `204` indicates that InfluxDB accepted the request and request data is valid. Asynchronous operations, such as `write`, might not have completed yet. | - | `400` | Bad request | `Authorization` header is missing or malformed or the API token does not have permission for the operation. | - | `401` | Unauthorized | May indicate one of the following:
  • `Authorization: Token` header is missing or malformed
  • API token value is missing from the header
  • API token does not have permission. For more information about token types and permissions, see [Manage API tokens](https://docs.influxdata.com/influxdb/v2.1/security/tokens/)
  • | + | `400` | Bad request | May indicate one of the following:
    • Line protocol is malformed. The response body contains the first malformed line in the data and indicates what was expected. For partial writes, the number of points written and the number of points rejected are also included. For more information, check the `rejected_points` measurement in your `_monitoring` bucket.
    • `Authorization` header is missing or malformed or the API token doesn't have permission for the operation.
    | + | `401` | Unauthorized | May indicate one of the following:
    • `Authorization: Token` header is missing or malformed
    • API token value is missing from the header
    • API token doesn't have permission. For more information about token types and permissions, see [Manage API tokens](https://docs.influxdata.com/influxdb/latest/security/tokens/)
    | | `404` | Not found | Requested resource was not found. `message` in the response body provides details about the requested resource. | | `413` | Request entity too large | Request payload exceeds the size limit. | - | `422` | Unprocessible entity | Request data is invalid. `code` and `message` in the response body provide details about the problem. | + | `422` | Unprocessable entity | Request data is invalid. `code` and `message` in the response body provide details about the problem. | | `429` | Too many requests | API token is temporarily over the request quota. The `Retry-After` header describes when to try the request again. | | `500` | Internal server error | | | `503` | Service unavailable | Server is temporarily unavailable to process the request. The `Retry-After` header describes when to try the request again. | - - name: Query - description: | - Retrieve data, analyze queries, and get query suggestions. - - name: Write - description: | - Write time series data to buckets. - - name: Authorizations - description: | - Create and manage API tokens. An **authorization** associates a list of permissions to an **organization** and provides a token for API access. Optionally, you can restrict an authorization and its token to a specific user. - - For more information and examples, see the following: - - [Authorize API requests](https://docs.influxdata.com/influxdb/v2.1/api-guide/api_intro/#authentication). - - [Manage API tokens](https://docs.influxdata.com/influxdb/v2.1/security/tokens/). - - [Assign a token to a specific user](https://docs.influxdata.com/influxdb/v2.1/security/tokens/create-token/). x-tagGroups: - name: Overview tags: - Quick start - Authentication + - Headers - Response codes - - name: Data I/O endpoints - tags: - - Write - - Query - - name: Resource endpoints - tags: - - Buckets - - Dashboards - - Tasks - - Resources - - name: Security and access endpoints - tags: - - Authorizations - - Organizations - - Users - - name: System information endpoints + - name: Popular endpoints tags: - - Health - - Metrics - - Ping - - Ready - - Routes + - Data I/O endpoints + - Security and access endpoints + - System information endpoints - name: All endpoints - tags: - - Authorizations - - Backup - - Buckets - - Cells - - Checks - - Config - - DBRPs - - Dashboards - - Delete - - Health - - Metrics - - Labels - - Legacy Authorizations - - NotificationEndpoints - - NotificationRules - - Organizations - - Ping - - Query - - Ready - - RemoteConnections - - Replications - - Resources - - Restore - - Routes - - Rules - - Scraper Targets - - Secrets - - Setup - - Signin - - Signout - - Sources - - Tasks - - Telegraf Plugins - - Telegrafs - - Templates - - Users - - Variables - - Write + tags: [] paths: /signin: post: operationId: PostSignin summary: Create a user session. - description: 'Authenticates ***Basic Auth*** credentials for a user. If successful, creates a new UI session for the user.' + description: "Authenticates ***Basic Auth*** credentials for a user. If successful, creates a new UI session for the user." tags: - Signin security: - BasicAuthentication: [] parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '204': + "204": description: Success. User authenticated. - '401': + "401": description: Unauthorized access. content: application/json: schema: - $ref: '#/components/schemas/Error' - '403': + $ref: "#/components/schemas/Error" + "403": description: User account is disabled. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unsuccessful authentication. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /signout: post: operationId: PostSignout @@ -167,33 +223,37 @@ paths: - Signout description: Expires the current UI session for the user. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '204': + "204": description: Session successfully expired - '401': + "401": description: Unauthorized access content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unsuccessful session expiry content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /ping: get: operationId: GetPing - summary: Checks the status of InfluxDB instance and version of InfluxDB. + summary: Get the status and version of the instance + description: Returns the status and InfluxDB version of the instance. servers: - - url: '' + - url: "" tags: - Ping + - System information endpoints responses: - '204': - description: OK + "204": + description: | + OK. + Headers contain InfluxDB version information. headers: X-Influxdb-Build: schema: @@ -205,14 +265,17 @@ paths: description: The version of InfluxDB. head: operationId: HeadPing - summary: Checks the status of InfluxDB instance and version of InfluxDB. + summary: Get the status and version of the instance + description: Returns the status and InfluxDB version of the instance. servers: - - url: '' + - url: "" tags: - Ping responses: - '204': - description: OK + "204": + description: | + OK. + Headers contain InfluxDB version information. headers: X-Influxdb-Build: schema: @@ -228,15 +291,16 @@ paths: summary: List all top level routes tags: - Routes + - System information endpoints parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: default: description: All routes content: application/json: schema: - $ref: '#/components/schemas/Routes' + $ref: "#/components/schemas/Routes" /dbrps: get: operationId: GetDBRPs @@ -244,7 +308,7 @@ paths: - DBRPs summary: List database retention policy mappings parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: orgID description: Specifies the organization ID to filter on @@ -281,65 +345,65 @@ paths: schema: type: string responses: - '200': + "200": description: Success. Returns a list of database retention policy mappings. content: application/json: schema: - $ref: '#/components/schemas/DBRPs' - '400': + $ref: "#/components/schemas/DBRPs" + "400": description: Bad request. The request has one or more invalid parameters. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostDBRP tags: - DBRPs summary: Add a database retention policy mapping parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: description: The database retention policy mapping to add required: true content: application/json: schema: - $ref: '#/components/schemas/DBRPCreate' + $ref: "#/components/schemas/DBRPCreate" responses: - '201': + "201": description: Created. Returns the created database retention policy mapping. content: application/json: schema: - $ref: '#/components/schemas/DBRP' - '400': + $ref: "#/components/schemas/DBRP" + "400": description: Bad request. The mapping in the request has one or more invalid IDs. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/dbrps/{dbrpID}': + $ref: "#/components/schemas/Error" + "/dbrps/{dbrpID}": get: operationId: GetDBRPsID tags: - DBRPs summary: Retrieve a database retention policy mapping parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: orgID description: Specifies the organization ID of the mapping @@ -357,24 +421,24 @@ paths: required: true description: The database retention policy mapping ID responses: - '200': + "200": description: The database retention policy requested content: application/json: schema: - $ref: '#/components/schemas/DBRPGet' - '400': + $ref: "#/components/schemas/DBRPGet" + "400": description: if any of the IDs passed is invalid content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchDBRPID tags: @@ -386,9 +450,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DBRPUpdate' + $ref: "#/components/schemas/DBRPUpdate" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: orgID description: Specifies the organization ID of the mapping @@ -406,37 +470,37 @@ paths: required: true description: The database retention policy mapping. responses: - '200': + "200": description: An updated mapping content: application/json: schema: - $ref: '#/components/schemas/DBRPGet' - '400': + $ref: "#/components/schemas/DBRPGet" + "400": description: if any of the IDs passed is invalid content: application/json: schema: - $ref: '#/components/schemas/Error' - '404': + $ref: "#/components/schemas/Error" + "404": description: The mapping was not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" delete: operationId: DeleteDBRPID tags: - DBRPs summary: Delete a database retention policy parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: orgID description: Specifies the organization ID of the mapping @@ -454,20 +518,20 @@ paths: required: true description: The database retention policy mapping responses: - '204': + "204": description: Delete has been accepted - '400': + "400": description: if any of the IDs passed is invalid content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /telegraf/plugins: get: operationId: GetTelegrafPlugins @@ -475,25 +539,25 @@ paths: - Telegraf Plugins summary: List all Telegraf plugins parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: type description: The type of plugin desired. schema: type: string responses: - '200': + "200": description: A list of Telegraf plugins. content: application/json: schema: - $ref: '#/components/schemas/TelegrafPlugins' + $ref: "#/components/schemas/TelegrafPlugins" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /telegrafs: get: operationId: GetTelegrafs @@ -501,60 +565,60 @@ paths: - Telegrafs summary: List all Telegraf configurations parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: orgID description: The organization ID the Telegraf config belongs to. schema: type: string responses: - '200': + "200": description: A list of Telegraf configurations content: application/json: schema: - $ref: '#/components/schemas/Telegrafs' + $ref: "#/components/schemas/Telegrafs" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostTelegrafs tags: - Telegrafs summary: Create a Telegraf configuration parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: description: Telegraf configuration to create required: true content: application/json: schema: - $ref: '#/components/schemas/TelegrafPluginRequest' + $ref: "#/components/schemas/TelegrafPluginRequest" responses: - '201': + "201": description: Telegraf configuration created content: application/json: schema: - $ref: '#/components/schemas/Telegraf' + $ref: "#/components/schemas/Telegraf" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/telegrafs/{telegrafID}': + $ref: "#/components/schemas/Error" + "/telegrafs/{telegrafID}": get: operationId: GetTelegrafsID tags: - Telegrafs summary: Retrieve a Telegraf configuration parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: telegrafID schema: @@ -572,7 +636,7 @@ paths: - application/json - application/octet-stream responses: - '200': + "200": description: Telegraf configuration details content: application/toml: @@ -583,7 +647,7 @@ paths: type: string application/json: schema: - $ref: '#/components/schemas/Telegraf' + $ref: "#/components/schemas/Telegraf" application/octet-stream: example: |- [agent] @@ -595,14 +659,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" put: operationId: PutTelegrafsID tags: - Telegrafs summary: Update a Telegraf configuration parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: telegrafID schema: @@ -615,27 +679,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/TelegrafPluginRequest' + $ref: "#/components/schemas/TelegrafPluginRequest" responses: - '200': + "200": description: An updated Telegraf configurations content: application/json: schema: - $ref: '#/components/schemas/Telegraf' + $ref: "#/components/schemas/Telegraf" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" delete: operationId: DeleteTelegrafsID tags: - Telegrafs summary: Delete a Telegraf configuration parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: telegrafID schema: @@ -643,22 +707,22 @@ paths: required: true description: The Telegraf configuration ID. responses: - '204': + "204": description: Delete has been accepted default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/telegrafs/{telegrafID}/labels': + $ref: "#/components/schemas/Error" + "/telegrafs/{telegrafID}/labels": get: operationId: GetTelegrafsIDLabels tags: - Telegrafs summary: List all labels for a Telegraf config parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: telegrafID schema: @@ -666,25 +730,25 @@ paths: required: true description: The Telegraf config ID. responses: - '200': + "200": description: A list of all labels for a Telegraf config content: application/json: schema: - $ref: '#/components/schemas/LabelsResponse' + $ref: "#/components/schemas/LabelsResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostTelegrafsIDLabels tags: - Telegrafs summary: Add a label to a Telegraf config parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: telegrafID schema: @@ -697,28 +761,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LabelMapping' + $ref: "#/components/schemas/LabelMapping" responses: - '201': + "201": description: The label added to the Telegraf config content: application/json: schema: - $ref: '#/components/schemas/LabelResponse' + $ref: "#/components/schemas/LabelResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/telegrafs/{telegrafID}/labels/{labelID}': + $ref: "#/components/schemas/Error" + "/telegrafs/{telegrafID}/labels/{labelID}": delete: operationId: DeleteTelegrafsIDLabelsID tags: - Telegrafs summary: Delete a label from a Telegraf config parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: telegrafID schema: @@ -732,28 +796,28 @@ paths: required: true description: The label ID. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: Telegraf config not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/telegrafs/{telegrafID}/members': + $ref: "#/components/schemas/Error" + "/telegrafs/{telegrafID}/members": get: operationId: GetTelegrafsIDMembers tags: - Telegrafs summary: List all users with member privileges for a Telegraf config parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: telegrafID schema: @@ -761,25 +825,25 @@ paths: required: true description: The Telegraf config ID. responses: - '200': + "200": description: A list of Telegraf config members content: application/json: schema: - $ref: '#/components/schemas/ResourceMembers' + $ref: "#/components/schemas/ResourceMembers" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostTelegrafsIDMembers tags: - Telegrafs summary: Add a member to a Telegraf config parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: telegrafID schema: @@ -792,28 +856,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': + "201": description: Member added to Telegraf config content: application/json: schema: - $ref: '#/components/schemas/ResourceMember' + $ref: "#/components/schemas/ResourceMember" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/telegrafs/{telegrafID}/members/{userID}': + $ref: "#/components/schemas/Error" + "/telegrafs/{telegrafID}/members/{userID}": delete: operationId: DeleteTelegrafsIDMembersID tags: - Telegrafs summary: Remove a member from a Telegraf config parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -827,22 +891,22 @@ paths: required: true description: The Telegraf config ID. responses: - '204': + "204": description: Member removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/telegrafs/{telegrafID}/owners': + $ref: "#/components/schemas/Error" + "/telegrafs/{telegrafID}/owners": get: operationId: GetTelegrafsIDOwners tags: - Telegrafs summary: List all owners of a Telegraf configuration parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: telegrafID schema: @@ -850,25 +914,25 @@ paths: required: true description: The Telegraf configuration ID. responses: - '200': + "200": description: Returns Telegraf configuration owners as a ResourceOwners list content: application/json: schema: - $ref: '#/components/schemas/ResourceOwners' + $ref: "#/components/schemas/ResourceOwners" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostTelegrafsIDOwners tags: - Telegrafs summary: Add an owner to a Telegraf configuration parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: telegrafID schema: @@ -881,28 +945,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': + "201": description: Telegraf configuration owner was added. Returns a ResourceOwner that references the User. content: application/json: schema: - $ref: '#/components/schemas/ResourceOwner' + $ref: "#/components/schemas/ResourceOwner" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/telegrafs/{telegrafID}/owners/{userID}': + $ref: "#/components/schemas/Error" + "/telegrafs/{telegrafID}/owners/{userID}": delete: operationId: DeleteTelegrafsIDOwnersID tags: - Telegrafs summary: Remove an owner from a Telegraf config parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -916,22 +980,22 @@ paths: required: true description: The Telegraf config ID. responses: - '204': + "204": description: Owner removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/variables/{variableID}/labels': + $ref: "#/components/schemas/Error" + "/variables/{variableID}/labels": get: operationId: GetVariablesIDLabels tags: - Variables summary: List all labels for a variable parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: variableID schema: @@ -939,25 +1003,25 @@ paths: required: true description: The variable ID. responses: - '200': + "200": description: A list of all labels for a variable content: application/json: schema: - $ref: '#/components/schemas/LabelsResponse' + $ref: "#/components/schemas/LabelsResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostVariablesIDLabels tags: - Variables summary: Add a label to a variable parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: variableID schema: @@ -970,28 +1034,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LabelMapping' + $ref: "#/components/schemas/LabelMapping" responses: - '201': + "201": description: The newly added label content: application/json: schema: - $ref: '#/components/schemas/LabelResponse' + $ref: "#/components/schemas/LabelResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/variables/{variableID}/labels/{labelID}': + $ref: "#/components/schemas/Error" + "/variables/{variableID}/labels/{labelID}": delete: operationId: DeleteVariablesIDLabelsID tags: - Variables summary: Delete a label from a variable parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: variableID schema: @@ -1005,174 +1069,278 @@ paths: required: true description: The label ID to delete. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: Variable not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /write: post: operationId: PostWrite tags: + - Data I/O endpoints - Write summary: Write data description: | Writes data to a bucket. - To write data into InfluxDB, you need the following: + Use this endpoint to send data in [line protocol](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/line-protocol/) format to InfluxDB. - - **organization name or ID** – _See [View organizations](https://docs.influxdata.com/influxdb/v2.1/organizations/view-orgs/#view-your-organization-id) for instructions on viewing your organization ID._ - - **bucket** – _See [View buckets](https://docs.influxdata.com/influxdb/v2.1/organizations/buckets/view-buckets/) for - instructions on viewing your bucket ID._ - - **API token** – _See [View tokens](https://docs.influxdata.com/influxdb/v2.1/security/tokens/view-tokens/) - for instructions on viewing your API token._ - - **InfluxDB URL** – _See [InfluxDB URLs](https://docs.influxdata.com/influxdb/v2.1/reference/urls/)_. - - data in [line protocol](https://docs.influxdata.com/influxdb/v2.1/reference/syntax/line-protocol) format. + #### InfluxDB Cloud - InfluxDB Cloud enforces rate and size limits different from InfluxDB OSS. For details, see Responses. + - Takes the following steps when you send a write request: - For more information and examples, see the following: - - [Write data with the InfluxDB API](https://docs.influxdata.com/influxdb/v2.1/write-data/developer-tools/api). - - [Optimize writes to InfluxDB](https://docs.influxdata.com/influxdb/v2.1/write-data/best-practices/optimize-writes/). + 1. Validates the request and queues the write. + 2. If the write is queued, responds with an HTTP `204` status code. + 3. Handles the write asynchronously and reaches eventual consistency. + + An HTTP `2xx` status code acknowledges that the write or delete is queued. + To ensure that InfluxDB Cloud handles writes and deletes in the order you request them, + wait for a response before you send the next request. + + Because writes are asynchronous, data might not yet be written + when you receive the response. + + #### InfluxDB OSS + + - Validates the request, handles the write synchronously, + and then responds with success or failure. + - If all points were written successfully, responds with HTTP `204` status code; + otherwise, returns the first line that failed. + + #### Required permissions + + - `write-buckets` or `write-bucket BUCKET_ID`. + + `BUCKET_ID` is the ID of the destination bucket. + + #### Rate limits (with InfluxDB Cloud) + + `write` rate limits apply. + For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). + + #### Related guides + + - [Write data with the InfluxDB API](https://docs.influxdata.com/influxdb/v2.3/write-data/developer-tools/api). + - [Optimize writes to InfluxDB](https://docs.influxdata.com/influxdb/v2.3/write-data/best-practices/optimize-writes/). + - [Troubleshoot issues writing data](https://docs.influxdata.com/influxdb/v2.3/write-data/troubleshoot/) requestBody: - description: Data in line protocol format. + description: | + Data in line protocol format. + + To send compressed data, do the following: + + 1. Use [GZIP](https://www.gzip.org/) to compress the line protocol data. + 2. In your request, send the compressed data and the + `Content-Encoding: gzip` header. + + #### Related guides + + - [Best practices for optimizing writes](https://docs.influxdata.com/influxdb/v2.3/write-data/best-practices/optimize-writes/). required: true content: text/plain: schema: type: string format: byte + examples: + plain-utf8: + value: | + airSensors,sensor_id=TLM0201 temperature=73.97038159354763,humidity=35.23103248356096,co=0.48445310567793615 1630424257000000000 + airSensors,sensor_id=TLM0202 temperature=75.30007505999716,humidity=35.651929918691714,co=0.5141876544505826 1630424257000000000 parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: header name: Content-Encoding description: | - The value tells InfluxDB what compression is applied to the line protocol in the request payload. - To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. + The compression applied to the line protocol in the request payload. + To send a GZIP payload, pass `Content-Encoding: gzip` header. schema: type: string - description: 'The content coding. Use `gzip` for compressed data or `identity` for unmodified, uncompressed data.' + description: | + Content coding. + Use `gzip` for compressed data or `identity` for unmodified, uncompressed data. default: identity enum: - gzip - identity - in: header name: Content-Type - description: The header value indicates the format of the data in the request body. + description: | + The format of the data in the request body. + To send a line protocol payload, pass `Content-Type: text/plain; charset=utf-8`. schema: type: string description: | - `text/plain` specifies line protocol. `UTF-8` is the default character set. + `text/plain` is the content type for line protocol. `UTF-8` is the default character set. default: text/plain; charset=utf-8 enum: - text/plain - text/plain; charset=utf-8 - - application/vnd.influx.arrow - in: header name: Content-Length - description: 'The header value indicates the size of the entity-body, in bytes, sent to the database. If the length is greater than the database''s `max body` configuration option, the server responds with status code `413`.' + description: | + The size of the entity-body, in bytes, sent to InfluxDB. + If the length is greater than the `max body` configuration option, + the server responds with status code `413`. schema: type: integer description: The length in decimal number of octets. - in: header name: Accept - description: The header value specifies the response format. + description: | + The content type that the client can understand. + Writes only return a response body if they fail--for example, + due to a formatting problem or quota limit. + + #### InfluxDB Cloud + + - Returns only `application/json` for format and limit errors. + - Returns only `text/html` for some quota limit errors. + + #### InfluxDB OSS + + - Returns only `application/json` for format and limit errors. + + #### Related guides + - [Troubleshoot issues writing data](https://docs.influxdata.com/influxdb/v2.3/write-data/troubleshoot/). schema: type: string - description: The response format for errors. + description: Error content type. default: application/json enum: - application/json - in: query name: org - description: 'The parameter value specifies the destination organization for writes. The database writes all points in the batch to this organization. If you provide both `orgID` and `org` parameters, `org` takes precedence.' + description: | + The destination organization for writes. + InfluxDB writes all points in the batch to this organization. + If you pass both `orgID` and `org`, they must both be valid. + + #### InfluxDB Cloud + + - Doesn't require `org` or `orgID`. + - Writes to the bucket in the organization associated with the authorization (API token). + + #### InfluxDB OSS + + - Requires either `org` or `orgID`. + - InfluxDB writes all points in the batch to this organization. required: true schema: type: string - description: Organization name or ID. + description: The organization name or ID. - in: query name: orgID - description: 'The parameter value specifies the ID of the destination organization for writes. If both `orgID` and `org` are specified, `org` takes precedence.' + description: | + The ID of the destination organization for writes. + If you pass both `orgID` and `org`, they must both be valid. + + #### InfluxDB Cloud + + - Doesn't require `org` or `orgID`. + - Writes to the bucket in the organization associated with the authorization (API token). + + + #### InfluxDB OSS + + - Requires either `org` or `orgID`. + - InfluxDB writes all points in the batch to this organization. schema: type: string - in: query name: bucket - description: The destination bucket for writes. + description: | + The destination bucket for writes. + InfluxDB writes all points in the batch to this bucket. required: true schema: type: string - description: All points within batch are written to this bucket. + description: The bucket name or ID. - in: query name: precision - description: The precision for the unix timestamps within the body line-protocol. + description: The precision for unix timestamps in the line protocol batch. schema: - $ref: '#/components/schemas/WritePrecision' + $ref: "#/components/schemas/WritePrecision" responses: - '204': - description: 'InfluxDB validated the request data format and accepted the data for writing to the bucket. `204` doesn''t indicate a successful write operation since writes are asynchronous. See [how to check for write errors](https://docs.influxdata.com/influxdb/v2.1/write-data/troubleshoot/).' - '400': - description: Bad request. The line protocol data in the request is malformed. The response body contains the first malformed line in the data. InfluxDB rejected the batch and did not write any data. + "204": + description: | + Success. + + #### InfluxDB Cloud + + - Validated and queued the request. + - Handles the write asynchronously - the write might not have completed yet. + + #### InfluxDB OSS + + - Successfully wrote all points in the batch. + + #### Related guides + + - [How to check for write errors](https://docs.influxdata.com/influxdb/v2.3/write-data/troubleshoot/). + "400": + description: | + Bad request. The response body contains detail about the error. + + InfluxDB returns this error if the line protocol data in the request is malformed. + The response body contains the first malformed line in the data, and indicates what was expected. + For partial writes, the number of points written and the number of points rejected are also included. + For more information, check the `rejected_points` measurement in your `_monitoring` bucket. + + #### InfluxDB Cloud + + - Returns this error for bucket schema conflicts. + + #### InfluxDB OSS + + - Returns this error if `org` or `orgID` doesn't match an organization. content: application/json: schema: - $ref: '#/components/schemas/LineProtocolError' + $ref: "#/components/schemas/LineProtocolError" examples: measurementSchemaFieldTypeConflict: - summary: Field type conflict thrown by an explicit bucket schema + summary: (Cloud) field type conflict thrown by an explicit bucket schema value: code: invalid message: 'partial write error (2 written): unable to parse ''air_sensor,service=S1,sensor=L1 temperature="90.5",humidity=70.0 1632850122'': schema: field type for field "temperature" not permitted by schema; got String but expected Float' - '401': - description: | - Unauthorized. The error may indicate one of the following: - * The `Authorization: Token` header is missing or malformed. - * The API token value is missing from the header. - * The token does not have sufficient permissions to write to this organization and bucket. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - examples: - tokenNotAuthorized: - summary: Token is not authorized to access the organization or resource - value: - code: unauthorized - message: unauthorized access - '404': - description: 'Not found. A requested resource was not found. The response body contains the requested resource type, e.g. `organization name` or `bucket`, and name.' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - examples: - resource-not-found: - summary: Not found error + orgNotFound: + summary: (OSS) organization not found value: - code: not found - message: bucket "air_sensor" not found - '413': + code: invalid + message: "failed to decode request body: organization not found" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "413": description: | - The request payload is too large. InfluxDB rejected the batch and did not write any data. + The request payload is too large. + InfluxDB rejected the batch and did not write any data. + #### InfluxDB Cloud: - - returns this error if the payload exceeds the 50MB size limit. - - returns `Content-Type: text/html` for this error. + + - Returns this error if the payload exceeds the 50MB size limit. + - Returns `Content-Type: text/html` for this error. #### InfluxDB OSS: - - returns this error only if the [Go (golang) `ioutil.ReadAll()`](https://pkg.go.dev/io/ioutil#ReadAll) function raises an error. - - returns `Content-Type: application/json` for this error. + + - Returns this error only if the [Go (golang) `io.ReadAll()`](https://pkg.go.dev/io/ioutil#ReadAll) function raises an error. + - Returns `Content-Type: application/json` for this error. content: application/json: schema: - $ref: '#/components/schemas/LineProtocolLengthError' + $ref: "#/components/schemas/LineProtocolLengthError" examples: dataExceedsSizeLimitOSS: summary: InfluxDB OSS response @@ -1193,100 +1361,216 @@ paths:
    nginx
    - '429': - description: InfluxDB Cloud only. The token is temporarily over quota. The Retry-After header describes when to try the write again. + "429": + description: | + Too many requests. + + #### InfluxDB Cloud + + - Returns this error if a **read** or **write** request exceeds your plan's [adjustable service quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/#adjustable-service-quotas) + or if a **delete** request exceeds the maximum [global limit](https://docs.influxdata.com/influxdb/cloud/account-management/limits/#global-limits). + - For rate limits that reset automatically, returns a `Retry-After` header that describes when to try the write again. + - For limits that can't reset (for example, **cardinality limit**), doesn't return a `Retry-After` header. + + Rates (data-in (writes), queries (reads), and deletes) accrue within a fixed five-minute window. + Once a rate limit is exceeded, InfluxDB returns an error response until the current five-minute window resets. + + #### InfluxDB OSS + + - Doesn't return this error. headers: Retry-After: - description: A non-negative decimal integer indicating the seconds to delay after the response is received. + description: Non-negative decimal integer indicating seconds to wait before retrying the request. schema: type: integer format: int32 - '500': - description: Internal server error. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - examples: - internalError: - summary: Internal error example - value: - code: internal error - '503': - description: The server is temporarily unavailable to accept writes. The `Retry-After` header describes when to try the write again. + "500": + $ref: "#/components/responses/InternalServerError" + "503": + description: | + Service unavailable. + + - Returns this error if + the server is temporarily unavailable to accept writes. + - Returns a `Retry-After` header that describes when to try the write again. headers: Retry-After: - description: A non-negative decimal integer indicating the seconds to delay after the response is received. + description: Non-negative decimal integer indicating seconds to wait before retrying the request. schema: type: integer format: int32 default: - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /delete: post: operationId: PostDelete tags: + - Data I/O endpoints - Delete summary: Delete data + description: | + Deletes data from a bucket. + + Use this endpoint to delete points from a bucket in a specified time range. + + #### InfluxDB Cloud + + - Does the following when you send a delete request: + + 1. Validates the request and queues the delete. + 2. Returns _success_ if queued; _error_ otherwise. + 3. Handles the delete asynchronously. + + #### InfluxDB OSS + + - Validates the request, handles the delete synchronously, + and then responds with success or failure. + + #### Required permissions + + - `write-buckets` or `write-bucket BUCKET_ID`. + + `BUCKET_ID` is the ID of the destination bucket. + + #### Rate limits (with InfluxDB Cloud) + + `write` rate limits apply. + For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). + + #### Related guides + + - [Delete data](https://docs.influxdata.com/influxdb/v2.3/write-data/delete-data/). + - Learn how to use [delete predicate syntax](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/delete-predicate/). + - Learn how InfluxDB handles [deleted tags](https://docs.influxdata.com/flux/v0.x/stdlib/influxdata/influxdb/schema/measurementtagkeys/) + and [deleted fields](https://docs.influxdata.com/flux/v0.x/stdlib/influxdata/influxdb/schema/measurementfieldkeys/). + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --request POST INFLUX_URL/api/v2/delete?org=INFLUX_ORG&bucket=INFLUX_BUCKET \ + --header 'Authorization: Token INFLUX_API_TOKEN' \ + --header 'Content-Type: application/json' \ + --data '{ + "start": "2020-03-01T00:00:00Z", + "stop": "2020-11-14T00:00:00Z", + "predicate": "tag1=\"value1\" and (tag2=\"value2\" and tag3!=\"value3\")" + }' requestBody: - description: Deletes data from an InfluxDB bucket. + description: | + Time range parameters and an optional **delete predicate expression**. + + To select points to delete within the specified time range, pass a + **delete predicate expression** in the `predicate` property of the request body. + If you don't pass a `predicate`, InfluxDB deletes all data with timestamps + in the specified time range. + + #### Related guides + + - [Delete data](https://docs.influxdata.com/influxdb/v2.3/write-data/delete-data/). + - Learn how to use [delete predicate syntax](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/delete-predicate/). required: true content: application/json: schema: - $ref: '#/components/schemas/DeletePredicateRequest' + $ref: "#/components/schemas/DeletePredicateRequest" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: org - description: Specifies the organization to delete data from. + description: | + The organization to delete data from. + If you pass both `orgID` and `org`, they must both be valid. + + #### InfluxDB Cloud + + - Doesn't require `org` or `orgID`. + - Deletes data from the bucket in the organization associated with the authorization (API token). + + #### InfluxDB OSS + + - Requires either `org` or `orgID`. schema: type: string - description: Only points from this organization are deleted. + description: The organization name or ID. - in: query name: bucket - description: Specifies the bucket to delete data from. + description: | + The name or ID of the bucket to delete data from. + If you pass both `bucket` and `bucketID`, `bucketID` takes precedence. schema: type: string - description: Only points from this bucket are deleted. + description: The bucket name or ID. - in: query name: orgID - description: Specifies the organization ID of the resource. + description: | + The ID of the organization to delete data from. + If you pass both `orgID` and `org`, they must both be valid. + + #### InfluxDB Cloud + + - Doesn't require `org` or `orgID`. + - Deletes data from the bucket in the organization associated with the authorization (API token). + + #### InfluxDB OSS + + - Requires either `org` or `orgID`. schema: type: string + description: The organization ID. - in: query name: bucketID - description: Specifies the bucket ID to delete data from. + description: | + The ID of the bucket to delete data from. + If you pass both `bucket` and `bucketID`, `bucketID` takes precedence. schema: type: string - description: Only points from this bucket ID are deleted. + description: The bucket ID. responses: - '204': - description: delete has been accepted - '400': - description: Invalid request. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: no token was sent or does not have sufficient permissions. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: the bucket or organization is not found. + "204": + description: | + Success. + + #### InfluxDB Cloud + + - Validated and queued the request. + - Handles the delete asynchronously - the deletion might not have completed yet. + + An HTTP `2xx` status code acknowledges that the write or delete is queued. + To ensure that InfluxDB Cloud handles writes and deletes in the order you request them, + wait for a response before you send the next request. + + Because writes are asynchronous, data might not yet be written + when you receive the response. + + #### InfluxDB OSS + + - Deleted the data. + "400": + description: | + Bad request. + The response body contains detail about the error. + + #### InfluxDB OSS + + - Returns this error if `org` or `orgID` doesn't match an organization. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" + examples: + orgNotFound: + summary: Organization not found + value: + code: invalid + message: "failed to decode request body: organization not found" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" /labels: post: operationId: PostLabels @@ -1294,58 +1578,54 @@ paths: - Labels summary: Create a label requestBody: - description: Label to create + description: The label to create. required: true content: application/json: schema: - $ref: '#/components/schemas/LabelCreateRequest' + $ref: "#/components/schemas/LabelCreateRequest" responses: - '201': - description: Added label + "201": + description: Success. The label was created. content: application/json: schema: - $ref: '#/components/schemas/LabelResponse' + $ref: "#/components/schemas/LabelResponse" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" get: operationId: GetLabels tags: - Labels summary: List all labels parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: orgID description: The organization ID. schema: type: string responses: - '200': - description: A list of labels + "200": + description: Success. The response body contains a list of labels. content: application/json: schema: - $ref: '#/components/schemas/LabelsResponse' + $ref: "#/components/schemas/LabelsResponse" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '/labels/{labelID}': + $ref: "#/components/responses/GeneralServerError" + "/labels/{labelID}": get: operationId: GetLabelsID tags: - Labels summary: Retrieve a label parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: labelID schema: @@ -1353,32 +1633,30 @@ paths: required: true description: The ID of the label to update. responses: - '200': - description: A label + "200": + description: Success. The response body contains the label. content: application/json: schema: - $ref: '#/components/schemas/LabelResponse' + $ref: "#/components/schemas/LabelResponse" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" patch: operationId: PatchLabelsID tags: - Labels summary: Update a label requestBody: - description: Label update + description: A label update. required: true content: application/json: schema: - $ref: '#/components/schemas/LabelUpdate' + $ref: "#/components/schemas/LabelUpdate" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: labelID schema: @@ -1386,31 +1664,27 @@ paths: required: true description: The ID of the label to update. responses: - '200': - description: Updated label - content: - application/json: - schema: - $ref: '#/components/schemas/LabelResponse' - '404': - description: Label not found + "200": + description: Success. The response body contains the updated label. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/LabelResponse" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" delete: operationId: DeleteLabelsID tags: - Labels summary: Delete a label parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: labelID schema: @@ -1418,28 +1692,24 @@ paths: required: true description: The ID of the label to delete. responses: - '204': - description: Delete has been accepted - '404': - description: Label not found - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + "204": + description: Success. The delete was accepted. + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '/dashboards/{dashboardID}': + $ref: "#/components/responses/GeneralServerError" + "/dashboards/{dashboardID}": get: operationId: GetDashboardsID tags: - Dashboards - summary: Retrieve a Dashboard + summary: Retrieve a dashboard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1453,28 +1723,28 @@ paths: type: string enum: - properties - description: Includes the cell view properties in the response if set to `properties` + description: "If `properties`, includes the cell view properties in the response." responses: - '200': + "200": description: Retrieve a single dashboard content: application/json: schema: oneOf: - - $ref: '#/components/schemas/Dashboard' - - $ref: '#/components/schemas/DashboardWithViewProperties' - '404': + - $ref: "#/components/schemas/Dashboard" + - $ref: "#/components/schemas/DashboardWithViewProperties" + "404": description: Dashboard not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchDashboardsID tags: @@ -1490,16 +1760,16 @@ paths: title: PatchDashboardRequest properties: name: - description: 'optional, when provided will replace the name' + description: "optional, when provided will replace the name" type: string description: - description: 'optional, when provided will replace the description' + description: "optional, when provided will replace the description" type: string cells: - description: 'optional, when provided will replace all existing cells with the cells provided' - $ref: '#/components/schemas/CellWithViewProperties' + description: "optional, when provided will replace all existing cells with the cells provided" + $ref: "#/components/schemas/CellWithViewProperties" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1507,31 +1777,31 @@ paths: required: true description: The ID of the dashboard to update. responses: - '200': + "200": description: Updated dashboard content: application/json: schema: - $ref: '#/components/schemas/Dashboard' - '404': + $ref: "#/components/schemas/Dashboard" + "404": description: Dashboard not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" delete: operationId: DeleteDashboardsID tags: - Dashboards summary: Delete a dashboard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1539,21 +1809,21 @@ paths: required: true description: The ID of the dashboard to update. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: Dashboard not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/dashboards/{dashboardID}/cells': + $ref: "#/components/schemas/Error" + "/dashboards/{dashboardID}/cells": put: operationId: PutDashboardsIDCells tags: @@ -1566,9 +1836,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Cells' + $ref: "#/components/schemas/Cells" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1576,24 +1846,24 @@ paths: required: true description: The ID of the dashboard to update. responses: - '201': + "201": description: Replaced dashboard cells content: application/json: schema: - $ref: '#/components/schemas/Dashboard' - '404': + $ref: "#/components/schemas/Dashboard" + "404": description: Dashboard not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostDashboardsIDCells tags: @@ -1606,9 +1876,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateCell' + $ref: "#/components/schemas/CreateCell" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1616,25 +1886,25 @@ paths: required: true description: The ID of the dashboard to update. responses: - '201': + "201": description: Cell successfully added content: application/json: schema: - $ref: '#/components/schemas/Cell' - '404': + $ref: "#/components/schemas/Cell" + "404": description: Dashboard not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/dashboards/{dashboardID}/cells/{cellID}': + $ref: "#/components/schemas/Error" + "/dashboards/{dashboardID}/cells/{cellID}": patch: operationId: PatchDashboardsIDCellsID tags: @@ -1647,9 +1917,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CellUpdate' + $ref: "#/components/schemas/CellUpdate" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1663,24 +1933,24 @@ paths: required: true description: The ID of the cell to update. responses: - '200': + "200": description: Updated dashboard cell content: application/json: schema: - $ref: '#/components/schemas/Cell' - '404': + $ref: "#/components/schemas/Cell" + "404": description: Cell or dashboard not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" delete: operationId: DeleteDashboardsIDCellsID tags: @@ -1688,7 +1958,7 @@ paths: - Dashboards summary: Delete a dashboard cell parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1702,21 +1972,21 @@ paths: required: true description: The ID of the cell to delete. responses: - '204': + "204": description: Cell successfully deleted - '404': + "404": description: Cell or dashboard not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/dashboards/{dashboardID}/cells/{cellID}/view': + $ref: "#/components/schemas/Error" + "/dashboards/{dashboardID}/cells/{cellID}/view": get: operationId: GetDashboardsIDCellsIDView tags: @@ -1725,7 +1995,7 @@ paths: - Views summary: Retrieve the view for a cell parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1739,24 +2009,24 @@ paths: required: true description: The cell ID. responses: - '200': + "200": description: A dashboard cells view content: application/json: schema: - $ref: '#/components/schemas/View' - '404': + $ref: "#/components/schemas/View" + "404": description: Cell or dashboard not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchDashboardsIDCellsIDView tags: @@ -1769,9 +2039,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/View' + $ref: "#/components/schemas/View" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1785,32 +2055,32 @@ paths: required: true description: The ID of the cell to update. responses: - '200': + "200": description: Updated cell view content: application/json: schema: - $ref: '#/components/schemas/View' - '404': + $ref: "#/components/schemas/View" + "404": description: Cell or dashboard not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/dashboards/{dashboardID}/labels': + $ref: "#/components/schemas/Error" + "/dashboards/{dashboardID}/labels": get: operationId: GetDashboardsIDLabels tags: - Dashboards summary: List all labels for a dashboard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1818,25 +2088,25 @@ paths: required: true description: The dashboard ID. responses: - '200': + "200": description: A list of all labels for a dashboard content: application/json: schema: - $ref: '#/components/schemas/LabelsResponse' + $ref: "#/components/schemas/LabelsResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostDashboardsIDLabels tags: - Dashboards summary: Add a label to a dashboard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1849,28 +2119,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LabelMapping' + $ref: "#/components/schemas/LabelMapping" responses: - '201': + "201": description: The label added to the dashboard content: application/json: schema: - $ref: '#/components/schemas/LabelResponse' + $ref: "#/components/schemas/LabelResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/dashboards/{dashboardID}/labels/{labelID}': + $ref: "#/components/schemas/Error" + "/dashboards/{dashboardID}/labels/{labelID}": delete: operationId: DeleteDashboardsIDLabelsID tags: - Dashboards summary: Delete a label from a dashboard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1884,28 +2154,28 @@ paths: required: true description: The ID of the label to delete. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: Dashboard not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/dashboards/{dashboardID}/members': + $ref: "#/components/schemas/Error" + "/dashboards/{dashboardID}/members": get: operationId: GetDashboardsIDMembers tags: - Dashboards summary: List all dashboard members parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1913,25 +2183,25 @@ paths: required: true description: The dashboard ID. responses: - '200': + "200": description: A list of users who have member privileges for a dashboard content: application/json: schema: - $ref: '#/components/schemas/ResourceMembers' + $ref: "#/components/schemas/ResourceMembers" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostDashboardsIDMembers tags: - Dashboards summary: Add a member to a dashboard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -1944,28 +2214,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': + "201": description: Added to dashboard members content: application/json: schema: - $ref: '#/components/schemas/ResourceMember' + $ref: "#/components/schemas/ResourceMember" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/dashboards/{dashboardID}/members/{userID}': + $ref: "#/components/schemas/Error" + "/dashboards/{dashboardID}/members/{userID}": delete: operationId: DeleteDashboardsIDMembersID tags: - Dashboards summary: Remove a member from a dashboard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -1979,22 +2249,22 @@ paths: required: true description: The dashboard ID. responses: - '204': + "204": description: Member removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/dashboards/{dashboardID}/owners': + $ref: "#/components/schemas/Error" + "/dashboards/{dashboardID}/owners": get: operationId: GetDashboardsIDOwners tags: - Dashboards summary: List all dashboard owners parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -2002,25 +2272,25 @@ paths: required: true description: The dashboard ID. responses: - '200': + "200": description: A list of users who have owner privileges for a dashboard content: application/json: schema: - $ref: '#/components/schemas/ResourceOwners' + $ref: "#/components/schemas/ResourceOwners" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostDashboardsIDOwners tags: - Dashboards summary: Add an owner to a dashboard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: dashboardID schema: @@ -2033,28 +2303,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': + "201": description: Added to dashboard owners content: application/json: schema: - $ref: '#/components/schemas/ResourceOwner' + $ref: "#/components/schemas/ResourceOwner" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/dashboards/{dashboardID}/owners/{userID}': + $ref: "#/components/schemas/Error" + "/dashboards/{dashboardID}/owners/{userID}": delete: operationId: DeleteDashboardsIDOwnersID tags: - Dashboards summary: Remove an owner from a dashboard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -2068,23 +2338,64 @@ paths: required: true description: The dashboard ID. responses: - '204': + "204": description: Owner removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /query/ast: post: operationId: PostQueryAst - description: Analyzes flux query and generates a query specification. tags: - Query - summary: Generate an Abstract Syntax Tree (AST) from a query + summary: Generate a query Abstract Syntax Tree (AST) + description: | + Analyzes a Flux query and returns a complete package source [Abstract Syntax + Tree (AST)](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#abstract-syntax-tree-ast) + for the query. + + Use this endpoint for deep query analysis such as debugging unexpected query + results. + + A Flux query AST provides a semantic, tree-like representation with contextual + information about the query. The AST illustrates how the query is distributed + into different components for execution. + + #### Limitations + + - The endpoint doesn't validate values in the query--for example: + + The following sample Flux query has correct syntax, but contains an incorrect `from()` property key: + + ```js + from(foo: "iot_center") + |> range(start: -90d) + |> filter(fn: (r) => r._measurement == "environment") + ``` + + The following sample JSON shows how to pass the query in the request body: + + ```js + from(foo: "iot_center") + |> range(start: -90d) + |> filter(fn: (r) => r._measurement == "environment") + ``` + + The following code sample shows how to pass the query as JSON in the request body: + ```json + { "query": "from(foo: \"iot_center\")\ + |> range(start: -90d)\ + |> filter(fn: (r) => r._measurement == \"environment\")" + } + ``` + + Passing this to `/api/v2/query/ast` will return a successful response + with a generated AST. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: header name: Content-Type schema: @@ -2092,80 +2403,1166 @@ paths: enum: - application/json requestBody: - description: Analyzed Flux query to generate abstract syntax tree. + description: The Flux query to analyze. content: application/json: schema: - $ref: '#/components/schemas/LanguageRequest' + $ref: "#/components/schemas/LanguageRequest" + x-codeSamples: + - lang: Shell + label: "cURL: Analyze and generate AST for the query" + source: | + curl --request POST "http://localhost:8086/api/v2/query/ast" \ + --header 'Content-Type: application/json' \ + --header 'Accept: application/json' \ + --header "Authorization: Token INFLUX_TOKEN" \ + --data-binary @- << EOL + { + "query": "from(bucket: \"INFLUX_BUCKET_NAME\")\ + |> range(start: -5m)\ + |> filter(fn: (r) => r._measurement == \"example-measurement\")" + } + EOL responses: - '200': - description: Abstract syntax tree of the flux query. + "200": + description: | + Success. + The response body contains an Abstract Syntax Tree (AST) of the Flux query. + content: + application/json: + schema: + $ref: "#/components/schemas/ASTResponse" + examples: + successResponse: + value: + ast: + type: Package + package: main + files: + - type: File + location: + start: + line: 1 + column: 1 + end: + line: 1 + column: 109 + source: 'from(bucket: "example-bucket") |> range(start: -5m) |> filter(fn: (r) => r._measurement == "example-measurement")' + metadata: parser-type=rust + package: null + imports: null + body: + - type: ExpressionStatement + location: + start: + line: 1 + column: 1 + end: + line: 1 + column: 109 + source: 'from(bucket: "example-bucket") |> range(start: -5m) |> filter(fn: (r) => r._measurement == "example-measurement")' + expression: + type: PipeExpression + location: + start: + line: 1 + column: 1 + end: + line: 1 + column: 109 + source: 'from(bucket: "example-bucket") |> range(start: -5m) |> filter(fn: (r) => r._measurement == "example-measurement")' + argument: + type: PipeExpression + location: + start: + line: 1 + column: 1 + end: + line: 1 + column: 47 + source: 'from(bucket: "example-bucket") |> range(start: -5m)' + argument: + type: CallExpression + location: + start: + line: 1 + column: 1 + end: + line: 1 + column: 26 + source: 'from(bucket: "example-bucket")' + callee: + type: Identifier + location: + start: + line: 1 + column: 1 + end: + line: 1 + column: 5 + source: from + name: from + arguments: + - type: ObjectExpression + location: + start: + line: 1 + column: 6 + end: + line: 1 + column: 25 + source: 'bucket: "example-bucket"' + properties: + - type: Property + location: + start: + line: 1 + column: 6 + end: + line: 1 + column: 25 + source: 'bucket: "example-bucket"' + key: + type: Identifier + location: + start: + line: 1 + column: 6 + end: + line: 1 + column: 12 + source: bucket + name: bucket + value: + type: StringLiteral + location: + start: + line: 1 + column: 14 + end: + line: 1 + column: 25 + source: '"example-bucket"' + value: example-bucket + call: + type: CallExpression + location: + start: + line: 1 + column: 30 + end: + line: 1 + column: 47 + source: "range(start: -5m)" + callee: + type: Identifier + location: + start: + line: 1 + column: 30 + end: + line: 1 + column: 35 + source: range + name: range + arguments: + - type: ObjectExpression + location: + start: + line: 1 + column: 36 + end: + line: 1 + column: 46 + source: "start: -5m" + properties: + - type: Property + location: + start: + line: 1 + column: 36 + end: + line: 1 + column: 46 + source: "start: -5m" + key: + type: Identifier + location: + start: + line: 1 + column: 36 + end: + line: 1 + column: 41 + source: start + name: start + value: + type: UnaryExpression + location: + start: + line: 1 + column: 43 + end: + line: 1 + column: 46 + source: "-5m" + operator: "-" + argument: + type: DurationLiteral + location: + start: + line: 1 + column: 44 + end: + line: 1 + column: 46 + source: 5m + values: + - magnitude: 5 + unit: m + call: + type: CallExpression + location: + start: + line: 1 + column: 51 + end: + line: 1 + column: 109 + source: 'filter(fn: (r) => r._measurement == "example-measurement")' + callee: + type: Identifier + location: + start: + line: 1 + column: 51 + end: + line: 1 + column: 57 + source: filter + name: filter + arguments: + - type: ObjectExpression + location: + start: + line: 1 + column: 58 + end: + line: 1 + column: 108 + source: 'fn: (r) => r._measurement == "example-measurement"' + properties: + - type: Property + location: + start: + line: 1 + column: 58 + end: + line: 1 + column: 108 + source: 'fn: (r) => r._measurement == "example-measurement"' + key: + type: Identifier + location: + start: + line: 1 + column: 58 + end: + line: 1 + column: 60 + source: fn + name: fn + value: + type: FunctionExpression + location: + start: + line: 1 + column: 62 + end: + line: 1 + column: 108 + source: (r) => r._measurement == "example-measurement" + params: + - type: Property + location: + start: + line: 1 + column: 63 + end: + line: 1 + column: 64 + source: r + key: + type: Identifier + location: + start: + line: 1 + column: 63 + end: + line: 1 + column: 64 + source: r + name: r + value: null + body: + type: BinaryExpression + location: + start: + line: 1 + column: 69 + end: + line: 1 + column: 108 + source: r._measurement == "example-measurement" + operator: "==" + left: + type: MemberExpression + location: + start: + line: 1 + column: 69 + end: + line: 1 + column: 83 + source: r._measurement + object: + type: Identifier + location: + start: + line: 1 + column: 69 + end: + line: 1 + column: 70 + source: r + name: r + property: + type: Identifier + location: + start: + line: 1 + column: 71 + end: + line: 1 + column: 83 + source: _measurement + name: _measurement + right: + type: StringLiteral + location: + start: + line: 1 + column: 87 + end: + line: 1 + column: 108 + source: '"example-measurement"' + value: example-measurement + "400": + description: | + Bad request. + InfluxDB is unable to parse the request. + The response body contains detail about the problem. + headers: + X-Platform-Error-Code: + description: | + The reason for the error. + schema: + type: string + example: invalid content: application/json: schema: - $ref: '#/components/schemas/ASTResponse' + $ref: "#/components/schemas/Error" + examples: + invalidASTValue: + summary: Invalid AST + description: | + If the request body contains a missing property key in `from()`, + returns `invalid` and problem detail. + value: + code: invalid + message: "invalid AST: loc 1:6-1:19: missing property key" default: - description: Any response other than 200 is an internal server error + description: Internal server error. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /query/suggestions: get: operationId: GetQuerySuggestions tags: - Query - summary: Retrieve query suggestions + summary: Retrieve Flux query suggestions + description: | + Retrieves a list of Flux query suggestions. Each suggestion contains a + [Flux function](https://docs.influxdata.com/flux/v0.x/stdlib/all-functions/) + name and parameters. + + Use this endpoint to retrieve a list of Flux query suggestions used in the + InfluxDB Flux Query Builder. Helper function names have an underscore (`_`) + prefix and aren't meant to be used directly in queries--for example: + + - **Recommended**: Use `top(n, columns=["_value"], tables=<-)` to sort + on a column and keep the top n records instead of `_sortLimit_`. + `top` uses the `_sortLimit` helper function. + + #### Limitations + + - Using `/api/v2/query/suggestions/` (note the trailing slash) with cURL + will result in a HTTP `301 Moved Permanently` status code. Please use + `/api/v2/query/suggestions` without a trailing slash. + + - When writing a query, avoid using `_functionName()` helper functions + exposed by this endpoint. + + #### Related Guides + + - [List of all Flux functions](https://docs.influxdata.com/influxdb/v2.3/flux/v0.x/stdlib/all-functions/). parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '200': - description: Suggestions for next functions in call chain + "200": + description: | + Success. + The response body contains a list of Flux query suggestions--function + names used in the Flux Query Builder autocomplete suggestions. content: application/json: schema: - $ref: '#/components/schemas/FluxSuggestions' - default: - description: Any response other than 200 is an internal server error + $ref: "#/components/schemas/FluxSuggestions" + examples: + successResponse: + value: + funcs: + - name: _fillEmpty + params: + createEmpty: bool + tables: stream + - name: _highestOrLowest + params: + _sortLimit: function + column: invalid + groupColumns: array + "n": invalid + reducer: function + tables: stream + - name: _hourSelection + params: + location: object + start: int + stop: int + tables: stream + timeColumn: string + - name: _sortLimit + params: + columns: array + desc: bool + "n": int + tables: stream + - name: _window + params: + createEmpty: bool + every: duration + location: object + offset: duration + period: duration + startColumn: string + stopColumn: string + tables: stream + timeColumn: string + - name: aggregateWindow + params: + column: invalid + createEmpty: bool + every: duration + fn: function + location: object + offset: duration + period: duration + tables: stream + timeDst: string + timeSrc: string + - name: bool + params: + v: invalid + - name: bottom + params: + columns: array + "n": int + tables: stream + - name: buckets + params: + host: string + org: string + orgID: string + token: string + - name: bytes + params: + v: invalid + - name: cardinality + params: + bucket: string + bucketID: string + host: string + org: string + orgID: string + predicate: function + start: invalid + stop: invalid + token: string + - name: chandeMomentumOscillator + params: + columns: array + "n": int + tables: stream + - name: columns + params: + column: string + tables: stream + - name: contains + params: + set: array + value: invalid + - name: count + params: + column: string + tables: stream + - name: cov + params: + "on": array + pearsonr: bool + x: invalid + "y": invalid + - name: covariance + params: + columns: array + pearsonr: bool + tables: stream + valueDst: string + - name: cumulativeSum + params: + columns: array + tables: stream + - name: derivative + params: + columns: array + initialZero: bool + nonNegative: bool + tables: stream + timeColumn: string + unit: duration + - name: die + params: + msg: string + - name: difference + params: + columns: array + initialZero: bool + keepFirst: bool + nonNegative: bool + tables: stream + - name: display + params: + v: invalid + - name: distinct + params: + column: string + tables: stream + - name: doubleEMA + params: + "n": int + tables: stream + - name: drop + params: + columns: array + fn: function + tables: stream + - name: duplicate + params: + as: string + column: string + tables: stream + - name: duration + params: + v: invalid + - name: elapsed + params: + columnName: string + tables: stream + timeColumn: string + unit: duration + - name: exponentialMovingAverage + params: + "n": int + tables: stream + - name: fill + params: + column: string + tables: stream + usePrevious: bool + value: invalid + - name: filter + params: + fn: function + onEmpty: string + tables: stream + - name: findColumn + params: + column: string + fn: function + tables: stream + - name: findRecord + params: + fn: function + idx: int + tables: stream + - name: first + params: + column: string + tables: stream + - name: float + params: + v: invalid + - name: from + params: + bucket: string + bucketID: string + host: string + org: string + orgID: string + token: string + - name: getColumn + params: + column: string + - name: getRecord + params: + idx: int + - name: group + params: + columns: array + mode: string + tables: stream + - name: highestAverage + params: + column: string + groupColumns: array + "n": int + tables: stream + - name: highestCurrent + params: + column: string + groupColumns: array + "n": int + tables: stream + - name: highestMax + params: + column: string + groupColumns: array + "n": int + tables: stream + - name: histogram + params: + bins: array + column: string + countColumn: string + normalize: bool + tables: stream + upperBoundColumn: string + - name: histogramQuantile + params: + countColumn: string + minValue: float + quantile: float + tables: stream + upperBoundColumn: string + valueColumn: string + - name: holtWinters + params: + column: string + interval: duration + "n": int + seasonality: int + tables: stream + timeColumn: string + withFit: bool + - name: hourSelection + params: + location: object + start: int + stop: int + tables: stream + timeColumn: string + - name: increase + params: + columns: array + tables: stream + - name: int + params: + v: invalid + - name: integral + params: + column: string + interpolate: string + tables: stream + timeColumn: string + unit: duration + - name: join + params: + method: string + "on": array + tables: invalid + - name: kaufmansAMA + params: + column: string + "n": int + tables: stream + - name: kaufmansER + params: + "n": int + tables: stream + - name: keep + params: + columns: array + fn: function + tables: stream + - name: keyValues + params: + keyColumns: array + tables: stream + - name: keys + params: + column: string + tables: stream + - name: last + params: + column: string + tables: stream + - name: length + params: + arr: array + - name: limit + params: + "n": int + offset: int + tables: stream + - name: linearBins + params: + count: int + infinity: bool + start: float + width: float + - name: logarithmicBins + params: + count: int + factor: float + infinity: bool + start: float + - name: lowestAverage + params: + column: string + groupColumns: array + "n": int + tables: stream + - name: lowestCurrent + params: + column: string + groupColumns: array + "n": int + tables: stream + - name: lowestMin + params: + column: string + groupColumns: array + "n": int + tables: stream + - name: map + params: + fn: function + mergeKey: bool + tables: stream + - name: max + params: + column: string + tables: stream + - name: mean + params: + column: string + tables: stream + - name: median + params: + column: string + compression: float + method: string + tables: stream + - name: min + params: + column: string + tables: stream + - name: mode + params: + column: string + tables: stream + - name: movingAverage + params: + "n": int + tables: stream + - name: now + params: {} + - name: pearsonr + params: + "on": array + x: invalid + "y": invalid + - name: pivot + params: + columnKey: array + rowKey: array + tables: stream + valueColumn: string + - name: quantile + params: + column: string + compression: float + method: string + q: float + tables: stream + - name: range + params: + start: invalid + stop: invalid + tables: stream + - name: reduce + params: + fn: function + identity: invalid + tables: stream + - name: relativeStrengthIndex + params: + columns: array + "n": int + tables: stream + - name: rename + params: + columns: invalid + fn: function + tables: stream + - name: sample + params: + column: string + "n": int + pos: int + tables: stream + - name: set + params: + key: string + tables: stream + value: string + - name: skew + params: + column: string + tables: stream + - name: sort + params: + columns: array + desc: bool + tables: stream + - name: spread + params: + column: string + tables: stream + - name: stateCount + params: + column: string + fn: function + tables: stream + - name: stateDuration + params: + column: string + fn: function + tables: stream + timeColumn: string + unit: duration + - name: stateTracking + params: + countColumn: string + durationColumn: string + durationUnit: duration + fn: function + tables: stream + timeColumn: string + - name: stddev + params: + column: string + mode: string + tables: stream + - name: string + params: + v: invalid + - name: sum + params: + column: string + tables: stream + - name: tableFind + params: + fn: function + tables: stream + - name: tail + params: + "n": int + offset: int + tables: stream + - name: time + params: + v: invalid + - name: timeShift + params: + columns: array + duration: duration + tables: stream + - name: timeWeightedAvg + params: + tables: stream + unit: duration + - name: timedMovingAverage + params: + column: string + every: duration + period: duration + tables: stream + - name: to + params: + bucket: string + bucketID: string + fieldFn: function + host: string + measurementColumn: string + org: string + orgID: string + tables: stream + tagColumns: array + timeColumn: string + token: string + - name: toBool + params: + tables: stream + - name: toFloat + params: + tables: stream + - name: toInt + params: + tables: stream + - name: toString + params: + tables: stream + - name: toTime + params: + tables: stream + - name: toUInt + params: + tables: stream + - name: today + params: {} + - name: top + params: + columns: array + "n": int + tables: stream + - name: tripleEMA + params: + "n": int + tables: stream + - name: tripleExponentialDerivative + params: + "n": int + tables: stream + - name: truncateTimeColumn + params: + tables: stream + timeColumn: invalid + unit: duration + - name: uint + params: + v: invalid + - name: union + params: + tables: array + - name: unique + params: + column: string + tables: stream + - name: wideTo + params: + bucket: string + bucketID: string + host: string + org: string + orgID: string + tables: stream + token: string + - name: window + params: + createEmpty: bool + every: duration + location: object + offset: duration + period: duration + startColumn: string + stopColumn: string + tables: stream + timeColumn: string + - name: yield + params: + name: string + tables: stream + "301": + description: | + Moved Permanently. + InfluxData has moved the URL of the endpoint. + Use `/api/v2/query/suggestions`. + content: + text/html: + schema: + properties: + body: + readOnly: true + description: Response message with URL of requested resource. + type: string + examples: + movedPermanently: + summary: Invalid URL + description: | + The URL has been permanently moved. Use `/api/v2/query/suggestions`. + value: | + Moved Permanently + default: + description: Internal server error. content: application/json: schema: - $ref: '#/components/schemas/Error' - '/query/suggestions/{name}': + $ref: "#/components/schemas/Error" + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --request GET "https://cloud2.influxdata.com/api/v2/query/suggestions" \ + --header "Accept: application/json" \ + --header "Authorization: Token INFLUX_API_TOKEN" + "/query/suggestions/{name}": get: operationId: GetQuerySuggestionsName tags: - Query - summary: Retrieve query suggestions for a branching suggestion + summary: Retrieve a query suggestion for a branching suggestion + description: | + Retrieves a query suggestion that contains the name and parameters of the + requested function. + + Use this endpoint to pass a branching suggestion (a Flux function name) and + retrieve the parameters of the requested function. + + #### Limitations + + - Use `/api/v2/query/suggestions/{name}` (without a trailing slash). + `/api/v2/query/suggestions/{name}/` (note the trailing slash) results in a + HTTP `301 Moved Permanently` status. + + - The function `name` must exist and must be spelled correctly. + + #### Related Guides + + - [List of all Flux functions](https://docs.influxdata.com/influxdb/v2.3/flux/v0.x/stdlib/all-functions/). parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: name schema: type: string required: true - description: The name of the branching suggestion. + description: | + A Flux Function name. + Only returns functions with this name. responses: - '200': - description: Suggestions for next functions in call chain + "200": + description: | + Success. + The response body contains the function name and parameters. content: application/json: schema: - $ref: '#/components/schemas/FluxSuggestion' - default: - description: Any response other than 200 is an internal server error + $ref: "#/components/schemas/FluxSuggestion" + examples: + successResponse: + value: + name: sum + params: + column: string + tables: stream + "500": + description: | + Internal server error. + The value passed for _`name`_ may have been misspelled. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" + examples: + internalError: + summary: Invalid function + description: | + The requested function doesn't exist. + value: + code: internal error + message: An internal error has occurred + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --request GET "https://cloud2.influxdata.com/api/v2/query/suggestions/sum/" \ + --header "Accept: application/json" \ + --header "Authorization: Token INFLUX_API_TOKEN" /query/analyze: post: operationId: PostQueryAnalyze tags: - Query summary: Analyze a Flux query + description: | + Analyzes a [Flux query](https://docs.influxdata.com/flux/v0.x/) for syntax + errors and returns the list of errors. + + In the following sample query, `from()` is missing the property key. + + ```json + { "query": "from(: \"iot_center\")\ + |> range(start: -90d)\ + |> filter(fn: (r) => r._measurement == \"environment\")", + "type": "flux" + } + ``` + + If you pass this in a request to the `/api/v2/analyze` endpoint, + InfluxDB returns an `errors` list that contains an error object for the missing key. + + #### Limitations + + - The endpoint doesn't validate values in the query--for example: + + - The following sample query has correct syntax, but contains an incorrect `from()` property key: + + ```json + { "query": "from(foo: \"iot_center\")\ + |> range(start: -90d)\ + |> filter(fn: (r) => r._measurement == \"environment\")", + "type": "flux" + } + ``` + + If you pass this in a request to the `/api/v2/analyze` endpoint, + InfluxDB returns an empty `errors` list. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: header name: Content-Type schema: @@ -2177,54 +3574,135 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Query' + $ref: "#/components/schemas/Query" responses: - '200': - description: Query analyze results. Errors will be empty if the query is valid. + "200": + description: | + Success. + The response body contains the list of `errors`. + If the query syntax is valid, the endpoint returns an empty `errors` list. + content: + application/json: + schema: + $ref: "#/components/schemas/AnalyzeQueryResponse" + examples: + missingQueryPropertyKey: + summary: Missing property key error + description: | + Returns an error object if the Flux query is missing a property key. + + The following sample query is missing the _`bucket`_ property key: + + ```json + { + "query": "from(: \"iot_center\")\ + + ... + + } + ``` + value: + errors: + - line: 1 + column: 6 + character: 0 + message: missing property key + "400": + description: | + Bad request. + InfluxDB is unable to parse the request. + The response body contains detail about the problem. + headers: + X-Platform-Error-Code: + description: | + The reason for the error. + schema: + type: string + example: invalid content: application/json: schema: - $ref: '#/components/schemas/AnalyzeQueryResponse' + $ref: "#/components/schemas/Error" + examples: + invalidJSONStringValue: + summary: Invalid JSON + description: "If the request body contains invalid JSON, returns `invalid` and problem detail." + value: + code: invalid + message: 'invalid json: invalid character ''\'''' looking for beginning of value' default: description: Internal server error headers: + X-Platform-Error-Code: + description: The reason for the error. + schema: + type: string + example: internal error X-Influx-Error: - description: Error string describing the problem + description: A string that describes the problem. schema: type: string X-Influx-Reference: - description: Reference code unique to the error type + description: The numeric reference code for the error type. schema: type: integer content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" + examples: + emptyJSONObject: + summary: Empty JSON object in request body + description: | + If the request body contains an empty JSON object, returns `internal error`. + value: + code: internal error + message: An internal error has occurred - check server logs + x-codeSamples: + - lang: Shell + label: "cURL: Analyze a Flux query" + source: | + curl -v --request POST \ + "http://localhost:8086/api/v2/query/analyze" \ + --header "Authorization: Token INFLUX_API_TOKEN" \ + --header 'Content-type: application/json' \ + --header 'Accept: application/json' \ + --data-binary @- << EOF + { "query": "from(bucket: \"iot_center\")\ + |> range(start: -90d)\ + |> filter(fn: (r) => r._measurement == \"environment\")", + "type": "flux" + } + EOF /query: post: operationId: PostQuery tags: + - Data I/O endpoints - Query summary: Query data description: | - Retrieves data from InfluxDB buckets. + Retrieves data from buckets. + + Use this endpoint to send a Flux query request and retrieve data from a bucket. + + #### Rate limits (with InfluxDB Cloud) + + `read` rate limits apply. + For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). - To query data, you need the following: - - **organization** – _See [View organizations](https://docs.influxdata.com/influxdb/v2.1/organizations/view-orgs/#view-your-organization-id) for instructions on viewing your organization ID._ - - **API token** – _See [View tokens](https://docs.influxdata.com/influxdb/v2.1/security/tokens/view-tokens/) - for instructions on viewing your API token._ - - **InfluxDB URL** – _See [InfluxDB URLs](https://docs.influxdata.com/influxdb/v2.1/reference/urls/)_. - - **Flux query** – _See [Flux](https://docs.influxdata.com/flux/v0.x/)._ + #### Related guides - For more information and examples, see [Query with the InfluxDB API](https://docs.influxdata.com/influxdb/v2.1/query-data/execute-queries/influx-api/). + - [Query with the InfluxDB API](https://docs.influxdata.com/influxdb/v2.3/query-data/execute-queries/influx-api/). + - [Get started with Flux](https://docs.influxdata.com/flux/v0.x/get-started/) parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: header name: Accept-Encoding - description: Indicates the content encoding (usually a compression algorithm) that the client can understand. + description: The content encoding (usually a compression algorithm) that the client can understand. schema: type: string - description: 'The content coding. Use `gzip` for compressed data or `identity` for unmodified, uncompressed data.' + description: "The content coding. Use `gzip` for compressed data or `identity` for unmodified, uncompressed data." default: identity enum: - gzip @@ -2238,20 +3716,51 @@ paths: - application/vnd.flux - in: query name: org - description: 'Specifies the name of the organization executing the query. Takes either the ID or Name. If both `orgID` and `org` are specified, `org` takes precedence.' + description: | + The name or ID of the organization executing the query. + + #### InfluxDB Cloud + + - Doesn't use `org` or `orgID`. + - Queries the bucket in the organization associated with the authorization (API token). + + #### InfluxDB OSS + + - Requires either `org` or `orgID`. schema: type: string - in: query name: orgID - description: 'Specifies the ID of the organization executing the query. If both `orgID` and `org` are specified, `org` takes precedence.' - schema: - type: string + description: | + The ID of the organization executing the query. + + #### InfluxDB Cloud + + - Doesn't use `org` or `orgID`. + - Queries the bucket in the organization associated with the authorization (API token). + + #### InfluxDB OSS + + - Requires either `org` or `orgID`. + schema: + type: string + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --request POST 'INFLUX_URL/api/v2/query?org=INFLUX_ORG' \ + --header 'Content-Type: application/vnd.flux' \ + --header 'Accept: application/csv \ + --header 'Authorization: Token INFLUX_API_TOKEN' \ + --data 'from(bucket: "example-bucket") + |> range(start: -5m) + |> filter(fn: (r) => r._measurement == "example-measurement")' requestBody: description: Flux query or specification to execute content: application/json: schema: - $ref: '#/components/schemas/Query' + $ref: "#/components/schemas/Query" application/vnd.flux: schema: type: string @@ -2260,11 +3769,11 @@ paths: |> range(start: -5m) |> filter(fn: (r) => r._measurement == "example-measurement") responses: - '200': - description: Success. Returns query results. + "200": + description: Success. The response body contains query results. headers: Content-Encoding: - description: Lists any encodings (usually compression algorithms) that have been applied to the response payload. + description: Lists encodings (usually compression algorithms) that have been applied to the response payload. schema: type: string description: | @@ -2274,152 +3783,444 @@ paths: - gzip - identity Trace-Id: - description: 'The Trace-Id header reports the request''s trace ID, if one was generated.' + description: "The trace ID, if generated, of the request." schema: type: string - description: Specifies the request's trace ID. + description: Trace ID of a request. content: - text/csv: + application/csv: schema: type: string - example: | - result,table,_start,_stop,_time,region,host,_value mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:00Z,east,A,15.43 mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:20Z,east,B,59.25 mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:40Z,east,C,52.62 - application/vnd.influx.arrow: + example: | + result,table,_start,_stop,_time,region,host,_value + mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:00Z,east,A,15.43 + mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:20Z,east,B,59.25 + mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:40Z,east,C,52.62 + "400": + description: | + Bad request. + The response body contains detail about the error. + + #### InfluxDB OSS + + - Returns this error if `org` or `orgID` doesn't match an organization. + content: + application/json: schema: - type: string - format: binary - '429': - description: Token is temporarily over quota. The Retry-After header describes when to try the read again. + $ref: "#/components/schemas/Error" + examples: + orgNotFound: + summary: Organization not found + value: + code: invalid + message: "failed to decode request body: organization not found" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "429": + description: | + #### InfluxDB Cloud: + - returns this error if a **read** or **write** request exceeds your + plan's [adjustable service quotas](https://docs.influxdata.com/influxdb/v2.3/account-management/limits/#adjustable-service-quotas) + or if a **delete** request exceeds the maximum + [global limit](https://docs.influxdata.com/influxdb/v2.3/account-management/limits/#global-limits) + - returns `Retry-After` header that describes when to try the write again. + + #### InfluxDB OSS: + - doesn't return this error. headers: Retry-After: - description: A non-negative decimal integer indicating the seconds to delay after the response is received. + description: Non-negative decimal integer indicating seconds to wait before retrying the request. schema: type: integer format: int32 + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Error processing query - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" /buckets: get: operationId: GetBuckets tags: - Buckets - summary: List all buckets + summary: List buckets + description: | + Retrieves a list of [buckets](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#bucket). + + To limit which buckets are returned, pass query parameters in your request. + If no query parameters are passed, InfluxDB returns all buckets up to the + default `limit`. + + #### Limitations + + - Paging with an `offset` greater than the number of records will result in + an empty list of buckets--for example: + + The following request is paging to the 50th record, but the user only has + 10 buckets. + + ```sh + $ curl --request GET "INFLUX_URL/api/v2/scripts?limit=1&offset=50" + + $ { + "links": { + "prev": "/api/v2/buckets?descending=false\u0026limit=1\u0026offset=49\u0026orgID=ORG_ID", + "self": "/api/v2/buckets?descending=false\u0026limit=1\u0026offset=50\u0026orgID=ORG_ID" + }, + "buckets": [] + } + ``` + + #### Related Guides + + - [Manage buckets](https://docs.influxdata.com/influxdb/v2.3/organizations/buckets/) parameters: - - $ref: '#/components/parameters/TraceSpan' - - $ref: '#/components/parameters/Offset' - - $ref: '#/components/parameters/Limit' - - $ref: '#/components/parameters/After' + - $ref: "#/components/parameters/TraceSpan" + - $ref: "#/components/parameters/Offset" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/After" - in: query name: org - description: The name of the organization. + description: | + Organization name. + The name of the organization. + + #### InfluxDB Cloud + + - Doesn't use `org` or `orgID`. + - Creates a bucket in the organization associated with the authorization (API token). + + #### InfluxDB OSS + + - Accepts either `org` or `orgID`. + - InfluxDB creates the bucket within this organization. schema: type: string - in: query name: orgID - description: The organization ID. + description: | + Organization ID. + The organization ID. + + #### InfluxDB Cloud + + - Doesn't use `org` or `orgID`. + - Creates a bucket in the organization associated with the authorization (API token). + + #### InfluxDB OSS + + - Accepts either `org` or `orgID`. + - InfluxDB creates the bucket within this organization. schema: type: string - in: query name: name - description: Only returns buckets with a specific name. + description: | + Bucket name. + Only returns buckets with this specific name. schema: type: string - in: query name: id - description: Only returns buckets with a specific ID. + description: | + Bucket ID. + Only returns the bucket with this ID. schema: type: string responses: - '200': - description: A list of buckets + "200": + description: | + Success. + The response body contains a list of buckets. content: application/json: schema: - $ref: '#/components/schemas/Buckets' + $ref: "#/components/schemas/Buckets" + examples: + successResponse: + value: + links: + self: /api/v2/buckets?descending=false&limit=20&name=_monitoring&offset=0&orgID=ORG_ID + buckets: + - id: 77ca9dace40a9bfc + orgID: INFLUX_ORG_ID + type: system + schemaType: implicit + description: System bucket for monitoring logs + name: _monitoring + retentionRules: + - type: expire + everySeconds: 604800 + createdAt: "2022-03-15T17:22:33.72617939Z" + updatedAt: "2022-03-15T17:22:33.726179487Z" + links: + labels: /api/v2/buckets/77ca9dace40a9bfc/labels + members: /api/v2/buckets/77ca9dace40a9bfc/members + org: /api/v2/orgs/INFLUX_ORG_ID + owners: /api/v2/buckets/77ca9dace40a9bfc/owners + self: /api/v2/buckets/77ca9dace40a9bfc + write: /api/v2/write?org=ORG_ID&bucket=77ca9dace40a9bfc + labels: [] + "401": + $ref: "#/components/responses/AuthorizationError" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --request GET "http://localhost:8086/api/v2/buckets?name=_monitoring" \ + --header "Authorization: Token INFLUX_TOKEN" \ + --header "Accept: application/json" \ + --header "Content-Type: application/json" post: operationId: PostBuckets tags: - Buckets summary: Create a bucket + description: | + Creates a [bucket](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#bucket) + and returns the created bucket along with metadata. The default data + [retention period](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#retention-period) + is 30 days. + + #### InfluxDB OSS + + - A single InfluxDB OSS instance supports active writes or queries for + approximately 20 buckets across all organizations at a given time. Reading + or writing to more than 20 buckets at a time can adversely affect + performance. + + #### Limitations + + - InfluxDB Cloud Free Plan allows users to create up to two buckets. + Exceeding the bucket quota will result in an HTTP `403` status code. + For additional information regarding InfluxDB Cloud offerings, see + [InfluxDB Cloud Pricing](https://www.influxdata.com/influxdb-cloud-pricing/). + + #### Related Guides + + - [Create bucket](https://docs.influxdata.com/influxdb/v2.3/organizations/buckets/create-bucket/) + - [Create bucket CLI reference](https://docs.influxdata.com/influxdb/v2.3/reference/cli/influx/bucket/create) parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: description: Bucket to create required: true content: application/json: schema: - $ref: '#/components/schemas/PostBucketRequest' + $ref: "#/components/schemas/PostBucketRequest" responses: - '201': - description: Bucket created + "201": + description: | + Success. + The bucket was created. + content: + application/json: + schema: + $ref: "#/components/schemas/Bucket" + examples: + successResponse: + value: + id: 37407e232b3911d8 + orgID: INFLUX_ORG_ID + type: user + schemaType: implicit + description: bucket holding air sensor data + name: air_sensor + retentionRules: + - type: expire + everySeconds: 2592000 + createdAt: "2022-08-03T23:04:41.073704121Z" + updatedAt: "2022-08-03T23:04:41.073704228Z" + links: + labels: /api/v2/buckets/37407e232b3911d8/labels + members: /api/v2/buckets/37407e232b3911d8/members + org: /api/v2/orgs/INFLUX_ORG_ID + owners: /api/v2/buckets/37407e232b3911d8/owners + self: /api/v2/buckets/37407e232b3911d8 + write: /api/v2/write?org=INFLUX_ORG_ID&bucket=37407e232b3911d8 + labels: [] + "400": + description: | + Bad request. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + "401": + $ref: "#/components/responses/AuthorizationError" + "403": + description: | + Forbidden. + The bucket quota is exceeded. + headers: + X-Platform-Error-Code: + description: | + The reason for the error. + schema: + type: string + example: forbidden content: application/json: schema: - $ref: '#/components/schemas/Bucket' - '422': - description: Request body failed validation + $ref: "#/components/schemas/Error" + examples: + quotaExceeded: + summary: Bucket quota exceeded + value: + code: forbidden + message: creating bucket would exceed quota + "422": + description: | + Unprocessable Entity. + The request body failed validation. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/buckets/{bucketID}': + $ref: "#/components/schemas/Error" + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --request POST "http://localhost:8086/api/v2/buckets \ + --header "Authorization: Token INFLUX_TOKEN" \ + --header "Accept: application/json" \ + --header "Content-Type: application/json" \ + --data '{ + "name": "air_sensor", + "description": "bucket holding air sensor data", + "orgID": "INFLUX_ORG_ID", + "retentionRules": [ + { + "type": "expire", + "everySeconds": 2592000, + } + ] + }' + "/buckets/{bucketID}": get: operationId: GetBucketsID tags: - Buckets summary: Retrieve a bucket + description: | + Retrieves a bucket. + + Use this endpoint to retrieve information for a specific bucket. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: type: string required: true - description: The bucket ID. + description: | + The ID of the bucket to retrieve. responses: - '200': - description: Bucket details + "200": + description: | + Success. + The response body contains the bucket information. + content: + application/json: + schema: + $ref: "#/components/schemas/Bucket" + examples: + successResponse: + value: + id: 37407e232b3911d8 + orgID: bea7ea952287f70d + type: user + schemaType: implicit + description: bucket for air sensor data + name: air-sensor + retentionRules: + - type: expire + everySeconds: 2592000 + createdAt: "2022-08-03T23:04:41.073704121Z" + updatedAt: "2022-08-03T23:04:41.073704228Z" + links: + labels: /api/v2/buckets/37407e232b3911d8/labels + members: /api/v2/buckets/37407e232b3911d8/members + org: /api/v2/orgs/INFLUX_ORG_ID + owners: /api/v2/buckets/37407e232b3911d8/owners + self: /api/v2/buckets/37407e232b3911d8 + write: /api/v2/write?org=INFLUX_ORG_ID&bucket=37407e232b3911d8 + labels: [] + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + description: | + Not found. + Bucket not found. content: application/json: schema: - $ref: '#/components/schemas/Bucket' + $ref: "#/components/schemas/Error" + examples: + notFound: + summary: | + The requested bucket wasn't found. + value: + code: not found + message: bucket not found + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchBucketsID tags: - Buckets summary: Update a bucket + description: | + Updates a bucket. + + Use this endpoint to update properties + (`name`, `description`, and `retentionRules`) of a bucket. + + #### InfluxDB Cloud + + - Requires the `retentionRules` property in the request body. If you don't + provide `retentionRules`, InfluxDB responds with an HTTP `403` status code. + + #### InfluxDB OSS + + - Doesn't require `retentionRules`. + + #### Related Guides + + - [Update a bucket](https://docs.influxdata.com/influxdb/v2.3/organizations/buckets/update-bucket/) requestBody: - description: Bucket update to apply + description: The bucket update to apply. required: true content: application/json: schema: - $ref: '#/components/schemas/PatchBucketRequest' + $ref: "#/components/schemas/PatchBucketRequest" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: @@ -2427,114 +4228,375 @@ paths: required: true description: The bucket ID. responses: - '200': + "200": description: An updated bucket content: application/json: schema: - $ref: '#/components/schemas/Bucket' + $ref: "#/components/schemas/Bucket" + examples: + successResponse: + value: + id: 37407e232b3911d8 + orgID: INFLUX_ORG_ID + type: user + schemaType: implicit + description: bucket holding air sensor data + name: air_sensor + retentionRules: + - type: expire + everySeconds: 2592000 + createdAt: "2022-08-03T23:04:41.073704121Z" + updatedAt: "2022-08-07T22:49:49.422962913Z" + links: + labels: /api/v2/buckets/37407e232b3911d8/labels + members: /api/v2/buckets/37407e232b3911d8/members + org: /api/v2/orgs/INFLUX_ORG_ID + owners: /api/v2/buckets/37407e232b3911d8/owners + self: /api/v2/buckets/37407e232b3911d8 + write: /api/v2/write?org=INFLUX_ORG_ID&bucket=37407e232b3911d8 + labels: [] + "400": + description: | + Bad Request. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + examples: + invalidJSONStringValue: + summary: Invalid JSON + description: | + If the request body contains invalid JSON, InfluxDB returns `invalid` + with detail about the problem. + value: + code: invalid + message: 'invalid json: invalid character ''\'''' looking for beginning of value' + "401": + $ref: "#/components/responses/AuthorizationError" + "403": + description: | + Forbidden. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + examples: + invalidRetention: + summary: | + The retention policy provided exceeds the max retention for the + organization. + value: + code: forbidden + message: provided retention exceeds orgs maximum retention duration + "404": + description: | + Not found. + Bucket not found. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + examples: + notFound: + summary: | + The requested bucket wasn't found. + value: + code: not found + message: bucket not found + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --request PATCH "http://localhost:8086/api/v2/buckets/BUCKET_ID \ + --header "Authorization: Token INFLUX_TOKEN" \ + --header "Accept: application/json" \ + --header "Content-Type: application/json" \ + --data '{ + "name": "air_sensor", + "description": "bucket holding air sensor data", + "retentionRules": [ + { + "type": "expire", + "everySeconds": 2592000 + } + ] + }' delete: operationId: DeleteBucketsID tags: - Buckets summary: Delete a bucket + description: | + Deletes a bucket and all associated records. + + #### InfluxDB Cloud + + - Does the following when you send a delete request: + + 1. Validates the request and queues the delete. + 2. Returns an HTTP `204` status code if queued; _error_ otherwise. + 3. Handles the delete asynchronously. + + #### InfluxDB OSS + + - Validates the request, handles the delete synchronously, + and then responds with success or failure. + + #### Limitations + + - Only one bucket can be deleted per request. + + #### Related Guides + + - [Delete a bucket](https://docs.influxdata.com/influxdb/v2.3/organizations/buckets/delete-bucket/#delete-a-bucket-in-the-influxdb-ui) parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: type: string required: true - description: The ID of the bucket to delete. + description: | + Bucket ID. + The ID of the bucket to delete. responses: - '204': - description: Delete has been accepted - '404': - description: Bucket not found + "204": + description: | + Success. + + #### InfluxDB Cloud + - The bucket is queued for deletion. + + #### InfluxDB OSS + - The bucket is deleted. + "400": + description: | + Bad Request. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + examples: + invalidID: + summary: | + Invalid ID. + value: + code: invalid + message: id must have a length of 16 bytes + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + description: | + Not found. + Bucket not found. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" + examples: + notFound: + summary: | + The requested bucket was not found. + value: + code: not found + message: bucket not found + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/buckets/{bucketID}/labels': + $ref: "#/components/schemas/Error" + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --request DELETE "http://localhost:8086/api/v2/buckets/BUCKET_ID" \ + --header "Authorization: Token INFLUX_TOKEN" \ + --header 'Accept: application/json' + "/buckets/{bucketID}/labels": get: operationId: GetBucketsIDLabels tags: - Buckets summary: List all labels for a bucket + description: | + Retrieves a list of all labels for a bucket. + + Labels are objects that contain `labelID`, `name`, `description`, and `color` + key-value pairs. They may be used for grouping and filtering InfluxDB + resources. + Labels are also capable of grouping across different resources--for example, + you can apply a label named `air_sensor` to a bucket and a task to quickly + organize resources. + + #### Related guides + + - Use the [`/api/v2/labels` InfluxDB API endpoint](#tag/Labels) to retrieve and manage labels. + - [Manage labels in the InfluxDB UI](https://docs.influxdata.com/influxdb/v2.3/visualize-data/labels/) parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: type: string required: true - description: The bucket ID. + description: | + The ID of the bucket to retrieve labels for. responses: - '200': - description: A list of all labels for a bucket + "200": + description: | + Success. + The response body contains a list of all labels for the bucket. content: application/json: schema: - $ref: '#/components/schemas/LabelsResponse' + $ref: "#/components/schemas/LabelsResponse" + examples: + successResponse: + value: + links: + self: /api/v2/labels + labels: + - id: 09cbd068e7ebb000 + orgID: INFLUX_ORG_ID + name: production_buckets + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostBucketsIDLabels tags: - Buckets summary: Add a label to a bucket + description: | + Adds a label to a bucket and returns the new label information. + + Labels are objects that contain `labelID`, `name`, `description`, and `color` + key-value pairs. They may be used for grouping and filtering across one or + more kinds of **resources**--for example, you can apply a label named + `air_sensor` to a bucket and a task to quickly organize resources. + + #### Limitations + + - Before adding a label to a bucket, you must create the label if you + haven't already. To create a label with the InfluxDB API, send a `POST` + request to the [`/api/v2/labels` endpoint](#operation/PostLabels)). + + #### Related guides + + - Use the [`/api/v2/labels` InfluxDB API endpoint](#tag/Labels) to retrieve and manage labels. + - [Manage labels in the InfluxDB UI](https://docs.influxdata.com/influxdb/v2.3/visualize-data/labels/) parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: type: string required: true - description: The bucket ID. + description: | + Bucket ID. + The ID of the bucket to label. requestBody: - description: Label to add + description: An object that contains a _`labelID`_ to add to the bucket. required: true content: application/json: schema: - $ref: '#/components/schemas/LabelMapping' + $ref: "#/components/schemas/LabelMapping" responses: - '201': - description: The newly added label + "201": + description: | + Success. + The response body contains the label information. + content: + application/json: + schema: + $ref: "#/components/schemas/LabelResponse" + examples: + successResponse: + value: + links: + self: /api/v2/labels + label: + id: 09cbd068e7ebb000 + orgID: INFLUX_ORG_ID + name: production_buckets + "400": + $ref: "#/components/responses/BadRequestError" + examples: + invalidRequest: + summary: The `labelID` is missing from the request body. + value: + code: invalid + message: label id is required + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "422": + description: | + Unprocessable entity. + Label already exists on the resource. content: application/json: schema: - $ref: '#/components/schemas/LabelResponse' + $ref: "#/components/schemas/Error" + examples: + conflictingResource: + summary: | + Label already exists on the resource. + value: + code: conflict + message: "Cannot add label, label already exists on resource" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/buckets/{bucketID}/labels/{labelID}': + $ref: "#/components/schemas/Error" + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --request POST "http://localhost:8086/api/v2/buckets/BUCKETS_ID/labels \ + --header "Authorization: Token INFLUX_TOKEN" \ + --header "Accept: application/json" \ + --header "Content-Type: application/json" \ + --data '{ + "labelID": "09cbd068e7ebb000" + }' + "/buckets/{bucketID}/labels/{labelID}": delete: operationId: DeleteBucketsIDLabelsID tags: - Buckets summary: Delete a label from a bucket parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: @@ -2548,117 +4610,233 @@ paths: required: true description: The ID of the label to delete. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: Bucket not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/buckets/{bucketID}/members': + $ref: "#/components/schemas/Error" + "/buckets/{bucketID}/members": get: operationId: GetBucketsIDMembers tags: - Buckets summary: List all users with member privileges for a bucket + description: | + Retrieves a list of all users for a bucket. + + InfluxDB [users](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#user) have + permission to access InfluxDB. + + [Members](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#member) are users in + an organization with access to the specified resource. + + Use this endpoint to retrieve all users with access to a bucket. + + #### Related guides + + - [Manage users](https://docs.influxdata.com/influxdb/v2.3/users/) + - [Manage members](https://docs.influxdata.com/influxdb/v2.3/organizations/members/) parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: type: string required: true - description: The bucket ID. + description: | + The ID of the bucket to retrieve users for. responses: - '200': - description: A list of bucket members + "200": + description: | + Success. + The response body contains a list of all users for the bucket. content: application/json: schema: - $ref: '#/components/schemas/ResourceMembers' - default: + $ref: "#/components/schemas/ResourceMembers" + examples: + successResponse: + value: + links: + self: /api/v2/buckets/37407e232b3911d8/members + users: + - role: member + links: + self: /api/v2/users/791df274afd48a83 + id: 791df274afd48a83 + name: example_user_1 + status: active + - role: owner + links: + self: /api/v2/users/09cfb87051cbe000 + id: 09cfb87051cbe000 + name: example_user_2 + status: active + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" + default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostBucketsIDMembers tags: - Buckets summary: Add a member to a bucket + description: | + Add a user to a bucket and return the new user information. + + InfluxDB [users](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#user) have + permission to access InfluxDB. + + [Members](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#member) are users in + an organization. + + Use this endpoint to give a user member privileges to a bucket. + + #### Related guides + + - [Manage users](https://docs.influxdata.com/influxdb/v2.3/users/) + - [Manage members](https://docs.influxdata.com/influxdb/v2.3/organizations/members/) parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: type: string required: true - description: The bucket ID. + description: | + The ID of the bucket to retrieve users for. requestBody: - description: User to add as member + description: A user to add as a member to the bucket. required: true content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': - description: Member added to bucket + "201": + description: | + Success. + The response body contains the user information. content: application/json: schema: - $ref: '#/components/schemas/ResourceMember' + $ref: "#/components/schemas/ResourceMember" + examples: + successResponse: + value: + role: member + links: + self: /api/v2/users/09cfb87051cbe000 + id: 09cfb87051cbe000 + name: example_user_1 + status: active + "400": + $ref: "#/components/responses/BadRequestError" + examples: + invalidRequest: + summary: The `userID` is missing from the request body. + value: + code: invalid + message: user id missing or invalid + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/buckets/{bucketID}/members/{userID}': + $ref: "#/components/schemas/Error" + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --request POST "http://localhost:8086/api/v2/buckets/BUCKET_ID/members \ + --header "Authorization: Token INFLUX_TOKEN" \ + --header "Accept: application/json" \ + --header "Content-Type: application/json" \ + --data '{ + "id": "09cfb87051cbe000" + } + "/buckets/{bucketID}/members/{userID}": delete: operationId: DeleteBucketsIDMembersID tags: - Buckets summary: Remove a member from a bucket + description: | + Removes a member from a bucket. + + Use this endpoint to remove a user's member privileges from a bucket. This + removes the user's `read` and `write` permissions for the bucket. + + #### Related guides + + - [Manage users](https://docs.influxdata.com/influxdb/v2.3/users/) + - [Manage members](https://docs.influxdata.com/influxdb/v2.3/organizations/members/) parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: type: string required: true - description: The ID of the member to remove. + description: | + The ID of the user to remove. - in: path name: bucketID schema: type: string required: true - description: The bucket ID. + description: | + The ID of the bucket to remove a user from. responses: - '204': - description: Member removed + "204": + description: | + Success. + The user is no longer a member of the bucket. + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/buckets/{bucketID}/owners': + $ref: "#/components/schemas/Error" + "/buckets/{bucketID}/owners": get: operationId: GetBucketsIDOwners tags: - Buckets summary: List all owners of a bucket parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: @@ -2666,25 +4844,25 @@ paths: required: true description: The bucket ID. responses: - '200': + "200": description: A list of bucket owners content: application/json: schema: - $ref: '#/components/schemas/ResourceOwners' + $ref: "#/components/schemas/ResourceOwners" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostBucketsIDOwners tags: - Buckets summary: Add an owner to a bucket parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: @@ -2697,28 +4875,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': - description: Bucket owner added + "201": + description: Success. The user is an owner of the bucket content: application/json: schema: - $ref: '#/components/schemas/ResourceOwner' + $ref: "#/components/schemas/ResourceOwner" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/buckets/{bucketID}/owners/{userID}': + $ref: "#/components/schemas/Error" + "/buckets/{bucketID}/owners/{userID}": delete: operationId: DeleteBucketsIDOwnersID tags: - Buckets summary: Remove an owner from a bucket parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -2732,88 +4910,125 @@ paths: required: true description: The bucket ID. responses: - '204': + "204": description: Owner removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /orgs: get: operationId: GetOrgs tags: - Organizations - summary: List all organizations + - Security and access endpoints + summary: List organizations + description: | + Retrieves a list of [organizations](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#organization/). + + To limit which organizations are returned, pass query parameters in your request. + If no query parameters are passed, InfluxDB returns all organizations up to the default `limit`. + + #### InfluxDB Cloud + + - Only returns the organization that owns the token passed in the request. + + #### Related guides + + - [View organizations](https://docs.influxdata.com/influxdb/v2.3/organizations/view-orgs/). parameters: - - $ref: '#/components/parameters/TraceSpan' - - $ref: '#/components/parameters/Offset' - - $ref: '#/components/parameters/Limit' - - $ref: '#/components/parameters/Descending' + - $ref: "#/components/parameters/TraceSpan" + - $ref: "#/components/parameters/Offset" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Descending" - in: query name: org schema: type: string - description: Filter organizations to a specific organization name. + description: | + An organization name. + Only returns organizations with this name. - in: query name: orgID schema: type: string - description: Filter organizations to a specific organization ID. + description: | + An organization ID. + Only returns the organization with this ID. - in: query name: userID schema: type: string - description: Filter organizations to a specific user ID. + description: | + A user ID. + Only returns organizations where this user is a member or owner. responses: - '200': - description: A list of organizations + "200": + description: Success. The response body contains a list of organizations. content: application/json: schema: - $ref: '#/components/schemas/Organizations' + $ref: "#/components/schemas/Organizations" + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" post: operationId: PostOrgs tags: - Organizations summary: Create an organization + description: | + Creates an organization and returns the newly created organization. + + #### InfluxDB Cloud + + - Doesn't allow you to use this endpoint to create organizations. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: - description: Organization to create + description: The organization to create. required: true content: application/json: schema: - $ref: '#/components/schemas/PostOrganizationRequest' + $ref: "#/components/schemas/PostOrganizationRequest" responses: - '201': - description: Organization created + "201": + description: | + Success. The organization is created. + The response body contains the new organization. content: application/json: schema: - $ref: '#/components/schemas/Organization' + $ref: "#/components/schemas/Organization" + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '/orgs/{orgID}': + $ref: "#/components/responses/GeneralServerError" + "/orgs/{orgID}": get: operationId: GetOrgsID tags: - Organizations + - Security and access endpoints summary: Retrieve an organization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: @@ -2821,18 +5036,18 @@ paths: required: true description: The ID of the organization to get. responses: - '200': + "200": description: Organization details content: application/json: schema: - $ref: '#/components/schemas/Organization' + $ref: "#/components/schemas/Organization" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchOrgsID tags: @@ -2844,9 +5059,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PatchOrganizationRequest' + $ref: "#/components/schemas/PatchOrganizationRequest" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: @@ -2854,25 +5069,25 @@ paths: required: true description: The ID of the organization to get. responses: - '200': + "200": description: Organization updated content: application/json: schema: - $ref: '#/components/schemas/Organization' + $ref: "#/components/schemas/Organization" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" delete: operationId: DeleteOrgsID tags: - Organizations summary: Delete an organization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: @@ -2880,28 +5095,29 @@ paths: required: true description: The ID of the organization to delete. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: Organization not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/orgs/{orgID}/secrets': + $ref: "#/components/schemas/Error" + "/orgs/{orgID}/secrets": get: operationId: GetOrgsIDSecrets tags: - Secrets + - Security and access endpoints summary: List all secret keys for an organization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: @@ -2909,25 +5125,25 @@ paths: required: true description: The organization ID. responses: - '200': + "200": description: A list of all secret keys content: application/json: schema: - $ref: '#/components/schemas/SecretKeysResponse' + $ref: "#/components/schemas/SecretKeysResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchOrgsIDSecrets tags: - Secrets summary: Update secrets in an organization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: @@ -2940,24 +5156,25 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Secrets' + $ref: "#/components/schemas/Secrets" responses: - '204': + "204": description: Keys successfully patched default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/orgs/{orgID}/members': + $ref: "#/components/schemas/Error" + "/orgs/{orgID}/members": get: operationId: GetOrgsIDMembers tags: - Organizations + - Security and access endpoints summary: List all members of an organization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: @@ -2965,31 +5182,31 @@ paths: required: true description: The organization ID. responses: - '200': + "200": description: A list of organization members content: application/json: schema: - $ref: '#/components/schemas/ResourceMembers' - '404': + $ref: "#/components/schemas/ResourceMembers" + "404": description: Organization not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostOrgsIDMembers tags: - Organizations summary: Add a member to an organization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: @@ -3002,28 +5219,29 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': + "201": description: Added to organization created content: application/json: schema: - $ref: '#/components/schemas/ResourceMember' + $ref: "#/components/schemas/ResourceMember" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/orgs/{orgID}/members/{userID}': + $ref: "#/components/schemas/Error" + "/orgs/{orgID}/members/{userID}": delete: operationId: DeleteOrgsIDMembersID tags: - Organizations + - Security and access endpoints summary: Remove a member from an organization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -3037,88 +5255,114 @@ paths: required: true description: The organization ID. responses: - '204': + "204": description: Member removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/orgs/{orgID}/owners': + $ref: "#/components/schemas/Error" + "/orgs/{orgID}/owners": get: operationId: GetOrgsIDOwners tags: - Organizations + - Security and access endpoints summary: List all owners of an organization + description: | + Retrieves a list of all owners of an organization. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: type: string required: true - description: The organization ID. + description: | + The ID of the organization to list owners for. responses: - '200': + "200": description: A list of organization owners content: application/json: schema: - $ref: '#/components/schemas/ResourceOwners' - '404': + $ref: "#/components/schemas/ResourceOwners" + "404": description: Organization not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostOrgsIDOwners tags: - Organizations summary: Add an owner to an organization + description: | + Adds an owner to an organization. + + Use this endpoint to assign the organization `owner` role to a user. + + #### InfluxDB Cloud + + - Doesn't use `owner` and `member` roles. + Use [`/api/v2/authorizations`](#tag/Authorizations) to assign user permissions. + + #### Required permissions + + - `write-orgs INFLUX_ORG_ID` + + `INFLUX_ORG_ID` is the ID of the organization that you want add an owner for. + + #### Related endpoints + + - [Authorizations](#tag/Authorizations) parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: type: string required: true - description: The organization ID. + description: The ID of the organization that you want to add an owner for. requestBody: - description: User to add as owner + description: The user to add as an owner of the organization. required: true content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': - description: Organization owner added + "201": + description: | + Success. The user is an owner of the organization. + The response body contains the owner with role and user detail. content: application/json: schema: - $ref: '#/components/schemas/ResourceOwner' + $ref: "#/components/schemas/ResourceOwner" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/orgs/{orgID}/owners/{userID}': + $ref: "#/components/schemas/Error" + "/orgs/{orgID}/owners/{userID}": delete: operationId: DeleteOrgsIDOwnersID tags: - Organizations + - Security and access endpoints summary: Remove an owner from an organization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -3132,23 +5376,24 @@ paths: required: true description: The organization ID. responses: - '204': + "204": description: Owner removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/orgs/{orgID}/secrets/delete': + $ref: "#/components/schemas/Error" + "/orgs/{orgID}/secrets/delete": post: deprecated: true operationId: PostOrgsIDSecrets tags: - Secrets + - Security and access endpoints summary: Delete secrets from an organization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: @@ -3161,24 +5406,25 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SecretKeys' + $ref: "#/components/schemas/SecretKeys" responses: - '204': + "204": description: Keys successfully patched default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/orgs/{orgID}/secrets/{secretID}': + $ref: "#/components/schemas/Error" + "/orgs/{orgID}/secrets/{secretID}": delete: operationId: DeleteOrgsIDSecretsID tags: - Secrets + - Security and access endpoints summary: Delete a secret from an organization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: orgID schema: @@ -3192,21 +5438,22 @@ paths: required: true description: The secret ID. responses: - '204': + "204": description: Keys successfully deleted default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /resources: get: operationId: GetResources tags: - Resources + - System information endpoints summary: List all known resources parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '200': + "200": description: All resources targets content: application/json: @@ -3219,33 +5466,70 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /stacks: get: operationId: ListStacks tags: - Templates - summary: List installed templates + summary: List installed stacks + description: | + Retrieves a list of installed InfluxDB stacks. + + To limit stacks in the response, pass query parameters in your request. + If no query parameters are passed, InfluxDB returns all installed stacks + for the organization. parameters: - in: query name: orgID required: true schema: type: string - description: The organization ID of the stacks + description: | + The ID of the organization that owns the stacks. + Only returns stacks owned by this organization. + + #### InfluxDB Cloud + + - Doesn't require this parameter; + InfluxDB only returns resources allowed by the API token. - in: query name: name schema: type: string - description: A collection of names to filter the list by. + description: | + The stack name. + Finds stack `events` with this name and returns the stacks. + + Repeatable. + To filter for more than one stack name, + repeat this parameter with each name--for example: + + - `http://localhost:8086/api/v2/stacks?&orgID=INFLUX_ORG_ID&name=project-stack-0&name=project-stack-1` + examples: + findStackByName: + summary: Find stacks with the event name + value: project-stack-0 - in: query name: stackID schema: type: string - description: A collection of stackIDs to filter the list by. + description: | + The stack ID. + Only returns stacks with this ID. + + Repeatable. + To filter for more than one stack ID, + repeat this parameter with each ID--for example: + + - `http://localhost:8086/api/v2/stacks?&orgID=INFLUX_ORG_ID&stackID=09bd87cd33be3000&stackID=09bef35081fe3000` + examples: + findStackByID: + summary: Find a stack with the ID + value: 09bd87cd33be3000 responses: - '200': - description: Success. Returns the list of stacks. + "200": + description: Success. The response body contains the list of stacks. content: application/json: schema: @@ -3254,18 +5538,66 @@ paths: stacks: type: array items: - $ref: '#/components/schemas/Stack' + $ref: "#/components/schemas/Stack" + "400": + description: | + Bad request. + The response body contains detail about the error. + + #### InfluxDB OSS + + - Returns this error if an incorrect value is passed for `org` or `orgID`. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + examples: + orgIdMissing: + summary: The orgID query parameter is missing + value: + code: invalid + message: 'organization id[""] is invalid: id must have a length of 16 bytes' + orgProvidedNotFound: + summary: The org or orgID passed doesn't own the token passed in the header + value: + code: invalid + message: "failed to decode request body: organization not found" + "401": + $ref: "#/components/responses/AuthorizationError" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: CreateStack tags: - Templates - summary: Create a new stack + summary: Create a stack + description: | + Creates or initializes a stack. + + Use this endpoint to _manually_ initialize a new stack with the following + optional information: + + - Stack name + - Stack description + - URLs for template manifest files + + To automatically create a stack when applying templates, + use the [/api/v2/templates/apply endpoint](#operation/ApplyTemplate). + + #### Required permissions + + - `write` permission for the organization + + #### Related guides + + - [InfluxDB stacks](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/stacks/) + - [Use InfluxDB templates](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/use/#apply-templates-to-an-influxdb-instance) requestBody: description: The stack to create. required: true @@ -3286,19 +5618,35 @@ paths: items: type: string responses: - '201': + "201": description: Success. Returns the newly created stack. content: application/json: schema: - $ref: '#/components/schemas/Stack' + $ref: "#/components/schemas/Stack" + "401": + $ref: "#/components/responses/AuthorizationError" + "422": + description: | + Unprocessable entity. + + The error may indicate one of the following problems: + + - The request body isn't valid--the request is well-formed, but InfluxDB can't process it due to semantic errors. + - You passed a parameter combination that InfluxDB doesn't support. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/stacks/{stack_id}': + $ref: "#/components/schemas/Error" + "/stacks/{stack_id}": get: operationId: ReadStack tags: @@ -3312,18 +5660,18 @@ paths: type: string description: The identifier of the stack. responses: - '200': + "200": description: Returns the stack. content: application/json: schema: - $ref: '#/components/schemas/Stack' + $ref: "#/components/schemas/Stack" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: UpdateStack tags: @@ -3371,18 +5719,18 @@ paths: - kind - resourceID responses: - '200': + "200": description: Returns the updated stack. content: application/json: schema: - $ref: '#/components/schemas/Stack' + $ref: "#/components/schemas/Stack" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" delete: operationId: DeleteStack tags: @@ -3402,15 +5750,15 @@ paths: type: string description: The identifier of the organization. responses: - '204': + "204": description: The stack and its associated resources were deleted. default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/stacks/{stack_id}/uninstall': + $ref: "#/components/schemas/Error" + "/stacks/{stack_id}/uninstall": post: operationId: UninstallStack tags: @@ -3424,58 +5772,316 @@ paths: type: string description: The identifier of the stack. responses: - '200': + "200": description: Returns the uninstalled stack. content: application/json: schema: - $ref: '#/components/schemas/Stack' + $ref: "#/components/schemas/Stack" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /templates/apply: post: operationId: ApplyTemplate tags: - Templates summary: Apply or dry-run a template - description: Applies or performs a dry-run of template in an organization. + description: | + Applies a template to + create or update a [stack](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/stacks/) of InfluxDB + [resources](https://docs.influxdata.com/influxdb/v2.3/reference/cli/influx/export/all/#resources). + The response contains the diff of changes and the stack ID. + + Use this endpoint to install an InfluxDB template to an organization. + Provide template URLs or template objects in your request. + To customize which template resources are installed, use the `actions` + parameter. + + By default, when you apply a template, InfluxDB installs the template to + create and update stack resources and then generates a diff of the changes. + If you pass `dryRun: true` in the request body, InfluxDB validates the + template and generates the resource diff, but doesn’t make any + changes to your instance. + + #### Custom values for templates + + - Some templates may contain [environment references](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/create/#include-user-definable-resource-names) for custom metadata. + To provide custom values for environment references, pass the _`envRefs`_ + property in the request body. + For more information and examples, see how to + [define environment references](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/use/#define-environment-references). + + - Some templates may contain queries that use + [secrets](https://docs.influxdata.com/influxdb/v2.3/security/secrets/). + To provide custom secret values, pass the _`secrets`_ property + in the request body. + Don't expose secret values in templates. + For more information, see [how to pass secrets when installing a template](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/use/#pass-secrets-when-installing-a-template). + + #### Required permissions + + - `write` permissions for resource types in the template. + + #### Rate limits (with InfluxDB Cloud) + + - Adjustable service quotas apply. + For more information, see [limits and adjustable quotas](https://docs.influxdata.com/influxdb/cloud/account-management/limits/). + + #### Related guides + + - [Use templates](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/use/) + - [Stacks](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/stacks/) requestBody: required: true + description: | + Parameters for applying templates. content: application/json: schema: - $ref: '#/components/schemas/TemplateApply' + $ref: "#/components/schemas/TemplateApply" + examples: + skipKindAction: + summary: Skip all bucket and task resources in the provided templates + value: + orgID: INFLUX_ORG_ID + actions: + - action: skipKind + properties: + kind: Bucket + - action: skipKind + properties: + kind: Task + templates: + - contents: + - "[object Object]": null + skipResourceAction: + summary: Skip specific resources in the provided templates + value: + orgID: INFLUX_ORG_ID + actions: + - action: skipResource + properties: + kind: Label + resourceTemplateName: foo-001 + - action: skipResource + properties: + kind: Bucket + resourceTemplateName: bar-020 + - action: skipResource + properties: + kind: Bucket + resourceTemplateName: baz-500 + templates: + - contents: + - apiVersion: influxdata.com/v2alpha1 + kind: Bucket + metadata: + name: baz-500 + templateObjectEnvRefs: + summary: envRefs for template objects + value: + orgID: INFLUX_ORG_ID + envRefs: + linux-cpu-label: MY_CPU_LABEL + docker-bucket: MY_DOCKER_BUCKET + docker-spec-1: MY_DOCKER_SPEC + templates: + - contents: + - apiVersion: influxdata.com/v2alpha1 + kind: Label + metadata: + name: + envRef: + key: linux-cpu-label + spec: + color: "#326BBA" + name: inputs.cpu + - contents: + - apiVersion: influxdata.com/v2alpha1 + kind: Bucket + metadata: + name: + envRef: + key: docker-bucket application/x-jsonnet: schema: - $ref: '#/components/schemas/TemplateApply' + $ref: "#/components/schemas/TemplateApply" text/yml: schema: - $ref: '#/components/schemas/TemplateApply' + $ref: "#/components/schemas/TemplateApply" + x-codeSamples: + - lang: Shell + label: "cURL: Dry run with a remote template" + source: | + curl --request POST "http://localhost:8086/api/v2/templates/apply" \ + --header "Authorization: Token INFLUX_API_TOKEN" \ + --data @- << EOF + { + "dryRun": true, + "orgID": "INFLUX_ORG_ID", + "remotes": [ + { + "url": "https://raw.githubusercontent.com/influxdata/community-templates/master/linux_system/linux_system.yml" + } + ] + } + EOF + - lang: Shell + label: "cURL: Apply with secret values" + source: | + curl "http://localhost:8086/api/v2/templates/apply" \ + --header "Authorization: Token INFLUX_API_TOKEN" \ + --data @- << EOF | jq . + { + "orgID": "INFLUX_ORG_ID", + "secrets": { + "SLACK_WEBHOOK": "YOUR_SECRET_WEBHOOK_URL" + }, + "remotes": [ + { + "url": "https://raw.githubusercontent.com/influxdata/community-templates/master/fortnite/fn-template.yml" + } + ] + } + EOF + - lang: Shell + label: "cURL: Apply template objects with environment references" + source: | + curl --request POST "http://localhost:8086/api/v2/templates/apply" \ + --header "Authorization: Token INFLUX_API_TOKEN" \ + --data @- << EOF + { "orgID": "INFLUX_ORG_ID", + "envRefs": { + "linux-cpu-label": "MY_CPU_LABEL", + "docker-bucket": "MY_DOCKER_BUCKET", + "docker-spec-1": "MY_DOCKER_SPEC" + }, + "templates": [ + { "contents": [{ + "apiVersion": "influxdata.com/v2alpha1", + "kind": "Label", + "metadata": { + "name": { + "envRef": { + "key": "linux-cpu-label" + } + } + }, + "spec": { + "color": "#326BBA", + "name": "inputs.cpu" + } + }] + }, + "templates": [ + { "contents": [{ + "apiVersion": "influxdata.com/v2alpha1", + "kind": "Label", + "metadata": { + "name": { + "envRef": { + "key": "linux-cpu-label" + } + } + }, + "spec": { + "color": "#326BBA", + "name": "inputs.cpu" + } + }] + }, + { "contents": [{ + "apiVersion": "influxdata.com/v2alpha1", + "kind": "Bucket", + "metadata": { + "name": { + "envRef": { + "key": "docker-bucket" + } + } + } + }] + } + ] + } + EOF responses: - '200': + "200": + description: | + Success. + The template dry run succeeded. + The response body contains a resource diff of changes that the + template would have made if installed. + No resources were created or updated. + The diff and summary won't contain IDs for resources + that didn't exist at the time of the dry run. + content: + application/json: + schema: + $ref: "#/components/schemas/TemplateSummary" + "201": description: | - Success. The package dry-run succeeded. No new resources were created. Returns a diff and summary of the dry-run. The diff and summary won't contain IDs for resources that didn't exist at the time of the dry-run. + Success. + The template applied successfully. + The response body contains the stack ID, a diff, and a summary. + The diff compares the initial state to the state after the template installation. + The summary contains newly created resources. content: application/json: schema: - $ref: '#/components/schemas/TemplateSummary' - '201': + $ref: "#/components/schemas/TemplateSummary" + "422": + description: | + Unprocessable entity. + + + The error may indicate one of the following problems: + + - The template failed validation. + - You passed a parameter combination that InfluxDB doesn't support. + content: + application/json: + schema: + allOf: + - $ref: "#/components/schemas/TemplateSummary" + - type: object + required: + - message + - code + properties: + message: + type: string + code: + type: string + "500": description: | - Success. The package applied successfully. Returns a diff and summary of the run. The summary contains newly created resources. The diff compares the initial state to the state after the package applied. This corresponds to `"dryRun": true`. + Internal server error. + + #### InfluxDB Cloud + + - Returns this error if creating one of the template + resources (bucket, dashboard, task, user) exceeds your plan’s + adjustable service quotas. content: application/json: schema: - $ref: '#/components/schemas/TemplateSummary' + $ref: "#/components/schemas/Error" + examples: + createExceedsQuota: + summary: "InfluxDB Cloud: Creating resource would exceed quota." + value: + code: internal error + message: "resource_type=\"tasks\" err=\"failed to apply resource\"\n\tmetadata_name=\"alerting-gates-b84003\" err_msg=\"failed to create tasks[\\\"alerting-gates-b84003\\\"]: creating task would exceed quota\"" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /templates/export: post: operationId: ExportTemplate @@ -3489,127 +6095,50 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/TemplateExportByID' - - $ref: '#/components/schemas/TemplateExportByName' + - $ref: "#/components/schemas/TemplateExportByID" + - $ref: "#/components/schemas/TemplateExportByName" responses: - '200': + "200": description: The template was created successfully. Returns the newly created template. content: application/json: schema: - $ref: '#/components/schemas/Template' + $ref: "#/components/schemas/Template" application/x-yaml: schema: - $ref: '#/components/schemas/Template' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}': - get: - operationId: GetTasksID - tags: - - Tasks - summary: Retrieve a task - parameters: - - $ref: '#/components/parameters/TraceSpan' - - in: path - name: taskID - schema: - type: string - required: true - description: The task ID. - responses: - '200': - description: Task details - content: - application/json: - schema: - $ref: '#/components/schemas/Task' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - patch: - operationId: PatchTasksID - tags: - - Tasks - summary: Update a task - description: Update a task. This will cancel all queued runs. - requestBody: - description: Task update to apply - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/TaskUpdateRequest' - parameters: - - $ref: '#/components/parameters/TraceSpan' - - in: path - name: taskID - schema: - type: string - required: true - description: The task ID. - responses: - '200': - description: Task updated - content: - application/json: - schema: - $ref: '#/components/schemas/Task' - default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - delete: - operationId: DeleteTasksID - tags: - - Tasks - summary: Delete a task - description: Deletes a task and all associated records - parameters: - - $ref: '#/components/parameters/TraceSpan' - - in: path - name: taskID - schema: - type: string - required: true - description: The ID of the task to delete. - responses: - '204': - description: Task deleted + $ref: "#/components/schemas/Template" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/runs': + $ref: "#/components/schemas/Error" + "/tasks/{taskID}/runs": get: operationId: GetTasksIDRuns tags: - Tasks summary: List runs for a task + description: | + Retrieves a list of runs for a [task](https://docs.influxdata.com/influxdb/v2.3/process-data/). + + To limit which task runs are returned, pass query parameters in your request. + If no query parameters are passed, InfluxDB returns all task runs up to the default `limit`. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: type: string required: true - description: The ID of the task to get runs for. + description: | + The ID of the task to get runs for. + Only returns runs for this task. - in: query name: after schema: type: string - description: Returns runs after a specific ID. + description: A task run ID. Only returns runs created after this run. - in: query name: limit schema: @@ -3617,39 +6146,54 @@ paths: minimum: 1 maximum: 500 default: 100 - description: The number of runs to return + description: | + Limits the number of task runs returned. Default is `100`. - in: query name: afterTime schema: type: string format: date-time - description: 'Filter runs to those scheduled after this time, RFC3339' + description: | + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)). + Only returns runs scheduled after this time. - in: query name: beforeTime schema: type: string format: date-time - description: 'Filter runs to those scheduled before this time, RFC3339' + description: | + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)). + Only returns runs scheduled before this time. responses: - '200': - description: A list of task runs + "200": + description: Success. The response body contains the list of task runs. content: application/json: schema: - $ref: '#/components/schemas/Runs' + $ref: "#/components/schemas/Runs" + "401": + $ref: "#/components/responses/AuthorizationError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" post: operationId: PostTasksIDRuns tags: + - Data I/O endpoints - Tasks - summary: 'Manually start a task run, overriding the current schedule' + summary: "Start a task run, overriding the schedule" + description: | + Schedules a task run to start immediately, ignoring scheduled runs. + + Use this endpoint to manually start a task run. + Scheduled runs will continue to run as scheduled. + This may result in concurrently running tasks. + + To _retry_ a previous run (and avoid creating a new run), + use the [`POST /api/v2/tasks/{taskID}/runs/{runID}/retry`](#operation/PostTasksIDRunsIDRetry) endpoint. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: @@ -3659,127 +6203,241 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RunManually' + $ref: "#/components/schemas/RunManually" responses: - '201': - description: Run scheduled to start + "201": + description: Success. The run is scheduled to start. content: application/json: schema: - $ref: '#/components/schemas/Run' + $ref: "#/components/schemas/Run" + "401": + $ref: "#/components/responses/AuthorizationError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/runs/{runID}': + $ref: "#/components/responses/GeneralServerError" + "/tasks/{taskID}/runs/{runID}": get: operationId: GetTasksIDRunsID tags: - Tasks - summary: Retrieve a single run for a task + summary: Retrieve a run for a task. + description: | + Retrieves a specific run for a [task](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#task). + + Use this endpoint to retrieve detail and logs for a specific task run. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: type: string required: true - description: The task ID. + description: The ID of the task to retrieve runs for. - in: path name: runID schema: type: string required: true - description: The run ID. + description: The ID of the run to retrieve. responses: - '200': - description: The run record + "200": + description: Success. The response body contains the task run. content: application/json: schema: - $ref: '#/components/schemas/Run' + $ref: "#/components/schemas/Run" + examples: + runSuccess: + summary: A successful task run. + value: + links: + logs: /api/v2/tasks/0996e56b2f378000/runs/09b070dadaa7d000/logs + retry: /api/v2/tasks/0996e56b2f378000/runs/09b070dadaa7d000/retry + self: /api/v2/tasks/0996e56b2f378000/runs/09b070dadaa7d000 + task: /api/v2/tasks/0996e56b2f378000 + id: 09b070dadaa7d000 + taskID: 0996e56b2f378000 + status: success + scheduledFor: "2022-07-18T14:46:06Z" + startedAt: "2022-07-18T14:46:07.16222Z" + finishedAt: "2022-07-18T14:46:07.308254Z" + requestedAt: "2022-07-18T14:46:06Z" + log: + - runID: 09b070dadaa7d000 + time: "2022-07-18T14:46:07.101231Z" + message: 'Started task from script: "option task = {name: \"task1\", every: 30m} from(bucket: \"iot_center\") |> range(start: -90d) |> filter(fn: (r) => r._measurement == \"environment\") |> aggregateWindow(every: 1h, fn: mean)"' + - runID: 09b070dadaa7d000 + time: "2022-07-18T14:46:07.242859Z" + message: Completed(success) + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" delete: operationId: DeleteTasksIDRunsID tags: - Tasks summary: Cancel a running task + description: | + Cancels a running [task](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#task). + + Use this endpoint with InfluxDB OSS to cancel a running task. + + #### InfluxDB Cloud + + - Doesn't support this operation. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: type: string required: true - description: The task ID. + description: The ID of the task to cancel. - in: path name: runID schema: type: string required: true - description: The run ID. + description: The ID of the task run to cancel. responses: - '204': - description: Delete has been accepted - default: - description: Unexpected error + "204": + description: | + Success. The `DELETE` is accepted and the run will be cancelled. + + #### InfluxDB Cloud + + - Doesn't support this operation. + - Doesn't return this status. + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "405": + description: | + Method not allowed. + + #### InfluxDB Cloud + + - Always returns this error; doesn't support cancelling tasks. + + #### InfluxDB OSS + + - Doesn't return this error. content: application/json: schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/runs/{runID}/retry': + $ref: "#/components/schemas/Error" + "500": + $ref: "#/components/responses/InternalServerError" + default: + $ref: "#/components/responses/GeneralServerError" + "/tasks/{taskID}/runs/{runID}/retry": post: operationId: PostTasksIDRunsIDRetry tags: - Tasks summary: Retry a task run + description: | + Queues a task run to retry and returns the newly scheduled run. + + To manually start a _new_ task run, use the [`POST /api/v2/tasks/{taskID}/runs`](#operation/PostTasksIDRuns) endpoint. + + #### Limitations + + - The task must be _active_ (`status: "active"`). requestBody: content: application/json; charset=utf-8: schema: type: object parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: type: string required: true - description: The task ID. + description: The ID of the task to retry. - in: path name: runID schema: type: string required: true - description: The run ID. + description: The ID of the task run to retry. responses: - '200': - description: Run that has been queued + "200": + description: Success. The response body contains the queued run. content: application/json: schema: - $ref: '#/components/schemas/Run' - default: - description: Unexpected error - content: - application/json: + $ref: "#/components/schemas/Run" + examples: + retryTaskRun: + summary: A task run scheduled to retry + value: + links: + logs: /api/v2/tasks/09a776832f381000/runs/09d60ffe08738000/logs + retry: /api/v2/tasks/09a776832f381000/runs/09d60ffe08738000/retry + self: /api/v2/tasks/09a776832f381000/runs/09d60ffe08738000 + task: /api/v2/tasks/09a776832f381000 + id: 09d60ffe08738000 + taskID: 09a776832f381000 + status: scheduled + scheduledFor: "2022-08-15T00:00:00Z" + requestedAt: "2022-08-16T20:05:11.84145Z" + "400": + description: | + Bad request. + The response body contains detail about the error. + + InfluxDB may return this error for the following reasons: + + - The task has `status: inactive`. + content: + application/json: schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/logs': + $ref: "#/components/schemas/Error" + examples: + inactiveTask: + summary: Can't retry an inactive task + value: + code: invalid + message: "failed to retry run: inactive task" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" + default: + $ref: "#/components/responses/GeneralServerError" + "/tasks/{taskID}/logs": get: operationId: GetTasksIDLogs tags: - Tasks summary: Retrieve all logs for a task + description: | + Retrieves a list of all logs for a [task](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#task). + + When an InfluxDB task runs, a “run” record is created in the task’s history. + Logs associated with each run provide relevant log messages, timestamps, and the exit status of the run attempt. + + Use this endpoint to retrieve only the log events for a task, + without additional task metadata. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: @@ -3787,146 +6445,229 @@ paths: required: true description: The task ID. responses: - '200': - description: All logs for a task + "200": + description: | + Success. The response body contains an `events` list with logs for the task. + Each log event `message` contains detail about the event. + If a task run fails, InfluxDB logs an event with the reason for the failure. content: application/json: schema: - $ref: '#/components/schemas/Logs' + $ref: "#/components/schemas/Logs" + examples: + taskSuccess: + summary: Events for a successful task run. + value: + events: + - runID: 09b070dadaa7d000 + time: "2022-07-18T14:46:07.101231Z" + message: 'Started task from script: "option task = {name: \"task1\", every: 30m} from(bucket: \"iot_center\") |> range(start: -90d) |> filter(fn: (r) => r._measurement == \"environment\") |> aggregateWindow(every: 1h, fn: mean)"' + - runID: 09b070dadaa7d000 + time: "2022-07-18T14:46:07.242859Z" + message: Completed(success) + taskFailure: + summary: Events for a failed task run. + value: + events: + - runID: 09a946fc3167d000 + time: "2022-07-13T07:06:54.198167Z" + message: 'Started task from script: "option task = {name: \"test task\", every: 3d, offset: 0s}"' + - runID: 09a946fc3167d000 + time: "2022-07-13T07:07:13.104037Z" + message: Completed(failed) + - runID: 09a946fc3167d000 + time: "2022-07-13T08:24:37.115323Z" + message: 'error exhausting result iterator: error in query specification while starting program: this Flux script returns no streaming data. Consider adding a "yield" or invoking streaming functions directly, without performing an assignment' + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/runs/{runID}/logs': + $ref: "#/components/responses/GeneralServerError" + "/tasks/{taskID}/runs/{runID}/logs": get: operationId: GetTasksIDRunsIDLogs tags: - Tasks summary: Retrieve all logs for a run + description: | + Retrieves all logs for a task run. + A log is a list of run events with `runID`, `time`, and `message` properties. + + Use this endpoint to help analyze task performance and troubleshoot failed task runs. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: type: string required: true - description: ID of task to get logs for. + description: The ID of the task to get logs for. - in: path name: runID schema: type: string required: true - description: ID of run to get logs for. + description: The ID of the run to get logs for. responses: - '200': - description: All logs for a run + "200": + description: | + Success. The response body contains an `events` list with logs for the task run. + Each log event `message` contains detail about the event. + If a run fails, InfluxDB logs an event with the reason for the failure. content: application/json: schema: - $ref: '#/components/schemas/Logs' + $ref: "#/components/schemas/Logs" + examples: + taskSuccess: + summary: Events for a successful task run. + value: + events: + - runID: 09b070dadaa7d000 + time: "2022-07-18T14:46:07.101231Z" + message: 'Started task from script: "option task = {name: \"task1\", every: 30m} from(bucket: \"iot_center\") |> range(start: -90d) |> filter(fn: (r) => r._measurement == \"environment\") |> aggregateWindow(every: 1h, fn: mean)"' + - runID: 09b070dadaa7d000 + time: "2022-07-18T14:46:07.242859Z" + message: Completed(success) + taskFailure: + summary: Events for a failed task. + value: + events: + - runID: 09a946fc3167d000 + time: "2022-07-13T07:06:54.198167Z" + message: 'Started task from script: "option task = {name: \"test task\", every: 3d, offset: 0s}"' + - runID: 09a946fc3167d000 + time: "2022-07-13T07:07:13.104037Z" + message: Completed(failed) + - runID: 09a946fc3167d000 + time: "2022-07-13T08:24:37.115323Z" + message: 'error exhausting result iterator: error in query specification while starting program: this Flux script returns no streaming data. Consider adding a "yield" or invoking streaming functions directly, without performing an assignment' + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/labels': + $ref: "#/components/responses/GeneralServerError" + "/tasks/{taskID}/labels": get: operationId: GetTasksIDLabels tags: - Tasks - summary: List all labels for a task + summary: List labels for a task + description: | + Retrieves a list of all labels for a task. + + Labels may be used for grouping and filtering tasks. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: type: string required: true - description: The task ID. + description: The ID of the task to retrieve labels for. responses: - '200': - description: A list of all labels for a task + "200": + description: Success. The response body contains a list of all labels for the task. content: application/json: schema: - $ref: '#/components/schemas/LabelsResponse' + $ref: "#/components/schemas/LabelsResponse" + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" post: operationId: PostTasksIDLabels tags: - Tasks summary: Add a label to a task + description: | + Adds a label to a task. + + Use this endpoint to add a label that you can use to filter tasks in the InfluxDB UI. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: type: string required: true - description: The task ID. + description: The ID of the task to label. requestBody: - description: Label to add + description: An object that contains a _`labelID`_ to add to the task. required: true content: application/json: schema: - $ref: '#/components/schemas/LabelMapping' + $ref: "#/components/schemas/LabelMapping" responses: - '201': - description: A list of all labels for a task + "201": + description: Success. The response body contains a list of all labels for the task. content: application/json: schema: - $ref: '#/components/schemas/LabelResponse' + $ref: "#/components/schemas/LabelResponse" + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/labels/{labelID}': + $ref: "#/components/responses/GeneralServerError" + "/tasks/{taskID}/labels/{labelID}": delete: operationId: DeleteTasksIDLabelsID tags: - Tasks summary: Delete a label from a task + description: | + Deletes a label from a task. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: type: string required: true - description: The task ID. + description: The ID of the task to delete the label from. - in: path name: labelID schema: type: string required: true - description: The label ID. + description: The ID of the label to delete. responses: - '204': - description: Delete has been accepted - '404': - description: Task not found - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + "204": + description: Success. The label is deleted. + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" /flags: get: operationId: GetFlags @@ -3934,20 +6675,20 @@ paths: - Users summary: Return the feature flags for the currently authenticated user parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '200': + "200": description: Feature flags for the currently authenticated user content: application/json: schema: - $ref: '#/components/schemas/Flags' + $ref: "#/components/schemas/Flags" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /me: get: operationId: GetMe @@ -3955,54 +6696,67 @@ paths: - Users summary: Retrieve the currently authenticated user parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '200': - description: The currently authenticated user. + "200": + description: Success. The response body contains the currently authenticated user. content: application/json: schema: - $ref: '#/components/schemas/UserResponse' + $ref: "#/components/schemas/UserResponse" + "401": + $ref: "#/components/responses/AuthorizationError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" /me/password: put: operationId: PutMePassword tags: - Users summary: Update a password + description: | + #### InfluxDB Cloud + + InfluxDB Cloud doesn't support changing user passwords through the API. + Use the InfluxDB Cloud user interface to update your password. security: - BasicAuthentication: [] parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: - description: New password + description: The new password. required: true content: application/json: schema: - $ref: '#/components/schemas/PasswordResetBody' + $ref: "#/components/schemas/PasswordResetBody" responses: - '204': - description: Password successfully updated + "204": + description: Success. The password was updated. + "400": + description: | + Bad request. + InfluxDB Cloud doesn't support changing passwords through the API and always responds with this status. default: description: Unsuccessful authentication content: application/json: schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/members': + $ref: "#/components/schemas/Error" + "/tasks/{taskID}/members": get: operationId: GetTasksIDMembers + deprecated: true tags: - Tasks summary: List all task members + description: | + **Deprecated**: Tasks don't use `owner` and `member` roles. + Use [`/api/v2/authorizations`](#tag/Authorizations) to assign user permissions. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: @@ -4010,25 +6764,34 @@ paths: required: true description: The task ID. responses: - '200': - description: A list of users who have member privileges for a task + "200": + description: | + Success. The response body contains a list of `users` that have + the `member` role for a task. content: application/json: schema: - $ref: '#/components/schemas/ResourceMembers' + $ref: "#/components/schemas/ResourceMembers" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostTasksIDMembers + deprecated: true tags: - Tasks summary: Add a member to a task + description: | + **Deprecated**: Tasks don't use `owner` and `member` roles. + Use [`/api/v2/authorizations`](#tag/Authorizations) to assign user permissions. + + Adds a user to members of a task and returns the newly created member with + role and user detail. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: @@ -4036,33 +6799,37 @@ paths: required: true description: The task ID. requestBody: - description: User to add as member + description: A user to add as a member of the task. required: true content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': - description: Added to task members + "201": + description: Created. The user is added to task members. content: application/json: schema: - $ref: '#/components/schemas/ResourceMember' + $ref: "#/components/schemas/ResourceMember" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/members/{userID}': + $ref: "#/components/schemas/Error" + "/tasks/{taskID}/members/{userID}": delete: operationId: DeleteTasksIDMembersID + deprecated: true tags: - Tasks summary: Remove a member from a task + description: | + **Deprecated**: Tasks don't use `owner` and `member` roles. + Use [`/api/v2/authorizations`](#tag/Authorizations) to assign user permissions. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -4076,48 +6843,83 @@ paths: required: true description: The task ID. responses: - '204': + "204": description: Member removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/owners': + $ref: "#/components/schemas/Error" + "/tasks/{taskID}/owners": get: operationId: GetTasksIDOwners + deprecated: true tags: - Tasks summary: List all owners of a task + description: | + **Deprecated**: Tasks don't use `owner` and `member` roles. + Use [`/api/v2/authorizations`](#tag/Authorizations) to assign user permissions. + + Retrieves all users that have owner permission for a task. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: type: string required: true - description: The task ID. + description: The ID of the task to retrieve owners for. responses: - '200': - description: A list of users who have owner privileges for a task + "200": + description: | + Success. + The response contains a list of `users` that have the `owner` role for the task. + + If the task has no owners, the response contains an empty `users` array. + content: + application/json: + schema: + $ref: "#/components/schemas/ResourceOwners" + "401": + $ref: "#/components/responses/AuthorizationError" + "422": + description: | + Unprocessable entity. + + The error may indicate one of the following problems: + + - The request body isn't valid--the request is well-formed, but InfluxDB can't process it due to semantic errors. + - You passed a parameter combination that InfluxDB doesn't support. content: application/json: schema: - $ref: '#/components/schemas/ResourceOwners' + $ref: "#/components/schemas/Error" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostTasksIDOwners + deprecated: true tags: - Tasks - summary: Add an owner to a task + summary: Add an owner for a task + description: | + **Deprecated**: Tasks don't use `owner` and `member` roles. + Use [`/api/v2/authorizations`](#tag/Authorizations) to assign user permissions. + + Assigns a task `owner` role to a user. + + Use this endpoint to create a _resource owner_ for the task. + A _resource owner_ is a user with `role: owner` for a specific resource. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: taskID schema: @@ -4125,33 +6927,67 @@ paths: required: true description: The task ID. requestBody: - description: User to add as owner + description: A user to add as an owner of the task. required: true content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': - description: Added to task owners + "201": + description: | + Created. The task `owner` role is assigned to the user. + The response body contains the resource owner with + role and user detail. content: application/json: schema: - $ref: '#/components/schemas/ResourceOwner' + $ref: "#/components/schemas/ResourceOwner" + examples: + createdOwner: + summary: User has the owner role for the resource + value: + role: owner + links: + logs: /api/v2/users/0772396d1f411000/logs + self: /api/v2/users/0772396d1f411000 + id: 0772396d1f411000 + name: USER_NAME + status: active + "401": + $ref: "#/components/responses/AuthorizationError" + "422": + description: | + Unprocessable entity. + + The error may indicate one of the following problems: + + - The request body isn't valid--the request is well-formed, but InfluxDB can't process it due to semantic errors. + - You passed a parameter combination that InfluxDB doesn't support. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/tasks/{taskID}/owners/{userID}': + $ref: "#/components/schemas/Error" + "/tasks/{taskID}/owners/{userID}": delete: operationId: DeleteTasksIDOwnersID + deprecated: true tags: - Tasks summary: Remove an owner from a task + description: | + **Deprecated**: Tasks don't use `owner` and `member` roles. + Use [`/api/v2/authorizations`](#tag/Authorizations) to assign user permissions. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -4165,24 +7001,30 @@ paths: required: true description: The task ID. responses: - '204': + "204": description: Owner removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/users/{userID}/password': + $ref: "#/components/schemas/Error" + "/users/{userID}/password": post: operationId: PostUsersIDPassword tags: + - Security and access endpoints - Users summary: Update a password + description: | + #### InfluxDB Cloud + + InfluxDB Cloud doesn't support changing user passwords through the API. + Use the InfluxDB Cloud user interface to update your password. security: - BasicAuthentication: [] parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -4195,16 +7037,20 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PasswordResetBody' + $ref: "#/components/schemas/PasswordResetBody" responses: - '204': + "204": description: Password successfully updated + "400": + description: | + Bad request. + InfluxDB Cloud doesn't support changing passwords through the API and always responds with this status. default: description: Unsuccessful authentication content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /checks: get: operationId: GetChecks @@ -4212,9 +7058,9 @@ paths: - Checks summary: List all checks parameters: - - $ref: '#/components/parameters/TraceSpan' - - $ref: '#/components/parameters/Offset' - - $ref: '#/components/parameters/Limit' + - $ref: "#/components/parameters/TraceSpan" + - $ref: "#/components/parameters/Offset" + - $ref: "#/components/parameters/Limit" - in: query name: orgID required: true @@ -4222,18 +7068,18 @@ paths: schema: type: string responses: - '200': + "200": description: A list of checks content: application/json: schema: - $ref: '#/components/schemas/Checks' + $ref: "#/components/schemas/Checks" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: CreateCheck tags: @@ -4245,28 +7091,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PostCheck' + $ref: "#/components/schemas/PostCheck" responses: - '201': + "201": description: Check created content: application/json: schema: - $ref: '#/components/schemas/Check' + $ref: "#/components/schemas/Check" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/checks/{checkID}': + $ref: "#/components/schemas/Error" + "/checks/{checkID}": get: operationId: GetChecksID tags: - Checks summary: Retrieve a check parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: checkID schema: @@ -4274,18 +7120,18 @@ paths: required: true description: The check ID. responses: - '200': + "200": description: The check requested content: application/json: schema: - $ref: '#/components/schemas/Check' + $ref: "#/components/schemas/Check" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" put: operationId: PutChecksID tags: @@ -4297,9 +7143,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Check' + $ref: "#/components/schemas/Check" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: checkID schema: @@ -4307,24 +7153,24 @@ paths: required: true description: The check ID. responses: - '200': + "200": description: An updated check content: application/json: schema: - $ref: '#/components/schemas/Check' - '404': + $ref: "#/components/schemas/Check" + "404": description: The check was not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchChecksID tags: @@ -4336,9 +7182,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CheckPatch' + $ref: "#/components/schemas/CheckPatch" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: checkID schema: @@ -4346,31 +7192,31 @@ paths: required: true description: The check ID. responses: - '200': + "200": description: An updated check content: application/json: schema: - $ref: '#/components/schemas/Check' - '404': + $ref: "#/components/schemas/Check" + "404": description: The check was not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" delete: operationId: DeleteChecksID tags: - Checks summary: Delete a check parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: checkID schema: @@ -4378,28 +7224,28 @@ paths: required: true description: The check ID. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: The check was not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/checks/{checkID}/labels': + $ref: "#/components/schemas/Error" + "/checks/{checkID}/labels": get: operationId: GetChecksIDLabels tags: - Checks summary: List all labels for a check parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: checkID schema: @@ -4407,25 +7253,25 @@ paths: required: true description: The check ID. responses: - '200': + "200": description: A list of all labels for a check content: application/json: schema: - $ref: '#/components/schemas/LabelsResponse' + $ref: "#/components/schemas/LabelsResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostChecksIDLabels tags: - Checks summary: Add a label to a check parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: checkID schema: @@ -4438,28 +7284,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LabelMapping' + $ref: "#/components/schemas/LabelMapping" responses: - '201': + "201": description: The label was added to the check content: application/json: schema: - $ref: '#/components/schemas/LabelResponse' + $ref: "#/components/schemas/LabelResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/checks/{checkID}/labels/{labelID}': + $ref: "#/components/schemas/Error" + "/checks/{checkID}/labels/{labelID}": delete: operationId: DeleteChecksIDLabelsID tags: - Checks summary: Delete label from a check parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: checkID schema: @@ -4473,20 +7319,20 @@ paths: required: true description: The ID of the label to delete. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: Check or label not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /notificationRules: get: operationId: GetNotificationRules @@ -4494,9 +7340,9 @@ paths: - NotificationRules summary: List all notification rules parameters: - - $ref: '#/components/parameters/TraceSpan' - - $ref: '#/components/parameters/Offset' - - $ref: '#/components/parameters/Limit' + - $ref: "#/components/parameters/TraceSpan" + - $ref: "#/components/parameters/Offset" + - $ref: "#/components/parameters/Limit" - in: query name: orgID required: true @@ -4513,21 +7359,21 @@ paths: description: Only return notification rules that "would match" statuses which contain the tag key value pairs provided. schema: type: string - pattern: '^[a-zA-Z0-9_]+:[a-zA-Z0-9_]+$' - example: 'env:prod' + pattern: "^[a-zA-Z0-9_]+:[a-zA-Z0-9_]+$" + example: "env:prod" responses: - '200': + "200": description: A list of notification rules content: application/json: schema: - $ref: '#/components/schemas/NotificationRules' + $ref: "#/components/schemas/NotificationRules" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: CreateNotificationRule tags: @@ -4539,28 +7385,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PostNotificationRule' + $ref: "#/components/schemas/PostNotificationRule" responses: - '201': + "201": description: Notification rule created content: application/json: schema: - $ref: '#/components/schemas/NotificationRule' + $ref: "#/components/schemas/NotificationRule" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/checks/{checkID}/query': + $ref: "#/components/schemas/Error" + "/checks/{checkID}/query": get: operationId: GetChecksIDQuery tags: - Checks summary: Retrieve a check query parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: checkID schema: @@ -4568,38 +7414,38 @@ paths: required: true description: The check ID. responses: - '200': + "200": description: The check query requested content: application/json: schema: - $ref: '#/components/schemas/FluxResponse' - '400': + $ref: "#/components/schemas/FluxResponse" + "400": description: Invalid request content: application/json: schema: - $ref: '#/components/schemas/Error' - '404': + $ref: "#/components/schemas/Error" + "404": description: Check not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/notificationRules/{ruleID}': + $ref: "#/components/schemas/Error" + "/notificationRules/{ruleID}": get: operationId: GetNotificationRulesID tags: - NotificationRules summary: Retrieve a notification rule parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: ruleID schema: @@ -4607,18 +7453,18 @@ paths: required: true description: The notification rule ID. responses: - '200': + "200": description: The notification rule requested content: application/json: schema: - $ref: '#/components/schemas/NotificationRule' + $ref: "#/components/schemas/NotificationRule" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" put: operationId: PutNotificationRulesID tags: @@ -4630,9 +7476,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/NotificationRule' + $ref: "#/components/schemas/NotificationRule" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: ruleID schema: @@ -4640,24 +7486,24 @@ paths: required: true description: The notification rule ID. responses: - '200': + "200": description: An updated notification rule content: application/json: schema: - $ref: '#/components/schemas/NotificationRule' - '404': + $ref: "#/components/schemas/NotificationRule" + "404": description: The notification rule was not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchNotificationRulesID tags: @@ -4669,9 +7515,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/NotificationRuleUpdate' + $ref: "#/components/schemas/NotificationRuleUpdate" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: ruleID schema: @@ -4679,31 +7525,31 @@ paths: required: true description: The notification rule ID. responses: - '200': + "200": description: An updated notification rule content: application/json: schema: - $ref: '#/components/schemas/NotificationRule' - '404': + $ref: "#/components/schemas/NotificationRule" + "404": description: The notification rule was not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" delete: operationId: DeleteNotificationRulesID tags: - NotificationRules summary: Delete a notification rule parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: ruleID schema: @@ -4711,28 +7557,28 @@ paths: required: true description: The notification rule ID. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: The check was not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/notificationRules/{ruleID}/labels': + $ref: "#/components/schemas/Error" + "/notificationRules/{ruleID}/labels": get: operationId: GetNotificationRulesIDLabels tags: - NotificationRules summary: List all labels for a notification rule parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: ruleID schema: @@ -4740,25 +7586,25 @@ paths: required: true description: The notification rule ID. responses: - '200': + "200": description: A list of all labels for a notification rule content: application/json: schema: - $ref: '#/components/schemas/LabelsResponse' + $ref: "#/components/schemas/LabelsResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostNotificationRuleIDLabels tags: - NotificationRules summary: Add a label to a notification rule parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: ruleID schema: @@ -4771,28 +7617,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LabelMapping' + $ref: "#/components/schemas/LabelMapping" responses: - '201': + "201": description: The label was added to the notification rule content: application/json: schema: - $ref: '#/components/schemas/LabelResponse' + $ref: "#/components/schemas/LabelResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/notificationRules/{ruleID}/labels/{labelID}': + $ref: "#/components/schemas/Error" + "/notificationRules/{ruleID}/labels/{labelID}": delete: operationId: DeleteNotificationRulesIDLabelsID tags: - NotificationRules summary: Delete label from a notification rule parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: ruleID schema: @@ -4806,28 +7652,28 @@ paths: required: true description: The ID of the label to delete. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: Rule or label not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/notificationRules/{ruleID}/query': + $ref: "#/components/schemas/Error" + "/notificationRules/{ruleID}/query": get: operationId: GetNotificationRulesIDQuery tags: - Rules summary: Retrieve a notification rule query parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: ruleID schema: @@ -4835,30 +7681,30 @@ paths: required: true description: The notification rule ID. responses: - '200': + "200": description: The notification rule query requested content: application/json: schema: - $ref: '#/components/schemas/FluxResponse' - '400': + $ref: "#/components/schemas/FluxResponse" + "400": description: Invalid request content: application/json: schema: - $ref: '#/components/schemas/Error' - '404': + $ref: "#/components/schemas/Error" + "404": description: Notification rule not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /notificationEndpoints: get: operationId: GetNotificationEndpoints @@ -4866,9 +7712,9 @@ paths: - NotificationEndpoints summary: List all notification endpoints parameters: - - $ref: '#/components/parameters/TraceSpan' - - $ref: '#/components/parameters/Offset' - - $ref: '#/components/parameters/Limit' + - $ref: "#/components/parameters/TraceSpan" + - $ref: "#/components/parameters/Offset" + - $ref: "#/components/parameters/Limit" - in: query name: orgID required: true @@ -4876,18 +7722,18 @@ paths: schema: type: string responses: - '200': + "200": description: A list of notification endpoints content: application/json: schema: - $ref: '#/components/schemas/NotificationEndpoints' + $ref: "#/components/schemas/NotificationEndpoints" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: CreateNotificationEndpoint tags: @@ -4899,28 +7745,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PostNotificationEndpoint' + $ref: "#/components/schemas/PostNotificationEndpoint" responses: - '201': + "201": description: Notification endpoint created content: application/json: schema: - $ref: '#/components/schemas/NotificationEndpoint' + $ref: "#/components/schemas/NotificationEndpoint" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/notificationEndpoints/{endpointID}': + $ref: "#/components/schemas/Error" + "/notificationEndpoints/{endpointID}": get: operationId: GetNotificationEndpointsID tags: - NotificationEndpoints summary: Retrieve a notification endpoint parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: endpointID schema: @@ -4928,18 +7774,18 @@ paths: required: true description: The notification endpoint ID. responses: - '200': + "200": description: The notification endpoint requested content: application/json: schema: - $ref: '#/components/schemas/NotificationEndpoint' + $ref: "#/components/schemas/NotificationEndpoint" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" put: operationId: PutNotificationEndpointsID tags: @@ -4951,9 +7797,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/NotificationEndpoint' + $ref: "#/components/schemas/NotificationEndpoint" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: endpointID schema: @@ -4961,24 +7807,24 @@ paths: required: true description: The notification endpoint ID. responses: - '200': + "200": description: An updated notification endpoint content: application/json: schema: - $ref: '#/components/schemas/NotificationEndpoint' - '404': + $ref: "#/components/schemas/NotificationEndpoint" + "404": description: The notification endpoint was not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchNotificationEndpointsID tags: @@ -4990,9 +7836,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/NotificationEndpointUpdate' + $ref: "#/components/schemas/NotificationEndpointUpdate" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: endpointID schema: @@ -5000,31 +7846,31 @@ paths: required: true description: The notification endpoint ID. responses: - '200': + "200": description: An updated notification endpoint content: application/json: schema: - $ref: '#/components/schemas/NotificationEndpoint' - '404': + $ref: "#/components/schemas/NotificationEndpoint" + "404": description: The notification endpoint was not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" delete: operationId: DeleteNotificationEndpointsID tags: - NotificationEndpoints summary: Delete a notification endpoint parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: endpointID schema: @@ -5032,28 +7878,28 @@ paths: required: true description: The notification endpoint ID. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: The endpoint was not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/notificationEndpoints/{endpointID}/labels': + $ref: "#/components/schemas/Error" + "/notificationEndpoints/{endpointID}/labels": get: operationId: GetNotificationEndpointsIDLabels tags: - NotificationEndpoints summary: List all labels for a notification endpoint parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: endpointID schema: @@ -5061,25 +7907,25 @@ paths: required: true description: The notification endpoint ID. responses: - '200': + "200": description: A list of all labels for a notification endpoint content: application/json: schema: - $ref: '#/components/schemas/LabelsResponse' + $ref: "#/components/schemas/LabelsResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostNotificationEndpointIDLabels tags: - NotificationEndpoints summary: Add a label to a notification endpoint parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: endpointID schema: @@ -5092,104 +7938,853 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LabelMapping' + $ref: "#/components/schemas/LabelMapping" responses: - '201': + "201": description: The label was added to the notification endpoint content: - application/json: + application/json: + schema: + $ref: "#/components/schemas/LabelResponse" + default: + description: Unexpected error + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + "/notificationEndpoints/{endpointID}/labels/{labelID}": + delete: + operationId: DeleteNotificationEndpointsIDLabelsID + tags: + - NotificationEndpoints + summary: Delete a label from a notification endpoint + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: path + name: endpointID + schema: + type: string + required: true + description: The notification endpoint ID. + - in: path + name: labelID + schema: + type: string + required: true + description: The ID of the label to delete. + responses: + "204": + description: Delete has been accepted + "404": + description: Endpoint or label not found + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + default: + description: Unexpected error + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + /debug/pprof/all: + get: + operationId: GetDebugPprofAllProfiles + tags: + - Debug + - System information endpoints + summary: Retrieve all runtime profiles + description: | + Collects samples and returns reports for the following [Go runtime profiles](https://pkg.go.dev/runtime/pprof): + + - **allocs**: All past memory allocations + - **block**: Stack traces that led to blocking on synchronization primitives + - **cpu**: (Optional) Program counters sampled from the executing stack. + Include by passing the `cpu` query parameter with a [duration](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#duration) value. + Equivalent to the report from [`GET /debug/pprof/profile?seconds=NUMBER_OF_SECONDS`](#operation/GetDebugPprofProfile). + - **goroutine**: All current goroutines + - **heap**: Memory allocations for live objects + - **mutex**: Holders of contended mutexes + - **threadcreate**: Stack traces that led to the creation of new OS threads + x-codeSamples: + - lang: Shell + label: "Shell: Get all profiles" + source: | + # Download and extract a `tar.gz` of all profiles after 10 seconds of CPU sampling. + + curl "http://localhost:8086/debug/pprof/all?cpu=10s" | tar -xz + + # x profiles/cpu.pb.gz + # x profiles/goroutine.pb.gz + # x profiles/block.pb.gz + # x profiles/mutex.pb.gz + # x profiles/heap.pb.gz + # x profiles/allocs.pb.gz + # x profiles/threadcreate.pb.gz + + # Analyze a profile. + + go tool pprof profiles/heap.pb.gz + - lang: Shell + label: "Shell: Get all profiles except CPU" + source: | + # Download and extract a `tar.gz` of all profiles except CPU. + + curl http://localhost:8086/debug/pprof/all | tar -xz + + # x profiles/goroutine.pb.gz + # x profiles/block.pb.gz + # x profiles/mutex.pb.gz + # x profiles/heap.pb.gz + # x profiles/allocs.pb.gz + # x profiles/threadcreate.pb.gz + + # Analyze a profile. + + go tool pprof profiles/heap.pb.gz + servers: + - url: "" + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: query + name: cpu + description: | + Collects and returns CPU profiling data for the specified [duration](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#duration). + schema: + type: string + format: duration + externalDocs: + description: InfluxDB duration + url: "https://docs.influxdata.com/influxdb/latest/reference/glossary/#duration" + responses: + "200": + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) reports. + content: + application/octet-stream: + schema: + description: | + GZIP compressed TAR file (`.tar.gz`) that contains + [Go runtime profile](https://pkg.go.dev/runtime/pprof) reports. + type: string + format: binary + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + default: + description: Unexpected error + $ref: "#/components/responses/GeneralServerError" + /debug/pprof/allocs: + get: + operationId: GetDebugPprofAllocs + tags: + - Debug + - System information endpoints + summary: Retrieve the memory allocations runtime profile + description: | + Returns a [Go runtime profile](https://pkg.go.dev/runtime/pprof) report of + all past memory allocations. + **allocs** is the same as the **heap** profile, + but changes the default [pprof](https://pkg.go.dev/runtime/pprof) + display to __-alloc_space__, + the total number of bytes allocated since the program began (including garbage-collected bytes). + x-codeSamples: + - lang: Shell + label: "Shell: go tool pprof" + source: | + # Analyze the profile in interactive mode. + + go tool pprof http://localhost:8086/debug/pprof/allocs + + # `pprof` returns the following prompt: + # Entering interactive mode (type "help" for commands, "o" for options) + # (pprof) + + # At the prompt, get the top N memory allocations. + + (pprof) top10 + servers: + - url: "" + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: query + name: debug + description: | + - `0`: (Default) Return the report as a gzip-compressed protocol buffer. + - `1`: Return a response body with the report formatted as human-readable text. + The report contains comments that translate addresses to function names and line numbers for debugging. + + `debug=1` is mutually exclusive with the `seconds` query parameter. + schema: + type: integer + format: int64 + enum: + - 0 + - 1 + - in: query + name: seconds + description: | + Number of seconds to collect statistics. + + `seconds` is mutually exclusive with `debug=1`. + schema: + type: string + format: int64 + responses: + "200": + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report compatible + with [pprof](https://github.com/google/pprof) analysis and visualization tools. + If debug is enabled (`?debug=1`), response body contains a human-readable profile. + content: + application/octet-stream: + schema: + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report in protocol buffer format. + type: string + format: binary + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + text/plain: + schema: + description: | + Response body contains a report formatted in plain text. + The report contains comments that translate addresses to + function names and line numbers for debugging. + type: string + format: Go runtime profile + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + default: + description: Unexpected error + $ref: "#/components/responses/GeneralServerError" + /debug/pprof/block: + get: + operationId: GetDebugPprofBlock + tags: + - Debug + - System information endpoints + summary: Retrieve the block runtime profile + description: | + Collects samples and returns a [Go runtime profile](https://pkg.go.dev/runtime/pprof) + report of stack traces that led to blocking on synchronization primitives. + x-codeSamples: + - lang: Shell + label: "Shell: go tool pprof" + source: | + # Analyze the profile in interactive mode. + + go tool pprof http://localhost:8086/debug/pprof/block + + # `pprof` returns the following prompt: + # Entering interactive mode (type "help" for commands, "o" for options) + # (pprof) + + # At the prompt, get the top N entries. + + (pprof) top10 + servers: + - url: "" + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: query + name: debug + description: | + - `0`: (Default) Return the report as a gzip-compressed protocol buffer. + - `1`: Return a response body with the report formatted as human-readable text. + The report contains comments that translate addresses to function names and line numbers for debugging. + + `debug=1` is mutually exclusive with the `seconds` query parameter. + schema: + type: integer + format: int64 + enum: + - 0 + - 1 + - in: query + name: seconds + description: | + Number of seconds to collect statistics. + + `seconds` is mutually exclusive with `debug=1`. + schema: + type: string + format: int64 + responses: + "200": + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report compatible + with [pprof](https://github.com/google/pprof) analysis and visualization tools. + If debug is enabled (`?debug=1`), response body contains a human-readable profile. + content: + application/octet-stream: + schema: + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report in protocol buffer format. + type: string + format: binary + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + text/plain: + schema: + description: | + Response body contains a report formatted in plain text. + The report contains comments that translate addresses to + function names and line numbers for debugging. + type: string + format: Go runtime profile + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + default: + description: Unexpected error + $ref: "#/components/responses/GeneralServerError" + /debug/pprof/cmdline: + get: + operationId: GetDebugPprofCmdline + tags: + - Debug + - System information endpoints + summary: Retrieve the command line invocation + description: | + Returns the command line that invoked InfluxDB. + servers: + - url: "" + parameters: + - $ref: "#/components/parameters/TraceSpan" + responses: + "200": + description: Command line invocation. + content: + text/plain: + schema: + type: string + format: Command line + default: + description: Unexpected error + $ref: "#/components/responses/GeneralServerError" + /debug/pprof/goroutine: + get: + operationId: GetDebugPprofGoroutine + tags: + - Debug + - System information endpoints + summary: Retrieve the goroutines runtime profile + description: | + Collects statistics and returns a [Go runtime profile](https://pkg.go.dev/runtime/pprof) + report of all current goroutines. + x-codeSamples: + - lang: Shell + label: "Shell: go tool pprof" + source: | + # Analyze the profile in interactive mode. + + go tool pprof http://localhost:8086/debug/pprof/goroutine + + # `pprof` returns the following prompt: + # Entering interactive mode (type "help" for commands, "o" for options) + # (pprof) + + # At the prompt, get the top N entries. + + (pprof) top10 + servers: + - url: "" + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: query + name: debug + description: | + - `0`: (Default) Return the report as a gzip-compressed protocol buffer. + - `1`: Return a response body with the report formatted as + human-readable text with comments that translate addresses to + function names and line numbers for debugging. + + `debug=1` is mutually exclusive with the `seconds` query parameter. + schema: + type: integer + format: int64 + enum: + - 0 + - 1 + - in: query + name: seconds + description: | + Number of seconds to collect statistics. + + `seconds` is mutually exclusive with `debug=1`. + schema: + type: string + format: int64 + responses: + "200": + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report compatible + with [pprof](https://github.com/google/pprof) analysis and visualization tools. + If debug is enabled (`?debug=1`), response body contains a human-readable profile. + content: + application/octet-stream: + schema: + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report in protocol buffer format. + type: string + format: binary + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + text/plain: + schema: + description: | + Response body contains a report formatted in plain text. + The report contains comments that translate addresses to + function names and line numbers for debugging. + type: string + format: Go runtime profile + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + default: + description: Unexpected error + $ref: "#/components/responses/GeneralServerError" + /debug/pprof/heap: + get: + operationId: GetDebugPprofHeap + tags: + - Debug + - System information endpoints + summary: Retrieve the heap runtime profile + description: | + Collects statistics and returns a [Go runtime profile](https://pkg.go.dev/runtime/pprof) + report of memory allocations for live objects. + + To run **garbage collection** before sampling, + pass the `gc` query parameter with a value of `1`. + x-codeSamples: + - lang: Shell + label: "Shell: go tool pprof" + source: | + # Analyze the profile in interactive mode. + + go tool pprof http://localhost:8086/debug/pprof/heap + + # `pprof` returns the following prompt: + # Entering interactive mode (type "help" for commands, "o" for options) + # (pprof) + + # At the prompt, get the top N memory-intensive nodes. + + (pprof) top10 + + # pprof displays the list: + # Showing nodes accounting for 142.46MB, 85.43% of 166.75MB total + # Dropped 895 nodes (cum <= 0.83MB) + # Showing top 10 nodes out of 143 + servers: + - url: "" + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: query + name: debug + description: | + - `0`: (Default) Return the report as a gzip-compressed protocol buffer. + - `1`: Return a response body with the report formatted as human-readable text. + The report contains comments that translate addresses to function names and line numbers for debugging. + + `debug=1` is mutually exclusive with the `seconds` query parameter. + schema: + type: integer + format: int64 + enum: + - 0 + - 1 + - in: query + name: seconds + description: | + Number of seconds to collect statistics. + + `seconds` is mutually exclusive with `debug=1`. + schema: + type: string + format: int64 + - in: query + name: gc + description: | + - `0`: (Default) don't force garbage collection before sampling. + - `1`: Force garbage collection before sampling. + schema: + type: integer + format: int64 + enum: + - 0 + - 1 + responses: + "200": + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report compatible + with [pprof](https://github.com/google/pprof) analysis and visualization tools. + If debug is enabled (`?debug=1`), response body contains a human-readable profile. + content: + application/octet-stream: + schema: + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report in protocol buffer format. + type: string + format: binary + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + text/plain: + schema: + description: | + Response body contains a report formatted in plain text. + The report contains comments that translate addresses to + function names and line numbers for debugging. + type: string + format: Go runtime profile + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + examples: + profileDebugResponse: + summary: Profile in plain text + value: "heap profile: 12431: 137356528 [149885081: 846795139976] @ heap/8192\n23: 17711104 [46: 35422208] @ 0x4c6df65 0x4ce03ec 0x4cdf3c5 0x4c6f4db 0x4c9edbc 0x4bdefb3 0x4bf822a 0x567d158 0x567ced9 0x406c0a1\n#\t0x4c6df64\tgithub.com/influxdata/influxdb/v2/tsdb/engine/tsm1.(*entry).add+0x1a4\t\t\t\t\t/Users/me/github/influxdb/tsdb/engine/tsm1/cache.go:97\n#\t0x4ce03eb\tgithub.com/influxdata/influxdb/v2/tsdb/engine/tsm1.(*partition).write+0x2ab\t\t\t\t/Users/me/github/influxdb/tsdb/engine/tsm1/ring.go:229\n#\t0x4cdf3c4\tgithub.com/influxdata/influxdb/v2/tsdb/engine/tsm1.(*ring).write+0xa4\t\t\t\t\t/Users/me/github/influxdb/tsdb/engine/tsm1/ring.go:95\n#\t0x4c6f4da\tgithub.com/influxdata/influxdb/v2/tsdb/engine/tsm1.(*Cache).WriteMulti+0x31a\t\t\t\t/Users/me/github/influxdb/tsdb/engine/tsm1/cache.go:343\n" + default: + description: Unexpected error + $ref: "#/components/responses/GeneralServerError" + /debug/pprof/mutex: + get: + operationId: GetDebugPprofMutex + tags: + - Debug + - System information endpoints + summary: Retrieve the mutual exclusion (mutex) runtime profile + description: | + Collects statistics and returns a [Go runtime profile](https://pkg.go.dev/runtime/pprof) report of + lock contentions. + The profile contains stack traces of holders of contended mutual exclusions (mutexes). + x-codeSamples: + - lang: Shell + label: "Shell: go tool pprof" + source: | + # Analyze the profile in interactive mode. + + go tool pprof http://localhost:8086/debug/pprof/mutex + + # `pprof` returns the following prompt: + # Entering interactive mode (type "help" for commands, "o" for options) + # (pprof) + + # At the prompt, get the top N entries. + + (pprof) top10 + servers: + - url: "" + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: query + name: debug + description: | + - `0`: (Default) Return the report as a gzip-compressed protocol buffer. + - `1`: Return a response body with the report formatted as human-readable text. + The report contains comments that translate addresses to function names and line numbers for debugging. + + `debug=1` is mutually exclusive with the `seconds` query parameter. + schema: + type: integer + format: int64 + enum: + - 0 + - 1 + - in: query + name: seconds + description: | + Number of seconds to collect statistics. + + `seconds` is mutually exclusive with `debug=1`. + schema: + type: string + format: int64 + responses: + "200": + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report compatible + with [pprof](https://github.com/google/pprof) analysis and visualization tools. + If debug is enabled (`?debug=1`), response body contains a human-readable profile. + content: + application/octet-stream: + schema: + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report in protocol buffer format. + type: string + format: binary + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + text/plain: + schema: + description: | + Response body contains a report formatted in plain text. + The report contains comments that translate addresses to + function names and line numbers for debugging. + type: string + format: Go runtime profile + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + default: + description: Unexpected error + $ref: "#/components/responses/GeneralServerError" + /debug/pprof/profile: + get: + operationId: GetDebugPprofProfile + tags: + - Debug + - System information endpoints + summary: Retrieve the CPU runtime profile + description: | + Collects statistics and returns a [Go runtime profile](https://pkg.go.dev/runtime/pprof) + report of program counters on the executing stack. + x-codeSamples: + - lang: Shell + label: "Shell: go tool pprof" + source: | + # Download the profile report. + + curl http://localhost:8086/debug/pprof/profile -o cpu + + # Analyze the profile in interactive mode. + + go tool pprof ./cpu + + # At the prompt, get the top N functions most often running + # or waiting during the sample period. + + (pprof) top10 + servers: + - url: "" + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: query + name: seconds + description: Number of seconds to collect profile data. Default is `30` seconds. + schema: + type: string + format: int64 + responses: + "200": + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report compatible + with [pprof](https://github.com/google/pprof) analysis and visualization tools. + content: + application/octet-stream: + schema: + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report in protocol buffer format. + type: string + format: binary + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + default: + description: Unexpected error + $ref: "#/components/responses/GeneralServerError" + /debug/pprof/threadcreate: + get: + operationId: GetDebugPprofThreadCreate + tags: + - Debug + - System information endpoints + summary: Retrieve the threadcreate runtime profile + description: | + Collects statistics and returns a [Go runtime profile](https://pkg.go.dev/runtime/pprof) + report of stack traces that led to the creation of new OS threads. + x-codeSamples: + - lang: Shell + label: "Shell: go tool pprof" + source: | + # Analyze the profile in interactive mode. + + go tool pprof http://localhost:8086/debug/pprof/threadcreate + + # `pprof` returns the following prompt: + # Entering interactive mode (type "help" for commands, "o" for options) + # (pprof) + + # At the prompt, get the top N entries. + + (pprof) top10 + servers: + - url: "" + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: query + name: debug + description: | + - `0`: (Default) Return the report as a gzip-compressed protocol buffer. + - `1`: Return a response body with the report formatted as human-readable text. + The report contains comments that translate addresses to function names and line numbers for debugging. + + `debug=1` is mutually exclusive with the `seconds` query parameter. + schema: + type: integer + format: int64 + enum: + - 0 + - 1 + - in: query + name: seconds + description: | + Number of seconds to collect statistics. + + `seconds` is mutually exclusive with `debug=1`. + schema: + type: string + format: int64 + responses: + "200": + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report compatible + with [pprof](https://github.com/google/pprof) analysis and visualization tools. + If debug is enabled (`?debug=1`), response body contains a human-readable profile. + content: + application/octet-stream: + schema: + description: | + [Go runtime profile](https://pkg.go.dev/runtime/pprof) report in protocol buffer format. + type: string + format: binary + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + text/plain: schema: - $ref: '#/components/schemas/LabelResponse' + description: | + Response body contains a report formatted in plain text. + The report contains comments that translate addresses to + function names and line numbers for debugging. + type: string + format: Go runtime profile + externalDocs: + description: Golang pprof package + url: "https://pkg.go.dev/net/http/pprof" + examples: + profileDebugResponse: + summary: Profile in plain text + value: "threadcreate profile: total 26\n25 @\n#\t0x0\n\n1 @ 0x403dda8 0x403e54b 0x403e810 0x403a90c 0x406c0a1\n#\t0x403dda7\truntime.allocm+0xc7\t\t\t/Users/me/.gvm/gos/go1.17/src/runtime/proc.go:1877\n#\t0x403e54a\truntime.newm+0x2a\t\t\t/Users/me/.gvm/gos/go1.17/src/runtime/proc.go:2201\n#\t0x403e80f\truntime.startTemplateThread+0x8f\t/Users/me/.gvm/gos/go1.17/src/runtime/proc.go:2271\n#\t0x403a90b\truntime.main+0x1cb\t\t\t/Users/me/.gvm/gos/go1.17/src/runtime/proc.go:234\n" default: description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '/notificationEndpoints/{endpointID}/labels/{labelID}': - delete: - operationId: DeleteNotificationEndpointsIDLabelsID + $ref: "#/components/responses/GeneralServerError" + /debug/pprof/trace: + get: + operationId: GetDebugPprofTrace tags: - - NotificationEndpoints - summary: Delete a label from a notification endpoint + - Debug + - System information endpoints + summary: Retrieve the runtime execution trace + description: | + Collects profile data and returns trace execution events for the current program. + x-codeSamples: + - lang: Shell + label: "Shell: go tool trace" + source: | + # Download the trace file. + + curl http://localhost:8086/debug/pprof/trace -o trace + + # Analyze the trace. + + go tool trace ./trace + servers: + - url: "" parameters: - - $ref: '#/components/parameters/TraceSpan' - - in: path - name: endpointID - schema: - type: string - required: true - description: The notification endpoint ID. - - in: path - name: labelID + - $ref: "#/components/parameters/TraceSpan" + - in: query + name: seconds + description: Number of seconds to collect profile data. schema: type: string - required: true - description: The ID of the label to delete. + format: int64 responses: - '204': - description: Delete has been accepted - '404': - description: Endpoint or label not found + "200": + description: | + [Trace file](https://pkg.go.dev/runtime/trace) compatible + with the [Golang `trace` command](https://pkg.go.dev/cmd/trace). content: - application/json: + application/octet-stream: schema: - $ref: '#/components/schemas/Error' + type: string + format: binary + externalDocs: + description: Golang trace package + url: "https://pkg.go.dev/runtime/trace" default: description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" /health: get: operationId: GetHealth tags: - Health - summary: Get the health of an instance + - System information endpoints + summary: Retrieve the health of the instance + description: Returns the health of the instance. servers: - - url: '' + - url: "" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '200': - description: The instance is healthy. + "200": + description: | + The instance is healthy. + The response body contains the health check items and status. content: application/json: schema: - $ref: '#/components/schemas/HealthCheck' - '503': + $ref: "#/components/schemas/HealthCheck" + "503": description: The instance is unhealthy. content: application/json: schema: - $ref: '#/components/schemas/HealthCheck' + $ref: "#/components/schemas/HealthCheck" default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /metrics: get: operationId: GetMetrics tags: - Metrics - summary: Get metrics of an instance + - System information endpoints + summary: Retrieve workload performance metrics + description: | + Returns metrics about the workload performance of an InfluxDB instance. + + Use this endpoint to get performance, resource, and usage metrics. + + #### Related guides + + - For the list of metrics categories, see [InfluxDB OSS metrics](https://docs.influxdata.com/influxdb/v2.3/reference/internals/metrics/). + - Learn how to use InfluxDB to [scrape Prometheus metrics](https://docs.influxdata.com/influxdb/v2.3/write-data/developer-tools/scrape-prometheus-metrics/). + - Learn how InfluxDB [parses the Prometheus exposition format](https://docs.influxdata.com/influxdb/v2.3/reference/prometheus-metrics/). servers: - - url: '' + - url: "" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '200': + "200": description: | - Payload body contains metrics about the InfluxDB instance. - - Metrics are formatted in the - Prometheus [plain-text exposition format](https://prometheus.io/docs/instrumenting/exposition_formats). - Each metric is identified by its name and a set of optional key-value pairs. + Success. The response body contains metrics in + [Prometheus plain-text exposition format](https://prometheus.io/docs/instrumenting/exposition_formats) + Metrics contain a name, an optional set of key-value pairs, and a value. The following descriptors precede each metric: - - *`HELP`*: description of the metric - - *`TYPE`*: type of the metric (e.g. `counter`, `gauge`, `histogram`, or `summary`) + - `HELP`: description of the metric + - `TYPE`: [Prometheus metric type](https://prometheus.io/docs/concepts/metric_types/) (`counter`, `gauge`, `histogram`, or `summary`) content: text/plain: schema: @@ -5197,7 +8792,7 @@ paths: format: Prometheus text-based exposition externalDocs: description: Prometheus exposition formats - url: 'https://prometheus.io/docs/instrumenting/exposition_formats' + url: "https://prometheus.io/docs/instrumenting/exposition_formats" examples: expositionResponse: summary: Metrics in plain text @@ -5212,38 +8807,50 @@ paths: http_api_request_duration_seconds_bucket{handler="platform",method="GET",path="/:fallback_path",response_code="200",status="2XX",user_agent="curl",le="0.025"} 5 default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /ready: get: operationId: GetReady tags: - Ready + - System information endpoints summary: Get the readiness of an instance at startup servers: - - url: '' + - url: "" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '200': + "200": description: The instance is ready content: application/json: schema: - $ref: '#/components/schemas/Ready' + $ref: "#/components/schemas/Ready" default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /users: get: operationId: GetUsers tags: + - Security and access endpoints - Users - summary: List all users + summary: List users + description: | + Retrieves a list of users. Default limit is `20`. + + To limit which users are returned, pass query parameters in your request. + + #### Required permissions + + - `read-user USER_ID` permission. + `USER_ID` is the ID of the user that you want to list. + - InfluxDB OSS requires an _[operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token))_ to list all users. parameters: - - $ref: '#/components/parameters/TraceSpan' - - $ref: '#/components/parameters/Offset' - - $ref: '#/components/parameters/Limit' - - $ref: '#/components/parameters/After' + - $ref: "#/components/parameters/TraceSpan" + - $ref: "#/components/parameters/Offset" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/After" - in: query name: name schema: @@ -5253,47 +8860,132 @@ paths: schema: type: string responses: - '200': - description: A list of users + "200": + description: Success. The response contains a list of `users`. + content: + application/json: + schema: + $ref: "#/components/schemas/Users" + "401": + description: | + Unauthorized. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + examples: + tokenNotAuthorized: + summary: "API token doesn't have `write:users` permission" + value: + code: unauthorized + message: "write:users/09d8462ce0764000 is unauthorized" + "422": + description: | + Unprocessable entity. + + The error may indicate one of the following problems: + + - The request body isn't valid--the request is well-formed, but InfluxDB can't process it due to semantic errors. + - You passed a parameter combination that InfluxDB doesn't support. content: application/json: schema: - $ref: '#/components/schemas/Users' + $ref: "#/components/schemas/Error" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" post: operationId: PostUsers tags: - Users summary: Create a user + description: | + Creates a user and returns the newly created user. + + #### Required permissions + + - `write-users`. Requires an InfluxDB API **Op** token. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: - description: User to create + description: The user to create. required: true content: application/json: schema: - $ref: '#/components/schemas/User' + $ref: "#/components/schemas/User" responses: - '201': - description: User created + "201": + description: | + Success. + The response contains the newly created user. + content: + application/json: + schema: + $ref: "#/components/schemas/UserResponse" + "401": + description: | + Unauthorized. content: application/json: schema: - $ref: '#/components/schemas/UserResponse' + $ref: "#/components/schemas/Error" + examples: + tokenNotAuthorized: + summary: "API token doesn't have `write:users` permission" + value: + code: unauthorized + message: "write:users/09d8462ce0764000 is unauthorized" + "422": + description: | + Unprocessable entity. + + The error may indicate one of the following problems: + + - The request body isn't valid--the request is well-formed, but InfluxDB can't process it due to semantic errors. + - You passed a parameter combination that InfluxDB doesn't support. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error - $ref: '#/components/responses/ServerError' - '/users/{userID}': + $ref: "#/components/responses/GeneralServerError" + x-codeSamples: + - label: "cURL: create a user and set a password" + lang: Shell + source: | + # Create the user and assign the user ID to a variable. + USER_ID=$(curl --request POST \ + "http://localhost:8086/api/v2/users/" \ + --header "Authorization: Token INFLUX_OP_TOKEN" \ + --header 'Content-type: application/json' \ + --data-binary @- << EOF | jq -r '.id' + { + "name": "USER_NAME", + "status": "active" + } + EOF + ) + + # Pass the user ID and a password to set the password for the user. + curl request POST "http://localhost:8086/api/v2/users/$USER_ID/password/" \ + --header "Authorization: Token INFLUX_OP_TOKEN" \ + --header 'Content-type: application/json' \ + --data '{ "password": "USER_PASSWORD" }' + "/users/{userID}": get: operationId: GetUsersID tags: + - Security and access endpoints - Users summary: Retrieve a user parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -5301,15 +8993,15 @@ paths: required: true description: The user ID. responses: - '200': + "200": description: User details content: application/json: schema: - $ref: '#/components/schemas/UserResponse' + $ref: "#/components/schemas/UserResponse" default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" patch: operationId: PatchUsersID tags: @@ -5321,9 +9013,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/User' + $ref: "#/components/schemas/User" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -5331,22 +9023,22 @@ paths: required: true description: The ID of the user to update. responses: - '200': + "200": description: User updated content: application/json: schema: - $ref: '#/components/schemas/UserResponse' + $ref: "#/components/schemas/UserResponse" default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" delete: operationId: DeleteUsersID tags: - Users summary: Delete a user parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -5354,125 +9046,212 @@ paths: required: true description: The ID of the user to delete. responses: - '204': + "204": description: User deleted default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /setup: get: operationId: GetSetup tags: - Setup - summary: 'Check if database has default user, org, bucket' - description: 'Returns `true` if no default user, organization, or bucket has been created.' + summary: "Check if database has default user, org, bucket" + description: "Returns `true` if no default user, organization, or bucket has been created." parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '200': + "200": description: allowed true or false content: application/json: schema: - $ref: '#/components/schemas/IsOnboarding' + $ref: "#/components/schemas/IsOnboarding" post: operationId: PostSetup tags: - Setup - summary: 'Set up initial user, org and bucket' - description: 'Post an onboarding request to set up initial user, org and bucket.' + summary: "Set up initial user, org and bucket" + description: "Post an onboarding request to set up initial user, org and bucket." parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: description: Source to create required: true content: application/json: schema: - $ref: '#/components/schemas/OnboardingRequest' + $ref: "#/components/schemas/OnboardingRequest" responses: - '201': - description: 'Created default user, bucket, org' + "201": + description: "Created default user, bucket, org" content: application/json: schema: - $ref: '#/components/schemas/OnboardingResponse' + $ref: "#/components/schemas/OnboardingResponse" default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /authorizations: get: operationId: GetAuthorizations tags: - Authorizations - summary: List all authorizations + - Security and access endpoints + summary: List authorizations + description: | + Retrieves a list of authorizations. + + To limit which authorizations are returned, pass query parameters in your request. + If no query parameters are passed, InfluxDB returns all authorizations. + + #### InfluxDB Cloud + + - Doesn't expose [API token](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#token) values in `GET /api/v2/authorizations` responses; returns `token: redacted` for all authorizations. + + #### InfluxDB OSS + + - Returns + [API token](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#token) values in authorizations. + - Requires an _[operator token](https://docs.influxdata.com/influxdb/latest/security/tokens/#operator-token))_ to view authorizations. + + #### Related guides + + - [View tokens](https://docs.influxdata.com/influxdb/v2.3/security/tokens/view-tokens/). parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: userID schema: type: string - description: Only show authorizations that belong to a user ID. + description: | + A user ID. + Only returns authorizations scoped to this user. - in: query name: user schema: type: string - description: Only show authorizations that belong to a user name. + description: | + A user name. + Only returns authorizations scoped to this user. - in: query name: orgID schema: type: string - description: Only show authorizations that belong to an organization ID. + description: An organization ID. Only returns authorizations that belong to this organization. - in: query name: org schema: type: string - description: Only show authorizations that belong to a organization name. + description: | + An organization name. + Only returns authorizations that belong to this organization. responses: - '200': - description: A list of authorizations + "200": + description: Success. The response body contains a list of authorizations. content: application/json: schema: - $ref: '#/components/schemas/Authorizations' + $ref: "#/components/schemas/Authorizations" + "400": + description: Invalid request + $ref: "#/components/responses/GeneralServerError" + "401": + $ref: "#/components/responses/AuthorizationError" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" post: operationId: PostAuthorizations tags: - Authorizations summary: Create an authorization + description: | + Creates an authorization and returns the newly created authorization. + + Use this endpoint to generate an API token with resource permissions. + A permission sets `read` or `write` access to a `type` of resource. + + Keep the following in mind when creating and updating authorizations: + + - A permission with a resource `id` applies only to the resource specified by the ID. + - A permission that doesn't have a resource `id` applies to all resources of resource `type`. + - To scope an authorization to a specific user, provide the `userID` property. + + #### Related guides + + - [Create a token](https://docs.influxdata.com/influxdb/v2.3/security/tokens/create-token/). parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: - description: Authorization to create + description: The authorization to create. required: true content: application/json: schema: - $ref: '#/components/schemas/AuthorizationPostRequest' + $ref: "#/components/schemas/AuthorizationPostRequest" responses: - '201': - description: Authorization created + "201": + description: Created. The response body contains the newly created authorization. content: application/json: schema: - $ref: '#/components/schemas/Authorization' - '400': + $ref: "#/components/schemas/Authorization" + "400": description: Invalid request - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" + "401": + $ref: "#/components/responses/AuthorizationError" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error - $ref: '#/components/responses/ServerError' - '/authorizations/{authID}': + $ref: "#/components/responses/GeneralServerError" + x-codeSample: + - lang: Shell + label: "cURL: Create auth to read all buckets" + source: | + curl --request POST \ + "http://localhost:8086/api/v2/authorizations" \ + --header "Authorization: Token INFLUX_TOKEN" \ + --header 'Content-Type: application/json' \ + --data @- << EOF + { + "orgID": "INFLUX_ORG_ID", + "description": "iot_users read buckets", + "permissions": [ + {"action": "read", "resource": {"type": "buckets"}} + ] + } + EOF + - lang: Shell + - label: "cURL: Create auth scoped to a user" + - source: | + curl --request POST \ + "http://localhost:8086/api/v2/authorizations" \ + --header "Authorization: Token INFLUX_TOKEN" \ + --header 'Content-Type: application/json' \ + --data @- << EOF + { + "orgID": "INFLUX_ORG_ID", + "userID": "INFLUX_USER_ID", + "description": "iot_user write to bucket", + "permissions": [ + {"action": "write", "resource": {"type": "buckets", "id: "INFLUX_BUCKET_ID"}} + ] + } + EOF + "/authorizations/{authID}": get: operationId: GetAuthorizationsID tags: - Authorizations + - Security and access endpoints summary: Retrieve an authorization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: authID schema: @@ -5480,15 +9259,15 @@ paths: required: true description: The ID of the authorization to get. responses: - '200': + "200": description: Authorization details content: application/json: schema: - $ref: '#/components/schemas/Authorization' + $ref: "#/components/schemas/Authorization" default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" patch: operationId: PatchAuthorizationsID tags: @@ -5500,9 +9279,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AuthorizationUpdateRequest' + $ref: "#/components/schemas/AuthorizationUpdateRequest" parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: authID schema: @@ -5510,22 +9289,22 @@ paths: required: true description: The ID of the authorization to update. responses: - '200': + "200": description: The active or inactive authorization content: application/json: schema: - $ref: '#/components/schemas/Authorization' + $ref: "#/components/schemas/Authorization" default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" delete: operationId: DeleteAuthorizationsID tags: - Authorizations summary: Delete an authorization parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: authID schema: @@ -5533,192 +9312,11 @@ paths: required: true description: The ID of the authorization to delete. responses: - '204': + "204": description: Authorization deleted default: description: Unexpected error - $ref: '#/components/responses/ServerError' - /legacy/authorizations: - servers: - - url: /private - get: - operationId: GetLegacyAuthorizations - tags: - - Legacy Authorizations - summary: List all legacy authorizations - parameters: - - $ref: '#/components/parameters/TraceSpan' - - in: query - name: userID - schema: - type: string - description: Only show legacy authorizations that belong to a user ID. - - in: query - name: user - schema: - type: string - description: Only show legacy authorizations that belong to a user name. - - in: query - name: orgID - schema: - type: string - description: Only show legacy authorizations that belong to an organization ID. - - in: query - name: org - schema: - type: string - description: Only show legacy authorizations that belong to a organization name. - - in: query - name: token - schema: - type: string - description: Only show legacy authorizations with a specified token (auth name). - - in: query - name: authID - schema: - type: string - description: Only show legacy authorizations with a specified auth ID. - responses: - '200': - description: A list of legacy authorizations - content: - application/json: - schema: - $ref: '#/components/schemas/Authorizations' - default: - description: Unexpected error - $ref: '#/components/responses/ServerError' - post: - operationId: PostLegacyAuthorizations - tags: - - Legacy Authorizations - summary: Create a legacy authorization - parameters: - - $ref: '#/components/parameters/TraceSpan' - requestBody: - description: Legacy authorization to create - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/LegacyAuthorizationPostRequest' - responses: - '201': - description: Legacy authorization created - content: - application/json: - schema: - $ref: '#/components/schemas/Authorization' - '400': - description: Invalid request - $ref: '#/components/responses/ServerError' - default: - description: Unexpected error - $ref: '#/components/responses/ServerError' - '/legacy/authorizations/{authID}': - servers: - - url: /private - get: - operationId: GetLegacyAuthorizationsID - tags: - - Legacy Authorizations - summary: Retrieve a legacy authorization - parameters: - - $ref: '#/components/parameters/TraceSpan' - - in: path - name: authID - schema: - type: string - required: true - description: The ID of the legacy authorization to get. - responses: - '200': - description: Legacy authorization details - content: - application/json: - schema: - $ref: '#/components/schemas/Authorization' - default: - description: Unexpected error - $ref: '#/components/responses/ServerError' - patch: - operationId: PatchLegacyAuthorizationsID - tags: - - Legacy Authorizations - summary: Update a legacy authorization to be active or inactive - requestBody: - description: Legacy authorization to update - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/AuthorizationUpdateRequest' - parameters: - - $ref: '#/components/parameters/TraceSpan' - - in: path - name: authID - schema: - type: string - required: true - description: The ID of the legacy authorization to update. - responses: - '200': - description: The active or inactive legacy authorization - content: - application/json: - schema: - $ref: '#/components/schemas/Authorization' - default: - description: Unexpected error - $ref: '#/components/responses/ServerError' - delete: - operationId: DeleteLegacyAuthorizationsID - tags: - - Legacy Authorizations - summary: Delete a legacy authorization - parameters: - - $ref: '#/components/parameters/TraceSpan' - - in: path - name: authID - schema: - type: string - required: true - description: The ID of the legacy authorization to delete. - responses: - '204': - description: Legacy authorization deleted - default: - description: Unexpected error - $ref: '#/components/responses/ServerError' - '/legacy/authorizations/{authID}/password': - servers: - - url: /private - post: - operationId: PostLegacyAuthorizationsIDPassword - tags: - - Legacy Authorizations - summary: Set a legacy authorization password - parameters: - - $ref: '#/components/parameters/TraceSpan' - - in: path - name: authID - schema: - type: string - required: true - description: The ID of the legacy authorization to update. - requestBody: - description: New password - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/PasswordResetBody' - responses: - '204': - description: Legacy authorization password set - default: - description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /variables: get: operationId: GetVariables @@ -5726,7 +9324,7 @@ paths: - Variables summary: List all variables parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: org description: The name of the organization. @@ -5738,50 +9336,50 @@ paths: schema: type: string responses: - '200': + "200": description: A list of variables for an organization content: application/json: schema: - $ref: '#/components/schemas/Variables' - '400': + $ref: "#/components/schemas/Variables" + "400": description: Invalid request - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" default: description: Internal server error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" post: operationId: PostVariables summary: Create a variable tags: - Variables parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: description: Variable to create required: true content: application/json: schema: - $ref: '#/components/schemas/Variable' + $ref: "#/components/schemas/Variable" responses: - '201': + "201": description: Variable created content: application/json: schema: - $ref: '#/components/schemas/Variable' + $ref: "#/components/schemas/Variable" default: description: Internal server error - $ref: '#/components/responses/ServerError' - '/variables/{variableID}': + $ref: "#/components/responses/GeneralServerError" + "/variables/{variableID}": get: operationId: GetVariablesID tags: - Variables summary: Retrieve a variable parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: variableID required: true @@ -5789,25 +9387,25 @@ paths: type: string description: The variable ID. responses: - '200': + "200": description: Variable found content: application/json: schema: - $ref: '#/components/schemas/Variable' - '404': + $ref: "#/components/schemas/Variable" + "404": description: Variable not found - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" default: description: Internal server error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" delete: operationId: DeleteVariablesID tags: - Variables summary: Delete a variable parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: variableID required: true @@ -5815,18 +9413,18 @@ paths: type: string description: The variable ID. responses: - '204': + "204": description: Variable deleted default: description: Internal server error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" patch: operationId: PatchVariablesID summary: Update a variable tags: - Variables parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: variableID required: true @@ -5839,24 +9437,24 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Variable' + $ref: "#/components/schemas/Variable" responses: - '200': + "200": description: Variable updated content: application/json: schema: - $ref: '#/components/schemas/Variable' + $ref: "#/components/schemas/Variable" default: description: Internal server error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" put: operationId: PutVariablesID summary: Replace a variable tags: - Variables parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: variableID required: true @@ -5869,17 +9467,17 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Variable' + $ref: "#/components/schemas/Variable" responses: - '200': + "200": description: Variable updated content: application/json: schema: - $ref: '#/components/schemas/Variable' + $ref: "#/components/schemas/Variable" default: description: Internal server error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /sources: post: operationId: PostSources @@ -5887,60 +9485,60 @@ paths: - Sources summary: Create a source parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: description: Source to create required: true content: application/json: schema: - $ref: '#/components/schemas/Source' + $ref: "#/components/schemas/Source" responses: - '201': + "201": description: Created Source content: application/json: schema: - $ref: '#/components/schemas/Source' + $ref: "#/components/schemas/Source" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" get: operationId: GetSources tags: - Sources summary: List all sources parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: org description: The name of the organization. schema: type: string responses: - '200': + "200": description: A list of sources content: application/json: schema: - $ref: '#/components/schemas/Sources' + $ref: "#/components/schemas/Sources" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/sources/{sourceID}': + $ref: "#/components/schemas/Error" + "/sources/{sourceID}": delete: operationId: DeleteSourcesID tags: - Sources summary: Delete a source parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: sourceID schema: @@ -5948,27 +9546,27 @@ paths: required: true description: The source ID. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: View not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchSourcesID tags: - Sources summary: Update a Source parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: sourceID schema: @@ -5981,33 +9579,33 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Source' + $ref: "#/components/schemas/Source" responses: - '200': + "200": description: Created Source content: application/json: schema: - $ref: '#/components/schemas/Source' - '404': + $ref: "#/components/schemas/Source" + "404": description: Source not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" get: operationId: GetSourcesID tags: - Sources summary: Retrieve a source parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: sourceID schema: @@ -6015,32 +9613,32 @@ paths: required: true description: The source ID. responses: - '200': + "200": description: A source content: application/json: schema: - $ref: '#/components/schemas/Source' - '404': + $ref: "#/components/schemas/Source" + "404": description: Source not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/sources/{sourceID}/health': + $ref: "#/components/schemas/Error" + "/sources/{sourceID}/health": get: operationId: GetSourcesIDHealth tags: - Sources summary: Get the health of a source parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: sourceID schema: @@ -6048,25 +9646,25 @@ paths: required: true description: The source ID. responses: - '200': + "200": description: The source is healthy content: application/json: schema: - $ref: '#/components/schemas/HealthCheck' - '503': + $ref: "#/components/schemas/HealthCheck" + "503": description: The source is not healthy content: application/json: schema: - $ref: '#/components/schemas/HealthCheck' + $ref: "#/components/schemas/HealthCheck" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/sources/{sourceID}/buckets': + $ref: "#/components/schemas/Error" + "/sources/{sourceID}/buckets": get: operationId: GetSourcesIDBuckets tags: @@ -6074,7 +9672,7 @@ paths: - Buckets summary: Get buckets in a source parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: sourceID schema: @@ -6087,24 +9685,24 @@ paths: schema: type: string responses: - '200': + "200": description: A source content: application/json: schema: - $ref: '#/components/schemas/Buckets' - '404': + $ref: "#/components/schemas/Buckets" + "404": description: Source not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /scrapers: get: operationId: GetScrapers @@ -6112,7 +9710,7 @@ paths: - Scraper Targets summary: List all scraper targets parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: name description: Specifies the name of the scraper target. @@ -6120,7 +9718,7 @@ paths: type: string - in: query name: id - description: 'List of scraper target IDs to return. If both `id` and `owner` are specified, only `id` is used.' + description: "List of scraper target IDs to return. If both `id` and `owner` are specified, only `id` is used." schema: type: array items: @@ -6136,47 +9734,47 @@ paths: schema: type: string responses: - '200': + "200": description: All scraper targets content: application/json: schema: - $ref: '#/components/schemas/ScraperTargetResponses' + $ref: "#/components/schemas/ScraperTargetResponses" post: operationId: PostScrapers summary: Create a scraper target tags: - Scraper Targets parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: description: Scraper target to create required: true content: application/json: schema: - $ref: '#/components/schemas/ScraperTargetRequest' + $ref: "#/components/schemas/ScraperTargetRequest" responses: - '201': + "201": description: Scraper target created content: application/json: schema: - $ref: '#/components/schemas/ScraperTargetResponse' + $ref: "#/components/schemas/ScraperTargetResponse" default: description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/scrapers/{scraperTargetID}': + $ref: "#/components/schemas/Error" + "/scrapers/{scraperTargetID}": get: operationId: GetScrapersID tags: - Scraper Targets summary: Retrieve a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: scraperTargetID required: true @@ -6184,25 +9782,25 @@ paths: type: string description: The identifier of the scraper target. responses: - '200': + "200": description: The scraper target content: application/json: schema: - $ref: '#/components/schemas/ScraperTargetResponse' + $ref: "#/components/schemas/ScraperTargetResponse" default: description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" delete: operationId: DeleteScrapersID tags: - Scraper Targets summary: Delete a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: scraperTargetID required: true @@ -6210,21 +9808,21 @@ paths: type: string description: The identifier of the scraper target. responses: - '204': + "204": description: Scraper target deleted default: description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" patch: operationId: PatchScrapersID summary: Update a scraper target tags: - Scraper Targets parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: scraperTargetID required: true @@ -6237,28 +9835,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ScraperTargetRequest' + $ref: "#/components/schemas/ScraperTargetRequest" responses: - '200': + "200": description: Scraper target updated content: application/json: schema: - $ref: '#/components/schemas/ScraperTargetResponse' + $ref: "#/components/schemas/ScraperTargetResponse" default: description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/scrapers/{scraperTargetID}/labels': + $ref: "#/components/schemas/Error" + "/scrapers/{scraperTargetID}/labels": get: operationId: GetScrapersIDLabels tags: - Scraper Targets summary: List all labels for a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: scraperTargetID schema: @@ -6266,25 +9864,25 @@ paths: required: true description: The scraper target ID. responses: - '200': + "200": description: A list of labels for a scraper target. content: application/json: schema: - $ref: '#/components/schemas/LabelsResponse' + $ref: "#/components/schemas/LabelsResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostScrapersIDLabels tags: - Scraper Targets summary: Add a label to a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: scraperTargetID schema: @@ -6297,28 +9895,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LabelMapping' + $ref: "#/components/schemas/LabelMapping" responses: - '201': + "201": description: The newly added label content: application/json: schema: - $ref: '#/components/schemas/LabelResponse' + $ref: "#/components/schemas/LabelResponse" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/scrapers/{scraperTargetID}/labels/{labelID}': + $ref: "#/components/schemas/Error" + "/scrapers/{scraperTargetID}/labels/{labelID}": delete: operationId: DeleteScrapersIDLabelsID tags: - Scraper Targets summary: Delete a label from a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: scraperTargetID schema: @@ -6332,28 +9930,28 @@ paths: required: true description: The label ID. responses: - '204': + "204": description: Delete has been accepted - '404': + "404": description: Scraper target not found content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/scrapers/{scraperTargetID}/members': + $ref: "#/components/schemas/Error" + "/scrapers/{scraperTargetID}/members": get: operationId: GetScrapersIDMembers tags: - Scraper Targets summary: List all users with member privileges for a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: scraperTargetID schema: @@ -6361,25 +9959,25 @@ paths: required: true description: The scraper target ID. responses: - '200': + "200": description: A list of scraper target members content: application/json: schema: - $ref: '#/components/schemas/ResourceMembers' + $ref: "#/components/schemas/ResourceMembers" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostScrapersIDMembers tags: - Scraper Targets summary: Add a member to a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: scraperTargetID schema: @@ -6392,28 +9990,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': + "201": description: Member added to scraper targets content: application/json: schema: - $ref: '#/components/schemas/ResourceMember' + $ref: "#/components/schemas/ResourceMember" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/scrapers/{scraperTargetID}/members/{userID}': + $ref: "#/components/schemas/Error" + "/scrapers/{scraperTargetID}/members/{userID}": delete: operationId: DeleteScrapersIDMembersID tags: - Scraper Targets summary: Remove a member from a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -6427,22 +10025,22 @@ paths: required: true description: The scraper target ID. responses: - '204': + "204": description: Member removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/scrapers/{scraperTargetID}/owners': + $ref: "#/components/schemas/Error" + "/scrapers/{scraperTargetID}/owners": get: operationId: GetScrapersIDOwners tags: - Scraper Targets summary: List all owners of a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: scraperTargetID schema: @@ -6450,25 +10048,25 @@ paths: required: true description: The scraper target ID. responses: - '200': + "200": description: A list of scraper target owners content: application/json: schema: - $ref: '#/components/schemas/ResourceOwners' + $ref: "#/components/schemas/ResourceOwners" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" post: operationId: PostScrapersIDOwners tags: - Scraper Targets summary: Add an owner to a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: scraperTargetID schema: @@ -6481,28 +10079,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AddResourceMemberRequestBody' + $ref: "#/components/schemas/AddResourceMemberRequestBody" responses: - '201': + "201": description: Scraper target owner added content: application/json: schema: - $ref: '#/components/schemas/ResourceOwner' + $ref: "#/components/schemas/ResourceOwner" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - '/scrapers/{scraperTargetID}/owners/{userID}': + $ref: "#/components/schemas/Error" + "/scrapers/{scraperTargetID}/owners/{userID}": delete: operationId: DeleteScrapersIDOwnersID tags: - Scraper Targets summary: Remove an owner from a scraper target parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: userID schema: @@ -6516,26 +10114,30 @@ paths: required: true description: The scraper target ID. responses: - '204': + "204": description: Owner removed default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /backup/kv: get: operationId: GetBackupKV tags: - Backup - summary: 'Download snapshot of metadata stored in the server''s embedded KV store. Should not be used in versions greater than 2.1.x, as it doesn''t include metadata stored in embedded SQL.' + summary: Download snapshot of metadata stored in the server's embedded KV store. Don't use with InfluxDB versions greater than InfluxDB 2.1.x. + description: | + Retrieves a snapshot of metadata stored in the server's embedded KV store. + InfluxDB versions greater than 2.1.x don't include metadata stored in embedded SQL; + avoid using this endpoint with versions greater than 2.1.x. deprecated: true parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '200': - description: Snapshot of KV metadata + "200": + description: Success. The response contains a snapshot of KV metadata. content: application/octet-stream: schema: @@ -6543,7 +10145,7 @@ paths: format: binary default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /backup/metadata: get: operationId: GetBackupMetadata @@ -6551,19 +10153,19 @@ paths: - Backup summary: Download snapshot of all metadata in the server parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: header name: Accept-Encoding description: Indicates the content encoding (usually a compression algorithm) that the client can understand. schema: type: string - description: 'The content coding. Use `gzip` for compressed data or `identity` for unmodified, uncompressed data.' + description: "The content coding. Use `gzip` for compressed data or `identity` for unmodified, uncompressed data." default: identity enum: - gzip - identity responses: - '200': + "200": description: Snapshot of metadata headers: Content-Encoding: @@ -6579,24 +10181,24 @@ paths: content: multipart/mixed: schema: - $ref: '#/components/schemas/MetadataBackup' + $ref: "#/components/schemas/MetadataBackup" default: description: Unexpected error - $ref: '#/components/responses/ServerError' - '/backup/shards/{shardID}': + $ref: "#/components/responses/GeneralServerError" + "/backup/shards/{shardID}": get: operationId: GetBackupShardId tags: - Backup summary: Download snapshot of all TSM data in a shard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: header name: Accept-Encoding description: Indicates the content encoding (usually a compression algorithm) that the client can understand. schema: type: string - description: 'The content coding. Use `gzip` for compressed data or `identity` for unmodified, uncompressed data.' + description: "The content coding. Use `gzip` for compressed data or `identity` for unmodified, uncompressed data." default: identity enum: - gzip @@ -6610,12 +10212,16 @@ paths: description: The shard ID. - in: query name: since - description: Earliest time to include in the snapshot. RFC3339 format. + description: "The earliest time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp) to include in the snapshot." schema: type: string format: date-time + examples: + RFC3339: + summary: RFC3339 date/time format + value: "2006-01-02T15:04:05Z07:00" responses: - '200': + "200": description: TSM snapshot. headers: Content-Encoding: @@ -6633,15 +10239,15 @@ paths: schema: type: string format: binary - '404': + "404": description: Shard not found. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /restore/kv: post: operationId: PostRestoreKV @@ -6649,7 +10255,7 @@ paths: - Restore summary: Overwrite the embedded KV store on the server with a backed-up snapshot. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: header name: Content-Encoding description: | @@ -6657,7 +10263,7 @@ paths: To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. schema: type: string - description: 'The content coding. Use `gzip` for compressed data or `identity` for unmodified, uncompressed data.' + description: "The content coding. Use `gzip` for compressed data or `identity` for unmodified, uncompressed data." default: identity enum: - gzip @@ -6678,7 +10284,7 @@ paths: type: string format: binary responses: - '200': + "200": description: KV store successfully overwritten. content: application/json: @@ -6688,11 +10294,11 @@ paths: token: description: token is the root token for the instance after restore (this is overwritten during the restore) type: string - '204': + "204": description: KV store successfully overwritten. default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /restore/sql: post: operationId: PostRestoreSQL @@ -6700,7 +10306,7 @@ paths: - Restore summary: Overwrite the embedded SQL store on the server with a backed-up snapshot. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: header name: Content-Encoding description: | @@ -6729,12 +10335,12 @@ paths: type: string format: binary responses: - '204': + "204": description: SQL store successfully overwritten. default: description: Unexpected error - $ref: '#/components/responses/ServerError' - '/restore/bucket/{bucketID}': + $ref: "#/components/responses/GeneralServerError" + "/restore/bucket/{bucketID}": post: operationId: PostRestoreBucketID tags: @@ -6742,7 +10348,7 @@ paths: summary: Overwrite storage metadata for a bucket with shard info from a backup. deprecated: true parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: bucketID schema: @@ -6765,7 +10371,7 @@ paths: type: string format: byte responses: - '200': + "200": description: ID mappings for shards in bucket. content: application/json: @@ -6774,7 +10380,7 @@ paths: format: byte default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /restore/bucketMetadata: post: operationId: PostRestoreBucketMetadata @@ -6782,32 +10388,32 @@ paths: - Restore summary: Create a new bucket pre-seeded with shard info from a backup. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: description: Metadata manifest for a bucket. required: true content: application/json: schema: - $ref: '#/components/schemas/BucketMetadataManifest' + $ref: "#/components/schemas/BucketMetadataManifest" responses: - '201': + "201": description: ID mappings for shards in new bucket. content: application/json: schema: - $ref: '#/components/schemas/RestoredBucketMappings' + $ref: "#/components/schemas/RestoredBucketMappings" default: description: Unexpected error - $ref: '#/components/responses/ServerError' - '/restore/shards/{shardID}': + $ref: "#/components/responses/GeneralServerError" + "/restore/shards/{shardID}": post: operationId: PostRestoreShardId tags: - Restore summary: Restore a TSM snapshot into a shard. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: header name: Content-Encoding description: | @@ -6842,30 +10448,42 @@ paths: type: string format: binary responses: - '204': + "204": description: TSM snapshot successfully restored. default: description: Unexpected error - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /config: get: operationId: GetConfig tags: - Config - summary: Get the run-time configuration of the instance + - System information endpoints + summary: Retrieve runtime configuration + description: | + Returns the active runtime configuration of the InfluxDB instance. + + In InfluxDB v2.2+, use this endpoint to view your active runtime configuration, + including flags and environment variables. + + #### Related guides + + - [View your runtime server configuration](https://docs.influxdata.com/influxdb/v2.3/reference/config-options/#view-your-runtime-server-configuration) parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" responses: - '200': - description: Payload body contains the run-time configuration of the InfluxDB instance. + "200": + description: | + Success. + The response body contains the active runtime configuration of the InfluxDB instance. content: application/json: schema: - $ref: '#/components/schemas/Config' - '401': - $ref: '#/components/responses/ServerError' + $ref: "#/components/schemas/Config" + "401": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /remotes: get: operationId: GetRemoteConnections @@ -6873,7 +10491,7 @@ paths: - RemoteConnections summary: List all remote connections parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: orgID description: The organization ID. @@ -6890,16 +10508,16 @@ paths: type: string format: uri responses: - '200': + "200": description: List of remote connections content: application/json: schema: - $ref: '#/components/schemas/RemoteConnections' - '404': - $ref: '#/components/responses/ServerError' + $ref: "#/components/schemas/RemoteConnections" + "404": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" post: operationId: PostRemoteConnection tags: @@ -6910,49 +10528,49 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RemoteConnectionCreationRequest' + $ref: "#/components/schemas/RemoteConnectionCreationRequest" responses: - '201': + "201": description: Remote connection saved content: application/json: schema: - $ref: '#/components/schemas/RemoteConnection' - '400': - $ref: '#/components/responses/ServerError' + $ref: "#/components/schemas/RemoteConnection" + "400": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' - '/remotes/{remoteID}': + $ref: "#/components/responses/GeneralServerError" + "/remotes/{remoteID}": get: operationId: GetRemoteConnectionByID tags: - RemoteConnections summary: Retrieve a remote connection parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: remoteID schema: type: string required: true responses: - '200': + "200": description: Remote connection content: application/json: schema: - $ref: '#/components/schemas/RemoteConnection' - '404': - $ref: '#/components/responses/ServerError' + $ref: "#/components/schemas/RemoteConnection" + "404": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" patch: operationId: PatchRemoteConnectionByID tags: - RemoteConnections summary: Update a remote connection parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: remoteID schema: @@ -6963,39 +10581,39 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RemoteConnectionUpdateRequest' + $ref: "#/components/schemas/RemoteConnectionUpdateRequest" responses: - '200': + "200": description: Updated information saved content: application/json: schema: - $ref: '#/components/schemas/RemoteConnection' - '400': - $ref: '#/components/responses/ServerError' - '404': - $ref: '#/components/responses/ServerError' + $ref: "#/components/schemas/RemoteConnection" + "400": + $ref: "#/components/responses/GeneralServerError" + "404": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" delete: operationId: DeleteRemoteConnectionByID tags: - RemoteConnections summary: Delete a remote connection parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: remoteID schema: type: string required: true responses: - '204': + "204": description: Remote connection info deleted. - '404': - $ref: '#/components/responses/ServerError' + "404": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /replications: get: operationId: GetReplications @@ -7003,7 +10621,7 @@ paths: - Replications summary: List all replications parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: orgID description: The organization ID. @@ -7023,26 +10641,26 @@ paths: schema: type: string responses: - '200': + "200": description: List of replications content: application/json: schema: - $ref: '#/components/schemas/Replications' - '404': - $ref: '#/components/responses/ServerError' + $ref: "#/components/schemas/Replications" + "404": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" post: operationId: PostReplication tags: - Replications summary: Register a new replication parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: validate - description: 'If true, validate the replication, but don''t save it.' + description: "If true, validate the replication, but don't save it." schema: type: boolean default: false @@ -7051,51 +10669,51 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ReplicationCreationRequest' + $ref: "#/components/schemas/ReplicationCreationRequest" responses: - '201': + "201": description: Replication saved content: application/json: schema: - $ref: '#/components/schemas/Replication' - '204': - description: 'Replication validated, but not saved' - '400': - $ref: '#/components/responses/ServerError' + $ref: "#/components/schemas/Replication" + "204": + description: "Replication validated, but not saved" + "400": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' - '/replications/{replicationID}': + $ref: "#/components/responses/GeneralServerError" + "/replications/{replicationID}": get: operationId: GetReplicationByID tags: - Replications summary: Retrieve a replication parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: replicationID schema: type: string required: true responses: - '200': + "200": description: Replication content: application/json: schema: - $ref: '#/components/schemas/Replication' - '404': - $ref: '#/components/responses/ServerError' + $ref: "#/components/schemas/Replication" + "404": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" patch: operationId: PatchReplicationByID tags: - Replications summary: Update a replication parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: replicationID schema: @@ -7103,7 +10721,7 @@ paths: required: true - in: query name: validate - description: 'If true, validate the updated information, but don''t save it.' + description: "If true, validate the updated information, but don't save it." schema: type: boolean default: false @@ -7112,62 +10730,62 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ReplicationUpdateRequest' + $ref: "#/components/schemas/ReplicationUpdateRequest" responses: - '200': + "200": description: Updated information saved content: application/json: schema: - $ref: '#/components/schemas/Replication' - '204': - description: 'Updated replication validated, but not saved' - '400': - $ref: '#/components/responses/ServerError' - '404': - $ref: '#/components/responses/ServerError' + $ref: "#/components/schemas/Replication" + "204": + description: "Updated replication validated, but not saved" + "400": + $ref: "#/components/responses/GeneralServerError" + "404": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" delete: operationId: DeleteReplicationByID tags: - Replications summary: Delete a replication parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: replicationID schema: type: string required: true responses: - '204': + "204": description: Replication deleted. - '404': - $ref: '#/components/responses/ServerError' + "404": + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' - '/replications/{replicationID}/validate': + $ref: "#/components/responses/GeneralServerError" + "/replications/{replicationID}/validate": post: operationId: PostValidateReplicationByID tags: - Replications summary: Validate a replication parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: path name: replicationID schema: type: string required: true responses: - '204': + "204": description: Replication is valid - '400': + "400": description: Replication failed validation - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" default: - $ref: '#/components/responses/ServerError' + $ref: "#/components/responses/GeneralServerError" /dashboards: post: operationId: PostDashboards @@ -7175,39 +10793,39 @@ paths: - Dashboards summary: Create a dashboard parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" requestBody: description: Dashboard to create required: true content: application/json: schema: - $ref: '#/components/schemas/CreateDashboardRequest' + $ref: "#/components/schemas/CreateDashboardRequest" responses: - '201': + "201": description: Added dashboard content: application/json: schema: oneOf: - - $ref: '#/components/schemas/Dashboard' - - $ref: '#/components/schemas/DashboardWithViewProperties' + - $ref: "#/components/schemas/Dashboard" + - $ref: "#/components/schemas/DashboardWithViewProperties" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" get: operationId: GetDashboards tags: - Dashboards summary: List all dashboards parameters: - - $ref: '#/components/parameters/TraceSpan' - - $ref: '#/components/parameters/Offset' - - $ref: '#/components/parameters/Limit' - - $ref: '#/components/parameters/Descending' + - $ref: "#/components/parameters/TraceSpan" + - $ref: "#/components/parameters/Offset" + - $ref: "#/components/parameters/Limit" + - $ref: "#/components/parameters/Descending" - in: query name: owner description: A user identifier. Returns only dashboards where this user has the `owner` role. @@ -7224,7 +10842,7 @@ paths: - UpdatedAt - in: query name: id - description: 'A list of dashboard identifiers. Returns only the listed dashboards. If both `id` and `owner` are specified, only `id` is used.' + description: "A list of dashboard identifiers. Returns only the listed dashboards. If both `id` and `owner` are specified, only `id` is used." schema: type: array items: @@ -7240,51 +10858,68 @@ paths: schema: type: string responses: - '200': + "200": description: All dashboards content: application/json: schema: - $ref: '#/components/schemas/Dashboards' + $ref: "#/components/schemas/Dashboards" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" /tasks: get: operationId: GetTasks tags: + - Data I/O endpoints - Tasks - summary: List all tasks + summary: List tasks + description: | + Retrieves a list of [tasks](https://docs.influxdata.com/influxdb/v2.3/process-data/). + + To limit which tasks are returned, pass query parameters in your request. + If no query parameters are passed, InfluxDB returns all tasks up to the default `limit`. parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" - in: query name: name - description: Returns task with a specific name. + description: | + Task name. + Only returns tasks with this name. + Different tasks may have the same name. schema: type: string - in: query name: after schema: type: string - description: Return tasks after a specified ID. + description: | + Task ID. + Only returns tasks created after this task. - in: query name: user schema: type: string - description: Filter tasks to a specific user ID. + description: | + User ID. + Only returns tasks owned by this user. - in: query name: org schema: type: string - description: Filter tasks to a specific organization name. + description: | + Organization name. + Only returns tasks owned by this organization. - in: query name: orgID schema: type: string - description: Filter tasks to a specific organization ID. + description: | + Organization ID. + Only returns tasks owned by this organization. - in: query name: status schema: @@ -7292,7 +10927,9 @@ paths: enum: - active - inactive - description: Filter tasks by a status--"inactive" or "active". + description: | + Task status (`active` or `inactive`). + Only returns tasks with this status. - in: query name: limit schema: @@ -7300,57 +10937,300 @@ paths: minimum: 1 maximum: 500 default: 100 - description: The number of tasks to return + description: | + Limits the number of tasks returned. + The minimum is `1`, the maximum is `500`, and the default is `100`. - in: query name: type - description: 'Type of task, unset by default.' + description: | + Task type (`basic` or `system`). + + The default (`system`) response contains all the metadata properties for tasks. + To reduce the payload size, pass `basic` to omit some task properties (`flux`, `createdAt`, `updatedAt`) from the response. required: false schema: - default: '' + default: "" type: string enum: - basic - system responses: - '200': - description: A list of tasks + "200": + description: | + Success. + The response body contains the list of tasks. + content: + application/json: + schema: + $ref: "#/components/schemas/Tasks" + examples: + basicTypeTaskOutput: + summary: Basic output + description: Task fields returned with `?type=basic` + value: + links: + self: /api/v2/tasks?limit=100 + tasks: + - links: + labels: /api/v2/tasks/09956cbb6d378000/labels + logs: /api/v2/tasks/09956cbb6d378000/logs + members: /api/v2/tasks/09956cbb6d378000/members + owners: /api/v2/tasks/09956cbb6d378000/owners + runs: /api/v2/tasks/09956cbb6d378000/runs + self: /api/v2/tasks/09956cbb6d378000 + labels: [] + id: 09956cbb6d378000 + orgID: 48c88459ee424a04 + org: "" + ownerID: 0772396d1f411000 + name: task1 + status: active + flux: "" + every: 30m + latestCompleted: "2022-06-30T15:00:00Z" + lastRunStatus: success + systemTypeTaskOutput: + summary: System output + description: Task fields returned with `?type=system` + value: + links: + self: /api/v2/tasks?limit=100 + tasks: + - links: + labels: /api/v2/tasks/09956cbb6d378000/labels + logs: /api/v2/tasks/09956cbb6d378000/logs + members: /api/v2/tasks/09956cbb6d378000/members + owners: /api/v2/tasks/09956cbb6d378000/owners + runs: /api/v2/tasks/09956cbb6d378000/runs + self: /api/v2/tasks/09956cbb6d378000 + labels: [] + id: 09956cbb6d378000 + orgID: 48c88459ee424a04 + org: my-iot-center + ownerID: 0772396d1f411000 + name: task1 + description: IoT Center 90-day environment average. + status: active + flux: |- + option task = {name: "task1", every: 30m} + + from(bucket: "iot_center") + |> range(start: -90d) + |> filter(fn: (r) => r._measurement == "environment") + |> aggregateWindow(every: 1h, fn: mean) + every: 30m + latestCompleted: "2022-06-30T15:00:00Z" + lastRunStatus: success + createdAt: "2022-06-27T15:09:06Z" + updatedAt: "2022-06-28T18:10:15Z" + "401": + $ref: "#/components/responses/AuthorizationError" + "500": + $ref: "#/components/responses/InternalServerError" + default: + $ref: "#/components/responses/GeneralServerError" + x-codeSamples: + - lang: Shell + label: "cURL: all tasks, basic output" + source: | + curl https://localhost:8086/api/v2/tasks/?limit=-1&type=basic \ + --header 'Content-Type: application/json' \ + --header 'Authorization: Token INFLUX_API_TOKEN' + post: + operationId: PostTasks + tags: + - Data I/O endpoints + - Tasks + summary: Create a task + description: | + Creates a [task](https://docs.influxdata.com/influxdb/v2.3/process-data/) and returns the created task. + + #### Related guides + + - [Get started with tasks](https://docs.influxdata.com/influxdb/v2.3/process-data/get-started/) + - [Create a task](https://docs.influxdata.com/influxdb/v2.3/process-data/manage-tasks/create-task/) + - [Common tasks](https://docs.influxdata.com/influxdb/v2.3/process-data/common-tasks/) + - [Task configuration options](https://docs.influxdata.com/influxdb/v2.3/process-data/task-options/) + parameters: + - $ref: "#/components/parameters/TraceSpan" + requestBody: + description: The task to create. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/TaskCreateRequest" + responses: + "201": + description: Success. The response body contains a `tasks` list with the new task. + content: + application/json: + schema: + $ref: "#/components/schemas/Task" + "400": + description: | + Bad request. + The response body contains detail about the error. + + #### InfluxDB OSS + + - Returns this error if an incorrect value is passed for `org` or `orgID`. content: application/json: schema: - $ref: '#/components/schemas/Tasks' + $ref: "#/components/schemas/Error" + examples: + orgProvidedNotFound: + summary: The org or orgID passed doesn't own the token passed in the header + value: + code: invalid + message: "failed to decode request body: organization not found" + missingFluxError: + summary: Task in request body is missing Flux query + value: + code: invalid + message: "failed to decode request: missing flux" + "401": + $ref: "#/components/responses/AuthorizationError" + "500": + $ref: "#/components/responses/InternalServerError" default: description: Unexpected error content: application/json: schema: - $ref: '#/components/schemas/Error' - post: - operationId: PostTasks + $ref: "#/components/schemas/Error" + x-codeSamples: + - lang: Shell + label: "cURL: create a task" + source: | + curl http://localhost:8086/api/v2/tasks \ + --header "Content-type: application/json" \ + --header "Authorization: Token INFLUX_API_TOKEN" \ + --data-binary @- << EOF + { + "orgID": "INFLUX_ORG_ID", + "description": "IoT Center 30d environment average.", + "flux": "option task = {name: \"iot-center-task-1\", every: 30m}\ + from(bucket: \"iot_center\")\ + |> range(start: -30d)\ + |> filter(fn: (r) => r._measurement == \"environment\")\ + |> aggregateWindow(every: 1h, fn: mean)" + } + EOF + "/tasks/{taskID}": + get: + operationId: GetTasksID tags: + - Data I/O endpoints - Tasks - summary: Create a new task + summary: Retrieve a task + description: | + Retrieves a [task](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#task). parameters: - - $ref: '#/components/parameters/TraceSpan' + - $ref: "#/components/parameters/TraceSpan" + - in: path + name: taskID + schema: + type: string + required: true + description: The ID of the task to retrieve. + responses: + "200": + description: Success. The response body contains the task. + content: + application/json: + schema: + $ref: "#/components/schemas/Task" + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" + default: + $ref: "#/components/responses/GeneralServerError" + patch: + operationId: PatchTasksID + tags: + - Tasks + summary: Update a task + description: | + Updates a task and then cancels all scheduled runs of the task. + + Use this endpoint to set, modify, and clear task properties (for example: `cron`, `name`, `flux`, `status`). + Once InfluxDB applies the update, it cancels all previously scheduled runs of the task. + + To update a task, pass an object that contains the updated key-value pairs. + To activate or inactivate a task, set the `status` property. + _`"status": "inactive"`_ cancels scheduled runs and prevents manual runs of the task. requestBody: - description: Task to create + description: An object that contains updated task properties to apply. required: true content: application/json: schema: - $ref: '#/components/schemas/TaskCreateRequest' + $ref: "#/components/schemas/TaskUpdateRequest" + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: path + name: taskID + schema: + type: string + required: true + description: The ID of the task to update. responses: - '201': - description: Task created + "200": + description: Success. The response body contains the updated task. content: application/json: schema: - $ref: '#/components/schemas/Task' + $ref: "#/components/schemas/Task" + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" default: - description: Unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/responses/GeneralServerError" + delete: + operationId: DeleteTasksID + tags: + - Tasks + summary: Delete a task + description: | + Deletes a task and associated records. + + Use this endpoint to delete a task and all associated records (task runs, logs, and labels). + Once the task is deleted, InfluxDB cancels all scheduled runs of the task. + + If you want to disable a task instead of delete it, [update the task status to `inactive`](#operation/PatchTasksID). + parameters: + - $ref: "#/components/parameters/TraceSpan" + - in: path + name: taskID + schema: + type: string + required: true + description: The ID of the task to delete. + responses: + "204": + description: Success. The task and runs are deleted. Scheduled runs are canceled. + "400": + $ref: "#/components/responses/BadRequestError" + "401": + $ref: "#/components/responses/AuthorizationError" + "404": + $ref: "#/components/responses/ResourceNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" + default: + $ref: "#/components/responses/GeneralServerError" components: parameters: TraceSpan: @@ -7358,8 +11238,8 @@ components: name: Zap-Trace-Span description: OpenTracing span context example: - trace_id: '1' - span_id: '1' + trace_id: "1" + span_id: "1" baggage: key: value required: false @@ -7369,6 +11249,9 @@ components: in: query name: offset required: false + description: | + The offset for pagination. + The number of records to skip. schema: type: integer minimum: 0 @@ -7376,6 +11259,8 @@ components: in: query name: limit required: false + description: | + Limits the number of records returned. Default is `20`. schema: type: integer minimum: 1 @@ -7410,18 +11295,19 @@ components: - query properties: query: - description: Flux query script to be analyzed + description: | + The Flux query script to be analyzed. type: string Query: - description: Query influx using the Flux language + description: Query InfluxDB with the Flux language type: object required: - query properties: extern: - $ref: '#/components/schemas/File' + $ref: "#/components/schemas/File" query: - description: Query script to execute. + description: The query script to execute. type: string type: description: The type of query. Must be "flux". @@ -7432,11 +11318,34 @@ components: type: object additionalProperties: true description: | - Enumeration of key/value pairs that respresent parameters to be injected into query (can only specify either this field or extern and not both) + Key-value pairs passed as parameters during query execution. + + To use parameters in your query, pass a _`query`_ with `params` references (in dot notation)--for example: + + ```json + query: "from(bucket: params.mybucket) |> range(start: params.rangeStart) |> limit(n:1)" + ``` + + and pass _`params`_ with the key-value pairs--for example: + + ```json + params: { + "mybucket": "environment", + "rangeStart": "-30d" + } + ``` + + During query execution, InfluxDB passes _`params`_ to your script and substitutes the values. + + #### Limitations + + - If you use _`params`_, you can't use _`extern`_. dialect: - $ref: '#/components/schemas/Dialect' + $ref: "#/components/schemas/Dialect" now: - description: Specifies the time that should be reported as "now" in the query. Default is the server's now time. + description: | + Specifies the time that should be reported as `now` in the query. + Default is the server `now` time. type: string format: date-time Package: @@ -7444,7 +11353,7 @@ components: type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" path: description: Package import path type: string @@ -7455,46 +11364,46 @@ components: description: Package files type: array items: - $ref: '#/components/schemas/File' + $ref: "#/components/schemas/File" File: description: Represents a source from a single file type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" name: description: The name of the file. type: string package: - $ref: '#/components/schemas/PackageClause' + $ref: "#/components/schemas/PackageClause" imports: description: A list of package imports type: array items: - $ref: '#/components/schemas/ImportDeclaration' + $ref: "#/components/schemas/ImportDeclaration" body: description: List of Flux statements type: array items: - $ref: '#/components/schemas/Statement' + $ref: "#/components/schemas/Statement" PackageClause: description: Defines a package identifier type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" name: - $ref: '#/components/schemas/Identifier' + $ref: "#/components/schemas/Identifier" ImportDeclaration: description: Declares a package import type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" as: - $ref: '#/components/schemas/Identifier' + $ref: "#/components/schemas/Identifier" path: - $ref: '#/components/schemas/StringLiteral' + $ref: "#/components/schemas/StringLiteral" DeletePredicateRequest: description: The delete predicate request. type: object @@ -7503,21 +11412,26 @@ components: - stop properties: start: - description: RFC3339Nano + description: | + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)). + The earliest time to delete from. type: string format: date-time stop: - description: RFC3339Nano + description: | + A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)). + The latest time to delete from. type: string format: date-time predicate: - description: InfluxQL-like delete statement + description: | + An expression in [delete predicate syntax](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/delete-predicate/). example: tag1="value1" and (tag2="value2" and tag3!="value3") type: string Node: oneOf: - - $ref: '#/components/schemas/Expression' - - $ref: '#/components/schemas/Block' + - $ref: "#/components/schemas/Expression" + - $ref: "#/components/schemas/Block" NodeType: description: Type of AST node type: string @@ -7526,28 +11440,28 @@ components: type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" body: description: Block body type: array items: - $ref: '#/components/schemas/Statement' + $ref: "#/components/schemas/Statement" Statement: oneOf: - - $ref: '#/components/schemas/BadStatement' - - $ref: '#/components/schemas/VariableAssignment' - - $ref: '#/components/schemas/MemberAssignment' - - $ref: '#/components/schemas/ExpressionStatement' - - $ref: '#/components/schemas/ReturnStatement' - - $ref: '#/components/schemas/OptionStatement' - - $ref: '#/components/schemas/BuiltinStatement' - - $ref: '#/components/schemas/TestStatement' + - $ref: "#/components/schemas/BadStatement" + - $ref: "#/components/schemas/VariableAssignment" + - $ref: "#/components/schemas/MemberAssignment" + - $ref: "#/components/schemas/ExpressionStatement" + - $ref: "#/components/schemas/ReturnStatement" + - $ref: "#/components/schemas/OptionStatement" + - $ref: "#/components/schemas/BuiltinStatement" + - $ref: "#/components/schemas/TestStatement" BadStatement: description: A placeholder for statements for which no correct statement nodes can be created type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" text: description: Raw source text type: string @@ -7556,255 +11470,255 @@ components: type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" id: - $ref: '#/components/schemas/Identifier' + $ref: "#/components/schemas/Identifier" init: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" MemberAssignment: description: Object property assignment type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" member: - $ref: '#/components/schemas/MemberExpression' + $ref: "#/components/schemas/MemberExpression" init: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" ExpressionStatement: - description: May consist of an expression that does not return a value and is executed solely for its side-effects + description: May consist of an expression that doesn't return a value and is executed solely for its side-effects type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" expression: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" ReturnStatement: description: Defines an expression to return type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" argument: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" OptionStatement: description: A single variable declaration type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" assignment: oneOf: - - $ref: '#/components/schemas/VariableAssignment' - - $ref: '#/components/schemas/MemberAssignment' + - $ref: "#/components/schemas/VariableAssignment" + - $ref: "#/components/schemas/MemberAssignment" BuiltinStatement: description: Declares a builtin identifier and its type type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" id: - $ref: '#/components/schemas/Identifier' + $ref: "#/components/schemas/Identifier" TestStatement: description: Declares a Flux test case type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" assignment: - $ref: '#/components/schemas/VariableAssignment' + $ref: "#/components/schemas/VariableAssignment" Expression: oneOf: - - $ref: '#/components/schemas/ArrayExpression' - - $ref: '#/components/schemas/DictExpression' - - $ref: '#/components/schemas/FunctionExpression' - - $ref: '#/components/schemas/BinaryExpression' - - $ref: '#/components/schemas/CallExpression' - - $ref: '#/components/schemas/ConditionalExpression' - - $ref: '#/components/schemas/LogicalExpression' - - $ref: '#/components/schemas/MemberExpression' - - $ref: '#/components/schemas/IndexExpression' - - $ref: '#/components/schemas/ObjectExpression' - - $ref: '#/components/schemas/ParenExpression' - - $ref: '#/components/schemas/PipeExpression' - - $ref: '#/components/schemas/UnaryExpression' - - $ref: '#/components/schemas/BooleanLiteral' - - $ref: '#/components/schemas/DateTimeLiteral' - - $ref: '#/components/schemas/DurationLiteral' - - $ref: '#/components/schemas/FloatLiteral' - - $ref: '#/components/schemas/IntegerLiteral' - - $ref: '#/components/schemas/PipeLiteral' - - $ref: '#/components/schemas/RegexpLiteral' - - $ref: '#/components/schemas/StringLiteral' - - $ref: '#/components/schemas/UnsignedIntegerLiteral' - - $ref: '#/components/schemas/Identifier' + - $ref: "#/components/schemas/ArrayExpression" + - $ref: "#/components/schemas/DictExpression" + - $ref: "#/components/schemas/FunctionExpression" + - $ref: "#/components/schemas/BinaryExpression" + - $ref: "#/components/schemas/CallExpression" + - $ref: "#/components/schemas/ConditionalExpression" + - $ref: "#/components/schemas/LogicalExpression" + - $ref: "#/components/schemas/MemberExpression" + - $ref: "#/components/schemas/IndexExpression" + - $ref: "#/components/schemas/ObjectExpression" + - $ref: "#/components/schemas/ParenExpression" + - $ref: "#/components/schemas/PipeExpression" + - $ref: "#/components/schemas/UnaryExpression" + - $ref: "#/components/schemas/BooleanLiteral" + - $ref: "#/components/schemas/DateTimeLiteral" + - $ref: "#/components/schemas/DurationLiteral" + - $ref: "#/components/schemas/FloatLiteral" + - $ref: "#/components/schemas/IntegerLiteral" + - $ref: "#/components/schemas/PipeLiteral" + - $ref: "#/components/schemas/RegexpLiteral" + - $ref: "#/components/schemas/StringLiteral" + - $ref: "#/components/schemas/UnsignedIntegerLiteral" + - $ref: "#/components/schemas/Identifier" ArrayExpression: description: Used to create and directly specify the elements of an array object type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" elements: description: Elements of the array type: array items: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" DictExpression: description: Used to create and directly specify the elements of a dictionary type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" elements: description: Elements of the dictionary type: array items: - $ref: '#/components/schemas/DictItem' + $ref: "#/components/schemas/DictItem" DictItem: - description: A key/value pair in a dictionary + description: A key-value pair in a dictionary. type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" key: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" val: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" FunctionExpression: description: Function expression type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" params: description: Function parameters type: array items: - $ref: '#/components/schemas/Property' + $ref: "#/components/schemas/Property" body: - $ref: '#/components/schemas/Node' + $ref: "#/components/schemas/Node" BinaryExpression: description: uses binary operators to act on two operands in an expression type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" operator: type: string left: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" right: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" CallExpression: description: Represents a function call type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" callee: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" arguments: description: Function arguments type: array items: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" ConditionalExpression: - description: 'Selects one of two expressions, `Alternate` or `Consequent`, depending on a third boolean expression, `Test`' + description: "Selects one of two expressions, `Alternate` or `Consequent`, depending on a third boolean expression, `Test`" type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" test: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" alternate: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" consequent: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" LogicalExpression: description: Represents the rule conditions that collectively evaluate to either true or false type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" operator: type: string left: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" right: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" MemberExpression: description: Represents accessing a property of an object type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" object: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" property: - $ref: '#/components/schemas/PropertyKey' + $ref: "#/components/schemas/PropertyKey" IndexExpression: description: Represents indexing into an array type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" array: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" index: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" ObjectExpression: description: Allows the declaration of an anonymous object within a declaration type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" properties: description: Object properties type: array items: - $ref: '#/components/schemas/Property' + $ref: "#/components/schemas/Property" ParenExpression: description: Represents an expression wrapped in parenthesis type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" expression: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" PipeExpression: description: Call expression with pipe argument type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" argument: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" call: - $ref: '#/components/schemas/CallExpression' + $ref: "#/components/schemas/CallExpression" UnaryExpression: description: Uses operators to act on a single operand in an expression type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" operator: type: string argument: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" BooleanLiteral: description: Represents boolean values type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" value: type: boolean DateTimeLiteral: - description: Represents an instant in time with nanosecond precision using the syntax of golang's RFC3339 Nanosecond variant + description: "Represents an instant in time with nanosecond precision in [RFC3339Nano date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339nano-timestamp)." type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" value: type: string format: date-time @@ -7813,18 +11727,18 @@ components: type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" values: description: Duration values type: array items: - $ref: '#/components/schemas/Duration' + $ref: "#/components/schemas/Duration" FloatLiteral: description: Represents floating point numbers according to the double representations defined by the IEEE-754-1985 type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" value: type: number IntegerLiteral: @@ -7832,21 +11746,21 @@ components: type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" value: type: string PipeLiteral: - description: 'Represents a specialized literal value, indicating the left hand value of a pipe expression' + description: "Represents a specialized literal value, indicating the left hand value of a pipe expression" type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" RegexpLiteral: description: Expressions begin and end with `/` and are regular expressions with syntax accepted by RE2 type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" value: type: string StringLiteral: @@ -7854,7 +11768,7 @@ components: type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" value: type: string UnsignedIntegerLiteral: @@ -7862,7 +11776,7 @@ components: type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" value: type: string Duration: @@ -7870,7 +11784,7 @@ components: type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" magnitude: type: integer unit: @@ -7880,39 +11794,53 @@ components: type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" key: - $ref: '#/components/schemas/PropertyKey' + $ref: "#/components/schemas/PropertyKey" value: - $ref: '#/components/schemas/Expression' + $ref: "#/components/schemas/Expression" PropertyKey: oneOf: - - $ref: '#/components/schemas/Identifier' - - $ref: '#/components/schemas/StringLiteral' + - $ref: "#/components/schemas/Identifier" + - $ref: "#/components/schemas/StringLiteral" Identifier: description: A valid Flux identifier type: object properties: type: - $ref: '#/components/schemas/NodeType' + $ref: "#/components/schemas/NodeType" name: type: string Dialect: - description: 'Dialect are options to change the default CSV output format; https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#dialect-descriptions' + description: | + Options for tabular data output. + Default output is [annotated CSV](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/annotated-csv/#csv-response-format) with headers. + + For more information about tabular data **dialect**, + see [W3 metadata vocabulary for tabular data](https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#dialect-descriptions). type: object properties: header: - description: 'If true, the results will contain a header row' + description: "If true, the results contain a header row." type: boolean default: true delimiter: - description: 'Separator between cells; the default is ,' + description: "The separator used between cells. Default is a comma (`,`)." type: string - default: ',' + default: "," maxLength: 1 minLength: 1 annotations: - description: 'https://www.w3.org/TR/2015/REC-tabular-data-model-20151217/#columns' + description: | + Annotation rows to include in the results. + An _annotation_ is metadata associated with an object (column) in the data model. + + #### Related guides + + - See [Annotated CSV annotations](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/annotated-csv/#annotations) for examples and more information. + + For more information about **annotations** in tabular data, + see [W3 metadata vocabulary for tabular data](https://www.w3.org/TR/2015/REC-tabular-data-model-20151217/#columns). type: array uniqueItems: true items: @@ -7922,13 +11850,23 @@ components: - datatype - default commentPrefix: - description: Character prefixed to comment strings + description: The character prefixed to comment strings. Default is a number sign (`#`). type: string - default: '#' + default: "#" maxLength: 1 minLength: 0 dateTimeFormat: - description: Format of timestamps + description: | + The format for timestamps in results. + Default is [`RFC3339` date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp). + To include nanoseconds in timestamps, use `RFC3339Nano`. + + #### Example formatted date/time values + + | Format | Value | + |:------------|:----------------------------| + | `RFC3339` | `"2006-01-02T15:04:05Z07:00"` | + | `RFC3339Nano` | `"2006-01-02T15:04:05.999999999Z07:00"` | type: string default: RFC3339 enum: @@ -7937,7 +11875,7 @@ components: AuthorizationUpdateRequest: properties: status: - description: 'Status of the token. If `inactive`, requests using the token will be rejected.' + description: "Status of the token. If `inactive`, requests using the token will be rejected." default: active type: string enum: @@ -7949,22 +11887,47 @@ components: PostBucketRequest: properties: orgID: + description: | + Organization ID. + The ID of the organization. type: string name: + description: | + The name of the bucket. type: string description: + description: | + A description of the bucket. type: string rp: + description: | + Retention policy is an InfluxDB 1.x concept that represents the duration + of time that each data point in the retention policy persists. Use `rp` + for compatibility with InfluxDB 1.x. + The InfluxDB 2.x and Cloud equivalent is + [retention period](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#retention-period). type: string + default: "0" retentionRules: - $ref: '#/components/schemas/RetentionRules' + $ref: "#/components/schemas/RetentionRules" schemaType: - $ref: '#/components/schemas/SchemaType' + description: | + Schema Type. + Use `explicit` to enforce column names, tags, fields, and data types for + your data. + + #### InfluxDB Cloud + + - Default is `implicit`. + + #### InfluxDB OSS + + - Doesn't support `schemaType`. + $ref: "#/components/schemas/SchemaType" default: implicit required: - orgID - name - - retentionRules Bucket: properties: links: @@ -7980,22 +11943,22 @@ components: properties: labels: description: URL to retrieve labels for this bucket. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" members: description: URL to retrieve members that can read this bucket. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" org: description: URL to retrieve parent organization for this bucket. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" owners: description: URL to retrieve owners that can read and write to this bucket. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" self: description: URL for this bucket. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" write: description: URL to write line protocol to this bucket. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" id: readOnly: true type: string @@ -8015,7 +11978,7 @@ components: rp: type: string schemaType: - $ref: '#/components/schemas/SchemaType' + $ref: "#/components/schemas/SchemaType" default: implicit createdAt: type: string @@ -8026,9 +11989,9 @@ components: format: date-time readOnly: true retentionRules: - $ref: '#/components/schemas/RetentionRules' + $ref: "#/components/schemas/RetentionRules" labels: - $ref: '#/components/schemas/Labels' + $ref: "#/components/schemas/Labels" required: - name - retentionRules @@ -8037,34 +12000,46 @@ components: properties: links: readOnly: true - $ref: '#/components/schemas/Links' + $ref: "#/components/schemas/Links" buckets: type: array items: - $ref: '#/components/schemas/Bucket' + $ref: "#/components/schemas/Bucket" RetentionRules: type: array - description: Rules to expire or retain data. No rules means data never expires. + description: | + Retention rules to expire or retain data. + #### InfluxDB Cloud + + - `retentionRules` is required. + + #### InfluxDB OSS + + - `retentionRules` isn't required. items: - $ref: '#/components/schemas/RetentionRule' + $ref: "#/components/schemas/RetentionRule" PatchBucketRequest: type: object - description: Updates to an existing bucket resource. + description: | + An object that contains updated bucket properties to apply. properties: name: type: string + description: | + The name of the bucket. description: + description: | + A description of the bucket. type: string retentionRules: - $ref: '#/components/schemas/PatchRetentionRules' + $ref: "#/components/schemas/PatchRetentionRules" PatchRetentionRules: type: array description: Updates to rules to expire or retain data. No rules means no updates. items: - $ref: '#/components/schemas/PatchRetentionRule' + $ref: "#/components/schemas/PatchRetentionRule" PatchRetentionRule: type: object - description: Updates to a rule to expire or retain data. properties: type: type: string @@ -8074,15 +12049,33 @@ components: everySeconds: type: integer format: int64 - description: Duration in seconds for how long data will be kept in the database. 0 means infinite. + description: | + The number of seconds to keep data. + Default duration is `2592000` (30 days). + `0` represents infinite retention. example: 86400 + default: 2592000 minimum: 0 shardGroupDurationSeconds: type: integer format: int64 - description: Shard duration measured in seconds. + description: | + The [shard group duration](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#shard). + The number of seconds that each shard group covers. + + #### InfluxDB Cloud + + - Doesn't use `shardGroupDurationsSeconds`. + + #### InfluxDB OSS + + - Default value depends on the [bucket retention period](https://docs.influxdata.com/influxdb/v2.3/reference/internals/shards/#shard-group-duration). + + #### Related guides + + - InfluxDB [shards and shard groups](https://docs.influxdata.com/influxdb/v2.3/reference/internals/shards/) required: - - type + - everySeconds RetentionRule: type: object properties: @@ -8094,15 +12087,29 @@ components: everySeconds: type: integer format: int64 - description: Duration in seconds for how long data will be kept in the database. 0 means infinite. + description: | + The duration in seconds for how long data will be kept in the database. + The default duration is 2592000 (30 days). + 0 represents infinite retention. example: 86400 + default: 2592000 minimum: 0 shardGroupDurationSeconds: type: integer format: int64 - description: Shard duration measured in seconds. + description: | + The shard group duration. + The duration or interval (in seconds) that each shard group covers. + + #### InfluxDB Cloud + + - Does not use `shardGroupDurationsSeconds`. + + #### InfluxDB OSS + + - Default value depends on the + [bucket retention period](https://docs.influxdata.com/influxdb/v2.3/v2.3/reference/internals/shards/#shard-group-duration). required: - - type - everySeconds Link: type: string @@ -8111,13 +12118,15 @@ components: description: URI of resource. Links: type: object + description: | + URI pointers for additional paged results. properties: next: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" self: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" prev: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" required: - self Logs: @@ -8127,15 +12136,16 @@ components: readOnly: true type: array items: - $ref: '#/components/schemas/LogEvent' + $ref: "#/components/schemas/LogEvent" LogEvent: type: object properties: time: readOnly: true - description: 'Time event occurred, RFC3339Nano.' + description: "The time ([RFC3339Nano date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339nano-timestamp)) that the event occurred." type: string format: date-time + example: "2006-01-02T15:04:05.999999999Z07:00" message: readOnly: true description: A description of the event that occurred. @@ -8143,7 +12153,7 @@ components: example: Halt and catch fire runID: readOnly: true - description: the ID of the task that logged + description: The ID of the task run that generated the event. type: string Organization: properties: @@ -8161,21 +12171,21 @@ components: dashboards: /api/v2/dashboards?org=myorg properties: self: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" members: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" owners: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" labels: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" secrets: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" buckets: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" tasks: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" dashboards: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" id: readOnly: true type: string @@ -8204,11 +12214,11 @@ components: type: object properties: links: - $ref: '#/components/schemas/Links' + $ref: "#/components/schemas/Links" orgs: type: array items: - $ref: '#/components/schemas/Organization' + $ref: "#/components/schemas/Organization" PostOrganizationRequest: type: object properties: @@ -8232,12 +12242,45 @@ components: properties: dryRun: type: boolean + description: | + Only applies a dry run of the templates passed in the request. + + - Validates the template and generates a resource diff and summary. + - Doesn't install templates or make changes to the InfluxDB instance. orgID: type: string + description: | + Organization ID. + InfluxDB applies templates to this organization. + The organization owns all resources created by the template. + + To find your organization, see how to + [view organizations](https://docs.influxdata.com/influxdb/v2.3/organizations/view-orgs/). stackID: type: string + description: | + ID of the stack to update. + + To apply templates to an existing stack in the organization, use the `stackID` parameter. + If you apply templates without providing a stack ID, + InfluxDB initializes a new stack with all new resources. + + To find a stack ID, use the InfluxDB [`/api/v2/stacks` API endpoint](#operation/ListStacks) to list stacks. + + #### Related guides + + - [Stacks](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/stacks/) + - [View stacks](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/stacks/view/) template: type: object + description: | + A template object to apply. + A template object has a `contents` property + with an array of InfluxDB resource configurations. + + Pass `template` to apply only one template object. + If you use `template`, you can't use the `templates` parameter. + If you want to apply multiple template objects, use `templates` instead. properties: contentType: type: string @@ -8246,9 +12289,16 @@ components: items: type: string contents: - $ref: '#/components/schemas/Template' + $ref: "#/components/schemas/Template" templates: type: array + description: | + A list of template objects to apply. + A template object has a `contents` property + with an array of InfluxDB resource configurations. + + Use the `templates` parameter to apply multiple template objects. + If you use `templates`, you can't use the `template` parameter. items: type: object properties: @@ -8259,9 +12309,29 @@ components: items: type: string contents: - $ref: '#/components/schemas/Template' + $ref: "#/components/schemas/Template" envRefs: type: object + description: | + An object with key-value pairs that map to **environment references** in templates. + + Environment references in templates are `envRef` objects with an `envRef.key` + property. + To substitute a custom environment reference value when applying templates, + pass `envRefs` with the `envRef.key` and the value. + + When you apply a template, InfluxDB replaces `envRef` objects in the template + with the values that you provide in the `envRefs` parameter. + For more examples, see how to [define environment references](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/use/#define-environment-references). + + The following template fields may use environment references: + + - `metadata.name` + - `spec.endpointName` + - `spec.associations.name` + + For more information about including environment references in template fields, see how to + [include user-definable resource names](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/create/#include-user-definable-resource-names). additionalProperties: oneOf: - type: string @@ -8270,10 +12340,56 @@ components: - type: boolean secrets: type: object + description: | + An object with key-value pairs that map to **secrets** in queries. + + Queries may reference secrets stored in InfluxDB--for example, + the following Flux script retrieves `POSTGRES_USERNAME` and `POSTGRES_PASSWORD` + secrets and then uses them to connect to a PostgreSQL database: + + ```js + import "sql" + import "influxdata/influxdb/secrets" + + username = secrets.get(key: "POSTGRES_USERNAME") + password = secrets.get(key: "POSTGRES_PASSWORD") + + sql.from( + driverName: "postgres", + dataSourceName: "postgresql://${username}:${password}@localhost:5432", + query: "SELECT * FROM example_table", + ) + ``` + + To define secret values in your `/api/v2/templates/apply` request, + pass the `secrets` parameter with key-value pairs--for example: + + ```json + { + ... + "secrets": { + "POSTGRES_USERNAME": "pguser", + "POSTGRES_PASSWORD": "foo" + } + ... + } + ``` + + InfluxDB stores the key-value pairs as secrets that you can access with `secrets.get()`. + Once stored, you can't view secret values in InfluxDB. + + #### Related guides + + - [How to pass secrets when installing a template](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/use/#pass-secrets-when-installing-a-template) additionalProperties: type: string remotes: type: array + description: | + A list of URLs for template files. + + To apply a template manifest file located at a URL, pass `remotes` + with an array that contains the URL. items: type: object properties: @@ -8285,6 +12401,15 @@ components: - url actions: type: array + description: | + A list of `action` objects. + Actions let you customize how InfluxDB applies templates in the request. + + You can use the following actions to prevent creating or updating resources: + + - A `skipKind` action skips template resources of a specified `kind`. + - A `skipResource` action skips template resources with a specified `metadata.name` + and `kind`. items: oneOf: - type: object @@ -8297,7 +12422,7 @@ components: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" required: - kind - type: object @@ -8310,7 +12435,7 @@ components: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" resourceTemplateName: type: string required: @@ -8355,7 +12480,7 @@ components: byResourceKind: type: array items: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" resources: type: array items: @@ -8364,10 +12489,10 @@ components: id: type: string kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" name: type: string - description: 'if defined with id, name is used for resource exported by id. if defined independently, resources strictly matching name are exported' + description: "if defined with id, name is used for resource exported by id. if defined independently, resources strictly matching name are exported" required: - id - kind @@ -8393,14 +12518,14 @@ components: byResourceKind: type: array items: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" resources: type: array items: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" name: type: string required: @@ -8410,18 +12535,55 @@ components: type: array items: type: object + description: | + A template entry. + Defines an InfluxDB resource in a template. properties: apiVersion: type: string + example: influxdata.com/v2alpha1 kind: - $ref: '#/components/schemas/TemplateKind' - meta: + $ref: "#/components/schemas/TemplateKind" + metadata: type: object + description: | + Metadata properties used for the resource when the template is applied. properties: name: type: string spec: type: object + description: | + Configuration properties used for the resource when the template is applied. + Key-value pairs map to the specification for the resource. + + The following code samples show `spec` configurations for template resources: + + - A bucket: + + ```json + { "spec": { + "name": "iot_center", + "retentionRules": [{ + "everySeconds": 2.592e+06, + "type": "expire" + }] + } + } + ``` + + - A variable: + + ```json + { "spec": { + "language": "flux", + "name": "Node_Service", + "query": "import \"influxdata/influxdb/v1\"\r\nv1.tagValues(bucket: \"iot_center\", + tag: \"service\")", + "type": "query" + } + } + ``` TemplateEnvReferences: type: array items: @@ -8474,7 +12636,7 @@ components: orgID: type: string kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string name: @@ -8486,26 +12648,26 @@ components: labelAssociations: type: array items: - $ref: '#/components/schemas/TemplateSummaryLabel' + $ref: "#/components/schemas/TemplateSummaryLabel" envReferences: - $ref: '#/components/schemas/TemplateEnvReferences' + $ref: "#/components/schemas/TemplateEnvReferences" checks: type: array items: allOf: - - $ref: '#/components/schemas/CheckDiscriminator' + - $ref: "#/components/schemas/CheckDiscriminator" - type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string labelAssociations: type: array items: - $ref: '#/components/schemas/TemplateSummaryLabel' + $ref: "#/components/schemas/TemplateSummaryLabel" envReferences: - $ref: '#/components/schemas/TemplateEnvReferences' + $ref: "#/components/schemas/TemplateEnvReferences" dashboards: type: array items: @@ -8516,7 +12678,7 @@ components: orgID: type: string kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string name: @@ -8526,17 +12688,17 @@ components: labelAssociations: type: array items: - $ref: '#/components/schemas/TemplateSummaryLabel' + $ref: "#/components/schemas/TemplateSummaryLabel" charts: type: array items: - $ref: '#/components/schemas/TemplateChart' + $ref: "#/components/schemas/TemplateChart" envReferences: - $ref: '#/components/schemas/TemplateEnvReferences' + $ref: "#/components/schemas/TemplateEnvReferences" labels: type: array items: - $ref: '#/components/schemas/TemplateSummaryLabel' + $ref: "#/components/schemas/TemplateSummaryLabel" labelMappings: type: array items: @@ -8570,26 +12732,26 @@ components: type: array items: allOf: - - $ref: '#/components/schemas/NotificationEndpointDiscriminator' + - $ref: "#/components/schemas/NotificationEndpointDiscriminator" - type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string labelAssociations: type: array items: - $ref: '#/components/schemas/TemplateSummaryLabel' + $ref: "#/components/schemas/TemplateSummaryLabel" envReferences: - $ref: '#/components/schemas/TemplateEnvReferences' + $ref: "#/components/schemas/TemplateEnvReferences" notificationRules: type: array items: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string name: @@ -8633,16 +12795,16 @@ components: labelAssociations: type: array items: - $ref: '#/components/schemas/TemplateSummaryLabel' + $ref: "#/components/schemas/TemplateSummaryLabel" envReferences: - $ref: '#/components/schemas/TemplateEnvReferences' + $ref: "#/components/schemas/TemplateEnvReferences" tasks: type: array items: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string id: @@ -8662,31 +12824,31 @@ components: status: type: string envReferences: - $ref: '#/components/schemas/TemplateEnvReferences' + $ref: "#/components/schemas/TemplateEnvReferences" telegrafConfigs: type: array items: allOf: - - $ref: '#/components/schemas/TelegrafRequest' + - $ref: "#/components/schemas/TelegrafRequest" - type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string labelAssociations: type: array items: - $ref: '#/components/schemas/TemplateSummaryLabel' + $ref: "#/components/schemas/TemplateSummaryLabel" envReferences: - $ref: '#/components/schemas/TemplateEnvReferences' + $ref: "#/components/schemas/TemplateEnvReferences" variables: type: array items: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string id: @@ -8698,13 +12860,13 @@ components: description: type: string arguments: - $ref: '#/components/schemas/VariableProperties' + $ref: "#/components/schemas/VariableProperties" labelAssociations: type: array items: - $ref: '#/components/schemas/TemplateSummaryLabel' + $ref: "#/components/schemas/TemplateSummaryLabel" envReferences: - $ref: '#/components/schemas/TemplateEnvReferences' + $ref: "#/components/schemas/TemplateEnvReferences" diff: type: object properties: @@ -8714,7 +12876,7 @@ components: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" stateStatus: type: string id: @@ -8729,7 +12891,7 @@ components: description: type: string retentionRules: - $ref: '#/components/schemas/RetentionRules' + $ref: "#/components/schemas/RetentionRules" old: type: object properties: @@ -8738,14 +12900,14 @@ components: description: type: string retentionRules: - $ref: '#/components/schemas/RetentionRules' + $ref: "#/components/schemas/RetentionRules" checks: type: array items: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" stateStatus: type: string id: @@ -8753,9 +12915,9 @@ components: templateMetaName: type: string new: - $ref: '#/components/schemas/CheckDiscriminator' + $ref: "#/components/schemas/CheckDiscriminator" old: - $ref: '#/components/schemas/CheckDiscriminator' + $ref: "#/components/schemas/CheckDiscriminator" dashboards: type: array items: @@ -8766,7 +12928,7 @@ components: id: type: string kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string new: @@ -8779,7 +12941,7 @@ components: charts: type: array items: - $ref: '#/components/schemas/TemplateChart' + $ref: "#/components/schemas/TemplateChart" old: type: object properties: @@ -8790,7 +12952,7 @@ components: charts: type: array items: - $ref: '#/components/schemas/TemplateChart' + $ref: "#/components/schemas/TemplateChart" labels: type: array items: @@ -8799,7 +12961,7 @@ components: stateStatus: type: string kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" id: type: string templateMetaName: @@ -8849,7 +13011,7 @@ components: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" stateStatus: type: string id: @@ -8857,16 +13019,16 @@ components: templateMetaName: type: string new: - $ref: '#/components/schemas/NotificationEndpointDiscriminator' + $ref: "#/components/schemas/NotificationEndpointDiscriminator" old: - $ref: '#/components/schemas/NotificationEndpointDiscriminator' + $ref: "#/components/schemas/NotificationEndpointDiscriminator" notificationRules: type: array items: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" stateStatus: type: string id: @@ -8961,7 +13123,7 @@ components: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" stateStatus: type: string id: @@ -9008,7 +13170,7 @@ components: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" stateStatus: type: string id: @@ -9016,16 +13178,16 @@ components: templateMetaName: type: string new: - $ref: '#/components/schemas/TelegrafRequest' + $ref: "#/components/schemas/TelegrafRequest" old: - $ref: '#/components/schemas/TelegrafRequest' + $ref: "#/components/schemas/TelegrafRequest" variables: type: array items: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" stateStatus: type: string id: @@ -9040,7 +13202,7 @@ components: description: type: string args: - $ref: '#/components/schemas/VariableProperties' + $ref: "#/components/schemas/VariableProperties" old: type: object properties: @@ -9049,14 +13211,14 @@ components: description: type: string args: - $ref: '#/components/schemas/VariableProperties' + $ref: "#/components/schemas/VariableProperties" errors: type: array items: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" reason: type: string fields: @@ -9075,7 +13237,7 @@ components: orgID: type: string kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string name: @@ -9088,7 +13250,7 @@ components: description: type: string envReferences: - $ref: '#/components/schemas/TemplateEnvReferences' + $ref: "#/components/schemas/TemplateEnvReferences" TemplateChart: type: object properties: @@ -9101,7 +13263,7 @@ components: width: type: integer properties: - $ref: '#/components/schemas/ViewProperties' + $ref: "#/components/schemas/ViewProperties" Stack: type: object properties: @@ -9138,7 +13300,7 @@ components: resourceID: type: string kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" templateMetaName: type: string associations: @@ -9147,7 +13309,7 @@ components: type: object properties: kind: - $ref: '#/components/schemas/TemplateKind' + $ref: "#/components/schemas/TemplateKind" metaName: type: string links: @@ -9167,11 +13329,11 @@ components: type: object properties: links: - $ref: '#/components/schemas/Links' + $ref: "#/components/schemas/Links" runs: type: array items: - $ref: '#/components/schemas/Run' + $ref: "#/components/schemas/Run" Run: properties: id: @@ -9190,7 +13352,7 @@ components: - success - canceled scheduledFor: - description: 'Time used for run''s "now" option, RFC3339.' + description: "The time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp) used for the run's `now` option." type: string format: date-time log: @@ -9198,22 +13360,29 @@ components: type: array readOnly: true items: - $ref: '#/components/schemas/LogEvent' + $ref: "#/components/schemas/LogEvent" + flux: + description: Flux used for the task + type: string + readOnly: true startedAt: readOnly: true - description: 'Time run started executing, RFC3339Nano.' + description: "The time ([RFC3339Nano date/time format](https://go.dev/src/time/format.go)) the run started executing." type: string format: date-time + example: "2006-01-02T15:04:05.999999999Z07:00" finishedAt: readOnly: true - description: 'Time run finished executing, RFC3339Nano.' + description: "The time ([RFC3339Nano date/time format](https://go.dev/src/time/format.go)) the run finished executing." type: string format: date-time + example: "2006-01-02T15:04:05.999999999Z07:00" requestedAt: readOnly: true - description: 'Time run was manually requested, RFC3339Nano.' + description: "The time ([RFC3339Nano date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339nano-timestamp)) the run was manually requested." type: string format: date-time + example: "2006-01-02T15:04:05.999999999Z07:00" links: type: object readOnly: true @@ -9232,142 +13401,36 @@ components: type: string format: uri RunManually: - properties: - scheduledFor: - nullable: true - description: 'Time used for run''s "now" option, RFC3339. Default is the server''s now time.' - type: string - format: date-time - Tasks: - type: object - properties: - links: - readOnly: true - $ref: '#/components/schemas/Links' - tasks: - type: array - items: - $ref: '#/components/schemas/Task' - Task: - type: object - properties: - id: - readOnly: true - type: string - type: - description: 'Type of the task, useful for filtering a task list.' - type: string - orgID: - description: ID of the organization that owns the task. - type: string - org: - description: Name of the organization that owns the task. - type: string - name: - description: Name of the task. - type: string - ownerID: - description: ID of the user who owns this Task. - type: string - description: - description: Description of the task. - type: string - status: - $ref: '#/components/schemas/TaskStatusType' - labels: - $ref: '#/components/schemas/Labels' - authorizationID: - description: ID of the authorization used when the task communicates with the query engine. - type: string - flux: - description: Flux script to run for this task. - type: string - every: - description: |- - Interval at which the task runs. `every` also determines when the task first runs, depending on the specified time. - Value is a [duration literal](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals)). - type: string - format: duration - cron: - description: |- - [Cron expression](https://en.wikipedia.org/wiki/Cron#Overview) that defines the schedule on which the task runs. Cron scheduling is based on system time. - Value is a [Cron expression](https://en.wikipedia.org/wiki/Cron#Overview). - type: string - offset: - description: |- - [Duration](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals) to delay execution of the task after the scheduled time has elapsed. `0` removes the offset. - The value is a [duration literal](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals). - type: string - format: duration - latestCompleted: - description: |- - Timestamp of the latest scheduled and completed run. - Value is a timestamp in [RFC3339 date/time format](https://docs.influxdata.com/flux/v0.x/data-types/basic/time/#time-syntax). - type: string - format: date-time - readOnly: true - lastRunStatus: - readOnly: true - type: string - enum: - - failed - - success - - canceled - lastRunError: - readOnly: true - type: string - createdAt: - type: string - format: date-time - readOnly: true - updatedAt: - type: string - format: date-time - readOnly: true - links: - type: object - readOnly: true - example: - self: /api/v2/tasks/1 - owners: /api/v2/tasks/1/owners - members: /api/v2/tasks/1/members - labels: /api/v2/tasks/1/labels - runs: /api/v2/tasks/1/runs - logs: /api/v2/tasks/1/logs - properties: - self: - $ref: '#/components/schemas/Link' - owners: - $ref: '#/components/schemas/Link' - members: - $ref: '#/components/schemas/Link' - runs: - $ref: '#/components/schemas/Link' - logs: - $ref: '#/components/schemas/Link' - labels: - $ref: '#/components/schemas/Link' - required: - - id - - name - - orgID - - flux + properties: + scheduledFor: + nullable: true + description: | + The time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp) + used for the run's `now` option. + Default is the server _now_ time. + type: string + format: date-time TaskStatusType: type: string enum: - active - inactive + description: | + `inactive` cancels scheduled runs and prevents manual runs of the task. UserResponse: properties: id: readOnly: true type: string - oauthID: - type: string + description: | + The ID of the user. name: type: string + description: | + The name of the user. status: - description: If inactive the user is inactive. + description: | + The status of a user. An inactive user won't have access to resources. default: active type: string enum: @@ -9389,7 +13452,7 @@ components: additionalProperties: true ResourceMember: allOf: - - $ref: '#/components/schemas/UserResponse' + - $ref: "#/components/schemas/UserResponse" - type: object properties: role: @@ -9409,10 +13472,10 @@ components: users: type: array items: - $ref: '#/components/schemas/ResourceMember' + $ref: "#/components/schemas/ResourceMember" ResourceOwner: allOf: - - $ref: '#/components/schemas/UserResponse' + - $ref: "#/components/schemas/UserResponse" - type: object properties: role: @@ -9432,14 +13495,14 @@ components: users: type: array items: - $ref: '#/components/schemas/ResourceOwner' + $ref: "#/components/schemas/ResourceOwner" FluxSuggestions: type: object properties: funcs: type: array items: - $ref: '#/components/schemas/FluxSuggestion' + $ref: "#/components/schemas/FluxSuggestion" FluxSuggestion: type: object properties: @@ -9617,7 +13680,7 @@ components: description: value is the value of the field. Meaning of the value is implied by the `type` key type: string type: - description: '`type` describes the field type. `func` is a function. `field` is a field reference.' + description: "`type` describes the field type. `func` is a function. `field` is a field reference." type: string enum: - func @@ -9633,7 +13696,7 @@ components: description: Args are the arguments to the function type: array items: - $ref: '#/components/schemas/Field' + $ref: "#/components/schemas/Field" BuilderConfig: type: object properties: @@ -9644,11 +13707,11 @@ components: tags: type: array items: - $ref: '#/components/schemas/BuilderTagsType' + $ref: "#/components/schemas/BuilderTagsType" functions: type: array items: - $ref: '#/components/schemas/BuilderFunctionsType' + $ref: "#/components/schemas/BuilderFunctionsType" aggregateWindow: type: object properties: @@ -9666,7 +13729,7 @@ components: items: type: string aggregateFunctionType: - $ref: '#/components/schemas/BuilderAggregateFunctionType' + $ref: "#/components/schemas/BuilderAggregateFunctionType" BuilderAggregateFunctionType: type: string enum: @@ -9684,11 +13747,11 @@ components: type: string description: The text of the Flux query. editMode: - $ref: '#/components/schemas/QueryEditMode' + $ref: "#/components/schemas/QueryEditMode" name: type: string builderConfig: - $ref: '#/components/schemas/BuilderConfig' + $ref: "#/components/schemas/BuilderConfig" QueryEditMode: type: string enum: @@ -9702,7 +13765,7 @@ components: type: array minItems: 0 maxItems: 2 - description: 'The extents of the axis in the form [lower, upper]. Clients determine whether bounds are inclusive or exclusive of their limits.' + description: "The extents of the axis in the form [lower, upper]. Clients determine whether bounds are inclusive or exclusive of their limits." items: type: string label: @@ -9718,11 +13781,11 @@ components: description: Radix for formatting axis values. type: string enum: - - '' - - '2' - - '10' + - "" + - "2" + - "10" scale: - $ref: '#/components/schemas/AxisScale' + $ref: "#/components/schemas/AxisScale" AxisScale: description: 'Scale is the axis formatting scale. Supported: "log", "linear"' type: string @@ -9791,6 +13854,8 @@ components: - showNoteWhenEmpty - position properties: + adaptiveZoomHide: + type: boolean timeFormat: type: string type: @@ -9800,15 +13865,15 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" colorMapping: description: An object that contains information about the color mapping - $ref: '#/components/schemas/ColorMapping' + $ref: "#/components/schemas/ColorMapping" shape: type: string enum: @@ -9816,12 +13881,12 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean axes: - $ref: '#/components/schemas/Axes' + $ref: "#/components/schemas/Axes" staticLegend: - $ref: '#/components/schemas/StaticLegend' + $ref: "#/components/schemas/StaticLegend" xColumn: type: string generateXAxisTicks: @@ -9857,7 +13922,7 @@ components: enum: - auto - x - - 'y' + - "y" - xy position: type: string @@ -9865,7 +13930,7 @@ components: - overlaid - stacked geom: - $ref: '#/components/schemas/XYGeom' + $ref: "#/components/schemas/XYGeom" legendColorizeRows: type: boolean legendHide: @@ -9883,6 +13948,8 @@ components: - stacked - bar - monotoneX + - stepBefore + - stepAfter BandViewProperties: type: object required: @@ -9895,6 +13962,8 @@ components: - note - showNoteWhenEmpty properties: + adaptiveZoomHide: + type: boolean timeFormat: type: string type: @@ -9904,12 +13973,12 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" shape: type: string enum: @@ -9917,12 +13986,12 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean axes: - $ref: '#/components/schemas/Axes' + $ref: "#/components/schemas/Axes" staticLegend: - $ref: '#/components/schemas/StaticLegend' + $ref: "#/components/schemas/StaticLegend" xColumn: type: string generateXAxisTicks: @@ -9962,10 +14031,10 @@ components: enum: - auto - x - - 'y' + - "y" - xy geom: - $ref: '#/components/schemas/XYGeom' + $ref: "#/components/schemas/XYGeom" legendColorizeRows: type: boolean legendHide: @@ -9990,6 +14059,8 @@ components: - decimalPlaces - position properties: + adaptiveZoomHide: + type: boolean timeFormat: type: string type: @@ -9999,12 +14070,12 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" shape: type: string enum: @@ -10012,12 +14083,12 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean axes: - $ref: '#/components/schemas/Axes' + $ref: "#/components/schemas/Axes" staticLegend: - $ref: '#/components/schemas/StaticLegend' + $ref: "#/components/schemas/StaticLegend" xColumn: type: string generateXAxisTicks: @@ -10053,7 +14124,7 @@ components: enum: - auto - x - - 'y' + - "y" - xy position: type: string @@ -10065,7 +14136,7 @@ components: suffix: type: string decimalPlaces: - $ref: '#/components/schemas/DecimalPlaces' + $ref: "#/components/schemas/DecimalPlaces" legendColorizeRows: type: boolean legendHide: @@ -10105,7 +14176,7 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array @@ -10118,7 +14189,7 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean xColumn: type: string @@ -10175,7 +14246,7 @@ components: enum: - auto - x - - 'y' + - "y" - xy legendColorizeRows: type: boolean @@ -10208,6 +14279,8 @@ components: - xSuffix - ySuffix properties: + adaptiveZoomHide: + type: boolean timeFormat: type: string type: @@ -10217,7 +14290,7 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array @@ -10230,7 +14303,7 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean xColumn: type: string @@ -10320,6 +14393,8 @@ components: - ySuffix - binSize properties: + adaptiveZoomHide: + type: boolean timeFormat: type: string type: @@ -10329,7 +14404,7 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array @@ -10342,7 +14417,7 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean xColumn: type: string @@ -10427,12 +14502,12 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" shape: type: string enum: @@ -10440,7 +14515,7 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean prefix: type: string @@ -10451,9 +14526,9 @@ components: tickSuffix: type: string staticLegend: - $ref: '#/components/schemas/StaticLegend' + $ref: "#/components/schemas/StaticLegend" decimalPlaces: - $ref: '#/components/schemas/DecimalPlaces' + $ref: "#/components/schemas/DecimalPlaces" HistogramViewProperties: type: object required: @@ -10477,12 +14552,12 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" shape: type: string enum: @@ -10490,7 +14565,7 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean xColumn: type: string @@ -10543,12 +14618,12 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" shape: type: string enum: @@ -10556,7 +14631,7 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean prefix: type: string @@ -10567,7 +14642,7 @@ components: tickSuffix: type: string decimalPlaces: - $ref: '#/components/schemas/DecimalPlaces' + $ref: "#/components/schemas/DecimalPlaces" TableViewProperties: type: object required: @@ -10589,12 +14664,12 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" shape: type: string enum: @@ -10602,7 +14677,7 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean tableOptions: type: object @@ -10611,7 +14686,7 @@ components: description: verticalTimeAxis describes the orientation of the table by indicating whether the time axis will be displayed vertically type: boolean sortBy: - $ref: '#/components/schemas/RenamableField' + $ref: "#/components/schemas/RenamableField" wrapping: description: Wrapping describes the text wrapping style to be used in table views type: string @@ -10626,12 +14701,12 @@ components: description: fieldOptions represent the fields retrieved by the query with customization options type: array items: - $ref: '#/components/schemas/RenamableField' + $ref: "#/components/schemas/RenamableField" timeFormat: description: timeFormat describes the display format for time values according to moment.js date formatting type: string decimalPlaces: - $ref: '#/components/schemas/DecimalPlaces' + $ref: "#/components/schemas/DecimalPlaces" SimpleTableViewProperties: type: object required: @@ -10651,7 +14726,7 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" shape: type: string enum: @@ -10659,7 +14734,7 @@ components: note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean MarkdownViewProperties: type: object @@ -10687,6 +14762,8 @@ components: - queries - colors properties: + adaptiveZoomHide: + type: boolean type: type: string enum: @@ -10698,16 +14775,16 @@ components: checkID: type: string check: - $ref: '#/components/schemas/Check' + $ref: "#/components/schemas/Check" queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" legendColorizeRows: type: boolean legendHide: @@ -10720,10 +14797,10 @@ components: GeoViewLayer: type: object oneOf: - - $ref: '#/components/schemas/GeoCircleViewLayer' - - $ref: '#/components/schemas/GeoHeatMapViewLayer' - - $ref: '#/components/schemas/GeoPointMapViewLayer' - - $ref: '#/components/schemas/GeoTrackMapViewLayer' + - $ref: "#/components/schemas/GeoCircleViewLayer" + - $ref: "#/components/schemas/GeoHeatMapViewLayer" + - $ref: "#/components/schemas/GeoPointMapViewLayer" + - $ref: "#/components/schemas/GeoTrackMapViewLayer" GeoViewLayerProperties: type: object required: @@ -10738,7 +14815,7 @@ components: - trackMap GeoCircleViewLayer: allOf: - - $ref: '#/components/schemas/GeoViewLayerProperties' + - $ref: "#/components/schemas/GeoViewLayerProperties" - type: object required: - radiusField @@ -10751,17 +14828,17 @@ components: type: string description: Radius field radiusDimension: - $ref: '#/components/schemas/Axis' + $ref: "#/components/schemas/Axis" colorField: type: string description: Circle color field colorDimension: - $ref: '#/components/schemas/Axis' + $ref: "#/components/schemas/Axis" colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" radius: description: Maximum radius size in pixels type: integer @@ -10770,7 +14847,7 @@ components: type: boolean GeoPointMapViewLayer: allOf: - - $ref: '#/components/schemas/GeoViewLayerProperties' + - $ref: "#/components/schemas/GeoViewLayerProperties" - type: object required: - colorField @@ -10781,12 +14858,12 @@ components: type: string description: Marker color field colorDimension: - $ref: '#/components/schemas/Axis' + $ref: "#/components/schemas/Axis" colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" isClustered: description: Cluster close markers together type: boolean @@ -10797,7 +14874,7 @@ components: type: string GeoTrackMapViewLayer: allOf: - - $ref: '#/components/schemas/GeoViewLayerProperties' + - $ref: "#/components/schemas/GeoViewLayerProperties" - type: object required: - trackWidth @@ -10818,10 +14895,10 @@ components: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" GeoHeatMapViewLayer: allOf: - - $ref: '#/components/schemas/GeoViewLayerProperties' + - $ref: "#/components/schemas/GeoViewLayerProperties" - type: object required: - intensityField @@ -10834,7 +14911,7 @@ components: type: string description: Intensity field intensityDimension: - $ref: '#/components/schemas/Axis' + $ref: "#/components/schemas/Axis" radius: description: Radius size in pixels type: integer @@ -10845,7 +14922,7 @@ components: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" GeoViewProperties: type: object required: @@ -10867,7 +14944,7 @@ components: queries: type: array items: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" shape: type: string enum: @@ -10894,39 +14971,39 @@ components: minimum: 1 maximum: 28 allowPanAndZoom: - description: 'If true, map zoom and pan controls are enabled on the dashboard view' + description: "If true, map zoom and pan controls are enabled on the dashboard view" type: boolean default: true detectCoordinateFields: - description: 'If true, search results get automatically regroupped so that lon,lat and value are treated as columns' + description: "If true, search results get automatically regroupped so that lon,lat and value are treated as columns" type: boolean default: true useS2CellID: - description: 'If true, S2 column is used to calculate lat/lon' + description: "If true, S2 column is used to calculate lat/lon" type: boolean s2Column: description: String to define the column type: string latLonColumns: - $ref: '#/components/schemas/LatLonColumns' + $ref: "#/components/schemas/LatLonColumns" mapStyle: - description: 'Define map type - regular, satellite etc.' + description: "Define map type - regular, satellite etc." type: string note: type: string showNoteWhenEmpty: - description: 'If true, will display note when empty' + description: "If true, will display note when empty" type: boolean colors: description: Colors define color encoding of data into a visualization type: array items: - $ref: '#/components/schemas/DashboardColor' + $ref: "#/components/schemas/DashboardColor" layers: description: List of individual layers shown in the map type: array items: - $ref: '#/components/schemas/GeoViewLayer' + $ref: "#/components/schemas/GeoViewLayer" LatLonColumns: description: Object type to define lat/lon columns type: object @@ -10935,9 +15012,9 @@ components: - lon properties: lat: - $ref: '#/components/schemas/LatLonColumn' + $ref: "#/components/schemas/LatLonColumn" lon: - $ref: '#/components/schemas/LatLonColumn' + $ref: "#/components/schemas/LatLonColumn" LatLonColumn: description: Object type for key and column definitions type: object @@ -10956,12 +15033,12 @@ components: type: object required: - x - - 'y' + - "y" properties: x: - $ref: '#/components/schemas/Axis' - 'y': - $ref: '#/components/schemas/Axis' + $ref: "#/components/schemas/Axis" + "y": + $ref: "#/components/schemas/Axis" StaticLegend: description: StaticLegend represents the options specific to the static legend type: object @@ -10984,7 +15061,7 @@ components: type: number format: float DecimalPlaces: - description: 'Indicates whether decimal places should be enforced, and how many digits it should show.' + description: "Indicates whether decimal places should be enforced, and how many digits it should show." type: object properties: isEnforced: @@ -11030,25 +15107,25 @@ components: VariableProperties: type: object oneOf: - - $ref: '#/components/schemas/QueryVariableProperties' - - $ref: '#/components/schemas/ConstantVariableProperties' - - $ref: '#/components/schemas/MapVariableProperties' + - $ref: "#/components/schemas/QueryVariableProperties" + - $ref: "#/components/schemas/ConstantVariableProperties" + - $ref: "#/components/schemas/MapVariableProperties" ViewProperties: oneOf: - - $ref: '#/components/schemas/LinePlusSingleStatProperties' - - $ref: '#/components/schemas/XYViewProperties' - - $ref: '#/components/schemas/SingleStatViewProperties' - - $ref: '#/components/schemas/HistogramViewProperties' - - $ref: '#/components/schemas/GaugeViewProperties' - - $ref: '#/components/schemas/TableViewProperties' - - $ref: '#/components/schemas/SimpleTableViewProperties' - - $ref: '#/components/schemas/MarkdownViewProperties' - - $ref: '#/components/schemas/CheckViewProperties' - - $ref: '#/components/schemas/ScatterViewProperties' - - $ref: '#/components/schemas/HeatmapViewProperties' - - $ref: '#/components/schemas/MosaicViewProperties' - - $ref: '#/components/schemas/BandViewProperties' - - $ref: '#/components/schemas/GeoViewProperties' + - $ref: "#/components/schemas/LinePlusSingleStatProperties" + - $ref: "#/components/schemas/XYViewProperties" + - $ref: "#/components/schemas/SingleStatViewProperties" + - $ref: "#/components/schemas/HistogramViewProperties" + - $ref: "#/components/schemas/GaugeViewProperties" + - $ref: "#/components/schemas/TableViewProperties" + - $ref: "#/components/schemas/SimpleTableViewProperties" + - $ref: "#/components/schemas/MarkdownViewProperties" + - $ref: "#/components/schemas/CheckViewProperties" + - $ref: "#/components/schemas/ScatterViewProperties" + - $ref: "#/components/schemas/HeatmapViewProperties" + - $ref: "#/components/schemas/MosaicViewProperties" + - $ref: "#/components/schemas/BandViewProperties" + - $ref: "#/components/schemas/GeoViewProperties" View: required: - name @@ -11066,7 +15143,7 @@ components: name: type: string properties: - $ref: '#/components/schemas/ViewProperties' + $ref: "#/components/schemas/ViewProperties" Views: type: object properties: @@ -11078,14 +15155,14 @@ components: views: type: array items: - $ref: '#/components/schemas/View' + $ref: "#/components/schemas/View" CellUpdate: type: object properties: x: type: integer format: int32 - 'y': + "y": type: integer format: int32 w: @@ -11102,7 +15179,7 @@ components: x: type: integer format: int32 - 'y': + "y": type: integer format: int32 w: @@ -11133,13 +15210,13 @@ components: CellWithViewProperties: type: object allOf: - - $ref: '#/components/schemas/Cell' + - $ref: "#/components/schemas/Cell" - type: object properties: name: type: string properties: - $ref: '#/components/schemas/ViewProperties' + $ref: "#/components/schemas/ViewProperties" Cell: type: object properties: @@ -11155,7 +15232,7 @@ components: x: type: integer format: int32 - 'y': + "y": type: integer format: int32 w: @@ -11170,11 +15247,11 @@ components: CellsWithViewProperties: type: array items: - $ref: '#/components/schemas/CellWithViewProperties' + $ref: "#/components/schemas/CellWithViewProperties" Cells: type: array items: - $ref: '#/components/schemas/Cell' + $ref: "#/components/schemas/Cell" Secrets: additionalProperties: type: string @@ -11189,7 +15266,7 @@ components: type: string SecretKeysResponse: allOf: - - $ref: '#/components/schemas/SecretKeys' + - $ref: "#/components/schemas/SecretKeys" - type: object properties: links: @@ -11217,7 +15294,7 @@ components: DashboardWithViewProperties: type: object allOf: - - $ref: '#/components/schemas/CreateDashboardRequest' + - $ref: "#/components/schemas/CreateDashboardRequest" - type: object properties: links: @@ -11231,17 +15308,17 @@ components: org: /api/v2/labels/1 properties: self: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" cells: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" members: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" owners: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" labels: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" org: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" id: readOnly: true type: string @@ -11255,13 +15332,13 @@ components: type: string format: date-time cells: - $ref: '#/components/schemas/CellsWithViewProperties' + $ref: "#/components/schemas/CellsWithViewProperties" labels: - $ref: '#/components/schemas/Labels' + $ref: "#/components/schemas/Labels" Dashboard: type: object allOf: - - $ref: '#/components/schemas/CreateDashboardRequest' + - $ref: "#/components/schemas/CreateDashboardRequest" - type: object properties: links: @@ -11275,17 +15352,17 @@ components: org: /api/v2/labels/1 properties: self: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" cells: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" members: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" owners: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" labels: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" org: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" id: readOnly: true type: string @@ -11299,18 +15376,18 @@ components: type: string format: date-time cells: - $ref: '#/components/schemas/Cells' + $ref: "#/components/schemas/Cells" labels: - $ref: '#/components/schemas/Labels' + $ref: "#/components/schemas/Labels" Dashboards: type: object properties: links: - $ref: '#/components/schemas/Links' + $ref: "#/components/schemas/Links" dashboards: type: array items: - $ref: '#/components/schemas/Dashboard' + $ref: "#/components/schemas/Dashboard" TelegrafRequest: type: object properties: @@ -11365,7 +15442,7 @@ components: Telegraf: type: object allOf: - - $ref: '#/components/schemas/TelegrafRequest' + - $ref: "#/components/schemas/TelegrafRequest" - type: object properties: id: @@ -11381,23 +15458,23 @@ components: members: /api/v2/telegrafs/1/members properties: self: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" labels: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" members: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" owners: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" labels: readOnly: true - $ref: '#/components/schemas/Labels' + $ref: "#/components/schemas/Labels" Telegrafs: type: object properties: configurations: type: array items: - $ref: '#/components/schemas/Telegraf' + $ref: "#/components/schemas/Telegraf" TelegrafPlugin: type: object properties: @@ -11419,12 +15496,14 @@ components: plugins: type: array items: - $ref: '#/components/schemas/TelegrafPlugin' + $ref: "#/components/schemas/TelegrafPlugin" IsOnboarding: type: object properties: allowed: - description: True means that the influxdb instance has NOT had initial setup; false means that the database has been setup. + description: | + If `true`, the InfluxDB instance hasn't had initial setup; + `false` otherwise. type: boolean PasswordResetBody: properties: @@ -11437,8 +15516,12 @@ components: properties: id: type: string + description: | + The ID of the user to add to the resource. name: type: string + description: | + The name of the user to add to the resource. required: - id Ready: @@ -11451,7 +15534,7 @@ components: started: type: string format: date-time - example: '2019-03-13T10:09:33.891196-04:00' + example: "2019-03-13T10:09:33.891196-04:00" up: type: string example: 14m45.911966424s @@ -11468,7 +15551,7 @@ components: checks: type: array items: - $ref: '#/components/schemas/HealthCheck' + $ref: "#/components/schemas/HealthCheck" status: type: string enum: @@ -11481,7 +15564,7 @@ components: Labels: type: array items: - $ref: '#/components/schemas/Label' + $ref: "#/components/schemas/Label" Label: type: object properties: @@ -11497,7 +15580,9 @@ components: type: object additionalProperties: type: string - description: Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value. + description: | + Key-value pairs associated with this label. + To remove a property, send an update with an empty value (`""`) for the key. example: color: ffb3b3 description: this is a description @@ -11515,7 +15600,10 @@ components: type: object additionalProperties: type: string - description: Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value. + description: | + Key-value pairs associated with this label. + + To remove a property, send an update with an empty value (`""`) for the key. example: color: ffb3b3 description: this is a description @@ -11528,7 +15616,10 @@ components: type: object additionalProperties: type: string - description: Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value. + description: | + Key-value pairs associated with this label. + + To remove a property, send an update with an empty value (`""`) for the key. example: color: ffb3b3 description: this is a description @@ -11536,27 +15627,30 @@ components: type: object properties: labelID: + description: | + Label ID. + The ID of the label to attach. type: string LabelsResponse: type: object properties: labels: - $ref: '#/components/schemas/Labels' + $ref: "#/components/schemas/Labels" links: - $ref: '#/components/schemas/Links' + $ref: "#/components/schemas/Links" LabelResponse: type: object properties: label: - $ref: '#/components/schemas/Label' + $ref: "#/components/schemas/Label" links: - $ref: '#/components/schemas/Links' + $ref: "#/components/schemas/Links" ASTResponse: description: Contains the AST for the supplied Flux query type: object properties: ast: - $ref: '#/components/schemas/Package' + $ref: "#/components/schemas/Package" WritePrecision: type: string enum: @@ -11564,48 +15658,6 @@ components: - s - us - ns - TaskCreateRequest: - type: object - properties: - orgID: - description: The ID of the organization that owns this Task. - type: string - org: - description: The name of the organization that owns this Task. - type: string - status: - $ref: '#/components/schemas/TaskStatusType' - flux: - description: The Flux script to run for this task. - type: string - description: - description: An optional description of the task. - type: string - required: - - flux - TaskUpdateRequest: - type: object - properties: - status: - $ref: '#/components/schemas/TaskStatusType' - flux: - description: The Flux script to run for this task. - type: string - name: - description: Override the 'name' option in the flux script. - type: string - every: - description: Override the 'every' option in the flux script. - type: string - cron: - description: Override the 'cron' option in the flux script. - type: string - offset: - description: Override the 'offset' option in the flux script. - type: string - description: - description: An optional description of the task. - type: string FluxResponse: description: Rendered flux that backs the check or notification. properties: @@ -11625,29 +15677,29 @@ components: - inactive CheckDiscriminator: oneOf: - - $ref: '#/components/schemas/DeadmanCheck' - - $ref: '#/components/schemas/ThresholdCheck' - - $ref: '#/components/schemas/CustomCheck' + - $ref: "#/components/schemas/DeadmanCheck" + - $ref: "#/components/schemas/ThresholdCheck" + - $ref: "#/components/schemas/CustomCheck" discriminator: propertyName: type mapping: - deadman: '#/components/schemas/DeadmanCheck' - threshold: '#/components/schemas/ThresholdCheck' - custom: '#/components/schemas/CustomCheck' + deadman: "#/components/schemas/DeadmanCheck" + threshold: "#/components/schemas/ThresholdCheck" + custom: "#/components/schemas/CustomCheck" Check: allOf: - - $ref: '#/components/schemas/CheckDiscriminator' + - $ref: "#/components/schemas/CheckDiscriminator" PostCheck: allOf: - - $ref: '#/components/schemas/CheckDiscriminator' + - $ref: "#/components/schemas/CheckDiscriminator" Checks: properties: checks: type: array items: - $ref: '#/components/schemas/Check' + $ref: "#/components/schemas/Check" links: - $ref: '#/components/schemas/Links' + $ref: "#/components/schemas/Links" CheckBase: properties: id: @@ -11674,14 +15726,15 @@ components: format: date-time readOnly: true query: - $ref: '#/components/schemas/DashboardQuery' + $ref: "#/components/schemas/DashboardQuery" status: - $ref: '#/components/schemas/TaskStatusType' + $ref: "#/components/schemas/TaskStatusType" description: description: An optional description of the check. type: string latestCompleted: - description: 'Timestamp (in RFC3339 date/time format](https://datatracker.ietf.org/doc/html/rfc3339)) of the latest scheduled and completed run.' + type: string + description: "A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)) of the latest scheduled and completed run." format: date-time readOnly: true lastRunStatus: @@ -11695,7 +15748,7 @@ components: readOnly: true type: string labels: - $ref: '#/components/schemas/Labels' + $ref: "#/components/schemas/Labels" links: type: object readOnly: true @@ -11708,26 +15761,26 @@ components: properties: self: description: URL for this check - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" labels: description: URL to retrieve labels for this check - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" members: description: URL to retrieve members for this check - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" owners: description: URL to retrieve owners for this check - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" query: description: URL to retrieve flux script for this check - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" required: - name - orgID - query ThresholdCheck: allOf: - - $ref: '#/components/schemas/CheckBase' + - $ref: "#/components/schemas/CheckBase" - type: object required: - type @@ -11739,12 +15792,12 @@ components: thresholds: type: array items: - $ref: '#/components/schemas/Threshold' + $ref: "#/components/schemas/Threshold" every: description: Check repetition interval. type: string offset: - description: 'Duration to delay after the schedule, before executing check.' + description: "Duration to delay after the schedule, before executing check." type: string tags: description: List of tags to write to each status. @@ -11761,18 +15814,18 @@ components: type: string Threshold: oneOf: - - $ref: '#/components/schemas/GreaterThreshold' - - $ref: '#/components/schemas/LesserThreshold' - - $ref: '#/components/schemas/RangeThreshold' + - $ref: "#/components/schemas/GreaterThreshold" + - $ref: "#/components/schemas/LesserThreshold" + - $ref: "#/components/schemas/RangeThreshold" discriminator: propertyName: type mapping: - greater: '#/components/schemas/GreaterThreshold' - lesser: '#/components/schemas/LesserThreshold' - range: '#/components/schemas/RangeThreshold' + greater: "#/components/schemas/GreaterThreshold" + lesser: "#/components/schemas/LesserThreshold" + range: "#/components/schemas/RangeThreshold" DeadmanCheck: allOf: - - $ref: '#/components/schemas/CheckBase' + - $ref: "#/components/schemas/CheckBase" - type: object required: - type @@ -11788,15 +15841,15 @@ components: description: String duration for time that a series is considered stale and should not trigger deadman. type: string reportZero: - description: 'If only zero values reported since time, trigger an alert' + description: "If only zero values reported since time, trigger an alert" type: boolean level: - $ref: '#/components/schemas/CheckStatusLevel' + $ref: "#/components/schemas/CheckStatusLevel" every: description: Check repetition interval. type: string offset: - description: 'Duration to delay after the schedule, before executing check.' + description: "Duration to delay after the schedule, before executing check." type: string tags: description: List of tags to write to each status. @@ -11813,7 +15866,7 @@ components: type: string CustomCheck: allOf: - - $ref: '#/components/schemas/CheckBase' + - $ref: "#/components/schemas/CheckBase" - type: object properties: type: @@ -11825,13 +15878,13 @@ components: ThresholdBase: properties: level: - $ref: '#/components/schemas/CheckStatusLevel' + $ref: "#/components/schemas/CheckStatusLevel" allValues: - description: 'If true, only alert if all values meet threshold.' + description: "If true, only alert if all values meet threshold." type: boolean GreaterThreshold: allOf: - - $ref: '#/components/schemas/ThresholdBase' + - $ref: "#/components/schemas/ThresholdBase" - type: object required: - type @@ -11846,7 +15899,7 @@ components: format: float LesserThreshold: allOf: - - $ref: '#/components/schemas/ThresholdBase' + - $ref: "#/components/schemas/ThresholdBase" - type: object required: - type @@ -11861,7 +15914,7 @@ components: format: float RangeThreshold: allOf: - - $ref: '#/components/schemas/ThresholdBase' + - $ref: "#/components/schemas/ThresholdBase" - type: object required: - type @@ -11914,33 +15967,33 @@ components: - inactive NotificationRuleDiscriminator: oneOf: - - $ref: '#/components/schemas/SlackNotificationRule' - - $ref: '#/components/schemas/SMTPNotificationRule' - - $ref: '#/components/schemas/PagerDutyNotificationRule' - - $ref: '#/components/schemas/HTTPNotificationRule' - - $ref: '#/components/schemas/TelegramNotificationRule' + - $ref: "#/components/schemas/SlackNotificationRule" + - $ref: "#/components/schemas/SMTPNotificationRule" + - $ref: "#/components/schemas/PagerDutyNotificationRule" + - $ref: "#/components/schemas/HTTPNotificationRule" + - $ref: "#/components/schemas/TelegramNotificationRule" discriminator: propertyName: type mapping: - slack: '#/components/schemas/SlackNotificationRule' - smtp: '#/components/schemas/SMTPNotificationRule' - pagerduty: '#/components/schemas/PagerDutyNotificationRule' - http: '#/components/schemas/HTTPNotificationRule' - telegram: '#/components/schemas/TelegramNotificationRule' + slack: "#/components/schemas/SlackNotificationRule" + smtp: "#/components/schemas/SMTPNotificationRule" + pagerduty: "#/components/schemas/PagerDutyNotificationRule" + http: "#/components/schemas/HTTPNotificationRule" + telegram: "#/components/schemas/TelegramNotificationRule" NotificationRule: allOf: - - $ref: '#/components/schemas/NotificationRuleDiscriminator' + - $ref: "#/components/schemas/NotificationRuleDiscriminator" PostNotificationRule: allOf: - - $ref: '#/components/schemas/NotificationRuleDiscriminator' + - $ref: "#/components/schemas/NotificationRuleDiscriminator" NotificationRules: properties: notificationRules: type: array items: - $ref: '#/components/schemas/NotificationRule' + $ref: "#/components/schemas/NotificationRule" links: - $ref: '#/components/schemas/Links' + $ref: "#/components/schemas/Links" NotificationRuleBase: type: object required: @@ -11951,7 +16004,7 @@ components: - endpointID properties: latestCompleted: - description: 'Timestamp (in RFC3339 date/time format](https://datatracker.ietf.org/doc/html/rfc3339)) of the latest scheduled and completed run.' + description: "A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)) of the latest scheduled and completed run." type: string format: date-time readOnly: true @@ -11989,7 +16042,7 @@ components: format: date-time readOnly: true status: - $ref: '#/components/schemas/TaskStatusType' + $ref: "#/components/schemas/TaskStatusType" name: description: Human-readable name describing the notification rule. type: string @@ -11999,21 +16052,21 @@ components: description: The notification repetition interval. type: string offset: - description: 'Duration to delay after the schedule, before executing check.' + description: "Duration to delay after the schedule, before executing check." type: string runbookLink: type: string limitEvery: - description: 'Don''t notify me more than times every seconds. If set, limit cannot be empty.' + description: "Don't notify me more than times every seconds. If set, limit cannot be empty." type: integer limit: - description: 'Don''t notify me more than times every seconds. If set, limitEvery cannot be empty.' + description: "Don't notify me more than times every seconds. If set, limitEvery cannot be empty." type: integer tagRules: description: List of tag rules the notification rule attempts to match. type: array items: - $ref: '#/components/schemas/TagRule' + $ref: "#/components/schemas/TagRule" description: description: An optional description of the notification rule. type: string @@ -12022,9 +16075,9 @@ components: type: array minItems: 1 items: - $ref: '#/components/schemas/StatusRule' + $ref: "#/components/schemas/StatusRule" labels: - $ref: '#/components/schemas/Labels' + $ref: "#/components/schemas/Labels" links: type: object readOnly: true @@ -12037,19 +16090,19 @@ components: properties: self: description: URL for this endpoint. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" labels: description: URL to retrieve labels for this notification rule. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" members: description: URL to retrieve members for this notification rule. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" owners: description: URL to retrieve owners for this notification rule. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" query: description: URL to retrieve flux script for this notification rule. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" TagRule: type: object properties: @@ -12068,9 +16121,9 @@ components: type: object properties: currentLevel: - $ref: '#/components/schemas/RuleStatusLevel' + $ref: "#/components/schemas/RuleStatusLevel" previousLevel: - $ref: '#/components/schemas/RuleStatusLevel' + $ref: "#/components/schemas/RuleStatusLevel" count: type: integer period: @@ -12088,8 +16141,8 @@ components: type: string HTTPNotificationRule: allOf: - - $ref: '#/components/schemas/NotificationRuleBase' - - $ref: '#/components/schemas/HTTPNotificationRuleBase' + - $ref: "#/components/schemas/NotificationRuleBase" + - $ref: "#/components/schemas/HTTPNotificationRuleBase" SlackNotificationRuleBase: type: object required: @@ -12106,12 +16159,12 @@ components: type: string SlackNotificationRule: allOf: - - $ref: '#/components/schemas/NotificationRuleBase' - - $ref: '#/components/schemas/SlackNotificationRuleBase' + - $ref: "#/components/schemas/NotificationRuleBase" + - $ref: "#/components/schemas/SlackNotificationRuleBase" SMTPNotificationRule: allOf: - - $ref: '#/components/schemas/NotificationRuleBase' - - $ref: '#/components/schemas/SMTPNotificationRuleBase' + - $ref: "#/components/schemas/NotificationRuleBase" + - $ref: "#/components/schemas/SMTPNotificationRuleBase" SMTPNotificationRuleBase: type: object required: @@ -12131,8 +16184,8 @@ components: type: string PagerDutyNotificationRule: allOf: - - $ref: '#/components/schemas/NotificationRuleBase' - - $ref: '#/components/schemas/PagerDutyNotificationRuleBase' + - $ref: "#/components/schemas/NotificationRuleBase" + - $ref: "#/components/schemas/PagerDutyNotificationRuleBase" PagerDutyNotificationRuleBase: type: object required: @@ -12147,8 +16200,8 @@ components: type: string TelegramNotificationRule: allOf: - - $ref: '#/components/schemas/NotificationRuleBase' - - $ref: '#/components/schemas/TelegramNotificationRuleBase' + - $ref: "#/components/schemas/NotificationRuleBase" + - $ref: "#/components/schemas/TelegramNotificationRuleBase" TelegramNotificationRuleBase: type: object required: @@ -12165,14 +16218,14 @@ components: description: The message template as a flux interpolated string. type: string parseMode: - description: 'Parse mode of the message text per https://core.telegram.org/bots/api#formatting-options . Defaults to "MarkdownV2" .' + description: 'Parse mode of the message text per https://core.telegram.org/bots/api#formatting-options. Defaults to "MarkdownV2".' type: string enum: - MarkdownV2 - HTML - Markdown disableWebPagePreview: - description: Disables preview of web links in the sent messages when "true". Defaults to "false" . + description: Disables preview of web links in the sent messages when "true". Defaults to "false". type: boolean NotificationEndpointUpdate: type: object @@ -12188,31 +16241,31 @@ components: - inactive NotificationEndpointDiscriminator: oneOf: - - $ref: '#/components/schemas/SlackNotificationEndpoint' - - $ref: '#/components/schemas/PagerDutyNotificationEndpoint' - - $ref: '#/components/schemas/HTTPNotificationEndpoint' - - $ref: '#/components/schemas/TelegramNotificationEndpoint' + - $ref: "#/components/schemas/SlackNotificationEndpoint" + - $ref: "#/components/schemas/PagerDutyNotificationEndpoint" + - $ref: "#/components/schemas/HTTPNotificationEndpoint" + - $ref: "#/components/schemas/TelegramNotificationEndpoint" discriminator: propertyName: type mapping: - slack: '#/components/schemas/SlackNotificationEndpoint' - pagerduty: '#/components/schemas/PagerDutyNotificationEndpoint' - http: '#/components/schemas/HTTPNotificationEndpoint' - telegram: '#/components/schemas/TelegramNotificationEndpoint' + slack: "#/components/schemas/SlackNotificationEndpoint" + pagerduty: "#/components/schemas/PagerDutyNotificationEndpoint" + http: "#/components/schemas/HTTPNotificationEndpoint" + telegram: "#/components/schemas/TelegramNotificationEndpoint" NotificationEndpoint: allOf: - - $ref: '#/components/schemas/NotificationEndpointDiscriminator' + - $ref: "#/components/schemas/NotificationEndpointDiscriminator" PostNotificationEndpoint: allOf: - - $ref: '#/components/schemas/NotificationEndpointDiscriminator' + - $ref: "#/components/schemas/NotificationEndpointDiscriminator" NotificationEndpoints: properties: notificationEndpoints: type: array items: - $ref: '#/components/schemas/NotificationEndpoint' + $ref: "#/components/schemas/NotificationEndpoint" links: - $ref: '#/components/schemas/Links' + $ref: "#/components/schemas/Links" NotificationEndpointBase: type: object required: @@ -12246,7 +16299,7 @@ components: - active - inactive labels: - $ref: '#/components/schemas/Labels' + $ref: "#/components/schemas/Labels" links: type: object readOnly: true @@ -12258,22 +16311,22 @@ components: properties: self: description: URL for this endpoint. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" labels: description: URL to retrieve labels for this endpoint. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" members: description: URL to retrieve members for this endpoint. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" owners: description: URL to retrieve owners for this endpoint. - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" type: - $ref: '#/components/schemas/NotificationEndpointType' + $ref: "#/components/schemas/NotificationEndpointType" SlackNotificationEndpoint: type: object allOf: - - $ref: '#/components/schemas/NotificationEndpointBase' + - $ref: "#/components/schemas/NotificationEndpointBase" - type: object properties: url: @@ -12285,7 +16338,7 @@ components: PagerDutyNotificationEndpoint: type: object allOf: - - $ref: '#/components/schemas/NotificationEndpointBase' + - $ref: "#/components/schemas/NotificationEndpointBase" - type: object required: - routingKey @@ -12297,7 +16350,7 @@ components: HTTPNotificationEndpoint: type: object allOf: - - $ref: '#/components/schemas/NotificationEndpointBase' + - $ref: "#/components/schemas/NotificationEndpointBase" - type: object required: - url @@ -12334,17 +16387,17 @@ components: TelegramNotificationEndpoint: type: object allOf: - - $ref: '#/components/schemas/NotificationEndpointBase' + - $ref: "#/components/schemas/NotificationEndpointBase" - type: object required: - token - channel properties: token: - description: 'Specifies the Telegram bot token. See https://core.telegram.org/bots#creating-a-new-bot .' + description: "Specifies the Telegram bot token. See https://core.telegram.org/bots#creating-a-new-bot ." type: string channel: - description: 'ID of the telegram channel, a chat_id in https://core.telegram.org/bots/api#sendmessage .' + description: "The ID of the telegram channel; a chat_id in https://core.telegram.org/bots/api#sendmessage ." type: string NotificationEndpointType: type: string @@ -12358,14 +16411,14 @@ components: properties: id: type: string - description: ID of the DBRP mapping. + description: The ID of the DBRP mapping. readOnly: true orgID: type: string - description: ID of the organization that owns this mapping. + description: The ID of the organization. bucketID: type: string - description: ID of the bucket used as the target for the translation. + description: The ID of the bucket used as the target for the translation. database: type: string description: InfluxDB v1 database @@ -12375,8 +16428,11 @@ components: default: type: boolean description: Mapping represents the default retention policy for the database specified. + virtual: + type: boolean + description: "Indicates an autogenerated, virtual mapping based on the bucket name. Currently only available in OSS." links: - $ref: '#/components/schemas/Links' + $ref: "#/components/schemas/Links" required: - id - orgID @@ -12389,7 +16445,7 @@ components: content: type: array items: - $ref: '#/components/schemas/DBRP' + $ref: "#/components/schemas/DBRP" DBRPUpdate: properties: retention_policy: @@ -12402,13 +16458,13 @@ components: properties: orgID: type: string - description: ID of the organization that owns this mapping. + description: The ID of the organization. org: type: string - description: Name of the organization that owns this mapping. + description: The name of the organization that owns this mapping. bucketID: type: string - description: ID of the bucket used as the target for the translation. + description: The ID of the bucket used as the target for the translation. database: type: string description: InfluxDB v1 database @@ -12426,7 +16482,7 @@ components: type: object properties: content: - $ref: '#/components/schemas/DBRP' + $ref: "#/components/schemas/DBRP" required: true SchemaType: type: string @@ -12439,16 +16495,16 @@ components: additionalProperties: type: string example: - series_id_1: '#edf529' - series_id_2: '#edf529' - measurement_birdmigration_europe: '#663cd0' - configcat_deployments-autopromotionblocker: '#663cd0' + series_id_1: "#edf529" + series_id_2: "#edf529" + measurement_birdmigration_europe: "#663cd0" + configcat_deployments-autopromotionblocker: "#663cd0" Authorization: required: - orgID - permissions allOf: - - $ref: '#/components/schemas/AuthorizationUpdateRequest' + - $ref: "#/components/schemas/AuthorizationUpdateRequest" - type: object properties: createdAt: @@ -12461,32 +16517,35 @@ components: readOnly: true orgID: type: string - description: ID of the organization that the authorization is scoped to. + description: The ID of the organization. permissions: type: array minItems: 1 - description: List of permissions for an authorization. An authorization must have at least one permission. + description: | + A list of permissions for an authorization. + An authorization must have at least one permission. items: - $ref: '#/components/schemas/Permission' + $ref: "#/components/schemas/Permission" id: readOnly: true type: string token: readOnly: true type: string - description: Token used to authenticate API requests. + description: | + The API token for authenticating InfluxDB API and CLI requests. userID: readOnly: true type: string - description: ID of the user that created and owns the token. + description: The ID of the user that created and owns the token. user: readOnly: true type: string - description: Name of the user that created and owns the token. + description: The name of the user that created and owns the token. org: readOnly: true type: string - description: Name of the organization that the token is scoped to. + description: The name of the organization that the token is scoped to. links: type: object readOnly: true @@ -12496,63 +16555,44 @@ components: properties: self: readOnly: true - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" user: readOnly: true - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" + Authorizations: + type: object + properties: + links: + readOnly: true + $ref: "#/components/schemas/Links" + authorizations: + type: array + items: + $ref: "#/components/schemas/Authorization" AuthorizationPostRequest: required: - orgID - permissions allOf: - - $ref: '#/components/schemas/AuthorizationUpdateRequest' - - type: object - properties: - orgID: - type: string - description: ID of org that authorization is scoped to. - userID: - type: string - description: ID of user that authorization is scoped to. - permissions: - type: array - minItems: 1 - description: List of permissions for an auth. An auth must have at least one Permission. - items: - $ref: '#/components/schemas/Permission' - LegacyAuthorizationPostRequest: - required: - - orgID - - permissions - allOf: - - $ref: '#/components/schemas/AuthorizationUpdateRequest' + - $ref: "#/components/schemas/AuthorizationUpdateRequest" - type: object properties: orgID: type: string - description: ID of org that authorization is scoped to. + description: | + The ID of the organization that owns the authorization. userID: type: string - description: ID of user that authorization is scoped to. - token: - type: string - description: Token (name) of the authorization + description: | + The ID of the user that the authorization is scoped to. permissions: type: array minItems: 1 - description: List of permissions for an auth. An auth must have at least one Permission. + description: | + A list of permissions for an authorization. + An authorization must have at least one permission. items: - $ref: '#/components/schemas/Permission' - Authorizations: - type: object - properties: - links: - readOnly: true - $ref: '#/components/schemas/Links' - authorizations: - type: array - items: - $ref: '#/components/schemas/Authorization' + $ref: "#/components/schemas/Permission" Permission: required: - action @@ -12564,7 +16604,7 @@ components: - read - write resource: - $ref: '#/components/schemas/Resource' + $ref: "#/components/schemas/Resource" Resource: type: object required: @@ -12595,18 +16635,29 @@ components: - annotations - remotes - replications + - instance + description: | + The type of resource. + In a `permission`, applies the permission to all resources of this type. id: type: string - description: If ID is set that is a permission for a specific resource. if it is not set it is a permission for all resources of that resource type. + description: | + The ID of a specific resource. + In a `permission`, applies the permission to only the resource with this ID. name: type: string - description: Optional name of the resource if the resource has a name field. + description: | + Optional: A name for the resource. + Not all resource types have a name field. orgID: type: string - description: If orgID is set that is a permission for all resources owned my that org. if it is not set it is a permission for all resources of that resource type. + description: | + The ID of the organization that owns the resource. + In a `permission`, applies the permission to all resources of `type` owned by this organization. org: type: string - description: Optional name of the organization of the organization with orgID. + description: | + Optional: The name of the organization with `orgID`. User: properties: id: @@ -12637,7 +16688,7 @@ components: users: type: array items: - $ref: '#/components/schemas/UserResponse' + $ref: "#/components/schemas/UserResponse" OnboardingRequest: type: object properties: @@ -12669,13 +16720,13 @@ components: type: object properties: user: - $ref: '#/components/schemas/UserResponse' + $ref: "#/components/schemas/UserResponse" org: - $ref: '#/components/schemas/Organization' + $ref: "#/components/schemas/Organization" bucket: - $ref: '#/components/schemas/Bucket' + $ref: "#/components/schemas/Bucket" auth: - $ref: '#/components/schemas/Authorization' + $ref: "#/components/schemas/Authorization" Variable: type: object required: @@ -12710,9 +16761,9 @@ components: items: type: string labels: - $ref: '#/components/schemas/Labels' + $ref: "#/components/schemas/Labels" arguments: - $ref: '#/components/schemas/VariableProperties' + $ref: "#/components/schemas/VariableProperties" createdAt: type: string format: date-time @@ -12723,8 +16774,8 @@ components: type: object example: variables: - - id: '1221432' - name: ':ok:' + - id: "1221432" + name: ":ok:" selected: - hello arguments: @@ -12735,8 +16786,8 @@ components: - hi - yo - oy - - id: '1221432' - name: ':ok:' + - id: "1221432" + name: ":ok:" selected: - c arguments: @@ -12745,8 +16796,8 @@ components: a: fdjaklfdjkldsfjlkjdsa b: dfaksjfkljekfajekdljfas c: fdjksajfdkfeawfeea - - id: '1221432' - name: ':ok:' + - id: "1221432" + name: ":ok:" selected: - host arguments: @@ -12757,7 +16808,7 @@ components: variables: type: array items: - $ref: '#/components/schemas/Variable' + $ref: "#/components/schemas/Variable" Source: type: object properties: @@ -12826,7 +16877,7 @@ components: sources: type: array items: - $ref: '#/components/schemas/Source' + $ref: "#/components/schemas/Source" ScraperTargetRequest: type: object properties: @@ -12841,7 +16892,7 @@ components: url: type: string description: The URL of the metrics endpoint. - example: 'http://localhost:9090/metrics' + example: "http://localhost:9090/metrics" orgID: type: string description: The organization ID. @@ -12855,7 +16906,7 @@ components: ScraperTargetResponse: type: object allOf: - - $ref: '#/components/schemas/ScraperTargetRequest' + - $ref: "#/components/schemas/ScraperTargetRequest" - type: object properties: id: @@ -12878,22 +16929,22 @@ components: organization: /api/v2/orgs/1 properties: self: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" members: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" owners: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" bucket: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" organization: - $ref: '#/components/schemas/Link' + $ref: "#/components/schemas/Link" ScraperTargetResponses: type: object properties: configurations: type: array items: - $ref: '#/components/schemas/ScraperTargetResponse' + $ref: "#/components/schemas/ScraperTargetResponse" MetadataBackup: type: object properties: @@ -12904,7 +16955,7 @@ components: type: string format: binary buckets: - $ref: '#/components/schemas/BucketMetadataManifests' + $ref: "#/components/schemas/BucketMetadataManifests" required: - kv - sql @@ -12912,7 +16963,7 @@ components: BucketMetadataManifests: type: array items: - $ref: '#/components/schemas/BucketMetadataManifest' + $ref: "#/components/schemas/BucketMetadataManifest" BucketMetadataManifest: type: object properties: @@ -12929,7 +16980,7 @@ components: defaultRetentionPolicy: type: string retentionPolicies: - $ref: '#/components/schemas/RetentionPolicyManifests' + $ref: "#/components/schemas/RetentionPolicyManifests" required: - organizationID - organizationName @@ -12940,7 +16991,7 @@ components: RetentionPolicyManifests: type: array items: - $ref: '#/components/schemas/RetentionPolicyManifest' + $ref: "#/components/schemas/RetentionPolicyManifest" RetentionPolicyManifest: type: object properties: @@ -12955,9 +17006,9 @@ components: type: integer format: int64 shardGroups: - $ref: '#/components/schemas/ShardGroupManifests' + $ref: "#/components/schemas/ShardGroupManifests" subscriptions: - $ref: '#/components/schemas/SubscriptionManifests' + $ref: "#/components/schemas/SubscriptionManifests" required: - name - replicaN @@ -12968,7 +17019,7 @@ components: ShardGroupManifests: type: array items: - $ref: '#/components/schemas/ShardGroupManifest' + $ref: "#/components/schemas/ShardGroupManifest" ShardGroupManifest: type: object properties: @@ -12988,7 +17039,7 @@ components: type: string format: date-time shards: - $ref: '#/components/schemas/ShardManifests' + $ref: "#/components/schemas/ShardManifests" required: - id - startTime @@ -12997,7 +17048,7 @@ components: ShardManifests: type: array items: - $ref: '#/components/schemas/ShardManifest' + $ref: "#/components/schemas/ShardManifest" ShardManifest: type: object properties: @@ -13005,27 +17056,27 @@ components: type: integer format: int64 shardOwners: - $ref: '#/components/schemas/ShardOwners' + $ref: "#/components/schemas/ShardOwners" required: - id - shardOwners ShardOwners: type: array items: - $ref: '#/components/schemas/ShardOwner' + $ref: "#/components/schemas/ShardOwner" ShardOwner: type: object properties: nodeID: type: integer format: int64 - description: ID of the node that owns a shard. + description: The ID of the node that owns the shard. required: - nodeID SubscriptionManifests: type: array items: - $ref: '#/components/schemas/SubscriptionManifest' + $ref: "#/components/schemas/SubscriptionManifest" SubscriptionManifest: type: object properties: @@ -13050,7 +17101,7 @@ components: name: type: string shardMappings: - $ref: '#/components/schemas/BucketShardMappings' + $ref: "#/components/schemas/BucketShardMappings" required: - id - name @@ -13058,7 +17109,7 @@ components: BucketShardMappings: type: array items: - $ref: '#/components/schemas/BucketShardMapping' + $ref: "#/components/schemas/BucketShardMapping" BucketShardMapping: type: object properties: @@ -13108,7 +17159,7 @@ components: remotes: type: array items: - $ref: '#/components/schemas/RemoteConnection' + $ref: "#/components/schemas/RemoteConnection" RemoteConnectionCreationRequest: type: object properties: @@ -13169,6 +17220,8 @@ components: type: string remoteBucketID: type: string + remoteBucketName: + type: string maxQueueSizeBytes: type: integer format: int64 @@ -13187,7 +17240,6 @@ components: - remoteID - orgID - localBucketID - - remoteBucketID - maxQueueSizeBytes - currentQueueSizeBytes Replications: @@ -13196,7 +17248,7 @@ components: replications: type: array items: - $ref: '#/components/schemas/Replication' + $ref: "#/components/schemas/Replication" ReplicationCreationRequest: type: object properties: @@ -13212,6 +17264,8 @@ components: type: string remoteBucketID: type: string + remoteBucketName: + type: string maxQueueSizeBytes: type: integer format: int64 @@ -13220,13 +17274,18 @@ components: dropNonRetryableData: type: boolean default: false + maxAgeSeconds: + type: integer + format: int64 + minimum: 0 + default: 604800 required: - name - orgID - remoteID - localBucketID - - remoteBucketID - maxQueueSizeBytes + - maxAgeSeconds ReplicationUpdateRequest: type: object properties: @@ -13238,19 +17297,254 @@ components: type: string remoteBucketID: type: string + remoteBucketName: + type: string maxQueueSizeBytes: type: integer format: int64 minimum: 33554430 dropNonRetryableData: type: boolean + maxAgeSeconds: + type: integer + format: int64 + minimum: 0 + Tasks: + type: object + properties: + links: + readOnly: true + $ref: "#/components/schemas/Links" + tasks: + type: array + items: + $ref: "#/components/schemas/Task" + Task: + type: object + properties: + id: + readOnly: true + type: string + orgID: + description: The ID of the organization that owns the task. + type: string + org: + description: The name of the organization that owns the task. + type: string + name: + description: The name of the task. + type: string + ownerID: + description: The ID of the user who owns the Task. + type: string + description: + description: The description of the task. + type: string + status: + $ref: "#/components/schemas/TaskStatusType" + labels: + $ref: "#/components/schemas/Labels" + authorizationID: + description: The ID of the authorization used when the task communicates with the query engine. + type: string + flux: + description: The Flux script that the task runs. + type: string + every: + description: "An interval ([duration literal](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals))) at which the task runs. `every` also determines when the task first runs, depending on the specified time." + type: string + format: duration + cron: + description: "[Cron expression](https://en.wikipedia.org/wiki/Cron#Overview) that defines the schedule on which the task runs. InfluxDB bases cron runs on the system time." + type: string + offset: + description: "A [duration](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals) to delay execution of the task after the scheduled time has elapsed. `0` removes the offset." + type: string + format: duration + latestCompleted: + description: "A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/flux/v0.x/data-types/basic/time/#time-syntax)) of the latest scheduled and completed run." + type: string + format: date-time + readOnly: true + lastRunStatus: + readOnly: true + type: string + enum: + - failed + - success + - canceled + lastRunError: + readOnly: true + type: string + createdAt: + type: string + format: date-time + readOnly: true + updatedAt: + type: string + format: date-time + readOnly: true + links: + type: object + readOnly: true + example: + self: /api/v2/tasks/1 + owners: /api/v2/tasks/1/owners + members: /api/v2/tasks/1/members + labels: /api/v2/tasks/1/labels + runs: /api/v2/tasks/1/runs + logs: /api/v2/tasks/1/logs + properties: + self: + $ref: "#/components/schemas/Link" + owners: + $ref: "#/components/schemas/Link" + members: + $ref: "#/components/schemas/Link" + runs: + $ref: "#/components/schemas/Link" + logs: + $ref: "#/components/schemas/Link" + labels: + $ref: "#/components/schemas/Link" + required: + - id + - name + - orgID + - flux + TaskCreateRequest: + type: object + properties: + orgID: + description: The ID of the organization that owns this Task. + type: string + org: + description: The name of the organization that owns this Task. + type: string + status: + $ref: "#/components/schemas/TaskStatusType" + flux: + description: The Flux script to run for this task. + type: string + description: + description: An optional description of the task. + type: string + required: + - flux + TaskUpdateRequest: + type: object + properties: + status: + $ref: "#/components/schemas/TaskStatusType" + flux: + description: The Flux script that the task runs. + type: string + name: + description: Update the 'name' option in the flux script. + type: string + every: + description: Update the 'every' option in the flux script. + type: string + cron: + description: Update the 'cron' option in the flux script. + type: string + offset: + description: Update the 'offset' option in the flux script. + type: string + description: + description: Update the description of the task. + type: string responses: - ServerError: + AuthorizationError: + description: | + Unauthorized. The error may indicate one of the following: + + * The `Authorization: Token` header is missing or malformed. + * The API token value is missing from the header. + * The token doesn't have sufficient permissions to write to this organization and bucket. + content: + application/json: + schema: + properties: + code: + description: | + The HTTP status code description. Default is `unauthorized`. + readOnly: true + type: string + enum: + - unauthorized + message: + readOnly: true + description: A human-readable message that may contain detail about the error. + type: string + examples: + tokenNotAuthorized: + summary: Token is not authorized to access a resource + value: + code: unauthorized + message: unauthorized access + BadRequestError: + description: | + Bad request. + The response body contains detail about the error. + + #### InfluxDB OSS + + - Returns this error if an incorrect value is passed for `org` or `orgID`. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + examples: + orgProvidedNotFound: + summary: The org or orgID passed doesn't own the token passed in the header + value: + code: invalid + message: "failed to decode request body: organization not found" + GeneralServerError: description: Non 2XX error response from server. content: application/json: schema: - $ref: '#/components/schemas/Error' + $ref: "#/components/schemas/Error" + InternalServerError: + description: | + Internal server error. + The server encountered an unexpected situation. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + ResourceNotFoundError: + description: | + Not found. + A requested resource was not found. + The response body contains the requested resource type and the name value + (if you passed it)--for example: + + - `"organization name \"my-org\" not found"` + - `"organization not found"`: indicates you passed an ID that did not match + an organization. + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + examples: + org-not-found: + summary: Organization name not found + value: + code: not found + message: organization name "my-org" not found + bucket-not-found: + summary: Bucket name not found + value: + code: not found + message: bucket "air_sensor" not found + orgID-not-found: + summary: Organization ID not found + value: + code: not found + message: organization not found securitySchemes: TokenAuthentication: type: apiKey @@ -13268,13 +17562,13 @@ components: ### Syntax - `Authorization: Token YOUR_INFLUX_TOKEN` + `Authorization: Token YOUR_INFLUX_API_TOKEN` For more information and examples, see the following: - [`/authorizations`](#tag/Authorizations) endpoint. - - [Authorize API requests](https://docs.influxdata.com/influxdb/v2.1/api-guide/api_intro/#authentication). - - [Manage API tokens](https://docs.influxdata.com/influxdb/v2.1/security/tokens/). + - [Authorize API requests](https://docs.influxdata.com/influxdb/v2.3/api-guide/api_intro/#authentication). + - [Manage API tokens](https://docs.influxdata.com/influxdb/v2.3/security/tokens/). BasicAuthentication: type: http scheme: basic diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/types.gen.go b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/types.gen.go index e279fe6a7a04..0a8928cf4583 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/types.gen.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/types.gen.go @@ -1,14 +1,12 @@ // Package domain provides primitives to interact with the openapi HTTP API. // -// Code generated by github.com/deepmap/oapi-codegen version (devel) DO NOT EDIT. +// Code generated by version DO NOT EDIT. package domain import ( "encoding/json" "fmt" "time" - - "github.com/pkg/errors" ) const ( @@ -25,11 +23,11 @@ const ( // Defines values for AxisBase. const ( - AxisBase10 AxisBase = "10" + AxisBaseEmpty AxisBase = "" - AxisBase2 AxisBase = "2" + AxisBaseN10 AxisBase = "10" - AxisBaseEmpty AxisBase = "" + AxisBaseN2 AxisBase = "2" ) // Defines values for AxisScale. @@ -74,35 +72,6 @@ const ( BuilderAggregateFunctionTypeGroup BuilderAggregateFunctionType = "group" ) -// Defines values for CheckBaseLastRunStatus. -const ( - CheckBaseLastRunStatusCanceled CheckBaseLastRunStatus = "canceled" - - CheckBaseLastRunStatusFailed CheckBaseLastRunStatus = "failed" - - CheckBaseLastRunStatusSuccess CheckBaseLastRunStatus = "success" -) - -// Defines values for CheckPatchStatus. -const ( - CheckPatchStatusActive CheckPatchStatus = "active" - - CheckPatchStatusInactive CheckPatchStatus = "inactive" -) - -// Defines values for CheckStatusLevel. -const ( - CheckStatusLevelCRIT CheckStatusLevel = "CRIT" - - CheckStatusLevelINFO CheckStatusLevel = "INFO" - - CheckStatusLevelOK CheckStatusLevel = "OK" - - CheckStatusLevelUNKNOWN CheckStatusLevel = "UNKNOWN" - - CheckStatusLevelWARN CheckStatusLevel = "WARN" -) - // Defines values for CheckViewPropertiesShape. const ( CheckViewPropertiesShapeChronografV2 CheckViewPropertiesShape = "chronograf-v2" @@ -118,11 +87,6 @@ const ( ConstantVariablePropertiesTypeConstant ConstantVariablePropertiesType = "constant" ) -// Defines values for CustomCheckType. -const ( - CustomCheckTypeCustom CustomCheckType = "custom" -) - // Defines values for DashboardColorType. const ( DashboardColorTypeBackground DashboardColorType = "background" @@ -138,11 +102,6 @@ const ( DashboardColorTypeThreshold DashboardColorType = "threshold" ) -// Defines values for DeadmanCheckType. -const ( - DeadmanCheckTypeDeadman DeadmanCheckType = "deadman" -) - // Defines values for DialectAnnotations. const ( DialectAnnotationsDatatype DialectAnnotations = "datatype" @@ -493,6 +452,8 @@ const ( ResourceTypeDocuments ResourceType = "documents" + ResourceTypeInstance ResourceType = "instance" + ResourceTypeLabels ResourceType = "labels" ResourceTypeNotebooks ResourceType = "notebooks" @@ -726,11 +687,6 @@ const ( TemplateKindVariable TemplateKind = "Variable" ) -// Defines values for ThresholdCheckType. -const ( - ThresholdCheckTypeThreshold ThresholdCheckType = "threshold" -) - // Defines values for UserStatus. const ( UserStatusActive UserStatus = "active" @@ -767,6 +723,10 @@ const ( XYGeomStacked XYGeom = "stacked" XYGeomStep XYGeom = "step" + + XYGeomStepAfter XYGeom = "stepAfter" + + XYGeomStepBefore XYGeom = "stepBefore" ) // Defines values for XYViewPropertiesHoverDimension. @@ -797,6 +757,11 @@ const ( XYViewPropertiesTypeXy XYViewPropertiesType = "xy" ) +// Defines values for AuthorizationErrorCode. +const ( + AuthorizationErrorCodeUnauthorized AuthorizationErrorCode = "unauthorized" +) + // Contains the AST for the supplied Flux query type ASTResponse struct { // Represents a complete package source tree. @@ -805,7 +770,10 @@ type ASTResponse struct { // AddResourceMemberRequestBody defines model for AddResourceMemberRequestBody. type AddResourceMemberRequestBody struct { - Id string `json:"id"` + // The ID of the user to add to the resource. + Id string `json:"id"` + + // The name of the user to add to the resource. Name *string `json:"name,omitempty"` } @@ -843,23 +811,24 @@ type Authorization struct { User *Link `json:"user,omitempty"` } `json:"links,omitempty"` - // Name of the organization that the token is scoped to. + // The name of the organization that the token is scoped to. Org *string `json:"org,omitempty"` - // ID of the organization that the authorization is scoped to. + // The ID of the organization. OrgID *string `json:"orgID,omitempty"` - // List of permissions for an authorization. An authorization must have at least one permission. + // A list of permissions for an authorization. + // An authorization must have at least one permission. Permissions *[]Permission `json:"permissions,omitempty"` - // Token used to authenticate API requests. + // The API token for authenticating InfluxDB API and CLI requests. Token *string `json:"token,omitempty"` UpdatedAt *time.Time `json:"updatedAt,omitempty"` - // Name of the user that created and owns the token. + // The name of the user that created and owns the token. User *string `json:"user,omitempty"` - // ID of the user that created and owns the token. + // The ID of the user that created and owns the token. UserID *string `json:"userID,omitempty"` } @@ -868,13 +837,14 @@ type AuthorizationPostRequest struct { // Embedded struct due to allOf(#/components/schemas/AuthorizationUpdateRequest) AuthorizationUpdateRequest `yaml:",inline"` // Embedded fields due to inline allOf schema - // ID of org that authorization is scoped to. + // The ID of the organization that owns the authorization. OrgID *string `json:"orgID,omitempty"` - // List of permissions for an auth. An auth must have at least one Permission. + // A list of permissions for an authorization. + // An authorization must have at least one permission. Permissions *[]Permission `json:"permissions,omitempty"` - // ID of user that authorization is scoped to. + // The ID of the user that the authorization is scoped to. UserID *string `json:"userID,omitempty"` } @@ -893,7 +863,9 @@ type AuthorizationUpdateRequestStatus string // Authorizations defines model for Authorizations. type Authorizations struct { Authorizations *[]Authorization `json:"authorizations,omitempty"` - Links *Links `json:"links,omitempty"` + + // URI pointers for additional paged results. + Links *Links `json:"links,omitempty"` } // The viewport for a View's visualizations @@ -943,6 +915,8 @@ type BadStatement struct { // BandViewProperties defines model for BandViewProperties. type BandViewProperties struct { + AdaptiveZoomHide *bool `json:"adaptiveZoomHide,omitempty"` + // The viewport for a View's visualizations Axes Axes `json:"axes"` @@ -1043,7 +1017,14 @@ type Bucket struct { Name string `json:"name"` OrgID *string `json:"orgID,omitempty"` - // Rules to expire or retain data. No rules means data never expires. + // Retention rules to expire or retain data. + // #### InfluxDB Cloud + // + // - `retentionRules` is required. + // + // #### InfluxDB OSS + // + // - `retentionRules` isn't required. RetentionRules RetentionRules `json:"retentionRules"` Rp *string `json:"rp,omitempty"` SchemaType *SchemaType `json:"schemaType,omitempty"` @@ -1080,7 +1061,9 @@ type BucketShardMappings []BucketShardMapping // Buckets defines model for Buckets. type Buckets struct { Buckets *[]Bucket `json:"buckets,omitempty"` - Links *Links `json:"links,omitempty"` + + // URI pointers for additional paged results. + Links *Links `json:"links,omitempty"` } // BuilderAggregateFunctionType defines model for BuilderAggregateFunctionType. @@ -1167,79 +1150,14 @@ type Cells []Cell // CellsWithViewProperties defines model for CellsWithViewProperties. type CellsWithViewProperties []CellWithViewProperties -// Check defines model for Check. -type Check struct { - // Embedded struct due to allOf(#/components/schemas/CheckDiscriminator) - CheckDiscriminator `yaml:",inline"` -} - -// CheckBase defines model for CheckBase. -type CheckBase struct { - CreatedAt *time.Time `json:"createdAt,omitempty"` - - // An optional description of the check. - Description *string `json:"description,omitempty"` - Id *string `json:"id,omitempty"` - Labels *Labels `json:"labels,omitempty"` - LastRunError *string `json:"lastRunError,omitempty"` - LastRunStatus *CheckBaseLastRunStatus `json:"lastRunStatus,omitempty"` - - // Timestamp (in RFC3339 date/time format](https://datatracker.ietf.org/doc/html/rfc3339)) of the latest scheduled and completed run. - LatestCompleted *interface{} `json:"latestCompleted,omitempty"` - Links *struct { - // URI of resource. - Labels *Link `json:"labels,omitempty"` - - // URI of resource. - Members *Link `json:"members,omitempty"` - - // URI of resource. - Owners *Link `json:"owners,omitempty"` - - // URI of resource. - Query *Link `json:"query,omitempty"` - - // URI of resource. - Self *Link `json:"self,omitempty"` - } `json:"links,omitempty"` - Name string `json:"name"` - - // The ID of the organization that owns this check. - OrgID string `json:"orgID"` - - // The ID of creator used to create this check. - OwnerID *string `json:"ownerID,omitempty"` - Query DashboardQuery `json:"query"` - Status *TaskStatusType `json:"status,omitempty"` - - // The ID of the task associated with this check. - TaskID *string `json:"taskID,omitempty"` - UpdatedAt *time.Time `json:"updatedAt,omitempty"` -} - // CheckBaseLastRunStatus defines model for CheckBase.LastRunStatus. type CheckBaseLastRunStatus string -// CheckDiscriminator defines model for CheckDiscriminator. -type CheckDiscriminator interface{} - -// CheckPatch defines model for CheckPatch. -type CheckPatch struct { - Description *string `json:"description,omitempty"` - Name *string `json:"name,omitempty"` - Status *CheckPatchStatus `json:"status,omitempty"` -} - -// CheckPatchStatus defines model for CheckPatch.Status. -type CheckPatchStatus string - -// The state to record if check matches a criteria. -type CheckStatusLevel string - // CheckViewProperties defines model for CheckViewProperties. type CheckViewProperties struct { - Check *Check `json:"check,omitempty"` - CheckID string `json:"checkID"` + AdaptiveZoomHide *bool `json:"adaptiveZoomHide,omitempty"` + Check *Check `json:"check,omitempty"` + CheckID string `json:"checkID"` // Colors define color encoding of data into a visualization Colors []DashboardColor `json:"colors"` @@ -1258,12 +1176,6 @@ type CheckViewPropertiesShape string // CheckViewPropertiesType defines model for CheckViewProperties.Type. type CheckViewPropertiesType string -// Checks defines model for Checks. -type Checks struct { - Checks *[]Check `json:"checks,omitempty"` - Links *Links `json:"links,omitempty"` -} - // A color mapping is an object that maps time series data to a UI color scheme to allow the UI to render graphs consistent colors across reloads. type ColorMapping struct { AdditionalProperties map[string]string `json:"-"` @@ -1317,20 +1229,9 @@ type CreateDashboardRequest struct { OrgID string `json:"orgID"` } -// CustomCheck defines model for CustomCheck. -type CustomCheck struct { - // Embedded struct due to allOf(#/components/schemas/CheckBase) - CheckBase `yaml:",inline"` - // Embedded fields due to inline allOf schema - Type CustomCheckType `json:"type"` -} - -// CustomCheckType defines model for CustomCheck.Type. -type CustomCheckType string - // DBRP defines model for DBRP. type DBRP struct { - // ID of the bucket used as the target for the translation. + // The ID of the bucket used as the target for the translation. BucketID string `json:"bucketID"` // InfluxDB v1 database @@ -1339,20 +1240,25 @@ type DBRP struct { // Mapping represents the default retention policy for the database specified. Default bool `json:"default"` - // ID of the DBRP mapping. - Id string `json:"id"` + // The ID of the DBRP mapping. + Id string `json:"id"` + + // URI pointers for additional paged results. Links *Links `json:"links,omitempty"` - // ID of the organization that owns this mapping. + // The ID of the organization. OrgID string `json:"orgID"` // InfluxDB v1 retention policy RetentionPolicy string `json:"retention_policy"` + + // Indicates an autogenerated, virtual mapping based on the bucket name. Currently only available in OSS. + Virtual *bool `json:"virtual,omitempty"` } // DBRPCreate defines model for DBRPCreate. type DBRPCreate struct { - // ID of the bucket used as the target for the translation. + // The ID of the bucket used as the target for the translation. BucketID string `json:"bucketID"` // InfluxDB v1 database @@ -1361,10 +1267,10 @@ type DBRPCreate struct { // Mapping represents the default retention policy for the database specified. Default *bool `json:"default,omitempty"` - // Name of the organization that owns this mapping. + // The name of the organization that owns this mapping. Org *string `json:"org,omitempty"` - // ID of the organization that owns this mapping. + // The ID of the organization. OrgID *string `json:"orgID,omitempty"` // InfluxDB v1 retention policy @@ -1489,53 +1395,18 @@ type DashboardWithViewProperties struct { // Dashboards defines model for Dashboards. type Dashboards struct { Dashboards *[]Dashboard `json:"dashboards,omitempty"` - Links *Links `json:"links,omitempty"` + + // URI pointers for additional paged results. + Links *Links `json:"links,omitempty"` } -// Represents an instant in time with nanosecond precision using the syntax of golang's RFC3339 Nanosecond variant +// Represents an instant in time with nanosecond precision in [RFC3339Nano date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339nano-timestamp). type DateTimeLiteral struct { // Type of AST node Type *NodeType `json:"type,omitempty"` Value *time.Time `json:"value,omitempty"` } -// DeadmanCheck defines model for DeadmanCheck. -type DeadmanCheck struct { - // Embedded struct due to allOf(#/components/schemas/CheckBase) - CheckBase `yaml:",inline"` - // Embedded fields due to inline allOf schema - // Check repetition interval. - Every *string `json:"every,omitempty"` - - // The state to record if check matches a criteria. - Level *CheckStatusLevel `json:"level,omitempty"` - - // Duration to delay after the schedule, before executing check. - Offset *string `json:"offset,omitempty"` - - // If only zero values reported since time, trigger an alert - ReportZero *bool `json:"reportZero,omitempty"` - - // String duration for time that a series is considered stale and should not trigger deadman. - StaleTime *string `json:"staleTime,omitempty"` - - // The template used to generate and write a status message. - StatusMessageTemplate *string `json:"statusMessageTemplate,omitempty"` - - // List of tags to write to each status. - Tags *[]struct { - Key *string `json:"key,omitempty"` - Value *string `json:"value,omitempty"` - } `json:"tags,omitempty"` - - // String duration before deadman triggers. - TimeSince *string `json:"timeSince,omitempty"` - Type DeadmanCheckType `json:"type"` -} - -// DeadmanCheckType defines model for DeadmanCheck.Type. -type DeadmanCheckType string - // Indicates whether decimal places should be enforced, and how many digits it should show. type DecimalPlaces struct { // The number of digits after decimal to display @@ -1547,38 +1418,70 @@ type DecimalPlaces struct { // The delete predicate request. type DeletePredicateRequest struct { - // InfluxQL-like delete statement + // An expression in [delete predicate syntax](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/delete-predicate/). Predicate *string `json:"predicate,omitempty"` - // RFC3339Nano + // A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)). + // The earliest time to delete from. Start time.Time `json:"start"` - // RFC3339Nano + // A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)). + // The latest time to delete from. Stop time.Time `json:"stop"` } -// Dialect are options to change the default CSV output format; https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#dialect-descriptions +// Options for tabular data output. +// Default output is [annotated CSV](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/annotated-csv/#csv-response-format) with headers. +// +// For more information about tabular data **dialect**, +// see [W3 metadata vocabulary for tabular data](https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#dialect-descriptions). type Dialect struct { - // https://www.w3.org/TR/2015/REC-tabular-data-model-20151217/#columns + // Annotation rows to include in the results. + // An _annotation_ is metadata associated with an object (column) in the data model. + // + // #### Related guides + // + // - See [Annotated CSV annotations](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/annotated-csv/#annotations) for examples and more information. + // + // For more information about **annotations** in tabular data, + // see [W3 metadata vocabulary for tabular data](https://www.w3.org/TR/2015/REC-tabular-data-model-20151217/#columns). Annotations *[]DialectAnnotations `json:"annotations,omitempty"` - // Character prefixed to comment strings + // The character prefixed to comment strings. Default is a number sign (`#`). CommentPrefix *string `json:"commentPrefix,omitempty"` - // Format of timestamps + // The format for timestamps in results. + // Default is [`RFC3339` date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp). + // To include nanoseconds in timestamps, use `RFC3339Nano`. + // + // #### Example formatted date/time values + // + // | Format | Value | + // |:------------|:----------------------------| + // | `RFC3339` | `"2006-01-02T15:04:05Z07:00"` | + // | `RFC3339Nano` | `"2006-01-02T15:04:05.999999999Z07:00"` | DateTimeFormat *DialectDateTimeFormat `json:"dateTimeFormat,omitempty"` - // Separator between cells; the default is , + // The separator used between cells. Default is a comma (`,`). Delimiter *string `json:"delimiter,omitempty"` - // If true, the results will contain a header row + // If true, the results contain a header row. Header *bool `json:"header,omitempty"` } // DialectAnnotations defines model for Dialect.Annotations. type DialectAnnotations string -// Format of timestamps +// The format for timestamps in results. +// Default is [`RFC3339` date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp). +// To include nanoseconds in timestamps, use `RFC3339Nano`. +// +// #### Example formatted date/time values +// +// | Format | Value | +// |:------------|:----------------------------| +// | `RFC3339` | `"2006-01-02T15:04:05Z07:00"` | +// | `RFC3339Nano` | `"2006-01-02T15:04:05.999999999Z07:00"` | type DialectDateTimeFormat string // Used to create and directly specify the elements of a dictionary @@ -1590,7 +1493,7 @@ type DictExpression struct { Type *NodeType `json:"type,omitempty"` } -// A key/value pair in a dictionary +// A key-value pair in a dictionary. type DictItem struct { Key *Expression `json:"key,omitempty"` @@ -1638,7 +1541,7 @@ type ErrorCode string // Expression defines model for Expression. type Expression interface{} -// May consist of an expression that does not return a value and is executed solely for its side-effects +// May consist of an expression that doesn't return a value and is executed solely for its side-effects type ExpressionStatement struct { Expression *Expression `json:"expression,omitempty"` @@ -1891,15 +1794,6 @@ type GeoViewPropertiesShape string // GeoViewPropertiesType defines model for GeoViewProperties.Type. type GeoViewPropertiesType string -// GreaterThreshold defines model for GreaterThreshold. -type GreaterThreshold struct { - // Embedded struct due to allOf(#/components/schemas/ThresholdBase) - ThresholdBase `yaml:",inline"` - // Embedded fields due to inline allOf schema - Type GreaterThresholdType `json:"type"` - Value float32 `json:"value"` -} - // GreaterThresholdType defines model for GreaterThreshold.Type. type GreaterThresholdType string @@ -1923,14 +1817,14 @@ type HTTPNotificationEndpoint struct { // HTTPNotificationEndpointAuthMethod defines model for HTTPNotificationEndpoint.AuthMethod. type HTTPNotificationEndpointAuthMethod string +// HTTPNotificationEndpointMethod defines model for HTTPNotificationEndpoint.Method. +type HTTPNotificationEndpointMethod string + // Customized headers. type HTTPNotificationEndpoint_Headers struct { AdditionalProperties map[string]string `json:"-"` } -// HTTPNotificationEndpointMethod defines model for HTTPNotificationEndpoint.Method. -type HTTPNotificationEndpointMethod string - // HTTPNotificationRule defines model for HTTPNotificationRule. type HTTPNotificationRule struct { // Embedded struct due to allOf(#/components/schemas/NotificationRuleBase) @@ -1963,7 +1857,8 @@ type HealthCheckStatus string // HeatmapViewProperties defines model for HeatmapViewProperties. type HeatmapViewProperties struct { - BinSize float32 `json:"binSize"` + AdaptiveZoomHide *bool `json:"adaptiveZoomHide,omitempty"` + BinSize float32 `json:"binSize"` // Colors define color encoding of data into a visualization Colors []string `json:"colors"` @@ -2076,7 +1971,8 @@ type IntegerLiteral struct { // IsOnboarding defines model for IsOnboarding. type IsOnboarding struct { - // True means that the influxdb instance has NOT had initial setup; false means that the database has been setup. + // If `true`, the InfluxDB instance hasn't had initial setup; + // `false` otherwise. Allowed *bool `json:"allowed,omitempty"` } @@ -2086,11 +1982,13 @@ type Label struct { Name *string `json:"name,omitempty"` OrgID *string `json:"orgID,omitempty"` - // Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value. + // Key-value pairs associated with this label. + // To remove a property, send an update with an empty value (`""`) for the key. Properties *Label_Properties `json:"properties,omitempty"` } -// Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value. +// Key-value pairs associated with this label. +// To remove a property, send an update with an empty value (`""`) for the key. type Label_Properties struct { AdditionalProperties map[string]string `json:"-"` } @@ -2100,35 +1998,41 @@ type LabelCreateRequest struct { Name string `json:"name"` OrgID string `json:"orgID"` - // Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value. + // Key-value pairs associated with this label. + // + // To remove a property, send an update with an empty value (`""`) for the key. Properties *LabelCreateRequest_Properties `json:"properties,omitempty"` } -// Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value. +// Key-value pairs associated with this label. +// +// To remove a property, send an update with an empty value (`""`) for the key. type LabelCreateRequest_Properties struct { AdditionalProperties map[string]string `json:"-"` } // LabelMapping defines model for LabelMapping. type LabelMapping struct { + // Label ID. + // The ID of the label to attach. LabelID *string `json:"labelID,omitempty"` } // LabelResponse defines model for LabelResponse. type LabelResponse struct { Label *Label `json:"label,omitempty"` + + // URI pointers for additional paged results. Links *Links `json:"links,omitempty"` } // LabelUpdate defines model for LabelUpdate. type LabelUpdate struct { - Name *string `json:"name,omitempty"` - - // Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value. + Name *string `json:"name,omitempty"` Properties *LabelUpdate_Properties `json:"properties,omitempty"` } -// Key/Value pairs associated with this label. Keys can be removed by sending an update with an empty value. +// LabelUpdate_Properties defines model for LabelUpdate.Properties. type LabelUpdate_Properties struct { AdditionalProperties map[string]string `json:"-"` } @@ -2139,12 +2043,14 @@ type Labels []Label // LabelsResponse defines model for LabelsResponse. type LabelsResponse struct { Labels *Labels `json:"labels,omitempty"` - Links *Links `json:"links,omitempty"` + + // URI pointers for additional paged results. + Links *Links `json:"links,omitempty"` } // Flux query to be analyzed. type LanguageRequest struct { - // Flux query script to be analyzed + // The Flux query script to be analyzed. Query string `json:"query"` } @@ -2166,38 +2072,13 @@ type LatLonColumns struct { Lon LatLonColumn `json:"lon"` } -// LegacyAuthorizationPostRequest defines model for LegacyAuthorizationPostRequest. -type LegacyAuthorizationPostRequest struct { - // Embedded struct due to allOf(#/components/schemas/AuthorizationUpdateRequest) - AuthorizationUpdateRequest `yaml:",inline"` - // Embedded fields due to inline allOf schema - // ID of org that authorization is scoped to. - OrgID *string `json:"orgID,omitempty"` - - // List of permissions for an auth. An auth must have at least one Permission. - Permissions *[]Permission `json:"permissions,omitempty"` - - // Token (name) of the authorization - Token *string `json:"token,omitempty"` - - // ID of user that authorization is scoped to. - UserID *string `json:"userID,omitempty"` -} - -// LesserThreshold defines model for LesserThreshold. -type LesserThreshold struct { - // Embedded struct due to allOf(#/components/schemas/ThresholdBase) - ThresholdBase `yaml:",inline"` - // Embedded fields due to inline allOf schema - Type LesserThresholdType `json:"type"` - Value float32 `json:"value"` -} - // LesserThresholdType defines model for LesserThreshold.Type. type LesserThresholdType string // LinePlusSingleStatProperties defines model for LinePlusSingleStatProperties. type LinePlusSingleStatProperties struct { + AdaptiveZoomHide *bool `json:"adaptiveZoomHide,omitempty"` + // The viewport for a View's visualizations Axes Axes `json:"axes"` @@ -2286,7 +2167,7 @@ type LineProtocolLengthErrorCode string // URI of resource. type Link string -// Links defines model for Links. +// URI pointers for additional paged results. type Links struct { // URI of resource. Next *Link `json:"next,omitempty"` @@ -2303,10 +2184,10 @@ type LogEvent struct { // A description of the event that occurred. Message *string `json:"message,omitempty"` - // the ID of the task that logged + // The ID of the task run that generated the event. RunID *string `json:"runID,omitempty"` - // Time event occurred, RFC3339Nano. + // The time ([RFC3339Nano date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339nano-timestamp)) that the event occurred. Time *time.Time `json:"time,omitempty"` } @@ -2488,6 +2369,7 @@ type NotificationEndpointUpdateStatus string // NotificationEndpoints defines model for NotificationEndpoints. type NotificationEndpoints struct { + // URI pointers for additional paged results. Links *Links `json:"links,omitempty"` NotificationEndpoints *[]NotificationEndpoint `json:"notificationEndpoints,omitempty"` } @@ -2513,7 +2395,7 @@ type NotificationRuleBase struct { LastRunError *string `json:"lastRunError,omitempty"` LastRunStatus *NotificationRuleBaseLastRunStatus `json:"lastRunStatus,omitempty"` - // Timestamp (in RFC3339 date/time format](https://datatracker.ietf.org/doc/html/rfc3339)) of the latest scheduled and completed run. + // A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)) of the latest scheduled and completed run. LatestCompleted *time.Time `json:"latestCompleted,omitempty"` // Don't notify me more than times every seconds. If set, limitEvery cannot be empty. @@ -2548,10 +2430,12 @@ type NotificationRuleBase struct { OrgID string `json:"orgID"` // The ID of creator used to create this notification rule. - OwnerID *string `json:"ownerID,omitempty"` - RunbookLink *string `json:"runbookLink,omitempty"` - SleepUntil *string `json:"sleepUntil,omitempty"` - Status TaskStatusType `json:"status"` + OwnerID *string `json:"ownerID,omitempty"` + RunbookLink *string `json:"runbookLink,omitempty"` + SleepUntil *string `json:"sleepUntil,omitempty"` + + // `inactive` cancels scheduled runs and prevents manual runs of the task. + Status TaskStatusType `json:"status"` // List of status rules the notification rule attempts to match. StatusRules []StatusRule `json:"statusRules"` @@ -2582,6 +2466,7 @@ type NotificationRuleUpdateStatus string // NotificationRules defines model for NotificationRules. type NotificationRules struct { + // URI pointers for additional paged results. Links *Links `json:"links,omitempty"` NotificationRules *[]NotificationRule `json:"notificationRules,omitempty"` } @@ -2668,6 +2553,7 @@ type OrganizationStatus string // Organizations defines model for Organizations. type Organizations struct { + // URI pointers for additional paged results. Links *Links `json:"links,omitempty"` Orgs *[]Organization `json:"orgs,omitempty"` } @@ -2735,10 +2621,13 @@ type PasswordResetBody struct { Password string `json:"password"` } -// Updates to an existing bucket resource. +// An object that contains updated bucket properties to apply. type PatchBucketRequest struct { + // A description of the bucket. Description *string `json:"description,omitempty"` - Name *string `json:"name,omitempty"` + + // The name of the bucket. + Name *string `json:"name,omitempty"` // Updates to rules to expire or retain data. No rules means no updates. RetentionRules *PatchRetentionRules `json:"retentionRules,omitempty"` @@ -2753,14 +2642,29 @@ type PatchOrganizationRequest struct { Name *string `json:"name,omitempty"` } -// Updates to a rule to expire or retain data. +// PatchRetentionRule defines model for PatchRetentionRule. type PatchRetentionRule struct { - // Duration in seconds for how long data will be kept in the database. 0 means infinite. - EverySeconds *int64 `json:"everySeconds,omitempty"` + // The number of seconds to keep data. + // Default duration is `2592000` (30 days). + // `0` represents infinite retention. + EverySeconds int64 `json:"everySeconds"` - // Shard duration measured in seconds. - ShardGroupDurationSeconds *int64 `json:"shardGroupDurationSeconds,omitempty"` - Type PatchRetentionRuleType `json:"type"` + // The [shard group duration](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#shard). + // The number of seconds that each shard group covers. + // + // #### InfluxDB Cloud + // + // - Doesn't use `shardGroupDurationsSeconds`. + // + // #### InfluxDB OSS + // + // - Default value depends on the [bucket retention period](https://docs.influxdata.com/influxdb/v2.3/reference/internals/shards/#shard-group-duration). + // + // #### Related guides + // + // - InfluxDB [shards and shard groups](https://docs.influxdata.com/influxdb/v2.3/reference/internals/shards/) + ShardGroupDurationSeconds *int64 `json:"shardGroupDurationSeconds,omitempty"` + Type *PatchRetentionRuleType `json:"type,omitempty"` } // PatchRetentionRuleType defines model for PatchRetentionRule.Type. @@ -2797,20 +2701,33 @@ type PipeLiteral struct { // PostBucketRequest defines model for PostBucketRequest. type PostBucketRequest struct { + // A description of the bucket. Description *string `json:"description,omitempty"` - Name string `json:"name"` - OrgID string `json:"orgID"` - // Rules to expire or retain data. No rules means data never expires. - RetentionRules RetentionRules `json:"retentionRules"` - Rp *string `json:"rp,omitempty"` - SchemaType *SchemaType `json:"schemaType,omitempty"` -} + // The name of the bucket. + Name string `json:"name"` -// PostCheck defines model for PostCheck. -type PostCheck struct { - // Embedded struct due to allOf(#/components/schemas/CheckDiscriminator) - CheckDiscriminator `yaml:",inline"` + // Organization ID. + // The ID of the organization. + OrgID string `json:"orgID"` + + // Retention rules to expire or retain data. + // #### InfluxDB Cloud + // + // - `retentionRules` is required. + // + // #### InfluxDB OSS + // + // - `retentionRules` isn't required. + RetentionRules *RetentionRules `json:"retentionRules,omitempty"` + + // Retention policy is an InfluxDB 1.x concept that represents the duration + // of time that each data point in the retention policy persists. Use `rp` + // for compatibility with InfluxDB 1.x. + // The InfluxDB 2.x and Cloud equivalent is + // [retention period](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#retention-period). + Rp *string `json:"rp,omitempty"` + SchemaType *SchemaType `json:"schemaType,omitempty"` } // PostNotificationEndpoint defines model for PostNotificationEndpoint. @@ -2843,35 +2760,86 @@ type Property struct { // PropertyKey defines model for PropertyKey. type PropertyKey interface{} -// Query influx using the Flux language +// Query InfluxDB with the Flux language type Query struct { - // Dialect are options to change the default CSV output format; https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#dialect-descriptions + // Options for tabular data output. + // Default output is [annotated CSV](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/annotated-csv/#csv-response-format) with headers. + // + // For more information about tabular data **dialect**, + // see [W3 metadata vocabulary for tabular data](https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#dialect-descriptions). Dialect *Dialect `json:"dialect,omitempty"` // Represents a source from a single file Extern *File `json:"extern,omitempty"` - // Specifies the time that should be reported as "now" in the query. Default is the server's now time. + // Specifies the time that should be reported as `now` in the query. + // Default is the server `now` time. Now *time.Time `json:"now,omitempty"` - // Enumeration of key/value pairs that respresent parameters to be injected into query (can only specify either this field or extern and not both) + // Key-value pairs passed as parameters during query execution. + // + // To use parameters in your query, pass a _`query`_ with `params` references (in dot notation)--for example: + // + // ```json + // query: "from(bucket: params.mybucket) |> range(start: params.rangeStart) |> limit(n:1)" + // ``` + // + // and pass _`params`_ with the key-value pairs--for example: + // + // ```json + // params: { + // "mybucket": "environment", + // "rangeStart": "-30d" + // } + // ``` + // + // During query execution, InfluxDB passes _`params`_ to your script and substitutes the values. + // + // #### Limitations + // + // - If you use _`params`_, you can't use _`extern`_. Params *Query_Params `json:"params,omitempty"` - // Query script to execute. + // The query script to execute. Query string `json:"query"` // The type of query. Must be "flux". Type *QueryType `json:"type,omitempty"` } -// Enumeration of key/value pairs that respresent parameters to be injected into query (can only specify either this field or extern and not both) +// The type of query. Must be "flux". +type QueryType string + +// Key-value pairs passed as parameters during query execution. +// +// To use parameters in your query, pass a _`query`_ with `params` references (in dot notation)--for example: +// +// ```json +// +// query: "from(bucket: params.mybucket) |> range(start: params.rangeStart) |> limit(n:1)" +// +// ``` +// +// and pass _`params`_ with the key-value pairs--for example: +// +// ```json +// +// params: { +// "mybucket": "environment", +// "rangeStart": "-30d" +// } +// +// ``` +// +// During query execution, InfluxDB passes _`params`_ to your script and substitutes the values. +// +// #### Limitations +// +// - If you use _`params`_, you can't use _`extern`_. type Query_Params struct { AdditionalProperties map[string]interface{} `json:"-"` } -// The type of query. Must be "flux". -type QueryType string - // QueryEditMode defines model for QueryEditMode. type QueryEditMode string @@ -2887,17 +2855,6 @@ type QueryVariableProperties struct { // QueryVariablePropertiesType defines model for QueryVariableProperties.Type. type QueryVariablePropertiesType string -// RangeThreshold defines model for RangeThreshold. -type RangeThreshold struct { - // Embedded struct due to allOf(#/components/schemas/ThresholdBase) - ThresholdBase `yaml:",inline"` - // Embedded fields due to inline allOf schema - Max float32 `json:"max"` - Min float32 `json:"min"` - Type RangeThresholdType `json:"type"` - Within bool `json:"within"` -} - // RangeThresholdType defines model for RangeThreshold.Type. type RangeThresholdType string @@ -2979,7 +2936,8 @@ type Replication struct { MaxQueueSizeBytes int64 `json:"maxQueueSizeBytes"` Name string `json:"name"` OrgID string `json:"orgID"` - RemoteBucketID string `json:"remoteBucketID"` + RemoteBucketID *string `json:"remoteBucketID,omitempty"` + RemoteBucketName *string `json:"remoteBucketName,omitempty"` RemoteID string `json:"remoteID"` } @@ -2988,10 +2946,12 @@ type ReplicationCreationRequest struct { Description *string `json:"description,omitempty"` DropNonRetryableData *bool `json:"dropNonRetryableData,omitempty"` LocalBucketID string `json:"localBucketID"` + MaxAgeSeconds int64 `json:"maxAgeSeconds"` MaxQueueSizeBytes int64 `json:"maxQueueSizeBytes"` Name string `json:"name"` OrgID string `json:"orgID"` - RemoteBucketID string `json:"remoteBucketID"` + RemoteBucketID *string `json:"remoteBucketID,omitempty"` + RemoteBucketName *string `json:"remoteBucketName,omitempty"` RemoteID string `json:"remoteID"` } @@ -2999,9 +2959,11 @@ type ReplicationCreationRequest struct { type ReplicationUpdateRequest struct { Description *string `json:"description,omitempty"` DropNonRetryableData *bool `json:"dropNonRetryableData,omitempty"` + MaxAgeSeconds *int64 `json:"maxAgeSeconds,omitempty"` MaxQueueSizeBytes *int64 `json:"maxQueueSizeBytes,omitempty"` Name *string `json:"name,omitempty"` RemoteBucketID *string `json:"remoteBucketID,omitempty"` + RemoteBucketName *string `json:"remoteBucketName,omitempty"` RemoteID *string `json:"remoteID,omitempty"` } @@ -3012,21 +2974,28 @@ type Replications struct { // Resource defines model for Resource. type Resource struct { - // If ID is set that is a permission for a specific resource. if it is not set it is a permission for all resources of that resource type. + // The ID of a specific resource. + // In a `permission`, applies the permission to only the resource with this ID. Id *string `json:"id,omitempty"` - // Optional name of the resource if the resource has a name field. + // Optional: A name for the resource. + // Not all resource types have a name field. Name *string `json:"name,omitempty"` - // Optional name of the organization of the organization with orgID. + // Optional: The name of the organization with `orgID`. Org *string `json:"org,omitempty"` - // If orgID is set that is a permission for all resources owned my that org. if it is not set it is a permission for all resources of that resource type. - OrgID *string `json:"orgID,omitempty"` - Type ResourceType `json:"type"` + // The ID of the organization that owns the resource. + // In a `permission`, applies the permission to all resources of `type` owned by this organization. + OrgID *string `json:"orgID,omitempty"` + + // The type of resource. + // In a `permission`, applies the permission to all resources of this type. + Type ResourceType `json:"type"` } -// ResourceType defines model for Resource.Type. +// The type of resource. +// In a `permission`, applies the permission to all resources of this type. type ResourceType string // ResourceMember defines model for ResourceMember. @@ -3090,18 +3059,37 @@ type RetentionPolicyManifests []RetentionPolicyManifest // RetentionRule defines model for RetentionRule. type RetentionRule struct { - // Duration in seconds for how long data will be kept in the database. 0 means infinite. + // The duration in seconds for how long data will be kept in the database. + // The default duration is 2592000 (30 days). + // 0 represents infinite retention. EverySeconds int64 `json:"everySeconds"` - // Shard duration measured in seconds. - ShardGroupDurationSeconds *int64 `json:"shardGroupDurationSeconds,omitempty"` - Type RetentionRuleType `json:"type"` + // The shard group duration. + // The duration or interval (in seconds) that each shard group covers. + // + // #### InfluxDB Cloud + // + // - Does not use `shardGroupDurationsSeconds`. + // + // #### InfluxDB OSS + // + // - Default value depends on the + // [bucket retention period](https://docs.influxdata.com/influxdb/v2.3/v2.3/reference/internals/shards/#shard-group-duration). + ShardGroupDurationSeconds *int64 `json:"shardGroupDurationSeconds,omitempty"` + Type *RetentionRuleType `json:"type,omitempty"` } // RetentionRuleType defines model for RetentionRule.Type. type RetentionRuleType string -// Rules to expire or retain data. No rules means data never expires. +// Retention rules to expire or retain data. +// #### InfluxDB Cloud +// +// - `retentionRules` is required. +// +// #### InfluxDB OSS +// +// - `retentionRules` isn't required. type RetentionRules []RetentionRule // Defines an expression to return @@ -3150,10 +3138,13 @@ type RuleStatusLevel string // Run defines model for Run. type Run struct { - // Time run finished executing, RFC3339Nano. + // The time ([RFC3339Nano date/time format](https://go.dev/src/time/format.go)) the run finished executing. FinishedAt *time.Time `json:"finishedAt,omitempty"` - Id *string `json:"id,omitempty"` - Links *struct { + + // Flux used for the task + Flux *string `json:"flux,omitempty"` + Id *string `json:"id,omitempty"` + Links *struct { Retry *string `json:"retry,omitempty"` Self *string `json:"self,omitempty"` Task *string `json:"task,omitempty"` @@ -3162,13 +3153,13 @@ type Run struct { // An array of logs associated with the run. Log *[]LogEvent `json:"log,omitempty"` - // Time run was manually requested, RFC3339Nano. + // The time ([RFC3339Nano date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339nano-timestamp)) the run was manually requested. RequestedAt *time.Time `json:"requestedAt,omitempty"` - // Time used for run's "now" option, RFC3339. + // The time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp) used for the run's `now` option. ScheduledFor *time.Time `json:"scheduledFor,omitempty"` - // Time run started executing, RFC3339Nano. + // The time ([RFC3339Nano date/time format](https://go.dev/src/time/format.go)) the run started executing. StartedAt *time.Time `json:"startedAt,omitempty"` Status *RunStatus `json:"status,omitempty"` TaskID *string `json:"taskID,omitempty"` @@ -3179,12 +3170,15 @@ type RunStatus string // RunManually defines model for RunManually. type RunManually struct { - // Time used for run's "now" option, RFC3339. Default is the server's now time. + // The time [RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp) + // used for the run's `now` option. + // Default is the server _now_ time. ScheduledFor *time.Time `json:"scheduledFor"` } // Runs defines model for Runs. type Runs struct { + // URI pointers for additional paged results. Links *Links `json:"links,omitempty"` Runs *[]Run `json:"runs,omitempty"` } @@ -3210,6 +3204,8 @@ type SMTPNotificationRuleBaseType string // ScatterViewProperties defines model for ScatterViewProperties. type ScatterViewProperties struct { + AdaptiveZoomHide *bool `json:"adaptiveZoomHide,omitempty"` + // Colors define color encoding of data into a visualization Colors []string `json:"colors"` FillColumns []string `json:"fillColumns"` @@ -3358,7 +3354,7 @@ type ShardManifests []ShardManifest // ShardOwner defines model for ShardOwner. type ShardOwner struct { - // ID of the node that owns a shard. + // The ID of the node that owns the shard. NodeID int64 `json:"nodeID"` } @@ -3608,30 +3604,27 @@ type TagRuleOperator string // Task defines model for Task. type Task struct { - // ID of the authorization used when the task communicates with the query engine. + // The ID of the authorization used when the task communicates with the query engine. AuthorizationID *string `json:"authorizationID,omitempty"` CreatedAt *time.Time `json:"createdAt,omitempty"` - // [Cron expression](https://en.wikipedia.org/wiki/Cron#Overview) that defines the schedule on which the task runs. Cron scheduling is based on system time. - // Value is a [Cron expression](https://en.wikipedia.org/wiki/Cron#Overview). + // [Cron expression](https://en.wikipedia.org/wiki/Cron#Overview) that defines the schedule on which the task runs. InfluxDB bases cron runs on the system time. Cron *string `json:"cron,omitempty"` - // Description of the task. + // The description of the task. Description *string `json:"description,omitempty"` - // Interval at which the task runs. `every` also determines when the task first runs, depending on the specified time. - // Value is a [duration literal](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals)). + // An interval ([duration literal](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals))) at which the task runs. `every` also determines when the task first runs, depending on the specified time. Every *string `json:"every,omitempty"` - // Flux script to run for this task. + // The Flux script that the task runs. Flux string `json:"flux"` Id string `json:"id"` Labels *Labels `json:"labels,omitempty"` LastRunError *string `json:"lastRunError,omitempty"` LastRunStatus *TaskLastRunStatus `json:"lastRunStatus,omitempty"` - // Timestamp of the latest scheduled and completed run. - // Value is a timestamp in [RFC3339 date/time format](https://docs.influxdata.com/flux/v0.x/data-types/basic/time/#time-syntax). + // A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/flux/v0.x/data-types/basic/time/#time-syntax)) of the latest scheduled and completed run. LatestCompleted *time.Time `json:"latestCompleted,omitempty"` Links *struct { // URI of resource. @@ -3653,26 +3646,24 @@ type Task struct { Self *Link `json:"self,omitempty"` } `json:"links,omitempty"` - // Name of the task. + // The name of the task. Name string `json:"name"` - // [Duration](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals) to delay execution of the task after the scheduled time has elapsed. `0` removes the offset. - // The value is a [duration literal](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals). + // A [duration](https://docs.influxdata.com/flux/v0.x/spec/lexical-elements/#duration-literals) to delay execution of the task after the scheduled time has elapsed. `0` removes the offset. Offset *string `json:"offset,omitempty"` - // Name of the organization that owns the task. + // The name of the organization that owns the task. Org *string `json:"org,omitempty"` - // ID of the organization that owns the task. + // The ID of the organization that owns the task. OrgID string `json:"orgID"` - // ID of the user who owns this Task. - OwnerID *string `json:"ownerID,omitempty"` - Status *TaskStatusType `json:"status,omitempty"` + // The ID of the user who owns the Task. + OwnerID *string `json:"ownerID,omitempty"` - // Type of the task, useful for filtering a task list. - Type *string `json:"type,omitempty"` - UpdatedAt *time.Time `json:"updatedAt,omitempty"` + // `inactive` cancels scheduled runs and prevents manual runs of the task. + Status *TaskStatusType `json:"status,omitempty"` + UpdatedAt *time.Time `json:"updatedAt,omitempty"` } // TaskLastRunStatus defines model for Task.LastRunStatus. @@ -3690,37 +3681,42 @@ type TaskCreateRequest struct { Org *string `json:"org,omitempty"` // The ID of the organization that owns this Task. - OrgID *string `json:"orgID,omitempty"` + OrgID *string `json:"orgID,omitempty"` + + // `inactive` cancels scheduled runs and prevents manual runs of the task. Status *TaskStatusType `json:"status,omitempty"` } -// TaskStatusType defines model for TaskStatusType. +// `inactive` cancels scheduled runs and prevents manual runs of the task. type TaskStatusType string // TaskUpdateRequest defines model for TaskUpdateRequest. type TaskUpdateRequest struct { - // Override the 'cron' option in the flux script. + // Update the 'cron' option in the flux script. Cron *string `json:"cron,omitempty"` - // An optional description of the task. + // Update the description of the task. Description *string `json:"description,omitempty"` - // Override the 'every' option in the flux script. + // Update the 'every' option in the flux script. Every *string `json:"every,omitempty"` - // The Flux script to run for this task. + // The Flux script that the task runs. Flux *string `json:"flux,omitempty"` - // Override the 'name' option in the flux script. + // Update the 'name' option in the flux script. Name *string `json:"name,omitempty"` - // Override the 'offset' option in the flux script. - Offset *string `json:"offset,omitempty"` + // Update the 'offset' option in the flux script. + Offset *string `json:"offset,omitempty"` + + // `inactive` cancels scheduled runs and prevents manual runs of the task. Status *TaskStatusType `json:"status,omitempty"` } // Tasks defines model for Tasks. type Tasks struct { + // URI pointers for additional paged results. Links *Links `json:"links,omitempty"` Tasks *[]Task `json:"tasks,omitempty"` } @@ -3801,7 +3797,7 @@ type TelegramNotificationEndpoint struct { // Embedded struct due to allOf(#/components/schemas/NotificationEndpointBase) NotificationEndpointBase `yaml:",inline"` // Embedded fields due to inline allOf schema - // ID of the telegram channel, a chat_id in https://core.telegram.org/bots/api#sendmessage . + // The ID of the telegram channel; a chat_id in https://core.telegram.org/bots/api#sendmessage . Channel string `json:"channel"` // Specifies the Telegram bot token. See https://core.telegram.org/bots#creating-a-new-bot . @@ -3818,20 +3814,20 @@ type TelegramNotificationRule struct { // TelegramNotificationRuleBase defines model for TelegramNotificationRuleBase. type TelegramNotificationRuleBase struct { - // Disables preview of web links in the sent messages when "true". Defaults to "false" . + // Disables preview of web links in the sent messages when "true". Defaults to "false". DisableWebPagePreview *bool `json:"disableWebPagePreview,omitempty"` // The message template as a flux interpolated string. MessageTemplate string `json:"messageTemplate"` - // Parse mode of the message text per https://core.telegram.org/bots/api#formatting-options . Defaults to "MarkdownV2" . + // Parse mode of the message text per https://core.telegram.org/bots/api#formatting-options. Defaults to "MarkdownV2". ParseMode *TelegramNotificationRuleBaseParseMode `json:"parseMode,omitempty"` // The discriminator between other types of notification rules is "telegram". Type TelegramNotificationRuleBaseType `json:"type"` } -// Parse mode of the message text per https://core.telegram.org/bots/api#formatting-options . Defaults to "MarkdownV2" . +// Parse mode of the message text per https://core.telegram.org/bots/api#formatting-options. Defaults to "MarkdownV2". type TelegramNotificationRuleBaseParseMode string // The discriminator between other types of notification rules is "telegram". @@ -3841,29 +3837,176 @@ type TelegramNotificationRuleBaseType string type Template []struct { ApiVersion *string `json:"apiVersion,omitempty"` Kind *TemplateKind `json:"kind,omitempty"` - Meta *struct { + + // Metadata properties used for the resource when the template is applied. + Metadata *struct { Name *string `json:"name,omitempty"` - } `json:"meta,omitempty"` + } `json:"metadata,omitempty"` + + // Configuration properties used for the resource when the template is applied. + // Key-value pairs map to the specification for the resource. + // + // The following code samples show `spec` configurations for template resources: + // + // - A bucket: + // + // ```json + // { "spec": { + // "name": "iot_center", + // "retentionRules": [{ + // "everySeconds": 2.592e+06, + // "type": "expire" + // }] + // } + // } + // ``` + // + // - A variable: + // + // ```json + // { "spec": { + // "language": "flux", + // "name": "Node_Service", + // "query": "import \"influxdata/influxdb/v1\"\r\nv1.tagValues(bucket: \"iot_center\", + // tag: \"service\")", + // "type": "query" + // } + // } + // ``` Spec *map[string]interface{} `json:"spec,omitempty"` } // TemplateApply defines model for TemplateApply. type TemplateApply struct { - Actions *[]interface{} `json:"actions,omitempty"` - DryRun *bool `json:"dryRun,omitempty"` + // A list of `action` objects. + // Actions let you customize how InfluxDB applies templates in the request. + // + // You can use the following actions to prevent creating or updating resources: + // + // - A `skipKind` action skips template resources of a specified `kind`. + // - A `skipResource` action skips template resources with a specified `metadata.name` + // and `kind`. + Actions *[]interface{} `json:"actions,omitempty"` + + // Only applies a dry run of the templates passed in the request. + // + // - Validates the template and generates a resource diff and summary. + // - Doesn't install templates or make changes to the InfluxDB instance. + DryRun *bool `json:"dryRun,omitempty"` + + // An object with key-value pairs that map to **environment references** in templates. + // + // Environment references in templates are `envRef` objects with an `envRef.key` + // property. + // To substitute a custom environment reference value when applying templates, + // pass `envRefs` with the `envRef.key` and the value. + // + // When you apply a template, InfluxDB replaces `envRef` objects in the template + // with the values that you provide in the `envRefs` parameter. + // For more examples, see how to [define environment references](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/use/#define-environment-references). + // + // The following template fields may use environment references: + // + // - `metadata.name` + // - `spec.endpointName` + // - `spec.associations.name` + // + // For more information about including environment references in template fields, see how to + // [include user-definable resource names](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/create/#include-user-definable-resource-names). EnvRefs *TemplateApply_EnvRefs `json:"envRefs,omitempty"` - OrgID *string `json:"orgID,omitempty"` + + // Organization ID. + // InfluxDB applies templates to this organization. + // The organization owns all resources created by the template. + // + // To find your organization, see how to + // [view organizations](https://docs.influxdata.com/influxdb/v2.3/organizations/view-orgs/). + OrgID *string `json:"orgID,omitempty"` + + // A list of URLs for template files. + // + // To apply a template manifest file located at a URL, pass `remotes` + // with an array that contains the URL. Remotes *[]struct { ContentType *string `json:"contentType,omitempty"` Url string `json:"url"` } `json:"remotes,omitempty"` - Secrets *TemplateApply_Secrets `json:"secrets,omitempty"` - StackID *string `json:"stackID,omitempty"` + + // An object with key-value pairs that map to **secrets** in queries. + // + // Queries may reference secrets stored in InfluxDB--for example, + // the following Flux script retrieves `POSTGRES_USERNAME` and `POSTGRES_PASSWORD` + // secrets and then uses them to connect to a PostgreSQL database: + // + // ```js + // import "sql" + // import "influxdata/influxdb/secrets" + // + // username = secrets.get(key: "POSTGRES_USERNAME") + // password = secrets.get(key: "POSTGRES_PASSWORD") + // + // sql.from( + // driverName: "postgres", + // dataSourceName: "postgresql://${username}:${password}@localhost:5432", + // query: "SELECT * FROM example_table", + // ) + // ``` + // + // To define secret values in your `/api/v2/templates/apply` request, + // pass the `secrets` parameter with key-value pairs--for example: + // + // ```json + // { + // ... + // "secrets": { + // "POSTGRES_USERNAME": "pguser", + // "POSTGRES_PASSWORD": "foo" + // } + // ... + // } + // ``` + // + // InfluxDB stores the key-value pairs as secrets that you can access with `secrets.get()`. + // Once stored, you can't view secret values in InfluxDB. + // + // #### Related guides + // + // - [How to pass secrets when installing a template](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/use/#pass-secrets-when-installing-a-template) + Secrets *TemplateApply_Secrets `json:"secrets,omitempty"` + + // ID of the stack to update. + // + // To apply templates to an existing stack in the organization, use the `stackID` parameter. + // If you apply templates without providing a stack ID, + // InfluxDB initializes a new stack with all new resources. + // + // To find a stack ID, use the InfluxDB [`/api/v2/stacks` API endpoint](#operation/ListStacks) to list stacks. + // + // #### Related guides + // + // - [Stacks](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/stacks/) + // - [View stacks](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/stacks/view/) + StackID *string `json:"stackID,omitempty"` + + // A template object to apply. + // A template object has a `contents` property + // with an array of InfluxDB resource configurations. + // + // Pass `template` to apply only one template object. + // If you use `template`, you can't use the `templates` parameter. + // If you want to apply multiple template objects, use `templates` instead. Template *struct { ContentType *string `json:"contentType,omitempty"` Contents *Template `json:"contents,omitempty"` Sources *[]string `json:"sources,omitempty"` } `json:"template,omitempty"` + + // A list of template objects to apply. + // A template object has a `contents` property + // with an array of InfluxDB resource configurations. + // + // Use the `templates` parameter to apply multiple template objects. + // If you use `templates`, you can't use the `template` parameter. Templates *[]struct { ContentType *string `json:"contentType,omitempty"` Contents *Template `json:"contents,omitempty"` @@ -3871,12 +4014,69 @@ type TemplateApply struct { } `json:"templates,omitempty"` } -// TemplateApply_EnvRefs defines model for TemplateApply.EnvRefs. +// An object with key-value pairs that map to **environment references** in templates. +// +// Environment references in templates are `envRef` objects with an `envRef.key` +// property. +// To substitute a custom environment reference value when applying templates, +// pass `envRefs` with the `envRef.key` and the value. +// +// When you apply a template, InfluxDB replaces `envRef` objects in the template +// with the values that you provide in the `envRefs` parameter. +// For more examples, see how to [define environment references](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/use/#define-environment-references). +// +// The following template fields may use environment references: +// +// - `metadata.name` +// - `spec.endpointName` +// - `spec.associations.name` +// +// For more information about including environment references in template fields, see how to +// [include user-definable resource names](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/create/#include-user-definable-resource-names). type TemplateApply_EnvRefs struct { AdditionalProperties map[string]interface{} `json:"-"` } -// TemplateApply_Secrets defines model for TemplateApply.Secrets. +// An object with key-value pairs that map to **secrets** in queries. +// +// Queries may reference secrets stored in InfluxDB--for example, +// the following Flux script retrieves `POSTGRES_USERNAME` and `POSTGRES_PASSWORD` +// secrets and then uses them to connect to a PostgreSQL database: +// +// ```js +// import "sql" +// import "influxdata/influxdb/secrets" +// +// username = secrets.get(key: "POSTGRES_USERNAME") +// password = secrets.get(key: "POSTGRES_PASSWORD") +// +// sql.from( +// driverName: "postgres", +// dataSourceName: "postgresql://${username}:${password}@localhost:5432", +// query: "SELECT * FROM example_table", +// ) +// ``` +// +// To define secret values in your `/api/v2/templates/apply` request, +// pass the `secrets` parameter with key-value pairs--for example: +// +// ```json +// { +// ... +// "secrets": { +// "POSTGRES_USERNAME": "pguser", +// "POSTGRES_PASSWORD": "foo" +// } +// ... +// } +// ``` +// +// InfluxDB stores the key-value pairs as secrets that you can access with `secrets.get()`. +// Once stored, you can't view secret values in InfluxDB. +// +// #### Related guides +// +// - [How to pass secrets when installing a template](https://docs.influxdata.com/influxdb/v2.3/influxdb-templates/use/#pass-secrets-when-installing-a-template) type TemplateApply_Secrets struct { AdditionalProperties map[string]string `json:"-"` } @@ -3953,26 +4153,40 @@ type TemplateSummary struct { Description *string `json:"description,omitempty"` Name *string `json:"name,omitempty"` - // Rules to expire or retain data. No rules means data never expires. + // Retention rules to expire or retain data. + // #### InfluxDB Cloud + // + // - `retentionRules` is required. + // + // #### InfluxDB OSS + // + // - `retentionRules` isn't required. RetentionRules *RetentionRules `json:"retentionRules,omitempty"` } `json:"new,omitempty"` Old *struct { Description *string `json:"description,omitempty"` Name *string `json:"name,omitempty"` - // Rules to expire or retain data. No rules means data never expires. + // Retention rules to expire or retain data. + // #### InfluxDB Cloud + // + // - `retentionRules` is required. + // + // #### InfluxDB OSS + // + // - `retentionRules` isn't required. RetentionRules *RetentionRules `json:"retentionRules,omitempty"` } `json:"old,omitempty"` StateStatus *string `json:"stateStatus,omitempty"` TemplateMetaName *string `json:"templateMetaName,omitempty"` } `json:"buckets,omitempty"` Checks *[]struct { - Id *string `json:"id,omitempty"` - Kind *TemplateKind `json:"kind,omitempty"` - New *CheckDiscriminator `json:"new,omitempty"` - Old *CheckDiscriminator `json:"old,omitempty"` - StateStatus *string `json:"stateStatus,omitempty"` - TemplateMetaName *string `json:"templateMetaName,omitempty"` + Id *string `json:"id,omitempty"` + Kind *TemplateKind `json:"kind,omitempty"` + New *Check `json:"new,omitempty"` + Old *Check `json:"old,omitempty"` + StateStatus *string `json:"stateStatus,omitempty"` + TemplateMetaName *string `json:"templateMetaName,omitempty"` } `json:"checks,omitempty"` Dashboards *[]struct { Id *string `json:"id,omitempty"` @@ -4141,7 +4355,7 @@ type TemplateSummary struct { } `json:"buckets,omitempty"` Checks *[]struct { // Embedded struct due to allOf(#/components/schemas/CheckDiscriminator) - CheckDiscriminator `yaml:",inline"` + Check // Embedded fields due to inline allOf schema EnvReferences *TemplateEnvReferences `json:"envReferences,omitempty"` Kind *TemplateKind `json:"kind,omitempty"` @@ -4264,44 +4478,6 @@ type TestStatement struct { Type *NodeType `json:"type,omitempty"` } -// Threshold defines model for Threshold. -type Threshold interface{} - -// ThresholdBase defines model for ThresholdBase. -type ThresholdBase struct { - // If true, only alert if all values meet threshold. - AllValues *bool `json:"allValues,omitempty"` - - // The state to record if check matches a criteria. - Level *CheckStatusLevel `json:"level,omitempty"` -} - -// ThresholdCheck defines model for ThresholdCheck. -type ThresholdCheck struct { - // Embedded struct due to allOf(#/components/schemas/CheckBase) - CheckBase `yaml:",inline"` - // Embedded fields due to inline allOf schema - // Check repetition interval. - Every *string `json:"every,omitempty"` - - // Duration to delay after the schedule, before executing check. - Offset *string `json:"offset,omitempty"` - - // The template used to generate and write a status message. - StatusMessageTemplate *string `json:"statusMessageTemplate,omitempty"` - - // List of tags to write to each status. - Tags *[]struct { - Key *string `json:"key,omitempty"` - Value *string `json:"value,omitempty"` - } `json:"tags,omitempty"` - Thresholds *[]Threshold `json:"thresholds,omitempty"` - Type ThresholdCheckType `json:"type"` -} - -// ThresholdCheckType defines model for ThresholdCheck.Type. -type ThresholdCheckType string - // Uses operators to act on a single operand in an expression type UnaryExpression struct { Argument *Expression `json:"argument,omitempty"` @@ -4333,18 +4509,20 @@ type UserStatus string // UserResponse defines model for UserResponse. type UserResponse struct { + // The ID of the user. Id *string `json:"id,omitempty"` Links *struct { Self *string `json:"self,omitempty"` } `json:"links,omitempty"` - Name string `json:"name"` - OauthID *string `json:"oauthID,omitempty"` - // If inactive the user is inactive. + // The name of the user. + Name string `json:"name"` + + // The status of a user. An inactive user won't have access to resources. Status *UserResponseStatus `json:"status,omitempty"` } -// If inactive the user is inactive. +// The status of a user. An inactive user won't have access to resources. type UserResponseStatus string // Users defines model for Users. @@ -4412,6 +4590,8 @@ type XYGeom string // XYViewProperties defines model for XYViewProperties. type XYViewProperties struct { + AdaptiveZoomHide *bool `json:"adaptiveZoomHide,omitempty"` + // The viewport for a View's visualizations Axes Axes `json:"axes"` @@ -4478,27 +4658,45 @@ type Offset int // TraceSpan defines model for TraceSpan. type TraceSpan string -// ServerError defines model for ServerError. -type ServerError Error +// AuthorizationError defines model for AuthorizationError. +type AuthorizationError struct { + // The HTTP status code description. Default is `unauthorized`. + Code *AuthorizationErrorCode `json:"code,omitempty"` -// GetRoutesParams defines parameters for GetRoutes. -type GetRoutesParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` + // A human-readable message that may contain detail about the error. + Message *string `json:"message,omitempty"` } +// The HTTP status code description. Default is `unauthorized`. +type AuthorizationErrorCode string + +// BadRequestError defines model for BadRequestError. +type BadRequestError Error + +// GeneralServerError defines model for GeneralServerError. +type GeneralServerError Error + +// InternalServerError defines model for InternalServerError. +type InternalServerError Error + +// ResourceNotFoundError defines model for ResourceNotFoundError. +type ResourceNotFoundError Error + // GetAuthorizationsParams defines parameters for GetAuthorizations. type GetAuthorizationsParams struct { - // Only show authorizations that belong to a user ID. + // A user ID. + // Only returns authorizations scoped to this user. UserID *string `json:"userID,omitempty"` - // Only show authorizations that belong to a user name. + // A user name. + // Only returns authorizations scoped to this user. User *string `json:"user,omitempty"` - // Only show authorizations that belong to an organization ID. + // An organization ID. Only returns authorizations that belong to this organization. OrgID *string `json:"orgID,omitempty"` - // Only show authorizations that belong to a organization name. + // An organization name. + // Only returns authorizations that belong to this organization. Org *string `json:"org,omitempty"` // OpenTracing span context @@ -4514,18 +4712,39 @@ type PostAuthorizationsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostAuthorizationsAllParams defines type for all parameters for PostAuthorizations. +type PostAuthorizationsAllParams struct { + PostAuthorizationsParams + + Body PostAuthorizationsJSONRequestBody +} + // DeleteAuthorizationsIDParams defines parameters for DeleteAuthorizationsID. type DeleteAuthorizationsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteAuthorizationsIDAllParams defines type for all parameters for DeleteAuthorizationsID. +type DeleteAuthorizationsIDAllParams struct { + DeleteAuthorizationsIDParams + + AuthID string +} + // GetAuthorizationsIDParams defines parameters for GetAuthorizationsID. type GetAuthorizationsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetAuthorizationsIDAllParams defines type for all parameters for GetAuthorizationsID. +type GetAuthorizationsIDAllParams struct { + GetAuthorizationsIDParams + + AuthID string +} + // PatchAuthorizationsIDJSONBody defines parameters for PatchAuthorizationsID. type PatchAuthorizationsIDJSONBody AuthorizationUpdateRequest @@ -4535,57 +4754,61 @@ type PatchAuthorizationsIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// GetBackupKVParams defines parameters for GetBackupKV. -type GetBackupKVParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +// PatchAuthorizationsIDAllParams defines type for all parameters for PatchAuthorizationsID. +type PatchAuthorizationsIDAllParams struct { + PatchAuthorizationsIDParams + + AuthID string + + Body PatchAuthorizationsIDJSONRequestBody } -// GetBackupMetadataParams defines parameters for GetBackupMetadata. -type GetBackupMetadataParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` - - // Indicates the content encoding (usually a compression algorithm) that the client can understand. - AcceptEncoding *GetBackupMetadataParamsAcceptEncoding `json:"Accept-Encoding,omitempty"` -} - -// GetBackupMetadataParamsAcceptEncoding defines parameters for GetBackupMetadata. -type GetBackupMetadataParamsAcceptEncoding string - -// GetBackupShardIdParams defines parameters for GetBackupShardId. -type GetBackupShardIdParams struct { - // Earliest time to include in the snapshot. RFC3339 format. - Since *time.Time `json:"since,omitempty"` - - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` - - // Indicates the content encoding (usually a compression algorithm) that the client can understand. - AcceptEncoding *GetBackupShardIdParamsAcceptEncoding `json:"Accept-Encoding,omitempty"` -} - -// GetBackupShardIdParamsAcceptEncoding defines parameters for GetBackupShardId. -type GetBackupShardIdParamsAcceptEncoding string - // GetBucketsParams defines parameters for GetBuckets. type GetBucketsParams struct { + // The offset for pagination. + // The number of records to skip. Offset *Offset `json:"offset,omitempty"` - Limit *Limit `json:"limit,omitempty"` + + // Limits the number of records returned. Default is `20`. + Limit *Limit `json:"limit,omitempty"` // Resource ID to seek from. Results are not inclusive of this ID. Use `after` instead of `offset`. After *After `json:"after,omitempty"` + // Organization name. // The name of the organization. + // + // #### InfluxDB Cloud + // + // - Doesn't use `org` or `orgID`. + // - Creates a bucket in the organization associated with the authorization (API token). + // + // #### InfluxDB OSS + // + // - Accepts either `org` or `orgID`. + // - InfluxDB creates the bucket within this organization. Org *string `json:"org,omitempty"` + // Organization ID. // The organization ID. + // + // #### InfluxDB Cloud + // + // - Doesn't use `org` or `orgID`. + // - Creates a bucket in the organization associated with the authorization (API token). + // + // #### InfluxDB OSS + // + // - Accepts either `org` or `orgID`. + // - InfluxDB creates the bucket within this organization. OrgID *string `json:"orgID,omitempty"` - // Only returns buckets with a specific name. + // Bucket name. + // Only returns buckets with this specific name. Name *string `json:"name,omitempty"` - // Only returns buckets with a specific ID. + // Bucket ID. + // Only returns the bucket with this ID. Id *string `json:"id,omitempty"` // OpenTracing span context @@ -4601,18 +4824,39 @@ type PostBucketsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostBucketsAllParams defines type for all parameters for PostBuckets. +type PostBucketsAllParams struct { + PostBucketsParams + + Body PostBucketsJSONRequestBody +} + // DeleteBucketsIDParams defines parameters for DeleteBucketsID. type DeleteBucketsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteBucketsIDAllParams defines type for all parameters for DeleteBucketsID. +type DeleteBucketsIDAllParams struct { + DeleteBucketsIDParams + + BucketID string +} + // GetBucketsIDParams defines parameters for GetBucketsID. type GetBucketsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetBucketsIDAllParams defines type for all parameters for GetBucketsID. +type GetBucketsIDAllParams struct { + GetBucketsIDParams + + BucketID string +} + // PatchBucketsIDJSONBody defines parameters for PatchBucketsID. type PatchBucketsIDJSONBody PatchBucketRequest @@ -4622,12 +4866,28 @@ type PatchBucketsIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchBucketsIDAllParams defines type for all parameters for PatchBucketsID. +type PatchBucketsIDAllParams struct { + PatchBucketsIDParams + + BucketID string + + Body PatchBucketsIDJSONRequestBody +} + // GetBucketsIDLabelsParams defines parameters for GetBucketsIDLabels. type GetBucketsIDLabelsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetBucketsIDLabelsAllParams defines type for all parameters for GetBucketsIDLabels. +type GetBucketsIDLabelsAllParams struct { + GetBucketsIDLabelsParams + + BucketID string +} + // PostBucketsIDLabelsJSONBody defines parameters for PostBucketsIDLabels. type PostBucketsIDLabelsJSONBody LabelMapping @@ -4637,18 +4897,43 @@ type PostBucketsIDLabelsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostBucketsIDLabelsAllParams defines type for all parameters for PostBucketsIDLabels. +type PostBucketsIDLabelsAllParams struct { + PostBucketsIDLabelsParams + + BucketID string + + Body PostBucketsIDLabelsJSONRequestBody +} + // DeleteBucketsIDLabelsIDParams defines parameters for DeleteBucketsIDLabelsID. type DeleteBucketsIDLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteBucketsIDLabelsIDAllParams defines type for all parameters for DeleteBucketsIDLabelsID. +type DeleteBucketsIDLabelsIDAllParams struct { + DeleteBucketsIDLabelsIDParams + + BucketID string + + LabelID string +} + // GetBucketsIDMembersParams defines parameters for GetBucketsIDMembers. type GetBucketsIDMembersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetBucketsIDMembersAllParams defines type for all parameters for GetBucketsIDMembers. +type GetBucketsIDMembersAllParams struct { + GetBucketsIDMembersParams + + BucketID string +} + // PostBucketsIDMembersJSONBody defines parameters for PostBucketsIDMembers. type PostBucketsIDMembersJSONBody AddResourceMemberRequestBody @@ -4658,103 +4943,74 @@ type PostBucketsIDMembersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// DeleteBucketsIDMembersIDParams defines parameters for DeleteBucketsIDMembersID. -type DeleteBucketsIDMembersIDParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` -} - -// GetBucketsIDOwnersParams defines parameters for GetBucketsIDOwners. -type GetBucketsIDOwnersParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` -} +// PostBucketsIDMembersAllParams defines type for all parameters for PostBucketsIDMembers. +type PostBucketsIDMembersAllParams struct { + PostBucketsIDMembersParams -// PostBucketsIDOwnersJSONBody defines parameters for PostBucketsIDOwners. -type PostBucketsIDOwnersJSONBody AddResourceMemberRequestBody + BucketID string -// PostBucketsIDOwnersParams defines parameters for PostBucketsIDOwners. -type PostBucketsIDOwnersParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` + Body PostBucketsIDMembersJSONRequestBody } -// DeleteBucketsIDOwnersIDParams defines parameters for DeleteBucketsIDOwnersID. -type DeleteBucketsIDOwnersIDParams struct { +// DeleteBucketsIDMembersIDParams defines parameters for DeleteBucketsIDMembersID. +type DeleteBucketsIDMembersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// GetChecksParams defines parameters for GetChecks. -type GetChecksParams struct { - Offset *Offset `json:"offset,omitempty"` - Limit *Limit `json:"limit,omitempty"` - - // Only show checks that belong to a specific organization ID. - OrgID string `json:"orgID"` +// DeleteBucketsIDMembersIDAllParams defines type for all parameters for DeleteBucketsIDMembersID. +type DeleteBucketsIDMembersIDAllParams struct { + DeleteBucketsIDMembersIDParams - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` -} + BucketID string -// CreateCheckJSONBody defines parameters for CreateCheck. -type CreateCheckJSONBody PostCheck - -// DeleteChecksIDParams defines parameters for DeleteChecksID. -type DeleteChecksIDParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` + UserID string } -// GetChecksIDParams defines parameters for GetChecksID. -type GetChecksIDParams struct { +// GetBucketsIDOwnersParams defines parameters for GetBucketsIDOwners. +type GetBucketsIDOwnersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// PatchChecksIDJSONBody defines parameters for PatchChecksID. -type PatchChecksIDJSONBody CheckPatch +// GetBucketsIDOwnersAllParams defines type for all parameters for GetBucketsIDOwners. +type GetBucketsIDOwnersAllParams struct { + GetBucketsIDOwnersParams -// PatchChecksIDParams defines parameters for PatchChecksID. -type PatchChecksIDParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` + BucketID string } -// PutChecksIDJSONBody defines parameters for PutChecksID. -type PutChecksIDJSONBody Check +// PostBucketsIDOwnersJSONBody defines parameters for PostBucketsIDOwners. +type PostBucketsIDOwnersJSONBody AddResourceMemberRequestBody -// PutChecksIDParams defines parameters for PutChecksID. -type PutChecksIDParams struct { +// PostBucketsIDOwnersParams defines parameters for PostBucketsIDOwners. +type PostBucketsIDOwnersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// GetChecksIDLabelsParams defines parameters for GetChecksIDLabels. -type GetChecksIDLabelsParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` -} +// PostBucketsIDOwnersAllParams defines type for all parameters for PostBucketsIDOwners. +type PostBucketsIDOwnersAllParams struct { + PostBucketsIDOwnersParams -// PostChecksIDLabelsJSONBody defines parameters for PostChecksIDLabels. -type PostChecksIDLabelsJSONBody LabelMapping + BucketID string -// PostChecksIDLabelsParams defines parameters for PostChecksIDLabels. -type PostChecksIDLabelsParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` + Body PostBucketsIDOwnersJSONRequestBody } -// DeleteChecksIDLabelsIDParams defines parameters for DeleteChecksIDLabelsID. -type DeleteChecksIDLabelsIDParams struct { +// DeleteBucketsIDOwnersIDParams defines parameters for DeleteBucketsIDOwnersID. +type DeleteBucketsIDOwnersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// GetChecksIDQueryParams defines parameters for GetChecksIDQuery. -type GetChecksIDQueryParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +// DeleteBucketsIDOwnersIDAllParams defines type for all parameters for DeleteBucketsIDOwnersID. +type DeleteBucketsIDOwnersIDAllParams struct { + DeleteBucketsIDOwnersIDParams + + BucketID string + + UserID string } // GetConfigParams defines parameters for GetConfig. @@ -4765,7 +5021,11 @@ type GetConfigParams struct { // GetDashboardsParams defines parameters for GetDashboards. type GetDashboardsParams struct { - Offset *Offset `json:"offset,omitempty"` + // The offset for pagination. + // The number of records to skip. + Offset *Offset `json:"offset,omitempty"` + + // Limits the number of records returned. Default is `20`. Limit *Limit `json:"limit,omitempty"` Descending *Descending `json:"descending,omitempty"` @@ -4791,33 +5051,19 @@ type GetDashboardsParams struct { // GetDashboardsParamsSortBy defines parameters for GetDashboards. type GetDashboardsParamsSortBy string -// PostDashboardsJSONBody defines parameters for PostDashboards. -type PostDashboardsJSONBody CreateDashboardRequest - -// PostDashboardsParams defines parameters for PostDashboards. -type PostDashboardsParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` -} - // DeleteDashboardsIDParams defines parameters for DeleteDashboardsID. type DeleteDashboardsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// GetDashboardsIDParams defines parameters for GetDashboardsID. -type GetDashboardsIDParams struct { - // Includes the cell view properties in the response if set to `properties` - Include *GetDashboardsIDParamsInclude `json:"include,omitempty"` +// DeleteDashboardsIDAllParams defines type for all parameters for DeleteDashboardsID. +type DeleteDashboardsIDAllParams struct { + DeleteDashboardsIDParams - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` + DashboardID string } -// GetDashboardsIDParamsInclude defines parameters for GetDashboardsID. -type GetDashboardsIDParamsInclude string - // PatchDashboardsIDJSONBody defines parameters for PatchDashboardsID. type PatchDashboardsIDJSONBody struct { Cells *CellWithViewProperties `json:"cells,omitempty"` @@ -4835,6 +5081,15 @@ type PatchDashboardsIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchDashboardsIDAllParams defines type for all parameters for PatchDashboardsID. +type PatchDashboardsIDAllParams struct { + PatchDashboardsIDParams + + DashboardID string + + Body PatchDashboardsIDJSONRequestBody +} + // PostDashboardsIDCellsJSONBody defines parameters for PostDashboardsIDCells. type PostDashboardsIDCellsJSONBody CreateCell @@ -4844,6 +5099,15 @@ type PostDashboardsIDCellsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostDashboardsIDCellsAllParams defines type for all parameters for PostDashboardsIDCells. +type PostDashboardsIDCellsAllParams struct { + PostDashboardsIDCellsParams + + DashboardID string + + Body PostDashboardsIDCellsJSONRequestBody +} + // PutDashboardsIDCellsJSONBody defines parameters for PutDashboardsIDCells. type PutDashboardsIDCellsJSONBody Cells @@ -4853,12 +5117,30 @@ type PutDashboardsIDCellsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PutDashboardsIDCellsAllParams defines type for all parameters for PutDashboardsIDCells. +type PutDashboardsIDCellsAllParams struct { + PutDashboardsIDCellsParams + + DashboardID string + + Body PutDashboardsIDCellsJSONRequestBody +} + // DeleteDashboardsIDCellsIDParams defines parameters for DeleteDashboardsIDCellsID. type DeleteDashboardsIDCellsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteDashboardsIDCellsIDAllParams defines type for all parameters for DeleteDashboardsIDCellsID. +type DeleteDashboardsIDCellsIDAllParams struct { + DeleteDashboardsIDCellsIDParams + + DashboardID string + + CellID string +} + // PatchDashboardsIDCellsIDJSONBody defines parameters for PatchDashboardsIDCellsID. type PatchDashboardsIDCellsIDJSONBody CellUpdate @@ -4868,12 +5150,32 @@ type PatchDashboardsIDCellsIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchDashboardsIDCellsIDAllParams defines type for all parameters for PatchDashboardsIDCellsID. +type PatchDashboardsIDCellsIDAllParams struct { + PatchDashboardsIDCellsIDParams + + DashboardID string + + CellID string + + Body PatchDashboardsIDCellsIDJSONRequestBody +} + // GetDashboardsIDCellsIDViewParams defines parameters for GetDashboardsIDCellsIDView. type GetDashboardsIDCellsIDViewParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetDashboardsIDCellsIDViewAllParams defines type for all parameters for GetDashboardsIDCellsIDView. +type GetDashboardsIDCellsIDViewAllParams struct { + GetDashboardsIDCellsIDViewParams + + DashboardID string + + CellID string +} + // PatchDashboardsIDCellsIDViewJSONBody defines parameters for PatchDashboardsIDCellsIDView. type PatchDashboardsIDCellsIDViewJSONBody View @@ -4883,12 +5185,30 @@ type PatchDashboardsIDCellsIDViewParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchDashboardsIDCellsIDViewAllParams defines type for all parameters for PatchDashboardsIDCellsIDView. +type PatchDashboardsIDCellsIDViewAllParams struct { + PatchDashboardsIDCellsIDViewParams + + DashboardID string + + CellID string + + Body PatchDashboardsIDCellsIDViewJSONRequestBody +} + // GetDashboardsIDLabelsParams defines parameters for GetDashboardsIDLabels. type GetDashboardsIDLabelsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetDashboardsIDLabelsAllParams defines type for all parameters for GetDashboardsIDLabels. +type GetDashboardsIDLabelsAllParams struct { + GetDashboardsIDLabelsParams + + DashboardID string +} + // PostDashboardsIDLabelsJSONBody defines parameters for PostDashboardsIDLabels. type PostDashboardsIDLabelsJSONBody LabelMapping @@ -4898,18 +5218,43 @@ type PostDashboardsIDLabelsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostDashboardsIDLabelsAllParams defines type for all parameters for PostDashboardsIDLabels. +type PostDashboardsIDLabelsAllParams struct { + PostDashboardsIDLabelsParams + + DashboardID string + + Body PostDashboardsIDLabelsJSONRequestBody +} + // DeleteDashboardsIDLabelsIDParams defines parameters for DeleteDashboardsIDLabelsID. type DeleteDashboardsIDLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteDashboardsIDLabelsIDAllParams defines type for all parameters for DeleteDashboardsIDLabelsID. +type DeleteDashboardsIDLabelsIDAllParams struct { + DeleteDashboardsIDLabelsIDParams + + DashboardID string + + LabelID string +} + // GetDashboardsIDMembersParams defines parameters for GetDashboardsIDMembers. type GetDashboardsIDMembersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetDashboardsIDMembersAllParams defines type for all parameters for GetDashboardsIDMembers. +type GetDashboardsIDMembersAllParams struct { + GetDashboardsIDMembersParams + + DashboardID string +} + // PostDashboardsIDMembersJSONBody defines parameters for PostDashboardsIDMembers. type PostDashboardsIDMembersJSONBody AddResourceMemberRequestBody @@ -4919,18 +5264,43 @@ type PostDashboardsIDMembersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostDashboardsIDMembersAllParams defines type for all parameters for PostDashboardsIDMembers. +type PostDashboardsIDMembersAllParams struct { + PostDashboardsIDMembersParams + + DashboardID string + + Body PostDashboardsIDMembersJSONRequestBody +} + // DeleteDashboardsIDMembersIDParams defines parameters for DeleteDashboardsIDMembersID. type DeleteDashboardsIDMembersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteDashboardsIDMembersIDAllParams defines type for all parameters for DeleteDashboardsIDMembersID. +type DeleteDashboardsIDMembersIDAllParams struct { + DeleteDashboardsIDMembersIDParams + + DashboardID string + + UserID string +} + // GetDashboardsIDOwnersParams defines parameters for GetDashboardsIDOwners. type GetDashboardsIDOwnersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetDashboardsIDOwnersAllParams defines type for all parameters for GetDashboardsIDOwners. +type GetDashboardsIDOwnersAllParams struct { + GetDashboardsIDOwnersParams + + DashboardID string +} + // PostDashboardsIDOwnersJSONBody defines parameters for PostDashboardsIDOwners. type PostDashboardsIDOwnersJSONBody AddResourceMemberRequestBody @@ -4940,12 +5310,30 @@ type PostDashboardsIDOwnersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostDashboardsIDOwnersAllParams defines type for all parameters for PostDashboardsIDOwners. +type PostDashboardsIDOwnersAllParams struct { + PostDashboardsIDOwnersParams + + DashboardID string + + Body PostDashboardsIDOwnersJSONRequestBody +} + // DeleteDashboardsIDOwnersIDParams defines parameters for DeleteDashboardsIDOwnersID. type DeleteDashboardsIDOwnersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteDashboardsIDOwnersIDAllParams defines type for all parameters for DeleteDashboardsIDOwnersID. +type DeleteDashboardsIDOwnersIDAllParams struct { + DeleteDashboardsIDOwnersIDParams + + DashboardID string + + UserID string +} + // GetDBRPsParams defines parameters for GetDBRPs. type GetDBRPsParams struct { // Specifies the organization ID to filter on @@ -4982,6 +5370,13 @@ type PostDBRPParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostDBRPAllParams defines type for all parameters for PostDBRP. +type PostDBRPAllParams struct { + PostDBRPParams + + Body PostDBRPJSONRequestBody +} + // DeleteDBRPIDParams defines parameters for DeleteDBRPID. type DeleteDBRPIDParams struct { // Specifies the organization ID of the mapping @@ -4994,6 +5389,13 @@ type DeleteDBRPIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteDBRPIDAllParams defines type for all parameters for DeleteDBRPID. +type DeleteDBRPIDAllParams struct { + DeleteDBRPIDParams + + DbrpID string +} + // GetDBRPsIDParams defines parameters for GetDBRPsID. type GetDBRPsIDParams struct { // Specifies the organization ID of the mapping @@ -5006,6 +5408,13 @@ type GetDBRPsIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetDBRPsIDAllParams defines type for all parameters for GetDBRPsID. +type GetDBRPsIDAllParams struct { + GetDBRPsIDParams + + DbrpID string +} + // PatchDBRPIDJSONBody defines parameters for PatchDBRPID. type PatchDBRPIDJSONBody DBRPUpdate @@ -5021,27 +5430,65 @@ type PatchDBRPIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchDBRPIDAllParams defines type for all parameters for PatchDBRPID. +type PatchDBRPIDAllParams struct { + PatchDBRPIDParams + + DbrpID string + + Body PatchDBRPIDJSONRequestBody +} + // PostDeleteJSONBody defines parameters for PostDelete. type PostDeleteJSONBody DeletePredicateRequest // PostDeleteParams defines parameters for PostDelete. type PostDeleteParams struct { - // Specifies the organization to delete data from. + // The organization to delete data from. + // If you pass both `orgID` and `org`, they must both be valid. + // + // #### InfluxDB Cloud + // + // - Doesn't require `org` or `orgID`. + // - Deletes data from the bucket in the organization associated with the authorization (API token). + // + // #### InfluxDB OSS + // + // - Requires either `org` or `orgID`. Org *string `json:"org,omitempty"` - // Specifies the bucket to delete data from. + // The name or ID of the bucket to delete data from. + // If you pass both `bucket` and `bucketID`, `bucketID` takes precedence. Bucket *string `json:"bucket,omitempty"` - // Specifies the organization ID of the resource. + // The ID of the organization to delete data from. + // If you pass both `orgID` and `org`, they must both be valid. + // + // #### InfluxDB Cloud + // + // - Doesn't require `org` or `orgID`. + // - Deletes data from the bucket in the organization associated with the authorization (API token). + // + // #### InfluxDB OSS + // + // - Requires either `org` or `orgID`. OrgID *string `json:"orgID,omitempty"` - // Specifies the bucket ID to delete data from. + // The ID of the bucket to delete data from. + // If you pass both `bucket` and `bucketID`, `bucketID` takes precedence. BucketID *string `json:"bucketID,omitempty"` // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostDeleteAllParams defines type for all parameters for PostDelete. +type PostDeleteAllParams struct { + PostDeleteParams + + Body PostDeleteJSONRequestBody +} + // GetFlagsParams defines parameters for GetFlags. type GetFlagsParams struct { // OpenTracing span context @@ -5066,88 +5513,53 @@ type GetLabelsParams struct { // PostLabelsJSONBody defines parameters for PostLabels. type PostLabelsJSONBody LabelCreateRequest -// DeleteLabelsIDParams defines parameters for DeleteLabelsID. -type DeleteLabelsIDParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +// PostLabelsAllParams defines type for all parameters for PostLabels. +type PostLabelsAllParams struct { + Body PostLabelsJSONRequestBody } -// GetLabelsIDParams defines parameters for GetLabelsID. -type GetLabelsIDParams struct { +// DeleteLabelsIDParams defines parameters for DeleteLabelsID. +type DeleteLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// PatchLabelsIDJSONBody defines parameters for PatchLabelsID. -type PatchLabelsIDJSONBody LabelUpdate +// DeleteLabelsIDAllParams defines type for all parameters for DeleteLabelsID. +type DeleteLabelsIDAllParams struct { + DeleteLabelsIDParams -// PatchLabelsIDParams defines parameters for PatchLabelsID. -type PatchLabelsIDParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` + LabelID string } -// GetLegacyAuthorizationsParams defines parameters for GetLegacyAuthorizations. -type GetLegacyAuthorizationsParams struct { - // Only show legacy authorizations that belong to a user ID. - UserID *string `json:"userID,omitempty"` - - // Only show legacy authorizations that belong to a user name. - User *string `json:"user,omitempty"` - - // Only show legacy authorizations that belong to an organization ID. - OrgID *string `json:"orgID,omitempty"` - - // Only show legacy authorizations that belong to a organization name. - Org *string `json:"org,omitempty"` - - // Only show legacy authorizations with a specified token (auth name). - Token *string `json:"token,omitempty"` - - // Only show legacy authorizations with a specified auth ID. - AuthID *string `json:"authID,omitempty"` - +// GetLabelsIDParams defines parameters for GetLabelsID. +type GetLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// PostLegacyAuthorizationsJSONBody defines parameters for PostLegacyAuthorizations. -type PostLegacyAuthorizationsJSONBody LegacyAuthorizationPostRequest +// GetLabelsIDAllParams defines type for all parameters for GetLabelsID. +type GetLabelsIDAllParams struct { + GetLabelsIDParams -// PostLegacyAuthorizationsParams defines parameters for PostLegacyAuthorizations. -type PostLegacyAuthorizationsParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` + LabelID string } -// DeleteLegacyAuthorizationsIDParams defines parameters for DeleteLegacyAuthorizationsID. -type DeleteLegacyAuthorizationsIDParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` -} +// PatchLabelsIDJSONBody defines parameters for PatchLabelsID. +type PatchLabelsIDJSONBody LabelUpdate -// GetLegacyAuthorizationsIDParams defines parameters for GetLegacyAuthorizationsID. -type GetLegacyAuthorizationsIDParams struct { +// PatchLabelsIDParams defines parameters for PatchLabelsID. +type PatchLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// PatchLegacyAuthorizationsIDJSONBody defines parameters for PatchLegacyAuthorizationsID. -type PatchLegacyAuthorizationsIDJSONBody AuthorizationUpdateRequest - -// PatchLegacyAuthorizationsIDParams defines parameters for PatchLegacyAuthorizationsID. -type PatchLegacyAuthorizationsIDParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` -} +// PatchLabelsIDAllParams defines type for all parameters for PatchLabelsID. +type PatchLabelsIDAllParams struct { + PatchLabelsIDParams -// PostLegacyAuthorizationsIDPasswordJSONBody defines parameters for PostLegacyAuthorizationsIDPassword. -type PostLegacyAuthorizationsIDPasswordJSONBody PasswordResetBody + LabelID string -// PostLegacyAuthorizationsIDPasswordParams defines parameters for PostLegacyAuthorizationsIDPassword. -type PostLegacyAuthorizationsIDPasswordParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` + Body PatchLabelsIDJSONRequestBody } // GetMeParams defines parameters for GetMe. @@ -5165,16 +5577,21 @@ type PutMePasswordParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// GetMetricsParams defines parameters for GetMetrics. -type GetMetricsParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +// PutMePasswordAllParams defines type for all parameters for PutMePassword. +type PutMePasswordAllParams struct { + PutMePasswordParams + + Body PutMePasswordJSONRequestBody } // GetNotificationEndpointsParams defines parameters for GetNotificationEndpoints. type GetNotificationEndpointsParams struct { + // The offset for pagination. + // The number of records to skip. Offset *Offset `json:"offset,omitempty"` - Limit *Limit `json:"limit,omitempty"` + + // Limits the number of records returned. Default is `20`. + Limit *Limit `json:"limit,omitempty"` // Only show notification endpoints that belong to specific organization ID. OrgID string `json:"orgID"` @@ -5186,18 +5603,37 @@ type GetNotificationEndpointsParams struct { // CreateNotificationEndpointJSONBody defines parameters for CreateNotificationEndpoint. type CreateNotificationEndpointJSONBody PostNotificationEndpoint +// CreateNotificationEndpointAllParams defines type for all parameters for CreateNotificationEndpoint. +type CreateNotificationEndpointAllParams struct { + Body CreateNotificationEndpointJSONRequestBody +} + // DeleteNotificationEndpointsIDParams defines parameters for DeleteNotificationEndpointsID. type DeleteNotificationEndpointsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteNotificationEndpointsIDAllParams defines type for all parameters for DeleteNotificationEndpointsID. +type DeleteNotificationEndpointsIDAllParams struct { + DeleteNotificationEndpointsIDParams + + EndpointID string +} + // GetNotificationEndpointsIDParams defines parameters for GetNotificationEndpointsID. type GetNotificationEndpointsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetNotificationEndpointsIDAllParams defines type for all parameters for GetNotificationEndpointsID. +type GetNotificationEndpointsIDAllParams struct { + GetNotificationEndpointsIDParams + + EndpointID string +} + // PatchNotificationEndpointsIDJSONBody defines parameters for PatchNotificationEndpointsID. type PatchNotificationEndpointsIDJSONBody NotificationEndpointUpdate @@ -5207,6 +5643,15 @@ type PatchNotificationEndpointsIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchNotificationEndpointsIDAllParams defines type for all parameters for PatchNotificationEndpointsID. +type PatchNotificationEndpointsIDAllParams struct { + PatchNotificationEndpointsIDParams + + EndpointID string + + Body PatchNotificationEndpointsIDJSONRequestBody +} + // PutNotificationEndpointsIDJSONBody defines parameters for PutNotificationEndpointsID. type PutNotificationEndpointsIDJSONBody NotificationEndpoint @@ -5216,12 +5661,28 @@ type PutNotificationEndpointsIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PutNotificationEndpointsIDAllParams defines type for all parameters for PutNotificationEndpointsID. +type PutNotificationEndpointsIDAllParams struct { + PutNotificationEndpointsIDParams + + EndpointID string + + Body PutNotificationEndpointsIDJSONRequestBody +} + // GetNotificationEndpointsIDLabelsParams defines parameters for GetNotificationEndpointsIDLabels. type GetNotificationEndpointsIDLabelsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetNotificationEndpointsIDLabelsAllParams defines type for all parameters for GetNotificationEndpointsIDLabels. +type GetNotificationEndpointsIDLabelsAllParams struct { + GetNotificationEndpointsIDLabelsParams + + EndpointID string +} + // PostNotificationEndpointIDLabelsJSONBody defines parameters for PostNotificationEndpointIDLabels. type PostNotificationEndpointIDLabelsJSONBody LabelMapping @@ -5231,16 +5692,38 @@ type PostNotificationEndpointIDLabelsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostNotificationEndpointIDLabelsAllParams defines type for all parameters for PostNotificationEndpointIDLabels. +type PostNotificationEndpointIDLabelsAllParams struct { + PostNotificationEndpointIDLabelsParams + + EndpointID string + + Body PostNotificationEndpointIDLabelsJSONRequestBody +} + // DeleteNotificationEndpointsIDLabelsIDParams defines parameters for DeleteNotificationEndpointsIDLabelsID. type DeleteNotificationEndpointsIDLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteNotificationEndpointsIDLabelsIDAllParams defines type for all parameters for DeleteNotificationEndpointsIDLabelsID. +type DeleteNotificationEndpointsIDLabelsIDAllParams struct { + DeleteNotificationEndpointsIDLabelsIDParams + + EndpointID string + + LabelID string +} + // GetNotificationRulesParams defines parameters for GetNotificationRules. type GetNotificationRulesParams struct { + // The offset for pagination. + // The number of records to skip. Offset *Offset `json:"offset,omitempty"` - Limit *Limit `json:"limit,omitempty"` + + // Limits the number of records returned. Default is `20`. + Limit *Limit `json:"limit,omitempty"` // Only show notification rules that belong to a specific organization ID. OrgID string `json:"orgID"` @@ -5258,18 +5741,37 @@ type GetNotificationRulesParams struct { // CreateNotificationRuleJSONBody defines parameters for CreateNotificationRule. type CreateNotificationRuleJSONBody PostNotificationRule +// CreateNotificationRuleAllParams defines type for all parameters for CreateNotificationRule. +type CreateNotificationRuleAllParams struct { + Body CreateNotificationRuleJSONRequestBody +} + // DeleteNotificationRulesIDParams defines parameters for DeleteNotificationRulesID. type DeleteNotificationRulesIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteNotificationRulesIDAllParams defines type for all parameters for DeleteNotificationRulesID. +type DeleteNotificationRulesIDAllParams struct { + DeleteNotificationRulesIDParams + + RuleID string +} + // GetNotificationRulesIDParams defines parameters for GetNotificationRulesID. type GetNotificationRulesIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetNotificationRulesIDAllParams defines type for all parameters for GetNotificationRulesID. +type GetNotificationRulesIDAllParams struct { + GetNotificationRulesIDParams + + RuleID string +} + // PatchNotificationRulesIDJSONBody defines parameters for PatchNotificationRulesID. type PatchNotificationRulesIDJSONBody NotificationRuleUpdate @@ -5279,6 +5781,15 @@ type PatchNotificationRulesIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchNotificationRulesIDAllParams defines type for all parameters for PatchNotificationRulesID. +type PatchNotificationRulesIDAllParams struct { + PatchNotificationRulesIDParams + + RuleID string + + Body PatchNotificationRulesIDJSONRequestBody +} + // PutNotificationRulesIDJSONBody defines parameters for PutNotificationRulesID. type PutNotificationRulesIDJSONBody NotificationRule @@ -5288,12 +5799,28 @@ type PutNotificationRulesIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PutNotificationRulesIDAllParams defines type for all parameters for PutNotificationRulesID. +type PutNotificationRulesIDAllParams struct { + PutNotificationRulesIDParams + + RuleID string + + Body PutNotificationRulesIDJSONRequestBody +} + // GetNotificationRulesIDLabelsParams defines parameters for GetNotificationRulesIDLabels. type GetNotificationRulesIDLabelsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetNotificationRulesIDLabelsAllParams defines type for all parameters for GetNotificationRulesIDLabels. +type GetNotificationRulesIDLabelsAllParams struct { + GetNotificationRulesIDLabelsParams + + RuleID string +} + // PostNotificationRuleIDLabelsJSONBody defines parameters for PostNotificationRuleIDLabels. type PostNotificationRuleIDLabelsJSONBody LabelMapping @@ -5303,31 +5830,63 @@ type PostNotificationRuleIDLabelsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostNotificationRuleIDLabelsAllParams defines type for all parameters for PostNotificationRuleIDLabels. +type PostNotificationRuleIDLabelsAllParams struct { + PostNotificationRuleIDLabelsParams + + RuleID string + + Body PostNotificationRuleIDLabelsJSONRequestBody +} + // DeleteNotificationRulesIDLabelsIDParams defines parameters for DeleteNotificationRulesIDLabelsID. type DeleteNotificationRulesIDLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteNotificationRulesIDLabelsIDAllParams defines type for all parameters for DeleteNotificationRulesIDLabelsID. +type DeleteNotificationRulesIDLabelsIDAllParams struct { + DeleteNotificationRulesIDLabelsIDParams + + RuleID string + + LabelID string +} + // GetNotificationRulesIDQueryParams defines parameters for GetNotificationRulesIDQuery. type GetNotificationRulesIDQueryParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetNotificationRulesIDQueryAllParams defines type for all parameters for GetNotificationRulesIDQuery. +type GetNotificationRulesIDQueryAllParams struct { + GetNotificationRulesIDQueryParams + + RuleID string +} + // GetOrgsParams defines parameters for GetOrgs. type GetOrgsParams struct { - Offset *Offset `json:"offset,omitempty"` + // The offset for pagination. + // The number of records to skip. + Offset *Offset `json:"offset,omitempty"` + + // Limits the number of records returned. Default is `20`. Limit *Limit `json:"limit,omitempty"` Descending *Descending `json:"descending,omitempty"` - // Filter organizations to a specific organization name. + // An organization name. + // Only returns organizations with this name. Org *string `json:"org,omitempty"` - // Filter organizations to a specific organization ID. + // An organization ID. + // Only returns the organization with this ID. OrgID *string `json:"orgID,omitempty"` - // Filter organizations to a specific user ID. + // A user ID. + // Only returns organizations where this user is a member or owner. UserID *string `json:"userID,omitempty"` // OpenTracing span context @@ -5343,18 +5902,39 @@ type PostOrgsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostOrgsAllParams defines type for all parameters for PostOrgs. +type PostOrgsAllParams struct { + PostOrgsParams + + Body PostOrgsJSONRequestBody +} + // DeleteOrgsIDParams defines parameters for DeleteOrgsID. type DeleteOrgsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteOrgsIDAllParams defines type for all parameters for DeleteOrgsID. +type DeleteOrgsIDAllParams struct { + DeleteOrgsIDParams + + OrgID string +} + // GetOrgsIDParams defines parameters for GetOrgsID. type GetOrgsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetOrgsIDAllParams defines type for all parameters for GetOrgsID. +type GetOrgsIDAllParams struct { + GetOrgsIDParams + + OrgID string +} + // PatchOrgsIDJSONBody defines parameters for PatchOrgsID. type PatchOrgsIDJSONBody PatchOrganizationRequest @@ -5364,12 +5944,28 @@ type PatchOrgsIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchOrgsIDAllParams defines type for all parameters for PatchOrgsID. +type PatchOrgsIDAllParams struct { + PatchOrgsIDParams + + OrgID string + + Body PatchOrgsIDJSONRequestBody +} + // GetOrgsIDMembersParams defines parameters for GetOrgsIDMembers. type GetOrgsIDMembersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetOrgsIDMembersAllParams defines type for all parameters for GetOrgsIDMembers. +type GetOrgsIDMembersAllParams struct { + GetOrgsIDMembersParams + + OrgID string +} + // PostOrgsIDMembersJSONBody defines parameters for PostOrgsIDMembers. type PostOrgsIDMembersJSONBody AddResourceMemberRequestBody @@ -5379,18 +5975,43 @@ type PostOrgsIDMembersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostOrgsIDMembersAllParams defines type for all parameters for PostOrgsIDMembers. +type PostOrgsIDMembersAllParams struct { + PostOrgsIDMembersParams + + OrgID string + + Body PostOrgsIDMembersJSONRequestBody +} + // DeleteOrgsIDMembersIDParams defines parameters for DeleteOrgsIDMembersID. type DeleteOrgsIDMembersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteOrgsIDMembersIDAllParams defines type for all parameters for DeleteOrgsIDMembersID. +type DeleteOrgsIDMembersIDAllParams struct { + DeleteOrgsIDMembersIDParams + + OrgID string + + UserID string +} + // GetOrgsIDOwnersParams defines parameters for GetOrgsIDOwners. type GetOrgsIDOwnersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetOrgsIDOwnersAllParams defines type for all parameters for GetOrgsIDOwners. +type GetOrgsIDOwnersAllParams struct { + GetOrgsIDOwnersParams + + OrgID string +} + // PostOrgsIDOwnersJSONBody defines parameters for PostOrgsIDOwners. type PostOrgsIDOwnersJSONBody AddResourceMemberRequestBody @@ -5400,18 +6021,43 @@ type PostOrgsIDOwnersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostOrgsIDOwnersAllParams defines type for all parameters for PostOrgsIDOwners. +type PostOrgsIDOwnersAllParams struct { + PostOrgsIDOwnersParams + + OrgID string + + Body PostOrgsIDOwnersJSONRequestBody +} + // DeleteOrgsIDOwnersIDParams defines parameters for DeleteOrgsIDOwnersID. type DeleteOrgsIDOwnersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteOrgsIDOwnersIDAllParams defines type for all parameters for DeleteOrgsIDOwnersID. +type DeleteOrgsIDOwnersIDAllParams struct { + DeleteOrgsIDOwnersIDParams + + OrgID string + + UserID string +} + // GetOrgsIDSecretsParams defines parameters for GetOrgsIDSecrets. type GetOrgsIDSecretsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetOrgsIDSecretsAllParams defines type for all parameters for GetOrgsIDSecrets. +type GetOrgsIDSecretsAllParams struct { + GetOrgsIDSecretsParams + + OrgID string +} + // PatchOrgsIDSecretsJSONBody defines parameters for PatchOrgsIDSecrets. type PatchOrgsIDSecretsJSONBody Secrets @@ -5421,6 +6067,15 @@ type PatchOrgsIDSecretsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchOrgsIDSecretsAllParams defines type for all parameters for PatchOrgsIDSecrets. +type PatchOrgsIDSecretsAllParams struct { + PatchOrgsIDSecretsParams + + OrgID string + + Body PatchOrgsIDSecretsJSONRequestBody +} + // PostOrgsIDSecretsJSONBody defines parameters for PostOrgsIDSecrets. type PostOrgsIDSecretsJSONBody SecretKeys @@ -5430,37 +6085,30 @@ type PostOrgsIDSecretsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostOrgsIDSecretsAllParams defines type for all parameters for PostOrgsIDSecrets. +type PostOrgsIDSecretsAllParams struct { + PostOrgsIDSecretsParams + + OrgID string + + Body PostOrgsIDSecretsJSONRequestBody +} + // DeleteOrgsIDSecretsIDParams defines parameters for DeleteOrgsIDSecretsID. type DeleteOrgsIDSecretsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// PostQueryJSONBody defines parameters for PostQuery. -type PostQueryJSONBody Query +// DeleteOrgsIDSecretsIDAllParams defines type for all parameters for DeleteOrgsIDSecretsID. +type DeleteOrgsIDSecretsIDAllParams struct { + DeleteOrgsIDSecretsIDParams -// PostQueryParams defines parameters for PostQuery. -type PostQueryParams struct { - // Specifies the name of the organization executing the query. Takes either the ID or Name. If both `orgID` and `org` are specified, `org` takes precedence. - Org *string `json:"org,omitempty"` + OrgID string - // Specifies the ID of the organization executing the query. If both `orgID` and `org` are specified, `org` takes precedence. - OrgID *string `json:"orgID,omitempty"` - - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` - - // Indicates the content encoding (usually a compression algorithm) that the client can understand. - AcceptEncoding *PostQueryParamsAcceptEncoding `json:"Accept-Encoding,omitempty"` - ContentType *PostQueryParamsContentType `json:"Content-Type,omitempty"` + SecretID string } -// PostQueryParamsAcceptEncoding defines parameters for PostQuery. -type PostQueryParamsAcceptEncoding string - -// PostQueryParamsContentType defines parameters for PostQuery. -type PostQueryParamsContentType string - // PostQueryAnalyzeJSONBody defines parameters for PostQueryAnalyze. type PostQueryAnalyzeJSONBody Query @@ -5474,6 +6122,13 @@ type PostQueryAnalyzeParams struct { // PostQueryAnalyzeParamsContentType defines parameters for PostQueryAnalyze. type PostQueryAnalyzeParamsContentType string +// PostQueryAnalyzeAllParams defines type for all parameters for PostQueryAnalyze. +type PostQueryAnalyzeAllParams struct { + PostQueryAnalyzeParams + + Body PostQueryAnalyzeJSONRequestBody +} + // PostQueryAstJSONBody defines parameters for PostQueryAst. type PostQueryAstJSONBody LanguageRequest @@ -5487,6 +6142,13 @@ type PostQueryAstParams struct { // PostQueryAstParamsContentType defines parameters for PostQueryAst. type PostQueryAstParamsContentType string +// PostQueryAstAllParams defines type for all parameters for PostQueryAst. +type PostQueryAstAllParams struct { + PostQueryAstParams + + Body PostQueryAstJSONRequestBody +} + // GetQuerySuggestionsParams defines parameters for GetQuerySuggestions. type GetQuerySuggestionsParams struct { // OpenTracing span context @@ -5499,6 +6161,13 @@ type GetQuerySuggestionsNameParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetQuerySuggestionsNameAllParams defines type for all parameters for GetQuerySuggestionsName. +type GetQuerySuggestionsNameAllParams struct { + GetQuerySuggestionsNameParams + + Name string +} + // GetReadyParams defines parameters for GetReady. type GetReadyParams struct { // OpenTracing span context @@ -5519,18 +6188,37 @@ type GetRemoteConnectionsParams struct { // PostRemoteConnectionJSONBody defines parameters for PostRemoteConnection. type PostRemoteConnectionJSONBody RemoteConnectionCreationRequest +// PostRemoteConnectionAllParams defines type for all parameters for PostRemoteConnection. +type PostRemoteConnectionAllParams struct { + Body PostRemoteConnectionJSONRequestBody +} + // DeleteRemoteConnectionByIDParams defines parameters for DeleteRemoteConnectionByID. type DeleteRemoteConnectionByIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteRemoteConnectionByIDAllParams defines type for all parameters for DeleteRemoteConnectionByID. +type DeleteRemoteConnectionByIDAllParams struct { + DeleteRemoteConnectionByIDParams + + RemoteID string +} + // GetRemoteConnectionByIDParams defines parameters for GetRemoteConnectionByID. type GetRemoteConnectionByIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetRemoteConnectionByIDAllParams defines type for all parameters for GetRemoteConnectionByID. +type GetRemoteConnectionByIDAllParams struct { + GetRemoteConnectionByIDParams + + RemoteID string +} + // PatchRemoteConnectionByIDJSONBody defines parameters for PatchRemoteConnectionByID. type PatchRemoteConnectionByIDJSONBody RemoteConnectionUpdateRequest @@ -5540,6 +6228,15 @@ type PatchRemoteConnectionByIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchRemoteConnectionByIDAllParams defines type for all parameters for PatchRemoteConnectionByID. +type PatchRemoteConnectionByIDAllParams struct { + PatchRemoteConnectionByIDParams + + RemoteID string + + Body PatchRemoteConnectionByIDJSONRequestBody +} + // GetReplicationsParams defines parameters for GetReplications. type GetReplicationsParams struct { // The organization ID. @@ -5564,18 +6261,39 @@ type PostReplicationParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostReplicationAllParams defines type for all parameters for PostReplication. +type PostReplicationAllParams struct { + PostReplicationParams + + Body PostReplicationJSONRequestBody +} + // DeleteReplicationByIDParams defines parameters for DeleteReplicationByID. type DeleteReplicationByIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteReplicationByIDAllParams defines type for all parameters for DeleteReplicationByID. +type DeleteReplicationByIDAllParams struct { + DeleteReplicationByIDParams + + ReplicationID string +} + // GetReplicationByIDParams defines parameters for GetReplicationByID. type GetReplicationByIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetReplicationByIDAllParams defines type for all parameters for GetReplicationByID. +type GetReplicationByIDAllParams struct { + GetReplicationByIDParams + + ReplicationID string +} + // PatchReplicationByIDJSONBody defines parameters for PatchReplicationByID. type PatchReplicationByIDJSONBody ReplicationUpdateRequest @@ -5588,28 +6306,34 @@ type PatchReplicationByIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchReplicationByIDAllParams defines type for all parameters for PatchReplicationByID. +type PatchReplicationByIDAllParams struct { + PatchReplicationByIDParams + + ReplicationID string + + Body PatchReplicationByIDJSONRequestBody +} + // PostValidateReplicationByIDParams defines parameters for PostValidateReplicationByID. type PostValidateReplicationByIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostValidateReplicationByIDAllParams defines type for all parameters for PostValidateReplicationByID. +type PostValidateReplicationByIDAllParams struct { + PostValidateReplicationByIDParams + + ReplicationID string +} + // GetResourcesParams defines parameters for GetResources. type GetResourcesParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// PostRestoreBucketIDParams defines parameters for PostRestoreBucketID. -type PostRestoreBucketIDParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` - ContentType *PostRestoreBucketIDParamsContentType `json:"Content-Type,omitempty"` -} - -// PostRestoreBucketIDParamsContentType defines parameters for PostRestoreBucketID. -type PostRestoreBucketIDParamsContentType string - // PostRestoreBucketMetadataJSONBody defines parameters for PostRestoreBucketMetadata. type PostRestoreBucketMetadataJSONBody BucketMetadataManifest @@ -5619,57 +6343,13 @@ type PostRestoreBucketMetadataParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// PostRestoreKVParams defines parameters for PostRestoreKV. -type PostRestoreKVParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` +// PostRestoreBucketMetadataAllParams defines type for all parameters for PostRestoreBucketMetadata. +type PostRestoreBucketMetadataAllParams struct { + PostRestoreBucketMetadataParams - // The value tells InfluxDB what compression is applied to the line protocol in the request payload. - // To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. - ContentEncoding *PostRestoreKVParamsContentEncoding `json:"Content-Encoding,omitempty"` - ContentType *PostRestoreKVParamsContentType `json:"Content-Type,omitempty"` + Body PostRestoreBucketMetadataJSONRequestBody } -// PostRestoreKVParamsContentEncoding defines parameters for PostRestoreKV. -type PostRestoreKVParamsContentEncoding string - -// PostRestoreKVParamsContentType defines parameters for PostRestoreKV. -type PostRestoreKVParamsContentType string - -// PostRestoreShardIdParams defines parameters for PostRestoreShardId. -type PostRestoreShardIdParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` - - // The value tells InfluxDB what compression is applied to the line protocol in the request payload. - // To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. - ContentEncoding *PostRestoreShardIdParamsContentEncoding `json:"Content-Encoding,omitempty"` - ContentType *PostRestoreShardIdParamsContentType `json:"Content-Type,omitempty"` -} - -// PostRestoreShardIdParamsContentEncoding defines parameters for PostRestoreShardId. -type PostRestoreShardIdParamsContentEncoding string - -// PostRestoreShardIdParamsContentType defines parameters for PostRestoreShardId. -type PostRestoreShardIdParamsContentType string - -// PostRestoreSQLParams defines parameters for PostRestoreSQL. -type PostRestoreSQLParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` - - // The value tells InfluxDB what compression is applied to the line protocol in the request payload. - // To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. - ContentEncoding *PostRestoreSQLParamsContentEncoding `json:"Content-Encoding,omitempty"` - ContentType *PostRestoreSQLParamsContentType `json:"Content-Type,omitempty"` -} - -// PostRestoreSQLParamsContentEncoding defines parameters for PostRestoreSQL. -type PostRestoreSQLParamsContentEncoding string - -// PostRestoreSQLParamsContentType defines parameters for PostRestoreSQL. -type PostRestoreSQLParamsContentType string - // GetScrapersParams defines parameters for GetScrapers. type GetScrapersParams struct { // Specifies the name of the scraper target. @@ -5697,18 +6377,39 @@ type PostScrapersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostScrapersAllParams defines type for all parameters for PostScrapers. +type PostScrapersAllParams struct { + PostScrapersParams + + Body PostScrapersJSONRequestBody +} + // DeleteScrapersIDParams defines parameters for DeleteScrapersID. type DeleteScrapersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteScrapersIDAllParams defines type for all parameters for DeleteScrapersID. +type DeleteScrapersIDAllParams struct { + DeleteScrapersIDParams + + ScraperTargetID string +} + // GetScrapersIDParams defines parameters for GetScrapersID. type GetScrapersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetScrapersIDAllParams defines type for all parameters for GetScrapersID. +type GetScrapersIDAllParams struct { + GetScrapersIDParams + + ScraperTargetID string +} + // PatchScrapersIDJSONBody defines parameters for PatchScrapersID. type PatchScrapersIDJSONBody ScraperTargetRequest @@ -5718,12 +6419,28 @@ type PatchScrapersIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchScrapersIDAllParams defines type for all parameters for PatchScrapersID. +type PatchScrapersIDAllParams struct { + PatchScrapersIDParams + + ScraperTargetID string + + Body PatchScrapersIDJSONRequestBody +} + // GetScrapersIDLabelsParams defines parameters for GetScrapersIDLabels. type GetScrapersIDLabelsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetScrapersIDLabelsAllParams defines type for all parameters for GetScrapersIDLabels. +type GetScrapersIDLabelsAllParams struct { + GetScrapersIDLabelsParams + + ScraperTargetID string +} + // PostScrapersIDLabelsJSONBody defines parameters for PostScrapersIDLabels. type PostScrapersIDLabelsJSONBody LabelMapping @@ -5733,18 +6450,43 @@ type PostScrapersIDLabelsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostScrapersIDLabelsAllParams defines type for all parameters for PostScrapersIDLabels. +type PostScrapersIDLabelsAllParams struct { + PostScrapersIDLabelsParams + + ScraperTargetID string + + Body PostScrapersIDLabelsJSONRequestBody +} + // DeleteScrapersIDLabelsIDParams defines parameters for DeleteScrapersIDLabelsID. type DeleteScrapersIDLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteScrapersIDLabelsIDAllParams defines type for all parameters for DeleteScrapersIDLabelsID. +type DeleteScrapersIDLabelsIDAllParams struct { + DeleteScrapersIDLabelsIDParams + + ScraperTargetID string + + LabelID string +} + // GetScrapersIDMembersParams defines parameters for GetScrapersIDMembers. type GetScrapersIDMembersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetScrapersIDMembersAllParams defines type for all parameters for GetScrapersIDMembers. +type GetScrapersIDMembersAllParams struct { + GetScrapersIDMembersParams + + ScraperTargetID string +} + // PostScrapersIDMembersJSONBody defines parameters for PostScrapersIDMembers. type PostScrapersIDMembersJSONBody AddResourceMemberRequestBody @@ -5754,18 +6496,43 @@ type PostScrapersIDMembersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostScrapersIDMembersAllParams defines type for all parameters for PostScrapersIDMembers. +type PostScrapersIDMembersAllParams struct { + PostScrapersIDMembersParams + + ScraperTargetID string + + Body PostScrapersIDMembersJSONRequestBody +} + // DeleteScrapersIDMembersIDParams defines parameters for DeleteScrapersIDMembersID. type DeleteScrapersIDMembersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteScrapersIDMembersIDAllParams defines type for all parameters for DeleteScrapersIDMembersID. +type DeleteScrapersIDMembersIDAllParams struct { + DeleteScrapersIDMembersIDParams + + ScraperTargetID string + + UserID string +} + // GetScrapersIDOwnersParams defines parameters for GetScrapersIDOwners. type GetScrapersIDOwnersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetScrapersIDOwnersAllParams defines type for all parameters for GetScrapersIDOwners. +type GetScrapersIDOwnersAllParams struct { + GetScrapersIDOwnersParams + + ScraperTargetID string +} + // PostScrapersIDOwnersJSONBody defines parameters for PostScrapersIDOwners. type PostScrapersIDOwnersJSONBody AddResourceMemberRequestBody @@ -5775,12 +6542,30 @@ type PostScrapersIDOwnersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostScrapersIDOwnersAllParams defines type for all parameters for PostScrapersIDOwners. +type PostScrapersIDOwnersAllParams struct { + PostScrapersIDOwnersParams + + ScraperTargetID string + + Body PostScrapersIDOwnersJSONRequestBody +} + // DeleteScrapersIDOwnersIDParams defines parameters for DeleteScrapersIDOwnersID. type DeleteScrapersIDOwnersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteScrapersIDOwnersIDAllParams defines type for all parameters for DeleteScrapersIDOwnersID. +type DeleteScrapersIDOwnersIDAllParams struct { + DeleteScrapersIDOwnersIDParams + + ScraperTargetID string + + UserID string +} + // GetSetupParams defines parameters for GetSetup. type GetSetupParams struct { // OpenTracing span context @@ -5796,6 +6581,13 @@ type PostSetupParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostSetupAllParams defines type for all parameters for PostSetup. +type PostSetupAllParams struct { + PostSetupParams + + Body PostSetupJSONRequestBody +} + // PostSigninParams defines parameters for PostSignin. type PostSigninParams struct { // OpenTracing span context @@ -5826,18 +6618,39 @@ type PostSourcesParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostSourcesAllParams defines type for all parameters for PostSources. +type PostSourcesAllParams struct { + PostSourcesParams + + Body PostSourcesJSONRequestBody +} + // DeleteSourcesIDParams defines parameters for DeleteSourcesID. type DeleteSourcesIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteSourcesIDAllParams defines type for all parameters for DeleteSourcesID. +type DeleteSourcesIDAllParams struct { + DeleteSourcesIDParams + + SourceID string +} + // GetSourcesIDParams defines parameters for GetSourcesID. type GetSourcesIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetSourcesIDAllParams defines type for all parameters for GetSourcesID. +type GetSourcesIDAllParams struct { + GetSourcesIDParams + + SourceID string +} + // PatchSourcesIDJSONBody defines parameters for PatchSourcesID. type PatchSourcesIDJSONBody Source @@ -5847,6 +6660,15 @@ type PatchSourcesIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchSourcesIDAllParams defines type for all parameters for PatchSourcesID. +type PatchSourcesIDAllParams struct { + PatchSourcesIDParams + + SourceID string + + Body PatchSourcesIDJSONRequestBody +} + // GetSourcesIDBucketsParams defines parameters for GetSourcesIDBuckets. type GetSourcesIDBucketsParams struct { // The name of the organization. @@ -5856,21 +6678,55 @@ type GetSourcesIDBucketsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetSourcesIDBucketsAllParams defines type for all parameters for GetSourcesIDBuckets. +type GetSourcesIDBucketsAllParams struct { + GetSourcesIDBucketsParams + + SourceID string +} + // GetSourcesIDHealthParams defines parameters for GetSourcesIDHealth. type GetSourcesIDHealthParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetSourcesIDHealthAllParams defines type for all parameters for GetSourcesIDHealth. +type GetSourcesIDHealthAllParams struct { + GetSourcesIDHealthParams + + SourceID string +} + // ListStacksParams defines parameters for ListStacks. type ListStacksParams struct { - // The organization ID of the stacks + // The ID of the organization that owns the stacks. + // Only returns stacks owned by this organization. + // + // #### InfluxDB Cloud + // + // - Doesn't require this parameter; + // InfluxDB only returns resources allowed by the API token. OrgID string `json:"orgID"` - // A collection of names to filter the list by. + // The stack name. + // Finds stack `events` with this name and returns the stacks. + // + // Repeatable. + // To filter for more than one stack name, + // repeat this parameter with each name--for example: + // + // - `http://localhost:8086/api/v2/stacks?&orgID=INFLUX_ORG_ID&name=project-stack-0&name=project-stack-1` Name *string `json:"name,omitempty"` - // A collection of stackIDs to filter the list by. + // The stack ID. + // Only returns stacks with this ID. + // + // Repeatable. + // To filter for more than one stack ID, + // repeat this parameter with each ID--for example: + // + // - `http://localhost:8086/api/v2/stacks?&orgID=INFLUX_ORG_ID&stackID=09bd87cd33be3000&stackID=09bef35081fe3000` StackID *string `json:"stackID,omitempty"` } @@ -5882,12 +6738,29 @@ type CreateStackJSONBody struct { Urls *[]string `json:"urls,omitempty"` } +// CreateStackAllParams defines type for all parameters for CreateStack. +type CreateStackAllParams struct { + Body CreateStackJSONRequestBody +} + // DeleteStackParams defines parameters for DeleteStack. type DeleteStackParams struct { // The identifier of the organization. OrgID string `json:"orgID"` } +// DeleteStackAllParams defines type for all parameters for DeleteStack. +type DeleteStackAllParams struct { + DeleteStackParams + + StackId string +} + +// ReadStackAllParams defines type for all parameters for ReadStack. +type ReadStackAllParams struct { + StackId string +} + // UpdateStackJSONBody defines parameters for UpdateStack. type UpdateStackJSONBody struct { AdditionalResources *[]struct { @@ -5900,30 +6773,53 @@ type UpdateStackJSONBody struct { TemplateURLs *[]string `json:"templateURLs"` } +// UpdateStackAllParams defines type for all parameters for UpdateStack. +type UpdateStackAllParams struct { + StackId string + + Body UpdateStackJSONRequestBody +} + +// UninstallStackAllParams defines type for all parameters for UninstallStack. +type UninstallStackAllParams struct { + StackId string +} + // GetTasksParams defines parameters for GetTasks. type GetTasksParams struct { - // Returns task with a specific name. + // Task name. + // Only returns tasks with this name. + // Different tasks may have the same name. Name *string `json:"name,omitempty"` - // Return tasks after a specified ID. + // Task ID. + // Only returns tasks created after this task. After *string `json:"after,omitempty"` - // Filter tasks to a specific user ID. + // User ID. + // Only returns tasks owned by this user. User *string `json:"user,omitempty"` - // Filter tasks to a specific organization name. + // Organization name. + // Only returns tasks owned by this organization. Org *string `json:"org,omitempty"` - // Filter tasks to a specific organization ID. + // Organization ID. + // Only returns tasks owned by this organization. OrgID *string `json:"orgID,omitempty"` - // Filter tasks by a status--"inactive" or "active". + // Task status (`active` or `inactive`). + // Only returns tasks with this status. Status *GetTasksParamsStatus `json:"status,omitempty"` - // The number of tasks to return + // Limits the number of tasks returned. + // The minimum is `1`, the maximum is `500`, and the default is `100`. Limit *int `json:"limit,omitempty"` - // Type of task, unset by default. + // Task type (`basic` or `system`). + // + // The default (`system`) response contains all the metadata properties for tasks. + // To reduce the payload size, pass `basic` to omit some task properties (`flux`, `createdAt`, `updatedAt`) from the response. Type *GetTasksParamsType `json:"type,omitempty"` // OpenTracing span context @@ -5945,18 +6841,39 @@ type PostTasksParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostTasksAllParams defines type for all parameters for PostTasks. +type PostTasksAllParams struct { + PostTasksParams + + Body PostTasksJSONRequestBody +} + // DeleteTasksIDParams defines parameters for DeleteTasksID. type DeleteTasksIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteTasksIDAllParams defines type for all parameters for DeleteTasksID. +type DeleteTasksIDAllParams struct { + DeleteTasksIDParams + + TaskID string +} + // GetTasksIDParams defines parameters for GetTasksID. type GetTasksIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTasksIDAllParams defines type for all parameters for GetTasksID. +type GetTasksIDAllParams struct { + GetTasksIDParams + + TaskID string +} + // PatchTasksIDJSONBody defines parameters for PatchTasksID. type PatchTasksIDJSONBody TaskUpdateRequest @@ -5966,12 +6883,28 @@ type PatchTasksIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchTasksIDAllParams defines type for all parameters for PatchTasksID. +type PatchTasksIDAllParams struct { + PatchTasksIDParams + + TaskID string + + Body PatchTasksIDJSONRequestBody +} + // GetTasksIDLabelsParams defines parameters for GetTasksIDLabels. type GetTasksIDLabelsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTasksIDLabelsAllParams defines type for all parameters for GetTasksIDLabels. +type GetTasksIDLabelsAllParams struct { + GetTasksIDLabelsParams + + TaskID string +} + // PostTasksIDLabelsJSONBody defines parameters for PostTasksIDLabels. type PostTasksIDLabelsJSONBody LabelMapping @@ -5981,24 +6914,56 @@ type PostTasksIDLabelsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostTasksIDLabelsAllParams defines type for all parameters for PostTasksIDLabels. +type PostTasksIDLabelsAllParams struct { + PostTasksIDLabelsParams + + TaskID string + + Body PostTasksIDLabelsJSONRequestBody +} + // DeleteTasksIDLabelsIDParams defines parameters for DeleteTasksIDLabelsID. type DeleteTasksIDLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteTasksIDLabelsIDAllParams defines type for all parameters for DeleteTasksIDLabelsID. +type DeleteTasksIDLabelsIDAllParams struct { + DeleteTasksIDLabelsIDParams + + TaskID string + + LabelID string +} + // GetTasksIDLogsParams defines parameters for GetTasksIDLogs. type GetTasksIDLogsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTasksIDLogsAllParams defines type for all parameters for GetTasksIDLogs. +type GetTasksIDLogsAllParams struct { + GetTasksIDLogsParams + + TaskID string +} + // GetTasksIDMembersParams defines parameters for GetTasksIDMembers. type GetTasksIDMembersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTasksIDMembersAllParams defines type for all parameters for GetTasksIDMembers. +type GetTasksIDMembersAllParams struct { + GetTasksIDMembersParams + + TaskID string +} + // PostTasksIDMembersJSONBody defines parameters for PostTasksIDMembers. type PostTasksIDMembersJSONBody AddResourceMemberRequestBody @@ -6008,18 +6973,43 @@ type PostTasksIDMembersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostTasksIDMembersAllParams defines type for all parameters for PostTasksIDMembers. +type PostTasksIDMembersAllParams struct { + PostTasksIDMembersParams + + TaskID string + + Body PostTasksIDMembersJSONRequestBody +} + // DeleteTasksIDMembersIDParams defines parameters for DeleteTasksIDMembersID. type DeleteTasksIDMembersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteTasksIDMembersIDAllParams defines type for all parameters for DeleteTasksIDMembersID. +type DeleteTasksIDMembersIDAllParams struct { + DeleteTasksIDMembersIDParams + + TaskID string + + UserID string +} + // GetTasksIDOwnersParams defines parameters for GetTasksIDOwners. type GetTasksIDOwnersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTasksIDOwnersAllParams defines type for all parameters for GetTasksIDOwners. +type GetTasksIDOwnersAllParams struct { + GetTasksIDOwnersParams + + TaskID string +} + // PostTasksIDOwnersJSONBody defines parameters for PostTasksIDOwners. type PostTasksIDOwnersJSONBody AddResourceMemberRequestBody @@ -6029,30 +7019,57 @@ type PostTasksIDOwnersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostTasksIDOwnersAllParams defines type for all parameters for PostTasksIDOwners. +type PostTasksIDOwnersAllParams struct { + PostTasksIDOwnersParams + + TaskID string + + Body PostTasksIDOwnersJSONRequestBody +} + // DeleteTasksIDOwnersIDParams defines parameters for DeleteTasksIDOwnersID. type DeleteTasksIDOwnersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteTasksIDOwnersIDAllParams defines type for all parameters for DeleteTasksIDOwnersID. +type DeleteTasksIDOwnersIDAllParams struct { + DeleteTasksIDOwnersIDParams + + TaskID string + + UserID string +} + // GetTasksIDRunsParams defines parameters for GetTasksIDRuns. type GetTasksIDRunsParams struct { - // Returns runs after a specific ID. + // A task run ID. Only returns runs created after this run. After *string `json:"after,omitempty"` - // The number of runs to return + // Limits the number of task runs returned. Default is `100`. Limit *int `json:"limit,omitempty"` - // Filter runs to those scheduled after this time, RFC3339 + // A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)). + // Only returns runs scheduled after this time. AfterTime *time.Time `json:"afterTime,omitempty"` - // Filter runs to those scheduled before this time, RFC3339 + // A timestamp ([RFC3339 date/time format](https://docs.influxdata.com/influxdb/v2.3/reference/glossary/#rfc3339-timestamp)). + // Only returns runs scheduled before this time. BeforeTime *time.Time `json:"beforeTime,omitempty"` // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTasksIDRunsAllParams defines type for all parameters for GetTasksIDRuns. +type GetTasksIDRunsAllParams struct { + GetTasksIDRunsParams + + TaskID string +} + // PostTasksIDRunsJSONBody defines parameters for PostTasksIDRuns. type PostTasksIDRunsJSONBody RunManually @@ -6062,30 +7079,80 @@ type PostTasksIDRunsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostTasksIDRunsAllParams defines type for all parameters for PostTasksIDRuns. +type PostTasksIDRunsAllParams struct { + PostTasksIDRunsParams + + TaskID string + + Body PostTasksIDRunsJSONRequestBody +} + // DeleteTasksIDRunsIDParams defines parameters for DeleteTasksIDRunsID. type DeleteTasksIDRunsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteTasksIDRunsIDAllParams defines type for all parameters for DeleteTasksIDRunsID. +type DeleteTasksIDRunsIDAllParams struct { + DeleteTasksIDRunsIDParams + + TaskID string + + RunID string +} + // GetTasksIDRunsIDParams defines parameters for GetTasksIDRunsID. type GetTasksIDRunsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTasksIDRunsIDAllParams defines type for all parameters for GetTasksIDRunsID. +type GetTasksIDRunsIDAllParams struct { + GetTasksIDRunsIDParams + + TaskID string + + RunID string +} + // GetTasksIDRunsIDLogsParams defines parameters for GetTasksIDRunsIDLogs. type GetTasksIDRunsIDLogsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTasksIDRunsIDLogsAllParams defines type for all parameters for GetTasksIDRunsIDLogs. +type GetTasksIDRunsIDLogsAllParams struct { + GetTasksIDRunsIDLogsParams + + TaskID string + + RunID string +} + +// PostTasksIDRunsIDRetryJSONBody defines parameters for PostTasksIDRunsIDRetry. +type PostTasksIDRunsIDRetryJSONBody map[string]interface{} + // PostTasksIDRunsIDRetryParams defines parameters for PostTasksIDRunsIDRetry. type PostTasksIDRunsIDRetryParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostTasksIDRunsIDRetryAllParams defines type for all parameters for PostTasksIDRunsIDRetry. +type PostTasksIDRunsIDRetryAllParams struct { + PostTasksIDRunsIDRetryParams + + TaskID string + + RunID string + + Body PostTasksIDRunsIDRetryJSONRequestBody +} + // GetTelegrafPluginsParams defines parameters for GetTelegrafPlugins. type GetTelegrafPluginsParams struct { // The type of plugin desired. @@ -6113,12 +7180,26 @@ type PostTelegrafsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostTelegrafsAllParams defines type for all parameters for PostTelegrafs. +type PostTelegrafsAllParams struct { + PostTelegrafsParams + + Body PostTelegrafsJSONRequestBody +} + // DeleteTelegrafsIDParams defines parameters for DeleteTelegrafsID. type DeleteTelegrafsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteTelegrafsIDAllParams defines type for all parameters for DeleteTelegrafsID. +type DeleteTelegrafsIDAllParams struct { + DeleteTelegrafsIDParams + + TelegrafID string +} + // GetTelegrafsIDParams defines parameters for GetTelegrafsID. type GetTelegrafsIDParams struct { // OpenTracing span context @@ -6129,6 +7210,13 @@ type GetTelegrafsIDParams struct { // GetTelegrafsIDParamsAccept defines parameters for GetTelegrafsID. type GetTelegrafsIDParamsAccept string +// GetTelegrafsIDAllParams defines type for all parameters for GetTelegrafsID. +type GetTelegrafsIDAllParams struct { + GetTelegrafsIDParams + + TelegrafID string +} + // PutTelegrafsIDJSONBody defines parameters for PutTelegrafsID. type PutTelegrafsIDJSONBody TelegrafPluginRequest @@ -6138,12 +7226,28 @@ type PutTelegrafsIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PutTelegrafsIDAllParams defines type for all parameters for PutTelegrafsID. +type PutTelegrafsIDAllParams struct { + PutTelegrafsIDParams + + TelegrafID string + + Body PutTelegrafsIDJSONRequestBody +} + // GetTelegrafsIDLabelsParams defines parameters for GetTelegrafsIDLabels. type GetTelegrafsIDLabelsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTelegrafsIDLabelsAllParams defines type for all parameters for GetTelegrafsIDLabels. +type GetTelegrafsIDLabelsAllParams struct { + GetTelegrafsIDLabelsParams + + TelegrafID string +} + // PostTelegrafsIDLabelsJSONBody defines parameters for PostTelegrafsIDLabels. type PostTelegrafsIDLabelsJSONBody LabelMapping @@ -6153,18 +7257,43 @@ type PostTelegrafsIDLabelsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostTelegrafsIDLabelsAllParams defines type for all parameters for PostTelegrafsIDLabels. +type PostTelegrafsIDLabelsAllParams struct { + PostTelegrafsIDLabelsParams + + TelegrafID string + + Body PostTelegrafsIDLabelsJSONRequestBody +} + // DeleteTelegrafsIDLabelsIDParams defines parameters for DeleteTelegrafsIDLabelsID. type DeleteTelegrafsIDLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteTelegrafsIDLabelsIDAllParams defines type for all parameters for DeleteTelegrafsIDLabelsID. +type DeleteTelegrafsIDLabelsIDAllParams struct { + DeleteTelegrafsIDLabelsIDParams + + TelegrafID string + + LabelID string +} + // GetTelegrafsIDMembersParams defines parameters for GetTelegrafsIDMembers. type GetTelegrafsIDMembersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTelegrafsIDMembersAllParams defines type for all parameters for GetTelegrafsIDMembers. +type GetTelegrafsIDMembersAllParams struct { + GetTelegrafsIDMembersParams + + TelegrafID string +} + // PostTelegrafsIDMembersJSONBody defines parameters for PostTelegrafsIDMembers. type PostTelegrafsIDMembersJSONBody AddResourceMemberRequestBody @@ -6174,18 +7303,43 @@ type PostTelegrafsIDMembersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostTelegrafsIDMembersAllParams defines type for all parameters for PostTelegrafsIDMembers. +type PostTelegrafsIDMembersAllParams struct { + PostTelegrafsIDMembersParams + + TelegrafID string + + Body PostTelegrafsIDMembersJSONRequestBody +} + // DeleteTelegrafsIDMembersIDParams defines parameters for DeleteTelegrafsIDMembersID. type DeleteTelegrafsIDMembersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteTelegrafsIDMembersIDAllParams defines type for all parameters for DeleteTelegrafsIDMembersID. +type DeleteTelegrafsIDMembersIDAllParams struct { + DeleteTelegrafsIDMembersIDParams + + TelegrafID string + + UserID string +} + // GetTelegrafsIDOwnersParams defines parameters for GetTelegrafsIDOwners. type GetTelegrafsIDOwnersParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetTelegrafsIDOwnersAllParams defines type for all parameters for GetTelegrafsIDOwners. +type GetTelegrafsIDOwnersAllParams struct { + GetTelegrafsIDOwnersParams + + TelegrafID string +} + // PostTelegrafsIDOwnersJSONBody defines parameters for PostTelegrafsIDOwners. type PostTelegrafsIDOwnersJSONBody AddResourceMemberRequestBody @@ -6195,22 +7349,46 @@ type PostTelegrafsIDOwnersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostTelegrafsIDOwnersAllParams defines type for all parameters for PostTelegrafsIDOwners. +type PostTelegrafsIDOwnersAllParams struct { + PostTelegrafsIDOwnersParams + + TelegrafID string + + Body PostTelegrafsIDOwnersJSONRequestBody +} + // DeleteTelegrafsIDOwnersIDParams defines parameters for DeleteTelegrafsIDOwnersID. type DeleteTelegrafsIDOwnersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// ApplyTemplateJSONBody defines parameters for ApplyTemplate. -type ApplyTemplateJSONBody TemplateApply +// DeleteTelegrafsIDOwnersIDAllParams defines type for all parameters for DeleteTelegrafsIDOwnersID. +type DeleteTelegrafsIDOwnersIDAllParams struct { + DeleteTelegrafsIDOwnersIDParams + + TelegrafID string + + UserID string +} // ExportTemplateJSONBody defines parameters for ExportTemplate. type ExportTemplateJSONBody interface{} +// ExportTemplateAllParams defines type for all parameters for ExportTemplate. +type ExportTemplateAllParams struct { + Body ExportTemplateJSONRequestBody +} + // GetUsersParams defines parameters for GetUsers. type GetUsersParams struct { + // The offset for pagination. + // The number of records to skip. Offset *Offset `json:"offset,omitempty"` - Limit *Limit `json:"limit,omitempty"` + + // Limits the number of records returned. Default is `20`. + Limit *Limit `json:"limit,omitempty"` // Resource ID to seek from. Results are not inclusive of this ID. Use `after` instead of `offset`. After *After `json:"after,omitempty"` @@ -6230,18 +7408,39 @@ type PostUsersParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostUsersAllParams defines type for all parameters for PostUsers. +type PostUsersAllParams struct { + PostUsersParams + + Body PostUsersJSONRequestBody +} + // DeleteUsersIDParams defines parameters for DeleteUsersID. type DeleteUsersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteUsersIDAllParams defines type for all parameters for DeleteUsersID. +type DeleteUsersIDAllParams struct { + DeleteUsersIDParams + + UserID string +} + // GetUsersIDParams defines parameters for GetUsersID. type GetUsersIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetUsersIDAllParams defines type for all parameters for GetUsersID. +type GetUsersIDAllParams struct { + GetUsersIDParams + + UserID string +} + // PatchUsersIDJSONBody defines parameters for PatchUsersID. type PatchUsersIDJSONBody User @@ -6251,6 +7450,15 @@ type PatchUsersIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchUsersIDAllParams defines type for all parameters for PatchUsersID. +type PatchUsersIDAllParams struct { + PatchUsersIDParams + + UserID string + + Body PatchUsersIDJSONRequestBody +} + // PostUsersIDPasswordJSONBody defines parameters for PostUsersIDPassword. type PostUsersIDPasswordJSONBody PasswordResetBody @@ -6260,6 +7468,15 @@ type PostUsersIDPasswordParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostUsersIDPasswordAllParams defines type for all parameters for PostUsersIDPassword. +type PostUsersIDPasswordAllParams struct { + PostUsersIDPasswordParams + + UserID string + + Body PostUsersIDPasswordJSONRequestBody +} + // GetVariablesParams defines parameters for GetVariables. type GetVariablesParams struct { // The name of the organization. @@ -6281,18 +7498,39 @@ type PostVariablesParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PostVariablesAllParams defines type for all parameters for PostVariables. +type PostVariablesAllParams struct { + PostVariablesParams + + Body PostVariablesJSONRequestBody +} + // DeleteVariablesIDParams defines parameters for DeleteVariablesID. type DeleteVariablesIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// DeleteVariablesIDAllParams defines type for all parameters for DeleteVariablesID. +type DeleteVariablesIDAllParams struct { + DeleteVariablesIDParams + + VariableID string +} + // GetVariablesIDParams defines parameters for GetVariablesID. type GetVariablesIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetVariablesIDAllParams defines type for all parameters for GetVariablesID. +type GetVariablesIDAllParams struct { + GetVariablesIDParams + + VariableID string +} + // PatchVariablesIDJSONBody defines parameters for PatchVariablesID. type PatchVariablesIDJSONBody Variable @@ -6302,6 +7540,15 @@ type PatchVariablesIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PatchVariablesIDAllParams defines type for all parameters for PatchVariablesID. +type PatchVariablesIDAllParams struct { + PatchVariablesIDParams + + VariableID string + + Body PatchVariablesIDJSONRequestBody +} + // PutVariablesIDJSONBody defines parameters for PutVariablesID. type PutVariablesIDJSONBody Variable @@ -6311,12 +7558,28 @@ type PutVariablesIDParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// PutVariablesIDAllParams defines type for all parameters for PutVariablesID. +type PutVariablesIDAllParams struct { + PutVariablesIDParams + + VariableID string + + Body PutVariablesIDJSONRequestBody +} + // GetVariablesIDLabelsParams defines parameters for GetVariablesIDLabels. type GetVariablesIDLabelsParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } +// GetVariablesIDLabelsAllParams defines type for all parameters for GetVariablesIDLabels. +type GetVariablesIDLabelsAllParams struct { + GetVariablesIDLabelsParams + + VariableID string +} + // PostVariablesIDLabelsJSONBody defines parameters for PostVariablesIDLabels. type PostVariablesIDLabelsJSONBody LabelMapping @@ -6326,51 +7589,29 @@ type PostVariablesIDLabelsParams struct { ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` } -// DeleteVariablesIDLabelsIDParams defines parameters for DeleteVariablesIDLabelsID. -type DeleteVariablesIDLabelsIDParams struct { - // OpenTracing span context - ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` -} - -// PostWriteParams defines parameters for PostWrite. -type PostWriteParams struct { - // The parameter value specifies the destination organization for writes. The database writes all points in the batch to this organization. If you provide both `orgID` and `org` parameters, `org` takes precedence. - Org string `json:"org"` - - // The parameter value specifies the ID of the destination organization for writes. If both `orgID` and `org` are specified, `org` takes precedence. - OrgID *string `json:"orgID,omitempty"` +// PostVariablesIDLabelsAllParams defines type for all parameters for PostVariablesIDLabels. +type PostVariablesIDLabelsAllParams struct { + PostVariablesIDLabelsParams - // The destination bucket for writes. - Bucket string `json:"bucket"` + VariableID string - // The precision for the unix timestamps within the body line-protocol. - Precision *WritePrecision `json:"precision,omitempty"` + Body PostVariablesIDLabelsJSONRequestBody +} +// DeleteVariablesIDLabelsIDParams defines parameters for DeleteVariablesIDLabelsID. +type DeleteVariablesIDLabelsIDParams struct { // OpenTracing span context ZapTraceSpan *TraceSpan `json:"Zap-Trace-Span,omitempty"` - - // The value tells InfluxDB what compression is applied to the line protocol in the request payload. - // To make an API request with a GZIP payload, send `Content-Encoding: gzip` as a request header. - ContentEncoding *PostWriteParamsContentEncoding `json:"Content-Encoding,omitempty"` - - // The header value indicates the format of the data in the request body. - ContentType *PostWriteParamsContentType `json:"Content-Type,omitempty"` - - // The header value indicates the size of the entity-body, in bytes, sent to the database. If the length is greater than the database's `max body` configuration option, the server responds with status code `413`. - ContentLength *int `json:"Content-Length,omitempty"` - - // The header value specifies the response format. - Accept *PostWriteParamsAccept `json:"Accept,omitempty"` } -// PostWriteParamsContentEncoding defines parameters for PostWrite. -type PostWriteParamsContentEncoding string +// DeleteVariablesIDLabelsIDAllParams defines type for all parameters for DeleteVariablesIDLabelsID. +type DeleteVariablesIDLabelsIDAllParams struct { + DeleteVariablesIDLabelsIDParams -// PostWriteParamsContentType defines parameters for PostWrite. -type PostWriteParamsContentType string + VariableID string -// PostWriteParamsAccept defines parameters for PostWrite. -type PostWriteParamsAccept string + LabelID string +} // PostAuthorizationsJSONRequestBody defines body for PostAuthorizations for application/json ContentType. type PostAuthorizationsJSONRequestBody PostAuthorizationsJSONBody @@ -6393,21 +7634,6 @@ type PostBucketsIDMembersJSONRequestBody PostBucketsIDMembersJSONBody // PostBucketsIDOwnersJSONRequestBody defines body for PostBucketsIDOwners for application/json ContentType. type PostBucketsIDOwnersJSONRequestBody PostBucketsIDOwnersJSONBody -// CreateCheckJSONRequestBody defines body for CreateCheck for application/json ContentType. -type CreateCheckJSONRequestBody CreateCheckJSONBody - -// PatchChecksIDJSONRequestBody defines body for PatchChecksID for application/json ContentType. -type PatchChecksIDJSONRequestBody PatchChecksIDJSONBody - -// PutChecksIDJSONRequestBody defines body for PutChecksID for application/json ContentType. -type PutChecksIDJSONRequestBody PutChecksIDJSONBody - -// PostChecksIDLabelsJSONRequestBody defines body for PostChecksIDLabels for application/json ContentType. -type PostChecksIDLabelsJSONRequestBody PostChecksIDLabelsJSONBody - -// PostDashboardsJSONRequestBody defines body for PostDashboards for application/json ContentType. -type PostDashboardsJSONRequestBody PostDashboardsJSONBody - // PatchDashboardsIDJSONRequestBody defines body for PatchDashboardsID for application/json ContentType. type PatchDashboardsIDJSONRequestBody PatchDashboardsIDJSONBody @@ -6447,15 +7673,6 @@ type PostLabelsJSONRequestBody PostLabelsJSONBody // PatchLabelsIDJSONRequestBody defines body for PatchLabelsID for application/json ContentType. type PatchLabelsIDJSONRequestBody PatchLabelsIDJSONBody -// PostLegacyAuthorizationsJSONRequestBody defines body for PostLegacyAuthorizations for application/json ContentType. -type PostLegacyAuthorizationsJSONRequestBody PostLegacyAuthorizationsJSONBody - -// PatchLegacyAuthorizationsIDJSONRequestBody defines body for PatchLegacyAuthorizationsID for application/json ContentType. -type PatchLegacyAuthorizationsIDJSONRequestBody PatchLegacyAuthorizationsIDJSONBody - -// PostLegacyAuthorizationsIDPasswordJSONRequestBody defines body for PostLegacyAuthorizationsIDPassword for application/json ContentType. -type PostLegacyAuthorizationsIDPasswordJSONRequestBody PostLegacyAuthorizationsIDPasswordJSONBody - // PutMePasswordJSONRequestBody defines body for PutMePassword for application/json ContentType. type PutMePasswordJSONRequestBody PutMePasswordJSONBody @@ -6501,9 +7718,6 @@ type PatchOrgsIDSecretsJSONRequestBody PatchOrgsIDSecretsJSONBody // PostOrgsIDSecretsJSONRequestBody defines body for PostOrgsIDSecrets for application/json ContentType. type PostOrgsIDSecretsJSONRequestBody PostOrgsIDSecretsJSONBody -// PostQueryJSONRequestBody defines body for PostQuery for application/json ContentType. -type PostQueryJSONRequestBody PostQueryJSONBody - // PostQueryAnalyzeJSONRequestBody defines body for PostQueryAnalyze for application/json ContentType. type PostQueryAnalyzeJSONRequestBody PostQueryAnalyzeJSONBody @@ -6573,6 +7787,9 @@ type PostTasksIDOwnersJSONRequestBody PostTasksIDOwnersJSONBody // PostTasksIDRunsJSONRequestBody defines body for PostTasksIDRuns for application/json ContentType. type PostTasksIDRunsJSONRequestBody PostTasksIDRunsJSONBody +// PostTasksIDRunsIDRetryJSONRequestBody defines body for PostTasksIDRunsIDRetry for application/json ContentType. +type PostTasksIDRunsIDRetryJSONRequestBody PostTasksIDRunsIDRetryJSONBody + // PostTelegrafsJSONRequestBody defines body for PostTelegrafs for application/json ContentType. type PostTelegrafsJSONRequestBody PostTelegrafsJSONBody @@ -6588,9 +7805,6 @@ type PostTelegrafsIDMembersJSONRequestBody PostTelegrafsIDMembersJSONBody // PostTelegrafsIDOwnersJSONRequestBody defines body for PostTelegrafsIDOwners for application/json ContentType. type PostTelegrafsIDOwnersJSONRequestBody PostTelegrafsIDOwnersJSONBody -// ApplyTemplateJSONRequestBody defines body for ApplyTemplate for application/json ContentType. -type ApplyTemplateJSONRequestBody ApplyTemplateJSONBody - // ExportTemplateJSONRequestBody defines body for ExportTemplate for application/json ContentType. type ExportTemplateJSONRequestBody ExportTemplateJSONBody @@ -6646,7 +7860,7 @@ func (a *ColorMapping) UnmarshalJSON(b []byte) error { var fieldVal string err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -6662,7 +7876,7 @@ func (a ColorMapping) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -6699,7 +7913,7 @@ func (a *Flags) UnmarshalJSON(b []byte) error { var fieldVal interface{} err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -6715,7 +7929,7 @@ func (a Flags) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -6752,7 +7966,7 @@ func (a *FluxSuggestion_Params) UnmarshalJSON(b []byte) error { var fieldVal string err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -6768,7 +7982,7 @@ func (a FluxSuggestion_Params) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -6805,7 +8019,7 @@ func (a *HTTPNotificationEndpoint_Headers) UnmarshalJSON(b []byte) error { var fieldVal string err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -6821,7 +8035,7 @@ func (a HTTPNotificationEndpoint_Headers) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -6858,7 +8072,7 @@ func (a *Label_Properties) UnmarshalJSON(b []byte) error { var fieldVal string err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -6874,7 +8088,7 @@ func (a Label_Properties) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -6911,7 +8125,7 @@ func (a *LabelCreateRequest_Properties) UnmarshalJSON(b []byte) error { var fieldVal string err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -6927,7 +8141,7 @@ func (a LabelCreateRequest_Properties) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -6964,7 +8178,7 @@ func (a *LabelUpdate_Properties) UnmarshalJSON(b []byte) error { var fieldVal string err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -6980,7 +8194,7 @@ func (a LabelUpdate_Properties) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -7017,7 +8231,7 @@ func (a *MapVariableProperties_Values) UnmarshalJSON(b []byte) error { var fieldVal string err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -7033,7 +8247,7 @@ func (a MapVariableProperties_Values) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -7070,7 +8284,7 @@ func (a *Query_Params) UnmarshalJSON(b []byte) error { var fieldVal interface{} err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -7086,7 +8300,7 @@ func (a Query_Params) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -7123,7 +8337,7 @@ func (a *Secrets) UnmarshalJSON(b []byte) error { var fieldVal string err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -7139,7 +8353,7 @@ func (a Secrets) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -7176,7 +8390,7 @@ func (a *TemplateApply_EnvRefs) UnmarshalJSON(b []byte) error { var fieldVal interface{} err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -7192,7 +8406,7 @@ func (a TemplateApply_EnvRefs) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) @@ -7229,7 +8443,7 @@ func (a *TemplateApply_Secrets) UnmarshalJSON(b []byte) error { var fieldVal string err := json.Unmarshal(fieldBuf, &fieldVal) if err != nil { - return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) } a.AdditionalProperties[fieldName] = fieldVal } @@ -7245,7 +8459,7 @@ func (a TemplateApply_Secrets) MarshalJSON() ([]byte, error) { for fieldName, field := range a.AdditionalProperties { object[fieldName], err = json.Marshal(field) if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) } } return json.Marshal(object) diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/utils.go b/vendor/github.com/influxdata/influxdb-client-go/v2/domain/utils.go deleted file mode 100644 index c3a17c417e6f..000000000000 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/domain/utils.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2020-2021 InfluxData, Inc. All rights reserved. -// Use of this source code is governed by MIT -// license that can be found in the LICENSE file. - -package domain - -import ( - "github.com/influxdata/influxdb-client-go/v2/api/http" -) - -// ErrorToHTTPError creates http.Error from domain.Error -func ErrorToHTTPError(error *Error, statusCode int) *http.Error { - err := &http.Error{ - StatusCode: statusCode, - Code: string(error.Code), - } - if error.Message != nil { - err.Message = *error.Message - } - return err -} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/internal/http/userAgent.go b/vendor/github.com/influxdata/influxdb-client-go/v2/internal/http/userAgent.go index 0281bcba58e8..cd27a9fef5b2 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/internal/http/userAgent.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/internal/http/userAgent.go @@ -5,5 +5,17 @@ // Package http hold internal HTTP related stuff package http -// UserAgent keeps once created User-Agent string -var UserAgent string +import ( + "fmt" +) + +// UserAgentBase keeps once created base User-Agent string +var UserAgentBase string + +// FormatUserAgent creates User-Agent header value for application name +func FormatUserAgent(appName string) string { + if appName != "" { + return fmt.Sprintf("%s %s", UserAgentBase, appName) + } + return UserAgentBase +} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/internal/write/service.go b/vendor/github.com/influxdata/influxdb-client-go/v2/internal/write/service.go index 2d6985fa6af5..44ddf1c17d0f 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/internal/write/service.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/internal/write/service.go @@ -30,22 +30,19 @@ import ( type Batch struct { // lines to send Batch string - // current retry delay - RetryDelay uint // retry attempts so far RetryAttempts uint // true if it was removed from queue Evicted bool - // time where this batch expires + // time when this batch expires Expires time.Time } // NewBatch creates new batch -func NewBatch(data string, retryDelay uint, expireDelayMs uint) *Batch { +func NewBatch(data string, expireDelayMs uint) *Batch { return &Batch{ - Batch: data, - RetryDelay: retryDelay, - Expires: time.Now().Add(time.Duration(expireDelayMs) * time.Millisecond), + Batch: data, + Expires: time.Now().Add(time.Duration(expireDelayMs) * time.Millisecond), } } @@ -65,6 +62,8 @@ type Service struct { writeOptions *write.Options retryExponentialBase uint errorCb BatchErrorCallback + retryDelay uint + retryAttempts uint } // NewService creates new write service @@ -80,6 +79,9 @@ func NewService(org string, bucket string, httpService http2.Service, options *w params.Set("org", org) params.Set("bucket", bucket) params.Set("precision", precisionToString(options.Precision())) + if options.Consistency() != "" { + params.Set("consistency", string(options.Consistency())) + } u.RawQuery = params.Encode() writeURL := u.String() return &Service{ @@ -90,6 +92,8 @@ func NewService(org string, bucket string, httpService http2.Service, options *w writeOptions: options, retryQueue: newQueue(int(retryBufferLimit)), retryExponentialBase: 2, + retryDelay: options.RetryInterval(), + retryAttempts: 0, } } @@ -101,10 +105,10 @@ func (w *Service) SetBatchErrorCallback(cb BatchErrorCallback) { // HandleWrite handles writes of batches and handles retrying. // Retrying is triggered by new writes, there is no scheduler. -// It first checks retry queue, cause it has highest priority. +// It first checks retry queue, because it has the highest priority. // If there are some batches in retry queue, those are written and incoming batch is added to end of retry queue. // Immediate write is allowed only in case there was success or not retryable error. -// Otherwise delay is checked based on recent batch. +// Otherwise, delay is checked based on recent batch. // If write of batch fails with retryable error (connection errors and HTTP code >= 429), // Batch retry time is calculated based on #of attempts. // If writes continues failing and # of attempts reaches maximum or total retry time reaches maxRetryTime, @@ -124,13 +128,24 @@ func (w *Service) HandleWrite(ctx context.Context, batch *Batch) error { log.Debug("Write proc: taking batch from retry queue") if !retrying { b := w.retryQueue.first() + + // Discard batches at beginning of retryQueue that have already expired + if time.Now().After(b.Expires) { + log.Error("Write proc: oldest batch in retry queue expired, discarding") + if !b.Evicted { + w.retryQueue.pop() + } + + continue + } + // Can we write? In case of retryable error we must wait a bit - if w.lastWriteAttempt.IsZero() || time.Now().After(w.lastWriteAttempt.Add(time.Millisecond*time.Duration(b.RetryDelay))) { + if w.lastWriteAttempt.IsZero() || time.Now().After(w.lastWriteAttempt.Add(time.Millisecond*time.Duration(w.retryDelay))) { retrying = true } else { log.Warn("Write proc: cannot write yet, storing batch to queue") if w.retryQueue.push(batch) { - log.Warn("Write proc: Retry buffer full, discarding oldest batch") + log.Error("Write proc: Retry buffer full, discarding oldest batch") } batchToWrite = nil } @@ -139,7 +154,7 @@ func (w *Service) HandleWrite(ctx context.Context, batch *Batch) error { batchToWrite = w.retryQueue.first() if batch != nil { //store actual batch to retry queue if w.retryQueue.push(batch) { - log.Warn("Write proc: Retry buffer full, discarding oldest batch") + log.Error("Write proc: Retry buffer full, discarding oldest batch") } batch = nil } @@ -147,46 +162,63 @@ func (w *Service) HandleWrite(ctx context.Context, batch *Batch) error { } // write batch if batchToWrite != nil { - if time.Now().After(batchToWrite.Expires) { - if !batchToWrite.Evicted { - w.retryQueue.pop() - } - return fmt.Errorf("write failed (attempts %d): max retry time exceeded", batchToWrite.RetryAttempts) - } perror := w.WriteBatch(ctx, batchToWrite) if perror != nil { - if w.writeOptions.MaxRetries() != 0 && (perror.StatusCode == 0 || perror.StatusCode >= http.StatusTooManyRequests) { - log.Errorf("Write error: %s\nBatch kept for retrying\n", perror.Error()) - if perror.RetryAfter > 0 { - batchToWrite.RetryDelay = perror.RetryAfter * 1000 - } else { - batchToWrite.RetryDelay = w.computeRetryDelay(batchToWrite.RetryAttempts) - } - if w.errorCb != nil && !w.errorCb(batchToWrite, *perror) { - log.Warn("Callback rejected batch, discarding") - if !batchToWrite.Evicted { - w.retryQueue.pop() + if isIgnorableError(perror) { + log.Warnf("Write error: %s", perror.Error()) + } else { + if w.writeOptions.MaxRetries() != 0 && (perror.StatusCode == 0 || perror.StatusCode >= http.StatusTooManyRequests) { + log.Errorf("Write error: %s, batch kept for retrying\n", perror.Error()) + if perror.RetryAfter > 0 { + w.retryDelay = perror.RetryAfter * 1000 + } else { + w.retryDelay = w.computeRetryDelay(w.retryAttempts) } - return perror - } - // store new batch (not taken from queue) - if !batchToWrite.Evicted && batchToWrite != w.retryQueue.first() { - if w.retryQueue.push(batch) { - log.Warn("Retry buffer full, discarding oldest batch") + if w.errorCb != nil && !w.errorCb(batchToWrite, *perror) { + log.Error("Callback rejected batch, discarding") + if !batchToWrite.Evicted { + w.retryQueue.pop() + } + return perror + } + // store new batch (not taken from queue) + if !batchToWrite.Evicted && batchToWrite != w.retryQueue.first() { + if w.retryQueue.push(batch) { + log.Error("Retry buffer full, discarding oldest batch") + } + } else if batchToWrite.RetryAttempts == w.writeOptions.MaxRetries() { + log.Error("Reached maximum number of retries, discarding batch") + if !batchToWrite.Evicted { + w.retryQueue.pop() + } } - } else if batchToWrite.RetryAttempts == w.writeOptions.MaxRetries() { - log.Warn("Reached maximum number of retries, discarding batch") - if !batchToWrite.Evicted { - w.retryQueue.pop() + batchToWrite.RetryAttempts++ + w.retryAttempts++ + log.Debugf("Write proc: next wait for write is %dms\n", w.retryDelay) + } else { + logMessage := fmt.Sprintf("Write error: %s", perror.Error()) + logHeaders := perror.HeaderToString([]string{ + "date", + "trace-id", + "trace-sampled", + "X-Influxdb-Build", + "X-Influxdb-Request-ID", + "X-Influxdb-Version", + }) + if len(logHeaders) > 0 { + logMessage += fmt.Sprintf("\nSelected Response Headers:\n%s", logHeaders) } + log.Error(logMessage) } - batchToWrite.RetryAttempts++ - log.Debugf("Write proc: next wait for write is %dms\n", batchToWrite.RetryDelay) - } else { - log.Errorf("Write error: %s\n", perror.Error()) + log.Errorf("Write failed (retry attempts %d): Status Code %d", + batchToWrite.RetryAttempts, + perror.StatusCode) + return perror } - return fmt.Errorf("write failed (attempts %d): %w", batchToWrite.RetryAttempts, perror) } + + w.retryDelay = w.writeOptions.RetryInterval() + w.retryAttempts = 0 if retrying && !batchToWrite.Evicted { w.retryQueue.pop() } @@ -198,13 +230,51 @@ func (w *Service) HandleWrite(ctx context.Context, batch *Batch) error { return nil } -// computeRetryDelay calculates retry delay +// Non-retryable errors +const ( + errStringHintedHandoffNotEmpty = "hinted handoff queue not empty" + errStringPartialWrite = "partial write" + errStringPointsBeyondRP = "points beyond retention policy" + errStringUnableToParse = "unable to parse" +) + +func isIgnorableError(error *http2.Error) bool { + // This "error" is an informational message about the state of the + // InfluxDB cluster. + if strings.Contains(error.Message, errStringHintedHandoffNotEmpty) { + return true + } + // Points beyond retention policy is returned when points are immediately + // discarded for being older than the retention policy. Usually this not + // a cause for concern, and we don't want to retry. + if strings.Contains(error.Message, errStringPointsBeyondRP) { + return true + } + // Other partial write errors, such as "field type conflict", are not + // correctable at this point and so the point is dropped instead of + // retrying. + if strings.Contains(error.Message, errStringPartialWrite) { + return true + } + // This error indicates an error in line protocol + // serialization, retries would not be successful. + if strings.Contains(error.Message, errStringUnableToParse) { + return true + } + return false +} + +// computeRetryDelay calculates retry delay. // Retry delay is calculated as random value within the interval // [retry_interval * exponential_base^(attempts) and retry_interval * exponential_base^(attempts+1)] func (w *Service) computeRetryDelay(attempts uint) uint { minDelay := int(w.writeOptions.RetryInterval() * pow(w.writeOptions.ExponentialBase(), attempts)) maxDelay := int(w.writeOptions.RetryInterval() * pow(w.writeOptions.ExponentialBase(), attempts+1)) - retryDelay := uint(rand.Intn(maxDelay-minDelay) + minDelay) + diff := maxDelay - minDelay + if diff <= 0 { //check overflows + return w.writeOptions.MaxRetryInterval() + } + retryDelay := uint(rand.Intn(diff) + minDelay) if retryDelay > w.writeOptions.MaxRetryInterval() { retryDelay = w.writeOptions.MaxRetryInterval() } @@ -251,6 +321,20 @@ func (w *Service) WriteBatch(ctx context.Context, batch *Batch) *http2.Error { return perror } +// Flush sends batches from retry queue immediately, without retrying +func (w *Service) Flush() { + for !w.retryQueue.isEmpty() { + b := w.retryQueue.pop() + if time.Now().After(b.Expires) { + log.Error("Oldest batch in retry queue expired, discarding") + continue + } + if err := w.WriteBatch(context.Background(), b); err != nil { + log.Errorf("Error flushing batch from retry queue: %w", err.Unwrap()) + } + } +} + // pointWithDefaultTags encapsulates Point with default tags type pointWithDefaultTags struct { point *write.Point @@ -346,10 +430,3 @@ func precisionToString(precision time.Duration) string { } return prec } - -func min(a, b uint) uint { - if a > b { - return b - } - return a -} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/log/logger.go b/vendor/github.com/influxdata/influxdb-client-go/v2/log/logger.go index 00a7cadffa5c..4c9e61a68cd2 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/log/logger.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/log/logger.go @@ -129,5 +129,5 @@ func (l *logger) Errorf(format string, v ...interface{}) { func (l *logger) Error(msg string) { l.lock.Lock() defer l.lock.Unlock() - log.Print(l.prefix, " [E]! ", msg) + log.Print(l.prefix, " E! ", msg) } diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/options.go b/vendor/github.com/influxdata/influxdb-client-go/v2/options.go index 000bfc2f5abb..a2c903cf12b3 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/options.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/options.go @@ -219,6 +219,17 @@ func (o *Options) AddDefaultTag(key, value string) *Options { return o } +// ApplicationName returns application name used in the User-Agent HTTP header +func (o *Options) ApplicationName() string { + return o.HTTPOptions().ApplicationName() +} + +// SetApplicationName sets an application name to the User-Agent HTTP header +func (o *Options) SetApplicationName(appName string) *Options { + o.HTTPOptions().SetApplicationName(appName) + return o +} + // DefaultOptions returns Options object with default values func DefaultOptions() *Options { return &Options{logLevel: 0, writeOptions: write.DefaultOptions(), httpOptions: http.DefaultOptions()} diff --git a/vendor/github.com/influxdata/influxdb-client-go/v2/version.go b/vendor/github.com/influxdata/influxdb-client-go/v2/version.go index 4c93c0199506..7549a8a35107 100644 --- a/vendor/github.com/influxdata/influxdb-client-go/v2/version.go +++ b/vendor/github.com/influxdata/influxdb-client-go/v2/version.go @@ -13,9 +13,9 @@ import ( const ( // Version defines current version - Version = "2.9.0" + Version = "2.14.0" ) func init() { - http.UserAgent = fmt.Sprintf("influxdb-client-go/%s (%s; %s)", Version, runtime.GOOS, runtime.GOARCH) + http.UserAgentBase = fmt.Sprintf("influxdb-client-go/%s (%s; %s)", Version, runtime.GOOS, runtime.GOARCH) } diff --git a/vendor/github.com/klauspost/compress/.goreleaser.yml b/vendor/github.com/klauspost/compress/.goreleaser.yml index a22953805c63..4528059ca681 100644 --- a/vendor/github.com/klauspost/compress/.goreleaser.yml +++ b/vendor/github.com/klauspost/compress/.goreleaser.yml @@ -1,5 +1,5 @@ -# This is an example goreleaser.yaml file with some sane defaults. -# Make sure to check the documentation at http://goreleaser.com +version: 2 + before: hooks: - ./gen.sh @@ -99,7 +99,7 @@ archives: checksum: name_template: 'checksums.txt' snapshot: - name_template: "{{ .Tag }}-next" + version_template: "{{ .Tag }}-next" changelog: sort: asc filters: diff --git a/vendor/github.com/klauspost/compress/README.md b/vendor/github.com/klauspost/compress/README.md index 05c7359e481f..de264c85a5ad 100644 --- a/vendor/github.com/klauspost/compress/README.md +++ b/vendor/github.com/klauspost/compress/README.md @@ -16,6 +16,27 @@ This package provides various compression algorithms. # changelog +* Sep 23rd, 2024 - [1.17.10](https://github.com/klauspost/compress/releases/tag/v1.17.10) + * gzhttp: Add TransportAlwaysDecompress option. https://github.com/klauspost/compress/pull/978 + * gzhttp: Add supported decompress request body by @mirecl in https://github.com/klauspost/compress/pull/1002 + * s2: Add EncodeBuffer buffer recycling callback https://github.com/klauspost/compress/pull/982 + * zstd: Improve memory usage on small streaming encodes https://github.com/klauspost/compress/pull/1007 + * flate: read data written with partial flush by @vajexal in https://github.com/klauspost/compress/pull/996 + +* Jun 12th, 2024 - [1.17.9](https://github.com/klauspost/compress/releases/tag/v1.17.9) + * s2: Reduce ReadFrom temporary allocations https://github.com/klauspost/compress/pull/949 + * flate, zstd: Shave some bytes off amd64 matchLen by @greatroar in https://github.com/klauspost/compress/pull/963 + * Upgrade zip/zlib to 1.22.4 upstream https://github.com/klauspost/compress/pull/970 https://github.com/klauspost/compress/pull/971 + * zstd: BuildDict fails with RLE table https://github.com/klauspost/compress/pull/951 + +* Apr 9th, 2024 - [1.17.8](https://github.com/klauspost/compress/releases/tag/v1.17.8) + * zstd: Reject blocks where reserved values are not 0 https://github.com/klauspost/compress/pull/885 + * zstd: Add RLE detection+encoding https://github.com/klauspost/compress/pull/938 + +* Feb 21st, 2024 - [1.17.7](https://github.com/klauspost/compress/releases/tag/v1.17.7) + * s2: Add AsyncFlush method: Complete the block without flushing by @Jille in https://github.com/klauspost/compress/pull/927 + * s2: Fix literal+repeat exceeds dst crash https://github.com/klauspost/compress/pull/930 + * Feb 5th, 2024 - [1.17.6](https://github.com/klauspost/compress/releases/tag/v1.17.6) * zstd: Fix incorrect repeat coding in best mode https://github.com/klauspost/compress/pull/923 * s2: Fix DecodeConcurrent deadlock on errors https://github.com/klauspost/compress/pull/925 @@ -81,7 +102,7 @@ https://github.com/klauspost/compress/pull/919 https://github.com/klauspost/comp * zstd: Various minor improvements by @greatroar in https://github.com/klauspost/compress/pull/788 https://github.com/klauspost/compress/pull/794 https://github.com/klauspost/compress/pull/795 * s2: Fix huge block overflow https://github.com/klauspost/compress/pull/779 * s2: Allow CustomEncoder fallback https://github.com/klauspost/compress/pull/780 - * gzhttp: Suppport ResponseWriter Unwrap() in gzhttp handler by @jgimenez in https://github.com/klauspost/compress/pull/799 + * gzhttp: Support ResponseWriter Unwrap() in gzhttp handler by @jgimenez in https://github.com/klauspost/compress/pull/799 * Mar 13, 2023 - [v1.16.1](https://github.com/klauspost/compress/releases/tag/v1.16.1) * zstd: Speed up + improve best encoder by @greatroar in https://github.com/klauspost/compress/pull/776 @@ -136,7 +157,7 @@ https://github.com/klauspost/compress/pull/919 https://github.com/klauspost/comp * zstd: Add [WithDecodeAllCapLimit](https://pkg.go.dev/github.com/klauspost/compress@v1.15.10/zstd#WithDecodeAllCapLimit) https://github.com/klauspost/compress/pull/649 * Add Go 1.19 - deprecate Go 1.16 https://github.com/klauspost/compress/pull/651 * flate: Improve level 5+6 compression https://github.com/klauspost/compress/pull/656 - * zstd: Improve "better" compresssion https://github.com/klauspost/compress/pull/657 + * zstd: Improve "better" compression https://github.com/klauspost/compress/pull/657 * s2: Improve "best" compression https://github.com/klauspost/compress/pull/658 * s2: Improve "better" compression. https://github.com/klauspost/compress/pull/635 * s2: Slightly faster non-assembly decompression https://github.com/klauspost/compress/pull/646 @@ -339,7 +360,7 @@ While the release has been extensively tested, it is recommended to testing when * s2: Fix binaries. * Feb 25, 2021 (v1.11.8) - * s2: Fixed occational out-of-bounds write on amd64. Upgrade recommended. + * s2: Fixed occasional out-of-bounds write on amd64. Upgrade recommended. * s2: Add AMD64 assembly for better mode. 25-50% faster. [#315](https://github.com/klauspost/compress/pull/315) * s2: Less upfront decoder allocation. [#322](https://github.com/klauspost/compress/pull/322) * zstd: Faster "compression" of incompressible data. [#314](https://github.com/klauspost/compress/pull/314) @@ -518,7 +539,7 @@ While the release has been extensively tested, it is recommended to testing when * Feb 19, 2016: Faster bit writer, level -2 is 15% faster, level 1 is 4% faster. * Feb 19, 2016: Handle small payloads faster in level 1-3. * Feb 19, 2016: Added faster level 2 + 3 compression modes. -* Feb 19, 2016: [Rebalanced compression levels](https://blog.klauspost.com/rebalancing-deflate-compression-levels/), so there is a more even progresssion in terms of compression. New default level is 5. +* Feb 19, 2016: [Rebalanced compression levels](https://blog.klauspost.com/rebalancing-deflate-compression-levels/), so there is a more even progression in terms of compression. New default level is 5. * Feb 14, 2016: Snappy: Merge upstream changes. * Feb 14, 2016: Snappy: Fix aggressive skipping. * Feb 14, 2016: Snappy: Update benchmark. diff --git a/vendor/github.com/klauspost/compress/fse/decompress.go b/vendor/github.com/klauspost/compress/fse/decompress.go index cc05d0f7ea90..0c7dd4ffef9f 100644 --- a/vendor/github.com/klauspost/compress/fse/decompress.go +++ b/vendor/github.com/klauspost/compress/fse/decompress.go @@ -15,7 +15,7 @@ const ( // It is possible, but by no way guaranteed that corrupt data will // return an error. // It is up to the caller to verify integrity of the returned data. -// Use a predefined Scrach to set maximum acceptable output size. +// Use a predefined Scratch to set maximum acceptable output size. func Decompress(b []byte, s *Scratch) ([]byte, error) { s, err := s.prepare(b) if err != nil { diff --git a/vendor/github.com/klauspost/compress/huff0/decompress.go b/vendor/github.com/klauspost/compress/huff0/decompress.go index 54bd08b25c0a..0f56b02d7474 100644 --- a/vendor/github.com/klauspost/compress/huff0/decompress.go +++ b/vendor/github.com/klauspost/compress/huff0/decompress.go @@ -1136,7 +1136,7 @@ func (s *Scratch) matches(ct cTable, w io.Writer) { errs++ } if errs > 0 { - fmt.Fprintf(w, "%d errros in base, stopping\n", errs) + fmt.Fprintf(w, "%d errors in base, stopping\n", errs) continue } // Ensure that all combinations are covered. @@ -1152,7 +1152,7 @@ func (s *Scratch) matches(ct cTable, w io.Writer) { errs++ } if errs > 20 { - fmt.Fprintf(w, "%d errros, stopping\n", errs) + fmt.Fprintf(w, "%d errors, stopping\n", errs) break } } diff --git a/vendor/github.com/klauspost/compress/zstd/blockdec.go b/vendor/github.com/klauspost/compress/zstd/blockdec.go index 03744fbc7653..9c28840c3bd7 100644 --- a/vendor/github.com/klauspost/compress/zstd/blockdec.go +++ b/vendor/github.com/klauspost/compress/zstd/blockdec.go @@ -598,7 +598,9 @@ func (b *blockDec) prepareSequences(in []byte, hist *history) (err error) { printf("RLE set to 0x%x, code: %v", symb, v) } case compModeFSE: - println("Reading table for", tableIndex(i)) + if debugDecoder { + println("Reading table for", tableIndex(i)) + } if seq.fse == nil || seq.fse.preDefined { seq.fse = fseDecoderPool.Get().(*fseDecoder) } diff --git a/vendor/github.com/klauspost/compress/zstd/dict.go b/vendor/github.com/klauspost/compress/zstd/dict.go index 8d5567fe64c9..b7b83164bc76 100644 --- a/vendor/github.com/klauspost/compress/zstd/dict.go +++ b/vendor/github.com/klauspost/compress/zstd/dict.go @@ -273,6 +273,9 @@ func BuildDict(o BuildDictOptions) ([]byte, error) { enc.Encode(&block, b) addValues(&remain, block.literals) litTotal += len(block.literals) + if len(block.sequences) == 0 { + continue + } seqs += len(block.sequences) block.genCodes() addHist(&ll, block.coders.llEnc.Histogram()) @@ -286,6 +289,9 @@ func BuildDict(o BuildDictOptions) ([]byte, error) { if offset == 0 { continue } + if int(offset) >= len(o.History) { + continue + } if offset > 3 { newOffsets[offset-3]++ } else { @@ -336,6 +342,9 @@ func BuildDict(o BuildDictOptions) ([]byte, error) { if seqs/nUsed < 512 { // Use 512 as minimum. nUsed = seqs / 512 + if nUsed == 0 { + nUsed = 1 + } } copyHist := func(dst *fseEncoder, src *[256]int) ([]byte, error) { hist := dst.Histogram() @@ -358,6 +367,28 @@ func BuildDict(o BuildDictOptions) ([]byte, error) { fakeLength += v hist[i] = uint32(v) } + + // Ensure we aren't trying to represent RLE. + if maxCount == fakeLength { + for i := range hist { + if uint8(i) == maxSym { + fakeLength++ + maxSym++ + hist[i+1] = 1 + if maxSym > 1 { + break + } + } + if hist[0] == 0 { + fakeLength++ + hist[i] = 1 + if maxSym > 1 { + break + } + } + } + } + dst.HistogramFinished(maxSym, maxCount) dst.reUsed = false dst.useRLE = false diff --git a/vendor/github.com/klauspost/compress/zstd/enc_better.go b/vendor/github.com/klauspost/compress/zstd/enc_better.go index a4f5bf91fc63..84a79fde7677 100644 --- a/vendor/github.com/klauspost/compress/zstd/enc_better.go +++ b/vendor/github.com/klauspost/compress/zstd/enc_better.go @@ -179,9 +179,9 @@ encodeLoop: if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { // Consider history as well. var seq seq - lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + length := 4 + e.matchlen(s+4+repOff, repIndex+4, src) - seq.matchLen = uint32(lenght - zstdMinMatch) + seq.matchLen = uint32(length - zstdMinMatch) // We might be able to match backwards. // Extend as long as we can. @@ -210,12 +210,12 @@ encodeLoop: // Index match start+1 (long) -> s - 1 index0 := s + repOff - s += lenght + repOff + s += length + repOff nextEmit = s if s >= sLimit { if debugEncoder { - println("repeat ended", s, lenght) + println("repeat ended", s, length) } break encodeLoop @@ -241,9 +241,9 @@ encodeLoop: if false && repIndex >= 0 && load6432(src, repIndex) == load6432(src, s+repOff) { // Consider history as well. var seq seq - lenght := 8 + e.matchlen(s+8+repOff2, repIndex+8, src) + length := 8 + e.matchlen(s+8+repOff2, repIndex+8, src) - seq.matchLen = uint32(lenght - zstdMinMatch) + seq.matchLen = uint32(length - zstdMinMatch) // We might be able to match backwards. // Extend as long as we can. @@ -270,11 +270,11 @@ encodeLoop: } blk.sequences = append(blk.sequences, seq) - s += lenght + repOff2 + s += length + repOff2 nextEmit = s if s >= sLimit { if debugEncoder { - println("repeat ended", s, lenght) + println("repeat ended", s, length) } break encodeLoop @@ -708,9 +708,9 @@ encodeLoop: if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { // Consider history as well. var seq seq - lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + length := 4 + e.matchlen(s+4+repOff, repIndex+4, src) - seq.matchLen = uint32(lenght - zstdMinMatch) + seq.matchLen = uint32(length - zstdMinMatch) // We might be able to match backwards. // Extend as long as we can. @@ -738,12 +738,12 @@ encodeLoop: blk.sequences = append(blk.sequences, seq) // Index match start+1 (long) -> s - 1 - s += lenght + repOff + s += length + repOff nextEmit = s if s >= sLimit { if debugEncoder { - println("repeat ended", s, lenght) + println("repeat ended", s, length) } break encodeLoop @@ -772,9 +772,9 @@ encodeLoop: if false && repIndex >= 0 && load6432(src, repIndex) == load6432(src, s+repOff) { // Consider history as well. var seq seq - lenght := 8 + e.matchlen(s+8+repOff2, repIndex+8, src) + length := 8 + e.matchlen(s+8+repOff2, repIndex+8, src) - seq.matchLen = uint32(lenght - zstdMinMatch) + seq.matchLen = uint32(length - zstdMinMatch) // We might be able to match backwards. // Extend as long as we can. @@ -801,11 +801,11 @@ encodeLoop: } blk.sequences = append(blk.sequences, seq) - s += lenght + repOff2 + s += length + repOff2 nextEmit = s if s >= sLimit { if debugEncoder { - println("repeat ended", s, lenght) + println("repeat ended", s, length) } break encodeLoop diff --git a/vendor/github.com/klauspost/compress/zstd/enc_dfast.go b/vendor/github.com/klauspost/compress/zstd/enc_dfast.go index a154c18f7416..d36be7bd8c24 100644 --- a/vendor/github.com/klauspost/compress/zstd/enc_dfast.go +++ b/vendor/github.com/klauspost/compress/zstd/enc_dfast.go @@ -138,9 +138,9 @@ encodeLoop: if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { // Consider history as well. var seq seq - lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + length := 4 + e.matchlen(s+4+repOff, repIndex+4, src) - seq.matchLen = uint32(lenght - zstdMinMatch) + seq.matchLen = uint32(length - zstdMinMatch) // We might be able to match backwards. // Extend as long as we can. @@ -166,11 +166,11 @@ encodeLoop: println("repeat sequence", seq, "next s:", s) } blk.sequences = append(blk.sequences, seq) - s += lenght + repOff + s += length + repOff nextEmit = s if s >= sLimit { if debugEncoder { - println("repeat ended", s, lenght) + println("repeat ended", s, length) } break encodeLoop @@ -798,9 +798,9 @@ encodeLoop: if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { // Consider history as well. var seq seq - lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + length := 4 + e.matchlen(s+4+repOff, repIndex+4, src) - seq.matchLen = uint32(lenght - zstdMinMatch) + seq.matchLen = uint32(length - zstdMinMatch) // We might be able to match backwards. // Extend as long as we can. @@ -826,11 +826,11 @@ encodeLoop: println("repeat sequence", seq, "next s:", s) } blk.sequences = append(blk.sequences, seq) - s += lenght + repOff + s += length + repOff nextEmit = s if s >= sLimit { if debugEncoder { - println("repeat ended", s, lenght) + println("repeat ended", s, length) } break encodeLoop diff --git a/vendor/github.com/klauspost/compress/zstd/encoder.go b/vendor/github.com/klauspost/compress/zstd/encoder.go index 72af7ef0fe00..8f8223cd3a67 100644 --- a/vendor/github.com/klauspost/compress/zstd/encoder.go +++ b/vendor/github.com/klauspost/compress/zstd/encoder.go @@ -6,6 +6,7 @@ package zstd import ( "crypto/rand" + "errors" "fmt" "io" "math" @@ -149,6 +150,9 @@ func (e *Encoder) ResetContentSize(w io.Writer, size int64) { // and write CRC if requested. func (e *Encoder) Write(p []byte) (n int, err error) { s := &e.state + if s.eofWritten { + return 0, ErrEncoderClosed + } for len(p) > 0 { if len(p)+len(s.filling) < e.o.blockSize { if e.o.crc { @@ -202,7 +206,7 @@ func (e *Encoder) nextBlock(final bool) error { return nil } if final && len(s.filling) > 0 { - s.current = e.EncodeAll(s.filling, s.current[:0]) + s.current = e.encodeAll(s.encoder, s.filling, s.current[:0]) var n2 int n2, s.err = s.w.Write(s.current) if s.err != nil { @@ -288,6 +292,9 @@ func (e *Encoder) nextBlock(final bool) error { s.filling, s.current, s.previous = s.previous[:0], s.filling, s.current s.nInput += int64(len(s.current)) s.wg.Add(1) + if final { + s.eofWritten = true + } go func(src []byte) { if debugEncoder { println("Adding block,", len(src), "bytes, final:", final) @@ -303,9 +310,6 @@ func (e *Encoder) nextBlock(final bool) error { blk := enc.Block() enc.Encode(blk, src) blk.last = final - if final { - s.eofWritten = true - } // Wait for pending writes. s.wWg.Wait() if s.writeErr != nil { @@ -401,12 +405,20 @@ func (e *Encoder) Flush() error { if len(s.filling) > 0 { err := e.nextBlock(false) if err != nil { + // Ignore Flush after Close. + if errors.Is(s.err, ErrEncoderClosed) { + return nil + } return err } } s.wg.Wait() s.wWg.Wait() if s.err != nil { + // Ignore Flush after Close. + if errors.Is(s.err, ErrEncoderClosed) { + return nil + } return s.err } return s.writeErr @@ -422,6 +434,9 @@ func (e *Encoder) Close() error { } err := e.nextBlock(true) if err != nil { + if errors.Is(s.err, ErrEncoderClosed) { + return nil + } return err } if s.frameContentSize > 0 { @@ -459,6 +474,11 @@ func (e *Encoder) Close() error { } _, s.err = s.w.Write(frame) } + if s.err == nil { + s.err = ErrEncoderClosed + return nil + } + return s.err } @@ -469,6 +489,15 @@ func (e *Encoder) Close() error { // Data compressed with EncodeAll can be decoded with the Decoder, // using either a stream or DecodeAll. func (e *Encoder) EncodeAll(src, dst []byte) []byte { + e.init.Do(e.initialize) + enc := <-e.encoders + defer func() { + e.encoders <- enc + }() + return e.encodeAll(enc, src, dst) +} + +func (e *Encoder) encodeAll(enc encoder, src, dst []byte) []byte { if len(src) == 0 { if e.o.fullZero { // Add frame header. @@ -491,13 +520,7 @@ func (e *Encoder) EncodeAll(src, dst []byte) []byte { } return dst } - e.init.Do(e.initialize) - enc := <-e.encoders - defer func() { - // Release encoder reference to last block. - // If a non-single block is needed the encoder will reset again. - e.encoders <- enc - }() + // Use single segments when above minimum window and below window size. single := len(src) <= e.o.windowSize && len(src) > MinWindowSize if e.o.single != nil { diff --git a/vendor/github.com/klauspost/compress/zstd/framedec.go b/vendor/github.com/klauspost/compress/zstd/framedec.go index 53e160f7e5a2..e47af66e7c90 100644 --- a/vendor/github.com/klauspost/compress/zstd/framedec.go +++ b/vendor/github.com/klauspost/compress/zstd/framedec.go @@ -146,7 +146,9 @@ func (d *frameDec) reset(br byteBuffer) error { } return err } - printf("raw: %x, mantissa: %d, exponent: %d\n", wd, wd&7, wd>>3) + if debugDecoder { + printf("raw: %x, mantissa: %d, exponent: %d\n", wd, wd&7, wd>>3) + } windowLog := 10 + (wd >> 3) windowBase := uint64(1) << windowLog windowAdd := (windowBase / 8) * uint64(wd&0x7) diff --git a/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s b/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s index 17901e080406..ae7d4d3295a4 100644 --- a/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s +++ b/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s @@ -162,12 +162,12 @@ finalize: MOVD h, ret+24(FP) RET -// func writeBlocks(d *Digest, b []byte) int +// func writeBlocks(s *Digest, b []byte) int TEXT ·writeBlocks(SB), NOSPLIT|NOFRAME, $0-40 LDP ·primes+0(SB), (prime1, prime2) // Load state. Assume v[1-4] are stored contiguously. - MOVD d+0(FP), digest + MOVD s+0(FP), digest LDP 0(digest), (v1, v2) LDP 16(digest), (v3, v4) diff --git a/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s b/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s index 9a7655c0f766..0782b86e3d15 100644 --- a/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s +++ b/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s @@ -5,7 +5,6 @@ #include "textflag.h" // func matchLen(a []byte, b []byte) int -// Requires: BMI TEXT ·matchLen(SB), NOSPLIT, $0-56 MOVQ a_base+0(FP), AX MOVQ b_base+24(FP), CX @@ -17,17 +16,16 @@ TEXT ·matchLen(SB), NOSPLIT, $0-56 JB matchlen_match4_standalone matchlen_loopback_standalone: - MOVQ (AX)(SI*1), BX - XORQ (CX)(SI*1), BX - TESTQ BX, BX - JZ matchlen_loop_standalone + MOVQ (AX)(SI*1), BX + XORQ (CX)(SI*1), BX + JZ matchlen_loop_standalone #ifdef GOAMD64_v3 TZCNTQ BX, BX #else BSFQ BX, BX #endif - SARQ $0x03, BX + SHRL $0x03, BX LEAL (SI)(BX*1), SI JMP gen_match_len_end diff --git a/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go b/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go index 8adabd828777..c59f17e07ad1 100644 --- a/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go +++ b/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go @@ -146,7 +146,7 @@ func (s *sequenceDecs) decodeSyncSimple(hist []byte) (bool, error) { return true, fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) default: - return true, fmt.Errorf("sequenceDecs_decode returned erronous code %d", errCode) + return true, fmt.Errorf("sequenceDecs_decode returned erroneous code %d", errCode) } s.seqSize += ctx.litRemain @@ -292,7 +292,7 @@ func (s *sequenceDecs) decode(seqs []seqVals) error { return io.ErrUnexpectedEOF } - return fmt.Errorf("sequenceDecs_decode_amd64 returned erronous code %d", errCode) + return fmt.Errorf("sequenceDecs_decode_amd64 returned erroneous code %d", errCode) } if ctx.litRemain < 0 { diff --git a/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s b/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s index 5b06174b8981..f5591fa1e866 100644 --- a/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s +++ b/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s @@ -1814,7 +1814,7 @@ TEXT ·sequenceDecs_decodeSync_amd64(SB), $64-32 MOVQ 40(SP), AX ADDQ AX, 48(SP) - // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + // Calculate pointer to s.out[cap(s.out)] (a past-end pointer) ADDQ R10, 32(SP) // outBase += outPosition @@ -2376,7 +2376,7 @@ TEXT ·sequenceDecs_decodeSync_bmi2(SB), $64-32 MOVQ 40(SP), CX ADDQ CX, 48(SP) - // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + // Calculate pointer to s.out[cap(s.out)] (a past-end pointer) ADDQ R9, 32(SP) // outBase += outPosition @@ -2896,7 +2896,7 @@ TEXT ·sequenceDecs_decodeSync_safe_amd64(SB), $64-32 MOVQ 40(SP), AX ADDQ AX, 48(SP) - // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + // Calculate pointer to s.out[cap(s.out)] (a past-end pointer) ADDQ R10, 32(SP) // outBase += outPosition @@ -3560,7 +3560,7 @@ TEXT ·sequenceDecs_decodeSync_safe_bmi2(SB), $64-32 MOVQ 40(SP), CX ADDQ CX, 48(SP) - // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + // Calculate pointer to s.out[cap(s.out)] (a past-end pointer) ADDQ R9, 32(SP) // outBase += outPosition diff --git a/vendor/github.com/klauspost/compress/zstd/zstd.go b/vendor/github.com/klauspost/compress/zstd/zstd.go index 4be7cc73671b..066bef2a4f0e 100644 --- a/vendor/github.com/klauspost/compress/zstd/zstd.go +++ b/vendor/github.com/klauspost/compress/zstd/zstd.go @@ -88,6 +88,10 @@ var ( // Close has been called. ErrDecoderClosed = errors.New("decoder used after Close") + // ErrEncoderClosed will be returned if the Encoder was used after + // Close has been called. + ErrEncoderClosed = errors.New("encoder used after Close") + // ErrDecoderNilInput is returned when a nil Reader was provided // and an operation other than Reset/DecodeAll/Close was attempted. ErrDecoderNilInput = errors.New("nil input provided as reader") diff --git a/vendor/github.com/mailru/easyjson/.travis.yml b/vendor/github.com/mailru/easyjson/.travis.yml deleted file mode 100644 index 1e0fa4c6ad32..000000000000 --- a/vendor/github.com/mailru/easyjson/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -arch: - - amd64 - - ppc64le -language: go - -go: - - tip - - stable - -matrix: - allow_failures: - - go: tip - -install: - - go get golang.org/x/lint/golint diff --git a/vendor/github.com/mailru/easyjson/Makefile b/vendor/github.com/mailru/easyjson/Makefile index c5273407b884..cc5ebbad38ff 100644 --- a/vendor/github.com/mailru/easyjson/Makefile +++ b/vendor/github.com/mailru/easyjson/Makefile @@ -6,7 +6,7 @@ clean: rm -rf benchmark/*_easyjson.go build: - go build -i -o ./bin/easyjson ./easyjson + go build -o ./bin/easyjson ./easyjson generate: build bin/easyjson -stubs \ diff --git a/vendor/github.com/mailru/easyjson/README.md b/vendor/github.com/mailru/easyjson/README.md index 952575b9dec5..943b9e4cea4e 100644 --- a/vendor/github.com/mailru/easyjson/README.md +++ b/vendor/github.com/mailru/easyjson/README.md @@ -1,4 +1,4 @@ -# easyjson [![Build Status](https://travis-ci.org/mailru/easyjson.svg?branch=master)](https://travis-ci.org/mailru/easyjson) [![Go Report Card](https://goreportcard.com/badge/github.com/mailru/easyjson)](https://goreportcard.com/report/github.com/mailru/easyjson) +# easyjson [![Build Status](https://github.com/mailru/easyjson/actions/workflows/easyjson.yml/badge.svg)](https://github.com/mailru/easyjson/actions/workflows/easyjson.yml) [![Go Report Card](https://goreportcard.com/badge/github.com/mailru/easyjson)](https://goreportcard.com/report/github.com/mailru/easyjson) Package easyjson provides a fast and easy way to marshal/unmarshal Go structs to/from JSON without the use of reflection. In performance tests, easyjson @@ -12,11 +12,18 @@ standard `encoding/json` package, such as generating "snake_case" names or enabling `omitempty` behavior by default. ## Usage +### Install: ```sh -# install +# for Go < 1.17 go get -u github.com/mailru/easyjson/... - -# run +``` +#### or +```sh +# for Go >= 1.17 +go get github.com/mailru/easyjson && go install github.com/mailru/easyjson/...@latest +``` +### Run: +```sh easyjson -all .go ``` @@ -28,6 +35,20 @@ environment variable to be set. This is because easyjson code generation invokes `go run` on a temporary file (an approach to code generation borrowed from [ffjson](https://github.com/pquerna/ffjson)). +### Serialize +```go +someStruct := &SomeStruct{Field1: "val1", Field2: "val2"} +rawBytes, err := easyjson.Marshal(someStruct) +``` + +### Deserialize +```go +someStruct := &SomeStruct{} +err := easyjson.Unmarshal(rawBytes, someStruct) +``` + +Please see the [GoDoc](https://godoc.org/github.com/mailru/easyjson) +for more information and features. ## Options ```txt Usage of easyjson: @@ -96,7 +117,7 @@ Additional option notes: ## Structure json tag options -Besides standart json tag options like 'omitempty' the following are supported: +Besides standard json tag options like 'omitempty' the following are supported: * 'nocopy' - disables allocation and copying of string values, making them refer to original json buffer memory. This works great for short lived diff --git a/vendor/github.com/mailru/easyjson/helpers.go b/vendor/github.com/mailru/easyjson/helpers.go index 78dacb1b7b9c..efe34bf2ac5e 100644 --- a/vendor/github.com/mailru/easyjson/helpers.go +++ b/vendor/github.com/mailru/easyjson/helpers.go @@ -17,7 +17,7 @@ type Marshaler interface { MarshalEasyJSON(w *jwriter.Writer) } -// Marshaler is an easyjson-compatible unmarshaler interface. +// Unmarshaler is an easyjson-compatible unmarshaler interface. type Unmarshaler interface { UnmarshalEasyJSON(w *jlexer.Lexer) } diff --git a/vendor/github.com/mailru/easyjson/jlexer/bytestostr.go b/vendor/github.com/mailru/easyjson/jlexer/bytestostr.go index ff7b27c5b203..e68108f86876 100644 --- a/vendor/github.com/mailru/easyjson/jlexer/bytestostr.go +++ b/vendor/github.com/mailru/easyjson/jlexer/bytestostr.go @@ -8,7 +8,6 @@ package jlexer import ( - "reflect" "unsafe" ) @@ -18,7 +17,5 @@ import ( // chunk may be either blocked from being freed by GC because of a single string or the buffer.Data // may be garbage-collected even when the string exists. func bytesToStr(data []byte) string { - h := (*reflect.SliceHeader)(unsafe.Pointer(&data)) - shdr := reflect.StringHeader{Data: h.Data, Len: h.Len} - return *(*string)(unsafe.Pointer(&shdr)) + return *(*string)(unsafe.Pointer(&data)) } diff --git a/vendor/github.com/mailru/easyjson/jlexer/lexer.go b/vendor/github.com/mailru/easyjson/jlexer/lexer.go index b5f5e2613293..a27705b12b54 100644 --- a/vendor/github.com/mailru/easyjson/jlexer/lexer.go +++ b/vendor/github.com/mailru/easyjson/jlexer/lexer.go @@ -19,21 +19,21 @@ import ( "github.com/josharian/intern" ) -// tokenKind determines type of a token. -type tokenKind byte +// TokenKind determines type of a token. +type TokenKind byte const ( - tokenUndef tokenKind = iota // No token. - tokenDelim // Delimiter: one of '{', '}', '[' or ']'. - tokenString // A string literal, e.g. "abc\u1234" - tokenNumber // Number literal, e.g. 1.5e5 - tokenBool // Boolean literal: true or false. - tokenNull // null keyword. + TokenUndef TokenKind = iota // No token. + TokenDelim // Delimiter: one of '{', '}', '[' or ']'. + TokenString // A string literal, e.g. "abc\u1234" + TokenNumber // Number literal, e.g. 1.5e5 + TokenBool // Boolean literal: true or false. + TokenNull // null keyword. ) // token describes a single token: type, position in the input and value. type token struct { - kind tokenKind // Type of a token. + kind TokenKind // Type of a token. boolValue bool // Value if a boolean literal token. byteValueCloned bool // true if byteValue was allocated and does not refer to original json body @@ -47,7 +47,7 @@ type Lexer struct { start int // Start of the current token. pos int // Current unscanned position in the input stream. - token token // Last scanned token, if token.kind != tokenUndef. + token token // Last scanned token, if token.kind != TokenUndef. firstElement bool // Whether current element is the first in array or an object. wantSep byte // A comma or a colon character, which need to occur before a token. @@ -59,7 +59,7 @@ type Lexer struct { // FetchToken scans the input for the next token. func (r *Lexer) FetchToken() { - r.token.kind = tokenUndef + r.token.kind = TokenUndef r.start = r.pos // Check if r.Data has r.pos element @@ -90,7 +90,7 @@ func (r *Lexer) FetchToken() { r.errSyntax() } - r.token.kind = tokenString + r.token.kind = TokenString r.fetchString() return @@ -99,7 +99,7 @@ func (r *Lexer) FetchToken() { r.errSyntax() } r.firstElement = true - r.token.kind = tokenDelim + r.token.kind = TokenDelim r.token.delimValue = r.Data[r.pos] r.pos++ return @@ -109,7 +109,7 @@ func (r *Lexer) FetchToken() { r.errSyntax() } r.wantSep = 0 - r.token.kind = tokenDelim + r.token.kind = TokenDelim r.token.delimValue = r.Data[r.pos] r.pos++ return @@ -118,7 +118,7 @@ func (r *Lexer) FetchToken() { if r.wantSep != 0 { r.errSyntax() } - r.token.kind = tokenNumber + r.token.kind = TokenNumber r.fetchNumber() return @@ -127,7 +127,7 @@ func (r *Lexer) FetchToken() { r.errSyntax() } - r.token.kind = tokenNull + r.token.kind = TokenNull r.fetchNull() return @@ -136,7 +136,7 @@ func (r *Lexer) FetchToken() { r.errSyntax() } - r.token.kind = tokenBool + r.token.kind = TokenBool r.token.boolValue = true r.fetchTrue() return @@ -146,7 +146,7 @@ func (r *Lexer) FetchToken() { r.errSyntax() } - r.token.kind = tokenBool + r.token.kind = TokenBool r.token.boolValue = false r.fetchFalse() return @@ -391,7 +391,7 @@ func (r *Lexer) fetchString() { // scanToken scans the next token if no token is currently available in the lexer. func (r *Lexer) scanToken() { - if r.token.kind != tokenUndef || r.fatalError != nil { + if r.token.kind != TokenUndef || r.fatalError != nil { return } @@ -400,7 +400,7 @@ func (r *Lexer) scanToken() { // consume resets the current token to allow scanning the next one. func (r *Lexer) consume() { - r.token.kind = tokenUndef + r.token.kind = TokenUndef r.token.byteValueCloned = false r.token.delimValue = 0 } @@ -443,10 +443,10 @@ func (r *Lexer) errInvalidToken(expected string) { switch expected { case "[": r.token.delimValue = ']' - r.token.kind = tokenDelim + r.token.kind = TokenDelim case "{": r.token.delimValue = '}' - r.token.kind = tokenDelim + r.token.kind = TokenDelim } r.addNonfatalError(&LexerError{ Reason: fmt.Sprintf("expected %s", expected), @@ -475,7 +475,7 @@ func (r *Lexer) GetPos() int { // Delim consumes a token and verifies that it is the given delimiter. func (r *Lexer) Delim(c byte) { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } @@ -489,7 +489,7 @@ func (r *Lexer) Delim(c byte) { // IsDelim returns true if there was no scanning error and next token is the given delimiter. func (r *Lexer) IsDelim(c byte) bool { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } return !r.Ok() || r.token.delimValue == c @@ -497,10 +497,10 @@ func (r *Lexer) IsDelim(c byte) bool { // Null verifies that the next token is null and consumes it. func (r *Lexer) Null() { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } - if !r.Ok() || r.token.kind != tokenNull { + if !r.Ok() || r.token.kind != TokenNull { r.errInvalidToken("null") } r.consume() @@ -508,15 +508,15 @@ func (r *Lexer) Null() { // IsNull returns true if the next token is a null keyword. func (r *Lexer) IsNull() bool { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } - return r.Ok() && r.token.kind == tokenNull + return r.Ok() && r.token.kind == TokenNull } // Skip skips a single token. func (r *Lexer) Skip() { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } r.consume() @@ -621,10 +621,10 @@ func (r *Lexer) Consumed() { } func (r *Lexer) unsafeString(skipUnescape bool) (string, []byte) { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } - if !r.Ok() || r.token.kind != tokenString { + if !r.Ok() || r.token.kind != TokenString { r.errInvalidToken("string") return "", nil } @@ -664,10 +664,10 @@ func (r *Lexer) UnsafeFieldName(skipUnescape bool) string { // String reads a string literal. func (r *Lexer) String() string { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } - if !r.Ok() || r.token.kind != tokenString { + if !r.Ok() || r.token.kind != TokenString { r.errInvalidToken("string") return "" } @@ -687,10 +687,10 @@ func (r *Lexer) String() string { // StringIntern reads a string literal, and performs string interning on it. func (r *Lexer) StringIntern() string { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } - if !r.Ok() || r.token.kind != tokenString { + if !r.Ok() || r.token.kind != TokenString { r.errInvalidToken("string") return "" } @@ -705,10 +705,10 @@ func (r *Lexer) StringIntern() string { // Bytes reads a string literal and base64 decodes it into a byte slice. func (r *Lexer) Bytes() []byte { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } - if !r.Ok() || r.token.kind != tokenString { + if !r.Ok() || r.token.kind != TokenString { r.errInvalidToken("string") return nil } @@ -731,10 +731,10 @@ func (r *Lexer) Bytes() []byte { // Bool reads a true or false boolean keyword. func (r *Lexer) Bool() bool { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } - if !r.Ok() || r.token.kind != tokenBool { + if !r.Ok() || r.token.kind != TokenBool { r.errInvalidToken("bool") return false } @@ -744,10 +744,10 @@ func (r *Lexer) Bool() bool { } func (r *Lexer) number() string { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } - if !r.Ok() || r.token.kind != tokenNumber { + if !r.Ok() || r.token.kind != TokenNumber { r.errInvalidToken("number") return "" } @@ -1151,7 +1151,7 @@ func (r *Lexer) GetNonFatalErrors() []*LexerError { // JsonNumber fetches and json.Number from 'encoding/json' package. // Both int, float or string, contains them are valid values func (r *Lexer) JsonNumber() json.Number { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } if !r.Ok() { @@ -1160,11 +1160,11 @@ func (r *Lexer) JsonNumber() json.Number { } switch r.token.kind { - case tokenString: + case TokenString: return json.Number(r.String()) - case tokenNumber: + case TokenNumber: return json.Number(r.Raw()) - case tokenNull: + case TokenNull: r.Null() return json.Number("") default: @@ -1175,7 +1175,7 @@ func (r *Lexer) JsonNumber() json.Number { // Interface fetches an interface{} analogous to the 'encoding/json' package. func (r *Lexer) Interface() interface{} { - if r.token.kind == tokenUndef && r.Ok() { + if r.token.kind == TokenUndef && r.Ok() { r.FetchToken() } @@ -1183,13 +1183,13 @@ func (r *Lexer) Interface() interface{} { return nil } switch r.token.kind { - case tokenString: + case TokenString: return r.String() - case tokenNumber: + case TokenNumber: return r.Float64() - case tokenBool: + case TokenBool: return r.Bool() - case tokenNull: + case TokenNull: r.Null() return nil } @@ -1242,3 +1242,16 @@ func (r *Lexer) WantColon() { r.wantSep = ':' r.firstElement = false } + +// CurrentToken returns current token kind if there were no errors and TokenUndef otherwise +func (r *Lexer) CurrentToken() TokenKind { + if r.token.kind == TokenUndef && r.Ok() { + r.FetchToken() + } + + if !r.Ok() { + return TokenUndef + } + + return r.token.kind +} diff --git a/vendor/github.com/mailru/easyjson/jwriter/writer.go b/vendor/github.com/mailru/easyjson/jwriter/writer.go index 2c5b20105bb9..34b0ade46852 100644 --- a/vendor/github.com/mailru/easyjson/jwriter/writer.go +++ b/vendor/github.com/mailru/easyjson/jwriter/writer.go @@ -67,6 +67,18 @@ func (w *Writer) RawString(s string) { w.Buffer.AppendString(s) } +// RawBytesString appends string from bytes to the buffer. +func (w *Writer) RawBytesString(data []byte, err error) { + switch { + case w.Error != nil: + return + case err != nil: + w.Error = err + default: + w.String(string(data)) + } +} + // Raw appends raw binary data to the buffer or sets the error if it is given. Useful for // calling with results of MarshalJSON-like functions. func (w *Writer) Raw(data []byte, err error) { diff --git a/vendor/github.com/mailru/easyjson/raw.go b/vendor/github.com/mailru/easyjson/raw.go index 81bd002e19f8..ee7367ae5f95 100644 --- a/vendor/github.com/mailru/easyjson/raw.go +++ b/vendor/github.com/mailru/easyjson/raw.go @@ -25,7 +25,8 @@ func (v *RawMessage) UnmarshalEasyJSON(l *jlexer.Lexer) { // UnmarshalJSON implements encoding/json.Unmarshaler interface. func (v *RawMessage) UnmarshalJSON(data []byte) error { - *v = data + *v = make([]byte, len(data)) + copy(*v, data) return nil } diff --git a/vendor/github.com/deepmap/oapi-codegen/LICENSE b/vendor/github.com/oapi-codegen/runtime/LICENSE similarity index 100% rename from vendor/github.com/deepmap/oapi-codegen/LICENSE rename to vendor/github.com/oapi-codegen/runtime/LICENSE diff --git a/vendor/github.com/oapi-codegen/runtime/Makefile b/vendor/github.com/oapi-codegen/runtime/Makefile new file mode 100644 index 000000000000..05871ef17d0d --- /dev/null +++ b/vendor/github.com/oapi-codegen/runtime/Makefile @@ -0,0 +1,32 @@ +GOBASE=$(shell pwd) +GOBIN=$(GOBASE)/bin + +help: + @echo "This is a helper makefile for oapi-codegen" + @echo "Targets:" + @echo " generate: regenerate all generated files" + @echo " test: run all tests" + @echo " gin_example generate gin example server code" + @echo " tidy tidy go mod" + +$(GOBIN)/golangci-lint: + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GOBIN) v1.54.0 + +.PHONY: tools +tools: $(GOBIN)/golangci-lint + +lint: tools + $(GOBIN)/golangci-lint run ./... + +lint-ci: tools + $(GOBIN)/golangci-lint run ./... --out-format=github-actions --timeout=5m + +generate: + go generate ./... + +test: + go test -cover ./... + +tidy: + @echo "tidy..." + go mod tidy diff --git a/vendor/github.com/oapi-codegen/runtime/README.md b/vendor/github.com/oapi-codegen/runtime/README.md new file mode 100644 index 000000000000..7392812eb08d --- /dev/null +++ b/vendor/github.com/oapi-codegen/runtime/README.md @@ -0,0 +1,6 @@ +# oapi-codegen/runtime + +⚠️ This README may be for the latest development version, which may +contain unreleased changes. Please ensure you're looking at the README for the latest release version. + +This provides any runtime-specific code that the generated code that oapi-codegen generates may need, and therefore is expected to be used with [deepmap/oapi-codegen](https://github.com/deepmap/oapi-codegen). diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bind.go b/vendor/github.com/oapi-codegen/runtime/bind.go similarity index 99% rename from vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bind.go rename to vendor/github.com/oapi-codegen/runtime/bind.go index 3e2a689cd168..1551250d2171 100644 --- a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bind.go +++ b/vendor/github.com/oapi-codegen/runtime/bind.go @@ -21,4 +21,4 @@ package runtime // Binder implements Bind("") as a no-op. type Binder interface { Bind(src string) error -} \ No newline at end of file +} diff --git a/vendor/github.com/oapi-codegen/runtime/bindform.go b/vendor/github.com/oapi-codegen/runtime/bindform.go new file mode 100644 index 000000000000..e51ba26ab4ed --- /dev/null +++ b/vendor/github.com/oapi-codegen/runtime/bindform.go @@ -0,0 +1,309 @@ +package runtime + +import ( + "encoding/json" + "errors" + "fmt" + "mime/multipart" + "net/url" + "reflect" + "strconv" + "strings" + + "github.com/oapi-codegen/runtime/types" +) + +const tagName = "json" +const jsonContentType = "application/json" + +type RequestBodyEncoding struct { + ContentType string + Style string + Explode *bool +} + +func BindMultipart(ptr interface{}, reader multipart.Reader) error { + const defaultMemory = 32 << 20 + form, err := reader.ReadForm(defaultMemory) + if err != nil { + return err + } + return BindForm(ptr, form.Value, form.File, nil) +} + +func BindForm(ptr interface{}, form map[string][]string, files map[string][]*multipart.FileHeader, encodings map[string]RequestBodyEncoding) error { + ptrVal := reflect.Indirect(reflect.ValueOf(ptr)) + if ptrVal.Kind() != reflect.Struct { + return errors.New("form data body should be a struct") + } + tValue := ptrVal.Type() + + for i := 0; i < tValue.NumField(); i++ { + field := ptrVal.Field(i) + tag := tValue.Field(i).Tag.Get(tagName) + if !field.CanInterface() || tag == "-" { + continue + } + tag = strings.Split(tag, ",")[0] // extract the name of the tag + if encoding, ok := encodings[tag]; ok { + // custom encoding + values := form[tag] + if len(values) == 0 { + continue + } + value := values[0] + if encoding.ContentType != "" { + if strings.HasPrefix(encoding.ContentType, jsonContentType) { + if err := json.Unmarshal([]byte(value), ptr); err != nil { + return err + } + } + return errors.New("unsupported encoding, only application/json is supported") + } else { + var explode bool + if encoding.Explode != nil { + explode = *encoding.Explode + } + if err := BindStyledParameterWithLocation(encoding.Style, explode, tag, ParamLocationUndefined, value, field.Addr().Interface()); err != nil { + return err + } + } + } else { + // regular form data + if _, err := bindFormImpl(field, form, files, tag); err != nil { + return err + } + } + } + + return nil +} + +func MarshalForm(ptr interface{}, encodings map[string]RequestBodyEncoding) (url.Values, error) { + ptrVal := reflect.Indirect(reflect.ValueOf(ptr)) + if ptrVal.Kind() != reflect.Struct { + return nil, errors.New("form data body should be a struct") + } + tValue := ptrVal.Type() + result := make(url.Values) + for i := 0; i < tValue.NumField(); i++ { + field := ptrVal.Field(i) + tag := tValue.Field(i).Tag.Get(tagName) + if !field.CanInterface() || tag == "-" { + continue + } + omitEmpty := strings.HasSuffix(tag, ",omitempty") + if omitEmpty && field.IsZero() { + continue + } + tag = strings.Split(tag, ",")[0] // extract the name of the tag + if encoding, ok := encodings[tag]; ok && encoding.ContentType != "" { + if strings.HasPrefix(encoding.ContentType, jsonContentType) { + if data, err := json.Marshal(field); err != nil { //nolint:staticcheck + return nil, err + } else { + result[tag] = append(result[tag], string(data)) + } + } + return nil, errors.New("unsupported encoding, only application/json is supported") + } else { + marshalFormImpl(field, result, tag) + } + } + return result, nil +} + +func bindFormImpl(v reflect.Value, form map[string][]string, files map[string][]*multipart.FileHeader, name string) (bool, error) { + var hasData bool + switch v.Kind() { + case reflect.Interface: + return bindFormImpl(v.Elem(), form, files, name) + case reflect.Ptr: + ptrData := v.Elem() + if !ptrData.IsValid() { + ptrData = reflect.New(v.Type().Elem()) + } + ptrHasData, err := bindFormImpl(ptrData, form, files, name) + if err == nil && ptrHasData && !v.Elem().IsValid() { + v.Set(ptrData) + } + return ptrHasData, err + case reflect.Slice: + if files := append(files[name], files[name+"[]"]...); len(files) != 0 { + if _, ok := v.Interface().([]types.File); ok { + result := make([]types.File, len(files)) + for i, file := range files { + result[i].InitFromMultipart(file) + } + v.Set(reflect.ValueOf(result)) + hasData = true + } + } + indexedElementsCount := indexedElementsCount(form, files, name) + items := append(form[name], form[name+"[]"]...) + if indexedElementsCount+len(items) != 0 { + result := reflect.MakeSlice(v.Type(), indexedElementsCount+len(items), indexedElementsCount+len(items)) + for i := 0; i < indexedElementsCount; i++ { + if _, err := bindFormImpl(result.Index(i), form, files, fmt.Sprintf("%s[%v]", name, i)); err != nil { + return false, err + } + } + for i, item := range items { + if err := BindStringToObject(item, result.Index(indexedElementsCount+i).Addr().Interface()); err != nil { + return false, err + } + } + v.Set(result) + hasData = true + } + case reflect.Struct: + if files := files[name]; len(files) != 0 { + if file, ok := v.Interface().(types.File); ok { + file.InitFromMultipart(files[0]) + v.Set(reflect.ValueOf(file)) + return true, nil + } + } + for i := 0; i < v.NumField(); i++ { + field := v.Type().Field(i) + tag := field.Tag.Get(tagName) + if field.Name == "AdditionalProperties" && field.Type.Kind() == reflect.Map && tag == "-" { + additionalPropertiesHasData, err := bindAdditionalProperties(v.Field(i), v, form, files, name) + if err != nil { + return false, err + } + hasData = hasData || additionalPropertiesHasData + } + if !v.Field(i).CanInterface() || tag == "-" { + continue + } + tag = strings.Split(tag, ",")[0] // extract the name of the tag + fieldHasData, err := bindFormImpl(v.Field(i), form, files, fmt.Sprintf("%s[%s]", name, tag)) + if err != nil { + return false, err + } + hasData = hasData || fieldHasData + } + return hasData, nil + default: + value := form[name] + if len(value) != 0 { + return true, BindStringToObject(value[0], v.Addr().Interface()) + } + } + return hasData, nil +} + +func indexedElementsCount(form map[string][]string, files map[string][]*multipart.FileHeader, name string) int { + name += "[" + maxIndex := -1 + for k := range form { + if strings.HasPrefix(k, name) { + str := strings.TrimPrefix(k, name) + str = str[:strings.Index(str, "]")] + if idx, err := strconv.Atoi(str); err == nil { + if idx > maxIndex { + maxIndex = idx + } + } + } + } + for k := range files { + if strings.HasPrefix(k, name) { + str := strings.TrimPrefix(k, name) + str = str[:strings.Index(str, "]")] + if idx, err := strconv.Atoi(str); err == nil { + if idx > maxIndex { + maxIndex = idx + } + } + } + } + return maxIndex + 1 +} + +func bindAdditionalProperties(additionalProperties reflect.Value, parentStruct reflect.Value, form map[string][]string, files map[string][]*multipart.FileHeader, name string) (bool, error) { + hasData := false + valueType := additionalProperties.Type().Elem() + + // store all fixed properties in a set + fieldsSet := make(map[string]struct{}) + for i := 0; i < parentStruct.NumField(); i++ { + tag := parentStruct.Type().Field(i).Tag.Get(tagName) + if !parentStruct.Field(i).CanInterface() || tag == "-" { + continue + } + tag = strings.Split(tag, ",")[0] + fieldsSet[tag] = struct{}{} + } + + result := reflect.MakeMap(additionalProperties.Type()) + for k := range form { + if strings.HasPrefix(k, name+"[") { + key := strings.TrimPrefix(k, name+"[") + key = key[:strings.Index(key, "]")] + if _, ok := fieldsSet[key]; ok { + continue + } + value := reflect.New(valueType) + ptrHasData, err := bindFormImpl(value, form, files, fmt.Sprintf("%s[%s]", name, key)) + if err != nil { + return false, err + } + result.SetMapIndex(reflect.ValueOf(key), value.Elem()) + hasData = hasData || ptrHasData + } + } + for k := range files { + if strings.HasPrefix(k, name+"[") { + key := strings.TrimPrefix(k, name+"[") + key = key[:strings.Index(key, "]")] + if _, ok := fieldsSet[key]; ok { + continue + } + value := reflect.New(valueType) + result.SetMapIndex(reflect.ValueOf(key), value) + ptrHasData, err := bindFormImpl(value, form, files, fmt.Sprintf("%s[%s]", name, key)) + if err != nil { + return false, err + } + result.SetMapIndex(reflect.ValueOf(key), value.Elem()) + hasData = hasData || ptrHasData + } + } + if hasData { + additionalProperties.Set(result) + } + return hasData, nil +} + +func marshalFormImpl(v reflect.Value, result url.Values, name string) { + switch v.Kind() { + case reflect.Interface, reflect.Ptr: + marshalFormImpl(v.Elem(), result, name) + case reflect.Slice: + for i := 0; i < v.Len(); i++ { + elem := v.Index(i) + marshalFormImpl(elem, result, fmt.Sprintf("%s[%v]", name, i)) + } + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + field := v.Type().Field(i) + tag := field.Tag.Get(tagName) + if field.Name == "AdditionalProperties" && tag == "-" { + iter := v.MapRange() + for iter.Next() { + marshalFormImpl(iter.Value(), result, fmt.Sprintf("%s[%s]", name, iter.Key().String())) + } + continue + } + if !v.Field(i).CanInterface() || tag == "-" { + continue + } + tag = strings.Split(tag, ",")[0] // extract the name of the tag + marshalFormImpl(v.Field(i), result, fmt.Sprintf("%s[%s]", name, tag)) + } + default: + result[name] = append(result[name], fmt.Sprint(v.Interface())) + } +} diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindparam.go b/vendor/github.com/oapi-codegen/runtime/bindparam.go similarity index 90% rename from vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindparam.go rename to vendor/github.com/oapi-codegen/runtime/bindparam.go index 751cc7d25139..d7e56d3ce9f3 100644 --- a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindparam.go +++ b/vendor/github.com/oapi-codegen/runtime/bindparam.go @@ -16,18 +16,17 @@ package runtime import ( "encoding" "encoding/json" + "errors" "fmt" "net/url" "reflect" "strings" "time" - "github.com/pkg/errors" - - "github.com/deepmap/oapi-codegen/pkg/types" + "github.com/oapi-codegen/runtime/types" ) -// This function binds a parameter as described in the Path Parameters +// BindStyledParameter binds a parameter as described in the Path Parameters // section here to a Go object: // https://swagger.io/docs/specification/serialization/ // It is a backward compatible function to clients generated with codegen @@ -37,7 +36,7 @@ func BindStyledParameter(style string, explode bool, paramName string, return BindStyledParameterWithLocation(style, explode, paramName, ParamLocationUndefined, value, dest) } -// This function binds a parameter as described in the Path Parameters +// BindStyledParameterWithLocation binds a parameter as described in the Path Parameters // section here to a Go object: // https://swagger.io/docs/specification/serialization/ func BindStyledParameterWithLocation(style string, explode bool, paramName string, @@ -213,7 +212,7 @@ func bindSplitPartsToDestinationArray(parts []string, dest interface{}) error { for i, p := range parts { err := BindStringToObject(p, newArray.Index(i).Addr().Interface()) if err != nil { - return fmt.Errorf("error setting array element: %s", err) + return fmt.Errorf("error setting array element: %w", err) } } v.Set(newArray) @@ -264,7 +263,7 @@ func bindSplitPartsToDestinationStruct(paramName string, parts []string, explode return nil } -// This works much like BindStyledParameter, however it takes a query argument +// BindQueryParameter works much like BindStyledParameter, however it takes a query argument // input array from the url package, since query arguments come through a // different path than the styled arguments. They're also exceptionally fussy. // For example, consider the exploded and unexploded form parameter examples: @@ -337,10 +336,12 @@ func BindQueryParameter(style string, explode bool, required bool, paramName str case reflect.Slice: // In the slice case, we simply use the arguments provided by // http library. + if !found { if required { return fmt.Errorf("query parameter '%s' is required", paramName) } else { + // If an optional parameter is not found, we do nothing, return nil } } @@ -350,7 +351,13 @@ func BindQueryParameter(style string, explode bool, required bool, paramName str // form style object binding doesn't tell us which arguments // in the query string correspond to the object's fields. We'll // try to bind field by field. - err = bindParamsToExplodedObject(paramName, queryParams, output) + var fieldsPresent bool + fieldsPresent, err = bindParamsToExplodedObject(paramName, queryParams, output) + // If no fields were set, and there is no error, we will not fall + // through to assign the destination. + if !fieldsPresent { + return nil + } default: // Primitive object case. We expect to have 1 value to // unmarshal. @@ -364,6 +371,15 @@ func BindQueryParameter(style string, explode bool, required bool, paramName str if len(values) != 1 { return fmt.Errorf("multiple values for single value parameter '%s'", paramName) } + + if !found { + if required { + return fmt.Errorf("query parameter '%s' is required", paramName) + } else { + // If an optional parameter is not found, we do nothing, + return nil + } + } err = BindStringToObject(values[0], output) } if err != nil { @@ -428,21 +444,28 @@ func BindQueryParameter(style string, explode bool, required bool, paramName str } } -// This function reflects the destination structure, and pulls the value for +// bindParamsToExplodedObject reflects the destination structure, and pulls the value for // each settable field from the given parameters map. This is to deal with the // exploded form styled object which may occupy any number of parameter names. // We don't try to be smart here, if the field exists as a query argument, -// set its value. -func bindParamsToExplodedObject(paramName string, values url.Values, dest interface{}) error { +// set its value. This function returns a boolean, telling us whether there was +// anything to bind. There will be nothing to bind if a parameter isn't found by name, +// or none of an exploded object's fields are present. +func bindParamsToExplodedObject(paramName string, values url.Values, dest interface{}) (bool, error) { // Dereference pointers to their destination values binder, v, t := indirect(dest) if binder != nil { - return BindStringToObject(values.Get(paramName), dest) + _, found := values[paramName] + if !found { + return false, nil + } + return true, BindStringToObject(values.Get(paramName), dest) } if t.Kind() != reflect.Struct { - return fmt.Errorf("unmarshaling query arg '%s' into wrong type", paramName) + return false, fmt.Errorf("unmarshaling query arg '%s' into wrong type", paramName) } + fieldsPresent := false for i := 0; i < t.NumField(); i++ { fieldT := t.Field(i) @@ -467,15 +490,16 @@ func bindParamsToExplodedObject(paramName string, values url.Values, dest interf fieldVal, found := values[fieldName] if found { if len(fieldVal) != 1 { - return fmt.Errorf("field '%s' specified multiple times for param '%s'", fieldName, paramName) + return false, fmt.Errorf("field '%s' specified multiple times for param '%s'", fieldName, paramName) } err := BindStringToObject(fieldVal[0], v.Field(i).Addr().Interface()) if err != nil { - return fmt.Errorf("could not bind query arg '%s' to request object: %s'", paramName, err) + return false, fmt.Errorf("could not bind query arg '%s' to request object: %s'", paramName, err) } + fieldsPresent = true } } - return nil + return fieldsPresent, nil } // indirect diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindstring.go b/vendor/github.com/oapi-codegen/runtime/bindstring.go similarity index 80% rename from vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindstring.go rename to vendor/github.com/oapi-codegen/runtime/bindstring.go index e75964b660e7..c88fdc20c265 100644 --- a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindstring.go +++ b/vendor/github.com/oapi-codegen/runtime/bindstring.go @@ -14,16 +14,17 @@ package runtime import ( + "encoding" "errors" "fmt" "reflect" "strconv" "time" - "github.com/deepmap/oapi-codegen/pkg/types" + "github.com/oapi-codegen/runtime/types" ) -// This function takes a string, and attempts to assign it to the destination +// BindStringToObject takes a string, and attempts to assign it to the destination // interface via whatever type conversion is necessary. We have to do this // via reflection instead of a much simpler type switch so that we can handle // type aliases. This function was the easy way out, the better way, since we @@ -41,6 +42,16 @@ func BindStringToObject(src string, dst interface{}) error { t = v.Type() } + // For some optional args + if t.Kind() == reflect.Ptr { + if v.IsNil() { + v.Set(reflect.New(t.Elem())) + } + + v = reflect.Indirect(v) + t = v.Type() + } + // The resulting type must be settable. reflect will catch issues like // passing the destination by value. if !v.CanSet() { @@ -52,12 +63,20 @@ func BindStringToObject(src string, dst interface{}) error { var val int64 val, err = strconv.ParseInt(src, 10, 64) if err == nil { - v.SetInt(val) + if v.OverflowInt(val) { + err = fmt.Errorf("value '%s' overflows destination of type: %s", src, t.Kind()) + } + if err == nil { + v.SetInt(val) + } } case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: var val uint64 val, err = strconv.ParseUint(src, 10, 64) if err == nil { + if v.OverflowUint(val) { + err = fmt.Errorf("value '%s' overflows destination of type: %s", src, t.Kind()) + } v.SetUint(val) } case reflect.String: @@ -67,6 +86,9 @@ func BindStringToObject(src string, dst interface{}) error { var val float64 val, err = strconv.ParseFloat(src, 64) if err == nil { + if v.OverflowFloat(val) { + err = fmt.Errorf("value '%s' overflows destination of type: %s", src, t.Kind()) + } v.SetFloat(val) } case reflect.Bool: @@ -75,6 +97,15 @@ func BindStringToObject(src string, dst interface{}) error { if err == nil { v.SetBool(val) } + case reflect.Array: + if tu, ok := dst.(encoding.TextUnmarshaler); ok { + if err := tu.UnmarshalText([]byte(src)); err != nil { + return fmt.Errorf("error unmarshaling '%s' text as %T: %s", src, dst, err) + } + + return nil + } + fallthrough case reflect.Struct: // if this is not of type Time or of type Date look to see if this is of type Binder. if dstType, ok := dst.(Binder); ok { @@ -137,7 +168,7 @@ func BindStringToObject(src string, dst interface{}) error { err = fmt.Errorf("can not bind to destination of type: %s", t.Kind()) } if err != nil { - return fmt.Errorf("error binding string parameter: %s", err) + return fmt.Errorf("error binding string parameter: %w", err) } return nil } diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/deepobject.go b/vendor/github.com/oapi-codegen/runtime/deepobject.go similarity index 86% rename from vendor/github.com/deepmap/oapi-codegen/pkg/runtime/deepobject.go rename to vendor/github.com/oapi-codegen/runtime/deepobject.go index e13c795f8716..1be761e64a83 100644 --- a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/deepobject.go +++ b/vendor/github.com/oapi-codegen/runtime/deepobject.go @@ -2,8 +2,8 @@ package runtime import ( "encoding/json" + "errors" "fmt" - "github.com/deepmap/oapi-codegen/pkg/types" "net/url" "reflect" "sort" @@ -11,7 +11,7 @@ import ( "strings" "time" - "github.com/pkg/errors" + "github.com/oapi-codegen/runtime/types" ) func marshalDeepObject(in interface{}, path []string) ([]string, error) { @@ -25,7 +25,7 @@ func marshalDeepObject(in interface{}, path []string) ([]string, error) { newPath := append(path, strconv.Itoa(i)) fields, err := marshalDeepObject(iface, newPath) if err != nil { - return nil, errors.Wrap(err, "error traversing array") + return nil, fmt.Errorf("error traversing array: %w", err) } result = append(result, fields...) } @@ -45,7 +45,7 @@ func marshalDeepObject(in interface{}, path []string) ([]string, error) { newPath := append(path, k) fields, err := marshalDeepObject(t[k], newPath) if err != nil { - return nil, errors.Wrap(err, "error traversing map") + return nil, fmt.Errorf("error traversing map: %w", err) } result = append(result, fields...) } @@ -69,16 +69,16 @@ func MarshalDeepObject(i interface{}, paramName string) (string, error) { // but it's complicated, error-prone code. buf, err := json.Marshal(i) if err != nil { - return "", errors.Wrap(err, "failed to marshal input to JSON") + return "", fmt.Errorf("failed to marshal input to JSON: %w", err) } var i2 interface{} err = json.Unmarshal(buf, &i2) if err != nil { - return "", errors.Wrap(err, "failed to unmarshal JSON") + return "", fmt.Errorf("failed to unmarshal JSON: %w", err) } fields, err := marshalDeepObject(i2, nil) if err != nil { - return "", errors.Wrap(err, "error traversing JSON structure") + return "", fmt.Errorf("error traversing JSON structure: %w", err) } // Prefix the param name to each subscripted field. @@ -152,7 +152,7 @@ func UnmarshalDeepObject(dst interface{}, paramName string, params url.Values) e fieldPaths := makeFieldOrValue(paths, fieldValues) err := assignPathValues(dst, fieldPaths) if err != nil { - return errors.Wrap(err, "error assigning value to destination") + return fmt.Errorf("error assigning value to destination: %w", err) } return nil @@ -200,12 +200,25 @@ func assignPathValues(dst interface{}, pathValues fieldOrValue) error { it := iv.Type() switch it.Kind() { + case reflect.Map: + dstMap := reflect.MakeMap(iv.Type()) + for key, value := range pathValues.fields { + dstKey := reflect.ValueOf(key) + dstVal := reflect.New(iv.Type().Elem()) + err := assignPathValues(dstVal.Interface(), value) + if err != nil { + return fmt.Errorf("error binding map: %w", err) + } + dstMap.SetMapIndex(dstKey, dstVal.Elem()) + } + iv.Set(dstMap) + return nil case reflect.Slice: sliceLength := len(pathValues.fields) dstSlice := reflect.MakeSlice(it, sliceLength, sliceLength) err := assignSlice(dstSlice, pathValues) if err != nil { - return errors.Wrap(err, "error assigning slice") + return fmt.Errorf("error assigning slice: %w", err) } iv.Set(dstSlice) return nil @@ -225,7 +238,7 @@ func assignPathValues(dst interface{}, pathValues fieldOrValue) error { var err error date.Time, err = time.Parse(types.DateFormat, pathValues.value) if err != nil { - return errors.Wrap(err, "invalid date format") + return fmt.Errorf("invalid date format: %w", err) } dst := iv if it != reflect.TypeOf(types.Date{}) { @@ -242,11 +255,12 @@ func assignPathValues(dst interface{}, pathValues fieldOrValue) error { tm, err = time.Parse(time.RFC3339Nano, pathValues.value) if err != nil { // Fall back to parsing it as a date. - tm, err = time.Parse(types.DateFormat, pathValues.value) + // TODO: why is this marked as an ineffassign? + tm, err = time.Parse(types.DateFormat, pathValues.value) //nolint:ineffassign,staticcheck if err != nil { - return fmt.Errorf("error parsing tim as RFC3339 or 2006-01-02 time: %s", err) + return fmt.Errorf("error parsing '%s' as RFC3339 or 2006-01-02 time: %s", pathValues.value, err) } - return errors.Wrap(err, "invalid date format") + return fmt.Errorf("invalid date format: %w", err) } dst := iv if it != reflect.TypeOf(time.Time{}) { @@ -259,7 +273,7 @@ func assignPathValues(dst interface{}, pathValues fieldOrValue) error { } fieldMap, err := fieldIndicesByJsonTag(iv.Interface()) if err != nil { - return errors.Wrap(err, "failed enumerating fields") + return fmt.Errorf("failed enumerating fields: %w", err) } for _, fieldName := range sortedFieldOrValueKeys(pathValues.fields) { fieldValue := pathValues.fields[fieldName] @@ -270,7 +284,7 @@ func assignPathValues(dst interface{}, pathValues fieldOrValue) error { field := iv.Field(fieldIndex) err = assignPathValues(field.Addr().Interface(), fieldValue) if err != nil { - return errors.Wrapf(err, "error assigning field [%s]", fieldName) + return fmt.Errorf("error assigning field [%s]: %w", fieldName, err) } } return nil @@ -340,7 +354,7 @@ func assignSlice(dst reflect.Value, pathValues fieldOrValue) error { dstElem := dst.Index(i).Addr() err := assignPathValues(dstElem.Interface(), fieldOrValue{value: values[i]}) if err != nil { - return errors.Wrap(err, "error binding array") + return fmt.Errorf("error binding array: %w", err) } } diff --git a/vendor/github.com/oapi-codegen/runtime/jsonmerge.go b/vendor/github.com/oapi-codegen/runtime/jsonmerge.go new file mode 100644 index 000000000000..155abfbeb6a6 --- /dev/null +++ b/vendor/github.com/oapi-codegen/runtime/jsonmerge.go @@ -0,0 +1,26 @@ +package runtime + +import ( + "encoding/json" + + "github.com/apapsch/go-jsonmerge/v2" +) + +// JsonMerge merges two JSON representation into a single object. `data` is the +// existing representation and `patch` is the new data to be merged in +func JsonMerge(data, patch json.RawMessage) (json.RawMessage, error) { + merger := jsonmerge.Merger{ + CopyNonexistent: true, + } + if data == nil { + data = []byte(`{}`) + } + if patch == nil { + patch = []byte(`{}`) + } + merged, err := merger.MergeBytes(data, patch) + if err != nil { + return nil, err + } + return merged, nil +} diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/styleparam.go b/vendor/github.com/oapi-codegen/runtime/styleparam.go similarity index 73% rename from vendor/github.com/deepmap/oapi-codegen/pkg/runtime/styleparam.go rename to vendor/github.com/oapi-codegen/runtime/styleparam.go index 446e42a1906a..57ed41b53373 100644 --- a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/styleparam.go +++ b/vendor/github.com/oapi-codegen/runtime/styleparam.go @@ -14,6 +14,10 @@ package runtime import ( + "bytes" + "encoding" + "encoding/json" + "errors" "fmt" "net/url" "reflect" @@ -22,12 +26,12 @@ import ( "strings" "time" - "github.com/pkg/errors" - - "github.com/deepmap/oapi-codegen/pkg/types" + "github.com/oapi-codegen/runtime/types" + "github.com/google/uuid" ) // Parameter escaping works differently based on where a header is found + type ParamLocation int const ( @@ -38,7 +42,7 @@ const ( ParamLocationCookie ) -// This function is used by older generated code, and must remain compatible +// StyleParam is used by older generated code, and must remain compatible // with that code. It is not to be used in new templates. Please see the // function below, which can specialize its output based on the location of // the parameter. @@ -63,6 +67,25 @@ func StyleParamWithLocation(style string, explode bool, paramName string, paramL t = v.Type() } + // If the value implements encoding.TextMarshaler we use it for marshaling + // https://github.com/deepmap/oapi-codegen/issues/504 + if tu, ok := value.(encoding.TextMarshaler); ok { + t := reflect.Indirect(reflect.ValueOf(value)).Type() + convertableToTime := t.ConvertibleTo(reflect.TypeOf(time.Time{})) + convertableToDate := t.ConvertibleTo(reflect.TypeOf(types.Date{})) + + // Since both time.Time and types.Date implement encoding.TextMarshaler + // we should avoid calling theirs MarshalText() + if !convertableToTime && !convertableToDate { + b, err := tu.MarshalText() + if err != nil { + return "", fmt.Errorf("error marshaling '%s' as text: %s", value, err) + } + + return stylePrimitive(style, explode, paramName, paramLocation, string(b)) + } + } + switch t.Kind() { case reflect.Slice: n := v.Len() @@ -159,9 +182,9 @@ func sortedKeys(strMap map[string]string) []string { return keys } -// This is a special case. The struct may be a date or time, in -// which case, marshal it in correct format. -func marshalDateTimeValue(value interface{}) (string, bool) { +// These are special cases. The value may be a date, time, or uuid, +// in which case, marshal it into the correct format. +func marshalKnownTypes(value interface{}) (string, bool) { v := reflect.Indirect(reflect.ValueOf(value)) t := v.Type() @@ -177,15 +200,20 @@ func marshalDateTimeValue(value interface{}) (string, bool) { return dateVal.Format(types.DateFormat), true } + if t.ConvertibleTo(reflect.TypeOf(types.UUID{})) { + u := v.Convert(reflect.TypeOf(types.UUID{})) + uuidVal := u.Interface().(types.UUID) + return uuidVal.String(), true + } + return "", false } func styleStruct(style string, explode bool, paramName string, paramLocation ParamLocation, value interface{}) (string, error) { - - if timeVal, ok := marshalDateTimeValue(value); ok { + if timeVal, ok := marshalKnownTypes(value); ok { styledVal, err := stylePrimitive(style, explode, paramName, paramLocation, timeVal) if err != nil { - return "", errors.Wrap(err, "failed to style time") + return "", fmt.Errorf("failed to style time: %w", err) } return styledVal, nil } @@ -197,6 +225,27 @@ func styleStruct(style string, explode bool, paramName string, paramLocation Par return MarshalDeepObject(value, paramName) } + // If input has Marshaler, such as object has Additional Property or AnyOf, + // We use this Marshaler and convert into interface{} before styling. + if m, ok := value.(json.Marshaler); ok { + buf, err := m.MarshalJSON() + if err != nil { + return "", fmt.Errorf("failed to marshal input to JSON: %w", err) + } + e := json.NewDecoder(bytes.NewReader(buf)) + e.UseNumber() + var i2 interface{} + err = e.Decode(&i2) + if err != nil { + return "", fmt.Errorf("failed to unmarshal JSON: %w", err) + } + s, err := StyleParamWithLocation(style, explode, paramName, paramLocation, i2) + if err != nil { + return "", fmt.Errorf("error style JSON structure: %w", err) + } + return s, nil + } + // Otherwise, we need to build a dictionary of the struct's fields. Each // field may only be a primitive value. v := reflect.ValueOf(value) @@ -349,14 +398,22 @@ func stylePrimitive(style string, explode bool, paramName string, paramLocation func primitiveToString(value interface{}) (string, error) { var output string + // sometimes time and date used like primitive types + // it can happen if paramether is object and has time or date as field + if res, ok := marshalKnownTypes(value); ok { + return res, nil + } + // Values may come in by pointer for optionals, so make sure to dereferene. v := reflect.Indirect(reflect.ValueOf(value)) t := v.Type() kind := t.Kind() switch kind { - case reflect.Int8, reflect.Int32, reflect.Int64, reflect.Int: + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: output = strconv.FormatInt(v.Int(), 10) + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: + output = strconv.FormatUint(v.Uint(), 10) case reflect.Float64: output = strconv.FormatFloat(v.Float(), 'f', -1, 64) case reflect.Float32: @@ -369,13 +426,44 @@ func primitiveToString(value interface{}) (string, error) { } case reflect.String: output = v.String() + case reflect.Struct: + // If input has Marshaler, such as object has Additional Property or AnyOf, + // We use this Marshaler and convert into interface{} before styling. + if v, ok := value.(uuid.UUID); ok { + output = v.String() + break + } + if m, ok := value.(json.Marshaler); ok { + buf, err := m.MarshalJSON() + if err != nil { + return "", fmt.Errorf("failed to marshal input to JSON: %w", err) + } + e := json.NewDecoder(bytes.NewReader(buf)) + e.UseNumber() + var i2 interface{} + err = e.Decode(&i2) + if err != nil { + return "", fmt.Errorf("failed to unmarshal JSON: %w", err) + } + output, err = primitiveToString(i2) + if err != nil { + return "", fmt.Errorf("error convert JSON structure: %w", err) + } + break + } + fallthrough default: - return "", fmt.Errorf("unsupported type %s", reflect.TypeOf(value).String()) + v, ok := value.(fmt.Stringer) + if !ok { + return "", fmt.Errorf("unsupported type %s", reflect.TypeOf(value).String()) + } + + output = v.String() } return output, nil } -// This function escapes a parameter value bas on the location of that parameter. +// escapeParameterString escapes a parameter value bas on the location of that parameter. // Query params and path params need different kinds of escaping, while header // and cookie params seem not to need escaping. func escapeParameterString(value string, paramLocation ParamLocation) string { diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/types/date.go b/vendor/github.com/oapi-codegen/runtime/types/date.go similarity index 66% rename from vendor/github.com/deepmap/oapi-codegen/pkg/types/date.go rename to vendor/github.com/oapi-codegen/runtime/types/date.go index bdf94a98a7ac..6ad852f637fa 100644 --- a/vendor/github.com/deepmap/oapi-codegen/pkg/types/date.go +++ b/vendor/github.com/oapi-codegen/runtime/types/date.go @@ -28,3 +28,16 @@ func (d *Date) UnmarshalJSON(data []byte) error { d.Time = parsed return nil } + +func (d Date) String() string { + return d.Time.Format(DateFormat) +} + +func (d *Date) UnmarshalText(data []byte) error { + parsed, err := time.Parse(DateFormat, string(data)) + if err != nil { + return err + } + d.Time = parsed + return nil +} diff --git a/vendor/github.com/oapi-codegen/runtime/types/email.go b/vendor/github.com/oapi-codegen/runtime/types/email.go new file mode 100644 index 000000000000..e4a1cbdae542 --- /dev/null +++ b/vendor/github.com/oapi-codegen/runtime/types/email.go @@ -0,0 +1,40 @@ +package types + +import ( + "encoding/json" + "errors" +) + +// ErrValidationEmail is the sentinel error returned when an email fails validation +var ErrValidationEmail = errors.New("email: failed to pass regex validation") + +// Email represents an email address. +// It is a string type that must pass regex validation before being marshalled +// to JSON or unmarshalled from JSON. +type Email string + +func (e Email) MarshalJSON() ([]byte, error) { + if !emailRegex.MatchString(string(e)) { + return nil, ErrValidationEmail + } + + return json.Marshal(string(e)) +} + +func (e *Email) UnmarshalJSON(data []byte) error { + if e == nil { + return nil + } + + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + + *e = Email(s) + if !emailRegex.MatchString(s) { + return ErrValidationEmail + } + + return nil +} diff --git a/vendor/github.com/oapi-codegen/runtime/types/file.go b/vendor/github.com/oapi-codegen/runtime/types/file.go new file mode 100644 index 000000000000..7b26a0d7dbf7 --- /dev/null +++ b/vendor/github.com/oapi-codegen/runtime/types/file.go @@ -0,0 +1,71 @@ +package types + +import ( + "bytes" + "encoding/json" + "io" + "mime/multipart" +) + +type File struct { + multipart *multipart.FileHeader + data []byte + filename string +} + +func (file *File) InitFromMultipart(header *multipart.FileHeader) { + file.multipart = header + file.data = nil + file.filename = "" +} + +func (file *File) InitFromBytes(data []byte, filename string) { + file.data = data + file.filename = filename + file.multipart = nil +} + +func (file File) MarshalJSON() ([]byte, error) { + b, err := file.Bytes() + if err != nil { + return nil, err + } + return json.Marshal(b) +} + +func (file *File) UnmarshalJSON(data []byte) error { + return json.Unmarshal(data, &file.data) +} + +func (file File) Bytes() ([]byte, error) { + if file.multipart != nil { + f, err := file.multipart.Open() + if err != nil { + return nil, err + } + defer func() { _ = f.Close() }() + return io.ReadAll(f) + } + return file.data, nil +} + +func (file File) Reader() (io.ReadCloser, error) { + if file.multipart != nil { + return file.multipart.Open() + } + return io.NopCloser(bytes.NewReader(file.data)), nil +} + +func (file File) Filename() string { + if file.multipart != nil { + return file.multipart.Filename + } + return file.filename +} + +func (file File) FileSize() int64 { + if file.multipart != nil { + return file.multipart.Size + } + return int64(len(file.data)) +} diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/types/regexes.go b/vendor/github.com/oapi-codegen/runtime/types/regexes.go similarity index 100% rename from vendor/github.com/deepmap/oapi-codegen/pkg/types/regexes.go rename to vendor/github.com/oapi-codegen/runtime/types/regexes.go diff --git a/vendor/github.com/oapi-codegen/runtime/types/uuid.go b/vendor/github.com/oapi-codegen/runtime/types/uuid.go new file mode 100644 index 000000000000..1c11f38ba06e --- /dev/null +++ b/vendor/github.com/oapi-codegen/runtime/types/uuid.go @@ -0,0 +1,7 @@ +package types + +import ( + "github.com/google/uuid" +) + +type UUID = uuid.UUID diff --git a/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go b/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go index 6f9e6fd3abff..581cf7cdfadf 100644 --- a/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go +++ b/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go @@ -59,13 +59,4 @@ const ( // AnnotationBaseImageName is the annotation key for the image reference of the image's base image. AnnotationBaseImageName = "org.opencontainers.image.base.name" - - // AnnotationArtifactCreated is the annotation key for the date and time on which the artifact was built, conforming to RFC 3339. - AnnotationArtifactCreated = "org.opencontainers.artifact.created" - - // AnnotationArtifactDescription is the annotation key for the human readable description for the artifact. - AnnotationArtifactDescription = "org.opencontainers.artifact.description" - - // AnnotationReferrersFiltersApplied is the annotation key for the comma separated list of filters applied by the registry in the referrers listing. - AnnotationReferrersFiltersApplied = "org.opencontainers.referrers.filtersApplied" ) diff --git a/vendor/github.com/opencontainers/image-spec/specs-go/v1/artifact.go b/vendor/github.com/opencontainers/image-spec/specs-go/v1/artifact.go deleted file mode 100644 index 03d76ce437ae..000000000000 --- a/vendor/github.com/opencontainers/image-spec/specs-go/v1/artifact.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2022 The Linux Foundation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v1 - -// Artifact describes an artifact manifest. -// This structure provides `application/vnd.oci.artifact.manifest.v1+json` mediatype when marshalled to JSON. -type Artifact struct { - // MediaType is the media type of the object this schema refers to. - MediaType string `json:"mediaType"` - - // ArtifactType is the IANA media type of the artifact this schema refers to. - ArtifactType string `json:"artifactType"` - - // Blobs is a collection of blobs referenced by this manifest. - Blobs []Descriptor `json:"blobs,omitempty"` - - // Subject (reference) is an optional link from the artifact to another manifest forming an association between the artifact and the other manifest. - Subject *Descriptor `json:"subject,omitempty"` - - // Annotations contains arbitrary metadata for the artifact manifest. - Annotations map[string]string `json:"annotations,omitempty"` -} diff --git a/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go b/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go index ffff4b6d1863..36b0aeb8f1fc 100644 --- a/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go +++ b/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go @@ -48,6 +48,17 @@ type ImageConfig struct { // StopSignal contains the system call signal that will be sent to the container to exit. StopSignal string `json:"StopSignal,omitempty"` + + // ArgsEscaped + // + // Deprecated: This field is present only for legacy compatibility with + // Docker and should not be used by new image builders. It is used by Docker + // for Windows images to indicate that the `Entrypoint` or `Cmd` or both, + // contains only a single element array, that is a pre-escaped, and combined + // into a single string `CommandLine`. If `true` the value in `Entrypoint` or + // `Cmd` should be used as-is to avoid double escaping. + // https://github.com/opencontainers/image-spec/pull/892 + ArgsEscaped bool `json:"ArgsEscaped,omitempty"` } // RootFS describes a layer content addresses @@ -86,22 +97,8 @@ type Image struct { // Author defines the name and/or email address of the person or entity which created and is responsible for maintaining the image. Author string `json:"author,omitempty"` - // Architecture is the CPU architecture which the binaries in this image are built to run on. - Architecture string `json:"architecture"` - - // Variant is the variant of the specified CPU architecture which image binaries are intended to run on. - Variant string `json:"variant,omitempty"` - - // OS is the name of the operating system which the image is built to run on. - OS string `json:"os"` - - // OSVersion is an optional field specifying the operating system - // version, for example on Windows `10.0.14393.1066`. - OSVersion string `json:"os.version,omitempty"` - - // OSFeatures is an optional field specifying an array of strings, - // each listing a required OS feature (for example on Windows `win32k`). - OSFeatures []string `json:"os.features,omitempty"` + // Platform describes the platform which the image in the manifest runs on. + Platform // Config defines the execution parameters which should be used as a base when running a container using the image. Config ImageConfig `json:"config,omitempty"` diff --git a/vendor/github.com/opencontainers/image-spec/specs-go/v1/descriptor.go b/vendor/github.com/opencontainers/image-spec/specs-go/v1/descriptor.go index 9654aa5af68a..1881b11814b0 100644 --- a/vendor/github.com/opencontainers/image-spec/specs-go/v1/descriptor.go +++ b/vendor/github.com/opencontainers/image-spec/specs-go/v1/descriptor.go @@ -21,7 +21,7 @@ import digest "github.com/opencontainers/go-digest" // when marshalled to JSON. type Descriptor struct { // MediaType is the media type of the object this schema refers to. - MediaType string `json:"mediaType,omitempty"` + MediaType string `json:"mediaType"` // Digest is the digest of the targeted content. Digest digest.Digest `json:"digest"` @@ -52,7 +52,7 @@ type Descriptor struct { // Platform describes the platform which the image in the manifest runs on. type Platform struct { // Architecture field specifies the CPU architecture, for example - // `amd64` or `ppc64`. + // `amd64` or `ppc64le`. Architecture string `json:"architecture"` // OS specifies the operating system, for example `linux` or `windows`. @@ -70,3 +70,11 @@ type Platform struct { // example `v7` to specify ARMv7 when architecture is `arm`. Variant string `json:"variant,omitempty"` } + +// DescriptorEmptyJSON is the descriptor of a blob with content of `{}`. +var DescriptorEmptyJSON = Descriptor{ + MediaType: MediaTypeEmptyJSON, + Digest: `sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a`, + Size: 2, + Data: []byte(`{}`), +} diff --git a/vendor/github.com/opencontainers/image-spec/specs-go/v1/index.go b/vendor/github.com/opencontainers/image-spec/specs-go/v1/index.go index ed4a56e59e85..e2bed9d4e469 100644 --- a/vendor/github.com/opencontainers/image-spec/specs-go/v1/index.go +++ b/vendor/github.com/opencontainers/image-spec/specs-go/v1/index.go @@ -24,9 +24,15 @@ type Index struct { // MediaType specifies the type of this document data structure e.g. `application/vnd.oci.image.index.v1+json` MediaType string `json:"mediaType,omitempty"` + // ArtifactType specifies the IANA media type of artifact when the manifest is used for an artifact. + ArtifactType string `json:"artifactType,omitempty"` + // Manifests references platform specific manifests. Manifests []Descriptor `json:"manifests"` + // Subject is an optional link from the image manifest to another manifest forming an association between the image manifest and the other manifest. + Subject *Descriptor `json:"subject,omitempty"` + // Annotations contains arbitrary metadata for the image index. Annotations map[string]string `json:"annotations,omitempty"` } diff --git a/vendor/github.com/opencontainers/image-spec/specs-go/v1/layout.go b/vendor/github.com/opencontainers/image-spec/specs-go/v1/layout.go index fc79e9e0d140..c5503cb3053b 100644 --- a/vendor/github.com/opencontainers/image-spec/specs-go/v1/layout.go +++ b/vendor/github.com/opencontainers/image-spec/specs-go/v1/layout.go @@ -15,10 +15,14 @@ package v1 const ( - // ImageLayoutFile is the file name of oci image layout file + // ImageLayoutFile is the file name containing ImageLayout in an OCI Image Layout ImageLayoutFile = "oci-layout" // ImageLayoutVersion is the version of ImageLayout ImageLayoutVersion = "1.0.0" + // ImageIndexFile is the file name of the entry point for references and descriptors in an OCI Image Layout + ImageIndexFile = "index.json" + // ImageBlobsDir is the directory name containing content addressable blobs in an OCI Image Layout + ImageBlobsDir = "blobs" ) // ImageLayout is the structure in the "oci-layout" file, found in the root diff --git a/vendor/github.com/opencontainers/image-spec/specs-go/v1/manifest.go b/vendor/github.com/opencontainers/image-spec/specs-go/v1/manifest.go index 730a09359b1c..26fec52a6bcf 100644 --- a/vendor/github.com/opencontainers/image-spec/specs-go/v1/manifest.go +++ b/vendor/github.com/opencontainers/image-spec/specs-go/v1/manifest.go @@ -23,6 +23,9 @@ type Manifest struct { // MediaType specifies the type of this document data structure e.g. `application/vnd.oci.image.manifest.v1+json` MediaType string `json:"mediaType,omitempty"` + // ArtifactType specifies the IANA media type of artifact when the manifest is used for an artifact. + ArtifactType string `json:"artifactType,omitempty"` + // Config references a configuration object for a container, by digest. // The referenced configuration object is a JSON blob that the runtime uses to set up the container. Config Descriptor `json:"config"` diff --git a/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go b/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go index 935b481e3ed5..ce8313e79621 100644 --- a/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go +++ b/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go @@ -21,12 +21,20 @@ const ( // MediaTypeLayoutHeader specifies the media type for the oci-layout. MediaTypeLayoutHeader = "application/vnd.oci.layout.header.v1+json" + // MediaTypeImageIndex specifies the media type for an image index. + MediaTypeImageIndex = "application/vnd.oci.image.index.v1+json" + // MediaTypeImageManifest specifies the media type for an image manifest. MediaTypeImageManifest = "application/vnd.oci.image.manifest.v1+json" - // MediaTypeImageIndex specifies the media type for an image index. - MediaTypeImageIndex = "application/vnd.oci.image.index.v1+json" + // MediaTypeImageConfig specifies the media type for the image configuration. + MediaTypeImageConfig = "application/vnd.oci.image.config.v1+json" + + // MediaTypeEmptyJSON specifies the media type for an unused blob containing the value "{}". + MediaTypeEmptyJSON = "application/vnd.oci.empty.v1+json" +) +const ( // MediaTypeImageLayer is the media type used for layers referenced by the manifest. MediaTypeImageLayer = "application/vnd.oci.image.layer.v1.tar" @@ -37,24 +45,41 @@ const ( // MediaTypeImageLayerZstd is the media type used for zstd compressed // layers referenced by the manifest. MediaTypeImageLayerZstd = "application/vnd.oci.image.layer.v1.tar+zstd" +) +// Non-distributable layer media-types. +// +// Deprecated: Non-distributable layers are deprecated, and not recommended +// for future use. Implementations SHOULD NOT produce new non-distributable +// layers. +// https://github.com/opencontainers/image-spec/pull/965 +const ( // MediaTypeImageLayerNonDistributable is the media type for layers referenced by // the manifest but with distribution restrictions. + // + // Deprecated: Non-distributable layers are deprecated, and not recommended + // for future use. Implementations SHOULD NOT produce new non-distributable + // layers. + // https://github.com/opencontainers/image-spec/pull/965 MediaTypeImageLayerNonDistributable = "application/vnd.oci.image.layer.nondistributable.v1.tar" // MediaTypeImageLayerNonDistributableGzip is the media type for // gzipped layers referenced by the manifest but with distribution // restrictions. + // + // Deprecated: Non-distributable layers are deprecated, and not recommended + // for future use. Implementations SHOULD NOT produce new non-distributable + // layers. + // https://github.com/opencontainers/image-spec/pull/965 MediaTypeImageLayerNonDistributableGzip = "application/vnd.oci.image.layer.nondistributable.v1.tar+gzip" // MediaTypeImageLayerNonDistributableZstd is the media type for zstd // compressed layers referenced by the manifest but with distribution // restrictions. + // + // Deprecated: Non-distributable layers are deprecated, and not recommended + // for future use. Implementations SHOULD NOT produce new non-distributable + // layers. + // https://github.com/opencontainers/image-spec/pull/965 MediaTypeImageLayerNonDistributableZstd = "application/vnd.oci.image.layer.nondistributable.v1.tar+zstd" - - // MediaTypeImageConfig specifies the media type for the image configuration. - MediaTypeImageConfig = "application/vnd.oci.image.config.v1+json" - - // MediaTypeArtifactManifest specifies the media type for a content descriptor. - MediaTypeArtifactManifest = "application/vnd.oci.artifact.manifest.v1+json" ) diff --git a/vendor/github.com/opencontainers/image-spec/specs-go/version.go b/vendor/github.com/opencontainers/image-spec/specs-go/version.go index d2790357964f..7069ae44d715 100644 --- a/vendor/github.com/opencontainers/image-spec/specs-go/version.go +++ b/vendor/github.com/opencontainers/image-spec/specs-go/version.go @@ -25,7 +25,7 @@ const ( VersionPatch = 0 // VersionDev indicates development branch. Releases will be empty string. - VersionDev = "-rc2" + VersionDev = "" ) // Version is the specification version that the package types support. diff --git a/vendor/github.com/prometheus/client_golang/NOTICE b/vendor/github.com/prometheus/client_golang/NOTICE index dd878a30ee9a..b9cc55abbb0a 100644 --- a/vendor/github.com/prometheus/client_golang/NOTICE +++ b/vendor/github.com/prometheus/client_golang/NOTICE @@ -16,8 +16,3 @@ Go support for Protocol Buffers - Google's data interchange format http://github.com/golang/protobuf/ Copyright 2010 The Go Authors See source code for license details. - -Support for streaming Protocol Buffer messages for the Go language (golang). -https://github.com/matttproud/golang_protobuf_extensions -Copyright 2013 Matt T. Proud -Licensed under the Apache License, Version 2.0 diff --git a/vendor/github.com/imdario/mergo/LICENSE b/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/LICENSE similarity index 92% rename from vendor/github.com/imdario/mergo/LICENSE rename to vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/LICENSE index 686680298da2..65d761bc9f28 100644 --- a/vendor/github.com/imdario/mergo/LICENSE +++ b/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/LICENSE @@ -1,5 +1,4 @@ -Copyright (c) 2013 Dario Castañé. All rights reserved. -Copyright (c) 2012 The Go Authors. All rights reserved. +Copyright (c) 2013 The Go Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header/header.go b/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header/header.go new file mode 100644 index 000000000000..8547c8dfd187 --- /dev/null +++ b/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header/header.go @@ -0,0 +1,145 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://developers.google.com/open-source/licenses/bsd. + +// Package header provides functions for parsing HTTP headers. +package header + +import ( + "net/http" + "strings" +) + +// Octet types from RFC 2616. +var octetTypes [256]octetType + +type octetType byte + +const ( + isToken octetType = 1 << iota + isSpace +) + +func init() { + // OCTET = + // CHAR = + // CTL = + // CR = + // LF = + // SP = + // HT = + // <"> = + // CRLF = CR LF + // LWS = [CRLF] 1*( SP | HT ) + // TEXT = + // separators = "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> + // | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT + // token = 1* + // qdtext = > + + for c := 0; c < 256; c++ { + var t octetType + isCtl := c <= 31 || c == 127 + isChar := 0 <= c && c <= 127 + isSeparator := strings.ContainsRune(" \t\"(),/:;<=>?@[]\\{}", rune(c)) + if strings.ContainsRune(" \t\r\n", rune(c)) { + t |= isSpace + } + if isChar && !isCtl && !isSeparator { + t |= isToken + } + octetTypes[c] = t + } +} + +// AcceptSpec describes an Accept* header. +type AcceptSpec struct { + Value string + Q float64 +} + +// ParseAccept parses Accept* headers. +func ParseAccept(header http.Header, key string) (specs []AcceptSpec) { +loop: + for _, s := range header[key] { + for { + var spec AcceptSpec + spec.Value, s = expectTokenSlash(s) + if spec.Value == "" { + continue loop + } + spec.Q = 1.0 + s = skipSpace(s) + if strings.HasPrefix(s, ";") { + s = skipSpace(s[1:]) + if !strings.HasPrefix(s, "q=") { + continue loop + } + spec.Q, s = expectQuality(s[2:]) + if spec.Q < 0.0 { + continue loop + } + } + specs = append(specs, spec) + s = skipSpace(s) + if !strings.HasPrefix(s, ",") { + continue loop + } + s = skipSpace(s[1:]) + } + } + return +} + +func skipSpace(s string) (rest string) { + i := 0 + for ; i < len(s); i++ { + if octetTypes[s[i]]&isSpace == 0 { + break + } + } + return s[i:] +} + +func expectTokenSlash(s string) (token, rest string) { + i := 0 + for ; i < len(s); i++ { + b := s[i] + if (octetTypes[b]&isToken == 0) && b != '/' { + break + } + } + return s[:i], s[i:] +} + +func expectQuality(s string) (q float64, rest string) { + switch { + case len(s) == 0: + return -1, "" + case s[0] == '0': + q = 0 + case s[0] == '1': + q = 1 + default: + return -1, "" + } + s = s[1:] + if !strings.HasPrefix(s, ".") { + return q, s + } + s = s[1:] + i := 0 + n := 0 + d := 1 + for ; i < len(s); i++ { + b := s[i] + if b < '0' || b > '9' { + break + } + n = n*10 + int(b) - '0' + d *= 10 + } + return q + float64(n)/float64(d), s[i:] +} diff --git a/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/negotiate.go b/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/negotiate.go new file mode 100644 index 000000000000..2e45780b74b9 --- /dev/null +++ b/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/negotiate.go @@ -0,0 +1,36 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://developers.google.com/open-source/licenses/bsd. + +package httputil + +import ( + "net/http" + + "github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header" +) + +// NegotiateContentEncoding returns the best offered content encoding for the +// request's Accept-Encoding header. If two offers match with equal weight and +// then the offer earlier in the list is preferred. If no offers are +// acceptable, then "" is returned. +func NegotiateContentEncoding(r *http.Request, offers []string) string { + bestOffer := "identity" + bestQ := -1.0 + specs := header.ParseAccept(r.Header, "Accept-Encoding") + for _, offer := range offers { + for _, spec := range specs { + if spec.Q > bestQ && + (spec.Value == "*" || spec.Value == offer) { + bestQ = spec.Q + bestOffer = offer + } + } + } + if bestQ == 0 { + bestOffer = "" + } + return bestOffer +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go index ad9a71a5e0d4..520cbd7d418f 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go @@ -22,13 +22,13 @@ import ( // goRuntimeMemStats provides the metrics initially provided by runtime.ReadMemStats. // From Go 1.17 those similar (and better) statistics are provided by runtime/metrics, so // while eval closure works on runtime.MemStats, the struct from Go 1.17+ is -// populated using runtime/metrics. +// populated using runtime/metrics. Those are the defaults we can't alter. func goRuntimeMemStats() memStatsMetrics { return memStatsMetrics{ { desc: NewDesc( memstatNamespace("alloc_bytes"), - "Number of bytes allocated and still in use.", + "Number of bytes allocated in heap and currently in use. Equals to /memory/classes/heap/objects:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.Alloc) }, @@ -36,7 +36,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("alloc_bytes_total"), - "Total number of bytes allocated, even if freed.", + "Total number of bytes allocated in heap until now, even if released already. Equals to /gc/heap/allocs:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.TotalAlloc) }, @@ -44,23 +44,16 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("sys_bytes"), - "Number of bytes obtained from system.", + "Number of bytes obtained from system. Equals to /memory/classes/total:byte.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.Sys) }, valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("lookups_total"), - "Total number of pointer lookups.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Lookups) }, - valType: CounterValue, }, { desc: NewDesc( memstatNamespace("mallocs_total"), - "Total number of mallocs.", + // TODO(bwplotka): We could add go_memstats_heap_objects, probably useful for discovery. Let's gather more feedback, kind of a waste of bytes for everybody for compatibility reasons to keep both, and we can't really rename/remove useful metric. + "Total number of heap objects allocated, both live and gc-ed. Semantically a counter version for go_memstats_heap_objects gauge. Equals to /gc/heap/allocs:objects + /gc/heap/tiny/allocs:objects.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.Mallocs) }, @@ -68,7 +61,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("frees_total"), - "Total number of frees.", + "Total number of heap objects frees. Equals to /gc/heap/frees:objects + /gc/heap/tiny/allocs:objects.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.Frees) }, @@ -76,7 +69,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("heap_alloc_bytes"), - "Number of heap bytes allocated and still in use.", + "Number of heap bytes allocated and currently in use, same as go_memstats_alloc_bytes. Equals to /memory/classes/heap/objects:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapAlloc) }, @@ -84,7 +77,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("heap_sys_bytes"), - "Number of heap bytes obtained from system.", + "Number of heap bytes obtained from system. Equals to /memory/classes/heap/objects:bytes + /memory/classes/heap/unused:bytes + /memory/classes/heap/released:bytes + /memory/classes/heap/free:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapSys) }, @@ -92,7 +85,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("heap_idle_bytes"), - "Number of heap bytes waiting to be used.", + "Number of heap bytes waiting to be used. Equals to /memory/classes/heap/released:bytes + /memory/classes/heap/free:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapIdle) }, @@ -100,7 +93,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("heap_inuse_bytes"), - "Number of heap bytes that are in use.", + "Number of heap bytes that are in use. Equals to /memory/classes/heap/objects:bytes + /memory/classes/heap/unused:bytes", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapInuse) }, @@ -108,7 +101,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("heap_released_bytes"), - "Number of heap bytes released to OS.", + "Number of heap bytes released to OS. Equals to /memory/classes/heap/released:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapReleased) }, @@ -116,7 +109,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("heap_objects"), - "Number of allocated objects.", + "Number of currently allocated objects. Equals to /gc/heap/objects:objects.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapObjects) }, @@ -124,7 +117,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("stack_inuse_bytes"), - "Number of bytes in use by the stack allocator.", + "Number of bytes obtained from system for stack allocator in non-CGO environments. Equals to /memory/classes/heap/stacks:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.StackInuse) }, @@ -132,7 +125,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("stack_sys_bytes"), - "Number of bytes obtained from system for stack allocator.", + "Number of bytes obtained from system for stack allocator. Equals to /memory/classes/heap/stacks:bytes + /memory/classes/os-stacks:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.StackSys) }, @@ -140,7 +133,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("mspan_inuse_bytes"), - "Number of bytes in use by mspan structures.", + "Number of bytes in use by mspan structures. Equals to /memory/classes/metadata/mspan/inuse:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.MSpanInuse) }, @@ -148,7 +141,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("mspan_sys_bytes"), - "Number of bytes used for mspan structures obtained from system.", + "Number of bytes used for mspan structures obtained from system. Equals to /memory/classes/metadata/mspan/inuse:bytes + /memory/classes/metadata/mspan/free:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.MSpanSys) }, @@ -156,7 +149,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("mcache_inuse_bytes"), - "Number of bytes in use by mcache structures.", + "Number of bytes in use by mcache structures. Equals to /memory/classes/metadata/mcache/inuse:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.MCacheInuse) }, @@ -164,7 +157,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("mcache_sys_bytes"), - "Number of bytes used for mcache structures obtained from system.", + "Number of bytes used for mcache structures obtained from system. Equals to /memory/classes/metadata/mcache/inuse:bytes + /memory/classes/metadata/mcache/free:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.MCacheSys) }, @@ -172,7 +165,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("buck_hash_sys_bytes"), - "Number of bytes used by the profiling bucket hash table.", + "Number of bytes used by the profiling bucket hash table. Equals to /memory/classes/profiling/buckets:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.BuckHashSys) }, @@ -180,7 +173,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("gc_sys_bytes"), - "Number of bytes used for garbage collection system metadata.", + "Number of bytes used for garbage collection system metadata. Equals to /memory/classes/metadata/other:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.GCSys) }, @@ -188,7 +181,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("other_sys_bytes"), - "Number of bytes used for other system allocations.", + "Number of bytes used for other system allocations. Equals to /memory/classes/other:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.OtherSys) }, @@ -196,7 +189,7 @@ func goRuntimeMemStats() memStatsMetrics { }, { desc: NewDesc( memstatNamespace("next_gc_bytes"), - "Number of heap bytes when next garbage collection will take place.", + "Number of heap bytes when next garbage collection will take place. Equals to /gc/heap/goal:bytes.", nil, nil, ), eval: func(ms *runtime.MemStats) float64 { return float64(ms.NextGC) }, @@ -225,7 +218,7 @@ func newBaseGoCollector() baseGoCollector { nil, nil), gcDesc: NewDesc( "go_gc_duration_seconds", - "A summary of the pause duration of garbage collection cycles.", + "A summary of the wall-time pause (stop-the-world) duration in garbage collection cycles.", nil, nil), gcLastTimeDesc: NewDesc( "go_memstats_last_gc_time_seconds", diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go index 2d8d9f64f430..511746417291 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go @@ -17,6 +17,7 @@ package prometheus import ( + "fmt" "math" "runtime" "runtime/metrics" @@ -153,7 +154,8 @@ func defaultGoCollectorOptions() internal.GoCollectorOptions { "/gc/heap/frees-by-size:bytes": goGCHeapFreesBytes, }, RuntimeMetricRules: []internal.GoCollectorRule{ - //{Matcher: regexp.MustCompile("")}, + // Recommended metrics we want by default from runtime/metrics. + {Matcher: internal.GoCollectorDefaultRuntimeMetrics}, }, } } @@ -203,6 +205,7 @@ func NewGoCollector(opts ...func(o *internal.GoCollectorOptions)) Collector { // to fail here. This condition is tested in TestExpectedRuntimeMetrics. continue } + help := attachOriginalName(d.Description.Description, d.Name) sampleBuf = append(sampleBuf, metrics.Sample{Name: d.Name}) sampleMap[d.Name] = &sampleBuf[len(sampleBuf)-1] @@ -214,7 +217,7 @@ func NewGoCollector(opts ...func(o *internal.GoCollectorOptions)) Collector { m = newBatchHistogram( NewDesc( BuildFQName(namespace, subsystem, name), - d.Description.Description, + help, nil, nil, ), @@ -226,7 +229,7 @@ func NewGoCollector(opts ...func(o *internal.GoCollectorOptions)) Collector { Namespace: namespace, Subsystem: subsystem, Name: name, - Help: d.Description.Description, + Help: help, }, ) } else { @@ -234,7 +237,7 @@ func NewGoCollector(opts ...func(o *internal.GoCollectorOptions)) Collector { Namespace: namespace, Subsystem: subsystem, Name: name, - Help: d.Description.Description, + Help: help, }) } metricSet = append(metricSet, m) @@ -284,6 +287,10 @@ func NewGoCollector(opts ...func(o *internal.GoCollectorOptions)) Collector { } } +func attachOriginalName(desc, origName string) string { + return fmt.Sprintf("%s Sourced from %s", desc, origName) +} + // Describe returns all descriptions of the collector. func (c *goCollector) Describe(ch chan<- *Desc) { c.base.Describe(ch) @@ -376,13 +383,13 @@ func unwrapScalarRMValue(v metrics.Value) float64 { // // This should never happen because we always populate our metric // set from the runtime/metrics package. - panic("unexpected unsupported metric") + panic("unexpected bad kind metric") default: // Unsupported metric kind. // // This should never happen because we check for this during initialization // and flag and filter metrics whose kinds we don't understand. - panic("unexpected unsupported metric kind") + panic(fmt.Sprintf("unexpected unsupported metric: %v", v.Kind())) } } diff --git a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go index b5c8bcb395aa..519db348a747 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go @@ -440,7 +440,7 @@ type HistogramOpts struct { // constant (or any negative float value). NativeHistogramZeroThreshold float64 - // The remaining fields define a strategy to limit the number of + // The next three fields define a strategy to limit the number of // populated sparse buckets. If NativeHistogramMaxBucketNumber is left // at zero, the number of buckets is not limited. (Note that this might // lead to unbounded memory consumption if the values observed by the @@ -473,6 +473,22 @@ type HistogramOpts struct { NativeHistogramMinResetDuration time.Duration NativeHistogramMaxZeroThreshold float64 + // NativeHistogramMaxExemplars limits the number of exemplars + // that are kept in memory for each native histogram. If you leave it at + // zero, a default value of 10 is used. If no exemplars should be kept specifically + // for native histograms, set it to a negative value. (Scrapers can + // still use the exemplars exposed for classic buckets, which are managed + // independently.) + NativeHistogramMaxExemplars int + // NativeHistogramExemplarTTL is only checked once + // NativeHistogramMaxExemplars is exceeded. In that case, the + // oldest exemplar is removed if it is older than NativeHistogramExemplarTTL. + // Otherwise, the older exemplar in the pair of exemplars that are closest + // together (on an exponential scale) is removed. + // If NativeHistogramExemplarTTL is left at its zero value, a default value of + // 5m is used. To always delete the oldest exemplar, set it to a negative value. + NativeHistogramExemplarTTL time.Duration + // now is for testing purposes, by default it's time.Now. now func() time.Time @@ -532,6 +548,7 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr if opts.afterFunc == nil { opts.afterFunc = time.AfterFunc } + h := &histogram{ desc: desc, upperBounds: opts.Buckets, @@ -556,6 +573,7 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr h.nativeHistogramZeroThreshold = DefNativeHistogramZeroThreshold } // Leave h.nativeHistogramZeroThreshold at 0 otherwise. h.nativeHistogramSchema = pickSchema(opts.NativeHistogramBucketFactor) + h.nativeExemplars = makeNativeExemplars(opts.NativeHistogramExemplarTTL, opts.NativeHistogramMaxExemplars) } for i, upperBound := range h.upperBounds { if i < len(h.upperBounds)-1 { @@ -725,7 +743,8 @@ type histogram struct { // resetScheduled is protected by mtx. It is true if a reset is // scheduled for a later time (when nativeHistogramMinResetDuration has // passed). - resetScheduled bool + resetScheduled bool + nativeExemplars nativeExemplars // now is for testing purposes, by default it's time.Now. now func() time.Time @@ -742,6 +761,9 @@ func (h *histogram) Observe(v float64) { h.observe(v, h.findBucket(v)) } +// ObserveWithExemplar should not be called in a high-frequency setting +// for a native histogram with configured exemplars. For this case, +// the implementation isn't lock-free and might suffer from lock contention. func (h *histogram) ObserveWithExemplar(v float64, e Labels) { i := h.findBucket(v) h.observe(v, i) @@ -821,6 +843,13 @@ func (h *histogram) Write(out *dto.Metric) error { Length: proto.Uint32(0), }} } + + if h.nativeExemplars.isEnabled() { + h.nativeExemplars.Lock() + his.Exemplars = append(his.Exemplars, h.nativeExemplars.exemplars...) + h.nativeExemplars.Unlock() + } + } addAndResetCounts(hotCounts, coldCounts) return nil @@ -1091,8 +1120,10 @@ func (h *histogram) resetCounts(counts *histogramCounts) { deleteSyncMap(&counts.nativeHistogramBucketsPositive) } -// updateExemplar replaces the exemplar for the provided bucket. With empty -// labels, it's a no-op. It panics if any of the labels is invalid. +// updateExemplar replaces the exemplar for the provided classic bucket. +// With empty labels, it's a no-op. It panics if any of the labels is invalid. +// If histogram is native, the exemplar will be cached into nativeExemplars, +// which has a limit, and will remove one exemplar when limit is reached. func (h *histogram) updateExemplar(v float64, bucket int, l Labels) { if l == nil { return @@ -1102,6 +1133,10 @@ func (h *histogram) updateExemplar(v float64, bucket int, l Labels) { panic(err) } h.exemplars[bucket].Store(e) + doSparse := h.nativeHistogramSchema > math.MinInt32 && !math.IsNaN(v) + if doSparse { + h.nativeExemplars.addExemplar(e) + } } // HistogramVec is a Collector that bundles a set of Histograms that all share the @@ -1336,6 +1371,48 @@ func MustNewConstHistogram( return m } +// NewConstHistogramWithCreatedTimestamp does the same thing as NewConstHistogram but sets the created timestamp. +func NewConstHistogramWithCreatedTimestamp( + desc *Desc, + count uint64, + sum float64, + buckets map[float64]uint64, + ct time.Time, + labelValues ...string, +) (Metric, error) { + if desc.err != nil { + return nil, desc.err + } + if err := validateLabelValues(labelValues, len(desc.variableLabels.names)); err != nil { + return nil, err + } + return &constHistogram{ + desc: desc, + count: count, + sum: sum, + buckets: buckets, + labelPairs: MakeLabelPairs(desc, labelValues), + createdTs: timestamppb.New(ct), + }, nil +} + +// MustNewConstHistogramWithCreatedTimestamp is a version of NewConstHistogramWithCreatedTimestamp that panics where +// NewConstHistogramWithCreatedTimestamp would have returned an error. +func MustNewConstHistogramWithCreatedTimestamp( + desc *Desc, + count uint64, + sum float64, + buckets map[float64]uint64, + ct time.Time, + labelValues ...string, +) Metric { + m, err := NewConstHistogramWithCreatedTimestamp(desc, count, sum, buckets, ct, labelValues...) + if err != nil { + panic(err) + } + return m +} + type buckSort []*dto.Bucket func (s buckSort) Len() int { @@ -1575,3 +1652,186 @@ func addAndResetCounts(hot, cold *histogramCounts) { atomic.AddUint64(&hot.nativeHistogramZeroBucket, atomic.LoadUint64(&cold.nativeHistogramZeroBucket)) atomic.StoreUint64(&cold.nativeHistogramZeroBucket, 0) } + +type nativeExemplars struct { + sync.Mutex + + // Time-to-live for exemplars, it is set to -1 if exemplars are disabled, that is NativeHistogramMaxExemplars is below 0. + // The ttl is used on insertion to remove an exemplar that is older than ttl, if present. + ttl time.Duration + + exemplars []*dto.Exemplar +} + +func (n *nativeExemplars) isEnabled() bool { + return n.ttl != -1 +} + +func makeNativeExemplars(ttl time.Duration, maxCount int) nativeExemplars { + if ttl == 0 { + ttl = 5 * time.Minute + } + + if maxCount == 0 { + maxCount = 10 + } + + if maxCount < 0 { + maxCount = 0 + ttl = -1 + } + + return nativeExemplars{ + ttl: ttl, + exemplars: make([]*dto.Exemplar, 0, maxCount), + } +} + +func (n *nativeExemplars) addExemplar(e *dto.Exemplar) { + if !n.isEnabled() { + return + } + + n.Lock() + defer n.Unlock() + + // When the number of exemplars has not yet exceeded or + // is equal to cap(n.exemplars), then + // insert the new exemplar directly. + if len(n.exemplars) < cap(n.exemplars) { + var nIdx int + for nIdx = 0; nIdx < len(n.exemplars); nIdx++ { + if *e.Value < *n.exemplars[nIdx].Value { + break + } + } + n.exemplars = append(n.exemplars[:nIdx], append([]*dto.Exemplar{e}, n.exemplars[nIdx:]...)...) + return + } + + if len(n.exemplars) == 1 { + // When the number of exemplars is 1, then + // replace the existing exemplar with the new exemplar. + n.exemplars[0] = e + return + } + // From this point on, the number of exemplars is greater than 1. + + // When the number of exemplars exceeds the limit, remove one exemplar. + var ( + ot = time.Time{} // Oldest timestamp seen. Initial value doesn't matter as we replace it due to otIdx == -1 in the loop. + otIdx = -1 // Index of the exemplar with the oldest timestamp. + + md = -1.0 // Logarithm of the delta of the closest pair of exemplars. + + // The insertion point of the new exemplar in the exemplars slice after insertion. + // This is calculated purely based on the order of the exemplars by value. + // nIdx == len(n.exemplars) means the new exemplar is to be inserted after the end. + nIdx = -1 + + // rIdx is ultimately the index for the exemplar that we are replacing with the new exemplar. + // The aim is to keep a good spread of exemplars by value and not let them bunch up too much. + // It is calculated in 3 steps: + // 1. First we set rIdx to the index of the older exemplar within the closest pair by value. + // That is the following will be true (on log scale): + // either the exemplar pair on index (rIdx-1, rIdx) or (rIdx, rIdx+1) will have + // the closest values to each other from all pairs. + // For example, suppose the values are distributed like this: + // |-----------x-------------x----------------x----x-----| + // ^--rIdx as this is older. + // Or like this: + // |-----------x-------------x----------------x----x-----| + // ^--rIdx as this is older. + // 2. If there is an exemplar that expired, then we simple reset rIdx to that index. + // 3. We check if by inserting the new exemplar we would create a closer pair at + // (nIdx-1, nIdx) or (nIdx, nIdx+1) and set rIdx to nIdx-1 or nIdx accordingly to + // keep the spread of exemplars by value; otherwise we keep rIdx as it is. + rIdx = -1 + cLog float64 // Logarithm of the current exemplar. + pLog float64 // Logarithm of the previous exemplar. + ) + + for i, exemplar := range n.exemplars { + // Find the exemplar with the oldest timestamp. + if otIdx == -1 || exemplar.Timestamp.AsTime().Before(ot) { + ot = exemplar.Timestamp.AsTime() + otIdx = i + } + + // Find the index at which to insert new the exemplar. + if nIdx == -1 && *e.Value <= *exemplar.Value { + nIdx = i + } + + // Find the two closest exemplars and pick the one the with older timestamp. + pLog = cLog + cLog = math.Log(exemplar.GetValue()) + if i == 0 { + continue + } + diff := math.Abs(cLog - pLog) + if md == -1 || diff < md { + // The closest exemplar pair is at index: i-1, i. + // Choose the exemplar with the older timestamp for replacement. + md = diff + if n.exemplars[i].Timestamp.AsTime().Before(n.exemplars[i-1].Timestamp.AsTime()) { + rIdx = i + } else { + rIdx = i - 1 + } + } + + } + + // If all existing exemplar are smaller than new exemplar, + // then the exemplar should be inserted at the end. + if nIdx == -1 { + nIdx = len(n.exemplars) + } + // Here, we have the following relationships: + // n.exemplars[nIdx-1].Value < e.Value (if nIdx > 0) + // e.Value <= n.exemplars[nIdx].Value (if nIdx < len(n.exemplars)) + + if otIdx != -1 && e.Timestamp.AsTime().Sub(ot) > n.ttl { + // If the oldest exemplar has expired, then replace it with the new exemplar. + rIdx = otIdx + } else { + // In the previous for loop, when calculating the closest pair of exemplars, + // we did not take into account the newly inserted exemplar. + // So we need to calculate with the newly inserted exemplar again. + elog := math.Log(e.GetValue()) + if nIdx > 0 { + diff := math.Abs(elog - math.Log(n.exemplars[nIdx-1].GetValue())) + if diff < md { + // The value we are about to insert is closer to the previous exemplar at the insertion point than what we calculated before in rIdx. + // v--rIdx + // |-----------x-n-----------x----------------x----x-----| + // nIdx-1--^ ^--new exemplar value + // Do not make the spread worse, replace nIdx-1 and not rIdx. + md = diff + rIdx = nIdx - 1 + } + } + if nIdx < len(n.exemplars) { + diff := math.Abs(math.Log(n.exemplars[nIdx].GetValue()) - elog) + if diff < md { + // The value we are about to insert is closer to the next exemplar at the insertion point than what we calculated before in rIdx. + // v--rIdx + // |-----------x-----------n-x----------------x----x-----| + // new exemplar value--^ ^--nIdx + // Do not make the spread worse, replace nIdx-1 and not rIdx. + rIdx = nIdx + } + } + } + + // Adjust the slice according to rIdx and nIdx. + switch { + case rIdx == nIdx: + n.exemplars[nIdx] = e + case rIdx < nIdx: + n.exemplars = append(n.exemplars[:rIdx], append(n.exemplars[rIdx+1:nIdx], append([]*dto.Exemplar{e}, n.exemplars[nIdx:]...)...)...) + case rIdx > nIdx: + n.exemplars = append(n.exemplars[:nIdx], append([]*dto.Exemplar{e}, append(n.exemplars[nIdx:rIdx], n.exemplars[rIdx+1:]...)...)...) + } +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/internal/go_collector_options.go b/vendor/github.com/prometheus/client_golang/prometheus/internal/go_collector_options.go index 723b45d64444..a4fa6eabd788 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/internal/go_collector_options.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/internal/go_collector_options.go @@ -30,3 +30,5 @@ type GoCollectorOptions struct { RuntimeMetricSumForHist map[string]string RuntimeMetricRules []GoCollectorRule } + +var GoCollectorDefaultRuntimeMetrics = regexp.MustCompile(`/gc/gogc:percent|/gc/gomemlimit:bytes|/sched/gomaxprocs:threads`) diff --git a/vendor/github.com/prometheus/client_golang/prometheus/metric.go b/vendor/github.com/prometheus/client_golang/prometheus/metric.go index f018e57237d5..9d9b81ab4481 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/metric.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/metric.go @@ -234,7 +234,7 @@ func NewMetricWithExemplars(m Metric, exemplars ...Exemplar) (Metric, error) { ) for i, e := range exemplars { ts := e.Timestamp - if ts == (time.Time{}) { + if ts.IsZero() { ts = now } exs[i], err = newExemplar(e.Value, ts, e.Labels) diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go index 8548dd18ed5e..62a4e7ad9a06 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go @@ -22,14 +22,15 @@ import ( ) type processCollector struct { - collectFn func(chan<- Metric) - pidFn func() (int, error) - reportErrors bool - cpuTotal *Desc - openFDs, maxFDs *Desc - vsize, maxVsize *Desc - rss *Desc - startTime *Desc + collectFn func(chan<- Metric) + pidFn func() (int, error) + reportErrors bool + cpuTotal *Desc + openFDs, maxFDs *Desc + vsize, maxVsize *Desc + rss *Desc + startTime *Desc + inBytes, outBytes *Desc } // ProcessCollectorOpts defines the behavior of a process metrics collector @@ -100,6 +101,16 @@ func NewProcessCollector(opts ProcessCollectorOpts) Collector { "Start time of the process since unix epoch in seconds.", nil, nil, ), + inBytes: NewDesc( + ns+"process_network_receive_bytes_total", + "Number of bytes received by the process over the network.", + nil, nil, + ), + outBytes: NewDesc( + ns+"process_network_transmit_bytes_total", + "Number of bytes sent by the process over the network.", + nil, nil, + ), } if opts.PidFn == nil { @@ -129,6 +140,8 @@ func (c *processCollector) Describe(ch chan<- *Desc) { ch <- c.maxVsize ch <- c.rss ch <- c.startTime + ch <- c.inBytes + ch <- c.outBytes } // Collect returns the current state of all metrics of the collector. diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go index 8c1136ceea35..14d56d2d0680 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go @@ -63,4 +63,18 @@ func (c *processCollector) processCollect(ch chan<- Metric) { } else { c.reportError(ch, nil, err) } + + if netstat, err := p.Netstat(); err == nil { + var inOctets, outOctets float64 + if netstat.IpExt.InOctets != nil { + inOctets = *netstat.IpExt.InOctets + } + if netstat.IpExt.OutOctets != nil { + outOctets = *netstat.IpExt.OutOctets + } + ch <- MustNewConstMetric(c.inBytes, CounterValue, inOctets) + ch <- MustNewConstMetric(c.outBytes, CounterValue, outOctets) + } else { + c.reportError(ch, nil, err) + } } diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go index 9819917b83b3..315eab5f179b 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go @@ -76,6 +76,12 @@ func (r *responseWriterDelegator) Write(b []byte) (int, error) { return n, err } +// Unwrap lets http.ResponseController get the underlying http.ResponseWriter, +// by implementing the [rwUnwrapper](https://cs.opensource.google/go/go/+/refs/tags/go1.21.4:src/net/http/responsecontroller.go;l=42-44) interface. +func (r *responseWriterDelegator) Unwrap() http.ResponseWriter { + return r.ResponseWriter +} + type ( closeNotifierDelegator struct{ *responseWriterDelegator } flusherDelegator struct{ *responseWriterDelegator } diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go index 09b8d2fbead0..e598e66e688e 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go @@ -38,12 +38,13 @@ import ( "io" "net/http" "strconv" - "strings" "sync" "time" + "github.com/klauspost/compress/zstd" "github.com/prometheus/common/expfmt" + "github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil" "github.com/prometheus/client_golang/prometheus" ) @@ -54,6 +55,18 @@ const ( processStartTimeHeader = "Process-Start-Time-Unix" ) +// Compression represents the content encodings handlers support for the HTTP +// responses. +type Compression string + +const ( + Identity Compression = "identity" + Gzip Compression = "gzip" + Zstd Compression = "zstd" +) + +var defaultCompressionFormats = []Compression{Identity, Gzip, Zstd} + var gzipPool = sync.Pool{ New: func() interface{} { return gzip.NewWriter(nil) @@ -122,6 +135,18 @@ func HandlerForTransactional(reg prometheus.TransactionalGatherer, opts HandlerO } } + // Select compression formats to offer based on default or user choice. + var compressions []string + if !opts.DisableCompression { + offers := defaultCompressionFormats + if len(opts.OfferedCompressions) > 0 { + offers = opts.OfferedCompressions + } + for _, comp := range offers { + compressions = append(compressions, string(comp)) + } + } + h := http.HandlerFunc(func(rsp http.ResponseWriter, req *http.Request) { if !opts.ProcessStartTime.IsZero() { rsp.Header().Set(processStartTimeHeader, strconv.FormatInt(opts.ProcessStartTime.Unix(), 10)) @@ -165,21 +190,23 @@ func HandlerForTransactional(reg prometheus.TransactionalGatherer, opts HandlerO } else { contentType = expfmt.Negotiate(req.Header) } - header := rsp.Header() - header.Set(contentTypeHeader, string(contentType)) + rsp.Header().Set(contentTypeHeader, string(contentType)) - w := io.Writer(rsp) - if !opts.DisableCompression && gzipAccepted(req.Header) { - header.Set(contentEncodingHeader, "gzip") - gz := gzipPool.Get().(*gzip.Writer) - defer gzipPool.Put(gz) + w, encodingHeader, closeWriter, err := negotiateEncodingWriter(req, rsp, compressions) + if err != nil { + if opts.ErrorLog != nil { + opts.ErrorLog.Println("error getting writer", err) + } + w = io.Writer(rsp) + encodingHeader = string(Identity) + } - gz.Reset(w) - defer gz.Close() + defer closeWriter() - w = gz + // Set Content-Encoding only when data is compressed + if encodingHeader != string(Identity) { + rsp.Header().Set(contentEncodingHeader, encodingHeader) } - enc := expfmt.NewEncoder(w, contentType) // handleError handles the error according to opts.ErrorHandling @@ -343,9 +370,19 @@ type HandlerOpts struct { // no effect on the HTTP status code because ErrorHandling is set to // ContinueOnError. Registry prometheus.Registerer - // If DisableCompression is true, the handler will never compress the - // response, even if requested by the client. + // DisableCompression disables the response encoding (compression) and + // encoding negotiation. If true, the handler will + // never compress the response, even if requested + // by the client and the OfferedCompressions field is set. DisableCompression bool + // OfferedCompressions is a set of encodings (compressions) handler will + // try to offer when negotiating with the client. This defaults to identity, gzip + // and zstd. + // NOTE: If handler can't agree with the client on the encodings or + // unsupported or empty encodings are set in OfferedCompressions, + // handler always fallbacks to no compression (identity), for + // compatibility reasons. In such cases ErrorLog will be used if set. + OfferedCompressions []Compression // The number of concurrent HTTP requests is limited to // MaxRequestsInFlight. Additional requests are responded to with 503 // Service Unavailable and a suitable message in the body. If @@ -381,19 +418,6 @@ type HandlerOpts struct { ProcessStartTime time.Time } -// gzipAccepted returns whether the client will accept gzip-encoded content. -func gzipAccepted(header http.Header) bool { - a := header.Get(acceptEncodingHeader) - parts := strings.Split(a, ",") - for _, part := range parts { - part = strings.TrimSpace(part) - if part == "gzip" || strings.HasPrefix(part, "gzip;") { - return true - } - } - return false -} - // httpError removes any content-encoding header and then calls http.Error with // the provided error and http.StatusInternalServerError. Error contents is // supposed to be uncompressed plain text. Same as with a plain http.Error, this @@ -406,3 +430,38 @@ func httpError(rsp http.ResponseWriter, err error) { http.StatusInternalServerError, ) } + +// negotiateEncodingWriter reads the Accept-Encoding header from a request and +// selects the right compression based on an allow-list of supported +// compressions. It returns a writer implementing the compression and an the +// correct value that the caller can set in the response header. +func negotiateEncodingWriter(r *http.Request, rw io.Writer, compressions []string) (_ io.Writer, encodingHeaderValue string, closeWriter func(), _ error) { + if len(compressions) == 0 { + return rw, string(Identity), func() {}, nil + } + + // TODO(mrueg): Replace internal/github.com/gddo once https://github.com/golang/go/issues/19307 is implemented. + selected := httputil.NegotiateContentEncoding(r, compressions) + + switch selected { + case "zstd": + // TODO(mrueg): Replace klauspost/compress with stdlib implementation once https://github.com/golang/go/issues/62513 is implemented. + z, err := zstd.NewWriter(rw, zstd.WithEncoderLevel(zstd.SpeedFastest)) + if err != nil { + return nil, "", func() {}, err + } + + z.Reset(rw) + return z, selected, func() { _ = z.Close() }, nil + case "gzip": + gz := gzipPool.Get().(*gzip.Writer) + gz.Reset(rw) + return gz, selected, func() { _ = gz.Close(); gzipPool.Put(gz) }, nil + case "identity": + // This means the content is not compressed. + return rw, selected, func() {}, nil + default: + // The content encoding was not implemented yet. + return nil, "", func() {}, fmt.Errorf("content compression format not recognized: %s. Valid formats are: %s", selected, defaultCompressionFormats) + } +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/registry.go b/vendor/github.com/prometheus/client_golang/prometheus/registry.go index 5e2ced25a02f..c6fd2f58b742 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/registry.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/registry.go @@ -314,16 +314,17 @@ func (r *Registry) Register(c Collector) error { if dimHash != desc.dimHash { return fmt.Errorf("a previously registered descriptor with the same fully-qualified name as %s has different label names or a different help string", desc) } - } else { - // ...then check the new descriptors already seen. - if dimHash, exists := newDimHashesByName[desc.fqName]; exists { - if dimHash != desc.dimHash { - return fmt.Errorf("descriptors reported by collector have inconsistent label names or help strings for the same fully-qualified name, offender is %s", desc) - } - } else { - newDimHashesByName[desc.fqName] = desc.dimHash + continue + } + + // ...then check the new descriptors already seen. + if dimHash, exists := newDimHashesByName[desc.fqName]; exists { + if dimHash != desc.dimHash { + return fmt.Errorf("descriptors reported by collector have inconsistent label names or help strings for the same fully-qualified name, offender is %s", desc) } + continue } + newDimHashesByName[desc.fqName] = desc.dimHash } // A Collector yielding no Desc at all is considered unchecked. if len(newDescIDs) == 0 { diff --git a/vendor/github.com/prometheus/client_golang/prometheus/summary.go b/vendor/github.com/prometheus/client_golang/prometheus/summary.go index 1462704446c8..1ab0e4796550 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/summary.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/summary.go @@ -783,3 +783,45 @@ func MustNewConstSummary( } return m } + +// NewConstSummaryWithCreatedTimestamp does the same thing as NewConstSummary but sets the created timestamp. +func NewConstSummaryWithCreatedTimestamp( + desc *Desc, + count uint64, + sum float64, + quantiles map[float64]float64, + ct time.Time, + labelValues ...string, +) (Metric, error) { + if desc.err != nil { + return nil, desc.err + } + if err := validateLabelValues(labelValues, len(desc.variableLabels.names)); err != nil { + return nil, err + } + return &constSummary{ + desc: desc, + count: count, + sum: sum, + quantiles: quantiles, + labelPairs: MakeLabelPairs(desc, labelValues), + createdTs: timestamppb.New(ct), + }, nil +} + +// MustNewConstSummaryWithCreatedTimestamp is a version of NewConstSummaryWithCreatedTimestamp that panics where +// NewConstSummaryWithCreatedTimestamp would have returned an error. +func MustNewConstSummaryWithCreatedTimestamp( + desc *Desc, + count uint64, + sum float64, + quantiles map[float64]float64, + ct time.Time, + labelValues ...string, +) Metric { + m, err := NewConstSummaryWithCreatedTimestamp(desc, count, sum, quantiles, ct, labelValues...) + if err != nil { + panic(err) + } + return m +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/vec.go b/vendor/github.com/prometheus/client_golang/prometheus/vec.go index 955cfd59f839..2c808eece0a0 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/vec.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/vec.go @@ -507,7 +507,7 @@ func (m *metricMap) getOrCreateMetricWithLabelValues( return metric } -// getOrCreateMetricWithLabelValues retrieves the metric by hash and label value +// getOrCreateMetricWithLabels retrieves the metric by hash and label value // or creates it and returns the new one. // // This function holds the mutex. diff --git a/vendor/github.com/prometheus/common/expfmt/decode.go b/vendor/github.com/prometheus/common/expfmt/decode.go index 25cfaa21643e..1448439b7f72 100644 --- a/vendor/github.com/prometheus/common/expfmt/decode.go +++ b/vendor/github.com/prometheus/common/expfmt/decode.go @@ -45,7 +45,7 @@ func ResponseFormat(h http.Header) Format { mediatype, params, err := mime.ParseMediaType(ct) if err != nil { - return fmtUnknown + return FmtUnknown } const textType = "text/plain" @@ -53,21 +53,21 @@ func ResponseFormat(h http.Header) Format { switch mediatype { case ProtoType: if p, ok := params["proto"]; ok && p != ProtoProtocol { - return fmtUnknown + return FmtUnknown } if e, ok := params["encoding"]; ok && e != "delimited" { - return fmtUnknown + return FmtUnknown } - return fmtProtoDelim + return FmtProtoDelim case textType: if v, ok := params["version"]; ok && v != TextVersion { - return fmtUnknown + return FmtUnknown } - return fmtText + return FmtText } - return fmtUnknown + return FmtUnknown } // NewDecoder returns a new decoder based on the given input format. diff --git a/vendor/github.com/prometheus/common/expfmt/encode.go b/vendor/github.com/prometheus/common/expfmt/encode.go index 7f6cbe7d2989..d7f3d76f55d9 100644 --- a/vendor/github.com/prometheus/common/expfmt/encode.go +++ b/vendor/github.com/prometheus/common/expfmt/encode.go @@ -21,9 +21,10 @@ import ( "google.golang.org/protobuf/encoding/protodelim" "google.golang.org/protobuf/encoding/prototext" - "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg" "github.com/prometheus/common/model" + "github.com/munnerz/goautoneg" + dto "github.com/prometheus/client_model/go" ) @@ -67,7 +68,7 @@ func Negotiate(h http.Header) Format { if escapeParam := ac.Params[model.EscapingKey]; escapeParam != "" { switch Format(escapeParam) { case model.AllowUTF8, model.EscapeUnderscores, model.EscapeDots, model.EscapeValues: - escapingScheme = Format(fmt.Sprintf("; escaping=%s", escapeParam)) + escapingScheme = Format("; escaping=" + escapeParam) default: // If the escaping parameter is unknown, ignore it. } @@ -76,18 +77,18 @@ func Negotiate(h http.Header) Format { if ac.Type+"/"+ac.SubType == ProtoType && ac.Params["proto"] == ProtoProtocol { switch ac.Params["encoding"] { case "delimited": - return fmtProtoDelim + escapingScheme + return FmtProtoDelim + escapingScheme case "text": - return fmtProtoText + escapingScheme + return FmtProtoText + escapingScheme case "compact-text": - return fmtProtoCompact + escapingScheme + return FmtProtoCompact + escapingScheme } } if ac.Type == "text" && ac.SubType == "plain" && (ver == TextVersion || ver == "") { - return fmtText + escapingScheme + return FmtText + escapingScheme } } - return fmtText + escapingScheme + return FmtText + escapingScheme } // NegotiateIncludingOpenMetrics works like Negotiate but includes @@ -100,7 +101,7 @@ func NegotiateIncludingOpenMetrics(h http.Header) Format { if escapeParam := ac.Params[model.EscapingKey]; escapeParam != "" { switch Format(escapeParam) { case model.AllowUTF8, model.EscapeUnderscores, model.EscapeDots, model.EscapeValues: - escapingScheme = Format(fmt.Sprintf("; escaping=%s", escapeParam)) + escapingScheme = Format("; escaping=" + escapeParam) default: // If the escaping parameter is unknown, ignore it. } @@ -109,26 +110,26 @@ func NegotiateIncludingOpenMetrics(h http.Header) Format { if ac.Type+"/"+ac.SubType == ProtoType && ac.Params["proto"] == ProtoProtocol { switch ac.Params["encoding"] { case "delimited": - return fmtProtoDelim + escapingScheme + return FmtProtoDelim + escapingScheme case "text": - return fmtProtoText + escapingScheme + return FmtProtoText + escapingScheme case "compact-text": - return fmtProtoCompact + escapingScheme + return FmtProtoCompact + escapingScheme } } if ac.Type == "text" && ac.SubType == "plain" && (ver == TextVersion || ver == "") { - return fmtText + escapingScheme + return FmtText + escapingScheme } if ac.Type+"/"+ac.SubType == OpenMetricsType && (ver == OpenMetricsVersion_0_0_1 || ver == OpenMetricsVersion_1_0_0 || ver == "") { switch ver { case OpenMetricsVersion_1_0_0: - return fmtOpenMetrics_1_0_0 + escapingScheme + return FmtOpenMetrics_1_0_0 + escapingScheme default: - return fmtOpenMetrics_0_0_1 + escapingScheme + return FmtOpenMetrics_0_0_1 + escapingScheme } } } - return fmtText + escapingScheme + return FmtText + escapingScheme } // NewEncoder returns a new encoder based on content type negotiation. All diff --git a/vendor/github.com/prometheus/common/expfmt/expfmt.go b/vendor/github.com/prometheus/common/expfmt/expfmt.go index 051b38cd1781..b26886560d74 100644 --- a/vendor/github.com/prometheus/common/expfmt/expfmt.go +++ b/vendor/github.com/prometheus/common/expfmt/expfmt.go @@ -15,7 +15,7 @@ package expfmt import ( - "fmt" + "errors" "strings" "github.com/prometheus/common/model" @@ -32,24 +32,31 @@ type Format string // it on the wire, new content-type strings will have to be agreed upon and // added here. const ( - TextVersion = "0.0.4" - ProtoType = `application/vnd.google.protobuf` - ProtoProtocol = `io.prometheus.client.MetricFamily` - protoFmt = ProtoType + "; proto=" + ProtoProtocol + ";" + TextVersion = "0.0.4" + ProtoType = `application/vnd.google.protobuf` + ProtoProtocol = `io.prometheus.client.MetricFamily` + // Deprecated: Use expfmt.NewFormat(expfmt.TypeProtoCompact) instead. + ProtoFmt = ProtoType + "; proto=" + ProtoProtocol + ";" OpenMetricsType = `application/openmetrics-text` OpenMetricsVersion_0_0_1 = "0.0.1" OpenMetricsVersion_1_0_0 = "1.0.0" - // The Content-Type values for the different wire protocols. Note that these - // values are now unexported. If code was relying on comparisons to these - // constants, instead use FormatType(). - fmtUnknown Format = `` - fmtText Format = `text/plain; version=` + TextVersion + `; charset=utf-8` - fmtProtoDelim Format = protoFmt + ` encoding=delimited` - fmtProtoText Format = protoFmt + ` encoding=text` - fmtProtoCompact Format = protoFmt + ` encoding=compact-text` - fmtOpenMetrics_1_0_0 Format = OpenMetricsType + `; version=` + OpenMetricsVersion_1_0_0 + `; charset=utf-8` - fmtOpenMetrics_0_0_1 Format = OpenMetricsType + `; version=` + OpenMetricsVersion_0_0_1 + `; charset=utf-8` + // The Content-Type values for the different wire protocols. Do not do direct + // comparisons to these constants, instead use the comparison functions. + // Deprecated: Use expfmt.NewFormat(expfmt.TypeUnknown) instead. + FmtUnknown Format = `` + // Deprecated: Use expfmt.NewFormat(expfmt.TypeTextPlain) instead. + FmtText Format = `text/plain; version=` + TextVersion + `; charset=utf-8` + // Deprecated: Use expfmt.NewFormat(expfmt.TypeProtoDelim) instead. + FmtProtoDelim Format = ProtoFmt + ` encoding=delimited` + // Deprecated: Use expfmt.NewFormat(expfmt.TypeProtoText) instead. + FmtProtoText Format = ProtoFmt + ` encoding=text` + // Deprecated: Use expfmt.NewFormat(expfmt.TypeProtoCompact) instead. + FmtProtoCompact Format = ProtoFmt + ` encoding=compact-text` + // Deprecated: Use expfmt.NewFormat(expfmt.TypeOpenMetrics) instead. + FmtOpenMetrics_1_0_0 Format = OpenMetricsType + `; version=` + OpenMetricsVersion_1_0_0 + `; charset=utf-8` + // Deprecated: Use expfmt.NewFormat(expfmt.TypeOpenMetrics) instead. + FmtOpenMetrics_0_0_1 Format = OpenMetricsType + `; version=` + OpenMetricsVersion_0_0_1 + `; charset=utf-8` ) const ( @@ -79,17 +86,17 @@ const ( func NewFormat(t FormatType) Format { switch t { case TypeProtoCompact: - return fmtProtoCompact + return FmtProtoCompact case TypeProtoDelim: - return fmtProtoDelim + return FmtProtoDelim case TypeProtoText: - return fmtProtoText + return FmtProtoText case TypeTextPlain: - return fmtText + return FmtText case TypeOpenMetrics: - return fmtOpenMetrics_1_0_0 + return FmtOpenMetrics_1_0_0 default: - return fmtUnknown + return FmtUnknown } } @@ -97,12 +104,35 @@ func NewFormat(t FormatType) Format { // specified version number. func NewOpenMetricsFormat(version string) (Format, error) { if version == OpenMetricsVersion_0_0_1 { - return fmtOpenMetrics_0_0_1, nil + return FmtOpenMetrics_0_0_1, nil } if version == OpenMetricsVersion_1_0_0 { - return fmtOpenMetrics_1_0_0, nil + return FmtOpenMetrics_1_0_0, nil } - return fmtUnknown, fmt.Errorf("unknown open metrics version string") + return FmtUnknown, errors.New("unknown open metrics version string") +} + +// WithEscapingScheme returns a copy of Format with the specified escaping +// scheme appended to the end. If an escaping scheme already exists it is +// removed. +func (f Format) WithEscapingScheme(s model.EscapingScheme) Format { + var terms []string + for _, p := range strings.Split(string(f), ";") { + toks := strings.Split(p, "=") + if len(toks) != 2 { + trimmed := strings.TrimSpace(p) + if len(trimmed) > 0 { + terms = append(terms, trimmed) + } + continue + } + key := strings.TrimSpace(toks[0]) + if key != model.EscapingKey { + terms = append(terms, strings.TrimSpace(p)) + } + } + terms = append(terms, model.EscapingKey+"="+s.String()) + return Format(strings.Join(terms, "; ")) } // FormatType deduces an overall FormatType for the given format. diff --git a/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go b/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go index 353c5e93f92d..f1c495dd6060 100644 --- a/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go +++ b/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go @@ -152,8 +152,8 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily, options ...E if metricType == dto.MetricType_COUNTER && strings.HasSuffix(compliantName, "_total") { compliantName = name[:len(name)-6] } - if toOM.withUnit && in.Unit != nil && !strings.HasSuffix(compliantName, fmt.Sprintf("_%s", *in.Unit)) { - compliantName = compliantName + fmt.Sprintf("_%s", *in.Unit) + if toOM.withUnit && in.Unit != nil && !strings.HasSuffix(compliantName, "_"+*in.Unit) { + compliantName = compliantName + "_" + *in.Unit } // Comments, first HELP, then TYPE. @@ -477,7 +477,7 @@ func writeOpenMetricsNameAndLabelPairs( if name != "" { // If the name does not pass the legacy validity check, we must put the // metric name inside the braces, quoted. - if !model.IsValidLegacyMetricName(model.LabelValue(name)) { + if !model.IsValidLegacyMetricName(name) { metricInsideBraces = true err := w.WriteByte(separator) written++ diff --git a/vendor/github.com/prometheus/common/expfmt/text_create.go b/vendor/github.com/prometheus/common/expfmt/text_create.go index f9b8265a9ec2..4b86434b3327 100644 --- a/vendor/github.com/prometheus/common/expfmt/text_create.go +++ b/vendor/github.com/prometheus/common/expfmt/text_create.go @@ -354,7 +354,7 @@ func writeNameAndLabelPairs( if name != "" { // If the name does not pass the legacy validity check, we must put the // metric name inside the braces. - if !model.IsValidLegacyMetricName(model.LabelValue(name)) { + if !model.IsValidLegacyMetricName(name) { metricInsideBraces = true err := w.WriteByte(separator) written++ @@ -498,7 +498,7 @@ func writeInt(w enhancedWriter, i int64) (int, error) { // writeName writes a string as-is if it complies with the legacy naming // scheme, or escapes it in double quotes if not. func writeName(w enhancedWriter, name string) (int, error) { - if model.IsValidLegacyMetricName(model.LabelValue(name)) { + if model.IsValidLegacyMetricName(name) { return w.WriteString(name) } var written int diff --git a/vendor/github.com/prometheus/common/expfmt/text_parse.go b/vendor/github.com/prometheus/common/expfmt/text_parse.go index 26490211af2a..b4607fe4d274 100644 --- a/vendor/github.com/prometheus/common/expfmt/text_parse.go +++ b/vendor/github.com/prometheus/common/expfmt/text_parse.go @@ -22,9 +22,9 @@ import ( "math" "strconv" "strings" + "unicode/utf8" dto "github.com/prometheus/client_model/go" - "google.golang.org/protobuf/proto" "github.com/prometheus/common/model" @@ -60,6 +60,7 @@ type TextParser struct { currentMF *dto.MetricFamily currentMetric *dto.Metric currentLabelPair *dto.LabelPair + currentLabelPairs []*dto.LabelPair // Temporarily stores label pairs while parsing a metric line. // The remaining member variables are only used for summaries/histograms. currentLabels map[string]string // All labels including '__name__' but excluding 'quantile'/'le' @@ -74,6 +75,9 @@ type TextParser struct { // count and sum of that summary/histogram. currentIsSummaryCount, currentIsSummarySum bool currentIsHistogramCount, currentIsHistogramSum bool + // These indicate if the metric name from the current line being parsed is inside + // braces and if that metric name was found respectively. + currentMetricIsInsideBraces, currentMetricInsideBracesIsPresent bool } // TextToMetricFamilies reads 'in' as the simple and flat text-based exchange @@ -137,12 +141,15 @@ func (p *TextParser) reset(in io.Reader) { } p.currentQuantile = math.NaN() p.currentBucket = math.NaN() + p.currentMF = nil } // startOfLine represents the state where the next byte read from p.buf is the // start of a line (or whitespace leading up to it). func (p *TextParser) startOfLine() stateFn { p.lineCount++ + p.currentMetricIsInsideBraces = false + p.currentMetricInsideBracesIsPresent = false if p.skipBlankTab(); p.err != nil { // This is the only place that we expect to see io.EOF, // which is not an error but the signal that we are done. @@ -158,6 +165,9 @@ func (p *TextParser) startOfLine() stateFn { return p.startComment case '\n': return p.startOfLine // Empty line, start the next one. + case '{': + p.currentMetricIsInsideBraces = true + return p.readingLabels } return p.readingMetricName } @@ -275,6 +285,8 @@ func (p *TextParser) startLabelName() stateFn { return nil // Unexpected end of input. } if p.currentByte == '}' { + p.currentMetric.Label = append(p.currentMetric.Label, p.currentLabelPairs...) + p.currentLabelPairs = nil if p.skipBlankTab(); p.err != nil { return nil // Unexpected end of input. } @@ -287,6 +299,45 @@ func (p *TextParser) startLabelName() stateFn { p.parseError(fmt.Sprintf("invalid label name for metric %q", p.currentMF.GetName())) return nil } + if p.skipBlankTabIfCurrentBlankTab(); p.err != nil { + return nil // Unexpected end of input. + } + if p.currentByte != '=' { + if p.currentMetricIsInsideBraces { + if p.currentMetricInsideBracesIsPresent { + p.parseError(fmt.Sprintf("multiple metric names for metric %q", p.currentMF.GetName())) + return nil + } + switch p.currentByte { + case ',': + p.setOrCreateCurrentMF() + if p.currentMF.Type == nil { + p.currentMF.Type = dto.MetricType_UNTYPED.Enum() + } + p.currentMetric = &dto.Metric{} + p.currentMetricInsideBracesIsPresent = true + return p.startLabelName + case '}': + p.setOrCreateCurrentMF() + if p.currentMF.Type == nil { + p.currentMF.Type = dto.MetricType_UNTYPED.Enum() + } + p.currentMetric = &dto.Metric{} + p.currentMetric.Label = append(p.currentMetric.Label, p.currentLabelPairs...) + p.currentLabelPairs = nil + if p.skipBlankTab(); p.err != nil { + return nil // Unexpected end of input. + } + return p.readingValue + default: + p.parseError(fmt.Sprintf("unexpected end of metric name %q", p.currentByte)) + return nil + } + } + p.parseError(fmt.Sprintf("expected '=' after label name, found %q", p.currentByte)) + p.currentLabelPairs = nil + return nil + } p.currentLabelPair = &dto.LabelPair{Name: proto.String(p.currentToken.String())} if p.currentLabelPair.GetName() == string(model.MetricNameLabel) { p.parseError(fmt.Sprintf("label name %q is reserved", model.MetricNameLabel)) @@ -296,23 +347,17 @@ func (p *TextParser) startLabelName() stateFn { // labels to 'real' labels. if !(p.currentMF.GetType() == dto.MetricType_SUMMARY && p.currentLabelPair.GetName() == model.QuantileLabel) && !(p.currentMF.GetType() == dto.MetricType_HISTOGRAM && p.currentLabelPair.GetName() == model.BucketLabel) { - p.currentMetric.Label = append(p.currentMetric.Label, p.currentLabelPair) - } - if p.skipBlankTabIfCurrentBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - if p.currentByte != '=' { - p.parseError(fmt.Sprintf("expected '=' after label name, found %q", p.currentByte)) - return nil + p.currentLabelPairs = append(p.currentLabelPairs, p.currentLabelPair) } // Check for duplicate label names. labels := make(map[string]struct{}) - for _, l := range p.currentMetric.Label { + for _, l := range p.currentLabelPairs { lName := l.GetName() if _, exists := labels[lName]; !exists { labels[lName] = struct{}{} } else { p.parseError(fmt.Sprintf("duplicate label names for metric %q", p.currentMF.GetName())) + p.currentLabelPairs = nil return nil } } @@ -345,6 +390,7 @@ func (p *TextParser) startLabelValue() stateFn { if p.currentQuantile, p.err = parseFloat(p.currentLabelPair.GetValue()); p.err != nil { // Create a more helpful error message. p.parseError(fmt.Sprintf("expected float as value for 'quantile' label, got %q", p.currentLabelPair.GetValue())) + p.currentLabelPairs = nil return nil } } else { @@ -371,12 +417,19 @@ func (p *TextParser) startLabelValue() stateFn { return p.startLabelName case '}': + if p.currentMF == nil { + p.parseError("invalid metric name") + return nil + } + p.currentMetric.Label = append(p.currentMetric.Label, p.currentLabelPairs...) + p.currentLabelPairs = nil if p.skipBlankTab(); p.err != nil { return nil // Unexpected end of input. } return p.readingValue default: p.parseError(fmt.Sprintf("unexpected end of label value %q", p.currentLabelPair.GetValue())) + p.currentLabelPairs = nil return nil } } @@ -585,6 +638,8 @@ func (p *TextParser) readTokenUntilNewline(recognizeEscapeSequence bool) { p.currentToken.WriteByte(p.currentByte) case 'n': p.currentToken.WriteByte('\n') + case '"': + p.currentToken.WriteByte('"') default: p.parseError(fmt.Sprintf("invalid escape sequence '\\%c'", p.currentByte)) return @@ -610,13 +665,45 @@ func (p *TextParser) readTokenUntilNewline(recognizeEscapeSequence bool) { // but not into p.currentToken. func (p *TextParser) readTokenAsMetricName() { p.currentToken.Reset() + // A UTF-8 metric name must be quoted and may have escaped characters. + quoted := false + escaped := false if !isValidMetricNameStart(p.currentByte) { return } - for { - p.currentToken.WriteByte(p.currentByte) + for p.err == nil { + if escaped { + switch p.currentByte { + case '\\': + p.currentToken.WriteByte(p.currentByte) + case 'n': + p.currentToken.WriteByte('\n') + case '"': + p.currentToken.WriteByte('"') + default: + p.parseError(fmt.Sprintf("invalid escape sequence '\\%c'", p.currentByte)) + return + } + escaped = false + } else { + switch p.currentByte { + case '"': + quoted = !quoted + if !quoted { + p.currentByte, p.err = p.buf.ReadByte() + return + } + case '\n': + p.parseError(fmt.Sprintf("metric name %q contains unescaped new-line", p.currentToken.String())) + return + case '\\': + escaped = true + default: + p.currentToken.WriteByte(p.currentByte) + } + } p.currentByte, p.err = p.buf.ReadByte() - if p.err != nil || !isValidMetricNameContinuation(p.currentByte) { + if !isValidMetricNameContinuation(p.currentByte, quoted) || (!quoted && p.currentByte == ' ') { return } } @@ -628,13 +715,45 @@ func (p *TextParser) readTokenAsMetricName() { // but not into p.currentToken. func (p *TextParser) readTokenAsLabelName() { p.currentToken.Reset() + // A UTF-8 label name must be quoted and may have escaped characters. + quoted := false + escaped := false if !isValidLabelNameStart(p.currentByte) { return } - for { - p.currentToken.WriteByte(p.currentByte) + for p.err == nil { + if escaped { + switch p.currentByte { + case '\\': + p.currentToken.WriteByte(p.currentByte) + case 'n': + p.currentToken.WriteByte('\n') + case '"': + p.currentToken.WriteByte('"') + default: + p.parseError(fmt.Sprintf("invalid escape sequence '\\%c'", p.currentByte)) + return + } + escaped = false + } else { + switch p.currentByte { + case '"': + quoted = !quoted + if !quoted { + p.currentByte, p.err = p.buf.ReadByte() + return + } + case '\n': + p.parseError(fmt.Sprintf("label name %q contains unescaped new-line", p.currentToken.String())) + return + case '\\': + escaped = true + default: + p.currentToken.WriteByte(p.currentByte) + } + } p.currentByte, p.err = p.buf.ReadByte() - if p.err != nil || !isValidLabelNameContinuation(p.currentByte) { + if !isValidLabelNameContinuation(p.currentByte, quoted) || (!quoted && p.currentByte == '=') { return } } @@ -660,6 +779,7 @@ func (p *TextParser) readTokenAsLabelValue() { p.currentToken.WriteByte('\n') default: p.parseError(fmt.Sprintf("invalid escape sequence '\\%c'", p.currentByte)) + p.currentLabelPairs = nil return } escaped = false @@ -718,19 +838,19 @@ func (p *TextParser) setOrCreateCurrentMF() { } func isValidLabelNameStart(b byte) bool { - return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' + return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || b == '"' } -func isValidLabelNameContinuation(b byte) bool { - return isValidLabelNameStart(b) || (b >= '0' && b <= '9') +func isValidLabelNameContinuation(b byte, quoted bool) bool { + return isValidLabelNameStart(b) || (b >= '0' && b <= '9') || (quoted && utf8.ValidString(string(b))) } func isValidMetricNameStart(b byte) bool { return isValidLabelNameStart(b) || b == ':' } -func isValidMetricNameContinuation(b byte) bool { - return isValidLabelNameContinuation(b) || b == ':' +func isValidMetricNameContinuation(b byte, quoted bool) bool { + return isValidLabelNameContinuation(b, quoted) || b == ':' } func isBlankOrTab(b byte) bool { @@ -775,7 +895,7 @@ func histogramMetricName(name string) string { func parseFloat(s string) (float64, error) { if strings.ContainsAny(s, "pP_") { - return 0, fmt.Errorf("unsupported character in float") + return 0, errors.New("unsupported character in float") } return strconv.ParseFloat(s, 64) } diff --git a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt b/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt deleted file mode 100644 index 7723656d58db..000000000000 --- a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt +++ /dev/null @@ -1,67 +0,0 @@ -PACKAGE - -package goautoneg -import "bitbucket.org/ww/goautoneg" - -HTTP Content-Type Autonegotiation. - -The functions in this package implement the behaviour specified in -http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html - -Copyright (c) 2011, Open Knowledge Foundation Ltd. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - Neither the name of the Open Knowledge Foundation Ltd. nor the - names of its contributors may be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -FUNCTIONS - -func Negotiate(header string, alternatives []string) (content_type string) -Negotiate the most appropriate content_type given the accept header -and a list of alternatives. - -func ParseAccept(header string) (accept []Accept) -Parse an Accept Header string returning a sorted list -of clauses - - -TYPES - -type Accept struct { - Type, SubType string - Q float32 - Params map[string]string -} -Structure to represent a clause in an HTTP Accept Header - - -SUBDIRECTORIES - - .hg diff --git a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go b/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go deleted file mode 100644 index a21b9d15dd89..000000000000 --- a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go +++ /dev/null @@ -1,160 +0,0 @@ -/* -Copyright (c) 2011, Open Knowledge Foundation Ltd. -All rights reserved. - -HTTP Content-Type Autonegotiation. - -The functions in this package implement the behaviour specified in -http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - Neither the name of the Open Knowledge Foundation Ltd. nor the - names of its contributors may be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -package goautoneg - -import ( - "sort" - "strconv" - "strings" -) - -// Structure to represent a clause in an HTTP Accept Header -type Accept struct { - Type, SubType string - Q float64 - Params map[string]string -} - -// For internal use, so that we can use the sort interface -type accept_slice []Accept - -func (accept accept_slice) Len() int { - slice := []Accept(accept) - return len(slice) -} - -func (accept accept_slice) Less(i, j int) bool { - slice := []Accept(accept) - ai, aj := slice[i], slice[j] - if ai.Q > aj.Q { - return true - } - if ai.Type != "*" && aj.Type == "*" { - return true - } - if ai.SubType != "*" && aj.SubType == "*" { - return true - } - return false -} - -func (accept accept_slice) Swap(i, j int) { - slice := []Accept(accept) - slice[i], slice[j] = slice[j], slice[i] -} - -// Parse an Accept Header string returning a sorted list -// of clauses -func ParseAccept(header string) (accept []Accept) { - parts := strings.Split(header, ",") - accept = make([]Accept, 0, len(parts)) - for _, part := range parts { - part := strings.Trim(part, " ") - - a := Accept{} - a.Params = make(map[string]string) - a.Q = 1.0 - - mrp := strings.Split(part, ";") - - media_range := mrp[0] - sp := strings.Split(media_range, "/") - a.Type = strings.Trim(sp[0], " ") - - switch { - case len(sp) == 1 && a.Type == "*": - a.SubType = "*" - case len(sp) == 2: - a.SubType = strings.Trim(sp[1], " ") - default: - continue - } - - if len(mrp) == 1 { - accept = append(accept, a) - continue - } - - for _, param := range mrp[1:] { - sp := strings.SplitN(param, "=", 2) - if len(sp) != 2 { - continue - } - token := strings.Trim(sp[0], " ") - if token == "q" { - a.Q, _ = strconv.ParseFloat(sp[1], 32) - } else { - a.Params[token] = strings.Trim(sp[1], " ") - } - } - - accept = append(accept, a) - } - - slice := accept_slice(accept) - sort.Sort(slice) - - return -} - -// Negotiate the most appropriate content_type given the accept header -// and a list of alternatives. -func Negotiate(header string, alternatives []string) (content_type string) { - asp := make([][]string, 0, len(alternatives)) - for _, ctype := range alternatives { - asp = append(asp, strings.SplitN(ctype, "/", 2)) - } - for _, clause := range ParseAccept(header) { - for i, ctsp := range asp { - if clause.Type == ctsp[0] && clause.SubType == ctsp[1] { - content_type = alternatives[i] - return - } - if clause.Type == ctsp[0] && clause.SubType == "*" { - content_type = alternatives[i] - return - } - if clause.Type == "*" && clause.SubType == "*" { - content_type = alternatives[i] - return - } - } - } - return -} diff --git a/vendor/github.com/prometheus/common/model/alert.go b/vendor/github.com/prometheus/common/model/alert.go index 80d1fe944ea1..bd3a39e3e147 100644 --- a/vendor/github.com/prometheus/common/model/alert.go +++ b/vendor/github.com/prometheus/common/model/alert.go @@ -14,6 +14,7 @@ package model import ( + "errors" "fmt" "time" ) @@ -89,16 +90,16 @@ func (a *Alert) StatusAt(ts time.Time) AlertStatus { // Validate checks whether the alert data is inconsistent. func (a *Alert) Validate() error { if a.StartsAt.IsZero() { - return fmt.Errorf("start time missing") + return errors.New("start time missing") } if !a.EndsAt.IsZero() && a.EndsAt.Before(a.StartsAt) { - return fmt.Errorf("start time must be before end time") + return errors.New("start time must be before end time") } if err := a.Labels.Validate(); err != nil { return fmt.Errorf("invalid label set: %w", err) } if len(a.Labels) == 0 { - return fmt.Errorf("at least one label pair required") + return errors.New("at least one label pair required") } if err := a.Annotations.Validate(); err != nil { return fmt.Errorf("invalid annotations: %w", err) diff --git a/vendor/github.com/prometheus/common/model/labels.go b/vendor/github.com/prometheus/common/model/labels.go index 3317ce22ff73..73b7aa3e60bd 100644 --- a/vendor/github.com/prometheus/common/model/labels.go +++ b/vendor/github.com/prometheus/common/model/labels.go @@ -97,26 +97,35 @@ var LabelNameRE = regexp.MustCompile("^[a-zA-Z_][a-zA-Z0-9_]*$") // therewith. type LabelName string -// IsValid returns true iff name matches the pattern of LabelNameRE for legacy -// names, and iff it's valid UTF-8 if NameValidationScheme is set to -// UTF8Validation. For the legacy matching, it does not use LabelNameRE for the -// check but a much faster hardcoded implementation. +// IsValid returns true iff the name matches the pattern of LabelNameRE when +// NameValidationScheme is set to LegacyValidation, or valid UTF-8 if +// NameValidationScheme is set to UTF8Validation. func (ln LabelName) IsValid() bool { if len(ln) == 0 { return false } switch NameValidationScheme { case LegacyValidation: - for i, b := range ln { - if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || (b >= '0' && b <= '9' && i > 0)) { - return false - } - } + return ln.IsValidLegacy() case UTF8Validation: return utf8.ValidString(string(ln)) default: panic(fmt.Sprintf("Invalid name validation scheme requested: %d", NameValidationScheme)) } +} + +// IsValidLegacy returns true iff name matches the pattern of LabelNameRE for +// legacy names. It does not use LabelNameRE for the check but a much faster +// hardcoded implementation. +func (ln LabelName) IsValidLegacy() bool { + if len(ln) == 0 { + return false + } + for i, b := range ln { + if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || (b >= '0' && b <= '9' && i > 0)) { + return false + } + } return true } diff --git a/vendor/github.com/prometheus/common/model/labelset_string.go b/vendor/github.com/prometheus/common/model/labelset_string.go index 481c47b46e5d..abb2c9001831 100644 --- a/vendor/github.com/prometheus/common/model/labelset_string.go +++ b/vendor/github.com/prometheus/common/model/labelset_string.go @@ -11,8 +11,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -//go:build go1.21 - package model import ( diff --git a/vendor/github.com/prometheus/common/model/labelset_string_go120.go b/vendor/github.com/prometheus/common/model/labelset_string_go120.go deleted file mode 100644 index c4212685e71f..000000000000 --- a/vendor/github.com/prometheus/common/model/labelset_string_go120.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2024 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//go:build !go1.21 - -package model - -import ( - "fmt" - "sort" - "strings" -) - -// String was optimized using functions not available for go 1.20 -// or lower. We keep the old implementation for compatibility with client_golang. -// Once client golang drops support for go 1.20 (scheduled for August 2024), this -// file can be removed. -func (l LabelSet) String() string { - labelNames := make([]string, 0, len(l)) - for name := range l { - labelNames = append(labelNames, string(name)) - } - sort.Strings(labelNames) - lstrs := make([]string, 0, len(l)) - for _, name := range labelNames { - lstrs = append(lstrs, fmt.Sprintf("%s=%q", name, l[LabelName(name)])) - } - return fmt.Sprintf("{%s}", strings.Join(lstrs, ", ")) -} diff --git a/vendor/github.com/prometheus/common/model/metric.go b/vendor/github.com/prometheus/common/model/metric.go index eb865e5a59cf..0daca836afa7 100644 --- a/vendor/github.com/prometheus/common/model/metric.go +++ b/vendor/github.com/prometheus/common/model/metric.go @@ -14,9 +14,11 @@ package model import ( + "errors" "fmt" "regexp" "sort" + "strconv" "strings" "unicode/utf8" @@ -34,10 +36,13 @@ var ( // goroutines are started. NameValidationScheme = LegacyValidation - // NameEscapingScheme defines the default way that names will be - // escaped when presented to systems that do not support UTF-8 names. If the - // Content-Type "escaping" term is specified, that will override this value. - NameEscapingScheme = ValueEncodingEscaping + // NameEscapingScheme defines the default way that names will be escaped when + // presented to systems that do not support UTF-8 names. If the Content-Type + // "escaping" term is specified, that will override this value. + // NameEscapingScheme should not be set to the NoEscaping value. That string + // is used in content negotiation to indicate that a system supports UTF-8 and + // has that feature enabled. + NameEscapingScheme = UnderscoreEscaping ) // ValidationScheme is a Go enum for determining how metric and label names will @@ -161,7 +166,7 @@ func (m Metric) FastFingerprint() Fingerprint { func IsValidMetricName(n LabelValue) bool { switch NameValidationScheme { case LegacyValidation: - return IsValidLegacyMetricName(n) + return IsValidLegacyMetricName(string(n)) case UTF8Validation: if len(n) == 0 { return false @@ -176,7 +181,7 @@ func IsValidMetricName(n LabelValue) bool { // legacy validation scheme regardless of the value of NameValidationScheme. // This function, however, does not use MetricNameRE for the check but a much // faster hardcoded implementation. -func IsValidLegacyMetricName(n LabelValue) bool { +func IsValidLegacyMetricName(n string) bool { if len(n) == 0 { return false } @@ -208,7 +213,7 @@ func EscapeMetricFamily(v *dto.MetricFamily, scheme EscapingScheme) *dto.MetricF } // If the name is nil, copy as-is, don't try to escape. - if v.Name == nil || IsValidLegacyMetricName(LabelValue(v.GetName())) { + if v.Name == nil || IsValidLegacyMetricName(v.GetName()) { out.Name = v.Name } else { out.Name = proto.String(EscapeName(v.GetName(), scheme)) @@ -230,7 +235,7 @@ func EscapeMetricFamily(v *dto.MetricFamily, scheme EscapingScheme) *dto.MetricF for _, l := range m.Label { if l.GetName() == MetricNameLabel { - if l.Value == nil || IsValidLegacyMetricName(LabelValue(l.GetValue())) { + if l.Value == nil || IsValidLegacyMetricName(l.GetValue()) { escaped.Label = append(escaped.Label, l) continue } @@ -240,7 +245,7 @@ func EscapeMetricFamily(v *dto.MetricFamily, scheme EscapingScheme) *dto.MetricF }) continue } - if l.Name == nil || IsValidLegacyMetricName(LabelValue(l.GetName())) { + if l.Name == nil || IsValidLegacyMetricName(l.GetName()) { escaped.Label = append(escaped.Label, l) continue } @@ -256,20 +261,16 @@ func EscapeMetricFamily(v *dto.MetricFamily, scheme EscapingScheme) *dto.MetricF func metricNeedsEscaping(m *dto.Metric) bool { for _, l := range m.Label { - if l.GetName() == MetricNameLabel && !IsValidLegacyMetricName(LabelValue(l.GetValue())) { + if l.GetName() == MetricNameLabel && !IsValidLegacyMetricName(l.GetValue()) { return true } - if !IsValidLegacyMetricName(LabelValue(l.GetName())) { + if !IsValidLegacyMetricName(l.GetName()) { return true } } return false } -const ( - lowerhex = "0123456789abcdef" -) - // EscapeName escapes the incoming name according to the provided escaping // scheme. Depending on the rules of escaping, this may cause no change in the // string that is returned. (Especially NoEscaping, which by definition is a @@ -283,7 +284,7 @@ func EscapeName(name string, scheme EscapingScheme) string { case NoEscaping: return name case UnderscoreEscaping: - if IsValidLegacyMetricName(LabelValue(name)) { + if IsValidLegacyMetricName(name) { return name } for i, b := range name { @@ -304,31 +305,25 @@ func EscapeName(name string, scheme EscapingScheme) string { } else if isValidLegacyRune(b, i) { escaped.WriteRune(b) } else { - escaped.WriteRune('_') + escaped.WriteString("__") } } return escaped.String() case ValueEncodingEscaping: - if IsValidLegacyMetricName(LabelValue(name)) { + if IsValidLegacyMetricName(name) { return name } escaped.WriteString("U__") for i, b := range name { - if isValidLegacyRune(b, i) { + if b == '_' { + escaped.WriteString("__") + } else if isValidLegacyRune(b, i) { escaped.WriteRune(b) } else if !utf8.ValidRune(b) { escaped.WriteString("_FFFD_") - } else if b < 0x100 { - escaped.WriteRune('_') - for s := 4; s >= 0; s -= 4 { - escaped.WriteByte(lowerhex[b>>uint(s)&0xF]) - } - escaped.WriteRune('_') - } else if b < 0x10000 { + } else { escaped.WriteRune('_') - for s := 12; s >= 0; s -= 4 { - escaped.WriteByte(lowerhex[b>>uint(s)&0xF]) - } + escaped.WriteString(strconv.FormatInt(int64(b), 16)) escaped.WriteRune('_') } } @@ -386,8 +381,9 @@ func UnescapeName(name string, scheme EscapingScheme) string { // We think we are in a UTF-8 code, process it. var utf8Val uint for j := 0; i < len(escapedName); j++ { - // This is too many characters for a utf8 value. - if j > 4 { + // This is too many characters for a utf8 value based on the MaxRune + // value of '\U0010FFFF'. + if j >= 6 { return name } // Found a closing underscore, convert to a rune, check validity, and append. @@ -440,7 +436,7 @@ func (e EscapingScheme) String() string { func ToEscapingScheme(s string) (EscapingScheme, error) { if s == "" { - return NoEscaping, fmt.Errorf("got empty string instead of escaping scheme") + return NoEscaping, errors.New("got empty string instead of escaping scheme") } switch s { case AllowUTF8: @@ -452,6 +448,6 @@ func ToEscapingScheme(s string) (EscapingScheme, error) { case EscapeValues: return ValueEncodingEscaping, nil default: - return NoEscaping, fmt.Errorf("unknown format scheme " + s) + return NoEscaping, fmt.Errorf("unknown format scheme %s", s) } } diff --git a/vendor/github.com/prometheus/common/model/silence.go b/vendor/github.com/prometheus/common/model/silence.go index 910b0b71fcce..8f91a9702e0c 100644 --- a/vendor/github.com/prometheus/common/model/silence.go +++ b/vendor/github.com/prometheus/common/model/silence.go @@ -15,6 +15,7 @@ package model import ( "encoding/json" + "errors" "fmt" "regexp" "time" @@ -34,7 +35,7 @@ func (m *Matcher) UnmarshalJSON(b []byte) error { } if len(m.Name) == 0 { - return fmt.Errorf("label name in matcher must not be empty") + return errors.New("label name in matcher must not be empty") } if m.IsRegex { if _, err := regexp.Compile(m.Value); err != nil { @@ -77,7 +78,7 @@ type Silence struct { // Validate returns true iff all fields of the silence have valid values. func (s *Silence) Validate() error { if len(s.Matchers) == 0 { - return fmt.Errorf("at least one matcher required") + return errors.New("at least one matcher required") } for _, m := range s.Matchers { if err := m.Validate(); err != nil { @@ -85,22 +86,22 @@ func (s *Silence) Validate() error { } } if s.StartsAt.IsZero() { - return fmt.Errorf("start time missing") + return errors.New("start time missing") } if s.EndsAt.IsZero() { - return fmt.Errorf("end time missing") + return errors.New("end time missing") } if s.EndsAt.Before(s.StartsAt) { - return fmt.Errorf("start time must be before end time") + return errors.New("start time must be before end time") } if s.CreatedBy == "" { - return fmt.Errorf("creator information missing") + return errors.New("creator information missing") } if s.Comment == "" { - return fmt.Errorf("comment missing") + return errors.New("comment missing") } if s.CreatedAt.IsZero() { - return fmt.Errorf("creation timestamp missing") + return errors.New("creation timestamp missing") } return nil } diff --git a/vendor/github.com/prometheus/common/model/value_float.go b/vendor/github.com/prometheus/common/model/value_float.go index ae35cc2ab4b9..6bfc757d18b0 100644 --- a/vendor/github.com/prometheus/common/model/value_float.go +++ b/vendor/github.com/prometheus/common/model/value_float.go @@ -15,6 +15,7 @@ package model import ( "encoding/json" + "errors" "fmt" "math" "strconv" @@ -39,7 +40,7 @@ func (v SampleValue) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements json.Unmarshaler. func (v *SampleValue) UnmarshalJSON(b []byte) error { if len(b) < 2 || b[0] != '"' || b[len(b)-1] != '"' { - return fmt.Errorf("sample value must be a quoted string") + return errors.New("sample value must be a quoted string") } f, err := strconv.ParseFloat(string(b[1:len(b)-1]), 64) if err != nil { diff --git a/vendor/github.com/prometheus/common/model/value_histogram.go b/vendor/github.com/prometheus/common/model/value_histogram.go index 54bb038cfff3..895e6a3e8393 100644 --- a/vendor/github.com/prometheus/common/model/value_histogram.go +++ b/vendor/github.com/prometheus/common/model/value_histogram.go @@ -15,6 +15,7 @@ package model import ( "encoding/json" + "errors" "fmt" "strconv" "strings" @@ -32,7 +33,7 @@ func (v FloatString) MarshalJSON() ([]byte, error) { func (v *FloatString) UnmarshalJSON(b []byte) error { if len(b) < 2 || b[0] != '"' || b[len(b)-1] != '"' { - return fmt.Errorf("float value must be a quoted string") + return errors.New("float value must be a quoted string") } f, err := strconv.ParseFloat(string(b[1:len(b)-1]), 64) if err != nil { @@ -141,7 +142,7 @@ type SampleHistogramPair struct { func (s SampleHistogramPair) MarshalJSON() ([]byte, error) { if s.Histogram == nil { - return nil, fmt.Errorf("histogram is nil") + return nil, errors.New("histogram is nil") } t, err := json.Marshal(s.Timestamp) if err != nil { @@ -164,7 +165,7 @@ func (s *SampleHistogramPair) UnmarshalJSON(buf []byte) error { return fmt.Errorf("wrong number of fields: %d != %d", gotLen, wantLen) } if s.Histogram == nil { - return fmt.Errorf("histogram is null") + return errors.New("histogram is null") } return nil } diff --git a/vendor/github.com/prometheus/procfs/.golangci.yml b/vendor/github.com/prometheus/procfs/.golangci.yml index c24864a9273c..126df9e67acf 100644 --- a/vendor/github.com/prometheus/procfs/.golangci.yml +++ b/vendor/github.com/prometheus/procfs/.golangci.yml @@ -1,9 +1,16 @@ --- linters: enable: + - errcheck - godot + - gosimple + - govet + - ineffassign - misspell - revive + - staticcheck + - testifylint + - unused linter-settings: godot: diff --git a/vendor/github.com/prometheus/procfs/MAINTAINERS.md b/vendor/github.com/prometheus/procfs/MAINTAINERS.md index 56ba67d3e317..e00f3b365b62 100644 --- a/vendor/github.com/prometheus/procfs/MAINTAINERS.md +++ b/vendor/github.com/prometheus/procfs/MAINTAINERS.md @@ -1,2 +1,3 @@ * Johannes 'fish' Ziemke @discordianfish -* Paul Gier @pgier +* Paul Gier @pgier +* Ben Kochie @SuperQ diff --git a/vendor/github.com/prometheus/procfs/Makefile.common b/vendor/github.com/prometheus/procfs/Makefile.common index 062a28185637..161729235068 100644 --- a/vendor/github.com/prometheus/procfs/Makefile.common +++ b/vendor/github.com/prometheus/procfs/Makefile.common @@ -49,23 +49,23 @@ endif GOTEST := $(GO) test GOTEST_DIR := ifneq ($(CIRCLE_JOB),) -ifneq ($(shell command -v gotestsum > /dev/null),) +ifneq ($(shell command -v gotestsum 2> /dev/null),) GOTEST_DIR := test-results GOTEST := gotestsum --junitfile $(GOTEST_DIR)/unit-tests.xml -- endif endif -PROMU_VERSION ?= 0.15.0 +PROMU_VERSION ?= 0.17.0 PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz SKIP_GOLANGCI_LINT := GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v1.54.2 -# golangci-lint only supports linux, darwin and windows platforms on i386/amd64. +GOLANGCI_LINT_VERSION ?= v1.59.0 +# golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64. # windows isn't included here because of the path separator being different. ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) - ifeq ($(GOHOSTARCH),$(filter $(GOHOSTARCH),amd64 i386)) + ifeq ($(GOHOSTARCH),$(filter $(GOHOSTARCH),amd64 i386 arm64)) # If we're in CI and there is an Actions file, that means the linter # is being run in Actions, so we don't need to run it here. ifneq (,$(SKIP_GOLANGCI_LINT)) @@ -169,16 +169,20 @@ common-vet: common-lint: $(GOLANGCI_LINT) ifdef GOLANGCI_LINT @echo ">> running golangci-lint" -# 'go list' needs to be executed before staticcheck to prepopulate the modules cache. -# Otherwise staticcheck might fail randomly for some reason not yet explained. - $(GO) list -e -compiled -test=true -export=false -deps=true -find=false -tags= -- ./... > /dev/null $(GOLANGCI_LINT) run $(GOLANGCI_LINT_OPTS) $(pkgs) endif +.PHONY: common-lint-fix +common-lint-fix: $(GOLANGCI_LINT) +ifdef GOLANGCI_LINT + @echo ">> running golangci-lint fix" + $(GOLANGCI_LINT) run --fix $(GOLANGCI_LINT_OPTS) $(pkgs) +endif + .PHONY: common-yamllint common-yamllint: @echo ">> running yamllint on all YAML files in the repository" -ifeq (, $(shell command -v yamllint > /dev/null)) +ifeq (, $(shell command -v yamllint 2> /dev/null)) @echo "yamllint not installed so skipping" else yamllint . @@ -204,6 +208,10 @@ common-tarball: promu @echo ">> building release tarball" $(PROMU) tarball --prefix $(PREFIX) $(BIN_DIR) +.PHONY: common-docker-repo-name +common-docker-repo-name: + @echo "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)" + .PHONY: common-docker $(BUILD_DOCKER_ARCHS) common-docker: $(BUILD_DOCKER_ARCHS) $(BUILD_DOCKER_ARCHS): common-docker-%: diff --git a/vendor/github.com/prometheus/procfs/arp.go b/vendor/github.com/prometheus/procfs/arp.go index 28783e2ddc68..cdcc8a7ccc46 100644 --- a/vendor/github.com/prometheus/procfs/arp.go +++ b/vendor/github.com/prometheus/procfs/arp.go @@ -55,7 +55,7 @@ type ARPEntry struct { func (fs FS) GatherARPEntries() ([]ARPEntry, error) { data, err := os.ReadFile(fs.proc.Path("net/arp")) if err != nil { - return nil, fmt.Errorf("%s: error reading arp %s: %w", ErrFileRead, fs.proc.Path("net/arp"), err) + return nil, fmt.Errorf("%w: error reading arp %s: %w", ErrFileRead, fs.proc.Path("net/arp"), err) } return parseARPEntries(data) @@ -78,11 +78,11 @@ func parseARPEntries(data []byte) ([]ARPEntry, error) { } else if width == expectedDataWidth { entry, err := parseARPEntry(columns) if err != nil { - return []ARPEntry{}, fmt.Errorf("%s: Failed to parse ARP entry: %v: %w", ErrFileParse, entry, err) + return []ARPEntry{}, fmt.Errorf("%w: Failed to parse ARP entry: %v: %w", ErrFileParse, entry, err) } entries = append(entries, entry) } else { - return []ARPEntry{}, fmt.Errorf("%s: %d columns found, but expected %d: %w", ErrFileParse, width, expectedDataWidth, err) + return []ARPEntry{}, fmt.Errorf("%w: %d columns found, but expected %d: %w", ErrFileParse, width, expectedDataWidth, err) } } diff --git a/vendor/github.com/prometheus/procfs/buddyinfo.go b/vendor/github.com/prometheus/procfs/buddyinfo.go index 4a173636c965..83807500908f 100644 --- a/vendor/github.com/prometheus/procfs/buddyinfo.go +++ b/vendor/github.com/prometheus/procfs/buddyinfo.go @@ -58,8 +58,8 @@ func parseBuddyInfo(r io.Reader) ([]BuddyInfo, error) { return nil, fmt.Errorf("%w: Invalid number of fields, found: %v", ErrFileParse, parts) } - node := strings.TrimRight(parts[1], ",") - zone := strings.TrimRight(parts[3], ",") + node := strings.TrimSuffix(parts[1], ",") + zone := strings.TrimSuffix(parts[3], ",") arraySize := len(parts[4:]) if bucketCount == -1 { @@ -74,7 +74,7 @@ func parseBuddyInfo(r io.Reader) ([]BuddyInfo, error) { for i := 0; i < arraySize; i++ { sizes[i], err = strconv.ParseFloat(parts[i+4], 64) if err != nil { - return nil, fmt.Errorf("%s: Invalid valid in buddyinfo: %f: %w", ErrFileParse, sizes[i], err) + return nil, fmt.Errorf("%w: Invalid valid in buddyinfo: %f: %w", ErrFileParse, sizes[i], err) } } diff --git a/vendor/github.com/prometheus/procfs/cpuinfo.go b/vendor/github.com/prometheus/procfs/cpuinfo.go index f4f5501c68b1..f0950bb49534 100644 --- a/vendor/github.com/prometheus/procfs/cpuinfo.go +++ b/vendor/github.com/prometheus/procfs/cpuinfo.go @@ -194,7 +194,7 @@ func parseCPUInfoARM(info []byte) ([]CPUInfo, error) { firstLine := firstNonEmptyLine(scanner) match, err := regexp.MatchString("^[Pp]rocessor", firstLine) if !match || !strings.Contains(firstLine, ":") { - return nil, fmt.Errorf("%s: Cannot parse line: %q: %w", ErrFileParse, firstLine, err) + return nil, fmt.Errorf("%w: Cannot parse line: %q: %w", ErrFileParse, firstLine, err) } field := strings.SplitN(firstLine, ": ", 2) @@ -386,7 +386,7 @@ func parseCPUInfoLoong(info []byte) ([]CPUInfo, error) { // find the first "processor" line firstLine := firstNonEmptyLine(scanner) if !strings.HasPrefix(firstLine, "system type") || !strings.Contains(firstLine, ":") { - return nil, errors.New("invalid cpuinfo file: " + firstLine) + return nil, fmt.Errorf("%w: %q", ErrFileParse, firstLine) } field := strings.SplitN(firstLine, ": ", 2) cpuinfo := []CPUInfo{} diff --git a/vendor/github.com/prometheus/procfs/crypto.go b/vendor/github.com/prometheus/procfs/crypto.go index 9a73e2639321..5f2a37a78b3f 100644 --- a/vendor/github.com/prometheus/procfs/crypto.go +++ b/vendor/github.com/prometheus/procfs/crypto.go @@ -55,13 +55,13 @@ func (fs FS) Crypto() ([]Crypto, error) { path := fs.proc.Path("crypto") b, err := util.ReadFileNoStat(path) if err != nil { - return nil, fmt.Errorf("%s: Cannot read file %v: %w", ErrFileRead, b, err) + return nil, fmt.Errorf("%w: Cannot read file %v: %w", ErrFileRead, b, err) } crypto, err := parseCrypto(bytes.NewReader(b)) if err != nil { - return nil, fmt.Errorf("%s: Cannot parse %v: %w", ErrFileParse, crypto, err) + return nil, fmt.Errorf("%w: Cannot parse %v: %w", ErrFileParse, crypto, err) } return crypto, nil @@ -84,7 +84,7 @@ func parseCrypto(r io.Reader) ([]Crypto, error) { kv := strings.Split(text, ":") if len(kv) != 2 { - return nil, fmt.Errorf("%w: Cannot parae line: %q", ErrFileParse, text) + return nil, fmt.Errorf("%w: Cannot parse line: %q", ErrFileParse, text) } k := strings.TrimSpace(kv[0]) diff --git a/vendor/github.com/prometheus/procfs/fscache.go b/vendor/github.com/prometheus/procfs/fscache.go index f560a8db301f..cf2e3eaa03c6 100644 --- a/vendor/github.com/prometheus/procfs/fscache.go +++ b/vendor/github.com/prometheus/procfs/fscache.go @@ -236,7 +236,7 @@ func (fs FS) Fscacheinfo() (Fscacheinfo, error) { m, err := parseFscacheinfo(bytes.NewReader(b)) if err != nil { - return Fscacheinfo{}, fmt.Errorf("%s: Cannot parse %v: %w", ErrFileParse, m, err) + return Fscacheinfo{}, fmt.Errorf("%w: Cannot parse %v: %w", ErrFileParse, m, err) } return *m, nil @@ -245,7 +245,7 @@ func (fs FS) Fscacheinfo() (Fscacheinfo, error) { func setFSCacheFields(fields []string, setFields ...*uint64) error { var err error if len(fields) < len(setFields) { - return fmt.Errorf("%s: Expected %d, but got %d: %w", ErrFileParse, len(setFields), len(fields), err) + return fmt.Errorf("%w: Expected %d, but got %d: %w", ErrFileParse, len(setFields), len(fields), err) } for i := range setFields { diff --git a/vendor/github.com/prometheus/procfs/ipvs.go b/vendor/github.com/prometheus/procfs/ipvs.go index 5a145bbfe1f4..bc3a20c932d1 100644 --- a/vendor/github.com/prometheus/procfs/ipvs.go +++ b/vendor/github.com/prometheus/procfs/ipvs.go @@ -221,16 +221,16 @@ func parseIPPort(s string) (net.IP, uint16, error) { case 46: ip = net.ParseIP(s[1:40]) if ip == nil { - return nil, 0, fmt.Errorf("%s: Invalid IPv6 addr %s: %w", ErrFileParse, s[1:40], err) + return nil, 0, fmt.Errorf("%w: Invalid IPv6 addr %s: %w", ErrFileParse, s[1:40], err) } default: - return nil, 0, fmt.Errorf("%s: Unexpected IP:Port %s: %w", ErrFileParse, s, err) + return nil, 0, fmt.Errorf("%w: Unexpected IP:Port %s: %w", ErrFileParse, s, err) } portString := s[len(s)-4:] if len(portString) != 4 { return nil, 0, - fmt.Errorf("%s: Unexpected port string format %s: %w", ErrFileParse, portString, err) + fmt.Errorf("%w: Unexpected port string format %s: %w", ErrFileParse, portString, err) } port, err := strconv.ParseUint(portString, 16, 16) if err != nil { diff --git a/vendor/github.com/prometheus/procfs/loadavg.go b/vendor/github.com/prometheus/procfs/loadavg.go index 59465c5bbcba..332e76c17f5b 100644 --- a/vendor/github.com/prometheus/procfs/loadavg.go +++ b/vendor/github.com/prometheus/procfs/loadavg.go @@ -51,7 +51,7 @@ func parseLoad(loadavgBytes []byte) (*LoadAvg, error) { for i, load := range parts[0:3] { loads[i], err = strconv.ParseFloat(load, 64) if err != nil { - return nil, fmt.Errorf("%s: Cannot parse load: %f: %w", ErrFileParse, loads[i], err) + return nil, fmt.Errorf("%w: Cannot parse load: %f: %w", ErrFileParse, loads[i], err) } } return &LoadAvg{ diff --git a/vendor/github.com/prometheus/procfs/mdstat.go b/vendor/github.com/prometheus/procfs/mdstat.go index fdd4b95445b1..67a9d2b44867 100644 --- a/vendor/github.com/prometheus/procfs/mdstat.go +++ b/vendor/github.com/prometheus/procfs/mdstat.go @@ -23,7 +23,7 @@ import ( var ( statusLineRE = regexp.MustCompile(`(\d+) blocks .*\[(\d+)/(\d+)\] \[([U_]+)\]`) - recoveryLineBlocksRE = regexp.MustCompile(`\((\d+)/\d+\)`) + recoveryLineBlocksRE = regexp.MustCompile(`\((\d+/\d+)\)`) recoveryLinePctRE = regexp.MustCompile(`= (.+)%`) recoveryLineFinishRE = regexp.MustCompile(`finish=(.+)min`) recoveryLineSpeedRE = regexp.MustCompile(`speed=(.+)[A-Z]`) @@ -50,6 +50,8 @@ type MDStat struct { BlocksTotal int64 // Number of blocks on the device that are in sync. BlocksSynced int64 + // Number of blocks on the device that need to be synced. + BlocksToBeSynced int64 // progress percentage of current sync BlocksSyncedPct float64 // estimated finishing time for current sync (in minutes) @@ -70,7 +72,7 @@ func (fs FS) MDStat() ([]MDStat, error) { } mdstat, err := parseMDStat(data) if err != nil { - return nil, fmt.Errorf("%s: Cannot parse %v: %w", ErrFileParse, fs.proc.Path("mdstat"), err) + return nil, fmt.Errorf("%w: Cannot parse %v: %w", ErrFileParse, fs.proc.Path("mdstat"), err) } return mdstat, nil } @@ -90,7 +92,7 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { deviceFields := strings.Fields(line) if len(deviceFields) < 3 { - return nil, fmt.Errorf("%s: Expected 3+ lines, got %q", ErrFileParse, line) + return nil, fmt.Errorf("%w: Expected 3+ lines, got %q", ErrFileParse, line) } mdName := deviceFields[0] // mdx state := deviceFields[2] // active or inactive @@ -105,7 +107,7 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { active, total, down, size, err := evalStatusLine(lines[i], lines[i+1]) if err != nil { - return nil, fmt.Errorf("%s: Cannot parse md device lines: %v: %w", ErrFileParse, active, err) + return nil, fmt.Errorf("%w: Cannot parse md device lines: %v: %w", ErrFileParse, active, err) } syncLineIdx := i + 2 @@ -115,7 +117,8 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { // If device is syncing at the moment, get the number of currently // synced bytes, otherwise that number equals the size of the device. - syncedBlocks := size + blocksSynced := size + blocksToBeSynced := size speed := float64(0) finish := float64(0) pct := float64(0) @@ -136,11 +139,11 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { // Handle case when resync=PENDING or resync=DELAYED. if strings.Contains(lines[syncLineIdx], "PENDING") || strings.Contains(lines[syncLineIdx], "DELAYED") { - syncedBlocks = 0 + blocksSynced = 0 } else { - syncedBlocks, pct, finish, speed, err = evalRecoveryLine(lines[syncLineIdx]) + blocksSynced, blocksToBeSynced, pct, finish, speed, err = evalRecoveryLine(lines[syncLineIdx]) if err != nil { - return nil, fmt.Errorf("%s: Cannot parse sync line in md device: %q: %w", ErrFileParse, mdName, err) + return nil, fmt.Errorf("%w: Cannot parse sync line in md device: %q: %w", ErrFileParse, mdName, err) } } } @@ -154,7 +157,8 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { DisksSpare: spare, DisksTotal: total, BlocksTotal: size, - BlocksSynced: syncedBlocks, + BlocksSynced: blocksSynced, + BlocksToBeSynced: blocksToBeSynced, BlocksSyncedPct: pct, BlocksSyncedFinishTime: finish, BlocksSyncedSpeed: speed, @@ -168,13 +172,13 @@ func parseMDStat(mdStatData []byte) ([]MDStat, error) { func evalStatusLine(deviceLine, statusLine string) (active, total, down, size int64, err error) { statusFields := strings.Fields(statusLine) if len(statusFields) < 1 { - return 0, 0, 0, 0, fmt.Errorf("%s: Unexpected statusline %q: %w", ErrFileParse, statusLine, err) + return 0, 0, 0, 0, fmt.Errorf("%w: Unexpected statusline %q: %w", ErrFileParse, statusLine, err) } sizeStr := statusFields[0] size, err = strconv.ParseInt(sizeStr, 10, 64) if err != nil { - return 0, 0, 0, 0, fmt.Errorf("%s: Unexpected statusline %q: %w", ErrFileParse, statusLine, err) + return 0, 0, 0, 0, fmt.Errorf("%w: Unexpected statusline %q: %w", ErrFileParse, statusLine, err) } if strings.Contains(deviceLine, "raid0") || strings.Contains(deviceLine, "linear") { @@ -189,65 +193,71 @@ func evalStatusLine(deviceLine, statusLine string) (active, total, down, size in matches := statusLineRE.FindStringSubmatch(statusLine) if len(matches) != 5 { - return 0, 0, 0, 0, fmt.Errorf("%s: Could not fild all substring matches %s: %w", ErrFileParse, statusLine, err) + return 0, 0, 0, 0, fmt.Errorf("%w: Could not fild all substring matches %s: %w", ErrFileParse, statusLine, err) } total, err = strconv.ParseInt(matches[2], 10, 64) if err != nil { - return 0, 0, 0, 0, fmt.Errorf("%s: Unexpected statusline %q: %w", ErrFileParse, statusLine, err) + return 0, 0, 0, 0, fmt.Errorf("%w: Unexpected statusline %q: %w", ErrFileParse, statusLine, err) } active, err = strconv.ParseInt(matches[3], 10, 64) if err != nil { - return 0, 0, 0, 0, fmt.Errorf("%s: Unexpected active %d: %w", ErrFileParse, active, err) + return 0, 0, 0, 0, fmt.Errorf("%w: Unexpected active %d: %w", ErrFileParse, active, err) } down = int64(strings.Count(matches[4], "_")) return active, total, down, size, nil } -func evalRecoveryLine(recoveryLine string) (syncedBlocks int64, pct float64, finish float64, speed float64, err error) { +func evalRecoveryLine(recoveryLine string) (blocksSynced int64, blocksToBeSynced int64, pct float64, finish float64, speed float64, err error) { matches := recoveryLineBlocksRE.FindStringSubmatch(recoveryLine) if len(matches) != 2 { - return 0, 0, 0, 0, fmt.Errorf("%s: Unexpected recoveryLine %s: %w", ErrFileParse, recoveryLine, err) + return 0, 0, 0, 0, 0, fmt.Errorf("%w: Unexpected recoveryLine blocks %s: %w", ErrFileParse, recoveryLine, err) } - syncedBlocks, err = strconv.ParseInt(matches[1], 10, 64) + blocks := strings.Split(matches[1], "/") + blocksSynced, err = strconv.ParseInt(blocks[0], 10, 64) if err != nil { - return 0, 0, 0, 0, fmt.Errorf("%s: Unexpected parsing of recoveryLine %q: %w", ErrFileParse, recoveryLine, err) + return 0, 0, 0, 0, 0, fmt.Errorf("%w: Unable to parse recovery blocks synced %q: %w", ErrFileParse, matches[1], err) + } + + blocksToBeSynced, err = strconv.ParseInt(blocks[1], 10, 64) + if err != nil { + return blocksSynced, 0, 0, 0, 0, fmt.Errorf("%w: Unable to parse recovery to be synced blocks %q: %w", ErrFileParse, matches[2], err) } // Get percentage complete matches = recoveryLinePctRE.FindStringSubmatch(recoveryLine) if len(matches) != 2 { - return syncedBlocks, 0, 0, 0, fmt.Errorf("%w: Unexpected recoveryLine matching percentage %s", ErrFileParse, recoveryLine) + return blocksSynced, blocksToBeSynced, 0, 0, 0, fmt.Errorf("%w: Unexpected recoveryLine matching percentage %s", ErrFileParse, recoveryLine) } pct, err = strconv.ParseFloat(strings.TrimSpace(matches[1]), 64) if err != nil { - return syncedBlocks, 0, 0, 0, fmt.Errorf("%w: Error parsing float from recoveryLine %q", ErrFileParse, recoveryLine) + return blocksSynced, blocksToBeSynced, 0, 0, 0, fmt.Errorf("%w: Error parsing float from recoveryLine %q", ErrFileParse, recoveryLine) } // Get time expected left to complete matches = recoveryLineFinishRE.FindStringSubmatch(recoveryLine) if len(matches) != 2 { - return syncedBlocks, pct, 0, 0, fmt.Errorf("%w: Unexpected recoveryLine matching est. finish time: %s", ErrFileParse, recoveryLine) + return blocksSynced, blocksToBeSynced, pct, 0, 0, fmt.Errorf("%w: Unexpected recoveryLine matching est. finish time: %s", ErrFileParse, recoveryLine) } finish, err = strconv.ParseFloat(matches[1], 64) if err != nil { - return syncedBlocks, pct, 0, 0, fmt.Errorf("%w: Unable to parse float from recoveryLine: %q", ErrFileParse, recoveryLine) + return blocksSynced, blocksToBeSynced, pct, 0, 0, fmt.Errorf("%w: Unable to parse float from recoveryLine: %q", ErrFileParse, recoveryLine) } // Get recovery speed matches = recoveryLineSpeedRE.FindStringSubmatch(recoveryLine) if len(matches) != 2 { - return syncedBlocks, pct, finish, 0, fmt.Errorf("%w: Unexpected recoveryLine value: %s", ErrFileParse, recoveryLine) + return blocksSynced, blocksToBeSynced, pct, finish, 0, fmt.Errorf("%w: Unexpected recoveryLine value: %s", ErrFileParse, recoveryLine) } speed, err = strconv.ParseFloat(matches[1], 64) if err != nil { - return syncedBlocks, pct, finish, 0, fmt.Errorf("%s: Error parsing float from recoveryLine: %q: %w", ErrFileParse, recoveryLine, err) + return blocksSynced, blocksToBeSynced, pct, finish, 0, fmt.Errorf("%w: Error parsing float from recoveryLine: %q: %w", ErrFileParse, recoveryLine, err) } - return syncedBlocks, pct, finish, speed, nil + return blocksSynced, blocksToBeSynced, pct, finish, speed, nil } func evalComponentDevices(deviceFields []string) []string { diff --git a/vendor/github.com/prometheus/procfs/meminfo.go b/vendor/github.com/prometheus/procfs/meminfo.go index eaf00e22482e..4b2c4050a3df 100644 --- a/vendor/github.com/prometheus/procfs/meminfo.go +++ b/vendor/github.com/prometheus/procfs/meminfo.go @@ -126,6 +126,7 @@ type Meminfo struct { VmallocUsed *uint64 // largest contiguous block of vmalloc area which is free VmallocChunk *uint64 + Percpu *uint64 HardwareCorrupted *uint64 AnonHugePages *uint64 ShmemHugePages *uint64 @@ -140,6 +141,55 @@ type Meminfo struct { DirectMap4k *uint64 DirectMap2M *uint64 DirectMap1G *uint64 + + // The struct fields below are the byte-normalized counterparts to the + // existing struct fields. Values are normalized using the optional + // unit field in the meminfo line. + MemTotalBytes *uint64 + MemFreeBytes *uint64 + MemAvailableBytes *uint64 + BuffersBytes *uint64 + CachedBytes *uint64 + SwapCachedBytes *uint64 + ActiveBytes *uint64 + InactiveBytes *uint64 + ActiveAnonBytes *uint64 + InactiveAnonBytes *uint64 + ActiveFileBytes *uint64 + InactiveFileBytes *uint64 + UnevictableBytes *uint64 + MlockedBytes *uint64 + SwapTotalBytes *uint64 + SwapFreeBytes *uint64 + DirtyBytes *uint64 + WritebackBytes *uint64 + AnonPagesBytes *uint64 + MappedBytes *uint64 + ShmemBytes *uint64 + SlabBytes *uint64 + SReclaimableBytes *uint64 + SUnreclaimBytes *uint64 + KernelStackBytes *uint64 + PageTablesBytes *uint64 + NFSUnstableBytes *uint64 + BounceBytes *uint64 + WritebackTmpBytes *uint64 + CommitLimitBytes *uint64 + CommittedASBytes *uint64 + VmallocTotalBytes *uint64 + VmallocUsedBytes *uint64 + VmallocChunkBytes *uint64 + PercpuBytes *uint64 + HardwareCorruptedBytes *uint64 + AnonHugePagesBytes *uint64 + ShmemHugePagesBytes *uint64 + ShmemPmdMappedBytes *uint64 + CmaTotalBytes *uint64 + CmaFreeBytes *uint64 + HugepagesizeBytes *uint64 + DirectMap4kBytes *uint64 + DirectMap2MBytes *uint64 + DirectMap1GBytes *uint64 } // Meminfo returns an information about current kernel/system memory statistics. @@ -152,7 +202,7 @@ func (fs FS) Meminfo() (Meminfo, error) { m, err := parseMemInfo(bytes.NewReader(b)) if err != nil { - return Meminfo{}, fmt.Errorf("%s: %w", ErrFileParse, err) + return Meminfo{}, fmt.Errorf("%w: %w", ErrFileParse, err) } return *m, nil @@ -162,114 +212,176 @@ func parseMemInfo(r io.Reader) (*Meminfo, error) { var m Meminfo s := bufio.NewScanner(r) for s.Scan() { - // Each line has at least a name and value; we ignore the unit. fields := strings.Fields(s.Text()) - if len(fields) < 2 { - return nil, fmt.Errorf("%w: Malformed line %q", ErrFileParse, s.Text()) - } + var val, valBytes uint64 - v, err := strconv.ParseUint(fields[1], 0, 64) + val, err := strconv.ParseUint(fields[1], 0, 64) if err != nil { return nil, err } + switch len(fields) { + case 2: + // No unit present, use the parsed the value as bytes directly. + valBytes = val + case 3: + // Unit present in optional 3rd field, convert it to + // bytes. The only unit supported within the Linux + // kernel is `kB`. + if fields[2] != "kB" { + return nil, fmt.Errorf("%w: Unsupported unit in optional 3rd field %q", ErrFileParse, fields[2]) + } + + valBytes = 1024 * val + + default: + return nil, fmt.Errorf("%w: Malformed line %q", ErrFileParse, s.Text()) + } + switch fields[0] { case "MemTotal:": - m.MemTotal = &v + m.MemTotal = &val + m.MemTotalBytes = &valBytes case "MemFree:": - m.MemFree = &v + m.MemFree = &val + m.MemFreeBytes = &valBytes case "MemAvailable:": - m.MemAvailable = &v + m.MemAvailable = &val + m.MemAvailableBytes = &valBytes case "Buffers:": - m.Buffers = &v + m.Buffers = &val + m.BuffersBytes = &valBytes case "Cached:": - m.Cached = &v + m.Cached = &val + m.CachedBytes = &valBytes case "SwapCached:": - m.SwapCached = &v + m.SwapCached = &val + m.SwapCachedBytes = &valBytes case "Active:": - m.Active = &v + m.Active = &val + m.ActiveBytes = &valBytes case "Inactive:": - m.Inactive = &v + m.Inactive = &val + m.InactiveBytes = &valBytes case "Active(anon):": - m.ActiveAnon = &v + m.ActiveAnon = &val + m.ActiveAnonBytes = &valBytes case "Inactive(anon):": - m.InactiveAnon = &v + m.InactiveAnon = &val + m.InactiveAnonBytes = &valBytes case "Active(file):": - m.ActiveFile = &v + m.ActiveFile = &val + m.ActiveFileBytes = &valBytes case "Inactive(file):": - m.InactiveFile = &v + m.InactiveFile = &val + m.InactiveFileBytes = &valBytes case "Unevictable:": - m.Unevictable = &v + m.Unevictable = &val + m.UnevictableBytes = &valBytes case "Mlocked:": - m.Mlocked = &v + m.Mlocked = &val + m.MlockedBytes = &valBytes case "SwapTotal:": - m.SwapTotal = &v + m.SwapTotal = &val + m.SwapTotalBytes = &valBytes case "SwapFree:": - m.SwapFree = &v + m.SwapFree = &val + m.SwapFreeBytes = &valBytes case "Dirty:": - m.Dirty = &v + m.Dirty = &val + m.DirtyBytes = &valBytes case "Writeback:": - m.Writeback = &v + m.Writeback = &val + m.WritebackBytes = &valBytes case "AnonPages:": - m.AnonPages = &v + m.AnonPages = &val + m.AnonPagesBytes = &valBytes case "Mapped:": - m.Mapped = &v + m.Mapped = &val + m.MappedBytes = &valBytes case "Shmem:": - m.Shmem = &v + m.Shmem = &val + m.ShmemBytes = &valBytes case "Slab:": - m.Slab = &v + m.Slab = &val + m.SlabBytes = &valBytes case "SReclaimable:": - m.SReclaimable = &v + m.SReclaimable = &val + m.SReclaimableBytes = &valBytes case "SUnreclaim:": - m.SUnreclaim = &v + m.SUnreclaim = &val + m.SUnreclaimBytes = &valBytes case "KernelStack:": - m.KernelStack = &v + m.KernelStack = &val + m.KernelStackBytes = &valBytes case "PageTables:": - m.PageTables = &v + m.PageTables = &val + m.PageTablesBytes = &valBytes case "NFS_Unstable:": - m.NFSUnstable = &v + m.NFSUnstable = &val + m.NFSUnstableBytes = &valBytes case "Bounce:": - m.Bounce = &v + m.Bounce = &val + m.BounceBytes = &valBytes case "WritebackTmp:": - m.WritebackTmp = &v + m.WritebackTmp = &val + m.WritebackTmpBytes = &valBytes case "CommitLimit:": - m.CommitLimit = &v + m.CommitLimit = &val + m.CommitLimitBytes = &valBytes case "Committed_AS:": - m.CommittedAS = &v + m.CommittedAS = &val + m.CommittedASBytes = &valBytes case "VmallocTotal:": - m.VmallocTotal = &v + m.VmallocTotal = &val + m.VmallocTotalBytes = &valBytes case "VmallocUsed:": - m.VmallocUsed = &v + m.VmallocUsed = &val + m.VmallocUsedBytes = &valBytes case "VmallocChunk:": - m.VmallocChunk = &v + m.VmallocChunk = &val + m.VmallocChunkBytes = &valBytes + case "Percpu:": + m.Percpu = &val + m.PercpuBytes = &valBytes case "HardwareCorrupted:": - m.HardwareCorrupted = &v + m.HardwareCorrupted = &val + m.HardwareCorruptedBytes = &valBytes case "AnonHugePages:": - m.AnonHugePages = &v + m.AnonHugePages = &val + m.AnonHugePagesBytes = &valBytes case "ShmemHugePages:": - m.ShmemHugePages = &v + m.ShmemHugePages = &val + m.ShmemHugePagesBytes = &valBytes case "ShmemPmdMapped:": - m.ShmemPmdMapped = &v + m.ShmemPmdMapped = &val + m.ShmemPmdMappedBytes = &valBytes case "CmaTotal:": - m.CmaTotal = &v + m.CmaTotal = &val + m.CmaTotalBytes = &valBytes case "CmaFree:": - m.CmaFree = &v + m.CmaFree = &val + m.CmaFreeBytes = &valBytes case "HugePages_Total:": - m.HugePagesTotal = &v + m.HugePagesTotal = &val case "HugePages_Free:": - m.HugePagesFree = &v + m.HugePagesFree = &val case "HugePages_Rsvd:": - m.HugePagesRsvd = &v + m.HugePagesRsvd = &val case "HugePages_Surp:": - m.HugePagesSurp = &v + m.HugePagesSurp = &val case "Hugepagesize:": - m.Hugepagesize = &v + m.Hugepagesize = &val + m.HugepagesizeBytes = &valBytes case "DirectMap4k:": - m.DirectMap4k = &v + m.DirectMap4k = &val + m.DirectMap4kBytes = &valBytes case "DirectMap2M:": - m.DirectMap2M = &v + m.DirectMap2M = &val + m.DirectMap2MBytes = &valBytes case "DirectMap1G:": - m.DirectMap1G = &v + m.DirectMap1G = &val + m.DirectMap1GBytes = &valBytes } } diff --git a/vendor/github.com/prometheus/procfs/mountinfo.go b/vendor/github.com/prometheus/procfs/mountinfo.go index 388ebf396d50..a704c5e735f3 100644 --- a/vendor/github.com/prometheus/procfs/mountinfo.go +++ b/vendor/github.com/prometheus/procfs/mountinfo.go @@ -109,7 +109,7 @@ func parseMountInfoString(mountString string) (*MountInfo, error) { if mountInfo[6] != "" { mount.OptionalFields, err = mountOptionsParseOptionalFields(mountInfo[6 : mountInfoLength-4]) if err != nil { - return nil, fmt.Errorf("%s: %w", ErrFileParse, err) + return nil, fmt.Errorf("%w: %w", ErrFileParse, err) } } return mount, nil diff --git a/vendor/github.com/prometheus/procfs/mountstats.go b/vendor/github.com/prometheus/procfs/mountstats.go index 9d8af6db7425..75a3b6c810ff 100644 --- a/vendor/github.com/prometheus/procfs/mountstats.go +++ b/vendor/github.com/prometheus/procfs/mountstats.go @@ -88,7 +88,7 @@ type MountStatsNFS struct { // Statistics broken down by filesystem operation. Operations []NFSOperationStats // Statistics about the NFS RPC transport. - Transport NFSTransportStats + Transport []NFSTransportStats } // mountStats implements MountStats. @@ -194,8 +194,6 @@ type NFSOperationStats struct { CumulativeTotalResponseMilliseconds uint64 // Duration from when a request was enqueued to when it was completely handled. CumulativeTotalRequestMilliseconds uint64 - // The average time from the point the client sends RPC requests until it receives the response. - AverageRTTMilliseconds float64 // The count of operations that complete with tk_status < 0. These statuses usually indicate error conditions. Errors uint64 } @@ -434,7 +432,7 @@ func parseMountStatsNFS(s *bufio.Scanner, statVersion string) (*MountStatsNFS, e return nil, err } - stats.Transport = *tstats + stats.Transport = append(stats.Transport, *tstats) } // When encountering "per-operation statistics", we must break this @@ -582,9 +580,6 @@ func parseNFSOperationStats(s *bufio.Scanner) ([]NFSOperationStats, error) { CumulativeTotalResponseMilliseconds: ns[6], CumulativeTotalRequestMilliseconds: ns[7], } - if ns[0] != 0 { - opStats.AverageRTTMilliseconds = float64(ns[6]) / float64(ns[0]) - } if len(ns) > 8 { opStats.Errors = ns[8] @@ -632,7 +627,7 @@ func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats return nil, fmt.Errorf("%w: invalid NFS transport stats 1.1 statement: %v, protocol: %v", ErrFileParse, ss, protocol) } default: - return nil, fmt.Errorf("%s: Unrecognized NFS transport stats version: %q, protocol: %v", ErrFileParse, statVersion, protocol) + return nil, fmt.Errorf("%w: Unrecognized NFS transport stats version: %q, protocol: %v", ErrFileParse, statVersion, protocol) } // Allocate enough for v1.1 stats since zero value for v1.1 stats will be okay diff --git a/vendor/github.com/prometheus/procfs/net_conntrackstat.go b/vendor/github.com/prometheus/procfs/net_conntrackstat.go index fdfa45611974..316df5fbb74e 100644 --- a/vendor/github.com/prometheus/procfs/net_conntrackstat.go +++ b/vendor/github.com/prometheus/procfs/net_conntrackstat.go @@ -58,7 +58,7 @@ func readConntrackStat(path string) ([]ConntrackStatEntry, error) { stat, err := parseConntrackStat(bytes.NewReader(b)) if err != nil { - return nil, fmt.Errorf("%s: Cannot read file: %v: %w", ErrFileRead, path, err) + return nil, fmt.Errorf("%w: Cannot read file: %v: %w", ErrFileRead, path, err) } return stat, nil @@ -86,7 +86,7 @@ func parseConntrackStat(r io.Reader) ([]ConntrackStatEntry, error) { func parseConntrackStatEntry(fields []string) (*ConntrackStatEntry, error) { entries, err := util.ParseHexUint64s(fields) if err != nil { - return nil, fmt.Errorf("%s: Cannot parse entry: %d: %w", ErrFileParse, entries, err) + return nil, fmt.Errorf("%w: Cannot parse entry: %d: %w", ErrFileParse, entries, err) } numEntries := len(entries) if numEntries < 16 || numEntries > 17 { diff --git a/vendor/github.com/prometheus/procfs/net_ip_socket.go b/vendor/github.com/prometheus/procfs/net_ip_socket.go index 4da81ea577ca..b70f1fc7a4ab 100644 --- a/vendor/github.com/prometheus/procfs/net_ip_socket.go +++ b/vendor/github.com/prometheus/procfs/net_ip_socket.go @@ -50,10 +50,13 @@ type ( // UsedSockets shows the total number of parsed lines representing the // number of used sockets. UsedSockets uint64 + // Drops shows the total number of dropped packets of all UPD sockets. + Drops *uint64 } // netIPSocketLine represents the fields parsed from a single line // in /proc/net/{t,u}dp{,6}. Fields which are not used by IPSocket are skipped. + // Drops is non-nil for udp{,6}, but nil for tcp{,6}. // For the proc file format details, see https://linux.die.net/man/5/proc. netIPSocketLine struct { Sl uint64 @@ -66,6 +69,7 @@ type ( RxQueue uint64 UID uint64 Inode uint64 + Drops *uint64 } ) @@ -77,13 +81,14 @@ func newNetIPSocket(file string) (NetIPSocket, error) { defer f.Close() var netIPSocket NetIPSocket + isUDP := strings.Contains(file, "udp") lr := io.LimitReader(f, readLimit) s := bufio.NewScanner(lr) s.Scan() // skip first line with headers for s.Scan() { fields := strings.Fields(s.Text()) - line, err := parseNetIPSocketLine(fields) + line, err := parseNetIPSocketLine(fields, isUDP) if err != nil { return nil, err } @@ -104,19 +109,25 @@ func newNetIPSocketSummary(file string) (*NetIPSocketSummary, error) { defer f.Close() var netIPSocketSummary NetIPSocketSummary + var udpPacketDrops uint64 + isUDP := strings.Contains(file, "udp") lr := io.LimitReader(f, readLimit) s := bufio.NewScanner(lr) s.Scan() // skip first line with headers for s.Scan() { fields := strings.Fields(s.Text()) - line, err := parseNetIPSocketLine(fields) + line, err := parseNetIPSocketLine(fields, isUDP) if err != nil { return nil, err } netIPSocketSummary.TxQueueLength += line.TxQueue netIPSocketSummary.RxQueueLength += line.RxQueue netIPSocketSummary.UsedSockets++ + if isUDP { + udpPacketDrops += *line.Drops + netIPSocketSummary.Drops = &udpPacketDrops + } } if err := s.Err(); err != nil { return nil, err @@ -130,7 +141,7 @@ func parseIP(hexIP string) (net.IP, error) { var byteIP []byte byteIP, err := hex.DecodeString(hexIP) if err != nil { - return nil, fmt.Errorf("%s: Cannot parse socket field in %q: %w", ErrFileParse, hexIP, err) + return nil, fmt.Errorf("%w: Cannot parse socket field in %q: %w", ErrFileParse, hexIP, err) } switch len(byteIP) { case 4: @@ -144,12 +155,12 @@ func parseIP(hexIP string) (net.IP, error) { } return i, nil default: - return nil, fmt.Errorf("%s: Unable to parse IP %s: %w", ErrFileParse, hexIP, nil) + return nil, fmt.Errorf("%w: Unable to parse IP %s: %v", ErrFileParse, hexIP, nil) } } // parseNetIPSocketLine parses a single line, represented by a list of fields. -func parseNetIPSocketLine(fields []string) (*netIPSocketLine, error) { +func parseNetIPSocketLine(fields []string, isUDP bool) (*netIPSocketLine, error) { line := &netIPSocketLine{} if len(fields) < 10 { return nil, fmt.Errorf( @@ -167,7 +178,7 @@ func parseNetIPSocketLine(fields []string) (*netIPSocketLine, error) { } if line.Sl, err = strconv.ParseUint(s[0], 0, 64); err != nil { - return nil, fmt.Errorf("%s: Unable to parse sl field in %q: %w", ErrFileParse, line.Sl, err) + return nil, fmt.Errorf("%w: Unable to parse sl field in %q: %w", ErrFileParse, line.Sl, err) } // local_address l := strings.Split(fields[1], ":") @@ -178,7 +189,7 @@ func parseNetIPSocketLine(fields []string) (*netIPSocketLine, error) { return nil, err } if line.LocalPort, err = strconv.ParseUint(l[1], 16, 64); err != nil { - return nil, fmt.Errorf("%s: Unable to parse local_address port value line %q: %w", ErrFileParse, line.LocalPort, err) + return nil, fmt.Errorf("%w: Unable to parse local_address port value line %q: %w", ErrFileParse, line.LocalPort, err) } // remote_address @@ -190,12 +201,12 @@ func parseNetIPSocketLine(fields []string) (*netIPSocketLine, error) { return nil, err } if line.RemPort, err = strconv.ParseUint(r[1], 16, 64); err != nil { - return nil, fmt.Errorf("%s: Cannot parse rem_address port value in %q: %w", ErrFileParse, line.RemPort, err) + return nil, fmt.Errorf("%w: Cannot parse rem_address port value in %q: %w", ErrFileParse, line.RemPort, err) } // st if line.St, err = strconv.ParseUint(fields[3], 16, 64); err != nil { - return nil, fmt.Errorf("%s: Cannot parse st value in %q: %w", ErrFileParse, line.St, err) + return nil, fmt.Errorf("%w: Cannot parse st value in %q: %w", ErrFileParse, line.St, err) } // tx_queue and rx_queue @@ -208,20 +219,29 @@ func parseNetIPSocketLine(fields []string) (*netIPSocketLine, error) { ) } if line.TxQueue, err = strconv.ParseUint(q[0], 16, 64); err != nil { - return nil, fmt.Errorf("%s: Cannot parse tx_queue value in %q: %w", ErrFileParse, line.TxQueue, err) + return nil, fmt.Errorf("%w: Cannot parse tx_queue value in %q: %w", ErrFileParse, line.TxQueue, err) } if line.RxQueue, err = strconv.ParseUint(q[1], 16, 64); err != nil { - return nil, fmt.Errorf("%s: Cannot parse trx_queue value in %q: %w", ErrFileParse, line.RxQueue, err) + return nil, fmt.Errorf("%w: Cannot parse trx_queue value in %q: %w", ErrFileParse, line.RxQueue, err) } // uid if line.UID, err = strconv.ParseUint(fields[7], 0, 64); err != nil { - return nil, fmt.Errorf("%s: Cannot parse UID value in %q: %w", ErrFileParse, line.UID, err) + return nil, fmt.Errorf("%w: Cannot parse UID value in %q: %w", ErrFileParse, line.UID, err) } // inode if line.Inode, err = strconv.ParseUint(fields[9], 0, 64); err != nil { - return nil, fmt.Errorf("%s: Cannot parse inode value in %q: %w", ErrFileParse, line.Inode, err) + return nil, fmt.Errorf("%w: Cannot parse inode value in %q: %w", ErrFileParse, line.Inode, err) + } + + // drops + if isUDP { + drops, err := strconv.ParseUint(fields[12], 0, 64) + if err != nil { + return nil, fmt.Errorf("%w: Cannot parse drops value in %q: %w", ErrFileParse, drops, err) + } + line.Drops = &drops } return line, nil diff --git a/vendor/github.com/prometheus/procfs/net_sockstat.go b/vendor/github.com/prometheus/procfs/net_sockstat.go index 360e36af7dff..fae62b13d961 100644 --- a/vendor/github.com/prometheus/procfs/net_sockstat.go +++ b/vendor/github.com/prometheus/procfs/net_sockstat.go @@ -69,7 +69,7 @@ func readSockstat(name string) (*NetSockstat, error) { stat, err := parseSockstat(bytes.NewReader(b)) if err != nil { - return nil, fmt.Errorf("%s: sockstats from %q: %w", ErrFileRead, name, err) + return nil, fmt.Errorf("%w: sockstats from %q: %w", ErrFileRead, name, err) } return stat, nil @@ -89,7 +89,7 @@ func parseSockstat(r io.Reader) (*NetSockstat, error) { // The remaining fields are key/value pairs. kvs, err := parseSockstatKVs(fields[1:]) if err != nil { - return nil, fmt.Errorf("%s: sockstat key/value pairs from %q: %w", ErrFileParse, s.Text(), err) + return nil, fmt.Errorf("%w: sockstat key/value pairs from %q: %w", ErrFileParse, s.Text(), err) } // The first field is the protocol. We must trim its colon suffix. diff --git a/vendor/github.com/prometheus/procfs/net_softnet.go b/vendor/github.com/prometheus/procfs/net_softnet.go index c77085291925..71c8059f4d77 100644 --- a/vendor/github.com/prometheus/procfs/net_softnet.go +++ b/vendor/github.com/prometheus/procfs/net_softnet.go @@ -64,7 +64,7 @@ func (fs FS) NetSoftnetStat() ([]SoftnetStat, error) { entries, err := parseSoftnet(bytes.NewReader(b)) if err != nil { - return nil, fmt.Errorf("%s: /proc/net/softnet_stat: %w", ErrFileParse, err) + return nil, fmt.Errorf("%w: /proc/net/softnet_stat: %w", ErrFileParse, err) } return entries, nil diff --git a/vendor/github.com/prometheus/procfs/net_tls_stat.go b/vendor/github.com/prometheus/procfs/net_tls_stat.go new file mode 100644 index 000000000000..13994c1782f4 --- /dev/null +++ b/vendor/github.com/prometheus/procfs/net_tls_stat.go @@ -0,0 +1,119 @@ +// Copyright 2023 Prometheus Team +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package procfs + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +// TLSStat struct represents data in /proc/net/tls_stat. +// See https://docs.kernel.org/networking/tls.html#statistics +type TLSStat struct { + // number of TX sessions currently installed where host handles cryptography + TLSCurrTxSw int + // number of RX sessions currently installed where host handles cryptography + TLSCurrRxSw int + // number of TX sessions currently installed where NIC handles cryptography + TLSCurrTxDevice int + // number of RX sessions currently installed where NIC handles cryptography + TLSCurrRxDevice int + //number of TX sessions opened with host cryptography + TLSTxSw int + //number of RX sessions opened with host cryptography + TLSRxSw int + // number of TX sessions opened with NIC cryptography + TLSTxDevice int + // number of RX sessions opened with NIC cryptography + TLSRxDevice int + // record decryption failed (e.g. due to incorrect authentication tag) + TLSDecryptError int + // number of RX resyncs sent to NICs handling cryptography + TLSRxDeviceResync int + // number of RX records which had to be re-decrypted due to TLS_RX_EXPECT_NO_PAD mis-prediction. Note that this counter will also increment for non-data records. + TLSDecryptRetry int + // number of data RX records which had to be re-decrypted due to TLS_RX_EXPECT_NO_PAD mis-prediction. + TLSRxNoPadViolation int +} + +// NewTLSStat reads the tls_stat statistics. +func NewTLSStat() (TLSStat, error) { + fs, err := NewFS(DefaultMountPoint) + if err != nil { + return TLSStat{}, err + } + + return fs.NewTLSStat() +} + +// NewTLSStat reads the tls_stat statistics. +func (fs FS) NewTLSStat() (TLSStat, error) { + file, err := os.Open(fs.proc.Path("net/tls_stat")) + if err != nil { + return TLSStat{}, err + } + defer file.Close() + + var ( + tlsstat = TLSStat{} + s = bufio.NewScanner(file) + ) + + for s.Scan() { + fields := strings.Fields(s.Text()) + + if len(fields) != 2 { + return TLSStat{}, fmt.Errorf("%w: %q line %q", ErrFileParse, file.Name(), s.Text()) + } + + name := fields[0] + value, err := strconv.Atoi(fields[1]) + if err != nil { + return TLSStat{}, err + } + + switch name { + case "TlsCurrTxSw": + tlsstat.TLSCurrTxSw = value + case "TlsCurrRxSw": + tlsstat.TLSCurrRxSw = value + case "TlsCurrTxDevice": + tlsstat.TLSCurrTxDevice = value + case "TlsCurrRxDevice": + tlsstat.TLSCurrRxDevice = value + case "TlsTxSw": + tlsstat.TLSTxSw = value + case "TlsRxSw": + tlsstat.TLSRxSw = value + case "TlsTxDevice": + tlsstat.TLSTxDevice = value + case "TlsRxDevice": + tlsstat.TLSRxDevice = value + case "TlsDecryptError": + tlsstat.TLSDecryptError = value + case "TlsRxDeviceResync": + tlsstat.TLSRxDeviceResync = value + case "TlsDecryptRetry": + tlsstat.TLSDecryptRetry = value + case "TlsRxNoPadViolation": + tlsstat.TLSRxNoPadViolation = value + } + + } + + return tlsstat, s.Err() +} diff --git a/vendor/github.com/prometheus/procfs/net_unix.go b/vendor/github.com/prometheus/procfs/net_unix.go index acbbc57eaba1..d868cebdaae8 100644 --- a/vendor/github.com/prometheus/procfs/net_unix.go +++ b/vendor/github.com/prometheus/procfs/net_unix.go @@ -108,14 +108,14 @@ func parseNetUNIX(r io.Reader) (*NetUNIX, error) { line := s.Text() item, err := nu.parseLine(line, hasInode, minFields) if err != nil { - return nil, fmt.Errorf("%s: /proc/net/unix encountered data %q: %w", ErrFileParse, line, err) + return nil, fmt.Errorf("%w: /proc/net/unix encountered data %q: %w", ErrFileParse, line, err) } nu.Rows = append(nu.Rows, item) } if err := s.Err(); err != nil { - return nil, fmt.Errorf("%s: /proc/net/unix encountered data: %w", ErrFileParse, err) + return nil, fmt.Errorf("%w: /proc/net/unix encountered data: %w", ErrFileParse, err) } return &nu, nil @@ -136,29 +136,29 @@ func (u *NetUNIX) parseLine(line string, hasInode bool, min int) (*NetUNIXLine, users, err := u.parseUsers(fields[1]) if err != nil { - return nil, fmt.Errorf("%s: ref count %q: %w", ErrFileParse, fields[1], err) + return nil, fmt.Errorf("%w: ref count %q: %w", ErrFileParse, fields[1], err) } flags, err := u.parseFlags(fields[3]) if err != nil { - return nil, fmt.Errorf("%s: Unable to parse flags %q: %w", ErrFileParse, fields[3], err) + return nil, fmt.Errorf("%w: Unable to parse flags %q: %w", ErrFileParse, fields[3], err) } typ, err := u.parseType(fields[4]) if err != nil { - return nil, fmt.Errorf("%s: Failed to parse type %q: %w", ErrFileParse, fields[4], err) + return nil, fmt.Errorf("%w: Failed to parse type %q: %w", ErrFileParse, fields[4], err) } state, err := u.parseState(fields[5]) if err != nil { - return nil, fmt.Errorf("%s: Failed to parse state %q: %w", ErrFileParse, fields[5], err) + return nil, fmt.Errorf("%w: Failed to parse state %q: %w", ErrFileParse, fields[5], err) } var inode uint64 if hasInode { inode, err = u.parseInode(fields[6]) if err != nil { - return nil, fmt.Errorf("%s failed to parse inode %q: %w", ErrFileParse, fields[6], err) + return nil, fmt.Errorf("%w failed to parse inode %q: %w", ErrFileParse, fields[6], err) } } diff --git a/vendor/github.com/prometheus/procfs/net_wireless.go b/vendor/github.com/prometheus/procfs/net_wireless.go index 7443edca9468..7c597bc87089 100644 --- a/vendor/github.com/prometheus/procfs/net_wireless.go +++ b/vendor/github.com/prometheus/procfs/net_wireless.go @@ -68,7 +68,7 @@ func (fs FS) Wireless() ([]*Wireless, error) { m, err := parseWireless(bytes.NewReader(b)) if err != nil { - return nil, fmt.Errorf("%s: wireless: %w", ErrFileParse, err) + return nil, fmt.Errorf("%w: wireless: %w", ErrFileParse, err) } return m, nil @@ -114,47 +114,47 @@ func parseWireless(r io.Reader) ([]*Wireless, error) { qlink, err := strconv.Atoi(strings.TrimSuffix(stats[1], ".")) if err != nil { - return nil, fmt.Errorf("%s: parse Quality:link as integer %q: %w", ErrFileParse, qlink, err) + return nil, fmt.Errorf("%w: parse Quality:link as integer %q: %w", ErrFileParse, qlink, err) } qlevel, err := strconv.Atoi(strings.TrimSuffix(stats[2], ".")) if err != nil { - return nil, fmt.Errorf("%s: Quality:level as integer %q: %w", ErrFileParse, qlevel, err) + return nil, fmt.Errorf("%w: Quality:level as integer %q: %w", ErrFileParse, qlevel, err) } qnoise, err := strconv.Atoi(strings.TrimSuffix(stats[3], ".")) if err != nil { - return nil, fmt.Errorf("%s: Quality:noise as integer %q: %w", ErrFileParse, qnoise, err) + return nil, fmt.Errorf("%w: Quality:noise as integer %q: %w", ErrFileParse, qnoise, err) } dnwid, err := strconv.Atoi(stats[4]) if err != nil { - return nil, fmt.Errorf("%s: Discarded:nwid as integer %q: %w", ErrFileParse, dnwid, err) + return nil, fmt.Errorf("%w: Discarded:nwid as integer %q: %w", ErrFileParse, dnwid, err) } dcrypt, err := strconv.Atoi(stats[5]) if err != nil { - return nil, fmt.Errorf("%s: Discarded:crypt as integer %q: %w", ErrFileParse, dcrypt, err) + return nil, fmt.Errorf("%w: Discarded:crypt as integer %q: %w", ErrFileParse, dcrypt, err) } dfrag, err := strconv.Atoi(stats[6]) if err != nil { - return nil, fmt.Errorf("%s: Discarded:frag as integer %q: %w", ErrFileParse, dfrag, err) + return nil, fmt.Errorf("%w: Discarded:frag as integer %q: %w", ErrFileParse, dfrag, err) } dretry, err := strconv.Atoi(stats[7]) if err != nil { - return nil, fmt.Errorf("%s: Discarded:retry as integer %q: %w", ErrFileParse, dretry, err) + return nil, fmt.Errorf("%w: Discarded:retry as integer %q: %w", ErrFileParse, dretry, err) } dmisc, err := strconv.Atoi(stats[8]) if err != nil { - return nil, fmt.Errorf("%s: Discarded:misc as integer %q: %w", ErrFileParse, dmisc, err) + return nil, fmt.Errorf("%w: Discarded:misc as integer %q: %w", ErrFileParse, dmisc, err) } mbeacon, err := strconv.Atoi(stats[9]) if err != nil { - return nil, fmt.Errorf("%s: Missed:beacon as integer %q: %w", ErrFileParse, mbeacon, err) + return nil, fmt.Errorf("%w: Missed:beacon as integer %q: %w", ErrFileParse, mbeacon, err) } w := &Wireless{ @@ -175,7 +175,7 @@ func parseWireless(r io.Reader) ([]*Wireless, error) { } if err := scanner.Err(); err != nil { - return nil, fmt.Errorf("%s: Failed to scan /proc/net/wireless: %w", ErrFileRead, err) + return nil, fmt.Errorf("%w: Failed to scan /proc/net/wireless: %w", ErrFileRead, err) } return interfaces, nil diff --git a/vendor/github.com/prometheus/procfs/proc.go b/vendor/github.com/prometheus/procfs/proc.go index d1f71caa5d7a..142796368fef 100644 --- a/vendor/github.com/prometheus/procfs/proc.go +++ b/vendor/github.com/prometheus/procfs/proc.go @@ -111,7 +111,7 @@ func (fs FS) AllProcs() (Procs, error) { names, err := d.Readdirnames(-1) if err != nil { - return Procs{}, fmt.Errorf("%s: Cannot read file: %v: %w", ErrFileRead, names, err) + return Procs{}, fmt.Errorf("%w: Cannot read file: %v: %w", ErrFileRead, names, err) } p := Procs{} @@ -137,7 +137,7 @@ func (p Proc) CmdLine() ([]string, error) { return []string{}, nil } - return strings.Split(string(bytes.TrimRight(data, string("\x00"))), string(byte(0))), nil + return strings.Split(string(bytes.TrimRight(data, "\x00")), "\x00"), nil } // Wchan returns the wchan (wait channel) of a process. @@ -212,7 +212,7 @@ func (p Proc) FileDescriptors() ([]uintptr, error) { for i, n := range names { fd, err := strconv.ParseInt(n, 10, 32) if err != nil { - return nil, fmt.Errorf("%s: Cannot parse line: %v: %w", ErrFileParse, i, err) + return nil, fmt.Errorf("%w: Cannot parse line: %v: %w", ErrFileParse, i, err) } fds[i] = uintptr(fd) } @@ -297,7 +297,7 @@ func (p Proc) fileDescriptors() ([]string, error) { names, err := d.Readdirnames(-1) if err != nil { - return nil, fmt.Errorf("%s: Cannot read file: %v: %w", ErrFileRead, names, err) + return nil, fmt.Errorf("%w: Cannot read file: %v: %w", ErrFileRead, names, err) } return names, nil diff --git a/vendor/github.com/prometheus/procfs/proc_limits.go b/vendor/github.com/prometheus/procfs/proc_limits.go index c86d815d735d..9530b14bc681 100644 --- a/vendor/github.com/prometheus/procfs/proc_limits.go +++ b/vendor/github.com/prometheus/procfs/proc_limits.go @@ -154,7 +154,7 @@ func parseUint(s string) (uint64, error) { } i, err := strconv.ParseUint(s, 10, 64) if err != nil { - return 0, fmt.Errorf("%s: couldn't parse value %q: %w", ErrFileParse, s, err) + return 0, fmt.Errorf("%w: couldn't parse value %q: %w", ErrFileParse, s, err) } return i, nil } diff --git a/vendor/github.com/prometheus/procfs/proc_ns.go b/vendor/github.com/prometheus/procfs/proc_ns.go index c22666750f2c..0f8f847f954b 100644 --- a/vendor/github.com/prometheus/procfs/proc_ns.go +++ b/vendor/github.com/prometheus/procfs/proc_ns.go @@ -40,7 +40,7 @@ func (p Proc) Namespaces() (Namespaces, error) { names, err := d.Readdirnames(-1) if err != nil { - return nil, fmt.Errorf("%s: failed to read contents of ns dir: %w", ErrFileRead, err) + return nil, fmt.Errorf("%w: failed to read contents of ns dir: %w", ErrFileRead, err) } ns := make(Namespaces, len(names)) @@ -58,7 +58,7 @@ func (p Proc) Namespaces() (Namespaces, error) { typ := fields[0] inode, err := strconv.ParseUint(strings.Trim(fields[1], "[]"), 10, 32) if err != nil { - return nil, fmt.Errorf("%s: inode from %q: %w", ErrFileParse, fields[1], err) + return nil, fmt.Errorf("%w: inode from %q: %w", ErrFileParse, fields[1], err) } ns[name] = Namespace{typ, uint32(inode)} diff --git a/vendor/github.com/prometheus/procfs/proc_psi.go b/vendor/github.com/prometheus/procfs/proc_psi.go index fe9dbb425f57..ccd35f153a05 100644 --- a/vendor/github.com/prometheus/procfs/proc_psi.go +++ b/vendor/github.com/prometheus/procfs/proc_psi.go @@ -61,7 +61,7 @@ type PSIStats struct { func (fs FS) PSIStatsForResource(resource string) (PSIStats, error) { data, err := util.ReadFileNoStat(fs.proc.Path(fmt.Sprintf("%s/%s", "pressure", resource))) if err != nil { - return PSIStats{}, fmt.Errorf("%s: psi_stats: unavailable for %q: %w", ErrFileRead, resource, err) + return PSIStats{}, fmt.Errorf("%w: psi_stats: unavailable for %q: %w", ErrFileRead, resource, err) } return parsePSIStats(bytes.NewReader(data)) diff --git a/vendor/github.com/prometheus/procfs/proc_smaps.go b/vendor/github.com/prometheus/procfs/proc_smaps.go index ad8785a407aa..09060e820803 100644 --- a/vendor/github.com/prometheus/procfs/proc_smaps.go +++ b/vendor/github.com/prometheus/procfs/proc_smaps.go @@ -127,7 +127,7 @@ func (s *ProcSMapsRollup) parseLine(line string) error { } v := strings.TrimSpace(kv[1]) - v = strings.TrimRight(v, " kB") + v = strings.TrimSuffix(v, " kB") vKBytes, err := strconv.ParseUint(v, 10, 64) if err != nil { diff --git a/vendor/github.com/prometheus/procfs/proc_stat.go b/vendor/github.com/prometheus/procfs/proc_stat.go index 923e55005ba3..06a8d931c983 100644 --- a/vendor/github.com/prometheus/procfs/proc_stat.go +++ b/vendor/github.com/prometheus/procfs/proc_stat.go @@ -110,6 +110,11 @@ type ProcStat struct { Policy uint // Aggregated block I/O delays, measured in clock ticks (centiseconds). DelayAcctBlkIOTicks uint64 + // Guest time of the process (time spent running a virtual CPU for a guest + // operating system), measured in clock ticks. + GuestTime int + // Guest time of the process's children, measured in clock ticks. + CGuestTime int proc FS } @@ -189,6 +194,8 @@ func (p Proc) Stat() (ProcStat, error) { &s.RTPriority, &s.Policy, &s.DelayAcctBlkIOTicks, + &s.GuestTime, + &s.CGuestTime, ) if err != nil { return ProcStat{}, err diff --git a/vendor/github.com/prometheus/procfs/proc_status.go b/vendor/github.com/prometheus/procfs/proc_status.go index 46307f5721e2..a055197c63e8 100644 --- a/vendor/github.com/prometheus/procfs/proc_status.go +++ b/vendor/github.com/prometheus/procfs/proc_status.go @@ -15,6 +15,7 @@ package procfs import ( "bytes" + "math/bits" "sort" "strconv" "strings" @@ -76,9 +77,9 @@ type ProcStatus struct { NonVoluntaryCtxtSwitches uint64 // UIDs of the process (Real, effective, saved set, and filesystem UIDs) - UIDs [4]string + UIDs [4]uint64 // GIDs of the process (Real, effective, saved set, and filesystem GIDs) - GIDs [4]string + GIDs [4]uint64 // CpusAllowedList: List of cpu cores processes are allowed to run on. CpusAllowedList []uint64 @@ -113,22 +114,37 @@ func (p Proc) NewStatus() (ProcStatus, error) { // convert kB to B vBytes := vKBytes * 1024 - s.fillStatus(k, v, vKBytes, vBytes) + err = s.fillStatus(k, v, vKBytes, vBytes) + if err != nil { + return ProcStatus{}, err + } } return s, nil } -func (s *ProcStatus) fillStatus(k string, vString string, vUint uint64, vUintBytes uint64) { +func (s *ProcStatus) fillStatus(k string, vString string, vUint uint64, vUintBytes uint64) error { switch k { case "Tgid": s.TGID = int(vUint) case "Name": s.Name = vString case "Uid": - copy(s.UIDs[:], strings.Split(vString, "\t")) + var err error + for i, v := range strings.Split(vString, "\t") { + s.UIDs[i], err = strconv.ParseUint(v, 10, bits.UintSize) + if err != nil { + return err + } + } case "Gid": - copy(s.GIDs[:], strings.Split(vString, "\t")) + var err error + for i, v := range strings.Split(vString, "\t") { + s.GIDs[i], err = strconv.ParseUint(v, 10, bits.UintSize) + if err != nil { + return err + } + } case "NSpid": s.NSpids = calcNSPidsList(vString) case "VmPeak": @@ -173,6 +189,7 @@ func (s *ProcStatus) fillStatus(k string, vString string, vUint uint64, vUintByt s.CpusAllowedList = calcCpusAllowedList(vString) } + return nil } // TotalCtxtSwitches returns the total context switch. diff --git a/vendor/github.com/prometheus/procfs/proc_sys.go b/vendor/github.com/prometheus/procfs/proc_sys.go index 12c5bf05b74c..5eefbe2ef8b3 100644 --- a/vendor/github.com/prometheus/procfs/proc_sys.go +++ b/vendor/github.com/prometheus/procfs/proc_sys.go @@ -44,7 +44,7 @@ func (fs FS) SysctlInts(sysctl string) ([]int, error) { vp := util.NewValueParser(f) values[i] = vp.Int() if err := vp.Err(); err != nil { - return nil, fmt.Errorf("%s: field %d in sysctl %s is not a valid int: %w", ErrFileParse, i, sysctl, err) + return nil, fmt.Errorf("%w: field %d in sysctl %s is not a valid int: %w", ErrFileParse, i, sysctl, err) } } return values, nil diff --git a/vendor/github.com/prometheus/procfs/softirqs.go b/vendor/github.com/prometheus/procfs/softirqs.go index b8fad677dc68..28708e074595 100644 --- a/vendor/github.com/prometheus/procfs/softirqs.go +++ b/vendor/github.com/prometheus/procfs/softirqs.go @@ -74,7 +74,7 @@ func parseSoftirqs(r io.Reader) (Softirqs, error) { softirqs.Hi = make([]uint64, len(perCPU)) for i, count := range perCPU { if softirqs.Hi[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse %q (HI%d): %w", ErrFileParse, count, i, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse %q (HI%d): %w", ErrFileParse, count, i, err) } } case parts[0] == "TIMER:": @@ -82,7 +82,7 @@ func parseSoftirqs(r io.Reader) (Softirqs, error) { softirqs.Timer = make([]uint64, len(perCPU)) for i, count := range perCPU { if softirqs.Timer[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse %q (TIMER%d): %w", ErrFileParse, count, i, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse %q (TIMER%d): %w", ErrFileParse, count, i, err) } } case parts[0] == "NET_TX:": @@ -90,7 +90,7 @@ func parseSoftirqs(r io.Reader) (Softirqs, error) { softirqs.NetTx = make([]uint64, len(perCPU)) for i, count := range perCPU { if softirqs.NetTx[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse %q (NET_TX%d): %w", ErrFileParse, count, i, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse %q (NET_TX%d): %w", ErrFileParse, count, i, err) } } case parts[0] == "NET_RX:": @@ -98,7 +98,7 @@ func parseSoftirqs(r io.Reader) (Softirqs, error) { softirqs.NetRx = make([]uint64, len(perCPU)) for i, count := range perCPU { if softirqs.NetRx[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse %q (NET_RX%d): %w", ErrFileParse, count, i, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse %q (NET_RX%d): %w", ErrFileParse, count, i, err) } } case parts[0] == "BLOCK:": @@ -106,7 +106,7 @@ func parseSoftirqs(r io.Reader) (Softirqs, error) { softirqs.Block = make([]uint64, len(perCPU)) for i, count := range perCPU { if softirqs.Block[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse %q (BLOCK%d): %w", ErrFileParse, count, i, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse %q (BLOCK%d): %w", ErrFileParse, count, i, err) } } case parts[0] == "IRQ_POLL:": @@ -114,7 +114,7 @@ func parseSoftirqs(r io.Reader) (Softirqs, error) { softirqs.IRQPoll = make([]uint64, len(perCPU)) for i, count := range perCPU { if softirqs.IRQPoll[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse %q (IRQ_POLL%d): %w", ErrFileParse, count, i, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse %q (IRQ_POLL%d): %w", ErrFileParse, count, i, err) } } case parts[0] == "TASKLET:": @@ -122,7 +122,7 @@ func parseSoftirqs(r io.Reader) (Softirqs, error) { softirqs.Tasklet = make([]uint64, len(perCPU)) for i, count := range perCPU { if softirqs.Tasklet[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse %q (TASKLET%d): %w", ErrFileParse, count, i, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse %q (TASKLET%d): %w", ErrFileParse, count, i, err) } } case parts[0] == "SCHED:": @@ -130,7 +130,7 @@ func parseSoftirqs(r io.Reader) (Softirqs, error) { softirqs.Sched = make([]uint64, len(perCPU)) for i, count := range perCPU { if softirqs.Sched[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse %q (SCHED%d): %w", ErrFileParse, count, i, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse %q (SCHED%d): %w", ErrFileParse, count, i, err) } } case parts[0] == "HRTIMER:": @@ -138,7 +138,7 @@ func parseSoftirqs(r io.Reader) (Softirqs, error) { softirqs.HRTimer = make([]uint64, len(perCPU)) for i, count := range perCPU { if softirqs.HRTimer[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse %q (HRTIMER%d): %w", ErrFileParse, count, i, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse %q (HRTIMER%d): %w", ErrFileParse, count, i, err) } } case parts[0] == "RCU:": @@ -146,14 +146,14 @@ func parseSoftirqs(r io.Reader) (Softirqs, error) { softirqs.RCU = make([]uint64, len(perCPU)) for i, count := range perCPU { if softirqs.RCU[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse %q (RCU%d): %w", ErrFileParse, count, i, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse %q (RCU%d): %w", ErrFileParse, count, i, err) } } } } if err := scanner.Err(); err != nil { - return Softirqs{}, fmt.Errorf("%s: couldn't parse softirqs: %w", ErrFileParse, err) + return Softirqs{}, fmt.Errorf("%w: couldn't parse softirqs: %w", ErrFileParse, err) } return softirqs, scanner.Err() diff --git a/vendor/github.com/prometheus/procfs/stat.go b/vendor/github.com/prometheus/procfs/stat.go index 34fc3ee21b69..e36b41c18a90 100644 --- a/vendor/github.com/prometheus/procfs/stat.go +++ b/vendor/github.com/prometheus/procfs/stat.go @@ -93,7 +93,7 @@ func parseCPUStat(line string) (CPUStat, int64, error) { &cpuStat.Guest, &cpuStat.GuestNice) if err != nil && err != io.EOF { - return CPUStat{}, -1, fmt.Errorf("%s: couldn't parse %q (cpu): %w", ErrFileParse, line, err) + return CPUStat{}, -1, fmt.Errorf("%w: couldn't parse %q (cpu): %w", ErrFileParse, line, err) } if count == 0 { return CPUStat{}, -1, fmt.Errorf("%w: couldn't parse %q (cpu): 0 elements parsed", ErrFileParse, line) @@ -116,7 +116,7 @@ func parseCPUStat(line string) (CPUStat, int64, error) { cpuID, err := strconv.ParseInt(cpu[3:], 10, 64) if err != nil { - return CPUStat{}, -1, fmt.Errorf("%s: couldn't parse %q (cpu/cpuid): %w", ErrFileParse, line, err) + return CPUStat{}, -1, fmt.Errorf("%w: couldn't parse %q (cpu/cpuid): %w", ErrFileParse, line, err) } return cpuStat, cpuID, nil @@ -136,7 +136,7 @@ func parseSoftIRQStat(line string) (SoftIRQStat, uint64, error) { &softIRQStat.Hrtimer, &softIRQStat.Rcu) if err != nil { - return SoftIRQStat{}, 0, fmt.Errorf("%s: couldn't parse %q (softirq): %w", ErrFileParse, line, err) + return SoftIRQStat{}, 0, fmt.Errorf("%w: couldn't parse %q (softirq): %w", ErrFileParse, line, err) } return softIRQStat, total, nil @@ -201,34 +201,34 @@ func parseStat(r io.Reader, fileName string) (Stat, error) { switch { case parts[0] == "btime": if stat.BootTime, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("%s: couldn't parse %q (btime): %w", ErrFileParse, parts[1], err) + return Stat{}, fmt.Errorf("%w: couldn't parse %q (btime): %w", ErrFileParse, parts[1], err) } case parts[0] == "intr": if stat.IRQTotal, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("%s: couldn't parse %q (intr): %w", ErrFileParse, parts[1], err) + return Stat{}, fmt.Errorf("%w: couldn't parse %q (intr): %w", ErrFileParse, parts[1], err) } numberedIRQs := parts[2:] stat.IRQ = make([]uint64, len(numberedIRQs)) for i, count := range numberedIRQs { if stat.IRQ[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Stat{}, fmt.Errorf("%s: couldn't parse %q (intr%d): %w", ErrFileParse, count, i, err) + return Stat{}, fmt.Errorf("%w: couldn't parse %q (intr%d): %w", ErrFileParse, count, i, err) } } case parts[0] == "ctxt": if stat.ContextSwitches, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("%s: couldn't parse %q (ctxt): %w", ErrFileParse, parts[1], err) + return Stat{}, fmt.Errorf("%w: couldn't parse %q (ctxt): %w", ErrFileParse, parts[1], err) } case parts[0] == "processes": if stat.ProcessCreated, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("%s: couldn't parse %q (processes): %w", ErrFileParse, parts[1], err) + return Stat{}, fmt.Errorf("%w: couldn't parse %q (processes): %w", ErrFileParse, parts[1], err) } case parts[0] == "procs_running": if stat.ProcessesRunning, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("%s: couldn't parse %q (procs_running): %w", ErrFileParse, parts[1], err) + return Stat{}, fmt.Errorf("%w: couldn't parse %q (procs_running): %w", ErrFileParse, parts[1], err) } case parts[0] == "procs_blocked": if stat.ProcessesBlocked, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("%s: couldn't parse %q (procs_blocked): %w", ErrFileParse, parts[1], err) + return Stat{}, fmt.Errorf("%w: couldn't parse %q (procs_blocked): %w", ErrFileParse, parts[1], err) } case parts[0] == "softirq": softIRQStats, total, err := parseSoftIRQStat(line) @@ -251,7 +251,7 @@ func parseStat(r io.Reader, fileName string) (Stat, error) { } if err := scanner.Err(); err != nil { - return Stat{}, fmt.Errorf("%s: couldn't parse %q: %w", ErrFileParse, fileName, err) + return Stat{}, fmt.Errorf("%w: couldn't parse %q: %w", ErrFileParse, fileName, err) } return stat, nil diff --git a/vendor/github.com/prometheus/procfs/swaps.go b/vendor/github.com/prometheus/procfs/swaps.go index fa00f555db71..65fec834bf41 100644 --- a/vendor/github.com/prometheus/procfs/swaps.go +++ b/vendor/github.com/prometheus/procfs/swaps.go @@ -74,15 +74,15 @@ func parseSwapString(swapString string) (*Swap, error) { swap.Size, err = strconv.Atoi(swapFields[2]) if err != nil { - return nil, fmt.Errorf("%s: invalid swap size: %s: %w", ErrFileParse, swapFields[2], err) + return nil, fmt.Errorf("%w: invalid swap size: %s: %w", ErrFileParse, swapFields[2], err) } swap.Used, err = strconv.Atoi(swapFields[3]) if err != nil { - return nil, fmt.Errorf("%s: invalid swap used: %s: %w", ErrFileParse, swapFields[3], err) + return nil, fmt.Errorf("%w: invalid swap used: %s: %w", ErrFileParse, swapFields[3], err) } swap.Priority, err = strconv.Atoi(swapFields[4]) if err != nil { - return nil, fmt.Errorf("%s: invalid swap priority: %s: %w", ErrFileParse, swapFields[4], err) + return nil, fmt.Errorf("%w: invalid swap priority: %s: %w", ErrFileParse, swapFields[4], err) } return swap, nil diff --git a/vendor/github.com/prometheus/procfs/thread.go b/vendor/github.com/prometheus/procfs/thread.go index df2215ece008..80e0e947be78 100644 --- a/vendor/github.com/prometheus/procfs/thread.go +++ b/vendor/github.com/prometheus/procfs/thread.go @@ -45,7 +45,7 @@ func (fs FS) AllThreads(pid int) (Procs, error) { names, err := d.Readdirnames(-1) if err != nil { - return Procs{}, fmt.Errorf("%s: could not read %q: %w", ErrFileRead, d.Name(), err) + return Procs{}, fmt.Errorf("%w: could not read %q: %w", ErrFileRead, d.Name(), err) } t := Procs{} diff --git a/vendor/github.com/prometheus/procfs/zoneinfo.go b/vendor/github.com/prometheus/procfs/zoneinfo.go index ce5fefa5b3e8..e54d94b09039 100644 --- a/vendor/github.com/prometheus/procfs/zoneinfo.go +++ b/vendor/github.com/prometheus/procfs/zoneinfo.go @@ -75,11 +75,11 @@ var nodeZoneRE = regexp.MustCompile(`(\d+), zone\s+(\w+)`) func (fs FS) Zoneinfo() ([]Zoneinfo, error) { data, err := os.ReadFile(fs.proc.Path("zoneinfo")) if err != nil { - return nil, fmt.Errorf("%s: error reading zoneinfo %q: %w", ErrFileRead, fs.proc.Path("zoneinfo"), err) + return nil, fmt.Errorf("%w: error reading zoneinfo %q: %w", ErrFileRead, fs.proc.Path("zoneinfo"), err) } zoneinfo, err := parseZoneinfo(data) if err != nil { - return nil, fmt.Errorf("%s: error parsing zoneinfo %q: %w", ErrFileParse, fs.proc.Path("zoneinfo"), err) + return nil, fmt.Errorf("%w: error parsing zoneinfo %q: %w", ErrFileParse, fs.proc.Path("zoneinfo"), err) } return zoneinfo, nil } diff --git a/vendor/github.com/rs/dnscache/dnscache.go b/vendor/github.com/rs/dnscache/dnscache.go index 1ae3dff6c6fc..ddbb923ffd5f 100644 --- a/vendor/github.com/rs/dnscache/dnscache.go +++ b/vendor/github.com/rs/dnscache/dnscache.go @@ -246,17 +246,50 @@ func (r *Resolver) storeLocked(key string, rrs []string, used bool, err error) { } } -var defaultResolver = &defaultResolverWithTrace{} +var defaultResolver = &defaultResolverWithTrace{ + ipVersion: "ip", +} + +// Create a new resolver that only resolves to IPv4 Addresses when looking up Hosts. +// Example: +// +// resolver := dnscache.Resolver{ +// Resolver: NewResolverOnlyV4(), +// } +func NewResolverOnlyV4() DNSResolver { + return &defaultResolverWithTrace{ + ipVersion: "ip4", + } +} + +// Create a new resolver that only resolves to IPv6 Addresses when looking up Hosts. +// Example: +// +// resolver := dnscache.Resolver{ +// Resolver: NewResolverOnlyV6(), +// } +func NewResolverOnlyV6() DNSResolver { + return &defaultResolverWithTrace{ + ipVersion: "ip6", + } +} // defaultResolverWithTrace calls `LookupIP` instead of `LookupHost` on `net.DefaultResolver` in order to cause invocation of the `DNSStart` // and `DNSDone` hooks. By implementing `DNSResolver`, backward compatibility can be ensured. -type defaultResolverWithTrace struct{} +type defaultResolverWithTrace struct { + ipVersion string +} func (d *defaultResolverWithTrace) LookupHost(ctx context.Context, host string) (addrs []string, err error) { + ipVersion := d.ipVersion + if ipVersion != "ip" && ipVersion != "ip4" && ipVersion != "ip6" { + ipVersion = "ip" + } + // `net.Resolver#LookupHost` does not cause invocation of `net.Resolver#lookupIPAddr`, therefore the `DNSStart` and `DNSDone` tracing hooks // built into the stdlib are never called. `LookupIP`, despite it's name, can also be used to lookup a hostname but does cause these hooks to be // triggered. The format of the reponse is different, therefore it needs this thin wrapper converting it. - rawIPs, err := net.DefaultResolver.LookupIP(ctx, "ip", host) + rawIPs, err := net.DefaultResolver.LookupIP(ctx, ipVersion, host) if err != nil { return nil, err } diff --git a/vendor/github.com/tsenart/vegeta/v12/README.md b/vendor/github.com/tsenart/vegeta/v12/README.md index 4a9521476c6d..81e5a8dda8a9 100644 --- a/vendor/github.com/tsenart/vegeta/v12/README.md +++ b/vendor/github.com/tsenart/vegeta/v12/README.md @@ -92,6 +92,10 @@ attack command: TLS client PEM encoded certificate file -chunked Send body with chunked transfer encoding + -connect-to value + A mapping of (ip|host):port to use instead of a target URL's (ip|host):port. Can be repeated multiple times. + Identical src:port with different dst:port will round-robin over the different dst:port pairs. + Example: google.com:80:localhost:6060 -connections int Max open idle connections per target host (default 10000) -dns-ttl value @@ -178,7 +182,6 @@ examples: vegeta report -type=json results.bin > metrics.json cat results.bin | vegeta plot > plot.html cat results.bin | vegeta report -type="hist[0,100ms,200ms,300ms]" - ``` #### `-cpus` diff --git a/vendor/github.com/tsenart/vegeta/v12/attack.go b/vendor/github.com/tsenart/vegeta/v12/attack.go index f83c2cba7454..061285b5b1ee 100644 --- a/vendor/github.com/tsenart/vegeta/v12/attack.go +++ b/vendor/github.com/tsenart/vegeta/v12/attack.go @@ -62,6 +62,7 @@ func attackCmd() command { fs.StringVar(&opts.promAddr, "prometheus-addr", "", "Prometheus exporter listen address [empty = disabled]. Example: 0.0.0.0:8880") fs.Var(&dnsTTLFlag{&opts.dnsTTL}, "dns-ttl", "Cache DNS lookups for the given duration [-1 = disabled, 0 = forever]") fs.BoolVar(&opts.sessionTickets, "session-tickets", false, "Enable TLS session resumption using session tickets") + fs.Var(&connectToFlag{&opts.connectTo}, "connect-to", "A mapping of (ip|host):port to use instead of a target URL's (ip|host):port. Can be repeated multiple times.\nIdentical src:port with different dst:port will round-robin over the different dst:port pairs.\nExample: google.com:80:localhost:6060") systemSpecificFlags(fs, opts) return command{fs, func(args []string) error { @@ -108,6 +109,7 @@ type attackOpts struct { promAddr string dnsTTL time.Duration sessionTickets bool + connectTo map[string][]string } // attack validates the attack arguments, sets up the @@ -218,6 +220,7 @@ func attack(opts *attackOpts) (err error) { vegeta.ProxyHeader(proxyHdr), vegeta.ChunkedBody(opts.chunked), vegeta.DNSCaching(opts.dnsTTL), + vegeta.ConnectTo(opts.connectTo), vegeta.SessionTickets(opts.sessionTickets), ) diff --git a/vendor/github.com/tsenart/vegeta/v12/flags.go b/vendor/github.com/tsenart/vegeta/v12/flags.go index 7ac8fcb1f2c8..cbd47bbcdf7a 100644 --- a/vendor/github.com/tsenart/vegeta/v12/flags.go +++ b/vendor/github.com/tsenart/vegeta/v12/flags.go @@ -6,6 +6,7 @@ import ( "math" "net" "net/http" + "sort" "strconv" "strings" "time" @@ -153,3 +154,54 @@ func (f *dnsTTLFlag) String() string { } return f.ttl.String() } + +const connectToFormat = "src:port:dst:port" + +type connectToFlag struct { + addrMap *map[string][]string +} + +func (c *connectToFlag) String() string { + if c.addrMap == nil { + return "" + } + + addrMappings := make([]string, 0, len(*c.addrMap)) + for k, v := range *c.addrMap { + addrMappings = append(addrMappings, k+":"+strings.Join(v, ",")) + } + + sort.Strings(addrMappings) + return strings.Join(addrMappings, ";") +} + +func (c *connectToFlag) Set(s string) error { + if c.addrMap == nil { + return nil + } + + if *c.addrMap == nil { + *c.addrMap = make(map[string][]string) + } + + parts := strings.Split(s, ":") + if len(parts) != 4 { + return fmt.Errorf("invalid -connect-to %q, expected format: %s", s, connectToFormat) + } + srcAddr := parts[0] + ":" + parts[1] + dstAddr := parts[2] + ":" + parts[3] + + // Parse source address + if _, _, err := net.SplitHostPort(srcAddr); err != nil { + return fmt.Errorf("invalid source address expression [%s], expected address:port", srcAddr) + } + + // Parse destination address + if _, _, err := net.SplitHostPort(dstAddr); err != nil { + return fmt.Errorf("invalid destination address expression [%s], expected address:port", dstAddr) + } + + (*c.addrMap)[srcAddr] = append((*c.addrMap)[srcAddr], dstAddr) + + return nil +} diff --git a/vendor/github.com/tsenart/vegeta/v12/lib/attack.go b/vendor/github.com/tsenart/vegeta/v12/lib/attack.go index 80df5e1a9bbe..d2f1cf5a4161 100644 --- a/vendor/github.com/tsenart/vegeta/v12/lib/attack.go +++ b/vendor/github.com/tsenart/vegeta/v12/lib/attack.go @@ -28,6 +28,9 @@ type Attacker struct { maxWorkers uint64 maxBody int64 redirects int + seqmu sync.Mutex + seq uint64 + began time.Time chunked bool } @@ -272,6 +275,45 @@ func ProxyHeader(h http.Header) func(*Attacker) { } } +// ConnectTo returns a functional option which makes the attacker use the +// passed in map to translate target addr:port pairs. When used with DNSCaching, +// it must be used after it. +func ConnectTo(addrMap map[string][]string) func(*Attacker) { + return func(a *Attacker) { + if len(addrMap) == 0 { + return + } + + tr, ok := a.client.Transport.(*http.Transport) + if !ok { + return + } + + dial := tr.DialContext + if dial == nil { + dial = a.dialer.DialContext + } + + type roundRobin struct { + addrs []string + n int + } + + connectTo := make(map[string]*roundRobin, len(addrMap)) + for k, v := range addrMap { + connectTo[k] = &roundRobin{addrs: v} + } + + tr.DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) { + if cm, ok := connectTo[addr]; ok { + cm.n = (cm.n + 1) % len(cm.addrs) + addr = cm.addrs[cm.n] + } + return dial(ctx, network, addr) + } + } +} + // DNSCaching returns a functional option that enables DNS caching for // the given ttl. When ttl is zero cached entries will never expire. // When ttl is non-zero, this will start a refresh go-routine that updates @@ -329,20 +371,7 @@ func DNSCaching(ttl time.Duration) func(*Attacker) { rng.Shuffle(len(ips), func(i, j int) { ips[i], ips[j] = ips[j], ips[i] }) - // In place filtering of ips to only include the first IPv4 and IPv6. - j := 0 - for i := 0; i < len(ips) && j < 2; i++ { - ip := net.ParseIP(ips[i]) - switch { - case len(ip) == net.IPv4len && (j == 0 || len(ips[j-1]) == net.IPv6len): - fallthrough - case len(ip) == net.IPv6len && (j == 0 || len(ips[j-1]) == net.IPv4len): - ips[j] = ips[i] - j++ - } - } - - ips = ips[:j] + ips = firstOfEachIPFamily(ips) type result struct { conn net.Conn @@ -375,6 +404,33 @@ func DNSCaching(ttl time.Duration) func(*Attacker) { } } +// firstOfEachIPFamily returns the first IP of each IP family in the input slice. +func firstOfEachIPFamily(ips []string) []string { + if len(ips) == 0 { + return ips + } + + var ( + lastV4 bool + each = ips[:0] + ) + + for i := 0; i < len(ips) && len(each) < 2; i++ { + ip := net.ParseIP(ips[i]) + if ip == nil { + continue + } + + isV4 := ip.To4() != nil + if len(each) == 0 || isV4 != lastV4 { + each = append(each, ips[i]) + lastV4 = isV4 + } + } + + return each +} + type attack struct { name string began time.Time diff --git a/vendor/github.com/vbatts/tar-split/archive/tar/reader.go b/vendor/github.com/vbatts/tar-split/archive/tar/reader.go index ea64a382071c..6a6b3e018248 100644 --- a/vendor/github.com/vbatts/tar-split/archive/tar/reader.go +++ b/vendor/github.com/vbatts/tar-split/archive/tar/reader.go @@ -7,7 +7,6 @@ package tar import ( "bytes" "io" - "io/ioutil" "strconv" "strings" "time" @@ -41,7 +40,7 @@ type fileReader interface { // RawBytes accesses the raw bytes of the archive, apart from the file payload itself. // This includes the header and padding. // -// This call resets the current rawbytes buffer +// # This call resets the current rawbytes buffer // // Only when RawAccounting is enabled, otherwise this returns nil func (tr *Reader) RawBytes() []byte { @@ -57,6 +56,11 @@ func (tr *Reader) RawBytes() []byte { } +// ExpectedPadding returns the number of bytes of padding expected after the last header returned by Next() +func (tr *Reader) ExpectedPadding() int64 { + return tr.pad +} + // NewReader creates a new Reader reading from r. func NewReader(r io.Reader) *Reader { return &Reader{r: r, curr: ®FileReader{r, 0}} @@ -126,7 +130,9 @@ func (tr *Reader) next() (*Header, error) { return nil, err } if hdr.Typeflag == TypeXGlobalHeader { - mergePAX(hdr, paxHdrs) + if err = mergePAX(hdr, paxHdrs); err != nil { + return nil, err + } return &Header{ Name: hdr.Name, Typeflag: hdr.Typeflag, @@ -138,7 +144,7 @@ func (tr *Reader) next() (*Header, error) { continue // This is a meta header affecting the next header case TypeGNULongName, TypeGNULongLink: format.mayOnlyBe(FormatGNU) - realname, err := ioutil.ReadAll(tr) + realname, err := io.ReadAll(tr) if err != nil { return nil, err } @@ -332,7 +338,7 @@ func mergePAX(hdr *Header, paxHdrs map[string]string) (err error) { // parsePAX parses PAX headers. // If an extended header (type 'x') is invalid, ErrHeader is returned func parsePAX(r io.Reader) (map[string]string, error) { - buf, err := ioutil.ReadAll(r) + buf, err := io.ReadAll(r) if err != nil { return nil, err } @@ -381,9 +387,9 @@ func parsePAX(r io.Reader) (map[string]string, error) { // header in case further processing is required. // // The err will be set to io.EOF only when one of the following occurs: -// * Exactly 0 bytes are read and EOF is hit. -// * Exactly 1 block of zeros is read and EOF is hit. -// * At least 2 blocks of zeros are read. +// - Exactly 0 bytes are read and EOF is hit. +// - Exactly 1 block of zeros is read and EOF is hit. +// - At least 2 blocks of zeros are read. func (tr *Reader) readHeader() (*Header, *block, error) { // Two blocks of zero bytes marks the end of the archive. n, err := io.ReadFull(tr.r, tr.blk[:]) @@ -914,7 +920,7 @@ func discard(tr *Reader, n int64) error { } } - copySkipped, err = io.CopyN(ioutil.Discard, r, n-seekSkipped) + copySkipped, err = io.CopyN(io.Discard, r, n-seekSkipped) out: if err == io.EOF && seekSkipped+copySkipped < n { err = io.ErrUnexpectedEOF diff --git a/vendor/github.com/x448/float16/.travis.yml b/vendor/github.com/x448/float16/.travis.yml new file mode 100644 index 000000000000..8902bdaaffc2 --- /dev/null +++ b/vendor/github.com/x448/float16/.travis.yml @@ -0,0 +1,13 @@ +language: go + +go: + - 1.11.x + +env: + - GO111MODULE=on + +script: + - go test -short -coverprofile=coverage.txt -covermode=count ./... + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/x448/float16/LICENSE b/vendor/github.com/x448/float16/LICENSE new file mode 100644 index 000000000000..bf6e357854a0 --- /dev/null +++ b/vendor/github.com/x448/float16/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2019 Montgomery Edwards⁴⁴⁸ and Faye Amacker + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/x448/float16/README.md b/vendor/github.com/x448/float16/README.md new file mode 100644 index 000000000000..b524b8135d58 --- /dev/null +++ b/vendor/github.com/x448/float16/README.md @@ -0,0 +1,133 @@ +# Float16 (Binary16) in Go/Golang +[![Build Status](https://travis-ci.org/x448/float16.svg?branch=master)](https://travis-ci.org/x448/float16) +[![codecov](https://codecov.io/gh/x448/float16/branch/master/graph/badge.svg?v=4)](https://codecov.io/gh/x448/float16) +[![Go Report Card](https://goreportcard.com/badge/github.com/x448/float16)](https://goreportcard.com/report/github.com/x448/float16) +[![Release](https://img.shields.io/github/release/x448/float16.svg?style=flat-square)](https://github.com/x448/float16/releases) +[![License](http://img.shields.io/badge/license-mit-blue.svg?style=flat-square)](https://raw.githubusercontent.com/x448/float16/master/LICENSE) + +`float16` package provides [IEEE 754 half-precision floating-point format (binary16)](https://en.wikipedia.org/wiki/Half-precision_floating-point_format) with IEEE 754 default rounding for conversions. IEEE 754-2008 refers to this 16-bit floating-point format as binary16. + +IEEE 754 default rounding ("Round-to-Nearest RoundTiesToEven") is considered the most accurate and statistically unbiased estimate of the true result. + +All possible 4+ billion floating-point conversions with this library are verified to be correct. + +Lowercase "float16" refers to IEEE 754 binary16. And capitalized "Float16" refers to exported Go data type provided by this library. + +## Features +Current features include: + +* float16 to float32 conversions use lossless conversion. +* float32 to float16 conversions use IEEE 754-2008 "Round-to-Nearest RoundTiesToEven". +* conversions using pure Go take about 2.65 ns/op on a desktop amd64. +* unit tests provide 100% code coverage and check all possible 4+ billion conversions. +* other functions include: IsInf(), IsNaN(), IsNormal(), PrecisionFromfloat32(), String(), etc. +* all functions in this library use zero allocs except String(). + +## Status +This library is used by [fxamacker/cbor](https://github.com/fxamacker/cbor) and is ready for production use on supported platforms. The version number < 1.0 indicates more functions and options are planned but not yet published. + +Current status: + +* core API is done and breaking API changes are unlikely. +* 100% of unit tests pass: + * short mode (`go test -short`) tests around 65765 conversions in 0.005s. + * normal mode (`go test`) tests all possible 4+ billion conversions in about 95s. +* 100% code coverage with both short mode and normal mode. +* tested on amd64 but it should work on all little-endian platforms supported by Go. + +Roadmap: + +* add functions for fast batch conversions leveraging SIMD when supported by hardware. +* speed up unit test when verifying all possible 4+ billion conversions. +* test on additional platforms. + +## Float16 to Float32 Conversion +Conversions from float16 to float32 are lossless conversions. All 65536 possible float16 to float32 conversions (in pure Go) are confirmed to be correct. + +Unit tests take a fraction of a second to check all 65536 expected values for float16 to float32 conversions. + +## Float32 to Float16 Conversion +Conversions from float32 to float16 use IEEE 754 default rounding ("Round-to-Nearest RoundTiesToEven"). All 4294967296 possible float32 to float16 conversions (in pure Go) are confirmed to be correct. + +Unit tests in normal mode take about 1-2 minutes to check all 4+ billion float32 input values and results for Fromfloat32(), FromNaN32ps(), and PrecisionFromfloat32(). + +Unit tests in short mode use a small subset (around 229 float32 inputs) and finish in under 0.01 second while still reaching 100% code coverage. + +## Usage +Install with `go get github.com/x448/float16`. +``` +// Convert float32 to float16 +pi := float32(math.Pi) +pi16 := float16.Fromfloat32(pi) + +// Convert float16 to float32 +pi32 := pi16.Float32() + +// PrecisionFromfloat32() is faster than the overhead of calling a function. +// This example only converts if there's no data loss and input is not a subnormal. +if float16.PrecisionFromfloat32(pi) == float16.PrecisionExact { + pi16 := float16.Fromfloat32(pi) +} +``` + +## Float16 Type and API +Float16 (capitalized) is a Go type with uint16 as the underlying state. There are 6 exported functions and 9 exported methods. +``` +package float16 // import "github.com/x448/float16" + +// Exported types and consts +type Float16 uint16 +const ErrInvalidNaNValue = float16Error("float16: invalid NaN value, expected IEEE 754 NaN") + +// Exported functions +Fromfloat32(f32 float32) Float16 // Float16 number converted from f32 using IEEE 754 default rounding + with identical results to AMD and Intel F16C hardware. NaN inputs + are converted with quiet bit always set on, to be like F16C. + +FromNaN32ps(nan float32) (Float16, error) // Float16 NaN without modifying quiet bit. + // The "ps" suffix means "preserve signaling". + // Returns sNaN and ErrInvalidNaNValue if nan isn't a NaN. + +Frombits(b16 uint16) Float16 // Float16 number corresponding to b16 (IEEE 754 binary16 rep.) +NaN() Float16 // Float16 of IEEE 754 binary16 not-a-number +Inf(sign int) Float16 // Float16 of IEEE 754 binary16 infinity according to sign + +PrecisionFromfloat32(f32 float32) Precision // quickly indicates exact, ..., overflow, underflow + // (inline and < 1 ns/op) +// Exported methods +(f Float16) Float32() float32 // float32 number converted from f16 using lossless conversion +(f Float16) Bits() uint16 // the IEEE 754 binary16 representation of f +(f Float16) IsNaN() bool // true if f is not-a-number (NaN) +(f Float16) IsQuietNaN() bool // true if f is a quiet not-a-number (NaN) +(f Float16) IsInf(sign int) bool // true if f is infinite based on sign (-1=NegInf, 0=any, 1=PosInf) +(f Float16) IsFinite() bool // true if f is not infinite or NaN +(f Float16) IsNormal() bool // true if f is not zero, infinite, subnormal, or NaN. +(f Float16) Signbit() bool // true if f is negative or negative zero +(f Float16) String() string // string representation of f to satisfy fmt.Stringer interface +``` +See [API](https://godoc.org/github.com/x448/float16) at godoc.org for more info. + +## Benchmarks +Conversions (in pure Go) are around 2.65 ns/op for float16 -> float32 and float32 -> float16 on amd64. Speeds can vary depending on input value. + +``` +All functions have zero allocations except float16.String(). + +FromFloat32pi-2 2.59ns ± 0% // speed using Fromfloat32() to convert a float32 of math.Pi to Float16 +ToFloat32pi-2 2.69ns ± 0% // speed using Float32() to convert a float16 of math.Pi to float32 +Frombits-2 0.29ns ± 5% // speed using Frombits() to cast a uint16 to Float16 + +PrecisionFromFloat32-2 0.29ns ± 1% // speed using PrecisionFromfloat32() to check for overflows, etc. +``` + +## System Requirements +* Tested on Go 1.11, 1.12, and 1.13 but it should also work with older versions. +* Tested on amd64 but it should also work on all little-endian platforms supported by Go. + +## Special Thanks +Special thanks to Kathryn Long (starkat99) for creating [half-rs](https://github.com/starkat99/half-rs), a very nice rust implementation of float16. + +## License +Copyright (c) 2019 Montgomery Edwards⁴⁴⁸ and Faye Amacker + +Licensed under [MIT License](LICENSE) diff --git a/vendor/github.com/x448/float16/float16.go b/vendor/github.com/x448/float16/float16.go new file mode 100644 index 000000000000..1a0e6dad0046 --- /dev/null +++ b/vendor/github.com/x448/float16/float16.go @@ -0,0 +1,302 @@ +// Copyright 2019 Montgomery Edwards⁴⁴⁸ and Faye Amacker +// +// Special thanks to Kathryn Long for her Rust implementation +// of float16 at github.com/starkat99/half-rs (MIT license) + +package float16 + +import ( + "math" + "strconv" +) + +// Float16 represents IEEE 754 half-precision floating-point numbers (binary16). +type Float16 uint16 + +// Precision indicates whether the conversion to Float16 is +// exact, subnormal without dropped bits, inexact, underflow, or overflow. +type Precision int + +const ( + + // PrecisionExact is for non-subnormals that don't drop bits during conversion. + // All of these can round-trip. Should always convert to float16. + PrecisionExact Precision = iota + + // PrecisionUnknown is for subnormals that don't drop bits during conversion but + // not all of these can round-trip so precision is unknown without more effort. + // Only 2046 of these can round-trip and the rest cannot round-trip. + PrecisionUnknown + + // PrecisionInexact is for dropped significand bits and cannot round-trip. + // Some of these are subnormals. Cannot round-trip float32->float16->float32. + PrecisionInexact + + // PrecisionUnderflow is for Underflows. Cannot round-trip float32->float16->float32. + PrecisionUnderflow + + // PrecisionOverflow is for Overflows. Cannot round-trip float32->float16->float32. + PrecisionOverflow +) + +// PrecisionFromfloat32 returns Precision without performing +// the conversion. Conversions from both Infinity and NaN +// values will always report PrecisionExact even if NaN payload +// or NaN-Quiet-Bit is lost. This function is kept simple to +// allow inlining and run < 0.5 ns/op, to serve as a fast filter. +func PrecisionFromfloat32(f32 float32) Precision { + u32 := math.Float32bits(f32) + + if u32 == 0 || u32 == 0x80000000 { + // +- zero will always be exact conversion + return PrecisionExact + } + + const COEFMASK uint32 = 0x7fffff // 23 least significant bits + const EXPSHIFT uint32 = 23 + const EXPBIAS uint32 = 127 + const EXPMASK uint32 = uint32(0xff) << EXPSHIFT + const DROPMASK uint32 = COEFMASK >> 10 + + exp := int32(((u32 & EXPMASK) >> EXPSHIFT) - EXPBIAS) + coef := u32 & COEFMASK + + if exp == 128 { + // +- infinity or NaN + // apps may want to do extra checks for NaN separately + return PrecisionExact + } + + // https://en.wikipedia.org/wiki/Half-precision_floating-point_format says, + // "Decimals between 2^−24 (minimum positive subnormal) and 2^−14 (maximum subnormal): fixed interval 2^−24" + if exp < -24 { + return PrecisionUnderflow + } + if exp > 15 { + return PrecisionOverflow + } + if (coef & DROPMASK) != uint32(0) { + // these include subnormals and non-subnormals that dropped bits + return PrecisionInexact + } + + if exp < -14 { + // Subnormals. Caller may want to test these further. + // There are 2046 subnormals that can successfully round-trip f32->f16->f32 + // and 20 of those 2046 have 32-bit input coef == 0. + // RFC 7049 and 7049bis Draft 12 don't precisely define "preserves value" + // so some protocols and libraries will choose to handle subnormals differently + // when deciding to encode them to CBOR float32 vs float16. + return PrecisionUnknown + } + + return PrecisionExact +} + +// Frombits returns the float16 number corresponding to the IEEE 754 binary16 +// representation u16, with the sign bit of u16 and the result in the same bit +// position. Frombits(Bits(x)) == x. +func Frombits(u16 uint16) Float16 { + return Float16(u16) +} + +// Fromfloat32 returns a Float16 value converted from f32. Conversion uses +// IEEE default rounding (nearest int, with ties to even). +func Fromfloat32(f32 float32) Float16 { + return Float16(f32bitsToF16bits(math.Float32bits(f32))) +} + +// ErrInvalidNaNValue indicates a NaN was not received. +const ErrInvalidNaNValue = float16Error("float16: invalid NaN value, expected IEEE 754 NaN") + +type float16Error string + +func (e float16Error) Error() string { return string(e) } + +// FromNaN32ps converts nan to IEEE binary16 NaN while preserving both +// signaling and payload. Unlike Fromfloat32(), which can only return +// qNaN because it sets quiet bit = 1, this can return both sNaN and qNaN. +// If the result is infinity (sNaN with empty payload), then the +// lowest bit of payload is set to make the result a NaN. +// Returns ErrInvalidNaNValue and 0x7c01 (sNaN) if nan isn't IEEE 754 NaN. +// This function was kept simple to be able to inline. +func FromNaN32ps(nan float32) (Float16, error) { + const SNAN = Float16(uint16(0x7c01)) // signalling NaN + + u32 := math.Float32bits(nan) + sign := u32 & 0x80000000 + exp := u32 & 0x7f800000 + coef := u32 & 0x007fffff + + if (exp != 0x7f800000) || (coef == 0) { + return SNAN, ErrInvalidNaNValue + } + + u16 := uint16((sign >> 16) | uint32(0x7c00) | (coef >> 13)) + + if (u16 & 0x03ff) == 0 { + // result became infinity, make it NaN by setting lowest bit in payload + u16 = u16 | 0x0001 + } + + return Float16(u16), nil +} + +// NaN returns a Float16 of IEEE 754 binary16 not-a-number (NaN). +// Returned NaN value 0x7e01 has all exponent bits = 1 with the +// first and last bits = 1 in the significand. This is consistent +// with Go's 64-bit math.NaN(). Canonical CBOR in RFC 7049 uses 0x7e00. +func NaN() Float16 { + return Float16(0x7e01) +} + +// Inf returns a Float16 with an infinity value with the specified sign. +// A sign >= returns positive infinity. +// A sign < 0 returns negative infinity. +func Inf(sign int) Float16 { + if sign >= 0 { + return Float16(0x7c00) + } + return Float16(0x8000 | 0x7c00) +} + +// Float32 returns a float32 converted from f (Float16). +// This is a lossless conversion. +func (f Float16) Float32() float32 { + u32 := f16bitsToF32bits(uint16(f)) + return math.Float32frombits(u32) +} + +// Bits returns the IEEE 754 binary16 representation of f, with the sign bit +// of f and the result in the same bit position. Bits(Frombits(x)) == x. +func (f Float16) Bits() uint16 { + return uint16(f) +} + +// IsNaN reports whether f is an IEEE 754 binary16 “not-a-number” value. +func (f Float16) IsNaN() bool { + return (f&0x7c00 == 0x7c00) && (f&0x03ff != 0) +} + +// IsQuietNaN reports whether f is a quiet (non-signaling) IEEE 754 binary16 +// “not-a-number” value. +func (f Float16) IsQuietNaN() bool { + return (f&0x7c00 == 0x7c00) && (f&0x03ff != 0) && (f&0x0200 != 0) +} + +// IsInf reports whether f is an infinity (inf). +// A sign > 0 reports whether f is positive inf. +// A sign < 0 reports whether f is negative inf. +// A sign == 0 reports whether f is either inf. +func (f Float16) IsInf(sign int) bool { + return ((f == 0x7c00) && sign >= 0) || + (f == 0xfc00 && sign <= 0) +} + +// IsFinite returns true if f is neither infinite nor NaN. +func (f Float16) IsFinite() bool { + return (uint16(f) & uint16(0x7c00)) != uint16(0x7c00) +} + +// IsNormal returns true if f is neither zero, infinite, subnormal, or NaN. +func (f Float16) IsNormal() bool { + exp := uint16(f) & uint16(0x7c00) + return (exp != uint16(0x7c00)) && (exp != 0) +} + +// Signbit reports whether f is negative or negative zero. +func (f Float16) Signbit() bool { + return (uint16(f) & uint16(0x8000)) != 0 +} + +// String satisfies the fmt.Stringer interface. +func (f Float16) String() string { + return strconv.FormatFloat(float64(f.Float32()), 'f', -1, 32) +} + +// f16bitsToF32bits returns uint32 (float32 bits) converted from specified uint16. +func f16bitsToF32bits(in uint16) uint32 { + // All 65536 conversions with this were confirmed to be correct + // by Montgomery Edwards⁴⁴⁸ (github.com/x448). + + sign := uint32(in&0x8000) << 16 // sign for 32-bit + exp := uint32(in&0x7c00) >> 10 // exponenent for 16-bit + coef := uint32(in&0x03ff) << 13 // significand for 32-bit + + if exp == 0x1f { + if coef == 0 { + // infinity + return sign | 0x7f800000 | coef + } + // NaN + return sign | 0x7fc00000 | coef + } + + if exp == 0 { + if coef == 0 { + // zero + return sign + } + + // normalize subnormal numbers + exp++ + for coef&0x7f800000 == 0 { + coef <<= 1 + exp-- + } + coef &= 0x007fffff + } + + return sign | ((exp + (0x7f - 0xf)) << 23) | coef +} + +// f32bitsToF16bits returns uint16 (Float16 bits) converted from the specified float32. +// Conversion rounds to nearest integer with ties to even. +func f32bitsToF16bits(u32 uint32) uint16 { + // Translated from Rust to Go by Montgomery Edwards⁴⁴⁸ (github.com/x448). + // All 4294967296 conversions with this were confirmed to be correct by x448. + // Original Rust implementation is by Kathryn Long (github.com/starkat99) with MIT license. + + sign := u32 & 0x80000000 + exp := u32 & 0x7f800000 + coef := u32 & 0x007fffff + + if exp == 0x7f800000 { + // NaN or Infinity + nanBit := uint32(0) + if coef != 0 { + nanBit = uint32(0x0200) + } + return uint16((sign >> 16) | uint32(0x7c00) | nanBit | (coef >> 13)) + } + + halfSign := sign >> 16 + + unbiasedExp := int32(exp>>23) - 127 + halfExp := unbiasedExp + 15 + + if halfExp >= 0x1f { + return uint16(halfSign | uint32(0x7c00)) + } + + if halfExp <= 0 { + if 14-halfExp > 24 { + return uint16(halfSign) + } + coef := coef | uint32(0x00800000) + halfCoef := coef >> uint32(14-halfExp) + roundBit := uint32(1) << uint32(13-halfExp) + if (coef&roundBit) != 0 && (coef&(3*roundBit-1)) != 0 { + halfCoef++ + } + return uint16(halfSign | halfCoef) + } + + uHalfExp := uint32(halfExp) << 10 + halfCoef := coef >> 13 + roundBit := uint32(0x00001000) + if (coef&roundBit) != 0 && (coef&(3*roundBit-1)) != 0 { + return uint16((halfSign | uHalfExp | halfCoef) + 1) + } + return uint16(halfSign | uHalfExp | halfCoef) +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/CONTRIBUTING.md b/vendor/go.opentelemetry.io/auto/sdk/CONTRIBUTING.md new file mode 100644 index 000000000000..773c9b6431f6 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/CONTRIBUTING.md @@ -0,0 +1,27 @@ +# Contributing to go.opentelemetry.io/auto/sdk + +The `go.opentelemetry.io/auto/sdk` module is a purpose built OpenTelemetry SDK. +It is designed to be: + +0. An OpenTelemetry compliant SDK +1. Instrumented by auto-instrumentation (serializable into OTLP JSON) +2. Lightweight +3. User-friendly + +These design choices are listed in the order of their importance. + +The primary design goal of this module is to be an OpenTelemetry SDK. +This means that it needs to implement the Go APIs found in `go.opentelemetry.io/otel`. + +Having met the requirement of SDK compliance, this module needs to provide code that the `go.opentelemetry.io/auto` module can instrument. +The chosen approach to meet this goal is to ensure the telemetry from the SDK is serializable into JSON encoded OTLP. +This ensures then that the serialized form is compatible with other OpenTelemetry systems, and the auto-instrumentation can use these systems to deserialize any telemetry it is sent. + +Outside of these first two goals, the intended use becomes relevant. +This package is intended to be used in the `go.opentelemetry.io/otel` global API as a default when the auto-instrumentation is running. +Because of this, this package needs to not add unnecessary dependencies to that API. +Ideally, it adds none. +It also needs to operate efficiently. + +Finally, this module is designed to be user-friendly to Go development. +It hides complexity in order to provide simpler APIs when the previous goals can all still be met. diff --git a/vendor/go.opentelemetry.io/auto/sdk/LICENSE b/vendor/go.opentelemetry.io/auto/sdk/LICENSE new file mode 100644 index 000000000000..261eeb9e9f8b --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/vendor/go.opentelemetry.io/auto/sdk/VERSIONING.md b/vendor/go.opentelemetry.io/auto/sdk/VERSIONING.md new file mode 100644 index 000000000000..088d19a6ce72 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/VERSIONING.md @@ -0,0 +1,15 @@ +# Versioning + +This document describes the versioning policy for this module. +This policy is designed so the following goals can be achieved. + +**Users are provided a codebase of value that is stable and secure.** + +## Policy + +* Versioning of this module will be idiomatic of a Go project using [Go modules](https://github.com/golang/go/wiki/Modules). + * [Semantic import versioning](https://github.com/golang/go/wiki/Modules#semantic-import-versioning) will be used. + * Versions will comply with [semver 2.0](https://semver.org/spec/v2.0.0.html). + * Any `v2` or higher version of this module will be included as a `/vN` at the end of the module path used in `go.mod` files and in the package import path. + +* GitHub releases will be made for all releases. diff --git a/vendor/go.opentelemetry.io/auto/sdk/doc.go b/vendor/go.opentelemetry.io/auto/sdk/doc.go new file mode 100644 index 000000000000..ad73d8cb9d28 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/doc.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +/* +Package sdk provides an auto-instrumentable OpenTelemetry SDK. + +An [go.opentelemetry.io/auto.Instrumentation] can be configured to target the +process running this SDK. In that case, all telemetry the SDK produces will be +processed and handled by that [go.opentelemetry.io/auto.Instrumentation]. + +By default, if there is no [go.opentelemetry.io/auto.Instrumentation] set to +auto-instrument the SDK, the SDK will not generate any telemetry. +*/ +package sdk diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/attr.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/attr.go new file mode 100644 index 000000000000..af6ef171f6a9 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/attr.go @@ -0,0 +1,58 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package telemetry + +// Attr is a key-value pair. +type Attr struct { + Key string `json:"key,omitempty"` + Value Value `json:"value,omitempty"` +} + +// String returns an Attr for a string value. +func String(key, value string) Attr { + return Attr{key, StringValue(value)} +} + +// Int64 returns an Attr for an int64 value. +func Int64(key string, value int64) Attr { + return Attr{key, Int64Value(value)} +} + +// Int returns an Attr for an int value. +func Int(key string, value int) Attr { + return Int64(key, int64(value)) +} + +// Float64 returns an Attr for a float64 value. +func Float64(key string, value float64) Attr { + return Attr{key, Float64Value(value)} +} + +// Bool returns an Attr for a bool value. +func Bool(key string, value bool) Attr { + return Attr{key, BoolValue(value)} +} + +// Bytes returns an Attr for a []byte value. +// The passed slice must not be changed after it is passed. +func Bytes(key string, value []byte) Attr { + return Attr{key, BytesValue(value)} +} + +// Slice returns an Attr for a []Value value. +// The passed slice must not be changed after it is passed. +func Slice(key string, value ...Value) Attr { + return Attr{key, SliceValue(value...)} +} + +// Map returns an Attr for a map value. +// The passed slice must not be changed after it is passed. +func Map(key string, value ...Attr) Attr { + return Attr{key, MapValue(value...)} +} + +// Equal returns if a is equal to b. +func (a Attr) Equal(b Attr) bool { + return a.Key == b.Key && a.Value.Equal(b.Value) +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/doc.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/doc.go new file mode 100644 index 000000000000..949e2165c057 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/doc.go @@ -0,0 +1,8 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +/* +Package telemetry provides a lightweight representations of OpenTelemetry +telemetry that is compatible with the OTLP JSON protobuf encoding. +*/ +package telemetry diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.go new file mode 100644 index 000000000000..e854d7e84e86 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.go @@ -0,0 +1,103 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package telemetry + +import ( + "encoding/hex" + "errors" + "fmt" +) + +const ( + traceIDSize = 16 + spanIDSize = 8 +) + +// TraceID is a custom data type that is used for all trace IDs. +type TraceID [traceIDSize]byte + +// String returns the hex string representation form of a TraceID. +func (tid TraceID) String() string { + return hex.EncodeToString(tid[:]) +} + +// IsEmpty returns false if id contains at least one non-zero byte. +func (tid TraceID) IsEmpty() bool { + return tid == [traceIDSize]byte{} +} + +// MarshalJSON converts the trace ID into a hex string enclosed in quotes. +func (tid TraceID) MarshalJSON() ([]byte, error) { + if tid.IsEmpty() { + return []byte(`""`), nil + } + return marshalJSON(tid[:]) +} + +// UnmarshalJSON inflates the trace ID from hex string, possibly enclosed in +// quotes. +func (tid *TraceID) UnmarshalJSON(data []byte) error { + *tid = [traceIDSize]byte{} + return unmarshalJSON(tid[:], data) +} + +// SpanID is a custom data type that is used for all span IDs. +type SpanID [spanIDSize]byte + +// String returns the hex string representation form of a SpanID. +func (sid SpanID) String() string { + return hex.EncodeToString(sid[:]) +} + +// IsEmpty returns true if the span ID contains at least one non-zero byte. +func (sid SpanID) IsEmpty() bool { + return sid == [spanIDSize]byte{} +} + +// MarshalJSON converts span ID into a hex string enclosed in quotes. +func (sid SpanID) MarshalJSON() ([]byte, error) { + if sid.IsEmpty() { + return []byte(`""`), nil + } + return marshalJSON(sid[:]) +} + +// UnmarshalJSON decodes span ID from hex string, possibly enclosed in quotes. +func (sid *SpanID) UnmarshalJSON(data []byte) error { + *sid = [spanIDSize]byte{} + return unmarshalJSON(sid[:], data) +} + +// marshalJSON converts id into a hex string enclosed in quotes. +func marshalJSON(id []byte) ([]byte, error) { + // Plus 2 quote chars at the start and end. + hexLen := hex.EncodedLen(len(id)) + 2 + + b := make([]byte, hexLen) + hex.Encode(b[1:hexLen-1], id) + b[0], b[hexLen-1] = '"', '"' + + return b, nil +} + +// unmarshalJSON inflates trace id from hex string, possibly enclosed in quotes. +func unmarshalJSON(dst []byte, src []byte) error { + if l := len(src); l >= 2 && src[0] == '"' && src[l-1] == '"' { + src = src[1 : l-1] + } + nLen := len(src) + if nLen == 0 { + return nil + } + + if len(dst) != hex.DecodedLen(nLen) { + return errors.New("invalid length for ID") + } + + _, err := hex.Decode(dst, src) + if err != nil { + return fmt.Errorf("cannot unmarshal ID from string '%s': %w", string(src), err) + } + return nil +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.go new file mode 100644 index 000000000000..29e629d6674d --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.go @@ -0,0 +1,67 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package telemetry + +import ( + "encoding/json" + "strconv" +) + +// protoInt64 represents the protobuf encoding of integers which can be either +// strings or integers. +type protoInt64 int64 + +// Int64 returns the protoInt64 as an int64. +func (i *protoInt64) Int64() int64 { return int64(*i) } + +// UnmarshalJSON decodes both strings and integers. +func (i *protoInt64) UnmarshalJSON(data []byte) error { + if data[0] == '"' { + var str string + if err := json.Unmarshal(data, &str); err != nil { + return err + } + parsedInt, err := strconv.ParseInt(str, 10, 64) + if err != nil { + return err + } + *i = protoInt64(parsedInt) + } else { + var parsedInt int64 + if err := json.Unmarshal(data, &parsedInt); err != nil { + return err + } + *i = protoInt64(parsedInt) + } + return nil +} + +// protoUint64 represents the protobuf encoding of integers which can be either +// strings or integers. +type protoUint64 uint64 + +// Int64 returns the protoUint64 as a uint64. +func (i *protoUint64) Uint64() uint64 { return uint64(*i) } + +// UnmarshalJSON decodes both strings and integers. +func (i *protoUint64) UnmarshalJSON(data []byte) error { + if data[0] == '"' { + var str string + if err := json.Unmarshal(data, &str); err != nil { + return err + } + parsedUint, err := strconv.ParseUint(str, 10, 64) + if err != nil { + return err + } + *i = protoUint64(parsedUint) + } else { + var parsedUint uint64 + if err := json.Unmarshal(data, &parsedUint); err != nil { + return err + } + *i = protoUint64(parsedUint) + } + return nil +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/resource.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/resource.go new file mode 100644 index 000000000000..cecad8bae3c9 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/resource.go @@ -0,0 +1,66 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package telemetry + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io" +) + +// Resource information. +type Resource struct { + // Attrs are the set of attributes that describe the resource. Attribute + // keys MUST be unique (it is not allowed to have more than one attribute + // with the same key). + Attrs []Attr `json:"attributes,omitempty"` + // DroppedAttrs is the number of dropped attributes. If the value + // is 0, then no attributes were dropped. + DroppedAttrs uint32 `json:"droppedAttributesCount,omitempty"` +} + +// UnmarshalJSON decodes the OTLP formatted JSON contained in data into r. +func (r *Resource) UnmarshalJSON(data []byte) error { + decoder := json.NewDecoder(bytes.NewReader(data)) + + t, err := decoder.Token() + if err != nil { + return err + } + if t != json.Delim('{') { + return errors.New("invalid Resource type") + } + + for decoder.More() { + keyIface, err := decoder.Token() + if err != nil { + if errors.Is(err, io.EOF) { + // Empty. + return nil + } + return err + } + + key, ok := keyIface.(string) + if !ok { + return fmt.Errorf("invalid Resource field: %#v", keyIface) + } + + switch key { + case "attributes": + err = decoder.Decode(&r.Attrs) + case "droppedAttributesCount", "dropped_attributes_count": + err = decoder.Decode(&r.DroppedAttrs) + default: + // Skip unknown. + } + + if err != nil { + return err + } + } + return nil +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/scope.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/scope.go new file mode 100644 index 000000000000..b6f2e28d408c --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/scope.go @@ -0,0 +1,67 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package telemetry + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io" +) + +// Scope is the identifying values of the instrumentation scope. +type Scope struct { + Name string `json:"name,omitempty"` + Version string `json:"version,omitempty"` + Attrs []Attr `json:"attributes,omitempty"` + DroppedAttrs uint32 `json:"droppedAttributesCount,omitempty"` +} + +// UnmarshalJSON decodes the OTLP formatted JSON contained in data into r. +func (s *Scope) UnmarshalJSON(data []byte) error { + decoder := json.NewDecoder(bytes.NewReader(data)) + + t, err := decoder.Token() + if err != nil { + return err + } + if t != json.Delim('{') { + return errors.New("invalid Scope type") + } + + for decoder.More() { + keyIface, err := decoder.Token() + if err != nil { + if errors.Is(err, io.EOF) { + // Empty. + return nil + } + return err + } + + key, ok := keyIface.(string) + if !ok { + return fmt.Errorf("invalid Scope field: %#v", keyIface) + } + + switch key { + case "name": + err = decoder.Decode(&s.Name) + case "version": + err = decoder.Decode(&s.Version) + case "attributes": + err = decoder.Decode(&s.Attrs) + case "droppedAttributesCount", "dropped_attributes_count": + err = decoder.Decode(&s.DroppedAttrs) + default: + // Skip unknown. + } + + if err != nil { + return err + } + } + return nil +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.go new file mode 100644 index 000000000000..a13a6b733da8 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.go @@ -0,0 +1,456 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package telemetry + +import ( + "bytes" + "encoding/hex" + "encoding/json" + "errors" + "fmt" + "io" + "time" +) + +// A Span represents a single operation performed by a single component of the +// system. +type Span struct { + // A unique identifier for a trace. All spans from the same trace share + // the same `trace_id`. The ID is a 16-byte array. An ID with all zeroes OR + // of length other than 16 bytes is considered invalid (empty string in OTLP/JSON + // is zero-length and thus is also invalid). + // + // This field is required. + TraceID TraceID `json:"traceId,omitempty"` + // A unique identifier for a span within a trace, assigned when the span + // is created. The ID is an 8-byte array. An ID with all zeroes OR of length + // other than 8 bytes is considered invalid (empty string in OTLP/JSON + // is zero-length and thus is also invalid). + // + // This field is required. + SpanID SpanID `json:"spanId,omitempty"` + // trace_state conveys information about request position in multiple distributed tracing graphs. + // It is a trace_state in w3c-trace-context format: https://www.w3.org/TR/trace-context/#tracestate-header + // See also https://github.com/w3c/distributed-tracing for more details about this field. + TraceState string `json:"traceState,omitempty"` + // The `span_id` of this span's parent span. If this is a root span, then this + // field must be empty. The ID is an 8-byte array. + ParentSpanID SpanID `json:"parentSpanId,omitempty"` + // Flags, a bit field. + // + // Bits 0-7 (8 least significant bits) are the trace flags as defined in W3C Trace + // Context specification. To read the 8-bit W3C trace flag, use + // `flags & SPAN_FLAGS_TRACE_FLAGS_MASK`. + // + // See https://www.w3.org/TR/trace-context-2/#trace-flags for the flag definitions. + // + // Bits 8 and 9 represent the 3 states of whether a span's parent + // is remote. The states are (unknown, is not remote, is remote). + // To read whether the value is known, use `(flags & SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`. + // To read whether the span is remote, use `(flags & SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`. + // + // When creating span messages, if the message is logically forwarded from another source + // with an equivalent flags fields (i.e., usually another OTLP span message), the field SHOULD + // be copied as-is. If creating from a source that does not have an equivalent flags field + // (such as a runtime representation of an OpenTelemetry span), the high 22 bits MUST + // be set to zero. + // Readers MUST NOT assume that bits 10-31 (22 most significant bits) will be zero. + // + // [Optional]. + Flags uint32 `json:"flags,omitempty"` + // A description of the span's operation. + // + // For example, the name can be a qualified method name or a file name + // and a line number where the operation is called. A best practice is to use + // the same display name at the same call point in an application. + // This makes it easier to correlate spans in different traces. + // + // This field is semantically required to be set to non-empty string. + // Empty value is equivalent to an unknown span name. + // + // This field is required. + Name string `json:"name"` + // Distinguishes between spans generated in a particular context. For example, + // two spans with the same name may be distinguished using `CLIENT` (caller) + // and `SERVER` (callee) to identify queueing latency associated with the span. + Kind SpanKind `json:"kind,omitempty"` + // start_time_unix_nano is the start time of the span. On the client side, this is the time + // kept by the local machine where the span execution starts. On the server side, this + // is the time when the server's application handler starts running. + // Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. + // + // This field is semantically required and it is expected that end_time >= start_time. + StartTime time.Time `json:"startTimeUnixNano,omitempty"` + // end_time_unix_nano is the end time of the span. On the client side, this is the time + // kept by the local machine where the span execution ends. On the server side, this + // is the time when the server application handler stops running. + // Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970. + // + // This field is semantically required and it is expected that end_time >= start_time. + EndTime time.Time `json:"endTimeUnixNano,omitempty"` + // attributes is a collection of key/value pairs. Note, global attributes + // like server name can be set using the resource API. Examples of attributes: + // + // "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" + // "/http/server_latency": 300 + // "example.com/myattribute": true + // "example.com/score": 10.239 + // + // The OpenTelemetry API specification further restricts the allowed value types: + // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/common/README.md#attribute + // Attribute keys MUST be unique (it is not allowed to have more than one + // attribute with the same key). + Attrs []Attr `json:"attributes,omitempty"` + // dropped_attributes_count is the number of attributes that were discarded. Attributes + // can be discarded because their keys are too long or because there are too many + // attributes. If this value is 0, then no attributes were dropped. + DroppedAttrs uint32 `json:"droppedAttributesCount,omitempty"` + // events is a collection of Event items. + Events []*SpanEvent `json:"events,omitempty"` + // dropped_events_count is the number of dropped events. If the value is 0, then no + // events were dropped. + DroppedEvents uint32 `json:"droppedEventsCount,omitempty"` + // links is a collection of Links, which are references from this span to a span + // in the same or different trace. + Links []*SpanLink `json:"links,omitempty"` + // dropped_links_count is the number of dropped links after the maximum size was + // enforced. If this value is 0, then no links were dropped. + DroppedLinks uint32 `json:"droppedLinksCount,omitempty"` + // An optional final status for this span. Semantically when Status isn't set, it means + // span's status code is unset, i.e. assume STATUS_CODE_UNSET (code = 0). + Status *Status `json:"status,omitempty"` +} + +// MarshalJSON encodes s into OTLP formatted JSON. +func (s Span) MarshalJSON() ([]byte, error) { + startT := s.StartTime.UnixNano() + if s.StartTime.IsZero() || startT < 0 { + startT = 0 + } + + endT := s.EndTime.UnixNano() + if s.EndTime.IsZero() || endT < 0 { + endT = 0 + } + + // Override non-empty default SpanID marshal and omitempty. + var parentSpanId string + if !s.ParentSpanID.IsEmpty() { + b := make([]byte, hex.EncodedLen(spanIDSize)) + hex.Encode(b, s.ParentSpanID[:]) + parentSpanId = string(b) + } + + type Alias Span + return json.Marshal(struct { + Alias + ParentSpanID string `json:"parentSpanId,omitempty"` + StartTime uint64 `json:"startTimeUnixNano,omitempty"` + EndTime uint64 `json:"endTimeUnixNano,omitempty"` + }{ + Alias: Alias(s), + ParentSpanID: parentSpanId, + StartTime: uint64(startT), + EndTime: uint64(endT), + }) +} + +// UnmarshalJSON decodes the OTLP formatted JSON contained in data into s. +func (s *Span) UnmarshalJSON(data []byte) error { + decoder := json.NewDecoder(bytes.NewReader(data)) + + t, err := decoder.Token() + if err != nil { + return err + } + if t != json.Delim('{') { + return errors.New("invalid Span type") + } + + for decoder.More() { + keyIface, err := decoder.Token() + if err != nil { + if errors.Is(err, io.EOF) { + // Empty. + return nil + } + return err + } + + key, ok := keyIface.(string) + if !ok { + return fmt.Errorf("invalid Span field: %#v", keyIface) + } + + switch key { + case "traceId", "trace_id": + err = decoder.Decode(&s.TraceID) + case "spanId", "span_id": + err = decoder.Decode(&s.SpanID) + case "traceState", "trace_state": + err = decoder.Decode(&s.TraceState) + case "parentSpanId", "parent_span_id": + err = decoder.Decode(&s.ParentSpanID) + case "flags": + err = decoder.Decode(&s.Flags) + case "name": + err = decoder.Decode(&s.Name) + case "kind": + err = decoder.Decode(&s.Kind) + case "startTimeUnixNano", "start_time_unix_nano": + var val protoUint64 + err = decoder.Decode(&val) + s.StartTime = time.Unix(0, int64(val.Uint64())) + case "endTimeUnixNano", "end_time_unix_nano": + var val protoUint64 + err = decoder.Decode(&val) + s.EndTime = time.Unix(0, int64(val.Uint64())) + case "attributes": + err = decoder.Decode(&s.Attrs) + case "droppedAttributesCount", "dropped_attributes_count": + err = decoder.Decode(&s.DroppedAttrs) + case "events": + err = decoder.Decode(&s.Events) + case "droppedEventsCount", "dropped_events_count": + err = decoder.Decode(&s.DroppedEvents) + case "links": + err = decoder.Decode(&s.Links) + case "droppedLinksCount", "dropped_links_count": + err = decoder.Decode(&s.DroppedLinks) + case "status": + err = decoder.Decode(&s.Status) + default: + // Skip unknown. + } + + if err != nil { + return err + } + } + return nil +} + +// SpanFlags represents constants used to interpret the +// Span.flags field, which is protobuf 'fixed32' type and is to +// be used as bit-fields. Each non-zero value defined in this enum is +// a bit-mask. To extract the bit-field, for example, use an +// expression like: +// +// (span.flags & SPAN_FLAGS_TRACE_FLAGS_MASK) +// +// See https://www.w3.org/TR/trace-context-2/#trace-flags for the flag definitions. +// +// Note that Span flags were introduced in version 1.1 of the +// OpenTelemetry protocol. Older Span producers do not set this +// field, consequently consumers should not rely on the absence of a +// particular flag bit to indicate the presence of a particular feature. +type SpanFlags int32 + +const ( + // Bits 0-7 are used for trace flags. + SpanFlagsTraceFlagsMask SpanFlags = 255 + // Bits 8 and 9 are used to indicate that the parent span or link span is remote. + // Bit 8 (`HAS_IS_REMOTE`) indicates whether the value is known. + // Bit 9 (`IS_REMOTE`) indicates whether the span or link is remote. + SpanFlagsContextHasIsRemoteMask SpanFlags = 256 + // SpanFlagsContextHasIsRemoteMask indicates the Span is remote. + SpanFlagsContextIsRemoteMask SpanFlags = 512 +) + +// SpanKind is the type of span. Can be used to specify additional relationships between spans +// in addition to a parent/child relationship. +type SpanKind int32 + +const ( + // Indicates that the span represents an internal operation within an application, + // as opposed to an operation happening at the boundaries. Default value. + SpanKindInternal SpanKind = 1 + // Indicates that the span covers server-side handling of an RPC or other + // remote network request. + SpanKindServer SpanKind = 2 + // Indicates that the span describes a request to some remote service. + SpanKindClient SpanKind = 3 + // Indicates that the span describes a producer sending a message to a broker. + // Unlike CLIENT and SERVER, there is often no direct critical path latency relationship + // between producer and consumer spans. A PRODUCER span ends when the message was accepted + // by the broker while the logical processing of the message might span a much longer time. + SpanKindProducer SpanKind = 4 + // Indicates that the span describes consumer receiving a message from a broker. + // Like the PRODUCER kind, there is often no direct critical path latency relationship + // between producer and consumer spans. + SpanKindConsumer SpanKind = 5 +) + +// Event is a time-stamped annotation of the span, consisting of user-supplied +// text description and key-value pairs. +type SpanEvent struct { + // time_unix_nano is the time the event occurred. + Time time.Time `json:"timeUnixNano,omitempty"` + // name of the event. + // This field is semantically required to be set to non-empty string. + Name string `json:"name,omitempty"` + // attributes is a collection of attribute key/value pairs on the event. + // Attribute keys MUST be unique (it is not allowed to have more than one + // attribute with the same key). + Attrs []Attr `json:"attributes,omitempty"` + // dropped_attributes_count is the number of dropped attributes. If the value is 0, + // then no attributes were dropped. + DroppedAttrs uint32 `json:"droppedAttributesCount,omitempty"` +} + +// MarshalJSON encodes e into OTLP formatted JSON. +func (e SpanEvent) MarshalJSON() ([]byte, error) { + t := e.Time.UnixNano() + if e.Time.IsZero() || t < 0 { + t = 0 + } + + type Alias SpanEvent + return json.Marshal(struct { + Alias + Time uint64 `json:"timeUnixNano,omitempty"` + }{ + Alias: Alias(e), + Time: uint64(t), + }) +} + +// UnmarshalJSON decodes the OTLP formatted JSON contained in data into se. +func (se *SpanEvent) UnmarshalJSON(data []byte) error { + decoder := json.NewDecoder(bytes.NewReader(data)) + + t, err := decoder.Token() + if err != nil { + return err + } + if t != json.Delim('{') { + return errors.New("invalid SpanEvent type") + } + + for decoder.More() { + keyIface, err := decoder.Token() + if err != nil { + if errors.Is(err, io.EOF) { + // Empty. + return nil + } + return err + } + + key, ok := keyIface.(string) + if !ok { + return fmt.Errorf("invalid SpanEvent field: %#v", keyIface) + } + + switch key { + case "timeUnixNano", "time_unix_nano": + var val protoUint64 + err = decoder.Decode(&val) + se.Time = time.Unix(0, int64(val.Uint64())) + case "name": + err = decoder.Decode(&se.Name) + case "attributes": + err = decoder.Decode(&se.Attrs) + case "droppedAttributesCount", "dropped_attributes_count": + err = decoder.Decode(&se.DroppedAttrs) + default: + // Skip unknown. + } + + if err != nil { + return err + } + } + return nil +} + +// A pointer from the current span to another span in the same trace or in a +// different trace. For example, this can be used in batching operations, +// where a single batch handler processes multiple requests from different +// traces or when the handler receives a request from a different project. +type SpanLink struct { + // A unique identifier of a trace that this linked span is part of. The ID is a + // 16-byte array. + TraceID TraceID `json:"traceId,omitempty"` + // A unique identifier for the linked span. The ID is an 8-byte array. + SpanID SpanID `json:"spanId,omitempty"` + // The trace_state associated with the link. + TraceState string `json:"traceState,omitempty"` + // attributes is a collection of attribute key/value pairs on the link. + // Attribute keys MUST be unique (it is not allowed to have more than one + // attribute with the same key). + Attrs []Attr `json:"attributes,omitempty"` + // dropped_attributes_count is the number of dropped attributes. If the value is 0, + // then no attributes were dropped. + DroppedAttrs uint32 `json:"droppedAttributesCount,omitempty"` + // Flags, a bit field. + // + // Bits 0-7 (8 least significant bits) are the trace flags as defined in W3C Trace + // Context specification. To read the 8-bit W3C trace flag, use + // `flags & SPAN_FLAGS_TRACE_FLAGS_MASK`. + // + // See https://www.w3.org/TR/trace-context-2/#trace-flags for the flag definitions. + // + // Bits 8 and 9 represent the 3 states of whether the link is remote. + // The states are (unknown, is not remote, is remote). + // To read whether the value is known, use `(flags & SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`. + // To read whether the link is remote, use `(flags & SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`. + // + // Readers MUST NOT assume that bits 10-31 (22 most significant bits) will be zero. + // When creating new spans, bits 10-31 (most-significant 22-bits) MUST be zero. + // + // [Optional]. + Flags uint32 `json:"flags,omitempty"` +} + +// UnmarshalJSON decodes the OTLP formatted JSON contained in data into sl. +func (sl *SpanLink) UnmarshalJSON(data []byte) error { + decoder := json.NewDecoder(bytes.NewReader(data)) + + t, err := decoder.Token() + if err != nil { + return err + } + if t != json.Delim('{') { + return errors.New("invalid SpanLink type") + } + + for decoder.More() { + keyIface, err := decoder.Token() + if err != nil { + if errors.Is(err, io.EOF) { + // Empty. + return nil + } + return err + } + + key, ok := keyIface.(string) + if !ok { + return fmt.Errorf("invalid SpanLink field: %#v", keyIface) + } + + switch key { + case "traceId", "trace_id": + err = decoder.Decode(&sl.TraceID) + case "spanId", "span_id": + err = decoder.Decode(&sl.SpanID) + case "traceState", "trace_state": + err = decoder.Decode(&sl.TraceState) + case "attributes": + err = decoder.Decode(&sl.Attrs) + case "droppedAttributesCount", "dropped_attributes_count": + err = decoder.Decode(&sl.DroppedAttrs) + case "flags": + err = decoder.Decode(&sl.Flags) + default: + // Skip unknown. + } + + if err != nil { + return err + } + } + return nil +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.go new file mode 100644 index 000000000000..1217776ead1e --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.go @@ -0,0 +1,40 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package telemetry + +// For the semantics of status codes see +// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#set-status +type StatusCode int32 + +const ( + // The default status. + StatusCodeUnset StatusCode = 0 + // The Span has been validated by an Application developer or Operator to + // have completed successfully. + StatusCodeOK StatusCode = 1 + // The Span contains an error. + StatusCodeError StatusCode = 2 +) + +var statusCodeStrings = []string{ + "Unset", + "OK", + "Error", +} + +func (s StatusCode) String() string { + if s >= 0 && int(s) < len(statusCodeStrings) { + return statusCodeStrings[s] + } + return "" +} + +// The Status type defines a logical error model that is suitable for different +// programming environments, including REST APIs and RPC APIs. +type Status struct { + // A developer-facing human readable error message. + Message string `json:"message,omitempty"` + // The status code. + Code StatusCode `json:"code,omitempty"` +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.go new file mode 100644 index 000000000000..69a348f0f064 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.go @@ -0,0 +1,189 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package telemetry + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io" +) + +// Traces represents the traces data that can be stored in a persistent storage, +// OR can be embedded by other protocols that transfer OTLP traces data but do +// not implement the OTLP protocol. +// +// The main difference between this message and collector protocol is that +// in this message there will not be any "control" or "metadata" specific to +// OTLP protocol. +// +// When new fields are added into this message, the OTLP request MUST be updated +// as well. +type Traces struct { + // An array of ResourceSpans. + // For data coming from a single resource this array will typically contain + // one element. Intermediary nodes that receive data from multiple origins + // typically batch the data before forwarding further and in that case this + // array will contain multiple elements. + ResourceSpans []*ResourceSpans `json:"resourceSpans,omitempty"` +} + +// UnmarshalJSON decodes the OTLP formatted JSON contained in data into td. +func (td *Traces) UnmarshalJSON(data []byte) error { + decoder := json.NewDecoder(bytes.NewReader(data)) + + t, err := decoder.Token() + if err != nil { + return err + } + if t != json.Delim('{') { + return errors.New("invalid TracesData type") + } + + for decoder.More() { + keyIface, err := decoder.Token() + if err != nil { + if errors.Is(err, io.EOF) { + // Empty. + return nil + } + return err + } + + key, ok := keyIface.(string) + if !ok { + return fmt.Errorf("invalid TracesData field: %#v", keyIface) + } + + switch key { + case "resourceSpans", "resource_spans": + err = decoder.Decode(&td.ResourceSpans) + default: + // Skip unknown. + } + + if err != nil { + return err + } + } + return nil +} + +// A collection of ScopeSpans from a Resource. +type ResourceSpans struct { + // The resource for the spans in this message. + // If this field is not set then no resource info is known. + Resource Resource `json:"resource"` + // A list of ScopeSpans that originate from a resource. + ScopeSpans []*ScopeSpans `json:"scopeSpans,omitempty"` + // This schema_url applies to the data in the "resource" field. It does not apply + // to the data in the "scope_spans" field which have their own schema_url field. + SchemaURL string `json:"schemaUrl,omitempty"` +} + +// UnmarshalJSON decodes the OTLP formatted JSON contained in data into rs. +func (rs *ResourceSpans) UnmarshalJSON(data []byte) error { + decoder := json.NewDecoder(bytes.NewReader(data)) + + t, err := decoder.Token() + if err != nil { + return err + } + if t != json.Delim('{') { + return errors.New("invalid ResourceSpans type") + } + + for decoder.More() { + keyIface, err := decoder.Token() + if err != nil { + if errors.Is(err, io.EOF) { + // Empty. + return nil + } + return err + } + + key, ok := keyIface.(string) + if !ok { + return fmt.Errorf("invalid ResourceSpans field: %#v", keyIface) + } + + switch key { + case "resource": + err = decoder.Decode(&rs.Resource) + case "scopeSpans", "scope_spans": + err = decoder.Decode(&rs.ScopeSpans) + case "schemaUrl", "schema_url": + err = decoder.Decode(&rs.SchemaURL) + default: + // Skip unknown. + } + + if err != nil { + return err + } + } + return nil +} + +// A collection of Spans produced by an InstrumentationScope. +type ScopeSpans struct { + // The instrumentation scope information for the spans in this message. + // Semantically when InstrumentationScope isn't set, it is equivalent with + // an empty instrumentation scope name (unknown). + Scope *Scope `json:"scope"` + // A list of Spans that originate from an instrumentation scope. + Spans []*Span `json:"spans,omitempty"` + // The Schema URL, if known. This is the identifier of the Schema that the span data + // is recorded in. To learn more about Schema URL see + // https://opentelemetry.io/docs/specs/otel/schemas/#schema-url + // This schema_url applies to all spans and span events in the "spans" field. + SchemaURL string `json:"schemaUrl,omitempty"` +} + +// UnmarshalJSON decodes the OTLP formatted JSON contained in data into ss. +func (ss *ScopeSpans) UnmarshalJSON(data []byte) error { + decoder := json.NewDecoder(bytes.NewReader(data)) + + t, err := decoder.Token() + if err != nil { + return err + } + if t != json.Delim('{') { + return errors.New("invalid ScopeSpans type") + } + + for decoder.More() { + keyIface, err := decoder.Token() + if err != nil { + if errors.Is(err, io.EOF) { + // Empty. + return nil + } + return err + } + + key, ok := keyIface.(string) + if !ok { + return fmt.Errorf("invalid ScopeSpans field: %#v", keyIface) + } + + switch key { + case "scope": + err = decoder.Decode(&ss.Scope) + case "spans": + err = decoder.Decode(&ss.Spans) + case "schemaUrl", "schema_url": + err = decoder.Decode(&ss.SchemaURL) + default: + // Skip unknown. + } + + if err != nil { + return err + } + } + return nil +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.go new file mode 100644 index 000000000000..0dd01b063a34 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.go @@ -0,0 +1,452 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +//go:generate stringer -type=ValueKind -trimprefix=ValueKind + +package telemetry + +import ( + "bytes" + "cmp" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io" + "math" + "slices" + "strconv" + "unsafe" +) + +// A Value represents a structured value. +// A zero value is valid and represents an empty value. +type Value struct { + // Ensure forward compatibility by explicitly making this not comparable. + noCmp [0]func() //nolint: unused // This is indeed used. + + // num holds the value for Int64, Float64, and Bool. It holds the length + // for String, Bytes, Slice, Map. + num uint64 + // any holds either the KindBool, KindInt64, KindFloat64, stringptr, + // bytesptr, sliceptr, or mapptr. If KindBool, KindInt64, or KindFloat64 + // then the value of Value is in num as described above. Otherwise, it + // contains the value wrapped in the appropriate type. + any any +} + +type ( + // sliceptr represents a value in Value.any for KindString Values. + stringptr *byte + // bytesptr represents a value in Value.any for KindBytes Values. + bytesptr *byte + // sliceptr represents a value in Value.any for KindSlice Values. + sliceptr *Value + // mapptr represents a value in Value.any for KindMap Values. + mapptr *Attr +) + +// ValueKind is the kind of a [Value]. +type ValueKind int + +// ValueKind values. +const ( + ValueKindEmpty ValueKind = iota + ValueKindBool + ValueKindFloat64 + ValueKindInt64 + ValueKindString + ValueKindBytes + ValueKindSlice + ValueKindMap +) + +var valueKindStrings = []string{ + "Empty", + "Bool", + "Float64", + "Int64", + "String", + "Bytes", + "Slice", + "Map", +} + +func (k ValueKind) String() string { + if k >= 0 && int(k) < len(valueKindStrings) { + return valueKindStrings[k] + } + return "" +} + +// StringValue returns a new [Value] for a string. +func StringValue(v string) Value { + return Value{ + num: uint64(len(v)), + any: stringptr(unsafe.StringData(v)), + } +} + +// IntValue returns a [Value] for an int. +func IntValue(v int) Value { return Int64Value(int64(v)) } + +// Int64Value returns a [Value] for an int64. +func Int64Value(v int64) Value { + return Value{num: uint64(v), any: ValueKindInt64} +} + +// Float64Value returns a [Value] for a float64. +func Float64Value(v float64) Value { + return Value{num: math.Float64bits(v), any: ValueKindFloat64} +} + +// BoolValue returns a [Value] for a bool. +func BoolValue(v bool) Value { //nolint:revive // Not a control flag. + var n uint64 + if v { + n = 1 + } + return Value{num: n, any: ValueKindBool} +} + +// BytesValue returns a [Value] for a byte slice. The passed slice must not be +// changed after it is passed. +func BytesValue(v []byte) Value { + return Value{ + num: uint64(len(v)), + any: bytesptr(unsafe.SliceData(v)), + } +} + +// SliceValue returns a [Value] for a slice of [Value]. The passed slice must +// not be changed after it is passed. +func SliceValue(vs ...Value) Value { + return Value{ + num: uint64(len(vs)), + any: sliceptr(unsafe.SliceData(vs)), + } +} + +// MapValue returns a new [Value] for a slice of key-value pairs. The passed +// slice must not be changed after it is passed. +func MapValue(kvs ...Attr) Value { + return Value{ + num: uint64(len(kvs)), + any: mapptr(unsafe.SliceData(kvs)), + } +} + +// AsString returns the value held by v as a string. +func (v Value) AsString() string { + if sp, ok := v.any.(stringptr); ok { + return unsafe.String(sp, v.num) + } + // TODO: error handle + return "" +} + +// asString returns the value held by v as a string. It will panic if the Value +// is not KindString. +func (v Value) asString() string { + return unsafe.String(v.any.(stringptr), v.num) +} + +// AsInt64 returns the value held by v as an int64. +func (v Value) AsInt64() int64 { + if v.Kind() != ValueKindInt64 { + // TODO: error handle + return 0 + } + return v.asInt64() +} + +// asInt64 returns the value held by v as an int64. If v is not of KindInt64, +// this will return garbage. +func (v Value) asInt64() int64 { + // Assumes v.num was a valid int64 (overflow not checked). + return int64(v.num) // nolint: gosec +} + +// AsBool returns the value held by v as a bool. +func (v Value) AsBool() bool { + if v.Kind() != ValueKindBool { + // TODO: error handle + return false + } + return v.asBool() +} + +// asBool returns the value held by v as a bool. If v is not of KindBool, this +// will return garbage. +func (v Value) asBool() bool { return v.num == 1 } + +// AsFloat64 returns the value held by v as a float64. +func (v Value) AsFloat64() float64 { + if v.Kind() != ValueKindFloat64 { + // TODO: error handle + return 0 + } + return v.asFloat64() +} + +// asFloat64 returns the value held by v as a float64. If v is not of +// KindFloat64, this will return garbage. +func (v Value) asFloat64() float64 { return math.Float64frombits(v.num) } + +// AsBytes returns the value held by v as a []byte. +func (v Value) AsBytes() []byte { + if sp, ok := v.any.(bytesptr); ok { + return unsafe.Slice((*byte)(sp), v.num) + } + // TODO: error handle + return nil +} + +// asBytes returns the value held by v as a []byte. It will panic if the Value +// is not KindBytes. +func (v Value) asBytes() []byte { + return unsafe.Slice((*byte)(v.any.(bytesptr)), v.num) +} + +// AsSlice returns the value held by v as a []Value. +func (v Value) AsSlice() []Value { + if sp, ok := v.any.(sliceptr); ok { + return unsafe.Slice((*Value)(sp), v.num) + } + // TODO: error handle + return nil +} + +// asSlice returns the value held by v as a []Value. It will panic if the Value +// is not KindSlice. +func (v Value) asSlice() []Value { + return unsafe.Slice((*Value)(v.any.(sliceptr)), v.num) +} + +// AsMap returns the value held by v as a []Attr. +func (v Value) AsMap() []Attr { + if sp, ok := v.any.(mapptr); ok { + return unsafe.Slice((*Attr)(sp), v.num) + } + // TODO: error handle + return nil +} + +// asMap returns the value held by v as a []Attr. It will panic if the +// Value is not KindMap. +func (v Value) asMap() []Attr { + return unsafe.Slice((*Attr)(v.any.(mapptr)), v.num) +} + +// Kind returns the Kind of v. +func (v Value) Kind() ValueKind { + switch x := v.any.(type) { + case ValueKind: + return x + case stringptr: + return ValueKindString + case bytesptr: + return ValueKindBytes + case sliceptr: + return ValueKindSlice + case mapptr: + return ValueKindMap + default: + return ValueKindEmpty + } +} + +// Empty returns if v does not hold any value. +func (v Value) Empty() bool { return v.Kind() == ValueKindEmpty } + +// Equal returns if v is equal to w. +func (v Value) Equal(w Value) bool { + k1 := v.Kind() + k2 := w.Kind() + if k1 != k2 { + return false + } + switch k1 { + case ValueKindInt64, ValueKindBool: + return v.num == w.num + case ValueKindString: + return v.asString() == w.asString() + case ValueKindFloat64: + return v.asFloat64() == w.asFloat64() + case ValueKindSlice: + return slices.EqualFunc(v.asSlice(), w.asSlice(), Value.Equal) + case ValueKindMap: + sv := sortMap(v.asMap()) + sw := sortMap(w.asMap()) + return slices.EqualFunc(sv, sw, Attr.Equal) + case ValueKindBytes: + return bytes.Equal(v.asBytes(), w.asBytes()) + case ValueKindEmpty: + return true + default: + // TODO: error handle + return false + } +} + +func sortMap(m []Attr) []Attr { + sm := make([]Attr, len(m)) + copy(sm, m) + slices.SortFunc(sm, func(a, b Attr) int { + return cmp.Compare(a.Key, b.Key) + }) + + return sm +} + +// String returns Value's value as a string, formatted like [fmt.Sprint]. +// +// The returned string is meant for debugging; +// the string representation is not stable. +func (v Value) String() string { + switch v.Kind() { + case ValueKindString: + return v.asString() + case ValueKindInt64: + // Assumes v.num was a valid int64 (overflow not checked). + return strconv.FormatInt(int64(v.num), 10) // nolint: gosec + case ValueKindFloat64: + return strconv.FormatFloat(v.asFloat64(), 'g', -1, 64) + case ValueKindBool: + return strconv.FormatBool(v.asBool()) + case ValueKindBytes: + return fmt.Sprint(v.asBytes()) + case ValueKindMap: + return fmt.Sprint(v.asMap()) + case ValueKindSlice: + return fmt.Sprint(v.asSlice()) + case ValueKindEmpty: + return "" + default: + // Try to handle this as gracefully as possible. + // + // Don't panic here. The goal here is to have developers find this + // first if a slog.Kind is is not handled. It is + // preferable to have user's open issue asking why their attributes + // have a "unhandled: " prefix than say that their code is panicking. + return fmt.Sprintf("", v.Kind()) + } +} + +// MarshalJSON encodes v into OTLP formatted JSON. +func (v *Value) MarshalJSON() ([]byte, error) { + switch v.Kind() { + case ValueKindString: + return json.Marshal(struct { + Value string `json:"stringValue"` + }{v.asString()}) + case ValueKindInt64: + return json.Marshal(struct { + Value string `json:"intValue"` + }{strconv.FormatInt(int64(v.num), 10)}) + case ValueKindFloat64: + return json.Marshal(struct { + Value float64 `json:"doubleValue"` + }{v.asFloat64()}) + case ValueKindBool: + return json.Marshal(struct { + Value bool `json:"boolValue"` + }{v.asBool()}) + case ValueKindBytes: + return json.Marshal(struct { + Value []byte `json:"bytesValue"` + }{v.asBytes()}) + case ValueKindMap: + return json.Marshal(struct { + Value struct { + Values []Attr `json:"values"` + } `json:"kvlistValue"` + }{struct { + Values []Attr `json:"values"` + }{v.asMap()}}) + case ValueKindSlice: + return json.Marshal(struct { + Value struct { + Values []Value `json:"values"` + } `json:"arrayValue"` + }{struct { + Values []Value `json:"values"` + }{v.asSlice()}}) + case ValueKindEmpty: + return nil, nil + default: + return nil, fmt.Errorf("unknown Value kind: %s", v.Kind().String()) + } +} + +// UnmarshalJSON decodes the OTLP formatted JSON contained in data into v. +func (v *Value) UnmarshalJSON(data []byte) error { + decoder := json.NewDecoder(bytes.NewReader(data)) + + t, err := decoder.Token() + if err != nil { + return err + } + if t != json.Delim('{') { + return errors.New("invalid Value type") + } + + for decoder.More() { + keyIface, err := decoder.Token() + if err != nil { + if errors.Is(err, io.EOF) { + // Empty. + return nil + } + return err + } + + key, ok := keyIface.(string) + if !ok { + return fmt.Errorf("invalid Value key: %#v", keyIface) + } + + switch key { + case "stringValue", "string_value": + var val string + err = decoder.Decode(&val) + *v = StringValue(val) + case "boolValue", "bool_value": + var val bool + err = decoder.Decode(&val) + *v = BoolValue(val) + case "intValue", "int_value": + var val protoInt64 + err = decoder.Decode(&val) + *v = Int64Value(val.Int64()) + case "doubleValue", "double_value": + var val float64 + err = decoder.Decode(&val) + *v = Float64Value(val) + case "bytesValue", "bytes_value": + var val64 string + if err := decoder.Decode(&val64); err != nil { + return err + } + var val []byte + val, err = base64.StdEncoding.DecodeString(val64) + *v = BytesValue(val) + case "arrayValue", "array_value": + var val struct{ Values []Value } + err = decoder.Decode(&val) + *v = SliceValue(val.Values...) + case "kvlistValue", "kvlist_value": + var val struct{ Values []Attr } + err = decoder.Decode(&val) + *v = MapValue(val.Values...) + default: + // Skip unknown. + continue + } + // Use first valid. Ignore the rest. + return err + } + + // Only unknown fields. Return nil without unmarshaling any value. + return nil +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/limit.go b/vendor/go.opentelemetry.io/auto/sdk/limit.go new file mode 100644 index 000000000000..86babf1a885e --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/limit.go @@ -0,0 +1,94 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package sdk + +import ( + "log/slog" + "os" + "strconv" +) + +// maxSpan are the span limits resolved during startup. +var maxSpan = newSpanLimits() + +type spanLimits struct { + // Attrs is the number of allowed attributes for a span. + // + // This is resolved from the environment variable value for the + // OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT key if it exists. Otherwise, the + // environment variable value for OTEL_ATTRIBUTE_COUNT_LIMIT, or 128 if + // that is not set, is used. + Attrs int + // AttrValueLen is the maximum attribute value length allowed for a span. + // + // This is resolved from the environment variable value for the + // OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT key if it exists. Otherwise, the + // environment variable value for OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT, or -1 + // if that is not set, is used. + AttrValueLen int + // Events is the number of allowed events for a span. + // + // This is resolved from the environment variable value for the + // OTEL_SPAN_EVENT_COUNT_LIMIT key, or 128 is used if that is not set. + Events int + // EventAttrs is the number of allowed attributes for a span event. + // + // The is resolved from the environment variable value for the + // OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT key, or 128 is used if that is not set. + EventAttrs int + // Links is the number of allowed Links for a span. + // + // This is resolved from the environment variable value for the + // OTEL_SPAN_LINK_COUNT_LIMIT, or 128 is used if that is not set. + Links int + // LinkAttrs is the number of allowed attributes for a span link. + // + // This is resolved from the environment variable value for the + // OTEL_LINK_ATTRIBUTE_COUNT_LIMIT, or 128 is used if that is not set. + LinkAttrs int +} + +func newSpanLimits() spanLimits { + return spanLimits{ + Attrs: firstEnv( + 128, + "OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT", + "OTEL_ATTRIBUTE_COUNT_LIMIT", + ), + AttrValueLen: firstEnv( + -1, // Unlimited. + "OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT", + "OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT", + ), + Events: firstEnv(128, "OTEL_SPAN_EVENT_COUNT_LIMIT"), + EventAttrs: firstEnv(128, "OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT"), + Links: firstEnv(128, "OTEL_SPAN_LINK_COUNT_LIMIT"), + LinkAttrs: firstEnv(128, "OTEL_LINK_ATTRIBUTE_COUNT_LIMIT"), + } +} + +// firstEnv returns the parsed integer value of the first matching environment +// variable from keys. The defaultVal is returned if the value is not an +// integer or no match is found. +func firstEnv(defaultVal int, keys ...string) int { + for _, key := range keys { + strV := os.Getenv(key) + if strV == "" { + continue + } + + v, err := strconv.Atoi(strV) + if err == nil { + return v + } + slog.Warn( + "invalid limit environment variable", + "error", err, + "key", key, + "value", strV, + ) + } + + return defaultVal +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/span.go b/vendor/go.opentelemetry.io/auto/sdk/span.go new file mode 100644 index 000000000000..6ebea12a9e9f --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/span.go @@ -0,0 +1,432 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package sdk + +import ( + "encoding/json" + "fmt" + "reflect" + "runtime" + "strings" + "sync" + "sync/atomic" + "time" + "unicode/utf8" + + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/noop" + + "go.opentelemetry.io/auto/sdk/internal/telemetry" +) + +type span struct { + noop.Span + + spanContext trace.SpanContext + sampled atomic.Bool + + mu sync.Mutex + traces *telemetry.Traces + span *telemetry.Span +} + +func (s *span) SpanContext() trace.SpanContext { + if s == nil { + return trace.SpanContext{} + } + // s.spanContext is immutable, do not acquire lock s.mu. + return s.spanContext +} + +func (s *span) IsRecording() bool { + if s == nil { + return false + } + + return s.sampled.Load() +} + +func (s *span) SetStatus(c codes.Code, msg string) { + if s == nil || !s.sampled.Load() { + return + } + + s.mu.Lock() + defer s.mu.Unlock() + + if s.span.Status == nil { + s.span.Status = new(telemetry.Status) + } + + s.span.Status.Message = msg + + switch c { + case codes.Unset: + s.span.Status.Code = telemetry.StatusCodeUnset + case codes.Error: + s.span.Status.Code = telemetry.StatusCodeError + case codes.Ok: + s.span.Status.Code = telemetry.StatusCodeOK + } +} + +func (s *span) SetAttributes(attrs ...attribute.KeyValue) { + if s == nil || !s.sampled.Load() { + return + } + + s.mu.Lock() + defer s.mu.Unlock() + + limit := maxSpan.Attrs + if limit == 0 { + // No attributes allowed. + s.span.DroppedAttrs += uint32(len(attrs)) + return + } + + m := make(map[string]int) + for i, a := range s.span.Attrs { + m[a.Key] = i + } + + for _, a := range attrs { + val := convAttrValue(a.Value) + if val.Empty() { + s.span.DroppedAttrs++ + continue + } + + if idx, ok := m[string(a.Key)]; ok { + s.span.Attrs[idx] = telemetry.Attr{ + Key: string(a.Key), + Value: val, + } + } else if limit < 0 || len(s.span.Attrs) < limit { + s.span.Attrs = append(s.span.Attrs, telemetry.Attr{ + Key: string(a.Key), + Value: val, + }) + m[string(a.Key)] = len(s.span.Attrs) - 1 + } else { + s.span.DroppedAttrs++ + } + } +} + +// convCappedAttrs converts up to limit attrs into a []telemetry.Attr. The +// number of dropped attributes is also returned. +func convCappedAttrs(limit int, attrs []attribute.KeyValue) ([]telemetry.Attr, uint32) { + if limit == 0 { + return nil, uint32(len(attrs)) + } + + if limit < 0 { + // Unlimited. + return convAttrs(attrs), 0 + } + + limit = min(len(attrs), limit) + return convAttrs(attrs[:limit]), uint32(len(attrs) - limit) +} + +func convAttrs(attrs []attribute.KeyValue) []telemetry.Attr { + if len(attrs) == 0 { + // Avoid allocations if not necessary. + return nil + } + + out := make([]telemetry.Attr, 0, len(attrs)) + for _, attr := range attrs { + key := string(attr.Key) + val := convAttrValue(attr.Value) + if val.Empty() { + continue + } + out = append(out, telemetry.Attr{Key: key, Value: val}) + } + return out +} + +func convAttrValue(value attribute.Value) telemetry.Value { + switch value.Type() { + case attribute.BOOL: + return telemetry.BoolValue(value.AsBool()) + case attribute.INT64: + return telemetry.Int64Value(value.AsInt64()) + case attribute.FLOAT64: + return telemetry.Float64Value(value.AsFloat64()) + case attribute.STRING: + v := truncate(maxSpan.AttrValueLen, value.AsString()) + return telemetry.StringValue(v) + case attribute.BOOLSLICE: + slice := value.AsBoolSlice() + out := make([]telemetry.Value, 0, len(slice)) + for _, v := range slice { + out = append(out, telemetry.BoolValue(v)) + } + return telemetry.SliceValue(out...) + case attribute.INT64SLICE: + slice := value.AsInt64Slice() + out := make([]telemetry.Value, 0, len(slice)) + for _, v := range slice { + out = append(out, telemetry.Int64Value(v)) + } + return telemetry.SliceValue(out...) + case attribute.FLOAT64SLICE: + slice := value.AsFloat64Slice() + out := make([]telemetry.Value, 0, len(slice)) + for _, v := range slice { + out = append(out, telemetry.Float64Value(v)) + } + return telemetry.SliceValue(out...) + case attribute.STRINGSLICE: + slice := value.AsStringSlice() + out := make([]telemetry.Value, 0, len(slice)) + for _, v := range slice { + v = truncate(maxSpan.AttrValueLen, v) + out = append(out, telemetry.StringValue(v)) + } + return telemetry.SliceValue(out...) + } + return telemetry.Value{} +} + +// truncate returns a truncated version of s such that it contains less than +// the limit number of characters. Truncation is applied by returning the limit +// number of valid characters contained in s. +// +// If limit is negative, it returns the original string. +// +// UTF-8 is supported. When truncating, all invalid characters are dropped +// before applying truncation. +// +// If s already contains less than the limit number of bytes, it is returned +// unchanged. No invalid characters are removed. +func truncate(limit int, s string) string { + // This prioritize performance in the following order based on the most + // common expected use-cases. + // + // - Short values less than the default limit (128). + // - Strings with valid encodings that exceed the limit. + // - No limit. + // - Strings with invalid encodings that exceed the limit. + if limit < 0 || len(s) <= limit { + return s + } + + // Optimistically, assume all valid UTF-8. + var b strings.Builder + count := 0 + for i, c := range s { + if c != utf8.RuneError { + count++ + if count > limit { + return s[:i] + } + continue + } + + _, size := utf8.DecodeRuneInString(s[i:]) + if size == 1 { + // Invalid encoding. + b.Grow(len(s) - 1) + _, _ = b.WriteString(s[:i]) + s = s[i:] + break + } + } + + // Fast-path, no invalid input. + if b.Cap() == 0 { + return s + } + + // Truncate while validating UTF-8. + for i := 0; i < len(s) && count < limit; { + c := s[i] + if c < utf8.RuneSelf { + // Optimization for single byte runes (common case). + _ = b.WriteByte(c) + i++ + count++ + continue + } + + _, size := utf8.DecodeRuneInString(s[i:]) + if size == 1 { + // We checked for all 1-byte runes above, this is a RuneError. + i++ + continue + } + + _, _ = b.WriteString(s[i : i+size]) + i += size + count++ + } + + return b.String() +} + +func (s *span) End(opts ...trace.SpanEndOption) { + if s == nil || !s.sampled.Swap(false) { + return + } + + // s.end exists so the lock (s.mu) is not held while s.ended is called. + s.ended(s.end(opts)) +} + +func (s *span) end(opts []trace.SpanEndOption) []byte { + s.mu.Lock() + defer s.mu.Unlock() + + cfg := trace.NewSpanEndConfig(opts...) + if t := cfg.Timestamp(); !t.IsZero() { + s.span.EndTime = cfg.Timestamp() + } else { + s.span.EndTime = time.Now() + } + + b, _ := json.Marshal(s.traces) // TODO: do not ignore this error. + return b +} + +// Expected to be implemented in eBPF. +// +//go:noinline +func (*span) ended(buf []byte) { ended(buf) } + +// ended is used for testing. +var ended = func([]byte) {} + +func (s *span) RecordError(err error, opts ...trace.EventOption) { + if s == nil || err == nil || !s.sampled.Load() { + return + } + + cfg := trace.NewEventConfig(opts...) + + attrs := cfg.Attributes() + attrs = append(attrs, + semconv.ExceptionType(typeStr(err)), + semconv.ExceptionMessage(err.Error()), + ) + if cfg.StackTrace() { + buf := make([]byte, 2048) + n := runtime.Stack(buf, false) + attrs = append(attrs, semconv.ExceptionStacktrace(string(buf[0:n]))) + } + + s.mu.Lock() + defer s.mu.Unlock() + + s.addEvent(semconv.ExceptionEventName, cfg.Timestamp(), attrs) +} + +func typeStr(i any) string { + t := reflect.TypeOf(i) + if t.PkgPath() == "" && t.Name() == "" { + // Likely a builtin type. + return t.String() + } + return fmt.Sprintf("%s.%s", t.PkgPath(), t.Name()) +} + +func (s *span) AddEvent(name string, opts ...trace.EventOption) { + if s == nil || !s.sampled.Load() { + return + } + + cfg := trace.NewEventConfig(opts...) + + s.mu.Lock() + defer s.mu.Unlock() + + s.addEvent(name, cfg.Timestamp(), cfg.Attributes()) +} + +// addEvent adds an event with name and attrs at tStamp to the span. The span +// lock (s.mu) needs to be held by the caller. +func (s *span) addEvent(name string, tStamp time.Time, attrs []attribute.KeyValue) { + limit := maxSpan.Events + + if limit == 0 { + s.span.DroppedEvents++ + return + } + + if limit > 0 && len(s.span.Events) == limit { + // Drop head while avoiding allocation of more capacity. + copy(s.span.Events[:limit-1], s.span.Events[1:]) + s.span.Events = s.span.Events[:limit-1] + s.span.DroppedEvents++ + } + + e := &telemetry.SpanEvent{Time: tStamp, Name: name} + e.Attrs, e.DroppedAttrs = convCappedAttrs(maxSpan.EventAttrs, attrs) + + s.span.Events = append(s.span.Events, e) +} + +func (s *span) AddLink(link trace.Link) { + if s == nil || !s.sampled.Load() { + return + } + + l := maxSpan.Links + + s.mu.Lock() + defer s.mu.Unlock() + + if l == 0 { + s.span.DroppedLinks++ + return + } + + if l > 0 && len(s.span.Links) == l { + // Drop head while avoiding allocation of more capacity. + copy(s.span.Links[:l-1], s.span.Links[1:]) + s.span.Links = s.span.Links[:l-1] + s.span.DroppedLinks++ + } + + s.span.Links = append(s.span.Links, convLink(link)) +} + +func convLinks(links []trace.Link) []*telemetry.SpanLink { + out := make([]*telemetry.SpanLink, 0, len(links)) + for _, link := range links { + out = append(out, convLink(link)) + } + return out +} + +func convLink(link trace.Link) *telemetry.SpanLink { + l := &telemetry.SpanLink{ + TraceID: telemetry.TraceID(link.SpanContext.TraceID()), + SpanID: telemetry.SpanID(link.SpanContext.SpanID()), + TraceState: link.SpanContext.TraceState().String(), + Flags: uint32(link.SpanContext.TraceFlags()), + } + l.Attrs, l.DroppedAttrs = convCappedAttrs(maxSpan.LinkAttrs, link.Attributes) + + return l +} + +func (s *span) SetName(name string) { + if s == nil || !s.sampled.Load() { + return + } + + s.mu.Lock() + defer s.mu.Unlock() + + s.span.Name = name +} + +func (*span) TracerProvider() trace.TracerProvider { return TracerProvider() } diff --git a/vendor/go.opentelemetry.io/auto/sdk/tracer.go b/vendor/go.opentelemetry.io/auto/sdk/tracer.go new file mode 100644 index 000000000000..cbcfabde3b1a --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/tracer.go @@ -0,0 +1,124 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package sdk + +import ( + "context" + "time" + + "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/noop" + + "go.opentelemetry.io/auto/sdk/internal/telemetry" +) + +type tracer struct { + noop.Tracer + + name, schemaURL, version string +} + +var _ trace.Tracer = tracer{} + +func (t tracer) Start(ctx context.Context, name string, opts ...trace.SpanStartOption) (context.Context, trace.Span) { + var psc trace.SpanContext + sampled := true + span := new(span) + + // Ask eBPF for sampling decision and span context info. + t.start(ctx, span, &psc, &sampled, &span.spanContext) + + span.sampled.Store(sampled) + + ctx = trace.ContextWithSpan(ctx, span) + + if sampled { + // Only build traces if sampled. + cfg := trace.NewSpanStartConfig(opts...) + span.traces, span.span = t.traces(name, cfg, span.spanContext, psc) + } + + return ctx, span +} + +// Expected to be implemented in eBPF. +// +//go:noinline +func (t *tracer) start( + ctx context.Context, + spanPtr *span, + psc *trace.SpanContext, + sampled *bool, + sc *trace.SpanContext, +) { + start(ctx, spanPtr, psc, sampled, sc) +} + +// start is used for testing. +var start = func(context.Context, *span, *trace.SpanContext, *bool, *trace.SpanContext) {} + +func (t tracer) traces(name string, cfg trace.SpanConfig, sc, psc trace.SpanContext) (*telemetry.Traces, *telemetry.Span) { + span := &telemetry.Span{ + TraceID: telemetry.TraceID(sc.TraceID()), + SpanID: telemetry.SpanID(sc.SpanID()), + Flags: uint32(sc.TraceFlags()), + TraceState: sc.TraceState().String(), + ParentSpanID: telemetry.SpanID(psc.SpanID()), + Name: name, + Kind: spanKind(cfg.SpanKind()), + } + + span.Attrs, span.DroppedAttrs = convCappedAttrs(maxSpan.Attrs, cfg.Attributes()) + + links := cfg.Links() + if limit := maxSpan.Links; limit == 0 { + span.DroppedLinks = uint32(len(links)) + } else { + if limit > 0 { + n := max(len(links)-limit, 0) + span.DroppedLinks = uint32(n) + links = links[n:] + } + span.Links = convLinks(links) + } + + if t := cfg.Timestamp(); !t.IsZero() { + span.StartTime = cfg.Timestamp() + } else { + span.StartTime = time.Now() + } + + return &telemetry.Traces{ + ResourceSpans: []*telemetry.ResourceSpans{ + { + ScopeSpans: []*telemetry.ScopeSpans{ + { + Scope: &telemetry.Scope{ + Name: t.name, + Version: t.version, + }, + Spans: []*telemetry.Span{span}, + SchemaURL: t.schemaURL, + }, + }, + }, + }, + }, span +} + +func spanKind(kind trace.SpanKind) telemetry.SpanKind { + switch kind { + case trace.SpanKindInternal: + return telemetry.SpanKindInternal + case trace.SpanKindServer: + return telemetry.SpanKindServer + case trace.SpanKindClient: + return telemetry.SpanKindClient + case trace.SpanKindProducer: + return telemetry.SpanKindProducer + case trace.SpanKindConsumer: + return telemetry.SpanKindConsumer + } + return telemetry.SpanKind(0) // undefined. +} diff --git a/vendor/go.opentelemetry.io/auto/sdk/tracer_provider.go b/vendor/go.opentelemetry.io/auto/sdk/tracer_provider.go new file mode 100644 index 000000000000..dbc477a59ad2 --- /dev/null +++ b/vendor/go.opentelemetry.io/auto/sdk/tracer_provider.go @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package sdk + +import ( + "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/noop" +) + +// TracerProvider returns an auto-instrumentable [trace.TracerProvider]. +// +// If an [go.opentelemetry.io/auto.Instrumentation] is configured to instrument +// the process using the returned TracerProvider, all of the telemetry it +// produces will be processed and handled by that Instrumentation. By default, +// if no Instrumentation instruments the TracerProvider it will not generate +// any trace telemetry. +func TracerProvider() trace.TracerProvider { return tracerProviderInstance } + +var tracerProviderInstance = new(tracerProvider) + +type tracerProvider struct{ noop.TracerProvider } + +var _ trace.TracerProvider = tracerProvider{} + +func (p tracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.Tracer { + cfg := trace.NewTracerConfig(opts...) + return tracer{ + name: name, + version: cfg.InstrumentationVersion(), + schemaURL: cfg.SchemaURL(), + } +} diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/client.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/client.go index 92b8cf73c975..b25641c55d34 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/client.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/client.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" @@ -23,13 +12,13 @@ import ( ) // DefaultClient is the default Client and is used by Get, Head, Post and PostForm. -// Please be careful of intitialization order - for example, if you change +// Please be careful of initialization order - for example, if you change // the global propagator, the DefaultClient might still be using the old one. var DefaultClient = &http.Client{Transport: NewTransport(http.DefaultTransport)} // Get is a convenient replacement for http.Get that adds a span around the request. func Get(ctx context.Context, targetURL string) (resp *http.Response, err error) { - req, err := http.NewRequestWithContext(ctx, "GET", targetURL, nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, targetURL, nil) if err != nil { return nil, err } @@ -38,7 +27,7 @@ func Get(ctx context.Context, targetURL string) (resp *http.Response, err error) // Head is a convenient replacement for http.Head that adds a span around the request. func Head(ctx context.Context, targetURL string) (resp *http.Response, err error) { - req, err := http.NewRequestWithContext(ctx, "HEAD", targetURL, nil) + req, err := http.NewRequestWithContext(ctx, http.MethodHead, targetURL, nil) if err != nil { return nil, err } @@ -47,7 +36,7 @@ func Head(ctx context.Context, targetURL string) (resp *http.Response, err error // Post is a convenient replacement for http.Post that adds a span around the request. func Post(ctx context.Context, targetURL, contentType string, body io.Reader) (resp *http.Response, err error) { - req, err := http.NewRequestWithContext(ctx, "POST", targetURL, body) + req, err := http.NewRequestWithContext(ctx, http.MethodPost, targetURL, body) if err != nil { return nil, err } diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/common.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/common.go index cabf645a5b55..a83a026274a1 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/common.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/common.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" @@ -29,20 +18,6 @@ const ( WriteErrorKey = attribute.Key("http.write_error") // if an error occurred while writing a reply, the string of the error (io.EOF is not recorded) ) -// Server HTTP metrics. -const ( - serverRequestSize = "http.server.request.size" // Incoming request bytes total - serverResponseSize = "http.server.response.size" // Incoming response bytes total - serverDuration = "http.server.duration" // Incoming end to end duration, milliseconds -) - -// Client HTTP metrics. -const ( - clientRequestSize = "http.client.request.size" // Outgoing request bytes total - clientResponseSize = "http.client.response.size" // Outgoing response bytes total - clientDuration = "http.client.duration" // Outgoing end to end duration, milliseconds -) - // Filter is a predicate used to determine whether a given http.request should // be traced. A Filter must return true if the request should be traced. type Filter func(*http.Request) bool diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go index a1b5b5e5aa8e..a01bfafbe077 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" @@ -19,6 +8,8 @@ import ( "net/http" "net/http/httptrace" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/propagation" @@ -44,8 +35,9 @@ type config struct { SpanNameFormatter func(string, *http.Request) string ClientTrace func(context.Context) *httptrace.ClientTrace - TracerProvider trace.TracerProvider - MeterProvider metric.MeterProvider + TracerProvider trace.TracerProvider + MeterProvider metric.MeterProvider + MetricAttributesFn func(*http.Request) []attribute.KeyValue } // Option interface used for setting optional config properties. @@ -111,7 +103,7 @@ func WithPublicEndpoint() Option { }) } -// WithPublicEndpointFn runs with every request, and allows conditionnally +// WithPublicEndpointFn runs with every request, and allows conditionally // configuring the Handler to link the span with an incoming span context. If // this option is not provided or returns false, then the association is a // child association instead of a link. @@ -205,3 +197,11 @@ func WithServerName(server string) Option { c.ServerName = server }) } + +// WithMetricAttributesFn returns an Option to set a function that maps an HTTP request to a slice of attribute.KeyValue. +// These attributes will be included in metrics for every request. +func WithMetricAttributesFn(metricAttributesFn func(r *http.Request) []attribute.KeyValue) Option { + return optionFunc(func(c *config) { + c.MetricAttributesFn = metricAttributesFn + }) +} diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/doc.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/doc.go index 38c7f01c71a1..56b24b982aef 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/doc.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/doc.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 // Package otelhttp provides an http.Handler and functions that are intended // to be used to add tracing by wrapping existing handlers (with Handler) and diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go index 1fc15019e653..e555a475f13d 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go @@ -1,32 +1,18 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" import ( - "io" "net/http" "time" "github.com/felixge/httpsnoop" - "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil" + "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request" + "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv" "go.opentelemetry.io/otel" - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/propagation" - semconv "go.opentelemetry.io/otel/semconv/v1.20.0" "go.opentelemetry.io/otel/trace" ) @@ -36,7 +22,6 @@ type middleware struct { server string tracer trace.Tracer - meter metric.Meter propagators propagation.TextMapPropagator spanStartOptions []trace.SpanStartOption readEvent bool @@ -46,9 +31,7 @@ type middleware struct { publicEndpoint bool publicEndpointFn func(*http.Request) bool - requestBytesCounter metric.Int64Counter - responseBytesCounter metric.Int64Counter - serverLatencyMeasure metric.Float64Histogram + semconv semconv.HTTPServer } func defaultHandlerFormatter(operation string, _ *http.Request) string { @@ -76,7 +59,6 @@ func NewMiddleware(operation string, opts ...Option) func(http.Handler) http.Han c := newConfig(append(defaultOpts, opts...)...) h.configure(c) - h.createMeasures() return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -87,7 +69,6 @@ func NewMiddleware(operation string, opts ...Option) func(http.Handler) http.Han func (h *middleware) configure(c *config) { h.tracer = c.Tracer - h.meter = c.Meter h.propagators = c.Propagators h.spanStartOptions = c.SpanStartOptions h.readEvent = c.ReadEvent @@ -97,36 +78,7 @@ func (h *middleware) configure(c *config) { h.publicEndpoint = c.PublicEndpoint h.publicEndpointFn = c.PublicEndpointFn h.server = c.ServerName -} - -func handleErr(err error) { - if err != nil { - otel.Handle(err) - } -} - -func (h *middleware) createMeasures() { - var err error - h.requestBytesCounter, err = h.meter.Int64Counter( - serverRequestSize, - metric.WithUnit("By"), - metric.WithDescription("Measures the size of HTTP request messages."), - ) - handleErr(err) - - h.responseBytesCounter, err = h.meter.Int64Counter( - serverResponseSize, - metric.WithUnit("By"), - metric.WithDescription("Measures the size of HTTP response messages."), - ) - handleErr(err) - - h.serverLatencyMeasure, err = h.meter.Float64Histogram( - serverDuration, - metric.WithUnit("ms"), - metric.WithDescription("Measures the duration of inbound HTTP requests."), - ) - handleErr(err) + h.semconv = semconv.NewHTTPServer(c.Meter) } // serveHTTP sets up tracing and calls the given next http.Handler with the span @@ -143,12 +95,9 @@ func (h *middleware) serveHTTP(w http.ResponseWriter, r *http.Request, next http ctx := h.propagators.Extract(r.Context(), propagation.HeaderCarrier(r.Header)) opts := []trace.SpanStartOption{ - trace.WithAttributes(semconvutil.HTTPServerRequest(h.server, r)...), - } - if h.server != "" { - hostAttr := semconv.NetHostName(h.server) - opts = append(opts, trace.WithAttributes(hostAttr)) + trace.WithAttributes(h.semconv.RequestTraceAttrs(h.server, r)...), } + opts = append(opts, h.spanStartOptions...) if h.publicEndpoint || (h.publicEndpointFn != nil && h.publicEndpointFn(r.WithContext(ctx))) { opts = append(opts, trace.WithNewRoot()) @@ -168,6 +117,11 @@ func (h *middleware) serveHTTP(w http.ResponseWriter, r *http.Request, next http } } + if startTime := StartTimeFromContext(ctx); !startTime.IsZero() { + opts = append(opts, trace.WithTimestamp(startTime)) + requestStartTime = startTime + } + ctx, span := tracer.Start(ctx, h.spanNameFormatter(h.operation, r), opts...) defer span.End() @@ -178,14 +132,12 @@ func (h *middleware) serveHTTP(w http.ResponseWriter, r *http.Request, next http } } - var bw bodyWrapper // if request body is nil or NoBody, we don't want to mutate the body as it // will affect the identity of it in an unforeseeable way because we assert // ReadCloser fulfills a certain interface and it is indeed nil or NoBody. + bw := request.NewBodyWrapper(r.Body, readRecordFunc) if r.Body != nil && r.Body != http.NoBody { - bw.ReadCloser = r.Body - bw.record = readRecordFunc - r.Body = &bw + r.Body = bw } writeRecordFunc := func(int64) {} @@ -195,13 +147,7 @@ func (h *middleware) serveHTTP(w http.ResponseWriter, r *http.Request, next http } } - rww := &respWriterWrapper{ - ResponseWriter: w, - record: writeRecordFunc, - ctx: ctx, - props: h.propagators, - statusCode: http.StatusOK, // default status code in case the Handler doesn't write anything - } + rww := request.NewRespWriterWrapper(w, writeRecordFunc) // Wrap w to use our ResponseWriter methods while also exposing // other interfaces that w may implement (http.CloseNotifier, @@ -217,61 +163,52 @@ func (h *middleware) serveHTTP(w http.ResponseWriter, r *http.Request, next http WriteHeader: func(httpsnoop.WriteHeaderFunc) httpsnoop.WriteHeaderFunc { return rww.WriteHeader }, + Flush: func(httpsnoop.FlushFunc) httpsnoop.FlushFunc { + return rww.Flush + }, }) - labeler := &Labeler{} - ctx = injectLabeler(ctx, labeler) + labeler, found := LabelerFromContext(ctx) + if !found { + ctx = ContextWithLabeler(ctx, labeler) + } next.ServeHTTP(w, r.WithContext(ctx)) - setAfterServeAttributes(span, bw.read.Load(), rww.written, rww.statusCode, bw.err, rww.err) - - // Add metrics - attributes := append(labeler.Get(), semconvutil.HTTPServerRequestMetrics(h.server, r)...) - if rww.statusCode > 0 { - attributes = append(attributes, semconv.HTTPStatusCode(rww.statusCode)) - } - o := metric.WithAttributes(attributes...) - h.requestBytesCounter.Add(ctx, bw.read.Load(), o) - h.responseBytesCounter.Add(ctx, rww.written, o) + statusCode := rww.StatusCode() + bytesWritten := rww.BytesWritten() + span.SetStatus(h.semconv.Status(statusCode)) + span.SetAttributes(h.semconv.ResponseTraceAttrs(semconv.ResponseTelemetry{ + StatusCode: statusCode, + ReadBytes: bw.BytesRead(), + ReadError: bw.Error(), + WriteBytes: bytesWritten, + WriteError: rww.Error(), + })...) // Use floating point division here for higher precision (instead of Millisecond method). elapsedTime := float64(time.Since(requestStartTime)) / float64(time.Millisecond) - h.serverLatencyMeasure.Record(ctx, elapsedTime, o) -} - -func setAfterServeAttributes(span trace.Span, read, wrote int64, statusCode int, rerr, werr error) { - attributes := []attribute.KeyValue{} - - // TODO: Consider adding an event after each read and write, possibly as an - // option (defaulting to off), so as to not create needlessly verbose spans. - if read > 0 { - attributes = append(attributes, ReadBytesKey.Int64(read)) - } - if rerr != nil && rerr != io.EOF { - attributes = append(attributes, ReadErrorKey.String(rerr.Error())) - } - if wrote > 0 { - attributes = append(attributes, WroteBytesKey.Int64(wrote)) - } - if statusCode > 0 { - attributes = append(attributes, semconv.HTTPStatusCode(statusCode)) - } - span.SetStatus(semconvutil.HTTPServerStatus(statusCode)) - - if werr != nil && werr != io.EOF { - attributes = append(attributes, WriteErrorKey.String(werr.Error())) - } - span.SetAttributes(attributes...) + h.semconv.RecordMetrics(ctx, semconv.ServerMetricData{ + ServerName: h.server, + ResponseSize: bytesWritten, + MetricAttributes: semconv.MetricAttributes{ + Req: r, + StatusCode: statusCode, + AdditionalAttributes: labeler.Get(), + }, + MetricData: semconv.MetricData{ + RequestSize: bw.BytesRead(), + ElapsedTime: elapsedTime, + }, + }) } // WithRouteTag annotates spans and metrics with the provided route name // with HTTP route attribute. func WithRouteTag(route string, h http.Handler) http.Handler { + attr := semconv.NewHTTPServer(nil).Route(route) return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - attr := semconv.HTTPRouteKey.String(route) - span := trace.SpanFromContext(r.Context()) span.SetAttributes(attr) diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go new file mode 100644 index 000000000000..a945f5566165 --- /dev/null +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go @@ -0,0 +1,75 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package request // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request" + +import ( + "io" + "sync" +) + +var _ io.ReadCloser = &BodyWrapper{} + +// BodyWrapper wraps a http.Request.Body (an io.ReadCloser) to track the number +// of bytes read and the last error. +type BodyWrapper struct { + io.ReadCloser + OnRead func(n int64) // must not be nil + + mu sync.Mutex + read int64 + err error +} + +// NewBodyWrapper creates a new BodyWrapper. +// +// The onRead attribute is a callback that will be called every time the data +// is read, with the number of bytes being read. +func NewBodyWrapper(body io.ReadCloser, onRead func(int64)) *BodyWrapper { + return &BodyWrapper{ + ReadCloser: body, + OnRead: onRead, + } +} + +// Read reads the data from the io.ReadCloser, and stores the number of bytes +// read and the error. +func (w *BodyWrapper) Read(b []byte) (int, error) { + n, err := w.ReadCloser.Read(b) + n1 := int64(n) + + w.updateReadData(n1, err) + w.OnRead(n1) + return n, err +} + +func (w *BodyWrapper) updateReadData(n int64, err error) { + w.mu.Lock() + defer w.mu.Unlock() + + w.read += n + if err != nil { + w.err = err + } +} + +// Closes closes the io.ReadCloser. +func (w *BodyWrapper) Close() error { + return w.ReadCloser.Close() +} + +// BytesRead returns the number of bytes read up to this point. +func (w *BodyWrapper) BytesRead() int64 { + w.mu.Lock() + defer w.mu.Unlock() + + return w.read +} + +// Error returns the last error. +func (w *BodyWrapper) Error() error { + w.mu.Lock() + defer w.mu.Unlock() + + return w.err +} diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go new file mode 100644 index 000000000000..fbc344cbdda3 --- /dev/null +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go @@ -0,0 +1,119 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package request // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request" + +import ( + "net/http" + "sync" +) + +var _ http.ResponseWriter = &RespWriterWrapper{} + +// RespWriterWrapper wraps a http.ResponseWriter in order to track the number of +// bytes written, the last error, and to catch the first written statusCode. +// TODO: The wrapped http.ResponseWriter doesn't implement any of the optional +// types (http.Hijacker, http.Pusher, http.CloseNotifier, etc) +// that may be useful when using it in real life situations. +type RespWriterWrapper struct { + http.ResponseWriter + OnWrite func(n int64) // must not be nil + + mu sync.RWMutex + written int64 + statusCode int + err error + wroteHeader bool +} + +// NewRespWriterWrapper creates a new RespWriterWrapper. +// +// The onWrite attribute is a callback that will be called every time the data +// is written, with the number of bytes that were written. +func NewRespWriterWrapper(w http.ResponseWriter, onWrite func(int64)) *RespWriterWrapper { + return &RespWriterWrapper{ + ResponseWriter: w, + OnWrite: onWrite, + statusCode: http.StatusOK, // default status code in case the Handler doesn't write anything + } +} + +// Write writes the bytes array into the [ResponseWriter], and tracks the +// number of bytes written and last error. +func (w *RespWriterWrapper) Write(p []byte) (int, error) { + w.mu.Lock() + defer w.mu.Unlock() + + if !w.wroteHeader { + w.writeHeader(http.StatusOK) + } + + n, err := w.ResponseWriter.Write(p) + n1 := int64(n) + w.OnWrite(n1) + w.written += n1 + w.err = err + return n, err +} + +// WriteHeader persists initial statusCode for span attribution. +// All calls to WriteHeader will be propagated to the underlying ResponseWriter +// and will persist the statusCode from the first call. +// Blocking consecutive calls to WriteHeader alters expected behavior and will +// remove warning logs from net/http where developers will notice incorrect handler implementations. +func (w *RespWriterWrapper) WriteHeader(statusCode int) { + w.mu.Lock() + defer w.mu.Unlock() + + w.writeHeader(statusCode) +} + +// writeHeader persists the status code for span attribution, and propagates +// the call to the underlying ResponseWriter. +// It does not acquire a lock, and therefore assumes that is being handled by a +// parent method. +func (w *RespWriterWrapper) writeHeader(statusCode int) { + if !w.wroteHeader { + w.wroteHeader = true + w.statusCode = statusCode + } + w.ResponseWriter.WriteHeader(statusCode) +} + +// Flush implements [http.Flusher]. +func (w *RespWriterWrapper) Flush() { + w.mu.Lock() + defer w.mu.Unlock() + + if !w.wroteHeader { + w.writeHeader(http.StatusOK) + } + + if f, ok := w.ResponseWriter.(http.Flusher); ok { + f.Flush() + } +} + +// BytesWritten returns the number of bytes written. +func (w *RespWriterWrapper) BytesWritten() int64 { + w.mu.RLock() + defer w.mu.RUnlock() + + return w.written +} + +// BytesWritten returns the HTTP status code that was sent. +func (w *RespWriterWrapper) StatusCode() int { + w.mu.RLock() + defer w.mu.RUnlock() + + return w.statusCode +} + +// Error returns the last error. +func (w *RespWriterWrapper) Error() error { + w.mu.RLock() + defer w.mu.RUnlock() + + return w.err +} diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/env.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/env.go new file mode 100644 index 000000000000..3b036f8a37b2 --- /dev/null +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/env.go @@ -0,0 +1,237 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package semconv // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv" + +import ( + "context" + "fmt" + "net/http" + "os" + "strings" + "sync" + + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/metric" +) + +type ResponseTelemetry struct { + StatusCode int + ReadBytes int64 + ReadError error + WriteBytes int64 + WriteError error +} + +type HTTPServer struct { + duplicate bool + + // Old metrics + requestBytesCounter metric.Int64Counter + responseBytesCounter metric.Int64Counter + serverLatencyMeasure metric.Float64Histogram +} + +// RequestTraceAttrs returns trace attributes for an HTTP request received by a +// server. +// +// The server must be the primary server name if it is known. For example this +// would be the ServerName directive +// (https://httpd.apache.org/docs/2.4/mod/core.html#servername) for an Apache +// server, and the server_name directive +// (http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) for an +// nginx server. More generically, the primary server name would be the host +// header value that matches the default virtual host of an HTTP server. It +// should include the host identifier and if a port is used to route to the +// server that port identifier should be included as an appropriate port +// suffix. +// +// If the primary server name is not known, server should be an empty string. +// The req Host will be used to determine the server instead. +func (s HTTPServer) RequestTraceAttrs(server string, req *http.Request) []attribute.KeyValue { + if s.duplicate { + return append(OldHTTPServer{}.RequestTraceAttrs(server, req), CurrentHTTPServer{}.RequestTraceAttrs(server, req)...) + } + return OldHTTPServer{}.RequestTraceAttrs(server, req) +} + +// ResponseTraceAttrs returns trace attributes for telemetry from an HTTP response. +// +// If any of the fields in the ResponseTelemetry are not set the attribute will be omitted. +func (s HTTPServer) ResponseTraceAttrs(resp ResponseTelemetry) []attribute.KeyValue { + if s.duplicate { + return append(OldHTTPServer{}.ResponseTraceAttrs(resp), CurrentHTTPServer{}.ResponseTraceAttrs(resp)...) + } + return OldHTTPServer{}.ResponseTraceAttrs(resp) +} + +// Route returns the attribute for the route. +func (s HTTPServer) Route(route string) attribute.KeyValue { + return OldHTTPServer{}.Route(route) +} + +// Status returns a span status code and message for an HTTP status code +// value returned by a server. Status codes in the 400-499 range are not +// returned as errors. +func (s HTTPServer) Status(code int) (codes.Code, string) { + if code < 100 || code >= 600 { + return codes.Error, fmt.Sprintf("Invalid HTTP status code %d", code) + } + if code >= 500 { + return codes.Error, "" + } + return codes.Unset, "" +} + +type ServerMetricData struct { + ServerName string + ResponseSize int64 + + MetricData + MetricAttributes +} + +type MetricAttributes struct { + Req *http.Request + StatusCode int + AdditionalAttributes []attribute.KeyValue +} + +type MetricData struct { + RequestSize int64 + ElapsedTime float64 +} + +var metricAddOptionPool = &sync.Pool{ + New: func() interface{} { + return &[]metric.AddOption{} + }, +} + +func (s HTTPServer) RecordMetrics(ctx context.Context, md ServerMetricData) { + if s.requestBytesCounter == nil || s.responseBytesCounter == nil || s.serverLatencyMeasure == nil { + // This will happen if an HTTPServer{} is used instead of NewHTTPServer. + return + } + + attributes := OldHTTPServer{}.MetricAttributes(md.ServerName, md.Req, md.StatusCode, md.AdditionalAttributes) + o := metric.WithAttributeSet(attribute.NewSet(attributes...)) + addOpts := metricAddOptionPool.Get().(*[]metric.AddOption) + *addOpts = append(*addOpts, o) + s.requestBytesCounter.Add(ctx, md.RequestSize, *addOpts...) + s.responseBytesCounter.Add(ctx, md.ResponseSize, *addOpts...) + s.serverLatencyMeasure.Record(ctx, md.ElapsedTime, o) + *addOpts = (*addOpts)[:0] + metricAddOptionPool.Put(addOpts) + + // TODO: Duplicate Metrics +} + +func NewHTTPServer(meter metric.Meter) HTTPServer { + env := strings.ToLower(os.Getenv("OTEL_SEMCONV_STABILITY_OPT_IN")) + duplicate := env == "http/dup" + server := HTTPServer{ + duplicate: duplicate, + } + server.requestBytesCounter, server.responseBytesCounter, server.serverLatencyMeasure = OldHTTPServer{}.createMeasures(meter) + return server +} + +type HTTPClient struct { + duplicate bool + + // old metrics + requestBytesCounter metric.Int64Counter + responseBytesCounter metric.Int64Counter + latencyMeasure metric.Float64Histogram +} + +func NewHTTPClient(meter metric.Meter) HTTPClient { + env := strings.ToLower(os.Getenv("OTEL_SEMCONV_STABILITY_OPT_IN")) + client := HTTPClient{ + duplicate: env == "http/dup", + } + client.requestBytesCounter, client.responseBytesCounter, client.latencyMeasure = OldHTTPClient{}.createMeasures(meter) + return client +} + +// RequestTraceAttrs returns attributes for an HTTP request made by a client. +func (c HTTPClient) RequestTraceAttrs(req *http.Request) []attribute.KeyValue { + if c.duplicate { + return append(OldHTTPClient{}.RequestTraceAttrs(req), CurrentHTTPClient{}.RequestTraceAttrs(req)...) + } + return OldHTTPClient{}.RequestTraceAttrs(req) +} + +// ResponseTraceAttrs returns metric attributes for an HTTP request made by a client. +func (c HTTPClient) ResponseTraceAttrs(resp *http.Response) []attribute.KeyValue { + if c.duplicate { + return append(OldHTTPClient{}.ResponseTraceAttrs(resp), CurrentHTTPClient{}.ResponseTraceAttrs(resp)...) + } + + return OldHTTPClient{}.ResponseTraceAttrs(resp) +} + +func (c HTTPClient) Status(code int) (codes.Code, string) { + if code < 100 || code >= 600 { + return codes.Error, fmt.Sprintf("Invalid HTTP status code %d", code) + } + if code >= 400 { + return codes.Error, "" + } + return codes.Unset, "" +} + +func (c HTTPClient) ErrorType(err error) attribute.KeyValue { + if c.duplicate { + return CurrentHTTPClient{}.ErrorType(err) + } + + return attribute.KeyValue{} +} + +type MetricOpts struct { + measurement metric.MeasurementOption + addOptions metric.AddOption +} + +func (o MetricOpts) MeasurementOption() metric.MeasurementOption { + return o.measurement +} + +func (o MetricOpts) AddOptions() metric.AddOption { + return o.addOptions +} + +func (c HTTPClient) MetricOptions(ma MetricAttributes) MetricOpts { + attributes := OldHTTPClient{}.MetricAttributes(ma.Req, ma.StatusCode, ma.AdditionalAttributes) + // TODO: Duplicate Metrics + set := metric.WithAttributeSet(attribute.NewSet(attributes...)) + return MetricOpts{ + measurement: set, + addOptions: set, + } +} + +func (s HTTPClient) RecordMetrics(ctx context.Context, md MetricData, opts MetricOpts) { + if s.requestBytesCounter == nil || s.latencyMeasure == nil { + // This will happen if an HTTPClient{} is used instead of NewHTTPClient(). + return + } + + s.requestBytesCounter.Add(ctx, md.RequestSize, opts.AddOptions()) + s.latencyMeasure.Record(ctx, md.ElapsedTime, opts.MeasurementOption()) + + // TODO: Duplicate Metrics +} + +func (s HTTPClient) RecordResponseSize(ctx context.Context, responseData int64, opts metric.AddOption) { + if s.responseBytesCounter == nil { + // This will happen if an HTTPClient{} is used instead of NewHTTPClient(). + return + } + + s.responseBytesCounter.Add(ctx, responseData, opts) + // TODO: Duplicate Metrics +} diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/httpconv.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/httpconv.go new file mode 100644 index 000000000000..dc9ec7bc39ed --- /dev/null +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/httpconv.go @@ -0,0 +1,348 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package semconv // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv" + +import ( + "fmt" + "net/http" + "reflect" + "strconv" + "strings" + + "go.opentelemetry.io/otel/attribute" + semconvNew "go.opentelemetry.io/otel/semconv/v1.26.0" +) + +type CurrentHTTPServer struct{} + +// TraceRequest returns trace attributes for an HTTP request received by a +// server. +// +// The server must be the primary server name if it is known. For example this +// would be the ServerName directive +// (https://httpd.apache.org/docs/2.4/mod/core.html#servername) for an Apache +// server, and the server_name directive +// (http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) for an +// nginx server. More generically, the primary server name would be the host +// header value that matches the default virtual host of an HTTP server. It +// should include the host identifier and if a port is used to route to the +// server that port identifier should be included as an appropriate port +// suffix. +// +// If the primary server name is not known, server should be an empty string. +// The req Host will be used to determine the server instead. +func (n CurrentHTTPServer) RequestTraceAttrs(server string, req *http.Request) []attribute.KeyValue { + count := 3 // ServerAddress, Method, Scheme + + var host string + var p int + if server == "" { + host, p = SplitHostPort(req.Host) + } else { + // Prioritize the primary server name. + host, p = SplitHostPort(server) + if p < 0 { + _, p = SplitHostPort(req.Host) + } + } + + hostPort := requiredHTTPPort(req.TLS != nil, p) + if hostPort > 0 { + count++ + } + + method, methodOriginal := n.method(req.Method) + if methodOriginal != (attribute.KeyValue{}) { + count++ + } + + scheme := n.scheme(req.TLS != nil) + + if peer, peerPort := SplitHostPort(req.RemoteAddr); peer != "" { + // The Go HTTP server sets RemoteAddr to "IP:port", this will not be a + // file-path that would be interpreted with a sock family. + count++ + if peerPort > 0 { + count++ + } + } + + useragent := req.UserAgent() + if useragent != "" { + count++ + } + + clientIP := serverClientIP(req.Header.Get("X-Forwarded-For")) + if clientIP != "" { + count++ + } + + if req.URL != nil && req.URL.Path != "" { + count++ + } + + protoName, protoVersion := netProtocol(req.Proto) + if protoName != "" && protoName != "http" { + count++ + } + if protoVersion != "" { + count++ + } + + attrs := make([]attribute.KeyValue, 0, count) + attrs = append(attrs, + semconvNew.ServerAddress(host), + method, + scheme, + ) + + if hostPort > 0 { + attrs = append(attrs, semconvNew.ServerPort(hostPort)) + } + if methodOriginal != (attribute.KeyValue{}) { + attrs = append(attrs, methodOriginal) + } + + if peer, peerPort := SplitHostPort(req.RemoteAddr); peer != "" { + // The Go HTTP server sets RemoteAddr to "IP:port", this will not be a + // file-path that would be interpreted with a sock family. + attrs = append(attrs, semconvNew.NetworkPeerAddress(peer)) + if peerPort > 0 { + attrs = append(attrs, semconvNew.NetworkPeerPort(peerPort)) + } + } + + if useragent := req.UserAgent(); useragent != "" { + attrs = append(attrs, semconvNew.UserAgentOriginal(useragent)) + } + + if clientIP != "" { + attrs = append(attrs, semconvNew.ClientAddress(clientIP)) + } + + if req.URL != nil && req.URL.Path != "" { + attrs = append(attrs, semconvNew.URLPath(req.URL.Path)) + } + + if protoName != "" && protoName != "http" { + attrs = append(attrs, semconvNew.NetworkProtocolName(protoName)) + } + if protoVersion != "" { + attrs = append(attrs, semconvNew.NetworkProtocolVersion(protoVersion)) + } + + return attrs +} + +func (n CurrentHTTPServer) method(method string) (attribute.KeyValue, attribute.KeyValue) { + if method == "" { + return semconvNew.HTTPRequestMethodGet, attribute.KeyValue{} + } + if attr, ok := methodLookup[method]; ok { + return attr, attribute.KeyValue{} + } + + orig := semconvNew.HTTPRequestMethodOriginal(method) + if attr, ok := methodLookup[strings.ToUpper(method)]; ok { + return attr, orig + } + return semconvNew.HTTPRequestMethodGet, orig +} + +func (n CurrentHTTPServer) scheme(https bool) attribute.KeyValue { // nolint:revive + if https { + return semconvNew.URLScheme("https") + } + return semconvNew.URLScheme("http") +} + +// TraceResponse returns trace attributes for telemetry from an HTTP response. +// +// If any of the fields in the ResponseTelemetry are not set the attribute will be omitted. +func (n CurrentHTTPServer) ResponseTraceAttrs(resp ResponseTelemetry) []attribute.KeyValue { + var count int + + if resp.ReadBytes > 0 { + count++ + } + if resp.WriteBytes > 0 { + count++ + } + if resp.StatusCode > 0 { + count++ + } + + attributes := make([]attribute.KeyValue, 0, count) + + if resp.ReadBytes > 0 { + attributes = append(attributes, + semconvNew.HTTPRequestBodySize(int(resp.ReadBytes)), + ) + } + if resp.WriteBytes > 0 { + attributes = append(attributes, + semconvNew.HTTPResponseBodySize(int(resp.WriteBytes)), + ) + } + if resp.StatusCode > 0 { + attributes = append(attributes, + semconvNew.HTTPResponseStatusCode(resp.StatusCode), + ) + } + + return attributes +} + +// Route returns the attribute for the route. +func (n CurrentHTTPServer) Route(route string) attribute.KeyValue { + return semconvNew.HTTPRoute(route) +} + +type CurrentHTTPClient struct{} + +// RequestTraceAttrs returns trace attributes for an HTTP request made by a client. +func (n CurrentHTTPClient) RequestTraceAttrs(req *http.Request) []attribute.KeyValue { + /* + below attributes are returned: + - http.request.method + - http.request.method.original + - url.full + - server.address + - server.port + - network.protocol.name + - network.protocol.version + */ + numOfAttributes := 3 // URL, server address, proto, and method. + + var urlHost string + if req.URL != nil { + urlHost = req.URL.Host + } + var requestHost string + var requestPort int + for _, hostport := range []string{urlHost, req.Header.Get("Host")} { + requestHost, requestPort = SplitHostPort(hostport) + if requestHost != "" || requestPort > 0 { + break + } + } + + eligiblePort := requiredHTTPPort(req.URL != nil && req.URL.Scheme == "https", requestPort) + if eligiblePort > 0 { + numOfAttributes++ + } + useragent := req.UserAgent() + if useragent != "" { + numOfAttributes++ + } + + protoName, protoVersion := netProtocol(req.Proto) + if protoName != "" && protoName != "http" { + numOfAttributes++ + } + if protoVersion != "" { + numOfAttributes++ + } + + method, originalMethod := n.method(req.Method) + if originalMethod != (attribute.KeyValue{}) { + numOfAttributes++ + } + + attrs := make([]attribute.KeyValue, 0, numOfAttributes) + + attrs = append(attrs, method) + if originalMethod != (attribute.KeyValue{}) { + attrs = append(attrs, originalMethod) + } + + var u string + if req.URL != nil { + // Remove any username/password info that may be in the URL. + userinfo := req.URL.User + req.URL.User = nil + u = req.URL.String() + // Restore any username/password info that was removed. + req.URL.User = userinfo + } + attrs = append(attrs, semconvNew.URLFull(u)) + + attrs = append(attrs, semconvNew.ServerAddress(requestHost)) + if eligiblePort > 0 { + attrs = append(attrs, semconvNew.ServerPort(eligiblePort)) + } + + if protoName != "" && protoName != "http" { + attrs = append(attrs, semconvNew.NetworkProtocolName(protoName)) + } + if protoVersion != "" { + attrs = append(attrs, semconvNew.NetworkProtocolVersion(protoVersion)) + } + + return attrs +} + +// ResponseTraceAttrs returns trace attributes for an HTTP response made by a client. +func (n CurrentHTTPClient) ResponseTraceAttrs(resp *http.Response) []attribute.KeyValue { + /* + below attributes are returned: + - http.response.status_code + - error.type + */ + var count int + if resp.StatusCode > 0 { + count++ + } + + if isErrorStatusCode(resp.StatusCode) { + count++ + } + + attrs := make([]attribute.KeyValue, 0, count) + if resp.StatusCode > 0 { + attrs = append(attrs, semconvNew.HTTPResponseStatusCode(resp.StatusCode)) + } + + if isErrorStatusCode(resp.StatusCode) { + errorType := strconv.Itoa(resp.StatusCode) + attrs = append(attrs, semconvNew.ErrorTypeKey.String(errorType)) + } + return attrs +} + +func (n CurrentHTTPClient) ErrorType(err error) attribute.KeyValue { + t := reflect.TypeOf(err) + var value string + if t.PkgPath() == "" && t.Name() == "" { + // Likely a builtin type. + value = t.String() + } else { + value = fmt.Sprintf("%s.%s", t.PkgPath(), t.Name()) + } + + if value == "" { + return semconvNew.ErrorTypeOther + } + + return semconvNew.ErrorTypeKey.String(value) +} + +func (n CurrentHTTPClient) method(method string) (attribute.KeyValue, attribute.KeyValue) { + if method == "" { + return semconvNew.HTTPRequestMethodGet, attribute.KeyValue{} + } + if attr, ok := methodLookup[method]; ok { + return attr, attribute.KeyValue{} + } + + orig := semconvNew.HTTPRequestMethodOriginal(method) + if attr, ok := methodLookup[strings.ToUpper(method)]; ok { + return attr, orig + } + return semconvNew.HTTPRequestMethodGet, orig +} + +func isErrorStatusCode(code int) bool { + return code >= 400 || code < 100 +} diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go new file mode 100644 index 000000000000..93e8d0f94c11 --- /dev/null +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go @@ -0,0 +1,98 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package semconv // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv" + +import ( + "net" + "net/http" + "strconv" + "strings" + + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" + semconvNew "go.opentelemetry.io/otel/semconv/v1.26.0" +) + +// SplitHostPort splits a network address hostport of the form "host", +// "host%zone", "[host]", "[host%zone], "host:port", "host%zone:port", +// "[host]:port", "[host%zone]:port", or ":port" into host or host%zone and +// port. +// +// An empty host is returned if it is not provided or unparsable. A negative +// port is returned if it is not provided or unparsable. +func SplitHostPort(hostport string) (host string, port int) { + port = -1 + + if strings.HasPrefix(hostport, "[") { + addrEnd := strings.LastIndex(hostport, "]") + if addrEnd < 0 { + // Invalid hostport. + return + } + if i := strings.LastIndex(hostport[addrEnd:], ":"); i < 0 { + host = hostport[1:addrEnd] + return + } + } else { + if i := strings.LastIndex(hostport, ":"); i < 0 { + host = hostport + return + } + } + + host, pStr, err := net.SplitHostPort(hostport) + if err != nil { + return + } + + p, err := strconv.ParseUint(pStr, 10, 16) + if err != nil { + return + } + return host, int(p) // nolint: gosec // Byte size checked 16 above. +} + +func requiredHTTPPort(https bool, port int) int { // nolint:revive + if https { + if port > 0 && port != 443 { + return port + } + } else { + if port > 0 && port != 80 { + return port + } + } + return -1 +} + +func serverClientIP(xForwardedFor string) string { + if idx := strings.Index(xForwardedFor, ","); idx >= 0 { + xForwardedFor = xForwardedFor[:idx] + } + return xForwardedFor +} + +func netProtocol(proto string) (name string, version string) { + name, version, _ = strings.Cut(proto, "/") + name = strings.ToLower(name) + return name, version +} + +var methodLookup = map[string]attribute.KeyValue{ + http.MethodConnect: semconvNew.HTTPRequestMethodConnect, + http.MethodDelete: semconvNew.HTTPRequestMethodDelete, + http.MethodGet: semconvNew.HTTPRequestMethodGet, + http.MethodHead: semconvNew.HTTPRequestMethodHead, + http.MethodOptions: semconvNew.HTTPRequestMethodOptions, + http.MethodPatch: semconvNew.HTTPRequestMethodPatch, + http.MethodPost: semconvNew.HTTPRequestMethodPost, + http.MethodPut: semconvNew.HTTPRequestMethodPut, + http.MethodTrace: semconvNew.HTTPRequestMethodTrace, +} + +func handleErr(err error) { + if err != nil { + otel.Handle(err) + } +} diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/v1.20.0.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/v1.20.0.go new file mode 100644 index 000000000000..c042249dd724 --- /dev/null +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/v1.20.0.go @@ -0,0 +1,274 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package semconv // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv" + +import ( + "errors" + "io" + "net/http" + "slices" + "strings" + + "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/metric/noop" + semconv "go.opentelemetry.io/otel/semconv/v1.20.0" +) + +type OldHTTPServer struct{} + +// RequestTraceAttrs returns trace attributes for an HTTP request received by a +// server. +// +// The server must be the primary server name if it is known. For example this +// would be the ServerName directive +// (https://httpd.apache.org/docs/2.4/mod/core.html#servername) for an Apache +// server, and the server_name directive +// (http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) for an +// nginx server. More generically, the primary server name would be the host +// header value that matches the default virtual host of an HTTP server. It +// should include the host identifier and if a port is used to route to the +// server that port identifier should be included as an appropriate port +// suffix. +// +// If the primary server name is not known, server should be an empty string. +// The req Host will be used to determine the server instead. +func (o OldHTTPServer) RequestTraceAttrs(server string, req *http.Request) []attribute.KeyValue { + return semconvutil.HTTPServerRequest(server, req) +} + +// ResponseTraceAttrs returns trace attributes for telemetry from an HTTP response. +// +// If any of the fields in the ResponseTelemetry are not set the attribute will be omitted. +func (o OldHTTPServer) ResponseTraceAttrs(resp ResponseTelemetry) []attribute.KeyValue { + attributes := []attribute.KeyValue{} + + if resp.ReadBytes > 0 { + attributes = append(attributes, semconv.HTTPRequestContentLength(int(resp.ReadBytes))) + } + if resp.ReadError != nil && !errors.Is(resp.ReadError, io.EOF) { + // This is not in the semantic conventions, but is historically provided + attributes = append(attributes, attribute.String("http.read_error", resp.ReadError.Error())) + } + if resp.WriteBytes > 0 { + attributes = append(attributes, semconv.HTTPResponseContentLength(int(resp.WriteBytes))) + } + if resp.StatusCode > 0 { + attributes = append(attributes, semconv.HTTPStatusCode(resp.StatusCode)) + } + if resp.WriteError != nil && !errors.Is(resp.WriteError, io.EOF) { + // This is not in the semantic conventions, but is historically provided + attributes = append(attributes, attribute.String("http.write_error", resp.WriteError.Error())) + } + + return attributes +} + +// Route returns the attribute for the route. +func (o OldHTTPServer) Route(route string) attribute.KeyValue { + return semconv.HTTPRoute(route) +} + +// HTTPStatusCode returns the attribute for the HTTP status code. +// This is a temporary function needed by metrics. This will be removed when MetricsRequest is added. +func HTTPStatusCode(status int) attribute.KeyValue { + return semconv.HTTPStatusCode(status) +} + +// Server HTTP metrics. +const ( + serverRequestSize = "http.server.request.size" // Incoming request bytes total + serverResponseSize = "http.server.response.size" // Incoming response bytes total + serverDuration = "http.server.duration" // Incoming end to end duration, milliseconds +) + +func (h OldHTTPServer) createMeasures(meter metric.Meter) (metric.Int64Counter, metric.Int64Counter, metric.Float64Histogram) { + if meter == nil { + return noop.Int64Counter{}, noop.Int64Counter{}, noop.Float64Histogram{} + } + var err error + requestBytesCounter, err := meter.Int64Counter( + serverRequestSize, + metric.WithUnit("By"), + metric.WithDescription("Measures the size of HTTP request messages."), + ) + handleErr(err) + + responseBytesCounter, err := meter.Int64Counter( + serverResponseSize, + metric.WithUnit("By"), + metric.WithDescription("Measures the size of HTTP response messages."), + ) + handleErr(err) + + serverLatencyMeasure, err := meter.Float64Histogram( + serverDuration, + metric.WithUnit("ms"), + metric.WithDescription("Measures the duration of inbound HTTP requests."), + ) + handleErr(err) + + return requestBytesCounter, responseBytesCounter, serverLatencyMeasure +} + +func (o OldHTTPServer) MetricAttributes(server string, req *http.Request, statusCode int, additionalAttributes []attribute.KeyValue) []attribute.KeyValue { + n := len(additionalAttributes) + 3 + var host string + var p int + if server == "" { + host, p = SplitHostPort(req.Host) + } else { + // Prioritize the primary server name. + host, p = SplitHostPort(server) + if p < 0 { + _, p = SplitHostPort(req.Host) + } + } + hostPort := requiredHTTPPort(req.TLS != nil, p) + if hostPort > 0 { + n++ + } + protoName, protoVersion := netProtocol(req.Proto) + if protoName != "" { + n++ + } + if protoVersion != "" { + n++ + } + + if statusCode > 0 { + n++ + } + + attributes := slices.Grow(additionalAttributes, n) + attributes = append(attributes, + standardizeHTTPMethodMetric(req.Method), + o.scheme(req.TLS != nil), + semconv.NetHostName(host)) + + if hostPort > 0 { + attributes = append(attributes, semconv.NetHostPort(hostPort)) + } + if protoName != "" { + attributes = append(attributes, semconv.NetProtocolName(protoName)) + } + if protoVersion != "" { + attributes = append(attributes, semconv.NetProtocolVersion(protoVersion)) + } + + if statusCode > 0 { + attributes = append(attributes, semconv.HTTPStatusCode(statusCode)) + } + return attributes +} + +func (o OldHTTPServer) scheme(https bool) attribute.KeyValue { // nolint:revive + if https { + return semconv.HTTPSchemeHTTPS + } + return semconv.HTTPSchemeHTTP +} + +type OldHTTPClient struct{} + +func (o OldHTTPClient) RequestTraceAttrs(req *http.Request) []attribute.KeyValue { + return semconvutil.HTTPClientRequest(req) +} + +func (o OldHTTPClient) ResponseTraceAttrs(resp *http.Response) []attribute.KeyValue { + return semconvutil.HTTPClientResponse(resp) +} + +func (o OldHTTPClient) MetricAttributes(req *http.Request, statusCode int, additionalAttributes []attribute.KeyValue) []attribute.KeyValue { + /* The following semantic conventions are returned if present: + http.method string + http.status_code int + net.peer.name string + net.peer.port int + */ + + n := 2 // method, peer name. + var h string + if req.URL != nil { + h = req.URL.Host + } + var requestHost string + var requestPort int + for _, hostport := range []string{h, req.Header.Get("Host")} { + requestHost, requestPort = SplitHostPort(hostport) + if requestHost != "" || requestPort > 0 { + break + } + } + + port := requiredHTTPPort(req.URL != nil && req.URL.Scheme == "https", requestPort) + if port > 0 { + n++ + } + + if statusCode > 0 { + n++ + } + + attributes := slices.Grow(additionalAttributes, n) + attributes = append(attributes, + standardizeHTTPMethodMetric(req.Method), + semconv.NetPeerName(requestHost), + ) + + if port > 0 { + attributes = append(attributes, semconv.NetPeerPort(port)) + } + + if statusCode > 0 { + attributes = append(attributes, semconv.HTTPStatusCode(statusCode)) + } + return attributes +} + +// Client HTTP metrics. +const ( + clientRequestSize = "http.client.request.size" // Incoming request bytes total + clientResponseSize = "http.client.response.size" // Incoming response bytes total + clientDuration = "http.client.duration" // Incoming end to end duration, milliseconds +) + +func (o OldHTTPClient) createMeasures(meter metric.Meter) (metric.Int64Counter, metric.Int64Counter, metric.Float64Histogram) { + if meter == nil { + return noop.Int64Counter{}, noop.Int64Counter{}, noop.Float64Histogram{} + } + requestBytesCounter, err := meter.Int64Counter( + clientRequestSize, + metric.WithUnit("By"), + metric.WithDescription("Measures the size of HTTP request messages."), + ) + handleErr(err) + + responseBytesCounter, err := meter.Int64Counter( + clientResponseSize, + metric.WithUnit("By"), + metric.WithDescription("Measures the size of HTTP response messages."), + ) + handleErr(err) + + latencyMeasure, err := meter.Float64Histogram( + clientDuration, + metric.WithUnit("ms"), + metric.WithDescription("Measures the duration of outbound HTTP requests."), + ) + handleErr(err) + + return requestBytesCounter, responseBytesCounter, latencyMeasure +} + +func standardizeHTTPMethodMetric(method string) attribute.KeyValue { + method = strings.ToUpper(method) + switch method { + case http.MethodConnect, http.MethodDelete, http.MethodGet, http.MethodHead, http.MethodOptions, http.MethodPatch, http.MethodPost, http.MethodPut, http.MethodTrace: + default: + method = "_OTHER" + } + return semconv.HTTPMethod(method) +} diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/gen.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/gen.go index edf4ce3d315a..7aa5f99e8158 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/gen.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/gen.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package semconvutil // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil" diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/httpconv.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/httpconv.go index 0efd5261f62e..a73bb06e90e4 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/httpconv.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/httpconv.go @@ -2,18 +2,7 @@ // source: internal/shared/semconvutil/httpconv.go.tmpl // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package semconvutil // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil" diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/netconv.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/netconv.go index d3a06e0cada3..b80a1db61fa0 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/netconv.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil/netconv.go @@ -2,17 +2,7 @@ // source: internal/shared/semconvutil/netconv.go.tmpl // Copyright The OpenTelemetry Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package semconvutil // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil" @@ -102,7 +92,7 @@ func (c *netConv) Host(address string) []attribute.KeyValue { attrs := make([]attribute.KeyValue, 0, n) attrs = append(attrs, c.HostName(h)) if p > 0 { - attrs = append(attrs, c.HostPort(int(p))) + attrs = append(attrs, c.HostPort(p)) } return attrs } @@ -148,7 +138,7 @@ func (c *netConv) Peer(address string) []attribute.KeyValue { attrs := make([]attribute.KeyValue, 0, n) attrs = append(attrs, c.PeerName(h)) if p > 0 { - attrs = append(attrs, c.PeerPort(int(p))) + attrs = append(attrs, c.PeerPort(p)) } return attrs } @@ -205,7 +195,7 @@ func splitHostPort(hostport string) (host string, port int) { if err != nil { return } - return host, int(p) + return host, int(p) // nolint: gosec // Bitsize checked to be 16 above. } func netProtocol(proto string) (name string, version string) { diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go index 26a51a18050b..ea504e396f13 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" @@ -48,8 +37,12 @@ type labelerContextKeyType int const lablelerContextKey labelerContextKeyType = 0 -func injectLabeler(ctx context.Context, l *Labeler) context.Context { - return context.WithValue(ctx, lablelerContextKey, l) +// ContextWithLabeler returns a new context with the provided Labeler instance. +// Attributes added to the specified labeler will be injected into metrics +// emitted by the instrumentation. Only one labeller can be injected into the +// context. Injecting it multiple times will override the previous calls. +func ContextWithLabeler(parent context.Context, l *Labeler) context.Context { + return context.WithValue(parent, lablelerContextKey, l) } // LabelerFromContext retrieves a Labeler instance from the provided context if diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/start_time_context.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/start_time_context.go new file mode 100644 index 000000000000..9476ef01b015 --- /dev/null +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/start_time_context.go @@ -0,0 +1,29 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" + +import ( + "context" + "time" +) + +type startTimeContextKeyType int + +const startTimeContextKey startTimeContextKeyType = 0 + +// ContextWithStartTime returns a new context with the provided start time. The +// start time will be used for metrics and traces emitted by the +// instrumentation. Only one labeller can be injected into the context. +// Injecting it multiple times will override the previous calls. +func ContextWithStartTime(parent context.Context, start time.Time) context.Context { + return context.WithValue(parent, startTimeContextKey, start) +} + +// StartTimeFromContext retrieves a time.Time from the provided context if one +// is available. If no start time was found in the provided context, a new, +// zero start time is returned and the second return value is false. +func StartTimeFromContext(ctx context.Context) time.Time { + t, _ := ctx.Value(startTimeContextKey).(time.Time) + return t +} diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go index 43e937a67a60..39681ad4b098 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" @@ -22,15 +11,14 @@ import ( "sync/atomic" "time" - "go.opentelemetry.io/otel/metric" - - "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil" + "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request" + "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv" "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.20.0" + "go.opentelemetry.io/otel/trace" ) // Transport implements the http.RoundTripper interface and wraps @@ -38,17 +26,15 @@ import ( type Transport struct { rt http.RoundTripper - tracer trace.Tracer - meter metric.Meter - propagators propagation.TextMapPropagator - spanStartOptions []trace.SpanStartOption - filters []Filter - spanNameFormatter func(string, *http.Request) string - clientTrace func(context.Context) *httptrace.ClientTrace - - requestBytesCounter metric.Int64Counter - responseBytesCounter metric.Int64Counter - latencyMeasure metric.Float64Histogram + tracer trace.Tracer + propagators propagation.TextMapPropagator + spanStartOptions []trace.SpanStartOption + filters []Filter + spanNameFormatter func(string, *http.Request) string + clientTrace func(context.Context) *httptrace.ClientTrace + metricAttributesFn func(*http.Request) []attribute.KeyValue + + semconv semconv.HTTPClient } var _ http.RoundTripper = &Transport{} @@ -75,43 +61,19 @@ func NewTransport(base http.RoundTripper, opts ...Option) *Transport { c := newConfig(append(defaultOpts, opts...)...) t.applyConfig(c) - t.createMeasures() return &t } func (t *Transport) applyConfig(c *config) { t.tracer = c.Tracer - t.meter = c.Meter t.propagators = c.Propagators t.spanStartOptions = c.SpanStartOptions t.filters = c.Filters t.spanNameFormatter = c.SpanNameFormatter t.clientTrace = c.ClientTrace -} - -func (t *Transport) createMeasures() { - var err error - t.requestBytesCounter, err = t.meter.Int64Counter( - clientRequestSize, - metric.WithUnit("By"), - metric.WithDescription("Measures the size of HTTP request messages."), - ) - handleErr(err) - - t.responseBytesCounter, err = t.meter.Int64Counter( - clientResponseSize, - metric.WithUnit("By"), - metric.WithDescription("Measures the size of HTTP response messages."), - ) - handleErr(err) - - t.latencyMeasure, err = t.meter.Float64Histogram( - clientDuration, - metric.WithUnit("ms"), - metric.WithDescription("Measures the duration of outbound HTTP requests."), - ) - handleErr(err) + t.semconv = semconv.NewHTTPClient(c.Meter) + t.metricAttributesFn = c.MetricAttributesFn } func defaultTransportFormatter(_ string, r *http.Request) string { @@ -148,58 +110,75 @@ func (t *Transport) RoundTrip(r *http.Request) (*http.Response, error) { ctx = httptrace.WithClientTrace(ctx, t.clientTrace(ctx)) } - labeler := &Labeler{} - ctx = injectLabeler(ctx, labeler) + labeler, found := LabelerFromContext(ctx) + if !found { + ctx = ContextWithLabeler(ctx, labeler) + } r = r.Clone(ctx) // According to RoundTripper spec, we shouldn't modify the origin request. - // use a body wrapper to determine the request size - var bw bodyWrapper // if request body is nil or NoBody, we don't want to mutate the body as it // will affect the identity of it in an unforeseeable way because we assert // ReadCloser fulfills a certain interface and it is indeed nil or NoBody. + bw := request.NewBodyWrapper(r.Body, func(int64) {}) if r.Body != nil && r.Body != http.NoBody { - bw.ReadCloser = r.Body - // noop to prevent nil panic. not using this record fun yet. - bw.record = func(int64) {} - r.Body = &bw + r.Body = bw } - span.SetAttributes(semconvutil.HTTPClientRequest(r)...) + span.SetAttributes(t.semconv.RequestTraceAttrs(r)...) t.propagators.Inject(ctx, propagation.HeaderCarrier(r.Header)) res, err := t.rt.RoundTrip(r) if err != nil { - span.RecordError(err) + // set error type attribute if the error is part of the predefined + // error types. + // otherwise, record it as an exception + if errType := t.semconv.ErrorType(err); errType.Valid() { + span.SetAttributes(errType) + } else { + span.RecordError(err) + } + span.SetStatus(codes.Error, err.Error()) span.End() return res, err } // metrics - metricAttrs := append(labeler.Get(), semconvutil.HTTPClientRequestMetrics(r)...) - if res.StatusCode > 0 { - metricAttrs = append(metricAttrs, semconv.HTTPStatusCode(res.StatusCode)) - } - o := metric.WithAttributes(metricAttrs...) - t.requestBytesCounter.Add(ctx, bw.read.Load(), o) + metricOpts := t.semconv.MetricOptions(semconv.MetricAttributes{ + Req: r, + StatusCode: res.StatusCode, + AdditionalAttributes: append(labeler.Get(), t.metricAttributesFromRequest(r)...), + }) + // For handling response bytes we leverage a callback when the client reads the http response readRecordFunc := func(n int64) { - t.responseBytesCounter.Add(ctx, n, o) + t.semconv.RecordResponseSize(ctx, n, metricOpts.AddOptions()) } // traces - span.SetAttributes(semconvutil.HTTPClientResponse(res)...) - span.SetStatus(semconvutil.HTTPClientStatus(res.StatusCode)) + span.SetAttributes(t.semconv.ResponseTraceAttrs(res)...) + span.SetStatus(t.semconv.Status(res.StatusCode)) res.Body = newWrappedBody(span, readRecordFunc, res.Body) // Use floating point division here for higher precision (instead of Millisecond method). elapsedTime := float64(time.Since(requestStartTime)) / float64(time.Millisecond) - t.latencyMeasure.Record(ctx, elapsedTime, o) + t.semconv.RecordMetrics(ctx, semconv.MetricData{ + RequestSize: bw.BytesRead(), + ElapsedTime: elapsedTime, + }, metricOpts) + + return res, nil +} - return res, err +func (t *Transport) metricAttributesFromRequest(r *http.Request) []attribute.KeyValue { + var attributeForRequest []attribute.KeyValue + if t.metricAttributesFn != nil { + attributeForRequest = t.metricAttributesFn(r) + } + return attributeForRequest } // newWrappedBody returns a new and appropriately scoped *wrappedBody as an diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go index 35254e888fb6..353e43b91fd8 100644 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go +++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go @@ -1,22 +1,11 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" // Version is the current release version of the otelhttp instrumentation. func Version() string { - return "0.49.0" + return "0.58.0" // This string is updated by the pre_release.sh script during release } diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/wrap.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/wrap.go deleted file mode 100644 index 2852ec971711..000000000000 --- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/wrap.go +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" - -import ( - "context" - "io" - "net/http" - "sync/atomic" - - "go.opentelemetry.io/otel/propagation" -) - -var _ io.ReadCloser = &bodyWrapper{} - -// bodyWrapper wraps a http.Request.Body (an io.ReadCloser) to track the number -// of bytes read and the last error. -type bodyWrapper struct { - io.ReadCloser - record func(n int64) // must not be nil - - read atomic.Int64 - err error -} - -func (w *bodyWrapper) Read(b []byte) (int, error) { - n, err := w.ReadCloser.Read(b) - n1 := int64(n) - w.read.Add(n1) - w.err = err - w.record(n1) - return n, err -} - -func (w *bodyWrapper) Close() error { - return w.ReadCloser.Close() -} - -var _ http.ResponseWriter = &respWriterWrapper{} - -// respWriterWrapper wraps a http.ResponseWriter in order to track the number of -// bytes written, the last error, and to catch the first written statusCode. -// TODO: The wrapped http.ResponseWriter doesn't implement any of the optional -// types (http.Hijacker, http.Pusher, http.CloseNotifier, http.Flusher, etc) -// that may be useful when using it in real life situations. -type respWriterWrapper struct { - http.ResponseWriter - record func(n int64) // must not be nil - - // used to inject the header - ctx context.Context - - props propagation.TextMapPropagator - - written int64 - statusCode int - err error - wroteHeader bool -} - -func (w *respWriterWrapper) Header() http.Header { - return w.ResponseWriter.Header() -} - -func (w *respWriterWrapper) Write(p []byte) (int, error) { - if !w.wroteHeader { - w.WriteHeader(http.StatusOK) - } - n, err := w.ResponseWriter.Write(p) - n1 := int64(n) - w.record(n1) - w.written += n1 - w.err = err - return n, err -} - -// WriteHeader persists initial statusCode for span attribution. -// All calls to WriteHeader will be propagated to the underlying ResponseWriter -// and will persist the statusCode from the first call. -// Blocking consecutive calls to WriteHeader alters expected behavior and will -// remove warning logs from net/http where developers will notice incorrect handler implementations. -func (w *respWriterWrapper) WriteHeader(statusCode int) { - if !w.wroteHeader { - w.wroteHeader = true - w.statusCode = statusCode - } - w.ResponseWriter.WriteHeader(statusCode) -} diff --git a/vendor/go.opentelemetry.io/otel/.codespellignore b/vendor/go.opentelemetry.io/otel/.codespellignore index 120b63a9c7d6..6bf3abc41e70 100644 --- a/vendor/go.opentelemetry.io/otel/.codespellignore +++ b/vendor/go.opentelemetry.io/otel/.codespellignore @@ -5,3 +5,5 @@ collison consequentially ans nam +valu +thirdparty diff --git a/vendor/go.opentelemetry.io/otel/.codespellrc b/vendor/go.opentelemetry.io/otel/.codespellrc index 4afbb1fb3bd7..e2cb3ea944bb 100644 --- a/vendor/go.opentelemetry.io/otel/.codespellrc +++ b/vendor/go.opentelemetry.io/otel/.codespellrc @@ -5,6 +5,6 @@ check-filenames = check-hidden = ignore-words = .codespellignore interactive = 1 -skip = .git,go.mod,go.sum,semconv,venv,.tools +skip = .git,go.mod,go.sum,go.work,go.work.sum,semconv,venv,.tools uri-ignore-words-list = * write = diff --git a/vendor/go.opentelemetry.io/otel/.gitignore b/vendor/go.opentelemetry.io/otel/.gitignore index 895c7664beb5..ae8577ef366a 100644 --- a/vendor/go.opentelemetry.io/otel/.gitignore +++ b/vendor/go.opentelemetry.io/otel/.gitignore @@ -12,11 +12,3 @@ go.work go.work.sum gen/ - -/example/dice/dice -/example/namedtracer/namedtracer -/example/otel-collector/otel-collector -/example/opencensus/opencensus -/example/passthrough/passthrough -/example/prometheus/prometheus -/example/zipkin/zipkin diff --git a/vendor/go.opentelemetry.io/otel/.gitmodules b/vendor/go.opentelemetry.io/otel/.gitmodules deleted file mode 100644 index 38a1f56982ba..000000000000 --- a/vendor/go.opentelemetry.io/otel/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "opentelemetry-proto"] - path = exporters/otlp/internal/opentelemetry-proto - url = https://github.com/open-telemetry/opentelemetry-proto diff --git a/vendor/go.opentelemetry.io/otel/.golangci.yml b/vendor/go.opentelemetry.io/otel/.golangci.yml index a62511f382e2..ce3f40b609c1 100644 --- a/vendor/go.opentelemetry.io/otel/.golangci.yml +++ b/vendor/go.opentelemetry.io/otel/.golangci.yml @@ -9,8 +9,11 @@ linters: disable-all: true # Specifically enable linters we want to use. enable: + - asasalint + - bodyclose - depguard - errcheck + - errorlint - godot - gofumpt - goimports @@ -19,10 +22,16 @@ linters: - govet - ineffassign - misspell + - perfsprint - revive - staticcheck + - tenv + - testifylint - typecheck + - unconvert - unused + - unparam + - usestdlibvars issues: # Maximum issues count per one linter. @@ -54,16 +63,17 @@ issues: text: "calls to (.+) only in main[(][)] or init[(][)] functions" linters: - revive - # It's okay to not run gosec in a test. + # It's okay to not run gosec and perfsprint in a test. - path: _test\.go linters: - gosec - # Igonoring gosec G404: Use of weak random number generator (math/rand instead of crypto/rand) + - perfsprint + # Ignoring gosec G404: Use of weak random number generator (math/rand instead of crypto/rand) # as we commonly use it in tests and examples. - text: "G404:" linters: - gosec - # Igonoring gosec G402: TLS MinVersion too low + # Ignoring gosec G402: TLS MinVersion too low # as the https://pkg.go.dev/crypto/tls#Config handles MinVersion default well. - text: "G402: TLS MinVersion too low." linters: @@ -88,6 +98,13 @@ linters-settings: - pkg: "crypto/md5" - pkg: "crypto/sha1" - pkg: "crypto/**/pkix" + auto/sdk: + files: + - "!internal/global/trace.go" + - "~internal/global/trace_test.go" + deny: + - pkg: "go.opentelemetry.io/auto/sdk" + desc: Do not use SDK from automatic instrumentation. otlp-internal: files: - "!**/exporters/otlp/internal/**/*.go" @@ -120,10 +137,10 @@ linters-settings: - "**/metric/**/*.go" - "**/bridge/*.go" - "**/bridge/**/*.go" - - "**/example/*.go" - - "**/example/**/*.go" - "**/trace/*.go" - "**/trace/**/*.go" + - "**/log/*.go" + - "**/log/**/*.go" deny: - pkg: "go.opentelemetry.io/otel/internal$" desc: Do not use cross-module internal packages. @@ -147,6 +164,12 @@ linters-settings: locale: US ignore-words: - cancelled + perfsprint: + err-error: true + errorf: true + int-conversion: true + sprintf1: true + strconcat: true revive: # Sets the default failure confidence. # This means that linting errors with less than 0.8 confidence will be ignored. @@ -294,3 +317,9 @@ linters-settings: # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#waitgroup-by-value - name: waitgroup-by-value disabled: false + testifylint: + enable-all: true + disable: + - float-compare + - go-require + - require-error diff --git a/vendor/go.opentelemetry.io/otel/CHANGELOG.md b/vendor/go.opentelemetry.io/otel/CHANGELOG.md index 98f2d2043843..a30988f25d0a 100644 --- a/vendor/go.opentelemetry.io/otel/CHANGELOG.md +++ b/vendor/go.opentelemetry.io/otel/CHANGELOG.md @@ -8,6 +8,341 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [Unreleased] +## [1.33.0/0.55.0/0.9.0/0.0.12] 2024-12-12 + +### Added + +- Add `Reset` method to `SpanRecorder` in `go.opentelemetry.io/otel/sdk/trace/tracetest`. (#5994) +- Add `EnabledInstrument` interface in `go.opentelemetry.io/otel/sdk/metric/internal/x`. + This is an experimental interface that is implemented by synchronous instruments provided by `go.opentelemetry.io/otel/sdk/metric`. + Users can use it to avoid performing computationally expensive operations when recording measurements. + It does not fall within the scope of the OpenTelemetry Go versioning and stability [policy](./VERSIONING.md) and it may be changed in backwards incompatible ways or removed in feature releases. (#6016) + +### Changed + +- The default global API now supports full auto-instrumentation from the `go.opentelemetry.io/auto` package. + See that package for more information. (#5920) +- Propagate non-retryable error messages to client in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#5929) +- Propagate non-retryable error messages to client in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#5929) +- Propagate non-retryable error messages to client in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`. (#5929) +- Performance improvements for attribute value `AsStringSlice`, `AsFloat64Slice`, `AsInt64Slice`, `AsBoolSlice`. (#6011) +- Change `EnabledParameters` to have a `Severity` field instead of a getter and setter in `go.opentelemetry.io/otel/log`. (#6009) + +### Fixed + +- Fix inconsistent request body closing in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#5954) +- Fix inconsistent request body closing in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#5954) +- Fix inconsistent request body closing in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`. (#5954) +- Fix invalid exemplar keys in `go.opentelemetry.io/otel/exporters/prometheus`. (#5995) +- Fix attribute value truncation in `go.opentelemetry.io/otel/sdk/trace`. (#5997) +- Fix attribute value truncation in `go.opentelemetry.io/otel/sdk/log`. (#6032) + + + + +## [1.32.0/0.54.0/0.8.0/0.0.11] 2024-11-08 + +### Added + +- Add `go.opentelemetry.io/otel/sdk/metric/exemplar.AlwaysOffFilter`, which can be used to disable exemplar recording. (#5850) +- Add `go.opentelemetry.io/otel/sdk/metric.WithExemplarFilter`, which can be used to configure the exemplar filter used by the metrics SDK. (#5850) +- Add `ExemplarReservoirProviderSelector` and `DefaultExemplarReservoirProviderSelector` to `go.opentelemetry.io/otel/sdk/metric`, which defines the exemplar reservoir to use based on the aggregation of the metric. (#5861) +- Add `ExemplarReservoirProviderSelector` to `go.opentelemetry.io/otel/sdk/metric.Stream` to allow using views to configure the exemplar reservoir to use for a metric. (#5861) +- Add `ReservoirProvider`, `HistogramReservoirProvider` and `FixedSizeReservoirProvider` to `go.opentelemetry.io/otel/sdk/metric/exemplar` to make it convenient to use providers of Reservoirs. (#5861) +- The `go.opentelemetry.io/otel/semconv/v1.27.0` package. + The package contains semantic conventions from the `v1.27.0` version of the OpenTelemetry Semantic Conventions. (#5894) +- Add `Attributes attribute.Set` field to `Scope` in `go.opentelemetry.io/otel/sdk/instrumentation`. (#5903) +- Add `Attributes attribute.Set` field to `ScopeRecords` in `go.opentelemetry.io/otel/log/logtest`. (#5927) +- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` adds instrumentation scope attributes. (#5934) +- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp` adds instrumentation scope attributes. (#5934) +- `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc` adds instrumentation scope attributes. (#5935) +- `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp` adds instrumentation scope attributes. (#5935) +- `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` adds instrumentation scope attributes. (#5933) +- `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp` adds instrumentation scope attributes. (#5933) +- `go.opentelemetry.io/otel/exporters/prometheus` adds instrumentation scope attributes in `otel_scope_info` metric as labels. (#5932) + +### Changed + +- Support scope attributes and make them as identifying for `Tracer` in `go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/trace`. (#5924) +- Support scope attributes and make them as identifying for `Meter` in `go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/metric`. (#5926) +- Support scope attributes and make them as identifying for `Logger` in `go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/log`. (#5925) +- Make schema URL and scope attributes as identifying for `Tracer` in `go.opentelemetry.io/otel/bridge/opentracing`. (#5931) +- Clear unneeded slice elements to allow GC to collect the objects in `go.opentelemetry.io/otel/sdk/metric` and `go.opentelemetry.io/otel/sdk/trace`. (#5804) + +### Fixed + +- Global MeterProvider registration unwraps global instrument Observers, the undocumented Unwrap() methods are now private. (#5881) +- `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc` now keeps the metadata already present in the context when `WithHeaders` is used. (#5892) +- `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` now keeps the metadata already present in the context when `WithHeaders` is used. (#5911) +- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` now keeps the metadata already present in the context when `WithHeaders` is used. (#5915) +- Fix `go.opentelemetry.io/otel/exporters/prometheus` trying to add exemplars to Gauge metrics, which is unsupported. (#5912) +- Fix `WithEndpointURL` to always use a secure connection when an https URL is passed in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`. (#5944) +- Fix `WithEndpointURL` to always use a secure connection when an https URL is passed in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`. (#5944) +- Fix `WithEndpointURL` to always use a secure connection when an https URL is passed in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`. (#5944) +- Fix `WithEndpointURL` to always use a secure connection when an https URL is passed in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#5944) +- Fix incorrect metrics generated from callbacks when multiple readers are used in `go.opentelemetry.io/otel/sdk/metric`. (#5900) + +### Removed + +- Remove all examples under `go.opentelemetry.io/otel/example` as they are moved to [Contrib repository](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/examples). (#5930) + +## [1.31.0/0.53.0/0.7.0/0.0.10] 2024-10-11 + +### Added + +- Add `go.opentelemetry.io/otel/sdk/metric/exemplar` package which includes `Exemplar`, `Filter`, `TraceBasedFilter`, `AlwaysOnFilter`, `HistogramReservoir`, `FixedSizeReservoir`, `Reservoir`, `Value` and `ValueType` types. These will be used for configuring the exemplar reservoir for the metrics sdk. (#5747, #5862) +- Add `WithExportBufferSize` option to log batch processor.(#5877) + +### Changed + +- Enable exemplars by default in `go.opentelemetry.io/otel/sdk/metric`. Exemplars can be disabled by setting `OTEL_METRICS_EXEMPLAR_FILTER=always_off` (#5778) +- `Logger.Enabled` in `go.opentelemetry.io/otel/log` now accepts a newly introduced `EnabledParameters` type instead of `Record`. (#5791) +- `FilterProcessor.Enabled` in `go.opentelemetry.io/otel/sdk/log/internal/x` now accepts `EnabledParameters` instead of `Record`. (#5791) +- The `Record` type in `go.opentelemetry.io/otel/log` is no longer comparable. (#5847) +- Performance improvements for the trace SDK `SetAttributes` method in `Span`. (#5864) +- Reduce memory allocations for the `Event` and `Link` lists in `Span`. (#5858) +- Performance improvements for the trace SDK `AddEvent`, `AddLink`, `RecordError` and `End` methods in `Span`. (#5874) + +### Deprecated + +- Deprecate all examples under `go.opentelemetry.io/otel/example` as they are moved to [Contrib repository](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/examples). (#5854) + +### Fixed + +- The race condition for multiple `FixedSize` exemplar reservoirs identified in #5814 is resolved. (#5819) +- Fix log records duplication in case of heterogeneous resource attributes by correctly mapping each log record to it's resource and scope. (#5803) +- Fix timer channel drain to avoid hanging on Go 1.23. (#5868) +- Fix delegation for global meter providers, and panic when calling otel.SetMeterProvider. (#5827) +- Change the `reflect.TypeOf` to use a nil pointer to not allocate on the heap unless necessary. (#5827) + +## [1.30.0/0.52.0/0.6.0/0.0.9] 2024-09-09 + +### Added + +- Support `OTEL_EXPORTER_OTLP_LOGS_INSECURE` and `OTEL_EXPORTER_OTLP_INSECURE` environments in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`. (#5739) +- The `WithResource` option for `NewMeterProvider` now merges the provided resources with the ones from environment variables. (#5773) +- The `WithResource` option for `NewLoggerProvider` now merges the provided resources with the ones from environment variables. (#5773) +- Add UTF-8 support to `go.opentelemetry.io/otel/exporters/prometheus`. (#5755) + +### Fixed + +- Fix memory leak in the global `MeterProvider` when identical instruments are repeatedly created. (#5754) +- Fix panic on instruments creation when setting meter provider. (#5758) +- Fix an issue where `SetMeterProvider` in `go.opentelemetry.io/otel` might miss the delegation for instruments and registries. (#5780) + +### Removed + +- Drop support for [Go 1.21]. (#5736, #5740, #5800) + +## [1.29.0/0.51.0/0.5.0] 2024-08-23 + +This release is the last to support [Go 1.21]. +The next release will require at least [Go 1.22]. + +### Added + +- Add MacOS ARM64 platform to the compatibility testing suite. (#5577) +- Add `InstrumentationScope` field to `SpanStub` in `go.opentelemetry.io/otel/sdk/trace/tracetest`, as a replacement for the deprecated `InstrumentationLibrary`. (#5627) +- Make the initial release of `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`. + This new module contains an OTLP exporter that transmits log telemetry using gRPC. + This module is unstable and breaking changes may be introduced. + See our [versioning policy](VERSIONING.md) for more information about these stability guarantees. (#5629) +- Add `Walk` function to `TraceState` in `go.opentelemetry.io/otel/trace` to iterate all the key-value pairs. (#5651) +- Bridge the trace state in `go.opentelemetry.io/otel/bridge/opencensus`. (#5651) +- Zero value of `SimpleProcessor` in `go.opentelemetry.io/otel/sdk/log` no longer panics. (#5665) +- The `FilterProcessor` interface type is added in `go.opentelemetry.io/otel/sdk/log/internal/x`. + This is an optional and experimental interface that log `Processor`s can implement to instruct the `Logger` if a `Record` will be processed or not. + It replaces the existing `Enabled` method that is removed from the `Processor` interface itself. + It does not fall within the scope of the OpenTelemetry Go versioning and stability [policy](./VERSIONING.md) and it may be changed in backwards incompatible ways or removed in feature releases. (#5692) +- Support [Go 1.23]. (#5720) + +### Changed + +- `NewMemberRaw`, `NewKeyProperty` and `NewKeyValuePropertyRaw` in `go.opentelemetry.io/otel/baggage` allow UTF-8 string in key. (#5132) +- `Processor.OnEmit` in `go.opentelemetry.io/otel/sdk/log` now accepts a pointer to `Record` instead of a value so that the record modifications done in a processor are propagated to subsequent registered processors. (#5636) +- `SimpleProcessor.Enabled` in `go.opentelemetry.io/otel/sdk/log` now returns `false` if the exporter is `nil`. (#5665) +- Update the concurrency requirements of `Exporter` in `go.opentelemetry.io/otel/sdk/log`. (#5666) +- `SimpleProcessor` in `go.opentelemetry.io/otel/sdk/log` synchronizes `OnEmit` calls. (#5666) +- The `Processor` interface in `go.opentelemetry.io/otel/sdk/log` no longer includes the `Enabled` method. + See the `FilterProcessor` interface type added in `go.opentelemetry.io/otel/sdk/log/internal/x` to continue providing this functionality. (#5692) +- The `SimpleProcessor` type in `go.opentelemetry.io/otel/sdk/log` is no longer comparable. (#5693) +- The `BatchProcessor` type in `go.opentelemetry.io/otel/sdk/log` is no longer comparable. (#5693) + +### Fixed + +- Correct comments for the priority of the `WithEndpoint` and `WithEndpointURL` options and their corresponding environment variables in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#5584) +- Pass the underlying error rather than a generic retry-able failure in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`, `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp` and `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#5541) +- Correct the `Tracer`, `Meter`, and `Logger` names used in `go.opentelemetry.io/otel/example/dice`. (#5612) +- Correct the `Tracer` names used in `go.opentelemetry.io/otel/example/namedtracer`. (#5612) +- Correct the `Tracer` name used in `go.opentelemetry.io/otel/example/opencensus`. (#5612) +- Correct the `Tracer` and `Meter` names used in `go.opentelemetry.io/otel/example/otel-collector`. (#5612) +- Correct the `Tracer` names used in `go.opentelemetry.io/otel/example/passthrough`. (#5612) +- Correct the `Meter` name used in `go.opentelemetry.io/otel/example/prometheus`. (#5612) +- Correct the `Tracer` names used in `go.opentelemetry.io/otel/example/zipkin`. (#5612) +- Correct comments for the priority of the `WithEndpoint` and `WithEndpointURL` options and their corresponding environment variables in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc` and `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`. (#5641) +- Correct comments for the priority of the `WithEndpoint` and `WithEndpointURL` options and their corresponding environment variables in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#5650) +- Stop percent encoding header environment variables in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`, `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc` and `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp` (#5705) +- Remove invalid environment variable header keys in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`, `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc` and `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp` (#5705) + +### Removed + +- The `Enabled` method of the `SimpleProcessor` in `go.opentelemetry.io/otel/sdk/log` is removed. (#5692) +- The `Enabled` method of the `BatchProcessor` in `go.opentelemetry.io/otel/sdk/log` is removed. (#5692) + +## [1.28.0/0.50.0/0.4.0] 2024-07-02 + +### Added + +- The `IsEmpty` method is added to the `Instrument` type in `go.opentelemetry.io/otel/sdk/metric`. + This method is used to check if an `Instrument` instance is a zero-value. (#5431) +- Store and provide the emitted `context.Context` in `ScopeRecords` of `go.opentelemetry.io/otel/sdk/log/logtest`. (#5468) +- The `go.opentelemetry.io/otel/semconv/v1.26.0` package. + The package contains semantic conventions from the `v1.26.0` version of the OpenTelemetry Semantic Conventions. (#5476) +- The `AssertRecordEqual` method to `go.opentelemetry.io/otel/log/logtest` to allow comparison of two log records in tests. (#5499) +- The `WithHeaders` option to `go.opentelemetry.io/otel/exporters/zipkin` to allow configuring custom http headers while exporting spans. (#5530) + +### Changed + +- `Tracer.Start` in `go.opentelemetry.io/otel/trace/noop` no longer allocates a span for empty span context. (#5457) +- Upgrade `go.opentelemetry.io/otel/semconv/v1.25.0` to `go.opentelemetry.io/otel/semconv/v1.26.0` in `go.opentelemetry.io/otel/example/otel-collector`. (#5490) +- Upgrade `go.opentelemetry.io/otel/semconv/v1.25.0` to `go.opentelemetry.io/otel/semconv/v1.26.0` in `go.opentelemetry.io/otel/example/zipkin`. (#5490) +- Upgrade `go.opentelemetry.io/otel/semconv/v1.25.0` to `go.opentelemetry.io/otel/semconv/v1.26.0` in `go.opentelemetry.io/otel/exporters/zipkin`. (#5490) + - The exporter no longer exports the deprecated "otel.library.name" or "otel.library.version" attributes. +- Upgrade `go.opentelemetry.io/otel/semconv/v1.25.0` to `go.opentelemetry.io/otel/semconv/v1.26.0` in `go.opentelemetry.io/otel/sdk/resource`. (#5490) +- Upgrade `go.opentelemetry.io/otel/semconv/v1.25.0` to `go.opentelemetry.io/otel/semconv/v1.26.0` in `go.opentelemetry.io/otel/sdk/trace`. (#5490) +- `SimpleProcessor.OnEmit` in `go.opentelemetry.io/otel/sdk/log` no longer allocates a slice which makes it possible to have a zero-allocation log processing using `SimpleProcessor`. (#5493) +- Use non-generic functions in the `Start` method of `"go.opentelemetry.io/otel/sdk/trace".Trace` to reduce memory allocation. (#5497) +- `service.instance.id` is populated for a `Resource` created with `"go.opentelemetry.io/otel/sdk/resource".Default` with a default value when `OTEL_GO_X_RESOURCE` is set. (#5520) +- Improve performance of metric instruments in `go.opentelemetry.io/otel/sdk/metric` by removing unnecessary calls to `time.Now`. (#5545) + +### Fixed + +- Log a warning to the OpenTelemetry internal logger when a `Record` in `go.opentelemetry.io/otel/sdk/log` drops an attribute due to a limit being reached. (#5376) +- Identify the `Tracer` returned from the global `TracerProvider` in `go.opentelemetry.io/otel/global` with its schema URL. (#5426) +- Identify the `Meter` returned from the global `MeterProvider` in `go.opentelemetry.io/otel/global` with its schema URL. (#5426) +- Log a warning to the OpenTelemetry internal logger when a `Span` in `go.opentelemetry.io/otel/sdk/trace` drops an attribute, event, or link due to a limit being reached. (#5434) +- Document instrument name requirements in `go.opentelemetry.io/otel/metric`. (#5435) +- Prevent random number generation data-race for experimental rand exemplars in `go.opentelemetry.io/otel/sdk/metric`. (#5456) +- Fix counting number of dropped attributes of `Record` in `go.opentelemetry.io/otel/sdk/log`. (#5464) +- Fix panic in baggage creation when a member contains `0x80` char in key or value. (#5494) +- Correct comments for the priority of the `WithEndpoint` and `WithEndpointURL` options and their corresponding environment variables in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`. (#5508) +- Retry trace and span ID generation if it generated an invalid one in `go.opentelemetry.io/otel/sdk/trace`. (#5514) +- Fix stale timestamps reported by the last-value aggregation. (#5517) +- Indicate the `Exporter` in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp` must be created by the `New` method. (#5521) +- Improved performance in all `{Bool,Int64,Float64,String}SliceValue` functions of `go.opentelemetry.io/attributes` by reducing the number of allocations. (#5549) +- Replace invalid percent-encoded octet sequences with replacement char in `go.opentelemetry.io/otel/baggage`. (#5528) + +## [1.27.0/0.49.0/0.3.0] 2024-05-21 + +### Added + +- Add example for `go.opentelemetry.io/otel/exporters/stdout/stdoutlog`. (#5242) +- Add `RecordFactory` in `go.opentelemetry.io/otel/sdk/log/logtest` to facilitate testing exporter and processor implementations. (#5258) +- Add `RecordFactory` in `go.opentelemetry.io/otel/log/logtest` to facilitate testing bridge implementations. (#5263) +- The count of dropped records from the `BatchProcessor` in `go.opentelemetry.io/otel/sdk/log` is logged. (#5276) +- Add metrics in the `otel-collector` example. (#5283) +- Add the synchronous gauge instrument to `go.opentelemetry.io/otel/metric`. (#5304) + - An `int64` or `float64` synchronous gauge instrument can now be created from a `Meter`. + - All implementations of the API (`go.opentelemetry.io/otel/metric/noop`, `go.opentelemetry.io/otel/sdk/metric`) are updated to support this instrument. +- Add logs to `go.opentelemetry.io/otel/example/dice`. (#5349) + +### Changed + +- The `Shutdown` method of `Exporter` in `go.opentelemetry.io/otel/exporters/stdout/stdouttrace` ignores the context cancellation and always returns `nil`. (#5189) +- The `ForceFlush` and `Shutdown` methods of the exporter returned by `New` in `go.opentelemetry.io/otel/exporters/stdout/stdoutmetric` ignore the context cancellation and always return `nil`. (#5189) +- Apply the value length limits to `Record` attributes in `go.opentelemetry.io/otel/sdk/log`. (#5230) +- De-duplicate map attributes added to a `Record` in `go.opentelemetry.io/otel/sdk/log`. (#5230) +- `go.opentelemetry.io/otel/exporters/stdout/stdoutlog` won't print timestamps when `WithoutTimestamps` option is set. (#5241) +- The `go.opentelemetry.io/otel/exporters/stdout/stdoutlog` exporter won't print `AttributeValueLengthLimit` and `AttributeCountLimit` fields now, instead it prints the `DroppedAttributes` field. (#5272) +- Improved performance in the `Stringer` implementation of `go.opentelemetry.io/otel/baggage.Member` by reducing the number of allocations. (#5286) +- Set the start time for last-value aggregates in `go.opentelemetry.io/otel/sdk/metric`. (#5305) +- The `Span` in `go.opentelemetry.io/otel/sdk/trace` will record links without span context if either non-empty `TraceState` or attributes are provided. (#5315) +- Upgrade all dependencies of `go.opentelemetry.io/otel/semconv/v1.24.0` to `go.opentelemetry.io/otel/semconv/v1.25.0`. (#5374) + +### Fixed + +- Comparison of unordered maps for `go.opentelemetry.io/otel/log.KeyValue` and `go.opentelemetry.io/otel/log.Value`. (#5306) +- Fix the empty output of `go.opentelemetry.io/otel/log.Value` in `go.opentelemetry.io/otel/exporters/stdout/stdoutlog`. (#5311) +- Split the behavior of `Recorder` in `go.opentelemetry.io/otel/log/logtest` so it behaves as a `LoggerProvider` only. (#5365) +- Fix wrong package name of the error message when parsing endpoint URL in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#5371) +- Identify the `Logger` returned from the global `LoggerProvider` in `go.opentelemetry.io/otel/log/global` with its schema URL. (#5375) + +## [1.26.0/0.48.0/0.2.0-alpha] 2024-04-24 + +### Added + +- Add `Recorder` in `go.opentelemetry.io/otel/log/logtest` to facilitate testing the log bridge implementations. (#5134) +- Add span flags to OTLP spans and links exported by `go.opentelemetry.io/otel/exporters/otlp/otlptrace`. (#5194) +- Make the initial alpha release of `go.opentelemetry.io/otel/sdk/log`. + This new module contains the Go implementation of the OpenTelemetry Logs SDK. + This module is unstable and breaking changes may be introduced. + See our [versioning policy](VERSIONING.md) for more information about these stability guarantees. (#5240) +- Make the initial alpha release of `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. + This new module contains an OTLP exporter that transmits log telemetry using HTTP. + This module is unstable and breaking changes may be introduced. + See our [versioning policy](VERSIONING.md) for more information about these stability guarantees. (#5240) +- Make the initial alpha release of `go.opentelemetry.io/otel/exporters/stdout/stdoutlog`. + This new module contains an exporter prints log records to STDOUT. + This module is unstable and breaking changes may be introduced. + See our [versioning policy](VERSIONING.md) for more information about these stability guarantees. (#5240) +- The `go.opentelemetry.io/otel/semconv/v1.25.0` package. + The package contains semantic conventions from the `v1.25.0` version of the OpenTelemetry Semantic Conventions. (#5254) + +### Changed + +- Update `go.opentelemetry.io/proto/otlp` from v1.1.0 to v1.2.0. (#5177) +- Improve performance of baggage member character validation in `go.opentelemetry.io/otel/baggage`. (#5214) +- The `otel-collector` example now uses docker compose to bring up services instead of kubernetes. (#5244) + +### Fixed + +- Slice attribute values in `go.opentelemetry.io/otel/attribute` are now emitted as their JSON representation. (#5159) + +## [1.25.0/0.47.0/0.0.8/0.1.0-alpha] 2024-04-05 + +### Added + +- Add `WithProxy` option in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`. (#4906) +- Add `WithProxy` option in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlptracehttp`. (#4906) +- Add `AddLink` method to the `Span` interface in `go.opentelemetry.io/otel/trace`. (#5032) +- The `Enabled` method is added to the `Logger` interface in `go.opentelemetry.io/otel/log`. + This method is used to notify users if a log record will be emitted or not. (#5071) +- Add `SeverityUndefined` `const` to `go.opentelemetry.io/otel/log`. + This value represents an unset severity level. (#5072) +- Add `Empty` function in `go.opentelemetry.io/otel/log` to return a `KeyValue` for an empty value. (#5076) +- Add `go.opentelemetry.io/otel/log/global` to manage the global `LoggerProvider`. + This package is provided with the anticipation that all functionality will be migrate to `go.opentelemetry.io/otel` when `go.opentelemetry.io/otel/log` stabilizes. + At which point, users will be required to migrage their code, and this package will be deprecated then removed. (#5085) +- Add support for `Summary` metrics in the `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp` and `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc` exporters. (#5100) +- Add `otel.scope.name` and `otel.scope.version` tags to spans exported by `go.opentelemetry.io/otel/exporters/zipkin`. (#5108) +- Add support for `AddLink` to `go.opentelemetry.io/otel/bridge/opencensus`. (#5116) +- Add `String` method to `Value` and `KeyValue` in `go.opentelemetry.io/otel/log`. (#5117) +- Add Exemplar support to `go.opentelemetry.io/otel/exporters/prometheus`. (#5111) +- Add metric semantic conventions to `go.opentelemetry.io/otel/semconv/v1.24.0`. Future `semconv` packages will include metric semantic conventions as well. (#4528) + +### Changed + +- `SpanFromContext` and `SpanContextFromContext` in `go.opentelemetry.io/otel/trace` no longer make a heap allocation when the passed context has no span. (#5049) +- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` and `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc` now create a gRPC client in idle mode and with "dns" as the default resolver using [`grpc.NewClient`](https://pkg.go.dev/google.golang.org/grpc#NewClient). (#5151) + Because of that `WithDialOption` ignores [`grpc.WithBlock`](https://pkg.go.dev/google.golang.org/grpc#WithBlock), [`grpc.WithTimeout`](https://pkg.go.dev/google.golang.org/grpc#WithTimeout), and [`grpc.WithReturnConnectionError`](https://pkg.go.dev/google.golang.org/grpc#WithReturnConnectionError). + Notice that [`grpc.DialContext`](https://pkg.go.dev/google.golang.org/grpc#DialContext) which was used before is now deprecated. + +### Fixed + +- Clarify the documentation about equivalence guarantees for the `Set` and `Distinct` types in `go.opentelemetry.io/otel/attribute`. (#5027) +- Prevent default `ErrorHandler` self-delegation. (#5137) +- Update all dependencies to address [GO-2024-2687]. (#5139) + +### Removed + +- Drop support for [Go 1.20]. (#4967) + +### Deprecated + +- Deprecate `go.opentelemetry.io/otel/attribute.Sortable` type. (#4734) +- Deprecate `go.opentelemetry.io/otel/attribute.NewSetWithSortable` function. (#4734) +- Deprecate `go.opentelemetry.io/otel/attribute.NewSetWithSortableFiltered` function. (#4734) + ## [1.24.0/0.46.0/0.0.1-alpha] 2024-02-23 This release is the last to support [Go 1.20]. @@ -22,6 +357,7 @@ The next release will require at least [Go 1.21]. This module includes OpenTelemetry Go's implementation of the Logs Bridge API. This module is in an alpha state, it is subject to breaking changes. See our [versioning policy](./VERSIONING.md) for more info. (#4961) +- Add ARM64 platform to the compatibility testing suite. (#4994) ### Fixed @@ -138,7 +474,7 @@ See our [versioning policy](VERSIONING.md) for more information about these stab ## [1.20.0/0.43.0] 2023-11-10 -This release brings a breaking change for custom trace API implementations. Some interfaces (`TracerProvider`, `Tracer`, `Span`) now embed the `go.opentelemetry.io/otel/trace/embedded` types. Implementors need to update their implementations based on what they want the default behavior to be. See the "API Implementations" section of the [trace API] package documentation for more information about how to accomplish this. +This release brings a breaking change for custom trace API implementations. Some interfaces (`TracerProvider`, `Tracer`, `Span`) now embed the `go.opentelemetry.io/otel/trace/embedded` types. Implementers need to update their implementations based on what they want the default behavior to be. See the "API Implementations" section of the [trace API] package documentation for more information about how to accomplish this. ### Added @@ -170,15 +506,15 @@ This release brings a breaking change for custom trace API implementations. Some - `go.opentelemetry.io/otel/bridge/opencensus.NewMetricProducer` returns a `*MetricProducer` struct instead of the metric.Producer interface. (#4583) - The `TracerProvider` in `go.opentelemetry.io/otel/trace` now embeds the `go.opentelemetry.io/otel/trace/embedded.TracerProvider` type. This extends the `TracerProvider` interface and is is a breaking change for any existing implementation. - Implementors need to update their implementations based on what they want the default behavior of the interface to be. + Implementers need to update their implementations based on what they want the default behavior of the interface to be. See the "API Implementations" section of the `go.opentelemetry.io/otel/trace` package documentation for more information about how to accomplish this. (#4620) - The `Tracer` in `go.opentelemetry.io/otel/trace` now embeds the `go.opentelemetry.io/otel/trace/embedded.Tracer` type. This extends the `Tracer` interface and is is a breaking change for any existing implementation. - Implementors need to update their implementations based on what they want the default behavior of the interface to be. + Implementers need to update their implementations based on what they want the default behavior of the interface to be. See the "API Implementations" section of the `go.opentelemetry.io/otel/trace` package documentation for more information about how to accomplish this. (#4620) - The `Span` in `go.opentelemetry.io/otel/trace` now embeds the `go.opentelemetry.io/otel/trace/embedded.Span` type. This extends the `Span` interface and is is a breaking change for any existing implementation. - Implementors need to update their implementations based on what they want the default behavior of the interface to be. + Implementers need to update their implementations based on what they want the default behavior of the interface to be. See the "API Implementations" section of the `go.opentelemetry.io/otel/trace` package documentation for more information about how to accomplish this. (#4620) - `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc` does no longer depend on `go.opentelemetry.io/otel/exporters/otlp/otlpmetric`. (#4660) - `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp` does no longer depend on `go.opentelemetry.io/otel/exporters/otlp/otlpmetric`. (#4660) @@ -814,7 +1150,7 @@ The next release will require at least [Go 1.19]. - Exported `Status` codes in the `go.opentelemetry.io/otel/exporters/zipkin` exporter are now exported as all upper case values. (#3340) - `Aggregation`s from `go.opentelemetry.io/otel/sdk/metric` with no data are not exported. (#3394, #3436) - Re-enabled Attribute Filters in the Metric SDK. (#3396) -- Asynchronous callbacks are only called if they are registered with at least one instrument that does not use drop aggragation. (#3408) +- Asynchronous callbacks are only called if they are registered with at least one instrument that does not use drop aggregation. (#3408) - Do not report empty partial-success responses in the `go.opentelemetry.io/otel/exporters/otlp` exporters. (#3438, #3432) - Handle partial success responses in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric` exporters. (#3162, #3440) - Prevent duplicate Prometheus description, unit, and type. (#3469) @@ -1682,7 +2018,7 @@ with major version 0. - Setting error status while recording error with Span from oteltest package. (#1729) - The concept of a remote and local Span stored in a context is unified to just the current Span. Because of this `"go.opentelemetry.io/otel/trace".RemoteSpanContextFromContext` is removed as it is no longer needed. - Instead, `"go.opentelemetry.io/otel/trace".SpanContextFromContex` can be used to return the current Span. + Instead, `"go.opentelemetry.io/otel/trace".SpanContextFromContext` can be used to return the current Span. If needed, that Span's `SpanContext.IsRemote()` can then be used to determine if it is remote or not. (#1731) - The `HasRemoteParent` field of the `"go.opentelemetry.io/otel/sdk/trace".SamplingParameters` is removed. This field is redundant to the information returned from the `Remote` method of the `SpanContext` held in the `ParentContext` field. (#1749) @@ -1859,7 +2195,7 @@ with major version 0. - `NewExporter` from `exporters/otlp` now takes a `ProtocolDriver` as a parameter. (#1369) - Many OTLP Exporter options became gRPC ProtocolDriver options. (#1369) - Unify endpoint API that related to OTel exporter. (#1401) -- Optimize metric histogram aggregator to re-use its slice of buckets. (#1435) +- Optimize metric histogram aggregator to reuse its slice of buckets. (#1435) - Metric aggregator Count() and histogram Bucket.Counts are consistently `uint64`. (1430) - Histogram aggregator accepts functional options, uses default boundaries if none given. (#1434) - `SamplingResult` now passed a `Tracestate` from the parent `SpanContext` (#1432) @@ -2256,7 +2592,7 @@ This release migrates the default OpenTelemetry SDK into its own Go module, deco - Prometheus exporter will not apply stale updates or forget inactive metrics. (#903) - Add test for api.standard `HTTPClientAttributesFromHTTPRequest`. (#905) - Bump github.com/golangci/golangci-lint from 1.27.0 to 1.28.1 in /tools. (#901, #913) -- Update otel-colector example to use the v0.5.0 collector. (#915) +- Update otel-collector example to use the v0.5.0 collector. (#915) - The `grpctrace` instrumentation uses a span name conforming to the OpenTelemetry semantic conventions (does not contain a leading slash (`/`)). (#922) - The `grpctrace` instrumentation includes an `rpc.method` attribute now set to the gRPC method name. (#900, #922) - The `grpctrace` instrumentation `rpc.service` attribute now contains the package name if one exists. @@ -2849,7 +3185,16 @@ It contains api and sdk for trace and meter. - CircleCI build CI manifest files. - CODEOWNERS file to track owners of this project. -[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.24.0...HEAD +[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.33.0...HEAD +[1.33.0/0.55.0/0.9.0/0.0.12]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.33.0 +[1.32.0/0.54.0/0.8.0/0.0.11]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.32.0 +[1.31.0/0.53.0/0.7.0/0.0.10]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.31.0 +[1.30.0/0.52.0/0.6.0/0.0.9]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.30.0 +[1.29.0/0.51.0/0.5.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.29.0 +[1.28.0/0.50.0/0.4.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.28.0 +[1.27.0/0.49.0/0.3.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.27.0 +[1.26.0/0.48.0/0.2.0-alpha]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.26.0 +[1.25.0/0.47.0/0.0.8/0.1.0-alpha]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.25.0 [1.24.0/0.46.0/0.0.1-alpha]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.24.0 [1.23.1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.23.1 [1.23.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.23.0 @@ -2928,6 +3273,9 @@ It contains api and sdk for trace and meter. [0.1.1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.1.1 [0.1.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.1.0 + + +[Go 1.23]: https://go.dev/doc/go1.23 [Go 1.22]: https://go.dev/doc/go1.22 [Go 1.21]: https://go.dev/doc/go1.21 [Go 1.20]: https://go.dev/doc/go1.20 @@ -2937,3 +3285,5 @@ It contains api and sdk for trace and meter. [metric API]:https://pkg.go.dev/go.opentelemetry.io/otel/metric [metric SDK]:https://pkg.go.dev/go.opentelemetry.io/otel/sdk/metric [trace API]:https://pkg.go.dev/go.opentelemetry.io/otel/trace + +[GO-2024-2687]: https://pkg.go.dev/vuln/GO-2024-2687 diff --git a/vendor/go.opentelemetry.io/otel/CODEOWNERS b/vendor/go.opentelemetry.io/otel/CODEOWNERS index 31d336d92229..945a07d2b072 100644 --- a/vendor/go.opentelemetry.io/otel/CODEOWNERS +++ b/vendor/go.opentelemetry.io/otel/CODEOWNERS @@ -5,13 +5,13 @@ ##################################################### # # Learn about membership in OpenTelemetry community: -# https://github.com/open-telemetry/community/blob/main/community-membership.md +# https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md # # # Learn about CODEOWNERS file format: # https://help.github.com/en/articles/about-code-owners # -* @MrAlias @Aneurysm9 @evantorrie @XSAM @dashpole @MadVikingGod @pellared @hanyuancheung @dmathieu +* @MrAlias @XSAM @dashpole @pellared @dmathieu -CODEOWNERS @MrAlias @MadVikingGod @pellared @dashpole \ No newline at end of file +CODEOWNERS @MrAlias @pellared @dashpole @XSAM @dmathieu diff --git a/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md b/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md index c9f2bac55bf6..22a2e9dbd495 100644 --- a/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md +++ b/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md @@ -201,6 +201,16 @@ You can install and run a "local Go Doc site" in the following way: [`go.opentelemetry.io/otel/metric`](https://pkg.go.dev/go.opentelemetry.io/otel/metric) is an example of a very well-documented package. +### README files + +Each (non-internal, non-test, non-documentation) package must contain a +`README.md` file containing at least a title, and a `pkg.go.dev` badge. + +The README should not be a repetition of Go doc comments. + +You can verify the presence of all README files with the `make verify-readmes` +command. + ## Style Guide One of the primary goals of this project is that it is actually used by @@ -560,12 +570,18 @@ functionality should be added, each one will need their own super-set interfaces and will duplicate the pattern. For this reason, the simple targeted interface that defines the specific functionality should be preferred. +See also: +[Keeping Your Modules Compatible: Working with interfaces](https://go.dev/blog/module-compatibility#working-with-interfaces). + ### Testing The tests should never leak goroutines. Use the term `ConcurrentSafe` in the test name when it aims to verify the -absence of race conditions. +absence of race conditions. The top-level tests with this term will be run +many times in the `test-concurrent-safe` CI job to increase the chance of +catching concurrency issues. This does not apply to subtests when this term +is not in their root name. ### Internal packages @@ -613,31 +629,34 @@ should be canceled. ## Approvers and Maintainers -### Approvers +### Triagers -- [Evan Torrie](https://github.com/evantorrie), Verizon Media -- [Sam Xie](https://github.com/XSAM), Cisco/AppDynamics -- [Chester Cheung](https://github.com/hanyuancheung), Tencent -- [Damien Mathieu](https://github.com/dmathieu), Elastic -- [Anthony Mirabella](https://github.com/Aneurysm9), AWS +- [Cheng-Zhen Yang](https://github.com/scorpionknifes), Independent + +### Approvers ### Maintainers +- [Damien Mathieu](https://github.com/dmathieu), Elastic - [David Ashpole](https://github.com/dashpole), Google -- [Aaron Clawson](https://github.com/MadVikingGod), LightStep - [Robert Pająk](https://github.com/pellared), Splunk +- [Sam Xie](https://github.com/XSAM), Cisco/AppDynamics - [Tyler Yahn](https://github.com/MrAlias), Splunk ### Emeritus -- [Liz Fong-Jones](https://github.com/lizthegrey), Honeycomb -- [Gustavo Silva Paiva](https://github.com/paivagustavo), LightStep -- [Josh MacDonald](https://github.com/jmacd), LightStep +- [Aaron Clawson](https://github.com/MadVikingGod) +- [Anthony Mirabella](https://github.com/Aneurysm9) +- [Chester Cheung](https://github.com/hanyuancheung) +- [Evan Torrie](https://github.com/evantorrie) +- [Gustavo Silva Paiva](https://github.com/paivagustavo) +- [Josh MacDonald](https://github.com/jmacd) +- [Liz Fong-Jones](https://github.com/lizthegrey) ### Become an Approver or a Maintainer See the [community membership document in OpenTelemetry community -repo](https://github.com/open-telemetry/community/blob/main/community-membership.md). +repo](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md). [Approver]: #approvers [Maintainer]: #maintainers diff --git a/vendor/go.opentelemetry.io/otel/Makefile b/vendor/go.opentelemetry.io/otel/Makefile index 6de95219be70..a7f6d8cc6882 100644 --- a/vendor/go.opentelemetry.io/otel/Makefile +++ b/vendor/go.opentelemetry.io/otel/Makefile @@ -1,16 +1,5 @@ # Copyright The OpenTelemetry Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# SPDX-License-Identifier: Apache-2.0 TOOLS_MOD_DIR := ./internal/tools @@ -25,8 +14,8 @@ TIMEOUT = 60 .DEFAULT_GOAL := precommit .PHONY: precommit ci -precommit: generate dependabot-generate license-check misspell go-mod-tidy golangci-lint-fix test-default -ci: generate dependabot-check license-check lint vanity-import-check build test-default check-clean-work-tree test-coverage +precommit: generate toolchain-check license-check misspell go-mod-tidy golangci-lint-fix verify-readmes verify-mods test-default +ci: generate toolchain-check license-check lint vanity-import-check verify-readmes verify-mods build test-default check-clean-work-tree test-coverage # Tools @@ -34,7 +23,7 @@ TOOLS = $(CURDIR)/.tools $(TOOLS): @mkdir -p $@ -$(TOOLS)/%: | $(TOOLS) +$(TOOLS)/%: $(TOOLS_MOD_DIR)/go.mod | $(TOOLS) cd $(TOOLS_MOD_DIR) && \ $(GO) build -o $@ $(PACKAGE) @@ -50,9 +39,6 @@ $(TOOLS)/crosslink: PACKAGE=go.opentelemetry.io/build-tools/crosslink SEMCONVKIT = $(TOOLS)/semconvkit $(TOOLS)/semconvkit: PACKAGE=go.opentelemetry.io/otel/$(TOOLS_MOD_DIR)/semconvkit -DBOTCONF = $(TOOLS)/dbotconf -$(TOOLS)/dbotconf: PACKAGE=go.opentelemetry.io/build-tools/dbotconf - GOLANGCI_LINT = $(TOOLS)/golangci-lint $(TOOLS)/golangci-lint: PACKAGE=github.com/golangci/golangci-lint/cmd/golangci-lint @@ -68,9 +54,6 @@ $(TOOLS)/stringer: PACKAGE=golang.org/x/tools/cmd/stringer PORTO = $(TOOLS)/porto $(TOOLS)/porto: PACKAGE=github.com/jcchavezs/porto/cmd/porto -GOJQ = $(TOOLS)/gojq -$(TOOLS)/gojq: PACKAGE=github.com/itchyny/gojq/cmd/gojq - GOTMPL = $(TOOLS)/gotmpl $(GOTMPL): PACKAGE=go.opentelemetry.io/build-tools/gotmpl @@ -81,7 +64,7 @@ GOVULNCHECK = $(TOOLS)/govulncheck $(TOOLS)/govulncheck: PACKAGE=golang.org/x/vuln/cmd/govulncheck .PHONY: tools -tools: $(CROSSLINK) $(DBOTCONF) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(PORTO) $(GOJQ) $(SEMCONVGEN) $(MULTIMOD) $(SEMCONVKIT) $(GOTMPL) $(GORELEASE) +tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(PORTO) $(SEMCONVGEN) $(MULTIMOD) $(SEMCONVKIT) $(GOTMPL) $(GORELEASE) # Virtualized python tools via docker @@ -110,7 +93,7 @@ $(PYTOOLS): @$(DOCKERPY) bash -c "python3 -m venv $(VENVDIR) && $(PIP) install --upgrade pip" # Install python packages into the virtual environment. -$(PYTOOLS)/%: | $(PYTOOLS) +$(PYTOOLS)/%: $(PYTOOLS) @$(DOCKERPY) $(PIP) install -r requirements.txt CODESPELL = $(PYTOOLS)/codespell @@ -124,18 +107,18 @@ generate: go-generate vanity-import-fix .PHONY: go-generate go-generate: $(OTEL_GO_MOD_DIRS:%=go-generate/%) go-generate/%: DIR=$* -go-generate/%: | $(STRINGER) $(GOTMPL) +go-generate/%: $(STRINGER) $(GOTMPL) @echo "$(GO) generate $(DIR)/..." \ && cd $(DIR) \ && PATH="$(TOOLS):$${PATH}" $(GO) generate ./... .PHONY: vanity-import-fix -vanity-import-fix: | $(PORTO) +vanity-import-fix: $(PORTO) @$(PORTO) --include-internal -w . # Generate go.work file for local development. .PHONY: go-work -go-work: | $(CROSSLINK) +go-work: $(CROSSLINK) $(CROSSLINK) work --root=$(shell pwd) # Build @@ -159,12 +142,14 @@ build-tests/%: # Tests -TEST_TARGETS := test-default test-bench test-short test-verbose test-race +TEST_TARGETS := test-default test-bench test-short test-verbose test-race test-concurrent-safe .PHONY: $(TEST_TARGETS) test test-default test-race: ARGS=-race test-bench: ARGS=-run=xxxxxMatchNothingxxxxx -test.benchtime=1ms -bench=. test-short: ARGS=-short test-verbose: ARGS=-v -race +test-concurrent-safe: ARGS=-run=ConcurrentSafe -count=100 -race +test-concurrent-safe: TIMEOUT=120 $(TEST_TARGETS): test test: $(OTEL_GO_MOD_DIRS:%=test/%) test/%: DIR=$* @@ -178,7 +163,7 @@ test/%: COVERAGE_MODE = atomic COVERAGE_PROFILE = coverage.out .PHONY: test-coverage -test-coverage: | $(GOCOVMERGE) +test-coverage: $(GOCOVMERGE) @set -e; \ printf "" > coverage.txt; \ for dir in $(ALL_COVERAGE_MOD_DIRS); do \ @@ -192,40 +177,37 @@ test-coverage: | $(GOCOVMERGE) done; \ $(GOCOVMERGE) $$(find . -name coverage.out) > coverage.txt -# Adding a directory will include all benchmarks in that directory if a filter is not specified. -BENCHMARK_TARGETS := sdk/trace .PHONY: benchmark -benchmark: $(BENCHMARK_TARGETS:%=benchmark/%) -BENCHMARK_FILTER = . -# You can override the filter for a particular directory by adding a rule here. -benchmark/sdk/trace: BENCHMARK_FILTER = SpanWithAttributes_8/AlwaysSample +benchmark: $(OTEL_GO_MOD_DIRS:%=benchmark/%) benchmark/%: - @echo "$(GO) test -timeout $(TIMEOUT)s -run=xxxxxMatchNothingxxxxx -bench=$(BENCHMARK_FILTER) $*..." \ + @echo "$(GO) test -run=xxxxxMatchNothingxxxxx -bench=. $*..." \ && cd $* \ - $(foreach filter, $(BENCHMARK_FILTER), && $(GO) test -timeout $(TIMEOUT)s -run=xxxxxMatchNothingxxxxx -bench=$(filter)) + && $(GO) list ./... \ + | grep -v third_party \ + | xargs $(GO) test -run=xxxxxMatchNothingxxxxx -bench=. .PHONY: golangci-lint golangci-lint-fix golangci-lint-fix: ARGS=--fix golangci-lint-fix: golangci-lint golangci-lint: $(OTEL_GO_MOD_DIRS:%=golangci-lint/%) golangci-lint/%: DIR=$* -golangci-lint/%: | $(GOLANGCI_LINT) +golangci-lint/%: $(GOLANGCI_LINT) @echo 'golangci-lint $(if $(ARGS),$(ARGS) ,)$(DIR)' \ && cd $(DIR) \ && $(GOLANGCI_LINT) run --allow-serial-runners $(ARGS) .PHONY: crosslink -crosslink: | $(CROSSLINK) +crosslink: $(CROSSLINK) @echo "Updating intra-repository dependencies in all go modules" \ && $(CROSSLINK) --root=$(shell pwd) --prune .PHONY: go-mod-tidy go-mod-tidy: $(ALL_GO_MOD_DIRS:%=go-mod-tidy/%) go-mod-tidy/%: DIR=$* -go-mod-tidy/%: | crosslink +go-mod-tidy/%: crosslink @echo "$(GO) mod tidy in $(DIR)" \ && cd $(DIR) \ - && $(GO) mod tidy -compat=1.20 + && $(GO) mod tidy -compat=1.21 .PHONY: lint-modules lint-modules: go-mod-tidy @@ -234,25 +216,35 @@ lint-modules: go-mod-tidy lint: misspell lint-modules golangci-lint govulncheck .PHONY: vanity-import-check -vanity-import-check: | $(PORTO) +vanity-import-check: $(PORTO) @$(PORTO) --include-internal -l . || ( echo "(run: make vanity-import-fix)"; exit 1 ) .PHONY: misspell -misspell: | $(MISSPELL) +misspell: $(MISSPELL) @$(MISSPELL) -w $(ALL_DOCS) .PHONY: govulncheck govulncheck: $(OTEL_GO_MOD_DIRS:%=govulncheck/%) govulncheck/%: DIR=$* -govulncheck/%: | $(GOVULNCHECK) +govulncheck/%: $(GOVULNCHECK) @echo "govulncheck ./... in $(DIR)" \ && cd $(DIR) \ && $(GOVULNCHECK) ./... .PHONY: codespell -codespell: | $(CODESPELL) +codespell: $(CODESPELL) @$(DOCKERPY) $(CODESPELL) +.PHONY: toolchain-check +toolchain-check: + @toolchainRes=$$(for f in $(ALL_GO_MOD_DIRS); do \ + awk '/^toolchain/ { found=1; next } END { if (found) print FILENAME }' $$f/go.mod; \ + done); \ + if [ -n "$${toolchainRes}" ]; then \ + echo "toolchain checking failed:"; echo "$${toolchainRes}"; \ + exit 1; \ + fi + .PHONY: license-check license-check: @licRes=$$(for f in $$(find . -type f \( -iname '*.go' -o -iname '*.sh' \) ! -path '**/third_party/*' ! -path './.git/*' ) ; do \ @@ -263,15 +255,6 @@ license-check: exit 1; \ fi -DEPENDABOT_CONFIG = .github/dependabot.yml -.PHONY: dependabot-check -dependabot-check: | $(DBOTCONF) - @$(DBOTCONF) verify $(DEPENDABOT_CONFIG) || ( echo "(run: make dependabot-generate)"; exit 1 ) - -.PHONY: dependabot-generate -dependabot-generate: | $(DBOTCONF) - @$(DBOTCONF) generate > $(DEPENDABOT_CONFIG) - .PHONY: check-clean-work-tree check-clean-work-tree: @if ! git diff --quiet; then \ @@ -284,13 +267,11 @@ check-clean-work-tree: SEMCONVPKG ?= "semconv/" .PHONY: semconv-generate -semconv-generate: | $(SEMCONVGEN) $(SEMCONVKIT) +semconv-generate: $(SEMCONVGEN) $(SEMCONVKIT) [ "$(TAG)" ] || ( echo "TAG unset: missing opentelemetry semantic-conventions tag"; exit 1 ) [ "$(OTEL_SEMCONV_REPO)" ] || ( echo "OTEL_SEMCONV_REPO unset: missing path to opentelemetry semantic-conventions repo"; exit 1 ) - $(SEMCONVGEN) -i "$(OTEL_SEMCONV_REPO)/model/." --only=span -p conventionType=trace -f trace.go -t "$(SEMCONVPKG)/template.j2" -s "$(TAG)" - $(SEMCONVGEN) -i "$(OTEL_SEMCONV_REPO)/model/." --only=attribute_group -p conventionType=trace -f attribute_group.go -t "$(SEMCONVPKG)/template.j2" -s "$(TAG)" - $(SEMCONVGEN) -i "$(OTEL_SEMCONV_REPO)/model/." --only=event -p conventionType=event -f event.go -t "$(SEMCONVPKG)/template.j2" -s "$(TAG)" - $(SEMCONVGEN) -i "$(OTEL_SEMCONV_REPO)/model/." --only=resource -p conventionType=resource -f resource.go -t "$(SEMCONVPKG)/template.j2" -s "$(TAG)" + $(SEMCONVGEN) -i "$(OTEL_SEMCONV_REPO)/model/." --only=attribute_group -p conventionType=trace -f attribute_group.go -z "$(SEMCONVPKG)/capitalizations.txt" -t "$(SEMCONVPKG)/template.j2" -s "$(TAG)" + $(SEMCONVGEN) -i "$(OTEL_SEMCONV_REPO)/model/." --only=metric -f metric.go -t "$(SEMCONVPKG)/metric_template.j2" -s "$(TAG)" $(SEMCONVKIT) -output "$(SEMCONVPKG)/$(TAG)" -tag "$(TAG)" .PHONY: gorelease @@ -302,17 +283,25 @@ gorelease/%:| $(GORELEASE) && $(GORELEASE) \ || echo "" +.PHONY: verify-mods +verify-mods: $(MULTIMOD) + $(MULTIMOD) verify + .PHONY: prerelease -prerelease: | $(MULTIMOD) +prerelease: verify-mods @[ "${MODSET}" ] || ( echo ">> env var MODSET is not set"; exit 1 ) - $(MULTIMOD) verify && $(MULTIMOD) prerelease -m ${MODSET} + $(MULTIMOD) prerelease -m ${MODSET} COMMIT ?= "HEAD" .PHONY: add-tags -add-tags: | $(MULTIMOD) +add-tags: verify-mods @[ "${MODSET}" ] || ( echo ">> env var MODSET is not set"; exit 1 ) - $(MULTIMOD) verify && $(MULTIMOD) tag -m ${MODSET} -c ${COMMIT} + $(MULTIMOD) tag -m ${MODSET} -c ${COMMIT} .PHONY: lint-markdown -lint-markdown: +lint-markdown: docker run -v "$(CURDIR):$(WORKDIR)" avtodev/markdown-lint:v1 -c $(WORKDIR)/.markdownlint.yaml $(WORKDIR)/**/*.md + +.PHONY: verify-readmes +verify-readmes: + ./verify_readmes.sh diff --git a/vendor/go.opentelemetry.io/otel/README.md b/vendor/go.opentelemetry.io/otel/README.md index 7766259a5c1c..efec278905bb 100644 --- a/vendor/go.opentelemetry.io/otel/README.md +++ b/vendor/go.opentelemetry.io/otel/README.md @@ -15,7 +15,7 @@ It provides a set of APIs to directly measure performance and behavior of your s |---------|--------------------| | Traces | Stable | | Metrics | Stable | -| Logs | In development[^1] | +| Logs | Beta[^1] | Progress and status specific to this repository is tracked in our [project boards](https://github.com/open-telemetry/opentelemetry-go/projects) @@ -47,23 +47,22 @@ stop ensuring compatibility with these versions in the following manner: Currently, this project supports the following environments. -| OS | Go Version | Architecture | -|---------|------------|--------------| -| Ubuntu | 1.22 | amd64 | -| Ubuntu | 1.21 | amd64 | -| Ubuntu | 1.20 | amd64 | -| Ubuntu | 1.22 | 386 | -| Ubuntu | 1.21 | 386 | -| Ubuntu | 1.20 | 386 | -| MacOS | 1.22 | amd64 | -| MacOS | 1.21 | amd64 | -| MacOS | 1.20 | amd64 | -| Windows | 1.22 | amd64 | -| Windows | 1.21 | amd64 | -| Windows | 1.20 | amd64 | -| Windows | 1.22 | 386 | -| Windows | 1.21 | 386 | -| Windows | 1.20 | 386 | +| OS | Go Version | Architecture | +|----------|------------|--------------| +| Ubuntu | 1.23 | amd64 | +| Ubuntu | 1.22 | amd64 | +| Ubuntu | 1.23 | 386 | +| Ubuntu | 1.22 | 386 | +| Linux | 1.23 | arm64 | +| Linux | 1.22 | arm64 | +| macOS 13 | 1.23 | amd64 | +| macOS 13 | 1.22 | amd64 | +| macOS | 1.23 | arm64 | +| macOS | 1.22 | arm64 | +| Windows | 1.23 | amd64 | +| Windows | 1.22 | amd64 | +| Windows | 1.23 | 386 | +| Windows | 1.22 | 386 | While this project should work for other systems, no compatibility guarantees are made for those systems currently. @@ -90,8 +89,8 @@ If you need to extend the telemetry an instrumentation library provides or want to build your own instrumentation for your application directly you will need to use the [Go otel](https://pkg.go.dev/go.opentelemetry.io/otel) -package. The included [examples](./example/) are a good way to see some -practical uses of this process. +package. The [examples](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/examples) +are a good way to see some practical uses of this process. ### Export @@ -100,12 +99,12 @@ export pipeline to send that telemetry to an observability platform. All officially supported exporters for the OpenTelemetry project are contained in the [exporters directory](./exporters). -| Exporter | Metrics | Traces | -|---------------------------------------|:-------:|:------:| -| [OTLP](./exporters/otlp/) | ✓ | ✓ | -| [Prometheus](./exporters/prometheus/) | ✓ | | -| [stdout](./exporters/stdout/) | ✓ | ✓ | -| [Zipkin](./exporters/zipkin/) | | ✓ | +| Exporter | Logs | Metrics | Traces | +|---------------------------------------|:----:|:-------:|:------:| +| [OTLP](./exporters/otlp/) | ✓ | ✓ | ✓ | +| [Prometheus](./exporters/prometheus/) | | ✓ | | +| [stdout](./exporters/stdout/) | ✓ | ✓ | ✓ | +| [Zipkin](./exporters/zipkin/) | | | ✓ | ## Contributing diff --git a/vendor/go.opentelemetry.io/otel/RELEASING.md b/vendor/go.opentelemetry.io/otel/RELEASING.md index d2691d0bd8b1..ffa9b61258ab 100644 --- a/vendor/go.opentelemetry.io/otel/RELEASING.md +++ b/vendor/go.opentelemetry.io/otel/RELEASING.md @@ -27,6 +27,12 @@ You can run `make gorelease` that runs [gorelease](https://pkg.go.dev/golang.org You can check/report problems with `gorelease` [here](https://golang.org/issues/26420). +## Verify changes for contrib repository + +If the changes in the main repository are going to affect the contrib repository, it is important to verify that the changes are compatible with the contrib repository. + +Follow [the steps](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/RELEASING.md#verify-otel-changes) in the contrib repository to verify OTel changes. + ## Pre-Release First, decide which module sets will be released and update their versions @@ -63,6 +69,7 @@ Update go.mod for submodules to depend on the new release which will happen in t ``` - Move all the `Unreleased` changes into a new section following the title scheme (`[] - `). + - Make sure the new section is under the comment for released section, like ``, so it is protected from being overwritten in the future. - Update all the appropriate links at the bottom. 4. Push the changes to upstream and create a Pull Request on GitHub. @@ -104,17 +111,6 @@ It is critical you make sure the version you push upstream is correct. Finally create a Release for the new `` on GitHub. The release body should include all the release notes from the Changelog for this release. -## Verify Examples - -After releasing verify that examples build outside of the repository. - -``` -./verify_examples.sh -``` - -The script copies examples into a different directory removes any `replace` declarations in `go.mod` and builds them. -This ensures they build with the published release, not the local copy. - ## Post-Release ### Contrib Repository diff --git a/vendor/go.opentelemetry.io/otel/VERSIONING.md b/vendor/go.opentelemetry.io/otel/VERSIONING.md index 412f1e362bbe..b8cb605c1669 100644 --- a/vendor/go.opentelemetry.io/otel/VERSIONING.md +++ b/vendor/go.opentelemetry.io/otel/VERSIONING.md @@ -26,7 +26,7 @@ is designed so the following goals can be achieved. go.opentelemetry.io/otel/v2 v2.0.1`) and in the package import path (e.g., `import "go.opentelemetry.io/otel/v2/trace"`). This includes the paths used in `go get` commands (e.g., `go get - go.opentelemetry.io/otel/v2@v2.0.1`. Note there is both a `/v2` and a + go.opentelemetry.io/otel/v2@v2.0.1`). Note there is both a `/v2` and a `@v2.0.1` in that example. One way to think about it is that the module name now includes the `/v2`, so include `/v2` whenever you are using the module name). diff --git a/vendor/go.opentelemetry.io/otel/attribute/README.md b/vendor/go.opentelemetry.io/otel/attribute/README.md new file mode 100644 index 000000000000..5b3da8f14cab --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/attribute/README.md @@ -0,0 +1,3 @@ +# Attribute + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/attribute)](https://pkg.go.dev/go.opentelemetry.io/otel/attribute) diff --git a/vendor/go.opentelemetry.io/otel/attribute/doc.go b/vendor/go.opentelemetry.io/otel/attribute/doc.go index dafe7424dfbb..eef51ebc2a27 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/doc.go +++ b/vendor/go.opentelemetry.io/otel/attribute/doc.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 // Package attribute provides key and value attributes. package attribute // import "go.opentelemetry.io/otel/attribute" diff --git a/vendor/go.opentelemetry.io/otel/attribute/encoder.go b/vendor/go.opentelemetry.io/otel/attribute/encoder.go index fe2bc5766cff..318e42fcabeb 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/encoder.go +++ b/vendor/go.opentelemetry.io/otel/attribute/encoder.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package attribute // import "go.opentelemetry.io/otel/attribute" diff --git a/vendor/go.opentelemetry.io/otel/attribute/filter.go b/vendor/go.opentelemetry.io/otel/attribute/filter.go index 638c213d59ab..be9cd922d87e 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/filter.go +++ b/vendor/go.opentelemetry.io/otel/attribute/filter.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package attribute // import "go.opentelemetry.io/otel/attribute" diff --git a/vendor/go.opentelemetry.io/otel/attribute/iterator.go b/vendor/go.opentelemetry.io/otel/attribute/iterator.go index 841b271fb7dd..f2ba89ce4bc2 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/iterator.go +++ b/vendor/go.opentelemetry.io/otel/attribute/iterator.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package attribute // import "go.opentelemetry.io/otel/attribute" diff --git a/vendor/go.opentelemetry.io/otel/attribute/key.go b/vendor/go.opentelemetry.io/otel/attribute/key.go index 0656a04e43bf..d9a22c650206 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/key.go +++ b/vendor/go.opentelemetry.io/otel/attribute/key.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package attribute // import "go.opentelemetry.io/otel/attribute" diff --git a/vendor/go.opentelemetry.io/otel/attribute/kv.go b/vendor/go.opentelemetry.io/otel/attribute/kv.go index 1ddf3ce05805..3028f9a40f8b 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/kv.go +++ b/vendor/go.opentelemetry.io/otel/attribute/kv.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package attribute // import "go.opentelemetry.io/otel/attribute" diff --git a/vendor/go.opentelemetry.io/otel/attribute/set.go b/vendor/go.opentelemetry.io/otel/attribute/set.go index fb6da51450cc..6cbefceadfe0 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/set.go +++ b/vendor/go.opentelemetry.io/otel/attribute/set.go @@ -1,24 +1,14 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package attribute // import "go.opentelemetry.io/otel/attribute" import ( + "cmp" "encoding/json" "reflect" + "slices" "sort" - "sync" ) type ( @@ -26,23 +16,33 @@ type ( // immutable set of attributes, with an internal cache for storing // attribute encodings. // - // This type supports the Equivalent method of comparison using values of - // type Distinct. + // This type will remain comparable for backwards compatibility. The + // equivalence of Sets across versions is not guaranteed to be stable. + // Prior versions may find two Sets to be equal or not when compared + // directly (i.e. ==), but subsequent versions may not. Users should use + // the Equals method to ensure stable equivalence checking. + // + // Users should also use the Distinct returned from Equivalent as a map key + // instead of a Set directly. In addition to that type providing guarantees + // on stable equivalence, it may also provide performance improvements. Set struct { equivalent Distinct } - // Distinct wraps a variable-size array of KeyValue, constructed with keys - // in sorted order. This can be used as a map key or for equality checking - // between Sets. + // Distinct is a unique identifier of a Set. + // + // Distinct is designed to be ensures equivalence stability: comparisons + // will return the save value across versions. For this reason, Distinct + // should always be used as a map key instead of a Set. Distinct struct { iface interface{} } - // Sortable implements sort.Interface, used for sorting KeyValue. This is - // an exported type to support a memory optimization. A pointer to one of - // these is needed for the call to sort.Stable(), which the caller may - // provide in order to avoid an allocation. See NewSetWithSortable(). + // Sortable implements sort.Interface, used for sorting KeyValue. + // + // Deprecated: This type is no longer used. It was added as a performance + // optimization for Go < 1.21 that is no longer needed (Go < 1.21 is no + // longer supported by the module). Sortable []KeyValue ) @@ -56,12 +56,6 @@ var ( iface: [0]KeyValue{}, }, } - - // sortables is a pool of Sortables used to create Sets with a user does - // not provide one. - sortables = sync.Pool{ - New: func() interface{} { return new(Sortable) }, - } ) // EmptySet returns a reference to a Set with no elements. @@ -187,13 +181,7 @@ func empty() Set { // Except for empty sets, this method adds an additional allocation compared // with calls that include a Sortable. func NewSet(kvs ...KeyValue) Set { - // Check for empty set. - if len(kvs) == 0 { - return empty() - } - srt := sortables.Get().(*Sortable) - s, _ := NewSetWithSortableFiltered(kvs, srt, nil) - sortables.Put(srt) + s, _ := NewSetWithFiltered(kvs, nil) return s } @@ -201,12 +189,10 @@ func NewSet(kvs ...KeyValue) Set { // NewSetWithSortableFiltered for more details. // // This call includes a Sortable option as a memory optimization. -func NewSetWithSortable(kvs []KeyValue, tmp *Sortable) Set { - // Check for empty set. - if len(kvs) == 0 { - return empty() - } - s, _ := NewSetWithSortableFiltered(kvs, tmp, nil) +// +// Deprecated: Use [NewSet] instead. +func NewSetWithSortable(kvs []KeyValue, _ *Sortable) Set { + s, _ := NewSetWithFiltered(kvs, nil) return s } @@ -220,48 +206,12 @@ func NewSetWithFiltered(kvs []KeyValue, filter Filter) (Set, []KeyValue) { if len(kvs) == 0 { return empty(), nil } - srt := sortables.Get().(*Sortable) - s, filtered := NewSetWithSortableFiltered(kvs, srt, filter) - sortables.Put(srt) - return s, filtered -} - -// NewSetWithSortableFiltered returns a new Set. -// -// Duplicate keys are eliminated by taking the last value. This -// re-orders the input slice so that unique last-values are contiguous -// at the end of the slice. -// -// This ensures the following: -// -// - Last-value-wins semantics -// - Caller sees the reordering, but doesn't lose values -// - Repeated call preserve last-value wins. -// -// Note that methods are defined on Set, although this returns Set. Callers -// can avoid memory allocations by: -// -// - allocating a Sortable for use as a temporary in this method -// - allocating a Set for storing the return value of this constructor. -// -// The result maintains a cache of encoded attributes, by attribute.EncoderID. -// This value should not be copied after its first use. -// -// The second []KeyValue return value is a list of attributes that were -// excluded by the Filter (if non-nil). -func NewSetWithSortableFiltered(kvs []KeyValue, tmp *Sortable, filter Filter) (Set, []KeyValue) { - // Check for empty set. - if len(kvs) == 0 { - return empty(), nil - } - - *tmp = kvs // Stable sort so the following de-duplication can implement // last-value-wins semantics. - sort.Stable(tmp) - - *tmp = nil + slices.SortStableFunc(kvs, func(a, b KeyValue) int { + return cmp.Compare(a.Key, b.Key) + }) position := len(kvs) - 1 offset := position - 1 @@ -289,6 +239,35 @@ func NewSetWithSortableFiltered(kvs []KeyValue, tmp *Sortable, filter Filter) (S return Set{equivalent: computeDistinct(kvs)}, nil } +// NewSetWithSortableFiltered returns a new Set. +// +// Duplicate keys are eliminated by taking the last value. This +// re-orders the input slice so that unique last-values are contiguous +// at the end of the slice. +// +// This ensures the following: +// +// - Last-value-wins semantics +// - Caller sees the reordering, but doesn't lose values +// - Repeated call preserve last-value wins. +// +// Note that methods are defined on Set, although this returns Set. Callers +// can avoid memory allocations by: +// +// - allocating a Sortable for use as a temporary in this method +// - allocating a Set for storing the return value of this constructor. +// +// The result maintains a cache of encoded attributes, by attribute.EncoderID. +// This value should not be copied after its first use. +// +// The second []KeyValue return value is a list of attributes that were +// excluded by the Filter (if non-nil). +// +// Deprecated: Use [NewSetWithFiltered] instead. +func NewSetWithSortableFiltered(kvs []KeyValue, _ *Sortable, filter Filter) (Set, []KeyValue) { + return NewSetWithFiltered(kvs, filter) +} + // filteredToFront filters slice in-place using keep function. All KeyValues that need to // be removed are moved to the front. All KeyValues that need to be kept are // moved (in-order) to the back. The index for the first KeyValue to be kept is @@ -368,45 +347,25 @@ func computeDistinct(kvs []KeyValue) Distinct { func computeDistinctFixed(kvs []KeyValue) interface{} { switch len(kvs) { case 1: - ptr := new([1]KeyValue) - copy((*ptr)[:], kvs) - return *ptr + return [1]KeyValue(kvs) case 2: - ptr := new([2]KeyValue) - copy((*ptr)[:], kvs) - return *ptr + return [2]KeyValue(kvs) case 3: - ptr := new([3]KeyValue) - copy((*ptr)[:], kvs) - return *ptr + return [3]KeyValue(kvs) case 4: - ptr := new([4]KeyValue) - copy((*ptr)[:], kvs) - return *ptr + return [4]KeyValue(kvs) case 5: - ptr := new([5]KeyValue) - copy((*ptr)[:], kvs) - return *ptr + return [5]KeyValue(kvs) case 6: - ptr := new([6]KeyValue) - copy((*ptr)[:], kvs) - return *ptr + return [6]KeyValue(kvs) case 7: - ptr := new([7]KeyValue) - copy((*ptr)[:], kvs) - return *ptr + return [7]KeyValue(kvs) case 8: - ptr := new([8]KeyValue) - copy((*ptr)[:], kvs) - return *ptr + return [8]KeyValue(kvs) case 9: - ptr := new([9]KeyValue) - copy((*ptr)[:], kvs) - return *ptr + return [9]KeyValue(kvs) case 10: - ptr := new([10]KeyValue) - copy((*ptr)[:], kvs) - return *ptr + return [10]KeyValue(kvs) default: return nil } diff --git a/vendor/go.opentelemetry.io/otel/attribute/value.go b/vendor/go.opentelemetry.io/otel/attribute/value.go index cb21dd5c0961..9ea0ecbbd27a 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/value.go +++ b/vendor/go.opentelemetry.io/otel/attribute/value.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package attribute // import "go.opentelemetry.io/otel/attribute" @@ -242,15 +231,27 @@ func (v Value) Emit() string { case BOOL: return strconv.FormatBool(v.AsBool()) case INT64SLICE: - return fmt.Sprint(v.asInt64Slice()) + j, err := json.Marshal(v.asInt64Slice()) + if err != nil { + return fmt.Sprintf("invalid: %v", v.asInt64Slice()) + } + return string(j) case INT64: return strconv.FormatInt(v.AsInt64(), 10) case FLOAT64SLICE: - return fmt.Sprint(v.asFloat64Slice()) + j, err := json.Marshal(v.asFloat64Slice()) + if err != nil { + return fmt.Sprintf("invalid: %v", v.asFloat64Slice()) + } + return string(j) case FLOAT64: return fmt.Sprint(v.AsFloat64()) case STRINGSLICE: - return fmt.Sprint(v.asStringSlice()) + j, err := json.Marshal(v.asStringSlice()) + if err != nil { + return fmt.Sprintf("invalid: %v", v.asStringSlice()) + } + return string(j) case STRING: return v.stringly default: diff --git a/vendor/go.opentelemetry.io/otel/baggage/README.md b/vendor/go.opentelemetry.io/otel/baggage/README.md new file mode 100644 index 000000000000..7d798435e126 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/baggage/README.md @@ -0,0 +1,3 @@ +# Baggage + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/baggage)](https://pkg.go.dev/go.opentelemetry.io/otel/baggage) diff --git a/vendor/go.opentelemetry.io/otel/baggage/baggage.go b/vendor/go.opentelemetry.io/otel/baggage/baggage.go index 7d27cf77d5c9..0e1fe2422031 100644 --- a/vendor/go.opentelemetry.io/otel/baggage/baggage.go +++ b/vendor/go.opentelemetry.io/otel/baggage/baggage.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package baggage // import "go.opentelemetry.io/otel/baggage" @@ -19,6 +8,7 @@ import ( "fmt" "net/url" "strings" + "unicode/utf8" "go.opentelemetry.io/otel/internal/baggage" ) @@ -54,9 +44,15 @@ type Property struct { // NewKeyProperty returns a new Property for key. // +// The passed key must be valid, non-empty UTF-8 string. // If key is invalid, an error will be returned. +// However, the specific Propagators that are used to transmit baggage entries across +// component boundaries may impose their own restrictions on Property key. +// For example, the W3C Baggage specification restricts the Property keys to strings that +// satisfy the token definition from RFC7230, Section 3.2.6. +// For maximum compatibility, alphanumeric value are strongly recommended to be used as Property key. func NewKeyProperty(key string) (Property, error) { - if !validateKey(key) { + if !validateBaggageName(key) { return newInvalidProperty(), fmt.Errorf("%w: %q", errInvalidKey, key) } @@ -67,11 +63,15 @@ func NewKeyProperty(key string) (Property, error) { // NewKeyValueProperty returns a new Property for key with value. // // The passed key must be compliant with W3C Baggage specification. -// The passed value must be precent-encoded as defined in W3C Baggage specification. +// The passed value must be percent-encoded as defined in W3C Baggage specification. // // Notice: Consider using [NewKeyValuePropertyRaw] instead -// that does not require precent-encoding of the value. +// that does not require percent-encoding of the value. func NewKeyValueProperty(key, value string) (Property, error) { + if !validateKey(key) { + return newInvalidProperty(), fmt.Errorf("%w: %q", errInvalidKey, key) + } + if !validateValue(value) { return newInvalidProperty(), fmt.Errorf("%w: %q", errInvalidValue, value) } @@ -84,11 +84,20 @@ func NewKeyValueProperty(key, value string) (Property, error) { // NewKeyValuePropertyRaw returns a new Property for key with value. // -// The passed key must be compliant with W3C Baggage specification. +// The passed key must be valid, non-empty UTF-8 string. +// The passed value must be valid UTF-8 string. +// However, the specific Propagators that are used to transmit baggage entries across +// component boundaries may impose their own restrictions on Property key. +// For example, the W3C Baggage specification restricts the Property keys to strings that +// satisfy the token definition from RFC7230, Section 3.2.6. +// For maximum compatibility, alphanumeric value are strongly recommended to be used as Property key. func NewKeyValuePropertyRaw(key, value string) (Property, error) { - if !validateKey(key) { + if !validateBaggageName(key) { return newInvalidProperty(), fmt.Errorf("%w: %q", errInvalidKey, key) } + if !validateBaggageValue(value) { + return newInvalidProperty(), fmt.Errorf("%w: %q", errInvalidValue, value) + } p := Property{ key: key, @@ -125,12 +134,15 @@ func (p Property) validate() error { return fmt.Errorf("invalid property: %w", err) } - if !validateKey(p.key) { + if !validateBaggageName(p.key) { return errFunc(fmt.Errorf("%w: %q", errInvalidKey, p.key)) } if !p.hasValue && p.value != "" { return errFunc(errors.New("inconsistent value")) } + if p.hasValue && !validateBaggageValue(p.value) { + return errFunc(fmt.Errorf("%w: %q", errInvalidValue, p.value)) + } return nil } @@ -148,7 +160,15 @@ func (p Property) Value() (string, bool) { // String encodes Property into a header string compliant with the W3C Baggage // specification. +// It would return empty string if the key is invalid with the W3C Baggage +// specification. This could happen for a UTF-8 key, as it may contain +// invalid characters. func (p Property) String() string { + // W3C Baggage specification does not allow percent-encoded keys. + if !validateKey(p.key) { + return "" + } + if p.hasValue { return fmt.Sprintf("%s%s%v", p.key, keyValueDelimiter, valueEscape(p.value)) } @@ -213,9 +233,14 @@ func (p properties) validate() error { // String encodes properties into a header string compliant with the W3C Baggage // specification. func (p properties) String() string { - props := make([]string, len(p)) - for i, prop := range p { - props[i] = prop.String() + props := make([]string, 0, len(p)) + for _, prop := range p { + s := prop.String() + + // Ignored empty properties. + if s != "" { + props = append(props, s) + } } return strings.Join(props, propertyDelimiter) } @@ -232,14 +257,18 @@ type Member struct { hasData bool } -// NewMemberRaw returns a new Member from the passed arguments. +// NewMember returns a new Member from the passed arguments. // // The passed key must be compliant with W3C Baggage specification. -// The passed value must be precent-encoded as defined in W3C Baggage specification. +// The passed value must be percent-encoded as defined in W3C Baggage specification. // // Notice: Consider using [NewMemberRaw] instead -// that does not require precent-encoding of the value. +// that does not require percent-encoding of the value. func NewMember(key, value string, props ...Property) (Member, error) { + if !validateKey(key) { + return newInvalidMember(), fmt.Errorf("%w: %q", errInvalidKey, key) + } + if !validateValue(value) { return newInvalidMember(), fmt.Errorf("%w: %q", errInvalidValue, value) } @@ -252,7 +281,13 @@ func NewMember(key, value string, props ...Property) (Member, error) { // NewMemberRaw returns a new Member from the passed arguments. // -// The passed key must be compliant with W3C Baggage specification. +// The passed key must be valid, non-empty UTF-8 string. +// The passed value must be valid UTF-8 string. +// However, the specific Propagators that are used to transmit baggage entries across +// component boundaries may impose their own restrictions on baggage key. +// For example, the W3C Baggage specification restricts the baggage keys to strings that +// satisfy the token definition from RFC7230, Section 3.2.6. +// For maximum compatibility, alphanumeric value are strongly recommended to be used as baggage key. func NewMemberRaw(key, value string, props ...Property) (Member, error) { m := Member{ key: key, @@ -304,19 +339,45 @@ func parseMember(member string) (Member, error) { return newInvalidMember(), fmt.Errorf("%w: %q", errInvalidKey, key) } - val := strings.TrimSpace(v) - if !validateValue(val) { + rawVal := strings.TrimSpace(v) + if !validateValue(rawVal) { return newInvalidMember(), fmt.Errorf("%w: %q", errInvalidValue, v) } - // Decode a precent-encoded value. - value, err := url.PathUnescape(val) + // Decode a percent-encoded value. + unescapeVal, err := url.PathUnescape(rawVal) if err != nil { - return newInvalidMember(), fmt.Errorf("%w: %v", errInvalidValue, err) + return newInvalidMember(), fmt.Errorf("%w: %w", errInvalidValue, err) } + + value := replaceInvalidUTF8Sequences(len(rawVal), unescapeVal) return Member{key: key, value: value, properties: props, hasData: true}, nil } +// replaceInvalidUTF8Sequences replaces invalid UTF-8 sequences with '�'. +func replaceInvalidUTF8Sequences(c int, unescapeVal string) string { + if utf8.ValidString(unescapeVal) { + return unescapeVal + } + // W3C baggage spec: + // https://github.com/w3c/baggage/blob/8c215efbeebd3fa4b1aceb937a747e56444f22f3/baggage/HTTP_HEADER_FORMAT.md?plain=1#L69 + + var b strings.Builder + b.Grow(c) + for i := 0; i < len(unescapeVal); { + r, size := utf8.DecodeRuneInString(unescapeVal[i:]) + if r == utf8.RuneError && size == 1 { + // Invalid UTF-8 sequence found, replace it with '�' + _, _ = b.WriteString("�") + } else { + _, _ = b.WriteRune(r) + } + i += size + } + + return b.String() +} + // validate ensures m conforms to the W3C Baggage specification. // A key must be an ASCII string, returning an error otherwise. func (m Member) validate() error { @@ -324,9 +385,12 @@ func (m Member) validate() error { return fmt.Errorf("%w: %q", errInvalidMember, m) } - if !validateKey(m.key) { + if !validateBaggageName(m.key) { return fmt.Errorf("%w: %q", errInvalidKey, m.key) } + if !validateBaggageValue(m.value) { + return fmt.Errorf("%w: %q", errInvalidValue, m.value) + } return m.properties.validate() } @@ -341,13 +405,18 @@ func (m Member) Properties() []Property { return m.properties.Copy() } // String encodes Member into a header string compliant with the W3C Baggage // specification. +// It would return empty string if the key is invalid with the W3C Baggage +// specification. This could happen for a UTF-8 key, as it may contain +// invalid characters. func (m Member) String() string { - // A key is just an ASCII string. A value is restricted to be - // US-ASCII characters excluding CTLs, whitespace, - // DQUOTE, comma, semicolon, and backslash. - s := fmt.Sprintf("%s%s%s", m.key, keyValueDelimiter, valueEscape(m.value)) + // W3C Baggage specification does not allow percent-encoded keys. + if !validateKey(m.key) { + return "" + } + + s := m.key + keyValueDelimiter + valueEscape(m.value) if len(m.properties) > 0 { - s = fmt.Sprintf("%s%s%s", s, propertyDelimiter, m.properties.String()) + s += propertyDelimiter + m.properties.String() } return s } @@ -458,7 +527,7 @@ func (b Baggage) Member(key string) Member { } // Members returns all the baggage list-members. -// The order of the returned list-members does not have significance. +// The order of the returned list-members is not significant. // // The returned members are not validated, as we assume the validation happened // when they were added to the Baggage. @@ -479,8 +548,8 @@ func (b Baggage) Members() []Member { return members } -// SetMember returns a copy the Baggage with the member included. If the -// baggage contains a Member with the same key the existing Member is +// SetMember returns a copy of the Baggage with the member included. If the +// baggage contains a Member with the same key, the existing Member is // replaced. // // If member is invalid according to the W3C Baggage specification, an error @@ -538,14 +607,22 @@ func (b Baggage) Len() int { // String encodes Baggage into a header string compliant with the W3C Baggage // specification. +// It would ignore members where the member key is invalid with the W3C Baggage +// specification. This could happen for a UTF-8 key, as it may contain +// invalid characters. func (b Baggage) String() string { members := make([]string, 0, len(b.list)) for k, v := range b.list { - members = append(members, Member{ + s := Member{ key: k, value: v.Value, properties: fromInternalProperties(v.Properties), - }.String()) + }.String() + + // Ignored empty members. + if s != "" { + members = append(members, s) + } } return strings.Join(members, listDelimiter) } @@ -616,11 +693,13 @@ func parsePropertyInternal(s string) (p Property, ok bool) { return } - // Decode a precent-encoded value. - value, err := url.PathUnescape(s[valueStart:valueEnd]) + // Decode a percent-encoded value. + rawVal := s[valueStart:valueEnd] + unescapeVal, err := url.PathUnescape(rawVal) if err != nil { return } + value := replaceInvalidUTF8Sequences(len(rawVal), unescapeVal) ok = true p.key = s[keyStart:keyEnd] @@ -641,6 +720,113 @@ func skipSpace(s string, offset int) int { return i } +var safeKeyCharset = [utf8.RuneSelf]bool{ + // 0x23 to 0x27 + '#': true, + '$': true, + '%': true, + '&': true, + '\'': true, + + // 0x30 to 0x39 + '0': true, + '1': true, + '2': true, + '3': true, + '4': true, + '5': true, + '6': true, + '7': true, + '8': true, + '9': true, + + // 0x41 to 0x5a + 'A': true, + 'B': true, + 'C': true, + 'D': true, + 'E': true, + 'F': true, + 'G': true, + 'H': true, + 'I': true, + 'J': true, + 'K': true, + 'L': true, + 'M': true, + 'N': true, + 'O': true, + 'P': true, + 'Q': true, + 'R': true, + 'S': true, + 'T': true, + 'U': true, + 'V': true, + 'W': true, + 'X': true, + 'Y': true, + 'Z': true, + + // 0x5e to 0x7a + '^': true, + '_': true, + '`': true, + 'a': true, + 'b': true, + 'c': true, + 'd': true, + 'e': true, + 'f': true, + 'g': true, + 'h': true, + 'i': true, + 'j': true, + 'k': true, + 'l': true, + 'm': true, + 'n': true, + 'o': true, + 'p': true, + 'q': true, + 'r': true, + 's': true, + 't': true, + 'u': true, + 'v': true, + 'w': true, + 'x': true, + 'y': true, + 'z': true, + + // remainder + '!': true, + '*': true, + '+': true, + '-': true, + '.': true, + '|': true, + '~': true, +} + +// validateBaggageName checks if the string is a valid OpenTelemetry Baggage name. +// Baggage name is a valid, non-empty UTF-8 string. +func validateBaggageName(s string) bool { + if len(s) == 0 { + return false + } + + return utf8.ValidString(s) +} + +// validateBaggageValue checks if the string is a valid OpenTelemetry Baggage value. +// Baggage value is a valid UTF-8 strings. +// Empty string is also a valid UTF-8 string. +func validateBaggageValue(s string) bool { + return utf8.ValidString(s) +} + +// validateKey checks if the string is a valid W3C Baggage key. func validateKey(s string) bool { if len(s) == 0 { return false @@ -656,19 +842,10 @@ func validateKey(s string) bool { } func validateKeyChar(c int32) bool { - return (c >= 0x23 && c <= 0x27) || - (c >= 0x30 && c <= 0x39) || - (c >= 0x41 && c <= 0x5a) || - (c >= 0x5e && c <= 0x7a) || - c == 0x21 || - c == 0x2a || - c == 0x2b || - c == 0x2d || - c == 0x2e || - c == 0x7c || - c == 0x7e + return c >= 0 && c < int32(utf8.RuneSelf) && safeKeyCharset[c] } +// validateValue checks if the string is a valid W3C Baggage value. func validateValue(s string) bool { for _, c := range s { if !validateValueChar(c) { @@ -679,12 +856,109 @@ func validateValue(s string) bool { return true } +var safeValueCharset = [utf8.RuneSelf]bool{ + '!': true, // 0x21 + + // 0x23 to 0x2b + '#': true, + '$': true, + '%': true, + '&': true, + '\'': true, + '(': true, + ')': true, + '*': true, + '+': true, + + // 0x2d to 0x3a + '-': true, + '.': true, + '/': true, + '0': true, + '1': true, + '2': true, + '3': true, + '4': true, + '5': true, + '6': true, + '7': true, + '8': true, + '9': true, + ':': true, + + // 0x3c to 0x5b + '<': true, // 0x3C + '=': true, // 0x3D + '>': true, // 0x3E + '?': true, // 0x3F + '@': true, // 0x40 + 'A': true, // 0x41 + 'B': true, // 0x42 + 'C': true, // 0x43 + 'D': true, // 0x44 + 'E': true, // 0x45 + 'F': true, // 0x46 + 'G': true, // 0x47 + 'H': true, // 0x48 + 'I': true, // 0x49 + 'J': true, // 0x4A + 'K': true, // 0x4B + 'L': true, // 0x4C + 'M': true, // 0x4D + 'N': true, // 0x4E + 'O': true, // 0x4F + 'P': true, // 0x50 + 'Q': true, // 0x51 + 'R': true, // 0x52 + 'S': true, // 0x53 + 'T': true, // 0x54 + 'U': true, // 0x55 + 'V': true, // 0x56 + 'W': true, // 0x57 + 'X': true, // 0x58 + 'Y': true, // 0x59 + 'Z': true, // 0x5A + '[': true, // 0x5B + + // 0x5d to 0x7e + ']': true, // 0x5D + '^': true, // 0x5E + '_': true, // 0x5F + '`': true, // 0x60 + 'a': true, // 0x61 + 'b': true, // 0x62 + 'c': true, // 0x63 + 'd': true, // 0x64 + 'e': true, // 0x65 + 'f': true, // 0x66 + 'g': true, // 0x67 + 'h': true, // 0x68 + 'i': true, // 0x69 + 'j': true, // 0x6A + 'k': true, // 0x6B + 'l': true, // 0x6C + 'm': true, // 0x6D + 'n': true, // 0x6E + 'o': true, // 0x6F + 'p': true, // 0x70 + 'q': true, // 0x71 + 'r': true, // 0x72 + 's': true, // 0x73 + 't': true, // 0x74 + 'u': true, // 0x75 + 'v': true, // 0x76 + 'w': true, // 0x77 + 'x': true, // 0x78 + 'y': true, // 0x79 + 'z': true, // 0x7A + '{': true, // 0x7B + '|': true, // 0x7C + '}': true, // 0x7D + '~': true, // 0x7E +} + func validateValueChar(c int32) bool { - return c == 0x21 || - (c >= 0x23 && c <= 0x2b) || - (c >= 0x2d && c <= 0x3a) || - (c >= 0x3c && c <= 0x5b) || - (c >= 0x5d && c <= 0x7e) + return c >= 0 && c < int32(utf8.RuneSelf) && safeValueCharset[c] } // valueEscape escapes the string so it can be safely placed inside a baggage value, diff --git a/vendor/go.opentelemetry.io/otel/baggage/context.go b/vendor/go.opentelemetry.io/otel/baggage/context.go index 24b34b7564a8..a572461a05f2 100644 --- a/vendor/go.opentelemetry.io/otel/baggage/context.go +++ b/vendor/go.opentelemetry.io/otel/baggage/context.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package baggage // import "go.opentelemetry.io/otel/baggage" diff --git a/vendor/go.opentelemetry.io/otel/baggage/doc.go b/vendor/go.opentelemetry.io/otel/baggage/doc.go index 4545100df679..b51d87cab704 100644 --- a/vendor/go.opentelemetry.io/otel/baggage/doc.go +++ b/vendor/go.opentelemetry.io/otel/baggage/doc.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 /* Package baggage provides functionality for storing and retrieving diff --git a/vendor/go.opentelemetry.io/otel/codes/README.md b/vendor/go.opentelemetry.io/otel/codes/README.md new file mode 100644 index 000000000000..24c52b387d22 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/codes/README.md @@ -0,0 +1,3 @@ +# Codes + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/codes)](https://pkg.go.dev/go.opentelemetry.io/otel/codes) diff --git a/vendor/go.opentelemetry.io/otel/codes/codes.go b/vendor/go.opentelemetry.io/otel/codes/codes.go index 587ebae4e30e..49a35b12255d 100644 --- a/vendor/go.opentelemetry.io/otel/codes/codes.go +++ b/vendor/go.opentelemetry.io/otel/codes/codes.go @@ -1,21 +1,11 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package codes // import "go.opentelemetry.io/otel/codes" import ( "encoding/json" + "errors" "fmt" "strconv" ) @@ -74,7 +64,7 @@ func (c *Code) UnmarshalJSON(b []byte) error { return nil } if c == nil { - return fmt.Errorf("nil receiver passed to UnmarshalJSON") + return errors.New("nil receiver passed to UnmarshalJSON") } var x interface{} @@ -94,7 +84,7 @@ func (c *Code) UnmarshalJSON(b []byte) error { return fmt.Errorf("invalid code: %q", ci) } - *c = Code(ci) + *c = Code(ci) // nolint: gosec // Bit size of 32 check above. return nil } return fmt.Errorf("invalid code: %q", string(b)) diff --git a/vendor/go.opentelemetry.io/otel/codes/doc.go b/vendor/go.opentelemetry.io/otel/codes/doc.go index 4e328fbb4b3a..ee8db448b8bf 100644 --- a/vendor/go.opentelemetry.io/otel/codes/doc.go +++ b/vendor/go.opentelemetry.io/otel/codes/doc.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 /* Package codes defines the canonical error codes used by OpenTelemetry. diff --git a/vendor/go.opentelemetry.io/otel/doc.go b/vendor/go.opentelemetry.io/otel/doc.go index 36d7c24e88e7..921f85961ad4 100644 --- a/vendor/go.opentelemetry.io/otel/doc.go +++ b/vendor/go.opentelemetry.io/otel/doc.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 /* Package otel provides global access to the OpenTelemetry API. The subpackages of @@ -28,6 +17,8 @@ To read more about tracing, see go.opentelemetry.io/otel/trace. To read more about metrics, see go.opentelemetry.io/otel/metric. +To read more about logs, see go.opentelemetry.io/otel/log. + To read more about propagation, see go.opentelemetry.io/otel/propagation and go.opentelemetry.io/otel/baggage. */ diff --git a/vendor/go.opentelemetry.io/otel/error_handler.go b/vendor/go.opentelemetry.io/otel/error_handler.go index 72fad85412be..67414c71e052 100644 --- a/vendor/go.opentelemetry.io/otel/error_handler.go +++ b/vendor/go.opentelemetry.io/otel/error_handler.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otel // import "go.opentelemetry.io/otel" diff --git a/vendor/go.opentelemetry.io/otel/get_main_pkgs.sh b/vendor/go.opentelemetry.io/otel/get_main_pkgs.sh index 9a58fb1d372e..93e80ea306c1 100644 --- a/vendor/go.opentelemetry.io/otel/get_main_pkgs.sh +++ b/vendor/go.opentelemetry.io/otel/get_main_pkgs.sh @@ -1,18 +1,7 @@ #!/usr/bin/env bash # Copyright The OpenTelemetry Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# SPDX-License-Identifier: Apache-2.0 set -euo pipefail diff --git a/vendor/go.opentelemetry.io/otel/handler.go b/vendor/go.opentelemetry.io/otel/handler.go index 4115fe3bbb5a..07623b679145 100644 --- a/vendor/go.opentelemetry.io/otel/handler.go +++ b/vendor/go.opentelemetry.io/otel/handler.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otel // import "go.opentelemetry.io/otel" @@ -18,12 +7,8 @@ import ( "go.opentelemetry.io/otel/internal/global" ) -var ( - // Compile-time check global.ErrDelegator implements ErrorHandler. - _ ErrorHandler = (*global.ErrDelegator)(nil) - // Compile-time check global.ErrLogger implements ErrorHandler. - _ ErrorHandler = (*global.ErrLogger)(nil) -) +// Compile-time check global.ErrDelegator implements ErrorHandler. +var _ ErrorHandler = (*global.ErrDelegator)(nil) // GetErrorHandler returns the global ErrorHandler instance. // @@ -44,5 +29,5 @@ func GetErrorHandler() ErrorHandler { return global.GetErrorHandler() } // delegate errors to h. func SetErrorHandler(h ErrorHandler) { global.SetErrorHandler(h) } -// Handle is a convenience function for ErrorHandler().Handle(err). -func Handle(err error) { global.Handle(err) } +// Handle is a convenience function for GetErrorHandler().Handle(err). +func Handle(err error) { global.GetErrorHandler().Handle(err) } diff --git a/vendor/go.opentelemetry.io/otel/internal/attribute/attribute.go b/vendor/go.opentelemetry.io/otel/internal/attribute/attribute.go index 622c3ee3f276..691d96c7554c 100644 --- a/vendor/go.opentelemetry.io/otel/internal/attribute/attribute.go +++ b/vendor/go.opentelemetry.io/otel/internal/attribute/attribute.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 /* Package attribute provide several helper functions for some commonly used @@ -25,33 +14,33 @@ import ( // BoolSliceValue converts a bool slice into an array with same elements as slice. func BoolSliceValue(v []bool) interface{} { var zero bool - cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))) - copy(cp.Elem().Slice(0, len(v)).Interface().([]bool), v) - return cp.Elem().Interface() + cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem() + reflect.Copy(cp, reflect.ValueOf(v)) + return cp.Interface() } // Int64SliceValue converts an int64 slice into an array with same elements as slice. func Int64SliceValue(v []int64) interface{} { var zero int64 - cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))) - copy(cp.Elem().Slice(0, len(v)).Interface().([]int64), v) - return cp.Elem().Interface() + cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem() + reflect.Copy(cp, reflect.ValueOf(v)) + return cp.Interface() } // Float64SliceValue converts a float64 slice into an array with same elements as slice. func Float64SliceValue(v []float64) interface{} { var zero float64 - cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))) - copy(cp.Elem().Slice(0, len(v)).Interface().([]float64), v) - return cp.Elem().Interface() + cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem() + reflect.Copy(cp, reflect.ValueOf(v)) + return cp.Interface() } // StringSliceValue converts a string slice into an array with same elements as slice. func StringSliceValue(v []string) interface{} { var zero string - cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))) - copy(cp.Elem().Slice(0, len(v)).Interface().([]string), v) - return cp.Elem().Interface() + cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem() + reflect.Copy(cp, reflect.ValueOf(v)) + return cp.Interface() } // AsBoolSlice converts a bool array into a slice into with same elements as array. @@ -60,12 +49,11 @@ func AsBoolSlice(v interface{}) []bool { if rv.Type().Kind() != reflect.Array { return nil } - var zero bool - correctLen := rv.Len() - correctType := reflect.ArrayOf(correctLen, reflect.TypeOf(zero)) - cpy := reflect.New(correctType) - _ = reflect.Copy(cpy.Elem(), rv) - return cpy.Elem().Slice(0, correctLen).Interface().([]bool) + cpy := make([]bool, rv.Len()) + if len(cpy) > 0 { + _ = reflect.Copy(reflect.ValueOf(cpy), rv) + } + return cpy } // AsInt64Slice converts an int64 array into a slice into with same elements as array. @@ -74,12 +62,11 @@ func AsInt64Slice(v interface{}) []int64 { if rv.Type().Kind() != reflect.Array { return nil } - var zero int64 - correctLen := rv.Len() - correctType := reflect.ArrayOf(correctLen, reflect.TypeOf(zero)) - cpy := reflect.New(correctType) - _ = reflect.Copy(cpy.Elem(), rv) - return cpy.Elem().Slice(0, correctLen).Interface().([]int64) + cpy := make([]int64, rv.Len()) + if len(cpy) > 0 { + _ = reflect.Copy(reflect.ValueOf(cpy), rv) + } + return cpy } // AsFloat64Slice converts a float64 array into a slice into with same elements as array. @@ -88,12 +75,11 @@ func AsFloat64Slice(v interface{}) []float64 { if rv.Type().Kind() != reflect.Array { return nil } - var zero float64 - correctLen := rv.Len() - correctType := reflect.ArrayOf(correctLen, reflect.TypeOf(zero)) - cpy := reflect.New(correctType) - _ = reflect.Copy(cpy.Elem(), rv) - return cpy.Elem().Slice(0, correctLen).Interface().([]float64) + cpy := make([]float64, rv.Len()) + if len(cpy) > 0 { + _ = reflect.Copy(reflect.ValueOf(cpy), rv) + } + return cpy } // AsStringSlice converts a string array into a slice into with same elements as array. @@ -102,10 +88,9 @@ func AsStringSlice(v interface{}) []string { if rv.Type().Kind() != reflect.Array { return nil } - var zero string - correctLen := rv.Len() - correctType := reflect.ArrayOf(correctLen, reflect.TypeOf(zero)) - cpy := reflect.New(correctType) - _ = reflect.Copy(cpy.Elem(), rv) - return cpy.Elem().Slice(0, correctLen).Interface().([]string) + cpy := make([]string, rv.Len()) + if len(cpy) > 0 { + _ = reflect.Copy(reflect.ValueOf(cpy), rv) + } + return cpy } diff --git a/vendor/go.opentelemetry.io/otel/internal/baggage/baggage.go b/vendor/go.opentelemetry.io/otel/internal/baggage/baggage.go index b96e5408e69a..b4f85f44a93e 100644 --- a/vendor/go.opentelemetry.io/otel/internal/baggage/baggage.go +++ b/vendor/go.opentelemetry.io/otel/internal/baggage/baggage.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 /* Package baggage provides base types and functionality to store and retrieve diff --git a/vendor/go.opentelemetry.io/otel/internal/baggage/context.go b/vendor/go.opentelemetry.io/otel/internal/baggage/context.go index 4469700d9cbb..3aea9c491f0b 100644 --- a/vendor/go.opentelemetry.io/otel/internal/baggage/context.go +++ b/vendor/go.opentelemetry.io/otel/internal/baggage/context.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package baggage // import "go.opentelemetry.io/otel/internal/baggage" diff --git a/vendor/go.opentelemetry.io/otel/internal/gen.go b/vendor/go.opentelemetry.io/otel/internal/gen.go index f532f07e9e52..4259f0320d4d 100644 --- a/vendor/go.opentelemetry.io/otel/internal/gen.go +++ b/vendor/go.opentelemetry.io/otel/internal/gen.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package internal // import "go.opentelemetry.io/otel/internal" diff --git a/vendor/go.opentelemetry.io/otel/internal/global/handler.go b/vendor/go.opentelemetry.io/otel/internal/global/handler.go index 5e9b83047924..c657ff8e755a 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/handler.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/handler.go @@ -1,38 +1,13 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package global // import "go.opentelemetry.io/otel/internal/global" import ( "log" - "os" "sync/atomic" ) -var ( - // GlobalErrorHandler provides an ErrorHandler that can be used - // throughout an OpenTelemetry instrumented project. When a user - // specified ErrorHandler is registered (`SetErrorHandler`) all calls to - // `Handle` and will be delegated to the registered ErrorHandler. - GlobalErrorHandler = defaultErrorHandler() - - // Compile-time check that delegator implements ErrorHandler. - _ ErrorHandler = (*ErrDelegator)(nil) - // Compile-time check that errLogger implements ErrorHandler. - _ ErrorHandler = (*ErrLogger)(nil) -) - // ErrorHandler handles irremediable events. type ErrorHandler interface { // Handle handles any error deemed irremediable by an OpenTelemetry @@ -44,59 +19,18 @@ type ErrDelegator struct { delegate atomic.Pointer[ErrorHandler] } -func (d *ErrDelegator) Handle(err error) { - d.getDelegate().Handle(err) -} +// Compile-time check that delegator implements ErrorHandler. +var _ ErrorHandler = (*ErrDelegator)(nil) -func (d *ErrDelegator) getDelegate() ErrorHandler { - return *d.delegate.Load() +func (d *ErrDelegator) Handle(err error) { + if eh := d.delegate.Load(); eh != nil { + (*eh).Handle(err) + return + } + log.Print(err) } // setDelegate sets the ErrorHandler delegate. func (d *ErrDelegator) setDelegate(eh ErrorHandler) { d.delegate.Store(&eh) } - -func defaultErrorHandler() *ErrDelegator { - d := &ErrDelegator{} - d.setDelegate(&ErrLogger{l: log.New(os.Stderr, "", log.LstdFlags)}) - return d -} - -// ErrLogger logs errors if no delegate is set, otherwise they are delegated. -type ErrLogger struct { - l *log.Logger -} - -// Handle logs err if no delegate is set, otherwise it is delegated. -func (h *ErrLogger) Handle(err error) { - h.l.Print(err) -} - -// GetErrorHandler returns the global ErrorHandler instance. -// -// The default ErrorHandler instance returned will log all errors to STDERR -// until an override ErrorHandler is set with SetErrorHandler. All -// ErrorHandler returned prior to this will automatically forward errors to -// the set instance instead of logging. -// -// Subsequent calls to SetErrorHandler after the first will not forward errors -// to the new ErrorHandler for prior returned instances. -func GetErrorHandler() ErrorHandler { - return GlobalErrorHandler -} - -// SetErrorHandler sets the global ErrorHandler to h. -// -// The first time this is called all ErrorHandler previously returned from -// GetErrorHandler will send errors to h instead of the default logging -// ErrorHandler. Subsequent calls will set the global ErrorHandler, but not -// delegate errors to h. -func SetErrorHandler(h ErrorHandler) { - GlobalErrorHandler.setDelegate(h) -} - -// Handle is a convenience function for ErrorHandler().Handle(err). -func Handle(err error) { - GetErrorHandler().Handle(err) -} diff --git a/vendor/go.opentelemetry.io/otel/internal/global/instruments.go b/vendor/go.opentelemetry.io/otel/internal/global/instruments.go index ebb13c20678e..ae92a4251666 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/instruments.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/instruments.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package global // import "go.opentelemetry.io/otel/internal/global" @@ -24,7 +13,7 @@ import ( // unwrapper unwraps to return the underlying instrument implementation. type unwrapper interface { - Unwrap() metric.Observable + unwrap() metric.Observable } type afCounter struct { @@ -51,7 +40,7 @@ func (i *afCounter) setDelegate(m metric.Meter) { i.delegate.Store(ctr) } -func (i *afCounter) Unwrap() metric.Observable { +func (i *afCounter) unwrap() metric.Observable { if ctr := i.delegate.Load(); ctr != nil { return ctr.(metric.Float64ObservableCounter) } @@ -82,7 +71,7 @@ func (i *afUpDownCounter) setDelegate(m metric.Meter) { i.delegate.Store(ctr) } -func (i *afUpDownCounter) Unwrap() metric.Observable { +func (i *afUpDownCounter) unwrap() metric.Observable { if ctr := i.delegate.Load(); ctr != nil { return ctr.(metric.Float64ObservableUpDownCounter) } @@ -113,7 +102,7 @@ func (i *afGauge) setDelegate(m metric.Meter) { i.delegate.Store(ctr) } -func (i *afGauge) Unwrap() metric.Observable { +func (i *afGauge) unwrap() metric.Observable { if ctr := i.delegate.Load(); ctr != nil { return ctr.(metric.Float64ObservableGauge) } @@ -144,7 +133,7 @@ func (i *aiCounter) setDelegate(m metric.Meter) { i.delegate.Store(ctr) } -func (i *aiCounter) Unwrap() metric.Observable { +func (i *aiCounter) unwrap() metric.Observable { if ctr := i.delegate.Load(); ctr != nil { return ctr.(metric.Int64ObservableCounter) } @@ -175,7 +164,7 @@ func (i *aiUpDownCounter) setDelegate(m metric.Meter) { i.delegate.Store(ctr) } -func (i *aiUpDownCounter) Unwrap() metric.Observable { +func (i *aiUpDownCounter) unwrap() metric.Observable { if ctr := i.delegate.Load(); ctr != nil { return ctr.(metric.Int64ObservableUpDownCounter) } @@ -206,7 +195,7 @@ func (i *aiGauge) setDelegate(m metric.Meter) { i.delegate.Store(ctr) } -func (i *aiGauge) Unwrap() metric.Observable { +func (i *aiGauge) unwrap() metric.Observable { if ctr := i.delegate.Load(); ctr != nil { return ctr.(metric.Int64ObservableGauge) } @@ -292,6 +281,32 @@ func (i *sfHistogram) Record(ctx context.Context, x float64, opts ...metric.Reco } } +type sfGauge struct { + embedded.Float64Gauge + + name string + opts []metric.Float64GaugeOption + + delegate atomic.Value // metric.Float64Gauge +} + +var _ metric.Float64Gauge = (*sfGauge)(nil) + +func (i *sfGauge) setDelegate(m metric.Meter) { + ctr, err := m.Float64Gauge(i.name, i.opts...) + if err != nil { + GetErrorHandler().Handle(err) + return + } + i.delegate.Store(ctr) +} + +func (i *sfGauge) Record(ctx context.Context, x float64, opts ...metric.RecordOption) { + if ctr := i.delegate.Load(); ctr != nil { + ctr.(metric.Float64Gauge).Record(ctx, x, opts...) + } +} + type siCounter struct { embedded.Int64Counter @@ -369,3 +384,29 @@ func (i *siHistogram) Record(ctx context.Context, x int64, opts ...metric.Record ctr.(metric.Int64Histogram).Record(ctx, x, opts...) } } + +type siGauge struct { + embedded.Int64Gauge + + name string + opts []metric.Int64GaugeOption + + delegate atomic.Value // metric.Int64Gauge +} + +var _ metric.Int64Gauge = (*siGauge)(nil) + +func (i *siGauge) setDelegate(m metric.Meter) { + ctr, err := m.Int64Gauge(i.name, i.opts...) + if err != nil { + GetErrorHandler().Handle(err) + return + } + i.delegate.Store(ctr) +} + +func (i *siGauge) Record(ctx context.Context, x int64, opts ...metric.RecordOption) { + if ctr := i.delegate.Load(); ctr != nil { + ctr.(metric.Int64Gauge).Record(ctx, x, opts...) + } +} diff --git a/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go b/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go index c6f305a2b76a..adbca7d34775 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package global // import "go.opentelemetry.io/otel/internal/global" @@ -23,17 +12,20 @@ import ( "github.com/go-logr/stdr" ) -// globalLogger is the logging interface used within the otel api and sdk provide details of the internals. +// globalLogger holds a reference to the [logr.Logger] used within +// go.opentelemetry.io/otel. // // The default logger uses stdr which is backed by the standard `log.Logger` // interface. This logger will only show messages at the Error Level. -var globalLogger atomic.Pointer[logr.Logger] +var globalLogger = func() *atomic.Pointer[logr.Logger] { + l := stdr.New(log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile)) -func init() { - SetLogger(stdr.New(log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile))) -} + p := new(atomic.Pointer[logr.Logger]) + p.Store(&l) + return p +}() -// SetLogger overrides the globalLogger with l. +// SetLogger sets the global Logger to l. // // To see Warn messages use a logger with `l.V(1).Enabled() == true` // To see Info messages use a logger with `l.V(4).Enabled() == true` @@ -42,28 +34,29 @@ func SetLogger(l logr.Logger) { globalLogger.Store(&l) } -func getLogger() logr.Logger { +// GetLogger returns the global logger. +func GetLogger() logr.Logger { return *globalLogger.Load() } // Info prints messages about the general state of the API or SDK. // This should usually be less than 5 messages a minute. func Info(msg string, keysAndValues ...interface{}) { - getLogger().V(4).Info(msg, keysAndValues...) + GetLogger().V(4).Info(msg, keysAndValues...) } // Error prints messages about exceptional states of the API or SDK. func Error(err error, msg string, keysAndValues ...interface{}) { - getLogger().Error(err, msg, keysAndValues...) + GetLogger().Error(err, msg, keysAndValues...) } // Debug prints messages about all internal changes in the API or SDK. func Debug(msg string, keysAndValues ...interface{}) { - getLogger().V(8).Info(msg, keysAndValues...) + GetLogger().V(8).Info(msg, keysAndValues...) } // Warn prints messages about warnings in the API or SDK. // Not an error but is likely more important than an informational event. func Warn(msg string, keysAndValues ...interface{}) { - getLogger().V(1).Info(msg, keysAndValues...) + GetLogger().V(1).Info(msg, keysAndValues...) } diff --git a/vendor/go.opentelemetry.io/otel/internal/global/meter.go b/vendor/go.opentelemetry.io/otel/internal/global/meter.go index 7ed61c0e256c..a6acd8dca66e 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/meter.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/meter.go @@ -1,23 +1,13 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package global // import "go.opentelemetry.io/otel/internal/global" import ( "container/list" + "context" + "reflect" "sync" - "sync/atomic" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/metric/embedded" @@ -76,6 +66,8 @@ func (p *meterProvider) Meter(name string, opts ...metric.MeterOption) metric.Me key := il{ name: name, version: c.InstrumentationVersion(), + schema: c.SchemaURL(), + attrs: c.InstrumentationAttributes(), } if p.meters == nil { @@ -86,7 +78,7 @@ func (p *meterProvider) Meter(name string, opts ...metric.MeterOption) metric.Me return val } - t := &meter{name: name, opts: opts} + t := &meter{name: name, opts: opts, instruments: make(map[instID]delegatedInstrument)} p.meters[key] = t return t } @@ -102,17 +94,29 @@ type meter struct { opts []metric.MeterOption mtx sync.Mutex - instruments []delegatedInstrument + instruments map[instID]delegatedInstrument registry list.List - delegate atomic.Value // metric.Meter + delegate metric.Meter } type delegatedInstrument interface { setDelegate(metric.Meter) } +// instID are the identifying properties of a instrument. +type instID struct { + // name is the name of the stream. + name string + // description is the description of the stream. + description string + // kind defines the functional group of the instrument. + kind reflect.Type + // unit is the unit of the stream. + unit string +} + // setDelegate configures m to delegate all Meter functionality to Meters // created by provider. // @@ -120,12 +124,12 @@ type delegatedInstrument interface { // // It is guaranteed by the caller that this happens only once. func (m *meter) setDelegate(provider metric.MeterProvider) { - meter := provider.Meter(m.name, m.opts...) - m.delegate.Store(meter) - m.mtx.Lock() defer m.mtx.Unlock() + meter := provider.Meter(m.name, m.opts...) + m.delegate = meter + for _, inst := range m.instruments { inst.setDelegate(meter) } @@ -143,147 +147,336 @@ func (m *meter) setDelegate(provider metric.MeterProvider) { } func (m *meter) Int64Counter(name string, options ...metric.Int64CounterOption) (metric.Int64Counter, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Int64Counter(name, options...) - } m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Int64Counter(name, options...) + } + + cfg := metric.NewInt64CounterConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*siCounter)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Int64Counter), nil + } i := &siCounter{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } func (m *meter) Int64UpDownCounter(name string, options ...metric.Int64UpDownCounterOption) (metric.Int64UpDownCounter, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Int64UpDownCounter(name, options...) - } m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Int64UpDownCounter(name, options...) + } + + cfg := metric.NewInt64UpDownCounterConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*siUpDownCounter)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Int64UpDownCounter), nil + } i := &siUpDownCounter{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } func (m *meter) Int64Histogram(name string, options ...metric.Int64HistogramOption) (metric.Int64Histogram, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Int64Histogram(name, options...) - } m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Int64Histogram(name, options...) + } + + cfg := metric.NewInt64HistogramConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*siHistogram)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Int64Histogram), nil + } i := &siHistogram{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } -func (m *meter) Int64ObservableCounter(name string, options ...metric.Int64ObservableCounterOption) (metric.Int64ObservableCounter, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Int64ObservableCounter(name, options...) +func (m *meter) Int64Gauge(name string, options ...metric.Int64GaugeOption) (metric.Int64Gauge, error) { + m.mtx.Lock() + defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Int64Gauge(name, options...) } + + cfg := metric.NewInt64GaugeConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*siGauge)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Int64Gauge), nil + } + i := &siGauge{name: name, opts: options} + m.instruments[id] = i + return i, nil +} + +func (m *meter) Int64ObservableCounter(name string, options ...metric.Int64ObservableCounterOption) (metric.Int64ObservableCounter, error) { m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Int64ObservableCounter(name, options...) + } + + cfg := metric.NewInt64ObservableCounterConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*aiCounter)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Int64ObservableCounter), nil + } i := &aiCounter{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } func (m *meter) Int64ObservableUpDownCounter(name string, options ...metric.Int64ObservableUpDownCounterOption) (metric.Int64ObservableUpDownCounter, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Int64ObservableUpDownCounter(name, options...) - } m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Int64ObservableUpDownCounter(name, options...) + } + + cfg := metric.NewInt64ObservableUpDownCounterConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*aiUpDownCounter)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Int64ObservableUpDownCounter), nil + } i := &aiUpDownCounter{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } func (m *meter) Int64ObservableGauge(name string, options ...metric.Int64ObservableGaugeOption) (metric.Int64ObservableGauge, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Int64ObservableGauge(name, options...) - } m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Int64ObservableGauge(name, options...) + } + + cfg := metric.NewInt64ObservableGaugeConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*aiGauge)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Int64ObservableGauge), nil + } i := &aiGauge{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } func (m *meter) Float64Counter(name string, options ...metric.Float64CounterOption) (metric.Float64Counter, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Float64Counter(name, options...) - } m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Float64Counter(name, options...) + } + + cfg := metric.NewFloat64CounterConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*sfCounter)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Float64Counter), nil + } i := &sfCounter{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } func (m *meter) Float64UpDownCounter(name string, options ...metric.Float64UpDownCounterOption) (metric.Float64UpDownCounter, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Float64UpDownCounter(name, options...) - } m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Float64UpDownCounter(name, options...) + } + + cfg := metric.NewFloat64UpDownCounterConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*sfUpDownCounter)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Float64UpDownCounter), nil + } i := &sfUpDownCounter{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } func (m *meter) Float64Histogram(name string, options ...metric.Float64HistogramOption) (metric.Float64Histogram, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Float64Histogram(name, options...) - } m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Float64Histogram(name, options...) + } + + cfg := metric.NewFloat64HistogramConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*sfHistogram)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Float64Histogram), nil + } i := &sfHistogram{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } -func (m *meter) Float64ObservableCounter(name string, options ...metric.Float64ObservableCounterOption) (metric.Float64ObservableCounter, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Float64ObservableCounter(name, options...) +func (m *meter) Float64Gauge(name string, options ...metric.Float64GaugeOption) (metric.Float64Gauge, error) { + m.mtx.Lock() + defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Float64Gauge(name, options...) + } + + cfg := metric.NewFloat64GaugeConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*sfGauge)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), } + if f, ok := m.instruments[id]; ok { + return f.(metric.Float64Gauge), nil + } + i := &sfGauge{name: name, opts: options} + m.instruments[id] = i + return i, nil +} + +func (m *meter) Float64ObservableCounter(name string, options ...metric.Float64ObservableCounterOption) (metric.Float64ObservableCounter, error) { m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Float64ObservableCounter(name, options...) + } + + cfg := metric.NewFloat64ObservableCounterConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*afCounter)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Float64ObservableCounter), nil + } i := &afCounter{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } func (m *meter) Float64ObservableUpDownCounter(name string, options ...metric.Float64ObservableUpDownCounterOption) (metric.Float64ObservableUpDownCounter, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Float64ObservableUpDownCounter(name, options...) - } m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Float64ObservableUpDownCounter(name, options...) + } + + cfg := metric.NewFloat64ObservableUpDownCounterConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*afUpDownCounter)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Float64ObservableUpDownCounter), nil + } i := &afUpDownCounter{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } func (m *meter) Float64ObservableGauge(name string, options ...metric.Float64ObservableGaugeOption) (metric.Float64ObservableGauge, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - return del.Float64ObservableGauge(name, options...) - } m.mtx.Lock() defer m.mtx.Unlock() + + if m.delegate != nil { + return m.delegate.Float64ObservableGauge(name, options...) + } + + cfg := metric.NewFloat64ObservableGaugeConfig(options...) + id := instID{ + name: name, + kind: reflect.TypeOf((*afGauge)(nil)), + description: cfg.Description(), + unit: cfg.Unit(), + } + if f, ok := m.instruments[id]; ok { + return f.(metric.Float64ObservableGauge), nil + } i := &afGauge{name: name, opts: options} - m.instruments = append(m.instruments, i) + m.instruments[id] = i return i, nil } // RegisterCallback captures the function that will be called during Collect. func (m *meter) RegisterCallback(f metric.Callback, insts ...metric.Observable) (metric.Registration, error) { - if del, ok := m.delegate.Load().(metric.Meter); ok { - insts = unwrapInstruments(insts) - return del.RegisterCallback(f, insts...) - } - m.mtx.Lock() defer m.mtx.Unlock() + if m.delegate != nil { + return m.delegate.RegisterCallback(unwrapCallback(f), unwrapInstruments(insts)...) + } + reg := ®istration{instruments: insts, function: f} e := m.registry.PushBack(reg) reg.unreg = func() error { @@ -295,15 +488,11 @@ func (m *meter) RegisterCallback(f metric.Callback, insts ...metric.Observable) return reg, nil } -type wrapped interface { - unwrap() metric.Observable -} - func unwrapInstruments(instruments []metric.Observable) []metric.Observable { out := make([]metric.Observable, 0, len(instruments)) for _, inst := range instruments { - if in, ok := inst.(wrapped); ok { + if in, ok := inst.(unwrapper); ok { out = append(out, in.unwrap()) } else { out = append(out, inst) @@ -323,9 +512,61 @@ type registration struct { unregMu sync.Mutex } -func (c *registration) setDelegate(m metric.Meter) { - insts := unwrapInstruments(c.instruments) +type unwrapObs struct { + embedded.Observer + obs metric.Observer +} +// unwrapFloat64Observable returns an expected metric.Float64Observable after +// unwrapping the global object. +func unwrapFloat64Observable(inst metric.Float64Observable) metric.Float64Observable { + if unwrapped, ok := inst.(unwrapper); ok { + if floatObs, ok := unwrapped.unwrap().(metric.Float64Observable); ok { + // Note: if the unwrapped object does not + // unwrap as an observable for either of the + // predicates here, it means an internal bug in + // this package. We avoid logging an error in + // this case, because the SDK has to try its + // own type conversion on the object. The SDK + // will see this and be forced to respond with + // its own error. + // + // This code uses a double-nested if statement + // to avoid creating a branch that is + // impossible to cover. + inst = floatObs + } + } + return inst +} + +// unwrapInt64Observable returns an expected metric.Int64Observable after +// unwrapping the global object. +func unwrapInt64Observable(inst metric.Int64Observable) metric.Int64Observable { + if unwrapped, ok := inst.(unwrapper); ok { + if unint, ok := unwrapped.unwrap().(metric.Int64Observable); ok { + // See the comment in unwrapFloat64Observable(). + inst = unint + } + } + return inst +} + +func (uo *unwrapObs) ObserveFloat64(inst metric.Float64Observable, value float64, opts ...metric.ObserveOption) { + uo.obs.ObserveFloat64(unwrapFloat64Observable(inst), value, opts...) +} + +func (uo *unwrapObs) ObserveInt64(inst metric.Int64Observable, value int64, opts ...metric.ObserveOption) { + uo.obs.ObserveInt64(unwrapInt64Observable(inst), value, opts...) +} + +func unwrapCallback(f metric.Callback) metric.Callback { + return func(ctx context.Context, obs metric.Observer) error { + return f(ctx, &unwrapObs{obs: obs}) + } +} + +func (c *registration) setDelegate(m metric.Meter) { c.unregMu.Lock() defer c.unregMu.Unlock() @@ -334,9 +575,10 @@ func (c *registration) setDelegate(m metric.Meter) { return } - reg, err := m.RegisterCallback(c.function, insts...) + reg, err := m.RegisterCallback(unwrapCallback(c.function), unwrapInstruments(c.instruments)...) if err != nil { GetErrorHandler().Handle(err) + return } c.unreg = reg.Unregister diff --git a/vendor/go.opentelemetry.io/otel/internal/global/propagator.go b/vendor/go.opentelemetry.io/otel/internal/global/propagator.go index 06bac35c2fe5..38560ff9915f 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/propagator.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/propagator.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package global // import "go.opentelemetry.io/otel/internal/global" diff --git a/vendor/go.opentelemetry.io/otel/internal/global/state.go b/vendor/go.opentelemetry.io/otel/internal/global/state.go index 386c8bfdc085..204ea142a505 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/state.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/state.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package global // import "go.opentelemetry.io/otel/internal/global" @@ -25,6 +14,10 @@ import ( ) type ( + errorHandlerHolder struct { + eh ErrorHandler + } + tracerProviderHolder struct { tp trace.TracerProvider } @@ -39,15 +32,59 @@ type ( ) var ( + globalErrorHandler = defaultErrorHandler() globalTracer = defaultTracerValue() globalPropagators = defaultPropagatorsValue() globalMeterProvider = defaultMeterProvider() + delegateErrorHandlerOnce sync.Once delegateTraceOnce sync.Once delegateTextMapPropagatorOnce sync.Once delegateMeterOnce sync.Once ) +// GetErrorHandler returns the global ErrorHandler instance. +// +// The default ErrorHandler instance returned will log all errors to STDERR +// until an override ErrorHandler is set with SetErrorHandler. All +// ErrorHandler returned prior to this will automatically forward errors to +// the set instance instead of logging. +// +// Subsequent calls to SetErrorHandler after the first will not forward errors +// to the new ErrorHandler for prior returned instances. +func GetErrorHandler() ErrorHandler { + return globalErrorHandler.Load().(errorHandlerHolder).eh +} + +// SetErrorHandler sets the global ErrorHandler to h. +// +// The first time this is called all ErrorHandler previously returned from +// GetErrorHandler will send errors to h instead of the default logging +// ErrorHandler. Subsequent calls will set the global ErrorHandler, but not +// delegate errors to h. +func SetErrorHandler(h ErrorHandler) { + current := GetErrorHandler() + + if _, cOk := current.(*ErrDelegator); cOk { + if _, ehOk := h.(*ErrDelegator); ehOk && current == h { + // Do not assign to the delegate of the default ErrDelegator to be + // itself. + Error( + errors.New("no ErrorHandler delegate configured"), + "ErrorHandler remains its current value.", + ) + return + } + } + + delegateErrorHandlerOnce.Do(func() { + if def, ok := current.(*ErrDelegator); ok { + def.setDelegate(h) + } + }) + globalErrorHandler.Store(errorHandlerHolder{eh: h}) +} + // TracerProvider is the internal implementation for global.TracerProvider. func TracerProvider() trace.TracerProvider { return globalTracer.Load().(tracerProviderHolder).tp @@ -137,6 +174,12 @@ func SetMeterProvider(mp metric.MeterProvider) { globalMeterProvider.Store(meterProviderHolder{mp: mp}) } +func defaultErrorHandler() *atomic.Value { + v := &atomic.Value{} + v.Store(errorHandlerHolder{eh: &ErrDelegator{}}) + return v +} + func defaultTracerValue() *atomic.Value { v := &atomic.Value{} v.Store(tracerProviderHolder{tp: &tracerProvider{}}) diff --git a/vendor/go.opentelemetry.io/otel/internal/global/trace.go b/vendor/go.opentelemetry.io/otel/internal/global/trace.go index 3f61ec12a34f..8982aa0dc56e 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/trace.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/trace.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package global // import "go.opentelemetry.io/otel/internal/global" @@ -36,6 +25,7 @@ import ( "sync" "sync/atomic" + "go.opentelemetry.io/auto/sdk" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" @@ -97,6 +87,8 @@ func (p *tracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.T key := il{ name: name, version: c.InstrumentationVersion(), + schema: c.SchemaURL(), + attrs: c.InstrumentationAttributes(), } if p.tracers == nil { @@ -115,6 +107,8 @@ func (p *tracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.T type il struct { name string version string + schema string + attrs attribute.Set } // tracer is a placeholder for a trace.Tracer. @@ -152,6 +146,30 @@ func (t *tracer) Start(ctx context.Context, name string, opts ...trace.SpanStart return delegate.(trace.Tracer).Start(ctx, name, opts...) } + return t.newSpan(ctx, autoInstEnabled, name, opts) +} + +// autoInstEnabled determines if the auto-instrumentation SDK span is returned +// from the tracer when not backed by a delegate and auto-instrumentation has +// attached to this process. +// +// The auto-instrumentation is expected to overwrite this value to true when it +// attaches. By default, this will point to false and mean a tracer will return +// a nonRecordingSpan by default. +var autoInstEnabled = new(bool) + +func (t *tracer) newSpan(ctx context.Context, autoSpan *bool, name string, opts []trace.SpanStartOption) (context.Context, trace.Span) { + // autoInstEnabled is passed to newSpan via the autoSpan parameter. This is + // so the auto-instrumentation can define a uprobe for (*t).newSpan and be + // provided with the address of the bool autoInstEnabled points to. It + // needs to be a parameter so that pointer can be reliably determined, it + // should not be read from the global. + + if *autoSpan { + tracer := sdk.TracerProvider().Tracer(t.name, t.opts...) + return tracer.Start(ctx, name, opts...) + } + s := nonRecordingSpan{sc: trace.SpanContextFromContext(ctx), tracer: t} ctx = trace.ContextWithSpan(ctx, s) return ctx, s @@ -193,6 +211,9 @@ func (nonRecordingSpan) RecordError(error, ...trace.EventOption) {} // AddEvent does nothing. func (nonRecordingSpan) AddEvent(string, ...trace.EventOption) {} +// AddLink does nothing. +func (nonRecordingSpan) AddLink(trace.Link) {} + // SetName does nothing. func (nonRecordingSpan) SetName(string) {} diff --git a/vendor/go.opentelemetry.io/otel/internal/rawhelpers.go b/vendor/go.opentelemetry.io/otel/internal/rawhelpers.go index e07e7940004c..b2fe3e41d3b1 100644 --- a/vendor/go.opentelemetry.io/otel/internal/rawhelpers.go +++ b/vendor/go.opentelemetry.io/otel/internal/rawhelpers.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package internal // import "go.opentelemetry.io/otel/internal" @@ -31,11 +20,13 @@ func RawToBool(r uint64) bool { } func Int64ToRaw(i int64) uint64 { - return uint64(i) + // Assumes original was a valid int64 (overflow not checked). + return uint64(i) // nolint: gosec } func RawToInt64(r uint64) int64 { - return int64(r) + // Assumes original was a valid int64 (overflow not checked). + return int64(r) // nolint: gosec } func Float64ToRaw(f float64) uint64 { @@ -47,9 +38,11 @@ func RawToFloat64(r uint64) float64 { } func RawPtrToFloat64Ptr(r *uint64) *float64 { - return (*float64)(unsafe.Pointer(r)) + // Assumes original was a valid *float64 (overflow not checked). + return (*float64)(unsafe.Pointer(r)) // nolint: gosec } func RawPtrToInt64Ptr(r *uint64) *int64 { - return (*int64)(unsafe.Pointer(r)) + // Assumes original was a valid *int64 (overflow not checked). + return (*int64)(unsafe.Pointer(r)) // nolint: gosec } diff --git a/vendor/go.opentelemetry.io/otel/internal_logging.go b/vendor/go.opentelemetry.io/otel/internal_logging.go index c4f8acd5d837..6de7f2e4d886 100644 --- a/vendor/go.opentelemetry.io/otel/internal_logging.go +++ b/vendor/go.opentelemetry.io/otel/internal_logging.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otel // import "go.opentelemetry.io/otel" diff --git a/vendor/go.opentelemetry.io/otel/metric.go b/vendor/go.opentelemetry.io/otel/metric.go index f955171951fd..1e6473b32f35 100644 --- a/vendor/go.opentelemetry.io/otel/metric.go +++ b/vendor/go.opentelemetry.io/otel/metric.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otel // import "go.opentelemetry.io/otel" diff --git a/vendor/go.opentelemetry.io/otel/metric/README.md b/vendor/go.opentelemetry.io/otel/metric/README.md new file mode 100644 index 000000000000..0cf902e01f0b --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/metric/README.md @@ -0,0 +1,3 @@ +# Metric API + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/metric)](https://pkg.go.dev/go.opentelemetry.io/otel/metric) diff --git a/vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go b/vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go index 072baa8e8d0a..f8435d8f288d 100644 --- a/vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go +++ b/vendor/go.opentelemetry.io/otel/metric/asyncfloat64.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package metric // import "go.opentelemetry.io/otel/metric" @@ -50,7 +39,7 @@ type Float64ObservableCounter interface { } // Float64ObservableCounterConfig contains options for asynchronous counter -// instruments that record int64 values. +// instruments that record float64 values. type Float64ObservableCounterConfig struct { description string unit string @@ -108,7 +97,7 @@ type Float64ObservableUpDownCounter interface { } // Float64ObservableUpDownCounterConfig contains options for asynchronous -// counter instruments that record int64 values. +// counter instruments that record float64 values. type Float64ObservableUpDownCounterConfig struct { description string unit string @@ -165,7 +154,7 @@ type Float64ObservableGauge interface { } // Float64ObservableGaugeConfig contains options for asynchronous counter -// instruments that record int64 values. +// instruments that record float64 values. type Float64ObservableGaugeConfig struct { description string unit string @@ -224,7 +213,7 @@ type Float64Observer interface { } // Float64Callback is a function registered with a Meter that makes -// observations for a Float64Observerable instrument it is registered with. +// observations for a Float64Observable instrument it is registered with. // Calls to the Float64Observer record measurement values for the // Float64Observable. // diff --git a/vendor/go.opentelemetry.io/otel/metric/asyncint64.go b/vendor/go.opentelemetry.io/otel/metric/asyncint64.go index 9bd6ebf02054..e079aaef169e 100644 --- a/vendor/go.opentelemetry.io/otel/metric/asyncint64.go +++ b/vendor/go.opentelemetry.io/otel/metric/asyncint64.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package metric // import "go.opentelemetry.io/otel/metric" @@ -223,7 +212,7 @@ type Int64Observer interface { } // Int64Callback is a function registered with a Meter that makes observations -// for an Int64Observerable instrument it is registered with. Calls to the +// for an Int64Observable instrument it is registered with. Calls to the // Int64Observer record measurement values for the Int64Observable. // // The function needs to complete in a finite amount of time and the deadline diff --git a/vendor/go.opentelemetry.io/otel/metric/config.go b/vendor/go.opentelemetry.io/otel/metric/config.go index 778ad2d748b5..d9e3b13e4d13 100644 --- a/vendor/go.opentelemetry.io/otel/metric/config.go +++ b/vendor/go.opentelemetry.io/otel/metric/config.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package metric // import "go.opentelemetry.io/otel/metric" diff --git a/vendor/go.opentelemetry.io/otel/metric/doc.go b/vendor/go.opentelemetry.io/otel/metric/doc.go index 54716e13b355..f153745b005f 100644 --- a/vendor/go.opentelemetry.io/otel/metric/doc.go +++ b/vendor/go.opentelemetry.io/otel/metric/doc.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 /* Package metric provides the OpenTelemetry API used to measure metrics about @@ -68,6 +57,23 @@ asynchronous measurement, a Gauge ([Int64ObservableGauge] and See the [OpenTelemetry documentation] for more information about instruments and their intended use. +# Instrument Name + +OpenTelemetry defines an [instrument name syntax] that restricts what +instrument names are allowed. + +Instrument names should ... + + - Not be empty. + - Have an alphabetic character as their first letter. + - Have any letter after the first be an alphanumeric character, ‘_’, ‘.’, + ‘-’, or ‘/’. + - Have a maximum length of 255 letters. + +To ensure compatibility with observability platforms, all instruments created +need to conform to this syntax. Not all implementations of the API will validate +these names, it is the callers responsibility to ensure compliance. + # Measurements Measurements are made by recording values and information about the values with @@ -164,6 +170,7 @@ It is strongly recommended that authors only embed That implementation is the only one OpenTelemetry authors can guarantee will fully implement all the API interfaces when a user updates their API. +[instrument name syntax]: https://opentelemetry.io/docs/specs/otel/metrics/api/#instrument-name-syntax [OpenTelemetry documentation]: https://opentelemetry.io/docs/concepts/signals/metrics/ [GetMeterProvider]: https://pkg.go.dev/go.opentelemetry.io/otel#GetMeterProvider */ diff --git a/vendor/go.opentelemetry.io/otel/metric/embedded/README.md b/vendor/go.opentelemetry.io/otel/metric/embedded/README.md new file mode 100644 index 000000000000..1f6e0efa73d8 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/metric/embedded/README.md @@ -0,0 +1,3 @@ +# Metric Embedded + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/metric/embedded)](https://pkg.go.dev/go.opentelemetry.io/otel/metric/embedded) diff --git a/vendor/go.opentelemetry.io/otel/metric/embedded/embedded.go b/vendor/go.opentelemetry.io/otel/metric/embedded/embedded.go index ae0bdbd2e645..1a9dc68093fe 100644 --- a/vendor/go.opentelemetry.io/otel/metric/embedded/embedded.go +++ b/vendor/go.opentelemetry.io/otel/metric/embedded/embedded.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 // Package embedded provides interfaces embedded within the [OpenTelemetry // metric API]. @@ -113,6 +102,16 @@ type Float64Counter interface{ float64Counter() } // the API package). type Float64Histogram interface{ float64Histogram() } +// Float64Gauge is embedded in [go.opentelemetry.io/otel/metric.Float64Gauge]. +// +// Embed this interface in your implementation of the +// [go.opentelemetry.io/otel/metric.Float64Gauge] if you want users to +// experience a compilation error, signaling they need to update to your latest +// implementation, when the [go.opentelemetry.io/otel/metric.Float64Gauge] +// interface is extended (which is something that can happen without a major +// version bump of the API package). +type Float64Gauge interface{ float64Gauge() } + // Float64ObservableCounter is embedded in // [go.opentelemetry.io/otel/metric.Float64ObservableCounter]. // @@ -185,6 +184,16 @@ type Int64Counter interface{ int64Counter() } // the API package). type Int64Histogram interface{ int64Histogram() } +// Int64Gauge is embedded in [go.opentelemetry.io/otel/metric.Int64Gauge]. +// +// Embed this interface in your implementation of the +// [go.opentelemetry.io/otel/metric.Int64Gauge] if you want users to experience +// a compilation error, signaling they need to update to your latest +// implementation, when the [go.opentelemetry.io/otel/metric.Int64Gauge] +// interface is extended (which is something that can happen without a major +// version bump of the API package). +type Int64Gauge interface{ int64Gauge() } + // Int64ObservableCounter is embedded in // [go.opentelemetry.io/otel/metric.Int64ObservableCounter]. // diff --git a/vendor/go.opentelemetry.io/otel/metric/instrument.go b/vendor/go.opentelemetry.io/otel/metric/instrument.go index be89cd533417..a535782e1d9a 100644 --- a/vendor/go.opentelemetry.io/otel/metric/instrument.go +++ b/vendor/go.opentelemetry.io/otel/metric/instrument.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package metric // import "go.opentelemetry.io/otel/metric" @@ -27,6 +16,7 @@ type InstrumentOption interface { Int64CounterOption Int64UpDownCounterOption Int64HistogramOption + Int64GaugeOption Int64ObservableCounterOption Int64ObservableUpDownCounterOption Int64ObservableGaugeOption @@ -34,6 +24,7 @@ type InstrumentOption interface { Float64CounterOption Float64UpDownCounterOption Float64HistogramOption + Float64GaugeOption Float64ObservableCounterOption Float64ObservableUpDownCounterOption Float64ObservableGaugeOption @@ -62,6 +53,11 @@ func (o descOpt) applyFloat64Histogram(c Float64HistogramConfig) Float64Histogra return c } +func (o descOpt) applyFloat64Gauge(c Float64GaugeConfig) Float64GaugeConfig { + c.description = string(o) + return c +} + func (o descOpt) applyFloat64ObservableCounter(c Float64ObservableCounterConfig) Float64ObservableCounterConfig { c.description = string(o) return c @@ -92,6 +88,11 @@ func (o descOpt) applyInt64Histogram(c Int64HistogramConfig) Int64HistogramConfi return c } +func (o descOpt) applyInt64Gauge(c Int64GaugeConfig) Int64GaugeConfig { + c.description = string(o) + return c +} + func (o descOpt) applyInt64ObservableCounter(c Int64ObservableCounterConfig) Int64ObservableCounterConfig { c.description = string(o) return c @@ -127,6 +128,11 @@ func (o unitOpt) applyFloat64Histogram(c Float64HistogramConfig) Float64Histogra return c } +func (o unitOpt) applyFloat64Gauge(c Float64GaugeConfig) Float64GaugeConfig { + c.unit = string(o) + return c +} + func (o unitOpt) applyFloat64ObservableCounter(c Float64ObservableCounterConfig) Float64ObservableCounterConfig { c.unit = string(o) return c @@ -157,6 +163,11 @@ func (o unitOpt) applyInt64Histogram(c Int64HistogramConfig) Int64HistogramConfi return c } +func (o unitOpt) applyInt64Gauge(c Int64GaugeConfig) Int64GaugeConfig { + c.unit = string(o) + return c +} + func (o unitOpt) applyInt64ObservableCounter(c Int64ObservableCounterConfig) Int64ObservableCounterConfig { c.unit = string(o) return c @@ -340,7 +351,7 @@ func WithAttributeSet(attributes attribute.Set) MeasurementOption { // // cp := make([]attribute.KeyValue, len(attributes)) // copy(cp, attributes) -// WithAttributes(attribute.NewSet(cp...)) +// WithAttributeSet(attribute.NewSet(cp...)) // // [attribute.NewSet] may modify the passed attributes so this will make a copy // of attributes before creating a set in order to ensure this function is diff --git a/vendor/go.opentelemetry.io/otel/metric/meter.go b/vendor/go.opentelemetry.io/otel/metric/meter.go index 2520bc74af17..14e08c24a4be 100644 --- a/vendor/go.opentelemetry.io/otel/metric/meter.go +++ b/vendor/go.opentelemetry.io/otel/metric/meter.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package metric // import "go.opentelemetry.io/otel/metric" @@ -58,17 +47,41 @@ type Meter interface { // Int64Counter returns a new Int64Counter instrument identified by name // and configured with options. The instrument is used to synchronously // record increasing int64 measurements during a computational operation. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Int64Counter(name string, options ...Int64CounterOption) (Int64Counter, error) + // Int64UpDownCounter returns a new Int64UpDownCounter instrument // identified by name and configured with options. The instrument is used // to synchronously record int64 measurements during a computational // operation. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Int64UpDownCounter(name string, options ...Int64UpDownCounterOption) (Int64UpDownCounter, error) + // Int64Histogram returns a new Int64Histogram instrument identified by // name and configured with options. The instrument is used to // synchronously record the distribution of int64 measurements during a // computational operation. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Int64Histogram(name string, options ...Int64HistogramOption) (Int64Histogram, error) + + // Int64Gauge returns a new Int64Gauge instrument identified by name and + // configured with options. The instrument is used to synchronously record + // instantaneous int64 measurements during a computational operation. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. + Int64Gauge(name string, options ...Int64GaugeOption) (Int64Gauge, error) + // Int64ObservableCounter returns a new Int64ObservableCounter identified // by name and configured with options. The instrument is used to // asynchronously record increasing int64 measurements once per a @@ -78,7 +91,12 @@ type Meter interface { // the WithInt64Callback option to register the callback here, or use the // RegisterCallback method of this Meter to register one later. See the // Measurements section of the package documentation for more information. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Int64ObservableCounter(name string, options ...Int64ObservableCounterOption) (Int64ObservableCounter, error) + // Int64ObservableUpDownCounter returns a new Int64ObservableUpDownCounter // instrument identified by name and configured with options. The // instrument is used to asynchronously record int64 measurements once per @@ -88,7 +106,12 @@ type Meter interface { // the WithInt64Callback option to register the callback here, or use the // RegisterCallback method of this Meter to register one later. See the // Measurements section of the package documentation for more information. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Int64ObservableUpDownCounter(name string, options ...Int64ObservableUpDownCounterOption) (Int64ObservableUpDownCounter, error) + // Int64ObservableGauge returns a new Int64ObservableGauge instrument // identified by name and configured with options. The instrument is used // to asynchronously record instantaneous int64 measurements once per a @@ -98,23 +121,51 @@ type Meter interface { // the WithInt64Callback option to register the callback here, or use the // RegisterCallback method of this Meter to register one later. See the // Measurements section of the package documentation for more information. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Int64ObservableGauge(name string, options ...Int64ObservableGaugeOption) (Int64ObservableGauge, error) // Float64Counter returns a new Float64Counter instrument identified by // name and configured with options. The instrument is used to // synchronously record increasing float64 measurements during a // computational operation. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Float64Counter(name string, options ...Float64CounterOption) (Float64Counter, error) + // Float64UpDownCounter returns a new Float64UpDownCounter instrument // identified by name and configured with options. The instrument is used // to synchronously record float64 measurements during a computational // operation. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Float64UpDownCounter(name string, options ...Float64UpDownCounterOption) (Float64UpDownCounter, error) + // Float64Histogram returns a new Float64Histogram instrument identified by // name and configured with options. The instrument is used to // synchronously record the distribution of float64 measurements during a // computational operation. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Float64Histogram(name string, options ...Float64HistogramOption) (Float64Histogram, error) + + // Float64Gauge returns a new Float64Gauge instrument identified by name and + // configured with options. The instrument is used to synchronously record + // instantaneous float64 measurements during a computational operation. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. + Float64Gauge(name string, options ...Float64GaugeOption) (Float64Gauge, error) + // Float64ObservableCounter returns a new Float64ObservableCounter // instrument identified by name and configured with options. The // instrument is used to asynchronously record increasing float64 @@ -124,7 +175,12 @@ type Meter interface { // the WithFloat64Callback option to register the callback here, or use the // RegisterCallback method of this Meter to register one later. See the // Measurements section of the package documentation for more information. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Float64ObservableCounter(name string, options ...Float64ObservableCounterOption) (Float64ObservableCounter, error) + // Float64ObservableUpDownCounter returns a new // Float64ObservableUpDownCounter instrument identified by name and // configured with options. The instrument is used to asynchronously record @@ -134,7 +190,12 @@ type Meter interface { // the WithFloat64Callback option to register the callback here, or use the // RegisterCallback method of this Meter to register one later. See the // Measurements section of the package documentation for more information. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Float64ObservableUpDownCounter(name string, options ...Float64ObservableUpDownCounterOption) (Float64ObservableUpDownCounter, error) + // Float64ObservableGauge returns a new Float64ObservableGauge instrument // identified by name and configured with options. The instrument is used // to asynchronously record instantaneous float64 measurements once per a @@ -144,6 +205,10 @@ type Meter interface { // the WithFloat64Callback option to register the callback here, or use the // RegisterCallback method of this Meter to register one later. See the // Measurements section of the package documentation for more information. + // + // The name needs to conform to the OpenTelemetry instrument name syntax. + // See the Instrument Name section of the package documentation for more + // information. Float64ObservableGauge(name string, options ...Float64ObservableGaugeOption) (Float64ObservableGauge, error) // RegisterCallback registers f to be called during the collection of a @@ -189,6 +254,7 @@ type Observer interface { // ObserveFloat64 records the float64 value for obsrv. ObserveFloat64(obsrv Float64Observable, value float64, opts ...ObserveOption) + // ObserveInt64 records the int64 value for obsrv. ObserveInt64(obsrv Int64Observable, value int64, opts ...ObserveOption) } diff --git a/vendor/go.opentelemetry.io/otel/metric/noop/README.md b/vendor/go.opentelemetry.io/otel/metric/noop/README.md new file mode 100644 index 000000000000..bb89694356b8 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/metric/noop/README.md @@ -0,0 +1,3 @@ +# Metric Noop + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/metric/noop)](https://pkg.go.dev/go.opentelemetry.io/otel/metric/noop) diff --git a/vendor/go.opentelemetry.io/otel/metric/noop/noop.go b/vendor/go.opentelemetry.io/otel/metric/noop/noop.go new file mode 100644 index 000000000000..ca6fcbdc0996 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/metric/noop/noop.go @@ -0,0 +1,281 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Package noop provides an implementation of the OpenTelemetry metric API that +// produces no telemetry and minimizes used computation resources. +// +// Using this package to implement the OpenTelemetry metric API will +// effectively disable OpenTelemetry. +// +// This implementation can be embedded in other implementations of the +// OpenTelemetry metric API. Doing so will mean the implementation defaults to +// no operation for methods it does not implement. +package noop // import "go.opentelemetry.io/otel/metric/noop" + +import ( + "context" + + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/metric/embedded" +) + +var ( + // Compile-time check this implements the OpenTelemetry API. + + _ metric.MeterProvider = MeterProvider{} + _ metric.Meter = Meter{} + _ metric.Observer = Observer{} + _ metric.Registration = Registration{} + _ metric.Int64Counter = Int64Counter{} + _ metric.Float64Counter = Float64Counter{} + _ metric.Int64UpDownCounter = Int64UpDownCounter{} + _ metric.Float64UpDownCounter = Float64UpDownCounter{} + _ metric.Int64Histogram = Int64Histogram{} + _ metric.Float64Histogram = Float64Histogram{} + _ metric.Int64Gauge = Int64Gauge{} + _ metric.Float64Gauge = Float64Gauge{} + _ metric.Int64ObservableCounter = Int64ObservableCounter{} + _ metric.Float64ObservableCounter = Float64ObservableCounter{} + _ metric.Int64ObservableGauge = Int64ObservableGauge{} + _ metric.Float64ObservableGauge = Float64ObservableGauge{} + _ metric.Int64ObservableUpDownCounter = Int64ObservableUpDownCounter{} + _ metric.Float64ObservableUpDownCounter = Float64ObservableUpDownCounter{} + _ metric.Int64Observer = Int64Observer{} + _ metric.Float64Observer = Float64Observer{} +) + +// MeterProvider is an OpenTelemetry No-Op MeterProvider. +type MeterProvider struct{ embedded.MeterProvider } + +// NewMeterProvider returns a MeterProvider that does not record any telemetry. +func NewMeterProvider() MeterProvider { + return MeterProvider{} +} + +// Meter returns an OpenTelemetry Meter that does not record any telemetry. +func (MeterProvider) Meter(string, ...metric.MeterOption) metric.Meter { + return Meter{} +} + +// Meter is an OpenTelemetry No-Op Meter. +type Meter struct{ embedded.Meter } + +// Int64Counter returns a Counter used to record int64 measurements that +// produces no telemetry. +func (Meter) Int64Counter(string, ...metric.Int64CounterOption) (metric.Int64Counter, error) { + return Int64Counter{}, nil +} + +// Int64UpDownCounter returns an UpDownCounter used to record int64 +// measurements that produces no telemetry. +func (Meter) Int64UpDownCounter(string, ...metric.Int64UpDownCounterOption) (metric.Int64UpDownCounter, error) { + return Int64UpDownCounter{}, nil +} + +// Int64Histogram returns a Histogram used to record int64 measurements that +// produces no telemetry. +func (Meter) Int64Histogram(string, ...metric.Int64HistogramOption) (metric.Int64Histogram, error) { + return Int64Histogram{}, nil +} + +// Int64Gauge returns a Gauge used to record int64 measurements that +// produces no telemetry. +func (Meter) Int64Gauge(string, ...metric.Int64GaugeOption) (metric.Int64Gauge, error) { + return Int64Gauge{}, nil +} + +// Int64ObservableCounter returns an ObservableCounter used to record int64 +// measurements that produces no telemetry. +func (Meter) Int64ObservableCounter(string, ...metric.Int64ObservableCounterOption) (metric.Int64ObservableCounter, error) { + return Int64ObservableCounter{}, nil +} + +// Int64ObservableUpDownCounter returns an ObservableUpDownCounter used to +// record int64 measurements that produces no telemetry. +func (Meter) Int64ObservableUpDownCounter(string, ...metric.Int64ObservableUpDownCounterOption) (metric.Int64ObservableUpDownCounter, error) { + return Int64ObservableUpDownCounter{}, nil +} + +// Int64ObservableGauge returns an ObservableGauge used to record int64 +// measurements that produces no telemetry. +func (Meter) Int64ObservableGauge(string, ...metric.Int64ObservableGaugeOption) (metric.Int64ObservableGauge, error) { + return Int64ObservableGauge{}, nil +} + +// Float64Counter returns a Counter used to record int64 measurements that +// produces no telemetry. +func (Meter) Float64Counter(string, ...metric.Float64CounterOption) (metric.Float64Counter, error) { + return Float64Counter{}, nil +} + +// Float64UpDownCounter returns an UpDownCounter used to record int64 +// measurements that produces no telemetry. +func (Meter) Float64UpDownCounter(string, ...metric.Float64UpDownCounterOption) (metric.Float64UpDownCounter, error) { + return Float64UpDownCounter{}, nil +} + +// Float64Histogram returns a Histogram used to record int64 measurements that +// produces no telemetry. +func (Meter) Float64Histogram(string, ...metric.Float64HistogramOption) (metric.Float64Histogram, error) { + return Float64Histogram{}, nil +} + +// Float64Gauge returns a Gauge used to record float64 measurements that +// produces no telemetry. +func (Meter) Float64Gauge(string, ...metric.Float64GaugeOption) (metric.Float64Gauge, error) { + return Float64Gauge{}, nil +} + +// Float64ObservableCounter returns an ObservableCounter used to record int64 +// measurements that produces no telemetry. +func (Meter) Float64ObservableCounter(string, ...metric.Float64ObservableCounterOption) (metric.Float64ObservableCounter, error) { + return Float64ObservableCounter{}, nil +} + +// Float64ObservableUpDownCounter returns an ObservableUpDownCounter used to +// record int64 measurements that produces no telemetry. +func (Meter) Float64ObservableUpDownCounter(string, ...metric.Float64ObservableUpDownCounterOption) (metric.Float64ObservableUpDownCounter, error) { + return Float64ObservableUpDownCounter{}, nil +} + +// Float64ObservableGauge returns an ObservableGauge used to record int64 +// measurements that produces no telemetry. +func (Meter) Float64ObservableGauge(string, ...metric.Float64ObservableGaugeOption) (metric.Float64ObservableGauge, error) { + return Float64ObservableGauge{}, nil +} + +// RegisterCallback performs no operation. +func (Meter) RegisterCallback(metric.Callback, ...metric.Observable) (metric.Registration, error) { + return Registration{}, nil +} + +// Observer acts as a recorder of measurements for multiple instruments in a +// Callback, it performing no operation. +type Observer struct{ embedded.Observer } + +// ObserveFloat64 performs no operation. +func (Observer) ObserveFloat64(metric.Float64Observable, float64, ...metric.ObserveOption) { +} + +// ObserveInt64 performs no operation. +func (Observer) ObserveInt64(metric.Int64Observable, int64, ...metric.ObserveOption) { +} + +// Registration is the registration of a Callback with a No-Op Meter. +type Registration struct{ embedded.Registration } + +// Unregister unregisters the Callback the Registration represents with the +// No-Op Meter. This will always return nil because the No-Op Meter performs no +// operation, including hold any record of registrations. +func (Registration) Unregister() error { return nil } + +// Int64Counter is an OpenTelemetry Counter used to record int64 measurements. +// It produces no telemetry. +type Int64Counter struct{ embedded.Int64Counter } + +// Add performs no operation. +func (Int64Counter) Add(context.Context, int64, ...metric.AddOption) {} + +// Float64Counter is an OpenTelemetry Counter used to record float64 +// measurements. It produces no telemetry. +type Float64Counter struct{ embedded.Float64Counter } + +// Add performs no operation. +func (Float64Counter) Add(context.Context, float64, ...metric.AddOption) {} + +// Int64UpDownCounter is an OpenTelemetry UpDownCounter used to record int64 +// measurements. It produces no telemetry. +type Int64UpDownCounter struct{ embedded.Int64UpDownCounter } + +// Add performs no operation. +func (Int64UpDownCounter) Add(context.Context, int64, ...metric.AddOption) {} + +// Float64UpDownCounter is an OpenTelemetry UpDownCounter used to record +// float64 measurements. It produces no telemetry. +type Float64UpDownCounter struct{ embedded.Float64UpDownCounter } + +// Add performs no operation. +func (Float64UpDownCounter) Add(context.Context, float64, ...metric.AddOption) {} + +// Int64Histogram is an OpenTelemetry Histogram used to record int64 +// measurements. It produces no telemetry. +type Int64Histogram struct{ embedded.Int64Histogram } + +// Record performs no operation. +func (Int64Histogram) Record(context.Context, int64, ...metric.RecordOption) {} + +// Float64Histogram is an OpenTelemetry Histogram used to record float64 +// measurements. It produces no telemetry. +type Float64Histogram struct{ embedded.Float64Histogram } + +// Record performs no operation. +func (Float64Histogram) Record(context.Context, float64, ...metric.RecordOption) {} + +// Int64Gauge is an OpenTelemetry Gauge used to record instantaneous int64 +// measurements. It produces no telemetry. +type Int64Gauge struct{ embedded.Int64Gauge } + +// Record performs no operation. +func (Int64Gauge) Record(context.Context, int64, ...metric.RecordOption) {} + +// Float64Gauge is an OpenTelemetry Gauge used to record instantaneous float64 +// measurements. It produces no telemetry. +type Float64Gauge struct{ embedded.Float64Gauge } + +// Record performs no operation. +func (Float64Gauge) Record(context.Context, float64, ...metric.RecordOption) {} + +// Int64ObservableCounter is an OpenTelemetry ObservableCounter used to record +// int64 measurements. It produces no telemetry. +type Int64ObservableCounter struct { + metric.Int64Observable + embedded.Int64ObservableCounter +} + +// Float64ObservableCounter is an OpenTelemetry ObservableCounter used to record +// float64 measurements. It produces no telemetry. +type Float64ObservableCounter struct { + metric.Float64Observable + embedded.Float64ObservableCounter +} + +// Int64ObservableGauge is an OpenTelemetry ObservableGauge used to record +// int64 measurements. It produces no telemetry. +type Int64ObservableGauge struct { + metric.Int64Observable + embedded.Int64ObservableGauge +} + +// Float64ObservableGauge is an OpenTelemetry ObservableGauge used to record +// float64 measurements. It produces no telemetry. +type Float64ObservableGauge struct { + metric.Float64Observable + embedded.Float64ObservableGauge +} + +// Int64ObservableUpDownCounter is an OpenTelemetry ObservableUpDownCounter +// used to record int64 measurements. It produces no telemetry. +type Int64ObservableUpDownCounter struct { + metric.Int64Observable + embedded.Int64ObservableUpDownCounter +} + +// Float64ObservableUpDownCounter is an OpenTelemetry ObservableUpDownCounter +// used to record float64 measurements. It produces no telemetry. +type Float64ObservableUpDownCounter struct { + metric.Float64Observable + embedded.Float64ObservableUpDownCounter +} + +// Int64Observer is a recorder of int64 measurements that performs no operation. +type Int64Observer struct{ embedded.Int64Observer } + +// Observe performs no operation. +func (Int64Observer) Observe(int64, ...metric.ObserveOption) {} + +// Float64Observer is a recorder of float64 measurements that performs no +// operation. +type Float64Observer struct{ embedded.Float64Observer } + +// Observe performs no operation. +func (Float64Observer) Observe(float64, ...metric.ObserveOption) {} diff --git a/vendor/go.opentelemetry.io/otel/metric/syncfloat64.go b/vendor/go.opentelemetry.io/otel/metric/syncfloat64.go index 0a4825ae6a79..8403a4bad2de 100644 --- a/vendor/go.opentelemetry.io/otel/metric/syncfloat64.go +++ b/vendor/go.opentelemetry.io/otel/metric/syncfloat64.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package metric // import "go.opentelemetry.io/otel/metric" @@ -39,7 +28,7 @@ type Float64Counter interface { } // Float64CounterConfig contains options for synchronous counter instruments that -// record int64 values. +// record float64 values. type Float64CounterConfig struct { description string unit string @@ -92,7 +81,7 @@ type Float64UpDownCounter interface { } // Float64UpDownCounterConfig contains options for synchronous counter -// instruments that record int64 values. +// instruments that record float64 values. type Float64UpDownCounterConfig struct { description string unit string @@ -144,8 +133,8 @@ type Float64Histogram interface { Record(ctx context.Context, incr float64, options ...RecordOption) } -// Float64HistogramConfig contains options for synchronous counter instruments -// that record int64 values. +// Float64HistogramConfig contains options for synchronous histogram +// instruments that record float64 values. type Float64HistogramConfig struct { description string unit string @@ -183,3 +172,55 @@ func (c Float64HistogramConfig) ExplicitBucketBoundaries() []float64 { type Float64HistogramOption interface { applyFloat64Histogram(Float64HistogramConfig) Float64HistogramConfig } + +// Float64Gauge is an instrument that records instantaneous float64 values. +// +// Warning: Methods may be added to this interface in minor releases. See +// package documentation on API implementation for information on how to set +// default behavior for unimplemented methods. +type Float64Gauge interface { + // Users of the interface can ignore this. This embedded type is only used + // by implementations of this interface. See the "API Implementations" + // section of the package documentation for more information. + embedded.Float64Gauge + + // Record records the instantaneous value. + // + // Use the WithAttributeSet (or, if performance is not a concern, + // the WithAttributes) option to include measurement attributes. + Record(ctx context.Context, value float64, options ...RecordOption) +} + +// Float64GaugeConfig contains options for synchronous gauge instruments that +// record float64 values. +type Float64GaugeConfig struct { + description string + unit string +} + +// NewFloat64GaugeConfig returns a new [Float64GaugeConfig] with all opts +// applied. +func NewFloat64GaugeConfig(opts ...Float64GaugeOption) Float64GaugeConfig { + var config Float64GaugeConfig + for _, o := range opts { + config = o.applyFloat64Gauge(config) + } + return config +} + +// Description returns the configured description. +func (c Float64GaugeConfig) Description() string { + return c.description +} + +// Unit returns the configured unit. +func (c Float64GaugeConfig) Unit() string { + return c.unit +} + +// Float64GaugeOption applies options to a [Float64GaugeConfig]. See +// [InstrumentOption] for other options that can be used as a +// Float64GaugeOption. +type Float64GaugeOption interface { + applyFloat64Gauge(Float64GaugeConfig) Float64GaugeConfig +} diff --git a/vendor/go.opentelemetry.io/otel/metric/syncint64.go b/vendor/go.opentelemetry.io/otel/metric/syncint64.go index 56667d32fc01..783fdfba7739 100644 --- a/vendor/go.opentelemetry.io/otel/metric/syncint64.go +++ b/vendor/go.opentelemetry.io/otel/metric/syncint64.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package metric // import "go.opentelemetry.io/otel/metric" @@ -144,7 +133,7 @@ type Int64Histogram interface { Record(ctx context.Context, incr int64, options ...RecordOption) } -// Int64HistogramConfig contains options for synchronous counter instruments +// Int64HistogramConfig contains options for synchronous histogram instruments // that record int64 values. type Int64HistogramConfig struct { description string @@ -183,3 +172,55 @@ func (c Int64HistogramConfig) ExplicitBucketBoundaries() []float64 { type Int64HistogramOption interface { applyInt64Histogram(Int64HistogramConfig) Int64HistogramConfig } + +// Int64Gauge is an instrument that records instantaneous int64 values. +// +// Warning: Methods may be added to this interface in minor releases. See +// package documentation on API implementation for information on how to set +// default behavior for unimplemented methods. +type Int64Gauge interface { + // Users of the interface can ignore this. This embedded type is only used + // by implementations of this interface. See the "API Implementations" + // section of the package documentation for more information. + embedded.Int64Gauge + + // Record records the instantaneous value. + // + // Use the WithAttributeSet (or, if performance is not a concern, + // the WithAttributes) option to include measurement attributes. + Record(ctx context.Context, value int64, options ...RecordOption) +} + +// Int64GaugeConfig contains options for synchronous gauge instruments that +// record int64 values. +type Int64GaugeConfig struct { + description string + unit string +} + +// NewInt64GaugeConfig returns a new [Int64GaugeConfig] with all opts +// applied. +func NewInt64GaugeConfig(opts ...Int64GaugeOption) Int64GaugeConfig { + var config Int64GaugeConfig + for _, o := range opts { + config = o.applyInt64Gauge(config) + } + return config +} + +// Description returns the configured description. +func (c Int64GaugeConfig) Description() string { + return c.description +} + +// Unit returns the configured unit. +func (c Int64GaugeConfig) Unit() string { + return c.unit +} + +// Int64GaugeOption applies options to a [Int64GaugeConfig]. See +// [InstrumentOption] for other options that can be used as a +// Int64GaugeOption. +type Int64GaugeOption interface { + applyInt64Gauge(Int64GaugeConfig) Int64GaugeConfig +} diff --git a/vendor/go.opentelemetry.io/otel/propagation.go b/vendor/go.opentelemetry.io/otel/propagation.go index d29aaa32c0b5..2fd9497338ff 100644 --- a/vendor/go.opentelemetry.io/otel/propagation.go +++ b/vendor/go.opentelemetry.io/otel/propagation.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otel // import "go.opentelemetry.io/otel" diff --git a/vendor/go.opentelemetry.io/otel/propagation/README.md b/vendor/go.opentelemetry.io/otel/propagation/README.md new file mode 100644 index 000000000000..e2959ac747a2 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/propagation/README.md @@ -0,0 +1,3 @@ +# Propagation + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/propagation)](https://pkg.go.dev/go.opentelemetry.io/otel/propagation) diff --git a/vendor/go.opentelemetry.io/otel/propagation/baggage.go b/vendor/go.opentelemetry.io/otel/propagation/baggage.go index 303cdf1cbff4..552263ba7343 100644 --- a/vendor/go.opentelemetry.io/otel/propagation/baggage.go +++ b/vendor/go.opentelemetry.io/otel/propagation/baggage.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package propagation // import "go.opentelemetry.io/otel/propagation" diff --git a/vendor/go.opentelemetry.io/otel/propagation/doc.go b/vendor/go.opentelemetry.io/otel/propagation/doc.go index c119eb2858b6..33a3baf15f15 100644 --- a/vendor/go.opentelemetry.io/otel/propagation/doc.go +++ b/vendor/go.opentelemetry.io/otel/propagation/doc.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 /* Package propagation contains OpenTelemetry context propagators. diff --git a/vendor/go.opentelemetry.io/otel/propagation/propagation.go b/vendor/go.opentelemetry.io/otel/propagation/propagation.go index c94438f73a5e..8c8286aab4d2 100644 --- a/vendor/go.opentelemetry.io/otel/propagation/propagation.go +++ b/vendor/go.opentelemetry.io/otel/propagation/propagation.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package propagation // import "go.opentelemetry.io/otel/propagation" diff --git a/vendor/go.opentelemetry.io/otel/propagation/trace_context.go b/vendor/go.opentelemetry.io/otel/propagation/trace_context.go index 63e5d62221f0..6870e316dc00 100644 --- a/vendor/go.opentelemetry.io/otel/propagation/trace_context.go +++ b/vendor/go.opentelemetry.io/otel/propagation/trace_context.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package propagation // import "go.opentelemetry.io/otel/propagation" @@ -46,7 +35,7 @@ var ( versionPart = fmt.Sprintf("%.2X", supportedVersion) ) -// Inject set tracecontext from the Context into the carrier. +// Inject injects the trace context from ctx into carrier. func (tc TraceContext) Inject(ctx context.Context, carrier TextMapCarrier) { sc := trace.SpanContextFromContext(ctx) if !sc.IsValid() { diff --git a/vendor/go.opentelemetry.io/otel/renovate.json b/vendor/go.opentelemetry.io/otel/renovate.json new file mode 100644 index 000000000000..0a29a2f13d80 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/renovate.json @@ -0,0 +1,32 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended" + ], + "ignorePaths": [], + "labels": ["Skip Changelog", "dependencies"], + "postUpdateOptions" : [ + "gomodTidy" + ], + "packageRules": [ + { + "matchManagers": ["gomod"], + "matchDepTypes": ["indirect"], + "enabled": true + }, + { + "matchFileNames": ["internal/tools/**"], + "matchManagers": ["gomod"], + "matchDepTypes": ["indirect"], + "enabled": false + }, + { + "matchPackageNames": ["google.golang.org/genproto/googleapis/**"], + "groupName": "googleapis" + }, + { + "matchPackageNames": ["golang.org/x/**"], + "groupName": "golang.org/x" + } + ] +} diff --git a/vendor/go.opentelemetry.io/otel/requirements.txt b/vendor/go.opentelemetry.io/otel/requirements.txt index e0a43e13840e..ab09daf9d53c 100644 --- a/vendor/go.opentelemetry.io/otel/requirements.txt +++ b/vendor/go.opentelemetry.io/otel/requirements.txt @@ -1 +1 @@ -codespell==2.2.6 +codespell==2.3.0 diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/README.md b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/README.md new file mode 100644 index 000000000000..82e1f46b4eaf --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/README.md @@ -0,0 +1,3 @@ +# Semconv v1.20.0 + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/semconv/v1.20.0)](https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.20.0) diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/attribute_group.go b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/attribute_group.go index 67d1d4c44d74..6685c392b50b 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/attribute_group.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/attribute_group.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 // Code generated from semantic convention specification. DO NOT EDIT. diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/doc.go b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/doc.go index 359c5a69624b..0d1f55a8fe9b 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/doc.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/doc.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 // Package semconv implements OpenTelemetry semantic conventions. // diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/event.go b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/event.go index 8ac9350d2b26..63776393217c 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/event.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/event.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 // Code generated from semantic convention specification. DO NOT EDIT. diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/exception.go b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/exception.go index 09ff4dfdbf7c..f40c97825aa2 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/exception.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/exception.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package semconv // import "go.opentelemetry.io/otel/semconv/v1.20.0" diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/http.go b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/http.go index 342aede95f10..9c1840631b66 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/http.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/http.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package semconv // import "go.opentelemetry.io/otel/semconv/v1.20.0" diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/resource.go b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/resource.go index a2b906742a83..3d44dae2750b 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/resource.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/resource.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 // Code generated from semantic convention specification. DO NOT EDIT. diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/schema.go b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/schema.go index e449e5c3b9f2..95d0210e38f2 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/schema.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/schema.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package semconv // import "go.opentelemetry.io/otel/semconv/v1.20.0" diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/trace.go b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/trace.go index 8517741485c3..90b1b0452cc0 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/trace.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.20.0/trace.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 // Code generated from semantic convention specification. DO NOT EDIT. diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/README.md b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/README.md new file mode 100644 index 000000000000..2de1fc3c6beb --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/README.md @@ -0,0 +1,3 @@ +# Semconv v1.26.0 + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/semconv/v1.26.0)](https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.26.0) diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/attribute_group.go b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/attribute_group.go new file mode 100644 index 000000000000..d8dc822b2633 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/attribute_group.go @@ -0,0 +1,8996 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Code generated from semantic convention specification. DO NOT EDIT. + +package semconv // import "go.opentelemetry.io/otel/semconv/v1.26.0" + +import "go.opentelemetry.io/otel/attribute" + +// The Android platform on which the Android application is running. +const ( + // AndroidOSAPILevelKey is the attribute Key conforming to the + // "android.os.api_level" semantic conventions. It represents the uniquely + // identifies the framework API revision offered by a version + // (`os.version`) of the android operating system. More information can be + // found + // [here](https://developer.android.com/guide/topics/manifest/uses-sdk-element#APILevels). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '33', '32' + AndroidOSAPILevelKey = attribute.Key("android.os.api_level") +) + +// AndroidOSAPILevel returns an attribute KeyValue conforming to the +// "android.os.api_level" semantic conventions. It represents the uniquely +// identifies the framework API revision offered by a version (`os.version`) of +// the android operating system. More information can be found +// [here](https://developer.android.com/guide/topics/manifest/uses-sdk-element#APILevels). +func AndroidOSAPILevel(val string) attribute.KeyValue { + return AndroidOSAPILevelKey.String(val) +} + +// ASP.NET Core attributes +const ( + // AspnetcoreRateLimitingResultKey is the attribute Key conforming to the + // "aspnetcore.rate_limiting.result" semantic conventions. It represents + // the rate-limiting result, shows whether the lease was acquired or + // contains a rejection reason + // + // Type: Enum + // RequirementLevel: Required + // Stability: stable + // Examples: 'acquired', 'request_canceled' + AspnetcoreRateLimitingResultKey = attribute.Key("aspnetcore.rate_limiting.result") + + // AspnetcoreDiagnosticsHandlerTypeKey is the attribute Key conforming to + // the "aspnetcore.diagnostics.handler.type" semantic conventions. It + // represents the full type name of the + // [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) + // implementation that handled the exception. + // + // Type: string + // RequirementLevel: ConditionallyRequired (if and only if the exception + // was handled by this handler.) + // Stability: stable + // Examples: 'Contoso.MyHandler' + AspnetcoreDiagnosticsHandlerTypeKey = attribute.Key("aspnetcore.diagnostics.handler.type") + + // AspnetcoreDiagnosticsExceptionResultKey is the attribute Key conforming + // to the "aspnetcore.diagnostics.exception.result" semantic conventions. + // It represents the aSP.NET Core exception middleware handling result + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + // Examples: 'handled', 'unhandled' + AspnetcoreDiagnosticsExceptionResultKey = attribute.Key("aspnetcore.diagnostics.exception.result") + + // AspnetcoreRateLimitingPolicyKey is the attribute Key conforming to the + // "aspnetcore.rate_limiting.policy" semantic conventions. It represents + // the rate limiting policy name. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'fixed', 'sliding', 'token' + AspnetcoreRateLimitingPolicyKey = attribute.Key("aspnetcore.rate_limiting.policy") + + // AspnetcoreRequestIsUnhandledKey is the attribute Key conforming to the + // "aspnetcore.request.is_unhandled" semantic conventions. It represents + // the flag indicating if request was handled by the application pipeline. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: stable + // Examples: True + AspnetcoreRequestIsUnhandledKey = attribute.Key("aspnetcore.request.is_unhandled") + + // AspnetcoreRoutingIsFallbackKey is the attribute Key conforming to the + // "aspnetcore.routing.is_fallback" semantic conventions. It represents a + // value that indicates whether the matched route is a fallback route. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: stable + // Examples: True + AspnetcoreRoutingIsFallbackKey = attribute.Key("aspnetcore.routing.is_fallback") + + // AspnetcoreRoutingMatchStatusKey is the attribute Key conforming to the + // "aspnetcore.routing.match_status" semantic conventions. It represents + // the match result - success or failure + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + // Examples: 'success', 'failure' + AspnetcoreRoutingMatchStatusKey = attribute.Key("aspnetcore.routing.match_status") +) + +var ( + // Lease was acquired + AspnetcoreRateLimitingResultAcquired = AspnetcoreRateLimitingResultKey.String("acquired") + // Lease request was rejected by the endpoint limiter + AspnetcoreRateLimitingResultEndpointLimiter = AspnetcoreRateLimitingResultKey.String("endpoint_limiter") + // Lease request was rejected by the global limiter + AspnetcoreRateLimitingResultGlobalLimiter = AspnetcoreRateLimitingResultKey.String("global_limiter") + // Lease request was canceled + AspnetcoreRateLimitingResultRequestCanceled = AspnetcoreRateLimitingResultKey.String("request_canceled") +) + +var ( + // Exception was handled by the exception handling middleware + AspnetcoreDiagnosticsExceptionResultHandled = AspnetcoreDiagnosticsExceptionResultKey.String("handled") + // Exception was not handled by the exception handling middleware + AspnetcoreDiagnosticsExceptionResultUnhandled = AspnetcoreDiagnosticsExceptionResultKey.String("unhandled") + // Exception handling was skipped because the response had started + AspnetcoreDiagnosticsExceptionResultSkipped = AspnetcoreDiagnosticsExceptionResultKey.String("skipped") + // Exception handling didn't run because the request was aborted + AspnetcoreDiagnosticsExceptionResultAborted = AspnetcoreDiagnosticsExceptionResultKey.String("aborted") +) + +var ( + // Match succeeded + AspnetcoreRoutingMatchStatusSuccess = AspnetcoreRoutingMatchStatusKey.String("success") + // Match failed + AspnetcoreRoutingMatchStatusFailure = AspnetcoreRoutingMatchStatusKey.String("failure") +) + +// AspnetcoreDiagnosticsHandlerType returns an attribute KeyValue conforming +// to the "aspnetcore.diagnostics.handler.type" semantic conventions. It +// represents the full type name of the +// [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) +// implementation that handled the exception. +func AspnetcoreDiagnosticsHandlerType(val string) attribute.KeyValue { + return AspnetcoreDiagnosticsHandlerTypeKey.String(val) +} + +// AspnetcoreRateLimitingPolicy returns an attribute KeyValue conforming to +// the "aspnetcore.rate_limiting.policy" semantic conventions. It represents +// the rate limiting policy name. +func AspnetcoreRateLimitingPolicy(val string) attribute.KeyValue { + return AspnetcoreRateLimitingPolicyKey.String(val) +} + +// AspnetcoreRequestIsUnhandled returns an attribute KeyValue conforming to +// the "aspnetcore.request.is_unhandled" semantic conventions. It represents +// the flag indicating if request was handled by the application pipeline. +func AspnetcoreRequestIsUnhandled(val bool) attribute.KeyValue { + return AspnetcoreRequestIsUnhandledKey.Bool(val) +} + +// AspnetcoreRoutingIsFallback returns an attribute KeyValue conforming to +// the "aspnetcore.routing.is_fallback" semantic conventions. It represents a +// value that indicates whether the matched route is a fallback route. +func AspnetcoreRoutingIsFallback(val bool) attribute.KeyValue { + return AspnetcoreRoutingIsFallbackKey.Bool(val) +} + +// Generic attributes for AWS services. +const ( + // AWSRequestIDKey is the attribute Key conforming to the "aws.request_id" + // semantic conventions. It represents the AWS request ID as returned in + // the response headers `x-amz-request-id` or `x-amz-requestid`. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '79b9da39-b7ae-508a-a6bc-864b2829c622', 'C9ER4AJX75574TDJ' + AWSRequestIDKey = attribute.Key("aws.request_id") +) + +// AWSRequestID returns an attribute KeyValue conforming to the +// "aws.request_id" semantic conventions. It represents the AWS request ID as +// returned in the response headers `x-amz-request-id` or `x-amz-requestid`. +func AWSRequestID(val string) attribute.KeyValue { + return AWSRequestIDKey.String(val) +} + +// Attributes for AWS DynamoDB. +const ( + // AWSDynamoDBAttributeDefinitionsKey is the attribute Key conforming to + // the "aws.dynamodb.attribute_definitions" semantic conventions. It + // represents the JSON-serialized value of each item in the + // `AttributeDefinitions` request field. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: '{ "AttributeName": "string", "AttributeType": "string" }' + AWSDynamoDBAttributeDefinitionsKey = attribute.Key("aws.dynamodb.attribute_definitions") + + // AWSDynamoDBAttributesToGetKey is the attribute Key conforming to the + // "aws.dynamodb.attributes_to_get" semantic conventions. It represents the + // value of the `AttributesToGet` request parameter. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'lives', 'id' + AWSDynamoDBAttributesToGetKey = attribute.Key("aws.dynamodb.attributes_to_get") + + // AWSDynamoDBConsistentReadKey is the attribute Key conforming to the + // "aws.dynamodb.consistent_read" semantic conventions. It represents the + // value of the `ConsistentRead` request parameter. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + AWSDynamoDBConsistentReadKey = attribute.Key("aws.dynamodb.consistent_read") + + // AWSDynamoDBConsumedCapacityKey is the attribute Key conforming to the + // "aws.dynamodb.consumed_capacity" semantic conventions. It represents the + // JSON-serialized value of each item in the `ConsumedCapacity` response + // field. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: '{ "CapacityUnits": number, "GlobalSecondaryIndexes": { + // "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, + // "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : + // { "CapacityUnits": number, "ReadCapacityUnits": number, + // "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": + // { "CapacityUnits": number, "ReadCapacityUnits": number, + // "WriteCapacityUnits": number }, "TableName": "string", + // "WriteCapacityUnits": number }' + AWSDynamoDBConsumedCapacityKey = attribute.Key("aws.dynamodb.consumed_capacity") + + // AWSDynamoDBCountKey is the attribute Key conforming to the + // "aws.dynamodb.count" semantic conventions. It represents the value of + // the `Count` response parameter. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 10 + AWSDynamoDBCountKey = attribute.Key("aws.dynamodb.count") + + // AWSDynamoDBExclusiveStartTableKey is the attribute Key conforming to the + // "aws.dynamodb.exclusive_start_table" semantic conventions. It represents + // the value of the `ExclusiveStartTableName` request parameter. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Users', 'CatsTable' + AWSDynamoDBExclusiveStartTableKey = attribute.Key("aws.dynamodb.exclusive_start_table") + + // AWSDynamoDBGlobalSecondaryIndexUpdatesKey is the attribute Key + // conforming to the "aws.dynamodb.global_secondary_index_updates" semantic + // conventions. It represents the JSON-serialized value of each item in the + // `GlobalSecondaryIndexUpdates` request field. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: '{ "Create": { "IndexName": "string", "KeySchema": [ { + // "AttributeName": "string", "KeyType": "string" } ], "Projection": { + // "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, + // "ProvisionedThroughput": { "ReadCapacityUnits": number, + // "WriteCapacityUnits": number } }' + AWSDynamoDBGlobalSecondaryIndexUpdatesKey = attribute.Key("aws.dynamodb.global_secondary_index_updates") + + // AWSDynamoDBGlobalSecondaryIndexesKey is the attribute Key conforming to + // the "aws.dynamodb.global_secondary_indexes" semantic conventions. It + // represents the JSON-serialized value of each item of the + // `GlobalSecondaryIndexes` request field + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: '{ "IndexName": "string", "KeySchema": [ { "AttributeName": + // "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ + // "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { + // "ReadCapacityUnits": number, "WriteCapacityUnits": number } }' + AWSDynamoDBGlobalSecondaryIndexesKey = attribute.Key("aws.dynamodb.global_secondary_indexes") + + // AWSDynamoDBIndexNameKey is the attribute Key conforming to the + // "aws.dynamodb.index_name" semantic conventions. It represents the value + // of the `IndexName` request parameter. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'name_to_group' + AWSDynamoDBIndexNameKey = attribute.Key("aws.dynamodb.index_name") + + // AWSDynamoDBItemCollectionMetricsKey is the attribute Key conforming to + // the "aws.dynamodb.item_collection_metrics" semantic conventions. It + // represents the JSON-serialized value of the `ItemCollectionMetrics` + // response field. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '{ "string" : [ { "ItemCollectionKey": { "string" : { "B": + // blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { + // "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], + // "NULL": boolean, "S": "string", "SS": [ "string" ] } }, + // "SizeEstimateRangeGB": [ number ] } ] }' + AWSDynamoDBItemCollectionMetricsKey = attribute.Key("aws.dynamodb.item_collection_metrics") + + // AWSDynamoDBLimitKey is the attribute Key conforming to the + // "aws.dynamodb.limit" semantic conventions. It represents the value of + // the `Limit` request parameter. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 10 + AWSDynamoDBLimitKey = attribute.Key("aws.dynamodb.limit") + + // AWSDynamoDBLocalSecondaryIndexesKey is the attribute Key conforming to + // the "aws.dynamodb.local_secondary_indexes" semantic conventions. It + // represents the JSON-serialized value of each item of the + // `LocalSecondaryIndexes` request field. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: '{ "IndexARN": "string", "IndexName": "string", + // "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ { + // "AttributeName": "string", "KeyType": "string" } ], "Projection": { + // "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }' + AWSDynamoDBLocalSecondaryIndexesKey = attribute.Key("aws.dynamodb.local_secondary_indexes") + + // AWSDynamoDBProjectionKey is the attribute Key conforming to the + // "aws.dynamodb.projection" semantic conventions. It represents the value + // of the `ProjectionExpression` request parameter. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Title', 'Title, Price, Color', 'Title, Description, + // RelatedItems, ProductReviews' + AWSDynamoDBProjectionKey = attribute.Key("aws.dynamodb.projection") + + // AWSDynamoDBProvisionedReadCapacityKey is the attribute Key conforming to + // the "aws.dynamodb.provisioned_read_capacity" semantic conventions. It + // represents the value of the `ProvisionedThroughput.ReadCapacityUnits` + // request parameter. + // + // Type: double + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1.0, 2.0 + AWSDynamoDBProvisionedReadCapacityKey = attribute.Key("aws.dynamodb.provisioned_read_capacity") + + // AWSDynamoDBProvisionedWriteCapacityKey is the attribute Key conforming + // to the "aws.dynamodb.provisioned_write_capacity" semantic conventions. + // It represents the value of the + // `ProvisionedThroughput.WriteCapacityUnits` request parameter. + // + // Type: double + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1.0, 2.0 + AWSDynamoDBProvisionedWriteCapacityKey = attribute.Key("aws.dynamodb.provisioned_write_capacity") + + // AWSDynamoDBScanForwardKey is the attribute Key conforming to the + // "aws.dynamodb.scan_forward" semantic conventions. It represents the + // value of the `ScanIndexForward` request parameter. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + AWSDynamoDBScanForwardKey = attribute.Key("aws.dynamodb.scan_forward") + + // AWSDynamoDBScannedCountKey is the attribute Key conforming to the + // "aws.dynamodb.scanned_count" semantic conventions. It represents the + // value of the `ScannedCount` response parameter. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 50 + AWSDynamoDBScannedCountKey = attribute.Key("aws.dynamodb.scanned_count") + + // AWSDynamoDBSegmentKey is the attribute Key conforming to the + // "aws.dynamodb.segment" semantic conventions. It represents the value of + // the `Segment` request parameter. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 10 + AWSDynamoDBSegmentKey = attribute.Key("aws.dynamodb.segment") + + // AWSDynamoDBSelectKey is the attribute Key conforming to the + // "aws.dynamodb.select" semantic conventions. It represents the value of + // the `Select` request parameter. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'ALL_ATTRIBUTES', 'COUNT' + AWSDynamoDBSelectKey = attribute.Key("aws.dynamodb.select") + + // AWSDynamoDBTableCountKey is the attribute Key conforming to the + // "aws.dynamodb.table_count" semantic conventions. It represents the + // number of items in the `TableNames` response parameter. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 20 + AWSDynamoDBTableCountKey = attribute.Key("aws.dynamodb.table_count") + + // AWSDynamoDBTableNamesKey is the attribute Key conforming to the + // "aws.dynamodb.table_names" semantic conventions. It represents the keys + // in the `RequestItems` object field. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Users', 'Cats' + AWSDynamoDBTableNamesKey = attribute.Key("aws.dynamodb.table_names") + + // AWSDynamoDBTotalSegmentsKey is the attribute Key conforming to the + // "aws.dynamodb.total_segments" semantic conventions. It represents the + // value of the `TotalSegments` request parameter. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 100 + AWSDynamoDBTotalSegmentsKey = attribute.Key("aws.dynamodb.total_segments") +) + +// AWSDynamoDBAttributeDefinitions returns an attribute KeyValue conforming +// to the "aws.dynamodb.attribute_definitions" semantic conventions. It +// represents the JSON-serialized value of each item in the +// `AttributeDefinitions` request field. +func AWSDynamoDBAttributeDefinitions(val ...string) attribute.KeyValue { + return AWSDynamoDBAttributeDefinitionsKey.StringSlice(val) +} + +// AWSDynamoDBAttributesToGet returns an attribute KeyValue conforming to +// the "aws.dynamodb.attributes_to_get" semantic conventions. It represents the +// value of the `AttributesToGet` request parameter. +func AWSDynamoDBAttributesToGet(val ...string) attribute.KeyValue { + return AWSDynamoDBAttributesToGetKey.StringSlice(val) +} + +// AWSDynamoDBConsistentRead returns an attribute KeyValue conforming to the +// "aws.dynamodb.consistent_read" semantic conventions. It represents the value +// of the `ConsistentRead` request parameter. +func AWSDynamoDBConsistentRead(val bool) attribute.KeyValue { + return AWSDynamoDBConsistentReadKey.Bool(val) +} + +// AWSDynamoDBConsumedCapacity returns an attribute KeyValue conforming to +// the "aws.dynamodb.consumed_capacity" semantic conventions. It represents the +// JSON-serialized value of each item in the `ConsumedCapacity` response field. +func AWSDynamoDBConsumedCapacity(val ...string) attribute.KeyValue { + return AWSDynamoDBConsumedCapacityKey.StringSlice(val) +} + +// AWSDynamoDBCount returns an attribute KeyValue conforming to the +// "aws.dynamodb.count" semantic conventions. It represents the value of the +// `Count` response parameter. +func AWSDynamoDBCount(val int) attribute.KeyValue { + return AWSDynamoDBCountKey.Int(val) +} + +// AWSDynamoDBExclusiveStartTable returns an attribute KeyValue conforming +// to the "aws.dynamodb.exclusive_start_table" semantic conventions. It +// represents the value of the `ExclusiveStartTableName` request parameter. +func AWSDynamoDBExclusiveStartTable(val string) attribute.KeyValue { + return AWSDynamoDBExclusiveStartTableKey.String(val) +} + +// AWSDynamoDBGlobalSecondaryIndexUpdates returns an attribute KeyValue +// conforming to the "aws.dynamodb.global_secondary_index_updates" semantic +// conventions. It represents the JSON-serialized value of each item in the +// `GlobalSecondaryIndexUpdates` request field. +func AWSDynamoDBGlobalSecondaryIndexUpdates(val ...string) attribute.KeyValue { + return AWSDynamoDBGlobalSecondaryIndexUpdatesKey.StringSlice(val) +} + +// AWSDynamoDBGlobalSecondaryIndexes returns an attribute KeyValue +// conforming to the "aws.dynamodb.global_secondary_indexes" semantic +// conventions. It represents the JSON-serialized value of each item of the +// `GlobalSecondaryIndexes` request field +func AWSDynamoDBGlobalSecondaryIndexes(val ...string) attribute.KeyValue { + return AWSDynamoDBGlobalSecondaryIndexesKey.StringSlice(val) +} + +// AWSDynamoDBIndexName returns an attribute KeyValue conforming to the +// "aws.dynamodb.index_name" semantic conventions. It represents the value of +// the `IndexName` request parameter. +func AWSDynamoDBIndexName(val string) attribute.KeyValue { + return AWSDynamoDBIndexNameKey.String(val) +} + +// AWSDynamoDBItemCollectionMetrics returns an attribute KeyValue conforming +// to the "aws.dynamodb.item_collection_metrics" semantic conventions. It +// represents the JSON-serialized value of the `ItemCollectionMetrics` response +// field. +func AWSDynamoDBItemCollectionMetrics(val string) attribute.KeyValue { + return AWSDynamoDBItemCollectionMetricsKey.String(val) +} + +// AWSDynamoDBLimit returns an attribute KeyValue conforming to the +// "aws.dynamodb.limit" semantic conventions. It represents the value of the +// `Limit` request parameter. +func AWSDynamoDBLimit(val int) attribute.KeyValue { + return AWSDynamoDBLimitKey.Int(val) +} + +// AWSDynamoDBLocalSecondaryIndexes returns an attribute KeyValue conforming +// to the "aws.dynamodb.local_secondary_indexes" semantic conventions. It +// represents the JSON-serialized value of each item of the +// `LocalSecondaryIndexes` request field. +func AWSDynamoDBLocalSecondaryIndexes(val ...string) attribute.KeyValue { + return AWSDynamoDBLocalSecondaryIndexesKey.StringSlice(val) +} + +// AWSDynamoDBProjection returns an attribute KeyValue conforming to the +// "aws.dynamodb.projection" semantic conventions. It represents the value of +// the `ProjectionExpression` request parameter. +func AWSDynamoDBProjection(val string) attribute.KeyValue { + return AWSDynamoDBProjectionKey.String(val) +} + +// AWSDynamoDBProvisionedReadCapacity returns an attribute KeyValue +// conforming to the "aws.dynamodb.provisioned_read_capacity" semantic +// conventions. It represents the value of the +// `ProvisionedThroughput.ReadCapacityUnits` request parameter. +func AWSDynamoDBProvisionedReadCapacity(val float64) attribute.KeyValue { + return AWSDynamoDBProvisionedReadCapacityKey.Float64(val) +} + +// AWSDynamoDBProvisionedWriteCapacity returns an attribute KeyValue +// conforming to the "aws.dynamodb.provisioned_write_capacity" semantic +// conventions. It represents the value of the +// `ProvisionedThroughput.WriteCapacityUnits` request parameter. +func AWSDynamoDBProvisionedWriteCapacity(val float64) attribute.KeyValue { + return AWSDynamoDBProvisionedWriteCapacityKey.Float64(val) +} + +// AWSDynamoDBScanForward returns an attribute KeyValue conforming to the +// "aws.dynamodb.scan_forward" semantic conventions. It represents the value of +// the `ScanIndexForward` request parameter. +func AWSDynamoDBScanForward(val bool) attribute.KeyValue { + return AWSDynamoDBScanForwardKey.Bool(val) +} + +// AWSDynamoDBScannedCount returns an attribute KeyValue conforming to the +// "aws.dynamodb.scanned_count" semantic conventions. It represents the value +// of the `ScannedCount` response parameter. +func AWSDynamoDBScannedCount(val int) attribute.KeyValue { + return AWSDynamoDBScannedCountKey.Int(val) +} + +// AWSDynamoDBSegment returns an attribute KeyValue conforming to the +// "aws.dynamodb.segment" semantic conventions. It represents the value of the +// `Segment` request parameter. +func AWSDynamoDBSegment(val int) attribute.KeyValue { + return AWSDynamoDBSegmentKey.Int(val) +} + +// AWSDynamoDBSelect returns an attribute KeyValue conforming to the +// "aws.dynamodb.select" semantic conventions. It represents the value of the +// `Select` request parameter. +func AWSDynamoDBSelect(val string) attribute.KeyValue { + return AWSDynamoDBSelectKey.String(val) +} + +// AWSDynamoDBTableCount returns an attribute KeyValue conforming to the +// "aws.dynamodb.table_count" semantic conventions. It represents the number of +// items in the `TableNames` response parameter. +func AWSDynamoDBTableCount(val int) attribute.KeyValue { + return AWSDynamoDBTableCountKey.Int(val) +} + +// AWSDynamoDBTableNames returns an attribute KeyValue conforming to the +// "aws.dynamodb.table_names" semantic conventions. It represents the keys in +// the `RequestItems` object field. +func AWSDynamoDBTableNames(val ...string) attribute.KeyValue { + return AWSDynamoDBTableNamesKey.StringSlice(val) +} + +// AWSDynamoDBTotalSegments returns an attribute KeyValue conforming to the +// "aws.dynamodb.total_segments" semantic conventions. It represents the value +// of the `TotalSegments` request parameter. +func AWSDynamoDBTotalSegments(val int) attribute.KeyValue { + return AWSDynamoDBTotalSegmentsKey.Int(val) +} + +// Attributes for AWS Elastic Container Service (ECS). +const ( + // AWSECSTaskIDKey is the attribute Key conforming to the "aws.ecs.task.id" + // semantic conventions. It represents the ID of a running ECS task. The ID + // MUST be extracted from `task.arn`. + // + // Type: string + // RequirementLevel: ConditionallyRequired (If and only if `task.arn` is + // populated.) + // Stability: experimental + // Examples: '10838bed-421f-43ef-870a-f43feacbbb5b', + // '23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd' + AWSECSTaskIDKey = attribute.Key("aws.ecs.task.id") + + // AWSECSClusterARNKey is the attribute Key conforming to the + // "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an + // [ECS + // cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster' + AWSECSClusterARNKey = attribute.Key("aws.ecs.cluster.arn") + + // AWSECSContainerARNKey is the attribute Key conforming to the + // "aws.ecs.container.arn" semantic conventions. It represents the Amazon + // Resource Name (ARN) of an [ECS container + // instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: + // 'arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9' + AWSECSContainerARNKey = attribute.Key("aws.ecs.container.arn") + + // AWSECSLaunchtypeKey is the attribute Key conforming to the + // "aws.ecs.launchtype" semantic conventions. It represents the [launch + // type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) + // for an ECS task. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + AWSECSLaunchtypeKey = attribute.Key("aws.ecs.launchtype") + + // AWSECSTaskARNKey is the attribute Key conforming to the + // "aws.ecs.task.arn" semantic conventions. It represents the ARN of a + // running [ECS + // task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: + // 'arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b', + // 'arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd' + AWSECSTaskARNKey = attribute.Key("aws.ecs.task.arn") + + // AWSECSTaskFamilyKey is the attribute Key conforming to the + // "aws.ecs.task.family" semantic conventions. It represents the family + // name of the [ECS task + // definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) + // used to create the ECS task. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry-family' + AWSECSTaskFamilyKey = attribute.Key("aws.ecs.task.family") + + // AWSECSTaskRevisionKey is the attribute Key conforming to the + // "aws.ecs.task.revision" semantic conventions. It represents the revision + // for the task definition used to create the ECS task. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '8', '26' + AWSECSTaskRevisionKey = attribute.Key("aws.ecs.task.revision") +) + +var ( + // ec2 + AWSECSLaunchtypeEC2 = AWSECSLaunchtypeKey.String("ec2") + // fargate + AWSECSLaunchtypeFargate = AWSECSLaunchtypeKey.String("fargate") +) + +// AWSECSTaskID returns an attribute KeyValue conforming to the +// "aws.ecs.task.id" semantic conventions. It represents the ID of a running +// ECS task. The ID MUST be extracted from `task.arn`. +func AWSECSTaskID(val string) attribute.KeyValue { + return AWSECSTaskIDKey.String(val) +} + +// AWSECSClusterARN returns an attribute KeyValue conforming to the +// "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an [ECS +// cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). +func AWSECSClusterARN(val string) attribute.KeyValue { + return AWSECSClusterARNKey.String(val) +} + +// AWSECSContainerARN returns an attribute KeyValue conforming to the +// "aws.ecs.container.arn" semantic conventions. It represents the Amazon +// Resource Name (ARN) of an [ECS container +// instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). +func AWSECSContainerARN(val string) attribute.KeyValue { + return AWSECSContainerARNKey.String(val) +} + +// AWSECSTaskARN returns an attribute KeyValue conforming to the +// "aws.ecs.task.arn" semantic conventions. It represents the ARN of a running +// [ECS +// task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids). +func AWSECSTaskARN(val string) attribute.KeyValue { + return AWSECSTaskARNKey.String(val) +} + +// AWSECSTaskFamily returns an attribute KeyValue conforming to the +// "aws.ecs.task.family" semantic conventions. It represents the family name of +// the [ECS task +// definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) +// used to create the ECS task. +func AWSECSTaskFamily(val string) attribute.KeyValue { + return AWSECSTaskFamilyKey.String(val) +} + +// AWSECSTaskRevision returns an attribute KeyValue conforming to the +// "aws.ecs.task.revision" semantic conventions. It represents the revision for +// the task definition used to create the ECS task. +func AWSECSTaskRevision(val string) attribute.KeyValue { + return AWSECSTaskRevisionKey.String(val) +} + +// Attributes for AWS Elastic Kubernetes Service (EKS). +const ( + // AWSEKSClusterARNKey is the attribute Key conforming to the + // "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an + // EKS cluster. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster' + AWSEKSClusterARNKey = attribute.Key("aws.eks.cluster.arn") +) + +// AWSEKSClusterARN returns an attribute KeyValue conforming to the +// "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS +// cluster. +func AWSEKSClusterARN(val string) attribute.KeyValue { + return AWSEKSClusterARNKey.String(val) +} + +// Attributes for AWS Logs. +const ( + // AWSLogGroupARNsKey is the attribute Key conforming to the + // "aws.log.group.arns" semantic conventions. It represents the Amazon + // Resource Name(s) (ARN) of the AWS log group(s). + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: + // 'arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*' + // Note: See the [log group ARN format + // documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). + AWSLogGroupARNsKey = attribute.Key("aws.log.group.arns") + + // AWSLogGroupNamesKey is the attribute Key conforming to the + // "aws.log.group.names" semantic conventions. It represents the name(s) of + // the AWS log group(s) an application is writing to. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: '/aws/lambda/my-function', 'opentelemetry-service' + // Note: Multiple log groups must be supported for cases like + // multi-container applications, where a single application has sidecar + // containers, and each write to their own log group. + AWSLogGroupNamesKey = attribute.Key("aws.log.group.names") + + // AWSLogStreamARNsKey is the attribute Key conforming to the + // "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of + // the AWS log stream(s). + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: + // 'arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b' + // Note: See the [log stream ARN format + // documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). + // One log group can contain several log streams, so these ARNs necessarily + // identify both a log group and a log stream. + AWSLogStreamARNsKey = attribute.Key("aws.log.stream.arns") + + // AWSLogStreamNamesKey is the attribute Key conforming to the + // "aws.log.stream.names" semantic conventions. It represents the name(s) + // of the AWS log stream(s) an application is writing to. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'logs/main/10838bed-421f-43ef-870a-f43feacbbb5b' + AWSLogStreamNamesKey = attribute.Key("aws.log.stream.names") +) + +// AWSLogGroupARNs returns an attribute KeyValue conforming to the +// "aws.log.group.arns" semantic conventions. It represents the Amazon Resource +// Name(s) (ARN) of the AWS log group(s). +func AWSLogGroupARNs(val ...string) attribute.KeyValue { + return AWSLogGroupARNsKey.StringSlice(val) +} + +// AWSLogGroupNames returns an attribute KeyValue conforming to the +// "aws.log.group.names" semantic conventions. It represents the name(s) of the +// AWS log group(s) an application is writing to. +func AWSLogGroupNames(val ...string) attribute.KeyValue { + return AWSLogGroupNamesKey.StringSlice(val) +} + +// AWSLogStreamARNs returns an attribute KeyValue conforming to the +// "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the +// AWS log stream(s). +func AWSLogStreamARNs(val ...string) attribute.KeyValue { + return AWSLogStreamARNsKey.StringSlice(val) +} + +// AWSLogStreamNames returns an attribute KeyValue conforming to the +// "aws.log.stream.names" semantic conventions. It represents the name(s) of +// the AWS log stream(s) an application is writing to. +func AWSLogStreamNames(val ...string) attribute.KeyValue { + return AWSLogStreamNamesKey.StringSlice(val) +} + +// Attributes for AWS Lambda. +const ( + // AWSLambdaInvokedARNKey is the attribute Key conforming to the + // "aws.lambda.invoked_arn" semantic conventions. It represents the full + // invoked ARN as provided on the `Context` passed to the function + // (`Lambda-Runtime-Invoked-Function-ARN` header on the + // `/runtime/invocation/next` applicable). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'arn:aws:lambda:us-east-1:123456:function:myfunction:myalias' + // Note: This may be different from `cloud.resource_id` if an alias is + // involved. + AWSLambdaInvokedARNKey = attribute.Key("aws.lambda.invoked_arn") +) + +// AWSLambdaInvokedARN returns an attribute KeyValue conforming to the +// "aws.lambda.invoked_arn" semantic conventions. It represents the full +// invoked ARN as provided on the `Context` passed to the function +// (`Lambda-Runtime-Invoked-Function-ARN` header on the +// `/runtime/invocation/next` applicable). +func AWSLambdaInvokedARN(val string) attribute.KeyValue { + return AWSLambdaInvokedARNKey.String(val) +} + +// Attributes for AWS S3. +const ( + // AWSS3BucketKey is the attribute Key conforming to the "aws.s3.bucket" + // semantic conventions. It represents the S3 bucket name the request + // refers to. Corresponds to the `--bucket` parameter of the [S3 + // API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) + // operations. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'some-bucket-name' + // Note: The `bucket` attribute is applicable to all S3 operations that + // reference a bucket, i.e. that require the bucket name as a mandatory + // parameter. + // This applies to almost all S3 operations except `list-buckets`. + AWSS3BucketKey = attribute.Key("aws.s3.bucket") + + // AWSS3CopySourceKey is the attribute Key conforming to the + // "aws.s3.copy_source" semantic conventions. It represents the source + // object (in the form `bucket`/`key`) for the copy operation. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'someFile.yml' + // Note: The `copy_source` attribute applies to S3 copy operations and + // corresponds to the `--copy-source` parameter + // of the [copy-object operation within the S3 + // API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html). + // This applies in particular to the following operations: + // + // - + // [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + // - + // [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + AWSS3CopySourceKey = attribute.Key("aws.s3.copy_source") + + // AWSS3DeleteKey is the attribute Key conforming to the "aws.s3.delete" + // semantic conventions. It represents the delete request container that + // specifies the objects to be deleted. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: + // 'Objects=[{Key=string,VersionID=string},{Key=string,VersionID=string}],Quiet=boolean' + // Note: The `delete` attribute is only applicable to the + // [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) + // operation. + // The `delete` attribute corresponds to the `--delete` parameter of the + // [delete-objects operation within the S3 + // API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html). + AWSS3DeleteKey = attribute.Key("aws.s3.delete") + + // AWSS3KeyKey is the attribute Key conforming to the "aws.s3.key" semantic + // conventions. It represents the S3 object key the request refers to. + // Corresponds to the `--key` parameter of the [S3 + // API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) + // operations. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'someFile.yml' + // Note: The `key` attribute is applicable to all object-related S3 + // operations, i.e. that require the object key as a mandatory parameter. + // This applies in particular to the following operations: + // + // - + // [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) + // - + // [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) + // - + // [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html) + // - + // [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html) + // - + // [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html) + // - + // [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html) + // - + // [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html) + // - + // [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + // - + // [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + // - + // [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html) + // - + // [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + // - + // [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + // - + // [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + AWSS3KeyKey = attribute.Key("aws.s3.key") + + // AWSS3PartNumberKey is the attribute Key conforming to the + // "aws.s3.part_number" semantic conventions. It represents the part number + // of the part being uploaded in a multipart-upload operation. This is a + // positive integer between 1 and 10,000. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 3456 + // Note: The `part_number` attribute is only applicable to the + // [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + // and + // [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + // operations. + // The `part_number` attribute corresponds to the `--part-number` parameter + // of the + // [upload-part operation within the S3 + // API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html). + AWSS3PartNumberKey = attribute.Key("aws.s3.part_number") + + // AWSS3UploadIDKey is the attribute Key conforming to the + // "aws.s3.upload_id" semantic conventions. It represents the upload ID + // that identifies the multipart upload. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ' + // Note: The `upload_id` attribute applies to S3 multipart-upload + // operations and corresponds to the `--upload-id` parameter + // of the [S3 + // API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) + // multipart operations. + // This applies in particular to the following operations: + // + // - + // [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) + // - + // [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) + // - + // [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) + // - + // [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) + // - + // [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) + AWSS3UploadIDKey = attribute.Key("aws.s3.upload_id") +) + +// AWSS3Bucket returns an attribute KeyValue conforming to the +// "aws.s3.bucket" semantic conventions. It represents the S3 bucket name the +// request refers to. Corresponds to the `--bucket` parameter of the [S3 +// API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) +// operations. +func AWSS3Bucket(val string) attribute.KeyValue { + return AWSS3BucketKey.String(val) +} + +// AWSS3CopySource returns an attribute KeyValue conforming to the +// "aws.s3.copy_source" semantic conventions. It represents the source object +// (in the form `bucket`/`key`) for the copy operation. +func AWSS3CopySource(val string) attribute.KeyValue { + return AWSS3CopySourceKey.String(val) +} + +// AWSS3Delete returns an attribute KeyValue conforming to the +// "aws.s3.delete" semantic conventions. It represents the delete request +// container that specifies the objects to be deleted. +func AWSS3Delete(val string) attribute.KeyValue { + return AWSS3DeleteKey.String(val) +} + +// AWSS3Key returns an attribute KeyValue conforming to the "aws.s3.key" +// semantic conventions. It represents the S3 object key the request refers to. +// Corresponds to the `--key` parameter of the [S3 +// API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) +// operations. +func AWSS3Key(val string) attribute.KeyValue { + return AWSS3KeyKey.String(val) +} + +// AWSS3PartNumber returns an attribute KeyValue conforming to the +// "aws.s3.part_number" semantic conventions. It represents the part number of +// the part being uploaded in a multipart-upload operation. This is a positive +// integer between 1 and 10,000. +func AWSS3PartNumber(val int) attribute.KeyValue { + return AWSS3PartNumberKey.Int(val) +} + +// AWSS3UploadID returns an attribute KeyValue conforming to the +// "aws.s3.upload_id" semantic conventions. It represents the upload ID that +// identifies the multipart upload. +func AWSS3UploadID(val string) attribute.KeyValue { + return AWSS3UploadIDKey.String(val) +} + +// The web browser attributes +const ( + // BrowserBrandsKey is the attribute Key conforming to the "browser.brands" + // semantic conventions. It represents the array of brand name and version + // separated by a space + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: ' Not A;Brand 99', 'Chromium 99', 'Chrome 99' + // Note: This value is intended to be taken from the [UA client hints + // API](https://wicg.github.io/ua-client-hints/#interface) + // (`navigator.userAgentData.brands`). + BrowserBrandsKey = attribute.Key("browser.brands") + + // BrowserLanguageKey is the attribute Key conforming to the + // "browser.language" semantic conventions. It represents the preferred + // language of the user using the browser + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'en', 'en-US', 'fr', 'fr-FR' + // Note: This value is intended to be taken from the Navigator API + // `navigator.language`. + BrowserLanguageKey = attribute.Key("browser.language") + + // BrowserMobileKey is the attribute Key conforming to the "browser.mobile" + // semantic conventions. It represents a boolean that is true if the + // browser is running on a mobile device + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + // Note: This value is intended to be taken from the [UA client hints + // API](https://wicg.github.io/ua-client-hints/#interface) + // (`navigator.userAgentData.mobile`). If unavailable, this attribute + // SHOULD be left unset. + BrowserMobileKey = attribute.Key("browser.mobile") + + // BrowserPlatformKey is the attribute Key conforming to the + // "browser.platform" semantic conventions. It represents the platform on + // which the browser is running + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Windows', 'macOS', 'Android' + // Note: This value is intended to be taken from the [UA client hints + // API](https://wicg.github.io/ua-client-hints/#interface) + // (`navigator.userAgentData.platform`). If unavailable, the legacy + // `navigator.platform` API SHOULD NOT be used instead and this attribute + // SHOULD be left unset in order for the values to be consistent. + // The list of possible values is defined in the [W3C User-Agent Client + // Hints + // specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). + // Note that some (but not all) of these values can overlap with values in + // the [`os.type` and `os.name` attributes](./os.md). However, for + // consistency, the values in the `browser.platform` attribute should + // capture the exact value that the user agent provides. + BrowserPlatformKey = attribute.Key("browser.platform") +) + +// BrowserBrands returns an attribute KeyValue conforming to the +// "browser.brands" semantic conventions. It represents the array of brand name +// and version separated by a space +func BrowserBrands(val ...string) attribute.KeyValue { + return BrowserBrandsKey.StringSlice(val) +} + +// BrowserLanguage returns an attribute KeyValue conforming to the +// "browser.language" semantic conventions. It represents the preferred +// language of the user using the browser +func BrowserLanguage(val string) attribute.KeyValue { + return BrowserLanguageKey.String(val) +} + +// BrowserMobile returns an attribute KeyValue conforming to the +// "browser.mobile" semantic conventions. It represents a boolean that is true +// if the browser is running on a mobile device +func BrowserMobile(val bool) attribute.KeyValue { + return BrowserMobileKey.Bool(val) +} + +// BrowserPlatform returns an attribute KeyValue conforming to the +// "browser.platform" semantic conventions. It represents the platform on which +// the browser is running +func BrowserPlatform(val string) attribute.KeyValue { + return BrowserPlatformKey.String(val) +} + +// These attributes may be used to describe the client in a connection-based +// network interaction where there is one side that initiates the connection +// (the client is the side that initiates the connection). This covers all TCP +// network interactions since TCP is connection-based and one side initiates +// the connection (an exception is made for peer-to-peer communication over TCP +// where the "user-facing" surface of the protocol / API doesn't expose a clear +// notion of client and server). This also covers UDP network interactions +// where one side initiates the interaction, e.g. QUIC (HTTP/3) and DNS. +const ( + // ClientAddressKey is the attribute Key conforming to the "client.address" + // semantic conventions. It represents the client address - domain name if + // available without reverse DNS lookup; otherwise, IP address or Unix + // domain socket name. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'client.example.com', '10.1.2.80', '/tmp/my.sock' + // Note: When observed from the server side, and when communicating through + // an intermediary, `client.address` SHOULD represent the client address + // behind any intermediaries, for example proxies, if it's available. + ClientAddressKey = attribute.Key("client.address") + + // ClientPortKey is the attribute Key conforming to the "client.port" + // semantic conventions. It represents the client port number. + // + // Type: int + // RequirementLevel: Optional + // Stability: stable + // Examples: 65123 + // Note: When observed from the server side, and when communicating through + // an intermediary, `client.port` SHOULD represent the client port behind + // any intermediaries, for example proxies, if it's available. + ClientPortKey = attribute.Key("client.port") +) + +// ClientAddress returns an attribute KeyValue conforming to the +// "client.address" semantic conventions. It represents the client address - +// domain name if available without reverse DNS lookup; otherwise, IP address +// or Unix domain socket name. +func ClientAddress(val string) attribute.KeyValue { + return ClientAddressKey.String(val) +} + +// ClientPort returns an attribute KeyValue conforming to the "client.port" +// semantic conventions. It represents the client port number. +func ClientPort(val int) attribute.KeyValue { + return ClientPortKey.Int(val) +} + +// A cloud environment (e.g. GCP, Azure, AWS). +const ( + // CloudAccountIDKey is the attribute Key conforming to the + // "cloud.account.id" semantic conventions. It represents the cloud account + // ID the resource is assigned to. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '111111111111', 'opentelemetry' + CloudAccountIDKey = attribute.Key("cloud.account.id") + + // CloudAvailabilityZoneKey is the attribute Key conforming to the + // "cloud.availability_zone" semantic conventions. It represents the cloud + // regions often have multiple, isolated locations known as zones to + // increase availability. Availability zone represents the zone where the + // resource is running. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'us-east-1c' + // Note: Availability zones are called "zones" on Alibaba Cloud and Google + // Cloud. + CloudAvailabilityZoneKey = attribute.Key("cloud.availability_zone") + + // CloudPlatformKey is the attribute Key conforming to the "cloud.platform" + // semantic conventions. It represents the cloud platform in use. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Note: The prefix of the service SHOULD match the one specified in + // `cloud.provider`. + CloudPlatformKey = attribute.Key("cloud.platform") + + // CloudProviderKey is the attribute Key conforming to the "cloud.provider" + // semantic conventions. It represents the name of the cloud provider. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + CloudProviderKey = attribute.Key("cloud.provider") + + // CloudRegionKey is the attribute Key conforming to the "cloud.region" + // semantic conventions. It represents the geographical region the resource + // is running. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'us-central1', 'us-east-1' + // Note: Refer to your provider's docs to see the available regions, for + // example [Alibaba Cloud + // regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS + // regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), + // [Azure + // regions](https://azure.microsoft.com/global-infrastructure/geographies/), + // [Google Cloud regions](https://cloud.google.com/about/locations), or + // [Tencent Cloud + // regions](https://www.tencentcloud.com/document/product/213/6091). + CloudRegionKey = attribute.Key("cloud.region") + + // CloudResourceIDKey is the attribute Key conforming to the + // "cloud.resource_id" semantic conventions. It represents the cloud + // provider-specific native identifier of the monitored cloud resource + // (e.g. an + // [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // on AWS, a [fully qualified resource + // ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) + // on Azure, a [full resource + // name](https://cloud.google.com/apis/design/resource_names#full_resource_name) + // on GCP) + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function', + // '//run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID', + // '/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/' + // Note: On some cloud providers, it may not be possible to determine the + // full ID at startup, + // so it may be necessary to set `cloud.resource_id` as a span attribute + // instead. + // + // The exact value to use for `cloud.resource_id` depends on the cloud + // provider. + // The following well-known definitions MUST be used if you set this + // attribute and they apply: + // + // * **AWS Lambda:** The function + // [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + // Take care not to use the "invoked ARN" directly but replace any + // [alias + // suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) + // with the resolved function version, as the same runtime instance may + // be invokable with + // multiple different aliases. + // * **GCP:** The [URI of the + // resource](https://cloud.google.com/iam/docs/full-resource-names) + // * **Azure:** The [Fully Qualified Resource + // ID](https://docs.microsoft.com/rest/api/resources/resources/get-by-id) + // of the invoked function, + // *not* the function app, having the form + // `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`. + // This means that a span attribute MUST be used, as an Azure function + // app can host multiple functions that would usually share + // a TracerProvider. + CloudResourceIDKey = attribute.Key("cloud.resource_id") +) + +var ( + // Alibaba Cloud Elastic Compute Service + CloudPlatformAlibabaCloudECS = CloudPlatformKey.String("alibaba_cloud_ecs") + // Alibaba Cloud Function Compute + CloudPlatformAlibabaCloudFc = CloudPlatformKey.String("alibaba_cloud_fc") + // Red Hat OpenShift on Alibaba Cloud + CloudPlatformAlibabaCloudOpenshift = CloudPlatformKey.String("alibaba_cloud_openshift") + // AWS Elastic Compute Cloud + CloudPlatformAWSEC2 = CloudPlatformKey.String("aws_ec2") + // AWS Elastic Container Service + CloudPlatformAWSECS = CloudPlatformKey.String("aws_ecs") + // AWS Elastic Kubernetes Service + CloudPlatformAWSEKS = CloudPlatformKey.String("aws_eks") + // AWS Lambda + CloudPlatformAWSLambda = CloudPlatformKey.String("aws_lambda") + // AWS Elastic Beanstalk + CloudPlatformAWSElasticBeanstalk = CloudPlatformKey.String("aws_elastic_beanstalk") + // AWS App Runner + CloudPlatformAWSAppRunner = CloudPlatformKey.String("aws_app_runner") + // Red Hat OpenShift on AWS (ROSA) + CloudPlatformAWSOpenshift = CloudPlatformKey.String("aws_openshift") + // Azure Virtual Machines + CloudPlatformAzureVM = CloudPlatformKey.String("azure_vm") + // Azure Container Apps + CloudPlatformAzureContainerApps = CloudPlatformKey.String("azure_container_apps") + // Azure Container Instances + CloudPlatformAzureContainerInstances = CloudPlatformKey.String("azure_container_instances") + // Azure Kubernetes Service + CloudPlatformAzureAKS = CloudPlatformKey.String("azure_aks") + // Azure Functions + CloudPlatformAzureFunctions = CloudPlatformKey.String("azure_functions") + // Azure App Service + CloudPlatformAzureAppService = CloudPlatformKey.String("azure_app_service") + // Azure Red Hat OpenShift + CloudPlatformAzureOpenshift = CloudPlatformKey.String("azure_openshift") + // Google Bare Metal Solution (BMS) + CloudPlatformGCPBareMetalSolution = CloudPlatformKey.String("gcp_bare_metal_solution") + // Google Cloud Compute Engine (GCE) + CloudPlatformGCPComputeEngine = CloudPlatformKey.String("gcp_compute_engine") + // Google Cloud Run + CloudPlatformGCPCloudRun = CloudPlatformKey.String("gcp_cloud_run") + // Google Cloud Kubernetes Engine (GKE) + CloudPlatformGCPKubernetesEngine = CloudPlatformKey.String("gcp_kubernetes_engine") + // Google Cloud Functions (GCF) + CloudPlatformGCPCloudFunctions = CloudPlatformKey.String("gcp_cloud_functions") + // Google Cloud App Engine (GAE) + CloudPlatformGCPAppEngine = CloudPlatformKey.String("gcp_app_engine") + // Red Hat OpenShift on Google Cloud + CloudPlatformGCPOpenshift = CloudPlatformKey.String("gcp_openshift") + // Red Hat OpenShift on IBM Cloud + CloudPlatformIbmCloudOpenshift = CloudPlatformKey.String("ibm_cloud_openshift") + // Tencent Cloud Cloud Virtual Machine (CVM) + CloudPlatformTencentCloudCvm = CloudPlatformKey.String("tencent_cloud_cvm") + // Tencent Cloud Elastic Kubernetes Service (EKS) + CloudPlatformTencentCloudEKS = CloudPlatformKey.String("tencent_cloud_eks") + // Tencent Cloud Serverless Cloud Function (SCF) + CloudPlatformTencentCloudScf = CloudPlatformKey.String("tencent_cloud_scf") +) + +var ( + // Alibaba Cloud + CloudProviderAlibabaCloud = CloudProviderKey.String("alibaba_cloud") + // Amazon Web Services + CloudProviderAWS = CloudProviderKey.String("aws") + // Microsoft Azure + CloudProviderAzure = CloudProviderKey.String("azure") + // Google Cloud Platform + CloudProviderGCP = CloudProviderKey.String("gcp") + // Heroku Platform as a Service + CloudProviderHeroku = CloudProviderKey.String("heroku") + // IBM Cloud + CloudProviderIbmCloud = CloudProviderKey.String("ibm_cloud") + // Tencent Cloud + CloudProviderTencentCloud = CloudProviderKey.String("tencent_cloud") +) + +// CloudAccountID returns an attribute KeyValue conforming to the +// "cloud.account.id" semantic conventions. It represents the cloud account ID +// the resource is assigned to. +func CloudAccountID(val string) attribute.KeyValue { + return CloudAccountIDKey.String(val) +} + +// CloudAvailabilityZone returns an attribute KeyValue conforming to the +// "cloud.availability_zone" semantic conventions. It represents the cloud +// regions often have multiple, isolated locations known as zones to increase +// availability. Availability zone represents the zone where the resource is +// running. +func CloudAvailabilityZone(val string) attribute.KeyValue { + return CloudAvailabilityZoneKey.String(val) +} + +// CloudRegion returns an attribute KeyValue conforming to the +// "cloud.region" semantic conventions. It represents the geographical region +// the resource is running. +func CloudRegion(val string) attribute.KeyValue { + return CloudRegionKey.String(val) +} + +// CloudResourceID returns an attribute KeyValue conforming to the +// "cloud.resource_id" semantic conventions. It represents the cloud +// provider-specific native identifier of the monitored cloud resource (e.g. an +// [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) +// on AWS, a [fully qualified resource +// ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on +// Azure, a [full resource +// name](https://cloud.google.com/apis/design/resource_names#full_resource_name) +// on GCP) +func CloudResourceID(val string) attribute.KeyValue { + return CloudResourceIDKey.String(val) +} + +// Attributes for CloudEvents. +const ( + // CloudeventsEventIDKey is the attribute Key conforming to the + // "cloudevents.event_id" semantic conventions. It represents the + // [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) + // uniquely identifies the event. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '123e4567-e89b-12d3-a456-426614174000', '0001' + CloudeventsEventIDKey = attribute.Key("cloudevents.event_id") + + // CloudeventsEventSourceKey is the attribute Key conforming to the + // "cloudevents.event_source" semantic conventions. It represents the + // [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) + // identifies the context in which an event happened. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'https://github.com/cloudevents', + // '/cloudevents/spec/pull/123', 'my-service' + CloudeventsEventSourceKey = attribute.Key("cloudevents.event_source") + + // CloudeventsEventSpecVersionKey is the attribute Key conforming to the + // "cloudevents.event_spec_version" semantic conventions. It represents the + // [version of the CloudEvents + // specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) + // which the event uses. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '1.0' + CloudeventsEventSpecVersionKey = attribute.Key("cloudevents.event_spec_version") + + // CloudeventsEventSubjectKey is the attribute Key conforming to the + // "cloudevents.event_subject" semantic conventions. It represents the + // [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) + // of the event in the context of the event producer (identified by + // source). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'mynewfile.jpg' + CloudeventsEventSubjectKey = attribute.Key("cloudevents.event_subject") + + // CloudeventsEventTypeKey is the attribute Key conforming to the + // "cloudevents.event_type" semantic conventions. It represents the + // [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) + // contains a value describing the type of event related to the originating + // occurrence. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'com.github.pull_request.opened', + // 'com.example.object.deleted.v2' + CloudeventsEventTypeKey = attribute.Key("cloudevents.event_type") +) + +// CloudeventsEventID returns an attribute KeyValue conforming to the +// "cloudevents.event_id" semantic conventions. It represents the +// [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) +// uniquely identifies the event. +func CloudeventsEventID(val string) attribute.KeyValue { + return CloudeventsEventIDKey.String(val) +} + +// CloudeventsEventSource returns an attribute KeyValue conforming to the +// "cloudevents.event_source" semantic conventions. It represents the +// [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) +// identifies the context in which an event happened. +func CloudeventsEventSource(val string) attribute.KeyValue { + return CloudeventsEventSourceKey.String(val) +} + +// CloudeventsEventSpecVersion returns an attribute KeyValue conforming to +// the "cloudevents.event_spec_version" semantic conventions. It represents the +// [version of the CloudEvents +// specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) +// which the event uses. +func CloudeventsEventSpecVersion(val string) attribute.KeyValue { + return CloudeventsEventSpecVersionKey.String(val) +} + +// CloudeventsEventSubject returns an attribute KeyValue conforming to the +// "cloudevents.event_subject" semantic conventions. It represents the +// [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) +// of the event in the context of the event producer (identified by source). +func CloudeventsEventSubject(val string) attribute.KeyValue { + return CloudeventsEventSubjectKey.String(val) +} + +// CloudeventsEventType returns an attribute KeyValue conforming to the +// "cloudevents.event_type" semantic conventions. It represents the +// [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) +// contains a value describing the type of event related to the originating +// occurrence. +func CloudeventsEventType(val string) attribute.KeyValue { + return CloudeventsEventTypeKey.String(val) +} + +// These attributes allow to report this unit of code and therefore to provide +// more context about the span. +const ( + // CodeColumnKey is the attribute Key conforming to the "code.column" + // semantic conventions. It represents the column number in `code.filepath` + // best representing the operation. It SHOULD point within the code unit + // named in `code.function`. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 16 + CodeColumnKey = attribute.Key("code.column") + + // CodeFilepathKey is the attribute Key conforming to the "code.filepath" + // semantic conventions. It represents the source code file name that + // identifies the code unit as uniquely as possible (preferably an absolute + // file path). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '/usr/local/MyApplication/content_root/app/index.php' + CodeFilepathKey = attribute.Key("code.filepath") + + // CodeFunctionKey is the attribute Key conforming to the "code.function" + // semantic conventions. It represents the method or function name, or + // equivalent (usually rightmost part of the code unit's name). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'serveRequest' + CodeFunctionKey = attribute.Key("code.function") + + // CodeLineNumberKey is the attribute Key conforming to the "code.lineno" + // semantic conventions. It represents the line number in `code.filepath` + // best representing the operation. It SHOULD point within the code unit + // named in `code.function`. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 42 + CodeLineNumberKey = attribute.Key("code.lineno") + + // CodeNamespaceKey is the attribute Key conforming to the "code.namespace" + // semantic conventions. It represents the "namespace" within which + // `code.function` is defined. Usually the qualified class or module name, + // such that `code.namespace` + some separator + `code.function` form a + // unique identifier for the code unit. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'com.example.MyHTTPService' + CodeNamespaceKey = attribute.Key("code.namespace") + + // CodeStacktraceKey is the attribute Key conforming to the + // "code.stacktrace" semantic conventions. It represents a stacktrace as a + // string in the natural representation for the language runtime. The + // representation is to be determined and documented by each language SIG. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'at + // com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\n at ' + // 'com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\n at ' + // 'com.example.GenerateTrace.main(GenerateTrace.java:5)' + CodeStacktraceKey = attribute.Key("code.stacktrace") +) + +// CodeColumn returns an attribute KeyValue conforming to the "code.column" +// semantic conventions. It represents the column number in `code.filepath` +// best representing the operation. It SHOULD point within the code unit named +// in `code.function`. +func CodeColumn(val int) attribute.KeyValue { + return CodeColumnKey.Int(val) +} + +// CodeFilepath returns an attribute KeyValue conforming to the +// "code.filepath" semantic conventions. It represents the source code file +// name that identifies the code unit as uniquely as possible (preferably an +// absolute file path). +func CodeFilepath(val string) attribute.KeyValue { + return CodeFilepathKey.String(val) +} + +// CodeFunction returns an attribute KeyValue conforming to the +// "code.function" semantic conventions. It represents the method or function +// name, or equivalent (usually rightmost part of the code unit's name). +func CodeFunction(val string) attribute.KeyValue { + return CodeFunctionKey.String(val) +} + +// CodeLineNumber returns an attribute KeyValue conforming to the "code.lineno" +// semantic conventions. It represents the line number in `code.filepath` best +// representing the operation. It SHOULD point within the code unit named in +// `code.function`. +func CodeLineNumber(val int) attribute.KeyValue { + return CodeLineNumberKey.Int(val) +} + +// CodeNamespace returns an attribute KeyValue conforming to the +// "code.namespace" semantic conventions. It represents the "namespace" within +// which `code.function` is defined. Usually the qualified class or module +// name, such that `code.namespace` + some separator + `code.function` form a +// unique identifier for the code unit. +func CodeNamespace(val string) attribute.KeyValue { + return CodeNamespaceKey.String(val) +} + +// CodeStacktrace returns an attribute KeyValue conforming to the +// "code.stacktrace" semantic conventions. It represents a stacktrace as a +// string in the natural representation for the language runtime. The +// representation is to be determined and documented by each language SIG. +func CodeStacktrace(val string) attribute.KeyValue { + return CodeStacktraceKey.String(val) +} + +// A container instance. +const ( + // ContainerCommandKey is the attribute Key conforming to the + // "container.command" semantic conventions. It represents the command used + // to run the container (i.e. the command name). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'otelcontribcol' + // Note: If using embedded credentials or sensitive data, it is recommended + // to remove them to prevent potential leakage. + ContainerCommandKey = attribute.Key("container.command") + + // ContainerCommandArgsKey is the attribute Key conforming to the + // "container.command_args" semantic conventions. It represents the all the + // command arguments (including the command/executable itself) run by the + // container. [2] + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'otelcontribcol, --config, config.yaml' + ContainerCommandArgsKey = attribute.Key("container.command_args") + + // ContainerCommandLineKey is the attribute Key conforming to the + // "container.command_line" semantic conventions. It represents the full + // command run by the container as a single string representing the full + // command. [2] + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'otelcontribcol --config config.yaml' + ContainerCommandLineKey = attribute.Key("container.command_line") + + // ContainerCPUStateKey is the attribute Key conforming to the + // "container.cpu.state" semantic conventions. It represents the CPU state + // for this data point. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'user', 'kernel' + ContainerCPUStateKey = attribute.Key("container.cpu.state") + + // ContainerIDKey is the attribute Key conforming to the "container.id" + // semantic conventions. It represents the container ID. Usually a UUID, as + // for example used to [identify Docker + // containers](https://docs.docker.com/engine/reference/run/#container-identification). + // The UUID might be abbreviated. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'a3bf90e006b2' + ContainerIDKey = attribute.Key("container.id") + + // ContainerImageIDKey is the attribute Key conforming to the + // "container.image.id" semantic conventions. It represents the runtime + // specific image identifier. Usually a hash algorithm followed by a UUID. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: + // 'sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f' + // Note: Docker defines a sha256 of the image id; `container.image.id` + // corresponds to the `Image` field from the Docker container inspect + // [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) + // endpoint. + // K8S defines a link to the container registry repository with digest + // `"imageID": "registry.azurecr.io + // /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. + // The ID is assigned by the container runtime and can vary in different + // environments. Consider using `oci.manifest.digest` if it is important to + // identify the same image in different environments/runtimes. + ContainerImageIDKey = attribute.Key("container.image.id") + + // ContainerImageNameKey is the attribute Key conforming to the + // "container.image.name" semantic conventions. It represents the name of + // the image the container was built on. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'gcr.io/opentelemetry/operator' + ContainerImageNameKey = attribute.Key("container.image.name") + + // ContainerImageRepoDigestsKey is the attribute Key conforming to the + // "container.image.repo_digests" semantic conventions. It represents the + // repo digests of the container image as provided by the container + // runtime. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: + // 'example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb', + // 'internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578' + // Note: + // [Docker](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect) + // and + // [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) + // report those under the `RepoDigests` field. + ContainerImageRepoDigestsKey = attribute.Key("container.image.repo_digests") + + // ContainerImageTagsKey is the attribute Key conforming to the + // "container.image.tags" semantic conventions. It represents the container + // image tags. An example can be found in [Docker Image + // Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). + // Should be only the `` section of the full name for example from + // `registry.example.com/my-org/my-image:`. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'v1.27.1', '3.5.7-0' + ContainerImageTagsKey = attribute.Key("container.image.tags") + + // ContainerNameKey is the attribute Key conforming to the "container.name" + // semantic conventions. It represents the container name used by container + // runtime. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry-autoconf' + ContainerNameKey = attribute.Key("container.name") + + // ContainerRuntimeKey is the attribute Key conforming to the + // "container.runtime" semantic conventions. It represents the container + // runtime managing this container. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'docker', 'containerd', 'rkt' + ContainerRuntimeKey = attribute.Key("container.runtime") +) + +var ( + // When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows) + ContainerCPUStateUser = ContainerCPUStateKey.String("user") + // When CPU is used by the system (host OS) + ContainerCPUStateSystem = ContainerCPUStateKey.String("system") + // When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows) + ContainerCPUStateKernel = ContainerCPUStateKey.String("kernel") +) + +// ContainerCommand returns an attribute KeyValue conforming to the +// "container.command" semantic conventions. It represents the command used to +// run the container (i.e. the command name). +func ContainerCommand(val string) attribute.KeyValue { + return ContainerCommandKey.String(val) +} + +// ContainerCommandArgs returns an attribute KeyValue conforming to the +// "container.command_args" semantic conventions. It represents the all the +// command arguments (including the command/executable itself) run by the +// container. [2] +func ContainerCommandArgs(val ...string) attribute.KeyValue { + return ContainerCommandArgsKey.StringSlice(val) +} + +// ContainerCommandLine returns an attribute KeyValue conforming to the +// "container.command_line" semantic conventions. It represents the full +// command run by the container as a single string representing the full +// command. [2] +func ContainerCommandLine(val string) attribute.KeyValue { + return ContainerCommandLineKey.String(val) +} + +// ContainerID returns an attribute KeyValue conforming to the +// "container.id" semantic conventions. It represents the container ID. Usually +// a UUID, as for example used to [identify Docker +// containers](https://docs.docker.com/engine/reference/run/#container-identification). +// The UUID might be abbreviated. +func ContainerID(val string) attribute.KeyValue { + return ContainerIDKey.String(val) +} + +// ContainerImageID returns an attribute KeyValue conforming to the +// "container.image.id" semantic conventions. It represents the runtime +// specific image identifier. Usually a hash algorithm followed by a UUID. +func ContainerImageID(val string) attribute.KeyValue { + return ContainerImageIDKey.String(val) +} + +// ContainerImageName returns an attribute KeyValue conforming to the +// "container.image.name" semantic conventions. It represents the name of the +// image the container was built on. +func ContainerImageName(val string) attribute.KeyValue { + return ContainerImageNameKey.String(val) +} + +// ContainerImageRepoDigests returns an attribute KeyValue conforming to the +// "container.image.repo_digests" semantic conventions. It represents the repo +// digests of the container image as provided by the container runtime. +func ContainerImageRepoDigests(val ...string) attribute.KeyValue { + return ContainerImageRepoDigestsKey.StringSlice(val) +} + +// ContainerImageTags returns an attribute KeyValue conforming to the +// "container.image.tags" semantic conventions. It represents the container +// image tags. An example can be found in [Docker Image +// Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). +// Should be only the `` section of the full name for example from +// `registry.example.com/my-org/my-image:`. +func ContainerImageTags(val ...string) attribute.KeyValue { + return ContainerImageTagsKey.StringSlice(val) +} + +// ContainerName returns an attribute KeyValue conforming to the +// "container.name" semantic conventions. It represents the container name used +// by container runtime. +func ContainerName(val string) attribute.KeyValue { + return ContainerNameKey.String(val) +} + +// ContainerRuntime returns an attribute KeyValue conforming to the +// "container.runtime" semantic conventions. It represents the container +// runtime managing this container. +func ContainerRuntime(val string) attribute.KeyValue { + return ContainerRuntimeKey.String(val) +} + +// This group defines the attributes used to describe telemetry in the context +// of databases. +const ( + // DBClientConnectionsPoolNameKey is the attribute Key conforming to the + // "db.client.connections.pool.name" semantic conventions. It represents + // the name of the connection pool; unique within the instrumented + // application. In case the connection pool implementation doesn't provide + // a name, instrumentation should use a combination of `server.address` and + // `server.port` attributes formatted as `server.address:server.port`. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'myDataSource' + DBClientConnectionsPoolNameKey = attribute.Key("db.client.connections.pool.name") + + // DBClientConnectionsStateKey is the attribute Key conforming to the + // "db.client.connections.state" semantic conventions. It represents the + // state of a connection in the pool + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'idle' + DBClientConnectionsStateKey = attribute.Key("db.client.connections.state") + + // DBCollectionNameKey is the attribute Key conforming to the + // "db.collection.name" semantic conventions. It represents the name of a + // collection (table, container) within the database. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'public.users', 'customers' + // Note: If the collection name is parsed from the query, it SHOULD match + // the value provided in the query and may be qualified with the schema and + // database name. + // It is RECOMMENDED to capture the value as provided by the application + // without attempting to do any case normalization. + DBCollectionNameKey = attribute.Key("db.collection.name") + + // DBNamespaceKey is the attribute Key conforming to the "db.namespace" + // semantic conventions. It represents the name of the database, fully + // qualified within the server address and port. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'customers', 'test.users' + // Note: If a database system has multiple namespace components, they + // SHOULD be concatenated (potentially using database system specific + // conventions) from most general to most specific namespace component, and + // more specific namespaces SHOULD NOT be captured without the more general + // namespaces, to ensure that "startswith" queries for the more general + // namespaces will be valid. + // Semantic conventions for individual database systems SHOULD document + // what `db.namespace` means in the context of that system. + // It is RECOMMENDED to capture the value as provided by the application + // without attempting to do any case normalization. + DBNamespaceKey = attribute.Key("db.namespace") + + // DBOperationNameKey is the attribute Key conforming to the + // "db.operation.name" semantic conventions. It represents the name of the + // operation or command being executed. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'findAndModify', 'HMSET', 'SELECT' + // Note: It is RECOMMENDED to capture the value as provided by the + // application without attempting to do any case normalization. + DBOperationNameKey = attribute.Key("db.operation.name") + + // DBQueryTextKey is the attribute Key conforming to the "db.query.text" + // semantic conventions. It represents the database query being executed. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'SELECT * FROM wuser_table where username = ?', 'SET mykey + // "WuValue"' + DBQueryTextKey = attribute.Key("db.query.text") + + // DBSystemKey is the attribute Key conforming to the "db.system" semantic + // conventions. It represents the database management system (DBMS) product + // as identified by the client instrumentation. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Note: The actual DBMS may differ from the one identified by the client. + // For example, when using PostgreSQL client libraries to connect to a + // CockroachDB, the `db.system` is set to `postgresql` based on the + // instrumentation's best knowledge. + DBSystemKey = attribute.Key("db.system") +) + +var ( + // idle + DBClientConnectionsStateIdle = DBClientConnectionsStateKey.String("idle") + // used + DBClientConnectionsStateUsed = DBClientConnectionsStateKey.String("used") +) + +var ( + // Some other SQL database. Fallback only. See notes + DBSystemOtherSQL = DBSystemKey.String("other_sql") + // Microsoft SQL Server + DBSystemMSSQL = DBSystemKey.String("mssql") + // Microsoft SQL Server Compact + DBSystemMssqlcompact = DBSystemKey.String("mssqlcompact") + // MySQL + DBSystemMySQL = DBSystemKey.String("mysql") + // Oracle Database + DBSystemOracle = DBSystemKey.String("oracle") + // IBM DB2 + DBSystemDB2 = DBSystemKey.String("db2") + // PostgreSQL + DBSystemPostgreSQL = DBSystemKey.String("postgresql") + // Amazon Redshift + DBSystemRedshift = DBSystemKey.String("redshift") + // Apache Hive + DBSystemHive = DBSystemKey.String("hive") + // Cloudscape + DBSystemCloudscape = DBSystemKey.String("cloudscape") + // HyperSQL DataBase + DBSystemHSQLDB = DBSystemKey.String("hsqldb") + // Progress Database + DBSystemProgress = DBSystemKey.String("progress") + // SAP MaxDB + DBSystemMaxDB = DBSystemKey.String("maxdb") + // SAP HANA + DBSystemHanaDB = DBSystemKey.String("hanadb") + // Ingres + DBSystemIngres = DBSystemKey.String("ingres") + // FirstSQL + DBSystemFirstSQL = DBSystemKey.String("firstsql") + // EnterpriseDB + DBSystemEDB = DBSystemKey.String("edb") + // InterSystems Caché + DBSystemCache = DBSystemKey.String("cache") + // Adabas (Adaptable Database System) + DBSystemAdabas = DBSystemKey.String("adabas") + // Firebird + DBSystemFirebird = DBSystemKey.String("firebird") + // Apache Derby + DBSystemDerby = DBSystemKey.String("derby") + // FileMaker + DBSystemFilemaker = DBSystemKey.String("filemaker") + // Informix + DBSystemInformix = DBSystemKey.String("informix") + // InstantDB + DBSystemInstantDB = DBSystemKey.String("instantdb") + // InterBase + DBSystemInterbase = DBSystemKey.String("interbase") + // MariaDB + DBSystemMariaDB = DBSystemKey.String("mariadb") + // Netezza + DBSystemNetezza = DBSystemKey.String("netezza") + // Pervasive PSQL + DBSystemPervasive = DBSystemKey.String("pervasive") + // PointBase + DBSystemPointbase = DBSystemKey.String("pointbase") + // SQLite + DBSystemSqlite = DBSystemKey.String("sqlite") + // Sybase + DBSystemSybase = DBSystemKey.String("sybase") + // Teradata + DBSystemTeradata = DBSystemKey.String("teradata") + // Vertica + DBSystemVertica = DBSystemKey.String("vertica") + // H2 + DBSystemH2 = DBSystemKey.String("h2") + // ColdFusion IMQ + DBSystemColdfusion = DBSystemKey.String("coldfusion") + // Apache Cassandra + DBSystemCassandra = DBSystemKey.String("cassandra") + // Apache HBase + DBSystemHBase = DBSystemKey.String("hbase") + // MongoDB + DBSystemMongoDB = DBSystemKey.String("mongodb") + // Redis + DBSystemRedis = DBSystemKey.String("redis") + // Couchbase + DBSystemCouchbase = DBSystemKey.String("couchbase") + // CouchDB + DBSystemCouchDB = DBSystemKey.String("couchdb") + // Microsoft Azure Cosmos DB + DBSystemCosmosDB = DBSystemKey.String("cosmosdb") + // Amazon DynamoDB + DBSystemDynamoDB = DBSystemKey.String("dynamodb") + // Neo4j + DBSystemNeo4j = DBSystemKey.String("neo4j") + // Apache Geode + DBSystemGeode = DBSystemKey.String("geode") + // Elasticsearch + DBSystemElasticsearch = DBSystemKey.String("elasticsearch") + // Memcached + DBSystemMemcached = DBSystemKey.String("memcached") + // CockroachDB + DBSystemCockroachdb = DBSystemKey.String("cockroachdb") + // OpenSearch + DBSystemOpensearch = DBSystemKey.String("opensearch") + // ClickHouse + DBSystemClickhouse = DBSystemKey.String("clickhouse") + // Cloud Spanner + DBSystemSpanner = DBSystemKey.String("spanner") + // Trino + DBSystemTrino = DBSystemKey.String("trino") +) + +// DBClientConnectionsPoolName returns an attribute KeyValue conforming to +// the "db.client.connections.pool.name" semantic conventions. It represents +// the name of the connection pool; unique within the instrumented application. +// In case the connection pool implementation doesn't provide a name, +// instrumentation should use a combination of `server.address` and +// `server.port` attributes formatted as `server.address:server.port`. +func DBClientConnectionsPoolName(val string) attribute.KeyValue { + return DBClientConnectionsPoolNameKey.String(val) +} + +// DBCollectionName returns an attribute KeyValue conforming to the +// "db.collection.name" semantic conventions. It represents the name of a +// collection (table, container) within the database. +func DBCollectionName(val string) attribute.KeyValue { + return DBCollectionNameKey.String(val) +} + +// DBNamespace returns an attribute KeyValue conforming to the +// "db.namespace" semantic conventions. It represents the name of the database, +// fully qualified within the server address and port. +func DBNamespace(val string) attribute.KeyValue { + return DBNamespaceKey.String(val) +} + +// DBOperationName returns an attribute KeyValue conforming to the +// "db.operation.name" semantic conventions. It represents the name of the +// operation or command being executed. +func DBOperationName(val string) attribute.KeyValue { + return DBOperationNameKey.String(val) +} + +// DBQueryText returns an attribute KeyValue conforming to the +// "db.query.text" semantic conventions. It represents the database query being +// executed. +func DBQueryText(val string) attribute.KeyValue { + return DBQueryTextKey.String(val) +} + +// This group defines attributes for Cassandra. +const ( + // DBCassandraConsistencyLevelKey is the attribute Key conforming to the + // "db.cassandra.consistency_level" semantic conventions. It represents the + // consistency level of the query. Based on consistency values from + // [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + DBCassandraConsistencyLevelKey = attribute.Key("db.cassandra.consistency_level") + + // DBCassandraCoordinatorDCKey is the attribute Key conforming to the + // "db.cassandra.coordinator.dc" semantic conventions. It represents the + // data center of the coordinating node for a query. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'us-west-2' + DBCassandraCoordinatorDCKey = attribute.Key("db.cassandra.coordinator.dc") + + // DBCassandraCoordinatorIDKey is the attribute Key conforming to the + // "db.cassandra.coordinator.id" semantic conventions. It represents the ID + // of the coordinating node for a query. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'be13faa2-8574-4d71-926d-27f16cf8a7af' + DBCassandraCoordinatorIDKey = attribute.Key("db.cassandra.coordinator.id") + + // DBCassandraIdempotenceKey is the attribute Key conforming to the + // "db.cassandra.idempotence" semantic conventions. It represents the + // whether or not the query is idempotent. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + DBCassandraIdempotenceKey = attribute.Key("db.cassandra.idempotence") + + // DBCassandraPageSizeKey is the attribute Key conforming to the + // "db.cassandra.page_size" semantic conventions. It represents the fetch + // size used for paging, i.e. how many rows will be returned at once. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 5000 + DBCassandraPageSizeKey = attribute.Key("db.cassandra.page_size") + + // DBCassandraSpeculativeExecutionCountKey is the attribute Key conforming + // to the "db.cassandra.speculative_execution_count" semantic conventions. + // It represents the number of times a query was speculatively executed. + // Not set or `0` if the query was not executed speculatively. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 0, 2 + DBCassandraSpeculativeExecutionCountKey = attribute.Key("db.cassandra.speculative_execution_count") +) + +var ( + // all + DBCassandraConsistencyLevelAll = DBCassandraConsistencyLevelKey.String("all") + // each_quorum + DBCassandraConsistencyLevelEachQuorum = DBCassandraConsistencyLevelKey.String("each_quorum") + // quorum + DBCassandraConsistencyLevelQuorum = DBCassandraConsistencyLevelKey.String("quorum") + // local_quorum + DBCassandraConsistencyLevelLocalQuorum = DBCassandraConsistencyLevelKey.String("local_quorum") + // one + DBCassandraConsistencyLevelOne = DBCassandraConsistencyLevelKey.String("one") + // two + DBCassandraConsistencyLevelTwo = DBCassandraConsistencyLevelKey.String("two") + // three + DBCassandraConsistencyLevelThree = DBCassandraConsistencyLevelKey.String("three") + // local_one + DBCassandraConsistencyLevelLocalOne = DBCassandraConsistencyLevelKey.String("local_one") + // any + DBCassandraConsistencyLevelAny = DBCassandraConsistencyLevelKey.String("any") + // serial + DBCassandraConsistencyLevelSerial = DBCassandraConsistencyLevelKey.String("serial") + // local_serial + DBCassandraConsistencyLevelLocalSerial = DBCassandraConsistencyLevelKey.String("local_serial") +) + +// DBCassandraCoordinatorDC returns an attribute KeyValue conforming to the +// "db.cassandra.coordinator.dc" semantic conventions. It represents the data +// center of the coordinating node for a query. +func DBCassandraCoordinatorDC(val string) attribute.KeyValue { + return DBCassandraCoordinatorDCKey.String(val) +} + +// DBCassandraCoordinatorID returns an attribute KeyValue conforming to the +// "db.cassandra.coordinator.id" semantic conventions. It represents the ID of +// the coordinating node for a query. +func DBCassandraCoordinatorID(val string) attribute.KeyValue { + return DBCassandraCoordinatorIDKey.String(val) +} + +// DBCassandraIdempotence returns an attribute KeyValue conforming to the +// "db.cassandra.idempotence" semantic conventions. It represents the whether +// or not the query is idempotent. +func DBCassandraIdempotence(val bool) attribute.KeyValue { + return DBCassandraIdempotenceKey.Bool(val) +} + +// DBCassandraPageSize returns an attribute KeyValue conforming to the +// "db.cassandra.page_size" semantic conventions. It represents the fetch size +// used for paging, i.e. how many rows will be returned at once. +func DBCassandraPageSize(val int) attribute.KeyValue { + return DBCassandraPageSizeKey.Int(val) +} + +// DBCassandraSpeculativeExecutionCount returns an attribute KeyValue +// conforming to the "db.cassandra.speculative_execution_count" semantic +// conventions. It represents the number of times a query was speculatively +// executed. Not set or `0` if the query was not executed speculatively. +func DBCassandraSpeculativeExecutionCount(val int) attribute.KeyValue { + return DBCassandraSpeculativeExecutionCountKey.Int(val) +} + +// This group defines attributes for Azure Cosmos DB. +const ( + // DBCosmosDBClientIDKey is the attribute Key conforming to the + // "db.cosmosdb.client_id" semantic conventions. It represents the unique + // Cosmos client instance id. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '3ba4827d-4422-483f-b59f-85b74211c11d' + DBCosmosDBClientIDKey = attribute.Key("db.cosmosdb.client_id") + + // DBCosmosDBConnectionModeKey is the attribute Key conforming to the + // "db.cosmosdb.connection_mode" semantic conventions. It represents the + // cosmos client connection mode. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + DBCosmosDBConnectionModeKey = attribute.Key("db.cosmosdb.connection_mode") + + // DBCosmosDBOperationTypeKey is the attribute Key conforming to the + // "db.cosmosdb.operation_type" semantic conventions. It represents the + // cosmosDB Operation Type. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + DBCosmosDBOperationTypeKey = attribute.Key("db.cosmosdb.operation_type") + + // DBCosmosDBRequestChargeKey is the attribute Key conforming to the + // "db.cosmosdb.request_charge" semantic conventions. It represents the rU + // consumed for that operation + // + // Type: double + // RequirementLevel: Optional + // Stability: experimental + // Examples: 46.18, 1.0 + DBCosmosDBRequestChargeKey = attribute.Key("db.cosmosdb.request_charge") + + // DBCosmosDBRequestContentLengthKey is the attribute Key conforming to the + // "db.cosmosdb.request_content_length" semantic conventions. It represents + // the request payload size in bytes + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + DBCosmosDBRequestContentLengthKey = attribute.Key("db.cosmosdb.request_content_length") + + // DBCosmosDBStatusCodeKey is the attribute Key conforming to the + // "db.cosmosdb.status_code" semantic conventions. It represents the cosmos + // DB status code. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 200, 201 + DBCosmosDBStatusCodeKey = attribute.Key("db.cosmosdb.status_code") + + // DBCosmosDBSubStatusCodeKey is the attribute Key conforming to the + // "db.cosmosdb.sub_status_code" semantic conventions. It represents the + // cosmos DB sub status code. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1000, 1002 + DBCosmosDBSubStatusCodeKey = attribute.Key("db.cosmosdb.sub_status_code") +) + +var ( + // Gateway (HTTP) connections mode + DBCosmosDBConnectionModeGateway = DBCosmosDBConnectionModeKey.String("gateway") + // Direct connection + DBCosmosDBConnectionModeDirect = DBCosmosDBConnectionModeKey.String("direct") +) + +var ( + // invalid + DBCosmosDBOperationTypeInvalid = DBCosmosDBOperationTypeKey.String("Invalid") + // create + DBCosmosDBOperationTypeCreate = DBCosmosDBOperationTypeKey.String("Create") + // patch + DBCosmosDBOperationTypePatch = DBCosmosDBOperationTypeKey.String("Patch") + // read + DBCosmosDBOperationTypeRead = DBCosmosDBOperationTypeKey.String("Read") + // read_feed + DBCosmosDBOperationTypeReadFeed = DBCosmosDBOperationTypeKey.String("ReadFeed") + // delete + DBCosmosDBOperationTypeDelete = DBCosmosDBOperationTypeKey.String("Delete") + // replace + DBCosmosDBOperationTypeReplace = DBCosmosDBOperationTypeKey.String("Replace") + // execute + DBCosmosDBOperationTypeExecute = DBCosmosDBOperationTypeKey.String("Execute") + // query + DBCosmosDBOperationTypeQuery = DBCosmosDBOperationTypeKey.String("Query") + // head + DBCosmosDBOperationTypeHead = DBCosmosDBOperationTypeKey.String("Head") + // head_feed + DBCosmosDBOperationTypeHeadFeed = DBCosmosDBOperationTypeKey.String("HeadFeed") + // upsert + DBCosmosDBOperationTypeUpsert = DBCosmosDBOperationTypeKey.String("Upsert") + // batch + DBCosmosDBOperationTypeBatch = DBCosmosDBOperationTypeKey.String("Batch") + // query_plan + DBCosmosDBOperationTypeQueryPlan = DBCosmosDBOperationTypeKey.String("QueryPlan") + // execute_javascript + DBCosmosDBOperationTypeExecuteJavascript = DBCosmosDBOperationTypeKey.String("ExecuteJavaScript") +) + +// DBCosmosDBClientID returns an attribute KeyValue conforming to the +// "db.cosmosdb.client_id" semantic conventions. It represents the unique +// Cosmos client instance id. +func DBCosmosDBClientID(val string) attribute.KeyValue { + return DBCosmosDBClientIDKey.String(val) +} + +// DBCosmosDBRequestCharge returns an attribute KeyValue conforming to the +// "db.cosmosdb.request_charge" semantic conventions. It represents the rU +// consumed for that operation +func DBCosmosDBRequestCharge(val float64) attribute.KeyValue { + return DBCosmosDBRequestChargeKey.Float64(val) +} + +// DBCosmosDBRequestContentLength returns an attribute KeyValue conforming +// to the "db.cosmosdb.request_content_length" semantic conventions. It +// represents the request payload size in bytes +func DBCosmosDBRequestContentLength(val int) attribute.KeyValue { + return DBCosmosDBRequestContentLengthKey.Int(val) +} + +// DBCosmosDBStatusCode returns an attribute KeyValue conforming to the +// "db.cosmosdb.status_code" semantic conventions. It represents the cosmos DB +// status code. +func DBCosmosDBStatusCode(val int) attribute.KeyValue { + return DBCosmosDBStatusCodeKey.Int(val) +} + +// DBCosmosDBSubStatusCode returns an attribute KeyValue conforming to the +// "db.cosmosdb.sub_status_code" semantic conventions. It represents the cosmos +// DB sub status code. +func DBCosmosDBSubStatusCode(val int) attribute.KeyValue { + return DBCosmosDBSubStatusCodeKey.Int(val) +} + +// This group defines attributes for Elasticsearch. +const ( + // DBElasticsearchClusterNameKey is the attribute Key conforming to the + // "db.elasticsearch.cluster.name" semantic conventions. It represents the + // represents the identifier of an Elasticsearch cluster. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'e9106fc68e3044f0b1475b04bf4ffd5f' + DBElasticsearchClusterNameKey = attribute.Key("db.elasticsearch.cluster.name") + + // DBElasticsearchNodeNameKey is the attribute Key conforming to the + // "db.elasticsearch.node.name" semantic conventions. It represents the + // represents the human-readable identifier of the node/instance to which a + // request was routed. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'instance-0000000001' + DBElasticsearchNodeNameKey = attribute.Key("db.elasticsearch.node.name") +) + +// DBElasticsearchClusterName returns an attribute KeyValue conforming to +// the "db.elasticsearch.cluster.name" semantic conventions. It represents the +// represents the identifier of an Elasticsearch cluster. +func DBElasticsearchClusterName(val string) attribute.KeyValue { + return DBElasticsearchClusterNameKey.String(val) +} + +// DBElasticsearchNodeName returns an attribute KeyValue conforming to the +// "db.elasticsearch.node.name" semantic conventions. It represents the +// represents the human-readable identifier of the node/instance to which a +// request was routed. +func DBElasticsearchNodeName(val string) attribute.KeyValue { + return DBElasticsearchNodeNameKey.String(val) +} + +// Attributes for software deployments. +const ( + // DeploymentEnvironmentKey is the attribute Key conforming to the + // "deployment.environment" semantic conventions. It represents the name of + // the [deployment + // environment](https://wikipedia.org/wiki/Deployment_environment) (aka + // deployment tier). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'staging', 'production' + // Note: `deployment.environment` does not affect the uniqueness + // constraints defined through + // the `service.namespace`, `service.name` and `service.instance.id` + // resource attributes. + // This implies that resources carrying the following attribute + // combinations MUST be + // considered to be identifying the same service: + // + // * `service.name=frontend`, `deployment.environment=production` + // * `service.name=frontend`, `deployment.environment=staging`. + DeploymentEnvironmentKey = attribute.Key("deployment.environment") +) + +// DeploymentEnvironment returns an attribute KeyValue conforming to the +// "deployment.environment" semantic conventions. It represents the name of the +// [deployment environment](https://wikipedia.org/wiki/Deployment_environment) +// (aka deployment tier). +func DeploymentEnvironment(val string) attribute.KeyValue { + return DeploymentEnvironmentKey.String(val) +} + +// Attributes that represents an occurrence of a lifecycle transition on the +// Android platform. +const ( + // AndroidStateKey is the attribute Key conforming to the "android.state" + // semantic conventions. It represents the deprecated use the + // `device.app.lifecycle` event definition including `android.state` as a + // payload field instead. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Note: The Android lifecycle states are defined in [Activity lifecycle + // callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), + // and from which the `OS identifiers` are derived. + AndroidStateKey = attribute.Key("android.state") +) + +var ( + // Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time + AndroidStateCreated = AndroidStateKey.String("created") + // Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state + AndroidStateBackground = AndroidStateKey.String("background") + // Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states + AndroidStateForeground = AndroidStateKey.String("foreground") +) + +// These attributes may be used to describe the receiver of a network +// exchange/packet. These should be used when there is no client/server +// relationship between the two sides, or when that relationship is unknown. +// This covers low-level network interactions (e.g. packet tracing) where you +// don't know if there was a connection or which side initiated it. This also +// covers unidirectional UDP flows and peer-to-peer communication where the +// "user-facing" surface of the protocol / API doesn't expose a clear notion of +// client and server. +const ( + // DestinationAddressKey is the attribute Key conforming to the + // "destination.address" semantic conventions. It represents the + // destination address - domain name if available without reverse DNS + // lookup; otherwise, IP address or Unix domain socket name. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'destination.example.com', '10.1.2.80', '/tmp/my.sock' + // Note: When observed from the source side, and when communicating through + // an intermediary, `destination.address` SHOULD represent the destination + // address behind any intermediaries, for example proxies, if it's + // available. + DestinationAddressKey = attribute.Key("destination.address") + + // DestinationPortKey is the attribute Key conforming to the + // "destination.port" semantic conventions. It represents the destination + // port number + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 3389, 2888 + DestinationPortKey = attribute.Key("destination.port") +) + +// DestinationAddress returns an attribute KeyValue conforming to the +// "destination.address" semantic conventions. It represents the destination +// address - domain name if available without reverse DNS lookup; otherwise, IP +// address or Unix domain socket name. +func DestinationAddress(val string) attribute.KeyValue { + return DestinationAddressKey.String(val) +} + +// DestinationPort returns an attribute KeyValue conforming to the +// "destination.port" semantic conventions. It represents the destination port +// number +func DestinationPort(val int) attribute.KeyValue { + return DestinationPortKey.Int(val) +} + +// Describes device attributes. +const ( + // DeviceIDKey is the attribute Key conforming to the "device.id" semantic + // conventions. It represents a unique identifier representing the device + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2ab2916d-a51f-4ac8-80ee-45ac31a28092' + // Note: The device identifier MUST only be defined using the values + // outlined below. This value is not an advertising identifier and MUST NOT + // be used as such. On iOS (Swift or Objective-C), this value MUST be equal + // to the [vendor + // identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). + // On Android (Java or Kotlin), this value MUST be equal to the Firebase + // Installation ID or a globally unique UUID which is persisted across + // sessions in your application. More information can be found + // [here](https://developer.android.com/training/articles/user-data-ids) on + // best practices and exact implementation details. Caution should be taken + // when storing personal data or anything which can identify a user. GDPR + // and data protection laws may apply, ensure you do your own due + // diligence. + DeviceIDKey = attribute.Key("device.id") + + // DeviceManufacturerKey is the attribute Key conforming to the + // "device.manufacturer" semantic conventions. It represents the name of + // the device manufacturer + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Apple', 'Samsung' + // Note: The Android OS provides this field via + // [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). + // iOS apps SHOULD hardcode the value `Apple`. + DeviceManufacturerKey = attribute.Key("device.manufacturer") + + // DeviceModelIdentifierKey is the attribute Key conforming to the + // "device.model.identifier" semantic conventions. It represents the model + // identifier for the device + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'iPhone3,4', 'SM-G920F' + // Note: It's recommended this value represents a machine-readable version + // of the model identifier rather than the market or consumer-friendly name + // of the device. + DeviceModelIdentifierKey = attribute.Key("device.model.identifier") + + // DeviceModelNameKey is the attribute Key conforming to the + // "device.model.name" semantic conventions. It represents the marketing + // name for the device model + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'iPhone 6s Plus', 'Samsung Galaxy S6' + // Note: It's recommended this value represents a human-readable version of + // the device model rather than a machine-readable alternative. + DeviceModelNameKey = attribute.Key("device.model.name") +) + +// DeviceID returns an attribute KeyValue conforming to the "device.id" +// semantic conventions. It represents a unique identifier representing the +// device +func DeviceID(val string) attribute.KeyValue { + return DeviceIDKey.String(val) +} + +// DeviceManufacturer returns an attribute KeyValue conforming to the +// "device.manufacturer" semantic conventions. It represents the name of the +// device manufacturer +func DeviceManufacturer(val string) attribute.KeyValue { + return DeviceManufacturerKey.String(val) +} + +// DeviceModelIdentifier returns an attribute KeyValue conforming to the +// "device.model.identifier" semantic conventions. It represents the model +// identifier for the device +func DeviceModelIdentifier(val string) attribute.KeyValue { + return DeviceModelIdentifierKey.String(val) +} + +// DeviceModelName returns an attribute KeyValue conforming to the +// "device.model.name" semantic conventions. It represents the marketing name +// for the device model +func DeviceModelName(val string) attribute.KeyValue { + return DeviceModelNameKey.String(val) +} + +// These attributes may be used for any disk related operation. +const ( + // DiskIoDirectionKey is the attribute Key conforming to the + // "disk.io.direction" semantic conventions. It represents the disk IO + // operation direction. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'read' + DiskIoDirectionKey = attribute.Key("disk.io.direction") +) + +var ( + // read + DiskIoDirectionRead = DiskIoDirectionKey.String("read") + // write + DiskIoDirectionWrite = DiskIoDirectionKey.String("write") +) + +// The shared attributes used to report a DNS query. +const ( + // DNSQuestionNameKey is the attribute Key conforming to the + // "dns.question.name" semantic conventions. It represents the name being + // queried. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'www.example.com', 'opentelemetry.io' + // Note: If the name field contains non-printable characters (below 32 or + // above 126), those characters should be represented as escaped base 10 + // integers (\DDD). Back slashes and quotes should be escaped. Tabs, + // carriage returns, and line feeds should be converted to \t, \r, and \n + // respectively. + DNSQuestionNameKey = attribute.Key("dns.question.name") +) + +// DNSQuestionName returns an attribute KeyValue conforming to the +// "dns.question.name" semantic conventions. It represents the name being +// queried. +func DNSQuestionName(val string) attribute.KeyValue { + return DNSQuestionNameKey.String(val) +} + +// Attributes for operations with an authenticated and/or authorized enduser. +const ( + // EnduserIDKey is the attribute Key conforming to the "enduser.id" + // semantic conventions. It represents the username or client_id extracted + // from the access token or + // [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header + // in the inbound request from outside the system. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'username' + EnduserIDKey = attribute.Key("enduser.id") + + // EnduserRoleKey is the attribute Key conforming to the "enduser.role" + // semantic conventions. It represents the actual/assumed role the client + // is making the request under extracted from token or application security + // context. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'admin' + EnduserRoleKey = attribute.Key("enduser.role") + + // EnduserScopeKey is the attribute Key conforming to the "enduser.scope" + // semantic conventions. It represents the scopes or granted authorities + // the client currently possesses extracted from token or application + // security context. The value would come from the scope associated with an + // [OAuth 2.0 Access + // Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute + // value in a [SAML 2.0 + // Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'read:message, write:files' + EnduserScopeKey = attribute.Key("enduser.scope") +) + +// EnduserID returns an attribute KeyValue conforming to the "enduser.id" +// semantic conventions. It represents the username or client_id extracted from +// the access token or +// [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in +// the inbound request from outside the system. +func EnduserID(val string) attribute.KeyValue { + return EnduserIDKey.String(val) +} + +// EnduserRole returns an attribute KeyValue conforming to the +// "enduser.role" semantic conventions. It represents the actual/assumed role +// the client is making the request under extracted from token or application +// security context. +func EnduserRole(val string) attribute.KeyValue { + return EnduserRoleKey.String(val) +} + +// EnduserScope returns an attribute KeyValue conforming to the +// "enduser.scope" semantic conventions. It represents the scopes or granted +// authorities the client currently possesses extracted from token or +// application security context. The value would come from the scope associated +// with an [OAuth 2.0 Access +// Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute +// value in a [SAML 2.0 +// Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html). +func EnduserScope(val string) attribute.KeyValue { + return EnduserScopeKey.String(val) +} + +// The shared attributes used to report an error. +const ( + // ErrorTypeKey is the attribute Key conforming to the "error.type" + // semantic conventions. It represents the describes a class of error the + // operation ended with. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + // Examples: 'timeout', 'java.net.UnknownHostException', + // 'server_certificate_invalid', '500' + // Note: The `error.type` SHOULD be predictable, and SHOULD have low + // cardinality. + // + // When `error.type` is set to a type (e.g., an exception type), its + // canonical class name identifying the type within the artifact SHOULD be + // used. + // + // Instrumentations SHOULD document the list of errors they report. + // + // The cardinality of `error.type` within one instrumentation library + // SHOULD be low. + // Telemetry consumers that aggregate data from multiple instrumentation + // libraries and applications + // should be prepared for `error.type` to have high cardinality at query + // time when no + // additional filters are applied. + // + // If the operation has completed successfully, instrumentations SHOULD NOT + // set `error.type`. + // + // If a specific domain defines its own set of error identifiers (such as + // HTTP or gRPC status codes), + // it's RECOMMENDED to: + // + // * Use a domain-specific attribute + // * Set `error.type` to capture all errors, regardless of whether they are + // defined within the domain-specific set or not. + ErrorTypeKey = attribute.Key("error.type") +) + +var ( + // A fallback error value to be used when the instrumentation doesn't define a custom value + ErrorTypeOther = ErrorTypeKey.String("_OTHER") +) + +// Attributes for Events represented using Log Records. +const ( + // EventNameKey is the attribute Key conforming to the "event.name" + // semantic conventions. It represents the identifies the class / type of + // event. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'browser.mouse.click', 'device.app.lifecycle' + // Note: Event names are subject to the same rules as [attribute + // names](https://github.com/open-telemetry/opentelemetry-specification/tree/v1.33.0/specification/common/attribute-naming.md). + // Notably, event names are namespaced to avoid collisions and provide a + // clean separation of semantics for events in separate domains like + // browser, mobile, and kubernetes. + EventNameKey = attribute.Key("event.name") +) + +// EventName returns an attribute KeyValue conforming to the "event.name" +// semantic conventions. It represents the identifies the class / type of +// event. +func EventName(val string) attribute.KeyValue { + return EventNameKey.String(val) +} + +// The shared attributes used to report a single exception associated with a +// span or log. +const ( + // ExceptionEscapedKey is the attribute Key conforming to the + // "exception.escaped" semantic conventions. It represents the sHOULD be + // set to true if the exception event is recorded at a point where it is + // known that the exception is escaping the scope of the span. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: stable + // Note: An exception is considered to have escaped (or left) the scope of + // a span, + // if that span is ended while the exception is still logically "in + // flight". + // This may be actually "in flight" in some languages (e.g. if the + // exception + // is passed to a Context manager's `__exit__` method in Python) but will + // usually be caught at the point of recording the exception in most + // languages. + // + // It is usually not possible to determine at the point where an exception + // is thrown + // whether it will escape the scope of a span. + // However, it is trivial to know that an exception + // will escape, if one checks for an active exception just before ending + // the span, + // as done in the [example for recording span + // exceptions](https://opentelemetry.io/docs/specs/semconv/exceptions/exceptions-spans/#recording-an-exception). + // + // It follows that an exception may still escape the scope of the span + // even if the `exception.escaped` attribute was not set or set to false, + // since the event might have been recorded at a time where it was not + // clear whether the exception will escape. + ExceptionEscapedKey = attribute.Key("exception.escaped") + + // ExceptionMessageKey is the attribute Key conforming to the + // "exception.message" semantic conventions. It represents the exception + // message. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'Division by zero', "Can't convert 'int' object to str + // implicitly" + ExceptionMessageKey = attribute.Key("exception.message") + + // ExceptionStacktraceKey is the attribute Key conforming to the + // "exception.stacktrace" semantic conventions. It represents a stacktrace + // as a string in the natural representation for the language runtime. The + // representation is to be determined and documented by each language SIG. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'Exception in thread "main" java.lang.RuntimeException: Test + // exception\\n at ' + // 'com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\n at ' + // 'com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\n at ' + // 'com.example.GenerateTrace.main(GenerateTrace.java:5)' + ExceptionStacktraceKey = attribute.Key("exception.stacktrace") + + // ExceptionTypeKey is the attribute Key conforming to the "exception.type" + // semantic conventions. It represents the type of the exception (its + // fully-qualified class name, if applicable). The dynamic type of the + // exception should be preferred over the static type in languages that + // support it. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'java.net.ConnectException', 'OSError' + ExceptionTypeKey = attribute.Key("exception.type") +) + +// ExceptionEscaped returns an attribute KeyValue conforming to the +// "exception.escaped" semantic conventions. It represents the sHOULD be set to +// true if the exception event is recorded at a point where it is known that +// the exception is escaping the scope of the span. +func ExceptionEscaped(val bool) attribute.KeyValue { + return ExceptionEscapedKey.Bool(val) +} + +// ExceptionMessage returns an attribute KeyValue conforming to the +// "exception.message" semantic conventions. It represents the exception +// message. +func ExceptionMessage(val string) attribute.KeyValue { + return ExceptionMessageKey.String(val) +} + +// ExceptionStacktrace returns an attribute KeyValue conforming to the +// "exception.stacktrace" semantic conventions. It represents a stacktrace as a +// string in the natural representation for the language runtime. The +// representation is to be determined and documented by each language SIG. +func ExceptionStacktrace(val string) attribute.KeyValue { + return ExceptionStacktraceKey.String(val) +} + +// ExceptionType returns an attribute KeyValue conforming to the +// "exception.type" semantic conventions. It represents the type of the +// exception (its fully-qualified class name, if applicable). The dynamic type +// of the exception should be preferred over the static type in languages that +// support it. +func ExceptionType(val string) attribute.KeyValue { + return ExceptionTypeKey.String(val) +} + +// FaaS attributes +const ( + // FaaSColdstartKey is the attribute Key conforming to the "faas.coldstart" + // semantic conventions. It represents a boolean that is true if the + // serverless function is executed for the first time (aka cold-start). + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + FaaSColdstartKey = attribute.Key("faas.coldstart") + + // FaaSCronKey is the attribute Key conforming to the "faas.cron" semantic + // conventions. It represents a string containing the schedule period as + // [Cron + // Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '0/5 * * * ? *' + FaaSCronKey = attribute.Key("faas.cron") + + // FaaSDocumentCollectionKey is the attribute Key conforming to the + // "faas.document.collection" semantic conventions. It represents the name + // of the source on which the triggering operation was performed. For + // example, in Cloud Storage or S3 corresponds to the bucket name, and in + // Cosmos DB to the database name. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'myBucketName', 'myDBName' + FaaSDocumentCollectionKey = attribute.Key("faas.document.collection") + + // FaaSDocumentNameKey is the attribute Key conforming to the + // "faas.document.name" semantic conventions. It represents the document + // name/table subjected to the operation. For example, in Cloud Storage or + // S3 is the name of the file, and in Cosmos DB the table name. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'myFile.txt', 'myTableName' + FaaSDocumentNameKey = attribute.Key("faas.document.name") + + // FaaSDocumentOperationKey is the attribute Key conforming to the + // "faas.document.operation" semantic conventions. It represents the + // describes the type of the operation that was performed on the data. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + FaaSDocumentOperationKey = attribute.Key("faas.document.operation") + + // FaaSDocumentTimeKey is the attribute Key conforming to the + // "faas.document.time" semantic conventions. It represents a string + // containing the time when the data was accessed in the [ISO + // 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format + // expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2020-01-23T13:47:06Z' + FaaSDocumentTimeKey = attribute.Key("faas.document.time") + + // FaaSInstanceKey is the attribute Key conforming to the "faas.instance" + // semantic conventions. It represents the execution environment ID as a + // string, that will be potentially reused for other invocations to the + // same function/function version. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de' + // Note: * **AWS Lambda:** Use the (full) log stream name. + FaaSInstanceKey = attribute.Key("faas.instance") + + // FaaSInvocationIDKey is the attribute Key conforming to the + // "faas.invocation_id" semantic conventions. It represents the invocation + // ID of the current function invocation. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28' + FaaSInvocationIDKey = attribute.Key("faas.invocation_id") + + // FaaSInvokedNameKey is the attribute Key conforming to the + // "faas.invoked_name" semantic conventions. It represents the name of the + // invoked function. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'my-function' + // Note: SHOULD be equal to the `faas.name` resource attribute of the + // invoked function. + FaaSInvokedNameKey = attribute.Key("faas.invoked_name") + + // FaaSInvokedProviderKey is the attribute Key conforming to the + // "faas.invoked_provider" semantic conventions. It represents the cloud + // provider of the invoked function. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Note: SHOULD be equal to the `cloud.provider` resource attribute of the + // invoked function. + FaaSInvokedProviderKey = attribute.Key("faas.invoked_provider") + + // FaaSInvokedRegionKey is the attribute Key conforming to the + // "faas.invoked_region" semantic conventions. It represents the cloud + // region of the invoked function. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'eu-central-1' + // Note: SHOULD be equal to the `cloud.region` resource attribute of the + // invoked function. + FaaSInvokedRegionKey = attribute.Key("faas.invoked_region") + + // FaaSMaxMemoryKey is the attribute Key conforming to the + // "faas.max_memory" semantic conventions. It represents the amount of + // memory available to the serverless function converted to Bytes. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 134217728 + // Note: It's recommended to set this attribute since e.g. too little + // memory can easily stop a Java AWS Lambda function from working + // correctly. On AWS Lambda, the environment variable + // `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information (which must + // be multiplied by 1,048,576). + FaaSMaxMemoryKey = attribute.Key("faas.max_memory") + + // FaaSNameKey is the attribute Key conforming to the "faas.name" semantic + // conventions. It represents the name of the single function that this + // runtime instance executes. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'my-function', 'myazurefunctionapp/some-function-name' + // Note: This is the name of the function as configured/deployed on the + // FaaS + // platform and is usually different from the name of the callback + // function (which may be stored in the + // [`code.namespace`/`code.function`](/docs/general/attributes.md#source-code-attributes) + // span attributes). + // + // For some cloud providers, the above definition is ambiguous. The + // following + // definition of function name MUST be used for this attribute + // (and consequently the span name) for the listed cloud + // providers/products: + // + // * **Azure:** The full name `/`, i.e., function app name + // followed by a forward slash followed by the function name (this form + // can also be seen in the resource JSON for the function). + // This means that a span attribute MUST be used, as an Azure function + // app can host multiple functions that would usually share + // a TracerProvider (see also the `cloud.resource_id` attribute). + FaaSNameKey = attribute.Key("faas.name") + + // FaaSTimeKey is the attribute Key conforming to the "faas.time" semantic + // conventions. It represents a string containing the function invocation + // time in the [ISO + // 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format + // expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2020-01-23T13:47:06Z' + FaaSTimeKey = attribute.Key("faas.time") + + // FaaSTriggerKey is the attribute Key conforming to the "faas.trigger" + // semantic conventions. It represents the type of the trigger which caused + // this function invocation. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + FaaSTriggerKey = attribute.Key("faas.trigger") + + // FaaSVersionKey is the attribute Key conforming to the "faas.version" + // semantic conventions. It represents the immutable version of the + // function being executed. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '26', 'pinkfroid-00002' + // Note: Depending on the cloud provider and platform, use: + // + // * **AWS Lambda:** The [function + // version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) + // (an integer represented as a decimal string). + // * **Google Cloud Run (Services):** The + // [revision](https://cloud.google.com/run/docs/managing/revisions) + // (i.e., the function name plus the revision suffix). + // * **Google Cloud Functions:** The value of the + // [`K_REVISION` environment + // variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). + // * **Azure Functions:** Not applicable. Do not set this attribute. + FaaSVersionKey = attribute.Key("faas.version") +) + +var ( + // When a new object is created + FaaSDocumentOperationInsert = FaaSDocumentOperationKey.String("insert") + // When an object is modified + FaaSDocumentOperationEdit = FaaSDocumentOperationKey.String("edit") + // When an object is deleted + FaaSDocumentOperationDelete = FaaSDocumentOperationKey.String("delete") +) + +var ( + // Alibaba Cloud + FaaSInvokedProviderAlibabaCloud = FaaSInvokedProviderKey.String("alibaba_cloud") + // Amazon Web Services + FaaSInvokedProviderAWS = FaaSInvokedProviderKey.String("aws") + // Microsoft Azure + FaaSInvokedProviderAzure = FaaSInvokedProviderKey.String("azure") + // Google Cloud Platform + FaaSInvokedProviderGCP = FaaSInvokedProviderKey.String("gcp") + // Tencent Cloud + FaaSInvokedProviderTencentCloud = FaaSInvokedProviderKey.String("tencent_cloud") +) + +var ( + // A response to some data source operation such as a database or filesystem read/write + FaaSTriggerDatasource = FaaSTriggerKey.String("datasource") + // To provide an answer to an inbound HTTP request + FaaSTriggerHTTP = FaaSTriggerKey.String("http") + // A function is set to be executed when messages are sent to a messaging system + FaaSTriggerPubsub = FaaSTriggerKey.String("pubsub") + // A function is scheduled to be executed regularly + FaaSTriggerTimer = FaaSTriggerKey.String("timer") + // If none of the others apply + FaaSTriggerOther = FaaSTriggerKey.String("other") +) + +// FaaSColdstart returns an attribute KeyValue conforming to the +// "faas.coldstart" semantic conventions. It represents a boolean that is true +// if the serverless function is executed for the first time (aka cold-start). +func FaaSColdstart(val bool) attribute.KeyValue { + return FaaSColdstartKey.Bool(val) +} + +// FaaSCron returns an attribute KeyValue conforming to the "faas.cron" +// semantic conventions. It represents a string containing the schedule period +// as [Cron +// Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). +func FaaSCron(val string) attribute.KeyValue { + return FaaSCronKey.String(val) +} + +// FaaSDocumentCollection returns an attribute KeyValue conforming to the +// "faas.document.collection" semantic conventions. It represents the name of +// the source on which the triggering operation was performed. For example, in +// Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the +// database name. +func FaaSDocumentCollection(val string) attribute.KeyValue { + return FaaSDocumentCollectionKey.String(val) +} + +// FaaSDocumentName returns an attribute KeyValue conforming to the +// "faas.document.name" semantic conventions. It represents the document +// name/table subjected to the operation. For example, in Cloud Storage or S3 +// is the name of the file, and in Cosmos DB the table name. +func FaaSDocumentName(val string) attribute.KeyValue { + return FaaSDocumentNameKey.String(val) +} + +// FaaSDocumentTime returns an attribute KeyValue conforming to the +// "faas.document.time" semantic conventions. It represents a string containing +// the time when the data was accessed in the [ISO +// 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format +// expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). +func FaaSDocumentTime(val string) attribute.KeyValue { + return FaaSDocumentTimeKey.String(val) +} + +// FaaSInstance returns an attribute KeyValue conforming to the +// "faas.instance" semantic conventions. It represents the execution +// environment ID as a string, that will be potentially reused for other +// invocations to the same function/function version. +func FaaSInstance(val string) attribute.KeyValue { + return FaaSInstanceKey.String(val) +} + +// FaaSInvocationID returns an attribute KeyValue conforming to the +// "faas.invocation_id" semantic conventions. It represents the invocation ID +// of the current function invocation. +func FaaSInvocationID(val string) attribute.KeyValue { + return FaaSInvocationIDKey.String(val) +} + +// FaaSInvokedName returns an attribute KeyValue conforming to the +// "faas.invoked_name" semantic conventions. It represents the name of the +// invoked function. +func FaaSInvokedName(val string) attribute.KeyValue { + return FaaSInvokedNameKey.String(val) +} + +// FaaSInvokedRegion returns an attribute KeyValue conforming to the +// "faas.invoked_region" semantic conventions. It represents the cloud region +// of the invoked function. +func FaaSInvokedRegion(val string) attribute.KeyValue { + return FaaSInvokedRegionKey.String(val) +} + +// FaaSMaxMemory returns an attribute KeyValue conforming to the +// "faas.max_memory" semantic conventions. It represents the amount of memory +// available to the serverless function converted to Bytes. +func FaaSMaxMemory(val int) attribute.KeyValue { + return FaaSMaxMemoryKey.Int(val) +} + +// FaaSName returns an attribute KeyValue conforming to the "faas.name" +// semantic conventions. It represents the name of the single function that +// this runtime instance executes. +func FaaSName(val string) attribute.KeyValue { + return FaaSNameKey.String(val) +} + +// FaaSTime returns an attribute KeyValue conforming to the "faas.time" +// semantic conventions. It represents a string containing the function +// invocation time in the [ISO +// 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format +// expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). +func FaaSTime(val string) attribute.KeyValue { + return FaaSTimeKey.String(val) +} + +// FaaSVersion returns an attribute KeyValue conforming to the +// "faas.version" semantic conventions. It represents the immutable version of +// the function being executed. +func FaaSVersion(val string) attribute.KeyValue { + return FaaSVersionKey.String(val) +} + +// Attributes for Feature Flags. +const ( + // FeatureFlagKeyKey is the attribute Key conforming to the + // "feature_flag.key" semantic conventions. It represents the unique + // identifier of the feature flag. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'logo-color' + FeatureFlagKeyKey = attribute.Key("feature_flag.key") + + // FeatureFlagProviderNameKey is the attribute Key conforming to the + // "feature_flag.provider_name" semantic conventions. It represents the + // name of the service provider that performs the flag evaluation. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Flag Manager' + FeatureFlagProviderNameKey = attribute.Key("feature_flag.provider_name") + + // FeatureFlagVariantKey is the attribute Key conforming to the + // "feature_flag.variant" semantic conventions. It represents the sHOULD be + // a semantic identifier for a value. If one is unavailable, a stringified + // version of the value can be used. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'red', 'true', 'on' + // Note: A semantic identifier, commonly referred to as a variant, provides + // a means + // for referring to a value without including the value itself. This can + // provide additional context for understanding the meaning behind a value. + // For example, the variant `red` maybe be used for the value `#c05543`. + // + // A stringified version of the value can be used in situations where a + // semantic identifier is unavailable. String representation of the value + // should be determined by the implementer. + FeatureFlagVariantKey = attribute.Key("feature_flag.variant") +) + +// FeatureFlagKey returns an attribute KeyValue conforming to the +// "feature_flag.key" semantic conventions. It represents the unique identifier +// of the feature flag. +func FeatureFlagKey(val string) attribute.KeyValue { + return FeatureFlagKeyKey.String(val) +} + +// FeatureFlagProviderName returns an attribute KeyValue conforming to the +// "feature_flag.provider_name" semantic conventions. It represents the name of +// the service provider that performs the flag evaluation. +func FeatureFlagProviderName(val string) attribute.KeyValue { + return FeatureFlagProviderNameKey.String(val) +} + +// FeatureFlagVariant returns an attribute KeyValue conforming to the +// "feature_flag.variant" semantic conventions. It represents the sHOULD be a +// semantic identifier for a value. If one is unavailable, a stringified +// version of the value can be used. +func FeatureFlagVariant(val string) attribute.KeyValue { + return FeatureFlagVariantKey.String(val) +} + +// Describes file attributes. +const ( + // FileDirectoryKey is the attribute Key conforming to the "file.directory" + // semantic conventions. It represents the directory where the file is + // located. It should include the drive letter, when appropriate. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '/home/user', 'C:\\Program Files\\MyApp' + FileDirectoryKey = attribute.Key("file.directory") + + // FileExtensionKey is the attribute Key conforming to the "file.extension" + // semantic conventions. It represents the file extension, excluding the + // leading dot. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'png', 'gz' + // Note: When the file name has multiple extensions (example.tar.gz), only + // the last one should be captured ("gz", not "tar.gz"). + FileExtensionKey = attribute.Key("file.extension") + + // FileNameKey is the attribute Key conforming to the "file.name" semantic + // conventions. It represents the name of the file including the extension, + // without the directory. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'example.png' + FileNameKey = attribute.Key("file.name") + + // FilePathKey is the attribute Key conforming to the "file.path" semantic + // conventions. It represents the full path to the file, including the file + // name. It should include the drive letter, when appropriate. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '/home/alice/example.png', 'C:\\Program + // Files\\MyApp\\myapp.exe' + FilePathKey = attribute.Key("file.path") + + // FileSizeKey is the attribute Key conforming to the "file.size" semantic + // conventions. It represents the file size in bytes. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + FileSizeKey = attribute.Key("file.size") +) + +// FileDirectory returns an attribute KeyValue conforming to the +// "file.directory" semantic conventions. It represents the directory where the +// file is located. It should include the drive letter, when appropriate. +func FileDirectory(val string) attribute.KeyValue { + return FileDirectoryKey.String(val) +} + +// FileExtension returns an attribute KeyValue conforming to the +// "file.extension" semantic conventions. It represents the file extension, +// excluding the leading dot. +func FileExtension(val string) attribute.KeyValue { + return FileExtensionKey.String(val) +} + +// FileName returns an attribute KeyValue conforming to the "file.name" +// semantic conventions. It represents the name of the file including the +// extension, without the directory. +func FileName(val string) attribute.KeyValue { + return FileNameKey.String(val) +} + +// FilePath returns an attribute KeyValue conforming to the "file.path" +// semantic conventions. It represents the full path to the file, including the +// file name. It should include the drive letter, when appropriate. +func FilePath(val string) attribute.KeyValue { + return FilePathKey.String(val) +} + +// FileSize returns an attribute KeyValue conforming to the "file.size" +// semantic conventions. It represents the file size in bytes. +func FileSize(val int) attribute.KeyValue { + return FileSizeKey.Int(val) +} + +// Attributes for Google Cloud Run. +const ( + // GCPCloudRunJobExecutionKey is the attribute Key conforming to the + // "gcp.cloud_run.job.execution" semantic conventions. It represents the + // name of the Cloud Run + // [execution](https://cloud.google.com/run/docs/managing/job-executions) + // being run for the Job, as set by the + // [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) + // environment variable. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'job-name-xxxx', 'sample-job-mdw84' + GCPCloudRunJobExecutionKey = attribute.Key("gcp.cloud_run.job.execution") + + // GCPCloudRunJobTaskIndexKey is the attribute Key conforming to the + // "gcp.cloud_run.job.task_index" semantic conventions. It represents the + // index for a task within an execution as provided by the + // [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) + // environment variable. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 0, 1 + GCPCloudRunJobTaskIndexKey = attribute.Key("gcp.cloud_run.job.task_index") +) + +// GCPCloudRunJobExecution returns an attribute KeyValue conforming to the +// "gcp.cloud_run.job.execution" semantic conventions. It represents the name +// of the Cloud Run +// [execution](https://cloud.google.com/run/docs/managing/job-executions) being +// run for the Job, as set by the +// [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) +// environment variable. +func GCPCloudRunJobExecution(val string) attribute.KeyValue { + return GCPCloudRunJobExecutionKey.String(val) +} + +// GCPCloudRunJobTaskIndex returns an attribute KeyValue conforming to the +// "gcp.cloud_run.job.task_index" semantic conventions. It represents the index +// for a task within an execution as provided by the +// [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) +// environment variable. +func GCPCloudRunJobTaskIndex(val int) attribute.KeyValue { + return GCPCloudRunJobTaskIndexKey.Int(val) +} + +// Attributes for Google Compute Engine (GCE). +const ( + // GCPGceInstanceHostnameKey is the attribute Key conforming to the + // "gcp.gce.instance.hostname" semantic conventions. It represents the + // hostname of a GCE instance. This is the full value of the default or + // [custom + // hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'my-host1234.example.com', + // 'sample-vm.us-west1-b.c.my-project.internal' + GCPGceInstanceHostnameKey = attribute.Key("gcp.gce.instance.hostname") + + // GCPGceInstanceNameKey is the attribute Key conforming to the + // "gcp.gce.instance.name" semantic conventions. It represents the instance + // name of a GCE instance. This is the value provided by `host.name`, the + // visible name of the instance in the Cloud Console UI, and the prefix for + // the default hostname of the instance as defined by the [default internal + // DNS + // name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'instance-1', 'my-vm-name' + GCPGceInstanceNameKey = attribute.Key("gcp.gce.instance.name") +) + +// GCPGceInstanceHostname returns an attribute KeyValue conforming to the +// "gcp.gce.instance.hostname" semantic conventions. It represents the hostname +// of a GCE instance. This is the full value of the default or [custom +// hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm). +func GCPGceInstanceHostname(val string) attribute.KeyValue { + return GCPGceInstanceHostnameKey.String(val) +} + +// GCPGceInstanceName returns an attribute KeyValue conforming to the +// "gcp.gce.instance.name" semantic conventions. It represents the instance +// name of a GCE instance. This is the value provided by `host.name`, the +// visible name of the instance in the Cloud Console UI, and the prefix for the +// default hostname of the instance as defined by the [default internal DNS +// name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names). +func GCPGceInstanceName(val string) attribute.KeyValue { + return GCPGceInstanceNameKey.String(val) +} + +// The attributes used to describe telemetry in the context of LLM (Large +// Language Models) requests and responses. +const ( + // GenAiCompletionKey is the attribute Key conforming to the + // "gen_ai.completion" semantic conventions. It represents the full + // response received from the LLM. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: "[{'role': 'assistant', 'content': 'The capital of France is + // Paris.'}]" + // Note: It's RECOMMENDED to format completions as JSON string matching + // [OpenAI messages + // format](https://platform.openai.com/docs/guides/text-generation) + GenAiCompletionKey = attribute.Key("gen_ai.completion") + + // GenAiPromptKey is the attribute Key conforming to the "gen_ai.prompt" + // semantic conventions. It represents the full prompt sent to an LLM. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: "[{'role': 'user', 'content': 'What is the capital of + // France?'}]" + // Note: It's RECOMMENDED to format prompts as JSON string matching [OpenAI + // messages + // format](https://platform.openai.com/docs/guides/text-generation) + GenAiPromptKey = attribute.Key("gen_ai.prompt") + + // GenAiRequestMaxTokensKey is the attribute Key conforming to the + // "gen_ai.request.max_tokens" semantic conventions. It represents the + // maximum number of tokens the LLM generates for a request. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 100 + GenAiRequestMaxTokensKey = attribute.Key("gen_ai.request.max_tokens") + + // GenAiRequestModelKey is the attribute Key conforming to the + // "gen_ai.request.model" semantic conventions. It represents the name of + // the LLM a request is being made to. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'gpt-4' + GenAiRequestModelKey = attribute.Key("gen_ai.request.model") + + // GenAiRequestTemperatureKey is the attribute Key conforming to the + // "gen_ai.request.temperature" semantic conventions. It represents the + // temperature setting for the LLM request. + // + // Type: double + // RequirementLevel: Optional + // Stability: experimental + // Examples: 0.0 + GenAiRequestTemperatureKey = attribute.Key("gen_ai.request.temperature") + + // GenAiRequestTopPKey is the attribute Key conforming to the + // "gen_ai.request.top_p" semantic conventions. It represents the top_p + // sampling setting for the LLM request. + // + // Type: double + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1.0 + GenAiRequestTopPKey = attribute.Key("gen_ai.request.top_p") + + // GenAiResponseFinishReasonsKey is the attribute Key conforming to the + // "gen_ai.response.finish_reasons" semantic conventions. It represents the + // array of reasons the model stopped generating tokens, corresponding to + // each generation received. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'stop' + GenAiResponseFinishReasonsKey = attribute.Key("gen_ai.response.finish_reasons") + + // GenAiResponseIDKey is the attribute Key conforming to the + // "gen_ai.response.id" semantic conventions. It represents the unique + // identifier for the completion. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'chatcmpl-123' + GenAiResponseIDKey = attribute.Key("gen_ai.response.id") + + // GenAiResponseModelKey is the attribute Key conforming to the + // "gen_ai.response.model" semantic conventions. It represents the name of + // the LLM a response was generated from. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'gpt-4-0613' + GenAiResponseModelKey = attribute.Key("gen_ai.response.model") + + // GenAiSystemKey is the attribute Key conforming to the "gen_ai.system" + // semantic conventions. It represents the Generative AI product as + // identified by the client instrumentation. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'openai' + // Note: The actual GenAI product may differ from the one identified by the + // client. For example, when using OpenAI client libraries to communicate + // with Mistral, the `gen_ai.system` is set to `openai` based on the + // instrumentation's best knowledge. + GenAiSystemKey = attribute.Key("gen_ai.system") + + // GenAiUsageCompletionTokensKey is the attribute Key conforming to the + // "gen_ai.usage.completion_tokens" semantic conventions. It represents the + // number of tokens used in the LLM response (completion). + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 180 + GenAiUsageCompletionTokensKey = attribute.Key("gen_ai.usage.completion_tokens") + + // GenAiUsagePromptTokensKey is the attribute Key conforming to the + // "gen_ai.usage.prompt_tokens" semantic conventions. It represents the + // number of tokens used in the LLM prompt. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 100 + GenAiUsagePromptTokensKey = attribute.Key("gen_ai.usage.prompt_tokens") +) + +var ( + // OpenAI + GenAiSystemOpenai = GenAiSystemKey.String("openai") +) + +// GenAiCompletion returns an attribute KeyValue conforming to the +// "gen_ai.completion" semantic conventions. It represents the full response +// received from the LLM. +func GenAiCompletion(val string) attribute.KeyValue { + return GenAiCompletionKey.String(val) +} + +// GenAiPrompt returns an attribute KeyValue conforming to the +// "gen_ai.prompt" semantic conventions. It represents the full prompt sent to +// an LLM. +func GenAiPrompt(val string) attribute.KeyValue { + return GenAiPromptKey.String(val) +} + +// GenAiRequestMaxTokens returns an attribute KeyValue conforming to the +// "gen_ai.request.max_tokens" semantic conventions. It represents the maximum +// number of tokens the LLM generates for a request. +func GenAiRequestMaxTokens(val int) attribute.KeyValue { + return GenAiRequestMaxTokensKey.Int(val) +} + +// GenAiRequestModel returns an attribute KeyValue conforming to the +// "gen_ai.request.model" semantic conventions. It represents the name of the +// LLM a request is being made to. +func GenAiRequestModel(val string) attribute.KeyValue { + return GenAiRequestModelKey.String(val) +} + +// GenAiRequestTemperature returns an attribute KeyValue conforming to the +// "gen_ai.request.temperature" semantic conventions. It represents the +// temperature setting for the LLM request. +func GenAiRequestTemperature(val float64) attribute.KeyValue { + return GenAiRequestTemperatureKey.Float64(val) +} + +// GenAiRequestTopP returns an attribute KeyValue conforming to the +// "gen_ai.request.top_p" semantic conventions. It represents the top_p +// sampling setting for the LLM request. +func GenAiRequestTopP(val float64) attribute.KeyValue { + return GenAiRequestTopPKey.Float64(val) +} + +// GenAiResponseFinishReasons returns an attribute KeyValue conforming to +// the "gen_ai.response.finish_reasons" semantic conventions. It represents the +// array of reasons the model stopped generating tokens, corresponding to each +// generation received. +func GenAiResponseFinishReasons(val ...string) attribute.KeyValue { + return GenAiResponseFinishReasonsKey.StringSlice(val) +} + +// GenAiResponseID returns an attribute KeyValue conforming to the +// "gen_ai.response.id" semantic conventions. It represents the unique +// identifier for the completion. +func GenAiResponseID(val string) attribute.KeyValue { + return GenAiResponseIDKey.String(val) +} + +// GenAiResponseModel returns an attribute KeyValue conforming to the +// "gen_ai.response.model" semantic conventions. It represents the name of the +// LLM a response was generated from. +func GenAiResponseModel(val string) attribute.KeyValue { + return GenAiResponseModelKey.String(val) +} + +// GenAiUsageCompletionTokens returns an attribute KeyValue conforming to +// the "gen_ai.usage.completion_tokens" semantic conventions. It represents the +// number of tokens used in the LLM response (completion). +func GenAiUsageCompletionTokens(val int) attribute.KeyValue { + return GenAiUsageCompletionTokensKey.Int(val) +} + +// GenAiUsagePromptTokens returns an attribute KeyValue conforming to the +// "gen_ai.usage.prompt_tokens" semantic conventions. It represents the number +// of tokens used in the LLM prompt. +func GenAiUsagePromptTokens(val int) attribute.KeyValue { + return GenAiUsagePromptTokensKey.Int(val) +} + +// Attributes for GraphQL. +const ( + // GraphqlDocumentKey is the attribute Key conforming to the + // "graphql.document" semantic conventions. It represents the GraphQL + // document being executed. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'query findBookByID { bookByID(id: ?) { name } }' + // Note: The value may be sanitized to exclude sensitive information. + GraphqlDocumentKey = attribute.Key("graphql.document") + + // GraphqlOperationNameKey is the attribute Key conforming to the + // "graphql.operation.name" semantic conventions. It represents the name of + // the operation being executed. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'findBookByID' + GraphqlOperationNameKey = attribute.Key("graphql.operation.name") + + // GraphqlOperationTypeKey is the attribute Key conforming to the + // "graphql.operation.type" semantic conventions. It represents the type of + // the operation being executed. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'query', 'mutation', 'subscription' + GraphqlOperationTypeKey = attribute.Key("graphql.operation.type") +) + +var ( + // GraphQL query + GraphqlOperationTypeQuery = GraphqlOperationTypeKey.String("query") + // GraphQL mutation + GraphqlOperationTypeMutation = GraphqlOperationTypeKey.String("mutation") + // GraphQL subscription + GraphqlOperationTypeSubscription = GraphqlOperationTypeKey.String("subscription") +) + +// GraphqlDocument returns an attribute KeyValue conforming to the +// "graphql.document" semantic conventions. It represents the GraphQL document +// being executed. +func GraphqlDocument(val string) attribute.KeyValue { + return GraphqlDocumentKey.String(val) +} + +// GraphqlOperationName returns an attribute KeyValue conforming to the +// "graphql.operation.name" semantic conventions. It represents the name of the +// operation being executed. +func GraphqlOperationName(val string) attribute.KeyValue { + return GraphqlOperationNameKey.String(val) +} + +// Attributes for the Android platform on which the Android application is +// running. +const ( + // HerokuAppIDKey is the attribute Key conforming to the "heroku.app.id" + // semantic conventions. It represents the unique identifier for the + // application + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2daa2797-e42b-4624-9322-ec3f968df4da' + HerokuAppIDKey = attribute.Key("heroku.app.id") + + // HerokuReleaseCommitKey is the attribute Key conforming to the + // "heroku.release.commit" semantic conventions. It represents the commit + // hash for the current release + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'e6134959463efd8966b20e75b913cafe3f5ec' + HerokuReleaseCommitKey = attribute.Key("heroku.release.commit") + + // HerokuReleaseCreationTimestampKey is the attribute Key conforming to the + // "heroku.release.creation_timestamp" semantic conventions. It represents + // the time and date the release was created + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2022-10-23T18:00:42Z' + HerokuReleaseCreationTimestampKey = attribute.Key("heroku.release.creation_timestamp") +) + +// HerokuAppID returns an attribute KeyValue conforming to the +// "heroku.app.id" semantic conventions. It represents the unique identifier +// for the application +func HerokuAppID(val string) attribute.KeyValue { + return HerokuAppIDKey.String(val) +} + +// HerokuReleaseCommit returns an attribute KeyValue conforming to the +// "heroku.release.commit" semantic conventions. It represents the commit hash +// for the current release +func HerokuReleaseCommit(val string) attribute.KeyValue { + return HerokuReleaseCommitKey.String(val) +} + +// HerokuReleaseCreationTimestamp returns an attribute KeyValue conforming +// to the "heroku.release.creation_timestamp" semantic conventions. It +// represents the time and date the release was created +func HerokuReleaseCreationTimestamp(val string) attribute.KeyValue { + return HerokuReleaseCreationTimestampKey.String(val) +} + +// A host is defined as a computing instance. For example, physical servers, +// virtual machines, switches or disk array. +const ( + // HostArchKey is the attribute Key conforming to the "host.arch" semantic + // conventions. It represents the CPU architecture the host system is + // running on. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + HostArchKey = attribute.Key("host.arch") + + // HostCPUCacheL2SizeKey is the attribute Key conforming to the + // "host.cpu.cache.l2.size" semantic conventions. It represents the amount + // of level 2 memory cache available to the processor (in Bytes). + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 12288000 + HostCPUCacheL2SizeKey = attribute.Key("host.cpu.cache.l2.size") + + // HostCPUFamilyKey is the attribute Key conforming to the + // "host.cpu.family" semantic conventions. It represents the family or + // generation of the CPU. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '6', 'PA-RISC 1.1e' + HostCPUFamilyKey = attribute.Key("host.cpu.family") + + // HostCPUModelIDKey is the attribute Key conforming to the + // "host.cpu.model.id" semantic conventions. It represents the model + // identifier. It provides more granular information about the CPU, + // distinguishing it from other CPUs within the same family. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '6', '9000/778/B180L' + HostCPUModelIDKey = attribute.Key("host.cpu.model.id") + + // HostCPUModelNameKey is the attribute Key conforming to the + // "host.cpu.model.name" semantic conventions. It represents the model + // designation of the processor. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz' + HostCPUModelNameKey = attribute.Key("host.cpu.model.name") + + // HostCPUSteppingKey is the attribute Key conforming to the + // "host.cpu.stepping" semantic conventions. It represents the stepping or + // core revisions. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '1', 'r1p1' + HostCPUSteppingKey = attribute.Key("host.cpu.stepping") + + // HostCPUVendorIDKey is the attribute Key conforming to the + // "host.cpu.vendor.id" semantic conventions. It represents the processor + // manufacturer identifier. A maximum 12-character string. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'GenuineIntel' + // Note: [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor + // ID string in EBX, EDX and ECX registers. Writing these to memory in this + // order results in a 12-character string. + HostCPUVendorIDKey = attribute.Key("host.cpu.vendor.id") + + // HostIDKey is the attribute Key conforming to the "host.id" semantic + // conventions. It represents the unique host ID. For Cloud, this must be + // the instance_id assigned by the cloud provider. For non-containerized + // systems, this should be the `machine-id`. See the table below for the + // sources to use to determine the `machine-id` based on operating system. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'fdbf79e8af94cb7f9e8df36789187052' + HostIDKey = attribute.Key("host.id") + + // HostImageIDKey is the attribute Key conforming to the "host.image.id" + // semantic conventions. It represents the vM image ID or host OS image ID. + // For Cloud, this value is from the provider. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'ami-07b06b442921831e5' + HostImageIDKey = attribute.Key("host.image.id") + + // HostImageNameKey is the attribute Key conforming to the + // "host.image.name" semantic conventions. It represents the name of the VM + // image or OS install the host was instantiated from. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'infra-ami-eks-worker-node-7d4ec78312', 'CentOS-8-x86_64-1905' + HostImageNameKey = attribute.Key("host.image.name") + + // HostImageVersionKey is the attribute Key conforming to the + // "host.image.version" semantic conventions. It represents the version + // string of the VM image or host OS as defined in [Version + // Attributes](/docs/resource/README.md#version-attributes). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '0.1' + HostImageVersionKey = attribute.Key("host.image.version") + + // HostIPKey is the attribute Key conforming to the "host.ip" semantic + // conventions. It represents the available IP addresses of the host, + // excluding loopback interfaces. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: '192.168.1.140', 'fe80::abc2:4a28:737a:609e' + // Note: IPv4 Addresses MUST be specified in dotted-quad notation. IPv6 + // addresses MUST be specified in the [RFC + // 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format. + HostIPKey = attribute.Key("host.ip") + + // HostMacKey is the attribute Key conforming to the "host.mac" semantic + // conventions. It represents the available MAC addresses of the host, + // excluding loopback interfaces. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'AC-DE-48-23-45-67', 'AC-DE-48-23-45-67-01-9F' + // Note: MAC Addresses MUST be represented in [IEEE RA hexadecimal + // form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): + // as hyphen-separated octets in uppercase hexadecimal form from most to + // least significant. + HostMacKey = attribute.Key("host.mac") + + // HostNameKey is the attribute Key conforming to the "host.name" semantic + // conventions. It represents the name of the host. On Unix systems, it may + // contain what the hostname command returns, or the fully qualified + // hostname, or another name specified by the user. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry-test' + HostNameKey = attribute.Key("host.name") + + // HostTypeKey is the attribute Key conforming to the "host.type" semantic + // conventions. It represents the type of host. For Cloud, this must be the + // machine type. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'n1-standard-1' + HostTypeKey = attribute.Key("host.type") +) + +var ( + // AMD64 + HostArchAMD64 = HostArchKey.String("amd64") + // ARM32 + HostArchARM32 = HostArchKey.String("arm32") + // ARM64 + HostArchARM64 = HostArchKey.String("arm64") + // Itanium + HostArchIA64 = HostArchKey.String("ia64") + // 32-bit PowerPC + HostArchPPC32 = HostArchKey.String("ppc32") + // 64-bit PowerPC + HostArchPPC64 = HostArchKey.String("ppc64") + // IBM z/Architecture + HostArchS390x = HostArchKey.String("s390x") + // 32-bit x86 + HostArchX86 = HostArchKey.String("x86") +) + +// HostCPUCacheL2Size returns an attribute KeyValue conforming to the +// "host.cpu.cache.l2.size" semantic conventions. It represents the amount of +// level 2 memory cache available to the processor (in Bytes). +func HostCPUCacheL2Size(val int) attribute.KeyValue { + return HostCPUCacheL2SizeKey.Int(val) +} + +// HostCPUFamily returns an attribute KeyValue conforming to the +// "host.cpu.family" semantic conventions. It represents the family or +// generation of the CPU. +func HostCPUFamily(val string) attribute.KeyValue { + return HostCPUFamilyKey.String(val) +} + +// HostCPUModelID returns an attribute KeyValue conforming to the +// "host.cpu.model.id" semantic conventions. It represents the model +// identifier. It provides more granular information about the CPU, +// distinguishing it from other CPUs within the same family. +func HostCPUModelID(val string) attribute.KeyValue { + return HostCPUModelIDKey.String(val) +} + +// HostCPUModelName returns an attribute KeyValue conforming to the +// "host.cpu.model.name" semantic conventions. It represents the model +// designation of the processor. +func HostCPUModelName(val string) attribute.KeyValue { + return HostCPUModelNameKey.String(val) +} + +// HostCPUStepping returns an attribute KeyValue conforming to the +// "host.cpu.stepping" semantic conventions. It represents the stepping or core +// revisions. +func HostCPUStepping(val string) attribute.KeyValue { + return HostCPUSteppingKey.String(val) +} + +// HostCPUVendorID returns an attribute KeyValue conforming to the +// "host.cpu.vendor.id" semantic conventions. It represents the processor +// manufacturer identifier. A maximum 12-character string. +func HostCPUVendorID(val string) attribute.KeyValue { + return HostCPUVendorIDKey.String(val) +} + +// HostID returns an attribute KeyValue conforming to the "host.id" semantic +// conventions. It represents the unique host ID. For Cloud, this must be the +// instance_id assigned by the cloud provider. For non-containerized systems, +// this should be the `machine-id`. See the table below for the sources to use +// to determine the `machine-id` based on operating system. +func HostID(val string) attribute.KeyValue { + return HostIDKey.String(val) +} + +// HostImageID returns an attribute KeyValue conforming to the +// "host.image.id" semantic conventions. It represents the vM image ID or host +// OS image ID. For Cloud, this value is from the provider. +func HostImageID(val string) attribute.KeyValue { + return HostImageIDKey.String(val) +} + +// HostImageName returns an attribute KeyValue conforming to the +// "host.image.name" semantic conventions. It represents the name of the VM +// image or OS install the host was instantiated from. +func HostImageName(val string) attribute.KeyValue { + return HostImageNameKey.String(val) +} + +// HostImageVersion returns an attribute KeyValue conforming to the +// "host.image.version" semantic conventions. It represents the version string +// of the VM image or host OS as defined in [Version +// Attributes](/docs/resource/README.md#version-attributes). +func HostImageVersion(val string) attribute.KeyValue { + return HostImageVersionKey.String(val) +} + +// HostIP returns an attribute KeyValue conforming to the "host.ip" semantic +// conventions. It represents the available IP addresses of the host, excluding +// loopback interfaces. +func HostIP(val ...string) attribute.KeyValue { + return HostIPKey.StringSlice(val) +} + +// HostMac returns an attribute KeyValue conforming to the "host.mac" +// semantic conventions. It represents the available MAC addresses of the host, +// excluding loopback interfaces. +func HostMac(val ...string) attribute.KeyValue { + return HostMacKey.StringSlice(val) +} + +// HostName returns an attribute KeyValue conforming to the "host.name" +// semantic conventions. It represents the name of the host. On Unix systems, +// it may contain what the hostname command returns, or the fully qualified +// hostname, or another name specified by the user. +func HostName(val string) attribute.KeyValue { + return HostNameKey.String(val) +} + +// HostType returns an attribute KeyValue conforming to the "host.type" +// semantic conventions. It represents the type of host. For Cloud, this must +// be the machine type. +func HostType(val string) attribute.KeyValue { + return HostTypeKey.String(val) +} + +// Semantic convention attributes in the HTTP namespace. +const ( + // HTTPConnectionStateKey is the attribute Key conforming to the + // "http.connection.state" semantic conventions. It represents the state of + // the HTTP connection in the HTTP connection pool. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'active', 'idle' + HTTPConnectionStateKey = attribute.Key("http.connection.state") + + // HTTPRequestBodySizeKey is the attribute Key conforming to the + // "http.request.body.size" semantic conventions. It represents the size of + // the request payload body in bytes. This is the number of bytes + // transferred excluding headers and is often, but not always, present as + // the + // [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) + // header. For requests using transport encoding, this should be the + // compressed size. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 3495 + HTTPRequestBodySizeKey = attribute.Key("http.request.body.size") + + // HTTPRequestMethodKey is the attribute Key conforming to the + // "http.request.method" semantic conventions. It represents the hTTP + // request method. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + // Examples: 'GET', 'POST', 'HEAD' + // Note: HTTP request method value SHOULD be "known" to the + // instrumentation. + // By default, this convention defines "known" methods as the ones listed + // in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods) + // and the PATCH method defined in + // [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html). + // + // If the HTTP request method is not known to instrumentation, it MUST set + // the `http.request.method` attribute to `_OTHER`. + // + // If the HTTP instrumentation could end up converting valid HTTP request + // methods to `_OTHER`, then it MUST provide a way to override + // the list of known HTTP methods. If this override is done via environment + // variable, then the environment variable MUST be named + // OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated + // list of case-sensitive known HTTP methods + // (this list MUST be a full override of the default known method, it is + // not a list of known methods in addition to the defaults). + // + // HTTP method names are case-sensitive and `http.request.method` attribute + // value MUST match a known HTTP method name exactly. + // Instrumentations for specific web frameworks that consider HTTP methods + // to be case insensitive, SHOULD populate a canonical equivalent. + // Tracing instrumentations that do so, MUST also set + // `http.request.method_original` to the original value. + HTTPRequestMethodKey = attribute.Key("http.request.method") + + // HTTPRequestMethodOriginalKey is the attribute Key conforming to the + // "http.request.method_original" semantic conventions. It represents the + // original HTTP method sent by the client in the request line. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'GeT', 'ACL', 'foo' + HTTPRequestMethodOriginalKey = attribute.Key("http.request.method_original") + + // HTTPRequestResendCountKey is the attribute Key conforming to the + // "http.request.resend_count" semantic conventions. It represents the + // ordinal number of request resending attempt (for any reason, including + // redirects). + // + // Type: int + // RequirementLevel: Optional + // Stability: stable + // Examples: 3 + // Note: The resend count SHOULD be updated each time an HTTP request gets + // resent by the client, regardless of what was the cause of the resending + // (e.g. redirection, authorization failure, 503 Server Unavailable, + // network issues, or any other). + HTTPRequestResendCountKey = attribute.Key("http.request.resend_count") + + // HTTPRequestSizeKey is the attribute Key conforming to the + // "http.request.size" semantic conventions. It represents the total size + // of the request in bytes. This should be the total number of bytes sent + // over the wire, including the request line (HTTP/1.1), framing (HTTP/2 + // and HTTP/3), headers, and request body if any. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1437 + HTTPRequestSizeKey = attribute.Key("http.request.size") + + // HTTPResponseBodySizeKey is the attribute Key conforming to the + // "http.response.body.size" semantic conventions. It represents the size + // of the response payload body in bytes. This is the number of bytes + // transferred excluding headers and is often, but not always, present as + // the + // [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) + // header. For requests using transport encoding, this should be the + // compressed size. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 3495 + HTTPResponseBodySizeKey = attribute.Key("http.response.body.size") + + // HTTPResponseSizeKey is the attribute Key conforming to the + // "http.response.size" semantic conventions. It represents the total size + // of the response in bytes. This should be the total number of bytes sent + // over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and + // HTTP/3), headers, and response body and trailers if any. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1437 + HTTPResponseSizeKey = attribute.Key("http.response.size") + + // HTTPResponseStatusCodeKey is the attribute Key conforming to the + // "http.response.status_code" semantic conventions. It represents the + // [HTTP response status + // code](https://tools.ietf.org/html/rfc7231#section-6). + // + // Type: int + // RequirementLevel: Optional + // Stability: stable + // Examples: 200 + HTTPResponseStatusCodeKey = attribute.Key("http.response.status_code") + + // HTTPRouteKey is the attribute Key conforming to the "http.route" + // semantic conventions. It represents the matched route, that is, the path + // template in the format used by the respective server framework. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: '/users/:userID?', '{controller}/{action}/{id?}' + // Note: MUST NOT be populated when this is not supported by the HTTP + // server framework as the route attribute should have low-cardinality and + // the URI path can NOT substitute it. + // SHOULD include the [application + // root](/docs/http/http-spans.md#http-server-definitions) if there is one. + HTTPRouteKey = attribute.Key("http.route") +) + +var ( + // active state + HTTPConnectionStateActive = HTTPConnectionStateKey.String("active") + // idle state + HTTPConnectionStateIdle = HTTPConnectionStateKey.String("idle") +) + +var ( + // CONNECT method + HTTPRequestMethodConnect = HTTPRequestMethodKey.String("CONNECT") + // DELETE method + HTTPRequestMethodDelete = HTTPRequestMethodKey.String("DELETE") + // GET method + HTTPRequestMethodGet = HTTPRequestMethodKey.String("GET") + // HEAD method + HTTPRequestMethodHead = HTTPRequestMethodKey.String("HEAD") + // OPTIONS method + HTTPRequestMethodOptions = HTTPRequestMethodKey.String("OPTIONS") + // PATCH method + HTTPRequestMethodPatch = HTTPRequestMethodKey.String("PATCH") + // POST method + HTTPRequestMethodPost = HTTPRequestMethodKey.String("POST") + // PUT method + HTTPRequestMethodPut = HTTPRequestMethodKey.String("PUT") + // TRACE method + HTTPRequestMethodTrace = HTTPRequestMethodKey.String("TRACE") + // Any HTTP method that the instrumentation has no prior knowledge of + HTTPRequestMethodOther = HTTPRequestMethodKey.String("_OTHER") +) + +// HTTPRequestBodySize returns an attribute KeyValue conforming to the +// "http.request.body.size" semantic conventions. It represents the size of the +// request payload body in bytes. This is the number of bytes transferred +// excluding headers and is often, but not always, present as the +// [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) +// header. For requests using transport encoding, this should be the compressed +// size. +func HTTPRequestBodySize(val int) attribute.KeyValue { + return HTTPRequestBodySizeKey.Int(val) +} + +// HTTPRequestMethodOriginal returns an attribute KeyValue conforming to the +// "http.request.method_original" semantic conventions. It represents the +// original HTTP method sent by the client in the request line. +func HTTPRequestMethodOriginal(val string) attribute.KeyValue { + return HTTPRequestMethodOriginalKey.String(val) +} + +// HTTPRequestResendCount returns an attribute KeyValue conforming to the +// "http.request.resend_count" semantic conventions. It represents the ordinal +// number of request resending attempt (for any reason, including redirects). +func HTTPRequestResendCount(val int) attribute.KeyValue { + return HTTPRequestResendCountKey.Int(val) +} + +// HTTPRequestSize returns an attribute KeyValue conforming to the +// "http.request.size" semantic conventions. It represents the total size of +// the request in bytes. This should be the total number of bytes sent over the +// wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), +// headers, and request body if any. +func HTTPRequestSize(val int) attribute.KeyValue { + return HTTPRequestSizeKey.Int(val) +} + +// HTTPResponseBodySize returns an attribute KeyValue conforming to the +// "http.response.body.size" semantic conventions. It represents the size of +// the response payload body in bytes. This is the number of bytes transferred +// excluding headers and is often, but not always, present as the +// [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) +// header. For requests using transport encoding, this should be the compressed +// size. +func HTTPResponseBodySize(val int) attribute.KeyValue { + return HTTPResponseBodySizeKey.Int(val) +} + +// HTTPResponseSize returns an attribute KeyValue conforming to the +// "http.response.size" semantic conventions. It represents the total size of +// the response in bytes. This should be the total number of bytes sent over +// the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), +// headers, and response body and trailers if any. +func HTTPResponseSize(val int) attribute.KeyValue { + return HTTPResponseSizeKey.Int(val) +} + +// HTTPResponseStatusCode returns an attribute KeyValue conforming to the +// "http.response.status_code" semantic conventions. It represents the [HTTP +// response status code](https://tools.ietf.org/html/rfc7231#section-6). +func HTTPResponseStatusCode(val int) attribute.KeyValue { + return HTTPResponseStatusCodeKey.Int(val) +} + +// HTTPRoute returns an attribute KeyValue conforming to the "http.route" +// semantic conventions. It represents the matched route, that is, the path +// template in the format used by the respective server framework. +func HTTPRoute(val string) attribute.KeyValue { + return HTTPRouteKey.String(val) +} + +// Java Virtual machine related attributes. +const ( + // JvmBufferPoolNameKey is the attribute Key conforming to the + // "jvm.buffer.pool.name" semantic conventions. It represents the name of + // the buffer pool. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'mapped', 'direct' + // Note: Pool names are generally obtained via + // [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()). + JvmBufferPoolNameKey = attribute.Key("jvm.buffer.pool.name") + + // JvmGcActionKey is the attribute Key conforming to the "jvm.gc.action" + // semantic conventions. It represents the name of the garbage collector + // action. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'end of minor GC', 'end of major GC' + // Note: Garbage collector action is generally obtained via + // [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()). + JvmGcActionKey = attribute.Key("jvm.gc.action") + + // JvmGcNameKey is the attribute Key conforming to the "jvm.gc.name" + // semantic conventions. It represents the name of the garbage collector. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'G1 Young Generation', 'G1 Old Generation' + // Note: Garbage collector name is generally obtained via + // [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()). + JvmGcNameKey = attribute.Key("jvm.gc.name") + + // JvmMemoryPoolNameKey is the attribute Key conforming to the + // "jvm.memory.pool.name" semantic conventions. It represents the name of + // the memory pool. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'G1 Old Gen', 'G1 Eden space', 'G1 Survivor Space' + // Note: Pool names are generally obtained via + // [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()). + JvmMemoryPoolNameKey = attribute.Key("jvm.memory.pool.name") + + // JvmMemoryTypeKey is the attribute Key conforming to the + // "jvm.memory.type" semantic conventions. It represents the type of + // memory. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + // Examples: 'heap', 'non_heap' + JvmMemoryTypeKey = attribute.Key("jvm.memory.type") + + // JvmThreadDaemonKey is the attribute Key conforming to the + // "jvm.thread.daemon" semantic conventions. It represents the whether the + // thread is daemon or not. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: stable + JvmThreadDaemonKey = attribute.Key("jvm.thread.daemon") + + // JvmThreadStateKey is the attribute Key conforming to the + // "jvm.thread.state" semantic conventions. It represents the state of the + // thread. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + // Examples: 'runnable', 'blocked' + JvmThreadStateKey = attribute.Key("jvm.thread.state") +) + +var ( + // Heap memory + JvmMemoryTypeHeap = JvmMemoryTypeKey.String("heap") + // Non-heap memory + JvmMemoryTypeNonHeap = JvmMemoryTypeKey.String("non_heap") +) + +var ( + // A thread that has not yet started is in this state + JvmThreadStateNew = JvmThreadStateKey.String("new") + // A thread executing in the Java virtual machine is in this state + JvmThreadStateRunnable = JvmThreadStateKey.String("runnable") + // A thread that is blocked waiting for a monitor lock is in this state + JvmThreadStateBlocked = JvmThreadStateKey.String("blocked") + // A thread that is waiting indefinitely for another thread to perform a particular action is in this state + JvmThreadStateWaiting = JvmThreadStateKey.String("waiting") + // A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state + JvmThreadStateTimedWaiting = JvmThreadStateKey.String("timed_waiting") + // A thread that has exited is in this state + JvmThreadStateTerminated = JvmThreadStateKey.String("terminated") +) + +// JvmBufferPoolName returns an attribute KeyValue conforming to the +// "jvm.buffer.pool.name" semantic conventions. It represents the name of the +// buffer pool. +func JvmBufferPoolName(val string) attribute.KeyValue { + return JvmBufferPoolNameKey.String(val) +} + +// JvmGcAction returns an attribute KeyValue conforming to the +// "jvm.gc.action" semantic conventions. It represents the name of the garbage +// collector action. +func JvmGcAction(val string) attribute.KeyValue { + return JvmGcActionKey.String(val) +} + +// JvmGcName returns an attribute KeyValue conforming to the "jvm.gc.name" +// semantic conventions. It represents the name of the garbage collector. +func JvmGcName(val string) attribute.KeyValue { + return JvmGcNameKey.String(val) +} + +// JvmMemoryPoolName returns an attribute KeyValue conforming to the +// "jvm.memory.pool.name" semantic conventions. It represents the name of the +// memory pool. +func JvmMemoryPoolName(val string) attribute.KeyValue { + return JvmMemoryPoolNameKey.String(val) +} + +// JvmThreadDaemon returns an attribute KeyValue conforming to the +// "jvm.thread.daemon" semantic conventions. It represents the whether the +// thread is daemon or not. +func JvmThreadDaemon(val bool) attribute.KeyValue { + return JvmThreadDaemonKey.Bool(val) +} + +// Kubernetes resource attributes. +const ( + // K8SClusterNameKey is the attribute Key conforming to the + // "k8s.cluster.name" semantic conventions. It represents the name of the + // cluster. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry-cluster' + K8SClusterNameKey = attribute.Key("k8s.cluster.name") + + // K8SClusterUIDKey is the attribute Key conforming to the + // "k8s.cluster.uid" semantic conventions. It represents a pseudo-ID for + // the cluster, set to the UID of the `kube-system` namespace. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '218fc5a9-a5f1-4b54-aa05-46717d0ab26d' + // Note: K8S doesn't have support for obtaining a cluster ID. If this is + // ever + // added, we will recommend collecting the `k8s.cluster.uid` through the + // official APIs. In the meantime, we are able to use the `uid` of the + // `kube-system` namespace as a proxy for cluster ID. Read on for the + // rationale. + // + // Every object created in a K8S cluster is assigned a distinct UID. The + // `kube-system` namespace is used by Kubernetes itself and will exist + // for the lifetime of the cluster. Using the `uid` of the `kube-system` + // namespace is a reasonable proxy for the K8S ClusterID as it will only + // change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are + // UUIDs as standardized by + // [ISO/IEC 9834-8 and ITU-T + // X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html). + // Which states: + // + // > If generated according to one of the mechanisms defined in Rec. + // ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be + // different from all other UUIDs generated before 3603 A.D., or is + // extremely likely to be different (depending on the mechanism chosen). + // + // Therefore, UIDs between clusters should be extremely unlikely to + // conflict. + K8SClusterUIDKey = attribute.Key("k8s.cluster.uid") + + // K8SContainerNameKey is the attribute Key conforming to the + // "k8s.container.name" semantic conventions. It represents the name of the + // Container from Pod specification, must be unique within a Pod. Container + // runtime usually uses different globally unique name (`container.name`). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'redis' + K8SContainerNameKey = attribute.Key("k8s.container.name") + + // K8SContainerRestartCountKey is the attribute Key conforming to the + // "k8s.container.restart_count" semantic conventions. It represents the + // number of times the container was restarted. This attribute can be used + // to identify a particular container (running or stopped) within a + // container spec. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + K8SContainerRestartCountKey = attribute.Key("k8s.container.restart_count") + + // K8SContainerStatusLastTerminatedReasonKey is the attribute Key + // conforming to the "k8s.container.status.last_terminated_reason" semantic + // conventions. It represents the last terminated reason of the Container. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Evicted', 'Error' + K8SContainerStatusLastTerminatedReasonKey = attribute.Key("k8s.container.status.last_terminated_reason") + + // K8SCronJobNameKey is the attribute Key conforming to the + // "k8s.cronjob.name" semantic conventions. It represents the name of the + // CronJob. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry' + K8SCronJobNameKey = attribute.Key("k8s.cronjob.name") + + // K8SCronJobUIDKey is the attribute Key conforming to the + // "k8s.cronjob.uid" semantic conventions. It represents the UID of the + // CronJob. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' + K8SCronJobUIDKey = attribute.Key("k8s.cronjob.uid") + + // K8SDaemonSetNameKey is the attribute Key conforming to the + // "k8s.daemonset.name" semantic conventions. It represents the name of the + // DaemonSet. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry' + K8SDaemonSetNameKey = attribute.Key("k8s.daemonset.name") + + // K8SDaemonSetUIDKey is the attribute Key conforming to the + // "k8s.daemonset.uid" semantic conventions. It represents the UID of the + // DaemonSet. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' + K8SDaemonSetUIDKey = attribute.Key("k8s.daemonset.uid") + + // K8SDeploymentNameKey is the attribute Key conforming to the + // "k8s.deployment.name" semantic conventions. It represents the name of + // the Deployment. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry' + K8SDeploymentNameKey = attribute.Key("k8s.deployment.name") + + // K8SDeploymentUIDKey is the attribute Key conforming to the + // "k8s.deployment.uid" semantic conventions. It represents the UID of the + // Deployment. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' + K8SDeploymentUIDKey = attribute.Key("k8s.deployment.uid") + + // K8SJobNameKey is the attribute Key conforming to the "k8s.job.name" + // semantic conventions. It represents the name of the Job. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry' + K8SJobNameKey = attribute.Key("k8s.job.name") + + // K8SJobUIDKey is the attribute Key conforming to the "k8s.job.uid" + // semantic conventions. It represents the UID of the Job. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' + K8SJobUIDKey = attribute.Key("k8s.job.uid") + + // K8SNamespaceNameKey is the attribute Key conforming to the + // "k8s.namespace.name" semantic conventions. It represents the name of the + // namespace that the pod is running in. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'default' + K8SNamespaceNameKey = attribute.Key("k8s.namespace.name") + + // K8SNodeNameKey is the attribute Key conforming to the "k8s.node.name" + // semantic conventions. It represents the name of the Node. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'node-1' + K8SNodeNameKey = attribute.Key("k8s.node.name") + + // K8SNodeUIDKey is the attribute Key conforming to the "k8s.node.uid" + // semantic conventions. It represents the UID of the Node. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2' + K8SNodeUIDKey = attribute.Key("k8s.node.uid") + + // K8SPodNameKey is the attribute Key conforming to the "k8s.pod.name" + // semantic conventions. It represents the name of the Pod. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry-pod-autoconf' + K8SPodNameKey = attribute.Key("k8s.pod.name") + + // K8SPodUIDKey is the attribute Key conforming to the "k8s.pod.uid" + // semantic conventions. It represents the UID of the Pod. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' + K8SPodUIDKey = attribute.Key("k8s.pod.uid") + + // K8SReplicaSetNameKey is the attribute Key conforming to the + // "k8s.replicaset.name" semantic conventions. It represents the name of + // the ReplicaSet. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry' + K8SReplicaSetNameKey = attribute.Key("k8s.replicaset.name") + + // K8SReplicaSetUIDKey is the attribute Key conforming to the + // "k8s.replicaset.uid" semantic conventions. It represents the UID of the + // ReplicaSet. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' + K8SReplicaSetUIDKey = attribute.Key("k8s.replicaset.uid") + + // K8SStatefulSetNameKey is the attribute Key conforming to the + // "k8s.statefulset.name" semantic conventions. It represents the name of + // the StatefulSet. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry' + K8SStatefulSetNameKey = attribute.Key("k8s.statefulset.name") + + // K8SStatefulSetUIDKey is the attribute Key conforming to the + // "k8s.statefulset.uid" semantic conventions. It represents the UID of the + // StatefulSet. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff' + K8SStatefulSetUIDKey = attribute.Key("k8s.statefulset.uid") +) + +// K8SClusterName returns an attribute KeyValue conforming to the +// "k8s.cluster.name" semantic conventions. It represents the name of the +// cluster. +func K8SClusterName(val string) attribute.KeyValue { + return K8SClusterNameKey.String(val) +} + +// K8SClusterUID returns an attribute KeyValue conforming to the +// "k8s.cluster.uid" semantic conventions. It represents a pseudo-ID for the +// cluster, set to the UID of the `kube-system` namespace. +func K8SClusterUID(val string) attribute.KeyValue { + return K8SClusterUIDKey.String(val) +} + +// K8SContainerName returns an attribute KeyValue conforming to the +// "k8s.container.name" semantic conventions. It represents the name of the +// Container from Pod specification, must be unique within a Pod. Container +// runtime usually uses different globally unique name (`container.name`). +func K8SContainerName(val string) attribute.KeyValue { + return K8SContainerNameKey.String(val) +} + +// K8SContainerRestartCount returns an attribute KeyValue conforming to the +// "k8s.container.restart_count" semantic conventions. It represents the number +// of times the container was restarted. This attribute can be used to identify +// a particular container (running or stopped) within a container spec. +func K8SContainerRestartCount(val int) attribute.KeyValue { + return K8SContainerRestartCountKey.Int(val) +} + +// K8SContainerStatusLastTerminatedReason returns an attribute KeyValue +// conforming to the "k8s.container.status.last_terminated_reason" semantic +// conventions. It represents the last terminated reason of the Container. +func K8SContainerStatusLastTerminatedReason(val string) attribute.KeyValue { + return K8SContainerStatusLastTerminatedReasonKey.String(val) +} + +// K8SCronJobName returns an attribute KeyValue conforming to the +// "k8s.cronjob.name" semantic conventions. It represents the name of the +// CronJob. +func K8SCronJobName(val string) attribute.KeyValue { + return K8SCronJobNameKey.String(val) +} + +// K8SCronJobUID returns an attribute KeyValue conforming to the +// "k8s.cronjob.uid" semantic conventions. It represents the UID of the +// CronJob. +func K8SCronJobUID(val string) attribute.KeyValue { + return K8SCronJobUIDKey.String(val) +} + +// K8SDaemonSetName returns an attribute KeyValue conforming to the +// "k8s.daemonset.name" semantic conventions. It represents the name of the +// DaemonSet. +func K8SDaemonSetName(val string) attribute.KeyValue { + return K8SDaemonSetNameKey.String(val) +} + +// K8SDaemonSetUID returns an attribute KeyValue conforming to the +// "k8s.daemonset.uid" semantic conventions. It represents the UID of the +// DaemonSet. +func K8SDaemonSetUID(val string) attribute.KeyValue { + return K8SDaemonSetUIDKey.String(val) +} + +// K8SDeploymentName returns an attribute KeyValue conforming to the +// "k8s.deployment.name" semantic conventions. It represents the name of the +// Deployment. +func K8SDeploymentName(val string) attribute.KeyValue { + return K8SDeploymentNameKey.String(val) +} + +// K8SDeploymentUID returns an attribute KeyValue conforming to the +// "k8s.deployment.uid" semantic conventions. It represents the UID of the +// Deployment. +func K8SDeploymentUID(val string) attribute.KeyValue { + return K8SDeploymentUIDKey.String(val) +} + +// K8SJobName returns an attribute KeyValue conforming to the "k8s.job.name" +// semantic conventions. It represents the name of the Job. +func K8SJobName(val string) attribute.KeyValue { + return K8SJobNameKey.String(val) +} + +// K8SJobUID returns an attribute KeyValue conforming to the "k8s.job.uid" +// semantic conventions. It represents the UID of the Job. +func K8SJobUID(val string) attribute.KeyValue { + return K8SJobUIDKey.String(val) +} + +// K8SNamespaceName returns an attribute KeyValue conforming to the +// "k8s.namespace.name" semantic conventions. It represents the name of the +// namespace that the pod is running in. +func K8SNamespaceName(val string) attribute.KeyValue { + return K8SNamespaceNameKey.String(val) +} + +// K8SNodeName returns an attribute KeyValue conforming to the +// "k8s.node.name" semantic conventions. It represents the name of the Node. +func K8SNodeName(val string) attribute.KeyValue { + return K8SNodeNameKey.String(val) +} + +// K8SNodeUID returns an attribute KeyValue conforming to the "k8s.node.uid" +// semantic conventions. It represents the UID of the Node. +func K8SNodeUID(val string) attribute.KeyValue { + return K8SNodeUIDKey.String(val) +} + +// K8SPodName returns an attribute KeyValue conforming to the "k8s.pod.name" +// semantic conventions. It represents the name of the Pod. +func K8SPodName(val string) attribute.KeyValue { + return K8SPodNameKey.String(val) +} + +// K8SPodUID returns an attribute KeyValue conforming to the "k8s.pod.uid" +// semantic conventions. It represents the UID of the Pod. +func K8SPodUID(val string) attribute.KeyValue { + return K8SPodUIDKey.String(val) +} + +// K8SReplicaSetName returns an attribute KeyValue conforming to the +// "k8s.replicaset.name" semantic conventions. It represents the name of the +// ReplicaSet. +func K8SReplicaSetName(val string) attribute.KeyValue { + return K8SReplicaSetNameKey.String(val) +} + +// K8SReplicaSetUID returns an attribute KeyValue conforming to the +// "k8s.replicaset.uid" semantic conventions. It represents the UID of the +// ReplicaSet. +func K8SReplicaSetUID(val string) attribute.KeyValue { + return K8SReplicaSetUIDKey.String(val) +} + +// K8SStatefulSetName returns an attribute KeyValue conforming to the +// "k8s.statefulset.name" semantic conventions. It represents the name of the +// StatefulSet. +func K8SStatefulSetName(val string) attribute.KeyValue { + return K8SStatefulSetNameKey.String(val) +} + +// K8SStatefulSetUID returns an attribute KeyValue conforming to the +// "k8s.statefulset.uid" semantic conventions. It represents the UID of the +// StatefulSet. +func K8SStatefulSetUID(val string) attribute.KeyValue { + return K8SStatefulSetUIDKey.String(val) +} + +// Log attributes +const ( + // LogIostreamKey is the attribute Key conforming to the "log.iostream" + // semantic conventions. It represents the stream associated with the log. + // See below for a list of well-known values. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + LogIostreamKey = attribute.Key("log.iostream") +) + +var ( + // Logs from stdout stream + LogIostreamStdout = LogIostreamKey.String("stdout") + // Events from stderr stream + LogIostreamStderr = LogIostreamKey.String("stderr") +) + +// Attributes for a file to which log was emitted. +const ( + // LogFileNameKey is the attribute Key conforming to the "log.file.name" + // semantic conventions. It represents the basename of the file. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'audit.log' + LogFileNameKey = attribute.Key("log.file.name") + + // LogFileNameResolvedKey is the attribute Key conforming to the + // "log.file.name_resolved" semantic conventions. It represents the + // basename of the file, with symlinks resolved. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'uuid.log' + LogFileNameResolvedKey = attribute.Key("log.file.name_resolved") + + // LogFilePathKey is the attribute Key conforming to the "log.file.path" + // semantic conventions. It represents the full path to the file. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '/var/log/mysql/audit.log' + LogFilePathKey = attribute.Key("log.file.path") + + // LogFilePathResolvedKey is the attribute Key conforming to the + // "log.file.path_resolved" semantic conventions. It represents the full + // path to the file, with symlinks resolved. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '/var/lib/docker/uuid.log' + LogFilePathResolvedKey = attribute.Key("log.file.path_resolved") +) + +// LogFileName returns an attribute KeyValue conforming to the +// "log.file.name" semantic conventions. It represents the basename of the +// file. +func LogFileName(val string) attribute.KeyValue { + return LogFileNameKey.String(val) +} + +// LogFileNameResolved returns an attribute KeyValue conforming to the +// "log.file.name_resolved" semantic conventions. It represents the basename of +// the file, with symlinks resolved. +func LogFileNameResolved(val string) attribute.KeyValue { + return LogFileNameResolvedKey.String(val) +} + +// LogFilePath returns an attribute KeyValue conforming to the +// "log.file.path" semantic conventions. It represents the full path to the +// file. +func LogFilePath(val string) attribute.KeyValue { + return LogFilePathKey.String(val) +} + +// LogFilePathResolved returns an attribute KeyValue conforming to the +// "log.file.path_resolved" semantic conventions. It represents the full path +// to the file, with symlinks resolved. +func LogFilePathResolved(val string) attribute.KeyValue { + return LogFilePathResolvedKey.String(val) +} + +// The generic attributes that may be used in any Log Record. +const ( + // LogRecordUIDKey is the attribute Key conforming to the "log.record.uid" + // semantic conventions. It represents a unique identifier for the Log + // Record. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '01ARZ3NDEKTSV4RRFFQ69G5FAV' + // Note: If an id is provided, other log records with the same id will be + // considered duplicates and can be removed safely. This means, that two + // distinguishable log records MUST have different values. + // The id MAY be an [Universally Unique Lexicographically Sortable + // Identifier (ULID)](https://github.com/ulid/spec), but other identifiers + // (e.g. UUID) may be used as needed. + LogRecordUIDKey = attribute.Key("log.record.uid") +) + +// LogRecordUID returns an attribute KeyValue conforming to the +// "log.record.uid" semantic conventions. It represents a unique identifier for +// the Log Record. +func LogRecordUID(val string) attribute.KeyValue { + return LogRecordUIDKey.String(val) +} + +// Attributes describing telemetry around messaging systems and messaging +// activities. +const ( + // MessagingBatchMessageCountKey is the attribute Key conforming to the + // "messaging.batch.message_count" semantic conventions. It represents the + // number of messages sent, received, or processed in the scope of the + // batching operation. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 0, 1, 2 + // Note: Instrumentations SHOULD NOT set `messaging.batch.message_count` on + // spans that operate with a single message. When a messaging client + // library supports both batch and single-message API for the same + // operation, instrumentations SHOULD use `messaging.batch.message_count` + // for batching APIs and SHOULD NOT use it for single-message APIs. + MessagingBatchMessageCountKey = attribute.Key("messaging.batch.message_count") + + // MessagingClientIDKey is the attribute Key conforming to the + // "messaging.client.id" semantic conventions. It represents a unique + // identifier for the client that consumes or produces a message. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'client-5', 'myhost@8742@s8083jm' + MessagingClientIDKey = attribute.Key("messaging.client.id") + + // MessagingDestinationAnonymousKey is the attribute Key conforming to the + // "messaging.destination.anonymous" semantic conventions. It represents a + // boolean that is true if the message destination is anonymous (could be + // unnamed or have auto-generated name). + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + MessagingDestinationAnonymousKey = attribute.Key("messaging.destination.anonymous") + + // MessagingDestinationNameKey is the attribute Key conforming to the + // "messaging.destination.name" semantic conventions. It represents the + // message destination name + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'MyQueue', 'MyTopic' + // Note: Destination name SHOULD uniquely identify a specific queue, topic + // or other entity within the broker. If + // the broker doesn't have such notion, the destination name SHOULD + // uniquely identify the broker. + MessagingDestinationNameKey = attribute.Key("messaging.destination.name") + + // MessagingDestinationPartitionIDKey is the attribute Key conforming to + // the "messaging.destination.partition.id" semantic conventions. It + // represents the identifier of the partition messages are sent to or + // received from, unique within the `messaging.destination.name`. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '1' + MessagingDestinationPartitionIDKey = attribute.Key("messaging.destination.partition.id") + + // MessagingDestinationTemplateKey is the attribute Key conforming to the + // "messaging.destination.template" semantic conventions. It represents the + // low cardinality representation of the messaging destination name + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '/customers/{customerID}' + // Note: Destination names could be constructed from templates. An example + // would be a destination name involving a user name or product id. + // Although the destination name in this case is of high cardinality, the + // underlying template is of low cardinality and can be effectively used + // for grouping and aggregation. + MessagingDestinationTemplateKey = attribute.Key("messaging.destination.template") + + // MessagingDestinationTemporaryKey is the attribute Key conforming to the + // "messaging.destination.temporary" semantic conventions. It represents a + // boolean that is true if the message destination is temporary and might + // not exist anymore after messages are processed. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + MessagingDestinationTemporaryKey = attribute.Key("messaging.destination.temporary") + + // MessagingDestinationPublishAnonymousKey is the attribute Key conforming + // to the "messaging.destination_publish.anonymous" semantic conventions. + // It represents a boolean that is true if the publish message destination + // is anonymous (could be unnamed or have auto-generated name). + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + MessagingDestinationPublishAnonymousKey = attribute.Key("messaging.destination_publish.anonymous") + + // MessagingDestinationPublishNameKey is the attribute Key conforming to + // the "messaging.destination_publish.name" semantic conventions. It + // represents the name of the original destination the message was + // published to + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'MyQueue', 'MyTopic' + // Note: The name SHOULD uniquely identify a specific queue, topic, or + // other entity within the broker. If + // the broker doesn't have such notion, the original destination name + // SHOULD uniquely identify the broker. + MessagingDestinationPublishNameKey = attribute.Key("messaging.destination_publish.name") + + // MessagingMessageBodySizeKey is the attribute Key conforming to the + // "messaging.message.body.size" semantic conventions. It represents the + // size of the message body in bytes. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1439 + // Note: This can refer to both the compressed or uncompressed body size. + // If both sizes are known, the uncompressed + // body size should be used. + MessagingMessageBodySizeKey = attribute.Key("messaging.message.body.size") + + // MessagingMessageConversationIDKey is the attribute Key conforming to the + // "messaging.message.conversation_id" semantic conventions. It represents + // the conversation ID identifying the conversation to which the message + // belongs, represented as a string. Sometimes called "Correlation ID". + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'MyConversationID' + MessagingMessageConversationIDKey = attribute.Key("messaging.message.conversation_id") + + // MessagingMessageEnvelopeSizeKey is the attribute Key conforming to the + // "messaging.message.envelope.size" semantic conventions. It represents + // the size of the message body and metadata in bytes. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 2738 + // Note: This can refer to both the compressed or uncompressed size. If + // both sizes are known, the uncompressed + // size should be used. + MessagingMessageEnvelopeSizeKey = attribute.Key("messaging.message.envelope.size") + + // MessagingMessageIDKey is the attribute Key conforming to the + // "messaging.message.id" semantic conventions. It represents a value used + // by the messaging system as an identifier for the message, represented as + // a string. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '452a7c7c7c7048c2f887f61572b18fc2' + MessagingMessageIDKey = attribute.Key("messaging.message.id") + + // MessagingOperationNameKey is the attribute Key conforming to the + // "messaging.operation.name" semantic conventions. It represents the + // system-specific name of the messaging operation. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'ack', 'nack', 'send' + MessagingOperationNameKey = attribute.Key("messaging.operation.name") + + // MessagingOperationTypeKey is the attribute Key conforming to the + // "messaging.operation.type" semantic conventions. It represents a string + // identifying the type of the messaging operation. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Note: If a custom value is used, it MUST be of low cardinality. + MessagingOperationTypeKey = attribute.Key("messaging.operation.type") + + // MessagingSystemKey is the attribute Key conforming to the + // "messaging.system" semantic conventions. It represents the messaging + // system as identified by the client instrumentation. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Note: The actual messaging system may differ from the one known by the + // client. For example, when using Kafka client libraries to communicate + // with Azure Event Hubs, the `messaging.system` is set to `kafka` based on + // the instrumentation's best knowledge. + MessagingSystemKey = attribute.Key("messaging.system") +) + +var ( + // One or more messages are provided for publishing to an intermediary. If a single message is published, the context of the "Publish" span can be used as the creation context and no "Create" span needs to be created + MessagingOperationTypePublish = MessagingOperationTypeKey.String("publish") + // A message is created. "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch publishing scenarios + MessagingOperationTypeCreate = MessagingOperationTypeKey.String("create") + // One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages + MessagingOperationTypeReceive = MessagingOperationTypeKey.String("receive") + // One or more messages are delivered to or processed by a consumer + MessagingOperationTypeDeliver = MessagingOperationTypeKey.String("process") + // One or more messages are settled + MessagingOperationTypeSettle = MessagingOperationTypeKey.String("settle") +) + +var ( + // Apache ActiveMQ + MessagingSystemActivemq = MessagingSystemKey.String("activemq") + // Amazon Simple Queue Service (SQS) + MessagingSystemAWSSqs = MessagingSystemKey.String("aws_sqs") + // Azure Event Grid + MessagingSystemEventgrid = MessagingSystemKey.String("eventgrid") + // Azure Event Hubs + MessagingSystemEventhubs = MessagingSystemKey.String("eventhubs") + // Azure Service Bus + MessagingSystemServicebus = MessagingSystemKey.String("servicebus") + // Google Cloud Pub/Sub + MessagingSystemGCPPubsub = MessagingSystemKey.String("gcp_pubsub") + // Java Message Service + MessagingSystemJms = MessagingSystemKey.String("jms") + // Apache Kafka + MessagingSystemKafka = MessagingSystemKey.String("kafka") + // RabbitMQ + MessagingSystemRabbitmq = MessagingSystemKey.String("rabbitmq") + // Apache RocketMQ + MessagingSystemRocketmq = MessagingSystemKey.String("rocketmq") +) + +// MessagingBatchMessageCount returns an attribute KeyValue conforming to +// the "messaging.batch.message_count" semantic conventions. It represents the +// number of messages sent, received, or processed in the scope of the batching +// operation. +func MessagingBatchMessageCount(val int) attribute.KeyValue { + return MessagingBatchMessageCountKey.Int(val) +} + +// MessagingClientID returns an attribute KeyValue conforming to the +// "messaging.client.id" semantic conventions. It represents a unique +// identifier for the client that consumes or produces a message. +func MessagingClientID(val string) attribute.KeyValue { + return MessagingClientIDKey.String(val) +} + +// MessagingDestinationAnonymous returns an attribute KeyValue conforming to +// the "messaging.destination.anonymous" semantic conventions. It represents a +// boolean that is true if the message destination is anonymous (could be +// unnamed or have auto-generated name). +func MessagingDestinationAnonymous(val bool) attribute.KeyValue { + return MessagingDestinationAnonymousKey.Bool(val) +} + +// MessagingDestinationName returns an attribute KeyValue conforming to the +// "messaging.destination.name" semantic conventions. It represents the message +// destination name +func MessagingDestinationName(val string) attribute.KeyValue { + return MessagingDestinationNameKey.String(val) +} + +// MessagingDestinationPartitionID returns an attribute KeyValue conforming +// to the "messaging.destination.partition.id" semantic conventions. It +// represents the identifier of the partition messages are sent to or received +// from, unique within the `messaging.destination.name`. +func MessagingDestinationPartitionID(val string) attribute.KeyValue { + return MessagingDestinationPartitionIDKey.String(val) +} + +// MessagingDestinationTemplate returns an attribute KeyValue conforming to +// the "messaging.destination.template" semantic conventions. It represents the +// low cardinality representation of the messaging destination name +func MessagingDestinationTemplate(val string) attribute.KeyValue { + return MessagingDestinationTemplateKey.String(val) +} + +// MessagingDestinationTemporary returns an attribute KeyValue conforming to +// the "messaging.destination.temporary" semantic conventions. It represents a +// boolean that is true if the message destination is temporary and might not +// exist anymore after messages are processed. +func MessagingDestinationTemporary(val bool) attribute.KeyValue { + return MessagingDestinationTemporaryKey.Bool(val) +} + +// MessagingDestinationPublishAnonymous returns an attribute KeyValue +// conforming to the "messaging.destination_publish.anonymous" semantic +// conventions. It represents a boolean that is true if the publish message +// destination is anonymous (could be unnamed or have auto-generated name). +func MessagingDestinationPublishAnonymous(val bool) attribute.KeyValue { + return MessagingDestinationPublishAnonymousKey.Bool(val) +} + +// MessagingDestinationPublishName returns an attribute KeyValue conforming +// to the "messaging.destination_publish.name" semantic conventions. It +// represents the name of the original destination the message was published to +func MessagingDestinationPublishName(val string) attribute.KeyValue { + return MessagingDestinationPublishNameKey.String(val) +} + +// MessagingMessageBodySize returns an attribute KeyValue conforming to the +// "messaging.message.body.size" semantic conventions. It represents the size +// of the message body in bytes. +func MessagingMessageBodySize(val int) attribute.KeyValue { + return MessagingMessageBodySizeKey.Int(val) +} + +// MessagingMessageConversationID returns an attribute KeyValue conforming +// to the "messaging.message.conversation_id" semantic conventions. It +// represents the conversation ID identifying the conversation to which the +// message belongs, represented as a string. Sometimes called "Correlation ID". +func MessagingMessageConversationID(val string) attribute.KeyValue { + return MessagingMessageConversationIDKey.String(val) +} + +// MessagingMessageEnvelopeSize returns an attribute KeyValue conforming to +// the "messaging.message.envelope.size" semantic conventions. It represents +// the size of the message body and metadata in bytes. +func MessagingMessageEnvelopeSize(val int) attribute.KeyValue { + return MessagingMessageEnvelopeSizeKey.Int(val) +} + +// MessagingMessageID returns an attribute KeyValue conforming to the +// "messaging.message.id" semantic conventions. It represents a value used by +// the messaging system as an identifier for the message, represented as a +// string. +func MessagingMessageID(val string) attribute.KeyValue { + return MessagingMessageIDKey.String(val) +} + +// MessagingOperationName returns an attribute KeyValue conforming to the +// "messaging.operation.name" semantic conventions. It represents the +// system-specific name of the messaging operation. +func MessagingOperationName(val string) attribute.KeyValue { + return MessagingOperationNameKey.String(val) +} + +// This group describes attributes specific to Apache Kafka. +const ( + // MessagingKafkaConsumerGroupKey is the attribute Key conforming to the + // "messaging.kafka.consumer.group" semantic conventions. It represents the + // name of the Kafka Consumer Group that is handling the message. Only + // applies to consumers, not producers. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'my-group' + MessagingKafkaConsumerGroupKey = attribute.Key("messaging.kafka.consumer.group") + + // MessagingKafkaMessageKeyKey is the attribute Key conforming to the + // "messaging.kafka.message.key" semantic conventions. It represents the + // message keys in Kafka are used for grouping alike messages to ensure + // they're processed on the same partition. They differ from + // `messaging.message.id` in that they're not unique. If the key is `null`, + // the attribute MUST NOT be set. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'myKey' + // Note: If the key type is not string, it's string representation has to + // be supplied for the attribute. If the key has no unambiguous, canonical + // string form, don't include its value. + MessagingKafkaMessageKeyKey = attribute.Key("messaging.kafka.message.key") + + // MessagingKafkaMessageOffsetKey is the attribute Key conforming to the + // "messaging.kafka.message.offset" semantic conventions. It represents the + // offset of a record in the corresponding Kafka partition. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 42 + MessagingKafkaMessageOffsetKey = attribute.Key("messaging.kafka.message.offset") + + // MessagingKafkaMessageTombstoneKey is the attribute Key conforming to the + // "messaging.kafka.message.tombstone" semantic conventions. It represents + // a boolean that is true if the message is a tombstone. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + MessagingKafkaMessageTombstoneKey = attribute.Key("messaging.kafka.message.tombstone") +) + +// MessagingKafkaConsumerGroup returns an attribute KeyValue conforming to +// the "messaging.kafka.consumer.group" semantic conventions. It represents the +// name of the Kafka Consumer Group that is handling the message. Only applies +// to consumers, not producers. +func MessagingKafkaConsumerGroup(val string) attribute.KeyValue { + return MessagingKafkaConsumerGroupKey.String(val) +} + +// MessagingKafkaMessageKey returns an attribute KeyValue conforming to the +// "messaging.kafka.message.key" semantic conventions. It represents the +// message keys in Kafka are used for grouping alike messages to ensure they're +// processed on the same partition. They differ from `messaging.message.id` in +// that they're not unique. If the key is `null`, the attribute MUST NOT be +// set. +func MessagingKafkaMessageKey(val string) attribute.KeyValue { + return MessagingKafkaMessageKeyKey.String(val) +} + +// MessagingKafkaMessageOffset returns an attribute KeyValue conforming to +// the "messaging.kafka.message.offset" semantic conventions. It represents the +// offset of a record in the corresponding Kafka partition. +func MessagingKafkaMessageOffset(val int) attribute.KeyValue { + return MessagingKafkaMessageOffsetKey.Int(val) +} + +// MessagingKafkaMessageTombstone returns an attribute KeyValue conforming +// to the "messaging.kafka.message.tombstone" semantic conventions. It +// represents a boolean that is true if the message is a tombstone. +func MessagingKafkaMessageTombstone(val bool) attribute.KeyValue { + return MessagingKafkaMessageTombstoneKey.Bool(val) +} + +// This group describes attributes specific to RabbitMQ. +const ( + // MessagingRabbitmqDestinationRoutingKeyKey is the attribute Key + // conforming to the "messaging.rabbitmq.destination.routing_key" semantic + // conventions. It represents the rabbitMQ message routing key. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'myKey' + MessagingRabbitmqDestinationRoutingKeyKey = attribute.Key("messaging.rabbitmq.destination.routing_key") + + // MessagingRabbitmqMessageDeliveryTagKey is the attribute Key conforming + // to the "messaging.rabbitmq.message.delivery_tag" semantic conventions. + // It represents the rabbitMQ message delivery tag + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 123 + MessagingRabbitmqMessageDeliveryTagKey = attribute.Key("messaging.rabbitmq.message.delivery_tag") +) + +// MessagingRabbitmqDestinationRoutingKey returns an attribute KeyValue +// conforming to the "messaging.rabbitmq.destination.routing_key" semantic +// conventions. It represents the rabbitMQ message routing key. +func MessagingRabbitmqDestinationRoutingKey(val string) attribute.KeyValue { + return MessagingRabbitmqDestinationRoutingKeyKey.String(val) +} + +// MessagingRabbitmqMessageDeliveryTag returns an attribute KeyValue +// conforming to the "messaging.rabbitmq.message.delivery_tag" semantic +// conventions. It represents the rabbitMQ message delivery tag +func MessagingRabbitmqMessageDeliveryTag(val int) attribute.KeyValue { + return MessagingRabbitmqMessageDeliveryTagKey.Int(val) +} + +// This group describes attributes specific to RocketMQ. +const ( + // MessagingRocketmqClientGroupKey is the attribute Key conforming to the + // "messaging.rocketmq.client_group" semantic conventions. It represents + // the name of the RocketMQ producer/consumer group that is handling the + // message. The client type is identified by the SpanKind. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'myConsumerGroup' + MessagingRocketmqClientGroupKey = attribute.Key("messaging.rocketmq.client_group") + + // MessagingRocketmqConsumptionModelKey is the attribute Key conforming to + // the "messaging.rocketmq.consumption_model" semantic conventions. It + // represents the model of message consumption. This only applies to + // consumer spans. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + MessagingRocketmqConsumptionModelKey = attribute.Key("messaging.rocketmq.consumption_model") + + // MessagingRocketmqMessageDelayTimeLevelKey is the attribute Key + // conforming to the "messaging.rocketmq.message.delay_time_level" semantic + // conventions. It represents the delay time level for delay message, which + // determines the message delay time. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 3 + MessagingRocketmqMessageDelayTimeLevelKey = attribute.Key("messaging.rocketmq.message.delay_time_level") + + // MessagingRocketmqMessageDeliveryTimestampKey is the attribute Key + // conforming to the "messaging.rocketmq.message.delivery_timestamp" + // semantic conventions. It represents the timestamp in milliseconds that + // the delay message is expected to be delivered to consumer. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1665987217045 + MessagingRocketmqMessageDeliveryTimestampKey = attribute.Key("messaging.rocketmq.message.delivery_timestamp") + + // MessagingRocketmqMessageGroupKey is the attribute Key conforming to the + // "messaging.rocketmq.message.group" semantic conventions. It represents + // the it is essential for FIFO message. Messages that belong to the same + // message group are always processed one by one within the same consumer + // group. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'myMessageGroup' + MessagingRocketmqMessageGroupKey = attribute.Key("messaging.rocketmq.message.group") + + // MessagingRocketmqMessageKeysKey is the attribute Key conforming to the + // "messaging.rocketmq.message.keys" semantic conventions. It represents + // the key(s) of message, another way to mark message besides message id. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'keyA', 'keyB' + MessagingRocketmqMessageKeysKey = attribute.Key("messaging.rocketmq.message.keys") + + // MessagingRocketmqMessageTagKey is the attribute Key conforming to the + // "messaging.rocketmq.message.tag" semantic conventions. It represents the + // secondary classifier of message besides topic. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'tagA' + MessagingRocketmqMessageTagKey = attribute.Key("messaging.rocketmq.message.tag") + + // MessagingRocketmqMessageTypeKey is the attribute Key conforming to the + // "messaging.rocketmq.message.type" semantic conventions. It represents + // the type of message. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + MessagingRocketmqMessageTypeKey = attribute.Key("messaging.rocketmq.message.type") + + // MessagingRocketmqNamespaceKey is the attribute Key conforming to the + // "messaging.rocketmq.namespace" semantic conventions. It represents the + // namespace of RocketMQ resources, resources in different namespaces are + // individual. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'myNamespace' + MessagingRocketmqNamespaceKey = attribute.Key("messaging.rocketmq.namespace") +) + +var ( + // Clustering consumption model + MessagingRocketmqConsumptionModelClustering = MessagingRocketmqConsumptionModelKey.String("clustering") + // Broadcasting consumption model + MessagingRocketmqConsumptionModelBroadcasting = MessagingRocketmqConsumptionModelKey.String("broadcasting") +) + +var ( + // Normal message + MessagingRocketmqMessageTypeNormal = MessagingRocketmqMessageTypeKey.String("normal") + // FIFO message + MessagingRocketmqMessageTypeFifo = MessagingRocketmqMessageTypeKey.String("fifo") + // Delay message + MessagingRocketmqMessageTypeDelay = MessagingRocketmqMessageTypeKey.String("delay") + // Transaction message + MessagingRocketmqMessageTypeTransaction = MessagingRocketmqMessageTypeKey.String("transaction") +) + +// MessagingRocketmqClientGroup returns an attribute KeyValue conforming to +// the "messaging.rocketmq.client_group" semantic conventions. It represents +// the name of the RocketMQ producer/consumer group that is handling the +// message. The client type is identified by the SpanKind. +func MessagingRocketmqClientGroup(val string) attribute.KeyValue { + return MessagingRocketmqClientGroupKey.String(val) +} + +// MessagingRocketmqMessageDelayTimeLevel returns an attribute KeyValue +// conforming to the "messaging.rocketmq.message.delay_time_level" semantic +// conventions. It represents the delay time level for delay message, which +// determines the message delay time. +func MessagingRocketmqMessageDelayTimeLevel(val int) attribute.KeyValue { + return MessagingRocketmqMessageDelayTimeLevelKey.Int(val) +} + +// MessagingRocketmqMessageDeliveryTimestamp returns an attribute KeyValue +// conforming to the "messaging.rocketmq.message.delivery_timestamp" semantic +// conventions. It represents the timestamp in milliseconds that the delay +// message is expected to be delivered to consumer. +func MessagingRocketmqMessageDeliveryTimestamp(val int) attribute.KeyValue { + return MessagingRocketmqMessageDeliveryTimestampKey.Int(val) +} + +// MessagingRocketmqMessageGroup returns an attribute KeyValue conforming to +// the "messaging.rocketmq.message.group" semantic conventions. It represents +// the it is essential for FIFO message. Messages that belong to the same +// message group are always processed one by one within the same consumer +// group. +func MessagingRocketmqMessageGroup(val string) attribute.KeyValue { + return MessagingRocketmqMessageGroupKey.String(val) +} + +// MessagingRocketmqMessageKeys returns an attribute KeyValue conforming to +// the "messaging.rocketmq.message.keys" semantic conventions. It represents +// the key(s) of message, another way to mark message besides message id. +func MessagingRocketmqMessageKeys(val ...string) attribute.KeyValue { + return MessagingRocketmqMessageKeysKey.StringSlice(val) +} + +// MessagingRocketmqMessageTag returns an attribute KeyValue conforming to +// the "messaging.rocketmq.message.tag" semantic conventions. It represents the +// secondary classifier of message besides topic. +func MessagingRocketmqMessageTag(val string) attribute.KeyValue { + return MessagingRocketmqMessageTagKey.String(val) +} + +// MessagingRocketmqNamespace returns an attribute KeyValue conforming to +// the "messaging.rocketmq.namespace" semantic conventions. It represents the +// namespace of RocketMQ resources, resources in different namespaces are +// individual. +func MessagingRocketmqNamespace(val string) attribute.KeyValue { + return MessagingRocketmqNamespaceKey.String(val) +} + +// This group describes attributes specific to GCP Pub/Sub. +const ( + // MessagingGCPPubsubMessageAckDeadlineKey is the attribute Key conforming + // to the "messaging.gcp_pubsub.message.ack_deadline" semantic conventions. + // It represents the ack deadline in seconds set for the modify ack + // deadline request. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 10 + MessagingGCPPubsubMessageAckDeadlineKey = attribute.Key("messaging.gcp_pubsub.message.ack_deadline") + + // MessagingGCPPubsubMessageAckIDKey is the attribute Key conforming to the + // "messaging.gcp_pubsub.message.ack_id" semantic conventions. It + // represents the ack id for a given message. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'ack_id' + MessagingGCPPubsubMessageAckIDKey = attribute.Key("messaging.gcp_pubsub.message.ack_id") + + // MessagingGCPPubsubMessageDeliveryAttemptKey is the attribute Key + // conforming to the "messaging.gcp_pubsub.message.delivery_attempt" + // semantic conventions. It represents the delivery attempt for a given + // message. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 2 + MessagingGCPPubsubMessageDeliveryAttemptKey = attribute.Key("messaging.gcp_pubsub.message.delivery_attempt") + + // MessagingGCPPubsubMessageOrderingKeyKey is the attribute Key conforming + // to the "messaging.gcp_pubsub.message.ordering_key" semantic conventions. + // It represents the ordering key for a given message. If the attribute is + // not present, the message does not have an ordering key. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'ordering_key' + MessagingGCPPubsubMessageOrderingKeyKey = attribute.Key("messaging.gcp_pubsub.message.ordering_key") +) + +// MessagingGCPPubsubMessageAckDeadline returns an attribute KeyValue +// conforming to the "messaging.gcp_pubsub.message.ack_deadline" semantic +// conventions. It represents the ack deadline in seconds set for the modify +// ack deadline request. +func MessagingGCPPubsubMessageAckDeadline(val int) attribute.KeyValue { + return MessagingGCPPubsubMessageAckDeadlineKey.Int(val) +} + +// MessagingGCPPubsubMessageAckID returns an attribute KeyValue conforming +// to the "messaging.gcp_pubsub.message.ack_id" semantic conventions. It +// represents the ack id for a given message. +func MessagingGCPPubsubMessageAckID(val string) attribute.KeyValue { + return MessagingGCPPubsubMessageAckIDKey.String(val) +} + +// MessagingGCPPubsubMessageDeliveryAttempt returns an attribute KeyValue +// conforming to the "messaging.gcp_pubsub.message.delivery_attempt" semantic +// conventions. It represents the delivery attempt for a given message. +func MessagingGCPPubsubMessageDeliveryAttempt(val int) attribute.KeyValue { + return MessagingGCPPubsubMessageDeliveryAttemptKey.Int(val) +} + +// MessagingGCPPubsubMessageOrderingKey returns an attribute KeyValue +// conforming to the "messaging.gcp_pubsub.message.ordering_key" semantic +// conventions. It represents the ordering key for a given message. If the +// attribute is not present, the message does not have an ordering key. +func MessagingGCPPubsubMessageOrderingKey(val string) attribute.KeyValue { + return MessagingGCPPubsubMessageOrderingKeyKey.String(val) +} + +// This group describes attributes specific to Azure Service Bus. +const ( + // MessagingServicebusDestinationSubscriptionNameKey is the attribute Key + // conforming to the "messaging.servicebus.destination.subscription_name" + // semantic conventions. It represents the name of the subscription in the + // topic messages are received from. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'mySubscription' + MessagingServicebusDestinationSubscriptionNameKey = attribute.Key("messaging.servicebus.destination.subscription_name") + + // MessagingServicebusDispositionStatusKey is the attribute Key conforming + // to the "messaging.servicebus.disposition_status" semantic conventions. + // It represents the describes the [settlement + // type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock). + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + MessagingServicebusDispositionStatusKey = attribute.Key("messaging.servicebus.disposition_status") + + // MessagingServicebusMessageDeliveryCountKey is the attribute Key + // conforming to the "messaging.servicebus.message.delivery_count" semantic + // conventions. It represents the number of deliveries that have been + // attempted for this message. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 2 + MessagingServicebusMessageDeliveryCountKey = attribute.Key("messaging.servicebus.message.delivery_count") + + // MessagingServicebusMessageEnqueuedTimeKey is the attribute Key + // conforming to the "messaging.servicebus.message.enqueued_time" semantic + // conventions. It represents the UTC epoch seconds at which the message + // has been accepted and stored in the entity. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1701393730 + MessagingServicebusMessageEnqueuedTimeKey = attribute.Key("messaging.servicebus.message.enqueued_time") +) + +var ( + // Message is completed + MessagingServicebusDispositionStatusComplete = MessagingServicebusDispositionStatusKey.String("complete") + // Message is abandoned + MessagingServicebusDispositionStatusAbandon = MessagingServicebusDispositionStatusKey.String("abandon") + // Message is sent to dead letter queue + MessagingServicebusDispositionStatusDeadLetter = MessagingServicebusDispositionStatusKey.String("dead_letter") + // Message is deferred + MessagingServicebusDispositionStatusDefer = MessagingServicebusDispositionStatusKey.String("defer") +) + +// MessagingServicebusDestinationSubscriptionName returns an attribute +// KeyValue conforming to the +// "messaging.servicebus.destination.subscription_name" semantic conventions. +// It represents the name of the subscription in the topic messages are +// received from. +func MessagingServicebusDestinationSubscriptionName(val string) attribute.KeyValue { + return MessagingServicebusDestinationSubscriptionNameKey.String(val) +} + +// MessagingServicebusMessageDeliveryCount returns an attribute KeyValue +// conforming to the "messaging.servicebus.message.delivery_count" semantic +// conventions. It represents the number of deliveries that have been attempted +// for this message. +func MessagingServicebusMessageDeliveryCount(val int) attribute.KeyValue { + return MessagingServicebusMessageDeliveryCountKey.Int(val) +} + +// MessagingServicebusMessageEnqueuedTime returns an attribute KeyValue +// conforming to the "messaging.servicebus.message.enqueued_time" semantic +// conventions. It represents the UTC epoch seconds at which the message has +// been accepted and stored in the entity. +func MessagingServicebusMessageEnqueuedTime(val int) attribute.KeyValue { + return MessagingServicebusMessageEnqueuedTimeKey.Int(val) +} + +// This group describes attributes specific to Azure Event Hubs. +const ( + // MessagingEventhubsConsumerGroupKey is the attribute Key conforming to + // the "messaging.eventhubs.consumer.group" semantic conventions. It + // represents the name of the consumer group the event consumer is + // associated with. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'indexer' + MessagingEventhubsConsumerGroupKey = attribute.Key("messaging.eventhubs.consumer.group") + + // MessagingEventhubsMessageEnqueuedTimeKey is the attribute Key conforming + // to the "messaging.eventhubs.message.enqueued_time" semantic conventions. + // It represents the UTC epoch seconds at which the message has been + // accepted and stored in the entity. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1701393730 + MessagingEventhubsMessageEnqueuedTimeKey = attribute.Key("messaging.eventhubs.message.enqueued_time") +) + +// MessagingEventhubsConsumerGroup returns an attribute KeyValue conforming +// to the "messaging.eventhubs.consumer.group" semantic conventions. It +// represents the name of the consumer group the event consumer is associated +// with. +func MessagingEventhubsConsumerGroup(val string) attribute.KeyValue { + return MessagingEventhubsConsumerGroupKey.String(val) +} + +// MessagingEventhubsMessageEnqueuedTime returns an attribute KeyValue +// conforming to the "messaging.eventhubs.message.enqueued_time" semantic +// conventions. It represents the UTC epoch seconds at which the message has +// been accepted and stored in the entity. +func MessagingEventhubsMessageEnqueuedTime(val int) attribute.KeyValue { + return MessagingEventhubsMessageEnqueuedTimeKey.Int(val) +} + +// These attributes may be used for any network related operation. +const ( + // NetworkCarrierIccKey is the attribute Key conforming to the + // "network.carrier.icc" semantic conventions. It represents the ISO 3166-1 + // alpha-2 2-character country code associated with the mobile carrier + // network. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'DE' + NetworkCarrierIccKey = attribute.Key("network.carrier.icc") + + // NetworkCarrierMccKey is the attribute Key conforming to the + // "network.carrier.mcc" semantic conventions. It represents the mobile + // carrier country code. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '310' + NetworkCarrierMccKey = attribute.Key("network.carrier.mcc") + + // NetworkCarrierMncKey is the attribute Key conforming to the + // "network.carrier.mnc" semantic conventions. It represents the mobile + // carrier network code. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '001' + NetworkCarrierMncKey = attribute.Key("network.carrier.mnc") + + // NetworkCarrierNameKey is the attribute Key conforming to the + // "network.carrier.name" semantic conventions. It represents the name of + // the mobile carrier. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'sprint' + NetworkCarrierNameKey = attribute.Key("network.carrier.name") + + // NetworkConnectionSubtypeKey is the attribute Key conforming to the + // "network.connection.subtype" semantic conventions. It represents the + // this describes more details regarding the connection.type. It may be the + // type of cell technology connection, but it could be used for describing + // details about a wifi connection. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'LTE' + NetworkConnectionSubtypeKey = attribute.Key("network.connection.subtype") + + // NetworkConnectionTypeKey is the attribute Key conforming to the + // "network.connection.type" semantic conventions. It represents the + // internet connection type. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'wifi' + NetworkConnectionTypeKey = attribute.Key("network.connection.type") + + // NetworkIoDirectionKey is the attribute Key conforming to the + // "network.io.direction" semantic conventions. It represents the network + // IO operation direction. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'transmit' + NetworkIoDirectionKey = attribute.Key("network.io.direction") + + // NetworkLocalAddressKey is the attribute Key conforming to the + // "network.local.address" semantic conventions. It represents the local + // address of the network connection - IP address or Unix domain socket + // name. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: '10.1.2.80', '/tmp/my.sock' + NetworkLocalAddressKey = attribute.Key("network.local.address") + + // NetworkLocalPortKey is the attribute Key conforming to the + // "network.local.port" semantic conventions. It represents the local port + // number of the network connection. + // + // Type: int + // RequirementLevel: Optional + // Stability: stable + // Examples: 65123 + NetworkLocalPortKey = attribute.Key("network.local.port") + + // NetworkPeerAddressKey is the attribute Key conforming to the + // "network.peer.address" semantic conventions. It represents the peer + // address of the network connection - IP address or Unix domain socket + // name. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: '10.1.2.80', '/tmp/my.sock' + NetworkPeerAddressKey = attribute.Key("network.peer.address") + + // NetworkPeerPortKey is the attribute Key conforming to the + // "network.peer.port" semantic conventions. It represents the peer port + // number of the network connection. + // + // Type: int + // RequirementLevel: Optional + // Stability: stable + // Examples: 65123 + NetworkPeerPortKey = attribute.Key("network.peer.port") + + // NetworkProtocolNameKey is the attribute Key conforming to the + // "network.protocol.name" semantic conventions. It represents the [OSI + // application layer](https://osi-model.com/application-layer/) or non-OSI + // equivalent. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'amqp', 'http', 'mqtt' + // Note: The value SHOULD be normalized to lowercase. + NetworkProtocolNameKey = attribute.Key("network.protocol.name") + + // NetworkProtocolVersionKey is the attribute Key conforming to the + // "network.protocol.version" semantic conventions. It represents the + // actual version of the protocol used for network communication. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: '1.1', '2' + // Note: If protocol version is subject to negotiation (for example using + // [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute + // SHOULD be set to the negotiated version. If the actual protocol version + // is not known, this attribute SHOULD NOT be set. + NetworkProtocolVersionKey = attribute.Key("network.protocol.version") + + // NetworkTransportKey is the attribute Key conforming to the + // "network.transport" semantic conventions. It represents the [OSI + // transport layer](https://osi-model.com/transport-layer/) or + // [inter-process communication + // method](https://wikipedia.org/wiki/Inter-process_communication). + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + // Examples: 'tcp', 'udp' + // Note: The value SHOULD be normalized to lowercase. + // + // Consider always setting the transport when setting a port number, since + // a port number is ambiguous without knowing the transport. For example + // different processes could be listening on TCP port 12345 and UDP port + // 12345. + NetworkTransportKey = attribute.Key("network.transport") + + // NetworkTypeKey is the attribute Key conforming to the "network.type" + // semantic conventions. It represents the [OSI network + // layer](https://osi-model.com/network-layer/) or non-OSI equivalent. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + // Examples: 'ipv4', 'ipv6' + // Note: The value SHOULD be normalized to lowercase. + NetworkTypeKey = attribute.Key("network.type") +) + +var ( + // GPRS + NetworkConnectionSubtypeGprs = NetworkConnectionSubtypeKey.String("gprs") + // EDGE + NetworkConnectionSubtypeEdge = NetworkConnectionSubtypeKey.String("edge") + // UMTS + NetworkConnectionSubtypeUmts = NetworkConnectionSubtypeKey.String("umts") + // CDMA + NetworkConnectionSubtypeCdma = NetworkConnectionSubtypeKey.String("cdma") + // EVDO Rel. 0 + NetworkConnectionSubtypeEvdo0 = NetworkConnectionSubtypeKey.String("evdo_0") + // EVDO Rev. A + NetworkConnectionSubtypeEvdoA = NetworkConnectionSubtypeKey.String("evdo_a") + // CDMA2000 1XRTT + NetworkConnectionSubtypeCdma20001xrtt = NetworkConnectionSubtypeKey.String("cdma2000_1xrtt") + // HSDPA + NetworkConnectionSubtypeHsdpa = NetworkConnectionSubtypeKey.String("hsdpa") + // HSUPA + NetworkConnectionSubtypeHsupa = NetworkConnectionSubtypeKey.String("hsupa") + // HSPA + NetworkConnectionSubtypeHspa = NetworkConnectionSubtypeKey.String("hspa") + // IDEN + NetworkConnectionSubtypeIden = NetworkConnectionSubtypeKey.String("iden") + // EVDO Rev. B + NetworkConnectionSubtypeEvdoB = NetworkConnectionSubtypeKey.String("evdo_b") + // LTE + NetworkConnectionSubtypeLte = NetworkConnectionSubtypeKey.String("lte") + // EHRPD + NetworkConnectionSubtypeEhrpd = NetworkConnectionSubtypeKey.String("ehrpd") + // HSPAP + NetworkConnectionSubtypeHspap = NetworkConnectionSubtypeKey.String("hspap") + // GSM + NetworkConnectionSubtypeGsm = NetworkConnectionSubtypeKey.String("gsm") + // TD-SCDMA + NetworkConnectionSubtypeTdScdma = NetworkConnectionSubtypeKey.String("td_scdma") + // IWLAN + NetworkConnectionSubtypeIwlan = NetworkConnectionSubtypeKey.String("iwlan") + // 5G NR (New Radio) + NetworkConnectionSubtypeNr = NetworkConnectionSubtypeKey.String("nr") + // 5G NRNSA (New Radio Non-Standalone) + NetworkConnectionSubtypeNrnsa = NetworkConnectionSubtypeKey.String("nrnsa") + // LTE CA + NetworkConnectionSubtypeLteCa = NetworkConnectionSubtypeKey.String("lte_ca") +) + +var ( + // wifi + NetworkConnectionTypeWifi = NetworkConnectionTypeKey.String("wifi") + // wired + NetworkConnectionTypeWired = NetworkConnectionTypeKey.String("wired") + // cell + NetworkConnectionTypeCell = NetworkConnectionTypeKey.String("cell") + // unavailable + NetworkConnectionTypeUnavailable = NetworkConnectionTypeKey.String("unavailable") + // unknown + NetworkConnectionTypeUnknown = NetworkConnectionTypeKey.String("unknown") +) + +var ( + // transmit + NetworkIoDirectionTransmit = NetworkIoDirectionKey.String("transmit") + // receive + NetworkIoDirectionReceive = NetworkIoDirectionKey.String("receive") +) + +var ( + // TCP + NetworkTransportTCP = NetworkTransportKey.String("tcp") + // UDP + NetworkTransportUDP = NetworkTransportKey.String("udp") + // Named or anonymous pipe + NetworkTransportPipe = NetworkTransportKey.String("pipe") + // Unix domain socket + NetworkTransportUnix = NetworkTransportKey.String("unix") +) + +var ( + // IPv4 + NetworkTypeIpv4 = NetworkTypeKey.String("ipv4") + // IPv6 + NetworkTypeIpv6 = NetworkTypeKey.String("ipv6") +) + +// NetworkCarrierIcc returns an attribute KeyValue conforming to the +// "network.carrier.icc" semantic conventions. It represents the ISO 3166-1 +// alpha-2 2-character country code associated with the mobile carrier network. +func NetworkCarrierIcc(val string) attribute.KeyValue { + return NetworkCarrierIccKey.String(val) +} + +// NetworkCarrierMcc returns an attribute KeyValue conforming to the +// "network.carrier.mcc" semantic conventions. It represents the mobile carrier +// country code. +func NetworkCarrierMcc(val string) attribute.KeyValue { + return NetworkCarrierMccKey.String(val) +} + +// NetworkCarrierMnc returns an attribute KeyValue conforming to the +// "network.carrier.mnc" semantic conventions. It represents the mobile carrier +// network code. +func NetworkCarrierMnc(val string) attribute.KeyValue { + return NetworkCarrierMncKey.String(val) +} + +// NetworkCarrierName returns an attribute KeyValue conforming to the +// "network.carrier.name" semantic conventions. It represents the name of the +// mobile carrier. +func NetworkCarrierName(val string) attribute.KeyValue { + return NetworkCarrierNameKey.String(val) +} + +// NetworkLocalAddress returns an attribute KeyValue conforming to the +// "network.local.address" semantic conventions. It represents the local +// address of the network connection - IP address or Unix domain socket name. +func NetworkLocalAddress(val string) attribute.KeyValue { + return NetworkLocalAddressKey.String(val) +} + +// NetworkLocalPort returns an attribute KeyValue conforming to the +// "network.local.port" semantic conventions. It represents the local port +// number of the network connection. +func NetworkLocalPort(val int) attribute.KeyValue { + return NetworkLocalPortKey.Int(val) +} + +// NetworkPeerAddress returns an attribute KeyValue conforming to the +// "network.peer.address" semantic conventions. It represents the peer address +// of the network connection - IP address or Unix domain socket name. +func NetworkPeerAddress(val string) attribute.KeyValue { + return NetworkPeerAddressKey.String(val) +} + +// NetworkPeerPort returns an attribute KeyValue conforming to the +// "network.peer.port" semantic conventions. It represents the peer port number +// of the network connection. +func NetworkPeerPort(val int) attribute.KeyValue { + return NetworkPeerPortKey.Int(val) +} + +// NetworkProtocolName returns an attribute KeyValue conforming to the +// "network.protocol.name" semantic conventions. It represents the [OSI +// application layer](https://osi-model.com/application-layer/) or non-OSI +// equivalent. +func NetworkProtocolName(val string) attribute.KeyValue { + return NetworkProtocolNameKey.String(val) +} + +// NetworkProtocolVersion returns an attribute KeyValue conforming to the +// "network.protocol.version" semantic conventions. It represents the actual +// version of the protocol used for network communication. +func NetworkProtocolVersion(val string) attribute.KeyValue { + return NetworkProtocolVersionKey.String(val) +} + +// An OCI image manifest. +const ( + // OciManifestDigestKey is the attribute Key conforming to the + // "oci.manifest.digest" semantic conventions. It represents the digest of + // the OCI image manifest. For container images specifically is the digest + // by which the container image is known. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: + // 'sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4' + // Note: Follows [OCI Image Manifest + // Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), + // and specifically the [Digest + // property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests). + // An example can be found in [Example Image + // Manifest](https://docs.docker.com/registry/spec/manifest-v2-2/#example-image-manifest). + OciManifestDigestKey = attribute.Key("oci.manifest.digest") +) + +// OciManifestDigest returns an attribute KeyValue conforming to the +// "oci.manifest.digest" semantic conventions. It represents the digest of the +// OCI image manifest. For container images specifically is the digest by which +// the container image is known. +func OciManifestDigest(val string) attribute.KeyValue { + return OciManifestDigestKey.String(val) +} + +// Attributes used by the OpenTracing Shim layer. +const ( + // OpentracingRefTypeKey is the attribute Key conforming to the + // "opentracing.ref_type" semantic conventions. It represents the + // parent-child Reference type + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Note: The causal relationship between a child Span and a parent Span. + OpentracingRefTypeKey = attribute.Key("opentracing.ref_type") +) + +var ( + // The parent Span depends on the child Span in some capacity + OpentracingRefTypeChildOf = OpentracingRefTypeKey.String("child_of") + // The parent Span doesn't depend in any way on the result of the child Span + OpentracingRefTypeFollowsFrom = OpentracingRefTypeKey.String("follows_from") +) + +// The operating system (OS) on which the process represented by this resource +// is running. +const ( + // OSBuildIDKey is the attribute Key conforming to the "os.build_id" + // semantic conventions. It represents the unique identifier for a + // particular build or compilation of the operating system. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'TQ3C.230805.001.B2', '20E247', '22621' + OSBuildIDKey = attribute.Key("os.build_id") + + // OSDescriptionKey is the attribute Key conforming to the "os.description" + // semantic conventions. It represents the human readable (not intended to + // be parsed) OS version information, like e.g. reported by `ver` or + // `lsb_release -a` commands. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Microsoft Windows [Version 10.0.18363.778]', 'Ubuntu 18.04.1 + // LTS' + OSDescriptionKey = attribute.Key("os.description") + + // OSNameKey is the attribute Key conforming to the "os.name" semantic + // conventions. It represents the human readable operating system name. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'iOS', 'Android', 'Ubuntu' + OSNameKey = attribute.Key("os.name") + + // OSTypeKey is the attribute Key conforming to the "os.type" semantic + // conventions. It represents the operating system type. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + OSTypeKey = attribute.Key("os.type") + + // OSVersionKey is the attribute Key conforming to the "os.version" + // semantic conventions. It represents the version string of the operating + // system as defined in [Version + // Attributes](/docs/resource/README.md#version-attributes). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '14.2.1', '18.04.1' + OSVersionKey = attribute.Key("os.version") +) + +var ( + // Microsoft Windows + OSTypeWindows = OSTypeKey.String("windows") + // Linux + OSTypeLinux = OSTypeKey.String("linux") + // Apple Darwin + OSTypeDarwin = OSTypeKey.String("darwin") + // FreeBSD + OSTypeFreeBSD = OSTypeKey.String("freebsd") + // NetBSD + OSTypeNetBSD = OSTypeKey.String("netbsd") + // OpenBSD + OSTypeOpenBSD = OSTypeKey.String("openbsd") + // DragonFly BSD + OSTypeDragonflyBSD = OSTypeKey.String("dragonflybsd") + // HP-UX (Hewlett Packard Unix) + OSTypeHPUX = OSTypeKey.String("hpux") + // AIX (Advanced Interactive eXecutive) + OSTypeAIX = OSTypeKey.String("aix") + // SunOS, Oracle Solaris + OSTypeSolaris = OSTypeKey.String("solaris") + // IBM z/OS + OSTypeZOS = OSTypeKey.String("z_os") +) + +// OSBuildID returns an attribute KeyValue conforming to the "os.build_id" +// semantic conventions. It represents the unique identifier for a particular +// build or compilation of the operating system. +func OSBuildID(val string) attribute.KeyValue { + return OSBuildIDKey.String(val) +} + +// OSDescription returns an attribute KeyValue conforming to the +// "os.description" semantic conventions. It represents the human readable (not +// intended to be parsed) OS version information, like e.g. reported by `ver` +// or `lsb_release -a` commands. +func OSDescription(val string) attribute.KeyValue { + return OSDescriptionKey.String(val) +} + +// OSName returns an attribute KeyValue conforming to the "os.name" semantic +// conventions. It represents the human readable operating system name. +func OSName(val string) attribute.KeyValue { + return OSNameKey.String(val) +} + +// OSVersion returns an attribute KeyValue conforming to the "os.version" +// semantic conventions. It represents the version string of the operating +// system as defined in [Version +// Attributes](/docs/resource/README.md#version-attributes). +func OSVersion(val string) attribute.KeyValue { + return OSVersionKey.String(val) +} + +// Attributes reserved for OpenTelemetry +const ( + // OTelStatusCodeKey is the attribute Key conforming to the + // "otel.status_code" semantic conventions. It represents the name of the + // code, either "OK" or "ERROR". MUST NOT be set if the status code is + // UNSET. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + OTelStatusCodeKey = attribute.Key("otel.status_code") + + // OTelStatusDescriptionKey is the attribute Key conforming to the + // "otel.status_description" semantic conventions. It represents the + // description of the Status if it has a value, otherwise not set. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'resource not found' + OTelStatusDescriptionKey = attribute.Key("otel.status_description") +) + +var ( + // The operation has been validated by an Application developer or Operator to have completed successfully + OTelStatusCodeOk = OTelStatusCodeKey.String("OK") + // The operation contains an error + OTelStatusCodeError = OTelStatusCodeKey.String("ERROR") +) + +// OTelStatusDescription returns an attribute KeyValue conforming to the +// "otel.status_description" semantic conventions. It represents the +// description of the Status if it has a value, otherwise not set. +func OTelStatusDescription(val string) attribute.KeyValue { + return OTelStatusDescriptionKey.String(val) +} + +// Attributes used by non-OTLP exporters to represent OpenTelemetry Scope's +// concepts. +const ( + // OTelScopeNameKey is the attribute Key conforming to the + // "otel.scope.name" semantic conventions. It represents the name of the + // instrumentation scope - (`InstrumentationScope.Name` in OTLP). + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'io.opentelemetry.contrib.mongodb' + OTelScopeNameKey = attribute.Key("otel.scope.name") + + // OTelScopeVersionKey is the attribute Key conforming to the + // "otel.scope.version" semantic conventions. It represents the version of + // the instrumentation scope - (`InstrumentationScope.Version` in OTLP). + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: '1.0.0' + OTelScopeVersionKey = attribute.Key("otel.scope.version") +) + +// OTelScopeName returns an attribute KeyValue conforming to the +// "otel.scope.name" semantic conventions. It represents the name of the +// instrumentation scope - (`InstrumentationScope.Name` in OTLP). +func OTelScopeName(val string) attribute.KeyValue { + return OTelScopeNameKey.String(val) +} + +// OTelScopeVersion returns an attribute KeyValue conforming to the +// "otel.scope.version" semantic conventions. It represents the version of the +// instrumentation scope - (`InstrumentationScope.Version` in OTLP). +func OTelScopeVersion(val string) attribute.KeyValue { + return OTelScopeVersionKey.String(val) +} + +// Operations that access some remote service. +const ( + // PeerServiceKey is the attribute Key conforming to the "peer.service" + // semantic conventions. It represents the + // [`service.name`](/docs/resource/README.md#service) of the remote + // service. SHOULD be equal to the actual `service.name` resource attribute + // of the remote service if any. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'AuthTokenCache' + PeerServiceKey = attribute.Key("peer.service") +) + +// PeerService returns an attribute KeyValue conforming to the +// "peer.service" semantic conventions. It represents the +// [`service.name`](/docs/resource/README.md#service) of the remote service. +// SHOULD be equal to the actual `service.name` resource attribute of the +// remote service if any. +func PeerService(val string) attribute.KeyValue { + return PeerServiceKey.String(val) +} + +// An operating system process. +const ( + // ProcessCommandKey is the attribute Key conforming to the + // "process.command" semantic conventions. It represents the command used + // to launch the process (i.e. the command name). On Linux based systems, + // can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can + // be set to the first parameter extracted from `GetCommandLineW`. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'cmd/otelcol' + ProcessCommandKey = attribute.Key("process.command") + + // ProcessCommandArgsKey is the attribute Key conforming to the + // "process.command_args" semantic conventions. It represents the all the + // command arguments (including the command/executable itself) as received + // by the process. On Linux-based systems (and some other Unixoid systems + // supporting procfs), can be set according to the list of null-delimited + // strings extracted from `proc/[pid]/cmdline`. For libc-based executables, + // this would be the full argv vector passed to `main`. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'cmd/otecol', '--config=config.yaml' + ProcessCommandArgsKey = attribute.Key("process.command_args") + + // ProcessCommandLineKey is the attribute Key conforming to the + // "process.command_line" semantic conventions. It represents the full + // command used to launch the process as a single string representing the + // full command. On Windows, can be set to the result of `GetCommandLineW`. + // Do not set this if you have to assemble it just for monitoring; use + // `process.command_args` instead. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'C:\\cmd\\otecol --config="my directory\\config.yaml"' + ProcessCommandLineKey = attribute.Key("process.command_line") + + // ProcessContextSwitchTypeKey is the attribute Key conforming to the + // "process.context_switch_type" semantic conventions. It represents the + // specifies whether the context switches for this data point were + // voluntary or involuntary. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + ProcessContextSwitchTypeKey = attribute.Key("process.context_switch_type") + + // ProcessCreationTimeKey is the attribute Key conforming to the + // "process.creation.time" semantic conventions. It represents the date and + // time the process was created, in ISO 8601 format. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2023-11-21T09:25:34.853Z' + ProcessCreationTimeKey = attribute.Key("process.creation.time") + + // ProcessExecutableNameKey is the attribute Key conforming to the + // "process.executable.name" semantic conventions. It represents the name + // of the process executable. On Linux based systems, can be set to the + // `Name` in `proc/[pid]/status`. On Windows, can be set to the base name + // of `GetProcessImageFileNameW`. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'otelcol' + ProcessExecutableNameKey = attribute.Key("process.executable.name") + + // ProcessExecutablePathKey is the attribute Key conforming to the + // "process.executable.path" semantic conventions. It represents the full + // path to the process executable. On Linux based systems, can be set to + // the target of `proc/[pid]/exe`. On Windows, can be set to the result of + // `GetProcessImageFileNameW`. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '/usr/bin/cmd/otelcol' + ProcessExecutablePathKey = attribute.Key("process.executable.path") + + // ProcessExitCodeKey is the attribute Key conforming to the + // "process.exit.code" semantic conventions. It represents the exit code of + // the process. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 127 + ProcessExitCodeKey = attribute.Key("process.exit.code") + + // ProcessExitTimeKey is the attribute Key conforming to the + // "process.exit.time" semantic conventions. It represents the date and + // time the process exited, in ISO 8601 format. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2023-11-21T09:26:12.315Z' + ProcessExitTimeKey = attribute.Key("process.exit.time") + + // ProcessGroupLeaderPIDKey is the attribute Key conforming to the + // "process.group_leader.pid" semantic conventions. It represents the PID + // of the process's group leader. This is also the process group ID (PGID) + // of the process. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 23 + ProcessGroupLeaderPIDKey = attribute.Key("process.group_leader.pid") + + // ProcessInteractiveKey is the attribute Key conforming to the + // "process.interactive" semantic conventions. It represents the whether + // the process is connected to an interactive shell. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + ProcessInteractiveKey = attribute.Key("process.interactive") + + // ProcessOwnerKey is the attribute Key conforming to the "process.owner" + // semantic conventions. It represents the username of the user that owns + // the process. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'root' + ProcessOwnerKey = attribute.Key("process.owner") + + // ProcessPagingFaultTypeKey is the attribute Key conforming to the + // "process.paging.fault_type" semantic conventions. It represents the type + // of page fault for this data point. Type `major` is for major/hard page + // faults, and `minor` is for minor/soft page faults. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + ProcessPagingFaultTypeKey = attribute.Key("process.paging.fault_type") + + // ProcessParentPIDKey is the attribute Key conforming to the + // "process.parent_pid" semantic conventions. It represents the parent + // Process identifier (PPID). + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 111 + ProcessParentPIDKey = attribute.Key("process.parent_pid") + + // ProcessPIDKey is the attribute Key conforming to the "process.pid" + // semantic conventions. It represents the process identifier (PID). + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1234 + ProcessPIDKey = attribute.Key("process.pid") + + // ProcessRealUserIDKey is the attribute Key conforming to the + // "process.real_user.id" semantic conventions. It represents the real user + // ID (RUID) of the process. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1000 + ProcessRealUserIDKey = attribute.Key("process.real_user.id") + + // ProcessRealUserNameKey is the attribute Key conforming to the + // "process.real_user.name" semantic conventions. It represents the + // username of the real user of the process. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'operator' + ProcessRealUserNameKey = attribute.Key("process.real_user.name") + + // ProcessRuntimeDescriptionKey is the attribute Key conforming to the + // "process.runtime.description" semantic conventions. It represents an + // additional description about the runtime of the process, for example a + // specific vendor customization of the runtime environment. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0' + ProcessRuntimeDescriptionKey = attribute.Key("process.runtime.description") + + // ProcessRuntimeNameKey is the attribute Key conforming to the + // "process.runtime.name" semantic conventions. It represents the name of + // the runtime of this process. For compiled native binaries, this SHOULD + // be the name of the compiler. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'OpenJDK Runtime Environment' + ProcessRuntimeNameKey = attribute.Key("process.runtime.name") + + // ProcessRuntimeVersionKey is the attribute Key conforming to the + // "process.runtime.version" semantic conventions. It represents the + // version of the runtime of this process, as returned by the runtime + // without modification. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '14.0.2' + ProcessRuntimeVersionKey = attribute.Key("process.runtime.version") + + // ProcessSavedUserIDKey is the attribute Key conforming to the + // "process.saved_user.id" semantic conventions. It represents the saved + // user ID (SUID) of the process. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1002 + ProcessSavedUserIDKey = attribute.Key("process.saved_user.id") + + // ProcessSavedUserNameKey is the attribute Key conforming to the + // "process.saved_user.name" semantic conventions. It represents the + // username of the saved user. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'operator' + ProcessSavedUserNameKey = attribute.Key("process.saved_user.name") + + // ProcessSessionLeaderPIDKey is the attribute Key conforming to the + // "process.session_leader.pid" semantic conventions. It represents the PID + // of the process's session leader. This is also the session ID (SID) of + // the process. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 14 + ProcessSessionLeaderPIDKey = attribute.Key("process.session_leader.pid") + + // ProcessUserIDKey is the attribute Key conforming to the + // "process.user.id" semantic conventions. It represents the effective user + // ID (EUID) of the process. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1001 + ProcessUserIDKey = attribute.Key("process.user.id") + + // ProcessUserNameKey is the attribute Key conforming to the + // "process.user.name" semantic conventions. It represents the username of + // the effective user of the process. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'root' + ProcessUserNameKey = attribute.Key("process.user.name") + + // ProcessVpidKey is the attribute Key conforming to the "process.vpid" + // semantic conventions. It represents the virtual process identifier. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 12 + // Note: The process ID within a PID namespace. This is not necessarily + // unique across all processes on the host but it is unique within the + // process namespace that the process exists within. + ProcessVpidKey = attribute.Key("process.vpid") +) + +var ( + // voluntary + ProcessContextSwitchTypeVoluntary = ProcessContextSwitchTypeKey.String("voluntary") + // involuntary + ProcessContextSwitchTypeInvoluntary = ProcessContextSwitchTypeKey.String("involuntary") +) + +var ( + // major + ProcessPagingFaultTypeMajor = ProcessPagingFaultTypeKey.String("major") + // minor + ProcessPagingFaultTypeMinor = ProcessPagingFaultTypeKey.String("minor") +) + +// ProcessCommand returns an attribute KeyValue conforming to the +// "process.command" semantic conventions. It represents the command used to +// launch the process (i.e. the command name). On Linux based systems, can be +// set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to +// the first parameter extracted from `GetCommandLineW`. +func ProcessCommand(val string) attribute.KeyValue { + return ProcessCommandKey.String(val) +} + +// ProcessCommandArgs returns an attribute KeyValue conforming to the +// "process.command_args" semantic conventions. It represents the all the +// command arguments (including the command/executable itself) as received by +// the process. On Linux-based systems (and some other Unixoid systems +// supporting procfs), can be set according to the list of null-delimited +// strings extracted from `proc/[pid]/cmdline`. For libc-based executables, +// this would be the full argv vector passed to `main`. +func ProcessCommandArgs(val ...string) attribute.KeyValue { + return ProcessCommandArgsKey.StringSlice(val) +} + +// ProcessCommandLine returns an attribute KeyValue conforming to the +// "process.command_line" semantic conventions. It represents the full command +// used to launch the process as a single string representing the full command. +// On Windows, can be set to the result of `GetCommandLineW`. Do not set this +// if you have to assemble it just for monitoring; use `process.command_args` +// instead. +func ProcessCommandLine(val string) attribute.KeyValue { + return ProcessCommandLineKey.String(val) +} + +// ProcessCreationTime returns an attribute KeyValue conforming to the +// "process.creation.time" semantic conventions. It represents the date and +// time the process was created, in ISO 8601 format. +func ProcessCreationTime(val string) attribute.KeyValue { + return ProcessCreationTimeKey.String(val) +} + +// ProcessExecutableName returns an attribute KeyValue conforming to the +// "process.executable.name" semantic conventions. It represents the name of +// the process executable. On Linux based systems, can be set to the `Name` in +// `proc/[pid]/status`. On Windows, can be set to the base name of +// `GetProcessImageFileNameW`. +func ProcessExecutableName(val string) attribute.KeyValue { + return ProcessExecutableNameKey.String(val) +} + +// ProcessExecutablePath returns an attribute KeyValue conforming to the +// "process.executable.path" semantic conventions. It represents the full path +// to the process executable. On Linux based systems, can be set to the target +// of `proc/[pid]/exe`. On Windows, can be set to the result of +// `GetProcessImageFileNameW`. +func ProcessExecutablePath(val string) attribute.KeyValue { + return ProcessExecutablePathKey.String(val) +} + +// ProcessExitCode returns an attribute KeyValue conforming to the +// "process.exit.code" semantic conventions. It represents the exit code of the +// process. +func ProcessExitCode(val int) attribute.KeyValue { + return ProcessExitCodeKey.Int(val) +} + +// ProcessExitTime returns an attribute KeyValue conforming to the +// "process.exit.time" semantic conventions. It represents the date and time +// the process exited, in ISO 8601 format. +func ProcessExitTime(val string) attribute.KeyValue { + return ProcessExitTimeKey.String(val) +} + +// ProcessGroupLeaderPID returns an attribute KeyValue conforming to the +// "process.group_leader.pid" semantic conventions. It represents the PID of +// the process's group leader. This is also the process group ID (PGID) of the +// process. +func ProcessGroupLeaderPID(val int) attribute.KeyValue { + return ProcessGroupLeaderPIDKey.Int(val) +} + +// ProcessInteractive returns an attribute KeyValue conforming to the +// "process.interactive" semantic conventions. It represents the whether the +// process is connected to an interactive shell. +func ProcessInteractive(val bool) attribute.KeyValue { + return ProcessInteractiveKey.Bool(val) +} + +// ProcessOwner returns an attribute KeyValue conforming to the +// "process.owner" semantic conventions. It represents the username of the user +// that owns the process. +func ProcessOwner(val string) attribute.KeyValue { + return ProcessOwnerKey.String(val) +} + +// ProcessParentPID returns an attribute KeyValue conforming to the +// "process.parent_pid" semantic conventions. It represents the parent Process +// identifier (PPID). +func ProcessParentPID(val int) attribute.KeyValue { + return ProcessParentPIDKey.Int(val) +} + +// ProcessPID returns an attribute KeyValue conforming to the "process.pid" +// semantic conventions. It represents the process identifier (PID). +func ProcessPID(val int) attribute.KeyValue { + return ProcessPIDKey.Int(val) +} + +// ProcessRealUserID returns an attribute KeyValue conforming to the +// "process.real_user.id" semantic conventions. It represents the real user ID +// (RUID) of the process. +func ProcessRealUserID(val int) attribute.KeyValue { + return ProcessRealUserIDKey.Int(val) +} + +// ProcessRealUserName returns an attribute KeyValue conforming to the +// "process.real_user.name" semantic conventions. It represents the username of +// the real user of the process. +func ProcessRealUserName(val string) attribute.KeyValue { + return ProcessRealUserNameKey.String(val) +} + +// ProcessRuntimeDescription returns an attribute KeyValue conforming to the +// "process.runtime.description" semantic conventions. It represents an +// additional description about the runtime of the process, for example a +// specific vendor customization of the runtime environment. +func ProcessRuntimeDescription(val string) attribute.KeyValue { + return ProcessRuntimeDescriptionKey.String(val) +} + +// ProcessRuntimeName returns an attribute KeyValue conforming to the +// "process.runtime.name" semantic conventions. It represents the name of the +// runtime of this process. For compiled native binaries, this SHOULD be the +// name of the compiler. +func ProcessRuntimeName(val string) attribute.KeyValue { + return ProcessRuntimeNameKey.String(val) +} + +// ProcessRuntimeVersion returns an attribute KeyValue conforming to the +// "process.runtime.version" semantic conventions. It represents the version of +// the runtime of this process, as returned by the runtime without +// modification. +func ProcessRuntimeVersion(val string) attribute.KeyValue { + return ProcessRuntimeVersionKey.String(val) +} + +// ProcessSavedUserID returns an attribute KeyValue conforming to the +// "process.saved_user.id" semantic conventions. It represents the saved user +// ID (SUID) of the process. +func ProcessSavedUserID(val int) attribute.KeyValue { + return ProcessSavedUserIDKey.Int(val) +} + +// ProcessSavedUserName returns an attribute KeyValue conforming to the +// "process.saved_user.name" semantic conventions. It represents the username +// of the saved user. +func ProcessSavedUserName(val string) attribute.KeyValue { + return ProcessSavedUserNameKey.String(val) +} + +// ProcessSessionLeaderPID returns an attribute KeyValue conforming to the +// "process.session_leader.pid" semantic conventions. It represents the PID of +// the process's session leader. This is also the session ID (SID) of the +// process. +func ProcessSessionLeaderPID(val int) attribute.KeyValue { + return ProcessSessionLeaderPIDKey.Int(val) +} + +// ProcessUserID returns an attribute KeyValue conforming to the +// "process.user.id" semantic conventions. It represents the effective user ID +// (EUID) of the process. +func ProcessUserID(val int) attribute.KeyValue { + return ProcessUserIDKey.Int(val) +} + +// ProcessUserName returns an attribute KeyValue conforming to the +// "process.user.name" semantic conventions. It represents the username of the +// effective user of the process. +func ProcessUserName(val string) attribute.KeyValue { + return ProcessUserNameKey.String(val) +} + +// ProcessVpid returns an attribute KeyValue conforming to the +// "process.vpid" semantic conventions. It represents the virtual process +// identifier. +func ProcessVpid(val int) attribute.KeyValue { + return ProcessVpidKey.Int(val) +} + +// Attributes for process CPU +const ( + // ProcessCPUStateKey is the attribute Key conforming to the + // "process.cpu.state" semantic conventions. It represents the CPU state of + // the process. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + ProcessCPUStateKey = attribute.Key("process.cpu.state") +) + +var ( + // system + ProcessCPUStateSystem = ProcessCPUStateKey.String("system") + // user + ProcessCPUStateUser = ProcessCPUStateKey.String("user") + // wait + ProcessCPUStateWait = ProcessCPUStateKey.String("wait") +) + +// Attributes for remote procedure calls. +const ( + // RPCConnectRPCErrorCodeKey is the attribute Key conforming to the + // "rpc.connect_rpc.error_code" semantic conventions. It represents the + // [error codes](https://connect.build/docs/protocol/#error-codes) of the + // Connect request. Error codes are always string values. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + RPCConnectRPCErrorCodeKey = attribute.Key("rpc.connect_rpc.error_code") + + // RPCGRPCStatusCodeKey is the attribute Key conforming to the + // "rpc.grpc.status_code" semantic conventions. It represents the [numeric + // status + // code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of + // the gRPC request. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + RPCGRPCStatusCodeKey = attribute.Key("rpc.grpc.status_code") + + // RPCJsonrpcErrorCodeKey is the attribute Key conforming to the + // "rpc.jsonrpc.error_code" semantic conventions. It represents the + // `error.code` property of response if it is an error response. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: -32700, 100 + RPCJsonrpcErrorCodeKey = attribute.Key("rpc.jsonrpc.error_code") + + // RPCJsonrpcErrorMessageKey is the attribute Key conforming to the + // "rpc.jsonrpc.error_message" semantic conventions. It represents the + // `error.message` property of response if it is an error response. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Parse error', 'User already exists' + RPCJsonrpcErrorMessageKey = attribute.Key("rpc.jsonrpc.error_message") + + // RPCJsonrpcRequestIDKey is the attribute Key conforming to the + // "rpc.jsonrpc.request_id" semantic conventions. It represents the `id` + // property of request or response. Since protocol allows id to be int, + // string, `null` or missing (for notifications), value is expected to be + // cast to string for simplicity. Use empty string in case of `null` value. + // Omit entirely if this is a notification. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '10', 'request-7', '' + RPCJsonrpcRequestIDKey = attribute.Key("rpc.jsonrpc.request_id") + + // RPCJsonrpcVersionKey is the attribute Key conforming to the + // "rpc.jsonrpc.version" semantic conventions. It represents the protocol + // version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 + // doesn't specify this, the value can be omitted. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2.0', '1.0' + RPCJsonrpcVersionKey = attribute.Key("rpc.jsonrpc.version") + + // RPCMessageCompressedSizeKey is the attribute Key conforming to the + // "rpc.message.compressed_size" semantic conventions. It represents the + // compressed size of the message in bytes. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + RPCMessageCompressedSizeKey = attribute.Key("rpc.message.compressed_size") + + // RPCMessageIDKey is the attribute Key conforming to the "rpc.message.id" + // semantic conventions. It represents the mUST be calculated as two + // different counters starting from `1` one for sent messages and one for + // received message. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Note: This way we guarantee that the values will be consistent between + // different implementations. + RPCMessageIDKey = attribute.Key("rpc.message.id") + + // RPCMessageTypeKey is the attribute Key conforming to the + // "rpc.message.type" semantic conventions. It represents the whether this + // is a received or sent message. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + RPCMessageTypeKey = attribute.Key("rpc.message.type") + + // RPCMessageUncompressedSizeKey is the attribute Key conforming to the + // "rpc.message.uncompressed_size" semantic conventions. It represents the + // uncompressed size of the message in bytes. + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + RPCMessageUncompressedSizeKey = attribute.Key("rpc.message.uncompressed_size") + + // RPCMethodKey is the attribute Key conforming to the "rpc.method" + // semantic conventions. It represents the name of the (logical) method + // being called, must be equal to the $method part in the span name. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'exampleMethod' + // Note: This is the logical name of the method from the RPC interface + // perspective, which can be different from the name of any implementing + // method/function. The `code.function` attribute may be used to store the + // latter (e.g., method actually executing the call on the server side, RPC + // client stub method on the client side). + RPCMethodKey = attribute.Key("rpc.method") + + // RPCServiceKey is the attribute Key conforming to the "rpc.service" + // semantic conventions. It represents the full (logical) name of the + // service being called, including its package name, if applicable. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'myservice.EchoService' + // Note: This is the logical name of the service from the RPC interface + // perspective, which can be different from the name of any implementing + // class. The `code.namespace` attribute may be used to store the latter + // (despite the attribute name, it may include a class name; e.g., class + // with method actually executing the call on the server side, RPC client + // stub class on the client side). + RPCServiceKey = attribute.Key("rpc.service") + + // RPCSystemKey is the attribute Key conforming to the "rpc.system" + // semantic conventions. It represents a string identifying the remoting + // system. See below for a list of well-known identifiers. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + RPCSystemKey = attribute.Key("rpc.system") +) + +var ( + // cancelled + RPCConnectRPCErrorCodeCancelled = RPCConnectRPCErrorCodeKey.String("cancelled") + // unknown + RPCConnectRPCErrorCodeUnknown = RPCConnectRPCErrorCodeKey.String("unknown") + // invalid_argument + RPCConnectRPCErrorCodeInvalidArgument = RPCConnectRPCErrorCodeKey.String("invalid_argument") + // deadline_exceeded + RPCConnectRPCErrorCodeDeadlineExceeded = RPCConnectRPCErrorCodeKey.String("deadline_exceeded") + // not_found + RPCConnectRPCErrorCodeNotFound = RPCConnectRPCErrorCodeKey.String("not_found") + // already_exists + RPCConnectRPCErrorCodeAlreadyExists = RPCConnectRPCErrorCodeKey.String("already_exists") + // permission_denied + RPCConnectRPCErrorCodePermissionDenied = RPCConnectRPCErrorCodeKey.String("permission_denied") + // resource_exhausted + RPCConnectRPCErrorCodeResourceExhausted = RPCConnectRPCErrorCodeKey.String("resource_exhausted") + // failed_precondition + RPCConnectRPCErrorCodeFailedPrecondition = RPCConnectRPCErrorCodeKey.String("failed_precondition") + // aborted + RPCConnectRPCErrorCodeAborted = RPCConnectRPCErrorCodeKey.String("aborted") + // out_of_range + RPCConnectRPCErrorCodeOutOfRange = RPCConnectRPCErrorCodeKey.String("out_of_range") + // unimplemented + RPCConnectRPCErrorCodeUnimplemented = RPCConnectRPCErrorCodeKey.String("unimplemented") + // internal + RPCConnectRPCErrorCodeInternal = RPCConnectRPCErrorCodeKey.String("internal") + // unavailable + RPCConnectRPCErrorCodeUnavailable = RPCConnectRPCErrorCodeKey.String("unavailable") + // data_loss + RPCConnectRPCErrorCodeDataLoss = RPCConnectRPCErrorCodeKey.String("data_loss") + // unauthenticated + RPCConnectRPCErrorCodeUnauthenticated = RPCConnectRPCErrorCodeKey.String("unauthenticated") +) + +var ( + // OK + RPCGRPCStatusCodeOk = RPCGRPCStatusCodeKey.Int(0) + // CANCELLED + RPCGRPCStatusCodeCancelled = RPCGRPCStatusCodeKey.Int(1) + // UNKNOWN + RPCGRPCStatusCodeUnknown = RPCGRPCStatusCodeKey.Int(2) + // INVALID_ARGUMENT + RPCGRPCStatusCodeInvalidArgument = RPCGRPCStatusCodeKey.Int(3) + // DEADLINE_EXCEEDED + RPCGRPCStatusCodeDeadlineExceeded = RPCGRPCStatusCodeKey.Int(4) + // NOT_FOUND + RPCGRPCStatusCodeNotFound = RPCGRPCStatusCodeKey.Int(5) + // ALREADY_EXISTS + RPCGRPCStatusCodeAlreadyExists = RPCGRPCStatusCodeKey.Int(6) + // PERMISSION_DENIED + RPCGRPCStatusCodePermissionDenied = RPCGRPCStatusCodeKey.Int(7) + // RESOURCE_EXHAUSTED + RPCGRPCStatusCodeResourceExhausted = RPCGRPCStatusCodeKey.Int(8) + // FAILED_PRECONDITION + RPCGRPCStatusCodeFailedPrecondition = RPCGRPCStatusCodeKey.Int(9) + // ABORTED + RPCGRPCStatusCodeAborted = RPCGRPCStatusCodeKey.Int(10) + // OUT_OF_RANGE + RPCGRPCStatusCodeOutOfRange = RPCGRPCStatusCodeKey.Int(11) + // UNIMPLEMENTED + RPCGRPCStatusCodeUnimplemented = RPCGRPCStatusCodeKey.Int(12) + // INTERNAL + RPCGRPCStatusCodeInternal = RPCGRPCStatusCodeKey.Int(13) + // UNAVAILABLE + RPCGRPCStatusCodeUnavailable = RPCGRPCStatusCodeKey.Int(14) + // DATA_LOSS + RPCGRPCStatusCodeDataLoss = RPCGRPCStatusCodeKey.Int(15) + // UNAUTHENTICATED + RPCGRPCStatusCodeUnauthenticated = RPCGRPCStatusCodeKey.Int(16) +) + +var ( + // sent + RPCMessageTypeSent = RPCMessageTypeKey.String("SENT") + // received + RPCMessageTypeReceived = RPCMessageTypeKey.String("RECEIVED") +) + +var ( + // gRPC + RPCSystemGRPC = RPCSystemKey.String("grpc") + // Java RMI + RPCSystemJavaRmi = RPCSystemKey.String("java_rmi") + // .NET WCF + RPCSystemDotnetWcf = RPCSystemKey.String("dotnet_wcf") + // Apache Dubbo + RPCSystemApacheDubbo = RPCSystemKey.String("apache_dubbo") + // Connect RPC + RPCSystemConnectRPC = RPCSystemKey.String("connect_rpc") +) + +// RPCJsonrpcErrorCode returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.error_code" semantic conventions. It represents the +// `error.code` property of response if it is an error response. +func RPCJsonrpcErrorCode(val int) attribute.KeyValue { + return RPCJsonrpcErrorCodeKey.Int(val) +} + +// RPCJsonrpcErrorMessage returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.error_message" semantic conventions. It represents the +// `error.message` property of response if it is an error response. +func RPCJsonrpcErrorMessage(val string) attribute.KeyValue { + return RPCJsonrpcErrorMessageKey.String(val) +} + +// RPCJsonrpcRequestID returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.request_id" semantic conventions. It represents the `id` +// property of request or response. Since protocol allows id to be int, string, +// `null` or missing (for notifications), value is expected to be cast to +// string for simplicity. Use empty string in case of `null` value. Omit +// entirely if this is a notification. +func RPCJsonrpcRequestID(val string) attribute.KeyValue { + return RPCJsonrpcRequestIDKey.String(val) +} + +// RPCJsonrpcVersion returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.version" semantic conventions. It represents the protocol +// version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 +// doesn't specify this, the value can be omitted. +func RPCJsonrpcVersion(val string) attribute.KeyValue { + return RPCJsonrpcVersionKey.String(val) +} + +// RPCMessageCompressedSize returns an attribute KeyValue conforming to the +// "rpc.message.compressed_size" semantic conventions. It represents the +// compressed size of the message in bytes. +func RPCMessageCompressedSize(val int) attribute.KeyValue { + return RPCMessageCompressedSizeKey.Int(val) +} + +// RPCMessageID returns an attribute KeyValue conforming to the +// "rpc.message.id" semantic conventions. It represents the mUST be calculated +// as two different counters starting from `1` one for sent messages and one +// for received message. +func RPCMessageID(val int) attribute.KeyValue { + return RPCMessageIDKey.Int(val) +} + +// RPCMessageUncompressedSize returns an attribute KeyValue conforming to +// the "rpc.message.uncompressed_size" semantic conventions. It represents the +// uncompressed size of the message in bytes. +func RPCMessageUncompressedSize(val int) attribute.KeyValue { + return RPCMessageUncompressedSizeKey.Int(val) +} + +// RPCMethod returns an attribute KeyValue conforming to the "rpc.method" +// semantic conventions. It represents the name of the (logical) method being +// called, must be equal to the $method part in the span name. +func RPCMethod(val string) attribute.KeyValue { + return RPCMethodKey.String(val) +} + +// RPCService returns an attribute KeyValue conforming to the "rpc.service" +// semantic conventions. It represents the full (logical) name of the service +// being called, including its package name, if applicable. +func RPCService(val string) attribute.KeyValue { + return RPCServiceKey.String(val) +} + +// These attributes may be used to describe the server in a connection-based +// network interaction where there is one side that initiates the connection +// (the client is the side that initiates the connection). This covers all TCP +// network interactions since TCP is connection-based and one side initiates +// the connection (an exception is made for peer-to-peer communication over TCP +// where the "user-facing" surface of the protocol / API doesn't expose a clear +// notion of client and server). This also covers UDP network interactions +// where one side initiates the interaction, e.g. QUIC (HTTP/3) and DNS. +const ( + // ServerAddressKey is the attribute Key conforming to the "server.address" + // semantic conventions. It represents the server domain name if available + // without reverse DNS lookup; otherwise, IP address or Unix domain socket + // name. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'example.com', '10.1.2.80', '/tmp/my.sock' + // Note: When observed from the client side, and when communicating through + // an intermediary, `server.address` SHOULD represent the server address + // behind any intermediaries, for example proxies, if it's available. + ServerAddressKey = attribute.Key("server.address") + + // ServerPortKey is the attribute Key conforming to the "server.port" + // semantic conventions. It represents the server port number. + // + // Type: int + // RequirementLevel: Optional + // Stability: stable + // Examples: 80, 8080, 443 + // Note: When observed from the client side, and when communicating through + // an intermediary, `server.port` SHOULD represent the server port behind + // any intermediaries, for example proxies, if it's available. + ServerPortKey = attribute.Key("server.port") +) + +// ServerAddress returns an attribute KeyValue conforming to the +// "server.address" semantic conventions. It represents the server domain name +// if available without reverse DNS lookup; otherwise, IP address or Unix +// domain socket name. +func ServerAddress(val string) attribute.KeyValue { + return ServerAddressKey.String(val) +} + +// ServerPort returns an attribute KeyValue conforming to the "server.port" +// semantic conventions. It represents the server port number. +func ServerPort(val int) attribute.KeyValue { + return ServerPortKey.Int(val) +} + +// A service instance. +const ( + // ServiceInstanceIDKey is the attribute Key conforming to the + // "service.instance.id" semantic conventions. It represents the string ID + // of the service instance. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '627cc493-f310-47de-96bd-71410b7dec09' + // Note: MUST be unique for each instance of the same + // `service.namespace,service.name` pair (in other words + // `service.namespace,service.name,service.instance.id` triplet MUST be + // globally unique). The ID helps to + // distinguish instances of the same service that exist at the same time + // (e.g. instances of a horizontally scaled + // service). + // + // Implementations, such as SDKs, are recommended to generate a random + // Version 1 or Version 4 [RFC + // 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an + // inherent unique ID as the source of + // this value if stability is desirable. In that case, the ID SHOULD be + // used as source of a UUID Version 5 and + // SHOULD use the following UUID as the namespace: + // `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + // + // UUIDs are typically recommended, as only an opaque value for the + // purposes of identifying a service instance is + // needed. Similar to what can be seen in the man page for the + // [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/machine-id.html) + // file, the underlying + // data, such as pod name and namespace should be treated as confidential, + // being the user's choice to expose it + // or not via another resource attribute. + // + // For applications running behind an application server (like unicorn), we + // do not recommend using one identifier + // for all processes participating in the application. Instead, it's + // recommended each division (e.g. a worker + // thread in unicorn) to have its own instance.id. + // + // It's not recommended for a Collector to set `service.instance.id` if it + // can't unambiguously determine the + // service instance that is generating that telemetry. For instance, + // creating an UUID based on `pod.name` will + // likely be wrong, as the Collector might not know from which container + // within that pod the telemetry originated. + // However, Collectors can set the `service.instance.id` if they can + // unambiguously determine the service instance + // for that telemetry. This is typically the case for scraping receivers, + // as they know the target address and + // port. + ServiceInstanceIDKey = attribute.Key("service.instance.id") + + // ServiceNameKey is the attribute Key conforming to the "service.name" + // semantic conventions. It represents the logical name of the service. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'shoppingcart' + // Note: MUST be the same for all instances of horizontally scaled + // services. If the value was not specified, SDKs MUST fallback to + // `unknown_service:` concatenated with + // [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If + // `process.executable.name` is not available, the value MUST be set to + // `unknown_service`. + ServiceNameKey = attribute.Key("service.name") + + // ServiceNamespaceKey is the attribute Key conforming to the + // "service.namespace" semantic conventions. It represents a namespace for + // `service.name`. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Shop' + // Note: A string value having a meaning that helps to distinguish a group + // of services, for example the team name that owns a group of services. + // `service.name` is expected to be unique within the same namespace. If + // `service.namespace` is not specified in the Resource then `service.name` + // is expected to be unique for all services that have no explicit + // namespace defined (so the empty/unspecified namespace is simply one more + // valid namespace). Zero-length namespace string is assumed equal to + // unspecified namespace. + ServiceNamespaceKey = attribute.Key("service.namespace") + + // ServiceVersionKey is the attribute Key conforming to the + // "service.version" semantic conventions. It represents the version string + // of the service API or implementation. The format is not defined by these + // conventions. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: '2.0.0', 'a01dbef8a' + ServiceVersionKey = attribute.Key("service.version") +) + +// ServiceInstanceID returns an attribute KeyValue conforming to the +// "service.instance.id" semantic conventions. It represents the string ID of +// the service instance. +func ServiceInstanceID(val string) attribute.KeyValue { + return ServiceInstanceIDKey.String(val) +} + +// ServiceName returns an attribute KeyValue conforming to the +// "service.name" semantic conventions. It represents the logical name of the +// service. +func ServiceName(val string) attribute.KeyValue { + return ServiceNameKey.String(val) +} + +// ServiceNamespace returns an attribute KeyValue conforming to the +// "service.namespace" semantic conventions. It represents a namespace for +// `service.name`. +func ServiceNamespace(val string) attribute.KeyValue { + return ServiceNamespaceKey.String(val) +} + +// ServiceVersion returns an attribute KeyValue conforming to the +// "service.version" semantic conventions. It represents the version string of +// the service API or implementation. The format is not defined by these +// conventions. +func ServiceVersion(val string) attribute.KeyValue { + return ServiceVersionKey.String(val) +} + +// Session is defined as the period of time encompassing all activities +// performed by the application and the actions executed by the end user. +// Consequently, a Session is represented as a collection of Logs, Events, and +// Spans emitted by the Client Application throughout the Session's duration. +// Each Session is assigned a unique identifier, which is included as an +// attribute in the Logs, Events, and Spans generated during the Session's +// lifecycle. +// When a session reaches end of life, typically due to user inactivity or +// session timeout, a new session identifier will be assigned. The previous +// session identifier may be provided by the instrumentation so that telemetry +// backends can link the two sessions. +const ( + // SessionIDKey is the attribute Key conforming to the "session.id" + // semantic conventions. It represents a unique id to identify a session. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '00112233-4455-6677-8899-aabbccddeeff' + SessionIDKey = attribute.Key("session.id") + + // SessionPreviousIDKey is the attribute Key conforming to the + // "session.previous_id" semantic conventions. It represents the previous + // `session.id` for this user, when known. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '00112233-4455-6677-8899-aabbccddeeff' + SessionPreviousIDKey = attribute.Key("session.previous_id") +) + +// SessionID returns an attribute KeyValue conforming to the "session.id" +// semantic conventions. It represents a unique id to identify a session. +func SessionID(val string) attribute.KeyValue { + return SessionIDKey.String(val) +} + +// SessionPreviousID returns an attribute KeyValue conforming to the +// "session.previous_id" semantic conventions. It represents the previous +// `session.id` for this user, when known. +func SessionPreviousID(val string) attribute.KeyValue { + return SessionPreviousIDKey.String(val) +} + +// SignalR attributes +const ( + // SignalrConnectionStatusKey is the attribute Key conforming to the + // "signalr.connection.status" semantic conventions. It represents the + // signalR HTTP connection closure status. + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + // Examples: 'app_shutdown', 'timeout' + SignalrConnectionStatusKey = attribute.Key("signalr.connection.status") + + // SignalrTransportKey is the attribute Key conforming to the + // "signalr.transport" semantic conventions. It represents the [SignalR + // transport + // type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md) + // + // Type: Enum + // RequirementLevel: Optional + // Stability: stable + // Examples: 'web_sockets', 'long_polling' + SignalrTransportKey = attribute.Key("signalr.transport") +) + +var ( + // The connection was closed normally + SignalrConnectionStatusNormalClosure = SignalrConnectionStatusKey.String("normal_closure") + // The connection was closed due to a timeout + SignalrConnectionStatusTimeout = SignalrConnectionStatusKey.String("timeout") + // The connection was closed because the app is shutting down + SignalrConnectionStatusAppShutdown = SignalrConnectionStatusKey.String("app_shutdown") +) + +var ( + // ServerSentEvents protocol + SignalrTransportServerSentEvents = SignalrTransportKey.String("server_sent_events") + // LongPolling protocol + SignalrTransportLongPolling = SignalrTransportKey.String("long_polling") + // WebSockets protocol + SignalrTransportWebSockets = SignalrTransportKey.String("web_sockets") +) + +// These attributes may be used to describe the sender of a network +// exchange/packet. These should be used when there is no client/server +// relationship between the two sides, or when that relationship is unknown. +// This covers low-level network interactions (e.g. packet tracing) where you +// don't know if there was a connection or which side initiated it. This also +// covers unidirectional UDP flows and peer-to-peer communication where the +// "user-facing" surface of the protocol / API doesn't expose a clear notion of +// client and server. +const ( + // SourceAddressKey is the attribute Key conforming to the "source.address" + // semantic conventions. It represents the source address - domain name if + // available without reverse DNS lookup; otherwise, IP address or Unix + // domain socket name. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'source.example.com', '10.1.2.80', '/tmp/my.sock' + // Note: When observed from the destination side, and when communicating + // through an intermediary, `source.address` SHOULD represent the source + // address behind any intermediaries, for example proxies, if it's + // available. + SourceAddressKey = attribute.Key("source.address") + + // SourcePortKey is the attribute Key conforming to the "source.port" + // semantic conventions. It represents the source port number + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 3389, 2888 + SourcePortKey = attribute.Key("source.port") +) + +// SourceAddress returns an attribute KeyValue conforming to the +// "source.address" semantic conventions. It represents the source address - +// domain name if available without reverse DNS lookup; otherwise, IP address +// or Unix domain socket name. +func SourceAddress(val string) attribute.KeyValue { + return SourceAddressKey.String(val) +} + +// SourcePort returns an attribute KeyValue conforming to the "source.port" +// semantic conventions. It represents the source port number +func SourcePort(val int) attribute.KeyValue { + return SourcePortKey.Int(val) +} + +// Describes System attributes +const ( + // SystemDeviceKey is the attribute Key conforming to the "system.device" + // semantic conventions. It represents the device identifier + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '(identifier)' + SystemDeviceKey = attribute.Key("system.device") +) + +// SystemDevice returns an attribute KeyValue conforming to the +// "system.device" semantic conventions. It represents the device identifier +func SystemDevice(val string) attribute.KeyValue { + return SystemDeviceKey.String(val) +} + +// Describes System CPU attributes +const ( + // SystemCPULogicalNumberKey is the attribute Key conforming to the + // "system.cpu.logical_number" semantic conventions. It represents the + // logical CPU number [0..n-1] + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 1 + SystemCPULogicalNumberKey = attribute.Key("system.cpu.logical_number") + + // SystemCPUStateKey is the attribute Key conforming to the + // "system.cpu.state" semantic conventions. It represents the state of the + // CPU + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'idle', 'interrupt' + SystemCPUStateKey = attribute.Key("system.cpu.state") +) + +var ( + // user + SystemCPUStateUser = SystemCPUStateKey.String("user") + // system + SystemCPUStateSystem = SystemCPUStateKey.String("system") + // nice + SystemCPUStateNice = SystemCPUStateKey.String("nice") + // idle + SystemCPUStateIdle = SystemCPUStateKey.String("idle") + // iowait + SystemCPUStateIowait = SystemCPUStateKey.String("iowait") + // interrupt + SystemCPUStateInterrupt = SystemCPUStateKey.String("interrupt") + // steal + SystemCPUStateSteal = SystemCPUStateKey.String("steal") +) + +// SystemCPULogicalNumber returns an attribute KeyValue conforming to the +// "system.cpu.logical_number" semantic conventions. It represents the logical +// CPU number [0..n-1] +func SystemCPULogicalNumber(val int) attribute.KeyValue { + return SystemCPULogicalNumberKey.Int(val) +} + +// Describes System Memory attributes +const ( + // SystemMemoryStateKey is the attribute Key conforming to the + // "system.memory.state" semantic conventions. It represents the memory + // state + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'free', 'cached' + SystemMemoryStateKey = attribute.Key("system.memory.state") +) + +var ( + // used + SystemMemoryStateUsed = SystemMemoryStateKey.String("used") + // free + SystemMemoryStateFree = SystemMemoryStateKey.String("free") + // shared + SystemMemoryStateShared = SystemMemoryStateKey.String("shared") + // buffers + SystemMemoryStateBuffers = SystemMemoryStateKey.String("buffers") + // cached + SystemMemoryStateCached = SystemMemoryStateKey.String("cached") +) + +// Describes System Memory Paging attributes +const ( + // SystemPagingDirectionKey is the attribute Key conforming to the + // "system.paging.direction" semantic conventions. It represents the paging + // access direction + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'in' + SystemPagingDirectionKey = attribute.Key("system.paging.direction") + + // SystemPagingStateKey is the attribute Key conforming to the + // "system.paging.state" semantic conventions. It represents the memory + // paging state + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'free' + SystemPagingStateKey = attribute.Key("system.paging.state") + + // SystemPagingTypeKey is the attribute Key conforming to the + // "system.paging.type" semantic conventions. It represents the memory + // paging type + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'minor' + SystemPagingTypeKey = attribute.Key("system.paging.type") +) + +var ( + // in + SystemPagingDirectionIn = SystemPagingDirectionKey.String("in") + // out + SystemPagingDirectionOut = SystemPagingDirectionKey.String("out") +) + +var ( + // used + SystemPagingStateUsed = SystemPagingStateKey.String("used") + // free + SystemPagingStateFree = SystemPagingStateKey.String("free") +) + +var ( + // major + SystemPagingTypeMajor = SystemPagingTypeKey.String("major") + // minor + SystemPagingTypeMinor = SystemPagingTypeKey.String("minor") +) + +// Describes Filesystem attributes +const ( + // SystemFilesystemModeKey is the attribute Key conforming to the + // "system.filesystem.mode" semantic conventions. It represents the + // filesystem mode + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'rw, ro' + SystemFilesystemModeKey = attribute.Key("system.filesystem.mode") + + // SystemFilesystemMountpointKey is the attribute Key conforming to the + // "system.filesystem.mountpoint" semantic conventions. It represents the + // filesystem mount path + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '/mnt/data' + SystemFilesystemMountpointKey = attribute.Key("system.filesystem.mountpoint") + + // SystemFilesystemStateKey is the attribute Key conforming to the + // "system.filesystem.state" semantic conventions. It represents the + // filesystem state + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'used' + SystemFilesystemStateKey = attribute.Key("system.filesystem.state") + + // SystemFilesystemTypeKey is the attribute Key conforming to the + // "system.filesystem.type" semantic conventions. It represents the + // filesystem type + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'ext4' + SystemFilesystemTypeKey = attribute.Key("system.filesystem.type") +) + +var ( + // used + SystemFilesystemStateUsed = SystemFilesystemStateKey.String("used") + // free + SystemFilesystemStateFree = SystemFilesystemStateKey.String("free") + // reserved + SystemFilesystemStateReserved = SystemFilesystemStateKey.String("reserved") +) + +var ( + // fat32 + SystemFilesystemTypeFat32 = SystemFilesystemTypeKey.String("fat32") + // exfat + SystemFilesystemTypeExfat = SystemFilesystemTypeKey.String("exfat") + // ntfs + SystemFilesystemTypeNtfs = SystemFilesystemTypeKey.String("ntfs") + // refs + SystemFilesystemTypeRefs = SystemFilesystemTypeKey.String("refs") + // hfsplus + SystemFilesystemTypeHfsplus = SystemFilesystemTypeKey.String("hfsplus") + // ext4 + SystemFilesystemTypeExt4 = SystemFilesystemTypeKey.String("ext4") +) + +// SystemFilesystemMode returns an attribute KeyValue conforming to the +// "system.filesystem.mode" semantic conventions. It represents the filesystem +// mode +func SystemFilesystemMode(val string) attribute.KeyValue { + return SystemFilesystemModeKey.String(val) +} + +// SystemFilesystemMountpoint returns an attribute KeyValue conforming to +// the "system.filesystem.mountpoint" semantic conventions. It represents the +// filesystem mount path +func SystemFilesystemMountpoint(val string) attribute.KeyValue { + return SystemFilesystemMountpointKey.String(val) +} + +// Describes Network attributes +const ( + // SystemNetworkStateKey is the attribute Key conforming to the + // "system.network.state" semantic conventions. It represents a stateless + // protocol MUST NOT set this attribute + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'close_wait' + SystemNetworkStateKey = attribute.Key("system.network.state") +) + +var ( + // close + SystemNetworkStateClose = SystemNetworkStateKey.String("close") + // close_wait + SystemNetworkStateCloseWait = SystemNetworkStateKey.String("close_wait") + // closing + SystemNetworkStateClosing = SystemNetworkStateKey.String("closing") + // delete + SystemNetworkStateDelete = SystemNetworkStateKey.String("delete") + // established + SystemNetworkStateEstablished = SystemNetworkStateKey.String("established") + // fin_wait_1 + SystemNetworkStateFinWait1 = SystemNetworkStateKey.String("fin_wait_1") + // fin_wait_2 + SystemNetworkStateFinWait2 = SystemNetworkStateKey.String("fin_wait_2") + // last_ack + SystemNetworkStateLastAck = SystemNetworkStateKey.String("last_ack") + // listen + SystemNetworkStateListen = SystemNetworkStateKey.String("listen") + // syn_recv + SystemNetworkStateSynRecv = SystemNetworkStateKey.String("syn_recv") + // syn_sent + SystemNetworkStateSynSent = SystemNetworkStateKey.String("syn_sent") + // time_wait + SystemNetworkStateTimeWait = SystemNetworkStateKey.String("time_wait") +) + +// Describes System Process attributes +const ( + // SystemProcessStatusKey is the attribute Key conforming to the + // "system.process.status" semantic conventions. It represents the process + // state, e.g., [Linux Process State + // Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES) + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'running' + SystemProcessStatusKey = attribute.Key("system.process.status") +) + +var ( + // running + SystemProcessStatusRunning = SystemProcessStatusKey.String("running") + // sleeping + SystemProcessStatusSleeping = SystemProcessStatusKey.String("sleeping") + // stopped + SystemProcessStatusStopped = SystemProcessStatusKey.String("stopped") + // defunct + SystemProcessStatusDefunct = SystemProcessStatusKey.String("defunct") +) + +// Attributes for telemetry SDK. +const ( + // TelemetrySDKLanguageKey is the attribute Key conforming to the + // "telemetry.sdk.language" semantic conventions. It represents the + // language of the telemetry SDK. + // + // Type: Enum + // RequirementLevel: Required + // Stability: stable + TelemetrySDKLanguageKey = attribute.Key("telemetry.sdk.language") + + // TelemetrySDKNameKey is the attribute Key conforming to the + // "telemetry.sdk.name" semantic conventions. It represents the name of the + // telemetry SDK as defined above. + // + // Type: string + // RequirementLevel: Required + // Stability: stable + // Examples: 'opentelemetry' + // Note: The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute + // to `opentelemetry`. + // If another SDK, like a fork or a vendor-provided implementation, is + // used, this SDK MUST set the + // `telemetry.sdk.name` attribute to the fully-qualified class or module + // name of this SDK's main entry point + // or another suitable identifier depending on the language. + // The identifier `opentelemetry` is reserved and MUST NOT be used in this + // case. + // All custom identifiers SHOULD be stable across different versions of an + // implementation. + TelemetrySDKNameKey = attribute.Key("telemetry.sdk.name") + + // TelemetrySDKVersionKey is the attribute Key conforming to the + // "telemetry.sdk.version" semantic conventions. It represents the version + // string of the telemetry SDK. + // + // Type: string + // RequirementLevel: Required + // Stability: stable + // Examples: '1.2.3' + TelemetrySDKVersionKey = attribute.Key("telemetry.sdk.version") + + // TelemetryDistroNameKey is the attribute Key conforming to the + // "telemetry.distro.name" semantic conventions. It represents the name of + // the auto instrumentation agent or distribution, if used. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'parts-unlimited-java' + // Note: Official auto instrumentation agents and distributions SHOULD set + // the `telemetry.distro.name` attribute to + // a string starting with `opentelemetry-`, e.g. + // `opentelemetry-java-instrumentation`. + TelemetryDistroNameKey = attribute.Key("telemetry.distro.name") + + // TelemetryDistroVersionKey is the attribute Key conforming to the + // "telemetry.distro.version" semantic conventions. It represents the + // version string of the auto instrumentation agent or distribution, if + // used. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '1.2.3' + TelemetryDistroVersionKey = attribute.Key("telemetry.distro.version") +) + +var ( + // cpp + TelemetrySDKLanguageCPP = TelemetrySDKLanguageKey.String("cpp") + // dotnet + TelemetrySDKLanguageDotnet = TelemetrySDKLanguageKey.String("dotnet") + // erlang + TelemetrySDKLanguageErlang = TelemetrySDKLanguageKey.String("erlang") + // go + TelemetrySDKLanguageGo = TelemetrySDKLanguageKey.String("go") + // java + TelemetrySDKLanguageJava = TelemetrySDKLanguageKey.String("java") + // nodejs + TelemetrySDKLanguageNodejs = TelemetrySDKLanguageKey.String("nodejs") + // php + TelemetrySDKLanguagePHP = TelemetrySDKLanguageKey.String("php") + // python + TelemetrySDKLanguagePython = TelemetrySDKLanguageKey.String("python") + // ruby + TelemetrySDKLanguageRuby = TelemetrySDKLanguageKey.String("ruby") + // rust + TelemetrySDKLanguageRust = TelemetrySDKLanguageKey.String("rust") + // swift + TelemetrySDKLanguageSwift = TelemetrySDKLanguageKey.String("swift") + // webjs + TelemetrySDKLanguageWebjs = TelemetrySDKLanguageKey.String("webjs") +) + +// TelemetrySDKName returns an attribute KeyValue conforming to the +// "telemetry.sdk.name" semantic conventions. It represents the name of the +// telemetry SDK as defined above. +func TelemetrySDKName(val string) attribute.KeyValue { + return TelemetrySDKNameKey.String(val) +} + +// TelemetrySDKVersion returns an attribute KeyValue conforming to the +// "telemetry.sdk.version" semantic conventions. It represents the version +// string of the telemetry SDK. +func TelemetrySDKVersion(val string) attribute.KeyValue { + return TelemetrySDKVersionKey.String(val) +} + +// TelemetryDistroName returns an attribute KeyValue conforming to the +// "telemetry.distro.name" semantic conventions. It represents the name of the +// auto instrumentation agent or distribution, if used. +func TelemetryDistroName(val string) attribute.KeyValue { + return TelemetryDistroNameKey.String(val) +} + +// TelemetryDistroVersion returns an attribute KeyValue conforming to the +// "telemetry.distro.version" semantic conventions. It represents the version +// string of the auto instrumentation agent or distribution, if used. +func TelemetryDistroVersion(val string) attribute.KeyValue { + return TelemetryDistroVersionKey.String(val) +} + +// These attributes may be used for any operation to store information about a +// thread that started a span. +const ( + // ThreadIDKey is the attribute Key conforming to the "thread.id" semantic + // conventions. It represents the current "managed" thread ID (as opposed + // to OS thread ID). + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 42 + ThreadIDKey = attribute.Key("thread.id") + + // ThreadNameKey is the attribute Key conforming to the "thread.name" + // semantic conventions. It represents the current thread name. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'main' + ThreadNameKey = attribute.Key("thread.name") +) + +// ThreadID returns an attribute KeyValue conforming to the "thread.id" +// semantic conventions. It represents the current "managed" thread ID (as +// opposed to OS thread ID). +func ThreadID(val int) attribute.KeyValue { + return ThreadIDKey.Int(val) +} + +// ThreadName returns an attribute KeyValue conforming to the "thread.name" +// semantic conventions. It represents the current thread name. +func ThreadName(val string) attribute.KeyValue { + return ThreadNameKey.String(val) +} + +// Semantic convention attributes in the TLS namespace. +const ( + // TLSCipherKey is the attribute Key conforming to the "tls.cipher" + // semantic conventions. It represents the string indicating the + // [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) + // used during the current connection. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'TLS_RSA_WITH_3DES_EDE_CBC_SHA', + // 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256' + // Note: The values allowed for `tls.cipher` MUST be one of the + // `Descriptions` of the [registered TLS Cipher + // Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4). + TLSCipherKey = attribute.Key("tls.cipher") + + // TLSClientCertificateKey is the attribute Key conforming to the + // "tls.client.certificate" semantic conventions. It represents the + // pEM-encoded stand-alone certificate offered by the client. This is + // usually mutually-exclusive of `client.certificate_chain` since this + // value also exists in that list. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'MII...' + TLSClientCertificateKey = attribute.Key("tls.client.certificate") + + // TLSClientCertificateChainKey is the attribute Key conforming to the + // "tls.client.certificate_chain" semantic conventions. It represents the + // array of PEM-encoded certificates that make up the certificate chain + // offered by the client. This is usually mutually-exclusive of + // `client.certificate` since that value should be the first certificate in + // the chain. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'MII...', 'MI...' + TLSClientCertificateChainKey = attribute.Key("tls.client.certificate_chain") + + // TLSClientHashMd5Key is the attribute Key conforming to the + // "tls.client.hash.md5" semantic conventions. It represents the + // certificate fingerprint using the MD5 digest of DER-encoded version of + // certificate offered by the client. For consistency with other hash + // values, this value should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC' + TLSClientHashMd5Key = attribute.Key("tls.client.hash.md5") + + // TLSClientHashSha1Key is the attribute Key conforming to the + // "tls.client.hash.sha1" semantic conventions. It represents the + // certificate fingerprint using the SHA1 digest of DER-encoded version of + // certificate offered by the client. For consistency with other hash + // values, this value should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '9E393D93138888D288266C2D915214D1D1CCEB2A' + TLSClientHashSha1Key = attribute.Key("tls.client.hash.sha1") + + // TLSClientHashSha256Key is the attribute Key conforming to the + // "tls.client.hash.sha256" semantic conventions. It represents the + // certificate fingerprint using the SHA256 digest of DER-encoded version + // of certificate offered by the client. For consistency with other hash + // values, this value should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: + // '0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0' + TLSClientHashSha256Key = attribute.Key("tls.client.hash.sha256") + + // TLSClientIssuerKey is the attribute Key conforming to the + // "tls.client.issuer" semantic conventions. It represents the + // distinguished name of + // [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) + // of the issuer of the x.509 certificate presented by the client. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'CN=Example Root CA, OU=Infrastructure Team, DC=example, + // DC=com' + TLSClientIssuerKey = attribute.Key("tls.client.issuer") + + // TLSClientJa3Key is the attribute Key conforming to the "tls.client.ja3" + // semantic conventions. It represents a hash that identifies clients based + // on how they perform an SSL/TLS handshake. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'd4e5b18d6b55c71272893221c96ba240' + TLSClientJa3Key = attribute.Key("tls.client.ja3") + + // TLSClientNotAfterKey is the attribute Key conforming to the + // "tls.client.not_after" semantic conventions. It represents the date/Time + // indicating when client certificate is no longer considered valid. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2021-01-01T00:00:00.000Z' + TLSClientNotAfterKey = attribute.Key("tls.client.not_after") + + // TLSClientNotBeforeKey is the attribute Key conforming to the + // "tls.client.not_before" semantic conventions. It represents the + // date/Time indicating when client certificate is first considered valid. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '1970-01-01T00:00:00.000Z' + TLSClientNotBeforeKey = attribute.Key("tls.client.not_before") + + // TLSClientServerNameKey is the attribute Key conforming to the + // "tls.client.server_name" semantic conventions. It represents the also + // called an SNI, this tells the server which hostname to which the client + // is attempting to connect to. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'opentelemetry.io' + TLSClientServerNameKey = attribute.Key("tls.client.server_name") + + // TLSClientSubjectKey is the attribute Key conforming to the + // "tls.client.subject" semantic conventions. It represents the + // distinguished name of subject of the x.509 certificate presented by the + // client. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'CN=myclient, OU=Documentation Team, DC=example, DC=com' + TLSClientSubjectKey = attribute.Key("tls.client.subject") + + // TLSClientSupportedCiphersKey is the attribute Key conforming to the + // "tls.client.supported_ciphers" semantic conventions. It represents the + // array of ciphers offered by the client during the client hello. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: '"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", + // "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "..."' + TLSClientSupportedCiphersKey = attribute.Key("tls.client.supported_ciphers") + + // TLSCurveKey is the attribute Key conforming to the "tls.curve" semantic + // conventions. It represents the string indicating the curve used for the + // given cipher, when applicable + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'secp256r1' + TLSCurveKey = attribute.Key("tls.curve") + + // TLSEstablishedKey is the attribute Key conforming to the + // "tls.established" semantic conventions. It represents the boolean flag + // indicating if the TLS negotiation was successful and transitioned to an + // encrypted tunnel. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + // Examples: True + TLSEstablishedKey = attribute.Key("tls.established") + + // TLSNextProtocolKey is the attribute Key conforming to the + // "tls.next_protocol" semantic conventions. It represents the string + // indicating the protocol being tunneled. Per the values in the [IANA + // registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), + // this string should be lower case. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'http/1.1' + TLSNextProtocolKey = attribute.Key("tls.next_protocol") + + // TLSProtocolNameKey is the attribute Key conforming to the + // "tls.protocol.name" semantic conventions. It represents the normalized + // lowercase protocol name parsed from original string of the negotiated + // [SSL/TLS protocol + // version](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES) + // + // Type: Enum + // RequirementLevel: Optional + // Stability: experimental + TLSProtocolNameKey = attribute.Key("tls.protocol.name") + + // TLSProtocolVersionKey is the attribute Key conforming to the + // "tls.protocol.version" semantic conventions. It represents the numeric + // part of the version parsed from the original string of the negotiated + // [SSL/TLS protocol + // version](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES) + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '1.2', '3' + TLSProtocolVersionKey = attribute.Key("tls.protocol.version") + + // TLSResumedKey is the attribute Key conforming to the "tls.resumed" + // semantic conventions. It represents the boolean flag indicating if this + // TLS connection was resumed from an existing TLS negotiation. + // + // Type: boolean + // RequirementLevel: Optional + // Stability: experimental + // Examples: True + TLSResumedKey = attribute.Key("tls.resumed") + + // TLSServerCertificateKey is the attribute Key conforming to the + // "tls.server.certificate" semantic conventions. It represents the + // pEM-encoded stand-alone certificate offered by the server. This is + // usually mutually-exclusive of `server.certificate_chain` since this + // value also exists in that list. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'MII...' + TLSServerCertificateKey = attribute.Key("tls.server.certificate") + + // TLSServerCertificateChainKey is the attribute Key conforming to the + // "tls.server.certificate_chain" semantic conventions. It represents the + // array of PEM-encoded certificates that make up the certificate chain + // offered by the server. This is usually mutually-exclusive of + // `server.certificate` since that value should be the first certificate in + // the chain. + // + // Type: string[] + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'MII...', 'MI...' + TLSServerCertificateChainKey = attribute.Key("tls.server.certificate_chain") + + // TLSServerHashMd5Key is the attribute Key conforming to the + // "tls.server.hash.md5" semantic conventions. It represents the + // certificate fingerprint using the MD5 digest of DER-encoded version of + // certificate offered by the server. For consistency with other hash + // values, this value should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC' + TLSServerHashMd5Key = attribute.Key("tls.server.hash.md5") + + // TLSServerHashSha1Key is the attribute Key conforming to the + // "tls.server.hash.sha1" semantic conventions. It represents the + // certificate fingerprint using the SHA1 digest of DER-encoded version of + // certificate offered by the server. For consistency with other hash + // values, this value should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '9E393D93138888D288266C2D915214D1D1CCEB2A' + TLSServerHashSha1Key = attribute.Key("tls.server.hash.sha1") + + // TLSServerHashSha256Key is the attribute Key conforming to the + // "tls.server.hash.sha256" semantic conventions. It represents the + // certificate fingerprint using the SHA256 digest of DER-encoded version + // of certificate offered by the server. For consistency with other hash + // values, this value should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: + // '0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0' + TLSServerHashSha256Key = attribute.Key("tls.server.hash.sha256") + + // TLSServerIssuerKey is the attribute Key conforming to the + // "tls.server.issuer" semantic conventions. It represents the + // distinguished name of + // [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) + // of the issuer of the x.509 certificate presented by the client. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'CN=Example Root CA, OU=Infrastructure Team, DC=example, + // DC=com' + TLSServerIssuerKey = attribute.Key("tls.server.issuer") + + // TLSServerJa3sKey is the attribute Key conforming to the + // "tls.server.ja3s" semantic conventions. It represents a hash that + // identifies servers based on how they perform an SSL/TLS handshake. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'd4e5b18d6b55c71272893221c96ba240' + TLSServerJa3sKey = attribute.Key("tls.server.ja3s") + + // TLSServerNotAfterKey is the attribute Key conforming to the + // "tls.server.not_after" semantic conventions. It represents the date/Time + // indicating when server certificate is no longer considered valid. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '2021-01-01T00:00:00.000Z' + TLSServerNotAfterKey = attribute.Key("tls.server.not_after") + + // TLSServerNotBeforeKey is the attribute Key conforming to the + // "tls.server.not_before" semantic conventions. It represents the + // date/Time indicating when server certificate is first considered valid. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '1970-01-01T00:00:00.000Z' + TLSServerNotBeforeKey = attribute.Key("tls.server.not_before") + + // TLSServerSubjectKey is the attribute Key conforming to the + // "tls.server.subject" semantic conventions. It represents the + // distinguished name of subject of the x.509 certificate presented by the + // server. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'CN=myserver, OU=Documentation Team, DC=example, DC=com' + TLSServerSubjectKey = attribute.Key("tls.server.subject") +) + +var ( + // ssl + TLSProtocolNameSsl = TLSProtocolNameKey.String("ssl") + // tls + TLSProtocolNameTLS = TLSProtocolNameKey.String("tls") +) + +// TLSCipher returns an attribute KeyValue conforming to the "tls.cipher" +// semantic conventions. It represents the string indicating the +// [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used +// during the current connection. +func TLSCipher(val string) attribute.KeyValue { + return TLSCipherKey.String(val) +} + +// TLSClientCertificate returns an attribute KeyValue conforming to the +// "tls.client.certificate" semantic conventions. It represents the pEM-encoded +// stand-alone certificate offered by the client. This is usually +// mutually-exclusive of `client.certificate_chain` since this value also +// exists in that list. +func TLSClientCertificate(val string) attribute.KeyValue { + return TLSClientCertificateKey.String(val) +} + +// TLSClientCertificateChain returns an attribute KeyValue conforming to the +// "tls.client.certificate_chain" semantic conventions. It represents the array +// of PEM-encoded certificates that make up the certificate chain offered by +// the client. This is usually mutually-exclusive of `client.certificate` since +// that value should be the first certificate in the chain. +func TLSClientCertificateChain(val ...string) attribute.KeyValue { + return TLSClientCertificateChainKey.StringSlice(val) +} + +// TLSClientHashMd5 returns an attribute KeyValue conforming to the +// "tls.client.hash.md5" semantic conventions. It represents the certificate +// fingerprint using the MD5 digest of DER-encoded version of certificate +// offered by the client. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSClientHashMd5(val string) attribute.KeyValue { + return TLSClientHashMd5Key.String(val) +} + +// TLSClientHashSha1 returns an attribute KeyValue conforming to the +// "tls.client.hash.sha1" semantic conventions. It represents the certificate +// fingerprint using the SHA1 digest of DER-encoded version of certificate +// offered by the client. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSClientHashSha1(val string) attribute.KeyValue { + return TLSClientHashSha1Key.String(val) +} + +// TLSClientHashSha256 returns an attribute KeyValue conforming to the +// "tls.client.hash.sha256" semantic conventions. It represents the certificate +// fingerprint using the SHA256 digest of DER-encoded version of certificate +// offered by the client. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSClientHashSha256(val string) attribute.KeyValue { + return TLSClientHashSha256Key.String(val) +} + +// TLSClientIssuer returns an attribute KeyValue conforming to the +// "tls.client.issuer" semantic conventions. It represents the distinguished +// name of +// [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of +// the issuer of the x.509 certificate presented by the client. +func TLSClientIssuer(val string) attribute.KeyValue { + return TLSClientIssuerKey.String(val) +} + +// TLSClientJa3 returns an attribute KeyValue conforming to the +// "tls.client.ja3" semantic conventions. It represents a hash that identifies +// clients based on how they perform an SSL/TLS handshake. +func TLSClientJa3(val string) attribute.KeyValue { + return TLSClientJa3Key.String(val) +} + +// TLSClientNotAfter returns an attribute KeyValue conforming to the +// "tls.client.not_after" semantic conventions. It represents the date/Time +// indicating when client certificate is no longer considered valid. +func TLSClientNotAfter(val string) attribute.KeyValue { + return TLSClientNotAfterKey.String(val) +} + +// TLSClientNotBefore returns an attribute KeyValue conforming to the +// "tls.client.not_before" semantic conventions. It represents the date/Time +// indicating when client certificate is first considered valid. +func TLSClientNotBefore(val string) attribute.KeyValue { + return TLSClientNotBeforeKey.String(val) +} + +// TLSClientServerName returns an attribute KeyValue conforming to the +// "tls.client.server_name" semantic conventions. It represents the also called +// an SNI, this tells the server which hostname to which the client is +// attempting to connect to. +func TLSClientServerName(val string) attribute.KeyValue { + return TLSClientServerNameKey.String(val) +} + +// TLSClientSubject returns an attribute KeyValue conforming to the +// "tls.client.subject" semantic conventions. It represents the distinguished +// name of subject of the x.509 certificate presented by the client. +func TLSClientSubject(val string) attribute.KeyValue { + return TLSClientSubjectKey.String(val) +} + +// TLSClientSupportedCiphers returns an attribute KeyValue conforming to the +// "tls.client.supported_ciphers" semantic conventions. It represents the array +// of ciphers offered by the client during the client hello. +func TLSClientSupportedCiphers(val ...string) attribute.KeyValue { + return TLSClientSupportedCiphersKey.StringSlice(val) +} + +// TLSCurve returns an attribute KeyValue conforming to the "tls.curve" +// semantic conventions. It represents the string indicating the curve used for +// the given cipher, when applicable +func TLSCurve(val string) attribute.KeyValue { + return TLSCurveKey.String(val) +} + +// TLSEstablished returns an attribute KeyValue conforming to the +// "tls.established" semantic conventions. It represents the boolean flag +// indicating if the TLS negotiation was successful and transitioned to an +// encrypted tunnel. +func TLSEstablished(val bool) attribute.KeyValue { + return TLSEstablishedKey.Bool(val) +} + +// TLSNextProtocol returns an attribute KeyValue conforming to the +// "tls.next_protocol" semantic conventions. It represents the string +// indicating the protocol being tunneled. Per the values in the [IANA +// registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), +// this string should be lower case. +func TLSNextProtocol(val string) attribute.KeyValue { + return TLSNextProtocolKey.String(val) +} + +// TLSProtocolVersion returns an attribute KeyValue conforming to the +// "tls.protocol.version" semantic conventions. It represents the numeric part +// of the version parsed from the original string of the negotiated [SSL/TLS +// protocol +// version](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES) +func TLSProtocolVersion(val string) attribute.KeyValue { + return TLSProtocolVersionKey.String(val) +} + +// TLSResumed returns an attribute KeyValue conforming to the "tls.resumed" +// semantic conventions. It represents the boolean flag indicating if this TLS +// connection was resumed from an existing TLS negotiation. +func TLSResumed(val bool) attribute.KeyValue { + return TLSResumedKey.Bool(val) +} + +// TLSServerCertificate returns an attribute KeyValue conforming to the +// "tls.server.certificate" semantic conventions. It represents the pEM-encoded +// stand-alone certificate offered by the server. This is usually +// mutually-exclusive of `server.certificate_chain` since this value also +// exists in that list. +func TLSServerCertificate(val string) attribute.KeyValue { + return TLSServerCertificateKey.String(val) +} + +// TLSServerCertificateChain returns an attribute KeyValue conforming to the +// "tls.server.certificate_chain" semantic conventions. It represents the array +// of PEM-encoded certificates that make up the certificate chain offered by +// the server. This is usually mutually-exclusive of `server.certificate` since +// that value should be the first certificate in the chain. +func TLSServerCertificateChain(val ...string) attribute.KeyValue { + return TLSServerCertificateChainKey.StringSlice(val) +} + +// TLSServerHashMd5 returns an attribute KeyValue conforming to the +// "tls.server.hash.md5" semantic conventions. It represents the certificate +// fingerprint using the MD5 digest of DER-encoded version of certificate +// offered by the server. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSServerHashMd5(val string) attribute.KeyValue { + return TLSServerHashMd5Key.String(val) +} + +// TLSServerHashSha1 returns an attribute KeyValue conforming to the +// "tls.server.hash.sha1" semantic conventions. It represents the certificate +// fingerprint using the SHA1 digest of DER-encoded version of certificate +// offered by the server. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSServerHashSha1(val string) attribute.KeyValue { + return TLSServerHashSha1Key.String(val) +} + +// TLSServerHashSha256 returns an attribute KeyValue conforming to the +// "tls.server.hash.sha256" semantic conventions. It represents the certificate +// fingerprint using the SHA256 digest of DER-encoded version of certificate +// offered by the server. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSServerHashSha256(val string) attribute.KeyValue { + return TLSServerHashSha256Key.String(val) +} + +// TLSServerIssuer returns an attribute KeyValue conforming to the +// "tls.server.issuer" semantic conventions. It represents the distinguished +// name of +// [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of +// the issuer of the x.509 certificate presented by the client. +func TLSServerIssuer(val string) attribute.KeyValue { + return TLSServerIssuerKey.String(val) +} + +// TLSServerJa3s returns an attribute KeyValue conforming to the +// "tls.server.ja3s" semantic conventions. It represents a hash that identifies +// servers based on how they perform an SSL/TLS handshake. +func TLSServerJa3s(val string) attribute.KeyValue { + return TLSServerJa3sKey.String(val) +} + +// TLSServerNotAfter returns an attribute KeyValue conforming to the +// "tls.server.not_after" semantic conventions. It represents the date/Time +// indicating when server certificate is no longer considered valid. +func TLSServerNotAfter(val string) attribute.KeyValue { + return TLSServerNotAfterKey.String(val) +} + +// TLSServerNotBefore returns an attribute KeyValue conforming to the +// "tls.server.not_before" semantic conventions. It represents the date/Time +// indicating when server certificate is first considered valid. +func TLSServerNotBefore(val string) attribute.KeyValue { + return TLSServerNotBeforeKey.String(val) +} + +// TLSServerSubject returns an attribute KeyValue conforming to the +// "tls.server.subject" semantic conventions. It represents the distinguished +// name of subject of the x.509 certificate presented by the server. +func TLSServerSubject(val string) attribute.KeyValue { + return TLSServerSubjectKey.String(val) +} + +// Attributes describing URL. +const ( + // URLDomainKey is the attribute Key conforming to the "url.domain" + // semantic conventions. It represents the domain extracted from the + // `url.full`, such as "opentelemetry.io". + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'www.foo.bar', 'opentelemetry.io', '3.12.167.2', + // '[1080:0:0:0:8:800:200C:417A]' + // Note: In some cases a URL may refer to an IP and/or port directly, + // without a domain name. In this case, the IP address would go to the + // domain field. If the URL contains a [literal IPv6 + // address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by + // `[` and `]`, the `[` and `]` characters should also be captured in the + // domain field. + URLDomainKey = attribute.Key("url.domain") + + // URLExtensionKey is the attribute Key conforming to the "url.extension" + // semantic conventions. It represents the file extension extracted from + // the `url.full`, excluding the leading dot. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'png', 'gz' + // Note: The file extension is only set if it exists, as not every url has + // a file extension. When the file name has multiple extensions + // `example.tar.gz`, only the last one should be captured `gz`, not + // `tar.gz`. + URLExtensionKey = attribute.Key("url.extension") + + // URLFragmentKey is the attribute Key conforming to the "url.fragment" + // semantic conventions. It represents the [URI + // fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'SemConv' + URLFragmentKey = attribute.Key("url.fragment") + + // URLFullKey is the attribute Key conforming to the "url.full" semantic + // conventions. It represents the absolute URL describing a network + // resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'https://www.foo.bar/search?q=OpenTelemetry#SemConv', + // '//localhost' + // Note: For network calls, URL usually has + // `scheme://host[:port][path][?query][#fragment]` format, where the + // fragment is not transmitted over HTTP, but if it is known, it SHOULD be + // included nevertheless. + // `url.full` MUST NOT contain credentials passed via URL in form of + // `https://username:password@www.example.com/`. In such case username and + // password SHOULD be redacted and attribute's value SHOULD be + // `https://REDACTED:REDACTED@www.example.com/`. + // `url.full` SHOULD capture the absolute URL when it is available (or can + // be reconstructed). Sensitive content provided in `url.full` SHOULD be + // scrubbed when instrumentations can identify it. + URLFullKey = attribute.Key("url.full") + + // URLOriginalKey is the attribute Key conforming to the "url.original" + // semantic conventions. It represents the unmodified original URL as seen + // in the event source. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'https://www.foo.bar/search?q=OpenTelemetry#SemConv', + // 'search?q=OpenTelemetry' + // Note: In network monitoring, the observed URL may be a full URL, whereas + // in access logs, the URL is often just represented as a path. This field + // is meant to represent the URL as it was observed, complete or not. + // `url.original` might contain credentials passed via URL in form of + // `https://username:password@www.example.com/`. In such case password and + // username SHOULD NOT be redacted and attribute's value SHOULD remain the + // same. + URLOriginalKey = attribute.Key("url.original") + + // URLPathKey is the attribute Key conforming to the "url.path" semantic + // conventions. It represents the [URI + // path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: '/search' + // Note: Sensitive content provided in `url.path` SHOULD be scrubbed when + // instrumentations can identify it. + URLPathKey = attribute.Key("url.path") + + // URLPortKey is the attribute Key conforming to the "url.port" semantic + // conventions. It represents the port extracted from the `url.full` + // + // Type: int + // RequirementLevel: Optional + // Stability: experimental + // Examples: 443 + URLPortKey = attribute.Key("url.port") + + // URLQueryKey is the attribute Key conforming to the "url.query" semantic + // conventions. It represents the [URI + // query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'q=OpenTelemetry' + // Note: Sensitive content provided in `url.query` SHOULD be scrubbed when + // instrumentations can identify it. + URLQueryKey = attribute.Key("url.query") + + // URLRegisteredDomainKey is the attribute Key conforming to the + // "url.registered_domain" semantic conventions. It represents the highest + // registered url domain, stripped of the subdomain. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'example.com', 'foo.co.uk' + // Note: This value can be determined precisely with the [public suffix + // list](http://publicsuffix.org). For example, the registered domain for + // `foo.example.com` is `example.com`. Trying to approximate this by simply + // taking the last two labels will not work well for TLDs such as `co.uk`. + URLRegisteredDomainKey = attribute.Key("url.registered_domain") + + // URLSchemeKey is the attribute Key conforming to the "url.scheme" + // semantic conventions. It represents the [URI + // scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component + // identifying the used protocol. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'https', 'ftp', 'telnet' + URLSchemeKey = attribute.Key("url.scheme") + + // URLSubdomainKey is the attribute Key conforming to the "url.subdomain" + // semantic conventions. It represents the subdomain portion of a fully + // qualified domain name includes all of the names except the host name + // under the registered_domain. In a partially qualified domain, or if the + // qualification level of the full name cannot be determined, subdomain + // contains all of the names below the registered domain. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'east', 'sub2.sub1' + // Note: The subdomain portion of `www.east.mydomain.co.uk` is `east`. If + // the domain has multiple levels of subdomain, such as + // `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, + // with no trailing period. + URLSubdomainKey = attribute.Key("url.subdomain") + + // URLTemplateKey is the attribute Key conforming to the "url.template" + // semantic conventions. It represents the low-cardinality template of an + // [absolute path + // reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '/users/{id}', '/users/:id', '/users?id={id}' + URLTemplateKey = attribute.Key("url.template") + + // URLTopLevelDomainKey is the attribute Key conforming to the + // "url.top_level_domain" semantic conventions. It represents the effective + // top level domain (eTLD), also known as the domain suffix, is the last + // part of the domain name. For example, the top level domain for + // example.com is `com`. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'com', 'co.uk' + // Note: This value can be determined precisely with the [public suffix + // list](http://publicsuffix.org). + URLTopLevelDomainKey = attribute.Key("url.top_level_domain") +) + +// URLDomain returns an attribute KeyValue conforming to the "url.domain" +// semantic conventions. It represents the domain extracted from the +// `url.full`, such as "opentelemetry.io". +func URLDomain(val string) attribute.KeyValue { + return URLDomainKey.String(val) +} + +// URLExtension returns an attribute KeyValue conforming to the +// "url.extension" semantic conventions. It represents the file extension +// extracted from the `url.full`, excluding the leading dot. +func URLExtension(val string) attribute.KeyValue { + return URLExtensionKey.String(val) +} + +// URLFragment returns an attribute KeyValue conforming to the +// "url.fragment" semantic conventions. It represents the [URI +// fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component +func URLFragment(val string) attribute.KeyValue { + return URLFragmentKey.String(val) +} + +// URLFull returns an attribute KeyValue conforming to the "url.full" +// semantic conventions. It represents the absolute URL describing a network +// resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) +func URLFull(val string) attribute.KeyValue { + return URLFullKey.String(val) +} + +// URLOriginal returns an attribute KeyValue conforming to the +// "url.original" semantic conventions. It represents the unmodified original +// URL as seen in the event source. +func URLOriginal(val string) attribute.KeyValue { + return URLOriginalKey.String(val) +} + +// URLPath returns an attribute KeyValue conforming to the "url.path" +// semantic conventions. It represents the [URI +// path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component +func URLPath(val string) attribute.KeyValue { + return URLPathKey.String(val) +} + +// URLPort returns an attribute KeyValue conforming to the "url.port" +// semantic conventions. It represents the port extracted from the `url.full` +func URLPort(val int) attribute.KeyValue { + return URLPortKey.Int(val) +} + +// URLQuery returns an attribute KeyValue conforming to the "url.query" +// semantic conventions. It represents the [URI +// query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component +func URLQuery(val string) attribute.KeyValue { + return URLQueryKey.String(val) +} + +// URLRegisteredDomain returns an attribute KeyValue conforming to the +// "url.registered_domain" semantic conventions. It represents the highest +// registered url domain, stripped of the subdomain. +func URLRegisteredDomain(val string) attribute.KeyValue { + return URLRegisteredDomainKey.String(val) +} + +// URLScheme returns an attribute KeyValue conforming to the "url.scheme" +// semantic conventions. It represents the [URI +// scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component +// identifying the used protocol. +func URLScheme(val string) attribute.KeyValue { + return URLSchemeKey.String(val) +} + +// URLSubdomain returns an attribute KeyValue conforming to the +// "url.subdomain" semantic conventions. It represents the subdomain portion of +// a fully qualified domain name includes all of the names except the host name +// under the registered_domain. In a partially qualified domain, or if the +// qualification level of the full name cannot be determined, subdomain +// contains all of the names below the registered domain. +func URLSubdomain(val string) attribute.KeyValue { + return URLSubdomainKey.String(val) +} + +// URLTemplate returns an attribute KeyValue conforming to the +// "url.template" semantic conventions. It represents the low-cardinality +// template of an [absolute path +// reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2). +func URLTemplate(val string) attribute.KeyValue { + return URLTemplateKey.String(val) +} + +// URLTopLevelDomain returns an attribute KeyValue conforming to the +// "url.top_level_domain" semantic conventions. It represents the effective top +// level domain (eTLD), also known as the domain suffix, is the last part of +// the domain name. For example, the top level domain for example.com is `com`. +func URLTopLevelDomain(val string) attribute.KeyValue { + return URLTopLevelDomainKey.String(val) +} + +// Describes user-agent attributes. +const ( + // UserAgentNameKey is the attribute Key conforming to the + // "user_agent.name" semantic conventions. It represents the name of the + // user-agent extracted from original. Usually refers to the browser's + // name. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'Safari', 'YourApp' + // Note: [Example](https://www.whatsmyua.info) of extracting browser's name + // from original string. In the case of using a user-agent for non-browser + // products, such as microservices with multiple names/versions inside the + // `user_agent.original`, the most significant name SHOULD be selected. In + // such a scenario it should align with `user_agent.version` + UserAgentNameKey = attribute.Key("user_agent.name") + + // UserAgentOriginalKey is the attribute Key conforming to the + // "user_agent.original" semantic conventions. It represents the value of + // the [HTTP + // User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) + // header sent by the client. + // + // Type: string + // RequirementLevel: Optional + // Stability: stable + // Examples: 'CERN-LineMode/2.15 libwww/2.17b3', 'Mozilla/5.0 (iPhone; CPU + // iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) + // Version/14.1.2 Mobile/15E148 Safari/604.1', 'YourApp/1.0.0 + // grpc-java-okhttp/1.27.2' + UserAgentOriginalKey = attribute.Key("user_agent.original") + + // UserAgentVersionKey is the attribute Key conforming to the + // "user_agent.version" semantic conventions. It represents the version of + // the user-agent extracted from original. Usually refers to the browser's + // version + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '14.1.2', '1.0.0' + // Note: [Example](https://www.whatsmyua.info) of extracting browser's + // version from original string. In the case of using a user-agent for + // non-browser products, such as microservices with multiple names/versions + // inside the `user_agent.original`, the most significant version SHOULD be + // selected. In such a scenario it should align with `user_agent.name` + UserAgentVersionKey = attribute.Key("user_agent.version") +) + +// UserAgentName returns an attribute KeyValue conforming to the +// "user_agent.name" semantic conventions. It represents the name of the +// user-agent extracted from original. Usually refers to the browser's name. +func UserAgentName(val string) attribute.KeyValue { + return UserAgentNameKey.String(val) +} + +// UserAgentOriginal returns an attribute KeyValue conforming to the +// "user_agent.original" semantic conventions. It represents the value of the +// [HTTP +// User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) +// header sent by the client. +func UserAgentOriginal(val string) attribute.KeyValue { + return UserAgentOriginalKey.String(val) +} + +// UserAgentVersion returns an attribute KeyValue conforming to the +// "user_agent.version" semantic conventions. It represents the version of the +// user-agent extracted from original. Usually refers to the browser's version +func UserAgentVersion(val string) attribute.KeyValue { + return UserAgentVersionKey.String(val) +} + +// The attributes used to describe the packaged software running the +// application code. +const ( + // WebEngineDescriptionKey is the attribute Key conforming to the + // "webengine.description" semantic conventions. It represents the + // additional description of the web engine (e.g. detailed version and + // edition information). + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - + // 2.2.2.Final' + WebEngineDescriptionKey = attribute.Key("webengine.description") + + // WebEngineNameKey is the attribute Key conforming to the "webengine.name" + // semantic conventions. It represents the name of the web engine. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: 'WildFly' + WebEngineNameKey = attribute.Key("webengine.name") + + // WebEngineVersionKey is the attribute Key conforming to the + // "webengine.version" semantic conventions. It represents the version of + // the web engine. + // + // Type: string + // RequirementLevel: Optional + // Stability: experimental + // Examples: '21.0.0' + WebEngineVersionKey = attribute.Key("webengine.version") +) + +// WebEngineDescription returns an attribute KeyValue conforming to the +// "webengine.description" semantic conventions. It represents the additional +// description of the web engine (e.g. detailed version and edition +// information). +func WebEngineDescription(val string) attribute.KeyValue { + return WebEngineDescriptionKey.String(val) +} + +// WebEngineName returns an attribute KeyValue conforming to the +// "webengine.name" semantic conventions. It represents the name of the web +// engine. +func WebEngineName(val string) attribute.KeyValue { + return WebEngineNameKey.String(val) +} + +// WebEngineVersion returns an attribute KeyValue conforming to the +// "webengine.version" semantic conventions. It represents the version of the +// web engine. +func WebEngineVersion(val string) attribute.KeyValue { + return WebEngineVersionKey.String(val) +} diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/doc.go b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/doc.go new file mode 100644 index 000000000000..d031bbea7841 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/doc.go @@ -0,0 +1,9 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Package semconv implements OpenTelemetry semantic conventions. +// +// OpenTelemetry semantic conventions are agreed standardized naming +// patterns for OpenTelemetry things. This package represents the v1.26.0 +// version of the OpenTelemetry semantic conventions. +package semconv // import "go.opentelemetry.io/otel/semconv/v1.26.0" diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/exception.go b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/exception.go new file mode 100644 index 000000000000..bfaee0d56e38 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/exception.go @@ -0,0 +1,9 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package semconv // import "go.opentelemetry.io/otel/semconv/v1.26.0" + +const ( + // ExceptionEventName is the name of the Span event representing an exception. + ExceptionEventName = "exception" +) diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/metric.go b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/metric.go new file mode 100644 index 000000000000..fcdb9f48596e --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/metric.go @@ -0,0 +1,1307 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Code generated from semantic convention specification. DO NOT EDIT. + +package semconv // import "go.opentelemetry.io/otel/semconv/v1.26.0" + +const ( + + // ContainerCPUTime is the metric conforming to the "container.cpu.time" + // semantic conventions. It represents the total CPU time consumed. + // Instrument: counter + // Unit: s + // Stability: Experimental + ContainerCPUTimeName = "container.cpu.time" + ContainerCPUTimeUnit = "s" + ContainerCPUTimeDescription = "Total CPU time consumed" + + // ContainerMemoryUsage is the metric conforming to the + // "container.memory.usage" semantic conventions. It represents the memory + // usage of the container. + // Instrument: counter + // Unit: By + // Stability: Experimental + ContainerMemoryUsageName = "container.memory.usage" + ContainerMemoryUsageUnit = "By" + ContainerMemoryUsageDescription = "Memory usage of the container." + + // ContainerDiskIo is the metric conforming to the "container.disk.io" semantic + // conventions. It represents the disk bytes for the container. + // Instrument: counter + // Unit: By + // Stability: Experimental + ContainerDiskIoName = "container.disk.io" + ContainerDiskIoUnit = "By" + ContainerDiskIoDescription = "Disk bytes for the container." + + // ContainerNetworkIo is the metric conforming to the "container.network.io" + // semantic conventions. It represents the network bytes for the container. + // Instrument: counter + // Unit: By + // Stability: Experimental + ContainerNetworkIoName = "container.network.io" + ContainerNetworkIoUnit = "By" + ContainerNetworkIoDescription = "Network bytes for the container." + + // DBClientOperationDuration is the metric conforming to the + // "db.client.operation.duration" semantic conventions. It represents the + // duration of database client operations. + // Instrument: histogram + // Unit: s + // Stability: Experimental + DBClientOperationDurationName = "db.client.operation.duration" + DBClientOperationDurationUnit = "s" + DBClientOperationDurationDescription = "Duration of database client operations." + + // DBClientConnectionCount is the metric conforming to the + // "db.client.connection.count" semantic conventions. It represents the number + // of connections that are currently in state described by the `state` + // attribute. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Experimental + DBClientConnectionCountName = "db.client.connection.count" + DBClientConnectionCountUnit = "{connection}" + DBClientConnectionCountDescription = "The number of connections that are currently in state described by the `state` attribute" + + // DBClientConnectionIdleMax is the metric conforming to the + // "db.client.connection.idle.max" semantic conventions. It represents the + // maximum number of idle open connections allowed. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Experimental + DBClientConnectionIdleMaxName = "db.client.connection.idle.max" + DBClientConnectionIdleMaxUnit = "{connection}" + DBClientConnectionIdleMaxDescription = "The maximum number of idle open connections allowed" + + // DBClientConnectionIdleMin is the metric conforming to the + // "db.client.connection.idle.min" semantic conventions. It represents the + // minimum number of idle open connections allowed. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Experimental + DBClientConnectionIdleMinName = "db.client.connection.idle.min" + DBClientConnectionIdleMinUnit = "{connection}" + DBClientConnectionIdleMinDescription = "The minimum number of idle open connections allowed" + + // DBClientConnectionMax is the metric conforming to the + // "db.client.connection.max" semantic conventions. It represents the maximum + // number of open connections allowed. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Experimental + DBClientConnectionMaxName = "db.client.connection.max" + DBClientConnectionMaxUnit = "{connection}" + DBClientConnectionMaxDescription = "The maximum number of open connections allowed" + + // DBClientConnectionPendingRequests is the metric conforming to the + // "db.client.connection.pending_requests" semantic conventions. It represents + // the number of pending requests for an open connection, cumulative for the + // entire pool. + // Instrument: updowncounter + // Unit: {request} + // Stability: Experimental + DBClientConnectionPendingRequestsName = "db.client.connection.pending_requests" + DBClientConnectionPendingRequestsUnit = "{request}" + DBClientConnectionPendingRequestsDescription = "The number of pending requests for an open connection, cumulative for the entire pool" + + // DBClientConnectionTimeouts is the metric conforming to the + // "db.client.connection.timeouts" semantic conventions. It represents the + // number of connection timeouts that have occurred trying to obtain a + // connection from the pool. + // Instrument: counter + // Unit: {timeout} + // Stability: Experimental + DBClientConnectionTimeoutsName = "db.client.connection.timeouts" + DBClientConnectionTimeoutsUnit = "{timeout}" + DBClientConnectionTimeoutsDescription = "The number of connection timeouts that have occurred trying to obtain a connection from the pool" + + // DBClientConnectionCreateTime is the metric conforming to the + // "db.client.connection.create_time" semantic conventions. It represents the + // time it took to create a new connection. + // Instrument: histogram + // Unit: s + // Stability: Experimental + DBClientConnectionCreateTimeName = "db.client.connection.create_time" + DBClientConnectionCreateTimeUnit = "s" + DBClientConnectionCreateTimeDescription = "The time it took to create a new connection" + + // DBClientConnectionWaitTime is the metric conforming to the + // "db.client.connection.wait_time" semantic conventions. It represents the + // time it took to obtain an open connection from the pool. + // Instrument: histogram + // Unit: s + // Stability: Experimental + DBClientConnectionWaitTimeName = "db.client.connection.wait_time" + DBClientConnectionWaitTimeUnit = "s" + DBClientConnectionWaitTimeDescription = "The time it took to obtain an open connection from the pool" + + // DBClientConnectionUseTime is the metric conforming to the + // "db.client.connection.use_time" semantic conventions. It represents the time + // between borrowing a connection and returning it to the pool. + // Instrument: histogram + // Unit: s + // Stability: Experimental + DBClientConnectionUseTimeName = "db.client.connection.use_time" + DBClientConnectionUseTimeUnit = "s" + DBClientConnectionUseTimeDescription = "The time between borrowing a connection and returning it to the pool" + + // DBClientConnectionsUsage is the metric conforming to the + // "db.client.connections.usage" semantic conventions. It represents the + // deprecated, use `db.client.connection.count` instead. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Experimental + DBClientConnectionsUsageName = "db.client.connections.usage" + DBClientConnectionsUsageUnit = "{connection}" + DBClientConnectionsUsageDescription = "Deprecated, use `db.client.connection.count` instead." + + // DBClientConnectionsIdleMax is the metric conforming to the + // "db.client.connections.idle.max" semantic conventions. It represents the + // deprecated, use `db.client.connection.idle.max` instead. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Experimental + DBClientConnectionsIdleMaxName = "db.client.connections.idle.max" + DBClientConnectionsIdleMaxUnit = "{connection}" + DBClientConnectionsIdleMaxDescription = "Deprecated, use `db.client.connection.idle.max` instead." + + // DBClientConnectionsIdleMin is the metric conforming to the + // "db.client.connections.idle.min" semantic conventions. It represents the + // deprecated, use `db.client.connection.idle.min` instead. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Experimental + DBClientConnectionsIdleMinName = "db.client.connections.idle.min" + DBClientConnectionsIdleMinUnit = "{connection}" + DBClientConnectionsIdleMinDescription = "Deprecated, use `db.client.connection.idle.min` instead." + + // DBClientConnectionsMax is the metric conforming to the + // "db.client.connections.max" semantic conventions. It represents the + // deprecated, use `db.client.connection.max` instead. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Experimental + DBClientConnectionsMaxName = "db.client.connections.max" + DBClientConnectionsMaxUnit = "{connection}" + DBClientConnectionsMaxDescription = "Deprecated, use `db.client.connection.max` instead." + + // DBClientConnectionsPendingRequests is the metric conforming to the + // "db.client.connections.pending_requests" semantic conventions. It represents + // the deprecated, use `db.client.connection.pending_requests` instead. + // Instrument: updowncounter + // Unit: {request} + // Stability: Experimental + DBClientConnectionsPendingRequestsName = "db.client.connections.pending_requests" + DBClientConnectionsPendingRequestsUnit = "{request}" + DBClientConnectionsPendingRequestsDescription = "Deprecated, use `db.client.connection.pending_requests` instead." + + // DBClientConnectionsTimeouts is the metric conforming to the + // "db.client.connections.timeouts" semantic conventions. It represents the + // deprecated, use `db.client.connection.timeouts` instead. + // Instrument: counter + // Unit: {timeout} + // Stability: Experimental + DBClientConnectionsTimeoutsName = "db.client.connections.timeouts" + DBClientConnectionsTimeoutsUnit = "{timeout}" + DBClientConnectionsTimeoutsDescription = "Deprecated, use `db.client.connection.timeouts` instead." + + // DBClientConnectionsCreateTime is the metric conforming to the + // "db.client.connections.create_time" semantic conventions. It represents the + // deprecated, use `db.client.connection.create_time` instead. Note: the unit + // also changed from `ms` to `s`. + // Instrument: histogram + // Unit: ms + // Stability: Experimental + DBClientConnectionsCreateTimeName = "db.client.connections.create_time" + DBClientConnectionsCreateTimeUnit = "ms" + DBClientConnectionsCreateTimeDescription = "Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`." + + // DBClientConnectionsWaitTime is the metric conforming to the + // "db.client.connections.wait_time" semantic conventions. It represents the + // deprecated, use `db.client.connection.wait_time` instead. Note: the unit + // also changed from `ms` to `s`. + // Instrument: histogram + // Unit: ms + // Stability: Experimental + DBClientConnectionsWaitTimeName = "db.client.connections.wait_time" + DBClientConnectionsWaitTimeUnit = "ms" + DBClientConnectionsWaitTimeDescription = "Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`." + + // DBClientConnectionsUseTime is the metric conforming to the + // "db.client.connections.use_time" semantic conventions. It represents the + // deprecated, use `db.client.connection.use_time` instead. Note: the unit also + // changed from `ms` to `s`. + // Instrument: histogram + // Unit: ms + // Stability: Experimental + DBClientConnectionsUseTimeName = "db.client.connections.use_time" + DBClientConnectionsUseTimeUnit = "ms" + DBClientConnectionsUseTimeDescription = "Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`." + + // DNSLookupDuration is the metric conforming to the "dns.lookup.duration" + // semantic conventions. It represents the measures the time taken to perform a + // DNS lookup. + // Instrument: histogram + // Unit: s + // Stability: Experimental + DNSLookupDurationName = "dns.lookup.duration" + DNSLookupDurationUnit = "s" + DNSLookupDurationDescription = "Measures the time taken to perform a DNS lookup." + + // AspnetcoreRoutingMatchAttempts is the metric conforming to the + // "aspnetcore.routing.match_attempts" semantic conventions. It represents the + // number of requests that were attempted to be matched to an endpoint. + // Instrument: counter + // Unit: {match_attempt} + // Stability: Stable + AspnetcoreRoutingMatchAttemptsName = "aspnetcore.routing.match_attempts" + AspnetcoreRoutingMatchAttemptsUnit = "{match_attempt}" + AspnetcoreRoutingMatchAttemptsDescription = "Number of requests that were attempted to be matched to an endpoint." + + // AspnetcoreDiagnosticsExceptions is the metric conforming to the + // "aspnetcore.diagnostics.exceptions" semantic conventions. It represents the + // number of exceptions caught by exception handling middleware. + // Instrument: counter + // Unit: {exception} + // Stability: Stable + AspnetcoreDiagnosticsExceptionsName = "aspnetcore.diagnostics.exceptions" + AspnetcoreDiagnosticsExceptionsUnit = "{exception}" + AspnetcoreDiagnosticsExceptionsDescription = "Number of exceptions caught by exception handling middleware." + + // AspnetcoreRateLimitingActiveRequestLeases is the metric conforming to the + // "aspnetcore.rate_limiting.active_request_leases" semantic conventions. It + // represents the number of requests that are currently active on the server + // that hold a rate limiting lease. + // Instrument: updowncounter + // Unit: {request} + // Stability: Stable + AspnetcoreRateLimitingActiveRequestLeasesName = "aspnetcore.rate_limiting.active_request_leases" + AspnetcoreRateLimitingActiveRequestLeasesUnit = "{request}" + AspnetcoreRateLimitingActiveRequestLeasesDescription = "Number of requests that are currently active on the server that hold a rate limiting lease." + + // AspnetcoreRateLimitingRequestLeaseDuration is the metric conforming to the + // "aspnetcore.rate_limiting.request_lease.duration" semantic conventions. It + // represents the duration of rate limiting lease held by requests on the + // server. + // Instrument: histogram + // Unit: s + // Stability: Stable + AspnetcoreRateLimitingRequestLeaseDurationName = "aspnetcore.rate_limiting.request_lease.duration" + AspnetcoreRateLimitingRequestLeaseDurationUnit = "s" + AspnetcoreRateLimitingRequestLeaseDurationDescription = "The duration of rate limiting lease held by requests on the server." + + // AspnetcoreRateLimitingRequestTimeInQueue is the metric conforming to the + // "aspnetcore.rate_limiting.request.time_in_queue" semantic conventions. It + // represents the time the request spent in a queue waiting to acquire a rate + // limiting lease. + // Instrument: histogram + // Unit: s + // Stability: Stable + AspnetcoreRateLimitingRequestTimeInQueueName = "aspnetcore.rate_limiting.request.time_in_queue" + AspnetcoreRateLimitingRequestTimeInQueueUnit = "s" + AspnetcoreRateLimitingRequestTimeInQueueDescription = "The time the request spent in a queue waiting to acquire a rate limiting lease." + + // AspnetcoreRateLimitingQueuedRequests is the metric conforming to the + // "aspnetcore.rate_limiting.queued_requests" semantic conventions. It + // represents the number of requests that are currently queued, waiting to + // acquire a rate limiting lease. + // Instrument: updowncounter + // Unit: {request} + // Stability: Stable + AspnetcoreRateLimitingQueuedRequestsName = "aspnetcore.rate_limiting.queued_requests" + AspnetcoreRateLimitingQueuedRequestsUnit = "{request}" + AspnetcoreRateLimitingQueuedRequestsDescription = "Number of requests that are currently queued, waiting to acquire a rate limiting lease." + + // AspnetcoreRateLimitingRequests is the metric conforming to the + // "aspnetcore.rate_limiting.requests" semantic conventions. It represents the + // number of requests that tried to acquire a rate limiting lease. + // Instrument: counter + // Unit: {request} + // Stability: Stable + AspnetcoreRateLimitingRequestsName = "aspnetcore.rate_limiting.requests" + AspnetcoreRateLimitingRequestsUnit = "{request}" + AspnetcoreRateLimitingRequestsDescription = "Number of requests that tried to acquire a rate limiting lease." + + // KestrelActiveConnections is the metric conforming to the + // "kestrel.active_connections" semantic conventions. It represents the number + // of connections that are currently active on the server. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Stable + KestrelActiveConnectionsName = "kestrel.active_connections" + KestrelActiveConnectionsUnit = "{connection}" + KestrelActiveConnectionsDescription = "Number of connections that are currently active on the server." + + // KestrelConnectionDuration is the metric conforming to the + // "kestrel.connection.duration" semantic conventions. It represents the + // duration of connections on the server. + // Instrument: histogram + // Unit: s + // Stability: Stable + KestrelConnectionDurationName = "kestrel.connection.duration" + KestrelConnectionDurationUnit = "s" + KestrelConnectionDurationDescription = "The duration of connections on the server." + + // KestrelRejectedConnections is the metric conforming to the + // "kestrel.rejected_connections" semantic conventions. It represents the + // number of connections rejected by the server. + // Instrument: counter + // Unit: {connection} + // Stability: Stable + KestrelRejectedConnectionsName = "kestrel.rejected_connections" + KestrelRejectedConnectionsUnit = "{connection}" + KestrelRejectedConnectionsDescription = "Number of connections rejected by the server." + + // KestrelQueuedConnections is the metric conforming to the + // "kestrel.queued_connections" semantic conventions. It represents the number + // of connections that are currently queued and are waiting to start. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Stable + KestrelQueuedConnectionsName = "kestrel.queued_connections" + KestrelQueuedConnectionsUnit = "{connection}" + KestrelQueuedConnectionsDescription = "Number of connections that are currently queued and are waiting to start." + + // KestrelQueuedRequests is the metric conforming to the + // "kestrel.queued_requests" semantic conventions. It represents the number of + // HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are + // currently queued and are waiting to start. + // Instrument: updowncounter + // Unit: {request} + // Stability: Stable + KestrelQueuedRequestsName = "kestrel.queued_requests" + KestrelQueuedRequestsUnit = "{request}" + KestrelQueuedRequestsDescription = "Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start." + + // KestrelUpgradedConnections is the metric conforming to the + // "kestrel.upgraded_connections" semantic conventions. It represents the + // number of connections that are currently upgraded (WebSockets). . + // Instrument: updowncounter + // Unit: {connection} + // Stability: Stable + KestrelUpgradedConnectionsName = "kestrel.upgraded_connections" + KestrelUpgradedConnectionsUnit = "{connection}" + KestrelUpgradedConnectionsDescription = "Number of connections that are currently upgraded (WebSockets). ." + + // KestrelTLSHandshakeDuration is the metric conforming to the + // "kestrel.tls_handshake.duration" semantic conventions. It represents the + // duration of TLS handshakes on the server. + // Instrument: histogram + // Unit: s + // Stability: Stable + KestrelTLSHandshakeDurationName = "kestrel.tls_handshake.duration" + KestrelTLSHandshakeDurationUnit = "s" + KestrelTLSHandshakeDurationDescription = "The duration of TLS handshakes on the server." + + // KestrelActiveTLSHandshakes is the metric conforming to the + // "kestrel.active_tls_handshakes" semantic conventions. It represents the + // number of TLS handshakes that are currently in progress on the server. + // Instrument: updowncounter + // Unit: {handshake} + // Stability: Stable + KestrelActiveTLSHandshakesName = "kestrel.active_tls_handshakes" + KestrelActiveTLSHandshakesUnit = "{handshake}" + KestrelActiveTLSHandshakesDescription = "Number of TLS handshakes that are currently in progress on the server." + + // SignalrServerConnectionDuration is the metric conforming to the + // "signalr.server.connection.duration" semantic conventions. It represents the + // duration of connections on the server. + // Instrument: histogram + // Unit: s + // Stability: Stable + SignalrServerConnectionDurationName = "signalr.server.connection.duration" + SignalrServerConnectionDurationUnit = "s" + SignalrServerConnectionDurationDescription = "The duration of connections on the server." + + // SignalrServerActiveConnections is the metric conforming to the + // "signalr.server.active_connections" semantic conventions. It represents the + // number of connections that are currently active on the server. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Stable + SignalrServerActiveConnectionsName = "signalr.server.active_connections" + SignalrServerActiveConnectionsUnit = "{connection}" + SignalrServerActiveConnectionsDescription = "Number of connections that are currently active on the server." + + // FaaSInvokeDuration is the metric conforming to the "faas.invoke_duration" + // semantic conventions. It represents the measures the duration of the + // function's logic execution. + // Instrument: histogram + // Unit: s + // Stability: Experimental + FaaSInvokeDurationName = "faas.invoke_duration" + FaaSInvokeDurationUnit = "s" + FaaSInvokeDurationDescription = "Measures the duration of the function's logic execution" + + // FaaSInitDuration is the metric conforming to the "faas.init_duration" + // semantic conventions. It represents the measures the duration of the + // function's initialization, such as a cold start. + // Instrument: histogram + // Unit: s + // Stability: Experimental + FaaSInitDurationName = "faas.init_duration" + FaaSInitDurationUnit = "s" + FaaSInitDurationDescription = "Measures the duration of the function's initialization, such as a cold start" + + // FaaSColdstarts is the metric conforming to the "faas.coldstarts" semantic + // conventions. It represents the number of invocation cold starts. + // Instrument: counter + // Unit: {coldstart} + // Stability: Experimental + FaaSColdstartsName = "faas.coldstarts" + FaaSColdstartsUnit = "{coldstart}" + FaaSColdstartsDescription = "Number of invocation cold starts" + + // FaaSErrors is the metric conforming to the "faas.errors" semantic + // conventions. It represents the number of invocation errors. + // Instrument: counter + // Unit: {error} + // Stability: Experimental + FaaSErrorsName = "faas.errors" + FaaSErrorsUnit = "{error}" + FaaSErrorsDescription = "Number of invocation errors" + + // FaaSInvocations is the metric conforming to the "faas.invocations" semantic + // conventions. It represents the number of successful invocations. + // Instrument: counter + // Unit: {invocation} + // Stability: Experimental + FaaSInvocationsName = "faas.invocations" + FaaSInvocationsUnit = "{invocation}" + FaaSInvocationsDescription = "Number of successful invocations" + + // FaaSTimeouts is the metric conforming to the "faas.timeouts" semantic + // conventions. It represents the number of invocation timeouts. + // Instrument: counter + // Unit: {timeout} + // Stability: Experimental + FaaSTimeoutsName = "faas.timeouts" + FaaSTimeoutsUnit = "{timeout}" + FaaSTimeoutsDescription = "Number of invocation timeouts" + + // FaaSMemUsage is the metric conforming to the "faas.mem_usage" semantic + // conventions. It represents the distribution of max memory usage per + // invocation. + // Instrument: histogram + // Unit: By + // Stability: Experimental + FaaSMemUsageName = "faas.mem_usage" + FaaSMemUsageUnit = "By" + FaaSMemUsageDescription = "Distribution of max memory usage per invocation" + + // FaaSCPUUsage is the metric conforming to the "faas.cpu_usage" semantic + // conventions. It represents the distribution of CPU usage per invocation. + // Instrument: histogram + // Unit: s + // Stability: Experimental + FaaSCPUUsageName = "faas.cpu_usage" + FaaSCPUUsageUnit = "s" + FaaSCPUUsageDescription = "Distribution of CPU usage per invocation" + + // FaaSNetIo is the metric conforming to the "faas.net_io" semantic + // conventions. It represents the distribution of net I/O usage per invocation. + // Instrument: histogram + // Unit: By + // Stability: Experimental + FaaSNetIoName = "faas.net_io" + FaaSNetIoUnit = "By" + FaaSNetIoDescription = "Distribution of net I/O usage per invocation" + + // HTTPServerRequestDuration is the metric conforming to the + // "http.server.request.duration" semantic conventions. It represents the + // duration of HTTP server requests. + // Instrument: histogram + // Unit: s + // Stability: Stable + HTTPServerRequestDurationName = "http.server.request.duration" + HTTPServerRequestDurationUnit = "s" + HTTPServerRequestDurationDescription = "Duration of HTTP server requests." + + // HTTPServerActiveRequests is the metric conforming to the + // "http.server.active_requests" semantic conventions. It represents the number + // of active HTTP server requests. + // Instrument: updowncounter + // Unit: {request} + // Stability: Experimental + HTTPServerActiveRequestsName = "http.server.active_requests" + HTTPServerActiveRequestsUnit = "{request}" + HTTPServerActiveRequestsDescription = "Number of active HTTP server requests." + + // HTTPServerRequestBodySize is the metric conforming to the + // "http.server.request.body.size" semantic conventions. It represents the size + // of HTTP server request bodies. + // Instrument: histogram + // Unit: By + // Stability: Experimental + HTTPServerRequestBodySizeName = "http.server.request.body.size" + HTTPServerRequestBodySizeUnit = "By" + HTTPServerRequestBodySizeDescription = "Size of HTTP server request bodies." + + // HTTPServerResponseBodySize is the metric conforming to the + // "http.server.response.body.size" semantic conventions. It represents the + // size of HTTP server response bodies. + // Instrument: histogram + // Unit: By + // Stability: Experimental + HTTPServerResponseBodySizeName = "http.server.response.body.size" + HTTPServerResponseBodySizeUnit = "By" + HTTPServerResponseBodySizeDescription = "Size of HTTP server response bodies." + + // HTTPClientRequestDuration is the metric conforming to the + // "http.client.request.duration" semantic conventions. It represents the + // duration of HTTP client requests. + // Instrument: histogram + // Unit: s + // Stability: Stable + HTTPClientRequestDurationName = "http.client.request.duration" + HTTPClientRequestDurationUnit = "s" + HTTPClientRequestDurationDescription = "Duration of HTTP client requests." + + // HTTPClientRequestBodySize is the metric conforming to the + // "http.client.request.body.size" semantic conventions. It represents the size + // of HTTP client request bodies. + // Instrument: histogram + // Unit: By + // Stability: Experimental + HTTPClientRequestBodySizeName = "http.client.request.body.size" + HTTPClientRequestBodySizeUnit = "By" + HTTPClientRequestBodySizeDescription = "Size of HTTP client request bodies." + + // HTTPClientResponseBodySize is the metric conforming to the + // "http.client.response.body.size" semantic conventions. It represents the + // size of HTTP client response bodies. + // Instrument: histogram + // Unit: By + // Stability: Experimental + HTTPClientResponseBodySizeName = "http.client.response.body.size" + HTTPClientResponseBodySizeUnit = "By" + HTTPClientResponseBodySizeDescription = "Size of HTTP client response bodies." + + // HTTPClientOpenConnections is the metric conforming to the + // "http.client.open_connections" semantic conventions. It represents the + // number of outbound HTTP connections that are currently active or idle on the + // client. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Experimental + HTTPClientOpenConnectionsName = "http.client.open_connections" + HTTPClientOpenConnectionsUnit = "{connection}" + HTTPClientOpenConnectionsDescription = "Number of outbound HTTP connections that are currently active or idle on the client." + + // HTTPClientConnectionDuration is the metric conforming to the + // "http.client.connection.duration" semantic conventions. It represents the + // duration of the successfully established outbound HTTP connections. + // Instrument: histogram + // Unit: s + // Stability: Experimental + HTTPClientConnectionDurationName = "http.client.connection.duration" + HTTPClientConnectionDurationUnit = "s" + HTTPClientConnectionDurationDescription = "The duration of the successfully established outbound HTTP connections." + + // HTTPClientActiveRequests is the metric conforming to the + // "http.client.active_requests" semantic conventions. It represents the number + // of active HTTP requests. + // Instrument: updowncounter + // Unit: {request} + // Stability: Experimental + HTTPClientActiveRequestsName = "http.client.active_requests" + HTTPClientActiveRequestsUnit = "{request}" + HTTPClientActiveRequestsDescription = "Number of active HTTP requests." + + // JvmMemoryInit is the metric conforming to the "jvm.memory.init" semantic + // conventions. It represents the measure of initial memory requested. + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + JvmMemoryInitName = "jvm.memory.init" + JvmMemoryInitUnit = "By" + JvmMemoryInitDescription = "Measure of initial memory requested." + + // JvmSystemCPUUtilization is the metric conforming to the + // "jvm.system.cpu.utilization" semantic conventions. It represents the recent + // CPU utilization for the whole system as reported by the JVM. + // Instrument: gauge + // Unit: 1 + // Stability: Experimental + JvmSystemCPUUtilizationName = "jvm.system.cpu.utilization" + JvmSystemCPUUtilizationUnit = "1" + JvmSystemCPUUtilizationDescription = "Recent CPU utilization for the whole system as reported by the JVM." + + // JvmSystemCPULoad1m is the metric conforming to the "jvm.system.cpu.load_1m" + // semantic conventions. It represents the average CPU load of the whole system + // for the last minute as reported by the JVM. + // Instrument: gauge + // Unit: {run_queue_item} + // Stability: Experimental + JvmSystemCPULoad1mName = "jvm.system.cpu.load_1m" + JvmSystemCPULoad1mUnit = "{run_queue_item}" + JvmSystemCPULoad1mDescription = "Average CPU load of the whole system for the last minute as reported by the JVM." + + // JvmBufferMemoryUsage is the metric conforming to the + // "jvm.buffer.memory.usage" semantic conventions. It represents the measure of + // memory used by buffers. + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + JvmBufferMemoryUsageName = "jvm.buffer.memory.usage" + JvmBufferMemoryUsageUnit = "By" + JvmBufferMemoryUsageDescription = "Measure of memory used by buffers." + + // JvmBufferMemoryLimit is the metric conforming to the + // "jvm.buffer.memory.limit" semantic conventions. It represents the measure of + // total memory capacity of buffers. + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + JvmBufferMemoryLimitName = "jvm.buffer.memory.limit" + JvmBufferMemoryLimitUnit = "By" + JvmBufferMemoryLimitDescription = "Measure of total memory capacity of buffers." + + // JvmBufferCount is the metric conforming to the "jvm.buffer.count" semantic + // conventions. It represents the number of buffers in the pool. + // Instrument: updowncounter + // Unit: {buffer} + // Stability: Experimental + JvmBufferCountName = "jvm.buffer.count" + JvmBufferCountUnit = "{buffer}" + JvmBufferCountDescription = "Number of buffers in the pool." + + // JvmMemoryUsed is the metric conforming to the "jvm.memory.used" semantic + // conventions. It represents the measure of memory used. + // Instrument: updowncounter + // Unit: By + // Stability: Stable + JvmMemoryUsedName = "jvm.memory.used" + JvmMemoryUsedUnit = "By" + JvmMemoryUsedDescription = "Measure of memory used." + + // JvmMemoryCommitted is the metric conforming to the "jvm.memory.committed" + // semantic conventions. It represents the measure of memory committed. + // Instrument: updowncounter + // Unit: By + // Stability: Stable + JvmMemoryCommittedName = "jvm.memory.committed" + JvmMemoryCommittedUnit = "By" + JvmMemoryCommittedDescription = "Measure of memory committed." + + // JvmMemoryLimit is the metric conforming to the "jvm.memory.limit" semantic + // conventions. It represents the measure of max obtainable memory. + // Instrument: updowncounter + // Unit: By + // Stability: Stable + JvmMemoryLimitName = "jvm.memory.limit" + JvmMemoryLimitUnit = "By" + JvmMemoryLimitDescription = "Measure of max obtainable memory." + + // JvmMemoryUsedAfterLastGc is the metric conforming to the + // "jvm.memory.used_after_last_gc" semantic conventions. It represents the + // measure of memory used, as measured after the most recent garbage collection + // event on this pool. + // Instrument: updowncounter + // Unit: By + // Stability: Stable + JvmMemoryUsedAfterLastGcName = "jvm.memory.used_after_last_gc" + JvmMemoryUsedAfterLastGcUnit = "By" + JvmMemoryUsedAfterLastGcDescription = "Measure of memory used, as measured after the most recent garbage collection event on this pool." + + // JvmGcDuration is the metric conforming to the "jvm.gc.duration" semantic + // conventions. It represents the duration of JVM garbage collection actions. + // Instrument: histogram + // Unit: s + // Stability: Stable + JvmGcDurationName = "jvm.gc.duration" + JvmGcDurationUnit = "s" + JvmGcDurationDescription = "Duration of JVM garbage collection actions." + + // JvmThreadCount is the metric conforming to the "jvm.thread.count" semantic + // conventions. It represents the number of executing platform threads. + // Instrument: updowncounter + // Unit: {thread} + // Stability: Stable + JvmThreadCountName = "jvm.thread.count" + JvmThreadCountUnit = "{thread}" + JvmThreadCountDescription = "Number of executing platform threads." + + // JvmClassLoaded is the metric conforming to the "jvm.class.loaded" semantic + // conventions. It represents the number of classes loaded since JVM start. + // Instrument: counter + // Unit: {class} + // Stability: Stable + JvmClassLoadedName = "jvm.class.loaded" + JvmClassLoadedUnit = "{class}" + JvmClassLoadedDescription = "Number of classes loaded since JVM start." + + // JvmClassUnloaded is the metric conforming to the "jvm.class.unloaded" + // semantic conventions. It represents the number of classes unloaded since JVM + // start. + // Instrument: counter + // Unit: {class} + // Stability: Stable + JvmClassUnloadedName = "jvm.class.unloaded" + JvmClassUnloadedUnit = "{class}" + JvmClassUnloadedDescription = "Number of classes unloaded since JVM start." + + // JvmClassCount is the metric conforming to the "jvm.class.count" semantic + // conventions. It represents the number of classes currently loaded. + // Instrument: updowncounter + // Unit: {class} + // Stability: Stable + JvmClassCountName = "jvm.class.count" + JvmClassCountUnit = "{class}" + JvmClassCountDescription = "Number of classes currently loaded." + + // JvmCPUCount is the metric conforming to the "jvm.cpu.count" semantic + // conventions. It represents the number of processors available to the Java + // virtual machine. + // Instrument: updowncounter + // Unit: {cpu} + // Stability: Stable + JvmCPUCountName = "jvm.cpu.count" + JvmCPUCountUnit = "{cpu}" + JvmCPUCountDescription = "Number of processors available to the Java virtual machine." + + // JvmCPUTime is the metric conforming to the "jvm.cpu.time" semantic + // conventions. It represents the cPU time used by the process as reported by + // the JVM. + // Instrument: counter + // Unit: s + // Stability: Stable + JvmCPUTimeName = "jvm.cpu.time" + JvmCPUTimeUnit = "s" + JvmCPUTimeDescription = "CPU time used by the process as reported by the JVM." + + // JvmCPURecentUtilization is the metric conforming to the + // "jvm.cpu.recent_utilization" semantic conventions. It represents the recent + // CPU utilization for the process as reported by the JVM. + // Instrument: gauge + // Unit: 1 + // Stability: Stable + JvmCPURecentUtilizationName = "jvm.cpu.recent_utilization" + JvmCPURecentUtilizationUnit = "1" + JvmCPURecentUtilizationDescription = "Recent CPU utilization for the process as reported by the JVM." + + // MessagingPublishDuration is the metric conforming to the + // "messaging.publish.duration" semantic conventions. It represents the + // measures the duration of publish operation. + // Instrument: histogram + // Unit: s + // Stability: Experimental + MessagingPublishDurationName = "messaging.publish.duration" + MessagingPublishDurationUnit = "s" + MessagingPublishDurationDescription = "Measures the duration of publish operation." + + // MessagingReceiveDuration is the metric conforming to the + // "messaging.receive.duration" semantic conventions. It represents the + // measures the duration of receive operation. + // Instrument: histogram + // Unit: s + // Stability: Experimental + MessagingReceiveDurationName = "messaging.receive.duration" + MessagingReceiveDurationUnit = "s" + MessagingReceiveDurationDescription = "Measures the duration of receive operation." + + // MessagingProcessDuration is the metric conforming to the + // "messaging.process.duration" semantic conventions. It represents the + // measures the duration of process operation. + // Instrument: histogram + // Unit: s + // Stability: Experimental + MessagingProcessDurationName = "messaging.process.duration" + MessagingProcessDurationUnit = "s" + MessagingProcessDurationDescription = "Measures the duration of process operation." + + // MessagingPublishMessages is the metric conforming to the + // "messaging.publish.messages" semantic conventions. It represents the + // measures the number of published messages. + // Instrument: counter + // Unit: {message} + // Stability: Experimental + MessagingPublishMessagesName = "messaging.publish.messages" + MessagingPublishMessagesUnit = "{message}" + MessagingPublishMessagesDescription = "Measures the number of published messages." + + // MessagingReceiveMessages is the metric conforming to the + // "messaging.receive.messages" semantic conventions. It represents the + // measures the number of received messages. + // Instrument: counter + // Unit: {message} + // Stability: Experimental + MessagingReceiveMessagesName = "messaging.receive.messages" + MessagingReceiveMessagesUnit = "{message}" + MessagingReceiveMessagesDescription = "Measures the number of received messages." + + // MessagingProcessMessages is the metric conforming to the + // "messaging.process.messages" semantic conventions. It represents the + // measures the number of processed messages. + // Instrument: counter + // Unit: {message} + // Stability: Experimental + MessagingProcessMessagesName = "messaging.process.messages" + MessagingProcessMessagesUnit = "{message}" + MessagingProcessMessagesDescription = "Measures the number of processed messages." + + // ProcessCPUTime is the metric conforming to the "process.cpu.time" semantic + // conventions. It represents the total CPU seconds broken down by different + // states. + // Instrument: counter + // Unit: s + // Stability: Experimental + ProcessCPUTimeName = "process.cpu.time" + ProcessCPUTimeUnit = "s" + ProcessCPUTimeDescription = "Total CPU seconds broken down by different states." + + // ProcessCPUUtilization is the metric conforming to the + // "process.cpu.utilization" semantic conventions. It represents the difference + // in process.cpu.time since the last measurement, divided by the elapsed time + // and number of CPUs available to the process. + // Instrument: gauge + // Unit: 1 + // Stability: Experimental + ProcessCPUUtilizationName = "process.cpu.utilization" + ProcessCPUUtilizationUnit = "1" + ProcessCPUUtilizationDescription = "Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process." + + // ProcessMemoryUsage is the metric conforming to the "process.memory.usage" + // semantic conventions. It represents the amount of physical memory in use. + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + ProcessMemoryUsageName = "process.memory.usage" + ProcessMemoryUsageUnit = "By" + ProcessMemoryUsageDescription = "The amount of physical memory in use." + + // ProcessMemoryVirtual is the metric conforming to the + // "process.memory.virtual" semantic conventions. It represents the amount of + // committed virtual memory. + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + ProcessMemoryVirtualName = "process.memory.virtual" + ProcessMemoryVirtualUnit = "By" + ProcessMemoryVirtualDescription = "The amount of committed virtual memory." + + // ProcessDiskIo is the metric conforming to the "process.disk.io" semantic + // conventions. It represents the disk bytes transferred. + // Instrument: counter + // Unit: By + // Stability: Experimental + ProcessDiskIoName = "process.disk.io" + ProcessDiskIoUnit = "By" + ProcessDiskIoDescription = "Disk bytes transferred." + + // ProcessNetworkIo is the metric conforming to the "process.network.io" + // semantic conventions. It represents the network bytes transferred. + // Instrument: counter + // Unit: By + // Stability: Experimental + ProcessNetworkIoName = "process.network.io" + ProcessNetworkIoUnit = "By" + ProcessNetworkIoDescription = "Network bytes transferred." + + // ProcessThreadCount is the metric conforming to the "process.thread.count" + // semantic conventions. It represents the process threads count. + // Instrument: updowncounter + // Unit: {thread} + // Stability: Experimental + ProcessThreadCountName = "process.thread.count" + ProcessThreadCountUnit = "{thread}" + ProcessThreadCountDescription = "Process threads count." + + // ProcessOpenFileDescriptorCount is the metric conforming to the + // "process.open_file_descriptor.count" semantic conventions. It represents the + // number of file descriptors in use by the process. + // Instrument: updowncounter + // Unit: {count} + // Stability: Experimental + ProcessOpenFileDescriptorCountName = "process.open_file_descriptor.count" + ProcessOpenFileDescriptorCountUnit = "{count}" + ProcessOpenFileDescriptorCountDescription = "Number of file descriptors in use by the process." + + // ProcessContextSwitches is the metric conforming to the + // "process.context_switches" semantic conventions. It represents the number of + // times the process has been context switched. + // Instrument: counter + // Unit: {count} + // Stability: Experimental + ProcessContextSwitchesName = "process.context_switches" + ProcessContextSwitchesUnit = "{count}" + ProcessContextSwitchesDescription = "Number of times the process has been context switched." + + // ProcessPagingFaults is the metric conforming to the "process.paging.faults" + // semantic conventions. It represents the number of page faults the process + // has made. + // Instrument: counter + // Unit: {fault} + // Stability: Experimental + ProcessPagingFaultsName = "process.paging.faults" + ProcessPagingFaultsUnit = "{fault}" + ProcessPagingFaultsDescription = "Number of page faults the process has made." + + // RPCServerDuration is the metric conforming to the "rpc.server.duration" + // semantic conventions. It represents the measures the duration of inbound + // RPC. + // Instrument: histogram + // Unit: ms + // Stability: Experimental + RPCServerDurationName = "rpc.server.duration" + RPCServerDurationUnit = "ms" + RPCServerDurationDescription = "Measures the duration of inbound RPC." + + // RPCServerRequestSize is the metric conforming to the + // "rpc.server.request.size" semantic conventions. It represents the measures + // the size of RPC request messages (uncompressed). + // Instrument: histogram + // Unit: By + // Stability: Experimental + RPCServerRequestSizeName = "rpc.server.request.size" + RPCServerRequestSizeUnit = "By" + RPCServerRequestSizeDescription = "Measures the size of RPC request messages (uncompressed)." + + // RPCServerResponseSize is the metric conforming to the + // "rpc.server.response.size" semantic conventions. It represents the measures + // the size of RPC response messages (uncompressed). + // Instrument: histogram + // Unit: By + // Stability: Experimental + RPCServerResponseSizeName = "rpc.server.response.size" + RPCServerResponseSizeUnit = "By" + RPCServerResponseSizeDescription = "Measures the size of RPC response messages (uncompressed)." + + // RPCServerRequestsPerRPC is the metric conforming to the + // "rpc.server.requests_per_rpc" semantic conventions. It represents the + // measures the number of messages received per RPC. + // Instrument: histogram + // Unit: {count} + // Stability: Experimental + RPCServerRequestsPerRPCName = "rpc.server.requests_per_rpc" + RPCServerRequestsPerRPCUnit = "{count}" + RPCServerRequestsPerRPCDescription = "Measures the number of messages received per RPC." + + // RPCServerResponsesPerRPC is the metric conforming to the + // "rpc.server.responses_per_rpc" semantic conventions. It represents the + // measures the number of messages sent per RPC. + // Instrument: histogram + // Unit: {count} + // Stability: Experimental + RPCServerResponsesPerRPCName = "rpc.server.responses_per_rpc" + RPCServerResponsesPerRPCUnit = "{count}" + RPCServerResponsesPerRPCDescription = "Measures the number of messages sent per RPC." + + // RPCClientDuration is the metric conforming to the "rpc.client.duration" + // semantic conventions. It represents the measures the duration of outbound + // RPC. + // Instrument: histogram + // Unit: ms + // Stability: Experimental + RPCClientDurationName = "rpc.client.duration" + RPCClientDurationUnit = "ms" + RPCClientDurationDescription = "Measures the duration of outbound RPC." + + // RPCClientRequestSize is the metric conforming to the + // "rpc.client.request.size" semantic conventions. It represents the measures + // the size of RPC request messages (uncompressed). + // Instrument: histogram + // Unit: By + // Stability: Experimental + RPCClientRequestSizeName = "rpc.client.request.size" + RPCClientRequestSizeUnit = "By" + RPCClientRequestSizeDescription = "Measures the size of RPC request messages (uncompressed)." + + // RPCClientResponseSize is the metric conforming to the + // "rpc.client.response.size" semantic conventions. It represents the measures + // the size of RPC response messages (uncompressed). + // Instrument: histogram + // Unit: By + // Stability: Experimental + RPCClientResponseSizeName = "rpc.client.response.size" + RPCClientResponseSizeUnit = "By" + RPCClientResponseSizeDescription = "Measures the size of RPC response messages (uncompressed)." + + // RPCClientRequestsPerRPC is the metric conforming to the + // "rpc.client.requests_per_rpc" semantic conventions. It represents the + // measures the number of messages received per RPC. + // Instrument: histogram + // Unit: {count} + // Stability: Experimental + RPCClientRequestsPerRPCName = "rpc.client.requests_per_rpc" + RPCClientRequestsPerRPCUnit = "{count}" + RPCClientRequestsPerRPCDescription = "Measures the number of messages received per RPC." + + // RPCClientResponsesPerRPC is the metric conforming to the + // "rpc.client.responses_per_rpc" semantic conventions. It represents the + // measures the number of messages sent per RPC. + // Instrument: histogram + // Unit: {count} + // Stability: Experimental + RPCClientResponsesPerRPCName = "rpc.client.responses_per_rpc" + RPCClientResponsesPerRPCUnit = "{count}" + RPCClientResponsesPerRPCDescription = "Measures the number of messages sent per RPC." + + // SystemCPUTime is the metric conforming to the "system.cpu.time" semantic + // conventions. It represents the seconds each logical CPU spent on each mode. + // Instrument: counter + // Unit: s + // Stability: Experimental + SystemCPUTimeName = "system.cpu.time" + SystemCPUTimeUnit = "s" + SystemCPUTimeDescription = "Seconds each logical CPU spent on each mode" + + // SystemCPUUtilization is the metric conforming to the + // "system.cpu.utilization" semantic conventions. It represents the difference + // in system.cpu.time since the last measurement, divided by the elapsed time + // and number of logical CPUs. + // Instrument: gauge + // Unit: 1 + // Stability: Experimental + SystemCPUUtilizationName = "system.cpu.utilization" + SystemCPUUtilizationUnit = "1" + SystemCPUUtilizationDescription = "Difference in system.cpu.time since the last measurement, divided by the elapsed time and number of logical CPUs" + + // SystemCPUFrequency is the metric conforming to the "system.cpu.frequency" + // semantic conventions. It represents the reports the current frequency of the + // CPU in Hz. + // Instrument: gauge + // Unit: {Hz} + // Stability: Experimental + SystemCPUFrequencyName = "system.cpu.frequency" + SystemCPUFrequencyUnit = "{Hz}" + SystemCPUFrequencyDescription = "Reports the current frequency of the CPU in Hz" + + // SystemCPUPhysicalCount is the metric conforming to the + // "system.cpu.physical.count" semantic conventions. It represents the reports + // the number of actual physical processor cores on the hardware. + // Instrument: updowncounter + // Unit: {cpu} + // Stability: Experimental + SystemCPUPhysicalCountName = "system.cpu.physical.count" + SystemCPUPhysicalCountUnit = "{cpu}" + SystemCPUPhysicalCountDescription = "Reports the number of actual physical processor cores on the hardware" + + // SystemCPULogicalCount is the metric conforming to the + // "system.cpu.logical.count" semantic conventions. It represents the reports + // the number of logical (virtual) processor cores created by the operating + // system to manage multitasking. + // Instrument: updowncounter + // Unit: {cpu} + // Stability: Experimental + SystemCPULogicalCountName = "system.cpu.logical.count" + SystemCPULogicalCountUnit = "{cpu}" + SystemCPULogicalCountDescription = "Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking" + + // SystemMemoryUsage is the metric conforming to the "system.memory.usage" + // semantic conventions. It represents the reports memory in use by state. + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + SystemMemoryUsageName = "system.memory.usage" + SystemMemoryUsageUnit = "By" + SystemMemoryUsageDescription = "Reports memory in use by state." + + // SystemMemoryLimit is the metric conforming to the "system.memory.limit" + // semantic conventions. It represents the total memory available in the + // system. + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + SystemMemoryLimitName = "system.memory.limit" + SystemMemoryLimitUnit = "By" + SystemMemoryLimitDescription = "Total memory available in the system." + + // SystemMemoryShared is the metric conforming to the "system.memory.shared" + // semantic conventions. It represents the shared memory used (mostly by + // tmpfs). + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + SystemMemorySharedName = "system.memory.shared" + SystemMemorySharedUnit = "By" + SystemMemorySharedDescription = "Shared memory used (mostly by tmpfs)." + + // SystemMemoryUtilization is the metric conforming to the + // "system.memory.utilization" semantic conventions. + // Instrument: gauge + // Unit: 1 + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemMemoryUtilizationName = "system.memory.utilization" + SystemMemoryUtilizationUnit = "1" + + // SystemPagingUsage is the metric conforming to the "system.paging.usage" + // semantic conventions. It represents the unix swap or windows pagefile usage. + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + SystemPagingUsageName = "system.paging.usage" + SystemPagingUsageUnit = "By" + SystemPagingUsageDescription = "Unix swap or windows pagefile usage" + + // SystemPagingUtilization is the metric conforming to the + // "system.paging.utilization" semantic conventions. + // Instrument: gauge + // Unit: 1 + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemPagingUtilizationName = "system.paging.utilization" + SystemPagingUtilizationUnit = "1" + + // SystemPagingFaults is the metric conforming to the "system.paging.faults" + // semantic conventions. + // Instrument: counter + // Unit: {fault} + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemPagingFaultsName = "system.paging.faults" + SystemPagingFaultsUnit = "{fault}" + + // SystemPagingOperations is the metric conforming to the + // "system.paging.operations" semantic conventions. + // Instrument: counter + // Unit: {operation} + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemPagingOperationsName = "system.paging.operations" + SystemPagingOperationsUnit = "{operation}" + + // SystemDiskIo is the metric conforming to the "system.disk.io" semantic + // conventions. + // Instrument: counter + // Unit: By + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemDiskIoName = "system.disk.io" + SystemDiskIoUnit = "By" + + // SystemDiskOperations is the metric conforming to the + // "system.disk.operations" semantic conventions. + // Instrument: counter + // Unit: {operation} + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemDiskOperationsName = "system.disk.operations" + SystemDiskOperationsUnit = "{operation}" + + // SystemDiskIoTime is the metric conforming to the "system.disk.io_time" + // semantic conventions. It represents the time disk spent activated. + // Instrument: counter + // Unit: s + // Stability: Experimental + SystemDiskIoTimeName = "system.disk.io_time" + SystemDiskIoTimeUnit = "s" + SystemDiskIoTimeDescription = "Time disk spent activated" + + // SystemDiskOperationTime is the metric conforming to the + // "system.disk.operation_time" semantic conventions. It represents the sum of + // the time each operation took to complete. + // Instrument: counter + // Unit: s + // Stability: Experimental + SystemDiskOperationTimeName = "system.disk.operation_time" + SystemDiskOperationTimeUnit = "s" + SystemDiskOperationTimeDescription = "Sum of the time each operation took to complete" + + // SystemDiskMerged is the metric conforming to the "system.disk.merged" + // semantic conventions. + // Instrument: counter + // Unit: {operation} + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemDiskMergedName = "system.disk.merged" + SystemDiskMergedUnit = "{operation}" + + // SystemFilesystemUsage is the metric conforming to the + // "system.filesystem.usage" semantic conventions. + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemFilesystemUsageName = "system.filesystem.usage" + SystemFilesystemUsageUnit = "By" + + // SystemFilesystemUtilization is the metric conforming to the + // "system.filesystem.utilization" semantic conventions. + // Instrument: gauge + // Unit: 1 + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemFilesystemUtilizationName = "system.filesystem.utilization" + SystemFilesystemUtilizationUnit = "1" + + // SystemNetworkDropped is the metric conforming to the + // "system.network.dropped" semantic conventions. It represents the count of + // packets that are dropped or discarded even though there was no error. + // Instrument: counter + // Unit: {packet} + // Stability: Experimental + SystemNetworkDroppedName = "system.network.dropped" + SystemNetworkDroppedUnit = "{packet}" + SystemNetworkDroppedDescription = "Count of packets that are dropped or discarded even though there was no error" + + // SystemNetworkPackets is the metric conforming to the + // "system.network.packets" semantic conventions. + // Instrument: counter + // Unit: {packet} + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemNetworkPacketsName = "system.network.packets" + SystemNetworkPacketsUnit = "{packet}" + + // SystemNetworkErrors is the metric conforming to the "system.network.errors" + // semantic conventions. It represents the count of network errors detected. + // Instrument: counter + // Unit: {error} + // Stability: Experimental + SystemNetworkErrorsName = "system.network.errors" + SystemNetworkErrorsUnit = "{error}" + SystemNetworkErrorsDescription = "Count of network errors detected" + + // SystemNetworkIo is the metric conforming to the "system.network.io" semantic + // conventions. + // Instrument: counter + // Unit: By + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemNetworkIoName = "system.network.io" + SystemNetworkIoUnit = "By" + + // SystemNetworkConnections is the metric conforming to the + // "system.network.connections" semantic conventions. + // Instrument: updowncounter + // Unit: {connection} + // Stability: Experimental + // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository. + SystemNetworkConnectionsName = "system.network.connections" + SystemNetworkConnectionsUnit = "{connection}" + + // SystemProcessCount is the metric conforming to the "system.process.count" + // semantic conventions. It represents the total number of processes in each + // state. + // Instrument: updowncounter + // Unit: {process} + // Stability: Experimental + SystemProcessCountName = "system.process.count" + SystemProcessCountUnit = "{process}" + SystemProcessCountDescription = "Total number of processes in each state" + + // SystemProcessCreated is the metric conforming to the + // "system.process.created" semantic conventions. It represents the total + // number of processes created over uptime of the host. + // Instrument: counter + // Unit: {process} + // Stability: Experimental + SystemProcessCreatedName = "system.process.created" + SystemProcessCreatedUnit = "{process}" + SystemProcessCreatedDescription = "Total number of processes created over uptime of the host" + + // SystemLinuxMemoryAvailable is the metric conforming to the + // "system.linux.memory.available" semantic conventions. It represents an + // estimate of how much memory is available for starting new applications, + // without causing swapping. + // Instrument: updowncounter + // Unit: By + // Stability: Experimental + SystemLinuxMemoryAvailableName = "system.linux.memory.available" + SystemLinuxMemoryAvailableUnit = "By" + SystemLinuxMemoryAvailableDescription = "An estimate of how much memory is available for starting new applications, without causing swapping" +) diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/schema.go b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/schema.go new file mode 100644 index 000000000000..4c87c7adcc75 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/schema.go @@ -0,0 +1,9 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package semconv // import "go.opentelemetry.io/otel/semconv/v1.26.0" + +// SchemaURL is the schema URL that matches the version of the semantic conventions +// that this package defines. Semconv packages starting from v1.4.0 must declare +// non-empty schema URL in the form https://opentelemetry.io/schemas/ +const SchemaURL = "https://opentelemetry.io/schemas/1.26.0" diff --git a/vendor/go.opentelemetry.io/otel/trace.go b/vendor/go.opentelemetry.io/otel/trace.go index caf7249de859..6836c65478b4 100644 --- a/vendor/go.opentelemetry.io/otel/trace.go +++ b/vendor/go.opentelemetry.io/otel/trace.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otel // import "go.opentelemetry.io/otel" diff --git a/vendor/go.opentelemetry.io/otel/trace/README.md b/vendor/go.opentelemetry.io/otel/trace/README.md new file mode 100644 index 000000000000..58ccaba69b1e --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/trace/README.md @@ -0,0 +1,3 @@ +# Trace API + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/trace)](https://pkg.go.dev/go.opentelemetry.io/otel/trace) diff --git a/vendor/go.opentelemetry.io/otel/trace/config.go b/vendor/go.opentelemetry.io/otel/trace/config.go index 3aadc66cf7a7..9c0b720a4d63 100644 --- a/vendor/go.opentelemetry.io/otel/trace/config.go +++ b/vendor/go.opentelemetry.io/otel/trace/config.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package trace // import "go.opentelemetry.io/otel/trace" @@ -224,7 +213,7 @@ var _ SpanStartEventOption = attributeOption{} // WithAttributes adds the attributes related to a span life-cycle event. // These attributes are used to describe the work a Span represents when this -// option is provided to a Span's start or end events. Otherwise, these +// option is provided to a Span's start event. Otherwise, these // attributes provide additional information about the event being recorded // (e.g. error, state change, processing progress, system event). // diff --git a/vendor/go.opentelemetry.io/otel/trace/context.go b/vendor/go.opentelemetry.io/otel/trace/context.go index 76f9a083c409..8c45a7107ff9 100644 --- a/vendor/go.opentelemetry.io/otel/trace/context.go +++ b/vendor/go.opentelemetry.io/otel/trace/context.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package trace // import "go.opentelemetry.io/otel/trace" @@ -33,7 +22,7 @@ func ContextWithSpanContext(parent context.Context, sc SpanContext) context.Cont return ContextWithSpan(parent, nonRecordingSpan{sc: sc}) } -// ContextWithRemoteSpanContext returns a copy of parent with rsc set explicly +// ContextWithRemoteSpanContext returns a copy of parent with rsc set explicitly // as a remote SpanContext and as the current Span. The Span implementation // that wraps rsc is non-recording and performs no operations other than to // return rsc as the SpanContext from the SpanContext method. @@ -47,12 +36,12 @@ func ContextWithRemoteSpanContext(parent context.Context, rsc SpanContext) conte // performs no operations is returned. func SpanFromContext(ctx context.Context) Span { if ctx == nil { - return noopSpan{} + return noopSpanInstance } if span, ok := ctx.Value(currentSpanKey).(Span); ok { return span } - return noopSpan{} + return noopSpanInstance } // SpanContextFromContext returns the current Span's SpanContext. diff --git a/vendor/go.opentelemetry.io/otel/trace/doc.go b/vendor/go.opentelemetry.io/otel/trace/doc.go index 440f3d7565a1..cdbf41d6d7f2 100644 --- a/vendor/go.opentelemetry.io/otel/trace/doc.go +++ b/vendor/go.opentelemetry.io/otel/trace/doc.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 /* Package trace provides an implementation of the tracing part of the @@ -107,7 +96,7 @@ can embed the API interface directly. This option is not recommended. It will lead to publishing packages that contain runtime panics when users update to newer versions of -[go.opentelemetry.io/otel/trace], which may be done with a trasitive +[go.opentelemetry.io/otel/trace], which may be done with a transitive dependency. Finally, an author can embed another implementation in theirs. The embedded diff --git a/vendor/go.opentelemetry.io/otel/trace/embedded/README.md b/vendor/go.opentelemetry.io/otel/trace/embedded/README.md new file mode 100644 index 000000000000..7754a239ee61 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/trace/embedded/README.md @@ -0,0 +1,3 @@ +# Trace Embedded + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/trace/embedded)](https://pkg.go.dev/go.opentelemetry.io/otel/trace/embedded) diff --git a/vendor/go.opentelemetry.io/otel/trace/embedded/embedded.go b/vendor/go.opentelemetry.io/otel/trace/embedded/embedded.go index 898db5a7546e..3e359a00bf47 100644 --- a/vendor/go.opentelemetry.io/otel/trace/embedded/embedded.go +++ b/vendor/go.opentelemetry.io/otel/trace/embedded/embedded.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 // Package embedded provides interfaces embedded within the [OpenTelemetry // trace API]. diff --git a/vendor/go.opentelemetry.io/otel/trace/nonrecording.go b/vendor/go.opentelemetry.io/otel/trace/nonrecording.go index 88fcb81611f9..c00221e7be9f 100644 --- a/vendor/go.opentelemetry.io/otel/trace/nonrecording.go +++ b/vendor/go.opentelemetry.io/otel/trace/nonrecording.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package trace // import "go.opentelemetry.io/otel/trace" diff --git a/vendor/go.opentelemetry.io/otel/trace/noop.go b/vendor/go.opentelemetry.io/otel/trace/noop.go index c125491caebf..ca20e9997aba 100644 --- a/vendor/go.opentelemetry.io/otel/trace/noop.go +++ b/vendor/go.opentelemetry.io/otel/trace/noop.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package trace // import "go.opentelemetry.io/otel/trace" @@ -52,7 +41,7 @@ func (t noopTracer) Start(ctx context.Context, name string, _ ...SpanStartOption span := SpanFromContext(ctx) if _, ok := span.(nonRecordingSpan); !ok { // span is likely already a noopSpan, but let's be sure - span = noopSpan{} + span = noopSpanInstance } return ContextWithSpan(ctx, span), span } @@ -60,7 +49,7 @@ func (t noopTracer) Start(ctx context.Context, name string, _ ...SpanStartOption // noopSpan is an implementation of Span that performs no operations. type noopSpan struct{ embedded.Span } -var _ Span = noopSpan{} +var noopSpanInstance Span = noopSpan{} // SpanContext returns an empty span context. func (noopSpan) SpanContext() SpanContext { return SpanContext{} } @@ -86,6 +75,9 @@ func (noopSpan) RecordError(error, ...EventOption) {} // AddEvent does nothing. func (noopSpan) AddEvent(string, ...EventOption) {} +// AddLink does nothing. +func (noopSpan) AddLink(Link) {} + // SetName does nothing. func (noopSpan) SetName(string) {} diff --git a/vendor/go.opentelemetry.io/otel/trace/noop/README.md b/vendor/go.opentelemetry.io/otel/trace/noop/README.md new file mode 100644 index 000000000000..cd382c82a1a0 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/trace/noop/README.md @@ -0,0 +1,3 @@ +# Trace Noop + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/trace/noop)](https://pkg.go.dev/go.opentelemetry.io/otel/trace/noop) diff --git a/vendor/go.opentelemetry.io/otel/trace/noop/noop.go b/vendor/go.opentelemetry.io/otel/trace/noop/noop.go new file mode 100644 index 000000000000..64a4f1b362f6 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/trace/noop/noop.go @@ -0,0 +1,112 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Package noop provides an implementation of the OpenTelemetry trace API that +// produces no telemetry and minimizes used computation resources. +// +// Using this package to implement the OpenTelemetry trace API will effectively +// disable OpenTelemetry. +// +// This implementation can be embedded in other implementations of the +// OpenTelemetry trace API. Doing so will mean the implementation defaults to +// no operation for methods it does not implement. +package noop // import "go.opentelemetry.io/otel/trace/noop" + +import ( + "context" + + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace/embedded" +) + +var ( + // Compile-time check this implements the OpenTelemetry API. + + _ trace.TracerProvider = TracerProvider{} + _ trace.Tracer = Tracer{} + _ trace.Span = Span{} +) + +// TracerProvider is an OpenTelemetry No-Op TracerProvider. +type TracerProvider struct{ embedded.TracerProvider } + +// NewTracerProvider returns a TracerProvider that does not record any telemetry. +func NewTracerProvider() TracerProvider { + return TracerProvider{} +} + +// Tracer returns an OpenTelemetry Tracer that does not record any telemetry. +func (TracerProvider) Tracer(string, ...trace.TracerOption) trace.Tracer { + return Tracer{} +} + +// Tracer is an OpenTelemetry No-Op Tracer. +type Tracer struct{ embedded.Tracer } + +// Start creates a span. The created span will be set in a child context of ctx +// and returned with the span. +// +// If ctx contains a span context, the returned span will also contain that +// span context. If the span context in ctx is for a non-recording span, that +// span instance will be returned directly. +func (t Tracer) Start(ctx context.Context, _ string, _ ...trace.SpanStartOption) (context.Context, trace.Span) { + span := trace.SpanFromContext(ctx) + + // If the parent context contains a non-zero span context, that span + // context needs to be returned as a non-recording span + // (https://github.com/open-telemetry/opentelemetry-specification/blob/3a1dde966a4ce87cce5adf464359fe369741bbea/specification/trace/api.md#behavior-of-the-api-in-the-absence-of-an-installed-sdk). + var zeroSC trace.SpanContext + if sc := span.SpanContext(); !sc.Equal(zeroSC) { + if !span.IsRecording() { + // If the span is not recording return it directly. + return ctx, span + } + // Otherwise, return the span context needs in a non-recording span. + span = Span{sc: sc} + } else { + // No parent, return a No-Op span with an empty span context. + span = noopSpanInstance + } + return trace.ContextWithSpan(ctx, span), span +} + +var noopSpanInstance trace.Span = Span{} + +// Span is an OpenTelemetry No-Op Span. +type Span struct { + embedded.Span + + sc trace.SpanContext +} + +// SpanContext returns an empty span context. +func (s Span) SpanContext() trace.SpanContext { return s.sc } + +// IsRecording always returns false. +func (Span) IsRecording() bool { return false } + +// SetStatus does nothing. +func (Span) SetStatus(codes.Code, string) {} + +// SetAttributes does nothing. +func (Span) SetAttributes(...attribute.KeyValue) {} + +// End does nothing. +func (Span) End(...trace.SpanEndOption) {} + +// RecordError does nothing. +func (Span) RecordError(error, ...trace.EventOption) {} + +// AddEvent does nothing. +func (Span) AddEvent(string, ...trace.EventOption) {} + +// AddLink does nothing. +func (Span) AddLink(trace.Link) {} + +// SetName does nothing. +func (Span) SetName(string) {} + +// TracerProvider returns a No-Op TracerProvider. +func (Span) TracerProvider() trace.TracerProvider { return TracerProvider{} } diff --git a/vendor/go.opentelemetry.io/otel/trace/provider.go b/vendor/go.opentelemetry.io/otel/trace/provider.go new file mode 100644 index 000000000000..ef85cb70c6d8 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/trace/provider.go @@ -0,0 +1,59 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package trace // import "go.opentelemetry.io/otel/trace" + +import "go.opentelemetry.io/otel/trace/embedded" + +// TracerProvider provides Tracers that are used by instrumentation code to +// trace computational workflows. +// +// A TracerProvider is the collection destination of all Spans from Tracers it +// provides, it represents a unique telemetry collection pipeline. How that +// pipeline is defined, meaning how those Spans are collected, processed, and +// where they are exported, depends on its implementation. Instrumentation +// authors do not need to define this implementation, rather just use the +// provided Tracers to instrument code. +// +// Commonly, instrumentation code will accept a TracerProvider implementation +// at runtime from its users or it can simply use the globally registered one +// (see https://pkg.go.dev/go.opentelemetry.io/otel#GetTracerProvider). +// +// Warning: Methods may be added to this interface in minor releases. See +// package documentation on API implementation for information on how to set +// default behavior for unimplemented methods. +type TracerProvider interface { + // Users of the interface can ignore this. This embedded type is only used + // by implementations of this interface. See the "API Implementations" + // section of the package documentation for more information. + embedded.TracerProvider + + // Tracer returns a unique Tracer scoped to be used by instrumentation code + // to trace computational workflows. The scope and identity of that + // instrumentation code is uniquely defined by the name and options passed. + // + // The passed name needs to uniquely identify instrumentation code. + // Therefore, it is recommended that name is the Go package name of the + // library providing instrumentation (note: not the code being + // instrumented). Instrumentation libraries can have multiple versions, + // therefore, the WithInstrumentationVersion option should be used to + // distinguish these different codebases. Additionally, instrumentation + // libraries may sometimes use traces to communicate different domains of + // workflow data (i.e. using spans to communicate workflow events only). If + // this is the case, the WithScopeAttributes option should be used to + // uniquely identify Tracers that handle the different domains of workflow + // data. + // + // If the same name and options are passed multiple times, the same Tracer + // will be returned (it is up to the implementation if this will be the + // same underlying instance of that Tracer or not). It is not necessary to + // call this multiple times with the same name and options to get an + // up-to-date Tracer. All implementations will ensure any TracerProvider + // configuration changes are propagated to all provided Tracers. + // + // If name is empty, then an implementation defined default name will be + // used instead. + // + // This method is safe to call concurrently. + Tracer(name string, options ...TracerOption) Tracer +} diff --git a/vendor/go.opentelemetry.io/otel/trace/span.go b/vendor/go.opentelemetry.io/otel/trace/span.go new file mode 100644 index 000000000000..d3aa476ee125 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/trace/span.go @@ -0,0 +1,177 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package trace // import "go.opentelemetry.io/otel/trace" + +import ( + "context" + + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/trace/embedded" +) + +// Span is the individual component of a trace. It represents a single named +// and timed operation of a workflow that is traced. A Tracer is used to +// create a Span and it is then up to the operation the Span represents to +// properly end the Span when the operation itself ends. +// +// Warning: Methods may be added to this interface in minor releases. See +// package documentation on API implementation for information on how to set +// default behavior for unimplemented methods. +type Span interface { + // Users of the interface can ignore this. This embedded type is only used + // by implementations of this interface. See the "API Implementations" + // section of the package documentation for more information. + embedded.Span + + // End completes the Span. The Span is considered complete and ready to be + // delivered through the rest of the telemetry pipeline after this method + // is called. Therefore, updates to the Span are not allowed after this + // method has been called. + End(options ...SpanEndOption) + + // AddEvent adds an event with the provided name and options. + AddEvent(name string, options ...EventOption) + + // AddLink adds a link. + // Adding links at span creation using WithLinks is preferred to calling AddLink + // later, for contexts that are available during span creation, because head + // sampling decisions can only consider information present during span creation. + AddLink(link Link) + + // IsRecording returns the recording state of the Span. It will return + // true if the Span is active and events can be recorded. + IsRecording() bool + + // RecordError will record err as an exception span event for this span. An + // additional call to SetStatus is required if the Status of the Span should + // be set to Error, as this method does not change the Span status. If this + // span is not being recorded or err is nil then this method does nothing. + RecordError(err error, options ...EventOption) + + // SpanContext returns the SpanContext of the Span. The returned SpanContext + // is usable even after the End method has been called for the Span. + SpanContext() SpanContext + + // SetStatus sets the status of the Span in the form of a code and a + // description, provided the status hasn't already been set to a higher + // value before (OK > Error > Unset). The description is only included in a + // status when the code is for an error. + SetStatus(code codes.Code, description string) + + // SetName sets the Span name. + SetName(name string) + + // SetAttributes sets kv as attributes of the Span. If a key from kv + // already exists for an attribute of the Span it will be overwritten with + // the value contained in kv. + SetAttributes(kv ...attribute.KeyValue) + + // TracerProvider returns a TracerProvider that can be used to generate + // additional Spans on the same telemetry pipeline as the current Span. + TracerProvider() TracerProvider +} + +// Link is the relationship between two Spans. The relationship can be within +// the same Trace or across different Traces. +// +// For example, a Link is used in the following situations: +// +// 1. Batch Processing: A batch of operations may contain operations +// associated with one or more traces/spans. Since there can only be one +// parent SpanContext, a Link is used to keep reference to the +// SpanContext of all operations in the batch. +// 2. Public Endpoint: A SpanContext for an in incoming client request on a +// public endpoint should be considered untrusted. In such a case, a new +// trace with its own identity and sampling decision needs to be created, +// but this new trace needs to be related to the original trace in some +// form. A Link is used to keep reference to the original SpanContext and +// track the relationship. +type Link struct { + // SpanContext of the linked Span. + SpanContext SpanContext + + // Attributes describe the aspects of the link. + Attributes []attribute.KeyValue +} + +// LinkFromContext returns a link encapsulating the SpanContext in the provided +// ctx. +func LinkFromContext(ctx context.Context, attrs ...attribute.KeyValue) Link { + return Link{ + SpanContext: SpanContextFromContext(ctx), + Attributes: attrs, + } +} + +// SpanKind is the role a Span plays in a Trace. +type SpanKind int + +// As a convenience, these match the proto definition, see +// https://github.com/open-telemetry/opentelemetry-proto/blob/30d237e1ff3ab7aa50e0922b5bebdd93505090af/opentelemetry/proto/trace/v1/trace.proto#L101-L129 +// +// The unspecified value is not a valid `SpanKind`. Use `ValidateSpanKind()` +// to coerce a span kind to a valid value. +const ( + // SpanKindUnspecified is an unspecified SpanKind and is not a valid + // SpanKind. SpanKindUnspecified should be replaced with SpanKindInternal + // if it is received. + SpanKindUnspecified SpanKind = 0 + // SpanKindInternal is a SpanKind for a Span that represents an internal + // operation within an application. + SpanKindInternal SpanKind = 1 + // SpanKindServer is a SpanKind for a Span that represents the operation + // of handling a request from a client. + SpanKindServer SpanKind = 2 + // SpanKindClient is a SpanKind for a Span that represents the operation + // of client making a request to a server. + SpanKindClient SpanKind = 3 + // SpanKindProducer is a SpanKind for a Span that represents the operation + // of a producer sending a message to a message broker. Unlike + // SpanKindClient and SpanKindServer, there is often no direct + // relationship between this kind of Span and a SpanKindConsumer kind. A + // SpanKindProducer Span will end once the message is accepted by the + // message broker which might not overlap with the processing of that + // message. + SpanKindProducer SpanKind = 4 + // SpanKindConsumer is a SpanKind for a Span that represents the operation + // of a consumer receiving a message from a message broker. Like + // SpanKindProducer Spans, there is often no direct relationship between + // this Span and the Span that produced the message. + SpanKindConsumer SpanKind = 5 +) + +// ValidateSpanKind returns a valid span kind value. This will coerce +// invalid values into the default value, SpanKindInternal. +func ValidateSpanKind(spanKind SpanKind) SpanKind { + switch spanKind { + case SpanKindInternal, + SpanKindServer, + SpanKindClient, + SpanKindProducer, + SpanKindConsumer: + // valid + return spanKind + default: + return SpanKindInternal + } +} + +// String returns the specified name of the SpanKind in lower-case. +func (sk SpanKind) String() string { + switch sk { + case SpanKindInternal: + return "internal" + case SpanKindServer: + return "server" + case SpanKindClient: + return "client" + case SpanKindProducer: + return "producer" + case SpanKindConsumer: + return "consumer" + default: + return "unspecified" + } +} diff --git a/vendor/go.opentelemetry.io/otel/trace/trace.go b/vendor/go.opentelemetry.io/otel/trace/trace.go index 26a4b2260ec6..d49adf671b95 100644 --- a/vendor/go.opentelemetry.io/otel/trace/trace.go +++ b/vendor/go.opentelemetry.io/otel/trace/trace.go @@ -1,28 +1,12 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package trace // import "go.opentelemetry.io/otel/trace" import ( "bytes" - "context" "encoding/hex" "encoding/json" - - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/codes" - "go.opentelemetry.io/otel/trace/embedded" ) const ( @@ -337,241 +321,3 @@ func (sc SpanContext) MarshalJSON() ([]byte, error) { Remote: sc.remote, }) } - -// Span is the individual component of a trace. It represents a single named -// and timed operation of a workflow that is traced. A Tracer is used to -// create a Span and it is then up to the operation the Span represents to -// properly end the Span when the operation itself ends. -// -// Warning: Methods may be added to this interface in minor releases. See -// package documentation on API implementation for information on how to set -// default behavior for unimplemented methods. -type Span interface { - // Users of the interface can ignore this. This embedded type is only used - // by implementations of this interface. See the "API Implementations" - // section of the package documentation for more information. - embedded.Span - - // End completes the Span. The Span is considered complete and ready to be - // delivered through the rest of the telemetry pipeline after this method - // is called. Therefore, updates to the Span are not allowed after this - // method has been called. - End(options ...SpanEndOption) - - // AddEvent adds an event with the provided name and options. - AddEvent(name string, options ...EventOption) - - // IsRecording returns the recording state of the Span. It will return - // true if the Span is active and events can be recorded. - IsRecording() bool - - // RecordError will record err as an exception span event for this span. An - // additional call to SetStatus is required if the Status of the Span should - // be set to Error, as this method does not change the Span status. If this - // span is not being recorded or err is nil then this method does nothing. - RecordError(err error, options ...EventOption) - - // SpanContext returns the SpanContext of the Span. The returned SpanContext - // is usable even after the End method has been called for the Span. - SpanContext() SpanContext - - // SetStatus sets the status of the Span in the form of a code and a - // description, provided the status hasn't already been set to a higher - // value before (OK > Error > Unset). The description is only included in a - // status when the code is for an error. - SetStatus(code codes.Code, description string) - - // SetName sets the Span name. - SetName(name string) - - // SetAttributes sets kv as attributes of the Span. If a key from kv - // already exists for an attribute of the Span it will be overwritten with - // the value contained in kv. - SetAttributes(kv ...attribute.KeyValue) - - // TracerProvider returns a TracerProvider that can be used to generate - // additional Spans on the same telemetry pipeline as the current Span. - TracerProvider() TracerProvider -} - -// Link is the relationship between two Spans. The relationship can be within -// the same Trace or across different Traces. -// -// For example, a Link is used in the following situations: -// -// 1. Batch Processing: A batch of operations may contain operations -// associated with one or more traces/spans. Since there can only be one -// parent SpanContext, a Link is used to keep reference to the -// SpanContext of all operations in the batch. -// 2. Public Endpoint: A SpanContext for an in incoming client request on a -// public endpoint should be considered untrusted. In such a case, a new -// trace with its own identity and sampling decision needs to be created, -// but this new trace needs to be related to the original trace in some -// form. A Link is used to keep reference to the original SpanContext and -// track the relationship. -type Link struct { - // SpanContext of the linked Span. - SpanContext SpanContext - - // Attributes describe the aspects of the link. - Attributes []attribute.KeyValue -} - -// LinkFromContext returns a link encapsulating the SpanContext in the provided ctx. -func LinkFromContext(ctx context.Context, attrs ...attribute.KeyValue) Link { - return Link{ - SpanContext: SpanContextFromContext(ctx), - Attributes: attrs, - } -} - -// SpanKind is the role a Span plays in a Trace. -type SpanKind int - -// As a convenience, these match the proto definition, see -// https://github.com/open-telemetry/opentelemetry-proto/blob/30d237e1ff3ab7aa50e0922b5bebdd93505090af/opentelemetry/proto/trace/v1/trace.proto#L101-L129 -// -// The unspecified value is not a valid `SpanKind`. Use `ValidateSpanKind()` -// to coerce a span kind to a valid value. -const ( - // SpanKindUnspecified is an unspecified SpanKind and is not a valid - // SpanKind. SpanKindUnspecified should be replaced with SpanKindInternal - // if it is received. - SpanKindUnspecified SpanKind = 0 - // SpanKindInternal is a SpanKind for a Span that represents an internal - // operation within an application. - SpanKindInternal SpanKind = 1 - // SpanKindServer is a SpanKind for a Span that represents the operation - // of handling a request from a client. - SpanKindServer SpanKind = 2 - // SpanKindClient is a SpanKind for a Span that represents the operation - // of client making a request to a server. - SpanKindClient SpanKind = 3 - // SpanKindProducer is a SpanKind for a Span that represents the operation - // of a producer sending a message to a message broker. Unlike - // SpanKindClient and SpanKindServer, there is often no direct - // relationship between this kind of Span and a SpanKindConsumer kind. A - // SpanKindProducer Span will end once the message is accepted by the - // message broker which might not overlap with the processing of that - // message. - SpanKindProducer SpanKind = 4 - // SpanKindConsumer is a SpanKind for a Span that represents the operation - // of a consumer receiving a message from a message broker. Like - // SpanKindProducer Spans, there is often no direct relationship between - // this Span and the Span that produced the message. - SpanKindConsumer SpanKind = 5 -) - -// ValidateSpanKind returns a valid span kind value. This will coerce -// invalid values into the default value, SpanKindInternal. -func ValidateSpanKind(spanKind SpanKind) SpanKind { - switch spanKind { - case SpanKindInternal, - SpanKindServer, - SpanKindClient, - SpanKindProducer, - SpanKindConsumer: - // valid - return spanKind - default: - return SpanKindInternal - } -} - -// String returns the specified name of the SpanKind in lower-case. -func (sk SpanKind) String() string { - switch sk { - case SpanKindInternal: - return "internal" - case SpanKindServer: - return "server" - case SpanKindClient: - return "client" - case SpanKindProducer: - return "producer" - case SpanKindConsumer: - return "consumer" - default: - return "unspecified" - } -} - -// Tracer is the creator of Spans. -// -// Warning: Methods may be added to this interface in minor releases. See -// package documentation on API implementation for information on how to set -// default behavior for unimplemented methods. -type Tracer interface { - // Users of the interface can ignore this. This embedded type is only used - // by implementations of this interface. See the "API Implementations" - // section of the package documentation for more information. - embedded.Tracer - - // Start creates a span and a context.Context containing the newly-created span. - // - // If the context.Context provided in `ctx` contains a Span then the newly-created - // Span will be a child of that span, otherwise it will be a root span. This behavior - // can be overridden by providing `WithNewRoot()` as a SpanOption, causing the - // newly-created Span to be a root span even if `ctx` contains a Span. - // - // When creating a Span it is recommended to provide all known span attributes using - // the `WithAttributes()` SpanOption as samplers will only have access to the - // attributes provided when a Span is created. - // - // Any Span that is created MUST also be ended. This is the responsibility of the user. - // Implementations of this API may leak memory or other resources if Spans are not ended. - Start(ctx context.Context, spanName string, opts ...SpanStartOption) (context.Context, Span) -} - -// TracerProvider provides Tracers that are used by instrumentation code to -// trace computational workflows. -// -// A TracerProvider is the collection destination of all Spans from Tracers it -// provides, it represents a unique telemetry collection pipeline. How that -// pipeline is defined, meaning how those Spans are collected, processed, and -// where they are exported, depends on its implementation. Instrumentation -// authors do not need to define this implementation, rather just use the -// provided Tracers to instrument code. -// -// Commonly, instrumentation code will accept a TracerProvider implementation -// at runtime from its users or it can simply use the globally registered one -// (see https://pkg.go.dev/go.opentelemetry.io/otel#GetTracerProvider). -// -// Warning: Methods may be added to this interface in minor releases. See -// package documentation on API implementation for information on how to set -// default behavior for unimplemented methods. -type TracerProvider interface { - // Users of the interface can ignore this. This embedded type is only used - // by implementations of this interface. See the "API Implementations" - // section of the package documentation for more information. - embedded.TracerProvider - - // Tracer returns a unique Tracer scoped to be used by instrumentation code - // to trace computational workflows. The scope and identity of that - // instrumentation code is uniquely defined by the name and options passed. - // - // The passed name needs to uniquely identify instrumentation code. - // Therefore, it is recommended that name is the Go package name of the - // library providing instrumentation (note: not the code being - // instrumented). Instrumentation libraries can have multiple versions, - // therefore, the WithInstrumentationVersion option should be used to - // distinguish these different codebases. Additionally, instrumentation - // libraries may sometimes use traces to communicate different domains of - // workflow data (i.e. using spans to communicate workflow events only). If - // this is the case, the WithScopeAttributes option should be used to - // uniquely identify Tracers that handle the different domains of workflow - // data. - // - // If the same name and options are passed multiple times, the same Tracer - // will be returned (it is up to the implementation if this will be the - // same underlying instance of that Tracer or not). It is not necessary to - // call this multiple times with the same name and options to get an - // up-to-date Tracer. All implementations will ensure any TracerProvider - // configuration changes are propagated to all provided Tracers. - // - // If name is empty, then an implementation defined default name will be - // used instead. - // - // This method is safe to call concurrently. - Tracer(name string, options ...TracerOption) Tracer -} diff --git a/vendor/go.opentelemetry.io/otel/trace/tracer.go b/vendor/go.opentelemetry.io/otel/trace/tracer.go new file mode 100644 index 000000000000..77952d2a0b31 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/trace/tracer.go @@ -0,0 +1,37 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package trace // import "go.opentelemetry.io/otel/trace" + +import ( + "context" + + "go.opentelemetry.io/otel/trace/embedded" +) + +// Tracer is the creator of Spans. +// +// Warning: Methods may be added to this interface in minor releases. See +// package documentation on API implementation for information on how to set +// default behavior for unimplemented methods. +type Tracer interface { + // Users of the interface can ignore this. This embedded type is only used + // by implementations of this interface. See the "API Implementations" + // section of the package documentation for more information. + embedded.Tracer + + // Start creates a span and a context.Context containing the newly-created span. + // + // If the context.Context provided in `ctx` contains a Span then the newly-created + // Span will be a child of that span, otherwise it will be a root span. This behavior + // can be overridden by providing `WithNewRoot()` as a SpanOption, causing the + // newly-created Span to be a root span even if `ctx` contains a Span. + // + // When creating a Span it is recommended to provide all known span attributes using + // the `WithAttributes()` SpanOption as samplers will only have access to the + // attributes provided when a Span is created. + // + // Any Span that is created MUST also be ended. This is the responsibility of the user. + // Implementations of this API may leak memory or other resources if Spans are not ended. + Start(ctx context.Context, spanName string, opts ...SpanStartOption) (context.Context, Span) +} diff --git a/vendor/go.opentelemetry.io/otel/trace/tracestate.go b/vendor/go.opentelemetry.io/otel/trace/tracestate.go index db936ba5b73e..dc5e34cad0dd 100644 --- a/vendor/go.opentelemetry.io/otel/trace/tracestate.go +++ b/vendor/go.opentelemetry.io/otel/trace/tracestate.go @@ -1,16 +1,5 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package trace // import "go.opentelemetry.io/otel/trace" @@ -271,6 +260,16 @@ func (ts TraceState) Get(key string) string { return "" } +// Walk walks all key value pairs in the TraceState by calling f +// Iteration stops if f returns false. +func (ts TraceState) Walk(f func(key, value string) bool) { + for _, m := range ts.list { + if !f(m.Key, m.Value) { + break + } + } +} + // Insert adds a new list-member defined by the key/value pair to the // TraceState. If a list-member already exists for the given key, that // list-member's value is updated. The new or updated list-member is always diff --git a/vendor/go.opentelemetry.io/otel/verify_examples.sh b/vendor/go.opentelemetry.io/otel/verify_examples.sh deleted file mode 100644 index dbb61a422795..000000000000 --- a/vendor/go.opentelemetry.io/otel/verify_examples.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/bash - -# Copyright The OpenTelemetry Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -euo pipefail - -cd $(dirname $0) -TOOLS_DIR=$(pwd)/.tools - -if [ -z "${GOPATH}" ] ; then - printf "GOPATH is not defined.\n" - exit -1 -fi - -if [ ! -d "${GOPATH}" ] ; then - printf "GOPATH ${GOPATH} is invalid \n" - exit -1 -fi - -# Pre-requisites -if ! git diff --quiet; then \ - git status - printf "\n\nError: working tree is not clean\n" - exit -1 -fi - -if [ "$(git tag --contains $(git log -1 --pretty=format:"%H"))" = "" ] ; then - printf "$(git log -1)" - printf "\n\nError: HEAD is not pointing to a tagged version" -fi - -make ${TOOLS_DIR}/gojq - -DIR_TMP="${GOPATH}/src/oteltmp/" -rm -rf $DIR_TMP -mkdir -p $DIR_TMP - -printf "Copy examples to ${DIR_TMP}\n" -cp -a ./example ${DIR_TMP} - -# Update go.mod files -printf "Update go.mod: rename module and remove replace\n" - -PACKAGE_DIRS=$(find . -mindepth 2 -type f -name 'go.mod' -exec dirname {} \; | egrep 'example' | sed 's/^\.\///' | sort) - -for dir in $PACKAGE_DIRS; do - printf " Update go.mod for $dir\n" - (cd "${DIR_TMP}/${dir}" && \ - # replaces is ("mod1" "mod2" …) - replaces=($(go mod edit -json | ${TOOLS_DIR}/gojq '.Replace[].Old.Path')) && \ - # strip double quotes - replaces=("${replaces[@]%\"}") && \ - replaces=("${replaces[@]#\"}") && \ - # make an array (-dropreplace=mod1 -dropreplace=mod2 …) - dropreplaces=("${replaces[@]/#/-dropreplace=}") && \ - go mod edit -module "oteltmp/${dir}" "${dropreplaces[@]}" && \ - go mod tidy) -done -printf "Update done:\n\n" - -# Build directories that contain main package. These directories are different than -# directories that contain go.mod files. -printf "Build examples:\n" -EXAMPLES=$(./get_main_pkgs.sh ./example) -for ex in $EXAMPLES; do - printf " Build $ex in ${DIR_TMP}/${ex}\n" - (cd "${DIR_TMP}/${ex}" && \ - go build .) -done - -# Cleanup -printf "Remove copied files.\n" -rm -rf $DIR_TMP diff --git a/vendor/go.opentelemetry.io/otel/verify_readmes.sh b/vendor/go.opentelemetry.io/otel/verify_readmes.sh new file mode 100644 index 000000000000..1e87855eeaa8 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/verify_readmes.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +dirs=$(find . -type d -not -path "*/internal*" -not -path "*/test*" -not -path "*/example*" -not -path "*/.*" | sort) + +missingReadme=false +for dir in $dirs; do + if [ ! -f "$dir/README.md" ]; then + echo "couldn't find README.md for $dir" + missingReadme=true + fi +done + +if [ "$missingReadme" = true ] ; then + echo "Error: some READMEs couldn't be found." + exit 1 +fi diff --git a/vendor/go.opentelemetry.io/otel/verify_released_changelog.sh b/vendor/go.opentelemetry.io/otel/verify_released_changelog.sh new file mode 100644 index 000000000000..c9b7cdbbfef7 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/verify_released_changelog.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +TARGET="${1:?Must provide target ref}" + +FILE="CHANGELOG.md" +TEMP_DIR=$(mktemp -d) +echo "Temp folder: $TEMP_DIR" + +# Only the latest commit of the feature branch is available +# automatically. To diff with the base branch, we need to +# fetch that too (and we only need its latest commit). +git fetch origin "${TARGET}" --depth=1 + +# Checkout the previous version on the base branch of the changelog to tmpfolder +git --work-tree="$TEMP_DIR" checkout FETCH_HEAD $FILE + +PREVIOUS_FILE="$TEMP_DIR/$FILE" +CURRENT_FILE="$FILE" +PREVIOUS_LOCKED_FILE="$TEMP_DIR/previous_locked_section.md" +CURRENT_LOCKED_FILE="$TEMP_DIR/current_locked_section.md" + +# Extract released sections from the previous version +awk '/^/ {flag=1} /^/ {flag=0} flag' "$PREVIOUS_FILE" > "$PREVIOUS_LOCKED_FILE" + +# Extract released sections from the current version +awk '/^/ {flag=1} /^/ {flag=0} flag' "$CURRENT_FILE" > "$CURRENT_LOCKED_FILE" + +# Compare the released sections +if ! diff -q "$PREVIOUS_LOCKED_FILE" "$CURRENT_LOCKED_FILE"; then + echo "Error: The released sections of the changelog file have been modified." + diff "$PREVIOUS_LOCKED_FILE" "$CURRENT_LOCKED_FILE" + rm -rf "$TEMP_DIR" + false +fi + +rm -rf "$TEMP_DIR" +echo "The released sections remain unchanged." diff --git a/vendor/go.opentelemetry.io/otel/version.go b/vendor/go.opentelemetry.io/otel/version.go index 7b2993a1fef1..fb7d12673eb2 100644 --- a/vendor/go.opentelemetry.io/otel/version.go +++ b/vendor/go.opentelemetry.io/otel/version.go @@ -1,20 +1,9 @@ // Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 package otel // import "go.opentelemetry.io/otel" // Version is the current release version of OpenTelemetry in use. func Version() string { - return "1.24.0" + return "1.33.0" } diff --git a/vendor/go.opentelemetry.io/otel/versions.yaml b/vendor/go.opentelemetry.io/otel/versions.yaml index 1b556e6782b1..9f878cd1fe76 100644 --- a/vendor/go.opentelemetry.io/otel/versions.yaml +++ b/vendor/go.opentelemetry.io/otel/versions.yaml @@ -1,32 +1,15 @@ # Copyright The OpenTelemetry Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# SPDX-License-Identifier: Apache-2.0 module-sets: stable-v1: - version: v1.24.0 + version: v1.33.0 modules: - go.opentelemetry.io/otel - go.opentelemetry.io/otel/bridge/opencensus - go.opentelemetry.io/otel/bridge/opencensus/test - go.opentelemetry.io/otel/bridge/opentracing - go.opentelemetry.io/otel/bridge/opentracing/test - - go.opentelemetry.io/otel/example/dice - - go.opentelemetry.io/otel/example/namedtracer - - go.opentelemetry.io/otel/example/opencensus - - go.opentelemetry.io/otel/example/otel-collector - - go.opentelemetry.io/otel/example/passthrough - - go.opentelemetry.io/otel/example/zipkin - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp - go.opentelemetry.io/otel/exporters/otlp/otlptrace @@ -40,16 +23,19 @@ module-sets: - go.opentelemetry.io/otel/sdk/metric - go.opentelemetry.io/otel/trace experimental-metrics: - version: v0.46.0 + version: v0.55.0 modules: - - go.opentelemetry.io/otel/example/prometheus - go.opentelemetry.io/otel/exporters/prometheus experimental-logs: - version: v0.0.1-alpha + version: v0.9.0 modules: - go.opentelemetry.io/otel/log + - go.opentelemetry.io/otel/sdk/log + - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc + - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp + - go.opentelemetry.io/otel/exporters/stdout/stdoutlog experimental-schema: - version: v0.0.7 + version: v0.0.12 modules: - go.opentelemetry.io/otel/schema excluded-modules: diff --git a/vendor/go.uber.org/atomic/CHANGELOG.md b/vendor/go.uber.org/atomic/CHANGELOG.md index 5fe03f21bd3d..6f87f33fa955 100644 --- a/vendor/go.uber.org/atomic/CHANGELOG.md +++ b/vendor/go.uber.org/atomic/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.11.0] - 2023-05-02 +### Fixed +- Fix initialization of `Value` wrappers. + +### Added +- Add `String` method to `atomic.Pointer[T]` type allowing users to safely print +underlying values of pointers. + +[1.11.0]: https://github.com/uber-go/atomic/compare/v1.10.0...v1.11.0 + ## [1.10.0] - 2022-08-11 ### Added - Add `atomic.Float32` type for atomic operations on `float32`. diff --git a/vendor/go.uber.org/atomic/bool.go b/vendor/go.uber.org/atomic/bool.go index dfa2085f491d..f0a2ddd148c8 100644 --- a/vendor/go.uber.org/atomic/bool.go +++ b/vendor/go.uber.org/atomic/bool.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/duration.go b/vendor/go.uber.org/atomic/duration.go index 6f4157445cfb..7c23868fc872 100644 --- a/vendor/go.uber.org/atomic/duration.go +++ b/vendor/go.uber.org/atomic/duration.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/error.go b/vendor/go.uber.org/atomic/error.go index 27b23ea16282..b7e3f1291a34 100644 --- a/vendor/go.uber.org/atomic/error.go +++ b/vendor/go.uber.org/atomic/error.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -52,7 +52,17 @@ func (x *Error) Store(val error) { // CompareAndSwap is an atomic compare-and-swap for error values. func (x *Error) CompareAndSwap(old, new error) (swapped bool) { - return x.v.CompareAndSwap(packError(old), packError(new)) + if x.v.CompareAndSwap(packError(old), packError(new)) { + return true + } + + if old == _zeroError { + // If the old value is the empty value, then it's possible the + // underlying Value hasn't been set and is nil, so retry with nil. + return x.v.CompareAndSwap(nil, packError(new)) + } + + return false } // Swap atomically stores the given error and returns the old diff --git a/vendor/go.uber.org/atomic/float32.go b/vendor/go.uber.org/atomic/float32.go index 5d535a6d2acf..62c36334fd5c 100644 --- a/vendor/go.uber.org/atomic/float32.go +++ b/vendor/go.uber.org/atomic/float32.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/float64.go b/vendor/go.uber.org/atomic/float64.go index 11d5189a5f29..5bc11caabe20 100644 --- a/vendor/go.uber.org/atomic/float64.go +++ b/vendor/go.uber.org/atomic/float64.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/int32.go b/vendor/go.uber.org/atomic/int32.go index b9a68f42ca84..5320eac10f1e 100644 --- a/vendor/go.uber.org/atomic/int32.go +++ b/vendor/go.uber.org/atomic/int32.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicint. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/int64.go b/vendor/go.uber.org/atomic/int64.go index 78d260976fcf..460821d009de 100644 --- a/vendor/go.uber.org/atomic/int64.go +++ b/vendor/go.uber.org/atomic/int64.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicint. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/pointer_go118.go b/vendor/go.uber.org/atomic/pointer_go118.go index e0f47dba4686..1fb6c03b2612 100644 --- a/vendor/go.uber.org/atomic/pointer_go118.go +++ b/vendor/go.uber.org/atomic/pointer_go118.go @@ -18,43 +18,14 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -//go:build go1.18 && !go1.19 -// +build go1.18,!go1.19 +//go:build go1.18 +// +build go1.18 package atomic -import "unsafe" +import "fmt" -type Pointer[T any] struct { - _ nocmp // disallow non-atomic comparison - p UnsafePointer -} - -// NewPointer creates a new Pointer. -func NewPointer[T any](v *T) *Pointer[T] { - var p Pointer[T] - if v != nil { - p.p.Store(unsafe.Pointer(v)) - } - return &p -} - -// Load atomically loads the wrapped value. -func (p *Pointer[T]) Load() *T { - return (*T)(p.p.Load()) -} - -// Store atomically stores the passed value. -func (p *Pointer[T]) Store(val *T) { - p.p.Store(unsafe.Pointer(val)) -} - -// Swap atomically swaps the wrapped pointer and returns the old value. -func (p *Pointer[T]) Swap(val *T) (old *T) { - return (*T)(p.p.Swap(unsafe.Pointer(val))) -} - -// CompareAndSwap is an atomic compare-and-swap. -func (p *Pointer[T]) CompareAndSwap(old, new *T) (swapped bool) { - return p.p.CompareAndSwap(unsafe.Pointer(old), unsafe.Pointer(new)) +// String returns a human readable representation of a Pointer's underlying value. +func (p *Pointer[T]) String() string { + return fmt.Sprint(p.Load()) } diff --git a/vendor/go.uber.org/atomic/pointer_go118_pre119.go b/vendor/go.uber.org/atomic/pointer_go118_pre119.go new file mode 100644 index 000000000000..e0f47dba4686 --- /dev/null +++ b/vendor/go.uber.org/atomic/pointer_go118_pre119.go @@ -0,0 +1,60 @@ +// Copyright (c) 2022 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build go1.18 && !go1.19 +// +build go1.18,!go1.19 + +package atomic + +import "unsafe" + +type Pointer[T any] struct { + _ nocmp // disallow non-atomic comparison + p UnsafePointer +} + +// NewPointer creates a new Pointer. +func NewPointer[T any](v *T) *Pointer[T] { + var p Pointer[T] + if v != nil { + p.p.Store(unsafe.Pointer(v)) + } + return &p +} + +// Load atomically loads the wrapped value. +func (p *Pointer[T]) Load() *T { + return (*T)(p.p.Load()) +} + +// Store atomically stores the passed value. +func (p *Pointer[T]) Store(val *T) { + p.p.Store(unsafe.Pointer(val)) +} + +// Swap atomically swaps the wrapped pointer and returns the old value. +func (p *Pointer[T]) Swap(val *T) (old *T) { + return (*T)(p.p.Swap(unsafe.Pointer(val))) +} + +// CompareAndSwap is an atomic compare-and-swap. +func (p *Pointer[T]) CompareAndSwap(old, new *T) (swapped bool) { + return p.p.CompareAndSwap(unsafe.Pointer(old), unsafe.Pointer(new)) +} diff --git a/vendor/go.uber.org/atomic/string.go b/vendor/go.uber.org/atomic/string.go index c4bea70f4ddf..061466c5bde7 100644 --- a/vendor/go.uber.org/atomic/string.go +++ b/vendor/go.uber.org/atomic/string.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -42,24 +42,31 @@ func NewString(val string) *String { // Load atomically loads the wrapped string. func (x *String) Load() string { - if v := x.v.Load(); v != nil { - return v.(string) - } - return _zeroString + return unpackString(x.v.Load()) } // Store atomically stores the passed string. func (x *String) Store(val string) { - x.v.Store(val) + x.v.Store(packString(val)) } // CompareAndSwap is an atomic compare-and-swap for string values. func (x *String) CompareAndSwap(old, new string) (swapped bool) { - return x.v.CompareAndSwap(old, new) + if x.v.CompareAndSwap(packString(old), packString(new)) { + return true + } + + if old == _zeroString { + // If the old value is the empty value, then it's possible the + // underlying Value hasn't been set and is nil, so retry with nil. + return x.v.CompareAndSwap(nil, packString(new)) + } + + return false } // Swap atomically stores the given string and returns the old // value. func (x *String) Swap(val string) (old string) { - return x.v.Swap(val).(string) + return unpackString(x.v.Swap(packString(val))) } diff --git a/vendor/go.uber.org/atomic/string_ext.go b/vendor/go.uber.org/atomic/string_ext.go index 1f63dfd5b978..019109c86ba9 100644 --- a/vendor/go.uber.org/atomic/string_ext.go +++ b/vendor/go.uber.org/atomic/string_ext.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -20,7 +20,18 @@ package atomic -//go:generate bin/gen-atomicwrapper -name=String -type=string -wrapped=Value -compareandswap -swap -file=string.go +//go:generate bin/gen-atomicwrapper -name=String -type=string -wrapped Value -pack packString -unpack unpackString -compareandswap -swap -file=string.go + +func packString(s string) interface{} { + return s +} + +func unpackString(v interface{}) string { + if s, ok := v.(string); ok { + return s + } + return "" +} // String returns the wrapped value. func (s *String) String() string { diff --git a/vendor/go.uber.org/atomic/time.go b/vendor/go.uber.org/atomic/time.go index 1660feb14268..cc2a230c0018 100644 --- a/vendor/go.uber.org/atomic/time.go +++ b/vendor/go.uber.org/atomic/time.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/uint32.go b/vendor/go.uber.org/atomic/uint32.go index d6f04a96dc38..4adc294ac2a0 100644 --- a/vendor/go.uber.org/atomic/uint32.go +++ b/vendor/go.uber.org/atomic/uint32.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicint. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/uint64.go b/vendor/go.uber.org/atomic/uint64.go index 2574bdd5ec4a..0e2eddb30389 100644 --- a/vendor/go.uber.org/atomic/uint64.go +++ b/vendor/go.uber.org/atomic/uint64.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicint. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/uintptr.go b/vendor/go.uber.org/atomic/uintptr.go index 81b275a7ad5d..7d5b000d6102 100644 --- a/vendor/go.uber.org/atomic/uintptr.go +++ b/vendor/go.uber.org/atomic/uintptr.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicint. -// Copyright (c) 2020-2022 Uber Technologies, Inc. +// Copyright (c) 2020-2023 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_linux.go b/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_linux.go index 3b974754c3ee..f9057fd27310 100644 --- a/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_linux.go +++ b/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_linux.go @@ -25,15 +25,18 @@ package runtime import ( "errors" - "math" cg "go.uber.org/automaxprocs/internal/cgroups" ) // CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process -// to a valid GOMAXPROCS value. -func CPUQuotaToGOMAXPROCS(minValue int) (int, CPUQuotaStatus, error) { - cgroups, err := newQueryer() +// to a valid GOMAXPROCS value. The quota is converted from float to int using round. +// If round == nil, DefaultRoundFunc is used. +func CPUQuotaToGOMAXPROCS(minValue int, round func(v float64) int) (int, CPUQuotaStatus, error) { + if round == nil { + round = DefaultRoundFunc + } + cgroups, err := _newQueryer() if err != nil { return -1, CPUQuotaUndefined, err } @@ -43,7 +46,7 @@ func CPUQuotaToGOMAXPROCS(minValue int) (int, CPUQuotaStatus, error) { return -1, CPUQuotaUndefined, err } - maxProcs := int(math.Floor(quota)) + maxProcs := round(quota) if minValue > 0 && maxProcs < minValue { return minValue, CPUQuotaMinUsed, nil } @@ -57,6 +60,7 @@ type queryer interface { var ( _newCgroups2 = cg.NewCGroups2ForCurrentProcess _newCgroups = cg.NewCGroupsForCurrentProcess + _newQueryer = newQueryer ) func newQueryer() (queryer, error) { diff --git a/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_unsupported.go b/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_unsupported.go index 6922554484e7..e74701508ed8 100644 --- a/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_unsupported.go +++ b/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_unsupported.go @@ -26,6 +26,6 @@ package runtime // CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process // to a valid GOMAXPROCS value. This is Linux-specific and not supported in the // current OS. -func CPUQuotaToGOMAXPROCS(_ int) (int, CPUQuotaStatus, error) { +func CPUQuotaToGOMAXPROCS(_ int, _ func(v float64) int) (int, CPUQuotaStatus, error) { return -1, CPUQuotaUndefined, nil } diff --git a/vendor/go.uber.org/automaxprocs/internal/runtime/runtime.go b/vendor/go.uber.org/automaxprocs/internal/runtime/runtime.go index df6eacf0530c..f8a2834ac00e 100644 --- a/vendor/go.uber.org/automaxprocs/internal/runtime/runtime.go +++ b/vendor/go.uber.org/automaxprocs/internal/runtime/runtime.go @@ -20,6 +20,8 @@ package runtime +import "math" + // CPUQuotaStatus presents the status of how CPU quota is used type CPUQuotaStatus int @@ -31,3 +33,8 @@ const ( // CPUQuotaMinUsed is returned when CPU quota is smaller than the min value CPUQuotaMinUsed ) + +// DefaultRoundFunc is the default function to convert CPU quota from float to int. It rounds the value down (floor). +func DefaultRoundFunc(v float64) int { + return int(math.Floor(v)) +} diff --git a/vendor/go.uber.org/automaxprocs/maxprocs/maxprocs.go b/vendor/go.uber.org/automaxprocs/maxprocs/maxprocs.go index 98176d645752..e561fe60b20b 100644 --- a/vendor/go.uber.org/automaxprocs/maxprocs/maxprocs.go +++ b/vendor/go.uber.org/automaxprocs/maxprocs/maxprocs.go @@ -37,9 +37,10 @@ func currentMaxProcs() int { } type config struct { - printf func(string, ...interface{}) - procs func(int) (int, iruntime.CPUQuotaStatus, error) - minGOMAXPROCS int + printf func(string, ...interface{}) + procs func(int, func(v float64) int) (int, iruntime.CPUQuotaStatus, error) + minGOMAXPROCS int + roundQuotaFunc func(v float64) int } func (c *config) log(fmt string, args ...interface{}) { @@ -71,6 +72,13 @@ func Min(n int) Option { }) } +// RoundQuotaFunc sets the function that will be used to covert the CPU quota from float to int. +func RoundQuotaFunc(rf func(v float64) int) Option { + return optionFunc(func(cfg *config) { + cfg.roundQuotaFunc = rf + }) +} + type optionFunc func(*config) func (of optionFunc) apply(cfg *config) { of(cfg) } @@ -82,8 +90,9 @@ func (of optionFunc) apply(cfg *config) { of(cfg) } // configured CPU quota. func Set(opts ...Option) (func(), error) { cfg := &config{ - procs: iruntime.CPUQuotaToGOMAXPROCS, - minGOMAXPROCS: 1, + procs: iruntime.CPUQuotaToGOMAXPROCS, + roundQuotaFunc: iruntime.DefaultRoundFunc, + minGOMAXPROCS: 1, } for _, o := range opts { o.apply(cfg) @@ -102,7 +111,7 @@ func Set(opts ...Option) (func(), error) { return undoNoop, nil } - maxProcs, status, err := cfg.procs(cfg.minGOMAXPROCS) + maxProcs, status, err := cfg.procs(cfg.minGOMAXPROCS, cfg.roundQuotaFunc) if err != nil { return undoNoop, err } diff --git a/vendor/go.uber.org/automaxprocs/maxprocs/version.go b/vendor/go.uber.org/automaxprocs/maxprocs/version.go index 108a95535e5e..cc7fc5aee127 100644 --- a/vendor/go.uber.org/automaxprocs/maxprocs/version.go +++ b/vendor/go.uber.org/automaxprocs/maxprocs/version.go @@ -21,4 +21,4 @@ package maxprocs // Version is the current package version. -const Version = "1.5.2" +const Version = "1.6.0" diff --git a/vendor/golang.org/x/crypto/cryptobyte/asn1.go b/vendor/golang.org/x/crypto/cryptobyte/asn1.go index 2492f796af97..d25979d9f533 100644 --- a/vendor/golang.org/x/crypto/cryptobyte/asn1.go +++ b/vendor/golang.org/x/crypto/cryptobyte/asn1.go @@ -234,7 +234,7 @@ func (b *Builder) AddASN1(tag asn1.Tag, f BuilderContinuation) { // Identifiers with the low five bits set indicate high-tag-number format // (two or more octets), which we don't support. if tag&0x1f == 0x1f { - b.err = fmt.Errorf("cryptobyte: high-tag number identifier octects not supported: 0x%x", tag) + b.err = fmt.Errorf("cryptobyte: high-tag number identifier octets not supported: 0x%x", tag) return } b.AddUint8(uint8(tag)) diff --git a/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go b/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go index bd896bdc76d1..8d99551feecb 100644 --- a/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go +++ b/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (!amd64 && !ppc64le && !ppc64 && !s390x) || !gc || purego +//go:build (!amd64 && !loong64 && !ppc64le && !ppc64 && !s390x) || !gc || purego package poly1305 diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.go b/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go similarity index 94% rename from vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.go rename to vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go index 164cd47d322a..315b84ac39bf 100644 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.go +++ b/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build gc && !purego +//go:build gc && !purego && (amd64 || loong64 || ppc64 || ppc64le) package poly1305 diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s b/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s new file mode 100644 index 000000000000..bc8361da4024 --- /dev/null +++ b/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s @@ -0,0 +1,123 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +// func update(state *macState, msg []byte) +TEXT ·update(SB), $0-32 + MOVV state+0(FP), R4 + MOVV msg_base+8(FP), R5 + MOVV msg_len+16(FP), R6 + + MOVV $0x10, R7 + + MOVV (R4), R8 // h0 + MOVV 8(R4), R9 // h1 + MOVV 16(R4), R10 // h2 + MOVV 24(R4), R11 // r0 + MOVV 32(R4), R12 // r1 + + BLT R6, R7, bytes_between_0_and_15 + +loop: + MOVV (R5), R14 // msg[0:8] + MOVV 8(R5), R16 // msg[8:16] + ADDV R14, R8, R8 // h0 (x1 + y1 = z1', if z1' < x1 then z1' overflow) + ADDV R16, R9, R27 + SGTU R14, R8, R24 // h0.carry + SGTU R9, R27, R28 + ADDV R27, R24, R9 // h1 + SGTU R27, R9, R24 + OR R24, R28, R24 // h1.carry + ADDV $0x01, R24, R24 + ADDV R10, R24, R10 // h2 + + ADDV $16, R5, R5 // msg = msg[16:] + +multiply: + MULV R8, R11, R14 // h0r0.lo + MULHVU R8, R11, R15 // h0r0.hi + MULV R9, R11, R13 // h1r0.lo + MULHVU R9, R11, R16 // h1r0.hi + ADDV R13, R15, R15 + SGTU R13, R15, R24 + ADDV R24, R16, R16 + MULV R10, R11, R25 + ADDV R16, R25, R25 + MULV R8, R12, R13 // h0r1.lo + MULHVU R8, R12, R16 // h0r1.hi + ADDV R13, R15, R15 + SGTU R13, R15, R24 + ADDV R24, R16, R16 + MOVV R16, R8 + MULV R10, R12, R26 // h2r1 + MULV R9, R12, R13 // h1r1.lo + MULHVU R9, R12, R16 // h1r1.hi + ADDV R13, R25, R25 + ADDV R16, R26, R27 + SGTU R13, R25, R24 + ADDV R27, R24, R26 + ADDV R8, R25, R25 + SGTU R8, R25, R24 + ADDV R24, R26, R26 + AND $3, R25, R10 + AND $-4, R25, R17 + ADDV R17, R14, R8 + ADDV R26, R15, R27 + SGTU R17, R8, R24 + SGTU R26, R27, R28 + ADDV R27, R24, R9 + SGTU R27, R9, R24 + OR R24, R28, R24 + ADDV R24, R10, R10 + SLLV $62, R26, R27 + SRLV $2, R25, R28 + SRLV $2, R26, R26 + OR R27, R28, R25 + ADDV R25, R8, R8 + ADDV R26, R9, R27 + SGTU R25, R8, R24 + SGTU R26, R27, R28 + ADDV R27, R24, R9 + SGTU R27, R9, R24 + OR R24, R28, R24 + ADDV R24, R10, R10 + + SUBV $16, R6, R6 + BGE R6, R7, loop + +bytes_between_0_and_15: + BEQ R6, R0, done + MOVV $1, R14 + XOR R15, R15 + ADDV R6, R5, R5 + +flush_buffer: + MOVBU -1(R5), R25 + SRLV $56, R14, R24 + SLLV $8, R15, R28 + SLLV $8, R14, R14 + OR R24, R28, R15 + XOR R25, R14, R14 + SUBV $1, R6, R6 + SUBV $1, R5, R5 + BNE R6, R0, flush_buffer + + ADDV R14, R8, R8 + SGTU R14, R8, R24 + ADDV R15, R9, R27 + SGTU R15, R27, R28 + ADDV R27, R24, R9 + SGTU R27, R9, R24 + OR R24, R28, R24 + ADDV R10, R24, R10 + + MOVV $16, R6 + JMP multiply + +done: + MOVV R8, (R4) + MOVV R9, 8(R4) + MOVV R10, 16(R4) + RET diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.go b/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.go deleted file mode 100644 index 1a1679aaad9c..000000000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build gc && !purego && (ppc64 || ppc64le) - -package poly1305 - -//go:noescape -func update(state *macState, msg []byte) - -// mac is a wrapper for macGeneric that redirects calls that would have gone to -// updateGeneric to update. -// -// Its Write and Sum methods are otherwise identical to the macGeneric ones, but -// using function pointers would carry a major performance cost. -type mac struct{ macGeneric } - -func (h *mac) Write(p []byte) (int, error) { - nn := len(p) - if h.offset > 0 { - n := copy(h.buffer[h.offset:], p) - if h.offset+n < TagSize { - h.offset += n - return nn, nil - } - p = p[n:] - h.offset = 0 - update(&h.macState, h.buffer[:]) - } - if n := len(p) - (len(p) % TagSize); n > 0 { - update(&h.macState, p[:n]) - p = p[n:] - } - if len(p) > 0 { - h.offset += copy(h.buffer[h.offset:], p) - } - return nn, nil -} - -func (h *mac) Sum(out *[16]byte) { - state := h.macState - if h.offset > 0 { - update(&state, h.buffer[:h.offset]) - } - finalize(out, &state.h, &state.s) -} diff --git a/vendor/golang.org/x/mod/LICENSE b/vendor/golang.org/x/mod/LICENSE index 6a66aea5eafe..2a7cf70da6e4 100644 --- a/vendor/golang.org/x/mod/LICENSE +++ b/vendor/golang.org/x/mod/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go index 81faec7e75d6..97bd8b06f7ac 100644 --- a/vendor/golang.org/x/net/http2/frame.go +++ b/vendor/golang.org/x/net/http2/frame.go @@ -225,6 +225,11 @@ var fhBytes = sync.Pool{ }, } +func invalidHTTP1LookingFrameHeader() FrameHeader { + fh, _ := readFrameHeader(make([]byte, frameHeaderLen), strings.NewReader("HTTP/1.1 ")) + return fh +} + // ReadFrameHeader reads 9 bytes from r and returns a FrameHeader. // Most users should use Framer.ReadFrame instead. func ReadFrameHeader(r io.Reader) (FrameHeader, error) { @@ -503,10 +508,16 @@ func (fr *Framer) ReadFrame() (Frame, error) { return nil, err } if fh.Length > fr.maxReadSize { + if fh == invalidHTTP1LookingFrameHeader() { + return nil, fmt.Errorf("http2: failed reading the frame payload: %w, note that the frame header looked like an HTTP/1.1 header", err) + } return nil, ErrFrameTooLarge } payload := fr.getReadBuf(fh.Length) if _, err := io.ReadFull(fr.r, payload); err != nil { + if fh == invalidHTTP1LookingFrameHeader() { + return nil, fmt.Errorf("http2: failed reading the frame payload: %w, note that the frame header looked like an HTTP/1.1 header", err) + } return nil, err } f, err := typeFrameParser(fh.Type)(fr.frameCache, fh, fr.countError, payload) diff --git a/vendor/golang.org/x/net/http2/h2c/h2c.go b/vendor/golang.org/x/net/http2/h2c/h2c.go index 2d6bf861b975..19e94791df6f 100644 --- a/vendor/golang.org/x/net/http2/h2c/h2c.go +++ b/vendor/golang.org/x/net/http2/h2c/h2c.go @@ -132,11 +132,8 @@ func (s h2cHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // of the body, and reforward the client preface on the net.Conn this function // creates. func initH2CWithPriorKnowledge(w http.ResponseWriter) (net.Conn, error) { - hijacker, ok := w.(http.Hijacker) - if !ok { - return nil, errors.New("h2c: connection does not support Hijack") - } - conn, rw, err := hijacker.Hijack() + rc := http.NewResponseController(w) + conn, rw, err := rc.Hijack() if err != nil { return nil, err } @@ -163,10 +160,6 @@ func h2cUpgrade(w http.ResponseWriter, r *http.Request) (_ net.Conn, settings [] if err != nil { return nil, nil, err } - hijacker, ok := w.(http.Hijacker) - if !ok { - return nil, nil, errors.New("h2c: connection does not support Hijack") - } body, err := io.ReadAll(r.Body) if err != nil { @@ -174,7 +167,8 @@ func h2cUpgrade(w http.ResponseWriter, r *http.Request) (_ net.Conn, settings [] } r.Body = io.NopCloser(bytes.NewBuffer(body)) - conn, rw, err := hijacker.Hijack() + rc := http.NewResponseController(w) + conn, rw, err := rc.Hijack() if err != nil { return nil, nil, err } diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go index c7601c909ffb..6c18ea230be0 100644 --- a/vendor/golang.org/x/net/http2/http2.go +++ b/vendor/golang.org/x/net/http2/http2.go @@ -34,11 +34,19 @@ import ( ) var ( - VerboseLogs bool - logFrameWrites bool - logFrameReads bool - inTests bool - disableExtendedConnectProtocol bool + VerboseLogs bool + logFrameWrites bool + logFrameReads bool + inTests bool + + // Enabling extended CONNECT by causes browsers to attempt to use + // WebSockets-over-HTTP/2. This results in problems when the server's websocket + // package doesn't support extended CONNECT. + // + // Disable extended CONNECT by default for now. + // + // Issue #71128. + disableExtendedConnectProtocol = true ) func init() { @@ -51,8 +59,8 @@ func init() { logFrameWrites = true logFrameReads = true } - if strings.Contains(e, "http2xconnect=0") { - disableExtendedConnectProtocol = true + if strings.Contains(e, "http2xconnect=1") { + disableExtendedConnectProtocol = false } } @@ -407,23 +415,6 @@ func (s *sorter) SortStrings(ss []string) { s.v = save } -// validPseudoPath reports whether v is a valid :path pseudo-header -// value. It must be either: -// -// - a non-empty string starting with '/' -// - the string '*', for OPTIONS requests. -// -// For now this is only used a quick check for deciding when to clean -// up Opaque URLs before sending requests from the Transport. -// See golang.org/issue/16847 -// -// We used to enforce that the path also didn't start with "//", but -// Google's GFE accepts such paths and Chrome sends them, so ignore -// that part of the spec. See golang.org/issue/19103. -func validPseudoPath(v string) bool { - return (len(v) > 0 && v[0] == '/') || v == "*" -} - // incomparable is a zero-width, non-comparable type. Adding it to a struct // makes that struct also non-comparable, and generally doesn't add // any size (as long as it's first). diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index b55547aec640..51fca38f61d7 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -50,6 +50,7 @@ import ( "golang.org/x/net/http/httpguts" "golang.org/x/net/http2/hpack" + "golang.org/x/net/internal/httpcommon" ) const ( @@ -812,8 +813,7 @@ const maxCachedCanonicalHeadersKeysSize = 2048 func (sc *serverConn) canonicalHeader(v string) string { sc.serveG.check() - buildCommonHeaderMapsOnce() - cv, ok := commonCanonHeader[v] + cv, ok := httpcommon.CachedCanonicalHeader(v) if ok { return cv } @@ -1068,7 +1068,10 @@ func (sc *serverConn) serve(conf http2Config) { func (sc *serverConn) handlePingTimer(lastFrameReadTime time.Time) { if sc.pingSent { - sc.vlogf("timeout waiting for PING response") + sc.logf("timeout waiting for PING response") + if f := sc.countErrorFunc; f != nil { + f("conn_close_lost_ping") + } sc.conn.Close() return } @@ -2233,25 +2236,25 @@ func (sc *serverConn) newStream(id, pusherID uint32, state streamState) *stream func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*responseWriter, *http.Request, error) { sc.serveG.check() - rp := requestParam{ - method: f.PseudoValue("method"), - scheme: f.PseudoValue("scheme"), - authority: f.PseudoValue("authority"), - path: f.PseudoValue("path"), - protocol: f.PseudoValue("protocol"), + rp := httpcommon.ServerRequestParam{ + Method: f.PseudoValue("method"), + Scheme: f.PseudoValue("scheme"), + Authority: f.PseudoValue("authority"), + Path: f.PseudoValue("path"), + Protocol: f.PseudoValue("protocol"), } // extended connect is disabled, so we should not see :protocol - if disableExtendedConnectProtocol && rp.protocol != "" { + if disableExtendedConnectProtocol && rp.Protocol != "" { return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) } - isConnect := rp.method == "CONNECT" + isConnect := rp.Method == "CONNECT" if isConnect { - if rp.protocol == "" && (rp.path != "" || rp.scheme != "" || rp.authority == "") { + if rp.Protocol == "" && (rp.Path != "" || rp.Scheme != "" || rp.Authority == "") { return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) } - } else if rp.method == "" || rp.path == "" || (rp.scheme != "https" && rp.scheme != "http") { + } else if rp.Method == "" || rp.Path == "" || (rp.Scheme != "https" && rp.Scheme != "http") { // See 8.1.2.6 Malformed Requests and Responses: // // Malformed requests or responses that are detected @@ -2265,15 +2268,16 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res return nil, nil, sc.countError("bad_path_method", streamError(f.StreamID, ErrCodeProtocol)) } - rp.header = make(http.Header) + header := make(http.Header) + rp.Header = header for _, hf := range f.RegularFields() { - rp.header.Add(sc.canonicalHeader(hf.Name), hf.Value) + header.Add(sc.canonicalHeader(hf.Name), hf.Value) } - if rp.authority == "" { - rp.authority = rp.header.Get("Host") + if rp.Authority == "" { + rp.Authority = header.Get("Host") } - if rp.protocol != "" { - rp.header.Set(":protocol", rp.protocol) + if rp.Protocol != "" { + header.Set(":protocol", rp.Protocol) } rw, req, err := sc.newWriterAndRequestNoBody(st, rp) @@ -2282,7 +2286,7 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res } bodyOpen := !f.StreamEnded() if bodyOpen { - if vv, ok := rp.header["Content-Length"]; ok { + if vv, ok := rp.Header["Content-Length"]; ok { if cl, err := strconv.ParseUint(vv[0], 10, 63); err == nil { req.ContentLength = int64(cl) } else { @@ -2298,84 +2302,38 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res return rw, req, nil } -type requestParam struct { - method string - scheme, authority, path string - protocol string - header http.Header -} - -func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*responseWriter, *http.Request, error) { +func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp httpcommon.ServerRequestParam) (*responseWriter, *http.Request, error) { sc.serveG.check() var tlsState *tls.ConnectionState // nil if not scheme https - if rp.scheme == "https" { + if rp.Scheme == "https" { tlsState = sc.tlsState } - needsContinue := httpguts.HeaderValuesContainsToken(rp.header["Expect"], "100-continue") - if needsContinue { - rp.header.Del("Expect") - } - // Merge Cookie headers into one "; "-delimited value. - if cookies := rp.header["Cookie"]; len(cookies) > 1 { - rp.header.Set("Cookie", strings.Join(cookies, "; ")) - } - - // Setup Trailers - var trailer http.Header - for _, v := range rp.header["Trailer"] { - for _, key := range strings.Split(v, ",") { - key = http.CanonicalHeaderKey(textproto.TrimString(key)) - switch key { - case "Transfer-Encoding", "Trailer", "Content-Length": - // Bogus. (copy of http1 rules) - // Ignore. - default: - if trailer == nil { - trailer = make(http.Header) - } - trailer[key] = nil - } - } - } - delete(rp.header, "Trailer") - - var url_ *url.URL - var requestURI string - if rp.method == "CONNECT" && rp.protocol == "" { - url_ = &url.URL{Host: rp.authority} - requestURI = rp.authority // mimic HTTP/1 server behavior - } else { - var err error - url_, err = url.ParseRequestURI(rp.path) - if err != nil { - return nil, nil, sc.countError("bad_path", streamError(st.id, ErrCodeProtocol)) - } - requestURI = rp.path + res := httpcommon.NewServerRequest(rp) + if res.InvalidReason != "" { + return nil, nil, sc.countError(res.InvalidReason, streamError(st.id, ErrCodeProtocol)) } body := &requestBody{ conn: sc, stream: st, - needsContinue: needsContinue, + needsContinue: res.NeedsContinue, } - req := &http.Request{ - Method: rp.method, - URL: url_, + req := (&http.Request{ + Method: rp.Method, + URL: res.URL, RemoteAddr: sc.remoteAddrStr, - Header: rp.header, - RequestURI: requestURI, + Header: rp.Header, + RequestURI: res.RequestURI, Proto: "HTTP/2.0", ProtoMajor: 2, ProtoMinor: 0, TLS: tlsState, - Host: rp.authority, + Host: rp.Authority, Body: body, - Trailer: trailer, - } - req = req.WithContext(st.ctx) - + Trailer: res.Trailer, + }).WithContext(st.ctx) rw := sc.newResponseWriter(st, req) return rw, req, nil } @@ -3270,12 +3228,12 @@ func (sc *serverConn) startPush(msg *startPushRequest) { // we start in "half closed (remote)" for simplicity. // See further comments at the definition of stateHalfClosedRemote. promised := sc.newStream(promisedID, msg.parent.id, stateHalfClosedRemote) - rw, req, err := sc.newWriterAndRequestNoBody(promised, requestParam{ - method: msg.method, - scheme: msg.url.Scheme, - authority: msg.url.Host, - path: msg.url.RequestURI(), - header: cloneHeader(msg.header), // clone since handler runs concurrently with writing the PUSH_PROMISE + rw, req, err := sc.newWriterAndRequestNoBody(promised, httpcommon.ServerRequestParam{ + Method: msg.method, + Scheme: msg.url.Scheme, + Authority: msg.url.Host, + Path: msg.url.RequestURI(), + Header: cloneHeader(msg.header), // clone since handler runs concurrently with writing the PUSH_PROMISE }) if err != nil { // Should not happen, since we've already validated msg.url. diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index b2e2ed337395..f26356b9cd91 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -25,7 +25,6 @@ import ( "net/http" "net/http/httptrace" "net/textproto" - "sort" "strconv" "strings" "sync" @@ -35,6 +34,7 @@ import ( "golang.org/x/net/http/httpguts" "golang.org/x/net/http2/hpack" "golang.org/x/net/idna" + "golang.org/x/net/internal/httpcommon" ) const ( @@ -1275,23 +1275,6 @@ func (cc *ClientConn) closeForLostPing() { // exported. At least they'll be DeepEqual for h1-vs-h2 comparisons tests. var errRequestCanceled = errors.New("net/http: request canceled") -func commaSeparatedTrailers(req *http.Request) (string, error) { - keys := make([]string, 0, len(req.Trailer)) - for k := range req.Trailer { - k = canonicalHeader(k) - switch k { - case "Transfer-Encoding", "Trailer", "Content-Length": - return "", fmt.Errorf("invalid Trailer key %q", k) - } - keys = append(keys, k) - } - if len(keys) > 0 { - sort.Strings(keys) - return strings.Join(keys, ","), nil - } - return "", nil -} - func (cc *ClientConn) responseHeaderTimeout() time.Duration { if cc.t.t1 != nil { return cc.t.t1.ResponseHeaderTimeout @@ -1303,22 +1286,6 @@ func (cc *ClientConn) responseHeaderTimeout() time.Duration { return 0 } -// checkConnHeaders checks whether req has any invalid connection-level headers. -// per RFC 7540 section 8.1.2.2: Connection-Specific Header Fields. -// Certain headers are special-cased as okay but not transmitted later. -func checkConnHeaders(req *http.Request) error { - if v := req.Header.Get("Upgrade"); v != "" { - return fmt.Errorf("http2: invalid Upgrade request header: %q", req.Header["Upgrade"]) - } - if vv := req.Header["Transfer-Encoding"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && vv[0] != "chunked") { - return fmt.Errorf("http2: invalid Transfer-Encoding request header: %q", vv) - } - if vv := req.Header["Connection"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && !asciiEqualFold(vv[0], "close") && !asciiEqualFold(vv[0], "keep-alive")) { - return fmt.Errorf("http2: invalid Connection request header: %q", vv) - } - return nil -} - // actualContentLength returns a sanitized version of // req.ContentLength, where 0 actually means zero (not unknown) and -1 // means unknown. @@ -1364,25 +1331,7 @@ func (cc *ClientConn) roundTrip(req *http.Request, streamf func(*clientStream)) donec: make(chan struct{}), } - // TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere? - if !cc.t.disableCompression() && - req.Header.Get("Accept-Encoding") == "" && - req.Header.Get("Range") == "" && - !cs.isHead { - // Request gzip only, not deflate. Deflate is ambiguous and - // not as universally supported anyway. - // See: https://zlib.net/zlib_faq.html#faq39 - // - // Note that we don't request this for HEAD requests, - // due to a bug in nginx: - // http://trac.nginx.org/nginx/ticket/358 - // https://golang.org/issue/5522 - // - // We don't request gzip if the request is for a range, since - // auto-decoding a portion of a gzipped document will just fail - // anyway. See https://golang.org/issue/8923 - cs.requestedGzip = true - } + cs.requestedGzip = httpcommon.IsRequestGzip(req.Method, req.Header, cc.t.disableCompression()) go cs.doRequest(req, streamf) @@ -1496,10 +1445,6 @@ func (cs *clientStream) writeRequest(req *http.Request, streamf func(*clientStre cc := cs.cc ctx := cs.ctx - if err := checkConnHeaders(req); err != nil { - return err - } - // wait for setting frames to be received, a server can change this value later, // but we just wait for the first settings frame var isExtendedConnect bool @@ -1663,26 +1608,39 @@ func (cs *clientStream) encodeAndWriteHeaders(req *http.Request) error { // we send: HEADERS{1}, CONTINUATION{0,} + DATA{0,} (DATA is // sent by writeRequestBody below, along with any Trailers, // again in form HEADERS{1}, CONTINUATION{0,}) - trailers, err := commaSeparatedTrailers(req) - if err != nil { - return err - } - hasTrailers := trailers != "" - contentLen := actualContentLength(req) - hasBody := contentLen != 0 - hdrs, err := cc.encodeHeaders(req, cs.requestedGzip, trailers, contentLen) + cc.hbuf.Reset() + res, err := encodeRequestHeaders(req, cs.requestedGzip, cc.peerMaxHeaderListSize, func(name, value string) { + cc.writeHeader(name, value) + }) if err != nil { - return err + return fmt.Errorf("http2: %w", err) } + hdrs := cc.hbuf.Bytes() // Write the request. - endStream := !hasBody && !hasTrailers + endStream := !res.HasBody && !res.HasTrailers cs.sentHeaders = true err = cc.writeHeaders(cs.ID, endStream, int(cc.maxFrameSize), hdrs) traceWroteHeaders(cs.trace) return err } +func encodeRequestHeaders(req *http.Request, addGzipHeader bool, peerMaxHeaderListSize uint64, headerf func(name, value string)) (httpcommon.EncodeHeadersResult, error) { + return httpcommon.EncodeHeaders(req.Context(), httpcommon.EncodeHeadersParam{ + Request: httpcommon.Request{ + Header: req.Header, + Trailer: req.Trailer, + URL: req.URL, + Host: req.Host, + Method: req.Method, + ActualContentLength: actualContentLength(req), + }, + AddGzipHeader: addGzipHeader, + PeerMaxHeaderListSize: peerMaxHeaderListSize, + DefaultUserAgent: defaultUserAgent, + }, headerf) +} + // cleanupWriteRequest performs post-request tasks. // // If err (the result of writeRequest) is non-nil and the stream is not closed, @@ -2070,218 +2028,6 @@ func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) } } -func validateHeaders(hdrs http.Header) string { - for k, vv := range hdrs { - if !httpguts.ValidHeaderFieldName(k) && k != ":protocol" { - return fmt.Sprintf("name %q", k) - } - for _, v := range vv { - if !httpguts.ValidHeaderFieldValue(v) { - // Don't include the value in the error, - // because it may be sensitive. - return fmt.Sprintf("value for header %q", k) - } - } - } - return "" -} - -var errNilRequestURL = errors.New("http2: Request.URI is nil") - -func isNormalConnect(req *http.Request) bool { - return req.Method == "CONNECT" && req.Header.Get(":protocol") == "" -} - -// requires cc.wmu be held. -func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) { - cc.hbuf.Reset() - if req.URL == nil { - return nil, errNilRequestURL - } - - host := req.Host - if host == "" { - host = req.URL.Host - } - host, err := httpguts.PunycodeHostPort(host) - if err != nil { - return nil, err - } - if !httpguts.ValidHostHeader(host) { - return nil, errors.New("http2: invalid Host header") - } - - var path string - if !isNormalConnect(req) { - path = req.URL.RequestURI() - if !validPseudoPath(path) { - orig := path - path = strings.TrimPrefix(path, req.URL.Scheme+"://"+host) - if !validPseudoPath(path) { - if req.URL.Opaque != "" { - return nil, fmt.Errorf("invalid request :path %q from URL.Opaque = %q", orig, req.URL.Opaque) - } else { - return nil, fmt.Errorf("invalid request :path %q", orig) - } - } - } - } - - // Check for any invalid headers+trailers and return an error before we - // potentially pollute our hpack state. (We want to be able to - // continue to reuse the hpack encoder for future requests) - if err := validateHeaders(req.Header); err != "" { - return nil, fmt.Errorf("invalid HTTP header %s", err) - } - if err := validateHeaders(req.Trailer); err != "" { - return nil, fmt.Errorf("invalid HTTP trailer %s", err) - } - - enumerateHeaders := func(f func(name, value string)) { - // 8.1.2.3 Request Pseudo-Header Fields - // The :path pseudo-header field includes the path and query parts of the - // target URI (the path-absolute production and optionally a '?' character - // followed by the query production, see Sections 3.3 and 3.4 of - // [RFC3986]). - f(":authority", host) - m := req.Method - if m == "" { - m = http.MethodGet - } - f(":method", m) - if !isNormalConnect(req) { - f(":path", path) - f(":scheme", req.URL.Scheme) - } - if trailers != "" { - f("trailer", trailers) - } - - var didUA bool - for k, vv := range req.Header { - if asciiEqualFold(k, "host") || asciiEqualFold(k, "content-length") { - // Host is :authority, already sent. - // Content-Length is automatic, set below. - continue - } else if asciiEqualFold(k, "connection") || - asciiEqualFold(k, "proxy-connection") || - asciiEqualFold(k, "transfer-encoding") || - asciiEqualFold(k, "upgrade") || - asciiEqualFold(k, "keep-alive") { - // Per 8.1.2.2 Connection-Specific Header - // Fields, don't send connection-specific - // fields. We have already checked if any - // are error-worthy so just ignore the rest. - continue - } else if asciiEqualFold(k, "user-agent") { - // Match Go's http1 behavior: at most one - // User-Agent. If set to nil or empty string, - // then omit it. Otherwise if not mentioned, - // include the default (below). - didUA = true - if len(vv) < 1 { - continue - } - vv = vv[:1] - if vv[0] == "" { - continue - } - } else if asciiEqualFold(k, "cookie") { - // Per 8.1.2.5 To allow for better compression efficiency, the - // Cookie header field MAY be split into separate header fields, - // each with one or more cookie-pairs. - for _, v := range vv { - for { - p := strings.IndexByte(v, ';') - if p < 0 { - break - } - f("cookie", v[:p]) - p++ - // strip space after semicolon if any. - for p+1 <= len(v) && v[p] == ' ' { - p++ - } - v = v[p:] - } - if len(v) > 0 { - f("cookie", v) - } - } - continue - } - - for _, v := range vv { - f(k, v) - } - } - if shouldSendReqContentLength(req.Method, contentLength) { - f("content-length", strconv.FormatInt(contentLength, 10)) - } - if addGzipHeader { - f("accept-encoding", "gzip") - } - if !didUA { - f("user-agent", defaultUserAgent) - } - } - - // Do a first pass over the headers counting bytes to ensure - // we don't exceed cc.peerMaxHeaderListSize. This is done as a - // separate pass before encoding the headers to prevent - // modifying the hpack state. - hlSize := uint64(0) - enumerateHeaders(func(name, value string) { - hf := hpack.HeaderField{Name: name, Value: value} - hlSize += uint64(hf.Size()) - }) - - if hlSize > cc.peerMaxHeaderListSize { - return nil, errRequestHeaderListSize - } - - trace := httptrace.ContextClientTrace(req.Context()) - traceHeaders := traceHasWroteHeaderField(trace) - - // Header list size is ok. Write the headers. - enumerateHeaders(func(name, value string) { - name, ascii := lowerHeader(name) - if !ascii { - // Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header - // field names have to be ASCII characters (just as in HTTP/1.x). - return - } - cc.writeHeader(name, value) - if traceHeaders { - traceWroteHeaderField(trace, name, value) - } - }) - - return cc.hbuf.Bytes(), nil -} - -// shouldSendReqContentLength reports whether the http2.Transport should send -// a "content-length" request header. This logic is basically a copy of the net/http -// transferWriter.shouldSendContentLength. -// The contentLength is the corrected contentLength (so 0 means actually 0, not unknown). -// -1 means unknown. -func shouldSendReqContentLength(method string, contentLength int64) bool { - if contentLength > 0 { - return true - } - if contentLength < 0 { - return false - } - // For zero bodies, whether we send a content-length depends on the method. - // It also kinda doesn't matter for http2 either way, with END_STREAM. - switch method { - case "POST", "PUT", "PATCH": - return true - default: - return false - } -} - // requires cc.wmu be held. func (cc *ClientConn) encodeTrailers(trailer http.Header) ([]byte, error) { cc.hbuf.Reset() @@ -2298,7 +2044,7 @@ func (cc *ClientConn) encodeTrailers(trailer http.Header) ([]byte, error) { } for k, vv := range trailer { - lowKey, ascii := lowerHeader(k) + lowKey, ascii := httpcommon.LowerHeader(k) if !ascii { // Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header // field names have to be ASCII characters (just as in HTTP/1.x). @@ -2464,6 +2210,13 @@ func (rl *clientConnReadLoop) cleanup() { } cc.cond.Broadcast() cc.mu.Unlock() + + if !cc.seenSettings { + // If we have a pending request that wants extended CONNECT, + // let it continue and fail with the connection error. + cc.extendedConnectAllowed = true + close(cc.seenSettingsChan) + } } // countReadFrameError calls Transport.CountError with a string @@ -2556,9 +2309,6 @@ func (rl *clientConnReadLoop) run() error { if VerboseLogs { cc.vlogf("http2: Transport conn %p received error from processing frame %v: %v", cc, summarizeFrame(f), err) } - if !cc.seenSettings { - close(cc.seenSettingsChan) - } return err } } @@ -2653,7 +2403,7 @@ func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFra Status: status + " " + http.StatusText(statusCode), } for _, hf := range regularFields { - key := canonicalHeader(hf.Name) + key := httpcommon.CanonicalHeader(hf.Name) if key == "Trailer" { t := res.Trailer if t == nil { @@ -2661,7 +2411,7 @@ func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFra res.Trailer = t } foreachHeaderElement(hf.Value, func(v string) { - t[canonicalHeader(v)] = nil + t[httpcommon.CanonicalHeader(v)] = nil }) } else { vv := header[key] @@ -2785,7 +2535,7 @@ func (rl *clientConnReadLoop) processTrailers(cs *clientStream, f *MetaHeadersFr trailer := make(http.Header) for _, hf := range f.RegularFields() { - key := canonicalHeader(hf.Name) + key := httpcommon.CanonicalHeader(hf.Name) trailer[key] = append(trailer[key], hf.Value) } cs.trailer = trailer @@ -3331,7 +3081,7 @@ func (cc *ClientConn) writeStreamReset(streamID uint32, code ErrCode, ping bool, var ( errResponseHeaderListSize = errors.New("http2: response header list larger than advertised limit") - errRequestHeaderListSize = errors.New("http2: request header list larger than peer's advertised limit") + errRequestHeaderListSize = httpcommon.ErrRequestHeaderListSize ) func (cc *ClientConn) logf(format string, args ...interface{}) { @@ -3515,16 +3265,6 @@ func traceFirstResponseByte(trace *httptrace.ClientTrace) { } } -func traceHasWroteHeaderField(trace *httptrace.ClientTrace) bool { - return trace != nil && trace.WroteHeaderField != nil -} - -func traceWroteHeaderField(trace *httptrace.ClientTrace, k, v string) { - if trace != nil && trace.WroteHeaderField != nil { - trace.WroteHeaderField(k, []string{v}) - } -} - func traceGot1xxResponseFunc(trace *httptrace.ClientTrace) func(int, textproto.MIMEHeader) error { if trace != nil { return trace.Got1xxResponse diff --git a/vendor/golang.org/x/net/http2/write.go b/vendor/golang.org/x/net/http2/write.go index 6ff6bee7e954..fdb35b9477eb 100644 --- a/vendor/golang.org/x/net/http2/write.go +++ b/vendor/golang.org/x/net/http2/write.go @@ -13,6 +13,7 @@ import ( "golang.org/x/net/http/httpguts" "golang.org/x/net/http2/hpack" + "golang.org/x/net/internal/httpcommon" ) // writeFramer is implemented by any type that is used to write frames. @@ -351,7 +352,7 @@ func encodeHeaders(enc *hpack.Encoder, h http.Header, keys []string) { } for _, k := range keys { vv := h[k] - k, ascii := lowerHeader(k) + k, ascii := httpcommon.LowerHeader(k) if !ascii { // Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header // field names have to be ASCII characters (just as in HTTP/1.x). diff --git a/vendor/golang.org/x/net/internal/httpcommon/ascii.go b/vendor/golang.org/x/net/internal/httpcommon/ascii.go new file mode 100644 index 000000000000..ed14da5afccc --- /dev/null +++ b/vendor/golang.org/x/net/internal/httpcommon/ascii.go @@ -0,0 +1,53 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package httpcommon + +import "strings" + +// The HTTP protocols are defined in terms of ASCII, not Unicode. This file +// contains helper functions which may use Unicode-aware functions which would +// otherwise be unsafe and could introduce vulnerabilities if used improperly. + +// asciiEqualFold is strings.EqualFold, ASCII only. It reports whether s and t +// are equal, ASCII-case-insensitively. +func asciiEqualFold(s, t string) bool { + if len(s) != len(t) { + return false + } + for i := 0; i < len(s); i++ { + if lower(s[i]) != lower(t[i]) { + return false + } + } + return true +} + +// lower returns the ASCII lowercase version of b. +func lower(b byte) byte { + if 'A' <= b && b <= 'Z' { + return b + ('a' - 'A') + } + return b +} + +// isASCIIPrint returns whether s is ASCII and printable according to +// https://tools.ietf.org/html/rfc20#section-4.2. +func isASCIIPrint(s string) bool { + for i := 0; i < len(s); i++ { + if s[i] < ' ' || s[i] > '~' { + return false + } + } + return true +} + +// asciiToLower returns the lowercase version of s if s is ASCII and printable, +// and whether or not it was. +func asciiToLower(s string) (lower string, ok bool) { + if !isASCIIPrint(s) { + return "", false + } + return strings.ToLower(s), true +} diff --git a/vendor/golang.org/x/net/http2/headermap.go b/vendor/golang.org/x/net/internal/httpcommon/headermap.go similarity index 74% rename from vendor/golang.org/x/net/http2/headermap.go rename to vendor/golang.org/x/net/internal/httpcommon/headermap.go index 149b3dd20e45..92483d8e41a4 100644 --- a/vendor/golang.org/x/net/http2/headermap.go +++ b/vendor/golang.org/x/net/internal/httpcommon/headermap.go @@ -1,11 +1,11 @@ -// Copyright 2014 The Go Authors. All rights reserved. +// Copyright 2025 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -package http2 +package httpcommon import ( - "net/http" + "net/textproto" "sync" ) @@ -82,13 +82,15 @@ func buildCommonHeaderMaps() { commonLowerHeader = make(map[string]string, len(common)) commonCanonHeader = make(map[string]string, len(common)) for _, v := range common { - chk := http.CanonicalHeaderKey(v) + chk := textproto.CanonicalMIMEHeaderKey(v) commonLowerHeader[chk] = v commonCanonHeader[v] = chk } } -func lowerHeader(v string) (lower string, ascii bool) { +// LowerHeader returns the lowercase form of a header name, +// used on the wire for HTTP/2 and HTTP/3 requests. +func LowerHeader(v string) (lower string, ascii bool) { buildCommonHeaderMapsOnce() if s, ok := commonLowerHeader[v]; ok { return s, true @@ -96,10 +98,18 @@ func lowerHeader(v string) (lower string, ascii bool) { return asciiToLower(v) } -func canonicalHeader(v string) string { +// CanonicalHeader canonicalizes a header name. (For example, "host" becomes "Host".) +func CanonicalHeader(v string) string { buildCommonHeaderMapsOnce() if s, ok := commonCanonHeader[v]; ok { return s } - return http.CanonicalHeaderKey(v) + return textproto.CanonicalMIMEHeaderKey(v) +} + +// CachedCanonicalHeader returns the canonical form of a well-known header name. +func CachedCanonicalHeader(v string) (string, bool) { + buildCommonHeaderMapsOnce() + s, ok := commonCanonHeader[v] + return s, ok } diff --git a/vendor/golang.org/x/net/internal/httpcommon/request.go b/vendor/golang.org/x/net/internal/httpcommon/request.go new file mode 100644 index 000000000000..4b705531793c --- /dev/null +++ b/vendor/golang.org/x/net/internal/httpcommon/request.go @@ -0,0 +1,467 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package httpcommon + +import ( + "context" + "errors" + "fmt" + "net/http/httptrace" + "net/textproto" + "net/url" + "sort" + "strconv" + "strings" + + "golang.org/x/net/http/httpguts" + "golang.org/x/net/http2/hpack" +) + +var ( + ErrRequestHeaderListSize = errors.New("request header list larger than peer's advertised limit") +) + +// Request is a subset of http.Request. +// It'd be simpler to pass an *http.Request, of course, but we can't depend on net/http +// without creating a dependency cycle. +type Request struct { + URL *url.URL + Method string + Host string + Header map[string][]string + Trailer map[string][]string + ActualContentLength int64 // 0 means 0, -1 means unknown +} + +// EncodeHeadersParam is parameters to EncodeHeaders. +type EncodeHeadersParam struct { + Request Request + + // AddGzipHeader indicates that an "accept-encoding: gzip" header should be + // added to the request. + AddGzipHeader bool + + // PeerMaxHeaderListSize, when non-zero, is the peer's MAX_HEADER_LIST_SIZE setting. + PeerMaxHeaderListSize uint64 + + // DefaultUserAgent is the User-Agent header to send when the request + // neither contains a User-Agent nor disables it. + DefaultUserAgent string +} + +// EncodeHeadersParam is the result of EncodeHeaders. +type EncodeHeadersResult struct { + HasBody bool + HasTrailers bool +} + +// EncodeHeaders constructs request headers common to HTTP/2 and HTTP/3. +// It validates a request and calls headerf with each pseudo-header and header +// for the request. +// The headerf function is called with the validated, canonicalized header name. +func EncodeHeaders(ctx context.Context, param EncodeHeadersParam, headerf func(name, value string)) (res EncodeHeadersResult, _ error) { + req := param.Request + + // Check for invalid connection-level headers. + if err := checkConnHeaders(req.Header); err != nil { + return res, err + } + + if req.URL == nil { + return res, errors.New("Request.URL is nil") + } + + host := req.Host + if host == "" { + host = req.URL.Host + } + host, err := httpguts.PunycodeHostPort(host) + if err != nil { + return res, err + } + if !httpguts.ValidHostHeader(host) { + return res, errors.New("invalid Host header") + } + + // isNormalConnect is true if this is a non-extended CONNECT request. + isNormalConnect := false + var protocol string + if vv := req.Header[":protocol"]; len(vv) > 0 { + protocol = vv[0] + } + if req.Method == "CONNECT" && protocol == "" { + isNormalConnect = true + } else if protocol != "" && req.Method != "CONNECT" { + return res, errors.New("invalid :protocol header in non-CONNECT request") + } + + // Validate the path, except for non-extended CONNECT requests which have no path. + var path string + if !isNormalConnect { + path = req.URL.RequestURI() + if !validPseudoPath(path) { + orig := path + path = strings.TrimPrefix(path, req.URL.Scheme+"://"+host) + if !validPseudoPath(path) { + if req.URL.Opaque != "" { + return res, fmt.Errorf("invalid request :path %q from URL.Opaque = %q", orig, req.URL.Opaque) + } else { + return res, fmt.Errorf("invalid request :path %q", orig) + } + } + } + } + + // Check for any invalid headers+trailers and return an error before we + // potentially pollute our hpack state. (We want to be able to + // continue to reuse the hpack encoder for future requests) + if err := validateHeaders(req.Header); err != "" { + return res, fmt.Errorf("invalid HTTP header %s", err) + } + if err := validateHeaders(req.Trailer); err != "" { + return res, fmt.Errorf("invalid HTTP trailer %s", err) + } + + trailers, err := commaSeparatedTrailers(req.Trailer) + if err != nil { + return res, err + } + + enumerateHeaders := func(f func(name, value string)) { + // 8.1.2.3 Request Pseudo-Header Fields + // The :path pseudo-header field includes the path and query parts of the + // target URI (the path-absolute production and optionally a '?' character + // followed by the query production, see Sections 3.3 and 3.4 of + // [RFC3986]). + f(":authority", host) + m := req.Method + if m == "" { + m = "GET" + } + f(":method", m) + if !isNormalConnect { + f(":path", path) + f(":scheme", req.URL.Scheme) + } + if protocol != "" { + f(":protocol", protocol) + } + if trailers != "" { + f("trailer", trailers) + } + + var didUA bool + for k, vv := range req.Header { + if asciiEqualFold(k, "host") || asciiEqualFold(k, "content-length") { + // Host is :authority, already sent. + // Content-Length is automatic, set below. + continue + } else if asciiEqualFold(k, "connection") || + asciiEqualFold(k, "proxy-connection") || + asciiEqualFold(k, "transfer-encoding") || + asciiEqualFold(k, "upgrade") || + asciiEqualFold(k, "keep-alive") { + // Per 8.1.2.2 Connection-Specific Header + // Fields, don't send connection-specific + // fields. We have already checked if any + // are error-worthy so just ignore the rest. + continue + } else if asciiEqualFold(k, "user-agent") { + // Match Go's http1 behavior: at most one + // User-Agent. If set to nil or empty string, + // then omit it. Otherwise if not mentioned, + // include the default (below). + didUA = true + if len(vv) < 1 { + continue + } + vv = vv[:1] + if vv[0] == "" { + continue + } + } else if asciiEqualFold(k, "cookie") { + // Per 8.1.2.5 To allow for better compression efficiency, the + // Cookie header field MAY be split into separate header fields, + // each with one or more cookie-pairs. + for _, v := range vv { + for { + p := strings.IndexByte(v, ';') + if p < 0 { + break + } + f("cookie", v[:p]) + p++ + // strip space after semicolon if any. + for p+1 <= len(v) && v[p] == ' ' { + p++ + } + v = v[p:] + } + if len(v) > 0 { + f("cookie", v) + } + } + continue + } else if k == ":protocol" { + // :protocol pseudo-header was already sent above. + continue + } + + for _, v := range vv { + f(k, v) + } + } + if shouldSendReqContentLength(req.Method, req.ActualContentLength) { + f("content-length", strconv.FormatInt(req.ActualContentLength, 10)) + } + if param.AddGzipHeader { + f("accept-encoding", "gzip") + } + if !didUA { + f("user-agent", param.DefaultUserAgent) + } + } + + // Do a first pass over the headers counting bytes to ensure + // we don't exceed cc.peerMaxHeaderListSize. This is done as a + // separate pass before encoding the headers to prevent + // modifying the hpack state. + if param.PeerMaxHeaderListSize > 0 { + hlSize := uint64(0) + enumerateHeaders(func(name, value string) { + hf := hpack.HeaderField{Name: name, Value: value} + hlSize += uint64(hf.Size()) + }) + + if hlSize > param.PeerMaxHeaderListSize { + return res, ErrRequestHeaderListSize + } + } + + trace := httptrace.ContextClientTrace(ctx) + + // Header list size is ok. Write the headers. + enumerateHeaders(func(name, value string) { + name, ascii := LowerHeader(name) + if !ascii { + // Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header + // field names have to be ASCII characters (just as in HTTP/1.x). + return + } + + headerf(name, value) + + if trace != nil && trace.WroteHeaderField != nil { + trace.WroteHeaderField(name, []string{value}) + } + }) + + res.HasBody = req.ActualContentLength != 0 + res.HasTrailers = trailers != "" + return res, nil +} + +// IsRequestGzip reports whether we should add an Accept-Encoding: gzip header +// for a request. +func IsRequestGzip(method string, header map[string][]string, disableCompression bool) bool { + // TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere? + if !disableCompression && + len(header["Accept-Encoding"]) == 0 && + len(header["Range"]) == 0 && + method != "HEAD" { + // Request gzip only, not deflate. Deflate is ambiguous and + // not as universally supported anyway. + // See: https://zlib.net/zlib_faq.html#faq39 + // + // Note that we don't request this for HEAD requests, + // due to a bug in nginx: + // http://trac.nginx.org/nginx/ticket/358 + // https://golang.org/issue/5522 + // + // We don't request gzip if the request is for a range, since + // auto-decoding a portion of a gzipped document will just fail + // anyway. See https://golang.org/issue/8923 + return true + } + return false +} + +// checkConnHeaders checks whether req has any invalid connection-level headers. +// +// https://www.rfc-editor.org/rfc/rfc9114.html#section-4.2-3 +// https://www.rfc-editor.org/rfc/rfc9113.html#section-8.2.2-1 +// +// Certain headers are special-cased as okay but not transmitted later. +// For example, we allow "Transfer-Encoding: chunked", but drop the header when encoding. +func checkConnHeaders(h map[string][]string) error { + if vv := h["Upgrade"]; len(vv) > 0 && (vv[0] != "" && vv[0] != "chunked") { + return fmt.Errorf("invalid Upgrade request header: %q", vv) + } + if vv := h["Transfer-Encoding"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && vv[0] != "chunked") { + return fmt.Errorf("invalid Transfer-Encoding request header: %q", vv) + } + if vv := h["Connection"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && !asciiEqualFold(vv[0], "close") && !asciiEqualFold(vv[0], "keep-alive")) { + return fmt.Errorf("invalid Connection request header: %q", vv) + } + return nil +} + +func commaSeparatedTrailers(trailer map[string][]string) (string, error) { + keys := make([]string, 0, len(trailer)) + for k := range trailer { + k = CanonicalHeader(k) + switch k { + case "Transfer-Encoding", "Trailer", "Content-Length": + return "", fmt.Errorf("invalid Trailer key %q", k) + } + keys = append(keys, k) + } + if len(keys) > 0 { + sort.Strings(keys) + return strings.Join(keys, ","), nil + } + return "", nil +} + +// validPseudoPath reports whether v is a valid :path pseudo-header +// value. It must be either: +// +// - a non-empty string starting with '/' +// - the string '*', for OPTIONS requests. +// +// For now this is only used a quick check for deciding when to clean +// up Opaque URLs before sending requests from the Transport. +// See golang.org/issue/16847 +// +// We used to enforce that the path also didn't start with "//", but +// Google's GFE accepts such paths and Chrome sends them, so ignore +// that part of the spec. See golang.org/issue/19103. +func validPseudoPath(v string) bool { + return (len(v) > 0 && v[0] == '/') || v == "*" +} + +func validateHeaders(hdrs map[string][]string) string { + for k, vv := range hdrs { + if !httpguts.ValidHeaderFieldName(k) && k != ":protocol" { + return fmt.Sprintf("name %q", k) + } + for _, v := range vv { + if !httpguts.ValidHeaderFieldValue(v) { + // Don't include the value in the error, + // because it may be sensitive. + return fmt.Sprintf("value for header %q", k) + } + } + } + return "" +} + +// shouldSendReqContentLength reports whether we should send +// a "content-length" request header. This logic is basically a copy of the net/http +// transferWriter.shouldSendContentLength. +// The contentLength is the corrected contentLength (so 0 means actually 0, not unknown). +// -1 means unknown. +func shouldSendReqContentLength(method string, contentLength int64) bool { + if contentLength > 0 { + return true + } + if contentLength < 0 { + return false + } + // For zero bodies, whether we send a content-length depends on the method. + // It also kinda doesn't matter for http2 either way, with END_STREAM. + switch method { + case "POST", "PUT", "PATCH": + return true + default: + return false + } +} + +// ServerRequestParam is parameters to NewServerRequest. +type ServerRequestParam struct { + Method string + Scheme, Authority, Path string + Protocol string + Header map[string][]string +} + +// ServerRequestResult is the result of NewServerRequest. +type ServerRequestResult struct { + // Various http.Request fields. + URL *url.URL + RequestURI string + Trailer map[string][]string + + NeedsContinue bool // client provided an "Expect: 100-continue" header + + // If the request should be rejected, this is a short string suitable for passing + // to the http2 package's CountError function. + // It might be a bit odd to return errors this way rather than returing an error, + // but this ensures we don't forget to include a CountError reason. + InvalidReason string +} + +func NewServerRequest(rp ServerRequestParam) ServerRequestResult { + needsContinue := httpguts.HeaderValuesContainsToken(rp.Header["Expect"], "100-continue") + if needsContinue { + delete(rp.Header, "Expect") + } + // Merge Cookie headers into one "; "-delimited value. + if cookies := rp.Header["Cookie"]; len(cookies) > 1 { + rp.Header["Cookie"] = []string{strings.Join(cookies, "; ")} + } + + // Setup Trailers + var trailer map[string][]string + for _, v := range rp.Header["Trailer"] { + for _, key := range strings.Split(v, ",") { + key = textproto.CanonicalMIMEHeaderKey(textproto.TrimString(key)) + switch key { + case "Transfer-Encoding", "Trailer", "Content-Length": + // Bogus. (copy of http1 rules) + // Ignore. + default: + if trailer == nil { + trailer = make(map[string][]string) + } + trailer[key] = nil + } + } + } + delete(rp.Header, "Trailer") + + // "':authority' MUST NOT include the deprecated userinfo subcomponent + // for "http" or "https" schemed URIs." + // https://www.rfc-editor.org/rfc/rfc9113.html#section-8.3.1-2.3.8 + if strings.IndexByte(rp.Authority, '@') != -1 && (rp.Scheme == "http" || rp.Scheme == "https") { + return ServerRequestResult{ + InvalidReason: "userinfo_in_authority", + } + } + + var url_ *url.URL + var requestURI string + if rp.Method == "CONNECT" && rp.Protocol == "" { + url_ = &url.URL{Host: rp.Authority} + requestURI = rp.Authority // mimic HTTP/1 server behavior + } else { + var err error + url_, err = url.ParseRequestURI(rp.Path) + if err != nil { + return ServerRequestResult{ + InvalidReason: "bad_path", + } + } + requestURI = rp.Path + } + + return ServerRequestResult{ + URL: url_, + NeedsContinue: needsContinue, + RequestURI: requestURI, + Trailer: trailer, + } +} diff --git a/vendor/golang.org/x/net/publicsuffix/data/children b/vendor/golang.org/x/net/publicsuffix/data/children index 08261bffd196..986a246a6c05 100644 Binary files a/vendor/golang.org/x/net/publicsuffix/data/children and b/vendor/golang.org/x/net/publicsuffix/data/children differ diff --git a/vendor/golang.org/x/net/publicsuffix/data/nodes b/vendor/golang.org/x/net/publicsuffix/data/nodes index 1dae6ede8f29..38b8999600c8 100644 Binary files a/vendor/golang.org/x/net/publicsuffix/data/nodes and b/vendor/golang.org/x/net/publicsuffix/data/nodes differ diff --git a/vendor/golang.org/x/net/publicsuffix/data/text b/vendor/golang.org/x/net/publicsuffix/data/text index 7e516413f6ca..b151d97de276 100644 --- a/vendor/golang.org/x/net/publicsuffix/data/text +++ b/vendor/golang.org/x/net/publicsuffix/data/text @@ -1 +1 @@ -birkenesoddtangentinglogoweirbitbucketrzynishikatakayamatta-varjjatjomembersaltdalovepopartysfjordiskussionsbereichatinhlfanishikatsuragitappassenger-associationishikawazukamiokameokamakurazakitaurayasudabitternidisrechtrainingloomy-routerbjarkoybjerkreimdbalsan-suedtirololitapunkapsienamsskoganeibmdeveloperauniteroirmemorialombardiadempresashibetsukumiyamagasakinderoyonagunicloudevelopmentaxiijimarriottayninhaccanthobby-siteval-d-aosta-valleyoriikaracolognebinatsukigataiwanumatajimidsundgcahcesuolocustomer-ocimperiautoscanalytics-gatewayonagoyaveroykenflfanpachihayaakasakawaiishopitsitemasekd1kappenginedre-eikerimo-siemenscaledekaascolipicenoboribetsucks3-eu-west-3utilities-16-balestrandabergentappsseekloges3-eu-west-123paginawebcamauction-acornfshostrodawaraktyubinskaunicommbank123kotisivultrobjectselinogradimo-i-rana4u2-localhostrolekanieruchomoscientistordal-o-g-i-nikolaevents3-ap-northeast-2-ddnsking123homepagefrontappchizip61123saitamakawababia-goracleaningheannakadomarineat-urlimanowarudakuneustarostwodzislawdev-myqnapcloudcontrolledgesuite-stagingdyniamusementdllclstagehirnikonantomobelementorayokosukanoyakumoliserniaurland-4-salernord-aurdalipaywhirlimiteddnslivelanddnss3-ap-south-123siteweberlevagangaviikanonji234lima-cityeats3-ap-southeast-123webseiteambulancechireadmyblogspotaribeiraogakicks-assurfakefurniturealmpmninoheguribigawaurskog-holandinggfarsundds3-ap-southeast-20001wwwedeployokote123hjemmesidealerdalaheadjuegoshikibichuobiraustevollimombetsupplyokoze164-balena-devices3-ca-central-123websiteleaf-south-12hparliamentatsunobninsk8s3-eu-central-1337bjugnishimerablackfridaynightjxn--11b4c3ditchyouripatriabloombergretaijindustriesteinkjerbloxcmsaludivtasvuodnakaiwanairlinekobayashimodatecnologiablushakotanishinomiyashironomniwebview-assetsalvadorbmoattachmentsamegawabmsamnangerbmwellbeingzonebnrweatherchannelsdvrdnsamparalleluxenishinoomotegotsukishiwadavvenjargamvikarpaczest-a-la-maisondre-landivttasvuotnakamai-stagingloppennebomlocalzonebonavstackartuzybondigitaloceanspacesamsclubartowest1-usamsunglugsmall-webspacebookonlineboomlaakesvuemielecceboschristmasakilatiron-riopretoeidsvollovesickaruizawabostik-serverrankoshigayachtsandvikcoromantovalle-d-aostakinouebostonakijinsekikogentlentapisa-geekarumaifmemsetkmaxxn--12c1fe0bradescotksatmpaviancapitalonebouncemerckmsdscloudiybounty-fullensakerrypropertiesangovtoyosatoyokawaboutiquebecologialaichaugiangmbhartiengiangminakamichiharaboutireservdrangedalpusercontentoyotapfizerboyfriendoftheinternetflixn--12cfi8ixb8lublindesnesanjosoyrovnoticiasannanishinoshimattelemarkasaokamikitayamatsurinfinitigopocznore-og-uvdalucaniabozen-sudtiroluccanva-appstmnishiokoppegardray-dnsupdaterbozen-suedtirolukowesteuropencraftoyotomiyazakinsurealtypeformesswithdnsannohekinanporovigonohejinternationaluroybplacedogawarabikomaezakirunordkappgfoggiabrandrayddns5ybrasiliadboxoslockerbresciaogashimadachicappadovaapstemp-dnswatchest-mon-blogueurodirumagazinebrindisiciliabroadwaybroke-itvedestrandraydnsanokashibatakashimashikiyosatokigawabrokerbrothermesserlifestylebtimnetzpisdnpharmaciensantamariakebrowsersafetymarketingmodumetacentrumeteorappharmacymruovatlassian-dev-builderschaefflerbrumunddalutskashiharabrusselsantoandreclaimsanukintlon-2bryanskiptveterinaireadthedocsaobernardovre-eikerbrynebwestus2bzhitomirbzzwhitesnowflakecommunity-prochowicecomodalenissandoycompanyaarphdfcbankasumigaurawa-mazowszexn--1ck2e1bambinagisobetsuldalpha-myqnapcloudaccess3-us-east-2ixboxeroxfinityolasiteastus2comparemarkerryhotelsaves-the-whalessandria-trani-barletta-andriatranibarlettaandriacomsecaasnesoddeno-stagingrondarcondoshifteditorxn--1ctwolominamatarnobrzegrongrossetouchijiwadedyn-berlincolnissayokoshibahikariyaltakazakinzais-a-bookkeepermarshallstatebankasuyalibabahccavuotnagaraholtaleniwaizumiotsurugashimaintenanceomutazasavonarviikaminoyamaxunispaceconferenceconstructionflashdrivefsncf-ipfsaxoconsuladobeio-static-accesscamdvrcampaniaconsultantranoyconsultingroundhandlingroznysaitohnoshookuwanakayamangyshlakdnepropetrovskanlandyndns-freeboxostrowwlkpmgrphilipsyno-dschokokekscholarshipschoolbusinessebycontactivetrailcontagematsubaravendbambleborkdalvdalcest-le-patron-rancherkasydneyukuhashimokawavoues3-sa-east-1contractorskenissedalcookingruecoolblogdnsfor-better-thanhhoarairforcentralus-1cooperativano-frankivskodjeephonefosschoolsztynsetransiphotographysiocoproductionschulplattforminamiechizenisshingucciprianiigatairaumalatvuopmicrolightinguidefinimaringatlancastercorsicafjschulservercosenzakopanecosidnshome-webservercellikescandypopensocialcouchpotatofrieschwarzgwangjuh-ohtawaramotoineppueblockbusternopilawacouncilcouponscrapper-sitecozoravennaharimalborkaszubytemarketscrappinguitarscrysecretrosnubananarepublic-inquiryurihonjoyenthickaragandaxarnetbankanzakiwielunnerepairbusanagochigasakishimabarakawaharaolbia-tempio-olbiatempioolbialowiezachpomorskiengiangjesdalolipopmcdirepbodyn53cqcxn--1lqs03niyodogawacrankyotobetsumidaknongujaratmallcrdyndns-homednscwhminamifuranocreditcardyndns-iphutholdingservehttpbincheonl-ams-1creditunionionjukujitawaravpagecremonashorokanaiecrewhoswholidaycricketnedalcrimeast-kazakhstanangercrotonecrowniphuyencrsvp4cruiseservehumourcuisinellair-traffic-controllagdenesnaaseinet-freakserveircasertainaircraftingvolloansnasaarlanduponthewifidelitypedreamhostersaotomeldaluxurycuneocupcakecuritibacgiangiangryggeecurvalled-aostargets-itranslatedyndns-mailcutegirlfriendyndns-office-on-the-webhoptogurafedoraprojectransurlfeirafembetsukuis-a-bruinsfanfermodenakasatsunairportrapaniizaferraraferraris-a-bulls-fanferrerotikagoshimalopolskanittedalfetsundyndns-wikimobetsumitakagildeskaliszkolamericanfamilydservemp3fgunmaniwamannorth-kazakhstanfhvalerfilegear-augustowiiheyakagefilegear-deatnuniversitysvardofilegear-gbizfilegear-iefilegear-jpmorgangwonporterfilegear-sg-1filminamiizukamiminefinalchikugokasellfyis-a-candidatefinancefinnoyfirebaseappiemontefirenetlifylkesbiblackbaudcdn-edgestackhero-networkinggroupowiathletajimabaria-vungtaudiopsysharpigboatshawilliamhillfirenzefirestonefireweblikes-piedmontravelersinsurancefirmdalegalleryfishingoldpoint2thisamitsukefitjarfitnessettsurugiminamimakis-a-catererfjalerfkatsushikabeebyteappilottonsberguovdageaidnunjargausdalflekkefjordyndns-workservep2phxn--1lqs71dyndns-remotewdyndns-picserveminecraftransporteflesbergushikamifuranorthflankatsuyamashikokuchuoflickragerokunohealthcareershellflierneflirfloginlinefloppythonanywherealtorfloraflorencefloripalmasfjordenfloristanohatajiris-a-celticsfanfloromskogxn--2m4a15eflowershimokitayamafltravinhlonganflynnhosting-clusterfncashgabadaddjabbottoyourafndyndns1fnwkzfolldalfoolfor-ourfor-somegurownproviderfor-theaterfordebianforexrotheworkpccwinbar0emmafann-arborlandd-dnsiskinkyowariasahikawarszawashtenawsmppl-wawsglobalacceleratorahimeshimakanegasakievennodebalancern4t3l3p0rtatarantours3-ap-northeast-123minsidaarborteaches-yogano-ipifony-123miwebaccelastx4432-b-datacenterprisesakijobservableusercontentateshinanomachintaifun-dnsdojournalistoloseyouriparisor-fronavuotnarashinoharaetnabudejjunipereggio-emilia-romagnaroyboltateyamajureggiocalabriakrehamnayoro0o0forgotdnshimonitayanagithubpreviewsaikisarazure-mobileirfjordynnservepicservequakeforli-cesena-forlicesenaforlillehammerfeste-ipimientaketomisatoolshimonosekikawaforsalegoismailillesandefjordynservebbservesarcasmileforsandasuolodingenfortalfortefosneshimosuwalkis-a-chefashionstorebaseljordyndns-serverisignfotrdynulvikatowicefoxn--2scrj9casinordlandurbanamexnetgamersapporomurafozfr-1fr-par-1fr-par-2franamizuhoboleslawiecommerce-shoppingyeongnamdinhachijohanamakisofukushimaoris-a-conservativegarsheiheijis-a-cparachutingfredrikstadynv6freedesktopazimuthaibinhphuocelotenkawakayamagnetcieszynh-servebeero-stageiseiroumugifuchungbukharag-cloud-championshiphoplixn--30rr7yfreemyiphosteurovisionredumbrellangevagrigentobishimadridvagsoygardenebakkeshibechambagricoharugbydgoszczecin-berlindasdaburfreesitefreetlshimotsukefreisennankokubunjis-a-cubicle-slavellinodeobjectshimotsumafrenchkisshikindleikangerfreseniushinichinanfriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriuli-venezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giuliafriulive-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagiuliafriulivgiuliafrlfroganshinjotelulubin-vpncateringebunkyonanaoshimamateramockashiwarafrognfrolandynvpnpluservicesevastopolitiendafrom-akamaized-stagingfrom-alfrom-arfrom-azurewebsiteshikagamiishibuyabukihokuizumobaragusabaerobaticketshinjukuleuvenicefrom-campobassociatest-iserveblogsytenrissadistdlibestadultrentin-sudtirolfrom-coachaseljeducationcillahppiacenzaganfrom-ctrentin-sued-tirolfrom-dcatfooddagestangefrom-decagliarikuzentakataikillfrom-flapymntrentin-suedtirolfrom-gap-east-1from-higashiagatsumagoianiafrom-iafrom-idyroyrvikingulenfrom-ilfrom-in-the-bandairtelebitbridgestonemurorangecloudplatform0from-kshinkamigototalfrom-kyfrom-langsonyantakahamalselveruminamiminowafrom-malvikaufentigerfrom-mdfrom-mein-vigorlicefrom-mifunefrom-mnfrom-modshinshinotsurgeryfrom-mshinshirofrom-mtnfrom-ncatholicurus-4from-ndfrom-nefrom-nhs-heilbronnoysundfrom-njshintokushimafrom-nminamioguni5from-nvalledaostargithubusercontentrentino-a-adigefrom-nycaxiaskvollpagesardegnarutolgaulardalvivanovoldafrom-ohdancefrom-okegawassamukawataris-a-democratrentino-aadigefrom-orfrom-panasonichernovtsykkylvenneslaskerrylogisticsardiniafrom-pratohmamurogawatsonrenderfrom-ris-a-designerimarugame-hostyhostingfrom-schmidtre-gauldalfrom-sdfrom-tnfrom-txn--32vp30hachinoheavyfrom-utsiracusagaeroclubmedecin-addrammenuorodoyerfrom-val-daostavalleyfrom-vtrentino-alto-adigefrom-wafrom-wiardwebthingsjcbnpparibashkiriafrom-wvallee-aosteroyfrom-wyfrosinonefrostabackplaneapplebesbyengerdalp1froyal-commissionfruskydivingfujiiderafujikawaguchikonefujiminokamoenairtrafficplexus-2fujinomiyadapliefujiokazakinkobearalvahkikonaibetsubame-south-1fujisatoshoeshintomikasaharafujisawafujishiroishidakabiratoridediboxn--3bst00minamisanrikubetsupportrentino-altoadigefujitsuruokakamigaharafujiyoshidappnodearthainguyenfukayabeardubaikawagoefukuchiyamadatsunanjoburgfukudomigawafukuis-a-doctorfukumitsubishigakirkeneshinyoshitomiokamisatokamachippubetsuikitchenfukuokakegawafukuroishikariwakunigamigrationfukusakirovogradoyfukuyamagatakaharunusualpersonfunabashiriuchinadattorelayfunagatakahashimamakiryuohkurafunahashikamiamakusatsumasendaisenergyeongginowaniihamatamakinoharafundfunkfeuerfuoiskujukuriyamandalfuosskoczowindowskrakowinefurubirafurudonordreisa-hockeynutwentertainmentrentino-s-tirolfurukawajimangolffanshiojirishirifujiedafusoctrangfussagamiharafutabayamaguchinomihachimanagementrentino-stirolfutboldlygoingnowhere-for-more-og-romsdalfuttsurutashinais-a-financialadvisor-aurdalfuturecmshioyamelhushirahamatonbetsurnadalfuturehostingfuturemailingfvghakuis-a-gurunzenhakusandnessjoenhaldenhalfmoonscalebookinghostedpictetrentino-sud-tirolhalsakakinokiaham-radio-opinbar1hamburghammarfeastasiahamurakamigoris-a-hard-workershiraokamisunagawahanamigawahanawahandavvesiidanangodaddyn-o-saurealestatefarmerseinehandcrafteducatorprojectrentino-sudtirolhangglidinghangoutrentino-sued-tirolhannannestadhannosegawahanoipinkazohanyuzenhappouzshiratakahagianghasamap-northeast-3hasaminami-alpshishikuis-a-hunterhashbanghasudazaifudaigodogadobeioruntimedio-campidano-mediocampidanomediohasura-appinokokamikoaniikappudopaashisogndalhasvikazteleportrentino-suedtirolhatogayahoooshikamagayaitakamoriokakudamatsuehatoyamazakitahiroshimarcheapartmentshisuifuettertdasnetzhatsukaichikaiseiyoichipshitaramahattfjelldalhayashimamotobusells-for-lesshizukuishimoichilloutsystemscloudsitehazuminobushibukawahelplfinancialhelsinkitakamiizumisanofidonnakamurataitogliattinnhemneshizuokamitondabayashiogamagoriziahemsedalhepforgeblockshoujis-a-knightpointtokaizukamaishikshacknetrentinoa-adigehetemlbfanhigashichichibuzentsujiiehigashihiroshimanehigashiizumozakitakatakanabeautychyattorneyagawakkanaioirasebastopoleangaviikadenagahamaroyhigashikagawahigashikagurasoedahigashikawakitaaikitakyushunantankazunovecorebungoonow-dnshowahigashikurumeinforumzhigashimatsushimarnardalhigashimatsuyamakitaakitadaitoigawahigashimurayamamotorcycleshowtimeloyhigashinarusells-for-uhigashinehigashiomitamanoshiroomghigashiosakasayamanakakogawahigashishirakawamatakanezawahigashisumiyoshikawaminamiaikitamihamadahigashitsunospamproxyhigashiurausukitamotosunnydayhigashiyamatokoriyamanashiibaclieu-1higashiyodogawahigashiyoshinogaris-a-landscaperspectakasakitanakagusukumoldeliveryhippyhiraizumisatohokkaidontexistmein-iservschulecznakaniikawatanagurahirakatashinagawahiranais-a-lawyerhirarahiratsukaeruhirayaizuwakamatsubushikusakadogawahitachiomiyaginozawaonsensiositehitachiotaketakaokalmykiahitraeumtgeradegreehjartdalhjelmelandholyhomegoodshwinnersiiitesilkddiamondsimple-urlhomeipioneerhomelinkyard-cloudjiffyresdalhomelinuxn--3ds443ghomeofficehomesecuritymacaparecidahomesecuritypchiryukyuragiizehomesenseeringhomeskleppippugliahomeunixn--3e0b707ehondahonjyoitakarazukaluganskfh-muensterhornindalhorsells-itrentinoaadigehortendofinternet-dnsimplesitehospitalhotelwithflightsirdalhotmailhoyangerhoylandetakasagooglecodespotrentinoalto-adigehungyenhurdalhurumajis-a-liberalhyllestadhyogoris-a-libertarianhyugawarahyundaiwafuneis-very-evillasalleitungsenis-very-goodyearis-very-niceis-very-sweetpepperugiais-with-thebandoomdnstraceisk01isk02jenv-arubacninhbinhdinhktistoryjeonnamegawajetztrentinostiroljevnakerjewelryjgorajlljls-sto1jls-sto2jls-sto3jmpixolinodeusercontentrentinosud-tiroljnjcloud-ver-jpchitosetogitsuliguriajoyokaichibahcavuotnagaivuotnagaokakyotambabymilk3jozis-a-musicianjpnjprsolarvikhersonlanxessolundbeckhmelnitskiyamasoykosaigawakosakaerodromegalloabatobamaceratachikawafaicloudineencoreapigeekoseis-a-painterhostsolutionslupskhakassiakosheroykoshimizumakis-a-patsfankoshughesomakosugekotohiradomainstitutekotourakouhokumakogenkounosupersalevangerkouyamasudakouzushimatrixn--3pxu8khplaystation-cloudyclusterkozagawakozakis-a-personaltrainerkozowiosomnarviklabudhabikinokawachinaganoharamcocottekpnkppspbarcelonagawakepnord-odalwaysdatabaseballangenkainanaejrietisalatinabenogiehtavuoatnaamesjevuemielnombrendlyngen-rootaruibxos3-us-gov-west-1krasnikahokutokonamegatakatoris-a-photographerokussldkrasnodarkredstonekrelliankristiansandcatsoowitdkmpspawnextdirectrentinosudtirolkristiansundkrodsheradkrokstadelvaldaostavangerkropyvnytskyis-a-playershiftcryptonomichinomiyakekryminamiyamashirokawanabelaudnedalnkumamotoyamatsumaebashimofusakatakatsukis-a-republicanonoichinosekigaharakumanowtvaokumatorinokumejimatsumotofukekumenanyokkaichirurgiens-dentistes-en-francekundenkunisakis-a-rockstarachowicekunitachiaraisaijolsterkunitomigusukukis-a-socialistgstagekunneppubtlsopotrentinosued-tirolkuokgroupizzakurgankurobegetmyipirangalluplidlugolekagaminorddalkurogimimozaokinawashirosatochiokinoshimagentositempurlkuroisodegaurakuromatsunais-a-soxfankuronkurotakikawasakis-a-studentalkushirogawakustanais-a-teacherkassyncloudkusuppliesor-odalkutchanelkutnokuzumakis-a-techietipslzkvafjordkvalsundkvamsterdamnserverbaniakvanangenkvinesdalkvinnheradkviteseidatingkvitsoykwpspdnsor-varangermishimatsusakahogirlymisugitokorozawamitakeharamitourismartlabelingmitoyoakemiuramiyazurecontainerdpoliticaobangmiyotamatsukuris-an-actormjondalenmonzabrianzaramonzaebrianzamonzaedellabrianzamordoviamorenapolicemoriyamatsuuramoriyoshiminamiashigaramormonstermoroyamatsuzakis-an-actressmushcdn77-sslingmortgagemoscowithgoogleapiszmoseushimogosenmosjoenmoskenesorreisahayakawakamiichikawamisatottoris-an-anarchistjordalshalsenmossortlandmosviknx-serversusakiyosupabaseminemotegit-reposoruminanomoviemovimientokyotangotembaixadattowebhareidsbergmozilla-iotrentinosuedtirolmtranbytomaridagawalmartrentinsud-tirolmuikaminokawanishiaizubangemukoelnmunakatanemuosattemupkomatsushimassa-carrara-massacarraramassabuzzmurmanskomforbar2murotorcraftranakatombetsumy-gatewaymusashinodesakegawamuseumincomcastoripressorfoldmusicapetownnews-stagingmutsuzawamy-vigormy-wanggoupilemyactivedirectorymyamazeplaymyasustor-elvdalmycdmycloudnsoundcastorjdevcloudfunctionsokndalmydattolocalcertificationmyddnsgeekgalaxymydissentrentinsudtirolmydobissmarterthanyoumydrobofageometre-experts-comptablesowamydspectruminisitemyeffectrentinsued-tirolmyfastly-edgekey-stagingmyfirewalledreplittlestargardmyforuminterecifedextraspace-to-rentalstomakomaibaramyfritzmyftpaccesspeedpartnermyhome-servermyjinomykolaivencloud66mymailermymediapchoseikarugalsacemyokohamamatsudamypeplatformsharis-an-artistockholmestrandmypetsphinxn--41amyphotoshibajddarvodkafjordvaporcloudmypictureshinomypsxn--42c2d9amysecuritycamerakermyshopblockspjelkavikommunalforbundmyshopifymyspreadshopselectrentinsuedtirolmytabitordermythic-beastspydebergmytis-a-anarchistg-buildermytuleap-partnersquaresindevicenzamyvnchoshichikashukudoyamakeuppermywirecipescaracallypoivronpokerpokrovskommunepolkowicepoltavalle-aostavernpomorzeszowithyoutuberspacekitagawaponpesaro-urbino-pesarourbinopesaromasvuotnaritakurashikis-bykleclerchitachinakagawaltervistaipeigersundynamic-dnsarlpordenonepornporsangerporsangugeporsgrunnanpoznanpraxihuanprdprgmrprimetelprincipeprivatelinkomonowruzhgorodeoprivatizehealthinsuranceprofesionalprogressivegasrlpromonza-e-della-brianzaptokuyamatsushigepropertysnesrvarggatrevisogneprotectionprotonetroandindependent-inquest-a-la-masionprudentialpruszkowiwatsukiyonotaireserve-onlineprvcyonabarumbriaprzeworskogpunyufuelpupulawypussycatanzarowixsitepvhachirogatakahatakaishimojis-a-geekautokeinotteroypvtrogstadpwchowderpzqhadanorthwesternmutualqldqotoyohashimotoshimaqponiatowadaqslgbtroitskomorotsukagawaqualifioapplatter-applatterplcube-serverquangngais-certifiedugit-pagespeedmobilizeroticaltanissettailscaleforcequangninhthuanquangtritonoshonais-foundationquickconnectromsakuragawaquicksytestreamlitapplumbingouvaresearchitectesrhtrentoyonakagyokutoyakomakizunokunimimatakasugais-an-engineeringquipelementstrippertuscanytushungrytuvalle-daostamayukis-into-animeiwamizawatuxfamilytuyenquangbinhthuantwmailvestnesuzukis-gonevestre-slidreggio-calabriavestre-totennishiawakuravestvagoyvevelstadvibo-valentiaavibovalentiavideovinhphuchromedicinagatorogerssarufutsunomiyawakasaikaitakokonoevinnicarbonia-iglesias-carboniaiglesiascarboniavinnytsiavipsinaapplurinacionalvirginanmokurennebuvirtual-userveexchangevirtualservervirtualuserveftpodhalevisakurais-into-carsnoasakuholeckodairaviterboliviajessheimmobilienvivianvivoryvixn--45br5cylvlaanderennesoyvladikavkazimierz-dolnyvladimirvlogintoyonezawavmintsorocabalashovhachiojiyahikobierzycevologdanskoninjambylvolvolkswagencyouvolyngdalvoorlopervossevangenvotevotingvotoyonovps-hostrowiechungnamdalseidfjordynathomebuiltwithdarkhangelskypecorittogojomeetoystre-slidrettozawawmemergencyahabackdropalermochizukikirarahkkeravjuwmflabsvalbardunloppadualstackomvuxn--3hcrj9chonanbuskerudynamisches-dnsarpsborgripeeweeklylotterywoodsidellogliastradingworse-thanhphohochiminhadselbuyshouseshirakolobrzegersundongthapmircloudletshiranukamishihorowowloclawekonskowolawawpdevcloudwpenginepoweredwphostedmailwpmucdnipropetrovskygearappodlasiellaknoluoktagajobojis-an-entertainerwpmudevcdnaccessojamparaglidingwritesthisblogoipodzonewroclawmcloudwsseoullensvanguardianwtcp4wtfastlylbanzaicloudappspotagereporthruherecreationinomiyakonojorpelandigickarasjohkameyamatotakadawuozuerichardlillywzmiuwajimaxn--4it797konsulatrobeepsondriobranconagareyamaizuruhrxn--4pvxs4allxn--54b7fta0ccistrondheimpertrixcdn77-secureadymadealstahaugesunderxn--55qw42gxn--55qx5dxn--5dbhl8dxn--5js045dxn--5rtp49citadelhichisochimkentozsdell-ogliastraderxn--5rtq34kontuminamiuonumatsunoxn--5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264citicarrdrobakamaiorigin-stagingmxn--12co0c3b4evalleaostaobaomoriguchiharaffleentrycloudflare-ipfstcgroupaaskimitsubatamibulsan-suedtirolkuszczytnoopscbgrimstadrrxn--80aaa0cvacationsvchoyodobashichinohealth-carereforminamidaitomanaustdalxn--80adxhksveioxn--80ao21axn--80aqecdr1axn--80asehdbarclaycards3-us-west-1xn--80aswgxn--80aukraanghkeliwebpaaskoyabeagleboardxn--8dbq2axn--8ltr62konyvelohmusashimurayamassivegridxn--8pvr4uxn--8y0a063axn--90a1affinitylotterybnikeisencowayxn--90a3academiamicable-modemoneyxn--90aeroportsinfolionetworkangerxn--90aishobaraxn--90amckinseyxn--90azhytomyrxn--9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aroport-byanagawaxn--asky-iraxn--aurskog-hland-jnbarclays3-us-west-2xn--avery-yuasakurastoragexn--b-5gaxn--b4w605ferdxn--balsan-sdtirol-nsbsvelvikongsbergxn--bck1b9a5dre4civilaviationfabricafederation-webredirectmediatechnologyeongbukashiwazakiyosembokutamamuraxn--bdddj-mrabdxn--bearalvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyanaizuxn--bjddar-ptarumizusawaxn--blt-elabcienciamallamaceiobbcn-north-1xn--bmlo-graingerxn--bod-2natalxn--bozen-sdtirol-2obanazawaxn--brnny-wuacademy-firewall-gatewayxn--brnnysund-m8accident-investigation-aptibleadpagesquare7xn--brum-voagatrustkanazawaxn--btsfjord-9zaxn--bulsan-sdtirol-nsbarefootballooningjovikarasjoketokashikiyokawaraxn--c1avgxn--c2br7gxn--c3s14misakis-a-therapistoiaxn--cck2b3baremetalombardyn-vpndns3-website-ap-northeast-1xn--cckwcxetdxn--cesena-forl-mcbremangerxn--cesenaforl-i8axn--cg4bkis-into-cartoonsokamitsuexn--ciqpnxn--clchc0ea0b2g2a9gcdxn--czr694bargainstantcloudfrontdoorestauranthuathienhuebinordre-landiherokuapparochernigovernmentjeldsundiscordsays3-website-ap-southeast-1xn--czrs0trvaroyxn--czru2dxn--czrw28barrel-of-knowledgeapplinziitatebayashijonawatebizenakanojoetsumomodellinglassnillfjordiscordsezgoraxn--d1acj3barrell-of-knowledgecomputermezproxyzgorzeleccoffeedbackanagawarmiastalowa-wolayangroupars3-website-ap-southeast-2xn--d1alfaststacksevenassigdalxn--d1atrysiljanxn--d5qv7z876clanbibaiduckdnsaseboknowsitallxn--davvenjrga-y4axn--djrs72d6uyxn--djty4koobindalxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dyry-iraxn--e1a4cldmail-boxaxn--eckvdtc9dxn--efvn9svn-repostuff-4-salexn--efvy88haebaruericssongdalenviknaklodzkochikushinonsenasakuchinotsuchiurakawaxn--ehqz56nxn--elqq16hagakhanhhoabinhduongxn--eveni-0qa01gaxn--f6qx53axn--fct429kooris-a-nascarfanxn--fhbeiarnxn--finny-yuaxn--fiq228c5hsbcleverappsassarinuyamashinazawaxn--fiq64barsycenterprisecloudcontrolappgafanquangnamasteigenoamishirasatochigifts3-website-eu-west-1xn--fiqs8swidnicaravanylvenetogakushimotoganexn--fiqz9swidnikitagatakkomaganexn--fjord-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-cesena-fcbsswiebodzindependent-commissionxn--forlcesena-c8axn--fpcrj9c3dxn--frde-granexn--frna-woaxn--frya-hraxn--fzc2c9e2clickrisinglesjaguarxn--fzys8d69uvgmailxn--g2xx48clinicasacampinagrandebungotakadaemongolianishitosashimizunaminamiawajikintuitoyotsukaidownloadrudtvsaogoncapooguyxn--gckr3f0fastvps-serveronakanotoddenxn--gecrj9cliniquedaklakasamatsudoesntexisteingeekasserversicherungroks-theatrentin-sud-tirolxn--ggaviika-8ya47hagebostadxn--gildeskl-g0axn--givuotna-8yandexcloudxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050is-into-gamessinamsosnowieconomiasadojin-dslattuminamitanexn--gmqw5axn--gnstigbestellen-zvbrplsbxn--45brj9churcharterxn--gnstigliefern-wobihirosakikamijimayfirstorfjordxn--h-2failxn--h1ahnxn--h1alizxn--h2breg3eveneswinoujsciencexn--h2brj9c8clothingdustdatadetectrani-andria-barletta-trani-andriaxn--h3cuzk1dienbienxn--hbmer-xqaxn--hcesuolo-7ya35barsyonlinehimejiiyamanouchikujoinvilleirvikarasuyamashikemrevistathellequipmentjmaxxxjavald-aostatics3-website-sa-east-1xn--hebda8basicserversejny-2xn--hery-iraxn--hgebostad-g3axn--hkkinen-5waxn--hmmrfeasta-s4accident-prevention-k3swisstufftoread-booksnestudioxn--hnefoss-q1axn--hobl-iraxn--holtlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1b6b1a6a2exn--imr513nxn--indery-fyaotsusonoxn--io0a7is-leetrentinoaltoadigexn--j1adpohlxn--j1aefauskedsmokorsetagayaseralingenovaraxn--j1ael8basilicataniaxn--j1amhaibarakisosakitahatakamatsukawaxn--j6w193gxn--jlq480n2rgxn--jlster-byasakaiminatoyookananiimiharuxn--jrpeland-54axn--jvr189misasaguris-an-accountantsmolaquilaocais-a-linux-useranishiaritabashikaoizumizakitashiobaraxn--k7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--45q11circlerkstagentsasayamaxn--koluokta-7ya57haiduongxn--kprw13dxn--kpry57dxn--kput3is-lostre-toteneis-a-llamarumorimachidaxn--krager-gyasugitlabbvieeexn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--krjohka-hwab49jdfastly-terrariuminamiiseharaxn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-fyasuokanmakiwakuratexn--kvnangen-k0axn--l-1fairwindsynology-diskstationxn--l1accentureklamborghinikkofuefukihabororosynology-dsuzakadnsaliastudynaliastrynxn--laheadju-7yatominamibosoftwarendalenugxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika-52basketballfinanzjaworznoticeableksvikaratsuginamikatagamilanotogawaxn--lesund-huaxn--lgbbat1ad8jejuxn--lgrd-poacctulaspeziaxn--lhppi-xqaxn--linds-pramericanexpresservegame-serverxn--loabt-0qaxn--lrdal-sraxn--lrenskog-54axn--lt-liacn-northwest-1xn--lten-granvindafjordxn--lury-iraxn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2ddesxn--mgb9awbfbsbxn--1qqw23axn--mgba3a3ejtunesuzukamogawaxn--mgba3a4f16axn--mgba3a4fra1-deloittexn--mgba7c0bbn0axn--mgbaakc7dvfsxn--mgbaam7a8haiphongonnakatsugawaxn--mgbab2bdxn--mgbah1a3hjkrdxn--mgbai9a5eva00batsfjordiscountry-snowplowiczeladzlgleezeu-2xn--mgbai9azgqp6jelasticbeanstalkharkovalleeaostexn--mgbayh7gparasitexn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgbcpq6gpa1axn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgbpl2fhskopervikhmelnytskyivalleedaostexn--mgbqly7c0a67fbcngroks-thisayamanobeatsaudaxn--mgbqly7cvafricargoboavistanbulsan-sudtirolxn--mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2bauhauspostman-echofunatoriginstances3-website-us-east-1xn--mgbx4cd0abkhaziaxn--mix082fbx-osewienxn--mix891fbxosexyxn--mjndalen-64axn--mk0axindependent-inquiryxn--mk1bu44cnpyatigorskjervoyagexn--mkru45is-not-certifiedxn--mlatvuopmi-s4axn--mli-tlavagiskexn--mlselv-iuaxn--moreke-juaxn--mori-qsakuratanxn--mosjen-eyatsukannamihokksundxn--mot-tlavangenxn--mre-og-romsdal-qqbuservecounterstrikexn--msy-ula0hair-surveillancexn--mtta-vrjjat-k7aflakstadaokayamazonaws-cloud9guacuiababybluebiteckidsmynasushiobaracingrok-freeddnsfreebox-osascoli-picenogatabuseating-organicbcgjerdrumcprequalifymelbourneasypanelblagrarq-authgear-stagingjerstadeltaishinomakilovecollegefantasyleaguenoharauthgearappspacehosted-by-previderehabmereitattoolforgerockyombolzano-altoadigeorgeorgiauthordalandroideporteatonamidorivnebetsukubankanumazuryomitanocparmautocodebergamoarekembuchikumagayagawafflecelloisirs3-external-180reggioemiliaromagnarusawaustrheimbalsan-sudtirolivingitpagexlivornobserveregruhostingivestbyglandroverhalladeskjakamaiedge-stagingivingjemnes3-eu-west-2038xn--muost-0qaxn--mxtq1misawaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--4dbgdty6ciscofreakamaihd-stagingriwataraindroppdalxn--nit225koryokamikawanehonbetsuwanouchikuhokuryugasakis-a-nursellsyourhomeftpiwatexn--nmesjevuemie-tcbalatinord-frontierxn--nnx388axn--nodessakurawebsozais-savedxn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery-byaeservehalflifeinsurancexn--nvuotna-hwaxn--nyqy26axn--o1achernivtsicilynxn--4dbrk0cexn--o3cw4hakatanortonkotsunndalxn--o3cyx2axn--od0algardxn--od0aq3beneventodayusuharaxn--ogbpf8fldrvelvetromsohuissier-justicexn--oppegrd-ixaxn--ostery-fyatsushiroxn--osyro-wuaxn--otu796dxn--p1acfedjeezxn--p1ais-slickharkivallee-d-aostexn--pgbs0dhlx3xn--porsgu-sta26fedorainfraclouderaxn--pssu33lxn--pssy2uxn--q7ce6axn--q9jyb4cnsauheradyndns-at-homedepotenzamamicrosoftbankasukabedzin-brbalsfjordietgoryoshiokanravocats3-fips-us-gov-west-1xn--qcka1pmcpenzapposxn--qqqt11misconfusedxn--qxa6axn--qxamunexus-3xn--rady-iraxn--rdal-poaxn--rde-ulazioxn--rdy-0nabaris-uberleetrentinos-tirolxn--rennesy-v1axn--rhkkervju-01afedorapeoplefrakkestadyndns-webhostingujogaszxn--rholt-mragowoltlab-democraciaxn--rhqv96gxn--rht27zxn--rht3dxn--rht61exn--risa-5naturalxn--risr-iraxn--rland-uuaxn--rlingen-mxaxn--rmskog-byawaraxn--rny31hakodatexn--rovu88bentleyusuitatamotorsitestinglitchernihivgubs3-website-us-west-1xn--rros-graphicsxn--rskog-uuaxn--rst-0naturbruksgymnxn--rsta-framercanvasxn--rvc1e0am3exn--ryken-vuaxn--ryrvik-byawatahamaxn--s-1faitheshopwarezzoxn--s9brj9cntraniandriabarlettatraniandriaxn--sandnessjen-ogbentrendhostingliwiceu-3xn--sandy-yuaxn--sdtirol-n2axn--seral-lraxn--ses554gxn--sgne-graphoxn--4gbriminiserverxn--skierv-utazurestaticappspaceusercontentunkongsvingerxn--skjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5navigationxn--slt-elabogadobeaemcloud-fr1xn--smla-hraxn--smna-gratangenxn--snase-nraxn--sndre-land-0cbeppublishproxyuufcfanirasakindependent-panelomonza-brianzaporizhzhedmarkarelianceu-4xn--snes-poaxn--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-ggbeskidyn-ip24xn--srfold-byaxn--srreisa-q1axn--srum-gratis-a-bloggerxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-sqbestbuyshoparenagasakikuchikuseihicampinashikiminohostfoldnavyuzawaxn--stre-toten-zcbetainaboxfuselfipartindependent-reviewegroweibolognagasukeu-north-1xn--t60b56axn--tckweddingxn--tiq49xqyjelenia-goraxn--tjme-hraxn--tn0agrocerydxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tirol-rzbhzc66xn--trentin-sdtirol-7vbialystokkeymachineu-south-1xn--trentino-sd-tirol-c3bielawakuyachimataharanzanishiazaindielddanuorrindigenamerikawauevje-og-hornnes3-website-us-west-2xn--trentino-sdtirol-szbiella-speziaxn--trentinosd-tirol-rzbieszczadygeyachiyodaeguamfamscompute-1xn--trentinosdtirol-7vbievat-band-campaignieznoorstaplesakyotanabellunordeste-idclkarlsoyxn--trentinsd-tirol-6vbifukagawalbrzycharitydalomzaporizhzhiaxn--trentinsdtirol-nsbigv-infolkebiblegnicalvinklein-butterhcloudiscoursesalangenishigotpantheonsitexn--trgstad-r1axn--trna-woaxn--troms-zuaxn--tysvr-vraxn--uc0atventuresinstagingxn--uc0ay4axn--uist22hakonexn--uisz3gxn--unjrga-rtashkenturindalxn--unup4yxn--uuwu58axn--vads-jraxn--valle-aoste-ebbturystykaneyamazoexn--valle-d-aoste-ehboehringerikexn--valleaoste-e7axn--valledaoste-ebbvadsoccertmgreaterxn--vard-jraxn--vegrshei-c0axn--vermgensberater-ctb-hostingxn--vermgensberatung-pwbiharstadotsubetsugarulezajskiervaksdalondonetskarmoyxn--vestvgy-ixa6oxn--vg-yiabruzzombieidskogasawarackmazerbaijan-mayenbaidarmeniaxn--vgan-qoaxn--vgsy-qoa0jellybeanxn--vgu402coguchikuzenishiwakinvestmentsaveincloudyndns-at-workisboringsakershusrcfdyndns-blogsitexn--vhquvestfoldxn--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bihoronobeokagakikugawalesundiscoverdalondrinaplesknsalon-1xn--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wgbh1communexn--wgbl6axn--xhq521bikedaejeonbuk0xn--xkc2al3hye2axn--xkc2dl3a5ee0hakubackyardshiraois-a-greenxn--y9a3aquarelleasingxn--yer-znavois-very-badxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn--4it168dxn--ystre-slidre-ujbiofficialorenskoglobodoes-itcouldbeworldishangrilamdongnairkitapps-audibleasecuritytacticsxn--0trq7p7nnishiharaxn--zbx025dxn--zf0ao64axn--zf0avxlxn--zfr164bipartsaloonishiizunazukindustriaxnbayernxz \ No newline at end of file +bolzano-altoadigevje-og-hornnes3-website-us-west-2bomlocustomer-ocienciabonavstackarasjoketokuyamashikokuchuobondigitaloceanspacesakurastoragextraspace-to-rentalstomakomaibarabonesakuratanishikatakazakindustriesteinkjerepbodynaliasnesoddeno-staginglobodoes-itcouldbeworfarsundiskussionsbereichateblobanazawarszawashtenawsapprunnerdpoliticaarparliamenthickarasuyamasoybookonlineboomladeskierniewiceboschristmasakilovecollegefantasyleaguedagestangebostik-serveronagasukeyword-oncillahppictetcieszynishikatsuragit-repostre-totendofinternet-dnsakurawebredirectmeiwamizawabostonakijinsekikogentlentapisa-geekaratsuginamikatagamimozaporizhzhegurinfinitigooglecode-builder-stg-buildereporthruhereclaimsakyotanabellunord-odalvdalcest-le-patron-k3salangenishikawazukamishihorobotdashgabadaddjabbotthuathienhuebouncemerckmsdscloudisrechtrafficplexus-4boutiquebecologialaichaugianglogowegroweibolognagasakikugawaltervistaikillondonetskarelianceboutireserve-onlineboyfriendoftheinternetflixn--11b4c3ditchyouriparmabozen-sudtirolondrinaplesknsalatrobeneventoeidsvollorenskogloomy-gatewaybozen-suedtirolovableprojectjeldsundivtasvuodnakamai-stagingloppennebplaceditorxn--12c1fe0bradescotaruinternationalovepoparochernihivgubamblebtimnetzjaworznotebook-fips3-fips-us-gov-east-1brandivttasvuotnakamuratajirintlon-2brasiliadboxoslodingenishimerabravendbarcelonagawakuyabukikiraragusabaerobatickets3-fips-us-gov-west-1bresciaogashimadachicappabianiceobridgestonebrindisiciliabroadwaybroke-itvedestrandixn--12cfi8ixb8lovesickarlsoybrokerevistathellebrothermesserlidlplfinancialpusercontentjmaxxxn--12co0c3b4evalleaostargets-itjomeldalucaniabrumunddaluccampobassociatesalon-1brusselsaloonishinomiyashironobryanskiervadsoccerhcloudyclusterbrynebweirbzhitomirumaintenanceclothingdustdatadetectoyouracngovtoystre-slidrettozawacnpyatigorskjakamaiedge-stagingreatercnsapporocntozsdeliverycodebergrayjayleaguesardegnarutoshimatta-varjjatranatalcodespotenzakopanecoffeedbackanagawatsonrendercommunity-prochowicecomockashiharacompanyantaishinomakimobetsulifestylefrakkestadurumisakindlegnicahcesuolohmusashimurayamaizuruhr-uni-bochuminamiechizenisshingucciminamifuranocomparemarkerryhotelsardiniacomputercomsecretrosnubarclays3-me-south-1condoshiibabymilk3conferenceconstructioniyodogawaconsuladobeio-static-accesscamdvrcampaniaconsultantranbyconsultingretakamoriokakudamatsuecontactivetrail-central-1contagematsubaracontractorstabacgiangiangryconvexecute-apictureshinordkappaviacookingrimstadynathomebuiltwithdarklangevagrarchitectestingripeeweeklylotterycooperativano-frankivskjervoyagecoprofesionalchikugodaddyn-o-saureadymadethis-a-anarchistjordalshalsenl-ams-1corsicafederationfabricable-modemoneycosenzamamidorivnecosidnsdojoburgriwataraindroppdalcouchpotatofriesarlcouncilcouponstackitagawacozoracpservernamegataitogodoesntexisteingeekashiwaracqcxn--1lqs71dyndns-at-homedepotrani-andria-barletta-trani-andriacrankyotobetsulubin-dsldyndns-at-workisboringsakershusrcfdyndns-blogsiteleaf-south-1crdyndns-freeboxosarpsborgroks-theatrentin-sud-tirolcreditcardyndns-homednsarufutsunomiyawakasaikaitakokonoecreditunioncremonasharis-a-bulls-fancrewp2cricketnedalcrimeast-kazakhstanangercrispawnextdirectraniandriabarlettatraniandriacrminamiiseharacrotonecrownipfizercrsasayamacruisesaseboknowsitallcryptonomichiharacuisinellamdongnairflowersassaris-a-candidatecuneocuritibackdropalermobarag-cloud-charitydalp1cutegirlfriendyndns-ipgwangjulvikashiwazakizunokuniminamiashigarafedoraprojectransiphdfcbankasserverrankoshigayakagefeirafembetsukubankasukabeautypedreamhosterscrapper-sitefermodalenferraraferraris-a-celticsfanferreroticallynxn--2scrj9cargoboavistanbulsan-sudtiroluhanskarmoyfetsundyndns-remotewdhlx3fgroundhandlingroznyfhvalerfilegear-sg-1filminamiminowafinalfinancefinnoyfirebaseapphilipscrappingrphonefosscryptedyndns-serverdalfirenetgamerscrysecuritytacticscwestus2firenzeaburfirestonefirmdaleilaocairportranslatedyndns-webhareidsbergroks-thisayamanobearalvahkikonaikawachinaganoharamcoachampionshiphoplixn--1qqw23afishingokasellfyresdalfitjarfitnessettsurugashimamurogawafjalerfkasumigaurayasudaflesbergrueflickragerotikagoshimandalflierneflirflogintohmangoldpoint2thisamitsukefloppymntransportefloraclegovcloudappservehttpbincheonflorencefloripadualstackasuyakumoduminamioguni5floristanohatakaharunservehumourfloromskoguidefinimalopolskanittedalfltransurlflutterflowhitesnowflakeflyfncarrdiyfndyndns-wikinkobayashimofusadojin-the-bandairlinemurorangecloudplatformshakotanpachihayaakasakawaharacingrondarfoolfor-ourfor-somedusajserveircasacampinagrandebulsan-suedtirolukowesleyfor-theaterfordebianforexrotheworkpccwhminamisanrikubetsupersaleksvikaszubytemarketingvollforgotdnserveminecraftrapanikkoelnforli-cesena-forlicesenaforlikescandypopensocialforsalesforceforsandasuoloisirservemp3fortalfosneservep2photographysiofotravelersinsurancefoxn--30rr7yfozfr-1fr-par-1fr-par-2franalytics-gatewayfredrikstadyndns-worksauheradyndns-mailfreedesktopazimuthaibinhphuocprapidyndns1freemyiphostyhostinguitarservepicservequakefreesitefreetlservesarcasmilefreightravinhlonganfrenchkisshikirovogradoyfreseniuservicebuskerudynnsaveincloudyndns-office-on-the-webflowtest-iservebloginlinefriuli-v-giuliarafriuli-ve-giuliafriuli-vegiuliafriuli-venezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giuliafriulive-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagiuliafriulivgiuliafrlfrogansevastopolitiendafrognfrolandynservebbsaves-the-whalessandria-trani-barletta-andriatranibarlettaandriafrom-akamaiorigin-stagingujaratmetacentruminamitanefrom-alfrom-arfrom-azureedgecompute-1from-caltanissettainaircraftraeumtgeradealstahaugesunderfrom-cockpitrdynuniversitysvardofrom-ctrentin-sudtirolfrom-dcasertaipeigersundnparsaltdaluroyfrom-decafjsevenassieradzfrom-flatangerfrom-gap-southeast-3from-higashiagatsumagoianiafrom-iafrom-idynv6from-ilfrom-in-vpncashorokanaiefrom-ksewhoswholidayfrom-kyfrom-langsonyatomigrationfrom-mangyshlakamaized-stagingujohanamakinoharafrom-mdynvpnplusavonarviikamisatokonamerikawauefrom-meetrentin-sued-tirolfrom-mihamadanangoguchilloutsystemscloudscalebookinghosteurodirfrom-mnfrom-modellingulenfrom-msexyfrom-mtnfrom-ncasinordeste-idclkarpaczest-a-la-maisondre-landray-dnsaludrayddns-ipartintuitjxn--1ck2e1barclaycards3-globalatinabelementorayomitanobservableusercontentateyamauth-fipstmninomiyakonojosoyrovnoticeableitungsenirasakibxos3-ca-central-180reggio-emilia-romagnaroyolasitebinordlandeus-canvasitebizenakanojogaszkolamericanfamilyds3-ap-south-12hparallelimodxboxeroxjavald-aostaticsxmitakeharaugustow-corp-staticblitzgorzeleccocotteatonamifunebetsuikirkenes3-ap-northeast-2ixn--0trq7p7nninjambylive-oninohekinanporovigonnakasatsunaibigawaukraanghkembuchikumagayagawakkanaibetsubame-central-123websitebuildersvp4from-ndyroyrvikingrongrossetouchijiwadedyn-berlincolnfrom-nefrom-nhlfanfrom-njsheezyfrom-nminamiuonumatsunofrom-nvalled-aostargithubusercontentrentin-suedtirolfrom-nysagamiharafrom-ohdancefrom-okegawafrom-orfrom-palmasfjordenfrom-pratohnoshookuwanakanotoddenfrom-ris-a-chefashionstorebaseljordyndns-picsbssaudafrom-schmidtre-gauldalfrom-sdfrom-tnfrom-txn--32vp30hachinoheavyfrom-utsiracusagemakerfrom-val-daostavalleyfrom-vtrentino-a-adigefrom-wafrom-wiardwebspaceconfigunmarnardalfrom-wvalledaostarnobrzeguovdageaidnunjargausdalfrom-wyfrosinonefrostalowa-wolawafroyal-commissionfruskydivingushikamifuranorth-kazakhstanfujiiderafujikawaguchikonefujiminokamoenairtelebitbucketrzynh-servebeero-stageiseiroutingthecloudfujinomiyadappnodearthainguyenfujiokazakiryuohkurafujisatoshoeshellfujisawafujishiroishidakabiratoridediboxafujitsuruokakamigaharafujiyoshidatsunanjoetsumidaklakasamatsudogadobeioruntimedicinakaiwanairforcentralus-1fukayabeagleboardfukuchiyamadattorelayfukudomigawafukuis-a-conservativefsnoasakakinokiafukumitsubishigakisarazure-apigeefukuokakegawafukuroishikariwakunigamiharuovatlassian-dev-builderfukusakishiwadattoweberlevagangaviikanonjis-a-cpanelfukuyamagatakahashimamakisofukushimaniwamannordre-landfunabashiriuchinadavvenjargamvikatowicefunagatakahatakaishimokawafunahashikamiamakusatsumasendaisenergyeonggiizefundfunkfeuerfunnelshimonitayanagitapphutholdingsmall-websozais-a-cubicle-slaveroykenfuoiskujukuriyamaoris-a-democratrentino-aadigefuosskodjeezfurubirafurudonordreisa-hockeynutwentertainmentrentino-alto-adigefurukawaiishoppingxn--3bst00minamiyamashirokawanabeepsondriobranconagarahkkeravjunusualpersonfusoctrangyeongnamdinhs-heilbronnoysundfussaikisosakitahatakamatsukawafutabayamaguchinomihachimanagementrentino-altoadigefutboldlygoingnowhere-for-more-og-romsdalfuttsurutashinairtrafficmanagerfuturecmshimonosekikawafuturehosting-clusterfuturemailingzfvghakuis-a-doctoruncontainershimotsukehakusandnessjoenhaldenhalfmoonscaleforcehalsaitamatsukuris-a-financialadvisor-aurdalham-radio-ophuyenhamburghammarfeastasiahamurakamigoris-a-fullstackaufentigerhanamigawahanawahandahandcraftedugit-pages-researchedmarketplacehangglidinghangoutrentino-s-tirolhannannestadhannoshiroomghanoiphxn--3ds443ghanyuzenhappoumuginowaniihamatamakawajimap-southeast-4hasamazoncognitoigawahasaminami-alpshimotsumahashbanghasudahasura-appigboatshinichinanhasvikautokeinotionhatenablogspotrentino-stirolhatenadiaryhatinhachiojiyachiyodazaifudaigojomedio-campidano-mediocampidanomediohatogayachtshinjournalistorfjordhatoyamazakitakatakanezawahatsukaichikawamisatohokkaidontexistmein-iservschulegalleryhattfjelldalhayashimamotobusells-for-lesshinjukuleuvenicehazuminobushibuyahabacninhbinhdinhktrentino-sud-tirolhelpgfoggiahelsinkitakyushunantankazohemneshinkamigotoyokawahemsedalhepforgeblockshinshinotsupplyhetemlbfanheyflowienhigashichichibuzzhigashihiroshimanehigashiizumozakitamihokksundhigashikagawahigashikagurasoedahigashikawakitaaikitamotosumy-routerhigashikurumegurownproviderhigashimatsushimarriottrentino-sudtirolhigashimatsuyamakitaakitadaitomanaustdalhigashimurayamamotorcycleshinshirohigashinarusells-for-uzhhorodhigashinehigashiomitamamurausukitanakagusukumodshintokushimahigashiosakasayamanakakogawahigashishirakawamatakaokalmykiahigashisumiyoshikawaminamiaikitashiobarahigashitsunospamproxyhigashiurawa-mazowszexposeducatorprojectrentino-sued-tirolhigashiyamatokoriyamanashijonawatehigashiyodogawahigashiyoshinogaris-a-geekazunotogawahippythonanywherealminanohiraizumisatokaizukaluganskddiamondshintomikasaharahirakatashinagawahiranais-a-goodyearhirarahiratsukagawahirayahikobeatshinyoshitomiokamisunagawahitachiomiyakehitachiotaketakarazukamaishimodatehitradinghjartdalhjelmelandholyhomegoodshiojirishirifujiedahomeipikehomelinuxn--3e0b707ehomesecuritymacaparecidahomesecuritypcateringebungotakadaptableclerc66116-balsfjordeltaiwanumatajimidsundeportebinatsukigatakahamalvik8s3-ap-northeast-3utilities-12charstadaokagakirunocelotenkawadlugolekadena4ufcfanimsiteasypanelblagrigentobishimafeloansncf-ipfstdlibestadultatarantoyonakagyokutoyonezawapartments3-ap-northeast-123webseiteckidsmynascloudfrontierimo-siemenscaledekaascolipicenoboribetsubsc-paywhirlimitedds3-accesspoint-fips3-ap-east-123miwebaccelastx4432-b-datacenterprisesakihokuizumoarekepnord-aurdalipaynow-dns-dynamic-dnsabruzzombieidskogasawarackmazerbaijan-mayenbaidarmeniajureggio-calabriaknoluoktagajoboji234lima-citychyattorneyagawafflecellclstagehirnayorobninsk123kotisivultrobjectselinogradimo-i-ranamizuhobby-siteaches-yogano-ip-ddnsgeekgalaxyzgierzgorakrehamnfshostrowwlkpnftstorage164-balsan-suedtirolillyokozeastus2000123paginawebadorsiteshikagamiishibechambagricoharugbydgoszczecin-addrammenuorogerscbgdyniaktyubinskaunicommuneustarostwodzislawdev-myqnapcloudflarecn-northwest-123sitewebcamauction-acornikonantotalimanowarudakunexus-2038homesenseeringhomeskleppilottottoris-a-greenhomeunixn--3hcrj9catfoodraydnsalvadorhondahonjyoitakasagonohejis-a-guruzshioyaltakkolobrzegersundongthapmircloudnshome-webservercelliguriahornindalhorsells-itrentino-suedtirolhorteneiheijis-a-hard-workershirahamatonbetsupportrentinoa-adigehospitalhotelwithflightshirakomaganehotmailhoyangerhoylandetakasakitaurahrsnillfjordhungyenhurdalhurumajis-a-hunterhyllestadhyogoris-a-knightpointtokashikitchenhypernodessaitokamachippubetsubetsugaruhyugawarahyundaiwafuneis-uberleetrentinoaltoadigeis-very-badis-very-evillasalleirvikharkovallee-d-aosteis-very-goodis-very-niceis-very-sweetpepperugiais-with-thebandoomdnsiskinkyowariasahikawaisk01isk02jellybeanjenv-arubahcavuotnagahamaroygardenflfanjeonnamsosnowiecaxiaskoyabenoopssejny-1jetztrentinos-tiroljevnakerjewelryjlljls-sto1jls-sto2jls-sto365jmpioneerjnjcloud-ver-jpcatholicurus-3joyentrentinostiroljoyokaichibahccavuotnagaivuotnagaokakyotambabybluebitemasekd1jozis-a-llamashikiwakuratejpmorgangwonjpnjprshoujis-a-musiciankoseis-a-painterhostsolutionshiraokamitsuekosheroykoshimizumakis-a-patsfankoshugheshwiiheyahoooshikamagayaitakashimarshallstatebankhplaystation-cloudsitekosugekotohiradomainsurealtypo3serverkotourakouhokumakogenkounosunnydaykouyamatlabcn-north-1kouzushimatrixn--41akozagawakozakis-a-personaltrainerkozowilliamhillkppspdnsigdalkrasnikahokutokyotangopocznore-og-uvdalkrasnodarkredumbrellapykrelliankristiansandcatsiiitesilklabudhabikinokawabajddarqhachirogatakanabeardubaioiraseekatsushikabedzin-brb-hostingkristiansundkrodsheradkrokstadelvaldaostavangerkropyvnytskyis-a-photographerokuappinkfh-muensterkrymisasaguris-a-playershiftrentinoaadigekumamotoyamatsumaebashimogosenkumanowtvalleedaostekumatorinokumejimatsumotofukekumenanyokkaichirurgiens-dentistes-en-francekundenkunisakis-a-republicanonoichinosekigaharakunitachiaraisaijorpelandkunitomigusukukis-a-rockstarachowicekunneppubtlsimple-urlkuokgroupiwatekurgankurobeebyteappleykurogiminamiawajikis-a-socialistockholmestrandkuroisodegaurakuromatsunais-a-soxfankuronkurotakikawasakis-a-studentalkushirogawakustanais-a-teacherkassyncloudkusupabaseminekutchanelkutnokuzumakis-a-techietis-a-liberalkvafjordkvalsundkvamfamplifyappchizip6kvanangenkvinesdalkvinnheradkviteseidatingkvitsoykwpspectrumisawamjondalenmonza-brianzapposirdalmonza-e-della-brianzaptonsbergmonzabrianzaramonzaebrianzamonzaedellabrianzamordoviamorenapolicemoriyamatsushigemoriyoshiminamibosoftwarendalenugmormonstermoroyamatsuuramortgagemoscowinbarrel-of-knowledgekey-stagingjerstadigickaracolognemrstudio-prodoyonagoyauthgearapps-1and1moseushimoichikuzenmosjoenmoskenesiskomakis-a-therapistoiamosslupskmpspbaremetalpha-myqnapcloudaccess3-sa-east-1mosviknx-serversicherungmotegirlymoviemovimientoolslzmtrainingmuikamiokameokameyamatotakadamukodairamunakatanemuosattemupixolinodeusercontentrentinosud-tirolmurmanskomatsushimasudamurotorcraftrentinosudtirolmusashinodesakatakayamatsuzakis-an-accountantshiratakahagiangmuseumisconfusedmusicanthoboleslawiecommerce-shopitsitevaksdalmutsuzawamutualmy-vigormy-wanggoupilemyactivedirectorymyaddrangedalmyamazeplaymyasustor-elvdalmycloudnasushiobaramydattolocalcertrentinosued-tirolmydbservermyddnskingmydissentrentinosuedtirolmydnsmolaquilarvikomforbargainstitutemp-dnswatches3-us-east-2mydobissmarterthanyoumydrobofageorgeorgiamydsmushcdn77-securecipescaracalculatorskenmyeffectrentinsud-tirolmyfastly-edgemyfirewalledreplittlestargardmyforumishimatsusakahoginozawaonsennanmokurennebuyshousesimplesitemyfritzmyftpaccessojampanasonichernovtsydneymyhome-servermyjinomykolaivencloud66mymailermymediapchiryukyuragifuchungbukharanzanishinoomotegoismailillehammerfeste-ipartsamegawamynetnamegawamyokohamamatsudamypepizzamypetsokananiimilanoticiassurfastly-terrariuminamiizukaminoyamaxunison-servicesaxomyphotoshibalena-devicesokndalmypiemontemypsxn--42c2d9amyrdbxn--45br5cylmysecuritycamerakermyshopblocksolardalmyshopifymyspreadshopselectrentinsudtirolmytabitordermythic-beastsolundbeckommunalforbundmytis-a-bloggermytuleap-partnersomamyvnchitachinakagawassamukawatarittogitsuldalutskartuzymywirebungoonoplurinacionalpmnpodhalepodlasiellakdnepropetrovskanlandpodzonepohlpoivronpokerpokrovskomonotteroypolkowicepoltavalle-aostavernpolyspacepomorzeszowindowsserveftplatter-appkommuneponpesaro-urbino-pesarourbinopesaromasvuotnaritakurashikis-an-actresshishikuis-a-libertarianpordenonepornporsangerporsangugeporsgrunnanpoznanpraxihuanprdprereleaseoullensakerprgmrprimetelprincipenzaprivatelinkyard-cloudletsomnarvikomorotsukaminokawanishiaizubangeprivatizehealthinsuranceprogressivegarsheiyufueliv-dnsoowinepromoliserniapropertysnesopotrentinsued-tirolprotectionprotonetrentinsuedtirolprudentialpruszkowinnersor-odalprvcyprzeworskogpunyukis-an-anarchistoloseyouripinokofuefukihabororoshisogndalpupulawypussycatanzarowiosor-varangerpvhackerpvtrentoyosatoyookaneyamazoepwchitosetogliattipsamnangerpzqotoyohashimotoyakokamimineqponiatowadaqslgbtrevisognequalifioapplatterpl-wawsappspacehostedpicardquangngais-an-artistordalquangninhthuanquangtritonoshonais-an-engineeringquickconnectroandindependent-inquest-a-la-masionquicksytesorfoldquipelementsorocabalestrandabergamochizukijobservablehqldquizzesorreisahayakawakamiichinomiyagithubpreviewskrakowitdkontoguraswinoujscienceswissphinxn--45brj9chonanbunkyonanaoshimaringatlanbibaiduckdnsamparachutinglugsjcbnpparibashkiriasyno-dspjelkavikongsbergsynology-diskstationsynology-dspockongsvingertushungrytuvalle-daostaobaolbia-tempio-olbiatempioolbialowiezaganquangnamasteigenoamishirasatochigiftsrhtrogstadtuxfamilytuyenquangbinhthuantwmailvegasrlvelvetromsohuissier-justiceventurestaurantrustkanieruchomoscientistoripresspydebergvestfoldvestnesrvaomoriguchiharaffleentrycloudflare-ipfsortlandvestre-slidrecreationvestre-totennishiawakuravestvagoyvevelstadvfstreakusercontentroitskoninfernovecorealtorvibo-valentiavibovalentiavideovinhphuchoshichikashukudoyamakeupartysfjordrivelandrobakamaihd-stagingmbhartinnishinoshimattelemarkhangelskaruizawavinnicapitalonevinnytsiavipsinaapplockervirginankokubunjis-byklecznagatorokunohealth-carereformincommbankhakassiavirtual-uservecounterstrikevirtualservervirtualuserveexchangevisakuholeckobierzyceviterboliviajessheimperiavivianvivoryvixn--45q11chowdervlaanderennesoyvladikavkazimierz-dolnyvladimirvlogisticstreamlitapplcube-serversusakis-an-actorvmitourismartlabelingvolvologdanskontumintshowavolyngdalvoorlopervossevangenvotevotingvotoyotap-southeast-5vps-hostreaklinkstrippervusercontentrvaporcloudwiwatsukiyonotairesindevicenzaokinawashirosatochiokinoshimagazinewixsitewixstudio-fipstrynwjgorawkzwloclawekonyvelolipopmcdirwmcloudwmelhustudynamisches-dnsorumisugitomobegetmyipifony-2wmflabstuff-4-salewoodsidell-ogliastrapiapplinzis-certifiedworldworse-thanhphohochiminhadanorthflankatsuyamassa-carrara-massacarraramassabunzenwowithgoogleapiszwpdevcloudwpenginepoweredwphostedmailwpmucdn77-sslingwpmudevelopmentrysiljanewaywpsquaredwritesthisblogoiplumbingotpantheonsitewroclawsglobalacceleratorahimeshimakanegasakievennodebalancernwtcp4wtfastlylbarefootballooningjerdrumemergencyonabarumemorialivornobservereitatsunofficialolitapunkapsienamsskoganeindependent-panelombardiademfakefurniturealestatefarmerseinemrnotebooks-prodeomniwebthings3-object-lambdauthgear-stagingivestbyglandroverhallair-traffic-controllagdenesnaaseinet-freaks3-deprecatedgcagliarissadistgstagempresashibetsukuiitatebayashikaoirmembers3-eu-central-1kapp-ionosegawafaicloudineat-urlive-websitehimejibmdevinapps3-ap-southeast-1337wuozuerichardlillesandefjordwwwithyoutuberspacewzmiuwajimaxn--4it797koobindalxn--4pvxs4allxn--54b7fta0cchromediatechnologyeongbukarumaifmemsetkmaxxn--1ctwolominamatarpitksatmalluxenishiokoppegardrrxn--55qw42gxn--55qx5dxn--5dbhl8dxn--5js045dxn--5rtp49chungnamdalseidfjordtvsangotsukitahiroshimarcherkasykkylvenneslaskerrypropertiesanjotelulublindesnesannanishitosashimizunaminamidaitolgaularavellinodeobjectsannoheliohostrodawaraxn--5rtq34kooris-a-nascarfanxn--5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264churchaselfipirangallupsunappgafanishiwakinuyamashinazawaxn--80aaa0cvacationstufftoread-booksnesoundcastreak-linkomvuxn--3pxu8khmelnitskiyamassivegridxn--80adxhksurnadalxn--80ao21axn--80aqecdr1axn--80asehdbarrell-of-knowledgesuite-stagingjesdalombardyn-vpndns3-us-gov-east-1xn--80aswgxn--80audnedalnxn--8dbq2axn--8ltr62kopervikhmelnytskyivalleeaostexn--8pvr4uxn--8y0a063axn--90a1affinitylotterybnikeisencoreapiacenzachpomorskiengiangxn--90a3academiamibubbleappspotagerxn--90aeroportsinfolkebibleasingrok-freeddnsfreebox-osascoli-picenogatachikawakayamadridvagsoyerxn--90aishobaraoxn--90amckinseyxn--90azhytomyradweblikes-piedmontuckerxn--9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aroport-byameloyxn--asky-iraxn--aurskog-hland-jnbarsycenterprisecloudbeesusercontentattoolforgerockyonagunicloudiscordsays3-us-gov-west-1xn--avery-yuasakuragawaxn--b-5gaxn--b4w605ferdxn--balsan-sdtirol-nsbarsyonlinequipmentaveusercontentawktoyonomurauthordalandroidienbienishiazaiiyamanouchikujolsterehabmereisenishigotembaixadavvesiidaknongivingjemnes3-eu-north-1xn--bck1b9a5dre4ciprianiigatairaumalatvuopmicrosoftbankasaokamikoaniikappudopaaskvollocaltonetlifyinvestmentsanokashibatakatsukiyosembokutamakiyosunndaluxuryxn--bdddj-mrabdxn--bearalvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn--bidr-5nachikatsuuraxn--bievt-0qa2hosted-by-previderxn--bjarky-fyanagawaxn--bjddar-ptarumizusawaxn--blt-elabkhaziamallamaceiobbcircleaningmodelscapetownnews-stagingmxn--1lqs03nissandoyxn--bmlo-grafana-developerauniterois-coolblogdnshisuifuettertdasnetzxn--bod-2naturalxn--bozen-sdtirol-2obihirosakikamijimayfirstorjdevcloudjiffyxn--brnny-wuacademy-firewall-gatewayxn--brnnysund-m8accident-investigation-aptibleadpagespeedmobilizeropslattumbriaxn--brum-voagatulaspeziaxn--btsfjord-9zaxn--bulsan-sdtirol-nsbasicserver-on-webpaaskimitsubatamicrolightingjovikaragandautoscanaryggeemrappui-productions3-eu-west-1xn--c1avgxn--c2br7gxn--c3s14mitoyoakexn--cck2b3basilicataniavocats3-eu-west-2xn--cckwcxetdxn--cesena-forl-mcbremangerxn--cesenaforl-i8axn--cg4bkis-foundationxn--ciqpnxn--clchc0ea0b2g2a9gcdn77-storagencymrulezajskiptveterinaireadthedocs-hostedogawarabikomaezakishimabarakawagoexn--czr694basketballfinanzlgkpmglassessments3-us-west-1xn--czrs0t0xn--czru2dxn--d1acj3batsfjordiscordsezpisdnipropetrovskygearapparasiteu-2xn--d1alfastvps-serverisignxn--d1atunesquaresinstagingxn--d5qv7z876ciscofreakadns-cloudflareglobalashovhachijoinvilleirfjorduponthewifidelitypeformesswithdnsantamariakexn--davvenjrga-y4axn--djrs72d6uyxn--djty4koryokamikawanehonbetsuwanouchikuhokuryugasakis-a-nursellsyourhomeftpinbrowsersafetymarketshiraois-a-landscaperspectakasugais-a-lawyerxn--dnna-graingerxn--drbak-wuaxn--dyry-iraxn--e1a4cistrondheimeteorappassenger-associationissayokoshibahikariyalibabacloudcsantoandrecifedexperts-comptablesanukinzais-a-bruinsfanissedalvivanovoldaxn--eckvdtc9dxn--efvn9surveysowaxn--efvy88hadselbuzentsujiiexn--ehqz56nxn--elqq16haebaruericssongdalenviknakatombetsumitakagildeskaliszxn--eveni-0qa01gaxn--f6qx53axn--fct429kosaigawaxn--fhbeiarnxn--finny-yuaxn--fiq228c5hsbcitadelhichisochimkentmpatriaxn--fiq64bauhauspostman-echofunatoriginstances3-us-west-2xn--fiqs8susonoxn--fiqz9suzakarpattiaaxn--fjord-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-cesena-fcbentleyoriikarasjohkamikitayamatsurindependent-review-credentialless-staticblitzw-staticblitzxn--forlcesena-c8axn--fpcrj9c3dxn--frde-grajewolterskluwerxn--frna-woaxn--frya-hraxn--fzc2c9e2citicaravanylvenetogakushimotoganexn--fzys8d69uvgmailxn--g2xx48civilaviationionjukujitawaravennaharimalborkdalxn--gckr3f0fauskedsmokorsetagayaseralingenovaraxn--gecrj9clancasterxn--ggaviika-8ya47hagakhanhhoabinhduongxn--gildeskl-g0axn--givuotna-8yanaizuxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050is-gonexn--gmqw5axn--gnstigbestellen-zvbentrendhostingleezeu-3xn--gnstigliefern-wobiraxn--h-2failxn--h1ahnxn--h1alizxn--h2breg3evenesuzukanazawaxn--h2brj9c8cldmail-boxfuseljeducationporterxn--h3cuzk1dielddanuorris-into-animein-vigorlicexn--hbmer-xqaxn--hcesuolo-7ya35beppublic-inquiryoshiokanumazuryurihonjouwwebhoptokigawavoues3-eu-west-3xn--hebda8beskidyn-ip24xn--hery-iraxn--hgebostad-g3axn--hkkinen-5waxn--hmmrfeasta-s4accident-prevention-fleeklogesquare7xn--hnefoss-q1axn--hobl-iraxn--holtlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1b6b1a6a2exn--imr513nxn--indery-fyandexcloudxn--io0a7is-into-carshitaramaxn--j1adpdnsupdaterxn--j1aefbsbxn--2m4a15exn--j1ael8bestbuyshoparenagareyamagentositenrikuzentakataharaholtalengerdalwaysdatabaseballangenkainanaejrietiengiangheannakadomarineen-rootaribeiraogakicks-assnasaarlandiscountry-snowplowiczeladzxn--j1amhagebostadxn--j6w193gxn--jlq480n2rgxn--jlster-byaotsurgeryxn--jrpeland-54axn--jvr189mittwaldserverxn--k7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--4dbgdty6choyodobashichinohealthcareersamsclubartowest1-usamsungminakamichikaiseiyoichipsandvikcoromantovalle-d-aostakinouexn--koluokta-7ya57haibarakitakamiizumisanofidonnakaniikawatanaguraxn--kprw13dxn--kpry57dxn--kput3is-into-cartoonshizukuishimojis-a-linux-useranishiaritabashikshacknetlibp2pimientaketomisatourshiranukamitondabayashiogamagoriziaxn--krager-gyasakaiminatoyotomiyazakis-into-gamessinaklodzkochikushinonsenasakuchinotsuchiurakawaxn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--krjohka-hwab49jdfirmalselveruminisitexn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-fyasugitlabbvieeexn--kvnangen-k0axn--l-1fairwindsuzukis-an-entertainerxn--l1accentureklamborghinikolaeventsvalbardunloppadoval-d-aosta-valleyxn--laheadju-7yasuokannamimatakatoris-leetrentinoalto-adigexn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika-52bhzc01xn--lesund-huaxn--lgbbat1ad8jejuxn--lgrd-poacctfcloudflareanycastcgroupowiat-band-campaignoredstonedre-eikerxn--lhppi-xqaxn--linds-pramericanexpresservegame-serverxn--loabt-0qaxn--lrdal-sraxn--lrenskog-54axn--lt-liaclerkstagentsaobernardovre-eikerxn--lten-granexn--lury-iraxn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2ddesvchoseikarugalsacexn--mgb9awbfbx-oschokokekscholarshipschoolbusinessebytomaridagawarmiastapleschoolsztynsetranoyxn--mgba3a3ejtunkonsulatinowruzhgorodxn--mgba3a4f16axn--mgba3a4fra1-dellogliastraderxn--mgba7c0bbn0axn--mgbaam7a8haiduongxn--mgbab2bdxn--mgbah1a3hjkrdxn--mgbai9a5eva00bialystokkeymachineu-4xn--mgbai9azgqp6jelasticbeanstalkhersonlanxesshizuokamogawaxn--mgbayh7gparaglidingxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgbcpq6gpa1axn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn--mgbi4ecexperimentsveioxn--mgbpl2fhskypecoris-localhostcertificationxn--mgbqly7c0a67fbclever-clouderavpagexn--mgbqly7cvafricapooguyxn--mgbt3dhdxn--mgbtf8fldrvareservdxn--mgbtx2bielawalbrzycharternopilawalesundiscourses3-website-ap-northeast-1xn--mgbx4cd0abogadobeaemcloud-ip-dynamica-west-1xn--mix082fbxoschulplattforminamimakis-a-catererxn--mix891fedjeepharmacienschulserverxn--mjndalen-64axn--mk0axindependent-inquiryxn--mk1bu44cleverappsaogoncanva-appsaotomelbournexn--mkru45is-lostrolekamakurazakiwielunnerxn--mlatvuopmi-s4axn--mli-tlavagiskexn--mlselv-iuaxn--moreke-juaxn--mori-qsakurais-not-axn--mosjen-eyatsukanoyaizuwakamatsubushikusakadogawaxn--mot-tlavangenxn--mre-og-romsdal-qqbuservebolturindalxn--msy-ula0haiphongolffanshimosuwalkis-a-designerxn--mtta-vrjjat-k7aflakstadotsurugimbiella-speziaxarnetbankanzakiyosatokorozawaustevollpagest-mon-blogueurovision-ranchernigovernmentdllivingitpagemprendeatnuh-ohtawaramotoineppueblockbusterniizaustrheimdbambinagisobetsucks3-ap-southeast-2xn--muost-0qaxn--mxtq1miuraxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--4dbrk0cexn--nit225kosakaerodromegalloabatobamaceratabusebastopoleangaviikafjordxn--nmesjevuemie-tcbalsan-sudtirolkuszczytnord-fron-riopretodayxn--nnx388axn--nodeloittexn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery-byaeservehalflifeinsurancexn--nvuotna-hwaxn--nyqy26axn--o1achernivtsicilyxn--o3cw4hair-surveillancexn--o3cyx2axn--od0algardxn--od0aq3bielskoczoweddinglitcheap-south-2xn--ogbpf8flekkefjordxn--oppegrd-ixaxn--ostery-fyatsushiroxn--osyro-wuaxn--otu796dxn--p1acfolksvelvikonskowolayangroupippugliaxn--p1ais-not-certifiedxn--pgbs0dhakatanortonkotsumomodenakatsugawaxn--porsgu-sta26fedorainfracloudfunctionschwarzgwesteuropencraftransfer-webappharmacyou2-localplayerxn--pssu33lxn--pssy2uxn--q7ce6axn--q9jyb4clickrisinglesjaguarvodkagaminombrendlyngenebakkeshibukawakeliwebhostingouv0xn--qcka1pmcprequalifymeinforumzxn--qqqt11miyazure-mobilevangerxn--qxa6axn--qxamiyotamanoxn--rady-iraxn--rdal-poaxn--rde-ulazioxn--rdy-0nabaris-savedxn--rennesy-v1axn--rhkkervju-01afedorapeopleikangerxn--rholt-mragowoltlab-democraciaxn--rhqv96gxn--rht27zxn--rht3dxn--rht61exn--risa-5naturbruksgymnxn--risr-iraxn--rland-uuaxn--rlingen-mxaxn--rmskog-byawaraxn--rny31hakodatexn--rovu88bieszczadygeyachimataijinderoyusuharazurefdietateshinanomachintaifun-dnsaliases121xn--rros-granvindafjordxn--rskog-uuaxn--rst-0navigationxn--rsta-framercanvasvn-repospeedpartnerxn--rvc1e0am3exn--ryken-vuaxn--ryrvik-byawatahamaxn--s-1faitheshopwarezzoxn--s9brj9clientoyotsukaidownloadurbanamexnetfylkesbiblackbaudcdn-edgestackhero-networkinggroupperxn--sandnessjen-ogbizxn--sandy-yuaxn--sdtirol-n2axn--seral-lraxn--ses554gxn--sgne-graphicswidnicaobangxn--skierv-utazurecontainerimamateramombetsupplieswidnikitagatamayukuhashimokitayamaxn--skjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5navoizumizakis-slickharkivallee-aosteroyxn--slt-elabievathletajimabaria-vungtaudiopsys3-website-ap-southeast-1xn--smla-hraxn--smna-gratangenxn--snase-nraxn--sndre-land-0cbifukagawalmartaxiijimarugame-hostrowieconomiasagaeroclubmedecin-berlindasdaeguambulancechireadmyblogsytecnologiazurestaticappspaceusercontentproxy9guacuiababia-goraclecloudappschaefflereggiocalabriaurland-4-salernooreggioemiliaromagnarusawaurskog-holandinggff5xn--snes-poaxn--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-ggbigv-infolldalomoldegreeu-central-2xn--srfold-byaxn--srreisa-q1axn--srum-gratis-a-bookkeepermashikexn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-sqbiharvanedgeappengineu-south-1xn--stre-toten-zcbihoronobeokayamagasakikuchikuseihicampinashikiminohostfoldiscoverbaniazurewebsitests3-external-1xn--t60b56axn--tckwebview-assetswiebodzindependent-commissionxn--tiq49xqyjelenia-goraxn--tjme-hraxn--tn0agrocerydxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tirol-rzbikedaejeonbuk0emmafann-arborlandd-dnsfor-better-thanhhoarairkitapps-audiblebesbyencowayokosukanraetnaamesjevuemielnogiehtavuoatnabudejjuniper2-ddnss3-123minsidaarborteamsterdamnserverseating-organicbcg123homepagexl-o-g-i-navyokote123hjemmesidealerdalaheadjuegoshikibichuo0o0g0xn--trentin-sdtirol-7vbiomutazas3-website-ap-southeast-2xn--trentino-sd-tirol-c3birkenesoddtangentapps3-website-eu-west-1xn--trentino-sdtirol-szbittermezproxyusuitatamotors3-website-sa-east-1xn--trentinosd-tirol-rzbjarkoyuullensvanguardisharparisor-fronishiharaxn--trentinosdtirol-7vbjerkreimmobilieniwaizumiotsukumiyamazonaws-cloud9xn--trentinsd-tirol-6vbjugnieznorddalomzaporizhzhiaxn--trentinsdtirol-nsblackfridaynightayninhaccalvinklein-butterepairbusanagochigasakindigenakayamarumorimachidaxn--trgstad-r1axn--trna-woaxn--troms-zuaxn--tysvr-vraxn--uc0atvarggatromsakegawaxn--uc0ay4axn--uist22hakonexn--uisz3gxn--unjrga-rtashkenturystykanmakiyokawaraxn--unup4yxn--uuwu58axn--vads-jraxn--valle-aoste-ebbtuscanyxn--valle-d-aoste-ehboehringerikerxn--valleaoste-e7axn--valledaoste-ebbvaapstempurlxn--vard-jraxn--vegrshei-c0axn--vermgensberater-ctb-hostingxn--vermgensberatung-pwbloombergentingliwiceu-south-2xn--vestvgy-ixa6oxn--vg-yiablushangrilaakesvuemieleccevervaultgoryuzawaxn--vgan-qoaxn--vgsy-qoa0j0xn--vgu402clinicarbonia-iglesias-carboniaiglesiascarboniaxn--vhquvaroyxn--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bmoattachments3-website-us-east-1xn--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wgbh1cliniquenoharaxn--wgbl6axn--xhq521bms3-website-us-gov-west-1xn--xkc2al3hye2axn--xkc2dl3a5ee0hakubaclieu-1xn--y9a3aquarelleborkangerxn--yer-znavuotnarashinoharaxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn--4gbriminiserverxn--ystre-slidre-ujbmwcloudnonproddaemongolianishiizunazukindustriaxn--zbx025dxn--zf0avxn--4it168dxn--zfr164bnrweatherchannelsdvrdns3-website-us-west-1xnbayernxz \ No newline at end of file diff --git a/vendor/golang.org/x/net/publicsuffix/list.go b/vendor/golang.org/x/net/publicsuffix/list.go index d56e9e762445..047cb30eb151 100644 --- a/vendor/golang.org/x/net/publicsuffix/list.go +++ b/vendor/golang.org/x/net/publicsuffix/list.go @@ -77,7 +77,7 @@ func (list) String() string { // privately managed domain (and in practice, not a top level domain) or an // unmanaged top level domain (and not explicitly mentioned in the // publicsuffix.org list). For example, "foo.org" and "foo.co.uk" are ICANN -// domains, "foo.dyndns.org" and "foo.blogspot.co.uk" are private domains and +// domains, "foo.dyndns.org" is a private domain and // "cromulent" is an unmanaged top level domain. // // Use cases for distinguishing ICANN domains like "foo.com" from private @@ -88,7 +88,7 @@ func PublicSuffix(domain string) (publicSuffix string, icann bool) { s, suffix, icannNode, wildcard := domain, len(domain), false, false loop: for { - dot := strings.LastIndex(s, ".") + dot := strings.LastIndexByte(s, '.') if wildcard { icann = icannNode suffix = 1 + dot @@ -129,7 +129,7 @@ loop: } if suffix == len(domain) { // If no rules match, the prevailing rule is "*". - return domain[1+strings.LastIndex(domain, "."):], icann + return domain[1+strings.LastIndexByte(domain, '.'):], icann } return domain[suffix:], icann } @@ -178,26 +178,28 @@ func EffectiveTLDPlusOne(domain string) (string, error) { if domain[i] != '.' { return "", fmt.Errorf("publicsuffix: invalid public suffix %q for domain %q", suffix, domain) } - return domain[1+strings.LastIndex(domain[:i], "."):], nil + return domain[1+strings.LastIndexByte(domain[:i], '.'):], nil } type uint32String string func (u uint32String) get(i uint32) uint32 { off := i * 4 - return (uint32(u[off])<<24 | - uint32(u[off+1])<<16 | - uint32(u[off+2])<<8 | - uint32(u[off+3])) + u = u[off:] // help the compiler reduce bounds checks + return uint32(u[3]) | + uint32(u[2])<<8 | + uint32(u[1])<<16 | + uint32(u[0])<<24 } type uint40String string func (u uint40String) get(i uint32) uint64 { off := uint64(i * (nodesBits / 8)) - return uint64(u[off])<<32 | - uint64(u[off+1])<<24 | - uint64(u[off+2])<<16 | - uint64(u[off+3])<<8 | - uint64(u[off+4]) + u = u[off:] // help the compiler reduce bounds checks + return uint64(u[4]) | + uint64(u[3])<<8 | + uint64(u[2])<<16 | + uint64(u[1])<<24 | + uint64(u[0])<<32 } diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go index 78d400fa6533..0fadf9527f7a 100644 --- a/vendor/golang.org/x/net/publicsuffix/table.go +++ b/vendor/golang.org/x/net/publicsuffix/table.go @@ -4,7 +4,7 @@ package publicsuffix import _ "embed" -const version = "publicsuffix.org's public_suffix_list.dat, git revision 63cbc63d470d7b52c35266aa96c4c98c96ec499c (2023-08-03T10:01:25Z)" +const version = "publicsuffix.org's public_suffix_list.dat, git revision 2c960dac3d39ba521eb5db9da192968f5be0aded (2025-03-18T07:22:13Z)" const ( nodesBits = 40 @@ -26,7 +26,7 @@ const ( ) // numTLD is the number of top level domains. -const numTLD = 1474 +const numTLD = 1454 // text is the combined text of all labels. // @@ -63,8 +63,8 @@ var nodes uint40String //go:embed data/children var children uint32String -// max children 743 (capacity 1023) -// max text offset 30876 (capacity 65535) +// max children 870 (capacity 1023) +// max text offset 31785 (capacity 65535) // max text length 31 (capacity 63) -// max hi 9322 (capacity 16383) -// max lo 9317 (capacity 16383) +// max hi 10100 (capacity 16383) +// max lo 10095 (capacity 16383) diff --git a/vendor/golang.org/x/oauth2/LICENSE b/vendor/golang.org/x/oauth2/LICENSE index 6a66aea5eafe..2a7cf70da6e4 100644 --- a/vendor/golang.org/x/oauth2/LICENSE +++ b/vendor/golang.org/x/oauth2/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/oauth2/README.md b/vendor/golang.org/x/oauth2/README.md index 781770c20464..48dbb9d84c89 100644 --- a/vendor/golang.org/x/oauth2/README.md +++ b/vendor/golang.org/x/oauth2/README.md @@ -5,15 +5,6 @@ oauth2 package contains a client implementation for OAuth 2.0 spec. -## Installation - -~~~~ -go get golang.org/x/oauth2 -~~~~ - -Or you can manually git clone the repository to -`$(go env GOPATH)/src/golang.org/x/oauth2`. - See pkg.go.dev for further documentation and examples. * [pkg.go.dev/golang.org/x/oauth2](https://pkg.go.dev/golang.org/x/oauth2) @@ -33,7 +24,11 @@ The main issue tracker for the oauth2 repository is located at https://github.com/golang/oauth2/issues. This repository uses Gerrit for code changes. To learn how to submit changes to -this repository, see https://golang.org/doc/contribute.html. In particular: +this repository, see https://go.dev/doc/contribute. + +The git repository is https://go.googlesource.com/oauth2. + +Note: * Excluding trivial changes, all contributions should be connected to an existing issue. * API changes must go through the [change proposal process](https://go.dev/s/proposal-process) before they can be accepted. diff --git a/vendor/golang.org/x/oauth2/google/externalaccount/aws.go b/vendor/golang.org/x/oauth2/google/externalaccount/aws.go index ca27c2e98c96..55d59999e0e8 100644 --- a/vendor/golang.org/x/oauth2/google/externalaccount/aws.go +++ b/vendor/golang.org/x/oauth2/google/externalaccount/aws.go @@ -28,7 +28,7 @@ import ( // AwsSecurityCredentials models AWS security credentials. type AwsSecurityCredentials struct { - // AccessKeyId is the AWS Access Key ID - Required. + // AccessKeyID is the AWS Access Key ID - Required. AccessKeyID string `json:"AccessKeyID"` // SecretAccessKey is the AWS Secret Access Key - Required. SecretAccessKey string `json:"SecretAccessKey"` diff --git a/vendor/golang.org/x/oauth2/google/externalaccount/basecredentials.go b/vendor/golang.org/x/oauth2/google/externalaccount/basecredentials.go index 6c81a68728e1..ee34924e301b 100644 --- a/vendor/golang.org/x/oauth2/google/externalaccount/basecredentials.go +++ b/vendor/golang.org/x/oauth2/google/externalaccount/basecredentials.go @@ -329,7 +329,7 @@ type SubjectTokenSupplier interface { type AwsSecurityCredentialsSupplier interface { // AwsRegion should return the AWS region or an error. AwsRegion(ctx context.Context, options SupplierOptions) (string, error) - // GetAwsSecurityCredentials should return a valid set of AwsSecurityCredentials or an error. + // AwsSecurityCredentials should return a valid set of AwsSecurityCredentials or an error. // The external account token source does not cache the returned security credentials, so caching // logic should be implemented in the supplier to prevent multiple requests for the same security credentials. AwsSecurityCredentials(ctx context.Context, options SupplierOptions) (*AwsSecurityCredentials, error) diff --git a/vendor/golang.org/x/oauth2/oauth2.go b/vendor/golang.org/x/oauth2/oauth2.go index 09f6a49b80a7..74f052aa9fa8 100644 --- a/vendor/golang.org/x/oauth2/oauth2.go +++ b/vendor/golang.org/x/oauth2/oauth2.go @@ -56,7 +56,7 @@ type Config struct { // the OAuth flow, after the resource owner's URLs. RedirectURL string - // Scope specifies optional requested permissions. + // Scopes specifies optional requested permissions. Scopes []string // authStyleCache caches which auth style to use when Endpoint.AuthStyle is diff --git a/vendor/golang.org/x/oauth2/token.go b/vendor/golang.org/x/oauth2/token.go index 5bbb33217488..109997d77cea 100644 --- a/vendor/golang.org/x/oauth2/token.go +++ b/vendor/golang.org/x/oauth2/token.go @@ -49,6 +49,13 @@ type Token struct { // mechanisms for that TokenSource will not be used. Expiry time.Time `json:"expiry,omitempty"` + // ExpiresIn is the OAuth2 wire format "expires_in" field, + // which specifies how many seconds later the token expires, + // relative to an unknown time base approximately around "now". + // It is the application's responsibility to populate + // `Expiry` from `ExpiresIn` when required. + ExpiresIn int64 `json:"expires_in,omitempty"` + // raw optionally contains extra metadata from the server // when updating a token. raw interface{} diff --git a/vendor/golang.org/x/sync/errgroup/errgroup.go b/vendor/golang.org/x/sync/errgroup/errgroup.go index 948a3ee63d4f..f8c3c092658f 100644 --- a/vendor/golang.org/x/sync/errgroup/errgroup.go +++ b/vendor/golang.org/x/sync/errgroup/errgroup.go @@ -18,7 +18,7 @@ import ( type token struct{} // A Group is a collection of goroutines working on subtasks that are part of -// the same overall task. +// the same overall task. A Group should not be reused for different tasks. // // A zero Group is valid, has no limit on the number of active goroutines, // and does not cancel on error. @@ -46,7 +46,7 @@ func (g *Group) done() { // returns a non-nil error or the first time Wait returns, whichever occurs // first. func WithContext(ctx context.Context) (*Group, context.Context) { - ctx, cancel := withCancelCause(ctx) + ctx, cancel := context.WithCancelCause(ctx) return &Group{cancel: cancel}, ctx } @@ -61,6 +61,7 @@ func (g *Group) Wait() error { } // Go calls the given function in a new goroutine. +// The first call to Go must happen before a Wait. // It blocks until the new goroutine can be added without the number of // active goroutines in the group exceeding the configured limit. // @@ -118,6 +119,7 @@ func (g *Group) TryGo(f func() error) bool { // SetLimit limits the number of active goroutines in this group to at most n. // A negative value indicates no limit. +// A limit of zero will prevent any new goroutines from being added. // // Any subsequent call to the Go method will block until it can add an active // goroutine without exceeding the configured limit. diff --git a/vendor/golang.org/x/sync/errgroup/go120.go b/vendor/golang.org/x/sync/errgroup/go120.go deleted file mode 100644 index f93c740b638c..000000000000 --- a/vendor/golang.org/x/sync/errgroup/go120.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2023 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.20 - -package errgroup - -import "context" - -func withCancelCause(parent context.Context) (context.Context, func(error)) { - return context.WithCancelCause(parent) -} diff --git a/vendor/golang.org/x/sync/errgroup/pre_go120.go b/vendor/golang.org/x/sync/errgroup/pre_go120.go deleted file mode 100644 index 88ce33434e23..000000000000 --- a/vendor/golang.org/x/sync/errgroup/pre_go120.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2023 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.20 - -package errgroup - -import "context" - -func withCancelCause(parent context.Context) (context.Context, func(error)) { - ctx, cancel := context.WithCancel(parent) - return ctx, func(error) { cancel() } -} diff --git a/vendor/golang.org/x/sys/cpu/cpu.go b/vendor/golang.org/x/sys/cpu/cpu.go index 02609d5b21d5..2e73ee197527 100644 --- a/vendor/golang.org/x/sys/cpu/cpu.go +++ b/vendor/golang.org/x/sys/cpu/cpu.go @@ -72,6 +72,9 @@ var X86 struct { HasSSSE3 bool // Supplemental streaming SIMD extension 3 HasSSE41 bool // Streaming SIMD extension 4 and 4.1 HasSSE42 bool // Streaming SIMD extension 4 and 4.2 + HasAVXIFMA bool // Advanced vector extension Integer Fused Multiply Add + HasAVXVNNI bool // Advanced vector extension Vector Neural Network Instructions + HasAVXVNNIInt8 bool // Advanced vector extension Vector Neural Network Int8 instructions _ CacheLinePad } @@ -146,6 +149,18 @@ var ARM struct { _ CacheLinePad } +// The booleans in Loong64 contain the correspondingly named cpu feature bit. +// The struct is padded to avoid false sharing. +var Loong64 struct { + _ CacheLinePad + HasLSX bool // support 128-bit vector extension + HasLASX bool // support 256-bit vector extension + HasCRC32 bool // support CRC instruction + HasLAM_BH bool // support AM{SWAP/ADD}[_DB].{B/H} instruction + HasLAMCAS bool // support AMCAS[_DB].{B/H/W/D} instruction + _ CacheLinePad +} + // MIPS64X contains the supported CPU features of the current mips64/mips64le // platforms. If the current platform is not mips64/mips64le or the current // operating system is not Linux then all feature flags are false. diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go b/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go new file mode 100644 index 000000000000..4f34114329ea --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go @@ -0,0 +1,22 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +// HWCAP bits. These are exposed by the Linux kernel. +const ( + hwcap_LOONGARCH_LSX = 1 << 4 + hwcap_LOONGARCH_LASX = 1 << 5 +) + +func doinit() { + // TODO: Features that require kernel support like LSX and LASX can + // be detected here once needed in std library or by the compiler. + Loong64.HasLSX = hwcIsSet(hwCap, hwcap_LOONGARCH_LSX) + Loong64.HasLASX = hwcIsSet(hwCap, hwcap_LOONGARCH_LASX) +} + +func hwcIsSet(hwc uint, val uint) bool { + return hwc&val != 0 +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go b/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go index 7d902b6847bb..a428dec9cde9 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build linux && !arm && !arm64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x && !riscv64 +//go:build linux && !arm && !arm64 && !loong64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x && !riscv64 package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_loong64.go b/vendor/golang.org/x/sys/cpu/cpu_loong64.go index 558635850c78..45ecb29ae78a 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_loong64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_loong64.go @@ -8,5 +8,43 @@ package cpu const cacheLineSize = 64 +// Bit fields for CPUCFG registers, Related reference documents: +// https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#_cpucfg +const ( + // CPUCFG1 bits + cpucfg1_CRC32 = 1 << 25 + + // CPUCFG2 bits + cpucfg2_LAM_BH = 1 << 27 + cpucfg2_LAMCAS = 1 << 28 +) + func initOptions() { + options = []option{ + {Name: "lsx", Feature: &Loong64.HasLSX}, + {Name: "lasx", Feature: &Loong64.HasLASX}, + {Name: "crc32", Feature: &Loong64.HasCRC32}, + {Name: "lam_bh", Feature: &Loong64.HasLAM_BH}, + {Name: "lamcas", Feature: &Loong64.HasLAMCAS}, + } + + // The CPUCFG data on Loong64 only reflects the hardware capabilities, + // not the kernel support status, so features such as LSX and LASX that + // require kernel support cannot be obtained from the CPUCFG data. + // + // These features only require hardware capability support and do not + // require kernel specific support, so they can be obtained directly + // through CPUCFG + cfg1 := get_cpucfg(1) + cfg2 := get_cpucfg(2) + + Loong64.HasCRC32 = cfgIsSet(cfg1, cpucfg1_CRC32) + Loong64.HasLAMCAS = cfgIsSet(cfg2, cpucfg2_LAMCAS) + Loong64.HasLAM_BH = cfgIsSet(cfg2, cpucfg2_LAM_BH) +} + +func get_cpucfg(reg uint32) uint32 + +func cfgIsSet(cfg uint32, val uint32) bool { + return cfg&val != 0 } diff --git a/vendor/golang.org/x/sys/cpu/cpu_loong64.s b/vendor/golang.org/x/sys/cpu/cpu_loong64.s new file mode 100644 index 000000000000..71cbaf1ce276 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_loong64.s @@ -0,0 +1,13 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +// func get_cpucfg(reg uint32) uint32 +TEXT ·get_cpucfg(SB), NOSPLIT|NOFRAME, $0 + MOVW reg+0(FP), R5 + // CPUCFG R5, R4 = 0x00006ca4 + WORD $0x00006ca4 + MOVW R4, ret+8(FP) + RET diff --git a/vendor/golang.org/x/sys/cpu/cpu_x86.go b/vendor/golang.org/x/sys/cpu/cpu_x86.go index 600a6807861e..1e642f3304fa 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_x86.go +++ b/vendor/golang.org/x/sys/cpu/cpu_x86.go @@ -53,6 +53,9 @@ func initOptions() { {Name: "sse41", Feature: &X86.HasSSE41}, {Name: "sse42", Feature: &X86.HasSSE42}, {Name: "ssse3", Feature: &X86.HasSSSE3}, + {Name: "avxifma", Feature: &X86.HasAVXIFMA}, + {Name: "avxvnni", Feature: &X86.HasAVXVNNI}, + {Name: "avxvnniint8", Feature: &X86.HasAVXVNNIInt8}, // These capabilities should always be enabled on amd64: {Name: "sse2", Feature: &X86.HasSSE2, Required: runtime.GOARCH == "amd64"}, @@ -106,7 +109,7 @@ func archInit() { return } - _, ebx7, ecx7, edx7 := cpuid(7, 0) + eax7, ebx7, ecx7, edx7 := cpuid(7, 0) X86.HasBMI1 = isSet(3, ebx7) X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX X86.HasBMI2 = isSet(8, ebx7) @@ -134,14 +137,24 @@ func archInit() { X86.HasAVX512VAES = isSet(9, ecx7) X86.HasAVX512VBMI2 = isSet(6, ecx7) X86.HasAVX512BITALG = isSet(12, ecx7) - - eax71, _, _, _ := cpuid(7, 1) - X86.HasAVX512BF16 = isSet(5, eax71) } X86.HasAMXTile = isSet(24, edx7) X86.HasAMXInt8 = isSet(25, edx7) X86.HasAMXBF16 = isSet(22, edx7) + + // These features depend on the second level of extended features. + if eax7 >= 1 { + eax71, _, _, edx71 := cpuid(7, 1) + if X86.HasAVX512 { + X86.HasAVX512BF16 = isSet(5, eax71) + } + if X86.HasAVX { + X86.HasAVXIFMA = isSet(23, eax71) + X86.HasAVXVNNI = isSet(4, eax71) + X86.HasAVXVNNIInt8 = isSet(4, edx71) + } + } } func isSet(bitpos uint, value uint32) bool { diff --git a/vendor/golang.org/x/sys/cpu/parse.go b/vendor/golang.org/x/sys/cpu/parse.go index 762b63d6882c..56a7e1a176f9 100644 --- a/vendor/golang.org/x/sys/cpu/parse.go +++ b/vendor/golang.org/x/sys/cpu/parse.go @@ -13,7 +13,7 @@ import "strconv" // https://golang.org/cl/209597. func parseRelease(rel string) (major, minor, patch int, ok bool) { // Strip anything after a dash or plus. - for i := 0; i < len(rel); i++ { + for i := range len(rel) { if rel[i] == '-' || rel[i] == '+' { rel = rel[:i] break @@ -21,7 +21,7 @@ func parseRelease(rel string) (major, minor, patch int, ok bool) { } next := func() (int, bool) { - for i := 0; i < len(rel); i++ { + for i := range len(rel) { if rel[i] == '.' { ver, err := strconv.Atoi(rel[:i]) rel = rel[i+1:] diff --git a/vendor/golang.org/x/sys/execabs/execabs.go b/vendor/golang.org/x/sys/execabs/execabs.go deleted file mode 100644 index 3bf40fdfecd5..000000000000 --- a/vendor/golang.org/x/sys/execabs/execabs.go +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package execabs is a drop-in replacement for os/exec -// that requires PATH lookups to find absolute paths. -// That is, execabs.Command("cmd") runs the same PATH lookup -// as exec.Command("cmd"), but if the result is a path -// which is relative, the Run and Start methods will report -// an error instead of running the executable. -// -// See https://blog.golang.org/path-security for more information -// about when it may be necessary or appropriate to use this package. -package execabs - -import ( - "context" - "fmt" - "os/exec" - "path/filepath" - "reflect" - "unsafe" -) - -// ErrNotFound is the error resulting if a path search failed to find an executable file. -// It is an alias for exec.ErrNotFound. -var ErrNotFound = exec.ErrNotFound - -// Cmd represents an external command being prepared or run. -// It is an alias for exec.Cmd. -type Cmd = exec.Cmd - -// Error is returned by LookPath when it fails to classify a file as an executable. -// It is an alias for exec.Error. -type Error = exec.Error - -// An ExitError reports an unsuccessful exit by a command. -// It is an alias for exec.ExitError. -type ExitError = exec.ExitError - -func relError(file, path string) error { - return fmt.Errorf("%s resolves to executable in current directory (.%c%s)", file, filepath.Separator, path) -} - -// LookPath searches for an executable named file in the directories -// named by the PATH environment variable. If file contains a slash, -// it is tried directly and the PATH is not consulted. The result will be -// an absolute path. -// -// LookPath differs from exec.LookPath in its handling of PATH lookups, -// which are used for file names without slashes. If exec.LookPath's -// PATH lookup would have returned an executable from the current directory, -// LookPath instead returns an error. -func LookPath(file string) (string, error) { - path, err := exec.LookPath(file) - if err != nil && !isGo119ErrDot(err) { - return "", err - } - if filepath.Base(file) == file && !filepath.IsAbs(path) { - return "", relError(file, path) - } - return path, nil -} - -func fixCmd(name string, cmd *exec.Cmd) { - if filepath.Base(name) == name && !filepath.IsAbs(cmd.Path) && !isGo119ErrFieldSet(cmd) { - // exec.Command was called with a bare binary name and - // exec.LookPath returned a path which is not absolute. - // Set cmd.lookPathErr and clear cmd.Path so that it - // cannot be run. - lookPathErr := (*error)(unsafe.Pointer(reflect.ValueOf(cmd).Elem().FieldByName("lookPathErr").Addr().Pointer())) - if *lookPathErr == nil { - *lookPathErr = relError(name, cmd.Path) - } - cmd.Path = "" - } -} - -// CommandContext is like Command but includes a context. -// -// The provided context is used to kill the process (by calling os.Process.Kill) -// if the context becomes done before the command completes on its own. -func CommandContext(ctx context.Context, name string, arg ...string) *exec.Cmd { - cmd := exec.CommandContext(ctx, name, arg...) - fixCmd(name, cmd) - return cmd - -} - -// Command returns the Cmd struct to execute the named program with the given arguments. -// See exec.Command for most details. -// -// Command differs from exec.Command in its handling of PATH lookups, -// which are used when the program name contains no slashes. -// If exec.Command would have returned an exec.Cmd configured to run an -// executable from the current directory, Command instead -// returns an exec.Cmd that will return an error from Start or Run. -func Command(name string, arg ...string) *exec.Cmd { - cmd := exec.Command(name, arg...) - fixCmd(name, cmd) - return cmd -} diff --git a/vendor/golang.org/x/sys/execabs/execabs_go118.go b/vendor/golang.org/x/sys/execabs/execabs_go118.go deleted file mode 100644 index 5627d70e3985..000000000000 --- a/vendor/golang.org/x/sys/execabs/execabs_go118.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2022 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.19 - -package execabs - -import "os/exec" - -func isGo119ErrDot(err error) bool { - return false -} - -func isGo119ErrFieldSet(cmd *exec.Cmd) bool { - return false -} diff --git a/vendor/golang.org/x/sys/execabs/execabs_go119.go b/vendor/golang.org/x/sys/execabs/execabs_go119.go deleted file mode 100644 index d60ab1b41951..000000000000 --- a/vendor/golang.org/x/sys/execabs/execabs_go119.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2022 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.19 - -package execabs - -import ( - "errors" - "os/exec" -) - -func isGo119ErrDot(err error) bool { - return errors.Is(err, exec.ErrDot) -} - -func isGo119ErrFieldSet(cmd *exec.Cmd) bool { - return cmd.Err != nil -} diff --git a/vendor/golang.org/x/sys/unix/auxv.go b/vendor/golang.org/x/sys/unix/auxv.go new file mode 100644 index 000000000000..37a82528f580 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/auxv.go @@ -0,0 +1,36 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) + +package unix + +import ( + "syscall" + "unsafe" +) + +//go:linkname runtime_getAuxv runtime.getAuxv +func runtime_getAuxv() []uintptr + +// Auxv returns the ELF auxiliary vector as a sequence of key/value pairs. +// The returned slice is always a fresh copy, owned by the caller. +// It returns an error on non-ELF platforms, or if the auxiliary vector cannot be accessed, +// which happens in some locked-down environments and build modes. +func Auxv() ([][2]uintptr, error) { + vec := runtime_getAuxv() + vecLen := len(vec) + + if vecLen == 0 { + return nil, syscall.ENOENT + } + + if vecLen%2 != 0 { + return nil, syscall.EINVAL + } + + result := make([]uintptr, vecLen) + copy(result, vec) + return unsafe.Slice((*[2]uintptr)(unsafe.Pointer(&result[0])), vecLen/2), nil +} diff --git a/vendor/golang.org/x/sys/unix/auxv_unsupported.go b/vendor/golang.org/x/sys/unix/auxv_unsupported.go new file mode 100644 index 000000000000..1200487f2e86 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/auxv_unsupported.go @@ -0,0 +1,13 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) + +package unix + +import "syscall" + +func Auxv() ([][2]uintptr, error) { + return nil, syscall.ENOTSUP +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 099867deedec..798f61ad3bf9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -602,7 +602,150 @@ func Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocI return } -//sys connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) +// sys connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) +const minIovec = 8 + +func Readv(fd int, iovs [][]byte) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + n, err = readv(fd, iovecs) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + n, err = preadv(fd, iovecs, offset) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Writev(fd int, iovs [][]byte) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = writev(fd, iovecs) + writevRacedetect(iovecs, n) + return n, err +} + +func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = pwritev(fd, iovecs, offset) + writevRacedetect(iovecs, n) + return n, err +} + +func appendBytes(vecs []Iovec, bs [][]byte) []Iovec { + for _, b := range bs { + var v Iovec + v.SetLen(len(b)) + if len(b) > 0 { + v.Base = &b[0] + } else { + v.Base = (*byte)(unsafe.Pointer(&_zero)) + } + vecs = append(vecs, v) + } + return vecs +} + +func writevRacedetect(iovecs []Iovec, n int) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := int(iovecs[i].Len) + if m > n { + m = n + } + n -= m + if m > 0 { + raceReadRange(unsafe.Pointer(iovecs[i].Base), m) + } + } +} + +func readvRacedetect(iovecs []Iovec, n int, err error) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := int(iovecs[i].Len) + if m > n { + m = n + } + n -= m + if m > 0 { + raceWriteRange(unsafe.Pointer(iovecs[i].Base), m) + } + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } +} + +func darwinMajorMinPatch() (maj, min, patch int, err error) { + var un Utsname + err = Uname(&un) + if err != nil { + return + } + + var mmp [3]int + c := 0 +Loop: + for _, b := range un.Release[:] { + switch { + case b >= '0' && b <= '9': + mmp[c] = 10*mmp[c] + int(b-'0') + case b == '.': + c++ + if c > 2 { + return 0, 0, 0, ENOTSUP + } + case b == 0: + break Loop + default: + return 0, 0, 0, ENOTSUP + } + } + if c != 2 { + return 0, 0, 0, ENOTSUP + } + return mmp[0], mmp[1], mmp[2], nil +} + +func darwinKernelVersionMin(maj, min, patch int) bool { + actualMaj, actualMin, actualPatch, err := darwinMajorMinPatch() + if err != nil { + return false + } + return actualMaj > maj || actualMaj == maj && (actualMin > min || actualMin == min && actualPatch >= patch) +} + //sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) //sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) @@ -705,3 +848,7 @@ func Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocI //sys write(fd int, p []byte) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) //sys munmap(addr uintptr, length uintptr) (err error) +//sys readv(fd int, iovecs []Iovec) (n int, err error) +//sys preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) +//sys writev(fd int, iovecs []Iovec) (n int, err error) +//sys pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 230a94549a7a..4958a657085b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -13,6 +13,7 @@ package unix import ( "encoding/binary" + "slices" "strconv" "syscall" "time" @@ -417,7 +418,7 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { return nil, 0, EINVAL } sa.raw.Family = AF_UNIX - for i := 0; i < n; i++ { + for i := range n { sa.raw.Path[i] = int8(name[i]) } // length is family (uint16), name, NUL. @@ -507,7 +508,7 @@ func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm)) psm[0] = byte(sa.PSM) psm[1] = byte(sa.PSM >> 8) - for i := 0; i < len(sa.Addr); i++ { + for i := range len(sa.Addr) { sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i] } cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid)) @@ -589,11 +590,11 @@ func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { sa.raw.Family = AF_CAN sa.raw.Ifindex = int32(sa.Ifindex) rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) - for i := 0; i < 4; i++ { + for i := range 4 { sa.raw.Addr[i] = rx[i] } tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) - for i := 0; i < 4; i++ { + for i := range 4 { sa.raw.Addr[i+4] = tx[i] } return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil @@ -618,11 +619,11 @@ func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) { sa.raw.Family = AF_CAN sa.raw.Ifindex = int32(sa.Ifindex) n := (*[8]byte)(unsafe.Pointer(&sa.Name)) - for i := 0; i < 8; i++ { + for i := range 8 { sa.raw.Addr[i] = n[i] } p := (*[4]byte)(unsafe.Pointer(&sa.PGN)) - for i := 0; i < 4; i++ { + for i := range 4 { sa.raw.Addr[i+8] = p[i] } sa.raw.Addr[12] = sa.Addr @@ -911,7 +912,7 @@ func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) { // These are EBCDIC encoded by the kernel, but we still need to pad them // with blanks. Initializing with blanks allows the caller to feed in either // a padded or an unpadded string. - for i := 0; i < 8; i++ { + for i := range 8 { sa.raw.Nodeid[i] = ' ' sa.raw.User_id[i] = ' ' sa.raw.Name[i] = ' ' @@ -1148,7 +1149,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { var user [8]byte var name [8]byte - for i := 0; i < 8; i++ { + for i := range 8 { user[i] = byte(pp.User_id[i]) name[i] = byte(pp.Name[i]) } @@ -1173,11 +1174,11 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { Ifindex: int(pp.Ifindex), } name := (*[8]byte)(unsafe.Pointer(&sa.Name)) - for i := 0; i < 8; i++ { + for i := range 8 { name[i] = pp.Addr[i] } pgn := (*[4]byte)(unsafe.Pointer(&sa.PGN)) - for i := 0; i < 4; i++ { + for i := range 4 { pgn[i] = pp.Addr[i+8] } addr := (*[1]byte)(unsafe.Pointer(&sa.Addr)) @@ -1188,11 +1189,11 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { Ifindex: int(pp.Ifindex), } rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) - for i := 0; i < 4; i++ { + for i := range 4 { rx[i] = pp.Addr[i] } tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) - for i := 0; i < 4; i++ { + for i := range 4 { tx[i] = pp.Addr[i+4] } return sa, nil @@ -2216,10 +2217,7 @@ func readvRacedetect(iovecs []Iovec, n int, err error) { return } for i := 0; n > 0 && i < len(iovecs); i++ { - m := int(iovecs[i].Len) - if m > n { - m = n - } + m := min(int(iovecs[i].Len), n) n -= m if m > 0 { raceWriteRange(unsafe.Pointer(iovecs[i].Base), m) @@ -2270,10 +2268,7 @@ func writevRacedetect(iovecs []Iovec, n int) { return } for i := 0; n > 0 && i < len(iovecs); i++ { - m := int(iovecs[i].Len) - if m > n { - m = n - } + m := min(int(iovecs[i].Len), n) n -= m if m > 0 { raceReadRange(unsafe.Pointer(iovecs[i].Base), m) @@ -2320,12 +2315,7 @@ func isGroupMember(gid int) bool { return false } - for _, g := range groups { - if g == gid { - return true - } - } - return false + return slices.Contains(groups, gid) } func isCapDacOverrideSet() bool { diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index 21974af064dd..abc3955477c7 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -1102,3 +1102,90 @@ func (s *Strioctl) SetInt(i int) { func IoctlSetStrioctlRetInt(fd int, req int, s *Strioctl) (int, error) { return ioctlPtrRet(fd, req, unsafe.Pointer(s)) } + +// Ucred Helpers +// See ucred(3c) and getpeerucred(3c) + +//sys getpeerucred(fd uintptr, ucred *uintptr) (err error) +//sys ucredFree(ucred uintptr) = ucred_free +//sys ucredGet(pid int) (ucred uintptr, err error) = ucred_get +//sys ucredGeteuid(ucred uintptr) (uid int) = ucred_geteuid +//sys ucredGetegid(ucred uintptr) (gid int) = ucred_getegid +//sys ucredGetruid(ucred uintptr) (uid int) = ucred_getruid +//sys ucredGetrgid(ucred uintptr) (gid int) = ucred_getrgid +//sys ucredGetsuid(ucred uintptr) (uid int) = ucred_getsuid +//sys ucredGetsgid(ucred uintptr) (gid int) = ucred_getsgid +//sys ucredGetpid(ucred uintptr) (pid int) = ucred_getpid + +// Ucred is an opaque struct that holds user credentials. +type Ucred struct { + ucred uintptr +} + +// We need to ensure that ucredFree is called on the underlying ucred +// when the Ucred is garbage collected. +func ucredFinalizer(u *Ucred) { + ucredFree(u.ucred) +} + +func GetPeerUcred(fd uintptr) (*Ucred, error) { + var ucred uintptr + err := getpeerucred(fd, &ucred) + if err != nil { + return nil, err + } + result := &Ucred{ + ucred: ucred, + } + // set the finalizer on the result so that the ucred will be freed + runtime.SetFinalizer(result, ucredFinalizer) + return result, nil +} + +func UcredGet(pid int) (*Ucred, error) { + ucred, err := ucredGet(pid) + if err != nil { + return nil, err + } + result := &Ucred{ + ucred: ucred, + } + // set the finalizer on the result so that the ucred will be freed + runtime.SetFinalizer(result, ucredFinalizer) + return result, nil +} + +func (u *Ucred) Geteuid() int { + defer runtime.KeepAlive(u) + return ucredGeteuid(u.ucred) +} + +func (u *Ucred) Getruid() int { + defer runtime.KeepAlive(u) + return ucredGetruid(u.ucred) +} + +func (u *Ucred) Getsuid() int { + defer runtime.KeepAlive(u) + return ucredGetsuid(u.ucred) +} + +func (u *Ucred) Getegid() int { + defer runtime.KeepAlive(u) + return ucredGetegid(u.ucred) +} + +func (u *Ucred) Getrgid() int { + defer runtime.KeepAlive(u) + return ucredGetrgid(u.ucred) +} + +func (u *Ucred) Getsgid() int { + defer runtime.KeepAlive(u) + return ucredGetsgid(u.ucred) +} + +func (u *Ucred) Getpid() int { + defer runtime.KeepAlive(u) + return ucredGetpid(u.ucred) +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 6ebc48b3fecd..4f432bfe8fee 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -1245,6 +1245,7 @@ const ( FAN_REPORT_DFID_NAME = 0xc00 FAN_REPORT_DFID_NAME_TARGET = 0x1e00 FAN_REPORT_DIR_FID = 0x400 + FAN_REPORT_FD_ERROR = 0x2000 FAN_REPORT_FID = 0x200 FAN_REPORT_NAME = 0x800 FAN_REPORT_PIDFD = 0x80 @@ -1330,8 +1331,10 @@ const ( FUSE_SUPER_MAGIC = 0x65735546 FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 + F_CREATED_QUERY = 0x404 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 + F_DUPFD_QUERY = 0x403 F_EXLCK = 0x4 F_GETFD = 0x1 F_GETFL = 0x3 @@ -1551,6 +1554,7 @@ const ( IPPROTO_ROUTING = 0x2b IPPROTO_RSVP = 0x2e IPPROTO_SCTP = 0x84 + IPPROTO_SMC = 0x100 IPPROTO_TCP = 0x6 IPPROTO_TP = 0x1d IPPROTO_UDP = 0x11 @@ -1623,6 +1627,8 @@ const ( IPV6_UNICAST_IF = 0x4c IPV6_USER_FLOW = 0xe IPV6_V6ONLY = 0x1a + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 IP_ADD_SOURCE_MEMBERSHIP = 0x27 @@ -1867,6 +1873,7 @@ const ( MADV_UNMERGEABLE = 0xd MADV_WILLNEED = 0x3 MADV_WIPEONFORK = 0x12 + MAP_DROPPABLE = 0x8 MAP_FILE = 0x0 MAP_FIXED = 0x10 MAP_FIXED_NOREPLACE = 0x100000 @@ -1967,6 +1974,7 @@ const ( MSG_PEEK = 0x2 MSG_PROXY = 0x10 MSG_RST = 0x1000 + MSG_SOCK_DEVMEM = 0x2000000 MSG_SYN = 0x400 MSG_TRUNC = 0x20 MSG_TRYHARD = 0x4 @@ -2083,6 +2091,7 @@ const ( NFC_ATR_REQ_MAXSIZE = 0x40 NFC_ATR_RES_GB_MAXSIZE = 0x2f NFC_ATR_RES_MAXSIZE = 0x40 + NFC_ATS_MAXSIZE = 0x14 NFC_COMM_ACTIVE = 0x0 NFC_COMM_PASSIVE = 0x1 NFC_DEVICE_NAME_MAXSIZE = 0x8 @@ -2163,6 +2172,7 @@ const ( NFNL_SUBSYS_QUEUE = 0x3 NFNL_SUBSYS_ULOG = 0x4 NFS_SUPER_MAGIC = 0x6969 + NFT_BITWISE_BOOL = 0x0 NFT_CHAIN_FLAGS = 0x7 NFT_CHAIN_MAXNAMELEN = 0x100 NFT_CT_MAX = 0x17 @@ -2491,6 +2501,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SHADOW_STACK_STATUS = 0x4a PR_GET_SPECULATION_CTRL = 0x34 PR_GET_TAGGED_ADDR_CTRL = 0x38 PR_GET_THP_DISABLE = 0x2a @@ -2499,6 +2510,7 @@ const ( PR_GET_TIMING = 0xd PR_GET_TSC = 0x19 PR_GET_UNALIGN = 0x5 + PR_LOCK_SHADOW_STACK_STATUS = 0x4c PR_MCE_KILL = 0x21 PR_MCE_KILL_CLEAR = 0x0 PR_MCE_KILL_DEFAULT = 0x2 @@ -2525,6 +2537,8 @@ const ( PR_PAC_GET_ENABLED_KEYS = 0x3d PR_PAC_RESET_KEYS = 0x36 PR_PAC_SET_ENABLED_KEYS = 0x3c + PR_PMLEN_MASK = 0x7f000000 + PR_PMLEN_SHIFT = 0x18 PR_PPC_DEXCR_CTRL_CLEAR = 0x4 PR_PPC_DEXCR_CTRL_CLEAR_ONEXEC = 0x10 PR_PPC_DEXCR_CTRL_EDITABLE = 0x1 @@ -2592,6 +2606,7 @@ const ( PR_SET_PTRACER = 0x59616d61 PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SHADOW_STACK_STATUS = 0x4b PR_SET_SPECULATION_CTRL = 0x35 PR_SET_SYSCALL_USER_DISPATCH = 0x3b PR_SET_TAGGED_ADDR_CTRL = 0x37 @@ -2602,6 +2617,9 @@ const ( PR_SET_UNALIGN = 0x6 PR_SET_VMA = 0x53564d41 PR_SET_VMA_ANON_NAME = 0x0 + PR_SHADOW_STACK_ENABLE = 0x1 + PR_SHADOW_STACK_PUSH = 0x4 + PR_SHADOW_STACK_WRITE = 0x2 PR_SME_GET_VL = 0x40 PR_SME_SET_VL = 0x3f PR_SME_SET_VL_ONEXEC = 0x40000 @@ -2911,7 +2929,6 @@ const ( RTM_NEWNEXTHOP = 0x68 RTM_NEWNEXTHOPBUCKET = 0x74 RTM_NEWNSID = 0x58 - RTM_NEWNVLAN = 0x70 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 RTM_NEWROUTE = 0x18 @@ -2920,6 +2937,7 @@ const ( RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c RTM_NEWTUNNEL = 0x78 + RTM_NEWVLAN = 0x70 RTM_NR_FAMILIES = 0x1b RTM_NR_MSGTYPES = 0x6c RTM_SETDCB = 0x4f diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index c0d45e320505..75207613c785 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -116,6 +116,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -304,6 +306,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index c731d24f0252..c68acda53522 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -116,6 +116,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -305,6 +307,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index 680018a4a7c9..a8c607ab86b5 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -115,6 +115,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -310,6 +312,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index a63909f308d6..18563dd8d33a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -109,6 +109,7 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + GCS_MAGIC = 0x47435300 HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 @@ -119,6 +120,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -302,6 +305,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go index 9b0a2573fe3f..22912cdaa944 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -116,6 +116,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -297,6 +299,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 958e6e0645ac..29344eb37ab5 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -115,6 +115,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x80 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -303,6 +305,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 50c7f25bd16c..20d51fb96a89 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -115,6 +115,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x80 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -303,6 +305,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index ced21d66d955..321b60902ae5 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -115,6 +115,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x80 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -303,6 +305,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 226c04419023..9bacdf1e2791 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -115,6 +115,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x80 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -303,6 +305,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index 3122737cd464..c2242726156a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -115,6 +115,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x80 IUCLC = 0x1000 IXOFF = 0x400 @@ -358,6 +360,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index eb5d3467edf0..6270c8ee13e3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -115,6 +115,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x80 IUCLC = 0x1000 IXOFF = 0x400 @@ -362,6 +364,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index e921ebc60b71..9966c1941f83 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -115,6 +115,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x80 IUCLC = 0x1000 IXOFF = 0x400 @@ -362,6 +364,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 38ba81c55c1f..848e5fcc42e6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -115,6 +115,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -294,6 +296,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 71f0400977b3..669b2adb80b7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -115,6 +115,8 @@ const ( IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -366,6 +368,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index c44a313322c5..4834e57514e4 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -119,6 +119,8 @@ const ( IN_CLOEXEC = 0x400000 IN_NONBLOCK = 0x4000 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -357,6 +359,7 @@ const ( SCM_TIMESTAMPING_OPT_STATS = 0x38 SCM_TIMESTAMPING_PKTINFO = 0x3c SCM_TIMESTAMPNS = 0x21 + SCM_TS_OPT_ID = 0x5a SCM_TXTIME = 0x3f SCM_WIFI_STATUS = 0x25 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 24b346e1a351..813c05b6647b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -2512,6 +2512,90 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func readv(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readv readv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_preadv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_preadv preadv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_writev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_writev writev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwritev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwritev pwritev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index ebd213100b35..fda328582b2b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -738,6 +738,26 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) +TEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readv(SB) +GLOBL ·libc_readv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB) + +TEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_preadv(SB) +GLOBL ·libc_preadv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB) + +TEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_writev(SB) +GLOBL ·libc_writev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB) + +TEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwritev(SB) +GLOBL ·libc_pwritev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB) + TEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstat64(SB) GLOBL ·libc_fstat64_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 824b9c2d5e0e..e6f58f3c6f4f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -2512,6 +2512,90 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func readv(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readv readv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_preadv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_preadv preadv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_writev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_writev writev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwritev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwritev pwritev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index 4f178a229345..7f8998b905b9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -738,6 +738,26 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) +TEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readv(SB) +GLOBL ·libc_readv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB) + +TEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_preadv(SB) +GLOBL ·libc_preadv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB) + +TEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_writev(SB) +GLOBL ·libc_writev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB) + +TEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwritev(SB) +GLOBL ·libc_pwritev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB) + TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstat(SB) GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 829b87feb8da..c6545413c45b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -141,6 +141,16 @@ import ( //go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so" //go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" //go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" +//go:cgo_import_dynamic libc_getpeerucred getpeerucred "libc.so" +//go:cgo_import_dynamic libc_ucred_get ucred_get "libc.so" +//go:cgo_import_dynamic libc_ucred_geteuid ucred_geteuid "libc.so" +//go:cgo_import_dynamic libc_ucred_getegid ucred_getegid "libc.so" +//go:cgo_import_dynamic libc_ucred_getruid ucred_getruid "libc.so" +//go:cgo_import_dynamic libc_ucred_getrgid ucred_getrgid "libc.so" +//go:cgo_import_dynamic libc_ucred_getsuid ucred_getsuid "libc.so" +//go:cgo_import_dynamic libc_ucred_getsgid ucred_getsgid "libc.so" +//go:cgo_import_dynamic libc_ucred_getpid ucred_getpid "libc.so" +//go:cgo_import_dynamic libc_ucred_free ucred_free "libc.so" //go:cgo_import_dynamic libc_port_create port_create "libc.so" //go:cgo_import_dynamic libc_port_associate port_associate "libc.so" //go:cgo_import_dynamic libc_port_dissociate port_dissociate "libc.so" @@ -280,6 +290,16 @@ import ( //go:linkname procgetpeername libc_getpeername //go:linkname procsetsockopt libc_setsockopt //go:linkname procrecvfrom libc_recvfrom +//go:linkname procgetpeerucred libc_getpeerucred +//go:linkname procucred_get libc_ucred_get +//go:linkname procucred_geteuid libc_ucred_geteuid +//go:linkname procucred_getegid libc_ucred_getegid +//go:linkname procucred_getruid libc_ucred_getruid +//go:linkname procucred_getrgid libc_ucred_getrgid +//go:linkname procucred_getsuid libc_ucred_getsuid +//go:linkname procucred_getsgid libc_ucred_getsgid +//go:linkname procucred_getpid libc_ucred_getpid +//go:linkname procucred_free libc_ucred_free //go:linkname procport_create libc_port_create //go:linkname procport_associate libc_port_associate //go:linkname procport_dissociate libc_port_dissociate @@ -420,6 +440,16 @@ var ( procgetpeername, procsetsockopt, procrecvfrom, + procgetpeerucred, + procucred_get, + procucred_geteuid, + procucred_getegid, + procucred_getruid, + procucred_getrgid, + procucred_getsuid, + procucred_getsgid, + procucred_getpid, + procucred_free, procport_create, procport_associate, procport_dissociate, @@ -2029,6 +2059,90 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getpeerucred(fd uintptr, ucred *uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetpeerucred)), 2, uintptr(fd), uintptr(unsafe.Pointer(ucred)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGet(pid int) (ucred uintptr, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procucred_get)), 1, uintptr(pid), 0, 0, 0, 0, 0) + ucred = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGeteuid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_geteuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetegid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getegid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetruid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getruid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetrgid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getrgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetsuid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetsgid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetpid(ucred uintptr) (pid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getpid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredFree(ucred uintptr) { + sysvicall6(uintptr(unsafe.Pointer(&procucred_free)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func port_create() (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index 524b0820cbc2..c79aaff306ae 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -458,4 +458,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index f485dbf45656..5eb450695e95 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -381,4 +381,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index 70b35bf3b09f..05e502974458 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -422,4 +422,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index 1893e2fe8840..38c53ec51bb3 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -325,4 +325,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go index 16a4017da0ab..31d2e71a18e1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -321,4 +321,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index 7e567f1efff2..f4184a336b0e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -442,4 +442,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 4460 SYS_LSM_LIST_MODULES = 4461 SYS_MSEAL = 4462 + SYS_SETXATTRAT = 4463 + SYS_GETXATTRAT = 4464 + SYS_LISTXATTRAT = 4465 + SYS_REMOVEXATTRAT = 4466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 38ae55e5ef85..05b9962278f2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -372,4 +372,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 5460 SYS_LSM_LIST_MODULES = 5461 SYS_MSEAL = 5462 + SYS_SETXATTRAT = 5463 + SYS_GETXATTRAT = 5464 + SYS_LISTXATTRAT = 5465 + SYS_REMOVEXATTRAT = 5466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index 55e92e60a82a..43a256e9e675 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -372,4 +372,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 5460 SYS_LSM_LIST_MODULES = 5461 SYS_MSEAL = 5462 + SYS_SETXATTRAT = 5463 + SYS_GETXATTRAT = 5464 + SYS_LISTXATTRAT = 5465 + SYS_REMOVEXATTRAT = 5466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 60658d6a021f..eea5ddfc2207 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -442,4 +442,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 4460 SYS_LSM_LIST_MODULES = 4461 SYS_MSEAL = 4462 + SYS_SETXATTRAT = 4463 + SYS_GETXATTRAT = 4464 + SYS_LISTXATTRAT = 4465 + SYS_REMOVEXATTRAT = 4466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go index e203e8a7ed4b..0d777bfbb140 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -449,4 +449,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index 5944b97d5460..b44636502561 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -421,4 +421,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index c66d416dad1c..0c7d21c18816 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -421,4 +421,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index a5459e766f59..840539169878 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -326,4 +326,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index 01d86825bb92..fcf1b790d6cf 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -387,4 +387,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 7b703e77cda8..52d15b5f9d45 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -400,4 +400,8 @@ const ( SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 5537148dcbb3..a46abe647205 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -4747,7 +4747,7 @@ const ( NL80211_ATTR_MAC_HINT = 0xc8 NL80211_ATTR_MAC_MASK = 0xd7 NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca - NL80211_ATTR_MAX = 0x14c + NL80211_ATTR_MAX = 0x14d NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 NL80211_ATTR_MAX_CSA_COUNTERS = 0xce NL80211_ATTR_MAX_MATCH_SETS = 0x85 @@ -5519,7 +5519,7 @@ const ( NL80211_MNTR_FLAG_CONTROL = 0x3 NL80211_MNTR_FLAG_COOK_FRAMES = 0x5 NL80211_MNTR_FLAG_FCSFAIL = 0x1 - NL80211_MNTR_FLAG_MAX = 0x6 + NL80211_MNTR_FLAG_MAX = 0x7 NL80211_MNTR_FLAG_OTHER_BSS = 0x4 NL80211_MNTR_FLAG_PLCPFAIL = 0x2 NL80211_MPATH_FLAG_ACTIVE = 0x1 @@ -6174,3 +6174,5 @@ type SockDiagReq struct { Family uint8 Protocol uint8 } + +const RTM_NEWNVLAN = 0x70 diff --git a/vendor/golang.org/x/sys/windows/registry/key.go b/vendor/golang.org/x/sys/windows/registry/key.go new file mode 100644 index 000000000000..39aeeb644f55 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/registry/key.go @@ -0,0 +1,214 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +// Package registry provides access to the Windows registry. +// +// Here is a simple example, opening a registry key and reading a string value from it. +// +// k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE) +// if err != nil { +// log.Fatal(err) +// } +// defer k.Close() +// +// s, _, err := k.GetStringValue("SystemRoot") +// if err != nil { +// log.Fatal(err) +// } +// fmt.Printf("Windows system root is %q\n", s) +package registry + +import ( + "io" + "runtime" + "syscall" + "time" +) + +const ( + // Registry key security and access rights. + // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms724878.aspx + // for details. + ALL_ACCESS = 0xf003f + CREATE_LINK = 0x00020 + CREATE_SUB_KEY = 0x00004 + ENUMERATE_SUB_KEYS = 0x00008 + EXECUTE = 0x20019 + NOTIFY = 0x00010 + QUERY_VALUE = 0x00001 + READ = 0x20019 + SET_VALUE = 0x00002 + WOW64_32KEY = 0x00200 + WOW64_64KEY = 0x00100 + WRITE = 0x20006 +) + +// Key is a handle to an open Windows registry key. +// Keys can be obtained by calling OpenKey; there are +// also some predefined root keys such as CURRENT_USER. +// Keys can be used directly in the Windows API. +type Key syscall.Handle + +const ( + // Windows defines some predefined root keys that are always open. + // An application can use these keys as entry points to the registry. + // Normally these keys are used in OpenKey to open new keys, + // but they can also be used anywhere a Key is required. + CLASSES_ROOT = Key(syscall.HKEY_CLASSES_ROOT) + CURRENT_USER = Key(syscall.HKEY_CURRENT_USER) + LOCAL_MACHINE = Key(syscall.HKEY_LOCAL_MACHINE) + USERS = Key(syscall.HKEY_USERS) + CURRENT_CONFIG = Key(syscall.HKEY_CURRENT_CONFIG) + PERFORMANCE_DATA = Key(syscall.HKEY_PERFORMANCE_DATA) +) + +// Close closes open key k. +func (k Key) Close() error { + return syscall.RegCloseKey(syscall.Handle(k)) +} + +// OpenKey opens a new key with path name relative to key k. +// It accepts any open key, including CURRENT_USER and others, +// and returns the new key and an error. +// The access parameter specifies desired access rights to the +// key to be opened. +func OpenKey(k Key, path string, access uint32) (Key, error) { + p, err := syscall.UTF16PtrFromString(path) + if err != nil { + return 0, err + } + var subkey syscall.Handle + err = syscall.RegOpenKeyEx(syscall.Handle(k), p, 0, access, &subkey) + if err != nil { + return 0, err + } + return Key(subkey), nil +} + +// OpenRemoteKey opens a predefined registry key on another +// computer pcname. The key to be opened is specified by k, but +// can only be one of LOCAL_MACHINE, PERFORMANCE_DATA or USERS. +// If pcname is "", OpenRemoteKey returns local computer key. +func OpenRemoteKey(pcname string, k Key) (Key, error) { + var err error + var p *uint16 + if pcname != "" { + p, err = syscall.UTF16PtrFromString(`\\` + pcname) + if err != nil { + return 0, err + } + } + var remoteKey syscall.Handle + err = regConnectRegistry(p, syscall.Handle(k), &remoteKey) + if err != nil { + return 0, err + } + return Key(remoteKey), nil +} + +// ReadSubKeyNames returns the names of subkeys of key k. +// The parameter n controls the number of returned names, +// analogous to the way os.File.Readdirnames works. +func (k Key) ReadSubKeyNames(n int) ([]string, error) { + // RegEnumKeyEx must be called repeatedly and to completion. + // During this time, this goroutine cannot migrate away from + // its current thread. See https://golang.org/issue/49320 and + // https://golang.org/issue/49466. + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + names := make([]string, 0) + // Registry key size limit is 255 bytes and described there: + // https://msdn.microsoft.com/library/windows/desktop/ms724872.aspx + buf := make([]uint16, 256) //plus extra room for terminating zero byte +loopItems: + for i := uint32(0); ; i++ { + if n > 0 { + if len(names) == n { + return names, nil + } + } + l := uint32(len(buf)) + for { + err := syscall.RegEnumKeyEx(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil) + if err == nil { + break + } + if err == syscall.ERROR_MORE_DATA { + // Double buffer size and try again. + l = uint32(2 * len(buf)) + buf = make([]uint16, l) + continue + } + if err == _ERROR_NO_MORE_ITEMS { + break loopItems + } + return names, err + } + names = append(names, syscall.UTF16ToString(buf[:l])) + } + if n > len(names) { + return names, io.EOF + } + return names, nil +} + +// CreateKey creates a key named path under open key k. +// CreateKey returns the new key and a boolean flag that reports +// whether the key already existed. +// The access parameter specifies the access rights for the key +// to be created. +func CreateKey(k Key, path string, access uint32) (newk Key, openedExisting bool, err error) { + var h syscall.Handle + var d uint32 + var pathPointer *uint16 + pathPointer, err = syscall.UTF16PtrFromString(path) + if err != nil { + return 0, false, err + } + err = regCreateKeyEx(syscall.Handle(k), pathPointer, + 0, nil, _REG_OPTION_NON_VOLATILE, access, nil, &h, &d) + if err != nil { + return 0, false, err + } + return Key(h), d == _REG_OPENED_EXISTING_KEY, nil +} + +// DeleteKey deletes the subkey path of key k and its values. +func DeleteKey(k Key, path string) error { + pathPointer, err := syscall.UTF16PtrFromString(path) + if err != nil { + return err + } + return regDeleteKey(syscall.Handle(k), pathPointer) +} + +// A KeyInfo describes the statistics of a key. It is returned by Stat. +type KeyInfo struct { + SubKeyCount uint32 + MaxSubKeyLen uint32 // size of the key's subkey with the longest name, in Unicode characters, not including the terminating zero byte + ValueCount uint32 + MaxValueNameLen uint32 // size of the key's longest value name, in Unicode characters, not including the terminating zero byte + MaxValueLen uint32 // longest data component among the key's values, in bytes + lastWriteTime syscall.Filetime +} + +// ModTime returns the key's last write time. +func (ki *KeyInfo) ModTime() time.Time { + return time.Unix(0, ki.lastWriteTime.Nanoseconds()) +} + +// Stat retrieves information about the open key k. +func (k Key) Stat() (*KeyInfo, error) { + var ki KeyInfo + err := syscall.RegQueryInfoKey(syscall.Handle(k), nil, nil, nil, + &ki.SubKeyCount, &ki.MaxSubKeyLen, nil, &ki.ValueCount, + &ki.MaxValueNameLen, &ki.MaxValueLen, nil, &ki.lastWriteTime) + if err != nil { + return nil, err + } + return &ki, nil +} diff --git a/vendor/golang.org/x/sys/windows/registry/mksyscall.go b/vendor/golang.org/x/sys/windows/registry/mksyscall.go new file mode 100644 index 000000000000..bbf86ccf0c05 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/registry/mksyscall.go @@ -0,0 +1,9 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build generate + +package registry + +//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go syscall.go diff --git a/vendor/golang.org/x/sys/windows/registry/syscall.go b/vendor/golang.org/x/sys/windows/registry/syscall.go new file mode 100644 index 000000000000..f533091c19ef --- /dev/null +++ b/vendor/golang.org/x/sys/windows/registry/syscall.go @@ -0,0 +1,32 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +package registry + +import "syscall" + +const ( + _REG_OPTION_NON_VOLATILE = 0 + + _REG_CREATED_NEW_KEY = 1 + _REG_OPENED_EXISTING_KEY = 2 + + _ERROR_NO_MORE_ITEMS syscall.Errno = 259 +) + +func LoadRegLoadMUIString() error { + return procRegLoadMUIStringW.Find() +} + +//sys regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) = advapi32.RegCreateKeyExW +//sys regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) = advapi32.RegDeleteKeyW +//sys regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) = advapi32.RegSetValueExW +//sys regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegEnumValueW +//sys regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) = advapi32.RegDeleteValueW +//sys regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) = advapi32.RegLoadMUIStringW +//sys regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) = advapi32.RegConnectRegistryW + +//sys expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW diff --git a/vendor/golang.org/x/sys/windows/registry/value.go b/vendor/golang.org/x/sys/windows/registry/value.go new file mode 100644 index 000000000000..a1bcbb2362cc --- /dev/null +++ b/vendor/golang.org/x/sys/windows/registry/value.go @@ -0,0 +1,390 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +package registry + +import ( + "errors" + "io" + "syscall" + "unicode/utf16" + "unsafe" +) + +const ( + // Registry value types. + NONE = 0 + SZ = 1 + EXPAND_SZ = 2 + BINARY = 3 + DWORD = 4 + DWORD_BIG_ENDIAN = 5 + LINK = 6 + MULTI_SZ = 7 + RESOURCE_LIST = 8 + FULL_RESOURCE_DESCRIPTOR = 9 + RESOURCE_REQUIREMENTS_LIST = 10 + QWORD = 11 +) + +var ( + // ErrShortBuffer is returned when the buffer was too short for the operation. + ErrShortBuffer = syscall.ERROR_MORE_DATA + + // ErrNotExist is returned when a registry key or value does not exist. + ErrNotExist = syscall.ERROR_FILE_NOT_FOUND + + // ErrUnexpectedType is returned by Get*Value when the value's type was unexpected. + ErrUnexpectedType = errors.New("unexpected key value type") +) + +// GetValue retrieves the type and data for the specified value associated +// with an open key k. It fills up buffer buf and returns the retrieved +// byte count n. If buf is too small to fit the stored value it returns +// ErrShortBuffer error along with the required buffer size n. +// If no buffer is provided, it returns true and actual buffer size n. +// If no buffer is provided, GetValue returns the value's type only. +// If the value does not exist, the error returned is ErrNotExist. +// +// GetValue is a low level function. If value's type is known, use the appropriate +// Get*Value function instead. +func (k Key) GetValue(name string, buf []byte) (n int, valtype uint32, err error) { + pname, err := syscall.UTF16PtrFromString(name) + if err != nil { + return 0, 0, err + } + var pbuf *byte + if len(buf) > 0 { + pbuf = (*byte)(unsafe.Pointer(&buf[0])) + } + l := uint32(len(buf)) + err = syscall.RegQueryValueEx(syscall.Handle(k), pname, nil, &valtype, pbuf, &l) + if err != nil { + return int(l), valtype, err + } + return int(l), valtype, nil +} + +func (k Key) getValue(name string, buf []byte) (data []byte, valtype uint32, err error) { + p, err := syscall.UTF16PtrFromString(name) + if err != nil { + return nil, 0, err + } + var t uint32 + n := uint32(len(buf)) + for { + err = syscall.RegQueryValueEx(syscall.Handle(k), p, nil, &t, (*byte)(unsafe.Pointer(&buf[0])), &n) + if err == nil { + return buf[:n], t, nil + } + if err != syscall.ERROR_MORE_DATA { + return nil, 0, err + } + if n <= uint32(len(buf)) { + return nil, 0, err + } + buf = make([]byte, n) + } +} + +// GetStringValue retrieves the string value for the specified +// value name associated with an open key k. It also returns the value's type. +// If value does not exist, GetStringValue returns ErrNotExist. +// If value is not SZ or EXPAND_SZ, it will return the correct value +// type and ErrUnexpectedType. +func (k Key) GetStringValue(name string) (val string, valtype uint32, err error) { + data, typ, err2 := k.getValue(name, make([]byte, 64)) + if err2 != nil { + return "", typ, err2 + } + switch typ { + case SZ, EXPAND_SZ: + default: + return "", typ, ErrUnexpectedType + } + if len(data) == 0 { + return "", typ, nil + } + u := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[: len(data)/2 : len(data)/2] + return syscall.UTF16ToString(u), typ, nil +} + +// GetMUIStringValue retrieves the localized string value for +// the specified value name associated with an open key k. +// If the value name doesn't exist or the localized string value +// can't be resolved, GetMUIStringValue returns ErrNotExist. +// GetMUIStringValue panics if the system doesn't support +// regLoadMUIString; use LoadRegLoadMUIString to check if +// regLoadMUIString is supported before calling this function. +func (k Key) GetMUIStringValue(name string) (string, error) { + pname, err := syscall.UTF16PtrFromString(name) + if err != nil { + return "", err + } + + buf := make([]uint16, 1024) + var buflen uint32 + var pdir *uint16 + + err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir) + if err == syscall.ERROR_FILE_NOT_FOUND { // Try fallback path + + // Try to resolve the string value using the system directory as + // a DLL search path; this assumes the string value is of the form + // @[path]\dllname,-strID but with no path given, e.g. @tzres.dll,-320. + + // This approach works with tzres.dll but may have to be revised + // in the future to allow callers to provide custom search paths. + + var s string + s, err = ExpandString("%SystemRoot%\\system32\\") + if err != nil { + return "", err + } + pdir, err = syscall.UTF16PtrFromString(s) + if err != nil { + return "", err + } + + err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir) + } + + for err == syscall.ERROR_MORE_DATA { // Grow buffer if needed + if buflen <= uint32(len(buf)) { + break // Buffer not growing, assume race; break + } + buf = make([]uint16, buflen) + err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir) + } + + if err != nil { + return "", err + } + + return syscall.UTF16ToString(buf), nil +} + +// ExpandString expands environment-variable strings and replaces +// them with the values defined for the current user. +// Use ExpandString to expand EXPAND_SZ strings. +func ExpandString(value string) (string, error) { + if value == "" { + return "", nil + } + p, err := syscall.UTF16PtrFromString(value) + if err != nil { + return "", err + } + r := make([]uint16, 100) + for { + n, err := expandEnvironmentStrings(p, &r[0], uint32(len(r))) + if err != nil { + return "", err + } + if n <= uint32(len(r)) { + return syscall.UTF16ToString(r[:n]), nil + } + r = make([]uint16, n) + } +} + +// GetStringsValue retrieves the []string value for the specified +// value name associated with an open key k. It also returns the value's type. +// If value does not exist, GetStringsValue returns ErrNotExist. +// If value is not MULTI_SZ, it will return the correct value +// type and ErrUnexpectedType. +func (k Key) GetStringsValue(name string) (val []string, valtype uint32, err error) { + data, typ, err2 := k.getValue(name, make([]byte, 64)) + if err2 != nil { + return nil, typ, err2 + } + if typ != MULTI_SZ { + return nil, typ, ErrUnexpectedType + } + if len(data) == 0 { + return nil, typ, nil + } + p := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[: len(data)/2 : len(data)/2] + if len(p) == 0 { + return nil, typ, nil + } + if p[len(p)-1] == 0 { + p = p[:len(p)-1] // remove terminating null + } + val = make([]string, 0, 5) + from := 0 + for i, c := range p { + if c == 0 { + val = append(val, string(utf16.Decode(p[from:i]))) + from = i + 1 + } + } + return val, typ, nil +} + +// GetIntegerValue retrieves the integer value for the specified +// value name associated with an open key k. It also returns the value's type. +// If value does not exist, GetIntegerValue returns ErrNotExist. +// If value is not DWORD or QWORD, it will return the correct value +// type and ErrUnexpectedType. +func (k Key) GetIntegerValue(name string) (val uint64, valtype uint32, err error) { + data, typ, err2 := k.getValue(name, make([]byte, 8)) + if err2 != nil { + return 0, typ, err2 + } + switch typ { + case DWORD: + if len(data) != 4 { + return 0, typ, errors.New("DWORD value is not 4 bytes long") + } + var val32 uint32 + copy((*[4]byte)(unsafe.Pointer(&val32))[:], data) + return uint64(val32), DWORD, nil + case QWORD: + if len(data) != 8 { + return 0, typ, errors.New("QWORD value is not 8 bytes long") + } + copy((*[8]byte)(unsafe.Pointer(&val))[:], data) + return val, QWORD, nil + default: + return 0, typ, ErrUnexpectedType + } +} + +// GetBinaryValue retrieves the binary value for the specified +// value name associated with an open key k. It also returns the value's type. +// If value does not exist, GetBinaryValue returns ErrNotExist. +// If value is not BINARY, it will return the correct value +// type and ErrUnexpectedType. +func (k Key) GetBinaryValue(name string) (val []byte, valtype uint32, err error) { + data, typ, err2 := k.getValue(name, make([]byte, 64)) + if err2 != nil { + return nil, typ, err2 + } + if typ != BINARY { + return nil, typ, ErrUnexpectedType + } + return data, typ, nil +} + +func (k Key) setValue(name string, valtype uint32, data []byte) error { + p, err := syscall.UTF16PtrFromString(name) + if err != nil { + return err + } + if len(data) == 0 { + return regSetValueEx(syscall.Handle(k), p, 0, valtype, nil, 0) + } + return regSetValueEx(syscall.Handle(k), p, 0, valtype, &data[0], uint32(len(data))) +} + +// SetDWordValue sets the data and type of a name value +// under key k to value and DWORD. +func (k Key) SetDWordValue(name string, value uint32) error { + return k.setValue(name, DWORD, (*[4]byte)(unsafe.Pointer(&value))[:]) +} + +// SetQWordValue sets the data and type of a name value +// under key k to value and QWORD. +func (k Key) SetQWordValue(name string, value uint64) error { + return k.setValue(name, QWORD, (*[8]byte)(unsafe.Pointer(&value))[:]) +} + +func (k Key) setStringValue(name string, valtype uint32, value string) error { + v, err := syscall.UTF16FromString(value) + if err != nil { + return err + } + buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[: len(v)*2 : len(v)*2] + return k.setValue(name, valtype, buf) +} + +// SetStringValue sets the data and type of a name value +// under key k to value and SZ. The value must not contain a zero byte. +func (k Key) SetStringValue(name, value string) error { + return k.setStringValue(name, SZ, value) +} + +// SetExpandStringValue sets the data and type of a name value +// under key k to value and EXPAND_SZ. The value must not contain a zero byte. +func (k Key) SetExpandStringValue(name, value string) error { + return k.setStringValue(name, EXPAND_SZ, value) +} + +// SetStringsValue sets the data and type of a name value +// under key k to value and MULTI_SZ. The value strings +// must not contain a zero byte. +func (k Key) SetStringsValue(name string, value []string) error { + ss := "" + for _, s := range value { + for i := 0; i < len(s); i++ { + if s[i] == 0 { + return errors.New("string cannot have 0 inside") + } + } + ss += s + "\x00" + } + v := utf16.Encode([]rune(ss + "\x00")) + buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[: len(v)*2 : len(v)*2] + return k.setValue(name, MULTI_SZ, buf) +} + +// SetBinaryValue sets the data and type of a name value +// under key k to value and BINARY. +func (k Key) SetBinaryValue(name string, value []byte) error { + return k.setValue(name, BINARY, value) +} + +// DeleteValue removes a named value from the key k. +func (k Key) DeleteValue(name string) error { + namePointer, err := syscall.UTF16PtrFromString(name) + if err != nil { + return err + } + return regDeleteValue(syscall.Handle(k), namePointer) +} + +// ReadValueNames returns the value names of key k. +// The parameter n controls the number of returned names, +// analogous to the way os.File.Readdirnames works. +func (k Key) ReadValueNames(n int) ([]string, error) { + ki, err := k.Stat() + if err != nil { + return nil, err + } + names := make([]string, 0, ki.ValueCount) + buf := make([]uint16, ki.MaxValueNameLen+1) // extra room for terminating null character +loopItems: + for i := uint32(0); ; i++ { + if n > 0 { + if len(names) == n { + return names, nil + } + } + l := uint32(len(buf)) + for { + err := regEnumValue(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil) + if err == nil { + break + } + if err == syscall.ERROR_MORE_DATA { + // Double buffer size and try again. + l = uint32(2 * len(buf)) + buf = make([]uint16, l) + continue + } + if err == _ERROR_NO_MORE_ITEMS { + break loopItems + } + return names, err + } + names = append(names, syscall.UTF16ToString(buf[:l])) + } + if n > len(names) { + return names, io.EOF + } + return names, nil +} diff --git a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go new file mode 100644 index 000000000000..fc1835d8a233 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go @@ -0,0 +1,117 @@ +// Code generated by 'go generate'; DO NOT EDIT. + +package registry + +import ( + "syscall" + "unsafe" + + "golang.org/x/sys/windows" +) + +var _ unsafe.Pointer + +// Do the interface allocations only once for common +// Errno values. +const ( + errnoERROR_IO_PENDING = 997 +) + +var ( + errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) + errERROR_EINVAL error = syscall.EINVAL +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return errERROR_EINVAL + case errnoERROR_IO_PENDING: + return errERROR_IO_PENDING + } + // TODO: add more here, after collecting data on the common + // error values see on Windows. (perhaps when running + // all.bat?) + return e +} + +var ( + modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") + modkernel32 = windows.NewLazySystemDLL("kernel32.dll") + + procRegConnectRegistryW = modadvapi32.NewProc("RegConnectRegistryW") + procRegCreateKeyExW = modadvapi32.NewProc("RegCreateKeyExW") + procRegDeleteKeyW = modadvapi32.NewProc("RegDeleteKeyW") + procRegDeleteValueW = modadvapi32.NewProc("RegDeleteValueW") + procRegEnumValueW = modadvapi32.NewProc("RegEnumValueW") + procRegLoadMUIStringW = modadvapi32.NewProc("RegLoadMUIStringW") + procRegSetValueExW = modadvapi32.NewProc("RegSetValueExW") + procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW") +) + +func regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) { + r0, _, _ := syscall.Syscall(procRegConnectRegistryW.Addr(), 3, uintptr(unsafe.Pointer(machinename)), uintptr(key), uintptr(unsafe.Pointer(result))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) { + r0, _, _ := syscall.Syscall9(procRegCreateKeyExW.Addr(), 9, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(reserved), uintptr(unsafe.Pointer(class)), uintptr(options), uintptr(desired), uintptr(unsafe.Pointer(sa)), uintptr(unsafe.Pointer(result)), uintptr(unsafe.Pointer(disposition))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) { + r0, _, _ := syscall.Syscall(procRegDeleteKeyW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(subkey)), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) { + r0, _, _ := syscall.Syscall(procRegDeleteValueW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(name)), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) { + r0, _, _ := syscall.Syscall9(procRegEnumValueW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) { + r0, _, _ := syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir)), 0, 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) { + r0, _, _ := syscall.Syscall6(procRegSetValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize)) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index 9d138de5fed6..ad67df2fdb6f 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -1074,6 +1074,7 @@ const ( IP_ADD_MEMBERSHIP = 0xc IP_DROP_MEMBERSHIP = 0xd IP_PKTINFO = 0x13 + IP_MTU_DISCOVER = 0x47 IPV6_V6ONLY = 0x1b IPV6_UNICAST_HOPS = 0x4 @@ -1083,6 +1084,7 @@ const ( IPV6_JOIN_GROUP = 0xc IPV6_LEAVE_GROUP = 0xd IPV6_PKTINFO = 0x13 + IPV6_MTU_DISCOVER = 0x47 MSG_OOB = 0x1 MSG_PEEK = 0x2 @@ -1132,6 +1134,15 @@ const ( WSASYS_STATUS_LEN = 128 ) +// enum PMTUD_STATE from ws2ipdef.h +const ( + IP_PMTUDISC_NOT_SET = 0 + IP_PMTUDISC_DO = 1 + IP_PMTUDISC_DONT = 2 + IP_PMTUDISC_PROBE = 3 + IP_PMTUDISC_MAX = 4 +) + type WSABuf struct { Len uint32 Buf *byte @@ -1146,6 +1157,22 @@ type WSAMsg struct { Flags uint32 } +type WSACMSGHDR struct { + Len uintptr + Level int32 + Type int32 +} + +type IN_PKTINFO struct { + Addr [4]byte + Ifindex uint32 +} + +type IN6_PKTINFO struct { + Addr [16]byte + Ifindex uint32 +} + // Flags for WSASocket const ( WSA_FLAG_OVERLAPPED = 0x01 diff --git a/vendor/golang.org/x/term/terminal.go b/vendor/golang.org/x/term/terminal.go index f636667fb042..14f89470ab50 100644 --- a/vendor/golang.org/x/term/terminal.go +++ b/vendor/golang.org/x/term/terminal.go @@ -44,6 +44,8 @@ type Terminal struct { // bytes, as an index into |line|). If it returns ok=false, the key // press is processed normally. Otherwise it returns a replacement line // and the new cursor position. + // + // This will be disabled during ReadPassword. AutoCompleteCallback func(line string, pos int, key rune) (newLine string, newPos int, ok bool) // Escape contains a pointer to the escape codes for this terminal. @@ -692,6 +694,8 @@ func (t *Terminal) Write(buf []byte) (n int, err error) { // ReadPassword temporarily changes the prompt and reads a password, without // echo, from the terminal. +// +// The AutoCompleteCallback is disabled during this call. func (t *Terminal) ReadPassword(prompt string) (line string, err error) { t.lock.Lock() defer t.lock.Unlock() @@ -699,6 +703,11 @@ func (t *Terminal) ReadPassword(prompt string) (line string, err error) { oldPrompt := t.prompt t.prompt = []rune(prompt) t.echo = false + oldAutoCompleteCallback := t.AutoCompleteCallback + t.AutoCompleteCallback = nil + defer func() { + t.AutoCompleteCallback = oldAutoCompleteCallback + }() line, err = t.readLine() diff --git a/vendor/golang.org/x/text/cases/cases.go b/vendor/golang.org/x/text/cases/cases.go new file mode 100644 index 000000000000..752cdf031673 --- /dev/null +++ b/vendor/golang.org/x/text/cases/cases.go @@ -0,0 +1,162 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go gen_trieval.go + +// Package cases provides general and language-specific case mappers. +package cases // import "golang.org/x/text/cases" + +import ( + "golang.org/x/text/language" + "golang.org/x/text/transform" +) + +// References: +// - Unicode Reference Manual Chapter 3.13, 4.2, and 5.18. +// - https://www.unicode.org/reports/tr29/ +// - https://www.unicode.org/Public/6.3.0/ucd/CaseFolding.txt +// - https://www.unicode.org/Public/6.3.0/ucd/SpecialCasing.txt +// - https://www.unicode.org/Public/6.3.0/ucd/DerivedCoreProperties.txt +// - https://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakProperty.txt +// - https://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakTest.txt +// - http://userguide.icu-project.org/transforms/casemappings + +// TODO: +// - Case folding +// - Wide and Narrow? +// - Segmenter option for title casing. +// - ASCII fast paths +// - Encode Soft-Dotted property within trie somehow. + +// A Caser transforms given input to a certain case. It implements +// transform.Transformer. +// +// A Caser may be stateful and should therefore not be shared between +// goroutines. +type Caser struct { + t transform.SpanningTransformer +} + +// Bytes returns a new byte slice with the result of converting b to the case +// form implemented by c. +func (c Caser) Bytes(b []byte) []byte { + b, _, _ = transform.Bytes(c.t, b) + return b +} + +// String returns a string with the result of transforming s to the case form +// implemented by c. +func (c Caser) String(s string) string { + s, _, _ = transform.String(c.t, s) + return s +} + +// Reset resets the Caser to be reused for new input after a previous call to +// Transform. +func (c Caser) Reset() { c.t.Reset() } + +// Transform implements the transform.Transformer interface and transforms the +// given input to the case form implemented by c. +func (c Caser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + return c.t.Transform(dst, src, atEOF) +} + +// Span implements the transform.SpanningTransformer interface. +func (c Caser) Span(src []byte, atEOF bool) (n int, err error) { + return c.t.Span(src, atEOF) +} + +// Upper returns a Caser for language-specific uppercasing. +func Upper(t language.Tag, opts ...Option) Caser { + return Caser{makeUpper(t, getOpts(opts...))} +} + +// Lower returns a Caser for language-specific lowercasing. +func Lower(t language.Tag, opts ...Option) Caser { + return Caser{makeLower(t, getOpts(opts...))} +} + +// Title returns a Caser for language-specific title casing. It uses an +// approximation of the default Unicode Word Break algorithm. +func Title(t language.Tag, opts ...Option) Caser { + return Caser{makeTitle(t, getOpts(opts...))} +} + +// Fold returns a Caser that implements Unicode case folding. The returned Caser +// is stateless and safe to use concurrently by multiple goroutines. +// +// Case folding does not normalize the input and may not preserve a normal form. +// Use the collate or search package for more convenient and linguistically +// sound comparisons. Use golang.org/x/text/secure/precis for string comparisons +// where security aspects are a concern. +func Fold(opts ...Option) Caser { + return Caser{makeFold(getOpts(opts...))} +} + +// An Option is used to modify the behavior of a Caser. +type Option func(o options) options + +// TODO: consider these options to take a boolean as well, like FinalSigma. +// The advantage of using this approach is that other providers of a lower-case +// algorithm could set different defaults by prefixing a user-provided slice +// of options with their own. This is handy, for instance, for the precis +// package which would override the default to not handle the Greek final sigma. + +var ( + // NoLower disables the lowercasing of non-leading letters for a title + // caser. + NoLower Option = noLower + + // Compact omits mappings in case folding for characters that would grow the + // input. (Unimplemented.) + Compact Option = compact +) + +// TODO: option to preserve a normal form, if applicable? + +type options struct { + noLower bool + simple bool + + // TODO: segmenter, max ignorable, alternative versions, etc. + + ignoreFinalSigma bool +} + +func getOpts(o ...Option) (res options) { + for _, f := range o { + res = f(res) + } + return +} + +func noLower(o options) options { + o.noLower = true + return o +} + +func compact(o options) options { + o.simple = true + return o +} + +// HandleFinalSigma specifies whether the special handling of Greek final sigma +// should be enabled. Unicode prescribes handling the Greek final sigma for all +// locales, but standards like IDNA and PRECIS override this default. +func HandleFinalSigma(enable bool) Option { + if enable { + return handleFinalSigma + } + return ignoreFinalSigma +} + +func ignoreFinalSigma(o options) options { + o.ignoreFinalSigma = true + return o +} + +func handleFinalSigma(o options) options { + o.ignoreFinalSigma = false + return o +} diff --git a/vendor/golang.org/x/text/cases/context.go b/vendor/golang.org/x/text/cases/context.go new file mode 100644 index 000000000000..e9aa9e1936fa --- /dev/null +++ b/vendor/golang.org/x/text/cases/context.go @@ -0,0 +1,376 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cases + +import "golang.org/x/text/transform" + +// A context is used for iterating over source bytes, fetching case info and +// writing to a destination buffer. +// +// Casing operations may need more than one rune of context to decide how a rune +// should be cased. Casing implementations should call checkpoint on context +// whenever it is known to be safe to return the runes processed so far. +// +// It is recommended for implementations to not allow for more than 30 case +// ignorables as lookahead (analogous to the limit in norm) and to use state if +// unbounded lookahead is needed for cased runes. +type context struct { + dst, src []byte + atEOF bool + + pDst int // pDst points past the last written rune in dst. + pSrc int // pSrc points to the start of the currently scanned rune. + + // checkpoints safe to return in Transform, where nDst <= pDst and nSrc <= pSrc. + nDst, nSrc int + err error + + sz int // size of current rune + info info // case information of currently scanned rune + + // State preserved across calls to Transform. + isMidWord bool // false if next cased letter needs to be title-cased. +} + +func (c *context) Reset() { + c.isMidWord = false +} + +// ret returns the return values for the Transform method. It checks whether +// there were insufficient bytes in src to complete and introduces an error +// accordingly, if necessary. +func (c *context) ret() (nDst, nSrc int, err error) { + if c.err != nil || c.nSrc == len(c.src) { + return c.nDst, c.nSrc, c.err + } + // This point is only reached by mappers if there was no short destination + // buffer. This means that the source buffer was exhausted and that c.sz was + // set to 0 by next. + if c.atEOF && c.pSrc == len(c.src) { + return c.pDst, c.pSrc, nil + } + return c.nDst, c.nSrc, transform.ErrShortSrc +} + +// retSpan returns the return values for the Span method. It checks whether +// there were insufficient bytes in src to complete and introduces an error +// accordingly, if necessary. +func (c *context) retSpan() (n int, err error) { + _, nSrc, err := c.ret() + return nSrc, err +} + +// checkpoint sets the return value buffer points for Transform to the current +// positions. +func (c *context) checkpoint() { + if c.err == nil { + c.nDst, c.nSrc = c.pDst, c.pSrc+c.sz + } +} + +// unreadRune causes the last rune read by next to be reread on the next +// invocation of next. Only one unreadRune may be called after a call to next. +func (c *context) unreadRune() { + c.sz = 0 +} + +func (c *context) next() bool { + c.pSrc += c.sz + if c.pSrc == len(c.src) || c.err != nil { + c.info, c.sz = 0, 0 + return false + } + v, sz := trie.lookup(c.src[c.pSrc:]) + c.info, c.sz = info(v), sz + if c.sz == 0 { + if c.atEOF { + // A zero size means we have an incomplete rune. If we are atEOF, + // this means it is an illegal rune, which we will consume one + // byte at a time. + c.sz = 1 + } else { + c.err = transform.ErrShortSrc + return false + } + } + return true +} + +// writeBytes adds bytes to dst. +func (c *context) writeBytes(b []byte) bool { + if len(c.dst)-c.pDst < len(b) { + c.err = transform.ErrShortDst + return false + } + // This loop is faster than using copy. + for _, ch := range b { + c.dst[c.pDst] = ch + c.pDst++ + } + return true +} + +// writeString writes the given string to dst. +func (c *context) writeString(s string) bool { + if len(c.dst)-c.pDst < len(s) { + c.err = transform.ErrShortDst + return false + } + // This loop is faster than using copy. + for i := 0; i < len(s); i++ { + c.dst[c.pDst] = s[i] + c.pDst++ + } + return true +} + +// copy writes the current rune to dst. +func (c *context) copy() bool { + return c.writeBytes(c.src[c.pSrc : c.pSrc+c.sz]) +} + +// copyXOR copies the current rune to dst and modifies it by applying the XOR +// pattern of the case info. It is the responsibility of the caller to ensure +// that this is a rune with a XOR pattern defined. +func (c *context) copyXOR() bool { + if !c.copy() { + return false + } + if c.info&xorIndexBit == 0 { + // Fast path for 6-bit XOR pattern, which covers most cases. + c.dst[c.pDst-1] ^= byte(c.info >> xorShift) + } else { + // Interpret XOR bits as an index. + // TODO: test performance for unrolling this loop. Verify that we have + // at least two bytes and at most three. + idx := c.info >> xorShift + for p := c.pDst - 1; ; p-- { + c.dst[p] ^= xorData[idx] + idx-- + if xorData[idx] == 0 { + break + } + } + } + return true +} + +// hasPrefix returns true if src[pSrc:] starts with the given string. +func (c *context) hasPrefix(s string) bool { + b := c.src[c.pSrc:] + if len(b) < len(s) { + return false + } + for i, c := range b[:len(s)] { + if c != s[i] { + return false + } + } + return true +} + +// caseType returns an info with only the case bits, normalized to either +// cLower, cUpper, cTitle or cUncased. +func (c *context) caseType() info { + cm := c.info & 0x7 + if cm < 4 { + return cm + } + if cm >= cXORCase { + // xor the last bit of the rune with the case type bits. + b := c.src[c.pSrc+c.sz-1] + return info(b&1) ^ cm&0x3 + } + if cm == cIgnorableCased { + return cLower + } + return cUncased +} + +// lower writes the lowercase version of the current rune to dst. +func lower(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cLower { + return c.copy() + } + if c.info&exceptionBit == 0 { + return c.copyXOR() + } + e := exceptions[c.info>>exceptionShift:] + offset := 2 + e[0]&lengthMask // size of header + fold string + if nLower := (e[1] >> lengthBits) & lengthMask; nLower != noChange { + return c.writeString(e[offset : offset+nLower]) + } + return c.copy() +} + +func isLower(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cLower { + return true + } + if c.info&exceptionBit == 0 { + c.err = transform.ErrEndOfSpan + return false + } + e := exceptions[c.info>>exceptionShift:] + if nLower := (e[1] >> lengthBits) & lengthMask; nLower != noChange { + c.err = transform.ErrEndOfSpan + return false + } + return true +} + +// upper writes the uppercase version of the current rune to dst. +func upper(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cUpper { + return c.copy() + } + if c.info&exceptionBit == 0 { + return c.copyXOR() + } + e := exceptions[c.info>>exceptionShift:] + offset := 2 + e[0]&lengthMask // size of header + fold string + // Get length of first special case mapping. + n := (e[1] >> lengthBits) & lengthMask + if ct == cTitle { + // The first special case mapping is for lower. Set n to the second. + if n == noChange { + n = 0 + } + n, e = e[1]&lengthMask, e[n:] + } + if n != noChange { + return c.writeString(e[offset : offset+n]) + } + return c.copy() +} + +// isUpper writes the isUppercase version of the current rune to dst. +func isUpper(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cUpper { + return true + } + if c.info&exceptionBit == 0 { + c.err = transform.ErrEndOfSpan + return false + } + e := exceptions[c.info>>exceptionShift:] + // Get length of first special case mapping. + n := (e[1] >> lengthBits) & lengthMask + if ct == cTitle { + n = e[1] & lengthMask + } + if n != noChange { + c.err = transform.ErrEndOfSpan + return false + } + return true +} + +// title writes the title case version of the current rune to dst. +func title(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cTitle { + return c.copy() + } + if c.info&exceptionBit == 0 { + if ct == cLower { + return c.copyXOR() + } + return c.copy() + } + // Get the exception data. + e := exceptions[c.info>>exceptionShift:] + offset := 2 + e[0]&lengthMask // size of header + fold string + + nFirst := (e[1] >> lengthBits) & lengthMask + if nTitle := e[1] & lengthMask; nTitle != noChange { + if nFirst != noChange { + e = e[nFirst:] + } + return c.writeString(e[offset : offset+nTitle]) + } + if ct == cLower && nFirst != noChange { + // Use the uppercase version instead. + return c.writeString(e[offset : offset+nFirst]) + } + // Already in correct case. + return c.copy() +} + +// isTitle reports whether the current rune is in title case. +func isTitle(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cTitle { + return true + } + if c.info&exceptionBit == 0 { + if ct == cLower { + c.err = transform.ErrEndOfSpan + return false + } + return true + } + // Get the exception data. + e := exceptions[c.info>>exceptionShift:] + if nTitle := e[1] & lengthMask; nTitle != noChange { + c.err = transform.ErrEndOfSpan + return false + } + nFirst := (e[1] >> lengthBits) & lengthMask + if ct == cLower && nFirst != noChange { + c.err = transform.ErrEndOfSpan + return false + } + return true +} + +// foldFull writes the foldFull version of the current rune to dst. +func foldFull(c *context) bool { + if c.info&hasMappingMask == 0 { + return c.copy() + } + ct := c.caseType() + if c.info&exceptionBit == 0 { + if ct != cLower || c.info&inverseFoldBit != 0 { + return c.copyXOR() + } + return c.copy() + } + e := exceptions[c.info>>exceptionShift:] + n := e[0] & lengthMask + if n == 0 { + if ct == cLower { + return c.copy() + } + n = (e[1] >> lengthBits) & lengthMask + } + return c.writeString(e[2 : 2+n]) +} + +// isFoldFull reports whether the current run is mapped to foldFull +func isFoldFull(c *context) bool { + if c.info&hasMappingMask == 0 { + return true + } + ct := c.caseType() + if c.info&exceptionBit == 0 { + if ct != cLower || c.info&inverseFoldBit != 0 { + c.err = transform.ErrEndOfSpan + return false + } + return true + } + e := exceptions[c.info>>exceptionShift:] + n := e[0] & lengthMask + if n == 0 && ct == cLower { + return true + } + c.err = transform.ErrEndOfSpan + return false +} diff --git a/vendor/golang.org/x/text/cases/fold.go b/vendor/golang.org/x/text/cases/fold.go new file mode 100644 index 000000000000..85cc434fac0f --- /dev/null +++ b/vendor/golang.org/x/text/cases/fold.go @@ -0,0 +1,34 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cases + +import "golang.org/x/text/transform" + +type caseFolder struct{ transform.NopResetter } + +// caseFolder implements the Transformer interface for doing case folding. +func (t *caseFolder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + c := context{dst: dst, src: src, atEOF: atEOF} + for c.next() { + foldFull(&c) + c.checkpoint() + } + return c.ret() +} + +func (t *caseFolder) Span(src []byte, atEOF bool) (n int, err error) { + c := context{src: src, atEOF: atEOF} + for c.next() && isFoldFull(&c) { + c.checkpoint() + } + return c.retSpan() +} + +func makeFold(o options) transform.SpanningTransformer { + // TODO: Special case folding, through option Language, Special/Turkic, or + // both. + // TODO: Implement Compact options. + return &caseFolder{} +} diff --git a/vendor/golang.org/x/text/cases/icu.go b/vendor/golang.org/x/text/cases/icu.go new file mode 100644 index 000000000000..db7c237ccffc --- /dev/null +++ b/vendor/golang.org/x/text/cases/icu.go @@ -0,0 +1,61 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build icu + +package cases + +// Ideally these functions would be defined in a test file, but go test doesn't +// allow CGO in tests. The build tag should ensure either way that these +// functions will not end up in the package. + +// TODO: Ensure that the correct ICU version is set. + +/* +#cgo LDFLAGS: -licui18n.57 -licuuc.57 +#include +#include +#include +#include +#include +*/ +import "C" + +import "unsafe" + +func doICU(tag, caser, input string) string { + err := C.UErrorCode(0) + loc := C.CString(tag) + cm := C.ucasemap_open(loc, C.uint32_t(0), &err) + + buf := make([]byte, len(input)*4) + dst := (*C.char)(unsafe.Pointer(&buf[0])) + src := C.CString(input) + + cn := C.int32_t(0) + + switch caser { + case "fold": + cn = C.ucasemap_utf8FoldCase(cm, + dst, C.int32_t(len(buf)), + src, C.int32_t(len(input)), + &err) + case "lower": + cn = C.ucasemap_utf8ToLower(cm, + dst, C.int32_t(len(buf)), + src, C.int32_t(len(input)), + &err) + case "upper": + cn = C.ucasemap_utf8ToUpper(cm, + dst, C.int32_t(len(buf)), + src, C.int32_t(len(input)), + &err) + case "title": + cn = C.ucasemap_utf8ToTitle(cm, + dst, C.int32_t(len(buf)), + src, C.int32_t(len(input)), + &err) + } + return string(buf[:cn]) +} diff --git a/vendor/golang.org/x/text/cases/info.go b/vendor/golang.org/x/text/cases/info.go new file mode 100644 index 000000000000..87a7c3e95578 --- /dev/null +++ b/vendor/golang.org/x/text/cases/info.go @@ -0,0 +1,82 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cases + +func (c info) cccVal() info { + if c&exceptionBit != 0 { + return info(exceptions[c>>exceptionShift]) & cccMask + } + return c & cccMask +} + +func (c info) cccType() info { + ccc := c.cccVal() + if ccc <= cccZero { + return cccZero + } + return ccc +} + +// TODO: Implement full Unicode breaking algorithm: +// 1) Implement breaking in separate package. +// 2) Use the breaker here. +// 3) Compare table size and performance of using the more generic breaker. +// +// Note that we can extend the current algorithm to be much more accurate. This +// only makes sense, though, if the performance and/or space penalty of using +// the generic breaker is big. Extra data will only be needed for non-cased +// runes, which means there are sufficient bits left in the caseType. +// ICU prohibits breaking in such cases as well. + +// For the purpose of title casing we use an approximation of the Unicode Word +// Breaking algorithm defined in Annex #29: +// https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table. +// +// For our approximation, we group the Word Break types into the following +// categories, with associated rules: +// +// 1) Letter: +// ALetter, Hebrew_Letter, Numeric, ExtendNumLet, Extend, Format_FE, ZWJ. +// Rule: Never break between consecutive runes of this category. +// +// 2) Mid: +// MidLetter, MidNumLet, Single_Quote. +// (Cf. case-ignorable: MidLetter, MidNumLet, Single_Quote or cat is Mn, +// Me, Cf, Lm or Sk). +// Rule: Don't break between Letter and Mid, but break between two Mids. +// +// 3) Break: +// Any other category: NewLine, MidNum, CR, LF, Double_Quote, Katakana, and +// Other. +// These categories should always result in a break between two cased letters. +// Rule: Always break. +// +// Note 1: the Katakana and MidNum categories can, in esoteric cases, result in +// preventing a break between two cased letters. For now we will ignore this +// (e.g. [ALetter] [ExtendNumLet] [Katakana] [ExtendNumLet] [ALetter] and +// [ALetter] [Numeric] [MidNum] [Numeric] [ALetter].) +// +// Note 2: the rule for Mid is very approximate, but works in most cases. To +// improve, we could store the categories in the trie value and use a FA to +// manage breaks. See TODO comment above. +// +// Note 3: according to the spec, it is possible for the Extend category to +// introduce breaks between other categories grouped in Letter. However, this +// is undesirable for our purposes. ICU prevents breaks in such cases as well. + +// isBreak returns whether this rune should introduce a break. +func (c info) isBreak() bool { + return c.cccVal() == cccBreak +} + +// isLetter returns whether the rune is of break type ALetter, Hebrew_Letter, +// Numeric, ExtendNumLet, or Extend. +func (c info) isLetter() bool { + ccc := c.cccVal() + if ccc == cccZero { + return !c.isCaseIgnorable() + } + return ccc != cccBreak +} diff --git a/vendor/golang.org/x/text/cases/map.go b/vendor/golang.org/x/text/cases/map.go new file mode 100644 index 000000000000..0f7c6a14bb73 --- /dev/null +++ b/vendor/golang.org/x/text/cases/map.go @@ -0,0 +1,816 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cases + +// This file contains the definitions of case mappings for all supported +// languages. The rules for the language-specific tailorings were taken and +// modified from the CLDR transform definitions in common/transforms. + +import ( + "strings" + "unicode" + "unicode/utf8" + + "golang.org/x/text/internal" + "golang.org/x/text/language" + "golang.org/x/text/transform" + "golang.org/x/text/unicode/norm" +) + +// A mapFunc takes a context set to the current rune and writes the mapped +// version to the same context. It may advance the context to the next rune. It +// returns whether a checkpoint is possible: whether the pDst bytes written to +// dst so far won't need changing as we see more source bytes. +type mapFunc func(*context) bool + +// A spanFunc takes a context set to the current rune and returns whether this +// rune would be altered when written to the output. It may advance the context +// to the next rune. It returns whether a checkpoint is possible. +type spanFunc func(*context) bool + +// maxIgnorable defines the maximum number of ignorables to consider for +// lookahead operations. +const maxIgnorable = 30 + +// supported lists the language tags for which we have tailorings. +const supported = "und af az el lt nl tr" + +func init() { + tags := []language.Tag{} + for _, s := range strings.Split(supported, " ") { + tags = append(tags, language.MustParse(s)) + } + matcher = internal.NewInheritanceMatcher(tags) + Supported = language.NewCoverage(tags) +} + +var ( + matcher *internal.InheritanceMatcher + + Supported language.Coverage + + // We keep the following lists separate, instead of having a single per- + // language struct, to give the compiler a chance to remove unused code. + + // Some uppercase mappers are stateless, so we can precompute the + // Transformers and save a bit on runtime allocations. + upperFunc = []struct { + upper mapFunc + span spanFunc + }{ + {nil, nil}, // und + {nil, nil}, // af + {aztrUpper(upper), isUpper}, // az + {elUpper, noSpan}, // el + {ltUpper(upper), noSpan}, // lt + {nil, nil}, // nl + {aztrUpper(upper), isUpper}, // tr + } + + undUpper transform.SpanningTransformer = &undUpperCaser{} + undLower transform.SpanningTransformer = &undLowerCaser{} + undLowerIgnoreSigma transform.SpanningTransformer = &undLowerIgnoreSigmaCaser{} + + lowerFunc = []mapFunc{ + nil, // und + nil, // af + aztrLower, // az + nil, // el + ltLower, // lt + nil, // nl + aztrLower, // tr + } + + titleInfos = []struct { + title mapFunc + lower mapFunc + titleSpan spanFunc + rewrite func(*context) + }{ + {title, lower, isTitle, nil}, // und + {title, lower, isTitle, afnlRewrite}, // af + {aztrUpper(title), aztrLower, isTitle, nil}, // az + {title, lower, isTitle, nil}, // el + {ltUpper(title), ltLower, noSpan, nil}, // lt + {nlTitle, lower, nlTitleSpan, afnlRewrite}, // nl + {aztrUpper(title), aztrLower, isTitle, nil}, // tr + } +) + +func makeUpper(t language.Tag, o options) transform.SpanningTransformer { + _, i, _ := matcher.Match(t) + f := upperFunc[i].upper + if f == nil { + return undUpper + } + return &simpleCaser{f: f, span: upperFunc[i].span} +} + +func makeLower(t language.Tag, o options) transform.SpanningTransformer { + _, i, _ := matcher.Match(t) + f := lowerFunc[i] + if f == nil { + if o.ignoreFinalSigma { + return undLowerIgnoreSigma + } + return undLower + } + if o.ignoreFinalSigma { + return &simpleCaser{f: f, span: isLower} + } + return &lowerCaser{ + first: f, + midWord: finalSigma(f), + } +} + +func makeTitle(t language.Tag, o options) transform.SpanningTransformer { + _, i, _ := matcher.Match(t) + x := &titleInfos[i] + lower := x.lower + if o.noLower { + lower = (*context).copy + } else if !o.ignoreFinalSigma { + lower = finalSigma(lower) + } + return &titleCaser{ + title: x.title, + lower: lower, + titleSpan: x.titleSpan, + rewrite: x.rewrite, + } +} + +func noSpan(c *context) bool { + c.err = transform.ErrEndOfSpan + return false +} + +// TODO: consider a similar special case for the fast majority lower case. This +// is a bit more involved so will require some more precise benchmarking to +// justify it. + +type undUpperCaser struct{ transform.NopResetter } + +// undUpperCaser implements the Transformer interface for doing an upper case +// mapping for the root locale (und). It eliminates the need for an allocation +// as it prevents escaping by not using function pointers. +func (t undUpperCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + c := context{dst: dst, src: src, atEOF: atEOF} + for c.next() { + upper(&c) + c.checkpoint() + } + return c.ret() +} + +func (t undUpperCaser) Span(src []byte, atEOF bool) (n int, err error) { + c := context{src: src, atEOF: atEOF} + for c.next() && isUpper(&c) { + c.checkpoint() + } + return c.retSpan() +} + +// undLowerIgnoreSigmaCaser implements the Transformer interface for doing +// a lower case mapping for the root locale (und) ignoring final sigma +// handling. This casing algorithm is used in some performance-critical packages +// like secure/precis and x/net/http/idna, which warrants its special-casing. +type undLowerIgnoreSigmaCaser struct{ transform.NopResetter } + +func (t undLowerIgnoreSigmaCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + c := context{dst: dst, src: src, atEOF: atEOF} + for c.next() && lower(&c) { + c.checkpoint() + } + return c.ret() + +} + +// Span implements a generic lower-casing. This is possible as isLower works +// for all lowercasing variants. All lowercase variants only vary in how they +// transform a non-lowercase letter. They will never change an already lowercase +// letter. In addition, there is no state. +func (t undLowerIgnoreSigmaCaser) Span(src []byte, atEOF bool) (n int, err error) { + c := context{src: src, atEOF: atEOF} + for c.next() && isLower(&c) { + c.checkpoint() + } + return c.retSpan() +} + +type simpleCaser struct { + context + f mapFunc + span spanFunc +} + +// simpleCaser implements the Transformer interface for doing a case operation +// on a rune-by-rune basis. +func (t *simpleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + c := context{dst: dst, src: src, atEOF: atEOF} + for c.next() && t.f(&c) { + c.checkpoint() + } + return c.ret() +} + +func (t *simpleCaser) Span(src []byte, atEOF bool) (n int, err error) { + c := context{src: src, atEOF: atEOF} + for c.next() && t.span(&c) { + c.checkpoint() + } + return c.retSpan() +} + +// undLowerCaser implements the Transformer interface for doing a lower case +// mapping for the root locale (und) ignoring final sigma handling. This casing +// algorithm is used in some performance-critical packages like secure/precis +// and x/net/http/idna, which warrants its special-casing. +type undLowerCaser struct{ transform.NopResetter } + +func (t undLowerCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + c := context{dst: dst, src: src, atEOF: atEOF} + + for isInterWord := true; c.next(); { + if isInterWord { + if c.info.isCased() { + if !lower(&c) { + break + } + isInterWord = false + } else if !c.copy() { + break + } + } else { + if c.info.isNotCasedAndNotCaseIgnorable() { + if !c.copy() { + break + } + isInterWord = true + } else if !c.hasPrefix("Σ") { + if !lower(&c) { + break + } + } else if !finalSigmaBody(&c) { + break + } + } + c.checkpoint() + } + return c.ret() +} + +func (t undLowerCaser) Span(src []byte, atEOF bool) (n int, err error) { + c := context{src: src, atEOF: atEOF} + for c.next() && isLower(&c) { + c.checkpoint() + } + return c.retSpan() +} + +// lowerCaser implements the Transformer interface. The default Unicode lower +// casing requires different treatment for the first and subsequent characters +// of a word, most notably to handle the Greek final Sigma. +type lowerCaser struct { + undLowerIgnoreSigmaCaser + + context + + first, midWord mapFunc +} + +func (t *lowerCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + t.context = context{dst: dst, src: src, atEOF: atEOF} + c := &t.context + + for isInterWord := true; c.next(); { + if isInterWord { + if c.info.isCased() { + if !t.first(c) { + break + } + isInterWord = false + } else if !c.copy() { + break + } + } else { + if c.info.isNotCasedAndNotCaseIgnorable() { + if !c.copy() { + break + } + isInterWord = true + } else if !t.midWord(c) { + break + } + } + c.checkpoint() + } + return c.ret() +} + +// titleCaser implements the Transformer interface. Title casing algorithms +// distinguish between the first letter of a word and subsequent letters of the +// same word. It uses state to avoid requiring a potentially infinite lookahead. +type titleCaser struct { + context + + // rune mappings used by the actual casing algorithms. + title mapFunc + lower mapFunc + titleSpan spanFunc + + rewrite func(*context) +} + +// Transform implements the standard Unicode title case algorithm as defined in +// Chapter 3 of The Unicode Standard: +// toTitlecase(X): Find the word boundaries in X according to Unicode Standard +// Annex #29, "Unicode Text Segmentation." For each word boundary, find the +// first cased character F following the word boundary. If F exists, map F to +// Titlecase_Mapping(F); then map all characters C between F and the following +// word boundary to Lowercase_Mapping(C). +func (t *titleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + t.context = context{dst: dst, src: src, atEOF: atEOF, isMidWord: t.isMidWord} + c := &t.context + + if !c.next() { + return c.ret() + } + + for { + p := c.info + if t.rewrite != nil { + t.rewrite(c) + } + + wasMid := p.isMid() + // Break out of this loop on failure to ensure we do not modify the + // state incorrectly. + if p.isCased() { + if !c.isMidWord { + if !t.title(c) { + break + } + c.isMidWord = true + } else if !t.lower(c) { + break + } + } else if !c.copy() { + break + } else if p.isBreak() { + c.isMidWord = false + } + + // As we save the state of the transformer, it is safe to call + // checkpoint after any successful write. + if !(c.isMidWord && wasMid) { + c.checkpoint() + } + + if !c.next() { + break + } + if wasMid && c.info.isMid() { + c.isMidWord = false + } + } + return c.ret() +} + +func (t *titleCaser) Span(src []byte, atEOF bool) (n int, err error) { + t.context = context{src: src, atEOF: atEOF, isMidWord: t.isMidWord} + c := &t.context + + if !c.next() { + return c.retSpan() + } + + for { + p := c.info + if t.rewrite != nil { + t.rewrite(c) + } + + wasMid := p.isMid() + // Break out of this loop on failure to ensure we do not modify the + // state incorrectly. + if p.isCased() { + if !c.isMidWord { + if !t.titleSpan(c) { + break + } + c.isMidWord = true + } else if !isLower(c) { + break + } + } else if p.isBreak() { + c.isMidWord = false + } + // As we save the state of the transformer, it is safe to call + // checkpoint after any successful write. + if !(c.isMidWord && wasMid) { + c.checkpoint() + } + + if !c.next() { + break + } + if wasMid && c.info.isMid() { + c.isMidWord = false + } + } + return c.retSpan() +} + +// finalSigma adds Greek final Sigma handing to another casing function. It +// determines whether a lowercased sigma should be σ or ς, by looking ahead for +// case-ignorables and a cased letters. +func finalSigma(f mapFunc) mapFunc { + return func(c *context) bool { + if !c.hasPrefix("Σ") { + return f(c) + } + return finalSigmaBody(c) + } +} + +func finalSigmaBody(c *context) bool { + // Current rune must be ∑. + + // ::NFD(); + // # 03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA + // Σ } [:case-ignorable:]* [:cased:] → σ; + // [:cased:] [:case-ignorable:]* { Σ → ς; + // ::Any-Lower; + // ::NFC(); + + p := c.pDst + c.writeString("ς") + + // TODO: we should do this here, but right now this will never have an + // effect as this is called when the prefix is Sigma, whereas Dutch and + // Afrikaans only test for an apostrophe. + // + // if t.rewrite != nil { + // t.rewrite(c) + // } + + // We need to do one more iteration after maxIgnorable, as a cased + // letter is not an ignorable and may modify the result. + wasMid := false + for i := 0; i < maxIgnorable+1; i++ { + if !c.next() { + return false + } + if !c.info.isCaseIgnorable() { + // All Midword runes are also case ignorable, so we are + // guaranteed to have a letter or word break here. As we are + // unreading the run, there is no need to unset c.isMidWord; + // the title caser will handle this. + if c.info.isCased() { + // p+1 is guaranteed to be in bounds: if writing ς was + // successful, p+1 will contain the second byte of ς. If not, + // this function will have returned after c.next returned false. + c.dst[p+1]++ // ς → σ + } + c.unreadRune() + return true + } + // A case ignorable may also introduce a word break, so we may need + // to continue searching even after detecting a break. + isMid := c.info.isMid() + if (wasMid && isMid) || c.info.isBreak() { + c.isMidWord = false + } + wasMid = isMid + c.copy() + } + return true +} + +// finalSigmaSpan would be the same as isLower. + +// elUpper implements Greek upper casing, which entails removing a predefined +// set of non-blocked modifiers. Note that these accents should not be removed +// for title casing! +// Example: "Οδός" -> "ΟΔΟΣ". +func elUpper(c *context) bool { + // From CLDR: + // [:Greek:] [^[:ccc=Not_Reordered:][:ccc=Above:]]*? { [\u0313\u0314\u0301\u0300\u0306\u0342\u0308\u0304] → ; + // [:Greek:] [^[:ccc=Not_Reordered:][:ccc=Iota_Subscript:]]*? { \u0345 → ; + + r, _ := utf8.DecodeRune(c.src[c.pSrc:]) + oldPDst := c.pDst + if !upper(c) { + return false + } + if !unicode.Is(unicode.Greek, r) { + return true + } + i := 0 + // Take the properties of the uppercased rune that is already written to the + // destination. This saves us the trouble of having to uppercase the + // decomposed rune again. + if b := norm.NFD.Properties(c.dst[oldPDst:]).Decomposition(); b != nil { + // Restore the destination position and process the decomposed rune. + r, sz := utf8.DecodeRune(b) + if r <= 0xFF { // See A.6.1 + return true + } + c.pDst = oldPDst + // Insert the first rune and ignore the modifiers. See A.6.2. + c.writeBytes(b[:sz]) + i = len(b[sz:]) / 2 // Greek modifiers are always of length 2. + } + + for ; i < maxIgnorable && c.next(); i++ { + switch r, _ := utf8.DecodeRune(c.src[c.pSrc:]); r { + // Above and Iota Subscript + case 0x0300, // U+0300 COMBINING GRAVE ACCENT + 0x0301, // U+0301 COMBINING ACUTE ACCENT + 0x0304, // U+0304 COMBINING MACRON + 0x0306, // U+0306 COMBINING BREVE + 0x0308, // U+0308 COMBINING DIAERESIS + 0x0313, // U+0313 COMBINING COMMA ABOVE + 0x0314, // U+0314 COMBINING REVERSED COMMA ABOVE + 0x0342, // U+0342 COMBINING GREEK PERISPOMENI + 0x0345: // U+0345 COMBINING GREEK YPOGEGRAMMENI + // No-op. Gobble the modifier. + + default: + switch v, _ := trie.lookup(c.src[c.pSrc:]); info(v).cccType() { + case cccZero: + c.unreadRune() + return true + + // We don't need to test for IotaSubscript as the only rune that + // qualifies (U+0345) was already excluded in the switch statement + // above. See A.4. + + case cccAbove: + return c.copy() + default: + // Some other modifier. We're still allowed to gobble Greek + // modifiers after this. + c.copy() + } + } + } + return i == maxIgnorable +} + +// TODO: implement elUpperSpan (low-priority: complex and infrequent). + +func ltLower(c *context) bool { + // From CLDR: + // # Introduce an explicit dot above when lowercasing capital I's and J's + // # whenever there are more accents above. + // # (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek) + // # 0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I + // # 004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J + // # 012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK + // # 00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE + // # 00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE + // # 0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE + // ::NFD(); + // I } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → i \u0307; + // J } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → j \u0307; + // I \u0328 (Į) } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → i \u0328 \u0307; + // I \u0300 (Ì) → i \u0307 \u0300; + // I \u0301 (Í) → i \u0307 \u0301; + // I \u0303 (Ĩ) → i \u0307 \u0303; + // ::Any-Lower(); + // ::NFC(); + + i := 0 + if r := c.src[c.pSrc]; r < utf8.RuneSelf { + lower(c) + if r != 'I' && r != 'J' { + return true + } + } else { + p := norm.NFD.Properties(c.src[c.pSrc:]) + if d := p.Decomposition(); len(d) >= 3 && (d[0] == 'I' || d[0] == 'J') { + // UTF-8 optimization: the decomposition will only have an above + // modifier if the last rune of the decomposition is in [U+300-U+311]. + // In all other cases, a decomposition starting with I is always + // an I followed by modifiers that are not cased themselves. See A.2. + if d[1] == 0xCC && d[2] <= 0x91 { // A.2.4. + if !c.writeBytes(d[:1]) { + return false + } + c.dst[c.pDst-1] += 'a' - 'A' // lower + + // Assumption: modifier never changes on lowercase. See A.1. + // Assumption: all modifiers added have CCC = Above. See A.2.3. + return c.writeString("\u0307") && c.writeBytes(d[1:]) + } + // In all other cases the additional modifiers will have a CCC + // that is less than 230 (Above). We will insert the U+0307, if + // needed, after these modifiers so that a string in FCD form + // will remain so. See A.2.2. + lower(c) + i = 1 + } else { + return lower(c) + } + } + + for ; i < maxIgnorable && c.next(); i++ { + switch c.info.cccType() { + case cccZero: + c.unreadRune() + return true + case cccAbove: + return c.writeString("\u0307") && c.copy() // See A.1. + default: + c.copy() // See A.1. + } + } + return i == maxIgnorable +} + +// ltLowerSpan would be the same as isLower. + +func ltUpper(f mapFunc) mapFunc { + return func(c *context) bool { + // Unicode: + // 0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE + // + // From CLDR: + // # Remove \u0307 following soft-dotteds (i, j, and the like), with possible + // # intervening non-230 marks. + // ::NFD(); + // [:Soft_Dotted:] [^[:ccc=Not_Reordered:][:ccc=Above:]]* { \u0307 → ; + // ::Any-Upper(); + // ::NFC(); + + // TODO: See A.5. A soft-dotted rune never has an exception. This would + // allow us to overload the exception bit and encode this property in + // info. Need to measure performance impact of this. + r, _ := utf8.DecodeRune(c.src[c.pSrc:]) + oldPDst := c.pDst + if !f(c) { + return false + } + if !unicode.Is(unicode.Soft_Dotted, r) { + return true + } + + // We don't need to do an NFD normalization, as a soft-dotted rune never + // contains U+0307. See A.3. + + i := 0 + for ; i < maxIgnorable && c.next(); i++ { + switch c.info.cccType() { + case cccZero: + c.unreadRune() + return true + case cccAbove: + if c.hasPrefix("\u0307") { + // We don't do a full NFC, but rather combine runes for + // some of the common cases. (Returning NFC or + // preserving normal form is neither a requirement nor + // a possibility anyway). + if !c.next() { + return false + } + if c.dst[oldPDst] == 'I' && c.pDst == oldPDst+1 && c.src[c.pSrc] == 0xcc { + s := "" + switch c.src[c.pSrc+1] { + case 0x80: // U+0300 COMBINING GRAVE ACCENT + s = "\u00cc" // U+00CC LATIN CAPITAL LETTER I WITH GRAVE + case 0x81: // U+0301 COMBINING ACUTE ACCENT + s = "\u00cd" // U+00CD LATIN CAPITAL LETTER I WITH ACUTE + case 0x83: // U+0303 COMBINING TILDE + s = "\u0128" // U+0128 LATIN CAPITAL LETTER I WITH TILDE + case 0x88: // U+0308 COMBINING DIAERESIS + s = "\u00cf" // U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS + default: + } + if s != "" { + c.pDst = oldPDst + return c.writeString(s) + } + } + } + return c.copy() + default: + c.copy() + } + } + return i == maxIgnorable + } +} + +// TODO: implement ltUpperSpan (low priority: complex and infrequent). + +func aztrUpper(f mapFunc) mapFunc { + return func(c *context) bool { + // i→İ; + if c.src[c.pSrc] == 'i' { + return c.writeString("İ") + } + return f(c) + } +} + +func aztrLower(c *context) (done bool) { + // From CLDR: + // # I and i-dotless; I-dot and i are case pairs in Turkish and Azeri + // # 0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE + // İ→i; + // # When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i. + // # This matches the behavior of the canonically equivalent I-dot_above + // # 0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE + // # When lowercasing, unless an I is before a dot_above, it turns into a dotless i. + // # 0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I + // I([^[:ccc=Not_Reordered:][:ccc=Above:]]*)\u0307 → i$1 ; + // I→ı ; + // ::Any-Lower(); + if c.hasPrefix("\u0130") { // İ + return c.writeString("i") + } + if c.src[c.pSrc] != 'I' { + return lower(c) + } + + // We ignore the lower-case I for now, but insert it later when we know + // which form we need. + start := c.pSrc + c.sz + + i := 0 +Loop: + // We check for up to n ignorables before \u0307. As \u0307 is an + // ignorable as well, n is maxIgnorable-1. + for ; i < maxIgnorable && c.next(); i++ { + switch c.info.cccType() { + case cccAbove: + if c.hasPrefix("\u0307") { + return c.writeString("i") && c.writeBytes(c.src[start:c.pSrc]) // ignore U+0307 + } + done = true + break Loop + case cccZero: + c.unreadRune() + done = true + break Loop + default: + // We'll write this rune after we know which starter to use. + } + } + if i == maxIgnorable { + done = true + } + return c.writeString("ı") && c.writeBytes(c.src[start:c.pSrc+c.sz]) && done +} + +// aztrLowerSpan would be the same as isLower. + +func nlTitle(c *context) bool { + // From CLDR: + // # Special titlecasing for Dutch initial "ij". + // ::Any-Title(); + // # Fix up Ij at the beginning of a "word" (per Any-Title, notUAX #29) + // [:^WB=ALetter:] [:WB=Extend:]* [[:WB=MidLetter:][:WB=MidNumLet:]]? { Ij } → IJ ; + if c.src[c.pSrc] != 'I' && c.src[c.pSrc] != 'i' { + return title(c) + } + + if !c.writeString("I") || !c.next() { + return false + } + if c.src[c.pSrc] == 'j' || c.src[c.pSrc] == 'J' { + return c.writeString("J") + } + c.unreadRune() + return true +} + +func nlTitleSpan(c *context) bool { + // From CLDR: + // # Special titlecasing for Dutch initial "ij". + // ::Any-Title(); + // # Fix up Ij at the beginning of a "word" (per Any-Title, notUAX #29) + // [:^WB=ALetter:] [:WB=Extend:]* [[:WB=MidLetter:][:WB=MidNumLet:]]? { Ij } → IJ ; + if c.src[c.pSrc] != 'I' { + return isTitle(c) + } + if !c.next() || c.src[c.pSrc] == 'j' { + return false + } + if c.src[c.pSrc] != 'J' { + c.unreadRune() + } + return true +} + +// Not part of CLDR, but see https://unicode.org/cldr/trac/ticket/7078. +func afnlRewrite(c *context) { + if c.hasPrefix("'") || c.hasPrefix("’") { + c.isMidWord = true + } +} diff --git a/vendor/golang.org/x/text/cases/tables10.0.0.go b/vendor/golang.org/x/text/cases/tables10.0.0.go new file mode 100644 index 000000000000..bd28ae145d44 --- /dev/null +++ b/vendor/golang.org/x/text/cases/tables10.0.0.go @@ -0,0 +1,2255 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +//go:build go1.10 && !go1.13 + +package cases + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "10.0.0" + +var xorData string = "" + // Size: 185 bytes + "\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" + + "\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" + + "\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" + + "\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" + + "\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" + + "\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" + + "\x0b!\x10\x00\x0b!0\x00\x0b(\x04\x00\x03\x04\x1e\x00\x03\x0a\x00\x02:" + + "\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<\x00\x01&\x00\x01*" + + "\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01\x1e\x00\x01\x22" + +var exceptions string = "" + // Size: 2068 bytes + "\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" + + "\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" + + "\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" + + "\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" + + "\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" + + "\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ιΙΙ\x166ΐ" + + "Ϊ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12φΦΦ\x12" + + "\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x12\x12вВВ\x12\x12дД" + + "Д\x12\x12оОО\x12\x12сСС\x12\x12тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13" + + "\x1bꙋꙊꙊ\x13\x1bẖH̱H̱\x13\x1bẗT̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1ba" + + "ʾAʾAʾ\x13\x1bṡṠṠ\x12\x10ssß\x14$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166" + + "ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ" + + "\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ" + + "\x15\x1dἄιᾄἌΙ\x15\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ" + + "\x15+ἢιἪΙᾚ\x15+ἣιἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨ" + + "Ι\x15\x1dἡιᾑἩΙ\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15" + + "\x1dἦιᾖἮΙ\x15\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ" + + "\x15+ὥιὭΙᾭ\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ" + + "\x15\x1dὣιᾣὫΙ\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰι" + + "ᾺΙᾺͅ\x14#αιΑΙᾼ\x14$άιΆΙΆͅ\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12" + + "\x12ιΙΙ\x15-ὴιῊΙῊͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1c" + + "ηιῃΗΙ\x166ῒΪ̀Ϊ̀\x166ΐΪ́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ" + + "̀\x166ΰΫ́Ϋ́\x14$ῤΡ̓Ρ̓\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙ" + + "ῼ\x14$ώιΏΙΏͅ\x14$ῶΩ͂Ω͂\x166ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk" + + "\x12\x10åå\x12\x10ɫɫ\x12\x10ɽɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ" + + "\x12\x10ɐɐ\x12\x10ɒɒ\x12\x10ȿȿ\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ" + + "\x12\x10ɡɡ\x12\x10ɬɬ\x12\x10ɪɪ\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x12ffFF" + + "Ff\x12\x12fiFIFi\x12\x12flFLFl\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12" + + "stSTSt\x12\x12stSTSt\x14$մնՄՆՄն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄ" + + "ԽՄխ" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// caseTrie. Total size: 11892 bytes (11.61 KiB). Checksum: c6f15484b7653775. +type caseTrie struct{} + +func newCaseTrie(i int) *caseTrie { + return &caseTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *caseTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 18: + return uint16(caseValues[n<<6+uint32(b)]) + default: + n -= 18 + return uint16(sparse.lookup(n, b)) + } +} + +// caseValues: 20 blocks, 1280 entries, 2560 bytes +// The third block is the zero block. +var caseValues = [1280]uint16{ + // Block 0x0, offset 0x0 + 0x27: 0x0054, + 0x2e: 0x0054, + 0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010, + 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054, + // Block 0x1, offset 0x40 + 0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013, + 0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013, + 0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013, + 0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013, + 0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013, + 0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012, + 0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012, + 0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012, + 0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012, + 0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112, + 0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713, + 0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313, + 0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653, + 0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53, + 0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112, + 0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853, + 0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13, + 0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313, + 0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010, + 0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452, + // Block 0x4, offset 0x100 + 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359, + 0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619, + 0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313, + 0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13, + 0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452, + 0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112, + 0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112, + 0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112, + 0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112, + 0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112, + 0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112, + // Block 0x5, offset 0x140 + 0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53, + 0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112, + 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a, + 0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152, + 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012, + 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052, + 0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652, + 0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52, + 0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252, + 0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012, + 0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012, + // Block 0x6, offset 0x180 + 0x180: 0x3552, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012, + 0x186: 0x0012, 0x187: 0x110a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52, + 0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012, + 0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012, + 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x118a, + 0x19e: 0x120a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012, + 0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012, + 0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012, + 0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015, + 0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014, + 0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x128d, + 0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024, + 0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024, + 0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024, + 0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034, + 0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024, + 0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024, + 0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024, + 0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004, + 0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52, + 0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353, + // Block 0x8, offset 0x200 + 0x204: 0x0004, 0x205: 0x0004, + 0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513, + 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x130a, 0x211: 0x2013, + 0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013, + 0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013, + 0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53, + 0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53, + 0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512, + 0x230: 0x144a, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012, + 0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012, + 0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012, + // Block 0x9, offset 0x240 + 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x158a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52, + 0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52, + 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x160a, 0x251: 0x168a, + 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x170a, 0x256: 0x178a, 0x257: 0x1812, + 0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112, + 0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112, + 0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112, + 0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112, + 0x270: 0x180a, 0x271: 0x188a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x190a, + 0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112, + 0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053, + // Block 0xa, offset 0x280 + 0x280: 0x0812, 0x281: 0x0812, 0x282: 0x0812, 0x283: 0x0812, 0x284: 0x0812, 0x285: 0x0812, + 0x288: 0x0813, 0x289: 0x0813, 0x28a: 0x0813, 0x28b: 0x0813, + 0x28c: 0x0813, 0x28d: 0x0813, 0x290: 0x239a, 0x291: 0x0812, + 0x292: 0x247a, 0x293: 0x0812, 0x294: 0x25ba, 0x295: 0x0812, 0x296: 0x26fa, 0x297: 0x0812, + 0x299: 0x0813, 0x29b: 0x0813, 0x29d: 0x0813, + 0x29f: 0x0813, 0x2a0: 0x0812, 0x2a1: 0x0812, 0x2a2: 0x0812, 0x2a3: 0x0812, + 0x2a4: 0x0812, 0x2a5: 0x0812, 0x2a6: 0x0812, 0x2a7: 0x0812, 0x2a8: 0x0813, 0x2a9: 0x0813, + 0x2aa: 0x0813, 0x2ab: 0x0813, 0x2ac: 0x0813, 0x2ad: 0x0813, 0x2ae: 0x0813, 0x2af: 0x0813, + 0x2b0: 0x8b52, 0x2b1: 0x8b52, 0x2b2: 0x8e52, 0x2b3: 0x8e52, 0x2b4: 0x9152, 0x2b5: 0x9152, + 0x2b6: 0x9452, 0x2b7: 0x9452, 0x2b8: 0x9752, 0x2b9: 0x9752, 0x2ba: 0x9a52, 0x2bb: 0x9a52, + 0x2bc: 0x4d52, 0x2bd: 0x4d52, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x283a, 0x2c1: 0x292a, 0x2c2: 0x2a1a, 0x2c3: 0x2b0a, 0x2c4: 0x2bfa, 0x2c5: 0x2cea, + 0x2c6: 0x2dda, 0x2c7: 0x2eca, 0x2c8: 0x2fb9, 0x2c9: 0x30a9, 0x2ca: 0x3199, 0x2cb: 0x3289, + 0x2cc: 0x3379, 0x2cd: 0x3469, 0x2ce: 0x3559, 0x2cf: 0x3649, 0x2d0: 0x373a, 0x2d1: 0x382a, + 0x2d2: 0x391a, 0x2d3: 0x3a0a, 0x2d4: 0x3afa, 0x2d5: 0x3bea, 0x2d6: 0x3cda, 0x2d7: 0x3dca, + 0x2d8: 0x3eb9, 0x2d9: 0x3fa9, 0x2da: 0x4099, 0x2db: 0x4189, 0x2dc: 0x4279, 0x2dd: 0x4369, + 0x2de: 0x4459, 0x2df: 0x4549, 0x2e0: 0x463a, 0x2e1: 0x472a, 0x2e2: 0x481a, 0x2e3: 0x490a, + 0x2e4: 0x49fa, 0x2e5: 0x4aea, 0x2e6: 0x4bda, 0x2e7: 0x4cca, 0x2e8: 0x4db9, 0x2e9: 0x4ea9, + 0x2ea: 0x4f99, 0x2eb: 0x5089, 0x2ec: 0x5179, 0x2ed: 0x5269, 0x2ee: 0x5359, 0x2ef: 0x5449, + 0x2f0: 0x0812, 0x2f1: 0x0812, 0x2f2: 0x553a, 0x2f3: 0x564a, 0x2f4: 0x571a, + 0x2f6: 0x57fa, 0x2f7: 0x58da, 0x2f8: 0x0813, 0x2f9: 0x0813, 0x2fa: 0x8b53, 0x2fb: 0x8b53, + 0x2fc: 0x5a19, 0x2fd: 0x0004, 0x2fe: 0x5aea, 0x2ff: 0x0004, + // Block 0xc, offset 0x300 + 0x300: 0x0004, 0x301: 0x0004, 0x302: 0x5b6a, 0x303: 0x5c7a, 0x304: 0x5d4a, + 0x306: 0x5e2a, 0x307: 0x5f0a, 0x308: 0x8e53, 0x309: 0x8e53, 0x30a: 0x9153, 0x30b: 0x9153, + 0x30c: 0x6049, 0x30d: 0x0004, 0x30e: 0x0004, 0x30f: 0x0004, 0x310: 0x0812, 0x311: 0x0812, + 0x312: 0x611a, 0x313: 0x625a, 0x316: 0x639a, 0x317: 0x647a, + 0x318: 0x0813, 0x319: 0x0813, 0x31a: 0x9453, 0x31b: 0x9453, 0x31d: 0x0004, + 0x31e: 0x0004, 0x31f: 0x0004, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x65ba, 0x323: 0x66fa, + 0x324: 0x683a, 0x325: 0x0912, 0x326: 0x691a, 0x327: 0x69fa, 0x328: 0x0813, 0x329: 0x0813, + 0x32a: 0x9a53, 0x32b: 0x9a53, 0x32c: 0x0913, 0x32d: 0x0004, 0x32e: 0x0004, 0x32f: 0x0004, + 0x332: 0x6b3a, 0x333: 0x6c4a, 0x334: 0x6d1a, + 0x336: 0x6dfa, 0x337: 0x6eda, 0x338: 0x9753, 0x339: 0x9753, 0x33a: 0x4d53, 0x33b: 0x4d53, + 0x33c: 0x7019, 0x33d: 0x0004, 0x33e: 0x0004, + // Block 0xd, offset 0x340 + 0x342: 0x0013, + 0x347: 0x0013, 0x34a: 0x0012, 0x34b: 0x0013, + 0x34c: 0x0013, 0x34d: 0x0013, 0x34e: 0x0012, 0x34f: 0x0012, 0x350: 0x0013, 0x351: 0x0013, + 0x352: 0x0013, 0x353: 0x0012, 0x355: 0x0013, + 0x359: 0x0013, 0x35a: 0x0013, 0x35b: 0x0013, 0x35c: 0x0013, 0x35d: 0x0013, + 0x364: 0x0013, 0x366: 0x70eb, 0x368: 0x0013, + 0x36a: 0x714b, 0x36b: 0x718b, 0x36c: 0x0013, 0x36d: 0x0013, 0x36f: 0x0012, + 0x370: 0x0013, 0x371: 0x0013, 0x372: 0x9d53, 0x373: 0x0013, 0x374: 0x0012, 0x375: 0x0010, + 0x376: 0x0010, 0x377: 0x0010, 0x378: 0x0010, 0x379: 0x0012, + 0x37c: 0x0012, 0x37d: 0x0012, 0x37e: 0x0013, 0x37f: 0x0013, + // Block 0xe, offset 0x380 + 0x380: 0x1a13, 0x381: 0x1a13, 0x382: 0x1e13, 0x383: 0x1e13, 0x384: 0x1a13, 0x385: 0x1a13, + 0x386: 0x2613, 0x387: 0x2613, 0x388: 0x2a13, 0x389: 0x2a13, 0x38a: 0x2e13, 0x38b: 0x2e13, + 0x38c: 0x2a13, 0x38d: 0x2a13, 0x38e: 0x2613, 0x38f: 0x2613, 0x390: 0xa052, 0x391: 0xa052, + 0x392: 0xa352, 0x393: 0xa352, 0x394: 0xa652, 0x395: 0xa652, 0x396: 0xa352, 0x397: 0xa352, + 0x398: 0xa052, 0x399: 0xa052, 0x39a: 0x1a12, 0x39b: 0x1a12, 0x39c: 0x1e12, 0x39d: 0x1e12, + 0x39e: 0x1a12, 0x39f: 0x1a12, 0x3a0: 0x2612, 0x3a1: 0x2612, 0x3a2: 0x2a12, 0x3a3: 0x2a12, + 0x3a4: 0x2e12, 0x3a5: 0x2e12, 0x3a6: 0x2a12, 0x3a7: 0x2a12, 0x3a8: 0x2612, 0x3a9: 0x2612, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x6552, 0x3c1: 0x6552, 0x3c2: 0x6552, 0x3c3: 0x6552, 0x3c4: 0x6552, 0x3c5: 0x6552, + 0x3c6: 0x6552, 0x3c7: 0x6552, 0x3c8: 0x6552, 0x3c9: 0x6552, 0x3ca: 0x6552, 0x3cb: 0x6552, + 0x3cc: 0x6552, 0x3cd: 0x6552, 0x3ce: 0x6552, 0x3cf: 0x6552, 0x3d0: 0xa952, 0x3d1: 0xa952, + 0x3d2: 0xa952, 0x3d3: 0xa952, 0x3d4: 0xa952, 0x3d5: 0xa952, 0x3d6: 0xa952, 0x3d7: 0xa952, + 0x3d8: 0xa952, 0x3d9: 0xa952, 0x3da: 0xa952, 0x3db: 0xa952, 0x3dc: 0xa952, 0x3dd: 0xa952, + 0x3de: 0xa952, 0x3e0: 0x0113, 0x3e1: 0x0112, 0x3e2: 0x71eb, 0x3e3: 0x8853, + 0x3e4: 0x724b, 0x3e5: 0x72aa, 0x3e6: 0x730a, 0x3e7: 0x0f13, 0x3e8: 0x0f12, 0x3e9: 0x0313, + 0x3ea: 0x0312, 0x3eb: 0x0713, 0x3ec: 0x0712, 0x3ed: 0x736b, 0x3ee: 0x73cb, 0x3ef: 0x742b, + 0x3f0: 0x748b, 0x3f1: 0x0012, 0x3f2: 0x0113, 0x3f3: 0x0112, 0x3f4: 0x0012, 0x3f5: 0x0313, + 0x3f6: 0x0312, 0x3f7: 0x0012, 0x3f8: 0x0012, 0x3f9: 0x0012, 0x3fa: 0x0012, 0x3fb: 0x0012, + 0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0x74eb, 0x3ff: 0x754b, + // Block 0x10, offset 0x400 + 0x400: 0x0113, 0x401: 0x0112, 0x402: 0x0113, 0x403: 0x0112, 0x404: 0x0113, 0x405: 0x0112, + 0x406: 0x0113, 0x407: 0x0112, 0x408: 0x0014, 0x409: 0x0014, 0x40a: 0x0014, 0x40b: 0x0713, + 0x40c: 0x0712, 0x40d: 0x75ab, 0x40e: 0x0012, 0x40f: 0x0010, 0x410: 0x0113, 0x411: 0x0112, + 0x412: 0x0113, 0x413: 0x0112, 0x414: 0x0012, 0x415: 0x0012, 0x416: 0x0113, 0x417: 0x0112, + 0x418: 0x0113, 0x419: 0x0112, 0x41a: 0x0113, 0x41b: 0x0112, 0x41c: 0x0113, 0x41d: 0x0112, + 0x41e: 0x0113, 0x41f: 0x0112, 0x420: 0x0113, 0x421: 0x0112, 0x422: 0x0113, 0x423: 0x0112, + 0x424: 0x0113, 0x425: 0x0112, 0x426: 0x0113, 0x427: 0x0112, 0x428: 0x0113, 0x429: 0x0112, + 0x42a: 0x760b, 0x42b: 0x766b, 0x42c: 0x76cb, 0x42d: 0x772b, 0x42e: 0x778b, + 0x430: 0x77eb, 0x431: 0x784b, 0x432: 0x78ab, 0x433: 0xac53, 0x434: 0x0113, 0x435: 0x0112, + 0x436: 0x0113, 0x437: 0x0112, + // Block 0x11, offset 0x440 + 0x440: 0x790a, 0x441: 0x798a, 0x442: 0x7a0a, 0x443: 0x7a8a, 0x444: 0x7b3a, 0x445: 0x7bea, + 0x446: 0x7c6a, + 0x453: 0x7cea, 0x454: 0x7dca, 0x455: 0x7eaa, 0x456: 0x7f8a, 0x457: 0x806a, + 0x45d: 0x0010, + 0x45e: 0x0034, 0x45f: 0x0010, 0x460: 0x0010, 0x461: 0x0010, 0x462: 0x0010, 0x463: 0x0010, + 0x464: 0x0010, 0x465: 0x0010, 0x466: 0x0010, 0x467: 0x0010, 0x468: 0x0010, + 0x46a: 0x0010, 0x46b: 0x0010, 0x46c: 0x0010, 0x46d: 0x0010, 0x46e: 0x0010, 0x46f: 0x0010, + 0x470: 0x0010, 0x471: 0x0010, 0x472: 0x0010, 0x473: 0x0010, 0x474: 0x0010, 0x475: 0x0010, + 0x476: 0x0010, 0x478: 0x0010, 0x479: 0x0010, 0x47a: 0x0010, 0x47b: 0x0010, + 0x47c: 0x0010, 0x47e: 0x0010, + // Block 0x12, offset 0x480 + 0x480: 0x2213, 0x481: 0x2213, 0x482: 0x2613, 0x483: 0x2613, 0x484: 0x2213, 0x485: 0x2213, + 0x486: 0x2e13, 0x487: 0x2e13, 0x488: 0x2213, 0x489: 0x2213, 0x48a: 0x2613, 0x48b: 0x2613, + 0x48c: 0x2213, 0x48d: 0x2213, 0x48e: 0x3e13, 0x48f: 0x3e13, 0x490: 0x2213, 0x491: 0x2213, + 0x492: 0x2613, 0x493: 0x2613, 0x494: 0x2213, 0x495: 0x2213, 0x496: 0x2e13, 0x497: 0x2e13, + 0x498: 0x2213, 0x499: 0x2213, 0x49a: 0x2613, 0x49b: 0x2613, 0x49c: 0x2213, 0x49d: 0x2213, + 0x49e: 0xb553, 0x49f: 0xb553, 0x4a0: 0xb853, 0x4a1: 0xb853, 0x4a2: 0x2212, 0x4a3: 0x2212, + 0x4a4: 0x2612, 0x4a5: 0x2612, 0x4a6: 0x2212, 0x4a7: 0x2212, 0x4a8: 0x2e12, 0x4a9: 0x2e12, + 0x4aa: 0x2212, 0x4ab: 0x2212, 0x4ac: 0x2612, 0x4ad: 0x2612, 0x4ae: 0x2212, 0x4af: 0x2212, + 0x4b0: 0x3e12, 0x4b1: 0x3e12, 0x4b2: 0x2212, 0x4b3: 0x2212, 0x4b4: 0x2612, 0x4b5: 0x2612, + 0x4b6: 0x2212, 0x4b7: 0x2212, 0x4b8: 0x2e12, 0x4b9: 0x2e12, 0x4ba: 0x2212, 0x4bb: 0x2212, + 0x4bc: 0x2612, 0x4bd: 0x2612, 0x4be: 0x2212, 0x4bf: 0x2212, + // Block 0x13, offset 0x4c0 + 0x4c2: 0x0010, + 0x4c7: 0x0010, 0x4c9: 0x0010, 0x4cb: 0x0010, + 0x4cd: 0x0010, 0x4ce: 0x0010, 0x4cf: 0x0010, 0x4d1: 0x0010, + 0x4d2: 0x0010, 0x4d4: 0x0010, 0x4d7: 0x0010, + 0x4d9: 0x0010, 0x4db: 0x0010, 0x4dd: 0x0010, + 0x4df: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, + 0x4e4: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, 0x4e9: 0x0010, + 0x4ea: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010, + 0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010, + 0x4f6: 0x0010, 0x4f7: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010, + 0x4fc: 0x0010, 0x4fe: 0x0010, +} + +// caseIndex: 25 blocks, 1600 entries, 3200 bytes +// Block 0 is the zero block. +var caseIndex = [1600]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x12, 0xc3: 0x13, 0xc4: 0x14, 0xc5: 0x15, 0xc6: 0x01, 0xc7: 0x02, + 0xc8: 0x16, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x17, 0xcc: 0x18, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07, + 0xd0: 0x19, 0xd1: 0x1a, 0xd2: 0x1b, 0xd3: 0x1c, 0xd4: 0x1d, 0xd5: 0x1e, 0xd6: 0x1f, 0xd7: 0x20, + 0xd8: 0x21, 0xd9: 0x22, 0xda: 0x23, 0xdb: 0x24, 0xdc: 0x25, 0xdd: 0x26, 0xde: 0x27, 0xdf: 0x28, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09, + 0xf0: 0x14, 0xf3: 0x16, + // Block 0x4, offset 0x100 + 0x120: 0x29, 0x121: 0x2a, 0x122: 0x2b, 0x123: 0x2c, 0x124: 0x2d, 0x125: 0x2e, 0x126: 0x2f, 0x127: 0x30, + 0x128: 0x31, 0x129: 0x32, 0x12a: 0x33, 0x12b: 0x34, 0x12c: 0x35, 0x12d: 0x36, 0x12e: 0x37, 0x12f: 0x38, + 0x130: 0x39, 0x131: 0x3a, 0x132: 0x3b, 0x133: 0x3c, 0x134: 0x3d, 0x135: 0x3e, 0x136: 0x3f, 0x137: 0x40, + 0x138: 0x41, 0x139: 0x42, 0x13a: 0x43, 0x13b: 0x44, 0x13c: 0x45, 0x13d: 0x46, 0x13e: 0x47, 0x13f: 0x48, + // Block 0x5, offset 0x140 + 0x140: 0x49, 0x141: 0x4a, 0x142: 0x4b, 0x143: 0x4c, 0x144: 0x23, 0x145: 0x23, 0x146: 0x23, 0x147: 0x23, + 0x148: 0x23, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53, + 0x150: 0x54, 0x151: 0x23, 0x152: 0x23, 0x153: 0x23, 0x154: 0x23, 0x155: 0x23, 0x156: 0x23, 0x157: 0x23, + 0x158: 0x23, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b, + 0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62, + 0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69, + 0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71, + 0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x08, 0x17e: 0x09, 0x17f: 0x0a, + // Block 0x6, offset 0x180 + 0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0b, 0x185: 0x79, 0x186: 0x7a, + 0x192: 0x7b, 0x193: 0x0c, + 0x1b0: 0x7c, 0x1b1: 0x0d, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81, + 0x1b8: 0x82, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x23, 0x1c6: 0x87, + // Block 0x8, offset 0x200 + 0x200: 0x88, 0x201: 0x23, 0x202: 0x23, 0x203: 0x23, 0x204: 0x23, 0x205: 0x23, 0x206: 0x23, 0x207: 0x23, + 0x208: 0x23, 0x209: 0x23, 0x20a: 0x23, 0x20b: 0x23, 0x20c: 0x23, 0x20d: 0x23, 0x20e: 0x23, 0x20f: 0x23, + 0x210: 0x23, 0x211: 0x23, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x23, 0x215: 0x23, 0x216: 0x23, 0x217: 0x23, + 0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x0e, 0x21f: 0x91, + 0x220: 0x92, 0x221: 0x93, 0x222: 0x23, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98, + 0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0, + 0x230: 0x23, 0x231: 0x23, 0x232: 0x23, 0x233: 0x23, 0x234: 0x23, 0x235: 0x23, 0x236: 0x23, 0x237: 0x23, + 0x238: 0x23, 0x239: 0x23, 0x23a: 0x23, 0x23b: 0x23, 0x23c: 0x23, 0x23d: 0x23, 0x23e: 0x23, 0x23f: 0x23, + // Block 0x9, offset 0x240 + 0x240: 0x23, 0x241: 0x23, 0x242: 0x23, 0x243: 0x23, 0x244: 0x23, 0x245: 0x23, 0x246: 0x23, 0x247: 0x23, + 0x248: 0x23, 0x249: 0x23, 0x24a: 0x23, 0x24b: 0x23, 0x24c: 0x23, 0x24d: 0x23, 0x24e: 0x23, 0x24f: 0x23, + 0x250: 0x23, 0x251: 0x23, 0x252: 0x23, 0x253: 0x23, 0x254: 0x23, 0x255: 0x23, 0x256: 0x23, 0x257: 0x23, + 0x258: 0x23, 0x259: 0x23, 0x25a: 0x23, 0x25b: 0x23, 0x25c: 0x23, 0x25d: 0x23, 0x25e: 0x23, 0x25f: 0x23, + 0x260: 0x23, 0x261: 0x23, 0x262: 0x23, 0x263: 0x23, 0x264: 0x23, 0x265: 0x23, 0x266: 0x23, 0x267: 0x23, + 0x268: 0x23, 0x269: 0x23, 0x26a: 0x23, 0x26b: 0x23, 0x26c: 0x23, 0x26d: 0x23, 0x26e: 0x23, 0x26f: 0x23, + 0x270: 0x23, 0x271: 0x23, 0x272: 0x23, 0x273: 0x23, 0x274: 0x23, 0x275: 0x23, 0x276: 0x23, 0x277: 0x23, + 0x278: 0x23, 0x279: 0x23, 0x27a: 0x23, 0x27b: 0x23, 0x27c: 0x23, 0x27d: 0x23, 0x27e: 0x23, 0x27f: 0x23, + // Block 0xa, offset 0x280 + 0x280: 0x23, 0x281: 0x23, 0x282: 0x23, 0x283: 0x23, 0x284: 0x23, 0x285: 0x23, 0x286: 0x23, 0x287: 0x23, + 0x288: 0x23, 0x289: 0x23, 0x28a: 0x23, 0x28b: 0x23, 0x28c: 0x23, 0x28d: 0x23, 0x28e: 0x23, 0x28f: 0x23, + 0x290: 0x23, 0x291: 0x23, 0x292: 0x23, 0x293: 0x23, 0x294: 0x23, 0x295: 0x23, 0x296: 0x23, 0x297: 0x23, + 0x298: 0x23, 0x299: 0x23, 0x29a: 0x23, 0x29b: 0x23, 0x29c: 0x23, 0x29d: 0x23, 0x29e: 0xa1, 0x29f: 0xa2, + // Block 0xb, offset 0x2c0 + 0x2ec: 0x0f, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5, + 0x2f0: 0x23, 0x2f1: 0x23, 0x2f2: 0x23, 0x2f3: 0x23, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9, + 0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x23, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0, + // Block 0xc, offset 0x300 + 0x300: 0xb1, 0x301: 0xb2, 0x302: 0x23, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5, + 0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb, + 0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1, + 0x318: 0x23, 0x319: 0x23, 0x31a: 0x23, 0x31b: 0x23, 0x31c: 0xc2, 0x31d: 0xc3, + 0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9, + 0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf, + 0x330: 0x23, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2, + // Block 0xd, offset 0x340 + 0x340: 0xd3, 0x341: 0xd4, 0x342: 0xd5, 0x343: 0xd6, 0x344: 0xd7, 0x345: 0xd8, 0x346: 0xd9, 0x347: 0xda, + 0x348: 0xdb, 0x34a: 0xdc, 0x34b: 0xdd, 0x34c: 0xde, 0x34d: 0xdf, + 0x350: 0xe0, 0x351: 0xe1, 0x352: 0xe2, 0x353: 0xe3, 0x356: 0xe4, 0x357: 0xe5, + 0x358: 0xe6, 0x359: 0xe7, 0x35a: 0xe8, 0x35b: 0xe9, 0x35c: 0xea, + 0x362: 0xeb, 0x363: 0xec, + 0x368: 0xed, 0x369: 0xee, 0x36a: 0xef, 0x36b: 0xf0, + 0x370: 0xf1, 0x371: 0xf2, 0x372: 0xf3, 0x374: 0xf4, 0x375: 0xf5, + // Block 0xe, offset 0x380 + 0x380: 0x23, 0x381: 0x23, 0x382: 0x23, 0x383: 0x23, 0x384: 0x23, 0x385: 0x23, 0x386: 0x23, 0x387: 0x23, + 0x388: 0x23, 0x389: 0x23, 0x38a: 0x23, 0x38b: 0x23, 0x38c: 0x23, 0x38d: 0x23, 0x38e: 0xf6, + 0x390: 0x23, 0x391: 0xf7, 0x392: 0x23, 0x393: 0x23, 0x394: 0x23, 0x395: 0xf8, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x23, 0x3c1: 0x23, 0x3c2: 0x23, 0x3c3: 0x23, 0x3c4: 0x23, 0x3c5: 0x23, 0x3c6: 0x23, 0x3c7: 0x23, + 0x3c8: 0x23, 0x3c9: 0x23, 0x3ca: 0x23, 0x3cb: 0x23, 0x3cc: 0x23, 0x3cd: 0x23, 0x3ce: 0x23, 0x3cf: 0x23, + 0x3d0: 0xf7, + // Block 0x10, offset 0x400 + 0x410: 0x23, 0x411: 0x23, 0x412: 0x23, 0x413: 0x23, 0x414: 0x23, 0x415: 0x23, 0x416: 0x23, 0x417: 0x23, + 0x418: 0x23, 0x419: 0xf9, + // Block 0x11, offset 0x440 + 0x460: 0x23, 0x461: 0x23, 0x462: 0x23, 0x463: 0x23, 0x464: 0x23, 0x465: 0x23, 0x466: 0x23, 0x467: 0x23, + 0x468: 0xf0, 0x469: 0xfa, 0x46b: 0xfb, 0x46c: 0xfc, 0x46d: 0xfd, 0x46e: 0xfe, + 0x47c: 0x23, 0x47d: 0xff, 0x47e: 0x100, 0x47f: 0x101, + // Block 0x12, offset 0x480 + 0x4b0: 0x23, 0x4b1: 0x102, 0x4b2: 0x103, + // Block 0x13, offset 0x4c0 + 0x4c5: 0x104, 0x4c6: 0x105, + 0x4c9: 0x106, + 0x4d0: 0x107, 0x4d1: 0x108, 0x4d2: 0x109, 0x4d3: 0x10a, 0x4d4: 0x10b, 0x4d5: 0x10c, 0x4d6: 0x10d, 0x4d7: 0x10e, + 0x4d8: 0x10f, 0x4d9: 0x110, 0x4da: 0x111, 0x4db: 0x112, 0x4dc: 0x113, 0x4dd: 0x114, 0x4de: 0x115, 0x4df: 0x116, + 0x4e8: 0x117, 0x4e9: 0x118, 0x4ea: 0x119, + // Block 0x14, offset 0x500 + 0x500: 0x11a, + 0x520: 0x23, 0x521: 0x23, 0x522: 0x23, 0x523: 0x11b, 0x524: 0x10, 0x525: 0x11c, + 0x538: 0x11d, 0x539: 0x11, 0x53a: 0x11e, + // Block 0x15, offset 0x540 + 0x544: 0x11f, 0x545: 0x120, 0x546: 0x121, + 0x54f: 0x122, + // Block 0x16, offset 0x580 + 0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f, + 0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x123, 0x5c1: 0x124, 0x5c4: 0x124, 0x5c5: 0x124, 0x5c6: 0x124, 0x5c7: 0x125, + // Block 0x18, offset 0x600 + 0x620: 0x15, +} + +// sparseOffsets: 277 entries, 554 bytes +var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x35, 0x38, 0x3c, 0x3f, 0x43, 0x4d, 0x4f, 0x54, 0x64, 0x6b, 0x70, 0x7e, 0x7f, 0x8d, 0x9c, 0xa6, 0xa9, 0xaf, 0xb7, 0xba, 0xbc, 0xca, 0xd0, 0xde, 0xe9, 0xf5, 0x100, 0x10c, 0x116, 0x122, 0x12d, 0x139, 0x145, 0x14d, 0x155, 0x15f, 0x16a, 0x176, 0x17d, 0x188, 0x18d, 0x195, 0x198, 0x19d, 0x1a1, 0x1a5, 0x1ac, 0x1b5, 0x1bd, 0x1be, 0x1c7, 0x1ce, 0x1d6, 0x1dc, 0x1e2, 0x1e7, 0x1eb, 0x1ee, 0x1f0, 0x1f3, 0x1f8, 0x1f9, 0x1fb, 0x1fd, 0x1ff, 0x206, 0x20b, 0x20f, 0x218, 0x21b, 0x21e, 0x224, 0x225, 0x230, 0x231, 0x232, 0x237, 0x244, 0x24c, 0x254, 0x25d, 0x266, 0x26f, 0x274, 0x277, 0x280, 0x28d, 0x28f, 0x296, 0x298, 0x2a4, 0x2a5, 0x2b0, 0x2b8, 0x2c0, 0x2c6, 0x2c7, 0x2d5, 0x2da, 0x2dd, 0x2e2, 0x2e6, 0x2ec, 0x2f1, 0x2f4, 0x2f9, 0x2fe, 0x2ff, 0x305, 0x307, 0x308, 0x30a, 0x30c, 0x30f, 0x310, 0x312, 0x315, 0x31b, 0x31f, 0x321, 0x326, 0x32d, 0x331, 0x33a, 0x33b, 0x343, 0x347, 0x34c, 0x354, 0x35a, 0x360, 0x36a, 0x36f, 0x378, 0x37e, 0x385, 0x389, 0x391, 0x393, 0x395, 0x398, 0x39a, 0x39c, 0x39d, 0x39e, 0x3a0, 0x3a2, 0x3a8, 0x3ad, 0x3af, 0x3b5, 0x3b8, 0x3ba, 0x3c0, 0x3c5, 0x3c7, 0x3c8, 0x3c9, 0x3ca, 0x3cc, 0x3ce, 0x3d0, 0x3d3, 0x3d5, 0x3d8, 0x3e0, 0x3e3, 0x3e7, 0x3ef, 0x3f1, 0x3f2, 0x3f3, 0x3f5, 0x3fb, 0x3fd, 0x3fe, 0x400, 0x402, 0x404, 0x411, 0x412, 0x413, 0x417, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x421, 0x425, 0x42b, 0x42d, 0x434, 0x437, 0x43b, 0x441, 0x44a, 0x450, 0x456, 0x460, 0x46a, 0x46c, 0x473, 0x479, 0x47f, 0x485, 0x488, 0x48e, 0x491, 0x499, 0x49a, 0x4a1, 0x4a2, 0x4a5, 0x4af, 0x4b5, 0x4bb, 0x4bc, 0x4c2, 0x4c5, 0x4cd, 0x4d4, 0x4db, 0x4dc, 0x4dd, 0x4de, 0x4df, 0x4e1, 0x4e3, 0x4e5, 0x4e9, 0x4ea, 0x4ec, 0x4ed, 0x4ee, 0x4f0, 0x4f5, 0x4fa, 0x4fe, 0x4ff, 0x502, 0x506, 0x511, 0x515, 0x51d, 0x522, 0x526, 0x529, 0x52d, 0x530, 0x533, 0x538, 0x53c, 0x540, 0x544, 0x548, 0x54a, 0x54c, 0x54f, 0x554, 0x556, 0x55b, 0x564, 0x569, 0x56a, 0x56d, 0x56e, 0x56f, 0x571, 0x572, 0x573} + +// sparseValues: 1395 entries, 5580 bytes +var sparseValues = [1395]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0004, lo: 0xa8, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xaa}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0004, lo: 0xaf, hi: 0xaf}, + {value: 0x0004, lo: 0xb4, hi: 0xb4}, + {value: 0x001a, lo: 0xb5, hi: 0xb5}, + {value: 0x0054, lo: 0xb7, hi: 0xb7}, + {value: 0x0004, lo: 0xb8, hi: 0xb8}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + // Block 0x1, offset 0x9 + {value: 0x2013, lo: 0x80, hi: 0x96}, + {value: 0x2013, lo: 0x98, hi: 0x9e}, + {value: 0x009a, lo: 0x9f, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xb6}, + {value: 0x2012, lo: 0xb8, hi: 0xbe}, + {value: 0x0252, lo: 0xbf, hi: 0xbf}, + // Block 0x2, offset 0xf + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x011b, lo: 0xb0, hi: 0xb0}, + {value: 0x019a, lo: 0xb1, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb7}, + {value: 0x0012, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x0553, lo: 0xbf, hi: 0xbf}, + // Block 0x3, offset 0x18 + {value: 0x0552, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x01da, lo: 0x89, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xb7}, + {value: 0x0253, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x028a, lo: 0xbf, hi: 0xbf}, + // Block 0x4, offset 0x24 + {value: 0x0117, lo: 0x80, hi: 0x9f}, + {value: 0x2f53, lo: 0xa0, hi: 0xa0}, + {value: 0x0012, lo: 0xa1, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xb3}, + {value: 0x0012, lo: 0xb4, hi: 0xb9}, + {value: 0x090b, lo: 0xba, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x2953, lo: 0xbd, hi: 0xbd}, + {value: 0x098b, lo: 0xbe, hi: 0xbe}, + {value: 0x0a0a, lo: 0xbf, hi: 0xbf}, + // Block 0x5, offset 0x2e + {value: 0x0015, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x97}, + {value: 0x0004, lo: 0x98, hi: 0x9d}, + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0015, lo: 0xa0, hi: 0xa4}, + {value: 0x0004, lo: 0xa5, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xbf}, + // Block 0x6, offset 0x35 + {value: 0x0024, lo: 0x80, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbf}, + // Block 0x7, offset 0x38 + {value: 0x6553, lo: 0x80, hi: 0x8f}, + {value: 0x2013, lo: 0x90, hi: 0x9f}, + {value: 0x5f53, lo: 0xa0, hi: 0xaf}, + {value: 0x2012, lo: 0xb0, hi: 0xbf}, + // Block 0x8, offset 0x3c + {value: 0x5f52, lo: 0x80, hi: 0x8f}, + {value: 0x6552, lo: 0x90, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x9, offset 0x3f + {value: 0x0117, lo: 0x80, hi: 0x81}, + {value: 0x0024, lo: 0x83, hi: 0x87}, + {value: 0x0014, lo: 0x88, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xbf}, + // Block 0xa, offset 0x43 + {value: 0x0f13, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x0316, lo: 0x89, hi: 0x8a}, + {value: 0x0716, lo: 0x8b, hi: 0x8c}, + {value: 0x0316, lo: 0x8d, hi: 0x8e}, + {value: 0x0f12, lo: 0x8f, hi: 0x8f}, + {value: 0x0117, lo: 0x90, hi: 0xbf}, + // Block 0xb, offset 0x4d + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x6553, lo: 0xb1, hi: 0xbf}, + // Block 0xc, offset 0x4f + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6853, lo: 0x90, hi: 0x96}, + {value: 0x0014, lo: 0x99, hi: 0x99}, + {value: 0x6552, lo: 0xa1, hi: 0xaf}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0xd, offset 0x54 + {value: 0x6852, lo: 0x80, hi: 0x86}, + {value: 0x198a, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x91, hi: 0x91}, + {value: 0x0024, lo: 0x92, hi: 0x95}, + {value: 0x0034, lo: 0x96, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x99}, + {value: 0x0034, lo: 0x9a, hi: 0x9b}, + {value: 0x0024, lo: 0x9c, hi: 0xa1}, + {value: 0x0034, lo: 0xa2, hi: 0xa7}, + {value: 0x0024, lo: 0xa8, hi: 0xa9}, + {value: 0x0034, lo: 0xaa, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xbd}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xe, offset 0x64 + {value: 0x0034, lo: 0x81, hi: 0x82}, + {value: 0x0024, lo: 0x84, hi: 0x84}, + {value: 0x0034, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xb3}, + {value: 0x0054, lo: 0xb4, hi: 0xb4}, + // Block 0xf, offset 0x6b + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0024, lo: 0x90, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0014, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x10, offset 0x70 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9c}, + {value: 0x0024, lo: 0x9d, hi: 0x9e}, + {value: 0x0034, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x11, offset 0x7e + {value: 0x0010, lo: 0x80, hi: 0xbf}, + // Block 0x12, offset 0x7f + {value: 0x0010, lo: 0x80, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0024, lo: 0x9f, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xaa, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x13, offset 0x8d + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0034, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0034, lo: 0xb1, hi: 0xb1}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbd}, + {value: 0x0034, lo: 0xbe, hi: 0xbe}, + {value: 0x0024, lo: 0xbf, hi: 0xbf}, + // Block 0x14, offset 0x9c + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0024, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x88}, + {value: 0x0024, lo: 0x89, hi: 0x8a}, + {value: 0x0010, lo: 0x8d, hi: 0xbf}, + // Block 0x15, offset 0xa6 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x16, offset 0xa9 + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xb1}, + {value: 0x0034, lo: 0xb2, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + // Block 0x17, offset 0xaf + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x99}, + {value: 0x0014, lo: 0x9a, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0xa3}, + {value: 0x0014, lo: 0xa4, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xad}, + // Block 0x18, offset 0xb7 + {value: 0x0010, lo: 0x80, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0xa0, hi: 0xaa}, + // Block 0x19, offset 0xba + {value: 0x0010, lo: 0xa0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbd}, + // Block 0x1a, offset 0xbc + {value: 0x0024, lo: 0x94, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0024, lo: 0xaa, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbf}, + // Block 0x1b, offset 0xca + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1c, offset 0xd0 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0x1d, offset 0xde + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb6, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1e, offset 0xe9 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xb1}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + // Block 0x1f, offset 0xf5 + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x20, offset 0x100 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x99, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x21, offset 0x10c + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x22, offset 0x116 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x85}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xbf}, + // Block 0x23, offset 0x122 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x24, offset 0x12d + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x25, offset 0x139 + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0010, lo: 0xa8, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x26, offset 0x145 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x27, offset 0x14d + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb9}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbf}, + // Block 0x28, offset 0x155 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x88}, + {value: 0x0014, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x29, offset 0x15f + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x2a, offset 0x16a + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb2}, + // Block 0x2b, offset 0x176 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x2c, offset 0x17d + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x94, hi: 0x97}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xba, hi: 0xbf}, + // Block 0x2d, offset 0x188 + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x96}, + {value: 0x0010, lo: 0x9a, hi: 0xb1}, + {value: 0x0010, lo: 0xb3, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x2e, offset 0x18d + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x94}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9f}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + // Block 0x2f, offset 0x195 + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xba}, + // Block 0x30, offset 0x198 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x31, offset 0x19d + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xb9}, + {value: 0x0014, lo: 0xbb, hi: 0xbc}, + // Block 0x32, offset 0x1a1 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x33, offset 0x1a5 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0034, lo: 0x98, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0034, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x34, offset 0x1ac + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xac}, + {value: 0x0034, lo: 0xb1, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xba, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x35, offset 0x1b5 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0024, lo: 0x82, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x86, hi: 0x87}, + {value: 0x0010, lo: 0x88, hi: 0x8c}, + {value: 0x0014, lo: 0x8d, hi: 0x97}, + {value: 0x0014, lo: 0x99, hi: 0xbc}, + // Block 0x36, offset 0x1bd + {value: 0x0034, lo: 0x86, hi: 0x86}, + // Block 0x37, offset 0x1be + {value: 0x0010, lo: 0xab, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbe}, + // Block 0x38, offset 0x1c7 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x96, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x99}, + {value: 0x0014, lo: 0x9e, hi: 0xa0}, + {value: 0x0010, lo: 0xa2, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xad}, + {value: 0x0014, lo: 0xb1, hi: 0xb4}, + // Block 0x39, offset 0x1ce + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x6c53, lo: 0xa0, hi: 0xbf}, + // Block 0x3a, offset 0x1d6 + {value: 0x7053, lo: 0x80, hi: 0x85}, + {value: 0x7053, lo: 0x87, hi: 0x87}, + {value: 0x7053, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xba}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x3b, offset 0x1dc + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x9a, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x3c, offset 0x1e2 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x3d, offset 0x1e7 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x82, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3e, offset 0x1eb + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3f, offset 0x1ee + {value: 0x0010, lo: 0x80, hi: 0x9a}, + {value: 0x0024, lo: 0x9d, hi: 0x9f}, + // Block 0x40, offset 0x1f0 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x7453, lo: 0xa0, hi: 0xaf}, + {value: 0x7853, lo: 0xb0, hi: 0xbf}, + // Block 0x41, offset 0x1f3 + {value: 0x7c53, lo: 0x80, hi: 0x8f}, + {value: 0x8053, lo: 0x90, hi: 0x9f}, + {value: 0x7c53, lo: 0xa0, hi: 0xaf}, + {value: 0x0813, lo: 0xb0, hi: 0xb5}, + {value: 0x0892, lo: 0xb8, hi: 0xbd}, + // Block 0x42, offset 0x1f8 + {value: 0x0010, lo: 0x81, hi: 0xbf}, + // Block 0x43, offset 0x1f9 + {value: 0x0010, lo: 0x80, hi: 0xac}, + {value: 0x0010, lo: 0xaf, hi: 0xbf}, + // Block 0x44, offset 0x1fb + {value: 0x0010, lo: 0x81, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x45, offset 0x1fd + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb8}, + // Block 0x46, offset 0x1ff + {value: 0x0010, lo: 0x80, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0034, lo: 0x94, hi: 0x94}, + {value: 0x0010, lo: 0xa0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + // Block 0x47, offset 0x206 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xac}, + {value: 0x0010, lo: 0xae, hi: 0xb0}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + // Block 0x48, offset 0x20b + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x49, offset 0x20f + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x89, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0014, lo: 0x93, hi: 0x93}, + {value: 0x0004, lo: 0x97, hi: 0x97}, + {value: 0x0024, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0x4a, offset 0x218 + {value: 0x0014, lo: 0x8b, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x4b, offset 0x21b + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb7}, + // Block 0x4c, offset 0x21e + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x4d, offset 0x224 + {value: 0x0010, lo: 0x80, hi: 0xb5}, + // Block 0x4e, offset 0x225 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbb}, + // Block 0x4f, offset 0x230 + {value: 0x0010, lo: 0x86, hi: 0x8f}, + // Block 0x50, offset 0x231 + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x51, offset 0x232 + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + // Block 0x52, offset 0x237 + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x9e}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xac}, + {value: 0x0010, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xbc}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x53, offset 0x244 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xa7, hi: 0xa7}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + {value: 0x0034, lo: 0xb5, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbc}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0x54, offset 0x24c + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x55, offset 0x254 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0030, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8b}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xab, hi: 0xab}, + {value: 0x0034, lo: 0xac, hi: 0xac}, + {value: 0x0024, lo: 0xad, hi: 0xb3}, + // Block 0x56, offset 0x25d + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0030, lo: 0xaa, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbf}, + // Block 0x57, offset 0x266 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0030, lo: 0xb2, hi: 0xb3}, + // Block 0x58, offset 0x26f + {value: 0x0010, lo: 0x80, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0x59, offset 0x274 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8d, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x5a, offset 0x277 + {value: 0x1a6a, lo: 0x80, hi: 0x80}, + {value: 0x1aea, lo: 0x81, hi: 0x81}, + {value: 0x1b6a, lo: 0x82, hi: 0x82}, + {value: 0x1bea, lo: 0x83, hi: 0x83}, + {value: 0x1c6a, lo: 0x84, hi: 0x84}, + {value: 0x1cea, lo: 0x85, hi: 0x85}, + {value: 0x1d6a, lo: 0x86, hi: 0x86}, + {value: 0x1dea, lo: 0x87, hi: 0x87}, + {value: 0x1e6a, lo: 0x88, hi: 0x88}, + // Block 0x5b, offset 0x280 + {value: 0x0024, lo: 0x90, hi: 0x92}, + {value: 0x0034, lo: 0x94, hi: 0x99}, + {value: 0x0024, lo: 0x9a, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9f}, + {value: 0x0024, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0034, lo: 0xa2, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xb3}, + {value: 0x0024, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb7}, + {value: 0x0024, lo: 0xb8, hi: 0xb9}, + // Block 0x5c, offset 0x28d + {value: 0x0012, lo: 0x80, hi: 0xab}, + {value: 0x0015, lo: 0xac, hi: 0xbf}, + // Block 0x5d, offset 0x28f + {value: 0x0015, lo: 0x80, hi: 0xaa}, + {value: 0x0012, lo: 0xab, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb8}, + {value: 0x8452, lo: 0xb9, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbc}, + {value: 0x8852, lo: 0xbd, hi: 0xbd}, + {value: 0x0012, lo: 0xbe, hi: 0xbf}, + // Block 0x5e, offset 0x296 + {value: 0x0012, lo: 0x80, hi: 0x9a}, + {value: 0x0015, lo: 0x9b, hi: 0xbf}, + // Block 0x5f, offset 0x298 + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0024, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb9}, + {value: 0x0024, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbd}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x60, offset 0x2a4 + {value: 0x0117, lo: 0x80, hi: 0xbf}, + // Block 0x61, offset 0x2a5 + {value: 0x0117, lo: 0x80, hi: 0x95}, + {value: 0x1f1a, lo: 0x96, hi: 0x96}, + {value: 0x1fca, lo: 0x97, hi: 0x97}, + {value: 0x207a, lo: 0x98, hi: 0x98}, + {value: 0x212a, lo: 0x99, hi: 0x99}, + {value: 0x21da, lo: 0x9a, hi: 0x9a}, + {value: 0x228a, lo: 0x9b, hi: 0x9b}, + {value: 0x0012, lo: 0x9c, hi: 0x9d}, + {value: 0x233b, lo: 0x9e, hi: 0x9e}, + {value: 0x0012, lo: 0x9f, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x62, offset 0x2b0 + {value: 0x0812, lo: 0x80, hi: 0x87}, + {value: 0x0813, lo: 0x88, hi: 0x8f}, + {value: 0x0812, lo: 0x90, hi: 0x95}, + {value: 0x0813, lo: 0x98, hi: 0x9d}, + {value: 0x0812, lo: 0xa0, hi: 0xa7}, + {value: 0x0813, lo: 0xa8, hi: 0xaf}, + {value: 0x0812, lo: 0xb0, hi: 0xb7}, + {value: 0x0813, lo: 0xb8, hi: 0xbf}, + // Block 0x63, offset 0x2b8 + {value: 0x0004, lo: 0x8b, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8f}, + {value: 0x0054, lo: 0x98, hi: 0x99}, + {value: 0x0054, lo: 0xa4, hi: 0xa4}, + {value: 0x0054, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xaa, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xaf}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x64, offset 0x2c0 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x94, hi: 0x94}, + {value: 0x0014, lo: 0xa0, hi: 0xa4}, + {value: 0x0014, lo: 0xa6, hi: 0xaf}, + {value: 0x0015, lo: 0xb1, hi: 0xb1}, + {value: 0x0015, lo: 0xbf, hi: 0xbf}, + // Block 0x65, offset 0x2c6 + {value: 0x0015, lo: 0x90, hi: 0x9c}, + // Block 0x66, offset 0x2c7 + {value: 0x0024, lo: 0x90, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x93}, + {value: 0x0024, lo: 0x94, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0xa0}, + {value: 0x0024, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa4}, + {value: 0x0034, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa7}, + {value: 0x0034, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xa9}, + {value: 0x0034, lo: 0xaa, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + // Block 0x67, offset 0x2d5 + {value: 0x0016, lo: 0x85, hi: 0x86}, + {value: 0x0012, lo: 0x87, hi: 0x89}, + {value: 0x9d52, lo: 0x8e, hi: 0x8e}, + {value: 0x1013, lo: 0xa0, hi: 0xaf}, + {value: 0x1012, lo: 0xb0, hi: 0xbf}, + // Block 0x68, offset 0x2da + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x88}, + // Block 0x69, offset 0x2dd + {value: 0xa053, lo: 0xb6, hi: 0xb7}, + {value: 0xa353, lo: 0xb8, hi: 0xb9}, + {value: 0xa653, lo: 0xba, hi: 0xbb}, + {value: 0xa353, lo: 0xbc, hi: 0xbd}, + {value: 0xa053, lo: 0xbe, hi: 0xbf}, + // Block 0x6a, offset 0x2e2 + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6553, lo: 0x90, hi: 0x9f}, + {value: 0xa953, lo: 0xa0, hi: 0xae}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0x6b, offset 0x2e6 + {value: 0x0117, lo: 0x80, hi: 0xa3}, + {value: 0x0012, lo: 0xa4, hi: 0xa4}, + {value: 0x0716, lo: 0xab, hi: 0xac}, + {value: 0x0316, lo: 0xad, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb3}, + // Block 0x6c, offset 0x2ec + {value: 0x6c52, lo: 0x80, hi: 0x9f}, + {value: 0x7052, lo: 0xa0, hi: 0xa5}, + {value: 0x7052, lo: 0xa7, hi: 0xa7}, + {value: 0x7052, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x6d, offset 0x2f1 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x6e, offset 0x2f4 + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0010, lo: 0xb0, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x6f, offset 0x2f9 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9e}, + {value: 0x0024, lo: 0xa0, hi: 0xbf}, + // Block 0x70, offset 0x2fe + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + // Block 0x71, offset 0x2ff + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0xaa, hi: 0xad}, + {value: 0x0030, lo: 0xae, hi: 0xaf}, + {value: 0x0004, lo: 0xb1, hi: 0xb5}, + {value: 0x0014, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + // Block 0x72, offset 0x305 + {value: 0x0034, lo: 0x99, hi: 0x9a}, + {value: 0x0004, lo: 0x9b, hi: 0x9e}, + // Block 0x73, offset 0x307 + {value: 0x0004, lo: 0xbc, hi: 0xbe}, + // Block 0x74, offset 0x308 + {value: 0x0010, lo: 0x85, hi: 0xae}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x75, offset 0x30a + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0010, lo: 0xa0, hi: 0xba}, + // Block 0x76, offset 0x30c + {value: 0x0010, lo: 0x80, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0xbf}, + // Block 0x77, offset 0x30f + {value: 0x0010, lo: 0x80, hi: 0x8c}, + // Block 0x78, offset 0x310 + {value: 0x0010, lo: 0x90, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x79, offset 0x312 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0xab}, + // Block 0x7a, offset 0x315 + {value: 0x0117, lo: 0x80, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb2}, + {value: 0x0024, lo: 0xb4, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x7b, offset 0x31b + {value: 0x0117, lo: 0x80, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9d}, + {value: 0x0024, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x7c, offset 0x31f + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb1}, + // Block 0x7d, offset 0x321 + {value: 0x0004, lo: 0x80, hi: 0x96}, + {value: 0x0014, lo: 0x97, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xaf}, + {value: 0x0012, lo: 0xb0, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xbf}, + // Block 0x7e, offset 0x326 + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x0015, lo: 0xb0, hi: 0xb0}, + {value: 0x0012, lo: 0xb1, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x8453, lo: 0xbd, hi: 0xbd}, + {value: 0x0117, lo: 0xbe, hi: 0xbf}, + // Block 0x7f, offset 0x32d + {value: 0x0010, lo: 0xb7, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbf}, + // Block 0x80, offset 0x331 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8b}, + {value: 0x0010, lo: 0x8c, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + // Block 0x81, offset 0x33a + {value: 0x0010, lo: 0x80, hi: 0xb3}, + // Block 0x82, offset 0x33b + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xa0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb7}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x83, offset 0x343 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x84, offset 0x347 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0x92}, + {value: 0x0030, lo: 0x93, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0x85, offset 0x34c + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb9}, + {value: 0x0010, lo: 0xba, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x86, offset 0x354 + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0004, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x87, offset 0x35a + {value: 0x0010, lo: 0x80, hi: 0xa8}, + {value: 0x0014, lo: 0xa9, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0x88, offset 0x360 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x89, offset 0x36a + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0024, lo: 0xbe, hi: 0xbf}, + // Block 0x8a, offset 0x36f + {value: 0x0024, lo: 0x81, hi: 0x81}, + {value: 0x0004, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + // Block 0x8b, offset 0x378 + {value: 0x0010, lo: 0x81, hi: 0x86}, + {value: 0x0010, lo: 0x89, hi: 0x8e}, + {value: 0x0010, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x8c, offset 0x37e + {value: 0x0012, lo: 0x80, hi: 0x92}, + {value: 0xac52, lo: 0x93, hi: 0x93}, + {value: 0x0012, lo: 0x94, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9f}, + {value: 0x0012, lo: 0xa0, hi: 0xa5}, + {value: 0x74d2, lo: 0xb0, hi: 0xbf}, + // Block 0x8d, offset 0x385 + {value: 0x78d2, lo: 0x80, hi: 0x8f}, + {value: 0x7cd2, lo: 0x90, hi: 0x9f}, + {value: 0x80d2, lo: 0xa0, hi: 0xaf}, + {value: 0x7cd2, lo: 0xb0, hi: 0xbf}, + // Block 0x8e, offset 0x389 + {value: 0x0010, lo: 0x80, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x8f, offset 0x391 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x90, offset 0x393 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x8b, hi: 0xbb}, + // Block 0x91, offset 0x395 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0xbf}, + // Block 0x92, offset 0x398 + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0004, lo: 0xb2, hi: 0xbf}, + // Block 0x93, offset 0x39a + {value: 0x0004, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x93, hi: 0xbf}, + // Block 0x94, offset 0x39c + {value: 0x0010, lo: 0x80, hi: 0xbd}, + // Block 0x95, offset 0x39d + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0x96, offset 0x39e + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0xbf}, + // Block 0x97, offset 0x3a0 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0xb0, hi: 0xbb}, + // Block 0x98, offset 0x3a2 + {value: 0x0014, lo: 0x80, hi: 0x8f}, + {value: 0x0054, lo: 0x93, hi: 0x93}, + {value: 0x0024, lo: 0xa0, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xad}, + {value: 0x0024, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + // Block 0x99, offset 0x3a8 + {value: 0x0010, lo: 0x8d, hi: 0x8f}, + {value: 0x0054, lo: 0x92, hi: 0x92}, + {value: 0x0054, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0xb0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0x9a, offset 0x3ad + {value: 0x0010, lo: 0x80, hi: 0xbc}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x9b, offset 0x3af + {value: 0x0054, lo: 0x87, hi: 0x87}, + {value: 0x0054, lo: 0x8e, hi: 0x8e}, + {value: 0x0054, lo: 0x9a, hi: 0x9a}, + {value: 0x5f53, lo: 0xa1, hi: 0xba}, + {value: 0x0004, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9c, offset 0x3b5 + {value: 0x0004, lo: 0x80, hi: 0x80}, + {value: 0x5f52, lo: 0x81, hi: 0x9a}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + // Block 0x9d, offset 0x3b8 + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbe}, + // Block 0x9e, offset 0x3ba + {value: 0x0010, lo: 0x82, hi: 0x87}, + {value: 0x0010, lo: 0x8a, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0x97}, + {value: 0x0010, lo: 0x9a, hi: 0x9c}, + {value: 0x0004, lo: 0xa3, hi: 0xa3}, + {value: 0x0014, lo: 0xb9, hi: 0xbb}, + // Block 0x9f, offset 0x3c0 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0010, lo: 0x8d, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xba}, + {value: 0x0010, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xa0, offset 0x3c5 + {value: 0x0010, lo: 0x80, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x9d}, + // Block 0xa1, offset 0x3c7 + {value: 0x0010, lo: 0x80, hi: 0xba}, + // Block 0xa2, offset 0x3c8 + {value: 0x0010, lo: 0x80, hi: 0xb4}, + // Block 0xa3, offset 0x3c9 + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0xa4, offset 0x3ca + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa5, offset 0x3cc + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + // Block 0xa6, offset 0x3ce + {value: 0x0010, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xad, hi: 0xbf}, + // Block 0xa7, offset 0x3d0 + {value: 0x0010, lo: 0x80, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0xb5}, + {value: 0x0024, lo: 0xb6, hi: 0xba}, + // Block 0xa8, offset 0x3d3 + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa9, offset 0x3d5 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x91, hi: 0x95}, + // Block 0xaa, offset 0x3d8 + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x97}, + {value: 0xaf53, lo: 0x98, hi: 0x9f}, + {value: 0xb253, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbf}, + // Block 0xab, offset 0x3e0 + {value: 0xaf52, lo: 0x80, hi: 0x87}, + {value: 0xb252, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0xac, offset 0x3e3 + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0xb253, lo: 0xb0, hi: 0xb7}, + {value: 0xaf53, lo: 0xb8, hi: 0xbf}, + // Block 0xad, offset 0x3e7 + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x93}, + {value: 0xb252, lo: 0x98, hi: 0x9f}, + {value: 0xaf52, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbb}, + // Block 0xae, offset 0x3ef + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xaf, offset 0x3f1 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + // Block 0xb0, offset 0x3f2 + {value: 0x0010, lo: 0x80, hi: 0xb6}, + // Block 0xb1, offset 0x3f3 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xa7}, + // Block 0xb2, offset 0x3f5 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xb5}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xb3, offset 0x3fb + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb6}, + // Block 0xb4, offset 0x3fd + {value: 0x0010, lo: 0x80, hi: 0x9e}, + // Block 0xb5, offset 0x3fe + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + // Block 0xb6, offset 0x400 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb9}, + // Block 0xb7, offset 0x402 + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0xb8, offset 0x404 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x8e, hi: 0x8e}, + {value: 0x0024, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x99, hi: 0xb3}, + {value: 0x0024, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xb9, offset 0x411 + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0xba, offset 0x412 + {value: 0x0010, lo: 0x80, hi: 0x9c}, + // Block 0xbb, offset 0x413 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + // Block 0xbc, offset 0x417 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + // Block 0xbd, offset 0x419 + {value: 0x0010, lo: 0x80, hi: 0x91}, + // Block 0xbe, offset 0x41a + {value: 0x0010, lo: 0x80, hi: 0x88}, + // Block 0xbf, offset 0x41b + {value: 0x5653, lo: 0x80, hi: 0xb2}, + // Block 0xc0, offset 0x41c + {value: 0x5652, lo: 0x80, hi: 0xb2}, + // Block 0xc1, offset 0x41d + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xc2, offset 0x421 + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xc3, offset 0x425 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb6}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + // Block 0xc4, offset 0x42b + {value: 0x0010, lo: 0x90, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xc5, offset 0x42d + {value: 0x0024, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0xc6, offset 0x434 + {value: 0x0010, lo: 0x90, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + // Block 0xc7, offset 0x437 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xc8, offset 0x43b + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + // Block 0xc9, offset 0x441 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb4}, + {value: 0x0030, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xb7}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0xca, offset 0x44a + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xcb, offset 0x450 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa2}, + {value: 0x0014, lo: 0xa3, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xcc, offset 0x456 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xcd, offset 0x460 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0030, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9d, hi: 0xa3}, + {value: 0x0024, lo: 0xa6, hi: 0xac}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + // Block 0xce, offset 0x46a + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xcf, offset 0x46c + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd0, offset 0x473 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xd1, offset 0x479 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd2, offset 0x47f + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd3, offset 0x485 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x98, hi: 0x9b}, + {value: 0x0014, lo: 0x9c, hi: 0x9d}, + // Block 0xd4, offset 0x488 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd5, offset 0x48e + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd6, offset 0x491 + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0014, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb5}, + {value: 0x0030, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0xd7, offset 0x499 + {value: 0x0010, lo: 0x80, hi: 0x89}, + // Block 0xd8, offset 0x49a + {value: 0x0014, lo: 0x9d, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xd9, offset 0x4a1 + {value: 0x5f53, lo: 0xa0, hi: 0xbf}, + // Block 0xda, offset 0x4a2 + {value: 0x5f52, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xdb, offset 0x4a5 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x89, hi: 0x8a}, + {value: 0x0010, lo: 0x8b, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbb, hi: 0xbe}, + // Block 0xdc, offset 0x4af + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0014, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x98}, + {value: 0x0014, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0x9c, hi: 0xbf}, + // Block 0xdd, offset 0x4b5 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x86, hi: 0x89}, + {value: 0x0014, lo: 0x8a, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x99}, + // Block 0xde, offset 0x4bb + {value: 0x0010, lo: 0x80, hi: 0xb8}, + // Block 0xdf, offset 0x4bc + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb6}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xe0, offset 0x4c2 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0xe1, offset 0x4c5 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0014, lo: 0x92, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xa9}, + {value: 0x0014, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0xe2, offset 0x4cd + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb6}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xe3, offset 0x4d4 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xe4, offset 0x4db + {value: 0x0010, lo: 0x80, hi: 0x99}, + // Block 0xe5, offset 0x4dc + {value: 0x0010, lo: 0x80, hi: 0xae}, + // Block 0xe6, offset 0x4dd + {value: 0x0010, lo: 0x80, hi: 0x83}, + // Block 0xe7, offset 0x4de + {value: 0x0010, lo: 0x80, hi: 0x86}, + // Block 0xe8, offset 0x4df + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0xe9, offset 0x4e1 + {value: 0x0010, lo: 0x90, hi: 0xad}, + {value: 0x0034, lo: 0xb0, hi: 0xb4}, + // Block 0xea, offset 0x4e3 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb6}, + // Block 0xeb, offset 0x4e5 + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa3, hi: 0xb7}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xec, offset 0x4e9 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + // Block 0xed, offset 0x4ea + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0xbe}, + // Block 0xee, offset 0x4ec + {value: 0x0014, lo: 0x8f, hi: 0x9f}, + // Block 0xef, offset 0x4ed + {value: 0x0014, lo: 0xa0, hi: 0xa1}, + // Block 0xf0, offset 0x4ee + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbc}, + // Block 0xf1, offset 0x4f0 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0034, lo: 0x9e, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa3}, + // Block 0xf2, offset 0x4f5 + {value: 0x0030, lo: 0xa5, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xa9}, + {value: 0x0030, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbf}, + // Block 0xf3, offset 0x4fa + {value: 0x0034, lo: 0x80, hi: 0x82}, + {value: 0x0024, lo: 0x85, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8b}, + {value: 0x0024, lo: 0xaa, hi: 0xad}, + // Block 0xf4, offset 0x4fe + {value: 0x0024, lo: 0x82, hi: 0x84}, + // Block 0xf5, offset 0x4ff + {value: 0x0013, lo: 0x80, hi: 0x99}, + {value: 0x0012, lo: 0x9a, hi: 0xb3}, + {value: 0x0013, lo: 0xb4, hi: 0xbf}, + // Block 0xf6, offset 0x502 + {value: 0x0013, lo: 0x80, hi: 0x8d}, + {value: 0x0012, lo: 0x8e, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0xa7}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0xf7, offset 0x506 + {value: 0x0013, lo: 0x80, hi: 0x81}, + {value: 0x0012, lo: 0x82, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0x9c}, + {value: 0x0013, lo: 0x9e, hi: 0x9f}, + {value: 0x0013, lo: 0xa2, hi: 0xa2}, + {value: 0x0013, lo: 0xa5, hi: 0xa6}, + {value: 0x0013, lo: 0xa9, hi: 0xac}, + {value: 0x0013, lo: 0xae, hi: 0xb5}, + {value: 0x0012, lo: 0xb6, hi: 0xb9}, + {value: 0x0012, lo: 0xbb, hi: 0xbb}, + {value: 0x0012, lo: 0xbd, hi: 0xbf}, + // Block 0xf8, offset 0x511 + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0012, lo: 0x85, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0xf9, offset 0x515 + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0013, lo: 0x84, hi: 0x85}, + {value: 0x0013, lo: 0x87, hi: 0x8a}, + {value: 0x0013, lo: 0x8d, hi: 0x94}, + {value: 0x0013, lo: 0x96, hi: 0x9c}, + {value: 0x0012, lo: 0x9e, hi: 0xb7}, + {value: 0x0013, lo: 0xb8, hi: 0xb9}, + {value: 0x0013, lo: 0xbb, hi: 0xbe}, + // Block 0xfa, offset 0x51d + {value: 0x0013, lo: 0x80, hi: 0x84}, + {value: 0x0013, lo: 0x86, hi: 0x86}, + {value: 0x0013, lo: 0x8a, hi: 0x90}, + {value: 0x0012, lo: 0x92, hi: 0xab}, + {value: 0x0013, lo: 0xac, hi: 0xbf}, + // Block 0xfb, offset 0x522 + {value: 0x0013, lo: 0x80, hi: 0x85}, + {value: 0x0012, lo: 0x86, hi: 0x9f}, + {value: 0x0013, lo: 0xa0, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbf}, + // Block 0xfc, offset 0x526 + {value: 0x0012, lo: 0x80, hi: 0x93}, + {value: 0x0013, lo: 0x94, hi: 0xad}, + {value: 0x0012, lo: 0xae, hi: 0xbf}, + // Block 0xfd, offset 0x529 + {value: 0x0012, lo: 0x80, hi: 0x87}, + {value: 0x0013, lo: 0x88, hi: 0xa1}, + {value: 0x0012, lo: 0xa2, hi: 0xbb}, + {value: 0x0013, lo: 0xbc, hi: 0xbf}, + // Block 0xfe, offset 0x52d + {value: 0x0013, lo: 0x80, hi: 0x95}, + {value: 0x0012, lo: 0x96, hi: 0xaf}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0xff, offset 0x530 + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0012, lo: 0x8a, hi: 0xa5}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0x100, offset 0x533 + {value: 0x0013, lo: 0x80, hi: 0x80}, + {value: 0x0012, lo: 0x82, hi: 0x9a}, + {value: 0x0012, lo: 0x9c, hi: 0xa1}, + {value: 0x0013, lo: 0xa2, hi: 0xba}, + {value: 0x0012, lo: 0xbc, hi: 0xbf}, + // Block 0x101, offset 0x538 + {value: 0x0012, lo: 0x80, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0xb4}, + {value: 0x0012, lo: 0xb6, hi: 0xbf}, + // Block 0x102, offset 0x53c + {value: 0x0012, lo: 0x80, hi: 0x8e}, + {value: 0x0012, lo: 0x90, hi: 0x95}, + {value: 0x0013, lo: 0x96, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x103, offset 0x540 + {value: 0x0012, lo: 0x80, hi: 0x88}, + {value: 0x0012, lo: 0x8a, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0x104, offset 0x544 + {value: 0x0012, lo: 0x80, hi: 0x82}, + {value: 0x0012, lo: 0x84, hi: 0x89}, + {value: 0x0017, lo: 0x8a, hi: 0x8b}, + {value: 0x0010, lo: 0x8e, hi: 0xbf}, + // Block 0x105, offset 0x548 + {value: 0x0014, lo: 0x80, hi: 0xb6}, + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x106, offset 0x54a + {value: 0x0014, lo: 0x80, hi: 0xac}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x107, offset 0x54c + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x9b, hi: 0x9f}, + {value: 0x0014, lo: 0xa1, hi: 0xaf}, + // Block 0x108, offset 0x54f + {value: 0x0024, lo: 0x80, hi: 0x86}, + {value: 0x0024, lo: 0x88, hi: 0x98}, + {value: 0x0024, lo: 0x9b, hi: 0xa1}, + {value: 0x0024, lo: 0xa3, hi: 0xa4}, + {value: 0x0024, lo: 0xa6, hi: 0xaa}, + // Block 0x109, offset 0x554 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0034, lo: 0x90, hi: 0x96}, + // Block 0x10a, offset 0x556 + {value: 0xb552, lo: 0x80, hi: 0x81}, + {value: 0xb852, lo: 0x82, hi: 0x83}, + {value: 0x0024, lo: 0x84, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x10b, offset 0x55b + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x9f}, + {value: 0x0010, lo: 0xa1, hi: 0xa2}, + {value: 0x0010, lo: 0xa4, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb7}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + // Block 0x10c, offset 0x564 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x9b}, + {value: 0x0010, lo: 0xa1, hi: 0xa3}, + {value: 0x0010, lo: 0xa5, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xbb}, + // Block 0x10d, offset 0x569 + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x10e, offset 0x56a + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x10f, offset 0x56d + {value: 0x0013, lo: 0x80, hi: 0x89}, + // Block 0x110, offset 0x56e + {value: 0x0004, lo: 0xbb, hi: 0xbf}, + // Block 0x111, offset 0x56f + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0014, lo: 0xa0, hi: 0xbf}, + // Block 0x112, offset 0x571 + {value: 0x0014, lo: 0x80, hi: 0xbf}, + // Block 0x113, offset 0x572 + {value: 0x0014, lo: 0x80, hi: 0xaf}, +} + +// Total table size 14177 bytes (13KiB); checksum: F17D40E8 diff --git a/vendor/golang.org/x/text/cases/tables11.0.0.go b/vendor/golang.org/x/text/cases/tables11.0.0.go new file mode 100644 index 000000000000..ce00ce37250f --- /dev/null +++ b/vendor/golang.org/x/text/cases/tables11.0.0.go @@ -0,0 +1,2316 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +//go:build go1.13 && !go1.14 + +package cases + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "11.0.0" + +var xorData string = "" + // Size: 188 bytes + "\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" + + "\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" + + "\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" + + "\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" + + "\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" + + "\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" + + "\x0b!\x10\x00\x0b!0\x001\x00\x00\x0b(\x04\x00\x03\x04\x1e\x00\x03\x0a" + + "\x00\x02:\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<\x00\x01&" + + "\x00\x01*\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01\x1e\x00" + + "\x01\x22" + +var exceptions string = "" + // Size: 2436 bytes + "\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" + + "\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" + + "\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" + + "\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" + + "\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" + + "\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ιΙΙ\x166ΐ" + + "Ϊ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12φΦΦ\x12" + + "\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x10\x1bᲐა\x10\x1bᲑბ" + + "\x10\x1bᲒგ\x10\x1bᲓდ\x10\x1bᲔე\x10\x1bᲕვ\x10\x1bᲖზ\x10\x1bᲗთ\x10\x1bᲘი" + + "\x10\x1bᲙკ\x10\x1bᲚლ\x10\x1bᲛმ\x10\x1bᲜნ\x10\x1bᲝო\x10\x1bᲞპ\x10\x1bᲟჟ" + + "\x10\x1bᲠრ\x10\x1bᲡს\x10\x1bᲢტ\x10\x1bᲣუ\x10\x1bᲤფ\x10\x1bᲥქ\x10\x1bᲦღ" + + "\x10\x1bᲧყ\x10\x1bᲨშ\x10\x1bᲩჩ\x10\x1bᲪც\x10\x1bᲫძ\x10\x1bᲬწ\x10\x1bᲭჭ" + + "\x10\x1bᲮხ\x10\x1bᲯჯ\x10\x1bᲰჰ\x10\x1bᲱჱ\x10\x1bᲲჲ\x10\x1bᲳჳ\x10\x1bᲴჴ" + + "\x10\x1bᲵჵ\x10\x1bᲶჶ\x10\x1bᲷჷ\x10\x1bᲸჸ\x10\x1bᲹჹ\x10\x1bᲺჺ\x10\x1bᲽჽ" + + "\x10\x1bᲾჾ\x10\x1bᲿჿ\x12\x12вВВ\x12\x12дДД\x12\x12оОО\x12\x12сСС\x12\x12" + + "тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13\x1bꙋꙊꙊ\x13\x1bẖH̱H̱\x13\x1bẗ" + + "T̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1baʾAʾAʾ\x13\x1bṡṠṠ\x12\x10ssß\x14" + + "$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ\x15+ἁιἉΙᾉ" + + "\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ\x15\x1dἀιᾀἈ" + + "Ι\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ\x15\x1dἄιᾄἌΙ\x15\x1dἅιᾅἍΙ\x15" + + "\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ\x15+ἢιἪΙᾚ\x15+ἣιἫΙᾛ\x15+ἤιἬΙᾜ" + + "\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨΙ\x15\x1dἡιᾑἩΙ\x15\x1dἢιᾒἪΙ" + + "\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15\x1dἦιᾖἮΙ\x15\x1dἧιᾗἯΙ\x15+ὠι" + + "ὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ\x15+ὥιὭΙᾭ\x15+ὦιὮΙᾮ\x15+ὧι" + + "ὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ\x15\x1dὣιᾣὫΙ\x15\x1dὤιᾤὬΙ" + + "\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰιᾺΙᾺͅ\x14#αιΑΙᾼ\x14$άιΆΙΆͅ" + + "\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x12ιΙΙ\x15-ὴιῊΙῊͅ\x14#ηιΗΙῌ" + + "\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ\x166ῒΪ̀Ϊ̀\x166ΐΙ" + + "̈́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ̀\x166ΰΫ́Ϋ́\x14$ῤΡ̓Ρ̓" + + "\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ\x14$ῶΩ͂Ω͂\x16" + + "6ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12\x10ɫɫ\x12\x10ɽ" + + "ɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12\x10ɒɒ\x12\x10ȿȿ" + + "\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12\x10ɬɬ\x12\x10ɪɪ" + + "\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x12ffFFFf\x12\x12fiFIFi\x12\x12flFLFl" + + "\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12stSTSt\x12\x12stSTSt\x14$մնՄՆՄ" + + "ն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄխ" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// caseTrie. Total size: 12250 bytes (11.96 KiB). Checksum: 53ff6cb7321675e1. +type caseTrie struct{} + +func newCaseTrie(i int) *caseTrie { + return &caseTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *caseTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 20: + return uint16(caseValues[n<<6+uint32(b)]) + default: + n -= 20 + return uint16(sparse.lookup(n, b)) + } +} + +// caseValues: 22 blocks, 1408 entries, 2816 bytes +// The third block is the zero block. +var caseValues = [1408]uint16{ + // Block 0x0, offset 0x0 + 0x27: 0x0054, + 0x2e: 0x0054, + 0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010, + 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054, + // Block 0x1, offset 0x40 + 0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013, + 0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013, + 0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013, + 0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013, + 0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013, + 0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012, + 0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012, + 0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012, + 0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012, + 0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112, + 0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713, + 0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313, + 0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653, + 0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53, + 0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112, + 0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853, + 0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13, + 0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313, + 0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010, + 0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452, + // Block 0x4, offset 0x100 + 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359, + 0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619, + 0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313, + 0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13, + 0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452, + 0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112, + 0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112, + 0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112, + 0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112, + 0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112, + 0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112, + // Block 0x5, offset 0x140 + 0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53, + 0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112, + 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a, + 0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152, + 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012, + 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052, + 0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652, + 0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52, + 0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252, + 0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012, + 0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012, + // Block 0x6, offset 0x180 + 0x180: 0x3552, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012, + 0x186: 0x0012, 0x187: 0x110a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52, + 0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012, + 0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012, + 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x118a, + 0x19e: 0x120a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012, + 0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012, + 0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012, + 0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015, + 0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014, + 0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x128d, + 0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024, + 0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024, + 0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024, + 0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034, + 0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024, + 0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024, + 0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024, + 0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004, + 0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52, + 0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353, + // Block 0x8, offset 0x200 + 0x204: 0x0004, 0x205: 0x0004, + 0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513, + 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x130a, 0x211: 0x2013, + 0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013, + 0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013, + 0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53, + 0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53, + 0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512, + 0x230: 0x144a, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012, + 0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012, + 0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012, + // Block 0x9, offset 0x240 + 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x158a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52, + 0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52, + 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x160a, 0x251: 0x168a, + 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x170a, 0x256: 0x178a, 0x257: 0x1812, + 0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112, + 0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112, + 0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112, + 0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112, + 0x270: 0x180a, 0x271: 0x188a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x190a, + 0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112, + 0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053, + // Block 0xa, offset 0x280 + 0x280: 0x6852, 0x281: 0x6852, 0x282: 0x6852, 0x283: 0x6852, 0x284: 0x6852, 0x285: 0x6852, + 0x286: 0x6852, 0x287: 0x198a, 0x288: 0x0012, + 0x291: 0x0034, + 0x292: 0x0024, 0x293: 0x0024, 0x294: 0x0024, 0x295: 0x0024, 0x296: 0x0034, 0x297: 0x0024, + 0x298: 0x0024, 0x299: 0x0024, 0x29a: 0x0034, 0x29b: 0x0034, 0x29c: 0x0024, 0x29d: 0x0024, + 0x29e: 0x0024, 0x29f: 0x0024, 0x2a0: 0x0024, 0x2a1: 0x0024, 0x2a2: 0x0034, 0x2a3: 0x0034, + 0x2a4: 0x0034, 0x2a5: 0x0034, 0x2a6: 0x0034, 0x2a7: 0x0034, 0x2a8: 0x0024, 0x2a9: 0x0024, + 0x2aa: 0x0034, 0x2ab: 0x0024, 0x2ac: 0x0024, 0x2ad: 0x0034, 0x2ae: 0x0034, 0x2af: 0x0024, + 0x2b0: 0x0034, 0x2b1: 0x0034, 0x2b2: 0x0034, 0x2b3: 0x0034, 0x2b4: 0x0034, 0x2b5: 0x0034, + 0x2b6: 0x0034, 0x2b7: 0x0034, 0x2b8: 0x0034, 0x2b9: 0x0034, 0x2ba: 0x0034, 0x2bb: 0x0034, + 0x2bc: 0x0034, 0x2bd: 0x0034, 0x2bf: 0x0034, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x7053, 0x2c1: 0x7053, 0x2c2: 0x7053, 0x2c3: 0x7053, 0x2c4: 0x7053, 0x2c5: 0x7053, + 0x2c7: 0x7053, + 0x2cd: 0x7053, 0x2d0: 0x1a6a, 0x2d1: 0x1aea, + 0x2d2: 0x1b6a, 0x2d3: 0x1bea, 0x2d4: 0x1c6a, 0x2d5: 0x1cea, 0x2d6: 0x1d6a, 0x2d7: 0x1dea, + 0x2d8: 0x1e6a, 0x2d9: 0x1eea, 0x2da: 0x1f6a, 0x2db: 0x1fea, 0x2dc: 0x206a, 0x2dd: 0x20ea, + 0x2de: 0x216a, 0x2df: 0x21ea, 0x2e0: 0x226a, 0x2e1: 0x22ea, 0x2e2: 0x236a, 0x2e3: 0x23ea, + 0x2e4: 0x246a, 0x2e5: 0x24ea, 0x2e6: 0x256a, 0x2e7: 0x25ea, 0x2e8: 0x266a, 0x2e9: 0x26ea, + 0x2ea: 0x276a, 0x2eb: 0x27ea, 0x2ec: 0x286a, 0x2ed: 0x28ea, 0x2ee: 0x296a, 0x2ef: 0x29ea, + 0x2f0: 0x2a6a, 0x2f1: 0x2aea, 0x2f2: 0x2b6a, 0x2f3: 0x2bea, 0x2f4: 0x2c6a, 0x2f5: 0x2cea, + 0x2f6: 0x2d6a, 0x2f7: 0x2dea, 0x2f8: 0x2e6a, 0x2f9: 0x2eea, 0x2fa: 0x2f6a, + 0x2fc: 0x0014, 0x2fd: 0x2fea, 0x2fe: 0x306a, 0x2ff: 0x30ea, + // Block 0xc, offset 0x300 + 0x300: 0x0812, 0x301: 0x0812, 0x302: 0x0812, 0x303: 0x0812, 0x304: 0x0812, 0x305: 0x0812, + 0x308: 0x0813, 0x309: 0x0813, 0x30a: 0x0813, 0x30b: 0x0813, + 0x30c: 0x0813, 0x30d: 0x0813, 0x310: 0x3a9a, 0x311: 0x0812, + 0x312: 0x3b7a, 0x313: 0x0812, 0x314: 0x3cba, 0x315: 0x0812, 0x316: 0x3dfa, 0x317: 0x0812, + 0x319: 0x0813, 0x31b: 0x0813, 0x31d: 0x0813, + 0x31f: 0x0813, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x0812, 0x323: 0x0812, + 0x324: 0x0812, 0x325: 0x0812, 0x326: 0x0812, 0x327: 0x0812, 0x328: 0x0813, 0x329: 0x0813, + 0x32a: 0x0813, 0x32b: 0x0813, 0x32c: 0x0813, 0x32d: 0x0813, 0x32e: 0x0813, 0x32f: 0x0813, + 0x330: 0x8e52, 0x331: 0x8e52, 0x332: 0x9152, 0x333: 0x9152, 0x334: 0x9452, 0x335: 0x9452, + 0x336: 0x9752, 0x337: 0x9752, 0x338: 0x9a52, 0x339: 0x9a52, 0x33a: 0x9d52, 0x33b: 0x9d52, + 0x33c: 0x4d52, 0x33d: 0x4d52, + // Block 0xd, offset 0x340 + 0x340: 0x3f3a, 0x341: 0x402a, 0x342: 0x411a, 0x343: 0x420a, 0x344: 0x42fa, 0x345: 0x43ea, + 0x346: 0x44da, 0x347: 0x45ca, 0x348: 0x46b9, 0x349: 0x47a9, 0x34a: 0x4899, 0x34b: 0x4989, + 0x34c: 0x4a79, 0x34d: 0x4b69, 0x34e: 0x4c59, 0x34f: 0x4d49, 0x350: 0x4e3a, 0x351: 0x4f2a, + 0x352: 0x501a, 0x353: 0x510a, 0x354: 0x51fa, 0x355: 0x52ea, 0x356: 0x53da, 0x357: 0x54ca, + 0x358: 0x55b9, 0x359: 0x56a9, 0x35a: 0x5799, 0x35b: 0x5889, 0x35c: 0x5979, 0x35d: 0x5a69, + 0x35e: 0x5b59, 0x35f: 0x5c49, 0x360: 0x5d3a, 0x361: 0x5e2a, 0x362: 0x5f1a, 0x363: 0x600a, + 0x364: 0x60fa, 0x365: 0x61ea, 0x366: 0x62da, 0x367: 0x63ca, 0x368: 0x64b9, 0x369: 0x65a9, + 0x36a: 0x6699, 0x36b: 0x6789, 0x36c: 0x6879, 0x36d: 0x6969, 0x36e: 0x6a59, 0x36f: 0x6b49, + 0x370: 0x0812, 0x371: 0x0812, 0x372: 0x6c3a, 0x373: 0x6d4a, 0x374: 0x6e1a, + 0x376: 0x6efa, 0x377: 0x6fda, 0x378: 0x0813, 0x379: 0x0813, 0x37a: 0x8e53, 0x37b: 0x8e53, + 0x37c: 0x7119, 0x37d: 0x0004, 0x37e: 0x71ea, 0x37f: 0x0004, + // Block 0xe, offset 0x380 + 0x380: 0x0004, 0x381: 0x0004, 0x382: 0x726a, 0x383: 0x737a, 0x384: 0x744a, + 0x386: 0x752a, 0x387: 0x760a, 0x388: 0x9153, 0x389: 0x9153, 0x38a: 0x9453, 0x38b: 0x9453, + 0x38c: 0x7749, 0x38d: 0x0004, 0x38e: 0x0004, 0x38f: 0x0004, 0x390: 0x0812, 0x391: 0x0812, + 0x392: 0x781a, 0x393: 0x795a, 0x396: 0x7a9a, 0x397: 0x7b7a, + 0x398: 0x0813, 0x399: 0x0813, 0x39a: 0x9753, 0x39b: 0x9753, 0x39d: 0x0004, + 0x39e: 0x0004, 0x39f: 0x0004, 0x3a0: 0x0812, 0x3a1: 0x0812, 0x3a2: 0x7cba, 0x3a3: 0x7dfa, + 0x3a4: 0x7f3a, 0x3a5: 0x0912, 0x3a6: 0x801a, 0x3a7: 0x80fa, 0x3a8: 0x0813, 0x3a9: 0x0813, + 0x3aa: 0x9d53, 0x3ab: 0x9d53, 0x3ac: 0x0913, 0x3ad: 0x0004, 0x3ae: 0x0004, 0x3af: 0x0004, + 0x3b2: 0x823a, 0x3b3: 0x834a, 0x3b4: 0x841a, + 0x3b6: 0x84fa, 0x3b7: 0x85da, 0x3b8: 0x9a53, 0x3b9: 0x9a53, 0x3ba: 0x4d53, 0x3bb: 0x4d53, + 0x3bc: 0x8719, 0x3bd: 0x0004, 0x3be: 0x0004, + // Block 0xf, offset 0x3c0 + 0x3c2: 0x0013, + 0x3c7: 0x0013, 0x3ca: 0x0012, 0x3cb: 0x0013, + 0x3cc: 0x0013, 0x3cd: 0x0013, 0x3ce: 0x0012, 0x3cf: 0x0012, 0x3d0: 0x0013, 0x3d1: 0x0013, + 0x3d2: 0x0013, 0x3d3: 0x0012, 0x3d5: 0x0013, + 0x3d9: 0x0013, 0x3da: 0x0013, 0x3db: 0x0013, 0x3dc: 0x0013, 0x3dd: 0x0013, + 0x3e4: 0x0013, 0x3e6: 0x87eb, 0x3e8: 0x0013, + 0x3ea: 0x884b, 0x3eb: 0x888b, 0x3ec: 0x0013, 0x3ed: 0x0013, 0x3ef: 0x0012, + 0x3f0: 0x0013, 0x3f1: 0x0013, 0x3f2: 0xa053, 0x3f3: 0x0013, 0x3f4: 0x0012, 0x3f5: 0x0010, + 0x3f6: 0x0010, 0x3f7: 0x0010, 0x3f8: 0x0010, 0x3f9: 0x0012, + 0x3fc: 0x0012, 0x3fd: 0x0012, 0x3fe: 0x0013, 0x3ff: 0x0013, + // Block 0x10, offset 0x400 + 0x400: 0x1a13, 0x401: 0x1a13, 0x402: 0x1e13, 0x403: 0x1e13, 0x404: 0x1a13, 0x405: 0x1a13, + 0x406: 0x2613, 0x407: 0x2613, 0x408: 0x2a13, 0x409: 0x2a13, 0x40a: 0x2e13, 0x40b: 0x2e13, + 0x40c: 0x2a13, 0x40d: 0x2a13, 0x40e: 0x2613, 0x40f: 0x2613, 0x410: 0xa352, 0x411: 0xa352, + 0x412: 0xa652, 0x413: 0xa652, 0x414: 0xa952, 0x415: 0xa952, 0x416: 0xa652, 0x417: 0xa652, + 0x418: 0xa352, 0x419: 0xa352, 0x41a: 0x1a12, 0x41b: 0x1a12, 0x41c: 0x1e12, 0x41d: 0x1e12, + 0x41e: 0x1a12, 0x41f: 0x1a12, 0x420: 0x2612, 0x421: 0x2612, 0x422: 0x2a12, 0x423: 0x2a12, + 0x424: 0x2e12, 0x425: 0x2e12, 0x426: 0x2a12, 0x427: 0x2a12, 0x428: 0x2612, 0x429: 0x2612, + // Block 0x11, offset 0x440 + 0x440: 0x6552, 0x441: 0x6552, 0x442: 0x6552, 0x443: 0x6552, 0x444: 0x6552, 0x445: 0x6552, + 0x446: 0x6552, 0x447: 0x6552, 0x448: 0x6552, 0x449: 0x6552, 0x44a: 0x6552, 0x44b: 0x6552, + 0x44c: 0x6552, 0x44d: 0x6552, 0x44e: 0x6552, 0x44f: 0x6552, 0x450: 0xac52, 0x451: 0xac52, + 0x452: 0xac52, 0x453: 0xac52, 0x454: 0xac52, 0x455: 0xac52, 0x456: 0xac52, 0x457: 0xac52, + 0x458: 0xac52, 0x459: 0xac52, 0x45a: 0xac52, 0x45b: 0xac52, 0x45c: 0xac52, 0x45d: 0xac52, + 0x45e: 0xac52, 0x460: 0x0113, 0x461: 0x0112, 0x462: 0x88eb, 0x463: 0x8b53, + 0x464: 0x894b, 0x465: 0x89aa, 0x466: 0x8a0a, 0x467: 0x0f13, 0x468: 0x0f12, 0x469: 0x0313, + 0x46a: 0x0312, 0x46b: 0x0713, 0x46c: 0x0712, 0x46d: 0x8a6b, 0x46e: 0x8acb, 0x46f: 0x8b2b, + 0x470: 0x8b8b, 0x471: 0x0012, 0x472: 0x0113, 0x473: 0x0112, 0x474: 0x0012, 0x475: 0x0313, + 0x476: 0x0312, 0x477: 0x0012, 0x478: 0x0012, 0x479: 0x0012, 0x47a: 0x0012, 0x47b: 0x0012, + 0x47c: 0x0015, 0x47d: 0x0015, 0x47e: 0x8beb, 0x47f: 0x8c4b, + // Block 0x12, offset 0x480 + 0x480: 0x0113, 0x481: 0x0112, 0x482: 0x0113, 0x483: 0x0112, 0x484: 0x0113, 0x485: 0x0112, + 0x486: 0x0113, 0x487: 0x0112, 0x488: 0x0014, 0x489: 0x0014, 0x48a: 0x0014, 0x48b: 0x0713, + 0x48c: 0x0712, 0x48d: 0x8cab, 0x48e: 0x0012, 0x48f: 0x0010, 0x490: 0x0113, 0x491: 0x0112, + 0x492: 0x0113, 0x493: 0x0112, 0x494: 0x0012, 0x495: 0x0012, 0x496: 0x0113, 0x497: 0x0112, + 0x498: 0x0113, 0x499: 0x0112, 0x49a: 0x0113, 0x49b: 0x0112, 0x49c: 0x0113, 0x49d: 0x0112, + 0x49e: 0x0113, 0x49f: 0x0112, 0x4a0: 0x0113, 0x4a1: 0x0112, 0x4a2: 0x0113, 0x4a3: 0x0112, + 0x4a4: 0x0113, 0x4a5: 0x0112, 0x4a6: 0x0113, 0x4a7: 0x0112, 0x4a8: 0x0113, 0x4a9: 0x0112, + 0x4aa: 0x8d0b, 0x4ab: 0x8d6b, 0x4ac: 0x8dcb, 0x4ad: 0x8e2b, 0x4ae: 0x8e8b, 0x4af: 0x0012, + 0x4b0: 0x8eeb, 0x4b1: 0x8f4b, 0x4b2: 0x8fab, 0x4b3: 0xaf53, 0x4b4: 0x0113, 0x4b5: 0x0112, + 0x4b6: 0x0113, 0x4b7: 0x0112, 0x4b8: 0x0113, 0x4b9: 0x0112, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x900a, 0x4c1: 0x908a, 0x4c2: 0x910a, 0x4c3: 0x918a, 0x4c4: 0x923a, 0x4c5: 0x92ea, + 0x4c6: 0x936a, + 0x4d3: 0x93ea, 0x4d4: 0x94ca, 0x4d5: 0x95aa, 0x4d6: 0x968a, 0x4d7: 0x976a, + 0x4dd: 0x0010, + 0x4de: 0x0034, 0x4df: 0x0010, 0x4e0: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, 0x4e3: 0x0010, + 0x4e4: 0x0010, 0x4e5: 0x0010, 0x4e6: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, + 0x4ea: 0x0010, 0x4eb: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010, + 0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f3: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010, + 0x4f6: 0x0010, 0x4f8: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010, + 0x4fc: 0x0010, 0x4fe: 0x0010, + // Block 0x14, offset 0x500 + 0x500: 0x2213, 0x501: 0x2213, 0x502: 0x2613, 0x503: 0x2613, 0x504: 0x2213, 0x505: 0x2213, + 0x506: 0x2e13, 0x507: 0x2e13, 0x508: 0x2213, 0x509: 0x2213, 0x50a: 0x2613, 0x50b: 0x2613, + 0x50c: 0x2213, 0x50d: 0x2213, 0x50e: 0x3e13, 0x50f: 0x3e13, 0x510: 0x2213, 0x511: 0x2213, + 0x512: 0x2613, 0x513: 0x2613, 0x514: 0x2213, 0x515: 0x2213, 0x516: 0x2e13, 0x517: 0x2e13, + 0x518: 0x2213, 0x519: 0x2213, 0x51a: 0x2613, 0x51b: 0x2613, 0x51c: 0x2213, 0x51d: 0x2213, + 0x51e: 0xb853, 0x51f: 0xb853, 0x520: 0xbb53, 0x521: 0xbb53, 0x522: 0x2212, 0x523: 0x2212, + 0x524: 0x2612, 0x525: 0x2612, 0x526: 0x2212, 0x527: 0x2212, 0x528: 0x2e12, 0x529: 0x2e12, + 0x52a: 0x2212, 0x52b: 0x2212, 0x52c: 0x2612, 0x52d: 0x2612, 0x52e: 0x2212, 0x52f: 0x2212, + 0x530: 0x3e12, 0x531: 0x3e12, 0x532: 0x2212, 0x533: 0x2212, 0x534: 0x2612, 0x535: 0x2612, + 0x536: 0x2212, 0x537: 0x2212, 0x538: 0x2e12, 0x539: 0x2e12, 0x53a: 0x2212, 0x53b: 0x2212, + 0x53c: 0x2612, 0x53d: 0x2612, 0x53e: 0x2212, 0x53f: 0x2212, + // Block 0x15, offset 0x540 + 0x542: 0x0010, + 0x547: 0x0010, 0x549: 0x0010, 0x54b: 0x0010, + 0x54d: 0x0010, 0x54e: 0x0010, 0x54f: 0x0010, 0x551: 0x0010, + 0x552: 0x0010, 0x554: 0x0010, 0x557: 0x0010, + 0x559: 0x0010, 0x55b: 0x0010, 0x55d: 0x0010, + 0x55f: 0x0010, 0x561: 0x0010, 0x562: 0x0010, + 0x564: 0x0010, 0x567: 0x0010, 0x568: 0x0010, 0x569: 0x0010, + 0x56a: 0x0010, 0x56c: 0x0010, 0x56d: 0x0010, 0x56e: 0x0010, 0x56f: 0x0010, + 0x570: 0x0010, 0x571: 0x0010, 0x572: 0x0010, 0x574: 0x0010, 0x575: 0x0010, + 0x576: 0x0010, 0x577: 0x0010, 0x579: 0x0010, 0x57a: 0x0010, 0x57b: 0x0010, + 0x57c: 0x0010, 0x57e: 0x0010, +} + +// caseIndex: 25 blocks, 1600 entries, 3200 bytes +// Block 0 is the zero block. +var caseIndex = [1600]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x14, 0xc3: 0x15, 0xc4: 0x16, 0xc5: 0x17, 0xc6: 0x01, 0xc7: 0x02, + 0xc8: 0x18, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x19, 0xcc: 0x1a, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07, + 0xd0: 0x1b, 0xd1: 0x1c, 0xd2: 0x1d, 0xd3: 0x1e, 0xd4: 0x1f, 0xd5: 0x20, 0xd6: 0x08, 0xd7: 0x21, + 0xd8: 0x22, 0xd9: 0x23, 0xda: 0x24, 0xdb: 0x25, 0xdc: 0x26, 0xdd: 0x27, 0xde: 0x28, 0xdf: 0x29, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09, + 0xf0: 0x14, 0xf3: 0x16, + // Block 0x4, offset 0x100 + 0x120: 0x2a, 0x121: 0x2b, 0x122: 0x2c, 0x123: 0x2d, 0x124: 0x2e, 0x125: 0x2f, 0x126: 0x30, 0x127: 0x31, + 0x128: 0x32, 0x129: 0x33, 0x12a: 0x34, 0x12b: 0x35, 0x12c: 0x36, 0x12d: 0x37, 0x12e: 0x38, 0x12f: 0x39, + 0x130: 0x3a, 0x131: 0x3b, 0x132: 0x3c, 0x133: 0x3d, 0x134: 0x3e, 0x135: 0x3f, 0x136: 0x40, 0x137: 0x41, + 0x138: 0x42, 0x139: 0x43, 0x13a: 0x44, 0x13b: 0x45, 0x13c: 0x46, 0x13d: 0x47, 0x13e: 0x48, 0x13f: 0x49, + // Block 0x5, offset 0x140 + 0x140: 0x4a, 0x141: 0x4b, 0x142: 0x4c, 0x143: 0x09, 0x144: 0x24, 0x145: 0x24, 0x146: 0x24, 0x147: 0x24, + 0x148: 0x24, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53, + 0x150: 0x54, 0x151: 0x24, 0x152: 0x24, 0x153: 0x24, 0x154: 0x24, 0x155: 0x24, 0x156: 0x24, 0x157: 0x24, + 0x158: 0x24, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b, + 0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62, + 0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69, + 0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71, + 0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x0a, 0x17e: 0x0b, 0x17f: 0x0c, + // Block 0x6, offset 0x180 + 0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0d, 0x185: 0x79, 0x186: 0x7a, + 0x192: 0x7b, 0x193: 0x0e, + 0x1b0: 0x7c, 0x1b1: 0x0f, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81, + 0x1b8: 0x82, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x24, 0x1c6: 0x87, + // Block 0x8, offset 0x200 + 0x200: 0x88, 0x201: 0x24, 0x202: 0x24, 0x203: 0x24, 0x204: 0x24, 0x205: 0x24, 0x206: 0x24, 0x207: 0x24, + 0x208: 0x24, 0x209: 0x24, 0x20a: 0x24, 0x20b: 0x24, 0x20c: 0x24, 0x20d: 0x24, 0x20e: 0x24, 0x20f: 0x24, + 0x210: 0x24, 0x211: 0x24, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x24, 0x215: 0x24, 0x216: 0x24, 0x217: 0x24, + 0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x10, 0x21f: 0x91, + 0x220: 0x92, 0x221: 0x93, 0x222: 0x24, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98, + 0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0, + 0x230: 0x24, 0x231: 0x24, 0x232: 0x24, 0x233: 0x24, 0x234: 0x24, 0x235: 0x24, 0x236: 0x24, 0x237: 0x24, + 0x238: 0x24, 0x239: 0x24, 0x23a: 0x24, 0x23b: 0x24, 0x23c: 0x24, 0x23d: 0x24, 0x23e: 0x24, 0x23f: 0x24, + // Block 0x9, offset 0x240 + 0x240: 0x24, 0x241: 0x24, 0x242: 0x24, 0x243: 0x24, 0x244: 0x24, 0x245: 0x24, 0x246: 0x24, 0x247: 0x24, + 0x248: 0x24, 0x249: 0x24, 0x24a: 0x24, 0x24b: 0x24, 0x24c: 0x24, 0x24d: 0x24, 0x24e: 0x24, 0x24f: 0x24, + 0x250: 0x24, 0x251: 0x24, 0x252: 0x24, 0x253: 0x24, 0x254: 0x24, 0x255: 0x24, 0x256: 0x24, 0x257: 0x24, + 0x258: 0x24, 0x259: 0x24, 0x25a: 0x24, 0x25b: 0x24, 0x25c: 0x24, 0x25d: 0x24, 0x25e: 0x24, 0x25f: 0x24, + 0x260: 0x24, 0x261: 0x24, 0x262: 0x24, 0x263: 0x24, 0x264: 0x24, 0x265: 0x24, 0x266: 0x24, 0x267: 0x24, + 0x268: 0x24, 0x269: 0x24, 0x26a: 0x24, 0x26b: 0x24, 0x26c: 0x24, 0x26d: 0x24, 0x26e: 0x24, 0x26f: 0x24, + 0x270: 0x24, 0x271: 0x24, 0x272: 0x24, 0x273: 0x24, 0x274: 0x24, 0x275: 0x24, 0x276: 0x24, 0x277: 0x24, + 0x278: 0x24, 0x279: 0x24, 0x27a: 0x24, 0x27b: 0x24, 0x27c: 0x24, 0x27d: 0x24, 0x27e: 0x24, 0x27f: 0x24, + // Block 0xa, offset 0x280 + 0x280: 0x24, 0x281: 0x24, 0x282: 0x24, 0x283: 0x24, 0x284: 0x24, 0x285: 0x24, 0x286: 0x24, 0x287: 0x24, + 0x288: 0x24, 0x289: 0x24, 0x28a: 0x24, 0x28b: 0x24, 0x28c: 0x24, 0x28d: 0x24, 0x28e: 0x24, 0x28f: 0x24, + 0x290: 0x24, 0x291: 0x24, 0x292: 0x24, 0x293: 0x24, 0x294: 0x24, 0x295: 0x24, 0x296: 0x24, 0x297: 0x24, + 0x298: 0x24, 0x299: 0x24, 0x29a: 0x24, 0x29b: 0x24, 0x29c: 0x24, 0x29d: 0x24, 0x29e: 0xa1, 0x29f: 0xa2, + // Block 0xb, offset 0x2c0 + 0x2ec: 0x11, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5, + 0x2f0: 0x24, 0x2f1: 0x24, 0x2f2: 0x24, 0x2f3: 0x24, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9, + 0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x24, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0, + // Block 0xc, offset 0x300 + 0x300: 0xb1, 0x301: 0xb2, 0x302: 0x24, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5, + 0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb, + 0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1, + 0x318: 0x24, 0x319: 0x24, 0x31a: 0x24, 0x31b: 0x24, 0x31c: 0xc2, 0x31d: 0xc3, + 0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9, + 0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf, + 0x330: 0x24, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2, 0x334: 0xd3, + 0x33c: 0xd4, 0x33d: 0xd5, + // Block 0xd, offset 0x340 + 0x340: 0xd6, 0x341: 0xd7, 0x342: 0xd8, 0x343: 0xd9, 0x344: 0xda, 0x345: 0xdb, 0x346: 0xdc, 0x347: 0xdd, + 0x348: 0xde, 0x34a: 0xdf, 0x34b: 0xe0, 0x34c: 0xe1, 0x34d: 0xe2, + 0x350: 0xe3, 0x351: 0xe4, 0x352: 0xe5, 0x353: 0xe6, 0x356: 0xe7, 0x357: 0xe8, + 0x358: 0xe9, 0x359: 0xea, 0x35a: 0xeb, 0x35b: 0xec, 0x35c: 0xed, + 0x360: 0xee, 0x362: 0xef, 0x363: 0xf0, + 0x368: 0xf1, 0x369: 0xf2, 0x36a: 0xf3, 0x36b: 0xf4, + 0x370: 0xf5, 0x371: 0xf6, 0x372: 0xf7, 0x374: 0xf8, 0x375: 0xf9, 0x376: 0xfa, + 0x37b: 0xfb, + // Block 0xe, offset 0x380 + 0x380: 0x24, 0x381: 0x24, 0x382: 0x24, 0x383: 0x24, 0x384: 0x24, 0x385: 0x24, 0x386: 0x24, 0x387: 0x24, + 0x388: 0x24, 0x389: 0x24, 0x38a: 0x24, 0x38b: 0x24, 0x38c: 0x24, 0x38d: 0x24, 0x38e: 0xfc, + 0x390: 0x24, 0x391: 0xfd, 0x392: 0x24, 0x393: 0x24, 0x394: 0x24, 0x395: 0xfe, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x24, 0x3c1: 0x24, 0x3c2: 0x24, 0x3c3: 0x24, 0x3c4: 0x24, 0x3c5: 0x24, 0x3c6: 0x24, 0x3c7: 0x24, + 0x3c8: 0x24, 0x3c9: 0x24, 0x3ca: 0x24, 0x3cb: 0x24, 0x3cc: 0x24, 0x3cd: 0x24, 0x3ce: 0x24, 0x3cf: 0x24, + 0x3d0: 0xfd, + // Block 0x10, offset 0x400 + 0x410: 0x24, 0x411: 0x24, 0x412: 0x24, 0x413: 0x24, 0x414: 0x24, 0x415: 0x24, 0x416: 0x24, 0x417: 0x24, + 0x418: 0x24, 0x419: 0xff, + // Block 0x11, offset 0x440 + 0x460: 0x24, 0x461: 0x24, 0x462: 0x24, 0x463: 0x24, 0x464: 0x24, 0x465: 0x24, 0x466: 0x24, 0x467: 0x24, + 0x468: 0xf4, 0x469: 0x100, 0x46b: 0x101, 0x46c: 0x102, 0x46d: 0x103, 0x46e: 0x104, + 0x479: 0x105, 0x47c: 0x24, 0x47d: 0x106, 0x47e: 0x107, 0x47f: 0x108, + // Block 0x12, offset 0x480 + 0x4b0: 0x24, 0x4b1: 0x109, 0x4b2: 0x10a, + // Block 0x13, offset 0x4c0 + 0x4c5: 0x10b, 0x4c6: 0x10c, + 0x4c9: 0x10d, + 0x4d0: 0x10e, 0x4d1: 0x10f, 0x4d2: 0x110, 0x4d3: 0x111, 0x4d4: 0x112, 0x4d5: 0x113, 0x4d6: 0x114, 0x4d7: 0x115, + 0x4d8: 0x116, 0x4d9: 0x117, 0x4da: 0x118, 0x4db: 0x119, 0x4dc: 0x11a, 0x4dd: 0x11b, 0x4de: 0x11c, 0x4df: 0x11d, + 0x4e8: 0x11e, 0x4e9: 0x11f, 0x4ea: 0x120, + // Block 0x14, offset 0x500 + 0x500: 0x121, + 0x520: 0x24, 0x521: 0x24, 0x522: 0x24, 0x523: 0x122, 0x524: 0x12, 0x525: 0x123, + 0x538: 0x124, 0x539: 0x13, 0x53a: 0x125, + // Block 0x15, offset 0x540 + 0x544: 0x126, 0x545: 0x127, 0x546: 0x128, + 0x54f: 0x129, + // Block 0x16, offset 0x580 + 0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f, + 0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x12a, 0x5c1: 0x12b, 0x5c4: 0x12b, 0x5c5: 0x12b, 0x5c6: 0x12b, 0x5c7: 0x12c, + // Block 0x18, offset 0x600 + 0x620: 0x15, +} + +// sparseOffsets: 282 entries, 564 bytes +var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x35, 0x38, 0x3c, 0x3f, 0x43, 0x4d, 0x4f, 0x57, 0x5e, 0x63, 0x71, 0x72, 0x80, 0x8f, 0x99, 0x9c, 0xa3, 0xab, 0xae, 0xb0, 0xbf, 0xc5, 0xd3, 0xde, 0xeb, 0xf6, 0x102, 0x10c, 0x118, 0x123, 0x12f, 0x13b, 0x143, 0x14c, 0x156, 0x161, 0x16d, 0x174, 0x17f, 0x184, 0x18c, 0x18f, 0x194, 0x198, 0x19c, 0x1a3, 0x1ac, 0x1b4, 0x1b5, 0x1be, 0x1c5, 0x1cd, 0x1d3, 0x1d8, 0x1dc, 0x1df, 0x1e1, 0x1e4, 0x1e9, 0x1ea, 0x1ec, 0x1ee, 0x1f0, 0x1f7, 0x1fc, 0x200, 0x209, 0x20c, 0x20f, 0x215, 0x216, 0x221, 0x222, 0x223, 0x228, 0x235, 0x23d, 0x245, 0x24e, 0x257, 0x260, 0x265, 0x268, 0x273, 0x280, 0x282, 0x289, 0x28b, 0x297, 0x298, 0x2a3, 0x2ab, 0x2b3, 0x2b9, 0x2ba, 0x2c8, 0x2cd, 0x2d0, 0x2d5, 0x2d9, 0x2df, 0x2e4, 0x2e7, 0x2ec, 0x2f1, 0x2f2, 0x2f8, 0x2fa, 0x2fb, 0x2fd, 0x2ff, 0x302, 0x303, 0x305, 0x308, 0x30e, 0x312, 0x314, 0x319, 0x320, 0x324, 0x32d, 0x32e, 0x337, 0x33b, 0x340, 0x348, 0x34e, 0x354, 0x35e, 0x363, 0x36c, 0x372, 0x379, 0x37d, 0x385, 0x387, 0x389, 0x38c, 0x38e, 0x390, 0x391, 0x392, 0x394, 0x396, 0x39c, 0x3a1, 0x3a3, 0x3a9, 0x3ac, 0x3ae, 0x3b4, 0x3b9, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3c0, 0x3c2, 0x3c4, 0x3c7, 0x3c9, 0x3cc, 0x3d4, 0x3d7, 0x3db, 0x3e3, 0x3e5, 0x3e6, 0x3e7, 0x3e9, 0x3ef, 0x3f1, 0x3f2, 0x3f4, 0x3f6, 0x3f8, 0x405, 0x406, 0x407, 0x40b, 0x40d, 0x40e, 0x40f, 0x410, 0x411, 0x414, 0x417, 0x41d, 0x421, 0x425, 0x42b, 0x42e, 0x435, 0x439, 0x43d, 0x444, 0x44d, 0x453, 0x459, 0x463, 0x46d, 0x46f, 0x477, 0x47d, 0x483, 0x489, 0x48c, 0x492, 0x495, 0x49d, 0x49e, 0x4a5, 0x4a9, 0x4aa, 0x4ad, 0x4b5, 0x4bb, 0x4c2, 0x4c3, 0x4c9, 0x4cc, 0x4d4, 0x4db, 0x4e5, 0x4ed, 0x4f0, 0x4f1, 0x4f2, 0x4f3, 0x4f4, 0x4f6, 0x4f8, 0x4fa, 0x4fe, 0x4ff, 0x501, 0x503, 0x504, 0x505, 0x507, 0x50c, 0x511, 0x515, 0x516, 0x519, 0x51d, 0x528, 0x52c, 0x534, 0x539, 0x53d, 0x540, 0x544, 0x547, 0x54a, 0x54f, 0x553, 0x557, 0x55b, 0x55f, 0x561, 0x563, 0x566, 0x56b, 0x56d, 0x572, 0x57b, 0x580, 0x581, 0x584, 0x585, 0x586, 0x588, 0x589, 0x58a} + +// sparseValues: 1418 entries, 5672 bytes +var sparseValues = [1418]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0004, lo: 0xa8, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xaa}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0004, lo: 0xaf, hi: 0xaf}, + {value: 0x0004, lo: 0xb4, hi: 0xb4}, + {value: 0x001a, lo: 0xb5, hi: 0xb5}, + {value: 0x0054, lo: 0xb7, hi: 0xb7}, + {value: 0x0004, lo: 0xb8, hi: 0xb8}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + // Block 0x1, offset 0x9 + {value: 0x2013, lo: 0x80, hi: 0x96}, + {value: 0x2013, lo: 0x98, hi: 0x9e}, + {value: 0x009a, lo: 0x9f, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xb6}, + {value: 0x2012, lo: 0xb8, hi: 0xbe}, + {value: 0x0252, lo: 0xbf, hi: 0xbf}, + // Block 0x2, offset 0xf + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x011b, lo: 0xb0, hi: 0xb0}, + {value: 0x019a, lo: 0xb1, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb7}, + {value: 0x0012, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x0553, lo: 0xbf, hi: 0xbf}, + // Block 0x3, offset 0x18 + {value: 0x0552, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x01da, lo: 0x89, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xb7}, + {value: 0x0253, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x028a, lo: 0xbf, hi: 0xbf}, + // Block 0x4, offset 0x24 + {value: 0x0117, lo: 0x80, hi: 0x9f}, + {value: 0x2f53, lo: 0xa0, hi: 0xa0}, + {value: 0x0012, lo: 0xa1, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xb3}, + {value: 0x0012, lo: 0xb4, hi: 0xb9}, + {value: 0x090b, lo: 0xba, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x2953, lo: 0xbd, hi: 0xbd}, + {value: 0x098b, lo: 0xbe, hi: 0xbe}, + {value: 0x0a0a, lo: 0xbf, hi: 0xbf}, + // Block 0x5, offset 0x2e + {value: 0x0015, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x97}, + {value: 0x0004, lo: 0x98, hi: 0x9d}, + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0015, lo: 0xa0, hi: 0xa4}, + {value: 0x0004, lo: 0xa5, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xbf}, + // Block 0x6, offset 0x35 + {value: 0x0024, lo: 0x80, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbf}, + // Block 0x7, offset 0x38 + {value: 0x6553, lo: 0x80, hi: 0x8f}, + {value: 0x2013, lo: 0x90, hi: 0x9f}, + {value: 0x5f53, lo: 0xa0, hi: 0xaf}, + {value: 0x2012, lo: 0xb0, hi: 0xbf}, + // Block 0x8, offset 0x3c + {value: 0x5f52, lo: 0x80, hi: 0x8f}, + {value: 0x6552, lo: 0x90, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x9, offset 0x3f + {value: 0x0117, lo: 0x80, hi: 0x81}, + {value: 0x0024, lo: 0x83, hi: 0x87}, + {value: 0x0014, lo: 0x88, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xbf}, + // Block 0xa, offset 0x43 + {value: 0x0f13, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x0316, lo: 0x89, hi: 0x8a}, + {value: 0x0716, lo: 0x8b, hi: 0x8c}, + {value: 0x0316, lo: 0x8d, hi: 0x8e}, + {value: 0x0f12, lo: 0x8f, hi: 0x8f}, + {value: 0x0117, lo: 0x90, hi: 0xbf}, + // Block 0xb, offset 0x4d + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x6553, lo: 0xb1, hi: 0xbf}, + // Block 0xc, offset 0x4f + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6853, lo: 0x90, hi: 0x96}, + {value: 0x0014, lo: 0x99, hi: 0x99}, + {value: 0x0010, lo: 0x9b, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0012, lo: 0xa0, hi: 0xa0}, + {value: 0x6552, lo: 0xa1, hi: 0xaf}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0xd, offset 0x57 + {value: 0x0034, lo: 0x81, hi: 0x82}, + {value: 0x0024, lo: 0x84, hi: 0x84}, + {value: 0x0034, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0xaa}, + {value: 0x0010, lo: 0xaf, hi: 0xb3}, + {value: 0x0054, lo: 0xb4, hi: 0xb4}, + // Block 0xe, offset 0x5e + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0024, lo: 0x90, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0014, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xf, offset 0x63 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9c}, + {value: 0x0024, lo: 0x9d, hi: 0x9e}, + {value: 0x0034, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x10, offset 0x71 + {value: 0x0010, lo: 0x80, hi: 0xbf}, + // Block 0x11, offset 0x72 + {value: 0x0010, lo: 0x80, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0024, lo: 0x9f, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xaa, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x12, offset 0x80 + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0034, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0034, lo: 0xb1, hi: 0xb1}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbd}, + {value: 0x0034, lo: 0xbe, hi: 0xbe}, + {value: 0x0024, lo: 0xbf, hi: 0xbf}, + // Block 0x13, offset 0x8f + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0024, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x88}, + {value: 0x0024, lo: 0x89, hi: 0x8a}, + {value: 0x0010, lo: 0x8d, hi: 0xbf}, + // Block 0x14, offset 0x99 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x15, offset 0x9c + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xb1}, + {value: 0x0034, lo: 0xb2, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0x16, offset 0xa3 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x99}, + {value: 0x0014, lo: 0x9a, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0xa3}, + {value: 0x0014, lo: 0xa4, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xad}, + // Block 0x17, offset 0xab + {value: 0x0010, lo: 0x80, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0xa0, hi: 0xaa}, + // Block 0x18, offset 0xae + {value: 0x0010, lo: 0xa0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbd}, + // Block 0x19, offset 0xb0 + {value: 0x0034, lo: 0x93, hi: 0x93}, + {value: 0x0024, lo: 0x94, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0024, lo: 0xaa, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbf}, + // Block 0x1a, offset 0xbf + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1b, offset 0xc5 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0x1c, offset 0xd3 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb6, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1d, offset 0xde + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xb1}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + // Block 0x1e, offset 0xeb + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x1f, offset 0xf6 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x99, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x20, offset 0x102 + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x21, offset 0x10c + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x85}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xbf}, + // Block 0x22, offset 0x118 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x23, offset 0x123 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x24, offset 0x12f + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0010, lo: 0xa8, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x25, offset 0x13b + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x26, offset 0x143 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb9}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbf}, + // Block 0x27, offset 0x14c + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x88}, + {value: 0x0014, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x28, offset 0x156 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x29, offset 0x161 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb2}, + // Block 0x2a, offset 0x16d + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x2b, offset 0x174 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x94, hi: 0x97}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xba, hi: 0xbf}, + // Block 0x2c, offset 0x17f + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x96}, + {value: 0x0010, lo: 0x9a, hi: 0xb1}, + {value: 0x0010, lo: 0xb3, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x2d, offset 0x184 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x94}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9f}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + // Block 0x2e, offset 0x18c + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xba}, + // Block 0x2f, offset 0x18f + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x30, offset 0x194 + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xb9}, + {value: 0x0014, lo: 0xbb, hi: 0xbc}, + // Block 0x31, offset 0x198 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x32, offset 0x19c + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0034, lo: 0x98, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0034, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x33, offset 0x1a3 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xac}, + {value: 0x0034, lo: 0xb1, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xba, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x34, offset 0x1ac + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0024, lo: 0x82, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x86, hi: 0x87}, + {value: 0x0010, lo: 0x88, hi: 0x8c}, + {value: 0x0014, lo: 0x8d, hi: 0x97}, + {value: 0x0014, lo: 0x99, hi: 0xbc}, + // Block 0x35, offset 0x1b4 + {value: 0x0034, lo: 0x86, hi: 0x86}, + // Block 0x36, offset 0x1b5 + {value: 0x0010, lo: 0xab, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbe}, + // Block 0x37, offset 0x1be + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x96, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x99}, + {value: 0x0014, lo: 0x9e, hi: 0xa0}, + {value: 0x0010, lo: 0xa2, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xad}, + {value: 0x0014, lo: 0xb1, hi: 0xb4}, + // Block 0x38, offset 0x1c5 + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x6c53, lo: 0xa0, hi: 0xbf}, + // Block 0x39, offset 0x1cd + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x9a, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x3a, offset 0x1d3 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x3b, offset 0x1d8 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x82, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3c, offset 0x1dc + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3d, offset 0x1df + {value: 0x0010, lo: 0x80, hi: 0x9a}, + {value: 0x0024, lo: 0x9d, hi: 0x9f}, + // Block 0x3e, offset 0x1e1 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x7453, lo: 0xa0, hi: 0xaf}, + {value: 0x7853, lo: 0xb0, hi: 0xbf}, + // Block 0x3f, offset 0x1e4 + {value: 0x7c53, lo: 0x80, hi: 0x8f}, + {value: 0x8053, lo: 0x90, hi: 0x9f}, + {value: 0x7c53, lo: 0xa0, hi: 0xaf}, + {value: 0x0813, lo: 0xb0, hi: 0xb5}, + {value: 0x0892, lo: 0xb8, hi: 0xbd}, + // Block 0x40, offset 0x1e9 + {value: 0x0010, lo: 0x81, hi: 0xbf}, + // Block 0x41, offset 0x1ea + {value: 0x0010, lo: 0x80, hi: 0xac}, + {value: 0x0010, lo: 0xaf, hi: 0xbf}, + // Block 0x42, offset 0x1ec + {value: 0x0010, lo: 0x81, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x43, offset 0x1ee + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb8}, + // Block 0x44, offset 0x1f0 + {value: 0x0010, lo: 0x80, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0034, lo: 0x94, hi: 0x94}, + {value: 0x0010, lo: 0xa0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + // Block 0x45, offset 0x1f7 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xac}, + {value: 0x0010, lo: 0xae, hi: 0xb0}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + // Block 0x46, offset 0x1fc + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x47, offset 0x200 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x89, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0014, lo: 0x93, hi: 0x93}, + {value: 0x0004, lo: 0x97, hi: 0x97}, + {value: 0x0024, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0x48, offset 0x209 + {value: 0x0014, lo: 0x8b, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x49, offset 0x20c + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb8}, + // Block 0x4a, offset 0x20f + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x4b, offset 0x215 + {value: 0x0010, lo: 0x80, hi: 0xb5}, + // Block 0x4c, offset 0x216 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbb}, + // Block 0x4d, offset 0x221 + {value: 0x0010, lo: 0x86, hi: 0x8f}, + // Block 0x4e, offset 0x222 + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x4f, offset 0x223 + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + // Block 0x50, offset 0x228 + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x9e}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xac}, + {value: 0x0010, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xbc}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x51, offset 0x235 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xa7, hi: 0xa7}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + {value: 0x0034, lo: 0xb5, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbc}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0x52, offset 0x23d + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x53, offset 0x245 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0030, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8b}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xab, hi: 0xab}, + {value: 0x0034, lo: 0xac, hi: 0xac}, + {value: 0x0024, lo: 0xad, hi: 0xb3}, + // Block 0x54, offset 0x24e + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0030, lo: 0xaa, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbf}, + // Block 0x55, offset 0x257 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0030, lo: 0xb2, hi: 0xb3}, + // Block 0x56, offset 0x260 + {value: 0x0010, lo: 0x80, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0x57, offset 0x265 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8d, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x58, offset 0x268 + {value: 0x316a, lo: 0x80, hi: 0x80}, + {value: 0x31ea, lo: 0x81, hi: 0x81}, + {value: 0x326a, lo: 0x82, hi: 0x82}, + {value: 0x32ea, lo: 0x83, hi: 0x83}, + {value: 0x336a, lo: 0x84, hi: 0x84}, + {value: 0x33ea, lo: 0x85, hi: 0x85}, + {value: 0x346a, lo: 0x86, hi: 0x86}, + {value: 0x34ea, lo: 0x87, hi: 0x87}, + {value: 0x356a, lo: 0x88, hi: 0x88}, + {value: 0x8353, lo: 0x90, hi: 0xba}, + {value: 0x8353, lo: 0xbd, hi: 0xbf}, + // Block 0x59, offset 0x273 + {value: 0x0024, lo: 0x90, hi: 0x92}, + {value: 0x0034, lo: 0x94, hi: 0x99}, + {value: 0x0024, lo: 0x9a, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9f}, + {value: 0x0024, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0034, lo: 0xa2, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xb3}, + {value: 0x0024, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb7}, + {value: 0x0024, lo: 0xb8, hi: 0xb9}, + // Block 0x5a, offset 0x280 + {value: 0x0012, lo: 0x80, hi: 0xab}, + {value: 0x0015, lo: 0xac, hi: 0xbf}, + // Block 0x5b, offset 0x282 + {value: 0x0015, lo: 0x80, hi: 0xaa}, + {value: 0x0012, lo: 0xab, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb8}, + {value: 0x8752, lo: 0xb9, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbc}, + {value: 0x8b52, lo: 0xbd, hi: 0xbd}, + {value: 0x0012, lo: 0xbe, hi: 0xbf}, + // Block 0x5c, offset 0x289 + {value: 0x0012, lo: 0x80, hi: 0x9a}, + {value: 0x0015, lo: 0x9b, hi: 0xbf}, + // Block 0x5d, offset 0x28b + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0024, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb9}, + {value: 0x0024, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbd}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x5e, offset 0x297 + {value: 0x0117, lo: 0x80, hi: 0xbf}, + // Block 0x5f, offset 0x298 + {value: 0x0117, lo: 0x80, hi: 0x95}, + {value: 0x361a, lo: 0x96, hi: 0x96}, + {value: 0x36ca, lo: 0x97, hi: 0x97}, + {value: 0x377a, lo: 0x98, hi: 0x98}, + {value: 0x382a, lo: 0x99, hi: 0x99}, + {value: 0x38da, lo: 0x9a, hi: 0x9a}, + {value: 0x398a, lo: 0x9b, hi: 0x9b}, + {value: 0x0012, lo: 0x9c, hi: 0x9d}, + {value: 0x3a3b, lo: 0x9e, hi: 0x9e}, + {value: 0x0012, lo: 0x9f, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x60, offset 0x2a3 + {value: 0x0812, lo: 0x80, hi: 0x87}, + {value: 0x0813, lo: 0x88, hi: 0x8f}, + {value: 0x0812, lo: 0x90, hi: 0x95}, + {value: 0x0813, lo: 0x98, hi: 0x9d}, + {value: 0x0812, lo: 0xa0, hi: 0xa7}, + {value: 0x0813, lo: 0xa8, hi: 0xaf}, + {value: 0x0812, lo: 0xb0, hi: 0xb7}, + {value: 0x0813, lo: 0xb8, hi: 0xbf}, + // Block 0x61, offset 0x2ab + {value: 0x0004, lo: 0x8b, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8f}, + {value: 0x0054, lo: 0x98, hi: 0x99}, + {value: 0x0054, lo: 0xa4, hi: 0xa4}, + {value: 0x0054, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xaa, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xaf}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x62, offset 0x2b3 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x94, hi: 0x94}, + {value: 0x0014, lo: 0xa0, hi: 0xa4}, + {value: 0x0014, lo: 0xa6, hi: 0xaf}, + {value: 0x0015, lo: 0xb1, hi: 0xb1}, + {value: 0x0015, lo: 0xbf, hi: 0xbf}, + // Block 0x63, offset 0x2b9 + {value: 0x0015, lo: 0x90, hi: 0x9c}, + // Block 0x64, offset 0x2ba + {value: 0x0024, lo: 0x90, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x93}, + {value: 0x0024, lo: 0x94, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0xa0}, + {value: 0x0024, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa4}, + {value: 0x0034, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa7}, + {value: 0x0034, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xa9}, + {value: 0x0034, lo: 0xaa, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + // Block 0x65, offset 0x2c8 + {value: 0x0016, lo: 0x85, hi: 0x86}, + {value: 0x0012, lo: 0x87, hi: 0x89}, + {value: 0xa052, lo: 0x8e, hi: 0x8e}, + {value: 0x1013, lo: 0xa0, hi: 0xaf}, + {value: 0x1012, lo: 0xb0, hi: 0xbf}, + // Block 0x66, offset 0x2cd + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x88}, + // Block 0x67, offset 0x2d0 + {value: 0xa353, lo: 0xb6, hi: 0xb7}, + {value: 0xa653, lo: 0xb8, hi: 0xb9}, + {value: 0xa953, lo: 0xba, hi: 0xbb}, + {value: 0xa653, lo: 0xbc, hi: 0xbd}, + {value: 0xa353, lo: 0xbe, hi: 0xbf}, + // Block 0x68, offset 0x2d5 + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6553, lo: 0x90, hi: 0x9f}, + {value: 0xac53, lo: 0xa0, hi: 0xae}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0x69, offset 0x2d9 + {value: 0x0117, lo: 0x80, hi: 0xa3}, + {value: 0x0012, lo: 0xa4, hi: 0xa4}, + {value: 0x0716, lo: 0xab, hi: 0xac}, + {value: 0x0316, lo: 0xad, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb3}, + // Block 0x6a, offset 0x2df + {value: 0x6c52, lo: 0x80, hi: 0x9f}, + {value: 0x7052, lo: 0xa0, hi: 0xa5}, + {value: 0x7052, lo: 0xa7, hi: 0xa7}, + {value: 0x7052, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x6b, offset 0x2e4 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x6c, offset 0x2e7 + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0010, lo: 0xb0, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x6d, offset 0x2ec + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9e}, + {value: 0x0024, lo: 0xa0, hi: 0xbf}, + // Block 0x6e, offset 0x2f1 + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + // Block 0x6f, offset 0x2f2 + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0xaa, hi: 0xad}, + {value: 0x0030, lo: 0xae, hi: 0xaf}, + {value: 0x0004, lo: 0xb1, hi: 0xb5}, + {value: 0x0014, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + // Block 0x70, offset 0x2f8 + {value: 0x0034, lo: 0x99, hi: 0x9a}, + {value: 0x0004, lo: 0x9b, hi: 0x9e}, + // Block 0x71, offset 0x2fa + {value: 0x0004, lo: 0xbc, hi: 0xbe}, + // Block 0x72, offset 0x2fb + {value: 0x0010, lo: 0x85, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x73, offset 0x2fd + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0010, lo: 0xa0, hi: 0xba}, + // Block 0x74, offset 0x2ff + {value: 0x0010, lo: 0x80, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0xbf}, + // Block 0x75, offset 0x302 + {value: 0x0010, lo: 0x80, hi: 0x8c}, + // Block 0x76, offset 0x303 + {value: 0x0010, lo: 0x90, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x77, offset 0x305 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0xab}, + // Block 0x78, offset 0x308 + {value: 0x0117, lo: 0x80, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb2}, + {value: 0x0024, lo: 0xb4, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x79, offset 0x30e + {value: 0x0117, lo: 0x80, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9d}, + {value: 0x0024, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x7a, offset 0x312 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb1}, + // Block 0x7b, offset 0x314 + {value: 0x0004, lo: 0x80, hi: 0x96}, + {value: 0x0014, lo: 0x97, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xaf}, + {value: 0x0012, lo: 0xb0, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xbf}, + // Block 0x7c, offset 0x319 + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x0015, lo: 0xb0, hi: 0xb0}, + {value: 0x0012, lo: 0xb1, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x8753, lo: 0xbd, hi: 0xbd}, + {value: 0x0117, lo: 0xbe, hi: 0xbf}, + // Block 0x7d, offset 0x320 + {value: 0x0010, lo: 0xb7, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbf}, + // Block 0x7e, offset 0x324 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8b}, + {value: 0x0010, lo: 0x8c, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + // Block 0x7f, offset 0x32d + {value: 0x0010, lo: 0x80, hi: 0xb3}, + // Block 0x80, offset 0x32e + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xa0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb7}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x81, offset 0x337 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x82, offset 0x33b + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0x92}, + {value: 0x0030, lo: 0x93, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0x83, offset 0x340 + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb9}, + {value: 0x0010, lo: 0xba, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x84, offset 0x348 + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0004, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x85, offset 0x34e + {value: 0x0010, lo: 0x80, hi: 0xa8}, + {value: 0x0014, lo: 0xa9, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0x86, offset 0x354 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x87, offset 0x35e + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0024, lo: 0xbe, hi: 0xbf}, + // Block 0x88, offset 0x363 + {value: 0x0024, lo: 0x81, hi: 0x81}, + {value: 0x0004, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + // Block 0x89, offset 0x36c + {value: 0x0010, lo: 0x81, hi: 0x86}, + {value: 0x0010, lo: 0x89, hi: 0x8e}, + {value: 0x0010, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x8a, offset 0x372 + {value: 0x0012, lo: 0x80, hi: 0x92}, + {value: 0xaf52, lo: 0x93, hi: 0x93}, + {value: 0x0012, lo: 0x94, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9f}, + {value: 0x0012, lo: 0xa0, hi: 0xa5}, + {value: 0x74d2, lo: 0xb0, hi: 0xbf}, + // Block 0x8b, offset 0x379 + {value: 0x78d2, lo: 0x80, hi: 0x8f}, + {value: 0x7cd2, lo: 0x90, hi: 0x9f}, + {value: 0x80d2, lo: 0xa0, hi: 0xaf}, + {value: 0x7cd2, lo: 0xb0, hi: 0xbf}, + // Block 0x8c, offset 0x37d + {value: 0x0010, lo: 0x80, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x8d, offset 0x385 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x8e, offset 0x387 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x8b, hi: 0xbb}, + // Block 0x8f, offset 0x389 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0xbf}, + // Block 0x90, offset 0x38c + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0004, lo: 0xb2, hi: 0xbf}, + // Block 0x91, offset 0x38e + {value: 0x0004, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x93, hi: 0xbf}, + // Block 0x92, offset 0x390 + {value: 0x0010, lo: 0x80, hi: 0xbd}, + // Block 0x93, offset 0x391 + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0x94, offset 0x392 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0xbf}, + // Block 0x95, offset 0x394 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0xb0, hi: 0xbb}, + // Block 0x96, offset 0x396 + {value: 0x0014, lo: 0x80, hi: 0x8f}, + {value: 0x0054, lo: 0x93, hi: 0x93}, + {value: 0x0024, lo: 0xa0, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xad}, + {value: 0x0024, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + // Block 0x97, offset 0x39c + {value: 0x0010, lo: 0x8d, hi: 0x8f}, + {value: 0x0054, lo: 0x92, hi: 0x92}, + {value: 0x0054, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0xb0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0x98, offset 0x3a1 + {value: 0x0010, lo: 0x80, hi: 0xbc}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x99, offset 0x3a3 + {value: 0x0054, lo: 0x87, hi: 0x87}, + {value: 0x0054, lo: 0x8e, hi: 0x8e}, + {value: 0x0054, lo: 0x9a, hi: 0x9a}, + {value: 0x5f53, lo: 0xa1, hi: 0xba}, + {value: 0x0004, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9a, offset 0x3a9 + {value: 0x0004, lo: 0x80, hi: 0x80}, + {value: 0x5f52, lo: 0x81, hi: 0x9a}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + // Block 0x9b, offset 0x3ac + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbe}, + // Block 0x9c, offset 0x3ae + {value: 0x0010, lo: 0x82, hi: 0x87}, + {value: 0x0010, lo: 0x8a, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0x97}, + {value: 0x0010, lo: 0x9a, hi: 0x9c}, + {value: 0x0004, lo: 0xa3, hi: 0xa3}, + {value: 0x0014, lo: 0xb9, hi: 0xbb}, + // Block 0x9d, offset 0x3b4 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0010, lo: 0x8d, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xba}, + {value: 0x0010, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9e, offset 0x3b9 + {value: 0x0010, lo: 0x80, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x9d}, + // Block 0x9f, offset 0x3bb + {value: 0x0010, lo: 0x80, hi: 0xba}, + // Block 0xa0, offset 0x3bc + {value: 0x0010, lo: 0x80, hi: 0xb4}, + // Block 0xa1, offset 0x3bd + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0xa2, offset 0x3be + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa3, offset 0x3c0 + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + // Block 0xa4, offset 0x3c2 + {value: 0x0010, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xad, hi: 0xbf}, + // Block 0xa5, offset 0x3c4 + {value: 0x0010, lo: 0x80, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0xb5}, + {value: 0x0024, lo: 0xb6, hi: 0xba}, + // Block 0xa6, offset 0x3c7 + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa7, offset 0x3c9 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x91, hi: 0x95}, + // Block 0xa8, offset 0x3cc + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x97}, + {value: 0xb253, lo: 0x98, hi: 0x9f}, + {value: 0xb553, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbf}, + // Block 0xa9, offset 0x3d4 + {value: 0xb252, lo: 0x80, hi: 0x87}, + {value: 0xb552, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0xaa, offset 0x3d7 + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0xb553, lo: 0xb0, hi: 0xb7}, + {value: 0xb253, lo: 0xb8, hi: 0xbf}, + // Block 0xab, offset 0x3db + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x93}, + {value: 0xb552, lo: 0x98, hi: 0x9f}, + {value: 0xb252, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbb}, + // Block 0xac, offset 0x3e3 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xad, offset 0x3e5 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + // Block 0xae, offset 0x3e6 + {value: 0x0010, lo: 0x80, hi: 0xb6}, + // Block 0xaf, offset 0x3e7 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xa7}, + // Block 0xb0, offset 0x3e9 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xb5}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xb1, offset 0x3ef + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb6}, + // Block 0xb2, offset 0x3f1 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + // Block 0xb3, offset 0x3f2 + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + // Block 0xb4, offset 0x3f4 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb9}, + // Block 0xb5, offset 0x3f6 + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0xb6, offset 0x3f8 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x8e, hi: 0x8e}, + {value: 0x0024, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x99, hi: 0xb5}, + {value: 0x0024, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xb7, offset 0x405 + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0xb8, offset 0x406 + {value: 0x0010, lo: 0x80, hi: 0x9c}, + // Block 0xb9, offset 0x407 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + // Block 0xba, offset 0x40b + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + // Block 0xbb, offset 0x40d + {value: 0x0010, lo: 0x80, hi: 0x91}, + // Block 0xbc, offset 0x40e + {value: 0x0010, lo: 0x80, hi: 0x88}, + // Block 0xbd, offset 0x40f + {value: 0x5653, lo: 0x80, hi: 0xb2}, + // Block 0xbe, offset 0x410 + {value: 0x5652, lo: 0x80, hi: 0xb2}, + // Block 0xbf, offset 0x411 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xc0, offset 0x414 + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xc1, offset 0x417 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x87}, + {value: 0x0024, lo: 0x88, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x8b}, + {value: 0x0024, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + // Block 0xc2, offset 0x41d + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xc3, offset 0x421 + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xc4, offset 0x425 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb6}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + // Block 0xc5, offset 0x42b + {value: 0x0014, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xc6, offset 0x42e + {value: 0x0024, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0xc7, offset 0x435 + {value: 0x0010, lo: 0x84, hi: 0x86}, + {value: 0x0010, lo: 0x90, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + // Block 0xc8, offset 0x439 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xc9, offset 0x43d + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x89, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + // Block 0xca, offset 0x444 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb4}, + {value: 0x0030, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xb7}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0xcb, offset 0x44d + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xcc, offset 0x453 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa2}, + {value: 0x0014, lo: 0xa3, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xcd, offset 0x459 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xce, offset 0x463 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0030, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9d, hi: 0xa3}, + {value: 0x0024, lo: 0xa6, hi: 0xac}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + // Block 0xcf, offset 0x46d + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xd0, offset 0x46f + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0x9e, hi: 0x9e}, + // Block 0xd1, offset 0x477 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xd2, offset 0x47d + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd3, offset 0x483 + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd4, offset 0x489 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x98, hi: 0x9b}, + {value: 0x0014, lo: 0x9c, hi: 0x9d}, + // Block 0xd5, offset 0x48c + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd6, offset 0x492 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd7, offset 0x495 + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0014, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb5}, + {value: 0x0030, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0xd8, offset 0x49d + {value: 0x0010, lo: 0x80, hi: 0x89}, + // Block 0xd9, offset 0x49e + {value: 0x0014, lo: 0x9d, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xda, offset 0x4a5 + {value: 0x0010, lo: 0x80, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + // Block 0xdb, offset 0x4a9 + {value: 0x5f53, lo: 0xa0, hi: 0xbf}, + // Block 0xdc, offset 0x4aa + {value: 0x5f52, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xdd, offset 0x4ad + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x8a}, + {value: 0x0010, lo: 0x8b, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbb, hi: 0xbe}, + // Block 0xde, offset 0x4b5 + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0014, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x98}, + {value: 0x0014, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0x9c, hi: 0xbf}, + // Block 0xdf, offset 0x4bb + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x86, hi: 0x89}, + {value: 0x0014, lo: 0x8a, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x99}, + {value: 0x0010, lo: 0x9d, hi: 0x9d}, + // Block 0xe0, offset 0x4c2 + {value: 0x0010, lo: 0x80, hi: 0xb8}, + // Block 0xe1, offset 0x4c3 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb6}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xe2, offset 0x4c9 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0xe3, offset 0x4cc + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0014, lo: 0x92, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xa9}, + {value: 0x0014, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0xe4, offset 0x4d4 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb6}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xe5, offset 0x4db + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa5}, + {value: 0x0010, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xbf}, + // Block 0xe6, offset 0x4e5 + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0014, lo: 0x90, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0x96}, + {value: 0x0034, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0xe7, offset 0x4ed + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + // Block 0xe8, offset 0x4f0 + {value: 0x0010, lo: 0x80, hi: 0x99}, + // Block 0xe9, offset 0x4f1 + {value: 0x0010, lo: 0x80, hi: 0xae}, + // Block 0xea, offset 0x4f2 + {value: 0x0010, lo: 0x80, hi: 0x83}, + // Block 0xeb, offset 0x4f3 + {value: 0x0010, lo: 0x80, hi: 0x86}, + // Block 0xec, offset 0x4f4 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0xed, offset 0x4f6 + {value: 0x0010, lo: 0x90, hi: 0xad}, + {value: 0x0034, lo: 0xb0, hi: 0xb4}, + // Block 0xee, offset 0x4f8 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb6}, + // Block 0xef, offset 0x4fa + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa3, hi: 0xb7}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xf0, offset 0x4fe + {value: 0x0010, lo: 0x80, hi: 0x8f}, + // Block 0xf1, offset 0x4ff + {value: 0x2013, lo: 0x80, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xbf}, + // Block 0xf2, offset 0x501 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0xbe}, + // Block 0xf3, offset 0x503 + {value: 0x0014, lo: 0x8f, hi: 0x9f}, + // Block 0xf4, offset 0x504 + {value: 0x0014, lo: 0xa0, hi: 0xa1}, + // Block 0xf5, offset 0x505 + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbc}, + // Block 0xf6, offset 0x507 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0034, lo: 0x9e, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa3}, + // Block 0xf7, offset 0x50c + {value: 0x0030, lo: 0xa5, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xa9}, + {value: 0x0030, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbf}, + // Block 0xf8, offset 0x511 + {value: 0x0034, lo: 0x80, hi: 0x82}, + {value: 0x0024, lo: 0x85, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8b}, + {value: 0x0024, lo: 0xaa, hi: 0xad}, + // Block 0xf9, offset 0x515 + {value: 0x0024, lo: 0x82, hi: 0x84}, + // Block 0xfa, offset 0x516 + {value: 0x0013, lo: 0x80, hi: 0x99}, + {value: 0x0012, lo: 0x9a, hi: 0xb3}, + {value: 0x0013, lo: 0xb4, hi: 0xbf}, + // Block 0xfb, offset 0x519 + {value: 0x0013, lo: 0x80, hi: 0x8d}, + {value: 0x0012, lo: 0x8e, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0xa7}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0xfc, offset 0x51d + {value: 0x0013, lo: 0x80, hi: 0x81}, + {value: 0x0012, lo: 0x82, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0x9c}, + {value: 0x0013, lo: 0x9e, hi: 0x9f}, + {value: 0x0013, lo: 0xa2, hi: 0xa2}, + {value: 0x0013, lo: 0xa5, hi: 0xa6}, + {value: 0x0013, lo: 0xa9, hi: 0xac}, + {value: 0x0013, lo: 0xae, hi: 0xb5}, + {value: 0x0012, lo: 0xb6, hi: 0xb9}, + {value: 0x0012, lo: 0xbb, hi: 0xbb}, + {value: 0x0012, lo: 0xbd, hi: 0xbf}, + // Block 0xfd, offset 0x528 + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0012, lo: 0x85, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0xfe, offset 0x52c + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0013, lo: 0x84, hi: 0x85}, + {value: 0x0013, lo: 0x87, hi: 0x8a}, + {value: 0x0013, lo: 0x8d, hi: 0x94}, + {value: 0x0013, lo: 0x96, hi: 0x9c}, + {value: 0x0012, lo: 0x9e, hi: 0xb7}, + {value: 0x0013, lo: 0xb8, hi: 0xb9}, + {value: 0x0013, lo: 0xbb, hi: 0xbe}, + // Block 0xff, offset 0x534 + {value: 0x0013, lo: 0x80, hi: 0x84}, + {value: 0x0013, lo: 0x86, hi: 0x86}, + {value: 0x0013, lo: 0x8a, hi: 0x90}, + {value: 0x0012, lo: 0x92, hi: 0xab}, + {value: 0x0013, lo: 0xac, hi: 0xbf}, + // Block 0x100, offset 0x539 + {value: 0x0013, lo: 0x80, hi: 0x85}, + {value: 0x0012, lo: 0x86, hi: 0x9f}, + {value: 0x0013, lo: 0xa0, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbf}, + // Block 0x101, offset 0x53d + {value: 0x0012, lo: 0x80, hi: 0x93}, + {value: 0x0013, lo: 0x94, hi: 0xad}, + {value: 0x0012, lo: 0xae, hi: 0xbf}, + // Block 0x102, offset 0x540 + {value: 0x0012, lo: 0x80, hi: 0x87}, + {value: 0x0013, lo: 0x88, hi: 0xa1}, + {value: 0x0012, lo: 0xa2, hi: 0xbb}, + {value: 0x0013, lo: 0xbc, hi: 0xbf}, + // Block 0x103, offset 0x544 + {value: 0x0013, lo: 0x80, hi: 0x95}, + {value: 0x0012, lo: 0x96, hi: 0xaf}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x104, offset 0x547 + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0012, lo: 0x8a, hi: 0xa5}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0x105, offset 0x54a + {value: 0x0013, lo: 0x80, hi: 0x80}, + {value: 0x0012, lo: 0x82, hi: 0x9a}, + {value: 0x0012, lo: 0x9c, hi: 0xa1}, + {value: 0x0013, lo: 0xa2, hi: 0xba}, + {value: 0x0012, lo: 0xbc, hi: 0xbf}, + // Block 0x106, offset 0x54f + {value: 0x0012, lo: 0x80, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0xb4}, + {value: 0x0012, lo: 0xb6, hi: 0xbf}, + // Block 0x107, offset 0x553 + {value: 0x0012, lo: 0x80, hi: 0x8e}, + {value: 0x0012, lo: 0x90, hi: 0x95}, + {value: 0x0013, lo: 0x96, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x108, offset 0x557 + {value: 0x0012, lo: 0x80, hi: 0x88}, + {value: 0x0012, lo: 0x8a, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0x109, offset 0x55b + {value: 0x0012, lo: 0x80, hi: 0x82}, + {value: 0x0012, lo: 0x84, hi: 0x89}, + {value: 0x0017, lo: 0x8a, hi: 0x8b}, + {value: 0x0010, lo: 0x8e, hi: 0xbf}, + // Block 0x10a, offset 0x55f + {value: 0x0014, lo: 0x80, hi: 0xb6}, + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x10b, offset 0x561 + {value: 0x0014, lo: 0x80, hi: 0xac}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x10c, offset 0x563 + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x9b, hi: 0x9f}, + {value: 0x0014, lo: 0xa1, hi: 0xaf}, + // Block 0x10d, offset 0x566 + {value: 0x0024, lo: 0x80, hi: 0x86}, + {value: 0x0024, lo: 0x88, hi: 0x98}, + {value: 0x0024, lo: 0x9b, hi: 0xa1}, + {value: 0x0024, lo: 0xa3, hi: 0xa4}, + {value: 0x0024, lo: 0xa6, hi: 0xaa}, + // Block 0x10e, offset 0x56b + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0034, lo: 0x90, hi: 0x96}, + // Block 0x10f, offset 0x56d + {value: 0xb852, lo: 0x80, hi: 0x81}, + {value: 0xbb52, lo: 0x82, hi: 0x83}, + {value: 0x0024, lo: 0x84, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x110, offset 0x572 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x9f}, + {value: 0x0010, lo: 0xa1, hi: 0xa2}, + {value: 0x0010, lo: 0xa4, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb7}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + // Block 0x111, offset 0x57b + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x9b}, + {value: 0x0010, lo: 0xa1, hi: 0xa3}, + {value: 0x0010, lo: 0xa5, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xbb}, + // Block 0x112, offset 0x580 + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x113, offset 0x581 + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x114, offset 0x584 + {value: 0x0013, lo: 0x80, hi: 0x89}, + // Block 0x115, offset 0x585 + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x116, offset 0x586 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0014, lo: 0xa0, hi: 0xbf}, + // Block 0x117, offset 0x588 + {value: 0x0014, lo: 0x80, hi: 0xbf}, + // Block 0x118, offset 0x589 + {value: 0x0014, lo: 0x80, hi: 0xaf}, +} + +// Total table size 14906 bytes (14KiB); checksum: 362795C7 diff --git a/vendor/golang.org/x/text/cases/tables12.0.0.go b/vendor/golang.org/x/text/cases/tables12.0.0.go new file mode 100644 index 000000000000..84d841b149c7 --- /dev/null +++ b/vendor/golang.org/x/text/cases/tables12.0.0.go @@ -0,0 +1,2359 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +//go:build go1.14 && !go1.16 + +package cases + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "12.0.0" + +var xorData string = "" + // Size: 192 bytes + "\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" + + "\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" + + "\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" + + "\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" + + "\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" + + "\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" + + "\x0b!\x10\x00\x0b!0\x001\x00\x00\x0b(\x04\x00\x03\x04\x1e\x00\x0b)\x08" + + "\x00\x03\x0a\x00\x02:\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<" + + "\x00\x01&\x00\x01*\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01" + + "\x1e\x00\x01\x22" + +var exceptions string = "" + // Size: 2450 bytes + "\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" + + "\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" + + "\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" + + "\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" + + "\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" + + "\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꟅꟅ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ι" + + "ΙΙ\x166ΐΪ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12" + + "φΦΦ\x12\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x10\x1bᲐა" + + "\x10\x1bᲑბ\x10\x1bᲒგ\x10\x1bᲓდ\x10\x1bᲔე\x10\x1bᲕვ\x10\x1bᲖზ\x10\x1bᲗთ" + + "\x10\x1bᲘი\x10\x1bᲙკ\x10\x1bᲚლ\x10\x1bᲛმ\x10\x1bᲜნ\x10\x1bᲝო\x10\x1bᲞპ" + + "\x10\x1bᲟჟ\x10\x1bᲠრ\x10\x1bᲡს\x10\x1bᲢტ\x10\x1bᲣუ\x10\x1bᲤფ\x10\x1bᲥქ" + + "\x10\x1bᲦღ\x10\x1bᲧყ\x10\x1bᲨშ\x10\x1bᲩჩ\x10\x1bᲪც\x10\x1bᲫძ\x10\x1bᲬწ" + + "\x10\x1bᲭჭ\x10\x1bᲮხ\x10\x1bᲯჯ\x10\x1bᲰჰ\x10\x1bᲱჱ\x10\x1bᲲჲ\x10\x1bᲳჳ" + + "\x10\x1bᲴჴ\x10\x1bᲵჵ\x10\x1bᲶჶ\x10\x1bᲷჷ\x10\x1bᲸჸ\x10\x1bᲹჹ\x10\x1bᲺჺ" + + "\x10\x1bᲽჽ\x10\x1bᲾჾ\x10\x1bᲿჿ\x12\x12вВВ\x12\x12дДД\x12\x12оОО\x12\x12с" + + "СС\x12\x12тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13\x1bꙋꙊꙊ\x13\x1bẖH̱H̱" + + "\x13\x1bẗT̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1baʾAʾAʾ\x13\x1bṡṠṠ\x12" + + "\x10ssß\x14$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ" + + "\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ" + + "\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ\x15\x1dἄιᾄἌΙ\x15" + + "\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ\x15+ἢιἪΙᾚ\x15+ἣι" + + "ἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨΙ\x15\x1dἡιᾑἩΙ" + + "\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15\x1dἦιᾖἮΙ\x15" + + "\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ\x15+ὥιὭΙᾭ" + + "\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ\x15\x1dὣιᾣὫΙ" + + "\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰιᾺΙᾺͅ\x14#αιΑΙ" + + "ᾼ\x14$άιΆΙΆͅ\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x12ιΙΙ\x15-ὴιῊΙ" + + "Ὴͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ\x166ῒΙ" + + "̈̀Ϊ̀\x166ΐΪ́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ̀\x166ΰΫ́Ϋ" + + "́\x14$ῤΡ̓Ρ̓\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ" + + "\x14$ῶΩ͂Ω͂\x166ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12" + + "\x10ɫɫ\x12\x10ɽɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12" + + "\x10ɒɒ\x12\x10ȿȿ\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12" + + "\x10ɬɬ\x12\x10ɪɪ\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x10ʂʂ\x12\x12ffFFFf" + + "\x12\x12fiFIFi\x12\x12flFLFl\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12st" + + "STSt\x12\x12stSTSt\x14$մնՄՆՄն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄ" + + "խ" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// caseTrie. Total size: 12396 bytes (12.11 KiB). Checksum: c0656238384c3da1. +type caseTrie struct{} + +func newCaseTrie(i int) *caseTrie { + return &caseTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *caseTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 20: + return uint16(caseValues[n<<6+uint32(b)]) + default: + n -= 20 + return uint16(sparse.lookup(n, b)) + } +} + +// caseValues: 22 blocks, 1408 entries, 2816 bytes +// The third block is the zero block. +var caseValues = [1408]uint16{ + // Block 0x0, offset 0x0 + 0x27: 0x0054, + 0x2e: 0x0054, + 0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010, + 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054, + // Block 0x1, offset 0x40 + 0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013, + 0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013, + 0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013, + 0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013, + 0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013, + 0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012, + 0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012, + 0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012, + 0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012, + 0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112, + 0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713, + 0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313, + 0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653, + 0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53, + 0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112, + 0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853, + 0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13, + 0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313, + 0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010, + 0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452, + // Block 0x4, offset 0x100 + 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359, + 0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619, + 0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313, + 0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13, + 0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452, + 0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112, + 0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112, + 0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112, + 0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112, + 0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112, + 0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112, + // Block 0x5, offset 0x140 + 0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53, + 0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112, + 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a, + 0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152, + 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012, + 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052, + 0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652, + 0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52, + 0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252, + 0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012, + 0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012, + // Block 0x6, offset 0x180 + 0x180: 0x3552, 0x181: 0x0012, 0x182: 0x110a, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012, + 0x186: 0x0012, 0x187: 0x118a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52, + 0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012, + 0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012, + 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x120a, + 0x19e: 0x128a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012, + 0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012, + 0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012, + 0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015, + 0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014, + 0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x130d, + 0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024, + 0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024, + 0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024, + 0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034, + 0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024, + 0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024, + 0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024, + 0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004, + 0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52, + 0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353, + // Block 0x8, offset 0x200 + 0x204: 0x0004, 0x205: 0x0004, + 0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513, + 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x138a, 0x211: 0x2013, + 0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013, + 0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013, + 0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53, + 0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53, + 0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512, + 0x230: 0x14ca, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012, + 0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012, + 0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012, + // Block 0x9, offset 0x240 + 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x160a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52, + 0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52, + 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x168a, 0x251: 0x170a, + 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x178a, 0x256: 0x180a, 0x257: 0x1812, + 0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112, + 0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112, + 0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112, + 0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112, + 0x270: 0x188a, 0x271: 0x190a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x198a, + 0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112, + 0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053, + // Block 0xa, offset 0x280 + 0x280: 0x6852, 0x281: 0x6852, 0x282: 0x6852, 0x283: 0x6852, 0x284: 0x6852, 0x285: 0x6852, + 0x286: 0x6852, 0x287: 0x1a0a, 0x288: 0x0012, + 0x291: 0x0034, + 0x292: 0x0024, 0x293: 0x0024, 0x294: 0x0024, 0x295: 0x0024, 0x296: 0x0034, 0x297: 0x0024, + 0x298: 0x0024, 0x299: 0x0024, 0x29a: 0x0034, 0x29b: 0x0034, 0x29c: 0x0024, 0x29d: 0x0024, + 0x29e: 0x0024, 0x29f: 0x0024, 0x2a0: 0x0024, 0x2a1: 0x0024, 0x2a2: 0x0034, 0x2a3: 0x0034, + 0x2a4: 0x0034, 0x2a5: 0x0034, 0x2a6: 0x0034, 0x2a7: 0x0034, 0x2a8: 0x0024, 0x2a9: 0x0024, + 0x2aa: 0x0034, 0x2ab: 0x0024, 0x2ac: 0x0024, 0x2ad: 0x0034, 0x2ae: 0x0034, 0x2af: 0x0024, + 0x2b0: 0x0034, 0x2b1: 0x0034, 0x2b2: 0x0034, 0x2b3: 0x0034, 0x2b4: 0x0034, 0x2b5: 0x0034, + 0x2b6: 0x0034, 0x2b7: 0x0034, 0x2b8: 0x0034, 0x2b9: 0x0034, 0x2ba: 0x0034, 0x2bb: 0x0034, + 0x2bc: 0x0034, 0x2bd: 0x0034, 0x2bf: 0x0034, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x7053, 0x2c1: 0x7053, 0x2c2: 0x7053, 0x2c3: 0x7053, 0x2c4: 0x7053, 0x2c5: 0x7053, + 0x2c7: 0x7053, + 0x2cd: 0x7053, 0x2d0: 0x1aea, 0x2d1: 0x1b6a, + 0x2d2: 0x1bea, 0x2d3: 0x1c6a, 0x2d4: 0x1cea, 0x2d5: 0x1d6a, 0x2d6: 0x1dea, 0x2d7: 0x1e6a, + 0x2d8: 0x1eea, 0x2d9: 0x1f6a, 0x2da: 0x1fea, 0x2db: 0x206a, 0x2dc: 0x20ea, 0x2dd: 0x216a, + 0x2de: 0x21ea, 0x2df: 0x226a, 0x2e0: 0x22ea, 0x2e1: 0x236a, 0x2e2: 0x23ea, 0x2e3: 0x246a, + 0x2e4: 0x24ea, 0x2e5: 0x256a, 0x2e6: 0x25ea, 0x2e7: 0x266a, 0x2e8: 0x26ea, 0x2e9: 0x276a, + 0x2ea: 0x27ea, 0x2eb: 0x286a, 0x2ec: 0x28ea, 0x2ed: 0x296a, 0x2ee: 0x29ea, 0x2ef: 0x2a6a, + 0x2f0: 0x2aea, 0x2f1: 0x2b6a, 0x2f2: 0x2bea, 0x2f3: 0x2c6a, 0x2f4: 0x2cea, 0x2f5: 0x2d6a, + 0x2f6: 0x2dea, 0x2f7: 0x2e6a, 0x2f8: 0x2eea, 0x2f9: 0x2f6a, 0x2fa: 0x2fea, + 0x2fc: 0x0014, 0x2fd: 0x306a, 0x2fe: 0x30ea, 0x2ff: 0x316a, + // Block 0xc, offset 0x300 + 0x300: 0x0812, 0x301: 0x0812, 0x302: 0x0812, 0x303: 0x0812, 0x304: 0x0812, 0x305: 0x0812, + 0x308: 0x0813, 0x309: 0x0813, 0x30a: 0x0813, 0x30b: 0x0813, + 0x30c: 0x0813, 0x30d: 0x0813, 0x310: 0x3b1a, 0x311: 0x0812, + 0x312: 0x3bfa, 0x313: 0x0812, 0x314: 0x3d3a, 0x315: 0x0812, 0x316: 0x3e7a, 0x317: 0x0812, + 0x319: 0x0813, 0x31b: 0x0813, 0x31d: 0x0813, + 0x31f: 0x0813, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x0812, 0x323: 0x0812, + 0x324: 0x0812, 0x325: 0x0812, 0x326: 0x0812, 0x327: 0x0812, 0x328: 0x0813, 0x329: 0x0813, + 0x32a: 0x0813, 0x32b: 0x0813, 0x32c: 0x0813, 0x32d: 0x0813, 0x32e: 0x0813, 0x32f: 0x0813, + 0x330: 0x9252, 0x331: 0x9252, 0x332: 0x9552, 0x333: 0x9552, 0x334: 0x9852, 0x335: 0x9852, + 0x336: 0x9b52, 0x337: 0x9b52, 0x338: 0x9e52, 0x339: 0x9e52, 0x33a: 0xa152, 0x33b: 0xa152, + 0x33c: 0x4d52, 0x33d: 0x4d52, + // Block 0xd, offset 0x340 + 0x340: 0x3fba, 0x341: 0x40aa, 0x342: 0x419a, 0x343: 0x428a, 0x344: 0x437a, 0x345: 0x446a, + 0x346: 0x455a, 0x347: 0x464a, 0x348: 0x4739, 0x349: 0x4829, 0x34a: 0x4919, 0x34b: 0x4a09, + 0x34c: 0x4af9, 0x34d: 0x4be9, 0x34e: 0x4cd9, 0x34f: 0x4dc9, 0x350: 0x4eba, 0x351: 0x4faa, + 0x352: 0x509a, 0x353: 0x518a, 0x354: 0x527a, 0x355: 0x536a, 0x356: 0x545a, 0x357: 0x554a, + 0x358: 0x5639, 0x359: 0x5729, 0x35a: 0x5819, 0x35b: 0x5909, 0x35c: 0x59f9, 0x35d: 0x5ae9, + 0x35e: 0x5bd9, 0x35f: 0x5cc9, 0x360: 0x5dba, 0x361: 0x5eaa, 0x362: 0x5f9a, 0x363: 0x608a, + 0x364: 0x617a, 0x365: 0x626a, 0x366: 0x635a, 0x367: 0x644a, 0x368: 0x6539, 0x369: 0x6629, + 0x36a: 0x6719, 0x36b: 0x6809, 0x36c: 0x68f9, 0x36d: 0x69e9, 0x36e: 0x6ad9, 0x36f: 0x6bc9, + 0x370: 0x0812, 0x371: 0x0812, 0x372: 0x6cba, 0x373: 0x6dca, 0x374: 0x6e9a, + 0x376: 0x6f7a, 0x377: 0x705a, 0x378: 0x0813, 0x379: 0x0813, 0x37a: 0x9253, 0x37b: 0x9253, + 0x37c: 0x7199, 0x37d: 0x0004, 0x37e: 0x726a, 0x37f: 0x0004, + // Block 0xe, offset 0x380 + 0x380: 0x0004, 0x381: 0x0004, 0x382: 0x72ea, 0x383: 0x73fa, 0x384: 0x74ca, + 0x386: 0x75aa, 0x387: 0x768a, 0x388: 0x9553, 0x389: 0x9553, 0x38a: 0x9853, 0x38b: 0x9853, + 0x38c: 0x77c9, 0x38d: 0x0004, 0x38e: 0x0004, 0x38f: 0x0004, 0x390: 0x0812, 0x391: 0x0812, + 0x392: 0x789a, 0x393: 0x79da, 0x396: 0x7b1a, 0x397: 0x7bfa, + 0x398: 0x0813, 0x399: 0x0813, 0x39a: 0x9b53, 0x39b: 0x9b53, 0x39d: 0x0004, + 0x39e: 0x0004, 0x39f: 0x0004, 0x3a0: 0x0812, 0x3a1: 0x0812, 0x3a2: 0x7d3a, 0x3a3: 0x7e7a, + 0x3a4: 0x7fba, 0x3a5: 0x0912, 0x3a6: 0x809a, 0x3a7: 0x817a, 0x3a8: 0x0813, 0x3a9: 0x0813, + 0x3aa: 0xa153, 0x3ab: 0xa153, 0x3ac: 0x0913, 0x3ad: 0x0004, 0x3ae: 0x0004, 0x3af: 0x0004, + 0x3b2: 0x82ba, 0x3b3: 0x83ca, 0x3b4: 0x849a, + 0x3b6: 0x857a, 0x3b7: 0x865a, 0x3b8: 0x9e53, 0x3b9: 0x9e53, 0x3ba: 0x4d53, 0x3bb: 0x4d53, + 0x3bc: 0x8799, 0x3bd: 0x0004, 0x3be: 0x0004, + // Block 0xf, offset 0x3c0 + 0x3c2: 0x0013, + 0x3c7: 0x0013, 0x3ca: 0x0012, 0x3cb: 0x0013, + 0x3cc: 0x0013, 0x3cd: 0x0013, 0x3ce: 0x0012, 0x3cf: 0x0012, 0x3d0: 0x0013, 0x3d1: 0x0013, + 0x3d2: 0x0013, 0x3d3: 0x0012, 0x3d5: 0x0013, + 0x3d9: 0x0013, 0x3da: 0x0013, 0x3db: 0x0013, 0x3dc: 0x0013, 0x3dd: 0x0013, + 0x3e4: 0x0013, 0x3e6: 0x886b, 0x3e8: 0x0013, + 0x3ea: 0x88cb, 0x3eb: 0x890b, 0x3ec: 0x0013, 0x3ed: 0x0013, 0x3ef: 0x0012, + 0x3f0: 0x0013, 0x3f1: 0x0013, 0x3f2: 0xa453, 0x3f3: 0x0013, 0x3f4: 0x0012, 0x3f5: 0x0010, + 0x3f6: 0x0010, 0x3f7: 0x0010, 0x3f8: 0x0010, 0x3f9: 0x0012, + 0x3fc: 0x0012, 0x3fd: 0x0012, 0x3fe: 0x0013, 0x3ff: 0x0013, + // Block 0x10, offset 0x400 + 0x400: 0x1a13, 0x401: 0x1a13, 0x402: 0x1e13, 0x403: 0x1e13, 0x404: 0x1a13, 0x405: 0x1a13, + 0x406: 0x2613, 0x407: 0x2613, 0x408: 0x2a13, 0x409: 0x2a13, 0x40a: 0x2e13, 0x40b: 0x2e13, + 0x40c: 0x2a13, 0x40d: 0x2a13, 0x40e: 0x2613, 0x40f: 0x2613, 0x410: 0xa752, 0x411: 0xa752, + 0x412: 0xaa52, 0x413: 0xaa52, 0x414: 0xad52, 0x415: 0xad52, 0x416: 0xaa52, 0x417: 0xaa52, + 0x418: 0xa752, 0x419: 0xa752, 0x41a: 0x1a12, 0x41b: 0x1a12, 0x41c: 0x1e12, 0x41d: 0x1e12, + 0x41e: 0x1a12, 0x41f: 0x1a12, 0x420: 0x2612, 0x421: 0x2612, 0x422: 0x2a12, 0x423: 0x2a12, + 0x424: 0x2e12, 0x425: 0x2e12, 0x426: 0x2a12, 0x427: 0x2a12, 0x428: 0x2612, 0x429: 0x2612, + // Block 0x11, offset 0x440 + 0x440: 0x6552, 0x441: 0x6552, 0x442: 0x6552, 0x443: 0x6552, 0x444: 0x6552, 0x445: 0x6552, + 0x446: 0x6552, 0x447: 0x6552, 0x448: 0x6552, 0x449: 0x6552, 0x44a: 0x6552, 0x44b: 0x6552, + 0x44c: 0x6552, 0x44d: 0x6552, 0x44e: 0x6552, 0x44f: 0x6552, 0x450: 0xb052, 0x451: 0xb052, + 0x452: 0xb052, 0x453: 0xb052, 0x454: 0xb052, 0x455: 0xb052, 0x456: 0xb052, 0x457: 0xb052, + 0x458: 0xb052, 0x459: 0xb052, 0x45a: 0xb052, 0x45b: 0xb052, 0x45c: 0xb052, 0x45d: 0xb052, + 0x45e: 0xb052, 0x460: 0x0113, 0x461: 0x0112, 0x462: 0x896b, 0x463: 0x8b53, + 0x464: 0x89cb, 0x465: 0x8a2a, 0x466: 0x8a8a, 0x467: 0x0f13, 0x468: 0x0f12, 0x469: 0x0313, + 0x46a: 0x0312, 0x46b: 0x0713, 0x46c: 0x0712, 0x46d: 0x8aeb, 0x46e: 0x8b4b, 0x46f: 0x8bab, + 0x470: 0x8c0b, 0x471: 0x0012, 0x472: 0x0113, 0x473: 0x0112, 0x474: 0x0012, 0x475: 0x0313, + 0x476: 0x0312, 0x477: 0x0012, 0x478: 0x0012, 0x479: 0x0012, 0x47a: 0x0012, 0x47b: 0x0012, + 0x47c: 0x0015, 0x47d: 0x0015, 0x47e: 0x8c6b, 0x47f: 0x8ccb, + // Block 0x12, offset 0x480 + 0x480: 0x0113, 0x481: 0x0112, 0x482: 0x0113, 0x483: 0x0112, 0x484: 0x0113, 0x485: 0x0112, + 0x486: 0x0113, 0x487: 0x0112, 0x488: 0x0014, 0x489: 0x0014, 0x48a: 0x0014, 0x48b: 0x0713, + 0x48c: 0x0712, 0x48d: 0x8d2b, 0x48e: 0x0012, 0x48f: 0x0010, 0x490: 0x0113, 0x491: 0x0112, + 0x492: 0x0113, 0x493: 0x0112, 0x494: 0x6552, 0x495: 0x0012, 0x496: 0x0113, 0x497: 0x0112, + 0x498: 0x0113, 0x499: 0x0112, 0x49a: 0x0113, 0x49b: 0x0112, 0x49c: 0x0113, 0x49d: 0x0112, + 0x49e: 0x0113, 0x49f: 0x0112, 0x4a0: 0x0113, 0x4a1: 0x0112, 0x4a2: 0x0113, 0x4a3: 0x0112, + 0x4a4: 0x0113, 0x4a5: 0x0112, 0x4a6: 0x0113, 0x4a7: 0x0112, 0x4a8: 0x0113, 0x4a9: 0x0112, + 0x4aa: 0x8d8b, 0x4ab: 0x8deb, 0x4ac: 0x8e4b, 0x4ad: 0x8eab, 0x4ae: 0x8f0b, 0x4af: 0x0012, + 0x4b0: 0x8f6b, 0x4b1: 0x8fcb, 0x4b2: 0x902b, 0x4b3: 0xb353, 0x4b4: 0x0113, 0x4b5: 0x0112, + 0x4b6: 0x0113, 0x4b7: 0x0112, 0x4b8: 0x0113, 0x4b9: 0x0112, 0x4ba: 0x0113, 0x4bb: 0x0112, + 0x4bc: 0x0113, 0x4bd: 0x0112, 0x4be: 0x0113, 0x4bf: 0x0112, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x90ea, 0x4c1: 0x916a, 0x4c2: 0x91ea, 0x4c3: 0x926a, 0x4c4: 0x931a, 0x4c5: 0x93ca, + 0x4c6: 0x944a, + 0x4d3: 0x94ca, 0x4d4: 0x95aa, 0x4d5: 0x968a, 0x4d6: 0x976a, 0x4d7: 0x984a, + 0x4dd: 0x0010, + 0x4de: 0x0034, 0x4df: 0x0010, 0x4e0: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, 0x4e3: 0x0010, + 0x4e4: 0x0010, 0x4e5: 0x0010, 0x4e6: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, + 0x4ea: 0x0010, 0x4eb: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010, + 0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f3: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010, + 0x4f6: 0x0010, 0x4f8: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010, + 0x4fc: 0x0010, 0x4fe: 0x0010, + // Block 0x14, offset 0x500 + 0x500: 0x2213, 0x501: 0x2213, 0x502: 0x2613, 0x503: 0x2613, 0x504: 0x2213, 0x505: 0x2213, + 0x506: 0x2e13, 0x507: 0x2e13, 0x508: 0x2213, 0x509: 0x2213, 0x50a: 0x2613, 0x50b: 0x2613, + 0x50c: 0x2213, 0x50d: 0x2213, 0x50e: 0x3e13, 0x50f: 0x3e13, 0x510: 0x2213, 0x511: 0x2213, + 0x512: 0x2613, 0x513: 0x2613, 0x514: 0x2213, 0x515: 0x2213, 0x516: 0x2e13, 0x517: 0x2e13, + 0x518: 0x2213, 0x519: 0x2213, 0x51a: 0x2613, 0x51b: 0x2613, 0x51c: 0x2213, 0x51d: 0x2213, + 0x51e: 0xbc53, 0x51f: 0xbc53, 0x520: 0xbf53, 0x521: 0xbf53, 0x522: 0x2212, 0x523: 0x2212, + 0x524: 0x2612, 0x525: 0x2612, 0x526: 0x2212, 0x527: 0x2212, 0x528: 0x2e12, 0x529: 0x2e12, + 0x52a: 0x2212, 0x52b: 0x2212, 0x52c: 0x2612, 0x52d: 0x2612, 0x52e: 0x2212, 0x52f: 0x2212, + 0x530: 0x3e12, 0x531: 0x3e12, 0x532: 0x2212, 0x533: 0x2212, 0x534: 0x2612, 0x535: 0x2612, + 0x536: 0x2212, 0x537: 0x2212, 0x538: 0x2e12, 0x539: 0x2e12, 0x53a: 0x2212, 0x53b: 0x2212, + 0x53c: 0x2612, 0x53d: 0x2612, 0x53e: 0x2212, 0x53f: 0x2212, + // Block 0x15, offset 0x540 + 0x542: 0x0010, + 0x547: 0x0010, 0x549: 0x0010, 0x54b: 0x0010, + 0x54d: 0x0010, 0x54e: 0x0010, 0x54f: 0x0010, 0x551: 0x0010, + 0x552: 0x0010, 0x554: 0x0010, 0x557: 0x0010, + 0x559: 0x0010, 0x55b: 0x0010, 0x55d: 0x0010, + 0x55f: 0x0010, 0x561: 0x0010, 0x562: 0x0010, + 0x564: 0x0010, 0x567: 0x0010, 0x568: 0x0010, 0x569: 0x0010, + 0x56a: 0x0010, 0x56c: 0x0010, 0x56d: 0x0010, 0x56e: 0x0010, 0x56f: 0x0010, + 0x570: 0x0010, 0x571: 0x0010, 0x572: 0x0010, 0x574: 0x0010, 0x575: 0x0010, + 0x576: 0x0010, 0x577: 0x0010, 0x579: 0x0010, 0x57a: 0x0010, 0x57b: 0x0010, + 0x57c: 0x0010, 0x57e: 0x0010, +} + +// caseIndex: 25 blocks, 1600 entries, 3200 bytes +// Block 0 is the zero block. +var caseIndex = [1600]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x14, 0xc3: 0x15, 0xc4: 0x16, 0xc5: 0x17, 0xc6: 0x01, 0xc7: 0x02, + 0xc8: 0x18, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x19, 0xcc: 0x1a, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07, + 0xd0: 0x1b, 0xd1: 0x1c, 0xd2: 0x1d, 0xd3: 0x1e, 0xd4: 0x1f, 0xd5: 0x20, 0xd6: 0x08, 0xd7: 0x21, + 0xd8: 0x22, 0xd9: 0x23, 0xda: 0x24, 0xdb: 0x25, 0xdc: 0x26, 0xdd: 0x27, 0xde: 0x28, 0xdf: 0x29, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09, + 0xf0: 0x14, 0xf3: 0x16, + // Block 0x4, offset 0x100 + 0x120: 0x2a, 0x121: 0x2b, 0x122: 0x2c, 0x123: 0x2d, 0x124: 0x2e, 0x125: 0x2f, 0x126: 0x30, 0x127: 0x31, + 0x128: 0x32, 0x129: 0x33, 0x12a: 0x34, 0x12b: 0x35, 0x12c: 0x36, 0x12d: 0x37, 0x12e: 0x38, 0x12f: 0x39, + 0x130: 0x3a, 0x131: 0x3b, 0x132: 0x3c, 0x133: 0x3d, 0x134: 0x3e, 0x135: 0x3f, 0x136: 0x40, 0x137: 0x41, + 0x138: 0x42, 0x139: 0x43, 0x13a: 0x44, 0x13b: 0x45, 0x13c: 0x46, 0x13d: 0x47, 0x13e: 0x48, 0x13f: 0x49, + // Block 0x5, offset 0x140 + 0x140: 0x4a, 0x141: 0x4b, 0x142: 0x4c, 0x143: 0x09, 0x144: 0x24, 0x145: 0x24, 0x146: 0x24, 0x147: 0x24, + 0x148: 0x24, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53, + 0x150: 0x54, 0x151: 0x24, 0x152: 0x24, 0x153: 0x24, 0x154: 0x24, 0x155: 0x24, 0x156: 0x24, 0x157: 0x24, + 0x158: 0x24, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b, + 0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62, + 0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69, + 0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71, + 0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x0a, 0x17e: 0x0b, 0x17f: 0x0c, + // Block 0x6, offset 0x180 + 0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0d, 0x185: 0x79, 0x186: 0x7a, + 0x192: 0x7b, 0x193: 0x0e, + 0x1b0: 0x7c, 0x1b1: 0x0f, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81, + 0x1b8: 0x82, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x24, 0x1c6: 0x87, + // Block 0x8, offset 0x200 + 0x200: 0x88, 0x201: 0x24, 0x202: 0x24, 0x203: 0x24, 0x204: 0x24, 0x205: 0x24, 0x206: 0x24, 0x207: 0x24, + 0x208: 0x24, 0x209: 0x24, 0x20a: 0x24, 0x20b: 0x24, 0x20c: 0x24, 0x20d: 0x24, 0x20e: 0x24, 0x20f: 0x24, + 0x210: 0x24, 0x211: 0x24, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x24, 0x215: 0x24, 0x216: 0x24, 0x217: 0x24, + 0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x10, 0x21f: 0x91, + 0x220: 0x92, 0x221: 0x93, 0x222: 0x24, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98, + 0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0, + 0x230: 0x24, 0x231: 0x24, 0x232: 0x24, 0x233: 0x24, 0x234: 0x24, 0x235: 0x24, 0x236: 0x24, 0x237: 0x24, + 0x238: 0x24, 0x239: 0x24, 0x23a: 0x24, 0x23b: 0x24, 0x23c: 0x24, 0x23d: 0x24, 0x23e: 0x24, 0x23f: 0x24, + // Block 0x9, offset 0x240 + 0x240: 0x24, 0x241: 0x24, 0x242: 0x24, 0x243: 0x24, 0x244: 0x24, 0x245: 0x24, 0x246: 0x24, 0x247: 0x24, + 0x248: 0x24, 0x249: 0x24, 0x24a: 0x24, 0x24b: 0x24, 0x24c: 0x24, 0x24d: 0x24, 0x24e: 0x24, 0x24f: 0x24, + 0x250: 0x24, 0x251: 0x24, 0x252: 0x24, 0x253: 0x24, 0x254: 0x24, 0x255: 0x24, 0x256: 0x24, 0x257: 0x24, + 0x258: 0x24, 0x259: 0x24, 0x25a: 0x24, 0x25b: 0x24, 0x25c: 0x24, 0x25d: 0x24, 0x25e: 0x24, 0x25f: 0x24, + 0x260: 0x24, 0x261: 0x24, 0x262: 0x24, 0x263: 0x24, 0x264: 0x24, 0x265: 0x24, 0x266: 0x24, 0x267: 0x24, + 0x268: 0x24, 0x269: 0x24, 0x26a: 0x24, 0x26b: 0x24, 0x26c: 0x24, 0x26d: 0x24, 0x26e: 0x24, 0x26f: 0x24, + 0x270: 0x24, 0x271: 0x24, 0x272: 0x24, 0x273: 0x24, 0x274: 0x24, 0x275: 0x24, 0x276: 0x24, 0x277: 0x24, + 0x278: 0x24, 0x279: 0x24, 0x27a: 0x24, 0x27b: 0x24, 0x27c: 0x24, 0x27d: 0x24, 0x27e: 0x24, 0x27f: 0x24, + // Block 0xa, offset 0x280 + 0x280: 0x24, 0x281: 0x24, 0x282: 0x24, 0x283: 0x24, 0x284: 0x24, 0x285: 0x24, 0x286: 0x24, 0x287: 0x24, + 0x288: 0x24, 0x289: 0x24, 0x28a: 0x24, 0x28b: 0x24, 0x28c: 0x24, 0x28d: 0x24, 0x28e: 0x24, 0x28f: 0x24, + 0x290: 0x24, 0x291: 0x24, 0x292: 0x24, 0x293: 0x24, 0x294: 0x24, 0x295: 0x24, 0x296: 0x24, 0x297: 0x24, + 0x298: 0x24, 0x299: 0x24, 0x29a: 0x24, 0x29b: 0x24, 0x29c: 0x24, 0x29d: 0x24, 0x29e: 0xa1, 0x29f: 0xa2, + // Block 0xb, offset 0x2c0 + 0x2ec: 0x11, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5, + 0x2f0: 0x24, 0x2f1: 0x24, 0x2f2: 0x24, 0x2f3: 0x24, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9, + 0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x24, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0, + // Block 0xc, offset 0x300 + 0x300: 0xb1, 0x301: 0xb2, 0x302: 0x24, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5, + 0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb, + 0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1, + 0x318: 0x24, 0x319: 0x24, 0x31a: 0x24, 0x31b: 0x24, 0x31c: 0xc2, 0x31d: 0xc3, + 0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9, + 0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf, + 0x330: 0x24, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2, 0x334: 0xd3, + 0x33c: 0xd4, 0x33d: 0xd5, 0x33f: 0xd6, + // Block 0xd, offset 0x340 + 0x340: 0xd7, 0x341: 0xd8, 0x342: 0xd9, 0x343: 0xda, 0x344: 0xdb, 0x345: 0xdc, 0x346: 0xdd, 0x347: 0xde, + 0x348: 0xdf, 0x34a: 0xe0, 0x34b: 0xe1, 0x34c: 0xe2, 0x34d: 0xe3, + 0x350: 0xe4, 0x351: 0xe5, 0x352: 0xe6, 0x353: 0xe7, 0x356: 0xe8, 0x357: 0xe9, + 0x358: 0xea, 0x359: 0xeb, 0x35a: 0xec, 0x35b: 0xed, 0x35c: 0xee, + 0x360: 0xef, 0x362: 0xf0, 0x363: 0xf1, 0x366: 0xf2, 0x367: 0xf3, + 0x368: 0xf4, 0x369: 0xf5, 0x36a: 0xf6, 0x36b: 0xf7, + 0x370: 0xf8, 0x371: 0xf9, 0x372: 0xfa, 0x374: 0xfb, 0x375: 0xfc, 0x376: 0xfd, + 0x37b: 0xfe, + // Block 0xe, offset 0x380 + 0x380: 0x24, 0x381: 0x24, 0x382: 0x24, 0x383: 0x24, 0x384: 0x24, 0x385: 0x24, 0x386: 0x24, 0x387: 0x24, + 0x388: 0x24, 0x389: 0x24, 0x38a: 0x24, 0x38b: 0x24, 0x38c: 0x24, 0x38d: 0x24, 0x38e: 0xff, + 0x390: 0x24, 0x391: 0x100, 0x392: 0x24, 0x393: 0x24, 0x394: 0x24, 0x395: 0x101, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x24, 0x3c1: 0x24, 0x3c2: 0x24, 0x3c3: 0x24, 0x3c4: 0x24, 0x3c5: 0x24, 0x3c6: 0x24, 0x3c7: 0x24, + 0x3c8: 0x24, 0x3c9: 0x24, 0x3ca: 0x24, 0x3cb: 0x24, 0x3cc: 0x24, 0x3cd: 0x24, 0x3ce: 0x24, 0x3cf: 0x24, + 0x3d0: 0x102, + // Block 0x10, offset 0x400 + 0x410: 0x24, 0x411: 0x24, 0x412: 0x24, 0x413: 0x24, 0x414: 0x24, 0x415: 0x24, 0x416: 0x24, 0x417: 0x24, + 0x418: 0x24, 0x419: 0x103, + // Block 0x11, offset 0x440 + 0x460: 0x24, 0x461: 0x24, 0x462: 0x24, 0x463: 0x24, 0x464: 0x24, 0x465: 0x24, 0x466: 0x24, 0x467: 0x24, + 0x468: 0xf7, 0x469: 0x104, 0x46b: 0x105, 0x46c: 0x106, 0x46d: 0x107, 0x46e: 0x108, + 0x479: 0x109, 0x47c: 0x24, 0x47d: 0x10a, 0x47e: 0x10b, 0x47f: 0x10c, + // Block 0x12, offset 0x480 + 0x4b0: 0x24, 0x4b1: 0x10d, 0x4b2: 0x10e, + // Block 0x13, offset 0x4c0 + 0x4c5: 0x10f, 0x4c6: 0x110, + 0x4c9: 0x111, + 0x4d0: 0x112, 0x4d1: 0x113, 0x4d2: 0x114, 0x4d3: 0x115, 0x4d4: 0x116, 0x4d5: 0x117, 0x4d6: 0x118, 0x4d7: 0x119, + 0x4d8: 0x11a, 0x4d9: 0x11b, 0x4da: 0x11c, 0x4db: 0x11d, 0x4dc: 0x11e, 0x4dd: 0x11f, 0x4de: 0x120, 0x4df: 0x121, + 0x4e8: 0x122, 0x4e9: 0x123, 0x4ea: 0x124, + // Block 0x14, offset 0x500 + 0x500: 0x125, 0x504: 0x126, 0x505: 0x127, + 0x50b: 0x128, + 0x520: 0x24, 0x521: 0x24, 0x522: 0x24, 0x523: 0x129, 0x524: 0x12, 0x525: 0x12a, + 0x538: 0x12b, 0x539: 0x13, 0x53a: 0x12c, + // Block 0x15, offset 0x540 + 0x544: 0x12d, 0x545: 0x12e, 0x546: 0x12f, + 0x54f: 0x130, + // Block 0x16, offset 0x580 + 0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f, + 0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x131, 0x5c1: 0x132, 0x5c4: 0x132, 0x5c5: 0x132, 0x5c6: 0x132, 0x5c7: 0x133, + // Block 0x18, offset 0x600 + 0x620: 0x15, +} + +// sparseOffsets: 289 entries, 578 bytes +var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x35, 0x38, 0x3c, 0x3f, 0x43, 0x4d, 0x4f, 0x57, 0x5e, 0x63, 0x71, 0x72, 0x80, 0x8f, 0x99, 0x9c, 0xa3, 0xab, 0xae, 0xb0, 0xbf, 0xc5, 0xd3, 0xde, 0xeb, 0xf6, 0x102, 0x10c, 0x118, 0x123, 0x12f, 0x13b, 0x143, 0x14c, 0x156, 0x161, 0x16d, 0x174, 0x17f, 0x184, 0x18c, 0x18f, 0x194, 0x198, 0x19c, 0x1a3, 0x1ac, 0x1b4, 0x1b5, 0x1be, 0x1c5, 0x1cd, 0x1d3, 0x1d8, 0x1dc, 0x1df, 0x1e1, 0x1e4, 0x1e9, 0x1ea, 0x1ec, 0x1ee, 0x1f0, 0x1f7, 0x1fc, 0x200, 0x209, 0x20c, 0x20f, 0x215, 0x216, 0x221, 0x222, 0x223, 0x228, 0x235, 0x23d, 0x245, 0x24e, 0x257, 0x260, 0x265, 0x268, 0x273, 0x281, 0x283, 0x28a, 0x28e, 0x29a, 0x29b, 0x2a6, 0x2ae, 0x2b6, 0x2bc, 0x2bd, 0x2cb, 0x2d0, 0x2d3, 0x2d8, 0x2dc, 0x2e2, 0x2e7, 0x2ea, 0x2ef, 0x2f4, 0x2f5, 0x2fb, 0x2fd, 0x2fe, 0x300, 0x302, 0x305, 0x306, 0x308, 0x30b, 0x311, 0x315, 0x317, 0x31c, 0x323, 0x32b, 0x334, 0x335, 0x33e, 0x342, 0x347, 0x34f, 0x355, 0x35b, 0x365, 0x36a, 0x373, 0x379, 0x380, 0x384, 0x38c, 0x38e, 0x390, 0x393, 0x395, 0x397, 0x398, 0x399, 0x39b, 0x39d, 0x3a3, 0x3a8, 0x3aa, 0x3b1, 0x3b4, 0x3b6, 0x3bc, 0x3c1, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c8, 0x3ca, 0x3cc, 0x3cf, 0x3d1, 0x3d4, 0x3dc, 0x3df, 0x3e3, 0x3eb, 0x3ed, 0x3ee, 0x3ef, 0x3f1, 0x3f7, 0x3f9, 0x3fa, 0x3fc, 0x3fe, 0x400, 0x40d, 0x40e, 0x40f, 0x413, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41c, 0x41f, 0x425, 0x426, 0x42a, 0x42e, 0x434, 0x437, 0x43e, 0x442, 0x446, 0x44d, 0x456, 0x45c, 0x462, 0x46c, 0x476, 0x478, 0x481, 0x487, 0x48d, 0x493, 0x496, 0x49c, 0x49f, 0x4a8, 0x4a9, 0x4b0, 0x4b4, 0x4b5, 0x4b8, 0x4ba, 0x4c1, 0x4c9, 0x4cf, 0x4d5, 0x4d6, 0x4dc, 0x4df, 0x4e7, 0x4ee, 0x4f8, 0x500, 0x503, 0x504, 0x505, 0x506, 0x508, 0x509, 0x50b, 0x50d, 0x50f, 0x513, 0x514, 0x516, 0x519, 0x51b, 0x51d, 0x51f, 0x524, 0x529, 0x52d, 0x52e, 0x531, 0x535, 0x540, 0x544, 0x54c, 0x551, 0x555, 0x558, 0x55c, 0x55f, 0x562, 0x567, 0x56b, 0x56f, 0x573, 0x577, 0x579, 0x57b, 0x57e, 0x583, 0x586, 0x588, 0x58b, 0x58d, 0x593, 0x59c, 0x5a1, 0x5a2, 0x5a5, 0x5a6, 0x5a7, 0x5a9, 0x5aa, 0x5ab} + +// sparseValues: 1451 entries, 5804 bytes +var sparseValues = [1451]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0004, lo: 0xa8, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xaa}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0004, lo: 0xaf, hi: 0xaf}, + {value: 0x0004, lo: 0xb4, hi: 0xb4}, + {value: 0x001a, lo: 0xb5, hi: 0xb5}, + {value: 0x0054, lo: 0xb7, hi: 0xb7}, + {value: 0x0004, lo: 0xb8, hi: 0xb8}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + // Block 0x1, offset 0x9 + {value: 0x2013, lo: 0x80, hi: 0x96}, + {value: 0x2013, lo: 0x98, hi: 0x9e}, + {value: 0x009a, lo: 0x9f, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xb6}, + {value: 0x2012, lo: 0xb8, hi: 0xbe}, + {value: 0x0252, lo: 0xbf, hi: 0xbf}, + // Block 0x2, offset 0xf + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x011b, lo: 0xb0, hi: 0xb0}, + {value: 0x019a, lo: 0xb1, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb7}, + {value: 0x0012, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x0553, lo: 0xbf, hi: 0xbf}, + // Block 0x3, offset 0x18 + {value: 0x0552, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x01da, lo: 0x89, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xb7}, + {value: 0x0253, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x028a, lo: 0xbf, hi: 0xbf}, + // Block 0x4, offset 0x24 + {value: 0x0117, lo: 0x80, hi: 0x9f}, + {value: 0x2f53, lo: 0xa0, hi: 0xa0}, + {value: 0x0012, lo: 0xa1, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xb3}, + {value: 0x0012, lo: 0xb4, hi: 0xb9}, + {value: 0x090b, lo: 0xba, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x2953, lo: 0xbd, hi: 0xbd}, + {value: 0x098b, lo: 0xbe, hi: 0xbe}, + {value: 0x0a0a, lo: 0xbf, hi: 0xbf}, + // Block 0x5, offset 0x2e + {value: 0x0015, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x97}, + {value: 0x0004, lo: 0x98, hi: 0x9d}, + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0015, lo: 0xa0, hi: 0xa4}, + {value: 0x0004, lo: 0xa5, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xbf}, + // Block 0x6, offset 0x35 + {value: 0x0024, lo: 0x80, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbf}, + // Block 0x7, offset 0x38 + {value: 0x6553, lo: 0x80, hi: 0x8f}, + {value: 0x2013, lo: 0x90, hi: 0x9f}, + {value: 0x5f53, lo: 0xa0, hi: 0xaf}, + {value: 0x2012, lo: 0xb0, hi: 0xbf}, + // Block 0x8, offset 0x3c + {value: 0x5f52, lo: 0x80, hi: 0x8f}, + {value: 0x6552, lo: 0x90, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x9, offset 0x3f + {value: 0x0117, lo: 0x80, hi: 0x81}, + {value: 0x0024, lo: 0x83, hi: 0x87}, + {value: 0x0014, lo: 0x88, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xbf}, + // Block 0xa, offset 0x43 + {value: 0x0f13, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x0316, lo: 0x89, hi: 0x8a}, + {value: 0x0716, lo: 0x8b, hi: 0x8c}, + {value: 0x0316, lo: 0x8d, hi: 0x8e}, + {value: 0x0f12, lo: 0x8f, hi: 0x8f}, + {value: 0x0117, lo: 0x90, hi: 0xbf}, + // Block 0xb, offset 0x4d + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x6553, lo: 0xb1, hi: 0xbf}, + // Block 0xc, offset 0x4f + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6853, lo: 0x90, hi: 0x96}, + {value: 0x0014, lo: 0x99, hi: 0x99}, + {value: 0x0010, lo: 0x9b, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0012, lo: 0xa0, hi: 0xa0}, + {value: 0x6552, lo: 0xa1, hi: 0xaf}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0xd, offset 0x57 + {value: 0x0034, lo: 0x81, hi: 0x82}, + {value: 0x0024, lo: 0x84, hi: 0x84}, + {value: 0x0034, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0xaa}, + {value: 0x0010, lo: 0xaf, hi: 0xb3}, + {value: 0x0054, lo: 0xb4, hi: 0xb4}, + // Block 0xe, offset 0x5e + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0024, lo: 0x90, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0014, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xf, offset 0x63 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9c}, + {value: 0x0024, lo: 0x9d, hi: 0x9e}, + {value: 0x0034, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x10, offset 0x71 + {value: 0x0010, lo: 0x80, hi: 0xbf}, + // Block 0x11, offset 0x72 + {value: 0x0010, lo: 0x80, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0024, lo: 0x9f, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xaa, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x12, offset 0x80 + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0034, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0034, lo: 0xb1, hi: 0xb1}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbd}, + {value: 0x0034, lo: 0xbe, hi: 0xbe}, + {value: 0x0024, lo: 0xbf, hi: 0xbf}, + // Block 0x13, offset 0x8f + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0024, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x88}, + {value: 0x0024, lo: 0x89, hi: 0x8a}, + {value: 0x0010, lo: 0x8d, hi: 0xbf}, + // Block 0x14, offset 0x99 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x15, offset 0x9c + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xb1}, + {value: 0x0034, lo: 0xb2, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0x16, offset 0xa3 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x99}, + {value: 0x0014, lo: 0x9a, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0xa3}, + {value: 0x0014, lo: 0xa4, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xad}, + // Block 0x17, offset 0xab + {value: 0x0010, lo: 0x80, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0xa0, hi: 0xaa}, + // Block 0x18, offset 0xae + {value: 0x0010, lo: 0xa0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbd}, + // Block 0x19, offset 0xb0 + {value: 0x0034, lo: 0x93, hi: 0x93}, + {value: 0x0024, lo: 0x94, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0024, lo: 0xaa, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbf}, + // Block 0x1a, offset 0xbf + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1b, offset 0xc5 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0x1c, offset 0xd3 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb6, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1d, offset 0xde + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xb1}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + // Block 0x1e, offset 0xeb + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x1f, offset 0xf6 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x99, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x20, offset 0x102 + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x21, offset 0x10c + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x85}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xbf}, + // Block 0x22, offset 0x118 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x23, offset 0x123 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x24, offset 0x12f + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0010, lo: 0xa8, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x25, offset 0x13b + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x26, offset 0x143 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb9}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbf}, + // Block 0x27, offset 0x14c + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x88}, + {value: 0x0014, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x28, offset 0x156 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x29, offset 0x161 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb2}, + // Block 0x2a, offset 0x16d + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x2b, offset 0x174 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x94, hi: 0x97}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xba, hi: 0xbf}, + // Block 0x2c, offset 0x17f + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x96}, + {value: 0x0010, lo: 0x9a, hi: 0xb1}, + {value: 0x0010, lo: 0xb3, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x2d, offset 0x184 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x94}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9f}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + // Block 0x2e, offset 0x18c + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xba}, + // Block 0x2f, offset 0x18f + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x30, offset 0x194 + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xba}, + {value: 0x0014, lo: 0xbb, hi: 0xbc}, + // Block 0x31, offset 0x198 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x32, offset 0x19c + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0034, lo: 0x98, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0034, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x33, offset 0x1a3 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xac}, + {value: 0x0034, lo: 0xb1, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xba, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x34, offset 0x1ac + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0024, lo: 0x82, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x86, hi: 0x87}, + {value: 0x0010, lo: 0x88, hi: 0x8c}, + {value: 0x0014, lo: 0x8d, hi: 0x97}, + {value: 0x0014, lo: 0x99, hi: 0xbc}, + // Block 0x35, offset 0x1b4 + {value: 0x0034, lo: 0x86, hi: 0x86}, + // Block 0x36, offset 0x1b5 + {value: 0x0010, lo: 0xab, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbe}, + // Block 0x37, offset 0x1be + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x96, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x99}, + {value: 0x0014, lo: 0x9e, hi: 0xa0}, + {value: 0x0010, lo: 0xa2, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xad}, + {value: 0x0014, lo: 0xb1, hi: 0xb4}, + // Block 0x38, offset 0x1c5 + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x6c53, lo: 0xa0, hi: 0xbf}, + // Block 0x39, offset 0x1cd + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x9a, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x3a, offset 0x1d3 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x3b, offset 0x1d8 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x82, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3c, offset 0x1dc + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3d, offset 0x1df + {value: 0x0010, lo: 0x80, hi: 0x9a}, + {value: 0x0024, lo: 0x9d, hi: 0x9f}, + // Block 0x3e, offset 0x1e1 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x7453, lo: 0xa0, hi: 0xaf}, + {value: 0x7853, lo: 0xb0, hi: 0xbf}, + // Block 0x3f, offset 0x1e4 + {value: 0x7c53, lo: 0x80, hi: 0x8f}, + {value: 0x8053, lo: 0x90, hi: 0x9f}, + {value: 0x7c53, lo: 0xa0, hi: 0xaf}, + {value: 0x0813, lo: 0xb0, hi: 0xb5}, + {value: 0x0892, lo: 0xb8, hi: 0xbd}, + // Block 0x40, offset 0x1e9 + {value: 0x0010, lo: 0x81, hi: 0xbf}, + // Block 0x41, offset 0x1ea + {value: 0x0010, lo: 0x80, hi: 0xac}, + {value: 0x0010, lo: 0xaf, hi: 0xbf}, + // Block 0x42, offset 0x1ec + {value: 0x0010, lo: 0x81, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x43, offset 0x1ee + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb8}, + // Block 0x44, offset 0x1f0 + {value: 0x0010, lo: 0x80, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0034, lo: 0x94, hi: 0x94}, + {value: 0x0010, lo: 0xa0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + // Block 0x45, offset 0x1f7 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xac}, + {value: 0x0010, lo: 0xae, hi: 0xb0}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + // Block 0x46, offset 0x1fc + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x47, offset 0x200 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x89, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0014, lo: 0x93, hi: 0x93}, + {value: 0x0004, lo: 0x97, hi: 0x97}, + {value: 0x0024, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0x48, offset 0x209 + {value: 0x0014, lo: 0x8b, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x49, offset 0x20c + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb8}, + // Block 0x4a, offset 0x20f + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x4b, offset 0x215 + {value: 0x0010, lo: 0x80, hi: 0xb5}, + // Block 0x4c, offset 0x216 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbb}, + // Block 0x4d, offset 0x221 + {value: 0x0010, lo: 0x86, hi: 0x8f}, + // Block 0x4e, offset 0x222 + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x4f, offset 0x223 + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + // Block 0x50, offset 0x228 + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x9e}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xac}, + {value: 0x0010, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xbc}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x51, offset 0x235 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xa7, hi: 0xa7}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + {value: 0x0034, lo: 0xb5, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbc}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0x52, offset 0x23d + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x53, offset 0x245 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0030, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8b}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xab, hi: 0xab}, + {value: 0x0034, lo: 0xac, hi: 0xac}, + {value: 0x0024, lo: 0xad, hi: 0xb3}, + // Block 0x54, offset 0x24e + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0030, lo: 0xaa, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbf}, + // Block 0x55, offset 0x257 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0030, lo: 0xb2, hi: 0xb3}, + // Block 0x56, offset 0x260 + {value: 0x0010, lo: 0x80, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0x57, offset 0x265 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8d, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x58, offset 0x268 + {value: 0x31ea, lo: 0x80, hi: 0x80}, + {value: 0x326a, lo: 0x81, hi: 0x81}, + {value: 0x32ea, lo: 0x82, hi: 0x82}, + {value: 0x336a, lo: 0x83, hi: 0x83}, + {value: 0x33ea, lo: 0x84, hi: 0x84}, + {value: 0x346a, lo: 0x85, hi: 0x85}, + {value: 0x34ea, lo: 0x86, hi: 0x86}, + {value: 0x356a, lo: 0x87, hi: 0x87}, + {value: 0x35ea, lo: 0x88, hi: 0x88}, + {value: 0x8353, lo: 0x90, hi: 0xba}, + {value: 0x8353, lo: 0xbd, hi: 0xbf}, + // Block 0x59, offset 0x273 + {value: 0x0024, lo: 0x90, hi: 0x92}, + {value: 0x0034, lo: 0x94, hi: 0x99}, + {value: 0x0024, lo: 0x9a, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9f}, + {value: 0x0024, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0034, lo: 0xa2, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xb3}, + {value: 0x0024, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb7}, + {value: 0x0024, lo: 0xb8, hi: 0xb9}, + {value: 0x0010, lo: 0xba, hi: 0xba}, + // Block 0x5a, offset 0x281 + {value: 0x0012, lo: 0x80, hi: 0xab}, + {value: 0x0015, lo: 0xac, hi: 0xbf}, + // Block 0x5b, offset 0x283 + {value: 0x0015, lo: 0x80, hi: 0xaa}, + {value: 0x0012, lo: 0xab, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb8}, + {value: 0x8752, lo: 0xb9, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbc}, + {value: 0x8b52, lo: 0xbd, hi: 0xbd}, + {value: 0x0012, lo: 0xbe, hi: 0xbf}, + // Block 0x5c, offset 0x28a + {value: 0x0012, lo: 0x80, hi: 0x8d}, + {value: 0x8f52, lo: 0x8e, hi: 0x8e}, + {value: 0x0012, lo: 0x8f, hi: 0x9a}, + {value: 0x0015, lo: 0x9b, hi: 0xbf}, + // Block 0x5d, offset 0x28e + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0024, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb9}, + {value: 0x0024, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbd}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x5e, offset 0x29a + {value: 0x0117, lo: 0x80, hi: 0xbf}, + // Block 0x5f, offset 0x29b + {value: 0x0117, lo: 0x80, hi: 0x95}, + {value: 0x369a, lo: 0x96, hi: 0x96}, + {value: 0x374a, lo: 0x97, hi: 0x97}, + {value: 0x37fa, lo: 0x98, hi: 0x98}, + {value: 0x38aa, lo: 0x99, hi: 0x99}, + {value: 0x395a, lo: 0x9a, hi: 0x9a}, + {value: 0x3a0a, lo: 0x9b, hi: 0x9b}, + {value: 0x0012, lo: 0x9c, hi: 0x9d}, + {value: 0x3abb, lo: 0x9e, hi: 0x9e}, + {value: 0x0012, lo: 0x9f, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x60, offset 0x2a6 + {value: 0x0812, lo: 0x80, hi: 0x87}, + {value: 0x0813, lo: 0x88, hi: 0x8f}, + {value: 0x0812, lo: 0x90, hi: 0x95}, + {value: 0x0813, lo: 0x98, hi: 0x9d}, + {value: 0x0812, lo: 0xa0, hi: 0xa7}, + {value: 0x0813, lo: 0xa8, hi: 0xaf}, + {value: 0x0812, lo: 0xb0, hi: 0xb7}, + {value: 0x0813, lo: 0xb8, hi: 0xbf}, + // Block 0x61, offset 0x2ae + {value: 0x0004, lo: 0x8b, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8f}, + {value: 0x0054, lo: 0x98, hi: 0x99}, + {value: 0x0054, lo: 0xa4, hi: 0xa4}, + {value: 0x0054, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xaa, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xaf}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x62, offset 0x2b6 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x94, hi: 0x94}, + {value: 0x0014, lo: 0xa0, hi: 0xa4}, + {value: 0x0014, lo: 0xa6, hi: 0xaf}, + {value: 0x0015, lo: 0xb1, hi: 0xb1}, + {value: 0x0015, lo: 0xbf, hi: 0xbf}, + // Block 0x63, offset 0x2bc + {value: 0x0015, lo: 0x90, hi: 0x9c}, + // Block 0x64, offset 0x2bd + {value: 0x0024, lo: 0x90, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x93}, + {value: 0x0024, lo: 0x94, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0xa0}, + {value: 0x0024, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa4}, + {value: 0x0034, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa7}, + {value: 0x0034, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xa9}, + {value: 0x0034, lo: 0xaa, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + // Block 0x65, offset 0x2cb + {value: 0x0016, lo: 0x85, hi: 0x86}, + {value: 0x0012, lo: 0x87, hi: 0x89}, + {value: 0xa452, lo: 0x8e, hi: 0x8e}, + {value: 0x1013, lo: 0xa0, hi: 0xaf}, + {value: 0x1012, lo: 0xb0, hi: 0xbf}, + // Block 0x66, offset 0x2d0 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x88}, + // Block 0x67, offset 0x2d3 + {value: 0xa753, lo: 0xb6, hi: 0xb7}, + {value: 0xaa53, lo: 0xb8, hi: 0xb9}, + {value: 0xad53, lo: 0xba, hi: 0xbb}, + {value: 0xaa53, lo: 0xbc, hi: 0xbd}, + {value: 0xa753, lo: 0xbe, hi: 0xbf}, + // Block 0x68, offset 0x2d8 + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6553, lo: 0x90, hi: 0x9f}, + {value: 0xb053, lo: 0xa0, hi: 0xae}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0x69, offset 0x2dc + {value: 0x0117, lo: 0x80, hi: 0xa3}, + {value: 0x0012, lo: 0xa4, hi: 0xa4}, + {value: 0x0716, lo: 0xab, hi: 0xac}, + {value: 0x0316, lo: 0xad, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb3}, + // Block 0x6a, offset 0x2e2 + {value: 0x6c52, lo: 0x80, hi: 0x9f}, + {value: 0x7052, lo: 0xa0, hi: 0xa5}, + {value: 0x7052, lo: 0xa7, hi: 0xa7}, + {value: 0x7052, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x6b, offset 0x2e7 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x6c, offset 0x2ea + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0010, lo: 0xb0, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x6d, offset 0x2ef + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9e}, + {value: 0x0024, lo: 0xa0, hi: 0xbf}, + // Block 0x6e, offset 0x2f4 + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + // Block 0x6f, offset 0x2f5 + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0xaa, hi: 0xad}, + {value: 0x0030, lo: 0xae, hi: 0xaf}, + {value: 0x0004, lo: 0xb1, hi: 0xb5}, + {value: 0x0014, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + // Block 0x70, offset 0x2fb + {value: 0x0034, lo: 0x99, hi: 0x9a}, + {value: 0x0004, lo: 0x9b, hi: 0x9e}, + // Block 0x71, offset 0x2fd + {value: 0x0004, lo: 0xbc, hi: 0xbe}, + // Block 0x72, offset 0x2fe + {value: 0x0010, lo: 0x85, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x73, offset 0x300 + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0010, lo: 0xa0, hi: 0xba}, + // Block 0x74, offset 0x302 + {value: 0x0010, lo: 0x80, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0xbf}, + // Block 0x75, offset 0x305 + {value: 0x0010, lo: 0x80, hi: 0x8c}, + // Block 0x76, offset 0x306 + {value: 0x0010, lo: 0x90, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x77, offset 0x308 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0xab}, + // Block 0x78, offset 0x30b + {value: 0x0117, lo: 0x80, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb2}, + {value: 0x0024, lo: 0xb4, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x79, offset 0x311 + {value: 0x0117, lo: 0x80, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9d}, + {value: 0x0024, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x7a, offset 0x315 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb1}, + // Block 0x7b, offset 0x317 + {value: 0x0004, lo: 0x80, hi: 0x96}, + {value: 0x0014, lo: 0x97, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xaf}, + {value: 0x0012, lo: 0xb0, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xbf}, + // Block 0x7c, offset 0x31c + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x0015, lo: 0xb0, hi: 0xb0}, + {value: 0x0012, lo: 0xb1, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x8753, lo: 0xbd, hi: 0xbd}, + {value: 0x0117, lo: 0xbe, hi: 0xbf}, + // Block 0x7d, offset 0x323 + {value: 0x0117, lo: 0x82, hi: 0x83}, + {value: 0x6553, lo: 0x84, hi: 0x84}, + {value: 0x908b, lo: 0x85, hi: 0x85}, + {value: 0x8f53, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0xb7, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbf}, + // Block 0x7e, offset 0x32b + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8b}, + {value: 0x0010, lo: 0x8c, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + // Block 0x7f, offset 0x334 + {value: 0x0010, lo: 0x80, hi: 0xb3}, + // Block 0x80, offset 0x335 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xa0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb7}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x81, offset 0x33e + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x82, offset 0x342 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0x92}, + {value: 0x0030, lo: 0x93, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0x83, offset 0x347 + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb9}, + {value: 0x0010, lo: 0xba, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x84, offset 0x34f + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0004, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x85, offset 0x355 + {value: 0x0010, lo: 0x80, hi: 0xa8}, + {value: 0x0014, lo: 0xa9, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0x86, offset 0x35b + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x87, offset 0x365 + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0024, lo: 0xbe, hi: 0xbf}, + // Block 0x88, offset 0x36a + {value: 0x0024, lo: 0x81, hi: 0x81}, + {value: 0x0004, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + // Block 0x89, offset 0x373 + {value: 0x0010, lo: 0x81, hi: 0x86}, + {value: 0x0010, lo: 0x89, hi: 0x8e}, + {value: 0x0010, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x8a, offset 0x379 + {value: 0x0012, lo: 0x80, hi: 0x92}, + {value: 0xb352, lo: 0x93, hi: 0x93}, + {value: 0x0012, lo: 0x94, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9f}, + {value: 0x0012, lo: 0xa0, hi: 0xa7}, + {value: 0x74d2, lo: 0xb0, hi: 0xbf}, + // Block 0x8b, offset 0x380 + {value: 0x78d2, lo: 0x80, hi: 0x8f}, + {value: 0x7cd2, lo: 0x90, hi: 0x9f}, + {value: 0x80d2, lo: 0xa0, hi: 0xaf}, + {value: 0x7cd2, lo: 0xb0, hi: 0xbf}, + // Block 0x8c, offset 0x384 + {value: 0x0010, lo: 0x80, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x8d, offset 0x38c + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x8e, offset 0x38e + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x8b, hi: 0xbb}, + // Block 0x8f, offset 0x390 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0xbf}, + // Block 0x90, offset 0x393 + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0004, lo: 0xb2, hi: 0xbf}, + // Block 0x91, offset 0x395 + {value: 0x0004, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x93, hi: 0xbf}, + // Block 0x92, offset 0x397 + {value: 0x0010, lo: 0x80, hi: 0xbd}, + // Block 0x93, offset 0x398 + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0x94, offset 0x399 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0xbf}, + // Block 0x95, offset 0x39b + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0xb0, hi: 0xbb}, + // Block 0x96, offset 0x39d + {value: 0x0014, lo: 0x80, hi: 0x8f}, + {value: 0x0054, lo: 0x93, hi: 0x93}, + {value: 0x0024, lo: 0xa0, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xad}, + {value: 0x0024, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + // Block 0x97, offset 0x3a3 + {value: 0x0010, lo: 0x8d, hi: 0x8f}, + {value: 0x0054, lo: 0x92, hi: 0x92}, + {value: 0x0054, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0xb0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0x98, offset 0x3a8 + {value: 0x0010, lo: 0x80, hi: 0xbc}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x99, offset 0x3aa + {value: 0x0054, lo: 0x87, hi: 0x87}, + {value: 0x0054, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0054, lo: 0x9a, hi: 0x9a}, + {value: 0x5f53, lo: 0xa1, hi: 0xba}, + {value: 0x0004, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9a, offset 0x3b1 + {value: 0x0004, lo: 0x80, hi: 0x80}, + {value: 0x5f52, lo: 0x81, hi: 0x9a}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + // Block 0x9b, offset 0x3b4 + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbe}, + // Block 0x9c, offset 0x3b6 + {value: 0x0010, lo: 0x82, hi: 0x87}, + {value: 0x0010, lo: 0x8a, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0x97}, + {value: 0x0010, lo: 0x9a, hi: 0x9c}, + {value: 0x0004, lo: 0xa3, hi: 0xa3}, + {value: 0x0014, lo: 0xb9, hi: 0xbb}, + // Block 0x9d, offset 0x3bc + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0010, lo: 0x8d, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xba}, + {value: 0x0010, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9e, offset 0x3c1 + {value: 0x0010, lo: 0x80, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x9d}, + // Block 0x9f, offset 0x3c3 + {value: 0x0010, lo: 0x80, hi: 0xba}, + // Block 0xa0, offset 0x3c4 + {value: 0x0010, lo: 0x80, hi: 0xb4}, + // Block 0xa1, offset 0x3c5 + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0xa2, offset 0x3c6 + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa3, offset 0x3c8 + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + // Block 0xa4, offset 0x3ca + {value: 0x0010, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xad, hi: 0xbf}, + // Block 0xa5, offset 0x3cc + {value: 0x0010, lo: 0x80, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0xb5}, + {value: 0x0024, lo: 0xb6, hi: 0xba}, + // Block 0xa6, offset 0x3cf + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa7, offset 0x3d1 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x91, hi: 0x95}, + // Block 0xa8, offset 0x3d4 + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x97}, + {value: 0xb653, lo: 0x98, hi: 0x9f}, + {value: 0xb953, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbf}, + // Block 0xa9, offset 0x3dc + {value: 0xb652, lo: 0x80, hi: 0x87}, + {value: 0xb952, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0xaa, offset 0x3df + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0xb953, lo: 0xb0, hi: 0xb7}, + {value: 0xb653, lo: 0xb8, hi: 0xbf}, + // Block 0xab, offset 0x3e3 + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x93}, + {value: 0xb952, lo: 0x98, hi: 0x9f}, + {value: 0xb652, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbb}, + // Block 0xac, offset 0x3eb + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xad, offset 0x3ed + {value: 0x0010, lo: 0x80, hi: 0xa3}, + // Block 0xae, offset 0x3ee + {value: 0x0010, lo: 0x80, hi: 0xb6}, + // Block 0xaf, offset 0x3ef + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xa7}, + // Block 0xb0, offset 0x3f1 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xb5}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xb1, offset 0x3f7 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb6}, + // Block 0xb2, offset 0x3f9 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + // Block 0xb3, offset 0x3fa + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + // Block 0xb4, offset 0x3fc + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb9}, + // Block 0xb5, offset 0x3fe + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0xb6, offset 0x400 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x8e, hi: 0x8e}, + {value: 0x0024, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x99, hi: 0xb5}, + {value: 0x0024, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xb7, offset 0x40d + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0xb8, offset 0x40e + {value: 0x0010, lo: 0x80, hi: 0x9c}, + // Block 0xb9, offset 0x40f + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + // Block 0xba, offset 0x413 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + // Block 0xbb, offset 0x415 + {value: 0x0010, lo: 0x80, hi: 0x91}, + // Block 0xbc, offset 0x416 + {value: 0x0010, lo: 0x80, hi: 0x88}, + // Block 0xbd, offset 0x417 + {value: 0x5653, lo: 0x80, hi: 0xb2}, + // Block 0xbe, offset 0x418 + {value: 0x5652, lo: 0x80, hi: 0xb2}, + // Block 0xbf, offset 0x419 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xc0, offset 0x41c + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xc1, offset 0x41f + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x87}, + {value: 0x0024, lo: 0x88, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x8b}, + {value: 0x0024, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + // Block 0xc2, offset 0x425 + {value: 0x0010, lo: 0xa0, hi: 0xb6}, + // Block 0xc3, offset 0x426 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xc4, offset 0x42a + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xc5, offset 0x42e + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb6}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + // Block 0xc6, offset 0x434 + {value: 0x0014, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xc7, offset 0x437 + {value: 0x0024, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0xc8, offset 0x43e + {value: 0x0010, lo: 0x84, hi: 0x86}, + {value: 0x0010, lo: 0x90, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + // Block 0xc9, offset 0x442 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xca, offset 0x446 + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x89, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + // Block 0xcb, offset 0x44d + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb4}, + {value: 0x0030, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xb7}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0xcc, offset 0x456 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xcd, offset 0x45c + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa2}, + {value: 0x0014, lo: 0xa3, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xce, offset 0x462 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xcf, offset 0x46c + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0030, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9d, hi: 0xa3}, + {value: 0x0024, lo: 0xa6, hi: 0xac}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + // Block 0xd0, offset 0x476 + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xd1, offset 0x478 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0x9f, hi: 0x9f}, + // Block 0xd2, offset 0x481 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xd3, offset 0x487 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd4, offset 0x48d + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd5, offset 0x493 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x98, hi: 0x9b}, + {value: 0x0014, lo: 0x9c, hi: 0x9d}, + // Block 0xd6, offset 0x496 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd7, offset 0x49c + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd8, offset 0x49f + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0014, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb5}, + {value: 0x0030, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + // Block 0xd9, offset 0x4a8 + {value: 0x0010, lo: 0x80, hi: 0x89}, + // Block 0xda, offset 0x4a9 + {value: 0x0014, lo: 0x9d, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xdb, offset 0x4b0 + {value: 0x0010, lo: 0x80, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + // Block 0xdc, offset 0x4b4 + {value: 0x5f53, lo: 0xa0, hi: 0xbf}, + // Block 0xdd, offset 0x4b5 + {value: 0x5f52, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xde, offset 0x4b8 + {value: 0x0010, lo: 0xa0, hi: 0xa7}, + {value: 0x0010, lo: 0xaa, hi: 0xbf}, + // Block 0xdf, offset 0x4ba + {value: 0x0010, lo: 0x80, hi: 0x93}, + {value: 0x0014, lo: 0x94, hi: 0x97}, + {value: 0x0014, lo: 0x9a, hi: 0x9b}, + {value: 0x0010, lo: 0x9c, hi: 0x9f}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + // Block 0xe0, offset 0x4c1 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x8a}, + {value: 0x0010, lo: 0x8b, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbb, hi: 0xbe}, + // Block 0xe1, offset 0x4c9 + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0014, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x98}, + {value: 0x0014, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0x9c, hi: 0xbf}, + // Block 0xe2, offset 0x4cf + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0014, lo: 0x8a, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x99}, + {value: 0x0010, lo: 0x9d, hi: 0x9d}, + // Block 0xe3, offset 0x4d5 + {value: 0x0010, lo: 0x80, hi: 0xb8}, + // Block 0xe4, offset 0x4d6 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb6}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xe5, offset 0x4dc + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0xe6, offset 0x4df + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0014, lo: 0x92, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xa9}, + {value: 0x0014, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0xe7, offset 0x4e7 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb6}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xe8, offset 0x4ee + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa5}, + {value: 0x0010, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xbf}, + // Block 0xe9, offset 0x4f8 + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0014, lo: 0x90, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0x96}, + {value: 0x0034, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0xea, offset 0x500 + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + // Block 0xeb, offset 0x503 + {value: 0x0010, lo: 0x80, hi: 0x99}, + // Block 0xec, offset 0x504 + {value: 0x0010, lo: 0x80, hi: 0xae}, + // Block 0xed, offset 0x505 + {value: 0x0010, lo: 0x80, hi: 0x83}, + // Block 0xee, offset 0x506 + {value: 0x0010, lo: 0x80, hi: 0xae}, + {value: 0x0014, lo: 0xb0, hi: 0xb8}, + // Block 0xef, offset 0x508 + {value: 0x0010, lo: 0x80, hi: 0x86}, + // Block 0xf0, offset 0x509 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0xf1, offset 0x50b + {value: 0x0010, lo: 0x90, hi: 0xad}, + {value: 0x0034, lo: 0xb0, hi: 0xb4}, + // Block 0xf2, offset 0x50d + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb6}, + // Block 0xf3, offset 0x50f + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa3, hi: 0xb7}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xf4, offset 0x513 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + // Block 0xf5, offset 0x514 + {value: 0x2013, lo: 0x80, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xbf}, + // Block 0xf6, offset 0x516 + {value: 0x0010, lo: 0x80, hi: 0x8a}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0xf7, offset 0x519 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0014, lo: 0x8f, hi: 0x9f}, + // Block 0xf8, offset 0x51b + {value: 0x0014, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa3, hi: 0xa3}, + // Block 0xf9, offset 0x51d + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbc}, + // Block 0xfa, offset 0x51f + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0034, lo: 0x9e, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa3}, + // Block 0xfb, offset 0x524 + {value: 0x0030, lo: 0xa5, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xa9}, + {value: 0x0030, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbf}, + // Block 0xfc, offset 0x529 + {value: 0x0034, lo: 0x80, hi: 0x82}, + {value: 0x0024, lo: 0x85, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8b}, + {value: 0x0024, lo: 0xaa, hi: 0xad}, + // Block 0xfd, offset 0x52d + {value: 0x0024, lo: 0x82, hi: 0x84}, + // Block 0xfe, offset 0x52e + {value: 0x0013, lo: 0x80, hi: 0x99}, + {value: 0x0012, lo: 0x9a, hi: 0xb3}, + {value: 0x0013, lo: 0xb4, hi: 0xbf}, + // Block 0xff, offset 0x531 + {value: 0x0013, lo: 0x80, hi: 0x8d}, + {value: 0x0012, lo: 0x8e, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0xa7}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0x100, offset 0x535 + {value: 0x0013, lo: 0x80, hi: 0x81}, + {value: 0x0012, lo: 0x82, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0x9c}, + {value: 0x0013, lo: 0x9e, hi: 0x9f}, + {value: 0x0013, lo: 0xa2, hi: 0xa2}, + {value: 0x0013, lo: 0xa5, hi: 0xa6}, + {value: 0x0013, lo: 0xa9, hi: 0xac}, + {value: 0x0013, lo: 0xae, hi: 0xb5}, + {value: 0x0012, lo: 0xb6, hi: 0xb9}, + {value: 0x0012, lo: 0xbb, hi: 0xbb}, + {value: 0x0012, lo: 0xbd, hi: 0xbf}, + // Block 0x101, offset 0x540 + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0012, lo: 0x85, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0x102, offset 0x544 + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0013, lo: 0x84, hi: 0x85}, + {value: 0x0013, lo: 0x87, hi: 0x8a}, + {value: 0x0013, lo: 0x8d, hi: 0x94}, + {value: 0x0013, lo: 0x96, hi: 0x9c}, + {value: 0x0012, lo: 0x9e, hi: 0xb7}, + {value: 0x0013, lo: 0xb8, hi: 0xb9}, + {value: 0x0013, lo: 0xbb, hi: 0xbe}, + // Block 0x103, offset 0x54c + {value: 0x0013, lo: 0x80, hi: 0x84}, + {value: 0x0013, lo: 0x86, hi: 0x86}, + {value: 0x0013, lo: 0x8a, hi: 0x90}, + {value: 0x0012, lo: 0x92, hi: 0xab}, + {value: 0x0013, lo: 0xac, hi: 0xbf}, + // Block 0x104, offset 0x551 + {value: 0x0013, lo: 0x80, hi: 0x85}, + {value: 0x0012, lo: 0x86, hi: 0x9f}, + {value: 0x0013, lo: 0xa0, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbf}, + // Block 0x105, offset 0x555 + {value: 0x0012, lo: 0x80, hi: 0x93}, + {value: 0x0013, lo: 0x94, hi: 0xad}, + {value: 0x0012, lo: 0xae, hi: 0xbf}, + // Block 0x106, offset 0x558 + {value: 0x0012, lo: 0x80, hi: 0x87}, + {value: 0x0013, lo: 0x88, hi: 0xa1}, + {value: 0x0012, lo: 0xa2, hi: 0xbb}, + {value: 0x0013, lo: 0xbc, hi: 0xbf}, + // Block 0x107, offset 0x55c + {value: 0x0013, lo: 0x80, hi: 0x95}, + {value: 0x0012, lo: 0x96, hi: 0xaf}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x108, offset 0x55f + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0012, lo: 0x8a, hi: 0xa5}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0x109, offset 0x562 + {value: 0x0013, lo: 0x80, hi: 0x80}, + {value: 0x0012, lo: 0x82, hi: 0x9a}, + {value: 0x0012, lo: 0x9c, hi: 0xa1}, + {value: 0x0013, lo: 0xa2, hi: 0xba}, + {value: 0x0012, lo: 0xbc, hi: 0xbf}, + // Block 0x10a, offset 0x567 + {value: 0x0012, lo: 0x80, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0xb4}, + {value: 0x0012, lo: 0xb6, hi: 0xbf}, + // Block 0x10b, offset 0x56b + {value: 0x0012, lo: 0x80, hi: 0x8e}, + {value: 0x0012, lo: 0x90, hi: 0x95}, + {value: 0x0013, lo: 0x96, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x10c, offset 0x56f + {value: 0x0012, lo: 0x80, hi: 0x88}, + {value: 0x0012, lo: 0x8a, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0x10d, offset 0x573 + {value: 0x0012, lo: 0x80, hi: 0x82}, + {value: 0x0012, lo: 0x84, hi: 0x89}, + {value: 0x0017, lo: 0x8a, hi: 0x8b}, + {value: 0x0010, lo: 0x8e, hi: 0xbf}, + // Block 0x10e, offset 0x577 + {value: 0x0014, lo: 0x80, hi: 0xb6}, + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x10f, offset 0x579 + {value: 0x0014, lo: 0x80, hi: 0xac}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x110, offset 0x57b + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x9b, hi: 0x9f}, + {value: 0x0014, lo: 0xa1, hi: 0xaf}, + // Block 0x111, offset 0x57e + {value: 0x0024, lo: 0x80, hi: 0x86}, + {value: 0x0024, lo: 0x88, hi: 0x98}, + {value: 0x0024, lo: 0x9b, hi: 0xa1}, + {value: 0x0024, lo: 0xa3, hi: 0xa4}, + {value: 0x0024, lo: 0xa6, hi: 0xaa}, + // Block 0x112, offset 0x583 + {value: 0x0010, lo: 0x80, hi: 0xac}, + {value: 0x0024, lo: 0xb0, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xbd}, + // Block 0x113, offset 0x586 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + // Block 0x114, offset 0x588 + {value: 0x0010, lo: 0x80, hi: 0xab}, + {value: 0x0024, lo: 0xac, hi: 0xaf}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x115, offset 0x58b + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0034, lo: 0x90, hi: 0x96}, + // Block 0x116, offset 0x58d + {value: 0xbc52, lo: 0x80, hi: 0x81}, + {value: 0xbf52, lo: 0x82, hi: 0x83}, + {value: 0x0024, lo: 0x84, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8b}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x117, offset 0x593 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x9f}, + {value: 0x0010, lo: 0xa1, hi: 0xa2}, + {value: 0x0010, lo: 0xa4, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb7}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + // Block 0x118, offset 0x59c + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x9b}, + {value: 0x0010, lo: 0xa1, hi: 0xa3}, + {value: 0x0010, lo: 0xa5, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xbb}, + // Block 0x119, offset 0x5a1 + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x11a, offset 0x5a2 + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x11b, offset 0x5a5 + {value: 0x0013, lo: 0x80, hi: 0x89}, + // Block 0x11c, offset 0x5a6 + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x11d, offset 0x5a7 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0014, lo: 0xa0, hi: 0xbf}, + // Block 0x11e, offset 0x5a9 + {value: 0x0014, lo: 0x80, hi: 0xbf}, + // Block 0x11f, offset 0x5aa + {value: 0x0014, lo: 0x80, hi: 0xaf}, +} + +// Total table size 15070 bytes (14KiB); checksum: 1EB13752 diff --git a/vendor/golang.org/x/text/cases/tables13.0.0.go b/vendor/golang.org/x/text/cases/tables13.0.0.go new file mode 100644 index 000000000000..6187e6b4628c --- /dev/null +++ b/vendor/golang.org/x/text/cases/tables13.0.0.go @@ -0,0 +1,2399 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +//go:build go1.16 && !go1.21 + +package cases + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "13.0.0" + +var xorData string = "" + // Size: 192 bytes + "\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" + + "\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" + + "\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" + + "\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" + + "\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" + + "\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" + + "\x0b!\x10\x00\x0b!0\x001\x00\x00\x0b(\x04\x00\x03\x04\x1e\x00\x0b)\x08" + + "\x00\x03\x0a\x00\x02:\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<" + + "\x00\x01&\x00\x01*\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01" + + "\x1e\x00\x01\x22" + +var exceptions string = "" + // Size: 2450 bytes + "\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" + + "\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" + + "\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" + + "\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" + + "\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" + + "\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꟅꟅ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ι" + + "ΙΙ\x166ΐΪ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12" + + "φΦΦ\x12\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x10\x1bᲐა" + + "\x10\x1bᲑბ\x10\x1bᲒგ\x10\x1bᲓდ\x10\x1bᲔე\x10\x1bᲕვ\x10\x1bᲖზ\x10\x1bᲗთ" + + "\x10\x1bᲘი\x10\x1bᲙკ\x10\x1bᲚლ\x10\x1bᲛმ\x10\x1bᲜნ\x10\x1bᲝო\x10\x1bᲞპ" + + "\x10\x1bᲟჟ\x10\x1bᲠრ\x10\x1bᲡს\x10\x1bᲢტ\x10\x1bᲣუ\x10\x1bᲤფ\x10\x1bᲥქ" + + "\x10\x1bᲦღ\x10\x1bᲧყ\x10\x1bᲨშ\x10\x1bᲩჩ\x10\x1bᲪც\x10\x1bᲫძ\x10\x1bᲬწ" + + "\x10\x1bᲭჭ\x10\x1bᲮხ\x10\x1bᲯჯ\x10\x1bᲰჰ\x10\x1bᲱჱ\x10\x1bᲲჲ\x10\x1bᲳჳ" + + "\x10\x1bᲴჴ\x10\x1bᲵჵ\x10\x1bᲶჶ\x10\x1bᲷჷ\x10\x1bᲸჸ\x10\x1bᲹჹ\x10\x1bᲺჺ" + + "\x10\x1bᲽჽ\x10\x1bᲾჾ\x10\x1bᲿჿ\x12\x12вВВ\x12\x12дДД\x12\x12оОО\x12\x12с" + + "СС\x12\x12тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13\x1bꙋꙊꙊ\x13\x1bẖH̱H̱" + + "\x13\x1bẗT̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1baʾAʾAʾ\x13\x1bṡṠṠ\x12" + + "\x10ssß\x14$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ" + + "\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ" + + "\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ\x15\x1dἄιᾄἌΙ\x15" + + "\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ\x15+ἢιἪΙᾚ\x15+ἣι" + + "ἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨΙ\x15\x1dἡιᾑἩΙ" + + "\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15\x1dἦιᾖἮΙ\x15" + + "\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ\x15+ὥιὭΙᾭ" + + "\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ\x15\x1dὣιᾣὫΙ" + + "\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰιᾺΙᾺͅ\x14#αιΑΙ" + + "ᾼ\x14$άιΆΙΆͅ\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x12ιΙΙ\x15-ὴιῊΙ" + + "Ὴͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ\x166ῒΙ" + + "̈̀Ϊ̀\x166ΐΪ́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ̀\x166ΰΫ́Ϋ" + + "́\x14$ῤΡ̓Ρ̓\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ" + + "\x14$ῶΩ͂Ω͂\x166ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12" + + "\x10ɫɫ\x12\x10ɽɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12" + + "\x10ɒɒ\x12\x10ȿȿ\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12" + + "\x10ɬɬ\x12\x10ɪɪ\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x10ʂʂ\x12\x12ffFFFf" + + "\x12\x12fiFIFi\x12\x12flFLFl\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12st" + + "STSt\x12\x12stSTSt\x14$մնՄՆՄն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄ" + + "խ" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// caseTrie. Total size: 12538 bytes (12.24 KiB). Checksum: af4dfa7d60c71d4c. +type caseTrie struct{} + +func newCaseTrie(i int) *caseTrie { + return &caseTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *caseTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 20: + return uint16(caseValues[n<<6+uint32(b)]) + default: + n -= 20 + return uint16(sparse.lookup(n, b)) + } +} + +// caseValues: 22 blocks, 1408 entries, 2816 bytes +// The third block is the zero block. +var caseValues = [1408]uint16{ + // Block 0x0, offset 0x0 + 0x27: 0x0054, + 0x2e: 0x0054, + 0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010, + 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054, + // Block 0x1, offset 0x40 + 0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013, + 0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013, + 0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013, + 0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013, + 0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013, + 0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012, + 0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012, + 0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012, + 0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012, + 0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112, + 0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713, + 0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313, + 0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653, + 0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53, + 0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112, + 0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853, + 0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13, + 0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313, + 0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010, + 0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452, + // Block 0x4, offset 0x100 + 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359, + 0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619, + 0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313, + 0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13, + 0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452, + 0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112, + 0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112, + 0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112, + 0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112, + 0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112, + 0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112, + // Block 0x5, offset 0x140 + 0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53, + 0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112, + 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a, + 0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152, + 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012, + 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052, + 0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652, + 0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52, + 0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252, + 0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012, + 0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012, + // Block 0x6, offset 0x180 + 0x180: 0x3552, 0x181: 0x0012, 0x182: 0x110a, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012, + 0x186: 0x0012, 0x187: 0x118a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52, + 0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012, + 0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012, + 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x120a, + 0x19e: 0x128a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012, + 0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012, + 0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012, + 0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015, + 0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014, + 0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x130d, + 0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024, + 0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024, + 0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024, + 0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034, + 0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024, + 0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024, + 0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024, + 0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004, + 0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52, + 0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353, + // Block 0x8, offset 0x200 + 0x204: 0x0004, 0x205: 0x0004, + 0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513, + 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x138a, 0x211: 0x2013, + 0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013, + 0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013, + 0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53, + 0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53, + 0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512, + 0x230: 0x14ca, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012, + 0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012, + 0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012, + // Block 0x9, offset 0x240 + 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x160a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52, + 0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52, + 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x168a, 0x251: 0x170a, + 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x178a, 0x256: 0x180a, 0x257: 0x1812, + 0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112, + 0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112, + 0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112, + 0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112, + 0x270: 0x188a, 0x271: 0x190a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x198a, + 0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112, + 0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053, + // Block 0xa, offset 0x280 + 0x280: 0x6852, 0x281: 0x6852, 0x282: 0x6852, 0x283: 0x6852, 0x284: 0x6852, 0x285: 0x6852, + 0x286: 0x6852, 0x287: 0x1a0a, 0x288: 0x0012, 0x28a: 0x0010, + 0x291: 0x0034, + 0x292: 0x0024, 0x293: 0x0024, 0x294: 0x0024, 0x295: 0x0024, 0x296: 0x0034, 0x297: 0x0024, + 0x298: 0x0024, 0x299: 0x0024, 0x29a: 0x0034, 0x29b: 0x0034, 0x29c: 0x0024, 0x29d: 0x0024, + 0x29e: 0x0024, 0x29f: 0x0024, 0x2a0: 0x0024, 0x2a1: 0x0024, 0x2a2: 0x0034, 0x2a3: 0x0034, + 0x2a4: 0x0034, 0x2a5: 0x0034, 0x2a6: 0x0034, 0x2a7: 0x0034, 0x2a8: 0x0024, 0x2a9: 0x0024, + 0x2aa: 0x0034, 0x2ab: 0x0024, 0x2ac: 0x0024, 0x2ad: 0x0034, 0x2ae: 0x0034, 0x2af: 0x0024, + 0x2b0: 0x0034, 0x2b1: 0x0034, 0x2b2: 0x0034, 0x2b3: 0x0034, 0x2b4: 0x0034, 0x2b5: 0x0034, + 0x2b6: 0x0034, 0x2b7: 0x0034, 0x2b8: 0x0034, 0x2b9: 0x0034, 0x2ba: 0x0034, 0x2bb: 0x0034, + 0x2bc: 0x0034, 0x2bd: 0x0034, 0x2bf: 0x0034, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x7053, 0x2c1: 0x7053, 0x2c2: 0x7053, 0x2c3: 0x7053, 0x2c4: 0x7053, 0x2c5: 0x7053, + 0x2c7: 0x7053, + 0x2cd: 0x7053, 0x2d0: 0x1aea, 0x2d1: 0x1b6a, + 0x2d2: 0x1bea, 0x2d3: 0x1c6a, 0x2d4: 0x1cea, 0x2d5: 0x1d6a, 0x2d6: 0x1dea, 0x2d7: 0x1e6a, + 0x2d8: 0x1eea, 0x2d9: 0x1f6a, 0x2da: 0x1fea, 0x2db: 0x206a, 0x2dc: 0x20ea, 0x2dd: 0x216a, + 0x2de: 0x21ea, 0x2df: 0x226a, 0x2e0: 0x22ea, 0x2e1: 0x236a, 0x2e2: 0x23ea, 0x2e3: 0x246a, + 0x2e4: 0x24ea, 0x2e5: 0x256a, 0x2e6: 0x25ea, 0x2e7: 0x266a, 0x2e8: 0x26ea, 0x2e9: 0x276a, + 0x2ea: 0x27ea, 0x2eb: 0x286a, 0x2ec: 0x28ea, 0x2ed: 0x296a, 0x2ee: 0x29ea, 0x2ef: 0x2a6a, + 0x2f0: 0x2aea, 0x2f1: 0x2b6a, 0x2f2: 0x2bea, 0x2f3: 0x2c6a, 0x2f4: 0x2cea, 0x2f5: 0x2d6a, + 0x2f6: 0x2dea, 0x2f7: 0x2e6a, 0x2f8: 0x2eea, 0x2f9: 0x2f6a, 0x2fa: 0x2fea, + 0x2fc: 0x0014, 0x2fd: 0x306a, 0x2fe: 0x30ea, 0x2ff: 0x316a, + // Block 0xc, offset 0x300 + 0x300: 0x0812, 0x301: 0x0812, 0x302: 0x0812, 0x303: 0x0812, 0x304: 0x0812, 0x305: 0x0812, + 0x308: 0x0813, 0x309: 0x0813, 0x30a: 0x0813, 0x30b: 0x0813, + 0x30c: 0x0813, 0x30d: 0x0813, 0x310: 0x3b1a, 0x311: 0x0812, + 0x312: 0x3bfa, 0x313: 0x0812, 0x314: 0x3d3a, 0x315: 0x0812, 0x316: 0x3e7a, 0x317: 0x0812, + 0x319: 0x0813, 0x31b: 0x0813, 0x31d: 0x0813, + 0x31f: 0x0813, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x0812, 0x323: 0x0812, + 0x324: 0x0812, 0x325: 0x0812, 0x326: 0x0812, 0x327: 0x0812, 0x328: 0x0813, 0x329: 0x0813, + 0x32a: 0x0813, 0x32b: 0x0813, 0x32c: 0x0813, 0x32d: 0x0813, 0x32e: 0x0813, 0x32f: 0x0813, + 0x330: 0x9252, 0x331: 0x9252, 0x332: 0x9552, 0x333: 0x9552, 0x334: 0x9852, 0x335: 0x9852, + 0x336: 0x9b52, 0x337: 0x9b52, 0x338: 0x9e52, 0x339: 0x9e52, 0x33a: 0xa152, 0x33b: 0xa152, + 0x33c: 0x4d52, 0x33d: 0x4d52, + // Block 0xd, offset 0x340 + 0x340: 0x3fba, 0x341: 0x40aa, 0x342: 0x419a, 0x343: 0x428a, 0x344: 0x437a, 0x345: 0x446a, + 0x346: 0x455a, 0x347: 0x464a, 0x348: 0x4739, 0x349: 0x4829, 0x34a: 0x4919, 0x34b: 0x4a09, + 0x34c: 0x4af9, 0x34d: 0x4be9, 0x34e: 0x4cd9, 0x34f: 0x4dc9, 0x350: 0x4eba, 0x351: 0x4faa, + 0x352: 0x509a, 0x353: 0x518a, 0x354: 0x527a, 0x355: 0x536a, 0x356: 0x545a, 0x357: 0x554a, + 0x358: 0x5639, 0x359: 0x5729, 0x35a: 0x5819, 0x35b: 0x5909, 0x35c: 0x59f9, 0x35d: 0x5ae9, + 0x35e: 0x5bd9, 0x35f: 0x5cc9, 0x360: 0x5dba, 0x361: 0x5eaa, 0x362: 0x5f9a, 0x363: 0x608a, + 0x364: 0x617a, 0x365: 0x626a, 0x366: 0x635a, 0x367: 0x644a, 0x368: 0x6539, 0x369: 0x6629, + 0x36a: 0x6719, 0x36b: 0x6809, 0x36c: 0x68f9, 0x36d: 0x69e9, 0x36e: 0x6ad9, 0x36f: 0x6bc9, + 0x370: 0x0812, 0x371: 0x0812, 0x372: 0x6cba, 0x373: 0x6dca, 0x374: 0x6e9a, + 0x376: 0x6f7a, 0x377: 0x705a, 0x378: 0x0813, 0x379: 0x0813, 0x37a: 0x9253, 0x37b: 0x9253, + 0x37c: 0x7199, 0x37d: 0x0004, 0x37e: 0x726a, 0x37f: 0x0004, + // Block 0xe, offset 0x380 + 0x380: 0x0004, 0x381: 0x0004, 0x382: 0x72ea, 0x383: 0x73fa, 0x384: 0x74ca, + 0x386: 0x75aa, 0x387: 0x768a, 0x388: 0x9553, 0x389: 0x9553, 0x38a: 0x9853, 0x38b: 0x9853, + 0x38c: 0x77c9, 0x38d: 0x0004, 0x38e: 0x0004, 0x38f: 0x0004, 0x390: 0x0812, 0x391: 0x0812, + 0x392: 0x789a, 0x393: 0x79da, 0x396: 0x7b1a, 0x397: 0x7bfa, + 0x398: 0x0813, 0x399: 0x0813, 0x39a: 0x9b53, 0x39b: 0x9b53, 0x39d: 0x0004, + 0x39e: 0x0004, 0x39f: 0x0004, 0x3a0: 0x0812, 0x3a1: 0x0812, 0x3a2: 0x7d3a, 0x3a3: 0x7e7a, + 0x3a4: 0x7fba, 0x3a5: 0x0912, 0x3a6: 0x809a, 0x3a7: 0x817a, 0x3a8: 0x0813, 0x3a9: 0x0813, + 0x3aa: 0xa153, 0x3ab: 0xa153, 0x3ac: 0x0913, 0x3ad: 0x0004, 0x3ae: 0x0004, 0x3af: 0x0004, + 0x3b2: 0x82ba, 0x3b3: 0x83ca, 0x3b4: 0x849a, + 0x3b6: 0x857a, 0x3b7: 0x865a, 0x3b8: 0x9e53, 0x3b9: 0x9e53, 0x3ba: 0x4d53, 0x3bb: 0x4d53, + 0x3bc: 0x8799, 0x3bd: 0x0004, 0x3be: 0x0004, + // Block 0xf, offset 0x3c0 + 0x3c2: 0x0013, + 0x3c7: 0x0013, 0x3ca: 0x0012, 0x3cb: 0x0013, + 0x3cc: 0x0013, 0x3cd: 0x0013, 0x3ce: 0x0012, 0x3cf: 0x0012, 0x3d0: 0x0013, 0x3d1: 0x0013, + 0x3d2: 0x0013, 0x3d3: 0x0012, 0x3d5: 0x0013, + 0x3d9: 0x0013, 0x3da: 0x0013, 0x3db: 0x0013, 0x3dc: 0x0013, 0x3dd: 0x0013, + 0x3e4: 0x0013, 0x3e6: 0x886b, 0x3e8: 0x0013, + 0x3ea: 0x88cb, 0x3eb: 0x890b, 0x3ec: 0x0013, 0x3ed: 0x0013, 0x3ef: 0x0012, + 0x3f0: 0x0013, 0x3f1: 0x0013, 0x3f2: 0xa453, 0x3f3: 0x0013, 0x3f4: 0x0012, 0x3f5: 0x0010, + 0x3f6: 0x0010, 0x3f7: 0x0010, 0x3f8: 0x0010, 0x3f9: 0x0012, + 0x3fc: 0x0012, 0x3fd: 0x0012, 0x3fe: 0x0013, 0x3ff: 0x0013, + // Block 0x10, offset 0x400 + 0x400: 0x1a13, 0x401: 0x1a13, 0x402: 0x1e13, 0x403: 0x1e13, 0x404: 0x1a13, 0x405: 0x1a13, + 0x406: 0x2613, 0x407: 0x2613, 0x408: 0x2a13, 0x409: 0x2a13, 0x40a: 0x2e13, 0x40b: 0x2e13, + 0x40c: 0x2a13, 0x40d: 0x2a13, 0x40e: 0x2613, 0x40f: 0x2613, 0x410: 0xa752, 0x411: 0xa752, + 0x412: 0xaa52, 0x413: 0xaa52, 0x414: 0xad52, 0x415: 0xad52, 0x416: 0xaa52, 0x417: 0xaa52, + 0x418: 0xa752, 0x419: 0xa752, 0x41a: 0x1a12, 0x41b: 0x1a12, 0x41c: 0x1e12, 0x41d: 0x1e12, + 0x41e: 0x1a12, 0x41f: 0x1a12, 0x420: 0x2612, 0x421: 0x2612, 0x422: 0x2a12, 0x423: 0x2a12, + 0x424: 0x2e12, 0x425: 0x2e12, 0x426: 0x2a12, 0x427: 0x2a12, 0x428: 0x2612, 0x429: 0x2612, + // Block 0x11, offset 0x440 + 0x440: 0x6552, 0x441: 0x6552, 0x442: 0x6552, 0x443: 0x6552, 0x444: 0x6552, 0x445: 0x6552, + 0x446: 0x6552, 0x447: 0x6552, 0x448: 0x6552, 0x449: 0x6552, 0x44a: 0x6552, 0x44b: 0x6552, + 0x44c: 0x6552, 0x44d: 0x6552, 0x44e: 0x6552, 0x44f: 0x6552, 0x450: 0xb052, 0x451: 0xb052, + 0x452: 0xb052, 0x453: 0xb052, 0x454: 0xb052, 0x455: 0xb052, 0x456: 0xb052, 0x457: 0xb052, + 0x458: 0xb052, 0x459: 0xb052, 0x45a: 0xb052, 0x45b: 0xb052, 0x45c: 0xb052, 0x45d: 0xb052, + 0x45e: 0xb052, 0x460: 0x0113, 0x461: 0x0112, 0x462: 0x896b, 0x463: 0x8b53, + 0x464: 0x89cb, 0x465: 0x8a2a, 0x466: 0x8a8a, 0x467: 0x0f13, 0x468: 0x0f12, 0x469: 0x0313, + 0x46a: 0x0312, 0x46b: 0x0713, 0x46c: 0x0712, 0x46d: 0x8aeb, 0x46e: 0x8b4b, 0x46f: 0x8bab, + 0x470: 0x8c0b, 0x471: 0x0012, 0x472: 0x0113, 0x473: 0x0112, 0x474: 0x0012, 0x475: 0x0313, + 0x476: 0x0312, 0x477: 0x0012, 0x478: 0x0012, 0x479: 0x0012, 0x47a: 0x0012, 0x47b: 0x0012, + 0x47c: 0x0015, 0x47d: 0x0015, 0x47e: 0x8c6b, 0x47f: 0x8ccb, + // Block 0x12, offset 0x480 + 0x480: 0x0113, 0x481: 0x0112, 0x482: 0x0113, 0x483: 0x0112, 0x484: 0x0113, 0x485: 0x0112, + 0x486: 0x0113, 0x487: 0x0112, 0x488: 0x0014, 0x489: 0x0014, 0x48a: 0x0014, 0x48b: 0x0713, + 0x48c: 0x0712, 0x48d: 0x8d2b, 0x48e: 0x0012, 0x48f: 0x0010, 0x490: 0x0113, 0x491: 0x0112, + 0x492: 0x0113, 0x493: 0x0112, 0x494: 0x6552, 0x495: 0x0012, 0x496: 0x0113, 0x497: 0x0112, + 0x498: 0x0113, 0x499: 0x0112, 0x49a: 0x0113, 0x49b: 0x0112, 0x49c: 0x0113, 0x49d: 0x0112, + 0x49e: 0x0113, 0x49f: 0x0112, 0x4a0: 0x0113, 0x4a1: 0x0112, 0x4a2: 0x0113, 0x4a3: 0x0112, + 0x4a4: 0x0113, 0x4a5: 0x0112, 0x4a6: 0x0113, 0x4a7: 0x0112, 0x4a8: 0x0113, 0x4a9: 0x0112, + 0x4aa: 0x8d8b, 0x4ab: 0x8deb, 0x4ac: 0x8e4b, 0x4ad: 0x8eab, 0x4ae: 0x8f0b, 0x4af: 0x0012, + 0x4b0: 0x8f6b, 0x4b1: 0x8fcb, 0x4b2: 0x902b, 0x4b3: 0xb353, 0x4b4: 0x0113, 0x4b5: 0x0112, + 0x4b6: 0x0113, 0x4b7: 0x0112, 0x4b8: 0x0113, 0x4b9: 0x0112, 0x4ba: 0x0113, 0x4bb: 0x0112, + 0x4bc: 0x0113, 0x4bd: 0x0112, 0x4be: 0x0113, 0x4bf: 0x0112, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x90ea, 0x4c1: 0x916a, 0x4c2: 0x91ea, 0x4c3: 0x926a, 0x4c4: 0x931a, 0x4c5: 0x93ca, + 0x4c6: 0x944a, + 0x4d3: 0x94ca, 0x4d4: 0x95aa, 0x4d5: 0x968a, 0x4d6: 0x976a, 0x4d7: 0x984a, + 0x4dd: 0x0010, + 0x4de: 0x0034, 0x4df: 0x0010, 0x4e0: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, 0x4e3: 0x0010, + 0x4e4: 0x0010, 0x4e5: 0x0010, 0x4e6: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, + 0x4ea: 0x0010, 0x4eb: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010, + 0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f3: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010, + 0x4f6: 0x0010, 0x4f8: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010, + 0x4fc: 0x0010, 0x4fe: 0x0010, + // Block 0x14, offset 0x500 + 0x500: 0x2213, 0x501: 0x2213, 0x502: 0x2613, 0x503: 0x2613, 0x504: 0x2213, 0x505: 0x2213, + 0x506: 0x2e13, 0x507: 0x2e13, 0x508: 0x2213, 0x509: 0x2213, 0x50a: 0x2613, 0x50b: 0x2613, + 0x50c: 0x2213, 0x50d: 0x2213, 0x50e: 0x3e13, 0x50f: 0x3e13, 0x510: 0x2213, 0x511: 0x2213, + 0x512: 0x2613, 0x513: 0x2613, 0x514: 0x2213, 0x515: 0x2213, 0x516: 0x2e13, 0x517: 0x2e13, + 0x518: 0x2213, 0x519: 0x2213, 0x51a: 0x2613, 0x51b: 0x2613, 0x51c: 0x2213, 0x51d: 0x2213, + 0x51e: 0xbc53, 0x51f: 0xbc53, 0x520: 0xbf53, 0x521: 0xbf53, 0x522: 0x2212, 0x523: 0x2212, + 0x524: 0x2612, 0x525: 0x2612, 0x526: 0x2212, 0x527: 0x2212, 0x528: 0x2e12, 0x529: 0x2e12, + 0x52a: 0x2212, 0x52b: 0x2212, 0x52c: 0x2612, 0x52d: 0x2612, 0x52e: 0x2212, 0x52f: 0x2212, + 0x530: 0x3e12, 0x531: 0x3e12, 0x532: 0x2212, 0x533: 0x2212, 0x534: 0x2612, 0x535: 0x2612, + 0x536: 0x2212, 0x537: 0x2212, 0x538: 0x2e12, 0x539: 0x2e12, 0x53a: 0x2212, 0x53b: 0x2212, + 0x53c: 0x2612, 0x53d: 0x2612, 0x53e: 0x2212, 0x53f: 0x2212, + // Block 0x15, offset 0x540 + 0x542: 0x0010, + 0x547: 0x0010, 0x549: 0x0010, 0x54b: 0x0010, + 0x54d: 0x0010, 0x54e: 0x0010, 0x54f: 0x0010, 0x551: 0x0010, + 0x552: 0x0010, 0x554: 0x0010, 0x557: 0x0010, + 0x559: 0x0010, 0x55b: 0x0010, 0x55d: 0x0010, + 0x55f: 0x0010, 0x561: 0x0010, 0x562: 0x0010, + 0x564: 0x0010, 0x567: 0x0010, 0x568: 0x0010, 0x569: 0x0010, + 0x56a: 0x0010, 0x56c: 0x0010, 0x56d: 0x0010, 0x56e: 0x0010, 0x56f: 0x0010, + 0x570: 0x0010, 0x571: 0x0010, 0x572: 0x0010, 0x574: 0x0010, 0x575: 0x0010, + 0x576: 0x0010, 0x577: 0x0010, 0x579: 0x0010, 0x57a: 0x0010, 0x57b: 0x0010, + 0x57c: 0x0010, 0x57e: 0x0010, +} + +// caseIndex: 25 blocks, 1600 entries, 3200 bytes +// Block 0 is the zero block. +var caseIndex = [1600]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x14, 0xc3: 0x15, 0xc4: 0x16, 0xc5: 0x17, 0xc6: 0x01, 0xc7: 0x02, + 0xc8: 0x18, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x19, 0xcc: 0x1a, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07, + 0xd0: 0x1b, 0xd1: 0x1c, 0xd2: 0x1d, 0xd3: 0x1e, 0xd4: 0x1f, 0xd5: 0x20, 0xd6: 0x08, 0xd7: 0x21, + 0xd8: 0x22, 0xd9: 0x23, 0xda: 0x24, 0xdb: 0x25, 0xdc: 0x26, 0xdd: 0x27, 0xde: 0x28, 0xdf: 0x29, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09, + 0xf0: 0x14, 0xf3: 0x16, + // Block 0x4, offset 0x100 + 0x120: 0x2a, 0x121: 0x2b, 0x122: 0x2c, 0x123: 0x2d, 0x124: 0x2e, 0x125: 0x2f, 0x126: 0x30, 0x127: 0x31, + 0x128: 0x32, 0x129: 0x33, 0x12a: 0x34, 0x12b: 0x35, 0x12c: 0x36, 0x12d: 0x37, 0x12e: 0x38, 0x12f: 0x39, + 0x130: 0x3a, 0x131: 0x3b, 0x132: 0x3c, 0x133: 0x3d, 0x134: 0x3e, 0x135: 0x3f, 0x136: 0x40, 0x137: 0x41, + 0x138: 0x42, 0x139: 0x43, 0x13a: 0x44, 0x13b: 0x45, 0x13c: 0x46, 0x13d: 0x47, 0x13e: 0x48, 0x13f: 0x49, + // Block 0x5, offset 0x140 + 0x140: 0x4a, 0x141: 0x4b, 0x142: 0x4c, 0x143: 0x09, 0x144: 0x24, 0x145: 0x24, 0x146: 0x24, 0x147: 0x24, + 0x148: 0x24, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53, + 0x150: 0x54, 0x151: 0x24, 0x152: 0x24, 0x153: 0x24, 0x154: 0x24, 0x155: 0x24, 0x156: 0x24, 0x157: 0x24, + 0x158: 0x24, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b, + 0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62, + 0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16b: 0x66, 0x16c: 0x67, 0x16d: 0x68, 0x16e: 0x69, 0x16f: 0x6a, + 0x170: 0x6b, 0x171: 0x6c, 0x172: 0x6d, 0x173: 0x6e, 0x174: 0x6f, 0x175: 0x70, 0x176: 0x71, 0x177: 0x72, + 0x178: 0x73, 0x179: 0x73, 0x17a: 0x74, 0x17b: 0x73, 0x17c: 0x75, 0x17d: 0x0a, 0x17e: 0x0b, 0x17f: 0x0c, + // Block 0x6, offset 0x180 + 0x180: 0x76, 0x181: 0x77, 0x182: 0x78, 0x183: 0x79, 0x184: 0x0d, 0x185: 0x7a, 0x186: 0x7b, + 0x192: 0x7c, 0x193: 0x0e, + 0x1b0: 0x7d, 0x1b1: 0x0f, 0x1b2: 0x73, 0x1b3: 0x7e, 0x1b4: 0x7f, 0x1b5: 0x80, 0x1b6: 0x81, 0x1b7: 0x82, + 0x1b8: 0x83, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x84, 0x1c2: 0x85, 0x1c3: 0x86, 0x1c4: 0x87, 0x1c5: 0x24, 0x1c6: 0x88, + // Block 0x8, offset 0x200 + 0x200: 0x89, 0x201: 0x24, 0x202: 0x24, 0x203: 0x24, 0x204: 0x24, 0x205: 0x24, 0x206: 0x24, 0x207: 0x24, + 0x208: 0x24, 0x209: 0x24, 0x20a: 0x24, 0x20b: 0x24, 0x20c: 0x24, 0x20d: 0x24, 0x20e: 0x24, 0x20f: 0x24, + 0x210: 0x24, 0x211: 0x24, 0x212: 0x8a, 0x213: 0x8b, 0x214: 0x24, 0x215: 0x24, 0x216: 0x24, 0x217: 0x24, + 0x218: 0x8c, 0x219: 0x8d, 0x21a: 0x8e, 0x21b: 0x8f, 0x21c: 0x90, 0x21d: 0x91, 0x21e: 0x10, 0x21f: 0x92, + 0x220: 0x93, 0x221: 0x94, 0x222: 0x24, 0x223: 0x95, 0x224: 0x96, 0x225: 0x97, 0x226: 0x98, 0x227: 0x99, + 0x228: 0x9a, 0x229: 0x9b, 0x22a: 0x9c, 0x22b: 0x9d, 0x22c: 0x9e, 0x22d: 0x9f, 0x22e: 0xa0, 0x22f: 0xa1, + 0x230: 0x24, 0x231: 0x24, 0x232: 0x24, 0x233: 0x24, 0x234: 0x24, 0x235: 0x24, 0x236: 0x24, 0x237: 0x24, + 0x238: 0x24, 0x239: 0x24, 0x23a: 0x24, 0x23b: 0x24, 0x23c: 0x24, 0x23d: 0x24, 0x23e: 0x24, 0x23f: 0x24, + // Block 0x9, offset 0x240 + 0x240: 0x24, 0x241: 0x24, 0x242: 0x24, 0x243: 0x24, 0x244: 0x24, 0x245: 0x24, 0x246: 0x24, 0x247: 0x24, + 0x248: 0x24, 0x249: 0x24, 0x24a: 0x24, 0x24b: 0x24, 0x24c: 0x24, 0x24d: 0x24, 0x24e: 0x24, 0x24f: 0x24, + 0x250: 0x24, 0x251: 0x24, 0x252: 0x24, 0x253: 0x24, 0x254: 0x24, 0x255: 0x24, 0x256: 0x24, 0x257: 0x24, + 0x258: 0x24, 0x259: 0x24, 0x25a: 0x24, 0x25b: 0x24, 0x25c: 0x24, 0x25d: 0x24, 0x25e: 0x24, 0x25f: 0x24, + 0x260: 0x24, 0x261: 0x24, 0x262: 0x24, 0x263: 0x24, 0x264: 0x24, 0x265: 0x24, 0x266: 0x24, 0x267: 0x24, + 0x268: 0x24, 0x269: 0x24, 0x26a: 0x24, 0x26b: 0x24, 0x26c: 0x24, 0x26d: 0x24, 0x26e: 0x24, 0x26f: 0x24, + 0x270: 0x24, 0x271: 0x24, 0x272: 0x24, 0x273: 0x24, 0x274: 0x24, 0x275: 0x24, 0x276: 0x24, 0x277: 0x24, + 0x278: 0x24, 0x279: 0x24, 0x27a: 0x24, 0x27b: 0x24, 0x27c: 0x24, 0x27d: 0x24, 0x27e: 0x24, 0x27f: 0x24, + // Block 0xa, offset 0x280 + 0x280: 0x24, 0x281: 0x24, 0x282: 0x24, 0x283: 0x24, 0x284: 0x24, 0x285: 0x24, 0x286: 0x24, 0x287: 0x24, + 0x288: 0x24, 0x289: 0x24, 0x28a: 0x24, 0x28b: 0x24, 0x28c: 0x24, 0x28d: 0x24, 0x28e: 0x24, 0x28f: 0x24, + 0x290: 0x24, 0x291: 0x24, 0x292: 0x24, 0x293: 0x24, 0x294: 0x24, 0x295: 0x24, 0x296: 0x24, 0x297: 0x24, + 0x298: 0x24, 0x299: 0x24, 0x29a: 0x24, 0x29b: 0x24, 0x29c: 0x24, 0x29d: 0x24, 0x29e: 0xa2, 0x29f: 0xa3, + // Block 0xb, offset 0x2c0 + 0x2ec: 0x11, 0x2ed: 0xa4, 0x2ee: 0xa5, 0x2ef: 0xa6, + 0x2f0: 0x24, 0x2f1: 0x24, 0x2f2: 0x24, 0x2f3: 0x24, 0x2f4: 0xa7, 0x2f5: 0xa8, 0x2f6: 0xa9, 0x2f7: 0xaa, + 0x2f8: 0xab, 0x2f9: 0xac, 0x2fa: 0x24, 0x2fb: 0xad, 0x2fc: 0xae, 0x2fd: 0xaf, 0x2fe: 0xb0, 0x2ff: 0xb1, + // Block 0xc, offset 0x300 + 0x300: 0xb2, 0x301: 0xb3, 0x302: 0x24, 0x303: 0xb4, 0x305: 0xb5, 0x307: 0xb6, + 0x30a: 0xb7, 0x30b: 0xb8, 0x30c: 0xb9, 0x30d: 0xba, 0x30e: 0xbb, 0x30f: 0xbc, + 0x310: 0xbd, 0x311: 0xbe, 0x312: 0xbf, 0x313: 0xc0, 0x314: 0xc1, 0x315: 0xc2, + 0x318: 0x24, 0x319: 0x24, 0x31a: 0x24, 0x31b: 0x24, 0x31c: 0xc3, 0x31d: 0xc4, + 0x320: 0xc5, 0x321: 0xc6, 0x322: 0xc7, 0x323: 0xc8, 0x324: 0xc9, 0x326: 0xca, + 0x328: 0xcb, 0x329: 0xcc, 0x32a: 0xcd, 0x32b: 0xce, 0x32c: 0x5f, 0x32d: 0xcf, 0x32e: 0xd0, + 0x330: 0x24, 0x331: 0xd1, 0x332: 0xd2, 0x333: 0xd3, 0x334: 0xd4, + 0x33a: 0xd5, 0x33c: 0xd6, 0x33d: 0xd7, 0x33e: 0xd8, 0x33f: 0xd9, + // Block 0xd, offset 0x340 + 0x340: 0xda, 0x341: 0xdb, 0x342: 0xdc, 0x343: 0xdd, 0x344: 0xde, 0x345: 0xdf, 0x346: 0xe0, 0x347: 0xe1, + 0x348: 0xe2, 0x34a: 0xe3, 0x34b: 0xe4, 0x34c: 0xe5, 0x34d: 0xe6, + 0x350: 0xe7, 0x351: 0xe8, 0x352: 0xe9, 0x353: 0xea, 0x356: 0xeb, 0x357: 0xec, + 0x358: 0xed, 0x359: 0xee, 0x35a: 0xef, 0x35b: 0xf0, 0x35c: 0xf1, + 0x360: 0xf2, 0x362: 0xf3, 0x363: 0xf4, 0x364: 0xf5, 0x365: 0xf6, 0x366: 0xf7, 0x367: 0xf8, + 0x368: 0xf9, 0x369: 0xfa, 0x36a: 0xfb, 0x36b: 0xfc, + 0x370: 0xfd, 0x371: 0xfe, 0x372: 0xff, 0x374: 0x100, 0x375: 0x101, 0x376: 0x102, + 0x37b: 0x103, 0x37e: 0x104, + // Block 0xe, offset 0x380 + 0x380: 0x24, 0x381: 0x24, 0x382: 0x24, 0x383: 0x24, 0x384: 0x24, 0x385: 0x24, 0x386: 0x24, 0x387: 0x24, + 0x388: 0x24, 0x389: 0x24, 0x38a: 0x24, 0x38b: 0x24, 0x38c: 0x24, 0x38d: 0x24, 0x38e: 0x105, + 0x390: 0x24, 0x391: 0x106, 0x392: 0x24, 0x393: 0x24, 0x394: 0x24, 0x395: 0x107, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x24, 0x3c1: 0x24, 0x3c2: 0x24, 0x3c3: 0x24, 0x3c4: 0x24, 0x3c5: 0x24, 0x3c6: 0x24, 0x3c7: 0x24, + 0x3c8: 0x24, 0x3c9: 0x24, 0x3ca: 0x24, 0x3cb: 0x24, 0x3cc: 0x24, 0x3cd: 0x24, 0x3ce: 0x24, 0x3cf: 0x24, + 0x3d0: 0x108, + // Block 0x10, offset 0x400 + 0x410: 0x24, 0x411: 0x24, 0x412: 0x24, 0x413: 0x24, 0x414: 0x24, 0x415: 0x24, 0x416: 0x24, 0x417: 0x24, + 0x418: 0x24, 0x419: 0x109, + // Block 0x11, offset 0x440 + 0x460: 0x24, 0x461: 0x24, 0x462: 0x24, 0x463: 0x24, 0x464: 0x24, 0x465: 0x24, 0x466: 0x24, 0x467: 0x24, + 0x468: 0xfc, 0x469: 0x10a, 0x46b: 0x10b, 0x46c: 0x10c, 0x46d: 0x10d, 0x46e: 0x10e, + 0x479: 0x10f, 0x47c: 0x24, 0x47d: 0x110, 0x47e: 0x111, 0x47f: 0x112, + // Block 0x12, offset 0x480 + 0x4b0: 0x24, 0x4b1: 0x113, 0x4b2: 0x114, + // Block 0x13, offset 0x4c0 + 0x4c5: 0x115, 0x4c6: 0x116, + 0x4c9: 0x117, + 0x4d0: 0x118, 0x4d1: 0x119, 0x4d2: 0x11a, 0x4d3: 0x11b, 0x4d4: 0x11c, 0x4d5: 0x11d, 0x4d6: 0x11e, 0x4d7: 0x11f, + 0x4d8: 0x120, 0x4d9: 0x121, 0x4da: 0x122, 0x4db: 0x123, 0x4dc: 0x124, 0x4dd: 0x125, 0x4de: 0x126, 0x4df: 0x127, + 0x4e8: 0x128, 0x4e9: 0x129, 0x4ea: 0x12a, + // Block 0x14, offset 0x500 + 0x500: 0x12b, 0x504: 0x12c, 0x505: 0x12d, + 0x50b: 0x12e, + 0x520: 0x24, 0x521: 0x24, 0x522: 0x24, 0x523: 0x12f, 0x524: 0x12, 0x525: 0x130, + 0x538: 0x131, 0x539: 0x13, 0x53a: 0x132, + // Block 0x15, offset 0x540 + 0x544: 0x133, 0x545: 0x134, 0x546: 0x135, + 0x54f: 0x136, + 0x56f: 0x137, + // Block 0x16, offset 0x580 + 0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f, + 0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x138, 0x5c1: 0x139, 0x5c4: 0x139, 0x5c5: 0x139, 0x5c6: 0x139, 0x5c7: 0x13a, + // Block 0x18, offset 0x600 + 0x620: 0x15, +} + +// sparseOffsets: 296 entries, 592 bytes +var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x34, 0x37, 0x3b, 0x3e, 0x42, 0x4c, 0x4e, 0x57, 0x5e, 0x63, 0x71, 0x72, 0x80, 0x8f, 0x99, 0x9c, 0xa3, 0xab, 0xae, 0xb0, 0xc0, 0xc6, 0xd4, 0xdf, 0xec, 0xf7, 0x103, 0x10d, 0x119, 0x124, 0x130, 0x13c, 0x144, 0x14d, 0x157, 0x162, 0x16e, 0x174, 0x17f, 0x185, 0x18d, 0x190, 0x195, 0x199, 0x19d, 0x1a4, 0x1ad, 0x1b5, 0x1b6, 0x1bf, 0x1c6, 0x1ce, 0x1d4, 0x1d9, 0x1dd, 0x1e0, 0x1e2, 0x1e5, 0x1ea, 0x1eb, 0x1ed, 0x1ef, 0x1f1, 0x1f8, 0x1fd, 0x201, 0x20a, 0x20d, 0x210, 0x216, 0x217, 0x222, 0x223, 0x224, 0x229, 0x236, 0x23f, 0x240, 0x248, 0x251, 0x25a, 0x263, 0x268, 0x26b, 0x276, 0x284, 0x286, 0x28d, 0x291, 0x29d, 0x29e, 0x2a9, 0x2b1, 0x2b9, 0x2bf, 0x2c0, 0x2ce, 0x2d3, 0x2d6, 0x2db, 0x2df, 0x2e5, 0x2ea, 0x2ed, 0x2f2, 0x2f7, 0x2f8, 0x2fe, 0x300, 0x301, 0x303, 0x305, 0x308, 0x309, 0x30b, 0x30e, 0x314, 0x318, 0x31a, 0x31f, 0x326, 0x331, 0x33b, 0x33c, 0x345, 0x349, 0x34e, 0x356, 0x35c, 0x362, 0x36c, 0x371, 0x37a, 0x380, 0x389, 0x38d, 0x395, 0x397, 0x399, 0x39c, 0x39e, 0x3a0, 0x3a1, 0x3a2, 0x3a4, 0x3a6, 0x3ac, 0x3b1, 0x3b3, 0x3ba, 0x3bd, 0x3bf, 0x3c5, 0x3ca, 0x3cc, 0x3cd, 0x3ce, 0x3cf, 0x3d1, 0x3d3, 0x3d5, 0x3d8, 0x3da, 0x3dd, 0x3e5, 0x3e8, 0x3ec, 0x3f4, 0x3f6, 0x3f7, 0x3f8, 0x3fa, 0x400, 0x402, 0x403, 0x405, 0x407, 0x409, 0x416, 0x417, 0x418, 0x41c, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x425, 0x428, 0x42b, 0x431, 0x432, 0x434, 0x438, 0x43c, 0x442, 0x445, 0x44c, 0x450, 0x454, 0x45d, 0x466, 0x46c, 0x472, 0x47c, 0x486, 0x488, 0x491, 0x497, 0x49d, 0x4a3, 0x4a6, 0x4ac, 0x4af, 0x4b8, 0x4b9, 0x4c0, 0x4c4, 0x4c5, 0x4c8, 0x4d2, 0x4d5, 0x4d7, 0x4de, 0x4e6, 0x4ec, 0x4f2, 0x4f3, 0x4f9, 0x4fc, 0x504, 0x50b, 0x515, 0x51d, 0x520, 0x521, 0x522, 0x523, 0x524, 0x526, 0x527, 0x529, 0x52b, 0x52d, 0x531, 0x532, 0x534, 0x537, 0x539, 0x53c, 0x53e, 0x543, 0x548, 0x54c, 0x54d, 0x550, 0x554, 0x55f, 0x563, 0x56b, 0x570, 0x574, 0x577, 0x57b, 0x57e, 0x581, 0x586, 0x58a, 0x58e, 0x592, 0x596, 0x598, 0x59a, 0x59d, 0x5a2, 0x5a5, 0x5a7, 0x5aa, 0x5ac, 0x5b2, 0x5bb, 0x5c0, 0x5c1, 0x5c4, 0x5c5, 0x5c6, 0x5c7, 0x5c9, 0x5ca, 0x5cb} + +// sparseValues: 1483 entries, 5932 bytes +var sparseValues = [1483]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0004, lo: 0xa8, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xaa}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0004, lo: 0xaf, hi: 0xaf}, + {value: 0x0004, lo: 0xb4, hi: 0xb4}, + {value: 0x001a, lo: 0xb5, hi: 0xb5}, + {value: 0x0054, lo: 0xb7, hi: 0xb7}, + {value: 0x0004, lo: 0xb8, hi: 0xb8}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + // Block 0x1, offset 0x9 + {value: 0x2013, lo: 0x80, hi: 0x96}, + {value: 0x2013, lo: 0x98, hi: 0x9e}, + {value: 0x009a, lo: 0x9f, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xb6}, + {value: 0x2012, lo: 0xb8, hi: 0xbe}, + {value: 0x0252, lo: 0xbf, hi: 0xbf}, + // Block 0x2, offset 0xf + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x011b, lo: 0xb0, hi: 0xb0}, + {value: 0x019a, lo: 0xb1, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb7}, + {value: 0x0012, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x0553, lo: 0xbf, hi: 0xbf}, + // Block 0x3, offset 0x18 + {value: 0x0552, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x01da, lo: 0x89, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xb7}, + {value: 0x0253, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x028a, lo: 0xbf, hi: 0xbf}, + // Block 0x4, offset 0x24 + {value: 0x0117, lo: 0x80, hi: 0x9f}, + {value: 0x2f53, lo: 0xa0, hi: 0xa0}, + {value: 0x0012, lo: 0xa1, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xb3}, + {value: 0x0012, lo: 0xb4, hi: 0xb9}, + {value: 0x090b, lo: 0xba, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x2953, lo: 0xbd, hi: 0xbd}, + {value: 0x098b, lo: 0xbe, hi: 0xbe}, + {value: 0x0a0a, lo: 0xbf, hi: 0xbf}, + // Block 0x5, offset 0x2e + {value: 0x0015, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x97}, + {value: 0x0004, lo: 0x98, hi: 0x9d}, + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0015, lo: 0xa0, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xbf}, + // Block 0x6, offset 0x34 + {value: 0x0024, lo: 0x80, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbf}, + // Block 0x7, offset 0x37 + {value: 0x6553, lo: 0x80, hi: 0x8f}, + {value: 0x2013, lo: 0x90, hi: 0x9f}, + {value: 0x5f53, lo: 0xa0, hi: 0xaf}, + {value: 0x2012, lo: 0xb0, hi: 0xbf}, + // Block 0x8, offset 0x3b + {value: 0x5f52, lo: 0x80, hi: 0x8f}, + {value: 0x6552, lo: 0x90, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x9, offset 0x3e + {value: 0x0117, lo: 0x80, hi: 0x81}, + {value: 0x0024, lo: 0x83, hi: 0x87}, + {value: 0x0014, lo: 0x88, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xbf}, + // Block 0xa, offset 0x42 + {value: 0x0f13, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x0316, lo: 0x89, hi: 0x8a}, + {value: 0x0716, lo: 0x8b, hi: 0x8c}, + {value: 0x0316, lo: 0x8d, hi: 0x8e}, + {value: 0x0f12, lo: 0x8f, hi: 0x8f}, + {value: 0x0117, lo: 0x90, hi: 0xbf}, + // Block 0xb, offset 0x4c + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x6553, lo: 0xb1, hi: 0xbf}, + // Block 0xc, offset 0x4e + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6853, lo: 0x90, hi: 0x96}, + {value: 0x0014, lo: 0x99, hi: 0x99}, + {value: 0x0010, lo: 0x9a, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0054, lo: 0x9f, hi: 0x9f}, + {value: 0x0012, lo: 0xa0, hi: 0xa0}, + {value: 0x6552, lo: 0xa1, hi: 0xaf}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0xd, offset 0x57 + {value: 0x0034, lo: 0x81, hi: 0x82}, + {value: 0x0024, lo: 0x84, hi: 0x84}, + {value: 0x0034, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0xaa}, + {value: 0x0010, lo: 0xaf, hi: 0xb3}, + {value: 0x0054, lo: 0xb4, hi: 0xb4}, + // Block 0xe, offset 0x5e + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0024, lo: 0x90, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0014, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xf, offset 0x63 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9c}, + {value: 0x0024, lo: 0x9d, hi: 0x9e}, + {value: 0x0034, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x10, offset 0x71 + {value: 0x0010, lo: 0x80, hi: 0xbf}, + // Block 0x11, offset 0x72 + {value: 0x0010, lo: 0x80, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0024, lo: 0x9f, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xaa, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x12, offset 0x80 + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0034, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0034, lo: 0xb1, hi: 0xb1}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbd}, + {value: 0x0034, lo: 0xbe, hi: 0xbe}, + {value: 0x0024, lo: 0xbf, hi: 0xbf}, + // Block 0x13, offset 0x8f + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0024, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x88}, + {value: 0x0024, lo: 0x89, hi: 0x8a}, + {value: 0x0010, lo: 0x8d, hi: 0xbf}, + // Block 0x14, offset 0x99 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x15, offset 0x9c + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xb1}, + {value: 0x0034, lo: 0xb2, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0x16, offset 0xa3 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x99}, + {value: 0x0014, lo: 0x9a, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0xa3}, + {value: 0x0014, lo: 0xa4, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xad}, + // Block 0x17, offset 0xab + {value: 0x0010, lo: 0x80, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0xa0, hi: 0xaa}, + // Block 0x18, offset 0xae + {value: 0x0010, lo: 0xa0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0x19, offset 0xb0 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0034, lo: 0x93, hi: 0x93}, + {value: 0x0024, lo: 0x94, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0024, lo: 0xaa, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbf}, + // Block 0x1a, offset 0xc0 + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1b, offset 0xc6 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0x1c, offset 0xd4 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb6, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1d, offset 0xdf + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xb1}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + // Block 0x1e, offset 0xec + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x1f, offset 0xf7 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x99, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x20, offset 0x103 + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x21, offset 0x10d + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x85}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xbf}, + // Block 0x22, offset 0x119 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x23, offset 0x124 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x24, offset 0x130 + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0010, lo: 0xa8, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x25, offset 0x13c + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x26, offset 0x144 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb9}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbf}, + // Block 0x27, offset 0x14d + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x88}, + {value: 0x0014, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x28, offset 0x157 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x29, offset 0x162 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb2}, + // Block 0x2a, offset 0x16e + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x2b, offset 0x174 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x94, hi: 0x97}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xba, hi: 0xbf}, + // Block 0x2c, offset 0x17f + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x96}, + {value: 0x0010, lo: 0x9a, hi: 0xb1}, + {value: 0x0010, lo: 0xb3, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x2d, offset 0x185 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x94}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9f}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + // Block 0x2e, offset 0x18d + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xba}, + // Block 0x2f, offset 0x190 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x30, offset 0x195 + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xba}, + {value: 0x0014, lo: 0xbb, hi: 0xbc}, + // Block 0x31, offset 0x199 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x32, offset 0x19d + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0034, lo: 0x98, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0034, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x33, offset 0x1a4 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xac}, + {value: 0x0034, lo: 0xb1, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xba, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x34, offset 0x1ad + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0024, lo: 0x82, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x86, hi: 0x87}, + {value: 0x0010, lo: 0x88, hi: 0x8c}, + {value: 0x0014, lo: 0x8d, hi: 0x97}, + {value: 0x0014, lo: 0x99, hi: 0xbc}, + // Block 0x35, offset 0x1b5 + {value: 0x0034, lo: 0x86, hi: 0x86}, + // Block 0x36, offset 0x1b6 + {value: 0x0010, lo: 0xab, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbe}, + // Block 0x37, offset 0x1bf + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x96, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x99}, + {value: 0x0014, lo: 0x9e, hi: 0xa0}, + {value: 0x0010, lo: 0xa2, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xad}, + {value: 0x0014, lo: 0xb1, hi: 0xb4}, + // Block 0x38, offset 0x1c6 + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x6c53, lo: 0xa0, hi: 0xbf}, + // Block 0x39, offset 0x1ce + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x9a, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x3a, offset 0x1d4 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x3b, offset 0x1d9 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x82, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3c, offset 0x1dd + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3d, offset 0x1e0 + {value: 0x0010, lo: 0x80, hi: 0x9a}, + {value: 0x0024, lo: 0x9d, hi: 0x9f}, + // Block 0x3e, offset 0x1e2 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x7453, lo: 0xa0, hi: 0xaf}, + {value: 0x7853, lo: 0xb0, hi: 0xbf}, + // Block 0x3f, offset 0x1e5 + {value: 0x7c53, lo: 0x80, hi: 0x8f}, + {value: 0x8053, lo: 0x90, hi: 0x9f}, + {value: 0x7c53, lo: 0xa0, hi: 0xaf}, + {value: 0x0813, lo: 0xb0, hi: 0xb5}, + {value: 0x0892, lo: 0xb8, hi: 0xbd}, + // Block 0x40, offset 0x1ea + {value: 0x0010, lo: 0x81, hi: 0xbf}, + // Block 0x41, offset 0x1eb + {value: 0x0010, lo: 0x80, hi: 0xac}, + {value: 0x0010, lo: 0xaf, hi: 0xbf}, + // Block 0x42, offset 0x1ed + {value: 0x0010, lo: 0x81, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x43, offset 0x1ef + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb8}, + // Block 0x44, offset 0x1f1 + {value: 0x0010, lo: 0x80, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0034, lo: 0x94, hi: 0x94}, + {value: 0x0010, lo: 0xa0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + // Block 0x45, offset 0x1f8 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xac}, + {value: 0x0010, lo: 0xae, hi: 0xb0}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + // Block 0x46, offset 0x1fd + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x47, offset 0x201 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x89, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0014, lo: 0x93, hi: 0x93}, + {value: 0x0004, lo: 0x97, hi: 0x97}, + {value: 0x0024, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0x48, offset 0x20a + {value: 0x0014, lo: 0x8b, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x49, offset 0x20d + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb8}, + // Block 0x4a, offset 0x210 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x4b, offset 0x216 + {value: 0x0010, lo: 0x80, hi: 0xb5}, + // Block 0x4c, offset 0x217 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbb}, + // Block 0x4d, offset 0x222 + {value: 0x0010, lo: 0x86, hi: 0x8f}, + // Block 0x4e, offset 0x223 + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x4f, offset 0x224 + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + // Block 0x50, offset 0x229 + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x9e}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xac}, + {value: 0x0010, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xbc}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x51, offset 0x236 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xa7, hi: 0xa7}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + {value: 0x0034, lo: 0xb5, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbc}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x52, offset 0x23f + {value: 0x0034, lo: 0x80, hi: 0x80}, + // Block 0x53, offset 0x240 + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x54, offset 0x248 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0030, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8b}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xab, hi: 0xab}, + {value: 0x0034, lo: 0xac, hi: 0xac}, + {value: 0x0024, lo: 0xad, hi: 0xb3}, + // Block 0x55, offset 0x251 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0030, lo: 0xaa, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbf}, + // Block 0x56, offset 0x25a + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0030, lo: 0xb2, hi: 0xb3}, + // Block 0x57, offset 0x263 + {value: 0x0010, lo: 0x80, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0x58, offset 0x268 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8d, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x59, offset 0x26b + {value: 0x31ea, lo: 0x80, hi: 0x80}, + {value: 0x326a, lo: 0x81, hi: 0x81}, + {value: 0x32ea, lo: 0x82, hi: 0x82}, + {value: 0x336a, lo: 0x83, hi: 0x83}, + {value: 0x33ea, lo: 0x84, hi: 0x84}, + {value: 0x346a, lo: 0x85, hi: 0x85}, + {value: 0x34ea, lo: 0x86, hi: 0x86}, + {value: 0x356a, lo: 0x87, hi: 0x87}, + {value: 0x35ea, lo: 0x88, hi: 0x88}, + {value: 0x8353, lo: 0x90, hi: 0xba}, + {value: 0x8353, lo: 0xbd, hi: 0xbf}, + // Block 0x5a, offset 0x276 + {value: 0x0024, lo: 0x90, hi: 0x92}, + {value: 0x0034, lo: 0x94, hi: 0x99}, + {value: 0x0024, lo: 0x9a, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9f}, + {value: 0x0024, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0034, lo: 0xa2, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xb3}, + {value: 0x0024, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb7}, + {value: 0x0024, lo: 0xb8, hi: 0xb9}, + {value: 0x0010, lo: 0xba, hi: 0xba}, + // Block 0x5b, offset 0x284 + {value: 0x0012, lo: 0x80, hi: 0xab}, + {value: 0x0015, lo: 0xac, hi: 0xbf}, + // Block 0x5c, offset 0x286 + {value: 0x0015, lo: 0x80, hi: 0xaa}, + {value: 0x0012, lo: 0xab, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb8}, + {value: 0x8752, lo: 0xb9, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbc}, + {value: 0x8b52, lo: 0xbd, hi: 0xbd}, + {value: 0x0012, lo: 0xbe, hi: 0xbf}, + // Block 0x5d, offset 0x28d + {value: 0x0012, lo: 0x80, hi: 0x8d}, + {value: 0x8f52, lo: 0x8e, hi: 0x8e}, + {value: 0x0012, lo: 0x8f, hi: 0x9a}, + {value: 0x0015, lo: 0x9b, hi: 0xbf}, + // Block 0x5e, offset 0x291 + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0024, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb9}, + {value: 0x0024, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbd}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x5f, offset 0x29d + {value: 0x0117, lo: 0x80, hi: 0xbf}, + // Block 0x60, offset 0x29e + {value: 0x0117, lo: 0x80, hi: 0x95}, + {value: 0x369a, lo: 0x96, hi: 0x96}, + {value: 0x374a, lo: 0x97, hi: 0x97}, + {value: 0x37fa, lo: 0x98, hi: 0x98}, + {value: 0x38aa, lo: 0x99, hi: 0x99}, + {value: 0x395a, lo: 0x9a, hi: 0x9a}, + {value: 0x3a0a, lo: 0x9b, hi: 0x9b}, + {value: 0x0012, lo: 0x9c, hi: 0x9d}, + {value: 0x3abb, lo: 0x9e, hi: 0x9e}, + {value: 0x0012, lo: 0x9f, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x61, offset 0x2a9 + {value: 0x0812, lo: 0x80, hi: 0x87}, + {value: 0x0813, lo: 0x88, hi: 0x8f}, + {value: 0x0812, lo: 0x90, hi: 0x95}, + {value: 0x0813, lo: 0x98, hi: 0x9d}, + {value: 0x0812, lo: 0xa0, hi: 0xa7}, + {value: 0x0813, lo: 0xa8, hi: 0xaf}, + {value: 0x0812, lo: 0xb0, hi: 0xb7}, + {value: 0x0813, lo: 0xb8, hi: 0xbf}, + // Block 0x62, offset 0x2b1 + {value: 0x0004, lo: 0x8b, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8f}, + {value: 0x0054, lo: 0x98, hi: 0x99}, + {value: 0x0054, lo: 0xa4, hi: 0xa4}, + {value: 0x0054, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xaa, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xaf}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x63, offset 0x2b9 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x94, hi: 0x94}, + {value: 0x0014, lo: 0xa0, hi: 0xa4}, + {value: 0x0014, lo: 0xa6, hi: 0xaf}, + {value: 0x0015, lo: 0xb1, hi: 0xb1}, + {value: 0x0015, lo: 0xbf, hi: 0xbf}, + // Block 0x64, offset 0x2bf + {value: 0x0015, lo: 0x90, hi: 0x9c}, + // Block 0x65, offset 0x2c0 + {value: 0x0024, lo: 0x90, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x93}, + {value: 0x0024, lo: 0x94, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0xa0}, + {value: 0x0024, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa4}, + {value: 0x0034, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa7}, + {value: 0x0034, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xa9}, + {value: 0x0034, lo: 0xaa, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + // Block 0x66, offset 0x2ce + {value: 0x0016, lo: 0x85, hi: 0x86}, + {value: 0x0012, lo: 0x87, hi: 0x89}, + {value: 0xa452, lo: 0x8e, hi: 0x8e}, + {value: 0x1013, lo: 0xa0, hi: 0xaf}, + {value: 0x1012, lo: 0xb0, hi: 0xbf}, + // Block 0x67, offset 0x2d3 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x88}, + // Block 0x68, offset 0x2d6 + {value: 0xa753, lo: 0xb6, hi: 0xb7}, + {value: 0xaa53, lo: 0xb8, hi: 0xb9}, + {value: 0xad53, lo: 0xba, hi: 0xbb}, + {value: 0xaa53, lo: 0xbc, hi: 0xbd}, + {value: 0xa753, lo: 0xbe, hi: 0xbf}, + // Block 0x69, offset 0x2db + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6553, lo: 0x90, hi: 0x9f}, + {value: 0xb053, lo: 0xa0, hi: 0xae}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0x6a, offset 0x2df + {value: 0x0117, lo: 0x80, hi: 0xa3}, + {value: 0x0012, lo: 0xa4, hi: 0xa4}, + {value: 0x0716, lo: 0xab, hi: 0xac}, + {value: 0x0316, lo: 0xad, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb3}, + // Block 0x6b, offset 0x2e5 + {value: 0x6c52, lo: 0x80, hi: 0x9f}, + {value: 0x7052, lo: 0xa0, hi: 0xa5}, + {value: 0x7052, lo: 0xa7, hi: 0xa7}, + {value: 0x7052, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x6c, offset 0x2ea + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x6d, offset 0x2ed + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0010, lo: 0xb0, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x6e, offset 0x2f2 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9e}, + {value: 0x0024, lo: 0xa0, hi: 0xbf}, + // Block 0x6f, offset 0x2f7 + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + // Block 0x70, offset 0x2f8 + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0xaa, hi: 0xad}, + {value: 0x0030, lo: 0xae, hi: 0xaf}, + {value: 0x0004, lo: 0xb1, hi: 0xb5}, + {value: 0x0014, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + // Block 0x71, offset 0x2fe + {value: 0x0034, lo: 0x99, hi: 0x9a}, + {value: 0x0004, lo: 0x9b, hi: 0x9e}, + // Block 0x72, offset 0x300 + {value: 0x0004, lo: 0xbc, hi: 0xbe}, + // Block 0x73, offset 0x301 + {value: 0x0010, lo: 0x85, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x74, offset 0x303 + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x75, offset 0x305 + {value: 0x0010, lo: 0x80, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0xbf}, + // Block 0x76, offset 0x308 + {value: 0x0010, lo: 0x80, hi: 0x8c}, + // Block 0x77, offset 0x309 + {value: 0x0010, lo: 0x90, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x78, offset 0x30b + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0xab}, + // Block 0x79, offset 0x30e + {value: 0x0117, lo: 0x80, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb2}, + {value: 0x0024, lo: 0xb4, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x7a, offset 0x314 + {value: 0x0117, lo: 0x80, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9d}, + {value: 0x0024, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x7b, offset 0x318 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb1}, + // Block 0x7c, offset 0x31a + {value: 0x0004, lo: 0x80, hi: 0x87}, + {value: 0x0014, lo: 0x88, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xaf}, + {value: 0x0012, lo: 0xb0, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xbf}, + // Block 0x7d, offset 0x31f + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x0015, lo: 0xb0, hi: 0xb0}, + {value: 0x0012, lo: 0xb1, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x8753, lo: 0xbd, hi: 0xbd}, + {value: 0x0117, lo: 0xbe, hi: 0xbf}, + // Block 0x7e, offset 0x326 + {value: 0x0117, lo: 0x82, hi: 0x83}, + {value: 0x6553, lo: 0x84, hi: 0x84}, + {value: 0x908b, lo: 0x85, hi: 0x85}, + {value: 0x8f53, lo: 0x86, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x0316, lo: 0x89, hi: 0x8a}, + {value: 0x0316, lo: 0xb5, hi: 0xb6}, + {value: 0x0010, lo: 0xb7, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbf}, + // Block 0x7f, offset 0x331 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8b}, + {value: 0x0010, lo: 0x8c, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0034, lo: 0xac, hi: 0xac}, + // Block 0x80, offset 0x33b + {value: 0x0010, lo: 0x80, hi: 0xb3}, + // Block 0x81, offset 0x33c + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xa0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb7}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x82, offset 0x345 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x83, offset 0x349 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0x92}, + {value: 0x0030, lo: 0x93, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0x84, offset 0x34e + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb9}, + {value: 0x0010, lo: 0xba, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x85, offset 0x356 + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0004, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x86, offset 0x35c + {value: 0x0010, lo: 0x80, hi: 0xa8}, + {value: 0x0014, lo: 0xa9, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0x87, offset 0x362 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x88, offset 0x36c + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0024, lo: 0xbe, hi: 0xbf}, + // Block 0x89, offset 0x371 + {value: 0x0024, lo: 0x81, hi: 0x81}, + {value: 0x0004, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + // Block 0x8a, offset 0x37a + {value: 0x0010, lo: 0x81, hi: 0x86}, + {value: 0x0010, lo: 0x89, hi: 0x8e}, + {value: 0x0010, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x8b, offset 0x380 + {value: 0x0012, lo: 0x80, hi: 0x92}, + {value: 0xb352, lo: 0x93, hi: 0x93}, + {value: 0x0012, lo: 0x94, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9f}, + {value: 0x0012, lo: 0xa0, hi: 0xa8}, + {value: 0x0014, lo: 0xa9, hi: 0xa9}, + {value: 0x0004, lo: 0xaa, hi: 0xab}, + {value: 0x74d2, lo: 0xb0, hi: 0xbf}, + // Block 0x8c, offset 0x389 + {value: 0x78d2, lo: 0x80, hi: 0x8f}, + {value: 0x7cd2, lo: 0x90, hi: 0x9f}, + {value: 0x80d2, lo: 0xa0, hi: 0xaf}, + {value: 0x7cd2, lo: 0xb0, hi: 0xbf}, + // Block 0x8d, offset 0x38d + {value: 0x0010, lo: 0x80, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x8e, offset 0x395 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x8f, offset 0x397 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x8b, hi: 0xbb}, + // Block 0x90, offset 0x399 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0xbf}, + // Block 0x91, offset 0x39c + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0004, lo: 0xb2, hi: 0xbf}, + // Block 0x92, offset 0x39e + {value: 0x0004, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x93, hi: 0xbf}, + // Block 0x93, offset 0x3a0 + {value: 0x0010, lo: 0x80, hi: 0xbd}, + // Block 0x94, offset 0x3a1 + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0x95, offset 0x3a2 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0xbf}, + // Block 0x96, offset 0x3a4 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0xb0, hi: 0xbb}, + // Block 0x97, offset 0x3a6 + {value: 0x0014, lo: 0x80, hi: 0x8f}, + {value: 0x0054, lo: 0x93, hi: 0x93}, + {value: 0x0024, lo: 0xa0, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xad}, + {value: 0x0024, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + // Block 0x98, offset 0x3ac + {value: 0x0010, lo: 0x8d, hi: 0x8f}, + {value: 0x0054, lo: 0x92, hi: 0x92}, + {value: 0x0054, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0xb0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0x99, offset 0x3b1 + {value: 0x0010, lo: 0x80, hi: 0xbc}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x9a, offset 0x3b3 + {value: 0x0054, lo: 0x87, hi: 0x87}, + {value: 0x0054, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0054, lo: 0x9a, hi: 0x9a}, + {value: 0x5f53, lo: 0xa1, hi: 0xba}, + {value: 0x0004, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9b, offset 0x3ba + {value: 0x0004, lo: 0x80, hi: 0x80}, + {value: 0x5f52, lo: 0x81, hi: 0x9a}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + // Block 0x9c, offset 0x3bd + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbe}, + // Block 0x9d, offset 0x3bf + {value: 0x0010, lo: 0x82, hi: 0x87}, + {value: 0x0010, lo: 0x8a, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0x97}, + {value: 0x0010, lo: 0x9a, hi: 0x9c}, + {value: 0x0004, lo: 0xa3, hi: 0xa3}, + {value: 0x0014, lo: 0xb9, hi: 0xbb}, + // Block 0x9e, offset 0x3c5 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0010, lo: 0x8d, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xba}, + {value: 0x0010, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9f, offset 0x3ca + {value: 0x0010, lo: 0x80, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x9d}, + // Block 0xa0, offset 0x3cc + {value: 0x0010, lo: 0x80, hi: 0xba}, + // Block 0xa1, offset 0x3cd + {value: 0x0010, lo: 0x80, hi: 0xb4}, + // Block 0xa2, offset 0x3ce + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0xa3, offset 0x3cf + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa4, offset 0x3d1 + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + // Block 0xa5, offset 0x3d3 + {value: 0x0010, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xad, hi: 0xbf}, + // Block 0xa6, offset 0x3d5 + {value: 0x0010, lo: 0x80, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0xb5}, + {value: 0x0024, lo: 0xb6, hi: 0xba}, + // Block 0xa7, offset 0x3d8 + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa8, offset 0x3da + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x91, hi: 0x95}, + // Block 0xa9, offset 0x3dd + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x97}, + {value: 0xb653, lo: 0x98, hi: 0x9f}, + {value: 0xb953, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbf}, + // Block 0xaa, offset 0x3e5 + {value: 0xb652, lo: 0x80, hi: 0x87}, + {value: 0xb952, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0xab, offset 0x3e8 + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0xb953, lo: 0xb0, hi: 0xb7}, + {value: 0xb653, lo: 0xb8, hi: 0xbf}, + // Block 0xac, offset 0x3ec + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x93}, + {value: 0xb952, lo: 0x98, hi: 0x9f}, + {value: 0xb652, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbb}, + // Block 0xad, offset 0x3f4 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xae, offset 0x3f6 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + // Block 0xaf, offset 0x3f7 + {value: 0x0010, lo: 0x80, hi: 0xb6}, + // Block 0xb0, offset 0x3f8 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xa7}, + // Block 0xb1, offset 0x3fa + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xb5}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xb2, offset 0x400 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb6}, + // Block 0xb3, offset 0x402 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + // Block 0xb4, offset 0x403 + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + // Block 0xb5, offset 0x405 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb9}, + // Block 0xb6, offset 0x407 + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0xb7, offset 0x409 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x8e, hi: 0x8e}, + {value: 0x0024, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x99, hi: 0xb5}, + {value: 0x0024, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xb8, offset 0x416 + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0xb9, offset 0x417 + {value: 0x0010, lo: 0x80, hi: 0x9c}, + // Block 0xba, offset 0x418 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + // Block 0xbb, offset 0x41c + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + // Block 0xbc, offset 0x41e + {value: 0x0010, lo: 0x80, hi: 0x91}, + // Block 0xbd, offset 0x41f + {value: 0x0010, lo: 0x80, hi: 0x88}, + // Block 0xbe, offset 0x420 + {value: 0x5653, lo: 0x80, hi: 0xb2}, + // Block 0xbf, offset 0x421 + {value: 0x5652, lo: 0x80, hi: 0xb2}, + // Block 0xc0, offset 0x422 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xc1, offset 0x425 + {value: 0x0010, lo: 0x80, hi: 0xa9}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0010, lo: 0xb0, hi: 0xb1}, + // Block 0xc2, offset 0x428 + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xc3, offset 0x42b + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x87}, + {value: 0x0024, lo: 0x88, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x8b}, + {value: 0x0024, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + // Block 0xc4, offset 0x431 + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xc5, offset 0x432 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0010, lo: 0xa0, hi: 0xb6}, + // Block 0xc6, offset 0x434 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xc7, offset 0x438 + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xc8, offset 0x43c + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb6}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + // Block 0xc9, offset 0x442 + {value: 0x0014, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xca, offset 0x445 + {value: 0x0024, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0xcb, offset 0x44c + {value: 0x0010, lo: 0x84, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + // Block 0xcc, offset 0x450 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xcd, offset 0x454 + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x89, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + // Block 0xce, offset 0x45d + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb4}, + {value: 0x0030, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xb7}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0xcf, offset 0x466 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xd0, offset 0x46c + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa2}, + {value: 0x0014, lo: 0xa3, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xd1, offset 0x472 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xd2, offset 0x47c + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0030, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9d, hi: 0xa3}, + {value: 0x0024, lo: 0xa6, hi: 0xac}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + // Block 0xd3, offset 0x486 + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xd4, offset 0x488 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + // Block 0xd5, offset 0x491 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xd6, offset 0x497 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd7, offset 0x49d + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd8, offset 0x4a3 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x98, hi: 0x9b}, + {value: 0x0014, lo: 0x9c, hi: 0x9d}, + // Block 0xd9, offset 0x4a6 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xda, offset 0x4ac + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xdb, offset 0x4af + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0014, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb5}, + {value: 0x0030, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + // Block 0xdc, offset 0x4b8 + {value: 0x0010, lo: 0x80, hi: 0x89}, + // Block 0xdd, offset 0x4b9 + {value: 0x0014, lo: 0x9d, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xde, offset 0x4c0 + {value: 0x0010, lo: 0x80, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + // Block 0xdf, offset 0x4c4 + {value: 0x5f53, lo: 0xa0, hi: 0xbf}, + // Block 0xe0, offset 0x4c5 + {value: 0x5f52, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xe1, offset 0x4c8 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x89, hi: 0x89}, + {value: 0x0010, lo: 0x8c, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0xb5}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0014, lo: 0xbb, hi: 0xbc}, + {value: 0x0030, lo: 0xbd, hi: 0xbd}, + {value: 0x0034, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xe2, offset 0x4d2 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0034, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xe3, offset 0x4d5 + {value: 0x0010, lo: 0xa0, hi: 0xa7}, + {value: 0x0010, lo: 0xaa, hi: 0xbf}, + // Block 0xe4, offset 0x4d7 + {value: 0x0010, lo: 0x80, hi: 0x93}, + {value: 0x0014, lo: 0x94, hi: 0x97}, + {value: 0x0014, lo: 0x9a, hi: 0x9b}, + {value: 0x0010, lo: 0x9c, hi: 0x9f}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + // Block 0xe5, offset 0x4de + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x8a}, + {value: 0x0010, lo: 0x8b, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbb, hi: 0xbe}, + // Block 0xe6, offset 0x4e6 + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0014, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x98}, + {value: 0x0014, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0x9c, hi: 0xbf}, + // Block 0xe7, offset 0x4ec + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0014, lo: 0x8a, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x99}, + {value: 0x0010, lo: 0x9d, hi: 0x9d}, + // Block 0xe8, offset 0x4f2 + {value: 0x0010, lo: 0x80, hi: 0xb8}, + // Block 0xe9, offset 0x4f3 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb6}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xea, offset 0x4f9 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0xeb, offset 0x4fc + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0014, lo: 0x92, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xa9}, + {value: 0x0014, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0xec, offset 0x504 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb6}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xed, offset 0x50b + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa5}, + {value: 0x0010, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xbf}, + // Block 0xee, offset 0x515 + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0014, lo: 0x90, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0x96}, + {value: 0x0034, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0xef, offset 0x51d + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + // Block 0xf0, offset 0x520 + {value: 0x0010, lo: 0xb0, hi: 0xb0}, + // Block 0xf1, offset 0x521 + {value: 0x0010, lo: 0x80, hi: 0x99}, + // Block 0xf2, offset 0x522 + {value: 0x0010, lo: 0x80, hi: 0xae}, + // Block 0xf3, offset 0x523 + {value: 0x0010, lo: 0x80, hi: 0x83}, + // Block 0xf4, offset 0x524 + {value: 0x0010, lo: 0x80, hi: 0xae}, + {value: 0x0014, lo: 0xb0, hi: 0xb8}, + // Block 0xf5, offset 0x526 + {value: 0x0010, lo: 0x80, hi: 0x86}, + // Block 0xf6, offset 0x527 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0xf7, offset 0x529 + {value: 0x0010, lo: 0x90, hi: 0xad}, + {value: 0x0034, lo: 0xb0, hi: 0xb4}, + // Block 0xf8, offset 0x52b + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb6}, + // Block 0xf9, offset 0x52d + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa3, hi: 0xb7}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xfa, offset 0x531 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + // Block 0xfb, offset 0x532 + {value: 0x2013, lo: 0x80, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xbf}, + // Block 0xfc, offset 0x534 + {value: 0x0010, lo: 0x80, hi: 0x8a}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0xfd, offset 0x537 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0014, lo: 0x8f, hi: 0x9f}, + // Block 0xfe, offset 0x539 + {value: 0x0014, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa3, hi: 0xa4}, + {value: 0x0030, lo: 0xb0, hi: 0xb1}, + // Block 0xff, offset 0x53c + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbc}, + // Block 0x100, offset 0x53e + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0034, lo: 0x9e, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa3}, + // Block 0x101, offset 0x543 + {value: 0x0030, lo: 0xa5, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xa9}, + {value: 0x0030, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbf}, + // Block 0x102, offset 0x548 + {value: 0x0034, lo: 0x80, hi: 0x82}, + {value: 0x0024, lo: 0x85, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8b}, + {value: 0x0024, lo: 0xaa, hi: 0xad}, + // Block 0x103, offset 0x54c + {value: 0x0024, lo: 0x82, hi: 0x84}, + // Block 0x104, offset 0x54d + {value: 0x0013, lo: 0x80, hi: 0x99}, + {value: 0x0012, lo: 0x9a, hi: 0xb3}, + {value: 0x0013, lo: 0xb4, hi: 0xbf}, + // Block 0x105, offset 0x550 + {value: 0x0013, lo: 0x80, hi: 0x8d}, + {value: 0x0012, lo: 0x8e, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0xa7}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0x106, offset 0x554 + {value: 0x0013, lo: 0x80, hi: 0x81}, + {value: 0x0012, lo: 0x82, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0x9c}, + {value: 0x0013, lo: 0x9e, hi: 0x9f}, + {value: 0x0013, lo: 0xa2, hi: 0xa2}, + {value: 0x0013, lo: 0xa5, hi: 0xa6}, + {value: 0x0013, lo: 0xa9, hi: 0xac}, + {value: 0x0013, lo: 0xae, hi: 0xb5}, + {value: 0x0012, lo: 0xb6, hi: 0xb9}, + {value: 0x0012, lo: 0xbb, hi: 0xbb}, + {value: 0x0012, lo: 0xbd, hi: 0xbf}, + // Block 0x107, offset 0x55f + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0012, lo: 0x85, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0x108, offset 0x563 + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0013, lo: 0x84, hi: 0x85}, + {value: 0x0013, lo: 0x87, hi: 0x8a}, + {value: 0x0013, lo: 0x8d, hi: 0x94}, + {value: 0x0013, lo: 0x96, hi: 0x9c}, + {value: 0x0012, lo: 0x9e, hi: 0xb7}, + {value: 0x0013, lo: 0xb8, hi: 0xb9}, + {value: 0x0013, lo: 0xbb, hi: 0xbe}, + // Block 0x109, offset 0x56b + {value: 0x0013, lo: 0x80, hi: 0x84}, + {value: 0x0013, lo: 0x86, hi: 0x86}, + {value: 0x0013, lo: 0x8a, hi: 0x90}, + {value: 0x0012, lo: 0x92, hi: 0xab}, + {value: 0x0013, lo: 0xac, hi: 0xbf}, + // Block 0x10a, offset 0x570 + {value: 0x0013, lo: 0x80, hi: 0x85}, + {value: 0x0012, lo: 0x86, hi: 0x9f}, + {value: 0x0013, lo: 0xa0, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbf}, + // Block 0x10b, offset 0x574 + {value: 0x0012, lo: 0x80, hi: 0x93}, + {value: 0x0013, lo: 0x94, hi: 0xad}, + {value: 0x0012, lo: 0xae, hi: 0xbf}, + // Block 0x10c, offset 0x577 + {value: 0x0012, lo: 0x80, hi: 0x87}, + {value: 0x0013, lo: 0x88, hi: 0xa1}, + {value: 0x0012, lo: 0xa2, hi: 0xbb}, + {value: 0x0013, lo: 0xbc, hi: 0xbf}, + // Block 0x10d, offset 0x57b + {value: 0x0013, lo: 0x80, hi: 0x95}, + {value: 0x0012, lo: 0x96, hi: 0xaf}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x10e, offset 0x57e + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0012, lo: 0x8a, hi: 0xa5}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0x10f, offset 0x581 + {value: 0x0013, lo: 0x80, hi: 0x80}, + {value: 0x0012, lo: 0x82, hi: 0x9a}, + {value: 0x0012, lo: 0x9c, hi: 0xa1}, + {value: 0x0013, lo: 0xa2, hi: 0xba}, + {value: 0x0012, lo: 0xbc, hi: 0xbf}, + // Block 0x110, offset 0x586 + {value: 0x0012, lo: 0x80, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0xb4}, + {value: 0x0012, lo: 0xb6, hi: 0xbf}, + // Block 0x111, offset 0x58a + {value: 0x0012, lo: 0x80, hi: 0x8e}, + {value: 0x0012, lo: 0x90, hi: 0x95}, + {value: 0x0013, lo: 0x96, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x112, offset 0x58e + {value: 0x0012, lo: 0x80, hi: 0x88}, + {value: 0x0012, lo: 0x8a, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0x113, offset 0x592 + {value: 0x0012, lo: 0x80, hi: 0x82}, + {value: 0x0012, lo: 0x84, hi: 0x89}, + {value: 0x0017, lo: 0x8a, hi: 0x8b}, + {value: 0x0010, lo: 0x8e, hi: 0xbf}, + // Block 0x114, offset 0x596 + {value: 0x0014, lo: 0x80, hi: 0xb6}, + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x115, offset 0x598 + {value: 0x0014, lo: 0x80, hi: 0xac}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x116, offset 0x59a + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x9b, hi: 0x9f}, + {value: 0x0014, lo: 0xa1, hi: 0xaf}, + // Block 0x117, offset 0x59d + {value: 0x0024, lo: 0x80, hi: 0x86}, + {value: 0x0024, lo: 0x88, hi: 0x98}, + {value: 0x0024, lo: 0x9b, hi: 0xa1}, + {value: 0x0024, lo: 0xa3, hi: 0xa4}, + {value: 0x0024, lo: 0xa6, hi: 0xaa}, + // Block 0x118, offset 0x5a2 + {value: 0x0010, lo: 0x80, hi: 0xac}, + {value: 0x0024, lo: 0xb0, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xbd}, + // Block 0x119, offset 0x5a5 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + // Block 0x11a, offset 0x5a7 + {value: 0x0010, lo: 0x80, hi: 0xab}, + {value: 0x0024, lo: 0xac, hi: 0xaf}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x11b, offset 0x5aa + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0034, lo: 0x90, hi: 0x96}, + // Block 0x11c, offset 0x5ac + {value: 0xbc52, lo: 0x80, hi: 0x81}, + {value: 0xbf52, lo: 0x82, hi: 0x83}, + {value: 0x0024, lo: 0x84, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8b}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x11d, offset 0x5b2 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x9f}, + {value: 0x0010, lo: 0xa1, hi: 0xa2}, + {value: 0x0010, lo: 0xa4, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb7}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + // Block 0x11e, offset 0x5bb + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x9b}, + {value: 0x0010, lo: 0xa1, hi: 0xa3}, + {value: 0x0010, lo: 0xa5, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xbb}, + // Block 0x11f, offset 0x5c0 + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x120, offset 0x5c1 + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x121, offset 0x5c4 + {value: 0x0013, lo: 0x80, hi: 0x89}, + // Block 0x122, offset 0x5c5 + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x123, offset 0x5c6 + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x124, offset 0x5c7 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0014, lo: 0xa0, hi: 0xbf}, + // Block 0x125, offset 0x5c9 + {value: 0x0014, lo: 0x80, hi: 0xbf}, + // Block 0x126, offset 0x5ca + {value: 0x0014, lo: 0x80, hi: 0xaf}, +} + +// Total table size 15212 bytes (14KiB); checksum: 1EB13752 diff --git a/vendor/golang.org/x/text/cases/tables15.0.0.go b/vendor/golang.org/x/text/cases/tables15.0.0.go new file mode 100644 index 000000000000..aee0f3108515 --- /dev/null +++ b/vendor/golang.org/x/text/cases/tables15.0.0.go @@ -0,0 +1,2527 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +//go:build go1.21 + +package cases + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "15.0.0" + +var xorData string = "" + // Size: 213 bytes + "\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" + + "\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" + + "\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" + + "\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" + + "\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" + + "\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" + + "\x0b!\x10\x00\x0b!0\x001\x00\x00\x0b(\x04\x00\x03\x04\x1e\x00\x0b)\x08" + + "\x00\x03\x0a\x00\x02:\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<" + + "\x00\x01&\x00\x01*\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x03'" + + "\x00\x03)\x00\x03+\x00\x03/\x00\x03\x19\x00\x03\x1b\x00\x03\x1f\x00\x01" + + "\x1e\x00\x01\x22" + +var exceptions string = "" + // Size: 2450 bytes + "\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" + + "\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" + + "\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" + + "\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" + + "\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" + + "\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꟅꟅ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ι" + + "ΙΙ\x166ΐΪ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12" + + "φΦΦ\x12\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x10\x1bᲐა" + + "\x10\x1bᲑბ\x10\x1bᲒგ\x10\x1bᲓდ\x10\x1bᲔე\x10\x1bᲕვ\x10\x1bᲖზ\x10\x1bᲗთ" + + "\x10\x1bᲘი\x10\x1bᲙკ\x10\x1bᲚლ\x10\x1bᲛმ\x10\x1bᲜნ\x10\x1bᲝო\x10\x1bᲞპ" + + "\x10\x1bᲟჟ\x10\x1bᲠრ\x10\x1bᲡს\x10\x1bᲢტ\x10\x1bᲣუ\x10\x1bᲤფ\x10\x1bᲥქ" + + "\x10\x1bᲦღ\x10\x1bᲧყ\x10\x1bᲨშ\x10\x1bᲩჩ\x10\x1bᲪც\x10\x1bᲫძ\x10\x1bᲬწ" + + "\x10\x1bᲭჭ\x10\x1bᲮხ\x10\x1bᲯჯ\x10\x1bᲰჰ\x10\x1bᲱჱ\x10\x1bᲲჲ\x10\x1bᲳჳ" + + "\x10\x1bᲴჴ\x10\x1bᲵჵ\x10\x1bᲶჶ\x10\x1bᲷჷ\x10\x1bᲸჸ\x10\x1bᲹჹ\x10\x1bᲺჺ" + + "\x10\x1bᲽჽ\x10\x1bᲾჾ\x10\x1bᲿჿ\x12\x12вВВ\x12\x12дДД\x12\x12оОО\x12\x12с" + + "СС\x12\x12тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13\x1bꙋꙊꙊ\x13\x1bẖH̱H̱" + + "\x13\x1bẗT̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1baʾAʾAʾ\x13\x1bṡṠṠ\x12" + + "\x10ssß\x14$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ" + + "\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ" + + "\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ\x15\x1dἄιᾄἌΙ\x15" + + "\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ\x15+ἢιἪΙᾚ\x15+ἣι" + + "ἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨΙ\x15\x1dἡιᾑἩΙ" + + "\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15\x1dἦιᾖἮΙ\x15" + + "\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ\x15+ὥιὭΙᾭ" + + "\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ\x15\x1dὣιᾣὫΙ" + + "\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰιᾺΙᾺͅ\x14#αιΑΙ" + + "ᾼ\x14$άιΆΙΆͅ\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x12ιΙΙ\x15-ὴιῊΙ" + + "Ὴͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ\x166ῒΙ" + + "̈̀Ϊ̀\x166ΐΪ́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ̀\x166ΰΫ́Ϋ" + + "́\x14$ῤΡ̓Ρ̓\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ" + + "\x14$ῶΩ͂Ω͂\x166ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12" + + "\x10ɫɫ\x12\x10ɽɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12" + + "\x10ɒɒ\x12\x10ȿȿ\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12" + + "\x10ɬɬ\x12\x10ɪɪ\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x10ʂʂ\x12\x12ffFFFf" + + "\x12\x12fiFIFi\x12\x12flFLFl\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12st" + + "STSt\x12\x12stSTSt\x14$մնՄՆՄն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄ" + + "խ" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// caseTrie. Total size: 13398 bytes (13.08 KiB). Checksum: 544af6e6b1b70931. +type caseTrie struct{} + +func newCaseTrie(i int) *caseTrie { + return &caseTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *caseTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 22: + return uint16(caseValues[n<<6+uint32(b)]) + default: + n -= 22 + return uint16(sparse.lookup(n, b)) + } +} + +// caseValues: 24 blocks, 1536 entries, 3072 bytes +// The third block is the zero block. +var caseValues = [1536]uint16{ + // Block 0x0, offset 0x0 + 0x27: 0x0054, + 0x2e: 0x0054, + 0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010, + 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054, + // Block 0x1, offset 0x40 + 0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013, + 0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013, + 0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013, + 0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013, + 0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013, + 0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012, + 0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012, + 0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012, + 0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012, + 0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112, + 0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713, + 0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313, + 0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653, + 0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53, + 0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112, + 0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853, + 0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13, + 0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313, + 0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010, + 0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452, + // Block 0x4, offset 0x100 + 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359, + 0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619, + 0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313, + 0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13, + 0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452, + 0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112, + 0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112, + 0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112, + 0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112, + 0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112, + 0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112, + // Block 0x5, offset 0x140 + 0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53, + 0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112, + 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a, + 0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152, + 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012, + 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052, + 0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652, + 0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52, + 0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252, + 0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012, + 0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012, + // Block 0x6, offset 0x180 + 0x180: 0x3552, 0x181: 0x0012, 0x182: 0x110a, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012, + 0x186: 0x0012, 0x187: 0x118a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52, + 0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012, + 0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012, + 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x120a, + 0x19e: 0x128a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012, + 0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012, + 0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012, + 0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015, + 0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014, + 0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x130d, + 0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024, + 0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024, + 0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024, + 0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034, + 0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024, + 0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024, + 0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024, + 0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004, + 0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52, + 0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353, + // Block 0x8, offset 0x200 + 0x204: 0x0004, 0x205: 0x0004, + 0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513, + 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x138a, 0x211: 0x2013, + 0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013, + 0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013, + 0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53, + 0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53, + 0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512, + 0x230: 0x14ca, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012, + 0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012, + 0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012, + // Block 0x9, offset 0x240 + 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x160a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52, + 0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52, + 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x168a, 0x251: 0x170a, + 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x178a, 0x256: 0x180a, 0x257: 0x1812, + 0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112, + 0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112, + 0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112, + 0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112, + 0x270: 0x188a, 0x271: 0x190a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x198a, + 0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112, + 0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053, + // Block 0xa, offset 0x280 + 0x280: 0x6852, 0x281: 0x6852, 0x282: 0x6852, 0x283: 0x6852, 0x284: 0x6852, 0x285: 0x6852, + 0x286: 0x6852, 0x287: 0x1a0a, 0x288: 0x0012, 0x28a: 0x0010, + 0x291: 0x0034, + 0x292: 0x0024, 0x293: 0x0024, 0x294: 0x0024, 0x295: 0x0024, 0x296: 0x0034, 0x297: 0x0024, + 0x298: 0x0024, 0x299: 0x0024, 0x29a: 0x0034, 0x29b: 0x0034, 0x29c: 0x0024, 0x29d: 0x0024, + 0x29e: 0x0024, 0x29f: 0x0024, 0x2a0: 0x0024, 0x2a1: 0x0024, 0x2a2: 0x0034, 0x2a3: 0x0034, + 0x2a4: 0x0034, 0x2a5: 0x0034, 0x2a6: 0x0034, 0x2a7: 0x0034, 0x2a8: 0x0024, 0x2a9: 0x0024, + 0x2aa: 0x0034, 0x2ab: 0x0024, 0x2ac: 0x0024, 0x2ad: 0x0034, 0x2ae: 0x0034, 0x2af: 0x0024, + 0x2b0: 0x0034, 0x2b1: 0x0034, 0x2b2: 0x0034, 0x2b3: 0x0034, 0x2b4: 0x0034, 0x2b5: 0x0034, + 0x2b6: 0x0034, 0x2b7: 0x0034, 0x2b8: 0x0034, 0x2b9: 0x0034, 0x2ba: 0x0034, 0x2bb: 0x0034, + 0x2bc: 0x0034, 0x2bd: 0x0034, 0x2bf: 0x0034, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x0010, 0x2c1: 0x0010, 0x2c2: 0x0010, 0x2c3: 0x0010, 0x2c4: 0x0010, 0x2c5: 0x0010, + 0x2c6: 0x0010, 0x2c7: 0x0010, 0x2c8: 0x0010, 0x2c9: 0x0014, 0x2ca: 0x0024, 0x2cb: 0x0024, + 0x2cc: 0x0024, 0x2cd: 0x0024, 0x2ce: 0x0024, 0x2cf: 0x0034, 0x2d0: 0x0034, 0x2d1: 0x0034, + 0x2d2: 0x0034, 0x2d3: 0x0034, 0x2d4: 0x0024, 0x2d5: 0x0024, 0x2d6: 0x0024, 0x2d7: 0x0024, + 0x2d8: 0x0024, 0x2d9: 0x0024, 0x2da: 0x0024, 0x2db: 0x0024, 0x2dc: 0x0024, 0x2dd: 0x0024, + 0x2de: 0x0024, 0x2df: 0x0024, 0x2e0: 0x0024, 0x2e1: 0x0024, 0x2e2: 0x0014, 0x2e3: 0x0034, + 0x2e4: 0x0024, 0x2e5: 0x0024, 0x2e6: 0x0034, 0x2e7: 0x0024, 0x2e8: 0x0024, 0x2e9: 0x0034, + 0x2ea: 0x0024, 0x2eb: 0x0024, 0x2ec: 0x0024, 0x2ed: 0x0034, 0x2ee: 0x0034, 0x2ef: 0x0034, + 0x2f0: 0x0034, 0x2f1: 0x0034, 0x2f2: 0x0034, 0x2f3: 0x0024, 0x2f4: 0x0024, 0x2f5: 0x0024, + 0x2f6: 0x0034, 0x2f7: 0x0024, 0x2f8: 0x0024, 0x2f9: 0x0034, 0x2fa: 0x0034, 0x2fb: 0x0024, + 0x2fc: 0x0024, 0x2fd: 0x0024, 0x2fe: 0x0024, 0x2ff: 0x0024, + // Block 0xc, offset 0x300 + 0x300: 0x7053, 0x301: 0x7053, 0x302: 0x7053, 0x303: 0x7053, 0x304: 0x7053, 0x305: 0x7053, + 0x307: 0x7053, + 0x30d: 0x7053, 0x310: 0x1aea, 0x311: 0x1b6a, + 0x312: 0x1bea, 0x313: 0x1c6a, 0x314: 0x1cea, 0x315: 0x1d6a, 0x316: 0x1dea, 0x317: 0x1e6a, + 0x318: 0x1eea, 0x319: 0x1f6a, 0x31a: 0x1fea, 0x31b: 0x206a, 0x31c: 0x20ea, 0x31d: 0x216a, + 0x31e: 0x21ea, 0x31f: 0x226a, 0x320: 0x22ea, 0x321: 0x236a, 0x322: 0x23ea, 0x323: 0x246a, + 0x324: 0x24ea, 0x325: 0x256a, 0x326: 0x25ea, 0x327: 0x266a, 0x328: 0x26ea, 0x329: 0x276a, + 0x32a: 0x27ea, 0x32b: 0x286a, 0x32c: 0x28ea, 0x32d: 0x296a, 0x32e: 0x29ea, 0x32f: 0x2a6a, + 0x330: 0x2aea, 0x331: 0x2b6a, 0x332: 0x2bea, 0x333: 0x2c6a, 0x334: 0x2cea, 0x335: 0x2d6a, + 0x336: 0x2dea, 0x337: 0x2e6a, 0x338: 0x2eea, 0x339: 0x2f6a, 0x33a: 0x2fea, + 0x33c: 0x0015, 0x33d: 0x306a, 0x33e: 0x30ea, 0x33f: 0x316a, + // Block 0xd, offset 0x340 + 0x340: 0x0812, 0x341: 0x0812, 0x342: 0x0812, 0x343: 0x0812, 0x344: 0x0812, 0x345: 0x0812, + 0x348: 0x0813, 0x349: 0x0813, 0x34a: 0x0813, 0x34b: 0x0813, + 0x34c: 0x0813, 0x34d: 0x0813, 0x350: 0x3b1a, 0x351: 0x0812, + 0x352: 0x3bfa, 0x353: 0x0812, 0x354: 0x3d3a, 0x355: 0x0812, 0x356: 0x3e7a, 0x357: 0x0812, + 0x359: 0x0813, 0x35b: 0x0813, 0x35d: 0x0813, + 0x35f: 0x0813, 0x360: 0x0812, 0x361: 0x0812, 0x362: 0x0812, 0x363: 0x0812, + 0x364: 0x0812, 0x365: 0x0812, 0x366: 0x0812, 0x367: 0x0812, 0x368: 0x0813, 0x369: 0x0813, + 0x36a: 0x0813, 0x36b: 0x0813, 0x36c: 0x0813, 0x36d: 0x0813, 0x36e: 0x0813, 0x36f: 0x0813, + 0x370: 0x9252, 0x371: 0x9252, 0x372: 0x9552, 0x373: 0x9552, 0x374: 0x9852, 0x375: 0x9852, + 0x376: 0x9b52, 0x377: 0x9b52, 0x378: 0x9e52, 0x379: 0x9e52, 0x37a: 0xa152, 0x37b: 0xa152, + 0x37c: 0x4d52, 0x37d: 0x4d52, + // Block 0xe, offset 0x380 + 0x380: 0x3fba, 0x381: 0x40aa, 0x382: 0x419a, 0x383: 0x428a, 0x384: 0x437a, 0x385: 0x446a, + 0x386: 0x455a, 0x387: 0x464a, 0x388: 0x4739, 0x389: 0x4829, 0x38a: 0x4919, 0x38b: 0x4a09, + 0x38c: 0x4af9, 0x38d: 0x4be9, 0x38e: 0x4cd9, 0x38f: 0x4dc9, 0x390: 0x4eba, 0x391: 0x4faa, + 0x392: 0x509a, 0x393: 0x518a, 0x394: 0x527a, 0x395: 0x536a, 0x396: 0x545a, 0x397: 0x554a, + 0x398: 0x5639, 0x399: 0x5729, 0x39a: 0x5819, 0x39b: 0x5909, 0x39c: 0x59f9, 0x39d: 0x5ae9, + 0x39e: 0x5bd9, 0x39f: 0x5cc9, 0x3a0: 0x5dba, 0x3a1: 0x5eaa, 0x3a2: 0x5f9a, 0x3a3: 0x608a, + 0x3a4: 0x617a, 0x3a5: 0x626a, 0x3a6: 0x635a, 0x3a7: 0x644a, 0x3a8: 0x6539, 0x3a9: 0x6629, + 0x3aa: 0x6719, 0x3ab: 0x6809, 0x3ac: 0x68f9, 0x3ad: 0x69e9, 0x3ae: 0x6ad9, 0x3af: 0x6bc9, + 0x3b0: 0x0812, 0x3b1: 0x0812, 0x3b2: 0x6cba, 0x3b3: 0x6dca, 0x3b4: 0x6e9a, + 0x3b6: 0x6f7a, 0x3b7: 0x705a, 0x3b8: 0x0813, 0x3b9: 0x0813, 0x3ba: 0x9253, 0x3bb: 0x9253, + 0x3bc: 0x7199, 0x3bd: 0x0004, 0x3be: 0x726a, 0x3bf: 0x0004, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x0004, 0x3c1: 0x0004, 0x3c2: 0x72ea, 0x3c3: 0x73fa, 0x3c4: 0x74ca, + 0x3c6: 0x75aa, 0x3c7: 0x768a, 0x3c8: 0x9553, 0x3c9: 0x9553, 0x3ca: 0x9853, 0x3cb: 0x9853, + 0x3cc: 0x77c9, 0x3cd: 0x0004, 0x3ce: 0x0004, 0x3cf: 0x0004, 0x3d0: 0x0812, 0x3d1: 0x0812, + 0x3d2: 0x789a, 0x3d3: 0x79da, 0x3d6: 0x7b1a, 0x3d7: 0x7bfa, + 0x3d8: 0x0813, 0x3d9: 0x0813, 0x3da: 0x9b53, 0x3db: 0x9b53, 0x3dd: 0x0004, + 0x3de: 0x0004, 0x3df: 0x0004, 0x3e0: 0x0812, 0x3e1: 0x0812, 0x3e2: 0x7d3a, 0x3e3: 0x7e7a, + 0x3e4: 0x7fba, 0x3e5: 0x0912, 0x3e6: 0x809a, 0x3e7: 0x817a, 0x3e8: 0x0813, 0x3e9: 0x0813, + 0x3ea: 0xa153, 0x3eb: 0xa153, 0x3ec: 0x0913, 0x3ed: 0x0004, 0x3ee: 0x0004, 0x3ef: 0x0004, + 0x3f2: 0x82ba, 0x3f3: 0x83ca, 0x3f4: 0x849a, + 0x3f6: 0x857a, 0x3f7: 0x865a, 0x3f8: 0x9e53, 0x3f9: 0x9e53, 0x3fa: 0x4d53, 0x3fb: 0x4d53, + 0x3fc: 0x8799, 0x3fd: 0x0004, 0x3fe: 0x0004, + // Block 0x10, offset 0x400 + 0x402: 0x0013, + 0x407: 0x0013, 0x40a: 0x0012, 0x40b: 0x0013, + 0x40c: 0x0013, 0x40d: 0x0013, 0x40e: 0x0012, 0x40f: 0x0012, 0x410: 0x0013, 0x411: 0x0013, + 0x412: 0x0013, 0x413: 0x0012, 0x415: 0x0013, + 0x419: 0x0013, 0x41a: 0x0013, 0x41b: 0x0013, 0x41c: 0x0013, 0x41d: 0x0013, + 0x424: 0x0013, 0x426: 0x886b, 0x428: 0x0013, + 0x42a: 0x88cb, 0x42b: 0x890b, 0x42c: 0x0013, 0x42d: 0x0013, 0x42f: 0x0012, + 0x430: 0x0013, 0x431: 0x0013, 0x432: 0xa453, 0x433: 0x0013, 0x434: 0x0012, 0x435: 0x0010, + 0x436: 0x0010, 0x437: 0x0010, 0x438: 0x0010, 0x439: 0x0012, + 0x43c: 0x0012, 0x43d: 0x0012, 0x43e: 0x0013, 0x43f: 0x0013, + // Block 0x11, offset 0x440 + 0x440: 0x1a13, 0x441: 0x1a13, 0x442: 0x1e13, 0x443: 0x1e13, 0x444: 0x1a13, 0x445: 0x1a13, + 0x446: 0x2613, 0x447: 0x2613, 0x448: 0x2a13, 0x449: 0x2a13, 0x44a: 0x2e13, 0x44b: 0x2e13, + 0x44c: 0x2a13, 0x44d: 0x2a13, 0x44e: 0x2613, 0x44f: 0x2613, 0x450: 0xa752, 0x451: 0xa752, + 0x452: 0xaa52, 0x453: 0xaa52, 0x454: 0xad52, 0x455: 0xad52, 0x456: 0xaa52, 0x457: 0xaa52, + 0x458: 0xa752, 0x459: 0xa752, 0x45a: 0x1a12, 0x45b: 0x1a12, 0x45c: 0x1e12, 0x45d: 0x1e12, + 0x45e: 0x1a12, 0x45f: 0x1a12, 0x460: 0x2612, 0x461: 0x2612, 0x462: 0x2a12, 0x463: 0x2a12, + 0x464: 0x2e12, 0x465: 0x2e12, 0x466: 0x2a12, 0x467: 0x2a12, 0x468: 0x2612, 0x469: 0x2612, + // Block 0x12, offset 0x480 + 0x480: 0x6552, 0x481: 0x6552, 0x482: 0x6552, 0x483: 0x6552, 0x484: 0x6552, 0x485: 0x6552, + 0x486: 0x6552, 0x487: 0x6552, 0x488: 0x6552, 0x489: 0x6552, 0x48a: 0x6552, 0x48b: 0x6552, + 0x48c: 0x6552, 0x48d: 0x6552, 0x48e: 0x6552, 0x48f: 0x6552, 0x490: 0xb052, 0x491: 0xb052, + 0x492: 0xb052, 0x493: 0xb052, 0x494: 0xb052, 0x495: 0xb052, 0x496: 0xb052, 0x497: 0xb052, + 0x498: 0xb052, 0x499: 0xb052, 0x49a: 0xb052, 0x49b: 0xb052, 0x49c: 0xb052, 0x49d: 0xb052, + 0x49e: 0xb052, 0x49f: 0xb052, 0x4a0: 0x0113, 0x4a1: 0x0112, 0x4a2: 0x896b, 0x4a3: 0x8b53, + 0x4a4: 0x89cb, 0x4a5: 0x8a2a, 0x4a6: 0x8a8a, 0x4a7: 0x0f13, 0x4a8: 0x0f12, 0x4a9: 0x0313, + 0x4aa: 0x0312, 0x4ab: 0x0713, 0x4ac: 0x0712, 0x4ad: 0x8aeb, 0x4ae: 0x8b4b, 0x4af: 0x8bab, + 0x4b0: 0x8c0b, 0x4b1: 0x0012, 0x4b2: 0x0113, 0x4b3: 0x0112, 0x4b4: 0x0012, 0x4b5: 0x0313, + 0x4b6: 0x0312, 0x4b7: 0x0012, 0x4b8: 0x0012, 0x4b9: 0x0012, 0x4ba: 0x0012, 0x4bb: 0x0012, + 0x4bc: 0x0015, 0x4bd: 0x0015, 0x4be: 0x8c6b, 0x4bf: 0x8ccb, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x0113, 0x4c1: 0x0112, 0x4c2: 0x0113, 0x4c3: 0x0112, 0x4c4: 0x0113, 0x4c5: 0x0112, + 0x4c6: 0x0113, 0x4c7: 0x0112, 0x4c8: 0x0014, 0x4c9: 0x0014, 0x4ca: 0x0014, 0x4cb: 0x0713, + 0x4cc: 0x0712, 0x4cd: 0x8d2b, 0x4ce: 0x0012, 0x4cf: 0x0010, 0x4d0: 0x0113, 0x4d1: 0x0112, + 0x4d2: 0x0113, 0x4d3: 0x0112, 0x4d4: 0x6552, 0x4d5: 0x0012, 0x4d6: 0x0113, 0x4d7: 0x0112, + 0x4d8: 0x0113, 0x4d9: 0x0112, 0x4da: 0x0113, 0x4db: 0x0112, 0x4dc: 0x0113, 0x4dd: 0x0112, + 0x4de: 0x0113, 0x4df: 0x0112, 0x4e0: 0x0113, 0x4e1: 0x0112, 0x4e2: 0x0113, 0x4e3: 0x0112, + 0x4e4: 0x0113, 0x4e5: 0x0112, 0x4e6: 0x0113, 0x4e7: 0x0112, 0x4e8: 0x0113, 0x4e9: 0x0112, + 0x4ea: 0x8d8b, 0x4eb: 0x8deb, 0x4ec: 0x8e4b, 0x4ed: 0x8eab, 0x4ee: 0x8f0b, 0x4ef: 0x0012, + 0x4f0: 0x8f6b, 0x4f1: 0x8fcb, 0x4f2: 0x902b, 0x4f3: 0xb353, 0x4f4: 0x0113, 0x4f5: 0x0112, + 0x4f6: 0x0113, 0x4f7: 0x0112, 0x4f8: 0x0113, 0x4f9: 0x0112, 0x4fa: 0x0113, 0x4fb: 0x0112, + 0x4fc: 0x0113, 0x4fd: 0x0112, 0x4fe: 0x0113, 0x4ff: 0x0112, + // Block 0x14, offset 0x500 + 0x500: 0x90ea, 0x501: 0x916a, 0x502: 0x91ea, 0x503: 0x926a, 0x504: 0x931a, 0x505: 0x93ca, + 0x506: 0x944a, + 0x513: 0x94ca, 0x514: 0x95aa, 0x515: 0x968a, 0x516: 0x976a, 0x517: 0x984a, + 0x51d: 0x0010, + 0x51e: 0x0034, 0x51f: 0x0010, 0x520: 0x0010, 0x521: 0x0010, 0x522: 0x0010, 0x523: 0x0010, + 0x524: 0x0010, 0x525: 0x0010, 0x526: 0x0010, 0x527: 0x0010, 0x528: 0x0010, + 0x52a: 0x0010, 0x52b: 0x0010, 0x52c: 0x0010, 0x52d: 0x0010, 0x52e: 0x0010, 0x52f: 0x0010, + 0x530: 0x0010, 0x531: 0x0010, 0x532: 0x0010, 0x533: 0x0010, 0x534: 0x0010, 0x535: 0x0010, + 0x536: 0x0010, 0x538: 0x0010, 0x539: 0x0010, 0x53a: 0x0010, 0x53b: 0x0010, + 0x53c: 0x0010, 0x53e: 0x0010, + // Block 0x15, offset 0x540 + 0x540: 0x2713, 0x541: 0x2913, 0x542: 0x2b13, 0x543: 0x2913, 0x544: 0x2f13, 0x545: 0x2913, + 0x546: 0x2b13, 0x547: 0x2913, 0x548: 0x2713, 0x549: 0x3913, 0x54a: 0x3b13, + 0x54c: 0x3f13, 0x54d: 0x3913, 0x54e: 0x3b13, 0x54f: 0x3913, 0x550: 0x2713, 0x551: 0x2913, + 0x552: 0x2b13, 0x554: 0x2f13, 0x555: 0x2913, 0x557: 0xbc52, + 0x558: 0xbf52, 0x559: 0xc252, 0x55a: 0xbf52, 0x55b: 0xc552, 0x55c: 0xbf52, 0x55d: 0xc252, + 0x55e: 0xbf52, 0x55f: 0xbc52, 0x560: 0xc852, 0x561: 0xcb52, 0x563: 0xce52, + 0x564: 0xc852, 0x565: 0xcb52, 0x566: 0xc852, 0x567: 0x2712, 0x568: 0x2912, 0x569: 0x2b12, + 0x56a: 0x2912, 0x56b: 0x2f12, 0x56c: 0x2912, 0x56d: 0x2b12, 0x56e: 0x2912, 0x56f: 0x2712, + 0x570: 0x3912, 0x571: 0x3b12, 0x573: 0x3f12, 0x574: 0x3912, 0x575: 0x3b12, + 0x576: 0x3912, 0x577: 0x2712, 0x578: 0x2912, 0x579: 0x2b12, 0x57b: 0x2f12, + 0x57c: 0x2912, + // Block 0x16, offset 0x580 + 0x580: 0x2213, 0x581: 0x2213, 0x582: 0x2613, 0x583: 0x2613, 0x584: 0x2213, 0x585: 0x2213, + 0x586: 0x2e13, 0x587: 0x2e13, 0x588: 0x2213, 0x589: 0x2213, 0x58a: 0x2613, 0x58b: 0x2613, + 0x58c: 0x2213, 0x58d: 0x2213, 0x58e: 0x3e13, 0x58f: 0x3e13, 0x590: 0x2213, 0x591: 0x2213, + 0x592: 0x2613, 0x593: 0x2613, 0x594: 0x2213, 0x595: 0x2213, 0x596: 0x2e13, 0x597: 0x2e13, + 0x598: 0x2213, 0x599: 0x2213, 0x59a: 0x2613, 0x59b: 0x2613, 0x59c: 0x2213, 0x59d: 0x2213, + 0x59e: 0xd153, 0x59f: 0xd153, 0x5a0: 0xd453, 0x5a1: 0xd453, 0x5a2: 0x2212, 0x5a3: 0x2212, + 0x5a4: 0x2612, 0x5a5: 0x2612, 0x5a6: 0x2212, 0x5a7: 0x2212, 0x5a8: 0x2e12, 0x5a9: 0x2e12, + 0x5aa: 0x2212, 0x5ab: 0x2212, 0x5ac: 0x2612, 0x5ad: 0x2612, 0x5ae: 0x2212, 0x5af: 0x2212, + 0x5b0: 0x3e12, 0x5b1: 0x3e12, 0x5b2: 0x2212, 0x5b3: 0x2212, 0x5b4: 0x2612, 0x5b5: 0x2612, + 0x5b6: 0x2212, 0x5b7: 0x2212, 0x5b8: 0x2e12, 0x5b9: 0x2e12, 0x5ba: 0x2212, 0x5bb: 0x2212, + 0x5bc: 0x2612, 0x5bd: 0x2612, 0x5be: 0x2212, 0x5bf: 0x2212, + // Block 0x17, offset 0x5c0 + 0x5c2: 0x0010, + 0x5c7: 0x0010, 0x5c9: 0x0010, 0x5cb: 0x0010, + 0x5cd: 0x0010, 0x5ce: 0x0010, 0x5cf: 0x0010, 0x5d1: 0x0010, + 0x5d2: 0x0010, 0x5d4: 0x0010, 0x5d7: 0x0010, + 0x5d9: 0x0010, 0x5db: 0x0010, 0x5dd: 0x0010, + 0x5df: 0x0010, 0x5e1: 0x0010, 0x5e2: 0x0010, + 0x5e4: 0x0010, 0x5e7: 0x0010, 0x5e8: 0x0010, 0x5e9: 0x0010, + 0x5ea: 0x0010, 0x5ec: 0x0010, 0x5ed: 0x0010, 0x5ee: 0x0010, 0x5ef: 0x0010, + 0x5f0: 0x0010, 0x5f1: 0x0010, 0x5f2: 0x0010, 0x5f4: 0x0010, 0x5f5: 0x0010, + 0x5f6: 0x0010, 0x5f7: 0x0010, 0x5f9: 0x0010, 0x5fa: 0x0010, 0x5fb: 0x0010, + 0x5fc: 0x0010, 0x5fe: 0x0010, +} + +// caseIndex: 27 blocks, 1728 entries, 3456 bytes +// Block 0 is the zero block. +var caseIndex = [1728]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x16, 0xc3: 0x17, 0xc4: 0x18, 0xc5: 0x19, 0xc6: 0x01, 0xc7: 0x02, + 0xc8: 0x1a, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x1b, 0xcc: 0x1c, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07, + 0xd0: 0x1d, 0xd1: 0x1e, 0xd2: 0x1f, 0xd3: 0x20, 0xd4: 0x21, 0xd5: 0x22, 0xd6: 0x08, 0xd7: 0x23, + 0xd8: 0x24, 0xd9: 0x25, 0xda: 0x26, 0xdb: 0x27, 0xdc: 0x28, 0xdd: 0x29, 0xde: 0x2a, 0xdf: 0x2b, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09, + 0xf0: 0x16, 0xf3: 0x18, + // Block 0x4, offset 0x100 + 0x120: 0x2c, 0x121: 0x2d, 0x122: 0x2e, 0x123: 0x09, 0x124: 0x2f, 0x125: 0x30, 0x126: 0x31, 0x127: 0x32, + 0x128: 0x33, 0x129: 0x34, 0x12a: 0x35, 0x12b: 0x36, 0x12c: 0x37, 0x12d: 0x38, 0x12e: 0x39, 0x12f: 0x3a, + 0x130: 0x3b, 0x131: 0x3c, 0x132: 0x3d, 0x133: 0x3e, 0x134: 0x3f, 0x135: 0x40, 0x136: 0x41, 0x137: 0x42, + 0x138: 0x43, 0x139: 0x44, 0x13a: 0x45, 0x13b: 0x46, 0x13c: 0x47, 0x13d: 0x48, 0x13e: 0x49, 0x13f: 0x4a, + // Block 0x5, offset 0x140 + 0x140: 0x4b, 0x141: 0x4c, 0x142: 0x4d, 0x143: 0x0a, 0x144: 0x26, 0x145: 0x26, 0x146: 0x26, 0x147: 0x26, + 0x148: 0x26, 0x149: 0x4e, 0x14a: 0x4f, 0x14b: 0x50, 0x14c: 0x51, 0x14d: 0x52, 0x14e: 0x53, 0x14f: 0x54, + 0x150: 0x55, 0x151: 0x26, 0x152: 0x26, 0x153: 0x26, 0x154: 0x26, 0x155: 0x26, 0x156: 0x26, 0x157: 0x26, + 0x158: 0x26, 0x159: 0x56, 0x15a: 0x57, 0x15b: 0x58, 0x15c: 0x59, 0x15d: 0x5a, 0x15e: 0x5b, 0x15f: 0x5c, + 0x160: 0x5d, 0x161: 0x5e, 0x162: 0x5f, 0x163: 0x60, 0x164: 0x61, 0x165: 0x62, 0x167: 0x63, + 0x168: 0x64, 0x169: 0x65, 0x16a: 0x66, 0x16b: 0x67, 0x16c: 0x68, 0x16d: 0x69, 0x16e: 0x6a, 0x16f: 0x6b, + 0x170: 0x6c, 0x171: 0x6d, 0x172: 0x6e, 0x173: 0x6f, 0x174: 0x70, 0x175: 0x71, 0x176: 0x72, 0x177: 0x73, + 0x178: 0x74, 0x179: 0x74, 0x17a: 0x75, 0x17b: 0x74, 0x17c: 0x76, 0x17d: 0x0b, 0x17e: 0x0c, 0x17f: 0x0d, + // Block 0x6, offset 0x180 + 0x180: 0x77, 0x181: 0x78, 0x182: 0x79, 0x183: 0x7a, 0x184: 0x0e, 0x185: 0x7b, 0x186: 0x7c, + 0x192: 0x7d, 0x193: 0x0f, + 0x1b0: 0x7e, 0x1b1: 0x10, 0x1b2: 0x74, 0x1b3: 0x7f, 0x1b4: 0x80, 0x1b5: 0x81, 0x1b6: 0x82, 0x1b7: 0x83, + 0x1b8: 0x84, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x85, 0x1c2: 0x86, 0x1c3: 0x87, 0x1c4: 0x88, 0x1c5: 0x26, 0x1c6: 0x89, + // Block 0x8, offset 0x200 + 0x200: 0x8a, 0x201: 0x26, 0x202: 0x26, 0x203: 0x26, 0x204: 0x26, 0x205: 0x26, 0x206: 0x26, 0x207: 0x26, + 0x208: 0x26, 0x209: 0x26, 0x20a: 0x26, 0x20b: 0x26, 0x20c: 0x26, 0x20d: 0x26, 0x20e: 0x26, 0x20f: 0x26, + 0x210: 0x26, 0x211: 0x26, 0x212: 0x8b, 0x213: 0x8c, 0x214: 0x26, 0x215: 0x26, 0x216: 0x26, 0x217: 0x26, + 0x218: 0x8d, 0x219: 0x8e, 0x21a: 0x8f, 0x21b: 0x90, 0x21c: 0x91, 0x21d: 0x92, 0x21e: 0x11, 0x21f: 0x93, + 0x220: 0x94, 0x221: 0x95, 0x222: 0x26, 0x223: 0x96, 0x224: 0x97, 0x225: 0x98, 0x226: 0x99, 0x227: 0x9a, + 0x228: 0x9b, 0x229: 0x9c, 0x22a: 0x9d, 0x22b: 0x9e, 0x22c: 0x9f, 0x22d: 0xa0, 0x22e: 0xa1, 0x22f: 0xa2, + 0x230: 0x26, 0x231: 0x26, 0x232: 0x26, 0x233: 0x26, 0x234: 0x26, 0x235: 0x26, 0x236: 0x26, 0x237: 0x26, + 0x238: 0x26, 0x239: 0x26, 0x23a: 0x26, 0x23b: 0x26, 0x23c: 0x26, 0x23d: 0x26, 0x23e: 0x26, 0x23f: 0x26, + // Block 0x9, offset 0x240 + 0x240: 0x26, 0x241: 0x26, 0x242: 0x26, 0x243: 0x26, 0x244: 0x26, 0x245: 0x26, 0x246: 0x26, 0x247: 0x26, + 0x248: 0x26, 0x249: 0x26, 0x24a: 0x26, 0x24b: 0x26, 0x24c: 0x26, 0x24d: 0x26, 0x24e: 0x26, 0x24f: 0x26, + 0x250: 0x26, 0x251: 0x26, 0x252: 0x26, 0x253: 0x26, 0x254: 0x26, 0x255: 0x26, 0x256: 0x26, 0x257: 0x26, + 0x258: 0x26, 0x259: 0x26, 0x25a: 0x26, 0x25b: 0x26, 0x25c: 0x26, 0x25d: 0x26, 0x25e: 0x26, 0x25f: 0x26, + 0x260: 0x26, 0x261: 0x26, 0x262: 0x26, 0x263: 0x26, 0x264: 0x26, 0x265: 0x26, 0x266: 0x26, 0x267: 0x26, + 0x268: 0x26, 0x269: 0x26, 0x26a: 0x26, 0x26b: 0x26, 0x26c: 0x26, 0x26d: 0x26, 0x26e: 0x26, 0x26f: 0x26, + 0x270: 0x26, 0x271: 0x26, 0x272: 0x26, 0x273: 0x26, 0x274: 0x26, 0x275: 0x26, 0x276: 0x26, 0x277: 0x26, + 0x278: 0x26, 0x279: 0x26, 0x27a: 0x26, 0x27b: 0x26, 0x27c: 0x26, 0x27d: 0x26, 0x27e: 0x26, 0x27f: 0x26, + // Block 0xa, offset 0x280 + 0x280: 0x26, 0x281: 0x26, 0x282: 0x26, 0x283: 0x26, 0x284: 0x26, 0x285: 0x26, 0x286: 0x26, 0x287: 0x26, + 0x288: 0x26, 0x289: 0x26, 0x28a: 0x26, 0x28b: 0x26, 0x28c: 0x26, 0x28d: 0x26, 0x28e: 0x26, 0x28f: 0x26, + 0x290: 0x26, 0x291: 0x26, 0x292: 0x26, 0x293: 0x26, 0x294: 0x26, 0x295: 0x26, 0x296: 0x26, 0x297: 0x26, + 0x298: 0x26, 0x299: 0x26, 0x29a: 0x26, 0x29b: 0x26, 0x29c: 0x26, 0x29d: 0x26, 0x29e: 0xa3, 0x29f: 0xa4, + // Block 0xb, offset 0x2c0 + 0x2ec: 0x12, 0x2ed: 0xa5, 0x2ee: 0xa6, 0x2ef: 0xa7, + 0x2f0: 0x26, 0x2f1: 0x26, 0x2f2: 0x26, 0x2f3: 0x26, 0x2f4: 0xa8, 0x2f5: 0xa9, 0x2f6: 0xaa, 0x2f7: 0xab, + 0x2f8: 0xac, 0x2f9: 0xad, 0x2fa: 0x26, 0x2fb: 0xae, 0x2fc: 0xaf, 0x2fd: 0xb0, 0x2fe: 0xb1, 0x2ff: 0xb2, + // Block 0xc, offset 0x300 + 0x300: 0xb3, 0x301: 0xb4, 0x302: 0x26, 0x303: 0xb5, 0x305: 0xb6, 0x307: 0xb7, + 0x30a: 0xb8, 0x30b: 0xb9, 0x30c: 0xba, 0x30d: 0xbb, 0x30e: 0xbc, 0x30f: 0xbd, + 0x310: 0xbe, 0x311: 0xbf, 0x312: 0xc0, 0x313: 0xc1, 0x314: 0xc2, 0x315: 0xc3, 0x316: 0x13, + 0x318: 0x26, 0x319: 0x26, 0x31a: 0x26, 0x31b: 0x26, 0x31c: 0xc4, 0x31d: 0xc5, 0x31e: 0xc6, + 0x320: 0xc7, 0x321: 0xc8, 0x322: 0xc9, 0x323: 0xca, 0x324: 0xcb, 0x326: 0xcc, + 0x328: 0xcd, 0x329: 0xce, 0x32a: 0xcf, 0x32b: 0xd0, 0x32c: 0x60, 0x32d: 0xd1, 0x32e: 0xd2, + 0x330: 0x26, 0x331: 0xd3, 0x332: 0xd4, 0x333: 0xd5, 0x334: 0xd6, + 0x33a: 0xd7, 0x33b: 0xd8, 0x33c: 0xd9, 0x33d: 0xda, 0x33e: 0xdb, 0x33f: 0xdc, + // Block 0xd, offset 0x340 + 0x340: 0xdd, 0x341: 0xde, 0x342: 0xdf, 0x343: 0xe0, 0x344: 0xe1, 0x345: 0xe2, 0x346: 0xe3, 0x347: 0xe4, + 0x348: 0xe5, 0x349: 0xe6, 0x34a: 0xe7, 0x34b: 0xe8, 0x34c: 0xe9, 0x34d: 0xea, + 0x350: 0xeb, 0x351: 0xec, 0x352: 0xed, 0x353: 0xee, 0x356: 0xef, 0x357: 0xf0, + 0x358: 0xf1, 0x359: 0xf2, 0x35a: 0xf3, 0x35b: 0xf4, 0x35c: 0xf5, + 0x360: 0xf6, 0x362: 0xf7, 0x363: 0xf8, 0x364: 0xf9, 0x365: 0xfa, 0x366: 0xfb, 0x367: 0xfc, + 0x368: 0xfd, 0x369: 0xfe, 0x36a: 0xff, 0x36b: 0x100, + 0x370: 0x101, 0x371: 0x102, 0x372: 0x103, 0x374: 0x104, 0x375: 0x105, 0x376: 0x106, + 0x37b: 0x107, 0x37c: 0x108, 0x37d: 0x109, 0x37e: 0x10a, + // Block 0xe, offset 0x380 + 0x380: 0x26, 0x381: 0x26, 0x382: 0x26, 0x383: 0x26, 0x384: 0x26, 0x385: 0x26, 0x386: 0x26, 0x387: 0x26, + 0x388: 0x26, 0x389: 0x26, 0x38a: 0x26, 0x38b: 0x26, 0x38c: 0x26, 0x38d: 0x26, 0x38e: 0x10b, + 0x390: 0x26, 0x391: 0x10c, 0x392: 0x26, 0x393: 0x26, 0x394: 0x26, 0x395: 0x10d, + 0x3be: 0xa9, 0x3bf: 0x10e, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x26, 0x3c1: 0x26, 0x3c2: 0x26, 0x3c3: 0x26, 0x3c4: 0x26, 0x3c5: 0x26, 0x3c6: 0x26, 0x3c7: 0x26, + 0x3c8: 0x26, 0x3c9: 0x26, 0x3ca: 0x26, 0x3cb: 0x26, 0x3cc: 0x26, 0x3cd: 0x26, 0x3ce: 0x26, 0x3cf: 0x26, + 0x3d0: 0x10f, 0x3d1: 0x110, + // Block 0x10, offset 0x400 + 0x410: 0x26, 0x411: 0x26, 0x412: 0x26, 0x413: 0x26, 0x414: 0x26, 0x415: 0x26, 0x416: 0x26, 0x417: 0x26, + 0x418: 0x26, 0x419: 0x111, + // Block 0x11, offset 0x440 + 0x460: 0x26, 0x461: 0x26, 0x462: 0x26, 0x463: 0x26, 0x464: 0x26, 0x465: 0x26, 0x466: 0x26, 0x467: 0x26, + 0x468: 0x100, 0x469: 0x112, 0x46a: 0x113, 0x46b: 0x114, 0x46c: 0x115, 0x46d: 0x116, 0x46e: 0x117, + 0x479: 0x118, 0x47c: 0x26, 0x47d: 0x119, 0x47e: 0x11a, 0x47f: 0x11b, + // Block 0x12, offset 0x480 + 0x4bf: 0x11c, + // Block 0x13, offset 0x4c0 + 0x4f0: 0x26, 0x4f1: 0x11d, 0x4f2: 0x11e, + // Block 0x14, offset 0x500 + 0x53c: 0x11f, 0x53d: 0x120, + // Block 0x15, offset 0x540 + 0x545: 0x121, 0x546: 0x122, + 0x549: 0x123, + 0x550: 0x124, 0x551: 0x125, 0x552: 0x126, 0x553: 0x127, 0x554: 0x128, 0x555: 0x129, 0x556: 0x12a, 0x557: 0x12b, + 0x558: 0x12c, 0x559: 0x12d, 0x55a: 0x12e, 0x55b: 0x12f, 0x55c: 0x130, 0x55d: 0x131, 0x55e: 0x132, 0x55f: 0x133, + 0x568: 0x134, 0x569: 0x135, 0x56a: 0x136, + 0x57c: 0x137, + // Block 0x16, offset 0x580 + 0x580: 0x138, 0x581: 0x139, 0x582: 0x13a, 0x584: 0x13b, 0x585: 0x13c, + 0x58a: 0x13d, 0x58b: 0x13e, + 0x593: 0x13f, + 0x59f: 0x140, + 0x5a0: 0x26, 0x5a1: 0x26, 0x5a2: 0x26, 0x5a3: 0x141, 0x5a4: 0x14, 0x5a5: 0x142, + 0x5b8: 0x143, 0x5b9: 0x15, 0x5ba: 0x144, + // Block 0x17, offset 0x5c0 + 0x5c4: 0x145, 0x5c5: 0x146, 0x5c6: 0x147, + 0x5cf: 0x148, + 0x5ef: 0x149, + // Block 0x18, offset 0x600 + 0x610: 0x0a, 0x611: 0x0b, 0x612: 0x0c, 0x613: 0x0d, 0x614: 0x0e, 0x616: 0x0f, + 0x61a: 0x10, 0x61b: 0x11, 0x61c: 0x12, 0x61d: 0x13, 0x61e: 0x14, 0x61f: 0x15, + // Block 0x19, offset 0x640 + 0x640: 0x14a, 0x641: 0x14b, 0x644: 0x14b, 0x645: 0x14b, 0x646: 0x14b, 0x647: 0x14c, + // Block 0x1a, offset 0x680 + 0x6a0: 0x17, +} + +// sparseOffsets: 312 entries, 624 bytes +var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x34, 0x37, 0x3b, 0x3e, 0x42, 0x4c, 0x4e, 0x57, 0x5e, 0x63, 0x71, 0x72, 0x80, 0x8f, 0x99, 0x9c, 0xa3, 0xab, 0xaf, 0xb7, 0xbd, 0xcb, 0xd6, 0xe3, 0xee, 0xfa, 0x104, 0x110, 0x11b, 0x127, 0x133, 0x13b, 0x145, 0x150, 0x15b, 0x167, 0x16d, 0x178, 0x17e, 0x186, 0x189, 0x18e, 0x192, 0x196, 0x19d, 0x1a6, 0x1ae, 0x1af, 0x1b8, 0x1bf, 0x1c7, 0x1cd, 0x1d2, 0x1d6, 0x1d9, 0x1db, 0x1de, 0x1e3, 0x1e4, 0x1e6, 0x1e8, 0x1ea, 0x1f1, 0x1f6, 0x1fa, 0x203, 0x206, 0x209, 0x20f, 0x210, 0x21b, 0x21c, 0x21d, 0x222, 0x22f, 0x238, 0x23e, 0x246, 0x24f, 0x258, 0x261, 0x266, 0x269, 0x274, 0x282, 0x284, 0x28b, 0x28f, 0x29b, 0x29c, 0x2a7, 0x2af, 0x2b7, 0x2bd, 0x2be, 0x2cc, 0x2d1, 0x2d4, 0x2d9, 0x2dd, 0x2e3, 0x2e8, 0x2eb, 0x2f0, 0x2f5, 0x2f6, 0x2fc, 0x2fe, 0x2ff, 0x301, 0x303, 0x306, 0x307, 0x309, 0x30c, 0x312, 0x316, 0x318, 0x31d, 0x324, 0x334, 0x33e, 0x33f, 0x348, 0x34c, 0x351, 0x359, 0x35f, 0x365, 0x36f, 0x374, 0x37d, 0x383, 0x38c, 0x390, 0x398, 0x39a, 0x39c, 0x39f, 0x3a1, 0x3a3, 0x3a4, 0x3a5, 0x3a7, 0x3a9, 0x3af, 0x3b4, 0x3b6, 0x3bd, 0x3c0, 0x3c2, 0x3c8, 0x3cd, 0x3cf, 0x3d0, 0x3d1, 0x3d2, 0x3d4, 0x3d6, 0x3d8, 0x3db, 0x3dd, 0x3e0, 0x3e8, 0x3eb, 0x3ef, 0x3f7, 0x3f9, 0x409, 0x40a, 0x40c, 0x411, 0x417, 0x419, 0x41a, 0x41c, 0x41e, 0x420, 0x42d, 0x42e, 0x42f, 0x433, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43c, 0x43f, 0x440, 0x443, 0x44a, 0x450, 0x452, 0x456, 0x45e, 0x464, 0x468, 0x46f, 0x473, 0x477, 0x480, 0x48a, 0x48c, 0x492, 0x498, 0x4a2, 0x4ac, 0x4ae, 0x4b7, 0x4bd, 0x4c3, 0x4c9, 0x4cc, 0x4d2, 0x4d5, 0x4de, 0x4df, 0x4e6, 0x4ea, 0x4eb, 0x4ee, 0x4f8, 0x4fb, 0x4fd, 0x504, 0x50c, 0x512, 0x519, 0x51a, 0x520, 0x523, 0x52b, 0x532, 0x53c, 0x544, 0x547, 0x54c, 0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x557, 0x55a, 0x55b, 0x55e, 0x55f, 0x562, 0x564, 0x568, 0x569, 0x56b, 0x56e, 0x570, 0x573, 0x576, 0x578, 0x57d, 0x57f, 0x580, 0x585, 0x589, 0x58a, 0x58d, 0x591, 0x59c, 0x5a0, 0x5a8, 0x5ad, 0x5b1, 0x5b4, 0x5b8, 0x5bb, 0x5be, 0x5c3, 0x5c7, 0x5cb, 0x5cf, 0x5d3, 0x5d5, 0x5d7, 0x5da, 0x5de, 0x5e4, 0x5e5, 0x5e6, 0x5e9, 0x5eb, 0x5ed, 0x5f0, 0x5f5, 0x5f9, 0x5fb, 0x601, 0x60a, 0x60f, 0x610, 0x613, 0x614, 0x615, 0x616, 0x618, 0x619, 0x61a} + +// sparseValues: 1562 entries, 6248 bytes +var sparseValues = [1562]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0004, lo: 0xa8, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xaa}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0004, lo: 0xaf, hi: 0xaf}, + {value: 0x0004, lo: 0xb4, hi: 0xb4}, + {value: 0x001a, lo: 0xb5, hi: 0xb5}, + {value: 0x0054, lo: 0xb7, hi: 0xb7}, + {value: 0x0004, lo: 0xb8, hi: 0xb8}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + // Block 0x1, offset 0x9 + {value: 0x2013, lo: 0x80, hi: 0x96}, + {value: 0x2013, lo: 0x98, hi: 0x9e}, + {value: 0x009a, lo: 0x9f, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xb6}, + {value: 0x2012, lo: 0xb8, hi: 0xbe}, + {value: 0x0252, lo: 0xbf, hi: 0xbf}, + // Block 0x2, offset 0xf + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x011b, lo: 0xb0, hi: 0xb0}, + {value: 0x019a, lo: 0xb1, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb7}, + {value: 0x0012, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x0553, lo: 0xbf, hi: 0xbf}, + // Block 0x3, offset 0x18 + {value: 0x0552, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x01da, lo: 0x89, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xb7}, + {value: 0x0253, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x028a, lo: 0xbf, hi: 0xbf}, + // Block 0x4, offset 0x24 + {value: 0x0117, lo: 0x80, hi: 0x9f}, + {value: 0x2f53, lo: 0xa0, hi: 0xa0}, + {value: 0x0012, lo: 0xa1, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xb3}, + {value: 0x0012, lo: 0xb4, hi: 0xb9}, + {value: 0x090b, lo: 0xba, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x2953, lo: 0xbd, hi: 0xbd}, + {value: 0x098b, lo: 0xbe, hi: 0xbe}, + {value: 0x0a0a, lo: 0xbf, hi: 0xbf}, + // Block 0x5, offset 0x2e + {value: 0x0015, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x97}, + {value: 0x0004, lo: 0x98, hi: 0x9d}, + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0015, lo: 0xa0, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xbf}, + // Block 0x6, offset 0x34 + {value: 0x0024, lo: 0x80, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbf}, + // Block 0x7, offset 0x37 + {value: 0x6553, lo: 0x80, hi: 0x8f}, + {value: 0x2013, lo: 0x90, hi: 0x9f}, + {value: 0x5f53, lo: 0xa0, hi: 0xaf}, + {value: 0x2012, lo: 0xb0, hi: 0xbf}, + // Block 0x8, offset 0x3b + {value: 0x5f52, lo: 0x80, hi: 0x8f}, + {value: 0x6552, lo: 0x90, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x9, offset 0x3e + {value: 0x0117, lo: 0x80, hi: 0x81}, + {value: 0x0024, lo: 0x83, hi: 0x87}, + {value: 0x0014, lo: 0x88, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xbf}, + // Block 0xa, offset 0x42 + {value: 0x0f13, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x0316, lo: 0x89, hi: 0x8a}, + {value: 0x0716, lo: 0x8b, hi: 0x8c}, + {value: 0x0316, lo: 0x8d, hi: 0x8e}, + {value: 0x0f12, lo: 0x8f, hi: 0x8f}, + {value: 0x0117, lo: 0x90, hi: 0xbf}, + // Block 0xb, offset 0x4c + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x6553, lo: 0xb1, hi: 0xbf}, + // Block 0xc, offset 0x4e + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6853, lo: 0x90, hi: 0x96}, + {value: 0x0014, lo: 0x99, hi: 0x99}, + {value: 0x0010, lo: 0x9a, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0054, lo: 0x9f, hi: 0x9f}, + {value: 0x0012, lo: 0xa0, hi: 0xa0}, + {value: 0x6552, lo: 0xa1, hi: 0xaf}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0xd, offset 0x57 + {value: 0x0034, lo: 0x81, hi: 0x82}, + {value: 0x0024, lo: 0x84, hi: 0x84}, + {value: 0x0034, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0xaa}, + {value: 0x0010, lo: 0xaf, hi: 0xb3}, + {value: 0x0054, lo: 0xb4, hi: 0xb4}, + // Block 0xe, offset 0x5e + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0024, lo: 0x90, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0014, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xf, offset 0x63 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9c}, + {value: 0x0024, lo: 0x9d, hi: 0x9e}, + {value: 0x0034, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x10, offset 0x71 + {value: 0x0010, lo: 0x80, hi: 0xbf}, + // Block 0x11, offset 0x72 + {value: 0x0010, lo: 0x80, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0024, lo: 0x9f, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xaa, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x12, offset 0x80 + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0034, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0034, lo: 0xb1, hi: 0xb1}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbd}, + {value: 0x0034, lo: 0xbe, hi: 0xbe}, + {value: 0x0024, lo: 0xbf, hi: 0xbf}, + // Block 0x13, offset 0x8f + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0024, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x88}, + {value: 0x0024, lo: 0x89, hi: 0x8a}, + {value: 0x0010, lo: 0x8d, hi: 0xbf}, + // Block 0x14, offset 0x99 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x15, offset 0x9c + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xb1}, + {value: 0x0034, lo: 0xb2, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0x16, offset 0xa3 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x99}, + {value: 0x0014, lo: 0x9a, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0xa3}, + {value: 0x0014, lo: 0xa4, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xad}, + // Block 0x17, offset 0xab + {value: 0x0010, lo: 0x80, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0xa0, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x18, offset 0xaf + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0004, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x8e}, + {value: 0x0014, lo: 0x90, hi: 0x91}, + {value: 0x0024, lo: 0x98, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x9b}, + {value: 0x0024, lo: 0x9c, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x19, offset 0xb7 + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1a, offset 0xbd + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0x1b, offset 0xcb + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb6, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1c, offset 0xd6 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xb1}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + // Block 0x1d, offset 0xe3 + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x1e, offset 0xee + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x99, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x1f, offset 0xfa + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x20, offset 0x104 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x85}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xbf}, + // Block 0x21, offset 0x110 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x22, offset 0x11b + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x23, offset 0x127 + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0010, lo: 0xa8, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x24, offset 0x133 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x25, offset 0x13b + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbf}, + // Block 0x26, offset 0x145 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x88}, + {value: 0x0014, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9a}, + {value: 0x0010, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x27, offset 0x150 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x28, offset 0x15b + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x9d, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb3}, + // Block 0x29, offset 0x167 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x2a, offset 0x16d + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x94, hi: 0x97}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xba, hi: 0xbf}, + // Block 0x2b, offset 0x178 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x96}, + {value: 0x0010, lo: 0x9a, hi: 0xb1}, + {value: 0x0010, lo: 0xb3, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x2c, offset 0x17e + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x94}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9f}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + // Block 0x2d, offset 0x186 + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xba}, + // Block 0x2e, offset 0x189 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x2f, offset 0x18e + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xba}, + {value: 0x0014, lo: 0xbb, hi: 0xbc}, + // Block 0x30, offset 0x192 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x31, offset 0x196 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0034, lo: 0x98, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0034, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x32, offset 0x19d + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xac}, + {value: 0x0034, lo: 0xb1, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xba, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x33, offset 0x1a6 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0024, lo: 0x82, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x86, hi: 0x87}, + {value: 0x0010, lo: 0x88, hi: 0x8c}, + {value: 0x0014, lo: 0x8d, hi: 0x97}, + {value: 0x0014, lo: 0x99, hi: 0xbc}, + // Block 0x34, offset 0x1ae + {value: 0x0034, lo: 0x86, hi: 0x86}, + // Block 0x35, offset 0x1af + {value: 0x0010, lo: 0xab, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbe}, + // Block 0x36, offset 0x1b8 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x96, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x99}, + {value: 0x0014, lo: 0x9e, hi: 0xa0}, + {value: 0x0010, lo: 0xa2, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xad}, + {value: 0x0014, lo: 0xb1, hi: 0xb4}, + // Block 0x37, offset 0x1bf + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x6c53, lo: 0xa0, hi: 0xbf}, + // Block 0x38, offset 0x1c7 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x9a, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x39, offset 0x1cd + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x3a, offset 0x1d2 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x82, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3b, offset 0x1d6 + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3c, offset 0x1d9 + {value: 0x0010, lo: 0x80, hi: 0x9a}, + {value: 0x0024, lo: 0x9d, hi: 0x9f}, + // Block 0x3d, offset 0x1db + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x7453, lo: 0xa0, hi: 0xaf}, + {value: 0x7853, lo: 0xb0, hi: 0xbf}, + // Block 0x3e, offset 0x1de + {value: 0x7c53, lo: 0x80, hi: 0x8f}, + {value: 0x8053, lo: 0x90, hi: 0x9f}, + {value: 0x7c53, lo: 0xa0, hi: 0xaf}, + {value: 0x0813, lo: 0xb0, hi: 0xb5}, + {value: 0x0892, lo: 0xb8, hi: 0xbd}, + // Block 0x3f, offset 0x1e3 + {value: 0x0010, lo: 0x81, hi: 0xbf}, + // Block 0x40, offset 0x1e4 + {value: 0x0010, lo: 0x80, hi: 0xac}, + {value: 0x0010, lo: 0xaf, hi: 0xbf}, + // Block 0x41, offset 0x1e6 + {value: 0x0010, lo: 0x81, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x42, offset 0x1e8 + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb8}, + // Block 0x43, offset 0x1ea + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0034, lo: 0x94, hi: 0x94}, + {value: 0x0030, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x9f, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0030, lo: 0xb4, hi: 0xb4}, + // Block 0x44, offset 0x1f1 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xac}, + {value: 0x0010, lo: 0xae, hi: 0xb0}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + // Block 0x45, offset 0x1f6 + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x46, offset 0x1fa + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x89, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0014, lo: 0x93, hi: 0x93}, + {value: 0x0004, lo: 0x97, hi: 0x97}, + {value: 0x0024, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0x47, offset 0x203 + {value: 0x0014, lo: 0x8b, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x48, offset 0x206 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb8}, + // Block 0x49, offset 0x209 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x4a, offset 0x20f + {value: 0x0010, lo: 0x80, hi: 0xb5}, + // Block 0x4b, offset 0x210 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbb}, + // Block 0x4c, offset 0x21b + {value: 0x0010, lo: 0x86, hi: 0x8f}, + // Block 0x4d, offset 0x21c + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x4e, offset 0x21d + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + // Block 0x4f, offset 0x222 + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x9e}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xac}, + {value: 0x0010, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xbc}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x50, offset 0x22f + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xa7, hi: 0xa7}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + {value: 0x0034, lo: 0xb5, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbc}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x51, offset 0x238 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0024, lo: 0x81, hi: 0x82}, + {value: 0x0034, lo: 0x83, hi: 0x84}, + {value: 0x0024, lo: 0x85, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0024, lo: 0x8b, hi: 0x8e}, + // Block 0x52, offset 0x23e + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x53, offset 0x246 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0030, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xab, hi: 0xab}, + {value: 0x0034, lo: 0xac, hi: 0xac}, + {value: 0x0024, lo: 0xad, hi: 0xb3}, + // Block 0x54, offset 0x24f + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0030, lo: 0xaa, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbf}, + // Block 0x55, offset 0x258 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0030, lo: 0xb2, hi: 0xb3}, + // Block 0x56, offset 0x261 + {value: 0x0010, lo: 0x80, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0x57, offset 0x266 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8d, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x58, offset 0x269 + {value: 0x31ea, lo: 0x80, hi: 0x80}, + {value: 0x326a, lo: 0x81, hi: 0x81}, + {value: 0x32ea, lo: 0x82, hi: 0x82}, + {value: 0x336a, lo: 0x83, hi: 0x83}, + {value: 0x33ea, lo: 0x84, hi: 0x84}, + {value: 0x346a, lo: 0x85, hi: 0x85}, + {value: 0x34ea, lo: 0x86, hi: 0x86}, + {value: 0x356a, lo: 0x87, hi: 0x87}, + {value: 0x35ea, lo: 0x88, hi: 0x88}, + {value: 0x8353, lo: 0x90, hi: 0xba}, + {value: 0x8353, lo: 0xbd, hi: 0xbf}, + // Block 0x59, offset 0x274 + {value: 0x0024, lo: 0x90, hi: 0x92}, + {value: 0x0034, lo: 0x94, hi: 0x99}, + {value: 0x0024, lo: 0x9a, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9f}, + {value: 0x0024, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0034, lo: 0xa2, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xb3}, + {value: 0x0024, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb7}, + {value: 0x0024, lo: 0xb8, hi: 0xb9}, + {value: 0x0010, lo: 0xba, hi: 0xba}, + // Block 0x5a, offset 0x282 + {value: 0x0012, lo: 0x80, hi: 0xab}, + {value: 0x0015, lo: 0xac, hi: 0xbf}, + // Block 0x5b, offset 0x284 + {value: 0x0015, lo: 0x80, hi: 0xaa}, + {value: 0x0012, lo: 0xab, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb8}, + {value: 0x8752, lo: 0xb9, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbc}, + {value: 0x8b52, lo: 0xbd, hi: 0xbd}, + {value: 0x0012, lo: 0xbe, hi: 0xbf}, + // Block 0x5c, offset 0x28b + {value: 0x0012, lo: 0x80, hi: 0x8d}, + {value: 0x8f52, lo: 0x8e, hi: 0x8e}, + {value: 0x0012, lo: 0x8f, hi: 0x9a}, + {value: 0x0015, lo: 0x9b, hi: 0xbf}, + // Block 0x5d, offset 0x28f + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0024, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbd}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x5e, offset 0x29b + {value: 0x0117, lo: 0x80, hi: 0xbf}, + // Block 0x5f, offset 0x29c + {value: 0x0117, lo: 0x80, hi: 0x95}, + {value: 0x369a, lo: 0x96, hi: 0x96}, + {value: 0x374a, lo: 0x97, hi: 0x97}, + {value: 0x37fa, lo: 0x98, hi: 0x98}, + {value: 0x38aa, lo: 0x99, hi: 0x99}, + {value: 0x395a, lo: 0x9a, hi: 0x9a}, + {value: 0x3a0a, lo: 0x9b, hi: 0x9b}, + {value: 0x0012, lo: 0x9c, hi: 0x9d}, + {value: 0x3abb, lo: 0x9e, hi: 0x9e}, + {value: 0x0012, lo: 0x9f, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x60, offset 0x2a7 + {value: 0x0812, lo: 0x80, hi: 0x87}, + {value: 0x0813, lo: 0x88, hi: 0x8f}, + {value: 0x0812, lo: 0x90, hi: 0x95}, + {value: 0x0813, lo: 0x98, hi: 0x9d}, + {value: 0x0812, lo: 0xa0, hi: 0xa7}, + {value: 0x0813, lo: 0xa8, hi: 0xaf}, + {value: 0x0812, lo: 0xb0, hi: 0xb7}, + {value: 0x0813, lo: 0xb8, hi: 0xbf}, + // Block 0x61, offset 0x2af + {value: 0x0004, lo: 0x8b, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8f}, + {value: 0x0054, lo: 0x98, hi: 0x99}, + {value: 0x0054, lo: 0xa4, hi: 0xa4}, + {value: 0x0054, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xaa, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xaf}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x62, offset 0x2b7 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x94, hi: 0x94}, + {value: 0x0014, lo: 0xa0, hi: 0xa4}, + {value: 0x0014, lo: 0xa6, hi: 0xaf}, + {value: 0x0015, lo: 0xb1, hi: 0xb1}, + {value: 0x0015, lo: 0xbf, hi: 0xbf}, + // Block 0x63, offset 0x2bd + {value: 0x0015, lo: 0x90, hi: 0x9c}, + // Block 0x64, offset 0x2be + {value: 0x0024, lo: 0x90, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x93}, + {value: 0x0024, lo: 0x94, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0xa0}, + {value: 0x0024, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa4}, + {value: 0x0034, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa7}, + {value: 0x0034, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xa9}, + {value: 0x0034, lo: 0xaa, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + // Block 0x65, offset 0x2cc + {value: 0x0016, lo: 0x85, hi: 0x86}, + {value: 0x0012, lo: 0x87, hi: 0x89}, + {value: 0xa452, lo: 0x8e, hi: 0x8e}, + {value: 0x1013, lo: 0xa0, hi: 0xaf}, + {value: 0x1012, lo: 0xb0, hi: 0xbf}, + // Block 0x66, offset 0x2d1 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x88}, + // Block 0x67, offset 0x2d4 + {value: 0xa753, lo: 0xb6, hi: 0xb7}, + {value: 0xaa53, lo: 0xb8, hi: 0xb9}, + {value: 0xad53, lo: 0xba, hi: 0xbb}, + {value: 0xaa53, lo: 0xbc, hi: 0xbd}, + {value: 0xa753, lo: 0xbe, hi: 0xbf}, + // Block 0x68, offset 0x2d9 + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6553, lo: 0x90, hi: 0x9f}, + {value: 0xb053, lo: 0xa0, hi: 0xaf}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0x69, offset 0x2dd + {value: 0x0117, lo: 0x80, hi: 0xa3}, + {value: 0x0012, lo: 0xa4, hi: 0xa4}, + {value: 0x0716, lo: 0xab, hi: 0xac}, + {value: 0x0316, lo: 0xad, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb3}, + // Block 0x6a, offset 0x2e3 + {value: 0x6c52, lo: 0x80, hi: 0x9f}, + {value: 0x7052, lo: 0xa0, hi: 0xa5}, + {value: 0x7052, lo: 0xa7, hi: 0xa7}, + {value: 0x7052, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x6b, offset 0x2e8 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x6c, offset 0x2eb + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0010, lo: 0xb0, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x6d, offset 0x2f0 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9e}, + {value: 0x0024, lo: 0xa0, hi: 0xbf}, + // Block 0x6e, offset 0x2f5 + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + // Block 0x6f, offset 0x2f6 + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0xaa, hi: 0xad}, + {value: 0x0030, lo: 0xae, hi: 0xaf}, + {value: 0x0004, lo: 0xb1, hi: 0xb5}, + {value: 0x0014, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + // Block 0x70, offset 0x2fc + {value: 0x0034, lo: 0x99, hi: 0x9a}, + {value: 0x0004, lo: 0x9b, hi: 0x9e}, + // Block 0x71, offset 0x2fe + {value: 0x0004, lo: 0xbc, hi: 0xbe}, + // Block 0x72, offset 0x2ff + {value: 0x0010, lo: 0x85, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x73, offset 0x301 + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x74, offset 0x303 + {value: 0x0010, lo: 0x80, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0xbf}, + // Block 0x75, offset 0x306 + {value: 0x0010, lo: 0x80, hi: 0x8c}, + // Block 0x76, offset 0x307 + {value: 0x0010, lo: 0x90, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x77, offset 0x309 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0xab}, + // Block 0x78, offset 0x30c + {value: 0x0117, lo: 0x80, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb2}, + {value: 0x0024, lo: 0xb4, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x79, offset 0x312 + {value: 0x0117, lo: 0x80, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9d}, + {value: 0x0024, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x7a, offset 0x316 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb1}, + // Block 0x7b, offset 0x318 + {value: 0x0004, lo: 0x80, hi: 0x87}, + {value: 0x0014, lo: 0x88, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xaf}, + {value: 0x0012, lo: 0xb0, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xbf}, + // Block 0x7c, offset 0x31d + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x0015, lo: 0xb0, hi: 0xb0}, + {value: 0x0012, lo: 0xb1, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x8753, lo: 0xbd, hi: 0xbd}, + {value: 0x0117, lo: 0xbe, hi: 0xbf}, + // Block 0x7d, offset 0x324 + {value: 0x0117, lo: 0x80, hi: 0x83}, + {value: 0x6553, lo: 0x84, hi: 0x84}, + {value: 0x908b, lo: 0x85, hi: 0x85}, + {value: 0x8f53, lo: 0x86, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x0316, lo: 0x89, hi: 0x8a}, + {value: 0x0117, lo: 0x90, hi: 0x91}, + {value: 0x0012, lo: 0x93, hi: 0x93}, + {value: 0x0012, lo: 0x95, hi: 0x95}, + {value: 0x0117, lo: 0x96, hi: 0x99}, + {value: 0x0015, lo: 0xb2, hi: 0xb4}, + {value: 0x0316, lo: 0xb5, hi: 0xb6}, + {value: 0x0010, lo: 0xb7, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbf}, + // Block 0x7e, offset 0x334 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8b}, + {value: 0x0010, lo: 0x8c, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0034, lo: 0xac, hi: 0xac}, + // Block 0x7f, offset 0x33e + {value: 0x0010, lo: 0x80, hi: 0xb3}, + // Block 0x80, offset 0x33f + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xa0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb7}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x81, offset 0x348 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x82, offset 0x34c + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0x92}, + {value: 0x0030, lo: 0x93, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0x83, offset 0x351 + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb9}, + {value: 0x0010, lo: 0xba, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x84, offset 0x359 + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0004, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x85, offset 0x35f + {value: 0x0010, lo: 0x80, hi: 0xa8}, + {value: 0x0014, lo: 0xa9, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0x86, offset 0x365 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x87, offset 0x36f + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0024, lo: 0xbe, hi: 0xbf}, + // Block 0x88, offset 0x374 + {value: 0x0024, lo: 0x81, hi: 0x81}, + {value: 0x0004, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + // Block 0x89, offset 0x37d + {value: 0x0010, lo: 0x81, hi: 0x86}, + {value: 0x0010, lo: 0x89, hi: 0x8e}, + {value: 0x0010, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x8a, offset 0x383 + {value: 0x0012, lo: 0x80, hi: 0x92}, + {value: 0xb352, lo: 0x93, hi: 0x93}, + {value: 0x0012, lo: 0x94, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9f}, + {value: 0x0012, lo: 0xa0, hi: 0xa8}, + {value: 0x0015, lo: 0xa9, hi: 0xa9}, + {value: 0x0004, lo: 0xaa, hi: 0xab}, + {value: 0x74d2, lo: 0xb0, hi: 0xbf}, + // Block 0x8b, offset 0x38c + {value: 0x78d2, lo: 0x80, hi: 0x8f}, + {value: 0x7cd2, lo: 0x90, hi: 0x9f}, + {value: 0x80d2, lo: 0xa0, hi: 0xaf}, + {value: 0x7cd2, lo: 0xb0, hi: 0xbf}, + // Block 0x8c, offset 0x390 + {value: 0x0010, lo: 0x80, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x8d, offset 0x398 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x8e, offset 0x39a + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x8b, hi: 0xbb}, + // Block 0x8f, offset 0x39c + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0xbf}, + // Block 0x90, offset 0x39f + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0004, lo: 0xb2, hi: 0xbf}, + // Block 0x91, offset 0x3a1 + {value: 0x0004, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x93, hi: 0xbf}, + // Block 0x92, offset 0x3a3 + {value: 0x0010, lo: 0x80, hi: 0xbd}, + // Block 0x93, offset 0x3a4 + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0x94, offset 0x3a5 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0xbf}, + // Block 0x95, offset 0x3a7 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0xb0, hi: 0xbb}, + // Block 0x96, offset 0x3a9 + {value: 0x0014, lo: 0x80, hi: 0x8f}, + {value: 0x0054, lo: 0x93, hi: 0x93}, + {value: 0x0024, lo: 0xa0, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xad}, + {value: 0x0024, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + // Block 0x97, offset 0x3af + {value: 0x0010, lo: 0x8d, hi: 0x8f}, + {value: 0x0054, lo: 0x92, hi: 0x92}, + {value: 0x0054, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0xb0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0x98, offset 0x3b4 + {value: 0x0010, lo: 0x80, hi: 0xbc}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x99, offset 0x3b6 + {value: 0x0054, lo: 0x87, hi: 0x87}, + {value: 0x0054, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0054, lo: 0x9a, hi: 0x9a}, + {value: 0x5f53, lo: 0xa1, hi: 0xba}, + {value: 0x0004, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9a, offset 0x3bd + {value: 0x0004, lo: 0x80, hi: 0x80}, + {value: 0x5f52, lo: 0x81, hi: 0x9a}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + // Block 0x9b, offset 0x3c0 + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbe}, + // Block 0x9c, offset 0x3c2 + {value: 0x0010, lo: 0x82, hi: 0x87}, + {value: 0x0010, lo: 0x8a, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0x97}, + {value: 0x0010, lo: 0x9a, hi: 0x9c}, + {value: 0x0004, lo: 0xa3, hi: 0xa3}, + {value: 0x0014, lo: 0xb9, hi: 0xbb}, + // Block 0x9d, offset 0x3c8 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0010, lo: 0x8d, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xba}, + {value: 0x0010, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9e, offset 0x3cd + {value: 0x0010, lo: 0x80, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x9d}, + // Block 0x9f, offset 0x3cf + {value: 0x0010, lo: 0x80, hi: 0xba}, + // Block 0xa0, offset 0x3d0 + {value: 0x0010, lo: 0x80, hi: 0xb4}, + // Block 0xa1, offset 0x3d1 + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0xa2, offset 0x3d2 + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa3, offset 0x3d4 + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + // Block 0xa4, offset 0x3d6 + {value: 0x0010, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xad, hi: 0xbf}, + // Block 0xa5, offset 0x3d8 + {value: 0x0010, lo: 0x80, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0xb5}, + {value: 0x0024, lo: 0xb6, hi: 0xba}, + // Block 0xa6, offset 0x3db + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa7, offset 0x3dd + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x91, hi: 0x95}, + // Block 0xa8, offset 0x3e0 + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x97}, + {value: 0xb653, lo: 0x98, hi: 0x9f}, + {value: 0xb953, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbf}, + // Block 0xa9, offset 0x3e8 + {value: 0xb652, lo: 0x80, hi: 0x87}, + {value: 0xb952, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0xaa, offset 0x3eb + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0xb953, lo: 0xb0, hi: 0xb7}, + {value: 0xb653, lo: 0xb8, hi: 0xbf}, + // Block 0xab, offset 0x3ef + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x93}, + {value: 0xb952, lo: 0x98, hi: 0x9f}, + {value: 0xb652, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbb}, + // Block 0xac, offset 0x3f7 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xad, offset 0x3f9 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0xbc53, lo: 0xb0, hi: 0xb0}, + {value: 0xbf53, lo: 0xb1, hi: 0xb1}, + {value: 0xc253, lo: 0xb2, hi: 0xb2}, + {value: 0xbf53, lo: 0xb3, hi: 0xb3}, + {value: 0xc553, lo: 0xb4, hi: 0xb4}, + {value: 0xbf53, lo: 0xb5, hi: 0xb5}, + {value: 0xc253, lo: 0xb6, hi: 0xb6}, + {value: 0xbf53, lo: 0xb7, hi: 0xb7}, + {value: 0xbc53, lo: 0xb8, hi: 0xb8}, + {value: 0xc853, lo: 0xb9, hi: 0xb9}, + {value: 0xcb53, lo: 0xba, hi: 0xba}, + {value: 0xce53, lo: 0xbc, hi: 0xbc}, + {value: 0xc853, lo: 0xbd, hi: 0xbd}, + {value: 0xcb53, lo: 0xbe, hi: 0xbe}, + {value: 0xc853, lo: 0xbf, hi: 0xbf}, + // Block 0xae, offset 0x409 + {value: 0x0010, lo: 0x80, hi: 0xb6}, + // Block 0xaf, offset 0x40a + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xa7}, + // Block 0xb0, offset 0x40c + {value: 0x0015, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0015, lo: 0x83, hi: 0x85}, + {value: 0x0015, lo: 0x87, hi: 0xb0}, + {value: 0x0015, lo: 0xb2, hi: 0xba}, + // Block 0xb1, offset 0x411 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xb5}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xb2, offset 0x417 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb6}, + // Block 0xb3, offset 0x419 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + // Block 0xb4, offset 0x41a + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + // Block 0xb5, offset 0x41c + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb9}, + // Block 0xb6, offset 0x41e + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0xb7, offset 0x420 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x8e, hi: 0x8e}, + {value: 0x0024, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x99, hi: 0xb5}, + {value: 0x0024, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xb8, offset 0x42d + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0xb9, offset 0x42e + {value: 0x0010, lo: 0x80, hi: 0x9c}, + // Block 0xba, offset 0x42f + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + // Block 0xbb, offset 0x433 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + // Block 0xbc, offset 0x435 + {value: 0x0010, lo: 0x80, hi: 0x91}, + // Block 0xbd, offset 0x436 + {value: 0x0010, lo: 0x80, hi: 0x88}, + // Block 0xbe, offset 0x437 + {value: 0x5653, lo: 0x80, hi: 0xb2}, + // Block 0xbf, offset 0x438 + {value: 0x5652, lo: 0x80, hi: 0xb2}, + // Block 0xc0, offset 0x439 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xc1, offset 0x43c + {value: 0x0010, lo: 0x80, hi: 0xa9}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0010, lo: 0xb0, hi: 0xb1}, + // Block 0xc2, offset 0x43f + {value: 0x0034, lo: 0xbd, hi: 0xbf}, + // Block 0xc3, offset 0x440 + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xc4, offset 0x443 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x87}, + {value: 0x0024, lo: 0x88, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x8b}, + {value: 0x0024, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xc5, offset 0x44a + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0024, lo: 0x82, hi: 0x82}, + {value: 0x0034, lo: 0x83, hi: 0x83}, + {value: 0x0024, lo: 0x84, hi: 0x84}, + {value: 0x0034, lo: 0x85, hi: 0x85}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xc6, offset 0x450 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0010, lo: 0xa0, hi: 0xb6}, + // Block 0xc7, offset 0x452 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xc8, offset 0x456 + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xc9, offset 0x45e + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb6}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + // Block 0xca, offset 0x464 + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xcb, offset 0x468 + {value: 0x0024, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0xcc, offset 0x46f + {value: 0x0010, lo: 0x84, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + // Block 0xcd, offset 0x473 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xce, offset 0x477 + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x89, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + // Block 0xcf, offset 0x480 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb4}, + {value: 0x0030, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xb7}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xd0, offset 0x48a + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + // Block 0xd1, offset 0x48c + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xd2, offset 0x492 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa2}, + {value: 0x0014, lo: 0xa3, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xd3, offset 0x498 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xd4, offset 0x4a2 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0030, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9d, hi: 0xa3}, + {value: 0x0024, lo: 0xa6, hi: 0xac}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + // Block 0xd5, offset 0x4ac + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xd6, offset 0x4ae + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + // Block 0xd7, offset 0x4b7 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xd8, offset 0x4bd + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd9, offset 0x4c3 + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xda, offset 0x4c9 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x98, hi: 0x9b}, + {value: 0x0014, lo: 0x9c, hi: 0x9d}, + // Block 0xdb, offset 0x4cc + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xdc, offset 0x4d2 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xdd, offset 0x4d5 + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0014, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb5}, + {value: 0x0030, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + // Block 0xde, offset 0x4de + {value: 0x0010, lo: 0x80, hi: 0x89}, + // Block 0xdf, offset 0x4df + {value: 0x0014, lo: 0x9d, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xe0, offset 0x4e6 + {value: 0x0010, lo: 0x80, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + // Block 0xe1, offset 0x4ea + {value: 0x5f53, lo: 0xa0, hi: 0xbf}, + // Block 0xe2, offset 0x4eb + {value: 0x5f52, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xe3, offset 0x4ee + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x89, hi: 0x89}, + {value: 0x0010, lo: 0x8c, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0xb5}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0014, lo: 0xbb, hi: 0xbc}, + {value: 0x0030, lo: 0xbd, hi: 0xbd}, + {value: 0x0034, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xe4, offset 0x4f8 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0034, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xe5, offset 0x4fb + {value: 0x0010, lo: 0xa0, hi: 0xa7}, + {value: 0x0010, lo: 0xaa, hi: 0xbf}, + // Block 0xe6, offset 0x4fd + {value: 0x0010, lo: 0x80, hi: 0x93}, + {value: 0x0014, lo: 0x94, hi: 0x97}, + {value: 0x0014, lo: 0x9a, hi: 0x9b}, + {value: 0x0010, lo: 0x9c, hi: 0x9f}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + // Block 0xe7, offset 0x504 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x8a}, + {value: 0x0010, lo: 0x8b, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbb, hi: 0xbe}, + // Block 0xe8, offset 0x50c + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0014, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x98}, + {value: 0x0014, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0x9c, hi: 0xbf}, + // Block 0xe9, offset 0x512 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0014, lo: 0x8a, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x99}, + {value: 0x0010, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xea, offset 0x519 + {value: 0x0010, lo: 0x80, hi: 0xb8}, + // Block 0xeb, offset 0x51a + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb6}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xec, offset 0x520 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0xed, offset 0x523 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0014, lo: 0x92, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xa9}, + {value: 0x0014, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0xee, offset 0x52b + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb6}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xef, offset 0x532 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa5}, + {value: 0x0010, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xbf}, + // Block 0xf0, offset 0x53c + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0014, lo: 0x90, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0x96}, + {value: 0x0034, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0xf1, offset 0x544 + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + // Block 0xf2, offset 0x547 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xba}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0xf3, offset 0x54c + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0030, lo: 0x81, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xf4, offset 0x550 + {value: 0x0010, lo: 0xb0, hi: 0xb0}, + // Block 0xf5, offset 0x551 + {value: 0x0010, lo: 0x80, hi: 0x99}, + // Block 0xf6, offset 0x552 + {value: 0x0010, lo: 0x80, hi: 0xae}, + // Block 0xf7, offset 0x553 + {value: 0x0010, lo: 0x80, hi: 0x83}, + // Block 0xf8, offset 0x554 + {value: 0x0010, lo: 0x80, hi: 0xb0}, + // Block 0xf9, offset 0x555 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xbf}, + // Block 0xfa, offset 0x557 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x95}, + // Block 0xfb, offset 0x55a + {value: 0x0010, lo: 0x80, hi: 0x86}, + // Block 0xfc, offset 0x55b + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xfd, offset 0x55e + {value: 0x0010, lo: 0x80, hi: 0xbe}, + // Block 0xfe, offset 0x55f + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x90, hi: 0xad}, + {value: 0x0034, lo: 0xb0, hi: 0xb4}, + // Block 0xff, offset 0x562 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb6}, + // Block 0x100, offset 0x564 + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa3, hi: 0xb7}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x101, offset 0x568 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + // Block 0x102, offset 0x569 + {value: 0x2013, lo: 0x80, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xbf}, + // Block 0x103, offset 0x56b + {value: 0x0010, lo: 0x80, hi: 0x8a}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0x104, offset 0x56e + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0014, lo: 0x8f, hi: 0x9f}, + // Block 0x105, offset 0x570 + {value: 0x0014, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa3, hi: 0xa4}, + {value: 0x0030, lo: 0xb0, hi: 0xb1}, + // Block 0x106, offset 0x573 + {value: 0x0004, lo: 0xb0, hi: 0xb3}, + {value: 0x0004, lo: 0xb5, hi: 0xbb}, + {value: 0x0004, lo: 0xbd, hi: 0xbe}, + // Block 0x107, offset 0x576 + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbc}, + // Block 0x108, offset 0x578 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0034, lo: 0x9e, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa3}, + // Block 0x109, offset 0x57d + {value: 0x0014, lo: 0x80, hi: 0xad}, + {value: 0x0014, lo: 0xb0, hi: 0xbf}, + // Block 0x10a, offset 0x57f + {value: 0x0014, lo: 0x80, hi: 0x86}, + // Block 0x10b, offset 0x580 + {value: 0x0030, lo: 0xa5, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xa9}, + {value: 0x0030, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbf}, + // Block 0x10c, offset 0x585 + {value: 0x0034, lo: 0x80, hi: 0x82}, + {value: 0x0024, lo: 0x85, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8b}, + {value: 0x0024, lo: 0xaa, hi: 0xad}, + // Block 0x10d, offset 0x589 + {value: 0x0024, lo: 0x82, hi: 0x84}, + // Block 0x10e, offset 0x58a + {value: 0x0013, lo: 0x80, hi: 0x99}, + {value: 0x0012, lo: 0x9a, hi: 0xb3}, + {value: 0x0013, lo: 0xb4, hi: 0xbf}, + // Block 0x10f, offset 0x58d + {value: 0x0013, lo: 0x80, hi: 0x8d}, + {value: 0x0012, lo: 0x8e, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0xa7}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0x110, offset 0x591 + {value: 0x0013, lo: 0x80, hi: 0x81}, + {value: 0x0012, lo: 0x82, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0x9c}, + {value: 0x0013, lo: 0x9e, hi: 0x9f}, + {value: 0x0013, lo: 0xa2, hi: 0xa2}, + {value: 0x0013, lo: 0xa5, hi: 0xa6}, + {value: 0x0013, lo: 0xa9, hi: 0xac}, + {value: 0x0013, lo: 0xae, hi: 0xb5}, + {value: 0x0012, lo: 0xb6, hi: 0xb9}, + {value: 0x0012, lo: 0xbb, hi: 0xbb}, + {value: 0x0012, lo: 0xbd, hi: 0xbf}, + // Block 0x111, offset 0x59c + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0012, lo: 0x85, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0x112, offset 0x5a0 + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0013, lo: 0x84, hi: 0x85}, + {value: 0x0013, lo: 0x87, hi: 0x8a}, + {value: 0x0013, lo: 0x8d, hi: 0x94}, + {value: 0x0013, lo: 0x96, hi: 0x9c}, + {value: 0x0012, lo: 0x9e, hi: 0xb7}, + {value: 0x0013, lo: 0xb8, hi: 0xb9}, + {value: 0x0013, lo: 0xbb, hi: 0xbe}, + // Block 0x113, offset 0x5a8 + {value: 0x0013, lo: 0x80, hi: 0x84}, + {value: 0x0013, lo: 0x86, hi: 0x86}, + {value: 0x0013, lo: 0x8a, hi: 0x90}, + {value: 0x0012, lo: 0x92, hi: 0xab}, + {value: 0x0013, lo: 0xac, hi: 0xbf}, + // Block 0x114, offset 0x5ad + {value: 0x0013, lo: 0x80, hi: 0x85}, + {value: 0x0012, lo: 0x86, hi: 0x9f}, + {value: 0x0013, lo: 0xa0, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbf}, + // Block 0x115, offset 0x5b1 + {value: 0x0012, lo: 0x80, hi: 0x93}, + {value: 0x0013, lo: 0x94, hi: 0xad}, + {value: 0x0012, lo: 0xae, hi: 0xbf}, + // Block 0x116, offset 0x5b4 + {value: 0x0012, lo: 0x80, hi: 0x87}, + {value: 0x0013, lo: 0x88, hi: 0xa1}, + {value: 0x0012, lo: 0xa2, hi: 0xbb}, + {value: 0x0013, lo: 0xbc, hi: 0xbf}, + // Block 0x117, offset 0x5b8 + {value: 0x0013, lo: 0x80, hi: 0x95}, + {value: 0x0012, lo: 0x96, hi: 0xaf}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x118, offset 0x5bb + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0012, lo: 0x8a, hi: 0xa5}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0x119, offset 0x5be + {value: 0x0013, lo: 0x80, hi: 0x80}, + {value: 0x0012, lo: 0x82, hi: 0x9a}, + {value: 0x0012, lo: 0x9c, hi: 0xa1}, + {value: 0x0013, lo: 0xa2, hi: 0xba}, + {value: 0x0012, lo: 0xbc, hi: 0xbf}, + // Block 0x11a, offset 0x5c3 + {value: 0x0012, lo: 0x80, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0xb4}, + {value: 0x0012, lo: 0xb6, hi: 0xbf}, + // Block 0x11b, offset 0x5c7 + {value: 0x0012, lo: 0x80, hi: 0x8e}, + {value: 0x0012, lo: 0x90, hi: 0x95}, + {value: 0x0013, lo: 0x96, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x11c, offset 0x5cb + {value: 0x0012, lo: 0x80, hi: 0x88}, + {value: 0x0012, lo: 0x8a, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0x11d, offset 0x5cf + {value: 0x0012, lo: 0x80, hi: 0x82}, + {value: 0x0012, lo: 0x84, hi: 0x89}, + {value: 0x0017, lo: 0x8a, hi: 0x8b}, + {value: 0x0010, lo: 0x8e, hi: 0xbf}, + // Block 0x11e, offset 0x5d3 + {value: 0x0014, lo: 0x80, hi: 0xb6}, + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x11f, offset 0x5d5 + {value: 0x0014, lo: 0x80, hi: 0xac}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x120, offset 0x5d7 + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x9b, hi: 0x9f}, + {value: 0x0014, lo: 0xa1, hi: 0xaf}, + // Block 0x121, offset 0x5da + {value: 0x0012, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8a, hi: 0x8a}, + {value: 0x0012, lo: 0x8b, hi: 0x9e}, + {value: 0x0012, lo: 0xa5, hi: 0xaa}, + // Block 0x122, offset 0x5de + {value: 0x0024, lo: 0x80, hi: 0x86}, + {value: 0x0024, lo: 0x88, hi: 0x98}, + {value: 0x0024, lo: 0x9b, hi: 0xa1}, + {value: 0x0024, lo: 0xa3, hi: 0xa4}, + {value: 0x0024, lo: 0xa6, hi: 0xaa}, + {value: 0x0015, lo: 0xb0, hi: 0xbf}, + // Block 0x123, offset 0x5e4 + {value: 0x0015, lo: 0x80, hi: 0xad}, + // Block 0x124, offset 0x5e5 + {value: 0x0024, lo: 0x8f, hi: 0x8f}, + // Block 0x125, offset 0x5e6 + {value: 0x0010, lo: 0x80, hi: 0xac}, + {value: 0x0024, lo: 0xb0, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xbd}, + // Block 0x126, offset 0x5e9 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + // Block 0x127, offset 0x5eb + {value: 0x0010, lo: 0x90, hi: 0xad}, + {value: 0x0024, lo: 0xae, hi: 0xae}, + // Block 0x128, offset 0x5ed + {value: 0x0010, lo: 0x80, hi: 0xab}, + {value: 0x0024, lo: 0xac, hi: 0xaf}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x129, offset 0x5f0 + {value: 0x0010, lo: 0x90, hi: 0xaa}, + {value: 0x0014, lo: 0xab, hi: 0xab}, + {value: 0x0034, lo: 0xac, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x12a, offset 0x5f5 + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xab}, + {value: 0x0010, lo: 0xad, hi: 0xae}, + {value: 0x0010, lo: 0xb0, hi: 0xbe}, + // Block 0x12b, offset 0x5f9 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0034, lo: 0x90, hi: 0x96}, + // Block 0x12c, offset 0x5fb + {value: 0xd152, lo: 0x80, hi: 0x81}, + {value: 0xd452, lo: 0x82, hi: 0x83}, + {value: 0x0024, lo: 0x84, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8b}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x12d, offset 0x601 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x9f}, + {value: 0x0010, lo: 0xa1, hi: 0xa2}, + {value: 0x0010, lo: 0xa4, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb7}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + // Block 0x12e, offset 0x60a + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x9b}, + {value: 0x0010, lo: 0xa1, hi: 0xa3}, + {value: 0x0010, lo: 0xa5, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xbb}, + // Block 0x12f, offset 0x60f + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x130, offset 0x610 + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x131, offset 0x613 + {value: 0x0013, lo: 0x80, hi: 0x89}, + // Block 0x132, offset 0x614 + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x133, offset 0x615 + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x134, offset 0x616 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0014, lo: 0xa0, hi: 0xbf}, + // Block 0x135, offset 0x618 + {value: 0x0014, lo: 0x80, hi: 0xbf}, + // Block 0x136, offset 0x619 + {value: 0x0014, lo: 0x80, hi: 0xaf}, +} + +// Total table size 16093 bytes (15KiB); checksum: EE91C452 diff --git a/vendor/golang.org/x/text/cases/tables9.0.0.go b/vendor/golang.org/x/text/cases/tables9.0.0.go new file mode 100644 index 000000000000..3aeb7be6d0e2 --- /dev/null +++ b/vendor/golang.org/x/text/cases/tables9.0.0.go @@ -0,0 +1,2215 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +//go:build !go1.10 + +package cases + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "9.0.0" + +var xorData string = "" + // Size: 185 bytes + "\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" + + "\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" + + "\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" + + "\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" + + "\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" + + "\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" + + "\x0b!\x10\x00\x0b!0\x00\x0b(\x04\x00\x03\x04\x1e\x00\x03\x0a\x00\x02:" + + "\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<\x00\x01&\x00\x01*" + + "\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01\x1e\x00\x01\x22" + +var exceptions string = "" + // Size: 2068 bytes + "\x00\x12\x12μΜΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x09II\x13\x1bʼnʼNʼN\x11" + + "\x09sSS\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj" + + "\x12\x12njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x1bǰJ̌J̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10" + + "\x12DZDz\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x1bⱾⱾ\x10\x1bⱿⱿ\x10\x1bⱯⱯ\x10\x1bⱭⱭ\x10" + + "\x1bⱰⱰ\x10\x1bꞫꞫ\x10\x1bꞬꞬ\x10\x1bꞍꞍ\x10\x1bꞪꞪ\x10\x1bꞮꞮ\x10\x1bⱢⱢ\x10" + + "\x1bꞭꞭ\x10\x1bⱮⱮ\x10\x1bⱤⱤ\x10\x1bꞱꞱ\x10\x1bꞲꞲ\x10\x1bꞰꞰ2\x12ιΙΙ\x166ΐ" + + "Ϊ́Ϊ́\x166ΰΫ́Ϋ́\x12\x12σΣΣ\x12\x12βΒΒ\x12\x12θΘΘ\x12\x12φΦΦ\x12" + + "\x12πΠΠ\x12\x12κΚΚ\x12\x12ρΡΡ\x12\x12εΕΕ\x14$եւԵՒԵւ\x12\x12вВВ\x12\x12дД" + + "Д\x12\x12оОО\x12\x12сСС\x12\x12тТТ\x12\x12тТТ\x12\x12ъЪЪ\x12\x12ѣѢѢ\x13" + + "\x1bꙋꙊꙊ\x13\x1bẖH̱H̱\x13\x1bẗT̈T̈\x13\x1bẘW̊W̊\x13\x1bẙY̊Y̊\x13\x1ba" + + "ʾAʾAʾ\x13\x1bṡṠṠ\x12\x10ssß\x14$ὐΥ̓Υ̓\x166ὒΥ̓̀Υ̓̀\x166ὔΥ̓́Υ̓́\x166" + + "ὖΥ̓͂Υ̓͂\x15+ἀιἈΙᾈ\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ" + + "\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ" + + "\x15\x1dἄιᾄἌΙ\x15\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ" + + "\x15+ἢιἪΙᾚ\x15+ἣιἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨ" + + "Ι\x15\x1dἡιᾑἩΙ\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15" + + "\x1dἦιᾖἮΙ\x15\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ" + + "\x15+ὥιὭΙᾭ\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ" + + "\x15\x1dὣιᾣὫΙ\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰι" + + "ᾺΙᾺͅ\x14#αιΑΙᾼ\x14$άιΆΙΆͅ\x14$ᾶΑ͂Α͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12" + + "\x12ιΙΙ\x15-ὴιῊΙῊͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14$ῆΗ͂Η͂\x166ῆιΗ͂Ιῌ͂\x14\x1c" + + "ηιῃΗΙ\x166ῒΪ̀Ϊ̀\x166ΐΪ́Ϊ́\x14$ῖΙ͂Ι͂\x166ῗΪ͂Ϊ͂\x166ῢΫ̀Ϋ" + + "̀\x166ΰΫ́Ϋ́\x14$ῤΡ̓Ρ̓\x14$ῦΥ͂Υ͂\x166ῧΫ͂Ϋ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙ" + + "ῼ\x14$ώιΏΙΏͅ\x14$ῶΩ͂Ω͂\x166ῶιΩ͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk" + + "\x12\x10åå\x12\x10ɫɫ\x12\x10ɽɽ\x10\x12ȺȺ\x10\x12ȾȾ\x12\x10ɑɑ\x12\x10ɱɱ" + + "\x12\x10ɐɐ\x12\x10ɒɒ\x12\x10ȿȿ\x12\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ" + + "\x12\x10ɡɡ\x12\x10ɬɬ\x12\x10ɪɪ\x12\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x12ffFF" + + "Ff\x12\x12fiFIFi\x12\x12flFLFl\x13\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12" + + "stSTSt\x12\x12stSTSt\x14$մնՄՆՄն\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄ" + + "ԽՄխ" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// caseTrie. Total size: 11742 bytes (11.47 KiB). Checksum: 795fe57ee5135873. +type caseTrie struct{} + +func newCaseTrie(i int) *caseTrie { + return &caseTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *caseTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 18: + return uint16(caseValues[n<<6+uint32(b)]) + default: + n -= 18 + return uint16(sparse.lookup(n, b)) + } +} + +// caseValues: 20 blocks, 1280 entries, 2560 bytes +// The third block is the zero block. +var caseValues = [1280]uint16{ + // Block 0x0, offset 0x0 + 0x27: 0x0054, + 0x2e: 0x0054, + 0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010, + 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054, + // Block 0x1, offset 0x40 + 0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013, + 0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013, + 0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013, + 0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013, + 0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013, + 0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012, + 0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012, + 0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012, + 0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012, + 0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112, + 0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713, + 0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313, + 0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653, + 0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53, + 0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112, + 0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853, + 0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13, + 0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313, + 0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010, + 0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452, + // Block 0x4, offset 0x100 + 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x02db, 0x105: 0x0359, + 0x106: 0x03da, 0x107: 0x043b, 0x108: 0x04b9, 0x109: 0x053a, 0x10a: 0x059b, 0x10b: 0x0619, + 0x10c: 0x069a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313, + 0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13, + 0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452, + 0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112, + 0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112, + 0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112, + 0x130: 0x06fa, 0x131: 0x07ab, 0x132: 0x0829, 0x133: 0x08aa, 0x134: 0x0113, 0x135: 0x0112, + 0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112, + 0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112, + // Block 0x5, offset 0x140 + 0x140: 0x0a8a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53, + 0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112, + 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0b0a, 0x151: 0x0b8a, + 0x152: 0x0c0a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152, + 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0c8a, 0x15d: 0x0012, + 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0d0a, 0x162: 0x0012, 0x163: 0x2052, + 0x164: 0x0012, 0x165: 0x0d8a, 0x166: 0x0e0a, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652, + 0x16a: 0x0e8a, 0x16b: 0x0f0a, 0x16c: 0x0f8a, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52, + 0x170: 0x0012, 0x171: 0x100a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252, + 0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012, + 0x17c: 0x0012, 0x17d: 0x108a, 0x17e: 0x0012, 0x17f: 0x0012, + // Block 0x6, offset 0x180 + 0x180: 0x3552, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012, + 0x186: 0x0012, 0x187: 0x110a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52, + 0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012, + 0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012, + 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x118a, + 0x19e: 0x120a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012, + 0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012, + 0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012, + 0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015, + 0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014, + 0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x128d, + 0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024, + 0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024, + 0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024, + 0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034, + 0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024, + 0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024, + 0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024, + 0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004, + 0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52, + 0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353, + // Block 0x8, offset 0x200 + 0x204: 0x0004, 0x205: 0x0004, + 0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513, + 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x130a, 0x211: 0x2013, + 0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013, + 0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013, + 0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53, + 0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53, + 0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512, + 0x230: 0x144a, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012, + 0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012, + 0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012, + // Block 0x9, offset 0x240 + 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x158a, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52, + 0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52, + 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x160a, 0x251: 0x168a, + 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x170a, 0x256: 0x178a, 0x257: 0x1812, + 0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112, + 0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112, + 0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112, + 0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112, + 0x270: 0x180a, 0x271: 0x188a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x190a, + 0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112, + 0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053, + // Block 0xa, offset 0x280 + 0x280: 0x0812, 0x281: 0x0812, 0x282: 0x0812, 0x283: 0x0812, 0x284: 0x0812, 0x285: 0x0812, + 0x288: 0x0813, 0x289: 0x0813, 0x28a: 0x0813, 0x28b: 0x0813, + 0x28c: 0x0813, 0x28d: 0x0813, 0x290: 0x239a, 0x291: 0x0812, + 0x292: 0x247a, 0x293: 0x0812, 0x294: 0x25ba, 0x295: 0x0812, 0x296: 0x26fa, 0x297: 0x0812, + 0x299: 0x0813, 0x29b: 0x0813, 0x29d: 0x0813, + 0x29f: 0x0813, 0x2a0: 0x0812, 0x2a1: 0x0812, 0x2a2: 0x0812, 0x2a3: 0x0812, + 0x2a4: 0x0812, 0x2a5: 0x0812, 0x2a6: 0x0812, 0x2a7: 0x0812, 0x2a8: 0x0813, 0x2a9: 0x0813, + 0x2aa: 0x0813, 0x2ab: 0x0813, 0x2ac: 0x0813, 0x2ad: 0x0813, 0x2ae: 0x0813, 0x2af: 0x0813, + 0x2b0: 0x8b52, 0x2b1: 0x8b52, 0x2b2: 0x8e52, 0x2b3: 0x8e52, 0x2b4: 0x9152, 0x2b5: 0x9152, + 0x2b6: 0x9452, 0x2b7: 0x9452, 0x2b8: 0x9752, 0x2b9: 0x9752, 0x2ba: 0x9a52, 0x2bb: 0x9a52, + 0x2bc: 0x4d52, 0x2bd: 0x4d52, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x283a, 0x2c1: 0x292a, 0x2c2: 0x2a1a, 0x2c3: 0x2b0a, 0x2c4: 0x2bfa, 0x2c5: 0x2cea, + 0x2c6: 0x2dda, 0x2c7: 0x2eca, 0x2c8: 0x2fb9, 0x2c9: 0x30a9, 0x2ca: 0x3199, 0x2cb: 0x3289, + 0x2cc: 0x3379, 0x2cd: 0x3469, 0x2ce: 0x3559, 0x2cf: 0x3649, 0x2d0: 0x373a, 0x2d1: 0x382a, + 0x2d2: 0x391a, 0x2d3: 0x3a0a, 0x2d4: 0x3afa, 0x2d5: 0x3bea, 0x2d6: 0x3cda, 0x2d7: 0x3dca, + 0x2d8: 0x3eb9, 0x2d9: 0x3fa9, 0x2da: 0x4099, 0x2db: 0x4189, 0x2dc: 0x4279, 0x2dd: 0x4369, + 0x2de: 0x4459, 0x2df: 0x4549, 0x2e0: 0x463a, 0x2e1: 0x472a, 0x2e2: 0x481a, 0x2e3: 0x490a, + 0x2e4: 0x49fa, 0x2e5: 0x4aea, 0x2e6: 0x4bda, 0x2e7: 0x4cca, 0x2e8: 0x4db9, 0x2e9: 0x4ea9, + 0x2ea: 0x4f99, 0x2eb: 0x5089, 0x2ec: 0x5179, 0x2ed: 0x5269, 0x2ee: 0x5359, 0x2ef: 0x5449, + 0x2f0: 0x0812, 0x2f1: 0x0812, 0x2f2: 0x553a, 0x2f3: 0x564a, 0x2f4: 0x571a, + 0x2f6: 0x57fa, 0x2f7: 0x58da, 0x2f8: 0x0813, 0x2f9: 0x0813, 0x2fa: 0x8b53, 0x2fb: 0x8b53, + 0x2fc: 0x5a19, 0x2fd: 0x0004, 0x2fe: 0x5aea, 0x2ff: 0x0004, + // Block 0xc, offset 0x300 + 0x300: 0x0004, 0x301: 0x0004, 0x302: 0x5b6a, 0x303: 0x5c7a, 0x304: 0x5d4a, + 0x306: 0x5e2a, 0x307: 0x5f0a, 0x308: 0x8e53, 0x309: 0x8e53, 0x30a: 0x9153, 0x30b: 0x9153, + 0x30c: 0x6049, 0x30d: 0x0004, 0x30e: 0x0004, 0x30f: 0x0004, 0x310: 0x0812, 0x311: 0x0812, + 0x312: 0x611a, 0x313: 0x625a, 0x316: 0x639a, 0x317: 0x647a, + 0x318: 0x0813, 0x319: 0x0813, 0x31a: 0x9453, 0x31b: 0x9453, 0x31d: 0x0004, + 0x31e: 0x0004, 0x31f: 0x0004, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x65ba, 0x323: 0x66fa, + 0x324: 0x683a, 0x325: 0x0912, 0x326: 0x691a, 0x327: 0x69fa, 0x328: 0x0813, 0x329: 0x0813, + 0x32a: 0x9a53, 0x32b: 0x9a53, 0x32c: 0x0913, 0x32d: 0x0004, 0x32e: 0x0004, 0x32f: 0x0004, + 0x332: 0x6b3a, 0x333: 0x6c4a, 0x334: 0x6d1a, + 0x336: 0x6dfa, 0x337: 0x6eda, 0x338: 0x9753, 0x339: 0x9753, 0x33a: 0x4d53, 0x33b: 0x4d53, + 0x33c: 0x7019, 0x33d: 0x0004, 0x33e: 0x0004, + // Block 0xd, offset 0x340 + 0x342: 0x0013, + 0x347: 0x0013, 0x34a: 0x0012, 0x34b: 0x0013, + 0x34c: 0x0013, 0x34d: 0x0013, 0x34e: 0x0012, 0x34f: 0x0012, 0x350: 0x0013, 0x351: 0x0013, + 0x352: 0x0013, 0x353: 0x0012, 0x355: 0x0013, + 0x359: 0x0013, 0x35a: 0x0013, 0x35b: 0x0013, 0x35c: 0x0013, 0x35d: 0x0013, + 0x364: 0x0013, 0x366: 0x70eb, 0x368: 0x0013, + 0x36a: 0x714b, 0x36b: 0x718b, 0x36c: 0x0013, 0x36d: 0x0013, 0x36f: 0x0012, + 0x370: 0x0013, 0x371: 0x0013, 0x372: 0x9d53, 0x373: 0x0013, 0x374: 0x0012, 0x375: 0x0010, + 0x376: 0x0010, 0x377: 0x0010, 0x378: 0x0010, 0x379: 0x0012, + 0x37c: 0x0012, 0x37d: 0x0012, 0x37e: 0x0013, 0x37f: 0x0013, + // Block 0xe, offset 0x380 + 0x380: 0x1a13, 0x381: 0x1a13, 0x382: 0x1e13, 0x383: 0x1e13, 0x384: 0x1a13, 0x385: 0x1a13, + 0x386: 0x2613, 0x387: 0x2613, 0x388: 0x2a13, 0x389: 0x2a13, 0x38a: 0x2e13, 0x38b: 0x2e13, + 0x38c: 0x2a13, 0x38d: 0x2a13, 0x38e: 0x2613, 0x38f: 0x2613, 0x390: 0xa052, 0x391: 0xa052, + 0x392: 0xa352, 0x393: 0xa352, 0x394: 0xa652, 0x395: 0xa652, 0x396: 0xa352, 0x397: 0xa352, + 0x398: 0xa052, 0x399: 0xa052, 0x39a: 0x1a12, 0x39b: 0x1a12, 0x39c: 0x1e12, 0x39d: 0x1e12, + 0x39e: 0x1a12, 0x39f: 0x1a12, 0x3a0: 0x2612, 0x3a1: 0x2612, 0x3a2: 0x2a12, 0x3a3: 0x2a12, + 0x3a4: 0x2e12, 0x3a5: 0x2e12, 0x3a6: 0x2a12, 0x3a7: 0x2a12, 0x3a8: 0x2612, 0x3a9: 0x2612, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x6552, 0x3c1: 0x6552, 0x3c2: 0x6552, 0x3c3: 0x6552, 0x3c4: 0x6552, 0x3c5: 0x6552, + 0x3c6: 0x6552, 0x3c7: 0x6552, 0x3c8: 0x6552, 0x3c9: 0x6552, 0x3ca: 0x6552, 0x3cb: 0x6552, + 0x3cc: 0x6552, 0x3cd: 0x6552, 0x3ce: 0x6552, 0x3cf: 0x6552, 0x3d0: 0xa952, 0x3d1: 0xa952, + 0x3d2: 0xa952, 0x3d3: 0xa952, 0x3d4: 0xa952, 0x3d5: 0xa952, 0x3d6: 0xa952, 0x3d7: 0xa952, + 0x3d8: 0xa952, 0x3d9: 0xa952, 0x3da: 0xa952, 0x3db: 0xa952, 0x3dc: 0xa952, 0x3dd: 0xa952, + 0x3de: 0xa952, 0x3e0: 0x0113, 0x3e1: 0x0112, 0x3e2: 0x71eb, 0x3e3: 0x8853, + 0x3e4: 0x724b, 0x3e5: 0x72aa, 0x3e6: 0x730a, 0x3e7: 0x0f13, 0x3e8: 0x0f12, 0x3e9: 0x0313, + 0x3ea: 0x0312, 0x3eb: 0x0713, 0x3ec: 0x0712, 0x3ed: 0x736b, 0x3ee: 0x73cb, 0x3ef: 0x742b, + 0x3f0: 0x748b, 0x3f1: 0x0012, 0x3f2: 0x0113, 0x3f3: 0x0112, 0x3f4: 0x0012, 0x3f5: 0x0313, + 0x3f6: 0x0312, 0x3f7: 0x0012, 0x3f8: 0x0012, 0x3f9: 0x0012, 0x3fa: 0x0012, 0x3fb: 0x0012, + 0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0x74eb, 0x3ff: 0x754b, + // Block 0x10, offset 0x400 + 0x400: 0x0113, 0x401: 0x0112, 0x402: 0x0113, 0x403: 0x0112, 0x404: 0x0113, 0x405: 0x0112, + 0x406: 0x0113, 0x407: 0x0112, 0x408: 0x0014, 0x409: 0x0004, 0x40a: 0x0004, 0x40b: 0x0713, + 0x40c: 0x0712, 0x40d: 0x75ab, 0x40e: 0x0012, 0x40f: 0x0010, 0x410: 0x0113, 0x411: 0x0112, + 0x412: 0x0113, 0x413: 0x0112, 0x414: 0x0012, 0x415: 0x0012, 0x416: 0x0113, 0x417: 0x0112, + 0x418: 0x0113, 0x419: 0x0112, 0x41a: 0x0113, 0x41b: 0x0112, 0x41c: 0x0113, 0x41d: 0x0112, + 0x41e: 0x0113, 0x41f: 0x0112, 0x420: 0x0113, 0x421: 0x0112, 0x422: 0x0113, 0x423: 0x0112, + 0x424: 0x0113, 0x425: 0x0112, 0x426: 0x0113, 0x427: 0x0112, 0x428: 0x0113, 0x429: 0x0112, + 0x42a: 0x760b, 0x42b: 0x766b, 0x42c: 0x76cb, 0x42d: 0x772b, 0x42e: 0x778b, + 0x430: 0x77eb, 0x431: 0x784b, 0x432: 0x78ab, 0x433: 0xac53, 0x434: 0x0113, 0x435: 0x0112, + 0x436: 0x0113, 0x437: 0x0112, + // Block 0x11, offset 0x440 + 0x440: 0x790a, 0x441: 0x798a, 0x442: 0x7a0a, 0x443: 0x7a8a, 0x444: 0x7b3a, 0x445: 0x7bea, + 0x446: 0x7c6a, + 0x453: 0x7cea, 0x454: 0x7dca, 0x455: 0x7eaa, 0x456: 0x7f8a, 0x457: 0x806a, + 0x45d: 0x0010, + 0x45e: 0x0034, 0x45f: 0x0010, 0x460: 0x0010, 0x461: 0x0010, 0x462: 0x0010, 0x463: 0x0010, + 0x464: 0x0010, 0x465: 0x0010, 0x466: 0x0010, 0x467: 0x0010, 0x468: 0x0010, + 0x46a: 0x0010, 0x46b: 0x0010, 0x46c: 0x0010, 0x46d: 0x0010, 0x46e: 0x0010, 0x46f: 0x0010, + 0x470: 0x0010, 0x471: 0x0010, 0x472: 0x0010, 0x473: 0x0010, 0x474: 0x0010, 0x475: 0x0010, + 0x476: 0x0010, 0x478: 0x0010, 0x479: 0x0010, 0x47a: 0x0010, 0x47b: 0x0010, + 0x47c: 0x0010, 0x47e: 0x0010, + // Block 0x12, offset 0x480 + 0x480: 0x2213, 0x481: 0x2213, 0x482: 0x2613, 0x483: 0x2613, 0x484: 0x2213, 0x485: 0x2213, + 0x486: 0x2e13, 0x487: 0x2e13, 0x488: 0x2213, 0x489: 0x2213, 0x48a: 0x2613, 0x48b: 0x2613, + 0x48c: 0x2213, 0x48d: 0x2213, 0x48e: 0x3e13, 0x48f: 0x3e13, 0x490: 0x2213, 0x491: 0x2213, + 0x492: 0x2613, 0x493: 0x2613, 0x494: 0x2213, 0x495: 0x2213, 0x496: 0x2e13, 0x497: 0x2e13, + 0x498: 0x2213, 0x499: 0x2213, 0x49a: 0x2613, 0x49b: 0x2613, 0x49c: 0x2213, 0x49d: 0x2213, + 0x49e: 0xb553, 0x49f: 0xb553, 0x4a0: 0xb853, 0x4a1: 0xb853, 0x4a2: 0x2212, 0x4a3: 0x2212, + 0x4a4: 0x2612, 0x4a5: 0x2612, 0x4a6: 0x2212, 0x4a7: 0x2212, 0x4a8: 0x2e12, 0x4a9: 0x2e12, + 0x4aa: 0x2212, 0x4ab: 0x2212, 0x4ac: 0x2612, 0x4ad: 0x2612, 0x4ae: 0x2212, 0x4af: 0x2212, + 0x4b0: 0x3e12, 0x4b1: 0x3e12, 0x4b2: 0x2212, 0x4b3: 0x2212, 0x4b4: 0x2612, 0x4b5: 0x2612, + 0x4b6: 0x2212, 0x4b7: 0x2212, 0x4b8: 0x2e12, 0x4b9: 0x2e12, 0x4ba: 0x2212, 0x4bb: 0x2212, + 0x4bc: 0x2612, 0x4bd: 0x2612, 0x4be: 0x2212, 0x4bf: 0x2212, + // Block 0x13, offset 0x4c0 + 0x4c2: 0x0010, + 0x4c7: 0x0010, 0x4c9: 0x0010, 0x4cb: 0x0010, + 0x4cd: 0x0010, 0x4ce: 0x0010, 0x4cf: 0x0010, 0x4d1: 0x0010, + 0x4d2: 0x0010, 0x4d4: 0x0010, 0x4d7: 0x0010, + 0x4d9: 0x0010, 0x4db: 0x0010, 0x4dd: 0x0010, + 0x4df: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, + 0x4e4: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, 0x4e9: 0x0010, + 0x4ea: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010, + 0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010, + 0x4f6: 0x0010, 0x4f7: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010, + 0x4fc: 0x0010, 0x4fe: 0x0010, +} + +// caseIndex: 25 blocks, 1600 entries, 3200 bytes +// Block 0 is the zero block. +var caseIndex = [1600]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x12, 0xc3: 0x13, 0xc4: 0x14, 0xc5: 0x15, 0xc6: 0x01, 0xc7: 0x02, + 0xc8: 0x16, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x17, 0xcc: 0x18, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07, + 0xd0: 0x19, 0xd1: 0x1a, 0xd2: 0x1b, 0xd3: 0x1c, 0xd4: 0x1d, 0xd5: 0x1e, 0xd6: 0x1f, 0xd7: 0x20, + 0xd8: 0x21, 0xd9: 0x22, 0xda: 0x23, 0xdb: 0x24, 0xdc: 0x25, 0xdd: 0x26, 0xde: 0x27, 0xdf: 0x28, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09, + 0xf0: 0x14, 0xf3: 0x16, + // Block 0x4, offset 0x100 + 0x120: 0x29, 0x121: 0x2a, 0x122: 0x2b, 0x123: 0x2c, 0x124: 0x2d, 0x125: 0x2e, 0x126: 0x2f, 0x127: 0x30, + 0x128: 0x31, 0x129: 0x32, 0x12a: 0x33, 0x12b: 0x34, 0x12c: 0x35, 0x12d: 0x36, 0x12e: 0x37, 0x12f: 0x38, + 0x130: 0x39, 0x131: 0x3a, 0x132: 0x3b, 0x133: 0x3c, 0x134: 0x3d, 0x135: 0x3e, 0x136: 0x3f, 0x137: 0x40, + 0x138: 0x41, 0x139: 0x42, 0x13a: 0x43, 0x13b: 0x44, 0x13c: 0x45, 0x13d: 0x46, 0x13e: 0x47, 0x13f: 0x48, + // Block 0x5, offset 0x140 + 0x140: 0x49, 0x141: 0x4a, 0x142: 0x4b, 0x143: 0x4c, 0x144: 0x23, 0x145: 0x23, 0x146: 0x23, 0x147: 0x23, + 0x148: 0x23, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53, + 0x150: 0x54, 0x151: 0x23, 0x152: 0x23, 0x153: 0x23, 0x154: 0x23, 0x155: 0x23, 0x156: 0x23, 0x157: 0x23, + 0x158: 0x23, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b, + 0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62, + 0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69, + 0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71, + 0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x08, 0x17e: 0x09, 0x17f: 0x0a, + // Block 0x6, offset 0x180 + 0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0b, 0x185: 0x79, 0x186: 0x7a, + 0x192: 0x7b, 0x193: 0x0c, + 0x1b0: 0x7c, 0x1b1: 0x0d, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81, + 0x1b8: 0x82, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x23, 0x1c6: 0x87, + // Block 0x8, offset 0x200 + 0x200: 0x88, 0x201: 0x23, 0x202: 0x23, 0x203: 0x23, 0x204: 0x23, 0x205: 0x23, 0x206: 0x23, 0x207: 0x23, + 0x208: 0x23, 0x209: 0x23, 0x20a: 0x23, 0x20b: 0x23, 0x20c: 0x23, 0x20d: 0x23, 0x20e: 0x23, 0x20f: 0x23, + 0x210: 0x23, 0x211: 0x23, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x23, 0x215: 0x23, 0x216: 0x23, 0x217: 0x23, + 0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x0e, 0x21f: 0x91, + 0x220: 0x92, 0x221: 0x93, 0x222: 0x23, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98, + 0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0, + 0x230: 0x23, 0x231: 0x23, 0x232: 0x23, 0x233: 0x23, 0x234: 0x23, 0x235: 0x23, 0x236: 0x23, 0x237: 0x23, + 0x238: 0x23, 0x239: 0x23, 0x23a: 0x23, 0x23b: 0x23, 0x23c: 0x23, 0x23d: 0x23, 0x23e: 0x23, 0x23f: 0x23, + // Block 0x9, offset 0x240 + 0x240: 0x23, 0x241: 0x23, 0x242: 0x23, 0x243: 0x23, 0x244: 0x23, 0x245: 0x23, 0x246: 0x23, 0x247: 0x23, + 0x248: 0x23, 0x249: 0x23, 0x24a: 0x23, 0x24b: 0x23, 0x24c: 0x23, 0x24d: 0x23, 0x24e: 0x23, 0x24f: 0x23, + 0x250: 0x23, 0x251: 0x23, 0x252: 0x23, 0x253: 0x23, 0x254: 0x23, 0x255: 0x23, 0x256: 0x23, 0x257: 0x23, + 0x258: 0x23, 0x259: 0x23, 0x25a: 0x23, 0x25b: 0x23, 0x25c: 0x23, 0x25d: 0x23, 0x25e: 0x23, 0x25f: 0x23, + 0x260: 0x23, 0x261: 0x23, 0x262: 0x23, 0x263: 0x23, 0x264: 0x23, 0x265: 0x23, 0x266: 0x23, 0x267: 0x23, + 0x268: 0x23, 0x269: 0x23, 0x26a: 0x23, 0x26b: 0x23, 0x26c: 0x23, 0x26d: 0x23, 0x26e: 0x23, 0x26f: 0x23, + 0x270: 0x23, 0x271: 0x23, 0x272: 0x23, 0x273: 0x23, 0x274: 0x23, 0x275: 0x23, 0x276: 0x23, 0x277: 0x23, + 0x278: 0x23, 0x279: 0x23, 0x27a: 0x23, 0x27b: 0x23, 0x27c: 0x23, 0x27d: 0x23, 0x27e: 0x23, 0x27f: 0x23, + // Block 0xa, offset 0x280 + 0x280: 0x23, 0x281: 0x23, 0x282: 0x23, 0x283: 0x23, 0x284: 0x23, 0x285: 0x23, 0x286: 0x23, 0x287: 0x23, + 0x288: 0x23, 0x289: 0x23, 0x28a: 0x23, 0x28b: 0x23, 0x28c: 0x23, 0x28d: 0x23, 0x28e: 0x23, 0x28f: 0x23, + 0x290: 0x23, 0x291: 0x23, 0x292: 0x23, 0x293: 0x23, 0x294: 0x23, 0x295: 0x23, 0x296: 0x23, 0x297: 0x23, + 0x298: 0x23, 0x299: 0x23, 0x29a: 0x23, 0x29b: 0x23, 0x29c: 0x23, 0x29d: 0x23, 0x29e: 0xa1, 0x29f: 0xa2, + // Block 0xb, offset 0x2c0 + 0x2ec: 0x0f, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5, + 0x2f0: 0x23, 0x2f1: 0x23, 0x2f2: 0x23, 0x2f3: 0x23, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9, + 0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x23, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0, + // Block 0xc, offset 0x300 + 0x300: 0xb1, 0x301: 0xb2, 0x302: 0x23, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5, + 0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb, + 0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1, + 0x318: 0x23, 0x319: 0x23, 0x31a: 0x23, 0x31b: 0x23, 0x31c: 0xc2, 0x31d: 0xc3, + 0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9, + 0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf, + 0x330: 0x23, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2, + // Block 0xd, offset 0x340 + 0x340: 0xd3, 0x341: 0xd4, 0x342: 0xd5, 0x343: 0xd6, 0x344: 0xd7, 0x345: 0xd8, 0x346: 0xd9, 0x347: 0xda, + 0x348: 0xdb, 0x34a: 0xdc, 0x34b: 0xdd, 0x34c: 0xde, 0x34d: 0xdf, + 0x350: 0xe0, 0x351: 0xe1, 0x352: 0xe2, 0x353: 0xe3, 0x356: 0xe4, 0x357: 0xe5, + 0x358: 0xe6, 0x359: 0xe7, 0x35a: 0xe8, 0x35b: 0xe9, 0x35c: 0xea, + 0x362: 0xeb, 0x363: 0xec, + 0x36b: 0xed, + 0x370: 0xee, 0x371: 0xef, 0x372: 0xf0, + // Block 0xe, offset 0x380 + 0x380: 0x23, 0x381: 0x23, 0x382: 0x23, 0x383: 0x23, 0x384: 0x23, 0x385: 0x23, 0x386: 0x23, 0x387: 0x23, + 0x388: 0x23, 0x389: 0x23, 0x38a: 0x23, 0x38b: 0x23, 0x38c: 0x23, 0x38d: 0x23, 0x38e: 0xf1, + 0x390: 0x23, 0x391: 0xf2, 0x392: 0x23, 0x393: 0x23, 0x394: 0x23, 0x395: 0xf3, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x23, 0x3c1: 0x23, 0x3c2: 0x23, 0x3c3: 0x23, 0x3c4: 0x23, 0x3c5: 0x23, 0x3c6: 0x23, 0x3c7: 0x23, + 0x3c8: 0x23, 0x3c9: 0x23, 0x3ca: 0x23, 0x3cb: 0x23, 0x3cc: 0x23, 0x3cd: 0x23, 0x3ce: 0x23, 0x3cf: 0x23, + 0x3d0: 0xf2, + // Block 0x10, offset 0x400 + 0x410: 0x23, 0x411: 0x23, 0x412: 0x23, 0x413: 0x23, 0x414: 0x23, 0x415: 0x23, 0x416: 0x23, 0x417: 0x23, + 0x418: 0x23, 0x419: 0xf4, + // Block 0x11, offset 0x440 + 0x460: 0x23, 0x461: 0x23, 0x462: 0x23, 0x463: 0x23, 0x464: 0x23, 0x465: 0x23, 0x466: 0x23, 0x467: 0x23, + 0x468: 0xed, 0x469: 0xf5, 0x46b: 0xf6, 0x46c: 0xf7, 0x46d: 0xf8, 0x46e: 0xf9, + 0x47c: 0x23, 0x47d: 0xfa, 0x47e: 0xfb, 0x47f: 0xfc, + // Block 0x12, offset 0x480 + 0x4b0: 0x23, 0x4b1: 0xfd, 0x4b2: 0xfe, + // Block 0x13, offset 0x4c0 + 0x4c5: 0xff, 0x4c6: 0x100, + 0x4c9: 0x101, + 0x4d0: 0x102, 0x4d1: 0x103, 0x4d2: 0x104, 0x4d3: 0x105, 0x4d4: 0x106, 0x4d5: 0x107, 0x4d6: 0x108, 0x4d7: 0x109, + 0x4d8: 0x10a, 0x4d9: 0x10b, 0x4da: 0x10c, 0x4db: 0x10d, 0x4dc: 0x10e, 0x4dd: 0x10f, 0x4de: 0x110, 0x4df: 0x111, + 0x4e8: 0x112, 0x4e9: 0x113, 0x4ea: 0x114, + // Block 0x14, offset 0x500 + 0x500: 0x115, + 0x520: 0x23, 0x521: 0x23, 0x522: 0x23, 0x523: 0x116, 0x524: 0x10, 0x525: 0x117, + 0x538: 0x118, 0x539: 0x11, 0x53a: 0x119, + // Block 0x15, offset 0x540 + 0x544: 0x11a, 0x545: 0x11b, 0x546: 0x11c, + 0x54f: 0x11d, + // Block 0x16, offset 0x580 + 0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f, + 0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x11e, 0x5c1: 0x11f, 0x5c4: 0x11f, 0x5c5: 0x11f, 0x5c6: 0x11f, 0x5c7: 0x120, + // Block 0x18, offset 0x600 + 0x620: 0x15, +} + +// sparseOffsets: 272 entries, 544 bytes +var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x3a, 0x3d, 0x41, 0x44, 0x48, 0x52, 0x54, 0x59, 0x69, 0x70, 0x75, 0x83, 0x84, 0x92, 0xa1, 0xab, 0xae, 0xb4, 0xbc, 0xbe, 0xc0, 0xce, 0xd4, 0xe2, 0xed, 0xf8, 0x103, 0x10f, 0x119, 0x124, 0x12f, 0x13b, 0x147, 0x14f, 0x157, 0x161, 0x16c, 0x178, 0x17e, 0x189, 0x18e, 0x196, 0x199, 0x19e, 0x1a2, 0x1a6, 0x1ad, 0x1b6, 0x1be, 0x1bf, 0x1c8, 0x1cf, 0x1d7, 0x1dd, 0x1e3, 0x1e8, 0x1ec, 0x1ef, 0x1f1, 0x1f4, 0x1f9, 0x1fa, 0x1fc, 0x1fe, 0x200, 0x207, 0x20c, 0x210, 0x219, 0x21c, 0x21f, 0x225, 0x226, 0x231, 0x232, 0x233, 0x238, 0x245, 0x24d, 0x255, 0x25e, 0x267, 0x270, 0x275, 0x278, 0x281, 0x28e, 0x290, 0x297, 0x299, 0x2a4, 0x2a5, 0x2b0, 0x2b8, 0x2c0, 0x2c6, 0x2c7, 0x2d5, 0x2da, 0x2dd, 0x2e2, 0x2e6, 0x2ec, 0x2f1, 0x2f4, 0x2f9, 0x2fe, 0x2ff, 0x305, 0x307, 0x308, 0x30a, 0x30c, 0x30f, 0x310, 0x312, 0x315, 0x31b, 0x31f, 0x321, 0x327, 0x32e, 0x332, 0x33b, 0x33c, 0x344, 0x348, 0x34d, 0x355, 0x35b, 0x361, 0x36b, 0x370, 0x379, 0x37f, 0x386, 0x38a, 0x392, 0x394, 0x396, 0x399, 0x39b, 0x39d, 0x39e, 0x39f, 0x3a1, 0x3a3, 0x3a9, 0x3ae, 0x3b0, 0x3b6, 0x3b9, 0x3bb, 0x3c1, 0x3c6, 0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x3cd, 0x3cf, 0x3d1, 0x3d4, 0x3d6, 0x3d9, 0x3e1, 0x3e4, 0x3e8, 0x3f0, 0x3f2, 0x3f3, 0x3f4, 0x3f6, 0x3fc, 0x3fe, 0x3ff, 0x401, 0x403, 0x405, 0x412, 0x413, 0x414, 0x418, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x422, 0x426, 0x42c, 0x42e, 0x435, 0x438, 0x43c, 0x442, 0x44b, 0x451, 0x457, 0x461, 0x46b, 0x46d, 0x474, 0x47a, 0x480, 0x486, 0x489, 0x48f, 0x492, 0x49a, 0x49b, 0x4a2, 0x4a3, 0x4a6, 0x4a7, 0x4ad, 0x4b0, 0x4b8, 0x4b9, 0x4ba, 0x4bb, 0x4bc, 0x4be, 0x4c0, 0x4c2, 0x4c6, 0x4c7, 0x4c9, 0x4ca, 0x4cb, 0x4cd, 0x4d2, 0x4d7, 0x4db, 0x4dc, 0x4df, 0x4e3, 0x4ee, 0x4f2, 0x4fa, 0x4ff, 0x503, 0x506, 0x50a, 0x50d, 0x510, 0x515, 0x519, 0x51d, 0x521, 0x525, 0x527, 0x529, 0x52c, 0x531, 0x533, 0x538, 0x541, 0x546, 0x547, 0x54a, 0x54b, 0x54c, 0x54e, 0x54f, 0x550} + +// sparseValues: 1360 entries, 5440 bytes +var sparseValues = [1360]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0004, lo: 0xa8, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xaa}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0004, lo: 0xaf, hi: 0xaf}, + {value: 0x0004, lo: 0xb4, hi: 0xb4}, + {value: 0x001a, lo: 0xb5, hi: 0xb5}, + {value: 0x0054, lo: 0xb7, hi: 0xb7}, + {value: 0x0004, lo: 0xb8, hi: 0xb8}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + // Block 0x1, offset 0x9 + {value: 0x2013, lo: 0x80, hi: 0x96}, + {value: 0x2013, lo: 0x98, hi: 0x9e}, + {value: 0x009a, lo: 0x9f, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xb6}, + {value: 0x2012, lo: 0xb8, hi: 0xbe}, + {value: 0x0252, lo: 0xbf, hi: 0xbf}, + // Block 0x2, offset 0xf + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x011b, lo: 0xb0, hi: 0xb0}, + {value: 0x019a, lo: 0xb1, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb7}, + {value: 0x0012, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x0553, lo: 0xbf, hi: 0xbf}, + // Block 0x3, offset 0x18 + {value: 0x0552, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x01da, lo: 0x89, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xb7}, + {value: 0x0253, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x028a, lo: 0xbf, hi: 0xbf}, + // Block 0x4, offset 0x24 + {value: 0x0117, lo: 0x80, hi: 0x9f}, + {value: 0x2f53, lo: 0xa0, hi: 0xa0}, + {value: 0x0012, lo: 0xa1, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xb3}, + {value: 0x0012, lo: 0xb4, hi: 0xb9}, + {value: 0x090b, lo: 0xba, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x2953, lo: 0xbd, hi: 0xbd}, + {value: 0x098b, lo: 0xbe, hi: 0xbe}, + {value: 0x0a0a, lo: 0xbf, hi: 0xbf}, + // Block 0x5, offset 0x2e + {value: 0x0015, lo: 0x80, hi: 0x81}, + {value: 0x0004, lo: 0x82, hi: 0x85}, + {value: 0x0014, lo: 0x86, hi: 0x91}, + {value: 0x0004, lo: 0x92, hi: 0x96}, + {value: 0x0054, lo: 0x97, hi: 0x97}, + {value: 0x0004, lo: 0x98, hi: 0x9f}, + {value: 0x0015, lo: 0xa0, hi: 0xa4}, + {value: 0x0004, lo: 0xa5, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xac}, + {value: 0x0004, lo: 0xad, hi: 0xad}, + {value: 0x0014, lo: 0xae, hi: 0xae}, + {value: 0x0004, lo: 0xaf, hi: 0xbf}, + // Block 0x6, offset 0x3a + {value: 0x0024, lo: 0x80, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbf}, + // Block 0x7, offset 0x3d + {value: 0x6553, lo: 0x80, hi: 0x8f}, + {value: 0x2013, lo: 0x90, hi: 0x9f}, + {value: 0x5f53, lo: 0xa0, hi: 0xaf}, + {value: 0x2012, lo: 0xb0, hi: 0xbf}, + // Block 0x8, offset 0x41 + {value: 0x5f52, lo: 0x80, hi: 0x8f}, + {value: 0x6552, lo: 0x90, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x9, offset 0x44 + {value: 0x0117, lo: 0x80, hi: 0x81}, + {value: 0x0024, lo: 0x83, hi: 0x87}, + {value: 0x0014, lo: 0x88, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xbf}, + // Block 0xa, offset 0x48 + {value: 0x0f13, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x0316, lo: 0x89, hi: 0x8a}, + {value: 0x0716, lo: 0x8b, hi: 0x8c}, + {value: 0x0316, lo: 0x8d, hi: 0x8e}, + {value: 0x0f12, lo: 0x8f, hi: 0x8f}, + {value: 0x0117, lo: 0x90, hi: 0xbf}, + // Block 0xb, offset 0x52 + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x6553, lo: 0xb1, hi: 0xbf}, + // Block 0xc, offset 0x54 + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6853, lo: 0x90, hi: 0x96}, + {value: 0x0014, lo: 0x99, hi: 0x99}, + {value: 0x6552, lo: 0xa1, hi: 0xaf}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0xd, offset 0x59 + {value: 0x6852, lo: 0x80, hi: 0x86}, + {value: 0x198a, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x91, hi: 0x91}, + {value: 0x0024, lo: 0x92, hi: 0x95}, + {value: 0x0034, lo: 0x96, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x99}, + {value: 0x0034, lo: 0x9a, hi: 0x9b}, + {value: 0x0024, lo: 0x9c, hi: 0xa1}, + {value: 0x0034, lo: 0xa2, hi: 0xa7}, + {value: 0x0024, lo: 0xa8, hi: 0xa9}, + {value: 0x0034, lo: 0xaa, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xbd}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xe, offset 0x69 + {value: 0x0034, lo: 0x81, hi: 0x82}, + {value: 0x0024, lo: 0x84, hi: 0x84}, + {value: 0x0034, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xb3}, + {value: 0x0054, lo: 0xb4, hi: 0xb4}, + // Block 0xf, offset 0x70 + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0024, lo: 0x90, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0014, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x10, offset 0x75 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9c}, + {value: 0x0024, lo: 0x9d, hi: 0x9e}, + {value: 0x0034, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x11, offset 0x83 + {value: 0x0010, lo: 0x80, hi: 0xbf}, + // Block 0x12, offset 0x84 + {value: 0x0010, lo: 0x80, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0024, lo: 0x9f, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xaa, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x13, offset 0x92 + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0034, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0034, lo: 0xb1, hi: 0xb1}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbd}, + {value: 0x0034, lo: 0xbe, hi: 0xbe}, + {value: 0x0024, lo: 0xbf, hi: 0xbf}, + // Block 0x14, offset 0xa1 + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0024, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x88}, + {value: 0x0024, lo: 0x89, hi: 0x8a}, + {value: 0x0010, lo: 0x8d, hi: 0xbf}, + // Block 0x15, offset 0xab + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x16, offset 0xae + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xb1}, + {value: 0x0034, lo: 0xb2, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + // Block 0x17, offset 0xb4 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x99}, + {value: 0x0014, lo: 0x9a, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0xa3}, + {value: 0x0014, lo: 0xa4, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xad}, + // Block 0x18, offset 0xbc + {value: 0x0010, lo: 0x80, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x9b}, + // Block 0x19, offset 0xbe + {value: 0x0010, lo: 0xa0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbd}, + // Block 0x1a, offset 0xc0 + {value: 0x0024, lo: 0x94, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0024, lo: 0xaa, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbf}, + // Block 0x1b, offset 0xce + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1c, offset 0xd4 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0x1d, offset 0xe2 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb6, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1e, offset 0xed + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xb1}, + // Block 0x1f, offset 0xf8 + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x20, offset 0x103 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x99, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x21, offset 0x10f + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x22, offset 0x119 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x85}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + // Block 0x23, offset 0x124 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x24, offset 0x12f + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x25, offset 0x13b + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0010, lo: 0xa8, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x26, offset 0x147 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x27, offset 0x14f + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb9}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbf}, + // Block 0x28, offset 0x157 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x88}, + {value: 0x0014, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x29, offset 0x161 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x2a, offset 0x16c + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb2}, + // Block 0x2b, offset 0x178 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xba}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x2c, offset 0x17e + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x94, hi: 0x97}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xba, hi: 0xbf}, + // Block 0x2d, offset 0x189 + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x96}, + {value: 0x0010, lo: 0x9a, hi: 0xb1}, + {value: 0x0010, lo: 0xb3, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x2e, offset 0x18e + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x94}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9f}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + // Block 0x2f, offset 0x196 + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xba}, + // Block 0x30, offset 0x199 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x31, offset 0x19e + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xb9}, + {value: 0x0014, lo: 0xbb, hi: 0xbc}, + // Block 0x32, offset 0x1a2 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x33, offset 0x1a6 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0034, lo: 0x98, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0034, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x34, offset 0x1ad + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xac}, + {value: 0x0034, lo: 0xb1, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xba, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x35, offset 0x1b6 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0024, lo: 0x82, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x86, hi: 0x87}, + {value: 0x0010, lo: 0x88, hi: 0x8c}, + {value: 0x0014, lo: 0x8d, hi: 0x97}, + {value: 0x0014, lo: 0x99, hi: 0xbc}, + // Block 0x36, offset 0x1be + {value: 0x0034, lo: 0x86, hi: 0x86}, + // Block 0x37, offset 0x1bf + {value: 0x0010, lo: 0xab, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbe}, + // Block 0x38, offset 0x1c8 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x96, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x99}, + {value: 0x0014, lo: 0x9e, hi: 0xa0}, + {value: 0x0010, lo: 0xa2, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xad}, + {value: 0x0014, lo: 0xb1, hi: 0xb4}, + // Block 0x39, offset 0x1cf + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x6c53, lo: 0xa0, hi: 0xbf}, + // Block 0x3a, offset 0x1d7 + {value: 0x7053, lo: 0x80, hi: 0x85}, + {value: 0x7053, lo: 0x87, hi: 0x87}, + {value: 0x7053, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xba}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x3b, offset 0x1dd + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x9a, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x3c, offset 0x1e3 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x3d, offset 0x1e8 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x82, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3e, offset 0x1ec + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3f, offset 0x1ef + {value: 0x0010, lo: 0x80, hi: 0x9a}, + {value: 0x0024, lo: 0x9d, hi: 0x9f}, + // Block 0x40, offset 0x1f1 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x7453, lo: 0xa0, hi: 0xaf}, + {value: 0x7853, lo: 0xb0, hi: 0xbf}, + // Block 0x41, offset 0x1f4 + {value: 0x7c53, lo: 0x80, hi: 0x8f}, + {value: 0x8053, lo: 0x90, hi: 0x9f}, + {value: 0x7c53, lo: 0xa0, hi: 0xaf}, + {value: 0x0813, lo: 0xb0, hi: 0xb5}, + {value: 0x0892, lo: 0xb8, hi: 0xbd}, + // Block 0x42, offset 0x1f9 + {value: 0x0010, lo: 0x81, hi: 0xbf}, + // Block 0x43, offset 0x1fa + {value: 0x0010, lo: 0x80, hi: 0xac}, + {value: 0x0010, lo: 0xaf, hi: 0xbf}, + // Block 0x44, offset 0x1fc + {value: 0x0010, lo: 0x81, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x45, offset 0x1fe + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb8}, + // Block 0x46, offset 0x200 + {value: 0x0010, lo: 0x80, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0034, lo: 0x94, hi: 0x94}, + {value: 0x0010, lo: 0xa0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + // Block 0x47, offset 0x207 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xac}, + {value: 0x0010, lo: 0xae, hi: 0xb0}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + // Block 0x48, offset 0x20c + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x49, offset 0x210 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x89, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0014, lo: 0x93, hi: 0x93}, + {value: 0x0004, lo: 0x97, hi: 0x97}, + {value: 0x0024, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0x4a, offset 0x219 + {value: 0x0014, lo: 0x8b, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x4b, offset 0x21c + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb7}, + // Block 0x4c, offset 0x21f + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x4d, offset 0x225 + {value: 0x0010, lo: 0x80, hi: 0xb5}, + // Block 0x4e, offset 0x226 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbb}, + // Block 0x4f, offset 0x231 + {value: 0x0010, lo: 0x86, hi: 0x8f}, + // Block 0x50, offset 0x232 + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x51, offset 0x233 + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + // Block 0x52, offset 0x238 + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x9e}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xac}, + {value: 0x0010, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xbc}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x53, offset 0x245 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xa7, hi: 0xa7}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + {value: 0x0034, lo: 0xb5, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbc}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0x54, offset 0x24d + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x55, offset 0x255 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0030, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8b}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xab, hi: 0xab}, + {value: 0x0034, lo: 0xac, hi: 0xac}, + {value: 0x0024, lo: 0xad, hi: 0xb3}, + // Block 0x56, offset 0x25e + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0030, lo: 0xaa, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbf}, + // Block 0x57, offset 0x267 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0030, lo: 0xb2, hi: 0xb3}, + // Block 0x58, offset 0x270 + {value: 0x0010, lo: 0x80, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0x59, offset 0x275 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8d, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x5a, offset 0x278 + {value: 0x1a6a, lo: 0x80, hi: 0x80}, + {value: 0x1aea, lo: 0x81, hi: 0x81}, + {value: 0x1b6a, lo: 0x82, hi: 0x82}, + {value: 0x1bea, lo: 0x83, hi: 0x83}, + {value: 0x1c6a, lo: 0x84, hi: 0x84}, + {value: 0x1cea, lo: 0x85, hi: 0x85}, + {value: 0x1d6a, lo: 0x86, hi: 0x86}, + {value: 0x1dea, lo: 0x87, hi: 0x87}, + {value: 0x1e6a, lo: 0x88, hi: 0x88}, + // Block 0x5b, offset 0x281 + {value: 0x0024, lo: 0x90, hi: 0x92}, + {value: 0x0034, lo: 0x94, hi: 0x99}, + {value: 0x0024, lo: 0x9a, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9f}, + {value: 0x0024, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0034, lo: 0xa2, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xb3}, + {value: 0x0024, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + {value: 0x0024, lo: 0xb8, hi: 0xb9}, + // Block 0x5c, offset 0x28e + {value: 0x0012, lo: 0x80, hi: 0xab}, + {value: 0x0015, lo: 0xac, hi: 0xbf}, + // Block 0x5d, offset 0x290 + {value: 0x0015, lo: 0x80, hi: 0xaa}, + {value: 0x0012, lo: 0xab, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb8}, + {value: 0x8452, lo: 0xb9, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbc}, + {value: 0x8852, lo: 0xbd, hi: 0xbd}, + {value: 0x0012, lo: 0xbe, hi: 0xbf}, + // Block 0x5e, offset 0x297 + {value: 0x0012, lo: 0x80, hi: 0x9a}, + {value: 0x0015, lo: 0x9b, hi: 0xbf}, + // Block 0x5f, offset 0x299 + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0024, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0xb5}, + {value: 0x0024, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbd}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x60, offset 0x2a4 + {value: 0x0117, lo: 0x80, hi: 0xbf}, + // Block 0x61, offset 0x2a5 + {value: 0x0117, lo: 0x80, hi: 0x95}, + {value: 0x1f1a, lo: 0x96, hi: 0x96}, + {value: 0x1fca, lo: 0x97, hi: 0x97}, + {value: 0x207a, lo: 0x98, hi: 0x98}, + {value: 0x212a, lo: 0x99, hi: 0x99}, + {value: 0x21da, lo: 0x9a, hi: 0x9a}, + {value: 0x228a, lo: 0x9b, hi: 0x9b}, + {value: 0x0012, lo: 0x9c, hi: 0x9d}, + {value: 0x233b, lo: 0x9e, hi: 0x9e}, + {value: 0x0012, lo: 0x9f, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x62, offset 0x2b0 + {value: 0x0812, lo: 0x80, hi: 0x87}, + {value: 0x0813, lo: 0x88, hi: 0x8f}, + {value: 0x0812, lo: 0x90, hi: 0x95}, + {value: 0x0813, lo: 0x98, hi: 0x9d}, + {value: 0x0812, lo: 0xa0, hi: 0xa7}, + {value: 0x0813, lo: 0xa8, hi: 0xaf}, + {value: 0x0812, lo: 0xb0, hi: 0xb7}, + {value: 0x0813, lo: 0xb8, hi: 0xbf}, + // Block 0x63, offset 0x2b8 + {value: 0x0004, lo: 0x8b, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8f}, + {value: 0x0054, lo: 0x98, hi: 0x99}, + {value: 0x0054, lo: 0xa4, hi: 0xa4}, + {value: 0x0054, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xaa, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xaf}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x64, offset 0x2c0 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x94, hi: 0x94}, + {value: 0x0014, lo: 0xa0, hi: 0xa4}, + {value: 0x0014, lo: 0xa6, hi: 0xaf}, + {value: 0x0015, lo: 0xb1, hi: 0xb1}, + {value: 0x0015, lo: 0xbf, hi: 0xbf}, + // Block 0x65, offset 0x2c6 + {value: 0x0015, lo: 0x90, hi: 0x9c}, + // Block 0x66, offset 0x2c7 + {value: 0x0024, lo: 0x90, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x93}, + {value: 0x0024, lo: 0x94, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0xa0}, + {value: 0x0024, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa4}, + {value: 0x0034, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa7}, + {value: 0x0034, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xa9}, + {value: 0x0034, lo: 0xaa, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + // Block 0x67, offset 0x2d5 + {value: 0x0016, lo: 0x85, hi: 0x86}, + {value: 0x0012, lo: 0x87, hi: 0x89}, + {value: 0x9d52, lo: 0x8e, hi: 0x8e}, + {value: 0x1013, lo: 0xa0, hi: 0xaf}, + {value: 0x1012, lo: 0xb0, hi: 0xbf}, + // Block 0x68, offset 0x2da + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x88}, + // Block 0x69, offset 0x2dd + {value: 0xa053, lo: 0xb6, hi: 0xb7}, + {value: 0xa353, lo: 0xb8, hi: 0xb9}, + {value: 0xa653, lo: 0xba, hi: 0xbb}, + {value: 0xa353, lo: 0xbc, hi: 0xbd}, + {value: 0xa053, lo: 0xbe, hi: 0xbf}, + // Block 0x6a, offset 0x2e2 + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6553, lo: 0x90, hi: 0x9f}, + {value: 0xa953, lo: 0xa0, hi: 0xae}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0x6b, offset 0x2e6 + {value: 0x0117, lo: 0x80, hi: 0xa3}, + {value: 0x0012, lo: 0xa4, hi: 0xa4}, + {value: 0x0716, lo: 0xab, hi: 0xac}, + {value: 0x0316, lo: 0xad, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb3}, + // Block 0x6c, offset 0x2ec + {value: 0x6c52, lo: 0x80, hi: 0x9f}, + {value: 0x7052, lo: 0xa0, hi: 0xa5}, + {value: 0x7052, lo: 0xa7, hi: 0xa7}, + {value: 0x7052, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x6d, offset 0x2f1 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x6e, offset 0x2f4 + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0010, lo: 0xb0, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x6f, offset 0x2f9 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9e}, + {value: 0x0024, lo: 0xa0, hi: 0xbf}, + // Block 0x70, offset 0x2fe + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + // Block 0x71, offset 0x2ff + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0xaa, hi: 0xad}, + {value: 0x0030, lo: 0xae, hi: 0xaf}, + {value: 0x0004, lo: 0xb1, hi: 0xb5}, + {value: 0x0014, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + // Block 0x72, offset 0x305 + {value: 0x0034, lo: 0x99, hi: 0x9a}, + {value: 0x0004, lo: 0x9b, hi: 0x9e}, + // Block 0x73, offset 0x307 + {value: 0x0004, lo: 0xbc, hi: 0xbe}, + // Block 0x74, offset 0x308 + {value: 0x0010, lo: 0x85, hi: 0xad}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x75, offset 0x30a + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0010, lo: 0xa0, hi: 0xba}, + // Block 0x76, offset 0x30c + {value: 0x0010, lo: 0x80, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0xbf}, + // Block 0x77, offset 0x30f + {value: 0x0010, lo: 0x80, hi: 0x8c}, + // Block 0x78, offset 0x310 + {value: 0x0010, lo: 0x90, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x79, offset 0x312 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0xab}, + // Block 0x7a, offset 0x315 + {value: 0x0117, lo: 0x80, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb2}, + {value: 0x0024, lo: 0xb4, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x7b, offset 0x31b + {value: 0x0117, lo: 0x80, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9d}, + {value: 0x0024, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x7c, offset 0x31f + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb1}, + // Block 0x7d, offset 0x321 + {value: 0x0004, lo: 0x80, hi: 0x96}, + {value: 0x0014, lo: 0x97, hi: 0x9f}, + {value: 0x0004, lo: 0xa0, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xaf}, + {value: 0x0012, lo: 0xb0, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xbf}, + // Block 0x7e, offset 0x327 + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x0015, lo: 0xb0, hi: 0xb0}, + {value: 0x0012, lo: 0xb1, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x8453, lo: 0xbd, hi: 0xbd}, + {value: 0x0117, lo: 0xbe, hi: 0xbf}, + // Block 0x7f, offset 0x32e + {value: 0x0010, lo: 0xb7, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbf}, + // Block 0x80, offset 0x332 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8b}, + {value: 0x0010, lo: 0x8c, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + // Block 0x81, offset 0x33b + {value: 0x0010, lo: 0x80, hi: 0xb3}, + // Block 0x82, offset 0x33c + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xa0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb7}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x83, offset 0x344 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x84, offset 0x348 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0x92}, + {value: 0x0030, lo: 0x93, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0x85, offset 0x34d + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb9}, + {value: 0x0010, lo: 0xba, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x86, offset 0x355 + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0004, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x87, offset 0x35b + {value: 0x0010, lo: 0x80, hi: 0xa8}, + {value: 0x0014, lo: 0xa9, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0x88, offset 0x361 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x89, offset 0x36b + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0024, lo: 0xbe, hi: 0xbf}, + // Block 0x8a, offset 0x370 + {value: 0x0024, lo: 0x81, hi: 0x81}, + {value: 0x0004, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + // Block 0x8b, offset 0x379 + {value: 0x0010, lo: 0x81, hi: 0x86}, + {value: 0x0010, lo: 0x89, hi: 0x8e}, + {value: 0x0010, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x8c, offset 0x37f + {value: 0x0012, lo: 0x80, hi: 0x92}, + {value: 0xac52, lo: 0x93, hi: 0x93}, + {value: 0x0012, lo: 0x94, hi: 0x9a}, + {value: 0x0004, lo: 0x9b, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9f}, + {value: 0x0012, lo: 0xa0, hi: 0xa5}, + {value: 0x74d2, lo: 0xb0, hi: 0xbf}, + // Block 0x8d, offset 0x386 + {value: 0x78d2, lo: 0x80, hi: 0x8f}, + {value: 0x7cd2, lo: 0x90, hi: 0x9f}, + {value: 0x80d2, lo: 0xa0, hi: 0xaf}, + {value: 0x7cd2, lo: 0xb0, hi: 0xbf}, + // Block 0x8e, offset 0x38a + {value: 0x0010, lo: 0x80, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x8f, offset 0x392 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x90, offset 0x394 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x8b, hi: 0xbb}, + // Block 0x91, offset 0x396 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0xbf}, + // Block 0x92, offset 0x399 + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0004, lo: 0xb2, hi: 0xbf}, + // Block 0x93, offset 0x39b + {value: 0x0004, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x93, hi: 0xbf}, + // Block 0x94, offset 0x39d + {value: 0x0010, lo: 0x80, hi: 0xbd}, + // Block 0x95, offset 0x39e + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0x96, offset 0x39f + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0xbf}, + // Block 0x97, offset 0x3a1 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0xb0, hi: 0xbb}, + // Block 0x98, offset 0x3a3 + {value: 0x0014, lo: 0x80, hi: 0x8f}, + {value: 0x0054, lo: 0x93, hi: 0x93}, + {value: 0x0024, lo: 0xa0, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xad}, + {value: 0x0024, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + // Block 0x99, offset 0x3a9 + {value: 0x0010, lo: 0x8d, hi: 0x8f}, + {value: 0x0054, lo: 0x92, hi: 0x92}, + {value: 0x0054, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0xb0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0x9a, offset 0x3ae + {value: 0x0010, lo: 0x80, hi: 0xbc}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x9b, offset 0x3b0 + {value: 0x0054, lo: 0x87, hi: 0x87}, + {value: 0x0054, lo: 0x8e, hi: 0x8e}, + {value: 0x0054, lo: 0x9a, hi: 0x9a}, + {value: 0x5f53, lo: 0xa1, hi: 0xba}, + {value: 0x0004, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9c, offset 0x3b6 + {value: 0x0004, lo: 0x80, hi: 0x80}, + {value: 0x5f52, lo: 0x81, hi: 0x9a}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + // Block 0x9d, offset 0x3b9 + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbe}, + // Block 0x9e, offset 0x3bb + {value: 0x0010, lo: 0x82, hi: 0x87}, + {value: 0x0010, lo: 0x8a, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0x97}, + {value: 0x0010, lo: 0x9a, hi: 0x9c}, + {value: 0x0004, lo: 0xa3, hi: 0xa3}, + {value: 0x0014, lo: 0xb9, hi: 0xbb}, + // Block 0x9f, offset 0x3c1 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0010, lo: 0x8d, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xba}, + {value: 0x0010, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xa0, offset 0x3c6 + {value: 0x0010, lo: 0x80, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x9d}, + // Block 0xa1, offset 0x3c8 + {value: 0x0010, lo: 0x80, hi: 0xba}, + // Block 0xa2, offset 0x3c9 + {value: 0x0010, lo: 0x80, hi: 0xb4}, + // Block 0xa3, offset 0x3ca + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0xa4, offset 0x3cb + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa5, offset 0x3cd + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + // Block 0xa6, offset 0x3cf + {value: 0x0010, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xa7, offset 0x3d1 + {value: 0x0010, lo: 0x80, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0xb5}, + {value: 0x0024, lo: 0xb6, hi: 0xba}, + // Block 0xa8, offset 0x3d4 + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa9, offset 0x3d6 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x91, hi: 0x95}, + // Block 0xaa, offset 0x3d9 + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x97}, + {value: 0xaf53, lo: 0x98, hi: 0x9f}, + {value: 0xb253, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbf}, + // Block 0xab, offset 0x3e1 + {value: 0xaf52, lo: 0x80, hi: 0x87}, + {value: 0xb252, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0xac, offset 0x3e4 + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0xb253, lo: 0xb0, hi: 0xb7}, + {value: 0xaf53, lo: 0xb8, hi: 0xbf}, + // Block 0xad, offset 0x3e8 + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x93}, + {value: 0xb252, lo: 0x98, hi: 0x9f}, + {value: 0xaf52, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbb}, + // Block 0xae, offset 0x3f0 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xaf, offset 0x3f2 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + // Block 0xb0, offset 0x3f3 + {value: 0x0010, lo: 0x80, hi: 0xb6}, + // Block 0xb1, offset 0x3f4 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xa7}, + // Block 0xb2, offset 0x3f6 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xb5}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xb3, offset 0x3fc + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb6}, + // Block 0xb4, offset 0x3fe + {value: 0x0010, lo: 0x80, hi: 0x9e}, + // Block 0xb5, offset 0x3ff + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + // Block 0xb6, offset 0x401 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb9}, + // Block 0xb7, offset 0x403 + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0xb8, offset 0x405 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x8e, hi: 0x8e}, + {value: 0x0024, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x99, hi: 0xb3}, + {value: 0x0024, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xb9, offset 0x412 + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0xba, offset 0x413 + {value: 0x0010, lo: 0x80, hi: 0x9c}, + // Block 0xbb, offset 0x414 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + // Block 0xbc, offset 0x418 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + // Block 0xbd, offset 0x41a + {value: 0x0010, lo: 0x80, hi: 0x91}, + // Block 0xbe, offset 0x41b + {value: 0x0010, lo: 0x80, hi: 0x88}, + // Block 0xbf, offset 0x41c + {value: 0x5653, lo: 0x80, hi: 0xb2}, + // Block 0xc0, offset 0x41d + {value: 0x5652, lo: 0x80, hi: 0xb2}, + // Block 0xc1, offset 0x41e + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xc2, offset 0x422 + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xc3, offset 0x426 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb6}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + // Block 0xc4, offset 0x42c + {value: 0x0010, lo: 0x90, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xc5, offset 0x42e + {value: 0x0024, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0xc6, offset 0x435 + {value: 0x0010, lo: 0x90, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + // Block 0xc7, offset 0x438 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xc8, offset 0x43c + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + // Block 0xc9, offset 0x442 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb4}, + {value: 0x0030, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xb7}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0xca, offset 0x44b + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xcb, offset 0x451 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa2}, + {value: 0x0014, lo: 0xa3, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xcc, offset 0x457 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xcd, offset 0x461 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0030, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9d, hi: 0xa3}, + {value: 0x0024, lo: 0xa6, hi: 0xac}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + // Block 0xce, offset 0x46b + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xcf, offset 0x46d + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd0, offset 0x474 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xd1, offset 0x47a + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd2, offset 0x480 + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd3, offset 0x486 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x98, hi: 0x9b}, + {value: 0x0014, lo: 0x9c, hi: 0x9d}, + // Block 0xd4, offset 0x489 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd5, offset 0x48f + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd6, offset 0x492 + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0014, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb5}, + {value: 0x0030, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0xd7, offset 0x49a + {value: 0x0010, lo: 0x80, hi: 0x89}, + // Block 0xd8, offset 0x49b + {value: 0x0014, lo: 0x9d, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xd9, offset 0x4a2 + {value: 0x5f53, lo: 0xa0, hi: 0xbf}, + // Block 0xda, offset 0x4a3 + {value: 0x5f52, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xdb, offset 0x4a6 + {value: 0x0010, lo: 0x80, hi: 0xb8}, + // Block 0xdc, offset 0x4a7 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb6}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xdd, offset 0x4ad + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0xde, offset 0x4b0 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0014, lo: 0x92, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xa9}, + {value: 0x0014, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0xdf, offset 0x4b8 + {value: 0x0010, lo: 0x80, hi: 0x99}, + // Block 0xe0, offset 0x4b9 + {value: 0x0010, lo: 0x80, hi: 0xae}, + // Block 0xe1, offset 0x4ba + {value: 0x0010, lo: 0x80, hi: 0x83}, + // Block 0xe2, offset 0x4bb + {value: 0x0010, lo: 0x80, hi: 0x86}, + // Block 0xe3, offset 0x4bc + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0xe4, offset 0x4be + {value: 0x0010, lo: 0x90, hi: 0xad}, + {value: 0x0034, lo: 0xb0, hi: 0xb4}, + // Block 0xe5, offset 0x4c0 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb6}, + // Block 0xe6, offset 0x4c2 + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa3, hi: 0xb7}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xe7, offset 0x4c6 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + // Block 0xe8, offset 0x4c7 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0xbe}, + // Block 0xe9, offset 0x4c9 + {value: 0x0014, lo: 0x8f, hi: 0x9f}, + // Block 0xea, offset 0x4ca + {value: 0x0014, lo: 0xa0, hi: 0xa0}, + // Block 0xeb, offset 0x4cb + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbc}, + // Block 0xec, offset 0x4cd + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0034, lo: 0x9e, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa3}, + // Block 0xed, offset 0x4d2 + {value: 0x0030, lo: 0xa5, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xa9}, + {value: 0x0030, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbf}, + // Block 0xee, offset 0x4d7 + {value: 0x0034, lo: 0x80, hi: 0x82}, + {value: 0x0024, lo: 0x85, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8b}, + {value: 0x0024, lo: 0xaa, hi: 0xad}, + // Block 0xef, offset 0x4db + {value: 0x0024, lo: 0x82, hi: 0x84}, + // Block 0xf0, offset 0x4dc + {value: 0x0013, lo: 0x80, hi: 0x99}, + {value: 0x0012, lo: 0x9a, hi: 0xb3}, + {value: 0x0013, lo: 0xb4, hi: 0xbf}, + // Block 0xf1, offset 0x4df + {value: 0x0013, lo: 0x80, hi: 0x8d}, + {value: 0x0012, lo: 0x8e, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0xa7}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0xf2, offset 0x4e3 + {value: 0x0013, lo: 0x80, hi: 0x81}, + {value: 0x0012, lo: 0x82, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0x9c}, + {value: 0x0013, lo: 0x9e, hi: 0x9f}, + {value: 0x0013, lo: 0xa2, hi: 0xa2}, + {value: 0x0013, lo: 0xa5, hi: 0xa6}, + {value: 0x0013, lo: 0xa9, hi: 0xac}, + {value: 0x0013, lo: 0xae, hi: 0xb5}, + {value: 0x0012, lo: 0xb6, hi: 0xb9}, + {value: 0x0012, lo: 0xbb, hi: 0xbb}, + {value: 0x0012, lo: 0xbd, hi: 0xbf}, + // Block 0xf3, offset 0x4ee + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0012, lo: 0x85, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0xf4, offset 0x4f2 + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0013, lo: 0x84, hi: 0x85}, + {value: 0x0013, lo: 0x87, hi: 0x8a}, + {value: 0x0013, lo: 0x8d, hi: 0x94}, + {value: 0x0013, lo: 0x96, hi: 0x9c}, + {value: 0x0012, lo: 0x9e, hi: 0xb7}, + {value: 0x0013, lo: 0xb8, hi: 0xb9}, + {value: 0x0013, lo: 0xbb, hi: 0xbe}, + // Block 0xf5, offset 0x4fa + {value: 0x0013, lo: 0x80, hi: 0x84}, + {value: 0x0013, lo: 0x86, hi: 0x86}, + {value: 0x0013, lo: 0x8a, hi: 0x90}, + {value: 0x0012, lo: 0x92, hi: 0xab}, + {value: 0x0013, lo: 0xac, hi: 0xbf}, + // Block 0xf6, offset 0x4ff + {value: 0x0013, lo: 0x80, hi: 0x85}, + {value: 0x0012, lo: 0x86, hi: 0x9f}, + {value: 0x0013, lo: 0xa0, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbf}, + // Block 0xf7, offset 0x503 + {value: 0x0012, lo: 0x80, hi: 0x93}, + {value: 0x0013, lo: 0x94, hi: 0xad}, + {value: 0x0012, lo: 0xae, hi: 0xbf}, + // Block 0xf8, offset 0x506 + {value: 0x0012, lo: 0x80, hi: 0x87}, + {value: 0x0013, lo: 0x88, hi: 0xa1}, + {value: 0x0012, lo: 0xa2, hi: 0xbb}, + {value: 0x0013, lo: 0xbc, hi: 0xbf}, + // Block 0xf9, offset 0x50a + {value: 0x0013, lo: 0x80, hi: 0x95}, + {value: 0x0012, lo: 0x96, hi: 0xaf}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0xfa, offset 0x50d + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0012, lo: 0x8a, hi: 0xa5}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0xfb, offset 0x510 + {value: 0x0013, lo: 0x80, hi: 0x80}, + {value: 0x0012, lo: 0x82, hi: 0x9a}, + {value: 0x0012, lo: 0x9c, hi: 0xa1}, + {value: 0x0013, lo: 0xa2, hi: 0xba}, + {value: 0x0012, lo: 0xbc, hi: 0xbf}, + // Block 0xfc, offset 0x515 + {value: 0x0012, lo: 0x80, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0xb4}, + {value: 0x0012, lo: 0xb6, hi: 0xbf}, + // Block 0xfd, offset 0x519 + {value: 0x0012, lo: 0x80, hi: 0x8e}, + {value: 0x0012, lo: 0x90, hi: 0x95}, + {value: 0x0013, lo: 0x96, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0xfe, offset 0x51d + {value: 0x0012, lo: 0x80, hi: 0x88}, + {value: 0x0012, lo: 0x8a, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0xff, offset 0x521 + {value: 0x0012, lo: 0x80, hi: 0x82}, + {value: 0x0012, lo: 0x84, hi: 0x89}, + {value: 0x0017, lo: 0x8a, hi: 0x8b}, + {value: 0x0010, lo: 0x8e, hi: 0xbf}, + // Block 0x100, offset 0x525 + {value: 0x0014, lo: 0x80, hi: 0xb6}, + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x101, offset 0x527 + {value: 0x0014, lo: 0x80, hi: 0xac}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x102, offset 0x529 + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x9b, hi: 0x9f}, + {value: 0x0014, lo: 0xa1, hi: 0xaf}, + // Block 0x103, offset 0x52c + {value: 0x0024, lo: 0x80, hi: 0x86}, + {value: 0x0024, lo: 0x88, hi: 0x98}, + {value: 0x0024, lo: 0x9b, hi: 0xa1}, + {value: 0x0024, lo: 0xa3, hi: 0xa4}, + {value: 0x0024, lo: 0xa6, hi: 0xaa}, + // Block 0x104, offset 0x531 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0034, lo: 0x90, hi: 0x96}, + // Block 0x105, offset 0x533 + {value: 0xb552, lo: 0x80, hi: 0x81}, + {value: 0xb852, lo: 0x82, hi: 0x83}, + {value: 0x0024, lo: 0x84, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x106, offset 0x538 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x9f}, + {value: 0x0010, lo: 0xa1, hi: 0xa2}, + {value: 0x0010, lo: 0xa4, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb7}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + // Block 0x107, offset 0x541 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x9b}, + {value: 0x0010, lo: 0xa1, hi: 0xa3}, + {value: 0x0010, lo: 0xa5, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xbb}, + // Block 0x108, offset 0x546 + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x109, offset 0x547 + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x10a, offset 0x54a + {value: 0x0013, lo: 0x80, hi: 0x89}, + // Block 0x10b, offset 0x54b + {value: 0x0004, lo: 0xbb, hi: 0xbf}, + // Block 0x10c, offset 0x54c + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0014, lo: 0xa0, hi: 0xbf}, + // Block 0x10d, offset 0x54e + {value: 0x0014, lo: 0x80, hi: 0xbf}, + // Block 0x10e, offset 0x54f + {value: 0x0014, lo: 0x80, hi: 0xaf}, +} + +// Total table size 14027 bytes (13KiB); checksum: F17D40E8 diff --git a/vendor/golang.org/x/text/cases/trieval.go b/vendor/golang.org/x/text/cases/trieval.go new file mode 100644 index 000000000000..4e4d13fe5d14 --- /dev/null +++ b/vendor/golang.org/x/text/cases/trieval.go @@ -0,0 +1,217 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package cases + +// This file contains definitions for interpreting the trie value of the case +// trie generated by "go run gen*.go". It is shared by both the generator +// program and the resultant package. Sharing is achieved by the generator +// copying gen_trieval.go to trieval.go and changing what's above this comment. + +// info holds case information for a single rune. It is the value returned +// by a trie lookup. Most mapping information can be stored in a single 16-bit +// value. If not, for example when a rune is mapped to multiple runes, the value +// stores some basic case data and an index into an array with additional data. +// +// The per-rune values have the following format: +// +// if (exception) { +// 15..4 unsigned exception index +// } else { +// 15..8 XOR pattern or index to XOR pattern for case mapping +// Only 13..8 are used for XOR patterns. +// 7 inverseFold (fold to upper, not to lower) +// 6 index: interpret the XOR pattern as an index +// or isMid if case mode is cIgnorableUncased. +// 5..4 CCC: zero (normal or break), above or other +// } +// 3 exception: interpret this value as an exception index +// (TODO: is this bit necessary? Probably implied from case mode.) +// 2..0 case mode +// +// For the non-exceptional cases, a rune must be either uncased, lowercase or +// uppercase. If the rune is cased, the XOR pattern maps either a lowercase +// rune to uppercase or an uppercase rune to lowercase (applied to the 10 +// least-significant bits of the rune). +// +// See the definitions below for a more detailed description of the various +// bits. +type info uint16 + +const ( + casedMask = 0x0003 + fullCasedMask = 0x0007 + ignorableMask = 0x0006 + ignorableValue = 0x0004 + + inverseFoldBit = 1 << 7 + isMidBit = 1 << 6 + + exceptionBit = 1 << 3 + exceptionShift = 4 + numExceptionBits = 12 + + xorIndexBit = 1 << 6 + xorShift = 8 + + // There is no mapping if all xor bits and the exception bit are zero. + hasMappingMask = 0xff80 | exceptionBit +) + +// The case mode bits encodes the case type of a rune. This includes uncased, +// title, upper and lower case and case ignorable. (For a definition of these +// terms see Chapter 3 of The Unicode Standard Core Specification.) In some rare +// cases, a rune can be both cased and case-ignorable. This is encoded by +// cIgnorableCased. A rune of this type is always lower case. Some runes are +// cased while not having a mapping. +// +// A common pattern for scripts in the Unicode standard is for upper and lower +// case runes to alternate for increasing rune values (e.g. the accented Latin +// ranges starting from U+0100 and U+1E00 among others and some Cyrillic +// characters). We use this property by defining a cXORCase mode, where the case +// mode (always upper or lower case) is derived from the rune value. As the XOR +// pattern for case mappings is often identical for successive runes, using +// cXORCase can result in large series of identical trie values. This, in turn, +// allows us to better compress the trie blocks. +const ( + cUncased info = iota // 000 + cTitle // 001 + cLower // 010 + cUpper // 011 + cIgnorableUncased // 100 + cIgnorableCased // 101 // lower case if mappings exist + cXORCase // 11x // case is cLower | ((rune&1) ^ x) + + maxCaseMode = cUpper +) + +func (c info) isCased() bool { + return c&casedMask != 0 +} + +func (c info) isCaseIgnorable() bool { + return c&ignorableMask == ignorableValue +} + +func (c info) isNotCasedAndNotCaseIgnorable() bool { + return c&fullCasedMask == 0 +} + +func (c info) isCaseIgnorableAndNotCased() bool { + return c&fullCasedMask == cIgnorableUncased +} + +func (c info) isMid() bool { + return c&(fullCasedMask|isMidBit) == isMidBit|cIgnorableUncased +} + +// The case mapping implementation will need to know about various Canonical +// Combining Class (CCC) values. We encode two of these in the trie value: +// cccZero (0) and cccAbove (230). If the value is cccOther, it means that +// CCC(r) > 0, but not 230. A value of cccBreak means that CCC(r) == 0 and that +// the rune also has the break category Break (see below). +const ( + cccBreak info = iota << 4 + cccZero + cccAbove + cccOther + + cccMask = cccBreak | cccZero | cccAbove | cccOther +) + +const ( + starter = 0 + above = 230 + iotaSubscript = 240 +) + +// The exceptions slice holds data that does not fit in a normal info entry. +// The entry is pointed to by the exception index in an entry. It has the +// following format: +// +// Header: +// +// byte 0: +// 7..6 unused +// 5..4 CCC type (same bits as entry) +// 3 unused +// 2..0 length of fold +// +// byte 1: +// 7..6 unused +// 5..3 length of 1st mapping of case type +// 2..0 length of 2nd mapping of case type +// +// case 1st 2nd +// lower -> upper, title +// upper -> lower, title +// title -> lower, upper +// +// Lengths with the value 0x7 indicate no value and implies no change. +// A length of 0 indicates a mapping to zero-length string. +// +// Body bytes: +// +// case folding bytes +// lowercase mapping bytes +// uppercase mapping bytes +// titlecase mapping bytes +// closure mapping bytes (for NFKC_Casefold). (TODO) +// +// Fallbacks: +// +// missing fold -> lower +// missing title -> upper +// all missing -> original rune +// +// exceptions starts with a dummy byte to enforce that there is no zero index +// value. +const ( + lengthMask = 0x07 + lengthBits = 3 + noChange = 0 +) + +// References to generated trie. + +var trie = newCaseTrie(0) + +var sparse = sparseBlocks{ + values: sparseValues[:], + offsets: sparseOffsets[:], +} + +// Sparse block lookup code. + +// valueRange is an entry in a sparse block. +type valueRange struct { + value uint16 + lo, hi byte +} + +type sparseBlocks struct { + values []valueRange + offsets []uint16 +} + +// lookup returns the value from values block n for byte b using binary search. +func (s *sparseBlocks) lookup(n uint32, b byte) uint16 { + lo := s.offsets[n] + hi := s.offsets[n+1] + for lo < hi { + m := lo + (hi-lo)/2 + r := s.values[m] + if r.lo <= b && b <= r.hi { + return r.value + } + if b < r.lo { + hi = m + } else { + lo = m + 1 + } + } + return 0 +} + +// lastRuneForTesting is the last rune used for testing. Everything after this +// is boring. +const lastRuneForTesting = rune(0x1FFFF) diff --git a/vendor/golang.org/x/text/internal/internal.go b/vendor/golang.org/x/text/internal/internal.go new file mode 100644 index 000000000000..3cddbbdda8ca --- /dev/null +++ b/vendor/golang.org/x/text/internal/internal.go @@ -0,0 +1,49 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package internal contains non-exported functionality that are used by +// packages in the text repository. +package internal // import "golang.org/x/text/internal" + +import ( + "sort" + + "golang.org/x/text/language" +) + +// SortTags sorts tags in place. +func SortTags(tags []language.Tag) { + sort.Sort(sorter(tags)) +} + +type sorter []language.Tag + +func (s sorter) Len() int { + return len(s) +} + +func (s sorter) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} + +func (s sorter) Less(i, j int) bool { + return s[i].String() < s[j].String() +} + +// UniqueTags sorts and filters duplicate tags in place and returns a slice with +// only unique tags. +func UniqueTags(tags []language.Tag) []language.Tag { + if len(tags) <= 1 { + return tags + } + SortTags(tags) + k := 0 + for i := 1; i < len(tags); i++ { + if tags[k].String() < tags[i].String() { + k++ + tags[k] = tags[i] + } + } + return tags[:k+1] +} diff --git a/vendor/golang.org/x/text/internal/language/common.go b/vendor/golang.org/x/text/internal/language/common.go new file mode 100644 index 000000000000..cdfdb7497185 --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/common.go @@ -0,0 +1,16 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package language + +// This file contains code common to the maketables.go and the package code. + +// AliasType is the type of an alias in AliasMap. +type AliasType int8 + +const ( + Deprecated AliasType = iota + Macro + Legacy + + AliasTypeUnknown AliasType = -1 +) diff --git a/vendor/golang.org/x/text/internal/language/compact.go b/vendor/golang.org/x/text/internal/language/compact.go new file mode 100644 index 000000000000..46a0015074f2 --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/compact.go @@ -0,0 +1,29 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +// CompactCoreInfo is a compact integer with the three core tags encoded. +type CompactCoreInfo uint32 + +// GetCompactCore generates a uint32 value that is guaranteed to be unique for +// different language, region, and script values. +func GetCompactCore(t Tag) (cci CompactCoreInfo, ok bool) { + if t.LangID > langNoIndexOffset { + return 0, false + } + cci |= CompactCoreInfo(t.LangID) << (8 + 12) + cci |= CompactCoreInfo(t.ScriptID) << 12 + cci |= CompactCoreInfo(t.RegionID) + return cci, true +} + +// Tag generates a tag from c. +func (c CompactCoreInfo) Tag() Tag { + return Tag{ + LangID: Language(c >> 20), + RegionID: Region(c & 0x3ff), + ScriptID: Script(c>>12) & 0xff, + } +} diff --git a/vendor/golang.org/x/text/internal/language/compact/compact.go b/vendor/golang.org/x/text/internal/language/compact/compact.go new file mode 100644 index 000000000000..1b36935ef7be --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/compact/compact.go @@ -0,0 +1,61 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package compact defines a compact representation of language tags. +// +// Common language tags (at least all for which locale information is defined +// in CLDR) are assigned a unique index. Each Tag is associated with such an +// ID for selecting language-related resources (such as translations) as well +// as one for selecting regional defaults (currency, number formatting, etc.) +// +// It may want to export this functionality at some point, but at this point +// this is only available for use within x/text. +package compact // import "golang.org/x/text/internal/language/compact" + +import ( + "sort" + "strings" + + "golang.org/x/text/internal/language" +) + +// ID is an integer identifying a single tag. +type ID uint16 + +func getCoreIndex(t language.Tag) (id ID, ok bool) { + cci, ok := language.GetCompactCore(t) + if !ok { + return 0, false + } + i := sort.Search(len(coreTags), func(i int) bool { + return cci <= coreTags[i] + }) + if i == len(coreTags) || coreTags[i] != cci { + return 0, false + } + return ID(i), true +} + +// Parent returns the ID of the parent or the root ID if id is already the root. +func (id ID) Parent() ID { + return parents[id] +} + +// Tag converts id to an internal language Tag. +func (id ID) Tag() language.Tag { + if int(id) >= len(coreTags) { + return specialTags[int(id)-len(coreTags)] + } + return coreTags[id].Tag() +} + +var specialTags []language.Tag + +func init() { + tags := strings.Split(specialTagsStr, " ") + specialTags = make([]language.Tag, len(tags)) + for i, t := range tags { + specialTags[i] = language.MustParse(t) + } +} diff --git a/vendor/golang.org/x/text/internal/language/compact/language.go b/vendor/golang.org/x/text/internal/language/compact/language.go new file mode 100644 index 000000000000..8c1b6666fb8a --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/compact/language.go @@ -0,0 +1,260 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go gen_index.go -output tables.go +//go:generate go run gen_parents.go + +package compact + +// TODO: Remove above NOTE after: +// - verifying that tables are dropped correctly (most notably matcher tables). + +import ( + "strings" + + "golang.org/x/text/internal/language" +) + +// Tag represents a BCP 47 language tag. It is used to specify an instance of a +// specific language or locale. All language tag values are guaranteed to be +// well-formed. +type Tag struct { + // NOTE: exported tags will become part of the public API. + language ID + locale ID + full fullTag // always a language.Tag for now. +} + +const _und = 0 + +type fullTag interface { + IsRoot() bool + Parent() language.Tag +} + +// Make a compact Tag from a fully specified internal language Tag. +func Make(t language.Tag) (tag Tag) { + if region := t.TypeForKey("rg"); len(region) == 6 && region[2:] == "zzzz" { + if r, err := language.ParseRegion(region[:2]); err == nil { + tFull := t + t, _ = t.SetTypeForKey("rg", "") + // TODO: should we not consider "va" for the language tag? + var exact1, exact2 bool + tag.language, exact1 = FromTag(t) + t.RegionID = r + tag.locale, exact2 = FromTag(t) + if !exact1 || !exact2 { + tag.full = tFull + } + return tag + } + } + lang, ok := FromTag(t) + tag.language = lang + tag.locale = lang + if !ok { + tag.full = t + } + return tag +} + +// Tag returns an internal language Tag version of this tag. +func (t Tag) Tag() language.Tag { + if t.full != nil { + return t.full.(language.Tag) + } + tag := t.language.Tag() + if t.language != t.locale { + loc := t.locale.Tag() + tag, _ = tag.SetTypeForKey("rg", strings.ToLower(loc.RegionID.String())+"zzzz") + } + return tag +} + +// IsCompact reports whether this tag is fully defined in terms of ID. +func (t *Tag) IsCompact() bool { + return t.full == nil +} + +// MayHaveVariants reports whether a tag may have variants. If it returns false +// it is guaranteed the tag does not have variants. +func (t Tag) MayHaveVariants() bool { + return t.full != nil || int(t.language) >= len(coreTags) +} + +// MayHaveExtensions reports whether a tag may have extensions. If it returns +// false it is guaranteed the tag does not have them. +func (t Tag) MayHaveExtensions() bool { + return t.full != nil || + int(t.language) >= len(coreTags) || + t.language != t.locale +} + +// IsRoot returns true if t is equal to language "und". +func (t Tag) IsRoot() bool { + if t.full != nil { + return t.full.IsRoot() + } + return t.language == _und +} + +// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a +// specific language are substituted with fields from the parent language. +// The parent for a language may change for newer versions of CLDR. +func (t Tag) Parent() Tag { + if t.full != nil { + return Make(t.full.Parent()) + } + if t.language != t.locale { + // Simulate stripping -u-rg-xxxxxx + return Tag{language: t.language, locale: t.language} + } + // TODO: use parent lookup table once cycle from internal package is + // removed. Probably by internalizing the table and declaring this fast + // enough. + // lang := compactID(internal.Parent(uint16(t.language))) + lang, _ := FromTag(t.language.Tag().Parent()) + return Tag{language: lang, locale: lang} +} + +// nextToken returns token t and the rest of the string. +func nextToken(s string) (t, tail string) { + p := strings.Index(s[1:], "-") + if p == -1 { + return s[1:], "" + } + p++ + return s[1:p], s[p:] +} + +// LanguageID returns an index, where 0 <= index < NumCompactTags, for tags +// for which data exists in the text repository.The index will change over time +// and should not be stored in persistent storage. If t does not match a compact +// index, exact will be false and the compact index will be returned for the +// first match after repeatedly taking the Parent of t. +func LanguageID(t Tag) (id ID, exact bool) { + return t.language, t.full == nil +} + +// RegionalID returns the ID for the regional variant of this tag. This index is +// used to indicate region-specific overrides, such as default currency, default +// calendar and week data, default time cycle, and default measurement system +// and unit preferences. +// +// For instance, the tag en-GB-u-rg-uszzzz specifies British English with US +// settings for currency, number formatting, etc. The CompactIndex for this tag +// will be that for en-GB, while the RegionalID will be the one corresponding to +// en-US. +func RegionalID(t Tag) (id ID, exact bool) { + return t.locale, t.full == nil +} + +// LanguageTag returns t stripped of regional variant indicators. +// +// At the moment this means it is stripped of a regional and variant subtag "rg" +// and "va" in the "u" extension. +func (t Tag) LanguageTag() Tag { + if t.full == nil { + return Tag{language: t.language, locale: t.language} + } + tt := t.Tag() + tt.SetTypeForKey("rg", "") + tt.SetTypeForKey("va", "") + return Make(tt) +} + +// RegionalTag returns the regional variant of the tag. +// +// At the moment this means that the region is set from the regional subtag +// "rg" in the "u" extension. +func (t Tag) RegionalTag() Tag { + rt := Tag{language: t.locale, locale: t.locale} + if t.full == nil { + return rt + } + b := language.Builder{} + tag := t.Tag() + // tag, _ = tag.SetTypeForKey("rg", "") + b.SetTag(t.locale.Tag()) + if v := tag.Variants(); v != "" { + for _, v := range strings.Split(v, "-") { + b.AddVariant(v) + } + } + for _, e := range tag.Extensions() { + b.AddExt(e) + } + return t +} + +// FromTag reports closest matching ID for an internal language Tag. +func FromTag(t language.Tag) (id ID, exact bool) { + // TODO: perhaps give more frequent tags a lower index. + // TODO: we could make the indexes stable. This will excluded some + // possibilities for optimization, so don't do this quite yet. + exact = true + + b, s, r := t.Raw() + if t.HasString() { + if t.IsPrivateUse() { + // We have no entries for user-defined tags. + return 0, false + } + hasExtra := false + if t.HasVariants() { + if t.HasExtensions() { + build := language.Builder{} + build.SetTag(language.Tag{LangID: b, ScriptID: s, RegionID: r}) + build.AddVariant(t.Variants()) + exact = false + t = build.Make() + } + hasExtra = true + } else if _, ok := t.Extension('u'); ok { + // TODO: va may mean something else. Consider not considering it. + // Strip all but the 'va' entry. + old := t + variant := t.TypeForKey("va") + t = language.Tag{LangID: b, ScriptID: s, RegionID: r} + if variant != "" { + t, _ = t.SetTypeForKey("va", variant) + hasExtra = true + } + exact = old == t + } else { + exact = false + } + if hasExtra { + // We have some variants. + for i, s := range specialTags { + if s == t { + return ID(i + len(coreTags)), exact + } + } + exact = false + } + } + if x, ok := getCoreIndex(t); ok { + return x, exact + } + exact = false + if r != 0 && s == 0 { + // Deal with cases where an extra script is inserted for the region. + t, _ := t.Maximize() + if x, ok := getCoreIndex(t); ok { + return x, exact + } + } + for t = t.Parent(); t != root; t = t.Parent() { + // No variants specified: just compare core components. + // The key has the form lllssrrr, where l, s, and r are nibbles for + // respectively the langID, scriptID, and regionID. + if x, ok := getCoreIndex(t); ok { + return x, exact + } + } + return 0, exact +} + +var root = language.Tag{} diff --git a/vendor/golang.org/x/text/internal/language/compact/parents.go b/vendor/golang.org/x/text/internal/language/compact/parents.go new file mode 100644 index 000000000000..8d810723c75b --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/compact/parents.go @@ -0,0 +1,120 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package compact + +// parents maps a compact index of a tag to the compact index of the parent of +// this tag. +var parents = []ID{ // 775 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0004, 0x0000, 0x0006, + 0x0000, 0x0008, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, + 0x0000, 0x0028, 0x0000, 0x002a, 0x0000, 0x002c, 0x0000, 0x0000, + 0x002f, 0x002e, 0x002e, 0x0000, 0x0033, 0x0000, 0x0035, 0x0000, + 0x0037, 0x0000, 0x0039, 0x0000, 0x003b, 0x0000, 0x0000, 0x003e, + // Entry 40 - 7F + 0x0000, 0x0040, 0x0040, 0x0000, 0x0043, 0x0043, 0x0000, 0x0046, + 0x0000, 0x0048, 0x0000, 0x0000, 0x004b, 0x004a, 0x004a, 0x0000, + 0x004f, 0x004f, 0x004f, 0x004f, 0x0000, 0x0054, 0x0054, 0x0000, + 0x0057, 0x0000, 0x0059, 0x0000, 0x005b, 0x0000, 0x005d, 0x005d, + 0x0000, 0x0060, 0x0000, 0x0062, 0x0000, 0x0064, 0x0000, 0x0066, + 0x0066, 0x0000, 0x0069, 0x0000, 0x006b, 0x006b, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x0000, 0x0073, 0x0000, 0x0075, 0x0000, + 0x0077, 0x0000, 0x0000, 0x007a, 0x0000, 0x007c, 0x0000, 0x007e, + // Entry 80 - BF + 0x0000, 0x0080, 0x0080, 0x0000, 0x0083, 0x0083, 0x0000, 0x0086, + 0x0087, 0x0087, 0x0087, 0x0086, 0x0088, 0x0087, 0x0087, 0x0087, + 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0087, 0x0088, 0x0087, + 0x0087, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086, 0x0087, 0x0086, + // Entry C0 - FF + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0087, + 0x0087, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086, 0x0086, 0x0087, + 0x0087, 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0000, + 0x00ef, 0x0000, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, + 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f1, 0x00f2, 0x00f1, 0x00f1, + // Entry 100 - 13F + 0x00f2, 0x00f2, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f1, + 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x0000, 0x010e, + 0x0000, 0x0110, 0x0000, 0x0112, 0x0000, 0x0114, 0x0114, 0x0000, + 0x0117, 0x0117, 0x0117, 0x0117, 0x0000, 0x011c, 0x0000, 0x011e, + 0x0000, 0x0120, 0x0120, 0x0000, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + // Entry 140 - 17F + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0000, 0x0152, 0x0000, 0x0154, 0x0000, 0x0156, + 0x0000, 0x0158, 0x0000, 0x015a, 0x0000, 0x015c, 0x015c, 0x015c, + 0x0000, 0x0160, 0x0000, 0x0000, 0x0163, 0x0000, 0x0165, 0x0000, + 0x0167, 0x0167, 0x0167, 0x0000, 0x016b, 0x0000, 0x016d, 0x0000, + 0x016f, 0x0000, 0x0171, 0x0171, 0x0000, 0x0174, 0x0000, 0x0176, + 0x0000, 0x0178, 0x0000, 0x017a, 0x0000, 0x017c, 0x0000, 0x017e, + // Entry 180 - 1BF + 0x0000, 0x0000, 0x0000, 0x0182, 0x0000, 0x0184, 0x0184, 0x0184, + 0x0184, 0x0000, 0x0000, 0x0000, 0x018b, 0x0000, 0x0000, 0x018e, + 0x0000, 0x0000, 0x0191, 0x0000, 0x0000, 0x0000, 0x0195, 0x0000, + 0x0197, 0x0000, 0x0000, 0x019a, 0x0000, 0x0000, 0x019d, 0x0000, + 0x019f, 0x0000, 0x01a1, 0x0000, 0x01a3, 0x0000, 0x01a5, 0x0000, + 0x01a7, 0x0000, 0x01a9, 0x0000, 0x01ab, 0x0000, 0x01ad, 0x0000, + 0x01af, 0x0000, 0x01b1, 0x01b1, 0x0000, 0x01b4, 0x0000, 0x01b6, + 0x0000, 0x01b8, 0x0000, 0x01ba, 0x0000, 0x01bc, 0x0000, 0x0000, + // Entry 1C0 - 1FF + 0x01bf, 0x0000, 0x01c1, 0x0000, 0x01c3, 0x0000, 0x01c5, 0x0000, + 0x01c7, 0x0000, 0x01c9, 0x0000, 0x01cb, 0x01cb, 0x01cb, 0x01cb, + 0x0000, 0x01d0, 0x0000, 0x01d2, 0x01d2, 0x0000, 0x01d5, 0x0000, + 0x01d7, 0x0000, 0x01d9, 0x0000, 0x01db, 0x0000, 0x01dd, 0x0000, + 0x01df, 0x01df, 0x0000, 0x01e2, 0x0000, 0x01e4, 0x0000, 0x01e6, + 0x0000, 0x01e8, 0x0000, 0x01ea, 0x0000, 0x01ec, 0x0000, 0x01ee, + 0x0000, 0x01f0, 0x0000, 0x0000, 0x01f3, 0x0000, 0x01f5, 0x01f5, + 0x01f5, 0x0000, 0x01f9, 0x0000, 0x01fb, 0x0000, 0x01fd, 0x0000, + // Entry 200 - 23F + 0x01ff, 0x0000, 0x0000, 0x0202, 0x0000, 0x0204, 0x0204, 0x0000, + 0x0207, 0x0000, 0x0209, 0x0209, 0x0000, 0x020c, 0x020c, 0x0000, + 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0000, + 0x0217, 0x0000, 0x0219, 0x0000, 0x021b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0221, 0x0000, 0x0000, 0x0224, 0x0000, 0x0226, + 0x0226, 0x0000, 0x0229, 0x0000, 0x022b, 0x022b, 0x0000, 0x0000, + 0x022f, 0x022e, 0x022e, 0x0000, 0x0000, 0x0234, 0x0000, 0x0236, + 0x0000, 0x0238, 0x0000, 0x0244, 0x023a, 0x0244, 0x0244, 0x0244, + // Entry 240 - 27F + 0x0244, 0x0244, 0x0244, 0x0244, 0x023a, 0x0244, 0x0244, 0x0000, + 0x0247, 0x0247, 0x0247, 0x0000, 0x024b, 0x0000, 0x024d, 0x0000, + 0x024f, 0x024f, 0x0000, 0x0252, 0x0000, 0x0254, 0x0254, 0x0254, + 0x0254, 0x0254, 0x0254, 0x0000, 0x025b, 0x0000, 0x025d, 0x0000, + 0x025f, 0x0000, 0x0261, 0x0000, 0x0263, 0x0000, 0x0265, 0x0000, + 0x0000, 0x0268, 0x0268, 0x0268, 0x0000, 0x026c, 0x0000, 0x026e, + 0x0000, 0x0270, 0x0000, 0x0000, 0x0000, 0x0274, 0x0273, 0x0273, + 0x0000, 0x0278, 0x0000, 0x027a, 0x0000, 0x027c, 0x0000, 0x0000, + // Entry 280 - 2BF + 0x0000, 0x0000, 0x0281, 0x0000, 0x0000, 0x0284, 0x0000, 0x0286, + 0x0286, 0x0286, 0x0286, 0x0000, 0x028b, 0x028b, 0x028b, 0x0000, + 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x0000, 0x0295, 0x0295, + 0x0295, 0x0295, 0x0000, 0x0000, 0x0000, 0x0000, 0x029d, 0x029d, + 0x029d, 0x0000, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x0000, 0x0000, + 0x02a7, 0x02a7, 0x02a7, 0x02a7, 0x0000, 0x02ac, 0x0000, 0x02ae, + 0x02ae, 0x0000, 0x02b1, 0x0000, 0x02b3, 0x0000, 0x02b5, 0x02b5, + 0x0000, 0x0000, 0x02b9, 0x0000, 0x0000, 0x0000, 0x02bd, 0x0000, + // Entry 2C0 - 2FF + 0x02bf, 0x02bf, 0x0000, 0x0000, 0x02c3, 0x0000, 0x02c5, 0x0000, + 0x02c7, 0x0000, 0x02c9, 0x0000, 0x02cb, 0x0000, 0x02cd, 0x02cd, + 0x0000, 0x0000, 0x02d1, 0x0000, 0x02d3, 0x02d0, 0x02d0, 0x0000, + 0x0000, 0x02d8, 0x02d7, 0x02d7, 0x0000, 0x0000, 0x02dd, 0x0000, + 0x02df, 0x0000, 0x02e1, 0x0000, 0x0000, 0x02e4, 0x0000, 0x02e6, + 0x0000, 0x0000, 0x02e9, 0x0000, 0x02eb, 0x0000, 0x02ed, 0x0000, + 0x02ef, 0x02ef, 0x0000, 0x0000, 0x02f3, 0x02f2, 0x02f2, 0x0000, + 0x02f7, 0x0000, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x0000, + // Entry 300 - 33F + 0x02ff, 0x0300, 0x02ff, 0x0000, 0x0303, 0x0051, 0x00e6, +} // Size: 1574 bytes + +// Total table size 1574 bytes (1KiB); checksum: 895AAF0B diff --git a/vendor/golang.org/x/text/internal/language/compact/tables.go b/vendor/golang.org/x/text/internal/language/compact/tables.go new file mode 100644 index 000000000000..a09ed198a5d0 --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/compact/tables.go @@ -0,0 +1,1015 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package compact + +import "golang.org/x/text/internal/language" + +// CLDRVersion is the CLDR version from which the tables in this package are derived. +const CLDRVersion = "32" + +// NumCompactTags is the number of common tags. The maximum tag is +// NumCompactTags-1. +const NumCompactTags = 775 +const ( + undIndex ID = 0 + afIndex ID = 1 + afNAIndex ID = 2 + afZAIndex ID = 3 + agqIndex ID = 4 + agqCMIndex ID = 5 + akIndex ID = 6 + akGHIndex ID = 7 + amIndex ID = 8 + amETIndex ID = 9 + arIndex ID = 10 + ar001Index ID = 11 + arAEIndex ID = 12 + arBHIndex ID = 13 + arDJIndex ID = 14 + arDZIndex ID = 15 + arEGIndex ID = 16 + arEHIndex ID = 17 + arERIndex ID = 18 + arILIndex ID = 19 + arIQIndex ID = 20 + arJOIndex ID = 21 + arKMIndex ID = 22 + arKWIndex ID = 23 + arLBIndex ID = 24 + arLYIndex ID = 25 + arMAIndex ID = 26 + arMRIndex ID = 27 + arOMIndex ID = 28 + arPSIndex ID = 29 + arQAIndex ID = 30 + arSAIndex ID = 31 + arSDIndex ID = 32 + arSOIndex ID = 33 + arSSIndex ID = 34 + arSYIndex ID = 35 + arTDIndex ID = 36 + arTNIndex ID = 37 + arYEIndex ID = 38 + arsIndex ID = 39 + asIndex ID = 40 + asINIndex ID = 41 + asaIndex ID = 42 + asaTZIndex ID = 43 + astIndex ID = 44 + astESIndex ID = 45 + azIndex ID = 46 + azCyrlIndex ID = 47 + azCyrlAZIndex ID = 48 + azLatnIndex ID = 49 + azLatnAZIndex ID = 50 + basIndex ID = 51 + basCMIndex ID = 52 + beIndex ID = 53 + beBYIndex ID = 54 + bemIndex ID = 55 + bemZMIndex ID = 56 + bezIndex ID = 57 + bezTZIndex ID = 58 + bgIndex ID = 59 + bgBGIndex ID = 60 + bhIndex ID = 61 + bmIndex ID = 62 + bmMLIndex ID = 63 + bnIndex ID = 64 + bnBDIndex ID = 65 + bnINIndex ID = 66 + boIndex ID = 67 + boCNIndex ID = 68 + boINIndex ID = 69 + brIndex ID = 70 + brFRIndex ID = 71 + brxIndex ID = 72 + brxINIndex ID = 73 + bsIndex ID = 74 + bsCyrlIndex ID = 75 + bsCyrlBAIndex ID = 76 + bsLatnIndex ID = 77 + bsLatnBAIndex ID = 78 + caIndex ID = 79 + caADIndex ID = 80 + caESIndex ID = 81 + caFRIndex ID = 82 + caITIndex ID = 83 + ccpIndex ID = 84 + ccpBDIndex ID = 85 + ccpINIndex ID = 86 + ceIndex ID = 87 + ceRUIndex ID = 88 + cggIndex ID = 89 + cggUGIndex ID = 90 + chrIndex ID = 91 + chrUSIndex ID = 92 + ckbIndex ID = 93 + ckbIQIndex ID = 94 + ckbIRIndex ID = 95 + csIndex ID = 96 + csCZIndex ID = 97 + cuIndex ID = 98 + cuRUIndex ID = 99 + cyIndex ID = 100 + cyGBIndex ID = 101 + daIndex ID = 102 + daDKIndex ID = 103 + daGLIndex ID = 104 + davIndex ID = 105 + davKEIndex ID = 106 + deIndex ID = 107 + deATIndex ID = 108 + deBEIndex ID = 109 + deCHIndex ID = 110 + deDEIndex ID = 111 + deITIndex ID = 112 + deLIIndex ID = 113 + deLUIndex ID = 114 + djeIndex ID = 115 + djeNEIndex ID = 116 + dsbIndex ID = 117 + dsbDEIndex ID = 118 + duaIndex ID = 119 + duaCMIndex ID = 120 + dvIndex ID = 121 + dyoIndex ID = 122 + dyoSNIndex ID = 123 + dzIndex ID = 124 + dzBTIndex ID = 125 + ebuIndex ID = 126 + ebuKEIndex ID = 127 + eeIndex ID = 128 + eeGHIndex ID = 129 + eeTGIndex ID = 130 + elIndex ID = 131 + elCYIndex ID = 132 + elGRIndex ID = 133 + enIndex ID = 134 + en001Index ID = 135 + en150Index ID = 136 + enAGIndex ID = 137 + enAIIndex ID = 138 + enASIndex ID = 139 + enATIndex ID = 140 + enAUIndex ID = 141 + enBBIndex ID = 142 + enBEIndex ID = 143 + enBIIndex ID = 144 + enBMIndex ID = 145 + enBSIndex ID = 146 + enBWIndex ID = 147 + enBZIndex ID = 148 + enCAIndex ID = 149 + enCCIndex ID = 150 + enCHIndex ID = 151 + enCKIndex ID = 152 + enCMIndex ID = 153 + enCXIndex ID = 154 + enCYIndex ID = 155 + enDEIndex ID = 156 + enDGIndex ID = 157 + enDKIndex ID = 158 + enDMIndex ID = 159 + enERIndex ID = 160 + enFIIndex ID = 161 + enFJIndex ID = 162 + enFKIndex ID = 163 + enFMIndex ID = 164 + enGBIndex ID = 165 + enGDIndex ID = 166 + enGGIndex ID = 167 + enGHIndex ID = 168 + enGIIndex ID = 169 + enGMIndex ID = 170 + enGUIndex ID = 171 + enGYIndex ID = 172 + enHKIndex ID = 173 + enIEIndex ID = 174 + enILIndex ID = 175 + enIMIndex ID = 176 + enINIndex ID = 177 + enIOIndex ID = 178 + enJEIndex ID = 179 + enJMIndex ID = 180 + enKEIndex ID = 181 + enKIIndex ID = 182 + enKNIndex ID = 183 + enKYIndex ID = 184 + enLCIndex ID = 185 + enLRIndex ID = 186 + enLSIndex ID = 187 + enMGIndex ID = 188 + enMHIndex ID = 189 + enMOIndex ID = 190 + enMPIndex ID = 191 + enMSIndex ID = 192 + enMTIndex ID = 193 + enMUIndex ID = 194 + enMWIndex ID = 195 + enMYIndex ID = 196 + enNAIndex ID = 197 + enNFIndex ID = 198 + enNGIndex ID = 199 + enNLIndex ID = 200 + enNRIndex ID = 201 + enNUIndex ID = 202 + enNZIndex ID = 203 + enPGIndex ID = 204 + enPHIndex ID = 205 + enPKIndex ID = 206 + enPNIndex ID = 207 + enPRIndex ID = 208 + enPWIndex ID = 209 + enRWIndex ID = 210 + enSBIndex ID = 211 + enSCIndex ID = 212 + enSDIndex ID = 213 + enSEIndex ID = 214 + enSGIndex ID = 215 + enSHIndex ID = 216 + enSIIndex ID = 217 + enSLIndex ID = 218 + enSSIndex ID = 219 + enSXIndex ID = 220 + enSZIndex ID = 221 + enTCIndex ID = 222 + enTKIndex ID = 223 + enTOIndex ID = 224 + enTTIndex ID = 225 + enTVIndex ID = 226 + enTZIndex ID = 227 + enUGIndex ID = 228 + enUMIndex ID = 229 + enUSIndex ID = 230 + enVCIndex ID = 231 + enVGIndex ID = 232 + enVIIndex ID = 233 + enVUIndex ID = 234 + enWSIndex ID = 235 + enZAIndex ID = 236 + enZMIndex ID = 237 + enZWIndex ID = 238 + eoIndex ID = 239 + eo001Index ID = 240 + esIndex ID = 241 + es419Index ID = 242 + esARIndex ID = 243 + esBOIndex ID = 244 + esBRIndex ID = 245 + esBZIndex ID = 246 + esCLIndex ID = 247 + esCOIndex ID = 248 + esCRIndex ID = 249 + esCUIndex ID = 250 + esDOIndex ID = 251 + esEAIndex ID = 252 + esECIndex ID = 253 + esESIndex ID = 254 + esGQIndex ID = 255 + esGTIndex ID = 256 + esHNIndex ID = 257 + esICIndex ID = 258 + esMXIndex ID = 259 + esNIIndex ID = 260 + esPAIndex ID = 261 + esPEIndex ID = 262 + esPHIndex ID = 263 + esPRIndex ID = 264 + esPYIndex ID = 265 + esSVIndex ID = 266 + esUSIndex ID = 267 + esUYIndex ID = 268 + esVEIndex ID = 269 + etIndex ID = 270 + etEEIndex ID = 271 + euIndex ID = 272 + euESIndex ID = 273 + ewoIndex ID = 274 + ewoCMIndex ID = 275 + faIndex ID = 276 + faAFIndex ID = 277 + faIRIndex ID = 278 + ffIndex ID = 279 + ffCMIndex ID = 280 + ffGNIndex ID = 281 + ffMRIndex ID = 282 + ffSNIndex ID = 283 + fiIndex ID = 284 + fiFIIndex ID = 285 + filIndex ID = 286 + filPHIndex ID = 287 + foIndex ID = 288 + foDKIndex ID = 289 + foFOIndex ID = 290 + frIndex ID = 291 + frBEIndex ID = 292 + frBFIndex ID = 293 + frBIIndex ID = 294 + frBJIndex ID = 295 + frBLIndex ID = 296 + frCAIndex ID = 297 + frCDIndex ID = 298 + frCFIndex ID = 299 + frCGIndex ID = 300 + frCHIndex ID = 301 + frCIIndex ID = 302 + frCMIndex ID = 303 + frDJIndex ID = 304 + frDZIndex ID = 305 + frFRIndex ID = 306 + frGAIndex ID = 307 + frGFIndex ID = 308 + frGNIndex ID = 309 + frGPIndex ID = 310 + frGQIndex ID = 311 + frHTIndex ID = 312 + frKMIndex ID = 313 + frLUIndex ID = 314 + frMAIndex ID = 315 + frMCIndex ID = 316 + frMFIndex ID = 317 + frMGIndex ID = 318 + frMLIndex ID = 319 + frMQIndex ID = 320 + frMRIndex ID = 321 + frMUIndex ID = 322 + frNCIndex ID = 323 + frNEIndex ID = 324 + frPFIndex ID = 325 + frPMIndex ID = 326 + frREIndex ID = 327 + frRWIndex ID = 328 + frSCIndex ID = 329 + frSNIndex ID = 330 + frSYIndex ID = 331 + frTDIndex ID = 332 + frTGIndex ID = 333 + frTNIndex ID = 334 + frVUIndex ID = 335 + frWFIndex ID = 336 + frYTIndex ID = 337 + furIndex ID = 338 + furITIndex ID = 339 + fyIndex ID = 340 + fyNLIndex ID = 341 + gaIndex ID = 342 + gaIEIndex ID = 343 + gdIndex ID = 344 + gdGBIndex ID = 345 + glIndex ID = 346 + glESIndex ID = 347 + gswIndex ID = 348 + gswCHIndex ID = 349 + gswFRIndex ID = 350 + gswLIIndex ID = 351 + guIndex ID = 352 + guINIndex ID = 353 + guwIndex ID = 354 + guzIndex ID = 355 + guzKEIndex ID = 356 + gvIndex ID = 357 + gvIMIndex ID = 358 + haIndex ID = 359 + haGHIndex ID = 360 + haNEIndex ID = 361 + haNGIndex ID = 362 + hawIndex ID = 363 + hawUSIndex ID = 364 + heIndex ID = 365 + heILIndex ID = 366 + hiIndex ID = 367 + hiINIndex ID = 368 + hrIndex ID = 369 + hrBAIndex ID = 370 + hrHRIndex ID = 371 + hsbIndex ID = 372 + hsbDEIndex ID = 373 + huIndex ID = 374 + huHUIndex ID = 375 + hyIndex ID = 376 + hyAMIndex ID = 377 + idIndex ID = 378 + idIDIndex ID = 379 + igIndex ID = 380 + igNGIndex ID = 381 + iiIndex ID = 382 + iiCNIndex ID = 383 + inIndex ID = 384 + ioIndex ID = 385 + isIndex ID = 386 + isISIndex ID = 387 + itIndex ID = 388 + itCHIndex ID = 389 + itITIndex ID = 390 + itSMIndex ID = 391 + itVAIndex ID = 392 + iuIndex ID = 393 + iwIndex ID = 394 + jaIndex ID = 395 + jaJPIndex ID = 396 + jboIndex ID = 397 + jgoIndex ID = 398 + jgoCMIndex ID = 399 + jiIndex ID = 400 + jmcIndex ID = 401 + jmcTZIndex ID = 402 + jvIndex ID = 403 + jwIndex ID = 404 + kaIndex ID = 405 + kaGEIndex ID = 406 + kabIndex ID = 407 + kabDZIndex ID = 408 + kajIndex ID = 409 + kamIndex ID = 410 + kamKEIndex ID = 411 + kcgIndex ID = 412 + kdeIndex ID = 413 + kdeTZIndex ID = 414 + keaIndex ID = 415 + keaCVIndex ID = 416 + khqIndex ID = 417 + khqMLIndex ID = 418 + kiIndex ID = 419 + kiKEIndex ID = 420 + kkIndex ID = 421 + kkKZIndex ID = 422 + kkjIndex ID = 423 + kkjCMIndex ID = 424 + klIndex ID = 425 + klGLIndex ID = 426 + klnIndex ID = 427 + klnKEIndex ID = 428 + kmIndex ID = 429 + kmKHIndex ID = 430 + knIndex ID = 431 + knINIndex ID = 432 + koIndex ID = 433 + koKPIndex ID = 434 + koKRIndex ID = 435 + kokIndex ID = 436 + kokINIndex ID = 437 + ksIndex ID = 438 + ksINIndex ID = 439 + ksbIndex ID = 440 + ksbTZIndex ID = 441 + ksfIndex ID = 442 + ksfCMIndex ID = 443 + kshIndex ID = 444 + kshDEIndex ID = 445 + kuIndex ID = 446 + kwIndex ID = 447 + kwGBIndex ID = 448 + kyIndex ID = 449 + kyKGIndex ID = 450 + lagIndex ID = 451 + lagTZIndex ID = 452 + lbIndex ID = 453 + lbLUIndex ID = 454 + lgIndex ID = 455 + lgUGIndex ID = 456 + lktIndex ID = 457 + lktUSIndex ID = 458 + lnIndex ID = 459 + lnAOIndex ID = 460 + lnCDIndex ID = 461 + lnCFIndex ID = 462 + lnCGIndex ID = 463 + loIndex ID = 464 + loLAIndex ID = 465 + lrcIndex ID = 466 + lrcIQIndex ID = 467 + lrcIRIndex ID = 468 + ltIndex ID = 469 + ltLTIndex ID = 470 + luIndex ID = 471 + luCDIndex ID = 472 + luoIndex ID = 473 + luoKEIndex ID = 474 + luyIndex ID = 475 + luyKEIndex ID = 476 + lvIndex ID = 477 + lvLVIndex ID = 478 + masIndex ID = 479 + masKEIndex ID = 480 + masTZIndex ID = 481 + merIndex ID = 482 + merKEIndex ID = 483 + mfeIndex ID = 484 + mfeMUIndex ID = 485 + mgIndex ID = 486 + mgMGIndex ID = 487 + mghIndex ID = 488 + mghMZIndex ID = 489 + mgoIndex ID = 490 + mgoCMIndex ID = 491 + mkIndex ID = 492 + mkMKIndex ID = 493 + mlIndex ID = 494 + mlINIndex ID = 495 + mnIndex ID = 496 + mnMNIndex ID = 497 + moIndex ID = 498 + mrIndex ID = 499 + mrINIndex ID = 500 + msIndex ID = 501 + msBNIndex ID = 502 + msMYIndex ID = 503 + msSGIndex ID = 504 + mtIndex ID = 505 + mtMTIndex ID = 506 + muaIndex ID = 507 + muaCMIndex ID = 508 + myIndex ID = 509 + myMMIndex ID = 510 + mznIndex ID = 511 + mznIRIndex ID = 512 + nahIndex ID = 513 + naqIndex ID = 514 + naqNAIndex ID = 515 + nbIndex ID = 516 + nbNOIndex ID = 517 + nbSJIndex ID = 518 + ndIndex ID = 519 + ndZWIndex ID = 520 + ndsIndex ID = 521 + ndsDEIndex ID = 522 + ndsNLIndex ID = 523 + neIndex ID = 524 + neINIndex ID = 525 + neNPIndex ID = 526 + nlIndex ID = 527 + nlAWIndex ID = 528 + nlBEIndex ID = 529 + nlBQIndex ID = 530 + nlCWIndex ID = 531 + nlNLIndex ID = 532 + nlSRIndex ID = 533 + nlSXIndex ID = 534 + nmgIndex ID = 535 + nmgCMIndex ID = 536 + nnIndex ID = 537 + nnNOIndex ID = 538 + nnhIndex ID = 539 + nnhCMIndex ID = 540 + noIndex ID = 541 + nqoIndex ID = 542 + nrIndex ID = 543 + nsoIndex ID = 544 + nusIndex ID = 545 + nusSSIndex ID = 546 + nyIndex ID = 547 + nynIndex ID = 548 + nynUGIndex ID = 549 + omIndex ID = 550 + omETIndex ID = 551 + omKEIndex ID = 552 + orIndex ID = 553 + orINIndex ID = 554 + osIndex ID = 555 + osGEIndex ID = 556 + osRUIndex ID = 557 + paIndex ID = 558 + paArabIndex ID = 559 + paArabPKIndex ID = 560 + paGuruIndex ID = 561 + paGuruINIndex ID = 562 + papIndex ID = 563 + plIndex ID = 564 + plPLIndex ID = 565 + prgIndex ID = 566 + prg001Index ID = 567 + psIndex ID = 568 + psAFIndex ID = 569 + ptIndex ID = 570 + ptAOIndex ID = 571 + ptBRIndex ID = 572 + ptCHIndex ID = 573 + ptCVIndex ID = 574 + ptGQIndex ID = 575 + ptGWIndex ID = 576 + ptLUIndex ID = 577 + ptMOIndex ID = 578 + ptMZIndex ID = 579 + ptPTIndex ID = 580 + ptSTIndex ID = 581 + ptTLIndex ID = 582 + quIndex ID = 583 + quBOIndex ID = 584 + quECIndex ID = 585 + quPEIndex ID = 586 + rmIndex ID = 587 + rmCHIndex ID = 588 + rnIndex ID = 589 + rnBIIndex ID = 590 + roIndex ID = 591 + roMDIndex ID = 592 + roROIndex ID = 593 + rofIndex ID = 594 + rofTZIndex ID = 595 + ruIndex ID = 596 + ruBYIndex ID = 597 + ruKGIndex ID = 598 + ruKZIndex ID = 599 + ruMDIndex ID = 600 + ruRUIndex ID = 601 + ruUAIndex ID = 602 + rwIndex ID = 603 + rwRWIndex ID = 604 + rwkIndex ID = 605 + rwkTZIndex ID = 606 + sahIndex ID = 607 + sahRUIndex ID = 608 + saqIndex ID = 609 + saqKEIndex ID = 610 + sbpIndex ID = 611 + sbpTZIndex ID = 612 + sdIndex ID = 613 + sdPKIndex ID = 614 + sdhIndex ID = 615 + seIndex ID = 616 + seFIIndex ID = 617 + seNOIndex ID = 618 + seSEIndex ID = 619 + sehIndex ID = 620 + sehMZIndex ID = 621 + sesIndex ID = 622 + sesMLIndex ID = 623 + sgIndex ID = 624 + sgCFIndex ID = 625 + shIndex ID = 626 + shiIndex ID = 627 + shiLatnIndex ID = 628 + shiLatnMAIndex ID = 629 + shiTfngIndex ID = 630 + shiTfngMAIndex ID = 631 + siIndex ID = 632 + siLKIndex ID = 633 + skIndex ID = 634 + skSKIndex ID = 635 + slIndex ID = 636 + slSIIndex ID = 637 + smaIndex ID = 638 + smiIndex ID = 639 + smjIndex ID = 640 + smnIndex ID = 641 + smnFIIndex ID = 642 + smsIndex ID = 643 + snIndex ID = 644 + snZWIndex ID = 645 + soIndex ID = 646 + soDJIndex ID = 647 + soETIndex ID = 648 + soKEIndex ID = 649 + soSOIndex ID = 650 + sqIndex ID = 651 + sqALIndex ID = 652 + sqMKIndex ID = 653 + sqXKIndex ID = 654 + srIndex ID = 655 + srCyrlIndex ID = 656 + srCyrlBAIndex ID = 657 + srCyrlMEIndex ID = 658 + srCyrlRSIndex ID = 659 + srCyrlXKIndex ID = 660 + srLatnIndex ID = 661 + srLatnBAIndex ID = 662 + srLatnMEIndex ID = 663 + srLatnRSIndex ID = 664 + srLatnXKIndex ID = 665 + ssIndex ID = 666 + ssyIndex ID = 667 + stIndex ID = 668 + svIndex ID = 669 + svAXIndex ID = 670 + svFIIndex ID = 671 + svSEIndex ID = 672 + swIndex ID = 673 + swCDIndex ID = 674 + swKEIndex ID = 675 + swTZIndex ID = 676 + swUGIndex ID = 677 + syrIndex ID = 678 + taIndex ID = 679 + taINIndex ID = 680 + taLKIndex ID = 681 + taMYIndex ID = 682 + taSGIndex ID = 683 + teIndex ID = 684 + teINIndex ID = 685 + teoIndex ID = 686 + teoKEIndex ID = 687 + teoUGIndex ID = 688 + tgIndex ID = 689 + tgTJIndex ID = 690 + thIndex ID = 691 + thTHIndex ID = 692 + tiIndex ID = 693 + tiERIndex ID = 694 + tiETIndex ID = 695 + tigIndex ID = 696 + tkIndex ID = 697 + tkTMIndex ID = 698 + tlIndex ID = 699 + tnIndex ID = 700 + toIndex ID = 701 + toTOIndex ID = 702 + trIndex ID = 703 + trCYIndex ID = 704 + trTRIndex ID = 705 + tsIndex ID = 706 + ttIndex ID = 707 + ttRUIndex ID = 708 + twqIndex ID = 709 + twqNEIndex ID = 710 + tzmIndex ID = 711 + tzmMAIndex ID = 712 + ugIndex ID = 713 + ugCNIndex ID = 714 + ukIndex ID = 715 + ukUAIndex ID = 716 + urIndex ID = 717 + urINIndex ID = 718 + urPKIndex ID = 719 + uzIndex ID = 720 + uzArabIndex ID = 721 + uzArabAFIndex ID = 722 + uzCyrlIndex ID = 723 + uzCyrlUZIndex ID = 724 + uzLatnIndex ID = 725 + uzLatnUZIndex ID = 726 + vaiIndex ID = 727 + vaiLatnIndex ID = 728 + vaiLatnLRIndex ID = 729 + vaiVaiiIndex ID = 730 + vaiVaiiLRIndex ID = 731 + veIndex ID = 732 + viIndex ID = 733 + viVNIndex ID = 734 + voIndex ID = 735 + vo001Index ID = 736 + vunIndex ID = 737 + vunTZIndex ID = 738 + waIndex ID = 739 + waeIndex ID = 740 + waeCHIndex ID = 741 + woIndex ID = 742 + woSNIndex ID = 743 + xhIndex ID = 744 + xogIndex ID = 745 + xogUGIndex ID = 746 + yavIndex ID = 747 + yavCMIndex ID = 748 + yiIndex ID = 749 + yi001Index ID = 750 + yoIndex ID = 751 + yoBJIndex ID = 752 + yoNGIndex ID = 753 + yueIndex ID = 754 + yueHansIndex ID = 755 + yueHansCNIndex ID = 756 + yueHantIndex ID = 757 + yueHantHKIndex ID = 758 + zghIndex ID = 759 + zghMAIndex ID = 760 + zhIndex ID = 761 + zhHansIndex ID = 762 + zhHansCNIndex ID = 763 + zhHansHKIndex ID = 764 + zhHansMOIndex ID = 765 + zhHansSGIndex ID = 766 + zhHantIndex ID = 767 + zhHantHKIndex ID = 768 + zhHantMOIndex ID = 769 + zhHantTWIndex ID = 770 + zuIndex ID = 771 + zuZAIndex ID = 772 + caESvalenciaIndex ID = 773 + enUSuvaposixIndex ID = 774 +) + +var coreTags = []language.CompactCoreInfo{ // 773 elements + // Entry 0 - 1F + 0x00000000, 0x01600000, 0x016000d3, 0x01600162, + 0x01c00000, 0x01c00052, 0x02100000, 0x02100081, + 0x02700000, 0x02700070, 0x03a00000, 0x03a00001, + 0x03a00023, 0x03a00039, 0x03a00063, 0x03a00068, + 0x03a0006c, 0x03a0006d, 0x03a0006e, 0x03a00098, + 0x03a0009c, 0x03a000a2, 0x03a000a9, 0x03a000ad, + 0x03a000b1, 0x03a000ba, 0x03a000bb, 0x03a000ca, + 0x03a000e2, 0x03a000ee, 0x03a000f4, 0x03a00109, + // Entry 20 - 3F + 0x03a0010c, 0x03a00116, 0x03a00118, 0x03a0011d, + 0x03a00121, 0x03a00129, 0x03a0015f, 0x04000000, + 0x04300000, 0x0430009a, 0x04400000, 0x04400130, + 0x04800000, 0x0480006f, 0x05800000, 0x05820000, + 0x05820032, 0x0585b000, 0x0585b032, 0x05e00000, + 0x05e00052, 0x07100000, 0x07100047, 0x07500000, + 0x07500163, 0x07900000, 0x07900130, 0x07e00000, + 0x07e00038, 0x08200000, 0x0a000000, 0x0a0000c4, + // Entry 40 - 5F + 0x0a500000, 0x0a500035, 0x0a50009a, 0x0a900000, + 0x0a900053, 0x0a90009a, 0x0b200000, 0x0b200079, + 0x0b500000, 0x0b50009a, 0x0b700000, 0x0b720000, + 0x0b720033, 0x0b75b000, 0x0b75b033, 0x0d700000, + 0x0d700022, 0x0d70006f, 0x0d700079, 0x0d70009f, + 0x0db00000, 0x0db00035, 0x0db0009a, 0x0dc00000, + 0x0dc00107, 0x0df00000, 0x0df00132, 0x0e500000, + 0x0e500136, 0x0e900000, 0x0e90009c, 0x0e90009d, + // Entry 60 - 7F + 0x0fa00000, 0x0fa0005f, 0x0fe00000, 0x0fe00107, + 0x10000000, 0x1000007c, 0x10100000, 0x10100064, + 0x10100083, 0x10800000, 0x108000a5, 0x10d00000, + 0x10d0002e, 0x10d00036, 0x10d0004e, 0x10d00061, + 0x10d0009f, 0x10d000b3, 0x10d000b8, 0x11700000, + 0x117000d5, 0x11f00000, 0x11f00061, 0x12400000, + 0x12400052, 0x12800000, 0x12b00000, 0x12b00115, + 0x12d00000, 0x12d00043, 0x12f00000, 0x12f000a5, + // Entry 80 - 9F + 0x13000000, 0x13000081, 0x13000123, 0x13600000, + 0x1360005e, 0x13600088, 0x13900000, 0x13900001, + 0x1390001a, 0x13900025, 0x13900026, 0x1390002d, + 0x1390002e, 0x1390002f, 0x13900034, 0x13900036, + 0x1390003a, 0x1390003d, 0x13900042, 0x13900046, + 0x13900048, 0x13900049, 0x1390004a, 0x1390004e, + 0x13900050, 0x13900052, 0x1390005d, 0x1390005e, + 0x13900061, 0x13900062, 0x13900064, 0x13900065, + // Entry A0 - BF + 0x1390006e, 0x13900073, 0x13900074, 0x13900075, + 0x13900076, 0x1390007c, 0x1390007d, 0x13900080, + 0x13900081, 0x13900082, 0x13900084, 0x1390008b, + 0x1390008d, 0x1390008e, 0x13900097, 0x13900098, + 0x13900099, 0x1390009a, 0x1390009b, 0x139000a0, + 0x139000a1, 0x139000a5, 0x139000a8, 0x139000aa, + 0x139000ae, 0x139000b2, 0x139000b5, 0x139000b6, + 0x139000c0, 0x139000c1, 0x139000c7, 0x139000c8, + // Entry C0 - DF + 0x139000cb, 0x139000cc, 0x139000cd, 0x139000cf, + 0x139000d1, 0x139000d3, 0x139000d6, 0x139000d7, + 0x139000da, 0x139000de, 0x139000e0, 0x139000e1, + 0x139000e7, 0x139000e8, 0x139000e9, 0x139000ec, + 0x139000ed, 0x139000f1, 0x13900108, 0x1390010a, + 0x1390010b, 0x1390010c, 0x1390010d, 0x1390010e, + 0x1390010f, 0x13900110, 0x13900113, 0x13900118, + 0x1390011c, 0x1390011e, 0x13900120, 0x13900126, + // Entry E0 - FF + 0x1390012a, 0x1390012d, 0x1390012e, 0x13900130, + 0x13900132, 0x13900134, 0x13900136, 0x1390013a, + 0x1390013d, 0x1390013e, 0x13900140, 0x13900143, + 0x13900162, 0x13900163, 0x13900165, 0x13c00000, + 0x13c00001, 0x13e00000, 0x13e0001f, 0x13e0002c, + 0x13e0003f, 0x13e00041, 0x13e00048, 0x13e00051, + 0x13e00054, 0x13e00057, 0x13e0005a, 0x13e00066, + 0x13e00069, 0x13e0006a, 0x13e0006f, 0x13e00087, + // Entry 100 - 11F + 0x13e0008a, 0x13e00090, 0x13e00095, 0x13e000d0, + 0x13e000d9, 0x13e000e3, 0x13e000e5, 0x13e000e8, + 0x13e000ed, 0x13e000f2, 0x13e0011b, 0x13e00136, + 0x13e00137, 0x13e0013c, 0x14000000, 0x1400006b, + 0x14500000, 0x1450006f, 0x14600000, 0x14600052, + 0x14800000, 0x14800024, 0x1480009d, 0x14e00000, + 0x14e00052, 0x14e00085, 0x14e000ca, 0x14e00115, + 0x15100000, 0x15100073, 0x15300000, 0x153000e8, + // Entry 120 - 13F + 0x15800000, 0x15800064, 0x15800077, 0x15e00000, + 0x15e00036, 0x15e00037, 0x15e0003a, 0x15e0003b, + 0x15e0003c, 0x15e00049, 0x15e0004b, 0x15e0004c, + 0x15e0004d, 0x15e0004e, 0x15e0004f, 0x15e00052, + 0x15e00063, 0x15e00068, 0x15e00079, 0x15e0007b, + 0x15e0007f, 0x15e00085, 0x15e00086, 0x15e00087, + 0x15e00092, 0x15e000a9, 0x15e000b8, 0x15e000bb, + 0x15e000bc, 0x15e000bf, 0x15e000c0, 0x15e000c4, + // Entry 140 - 15F + 0x15e000c9, 0x15e000ca, 0x15e000cd, 0x15e000d4, + 0x15e000d5, 0x15e000e6, 0x15e000eb, 0x15e00103, + 0x15e00108, 0x15e0010b, 0x15e00115, 0x15e0011d, + 0x15e00121, 0x15e00123, 0x15e00129, 0x15e00140, + 0x15e00141, 0x15e00160, 0x16900000, 0x1690009f, + 0x16d00000, 0x16d000da, 0x16e00000, 0x16e00097, + 0x17e00000, 0x17e0007c, 0x19000000, 0x1900006f, + 0x1a300000, 0x1a30004e, 0x1a300079, 0x1a3000b3, + // Entry 160 - 17F + 0x1a400000, 0x1a40009a, 0x1a900000, 0x1ab00000, + 0x1ab000a5, 0x1ac00000, 0x1ac00099, 0x1b400000, + 0x1b400081, 0x1b4000d5, 0x1b4000d7, 0x1b800000, + 0x1b800136, 0x1bc00000, 0x1bc00098, 0x1be00000, + 0x1be0009a, 0x1d100000, 0x1d100033, 0x1d100091, + 0x1d200000, 0x1d200061, 0x1d500000, 0x1d500093, + 0x1d700000, 0x1d700028, 0x1e100000, 0x1e100096, + 0x1e700000, 0x1e7000d7, 0x1ea00000, 0x1ea00053, + // Entry 180 - 19F + 0x1f300000, 0x1f500000, 0x1f800000, 0x1f80009e, + 0x1f900000, 0x1f90004e, 0x1f90009f, 0x1f900114, + 0x1f900139, 0x1fa00000, 0x1fb00000, 0x20000000, + 0x200000a3, 0x20300000, 0x20700000, 0x20700052, + 0x20800000, 0x20a00000, 0x20a00130, 0x20e00000, + 0x20f00000, 0x21000000, 0x2100007e, 0x21200000, + 0x21200068, 0x21600000, 0x21700000, 0x217000a5, + 0x21f00000, 0x22300000, 0x22300130, 0x22700000, + // Entry 1A0 - 1BF + 0x2270005b, 0x23400000, 0x234000c4, 0x23900000, + 0x239000a5, 0x24200000, 0x242000af, 0x24400000, + 0x24400052, 0x24500000, 0x24500083, 0x24600000, + 0x246000a5, 0x24a00000, 0x24a000a7, 0x25100000, + 0x2510009a, 0x25400000, 0x254000ab, 0x254000ac, + 0x25600000, 0x2560009a, 0x26a00000, 0x26a0009a, + 0x26b00000, 0x26b00130, 0x26d00000, 0x26d00052, + 0x26e00000, 0x26e00061, 0x27400000, 0x28100000, + // Entry 1C0 - 1DF + 0x2810007c, 0x28a00000, 0x28a000a6, 0x29100000, + 0x29100130, 0x29500000, 0x295000b8, 0x2a300000, + 0x2a300132, 0x2af00000, 0x2af00136, 0x2b500000, + 0x2b50002a, 0x2b50004b, 0x2b50004c, 0x2b50004d, + 0x2b800000, 0x2b8000b0, 0x2bf00000, 0x2bf0009c, + 0x2bf0009d, 0x2c000000, 0x2c0000b7, 0x2c200000, + 0x2c20004b, 0x2c400000, 0x2c4000a5, 0x2c500000, + 0x2c5000a5, 0x2c700000, 0x2c7000b9, 0x2d100000, + // Entry 1E0 - 1FF + 0x2d1000a5, 0x2d100130, 0x2e900000, 0x2e9000a5, + 0x2ed00000, 0x2ed000cd, 0x2f100000, 0x2f1000c0, + 0x2f200000, 0x2f2000d2, 0x2f400000, 0x2f400052, + 0x2ff00000, 0x2ff000c3, 0x30400000, 0x3040009a, + 0x30b00000, 0x30b000c6, 0x31000000, 0x31b00000, + 0x31b0009a, 0x31f00000, 0x31f0003e, 0x31f000d1, + 0x31f0010e, 0x32000000, 0x320000cc, 0x32500000, + 0x32500052, 0x33100000, 0x331000c5, 0x33a00000, + // Entry 200 - 21F + 0x33a0009d, 0x34100000, 0x34500000, 0x345000d3, + 0x34700000, 0x347000db, 0x34700111, 0x34e00000, + 0x34e00165, 0x35000000, 0x35000061, 0x350000da, + 0x35100000, 0x3510009a, 0x351000dc, 0x36700000, + 0x36700030, 0x36700036, 0x36700040, 0x3670005c, + 0x367000da, 0x36700117, 0x3670011c, 0x36800000, + 0x36800052, 0x36a00000, 0x36a000db, 0x36c00000, + 0x36c00052, 0x36f00000, 0x37500000, 0x37600000, + // Entry 220 - 23F + 0x37a00000, 0x38000000, 0x38000118, 0x38700000, + 0x38900000, 0x38900132, 0x39000000, 0x39000070, + 0x390000a5, 0x39500000, 0x3950009a, 0x39800000, + 0x3980007e, 0x39800107, 0x39d00000, 0x39d05000, + 0x39d050e9, 0x39d36000, 0x39d3609a, 0x3a100000, + 0x3b300000, 0x3b3000ea, 0x3bd00000, 0x3bd00001, + 0x3be00000, 0x3be00024, 0x3c000000, 0x3c00002a, + 0x3c000041, 0x3c00004e, 0x3c00005b, 0x3c000087, + // Entry 240 - 25F + 0x3c00008c, 0x3c0000b8, 0x3c0000c7, 0x3c0000d2, + 0x3c0000ef, 0x3c000119, 0x3c000127, 0x3c400000, + 0x3c40003f, 0x3c40006a, 0x3c4000e5, 0x3d400000, + 0x3d40004e, 0x3d900000, 0x3d90003a, 0x3dc00000, + 0x3dc000bd, 0x3dc00105, 0x3de00000, 0x3de00130, + 0x3e200000, 0x3e200047, 0x3e2000a6, 0x3e2000af, + 0x3e2000bd, 0x3e200107, 0x3e200131, 0x3e500000, + 0x3e500108, 0x3e600000, 0x3e600130, 0x3eb00000, + // Entry 260 - 27F + 0x3eb00107, 0x3ec00000, 0x3ec000a5, 0x3f300000, + 0x3f300130, 0x3fa00000, 0x3fa000e9, 0x3fc00000, + 0x3fd00000, 0x3fd00073, 0x3fd000db, 0x3fd0010d, + 0x3ff00000, 0x3ff000d2, 0x40100000, 0x401000c4, + 0x40200000, 0x4020004c, 0x40700000, 0x40800000, + 0x4085b000, 0x4085b0bb, 0x408eb000, 0x408eb0bb, + 0x40c00000, 0x40c000b4, 0x41200000, 0x41200112, + 0x41600000, 0x41600110, 0x41c00000, 0x41d00000, + // Entry 280 - 29F + 0x41e00000, 0x41f00000, 0x41f00073, 0x42200000, + 0x42300000, 0x42300165, 0x42900000, 0x42900063, + 0x42900070, 0x429000a5, 0x42900116, 0x43100000, + 0x43100027, 0x431000c3, 0x4310014e, 0x43200000, + 0x43220000, 0x43220033, 0x432200be, 0x43220106, + 0x4322014e, 0x4325b000, 0x4325b033, 0x4325b0be, + 0x4325b106, 0x4325b14e, 0x43700000, 0x43a00000, + 0x43b00000, 0x44400000, 0x44400031, 0x44400073, + // Entry 2A0 - 2BF + 0x4440010d, 0x44500000, 0x4450004b, 0x445000a5, + 0x44500130, 0x44500132, 0x44e00000, 0x45000000, + 0x4500009a, 0x450000b4, 0x450000d1, 0x4500010e, + 0x46100000, 0x4610009a, 0x46400000, 0x464000a5, + 0x46400132, 0x46700000, 0x46700125, 0x46b00000, + 0x46b00124, 0x46f00000, 0x46f0006e, 0x46f00070, + 0x47100000, 0x47600000, 0x47600128, 0x47a00000, + 0x48000000, 0x48200000, 0x4820012a, 0x48a00000, + // Entry 2C0 - 2DF + 0x48a0005e, 0x48a0012c, 0x48e00000, 0x49400000, + 0x49400107, 0x4a400000, 0x4a4000d5, 0x4a900000, + 0x4a9000bb, 0x4ac00000, 0x4ac00053, 0x4ae00000, + 0x4ae00131, 0x4b400000, 0x4b40009a, 0x4b4000e9, + 0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc20000, + 0x4bc20138, 0x4bc5b000, 0x4bc5b138, 0x4be00000, + 0x4be5b000, 0x4be5b0b5, 0x4bef4000, 0x4bef40b5, + 0x4c000000, 0x4c300000, 0x4c30013f, 0x4c900000, + // Entry 2E0 - 2FF + 0x4c900001, 0x4cc00000, 0x4cc00130, 0x4ce00000, + 0x4cf00000, 0x4cf0004e, 0x4e500000, 0x4e500115, + 0x4f200000, 0x4fb00000, 0x4fb00132, 0x50900000, + 0x50900052, 0x51200000, 0x51200001, 0x51800000, + 0x5180003b, 0x518000d7, 0x51f00000, 0x51f3b000, + 0x51f3b053, 0x51f3c000, 0x51f3c08e, 0x52800000, + 0x528000bb, 0x52900000, 0x5293b000, 0x5293b053, + 0x5293b08e, 0x5293b0c7, 0x5293b10e, 0x5293c000, + // Entry 300 - 31F + 0x5293c08e, 0x5293c0c7, 0x5293c12f, 0x52f00000, + 0x52f00162, +} // Size: 3116 bytes + +const specialTagsStr string = "ca-ES-valencia en-US-u-va-posix" + +// Total table size 3147 bytes (3KiB); checksum: 5A8FFFA5 diff --git a/vendor/golang.org/x/text/internal/language/compact/tags.go b/vendor/golang.org/x/text/internal/language/compact/tags.go new file mode 100644 index 000000000000..ca135d295aef --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/compact/tags.go @@ -0,0 +1,91 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package compact + +var ( + und = Tag{} + + Und Tag = Tag{} + + Afrikaans Tag = Tag{language: afIndex, locale: afIndex} + Amharic Tag = Tag{language: amIndex, locale: amIndex} + Arabic Tag = Tag{language: arIndex, locale: arIndex} + ModernStandardArabic Tag = Tag{language: ar001Index, locale: ar001Index} + Azerbaijani Tag = Tag{language: azIndex, locale: azIndex} + Bulgarian Tag = Tag{language: bgIndex, locale: bgIndex} + Bengali Tag = Tag{language: bnIndex, locale: bnIndex} + Catalan Tag = Tag{language: caIndex, locale: caIndex} + Czech Tag = Tag{language: csIndex, locale: csIndex} + Danish Tag = Tag{language: daIndex, locale: daIndex} + German Tag = Tag{language: deIndex, locale: deIndex} + Greek Tag = Tag{language: elIndex, locale: elIndex} + English Tag = Tag{language: enIndex, locale: enIndex} + AmericanEnglish Tag = Tag{language: enUSIndex, locale: enUSIndex} + BritishEnglish Tag = Tag{language: enGBIndex, locale: enGBIndex} + Spanish Tag = Tag{language: esIndex, locale: esIndex} + EuropeanSpanish Tag = Tag{language: esESIndex, locale: esESIndex} + LatinAmericanSpanish Tag = Tag{language: es419Index, locale: es419Index} + Estonian Tag = Tag{language: etIndex, locale: etIndex} + Persian Tag = Tag{language: faIndex, locale: faIndex} + Finnish Tag = Tag{language: fiIndex, locale: fiIndex} + Filipino Tag = Tag{language: filIndex, locale: filIndex} + French Tag = Tag{language: frIndex, locale: frIndex} + CanadianFrench Tag = Tag{language: frCAIndex, locale: frCAIndex} + Gujarati Tag = Tag{language: guIndex, locale: guIndex} + Hebrew Tag = Tag{language: heIndex, locale: heIndex} + Hindi Tag = Tag{language: hiIndex, locale: hiIndex} + Croatian Tag = Tag{language: hrIndex, locale: hrIndex} + Hungarian Tag = Tag{language: huIndex, locale: huIndex} + Armenian Tag = Tag{language: hyIndex, locale: hyIndex} + Indonesian Tag = Tag{language: idIndex, locale: idIndex} + Icelandic Tag = Tag{language: isIndex, locale: isIndex} + Italian Tag = Tag{language: itIndex, locale: itIndex} + Japanese Tag = Tag{language: jaIndex, locale: jaIndex} + Georgian Tag = Tag{language: kaIndex, locale: kaIndex} + Kazakh Tag = Tag{language: kkIndex, locale: kkIndex} + Khmer Tag = Tag{language: kmIndex, locale: kmIndex} + Kannada Tag = Tag{language: knIndex, locale: knIndex} + Korean Tag = Tag{language: koIndex, locale: koIndex} + Kirghiz Tag = Tag{language: kyIndex, locale: kyIndex} + Lao Tag = Tag{language: loIndex, locale: loIndex} + Lithuanian Tag = Tag{language: ltIndex, locale: ltIndex} + Latvian Tag = Tag{language: lvIndex, locale: lvIndex} + Macedonian Tag = Tag{language: mkIndex, locale: mkIndex} + Malayalam Tag = Tag{language: mlIndex, locale: mlIndex} + Mongolian Tag = Tag{language: mnIndex, locale: mnIndex} + Marathi Tag = Tag{language: mrIndex, locale: mrIndex} + Malay Tag = Tag{language: msIndex, locale: msIndex} + Burmese Tag = Tag{language: myIndex, locale: myIndex} + Nepali Tag = Tag{language: neIndex, locale: neIndex} + Dutch Tag = Tag{language: nlIndex, locale: nlIndex} + Norwegian Tag = Tag{language: noIndex, locale: noIndex} + Punjabi Tag = Tag{language: paIndex, locale: paIndex} + Polish Tag = Tag{language: plIndex, locale: plIndex} + Portuguese Tag = Tag{language: ptIndex, locale: ptIndex} + BrazilianPortuguese Tag = Tag{language: ptBRIndex, locale: ptBRIndex} + EuropeanPortuguese Tag = Tag{language: ptPTIndex, locale: ptPTIndex} + Romanian Tag = Tag{language: roIndex, locale: roIndex} + Russian Tag = Tag{language: ruIndex, locale: ruIndex} + Sinhala Tag = Tag{language: siIndex, locale: siIndex} + Slovak Tag = Tag{language: skIndex, locale: skIndex} + Slovenian Tag = Tag{language: slIndex, locale: slIndex} + Albanian Tag = Tag{language: sqIndex, locale: sqIndex} + Serbian Tag = Tag{language: srIndex, locale: srIndex} + SerbianLatin Tag = Tag{language: srLatnIndex, locale: srLatnIndex} + Swedish Tag = Tag{language: svIndex, locale: svIndex} + Swahili Tag = Tag{language: swIndex, locale: swIndex} + Tamil Tag = Tag{language: taIndex, locale: taIndex} + Telugu Tag = Tag{language: teIndex, locale: teIndex} + Thai Tag = Tag{language: thIndex, locale: thIndex} + Turkish Tag = Tag{language: trIndex, locale: trIndex} + Ukrainian Tag = Tag{language: ukIndex, locale: ukIndex} + Urdu Tag = Tag{language: urIndex, locale: urIndex} + Uzbek Tag = Tag{language: uzIndex, locale: uzIndex} + Vietnamese Tag = Tag{language: viIndex, locale: viIndex} + Chinese Tag = Tag{language: zhIndex, locale: zhIndex} + SimplifiedChinese Tag = Tag{language: zhHansIndex, locale: zhHansIndex} + TraditionalChinese Tag = Tag{language: zhHantIndex, locale: zhHantIndex} + Zulu Tag = Tag{language: zuIndex, locale: zuIndex} +) diff --git a/vendor/golang.org/x/text/internal/language/compose.go b/vendor/golang.org/x/text/internal/language/compose.go new file mode 100644 index 000000000000..4ae78e0fa5fa --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/compose.go @@ -0,0 +1,167 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "sort" + "strings" +) + +// A Builder allows constructing a Tag from individual components. +// Its main user is Compose in the top-level language package. +type Builder struct { + Tag Tag + + private string // the x extension + variants []string + extensions []string +} + +// Make returns a new Tag from the current settings. +func (b *Builder) Make() Tag { + t := b.Tag + + if len(b.extensions) > 0 || len(b.variants) > 0 { + sort.Sort(sortVariants(b.variants)) + sort.Strings(b.extensions) + + if b.private != "" { + b.extensions = append(b.extensions, b.private) + } + n := maxCoreSize + tokenLen(b.variants...) + tokenLen(b.extensions...) + buf := make([]byte, n) + p := t.genCoreBytes(buf) + t.pVariant = byte(p) + p += appendTokens(buf[p:], b.variants...) + t.pExt = uint16(p) + p += appendTokens(buf[p:], b.extensions...) + t.str = string(buf[:p]) + // We may not always need to remake the string, but when or when not + // to do so is rather tricky. + scan := makeScanner(buf[:p]) + t, _ = parse(&scan, "") + return t + + } else if b.private != "" { + t.str = b.private + t.RemakeString() + } + return t +} + +// SetTag copies all the settings from a given Tag. Any previously set values +// are discarded. +func (b *Builder) SetTag(t Tag) { + b.Tag.LangID = t.LangID + b.Tag.RegionID = t.RegionID + b.Tag.ScriptID = t.ScriptID + // TODO: optimize + b.variants = b.variants[:0] + if variants := t.Variants(); variants != "" { + for _, vr := range strings.Split(variants[1:], "-") { + b.variants = append(b.variants, vr) + } + } + b.extensions, b.private = b.extensions[:0], "" + for _, e := range t.Extensions() { + b.AddExt(e) + } +} + +// AddExt adds extension e to the tag. e must be a valid extension as returned +// by Tag.Extension. If the extension already exists, it will be discarded, +// except for a -u extension, where non-existing key-type pairs will added. +func (b *Builder) AddExt(e string) { + if e[0] == 'x' { + if b.private == "" { + b.private = e + } + return + } + for i, s := range b.extensions { + if s[0] == e[0] { + if e[0] == 'u' { + b.extensions[i] += e[1:] + } + return + } + } + b.extensions = append(b.extensions, e) +} + +// SetExt sets the extension e to the tag. e must be a valid extension as +// returned by Tag.Extension. If the extension already exists, it will be +// overwritten, except for a -u extension, where the individual key-type pairs +// will be set. +func (b *Builder) SetExt(e string) { + if e[0] == 'x' { + b.private = e + return + } + for i, s := range b.extensions { + if s[0] == e[0] { + if e[0] == 'u' { + b.extensions[i] = e + s[1:] + } else { + b.extensions[i] = e + } + return + } + } + b.extensions = append(b.extensions, e) +} + +// AddVariant adds any number of variants. +func (b *Builder) AddVariant(v ...string) { + for _, v := range v { + if v != "" { + b.variants = append(b.variants, v) + } + } +} + +// ClearVariants removes any variants previously added, including those +// copied from a Tag in SetTag. +func (b *Builder) ClearVariants() { + b.variants = b.variants[:0] +} + +// ClearExtensions removes any extensions previously added, including those +// copied from a Tag in SetTag. +func (b *Builder) ClearExtensions() { + b.private = "" + b.extensions = b.extensions[:0] +} + +func tokenLen(token ...string) (n int) { + for _, t := range token { + n += len(t) + 1 + } + return +} + +func appendTokens(b []byte, token ...string) int { + p := 0 + for _, t := range token { + b[p] = '-' + copy(b[p+1:], t) + p += 1 + len(t) + } + return p +} + +type sortVariants []string + +func (s sortVariants) Len() int { + return len(s) +} + +func (s sortVariants) Swap(i, j int) { + s[j], s[i] = s[i], s[j] +} + +func (s sortVariants) Less(i, j int) bool { + return variantIndex[s[i]] < variantIndex[s[j]] +} diff --git a/vendor/golang.org/x/text/internal/language/coverage.go b/vendor/golang.org/x/text/internal/language/coverage.go new file mode 100644 index 000000000000..9b20b88feb87 --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/coverage.go @@ -0,0 +1,28 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +// BaseLanguages returns the list of all supported base languages. It generates +// the list by traversing the internal structures. +func BaseLanguages() []Language { + base := make([]Language, 0, NumLanguages) + for i := 0; i < langNoIndexOffset; i++ { + // We included "und" already for the value 0. + if i != nonCanonicalUnd { + base = append(base, Language(i)) + } + } + i := langNoIndexOffset + for _, v := range langNoIndex { + for k := 0; k < 8; k++ { + if v&1 == 1 { + base = append(base, Language(i)) + } + v >>= 1 + i++ + } + } + return base +} diff --git a/vendor/golang.org/x/text/internal/language/language.go b/vendor/golang.org/x/text/internal/language/language.go new file mode 100644 index 000000000000..09d41c73670d --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/language.go @@ -0,0 +1,627 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go gen_common.go -output tables.go + +package language // import "golang.org/x/text/internal/language" + +// TODO: Remove above NOTE after: +// - verifying that tables are dropped correctly (most notably matcher tables). + +import ( + "errors" + "fmt" + "strings" +) + +const ( + // maxCoreSize is the maximum size of a BCP 47 tag without variants and + // extensions. Equals max lang (3) + script (4) + max reg (3) + 2 dashes. + maxCoreSize = 12 + + // max99thPercentileSize is a somewhat arbitrary buffer size that presumably + // is large enough to hold at least 99% of the BCP 47 tags. + max99thPercentileSize = 32 + + // maxSimpleUExtensionSize is the maximum size of a -u extension with one + // key-type pair. Equals len("-u-") + key (2) + dash + max value (8). + maxSimpleUExtensionSize = 14 +) + +// Tag represents a BCP 47 language tag. It is used to specify an instance of a +// specific language or locale. All language tag values are guaranteed to be +// well-formed. The zero value of Tag is Und. +type Tag struct { + // TODO: the following fields have the form TagTypeID. This name is chosen + // to allow refactoring the public package without conflicting with its + // Base, Script, and Region methods. Once the transition is fully completed + // the ID can be stripped from the name. + + LangID Language + RegionID Region + // TODO: we will soon run out of positions for ScriptID. Idea: instead of + // storing lang, region, and ScriptID codes, store only the compact index and + // have a lookup table from this code to its expansion. This greatly speeds + // up table lookup, speed up common variant cases. + // This will also immediately free up 3 extra bytes. Also, the pVariant + // field can now be moved to the lookup table, as the compact index uniquely + // determines the offset of a possible variant. + ScriptID Script + pVariant byte // offset in str, includes preceding '-' + pExt uint16 // offset of first extension, includes preceding '-' + + // str is the string representation of the Tag. It will only be used if the + // tag has variants or extensions. + str string +} + +// Make is a convenience wrapper for Parse that omits the error. +// In case of an error, a sensible default is returned. +func Make(s string) Tag { + t, _ := Parse(s) + return t +} + +// Raw returns the raw base language, script and region, without making an +// attempt to infer their values. +// TODO: consider removing +func (t Tag) Raw() (b Language, s Script, r Region) { + return t.LangID, t.ScriptID, t.RegionID +} + +// equalTags compares language, script and region subtags only. +func (t Tag) equalTags(a Tag) bool { + return t.LangID == a.LangID && t.ScriptID == a.ScriptID && t.RegionID == a.RegionID +} + +// IsRoot returns true if t is equal to language "und". +func (t Tag) IsRoot() bool { + if int(t.pVariant) < len(t.str) { + return false + } + return t.equalTags(Und) +} + +// IsPrivateUse reports whether the Tag consists solely of an IsPrivateUse use +// tag. +func (t Tag) IsPrivateUse() bool { + return t.str != "" && t.pVariant == 0 +} + +// RemakeString is used to update t.str in case lang, script or region changed. +// It is assumed that pExt and pVariant still point to the start of the +// respective parts. +func (t *Tag) RemakeString() { + if t.str == "" { + return + } + extra := t.str[t.pVariant:] + if t.pVariant > 0 { + extra = extra[1:] + } + if t.equalTags(Und) && strings.HasPrefix(extra, "x-") { + t.str = extra + t.pVariant = 0 + t.pExt = 0 + return + } + var buf [max99thPercentileSize]byte // avoid extra memory allocation in most cases. + b := buf[:t.genCoreBytes(buf[:])] + if extra != "" { + diff := len(b) - int(t.pVariant) + b = append(b, '-') + b = append(b, extra...) + t.pVariant = uint8(int(t.pVariant) + diff) + t.pExt = uint16(int(t.pExt) + diff) + } else { + t.pVariant = uint8(len(b)) + t.pExt = uint16(len(b)) + } + t.str = string(b) +} + +// genCoreBytes writes a string for the base languages, script and region tags +// to the given buffer and returns the number of bytes written. It will never +// write more than maxCoreSize bytes. +func (t *Tag) genCoreBytes(buf []byte) int { + n := t.LangID.StringToBuf(buf[:]) + if t.ScriptID != 0 { + n += copy(buf[n:], "-") + n += copy(buf[n:], t.ScriptID.String()) + } + if t.RegionID != 0 { + n += copy(buf[n:], "-") + n += copy(buf[n:], t.RegionID.String()) + } + return n +} + +// String returns the canonical string representation of the language tag. +func (t Tag) String() string { + if t.str != "" { + return t.str + } + if t.ScriptID == 0 && t.RegionID == 0 { + return t.LangID.String() + } + buf := [maxCoreSize]byte{} + return string(buf[:t.genCoreBytes(buf[:])]) +} + +// MarshalText implements encoding.TextMarshaler. +func (t Tag) MarshalText() (text []byte, err error) { + if t.str != "" { + text = append(text, t.str...) + } else if t.ScriptID == 0 && t.RegionID == 0 { + text = append(text, t.LangID.String()...) + } else { + buf := [maxCoreSize]byte{} + text = buf[:t.genCoreBytes(buf[:])] + } + return text, nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (t *Tag) UnmarshalText(text []byte) error { + tag, err := Parse(string(text)) + *t = tag + return err +} + +// Variants returns the part of the tag holding all variants or the empty string +// if there are no variants defined. +func (t Tag) Variants() string { + if t.pVariant == 0 { + return "" + } + return t.str[t.pVariant:t.pExt] +} + +// VariantOrPrivateUseTags returns variants or private use tags. +func (t Tag) VariantOrPrivateUseTags() string { + if t.pExt > 0 { + return t.str[t.pVariant:t.pExt] + } + return t.str[t.pVariant:] +} + +// HasString reports whether this tag defines more than just the raw +// components. +func (t Tag) HasString() bool { + return t.str != "" +} + +// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a +// specific language are substituted with fields from the parent language. +// The parent for a language may change for newer versions of CLDR. +func (t Tag) Parent() Tag { + if t.str != "" { + // Strip the variants and extensions. + b, s, r := t.Raw() + t = Tag{LangID: b, ScriptID: s, RegionID: r} + if t.RegionID == 0 && t.ScriptID != 0 && t.LangID != 0 { + base, _ := addTags(Tag{LangID: t.LangID}) + if base.ScriptID == t.ScriptID { + return Tag{LangID: t.LangID} + } + } + return t + } + if t.LangID != 0 { + if t.RegionID != 0 { + maxScript := t.ScriptID + if maxScript == 0 { + max, _ := addTags(t) + maxScript = max.ScriptID + } + + for i := range parents { + if Language(parents[i].lang) == t.LangID && Script(parents[i].maxScript) == maxScript { + for _, r := range parents[i].fromRegion { + if Region(r) == t.RegionID { + return Tag{ + LangID: t.LangID, + ScriptID: Script(parents[i].script), + RegionID: Region(parents[i].toRegion), + } + } + } + } + } + + // Strip the script if it is the default one. + base, _ := addTags(Tag{LangID: t.LangID}) + if base.ScriptID != maxScript { + return Tag{LangID: t.LangID, ScriptID: maxScript} + } + return Tag{LangID: t.LangID} + } else if t.ScriptID != 0 { + // The parent for an base-script pair with a non-default script is + // "und" instead of the base language. + base, _ := addTags(Tag{LangID: t.LangID}) + if base.ScriptID != t.ScriptID { + return Und + } + return Tag{LangID: t.LangID} + } + } + return Und +} + +// ParseExtension parses s as an extension and returns it on success. +func ParseExtension(s string) (ext string, err error) { + defer func() { + if recover() != nil { + ext = "" + err = ErrSyntax + } + }() + + scan := makeScannerString(s) + var end int + if n := len(scan.token); n != 1 { + return "", ErrSyntax + } + scan.toLower(0, len(scan.b)) + end = parseExtension(&scan) + if end != len(s) { + return "", ErrSyntax + } + return string(scan.b), nil +} + +// HasVariants reports whether t has variants. +func (t Tag) HasVariants() bool { + return uint16(t.pVariant) < t.pExt +} + +// HasExtensions reports whether t has extensions. +func (t Tag) HasExtensions() bool { + return int(t.pExt) < len(t.str) +} + +// Extension returns the extension of type x for tag t. It will return +// false for ok if t does not have the requested extension. The returned +// extension will be invalid in this case. +func (t Tag) Extension(x byte) (ext string, ok bool) { + for i := int(t.pExt); i < len(t.str)-1; { + var ext string + i, ext = getExtension(t.str, i) + if ext[0] == x { + return ext, true + } + } + return "", false +} + +// Extensions returns all extensions of t. +func (t Tag) Extensions() []string { + e := []string{} + for i := int(t.pExt); i < len(t.str)-1; { + var ext string + i, ext = getExtension(t.str, i) + e = append(e, ext) + } + return e +} + +// TypeForKey returns the type associated with the given key, where key and type +// are of the allowed values defined for the Unicode locale extension ('u') in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// TypeForKey will traverse the inheritance chain to get the correct value. +// +// If there are multiple types associated with a key, only the first will be +// returned. If there is no type associated with a key, it returns the empty +// string. +func (t Tag) TypeForKey(key string) string { + if _, start, end, _ := t.findTypeForKey(key); end != start { + s := t.str[start:end] + if p := strings.IndexByte(s, '-'); p >= 0 { + s = s[:p] + } + return s + } + return "" +} + +var ( + errPrivateUse = errors.New("cannot set a key on a private use tag") + errInvalidArguments = errors.New("invalid key or type") +) + +// SetTypeForKey returns a new Tag with the key set to type, where key and type +// are of the allowed values defined for the Unicode locale extension ('u') in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// An empty value removes an existing pair with the same key. +func (t Tag) SetTypeForKey(key, value string) (Tag, error) { + if t.IsPrivateUse() { + return t, errPrivateUse + } + if len(key) != 2 { + return t, errInvalidArguments + } + + // Remove the setting if value is "". + if value == "" { + start, sep, end, _ := t.findTypeForKey(key) + if start != sep { + // Remove a possible empty extension. + switch { + case t.str[start-2] != '-': // has previous elements. + case end == len(t.str), // end of string + end+2 < len(t.str) && t.str[end+2] == '-': // end of extension + start -= 2 + } + if start == int(t.pVariant) && end == len(t.str) { + t.str = "" + t.pVariant, t.pExt = 0, 0 + } else { + t.str = fmt.Sprintf("%s%s", t.str[:start], t.str[end:]) + } + } + return t, nil + } + + if len(value) < 3 || len(value) > 8 { + return t, errInvalidArguments + } + + var ( + buf [maxCoreSize + maxSimpleUExtensionSize]byte + uStart int // start of the -u extension. + ) + + // Generate the tag string if needed. + if t.str == "" { + uStart = t.genCoreBytes(buf[:]) + buf[uStart] = '-' + uStart++ + } + + // Create new key-type pair and parse it to verify. + b := buf[uStart:] + copy(b, "u-") + copy(b[2:], key) + b[4] = '-' + b = b[:5+copy(b[5:], value)] + scan := makeScanner(b) + if parseExtensions(&scan); scan.err != nil { + return t, scan.err + } + + // Assemble the replacement string. + if t.str == "" { + t.pVariant, t.pExt = byte(uStart-1), uint16(uStart-1) + t.str = string(buf[:uStart+len(b)]) + } else { + s := t.str + start, sep, end, hasExt := t.findTypeForKey(key) + if start == sep { + if hasExt { + b = b[2:] + } + t.str = fmt.Sprintf("%s-%s%s", s[:sep], b, s[end:]) + } else { + t.str = fmt.Sprintf("%s-%s%s", s[:start+3], value, s[end:]) + } + } + return t, nil +} + +// findTypeForKey returns the start and end position for the type corresponding +// to key or the point at which to insert the key-value pair if the type +// wasn't found. The hasExt return value reports whether an -u extension was present. +// Note: the extensions are typically very small and are likely to contain +// only one key-type pair. +func (t Tag) findTypeForKey(key string) (start, sep, end int, hasExt bool) { + p := int(t.pExt) + if len(key) != 2 || p == len(t.str) || p == 0 { + return p, p, p, false + } + s := t.str + + // Find the correct extension. + for p++; s[p] != 'u'; p++ { + if s[p] > 'u' { + p-- + return p, p, p, false + } + if p = nextExtension(s, p); p == len(s) { + return len(s), len(s), len(s), false + } + } + // Proceed to the hyphen following the extension name. + p++ + + // curKey is the key currently being processed. + curKey := "" + + // Iterate over keys until we get the end of a section. + for { + end = p + for p++; p < len(s) && s[p] != '-'; p++ { + } + n := p - end - 1 + if n <= 2 && curKey == key { + if sep < end { + sep++ + } + return start, sep, end, true + } + switch n { + case 0, // invalid string + 1: // next extension + return end, end, end, true + case 2: + // next key + curKey = s[end+1 : p] + if curKey > key { + return end, end, end, true + } + start = end + sep = p + } + } +} + +// ParseBase parses a 2- or 3-letter ISO 639 code. +// It returns a ValueError if s is a well-formed but unknown language identifier +// or another error if another error occurred. +func ParseBase(s string) (l Language, err error) { + defer func() { + if recover() != nil { + l = 0 + err = ErrSyntax + } + }() + + if n := len(s); n < 2 || 3 < n { + return 0, ErrSyntax + } + var buf [3]byte + return getLangID(buf[:copy(buf[:], s)]) +} + +// ParseScript parses a 4-letter ISO 15924 code. +// It returns a ValueError if s is a well-formed but unknown script identifier +// or another error if another error occurred. +func ParseScript(s string) (scr Script, err error) { + defer func() { + if recover() != nil { + scr = 0 + err = ErrSyntax + } + }() + + if len(s) != 4 { + return 0, ErrSyntax + } + var buf [4]byte + return getScriptID(script, buf[:copy(buf[:], s)]) +} + +// EncodeM49 returns the Region for the given UN M.49 code. +// It returns an error if r is not a valid code. +func EncodeM49(r int) (Region, error) { + return getRegionM49(r) +} + +// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code. +// It returns a ValueError if s is a well-formed but unknown region identifier +// or another error if another error occurred. +func ParseRegion(s string) (r Region, err error) { + defer func() { + if recover() != nil { + r = 0 + err = ErrSyntax + } + }() + + if n := len(s); n < 2 || 3 < n { + return 0, ErrSyntax + } + var buf [3]byte + return getRegionID(buf[:copy(buf[:], s)]) +} + +// IsCountry returns whether this region is a country or autonomous area. This +// includes non-standard definitions from CLDR. +func (r Region) IsCountry() bool { + if r == 0 || r.IsGroup() || r.IsPrivateUse() && r != _XK { + return false + } + return true +} + +// IsGroup returns whether this region defines a collection of regions. This +// includes non-standard definitions from CLDR. +func (r Region) IsGroup() bool { + if r == 0 { + return false + } + return int(regionInclusion[r]) < len(regionContainment) +} + +// Contains returns whether Region c is contained by Region r. It returns true +// if c == r. +func (r Region) Contains(c Region) bool { + if r == c { + return true + } + g := regionInclusion[r] + if g >= nRegionGroups { + return false + } + m := regionContainment[g] + + d := regionInclusion[c] + b := regionInclusionBits[d] + + // A contained country may belong to multiple disjoint groups. Matching any + // of these indicates containment. If the contained region is a group, it + // must strictly be a subset. + if d >= nRegionGroups { + return b&m != 0 + } + return b&^m == 0 +} + +var errNoTLD = errors.New("language: region is not a valid ccTLD") + +// TLD returns the country code top-level domain (ccTLD). UK is returned for GB. +// In all other cases it returns either the region itself or an error. +// +// This method may return an error for a region for which there exists a +// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The +// region will already be canonicalized it was obtained from a Tag that was +// obtained using any of the default methods. +func (r Region) TLD() (Region, error) { + // See http://en.wikipedia.org/wiki/Country_code_top-level_domain for the + // difference between ISO 3166-1 and IANA ccTLD. + if r == _GB { + r = _UK + } + if (r.typ() & ccTLD) == 0 { + return 0, errNoTLD + } + return r, nil +} + +// Canonicalize returns the region or a possible replacement if the region is +// deprecated. It will not return a replacement for deprecated regions that +// are split into multiple regions. +func (r Region) Canonicalize() Region { + if cr := normRegion(r); cr != 0 { + return cr + } + return r +} + +// Variant represents a registered variant of a language as defined by BCP 47. +type Variant struct { + ID uint8 + str string +} + +// ParseVariant parses and returns a Variant. An error is returned if s is not +// a valid variant. +func ParseVariant(s string) (v Variant, err error) { + defer func() { + if recover() != nil { + v = Variant{} + err = ErrSyntax + } + }() + + s = strings.ToLower(s) + if id, ok := variantIndex[s]; ok { + return Variant{id, s}, nil + } + return Variant{}, NewValueError([]byte(s)) +} + +// String returns the string representation of the variant. +func (v Variant) String() string { + return v.str +} diff --git a/vendor/golang.org/x/text/internal/language/lookup.go b/vendor/golang.org/x/text/internal/language/lookup.go new file mode 100644 index 000000000000..231b4fbdebfd --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/lookup.go @@ -0,0 +1,412 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "bytes" + "fmt" + "sort" + "strconv" + + "golang.org/x/text/internal/tag" +) + +// findIndex tries to find the given tag in idx and returns a standardized error +// if it could not be found. +func findIndex(idx tag.Index, key []byte, form string) (index int, err error) { + if !tag.FixCase(form, key) { + return 0, ErrSyntax + } + i := idx.Index(key) + if i == -1 { + return 0, NewValueError(key) + } + return i, nil +} + +func searchUint(imap []uint16, key uint16) int { + return sort.Search(len(imap), func(i int) bool { + return imap[i] >= key + }) +} + +type Language uint16 + +// getLangID returns the langID of s if s is a canonical subtag +// or langUnknown if s is not a canonical subtag. +func getLangID(s []byte) (Language, error) { + if len(s) == 2 { + return getLangISO2(s) + } + return getLangISO3(s) +} + +// TODO language normalization as well as the AliasMaps could be moved to the +// higher level package, but it is a bit tricky to separate the generation. + +func (id Language) Canonicalize() (Language, AliasType) { + return normLang(id) +} + +// normLang returns the mapped langID of id according to mapping m. +func normLang(id Language) (Language, AliasType) { + k := sort.Search(len(AliasMap), func(i int) bool { + return AliasMap[i].From >= uint16(id) + }) + if k < len(AliasMap) && AliasMap[k].From == uint16(id) { + return Language(AliasMap[k].To), AliasTypes[k] + } + return id, AliasTypeUnknown +} + +// getLangISO2 returns the langID for the given 2-letter ISO language code +// or unknownLang if this does not exist. +func getLangISO2(s []byte) (Language, error) { + if !tag.FixCase("zz", s) { + return 0, ErrSyntax + } + if i := lang.Index(s); i != -1 && lang.Elem(i)[3] != 0 { + return Language(i), nil + } + return 0, NewValueError(s) +} + +const base = 'z' - 'a' + 1 + +func strToInt(s []byte) uint { + v := uint(0) + for i := 0; i < len(s); i++ { + v *= base + v += uint(s[i] - 'a') + } + return v +} + +// converts the given integer to the original ASCII string passed to strToInt. +// len(s) must match the number of characters obtained. +func intToStr(v uint, s []byte) { + for i := len(s) - 1; i >= 0; i-- { + s[i] = byte(v%base) + 'a' + v /= base + } +} + +// getLangISO3 returns the langID for the given 3-letter ISO language code +// or unknownLang if this does not exist. +func getLangISO3(s []byte) (Language, error) { + if tag.FixCase("und", s) { + // first try to match canonical 3-letter entries + for i := lang.Index(s[:2]); i != -1; i = lang.Next(s[:2], i) { + if e := lang.Elem(i); e[3] == 0 && e[2] == s[2] { + // We treat "und" as special and always translate it to "unspecified". + // Note that ZZ and Zzzz are private use and are not treated as + // unspecified by default. + id := Language(i) + if id == nonCanonicalUnd { + return 0, nil + } + return id, nil + } + } + if i := altLangISO3.Index(s); i != -1 { + return Language(altLangIndex[altLangISO3.Elem(i)[3]]), nil + } + n := strToInt(s) + if langNoIndex[n/8]&(1<<(n%8)) != 0 { + return Language(n) + langNoIndexOffset, nil + } + // Check for non-canonical uses of ISO3. + for i := lang.Index(s[:1]); i != -1; i = lang.Next(s[:1], i) { + if e := lang.Elem(i); e[2] == s[1] && e[3] == s[2] { + return Language(i), nil + } + } + return 0, NewValueError(s) + } + return 0, ErrSyntax +} + +// StringToBuf writes the string to b and returns the number of bytes +// written. cap(b) must be >= 3. +func (id Language) StringToBuf(b []byte) int { + if id >= langNoIndexOffset { + intToStr(uint(id)-langNoIndexOffset, b[:3]) + return 3 + } else if id == 0 { + return copy(b, "und") + } + l := lang[id<<2:] + if l[3] == 0 { + return copy(b, l[:3]) + } + return copy(b, l[:2]) +} + +// String returns the BCP 47 representation of the langID. +// Use b as variable name, instead of id, to ensure the variable +// used is consistent with that of Base in which this type is embedded. +func (b Language) String() string { + if b == 0 { + return "und" + } else if b >= langNoIndexOffset { + b -= langNoIndexOffset + buf := [3]byte{} + intToStr(uint(b), buf[:]) + return string(buf[:]) + } + l := lang.Elem(int(b)) + if l[3] == 0 { + return l[:3] + } + return l[:2] +} + +// ISO3 returns the ISO 639-3 language code. +func (b Language) ISO3() string { + if b == 0 || b >= langNoIndexOffset { + return b.String() + } + l := lang.Elem(int(b)) + if l[3] == 0 { + return l[:3] + } else if l[2] == 0 { + return altLangISO3.Elem(int(l[3]))[:3] + } + // This allocation will only happen for 3-letter ISO codes + // that are non-canonical BCP 47 language identifiers. + return l[0:1] + l[2:4] +} + +// IsPrivateUse reports whether this language code is reserved for private use. +func (b Language) IsPrivateUse() bool { + return langPrivateStart <= b && b <= langPrivateEnd +} + +// SuppressScript returns the script marked as SuppressScript in the IANA +// language tag repository, or 0 if there is no such script. +func (b Language) SuppressScript() Script { + if b < langNoIndexOffset { + return Script(suppressScript[b]) + } + return 0 +} + +type Region uint16 + +// getRegionID returns the region id for s if s is a valid 2-letter region code +// or unknownRegion. +func getRegionID(s []byte) (Region, error) { + if len(s) == 3 { + if isAlpha(s[0]) { + return getRegionISO3(s) + } + if i, err := strconv.ParseUint(string(s), 10, 10); err == nil { + return getRegionM49(int(i)) + } + } + return getRegionISO2(s) +} + +// getRegionISO2 returns the regionID for the given 2-letter ISO country code +// or unknownRegion if this does not exist. +func getRegionISO2(s []byte) (Region, error) { + i, err := findIndex(regionISO, s, "ZZ") + if err != nil { + return 0, err + } + return Region(i) + isoRegionOffset, nil +} + +// getRegionISO3 returns the regionID for the given 3-letter ISO country code +// or unknownRegion if this does not exist. +func getRegionISO3(s []byte) (Region, error) { + if tag.FixCase("ZZZ", s) { + for i := regionISO.Index(s[:1]); i != -1; i = regionISO.Next(s[:1], i) { + if e := regionISO.Elem(i); e[2] == s[1] && e[3] == s[2] { + return Region(i) + isoRegionOffset, nil + } + } + for i := 0; i < len(altRegionISO3); i += 3 { + if tag.Compare(altRegionISO3[i:i+3], s) == 0 { + return Region(altRegionIDs[i/3]), nil + } + } + return 0, NewValueError(s) + } + return 0, ErrSyntax +} + +func getRegionM49(n int) (Region, error) { + if 0 < n && n <= 999 { + const ( + searchBits = 7 + regionBits = 9 + regionMask = 1<> searchBits + buf := fromM49[m49Index[idx]:m49Index[idx+1]] + val := uint16(n) << regionBits // we rely on bits shifting out + i := sort.Search(len(buf), func(i int) bool { + return buf[i] >= val + }) + if r := fromM49[int(m49Index[idx])+i]; r&^regionMask == val { + return Region(r & regionMask), nil + } + } + var e ValueError + fmt.Fprint(bytes.NewBuffer([]byte(e.v[:])), n) + return 0, e +} + +// normRegion returns a region if r is deprecated or 0 otherwise. +// TODO: consider supporting BYS (-> BLR), CSK (-> 200 or CZ), PHI (-> PHL) and AFI (-> DJ). +// TODO: consider mapping split up regions to new most populous one (like CLDR). +func normRegion(r Region) Region { + m := regionOldMap + k := sort.Search(len(m), func(i int) bool { + return m[i].From >= uint16(r) + }) + if k < len(m) && m[k].From == uint16(r) { + return Region(m[k].To) + } + return 0 +} + +const ( + iso3166UserAssigned = 1 << iota + ccTLD + bcp47Region +) + +func (r Region) typ() byte { + return regionTypes[r] +} + +// String returns the BCP 47 representation for the region. +// It returns "ZZ" for an unspecified region. +func (r Region) String() string { + if r < isoRegionOffset { + if r == 0 { + return "ZZ" + } + return fmt.Sprintf("%03d", r.M49()) + } + r -= isoRegionOffset + return regionISO.Elem(int(r))[:2] +} + +// ISO3 returns the 3-letter ISO code of r. +// Note that not all regions have a 3-letter ISO code. +// In such cases this method returns "ZZZ". +func (r Region) ISO3() string { + if r < isoRegionOffset { + return "ZZZ" + } + r -= isoRegionOffset + reg := regionISO.Elem(int(r)) + switch reg[2] { + case 0: + return altRegionISO3[reg[3]:][:3] + case ' ': + return "ZZZ" + } + return reg[0:1] + reg[2:4] +} + +// M49 returns the UN M.49 encoding of r, or 0 if this encoding +// is not defined for r. +func (r Region) M49() int { + return int(m49[r]) +} + +// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This +// may include private-use tags that are assigned by CLDR and used in this +// implementation. So IsPrivateUse and IsCountry can be simultaneously true. +func (r Region) IsPrivateUse() bool { + return r.typ()&iso3166UserAssigned != 0 +} + +type Script uint16 + +// getScriptID returns the script id for string s. It assumes that s +// is of the format [A-Z][a-z]{3}. +func getScriptID(idx tag.Index, s []byte) (Script, error) { + i, err := findIndex(idx, s, "Zzzz") + return Script(i), err +} + +// String returns the script code in title case. +// It returns "Zzzz" for an unspecified script. +func (s Script) String() string { + if s == 0 { + return "Zzzz" + } + return script.Elem(int(s)) +} + +// IsPrivateUse reports whether this script code is reserved for private use. +func (s Script) IsPrivateUse() bool { + return _Qaaa <= s && s <= _Qabx +} + +const ( + maxAltTaglen = len("en-US-POSIX") + maxLen = maxAltTaglen +) + +var ( + // grandfatheredMap holds a mapping from legacy and grandfathered tags to + // their base language or index to more elaborate tag. + grandfatheredMap = map[[maxLen]byte]int16{ + [maxLen]byte{'a', 'r', 't', '-', 'l', 'o', 'j', 'b', 'a', 'n'}: _jbo, // art-lojban + [maxLen]byte{'i', '-', 'a', 'm', 'i'}: _ami, // i-ami + [maxLen]byte{'i', '-', 'b', 'n', 'n'}: _bnn, // i-bnn + [maxLen]byte{'i', '-', 'h', 'a', 'k'}: _hak, // i-hak + [maxLen]byte{'i', '-', 'k', 'l', 'i', 'n', 'g', 'o', 'n'}: _tlh, // i-klingon + [maxLen]byte{'i', '-', 'l', 'u', 'x'}: _lb, // i-lux + [maxLen]byte{'i', '-', 'n', 'a', 'v', 'a', 'j', 'o'}: _nv, // i-navajo + [maxLen]byte{'i', '-', 'p', 'w', 'n'}: _pwn, // i-pwn + [maxLen]byte{'i', '-', 't', 'a', 'o'}: _tao, // i-tao + [maxLen]byte{'i', '-', 't', 'a', 'y'}: _tay, // i-tay + [maxLen]byte{'i', '-', 't', 's', 'u'}: _tsu, // i-tsu + [maxLen]byte{'n', 'o', '-', 'b', 'o', 'k'}: _nb, // no-bok + [maxLen]byte{'n', 'o', '-', 'n', 'y', 'n'}: _nn, // no-nyn + [maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'f', 'r'}: _sfb, // sgn-BE-FR + [maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'n', 'l'}: _vgt, // sgn-BE-NL + [maxLen]byte{'s', 'g', 'n', '-', 'c', 'h', '-', 'd', 'e'}: _sgg, // sgn-CH-DE + [maxLen]byte{'z', 'h', '-', 'g', 'u', 'o', 'y', 'u'}: _cmn, // zh-guoyu + [maxLen]byte{'z', 'h', '-', 'h', 'a', 'k', 'k', 'a'}: _hak, // zh-hakka + [maxLen]byte{'z', 'h', '-', 'm', 'i', 'n', '-', 'n', 'a', 'n'}: _nan, // zh-min-nan + [maxLen]byte{'z', 'h', '-', 'x', 'i', 'a', 'n', 'g'}: _hsn, // zh-xiang + + // Grandfathered tags with no modern replacement will be converted as + // follows: + [maxLen]byte{'c', 'e', 'l', '-', 'g', 'a', 'u', 'l', 'i', 's', 'h'}: -1, // cel-gaulish + [maxLen]byte{'e', 'n', '-', 'g', 'b', '-', 'o', 'e', 'd'}: -2, // en-GB-oed + [maxLen]byte{'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'}: -3, // i-default + [maxLen]byte{'i', '-', 'e', 'n', 'o', 'c', 'h', 'i', 'a', 'n'}: -4, // i-enochian + [maxLen]byte{'i', '-', 'm', 'i', 'n', 'g', 'o'}: -5, // i-mingo + [maxLen]byte{'z', 'h', '-', 'm', 'i', 'n'}: -6, // zh-min + + // CLDR-specific tag. + [maxLen]byte{'r', 'o', 'o', 't'}: 0, // root + [maxLen]byte{'e', 'n', '-', 'u', 's', '-', 'p', 'o', 's', 'i', 'x'}: -7, // en_US_POSIX" + } + + altTagIndex = [...]uint8{0, 17, 31, 45, 61, 74, 86, 102} + + altTags = "xtg-x-cel-gaulishen-GB-oxendicten-x-i-defaultund-x-i-enochiansee-x-i-mingonan-x-zh-minen-US-u-va-posix" +) + +func grandfathered(s [maxAltTaglen]byte) (t Tag, ok bool) { + if v, ok := grandfatheredMap[s]; ok { + if v < 0 { + return Make(altTags[altTagIndex[-v-1]:altTagIndex[-v]]), true + } + t.LangID = Language(v) + return t, true + } + return t, false +} diff --git a/vendor/golang.org/x/text/internal/language/match.go b/vendor/golang.org/x/text/internal/language/match.go new file mode 100644 index 000000000000..75a2dbca7643 --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/match.go @@ -0,0 +1,226 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import "errors" + +type scriptRegionFlags uint8 + +const ( + isList = 1 << iota + scriptInFrom + regionInFrom +) + +func (t *Tag) setUndefinedLang(id Language) { + if t.LangID == 0 { + t.LangID = id + } +} + +func (t *Tag) setUndefinedScript(id Script) { + if t.ScriptID == 0 { + t.ScriptID = id + } +} + +func (t *Tag) setUndefinedRegion(id Region) { + if t.RegionID == 0 || t.RegionID.Contains(id) { + t.RegionID = id + } +} + +// ErrMissingLikelyTagsData indicates no information was available +// to compute likely values of missing tags. +var ErrMissingLikelyTagsData = errors.New("missing likely tags data") + +// addLikelySubtags sets subtags to their most likely value, given the locale. +// In most cases this means setting fields for unknown values, but in some +// cases it may alter a value. It returns an ErrMissingLikelyTagsData error +// if the given locale cannot be expanded. +func (t Tag) addLikelySubtags() (Tag, error) { + id, err := addTags(t) + if err != nil { + return t, err + } else if id.equalTags(t) { + return t, nil + } + id.RemakeString() + return id, nil +} + +// specializeRegion attempts to specialize a group region. +func specializeRegion(t *Tag) bool { + if i := regionInclusion[t.RegionID]; i < nRegionGroups { + x := likelyRegionGroup[i] + if Language(x.lang) == t.LangID && Script(x.script) == t.ScriptID { + t.RegionID = Region(x.region) + } + return true + } + return false +} + +// Maximize returns a new tag with missing tags filled in. +func (t Tag) Maximize() (Tag, error) { + return addTags(t) +} + +func addTags(t Tag) (Tag, error) { + // We leave private use identifiers alone. + if t.IsPrivateUse() { + return t, nil + } + if t.ScriptID != 0 && t.RegionID != 0 { + if t.LangID != 0 { + // already fully specified + specializeRegion(&t) + return t, nil + } + // Search matches for und-script-region. Note that for these cases + // region will never be a group so there is no need to check for this. + list := likelyRegion[t.RegionID : t.RegionID+1] + if x := list[0]; x.flags&isList != 0 { + list = likelyRegionList[x.lang : x.lang+uint16(x.script)] + } + for _, x := range list { + // Deviating from the spec. See match_test.go for details. + if Script(x.script) == t.ScriptID { + t.setUndefinedLang(Language(x.lang)) + return t, nil + } + } + } + if t.LangID != 0 { + // Search matches for lang-script and lang-region, where lang != und. + if t.LangID < langNoIndexOffset { + x := likelyLang[t.LangID] + if x.flags&isList != 0 { + list := likelyLangList[x.region : x.region+uint16(x.script)] + if t.ScriptID != 0 { + for _, x := range list { + if Script(x.script) == t.ScriptID && x.flags&scriptInFrom != 0 { + t.setUndefinedRegion(Region(x.region)) + return t, nil + } + } + } else if t.RegionID != 0 { + count := 0 + goodScript := true + tt := t + for _, x := range list { + // We visit all entries for which the script was not + // defined, including the ones where the region was not + // defined. This allows for proper disambiguation within + // regions. + if x.flags&scriptInFrom == 0 && t.RegionID.Contains(Region(x.region)) { + tt.RegionID = Region(x.region) + tt.setUndefinedScript(Script(x.script)) + goodScript = goodScript && tt.ScriptID == Script(x.script) + count++ + } + } + if count == 1 { + return tt, nil + } + // Even if we fail to find a unique Region, we might have + // an unambiguous script. + if goodScript { + t.ScriptID = tt.ScriptID + } + } + } + } + } else { + // Search matches for und-script. + if t.ScriptID != 0 { + x := likelyScript[t.ScriptID] + if x.region != 0 { + t.setUndefinedRegion(Region(x.region)) + t.setUndefinedLang(Language(x.lang)) + return t, nil + } + } + // Search matches for und-region. If und-script-region exists, it would + // have been found earlier. + if t.RegionID != 0 { + if i := regionInclusion[t.RegionID]; i < nRegionGroups { + x := likelyRegionGroup[i] + if x.region != 0 { + t.setUndefinedLang(Language(x.lang)) + t.setUndefinedScript(Script(x.script)) + t.RegionID = Region(x.region) + } + } else { + x := likelyRegion[t.RegionID] + if x.flags&isList != 0 { + x = likelyRegionList[x.lang] + } + if x.script != 0 && x.flags != scriptInFrom { + t.setUndefinedLang(Language(x.lang)) + t.setUndefinedScript(Script(x.script)) + return t, nil + } + } + } + } + + // Search matches for lang. + if t.LangID < langNoIndexOffset { + x := likelyLang[t.LangID] + if x.flags&isList != 0 { + x = likelyLangList[x.region] + } + if x.region != 0 { + t.setUndefinedScript(Script(x.script)) + t.setUndefinedRegion(Region(x.region)) + } + specializeRegion(&t) + if t.LangID == 0 { + t.LangID = _en // default language + } + return t, nil + } + return t, ErrMissingLikelyTagsData +} + +func (t *Tag) setTagsFrom(id Tag) { + t.LangID = id.LangID + t.ScriptID = id.ScriptID + t.RegionID = id.RegionID +} + +// minimize removes the region or script subtags from t such that +// t.addLikelySubtags() == t.minimize().addLikelySubtags(). +func (t Tag) minimize() (Tag, error) { + t, err := minimizeTags(t) + if err != nil { + return t, err + } + t.RemakeString() + return t, nil +} + +// minimizeTags mimics the behavior of the ICU 51 C implementation. +func minimizeTags(t Tag) (Tag, error) { + if t.equalTags(Und) { + return t, nil + } + max, err := addTags(t) + if err != nil { + return t, err + } + for _, id := range [...]Tag{ + {LangID: t.LangID}, + {LangID: t.LangID, RegionID: t.RegionID}, + {LangID: t.LangID, ScriptID: t.ScriptID}, + } { + if x, err := addTags(id); err == nil && max.equalTags(x) { + t.setTagsFrom(id) + break + } + } + return t, nil +} diff --git a/vendor/golang.org/x/text/internal/language/parse.go b/vendor/golang.org/x/text/internal/language/parse.go new file mode 100644 index 000000000000..aad1e0acf77c --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/parse.go @@ -0,0 +1,608 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "bytes" + "errors" + "fmt" + "sort" + + "golang.org/x/text/internal/tag" +) + +// isAlpha returns true if the byte is not a digit. +// b must be an ASCII letter or digit. +func isAlpha(b byte) bool { + return b > '9' +} + +// isAlphaNum returns true if the string contains only ASCII letters or digits. +func isAlphaNum(s []byte) bool { + for _, c := range s { + if !('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9') { + return false + } + } + return true +} + +// ErrSyntax is returned by any of the parsing functions when the +// input is not well-formed, according to BCP 47. +// TODO: return the position at which the syntax error occurred? +var ErrSyntax = errors.New("language: tag is not well-formed") + +// ErrDuplicateKey is returned when a tag contains the same key twice with +// different values in the -u section. +var ErrDuplicateKey = errors.New("language: different values for same key in -u extension") + +// ValueError is returned by any of the parsing functions when the +// input is well-formed but the respective subtag is not recognized +// as a valid value. +type ValueError struct { + v [8]byte +} + +// NewValueError creates a new ValueError. +func NewValueError(tag []byte) ValueError { + var e ValueError + copy(e.v[:], tag) + return e +} + +func (e ValueError) tag() []byte { + n := bytes.IndexByte(e.v[:], 0) + if n == -1 { + n = 8 + } + return e.v[:n] +} + +// Error implements the error interface. +func (e ValueError) Error() string { + return fmt.Sprintf("language: subtag %q is well-formed but unknown", e.tag()) +} + +// Subtag returns the subtag for which the error occurred. +func (e ValueError) Subtag() string { + return string(e.tag()) +} + +// scanner is used to scan BCP 47 tokens, which are separated by _ or -. +type scanner struct { + b []byte + bytes [max99thPercentileSize]byte + token []byte + start int // start position of the current token + end int // end position of the current token + next int // next point for scan + err error + done bool +} + +func makeScannerString(s string) scanner { + scan := scanner{} + if len(s) <= len(scan.bytes) { + scan.b = scan.bytes[:copy(scan.bytes[:], s)] + } else { + scan.b = []byte(s) + } + scan.init() + return scan +} + +// makeScanner returns a scanner using b as the input buffer. +// b is not copied and may be modified by the scanner routines. +func makeScanner(b []byte) scanner { + scan := scanner{b: b} + scan.init() + return scan +} + +func (s *scanner) init() { + for i, c := range s.b { + if c == '_' { + s.b[i] = '-' + } + } + s.scan() +} + +// restToLower converts the string between start and end to lower case. +func (s *scanner) toLower(start, end int) { + for i := start; i < end; i++ { + c := s.b[i] + if 'A' <= c && c <= 'Z' { + s.b[i] += 'a' - 'A' + } + } +} + +func (s *scanner) setError(e error) { + if s.err == nil || (e == ErrSyntax && s.err != ErrSyntax) { + s.err = e + } +} + +// resizeRange shrinks or grows the array at position oldStart such that +// a new string of size newSize can fit between oldStart and oldEnd. +// Sets the scan point to after the resized range. +func (s *scanner) resizeRange(oldStart, oldEnd, newSize int) { + s.start = oldStart + if end := oldStart + newSize; end != oldEnd { + diff := end - oldEnd + var b []byte + if n := len(s.b) + diff; n > cap(s.b) { + b = make([]byte, n) + copy(b, s.b[:oldStart]) + } else { + b = s.b[:n] + } + copy(b[end:], s.b[oldEnd:]) + s.b = b + s.next = end + (s.next - s.end) + s.end = end + } +} + +// replace replaces the current token with repl. +func (s *scanner) replace(repl string) { + s.resizeRange(s.start, s.end, len(repl)) + copy(s.b[s.start:], repl) +} + +// gobble removes the current token from the input. +// Caller must call scan after calling gobble. +func (s *scanner) gobble(e error) { + s.setError(e) + if s.start == 0 { + s.b = s.b[:+copy(s.b, s.b[s.next:])] + s.end = 0 + } else { + s.b = s.b[:s.start-1+copy(s.b[s.start-1:], s.b[s.end:])] + s.end = s.start - 1 + } + s.next = s.start +} + +// deleteRange removes the given range from s.b before the current token. +func (s *scanner) deleteRange(start, end int) { + s.b = s.b[:start+copy(s.b[start:], s.b[end:])] + diff := end - start + s.next -= diff + s.start -= diff + s.end -= diff +} + +// scan parses the next token of a BCP 47 string. Tokens that are larger +// than 8 characters or include non-alphanumeric characters result in an error +// and are gobbled and removed from the output. +// It returns the end position of the last token consumed. +func (s *scanner) scan() (end int) { + end = s.end + s.token = nil + for s.start = s.next; s.next < len(s.b); { + i := bytes.IndexByte(s.b[s.next:], '-') + if i == -1 { + s.end = len(s.b) + s.next = len(s.b) + i = s.end - s.start + } else { + s.end = s.next + i + s.next = s.end + 1 + } + token := s.b[s.start:s.end] + if i < 1 || i > 8 || !isAlphaNum(token) { + s.gobble(ErrSyntax) + continue + } + s.token = token + return end + } + if n := len(s.b); n > 0 && s.b[n-1] == '-' { + s.setError(ErrSyntax) + s.b = s.b[:len(s.b)-1] + } + s.done = true + return end +} + +// acceptMinSize parses multiple tokens of the given size or greater. +// It returns the end position of the last token consumed. +func (s *scanner) acceptMinSize(min int) (end int) { + end = s.end + s.scan() + for ; len(s.token) >= min; s.scan() { + end = s.end + } + return end +} + +// Parse parses the given BCP 47 string and returns a valid Tag. If parsing +// failed it returns an error and any part of the tag that could be parsed. +// If parsing succeeded but an unknown value was found, it returns +// ValueError. The Tag returned in this case is just stripped of the unknown +// value. All other values are preserved. It accepts tags in the BCP 47 format +// and extensions to this standard defined in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +func Parse(s string) (t Tag, err error) { + // TODO: consider supporting old-style locale key-value pairs. + if s == "" { + return Und, ErrSyntax + } + defer func() { + if recover() != nil { + t = Und + err = ErrSyntax + return + } + }() + if len(s) <= maxAltTaglen { + b := [maxAltTaglen]byte{} + for i, c := range s { + // Generating invalid UTF-8 is okay as it won't match. + if 'A' <= c && c <= 'Z' { + c += 'a' - 'A' + } else if c == '_' { + c = '-' + } + b[i] = byte(c) + } + if t, ok := grandfathered(b); ok { + return t, nil + } + } + scan := makeScannerString(s) + return parse(&scan, s) +} + +func parse(scan *scanner, s string) (t Tag, err error) { + t = Und + var end int + if n := len(scan.token); n <= 1 { + scan.toLower(0, len(scan.b)) + if n == 0 || scan.token[0] != 'x' { + return t, ErrSyntax + } + end = parseExtensions(scan) + } else if n >= 4 { + return Und, ErrSyntax + } else { // the usual case + t, end = parseTag(scan, true) + if n := len(scan.token); n == 1 { + t.pExt = uint16(end) + end = parseExtensions(scan) + } else if end < len(scan.b) { + scan.setError(ErrSyntax) + scan.b = scan.b[:end] + } + } + if int(t.pVariant) < len(scan.b) { + if end < len(s) { + s = s[:end] + } + if len(s) > 0 && tag.Compare(s, scan.b) == 0 { + t.str = s + } else { + t.str = string(scan.b) + } + } else { + t.pVariant, t.pExt = 0, 0 + } + return t, scan.err +} + +// parseTag parses language, script, region and variants. +// It returns a Tag and the end position in the input that was parsed. +// If doNorm is true, then - will be normalized to . +func parseTag(scan *scanner, doNorm bool) (t Tag, end int) { + var e error + // TODO: set an error if an unknown lang, script or region is encountered. + t.LangID, e = getLangID(scan.token) + scan.setError(e) + scan.replace(t.LangID.String()) + langStart := scan.start + end = scan.scan() + for len(scan.token) == 3 && isAlpha(scan.token[0]) { + // From http://tools.ietf.org/html/bcp47, - tags are equivalent + // to a tag of the form . + if doNorm { + lang, e := getLangID(scan.token) + if lang != 0 { + t.LangID = lang + langStr := lang.String() + copy(scan.b[langStart:], langStr) + scan.b[langStart+len(langStr)] = '-' + scan.start = langStart + len(langStr) + 1 + } + scan.gobble(e) + } + end = scan.scan() + } + if len(scan.token) == 4 && isAlpha(scan.token[0]) { + t.ScriptID, e = getScriptID(script, scan.token) + if t.ScriptID == 0 { + scan.gobble(e) + } + end = scan.scan() + } + if n := len(scan.token); n >= 2 && n <= 3 { + t.RegionID, e = getRegionID(scan.token) + if t.RegionID == 0 { + scan.gobble(e) + } else { + scan.replace(t.RegionID.String()) + } + end = scan.scan() + } + scan.toLower(scan.start, len(scan.b)) + t.pVariant = byte(end) + end = parseVariants(scan, end, t) + t.pExt = uint16(end) + return t, end +} + +var separator = []byte{'-'} + +// parseVariants scans tokens as long as each token is a valid variant string. +// Duplicate variants are removed. +func parseVariants(scan *scanner, end int, t Tag) int { + start := scan.start + varIDBuf := [4]uint8{} + variantBuf := [4][]byte{} + varID := varIDBuf[:0] + variant := variantBuf[:0] + last := -1 + needSort := false + for ; len(scan.token) >= 4; scan.scan() { + // TODO: measure the impact of needing this conversion and redesign + // the data structure if there is an issue. + v, ok := variantIndex[string(scan.token)] + if !ok { + // unknown variant + // TODO: allow user-defined variants? + scan.gobble(NewValueError(scan.token)) + continue + } + varID = append(varID, v) + variant = append(variant, scan.token) + if !needSort { + if last < int(v) { + last = int(v) + } else { + needSort = true + // There is no legal combinations of more than 7 variants + // (and this is by no means a useful sequence). + const maxVariants = 8 + if len(varID) > maxVariants { + break + } + } + } + end = scan.end + } + if needSort { + sort.Sort(variantsSort{varID, variant}) + k, l := 0, -1 + for i, v := range varID { + w := int(v) + if l == w { + // Remove duplicates. + continue + } + varID[k] = varID[i] + variant[k] = variant[i] + k++ + l = w + } + if str := bytes.Join(variant[:k], separator); len(str) == 0 { + end = start - 1 + } else { + scan.resizeRange(start, end, len(str)) + copy(scan.b[scan.start:], str) + end = scan.end + } + } + return end +} + +type variantsSort struct { + i []uint8 + v [][]byte +} + +func (s variantsSort) Len() int { + return len(s.i) +} + +func (s variantsSort) Swap(i, j int) { + s.i[i], s.i[j] = s.i[j], s.i[i] + s.v[i], s.v[j] = s.v[j], s.v[i] +} + +func (s variantsSort) Less(i, j int) bool { + return s.i[i] < s.i[j] +} + +type bytesSort struct { + b [][]byte + n int // first n bytes to compare +} + +func (b bytesSort) Len() int { + return len(b.b) +} + +func (b bytesSort) Swap(i, j int) { + b.b[i], b.b[j] = b.b[j], b.b[i] +} + +func (b bytesSort) Less(i, j int) bool { + for k := 0; k < b.n; k++ { + if b.b[i][k] == b.b[j][k] { + continue + } + return b.b[i][k] < b.b[j][k] + } + return false +} + +// parseExtensions parses and normalizes the extensions in the buffer. +// It returns the last position of scan.b that is part of any extension. +// It also trims scan.b to remove excess parts accordingly. +func parseExtensions(scan *scanner) int { + start := scan.start + exts := [][]byte{} + private := []byte{} + end := scan.end + for len(scan.token) == 1 { + extStart := scan.start + ext := scan.token[0] + end = parseExtension(scan) + extension := scan.b[extStart:end] + if len(extension) < 3 || (ext != 'x' && len(extension) < 4) { + scan.setError(ErrSyntax) + end = extStart + continue + } else if start == extStart && (ext == 'x' || scan.start == len(scan.b)) { + scan.b = scan.b[:end] + return end + } else if ext == 'x' { + private = extension + break + } + exts = append(exts, extension) + } + sort.Sort(bytesSort{exts, 1}) + if len(private) > 0 { + exts = append(exts, private) + } + scan.b = scan.b[:start] + if len(exts) > 0 { + scan.b = append(scan.b, bytes.Join(exts, separator)...) + } else if start > 0 { + // Strip trailing '-'. + scan.b = scan.b[:start-1] + } + return end +} + +// parseExtension parses a single extension and returns the position of +// the extension end. +func parseExtension(scan *scanner) int { + start, end := scan.start, scan.end + switch scan.token[0] { + case 'u': // https://www.ietf.org/rfc/rfc6067.txt + attrStart := end + scan.scan() + for last := []byte{}; len(scan.token) > 2; scan.scan() { + if bytes.Compare(scan.token, last) != -1 { + // Attributes are unsorted. Start over from scratch. + p := attrStart + 1 + scan.next = p + attrs := [][]byte{} + for scan.scan(); len(scan.token) > 2; scan.scan() { + attrs = append(attrs, scan.token) + end = scan.end + } + sort.Sort(bytesSort{attrs, 3}) + copy(scan.b[p:], bytes.Join(attrs, separator)) + break + } + last = scan.token + end = scan.end + } + // Scan key-type sequences. A key is of length 2 and may be followed + // by 0 or more "type" subtags from 3 to the maximum of 8 letters. + var last, key []byte + for attrEnd := end; len(scan.token) == 2; last = key { + key = scan.token + end = scan.end + for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() { + end = scan.end + } + // TODO: check key value validity + if bytes.Compare(key, last) != 1 || scan.err != nil { + // We have an invalid key or the keys are not sorted. + // Start scanning keys from scratch and reorder. + p := attrEnd + 1 + scan.next = p + keys := [][]byte{} + for scan.scan(); len(scan.token) == 2; { + keyStart := scan.start + end = scan.end + for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() { + end = scan.end + } + keys = append(keys, scan.b[keyStart:end]) + } + sort.Stable(bytesSort{keys, 2}) + if n := len(keys); n > 0 { + k := 0 + for i := 1; i < n; i++ { + if !bytes.Equal(keys[k][:2], keys[i][:2]) { + k++ + keys[k] = keys[i] + } else if !bytes.Equal(keys[k], keys[i]) { + scan.setError(ErrDuplicateKey) + } + } + keys = keys[:k+1] + } + reordered := bytes.Join(keys, separator) + if e := p + len(reordered); e < end { + scan.deleteRange(e, end) + end = e + } + copy(scan.b[p:], reordered) + break + } + } + case 't': // https://www.ietf.org/rfc/rfc6497.txt + scan.scan() + if n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) { + _, end = parseTag(scan, false) + scan.toLower(start, end) + } + for len(scan.token) == 2 && !isAlpha(scan.token[1]) { + end = scan.acceptMinSize(3) + } + case 'x': + end = scan.acceptMinSize(1) + default: + end = scan.acceptMinSize(2) + } + return end +} + +// getExtension returns the name, body and end position of the extension. +func getExtension(s string, p int) (end int, ext string) { + if s[p] == '-' { + p++ + } + if s[p] == 'x' { + return len(s), s[p:] + } + end = nextExtension(s, p) + return end, s[p:end] +} + +// nextExtension finds the next extension within the string, searching +// for the -- pattern from position p. +// In the fast majority of cases, language tags will have at most +// one extension and extensions tend to be small. +func nextExtension(s string, p int) int { + for n := len(s) - 3; p < n; { + if s[p] == '-' { + if s[p+2] == '-' { + return p + } + p += 3 + } else { + p++ + } + } + return len(s) +} diff --git a/vendor/golang.org/x/text/internal/language/tables.go b/vendor/golang.org/x/text/internal/language/tables.go new file mode 100644 index 000000000000..14167e74e40b --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/tables.go @@ -0,0 +1,3494 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package language + +import "golang.org/x/text/internal/tag" + +// CLDRVersion is the CLDR version from which the tables in this package are derived. +const CLDRVersion = "32" + +const NumLanguages = 8798 + +const NumScripts = 261 + +const NumRegions = 358 + +type FromTo struct { + From uint16 + To uint16 +} + +const nonCanonicalUnd = 1201 +const ( + _af = 22 + _am = 39 + _ar = 58 + _az = 88 + _bg = 126 + _bn = 165 + _ca = 215 + _cs = 250 + _da = 257 + _de = 269 + _el = 310 + _en = 313 + _es = 318 + _et = 320 + _fa = 328 + _fi = 337 + _fil = 339 + _fr = 350 + _gu = 420 + _he = 444 + _hi = 446 + _hr = 465 + _hu = 469 + _hy = 471 + _id = 481 + _is = 504 + _it = 505 + _ja = 512 + _ka = 528 + _kk = 578 + _km = 586 + _kn = 593 + _ko = 596 + _ky = 650 + _lo = 696 + _lt = 704 + _lv = 711 + _mk = 767 + _ml = 772 + _mn = 779 + _mo = 784 + _mr = 795 + _ms = 799 + _mul = 806 + _my = 817 + _nb = 839 + _ne = 849 + _nl = 871 + _no = 879 + _pa = 925 + _pl = 947 + _pt = 960 + _ro = 988 + _ru = 994 + _sh = 1031 + _si = 1036 + _sk = 1042 + _sl = 1046 + _sq = 1073 + _sr = 1074 + _sv = 1092 + _sw = 1093 + _ta = 1104 + _te = 1121 + _th = 1131 + _tl = 1146 + _tn = 1152 + _tr = 1162 + _uk = 1198 + _ur = 1204 + _uz = 1212 + _vi = 1219 + _zh = 1321 + _zu = 1327 + _jbo = 515 + _ami = 1650 + _bnn = 2357 + _hak = 438 + _tlh = 14467 + _lb = 661 + _nv = 899 + _pwn = 12055 + _tao = 14188 + _tay = 14198 + _tsu = 14662 + _nn = 874 + _sfb = 13629 + _vgt = 15701 + _sgg = 13660 + _cmn = 3007 + _nan = 835 + _hsn = 467 +) + +const langPrivateStart = 0x2f72 + +const langPrivateEnd = 0x3179 + +// lang holds an alphabetically sorted list of ISO-639 language identifiers. +// All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag. +// For 2-byte language identifiers, the two successive bytes have the following meaning: +// - if the first letter of the 2- and 3-letter ISO codes are the same: +// the second and third letter of the 3-letter ISO code. +// - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3. +// +// For 3-byte language identifiers the 4th byte is 0. +const lang tag.Index = "" + // Size: 5324 bytes + "---\x00aaaraai\x00aak\x00aau\x00abbkabi\x00abq\x00abr\x00abt\x00aby\x00a" + + "cd\x00ace\x00ach\x00ada\x00ade\x00adj\x00ady\x00adz\x00aeveaeb\x00aey" + + "\x00affragc\x00agd\x00agg\x00agm\x00ago\x00agq\x00aha\x00ahl\x00aho\x00a" + + "jg\x00akkaakk\x00ala\x00ali\x00aln\x00alt\x00ammhamm\x00amn\x00amo\x00am" + + "p\x00anrganc\x00ank\x00ann\x00any\x00aoj\x00aom\x00aoz\x00apc\x00apd\x00" + + "ape\x00apr\x00aps\x00apz\x00arraarc\x00arh\x00arn\x00aro\x00arq\x00ars" + + "\x00ary\x00arz\x00assmasa\x00ase\x00asg\x00aso\x00ast\x00ata\x00atg\x00a" + + "tj\x00auy\x00avvaavl\x00avn\x00avt\x00avu\x00awa\x00awb\x00awo\x00awx" + + "\x00ayymayb\x00azzebaakbal\x00ban\x00bap\x00bar\x00bas\x00bav\x00bax\x00" + + "bba\x00bbb\x00bbc\x00bbd\x00bbj\x00bbp\x00bbr\x00bcf\x00bch\x00bci\x00bc" + + "m\x00bcn\x00bco\x00bcq\x00bcu\x00bdd\x00beelbef\x00beh\x00bej\x00bem\x00" + + "bet\x00bew\x00bex\x00bez\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc\x00bgn" + + "\x00bgx\x00bhihbhb\x00bhg\x00bhi\x00bhk\x00bhl\x00bho\x00bhy\x00biisbib" + + "\x00big\x00bik\x00bim\x00bin\x00bio\x00biq\x00bjh\x00bji\x00bjj\x00bjn" + + "\x00bjo\x00bjr\x00bjt\x00bjz\x00bkc\x00bkm\x00bkq\x00bku\x00bkv\x00blt" + + "\x00bmambmh\x00bmk\x00bmq\x00bmu\x00bnenbng\x00bnm\x00bnp\x00boodboj\x00" + + "bom\x00bon\x00bpy\x00bqc\x00bqi\x00bqp\x00bqv\x00brrebra\x00brh\x00brx" + + "\x00brz\x00bsosbsj\x00bsq\x00bss\x00bst\x00bto\x00btt\x00btv\x00bua\x00b" + + "uc\x00bud\x00bug\x00buk\x00bum\x00buo\x00bus\x00buu\x00bvb\x00bwd\x00bwr" + + "\x00bxh\x00bye\x00byn\x00byr\x00bys\x00byv\x00byx\x00bza\x00bze\x00bzf" + + "\x00bzh\x00bzw\x00caatcan\x00cbj\x00cch\x00ccp\x00ceheceb\x00cfa\x00cgg" + + "\x00chhachk\x00chm\x00cho\x00chp\x00chr\x00cja\x00cjm\x00cjv\x00ckb\x00c" + + "kl\x00cko\x00cky\x00cla\x00cme\x00cmg\x00cooscop\x00cps\x00crrecrh\x00cr" + + "j\x00crk\x00crl\x00crm\x00crs\x00csescsb\x00csw\x00ctd\x00cuhucvhvcyymda" + + "andad\x00daf\x00dag\x00dah\x00dak\x00dar\x00dav\x00dbd\x00dbq\x00dcc\x00" + + "ddn\x00deeuded\x00den\x00dga\x00dgh\x00dgi\x00dgl\x00dgr\x00dgz\x00dia" + + "\x00dje\x00dnj\x00dob\x00doi\x00dop\x00dow\x00dri\x00drs\x00dsb\x00dtm" + + "\x00dtp\x00dts\x00dty\x00dua\x00duc\x00dud\x00dug\x00dvivdva\x00dww\x00d" + + "yo\x00dyu\x00dzzodzg\x00ebu\x00eeweefi\x00egl\x00egy\x00eka\x00eky\x00el" + + "llema\x00emi\x00enngenn\x00enq\x00eopoeri\x00es\x00\x05esu\x00etstetr" + + "\x00ett\x00etu\x00etx\x00euusewo\x00ext\x00faasfaa\x00fab\x00fag\x00fai" + + "\x00fan\x00ffulffi\x00ffm\x00fiinfia\x00fil\x00fit\x00fjijflr\x00fmp\x00" + + "foaofod\x00fon\x00for\x00fpe\x00fqs\x00frrafrc\x00frp\x00frr\x00frs\x00f" + + "ub\x00fud\x00fue\x00fuf\x00fuh\x00fuq\x00fur\x00fuv\x00fuy\x00fvr\x00fyr" + + "ygalegaa\x00gaf\x00gag\x00gah\x00gaj\x00gam\x00gan\x00gaw\x00gay\x00gba" + + "\x00gbf\x00gbm\x00gby\x00gbz\x00gcr\x00gdlagde\x00gdn\x00gdr\x00geb\x00g" + + "ej\x00gel\x00gez\x00gfk\x00ggn\x00ghs\x00gil\x00gim\x00gjk\x00gjn\x00gju" + + "\x00gkn\x00gkp\x00gllgglk\x00gmm\x00gmv\x00gnrngnd\x00gng\x00god\x00gof" + + "\x00goi\x00gom\x00gon\x00gor\x00gos\x00got\x00grb\x00grc\x00grt\x00grw" + + "\x00gsw\x00guujgub\x00guc\x00gud\x00gur\x00guw\x00gux\x00guz\x00gvlvgvf" + + "\x00gvr\x00gvs\x00gwc\x00gwi\x00gwt\x00gyi\x00haauhag\x00hak\x00ham\x00h" + + "aw\x00haz\x00hbb\x00hdy\x00heebhhy\x00hiinhia\x00hif\x00hig\x00hih\x00hi" + + "l\x00hla\x00hlu\x00hmd\x00hmt\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homo" + + "hoc\x00hoj\x00hot\x00hrrvhsb\x00hsn\x00htathuunhui\x00hyyehzerianaian" + + "\x00iar\x00iba\x00ibb\x00iby\x00ica\x00ich\x00idndidd\x00idi\x00idu\x00i" + + "eleife\x00igboigb\x00ige\x00iiiiijj\x00ikpkikk\x00ikt\x00ikw\x00ikx\x00i" + + "lo\x00imo\x00inndinh\x00iodoiou\x00iri\x00isslittaiukuiw\x00\x03iwm\x00i" + + "ws\x00izh\x00izi\x00japnjab\x00jam\x00jbo\x00jbu\x00jen\x00jgk\x00jgo" + + "\x00ji\x00\x06jib\x00jmc\x00jml\x00jra\x00jut\x00jvavjwavkaatkaa\x00kab" + + "\x00kac\x00kad\x00kai\x00kaj\x00kam\x00kao\x00kbd\x00kbm\x00kbp\x00kbq" + + "\x00kbx\x00kby\x00kcg\x00kck\x00kcl\x00kct\x00kde\x00kdh\x00kdl\x00kdt" + + "\x00kea\x00ken\x00kez\x00kfo\x00kfr\x00kfy\x00kgonkge\x00kgf\x00kgp\x00k" + + "ha\x00khb\x00khn\x00khq\x00khs\x00kht\x00khw\x00khz\x00kiikkij\x00kiu" + + "\x00kiw\x00kjuakjd\x00kjg\x00kjs\x00kjy\x00kkazkkc\x00kkj\x00klalkln\x00" + + "klq\x00klt\x00klx\x00kmhmkmb\x00kmh\x00kmo\x00kms\x00kmu\x00kmw\x00knank" + + "nf\x00knp\x00koorkoi\x00kok\x00kol\x00kos\x00koz\x00kpe\x00kpf\x00kpo" + + "\x00kpr\x00kpx\x00kqb\x00kqf\x00kqs\x00kqy\x00kraukrc\x00kri\x00krj\x00k" + + "rl\x00krs\x00kru\x00ksasksb\x00ksd\x00ksf\x00ksh\x00ksj\x00ksr\x00ktb" + + "\x00ktm\x00kto\x00kuurkub\x00kud\x00kue\x00kuj\x00kum\x00kun\x00kup\x00k" + + "us\x00kvomkvg\x00kvr\x00kvx\x00kw\x00\x01kwj\x00kwo\x00kxa\x00kxc\x00kxm" + + "\x00kxp\x00kxw\x00kxz\x00kyirkye\x00kyx\x00kzr\x00laatlab\x00lad\x00lag" + + "\x00lah\x00laj\x00las\x00lbtzlbe\x00lbu\x00lbw\x00lcm\x00lcp\x00ldb\x00l" + + "ed\x00lee\x00lem\x00lep\x00leq\x00leu\x00lez\x00lguglgg\x00liimlia\x00li" + + "d\x00lif\x00lig\x00lih\x00lij\x00lis\x00ljp\x00lki\x00lkt\x00lle\x00lln" + + "\x00lmn\x00lmo\x00lmp\x00lninlns\x00lnu\x00loaoloj\x00lok\x00lol\x00lor" + + "\x00los\x00loz\x00lrc\x00ltitltg\x00luublua\x00luo\x00luy\x00luz\x00lvav" + + "lwl\x00lzh\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak\x00man\x00mas\x00ma" + + "w\x00maz\x00mbh\x00mbo\x00mbq\x00mbu\x00mbw\x00mci\x00mcp\x00mcq\x00mcr" + + "\x00mcu\x00mda\x00mde\x00mdf\x00mdh\x00mdj\x00mdr\x00mdx\x00med\x00mee" + + "\x00mek\x00men\x00mer\x00met\x00meu\x00mfa\x00mfe\x00mfn\x00mfo\x00mfq" + + "\x00mglgmgh\x00mgl\x00mgo\x00mgp\x00mgy\x00mhahmhi\x00mhl\x00mirimif\x00" + + "min\x00mis\x00miw\x00mkkdmki\x00mkl\x00mkp\x00mkw\x00mlalmle\x00mlp\x00m" + + "ls\x00mmo\x00mmu\x00mmx\x00mnonmna\x00mnf\x00mni\x00mnw\x00moolmoa\x00mo" + + "e\x00moh\x00mos\x00mox\x00mpp\x00mps\x00mpt\x00mpx\x00mql\x00mrarmrd\x00" + + "mrj\x00mro\x00mssamtltmtc\x00mtf\x00mti\x00mtr\x00mua\x00mul\x00mur\x00m" + + "us\x00mva\x00mvn\x00mvy\x00mwk\x00mwr\x00mwv\x00mxc\x00mxm\x00myyamyk" + + "\x00mym\x00myv\x00myw\x00myx\x00myz\x00mzk\x00mzm\x00mzn\x00mzp\x00mzw" + + "\x00mzz\x00naaunac\x00naf\x00nah\x00nak\x00nan\x00nap\x00naq\x00nas\x00n" + + "bobnca\x00nce\x00ncf\x00nch\x00nco\x00ncu\x00nddendc\x00nds\x00neepneb" + + "\x00new\x00nex\x00nfr\x00ngdonga\x00ngb\x00ngl\x00nhb\x00nhe\x00nhw\x00n" + + "if\x00nii\x00nij\x00nin\x00niu\x00niy\x00niz\x00njo\x00nkg\x00nko\x00nll" + + "dnmg\x00nmz\x00nnnonnf\x00nnh\x00nnk\x00nnm\x00noornod\x00noe\x00non\x00" + + "nop\x00nou\x00nqo\x00nrblnrb\x00nsk\x00nsn\x00nso\x00nss\x00ntm\x00ntr" + + "\x00nui\x00nup\x00nus\x00nuv\x00nux\x00nvavnwb\x00nxq\x00nxr\x00nyyanym" + + "\x00nyn\x00nzi\x00occiogc\x00ojjiokr\x00okv\x00omrmong\x00onn\x00ons\x00" + + "opm\x00orrioro\x00oru\x00osssosa\x00ota\x00otk\x00ozm\x00paanpag\x00pal" + + "\x00pam\x00pap\x00pau\x00pbi\x00pcd\x00pcm\x00pdc\x00pdt\x00ped\x00peo" + + "\x00pex\x00pfl\x00phl\x00phn\x00pilipil\x00pip\x00pka\x00pko\x00plolpla" + + "\x00pms\x00png\x00pnn\x00pnt\x00pon\x00ppo\x00pra\x00prd\x00prg\x00psusp" + + "ss\x00ptorptp\x00puu\x00pwa\x00quuequc\x00qug\x00rai\x00raj\x00rao\x00rc" + + "f\x00rej\x00rel\x00res\x00rgn\x00rhg\x00ria\x00rif\x00rjs\x00rkt\x00rmoh" + + "rmf\x00rmo\x00rmt\x00rmu\x00rnunrna\x00rng\x00roonrob\x00rof\x00roo\x00r" + + "ro\x00rtm\x00ruusrue\x00rug\x00rw\x00\x04rwk\x00rwo\x00ryu\x00saansaf" + + "\x00sah\x00saq\x00sas\x00sat\x00sav\x00saz\x00sba\x00sbe\x00sbp\x00scrds" + + "ck\x00scl\x00scn\x00sco\x00scs\x00sdndsdc\x00sdh\x00semesef\x00seh\x00se" + + "i\x00ses\x00sgagsga\x00sgs\x00sgw\x00sgz\x00sh\x00\x02shi\x00shk\x00shn" + + "\x00shu\x00siinsid\x00sig\x00sil\x00sim\x00sjr\x00sklkskc\x00skr\x00sks" + + "\x00sllvsld\x00sli\x00sll\x00sly\x00smmosma\x00smi\x00smj\x00smn\x00smp" + + "\x00smq\x00sms\x00snnasnc\x00snk\x00snp\x00snx\x00sny\x00soomsok\x00soq" + + "\x00sou\x00soy\x00spd\x00spl\x00sps\x00sqqisrrpsrb\x00srn\x00srr\x00srx" + + "\x00ssswssd\x00ssg\x00ssy\x00stotstk\x00stq\x00suunsua\x00sue\x00suk\x00" + + "sur\x00sus\x00svweswwaswb\x00swc\x00swg\x00swp\x00swv\x00sxn\x00sxw\x00s" + + "yl\x00syr\x00szl\x00taamtaj\x00tal\x00tan\x00taq\x00tbc\x00tbd\x00tbf" + + "\x00tbg\x00tbo\x00tbw\x00tbz\x00tci\x00tcy\x00tdd\x00tdg\x00tdh\x00teelt" + + "ed\x00tem\x00teo\x00tet\x00tfi\x00tggktgc\x00tgo\x00tgu\x00thhathl\x00th" + + "q\x00thr\x00tiirtif\x00tig\x00tik\x00tim\x00tio\x00tiv\x00tkuktkl\x00tkr" + + "\x00tkt\x00tlgltlf\x00tlx\x00tly\x00tmh\x00tmy\x00tnsntnh\x00toontof\x00" + + "tog\x00toq\x00tpi\x00tpm\x00tpz\x00tqo\x00trurtru\x00trv\x00trw\x00tssot" + + "sd\x00tsf\x00tsg\x00tsj\x00tsw\x00ttatttd\x00tte\x00ttj\x00ttr\x00tts" + + "\x00ttt\x00tuh\x00tul\x00tum\x00tuq\x00tvd\x00tvl\x00tvu\x00twwitwh\x00t" + + "wq\x00txg\x00tyahtya\x00tyv\x00tzm\x00ubu\x00udm\x00ugiguga\x00ukkruli" + + "\x00umb\x00und\x00unr\x00unx\x00urrduri\x00urt\x00urw\x00usa\x00utr\x00u" + + "vh\x00uvl\x00uzzbvag\x00vai\x00van\x00veenvec\x00vep\x00viievic\x00viv" + + "\x00vls\x00vmf\x00vmw\x00voolvot\x00vro\x00vun\x00vut\x00walnwae\x00waj" + + "\x00wal\x00wan\x00war\x00wbp\x00wbq\x00wbr\x00wci\x00wer\x00wgi\x00whg" + + "\x00wib\x00wiu\x00wiv\x00wja\x00wji\x00wls\x00wmo\x00wnc\x00wni\x00wnu" + + "\x00woolwob\x00wos\x00wrs\x00wsk\x00wtm\x00wuu\x00wuv\x00wwa\x00xav\x00x" + + "bi\x00xcr\x00xes\x00xhhoxla\x00xlc\x00xld\x00xmf\x00xmn\x00xmr\x00xna" + + "\x00xnr\x00xog\x00xon\x00xpr\x00xrb\x00xsa\x00xsi\x00xsm\x00xsr\x00xwe" + + "\x00yam\x00yao\x00yap\x00yas\x00yat\x00yav\x00yay\x00yaz\x00yba\x00ybb" + + "\x00yby\x00yer\x00ygr\x00ygw\x00yiidyko\x00yle\x00ylg\x00yll\x00yml\x00y" + + "ooryon\x00yrb\x00yre\x00yrl\x00yss\x00yua\x00yue\x00yuj\x00yut\x00yuw" + + "\x00zahazag\x00zbl\x00zdj\x00zea\x00zgh\x00zhhozhx\x00zia\x00zlm\x00zmi" + + "\x00zne\x00zuulzxx\x00zza\x00\xff\xff\xff\xff" + +const langNoIndexOffset = 1330 + +// langNoIndex is a bit vector of all 3-letter language codes that are not used as an index +// in lookup tables. The language ids for these language codes are derived directly +// from the letters and are not consecutive. +// Size: 2197 bytes, 2197 elements +var langNoIndex = [2197]uint8{ + // Entry 0 - 3F + 0xff, 0xf8, 0xed, 0xfe, 0xeb, 0xd3, 0x3b, 0xd2, + 0xfb, 0xbf, 0x7a, 0xfa, 0x37, 0x1d, 0x3c, 0x57, + 0x6e, 0x97, 0x73, 0x38, 0xfb, 0xea, 0xbf, 0x70, + 0xad, 0x03, 0xff, 0xff, 0xcf, 0x05, 0x84, 0x72, + 0xe9, 0xbf, 0xfd, 0xbf, 0xbf, 0xf7, 0xfd, 0x77, + 0x0f, 0xff, 0xef, 0x6f, 0xff, 0xfb, 0xdf, 0xe2, + 0xc9, 0xf8, 0x7f, 0x7e, 0x4d, 0xbc, 0x0a, 0x6a, + 0x7c, 0xea, 0xe3, 0xfa, 0x7a, 0xbf, 0x67, 0xff, + // Entry 40 - 7F + 0xff, 0xff, 0xff, 0xdf, 0x2a, 0x54, 0x91, 0xc0, + 0x5d, 0xe3, 0x97, 0x14, 0x07, 0x20, 0xdd, 0xed, + 0x9f, 0x3f, 0xc9, 0x21, 0xf8, 0x3f, 0x94, 0x35, + 0x7c, 0x5f, 0xff, 0x5f, 0x8e, 0x6e, 0xdf, 0xff, + 0xff, 0xff, 0x55, 0x7c, 0xd3, 0xfd, 0xbf, 0xb5, + 0x7b, 0xdf, 0x7f, 0xf7, 0xca, 0xfe, 0xdb, 0xa3, + 0xa8, 0xff, 0x1f, 0x67, 0x7d, 0xeb, 0xef, 0xce, + 0xff, 0xff, 0x9f, 0xff, 0xb7, 0xef, 0xfe, 0xcf, + // Entry 80 - BF + 0xdb, 0xff, 0xf3, 0xcd, 0xfb, 0x7f, 0xff, 0xff, + 0xbb, 0xee, 0xf7, 0xbd, 0xdb, 0xff, 0x5f, 0xf7, + 0xfd, 0xf2, 0xfd, 0xff, 0x5e, 0x2f, 0x3b, 0xba, + 0x7e, 0xff, 0xff, 0xfe, 0xf7, 0xff, 0xdd, 0xff, + 0xfd, 0xdf, 0xfb, 0xfe, 0x9d, 0xb4, 0xd3, 0xff, + 0xef, 0xff, 0xdf, 0xf7, 0x7f, 0xb7, 0xfd, 0xd5, + 0xa5, 0x77, 0x40, 0xff, 0x9c, 0xc1, 0x41, 0x2c, + 0x08, 0x21, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80, + // Entry C0 - FF + 0xfb, 0x4a, 0xf2, 0x9f, 0xb4, 0x42, 0x41, 0x96, + 0x1b, 0x14, 0x08, 0xf3, 0x2b, 0xe7, 0x17, 0x56, + 0x05, 0x7d, 0x0e, 0x1c, 0x37, 0x7f, 0xf3, 0xef, + 0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10, + 0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xff, 0x7b, 0x35, + 0x3e, 0xc7, 0xc7, 0xdf, 0xff, 0x01, 0x81, 0x00, + 0xb0, 0x05, 0x80, 0x00, 0x20, 0x00, 0x00, 0x03, + 0x40, 0x00, 0x40, 0x92, 0x21, 0x50, 0xb1, 0x5d, + // Entry 100 - 13F + 0xfd, 0xdc, 0xbe, 0x5e, 0x00, 0x00, 0x02, 0x64, + 0x0d, 0x19, 0x41, 0xdf, 0x79, 0x22, 0x00, 0x00, + 0x00, 0x5e, 0x64, 0xdc, 0x24, 0xe5, 0xd9, 0xe3, + 0xfe, 0xff, 0xfd, 0xcb, 0x9f, 0x14, 0x41, 0x0c, + 0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc7, 0x67, 0x5f, + 0x56, 0x99, 0x5e, 0xb5, 0x6c, 0xaf, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xc0, 0x37, 0xda, 0x56, + 0x90, 0x6d, 0x01, 0x2e, 0x96, 0x69, 0x20, 0xfb, + // Entry 140 - 17F + 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x16, + 0x03, 0x00, 0x00, 0xb0, 0x14, 0x23, 0x50, 0x06, + 0x0a, 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x09, + 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x05, + 0x08, 0x00, 0x00, 0x05, 0x00, 0x80, 0x28, 0x04, + 0x00, 0x00, 0x40, 0xd5, 0x2d, 0x00, 0x64, 0x35, + 0x24, 0x52, 0xf4, 0xd5, 0xbf, 0x62, 0xc9, 0x03, + // Entry 180 - 1BF + 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x13, 0x39, 0x01, 0xdd, 0x57, 0x98, + 0x21, 0x18, 0x81, 0x08, 0x00, 0x01, 0x40, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0x80, 0xea, + 0xa9, 0x39, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + // Entry 1C0 - 1FF + 0x00, 0x03, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x20, 0x04, 0xa6, 0x00, 0x04, 0x00, 0x00, + 0x81, 0x50, 0x00, 0x00, 0x00, 0x11, 0x84, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x55, + 0x02, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x40, + 0x30, 0x83, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1e, 0xcd, 0xbf, 0x7a, 0xbf, + // Entry 200 - 23F + 0xdf, 0xc3, 0x83, 0x82, 0xc0, 0xfb, 0x57, 0x27, + 0xed, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5, + 0xa4, 0x45, 0x25, 0x9b, 0x02, 0xdf, 0xe1, 0xdf, + 0x03, 0x44, 0x08, 0x90, 0x01, 0x04, 0x81, 0xe3, + 0x92, 0x54, 0xdb, 0x28, 0xd3, 0x5f, 0xfe, 0x6d, + 0x79, 0xed, 0x1c, 0x7f, 0x04, 0x08, 0x00, 0x01, + 0x21, 0x12, 0x64, 0x5f, 0xdd, 0x0e, 0x85, 0x4f, + 0x40, 0x40, 0x00, 0x04, 0xf1, 0xfd, 0x3d, 0x54, + // Entry 240 - 27F + 0xe8, 0x03, 0xb4, 0x27, 0x23, 0x0d, 0x00, 0x00, + 0x20, 0x7b, 0x78, 0x02, 0x07, 0x84, 0x00, 0xf0, + 0xbb, 0x7e, 0x5a, 0x00, 0x18, 0x04, 0x81, 0x00, + 0x00, 0x00, 0x80, 0x10, 0x90, 0x1c, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x04, + 0x08, 0xa0, 0x70, 0xa5, 0x0c, 0x40, 0x00, 0x00, + 0x91, 0x24, 0x04, 0x68, 0x00, 0x20, 0x70, 0xff, + 0x7b, 0x7f, 0x70, 0x00, 0x05, 0x9b, 0xdd, 0x66, + // Entry 280 - 2BF + 0x03, 0x00, 0x11, 0x00, 0x00, 0x00, 0x40, 0x05, + 0xb5, 0xb6, 0x80, 0x08, 0x04, 0x00, 0x04, 0x51, + 0xe2, 0xef, 0xfd, 0x3f, 0x05, 0x09, 0x08, 0x05, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60, + 0xe7, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80, + 0x03, 0x00, 0x00, 0x00, 0x8c, 0x50, 0x40, 0x04, + 0x84, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20, + // Entry 2C0 - 2FF + 0x02, 0x50, 0x80, 0x11, 0x00, 0x99, 0x6c, 0xe2, + 0x50, 0x27, 0x1d, 0x11, 0x29, 0x0e, 0x59, 0xe9, + 0x33, 0x08, 0x00, 0x20, 0x04, 0x40, 0x10, 0x00, + 0x00, 0x00, 0x50, 0x44, 0x92, 0x49, 0xd6, 0x5d, + 0xa7, 0x81, 0x47, 0x97, 0xfb, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x80, 0x00, 0x40, 0x04, 0x00, 0x01, + 0x02, 0x00, 0x01, 0x40, 0x80, 0x00, 0x40, 0x08, + 0xd8, 0xeb, 0xf6, 0x39, 0xc4, 0x8d, 0x12, 0x00, + // Entry 300 - 33F + 0x00, 0x0c, 0x04, 0x01, 0x20, 0x20, 0xdd, 0xa0, + 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x04, 0x10, 0xd0, 0x9d, 0x95, 0x13, 0x04, 0x80, + 0x00, 0x01, 0xd0, 0x16, 0x40, 0x00, 0x10, 0xb0, + 0x10, 0x62, 0x4c, 0xd2, 0x02, 0x01, 0x4a, 0x00, + 0x46, 0x04, 0x00, 0x08, 0x02, 0x00, 0x20, 0x80, + 0x00, 0x80, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0xd8, 0x6f, 0x15, 0x02, 0x08, 0x00, + // Entry 340 - 37F + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, + 0x00, 0x10, 0x00, 0x00, 0x00, 0xf0, 0x84, 0xe3, + 0xdd, 0xbf, 0xf9, 0xf9, 0x3b, 0x7f, 0x7f, 0xdb, + 0xfd, 0xfc, 0xfe, 0xdf, 0xff, 0xfd, 0xff, 0xf6, + 0xfb, 0xfc, 0xf7, 0x1f, 0xff, 0xb3, 0x6c, 0xff, + 0xd9, 0xad, 0xdf, 0xfe, 0xef, 0xba, 0xdf, 0xff, + 0xff, 0xff, 0xb7, 0xdd, 0x7d, 0xbf, 0xab, 0x7f, + 0xfd, 0xfd, 0xdf, 0x2f, 0x9c, 0xdf, 0xf3, 0x6f, + // Entry 380 - 3BF + 0xdf, 0xdd, 0xff, 0xfb, 0xee, 0xd2, 0xab, 0x5f, + 0xd5, 0xdf, 0x7f, 0xff, 0xeb, 0xff, 0xe4, 0x4d, + 0xf9, 0xff, 0xfe, 0xf7, 0xfd, 0xdf, 0xfb, 0xbf, + 0xee, 0xdb, 0x6f, 0xef, 0xff, 0x7f, 0xff, 0xff, + 0xf7, 0x5f, 0xd3, 0x3b, 0xfd, 0xd9, 0xdf, 0xeb, + 0xbc, 0x08, 0x05, 0x24, 0xff, 0x07, 0x70, 0xfe, + 0xe6, 0x5e, 0x00, 0x08, 0x00, 0x83, 0x7d, 0x1f, + 0x06, 0xe6, 0x72, 0x60, 0xd1, 0x3c, 0x7f, 0x44, + // Entry 3C0 - 3FF + 0x02, 0x30, 0x9f, 0x7a, 0x16, 0xbd, 0x7f, 0x57, + 0xf2, 0xff, 0x31, 0xff, 0xf2, 0x1e, 0x90, 0xf7, + 0xf1, 0xf9, 0x45, 0x80, 0x01, 0x02, 0x00, 0x20, + 0x40, 0x54, 0x9f, 0x8a, 0xdf, 0xf9, 0x6e, 0x11, + 0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x40, 0x03, + 0x05, 0xd1, 0x50, 0x5c, 0x00, 0x40, 0x00, 0x10, + 0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2, + 0xb9, 0xfd, 0xfc, 0xba, 0xfe, 0xef, 0xc7, 0xbe, + // Entry 400 - 43F + 0x53, 0x6f, 0xdf, 0xe7, 0xdb, 0x65, 0xbb, 0x7f, + 0xfa, 0xff, 0x77, 0xf3, 0xef, 0xbf, 0xfd, 0xf7, + 0xdf, 0xdf, 0x9b, 0x7f, 0xff, 0xff, 0x7f, 0x6f, + 0xf7, 0xfb, 0xeb, 0xdf, 0xbc, 0xff, 0xbf, 0x6b, + 0x7b, 0xfb, 0xff, 0xce, 0x76, 0xbd, 0xf7, 0xf7, + 0xdf, 0xdc, 0xf7, 0xf7, 0xff, 0xdf, 0xf3, 0xfe, + 0xef, 0xff, 0xff, 0xff, 0xb6, 0x7f, 0x7f, 0xde, + 0xf7, 0xb9, 0xeb, 0x77, 0xff, 0xfb, 0xbf, 0xdf, + // Entry 440 - 47F + 0xfd, 0xfe, 0xfb, 0xff, 0xfe, 0xeb, 0x1f, 0x7d, + 0x2f, 0xfd, 0xb6, 0xb5, 0xa5, 0xfc, 0xff, 0xfd, + 0x7f, 0x4e, 0xbf, 0x8f, 0xae, 0xff, 0xee, 0xdf, + 0x7f, 0xf7, 0x73, 0x02, 0x02, 0x04, 0xfc, 0xf7, + 0xff, 0xb7, 0xd7, 0xef, 0xfe, 0xcd, 0xf5, 0xce, + 0xe2, 0x8e, 0xe7, 0xbf, 0xb7, 0xff, 0x56, 0xfd, + 0xcd, 0xff, 0xfb, 0xff, 0xdf, 0xd7, 0xea, 0xff, + 0xe5, 0x5f, 0x6d, 0x0f, 0xa7, 0x51, 0x06, 0xc4, + // Entry 480 - 4BF + 0x93, 0x50, 0x5d, 0xaf, 0xa6, 0xff, 0x99, 0xfb, + 0x63, 0x1d, 0x53, 0xff, 0xef, 0xb7, 0x35, 0x20, + 0x14, 0x00, 0x55, 0x51, 0xc2, 0x65, 0xf5, 0x41, + 0xe2, 0xff, 0xfc, 0xdf, 0x02, 0x85, 0xc5, 0x05, + 0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x05, + 0x41, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x51, 0x20, 0x05, 0x04, 0x01, 0x00, 0x00, + 0x06, 0x11, 0x20, 0x00, 0x18, 0x01, 0x92, 0xf1, + // Entry 4C0 - 4FF + 0xfd, 0x47, 0x69, 0x06, 0x95, 0x06, 0x57, 0xed, + 0xfb, 0x4d, 0x1c, 0x6b, 0x83, 0x04, 0x62, 0x40, + 0x00, 0x11, 0x42, 0x00, 0x00, 0x00, 0x54, 0x83, + 0xb8, 0x4f, 0x10, 0x8e, 0x89, 0x46, 0xde, 0xf7, + 0x13, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x90, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00, + 0x01, 0x00, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x3d, + 0xbe, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41, + // Entry 500 - 53F + 0x30, 0xff, 0x79, 0x72, 0x04, 0x00, 0x00, 0x49, + 0x2d, 0x14, 0x27, 0x5f, 0xed, 0xf1, 0x3f, 0xe7, + 0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xf8, + 0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xe7, 0xf7, + 0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7e, 0x10, + 0x01, 0x01, 0x84, 0x6d, 0xff, 0xf7, 0xdd, 0xf9, + 0x5b, 0x05, 0x86, 0xed, 0xf5, 0x77, 0xbd, 0x3c, + 0x00, 0x00, 0x00, 0x42, 0x71, 0x42, 0x00, 0x40, + // Entry 540 - 57F + 0x00, 0x00, 0x01, 0x43, 0x19, 0x24, 0x08, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + // Entry 580 - 5BF + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xab, 0xbd, 0xe7, 0x57, 0xee, 0x13, 0x5d, + 0x09, 0xc1, 0x40, 0x21, 0xfa, 0x17, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0xce, 0xfb, 0xbf, + 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x30, 0x15, 0xa3, 0x10, 0x00, 0x00, 0x00, + 0x11, 0x04, 0x16, 0x00, 0x00, 0x02, 0x20, 0x81, + 0xa3, 0x01, 0x50, 0x00, 0x00, 0x83, 0x11, 0x40, + // Entry 5C0 - 5FF + 0x00, 0x00, 0x00, 0xf0, 0xdd, 0x7b, 0xbe, 0x02, + 0xaa, 0x10, 0x5d, 0x98, 0x52, 0x00, 0x80, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x02, + 0x3d, 0x40, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d, + 0x31, 0x00, 0x00, 0x00, 0x01, 0x18, 0x02, 0x20, + 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00, + 0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f, + 0x1f, 0x98, 0xcf, 0x9c, 0xff, 0xaf, 0x5f, 0xfe, + // Entry 600 - 63F + 0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xd9, + 0xb7, 0xf6, 0xfb, 0xb3, 0xc7, 0xff, 0x6f, 0xf1, + 0x73, 0xb1, 0x7f, 0x9f, 0x7f, 0xbd, 0xfc, 0xb7, + 0xee, 0x1c, 0xfa, 0xcb, 0xef, 0xdd, 0xf9, 0xbd, + 0x6e, 0xae, 0x55, 0xfd, 0x6e, 0x81, 0x76, 0x9f, + 0xd4, 0x77, 0xf5, 0x7d, 0xfb, 0xff, 0xeb, 0xfe, + 0xbe, 0x5f, 0x46, 0x5b, 0xe9, 0x5f, 0x50, 0x18, + 0x02, 0xfa, 0xf7, 0x9d, 0x15, 0x97, 0x05, 0x0f, + // Entry 640 - 67F + 0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf5, 0x57, 0x6c, + 0xff, 0xe4, 0xef, 0x6f, 0xff, 0xfc, 0xdd, 0xde, + 0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x3f, 0x00, 0x98, + 0x02, 0xfb, 0xa3, 0xef, 0xf3, 0xd6, 0xf2, 0xff, + 0xb9, 0xda, 0x7d, 0xd0, 0x3e, 0x15, 0x7b, 0xb4, + 0xf5, 0x3e, 0xff, 0xff, 0xf1, 0xf7, 0xff, 0xe7, + 0x5f, 0xff, 0xff, 0x9e, 0xdf, 0xf6, 0xd7, 0xb9, + 0xef, 0x27, 0x80, 0xbb, 0xc5, 0xff, 0xff, 0xe3, + // Entry 680 - 6BF + 0x97, 0x9d, 0xbf, 0x9f, 0xf7, 0xc7, 0xfd, 0x37, + 0xce, 0x7f, 0x44, 0x1d, 0x73, 0x7f, 0xf8, 0xda, + 0x5d, 0xce, 0x7d, 0x06, 0xb9, 0xea, 0x79, 0xa0, + 0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x08, + 0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x09, 0x06, + 0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00, + 0x04, 0x00, 0x10, 0xdc, 0x58, 0xd7, 0x0d, 0x0f, + // Entry 6C0 - 6FF + 0x54, 0x4d, 0xf1, 0x16, 0x44, 0xd5, 0x42, 0x08, + 0x40, 0x02, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, + 0x00, 0xdc, 0xfb, 0xcb, 0x0e, 0x58, 0x48, 0x41, + 0x24, 0x20, 0x04, 0x00, 0x30, 0x12, 0x40, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xab, + 0x6d, 0x93, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x80, 0x25, 0x00, 0x00, + // Entry 700 - 73F + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x80, 0x86, 0xc2, 0x00, 0x00, 0x01, 0x00, 0x01, + 0xff, 0x18, 0x02, 0x00, 0x02, 0xf0, 0xfd, 0x79, + 0x3b, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x03, 0x00, 0x09, 0x20, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 740 - 77F + 0x00, 0x00, 0x00, 0xef, 0xd5, 0xfd, 0xcf, 0x7e, + 0xb0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x46, + 0xcd, 0xf9, 0x5c, 0x00, 0x01, 0x00, 0x30, 0x04, + 0x04, 0x55, 0x00, 0x01, 0x04, 0xf4, 0x3f, 0x4a, + 0x01, 0x00, 0x00, 0xb0, 0x80, 0x20, 0x55, 0x75, + 0x97, 0x7c, 0xdf, 0x31, 0xcc, 0x68, 0xd1, 0x03, + 0xd5, 0x57, 0x27, 0x14, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2c, 0xf7, 0xcb, 0x1f, 0x14, 0x60, + // Entry 780 - 7BF + 0x83, 0x68, 0x01, 0x10, 0x8b, 0x38, 0x8a, 0x01, + 0x00, 0x00, 0x20, 0x00, 0x24, 0x44, 0x00, 0x00, + 0x10, 0x03, 0x31, 0x02, 0x01, 0x00, 0x00, 0xf0, + 0xf5, 0xff, 0xd5, 0x97, 0xbc, 0x70, 0xd6, 0x78, + 0x78, 0x15, 0x50, 0x05, 0xa4, 0x84, 0xa9, 0x41, + 0x00, 0x00, 0x00, 0x6b, 0x39, 0x52, 0x74, 0x40, + 0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02, + 0xff, 0xef, 0xff, 0x4b, 0x85, 0x53, 0xf4, 0xed, + // Entry 7C0 - 7FF + 0xdd, 0xbf, 0xf2, 0x5d, 0xc7, 0x0c, 0xd5, 0x42, + 0xfc, 0xff, 0xf7, 0x1f, 0x00, 0x80, 0x40, 0x56, + 0xcc, 0x16, 0x9e, 0xea, 0x35, 0x7d, 0xef, 0xff, + 0xbd, 0xa4, 0xaf, 0x01, 0x44, 0x18, 0x01, 0x4d, + 0x4e, 0x4a, 0x08, 0x50, 0x28, 0x30, 0xe0, 0x80, + 0x10, 0x20, 0x24, 0x00, 0xff, 0x2f, 0xd3, 0x60, + 0xfe, 0x01, 0x02, 0x88, 0x2a, 0x40, 0x16, 0x01, + 0x01, 0x15, 0x2b, 0x3c, 0x01, 0x00, 0x00, 0x10, + // Entry 800 - 83F + 0x90, 0x49, 0x41, 0x02, 0x02, 0x01, 0xe1, 0xbf, + 0xbf, 0x03, 0x00, 0x00, 0x10, 0xdc, 0xa3, 0xd1, + 0x40, 0x9c, 0x44, 0xdf, 0xf5, 0x8f, 0x66, 0xb3, + 0x55, 0x20, 0xd4, 0xc1, 0xd8, 0x30, 0x3d, 0x80, + 0x00, 0x00, 0x00, 0x04, 0xd4, 0x11, 0xc5, 0x84, + 0x2f, 0x50, 0x00, 0x22, 0x50, 0x6e, 0xbd, 0x93, + 0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10, + 0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00, + // Entry 840 - 87F + 0xf0, 0xfb, 0xfd, 0x7f, 0x05, 0x00, 0x16, 0x89, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x02, 0x28, + 0x84, 0x00, 0x21, 0xc0, 0x23, 0x24, 0x00, 0x00, + 0x00, 0xcb, 0xe4, 0x3a, 0x46, 0x88, 0x54, 0xf1, + 0xef, 0xff, 0x7f, 0x12, 0x01, 0x01, 0x84, 0x50, + 0x07, 0xfc, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x40, + 0x10, 0x38, 0x01, 0x01, 0x1c, 0x12, 0x40, 0xe1, + // Entry 880 - 8BF + 0x76, 0x16, 0x08, 0x03, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x24, + 0x0a, 0x00, 0x80, 0x00, 0x00, +} + +// altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives +// to 2-letter language codes that cannot be derived using the method described above. +// Each 3-letter code is followed by its 1-byte langID. +const altLangISO3 tag.Index = "---\x00cor\x00hbs\x01heb\x02kin\x03spa\x04yid\x05\xff\xff\xff\xff" + +// altLangIndex is used to convert indexes in altLangISO3 to langIDs. +// Size: 12 bytes, 6 elements +var altLangIndex = [6]uint16{ + 0x0281, 0x0407, 0x01fb, 0x03e5, 0x013e, 0x0208, +} + +// AliasMap maps langIDs to their suggested replacements. +// Size: 772 bytes, 193 elements +var AliasMap = [193]FromTo{ + 0: {From: 0x82, To: 0x88}, + 1: {From: 0x187, To: 0x1ae}, + 2: {From: 0x1f3, To: 0x1e1}, + 3: {From: 0x1fb, To: 0x1bc}, + 4: {From: 0x208, To: 0x512}, + 5: {From: 0x20f, To: 0x20e}, + 6: {From: 0x310, To: 0x3dc}, + 7: {From: 0x347, To: 0x36f}, + 8: {From: 0x407, To: 0x432}, + 9: {From: 0x47a, To: 0x153}, + 10: {From: 0x490, To: 0x451}, + 11: {From: 0x4a2, To: 0x21}, + 12: {From: 0x53e, To: 0x544}, + 13: {From: 0x58f, To: 0x12d}, + 14: {From: 0x62b, To: 0x34}, + 15: {From: 0x62f, To: 0x14}, + 16: {From: 0x630, To: 0x1eb1}, + 17: {From: 0x651, To: 0x431}, + 18: {From: 0x662, To: 0x431}, + 19: {From: 0x6ed, To: 0x3a}, + 20: {From: 0x6f8, To: 0x1d7}, + 21: {From: 0x709, To: 0x3625}, + 22: {From: 0x73e, To: 0x21a1}, + 23: {From: 0x7b3, To: 0x56}, + 24: {From: 0x7b9, To: 0x299b}, + 25: {From: 0x7c5, To: 0x58}, + 26: {From: 0x7e6, To: 0x145}, + 27: {From: 0x80c, To: 0x5a}, + 28: {From: 0x815, To: 0x8d}, + 29: {From: 0x87e, To: 0x810}, + 30: {From: 0x8a8, To: 0x8b7}, + 31: {From: 0x8c3, To: 0xee3}, + 32: {From: 0x8fa, To: 0x1dc}, + 33: {From: 0x9ef, To: 0x331}, + 34: {From: 0xa36, To: 0x2c5}, + 35: {From: 0xa3d, To: 0xbf}, + 36: {From: 0xabe, To: 0x3322}, + 37: {From: 0xb38, To: 0x529}, + 38: {From: 0xb75, To: 0x265a}, + 39: {From: 0xb7e, To: 0xbc3}, + 40: {From: 0xb9b, To: 0x44e}, + 41: {From: 0xbbc, To: 0x4229}, + 42: {From: 0xbbf, To: 0x529}, + 43: {From: 0xbfe, To: 0x2da7}, + 44: {From: 0xc2e, To: 0x3181}, + 45: {From: 0xcb9, To: 0xf3}, + 46: {From: 0xd08, To: 0xfa}, + 47: {From: 0xdc8, To: 0x11a}, + 48: {From: 0xdd7, To: 0x32d}, + 49: {From: 0xdf8, To: 0xdfb}, + 50: {From: 0xdfe, To: 0x531}, + 51: {From: 0xe01, To: 0xdf3}, + 52: {From: 0xedf, To: 0x205a}, + 53: {From: 0xee9, To: 0x222e}, + 54: {From: 0xeee, To: 0x2e9a}, + 55: {From: 0xf39, To: 0x367}, + 56: {From: 0x10d0, To: 0x140}, + 57: {From: 0x1104, To: 0x2d0}, + 58: {From: 0x11a0, To: 0x1ec}, + 59: {From: 0x1279, To: 0x21}, + 60: {From: 0x1424, To: 0x15e}, + 61: {From: 0x1470, To: 0x14e}, + 62: {From: 0x151f, To: 0xd9b}, + 63: {From: 0x1523, To: 0x390}, + 64: {From: 0x1532, To: 0x19f}, + 65: {From: 0x1580, To: 0x210}, + 66: {From: 0x1583, To: 0x10d}, + 67: {From: 0x15a3, To: 0x3caf}, + 68: {From: 0x1630, To: 0x222e}, + 69: {From: 0x166a, To: 0x19b}, + 70: {From: 0x16c8, To: 0x136}, + 71: {From: 0x1700, To: 0x29f8}, + 72: {From: 0x1718, To: 0x194}, + 73: {From: 0x1727, To: 0xf3f}, + 74: {From: 0x177a, To: 0x178}, + 75: {From: 0x1809, To: 0x17b6}, + 76: {From: 0x1816, To: 0x18f3}, + 77: {From: 0x188a, To: 0x436}, + 78: {From: 0x1979, To: 0x1d01}, + 79: {From: 0x1a74, To: 0x2bb0}, + 80: {From: 0x1a8a, To: 0x1f8}, + 81: {From: 0x1b5a, To: 0x1fa}, + 82: {From: 0x1b86, To: 0x1515}, + 83: {From: 0x1d64, To: 0x2c9b}, + 84: {From: 0x2038, To: 0x37b1}, + 85: {From: 0x203d, To: 0x20dd}, + 86: {From: 0x2042, To: 0x2e00}, + 87: {From: 0x205a, To: 0x30b}, + 88: {From: 0x20e3, To: 0x274}, + 89: {From: 0x20ee, To: 0x263}, + 90: {From: 0x20f2, To: 0x22d}, + 91: {From: 0x20f9, To: 0x256}, + 92: {From: 0x210f, To: 0x21eb}, + 93: {From: 0x2135, To: 0x27d}, + 94: {From: 0x2160, To: 0x913}, + 95: {From: 0x2199, To: 0x121}, + 96: {From: 0x21ce, To: 0x1561}, + 97: {From: 0x21e6, To: 0x504}, + 98: {From: 0x21f4, To: 0x49f}, + 99: {From: 0x21fb, To: 0x269}, + 100: {From: 0x222d, To: 0x121}, + 101: {From: 0x2237, To: 0x121}, + 102: {From: 0x2248, To: 0x217d}, + 103: {From: 0x2262, To: 0x92a}, + 104: {From: 0x2316, To: 0x3226}, + 105: {From: 0x236a, To: 0x2835}, + 106: {From: 0x2382, To: 0x3365}, + 107: {From: 0x2472, To: 0x2c7}, + 108: {From: 0x24e4, To: 0x2ff}, + 109: {From: 0x24f0, To: 0x2fa}, + 110: {From: 0x24fa, To: 0x31f}, + 111: {From: 0x2550, To: 0xb5b}, + 112: {From: 0x25a9, To: 0xe2}, + 113: {From: 0x263e, To: 0x2d0}, + 114: {From: 0x26c9, To: 0x26b4}, + 115: {From: 0x26f9, To: 0x3c8}, + 116: {From: 0x2727, To: 0x3caf}, + 117: {From: 0x2755, To: 0x6a4}, + 118: {From: 0x2765, To: 0x26b4}, + 119: {From: 0x2789, To: 0x4358}, + 120: {From: 0x27c9, To: 0x2001}, + 121: {From: 0x28ea, To: 0x27b1}, + 122: {From: 0x28ef, To: 0x2837}, + 123: {From: 0x28fe, To: 0xaa5}, + 124: {From: 0x2914, To: 0x351}, + 125: {From: 0x2986, To: 0x2da7}, + 126: {From: 0x29f0, To: 0x96b}, + 127: {From: 0x2b1a, To: 0x38d}, + 128: {From: 0x2bfc, To: 0x395}, + 129: {From: 0x2c3f, To: 0x3caf}, + 130: {From: 0x2ce1, To: 0x2201}, + 131: {From: 0x2cfc, To: 0x3be}, + 132: {From: 0x2d13, To: 0x597}, + 133: {From: 0x2d47, To: 0x148}, + 134: {From: 0x2d48, To: 0x148}, + 135: {From: 0x2dff, To: 0x2f1}, + 136: {From: 0x2e08, To: 0x19cc}, + 137: {From: 0x2e10, To: 0xc45}, + 138: {From: 0x2e1a, To: 0x2d95}, + 139: {From: 0x2e21, To: 0x292}, + 140: {From: 0x2e54, To: 0x7d}, + 141: {From: 0x2e65, To: 0x2282}, + 142: {From: 0x2e97, To: 0x1a4}, + 143: {From: 0x2ea0, To: 0x2e9b}, + 144: {From: 0x2eef, To: 0x2ed7}, + 145: {From: 0x3193, To: 0x3c4}, + 146: {From: 0x3366, To: 0x338e}, + 147: {From: 0x342a, To: 0x3dc}, + 148: {From: 0x34ee, To: 0x18d0}, + 149: {From: 0x35c8, To: 0x2c9b}, + 150: {From: 0x35e6, To: 0x412}, + 151: {From: 0x35f5, To: 0x24b}, + 152: {From: 0x360d, To: 0x1dc}, + 153: {From: 0x3658, To: 0x246}, + 154: {From: 0x3676, To: 0x3f4}, + 155: {From: 0x36fd, To: 0x445}, + 156: {From: 0x3747, To: 0x3b42}, + 157: {From: 0x37c0, To: 0x121}, + 158: {From: 0x3816, To: 0x38f2}, + 159: {From: 0x382a, To: 0x2b48}, + 160: {From: 0x382b, To: 0x2c9b}, + 161: {From: 0x382f, To: 0xa9}, + 162: {From: 0x3832, To: 0x3228}, + 163: {From: 0x386c, To: 0x39a6}, + 164: {From: 0x3892, To: 0x3fc0}, + 165: {From: 0x38a0, To: 0x45f}, + 166: {From: 0x38a5, To: 0x39d7}, + 167: {From: 0x38b4, To: 0x1fa4}, + 168: {From: 0x38b5, To: 0x2e9a}, + 169: {From: 0x38fa, To: 0x38f1}, + 170: {From: 0x395c, To: 0x47e}, + 171: {From: 0x3b4e, To: 0xd91}, + 172: {From: 0x3b78, To: 0x137}, + 173: {From: 0x3c99, To: 0x4bc}, + 174: {From: 0x3fbd, To: 0x100}, + 175: {From: 0x4208, To: 0xa91}, + 176: {From: 0x42be, To: 0x573}, + 177: {From: 0x42f9, To: 0x3f60}, + 178: {From: 0x4378, To: 0x25a}, + 179: {From: 0x43b8, To: 0xe6c}, + 180: {From: 0x43cd, To: 0x10f}, + 181: {From: 0x43d4, To: 0x4848}, + 182: {From: 0x44af, To: 0x3322}, + 183: {From: 0x44e3, To: 0x512}, + 184: {From: 0x45ca, To: 0x2409}, + 185: {From: 0x45dd, To: 0x26dc}, + 186: {From: 0x4610, To: 0x48ae}, + 187: {From: 0x46ae, To: 0x46a0}, + 188: {From: 0x473e, To: 0x4745}, + 189: {From: 0x4817, To: 0x3503}, + 190: {From: 0x483b, To: 0x208b}, + 191: {From: 0x4916, To: 0x31f}, + 192: {From: 0x49a7, To: 0x523}, +} + +// Size: 193 bytes, 193 elements +var AliasTypes = [193]AliasType{ + // Entry 0 - 3F + 1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 0, 0, + 1, 2, 1, 1, 2, 0, 0, 1, 0, 1, 2, 1, 1, 0, 0, 0, + 0, 2, 1, 1, 0, 2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, + 1, 1, 1, 0, 0, 0, 0, 2, 1, 1, 1, 1, 2, 1, 0, 1, + // Entry 40 - 7F + 1, 2, 2, 0, 0, 1, 2, 0, 1, 0, 1, 1, 1, 1, 0, 0, + 2, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 2, 0, + 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, + // Entry 80 - BF + 1, 0, 0, 1, 0, 2, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 1, 1, 2, 0, 0, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 2, 0, + 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, + // Entry C0 - FF + 1, +} + +const ( + _Latn = 91 + _Hani = 57 + _Hans = 59 + _Hant = 60 + _Qaaa = 149 + _Qaai = 157 + _Qabx = 198 + _Zinh = 255 + _Zyyy = 260 + _Zzzz = 261 +) + +// script is an alphabetically sorted list of ISO 15924 codes. The index +// of the script in the string, divided by 4, is the internal scriptID. +const script tag.Index = "" + // Size: 1052 bytes + "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" + + "BrahBraiBugiBuhdCakmCansCariChamCherChrsCirtCoptCpmnCprtCyrlCyrsDevaDiak" + + "DogrDsrtDuplEgydEgyhEgypElbaElymEthiGeokGeorGlagGongGonmGothGranGrekGujr" + + "GuruHanbHangHaniHanoHansHantHatrHebrHiraHluwHmngHmnpHrktHungIndsItalJamo" + + "JavaJpanJurcKaliKanaKawiKharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatf" + + "LatgLatnLekeLepcLimbLinaLinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedf" + + "MendMercMeroMlymModiMongMoonMrooMteiMultMymrNagmNandNarbNbatNewaNkdbNkgb" + + "NkooNshuOgamOlckOrkhOryaOsgeOsmaOugrPalmPaucPcunPelmPermPhagPhliPhlpPhlv" + + "PhnxPiqdPlrdPrtiPsinQaaaQaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaam" + + "QaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabe" + + "QabfQabgQabhQabiQabjQabkQablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabw" + + "QabxRanjRjngRohgRoroRunrSamrSaraSarbSaurSgnwShawShrdShuiSiddSindSinhSogd" + + "SogoSoraSoyoSundSunuSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTamlTangTavtTelu" + + "TengTfngTglgThaaThaiTibtTirhTnsaTotoUgarVaiiVispVithWaraWchoWoleXpeoXsux" + + "YeziYiiiZanbZinhZmthZsyeZsymZxxxZyyyZzzz\xff\xff\xff\xff" + +// suppressScript is an index from langID to the dominant script for that language, +// if it exists. If a script is given, it should be suppressed from the language tag. +// Size: 1330 bytes, 1330 elements +var suppressScript = [1330]uint8{ + // Entry 0 - 3F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 40 - 7F + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, + // Entry 80 - BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry C0 - FF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 100 - 13F + 0x5b, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x5b, 0x00, + // Entry 140 - 17F + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x5b, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 180 - 1BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5b, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x22, 0x00, + // Entry 1C0 - 1FF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x5b, 0x00, 0x5b, 0x5b, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x5b, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, + // Entry 200 - 23F + 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 240 - 27F + 0x00, 0x00, 0x20, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x53, 0x00, 0x00, 0x54, 0x00, 0x22, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 280 - 2BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 2C0 - 2FF + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + // Entry 300 - 33F + 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5b, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + // Entry 340 - 37F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x5b, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5b, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 380 - 3BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + // Entry 3C0 - 3FF + 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 400 - 43F + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + // Entry 440 - 47F + 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe9, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x2c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, + // Entry 480 - 4BF + 0x5b, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 4C0 - 4FF + 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 500 - 53F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, +} + +const ( + _001 = 1 + _419 = 31 + _BR = 65 + _CA = 73 + _ES = 111 + _GB = 124 + _MD = 189 + _PT = 239 + _UK = 307 + _US = 310 + _ZZ = 358 + _XA = 324 + _XC = 326 + _XK = 334 +) + +// isoRegionOffset needs to be added to the index of regionISO to obtain the regionID +// for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for +// the UN.M49 codes used for groups.) +const isoRegionOffset = 32 + +// regionTypes defines the status of a region for various standards. +// Size: 359 bytes, 359 elements +var regionTypes = [359]uint8{ + // Entry 0 - 3F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + // Entry 40 - 7F + 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x06, + 0x04, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x04, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x00, + 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x00, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, + // Entry 80 - BF + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x00, 0x04, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + // Entry C0 - FF + 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x00, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04, + 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x00, 0x06, 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + // Entry 100 - 13F + 0x05, 0x05, 0x05, 0x06, 0x00, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x02, 0x06, 0x04, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, + // Entry 140 - 17F + 0x06, 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x06, + 0x06, 0x04, 0x06, 0x06, 0x04, 0x06, 0x05, +} + +// regionISO holds a list of alphabetically sorted 2-letter ISO region codes. +// Each 2-letter codes is followed by two bytes with the following meaning: +// - [A-Z}{2}: the first letter of the 2-letter code plus these two +// letters form the 3-letter ISO code. +// - 0, n: index into altRegionISO3. +const regionISO tag.Index = "" + // Size: 1312 bytes + "AAAAACSCADNDAEREAFFGAGTGAIIAALLBAMRMANNTAOGOAQTAARRGASSMATUTAUUSAWBWAXLA" + + "AZZEBAIHBBRBBDGDBEELBFFABGGRBHHRBIDIBJENBLLMBMMUBNRNBOOLBQESBRRABSHSBTTN" + + "BUURBVVTBWWABYLRBZLZCAANCCCKCDODCFAFCGOGCHHECIIVCKOKCLHLCMMRCNHNCOOLCPPT" + + "CQ CRRICS\x00\x00CTTECUUBCVPVCWUWCXXRCYYPCZZEDDDRDEEUDGGADJJIDKNKDMMADO" + + "OMDYHYDZZAEA ECCUEESTEGGYEHSHERRIESSPETTHEU\x00\x03EZ FIINFJJIFKLKFMSM" + + "FOROFQ\x00\x18FRRAFXXXGAABGBBRGDRDGEEOGFUFGGGYGHHAGIIBGLRLGMMBGNINGPLPGQ" + + "NQGRRCGS\x00\x06GTTMGUUMGWNBGYUYHKKGHMMDHNNDHRRVHTTIHUUNHVVOIC IDDNIERL" + + "ILSRIMMNINNDIOOTIQRQIRRNISSLITTAJEEYJMAMJOORJPPNJTTNKEENKGGZKHHMKIIRKM" + + "\x00\x09KNNAKP\x00\x0cKRORKWWTKY\x00\x0fKZAZLAAOLBBNLCCALIIELKKALRBRLSSO" + + "LTTULUUXLVVALYBYMAARMCCOMDDAMENEMFAFMGDGMHHLMIIDMKKDMLLIMMMRMNNGMOACMPNP" + + "MQTQMRRTMSSRMTLTMUUSMVDVMWWIMXEXMYYSMZOZNAAMNCCLNEERNFFKNGGANHHBNIICNLLD" + + "NOORNPPLNQ\x00\x1eNRRUNTTZNUIUNZZLOMMNPAANPCCIPEERPFYFPGNGPHHLPKAKPLOLPM" + + "\x00\x12PNCNPRRIPSSEPTRTPUUSPWLWPYRYPZCZQAATQMMMQNNNQOOOQPPPQQQQQRRRQSSS" + + "QTTTQU\x00\x03QVVVQWWWQXXXQYYYQZZZREEURHHOROOURS\x00\x15RUUSRWWASAAUSBLB" + + "SCYCSDDNSEWESGGPSHHNSIVNSJJMSKVKSLLESMMRSNENSOOMSRURSSSDSTTPSUUNSVLVSXXM" + + "SYYRSZWZTAAATCCATDCDTF\x00\x18TGGOTHHATJJKTKKLTLLSTMKMTNUNTOONTPMPTRURTT" + + "TOTVUVTWWNTZZAUAKRUGGAUK UMMIUN USSAUYRYUZZBVAATVCCTVDDRVEENVGGBVIIRVN" + + "NMVUUTWFLFWKAKWSSMXAAAXBBBXCCCXDDDXEEEXFFFXGGGXHHHXIIIXJJJXKKKXLLLXMMMXN" + + "NNXOOOXPPPXQQQXRRRXSSSXTTTXUUUXVVVXWWWXXXXXYYYXZZZYDMDYEEMYT\x00\x1bYUUG" + + "ZAAFZMMBZRARZWWEZZZZ\xff\xff\xff\xff" + +// altRegionISO3 holds a list of 3-letter region codes that cannot be +// mapped to 2-letter codes using the default algorithm. This is a short list. +const altRegionISO3 string = "SCGQUUSGSCOMPRKCYMSPMSRBATFMYTATN" + +// altRegionIDs holds a list of regionIDs the positions of which match those +// of the 3-letter ISO codes in altRegionISO3. +// Size: 22 bytes, 11 elements +var altRegionIDs = [11]uint16{ + 0x0058, 0x0071, 0x0089, 0x00a9, 0x00ab, 0x00ae, 0x00eb, 0x0106, + 0x0122, 0x0160, 0x00dd, +} + +// Size: 80 bytes, 20 elements +var regionOldMap = [20]FromTo{ + 0: {From: 0x44, To: 0xc5}, + 1: {From: 0x59, To: 0xa8}, + 2: {From: 0x60, To: 0x61}, + 3: {From: 0x67, To: 0x3b}, + 4: {From: 0x7a, To: 0x79}, + 5: {From: 0x94, To: 0x37}, + 6: {From: 0xa4, To: 0x134}, + 7: {From: 0xc2, To: 0x134}, + 8: {From: 0xd8, To: 0x140}, + 9: {From: 0xdd, To: 0x2b}, + 10: {From: 0xf0, To: 0x134}, + 11: {From: 0xf3, To: 0xe3}, + 12: {From: 0xfd, To: 0x71}, + 13: {From: 0x104, To: 0x165}, + 14: {From: 0x12b, To: 0x127}, + 15: {From: 0x133, To: 0x7c}, + 16: {From: 0x13b, To: 0x13f}, + 17: {From: 0x142, To: 0x134}, + 18: {From: 0x15e, To: 0x15f}, + 19: {From: 0x164, To: 0x4b}, +} + +// m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are +// codes indicating collections of regions. +// Size: 718 bytes, 359 elements +var m49 = [359]int16{ + // Entry 0 - 3F + 0, 1, 2, 3, 5, 9, 11, 13, + 14, 15, 17, 18, 19, 21, 29, 30, + 34, 35, 39, 53, 54, 57, 61, 142, + 143, 145, 150, 151, 154, 155, 202, 419, + 958, 0, 20, 784, 4, 28, 660, 8, + 51, 530, 24, 10, 32, 16, 40, 36, + 533, 248, 31, 70, 52, 50, 56, 854, + 100, 48, 108, 204, 652, 60, 96, 68, + // Entry 40 - 7F + 535, 76, 44, 64, 104, 74, 72, 112, + 84, 124, 166, 180, 140, 178, 756, 384, + 184, 152, 120, 156, 170, 0, 0, 188, + 891, 296, 192, 132, 531, 162, 196, 203, + 278, 276, 0, 262, 208, 212, 214, 204, + 12, 0, 218, 233, 818, 732, 232, 724, + 231, 967, 0, 246, 242, 238, 583, 234, + 0, 250, 249, 266, 826, 308, 268, 254, + // Entry 80 - BF + 831, 288, 292, 304, 270, 324, 312, 226, + 300, 239, 320, 316, 624, 328, 344, 334, + 340, 191, 332, 348, 854, 0, 360, 372, + 376, 833, 356, 86, 368, 364, 352, 380, + 832, 388, 400, 392, 581, 404, 417, 116, + 296, 174, 659, 408, 410, 414, 136, 398, + 418, 422, 662, 438, 144, 430, 426, 440, + 442, 428, 434, 504, 492, 498, 499, 663, + // Entry C0 - FF + 450, 584, 581, 807, 466, 104, 496, 446, + 580, 474, 478, 500, 470, 480, 462, 454, + 484, 458, 508, 516, 540, 562, 574, 566, + 548, 558, 528, 578, 524, 10, 520, 536, + 570, 554, 512, 591, 0, 604, 258, 598, + 608, 586, 616, 666, 612, 630, 275, 620, + 581, 585, 600, 591, 634, 959, 960, 961, + 962, 963, 964, 965, 966, 967, 968, 969, + // Entry 100 - 13F + 970, 971, 972, 638, 716, 642, 688, 643, + 646, 682, 90, 690, 729, 752, 702, 654, + 705, 744, 703, 694, 674, 686, 706, 740, + 728, 678, 810, 222, 534, 760, 748, 0, + 796, 148, 260, 768, 764, 762, 772, 626, + 795, 788, 776, 626, 792, 780, 798, 158, + 834, 804, 800, 826, 581, 0, 840, 858, + 860, 336, 670, 704, 862, 92, 850, 704, + // Entry 140 - 17F + 548, 876, 581, 882, 973, 974, 975, 976, + 977, 978, 979, 980, 981, 982, 983, 984, + 985, 986, 987, 988, 989, 990, 991, 992, + 993, 994, 995, 996, 997, 998, 720, 887, + 175, 891, 710, 894, 180, 716, 999, +} + +// m49Index gives indexes into fromM49 based on the three most significant bits +// of a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in +// +// fromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]] +// +// for an entry where the first 7 bits match the 7 lsb of the UN.M49 code. +// The region code is stored in the 9 lsb of the indexed value. +// Size: 18 bytes, 9 elements +var m49Index = [9]int16{ + 0, 59, 108, 143, 181, 220, 259, 291, + 333, +} + +// fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details. +// Size: 666 bytes, 333 elements +var fromM49 = [333]uint16{ + // Entry 0 - 3F + 0x0201, 0x0402, 0x0603, 0x0824, 0x0a04, 0x1027, 0x1205, 0x142b, + 0x1606, 0x1868, 0x1a07, 0x1c08, 0x1e09, 0x202d, 0x220a, 0x240b, + 0x260c, 0x2822, 0x2a0d, 0x302a, 0x3825, 0x3a0e, 0x3c0f, 0x3e32, + 0x402c, 0x4410, 0x4611, 0x482f, 0x4e12, 0x502e, 0x5842, 0x6039, + 0x6435, 0x6628, 0x6834, 0x6a13, 0x6c14, 0x7036, 0x7215, 0x783d, + 0x7a16, 0x8043, 0x883f, 0x8c33, 0x9046, 0x9445, 0x9841, 0xa848, + 0xac9b, 0xb50a, 0xb93d, 0xc03e, 0xc838, 0xd0c5, 0xd83a, 0xe047, + 0xe8a7, 0xf052, 0xf849, 0x085b, 0x10ae, 0x184c, 0x1c17, 0x1e18, + // Entry 40 - 7F + 0x20b4, 0x2219, 0x2921, 0x2c1a, 0x2e1b, 0x3051, 0x341c, 0x361d, + 0x3853, 0x3d2f, 0x445d, 0x4c4a, 0x5454, 0x5ca9, 0x5f60, 0x644d, + 0x684b, 0x7050, 0x7857, 0x7e91, 0x805a, 0x885e, 0x941e, 0x965f, + 0x983b, 0xa064, 0xa865, 0xac66, 0xb46a, 0xbd1b, 0xc487, 0xcc70, + 0xce70, 0xd06e, 0xd26b, 0xd477, 0xdc75, 0xde89, 0xe474, 0xec73, + 0xf031, 0xf27a, 0xf479, 0xfc7f, 0x04e6, 0x0922, 0x0c63, 0x147b, + 0x187e, 0x1c84, 0x26ee, 0x2861, 0x2c60, 0x3061, 0x4081, 0x4882, + 0x50a8, 0x5888, 0x6083, 0x687d, 0x7086, 0x788b, 0x808a, 0x8885, + // Entry 80 - BF + 0x908d, 0x9892, 0x9c8f, 0xa139, 0xa890, 0xb08e, 0xb893, 0xc09e, + 0xc89a, 0xd096, 0xd89d, 0xe09c, 0xe897, 0xf098, 0xf89f, 0x004f, + 0x08a1, 0x10a3, 0x1caf, 0x20a2, 0x28a5, 0x30ab, 0x34ac, 0x3cad, + 0x42a6, 0x44b0, 0x461f, 0x4cb1, 0x54b6, 0x58b9, 0x5cb5, 0x64ba, + 0x6cb3, 0x70b7, 0x74b8, 0x7cc7, 0x84c0, 0x8ccf, 0x94d1, 0x9cce, + 0xa4c4, 0xaccc, 0xb4c9, 0xbcca, 0xc0cd, 0xc8d0, 0xd8bc, 0xe0c6, + 0xe4bd, 0xe6be, 0xe8cb, 0xf0bb, 0xf8d2, 0x00e2, 0x08d3, 0x10de, + 0x18dc, 0x20da, 0x2429, 0x265c, 0x2a30, 0x2d1c, 0x2e40, 0x30df, + // Entry C0 - FF + 0x38d4, 0x4940, 0x54e1, 0x5cd9, 0x64d5, 0x6cd7, 0x74e0, 0x7cd6, + 0x84db, 0x88c8, 0x8b34, 0x8e76, 0x90c1, 0x92f1, 0x94e9, 0x9ee3, + 0xace7, 0xb0f2, 0xb8e5, 0xc0e8, 0xc8ec, 0xd0ea, 0xd8ef, 0xe08c, + 0xe527, 0xeced, 0xf4f4, 0xfd03, 0x0505, 0x0707, 0x0d08, 0x183c, + 0x1d0f, 0x26aa, 0x2826, 0x2cb2, 0x2ebf, 0x34eb, 0x3d3a, 0x4514, + 0x4d19, 0x5509, 0x5d15, 0x6106, 0x650b, 0x6d13, 0x7d0e, 0x7f12, + 0x813f, 0x8310, 0x8516, 0x8d62, 0x9965, 0xa15e, 0xa86f, 0xb118, + 0xb30c, 0xb86d, 0xc10c, 0xc917, 0xd111, 0xd91e, 0xe10d, 0xe84e, + // Entry 100 - 13F + 0xf11d, 0xf525, 0xf924, 0x0123, 0x0926, 0x112a, 0x192d, 0x2023, + 0x2929, 0x312c, 0x3728, 0x3920, 0x3d2e, 0x4132, 0x4931, 0x4ec3, + 0x551a, 0x646c, 0x747c, 0x7e80, 0x80a0, 0x8299, 0x8530, 0x9136, + 0xa53e, 0xac37, 0xb537, 0xb938, 0xbd3c, 0xd941, 0xe543, 0xed5f, + 0xef5f, 0xf658, 0xfd63, 0x7c20, 0x7ef5, 0x80f6, 0x82f7, 0x84f8, + 0x86f9, 0x88fa, 0x8afb, 0x8cfc, 0x8e71, 0x90fe, 0x92ff, 0x9500, + 0x9701, 0x9902, 0x9b44, 0x9d45, 0x9f46, 0xa147, 0xa348, 0xa549, + 0xa74a, 0xa94b, 0xab4c, 0xad4d, 0xaf4e, 0xb14f, 0xb350, 0xb551, + // Entry 140 - 17F + 0xb752, 0xb953, 0xbb54, 0xbd55, 0xbf56, 0xc157, 0xc358, 0xc559, + 0xc75a, 0xc95b, 0xcb5c, 0xcd5d, 0xcf66, +} + +// Size: 2128 bytes +var variantIndex = map[string]uint8{ + "1606nict": 0x0, + "1694acad": 0x1, + "1901": 0x2, + "1959acad": 0x3, + "1994": 0x67, + "1996": 0x4, + "abl1943": 0x5, + "akuapem": 0x6, + "alalc97": 0x69, + "aluku": 0x7, + "ao1990": 0x8, + "aranes": 0x9, + "arevela": 0xa, + "arevmda": 0xb, + "arkaika": 0xc, + "asante": 0xd, + "auvern": 0xe, + "baku1926": 0xf, + "balanka": 0x10, + "barla": 0x11, + "basiceng": 0x12, + "bauddha": 0x13, + "bciav": 0x14, + "bcizbl": 0x15, + "biscayan": 0x16, + "biske": 0x62, + "bohoric": 0x17, + "boont": 0x18, + "bornholm": 0x19, + "cisaup": 0x1a, + "colb1945": 0x1b, + "cornu": 0x1c, + "creiss": 0x1d, + "dajnko": 0x1e, + "ekavsk": 0x1f, + "emodeng": 0x20, + "fonipa": 0x6a, + "fonkirsh": 0x6b, + "fonnapa": 0x6c, + "fonupa": 0x6d, + "fonxsamp": 0x6e, + "gallo": 0x21, + "gascon": 0x22, + "grclass": 0x23, + "grital": 0x24, + "grmistr": 0x25, + "hepburn": 0x26, + "heploc": 0x68, + "hognorsk": 0x27, + "hsistemo": 0x28, + "ijekavsk": 0x29, + "itihasa": 0x2a, + "ivanchov": 0x2b, + "jauer": 0x2c, + "jyutping": 0x2d, + "kkcor": 0x2e, + "kociewie": 0x2f, + "kscor": 0x30, + "laukika": 0x31, + "lemosin": 0x32, + "lengadoc": 0x33, + "lipaw": 0x63, + "ltg1929": 0x34, + "ltg2007": 0x35, + "luna1918": 0x36, + "metelko": 0x37, + "monoton": 0x38, + "ndyuka": 0x39, + "nedis": 0x3a, + "newfound": 0x3b, + "nicard": 0x3c, + "njiva": 0x64, + "nulik": 0x3d, + "osojs": 0x65, + "oxendict": 0x3e, + "pahawh2": 0x3f, + "pahawh3": 0x40, + "pahawh4": 0x41, + "pamaka": 0x42, + "peano": 0x43, + "petr1708": 0x44, + "pinyin": 0x45, + "polyton": 0x46, + "provenc": 0x47, + "puter": 0x48, + "rigik": 0x49, + "rozaj": 0x4a, + "rumgr": 0x4b, + "scotland": 0x4c, + "scouse": 0x4d, + "simple": 0x6f, + "solba": 0x66, + "sotav": 0x4e, + "spanglis": 0x4f, + "surmiran": 0x50, + "sursilv": 0x51, + "sutsilv": 0x52, + "synnejyl": 0x53, + "tarask": 0x54, + "tongyong": 0x55, + "tunumiit": 0x56, + "uccor": 0x57, + "ucrcor": 0x58, + "ulster": 0x59, + "unifon": 0x5a, + "vaidika": 0x5b, + "valencia": 0x5c, + "vallader": 0x5d, + "vecdruka": 0x5e, + "vivaraup": 0x5f, + "wadegile": 0x60, + "xsistemo": 0x61, +} + +// variantNumSpecialized is the number of specialized variants in variants. +const variantNumSpecialized = 105 + +// nRegionGroups is the number of region groups. +const nRegionGroups = 33 + +type likelyLangRegion struct { + lang uint16 + region uint16 +} + +// likelyScript is a lookup table, indexed by scriptID, for the most likely +// languages and regions given a script. +// Size: 1052 bytes, 263 elements +var likelyScript = [263]likelyLangRegion{ + 1: {lang: 0x14e, region: 0x85}, + 3: {lang: 0x2a2, region: 0x107}, + 4: {lang: 0x1f, region: 0x9a}, + 5: {lang: 0x3a, region: 0x6c}, + 7: {lang: 0x3b, region: 0x9d}, + 8: {lang: 0x1d7, region: 0x28}, + 9: {lang: 0x13, region: 0x9d}, + 10: {lang: 0x5b, region: 0x96}, + 11: {lang: 0x60, region: 0x52}, + 12: {lang: 0xb9, region: 0xb5}, + 13: {lang: 0x63, region: 0x96}, + 14: {lang: 0xa5, region: 0x35}, + 15: {lang: 0x3e9, region: 0x9a}, + 17: {lang: 0x529, region: 0x12f}, + 18: {lang: 0x3b1, region: 0x9a}, + 19: {lang: 0x15e, region: 0x79}, + 20: {lang: 0xc2, region: 0x96}, + 21: {lang: 0x9d, region: 0xe8}, + 22: {lang: 0xdb, region: 0x35}, + 23: {lang: 0xf3, region: 0x49}, + 24: {lang: 0x4f0, region: 0x12c}, + 25: {lang: 0xe7, region: 0x13f}, + 26: {lang: 0xe5, region: 0x136}, + 29: {lang: 0xf1, region: 0x6c}, + 31: {lang: 0x1a0, region: 0x5e}, + 32: {lang: 0x3e2, region: 0x107}, + 34: {lang: 0x1be, region: 0x9a}, + 38: {lang: 0x15e, region: 0x79}, + 41: {lang: 0x133, region: 0x6c}, + 42: {lang: 0x431, region: 0x27}, + 44: {lang: 0x27, region: 0x70}, + 46: {lang: 0x210, region: 0x7e}, + 47: {lang: 0xfe, region: 0x38}, + 49: {lang: 0x19b, region: 0x9a}, + 50: {lang: 0x19e, region: 0x131}, + 51: {lang: 0x3e9, region: 0x9a}, + 52: {lang: 0x136, region: 0x88}, + 53: {lang: 0x1a4, region: 0x9a}, + 54: {lang: 0x39d, region: 0x9a}, + 55: {lang: 0x529, region: 0x12f}, + 56: {lang: 0x254, region: 0xac}, + 57: {lang: 0x529, region: 0x53}, + 58: {lang: 0x1cb, region: 0xe8}, + 59: {lang: 0x529, region: 0x53}, + 60: {lang: 0x529, region: 0x12f}, + 61: {lang: 0x2fd, region: 0x9c}, + 62: {lang: 0x1bc, region: 0x98}, + 63: {lang: 0x200, region: 0xa3}, + 64: {lang: 0x1c5, region: 0x12c}, + 65: {lang: 0x1ca, region: 0xb0}, + 68: {lang: 0x1d5, region: 0x93}, + 70: {lang: 0x142, region: 0x9f}, + 71: {lang: 0x254, region: 0xac}, + 72: {lang: 0x20e, region: 0x96}, + 73: {lang: 0x200, region: 0xa3}, + 75: {lang: 0x135, region: 0xc5}, + 76: {lang: 0x200, region: 0xa3}, + 78: {lang: 0x3bb, region: 0xe9}, + 79: {lang: 0x24a, region: 0xa7}, + 80: {lang: 0x3fa, region: 0x9a}, + 83: {lang: 0x251, region: 0x9a}, + 84: {lang: 0x254, region: 0xac}, + 86: {lang: 0x88, region: 0x9a}, + 87: {lang: 0x370, region: 0x124}, + 88: {lang: 0x2b8, region: 0xb0}, + 93: {lang: 0x29f, region: 0x9a}, + 94: {lang: 0x2a8, region: 0x9a}, + 95: {lang: 0x28f, region: 0x88}, + 96: {lang: 0x1a0, region: 0x88}, + 97: {lang: 0x2ac, region: 0x53}, + 99: {lang: 0x4f4, region: 0x12c}, + 100: {lang: 0x4f5, region: 0x12c}, + 101: {lang: 0x1be, region: 0x9a}, + 103: {lang: 0x337, region: 0x9d}, + 104: {lang: 0x4f7, region: 0x53}, + 105: {lang: 0xa9, region: 0x53}, + 108: {lang: 0x2e8, region: 0x113}, + 109: {lang: 0x4f8, region: 0x10c}, + 110: {lang: 0x4f8, region: 0x10c}, + 111: {lang: 0x304, region: 0x9a}, + 112: {lang: 0x31b, region: 0x9a}, + 113: {lang: 0x30b, region: 0x53}, + 115: {lang: 0x31e, region: 0x35}, + 116: {lang: 0x30e, region: 0x9a}, + 117: {lang: 0x414, region: 0xe9}, + 118: {lang: 0x331, region: 0xc5}, + 121: {lang: 0x4f9, region: 0x109}, + 122: {lang: 0x3b, region: 0xa2}, + 123: {lang: 0x353, region: 0xdc}, + 126: {lang: 0x2d0, region: 0x85}, + 127: {lang: 0x52a, region: 0x53}, + 128: {lang: 0x403, region: 0x97}, + 129: {lang: 0x3ee, region: 0x9a}, + 130: {lang: 0x39b, region: 0xc6}, + 131: {lang: 0x395, region: 0x9a}, + 132: {lang: 0x399, region: 0x136}, + 133: {lang: 0x429, region: 0x116}, + 135: {lang: 0x3b, region: 0x11d}, + 136: {lang: 0xfd, region: 0xc5}, + 139: {lang: 0x27d, region: 0x107}, + 140: {lang: 0x2c9, region: 0x53}, + 141: {lang: 0x39f, region: 0x9d}, + 142: {lang: 0x39f, region: 0x53}, + 144: {lang: 0x3ad, region: 0xb1}, + 146: {lang: 0x1c6, region: 0x53}, + 147: {lang: 0x4fd, region: 0x9d}, + 200: {lang: 0x3cb, region: 0x96}, + 203: {lang: 0x372, region: 0x10d}, + 204: {lang: 0x420, region: 0x98}, + 206: {lang: 0x4ff, region: 0x15f}, + 207: {lang: 0x3f0, region: 0x9a}, + 208: {lang: 0x45, region: 0x136}, + 209: {lang: 0x139, region: 0x7c}, + 210: {lang: 0x3e9, region: 0x9a}, + 212: {lang: 0x3e9, region: 0x9a}, + 213: {lang: 0x3fa, region: 0x9a}, + 214: {lang: 0x40c, region: 0xb4}, + 217: {lang: 0x433, region: 0x9a}, + 218: {lang: 0xef, region: 0xc6}, + 219: {lang: 0x43e, region: 0x96}, + 221: {lang: 0x44d, region: 0x35}, + 222: {lang: 0x44e, region: 0x9c}, + 226: {lang: 0x45a, region: 0xe8}, + 227: {lang: 0x11a, region: 0x9a}, + 228: {lang: 0x45e, region: 0x53}, + 229: {lang: 0x232, region: 0x53}, + 230: {lang: 0x450, region: 0x9a}, + 231: {lang: 0x4a5, region: 0x53}, + 232: {lang: 0x9f, region: 0x13f}, + 233: {lang: 0x461, region: 0x9a}, + 235: {lang: 0x528, region: 0xbb}, + 236: {lang: 0x153, region: 0xe8}, + 237: {lang: 0x128, region: 0xce}, + 238: {lang: 0x46b, region: 0x124}, + 239: {lang: 0xa9, region: 0x53}, + 240: {lang: 0x2ce, region: 0x9a}, + 243: {lang: 0x4ad, region: 0x11d}, + 244: {lang: 0x4be, region: 0xb5}, + 247: {lang: 0x1ce, region: 0x9a}, + 250: {lang: 0x3a9, region: 0x9d}, + 251: {lang: 0x22, region: 0x9c}, + 253: {lang: 0x1ea, region: 0x53}, + 254: {lang: 0xef, region: 0xc6}, +} + +type likelyScriptRegion struct { + region uint16 + script uint16 + flags uint8 +} + +// likelyLang is a lookup table, indexed by langID, for the most likely +// scripts and regions given incomplete information. If more entries exist for a +// given language, region and script are the index and size respectively +// of the list in likelyLangList. +// Size: 7980 bytes, 1330 elements +var likelyLang = [1330]likelyScriptRegion{ + 0: {region: 0x136, script: 0x5b, flags: 0x0}, + 1: {region: 0x70, script: 0x5b, flags: 0x0}, + 2: {region: 0x166, script: 0x5b, flags: 0x0}, + 3: {region: 0x166, script: 0x5b, flags: 0x0}, + 4: {region: 0x166, script: 0x5b, flags: 0x0}, + 5: {region: 0x7e, script: 0x20, flags: 0x0}, + 6: {region: 0x166, script: 0x5b, flags: 0x0}, + 7: {region: 0x166, script: 0x20, flags: 0x0}, + 8: {region: 0x81, script: 0x5b, flags: 0x0}, + 9: {region: 0x166, script: 0x5b, flags: 0x0}, + 10: {region: 0x166, script: 0x5b, flags: 0x0}, + 11: {region: 0x166, script: 0x5b, flags: 0x0}, + 12: {region: 0x96, script: 0x5b, flags: 0x0}, + 13: {region: 0x132, script: 0x5b, flags: 0x0}, + 14: {region: 0x81, script: 0x5b, flags: 0x0}, + 15: {region: 0x166, script: 0x5b, flags: 0x0}, + 16: {region: 0x166, script: 0x5b, flags: 0x0}, + 17: {region: 0x107, script: 0x20, flags: 0x0}, + 18: {region: 0x166, script: 0x5b, flags: 0x0}, + 19: {region: 0x9d, script: 0x9, flags: 0x0}, + 20: {region: 0x129, script: 0x5, flags: 0x0}, + 21: {region: 0x166, script: 0x5b, flags: 0x0}, + 22: {region: 0x162, script: 0x5b, flags: 0x0}, + 23: {region: 0x166, script: 0x5b, flags: 0x0}, + 24: {region: 0x166, script: 0x5b, flags: 0x0}, + 25: {region: 0x166, script: 0x5b, flags: 0x0}, + 26: {region: 0x166, script: 0x5b, flags: 0x0}, + 27: {region: 0x166, script: 0x5b, flags: 0x0}, + 28: {region: 0x52, script: 0x5b, flags: 0x0}, + 29: {region: 0x166, script: 0x5b, flags: 0x0}, + 30: {region: 0x166, script: 0x5b, flags: 0x0}, + 31: {region: 0x9a, script: 0x4, flags: 0x0}, + 32: {region: 0x166, script: 0x5b, flags: 0x0}, + 33: {region: 0x81, script: 0x5b, flags: 0x0}, + 34: {region: 0x9c, script: 0xfb, flags: 0x0}, + 35: {region: 0x166, script: 0x5b, flags: 0x0}, + 36: {region: 0x166, script: 0x5b, flags: 0x0}, + 37: {region: 0x14e, script: 0x5b, flags: 0x0}, + 38: {region: 0x107, script: 0x20, flags: 0x0}, + 39: {region: 0x70, script: 0x2c, flags: 0x0}, + 40: {region: 0x166, script: 0x5b, flags: 0x0}, + 41: {region: 0x166, script: 0x5b, flags: 0x0}, + 42: {region: 0xd7, script: 0x5b, flags: 0x0}, + 43: {region: 0x166, script: 0x5b, flags: 0x0}, + 45: {region: 0x166, script: 0x5b, flags: 0x0}, + 46: {region: 0x166, script: 0x5b, flags: 0x0}, + 47: {region: 0x166, script: 0x5b, flags: 0x0}, + 48: {region: 0x166, script: 0x5b, flags: 0x0}, + 49: {region: 0x166, script: 0x5b, flags: 0x0}, + 50: {region: 0x166, script: 0x5b, flags: 0x0}, + 51: {region: 0x96, script: 0x5b, flags: 0x0}, + 52: {region: 0x166, script: 0x5, flags: 0x0}, + 53: {region: 0x123, script: 0x5, flags: 0x0}, + 54: {region: 0x166, script: 0x5b, flags: 0x0}, + 55: {region: 0x166, script: 0x5b, flags: 0x0}, + 56: {region: 0x166, script: 0x5b, flags: 0x0}, + 57: {region: 0x166, script: 0x5b, flags: 0x0}, + 58: {region: 0x6c, script: 0x5, flags: 0x0}, + 59: {region: 0x0, script: 0x3, flags: 0x1}, + 60: {region: 0x166, script: 0x5b, flags: 0x0}, + 61: {region: 0x51, script: 0x5b, flags: 0x0}, + 62: {region: 0x3f, script: 0x5b, flags: 0x0}, + 63: {region: 0x68, script: 0x5, flags: 0x0}, + 65: {region: 0xbb, script: 0x5, flags: 0x0}, + 66: {region: 0x6c, script: 0x5, flags: 0x0}, + 67: {region: 0x9a, script: 0xe, flags: 0x0}, + 68: {region: 0x130, script: 0x5b, flags: 0x0}, + 69: {region: 0x136, script: 0xd0, flags: 0x0}, + 70: {region: 0x166, script: 0x5b, flags: 0x0}, + 71: {region: 0x166, script: 0x5b, flags: 0x0}, + 72: {region: 0x6f, script: 0x5b, flags: 0x0}, + 73: {region: 0x166, script: 0x5b, flags: 0x0}, + 74: {region: 0x166, script: 0x5b, flags: 0x0}, + 75: {region: 0x49, script: 0x5b, flags: 0x0}, + 76: {region: 0x166, script: 0x5b, flags: 0x0}, + 77: {region: 0x107, script: 0x20, flags: 0x0}, + 78: {region: 0x166, script: 0x5, flags: 0x0}, + 79: {region: 0x166, script: 0x5b, flags: 0x0}, + 80: {region: 0x166, script: 0x5b, flags: 0x0}, + 81: {region: 0x166, script: 0x5b, flags: 0x0}, + 82: {region: 0x9a, script: 0x22, flags: 0x0}, + 83: {region: 0x166, script: 0x5b, flags: 0x0}, + 84: {region: 0x166, script: 0x5b, flags: 0x0}, + 85: {region: 0x166, script: 0x5b, flags: 0x0}, + 86: {region: 0x3f, script: 0x5b, flags: 0x0}, + 87: {region: 0x166, script: 0x5b, flags: 0x0}, + 88: {region: 0x3, script: 0x5, flags: 0x1}, + 89: {region: 0x107, script: 0x20, flags: 0x0}, + 90: {region: 0xe9, script: 0x5, flags: 0x0}, + 91: {region: 0x96, script: 0x5b, flags: 0x0}, + 92: {region: 0xdc, script: 0x22, flags: 0x0}, + 93: {region: 0x2e, script: 0x5b, flags: 0x0}, + 94: {region: 0x52, script: 0x5b, flags: 0x0}, + 95: {region: 0x166, script: 0x5b, flags: 0x0}, + 96: {region: 0x52, script: 0xb, flags: 0x0}, + 97: {region: 0x166, script: 0x5b, flags: 0x0}, + 98: {region: 0x166, script: 0x5b, flags: 0x0}, + 99: {region: 0x96, script: 0x5b, flags: 0x0}, + 100: {region: 0x166, script: 0x5b, flags: 0x0}, + 101: {region: 0x52, script: 0x5b, flags: 0x0}, + 102: {region: 0x166, script: 0x5b, flags: 0x0}, + 103: {region: 0x166, script: 0x5b, flags: 0x0}, + 104: {region: 0x166, script: 0x5b, flags: 0x0}, + 105: {region: 0x166, script: 0x5b, flags: 0x0}, + 106: {region: 0x4f, script: 0x5b, flags: 0x0}, + 107: {region: 0x166, script: 0x5b, flags: 0x0}, + 108: {region: 0x166, script: 0x5b, flags: 0x0}, + 109: {region: 0x166, script: 0x5b, flags: 0x0}, + 110: {region: 0x166, script: 0x2c, flags: 0x0}, + 111: {region: 0x166, script: 0x5b, flags: 0x0}, + 112: {region: 0x166, script: 0x5b, flags: 0x0}, + 113: {region: 0x47, script: 0x20, flags: 0x0}, + 114: {region: 0x166, script: 0x5b, flags: 0x0}, + 115: {region: 0x166, script: 0x5b, flags: 0x0}, + 116: {region: 0x10c, script: 0x5, flags: 0x0}, + 117: {region: 0x163, script: 0x5b, flags: 0x0}, + 118: {region: 0x166, script: 0x5b, flags: 0x0}, + 119: {region: 0x96, script: 0x5b, flags: 0x0}, + 120: {region: 0x166, script: 0x5b, flags: 0x0}, + 121: {region: 0x130, script: 0x5b, flags: 0x0}, + 122: {region: 0x52, script: 0x5b, flags: 0x0}, + 123: {region: 0x9a, script: 0xe6, flags: 0x0}, + 124: {region: 0xe9, script: 0x5, flags: 0x0}, + 125: {region: 0x9a, script: 0x22, flags: 0x0}, + 126: {region: 0x38, script: 0x20, flags: 0x0}, + 127: {region: 0x9a, script: 0x22, flags: 0x0}, + 128: {region: 0xe9, script: 0x5, flags: 0x0}, + 129: {region: 0x12c, script: 0x34, flags: 0x0}, + 131: {region: 0x9a, script: 0x22, flags: 0x0}, + 132: {region: 0x166, script: 0x5b, flags: 0x0}, + 133: {region: 0x9a, script: 0x22, flags: 0x0}, + 134: {region: 0xe8, script: 0x5b, flags: 0x0}, + 135: {region: 0x166, script: 0x5b, flags: 0x0}, + 136: {region: 0x9a, script: 0x22, flags: 0x0}, + 137: {region: 0x166, script: 0x5b, flags: 0x0}, + 138: {region: 0x140, script: 0x5b, flags: 0x0}, + 139: {region: 0x166, script: 0x5b, flags: 0x0}, + 140: {region: 0x166, script: 0x5b, flags: 0x0}, + 141: {region: 0xe8, script: 0x5b, flags: 0x0}, + 142: {region: 0x166, script: 0x5b, flags: 0x0}, + 143: {region: 0xd7, script: 0x5b, flags: 0x0}, + 144: {region: 0x166, script: 0x5b, flags: 0x0}, + 145: {region: 0x166, script: 0x5b, flags: 0x0}, + 146: {region: 0x166, script: 0x5b, flags: 0x0}, + 147: {region: 0x166, script: 0x2c, flags: 0x0}, + 148: {region: 0x9a, script: 0x22, flags: 0x0}, + 149: {region: 0x96, script: 0x5b, flags: 0x0}, + 150: {region: 0x166, script: 0x5b, flags: 0x0}, + 151: {region: 0x166, script: 0x5b, flags: 0x0}, + 152: {region: 0x115, script: 0x5b, flags: 0x0}, + 153: {region: 0x166, script: 0x5b, flags: 0x0}, + 154: {region: 0x166, script: 0x5b, flags: 0x0}, + 155: {region: 0x52, script: 0x5b, flags: 0x0}, + 156: {region: 0x166, script: 0x5b, flags: 0x0}, + 157: {region: 0xe8, script: 0x5b, flags: 0x0}, + 158: {region: 0x166, script: 0x5b, flags: 0x0}, + 159: {region: 0x13f, script: 0xe8, flags: 0x0}, + 160: {region: 0xc4, script: 0x5b, flags: 0x0}, + 161: {region: 0x166, script: 0x5b, flags: 0x0}, + 162: {region: 0x166, script: 0x5b, flags: 0x0}, + 163: {region: 0xc4, script: 0x5b, flags: 0x0}, + 164: {region: 0x166, script: 0x5b, flags: 0x0}, + 165: {region: 0x35, script: 0xe, flags: 0x0}, + 166: {region: 0x166, script: 0x5b, flags: 0x0}, + 167: {region: 0x166, script: 0x5b, flags: 0x0}, + 168: {region: 0x166, script: 0x5b, flags: 0x0}, + 169: {region: 0x53, script: 0xef, flags: 0x0}, + 170: {region: 0x166, script: 0x5b, flags: 0x0}, + 171: {region: 0x166, script: 0x5b, flags: 0x0}, + 172: {region: 0x166, script: 0x5b, flags: 0x0}, + 173: {region: 0x9a, script: 0xe, flags: 0x0}, + 174: {region: 0x166, script: 0x5b, flags: 0x0}, + 175: {region: 0x9d, script: 0x5, flags: 0x0}, + 176: {region: 0x166, script: 0x5b, flags: 0x0}, + 177: {region: 0x4f, script: 0x5b, flags: 0x0}, + 178: {region: 0x79, script: 0x5b, flags: 0x0}, + 179: {region: 0x9a, script: 0x22, flags: 0x0}, + 180: {region: 0xe9, script: 0x5, flags: 0x0}, + 181: {region: 0x9a, script: 0x22, flags: 0x0}, + 182: {region: 0x166, script: 0x5b, flags: 0x0}, + 183: {region: 0x33, script: 0x5b, flags: 0x0}, + 184: {region: 0x166, script: 0x5b, flags: 0x0}, + 185: {region: 0xb5, script: 0xc, flags: 0x0}, + 186: {region: 0x52, script: 0x5b, flags: 0x0}, + 187: {region: 0x166, script: 0x2c, flags: 0x0}, + 188: {region: 0xe8, script: 0x5b, flags: 0x0}, + 189: {region: 0x166, script: 0x5b, flags: 0x0}, + 190: {region: 0xe9, script: 0x22, flags: 0x0}, + 191: {region: 0x107, script: 0x20, flags: 0x0}, + 192: {region: 0x160, script: 0x5b, flags: 0x0}, + 193: {region: 0x166, script: 0x5b, flags: 0x0}, + 194: {region: 0x96, script: 0x5b, flags: 0x0}, + 195: {region: 0x166, script: 0x5b, flags: 0x0}, + 196: {region: 0x52, script: 0x5b, flags: 0x0}, + 197: {region: 0x166, script: 0x5b, flags: 0x0}, + 198: {region: 0x166, script: 0x5b, flags: 0x0}, + 199: {region: 0x166, script: 0x5b, flags: 0x0}, + 200: {region: 0x87, script: 0x5b, flags: 0x0}, + 201: {region: 0x166, script: 0x5b, flags: 0x0}, + 202: {region: 0x166, script: 0x5b, flags: 0x0}, + 203: {region: 0x166, script: 0x5b, flags: 0x0}, + 204: {region: 0x166, script: 0x5b, flags: 0x0}, + 205: {region: 0x6e, script: 0x2c, flags: 0x0}, + 206: {region: 0x166, script: 0x5b, flags: 0x0}, + 207: {region: 0x166, script: 0x5b, flags: 0x0}, + 208: {region: 0x52, script: 0x5b, flags: 0x0}, + 209: {region: 0x166, script: 0x5b, flags: 0x0}, + 210: {region: 0x166, script: 0x5b, flags: 0x0}, + 211: {region: 0xc4, script: 0x5b, flags: 0x0}, + 212: {region: 0x166, script: 0x5b, flags: 0x0}, + 213: {region: 0x166, script: 0x5b, flags: 0x0}, + 214: {region: 0x166, script: 0x5b, flags: 0x0}, + 215: {region: 0x6f, script: 0x5b, flags: 0x0}, + 216: {region: 0x166, script: 0x5b, flags: 0x0}, + 217: {region: 0x166, script: 0x5b, flags: 0x0}, + 218: {region: 0xd7, script: 0x5b, flags: 0x0}, + 219: {region: 0x35, script: 0x16, flags: 0x0}, + 220: {region: 0x107, script: 0x20, flags: 0x0}, + 221: {region: 0xe8, script: 0x5b, flags: 0x0}, + 222: {region: 0x166, script: 0x5b, flags: 0x0}, + 223: {region: 0x132, script: 0x5b, flags: 0x0}, + 224: {region: 0x8b, script: 0x5b, flags: 0x0}, + 225: {region: 0x76, script: 0x5b, flags: 0x0}, + 226: {region: 0x107, script: 0x20, flags: 0x0}, + 227: {region: 0x136, script: 0x5b, flags: 0x0}, + 228: {region: 0x49, script: 0x5b, flags: 0x0}, + 229: {region: 0x136, script: 0x1a, flags: 0x0}, + 230: {region: 0xa7, script: 0x5, flags: 0x0}, + 231: {region: 0x13f, script: 0x19, flags: 0x0}, + 232: {region: 0x166, script: 0x5b, flags: 0x0}, + 233: {region: 0x9c, script: 0x5, flags: 0x0}, + 234: {region: 0x166, script: 0x5b, flags: 0x0}, + 235: {region: 0x166, script: 0x5b, flags: 0x0}, + 236: {region: 0x166, script: 0x5b, flags: 0x0}, + 237: {region: 0x166, script: 0x5b, flags: 0x0}, + 238: {region: 0x166, script: 0x5b, flags: 0x0}, + 239: {region: 0xc6, script: 0xda, flags: 0x0}, + 240: {region: 0x79, script: 0x5b, flags: 0x0}, + 241: {region: 0x6c, script: 0x1d, flags: 0x0}, + 242: {region: 0xe8, script: 0x5b, flags: 0x0}, + 243: {region: 0x49, script: 0x17, flags: 0x0}, + 244: {region: 0x131, script: 0x20, flags: 0x0}, + 245: {region: 0x49, script: 0x17, flags: 0x0}, + 246: {region: 0x49, script: 0x17, flags: 0x0}, + 247: {region: 0x49, script: 0x17, flags: 0x0}, + 248: {region: 0x49, script: 0x17, flags: 0x0}, + 249: {region: 0x10b, script: 0x5b, flags: 0x0}, + 250: {region: 0x5f, script: 0x5b, flags: 0x0}, + 251: {region: 0xea, script: 0x5b, flags: 0x0}, + 252: {region: 0x49, script: 0x17, flags: 0x0}, + 253: {region: 0xc5, script: 0x88, flags: 0x0}, + 254: {region: 0x8, script: 0x2, flags: 0x1}, + 255: {region: 0x107, script: 0x20, flags: 0x0}, + 256: {region: 0x7c, script: 0x5b, flags: 0x0}, + 257: {region: 0x64, script: 0x5b, flags: 0x0}, + 258: {region: 0x166, script: 0x5b, flags: 0x0}, + 259: {region: 0x166, script: 0x5b, flags: 0x0}, + 260: {region: 0x166, script: 0x5b, flags: 0x0}, + 261: {region: 0x166, script: 0x5b, flags: 0x0}, + 262: {region: 0x136, script: 0x5b, flags: 0x0}, + 263: {region: 0x107, script: 0x20, flags: 0x0}, + 264: {region: 0xa5, script: 0x5b, flags: 0x0}, + 265: {region: 0x166, script: 0x5b, flags: 0x0}, + 266: {region: 0x166, script: 0x5b, flags: 0x0}, + 267: {region: 0x9a, script: 0x5, flags: 0x0}, + 268: {region: 0x166, script: 0x5b, flags: 0x0}, + 269: {region: 0x61, script: 0x5b, flags: 0x0}, + 270: {region: 0x166, script: 0x5b, flags: 0x0}, + 271: {region: 0x49, script: 0x5b, flags: 0x0}, + 272: {region: 0x166, script: 0x5b, flags: 0x0}, + 273: {region: 0x166, script: 0x5b, flags: 0x0}, + 274: {region: 0x166, script: 0x5b, flags: 0x0}, + 275: {region: 0x166, script: 0x5, flags: 0x0}, + 276: {region: 0x49, script: 0x5b, flags: 0x0}, + 277: {region: 0x166, script: 0x5b, flags: 0x0}, + 278: {region: 0x166, script: 0x5b, flags: 0x0}, + 279: {region: 0xd5, script: 0x5b, flags: 0x0}, + 280: {region: 0x4f, script: 0x5b, flags: 0x0}, + 281: {region: 0x166, script: 0x5b, flags: 0x0}, + 282: {region: 0x9a, script: 0x5, flags: 0x0}, + 283: {region: 0x166, script: 0x5b, flags: 0x0}, + 284: {region: 0x166, script: 0x5b, flags: 0x0}, + 285: {region: 0x166, script: 0x5b, flags: 0x0}, + 286: {region: 0x166, script: 0x2c, flags: 0x0}, + 287: {region: 0x61, script: 0x5b, flags: 0x0}, + 288: {region: 0xc4, script: 0x5b, flags: 0x0}, + 289: {region: 0xd1, script: 0x5b, flags: 0x0}, + 290: {region: 0x166, script: 0x5b, flags: 0x0}, + 291: {region: 0xdc, script: 0x22, flags: 0x0}, + 292: {region: 0x52, script: 0x5b, flags: 0x0}, + 293: {region: 0x166, script: 0x5b, flags: 0x0}, + 294: {region: 0x166, script: 0x5b, flags: 0x0}, + 295: {region: 0x166, script: 0x5b, flags: 0x0}, + 296: {region: 0xce, script: 0xed, flags: 0x0}, + 297: {region: 0x166, script: 0x5b, flags: 0x0}, + 298: {region: 0x166, script: 0x5b, flags: 0x0}, + 299: {region: 0x115, script: 0x5b, flags: 0x0}, + 300: {region: 0x37, script: 0x5b, flags: 0x0}, + 301: {region: 0x43, script: 0xef, flags: 0x0}, + 302: {region: 0x166, script: 0x5b, flags: 0x0}, + 303: {region: 0xa5, script: 0x5b, flags: 0x0}, + 304: {region: 0x81, script: 0x5b, flags: 0x0}, + 305: {region: 0xd7, script: 0x5b, flags: 0x0}, + 306: {region: 0x9f, script: 0x5b, flags: 0x0}, + 307: {region: 0x6c, script: 0x29, flags: 0x0}, + 308: {region: 0x166, script: 0x5b, flags: 0x0}, + 309: {region: 0xc5, script: 0x4b, flags: 0x0}, + 310: {region: 0x88, script: 0x34, flags: 0x0}, + 311: {region: 0x166, script: 0x5b, flags: 0x0}, + 312: {region: 0x166, script: 0x5b, flags: 0x0}, + 313: {region: 0xa, script: 0x2, flags: 0x1}, + 314: {region: 0x166, script: 0x5b, flags: 0x0}, + 315: {region: 0x166, script: 0x5b, flags: 0x0}, + 316: {region: 0x1, script: 0x5b, flags: 0x0}, + 317: {region: 0x166, script: 0x5b, flags: 0x0}, + 318: {region: 0x6f, script: 0x5b, flags: 0x0}, + 319: {region: 0x136, script: 0x5b, flags: 0x0}, + 320: {region: 0x6b, script: 0x5b, flags: 0x0}, + 321: {region: 0x166, script: 0x5b, flags: 0x0}, + 322: {region: 0x9f, script: 0x46, flags: 0x0}, + 323: {region: 0x166, script: 0x5b, flags: 0x0}, + 324: {region: 0x166, script: 0x5b, flags: 0x0}, + 325: {region: 0x6f, script: 0x5b, flags: 0x0}, + 326: {region: 0x52, script: 0x5b, flags: 0x0}, + 327: {region: 0x6f, script: 0x5b, flags: 0x0}, + 328: {region: 0x9d, script: 0x5, flags: 0x0}, + 329: {region: 0x166, script: 0x5b, flags: 0x0}, + 330: {region: 0x166, script: 0x5b, flags: 0x0}, + 331: {region: 0x166, script: 0x5b, flags: 0x0}, + 332: {region: 0x166, script: 0x5b, flags: 0x0}, + 333: {region: 0x87, script: 0x5b, flags: 0x0}, + 334: {region: 0xc, script: 0x2, flags: 0x1}, + 335: {region: 0x166, script: 0x5b, flags: 0x0}, + 336: {region: 0xc4, script: 0x5b, flags: 0x0}, + 337: {region: 0x73, script: 0x5b, flags: 0x0}, + 338: {region: 0x10c, script: 0x5, flags: 0x0}, + 339: {region: 0xe8, script: 0x5b, flags: 0x0}, + 340: {region: 0x10d, script: 0x5b, flags: 0x0}, + 341: {region: 0x74, script: 0x5b, flags: 0x0}, + 342: {region: 0x166, script: 0x5b, flags: 0x0}, + 343: {region: 0x166, script: 0x5b, flags: 0x0}, + 344: {region: 0x77, script: 0x5b, flags: 0x0}, + 345: {region: 0x166, script: 0x5b, flags: 0x0}, + 346: {region: 0x3b, script: 0x5b, flags: 0x0}, + 347: {region: 0x166, script: 0x5b, flags: 0x0}, + 348: {region: 0x166, script: 0x5b, flags: 0x0}, + 349: {region: 0x166, script: 0x5b, flags: 0x0}, + 350: {region: 0x79, script: 0x5b, flags: 0x0}, + 351: {region: 0x136, script: 0x5b, flags: 0x0}, + 352: {region: 0x79, script: 0x5b, flags: 0x0}, + 353: {region: 0x61, script: 0x5b, flags: 0x0}, + 354: {region: 0x61, script: 0x5b, flags: 0x0}, + 355: {region: 0x52, script: 0x5, flags: 0x0}, + 356: {region: 0x141, script: 0x5b, flags: 0x0}, + 357: {region: 0x166, script: 0x5b, flags: 0x0}, + 358: {region: 0x85, script: 0x5b, flags: 0x0}, + 359: {region: 0x166, script: 0x5b, flags: 0x0}, + 360: {region: 0xd5, script: 0x5b, flags: 0x0}, + 361: {region: 0x9f, script: 0x5b, flags: 0x0}, + 362: {region: 0xd7, script: 0x5b, flags: 0x0}, + 363: {region: 0x166, script: 0x5b, flags: 0x0}, + 364: {region: 0x10c, script: 0x5b, flags: 0x0}, + 365: {region: 0xda, script: 0x5b, flags: 0x0}, + 366: {region: 0x97, script: 0x5b, flags: 0x0}, + 367: {region: 0x81, script: 0x5b, flags: 0x0}, + 368: {region: 0x166, script: 0x5b, flags: 0x0}, + 369: {region: 0xbd, script: 0x5b, flags: 0x0}, + 370: {region: 0x166, script: 0x5b, flags: 0x0}, + 371: {region: 0x166, script: 0x5b, flags: 0x0}, + 372: {region: 0x166, script: 0x5b, flags: 0x0}, + 373: {region: 0x53, script: 0x3b, flags: 0x0}, + 374: {region: 0x166, script: 0x5b, flags: 0x0}, + 375: {region: 0x96, script: 0x5b, flags: 0x0}, + 376: {region: 0x166, script: 0x5b, flags: 0x0}, + 377: {region: 0x166, script: 0x5b, flags: 0x0}, + 378: {region: 0x9a, script: 0x22, flags: 0x0}, + 379: {region: 0x166, script: 0x5b, flags: 0x0}, + 380: {region: 0x9d, script: 0x5, flags: 0x0}, + 381: {region: 0x7f, script: 0x5b, flags: 0x0}, + 382: {region: 0x7c, script: 0x5b, flags: 0x0}, + 383: {region: 0x166, script: 0x5b, flags: 0x0}, + 384: {region: 0x166, script: 0x5b, flags: 0x0}, + 385: {region: 0x166, script: 0x5b, flags: 0x0}, + 386: {region: 0x166, script: 0x5b, flags: 0x0}, + 387: {region: 0x166, script: 0x5b, flags: 0x0}, + 388: {region: 0x166, script: 0x5b, flags: 0x0}, + 389: {region: 0x70, script: 0x2c, flags: 0x0}, + 390: {region: 0x166, script: 0x5b, flags: 0x0}, + 391: {region: 0xdc, script: 0x22, flags: 0x0}, + 392: {region: 0x166, script: 0x5b, flags: 0x0}, + 393: {region: 0xa8, script: 0x5b, flags: 0x0}, + 394: {region: 0x166, script: 0x5b, flags: 0x0}, + 395: {region: 0xe9, script: 0x5, flags: 0x0}, + 396: {region: 0x166, script: 0x5b, flags: 0x0}, + 397: {region: 0xe9, script: 0x5, flags: 0x0}, + 398: {region: 0x166, script: 0x5b, flags: 0x0}, + 399: {region: 0x166, script: 0x5b, flags: 0x0}, + 400: {region: 0x6f, script: 0x5b, flags: 0x0}, + 401: {region: 0x9d, script: 0x5, flags: 0x0}, + 402: {region: 0x166, script: 0x5b, flags: 0x0}, + 403: {region: 0x166, script: 0x2c, flags: 0x0}, + 404: {region: 0xf2, script: 0x5b, flags: 0x0}, + 405: {region: 0x166, script: 0x5b, flags: 0x0}, + 406: {region: 0x166, script: 0x5b, flags: 0x0}, + 407: {region: 0x166, script: 0x5b, flags: 0x0}, + 408: {region: 0x166, script: 0x2c, flags: 0x0}, + 409: {region: 0x166, script: 0x5b, flags: 0x0}, + 410: {region: 0x9a, script: 0x22, flags: 0x0}, + 411: {region: 0x9a, script: 0xe9, flags: 0x0}, + 412: {region: 0x96, script: 0x5b, flags: 0x0}, + 413: {region: 0xda, script: 0x5b, flags: 0x0}, + 414: {region: 0x131, script: 0x32, flags: 0x0}, + 415: {region: 0x166, script: 0x5b, flags: 0x0}, + 416: {region: 0xe, script: 0x2, flags: 0x1}, + 417: {region: 0x9a, script: 0xe, flags: 0x0}, + 418: {region: 0x166, script: 0x5b, flags: 0x0}, + 419: {region: 0x4e, script: 0x5b, flags: 0x0}, + 420: {region: 0x9a, script: 0x35, flags: 0x0}, + 421: {region: 0x41, script: 0x5b, flags: 0x0}, + 422: {region: 0x54, script: 0x5b, flags: 0x0}, + 423: {region: 0x166, script: 0x5b, flags: 0x0}, + 424: {region: 0x81, script: 0x5b, flags: 0x0}, + 425: {region: 0x166, script: 0x5b, flags: 0x0}, + 426: {region: 0x166, script: 0x5b, flags: 0x0}, + 427: {region: 0xa5, script: 0x5b, flags: 0x0}, + 428: {region: 0x99, script: 0x5b, flags: 0x0}, + 429: {region: 0x166, script: 0x5b, flags: 0x0}, + 430: {region: 0xdc, script: 0x22, flags: 0x0}, + 431: {region: 0x166, script: 0x5b, flags: 0x0}, + 432: {region: 0x166, script: 0x5, flags: 0x0}, + 433: {region: 0x49, script: 0x5b, flags: 0x0}, + 434: {region: 0x166, script: 0x5, flags: 0x0}, + 435: {region: 0x166, script: 0x5b, flags: 0x0}, + 436: {region: 0x10, script: 0x3, flags: 0x1}, + 437: {region: 0x166, script: 0x5b, flags: 0x0}, + 438: {region: 0x53, script: 0x3b, flags: 0x0}, + 439: {region: 0x166, script: 0x5b, flags: 0x0}, + 440: {region: 0x136, script: 0x5b, flags: 0x0}, + 441: {region: 0x24, script: 0x5, flags: 0x0}, + 442: {region: 0x166, script: 0x5b, flags: 0x0}, + 443: {region: 0x166, script: 0x2c, flags: 0x0}, + 444: {region: 0x98, script: 0x3e, flags: 0x0}, + 445: {region: 0x166, script: 0x5b, flags: 0x0}, + 446: {region: 0x9a, script: 0x22, flags: 0x0}, + 447: {region: 0x166, script: 0x5b, flags: 0x0}, + 448: {region: 0x74, script: 0x5b, flags: 0x0}, + 449: {region: 0x166, script: 0x5b, flags: 0x0}, + 450: {region: 0x166, script: 0x5b, flags: 0x0}, + 451: {region: 0xe8, script: 0x5b, flags: 0x0}, + 452: {region: 0x166, script: 0x5b, flags: 0x0}, + 453: {region: 0x12c, script: 0x40, flags: 0x0}, + 454: {region: 0x53, script: 0x92, flags: 0x0}, + 455: {region: 0x166, script: 0x5b, flags: 0x0}, + 456: {region: 0xe9, script: 0x5, flags: 0x0}, + 457: {region: 0x9a, script: 0x22, flags: 0x0}, + 458: {region: 0xb0, script: 0x41, flags: 0x0}, + 459: {region: 0xe8, script: 0x5b, flags: 0x0}, + 460: {region: 0xe9, script: 0x5, flags: 0x0}, + 461: {region: 0xe7, script: 0x5b, flags: 0x0}, + 462: {region: 0x9a, script: 0x22, flags: 0x0}, + 463: {region: 0x9a, script: 0x22, flags: 0x0}, + 464: {region: 0x166, script: 0x5b, flags: 0x0}, + 465: {region: 0x91, script: 0x5b, flags: 0x0}, + 466: {region: 0x61, script: 0x5b, flags: 0x0}, + 467: {region: 0x53, script: 0x3b, flags: 0x0}, + 468: {region: 0x92, script: 0x5b, flags: 0x0}, + 469: {region: 0x93, script: 0x5b, flags: 0x0}, + 470: {region: 0x166, script: 0x5b, flags: 0x0}, + 471: {region: 0x28, script: 0x8, flags: 0x0}, + 472: {region: 0xd3, script: 0x5b, flags: 0x0}, + 473: {region: 0x79, script: 0x5b, flags: 0x0}, + 474: {region: 0x166, script: 0x5b, flags: 0x0}, + 475: {region: 0x166, script: 0x5b, flags: 0x0}, + 476: {region: 0xd1, script: 0x5b, flags: 0x0}, + 477: {region: 0xd7, script: 0x5b, flags: 0x0}, + 478: {region: 0x166, script: 0x5b, flags: 0x0}, + 479: {region: 0x166, script: 0x5b, flags: 0x0}, + 480: {region: 0x166, script: 0x5b, flags: 0x0}, + 481: {region: 0x96, script: 0x5b, flags: 0x0}, + 482: {region: 0x166, script: 0x5b, flags: 0x0}, + 483: {region: 0x166, script: 0x5b, flags: 0x0}, + 484: {region: 0x166, script: 0x5b, flags: 0x0}, + 486: {region: 0x123, script: 0x5b, flags: 0x0}, + 487: {region: 0xd7, script: 0x5b, flags: 0x0}, + 488: {region: 0x166, script: 0x5b, flags: 0x0}, + 489: {region: 0x166, script: 0x5b, flags: 0x0}, + 490: {region: 0x53, script: 0xfd, flags: 0x0}, + 491: {region: 0x166, script: 0x5b, flags: 0x0}, + 492: {region: 0x136, script: 0x5b, flags: 0x0}, + 493: {region: 0x166, script: 0x5b, flags: 0x0}, + 494: {region: 0x49, script: 0x5b, flags: 0x0}, + 495: {region: 0x166, script: 0x5b, flags: 0x0}, + 496: {region: 0x166, script: 0x5b, flags: 0x0}, + 497: {region: 0xe8, script: 0x5b, flags: 0x0}, + 498: {region: 0x166, script: 0x5b, flags: 0x0}, + 499: {region: 0x96, script: 0x5b, flags: 0x0}, + 500: {region: 0x107, script: 0x20, flags: 0x0}, + 501: {region: 0x1, script: 0x5b, flags: 0x0}, + 502: {region: 0x166, script: 0x5b, flags: 0x0}, + 503: {region: 0x166, script: 0x5b, flags: 0x0}, + 504: {region: 0x9e, script: 0x5b, flags: 0x0}, + 505: {region: 0x9f, script: 0x5b, flags: 0x0}, + 506: {region: 0x49, script: 0x17, flags: 0x0}, + 507: {region: 0x98, script: 0x3e, flags: 0x0}, + 508: {region: 0x166, script: 0x5b, flags: 0x0}, + 509: {region: 0x166, script: 0x5b, flags: 0x0}, + 510: {region: 0x107, script: 0x5b, flags: 0x0}, + 511: {region: 0x166, script: 0x5b, flags: 0x0}, + 512: {region: 0xa3, script: 0x49, flags: 0x0}, + 513: {region: 0x166, script: 0x5b, flags: 0x0}, + 514: {region: 0xa1, script: 0x5b, flags: 0x0}, + 515: {region: 0x1, script: 0x5b, flags: 0x0}, + 516: {region: 0x166, script: 0x5b, flags: 0x0}, + 517: {region: 0x166, script: 0x5b, flags: 0x0}, + 518: {region: 0x166, script: 0x5b, flags: 0x0}, + 519: {region: 0x52, script: 0x5b, flags: 0x0}, + 520: {region: 0x131, script: 0x3e, flags: 0x0}, + 521: {region: 0x166, script: 0x5b, flags: 0x0}, + 522: {region: 0x130, script: 0x5b, flags: 0x0}, + 523: {region: 0xdc, script: 0x22, flags: 0x0}, + 524: {region: 0x166, script: 0x5b, flags: 0x0}, + 525: {region: 0x64, script: 0x5b, flags: 0x0}, + 526: {region: 0x96, script: 0x5b, flags: 0x0}, + 527: {region: 0x96, script: 0x5b, flags: 0x0}, + 528: {region: 0x7e, script: 0x2e, flags: 0x0}, + 529: {region: 0x138, script: 0x20, flags: 0x0}, + 530: {region: 0x68, script: 0x5b, flags: 0x0}, + 531: {region: 0xc5, script: 0x5b, flags: 0x0}, + 532: {region: 0x166, script: 0x5b, flags: 0x0}, + 533: {region: 0x166, script: 0x5b, flags: 0x0}, + 534: {region: 0xd7, script: 0x5b, flags: 0x0}, + 535: {region: 0xa5, script: 0x5b, flags: 0x0}, + 536: {region: 0xc4, script: 0x5b, flags: 0x0}, + 537: {region: 0x107, script: 0x20, flags: 0x0}, + 538: {region: 0x166, script: 0x5b, flags: 0x0}, + 539: {region: 0x166, script: 0x5b, flags: 0x0}, + 540: {region: 0x166, script: 0x5b, flags: 0x0}, + 541: {region: 0x166, script: 0x5b, flags: 0x0}, + 542: {region: 0xd5, script: 0x5, flags: 0x0}, + 543: {region: 0xd7, script: 0x5b, flags: 0x0}, + 544: {region: 0x165, script: 0x5b, flags: 0x0}, + 545: {region: 0x166, script: 0x5b, flags: 0x0}, + 546: {region: 0x166, script: 0x5b, flags: 0x0}, + 547: {region: 0x130, script: 0x5b, flags: 0x0}, + 548: {region: 0x123, script: 0x5, flags: 0x0}, + 549: {region: 0x166, script: 0x5b, flags: 0x0}, + 550: {region: 0x124, script: 0xee, flags: 0x0}, + 551: {region: 0x5b, script: 0x5b, flags: 0x0}, + 552: {region: 0x52, script: 0x5b, flags: 0x0}, + 553: {region: 0x166, script: 0x5b, flags: 0x0}, + 554: {region: 0x4f, script: 0x5b, flags: 0x0}, + 555: {region: 0x9a, script: 0x22, flags: 0x0}, + 556: {region: 0x9a, script: 0x22, flags: 0x0}, + 557: {region: 0x4b, script: 0x5b, flags: 0x0}, + 558: {region: 0x96, script: 0x5b, flags: 0x0}, + 559: {region: 0x166, script: 0x5b, flags: 0x0}, + 560: {region: 0x41, script: 0x5b, flags: 0x0}, + 561: {region: 0x9a, script: 0x5b, flags: 0x0}, + 562: {region: 0x53, script: 0xe5, flags: 0x0}, + 563: {region: 0x9a, script: 0x22, flags: 0x0}, + 564: {region: 0xc4, script: 0x5b, flags: 0x0}, + 565: {region: 0x166, script: 0x5b, flags: 0x0}, + 566: {region: 0x9a, script: 0x76, flags: 0x0}, + 567: {region: 0xe9, script: 0x5, flags: 0x0}, + 568: {region: 0x166, script: 0x5b, flags: 0x0}, + 569: {region: 0xa5, script: 0x5b, flags: 0x0}, + 570: {region: 0x166, script: 0x5b, flags: 0x0}, + 571: {region: 0x12c, script: 0x5b, flags: 0x0}, + 572: {region: 0x166, script: 0x5b, flags: 0x0}, + 573: {region: 0xd3, script: 0x5b, flags: 0x0}, + 574: {region: 0x166, script: 0x5b, flags: 0x0}, + 575: {region: 0xb0, script: 0x58, flags: 0x0}, + 576: {region: 0x166, script: 0x5b, flags: 0x0}, + 577: {region: 0x166, script: 0x5b, flags: 0x0}, + 578: {region: 0x13, script: 0x6, flags: 0x1}, + 579: {region: 0x166, script: 0x5b, flags: 0x0}, + 580: {region: 0x52, script: 0x5b, flags: 0x0}, + 581: {region: 0x83, script: 0x5b, flags: 0x0}, + 582: {region: 0xa5, script: 0x5b, flags: 0x0}, + 583: {region: 0x166, script: 0x5b, flags: 0x0}, + 584: {region: 0x166, script: 0x5b, flags: 0x0}, + 585: {region: 0x166, script: 0x5b, flags: 0x0}, + 586: {region: 0xa7, script: 0x4f, flags: 0x0}, + 587: {region: 0x2a, script: 0x5b, flags: 0x0}, + 588: {region: 0x166, script: 0x5b, flags: 0x0}, + 589: {region: 0x166, script: 0x5b, flags: 0x0}, + 590: {region: 0x166, script: 0x5b, flags: 0x0}, + 591: {region: 0x166, script: 0x5b, flags: 0x0}, + 592: {region: 0x166, script: 0x5b, flags: 0x0}, + 593: {region: 0x9a, script: 0x53, flags: 0x0}, + 594: {region: 0x8c, script: 0x5b, flags: 0x0}, + 595: {region: 0x166, script: 0x5b, flags: 0x0}, + 596: {region: 0xac, script: 0x54, flags: 0x0}, + 597: {region: 0x107, script: 0x20, flags: 0x0}, + 598: {region: 0x9a, script: 0x22, flags: 0x0}, + 599: {region: 0x166, script: 0x5b, flags: 0x0}, + 600: {region: 0x76, script: 0x5b, flags: 0x0}, + 601: {region: 0x166, script: 0x5b, flags: 0x0}, + 602: {region: 0xb5, script: 0x5b, flags: 0x0}, + 603: {region: 0x166, script: 0x5b, flags: 0x0}, + 604: {region: 0x166, script: 0x5b, flags: 0x0}, + 605: {region: 0x166, script: 0x5b, flags: 0x0}, + 606: {region: 0x166, script: 0x5b, flags: 0x0}, + 607: {region: 0x166, script: 0x5b, flags: 0x0}, + 608: {region: 0x166, script: 0x5b, flags: 0x0}, + 609: {region: 0x166, script: 0x5b, flags: 0x0}, + 610: {region: 0x166, script: 0x2c, flags: 0x0}, + 611: {region: 0x166, script: 0x5b, flags: 0x0}, + 612: {region: 0x107, script: 0x20, flags: 0x0}, + 613: {region: 0x113, script: 0x5b, flags: 0x0}, + 614: {region: 0xe8, script: 0x5b, flags: 0x0}, + 615: {region: 0x107, script: 0x5b, flags: 0x0}, + 616: {region: 0x166, script: 0x5b, flags: 0x0}, + 617: {region: 0x9a, script: 0x22, flags: 0x0}, + 618: {region: 0x9a, script: 0x5, flags: 0x0}, + 619: {region: 0x130, script: 0x5b, flags: 0x0}, + 620: {region: 0x166, script: 0x5b, flags: 0x0}, + 621: {region: 0x52, script: 0x5b, flags: 0x0}, + 622: {region: 0x61, script: 0x5b, flags: 0x0}, + 623: {region: 0x166, script: 0x5b, flags: 0x0}, + 624: {region: 0x166, script: 0x5b, flags: 0x0}, + 625: {region: 0x166, script: 0x2c, flags: 0x0}, + 626: {region: 0x166, script: 0x5b, flags: 0x0}, + 627: {region: 0x166, script: 0x5b, flags: 0x0}, + 628: {region: 0x19, script: 0x3, flags: 0x1}, + 629: {region: 0x166, script: 0x5b, flags: 0x0}, + 630: {region: 0x166, script: 0x5b, flags: 0x0}, + 631: {region: 0x166, script: 0x5b, flags: 0x0}, + 632: {region: 0x166, script: 0x5b, flags: 0x0}, + 633: {region: 0x107, script: 0x20, flags: 0x0}, + 634: {region: 0x166, script: 0x5b, flags: 0x0}, + 635: {region: 0x166, script: 0x5b, flags: 0x0}, + 636: {region: 0x166, script: 0x5b, flags: 0x0}, + 637: {region: 0x107, script: 0x20, flags: 0x0}, + 638: {region: 0x166, script: 0x5b, flags: 0x0}, + 639: {region: 0x96, script: 0x5b, flags: 0x0}, + 640: {region: 0xe9, script: 0x5, flags: 0x0}, + 641: {region: 0x7c, script: 0x5b, flags: 0x0}, + 642: {region: 0x166, script: 0x5b, flags: 0x0}, + 643: {region: 0x166, script: 0x5b, flags: 0x0}, + 644: {region: 0x166, script: 0x5b, flags: 0x0}, + 645: {region: 0x166, script: 0x2c, flags: 0x0}, + 646: {region: 0x124, script: 0xee, flags: 0x0}, + 647: {region: 0xe9, script: 0x5, flags: 0x0}, + 648: {region: 0x166, script: 0x5b, flags: 0x0}, + 649: {region: 0x166, script: 0x5b, flags: 0x0}, + 650: {region: 0x1c, script: 0x5, flags: 0x1}, + 651: {region: 0x166, script: 0x5b, flags: 0x0}, + 652: {region: 0x166, script: 0x5b, flags: 0x0}, + 653: {region: 0x166, script: 0x5b, flags: 0x0}, + 654: {region: 0x139, script: 0x5b, flags: 0x0}, + 655: {region: 0x88, script: 0x5f, flags: 0x0}, + 656: {region: 0x98, script: 0x3e, flags: 0x0}, + 657: {region: 0x130, script: 0x5b, flags: 0x0}, + 658: {region: 0xe9, script: 0x5, flags: 0x0}, + 659: {region: 0x132, script: 0x5b, flags: 0x0}, + 660: {region: 0x166, script: 0x5b, flags: 0x0}, + 661: {region: 0xb8, script: 0x5b, flags: 0x0}, + 662: {region: 0x107, script: 0x20, flags: 0x0}, + 663: {region: 0x166, script: 0x5b, flags: 0x0}, + 664: {region: 0x96, script: 0x5b, flags: 0x0}, + 665: {region: 0x166, script: 0x5b, flags: 0x0}, + 666: {region: 0x53, script: 0xee, flags: 0x0}, + 667: {region: 0x166, script: 0x5b, flags: 0x0}, + 668: {region: 0x166, script: 0x5b, flags: 0x0}, + 669: {region: 0x166, script: 0x5b, flags: 0x0}, + 670: {region: 0x166, script: 0x5b, flags: 0x0}, + 671: {region: 0x9a, script: 0x5d, flags: 0x0}, + 672: {region: 0x166, script: 0x5b, flags: 0x0}, + 673: {region: 0x166, script: 0x5b, flags: 0x0}, + 674: {region: 0x107, script: 0x20, flags: 0x0}, + 675: {region: 0x132, script: 0x5b, flags: 0x0}, + 676: {region: 0x166, script: 0x5b, flags: 0x0}, + 677: {region: 0xda, script: 0x5b, flags: 0x0}, + 678: {region: 0x166, script: 0x5b, flags: 0x0}, + 679: {region: 0x166, script: 0x5b, flags: 0x0}, + 680: {region: 0x21, script: 0x2, flags: 0x1}, + 681: {region: 0x166, script: 0x5b, flags: 0x0}, + 682: {region: 0x166, script: 0x5b, flags: 0x0}, + 683: {region: 0x9f, script: 0x5b, flags: 0x0}, + 684: {region: 0x53, script: 0x61, flags: 0x0}, + 685: {region: 0x96, script: 0x5b, flags: 0x0}, + 686: {region: 0x9d, script: 0x5, flags: 0x0}, + 687: {region: 0x136, script: 0x5b, flags: 0x0}, + 688: {region: 0x166, script: 0x5b, flags: 0x0}, + 689: {region: 0x166, script: 0x5b, flags: 0x0}, + 690: {region: 0x9a, script: 0xe9, flags: 0x0}, + 691: {region: 0x9f, script: 0x5b, flags: 0x0}, + 692: {region: 0x166, script: 0x5b, flags: 0x0}, + 693: {region: 0x4b, script: 0x5b, flags: 0x0}, + 694: {region: 0x166, script: 0x5b, flags: 0x0}, + 695: {region: 0x166, script: 0x5b, flags: 0x0}, + 696: {region: 0xb0, script: 0x58, flags: 0x0}, + 697: {region: 0x166, script: 0x5b, flags: 0x0}, + 698: {region: 0x166, script: 0x5b, flags: 0x0}, + 699: {region: 0x4b, script: 0x5b, flags: 0x0}, + 700: {region: 0x166, script: 0x5b, flags: 0x0}, + 701: {region: 0x166, script: 0x5b, flags: 0x0}, + 702: {region: 0x163, script: 0x5b, flags: 0x0}, + 703: {region: 0x9d, script: 0x5, flags: 0x0}, + 704: {region: 0xb7, script: 0x5b, flags: 0x0}, + 705: {region: 0xb9, script: 0x5b, flags: 0x0}, + 706: {region: 0x4b, script: 0x5b, flags: 0x0}, + 707: {region: 0x4b, script: 0x5b, flags: 0x0}, + 708: {region: 0xa5, script: 0x5b, flags: 0x0}, + 709: {region: 0xa5, script: 0x5b, flags: 0x0}, + 710: {region: 0x9d, script: 0x5, flags: 0x0}, + 711: {region: 0xb9, script: 0x5b, flags: 0x0}, + 712: {region: 0x124, script: 0xee, flags: 0x0}, + 713: {region: 0x53, script: 0x3b, flags: 0x0}, + 714: {region: 0x12c, script: 0x5b, flags: 0x0}, + 715: {region: 0x96, script: 0x5b, flags: 0x0}, + 716: {region: 0x52, script: 0x5b, flags: 0x0}, + 717: {region: 0x9a, script: 0x22, flags: 0x0}, + 718: {region: 0x9a, script: 0x22, flags: 0x0}, + 719: {region: 0x96, script: 0x5b, flags: 0x0}, + 720: {region: 0x23, script: 0x3, flags: 0x1}, + 721: {region: 0xa5, script: 0x5b, flags: 0x0}, + 722: {region: 0x166, script: 0x5b, flags: 0x0}, + 723: {region: 0xd0, script: 0x5b, flags: 0x0}, + 724: {region: 0x166, script: 0x5b, flags: 0x0}, + 725: {region: 0x166, script: 0x5b, flags: 0x0}, + 726: {region: 0x166, script: 0x5b, flags: 0x0}, + 727: {region: 0x166, script: 0x5b, flags: 0x0}, + 728: {region: 0x166, script: 0x5b, flags: 0x0}, + 729: {region: 0x166, script: 0x5b, flags: 0x0}, + 730: {region: 0x166, script: 0x5b, flags: 0x0}, + 731: {region: 0x166, script: 0x5b, flags: 0x0}, + 732: {region: 0x166, script: 0x5b, flags: 0x0}, + 733: {region: 0x166, script: 0x5b, flags: 0x0}, + 734: {region: 0x166, script: 0x5b, flags: 0x0}, + 735: {region: 0x166, script: 0x5, flags: 0x0}, + 736: {region: 0x107, script: 0x20, flags: 0x0}, + 737: {region: 0xe8, script: 0x5b, flags: 0x0}, + 738: {region: 0x166, script: 0x5b, flags: 0x0}, + 739: {region: 0x96, script: 0x5b, flags: 0x0}, + 740: {region: 0x166, script: 0x2c, flags: 0x0}, + 741: {region: 0x166, script: 0x5b, flags: 0x0}, + 742: {region: 0x166, script: 0x5b, flags: 0x0}, + 743: {region: 0x166, script: 0x5b, flags: 0x0}, + 744: {region: 0x113, script: 0x5b, flags: 0x0}, + 745: {region: 0xa5, script: 0x5b, flags: 0x0}, + 746: {region: 0x166, script: 0x5b, flags: 0x0}, + 747: {region: 0x166, script: 0x5b, flags: 0x0}, + 748: {region: 0x124, script: 0x5, flags: 0x0}, + 749: {region: 0xcd, script: 0x5b, flags: 0x0}, + 750: {region: 0x166, script: 0x5b, flags: 0x0}, + 751: {region: 0x166, script: 0x5b, flags: 0x0}, + 752: {region: 0x166, script: 0x5b, flags: 0x0}, + 753: {region: 0xc0, script: 0x5b, flags: 0x0}, + 754: {region: 0xd2, script: 0x5b, flags: 0x0}, + 755: {region: 0x166, script: 0x5b, flags: 0x0}, + 756: {region: 0x52, script: 0x5b, flags: 0x0}, + 757: {region: 0xdc, script: 0x22, flags: 0x0}, + 758: {region: 0x130, script: 0x5b, flags: 0x0}, + 759: {region: 0xc1, script: 0x5b, flags: 0x0}, + 760: {region: 0x166, script: 0x5b, flags: 0x0}, + 761: {region: 0x166, script: 0x5b, flags: 0x0}, + 762: {region: 0xe1, script: 0x5b, flags: 0x0}, + 763: {region: 0x166, script: 0x5b, flags: 0x0}, + 764: {region: 0x96, script: 0x5b, flags: 0x0}, + 765: {region: 0x9c, script: 0x3d, flags: 0x0}, + 766: {region: 0x166, script: 0x5b, flags: 0x0}, + 767: {region: 0xc3, script: 0x20, flags: 0x0}, + 768: {region: 0x166, script: 0x5, flags: 0x0}, + 769: {region: 0x166, script: 0x5b, flags: 0x0}, + 770: {region: 0x166, script: 0x5b, flags: 0x0}, + 771: {region: 0x166, script: 0x5b, flags: 0x0}, + 772: {region: 0x9a, script: 0x6f, flags: 0x0}, + 773: {region: 0x166, script: 0x5b, flags: 0x0}, + 774: {region: 0x166, script: 0x5b, flags: 0x0}, + 775: {region: 0x10c, script: 0x5b, flags: 0x0}, + 776: {region: 0x166, script: 0x5b, flags: 0x0}, + 777: {region: 0x166, script: 0x5b, flags: 0x0}, + 778: {region: 0x166, script: 0x5b, flags: 0x0}, + 779: {region: 0x26, script: 0x3, flags: 0x1}, + 780: {region: 0x166, script: 0x5b, flags: 0x0}, + 781: {region: 0x166, script: 0x5b, flags: 0x0}, + 782: {region: 0x9a, script: 0xe, flags: 0x0}, + 783: {region: 0xc5, script: 0x76, flags: 0x0}, + 785: {region: 0x166, script: 0x5b, flags: 0x0}, + 786: {region: 0x49, script: 0x5b, flags: 0x0}, + 787: {region: 0x49, script: 0x5b, flags: 0x0}, + 788: {region: 0x37, script: 0x5b, flags: 0x0}, + 789: {region: 0x166, script: 0x5b, flags: 0x0}, + 790: {region: 0x166, script: 0x5b, flags: 0x0}, + 791: {region: 0x166, script: 0x5b, flags: 0x0}, + 792: {region: 0x166, script: 0x5b, flags: 0x0}, + 793: {region: 0x166, script: 0x5b, flags: 0x0}, + 794: {region: 0x166, script: 0x5b, flags: 0x0}, + 795: {region: 0x9a, script: 0x22, flags: 0x0}, + 796: {region: 0xdc, script: 0x22, flags: 0x0}, + 797: {region: 0x107, script: 0x20, flags: 0x0}, + 798: {region: 0x35, script: 0x73, flags: 0x0}, + 799: {region: 0x29, script: 0x3, flags: 0x1}, + 800: {region: 0xcc, script: 0x5b, flags: 0x0}, + 801: {region: 0x166, script: 0x5b, flags: 0x0}, + 802: {region: 0x166, script: 0x5b, flags: 0x0}, + 803: {region: 0x166, script: 0x5b, flags: 0x0}, + 804: {region: 0x9a, script: 0x22, flags: 0x0}, + 805: {region: 0x52, script: 0x5b, flags: 0x0}, + 807: {region: 0x166, script: 0x5b, flags: 0x0}, + 808: {region: 0x136, script: 0x5b, flags: 0x0}, + 809: {region: 0x166, script: 0x5b, flags: 0x0}, + 810: {region: 0x166, script: 0x5b, flags: 0x0}, + 811: {region: 0xe9, script: 0x5, flags: 0x0}, + 812: {region: 0xc4, script: 0x5b, flags: 0x0}, + 813: {region: 0x9a, script: 0x22, flags: 0x0}, + 814: {region: 0x96, script: 0x5b, flags: 0x0}, + 815: {region: 0x165, script: 0x5b, flags: 0x0}, + 816: {region: 0x166, script: 0x5b, flags: 0x0}, + 817: {region: 0xc5, script: 0x76, flags: 0x0}, + 818: {region: 0x166, script: 0x5b, flags: 0x0}, + 819: {region: 0x166, script: 0x2c, flags: 0x0}, + 820: {region: 0x107, script: 0x20, flags: 0x0}, + 821: {region: 0x166, script: 0x5b, flags: 0x0}, + 822: {region: 0x132, script: 0x5b, flags: 0x0}, + 823: {region: 0x9d, script: 0x67, flags: 0x0}, + 824: {region: 0x166, script: 0x5b, flags: 0x0}, + 825: {region: 0x166, script: 0x5b, flags: 0x0}, + 826: {region: 0x9d, script: 0x5, flags: 0x0}, + 827: {region: 0x166, script: 0x5b, flags: 0x0}, + 828: {region: 0x166, script: 0x5b, flags: 0x0}, + 829: {region: 0x166, script: 0x5b, flags: 0x0}, + 830: {region: 0xde, script: 0x5b, flags: 0x0}, + 831: {region: 0x166, script: 0x5b, flags: 0x0}, + 832: {region: 0x166, script: 0x5b, flags: 0x0}, + 834: {region: 0x166, script: 0x5b, flags: 0x0}, + 835: {region: 0x53, script: 0x3b, flags: 0x0}, + 836: {region: 0x9f, script: 0x5b, flags: 0x0}, + 837: {region: 0xd3, script: 0x5b, flags: 0x0}, + 838: {region: 0x166, script: 0x5b, flags: 0x0}, + 839: {region: 0xdb, script: 0x5b, flags: 0x0}, + 840: {region: 0x166, script: 0x5b, flags: 0x0}, + 841: {region: 0x166, script: 0x5b, flags: 0x0}, + 842: {region: 0x166, script: 0x5b, flags: 0x0}, + 843: {region: 0xd0, script: 0x5b, flags: 0x0}, + 844: {region: 0x166, script: 0x5b, flags: 0x0}, + 845: {region: 0x166, script: 0x5b, flags: 0x0}, + 846: {region: 0x165, script: 0x5b, flags: 0x0}, + 847: {region: 0xd2, script: 0x5b, flags: 0x0}, + 848: {region: 0x61, script: 0x5b, flags: 0x0}, + 849: {region: 0xdc, script: 0x22, flags: 0x0}, + 850: {region: 0x166, script: 0x5b, flags: 0x0}, + 851: {region: 0xdc, script: 0x22, flags: 0x0}, + 852: {region: 0x166, script: 0x5b, flags: 0x0}, + 853: {region: 0x166, script: 0x5b, flags: 0x0}, + 854: {region: 0xd3, script: 0x5b, flags: 0x0}, + 855: {region: 0x166, script: 0x5b, flags: 0x0}, + 856: {region: 0x166, script: 0x5b, flags: 0x0}, + 857: {region: 0xd2, script: 0x5b, flags: 0x0}, + 858: {region: 0x166, script: 0x5b, flags: 0x0}, + 859: {region: 0xd0, script: 0x5b, flags: 0x0}, + 860: {region: 0xd0, script: 0x5b, flags: 0x0}, + 861: {region: 0x166, script: 0x5b, flags: 0x0}, + 862: {region: 0x166, script: 0x5b, flags: 0x0}, + 863: {region: 0x96, script: 0x5b, flags: 0x0}, + 864: {region: 0x166, script: 0x5b, flags: 0x0}, + 865: {region: 0xe0, script: 0x5b, flags: 0x0}, + 866: {region: 0x166, script: 0x5b, flags: 0x0}, + 867: {region: 0x166, script: 0x5b, flags: 0x0}, + 868: {region: 0x9a, script: 0x5b, flags: 0x0}, + 869: {region: 0x166, script: 0x5b, flags: 0x0}, + 870: {region: 0x166, script: 0x5b, flags: 0x0}, + 871: {region: 0xda, script: 0x5b, flags: 0x0}, + 872: {region: 0x52, script: 0x5b, flags: 0x0}, + 873: {region: 0x166, script: 0x5b, flags: 0x0}, + 874: {region: 0xdb, script: 0x5b, flags: 0x0}, + 875: {region: 0x166, script: 0x5b, flags: 0x0}, + 876: {region: 0x52, script: 0x5b, flags: 0x0}, + 877: {region: 0x166, script: 0x5b, flags: 0x0}, + 878: {region: 0x166, script: 0x5b, flags: 0x0}, + 879: {region: 0xdb, script: 0x5b, flags: 0x0}, + 880: {region: 0x124, script: 0x57, flags: 0x0}, + 881: {region: 0x9a, script: 0x22, flags: 0x0}, + 882: {region: 0x10d, script: 0xcb, flags: 0x0}, + 883: {region: 0x166, script: 0x5b, flags: 0x0}, + 884: {region: 0x166, script: 0x5b, flags: 0x0}, + 885: {region: 0x85, script: 0x7e, flags: 0x0}, + 886: {region: 0x162, script: 0x5b, flags: 0x0}, + 887: {region: 0x166, script: 0x5b, flags: 0x0}, + 888: {region: 0x49, script: 0x17, flags: 0x0}, + 889: {region: 0x166, script: 0x5b, flags: 0x0}, + 890: {region: 0x162, script: 0x5b, flags: 0x0}, + 891: {region: 0x166, script: 0x5b, flags: 0x0}, + 892: {region: 0x166, script: 0x5b, flags: 0x0}, + 893: {region: 0x166, script: 0x5b, flags: 0x0}, + 894: {region: 0x166, script: 0x5b, flags: 0x0}, + 895: {region: 0x166, script: 0x5b, flags: 0x0}, + 896: {region: 0x118, script: 0x5b, flags: 0x0}, + 897: {region: 0x166, script: 0x5b, flags: 0x0}, + 898: {region: 0x166, script: 0x5b, flags: 0x0}, + 899: {region: 0x136, script: 0x5b, flags: 0x0}, + 900: {region: 0x166, script: 0x5b, flags: 0x0}, + 901: {region: 0x53, script: 0x5b, flags: 0x0}, + 902: {region: 0x166, script: 0x5b, flags: 0x0}, + 903: {region: 0xcf, script: 0x5b, flags: 0x0}, + 904: {region: 0x130, script: 0x5b, flags: 0x0}, + 905: {region: 0x132, script: 0x5b, flags: 0x0}, + 906: {region: 0x81, script: 0x5b, flags: 0x0}, + 907: {region: 0x79, script: 0x5b, flags: 0x0}, + 908: {region: 0x166, script: 0x5b, flags: 0x0}, + 910: {region: 0x166, script: 0x5b, flags: 0x0}, + 911: {region: 0x166, script: 0x5b, flags: 0x0}, + 912: {region: 0x70, script: 0x5b, flags: 0x0}, + 913: {region: 0x166, script: 0x5b, flags: 0x0}, + 914: {region: 0x166, script: 0x5b, flags: 0x0}, + 915: {region: 0x166, script: 0x5b, flags: 0x0}, + 916: {region: 0x166, script: 0x5b, flags: 0x0}, + 917: {region: 0x9a, script: 0x83, flags: 0x0}, + 918: {region: 0x166, script: 0x5b, flags: 0x0}, + 919: {region: 0x166, script: 0x5, flags: 0x0}, + 920: {region: 0x7e, script: 0x20, flags: 0x0}, + 921: {region: 0x136, script: 0x84, flags: 0x0}, + 922: {region: 0x166, script: 0x5, flags: 0x0}, + 923: {region: 0xc6, script: 0x82, flags: 0x0}, + 924: {region: 0x166, script: 0x5b, flags: 0x0}, + 925: {region: 0x2c, script: 0x3, flags: 0x1}, + 926: {region: 0xe8, script: 0x5b, flags: 0x0}, + 927: {region: 0x2f, script: 0x2, flags: 0x1}, + 928: {region: 0xe8, script: 0x5b, flags: 0x0}, + 929: {region: 0x30, script: 0x5b, flags: 0x0}, + 930: {region: 0xf1, script: 0x5b, flags: 0x0}, + 931: {region: 0x166, script: 0x5b, flags: 0x0}, + 932: {region: 0x79, script: 0x5b, flags: 0x0}, + 933: {region: 0xd7, script: 0x5b, flags: 0x0}, + 934: {region: 0x136, script: 0x5b, flags: 0x0}, + 935: {region: 0x49, script: 0x5b, flags: 0x0}, + 936: {region: 0x166, script: 0x5b, flags: 0x0}, + 937: {region: 0x9d, script: 0xfa, flags: 0x0}, + 938: {region: 0x166, script: 0x5b, flags: 0x0}, + 939: {region: 0x61, script: 0x5b, flags: 0x0}, + 940: {region: 0x166, script: 0x5, flags: 0x0}, + 941: {region: 0xb1, script: 0x90, flags: 0x0}, + 943: {region: 0x166, script: 0x5b, flags: 0x0}, + 944: {region: 0x166, script: 0x5b, flags: 0x0}, + 945: {region: 0x9a, script: 0x12, flags: 0x0}, + 946: {region: 0xa5, script: 0x5b, flags: 0x0}, + 947: {region: 0xea, script: 0x5b, flags: 0x0}, + 948: {region: 0x166, script: 0x5b, flags: 0x0}, + 949: {region: 0x9f, script: 0x5b, flags: 0x0}, + 950: {region: 0x166, script: 0x5b, flags: 0x0}, + 951: {region: 0x166, script: 0x5b, flags: 0x0}, + 952: {region: 0x88, script: 0x34, flags: 0x0}, + 953: {region: 0x76, script: 0x5b, flags: 0x0}, + 954: {region: 0x166, script: 0x5b, flags: 0x0}, + 955: {region: 0xe9, script: 0x4e, flags: 0x0}, + 956: {region: 0x9d, script: 0x5, flags: 0x0}, + 957: {region: 0x1, script: 0x5b, flags: 0x0}, + 958: {region: 0x24, script: 0x5, flags: 0x0}, + 959: {region: 0x166, script: 0x5b, flags: 0x0}, + 960: {region: 0x41, script: 0x5b, flags: 0x0}, + 961: {region: 0x166, script: 0x5b, flags: 0x0}, + 962: {region: 0x7b, script: 0x5b, flags: 0x0}, + 963: {region: 0x166, script: 0x5b, flags: 0x0}, + 964: {region: 0xe5, script: 0x5b, flags: 0x0}, + 965: {region: 0x8a, script: 0x5b, flags: 0x0}, + 966: {region: 0x6a, script: 0x5b, flags: 0x0}, + 967: {region: 0x166, script: 0x5b, flags: 0x0}, + 968: {region: 0x9a, script: 0x22, flags: 0x0}, + 969: {region: 0x166, script: 0x5b, flags: 0x0}, + 970: {region: 0x103, script: 0x5b, flags: 0x0}, + 971: {region: 0x96, script: 0x5b, flags: 0x0}, + 972: {region: 0x166, script: 0x5b, flags: 0x0}, + 973: {region: 0x166, script: 0x5b, flags: 0x0}, + 974: {region: 0x9f, script: 0x5b, flags: 0x0}, + 975: {region: 0x166, script: 0x5, flags: 0x0}, + 976: {region: 0x9a, script: 0x5b, flags: 0x0}, + 977: {region: 0x31, script: 0x2, flags: 0x1}, + 978: {region: 0xdc, script: 0x22, flags: 0x0}, + 979: {region: 0x35, script: 0xe, flags: 0x0}, + 980: {region: 0x4e, script: 0x5b, flags: 0x0}, + 981: {region: 0x73, script: 0x5b, flags: 0x0}, + 982: {region: 0x4e, script: 0x5b, flags: 0x0}, + 983: {region: 0x9d, script: 0x5, flags: 0x0}, + 984: {region: 0x10d, script: 0x5b, flags: 0x0}, + 985: {region: 0x3a, script: 0x5b, flags: 0x0}, + 986: {region: 0x166, script: 0x5b, flags: 0x0}, + 987: {region: 0xd2, script: 0x5b, flags: 0x0}, + 988: {region: 0x105, script: 0x5b, flags: 0x0}, + 989: {region: 0x96, script: 0x5b, flags: 0x0}, + 990: {region: 0x130, script: 0x5b, flags: 0x0}, + 991: {region: 0x166, script: 0x5b, flags: 0x0}, + 992: {region: 0x166, script: 0x5b, flags: 0x0}, + 993: {region: 0x74, script: 0x5b, flags: 0x0}, + 994: {region: 0x107, script: 0x20, flags: 0x0}, + 995: {region: 0x131, script: 0x20, flags: 0x0}, + 996: {region: 0x10a, script: 0x5b, flags: 0x0}, + 997: {region: 0x108, script: 0x5b, flags: 0x0}, + 998: {region: 0x130, script: 0x5b, flags: 0x0}, + 999: {region: 0x166, script: 0x5b, flags: 0x0}, + 1000: {region: 0xa3, script: 0x4c, flags: 0x0}, + 1001: {region: 0x9a, script: 0x22, flags: 0x0}, + 1002: {region: 0x81, script: 0x5b, flags: 0x0}, + 1003: {region: 0x107, script: 0x20, flags: 0x0}, + 1004: {region: 0xa5, script: 0x5b, flags: 0x0}, + 1005: {region: 0x96, script: 0x5b, flags: 0x0}, + 1006: {region: 0x9a, script: 0x5b, flags: 0x0}, + 1007: {region: 0x115, script: 0x5b, flags: 0x0}, + 1008: {region: 0x9a, script: 0xcf, flags: 0x0}, + 1009: {region: 0x166, script: 0x5b, flags: 0x0}, + 1010: {region: 0x166, script: 0x5b, flags: 0x0}, + 1011: {region: 0x130, script: 0x5b, flags: 0x0}, + 1012: {region: 0x9f, script: 0x5b, flags: 0x0}, + 1013: {region: 0x9a, script: 0x22, flags: 0x0}, + 1014: {region: 0x166, script: 0x5, flags: 0x0}, + 1015: {region: 0x9f, script: 0x5b, flags: 0x0}, + 1016: {region: 0x7c, script: 0x5b, flags: 0x0}, + 1017: {region: 0x49, script: 0x5b, flags: 0x0}, + 1018: {region: 0x33, script: 0x4, flags: 0x1}, + 1019: {region: 0x9f, script: 0x5b, flags: 0x0}, + 1020: {region: 0x9d, script: 0x5, flags: 0x0}, + 1021: {region: 0xdb, script: 0x5b, flags: 0x0}, + 1022: {region: 0x4f, script: 0x5b, flags: 0x0}, + 1023: {region: 0xd2, script: 0x5b, flags: 0x0}, + 1024: {region: 0xd0, script: 0x5b, flags: 0x0}, + 1025: {region: 0xc4, script: 0x5b, flags: 0x0}, + 1026: {region: 0x4c, script: 0x5b, flags: 0x0}, + 1027: {region: 0x97, script: 0x80, flags: 0x0}, + 1028: {region: 0xb7, script: 0x5b, flags: 0x0}, + 1029: {region: 0x166, script: 0x2c, flags: 0x0}, + 1030: {region: 0x166, script: 0x5b, flags: 0x0}, + 1032: {region: 0xbb, script: 0xeb, flags: 0x0}, + 1033: {region: 0x166, script: 0x5b, flags: 0x0}, + 1034: {region: 0xc5, script: 0x76, flags: 0x0}, + 1035: {region: 0x166, script: 0x5, flags: 0x0}, + 1036: {region: 0xb4, script: 0xd6, flags: 0x0}, + 1037: {region: 0x70, script: 0x5b, flags: 0x0}, + 1038: {region: 0x166, script: 0x5b, flags: 0x0}, + 1039: {region: 0x166, script: 0x5b, flags: 0x0}, + 1040: {region: 0x166, script: 0x5b, flags: 0x0}, + 1041: {region: 0x166, script: 0x5b, flags: 0x0}, + 1042: {region: 0x112, script: 0x5b, flags: 0x0}, + 1043: {region: 0x166, script: 0x5b, flags: 0x0}, + 1044: {region: 0xe9, script: 0x5, flags: 0x0}, + 1045: {region: 0x166, script: 0x5b, flags: 0x0}, + 1046: {region: 0x110, script: 0x5b, flags: 0x0}, + 1047: {region: 0x166, script: 0x5b, flags: 0x0}, + 1048: {region: 0xea, script: 0x5b, flags: 0x0}, + 1049: {region: 0x166, script: 0x5b, flags: 0x0}, + 1050: {region: 0x96, script: 0x5b, flags: 0x0}, + 1051: {region: 0x143, script: 0x5b, flags: 0x0}, + 1052: {region: 0x10d, script: 0x5b, flags: 0x0}, + 1054: {region: 0x10d, script: 0x5b, flags: 0x0}, + 1055: {region: 0x73, script: 0x5b, flags: 0x0}, + 1056: {region: 0x98, script: 0xcc, flags: 0x0}, + 1057: {region: 0x166, script: 0x5b, flags: 0x0}, + 1058: {region: 0x73, script: 0x5b, flags: 0x0}, + 1059: {region: 0x165, script: 0x5b, flags: 0x0}, + 1060: {region: 0x166, script: 0x5b, flags: 0x0}, + 1061: {region: 0xc4, script: 0x5b, flags: 0x0}, + 1062: {region: 0x166, script: 0x5b, flags: 0x0}, + 1063: {region: 0x166, script: 0x5b, flags: 0x0}, + 1064: {region: 0x166, script: 0x5b, flags: 0x0}, + 1065: {region: 0x116, script: 0x5b, flags: 0x0}, + 1066: {region: 0x166, script: 0x5b, flags: 0x0}, + 1067: {region: 0x166, script: 0x5b, flags: 0x0}, + 1068: {region: 0x124, script: 0xee, flags: 0x0}, + 1069: {region: 0x166, script: 0x5b, flags: 0x0}, + 1070: {region: 0x166, script: 0x5b, flags: 0x0}, + 1071: {region: 0x166, script: 0x5b, flags: 0x0}, + 1072: {region: 0x166, script: 0x5b, flags: 0x0}, + 1073: {region: 0x27, script: 0x5b, flags: 0x0}, + 1074: {region: 0x37, script: 0x5, flags: 0x1}, + 1075: {region: 0x9a, script: 0xd9, flags: 0x0}, + 1076: {region: 0x117, script: 0x5b, flags: 0x0}, + 1077: {region: 0x115, script: 0x5b, flags: 0x0}, + 1078: {region: 0x9a, script: 0x22, flags: 0x0}, + 1079: {region: 0x162, script: 0x5b, flags: 0x0}, + 1080: {region: 0x166, script: 0x5b, flags: 0x0}, + 1081: {region: 0x166, script: 0x5b, flags: 0x0}, + 1082: {region: 0x6e, script: 0x5b, flags: 0x0}, + 1083: {region: 0x162, script: 0x5b, flags: 0x0}, + 1084: {region: 0x166, script: 0x5b, flags: 0x0}, + 1085: {region: 0x61, script: 0x5b, flags: 0x0}, + 1086: {region: 0x96, script: 0x5b, flags: 0x0}, + 1087: {region: 0x166, script: 0x5b, flags: 0x0}, + 1088: {region: 0x166, script: 0x5b, flags: 0x0}, + 1089: {region: 0x130, script: 0x5b, flags: 0x0}, + 1090: {region: 0x166, script: 0x5b, flags: 0x0}, + 1091: {region: 0x85, script: 0x5b, flags: 0x0}, + 1092: {region: 0x10d, script: 0x5b, flags: 0x0}, + 1093: {region: 0x130, script: 0x5b, flags: 0x0}, + 1094: {region: 0x160, script: 0x5, flags: 0x0}, + 1095: {region: 0x4b, script: 0x5b, flags: 0x0}, + 1096: {region: 0x61, script: 0x5b, flags: 0x0}, + 1097: {region: 0x166, script: 0x5b, flags: 0x0}, + 1098: {region: 0x9a, script: 0x22, flags: 0x0}, + 1099: {region: 0x96, script: 0x5b, flags: 0x0}, + 1100: {region: 0x166, script: 0x5b, flags: 0x0}, + 1101: {region: 0x35, script: 0xe, flags: 0x0}, + 1102: {region: 0x9c, script: 0xde, flags: 0x0}, + 1103: {region: 0xea, script: 0x5b, flags: 0x0}, + 1104: {region: 0x9a, script: 0xe6, flags: 0x0}, + 1105: {region: 0xdc, script: 0x22, flags: 0x0}, + 1106: {region: 0x166, script: 0x5b, flags: 0x0}, + 1107: {region: 0x166, script: 0x5b, flags: 0x0}, + 1108: {region: 0x166, script: 0x5b, flags: 0x0}, + 1109: {region: 0x166, script: 0x5b, flags: 0x0}, + 1110: {region: 0x166, script: 0x5b, flags: 0x0}, + 1111: {region: 0x166, script: 0x5b, flags: 0x0}, + 1112: {region: 0x166, script: 0x5b, flags: 0x0}, + 1113: {region: 0x166, script: 0x5b, flags: 0x0}, + 1114: {region: 0xe8, script: 0x5b, flags: 0x0}, + 1115: {region: 0x166, script: 0x5b, flags: 0x0}, + 1116: {region: 0x166, script: 0x5b, flags: 0x0}, + 1117: {region: 0x9a, script: 0x53, flags: 0x0}, + 1118: {region: 0x53, script: 0xe4, flags: 0x0}, + 1119: {region: 0xdc, script: 0x22, flags: 0x0}, + 1120: {region: 0xdc, script: 0x22, flags: 0x0}, + 1121: {region: 0x9a, script: 0xe9, flags: 0x0}, + 1122: {region: 0x166, script: 0x5b, flags: 0x0}, + 1123: {region: 0x113, script: 0x5b, flags: 0x0}, + 1124: {region: 0x132, script: 0x5b, flags: 0x0}, + 1125: {region: 0x127, script: 0x5b, flags: 0x0}, + 1126: {region: 0x166, script: 0x5b, flags: 0x0}, + 1127: {region: 0x3c, script: 0x3, flags: 0x1}, + 1128: {region: 0x166, script: 0x5b, flags: 0x0}, + 1129: {region: 0x166, script: 0x5b, flags: 0x0}, + 1130: {region: 0x166, script: 0x5b, flags: 0x0}, + 1131: {region: 0x124, script: 0xee, flags: 0x0}, + 1132: {region: 0xdc, script: 0x22, flags: 0x0}, + 1133: {region: 0xdc, script: 0x22, flags: 0x0}, + 1134: {region: 0xdc, script: 0x22, flags: 0x0}, + 1135: {region: 0x70, script: 0x2c, flags: 0x0}, + 1136: {region: 0x166, script: 0x5b, flags: 0x0}, + 1137: {region: 0x6e, script: 0x2c, flags: 0x0}, + 1138: {region: 0x166, script: 0x5b, flags: 0x0}, + 1139: {region: 0x166, script: 0x5b, flags: 0x0}, + 1140: {region: 0x166, script: 0x5b, flags: 0x0}, + 1141: {region: 0xd7, script: 0x5b, flags: 0x0}, + 1142: {region: 0x128, script: 0x5b, flags: 0x0}, + 1143: {region: 0x126, script: 0x5b, flags: 0x0}, + 1144: {region: 0x32, script: 0x5b, flags: 0x0}, + 1145: {region: 0xdc, script: 0x22, flags: 0x0}, + 1146: {region: 0xe8, script: 0x5b, flags: 0x0}, + 1147: {region: 0x166, script: 0x5b, flags: 0x0}, + 1148: {region: 0x166, script: 0x5b, flags: 0x0}, + 1149: {region: 0x32, script: 0x5b, flags: 0x0}, + 1150: {region: 0xd5, script: 0x5b, flags: 0x0}, + 1151: {region: 0x166, script: 0x5b, flags: 0x0}, + 1152: {region: 0x162, script: 0x5b, flags: 0x0}, + 1153: {region: 0x166, script: 0x5b, flags: 0x0}, + 1154: {region: 0x12a, script: 0x5b, flags: 0x0}, + 1155: {region: 0x166, script: 0x5b, flags: 0x0}, + 1156: {region: 0xcf, script: 0x5b, flags: 0x0}, + 1157: {region: 0x166, script: 0x5b, flags: 0x0}, + 1158: {region: 0xe7, script: 0x5b, flags: 0x0}, + 1159: {region: 0x166, script: 0x5b, flags: 0x0}, + 1160: {region: 0x166, script: 0x5b, flags: 0x0}, + 1161: {region: 0x166, script: 0x5b, flags: 0x0}, + 1162: {region: 0x12c, script: 0x5b, flags: 0x0}, + 1163: {region: 0x12c, script: 0x5b, flags: 0x0}, + 1164: {region: 0x12f, script: 0x5b, flags: 0x0}, + 1165: {region: 0x166, script: 0x5, flags: 0x0}, + 1166: {region: 0x162, script: 0x5b, flags: 0x0}, + 1167: {region: 0x88, script: 0x34, flags: 0x0}, + 1168: {region: 0xdc, script: 0x22, flags: 0x0}, + 1169: {region: 0xe8, script: 0x5b, flags: 0x0}, + 1170: {region: 0x43, script: 0xef, flags: 0x0}, + 1171: {region: 0x166, script: 0x5b, flags: 0x0}, + 1172: {region: 0x107, script: 0x20, flags: 0x0}, + 1173: {region: 0x166, script: 0x5b, flags: 0x0}, + 1174: {region: 0x166, script: 0x5b, flags: 0x0}, + 1175: {region: 0x132, script: 0x5b, flags: 0x0}, + 1176: {region: 0x166, script: 0x5b, flags: 0x0}, + 1177: {region: 0x124, script: 0xee, flags: 0x0}, + 1178: {region: 0x32, script: 0x5b, flags: 0x0}, + 1179: {region: 0x166, script: 0x5b, flags: 0x0}, + 1180: {region: 0x166, script: 0x5b, flags: 0x0}, + 1181: {region: 0xcf, script: 0x5b, flags: 0x0}, + 1182: {region: 0x166, script: 0x5b, flags: 0x0}, + 1183: {region: 0x166, script: 0x5b, flags: 0x0}, + 1184: {region: 0x12e, script: 0x5b, flags: 0x0}, + 1185: {region: 0x166, script: 0x5b, flags: 0x0}, + 1187: {region: 0x166, script: 0x5b, flags: 0x0}, + 1188: {region: 0xd5, script: 0x5b, flags: 0x0}, + 1189: {region: 0x53, script: 0xe7, flags: 0x0}, + 1190: {region: 0xe6, script: 0x5b, flags: 0x0}, + 1191: {region: 0x166, script: 0x5b, flags: 0x0}, + 1192: {region: 0x107, script: 0x20, flags: 0x0}, + 1193: {region: 0xbb, script: 0x5b, flags: 0x0}, + 1194: {region: 0x166, script: 0x5b, flags: 0x0}, + 1195: {region: 0x107, script: 0x20, flags: 0x0}, + 1196: {region: 0x3f, script: 0x4, flags: 0x1}, + 1197: {region: 0x11d, script: 0xf3, flags: 0x0}, + 1198: {region: 0x131, script: 0x20, flags: 0x0}, + 1199: {region: 0x76, script: 0x5b, flags: 0x0}, + 1200: {region: 0x2a, script: 0x5b, flags: 0x0}, + 1202: {region: 0x43, script: 0x3, flags: 0x1}, + 1203: {region: 0x9a, script: 0xe, flags: 0x0}, + 1204: {region: 0xe9, script: 0x5, flags: 0x0}, + 1205: {region: 0x166, script: 0x5b, flags: 0x0}, + 1206: {region: 0x166, script: 0x5b, flags: 0x0}, + 1207: {region: 0x166, script: 0x5b, flags: 0x0}, + 1208: {region: 0x166, script: 0x5b, flags: 0x0}, + 1209: {region: 0x166, script: 0x5b, flags: 0x0}, + 1210: {region: 0x166, script: 0x5b, flags: 0x0}, + 1211: {region: 0x166, script: 0x5b, flags: 0x0}, + 1212: {region: 0x46, script: 0x4, flags: 0x1}, + 1213: {region: 0x166, script: 0x5b, flags: 0x0}, + 1214: {region: 0xb5, script: 0xf4, flags: 0x0}, + 1215: {region: 0x166, script: 0x5b, flags: 0x0}, + 1216: {region: 0x162, script: 0x5b, flags: 0x0}, + 1217: {region: 0x9f, script: 0x5b, flags: 0x0}, + 1218: {region: 0x107, script: 0x5b, flags: 0x0}, + 1219: {region: 0x13f, script: 0x5b, flags: 0x0}, + 1220: {region: 0x11c, script: 0x5b, flags: 0x0}, + 1221: {region: 0x166, script: 0x5b, flags: 0x0}, + 1222: {region: 0x36, script: 0x5b, flags: 0x0}, + 1223: {region: 0x61, script: 0x5b, flags: 0x0}, + 1224: {region: 0xd2, script: 0x5b, flags: 0x0}, + 1225: {region: 0x1, script: 0x5b, flags: 0x0}, + 1226: {region: 0x107, script: 0x5b, flags: 0x0}, + 1227: {region: 0x6b, script: 0x5b, flags: 0x0}, + 1228: {region: 0x130, script: 0x5b, flags: 0x0}, + 1229: {region: 0x166, script: 0x5b, flags: 0x0}, + 1230: {region: 0x36, script: 0x5b, flags: 0x0}, + 1231: {region: 0x4e, script: 0x5b, flags: 0x0}, + 1232: {region: 0x166, script: 0x5b, flags: 0x0}, + 1233: {region: 0x70, script: 0x2c, flags: 0x0}, + 1234: {region: 0x166, script: 0x5b, flags: 0x0}, + 1235: {region: 0xe8, script: 0x5b, flags: 0x0}, + 1236: {region: 0x2f, script: 0x5b, flags: 0x0}, + 1237: {region: 0x9a, script: 0xe9, flags: 0x0}, + 1238: {region: 0x9a, script: 0x22, flags: 0x0}, + 1239: {region: 0x166, script: 0x5b, flags: 0x0}, + 1240: {region: 0x166, script: 0x5b, flags: 0x0}, + 1241: {region: 0x166, script: 0x5b, flags: 0x0}, + 1242: {region: 0x166, script: 0x5b, flags: 0x0}, + 1243: {region: 0x166, script: 0x5b, flags: 0x0}, + 1244: {region: 0x166, script: 0x5b, flags: 0x0}, + 1245: {region: 0x166, script: 0x5b, flags: 0x0}, + 1246: {region: 0x166, script: 0x5b, flags: 0x0}, + 1247: {region: 0x166, script: 0x5b, flags: 0x0}, + 1248: {region: 0x141, script: 0x5b, flags: 0x0}, + 1249: {region: 0x166, script: 0x5b, flags: 0x0}, + 1250: {region: 0x166, script: 0x5b, flags: 0x0}, + 1251: {region: 0xa9, script: 0x5, flags: 0x0}, + 1252: {region: 0x166, script: 0x5b, flags: 0x0}, + 1253: {region: 0x115, script: 0x5b, flags: 0x0}, + 1254: {region: 0x166, script: 0x5b, flags: 0x0}, + 1255: {region: 0x166, script: 0x5b, flags: 0x0}, + 1256: {region: 0x166, script: 0x5b, flags: 0x0}, + 1257: {region: 0x166, script: 0x5b, flags: 0x0}, + 1258: {region: 0x9a, script: 0x22, flags: 0x0}, + 1259: {region: 0x53, script: 0x3b, flags: 0x0}, + 1260: {region: 0x166, script: 0x5b, flags: 0x0}, + 1261: {region: 0x166, script: 0x5b, flags: 0x0}, + 1262: {region: 0x41, script: 0x5b, flags: 0x0}, + 1263: {region: 0x166, script: 0x5b, flags: 0x0}, + 1264: {region: 0x12c, script: 0x18, flags: 0x0}, + 1265: {region: 0x166, script: 0x5b, flags: 0x0}, + 1266: {region: 0x162, script: 0x5b, flags: 0x0}, + 1267: {region: 0x166, script: 0x5b, flags: 0x0}, + 1268: {region: 0x12c, script: 0x63, flags: 0x0}, + 1269: {region: 0x12c, script: 0x64, flags: 0x0}, + 1270: {region: 0x7e, script: 0x2e, flags: 0x0}, + 1271: {region: 0x53, script: 0x68, flags: 0x0}, + 1272: {region: 0x10c, script: 0x6d, flags: 0x0}, + 1273: {region: 0x109, script: 0x79, flags: 0x0}, + 1274: {region: 0x9a, script: 0x22, flags: 0x0}, + 1275: {region: 0x132, script: 0x5b, flags: 0x0}, + 1276: {region: 0x166, script: 0x5b, flags: 0x0}, + 1277: {region: 0x9d, script: 0x93, flags: 0x0}, + 1278: {region: 0x166, script: 0x5b, flags: 0x0}, + 1279: {region: 0x15f, script: 0xce, flags: 0x0}, + 1280: {region: 0x166, script: 0x5b, flags: 0x0}, + 1281: {region: 0x166, script: 0x5b, flags: 0x0}, + 1282: {region: 0xdc, script: 0x22, flags: 0x0}, + 1283: {region: 0x166, script: 0x5b, flags: 0x0}, + 1284: {region: 0x166, script: 0x5b, flags: 0x0}, + 1285: {region: 0xd2, script: 0x5b, flags: 0x0}, + 1286: {region: 0x76, script: 0x5b, flags: 0x0}, + 1287: {region: 0x166, script: 0x5b, flags: 0x0}, + 1288: {region: 0x166, script: 0x5b, flags: 0x0}, + 1289: {region: 0x52, script: 0x5b, flags: 0x0}, + 1290: {region: 0x166, script: 0x5b, flags: 0x0}, + 1291: {region: 0x166, script: 0x5b, flags: 0x0}, + 1292: {region: 0x166, script: 0x5b, flags: 0x0}, + 1293: {region: 0x52, script: 0x5b, flags: 0x0}, + 1294: {region: 0x166, script: 0x5b, flags: 0x0}, + 1295: {region: 0x166, script: 0x5b, flags: 0x0}, + 1296: {region: 0x166, script: 0x5b, flags: 0x0}, + 1297: {region: 0x166, script: 0x5b, flags: 0x0}, + 1298: {region: 0x1, script: 0x3e, flags: 0x0}, + 1299: {region: 0x166, script: 0x5b, flags: 0x0}, + 1300: {region: 0x166, script: 0x5b, flags: 0x0}, + 1301: {region: 0x166, script: 0x5b, flags: 0x0}, + 1302: {region: 0x166, script: 0x5b, flags: 0x0}, + 1303: {region: 0x166, script: 0x5b, flags: 0x0}, + 1304: {region: 0xd7, script: 0x5b, flags: 0x0}, + 1305: {region: 0x166, script: 0x5b, flags: 0x0}, + 1306: {region: 0x166, script: 0x5b, flags: 0x0}, + 1307: {region: 0x166, script: 0x5b, flags: 0x0}, + 1308: {region: 0x41, script: 0x5b, flags: 0x0}, + 1309: {region: 0x166, script: 0x5b, flags: 0x0}, + 1310: {region: 0xd0, script: 0x5b, flags: 0x0}, + 1311: {region: 0x4a, script: 0x3, flags: 0x1}, + 1312: {region: 0x166, script: 0x5b, flags: 0x0}, + 1313: {region: 0x166, script: 0x5b, flags: 0x0}, + 1314: {region: 0x166, script: 0x5b, flags: 0x0}, + 1315: {region: 0x53, script: 0x5b, flags: 0x0}, + 1316: {region: 0x10c, script: 0x5b, flags: 0x0}, + 1318: {region: 0xa9, script: 0x5, flags: 0x0}, + 1319: {region: 0xda, script: 0x5b, flags: 0x0}, + 1320: {region: 0xbb, script: 0xeb, flags: 0x0}, + 1321: {region: 0x4d, script: 0x14, flags: 0x1}, + 1322: {region: 0x53, script: 0x7f, flags: 0x0}, + 1323: {region: 0x166, script: 0x5b, flags: 0x0}, + 1324: {region: 0x123, script: 0x5b, flags: 0x0}, + 1325: {region: 0xd1, script: 0x5b, flags: 0x0}, + 1326: {region: 0x166, script: 0x5b, flags: 0x0}, + 1327: {region: 0x162, script: 0x5b, flags: 0x0}, + 1329: {region: 0x12c, script: 0x5b, flags: 0x0}, +} + +// likelyLangList holds lists info associated with likelyLang. +// Size: 582 bytes, 97 elements +var likelyLangList = [97]likelyScriptRegion{ + 0: {region: 0x9d, script: 0x7, flags: 0x0}, + 1: {region: 0xa2, script: 0x7a, flags: 0x2}, + 2: {region: 0x11d, script: 0x87, flags: 0x2}, + 3: {region: 0x32, script: 0x5b, flags: 0x0}, + 4: {region: 0x9c, script: 0x5, flags: 0x4}, + 5: {region: 0x9d, script: 0x5, flags: 0x4}, + 6: {region: 0x107, script: 0x20, flags: 0x4}, + 7: {region: 0x9d, script: 0x5, flags: 0x2}, + 8: {region: 0x107, script: 0x20, flags: 0x0}, + 9: {region: 0x38, script: 0x2f, flags: 0x2}, + 10: {region: 0x136, script: 0x5b, flags: 0x0}, + 11: {region: 0x7c, script: 0xd1, flags: 0x2}, + 12: {region: 0x115, script: 0x5b, flags: 0x0}, + 13: {region: 0x85, script: 0x1, flags: 0x2}, + 14: {region: 0x5e, script: 0x1f, flags: 0x0}, + 15: {region: 0x88, script: 0x60, flags: 0x2}, + 16: {region: 0xd7, script: 0x5b, flags: 0x0}, + 17: {region: 0x52, script: 0x5, flags: 0x4}, + 18: {region: 0x10c, script: 0x5, flags: 0x4}, + 19: {region: 0xaf, script: 0x20, flags: 0x0}, + 20: {region: 0x24, script: 0x5, flags: 0x4}, + 21: {region: 0x53, script: 0x5, flags: 0x4}, + 22: {region: 0x9d, script: 0x5, flags: 0x4}, + 23: {region: 0xc6, script: 0x5, flags: 0x4}, + 24: {region: 0x53, script: 0x5, flags: 0x2}, + 25: {region: 0x12c, script: 0x5b, flags: 0x0}, + 26: {region: 0xb1, script: 0x5, flags: 0x4}, + 27: {region: 0x9c, script: 0x5, flags: 0x2}, + 28: {region: 0xa6, script: 0x20, flags: 0x0}, + 29: {region: 0x53, script: 0x5, flags: 0x4}, + 30: {region: 0x12c, script: 0x5b, flags: 0x4}, + 31: {region: 0x53, script: 0x5, flags: 0x2}, + 32: {region: 0x12c, script: 0x5b, flags: 0x2}, + 33: {region: 0xdc, script: 0x22, flags: 0x0}, + 34: {region: 0x9a, script: 0x5e, flags: 0x2}, + 35: {region: 0x84, script: 0x5b, flags: 0x0}, + 36: {region: 0x85, script: 0x7e, flags: 0x4}, + 37: {region: 0x85, script: 0x7e, flags: 0x2}, + 38: {region: 0xc6, script: 0x20, flags: 0x0}, + 39: {region: 0x53, script: 0x71, flags: 0x4}, + 40: {region: 0x53, script: 0x71, flags: 0x2}, + 41: {region: 0xd1, script: 0x5b, flags: 0x0}, + 42: {region: 0x4a, script: 0x5, flags: 0x4}, + 43: {region: 0x96, script: 0x5, flags: 0x4}, + 44: {region: 0x9a, script: 0x36, flags: 0x0}, + 45: {region: 0xe9, script: 0x5, flags: 0x4}, + 46: {region: 0xe9, script: 0x5, flags: 0x2}, + 47: {region: 0x9d, script: 0x8d, flags: 0x0}, + 48: {region: 0x53, script: 0x8e, flags: 0x2}, + 49: {region: 0xbb, script: 0xeb, flags: 0x0}, + 50: {region: 0xda, script: 0x5b, flags: 0x4}, + 51: {region: 0xe9, script: 0x5, flags: 0x0}, + 52: {region: 0x9a, script: 0x22, flags: 0x2}, + 53: {region: 0x9a, script: 0x50, flags: 0x2}, + 54: {region: 0x9a, script: 0xd5, flags: 0x2}, + 55: {region: 0x106, script: 0x20, flags: 0x0}, + 56: {region: 0xbe, script: 0x5b, flags: 0x4}, + 57: {region: 0x105, script: 0x5b, flags: 0x4}, + 58: {region: 0x107, script: 0x5b, flags: 0x4}, + 59: {region: 0x12c, script: 0x5b, flags: 0x4}, + 60: {region: 0x125, script: 0x20, flags: 0x0}, + 61: {region: 0xe9, script: 0x5, flags: 0x4}, + 62: {region: 0xe9, script: 0x5, flags: 0x2}, + 63: {region: 0x53, script: 0x5, flags: 0x0}, + 64: {region: 0xaf, script: 0x20, flags: 0x4}, + 65: {region: 0xc6, script: 0x20, flags: 0x4}, + 66: {region: 0xaf, script: 0x20, flags: 0x2}, + 67: {region: 0x9a, script: 0xe, flags: 0x0}, + 68: {region: 0xdc, script: 0x22, flags: 0x4}, + 69: {region: 0xdc, script: 0x22, flags: 0x2}, + 70: {region: 0x138, script: 0x5b, flags: 0x0}, + 71: {region: 0x24, script: 0x5, flags: 0x4}, + 72: {region: 0x53, script: 0x20, flags: 0x4}, + 73: {region: 0x24, script: 0x5, flags: 0x2}, + 74: {region: 0x8e, script: 0x3c, flags: 0x0}, + 75: {region: 0x53, script: 0x3b, flags: 0x4}, + 76: {region: 0x53, script: 0x3b, flags: 0x2}, + 77: {region: 0x53, script: 0x3b, flags: 0x0}, + 78: {region: 0x2f, script: 0x3c, flags: 0x4}, + 79: {region: 0x3e, script: 0x3c, flags: 0x4}, + 80: {region: 0x7c, script: 0x3c, flags: 0x4}, + 81: {region: 0x7f, script: 0x3c, flags: 0x4}, + 82: {region: 0x8e, script: 0x3c, flags: 0x4}, + 83: {region: 0x96, script: 0x3c, flags: 0x4}, + 84: {region: 0xc7, script: 0x3c, flags: 0x4}, + 85: {region: 0xd1, script: 0x3c, flags: 0x4}, + 86: {region: 0xe3, script: 0x3c, flags: 0x4}, + 87: {region: 0xe6, script: 0x3c, flags: 0x4}, + 88: {region: 0xe8, script: 0x3c, flags: 0x4}, + 89: {region: 0x117, script: 0x3c, flags: 0x4}, + 90: {region: 0x124, script: 0x3c, flags: 0x4}, + 91: {region: 0x12f, script: 0x3c, flags: 0x4}, + 92: {region: 0x136, script: 0x3c, flags: 0x4}, + 93: {region: 0x13f, script: 0x3c, flags: 0x4}, + 94: {region: 0x12f, script: 0x11, flags: 0x2}, + 95: {region: 0x12f, script: 0x37, flags: 0x2}, + 96: {region: 0x12f, script: 0x3c, flags: 0x2}, +} + +type likelyLangScript struct { + lang uint16 + script uint16 + flags uint8 +} + +// likelyRegion is a lookup table, indexed by regionID, for the most likely +// languages and scripts given incomplete information. If more entries exist +// for a given regionID, lang and script are the index and size respectively +// of the list in likelyRegionList. +// TODO: exclude containers and user-definable regions from the list. +// Size: 2154 bytes, 359 elements +var likelyRegion = [359]likelyLangScript{ + 34: {lang: 0xd7, script: 0x5b, flags: 0x0}, + 35: {lang: 0x3a, script: 0x5, flags: 0x0}, + 36: {lang: 0x0, script: 0x2, flags: 0x1}, + 39: {lang: 0x2, script: 0x2, flags: 0x1}, + 40: {lang: 0x4, script: 0x2, flags: 0x1}, + 42: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 43: {lang: 0x0, script: 0x5b, flags: 0x0}, + 44: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 45: {lang: 0x41b, script: 0x5b, flags: 0x0}, + 46: {lang: 0x10d, script: 0x5b, flags: 0x0}, + 48: {lang: 0x367, script: 0x5b, flags: 0x0}, + 49: {lang: 0x444, script: 0x5b, flags: 0x0}, + 50: {lang: 0x58, script: 0x5b, flags: 0x0}, + 51: {lang: 0x6, script: 0x2, flags: 0x1}, + 53: {lang: 0xa5, script: 0xe, flags: 0x0}, + 54: {lang: 0x367, script: 0x5b, flags: 0x0}, + 55: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 56: {lang: 0x7e, script: 0x20, flags: 0x0}, + 57: {lang: 0x3a, script: 0x5, flags: 0x0}, + 58: {lang: 0x3d9, script: 0x5b, flags: 0x0}, + 59: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 60: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 62: {lang: 0x31f, script: 0x5b, flags: 0x0}, + 63: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 64: {lang: 0x3a1, script: 0x5b, flags: 0x0}, + 65: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 67: {lang: 0x8, script: 0x2, flags: 0x1}, + 69: {lang: 0x0, script: 0x5b, flags: 0x0}, + 71: {lang: 0x71, script: 0x20, flags: 0x0}, + 73: {lang: 0x512, script: 0x3e, flags: 0x2}, + 74: {lang: 0x31f, script: 0x5, flags: 0x2}, + 75: {lang: 0x445, script: 0x5b, flags: 0x0}, + 76: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 77: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 78: {lang: 0x10d, script: 0x5b, flags: 0x0}, + 79: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 81: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 82: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 83: {lang: 0xa, script: 0x4, flags: 0x1}, + 84: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 85: {lang: 0x0, script: 0x5b, flags: 0x0}, + 87: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 90: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 91: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 92: {lang: 0x3a1, script: 0x5b, flags: 0x0}, + 94: {lang: 0xe, script: 0x2, flags: 0x1}, + 95: {lang: 0xfa, script: 0x5b, flags: 0x0}, + 97: {lang: 0x10d, script: 0x5b, flags: 0x0}, + 99: {lang: 0x1, script: 0x5b, flags: 0x0}, + 100: {lang: 0x101, script: 0x5b, flags: 0x0}, + 102: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 104: {lang: 0x10, script: 0x2, flags: 0x1}, + 105: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 106: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 107: {lang: 0x140, script: 0x5b, flags: 0x0}, + 108: {lang: 0x3a, script: 0x5, flags: 0x0}, + 109: {lang: 0x3a, script: 0x5, flags: 0x0}, + 110: {lang: 0x46f, script: 0x2c, flags: 0x0}, + 111: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 112: {lang: 0x12, script: 0x2, flags: 0x1}, + 114: {lang: 0x10d, script: 0x5b, flags: 0x0}, + 115: {lang: 0x151, script: 0x5b, flags: 0x0}, + 116: {lang: 0x1c0, script: 0x22, flags: 0x2}, + 119: {lang: 0x158, script: 0x5b, flags: 0x0}, + 121: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 123: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 124: {lang: 0x14, script: 0x2, flags: 0x1}, + 126: {lang: 0x16, script: 0x3, flags: 0x1}, + 127: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 129: {lang: 0x21, script: 0x5b, flags: 0x0}, + 131: {lang: 0x245, script: 0x5b, flags: 0x0}, + 133: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 134: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 135: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 136: {lang: 0x19, script: 0x2, flags: 0x1}, + 137: {lang: 0x0, script: 0x5b, flags: 0x0}, + 138: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 140: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 142: {lang: 0x529, script: 0x3c, flags: 0x0}, + 143: {lang: 0x0, script: 0x5b, flags: 0x0}, + 144: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 145: {lang: 0x1d1, script: 0x5b, flags: 0x0}, + 146: {lang: 0x1d4, script: 0x5b, flags: 0x0}, + 147: {lang: 0x1d5, script: 0x5b, flags: 0x0}, + 149: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 150: {lang: 0x1b, script: 0x2, flags: 0x1}, + 152: {lang: 0x1bc, script: 0x3e, flags: 0x0}, + 154: {lang: 0x1d, script: 0x3, flags: 0x1}, + 156: {lang: 0x3a, script: 0x5, flags: 0x0}, + 157: {lang: 0x20, script: 0x2, flags: 0x1}, + 158: {lang: 0x1f8, script: 0x5b, flags: 0x0}, + 159: {lang: 0x1f9, script: 0x5b, flags: 0x0}, + 162: {lang: 0x3a, script: 0x5, flags: 0x0}, + 163: {lang: 0x200, script: 0x49, flags: 0x0}, + 165: {lang: 0x445, script: 0x5b, flags: 0x0}, + 166: {lang: 0x28a, script: 0x20, flags: 0x0}, + 167: {lang: 0x22, script: 0x3, flags: 0x1}, + 169: {lang: 0x25, script: 0x2, flags: 0x1}, + 171: {lang: 0x254, script: 0x54, flags: 0x0}, + 172: {lang: 0x254, script: 0x54, flags: 0x0}, + 173: {lang: 0x3a, script: 0x5, flags: 0x0}, + 175: {lang: 0x3e2, script: 0x20, flags: 0x0}, + 176: {lang: 0x27, script: 0x2, flags: 0x1}, + 177: {lang: 0x3a, script: 0x5, flags: 0x0}, + 179: {lang: 0x10d, script: 0x5b, flags: 0x0}, + 180: {lang: 0x40c, script: 0xd6, flags: 0x0}, + 182: {lang: 0x43b, script: 0x5b, flags: 0x0}, + 183: {lang: 0x2c0, script: 0x5b, flags: 0x0}, + 184: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 185: {lang: 0x2c7, script: 0x5b, flags: 0x0}, + 186: {lang: 0x3a, script: 0x5, flags: 0x0}, + 187: {lang: 0x29, script: 0x2, flags: 0x1}, + 188: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 189: {lang: 0x2b, script: 0x2, flags: 0x1}, + 190: {lang: 0x432, script: 0x5b, flags: 0x0}, + 191: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 192: {lang: 0x2f1, script: 0x5b, flags: 0x0}, + 195: {lang: 0x2d, script: 0x2, flags: 0x1}, + 196: {lang: 0xa0, script: 0x5b, flags: 0x0}, + 197: {lang: 0x2f, script: 0x2, flags: 0x1}, + 198: {lang: 0x31, script: 0x2, flags: 0x1}, + 199: {lang: 0x33, script: 0x2, flags: 0x1}, + 201: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 202: {lang: 0x35, script: 0x2, flags: 0x1}, + 204: {lang: 0x320, script: 0x5b, flags: 0x0}, + 205: {lang: 0x37, script: 0x3, flags: 0x1}, + 206: {lang: 0x128, script: 0xed, flags: 0x0}, + 208: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 209: {lang: 0x31f, script: 0x5b, flags: 0x0}, + 210: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 211: {lang: 0x16, script: 0x5b, flags: 0x0}, + 212: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 213: {lang: 0x1b4, script: 0x5b, flags: 0x0}, + 215: {lang: 0x1b4, script: 0x5, flags: 0x2}, + 217: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 218: {lang: 0x367, script: 0x5b, flags: 0x0}, + 219: {lang: 0x347, script: 0x5b, flags: 0x0}, + 220: {lang: 0x351, script: 0x22, flags: 0x0}, + 226: {lang: 0x3a, script: 0x5, flags: 0x0}, + 227: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 229: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 230: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 231: {lang: 0x486, script: 0x5b, flags: 0x0}, + 232: {lang: 0x153, script: 0x5b, flags: 0x0}, + 233: {lang: 0x3a, script: 0x3, flags: 0x1}, + 234: {lang: 0x3b3, script: 0x5b, flags: 0x0}, + 235: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 237: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 238: {lang: 0x3a, script: 0x5, flags: 0x0}, + 239: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 241: {lang: 0x3a2, script: 0x5b, flags: 0x0}, + 242: {lang: 0x194, script: 0x5b, flags: 0x0}, + 244: {lang: 0x3a, script: 0x5, flags: 0x0}, + 259: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 261: {lang: 0x3d, script: 0x2, flags: 0x1}, + 262: {lang: 0x432, script: 0x20, flags: 0x0}, + 263: {lang: 0x3f, script: 0x2, flags: 0x1}, + 264: {lang: 0x3e5, script: 0x5b, flags: 0x0}, + 265: {lang: 0x3a, script: 0x5, flags: 0x0}, + 267: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 268: {lang: 0x3a, script: 0x5, flags: 0x0}, + 269: {lang: 0x41, script: 0x2, flags: 0x1}, + 272: {lang: 0x416, script: 0x5b, flags: 0x0}, + 273: {lang: 0x347, script: 0x5b, flags: 0x0}, + 274: {lang: 0x43, script: 0x2, flags: 0x1}, + 276: {lang: 0x1f9, script: 0x5b, flags: 0x0}, + 277: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 278: {lang: 0x429, script: 0x5b, flags: 0x0}, + 279: {lang: 0x367, script: 0x5b, flags: 0x0}, + 281: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 283: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 285: {lang: 0x45, script: 0x2, flags: 0x1}, + 289: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 290: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 291: {lang: 0x47, script: 0x2, flags: 0x1}, + 292: {lang: 0x49, script: 0x3, flags: 0x1}, + 293: {lang: 0x4c, script: 0x2, flags: 0x1}, + 294: {lang: 0x477, script: 0x5b, flags: 0x0}, + 295: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 296: {lang: 0x476, script: 0x5b, flags: 0x0}, + 297: {lang: 0x4e, script: 0x2, flags: 0x1}, + 298: {lang: 0x482, script: 0x5b, flags: 0x0}, + 300: {lang: 0x50, script: 0x4, flags: 0x1}, + 302: {lang: 0x4a0, script: 0x5b, flags: 0x0}, + 303: {lang: 0x54, script: 0x2, flags: 0x1}, + 304: {lang: 0x445, script: 0x5b, flags: 0x0}, + 305: {lang: 0x56, script: 0x3, flags: 0x1}, + 306: {lang: 0x445, script: 0x5b, flags: 0x0}, + 310: {lang: 0x512, script: 0x3e, flags: 0x2}, + 311: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 312: {lang: 0x4bc, script: 0x5b, flags: 0x0}, + 313: {lang: 0x1f9, script: 0x5b, flags: 0x0}, + 316: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 319: {lang: 0x4c3, script: 0x5b, flags: 0x0}, + 320: {lang: 0x8a, script: 0x5b, flags: 0x0}, + 321: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 323: {lang: 0x41b, script: 0x5b, flags: 0x0}, + 334: {lang: 0x59, script: 0x2, flags: 0x1}, + 351: {lang: 0x3a, script: 0x5, flags: 0x0}, + 352: {lang: 0x5b, script: 0x2, flags: 0x1}, + 357: {lang: 0x423, script: 0x5b, flags: 0x0}, +} + +// likelyRegionList holds lists info associated with likelyRegion. +// Size: 558 bytes, 93 elements +var likelyRegionList = [93]likelyLangScript{ + 0: {lang: 0x148, script: 0x5, flags: 0x0}, + 1: {lang: 0x476, script: 0x5b, flags: 0x0}, + 2: {lang: 0x431, script: 0x5b, flags: 0x0}, + 3: {lang: 0x2ff, script: 0x20, flags: 0x0}, + 4: {lang: 0x1d7, script: 0x8, flags: 0x0}, + 5: {lang: 0x274, script: 0x5b, flags: 0x0}, + 6: {lang: 0xb7, script: 0x5b, flags: 0x0}, + 7: {lang: 0x432, script: 0x20, flags: 0x0}, + 8: {lang: 0x12d, script: 0xef, flags: 0x0}, + 9: {lang: 0x351, script: 0x22, flags: 0x0}, + 10: {lang: 0x529, script: 0x3b, flags: 0x0}, + 11: {lang: 0x4ac, script: 0x5, flags: 0x0}, + 12: {lang: 0x523, script: 0x5b, flags: 0x0}, + 13: {lang: 0x29a, script: 0xee, flags: 0x0}, + 14: {lang: 0x136, script: 0x34, flags: 0x0}, + 15: {lang: 0x48a, script: 0x5b, flags: 0x0}, + 16: {lang: 0x3a, script: 0x5, flags: 0x0}, + 17: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 18: {lang: 0x27, script: 0x2c, flags: 0x0}, + 19: {lang: 0x139, script: 0x5b, flags: 0x0}, + 20: {lang: 0x26a, script: 0x5, flags: 0x2}, + 21: {lang: 0x512, script: 0x3e, flags: 0x2}, + 22: {lang: 0x210, script: 0x2e, flags: 0x0}, + 23: {lang: 0x5, script: 0x20, flags: 0x0}, + 24: {lang: 0x274, script: 0x5b, flags: 0x0}, + 25: {lang: 0x136, script: 0x34, flags: 0x0}, + 26: {lang: 0x2ff, script: 0x20, flags: 0x0}, + 27: {lang: 0x1e1, script: 0x5b, flags: 0x0}, + 28: {lang: 0x31f, script: 0x5, flags: 0x0}, + 29: {lang: 0x1be, script: 0x22, flags: 0x0}, + 30: {lang: 0x4b4, script: 0x5, flags: 0x0}, + 31: {lang: 0x236, script: 0x76, flags: 0x0}, + 32: {lang: 0x148, script: 0x5, flags: 0x0}, + 33: {lang: 0x476, script: 0x5b, flags: 0x0}, + 34: {lang: 0x24a, script: 0x4f, flags: 0x0}, + 35: {lang: 0xe6, script: 0x5, flags: 0x0}, + 36: {lang: 0x226, script: 0xee, flags: 0x0}, + 37: {lang: 0x3a, script: 0x5, flags: 0x0}, + 38: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 39: {lang: 0x2b8, script: 0x58, flags: 0x0}, + 40: {lang: 0x226, script: 0xee, flags: 0x0}, + 41: {lang: 0x3a, script: 0x5, flags: 0x0}, + 42: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 43: {lang: 0x3dc, script: 0x5b, flags: 0x0}, + 44: {lang: 0x4ae, script: 0x20, flags: 0x0}, + 45: {lang: 0x2ff, script: 0x20, flags: 0x0}, + 46: {lang: 0x431, script: 0x5b, flags: 0x0}, + 47: {lang: 0x331, script: 0x76, flags: 0x0}, + 48: {lang: 0x213, script: 0x5b, flags: 0x0}, + 49: {lang: 0x30b, script: 0x20, flags: 0x0}, + 50: {lang: 0x242, script: 0x5, flags: 0x0}, + 51: {lang: 0x529, script: 0x3c, flags: 0x0}, + 52: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 53: {lang: 0x3a, script: 0x5, flags: 0x0}, + 54: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 55: {lang: 0x2ed, script: 0x5b, flags: 0x0}, + 56: {lang: 0x4b4, script: 0x5, flags: 0x0}, + 57: {lang: 0x88, script: 0x22, flags: 0x0}, + 58: {lang: 0x4b4, script: 0x5, flags: 0x0}, + 59: {lang: 0x4b4, script: 0x5, flags: 0x0}, + 60: {lang: 0xbe, script: 0x22, flags: 0x0}, + 61: {lang: 0x3dc, script: 0x5b, flags: 0x0}, + 62: {lang: 0x7e, script: 0x20, flags: 0x0}, + 63: {lang: 0x3e2, script: 0x20, flags: 0x0}, + 64: {lang: 0x267, script: 0x5b, flags: 0x0}, + 65: {lang: 0x444, script: 0x5b, flags: 0x0}, + 66: {lang: 0x512, script: 0x3e, flags: 0x0}, + 67: {lang: 0x412, script: 0x5b, flags: 0x0}, + 68: {lang: 0x4ae, script: 0x20, flags: 0x0}, + 69: {lang: 0x3a, script: 0x5, flags: 0x0}, + 70: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 71: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 72: {lang: 0x35, script: 0x5, flags: 0x0}, + 73: {lang: 0x46b, script: 0xee, flags: 0x0}, + 74: {lang: 0x2ec, script: 0x5, flags: 0x0}, + 75: {lang: 0x30f, script: 0x76, flags: 0x0}, + 76: {lang: 0x467, script: 0x20, flags: 0x0}, + 77: {lang: 0x148, script: 0x5, flags: 0x0}, + 78: {lang: 0x3a, script: 0x5, flags: 0x0}, + 79: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 80: {lang: 0x48a, script: 0x5b, flags: 0x0}, + 81: {lang: 0x58, script: 0x5, flags: 0x0}, + 82: {lang: 0x219, script: 0x20, flags: 0x0}, + 83: {lang: 0x81, script: 0x34, flags: 0x0}, + 84: {lang: 0x529, script: 0x3c, flags: 0x0}, + 85: {lang: 0x48c, script: 0x5b, flags: 0x0}, + 86: {lang: 0x4ae, script: 0x20, flags: 0x0}, + 87: {lang: 0x512, script: 0x3e, flags: 0x0}, + 88: {lang: 0x3b3, script: 0x5b, flags: 0x0}, + 89: {lang: 0x431, script: 0x5b, flags: 0x0}, + 90: {lang: 0x432, script: 0x20, flags: 0x0}, + 91: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 92: {lang: 0x446, script: 0x5, flags: 0x0}, +} + +type likelyTag struct { + lang uint16 + region uint16 + script uint16 +} + +// Size: 198 bytes, 33 elements +var likelyRegionGroup = [33]likelyTag{ + 1: {lang: 0x139, region: 0xd7, script: 0x5b}, + 2: {lang: 0x139, region: 0x136, script: 0x5b}, + 3: {lang: 0x3c0, region: 0x41, script: 0x5b}, + 4: {lang: 0x139, region: 0x2f, script: 0x5b}, + 5: {lang: 0x139, region: 0xd7, script: 0x5b}, + 6: {lang: 0x13e, region: 0xd0, script: 0x5b}, + 7: {lang: 0x445, region: 0x130, script: 0x5b}, + 8: {lang: 0x3a, region: 0x6c, script: 0x5}, + 9: {lang: 0x445, region: 0x4b, script: 0x5b}, + 10: {lang: 0x139, region: 0x162, script: 0x5b}, + 11: {lang: 0x139, region: 0x136, script: 0x5b}, + 12: {lang: 0x139, region: 0x136, script: 0x5b}, + 13: {lang: 0x13e, region: 0x5a, script: 0x5b}, + 14: {lang: 0x529, region: 0x53, script: 0x3b}, + 15: {lang: 0x1be, region: 0x9a, script: 0x22}, + 16: {lang: 0x1e1, region: 0x96, script: 0x5b}, + 17: {lang: 0x1f9, region: 0x9f, script: 0x5b}, + 18: {lang: 0x139, region: 0x2f, script: 0x5b}, + 19: {lang: 0x139, region: 0xe7, script: 0x5b}, + 20: {lang: 0x139, region: 0x8b, script: 0x5b}, + 21: {lang: 0x41b, region: 0x143, script: 0x5b}, + 22: {lang: 0x529, region: 0x53, script: 0x3b}, + 23: {lang: 0x4bc, region: 0x138, script: 0x5b}, + 24: {lang: 0x3a, region: 0x109, script: 0x5}, + 25: {lang: 0x3e2, region: 0x107, script: 0x20}, + 26: {lang: 0x3e2, region: 0x107, script: 0x20}, + 27: {lang: 0x139, region: 0x7c, script: 0x5b}, + 28: {lang: 0x10d, region: 0x61, script: 0x5b}, + 29: {lang: 0x139, region: 0xd7, script: 0x5b}, + 30: {lang: 0x13e, region: 0x1f, script: 0x5b}, + 31: {lang: 0x139, region: 0x9b, script: 0x5b}, + 32: {lang: 0x139, region: 0x7c, script: 0x5b}, +} + +// Size: 264 bytes, 33 elements +var regionContainment = [33]uint64{ + // Entry 0 - 1F + 0x00000001ffffffff, 0x00000000200007a2, 0x0000000000003044, 0x0000000000000008, + 0x00000000803c0010, 0x0000000000000020, 0x0000000000000040, 0x0000000000000080, + 0x0000000000000100, 0x0000000000000200, 0x0000000000000400, 0x000000004000384c, + 0x0000000000001000, 0x0000000000002000, 0x0000000000004000, 0x0000000000008000, + 0x0000000000010000, 0x0000000000020000, 0x0000000000040000, 0x0000000000080000, + 0x0000000000100000, 0x0000000000200000, 0x0000000001c1c000, 0x0000000000800000, + 0x0000000001000000, 0x000000001e020000, 0x0000000004000000, 0x0000000008000000, + 0x0000000010000000, 0x00000000200006a0, 0x0000000040002048, 0x0000000080000000, + // Entry 20 - 3F + 0x0000000100000000, +} + +// regionInclusion maps region identifiers to sets of regions in regionInclusionBits, +// where each set holds all groupings that are directly connected in a region +// containment graph. +// Size: 359 bytes, 359 elements +var regionInclusion = [359]uint8{ + // Entry 0 - 3F + 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x26, 0x23, + 0x24, 0x26, 0x27, 0x22, 0x28, 0x29, 0x2a, 0x2b, + 0x26, 0x2c, 0x24, 0x23, 0x26, 0x25, 0x2a, 0x2d, + 0x2e, 0x24, 0x2f, 0x2d, 0x26, 0x30, 0x31, 0x28, + // Entry 40 - 7F + 0x26, 0x28, 0x26, 0x25, 0x31, 0x22, 0x32, 0x33, + 0x34, 0x30, 0x22, 0x27, 0x27, 0x27, 0x35, 0x2d, + 0x29, 0x28, 0x27, 0x36, 0x28, 0x22, 0x21, 0x34, + 0x23, 0x21, 0x26, 0x2d, 0x26, 0x22, 0x37, 0x2e, + 0x35, 0x2a, 0x22, 0x2f, 0x38, 0x26, 0x26, 0x21, + 0x39, 0x39, 0x28, 0x38, 0x39, 0x39, 0x2f, 0x3a, + 0x2f, 0x20, 0x21, 0x38, 0x3b, 0x28, 0x3c, 0x2c, + 0x21, 0x2a, 0x35, 0x27, 0x38, 0x26, 0x24, 0x28, + // Entry 80 - BF + 0x2c, 0x2d, 0x23, 0x30, 0x2d, 0x2d, 0x26, 0x27, + 0x3a, 0x22, 0x34, 0x3c, 0x2d, 0x28, 0x36, 0x22, + 0x34, 0x3a, 0x26, 0x2e, 0x21, 0x39, 0x31, 0x38, + 0x24, 0x2c, 0x25, 0x22, 0x24, 0x25, 0x2c, 0x3a, + 0x2c, 0x26, 0x24, 0x36, 0x21, 0x2f, 0x3d, 0x31, + 0x3c, 0x2f, 0x26, 0x36, 0x36, 0x24, 0x26, 0x3d, + 0x31, 0x24, 0x26, 0x35, 0x25, 0x2d, 0x32, 0x38, + 0x2a, 0x38, 0x39, 0x39, 0x35, 0x33, 0x23, 0x26, + // Entry C0 - FF + 0x2f, 0x3c, 0x21, 0x23, 0x2d, 0x31, 0x36, 0x36, + 0x3c, 0x26, 0x2d, 0x26, 0x3a, 0x2f, 0x25, 0x2f, + 0x34, 0x31, 0x2f, 0x32, 0x3b, 0x2d, 0x2b, 0x2d, + 0x21, 0x34, 0x2a, 0x2c, 0x25, 0x21, 0x3c, 0x24, + 0x29, 0x2b, 0x24, 0x34, 0x21, 0x28, 0x29, 0x3b, + 0x31, 0x25, 0x2e, 0x30, 0x29, 0x26, 0x24, 0x3a, + 0x21, 0x3c, 0x28, 0x21, 0x24, 0x21, 0x21, 0x1f, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + // Entry 100 - 13F + 0x21, 0x21, 0x21, 0x2f, 0x21, 0x2e, 0x23, 0x33, + 0x2f, 0x24, 0x3b, 0x2f, 0x39, 0x38, 0x31, 0x2d, + 0x3a, 0x2c, 0x2e, 0x2d, 0x23, 0x2d, 0x2f, 0x28, + 0x2f, 0x27, 0x33, 0x34, 0x26, 0x24, 0x32, 0x22, + 0x26, 0x27, 0x22, 0x2d, 0x31, 0x3d, 0x29, 0x31, + 0x3d, 0x39, 0x29, 0x31, 0x24, 0x26, 0x29, 0x36, + 0x2f, 0x33, 0x2f, 0x21, 0x22, 0x21, 0x30, 0x28, + 0x3d, 0x23, 0x26, 0x21, 0x28, 0x26, 0x26, 0x31, + // Entry 140 - 17F + 0x3b, 0x29, 0x21, 0x29, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x24, + 0x2f, 0x23, 0x32, 0x2f, 0x27, 0x2f, 0x21, +} + +// regionInclusionBits is an array of bit vectors where every vector represents +// a set of region groupings. These sets are used to compute the distance +// between two regions for the purpose of language matching. +// Size: 584 bytes, 73 elements +var regionInclusionBits = [73]uint64{ + // Entry 0 - 1F + 0x0000000102400813, 0x00000000200007a3, 0x0000000000003844, 0x0000000040000808, + 0x00000000803c0011, 0x0000000020000022, 0x0000000040000844, 0x0000000020000082, + 0x0000000000000102, 0x0000000020000202, 0x0000000020000402, 0x000000004000384d, + 0x0000000000001804, 0x0000000040002804, 0x0000000000404000, 0x0000000000408000, + 0x0000000000410000, 0x0000000002020000, 0x0000000000040010, 0x0000000000080010, + 0x0000000000100010, 0x0000000000200010, 0x0000000001c1c001, 0x0000000000c00000, + 0x0000000001400000, 0x000000001e020001, 0x0000000006000000, 0x000000000a000000, + 0x0000000012000000, 0x00000000200006a2, 0x0000000040002848, 0x0000000080000010, + // Entry 20 - 3F + 0x0000000100000001, 0x0000000000000001, 0x0000000080000000, 0x0000000000020000, + 0x0000000001000000, 0x0000000000008000, 0x0000000000002000, 0x0000000000000200, + 0x0000000000000008, 0x0000000000200000, 0x0000000110000000, 0x0000000000040000, + 0x0000000008000000, 0x0000000000000020, 0x0000000104000000, 0x0000000000000080, + 0x0000000000001000, 0x0000000000010000, 0x0000000000000400, 0x0000000004000000, + 0x0000000000000040, 0x0000000010000000, 0x0000000000004000, 0x0000000101000000, + 0x0000000108000000, 0x0000000000000100, 0x0000000100020000, 0x0000000000080000, + 0x0000000000100000, 0x0000000000800000, 0x00000001ffffffff, 0x0000000122400fb3, + // Entry 40 - 5F + 0x00000001827c0813, 0x000000014240385f, 0x0000000103c1c813, 0x000000011e420813, + 0x0000000112000001, 0x0000000106000001, 0x0000000101400001, 0x000000010a000001, + 0x0000000102020001, +} + +// regionInclusionNext marks, for each entry in regionInclusionBits, the set of +// all groups that are reachable from the groups set in the respective entry. +// Size: 73 bytes, 73 elements +var regionInclusionNext = [73]uint8{ + // Entry 0 - 3F + 0x3e, 0x3f, 0x0b, 0x0b, 0x40, 0x01, 0x0b, 0x01, + 0x01, 0x01, 0x01, 0x41, 0x0b, 0x0b, 0x16, 0x16, + 0x16, 0x19, 0x04, 0x04, 0x04, 0x04, 0x42, 0x16, + 0x16, 0x43, 0x19, 0x19, 0x19, 0x01, 0x0b, 0x04, + 0x00, 0x00, 0x1f, 0x11, 0x18, 0x0f, 0x0d, 0x09, + 0x03, 0x15, 0x44, 0x12, 0x1b, 0x05, 0x45, 0x07, + 0x0c, 0x10, 0x0a, 0x1a, 0x06, 0x1c, 0x0e, 0x46, + 0x47, 0x08, 0x48, 0x13, 0x14, 0x17, 0x3e, 0x3e, + // Entry 40 - 7F + 0x3e, 0x3e, 0x3e, 0x3e, 0x43, 0x43, 0x42, 0x43, + 0x43, +} + +type parentRel struct { + lang uint16 + script uint16 + maxScript uint16 + toRegion uint16 + fromRegion []uint16 +} + +// Size: 414 bytes, 5 elements +var parents = [5]parentRel{ + 0: {lang: 0x139, script: 0x0, maxScript: 0x5b, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5d, 0x5e, 0x62, 0x65, 0x6e, 0x74, 0x75, 0x76, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x84, 0x8d, 0x8e, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0xa0, 0xa1, 0xa5, 0xa8, 0xaa, 0xae, 0xb2, 0xb5, 0xb6, 0xc0, 0xc7, 0xcb, 0xcc, 0xcd, 0xcf, 0xd1, 0xd3, 0xd6, 0xd7, 0xde, 0xe0, 0xe1, 0xe7, 0xe8, 0xe9, 0xec, 0xf1, 0x108, 0x10a, 0x10b, 0x10c, 0x10e, 0x10f, 0x113, 0x118, 0x11c, 0x11e, 0x120, 0x126, 0x12a, 0x12d, 0x12e, 0x130, 0x132, 0x13a, 0x13d, 0x140, 0x143, 0x162, 0x163, 0x165}}, + 1: {lang: 0x139, script: 0x0, maxScript: 0x5b, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x61, 0x64, 0x73, 0xda, 0x10d, 0x110}}, + 2: {lang: 0x13e, script: 0x0, maxScript: 0x5b, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x57, 0x5a, 0x66, 0x6a, 0x8a, 0x90, 0xd0, 0xd9, 0xe3, 0xe5, 0xed, 0xf2, 0x11b, 0x136, 0x137, 0x13c}}, + 3: {lang: 0x3c0, script: 0x0, maxScript: 0x5b, toRegion: 0xef, fromRegion: []uint16{0x2a, 0x4e, 0x5b, 0x87, 0x8c, 0xb8, 0xc7, 0xd2, 0x119, 0x127}}, + 4: {lang: 0x529, script: 0x3c, maxScript: 0x3c, toRegion: 0x8e, fromRegion: []uint16{0xc7}}, +} + +// Total table size 30466 bytes (29KiB); checksum: 7544152B diff --git a/vendor/golang.org/x/text/internal/language/tags.go b/vendor/golang.org/x/text/internal/language/tags.go new file mode 100644 index 000000000000..e7afd3188e6a --- /dev/null +++ b/vendor/golang.org/x/text/internal/language/tags.go @@ -0,0 +1,48 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. +// It simplifies safe initialization of Tag values. +func MustParse(s string) Tag { + t, err := Parse(s) + if err != nil { + panic(err) + } + return t +} + +// MustParseBase is like ParseBase, but panics if the given base cannot be parsed. +// It simplifies safe initialization of Base values. +func MustParseBase(s string) Language { + b, err := ParseBase(s) + if err != nil { + panic(err) + } + return b +} + +// MustParseScript is like ParseScript, but panics if the given script cannot be +// parsed. It simplifies safe initialization of Script values. +func MustParseScript(s string) Script { + scr, err := ParseScript(s) + if err != nil { + panic(err) + } + return scr +} + +// MustParseRegion is like ParseRegion, but panics if the given region cannot be +// parsed. It simplifies safe initialization of Region values. +func MustParseRegion(s string) Region { + r, err := ParseRegion(s) + if err != nil { + panic(err) + } + return r +} + +// Und is the root language. +var Und Tag diff --git a/vendor/golang.org/x/text/internal/match.go b/vendor/golang.org/x/text/internal/match.go new file mode 100644 index 000000000000..1cc004a6d5f2 --- /dev/null +++ b/vendor/golang.org/x/text/internal/match.go @@ -0,0 +1,67 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package internal + +// This file contains matchers that implement CLDR inheritance. +// +// See https://unicode.org/reports/tr35/#Locale_Inheritance. +// +// Some of the inheritance described in this document is already handled by +// the cldr package. + +import ( + "golang.org/x/text/language" +) + +// TODO: consider if (some of the) matching algorithm needs to be public after +// getting some feel about what is generic and what is specific. + +// NewInheritanceMatcher returns a matcher that matches based on the inheritance +// chain. +// +// The matcher uses canonicalization and the parent relationship to find a +// match. The resulting match will always be either Und or a language with the +// same language and script as the requested language. It will not match +// languages for which there is understood to be mutual or one-directional +// intelligibility. +// +// A Match will indicate an Exact match if the language matches after +// canonicalization and High if the matched tag is a parent. +func NewInheritanceMatcher(t []language.Tag) *InheritanceMatcher { + tags := &InheritanceMatcher{make(map[language.Tag]int)} + for i, tag := range t { + ct, err := language.All.Canonicalize(tag) + if err != nil { + ct = tag + } + tags.index[ct] = i + } + return tags +} + +type InheritanceMatcher struct { + index map[language.Tag]int +} + +func (m InheritanceMatcher) Match(want ...language.Tag) (language.Tag, int, language.Confidence) { + for _, t := range want { + ct, err := language.All.Canonicalize(t) + if err != nil { + ct = t + } + conf := language.Exact + for { + if index, ok := m.index[ct]; ok { + return ct, index, conf + } + if ct == language.Und { + break + } + ct = ct.Parent() + conf = language.High + } + } + return language.Und, 0, language.No +} diff --git a/vendor/golang.org/x/text/internal/tag/tag.go b/vendor/golang.org/x/text/internal/tag/tag.go new file mode 100644 index 000000000000..b5d348891d8c --- /dev/null +++ b/vendor/golang.org/x/text/internal/tag/tag.go @@ -0,0 +1,100 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package tag contains functionality handling tags and related data. +package tag // import "golang.org/x/text/internal/tag" + +import "sort" + +// An Index converts tags to a compact numeric value. +// +// All elements are of size 4. Tags may be up to 4 bytes long. Excess bytes can +// be used to store additional information about the tag. +type Index string + +// Elem returns the element data at the given index. +func (s Index) Elem(x int) string { + return string(s[x*4 : x*4+4]) +} + +// Index reports the index of the given key or -1 if it could not be found. +// Only the first len(key) bytes from the start of the 4-byte entries will be +// considered for the search and the first match in Index will be returned. +func (s Index) Index(key []byte) int { + n := len(key) + // search the index of the first entry with an equal or higher value than + // key in s. + index := sort.Search(len(s)/4, func(i int) bool { + return cmp(s[i*4:i*4+n], key) != -1 + }) + i := index * 4 + if cmp(s[i:i+len(key)], key) != 0 { + return -1 + } + return index +} + +// Next finds the next occurrence of key after index x, which must have been +// obtained from a call to Index using the same key. It returns x+1 or -1. +func (s Index) Next(key []byte, x int) int { + if x++; x*4 < len(s) && cmp(s[x*4:x*4+len(key)], key) == 0 { + return x + } + return -1 +} + +// cmp returns an integer comparing a and b lexicographically. +func cmp(a Index, b []byte) int { + n := len(a) + if len(b) < n { + n = len(b) + } + for i, c := range b[:n] { + switch { + case a[i] > c: + return 1 + case a[i] < c: + return -1 + } + } + switch { + case len(a) < len(b): + return -1 + case len(a) > len(b): + return 1 + } + return 0 +} + +// Compare returns an integer comparing a and b lexicographically. +func Compare(a string, b []byte) int { + return cmp(Index(a), b) +} + +// FixCase reformats b to the same pattern of cases as form. +// If returns false if string b is malformed. +func FixCase(form string, b []byte) bool { + if len(form) != len(b) { + return false + } + for i, c := range b { + if form[i] <= 'Z' { + if c >= 'a' { + c -= 'z' - 'Z' + } + if c < 'A' || 'Z' < c { + return false + } + } else { + if c <= 'Z' { + c += 'z' - 'Z' + } + if c < 'a' || 'z' < c { + return false + } + } + b[i] = c + } + return true +} diff --git a/vendor/golang.org/x/text/language/coverage.go b/vendor/golang.org/x/text/language/coverage.go new file mode 100644 index 000000000000..a24fd1a4d699 --- /dev/null +++ b/vendor/golang.org/x/text/language/coverage.go @@ -0,0 +1,187 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "fmt" + "sort" + + "golang.org/x/text/internal/language" +) + +// The Coverage interface is used to define the level of coverage of an +// internationalization service. Note that not all types are supported by all +// services. As lists may be generated on the fly, it is recommended that users +// of a Coverage cache the results. +type Coverage interface { + // Tags returns the list of supported tags. + Tags() []Tag + + // BaseLanguages returns the list of supported base languages. + BaseLanguages() []Base + + // Scripts returns the list of supported scripts. + Scripts() []Script + + // Regions returns the list of supported regions. + Regions() []Region +} + +var ( + // Supported defines a Coverage that lists all supported subtags. Tags + // always returns nil. + Supported Coverage = allSubtags{} +) + +// TODO: +// - Support Variants, numbering systems. +// - CLDR coverage levels. +// - Set of common tags defined in this package. + +type allSubtags struct{} + +// Regions returns the list of supported regions. As all regions are in a +// consecutive range, it simply returns a slice of numbers in increasing order. +// The "undefined" region is not returned. +func (s allSubtags) Regions() []Region { + reg := make([]Region, language.NumRegions) + for i := range reg { + reg[i] = Region{language.Region(i + 1)} + } + return reg +} + +// Scripts returns the list of supported scripts. As all scripts are in a +// consecutive range, it simply returns a slice of numbers in increasing order. +// The "undefined" script is not returned. +func (s allSubtags) Scripts() []Script { + scr := make([]Script, language.NumScripts) + for i := range scr { + scr[i] = Script{language.Script(i + 1)} + } + return scr +} + +// BaseLanguages returns the list of all supported base languages. It generates +// the list by traversing the internal structures. +func (s allSubtags) BaseLanguages() []Base { + bs := language.BaseLanguages() + base := make([]Base, len(bs)) + for i, b := range bs { + base[i] = Base{b} + } + return base +} + +// Tags always returns nil. +func (s allSubtags) Tags() []Tag { + return nil +} + +// coverage is used by NewCoverage which is used as a convenient way for +// creating Coverage implementations for partially defined data. Very often a +// package will only need to define a subset of slices. coverage provides a +// convenient way to do this. Moreover, packages using NewCoverage, instead of +// their own implementation, will not break if later new slice types are added. +type coverage struct { + tags func() []Tag + bases func() []Base + scripts func() []Script + regions func() []Region +} + +func (s *coverage) Tags() []Tag { + if s.tags == nil { + return nil + } + return s.tags() +} + +// bases implements sort.Interface and is used to sort base languages. +type bases []Base + +func (b bases) Len() int { + return len(b) +} + +func (b bases) Swap(i, j int) { + b[i], b[j] = b[j], b[i] +} + +func (b bases) Less(i, j int) bool { + return b[i].langID < b[j].langID +} + +// BaseLanguages returns the result from calling s.bases if it is specified or +// otherwise derives the set of supported base languages from tags. +func (s *coverage) BaseLanguages() []Base { + if s.bases == nil { + tags := s.Tags() + if len(tags) == 0 { + return nil + } + a := make([]Base, len(tags)) + for i, t := range tags { + a[i] = Base{language.Language(t.lang())} + } + sort.Sort(bases(a)) + k := 0 + for i := 1; i < len(a); i++ { + if a[k] != a[i] { + k++ + a[k] = a[i] + } + } + return a[:k+1] + } + return s.bases() +} + +func (s *coverage) Scripts() []Script { + if s.scripts == nil { + return nil + } + return s.scripts() +} + +func (s *coverage) Regions() []Region { + if s.regions == nil { + return nil + } + return s.regions() +} + +// NewCoverage returns a Coverage for the given lists. It is typically used by +// packages providing internationalization services to define their level of +// coverage. A list may be of type []T or func() []T, where T is either Tag, +// Base, Script or Region. The returned Coverage derives the value for Bases +// from Tags if no func or slice for []Base is specified. For other unspecified +// types the returned Coverage will return nil for the respective methods. +func NewCoverage(list ...interface{}) Coverage { + s := &coverage{} + for _, x := range list { + switch v := x.(type) { + case func() []Base: + s.bases = v + case func() []Script: + s.scripts = v + case func() []Region: + s.regions = v + case func() []Tag: + s.tags = v + case []Base: + s.bases = func() []Base { return v } + case []Script: + s.scripts = func() []Script { return v } + case []Region: + s.regions = func() []Region { return v } + case []Tag: + s.tags = func() []Tag { return v } + default: + panic(fmt.Sprintf("language: unsupported set type %T", v)) + } + } + return s +} diff --git a/vendor/golang.org/x/text/language/doc.go b/vendor/golang.org/x/text/language/doc.go new file mode 100644 index 000000000000..212b77c90688 --- /dev/null +++ b/vendor/golang.org/x/text/language/doc.go @@ -0,0 +1,98 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package language implements BCP 47 language tags and related functionality. +// +// The most important function of package language is to match a list of +// user-preferred languages to a list of supported languages. +// It alleviates the developer of dealing with the complexity of this process +// and provides the user with the best experience +// (see https://blog.golang.org/matchlang). +// +// # Matching preferred against supported languages +// +// A Matcher for an application that supports English, Australian English, +// Danish, and standard Mandarin can be created as follows: +// +// var matcher = language.NewMatcher([]language.Tag{ +// language.English, // The first language is used as fallback. +// language.MustParse("en-AU"), +// language.Danish, +// language.Chinese, +// }) +// +// This list of supported languages is typically implied by the languages for +// which there exists translations of the user interface. +// +// User-preferred languages usually come as a comma-separated list of BCP 47 +// language tags. +// The MatchString finds best matches for such strings: +// +// handler(w http.ResponseWriter, r *http.Request) { +// lang, _ := r.Cookie("lang") +// accept := r.Header.Get("Accept-Language") +// tag, _ := language.MatchStrings(matcher, lang.String(), accept) +// +// // tag should now be used for the initialization of any +// // locale-specific service. +// } +// +// The Matcher's Match method can be used to match Tags directly. +// +// Matchers are aware of the intricacies of equivalence between languages, such +// as deprecated subtags, legacy tags, macro languages, mutual +// intelligibility between scripts and languages, and transparently passing +// BCP 47 user configuration. +// For instance, it will know that a reader of Bokmål Danish can read Norwegian +// and will know that Cantonese ("yue") is a good match for "zh-HK". +// +// # Using match results +// +// To guarantee a consistent user experience to the user it is important to +// use the same language tag for the selection of any locale-specific services. +// For example, it is utterly confusing to substitute spelled-out numbers +// or dates in one language in text of another language. +// More subtly confusing is using the wrong sorting order or casing +// algorithm for a certain language. +// +// All the packages in x/text that provide locale-specific services +// (e.g. collate, cases) should be initialized with the tag that was +// obtained at the start of an interaction with the user. +// +// Note that Tag that is returned by Match and MatchString may differ from any +// of the supported languages, as it may contain carried over settings from +// the user tags. +// This may be inconvenient when your application has some additional +// locale-specific data for your supported languages. +// Match and MatchString both return the index of the matched supported tag +// to simplify associating such data with the matched tag. +// +// # Canonicalization +// +// If one uses the Matcher to compare languages one does not need to +// worry about canonicalization. +// +// The meaning of a Tag varies per application. The language package +// therefore delays canonicalization and preserves information as much +// as possible. The Matcher, however, will always take into account that +// two different tags may represent the same language. +// +// By default, only legacy and deprecated tags are converted into their +// canonical equivalent. All other information is preserved. This approach makes +// the confidence scores more accurate and allows matchers to distinguish +// between variants that are otherwise lost. +// +// As a consequence, two tags that should be treated as identical according to +// BCP 47 or CLDR, like "en-Latn" and "en", will be represented differently. The +// Matcher handles such distinctions, though, and is aware of the +// equivalence relations. The CanonType type can be used to alter the +// canonicalization form. +// +// # References +// +// BCP 47 - Tags for Identifying Languages http://tools.ietf.org/html/bcp47 +package language // import "golang.org/x/text/language" + +// TODO: explanation on how to match languages for your own locale-specific +// service. diff --git a/vendor/golang.org/x/text/language/language.go b/vendor/golang.org/x/text/language/language.go new file mode 100644 index 000000000000..4d9c6612129b --- /dev/null +++ b/vendor/golang.org/x/text/language/language.go @@ -0,0 +1,605 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go -output tables.go + +package language + +// TODO: Remove above NOTE after: +// - verifying that tables are dropped correctly (most notably matcher tables). + +import ( + "strings" + + "golang.org/x/text/internal/language" + "golang.org/x/text/internal/language/compact" +) + +// Tag represents a BCP 47 language tag. It is used to specify an instance of a +// specific language or locale. All language tag values are guaranteed to be +// well-formed. +type Tag compact.Tag + +func makeTag(t language.Tag) (tag Tag) { + return Tag(compact.Make(t)) +} + +func (t *Tag) tag() language.Tag { + return (*compact.Tag)(t).Tag() +} + +func (t *Tag) isCompact() bool { + return (*compact.Tag)(t).IsCompact() +} + +// TODO: improve performance. +func (t *Tag) lang() language.Language { return t.tag().LangID } +func (t *Tag) region() language.Region { return t.tag().RegionID } +func (t *Tag) script() language.Script { return t.tag().ScriptID } + +// Make is a convenience wrapper for Parse that omits the error. +// In case of an error, a sensible default is returned. +func Make(s string) Tag { + return Default.Make(s) +} + +// Make is a convenience wrapper for c.Parse that omits the error. +// In case of an error, a sensible default is returned. +func (c CanonType) Make(s string) Tag { + t, _ := c.Parse(s) + return t +} + +// Raw returns the raw base language, script and region, without making an +// attempt to infer their values. +func (t Tag) Raw() (b Base, s Script, r Region) { + tt := t.tag() + return Base{tt.LangID}, Script{tt.ScriptID}, Region{tt.RegionID} +} + +// IsRoot returns true if t is equal to language "und". +func (t Tag) IsRoot() bool { + return compact.Tag(t).IsRoot() +} + +// CanonType can be used to enable or disable various types of canonicalization. +type CanonType int + +const ( + // Replace deprecated base languages with their preferred replacements. + DeprecatedBase CanonType = 1 << iota + // Replace deprecated scripts with their preferred replacements. + DeprecatedScript + // Replace deprecated regions with their preferred replacements. + DeprecatedRegion + // Remove redundant scripts. + SuppressScript + // Normalize legacy encodings. This includes legacy languages defined in + // CLDR as well as bibliographic codes defined in ISO-639. + Legacy + // Map the dominant language of a macro language group to the macro language + // subtag. For example cmn -> zh. + Macro + // The CLDR flag should be used if full compatibility with CLDR is required. + // There are a few cases where language.Tag may differ from CLDR. To follow all + // of CLDR's suggestions, use All|CLDR. + CLDR + + // Raw can be used to Compose or Parse without Canonicalization. + Raw CanonType = 0 + + // Replace all deprecated tags with their preferred replacements. + Deprecated = DeprecatedBase | DeprecatedScript | DeprecatedRegion + + // All canonicalizations recommended by BCP 47. + BCP47 = Deprecated | SuppressScript + + // All canonicalizations. + All = BCP47 | Legacy | Macro + + // Default is the canonicalization used by Parse, Make and Compose. To + // preserve as much information as possible, canonicalizations that remove + // potentially valuable information are not included. The Matcher is + // designed to recognize similar tags that would be the same if + // they were canonicalized using All. + Default = Deprecated | Legacy + + canonLang = DeprecatedBase | Legacy | Macro + + // TODO: LikelyScript, LikelyRegion: suppress similar to ICU. +) + +// canonicalize returns the canonicalized equivalent of the tag and +// whether there was any change. +func canonicalize(c CanonType, t language.Tag) (language.Tag, bool) { + if c == Raw { + return t, false + } + changed := false + if c&SuppressScript != 0 { + if t.LangID.SuppressScript() == t.ScriptID { + t.ScriptID = 0 + changed = true + } + } + if c&canonLang != 0 { + for { + if l, aliasType := t.LangID.Canonicalize(); l != t.LangID { + switch aliasType { + case language.Legacy: + if c&Legacy != 0 { + if t.LangID == _sh && t.ScriptID == 0 { + t.ScriptID = _Latn + } + t.LangID = l + changed = true + } + case language.Macro: + if c&Macro != 0 { + // We deviate here from CLDR. The mapping "nb" -> "no" + // qualifies as a typical Macro language mapping. However, + // for legacy reasons, CLDR maps "no", the macro language + // code for Norwegian, to the dominant variant "nb". This + // change is currently under consideration for CLDR as well. + // See https://unicode.org/cldr/trac/ticket/2698 and also + // https://unicode.org/cldr/trac/ticket/1790 for some of the + // practical implications. TODO: this check could be removed + // if CLDR adopts this change. + if c&CLDR == 0 || t.LangID != _nb { + changed = true + t.LangID = l + } + } + case language.Deprecated: + if c&DeprecatedBase != 0 { + if t.LangID == _mo && t.RegionID == 0 { + t.RegionID = _MD + } + t.LangID = l + changed = true + // Other canonicalization types may still apply. + continue + } + } + } else if c&Legacy != 0 && t.LangID == _no && c&CLDR != 0 { + t.LangID = _nb + changed = true + } + break + } + } + if c&DeprecatedScript != 0 { + if t.ScriptID == _Qaai { + changed = true + t.ScriptID = _Zinh + } + } + if c&DeprecatedRegion != 0 { + if r := t.RegionID.Canonicalize(); r != t.RegionID { + changed = true + t.RegionID = r + } + } + return t, changed +} + +// Canonicalize returns the canonicalized equivalent of the tag. +func (c CanonType) Canonicalize(t Tag) (Tag, error) { + // First try fast path. + if t.isCompact() { + if _, changed := canonicalize(c, compact.Tag(t).Tag()); !changed { + return t, nil + } + } + // It is unlikely that one will canonicalize a tag after matching. So do + // a slow but simple approach here. + if tag, changed := canonicalize(c, t.tag()); changed { + tag.RemakeString() + return makeTag(tag), nil + } + return t, nil + +} + +// Confidence indicates the level of certainty for a given return value. +// For example, Serbian may be written in Cyrillic or Latin script. +// The confidence level indicates whether a value was explicitly specified, +// whether it is typically the only possible value, or whether there is +// an ambiguity. +type Confidence int + +const ( + No Confidence = iota // full confidence that there was no match + Low // most likely value picked out of a set of alternatives + High // value is generally assumed to be the correct match + Exact // exact match or explicitly specified value +) + +var confName = []string{"No", "Low", "High", "Exact"} + +func (c Confidence) String() string { + return confName[c] +} + +// String returns the canonical string representation of the language tag. +func (t Tag) String() string { + return t.tag().String() +} + +// MarshalText implements encoding.TextMarshaler. +func (t Tag) MarshalText() (text []byte, err error) { + return t.tag().MarshalText() +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (t *Tag) UnmarshalText(text []byte) error { + var tag language.Tag + err := tag.UnmarshalText(text) + *t = makeTag(tag) + return err +} + +// Base returns the base language of the language tag. If the base language is +// unspecified, an attempt will be made to infer it from the context. +// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. +func (t Tag) Base() (Base, Confidence) { + if b := t.lang(); b != 0 { + return Base{b}, Exact + } + tt := t.tag() + c := High + if tt.ScriptID == 0 && !tt.RegionID.IsCountry() { + c = Low + } + if tag, err := tt.Maximize(); err == nil && tag.LangID != 0 { + return Base{tag.LangID}, c + } + return Base{0}, No +} + +// Script infers the script for the language tag. If it was not explicitly given, it will infer +// a most likely candidate. +// If more than one script is commonly used for a language, the most likely one +// is returned with a low confidence indication. For example, it returns (Cyrl, Low) +// for Serbian. +// If a script cannot be inferred (Zzzz, No) is returned. We do not use Zyyy (undetermined) +// as one would suspect from the IANA registry for BCP 47. In a Unicode context Zyyy marks +// common characters (like 1, 2, 3, '.', etc.) and is therefore more like multiple scripts. +// See https://www.unicode.org/reports/tr24/#Values for more details. Zzzz is also used for +// unknown value in CLDR. (Zzzz, Exact) is returned if Zzzz was explicitly specified. +// Note that an inferred script is never guaranteed to be the correct one. Latin is +// almost exclusively used for Afrikaans, but Arabic has been used for some texts +// in the past. Also, the script that is commonly used may change over time. +// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. +func (t Tag) Script() (Script, Confidence) { + if scr := t.script(); scr != 0 { + return Script{scr}, Exact + } + tt := t.tag() + sc, c := language.Script(_Zzzz), No + if scr := tt.LangID.SuppressScript(); scr != 0 { + // Note: it is not always the case that a language with a suppress + // script value is only written in one script (e.g. kk, ms, pa). + if tt.RegionID == 0 { + return Script{scr}, High + } + sc, c = scr, High + } + if tag, err := tt.Maximize(); err == nil { + if tag.ScriptID != sc { + sc, c = tag.ScriptID, Low + } + } else { + tt, _ = canonicalize(Deprecated|Macro, tt) + if tag, err := tt.Maximize(); err == nil && tag.ScriptID != sc { + sc, c = tag.ScriptID, Low + } + } + return Script{sc}, c +} + +// Region returns the region for the language tag. If it was not explicitly given, it will +// infer a most likely candidate from the context. +// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. +func (t Tag) Region() (Region, Confidence) { + if r := t.region(); r != 0 { + return Region{r}, Exact + } + tt := t.tag() + if tt, err := tt.Maximize(); err == nil { + return Region{tt.RegionID}, Low // TODO: differentiate between high and low. + } + tt, _ = canonicalize(Deprecated|Macro, tt) + if tag, err := tt.Maximize(); err == nil { + return Region{tag.RegionID}, Low + } + return Region{_ZZ}, No // TODO: return world instead of undetermined? +} + +// Variants returns the variants specified explicitly for this language tag. +// or nil if no variant was specified. +func (t Tag) Variants() []Variant { + if !compact.Tag(t).MayHaveVariants() { + return nil + } + v := []Variant{} + x, str := "", t.tag().Variants() + for str != "" { + x, str = nextToken(str) + v = append(v, Variant{x}) + } + return v +} + +// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a +// specific language are substituted with fields from the parent language. +// The parent for a language may change for newer versions of CLDR. +// +// Parent returns a tag for a less specific language that is mutually +// intelligible or Und if there is no such language. This may not be the same as +// simply stripping the last BCP 47 subtag. For instance, the parent of "zh-TW" +// is "zh-Hant", and the parent of "zh-Hant" is "und". +func (t Tag) Parent() Tag { + return Tag(compact.Tag(t).Parent()) +} + +// nextToken returns token t and the rest of the string. +func nextToken(s string) (t, tail string) { + p := strings.Index(s[1:], "-") + if p == -1 { + return s[1:], "" + } + p++ + return s[1:p], s[p:] +} + +// Extension is a single BCP 47 extension. +type Extension struct { + s string +} + +// String returns the string representation of the extension, including the +// type tag. +func (e Extension) String() string { + return e.s +} + +// ParseExtension parses s as an extension and returns it on success. +func ParseExtension(s string) (e Extension, err error) { + ext, err := language.ParseExtension(s) + return Extension{ext}, err +} + +// Type returns the one-byte extension type of e. It returns 0 for the zero +// exception. +func (e Extension) Type() byte { + if e.s == "" { + return 0 + } + return e.s[0] +} + +// Tokens returns the list of tokens of e. +func (e Extension) Tokens() []string { + return strings.Split(e.s, "-") +} + +// Extension returns the extension of type x for tag t. It will return +// false for ok if t does not have the requested extension. The returned +// extension will be invalid in this case. +func (t Tag) Extension(x byte) (ext Extension, ok bool) { + if !compact.Tag(t).MayHaveExtensions() { + return Extension{}, false + } + e, ok := t.tag().Extension(x) + return Extension{e}, ok +} + +// Extensions returns all extensions of t. +func (t Tag) Extensions() []Extension { + if !compact.Tag(t).MayHaveExtensions() { + return nil + } + e := []Extension{} + for _, ext := range t.tag().Extensions() { + e = append(e, Extension{ext}) + } + return e +} + +// TypeForKey returns the type associated with the given key, where key and type +// are of the allowed values defined for the Unicode locale extension ('u') in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// TypeForKey will traverse the inheritance chain to get the correct value. +// +// If there are multiple types associated with a key, only the first will be +// returned. If there is no type associated with a key, it returns the empty +// string. +func (t Tag) TypeForKey(key string) string { + if !compact.Tag(t).MayHaveExtensions() { + if key != "rg" && key != "va" { + return "" + } + } + return t.tag().TypeForKey(key) +} + +// SetTypeForKey returns a new Tag with the key set to type, where key and type +// are of the allowed values defined for the Unicode locale extension ('u') in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// An empty value removes an existing pair with the same key. +func (t Tag) SetTypeForKey(key, value string) (Tag, error) { + tt, err := t.tag().SetTypeForKey(key, value) + return makeTag(tt), err +} + +// NumCompactTags is the number of compact tags. The maximum tag is +// NumCompactTags-1. +const NumCompactTags = compact.NumCompactTags + +// CompactIndex returns an index, where 0 <= index < NumCompactTags, for tags +// for which data exists in the text repository.The index will change over time +// and should not be stored in persistent storage. If t does not match a compact +// index, exact will be false and the compact index will be returned for the +// first match after repeatedly taking the Parent of t. +func CompactIndex(t Tag) (index int, exact bool) { + id, exact := compact.LanguageID(compact.Tag(t)) + return int(id), exact +} + +var root = language.Tag{} + +// Base is an ISO 639 language code, used for encoding the base language +// of a language tag. +type Base struct { + langID language.Language +} + +// ParseBase parses a 2- or 3-letter ISO 639 code. +// It returns a ValueError if s is a well-formed but unknown language identifier +// or another error if another error occurred. +func ParseBase(s string) (Base, error) { + l, err := language.ParseBase(s) + return Base{l}, err +} + +// String returns the BCP 47 representation of the base language. +func (b Base) String() string { + return b.langID.String() +} + +// ISO3 returns the ISO 639-3 language code. +func (b Base) ISO3() string { + return b.langID.ISO3() +} + +// IsPrivateUse reports whether this language code is reserved for private use. +func (b Base) IsPrivateUse() bool { + return b.langID.IsPrivateUse() +} + +// Script is a 4-letter ISO 15924 code for representing scripts. +// It is idiomatically represented in title case. +type Script struct { + scriptID language.Script +} + +// ParseScript parses a 4-letter ISO 15924 code. +// It returns a ValueError if s is a well-formed but unknown script identifier +// or another error if another error occurred. +func ParseScript(s string) (Script, error) { + sc, err := language.ParseScript(s) + return Script{sc}, err +} + +// String returns the script code in title case. +// It returns "Zzzz" for an unspecified script. +func (s Script) String() string { + return s.scriptID.String() +} + +// IsPrivateUse reports whether this script code is reserved for private use. +func (s Script) IsPrivateUse() bool { + return s.scriptID.IsPrivateUse() +} + +// Region is an ISO 3166-1 or UN M.49 code for representing countries and regions. +type Region struct { + regionID language.Region +} + +// EncodeM49 returns the Region for the given UN M.49 code. +// It returns an error if r is not a valid code. +func EncodeM49(r int) (Region, error) { + rid, err := language.EncodeM49(r) + return Region{rid}, err +} + +// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code. +// It returns a ValueError if s is a well-formed but unknown region identifier +// or another error if another error occurred. +func ParseRegion(s string) (Region, error) { + r, err := language.ParseRegion(s) + return Region{r}, err +} + +// String returns the BCP 47 representation for the region. +// It returns "ZZ" for an unspecified region. +func (r Region) String() string { + return r.regionID.String() +} + +// ISO3 returns the 3-letter ISO code of r. +// Note that not all regions have a 3-letter ISO code. +// In such cases this method returns "ZZZ". +func (r Region) ISO3() string { + return r.regionID.ISO3() +} + +// M49 returns the UN M.49 encoding of r, or 0 if this encoding +// is not defined for r. +func (r Region) M49() int { + return r.regionID.M49() +} + +// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This +// may include private-use tags that are assigned by CLDR and used in this +// implementation. So IsPrivateUse and IsCountry can be simultaneously true. +func (r Region) IsPrivateUse() bool { + return r.regionID.IsPrivateUse() +} + +// IsCountry returns whether this region is a country or autonomous area. This +// includes non-standard definitions from CLDR. +func (r Region) IsCountry() bool { + return r.regionID.IsCountry() +} + +// IsGroup returns whether this region defines a collection of regions. This +// includes non-standard definitions from CLDR. +func (r Region) IsGroup() bool { + return r.regionID.IsGroup() +} + +// Contains returns whether Region c is contained by Region r. It returns true +// if c == r. +func (r Region) Contains(c Region) bool { + return r.regionID.Contains(c.regionID) +} + +// TLD returns the country code top-level domain (ccTLD). UK is returned for GB. +// In all other cases it returns either the region itself or an error. +// +// This method may return an error for a region for which there exists a +// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The +// region will already be canonicalized it was obtained from a Tag that was +// obtained using any of the default methods. +func (r Region) TLD() (Region, error) { + tld, err := r.regionID.TLD() + return Region{tld}, err +} + +// Canonicalize returns the region or a possible replacement if the region is +// deprecated. It will not return a replacement for deprecated regions that +// are split into multiple regions. +func (r Region) Canonicalize() Region { + return Region{r.regionID.Canonicalize()} +} + +// Variant represents a registered variant of a language as defined by BCP 47. +type Variant struct { + variant string +} + +// ParseVariant parses and returns a Variant. An error is returned if s is not +// a valid variant. +func ParseVariant(s string) (Variant, error) { + v, err := language.ParseVariant(s) + return Variant{v.String()}, err +} + +// String returns the string representation of the variant. +func (v Variant) String() string { + return v.variant +} diff --git a/vendor/golang.org/x/text/language/match.go b/vendor/golang.org/x/text/language/match.go new file mode 100644 index 000000000000..1153baf291ca --- /dev/null +++ b/vendor/golang.org/x/text/language/match.go @@ -0,0 +1,735 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "errors" + "strings" + + "golang.org/x/text/internal/language" +) + +// A MatchOption configures a Matcher. +type MatchOption func(*matcher) + +// PreferSameScript will, in the absence of a match, result in the first +// preferred tag with the same script as a supported tag to match this supported +// tag. The default is currently true, but this may change in the future. +func PreferSameScript(preferSame bool) MatchOption { + return func(m *matcher) { m.preferSameScript = preferSame } +} + +// TODO(v1.0.0): consider making Matcher a concrete type, instead of interface. +// There doesn't seem to be too much need for multiple types. +// Making it a concrete type allows MatchStrings to be a method, which will +// improve its discoverability. + +// MatchStrings parses and matches the given strings until one of them matches +// the language in the Matcher. A string may be an Accept-Language header as +// handled by ParseAcceptLanguage. The default language is returned if no +// other language matched. +func MatchStrings(m Matcher, lang ...string) (tag Tag, index int) { + for _, accept := range lang { + desired, _, err := ParseAcceptLanguage(accept) + if err != nil { + continue + } + if tag, index, conf := m.Match(desired...); conf != No { + return tag, index + } + } + tag, index, _ = m.Match() + return +} + +// Matcher is the interface that wraps the Match method. +// +// Match returns the best match for any of the given tags, along with +// a unique index associated with the returned tag and a confidence +// score. +type Matcher interface { + Match(t ...Tag) (tag Tag, index int, c Confidence) +} + +// Comprehends reports the confidence score for a speaker of a given language +// to being able to comprehend the written form of an alternative language. +func Comprehends(speaker, alternative Tag) Confidence { + _, _, c := NewMatcher([]Tag{alternative}).Match(speaker) + return c +} + +// NewMatcher returns a Matcher that matches an ordered list of preferred tags +// against a list of supported tags based on written intelligibility, closeness +// of dialect, equivalence of subtags and various other rules. It is initialized +// with the list of supported tags. The first element is used as the default +// value in case no match is found. +// +// Its Match method matches the first of the given Tags to reach a certain +// confidence threshold. The tags passed to Match should therefore be specified +// in order of preference. Extensions are ignored for matching. +// +// The index returned by the Match method corresponds to the index of the +// matched tag in t, but is augmented with the Unicode extension ('u')of the +// corresponding preferred tag. This allows user locale options to be passed +// transparently. +func NewMatcher(t []Tag, options ...MatchOption) Matcher { + return newMatcher(t, options) +} + +func (m *matcher) Match(want ...Tag) (t Tag, index int, c Confidence) { + var tt language.Tag + match, w, c := m.getBest(want...) + if match != nil { + tt, index = match.tag, match.index + } else { + // TODO: this should be an option + tt = m.default_.tag + if m.preferSameScript { + outer: + for _, w := range want { + script, _ := w.Script() + if script.scriptID == 0 { + // Don't do anything if there is no script, such as with + // private subtags. + continue + } + for i, h := range m.supported { + if script.scriptID == h.maxScript { + tt, index = h.tag, i + break outer + } + } + } + } + // TODO: select first language tag based on script. + } + if w.RegionID != tt.RegionID && w.RegionID != 0 { + if w.RegionID != 0 && tt.RegionID != 0 && tt.RegionID.Contains(w.RegionID) { + tt.RegionID = w.RegionID + tt.RemakeString() + } else if r := w.RegionID.String(); len(r) == 2 { + // TODO: also filter macro and deprecated. + tt, _ = tt.SetTypeForKey("rg", strings.ToLower(r)+"zzzz") + } + } + // Copy options from the user-provided tag into the result tag. This is hard + // to do after the fact, so we do it here. + // TODO: add in alternative variants to -u-va-. + // TODO: add preferred region to -u-rg-. + if e := w.Extensions(); len(e) > 0 { + b := language.Builder{} + b.SetTag(tt) + for _, e := range e { + b.AddExt(e) + } + tt = b.Make() + } + return makeTag(tt), index, c +} + +// ErrMissingLikelyTagsData indicates no information was available +// to compute likely values of missing tags. +var ErrMissingLikelyTagsData = errors.New("missing likely tags data") + +// func (t *Tag) setTagsFrom(id Tag) { +// t.LangID = id.LangID +// t.ScriptID = id.ScriptID +// t.RegionID = id.RegionID +// } + +// Tag Matching +// CLDR defines an algorithm for finding the best match between two sets of language +// tags. The basic algorithm defines how to score a possible match and then find +// the match with the best score +// (see https://www.unicode.org/reports/tr35/#LanguageMatching). +// Using scoring has several disadvantages. The scoring obfuscates the importance of +// the various factors considered, making the algorithm harder to understand. Using +// scoring also requires the full score to be computed for each pair of tags. +// +// We will use a different algorithm which aims to have the following properties: +// - clarity on the precedence of the various selection factors, and +// - improved performance by allowing early termination of a comparison. +// +// Matching algorithm (overview) +// Input: +// - supported: a set of supported tags +// - default: the default tag to return in case there is no match +// - desired: list of desired tags, ordered by preference, starting with +// the most-preferred. +// +// Algorithm: +// 1) Set the best match to the lowest confidence level +// 2) For each tag in "desired": +// a) For each tag in "supported": +// 1) compute the match between the two tags. +// 2) if the match is better than the previous best match, replace it +// with the new match. (see next section) +// b) if the current best match is Exact and pin is true the result will be +// frozen to the language found thusfar, although better matches may +// still be found for the same language. +// 3) If the best match so far is below a certain threshold, return "default". +// +// Ranking: +// We use two phases to determine whether one pair of tags are a better match +// than another pair of tags. First, we determine a rough confidence level. If the +// levels are different, the one with the highest confidence wins. +// Second, if the rough confidence levels are identical, we use a set of tie-breaker +// rules. +// +// The confidence level of matching a pair of tags is determined by finding the +// lowest confidence level of any matches of the corresponding subtags (the +// result is deemed as good as its weakest link). +// We define the following levels: +// Exact - An exact match of a subtag, before adding likely subtags. +// MaxExact - An exact match of a subtag, after adding likely subtags. +// [See Note 2]. +// High - High level of mutual intelligibility between different subtag +// variants. +// Low - Low level of mutual intelligibility between different subtag +// variants. +// No - No mutual intelligibility. +// +// The following levels can occur for each type of subtag: +// Base: Exact, MaxExact, High, Low, No +// Script: Exact, MaxExact [see Note 3], Low, No +// Region: Exact, MaxExact, High +// Variant: Exact, High +// Private: Exact, No +// +// Any result with a confidence level of Low or higher is deemed a possible match. +// Once a desired tag matches any of the supported tags with a level of MaxExact +// or higher, the next desired tag is not considered (see Step 2.b). +// Note that CLDR provides languageMatching data that defines close equivalence +// classes for base languages, scripts and regions. +// +// Tie-breaking +// If we get the same confidence level for two matches, we apply a sequence of +// tie-breaking rules. The first that succeeds defines the result. The rules are +// applied in the following order. +// 1) Original language was defined and was identical. +// 2) Original region was defined and was identical. +// 3) Distance between two maximized regions was the smallest. +// 4) Original script was defined and was identical. +// 5) Distance from want tag to have tag using the parent relation [see Note 5.] +// If there is still no winner after these rules are applied, the first match +// found wins. +// +// Notes: +// [2] In practice, as matching of Exact is done in a separate phase from +// matching the other levels, we reuse the Exact level to mean MaxExact in +// the second phase. As a consequence, we only need the levels defined by +// the Confidence type. The MaxExact confidence level is mapped to High in +// the public API. +// [3] We do not differentiate between maximized script values that were derived +// from suppressScript versus most likely tag data. We determined that in +// ranking the two, one ranks just after the other. Moreover, the two cannot +// occur concurrently. As a consequence, they are identical for practical +// purposes. +// [4] In case of deprecated, macro-equivalents and legacy mappings, we assign +// the MaxExact level to allow iw vs he to still be a closer match than +// en-AU vs en-US, for example. +// [5] In CLDR a locale inherits fields that are unspecified for this locale +// from its parent. Therefore, if a locale is a parent of another locale, +// it is a strong measure for closeness, especially when no other tie +// breaker rule applies. One could also argue it is inconsistent, for +// example, when pt-AO matches pt (which CLDR equates with pt-BR), even +// though its parent is pt-PT according to the inheritance rules. +// +// Implementation Details: +// There are several performance considerations worth pointing out. Most notably, +// we preprocess as much as possible (within reason) at the time of creation of a +// matcher. This includes: +// - creating a per-language map, which includes data for the raw base language +// and its canonicalized variant (if applicable), +// - expanding entries for the equivalence classes defined in CLDR's +// languageMatch data. +// The per-language map ensures that typically only a very small number of tags +// need to be considered. The pre-expansion of canonicalized subtags and +// equivalence classes reduces the amount of map lookups that need to be done at +// runtime. + +// matcher keeps a set of supported language tags, indexed by language. +type matcher struct { + default_ *haveTag + supported []*haveTag + index map[language.Language]*matchHeader + passSettings bool + preferSameScript bool +} + +// matchHeader has the lists of tags for exact matches and matches based on +// maximized and canonicalized tags for a given language. +type matchHeader struct { + haveTags []*haveTag + original bool +} + +// haveTag holds a supported Tag and its maximized script and region. The maximized +// or canonicalized language is not stored as it is not needed during matching. +type haveTag struct { + tag language.Tag + + // index of this tag in the original list of supported tags. + index int + + // conf is the maximum confidence that can result from matching this haveTag. + // When conf < Exact this means it was inserted after applying a CLDR equivalence rule. + conf Confidence + + // Maximized region and script. + maxRegion language.Region + maxScript language.Script + + // altScript may be checked as an alternative match to maxScript. If altScript + // matches, the confidence level for this match is Low. Theoretically there + // could be multiple alternative scripts. This does not occur in practice. + altScript language.Script + + // nextMax is the index of the next haveTag with the same maximized tags. + nextMax uint16 +} + +func makeHaveTag(tag language.Tag, index int) (haveTag, language.Language) { + max := tag + if tag.LangID != 0 || tag.RegionID != 0 || tag.ScriptID != 0 { + max, _ = canonicalize(All, max) + max, _ = max.Maximize() + max.RemakeString() + } + return haveTag{tag, index, Exact, max.RegionID, max.ScriptID, altScript(max.LangID, max.ScriptID), 0}, max.LangID +} + +// altScript returns an alternative script that may match the given script with +// a low confidence. At the moment, the langMatch data allows for at most one +// script to map to another and we rely on this to keep the code simple. +func altScript(l language.Language, s language.Script) language.Script { + for _, alt := range matchScript { + // TODO: also match cases where language is not the same. + if (language.Language(alt.wantLang) == l || language.Language(alt.haveLang) == l) && + language.Script(alt.haveScript) == s { + return language.Script(alt.wantScript) + } + } + return 0 +} + +// addIfNew adds a haveTag to the list of tags only if it is a unique tag. +// Tags that have the same maximized values are linked by index. +func (h *matchHeader) addIfNew(n haveTag, exact bool) { + h.original = h.original || exact + // Don't add new exact matches. + for _, v := range h.haveTags { + if equalsRest(v.tag, n.tag) { + return + } + } + // Allow duplicate maximized tags, but create a linked list to allow quickly + // comparing the equivalents and bail out. + for i, v := range h.haveTags { + if v.maxScript == n.maxScript && + v.maxRegion == n.maxRegion && + v.tag.VariantOrPrivateUseTags() == n.tag.VariantOrPrivateUseTags() { + for h.haveTags[i].nextMax != 0 { + i = int(h.haveTags[i].nextMax) + } + h.haveTags[i].nextMax = uint16(len(h.haveTags)) + break + } + } + h.haveTags = append(h.haveTags, &n) +} + +// header returns the matchHeader for the given language. It creates one if +// it doesn't already exist. +func (m *matcher) header(l language.Language) *matchHeader { + if h := m.index[l]; h != nil { + return h + } + h := &matchHeader{} + m.index[l] = h + return h +} + +func toConf(d uint8) Confidence { + if d <= 10 { + return High + } + if d < 30 { + return Low + } + return No +} + +// newMatcher builds an index for the given supported tags and returns it as +// a matcher. It also expands the index by considering various equivalence classes +// for a given tag. +func newMatcher(supported []Tag, options []MatchOption) *matcher { + m := &matcher{ + index: make(map[language.Language]*matchHeader), + preferSameScript: true, + } + for _, o := range options { + o(m) + } + if len(supported) == 0 { + m.default_ = &haveTag{} + return m + } + // Add supported languages to the index. Add exact matches first to give + // them precedence. + for i, tag := range supported { + tt := tag.tag() + pair, _ := makeHaveTag(tt, i) + m.header(tt.LangID).addIfNew(pair, true) + m.supported = append(m.supported, &pair) + } + m.default_ = m.header(supported[0].lang()).haveTags[0] + // Keep these in two different loops to support the case that two equivalent + // languages are distinguished, such as iw and he. + for i, tag := range supported { + tt := tag.tag() + pair, max := makeHaveTag(tt, i) + if max != tt.LangID { + m.header(max).addIfNew(pair, true) + } + } + + // update is used to add indexes in the map for equivalent languages. + // update will only add entries to original indexes, thus not computing any + // transitive relations. + update := func(want, have uint16, conf Confidence) { + if hh := m.index[language.Language(have)]; hh != nil { + if !hh.original { + return + } + hw := m.header(language.Language(want)) + for _, ht := range hh.haveTags { + v := *ht + if conf < v.conf { + v.conf = conf + } + v.nextMax = 0 // this value needs to be recomputed + if v.altScript != 0 { + v.altScript = altScript(language.Language(want), v.maxScript) + } + hw.addIfNew(v, conf == Exact && hh.original) + } + } + } + + // Add entries for languages with mutual intelligibility as defined by CLDR's + // languageMatch data. + for _, ml := range matchLang { + update(ml.want, ml.have, toConf(ml.distance)) + if !ml.oneway { + update(ml.have, ml.want, toConf(ml.distance)) + } + } + + // Add entries for possible canonicalizations. This is an optimization to + // ensure that only one map lookup needs to be done at runtime per desired tag. + // First we match deprecated equivalents. If they are perfect equivalents + // (their canonicalization simply substitutes a different language code, but + // nothing else), the match confidence is Exact, otherwise it is High. + for i, lm := range language.AliasMap { + // If deprecated codes match and there is no fiddling with the script + // or region, we consider it an exact match. + conf := Exact + if language.AliasTypes[i] != language.Macro { + if !isExactEquivalent(language.Language(lm.From)) { + conf = High + } + update(lm.To, lm.From, conf) + } + update(lm.From, lm.To, conf) + } + return m +} + +// getBest gets the best matching tag in m for any of the given tags, taking into +// account the order of preference of the given tags. +func (m *matcher) getBest(want ...Tag) (got *haveTag, orig language.Tag, c Confidence) { + best := bestMatch{} + for i, ww := range want { + w := ww.tag() + var max language.Tag + // Check for exact match first. + h := m.index[w.LangID] + if w.LangID != 0 { + if h == nil { + continue + } + // Base language is defined. + max, _ = canonicalize(Legacy|Deprecated|Macro, w) + // A region that is added through canonicalization is stronger than + // a maximized region: set it in the original (e.g. mo -> ro-MD). + if w.RegionID != max.RegionID { + w.RegionID = max.RegionID + } + // TODO: should we do the same for scripts? + // See test case: en, sr, nl ; sh ; sr + max, _ = max.Maximize() + } else { + // Base language is not defined. + if h != nil { + for i := range h.haveTags { + have := h.haveTags[i] + if equalsRest(have.tag, w) { + return have, w, Exact + } + } + } + if w.ScriptID == 0 && w.RegionID == 0 { + // We skip all tags matching und for approximate matching, including + // private tags. + continue + } + max, _ = w.Maximize() + if h = m.index[max.LangID]; h == nil { + continue + } + } + pin := true + for _, t := range want[i+1:] { + if w.LangID == t.lang() { + pin = false + break + } + } + // Check for match based on maximized tag. + for i := range h.haveTags { + have := h.haveTags[i] + best.update(have, w, max.ScriptID, max.RegionID, pin) + if best.conf == Exact { + for have.nextMax != 0 { + have = h.haveTags[have.nextMax] + best.update(have, w, max.ScriptID, max.RegionID, pin) + } + return best.have, best.want, best.conf + } + } + } + if best.conf <= No { + if len(want) != 0 { + return nil, want[0].tag(), No + } + return nil, language.Tag{}, No + } + return best.have, best.want, best.conf +} + +// bestMatch accumulates the best match so far. +type bestMatch struct { + have *haveTag + want language.Tag + conf Confidence + pinnedRegion language.Region + pinLanguage bool + sameRegionGroup bool + // Cached results from applying tie-breaking rules. + origLang bool + origReg bool + paradigmReg bool + regGroupDist uint8 + origScript bool +} + +// update updates the existing best match if the new pair is considered to be a +// better match. To determine if the given pair is a better match, it first +// computes the rough confidence level. If this surpasses the current match, it +// will replace it and update the tie-breaker rule cache. If there is a tie, it +// proceeds with applying a series of tie-breaker rules. If there is no +// conclusive winner after applying the tie-breaker rules, it leaves the current +// match as the preferred match. +// +// If pin is true and have and tag are a strong match, it will henceforth only +// consider matches for this language. This corresponds to the idea that most +// users have a strong preference for the first defined language. A user can +// still prefer a second language over a dialect of the preferred language by +// explicitly specifying dialects, e.g. "en, nl, en-GB". In this case pin should +// be false. +func (m *bestMatch) update(have *haveTag, tag language.Tag, maxScript language.Script, maxRegion language.Region, pin bool) { + // Bail if the maximum attainable confidence is below that of the current best match. + c := have.conf + if c < m.conf { + return + } + // Don't change the language once we already have found an exact match. + if m.pinLanguage && tag.LangID != m.want.LangID { + return + } + // Pin the region group if we are comparing tags for the same language. + if tag.LangID == m.want.LangID && m.sameRegionGroup { + _, sameGroup := regionGroupDist(m.pinnedRegion, have.maxRegion, have.maxScript, m.want.LangID) + if !sameGroup { + return + } + } + if c == Exact && have.maxScript == maxScript { + // If there is another language and then another entry of this language, + // don't pin anything, otherwise pin the language. + m.pinLanguage = pin + } + if equalsRest(have.tag, tag) { + } else if have.maxScript != maxScript { + // There is usually very little comprehension between different scripts. + // In a few cases there may still be Low comprehension. This possibility + // is pre-computed and stored in have.altScript. + if Low < m.conf || have.altScript != maxScript { + return + } + c = Low + } else if have.maxRegion != maxRegion { + if High < c { + // There is usually a small difference between languages across regions. + c = High + } + } + + // We store the results of the computations of the tie-breaker rules along + // with the best match. There is no need to do the checks once we determine + // we have a winner, but we do still need to do the tie-breaker computations. + // We use "beaten" to keep track if we still need to do the checks. + beaten := false // true if the new pair defeats the current one. + if c != m.conf { + if c < m.conf { + return + } + beaten = true + } + + // Tie-breaker rules: + // We prefer if the pre-maximized language was specified and identical. + origLang := have.tag.LangID == tag.LangID && tag.LangID != 0 + if !beaten && m.origLang != origLang { + if m.origLang { + return + } + beaten = true + } + + // We prefer if the pre-maximized region was specified and identical. + origReg := have.tag.RegionID == tag.RegionID && tag.RegionID != 0 + if !beaten && m.origReg != origReg { + if m.origReg { + return + } + beaten = true + } + + regGroupDist, sameGroup := regionGroupDist(have.maxRegion, maxRegion, maxScript, tag.LangID) + if !beaten && m.regGroupDist != regGroupDist { + if regGroupDist > m.regGroupDist { + return + } + beaten = true + } + + paradigmReg := isParadigmLocale(tag.LangID, have.maxRegion) + if !beaten && m.paradigmReg != paradigmReg { + if !paradigmReg { + return + } + beaten = true + } + + // Next we prefer if the pre-maximized script was specified and identical. + origScript := have.tag.ScriptID == tag.ScriptID && tag.ScriptID != 0 + if !beaten && m.origScript != origScript { + if m.origScript { + return + } + beaten = true + } + + // Update m to the newly found best match. + if beaten { + m.have = have + m.want = tag + m.conf = c + m.pinnedRegion = maxRegion + m.sameRegionGroup = sameGroup + m.origLang = origLang + m.origReg = origReg + m.paradigmReg = paradigmReg + m.origScript = origScript + m.regGroupDist = regGroupDist + } +} + +func isParadigmLocale(lang language.Language, r language.Region) bool { + for _, e := range paradigmLocales { + if language.Language(e[0]) == lang && (r == language.Region(e[1]) || r == language.Region(e[2])) { + return true + } + } + return false +} + +// regionGroupDist computes the distance between two regions based on their +// CLDR grouping. +func regionGroupDist(a, b language.Region, script language.Script, lang language.Language) (dist uint8, same bool) { + const defaultDistance = 4 + + aGroup := uint(regionToGroups[a]) << 1 + bGroup := uint(regionToGroups[b]) << 1 + for _, ri := range matchRegion { + if language.Language(ri.lang) == lang && (ri.script == 0 || language.Script(ri.script) == script) { + group := uint(1 << (ri.group &^ 0x80)) + if 0x80&ri.group == 0 { + if aGroup&bGroup&group != 0 { // Both regions are in the group. + return ri.distance, ri.distance == defaultDistance + } + } else { + if (aGroup|bGroup)&group == 0 { // Both regions are not in the group. + return ri.distance, ri.distance == defaultDistance + } + } + } + } + return defaultDistance, true +} + +// equalsRest compares everything except the language. +func equalsRest(a, b language.Tag) bool { + // TODO: don't include extensions in this comparison. To do this efficiently, + // though, we should handle private tags separately. + return a.ScriptID == b.ScriptID && a.RegionID == b.RegionID && a.VariantOrPrivateUseTags() == b.VariantOrPrivateUseTags() +} + +// isExactEquivalent returns true if canonicalizing the language will not alter +// the script or region of a tag. +func isExactEquivalent(l language.Language) bool { + for _, o := range notEquivalent { + if o == l { + return false + } + } + return true +} + +var notEquivalent []language.Language + +func init() { + // Create a list of all languages for which canonicalization may alter the + // script or region. + for _, lm := range language.AliasMap { + tag := language.Tag{LangID: language.Language(lm.From)} + if tag, _ = canonicalize(All, tag); tag.ScriptID != 0 || tag.RegionID != 0 { + notEquivalent = append(notEquivalent, language.Language(lm.From)) + } + } + // Maximize undefined regions of paradigm locales. + for i, v := range paradigmLocales { + t := language.Tag{LangID: language.Language(v[0])} + max, _ := t.Maximize() + if v[1] == 0 { + paradigmLocales[i][1] = uint16(max.RegionID) + } + if v[2] == 0 { + paradigmLocales[i][2] = uint16(max.RegionID) + } + } +} diff --git a/vendor/golang.org/x/text/language/parse.go b/vendor/golang.org/x/text/language/parse.go new file mode 100644 index 000000000000..053336e28666 --- /dev/null +++ b/vendor/golang.org/x/text/language/parse.go @@ -0,0 +1,256 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "errors" + "sort" + "strconv" + "strings" + + "golang.org/x/text/internal/language" +) + +// ValueError is returned by any of the parsing functions when the +// input is well-formed but the respective subtag is not recognized +// as a valid value. +type ValueError interface { + error + + // Subtag returns the subtag for which the error occurred. + Subtag() string +} + +// Parse parses the given BCP 47 string and returns a valid Tag. If parsing +// failed it returns an error and any part of the tag that could be parsed. +// If parsing succeeded but an unknown value was found, it returns +// ValueError. The Tag returned in this case is just stripped of the unknown +// value. All other values are preserved. It accepts tags in the BCP 47 format +// and extensions to this standard defined in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// The resulting tag is canonicalized using the default canonicalization type. +func Parse(s string) (t Tag, err error) { + return Default.Parse(s) +} + +// Parse parses the given BCP 47 string and returns a valid Tag. If parsing +// failed it returns an error and any part of the tag that could be parsed. +// If parsing succeeded but an unknown value was found, it returns +// ValueError. The Tag returned in this case is just stripped of the unknown +// value. All other values are preserved. It accepts tags in the BCP 47 format +// and extensions to this standard defined in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// The resulting tag is canonicalized using the canonicalization type c. +func (c CanonType) Parse(s string) (t Tag, err error) { + defer func() { + if recover() != nil { + t = Tag{} + err = language.ErrSyntax + } + }() + + tt, err := language.Parse(s) + if err != nil { + return makeTag(tt), err + } + tt, changed := canonicalize(c, tt) + if changed { + tt.RemakeString() + } + return makeTag(tt), nil +} + +// Compose creates a Tag from individual parts, which may be of type Tag, Base, +// Script, Region, Variant, []Variant, Extension, []Extension or error. If a +// Base, Script or Region or slice of type Variant or Extension is passed more +// than once, the latter will overwrite the former. Variants and Extensions are +// accumulated, but if two extensions of the same type are passed, the latter +// will replace the former. For -u extensions, though, the key-type pairs are +// added, where later values overwrite older ones. A Tag overwrites all former +// values and typically only makes sense as the first argument. The resulting +// tag is returned after canonicalizing using the Default CanonType. If one or +// more errors are encountered, one of the errors is returned. +func Compose(part ...interface{}) (t Tag, err error) { + return Default.Compose(part...) +} + +// Compose creates a Tag from individual parts, which may be of type Tag, Base, +// Script, Region, Variant, []Variant, Extension, []Extension or error. If a +// Base, Script or Region or slice of type Variant or Extension is passed more +// than once, the latter will overwrite the former. Variants and Extensions are +// accumulated, but if two extensions of the same type are passed, the latter +// will replace the former. For -u extensions, though, the key-type pairs are +// added, where later values overwrite older ones. A Tag overwrites all former +// values and typically only makes sense as the first argument. The resulting +// tag is returned after canonicalizing using CanonType c. If one or more errors +// are encountered, one of the errors is returned. +func (c CanonType) Compose(part ...interface{}) (t Tag, err error) { + defer func() { + if recover() != nil { + t = Tag{} + err = language.ErrSyntax + } + }() + + var b language.Builder + if err = update(&b, part...); err != nil { + return und, err + } + b.Tag, _ = canonicalize(c, b.Tag) + return makeTag(b.Make()), err +} + +var errInvalidArgument = errors.New("invalid Extension or Variant") + +func update(b *language.Builder, part ...interface{}) (err error) { + for _, x := range part { + switch v := x.(type) { + case Tag: + b.SetTag(v.tag()) + case Base: + b.Tag.LangID = v.langID + case Script: + b.Tag.ScriptID = v.scriptID + case Region: + b.Tag.RegionID = v.regionID + case Variant: + if v.variant == "" { + err = errInvalidArgument + break + } + b.AddVariant(v.variant) + case Extension: + if v.s == "" { + err = errInvalidArgument + break + } + b.SetExt(v.s) + case []Variant: + b.ClearVariants() + for _, v := range v { + b.AddVariant(v.variant) + } + case []Extension: + b.ClearExtensions() + for _, e := range v { + b.SetExt(e.s) + } + // TODO: support parsing of raw strings based on morphology or just extensions? + case error: + if v != nil { + err = v + } + } + } + return +} + +var errInvalidWeight = errors.New("ParseAcceptLanguage: invalid weight") +var errTagListTooLarge = errors.New("tag list exceeds max length") + +// ParseAcceptLanguage parses the contents of an Accept-Language header as +// defined in http://www.ietf.org/rfc/rfc2616.txt and returns a list of Tags and +// a list of corresponding quality weights. It is more permissive than RFC 2616 +// and may return non-nil slices even if the input is not valid. +// The Tags will be sorted by highest weight first and then by first occurrence. +// Tags with a weight of zero will be dropped. An error will be returned if the +// input could not be parsed. +func ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) { + defer func() { + if recover() != nil { + tag = nil + q = nil + err = language.ErrSyntax + } + }() + + if strings.Count(s, "-") > 1000 { + return nil, nil, errTagListTooLarge + } + + var entry string + for s != "" { + if entry, s = split(s, ','); entry == "" { + continue + } + + entry, weight := split(entry, ';') + + // Scan the language. + t, err := Parse(entry) + if err != nil { + id, ok := acceptFallback[entry] + if !ok { + return nil, nil, err + } + t = makeTag(language.Tag{LangID: id}) + } + + // Scan the optional weight. + w := 1.0 + if weight != "" { + weight = consume(weight, 'q') + weight = consume(weight, '=') + // consume returns the empty string when a token could not be + // consumed, resulting in an error for ParseFloat. + if w, err = strconv.ParseFloat(weight, 32); err != nil { + return nil, nil, errInvalidWeight + } + // Drop tags with a quality weight of 0. + if w <= 0 { + continue + } + } + + tag = append(tag, t) + q = append(q, float32(w)) + } + sort.Stable(&tagSort{tag, q}) + return tag, q, nil +} + +// consume removes a leading token c from s and returns the result or the empty +// string if there is no such token. +func consume(s string, c byte) string { + if s == "" || s[0] != c { + return "" + } + return strings.TrimSpace(s[1:]) +} + +func split(s string, c byte) (head, tail string) { + if i := strings.IndexByte(s, c); i >= 0 { + return strings.TrimSpace(s[:i]), strings.TrimSpace(s[i+1:]) + } + return strings.TrimSpace(s), "" +} + +// Add hack mapping to deal with a small number of cases that occur +// in Accept-Language (with reasonable frequency). +var acceptFallback = map[string]language.Language{ + "english": _en, + "deutsch": _de, + "italian": _it, + "french": _fr, + "*": _mul, // defined in the spec to match all languages. +} + +type tagSort struct { + tag []Tag + q []float32 +} + +func (s *tagSort) Len() int { + return len(s.q) +} + +func (s *tagSort) Less(i, j int) bool { + return s.q[i] > s.q[j] +} + +func (s *tagSort) Swap(i, j int) { + s.tag[i], s.tag[j] = s.tag[j], s.tag[i] + s.q[i], s.q[j] = s.q[j], s.q[i] +} diff --git a/vendor/golang.org/x/text/language/tables.go b/vendor/golang.org/x/text/language/tables.go new file mode 100644 index 000000000000..a6573dcb2158 --- /dev/null +++ b/vendor/golang.org/x/text/language/tables.go @@ -0,0 +1,298 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package language + +// CLDRVersion is the CLDR version from which the tables in this package are derived. +const CLDRVersion = "32" + +const ( + _de = 269 + _en = 313 + _fr = 350 + _it = 505 + _mo = 784 + _no = 879 + _nb = 839 + _pt = 960 + _sh = 1031 + _mul = 806 + _und = 0 +) +const ( + _001 = 1 + _419 = 31 + _BR = 65 + _CA = 73 + _ES = 111 + _GB = 124 + _MD = 189 + _PT = 239 + _UK = 307 + _US = 310 + _ZZ = 358 + _XA = 324 + _XC = 326 + _XK = 334 +) +const ( + _Latn = 91 + _Hani = 57 + _Hans = 59 + _Hant = 60 + _Qaaa = 149 + _Qaai = 157 + _Qabx = 198 + _Zinh = 255 + _Zyyy = 260 + _Zzzz = 261 +) + +var regionToGroups = []uint8{ // 359 elements + // Entry 0 - 3F + 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, + // Entry 40 - 7F + 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, + // Entry 80 - BF + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x02, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x04, + // Entry C0 - FF + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x01, 0x04, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 100 - 13F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x04, + 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x05, 0x00, + // Entry 140 - 17F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +} // Size: 383 bytes + +var paradigmLocales = [][3]uint16{ // 3 elements + 0: [3]uint16{0x139, 0x0, 0x7c}, + 1: [3]uint16{0x13e, 0x0, 0x1f}, + 2: [3]uint16{0x3c0, 0x41, 0xef}, +} // Size: 42 bytes + +type mutualIntelligibility struct { + want uint16 + have uint16 + distance uint8 + oneway bool +} +type scriptIntelligibility struct { + wantLang uint16 + haveLang uint16 + wantScript uint8 + haveScript uint8 + distance uint8 +} +type regionIntelligibility struct { + lang uint16 + script uint8 + group uint8 + distance uint8 +} + +// matchLang holds pairs of langIDs of base languages that are typically +// mutually intelligible. Each pair is associated with a confidence and +// whether the intelligibility goes one or both ways. +var matchLang = []mutualIntelligibility{ // 113 elements + 0: {want: 0x1d1, have: 0xb7, distance: 0x4, oneway: false}, + 1: {want: 0x407, have: 0xb7, distance: 0x4, oneway: false}, + 2: {want: 0x407, have: 0x1d1, distance: 0x4, oneway: false}, + 3: {want: 0x407, have: 0x432, distance: 0x4, oneway: false}, + 4: {want: 0x43a, have: 0x1, distance: 0x4, oneway: false}, + 5: {want: 0x1a3, have: 0x10d, distance: 0x4, oneway: true}, + 6: {want: 0x295, have: 0x10d, distance: 0x4, oneway: true}, + 7: {want: 0x101, have: 0x36f, distance: 0x8, oneway: false}, + 8: {want: 0x101, have: 0x347, distance: 0x8, oneway: false}, + 9: {want: 0x5, have: 0x3e2, distance: 0xa, oneway: true}, + 10: {want: 0xd, have: 0x139, distance: 0xa, oneway: true}, + 11: {want: 0x16, have: 0x367, distance: 0xa, oneway: true}, + 12: {want: 0x21, have: 0x139, distance: 0xa, oneway: true}, + 13: {want: 0x56, have: 0x13e, distance: 0xa, oneway: true}, + 14: {want: 0x58, have: 0x3e2, distance: 0xa, oneway: true}, + 15: {want: 0x71, have: 0x3e2, distance: 0xa, oneway: true}, + 16: {want: 0x75, have: 0x139, distance: 0xa, oneway: true}, + 17: {want: 0x82, have: 0x1be, distance: 0xa, oneway: true}, + 18: {want: 0xa5, have: 0x139, distance: 0xa, oneway: true}, + 19: {want: 0xb2, have: 0x15e, distance: 0xa, oneway: true}, + 20: {want: 0xdd, have: 0x153, distance: 0xa, oneway: true}, + 21: {want: 0xe5, have: 0x139, distance: 0xa, oneway: true}, + 22: {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true}, + 23: {want: 0xf0, have: 0x15e, distance: 0xa, oneway: true}, + 24: {want: 0xf9, have: 0x15e, distance: 0xa, oneway: true}, + 25: {want: 0x100, have: 0x139, distance: 0xa, oneway: true}, + 26: {want: 0x130, have: 0x139, distance: 0xa, oneway: true}, + 27: {want: 0x13c, have: 0x139, distance: 0xa, oneway: true}, + 28: {want: 0x140, have: 0x151, distance: 0xa, oneway: true}, + 29: {want: 0x145, have: 0x13e, distance: 0xa, oneway: true}, + 30: {want: 0x158, have: 0x101, distance: 0xa, oneway: true}, + 31: {want: 0x16d, have: 0x367, distance: 0xa, oneway: true}, + 32: {want: 0x16e, have: 0x139, distance: 0xa, oneway: true}, + 33: {want: 0x16f, have: 0x139, distance: 0xa, oneway: true}, + 34: {want: 0x17e, have: 0x139, distance: 0xa, oneway: true}, + 35: {want: 0x190, have: 0x13e, distance: 0xa, oneway: true}, + 36: {want: 0x194, have: 0x13e, distance: 0xa, oneway: true}, + 37: {want: 0x1a4, have: 0x1be, distance: 0xa, oneway: true}, + 38: {want: 0x1b4, have: 0x139, distance: 0xa, oneway: true}, + 39: {want: 0x1b8, have: 0x139, distance: 0xa, oneway: true}, + 40: {want: 0x1d4, have: 0x15e, distance: 0xa, oneway: true}, + 41: {want: 0x1d7, have: 0x3e2, distance: 0xa, oneway: true}, + 42: {want: 0x1d9, have: 0x139, distance: 0xa, oneway: true}, + 43: {want: 0x1e7, have: 0x139, distance: 0xa, oneway: true}, + 44: {want: 0x1f8, have: 0x139, distance: 0xa, oneway: true}, + 45: {want: 0x20e, have: 0x1e1, distance: 0xa, oneway: true}, + 46: {want: 0x210, have: 0x139, distance: 0xa, oneway: true}, + 47: {want: 0x22d, have: 0x15e, distance: 0xa, oneway: true}, + 48: {want: 0x242, have: 0x3e2, distance: 0xa, oneway: true}, + 49: {want: 0x24a, have: 0x139, distance: 0xa, oneway: true}, + 50: {want: 0x251, have: 0x139, distance: 0xa, oneway: true}, + 51: {want: 0x265, have: 0x139, distance: 0xa, oneway: true}, + 52: {want: 0x274, have: 0x48a, distance: 0xa, oneway: true}, + 53: {want: 0x28a, have: 0x3e2, distance: 0xa, oneway: true}, + 54: {want: 0x28e, have: 0x1f9, distance: 0xa, oneway: true}, + 55: {want: 0x2a3, have: 0x139, distance: 0xa, oneway: true}, + 56: {want: 0x2b5, have: 0x15e, distance: 0xa, oneway: true}, + 57: {want: 0x2b8, have: 0x139, distance: 0xa, oneway: true}, + 58: {want: 0x2be, have: 0x139, distance: 0xa, oneway: true}, + 59: {want: 0x2c3, have: 0x15e, distance: 0xa, oneway: true}, + 60: {want: 0x2ed, have: 0x139, distance: 0xa, oneway: true}, + 61: {want: 0x2f1, have: 0x15e, distance: 0xa, oneway: true}, + 62: {want: 0x2fa, have: 0x139, distance: 0xa, oneway: true}, + 63: {want: 0x2ff, have: 0x7e, distance: 0xa, oneway: true}, + 64: {want: 0x304, have: 0x139, distance: 0xa, oneway: true}, + 65: {want: 0x30b, have: 0x3e2, distance: 0xa, oneway: true}, + 66: {want: 0x31b, have: 0x1be, distance: 0xa, oneway: true}, + 67: {want: 0x31f, have: 0x1e1, distance: 0xa, oneway: true}, + 68: {want: 0x320, have: 0x139, distance: 0xa, oneway: true}, + 69: {want: 0x331, have: 0x139, distance: 0xa, oneway: true}, + 70: {want: 0x351, have: 0x139, distance: 0xa, oneway: true}, + 71: {want: 0x36a, have: 0x347, distance: 0xa, oneway: false}, + 72: {want: 0x36a, have: 0x36f, distance: 0xa, oneway: true}, + 73: {want: 0x37a, have: 0x139, distance: 0xa, oneway: true}, + 74: {want: 0x387, have: 0x139, distance: 0xa, oneway: true}, + 75: {want: 0x389, have: 0x139, distance: 0xa, oneway: true}, + 76: {want: 0x38b, have: 0x15e, distance: 0xa, oneway: true}, + 77: {want: 0x390, have: 0x139, distance: 0xa, oneway: true}, + 78: {want: 0x395, have: 0x139, distance: 0xa, oneway: true}, + 79: {want: 0x39d, have: 0x139, distance: 0xa, oneway: true}, + 80: {want: 0x3a5, have: 0x139, distance: 0xa, oneway: true}, + 81: {want: 0x3be, have: 0x139, distance: 0xa, oneway: true}, + 82: {want: 0x3c4, have: 0x13e, distance: 0xa, oneway: true}, + 83: {want: 0x3d4, have: 0x10d, distance: 0xa, oneway: true}, + 84: {want: 0x3d9, have: 0x139, distance: 0xa, oneway: true}, + 85: {want: 0x3e5, have: 0x15e, distance: 0xa, oneway: true}, + 86: {want: 0x3e9, have: 0x1be, distance: 0xa, oneway: true}, + 87: {want: 0x3fa, have: 0x139, distance: 0xa, oneway: true}, + 88: {want: 0x40c, have: 0x139, distance: 0xa, oneway: true}, + 89: {want: 0x423, have: 0x139, distance: 0xa, oneway: true}, + 90: {want: 0x429, have: 0x139, distance: 0xa, oneway: true}, + 91: {want: 0x431, have: 0x139, distance: 0xa, oneway: true}, + 92: {want: 0x43b, have: 0x139, distance: 0xa, oneway: true}, + 93: {want: 0x43e, have: 0x1e1, distance: 0xa, oneway: true}, + 94: {want: 0x445, have: 0x139, distance: 0xa, oneway: true}, + 95: {want: 0x450, have: 0x139, distance: 0xa, oneway: true}, + 96: {want: 0x461, have: 0x139, distance: 0xa, oneway: true}, + 97: {want: 0x467, have: 0x3e2, distance: 0xa, oneway: true}, + 98: {want: 0x46f, have: 0x139, distance: 0xa, oneway: true}, + 99: {want: 0x476, have: 0x3e2, distance: 0xa, oneway: true}, + 100: {want: 0x3883, have: 0x139, distance: 0xa, oneway: true}, + 101: {want: 0x480, have: 0x139, distance: 0xa, oneway: true}, + 102: {want: 0x482, have: 0x139, distance: 0xa, oneway: true}, + 103: {want: 0x494, have: 0x3e2, distance: 0xa, oneway: true}, + 104: {want: 0x49d, have: 0x139, distance: 0xa, oneway: true}, + 105: {want: 0x4ac, have: 0x529, distance: 0xa, oneway: true}, + 106: {want: 0x4b4, have: 0x139, distance: 0xa, oneway: true}, + 107: {want: 0x4bc, have: 0x3e2, distance: 0xa, oneway: true}, + 108: {want: 0x4e5, have: 0x15e, distance: 0xa, oneway: true}, + 109: {want: 0x4f2, have: 0x139, distance: 0xa, oneway: true}, + 110: {want: 0x512, have: 0x139, distance: 0xa, oneway: true}, + 111: {want: 0x518, have: 0x139, distance: 0xa, oneway: true}, + 112: {want: 0x52f, have: 0x139, distance: 0xa, oneway: true}, +} // Size: 702 bytes + +// matchScript holds pairs of scriptIDs where readers of one script +// can typically also read the other. Each is associated with a confidence. +var matchScript = []scriptIntelligibility{ // 26 elements + 0: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x5b, haveScript: 0x20, distance: 0x5}, + 1: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x20, haveScript: 0x5b, distance: 0x5}, + 2: {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa}, + 3: {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x5b, distance: 0xa}, + 4: {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x20, distance: 0xa}, + 5: {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2e, haveScript: 0x5b, distance: 0xa}, + 6: {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4f, haveScript: 0x5b, distance: 0xa}, + 7: {wantLang: 0x251, haveLang: 0x139, wantScript: 0x53, haveScript: 0x5b, distance: 0xa}, + 8: {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x58, haveScript: 0x5b, distance: 0xa}, + 9: {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6f, haveScript: 0x5b, distance: 0xa}, + 10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x76, haveScript: 0x5b, distance: 0xa}, + 11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x22, haveScript: 0x5b, distance: 0xa}, + 12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x83, haveScript: 0x5b, distance: 0xa}, + 13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x36, haveScript: 0x5b, distance: 0xa}, + 14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa}, + 15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa}, + 16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xd6, haveScript: 0x5b, distance: 0xa}, + 17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xe6, haveScript: 0x5b, distance: 0xa}, + 18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xe9, haveScript: 0x5b, distance: 0xa}, + 19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x2c, haveScript: 0x5b, distance: 0xa}, + 20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa}, + 21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa}, + 22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa}, + 23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3e, haveScript: 0x5b, distance: 0xa}, + 24: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3b, haveScript: 0x3c, distance: 0xf}, + 25: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3c, haveScript: 0x3b, distance: 0x13}, +} // Size: 232 bytes + +var matchRegion = []regionIntelligibility{ // 15 elements + 0: {lang: 0x3a, script: 0x0, group: 0x4, distance: 0x4}, + 1: {lang: 0x3a, script: 0x0, group: 0x84, distance: 0x4}, + 2: {lang: 0x139, script: 0x0, group: 0x1, distance: 0x4}, + 3: {lang: 0x139, script: 0x0, group: 0x81, distance: 0x4}, + 4: {lang: 0x13e, script: 0x0, group: 0x3, distance: 0x4}, + 5: {lang: 0x13e, script: 0x0, group: 0x83, distance: 0x4}, + 6: {lang: 0x3c0, script: 0x0, group: 0x3, distance: 0x4}, + 7: {lang: 0x3c0, script: 0x0, group: 0x83, distance: 0x4}, + 8: {lang: 0x529, script: 0x3c, group: 0x2, distance: 0x4}, + 9: {lang: 0x529, script: 0x3c, group: 0x82, distance: 0x4}, + 10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5}, + 11: {lang: 0x139, script: 0x0, group: 0x80, distance: 0x5}, + 12: {lang: 0x13e, script: 0x0, group: 0x80, distance: 0x5}, + 13: {lang: 0x3c0, script: 0x0, group: 0x80, distance: 0x5}, + 14: {lang: 0x529, script: 0x3c, group: 0x80, distance: 0x5}, +} // Size: 114 bytes + +// Total table size 1473 bytes (1KiB); checksum: 7BB90B5C diff --git a/vendor/golang.org/x/text/language/tags.go b/vendor/golang.org/x/text/language/tags.go new file mode 100644 index 000000000000..42ea79266605 --- /dev/null +++ b/vendor/golang.org/x/text/language/tags.go @@ -0,0 +1,145 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import "golang.org/x/text/internal/language/compact" + +// TODO: Various sets of commonly use tags and regions. + +// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. +// It simplifies safe initialization of Tag values. +func MustParse(s string) Tag { + t, err := Parse(s) + if err != nil { + panic(err) + } + return t +} + +// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. +// It simplifies safe initialization of Tag values. +func (c CanonType) MustParse(s string) Tag { + t, err := c.Parse(s) + if err != nil { + panic(err) + } + return t +} + +// MustParseBase is like ParseBase, but panics if the given base cannot be parsed. +// It simplifies safe initialization of Base values. +func MustParseBase(s string) Base { + b, err := ParseBase(s) + if err != nil { + panic(err) + } + return b +} + +// MustParseScript is like ParseScript, but panics if the given script cannot be +// parsed. It simplifies safe initialization of Script values. +func MustParseScript(s string) Script { + scr, err := ParseScript(s) + if err != nil { + panic(err) + } + return scr +} + +// MustParseRegion is like ParseRegion, but panics if the given region cannot be +// parsed. It simplifies safe initialization of Region values. +func MustParseRegion(s string) Region { + r, err := ParseRegion(s) + if err != nil { + panic(err) + } + return r +} + +var ( + und = Tag{} + + Und Tag = Tag{} + + Afrikaans Tag = Tag(compact.Afrikaans) + Amharic Tag = Tag(compact.Amharic) + Arabic Tag = Tag(compact.Arabic) + ModernStandardArabic Tag = Tag(compact.ModernStandardArabic) + Azerbaijani Tag = Tag(compact.Azerbaijani) + Bulgarian Tag = Tag(compact.Bulgarian) + Bengali Tag = Tag(compact.Bengali) + Catalan Tag = Tag(compact.Catalan) + Czech Tag = Tag(compact.Czech) + Danish Tag = Tag(compact.Danish) + German Tag = Tag(compact.German) + Greek Tag = Tag(compact.Greek) + English Tag = Tag(compact.English) + AmericanEnglish Tag = Tag(compact.AmericanEnglish) + BritishEnglish Tag = Tag(compact.BritishEnglish) + Spanish Tag = Tag(compact.Spanish) + EuropeanSpanish Tag = Tag(compact.EuropeanSpanish) + LatinAmericanSpanish Tag = Tag(compact.LatinAmericanSpanish) + Estonian Tag = Tag(compact.Estonian) + Persian Tag = Tag(compact.Persian) + Finnish Tag = Tag(compact.Finnish) + Filipino Tag = Tag(compact.Filipino) + French Tag = Tag(compact.French) + CanadianFrench Tag = Tag(compact.CanadianFrench) + Gujarati Tag = Tag(compact.Gujarati) + Hebrew Tag = Tag(compact.Hebrew) + Hindi Tag = Tag(compact.Hindi) + Croatian Tag = Tag(compact.Croatian) + Hungarian Tag = Tag(compact.Hungarian) + Armenian Tag = Tag(compact.Armenian) + Indonesian Tag = Tag(compact.Indonesian) + Icelandic Tag = Tag(compact.Icelandic) + Italian Tag = Tag(compact.Italian) + Japanese Tag = Tag(compact.Japanese) + Georgian Tag = Tag(compact.Georgian) + Kazakh Tag = Tag(compact.Kazakh) + Khmer Tag = Tag(compact.Khmer) + Kannada Tag = Tag(compact.Kannada) + Korean Tag = Tag(compact.Korean) + Kirghiz Tag = Tag(compact.Kirghiz) + Lao Tag = Tag(compact.Lao) + Lithuanian Tag = Tag(compact.Lithuanian) + Latvian Tag = Tag(compact.Latvian) + Macedonian Tag = Tag(compact.Macedonian) + Malayalam Tag = Tag(compact.Malayalam) + Mongolian Tag = Tag(compact.Mongolian) + Marathi Tag = Tag(compact.Marathi) + Malay Tag = Tag(compact.Malay) + Burmese Tag = Tag(compact.Burmese) + Nepali Tag = Tag(compact.Nepali) + Dutch Tag = Tag(compact.Dutch) + Norwegian Tag = Tag(compact.Norwegian) + Punjabi Tag = Tag(compact.Punjabi) + Polish Tag = Tag(compact.Polish) + Portuguese Tag = Tag(compact.Portuguese) + BrazilianPortuguese Tag = Tag(compact.BrazilianPortuguese) + EuropeanPortuguese Tag = Tag(compact.EuropeanPortuguese) + Romanian Tag = Tag(compact.Romanian) + Russian Tag = Tag(compact.Russian) + Sinhala Tag = Tag(compact.Sinhala) + Slovak Tag = Tag(compact.Slovak) + Slovenian Tag = Tag(compact.Slovenian) + Albanian Tag = Tag(compact.Albanian) + Serbian Tag = Tag(compact.Serbian) + SerbianLatin Tag = Tag(compact.SerbianLatin) + Swedish Tag = Tag(compact.Swedish) + Swahili Tag = Tag(compact.Swahili) + Tamil Tag = Tag(compact.Tamil) + Telugu Tag = Tag(compact.Telugu) + Thai Tag = Tag(compact.Thai) + Turkish Tag = Tag(compact.Turkish) + Ukrainian Tag = Tag(compact.Ukrainian) + Urdu Tag = Tag(compact.Urdu) + Uzbek Tag = Tag(compact.Uzbek) + Vietnamese Tag = Tag(compact.Vietnamese) + Chinese Tag = Tag(compact.Chinese) + SimplifiedChinese Tag = Tag(compact.SimplifiedChinese) + TraditionalChinese Tag = Tag(compact.TraditionalChinese) + Zulu Tag = Tag(compact.Zulu) +) diff --git a/vendor/golang.org/x/time/LICENSE b/vendor/golang.org/x/time/LICENSE index 6a66aea5eafe..2a7cf70da6e4 100644 --- a/vendor/golang.org/x/time/LICENSE +++ b/vendor/golang.org/x/time/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/time/rate/rate.go b/vendor/golang.org/x/time/rate/rate.go index 8f6c7f493f8e..93a798ab6370 100644 --- a/vendor/golang.org/x/time/rate/rate.go +++ b/vendor/golang.org/x/time/rate/rate.go @@ -99,8 +99,9 @@ func (lim *Limiter) Tokens() float64 { // bursts of at most b tokens. func NewLimiter(r Limit, b int) *Limiter { return &Limiter{ - limit: r, - burst: b, + limit: r, + burst: b, + tokens: float64(b), } } @@ -344,18 +345,6 @@ func (lim *Limiter) reserveN(t time.Time, n int, maxFutureReserve time.Duration) tokens: n, timeToAct: t, } - } else if lim.limit == 0 { - var ok bool - if lim.burst >= n { - ok = true - lim.burst -= n - } - return Reservation{ - ok: ok, - lim: lim, - tokens: lim.burst, - timeToAct: t, - } } t, tokens := lim.advance(t) diff --git a/vendor/golang.org/x/tools/LICENSE b/vendor/golang.org/x/tools/LICENSE index 6a66aea5eafe..2a7cf70da6e4 100644 --- a/vendor/golang.org/x/tools/LICENSE +++ b/vendor/golang.org/x/tools/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/tools/go/ast/astutil/imports.go b/vendor/golang.org/x/tools/go/ast/astutil/imports.go index 18d1adb05ddc..a6b5ed0a8933 100644 --- a/vendor/golang.org/x/tools/go/ast/astutil/imports.go +++ b/vendor/golang.org/x/tools/go/ast/astutil/imports.go @@ -344,7 +344,12 @@ func RewriteImport(fset *token.FileSet, f *ast.File, oldPath, newPath string) (r } // UsesImport reports whether a given import is used. +// The provided File must have been parsed with syntactic object resolution +// (not using go/parser.SkipObjectResolution). func UsesImport(f *ast.File, path string) (used bool) { + if f.Scope == nil { + panic("file f was not parsed with syntactic object resolution") + } spec := importSpec(f, path) if spec == nil { return diff --git a/vendor/golang.org/x/tools/go/ast/astutil/util.go b/vendor/golang.org/x/tools/go/ast/astutil/util.go index 6bdcf70ac275..ca71e3e10553 100644 --- a/vendor/golang.org/x/tools/go/ast/astutil/util.go +++ b/vendor/golang.org/x/tools/go/ast/astutil/util.go @@ -7,13 +7,5 @@ package astutil import "go/ast" // Unparen returns e with any enclosing parentheses stripped. -// TODO(adonovan): use go1.22's ast.Unparen. -func Unparen(e ast.Expr) ast.Expr { - for { - p, ok := e.(*ast.ParenExpr) - if !ok { - return e - } - e = p.X - } -} +// Deprecated: use [ast.Unparen]. +func Unparen(e ast.Expr) ast.Expr { return ast.Unparen(e) } diff --git a/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go index 137cc8df1d86..65fe2628e909 100644 --- a/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go +++ b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go @@ -2,22 +2,64 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// Package gcexportdata provides functions for locating, reading, and -// writing export data files containing type information produced by the -// gc compiler. This package supports go1.7 export data format and all -// later versions. -// -// Although it might seem convenient for this package to live alongside -// go/types in the standard library, this would cause version skew -// problems for developer tools that use it, since they must be able to -// consume the outputs of the gc compiler both before and after a Go -// update such as from Go 1.7 to Go 1.8. Because this package lives in -// golang.org/x/tools, sites can update their version of this repo some -// time before the Go 1.8 release and rebuild and redeploy their -// developer tools, which will then be able to consume both Go 1.7 and -// Go 1.8 export data files, so they will work before and after the -// Go update. (See discussion at https://golang.org/issue/15651.) -package gcexportdata // import "golang.org/x/tools/go/gcexportdata" +// Package gcexportdata provides functions for reading and writing +// export data, which is a serialized description of the API of a Go +// package including the names, kinds, types, and locations of all +// exported declarations. +// +// The standard Go compiler (cmd/compile) writes an export data file +// for each package it compiles, which it later reads when compiling +// packages that import the earlier one. The compiler must thus +// contain logic to both write and read export data. +// (See the "Export" section in the cmd/compile/README file.) +// +// The [Read] function in this package can read files produced by the +// compiler, producing [go/types] data structures. As a matter of +// policy, Read supports export data files produced by only the last +// two Go releases plus tip; see https://go.dev/issue/68898. The +// export data files produced by the compiler contain additional +// details related to generics, inlining, and other optimizations that +// cannot be decoded by the [Read] function. +// +// In files written by the compiler, the export data is not at the +// start of the file. Before calling Read, use [NewReader] to locate +// the desired portion of the file. +// +// The [Write] function in this package encodes the exported API of a +// Go package ([types.Package]) as a file. Such files can be later +// decoded by Read, but cannot be consumed by the compiler. +// +// # Future changes +// +// Although Read supports the formats written by both Write and the +// compiler, the two are quite different, and there is an open +// proposal (https://go.dev/issue/69491) to separate these APIs. +// +// Under that proposal, this package would ultimately provide only the +// Read operation for compiler export data, which must be defined in +// this module (golang.org/x/tools), not in the standard library, to +// avoid version skew for developer tools that need to read compiler +// export data both before and after a Go release, such as from Go +// 1.23 to Go 1.24. Because this package lives in the tools module, +// clients can update their version of the module some time before the +// Go 1.24 release and rebuild and redeploy their tools, which will +// then be able to consume both Go 1.23 and Go 1.24 export data files, +// so they will work before and after the Go update. (See discussion +// at https://go.dev/issue/15651.) +// +// The operations to import and export [go/types] data structures +// would be defined in the go/types package as Import and Export. +// [Write] would (eventually) delegate to Export, +// and [Read], when it detects a file produced by Export, +// would delegate to Import. +// +// # Deprecations +// +// The [NewImporter] and [Find] functions are deprecated and should +// not be used in new code. The [WriteBundle] and [ReadBundle] +// functions are experimental, and there is an open proposal to +// deprecate them (https://go.dev/issue/69573). +package gcexportdata import ( "bufio" @@ -64,24 +106,18 @@ func Find(importPath, srcDir string) (filename, path string) { // additional trailing data beyond the end of the export data. func NewReader(r io.Reader) (io.Reader, error) { buf := bufio.NewReader(r) - _, size, err := gcimporter.FindExportData(buf) + size, err := gcimporter.FindExportData(buf) if err != nil { return nil, err } - if size >= 0 { - // We were given an archive and found the __.PKGDEF in it. - // This tells us the size of the export data, and we don't - // need to return the entire file. - return &io.LimitedReader{ - R: buf, - N: size, - }, nil - } else { - // We were given an object file. As such, we don't know how large - // the export data is and must return the entire file. - return buf, nil - } + // We were given an archive and found the __.PKGDEF in it. + // This tells us the size of the export data, and we don't + // need to return the entire file. + return &io.LimitedReader{ + R: buf, + N: size, + }, nil } // readAll works the same way as io.ReadAll, but avoids allocations and copies @@ -100,6 +136,11 @@ func readAll(r io.Reader) ([]byte, error) { // Read reads export data from in, decodes it, and returns type // information for the package. // +// Read is capable of reading export data produced by [Write] at the +// same source code version, or by the last two Go releases (plus tip) +// of the standard Go compiler. Reading files from older compilers may +// produce an error. +// // The package path (effectively its linker symbol prefix) is // specified by path, since unlike the package name, this information // may not be recorded in the export data. @@ -128,14 +169,26 @@ func Read(in io.Reader, fset *token.FileSet, imports map[string]*types.Package, // (from "version"). Select appropriate importer. if len(data) > 0 { switch data[0] { - case 'v', 'c', 'd': // binary, till go1.10 + case 'v', 'c', 'd': + // binary, produced by cmd/compile till go1.10 return nil, fmt.Errorf("binary (%c) import format is no longer supported", data[0]) - case 'i': // indexed, till go1.19 + case 'i': + // indexed, produced by cmd/compile till go1.19, + // and also by [Write]. + // + // If proposal #69491 is accepted, go/types + // serialization will be implemented by + // types.Export, to which Write would eventually + // delegate (explicitly dropping any pretence at + // inter-version Write-Read compatibility). + // This [Read] function would delegate to types.Import + // when it detects that the file was produced by Export. _, pkg, err := gcimporter.IImportData(fset, imports, data[1:], path) return pkg, err - case 'u': // unified, from go1.20 + case 'u': + // unified, produced by cmd/compile since go1.20 _, pkg, err := gcimporter.UImportData(fset, imports, data[1:], path) return pkg, err diff --git a/vendor/golang.org/x/tools/go/packages/doc.go b/vendor/golang.org/x/tools/go/packages/doc.go index 3531ac8f5fcf..f1931d10eebe 100644 --- a/vendor/golang.org/x/tools/go/packages/doc.go +++ b/vendor/golang.org/x/tools/go/packages/doc.go @@ -64,7 +64,7 @@ graph using the Imports fields. The Load function can be configured by passing a pointer to a Config as the first argument. A nil Config is equivalent to the zero Config, which -causes Load to run in LoadFiles mode, collecting minimal information. +causes Load to run in [LoadFiles] mode, collecting minimal information. See the documentation for type Config for details. As noted earlier, the Config.Mode controls the amount of detail @@ -72,14 +72,14 @@ reported about the loaded packages. See the documentation for type LoadMode for details. Most tools should pass their command-line arguments (after any flags) -uninterpreted to [Load], so that it can interpret them +uninterpreted to Load, so that it can interpret them according to the conventions of the underlying build system. See the Example function for typical usage. # The driver protocol -[Load] may be used to load Go packages even in Go projects that use +Load may be used to load Go packages even in Go projects that use alternative build systems, by installing an appropriate "driver" program for the build system and specifying its location in the GOPACKAGESDRIVER environment variable. @@ -97,6 +97,15 @@ JSON-encoded [DriverRequest] message providing additional information is written to the driver's standard input. The driver must write a JSON-encoded [DriverResponse] message to its standard output. (This message differs from the JSON schema produced by 'go list'.) + +The value of the PWD environment variable seen by the driver process +is the preferred name of its working directory. (The working directory +may have other aliases due to symbolic links; see the comment on the +Dir field of [exec.Cmd] for related information.) +When the driver process emits in its response the name of a file +that is a descendant of this directory, it must use an absolute path +that has the value of PWD as a prefix, to ensure that the returned +filenames satisfy the original query. */ package packages // import "golang.org/x/tools/go/packages" diff --git a/vendor/golang.org/x/tools/go/packages/external.go b/vendor/golang.org/x/tools/go/packages/external.go index c2b4b711b59d..91bd62e83b11 100644 --- a/vendor/golang.org/x/tools/go/packages/external.go +++ b/vendor/golang.org/x/tools/go/packages/external.go @@ -13,6 +13,7 @@ import ( "fmt" "os" "os/exec" + "slices" "strings" ) @@ -79,10 +80,10 @@ type DriverResponse struct { // driver is the type for functions that query the build system for the // packages named by the patterns. -type driver func(cfg *Config, patterns ...string) (*DriverResponse, error) +type driver func(cfg *Config, patterns []string) (*DriverResponse, error) // findExternalDriver returns the file path of a tool that supplies -// the build system package structure, or "" if not found." +// the build system package structure, or "" if not found. // If GOPACKAGESDRIVER is set in the environment findExternalTool returns its // value, otherwise it searches for a binary named gopackagesdriver on the PATH. func findExternalDriver(cfg *Config) driver { @@ -103,7 +104,7 @@ func findExternalDriver(cfg *Config) driver { return nil } } - return func(cfg *Config, words ...string) (*DriverResponse, error) { + return func(cfg *Config, patterns []string) (*DriverResponse, error) { req, err := json.Marshal(DriverRequest{ Mode: cfg.Mode, Env: cfg.Env, @@ -117,7 +118,7 @@ func findExternalDriver(cfg *Config) driver { buf := new(bytes.Buffer) stderr := new(bytes.Buffer) - cmd := exec.CommandContext(cfg.Context, tool, words...) + cmd := exec.CommandContext(cfg.Context, tool, patterns...) cmd.Dir = cfg.Dir // The cwd gets resolved to the real path. On Darwin, where // /tmp is a symlink, this breaks anything that expects the @@ -131,7 +132,7 @@ func findExternalDriver(cfg *Config) driver { // command. // // (See similar trick in Invocation.run in ../../internal/gocommand/invoke.go) - cmd.Env = append(slicesClip(cfg.Env), "PWD="+cfg.Dir) + cmd.Env = append(slices.Clip(cfg.Env), "PWD="+cfg.Dir) cmd.Stdin = bytes.NewReader(req) cmd.Stdout = buf cmd.Stderr = stderr @@ -150,7 +151,3 @@ func findExternalDriver(cfg *Config) driver { return &response, nil } } - -// slicesClip removes unused capacity from the slice, returning s[:len(s):len(s)]. -// TODO(adonovan): use go1.21 slices.Clip. -func slicesClip[S ~[]E, E any](s S) S { return s[:len(s):len(s)] } diff --git a/vendor/golang.org/x/tools/go/packages/golist.go b/vendor/golang.org/x/tools/go/packages/golist.go index 1a3a5b44f5c5..0458b4f9c43c 100644 --- a/vendor/golang.org/x/tools/go/packages/golist.go +++ b/vendor/golang.org/x/tools/go/packages/golist.go @@ -80,6 +80,12 @@ type golistState struct { cfg *Config ctx context.Context + runner *gocommand.Runner + + // overlay is the JSON file that encodes the Config.Overlay + // mapping, used by 'go list -overlay=...'. + overlay string + envOnce sync.Once goEnvError error goEnv map[string]string @@ -127,7 +133,10 @@ func (state *golistState) mustGetEnv() map[string]string { // goListDriver uses the go list command to interpret the patterns and produce // the build system package structure. // See driver for more details. -func goListDriver(cfg *Config, patterns ...string) (_ *DriverResponse, err error) { +// +// overlay is the JSON file that encodes the cfg.Overlay +// mapping, used by 'go list -overlay=...' +func goListDriver(cfg *Config, runner *gocommand.Runner, overlay string, patterns []string) (_ *DriverResponse, err error) { // Make sure that any asynchronous go commands are killed when we return. parentCtx := cfg.Context if parentCtx == nil { @@ -142,13 +151,15 @@ func goListDriver(cfg *Config, patterns ...string) (_ *DriverResponse, err error cfg: cfg, ctx: ctx, vendorDirs: map[string]bool{}, + overlay: overlay, + runner: runner, } // Fill in response.Sizes asynchronously if necessary. - if cfg.Mode&NeedTypesSizes != 0 || cfg.Mode&NeedTypes != 0 { + if cfg.Mode&NeedTypesSizes != 0 || cfg.Mode&(NeedTypes|NeedTypesInfo) != 0 { errCh := make(chan error) go func() { - compiler, arch, err := getSizesForArgs(ctx, state.cfgInvocation(), cfg.gocmdRunner) + compiler, arch, err := getSizesForArgs(ctx, state.cfgInvocation(), runner) response.dr.Compiler = compiler response.dr.Arch = arch errCh <- err @@ -311,6 +322,7 @@ type jsonPackage struct { ImportPath string Dir string Name string + Target string Export string GoFiles []string CompiledGoFiles []string @@ -494,13 +506,15 @@ func (state *golistState) createDriverResponse(words ...string) (*DriverResponse pkg := &Package{ Name: p.Name, ID: p.ImportPath, + Dir: p.Dir, + Target: p.Target, GoFiles: absJoin(p.Dir, p.GoFiles, p.CgoFiles), CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles), OtherFiles: absJoin(p.Dir, otherFiles(p)...), EmbedFiles: absJoin(p.Dir, p.EmbedFiles), EmbedPatterns: absJoin(p.Dir, p.EmbedPatterns), IgnoredFiles: absJoin(p.Dir, p.IgnoredGoFiles, p.IgnoredOtherFiles), - forTest: p.ForTest, + ForTest: p.ForTest, depsErrors: p.DepsErrors, Module: p.Module, } @@ -681,7 +695,7 @@ func (state *golistState) shouldAddFilenameFromError(p *jsonPackage) bool { // getGoVersion returns the effective minor version of the go command. func (state *golistState) getGoVersion() (int, error) { state.goVersionOnce.Do(func() { - state.goVersion, state.goVersionError = gocommand.GoVersion(state.ctx, state.cfgInvocation(), state.cfg.gocmdRunner) + state.goVersion, state.goVersionError = gocommand.GoVersion(state.ctx, state.cfgInvocation(), state.runner) }) return state.goVersion, state.goVersionError } @@ -751,7 +765,7 @@ func jsonFlag(cfg *Config, goVersion int) string { } } addFields("Name", "ImportPath", "Error") // These fields are always needed - if cfg.Mode&NeedFiles != 0 || cfg.Mode&NeedTypes != 0 { + if cfg.Mode&NeedFiles != 0 || cfg.Mode&(NeedTypes|NeedTypesInfo) != 0 { addFields("Dir", "GoFiles", "IgnoredGoFiles", "IgnoredOtherFiles", "CFiles", "CgoFiles", "CXXFiles", "MFiles", "HFiles", "FFiles", "SFiles", "SwigFiles", "SwigCXXFiles", "SysoFiles") @@ -759,7 +773,7 @@ func jsonFlag(cfg *Config, goVersion int) string { addFields("TestGoFiles", "XTestGoFiles") } } - if cfg.Mode&NeedTypes != 0 { + if cfg.Mode&(NeedTypes|NeedTypesInfo) != 0 { // CompiledGoFiles seems to be required for the test case TestCgoNoSyntax, // even when -compiled isn't passed in. // TODO(#52435): Should we make the test ask for -compiled, or automatically @@ -784,7 +798,7 @@ func jsonFlag(cfg *Config, goVersion int) string { // Request Dir in the unlikely case Export is not absolute. addFields("Dir", "Export") } - if cfg.Mode&needInternalForTest != 0 { + if cfg.Mode&NeedForTest != 0 { addFields("ForTest") } if cfg.Mode&needInternalDepsErrors != 0 { @@ -799,6 +813,9 @@ func jsonFlag(cfg *Config, goVersion int) string { if cfg.Mode&NeedEmbedPatterns != 0 { addFields("EmbedPatterns") } + if cfg.Mode&NeedTarget != 0 { + addFields("Target") + } return "-json=" + strings.Join(fields, ",") } @@ -840,7 +857,7 @@ func (state *golistState) cfgInvocation() gocommand.Invocation { Env: cfg.Env, Logf: cfg.Logf, WorkingDir: cfg.Dir, - Overlay: cfg.goListOverlayFile, + Overlay: state.overlay, } } @@ -851,11 +868,8 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, inv := state.cfgInvocation() inv.Verb = verb inv.Args = args - gocmdRunner := cfg.gocmdRunner - if gocmdRunner == nil { - gocmdRunner = &gocommand.Runner{} - } - stdout, stderr, friendlyErr, err := gocmdRunner.RunRaw(cfg.Context, inv) + + stdout, stderr, friendlyErr, err := state.runner.RunRaw(cfg.Context, inv) if err != nil { // Check for 'go' executable not being found. if ee, ok := err.(*exec.Error); ok && ee.Err == exec.ErrNotFound { @@ -879,6 +893,12 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, return nil, friendlyErr } + // Return an error if 'go list' failed due to missing tools in + // $GOROOT/pkg/tool/$GOOS_$GOARCH (#69606). + if len(stderr.String()) > 0 && strings.Contains(stderr.String(), `go: no such tool`) { + return nil, friendlyErr + } + // Is there an error running the C compiler in cgo? This will be reported in the "Error" field // and should be suppressed by go list -e. // diff --git a/vendor/golang.org/x/tools/go/packages/loadmode_string.go b/vendor/golang.org/x/tools/go/packages/loadmode_string.go index 5c080d21b54a..69eec9f44ddc 100644 --- a/vendor/golang.org/x/tools/go/packages/loadmode_string.go +++ b/vendor/golang.org/x/tools/go/packages/loadmode_string.go @@ -9,49 +9,48 @@ import ( "strings" ) -var allModes = []LoadMode{ - NeedName, - NeedFiles, - NeedCompiledGoFiles, - NeedImports, - NeedDeps, - NeedExportFile, - NeedTypes, - NeedSyntax, - NeedTypesInfo, - NeedTypesSizes, +var modes = [...]struct { + mode LoadMode + name string +}{ + {NeedName, "NeedName"}, + {NeedFiles, "NeedFiles"}, + {NeedCompiledGoFiles, "NeedCompiledGoFiles"}, + {NeedImports, "NeedImports"}, + {NeedDeps, "NeedDeps"}, + {NeedExportFile, "NeedExportFile"}, + {NeedTypes, "NeedTypes"}, + {NeedSyntax, "NeedSyntax"}, + {NeedTypesInfo, "NeedTypesInfo"}, + {NeedTypesSizes, "NeedTypesSizes"}, + {NeedForTest, "NeedForTest"}, + {NeedModule, "NeedModule"}, + {NeedEmbedFiles, "NeedEmbedFiles"}, + {NeedEmbedPatterns, "NeedEmbedPatterns"}, + {NeedTarget, "NeedTarget"}, } -var modeStrings = []string{ - "NeedName", - "NeedFiles", - "NeedCompiledGoFiles", - "NeedImports", - "NeedDeps", - "NeedExportFile", - "NeedTypes", - "NeedSyntax", - "NeedTypesInfo", - "NeedTypesSizes", -} - -func (mod LoadMode) String() string { - m := mod - if m == 0 { +func (mode LoadMode) String() string { + if mode == 0 { return "LoadMode(0)" } var out []string - for i, x := range allModes { - if x > m { - break + // named bits + for _, item := range modes { + if (mode & item.mode) != 0 { + mode ^= item.mode + out = append(out, item.name) } - if (m & x) != 0 { - out = append(out, modeStrings[i]) - m = m ^ x + } + // unnamed residue + if mode != 0 { + if out == nil { + return fmt.Sprintf("LoadMode(%#x)", int(mode)) } + out = append(out, fmt.Sprintf("%#x", int(mode))) } - if m != 0 { - out = append(out, "Unknown") + if len(out) == 1 { + return out[0] } - return fmt.Sprintf("LoadMode(%s)", strings.Join(out, "|")) + return "(" + strings.Join(out, "|") + ")" } diff --git a/vendor/golang.org/x/tools/go/packages/packages.go b/vendor/golang.org/x/tools/go/packages/packages.go index 34306ddd3900..0147d9080aa6 100644 --- a/vendor/golang.org/x/tools/go/packages/packages.go +++ b/vendor/golang.org/x/tools/go/packages/packages.go @@ -16,13 +16,13 @@ import ( "go/scanner" "go/token" "go/types" - "io" "log" "os" "path/filepath" "runtime" "strings" "sync" + "sync/atomic" "time" "golang.org/x/sync/errgroup" @@ -31,7 +31,6 @@ import ( "golang.org/x/tools/internal/gocommand" "golang.org/x/tools/internal/packagesinternal" "golang.org/x/tools/internal/typesinternal" - "golang.org/x/tools/internal/versions" ) // A LoadMode controls the amount of detail to return when loading. @@ -44,20 +43,33 @@ import ( // ID and Errors (if present) will always be filled. // [Load] may return more information than requested. // +// The Mode flag is a union of several bits named NeedName, +// NeedFiles, and so on, each of which determines whether +// a given field of Package (Name, Files, etc) should be +// populated. +// +// For convenience, we provide named constants for the most +// common combinations of Need flags: +// +// [LoadFiles] lists of files in each package +// [LoadImports] ... plus imports +// [LoadTypes] ... plus type information +// [LoadSyntax] ... plus type-annotated syntax +// [LoadAllSyntax] ... for all dependencies +// // Unfortunately there are a number of open bugs related to // interactions among the LoadMode bits: -// - https://github.com/golang/go/issues/48226 -// - https://github.com/golang/go/issues/56633 -// - https://github.com/golang/go/issues/56677 -// - https://github.com/golang/go/issues/58726 -// - https://github.com/golang/go/issues/63517 +// - https://github.com/golang/go/issues/56633 +// - https://github.com/golang/go/issues/56677 +// - https://github.com/golang/go/issues/58726 +// - https://github.com/golang/go/issues/63517 type LoadMode int const ( // NeedName adds Name and PkgPath. NeedName LoadMode = 1 << iota - // NeedFiles adds GoFiles and OtherFiles. + // NeedFiles adds Dir, GoFiles, OtherFiles, and IgnoredFiles NeedFiles // NeedCompiledGoFiles adds CompiledGoFiles. @@ -76,10 +88,10 @@ const ( // NeedTypes adds Types, Fset, and IllTyped. NeedTypes - // NeedSyntax adds Syntax. + // NeedSyntax adds Syntax and Fset. NeedSyntax - // NeedTypesInfo adds TypesInfo. + // NeedTypesInfo adds TypesInfo and Fset. NeedTypesInfo // NeedTypesSizes adds TypesSizes. @@ -88,9 +100,10 @@ const ( // needInternalDepsErrors adds the internal deps errors field for use by gopls. needInternalDepsErrors - // needInternalForTest adds the internal forTest field. + // NeedForTest adds ForTest. + // // Tests must also be set on the context for this field to be populated. - needInternalForTest + NeedForTest // typecheckCgo enables full support for type checking cgo. Requires Go 1.15+. // Modifies CompiledGoFiles and Types, and has no effect on its own. @@ -104,27 +117,27 @@ const ( // NeedEmbedPatterns adds EmbedPatterns. NeedEmbedPatterns + + // NeedTarget adds Target. + NeedTarget + + // Be sure to update loadmode_string.go when adding new items! ) const ( - // Deprecated: LoadFiles exists for historical compatibility - // and should not be used. Please directly specify the needed fields using the Need values. + // LoadFiles loads the name and file names for the initial packages. LoadFiles = NeedName | NeedFiles | NeedCompiledGoFiles - // Deprecated: LoadImports exists for historical compatibility - // and should not be used. Please directly specify the needed fields using the Need values. + // LoadImports loads the name, file names, and import mapping for the initial packages. LoadImports = LoadFiles | NeedImports - // Deprecated: LoadTypes exists for historical compatibility - // and should not be used. Please directly specify the needed fields using the Need values. + // LoadTypes loads exported type information for the initial packages. LoadTypes = LoadImports | NeedTypes | NeedTypesSizes - // Deprecated: LoadSyntax exists for historical compatibility - // and should not be used. Please directly specify the needed fields using the Need values. + // LoadSyntax loads typed syntax for the initial packages. LoadSyntax = LoadTypes | NeedSyntax | NeedTypesInfo - // Deprecated: LoadAllSyntax exists for historical compatibility - // and should not be used. Please directly specify the needed fields using the Need values. + // LoadAllSyntax loads typed syntax for the initial packages and all dependencies. LoadAllSyntax = LoadSyntax | NeedDeps // Deprecated: NeedExportsFile is a historical misspelling of NeedExportFile. @@ -134,13 +147,7 @@ const ( // A Config specifies details about how packages should be loaded. // The zero value is a valid configuration. // -// Calls to Load do not modify this struct. -// -// TODO(adonovan): #67702: this is currently false: in fact, -// calls to [Load] do not modify the public fields of this struct, but -// may modify hidden fields, so concurrent calls to [Load] must not -// use the same Config. But perhaps we should reestablish the -// documented invariant. +// Calls to [Load] do not modify this struct. type Config struct { // Mode controls the level of information returned for each package. Mode LoadMode @@ -171,19 +178,10 @@ type Config struct { // Env []string - // gocmdRunner guards go command calls from concurrency errors. - gocmdRunner *gocommand.Runner - // BuildFlags is a list of command-line flags to be passed through to // the build system's query tool. BuildFlags []string - // modFile will be used for -modfile in go command invocations. - modFile string - - // modFlag will be used for -modfile in go command invocations. - modFlag string - // Fset provides source position information for syntax trees and types. // If Fset is nil, Load will use a new fileset, but preserve Fset's value. Fset *token.FileSet @@ -230,21 +228,24 @@ type Config struct { // drivers may vary in their level of support for overlays. Overlay map[string][]byte - // goListOverlayFile is the JSON file that encodes the Overlay - // mapping, used by 'go list -overlay=...' - goListOverlayFile string + // -- Hidden configuration fields only for use in x/tools -- + + // modFile will be used for -modfile in go command invocations. + modFile string + + // modFlag will be used for -modfile in go command invocations. + modFlag string } // Load loads and returns the Go packages named by the given patterns. // -// Config specifies loading options; -// nil behaves the same as an empty Config. +// The cfg parameter specifies loading options; nil behaves the same as an empty [Config]. // // The [Config.Mode] field is a set of bits that determine what kinds // of information should be computed and returned. Modes that require // more information tend to be slower. See [LoadMode] for details // and important caveats. Its zero value is equivalent to -// NeedName | NeedFiles | NeedCompiledGoFiles. +// [NeedName] | [NeedFiles] | [NeedCompiledGoFiles]. // // Each call to Load returns a new set of [Package] instances. // The Packages and their Imports form a directed acyclic graph. @@ -261,7 +262,7 @@ type Config struct { // Errors associated with a particular package are recorded in the // corresponding Package's Errors list, and do not cause Load to // return an error. Clients may need to handle such errors before -// proceeding with further analysis. The PrintErrors function is +// proceeding with further analysis. The [PrintErrors] function is // provided for convenient display of all errors. func Load(cfg *Config, patterns ...string) ([]*Package, error) { ld := newLoader(cfg) @@ -324,21 +325,24 @@ func defaultDriver(cfg *Config, patterns ...string) (*DriverResponse, bool, erro } else if !response.NotHandled { return response, true, nil } - // (fall through) + // not handled: fall through } // go list fallback - // + // Write overlays once, as there are many calls // to 'go list' (one per chunk plus others too). - overlay, cleanupOverlay, err := gocommand.WriteOverlays(cfg.Overlay) + overlayFile, cleanupOverlay, err := gocommand.WriteOverlays(cfg.Overlay) if err != nil { return nil, false, err } defer cleanupOverlay() - cfg.goListOverlayFile = overlay - response, err := callDriverOnChunks(goListDriver, cfg, chunks) + var runner gocommand.Runner // (shared across many 'go list' calls) + driver := func(cfg *Config, patterns []string) (*DriverResponse, error) { + return goListDriver(cfg, &runner, overlayFile, patterns) + } + response, err := callDriverOnChunks(driver, cfg, chunks) if err != nil { return nil, false, err } @@ -376,16 +380,14 @@ func splitIntoChunks(patterns []string, argMax int) ([][]string, error) { func callDriverOnChunks(driver driver, cfg *Config, chunks [][]string) (*DriverResponse, error) { if len(chunks) == 0 { - return driver(cfg) + return driver(cfg, nil) } responses := make([]*DriverResponse, len(chunks)) errNotHandled := errors.New("driver returned NotHandled") var g errgroup.Group for i, chunk := range chunks { - i := i - chunk := chunk g.Go(func() (err error) { - responses[i], err = driver(cfg, chunk...) + responses[i], err = driver(cfg, chunk) if responses[i] != nil && responses[i].NotHandled { err = errNotHandled } @@ -435,6 +437,12 @@ type Package struct { // PkgPath is the package path as used by the go/types package. PkgPath string + // Dir is the directory associated with the package, if it exists. + // + // For packages listed by the go command, this is the directory containing + // the package files. + Dir string + // Errors contains any errors encountered querying the metadata // of the package, or while parsing or type-checking its files. Errors []Error @@ -474,6 +482,10 @@ type Package struct { // information for the package as provided by the build system. ExportFile string + // Target is the absolute install path of the .a file, for libraries, + // and of the executable file, for binaries. + Target string + // Imports maps import paths appearing in the package's Go source files // to corresponding loaded Packages. Imports map[string]*Package @@ -522,8 +534,8 @@ type Package struct { // -- internal -- - // forTest is the package under test, if any. - forTest string + // ForTest is the package under test, if any. + ForTest string // depsErrors is the DepsErrors field from the go list response, if any. depsErrors []*packagesinternal.PackageError @@ -552,9 +564,6 @@ type ModuleError struct { } func init() { - packagesinternal.GetForTest = func(p interface{}) string { - return p.(*Package).forTest - } packagesinternal.GetDepsErrors = func(p interface{}) []*packagesinternal.PackageError { return p.(*Package).depsErrors } @@ -566,7 +575,6 @@ func init() { } packagesinternal.TypecheckCgo = int(typecheckCgo) packagesinternal.DepsErrors = int(needInternalDepsErrors) - packagesinternal.ForTest = int(needInternalForTest) } // An Error describes a problem with a package's metadata, syntax, or types. @@ -682,18 +690,19 @@ func (p *Package) String() string { return p.ID } // loaderPackage augments Package with state used during the loading phase type loaderPackage struct { *Package - importErrors map[string]error // maps each bad import to its error - loadOnce sync.Once - color uint8 // for cycle detection - needsrc bool // load from source (Mode >= LoadTypes) - needtypes bool // type information is either requested or depended on - initial bool // package was matched by a pattern - goVersion int // minor version number of go command on PATH + importErrors map[string]error // maps each bad import to its error + preds []*loaderPackage // packages that import this one + unfinishedSuccs atomic.Int32 // number of direct imports not yet loaded + color uint8 // for cycle detection + needsrc bool // load from source (Mode >= LoadTypes) + needtypes bool // type information is either requested or depended on + initial bool // package was matched by a pattern + goVersion int // minor version number of go command on PATH } // loader holds the working state of a single call to load. type loader struct { - pkgs map[string]*loaderPackage + pkgs map[string]*loaderPackage // keyed by Package.ID Config sizes types.Sizes // non-nil if needed by mode parseCache map[string]*parseValue @@ -739,9 +748,6 @@ func newLoader(cfg *Config) *loader { if ld.Config.Env == nil { ld.Config.Env = os.Environ() } - if ld.Config.gocmdRunner == nil { - ld.Config.gocmdRunner = &gocommand.Runner{} - } if ld.Context == nil { ld.Context = context.Background() } @@ -755,7 +761,7 @@ func newLoader(cfg *Config) *loader { ld.requestedMode = ld.Mode ld.Mode = impliedLoadMode(ld.Mode) - if ld.Mode&NeedTypes != 0 || ld.Mode&NeedSyntax != 0 { + if ld.Mode&(NeedSyntax|NeedTypes|NeedTypesInfo) != 0 { if ld.Fset == nil { ld.Fset = token.NewFileSet() } @@ -764,6 +770,7 @@ func newLoader(cfg *Config) *loader { // because we load source if export data is missing. if ld.ParseFile == nil { ld.ParseFile = func(fset *token.FileSet, filename string, src []byte) (*ast.File, error) { + // We implicitly promise to keep doing ast.Object resolution. :( const mode = parser.AllErrors | parser.ParseComments return parser.ParseFile(fset, filename, src, mode) } @@ -795,7 +802,7 @@ func (ld *loader) refine(response *DriverResponse) ([]*Package, error) { exportDataInvalid := len(ld.Overlay) > 0 || pkg.ExportFile == "" && pkg.PkgPath != "unsafe" // This package needs type information if the caller requested types and the package is // either a root, or it's a non-root and the user requested dependencies ... - needtypes := (ld.Mode&NeedTypes|NeedTypesInfo != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0)) + needtypes := (ld.Mode&(NeedTypes|NeedTypesInfo) != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0)) // This package needs source if the call requested source (or types info, which implies source) // and the package is either a root, or itas a non- root and the user requested dependencies... needsrc := ((ld.Mode&(NeedSyntax|NeedTypesInfo) != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0)) || @@ -820,9 +827,10 @@ func (ld *loader) refine(response *DriverResponse) ([]*Package, error) { } } - if ld.Mode&NeedImports != 0 { - // Materialize the import graph. - + // Materialize the import graph if it is needed (NeedImports), + // or if we'll be using loadPackages (Need{Syntax|Types|TypesInfo}). + var leaves []*loaderPackage // packages with no unfinished successors + if ld.Mode&(NeedImports|NeedSyntax|NeedTypes|NeedTypesInfo) != 0 { const ( white = 0 // new grey = 1 // in progress @@ -841,63 +849,76 @@ func (ld *loader) refine(response *DriverResponse) ([]*Package, error) { // dependency on a package that does. These are the only packages // for which we load source code. var stack []*loaderPackage - var visit func(lpkg *loaderPackage) bool - visit = func(lpkg *loaderPackage) bool { - switch lpkg.color { - case black: - return lpkg.needsrc - case grey: + var visit func(from, lpkg *loaderPackage) bool + visit = func(from, lpkg *loaderPackage) bool { + if lpkg.color == grey { panic("internal error: grey node") } - lpkg.color = grey - stack = append(stack, lpkg) // push - stubs := lpkg.Imports // the structure form has only stubs with the ID in the Imports - lpkg.Imports = make(map[string]*Package, len(stubs)) - for importPath, ipkg := range stubs { - var importErr error - imp := ld.pkgs[ipkg.ID] - if imp == nil { - // (includes package "C" when DisableCgo) - importErr = fmt.Errorf("missing package: %q", ipkg.ID) - } else if imp.color == grey { - importErr = fmt.Errorf("import cycle: %s", stack) + if lpkg.color == white { + lpkg.color = grey + stack = append(stack, lpkg) // push + stubs := lpkg.Imports // the structure form has only stubs with the ID in the Imports + lpkg.Imports = make(map[string]*Package, len(stubs)) + for importPath, ipkg := range stubs { + var importErr error + imp := ld.pkgs[ipkg.ID] + if imp == nil { + // (includes package "C" when DisableCgo) + importErr = fmt.Errorf("missing package: %q", ipkg.ID) + } else if imp.color == grey { + importErr = fmt.Errorf("import cycle: %s", stack) + } + if importErr != nil { + if lpkg.importErrors == nil { + lpkg.importErrors = make(map[string]error) + } + lpkg.importErrors[importPath] = importErr + continue + } + + if visit(lpkg, imp) { + lpkg.needsrc = true + } + lpkg.Imports[importPath] = imp.Package } - if importErr != nil { - if lpkg.importErrors == nil { - lpkg.importErrors = make(map[string]error) + + // -- postorder -- + + // Complete type information is required for the + // immediate dependencies of each source package. + if lpkg.needsrc && ld.Mode&NeedTypes != 0 { + for _, ipkg := range lpkg.Imports { + ld.pkgs[ipkg.ID].needtypes = true } - lpkg.importErrors[importPath] = importErr - continue } - if visit(imp) { - lpkg.needsrc = true + // NeedTypeSizes causes TypeSizes to be set even + // on packages for which types aren't needed. + if ld.Mode&NeedTypesSizes != 0 { + lpkg.TypesSizes = ld.sizes } - lpkg.Imports[importPath] = imp.Package - } - // Complete type information is required for the - // immediate dependencies of each source package. - if lpkg.needsrc && ld.Mode&NeedTypes != 0 { - for _, ipkg := range lpkg.Imports { - ld.pkgs[ipkg.ID].needtypes = true + // Add packages with no imports directly to the queue of leaves. + if len(lpkg.Imports) == 0 { + leaves = append(leaves, lpkg) } + + stack = stack[:len(stack)-1] // pop + lpkg.color = black } - // NeedTypeSizes causes TypeSizes to be set even - // on packages for which types aren't needed. - if ld.Mode&NeedTypesSizes != 0 { - lpkg.TypesSizes = ld.sizes + // Add edge from predecessor. + if from != nil { + from.unfinishedSuccs.Add(+1) // incref + lpkg.preds = append(lpkg.preds, from) } - stack = stack[:len(stack)-1] // pop - lpkg.color = black return lpkg.needsrc } // For each initial package, create its import DAG. for _, lpkg := range initial { - visit(lpkg) + visit(nil, lpkg) } } else { @@ -910,16 +931,45 @@ func (ld *loader) refine(response *DriverResponse) ([]*Package, error) { // Load type data and syntax if needed, starting at // the initial packages (roots of the import DAG). - if ld.Mode&NeedTypes != 0 || ld.Mode&NeedSyntax != 0 { - var wg sync.WaitGroup - for _, lpkg := range initial { - wg.Add(1) - go func(lpkg *loaderPackage) { - ld.loadRecursive(lpkg) - wg.Done() - }(lpkg) + if ld.Mode&(NeedSyntax|NeedTypes|NeedTypesInfo) != 0 { + + // We avoid using g.SetLimit to limit concurrency as + // it makes g.Go stop accepting work, which prevents + // workers from enqeuing, and thus finishing, and thus + // allowing the group to make progress: deadlock. + // + // Instead we use the ioLimit and cpuLimit semaphores. + g, _ := errgroup.WithContext(ld.Context) + + // enqueues adds a package to the type-checking queue. + // It must have no unfinished successors. + var enqueue func(*loaderPackage) + enqueue = func(lpkg *loaderPackage) { + g.Go(func() error { + // Parse and type-check. + ld.loadPackage(lpkg) + + // Notify each waiting predecessor, + // and enqueue it when it becomes a leaf. + for _, pred := range lpkg.preds { + if pred.unfinishedSuccs.Add(-1) == 0 { // decref + enqueue(pred) + } + } + + return nil + }) + } + + // Load leaves first, adding new packages + // to the queue as they become leaves. + for _, leaf := range leaves { + enqueue(leaf) + } + + if err := g.Wait(); err != nil { + return nil, err // cancelled } - wg.Wait() } // If the context is done, return its error and @@ -961,12 +1011,14 @@ func (ld *loader) refine(response *DriverResponse) ([]*Package, error) { } if ld.requestedMode&NeedTypes == 0 { ld.pkgs[i].Types = nil - ld.pkgs[i].Fset = nil ld.pkgs[i].IllTyped = false } if ld.requestedMode&NeedSyntax == 0 { ld.pkgs[i].Syntax = nil } + if ld.requestedMode&(NeedSyntax|NeedTypes|NeedTypesInfo) == 0 { + ld.pkgs[i].Fset = nil + } if ld.requestedMode&NeedTypesInfo == 0 { ld.pkgs[i].TypesInfo = nil } @@ -981,31 +1033,10 @@ func (ld *loader) refine(response *DriverResponse) ([]*Package, error) { return result, nil } -// loadRecursive loads the specified package and its dependencies, -// recursively, in parallel, in topological order. -// It is atomic and idempotent. -// Precondition: ld.Mode&NeedTypes. -func (ld *loader) loadRecursive(lpkg *loaderPackage) { - lpkg.loadOnce.Do(func() { - // Load the direct dependencies, in parallel. - var wg sync.WaitGroup - for _, ipkg := range lpkg.Imports { - imp := ld.pkgs[ipkg.ID] - wg.Add(1) - go func(imp *loaderPackage) { - ld.loadRecursive(imp) - wg.Done() - }(imp) - } - wg.Wait() - ld.loadPackage(lpkg) - }) -} - -// loadPackage loads the specified package. +// loadPackage loads/parses/typechecks the specified package. // It must be called only once per Package, // after immediate dependencies are loaded. -// Precondition: ld.Mode & NeedTypes. +// Precondition: ld.Mode&(NeedSyntax|NeedTypes|NeedTypesInfo) != 0. func (ld *loader) loadPackage(lpkg *loaderPackage) { if lpkg.PkgPath == "unsafe" { // Fill in the blanks to avoid surprises. @@ -1041,6 +1072,10 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { if !lpkg.needtypes && !lpkg.needsrc { return } + + // TODO(adonovan): this condition looks wrong: + // I think it should be lpkg.needtypes && !lpg.needsrc, + // so that NeedSyntax without NeedTypes can be satisfied by export data. if !lpkg.needsrc { if err := ld.loadFromExportData(lpkg); err != nil { lpkg.Errors = append(lpkg.Errors, Error{ @@ -1146,7 +1181,7 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { } lpkg.Syntax = files - if ld.Config.Mode&NeedTypes == 0 { + if ld.Config.Mode&(NeedTypes|NeedTypesInfo) == 0 { return } @@ -1157,16 +1192,20 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { return } - lpkg.TypesInfo = &types.Info{ - Types: make(map[ast.Expr]types.TypeAndValue), - Defs: make(map[*ast.Ident]types.Object), - Uses: make(map[*ast.Ident]types.Object), - Implicits: make(map[ast.Node]types.Object), - Instances: make(map[*ast.Ident]types.Instance), - Scopes: make(map[ast.Node]*types.Scope), - Selections: make(map[*ast.SelectorExpr]*types.Selection), + // Populate TypesInfo only if needed, as it + // causes the type checker to work much harder. + if ld.Config.Mode&NeedTypesInfo != 0 { + lpkg.TypesInfo = &types.Info{ + Types: make(map[ast.Expr]types.TypeAndValue), + Defs: make(map[*ast.Ident]types.Object), + Uses: make(map[*ast.Ident]types.Object), + Implicits: make(map[ast.Node]types.Object), + Instances: make(map[*ast.Ident]types.Instance), + Scopes: make(map[ast.Node]*types.Scope), + Selections: make(map[*ast.SelectorExpr]*types.Selection), + FileVersions: make(map[*ast.File]string), + } } - versions.InitFileVersions(lpkg.TypesInfo) lpkg.TypesSizes = ld.sizes importer := importerFunc(func(path string) (*types.Package, error) { @@ -1219,6 +1258,10 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { } } + // Type-checking is CPU intensive. + cpuLimit <- unit{} // acquire a token + defer func() { <-cpuLimit }() // release a token + typErr := types.NewChecker(tc, ld.Fset, lpkg.Types, lpkg.TypesInfo).Files(lpkg.Syntax) lpkg.importErrors = nil // no longer needed @@ -1283,8 +1326,11 @@ type importerFunc func(path string) (*types.Package, error) func (f importerFunc) Import(path string) (*types.Package, error) { return f(path) } // We use a counting semaphore to limit -// the number of parallel I/O calls per process. -var ioLimit = make(chan bool, 20) +// the number of parallel I/O calls or CPU threads per process. +var ( + ioLimit = make(chan unit, 20) + cpuLimit = make(chan unit, runtime.GOMAXPROCS(0)) +) func (ld *loader) parseFile(filename string) (*ast.File, error) { ld.parseCacheMu.Lock() @@ -1301,20 +1347,28 @@ func (ld *loader) parseFile(filename string) (*ast.File, error) { var src []byte for f, contents := range ld.Config.Overlay { + // TODO(adonovan): Inefficient for large overlays. + // Do an exact name-based map lookup + // (for nonexistent files) followed by a + // FileID-based map lookup (for existing ones). if sameFile(f, filename) { src = contents + break } } var err error if src == nil { - ioLimit <- true // wait + ioLimit <- unit{} // acquire a token src, err = os.ReadFile(filename) - <-ioLimit // signal + <-ioLimit // release a token } if err != nil { v.err = err } else { + // Parsing is CPU intensive. + cpuLimit <- unit{} // acquire a token v.f, v.err = ld.ParseFile(ld.Fset, filename, src) + <-cpuLimit // release a token } close(v.ready) @@ -1329,18 +1383,21 @@ func (ld *loader) parseFile(filename string) (*ast.File, error) { // Because files are scanned in parallel, the token.Pos // positions of the resulting ast.Files are not ordered. func (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) { - var wg sync.WaitGroup - n := len(filenames) - parsed := make([]*ast.File, n) - errors := make([]error, n) - for i, file := range filenames { - wg.Add(1) - go func(i int, filename string) { + var ( + n = len(filenames) + parsed = make([]*ast.File, n) + errors = make([]error, n) + ) + var g errgroup.Group + for i, filename := range filenames { + // This creates goroutines unnecessarily in the + // cache-hit case, but that case is uncommon. + g.Go(func() error { parsed[i], errors[i] = ld.parseFile(filename) - wg.Done() - }(i, file) + return nil + }) } - wg.Wait() + g.Wait() // Eliminate nils, preserving order. var o int @@ -1499,6 +1556,10 @@ func impliedLoadMode(loadMode LoadMode) LoadMode { // All these things require knowing the import graph. loadMode |= NeedImports } + if loadMode&NeedTypes != 0 { + // Types require the GoVersion from Module. + loadMode |= NeedModule + } return loadMode } @@ -1507,4 +1568,4 @@ func usesExportData(cfg *Config) bool { return cfg.Mode&NeedExportFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0 } -var _ interface{} = io.Discard // assert build toolchain is go1.16 or later +type unit struct{} diff --git a/vendor/golang.org/x/tools/go/packages/visit.go b/vendor/golang.org/x/tools/go/packages/visit.go index a1dcc40b7270..df14ffd94dc3 100644 --- a/vendor/golang.org/x/tools/go/packages/visit.go +++ b/vendor/golang.org/x/tools/go/packages/visit.go @@ -49,11 +49,20 @@ func Visit(pkgs []*Package, pre func(*Package) bool, post func(*Package)) { // PrintErrors returns the number of errors printed. func PrintErrors(pkgs []*Package) int { var n int + errModules := make(map[*Module]bool) Visit(pkgs, nil, func(pkg *Package) { for _, err := range pkg.Errors { fmt.Fprintln(os.Stderr, err) n++ } + + // Print pkg.Module.Error once if present. + mod := pkg.Module + if mod != nil && mod.Error != nil && !errModules[mod] { + errModules[mod] = true + fmt.Fprintln(os.Stderr, mod.Error.Err) + n++ + } }) return n } diff --git a/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go b/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go index d648c3d071b0..16ed3c1780ba 100644 --- a/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go +++ b/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go @@ -51,7 +51,7 @@ type Path string // // PO package->object Package.Scope.Lookup // OT object->type Object.Type -// TT type->type Type.{Elem,Key,{,{,Recv}Type}Params,Results,Underlying} [EKPRUTrC] +// TT type->type Type.{Elem,Key,{,{,Recv}Type}Params,Results,Underlying,Rhs} [EKPRUTrCa] // TO type->object Type.{At,Field,Method,Obj} [AFMO] // // All valid paths start with a package and end at an object @@ -63,7 +63,7 @@ type Path string // - The only PO operator is Package.Scope.Lookup, which requires an identifier. // - The only OT operator is Object.Type, // which we encode as '.' because dot cannot appear in an identifier. -// - The TT operators are encoded as [EKPRUTrC]; +// - The TT operators are encoded as [EKPRUTrCa]; // two of these ({,Recv}TypeParams) require an integer operand, // which is encoded as a string of decimal digits. // - The TO operators are encoded as [AFMO]; @@ -106,6 +106,7 @@ const ( opTypeParam = 'T' // .TypeParams.At(i) (Named, Signature) opRecvTypeParam = 'r' // .RecvTypeParams.At(i) (Signature) opConstraint = 'C' // .Constraint() (TypeParam) + opRhs = 'a' // .Rhs() (Alias) // type->object operators opAt = 'A' // .At(i) (Tuple) @@ -227,7 +228,7 @@ func (enc *Encoder) For(obj types.Object) (Path, error) { // Reject obviously non-viable cases. switch obj := obj.(type) { case *types.TypeName: - if _, ok := aliases.Unalias(obj.Type()).(*types.TypeParam); !ok { + if _, ok := types.Unalias(obj.Type()).(*types.TypeParam); !ok { // With the exception of type parameters, only package-level type names // have a path. return "", fmt.Errorf("no path for %v", obj) @@ -279,21 +280,26 @@ func (enc *Encoder) For(obj types.Object) (Path, error) { path = append(path, opType) T := o.Type() - - if tname.IsAlias() { - // type alias - if r := find(obj, T, path, nil); r != nil { + if alias, ok := T.(*types.Alias); ok { + if r := findTypeParam(obj, aliases.TypeParams(alias), path, opTypeParam); r != nil { return Path(r), nil } - } else { - if named, _ := T.(*types.Named); named != nil { - if r := findTypeParam(obj, named.TypeParams(), path, opTypeParam, nil); r != nil { - // generic named type - return Path(r), nil - } + if r := find(obj, aliases.Rhs(alias), append(path, opRhs)); r != nil { + return Path(r), nil + } + + } else if tname.IsAlias() { + // legacy alias + if r := find(obj, T, path); r != nil { + return Path(r), nil } + + } else if named, ok := T.(*types.Named); ok { // defined (named) type - if r := find(obj, T.Underlying(), append(path, opUnderlying), nil); r != nil { + if r := findTypeParam(obj, named.TypeParams(), path, opTypeParam); r != nil { + return Path(r), nil + } + if r := find(obj, named.Underlying(), append(path, opUnderlying)); r != nil { return Path(r), nil } } @@ -306,7 +312,7 @@ func (enc *Encoder) For(obj types.Object) (Path, error) { if _, ok := o.(*types.TypeName); !ok { if o.Exported() { // exported non-type (const, var, func) - if r := find(obj, o.Type(), append(path, opType), nil); r != nil { + if r := find(obj, o.Type(), append(path, opType)); r != nil { return Path(r), nil } } @@ -314,7 +320,7 @@ func (enc *Encoder) For(obj types.Object) (Path, error) { } // Inspect declared methods of defined types. - if T, ok := aliases.Unalias(o.Type()).(*types.Named); ok { + if T, ok := types.Unalias(o.Type()).(*types.Named); ok { path = append(path, opType) // The method index here is always with respect // to the underlying go/types data structures, @@ -326,7 +332,7 @@ func (enc *Encoder) For(obj types.Object) (Path, error) { if m == obj { return Path(path2), nil // found declared method } - if r := find(obj, m.Type(), append(path2, opType), nil); r != nil { + if r := find(obj, m.Type(), append(path2, opType)); r != nil { return Path(r), nil } } @@ -441,46 +447,64 @@ func (enc *Encoder) concreteMethod(meth *types.Func) (Path, bool) { // // The seen map is used to short circuit cycles through type parameters. If // nil, it will be allocated as necessary. -func find(obj types.Object, T types.Type, path []byte, seen map[*types.TypeName]bool) []byte { +// +// The seenMethods map is used internally to short circuit cycles through +// interface methods, such as occur in the following example: +// +// type I interface { f() interface{I} } +// +// See golang/go#68046 for details. +func find(obj types.Object, T types.Type, path []byte) []byte { + return (&finder{obj: obj}).find(T, path) +} + +// finder closes over search state for a call to find. +type finder struct { + obj types.Object // the sought object + seenTParamNames map[*types.TypeName]bool // for cycle breaking through type parameters + seenMethods map[*types.Func]bool // for cycle breaking through recursive interfaces +} + +func (f *finder) find(T types.Type, path []byte) []byte { switch T := T.(type) { - case *aliases.Alias: - return find(obj, aliases.Unalias(T), path, seen) + case *types.Alias: + return f.find(types.Unalias(T), path) case *types.Basic, *types.Named: // Named types belonging to pkg were handled already, // so T must belong to another package. No path. return nil case *types.Pointer: - return find(obj, T.Elem(), append(path, opElem), seen) + return f.find(T.Elem(), append(path, opElem)) case *types.Slice: - return find(obj, T.Elem(), append(path, opElem), seen) + return f.find(T.Elem(), append(path, opElem)) case *types.Array: - return find(obj, T.Elem(), append(path, opElem), seen) + return f.find(T.Elem(), append(path, opElem)) case *types.Chan: - return find(obj, T.Elem(), append(path, opElem), seen) + return f.find(T.Elem(), append(path, opElem)) case *types.Map: - if r := find(obj, T.Key(), append(path, opKey), seen); r != nil { + if r := f.find(T.Key(), append(path, opKey)); r != nil { return r } - return find(obj, T.Elem(), append(path, opElem), seen) + return f.find(T.Elem(), append(path, opElem)) case *types.Signature: - if r := findTypeParam(obj, T.RecvTypeParams(), path, opRecvTypeParam, nil); r != nil { + if r := f.findTypeParam(T.RecvTypeParams(), path, opRecvTypeParam); r != nil { return r } - if r := findTypeParam(obj, T.TypeParams(), path, opTypeParam, seen); r != nil { + if r := f.findTypeParam(T.TypeParams(), path, opTypeParam); r != nil { return r } - if r := find(obj, T.Params(), append(path, opParams), seen); r != nil { + if r := f.find(T.Params(), append(path, opParams)); r != nil { return r } - return find(obj, T.Results(), append(path, opResults), seen) + return f.find(T.Results(), append(path, opResults)) case *types.Struct: for i := 0; i < T.NumFields(); i++ { fld := T.Field(i) path2 := appendOpArg(path, opField, i) - if fld == obj { + if fld == f.obj { return path2 // found field var } - if r := find(obj, fld.Type(), append(path2, opType), seen); r != nil { + if r := f.find(fld.Type(), append(path2, opType)); r != nil { return r } } @@ -489,10 +513,10 @@ func find(obj types.Object, T types.Type, path []byte, seen map[*types.TypeName] for i := 0; i < T.Len(); i++ { v := T.At(i) path2 := appendOpArg(path, opAt, i) - if v == obj { + if v == f.obj { return path2 // found param/result var } - if r := find(obj, v.Type(), append(path2, opType), seen); r != nil { + if r := f.find(v.Type(), append(path2, opType)); r != nil { return r } } @@ -500,28 +524,35 @@ func find(obj types.Object, T types.Type, path []byte, seen map[*types.TypeName] case *types.Interface: for i := 0; i < T.NumMethods(); i++ { m := T.Method(i) + if f.seenMethods[m] { + return nil + } path2 := appendOpArg(path, opMethod, i) - if m == obj { + if m == f.obj { return path2 // found interface method } - if r := find(obj, m.Type(), append(path2, opType), seen); r != nil { + if f.seenMethods == nil { + f.seenMethods = make(map[*types.Func]bool) + } + f.seenMethods[m] = true + if r := f.find(m.Type(), append(path2, opType)); r != nil { return r } } return nil case *types.TypeParam: name := T.Obj() - if name == obj { - return append(path, opObj) - } - if seen[name] { + if f.seenTParamNames[name] { return nil } - if seen == nil { - seen = make(map[*types.TypeName]bool) + if name == f.obj { + return append(path, opObj) + } + if f.seenTParamNames == nil { + f.seenTParamNames = make(map[*types.TypeName]bool) } - seen[name] = true - if r := find(obj, T.Constraint(), append(path, opConstraint), seen); r != nil { + f.seenTParamNames[name] = true + if r := f.find(T.Constraint(), append(path, opConstraint)); r != nil { return r } return nil @@ -529,11 +560,15 @@ func find(obj types.Object, T types.Type, path []byte, seen map[*types.TypeName] panic(T) } -func findTypeParam(obj types.Object, list *types.TypeParamList, path []byte, op byte, seen map[*types.TypeName]bool) []byte { +func findTypeParam(obj types.Object, list *types.TypeParamList, path []byte, op byte) []byte { + return (&finder{obj: obj}).findTypeParam(list, path, op) +} + +func (f *finder) findTypeParam(list *types.TypeParamList, path []byte, op byte) []byte { for i := 0; i < list.Len(); i++ { tparam := list.At(i) path2 := appendOpArg(path, op, i) - if r := find(obj, tparam, path2, seen); r != nil { + if r := f.find(tparam, path2); r != nil { return r } } @@ -620,7 +655,7 @@ func Object(pkg *types.Package, p Path) (types.Object, error) { // Inv: t != nil, obj == nil - t = aliases.Unalias(t) + t = types.Unalias(t) switch code { case opElem: hasElem, ok := t.(hasElem) // Pointer, Slice, Array, Chan, Map @@ -657,6 +692,16 @@ func Object(pkg *types.Package, p Path) (types.Object, error) { } t = named.Underlying() + case opRhs: + if alias, ok := t.(*types.Alias); ok { + t = aliases.Rhs(alias) + } else if false && aliases.Enabled() { + // The Enabled check is too expensive, so for now we + // simply assume that aliases are not enabled. + // TODO(adonovan): replace with "if true {" when go1.24 is assured. + return nil, fmt.Errorf("cannot apply %q to %s (got %T, want alias)", code, t, t) + } + case opTypeParam: hasTypeParams, ok := t.(hasTypeParams) // Named, Signature if !ok { diff --git a/vendor/golang.org/x/tools/go/types/typeutil/callee.go b/vendor/golang.org/x/tools/go/types/typeutil/callee.go new file mode 100644 index 000000000000..754380351e86 --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/callee.go @@ -0,0 +1,68 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package typeutil + +import ( + "go/ast" + "go/types" + + "golang.org/x/tools/internal/typeparams" +) + +// Callee returns the named target of a function call, if any: +// a function, method, builtin, or variable. +// +// Functions and methods may potentially have type parameters. +func Callee(info *types.Info, call *ast.CallExpr) types.Object { + fun := ast.Unparen(call.Fun) + + // Look through type instantiation if necessary. + isInstance := false + switch fun.(type) { + case *ast.IndexExpr, *ast.IndexListExpr: + // When extracting the callee from an *IndexExpr, we need to check that + // it is a *types.Func and not a *types.Var. + // Example: Don't match a slice m within the expression `m[0]()`. + isInstance = true + fun, _, _, _ = typeparams.UnpackIndexExpr(fun) + } + + var obj types.Object + switch fun := fun.(type) { + case *ast.Ident: + obj = info.Uses[fun] // type, var, builtin, or declared func + case *ast.SelectorExpr: + if sel, ok := info.Selections[fun]; ok { + obj = sel.Obj() // method or field + } else { + obj = info.Uses[fun.Sel] // qualified identifier? + } + } + if _, ok := obj.(*types.TypeName); ok { + return nil // T(x) is a conversion, not a call + } + // A Func is required to match instantiations. + if _, ok := obj.(*types.Func); isInstance && !ok { + return nil // Was not a Func. + } + return obj +} + +// StaticCallee returns the target (function or method) of a static function +// call, if any. It returns nil for calls to builtins. +// +// Note: for calls of instantiated functions and methods, StaticCallee returns +// the corresponding generic function or method on the generic type. +func StaticCallee(info *types.Info, call *ast.CallExpr) *types.Func { + if f, ok := Callee(info, call).(*types.Func); ok && !interfaceMethod(f) { + return f + } + return nil +} + +func interfaceMethod(f *types.Func) bool { + recv := f.Type().(*types.Signature).Recv() + return recv != nil && types.IsInterface(recv.Type()) +} diff --git a/vendor/golang.org/x/tools/go/types/typeutil/imports.go b/vendor/golang.org/x/tools/go/types/typeutil/imports.go new file mode 100644 index 000000000000..b81ce0c330f3 --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/imports.go @@ -0,0 +1,30 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package typeutil + +import "go/types" + +// Dependencies returns all dependencies of the specified packages. +// +// Dependent packages appear in topological order: if package P imports +// package Q, Q appears earlier than P in the result. +// The algorithm follows import statements in the order they +// appear in the source code, so the result is a total order. +func Dependencies(pkgs ...*types.Package) []*types.Package { + var result []*types.Package + seen := make(map[*types.Package]bool) + var visit func(pkgs []*types.Package) + visit = func(pkgs []*types.Package) { + for _, p := range pkgs { + if !seen[p] { + seen[p] = true + visit(p.Imports()) + result = append(result, p) + } + } + } + visit(pkgs) + return result +} diff --git a/vendor/golang.org/x/tools/go/types/typeutil/map.go b/vendor/golang.org/x/tools/go/types/typeutil/map.go new file mode 100644 index 000000000000..93b3090c687e --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/map.go @@ -0,0 +1,467 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package typeutil defines various utilities for types, such as [Map], +// a hash table that maps [types.Type] to any value. +package typeutil + +import ( + "bytes" + "fmt" + "go/types" + "hash/maphash" + "unsafe" + + "golang.org/x/tools/internal/typeparams" +) + +// Map is a hash-table-based mapping from types (types.Type) to +// arbitrary values. The concrete types that implement +// the Type interface are pointers. Since they are not canonicalized, +// == cannot be used to check for equivalence, and thus we cannot +// simply use a Go map. +// +// Just as with map[K]V, a nil *Map is a valid empty map. +// +// Read-only map operations ([Map.At], [Map.Len], and so on) may +// safely be called concurrently. +// +// TODO(adonovan): deprecate in favor of https://go.dev/issues/69420 +// and 69559, if the latter proposals for a generic hash-map type and +// a types.Hash function are accepted. +type Map struct { + table map[uint32][]entry // maps hash to bucket; entry.key==nil means unused + length int // number of map entries +} + +// entry is an entry (key/value association) in a hash bucket. +type entry struct { + key types.Type + value any +} + +// SetHasher has no effect. +// +// It is a relic of an optimization that is no longer profitable. Do +// not use [Hasher], [MakeHasher], or [SetHasher] in new code. +func (m *Map) SetHasher(Hasher) {} + +// Delete removes the entry with the given key, if any. +// It returns true if the entry was found. +func (m *Map) Delete(key types.Type) bool { + if m != nil && m.table != nil { + hash := hash(key) + bucket := m.table[hash] + for i, e := range bucket { + if e.key != nil && types.Identical(key, e.key) { + // We can't compact the bucket as it + // would disturb iterators. + bucket[i] = entry{} + m.length-- + return true + } + } + } + return false +} + +// At returns the map entry for the given key. +// The result is nil if the entry is not present. +func (m *Map) At(key types.Type) any { + if m != nil && m.table != nil { + for _, e := range m.table[hash(key)] { + if e.key != nil && types.Identical(key, e.key) { + return e.value + } + } + } + return nil +} + +// Set sets the map entry for key to val, +// and returns the previous entry, if any. +func (m *Map) Set(key types.Type, value any) (prev any) { + if m.table != nil { + hash := hash(key) + bucket := m.table[hash] + var hole *entry + for i, e := range bucket { + if e.key == nil { + hole = &bucket[i] + } else if types.Identical(key, e.key) { + prev = e.value + bucket[i].value = value + return + } + } + + if hole != nil { + *hole = entry{key, value} // overwrite deleted entry + } else { + m.table[hash] = append(bucket, entry{key, value}) + } + } else { + hash := hash(key) + m.table = map[uint32][]entry{hash: {entry{key, value}}} + } + + m.length++ + return +} + +// Len returns the number of map entries. +func (m *Map) Len() int { + if m != nil { + return m.length + } + return 0 +} + +// Iterate calls function f on each entry in the map in unspecified order. +// +// If f should mutate the map, Iterate provides the same guarantees as +// Go maps: if f deletes a map entry that Iterate has not yet reached, +// f will not be invoked for it, but if f inserts a map entry that +// Iterate has not yet reached, whether or not f will be invoked for +// it is unspecified. +func (m *Map) Iterate(f func(key types.Type, value any)) { + if m != nil { + for _, bucket := range m.table { + for _, e := range bucket { + if e.key != nil { + f(e.key, e.value) + } + } + } + } +} + +// Keys returns a new slice containing the set of map keys. +// The order is unspecified. +func (m *Map) Keys() []types.Type { + keys := make([]types.Type, 0, m.Len()) + m.Iterate(func(key types.Type, _ any) { + keys = append(keys, key) + }) + return keys +} + +func (m *Map) toString(values bool) string { + if m == nil { + return "{}" + } + var buf bytes.Buffer + fmt.Fprint(&buf, "{") + sep := "" + m.Iterate(func(key types.Type, value any) { + fmt.Fprint(&buf, sep) + sep = ", " + fmt.Fprint(&buf, key) + if values { + fmt.Fprintf(&buf, ": %q", value) + } + }) + fmt.Fprint(&buf, "}") + return buf.String() +} + +// String returns a string representation of the map's entries. +// Values are printed using fmt.Sprintf("%v", v). +// Order is unspecified. +func (m *Map) String() string { + return m.toString(true) +} + +// KeysString returns a string representation of the map's key set. +// Order is unspecified. +func (m *Map) KeysString() string { + return m.toString(false) +} + +// -- Hasher -- + +// hash returns the hash of type t. +// TODO(adonovan): replace by types.Hash when Go proposal #69420 is accepted. +func hash(t types.Type) uint32 { + return theHasher.Hash(t) +} + +// A Hasher provides a [Hasher.Hash] method to map a type to its hash value. +// Hashers are stateless, and all are equivalent. +type Hasher struct{} + +var theHasher Hasher + +// MakeHasher returns Hasher{}. +// Hashers are stateless; all are equivalent. +func MakeHasher() Hasher { return theHasher } + +// Hash computes a hash value for the given type t such that +// Identical(t, t') => Hash(t) == Hash(t'). +func (h Hasher) Hash(t types.Type) uint32 { + return hasher{inGenericSig: false}.hash(t) +} + +// hasher holds the state of a single Hash traversal: whether we are +// inside the signature of a generic function; this is used to +// optimize [hasher.hashTypeParam]. +type hasher struct{ inGenericSig bool } + +// hashString computes the Fowler–Noll–Vo hash of s. +func hashString(s string) uint32 { + var h uint32 + for i := 0; i < len(s); i++ { + h ^= uint32(s[i]) + h *= 16777619 + } + return h +} + +// hash computes the hash of t. +func (h hasher) hash(t types.Type) uint32 { + // See Identical for rationale. + switch t := t.(type) { + case *types.Basic: + return uint32(t.Kind()) + + case *types.Alias: + return h.hash(types.Unalias(t)) + + case *types.Array: + return 9043 + 2*uint32(t.Len()) + 3*h.hash(t.Elem()) + + case *types.Slice: + return 9049 + 2*h.hash(t.Elem()) + + case *types.Struct: + var hash uint32 = 9059 + for i, n := 0, t.NumFields(); i < n; i++ { + f := t.Field(i) + if f.Anonymous() { + hash += 8861 + } + hash += hashString(t.Tag(i)) + hash += hashString(f.Name()) // (ignore f.Pkg) + hash += h.hash(f.Type()) + } + return hash + + case *types.Pointer: + return 9067 + 2*h.hash(t.Elem()) + + case *types.Signature: + var hash uint32 = 9091 + if t.Variadic() { + hash *= 8863 + } + + tparams := t.TypeParams() + for i := range tparams.Len() { + h.inGenericSig = true + tparam := tparams.At(i) + hash += 7 * h.hash(tparam.Constraint()) + } + + return hash + 3*h.hashTuple(t.Params()) + 5*h.hashTuple(t.Results()) + + case *types.Union: + return h.hashUnion(t) + + case *types.Interface: + // Interfaces are identical if they have the same set of methods, with + // identical names and types, and they have the same set of type + // restrictions. See go/types.identical for more details. + var hash uint32 = 9103 + + // Hash methods. + for i, n := 0, t.NumMethods(); i < n; i++ { + // Method order is not significant. + // Ignore m.Pkg(). + m := t.Method(i) + // Use shallow hash on method signature to + // avoid anonymous interface cycles. + hash += 3*hashString(m.Name()) + 5*h.shallowHash(m.Type()) + } + + // Hash type restrictions. + terms, err := typeparams.InterfaceTermSet(t) + // if err != nil t has invalid type restrictions. + if err == nil { + hash += h.hashTermSet(terms) + } + + return hash + + case *types.Map: + return 9109 + 2*h.hash(t.Key()) + 3*h.hash(t.Elem()) + + case *types.Chan: + return 9127 + 2*uint32(t.Dir()) + 3*h.hash(t.Elem()) + + case *types.Named: + hash := h.hashTypeName(t.Obj()) + targs := t.TypeArgs() + for i := 0; i < targs.Len(); i++ { + targ := targs.At(i) + hash += 2 * h.hash(targ) + } + return hash + + case *types.TypeParam: + return h.hashTypeParam(t) + + case *types.Tuple: + return h.hashTuple(t) + } + + panic(fmt.Sprintf("%T: %v", t, t)) +} + +func (h hasher) hashTuple(tuple *types.Tuple) uint32 { + // See go/types.identicalTypes for rationale. + n := tuple.Len() + hash := 9137 + 2*uint32(n) + for i := range n { + hash += 3 * h.hash(tuple.At(i).Type()) + } + return hash +} + +func (h hasher) hashUnion(t *types.Union) uint32 { + // Hash type restrictions. + terms, err := typeparams.UnionTermSet(t) + // if err != nil t has invalid type restrictions. Fall back on a non-zero + // hash. + if err != nil { + return 9151 + } + return h.hashTermSet(terms) +} + +func (h hasher) hashTermSet(terms []*types.Term) uint32 { + hash := 9157 + 2*uint32(len(terms)) + for _, term := range terms { + // term order is not significant. + termHash := h.hash(term.Type()) + if term.Tilde() { + termHash *= 9161 + } + hash += 3 * termHash + } + return hash +} + +// hashTypeParam returns the hash of a type parameter. +func (h hasher) hashTypeParam(t *types.TypeParam) uint32 { + // Within the signature of a generic function, TypeParams are + // identical if they have the same index and constraint, so we + // hash them based on index. + // + // When we are outside a generic function, free TypeParams are + // identical iff they are the same object, so we can use a + // more discriminating hash consistent with object identity. + // This optimization saves [Map] about 4% when hashing all the + // types.Info.Types in the forward closure of net/http. + if !h.inGenericSig { + // Optimization: outside a generic function signature, + // use a more discrimating hash consistent with object identity. + return h.hashTypeName(t.Obj()) + } + return 9173 + 3*uint32(t.Index()) +} + +var theSeed = maphash.MakeSeed() + +// hashTypeName hashes the pointer of tname. +func (hasher) hashTypeName(tname *types.TypeName) uint32 { + // Since types.Identical uses == to compare TypeNames, + // the Hash function uses maphash.Comparable. + // TODO(adonovan): or will, when it becomes available in go1.24. + // In the meantime we use the pointer's numeric value. + // + // hash := maphash.Comparable(theSeed, tname) + // + // (Another approach would be to hash the name and package + // path, and whether or not it is a package-level typename. It + // is rare for a package to define multiple local types with + // the same name.) + hash := uintptr(unsafe.Pointer(tname)) + return uint32(hash ^ (hash >> 32)) +} + +// shallowHash computes a hash of t without looking at any of its +// element Types, to avoid potential anonymous cycles in the types of +// interface methods. +// +// When an unnamed non-empty interface type appears anywhere among the +// arguments or results of an interface method, there is a potential +// for endless recursion. Consider: +// +// type X interface { m() []*interface { X } } +// +// The problem is that the Methods of the interface in m's result type +// include m itself; there is no mention of the named type X that +// might help us break the cycle. +// (See comment in go/types.identical, case *Interface, for more.) +func (h hasher) shallowHash(t types.Type) uint32 { + // t is the type of an interface method (Signature), + // its params or results (Tuples), or their immediate + // elements (mostly Slice, Pointer, Basic, Named), + // so there's no need to optimize anything else. + switch t := t.(type) { + case *types.Alias: + return h.shallowHash(types.Unalias(t)) + + case *types.Signature: + var hash uint32 = 604171 + if t.Variadic() { + hash *= 971767 + } + // The Signature/Tuple recursion is always finite + // and invariably shallow. + return hash + 1062599*h.shallowHash(t.Params()) + 1282529*h.shallowHash(t.Results()) + + case *types.Tuple: + n := t.Len() + hash := 9137 + 2*uint32(n) + for i := range n { + hash += 53471161 * h.shallowHash(t.At(i).Type()) + } + return hash + + case *types.Basic: + return 45212177 * uint32(t.Kind()) + + case *types.Array: + return 1524181 + 2*uint32(t.Len()) + + case *types.Slice: + return 2690201 + + case *types.Struct: + return 3326489 + + case *types.Pointer: + return 4393139 + + case *types.Union: + return 562448657 + + case *types.Interface: + return 2124679 // no recursion here + + case *types.Map: + return 9109 + + case *types.Chan: + return 9127 + + case *types.Named: + return h.hashTypeName(t.Obj()) + + case *types.TypeParam: + return h.hashTypeParam(t) + } + panic(fmt.Sprintf("shallowHash: %T: %v", t, t)) +} diff --git a/vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go b/vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go new file mode 100644 index 000000000000..f7666028fe5d --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go @@ -0,0 +1,71 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This file implements a cache of method sets. + +package typeutil + +import ( + "go/types" + "sync" +) + +// A MethodSetCache records the method set of each type T for which +// MethodSet(T) is called so that repeat queries are fast. +// The zero value is a ready-to-use cache instance. +type MethodSetCache struct { + mu sync.Mutex + named map[*types.Named]struct{ value, pointer *types.MethodSet } // method sets for named N and *N + others map[types.Type]*types.MethodSet // all other types +} + +// MethodSet returns the method set of type T. It is thread-safe. +// +// If cache is nil, this function is equivalent to types.NewMethodSet(T). +// Utility functions can thus expose an optional *MethodSetCache +// parameter to clients that care about performance. +func (cache *MethodSetCache) MethodSet(T types.Type) *types.MethodSet { + if cache == nil { + return types.NewMethodSet(T) + } + cache.mu.Lock() + defer cache.mu.Unlock() + + switch T := types.Unalias(T).(type) { + case *types.Named: + return cache.lookupNamed(T).value + + case *types.Pointer: + if N, ok := types.Unalias(T.Elem()).(*types.Named); ok { + return cache.lookupNamed(N).pointer + } + } + + // all other types + // (The map uses pointer equivalence, not type identity.) + mset := cache.others[T] + if mset == nil { + mset = types.NewMethodSet(T) + if cache.others == nil { + cache.others = make(map[types.Type]*types.MethodSet) + } + cache.others[T] = mset + } + return mset +} + +func (cache *MethodSetCache) lookupNamed(named *types.Named) struct{ value, pointer *types.MethodSet } { + if cache.named == nil { + cache.named = make(map[*types.Named]struct{ value, pointer *types.MethodSet }) + } + // Avoid recomputing mset(*T) for each distinct Pointer + // instance whose underlying type is a named type. + msets, ok := cache.named[named] + if !ok { + msets.value = types.NewMethodSet(named) + msets.pointer = types.NewMethodSet(types.NewPointer(named)) + cache.named[named] = msets + } + return msets +} diff --git a/vendor/golang.org/x/tools/go/types/typeutil/ui.go b/vendor/golang.org/x/tools/go/types/typeutil/ui.go new file mode 100644 index 000000000000..9dda6a25df79 --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/ui.go @@ -0,0 +1,53 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package typeutil + +// This file defines utilities for user interfaces that display types. + +import ( + "go/types" +) + +// IntuitiveMethodSet returns the intuitive method set of a type T, +// which is the set of methods you can call on an addressable value of +// that type. +// +// The result always contains MethodSet(T), and is exactly MethodSet(T) +// for interface types and for pointer-to-concrete types. +// For all other concrete types T, the result additionally +// contains each method belonging to *T if there is no identically +// named method on T itself. +// +// This corresponds to user intuition about method sets; +// this function is intended only for user interfaces. +// +// The order of the result is as for types.MethodSet(T). +func IntuitiveMethodSet(T types.Type, msets *MethodSetCache) []*types.Selection { + isPointerToConcrete := func(T types.Type) bool { + ptr, ok := types.Unalias(T).(*types.Pointer) + return ok && !types.IsInterface(ptr.Elem()) + } + + var result []*types.Selection + mset := msets.MethodSet(T) + if types.IsInterface(T) || isPointerToConcrete(T) { + for i, n := 0, mset.Len(); i < n; i++ { + result = append(result, mset.At(i)) + } + } else { + // T is some other concrete type. + // Report methods of T and *T, preferring those of T. + pmset := msets.MethodSet(types.NewPointer(T)) + for i, n := 0, pmset.Len(); i < n; i++ { + meth := pmset.At(i) + if m := mset.Lookup(meth.Obj().Pkg(), meth.Obj().Name()); m != nil { + meth = m + } + result = append(result, meth) + } + + } + return result +} diff --git a/vendor/golang.org/x/tools/internal/aliases/aliases.go b/vendor/golang.org/x/tools/internal/aliases/aliases.go index c24c2eee457f..b9425f5a2099 100644 --- a/vendor/golang.org/x/tools/internal/aliases/aliases.go +++ b/vendor/golang.org/x/tools/internal/aliases/aliases.go @@ -22,11 +22,17 @@ import ( // GODEBUG=gotypesalias=... by invoking the type checker. The Enabled // function is expensive and should be called once per task (e.g. // package import), not once per call to NewAlias. -func NewAlias(enabled bool, pos token.Pos, pkg *types.Package, name string, rhs types.Type) *types.TypeName { +// +// Precondition: enabled || len(tparams)==0. +// If materialized aliases are disabled, there must not be any type parameters. +func NewAlias(enabled bool, pos token.Pos, pkg *types.Package, name string, rhs types.Type, tparams []*types.TypeParam) *types.TypeName { if enabled { tname := types.NewTypeName(pos, pkg, name, nil) - newAlias(tname, rhs) + SetTypeParams(types.NewAlias(tname, rhs), tparams) return tname } + if len(tparams) > 0 { + panic("cannot create an alias with type parameters when gotypesalias is not enabled") + } return types.NewTypeName(pos, pkg, name, rhs) } diff --git a/vendor/golang.org/x/tools/internal/aliases/aliases_go121.go b/vendor/golang.org/x/tools/internal/aliases/aliases_go121.go deleted file mode 100644 index c027b9f315f6..000000000000 --- a/vendor/golang.org/x/tools/internal/aliases/aliases_go121.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2024 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.22 -// +build !go1.22 - -package aliases - -import ( - "go/types" -) - -// Alias is a placeholder for a go/types.Alias for <=1.21. -// It will never be created by go/types. -type Alias struct{} - -func (*Alias) String() string { panic("unreachable") } -func (*Alias) Underlying() types.Type { panic("unreachable") } -func (*Alias) Obj() *types.TypeName { panic("unreachable") } -func Rhs(alias *Alias) types.Type { panic("unreachable") } - -// Unalias returns the type t for go <=1.21. -func Unalias(t types.Type) types.Type { return t } - -func newAlias(name *types.TypeName, rhs types.Type) *Alias { panic("unreachable") } - -// Enabled reports whether [NewAlias] should create [types.Alias] types. -// -// Before go1.22, this function always returns false. -func Enabled() bool { return false } diff --git a/vendor/golang.org/x/tools/internal/aliases/aliases_go122.go b/vendor/golang.org/x/tools/internal/aliases/aliases_go122.go index b32995484190..7716a3331db8 100644 --- a/vendor/golang.org/x/tools/internal/aliases/aliases_go122.go +++ b/vendor/golang.org/x/tools/internal/aliases/aliases_go122.go @@ -2,9 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build go1.22 -// +build go1.22 - package aliases import ( @@ -14,31 +11,51 @@ import ( "go/types" ) -// Alias is an alias of types.Alias. -type Alias = types.Alias - // Rhs returns the type on the right-hand side of the alias declaration. -func Rhs(alias *Alias) types.Type { +func Rhs(alias *types.Alias) types.Type { if alias, ok := any(alias).(interface{ Rhs() types.Type }); ok { return alias.Rhs() // go1.23+ } // go1.22's Alias didn't have the Rhs method, // so Unalias is the best we can do. - return Unalias(alias) + return types.Unalias(alias) +} + +// TypeParams returns the type parameter list of the alias. +func TypeParams(alias *types.Alias) *types.TypeParamList { + if alias, ok := any(alias).(interface{ TypeParams() *types.TypeParamList }); ok { + return alias.TypeParams() // go1.23+ + } + return nil +} + +// SetTypeParams sets the type parameters of the alias type. +func SetTypeParams(alias *types.Alias, tparams []*types.TypeParam) { + if alias, ok := any(alias).(interface { + SetTypeParams(tparams []*types.TypeParam) + }); ok { + alias.SetTypeParams(tparams) // go1.23+ + } else if len(tparams) > 0 { + panic("cannot set type parameters of an Alias type in go1.22") + } +} + +// TypeArgs returns the type arguments used to instantiate the Alias type. +func TypeArgs(alias *types.Alias) *types.TypeList { + if alias, ok := any(alias).(interface{ TypeArgs() *types.TypeList }); ok { + return alias.TypeArgs() // go1.23+ + } + return nil // empty (go1.22) } -// Unalias is a wrapper of types.Unalias. -func Unalias(t types.Type) types.Type { return types.Unalias(t) } - -// newAlias is an internal alias around types.NewAlias. -// Direct usage is discouraged as the moment. -// Try to use NewAlias instead. -func newAlias(tname *types.TypeName, rhs types.Type) *Alias { - a := types.NewAlias(tname, rhs) - // TODO(go.dev/issue/65455): Remove kludgy workaround to set a.actual as a side-effect. - Unalias(a) - return a +// Origin returns the generic Alias type of which alias is an instance. +// If alias is not an instance of a generic alias, Origin returns alias. +func Origin(alias *types.Alias) *types.Alias { + if alias, ok := any(alias).(interface{ Origin() *types.Alias }); ok { + return alias.Origin() // go1.23+ + } + return alias // not an instance of a generic alias (go1.22) } // Enabled reports whether [NewAlias] should create [types.Alias] types. @@ -56,7 +73,7 @@ func Enabled() bool { // many tests. Therefore any attempt to cache the result // is just incorrect. fset := token.NewFileSet() - f, _ := parser.ParseFile(fset, "a.go", "package p; type A = int", 0) + f, _ := parser.ParseFile(fset, "a.go", "package p; type A = int", parser.SkipObjectResolution) pkg, _ := new(types.Config).Check("p", fset, []*ast.File{f}, nil) _, enabled := pkg.Scope().Lookup("A").Type().(*types.Alias) return enabled diff --git a/vendor/golang.org/x/tools/internal/gcimporter/bimport.go b/vendor/golang.org/x/tools/internal/gcimporter/bimport.go index d98b0db2a9a9..d79a605ed13f 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/bimport.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/bimport.go @@ -87,64 +87,3 @@ func chanDir(d int) types.ChanDir { return 0 } } - -var predeclOnce sync.Once -var predecl []types.Type // initialized lazily - -func predeclared() []types.Type { - predeclOnce.Do(func() { - // initialize lazily to be sure that all - // elements have been initialized before - predecl = []types.Type{ // basic types - types.Typ[types.Bool], - types.Typ[types.Int], - types.Typ[types.Int8], - types.Typ[types.Int16], - types.Typ[types.Int32], - types.Typ[types.Int64], - types.Typ[types.Uint], - types.Typ[types.Uint8], - types.Typ[types.Uint16], - types.Typ[types.Uint32], - types.Typ[types.Uint64], - types.Typ[types.Uintptr], - types.Typ[types.Float32], - types.Typ[types.Float64], - types.Typ[types.Complex64], - types.Typ[types.Complex128], - types.Typ[types.String], - - // basic type aliases - types.Universe.Lookup("byte").Type(), - types.Universe.Lookup("rune").Type(), - - // error - types.Universe.Lookup("error").Type(), - - // untyped types - types.Typ[types.UntypedBool], - types.Typ[types.UntypedInt], - types.Typ[types.UntypedRune], - types.Typ[types.UntypedFloat], - types.Typ[types.UntypedComplex], - types.Typ[types.UntypedString], - types.Typ[types.UntypedNil], - - // package unsafe - types.Typ[types.UnsafePointer], - - // invalid type - types.Typ[types.Invalid], // only appears in packages with errors - - // used internally by gc; never used by this package or in .a files - anyType{}, - } - predecl = append(predecl, additionalPredeclared()...) - }) - return predecl -} - -type anyType struct{} - -func (t anyType) Underlying() types.Type { return t } -func (t anyType) String() string { return "any" } diff --git a/vendor/golang.org/x/tools/internal/gcimporter/exportdata.go b/vendor/golang.org/x/tools/internal/gcimporter/exportdata.go index f6437feb1cfd..5662a311dace 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/exportdata.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/exportdata.go @@ -2,49 +2,183 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// This file is a copy of $GOROOT/src/go/internal/gcimporter/exportdata.go. - -// This file implements FindExportData. +// This file should be kept in sync with $GOROOT/src/internal/exportdata/exportdata.go. +// This file also additionally implements FindExportData for gcexportdata.NewReader. package gcimporter import ( "bufio" + "bytes" + "errors" "fmt" + "go/build" "io" - "strconv" + "os" + "os/exec" + "path/filepath" "strings" + "sync" ) -func readGopackHeader(r *bufio.Reader) (name string, size int64, err error) { - // See $GOROOT/include/ar.h. - hdr := make([]byte, 16+12+6+6+8+10+2) - _, err = io.ReadFull(r, hdr) +// FindExportData positions the reader r at the beginning of the +// export data section of an underlying cmd/compile created archive +// file by reading from it. The reader must be positioned at the +// start of the file before calling this function. +// This returns the length of the export data in bytes. +// +// This function is needed by [gcexportdata.Read], which must +// accept inputs produced by the last two releases of cmd/compile, +// plus tip. +func FindExportData(r *bufio.Reader) (size int64, err error) { + arsize, err := FindPackageDefinition(r) + if err != nil { + return + } + size = int64(arsize) + + objapi, headers, err := ReadObjectHeaders(r) if err != nil { return } - // leave for debugging - if false { - fmt.Printf("header: %s", hdr) + size -= int64(len(objapi)) + for _, h := range headers { + size -= int64(len(h)) + } + + // Check for the binary export data section header "$$B\n". + // TODO(taking): Unify with ReadExportDataHeader so that it stops at the 'u' instead of reading + line, err := r.ReadSlice('\n') + if err != nil { + return + } + hdr := string(line) + if hdr != "$$B\n" { + err = fmt.Errorf("unknown export data header: %q", hdr) + return } - s := strings.TrimSpace(string(hdr[16+12+6+6+8:][:10])) - length, err := strconv.Atoi(s) - size = int64(length) - if err != nil || hdr[len(hdr)-2] != '`' || hdr[len(hdr)-1] != '\n' { - err = fmt.Errorf("invalid archive header") + size -= int64(len(hdr)) + + // For files with a binary export data header "$$B\n", + // these are always terminated by an end-of-section marker "\n$$\n". + // So the last bytes must always be this constant. + // + // The end-of-section marker is not a part of the export data itself. + // Do not include these in size. + // + // It would be nice to have sanity check that the final bytes after + // the export data are indeed the end-of-section marker. The split + // of gcexportdata.NewReader and gcexportdata.Read make checking this + // ugly so gcimporter gives up enforcing this. The compiler and go/types + // importer do enforce this, which seems good enough. + const endofsection = "\n$$\n" + size -= int64(len(endofsection)) + + if size < 0 { + err = fmt.Errorf("invalid size (%d) in the archive file: %d bytes remain without section headers (recompile package)", arsize, size) return } - name = strings.TrimSpace(string(hdr[:16])) + return } -// FindExportData positions the reader r at the beginning of the -// export data section of an underlying GC-created object/archive -// file by reading from it. The reader must be positioned at the -// start of the file before calling this function. The hdr result -// is the string before the export data, either "$$" or "$$B". -// The size result is the length of the export data in bytes, or -1 if not known. -func FindExportData(r *bufio.Reader) (hdr string, size int64, err error) { +// ReadUnified reads the contents of the unified export data from a reader r +// that contains the contents of a GC-created archive file. +// +// On success, the reader will be positioned after the end-of-section marker "\n$$\n". +// +// Supported GC-created archive files have 4 layers of nesting: +// - An archive file containing a package definition file. +// - The package definition file contains headers followed by a data section. +// Headers are lines (≤ 4kb) that do not start with "$$". +// - The data section starts with "$$B\n" followed by export data followed +// by an end of section marker "\n$$\n". (The section start "$$\n" is no +// longer supported.) +// - The export data starts with a format byte ('u') followed by the in +// the given format. (See ReadExportDataHeader for older formats.) +// +// Putting this together, the bytes in a GC-created archive files are expected +// to look like the following. +// See cmd/internal/archive for more details on ar file headers. +// +// | \n | ar file signature +// | __.PKGDEF...size...\n | ar header for __.PKGDEF including size. +// | go object <...>\n | objabi header +// | \n | other headers such as build id +// | $$B\n | binary format marker +// | u\n | unified export +// | $$\n | end-of-section marker +// | [optional padding] | padding byte (0x0A) if size is odd +// | [ar file header] | other ar files +// | [ar file data] | +func ReadUnified(r *bufio.Reader) (data []byte, err error) { + // We historically guaranteed headers at the default buffer size (4096) work. + // This ensures we can use ReadSlice throughout. + const minBufferSize = 4096 + r = bufio.NewReaderSize(r, minBufferSize) + + size, err := FindPackageDefinition(r) + if err != nil { + return + } + n := size + + objapi, headers, err := ReadObjectHeaders(r) + if err != nil { + return + } + n -= len(objapi) + for _, h := range headers { + n -= len(h) + } + + hdrlen, err := ReadExportDataHeader(r) + if err != nil { + return + } + n -= hdrlen + + // size also includes the end of section marker. Remove that many bytes from the end. + const marker = "\n$$\n" + n -= len(marker) + + if n < 0 { + err = fmt.Errorf("invalid size (%d) in the archive file: %d bytes remain without section headers (recompile package)", size, n) + return + } + + // Read n bytes from buf. + data = make([]byte, n) + _, err = io.ReadFull(r, data) + if err != nil { + return + } + + // Check for marker at the end. + var suffix [len(marker)]byte + _, err = io.ReadFull(r, suffix[:]) + if err != nil { + return + } + if s := string(suffix[:]); s != marker { + err = fmt.Errorf("read %q instead of end-of-section marker (%q)", s, marker) + return + } + + return +} + +// FindPackageDefinition positions the reader r at the beginning of a package +// definition file ("__.PKGDEF") within a GC-created archive by reading +// from it, and returns the size of the package definition file in the archive. +// +// The reader must be positioned at the start of the archive file before calling +// this function, and "__.PKGDEF" is assumed to be the first file in the archive. +// +// See cmd/internal/archive for details on the archive format. +func FindPackageDefinition(r *bufio.Reader) (size int, err error) { + // Uses ReadSlice to limit risk of malformed inputs. + // Read first line to make sure this is an object file. line, err := r.ReadSlice('\n') if err != nil { @@ -52,48 +186,236 @@ func FindExportData(r *bufio.Reader) (hdr string, size int64, err error) { return } - if string(line) == "!\n" { - // Archive file. Scan to __.PKGDEF. - var name string - if name, size, err = readGopackHeader(r); err != nil { - return - } + // Is the first line an archive file signature? + if string(line) != "!\n" { + err = fmt.Errorf("not the start of an archive file (%q)", line) + return + } + + // package export block should be first + size = readArchiveHeader(r, "__.PKGDEF") + if size <= 0 { + err = fmt.Errorf("not a package file") + return + } + + return +} - // First entry should be __.PKGDEF. - if name != "__.PKGDEF" { - err = fmt.Errorf("go archive is missing __.PKGDEF") +// ReadObjectHeaders reads object headers from the reader. Object headers are +// lines that do not start with an end-of-section marker "$$". The first header +// is the objabi header. On success, the reader will be positioned at the beginning +// of the end-of-section marker. +// +// It returns an error if any header does not fit in r.Size() bytes. +func ReadObjectHeaders(r *bufio.Reader) (objapi string, headers []string, err error) { + // line is a temporary buffer for headers. + // Use bounded reads (ReadSlice, Peek) to limit risk of malformed inputs. + var line []byte + + // objapi header should be the first line + if line, err = r.ReadSlice('\n'); err != nil { + err = fmt.Errorf("can't find export data (%v)", err) + return + } + objapi = string(line) + + // objapi header begins with "go object ". + if !strings.HasPrefix(objapi, "go object ") { + err = fmt.Errorf("not a go object file: %s", objapi) + return + } + + // process remaining object header lines + for { + // check for an end of section marker "$$" + line, err = r.Peek(2) + if err != nil { return } + if string(line) == "$$" { + return // stop + } - // Read first line of __.PKGDEF data, so that line - // is once again the first line of the input. - if line, err = r.ReadSlice('\n'); err != nil { - err = fmt.Errorf("can't find export data (%v)", err) + // read next header + line, err = r.ReadSlice('\n') + if err != nil { return } - size -= int64(len(line)) + headers = append(headers, string(line)) } +} - // Now at __.PKGDEF in archive or still at beginning of file. - // Either way, line should begin with "go object ". - if !strings.HasPrefix(string(line), "go object ") { - err = fmt.Errorf("not a Go object file") +// ReadExportDataHeader reads the export data header and format from r. +// It returns the number of bytes read, or an error if the format is no longer +// supported or it failed to read. +// +// The only currently supported format is binary export data in the +// unified export format. +func ReadExportDataHeader(r *bufio.Reader) (n int, err error) { + // Read export data header. + line, err := r.ReadSlice('\n') + if err != nil { return } - // Skip over object header to export data. - // Begins after first line starting with $$. - for line[0] != '$' { - if line, err = r.ReadSlice('\n'); err != nil { - err = fmt.Errorf("can't find export data (%v)", err) + hdr := string(line) + switch hdr { + case "$$\n": + err = fmt.Errorf("old textual export format no longer supported (recompile package)") + return + + case "$$B\n": + var format byte + format, err = r.ReadByte() + if err != nil { return } - size -= int64(len(line)) - } - hdr = string(line) - if size < 0 { - size = -1 + // The unified export format starts with a 'u'. + switch format { + case 'u': + default: + // Older no longer supported export formats include: + // indexed export format which started with an 'i'; and + // the older binary export format which started with a 'c', + // 'd', or 'v' (from "version"). + err = fmt.Errorf("binary export format %q is no longer supported (recompile package)", format) + return + } + + default: + err = fmt.Errorf("unknown export data header: %q", hdr) + return } + n = len(hdr) + 1 // + 1 is for 'u' return } + +// FindPkg returns the filename and unique package id for an import +// path based on package information provided by build.Import (using +// the build.Default build.Context). A relative srcDir is interpreted +// relative to the current working directory. +// +// FindPkg is only used in tests within x/tools. +func FindPkg(path, srcDir string) (filename, id string, err error) { + // TODO(taking): Move internal/exportdata.FindPkg into its own file, + // and then this copy into a _test package. + if path == "" { + return "", "", errors.New("path is empty") + } + + var noext string + switch { + default: + // "x" -> "$GOPATH/pkg/$GOOS_$GOARCH/x.ext", "x" + // Don't require the source files to be present. + if abs, err := filepath.Abs(srcDir); err == nil { // see issue 14282 + srcDir = abs + } + var bp *build.Package + bp, err = build.Import(path, srcDir, build.FindOnly|build.AllowBinary) + if bp.PkgObj == "" { + if bp.Goroot && bp.Dir != "" { + filename, err = lookupGorootExport(bp.Dir) + if err == nil { + _, err = os.Stat(filename) + } + if err == nil { + return filename, bp.ImportPath, nil + } + } + goto notfound + } else { + noext = strings.TrimSuffix(bp.PkgObj, ".a") + } + id = bp.ImportPath + + case build.IsLocalImport(path): + // "./x" -> "/this/directory/x.ext", "/this/directory/x" + noext = filepath.Join(srcDir, path) + id = noext + + case filepath.IsAbs(path): + // for completeness only - go/build.Import + // does not support absolute imports + // "/x" -> "/x.ext", "/x" + noext = path + id = path + } + + if false { // for debugging + if path != id { + fmt.Printf("%s -> %s\n", path, id) + } + } + + // try extensions + for _, ext := range pkgExts { + filename = noext + ext + f, statErr := os.Stat(filename) + if statErr == nil && !f.IsDir() { + return filename, id, nil + } + if err == nil { + err = statErr + } + } + +notfound: + if err == nil { + return "", path, fmt.Errorf("can't find import: %q", path) + } + return "", path, fmt.Errorf("can't find import: %q: %w", path, err) +} + +var pkgExts = [...]string{".a", ".o"} // a file from the build cache will have no extension + +var exportMap sync.Map // package dir → func() (string, error) + +// lookupGorootExport returns the location of the export data +// (normally found in the build cache, but located in GOROOT/pkg +// in prior Go releases) for the package located in pkgDir. +// +// (We use the package's directory instead of its import path +// mainly to simplify handling of the packages in src/vendor +// and cmd/vendor.) +// +// lookupGorootExport is only used in tests within x/tools. +func lookupGorootExport(pkgDir string) (string, error) { + f, ok := exportMap.Load(pkgDir) + if !ok { + var ( + listOnce sync.Once + exportPath string + err error + ) + f, _ = exportMap.LoadOrStore(pkgDir, func() (string, error) { + listOnce.Do(func() { + cmd := exec.Command(filepath.Join(build.Default.GOROOT, "bin", "go"), "list", "-export", "-f", "{{.Export}}", pkgDir) + cmd.Dir = build.Default.GOROOT + cmd.Env = append(os.Environ(), "PWD="+cmd.Dir, "GOROOT="+build.Default.GOROOT) + var output []byte + output, err = cmd.Output() + if err != nil { + if ee, ok := err.(*exec.ExitError); ok && len(ee.Stderr) > 0 { + err = errors.New(string(ee.Stderr)) + } + return + } + + exports := strings.Split(string(bytes.TrimSpace(output)), "\n") + if len(exports) != 1 { + err = fmt.Errorf("go list reported %d exports; expected 1", len(exports)) + return + } + + exportPath = exports[0] + }) + + return exportPath, err + }) + } + + return f.(func() (string, error))() +} diff --git a/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go b/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go index 39df91124a46..3dbd21d1b900 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go @@ -23,17 +23,11 @@ package gcimporter // import "golang.org/x/tools/internal/gcimporter" import ( "bufio" - "bytes" "fmt" - "go/build" "go/token" "go/types" "io" "os" - "os/exec" - "path/filepath" - "strings" - "sync" ) const ( @@ -45,125 +39,14 @@ const ( trace = false ) -var exportMap sync.Map // package dir → func() (string, bool) - -// lookupGorootExport returns the location of the export data -// (normally found in the build cache, but located in GOROOT/pkg -// in prior Go releases) for the package located in pkgDir. -// -// (We use the package's directory instead of its import path -// mainly to simplify handling of the packages in src/vendor -// and cmd/vendor.) -func lookupGorootExport(pkgDir string) (string, bool) { - f, ok := exportMap.Load(pkgDir) - if !ok { - var ( - listOnce sync.Once - exportPath string - ) - f, _ = exportMap.LoadOrStore(pkgDir, func() (string, bool) { - listOnce.Do(func() { - cmd := exec.Command("go", "list", "-export", "-f", "{{.Export}}", pkgDir) - cmd.Dir = build.Default.GOROOT - var output []byte - output, err := cmd.Output() - if err != nil { - return - } - - exports := strings.Split(string(bytes.TrimSpace(output)), "\n") - if len(exports) != 1 { - return - } - - exportPath = exports[0] - }) - - return exportPath, exportPath != "" - }) - } - - return f.(func() (string, bool))() -} - -var pkgExts = [...]string{".a", ".o"} - -// FindPkg returns the filename and unique package id for an import -// path based on package information provided by build.Import (using -// the build.Default build.Context). A relative srcDir is interpreted -// relative to the current working directory. -// If no file was found, an empty filename is returned. -func FindPkg(path, srcDir string) (filename, id string) { - if path == "" { - return - } - - var noext string - switch { - default: - // "x" -> "$GOPATH/pkg/$GOOS_$GOARCH/x.ext", "x" - // Don't require the source files to be present. - if abs, err := filepath.Abs(srcDir); err == nil { // see issue 14282 - srcDir = abs - } - bp, _ := build.Import(path, srcDir, build.FindOnly|build.AllowBinary) - if bp.PkgObj == "" { - var ok bool - if bp.Goroot && bp.Dir != "" { - filename, ok = lookupGorootExport(bp.Dir) - } - if !ok { - id = path // make sure we have an id to print in error message - return - } - } else { - noext = strings.TrimSuffix(bp.PkgObj, ".a") - id = bp.ImportPath - } - - case build.IsLocalImport(path): - // "./x" -> "/this/directory/x.ext", "/this/directory/x" - noext = filepath.Join(srcDir, path) - id = noext - - case filepath.IsAbs(path): - // for completeness only - go/build.Import - // does not support absolute imports - // "/x" -> "/x.ext", "/x" - noext = path - id = path - } - - if false { // for debugging - if path != id { - fmt.Printf("%s -> %s\n", path, id) - } - } - - if filename != "" { - if f, err := os.Stat(filename); err == nil && !f.IsDir() { - return - } - } - - // try extensions - for _, ext := range pkgExts { - filename = noext + ext - if f, err := os.Stat(filename); err == nil && !f.IsDir() { - return - } - } - - filename = "" // not found - return -} - // Import imports a gc-generated package given its import path and srcDir, adds // the corresponding package object to the packages map, and returns the object. // The packages map must contain all packages already imported. -func Import(packages map[string]*types.Package, path, srcDir string, lookup func(path string) (io.ReadCloser, error)) (pkg *types.Package, err error) { +// +// Import is only used in tests. +func Import(fset *token.FileSet, packages map[string]*types.Package, path, srcDir string, lookup func(path string) (io.ReadCloser, error)) (pkg *types.Package, err error) { var rc io.ReadCloser - var filename, id string + var id string if lookup != nil { // With custom lookup specified, assume that caller has // converted path to a canonical import path for use in the map. @@ -182,12 +65,13 @@ func Import(packages map[string]*types.Package, path, srcDir string, lookup func } rc = f } else { - filename, id = FindPkg(path, srcDir) + var filename string + filename, id, err = FindPkg(path, srcDir) if filename == "" { if path == "unsafe" { return types.Unsafe, nil } - return nil, fmt.Errorf("can't find import: %q", id) + return nil, err } // no need to re-import if the package was imported completely before @@ -210,57 +94,15 @@ func Import(packages map[string]*types.Package, path, srcDir string, lookup func } defer rc.Close() - var hdr string - var size int64 buf := bufio.NewReader(rc) - if hdr, size, err = FindExportData(buf); err != nil { + data, err := ReadUnified(buf) + if err != nil { + err = fmt.Errorf("import %q: %v", path, err) return } - switch hdr { - case "$$B\n": - var data []byte - data, err = io.ReadAll(buf) - if err != nil { - break - } - - // TODO(gri): allow clients of go/importer to provide a FileSet. - // Or, define a new standard go/types/gcexportdata package. - fset := token.NewFileSet() - - // Select appropriate importer. - if len(data) > 0 { - switch data[0] { - case 'v', 'c', 'd': // binary, till go1.10 - return nil, fmt.Errorf("binary (%c) import format is no longer supported", data[0]) - - case 'i': // indexed, till go1.19 - _, pkg, err := IImportData(fset, packages, data[1:], id) - return pkg, err - - case 'u': // unified, from go1.20 - _, pkg, err := UImportData(fset, packages, data[1:size], id) - return pkg, err - - default: - l := len(data) - if l > 10 { - l = 10 - } - return nil, fmt.Errorf("unexpected export data with prefix %q for path %s", string(data[:l]), id) - } - } - - default: - err = fmt.Errorf("unknown export data header: %q", hdr) - } + // unified: emitted by cmd/compile since go1.20. + _, pkg, err = UImportData(fset, packages, data, id) return } - -type byPath []*types.Package - -func (a byPath) Len() int { return len(a) } -func (a byPath) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a byPath) Less(i, j int) bool { return a[i].Path() < a[j].Path() } diff --git a/vendor/golang.org/x/tools/internal/gcimporter/iexport.go b/vendor/golang.org/x/tools/internal/gcimporter/iexport.go index deeb67f315af..7dfc31a37d7c 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/iexport.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/iexport.go @@ -2,9 +2,227 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// Indexed binary package export. -// This file was derived from $GOROOT/src/cmd/compile/internal/gc/iexport.go; -// see that file for specification of the format. +// Indexed package export. +// +// The indexed export data format is an evolution of the previous +// binary export data format. Its chief contribution is introducing an +// index table, which allows efficient random access of individual +// declarations and inline function bodies. In turn, this allows +// avoiding unnecessary work for compilation units that import large +// packages. +// +// +// The top-level data format is structured as: +// +// Header struct { +// Tag byte // 'i' +// Version uvarint +// StringSize uvarint +// DataSize uvarint +// } +// +// Strings [StringSize]byte +// Data [DataSize]byte +// +// MainIndex []struct{ +// PkgPath stringOff +// PkgName stringOff +// PkgHeight uvarint +// +// Decls []struct{ +// Name stringOff +// Offset declOff +// } +// } +// +// Fingerprint [8]byte +// +// uvarint means a uint64 written out using uvarint encoding. +// +// []T means a uvarint followed by that many T objects. In other +// words: +// +// Len uvarint +// Elems [Len]T +// +// stringOff means a uvarint that indicates an offset within the +// Strings section. At that offset is another uvarint, followed by +// that many bytes, which form the string value. +// +// declOff means a uvarint that indicates an offset within the Data +// section where the associated declaration can be found. +// +// +// There are five kinds of declarations, distinguished by their first +// byte: +// +// type Var struct { +// Tag byte // 'V' +// Pos Pos +// Type typeOff +// } +// +// type Func struct { +// Tag byte // 'F' or 'G' +// Pos Pos +// TypeParams []typeOff // only present if Tag == 'G' +// Signature Signature +// } +// +// type Const struct { +// Tag byte // 'C' +// Pos Pos +// Value Value +// } +// +// type Type struct { +// Tag byte // 'T' or 'U' +// Pos Pos +// TypeParams []typeOff // only present if Tag == 'U' +// Underlying typeOff +// +// Methods []struct{ // omitted if Underlying is an interface type +// Pos Pos +// Name stringOff +// Recv Param +// Signature Signature +// } +// } +// +// type Alias struct { +// Tag byte // 'A' or 'B' +// Pos Pos +// TypeParams []typeOff // only present if Tag == 'B' +// Type typeOff +// } +// +// // "Automatic" declaration of each typeparam +// type TypeParam struct { +// Tag byte // 'P' +// Pos Pos +// Implicit bool +// Constraint typeOff +// } +// +// typeOff means a uvarint that either indicates a predeclared type, +// or an offset into the Data section. If the uvarint is less than +// predeclReserved, then it indicates the index into the predeclared +// types list (see predeclared in bexport.go for order). Otherwise, +// subtracting predeclReserved yields the offset of a type descriptor. +// +// Value means a type, kind, and type-specific value. See +// (*exportWriter).value for details. +// +// +// There are twelve kinds of type descriptors, distinguished by an itag: +// +// type DefinedType struct { +// Tag itag // definedType +// Name stringOff +// PkgPath stringOff +// } +// +// type PointerType struct { +// Tag itag // pointerType +// Elem typeOff +// } +// +// type SliceType struct { +// Tag itag // sliceType +// Elem typeOff +// } +// +// type ArrayType struct { +// Tag itag // arrayType +// Len uint64 +// Elem typeOff +// } +// +// type ChanType struct { +// Tag itag // chanType +// Dir uint64 // 1 RecvOnly; 2 SendOnly; 3 SendRecv +// Elem typeOff +// } +// +// type MapType struct { +// Tag itag // mapType +// Key typeOff +// Elem typeOff +// } +// +// type FuncType struct { +// Tag itag // signatureType +// PkgPath stringOff +// Signature Signature +// } +// +// type StructType struct { +// Tag itag // structType +// PkgPath stringOff +// Fields []struct { +// Pos Pos +// Name stringOff +// Type typeOff +// Embedded bool +// Note stringOff +// } +// } +// +// type InterfaceType struct { +// Tag itag // interfaceType +// PkgPath stringOff +// Embeddeds []struct { +// Pos Pos +// Type typeOff +// } +// Methods []struct { +// Pos Pos +// Name stringOff +// Signature Signature +// } +// } +// +// // Reference to a type param declaration +// type TypeParamType struct { +// Tag itag // typeParamType +// Name stringOff +// PkgPath stringOff +// } +// +// // Instantiation of a generic type (like List[T2] or List[int]) +// type InstanceType struct { +// Tag itag // instanceType +// Pos pos +// TypeArgs []typeOff +// BaseType typeOff +// } +// +// type UnionType struct { +// Tag itag // interfaceType +// Terms []struct { +// tilde bool +// Type typeOff +// } +// } +// +// +// +// type Signature struct { +// Params []Param +// Results []Param +// Variadic bool // omitted if Results is empty +// } +// +// type Param struct { +// Pos Pos +// Name stringOff +// Type typOff +// } +// +// +// Pos encodes a file:line:column triple, incorporating a simple delta +// encoding scheme within a data object. See exportWriter.pos for +// details. package gcimporter @@ -24,11 +242,30 @@ import ( "golang.org/x/tools/go/types/objectpath" "golang.org/x/tools/internal/aliases" - "golang.org/x/tools/internal/tokeninternal" ) // IExportShallow encodes "shallow" export data for the specified package. // +// For types, we use "shallow" export data. Historically, the Go +// compiler always produced a summary of the types for a given package +// that included types from other packages that it indirectly +// referenced: "deep" export data. This had the advantage that the +// compiler (and analogous tools such as gopls) need only load one +// file per direct import. However, it meant that the files tended to +// get larger based on the level of the package in the import +// graph. For example, higher-level packages in the kubernetes module +// have over 1MB of "deep" export data, even when they have almost no +// content of their own, merely because they mention a major type that +// references many others. In pathological cases the export data was +// 300x larger than the source for a package due to this quadratic +// growth. +// +// "Shallow" export data means that the serialized types describe only +// a single package. If those types mention types from other packages, +// the type checker may need to request additional packages beyond +// just the direct imports. Type information for the entire transitive +// closure of imports is provided (lazily) by the DAG. +// // No promises are made about the encoding other than that it can be decoded by // the same version of IIExportShallow. If you plan to save export data in the // file system, be sure to include a cryptographic digest of the executable in @@ -51,8 +288,8 @@ func IExportShallow(fset *token.FileSet, pkg *types.Package, reportf ReportFunc) } // IImportShallow decodes "shallow" types.Package data encoded by -// IExportShallow in the same executable. This function cannot import data from -// cmd/compile or gcexportdata.Write. +// [IExportShallow] in the same executable. This function cannot import data +// from cmd/compile or gcexportdata.Write. // // The importer calls getPackages to obtain package symbols for all // packages mentioned in the export data, including the one being @@ -223,7 +460,7 @@ func (p *iexporter) encodeFile(w *intWriter, file *token.File, needed []uint64) // Sort the set of needed offsets. Duplicates are harmless. sort.Slice(needed, func(i, j int) bool { return needed[i] < needed[j] }) - lines := tokeninternal.GetLines(file) // byte offset of each line start + lines := file.Lines() // byte offset of each line start w.uint64(uint64(len(lines))) // Rather than record the entire array of line start offsets, @@ -507,13 +744,13 @@ func (p *iexporter) doDecl(obj types.Object) { case *types.TypeName: t := obj.Type() - if tparam, ok := aliases.Unalias(t).(*types.TypeParam); ok { + if tparam, ok := types.Unalias(t).(*types.TypeParam); ok { w.tag(typeParamTag) w.pos(obj.Pos()) constraint := tparam.Constraint() if p.version >= iexportVersionGo1_18 { implicit := false - if iface, _ := aliases.Unalias(constraint).(*types.Interface); iface != nil { + if iface, _ := types.Unalias(constraint).(*types.Interface); iface != nil { implicit = iface.IsImplicit() } w.bool(implicit) @@ -523,9 +760,22 @@ func (p *iexporter) doDecl(obj types.Object) { } if obj.IsAlias() { - w.tag(aliasTag) + alias, materialized := t.(*types.Alias) // may fail when aliases are not enabled + + var tparams *types.TypeParamList + if materialized { + tparams = aliases.TypeParams(alias) + } + if tparams.Len() == 0 { + w.tag(aliasTag) + } else { + w.tag(genericAliasTag) + } w.pos(obj.Pos()) - if alias, ok := t.(*aliases.Alias); ok { + if tparams.Len() > 0 { + w.tparamList(obj.Name(), tparams, obj.Pkg()) + } + if materialized { // Preserve materialized aliases, // even of non-exported types. t = aliases.Rhs(alias) @@ -744,8 +994,14 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { }() } switch t := t.(type) { - case *aliases.Alias: - // TODO(adonovan): support parameterized aliases, following *types.Named. + case *types.Alias: + if targs := aliases.TypeArgs(t); targs.Len() > 0 { + w.startType(instanceType) + w.pos(t.Obj().Pos()) + w.typeList(targs, pkg) + w.typ(aliases.Origin(t), pkg) + return + } w.startType(aliasType) w.qualifiedType(t.Obj()) @@ -854,7 +1110,7 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { for i := 0; i < n; i++ { ft := t.EmbeddedType(i) tPkg := pkg - if named, _ := aliases.Unalias(ft).(*types.Named); named != nil { + if named, _ := types.Unalias(ft).(*types.Named); named != nil { w.pos(named.Obj().Pos()) } else { w.pos(token.NoPos) diff --git a/vendor/golang.org/x/tools/internal/gcimporter/iimport.go b/vendor/golang.org/x/tools/internal/gcimporter/iimport.go index 136aa03653cc..69b1d697cbed 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/iimport.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/iimport.go @@ -3,9 +3,7 @@ // license that can be found in the LICENSE file. // Indexed package import. -// See cmd/compile/internal/gc/iexport.go for the export data format. - -// This file is a copy of $GOROOT/src/go/internal/gcimporter/iimport.go. +// See iexport.go for the export data format. package gcimporter @@ -53,6 +51,7 @@ const ( iexportVersionPosCol = 1 iexportVersionGo1_18 = 2 iexportVersionGenerics = 2 + iexportVersion = iexportVersionGenerics iexportVersionCurrent = 2 ) @@ -540,7 +539,7 @@ func canReuse(def *types.Named, rhs types.Type) bool { if def == nil { return true } - iface, _ := aliases.Unalias(rhs).(*types.Interface) + iface, _ := types.Unalias(rhs).(*types.Interface) if iface == nil { return true } @@ -557,19 +556,28 @@ type importReader struct { prevColumn int64 } +// markBlack is redefined in iimport_go123.go, to work around golang/go#69912. +// +// If TypeNames are not marked black (in the sense of go/types cycle +// detection), they may be mutated when dot-imported. Fix this by punching a +// hole through the type, when compiling with Go 1.23. (The bug has been fixed +// for 1.24, but the fix was not worth back-porting). +var markBlack = func(name *types.TypeName) {} + func (r *importReader) obj(name string) { tag := r.byte() pos := r.pos() switch tag { - case aliasTag: + case aliasTag, genericAliasTag: + var tparams []*types.TypeParam + if tag == genericAliasTag { + tparams = r.tparamList() + } typ := r.typ() - // TODO(adonovan): support generic aliases: - // if tag == genericAliasTag { - // tparams := r.tparamList() - // alias.SetTypeParams(tparams) - // } - r.declare(aliases.NewAlias(r.p.aliases, pos, r.currPkg, name, typ)) + obj := aliases.NewAlias(r.p.aliases, pos, r.currPkg, name, typ, tparams) + markBlack(obj) // workaround for golang/go#69912 + r.declare(obj) case constTag: typ, val := r.value() @@ -589,6 +597,9 @@ func (r *importReader) obj(name string) { // declaration before recursing. obj := types.NewTypeName(pos, r.currPkg, name, nil) named := types.NewNamed(obj, nil, nil) + + markBlack(obj) // workaround for golang/go#69912 + // Declare obj before calling r.tparamList, so the new type name is recognized // if used in the constraint of one of its own typeparams (see #48280). r.declare(obj) @@ -615,7 +626,7 @@ func (r *importReader) obj(name string) { if targs.Len() > 0 { rparams = make([]*types.TypeParam, targs.Len()) for i := range rparams { - rparams[i] = aliases.Unalias(targs.At(i)).(*types.TypeParam) + rparams[i] = types.Unalias(targs.At(i)).(*types.TypeParam) } } msig := r.signature(recv, rparams, nil) @@ -645,7 +656,7 @@ func (r *importReader) obj(name string) { } constraint := r.typ() if implicit { - iface, _ := aliases.Unalias(constraint).(*types.Interface) + iface, _ := types.Unalias(constraint).(*types.Interface) if iface == nil { errorf("non-interface constraint marked implicit") } @@ -852,7 +863,7 @@ func (r *importReader) typ() types.Type { } func isInterface(t types.Type) bool { - _, ok := aliases.Unalias(t).(*types.Interface) + _, ok := types.Unalias(t).(*types.Interface) return ok } @@ -862,7 +873,7 @@ func (r *importReader) string() string { return r.p.stringAt(r.uint64()) } func (r *importReader) doType(base *types.Named) (res types.Type) { k := r.kind() if debug { - r.p.trace("importing type %d (base: %s)", k, base) + r.p.trace("importing type %d (base: %v)", k, base) r.p.indent++ defer func() { r.p.indent-- @@ -959,7 +970,7 @@ func (r *importReader) doType(base *types.Named) (res types.Type) { methods[i] = method } - typ := newInterface(methods, embeddeds) + typ := types.NewInterfaceType(methods, embeddeds) r.p.interfaceList = append(r.p.interfaceList, typ) return typ @@ -1051,7 +1062,7 @@ func (r *importReader) tparamList() []*types.TypeParam { for i := range xs { // Note: the standard library importer is tolerant of nil types here, // though would panic in SetTypeParams. - xs[i] = aliases.Unalias(r.typ()).(*types.TypeParam) + xs[i] = types.Unalias(r.typ()).(*types.TypeParam) } return xs } @@ -1098,3 +1109,9 @@ func (r *importReader) byte() byte { } return x } + +type byPath []*types.Package + +func (a byPath) Len() int { return len(a) } +func (a byPath) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a byPath) Less(i, j int) bool { return a[i].Path() < a[j].Path() } diff --git a/vendor/golang.org/x/tools/internal/gcimporter/iimport_go122.go b/vendor/golang.org/x/tools/internal/gcimporter/iimport_go122.go new file mode 100644 index 000000000000..7586bfaca603 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/gcimporter/iimport_go122.go @@ -0,0 +1,53 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.22 && !go1.24 + +package gcimporter + +import ( + "go/token" + "go/types" + "unsafe" +) + +// TODO(rfindley): delete this workaround once go1.24 is assured. + +func init() { + // Update markBlack so that it correctly sets the color + // of imported TypeNames. + // + // See the doc comment for markBlack for details. + + type color uint32 + const ( + white color = iota + black + grey + ) + type object struct { + _ *types.Scope + _ token.Pos + _ *types.Package + _ string + _ types.Type + _ uint32 + color_ color + _ token.Pos + } + type typeName struct { + object + } + + // If the size of types.TypeName changes, this will fail to compile. + const delta = int64(unsafe.Sizeof(typeName{})) - int64(unsafe.Sizeof(types.TypeName{})) + var _ [-delta * delta]int + + markBlack = func(obj *types.TypeName) { + type uP = unsafe.Pointer + var ptr *typeName + *(*uP)(uP(&ptr)) = uP(obj) + ptr.color_ = black + } +} diff --git a/vendor/golang.org/x/tools/internal/gcimporter/newInterface10.go b/vendor/golang.org/x/tools/internal/gcimporter/newInterface10.go deleted file mode 100644 index 8b163e3d058a..000000000000 --- a/vendor/golang.org/x/tools/internal/gcimporter/newInterface10.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.11 -// +build !go1.11 - -package gcimporter - -import "go/types" - -func newInterface(methods []*types.Func, embeddeds []types.Type) *types.Interface { - named := make([]*types.Named, len(embeddeds)) - for i, e := range embeddeds { - var ok bool - named[i], ok = e.(*types.Named) - if !ok { - panic("embedding of non-defined interfaces in interfaces is not supported before Go 1.11") - } - } - return types.NewInterface(methods, named) -} diff --git a/vendor/golang.org/x/tools/internal/gcimporter/newInterface11.go b/vendor/golang.org/x/tools/internal/gcimporter/newInterface11.go deleted file mode 100644 index 49984f40fd80..000000000000 --- a/vendor/golang.org/x/tools/internal/gcimporter/newInterface11.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.11 -// +build go1.11 - -package gcimporter - -import "go/types" - -func newInterface(methods []*types.Func, embeddeds []types.Type) *types.Interface { - return types.NewInterfaceType(methods, embeddeds) -} diff --git a/vendor/golang.org/x/tools/internal/gcimporter/predeclared.go b/vendor/golang.org/x/tools/internal/gcimporter/predeclared.go new file mode 100644 index 000000000000..907c8557a541 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/gcimporter/predeclared.go @@ -0,0 +1,91 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package gcimporter + +import ( + "go/types" + "sync" +) + +// predecl is a cache for the predeclared types in types.Universe. +// +// Cache a distinct result based on the runtime value of any. +// The pointer value of the any type varies based on GODEBUG settings. +var predeclMu sync.Mutex +var predecl map[types.Type][]types.Type + +func predeclared() []types.Type { + anyt := types.Universe.Lookup("any").Type() + + predeclMu.Lock() + defer predeclMu.Unlock() + + if pre, ok := predecl[anyt]; ok { + return pre + } + + if predecl == nil { + predecl = make(map[types.Type][]types.Type) + } + + decls := []types.Type{ // basic types + types.Typ[types.Bool], + types.Typ[types.Int], + types.Typ[types.Int8], + types.Typ[types.Int16], + types.Typ[types.Int32], + types.Typ[types.Int64], + types.Typ[types.Uint], + types.Typ[types.Uint8], + types.Typ[types.Uint16], + types.Typ[types.Uint32], + types.Typ[types.Uint64], + types.Typ[types.Uintptr], + types.Typ[types.Float32], + types.Typ[types.Float64], + types.Typ[types.Complex64], + types.Typ[types.Complex128], + types.Typ[types.String], + + // basic type aliases + types.Universe.Lookup("byte").Type(), + types.Universe.Lookup("rune").Type(), + + // error + types.Universe.Lookup("error").Type(), + + // untyped types + types.Typ[types.UntypedBool], + types.Typ[types.UntypedInt], + types.Typ[types.UntypedRune], + types.Typ[types.UntypedFloat], + types.Typ[types.UntypedComplex], + types.Typ[types.UntypedString], + types.Typ[types.UntypedNil], + + // package unsafe + types.Typ[types.UnsafePointer], + + // invalid type + types.Typ[types.Invalid], // only appears in packages with errors + + // used internally by gc; never used by this package or in .a files + anyType{}, + + // comparable + types.Universe.Lookup("comparable").Type(), + + // any + anyt, + } + + predecl[anyt] = decls + return decls +} + +type anyType struct{} + +func (t anyType) Underlying() types.Type { return t } +func (t anyType) String() string { return "any" } diff --git a/vendor/golang.org/x/tools/internal/gcimporter/support.go b/vendor/golang.org/x/tools/internal/gcimporter/support.go new file mode 100644 index 000000000000..4af810dc4125 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/gcimporter/support.go @@ -0,0 +1,30 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package gcimporter + +import ( + "bufio" + "io" + "strconv" + "strings" +) + +// Copy of $GOROOT/src/cmd/internal/archive.ReadHeader. +func readArchiveHeader(b *bufio.Reader, name string) int { + // architecture-independent object file output + const HeaderSize = 60 + + var buf [HeaderSize]byte + if _, err := io.ReadFull(b, buf[:]); err != nil { + return -1 + } + aname := strings.Trim(string(buf[0:16]), " ") + if !strings.HasPrefix(aname, name) { + return -1 + } + asize := strings.Trim(string(buf[48:58]), " ") + i, _ := strconv.Atoi(asize) + return i +} diff --git a/vendor/golang.org/x/tools/internal/gcimporter/support_go118.go b/vendor/golang.org/x/tools/internal/gcimporter/support_go118.go deleted file mode 100644 index 0cd3b91b65ad..000000000000 --- a/vendor/golang.org/x/tools/internal/gcimporter/support_go118.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package gcimporter - -import "go/types" - -const iexportVersion = iexportVersionGenerics - -// additionalPredeclared returns additional predeclared types in go.1.18. -func additionalPredeclared() []types.Type { - return []types.Type{ - // comparable - types.Universe.Lookup("comparable").Type(), - - // any - types.Universe.Lookup("any").Type(), - } -} - -// See cmd/compile/internal/types.SplitVargenSuffix. -func splitVargenSuffix(name string) (base, suffix string) { - i := len(name) - for i > 0 && name[i-1] >= '0' && name[i-1] <= '9' { - i-- - } - const dot = "·" - if i >= len(dot) && name[i-len(dot):i] == dot { - i -= len(dot) - return name[:i], name[i:] - } - return name, "" -} diff --git a/vendor/golang.org/x/tools/internal/gcimporter/unified_no.go b/vendor/golang.org/x/tools/internal/gcimporter/unified_no.go deleted file mode 100644 index 38b624cadab6..000000000000 --- a/vendor/golang.org/x/tools/internal/gcimporter/unified_no.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2022 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !goexperiment.unified -// +build !goexperiment.unified - -package gcimporter - -const unifiedIR = false diff --git a/vendor/golang.org/x/tools/internal/gcimporter/unified_yes.go b/vendor/golang.org/x/tools/internal/gcimporter/unified_yes.go deleted file mode 100644 index b5118d0b3a50..000000000000 --- a/vendor/golang.org/x/tools/internal/gcimporter/unified_yes.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2022 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build goexperiment.unified -// +build goexperiment.unified - -package gcimporter - -const unifiedIR = true diff --git a/vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go b/vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go index 2c0770688771..6cdab448eca7 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go @@ -11,7 +11,6 @@ import ( "go/token" "go/types" "sort" - "strings" "golang.org/x/tools/internal/aliases" "golang.org/x/tools/internal/pkgbits" @@ -52,8 +51,7 @@ func (pr *pkgReader) later(fn func()) { // See cmd/compile/internal/noder.derivedInfo. type derivedInfo struct { - idx pkgbits.Index - needed bool + idx pkgbits.Index } // See cmd/compile/internal/noder.typeInfo. @@ -72,7 +70,6 @@ func UImportData(fset *token.FileSet, imports map[string]*types.Package, data [] } s := string(data) - s = s[:strings.LastIndex(s, "\n$$\n")] input := pkgbits.NewPkgDecoder(path, s) pkg = readUnifiedPackage(fset, nil, imports, input) return @@ -110,13 +107,17 @@ func readUnifiedPackage(fset *token.FileSet, ctxt *types.Context, imports map[st r := pr.newReader(pkgbits.RelocMeta, pkgbits.PublicRootIdx, pkgbits.SyncPublic) pkg := r.pkg() - r.Bool() // has init + if r.Version().Has(pkgbits.HasInit) { + r.Bool() + } for i, n := 0, r.Len(); i < n; i++ { // As if r.obj(), but avoiding the Scope.Lookup call, // to avoid eager loading of imports. r.Sync(pkgbits.SyncObject) - assert(!r.Bool()) + if r.Version().Has(pkgbits.DerivedFuncInstance) { + assert(!r.Bool()) + } r.p.objIdx(r.Reloc(pkgbits.RelocObj)) assert(r.Len() == 0) } @@ -165,7 +166,7 @@ type readerDict struct { // tparams is a slice of the constructed TypeParams for the element. tparams []*types.TypeParam - // devived is a slice of types derived from tparams, which may be + // derived is a slice of types derived from tparams, which may be // instantiated while reading the current element. derived []derivedInfo derivedTypes []types.Type // lazily instantiated from derived @@ -263,7 +264,12 @@ func (pr *pkgReader) pkgIdx(idx pkgbits.Index) *types.Package { func (r *reader) doPkg() *types.Package { path := r.String() switch path { - case "": + // cmd/compile emits path="main" for main packages because + // that's the linker symbol prefix it used; but we need + // the package's path as it would be reported by go list, + // hence "main" below. + // See test at go/packages.TestMainPackagePathInModeTypes. + case "", "main": path = r.p.PkgPath() case "builtin": return nil // universe @@ -471,7 +477,9 @@ func (r *reader) param() *types.Var { func (r *reader) obj() (types.Object, []types.Type) { r.Sync(pkgbits.SyncObject) - assert(!r.Bool()) + if r.Version().Has(pkgbits.DerivedFuncInstance) { + assert(!r.Bool()) + } pkg, name := r.p.objIdx(r.Reloc(pkgbits.RelocObj)) obj := pkgScope(pkg).Lookup(name) @@ -525,8 +533,12 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index) (*types.Package, string) { case pkgbits.ObjAlias: pos := r.pos() + var tparams []*types.TypeParam + if r.Version().Has(pkgbits.AliasTypeParamNames) { + tparams = r.typeParamNames() + } typ := r.typ() - declare(aliases.NewAlias(r.p.aliases, pos, objPkg, objName, typ)) + declare(aliases.NewAlias(r.p.aliases, pos, objPkg, objName, typ, tparams)) case pkgbits.ObjConst: pos := r.pos() @@ -553,7 +565,7 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index) (*types.Package, string) { // If the underlying type is an interface, we need to // duplicate its methods so we can replace the receiver // parameter's type (#49906). - if iface, ok := aliases.Unalias(underlying).(*types.Interface); ok && iface.NumExplicitMethods() != 0 { + if iface, ok := types.Unalias(underlying).(*types.Interface); ok && iface.NumExplicitMethods() != 0 { methods := make([]*types.Func, iface.NumExplicitMethods()) for i := range methods { fn := iface.ExplicitMethod(i) @@ -632,7 +644,10 @@ func (pr *pkgReader) objDictIdx(idx pkgbits.Index) *readerDict { dict.derived = make([]derivedInfo, r.Len()) dict.derivedTypes = make([]types.Type, len(dict.derived)) for i := range dict.derived { - dict.derived[i] = derivedInfo{r.Reloc(pkgbits.RelocType), r.Bool()} + dict.derived[i] = derivedInfo{idx: r.Reloc(pkgbits.RelocType)} + if r.Version().Has(pkgbits.DerivedInfoNeeded) { + assert(!r.Bool()) + } } pr.retireReader(r) @@ -726,3 +741,17 @@ func pkgScope(pkg *types.Package) *types.Scope { } return types.Universe } + +// See cmd/compile/internal/types.SplitVargenSuffix. +func splitVargenSuffix(name string) (base, suffix string) { + i := len(name) + for i > 0 && name[i-1] >= '0' && name[i-1] <= '9' { + i-- + } + const dot = "·" + if i >= len(dot) && name[i-len(dot):i] == dot { + i -= len(dot) + return name[:i], name[i:] + } + return name, "" +} diff --git a/vendor/golang.org/x/tools/internal/gocommand/invoke.go b/vendor/golang.org/x/tools/internal/gocommand/invoke.go index 2e59ff8558c7..e333efc87f9d 100644 --- a/vendor/golang.org/x/tools/internal/gocommand/invoke.go +++ b/vendor/golang.org/x/tools/internal/gocommand/invoke.go @@ -16,7 +16,6 @@ import ( "os" "os/exec" "path/filepath" - "reflect" "regexp" "runtime" "strconv" @@ -250,16 +249,13 @@ func (i *Invocation) run(ctx context.Context, stdout, stderr io.Writer) error { cmd.Stdout = stdout cmd.Stderr = stderr - // cmd.WaitDelay was added only in go1.20 (see #50436). - if waitDelay := reflect.ValueOf(cmd).Elem().FieldByName("WaitDelay"); waitDelay.IsValid() { - // https://go.dev/issue/59541: don't wait forever copying stderr - // after the command has exited. - // After CL 484741 we copy stdout manually, so we we'll stop reading that as - // soon as ctx is done. However, we also don't want to wait around forever - // for stderr. Give a much-longer-than-reasonable delay and then assume that - // something has wedged in the kernel or runtime. - waitDelay.Set(reflect.ValueOf(30 * time.Second)) - } + // https://go.dev/issue/59541: don't wait forever copying stderr + // after the command has exited. + // After CL 484741 we copy stdout manually, so we we'll stop reading that as + // soon as ctx is done. However, we also don't want to wait around forever + // for stderr. Give a much-longer-than-reasonable delay and then assume that + // something has wedged in the kernel or runtime. + cmd.WaitDelay = 30 * time.Second // The cwd gets resolved to the real path. On Darwin, where // /tmp is a symlink, this breaks anything that expects the diff --git a/vendor/golang.org/x/tools/internal/imports/fix.go b/vendor/golang.org/x/tools/internal/imports/fix.go index dc7d50a7a401..5ae576977a29 100644 --- a/vendor/golang.org/x/tools/internal/imports/fix.go +++ b/vendor/golang.org/x/tools/internal/imports/fix.go @@ -27,7 +27,6 @@ import ( "unicode" "unicode/utf8" - "golang.org/x/sync/errgroup" "golang.org/x/tools/go/ast/astutil" "golang.org/x/tools/internal/event" "golang.org/x/tools/internal/gocommand" @@ -91,18 +90,6 @@ type ImportFix struct { Relevance float64 // see pkg } -// An ImportInfo represents a single import statement. -type ImportInfo struct { - ImportPath string // import path, e.g. "crypto/rand". - Name string // import name, e.g. "crand", or "" if none. -} - -// A packageInfo represents what's known about a package. -type packageInfo struct { - name string // real package name, if known. - exports map[string]bool // known exports. -} - // parseOtherFiles parses all the Go files in srcDir except filename, including // test files if filename looks like a test. // @@ -131,7 +118,7 @@ func parseOtherFiles(ctx context.Context, fset *token.FileSet, srcDir, filename continue } - f, err := parser.ParseFile(fset, filepath.Join(srcDir, fi.Name()), nil, 0) + f, err := parser.ParseFile(fset, filepath.Join(srcDir, fi.Name()), nil, parser.SkipObjectResolution) if err != nil { continue } @@ -162,8 +149,8 @@ func addGlobals(f *ast.File, globals map[string]bool) { // collectReferences builds a map of selector expressions, from // left hand side (X) to a set of right hand sides (Sel). -func collectReferences(f *ast.File) references { - refs := references{} +func collectReferences(f *ast.File) References { + refs := References{} var visitor visitFn visitor = func(node ast.Node) ast.Visitor { @@ -233,7 +220,7 @@ func (p *pass) findMissingImport(pkg string, syms map[string]bool) *ImportInfo { allFound := true for right := range syms { - if !pkgInfo.exports[right] { + if !pkgInfo.Exports[right] { allFound = false break } @@ -246,11 +233,6 @@ func (p *pass) findMissingImport(pkg string, syms map[string]bool) *ImportInfo { return nil } -// references is set of references found in a Go file. The first map key is the -// left hand side of a selector expression, the second key is the right hand -// side, and the value should always be true. -type references map[string]map[string]bool - // A pass contains all the inputs and state necessary to fix a file's imports. // It can be modified in some ways during use; see comments below. type pass struct { @@ -258,27 +240,29 @@ type pass struct { fset *token.FileSet // fset used to parse f and its siblings. f *ast.File // the file being fixed. srcDir string // the directory containing f. - env *ProcessEnv // the environment to use for go commands, etc. - loadRealPackageNames bool // if true, load package names from disk rather than guessing them. - otherFiles []*ast.File // sibling files. + logf func(string, ...any) + source Source // the environment to use for go commands, etc. + loadRealPackageNames bool // if true, load package names from disk rather than guessing them. + otherFiles []*ast.File // sibling files. + goroot string // Intermediate state, generated by load. existingImports map[string][]*ImportInfo - allRefs references - missingRefs references + allRefs References + missingRefs References // Inputs to fix. These can be augmented between successive fix calls. lastTry bool // indicates that this is the last call and fix should clean up as best it can. candidates []*ImportInfo // candidate imports in priority order. - knownPackages map[string]*packageInfo // information about all known packages. + knownPackages map[string]*PackageInfo // information about all known packages. } // loadPackageNames saves the package names for everything referenced by imports. -func (p *pass) loadPackageNames(imports []*ImportInfo) error { - if p.env.Logf != nil { - p.env.Logf("loading package names for %v packages", len(imports)) +func (p *pass) loadPackageNames(ctx context.Context, imports []*ImportInfo) error { + if p.logf != nil { + p.logf("loading package names for %v packages", len(imports)) defer func() { - p.env.Logf("done loading package names for %v packages", len(imports)) + p.logf("done loading package names for %v packages", len(imports)) }() } var unknown []string @@ -289,20 +273,17 @@ func (p *pass) loadPackageNames(imports []*ImportInfo) error { unknown = append(unknown, imp.ImportPath) } - resolver, err := p.env.GetResolver() - if err != nil { - return err - } - - names, err := resolver.loadPackageNames(unknown, p.srcDir) + names, err := p.source.LoadPackageNames(ctx, p.srcDir, unknown) if err != nil { return err } + // TODO(rfindley): revisit this. Why do we need to store known packages with + // no exports? The inconsistent data is confusing. for path, name := range names { - p.knownPackages[path] = &packageInfo{ - name: name, - exports: map[string]bool{}, + p.knownPackages[path] = &PackageInfo{ + Name: name, + Exports: map[string]bool{}, } } return nil @@ -330,8 +311,8 @@ func (p *pass) importIdentifier(imp *ImportInfo) string { return imp.Name } known := p.knownPackages[imp.ImportPath] - if known != nil && known.name != "" { - return withoutVersion(known.name) + if known != nil && known.Name != "" { + return withoutVersion(known.Name) } return ImportPathToAssumedName(imp.ImportPath) } @@ -339,9 +320,9 @@ func (p *pass) importIdentifier(imp *ImportInfo) string { // load reads in everything necessary to run a pass, and reports whether the // file already has all the imports it needs. It fills in p.missingRefs with the // file's missing symbols, if any, or removes unused imports if not. -func (p *pass) load() ([]*ImportFix, bool) { - p.knownPackages = map[string]*packageInfo{} - p.missingRefs = references{} +func (p *pass) load(ctx context.Context) ([]*ImportFix, bool) { + p.knownPackages = map[string]*PackageInfo{} + p.missingRefs = References{} p.existingImports = map[string][]*ImportInfo{} // Load basic information about the file in question. @@ -364,9 +345,11 @@ func (p *pass) load() ([]*ImportFix, bool) { // f's imports by the identifier they introduce. imports := collectImports(p.f) if p.loadRealPackageNames { - err := p.loadPackageNames(append(imports, p.candidates...)) + err := p.loadPackageNames(ctx, append(imports, p.candidates...)) if err != nil { - p.env.logf("loading package names: %v", err) + if p.logf != nil { + p.logf("loading package names: %v", err) + } return nil, false } } @@ -535,9 +518,10 @@ func (p *pass) assumeSiblingImportsValid() { // We have the stdlib in memory; no need to guess. rights = symbolNameSet(m) } - p.addCandidate(imp, &packageInfo{ + // TODO(rfindley): we should set package name here, for consistency. + p.addCandidate(imp, &PackageInfo{ // no name; we already know it. - exports: rights, + Exports: rights, }) } } @@ -546,14 +530,14 @@ func (p *pass) assumeSiblingImportsValid() { // addCandidate adds a candidate import to p, and merges in the information // in pkg. -func (p *pass) addCandidate(imp *ImportInfo, pkg *packageInfo) { +func (p *pass) addCandidate(imp *ImportInfo, pkg *PackageInfo) { p.candidates = append(p.candidates, imp) if existing, ok := p.knownPackages[imp.ImportPath]; ok { - if existing.name == "" { - existing.name = pkg.name + if existing.Name == "" { + existing.Name = pkg.Name } - for export := range pkg.exports { - existing.exports[export] = true + for export := range pkg.Exports { + existing.Exports[export] = true } } else { p.knownPackages[imp.ImportPath] = pkg @@ -581,19 +565,42 @@ func fixImportsDefault(fset *token.FileSet, f *ast.File, filename string, env *P // getFixes gets the import fixes that need to be made to f in order to fix the imports. // It does not modify the ast. func getFixes(ctx context.Context, fset *token.FileSet, f *ast.File, filename string, env *ProcessEnv) ([]*ImportFix, error) { + source, err := NewProcessEnvSource(env, filename, f.Name.Name) + if err != nil { + return nil, err + } + goEnv, err := env.goEnv() + if err != nil { + return nil, err + } + return getFixesWithSource(ctx, fset, f, filename, goEnv["GOROOT"], env.logf, source) +} + +func getFixesWithSource(ctx context.Context, fset *token.FileSet, f *ast.File, filename string, goroot string, logf func(string, ...any), source Source) ([]*ImportFix, error) { + // This logic is defensively duplicated from getFixes. abs, err := filepath.Abs(filename) if err != nil { return nil, err } srcDir := filepath.Dir(abs) - env.logf("fixImports(filename=%q), abs=%q, srcDir=%q ...", filename, abs, srcDir) + + if logf != nil { + logf("fixImports(filename=%q), srcDir=%q ...", filename, abs, srcDir) + } // First pass: looking only at f, and using the naive algorithm to // derive package names from import paths, see if the file is already // complete. We can't add any imports yet, because we don't know // if missing references are actually package vars. - p := &pass{fset: fset, f: f, srcDir: srcDir, env: env} - if fixes, done := p.load(); done { + p := &pass{ + fset: fset, + f: f, + srcDir: srcDir, + logf: logf, + goroot: goroot, + source: source, + } + if fixes, done := p.load(ctx); done { return fixes, nil } @@ -605,7 +612,7 @@ func getFixes(ctx context.Context, fset *token.FileSet, f *ast.File, filename st // Second pass: add information from other files in the same package, // like their package vars and imports. p.otherFiles = otherFiles - if fixes, done := p.load(); done { + if fixes, done := p.load(ctx); done { return fixes, nil } @@ -618,10 +625,17 @@ func getFixes(ctx context.Context, fset *token.FileSet, f *ast.File, filename st // Third pass: get real package names where we had previously used // the naive algorithm. - p = &pass{fset: fset, f: f, srcDir: srcDir, env: env} + p = &pass{ + fset: fset, + f: f, + srcDir: srcDir, + logf: logf, + goroot: goroot, + source: p.source, // safe to reuse, as it's just a wrapper around env + } p.loadRealPackageNames = true p.otherFiles = otherFiles - if fixes, done := p.load(); done { + if fixes, done := p.load(ctx); done { return fixes, nil } @@ -835,7 +849,7 @@ func GetPackageExports(ctx context.Context, wrapped func(PackageExport), searchP return true }, dirFound: func(pkg *pkg) bool { - return pkgIsCandidate(filename, references{searchPkg: nil}, pkg) + return pkgIsCandidate(filename, References{searchPkg: nil}, pkg) }, packageNameLoaded: func(pkg *pkg) bool { return pkg.packageName == searchPkg @@ -1086,11 +1100,7 @@ func (e *ProcessEnv) invokeGo(ctx context.Context, verb string, args ...string) return e.GocmdRunner.Run(ctx, inv) } -func addStdlibCandidates(pass *pass, refs references) error { - goenv, err := pass.env.goEnv() - if err != nil { - return err - } +func addStdlibCandidates(pass *pass, refs References) error { localbase := func(nm string) string { ans := path.Base(nm) if ans[0] == 'v' { @@ -1105,13 +1115,13 @@ func addStdlibCandidates(pass *pass, refs references) error { } add := func(pkg string) { // Prevent self-imports. - if path.Base(pkg) == pass.f.Name.Name && filepath.Join(goenv["GOROOT"], "src", pkg) == pass.srcDir { + if path.Base(pkg) == pass.f.Name.Name && filepath.Join(pass.goroot, "src", pkg) == pass.srcDir { return } exports := symbolNameSet(stdlib.PackageSymbols[pkg]) pass.addCandidate( &ImportInfo{ImportPath: pkg}, - &packageInfo{name: localbase(pkg), exports: exports}) + &PackageInfo{Name: localbase(pkg), Exports: exports}) } for left := range refs { if left == "rand" { @@ -1175,91 +1185,14 @@ type scanCallback struct { exportsLoaded func(pkg *pkg, exports []stdlib.Symbol) } -func addExternalCandidates(ctx context.Context, pass *pass, refs references, filename string) error { +func addExternalCandidates(ctx context.Context, pass *pass, refs References, filename string) error { ctx, done := event.Start(ctx, "imports.addExternalCandidates") defer done() - var mu sync.Mutex - found := make(map[string][]pkgDistance) - callback := &scanCallback{ - rootFound: func(gopathwalk.Root) bool { - return true // We want everything. - }, - dirFound: func(pkg *pkg) bool { - return pkgIsCandidate(filename, refs, pkg) - }, - packageNameLoaded: func(pkg *pkg) bool { - if _, want := refs[pkg.packageName]; !want { - return false - } - if pkg.dir == pass.srcDir && pass.f.Name.Name == pkg.packageName { - // The candidate is in the same directory and has the - // same package name. Don't try to import ourselves. - return false - } - if !canUse(filename, pkg.dir) { - return false - } - mu.Lock() - defer mu.Unlock() - found[pkg.packageName] = append(found[pkg.packageName], pkgDistance{pkg, distance(pass.srcDir, pkg.dir)}) - return false // We'll do our own loading after we sort. - }, - } - resolver, err := pass.env.GetResolver() + results, err := pass.source.ResolveReferences(ctx, filename, refs) if err != nil { return err } - if err = resolver.scan(ctx, callback); err != nil { - return err - } - - // Search for imports matching potential package references. - type result struct { - imp *ImportInfo - pkg *packageInfo - } - results := make([]*result, len(refs)) - - g, ctx := errgroup.WithContext(ctx) - - searcher := symbolSearcher{ - logf: pass.env.logf, - srcDir: pass.srcDir, - xtest: strings.HasSuffix(pass.f.Name.Name, "_test"), - loadExports: resolver.loadExports, - } - - i := 0 - for pkgName, symbols := range refs { - index := i // claim an index in results - i++ - pkgName := pkgName - symbols := symbols - - g.Go(func() error { - found, err := searcher.search(ctx, found[pkgName], pkgName, symbols) - if err != nil { - return err - } - if found == nil { - return nil // No matching package. - } - - imp := &ImportInfo{ - ImportPath: found.importPathShort, - } - pkg := &packageInfo{ - name: pkgName, - exports: symbols, - } - results[index] = &result{imp, pkg} - return nil - }) - } - if err := g.Wait(); err != nil { - return err - } for _, result := range results { if result == nil { @@ -1267,7 +1200,7 @@ func addExternalCandidates(ctx context.Context, pass *pass, refs references, fil } // Don't offer completions that would shadow predeclared // names, such as github.com/coreos/etcd/error. - if types.Universe.Lookup(result.pkg.name) != nil { // predeclared + if types.Universe.Lookup(result.Package.Name) != nil { // predeclared // Ideally we would skip this candidate only // if the predeclared name is actually // referenced by the file, but that's a lot @@ -1276,7 +1209,7 @@ func addExternalCandidates(ctx context.Context, pass *pass, refs references, fil // user before long. continue } - pass.addCandidate(result.imp, result.pkg) + pass.addCandidate(result.Import, result.Package) } return nil } @@ -1620,6 +1553,7 @@ func loadExportsFromFiles(ctx context.Context, env *ProcessEnv, dir string, incl } fullFile := filepath.Join(dir, fi.Name()) + // Legacy ast.Object resolution is needed here. f, err := parser.ParseFile(fset, fullFile, nil, 0) if err != nil { env.logf("error parsing %v: %v", fullFile, err) @@ -1800,7 +1734,7 @@ func (s *symbolSearcher) searchOne(ctx context.Context, c pkgDistance, symbols m // filename is the file being formatted. // pkgIdent is the package being searched for, like "client" (if // searching for "client.New") -func pkgIsCandidate(filename string, refs references, pkg *pkg) bool { +func pkgIsCandidate(filename string, refs References, pkg *pkg) bool { // Check "internal" and "vendor" visibility: if !canUse(filename, pkg.dir) { return false diff --git a/vendor/golang.org/x/tools/internal/imports/imports.go b/vendor/golang.org/x/tools/internal/imports/imports.go index f83465520a45..2215a12880a1 100644 --- a/vendor/golang.org/x/tools/internal/imports/imports.go +++ b/vendor/golang.org/x/tools/internal/imports/imports.go @@ -47,7 +47,14 @@ type Options struct { // Process implements golang.org/x/tools/imports.Process with explicit context in opt.Env. func Process(filename string, src []byte, opt *Options) (formatted []byte, err error) { fileSet := token.NewFileSet() - file, adjust, err := parse(fileSet, filename, src, opt) + var parserMode parser.Mode + if opt.Comments { + parserMode |= parser.ParseComments + } + if opt.AllErrors { + parserMode |= parser.AllErrors + } + file, adjust, err := parse(fileSet, filename, src, parserMode, opt.Fragment) if err != nil { return nil, err } @@ -66,17 +73,19 @@ func Process(filename string, src []byte, opt *Options) (formatted []byte, err e // // Note that filename's directory influences which imports can be chosen, // so it is important that filename be accurate. -func FixImports(ctx context.Context, filename string, src []byte, opt *Options) (fixes []*ImportFix, err error) { +func FixImports(ctx context.Context, filename string, src []byte, goroot string, logf func(string, ...any), source Source) (fixes []*ImportFix, err error) { ctx, done := event.Start(ctx, "imports.FixImports") defer done() fileSet := token.NewFileSet() - file, _, err := parse(fileSet, filename, src, opt) + // TODO(rfindley): these default values for ParseComments and AllErrors were + // extracted from gopls, but are they even needed? + file, _, err := parse(fileSet, filename, src, parser.ParseComments|parser.AllErrors, true) if err != nil { return nil, err } - return getFixes(ctx, fileSet, file, filename, opt.Env) + return getFixesWithSource(ctx, fileSet, file, filename, goroot, logf, source) } // ApplyFixes applies all of the fixes to the file and formats it. extraMode @@ -86,7 +95,7 @@ func ApplyFixes(fixes []*ImportFix, filename string, src []byte, opt *Options, e // Don't use parse() -- we don't care about fragments or statement lists // here, and we need to work with unparseable files. fileSet := token.NewFileSet() - parserMode := parser.Mode(0) + parserMode := parser.SkipObjectResolution if opt.Comments { parserMode |= parser.ParseComments } @@ -114,7 +123,7 @@ func ApplyFixes(fixes []*ImportFix, filename string, src []byte, opt *Options, e // formatted file, and returns the postpocessed result. func formatFile(fset *token.FileSet, file *ast.File, src []byte, adjust func(orig []byte, src []byte) []byte, opt *Options) ([]byte, error) { mergeImports(file) - sortImports(opt.LocalPrefix, fset.File(file.Pos()), file) + sortImports(opt.LocalPrefix, fset.File(file.FileStart), file) var spacesBefore []string // import paths we need spaces before for _, impSection := range astutil.Imports(fset, file) { // Within each block of contiguous imports, see if any @@ -164,13 +173,9 @@ func formatFile(fset *token.FileSet, file *ast.File, src []byte, adjust func(ori // parse parses src, which was read from filename, // as a Go source file or statement list. -func parse(fset *token.FileSet, filename string, src []byte, opt *Options) (*ast.File, func(orig, src []byte) []byte, error) { - parserMode := parser.Mode(0) - if opt.Comments { - parserMode |= parser.ParseComments - } - if opt.AllErrors { - parserMode |= parser.AllErrors +func parse(fset *token.FileSet, filename string, src []byte, parserMode parser.Mode, fragment bool) (*ast.File, func(orig, src []byte) []byte, error) { + if parserMode&parser.SkipObjectResolution != 0 { + panic("legacy ast.Object resolution is required") } // Try as whole source file. @@ -181,7 +186,7 @@ func parse(fset *token.FileSet, filename string, src []byte, opt *Options) (*ast // If the error is that the source file didn't begin with a // package line and we accept fragmented input, fall through to // try as a source fragment. Stop and return on any other error. - if !opt.Fragment || !strings.Contains(err.Error(), "expected 'package'") { + if !fragment || !strings.Contains(err.Error(), "expected 'package'") { return nil, nil, err } diff --git a/vendor/golang.org/x/tools/internal/imports/mod.go b/vendor/golang.org/x/tools/internal/imports/mod.go index 91221fda3226..8555e3f83da4 100644 --- a/vendor/golang.org/x/tools/internal/imports/mod.go +++ b/vendor/golang.org/x/tools/internal/imports/mod.go @@ -245,7 +245,10 @@ func newModuleResolver(e *ProcessEnv, moduleCacheCache *DirInfoCache) (*ModuleRe // 2. Use this to separate module cache scanning from other scanning. func gomodcacheForEnv(goenv map[string]string) string { if gmc := goenv["GOMODCACHE"]; gmc != "" { - return gmc + // golang/go#67156: ensure that the module cache is clean, since it is + // assumed as a prefix to directories scanned by gopathwalk, which are + // themselves clean. + return filepath.Clean(gmc) } gopaths := filepath.SplitList(goenv["GOPATH"]) if len(gopaths) == 0 { @@ -740,8 +743,8 @@ func (r *ModuleResolver) loadExports(ctx context.Context, pkg *pkg, includeTest func (r *ModuleResolver) scanDirForPackage(root gopathwalk.Root, dir string) directoryPackageInfo { subdir := "" - if dir != root.Path { - subdir = dir[len(root.Path)+len("/"):] + if prefix := root.Path + string(filepath.Separator); strings.HasPrefix(dir, prefix) { + subdir = dir[len(prefix):] } importPath := filepath.ToSlash(subdir) if strings.HasPrefix(importPath, "vendor/") { diff --git a/vendor/golang.org/x/tools/internal/imports/source.go b/vendor/golang.org/x/tools/internal/imports/source.go new file mode 100644 index 000000000000..cbe4f3c5ba1d --- /dev/null +++ b/vendor/golang.org/x/tools/internal/imports/source.go @@ -0,0 +1,63 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package imports + +import "context" + +// These types document the APIs below. +// +// TODO(rfindley): consider making these defined types rather than aliases. +type ( + ImportPath = string + PackageName = string + Symbol = string + + // References is set of References found in a Go file. The first map key is the + // left hand side of a selector expression, the second key is the right hand + // side, and the value should always be true. + References = map[PackageName]map[Symbol]bool +) + +// A Result satisfies a missing import. +// +// The Import field describes the missing import spec, and the Package field +// summarizes the package exports. +type Result struct { + Import *ImportInfo + Package *PackageInfo +} + +// An ImportInfo represents a single import statement. +type ImportInfo struct { + ImportPath string // import path, e.g. "crypto/rand". + Name string // import name, e.g. "crand", or "" if none. +} + +// A PackageInfo represents what's known about a package. +type PackageInfo struct { + Name string // package name in the package declaration, if known + Exports map[string]bool // set of names of known package level sortSymbols +} + +// A Source provides imports to satisfy unresolved references in the file being +// fixed. +type Source interface { + // LoadPackageNames queries PackageName information for the requested import + // paths, when operating from the provided srcDir. + // + // TODO(rfindley): try to refactor to remove this operation. + LoadPackageNames(ctx context.Context, srcDir string, paths []ImportPath) (map[ImportPath]PackageName, error) + + // ResolveReferences asks the Source for the best package name to satisfy + // each of the missing references, in the context of fixing the given + // filename. + // + // Returns a map from package name to a [Result] for that package name that + // provides the required symbols. Keys may be omitted in the map if no + // candidates satisfy all missing references for that package name. It is up + // to each data source to select the best result for each entry in the + // missing map. + ResolveReferences(ctx context.Context, filename string, missing References) ([]*Result, error) +} diff --git a/vendor/golang.org/x/tools/internal/imports/source_env.go b/vendor/golang.org/x/tools/internal/imports/source_env.go new file mode 100644 index 000000000000..d14abaa3195f --- /dev/null +++ b/vendor/golang.org/x/tools/internal/imports/source_env.go @@ -0,0 +1,129 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package imports + +import ( + "context" + "path/filepath" + "strings" + "sync" + + "golang.org/x/sync/errgroup" + "golang.org/x/tools/internal/gopathwalk" +) + +// ProcessEnvSource implements the [Source] interface using the legacy +// [ProcessEnv] abstraction. +type ProcessEnvSource struct { + env *ProcessEnv + srcDir string + filename string + pkgName string +} + +// NewProcessEnvSource returns a [ProcessEnvSource] wrapping the given +// env, to be used for fixing imports in the file with name filename in package +// named pkgName. +func NewProcessEnvSource(env *ProcessEnv, filename, pkgName string) (*ProcessEnvSource, error) { + abs, err := filepath.Abs(filename) + if err != nil { + return nil, err + } + srcDir := filepath.Dir(abs) + return &ProcessEnvSource{ + env: env, + srcDir: srcDir, + filename: filename, + pkgName: pkgName, + }, nil +} + +func (s *ProcessEnvSource) LoadPackageNames(ctx context.Context, srcDir string, unknown []string) (map[string]string, error) { + r, err := s.env.GetResolver() + if err != nil { + return nil, err + } + return r.loadPackageNames(unknown, srcDir) +} + +func (s *ProcessEnvSource) ResolveReferences(ctx context.Context, filename string, refs map[string]map[string]bool) ([]*Result, error) { + var mu sync.Mutex + found := make(map[string][]pkgDistance) + callback := &scanCallback{ + rootFound: func(gopathwalk.Root) bool { + return true // We want everything. + }, + dirFound: func(pkg *pkg) bool { + return pkgIsCandidate(filename, refs, pkg) + }, + packageNameLoaded: func(pkg *pkg) bool { + if _, want := refs[pkg.packageName]; !want { + return false + } + if pkg.dir == s.srcDir && s.pkgName == pkg.packageName { + // The candidate is in the same directory and has the + // same package name. Don't try to import ourselves. + return false + } + if !canUse(filename, pkg.dir) { + return false + } + mu.Lock() + defer mu.Unlock() + found[pkg.packageName] = append(found[pkg.packageName], pkgDistance{pkg, distance(s.srcDir, pkg.dir)}) + return false // We'll do our own loading after we sort. + }, + } + resolver, err := s.env.GetResolver() + if err != nil { + return nil, err + } + if err := resolver.scan(ctx, callback); err != nil { + return nil, err + } + + g, ctx := errgroup.WithContext(ctx) + + searcher := symbolSearcher{ + logf: s.env.logf, + srcDir: s.srcDir, + xtest: strings.HasSuffix(s.pkgName, "_test"), + loadExports: resolver.loadExports, + } + + var resultMu sync.Mutex + results := make(map[string]*Result, len(refs)) + for pkgName, symbols := range refs { + g.Go(func() error { + found, err := searcher.search(ctx, found[pkgName], pkgName, symbols) + if err != nil { + return err + } + if found == nil { + return nil // No matching package. + } + + imp := &ImportInfo{ + ImportPath: found.importPathShort, + } + pkg := &PackageInfo{ + Name: pkgName, + Exports: symbols, + } + resultMu.Lock() + results[pkgName] = &Result{Import: imp, Package: pkg} + resultMu.Unlock() + return nil + }) + } + if err := g.Wait(); err != nil { + return nil, err + } + var ans []*Result + for _, x := range results { + ans = append(ans, x) + } + return ans, nil +} diff --git a/vendor/golang.org/x/tools/internal/imports/source_modindex.go b/vendor/golang.org/x/tools/internal/imports/source_modindex.go new file mode 100644 index 000000000000..05229f06ce6b --- /dev/null +++ b/vendor/golang.org/x/tools/internal/imports/source_modindex.go @@ -0,0 +1,103 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package imports + +import ( + "context" + "sync" + "time" + + "golang.org/x/tools/internal/modindex" +) + +// This code is here rather than in the modindex package +// to avoid import loops + +// implements Source using modindex, so only for module cache. +// +// this is perhaps over-engineered. A new Index is read at first use. +// And then Update is called after every 15 minutes, and a new Index +// is read if the index changed. It is not clear the Mutex is needed. +type IndexSource struct { + modcachedir string + mutex sync.Mutex + ix *modindex.Index + expires time.Time +} + +// create a new Source. Called from NewView in cache/session.go. +func NewIndexSource(cachedir string) *IndexSource { + return &IndexSource{modcachedir: cachedir} +} + +func (s *IndexSource) LoadPackageNames(ctx context.Context, srcDir string, paths []ImportPath) (map[ImportPath]PackageName, error) { + /// This is used by goimports to resolve the package names of imports of the + // current package, which is irrelevant for the module cache. + return nil, nil +} + +func (s *IndexSource) ResolveReferences(ctx context.Context, filename string, missing References) ([]*Result, error) { + if err := s.maybeReadIndex(); err != nil { + return nil, err + } + var cs []modindex.Candidate + for pkg, nms := range missing { + for nm := range nms { + x := s.ix.Lookup(pkg, nm, false) + cs = append(cs, x...) + } + } + found := make(map[string]*Result) + for _, c := range cs { + var x *Result + if x = found[c.ImportPath]; x == nil { + x = &Result{ + Import: &ImportInfo{ + ImportPath: c.ImportPath, + Name: "", + }, + Package: &PackageInfo{ + Name: c.PkgName, + Exports: make(map[string]bool), + }, + } + found[c.ImportPath] = x + } + x.Package.Exports[c.Name] = true + } + var ans []*Result + for _, x := range found { + ans = append(ans, x) + } + return ans, nil +} + +func (s *IndexSource) maybeReadIndex() error { + s.mutex.Lock() + defer s.mutex.Unlock() + + var readIndex bool + if time.Now().After(s.expires) { + ok, err := modindex.Update(s.modcachedir) + if err != nil { + return err + } + if ok { + readIndex = true + } + } + + if readIndex || s.ix == nil { + ix, err := modindex.ReadIndex(s.modcachedir) + if err != nil { + return err + } + s.ix = ix + // for now refresh every 15 minutes + s.expires = time.Now().Add(time.Minute * 15) + } + + return nil +} diff --git a/vendor/golang.org/x/tools/internal/modindex/directories.go b/vendor/golang.org/x/tools/internal/modindex/directories.go new file mode 100644 index 000000000000..1e1a02f239bb --- /dev/null +++ b/vendor/golang.org/x/tools/internal/modindex/directories.go @@ -0,0 +1,135 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package modindex + +import ( + "fmt" + "log" + "os" + "path/filepath" + "regexp" + "slices" + "strings" + "sync" + "time" + + "golang.org/x/mod/semver" + "golang.org/x/tools/internal/gopathwalk" +) + +type directory struct { + path Relpath + importPath string + version string // semantic version + syms []symbol +} + +// filterDirs groups the directories by import path, +// sorting the ones with the same import path by semantic version, +// most recent first. +func byImportPath(dirs []Relpath) (map[string][]*directory, error) { + ans := make(map[string][]*directory) // key is import path + for _, d := range dirs { + ip, sv, err := DirToImportPathVersion(d) + if err != nil { + return nil, err + } + ans[ip] = append(ans[ip], &directory{ + path: d, + importPath: ip, + version: sv, + }) + } + for k, v := range ans { + semanticSort(v) + ans[k] = v + } + return ans, nil +} + +// sort the directories by semantic version, latest first +func semanticSort(v []*directory) { + slices.SortFunc(v, func(l, r *directory) int { + if n := semver.Compare(l.version, r.version); n != 0 { + return -n // latest first + } + return strings.Compare(string(l.path), string(r.path)) + }) +} + +// modCacheRegexp splits a relpathpath into module, module version, and package. +var modCacheRegexp = regexp.MustCompile(`(.*)@([^/\\]*)(.*)`) + +// DirToImportPathVersion computes import path and semantic version +func DirToImportPathVersion(dir Relpath) (string, string, error) { + m := modCacheRegexp.FindStringSubmatch(string(dir)) + // m[1] is the module path + // m[2] is the version major.minor.patch(-
     1 && flds[1][1] == 'D',
    +			}
    +			if px.Type == Func {
    +				n, err := strconv.Atoi(flds[2])
    +				if err != nil {
    +					continue // should never happen
    +				}
    +				px.Results = int16(n)
    +				if len(flds) >= 4 {
    +					sig := strings.Split(flds[3], " ")
    +					for i := 0; i < len(sig); i++ {
    +						// $ cannot otherwise occur. removing the spaces
    +						// almost works, but for chan struct{}, e.g.
    +						sig[i] = strings.Replace(sig[i], "$", " ", -1)
    +					}
    +					px.Sig = toFields(sig)
    +				}
    +			}
    +			ans = append(ans, px)
    +		}
    +	}
    +	return ans
    +}
    +
    +func toFields(sig []string) []Field {
    +	ans := make([]Field, len(sig)/2)
    +	for i := 0; i < len(ans); i++ {
    +		ans[i] = Field{Arg: sig[2*i], Type: sig[2*i+1]}
    +	}
    +	return ans
    +}
    +
    +// benchmarks show this is measurably better than strings.Split
    +// split into first 4 fields separated by single space
    +func fastSplit(x string) []string {
    +	ans := make([]string, 0, 4)
    +	nxt := 0
    +	start := 0
    +	for i := 0; i < len(x); i++ {
    +		if x[i] != ' ' {
    +			continue
    +		}
    +		ans = append(ans, x[start:i])
    +		nxt++
    +		start = i + 1
    +		if nxt >= 3 {
    +			break
    +		}
    +	}
    +	ans = append(ans, x[start:])
    +	return ans
    +}
    +
    +func asLexType(c byte) LexType {
    +	switch c {
    +	case 'C':
    +		return Const
    +	case 'V':
    +		return Var
    +	case 'T':
    +		return Type
    +	case 'F':
    +		return Func
    +	}
    +	return -1
    +}
    diff --git a/vendor/golang.org/x/tools/internal/modindex/modindex.go b/vendor/golang.org/x/tools/internal/modindex/modindex.go
    new file mode 100644
    index 000000000000..355a53e71aab
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/modindex/modindex.go
    @@ -0,0 +1,164 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +// Package modindex contains code for building and searching an index to
    +// the Go module cache. The directory containing the index, returned by
    +// IndexDir(), contains a file index-name- that contains the name
    +// of the current index. We believe writing that short file is atomic.
    +// ReadIndex reads that file to get the file name of the index.
    +// WriteIndex writes an index with a unique name and then
    +// writes that name into a new version of index-name-.
    +// ( stands for the CurrentVersion of the index format.)
    +package modindex
    +
    +import (
    +	"path/filepath"
    +	"slices"
    +	"strings"
    +	"time"
    +
    +	"golang.org/x/mod/semver"
    +)
    +
    +// Create always creates a new index for the go module cache that is in cachedir.
    +func Create(cachedir string) error {
    +	_, err := indexModCache(cachedir, true)
    +	return err
    +}
    +
    +// Update the index for the go module cache that is in cachedir,
    +// If there is no existing index it will build one.
    +// If there are changed directories since the last index, it will
    +// write a new one and return true. Otherwise it returns false.
    +func Update(cachedir string) (bool, error) {
    +	return indexModCache(cachedir, false)
    +}
    +
    +// indexModCache writes an index current as of when it is called.
    +// If clear is true the index is constructed from all of GOMODCACHE
    +// otherwise the index is constructed from the last previous index
    +// and the updates to the cache. It returns true if it wrote an index,
    +// false otherwise.
    +func indexModCache(cachedir string, clear bool) (bool, error) {
    +	cachedir, err := filepath.Abs(cachedir)
    +	if err != nil {
    +		return false, err
    +	}
    +	cd := Abspath(cachedir)
    +	future := time.Now().Add(24 * time.Hour) // safely in the future
    +	ok, err := modindexTimed(future, cd, clear)
    +	if err != nil {
    +		return false, err
    +	}
    +	return ok, nil
    +}
    +
    +// modindexTimed writes an index current as of onlyBefore.
    +// If clear is true the index is constructed from all of GOMODCACHE
    +// otherwise the index is constructed from the last previous index
    +// and all the updates to the cache before onlyBefore.
    +// It returns true if it wrote a new index, false if it wrote nothing.
    +func modindexTimed(onlyBefore time.Time, cachedir Abspath, clear bool) (bool, error) {
    +	var curIndex *Index
    +	if !clear {
    +		var err error
    +		curIndex, err = ReadIndex(string(cachedir))
    +		if clear && err != nil {
    +			return false, err
    +		}
    +		// TODO(pjw): check that most of those directories still exist
    +	}
    +	cfg := &work{
    +		onlyBefore: onlyBefore,
    +		oldIndex:   curIndex,
    +		cacheDir:   cachedir,
    +	}
    +	if curIndex != nil {
    +		cfg.onlyAfter = curIndex.Changed
    +	}
    +	if err := cfg.buildIndex(); err != nil {
    +		return false, err
    +	}
    +	if len(cfg.newIndex.Entries) == 0 && curIndex != nil {
    +		// no changes from existing curIndex, don't write a new index
    +		return false, nil
    +	}
    +	if err := cfg.writeIndex(); err != nil {
    +		return false, err
    +	}
    +	return true, nil
    +}
    +
    +type work struct {
    +	onlyBefore time.Time // do not use directories later than this
    +	onlyAfter  time.Time // only interested in directories after this
    +	// directories from before onlyAfter come from oldIndex
    +	oldIndex *Index
    +	newIndex *Index
    +	cacheDir Abspath
    +}
    +
    +func (w *work) buildIndex() error {
    +	// The effective date of the new index should be at least
    +	// slightly earlier than when the directories are scanned
    +	// so set it now.
    +	w.newIndex = &Index{Changed: time.Now(), Cachedir: w.cacheDir}
    +	dirs := findDirs(string(w.cacheDir), w.onlyAfter, w.onlyBefore)
    +	if len(dirs) == 0 {
    +		return nil
    +	}
    +	newdirs, err := byImportPath(dirs)
    +	if err != nil {
    +		return err
    +	}
    +	// for each import path it might occur only in newdirs,
    +	// only in w.oldIndex, or in both.
    +	// If it occurs in both, use the semantically later one
    +	if w.oldIndex != nil {
    +		for _, e := range w.oldIndex.Entries {
    +			found, ok := newdirs[e.ImportPath]
    +			if !ok {
    +				w.newIndex.Entries = append(w.newIndex.Entries, e)
    +				continue // use this one, there is no new one
    +			}
    +			if semver.Compare(found[0].version, e.Version) > 0 {
    +				// use the new one
    +			} else {
    +				// use the old one, forget the new one
    +				w.newIndex.Entries = append(w.newIndex.Entries, e)
    +				delete(newdirs, e.ImportPath)
    +			}
    +		}
    +	}
    +	// get symbol information for all the new diredtories
    +	getSymbols(w.cacheDir, newdirs)
    +	// assemble the new index entries
    +	for k, v := range newdirs {
    +		d := v[0]
    +		pkg, names := processSyms(d.syms)
    +		if pkg == "" {
    +			continue // PJW: does this ever happen?
    +		}
    +		entry := Entry{
    +			PkgName:    pkg,
    +			Dir:        d.path,
    +			ImportPath: k,
    +			Version:    d.version,
    +			Names:      names,
    +		}
    +		w.newIndex.Entries = append(w.newIndex.Entries, entry)
    +	}
    +	// sort the entries in the new index
    +	slices.SortFunc(w.newIndex.Entries, func(l, r Entry) int {
    +		if n := strings.Compare(l.PkgName, r.PkgName); n != 0 {
    +			return n
    +		}
    +		return strings.Compare(l.ImportPath, r.ImportPath)
    +	})
    +	return nil
    +}
    +
    +func (w *work) writeIndex() error {
    +	return writeIndex(w.cacheDir, w.newIndex)
    +}
    diff --git a/vendor/golang.org/x/tools/internal/modindex/symbols.go b/vendor/golang.org/x/tools/internal/modindex/symbols.go
    new file mode 100644
    index 000000000000..33bf2641f7b6
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/modindex/symbols.go
    @@ -0,0 +1,217 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package modindex
    +
    +import (
    +	"fmt"
    +	"go/ast"
    +	"go/parser"
    +	"go/token"
    +	"go/types"
    +	"os"
    +	"path/filepath"
    +	"slices"
    +	"strings"
    +
    +	"golang.org/x/sync/errgroup"
    +)
    +
    +// The name of a symbol contains information about the symbol:
    +//  T for types, TD if the type is deprecated
    +//  C for consts, CD if the const is deprecated
    +//  V for vars, VD if the var is deprecated
    +// and for funcs:  F  ( )*
    +// any spaces in  are replaced by $s so that the fields
    +// of the name are space separated. F is replaced by FD if the func
    +// is deprecated.
    +type symbol struct {
    +	pkg  string // name of the symbols's package
    +	name string // declared name
    +	kind string // T, C, V, or F
    +	sig  string // signature information, for F
    +}
    +
    +// find the symbols for the best directories
    +func getSymbols(cd Abspath, dirs map[string][]*directory) {
    +	var g errgroup.Group
    +	g.SetLimit(-1) // maybe throttle this some day
    +	for _, vv := range dirs {
    +		// throttling some day?
    +		d := vv[0]
    +		g.Go(func() error {
    +			thedir := filepath.Join(string(cd), string(d.path))
    +			mode := parser.SkipObjectResolution | parser.ParseComments
    +
    +			fi, err := os.ReadDir(thedir)
    +			if err != nil {
    +				return nil // log this someday?
    +			}
    +			for _, fx := range fi {
    +				if !strings.HasSuffix(fx.Name(), ".go") || strings.HasSuffix(fx.Name(), "_test.go") {
    +					continue
    +				}
    +				fname := filepath.Join(thedir, fx.Name())
    +				tr, err := parser.ParseFile(token.NewFileSet(), fname, nil, mode)
    +				if err != nil {
    +					continue // ignore errors, someday log them?
    +				}
    +				d.syms = append(d.syms, getFileExports(tr)...)
    +			}
    +			return nil
    +		})
    +	}
    +	g.Wait()
    +}
    +
    +func getFileExports(f *ast.File) []symbol {
    +	pkg := f.Name.Name
    +	if pkg == "main" {
    +		return nil
    +	}
    +	var ans []symbol
    +	// should we look for //go:build ignore?
    +	for _, decl := range f.Decls {
    +		switch decl := decl.(type) {
    +		case *ast.FuncDecl:
    +			if decl.Recv != nil {
    +				// ignore methods, as we are completing package selections
    +				continue
    +			}
    +			name := decl.Name.Name
    +			dtype := decl.Type
    +			// not looking at dtype.TypeParams. That is, treating
    +			// generic functions just like non-generic ones.
    +			sig := dtype.Params
    +			kind := "F"
    +			if isDeprecated(decl.Doc) {
    +				kind += "D"
    +			}
    +			result := []string{fmt.Sprintf("%d", dtype.Results.NumFields())}
    +			for _, x := range sig.List {
    +				// This code creates a string representing the type.
    +				// TODO(pjw): it may be fragile:
    +				// 1. x.Type could be nil, perhaps in ill-formed code
    +				// 2. ExprString might someday change incompatibly to
    +				//    include struct tags, which can be arbitrary strings
    +				if x.Type == nil {
    +					// Can this happen without a parse error? (Files with parse
    +					// errors are ignored in getSymbols)
    +					continue // maybe report this someday
    +				}
    +				tp := types.ExprString(x.Type)
    +				if len(tp) == 0 {
    +					// Can this happen?
    +					continue // maybe report this someday
    +				}
    +				// This is only safe if ExprString never returns anything with a $
    +				// The only place a $ can occur seems to be in a struct tag, which
    +				// can be an arbitrary string literal, and ExprString does not presently
    +				// print struct tags. So for this to happen the type of a formal parameter
    +				// has to be a explict struct, e.g. foo(x struct{a int "$"}) and ExprString
    +				// would have to show the struct tag. Even testing for this case seems
    +				// a waste of effort, but let's not ignore such pathologies
    +				if strings.Contains(tp, "$") {
    +					continue
    +				}
    +				tp = strings.Replace(tp, " ", "$", -1)
    +				if len(x.Names) == 0 {
    +					result = append(result, "_")
    +					result = append(result, tp)
    +				} else {
    +					for _, y := range x.Names {
    +						result = append(result, y.Name)
    +						result = append(result, tp)
    +					}
    +				}
    +			}
    +			sigs := strings.Join(result, " ")
    +			if s := newsym(pkg, name, kind, sigs); s != nil {
    +				ans = append(ans, *s)
    +			}
    +		case *ast.GenDecl:
    +			depr := isDeprecated(decl.Doc)
    +			switch decl.Tok {
    +			case token.CONST, token.VAR:
    +				tp := "V"
    +				if decl.Tok == token.CONST {
    +					tp = "C"
    +				}
    +				if depr {
    +					tp += "D"
    +				}
    +				for _, sp := range decl.Specs {
    +					for _, x := range sp.(*ast.ValueSpec).Names {
    +						if s := newsym(pkg, x.Name, tp, ""); s != nil {
    +							ans = append(ans, *s)
    +						}
    +					}
    +				}
    +			case token.TYPE:
    +				tp := "T"
    +				if depr {
    +					tp += "D"
    +				}
    +				for _, sp := range decl.Specs {
    +					if s := newsym(pkg, sp.(*ast.TypeSpec).Name.Name, tp, ""); s != nil {
    +						ans = append(ans, *s)
    +					}
    +				}
    +			}
    +		}
    +	}
    +	return ans
    +}
    +
    +func newsym(pkg, name, kind, sig string) *symbol {
    +	if len(name) == 0 || !ast.IsExported(name) {
    +		return nil
    +	}
    +	sym := symbol{pkg: pkg, name: name, kind: kind, sig: sig}
    +	return &sym
    +}
    +
    +func isDeprecated(doc *ast.CommentGroup) bool {
    +	if doc == nil {
    +		return false
    +	}
    +	// go.dev/wiki/Deprecated Paragraph starting 'Deprecated:'
    +	// This code fails for /* Deprecated: */, but it's the code from
    +	// gopls/internal/analysis/deprecated
    +	lines := strings.Split(doc.Text(), "\n\n")
    +	for _, line := range lines {
    +		if strings.HasPrefix(line, "Deprecated:") {
    +			return true
    +		}
    +	}
    +	return false
    +}
    +
    +// return the package name and the value for the symbols.
    +// if there are multiple packages, choose one arbitrarily
    +// the returned slice is sorted lexicographically
    +func processSyms(syms []symbol) (string, []string) {
    +	if len(syms) == 0 {
    +		return "", nil
    +	}
    +	slices.SortFunc(syms, func(l, r symbol) int {
    +		return strings.Compare(l.name, r.name)
    +	})
    +	pkg := syms[0].pkg
    +	var names []string
    +	for _, s := range syms {
    +		var nx string
    +		if s.pkg == pkg {
    +			if s.sig != "" {
    +				nx = fmt.Sprintf("%s %s %s", s.name, s.kind, s.sig)
    +			} else {
    +				nx = fmt.Sprintf("%s %s", s.name, s.kind)
    +			}
    +			names = append(names, nx)
    +		} else {
    +			continue // PJW: do we want to keep track of these?
    +		}
    +	}
    +	return pkg, names
    +}
    diff --git a/vendor/golang.org/x/tools/internal/modindex/types.go b/vendor/golang.org/x/tools/internal/modindex/types.go
    new file mode 100644
    index 000000000000..ece448863092
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/modindex/types.go
    @@ -0,0 +1,25 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package modindex
    +
    +import (
    +	"strings"
    +)
    +
    +// some special types to avoid confusions
    +
    +// distinguish various types of directory names. It's easy to get confused.
    +type Abspath string // absolute paths
    +type Relpath string // paths with GOMODCACHE prefix removed
    +
    +func toRelpath(cachedir Abspath, s string) Relpath {
    +	if strings.HasPrefix(s, string(cachedir)) {
    +		if s == string(cachedir) {
    +			return Relpath("")
    +		}
    +		return Relpath(s[len(cachedir)+1:])
    +	}
    +	return Relpath(s)
    +}
    diff --git a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go
    index 44719de173bf..66e69b4389d5 100644
    --- a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go
    +++ b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go
    @@ -5,7 +5,6 @@
     // Package packagesinternal exposes internal-only fields from go/packages.
     package packagesinternal
     
    -var GetForTest = func(p interface{}) string { return "" }
     var GetDepsErrors = func(p interface{}) []*PackageError { return nil }
     
     type PackageError struct {
    @@ -16,7 +15,6 @@ type PackageError struct {
     
     var TypecheckCgo int
     var DepsErrors int // must be set as a LoadMode to call GetDepsErrors
    -var ForTest int    // must be set as a LoadMode to call GetForTest
     
     var SetModFlag = func(config interface{}, value string) {}
     var SetModFile = func(config interface{}, value string) {}
    diff --git a/vendor/golang.org/x/tools/internal/pkgbits/decoder.go b/vendor/golang.org/x/tools/internal/pkgbits/decoder.go
    index 2acd85851e36..f6cb37c5c3d1 100644
    --- a/vendor/golang.org/x/tools/internal/pkgbits/decoder.go
    +++ b/vendor/golang.org/x/tools/internal/pkgbits/decoder.go
    @@ -21,10 +21,7 @@ import (
     // export data.
     type PkgDecoder struct {
     	// version is the file format version.
    -	version uint32
    -
    -	// aliases determines whether types.Aliases should be created
    -	aliases bool
    +	version Version
     
     	// sync indicates whether the file uses sync markers.
     	sync bool
    @@ -71,12 +68,9 @@ func (pr *PkgDecoder) SyncMarkers() bool { return pr.sync }
     // NewPkgDecoder returns a PkgDecoder initialized to read the Unified
     // IR export data from input. pkgPath is the package path for the
     // compilation unit that produced the export data.
    -//
    -// TODO(mdempsky): Remove pkgPath parameter; unneeded since CL 391014.
     func NewPkgDecoder(pkgPath, input string) PkgDecoder {
     	pr := PkgDecoder{
     		pkgPath: pkgPath,
    -		//aliases: aliases.Enabled(),
     	}
     
     	// TODO(mdempsky): Implement direct indexing of input string to
    @@ -84,14 +78,15 @@ func NewPkgDecoder(pkgPath, input string) PkgDecoder {
     
     	r := strings.NewReader(input)
     
    -	assert(binary.Read(r, binary.LittleEndian, &pr.version) == nil)
    +	var ver uint32
    +	assert(binary.Read(r, binary.LittleEndian, &ver) == nil)
    +	pr.version = Version(ver)
     
    -	switch pr.version {
    -	default:
    -		panic(fmt.Errorf("unsupported version: %v", pr.version))
    -	case 0:
    -		// no flags
    -	case 1:
    +	if pr.version >= numVersions {
    +		panic(fmt.Errorf("cannot decode %q, export data version %d is greater than maximum supported version %d", pkgPath, pr.version, numVersions-1))
    +	}
    +
    +	if pr.version.Has(Flags) {
     		var flags uint32
     		assert(binary.Read(r, binary.LittleEndian, &flags) == nil)
     		pr.sync = flags&flagSyncMarkers != 0
    @@ -106,7 +101,9 @@ func NewPkgDecoder(pkgPath, input string) PkgDecoder {
     	assert(err == nil)
     
     	pr.elemData = input[pos:]
    -	assert(len(pr.elemData)-8 == int(pr.elemEnds[len(pr.elemEnds)-1]))
    +
    +	const fingerprintSize = 8
    +	assert(len(pr.elemData)-fingerprintSize == int(pr.elemEnds[len(pr.elemEnds)-1]))
     
     	return pr
     }
    @@ -140,7 +137,7 @@ func (pr *PkgDecoder) AbsIdx(k RelocKind, idx Index) int {
     		absIdx += int(pr.elemEndsEnds[k-1])
     	}
     	if absIdx >= int(pr.elemEndsEnds[k]) {
    -		errorf("%v:%v is out of bounds; %v", k, idx, pr.elemEndsEnds)
    +		panicf("%v:%v is out of bounds; %v", k, idx, pr.elemEndsEnds)
     	}
     	return absIdx
     }
    @@ -197,9 +194,7 @@ func (pr *PkgDecoder) NewDecoderRaw(k RelocKind, idx Index) Decoder {
     		Idx:    idx,
     	}
     
    -	// TODO(mdempsky) r.data.Reset(...) after #44505 is resolved.
    -	r.Data = *strings.NewReader(pr.DataIdx(k, idx))
    -
    +	r.Data.Reset(pr.DataIdx(k, idx))
     	r.Sync(SyncRelocs)
     	r.Relocs = make([]RelocEnt, r.Len())
     	for i := range r.Relocs {
    @@ -248,7 +243,7 @@ type Decoder struct {
     
     func (r *Decoder) checkErr(err error) {
     	if err != nil {
    -		errorf("unexpected decoding error: %w", err)
    +		panicf("unexpected decoding error: %w", err)
     	}
     }
     
    @@ -519,3 +514,6 @@ func (pr *PkgDecoder) PeekObj(idx Index) (string, string, CodeObj) {
     
     	return path, name, tag
     }
    +
    +// Version reports the version of the bitstream.
    +func (w *Decoder) Version() Version { return w.common.version }
    diff --git a/vendor/golang.org/x/tools/internal/pkgbits/encoder.go b/vendor/golang.org/x/tools/internal/pkgbits/encoder.go
    index 6482617a4fcc..c17a12399d05 100644
    --- a/vendor/golang.org/x/tools/internal/pkgbits/encoder.go
    +++ b/vendor/golang.org/x/tools/internal/pkgbits/encoder.go
    @@ -12,18 +12,15 @@ import (
     	"io"
     	"math/big"
     	"runtime"
    +	"strings"
     )
     
    -// currentVersion is the current version number.
    -//
    -//   - v0: initial prototype
    -//
    -//   - v1: adds the flags uint32 word
    -const currentVersion uint32 = 1
    -
     // A PkgEncoder provides methods for encoding a package's Unified IR
     // export data.
     type PkgEncoder struct {
    +	// version of the bitstream.
    +	version Version
    +
     	// elems holds the bitstream for previously encoded elements.
     	elems [numRelocs][]string
     
    @@ -47,8 +44,9 @@ func (pw *PkgEncoder) SyncMarkers() bool { return pw.syncFrames >= 0 }
     // export data files, but can help diagnosing desync errors in
     // higher-level Unified IR reader/writer code. If syncFrames is
     // negative, then sync markers are omitted entirely.
    -func NewPkgEncoder(syncFrames int) PkgEncoder {
    +func NewPkgEncoder(version Version, syncFrames int) PkgEncoder {
     	return PkgEncoder{
    +		version:    version,
     		stringsIdx: make(map[string]Index),
     		syncFrames: syncFrames,
     	}
    @@ -64,13 +62,15 @@ func (pw *PkgEncoder) DumpTo(out0 io.Writer) (fingerprint [8]byte) {
     		assert(binary.Write(out, binary.LittleEndian, x) == nil)
     	}
     
    -	writeUint32(currentVersion)
    +	writeUint32(uint32(pw.version))
     
    -	var flags uint32
    -	if pw.SyncMarkers() {
    -		flags |= flagSyncMarkers
    +	if pw.version.Has(Flags) {
    +		var flags uint32
    +		if pw.SyncMarkers() {
    +			flags |= flagSyncMarkers
    +		}
    +		writeUint32(flags)
     	}
    -	writeUint32(flags)
     
     	// Write elemEndsEnds.
     	var sum uint32
    @@ -159,7 +159,7 @@ type Encoder struct {
     
     // Flush finalizes the element's bitstream and returns its Index.
     func (w *Encoder) Flush() Index {
    -	var sb bytes.Buffer // TODO(mdempsky): strings.Builder after #44505 is resolved
    +	var sb strings.Builder
     
     	// Backup the data so we write the relocations at the front.
     	var tmp bytes.Buffer
    @@ -189,7 +189,7 @@ func (w *Encoder) Flush() Index {
     
     func (w *Encoder) checkErr(err error) {
     	if err != nil {
    -		errorf("unexpected encoding error: %v", err)
    +		panicf("unexpected encoding error: %v", err)
     	}
     }
     
    @@ -320,8 +320,14 @@ func (w *Encoder) Code(c Code) {
     // section (if not already present), and then writing a relocation
     // into the element bitstream.
     func (w *Encoder) String(s string) {
    +	w.StringRef(w.p.StringIdx(s))
    +}
    +
    +// StringRef writes a reference to the given index, which must be a
    +// previously encoded string value.
    +func (w *Encoder) StringRef(idx Index) {
     	w.Sync(SyncString)
    -	w.Reloc(RelocString, w.p.StringIdx(s))
    +	w.Reloc(RelocString, idx)
     }
     
     // Strings encodes and writes a variable-length slice of strings into
    @@ -348,7 +354,7 @@ func (w *Encoder) Value(val constant.Value) {
     func (w *Encoder) scalar(val constant.Value) {
     	switch v := constant.Val(val).(type) {
     	default:
    -		errorf("unhandled %v (%v)", val, val.Kind())
    +		panicf("unhandled %v (%v)", val, val.Kind())
     	case bool:
     		w.Code(ValBool)
     		w.Bool(v)
    @@ -381,3 +387,6 @@ func (w *Encoder) bigFloat(v *big.Float) {
     	b := v.Append(nil, 'p', -1)
     	w.String(string(b)) // TODO: More efficient encoding.
     }
    +
    +// Version reports the version of the bitstream.
    +func (w *Encoder) Version() Version { return w.p.version }
    diff --git a/vendor/golang.org/x/tools/internal/pkgbits/frames_go1.go b/vendor/golang.org/x/tools/internal/pkgbits/frames_go1.go
    deleted file mode 100644
    index 5294f6a63edd..000000000000
    --- a/vendor/golang.org/x/tools/internal/pkgbits/frames_go1.go
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -// Copyright 2021 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build !go1.7
    -// +build !go1.7
    -
    -// TODO(mdempsky): Remove after #44505 is resolved
    -
    -package pkgbits
    -
    -import "runtime"
    -
    -func walkFrames(pcs []uintptr, visit frameVisitor) {
    -	for _, pc := range pcs {
    -		fn := runtime.FuncForPC(pc)
    -		file, line := fn.FileLine(pc)
    -
    -		visit(file, line, fn.Name(), pc-fn.Entry())
    -	}
    -}
    diff --git a/vendor/golang.org/x/tools/internal/pkgbits/frames_go17.go b/vendor/golang.org/x/tools/internal/pkgbits/frames_go17.go
    deleted file mode 100644
    index 2324ae7adfe2..000000000000
    --- a/vendor/golang.org/x/tools/internal/pkgbits/frames_go17.go
    +++ /dev/null
    @@ -1,28 +0,0 @@
    -// Copyright 2021 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build go1.7
    -// +build go1.7
    -
    -package pkgbits
    -
    -import "runtime"
    -
    -// walkFrames calls visit for each call frame represented by pcs.
    -//
    -// pcs should be a slice of PCs, as returned by runtime.Callers.
    -func walkFrames(pcs []uintptr, visit frameVisitor) {
    -	if len(pcs) == 0 {
    -		return
    -	}
    -
    -	frames := runtime.CallersFrames(pcs)
    -	for {
    -		frame, more := frames.Next()
    -		visit(frame.File, frame.Line, frame.Function, frame.PC-frame.Entry)
    -		if !more {
    -			return
    -		}
    -	}
    -}
    diff --git a/vendor/golang.org/x/tools/internal/pkgbits/support.go b/vendor/golang.org/x/tools/internal/pkgbits/support.go
    index ad26d3b28cae..50534a295536 100644
    --- a/vendor/golang.org/x/tools/internal/pkgbits/support.go
    +++ b/vendor/golang.org/x/tools/internal/pkgbits/support.go
    @@ -12,6 +12,6 @@ func assert(b bool) {
     	}
     }
     
    -func errorf(format string, args ...interface{}) {
    +func panicf(format string, args ...any) {
     	panic(fmt.Errorf(format, args...))
     }
    diff --git a/vendor/golang.org/x/tools/internal/pkgbits/sync.go b/vendor/golang.org/x/tools/internal/pkgbits/sync.go
    index 5bd51ef71700..1520b73afb9e 100644
    --- a/vendor/golang.org/x/tools/internal/pkgbits/sync.go
    +++ b/vendor/golang.org/x/tools/internal/pkgbits/sync.go
    @@ -6,6 +6,7 @@ package pkgbits
     
     import (
     	"fmt"
    +	"runtime"
     	"strings"
     )
     
    @@ -23,6 +24,24 @@ func fmtFrames(pcs ...uintptr) []string {
     
     type frameVisitor func(file string, line int, name string, offset uintptr)
     
    +// walkFrames calls visit for each call frame represented by pcs.
    +//
    +// pcs should be a slice of PCs, as returned by runtime.Callers.
    +func walkFrames(pcs []uintptr, visit frameVisitor) {
    +	if len(pcs) == 0 {
    +		return
    +	}
    +
    +	frames := runtime.CallersFrames(pcs)
    +	for {
    +		frame, more := frames.Next()
    +		visit(frame.File, frame.Line, frame.Function, frame.PC-frame.Entry)
    +		if !more {
    +			return
    +		}
    +	}
    +}
    +
     // SyncMarker is an enum type that represents markers that may be
     // written to export data to ensure the reader and writer stay
     // synchronized.
    @@ -110,4 +129,8 @@ const (
     	SyncStmtsEnd
     	SyncLabel
     	SyncOptLabel
    +
    +	SyncMultiExpr
    +	SyncRType
    +	SyncConvRTTI
     )
    diff --git a/vendor/golang.org/x/tools/internal/pkgbits/syncmarker_string.go b/vendor/golang.org/x/tools/internal/pkgbits/syncmarker_string.go
    index 4a5b0ca5f2ff..582ad56d3e09 100644
    --- a/vendor/golang.org/x/tools/internal/pkgbits/syncmarker_string.go
    +++ b/vendor/golang.org/x/tools/internal/pkgbits/syncmarker_string.go
    @@ -74,11 +74,14 @@ func _() {
     	_ = x[SyncStmtsEnd-64]
     	_ = x[SyncLabel-65]
     	_ = x[SyncOptLabel-66]
    +	_ = x[SyncMultiExpr-67]
    +	_ = x[SyncRType-68]
    +	_ = x[SyncConvRTTI-69]
     }
     
    -const _SyncMarker_name = "EOFBoolInt64Uint64StringValueValRelocsRelocUseRelocPublicPosPosBaseObjectObject1PkgPkgDefMethodTypeTypeIdxTypeParamNamesSignatureParamsParamCodeObjSymLocalIdentSelectorPrivateFuncExtVarExtTypeExtPragmaExprListExprsExprExprTypeAssignOpFuncLitCompLitDeclFuncBodyOpenScopeCloseScopeCloseAnotherScopeDeclNamesDeclNameStmtsBlockStmtIfStmtForStmtSwitchStmtRangeStmtCaseClauseCommClauseSelectStmtDeclsLabeledStmtUseObjLocalAddLocalLinknameStmt1StmtsEndLabelOptLabel"
    +const _SyncMarker_name = "EOFBoolInt64Uint64StringValueValRelocsRelocUseRelocPublicPosPosBaseObjectObject1PkgPkgDefMethodTypeTypeIdxTypeParamNamesSignatureParamsParamCodeObjSymLocalIdentSelectorPrivateFuncExtVarExtTypeExtPragmaExprListExprsExprExprTypeAssignOpFuncLitCompLitDeclFuncBodyOpenScopeCloseScopeCloseAnotherScopeDeclNamesDeclNameStmtsBlockStmtIfStmtForStmtSwitchStmtRangeStmtCaseClauseCommClauseSelectStmtDeclsLabeledStmtUseObjLocalAddLocalLinknameStmt1StmtsEndLabelOptLabelMultiExprRTypeConvRTTI"
     
    -var _SyncMarker_index = [...]uint16{0, 3, 7, 12, 18, 24, 29, 32, 38, 43, 51, 57, 60, 67, 73, 80, 83, 89, 95, 99, 106, 120, 129, 135, 140, 147, 150, 160, 168, 175, 182, 188, 195, 201, 209, 214, 218, 226, 232, 234, 241, 248, 252, 260, 269, 279, 296, 305, 313, 318, 327, 333, 340, 350, 359, 369, 379, 389, 394, 405, 416, 424, 432, 437, 445, 450, 458}
    +var _SyncMarker_index = [...]uint16{0, 3, 7, 12, 18, 24, 29, 32, 38, 43, 51, 57, 60, 67, 73, 80, 83, 89, 95, 99, 106, 120, 129, 135, 140, 147, 150, 160, 168, 175, 182, 188, 195, 201, 209, 214, 218, 226, 232, 234, 241, 248, 252, 260, 269, 279, 296, 305, 313, 318, 327, 333, 340, 350, 359, 369, 379, 389, 394, 405, 416, 424, 432, 437, 445, 450, 458, 467, 472, 480}
     
     func (i SyncMarker) String() string {
     	i -= 1
    diff --git a/vendor/golang.org/x/tools/internal/pkgbits/version.go b/vendor/golang.org/x/tools/internal/pkgbits/version.go
    new file mode 100644
    index 000000000000..53af9df22b38
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/pkgbits/version.go
    @@ -0,0 +1,85 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package pkgbits
    +
    +// Version indicates a version of a unified IR bitstream.
    +// Each Version indicates the addition, removal, or change of
    +// new data in the bitstream.
    +//
    +// These are serialized to disk and the interpretation remains fixed.
    +type Version uint32
    +
    +const (
    +	// V0: initial prototype.
    +	//
    +	// All data that is not assigned a Field is in version V0
    +	// and has not been deprecated.
    +	V0 Version = iota
    +
    +	// V1: adds the Flags uint32 word
    +	V1
    +
    +	// V2: removes unused legacy fields and supports type parameters for aliases.
    +	// - remove the legacy "has init" bool from the public root
    +	// - remove obj's "derived func instance" bool
    +	// - add a TypeParamNames field to ObjAlias
    +	// - remove derived info "needed" bool
    +	V2
    +
    +	numVersions = iota
    +)
    +
    +// Field denotes a unit of data in the serialized unified IR bitstream.
    +// It is conceptually a like field in a structure.
    +//
    +// We only really need Fields when the data may or may not be present
    +// in a stream based on the Version of the bitstream.
    +//
    +// Unlike much of pkgbits, Fields are not serialized and
    +// can change values as needed.
    +type Field int
    +
    +const (
    +	// Flags in a uint32 in the header of a bitstream
    +	// that is used to indicate whether optional features are enabled.
    +	Flags Field = iota
    +
    +	// Deprecated: HasInit was a bool indicating whether a package
    +	// has any init functions.
    +	HasInit
    +
    +	// Deprecated: DerivedFuncInstance was a bool indicating
    +	// whether an object was a function instance.
    +	DerivedFuncInstance
    +
    +	// ObjAlias has a list of TypeParamNames.
    +	AliasTypeParamNames
    +
    +	// Deprecated: DerivedInfoNeeded was a bool indicating
    +	// whether a type was a derived type.
    +	DerivedInfoNeeded
    +
    +	numFields = iota
    +)
    +
    +// introduced is the version a field was added.
    +var introduced = [numFields]Version{
    +	Flags:               V1,
    +	AliasTypeParamNames: V2,
    +}
    +
    +// removed is the version a field was removed in or 0 for fields
    +// that have not yet been deprecated.
    +// (So removed[f]-1 is the last version it is included in.)
    +var removed = [numFields]Version{
    +	HasInit:             V2,
    +	DerivedFuncInstance: V2,
    +	DerivedInfoNeeded:   V2,
    +}
    +
    +// Has reports whether field f is present in a bitstream at version v.
    +func (v Version) Has(f Field) bool {
    +	return introduced[f] <= v && (v < removed[f] || removed[f] == V0)
    +}
    diff --git a/vendor/golang.org/x/tools/internal/stdlib/manifest.go b/vendor/golang.org/x/tools/internal/stdlib/manifest.go
    index a928acf29fac..9f0b871ff6be 100644
    --- a/vendor/golang.org/x/tools/internal/stdlib/manifest.go
    +++ b/vendor/golang.org/x/tools/internal/stdlib/manifest.go
    @@ -268,6 +268,8 @@ var PackageSymbols = map[string][]Symbol{
     		{"ErrTooLarge", Var, 0},
     		{"Fields", Func, 0},
     		{"FieldsFunc", Func, 0},
    +		{"FieldsFuncSeq", Func, 24},
    +		{"FieldsSeq", Func, 24},
     		{"HasPrefix", Func, 0},
     		{"HasSuffix", Func, 0},
     		{"Index", Func, 0},
    @@ -280,6 +282,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"LastIndexAny", Func, 0},
     		{"LastIndexByte", Func, 5},
     		{"LastIndexFunc", Func, 0},
    +		{"Lines", Func, 24},
     		{"Map", Func, 0},
     		{"MinRead", Const, 0},
     		{"NewBuffer", Func, 0},
    @@ -293,7 +296,9 @@ var PackageSymbols = map[string][]Symbol{
     		{"Split", Func, 0},
     		{"SplitAfter", Func, 0},
     		{"SplitAfterN", Func, 0},
    +		{"SplitAfterSeq", Func, 24},
     		{"SplitN", Func, 0},
    +		{"SplitSeq", Func, 24},
     		{"Title", Func, 0},
     		{"ToLower", Func, 0},
     		{"ToLowerSpecial", Func, 0},
    @@ -535,6 +540,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"NewCTR", Func, 0},
     		{"NewGCM", Func, 2},
     		{"NewGCMWithNonceSize", Func, 5},
    +		{"NewGCMWithRandomNonce", Func, 24},
     		{"NewGCMWithTagSize", Func, 11},
     		{"NewOFB", Func, 0},
     		{"Stream", Type, 0},
    @@ -673,6 +679,14 @@ var PackageSymbols = map[string][]Symbol{
     		{"Unmarshal", Func, 0},
     		{"UnmarshalCompressed", Func, 15},
     	},
    +	"crypto/fips140": {
    +		{"Enabled", Func, 24},
    +	},
    +	"crypto/hkdf": {
    +		{"Expand", Func, 24},
    +		{"Extract", Func, 24},
    +		{"Key", Func, 24},
    +	},
     	"crypto/hmac": {
     		{"Equal", Func, 1},
     		{"New", Func, 0},
    @@ -683,11 +697,43 @@ var PackageSymbols = map[string][]Symbol{
     		{"Size", Const, 0},
     		{"Sum", Func, 2},
     	},
    +	"crypto/mlkem": {
    +		{"(*DecapsulationKey1024).Bytes", Method, 24},
    +		{"(*DecapsulationKey1024).Decapsulate", Method, 24},
    +		{"(*DecapsulationKey1024).EncapsulationKey", Method, 24},
    +		{"(*DecapsulationKey768).Bytes", Method, 24},
    +		{"(*DecapsulationKey768).Decapsulate", Method, 24},
    +		{"(*DecapsulationKey768).EncapsulationKey", Method, 24},
    +		{"(*EncapsulationKey1024).Bytes", Method, 24},
    +		{"(*EncapsulationKey1024).Encapsulate", Method, 24},
    +		{"(*EncapsulationKey768).Bytes", Method, 24},
    +		{"(*EncapsulationKey768).Encapsulate", Method, 24},
    +		{"CiphertextSize1024", Const, 24},
    +		{"CiphertextSize768", Const, 24},
    +		{"DecapsulationKey1024", Type, 24},
    +		{"DecapsulationKey768", Type, 24},
    +		{"EncapsulationKey1024", Type, 24},
    +		{"EncapsulationKey768", Type, 24},
    +		{"EncapsulationKeySize1024", Const, 24},
    +		{"EncapsulationKeySize768", Const, 24},
    +		{"GenerateKey1024", Func, 24},
    +		{"GenerateKey768", Func, 24},
    +		{"NewDecapsulationKey1024", Func, 24},
    +		{"NewDecapsulationKey768", Func, 24},
    +		{"NewEncapsulationKey1024", Func, 24},
    +		{"NewEncapsulationKey768", Func, 24},
    +		{"SeedSize", Const, 24},
    +		{"SharedKeySize", Const, 24},
    +	},
    +	"crypto/pbkdf2": {
    +		{"Key", Func, 24},
    +	},
     	"crypto/rand": {
     		{"Int", Func, 0},
     		{"Prime", Func, 0},
     		{"Read", Func, 0},
     		{"Reader", Var, 0},
    +		{"Text", Func, 24},
     	},
     	"crypto/rc4": {
     		{"(*Cipher).Reset", Method, 0},
    @@ -766,6 +812,39 @@ var PackageSymbols = map[string][]Symbol{
     		{"Sum224", Func, 2},
     		{"Sum256", Func, 2},
     	},
    +	"crypto/sha3": {
    +		{"(*SHA3).AppendBinary", Method, 24},
    +		{"(*SHA3).BlockSize", Method, 24},
    +		{"(*SHA3).MarshalBinary", Method, 24},
    +		{"(*SHA3).Reset", Method, 24},
    +		{"(*SHA3).Size", Method, 24},
    +		{"(*SHA3).Sum", Method, 24},
    +		{"(*SHA3).UnmarshalBinary", Method, 24},
    +		{"(*SHA3).Write", Method, 24},
    +		{"(*SHAKE).AppendBinary", Method, 24},
    +		{"(*SHAKE).BlockSize", Method, 24},
    +		{"(*SHAKE).MarshalBinary", Method, 24},
    +		{"(*SHAKE).Read", Method, 24},
    +		{"(*SHAKE).Reset", Method, 24},
    +		{"(*SHAKE).UnmarshalBinary", Method, 24},
    +		{"(*SHAKE).Write", Method, 24},
    +		{"New224", Func, 24},
    +		{"New256", Func, 24},
    +		{"New384", Func, 24},
    +		{"New512", Func, 24},
    +		{"NewCSHAKE128", Func, 24},
    +		{"NewCSHAKE256", Func, 24},
    +		{"NewSHAKE128", Func, 24},
    +		{"NewSHAKE256", Func, 24},
    +		{"SHA3", Type, 24},
    +		{"SHAKE", Type, 24},
    +		{"Sum224", Func, 24},
    +		{"Sum256", Func, 24},
    +		{"Sum384", Func, 24},
    +		{"Sum512", Func, 24},
    +		{"SumSHAKE128", Func, 24},
    +		{"SumSHAKE256", Func, 24},
    +	},
     	"crypto/sha512": {
     		{"BlockSize", Const, 0},
     		{"New", Func, 0},
    @@ -788,6 +867,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"ConstantTimeEq", Func, 0},
     		{"ConstantTimeLessOrEq", Func, 2},
     		{"ConstantTimeSelect", Func, 0},
    +		{"WithDataIndependentTiming", Func, 24},
     		{"XORBytes", Func, 20},
     	},
     	"crypto/tls": {
    @@ -864,6 +944,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"ClientHelloInfo", Type, 4},
     		{"ClientHelloInfo.CipherSuites", Field, 4},
     		{"ClientHelloInfo.Conn", Field, 8},
    +		{"ClientHelloInfo.Extensions", Field, 24},
     		{"ClientHelloInfo.ServerName", Field, 4},
     		{"ClientHelloInfo.SignatureSchemes", Field, 8},
     		{"ClientHelloInfo.SupportedCurves", Field, 4},
    @@ -881,6 +962,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"Config.CurvePreferences", Field, 3},
     		{"Config.DynamicRecordSizingDisabled", Field, 7},
     		{"Config.EncryptedClientHelloConfigList", Field, 23},
    +		{"Config.EncryptedClientHelloKeys", Field, 24},
     		{"Config.EncryptedClientHelloRejectionVerify", Field, 23},
     		{"Config.GetCertificate", Field, 4},
     		{"Config.GetClientCertificate", Field, 8},
    @@ -934,6 +1016,10 @@ var PackageSymbols = map[string][]Symbol{
     		{"ECHRejectionError", Type, 23},
     		{"ECHRejectionError.RetryConfigList", Field, 23},
     		{"Ed25519", Const, 13},
    +		{"EncryptedClientHelloKey", Type, 24},
    +		{"EncryptedClientHelloKey.Config", Field, 24},
    +		{"EncryptedClientHelloKey.PrivateKey", Field, 24},
    +		{"EncryptedClientHelloKey.SendAsRetry", Field, 24},
     		{"InsecureCipherSuites", Func, 14},
     		{"Listen", Func, 0},
     		{"LoadX509KeyPair", Func, 0},
    @@ -951,7 +1037,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"ParseSessionState", Func, 21},
     		{"QUICClient", Func, 21},
     		{"QUICConfig", Type, 21},
    -		{"QUICConfig.EnableStoreSessionEvent", Field, 23},
    +		{"QUICConfig.EnableSessionEvents", Field, 23},
     		{"QUICConfig.TLSConfig", Field, 21},
     		{"QUICConn", Type, 21},
     		{"QUICEncryptionLevel", Type, 21},
    @@ -1032,6 +1118,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"VersionTLS12", Const, 2},
     		{"VersionTLS13", Const, 12},
     		{"X25519", Const, 8},
    +		{"X25519MLKEM768", Const, 24},
     		{"X509KeyPair", Func, 0},
     	},
     	"crypto/x509": {
    @@ -1056,6 +1143,8 @@ var PackageSymbols = map[string][]Symbol{
     		{"(ConstraintViolationError).Error", Method, 0},
     		{"(HostnameError).Error", Method, 0},
     		{"(InsecureAlgorithmError).Error", Method, 6},
    +		{"(OID).AppendBinary", Method, 24},
    +		{"(OID).AppendText", Method, 24},
     		{"(OID).Equal", Method, 22},
     		{"(OID).EqualASN1OID", Method, 22},
     		{"(OID).MarshalBinary", Method, 23},
    @@ -1084,6 +1173,10 @@ var PackageSymbols = map[string][]Symbol{
     		{"Certificate.Extensions", Field, 2},
     		{"Certificate.ExtraExtensions", Field, 2},
     		{"Certificate.IPAddresses", Field, 1},
    +		{"Certificate.InhibitAnyPolicy", Field, 24},
    +		{"Certificate.InhibitAnyPolicyZero", Field, 24},
    +		{"Certificate.InhibitPolicyMapping", Field, 24},
    +		{"Certificate.InhibitPolicyMappingZero", Field, 24},
     		{"Certificate.IsCA", Field, 0},
     		{"Certificate.Issuer", Field, 0},
     		{"Certificate.IssuingCertificateURL", Field, 2},
    @@ -1100,6 +1193,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"Certificate.PermittedURIDomains", Field, 10},
     		{"Certificate.Policies", Field, 22},
     		{"Certificate.PolicyIdentifiers", Field, 0},
    +		{"Certificate.PolicyMappings", Field, 24},
     		{"Certificate.PublicKey", Field, 0},
     		{"Certificate.PublicKeyAlgorithm", Field, 0},
     		{"Certificate.Raw", Field, 0},
    @@ -1107,6 +1201,8 @@ var PackageSymbols = map[string][]Symbol{
     		{"Certificate.RawSubject", Field, 0},
     		{"Certificate.RawSubjectPublicKeyInfo", Field, 0},
     		{"Certificate.RawTBSCertificate", Field, 0},
    +		{"Certificate.RequireExplicitPolicy", Field, 24},
    +		{"Certificate.RequireExplicitPolicyZero", Field, 24},
     		{"Certificate.SerialNumber", Field, 0},
     		{"Certificate.Signature", Field, 0},
     		{"Certificate.SignatureAlgorithm", Field, 0},
    @@ -1198,6 +1294,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"NameConstraintsWithoutSANs", Const, 10},
     		{"NameMismatch", Const, 8},
     		{"NewCertPool", Func, 0},
    +		{"NoValidChains", Const, 24},
     		{"NotAuthorizedToSign", Const, 0},
     		{"OID", Type, 22},
     		{"OIDFromInts", Func, 22},
    @@ -1219,6 +1316,9 @@ var PackageSymbols = map[string][]Symbol{
     		{"ParsePKCS8PrivateKey", Func, 0},
     		{"ParsePKIXPublicKey", Func, 0},
     		{"ParseRevocationList", Func, 19},
    +		{"PolicyMapping", Type, 24},
    +		{"PolicyMapping.IssuerDomainPolicy", Field, 24},
    +		{"PolicyMapping.SubjectDomainPolicy", Field, 24},
     		{"PublicKeyAlgorithm", Type, 0},
     		{"PureEd25519", Const, 13},
     		{"RSA", Const, 0},
    @@ -1265,6 +1365,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"UnknownPublicKeyAlgorithm", Const, 0},
     		{"UnknownSignatureAlgorithm", Const, 0},
     		{"VerifyOptions", Type, 0},
    +		{"VerifyOptions.CertificatePolicies", Field, 24},
     		{"VerifyOptions.CurrentTime", Field, 0},
     		{"VerifyOptions.DNSName", Field, 0},
     		{"VerifyOptions.Intermediates", Field, 0},
    @@ -1975,6 +2076,8 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*File).DynString", Method, 1},
     		{"(*File).DynValue", Method, 21},
     		{"(*File).DynamicSymbols", Method, 4},
    +		{"(*File).DynamicVersionNeeds", Method, 24},
    +		{"(*File).DynamicVersions", Method, 24},
     		{"(*File).ImportedLibraries", Method, 0},
     		{"(*File).ImportedSymbols", Method, 0},
     		{"(*File).Section", Method, 0},
    @@ -2240,6 +2343,19 @@ var PackageSymbols = map[string][]Symbol{
     		{"DynFlag", Type, 0},
     		{"DynFlag1", Type, 21},
     		{"DynTag", Type, 0},
    +		{"DynamicVersion", Type, 24},
    +		{"DynamicVersion.Deps", Field, 24},
    +		{"DynamicVersion.Flags", Field, 24},
    +		{"DynamicVersion.Index", Field, 24},
    +		{"DynamicVersion.Name", Field, 24},
    +		{"DynamicVersionDep", Type, 24},
    +		{"DynamicVersionDep.Dep", Field, 24},
    +		{"DynamicVersionDep.Flags", Field, 24},
    +		{"DynamicVersionDep.Index", Field, 24},
    +		{"DynamicVersionFlag", Type, 24},
    +		{"DynamicVersionNeed", Type, 24},
    +		{"DynamicVersionNeed.Name", Field, 24},
    +		{"DynamicVersionNeed.Needs", Field, 24},
     		{"EI_ABIVERSION", Const, 0},
     		{"EI_CLASS", Const, 0},
     		{"EI_DATA", Const, 0},
    @@ -3726,8 +3842,19 @@ var PackageSymbols = map[string][]Symbol{
     		{"Symbol.Size", Field, 0},
     		{"Symbol.Value", Field, 0},
     		{"Symbol.Version", Field, 13},
    +		{"Symbol.VersionIndex", Field, 24},
    +		{"Symbol.VersionScope", Field, 24},
    +		{"SymbolVersionScope", Type, 24},
     		{"Type", Type, 0},
    +		{"VER_FLG_BASE", Const, 24},
    +		{"VER_FLG_INFO", Const, 24},
    +		{"VER_FLG_WEAK", Const, 24},
     		{"Version", Type, 0},
    +		{"VersionScopeGlobal", Const, 24},
    +		{"VersionScopeHidden", Const, 24},
    +		{"VersionScopeLocal", Const, 24},
    +		{"VersionScopeNone", Const, 24},
    +		{"VersionScopeSpecific", Const, 24},
     	},
     	"debug/gosym": {
     		{"(*DecodingError).Error", Method, 0},
    @@ -4453,8 +4580,10 @@ var PackageSymbols = map[string][]Symbol{
     		{"FS", Type, 16},
     	},
     	"encoding": {
    +		{"BinaryAppender", Type, 24},
     		{"BinaryMarshaler", Type, 2},
     		{"BinaryUnmarshaler", Type, 2},
    +		{"TextAppender", Type, 24},
     		{"TextMarshaler", Type, 2},
     		{"TextUnmarshaler", Type, 2},
     	},
    @@ -5984,13 +6113,16 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*Interface).Complete", Method, 5},
     		{"(*Interface).Embedded", Method, 5},
     		{"(*Interface).EmbeddedType", Method, 11},
    +		{"(*Interface).EmbeddedTypes", Method, 24},
     		{"(*Interface).Empty", Method, 5},
     		{"(*Interface).ExplicitMethod", Method, 5},
    +		{"(*Interface).ExplicitMethods", Method, 24},
     		{"(*Interface).IsComparable", Method, 18},
     		{"(*Interface).IsImplicit", Method, 18},
     		{"(*Interface).IsMethodSet", Method, 18},
     		{"(*Interface).MarkImplicit", Method, 18},
     		{"(*Interface).Method", Method, 5},
    +		{"(*Interface).Methods", Method, 24},
     		{"(*Interface).NumEmbeddeds", Method, 5},
     		{"(*Interface).NumExplicitMethods", Method, 5},
     		{"(*Interface).NumMethods", Method, 5},
    @@ -6011,9 +6143,11 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*MethodSet).At", Method, 5},
     		{"(*MethodSet).Len", Method, 5},
     		{"(*MethodSet).Lookup", Method, 5},
    +		{"(*MethodSet).Methods", Method, 24},
     		{"(*MethodSet).String", Method, 5},
     		{"(*Named).AddMethod", Method, 5},
     		{"(*Named).Method", Method, 5},
    +		{"(*Named).Methods", Method, 24},
     		{"(*Named).NumMethods", Method, 5},
     		{"(*Named).Obj", Method, 5},
     		{"(*Named).Origin", Method, 18},
    @@ -6054,6 +6188,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*Pointer).String", Method, 5},
     		{"(*Pointer).Underlying", Method, 5},
     		{"(*Scope).Child", Method, 5},
    +		{"(*Scope).Children", Method, 24},
     		{"(*Scope).Contains", Method, 5},
     		{"(*Scope).End", Method, 5},
     		{"(*Scope).Innermost", Method, 5},
    @@ -6089,6 +6224,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*StdSizes).Offsetsof", Method, 5},
     		{"(*StdSizes).Sizeof", Method, 5},
     		{"(*Struct).Field", Method, 5},
    +		{"(*Struct).Fields", Method, 24},
     		{"(*Struct).NumFields", Method, 5},
     		{"(*Struct).String", Method, 5},
     		{"(*Struct).Tag", Method, 5},
    @@ -6100,8 +6236,10 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*Tuple).Len", Method, 5},
     		{"(*Tuple).String", Method, 5},
     		{"(*Tuple).Underlying", Method, 5},
    +		{"(*Tuple).Variables", Method, 24},
     		{"(*TypeList).At", Method, 18},
     		{"(*TypeList).Len", Method, 18},
    +		{"(*TypeList).Types", Method, 24},
     		{"(*TypeName).Exported", Method, 5},
     		{"(*TypeName).Id", Method, 5},
     		{"(*TypeName).IsAlias", Method, 9},
    @@ -6119,9 +6257,11 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*TypeParam).Underlying", Method, 18},
     		{"(*TypeParamList).At", Method, 18},
     		{"(*TypeParamList).Len", Method, 18},
    +		{"(*TypeParamList).TypeParams", Method, 24},
     		{"(*Union).Len", Method, 18},
     		{"(*Union).String", Method, 18},
     		{"(*Union).Term", Method, 18},
    +		{"(*Union).Terms", Method, 24},
     		{"(*Union).Underlying", Method, 18},
     		{"(*Var).Anonymous", Method, 5},
     		{"(*Var).Embedded", Method, 11},
    @@ -6392,10 +6532,12 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*Hash).WriteByte", Method, 14},
     		{"(*Hash).WriteString", Method, 14},
     		{"Bytes", Func, 19},
    +		{"Comparable", Func, 24},
     		{"Hash", Type, 14},
     		{"MakeSeed", Func, 14},
     		{"Seed", Type, 14},
     		{"String", Func, 19},
    +		{"WriteComparable", Func, 24},
     	},
     	"html": {
     		{"EscapeString", Func, 0},
    @@ -7082,6 +7224,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*JSONHandler).WithGroup", Method, 21},
     		{"(*Level).UnmarshalJSON", Method, 21},
     		{"(*Level).UnmarshalText", Method, 21},
    +		{"(*LevelVar).AppendText", Method, 24},
     		{"(*LevelVar).Level", Method, 21},
     		{"(*LevelVar).MarshalText", Method, 21},
     		{"(*LevelVar).Set", Method, 21},
    @@ -7110,6 +7253,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"(Attr).Equal", Method, 21},
     		{"(Attr).String", Method, 21},
     		{"(Kind).String", Method, 21},
    +		{"(Level).AppendText", Method, 24},
     		{"(Level).Level", Method, 21},
     		{"(Level).MarshalJSON", Method, 21},
     		{"(Level).MarshalText", Method, 21},
    @@ -7140,6 +7284,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"Debug", Func, 21},
     		{"DebugContext", Func, 21},
     		{"Default", Func, 21},
    +		{"DiscardHandler", Var, 24},
     		{"Duration", Func, 21},
     		{"DurationValue", Func, 21},
     		{"Error", Func, 21},
    @@ -7375,6 +7520,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*Float).Acc", Method, 5},
     		{"(*Float).Add", Method, 5},
     		{"(*Float).Append", Method, 5},
    +		{"(*Float).AppendText", Method, 24},
     		{"(*Float).Cmp", Method, 5},
     		{"(*Float).Copy", Method, 5},
     		{"(*Float).Float32", Method, 5},
    @@ -7421,6 +7567,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*Int).And", Method, 0},
     		{"(*Int).AndNot", Method, 0},
     		{"(*Int).Append", Method, 6},
    +		{"(*Int).AppendText", Method, 24},
     		{"(*Int).Binomial", Method, 0},
     		{"(*Int).Bit", Method, 0},
     		{"(*Int).BitLen", Method, 0},
    @@ -7477,6 +7624,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*Int).Xor", Method, 0},
     		{"(*Rat).Abs", Method, 0},
     		{"(*Rat).Add", Method, 0},
    +		{"(*Rat).AppendText", Method, 24},
     		{"(*Rat).Cmp", Method, 0},
     		{"(*Rat).Denom", Method, 0},
     		{"(*Rat).Float32", Method, 4},
    @@ -7659,11 +7807,13 @@ var PackageSymbols = map[string][]Symbol{
     		{"Zipf", Type, 0},
     	},
     	"math/rand/v2": {
    +		{"(*ChaCha8).AppendBinary", Method, 24},
     		{"(*ChaCha8).MarshalBinary", Method, 22},
     		{"(*ChaCha8).Read", Method, 23},
     		{"(*ChaCha8).Seed", Method, 22},
     		{"(*ChaCha8).Uint64", Method, 22},
     		{"(*ChaCha8).UnmarshalBinary", Method, 22},
    +		{"(*PCG).AppendBinary", Method, 24},
     		{"(*PCG).MarshalBinary", Method, 22},
     		{"(*PCG).Seed", Method, 22},
     		{"(*PCG).Uint64", Method, 22},
    @@ -7931,6 +8081,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*UnixListener).SyscallConn", Method, 10},
     		{"(Flags).String", Method, 0},
     		{"(HardwareAddr).String", Method, 0},
    +		{"(IP).AppendText", Method, 24},
     		{"(IP).DefaultMask", Method, 0},
     		{"(IP).Equal", Method, 0},
     		{"(IP).IsGlobalUnicast", Method, 0},
    @@ -8131,6 +8282,9 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*MaxBytesError).Error", Method, 19},
     		{"(*ProtocolError).Error", Method, 0},
     		{"(*ProtocolError).Is", Method, 21},
    +		{"(*Protocols).SetHTTP1", Method, 24},
    +		{"(*Protocols).SetHTTP2", Method, 24},
    +		{"(*Protocols).SetUnencryptedHTTP2", Method, 24},
     		{"(*Request).AddCookie", Method, 0},
     		{"(*Request).BasicAuth", Method, 4},
     		{"(*Request).Clone", Method, 13},
    @@ -8190,6 +8344,10 @@ var PackageSymbols = map[string][]Symbol{
     		{"(Header).Values", Method, 14},
     		{"(Header).Write", Method, 0},
     		{"(Header).WriteSubset", Method, 0},
    +		{"(Protocols).HTTP1", Method, 24},
    +		{"(Protocols).HTTP2", Method, 24},
    +		{"(Protocols).String", Method, 24},
    +		{"(Protocols).UnencryptedHTTP2", Method, 24},
     		{"AllowQuerySemicolons", Func, 17},
     		{"CanonicalHeaderKey", Func, 0},
     		{"Client", Type, 0},
    @@ -8252,6 +8410,18 @@ var PackageSymbols = map[string][]Symbol{
     		{"FileSystem", Type, 0},
     		{"Flusher", Type, 0},
     		{"Get", Func, 0},
    +		{"HTTP2Config", Type, 24},
    +		{"HTTP2Config.CountError", Field, 24},
    +		{"HTTP2Config.MaxConcurrentStreams", Field, 24},
    +		{"HTTP2Config.MaxDecoderHeaderTableSize", Field, 24},
    +		{"HTTP2Config.MaxEncoderHeaderTableSize", Field, 24},
    +		{"HTTP2Config.MaxReadFrameSize", Field, 24},
    +		{"HTTP2Config.MaxReceiveBufferPerConnection", Field, 24},
    +		{"HTTP2Config.MaxReceiveBufferPerStream", Field, 24},
    +		{"HTTP2Config.PermitProhibitedCipherSuites", Field, 24},
    +		{"HTTP2Config.PingTimeout", Field, 24},
    +		{"HTTP2Config.SendPingTimeout", Field, 24},
    +		{"HTTP2Config.WriteByteTimeout", Field, 24},
     		{"Handle", Func, 0},
     		{"HandleFunc", Func, 0},
     		{"Handler", Type, 0},
    @@ -8292,6 +8462,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"PostForm", Func, 0},
     		{"ProtocolError", Type, 0},
     		{"ProtocolError.ErrorString", Field, 0},
    +		{"Protocols", Type, 24},
     		{"ProxyFromEnvironment", Func, 0},
     		{"ProxyURL", Func, 0},
     		{"PushOptions", Type, 8},
    @@ -8361,9 +8532,11 @@ var PackageSymbols = map[string][]Symbol{
     		{"Server.ConnState", Field, 3},
     		{"Server.DisableGeneralOptionsHandler", Field, 20},
     		{"Server.ErrorLog", Field, 3},
    +		{"Server.HTTP2", Field, 24},
     		{"Server.Handler", Field, 0},
     		{"Server.IdleTimeout", Field, 8},
     		{"Server.MaxHeaderBytes", Field, 0},
    +		{"Server.Protocols", Field, 24},
     		{"Server.ReadHeaderTimeout", Field, 8},
     		{"Server.ReadTimeout", Field, 0},
     		{"Server.TLSConfig", Field, 0},
    @@ -8453,12 +8626,14 @@ var PackageSymbols = map[string][]Symbol{
     		{"Transport.ExpectContinueTimeout", Field, 6},
     		{"Transport.ForceAttemptHTTP2", Field, 13},
     		{"Transport.GetProxyConnectHeader", Field, 16},
    +		{"Transport.HTTP2", Field, 24},
     		{"Transport.IdleConnTimeout", Field, 7},
     		{"Transport.MaxConnsPerHost", Field, 11},
     		{"Transport.MaxIdleConns", Field, 7},
     		{"Transport.MaxIdleConnsPerHost", Field, 0},
     		{"Transport.MaxResponseHeaderBytes", Field, 7},
     		{"Transport.OnProxyConnectResponse", Field, 20},
    +		{"Transport.Protocols", Field, 24},
     		{"Transport.Proxy", Field, 0},
     		{"Transport.ProxyConnectHeader", Field, 8},
     		{"Transport.ReadBufferSize", Field, 13},
    @@ -8646,6 +8821,8 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*AddrPort).UnmarshalText", Method, 18},
     		{"(*Prefix).UnmarshalBinary", Method, 18},
     		{"(*Prefix).UnmarshalText", Method, 18},
    +		{"(Addr).AppendBinary", Method, 24},
    +		{"(Addr).AppendText", Method, 24},
     		{"(Addr).AppendTo", Method, 18},
     		{"(Addr).As16", Method, 18},
     		{"(Addr).As4", Method, 18},
    @@ -8676,6 +8853,8 @@ var PackageSymbols = map[string][]Symbol{
     		{"(Addr).WithZone", Method, 18},
     		{"(Addr).Zone", Method, 18},
     		{"(AddrPort).Addr", Method, 18},
    +		{"(AddrPort).AppendBinary", Method, 24},
    +		{"(AddrPort).AppendText", Method, 24},
     		{"(AddrPort).AppendTo", Method, 18},
     		{"(AddrPort).Compare", Method, 22},
     		{"(AddrPort).IsValid", Method, 18},
    @@ -8684,6 +8863,8 @@ var PackageSymbols = map[string][]Symbol{
     		{"(AddrPort).Port", Method, 18},
     		{"(AddrPort).String", Method, 18},
     		{"(Prefix).Addr", Method, 18},
    +		{"(Prefix).AppendBinary", Method, 24},
    +		{"(Prefix).AppendText", Method, 24},
     		{"(Prefix).AppendTo", Method, 18},
     		{"(Prefix).Bits", Method, 18},
     		{"(Prefix).Contains", Method, 18},
    @@ -8868,6 +9049,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*Error).Temporary", Method, 6},
     		{"(*Error).Timeout", Method, 6},
     		{"(*Error).Unwrap", Method, 13},
    +		{"(*URL).AppendBinary", Method, 24},
     		{"(*URL).EscapedFragment", Method, 15},
     		{"(*URL).EscapedPath", Method, 5},
     		{"(*URL).Hostname", Method, 8},
    @@ -8967,6 +9149,17 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*ProcessState).SysUsage", Method, 0},
     		{"(*ProcessState).SystemTime", Method, 0},
     		{"(*ProcessState).UserTime", Method, 0},
    +		{"(*Root).Close", Method, 24},
    +		{"(*Root).Create", Method, 24},
    +		{"(*Root).FS", Method, 24},
    +		{"(*Root).Lstat", Method, 24},
    +		{"(*Root).Mkdir", Method, 24},
    +		{"(*Root).Name", Method, 24},
    +		{"(*Root).Open", Method, 24},
    +		{"(*Root).OpenFile", Method, 24},
    +		{"(*Root).OpenRoot", Method, 24},
    +		{"(*Root).Remove", Method, 24},
    +		{"(*Root).Stat", Method, 24},
     		{"(*SyscallError).Error", Method, 0},
     		{"(*SyscallError).Timeout", Method, 10},
     		{"(*SyscallError).Unwrap", Method, 13},
    @@ -9060,6 +9253,8 @@ var PackageSymbols = map[string][]Symbol{
     		{"O_WRONLY", Const, 0},
     		{"Open", Func, 0},
     		{"OpenFile", Func, 0},
    +		{"OpenInRoot", Func, 24},
    +		{"OpenRoot", Func, 24},
     		{"PathError", Type, 0},
     		{"PathError.Err", Field, 0},
     		{"PathError.Op", Field, 0},
    @@ -9081,6 +9276,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"Remove", Func, 0},
     		{"RemoveAll", Func, 0},
     		{"Rename", Func, 0},
    +		{"Root", Type, 24},
     		{"SEEK_CUR", Const, 0},
     		{"SEEK_END", Const, 0},
     		{"SEEK_SET", Const, 0},
    @@ -9422,6 +9618,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"Zero", Func, 0},
     	},
     	"regexp": {
    +		{"(*Regexp).AppendText", Method, 24},
     		{"(*Regexp).Copy", Method, 6},
     		{"(*Regexp).Expand", Method, 0},
     		{"(*Regexp).ExpandString", Method, 0},
    @@ -9602,6 +9799,8 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*StackRecord).Stack", Method, 0},
     		{"(*TypeAssertionError).Error", Method, 0},
     		{"(*TypeAssertionError).RuntimeError", Method, 0},
    +		{"(Cleanup).Stop", Method, 24},
    +		{"AddCleanup", Func, 24},
     		{"BlockProfile", Func, 1},
     		{"BlockProfileRecord", Type, 1},
     		{"BlockProfileRecord.Count", Field, 1},
    @@ -9612,6 +9811,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"Caller", Func, 0},
     		{"Callers", Func, 0},
     		{"CallersFrames", Func, 7},
    +		{"Cleanup", Type, 24},
     		{"Compiler", Const, 0},
     		{"Error", Type, 0},
     		{"Frame", Type, 7},
    @@ -9974,6 +10174,8 @@ var PackageSymbols = map[string][]Symbol{
     		{"EqualFold", Func, 0},
     		{"Fields", Func, 0},
     		{"FieldsFunc", Func, 0},
    +		{"FieldsFuncSeq", Func, 24},
    +		{"FieldsSeq", Func, 24},
     		{"HasPrefix", Func, 0},
     		{"HasSuffix", Func, 0},
     		{"Index", Func, 0},
    @@ -9986,6 +10188,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"LastIndexAny", Func, 0},
     		{"LastIndexByte", Func, 5},
     		{"LastIndexFunc", Func, 0},
    +		{"Lines", Func, 24},
     		{"Map", Func, 0},
     		{"NewReader", Func, 0},
     		{"NewReplacer", Func, 0},
    @@ -9997,7 +10200,9 @@ var PackageSymbols = map[string][]Symbol{
     		{"Split", Func, 0},
     		{"SplitAfter", Func, 0},
     		{"SplitAfterN", Func, 0},
    +		{"SplitAfterSeq", Func, 24},
     		{"SplitN", Func, 0},
    +		{"SplitSeq", Func, 24},
     		{"Title", Func, 0},
     		{"ToLower", Func, 0},
     		{"ToLowerSpecial", Func, 0},
    @@ -16413,7 +16618,9 @@ var PackageSymbols = map[string][]Symbol{
     		{"ValueOf", Func, 0},
     	},
     	"testing": {
    +		{"(*B).Chdir", Method, 24},
     		{"(*B).Cleanup", Method, 14},
    +		{"(*B).Context", Method, 24},
     		{"(*B).Elapsed", Method, 20},
     		{"(*B).Error", Method, 0},
     		{"(*B).Errorf", Method, 0},
    @@ -16425,6 +16632,7 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*B).Helper", Method, 9},
     		{"(*B).Log", Method, 0},
     		{"(*B).Logf", Method, 0},
    +		{"(*B).Loop", Method, 24},
     		{"(*B).Name", Method, 8},
     		{"(*B).ReportAllocs", Method, 1},
     		{"(*B).ReportMetric", Method, 13},
    @@ -16442,7 +16650,9 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*B).StopTimer", Method, 0},
     		{"(*B).TempDir", Method, 15},
     		{"(*F).Add", Method, 18},
    +		{"(*F).Chdir", Method, 24},
     		{"(*F).Cleanup", Method, 18},
    +		{"(*F).Context", Method, 24},
     		{"(*F).Error", Method, 18},
     		{"(*F).Errorf", Method, 18},
     		{"(*F).Fail", Method, 18},
    @@ -16463,7 +16673,9 @@ var PackageSymbols = map[string][]Symbol{
     		{"(*F).TempDir", Method, 18},
     		{"(*M).Run", Method, 4},
     		{"(*PB).Next", Method, 3},
    +		{"(*T).Chdir", Method, 24},
     		{"(*T).Cleanup", Method, 14},
    +		{"(*T).Context", Method, 24},
     		{"(*T).Deadline", Method, 15},
     		{"(*T).Error", Method, 0},
     		{"(*T).Errorf", Method, 0},
    @@ -16954,7 +17166,9 @@ var PackageSymbols = map[string][]Symbol{
     		{"(Time).Add", Method, 0},
     		{"(Time).AddDate", Method, 0},
     		{"(Time).After", Method, 0},
    +		{"(Time).AppendBinary", Method, 24},
     		{"(Time).AppendFormat", Method, 5},
    +		{"(Time).AppendText", Method, 24},
     		{"(Time).Before", Method, 0},
     		{"(Time).Clock", Method, 0},
     		{"(Time).Compare", Method, 20},
    @@ -17428,4 +17642,9 @@ var PackageSymbols = map[string][]Symbol{
     		{"String", Func, 0},
     		{"StringData", Func, 0},
     	},
    +	"weak": {
    +		{"(Pointer).Value", Method, 24},
    +		{"Make", Func, 24},
    +		{"Pointer", Type, 24},
    +	},
     }
    diff --git a/vendor/golang.org/x/tools/internal/tokeninternal/tokeninternal.go b/vendor/golang.org/x/tools/internal/tokeninternal/tokeninternal.go
    deleted file mode 100644
    index ff9437a36cd6..000000000000
    --- a/vendor/golang.org/x/tools/internal/tokeninternal/tokeninternal.go
    +++ /dev/null
    @@ -1,137 +0,0 @@
    -// Copyright 2023 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -// package tokeninternal provides access to some internal features of the token
    -// package.
    -package tokeninternal
    -
    -import (
    -	"fmt"
    -	"go/token"
    -	"sort"
    -	"sync"
    -	"unsafe"
    -)
    -
    -// GetLines returns the table of line-start offsets from a token.File.
    -func GetLines(file *token.File) []int {
    -	// token.File has a Lines method on Go 1.21 and later.
    -	if file, ok := (interface{})(file).(interface{ Lines() []int }); ok {
    -		return file.Lines()
    -	}
    -
    -	// This declaration must match that of token.File.
    -	// This creates a risk of dependency skew.
    -	// For now we check that the size of the two
    -	// declarations is the same, on the (fragile) assumption
    -	// that future changes would add fields.
    -	type tokenFile119 struct {
    -		_     string
    -		_     int
    -		_     int
    -		mu    sync.Mutex // we're not complete monsters
    -		lines []int
    -		_     []struct{}
    -	}
    -
    -	if unsafe.Sizeof(*file) != unsafe.Sizeof(tokenFile119{}) {
    -		panic("unexpected token.File size")
    -	}
    -	var ptr *tokenFile119
    -	type uP = unsafe.Pointer
    -	*(*uP)(uP(&ptr)) = uP(file)
    -	ptr.mu.Lock()
    -	defer ptr.mu.Unlock()
    -	return ptr.lines
    -}
    -
    -// AddExistingFiles adds the specified files to the FileSet if they
    -// are not already present. It panics if any pair of files in the
    -// resulting FileSet would overlap.
    -func AddExistingFiles(fset *token.FileSet, files []*token.File) {
    -	// Punch through the FileSet encapsulation.
    -	type tokenFileSet struct {
    -		// This type remained essentially consistent from go1.16 to go1.21.
    -		mutex sync.RWMutex
    -		base  int
    -		files []*token.File
    -		_     *token.File // changed to atomic.Pointer[token.File] in go1.19
    -	}
    -
    -	// If the size of token.FileSet changes, this will fail to compile.
    -	const delta = int64(unsafe.Sizeof(tokenFileSet{})) - int64(unsafe.Sizeof(token.FileSet{}))
    -	var _ [-delta * delta]int
    -
    -	type uP = unsafe.Pointer
    -	var ptr *tokenFileSet
    -	*(*uP)(uP(&ptr)) = uP(fset)
    -	ptr.mutex.Lock()
    -	defer ptr.mutex.Unlock()
    -
    -	// Merge and sort.
    -	newFiles := append(ptr.files, files...)
    -	sort.Slice(newFiles, func(i, j int) bool {
    -		return newFiles[i].Base() < newFiles[j].Base()
    -	})
    -
    -	// Reject overlapping files.
    -	// Discard adjacent identical files.
    -	out := newFiles[:0]
    -	for i, file := range newFiles {
    -		if i > 0 {
    -			prev := newFiles[i-1]
    -			if file == prev {
    -				continue
    -			}
    -			if prev.Base()+prev.Size()+1 > file.Base() {
    -				panic(fmt.Sprintf("file %s (%d-%d) overlaps with file %s (%d-%d)",
    -					prev.Name(), prev.Base(), prev.Base()+prev.Size(),
    -					file.Name(), file.Base(), file.Base()+file.Size()))
    -			}
    -		}
    -		out = append(out, file)
    -	}
    -	newFiles = out
    -
    -	ptr.files = newFiles
    -
    -	// Advance FileSet.Base().
    -	if len(newFiles) > 0 {
    -		last := newFiles[len(newFiles)-1]
    -		newBase := last.Base() + last.Size() + 1
    -		if ptr.base < newBase {
    -			ptr.base = newBase
    -		}
    -	}
    -}
    -
    -// FileSetFor returns a new FileSet containing a sequence of new Files with
    -// the same base, size, and line as the input files, for use in APIs that
    -// require a FileSet.
    -//
    -// Precondition: the input files must be non-overlapping, and sorted in order
    -// of their Base.
    -func FileSetFor(files ...*token.File) *token.FileSet {
    -	fset := token.NewFileSet()
    -	for _, f := range files {
    -		f2 := fset.AddFile(f.Name(), f.Base(), f.Size())
    -		lines := GetLines(f)
    -		f2.SetLines(lines)
    -	}
    -	return fset
    -}
    -
    -// CloneFileSet creates a new FileSet holding all files in fset. It does not
    -// create copies of the token.Files in fset: they are added to the resulting
    -// FileSet unmodified.
    -func CloneFileSet(fset *token.FileSet) *token.FileSet {
    -	var files []*token.File
    -	fset.Iterate(func(f *token.File) bool {
    -		files = append(files, f)
    -		return true
    -	})
    -	newFileSet := token.NewFileSet()
    -	AddExistingFiles(newFileSet, files)
    -	return newFileSet
    -}
    diff --git a/vendor/golang.org/x/tools/internal/typeparams/common.go b/vendor/golang.org/x/tools/internal/typeparams/common.go
    new file mode 100644
    index 000000000000..cdae2b8e8184
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/typeparams/common.go
    @@ -0,0 +1,68 @@
    +// Copyright 2021 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +// Package typeparams contains common utilities for writing tools that
    +// interact with generic Go code, as introduced with Go 1.18. It
    +// supplements the standard library APIs. Notably, the StructuralTerms
    +// API computes a minimal representation of the structural
    +// restrictions on a type parameter.
    +//
    +// An external version of these APIs is available in the
    +// golang.org/x/exp/typeparams module.
    +package typeparams
    +
    +import (
    +	"go/ast"
    +	"go/token"
    +	"go/types"
    +)
    +
    +// UnpackIndexExpr extracts data from AST nodes that represent index
    +// expressions.
    +//
    +// For an ast.IndexExpr, the resulting indices slice will contain exactly one
    +// index expression. For an ast.IndexListExpr (go1.18+), it may have a variable
    +// number of index expressions.
    +//
    +// For nodes that don't represent index expressions, the first return value of
    +// UnpackIndexExpr will be nil.
    +func UnpackIndexExpr(n ast.Node) (x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack token.Pos) {
    +	switch e := n.(type) {
    +	case *ast.IndexExpr:
    +		return e.X, e.Lbrack, []ast.Expr{e.Index}, e.Rbrack
    +	case *ast.IndexListExpr:
    +		return e.X, e.Lbrack, e.Indices, e.Rbrack
    +	}
    +	return nil, token.NoPos, nil, token.NoPos
    +}
    +
    +// PackIndexExpr returns an *ast.IndexExpr or *ast.IndexListExpr, depending on
    +// the cardinality of indices. Calling PackIndexExpr with len(indices) == 0
    +// will panic.
    +func PackIndexExpr(x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack token.Pos) ast.Expr {
    +	switch len(indices) {
    +	case 0:
    +		panic("empty indices")
    +	case 1:
    +		return &ast.IndexExpr{
    +			X:      x,
    +			Lbrack: lbrack,
    +			Index:  indices[0],
    +			Rbrack: rbrack,
    +		}
    +	default:
    +		return &ast.IndexListExpr{
    +			X:       x,
    +			Lbrack:  lbrack,
    +			Indices: indices,
    +			Rbrack:  rbrack,
    +		}
    +	}
    +}
    +
    +// IsTypeParam reports whether t is a type parameter (or an alias of one).
    +func IsTypeParam(t types.Type) bool {
    +	_, ok := types.Unalias(t).(*types.TypeParam)
    +	return ok
    +}
    diff --git a/vendor/golang.org/x/tools/internal/typeparams/coretype.go b/vendor/golang.org/x/tools/internal/typeparams/coretype.go
    new file mode 100644
    index 000000000000..6e83c6fb1a2b
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/typeparams/coretype.go
    @@ -0,0 +1,150 @@
    +// Copyright 2022 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package typeparams
    +
    +import (
    +	"fmt"
    +	"go/types"
    +)
    +
    +// CoreType returns the core type of T or nil if T does not have a core type.
    +//
    +// See https://go.dev/ref/spec#Core_types for the definition of a core type.
    +func CoreType(T types.Type) types.Type {
    +	U := T.Underlying()
    +	if _, ok := U.(*types.Interface); !ok {
    +		return U // for non-interface types,
    +	}
    +
    +	terms, err := NormalTerms(U)
    +	if len(terms) == 0 || err != nil {
    +		// len(terms) -> empty type set of interface.
    +		// err != nil => U is invalid, exceeds complexity bounds, or has an empty type set.
    +		return nil // no core type.
    +	}
    +
    +	U = terms[0].Type().Underlying()
    +	var identical int // i in [0,identical) => Identical(U, terms[i].Type().Underlying())
    +	for identical = 1; identical < len(terms); identical++ {
    +		if !types.Identical(U, terms[identical].Type().Underlying()) {
    +			break
    +		}
    +	}
    +
    +	if identical == len(terms) {
    +		// https://go.dev/ref/spec#Core_types
    +		// "There is a single type U which is the underlying type of all types in the type set of T"
    +		return U
    +	}
    +	ch, ok := U.(*types.Chan)
    +	if !ok {
    +		return nil // no core type as identical < len(terms) and U is not a channel.
    +	}
    +	// https://go.dev/ref/spec#Core_types
    +	// "the type chan E if T contains only bidirectional channels, or the type chan<- E or
    +	// <-chan E depending on the direction of the directional channels present."
    +	for chans := identical; chans < len(terms); chans++ {
    +		curr, ok := terms[chans].Type().Underlying().(*types.Chan)
    +		if !ok {
    +			return nil
    +		}
    +		if !types.Identical(ch.Elem(), curr.Elem()) {
    +			return nil // channel elements are not identical.
    +		}
    +		if ch.Dir() == types.SendRecv {
    +			// ch is bidirectional. We can safely always use curr's direction.
    +			ch = curr
    +		} else if curr.Dir() != types.SendRecv && ch.Dir() != curr.Dir() {
    +			// ch and curr are not bidirectional and not the same direction.
    +			return nil
    +		}
    +	}
    +	return ch
    +}
    +
    +// NormalTerms returns a slice of terms representing the normalized structural
    +// type restrictions of a type, if any.
    +//
    +// For all types other than *types.TypeParam, *types.Interface, and
    +// *types.Union, this is just a single term with Tilde() == false and
    +// Type() == typ. For *types.TypeParam, *types.Interface, and *types.Union, see
    +// below.
    +//
    +// Structural type restrictions of a type parameter are created via
    +// non-interface types embedded in its constraint interface (directly, or via a
    +// chain of interface embeddings). For example, in the declaration type
    +// T[P interface{~int; m()}] int the structural restriction of the type
    +// parameter P is ~int.
    +//
    +// With interface embedding and unions, the specification of structural type
    +// restrictions may be arbitrarily complex. For example, consider the
    +// following:
    +//
    +//	type A interface{ ~string|~[]byte }
    +//
    +//	type B interface{ int|string }
    +//
    +//	type C interface { ~string|~int }
    +//
    +//	type T[P interface{ A|B; C }] int
    +//
    +// In this example, the structural type restriction of P is ~string|int: A|B
    +// expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int,
    +// which when intersected with C (~string|~int) yields ~string|int.
    +//
    +// NormalTerms computes these expansions and reductions, producing a
    +// "normalized" form of the embeddings. A structural restriction is normalized
    +// if it is a single union containing no interface terms, and is minimal in the
    +// sense that removing any term changes the set of types satisfying the
    +// constraint. It is left as a proof for the reader that, modulo sorting, there
    +// is exactly one such normalized form.
    +//
    +// Because the minimal representation always takes this form, NormalTerms
    +// returns a slice of tilde terms corresponding to the terms of the union in
    +// the normalized structural restriction. An error is returned if the type is
    +// invalid, exceeds complexity bounds, or has an empty type set. In the latter
    +// case, NormalTerms returns ErrEmptyTypeSet.
    +//
    +// NormalTerms makes no guarantees about the order of terms, except that it
    +// is deterministic.
    +func NormalTerms(typ types.Type) ([]*types.Term, error) {
    +	switch typ := typ.Underlying().(type) {
    +	case *types.TypeParam:
    +		return StructuralTerms(typ)
    +	case *types.Union:
    +		return UnionTermSet(typ)
    +	case *types.Interface:
    +		return InterfaceTermSet(typ)
    +	default:
    +		return []*types.Term{types.NewTerm(false, typ)}, nil
    +	}
    +}
    +
    +// Deref returns the type of the variable pointed to by t,
    +// if t's core type is a pointer; otherwise it returns t.
    +//
    +// Do not assume that Deref(T)==T implies T is not a pointer:
    +// consider "type T *T", for example.
    +//
    +// TODO(adonovan): ideally this would live in typesinternal, but that
    +// creates an import cycle. Move there when we melt this package down.
    +func Deref(t types.Type) types.Type {
    +	if ptr, ok := CoreType(t).(*types.Pointer); ok {
    +		return ptr.Elem()
    +	}
    +	return t
    +}
    +
    +// MustDeref returns the type of the variable pointed to by t.
    +// It panics if t's core type is not a pointer.
    +//
    +// TODO(adonovan): ideally this would live in typesinternal, but that
    +// creates an import cycle. Move there when we melt this package down.
    +func MustDeref(t types.Type) types.Type {
    +	if ptr, ok := CoreType(t).(*types.Pointer); ok {
    +		return ptr.Elem()
    +	}
    +	panic(fmt.Sprintf("%v is not a pointer", t))
    +}
    diff --git a/vendor/golang.org/x/tools/internal/typeparams/free.go b/vendor/golang.org/x/tools/internal/typeparams/free.go
    new file mode 100644
    index 000000000000..0ade5c2949ed
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/typeparams/free.go
    @@ -0,0 +1,131 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package typeparams
    +
    +import (
    +	"go/types"
    +
    +	"golang.org/x/tools/internal/aliases"
    +)
    +
    +// Free is a memoization of the set of free type parameters within a
    +// type. It makes a sequence of calls to [Free.Has] for overlapping
    +// types more efficient. The zero value is ready for use.
    +//
    +// NOTE: Adapted from go/types/infer.go. If it is later exported, factor.
    +type Free struct {
    +	seen map[types.Type]bool
    +}
    +
    +// Has reports whether the specified type has a free type parameter.
    +func (w *Free) Has(typ types.Type) (res bool) {
    +	// detect cycles
    +	if x, ok := w.seen[typ]; ok {
    +		return x
    +	}
    +	if w.seen == nil {
    +		w.seen = make(map[types.Type]bool)
    +	}
    +	w.seen[typ] = false
    +	defer func() {
    +		w.seen[typ] = res
    +	}()
    +
    +	switch t := typ.(type) {
    +	case nil, *types.Basic: // TODO(gri) should nil be handled here?
    +		break
    +
    +	case *types.Alias:
    +		if aliases.TypeParams(t).Len() > aliases.TypeArgs(t).Len() {
    +			return true // This is an uninstantiated Alias.
    +		}
    +		// The expansion of an alias can have free type parameters,
    +		// whether or not the alias itself has type parameters:
    +		//
    +		//   func _[K comparable]() {
    +		//     type Set      = map[K]bool // free(Set)      = {K}
    +		//     type MapTo[V] = map[K]V    // free(Map[foo]) = {V}
    +		//   }
    +		//
    +		// So, we must Unalias.
    +		return w.Has(types.Unalias(t))
    +
    +	case *types.Array:
    +		return w.Has(t.Elem())
    +
    +	case *types.Slice:
    +		return w.Has(t.Elem())
    +
    +	case *types.Struct:
    +		for i, n := 0, t.NumFields(); i < n; i++ {
    +			if w.Has(t.Field(i).Type()) {
    +				return true
    +			}
    +		}
    +
    +	case *types.Pointer:
    +		return w.Has(t.Elem())
    +
    +	case *types.Tuple:
    +		n := t.Len()
    +		for i := 0; i < n; i++ {
    +			if w.Has(t.At(i).Type()) {
    +				return true
    +			}
    +		}
    +
    +	case *types.Signature:
    +		// t.tparams may not be nil if we are looking at a signature
    +		// of a generic function type (or an interface method) that is
    +		// part of the type we're testing. We don't care about these type
    +		// parameters.
    +		// Similarly, the receiver of a method may declare (rather than
    +		// use) type parameters, we don't care about those either.
    +		// Thus, we only need to look at the input and result parameters.
    +		return w.Has(t.Params()) || w.Has(t.Results())
    +
    +	case *types.Interface:
    +		for i, n := 0, t.NumMethods(); i < n; i++ {
    +			if w.Has(t.Method(i).Type()) {
    +				return true
    +			}
    +		}
    +		terms, err := InterfaceTermSet(t)
    +		if err != nil {
    +			return false // ill typed
    +		}
    +		for _, term := range terms {
    +			if w.Has(term.Type()) {
    +				return true
    +			}
    +		}
    +
    +	case *types.Map:
    +		return w.Has(t.Key()) || w.Has(t.Elem())
    +
    +	case *types.Chan:
    +		return w.Has(t.Elem())
    +
    +	case *types.Named:
    +		args := t.TypeArgs()
    +		if params := t.TypeParams(); params.Len() > args.Len() {
    +			return true // this is an uninstantiated named type.
    +		}
    +		for i, n := 0, args.Len(); i < n; i++ {
    +			if w.Has(args.At(i)) {
    +				return true
    +			}
    +		}
    +		return w.Has(t.Underlying()) // recurse for types local to parameterized functions
    +
    +	case *types.TypeParam:
    +		return true
    +
    +	default:
    +		panic(t) // unreachable
    +	}
    +
    +	return false
    +}
    diff --git a/vendor/golang.org/x/tools/internal/typeparams/normalize.go b/vendor/golang.org/x/tools/internal/typeparams/normalize.go
    new file mode 100644
    index 000000000000..93c80fdc96ce
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/typeparams/normalize.go
    @@ -0,0 +1,218 @@
    +// Copyright 2021 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package typeparams
    +
    +import (
    +	"errors"
    +	"fmt"
    +	"go/types"
    +	"os"
    +	"strings"
    +)
    +
    +//go:generate go run copytermlist.go
    +
    +const debug = false
    +
    +var ErrEmptyTypeSet = errors.New("empty type set")
    +
    +// StructuralTerms returns a slice of terms representing the normalized
    +// structural type restrictions of a type parameter, if any.
    +//
    +// Structural type restrictions of a type parameter are created via
    +// non-interface types embedded in its constraint interface (directly, or via a
    +// chain of interface embeddings). For example, in the declaration
    +//
    +//	type T[P interface{~int; m()}] int
    +//
    +// the structural restriction of the type parameter P is ~int.
    +//
    +// With interface embedding and unions, the specification of structural type
    +// restrictions may be arbitrarily complex. For example, consider the
    +// following:
    +//
    +//	type A interface{ ~string|~[]byte }
    +//
    +//	type B interface{ int|string }
    +//
    +//	type C interface { ~string|~int }
    +//
    +//	type T[P interface{ A|B; C }] int
    +//
    +// In this example, the structural type restriction of P is ~string|int: A|B
    +// expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int,
    +// which when intersected with C (~string|~int) yields ~string|int.
    +//
    +// StructuralTerms computes these expansions and reductions, producing a
    +// "normalized" form of the embeddings. A structural restriction is normalized
    +// if it is a single union containing no interface terms, and is minimal in the
    +// sense that removing any term changes the set of types satisfying the
    +// constraint. It is left as a proof for the reader that, modulo sorting, there
    +// is exactly one such normalized form.
    +//
    +// Because the minimal representation always takes this form, StructuralTerms
    +// returns a slice of tilde terms corresponding to the terms of the union in
    +// the normalized structural restriction. An error is returned if the
    +// constraint interface is invalid, exceeds complexity bounds, or has an empty
    +// type set. In the latter case, StructuralTerms returns ErrEmptyTypeSet.
    +//
    +// StructuralTerms makes no guarantees about the order of terms, except that it
    +// is deterministic.
    +func StructuralTerms(tparam *types.TypeParam) ([]*types.Term, error) {
    +	constraint := tparam.Constraint()
    +	if constraint == nil {
    +		return nil, fmt.Errorf("%s has nil constraint", tparam)
    +	}
    +	iface, _ := constraint.Underlying().(*types.Interface)
    +	if iface == nil {
    +		return nil, fmt.Errorf("constraint is %T, not *types.Interface", constraint.Underlying())
    +	}
    +	return InterfaceTermSet(iface)
    +}
    +
    +// InterfaceTermSet computes the normalized terms for a constraint interface,
    +// returning an error if the term set cannot be computed or is empty. In the
    +// latter case, the error will be ErrEmptyTypeSet.
    +//
    +// See the documentation of StructuralTerms for more information on
    +// normalization.
    +func InterfaceTermSet(iface *types.Interface) ([]*types.Term, error) {
    +	return computeTermSet(iface)
    +}
    +
    +// UnionTermSet computes the normalized terms for a union, returning an error
    +// if the term set cannot be computed or is empty. In the latter case, the
    +// error will be ErrEmptyTypeSet.
    +//
    +// See the documentation of StructuralTerms for more information on
    +// normalization.
    +func UnionTermSet(union *types.Union) ([]*types.Term, error) {
    +	return computeTermSet(union)
    +}
    +
    +func computeTermSet(typ types.Type) ([]*types.Term, error) {
    +	tset, err := computeTermSetInternal(typ, make(map[types.Type]*termSet), 0)
    +	if err != nil {
    +		return nil, err
    +	}
    +	if tset.terms.isEmpty() {
    +		return nil, ErrEmptyTypeSet
    +	}
    +	if tset.terms.isAll() {
    +		return nil, nil
    +	}
    +	var terms []*types.Term
    +	for _, term := range tset.terms {
    +		terms = append(terms, types.NewTerm(term.tilde, term.typ))
    +	}
    +	return terms, nil
    +}
    +
    +// A termSet holds the normalized set of terms for a given type.
    +//
    +// The name termSet is intentionally distinct from 'type set': a type set is
    +// all types that implement a type (and includes method restrictions), whereas
    +// a term set just represents the structural restrictions on a type.
    +type termSet struct {
    +	complete bool
    +	terms    termlist
    +}
    +
    +func indentf(depth int, format string, args ...interface{}) {
    +	fmt.Fprintf(os.Stderr, strings.Repeat(".", depth)+format+"\n", args...)
    +}
    +
    +func computeTermSetInternal(t types.Type, seen map[types.Type]*termSet, depth int) (res *termSet, err error) {
    +	if t == nil {
    +		panic("nil type")
    +	}
    +
    +	if debug {
    +		indentf(depth, "%s", t.String())
    +		defer func() {
    +			if err != nil {
    +				indentf(depth, "=> %s", err)
    +			} else {
    +				indentf(depth, "=> %s", res.terms.String())
    +			}
    +		}()
    +	}
    +
    +	const maxTermCount = 100
    +	if tset, ok := seen[t]; ok {
    +		if !tset.complete {
    +			return nil, fmt.Errorf("cycle detected in the declaration of %s", t)
    +		}
    +		return tset, nil
    +	}
    +
    +	// Mark the current type as seen to avoid infinite recursion.
    +	tset := new(termSet)
    +	defer func() {
    +		tset.complete = true
    +	}()
    +	seen[t] = tset
    +
    +	switch u := t.Underlying().(type) {
    +	case *types.Interface:
    +		// The term set of an interface is the intersection of the term sets of its
    +		// embedded types.
    +		tset.terms = allTermlist
    +		for i := 0; i < u.NumEmbeddeds(); i++ {
    +			embedded := u.EmbeddedType(i)
    +			if _, ok := embedded.Underlying().(*types.TypeParam); ok {
    +				return nil, fmt.Errorf("invalid embedded type %T", embedded)
    +			}
    +			tset2, err := computeTermSetInternal(embedded, seen, depth+1)
    +			if err != nil {
    +				return nil, err
    +			}
    +			tset.terms = tset.terms.intersect(tset2.terms)
    +		}
    +	case *types.Union:
    +		// The term set of a union is the union of term sets of its terms.
    +		tset.terms = nil
    +		for i := 0; i < u.Len(); i++ {
    +			t := u.Term(i)
    +			var terms termlist
    +			switch t.Type().Underlying().(type) {
    +			case *types.Interface:
    +				tset2, err := computeTermSetInternal(t.Type(), seen, depth+1)
    +				if err != nil {
    +					return nil, err
    +				}
    +				terms = tset2.terms
    +			case *types.TypeParam, *types.Union:
    +				// A stand-alone type parameter or union is not permitted as union
    +				// term.
    +				return nil, fmt.Errorf("invalid union term %T", t)
    +			default:
    +				if t.Type() == types.Typ[types.Invalid] {
    +					continue
    +				}
    +				terms = termlist{{t.Tilde(), t.Type()}}
    +			}
    +			tset.terms = tset.terms.union(terms)
    +			if len(tset.terms) > maxTermCount {
    +				return nil, fmt.Errorf("exceeded max term count %d", maxTermCount)
    +			}
    +		}
    +	case *types.TypeParam:
    +		panic("unreachable")
    +	default:
    +		// For all other types, the term set is just a single non-tilde term
    +		// holding the type itself.
    +		if u != types.Typ[types.Invalid] {
    +			tset.terms = termlist{{false, t}}
    +		}
    +	}
    +	return tset, nil
    +}
    +
    +// under is a facade for the go/types internal function of the same name. It is
    +// used by typeterm.go.
    +func under(t types.Type) types.Type {
    +	return t.Underlying()
    +}
    diff --git a/vendor/golang.org/x/tools/internal/typeparams/termlist.go b/vendor/golang.org/x/tools/internal/typeparams/termlist.go
    new file mode 100644
    index 000000000000..cbd12f801314
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/typeparams/termlist.go
    @@ -0,0 +1,163 @@
    +// Copyright 2021 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +// Code generated by copytermlist.go DO NOT EDIT.
    +
    +package typeparams
    +
    +import (
    +	"bytes"
    +	"go/types"
    +)
    +
    +// A termlist represents the type set represented by the union
    +// t1 ∪ y2 ∪ ... tn of the type sets of the terms t1 to tn.
    +// A termlist is in normal form if all terms are disjoint.
    +// termlist operations don't require the operands to be in
    +// normal form.
    +type termlist []*term
    +
    +// allTermlist represents the set of all types.
    +// It is in normal form.
    +var allTermlist = termlist{new(term)}
    +
    +// String prints the termlist exactly (without normalization).
    +func (xl termlist) String() string {
    +	if len(xl) == 0 {
    +		return "∅"
    +	}
    +	var buf bytes.Buffer
    +	for i, x := range xl {
    +		if i > 0 {
    +			buf.WriteString(" | ")
    +		}
    +		buf.WriteString(x.String())
    +	}
    +	return buf.String()
    +}
    +
    +// isEmpty reports whether the termlist xl represents the empty set of types.
    +func (xl termlist) isEmpty() bool {
    +	// If there's a non-nil term, the entire list is not empty.
    +	// If the termlist is in normal form, this requires at most
    +	// one iteration.
    +	for _, x := range xl {
    +		if x != nil {
    +			return false
    +		}
    +	}
    +	return true
    +}
    +
    +// isAll reports whether the termlist xl represents the set of all types.
    +func (xl termlist) isAll() bool {
    +	// If there's a 𝓤 term, the entire list is 𝓤.
    +	// If the termlist is in normal form, this requires at most
    +	// one iteration.
    +	for _, x := range xl {
    +		if x != nil && x.typ == nil {
    +			return true
    +		}
    +	}
    +	return false
    +}
    +
    +// norm returns the normal form of xl.
    +func (xl termlist) norm() termlist {
    +	// Quadratic algorithm, but good enough for now.
    +	// TODO(gri) fix asymptotic performance
    +	used := make([]bool, len(xl))
    +	var rl termlist
    +	for i, xi := range xl {
    +		if xi == nil || used[i] {
    +			continue
    +		}
    +		for j := i + 1; j < len(xl); j++ {
    +			xj := xl[j]
    +			if xj == nil || used[j] {
    +				continue
    +			}
    +			if u1, u2 := xi.union(xj); u2 == nil {
    +				// If we encounter a 𝓤 term, the entire list is 𝓤.
    +				// Exit early.
    +				// (Note that this is not just an optimization;
    +				// if we continue, we may end up with a 𝓤 term
    +				// and other terms and the result would not be
    +				// in normal form.)
    +				if u1.typ == nil {
    +					return allTermlist
    +				}
    +				xi = u1
    +				used[j] = true // xj is now unioned into xi - ignore it in future iterations
    +			}
    +		}
    +		rl = append(rl, xi)
    +	}
    +	return rl
    +}
    +
    +// union returns the union xl ∪ yl.
    +func (xl termlist) union(yl termlist) termlist {
    +	return append(xl, yl...).norm()
    +}
    +
    +// intersect returns the intersection xl ∩ yl.
    +func (xl termlist) intersect(yl termlist) termlist {
    +	if xl.isEmpty() || yl.isEmpty() {
    +		return nil
    +	}
    +
    +	// Quadratic algorithm, but good enough for now.
    +	// TODO(gri) fix asymptotic performance
    +	var rl termlist
    +	for _, x := range xl {
    +		for _, y := range yl {
    +			if r := x.intersect(y); r != nil {
    +				rl = append(rl, r)
    +			}
    +		}
    +	}
    +	return rl.norm()
    +}
    +
    +// equal reports whether xl and yl represent the same type set.
    +func (xl termlist) equal(yl termlist) bool {
    +	// TODO(gri) this should be more efficient
    +	return xl.subsetOf(yl) && yl.subsetOf(xl)
    +}
    +
    +// includes reports whether t ∈ xl.
    +func (xl termlist) includes(t types.Type) bool {
    +	for _, x := range xl {
    +		if x.includes(t) {
    +			return true
    +		}
    +	}
    +	return false
    +}
    +
    +// supersetOf reports whether y ⊆ xl.
    +func (xl termlist) supersetOf(y *term) bool {
    +	for _, x := range xl {
    +		if y.subsetOf(x) {
    +			return true
    +		}
    +	}
    +	return false
    +}
    +
    +// subsetOf reports whether xl ⊆ yl.
    +func (xl termlist) subsetOf(yl termlist) bool {
    +	if yl.isEmpty() {
    +		return xl.isEmpty()
    +	}
    +
    +	// each term x of xl must be a subset of yl
    +	for _, x := range xl {
    +		if !yl.supersetOf(x) {
    +			return false // x is not a subset yl
    +		}
    +	}
    +	return true
    +}
    diff --git a/vendor/golang.org/x/tools/internal/typeparams/typeterm.go b/vendor/golang.org/x/tools/internal/typeparams/typeterm.go
    new file mode 100644
    index 000000000000..7350bb702a17
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/typeparams/typeterm.go
    @@ -0,0 +1,169 @@
    +// Copyright 2021 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +// Code generated by copytermlist.go DO NOT EDIT.
    +
    +package typeparams
    +
    +import "go/types"
    +
    +// A term describes elementary type sets:
    +//
    +//	 ∅:  (*term)(nil)     == ∅                      // set of no types (empty set)
    +//	 𝓤:  &term{}          == 𝓤                      // set of all types (𝓤niverse)
    +//	 T:  &term{false, T}  == {T}                    // set of type T
    +//	~t:  &term{true, t}   == {t' | under(t') == t}  // set of types with underlying type t
    +type term struct {
    +	tilde bool // valid if typ != nil
    +	typ   types.Type
    +}
    +
    +func (x *term) String() string {
    +	switch {
    +	case x == nil:
    +		return "∅"
    +	case x.typ == nil:
    +		return "𝓤"
    +	case x.tilde:
    +		return "~" + x.typ.String()
    +	default:
    +		return x.typ.String()
    +	}
    +}
    +
    +// equal reports whether x and y represent the same type set.
    +func (x *term) equal(y *term) bool {
    +	// easy cases
    +	switch {
    +	case x == nil || y == nil:
    +		return x == y
    +	case x.typ == nil || y.typ == nil:
    +		return x.typ == y.typ
    +	}
    +	// ∅ ⊂ x, y ⊂ 𝓤
    +
    +	return x.tilde == y.tilde && types.Identical(x.typ, y.typ)
    +}
    +
    +// union returns the union x ∪ y: zero, one, or two non-nil terms.
    +func (x *term) union(y *term) (_, _ *term) {
    +	// easy cases
    +	switch {
    +	case x == nil && y == nil:
    +		return nil, nil // ∅ ∪ ∅ == ∅
    +	case x == nil:
    +		return y, nil // ∅ ∪ y == y
    +	case y == nil:
    +		return x, nil // x ∪ ∅ == x
    +	case x.typ == nil:
    +		return x, nil // 𝓤 ∪ y == 𝓤
    +	case y.typ == nil:
    +		return y, nil // x ∪ 𝓤 == 𝓤
    +	}
    +	// ∅ ⊂ x, y ⊂ 𝓤
    +
    +	if x.disjoint(y) {
    +		return x, y // x ∪ y == (x, y) if x ∩ y == ∅
    +	}
    +	// x.typ == y.typ
    +
    +	// ~t ∪ ~t == ~t
    +	// ~t ∪  T == ~t
    +	//  T ∪ ~t == ~t
    +	//  T ∪  T ==  T
    +	if x.tilde || !y.tilde {
    +		return x, nil
    +	}
    +	return y, nil
    +}
    +
    +// intersect returns the intersection x ∩ y.
    +func (x *term) intersect(y *term) *term {
    +	// easy cases
    +	switch {
    +	case x == nil || y == nil:
    +		return nil // ∅ ∩ y == ∅ and ∩ ∅ == ∅
    +	case x.typ == nil:
    +		return y // 𝓤 ∩ y == y
    +	case y.typ == nil:
    +		return x // x ∩ 𝓤 == x
    +	}
    +	// ∅ ⊂ x, y ⊂ 𝓤
    +
    +	if x.disjoint(y) {
    +		return nil // x ∩ y == ∅ if x ∩ y == ∅
    +	}
    +	// x.typ == y.typ
    +
    +	// ~t ∩ ~t == ~t
    +	// ~t ∩  T ==  T
    +	//  T ∩ ~t ==  T
    +	//  T ∩  T ==  T
    +	if !x.tilde || y.tilde {
    +		return x
    +	}
    +	return y
    +}
    +
    +// includes reports whether t ∈ x.
    +func (x *term) includes(t types.Type) bool {
    +	// easy cases
    +	switch {
    +	case x == nil:
    +		return false // t ∈ ∅ == false
    +	case x.typ == nil:
    +		return true // t ∈ 𝓤 == true
    +	}
    +	// ∅ ⊂ x ⊂ 𝓤
    +
    +	u := t
    +	if x.tilde {
    +		u = under(u)
    +	}
    +	return types.Identical(x.typ, u)
    +}
    +
    +// subsetOf reports whether x ⊆ y.
    +func (x *term) subsetOf(y *term) bool {
    +	// easy cases
    +	switch {
    +	case x == nil:
    +		return true // ∅ ⊆ y == true
    +	case y == nil:
    +		return false // x ⊆ ∅ == false since x != ∅
    +	case y.typ == nil:
    +		return true // x ⊆ 𝓤 == true
    +	case x.typ == nil:
    +		return false // 𝓤 ⊆ y == false since y != 𝓤
    +	}
    +	// ∅ ⊂ x, y ⊂ 𝓤
    +
    +	if x.disjoint(y) {
    +		return false // x ⊆ y == false if x ∩ y == ∅
    +	}
    +	// x.typ == y.typ
    +
    +	// ~t ⊆ ~t == true
    +	// ~t ⊆ T == false
    +	//  T ⊆ ~t == true
    +	//  T ⊆  T == true
    +	return !x.tilde || y.tilde
    +}
    +
    +// disjoint reports whether x ∩ y == ∅.
    +// x.typ and y.typ must not be nil.
    +func (x *term) disjoint(y *term) bool {
    +	if debug && (x.typ == nil || y.typ == nil) {
    +		panic("invalid argument(s)")
    +	}
    +	ux := x.typ
    +	if y.tilde {
    +		ux = under(ux)
    +	}
    +	uy := y.typ
    +	if x.tilde {
    +		uy = under(uy)
    +	}
    +	return !types.Identical(ux, uy)
    +}
    diff --git a/vendor/golang.org/x/tools/internal/typesinternal/element.go b/vendor/golang.org/x/tools/internal/typesinternal/element.go
    new file mode 100644
    index 000000000000..4957f0216418
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/typesinternal/element.go
    @@ -0,0 +1,133 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package typesinternal
    +
    +import (
    +	"fmt"
    +	"go/types"
    +
    +	"golang.org/x/tools/go/types/typeutil"
    +)
    +
    +// ForEachElement calls f for type T and each type reachable from its
    +// type through reflection. It does this by recursively stripping off
    +// type constructors; in addition, for each named type N, the type *N
    +// is added to the result as it may have additional methods.
    +//
    +// The caller must provide an initially empty set used to de-duplicate
    +// identical types, potentially across multiple calls to ForEachElement.
    +// (Its final value holds all the elements seen, matching the arguments
    +// passed to f.)
    +//
    +// TODO(adonovan): share/harmonize with go/callgraph/rta.
    +func ForEachElement(rtypes *typeutil.Map, msets *typeutil.MethodSetCache, T types.Type, f func(types.Type)) {
    +	var visit func(T types.Type, skip bool)
    +	visit = func(T types.Type, skip bool) {
    +		if !skip {
    +			if seen, _ := rtypes.Set(T, true).(bool); seen {
    +				return // de-dup
    +			}
    +
    +			f(T) // notify caller of new element type
    +		}
    +
    +		// Recursion over signatures of each method.
    +		tmset := msets.MethodSet(T)
    +		for i := 0; i < tmset.Len(); i++ {
    +			sig := tmset.At(i).Type().(*types.Signature)
    +			// It is tempting to call visit(sig, false)
    +			// but, as noted in golang.org/cl/65450043,
    +			// the Signature.Recv field is ignored by
    +			// types.Identical and typeutil.Map, which
    +			// is confusing at best.
    +			//
    +			// More importantly, the true signature rtype
    +			// reachable from a method using reflection
    +			// has no receiver but an extra ordinary parameter.
    +			// For the Read method of io.Reader we want:
    +			//   func(Reader, []byte) (int, error)
    +			// but here sig is:
    +			//   func([]byte) (int, error)
    +			// with .Recv = Reader (though it is hard to
    +			// notice because it doesn't affect Signature.String
    +			// or types.Identical).
    +			//
    +			// TODO(adonovan): construct and visit the correct
    +			// non-method signature with an extra parameter
    +			// (though since unnamed func types have no methods
    +			// there is essentially no actual demand for this).
    +			//
    +			// TODO(adonovan): document whether or not it is
    +			// safe to skip non-exported methods (as RTA does).
    +			visit(sig.Params(), true)  // skip the Tuple
    +			visit(sig.Results(), true) // skip the Tuple
    +		}
    +
    +		switch T := T.(type) {
    +		case *types.Alias:
    +			visit(types.Unalias(T), skip) // emulates the pre-Alias behavior
    +
    +		case *types.Basic:
    +			// nop
    +
    +		case *types.Interface:
    +			// nop---handled by recursion over method set.
    +
    +		case *types.Pointer:
    +			visit(T.Elem(), false)
    +
    +		case *types.Slice:
    +			visit(T.Elem(), false)
    +
    +		case *types.Chan:
    +			visit(T.Elem(), false)
    +
    +		case *types.Map:
    +			visit(T.Key(), false)
    +			visit(T.Elem(), false)
    +
    +		case *types.Signature:
    +			if T.Recv() != nil {
    +				panic(fmt.Sprintf("Signature %s has Recv %s", T, T.Recv()))
    +			}
    +			visit(T.Params(), true)  // skip the Tuple
    +			visit(T.Results(), true) // skip the Tuple
    +
    +		case *types.Named:
    +			// A pointer-to-named type can be derived from a named
    +			// type via reflection.  It may have methods too.
    +			visit(types.NewPointer(T), false)
    +
    +			// Consider 'type T struct{S}' where S has methods.
    +			// Reflection provides no way to get from T to struct{S},
    +			// only to S, so the method set of struct{S} is unwanted,
    +			// so set 'skip' flag during recursion.
    +			visit(T.Underlying(), true) // skip the unnamed type
    +
    +		case *types.Array:
    +			visit(T.Elem(), false)
    +
    +		case *types.Struct:
    +			for i, n := 0, T.NumFields(); i < n; i++ {
    +				// TODO(adonovan): document whether or not
    +				// it is safe to skip non-exported fields.
    +				visit(T.Field(i).Type(), false)
    +			}
    +
    +		case *types.Tuple:
    +			for i, n := 0, T.Len(); i < n; i++ {
    +				visit(T.At(i).Type(), false)
    +			}
    +
    +		case *types.TypeParam, *types.Union:
    +			// forEachReachable must not be called on parameterized types.
    +			panic(T)
    +
    +		default:
    +			panic(T)
    +		}
    +	}
    +	visit(T, false)
    +}
    diff --git a/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go b/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go
    index 834e05381cea..131caab2847e 100644
    --- a/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go
    +++ b/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go
    @@ -838,7 +838,7 @@ const (
     	// InvalidCap occurs when an argument to the cap built-in function is not of
     	// supported type.
     	//
    -	// See https://golang.org/ref/spec#Lengthand_capacity for information on
    +	// See https://golang.org/ref/spec#Length_and_capacity for information on
     	// which underlying types are supported as arguments to cap and len.
     	//
     	// Example:
    @@ -859,7 +859,7 @@ const (
     	// InvalidCopy occurs when the arguments are not of slice type or do not
     	// have compatible type.
     	//
    -	// See https://golang.org/ref/spec#Appendingand_copying_slices for more
    +	// See https://golang.org/ref/spec#Appending_and_copying_slices for more
     	// information on the type requirements for the copy built-in.
     	//
     	// Example:
    @@ -897,7 +897,7 @@ const (
     	// InvalidLen occurs when an argument to the len built-in function is not of
     	// supported type.
     	//
    -	// See https://golang.org/ref/spec#Lengthand_capacity for information on
    +	// See https://golang.org/ref/spec#Length_and_capacity for information on
     	// which underlying types are supported as arguments to cap and len.
     	//
     	// Example:
    @@ -914,7 +914,7 @@ const (
     
     	// InvalidMake occurs when make is called with an unsupported type argument.
     	//
    -	// See https://golang.org/ref/spec#Makingslices_maps_and_channels for
    +	// See https://golang.org/ref/spec#Making_slices_maps_and_channels for
     	// information on the types that may be created using make.
     	//
     	// Example:
    diff --git a/vendor/golang.org/x/tools/internal/typesinternal/qualifier.go b/vendor/golang.org/x/tools/internal/typesinternal/qualifier.go
    new file mode 100644
    index 000000000000..b64f714eb30f
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/typesinternal/qualifier.go
    @@ -0,0 +1,46 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package typesinternal
    +
    +import (
    +	"go/ast"
    +	"go/types"
    +	"strconv"
    +)
    +
    +// FileQualifier returns a [types.Qualifier] function that qualifies
    +// imported symbols appropriately based on the import environment of a given
    +// file.
    +// If the same package is imported multiple times, the last appearance is
    +// recorded.
    +func FileQualifier(f *ast.File, pkg *types.Package) types.Qualifier {
    +	// Construct mapping of import paths to their defined names.
    +	// It is only necessary to look at renaming imports.
    +	imports := make(map[string]string)
    +	for _, imp := range f.Imports {
    +		if imp.Name != nil && imp.Name.Name != "_" {
    +			path, _ := strconv.Unquote(imp.Path.Value)
    +			imports[path] = imp.Name.Name
    +		}
    +	}
    +
    +	// Define qualifier to replace full package paths with names of the imports.
    +	return func(p *types.Package) string {
    +		if p == nil || p == pkg {
    +			return ""
    +		}
    +
    +		if name, ok := imports[p.Path()]; ok {
    +			if name == "." {
    +				return ""
    +			} else {
    +				return name
    +			}
    +		}
    +
    +		// If there is no local renaming, fall back to the package name.
    +		return p.Name()
    +	}
    +}
    diff --git a/vendor/golang.org/x/tools/internal/typesinternal/recv.go b/vendor/golang.org/x/tools/internal/typesinternal/recv.go
    index fea7c8b75e8e..e54accc69a0d 100644
    --- a/vendor/golang.org/x/tools/internal/typesinternal/recv.go
    +++ b/vendor/golang.org/x/tools/internal/typesinternal/recv.go
    @@ -6,20 +6,20 @@ package typesinternal
     
     import (
     	"go/types"
    -
    -	"golang.org/x/tools/internal/aliases"
     )
     
     // ReceiverNamed returns the named type (if any) associated with the
     // type of recv, which may be of the form N or *N, or aliases thereof.
     // It also reports whether a Pointer was present.
    +//
    +// The named result may be nil in ill-typed code.
     func ReceiverNamed(recv *types.Var) (isPtr bool, named *types.Named) {
     	t := recv.Type()
    -	if ptr, ok := aliases.Unalias(t).(*types.Pointer); ok {
    +	if ptr, ok := types.Unalias(t).(*types.Pointer); ok {
     		isPtr = true
     		t = ptr.Elem()
     	}
    -	named, _ = aliases.Unalias(t).(*types.Named)
    +	named, _ = types.Unalias(t).(*types.Named)
     	return
     }
     
    @@ -36,7 +36,7 @@ func ReceiverNamed(recv *types.Var) (isPtr bool, named *types.Named) {
     // indirection from the type, regardless of named types (analogous to
     // a LOAD instruction).
     func Unpointer(t types.Type) types.Type {
    -	if ptr, ok := aliases.Unalias(t).(*types.Pointer); ok {
    +	if ptr, ok := types.Unalias(t).(*types.Pointer); ok {
     		return ptr.Elem()
     	}
     	return t
    diff --git a/vendor/golang.org/x/tools/internal/typesinternal/types.go b/vendor/golang.org/x/tools/internal/typesinternal/types.go
    index 83923286120d..a93d51f9882f 100644
    --- a/vendor/golang.org/x/tools/internal/typesinternal/types.go
    +++ b/vendor/golang.org/x/tools/internal/typesinternal/types.go
    @@ -11,6 +11,8 @@ import (
     	"go/types"
     	"reflect"
     	"unsafe"
    +
    +	"golang.org/x/tools/internal/aliases"
     )
     
     func SetUsesCgo(conf *types.Config) bool {
    @@ -63,3 +65,58 @@ func NameRelativeTo(pkg *types.Package) types.Qualifier {
     		return other.Name()
     	}
     }
    +
    +// A NamedOrAlias is a [types.Type] that is named (as
    +// defined by the spec) and capable of bearing type parameters: it
    +// abstracts aliases ([types.Alias]) and defined types
    +// ([types.Named]).
    +//
    +// Every type declared by an explicit "type" declaration is a
    +// NamedOrAlias. (Built-in type symbols may additionally
    +// have type [types.Basic], which is not a NamedOrAlias,
    +// though the spec regards them as "named".)
    +//
    +// NamedOrAlias cannot expose the Origin method, because
    +// [types.Alias.Origin] and [types.Named.Origin] have different
    +// (covariant) result types; use [Origin] instead.
    +type NamedOrAlias interface {
    +	types.Type
    +	Obj() *types.TypeName
    +	// TODO(hxjiang): add method TypeArgs() *types.TypeList after stop supporting go1.22.
    +}
    +
    +// TypeParams is a light shim around t.TypeParams().
    +// (go/types.Alias).TypeParams requires >= 1.23.
    +func TypeParams(t NamedOrAlias) *types.TypeParamList {
    +	switch t := t.(type) {
    +	case *types.Alias:
    +		return aliases.TypeParams(t)
    +	case *types.Named:
    +		return t.TypeParams()
    +	}
    +	return nil
    +}
    +
    +// TypeArgs is a light shim around t.TypeArgs().
    +// (go/types.Alias).TypeArgs requires >= 1.23.
    +func TypeArgs(t NamedOrAlias) *types.TypeList {
    +	switch t := t.(type) {
    +	case *types.Alias:
    +		return aliases.TypeArgs(t)
    +	case *types.Named:
    +		return t.TypeArgs()
    +	}
    +	return nil
    +}
    +
    +// Origin returns the generic type of the Named or Alias type t if it
    +// is instantiated, otherwise it returns t.
    +func Origin(t NamedOrAlias) NamedOrAlias {
    +	switch t := t.(type) {
    +	case *types.Alias:
    +		return aliases.Origin(t)
    +	case *types.Named:
    +		return t.Origin()
    +	}
    +	return t
    +}
    diff --git a/vendor/golang.org/x/tools/internal/typesinternal/zerovalue.go b/vendor/golang.org/x/tools/internal/typesinternal/zerovalue.go
    new file mode 100644
    index 000000000000..d272949c1771
    --- /dev/null
    +++ b/vendor/golang.org/x/tools/internal/typesinternal/zerovalue.go
    @@ -0,0 +1,392 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package typesinternal
    +
    +import (
    +	"fmt"
    +	"go/ast"
    +	"go/token"
    +	"go/types"
    +	"strings"
    +)
    +
    +// ZeroString returns the string representation of the zero value for any type t.
    +// The boolean result indicates whether the type is or contains an invalid type
    +// or a non-basic (constraint) interface type.
    +//
    +// Even for invalid input types, ZeroString may return a partially correct
    +// string representation. The caller should use the returned isValid boolean
    +// to determine the validity of the expression.
    +//
    +// When assigning to a wider type (such as 'any'), it's the caller's
    +// responsibility to handle any necessary type conversions.
    +//
    +// This string can be used on the right-hand side of an assignment where the
    +// left-hand side has that explicit type.
    +// References to named types are qualified by an appropriate (optional)
    +// qualifier function.
    +// Exception: This does not apply to tuples. Their string representation is
    +// informational only and cannot be used in an assignment.
    +//
    +// See [ZeroExpr] for a variant that returns an [ast.Expr].
    +func ZeroString(t types.Type, qual types.Qualifier) (_ string, isValid bool) {
    +	switch t := t.(type) {
    +	case *types.Basic:
    +		switch {
    +		case t.Info()&types.IsBoolean != 0:
    +			return "false", true
    +		case t.Info()&types.IsNumeric != 0:
    +			return "0", true
    +		case t.Info()&types.IsString != 0:
    +			return `""`, true
    +		case t.Kind() == types.UnsafePointer:
    +			fallthrough
    +		case t.Kind() == types.UntypedNil:
    +			return "nil", true
    +		case t.Kind() == types.Invalid:
    +			return "invalid", false
    +		default:
    +			panic(fmt.Sprintf("ZeroString for unexpected type %v", t))
    +		}
    +
    +	case *types.Pointer, *types.Slice, *types.Chan, *types.Map, *types.Signature:
    +		return "nil", true
    +
    +	case *types.Interface:
    +		if !t.IsMethodSet() {
    +			return "invalid", false
    +		}
    +		return "nil", true
    +
    +	case *types.Named:
    +		switch under := t.Underlying().(type) {
    +		case *types.Struct, *types.Array:
    +			return types.TypeString(t, qual) + "{}", true
    +		default:
    +			return ZeroString(under, qual)
    +		}
    +
    +	case *types.Alias:
    +		switch t.Underlying().(type) {
    +		case *types.Struct, *types.Array:
    +			return types.TypeString(t, qual) + "{}", true
    +		default:
    +			// A type parameter can have alias but alias type's underlying type
    +			// can never be a type parameter.
    +			// Use types.Unalias to preserve the info of type parameter instead
    +			// of call Underlying() going right through and get the underlying
    +			// type of the type parameter which is always an interface.
    +			return ZeroString(types.Unalias(t), qual)
    +		}
    +
    +	case *types.Array, *types.Struct:
    +		return types.TypeString(t, qual) + "{}", true
    +
    +	case *types.TypeParam:
    +		// Assumes func new is not shadowed.
    +		return "*new(" + types.TypeString(t, qual) + ")", true
    +
    +	case *types.Tuple:
    +		// Tuples are not normal values.
    +		// We are currently format as "(t[0], ..., t[n])". Could be something else.
    +		isValid := true
    +		components := make([]string, t.Len())
    +		for i := 0; i < t.Len(); i++ {
    +			comp, ok := ZeroString(t.At(i).Type(), qual)
    +
    +			components[i] = comp
    +			isValid = isValid && ok
    +		}
    +		return "(" + strings.Join(components, ", ") + ")", isValid
    +
    +	case *types.Union:
    +		// Variables of these types cannot be created, so it makes
    +		// no sense to ask for their zero value.
    +		panic(fmt.Sprintf("invalid type for a variable: %v", t))
    +
    +	default:
    +		panic(t) // unreachable.
    +	}
    +}
    +
    +// ZeroExpr returns the ast.Expr representation of the zero value for any type t.
    +// The boolean result indicates whether the type is or contains an invalid type
    +// or a non-basic (constraint) interface type.
    +//
    +// Even for invalid input types, ZeroExpr may return a partially correct ast.Expr
    +// representation. The caller should use the returned isValid boolean to determine
    +// the validity of the expression.
    +//
    +// This function is designed for types suitable for variables and should not be
    +// used with Tuple or Union types.References to named types are qualified by an
    +// appropriate (optional) qualifier function.
    +//
    +// See [ZeroString] for a variant that returns a string.
    +func ZeroExpr(t types.Type, qual types.Qualifier) (_ ast.Expr, isValid bool) {
    +	switch t := t.(type) {
    +	case *types.Basic:
    +		switch {
    +		case t.Info()&types.IsBoolean != 0:
    +			return &ast.Ident{Name: "false"}, true
    +		case t.Info()&types.IsNumeric != 0:
    +			return &ast.BasicLit{Kind: token.INT, Value: "0"}, true
    +		case t.Info()&types.IsString != 0:
    +			return &ast.BasicLit{Kind: token.STRING, Value: `""`}, true
    +		case t.Kind() == types.UnsafePointer:
    +			fallthrough
    +		case t.Kind() == types.UntypedNil:
    +			return ast.NewIdent("nil"), true
    +		case t.Kind() == types.Invalid:
    +			return &ast.BasicLit{Kind: token.STRING, Value: `"invalid"`}, false
    +		default:
    +			panic(fmt.Sprintf("ZeroExpr for unexpected type %v", t))
    +		}
    +
    +	case *types.Pointer, *types.Slice, *types.Chan, *types.Map, *types.Signature:
    +		return ast.NewIdent("nil"), true
    +
    +	case *types.Interface:
    +		if !t.IsMethodSet() {
    +			return &ast.BasicLit{Kind: token.STRING, Value: `"invalid"`}, false
    +		}
    +		return ast.NewIdent("nil"), true
    +
    +	case *types.Named:
    +		switch under := t.Underlying().(type) {
    +		case *types.Struct, *types.Array:
    +			return &ast.CompositeLit{
    +				Type: TypeExpr(t, qual),
    +			}, true
    +		default:
    +			return ZeroExpr(under, qual)
    +		}
    +
    +	case *types.Alias:
    +		switch t.Underlying().(type) {
    +		case *types.Struct, *types.Array:
    +			return &ast.CompositeLit{
    +				Type: TypeExpr(t, qual),
    +			}, true
    +		default:
    +			return ZeroExpr(types.Unalias(t), qual)
    +		}
    +
    +	case *types.Array, *types.Struct:
    +		return &ast.CompositeLit{
    +			Type: TypeExpr(t, qual),
    +		}, true
    +
    +	case *types.TypeParam:
    +		return &ast.StarExpr{ // *new(T)
    +			X: &ast.CallExpr{
    +				// Assumes func new is not shadowed.
    +				Fun: ast.NewIdent("new"),
    +				Args: []ast.Expr{
    +					ast.NewIdent(t.Obj().Name()),
    +				},
    +			},
    +		}, true
    +
    +	case *types.Tuple:
    +		// Unlike ZeroString, there is no ast.Expr can express tuple by
    +		// "(t[0], ..., t[n])".
    +		panic(fmt.Sprintf("invalid type for a variable: %v", t))
    +
    +	case *types.Union:
    +		// Variables of these types cannot be created, so it makes
    +		// no sense to ask for their zero value.
    +		panic(fmt.Sprintf("invalid type for a variable: %v", t))
    +
    +	default:
    +		panic(t) // unreachable.
    +	}
    +}
    +
    +// IsZeroExpr uses simple syntactic heuristics to report whether expr
    +// is a obvious zero value, such as 0, "", nil, or false.
    +// It cannot do better without type information.
    +func IsZeroExpr(expr ast.Expr) bool {
    +	switch e := expr.(type) {
    +	case *ast.BasicLit:
    +		return e.Value == "0" || e.Value == `""`
    +	case *ast.Ident:
    +		return e.Name == "nil" || e.Name == "false"
    +	default:
    +		return false
    +	}
    +}
    +
    +// TypeExpr returns syntax for the specified type. References to named types
    +// are qualified by an appropriate (optional) qualifier function.
    +// It may panic for types such as Tuple or Union.
    +func TypeExpr(t types.Type, qual types.Qualifier) ast.Expr {
    +	switch t := t.(type) {
    +	case *types.Basic:
    +		switch t.Kind() {
    +		case types.UnsafePointer:
    +			return &ast.SelectorExpr{X: ast.NewIdent(qual(types.NewPackage("unsafe", "unsafe"))), Sel: ast.NewIdent("Pointer")}
    +		default:
    +			return ast.NewIdent(t.Name())
    +		}
    +
    +	case *types.Pointer:
    +		return &ast.UnaryExpr{
    +			Op: token.MUL,
    +			X:  TypeExpr(t.Elem(), qual),
    +		}
    +
    +	case *types.Array:
    +		return &ast.ArrayType{
    +			Len: &ast.BasicLit{
    +				Kind:  token.INT,
    +				Value: fmt.Sprintf("%d", t.Len()),
    +			},
    +			Elt: TypeExpr(t.Elem(), qual),
    +		}
    +
    +	case *types.Slice:
    +		return &ast.ArrayType{
    +			Elt: TypeExpr(t.Elem(), qual),
    +		}
    +
    +	case *types.Map:
    +		return &ast.MapType{
    +			Key:   TypeExpr(t.Key(), qual),
    +			Value: TypeExpr(t.Elem(), qual),
    +		}
    +
    +	case *types.Chan:
    +		dir := ast.ChanDir(t.Dir())
    +		if t.Dir() == types.SendRecv {
    +			dir = ast.SEND | ast.RECV
    +		}
    +		return &ast.ChanType{
    +			Dir:   dir,
    +			Value: TypeExpr(t.Elem(), qual),
    +		}
    +
    +	case *types.Signature:
    +		var params []*ast.Field
    +		for i := 0; i < t.Params().Len(); i++ {
    +			params = append(params, &ast.Field{
    +				Type: TypeExpr(t.Params().At(i).Type(), qual),
    +				Names: []*ast.Ident{
    +					{
    +						Name: t.Params().At(i).Name(),
    +					},
    +				},
    +			})
    +		}
    +		if t.Variadic() {
    +			last := params[len(params)-1]
    +			last.Type = &ast.Ellipsis{Elt: last.Type.(*ast.ArrayType).Elt}
    +		}
    +		var returns []*ast.Field
    +		for i := 0; i < t.Results().Len(); i++ {
    +			returns = append(returns, &ast.Field{
    +				Type: TypeExpr(t.Results().At(i).Type(), qual),
    +			})
    +		}
    +		return &ast.FuncType{
    +			Params: &ast.FieldList{
    +				List: params,
    +			},
    +			Results: &ast.FieldList{
    +				List: returns,
    +			},
    +		}
    +
    +	case *types.TypeParam:
    +		pkgName := qual(t.Obj().Pkg())
    +		if pkgName == "" || t.Obj().Pkg() == nil {
    +			return ast.NewIdent(t.Obj().Name())
    +		}
    +		return &ast.SelectorExpr{
    +			X:   ast.NewIdent(pkgName),
    +			Sel: ast.NewIdent(t.Obj().Name()),
    +		}
    +
    +	// types.TypeParam also implements interface NamedOrAlias. To differentiate,
    +	// case TypeParam need to be present before case NamedOrAlias.
    +	// TODO(hxjiang): remove this comment once TypeArgs() is added to interface
    +	// NamedOrAlias.
    +	case NamedOrAlias:
    +		var expr ast.Expr = ast.NewIdent(t.Obj().Name())
    +		if pkgName := qual(t.Obj().Pkg()); pkgName != "." && pkgName != "" {
    +			expr = &ast.SelectorExpr{
    +				X:   ast.NewIdent(pkgName),
    +				Sel: expr.(*ast.Ident),
    +			}
    +		}
    +
    +		// TODO(hxjiang): call t.TypeArgs after adding method TypeArgs() to
    +		// typesinternal.NamedOrAlias.
    +		if hasTypeArgs, ok := t.(interface{ TypeArgs() *types.TypeList }); ok {
    +			if typeArgs := hasTypeArgs.TypeArgs(); typeArgs != nil && typeArgs.Len() > 0 {
    +				var indices []ast.Expr
    +				for i := range typeArgs.Len() {
    +					indices = append(indices, TypeExpr(typeArgs.At(i), qual))
    +				}
    +				expr = &ast.IndexListExpr{
    +					X:       expr,
    +					Indices: indices,
    +				}
    +			}
    +		}
    +
    +		return expr
    +
    +	case *types.Struct:
    +		return ast.NewIdent(t.String())
    +
    +	case *types.Interface:
    +		return ast.NewIdent(t.String())
    +
    +	case *types.Union:
    +		if t.Len() == 0 {
    +			panic("Union type should have at least one term")
    +		}
    +		// Same as go/ast, the return expression will put last term in the
    +		// Y field at topmost level of BinaryExpr.
    +		// For union of type "float32 | float64 | int64", the structure looks
    +		// similar to:
    +		// {
    +		// 	X: {
    +		// 		X: float32,
    +		// 		Op: |
    +		// 		Y: float64,
    +		// 	}
    +		// 	Op: |,
    +		// 	Y: int64,
    +		// }
    +		var union ast.Expr
    +		for i := range t.Len() {
    +			term := t.Term(i)
    +			termExpr := TypeExpr(term.Type(), qual)
    +			if term.Tilde() {
    +				termExpr = &ast.UnaryExpr{
    +					Op: token.TILDE,
    +					X:  termExpr,
    +				}
    +			}
    +			if i == 0 {
    +				union = termExpr
    +			} else {
    +				union = &ast.BinaryExpr{
    +					X:  union,
    +					Op: token.OR,
    +					Y:  termExpr,
    +				}
    +			}
    +		}
    +		return union
    +
    +	case *types.Tuple:
    +		panic("invalid input type types.Tuple")
    +
    +	default:
    +		panic("unreachable")
    +	}
    +}
    diff --git a/vendor/golang.org/x/tools/internal/versions/toolchain.go b/vendor/golang.org/x/tools/internal/versions/toolchain.go
    deleted file mode 100644
    index 377bf7a53b4a..000000000000
    --- a/vendor/golang.org/x/tools/internal/versions/toolchain.go
    +++ /dev/null
    @@ -1,14 +0,0 @@
    -// Copyright 2024 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -package versions
    -
    -// toolchain is maximum version (<1.22) that the go toolchain used
    -// to build the current tool is known to support.
    -//
    -// When a tool is built with >=1.22, the value of toolchain is unused.
    -//
    -// x/tools does not support building with go <1.18. So we take this
    -// as the minimum possible maximum.
    -var toolchain string = Go1_18
    diff --git a/vendor/golang.org/x/tools/internal/versions/toolchain_go119.go b/vendor/golang.org/x/tools/internal/versions/toolchain_go119.go
    deleted file mode 100644
    index f65beed9d832..000000000000
    --- a/vendor/golang.org/x/tools/internal/versions/toolchain_go119.go
    +++ /dev/null
    @@ -1,14 +0,0 @@
    -// Copyright 2024 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build go1.19
    -// +build go1.19
    -
    -package versions
    -
    -func init() {
    -	if Compare(toolchain, Go1_19) < 0 {
    -		toolchain = Go1_19
    -	}
    -}
    diff --git a/vendor/golang.org/x/tools/internal/versions/toolchain_go121.go b/vendor/golang.org/x/tools/internal/versions/toolchain_go121.go
    deleted file mode 100644
    index b7ef216dfecf..000000000000
    --- a/vendor/golang.org/x/tools/internal/versions/toolchain_go121.go
    +++ /dev/null
    @@ -1,14 +0,0 @@
    -// Copyright 2024 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build go1.21
    -// +build go1.21
    -
    -package versions
    -
    -func init() {
    -	if Compare(toolchain, Go1_21) < 0 {
    -		toolchain = Go1_21
    -	}
    -}
    diff --git a/vendor/golang.org/x/tools/internal/versions/types.go b/vendor/golang.org/x/tools/internal/versions/types.go
    index 562eef21fa20..0fc10ce4eb59 100644
    --- a/vendor/golang.org/x/tools/internal/versions/types.go
    +++ b/vendor/golang.org/x/tools/internal/versions/types.go
    @@ -5,15 +5,29 @@
     package versions
     
     import (
    +	"go/ast"
     	"go/types"
     )
     
    -// GoVersion returns the Go version of the type package.
    -// It returns zero if no version can be determined.
    -func GoVersion(pkg *types.Package) string {
    -	// TODO(taking): x/tools can call GoVersion() [from 1.21] after 1.25.
    -	if pkg, ok := any(pkg).(interface{ GoVersion() string }); ok {
    -		return pkg.GoVersion()
    +// FileVersion returns a file's Go version.
    +// The reported version is an unknown Future version if a
    +// version cannot be determined.
    +func FileVersion(info *types.Info, file *ast.File) string {
    +	// In tools built with Go >= 1.22, the Go version of a file
    +	// follow a cascades of sources:
    +	// 1) types.Info.FileVersion, which follows the cascade:
    +	//   1.a) file version (ast.File.GoVersion),
    +	//   1.b) the package version (types.Config.GoVersion), or
    +	// 2) is some unknown Future version.
    +	//
    +	// File versions require a valid package version to be provided to types
    +	// in Config.GoVersion. Config.GoVersion is either from the package's module
    +	// or the toolchain (go run). This value should be provided by go/packages
    +	// or unitchecker.Config.GoVersion.
    +	if v := info.FileVersions[file]; IsValid(v) {
    +		return v
     	}
    -	return ""
    +	// Note: we could instead return runtime.Version() [if valid].
    +	// This would act as a max version on what a tool can support.
    +	return Future
     }
    diff --git a/vendor/golang.org/x/tools/internal/versions/types_go121.go b/vendor/golang.org/x/tools/internal/versions/types_go121.go
    deleted file mode 100644
    index b4345d3349e5..000000000000
    --- a/vendor/golang.org/x/tools/internal/versions/types_go121.go
    +++ /dev/null
    @@ -1,30 +0,0 @@
    -// Copyright 2023 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build !go1.22
    -// +build !go1.22
    -
    -package versions
    -
    -import (
    -	"go/ast"
    -	"go/types"
    -)
    -
    -// FileVersion returns a language version (<=1.21) derived from runtime.Version()
    -// or an unknown future version.
    -func FileVersion(info *types.Info, file *ast.File) string {
    -	// In x/tools built with Go <= 1.21, we do not have Info.FileVersions
    -	// available. We use a go version derived from the toolchain used to
    -	// compile the tool by default.
    -	// This will be <= go1.21. We take this as the maximum version that
    -	// this tool can support.
    -	//
    -	// There are no features currently in x/tools that need to tell fine grained
    -	// differences for versions <1.22.
    -	return toolchain
    -}
    -
    -// InitFileVersions is a noop when compiled with this Go version.
    -func InitFileVersions(*types.Info) {}
    diff --git a/vendor/golang.org/x/tools/internal/versions/types_go122.go b/vendor/golang.org/x/tools/internal/versions/types_go122.go
    deleted file mode 100644
    index aac5db62c983..000000000000
    --- a/vendor/golang.org/x/tools/internal/versions/types_go122.go
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -// Copyright 2023 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build go1.22
    -// +build go1.22
    -
    -package versions
    -
    -import (
    -	"go/ast"
    -	"go/types"
    -)
    -
    -// FileVersion returns a file's Go version.
    -// The reported version is an unknown Future version if a
    -// version cannot be determined.
    -func FileVersion(info *types.Info, file *ast.File) string {
    -	// In tools built with Go >= 1.22, the Go version of a file
    -	// follow a cascades of sources:
    -	// 1) types.Info.FileVersion, which follows the cascade:
    -	//   1.a) file version (ast.File.GoVersion),
    -	//   1.b) the package version (types.Config.GoVersion), or
    -	// 2) is some unknown Future version.
    -	//
    -	// File versions require a valid package version to be provided to types
    -	// in Config.GoVersion. Config.GoVersion is either from the package's module
    -	// or the toolchain (go run). This value should be provided by go/packages
    -	// or unitchecker.Config.GoVersion.
    -	if v := info.FileVersions[file]; IsValid(v) {
    -		return v
    -	}
    -	// Note: we could instead return runtime.Version() [if valid].
    -	// This would act as a max version on what a tool can support.
    -	return Future
    -}
    -
    -// InitFileVersions initializes info to record Go versions for Go files.
    -func InitFileVersions(info *types.Info) {
    -	info.FileVersions = make(map[*ast.File]string)
    -}
    diff --git a/vendor/google.golang.org/api/dns/v1/dns-api.json b/vendor/google.golang.org/api/dns/v1/dns-api.json
    index 1d05377782eb..ba51c634b1d6 100644
    --- a/vendor/google.golang.org/api/dns/v1/dns-api.json
    +++ b/vendor/google.golang.org/api/dns/v1/dns-api.json
    @@ -1824,11 +1824,11 @@
           }
         }
       },
    -  "revision": "20240419",
    +  "revision": "20240719",
       "rootUrl": "https://dns.googleapis.com/",
       "schemas": {
         "Change": {
    -      "description": "A Change represents a set of ResourceRecordSet additions and deletions applied atomically to a ManagedZone. ResourceRecordSets within a ManagedZone are modified by creating a new Change element in the Changes collection. In turn the Changes collection also records the past modifications to the ResourceRecordSets in a ManagedZone. The current state of the ManagedZone is the sum effect of applying all Change elements in the Changes collection in sequence.",
    +      "description": "A Change represents a set of `ResourceRecordSet` additions and deletions applied atomically to a ManagedZone. ResourceRecordSets within a ManagedZone are modified by creating a new Change element in the Changes collection. In turn the Changes collection also records the past modifications to the `ResourceRecordSets` in a `ManagedZone`. The current state of the `ManagedZone` is the sum effect of applying all `Change` elements in the `Changes` collection in sequence.",
           "id": "Change",
           "properties": {
             "additions": {
    @@ -1887,16 +1887,13 @@
               },
               "type": "array"
             },
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "kind": {
               "default": "dns#changesListResponse",
               "description": "Type of resource.",
               "type": "string"
             },
             "nextPageToken": {
    -          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token. This lets you retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You cannot retrieve a \"snapshot\" of collections larger than the maximum page size.",
    +          "description": "This field indicates that more results are available beyond the last page displayed. To fetch the results, make another list request and use this value as your page token. This lets you retrieve the complete contents of a very large collection one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You can't retrieve a consistent snapshot of a collection larger than the maximum page size.",
               "type": "string"
             }
           },
    @@ -2061,16 +2058,13 @@
               },
               "type": "array"
             },
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "kind": {
               "default": "dns#dnsKeysListResponse",
               "description": "Type of resource.",
               "type": "string"
             },
             "nextPageToken": {
    -          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token. In this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. There is no way to retrieve a \"snapshot\" of collections larger than the maximum page size.",
    +          "description": "This field indicates that more results are available beyond the last page displayed. To fetch the results, make another list request and use this value as your page token. This lets you retrieve the complete contents of a very large collection one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You can't retrieve a consistent snapshot of a collection larger than the maximum page size.",
               "type": "string"
             }
           },
    @@ -2348,8 +2342,8 @@
                 "private"
               ],
               "enumDescriptions": [
    -            "",
    -            ""
    +            "Indicates that records in this zone can be queried from the public internet.",
    +            "Indicates that records in this zone cannot be queried from the public internet. Access to private zones depends on the zone configuration."
               ],
               "type": "string"
             }
    @@ -2392,8 +2386,8 @@
                 "nsec3"
               ],
               "enumDescriptions": [
    -            "",
    -            ""
    +            "Indicates that Cloud DNS will sign records in the managed zone according to RFC 4034 and respond with NSEC records for names that do not exist.",
    +            "Indicates that Cloud DNS will sign records in the managed zone according to RFC 5155 and respond with NSEC3 records for names that do not exist."
               ],
               "type": "string"
             },
    @@ -2464,16 +2458,13 @@
         "ManagedZoneOperationsListResponse": {
           "id": "ManagedZoneOperationsListResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "kind": {
               "default": "dns#managedZoneOperationsListResponse",
               "description": "Type of resource.",
               "type": "string"
             },
             "nextPageToken": {
    -          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token. This lets you retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You cannot retrieve a consistent snapshot of a collection larger than the maximum page size.",
    +          "description": "This field indicates that more results are available beyond the last page displayed. To fetch the results, make another list request and use this value as your page token. This lets you retrieve the complete contents of a very large collection one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You can't retrieve a consistent snapshot of a collection larger than the maximum page size.",
               "type": "string"
             },
             "operations": {
    @@ -2512,7 +2503,7 @@
               "type": "string"
             },
             "networkUrl": {
    -          "description": "The fully qualified URL of the VPC network to forward queries to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
    +          "description": "The fully qualified URL of the VPC network to forward queries to. This should be formatted like `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`",
               "type": "string"
             }
           },
    @@ -2564,7 +2555,7 @@
               "type": "string"
             },
             "networkUrl": {
    -          "description": "The fully qualified URL of the VPC network to bind to. Format this URL like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
    +          "description": "The fully qualified URL of the VPC network to bind to. Format this URL like `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`",
               "type": "string"
             }
           },
    @@ -2607,7 +2598,7 @@
               "type": "string"
             },
             "namespaceUrl": {
    -          "description": "The fully qualified URL of the namespace associated with the zone. Format must be https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}",
    +          "description": "The fully qualified URL of the namespace associated with the zone. Format must be `https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}`",
               "type": "string"
             }
           },
    @@ -2616,9 +2607,6 @@
         "ManagedZonesListResponse": {
           "id": "ManagedZonesListResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "kind": {
               "default": "dns#managedZonesListResponse",
               "description": "Type of resource.",
    @@ -2632,7 +2620,7 @@
               "type": "array"
             },
             "nextPageToken": {
    -          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token. This lets you the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You cannot retrieve a consistent snapshot of a collection larger than the maximum page size.",
    +          "description": "This field indicates that more results are available beyond the last page displayed. To fetch the results, make another list request and use this value as your page token. This lets you retrieve the complete contents of a very large collection one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You can't retrieve a consistent snapshot of a collection larger than the maximum page size.",
               "type": "string"
             }
           },
    @@ -2716,16 +2704,13 @@
         "PoliciesListResponse": {
           "id": "PoliciesListResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "kind": {
               "default": "dns#policiesListResponse",
               "description": "Type of resource.",
               "type": "string"
             },
             "nextPageToken": {
    -          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token. This lets you the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You cannot retrieve a consistent snapshot of a collection larger than the maximum page size.",
    +          "description": "This field indicates that more results are available beyond the last page displayed. To fetch the results, make another list request and use this value as your page token. This lets you retrieve the complete contents of a very large collection one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You can't retrieve a consistent snapshot of a collection larger than the maximum page size.",
               "type": "string"
             },
             "policies": {
    @@ -2741,9 +2726,6 @@
         "PoliciesPatchResponse": {
           "id": "PoliciesPatchResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "policy": {
               "$ref": "Policy"
             }
    @@ -2753,9 +2735,6 @@
         "PoliciesUpdateResponse": {
           "id": "PoliciesUpdateResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "policy": {
               "$ref": "Policy"
             }
    @@ -2867,7 +2846,7 @@
           "type": "object"
         },
         "Project": {
    -      "description": "A project resource. The project is a top level container for resources including Cloud DNS ManagedZones. Projects can be created only in the APIs console. Next tag: 7.",
    +      "description": "A project resource. The project is a top level container for resources including Cloud DNS ManagedZones. Projects can be created only in the APIs console.",
           "id": "Project",
           "properties": {
             "id": {
    @@ -2914,6 +2893,10 @@
               "format": "int32",
               "type": "integer"
             },
    +        "internetHealthChecksPerManagedZone": {
    +          "format": "int32",
    +          "type": "integer"
    +        },
             "itemsPerRoutingPolicy": {
               "description": "Maximum allowed number of items per routing policy.",
               "format": "int32",
    @@ -3030,6 +3013,10 @@
             "geo": {
               "$ref": "RRSetRoutingPolicyGeoPolicy"
             },
    +        "healthCheck": {
    +          "description": "The selfLink attribute of the HealthCheck resource to use for this RRSetRoutingPolicy. https://cloud.google.com/compute/docs/reference/rest/v1/healthChecks",
    +          "type": "string"
    +        },
             "kind": {
               "default": "dns#rRSetRoutingPolicy",
               "type": "string"
    @@ -3044,7 +3031,7 @@
           "type": "object"
         },
         "RRSetRoutingPolicyGeoPolicy": {
    -      "description": "Configures a RRSetRoutingPolicy that routes based on the geo location of the querying user.",
    +      "description": "Configures a `RRSetRoutingPolicy` that routes based on the geo location of the querying user.",
           "id": "RRSetRoutingPolicyGeoPolicy",
           "properties": {
             "enableFencing": {
    @@ -3071,7 +3058,7 @@
           "properties": {
             "healthCheckedTargets": {
               "$ref": "RRSetRoutingPolicyHealthCheckTargets",
    -          "description": "For A and AAAA types only. Endpoints to return in the query result only if they are healthy. These can be specified along with rrdata within this item."
    +          "description": "For A and AAAA types only. Endpoints to return in the query result only if they are healthy. These can be specified along with `rrdata` within this item."
             },
             "kind": {
               "default": "dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem",
    @@ -3088,7 +3075,7 @@
               "type": "array"
             },
             "signatureRrdatas": {
    -          "description": "DNSSEC generated signatures for all the rrdata within this item. If health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item.",
    +          "description": "DNSSEC generated signatures for all the `rrdata` within this item. If health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item.",
               "items": {
                 "type": "string"
               },
    @@ -3098,9 +3085,16 @@
           "type": "object"
         },
         "RRSetRoutingPolicyHealthCheckTargets": {
    -      "description": "HealthCheckTargets describes endpoints to health-check when responding to Routing Policy queries. Only the healthy endpoints will be included in the response. Only one of internal_load_balancer and external_endpoints should be set.",
    +      "description": "HealthCheckTargets describes endpoints to health-check when responding to Routing Policy queries. Only the healthy endpoints will be included in the response.",
           "id": "RRSetRoutingPolicyHealthCheckTargets",
           "properties": {
    +        "externalEndpoints": {
    +          "description": "The Internet IP addresses to be health checked. The format matches the format of ResourceRecordSet.rrdata as defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1)",
    +          "items": {
    +            "type": "string"
    +          },
    +          "type": "array"
    +        },
             "internalLoadBalancers": {
               "description": "Configuration for internal load balancers to be health checked.",
               "items": {
    @@ -3128,8 +3122,8 @@
               ],
               "enumDescriptions": [
                 "",
    -            "",
    -            ""
    +            "Indicates the load balancer is accessible via TCP.",
    +            "Indicates the load balancer is accessible via UDP."
               ],
               "type": "string"
             },
    @@ -3147,14 +3141,14 @@
               ],
               "enumDescriptions": [
                 "",
    -            "",
    -            "",
    -            ""
    +            "Indicates the load balancer is a Cross-Region Application Load Balancer.",
    +            "Indicates the load balancer is a Regional Network Passthrough Load Balancer.",
    +            "Indicates the load balancer is a Regional Application Load Balancer."
               ],
               "type": "string"
             },
             "networkUrl": {
    -          "description": "The fully qualified URL of the network that the load balancer is attached to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network} .",
    +          "description": "The fully qualified URL of the network that the load balancer is attached to. This should be formatted like `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`.",
               "type": "string"
             },
             "port": {
    @@ -3178,7 +3172,7 @@
           "properties": {
             "backupGeoTargets": {
               "$ref": "RRSetRoutingPolicyGeoPolicy",
    -          "description": "Backup targets provide a regional failover policy for the otherwise global primary targets. If serving state is set to BACKUP, this policy essentially becomes a geo routing policy."
    +          "description": "Backup targets provide a regional failover policy for the otherwise global primary targets. If serving state is set to `BACKUP`, this policy essentially becomes a geo routing policy."
             },
             "kind": {
               "default": "dns#rRSetRoutingPolicyPrimaryBackupPolicy",
    @@ -3186,10 +3180,10 @@
             },
             "primaryTargets": {
               "$ref": "RRSetRoutingPolicyHealthCheckTargets",
    -          "description": "Endpoints that are health checked before making the routing decision. Unhealthy endpoints are omitted from the results. If all endpoints are unhealthy, we serve a response based on the backup_geo_targets."
    +          "description": "Endpoints that are health checked before making the routing decision. Unhealthy endpoints are omitted from the results. If all endpoints are unhealthy, we serve a response based on the `backup_geo_targets`."
             },
             "trickleTraffic": {
    -          "description": "When serving state is PRIMARY, this field provides the option of sending a small percentage of the traffic to the backup targets.",
    +          "description": "When serving state is `PRIMARY`, this field provides the option of sending a small percentage of the traffic to the backup targets.",
               "format": "double",
               "type": "number"
             }
    @@ -3219,7 +3213,7 @@
           "properties": {
             "healthCheckedTargets": {
               "$ref": "RRSetRoutingPolicyHealthCheckTargets",
    -          "description": "Endpoints that are health checked before making the routing decision. The unhealthy endpoints are omitted from the result. If all endpoints within a bucket are unhealthy, we choose a different bucket (sampled with respect to its weight) for responding. If DNSSEC is enabled for this zone, only one of rrdata or health_checked_targets can be set."
    +          "description": "Endpoints that are health checked before making the routing decision. The unhealthy endpoints are omitted from the result. If all endpoints within a bucket are unhealthy, we choose a different bucket (sampled with respect to its weight) for responding. If DNSSEC is enabled for this zone, only one of `rrdata` or `health_checked_targets` can be set."
             },
             "kind": {
               "default": "dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem",
    @@ -3232,14 +3226,14 @@
               "type": "array"
             },
             "signatureRrdatas": {
    -          "description": "DNSSEC generated signatures for all the rrdata within this item. Note that if health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item.",
    +          "description": "DNSSEC generated signatures for all the `rrdata` within this item. Note that if health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item.",
               "items": {
                 "type": "string"
               },
               "type": "array"
             },
             "weight": {
    -          "description": "The weight corresponding to this WrrPolicyItem object. When multiple WrrPolicyItem objects are configured, the probability of returning an WrrPolicyItem object's data is proportional to its weight relative to the sum of weights configured for all items. This weight must be non-negative.",
    +          "description": "The weight corresponding to this `WrrPolicyItem` object. When multiple `WrrPolicyItem` objects are configured, the probability of returning an `WrrPolicyItem` object's data is proportional to its weight relative to the sum of weights configured for all items. This weight must be non-negative.",
               "format": "double",
               "type": "number"
             }
    @@ -3260,7 +3254,7 @@
             },
             "routingPolicy": {
               "$ref": "RRSetRoutingPolicy",
    -          "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
    +          "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid `ResourceRecordSet` contains only `rrdata` (for static resolution) or a `routing_policy` (for dynamic resolution)."
             },
             "rrdatas": {
               "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.",
    @@ -3277,7 +3271,7 @@
               "type": "array"
             },
             "ttl": {
    -          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers.",
    +          "description": "Number of seconds that this `ResourceRecordSet` can be cached by resolvers.",
               "format": "int32",
               "type": "integer"
             },
    @@ -3296,16 +3290,13 @@
         "ResourceRecordSetsListResponse": {
           "id": "ResourceRecordSetsListResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "kind": {
               "default": "dns#resourceRecordSetsListResponse",
               "description": "Type of resource.",
               "type": "string"
             },
             "nextPageToken": {
    -          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token. This lets you retrieve the complete contents of even larger collections, one page at a time. However, if the collection changes between paginated list requests, the set of elements returned is an inconsistent view of the collection. You cannot retrieve a consistent snapshot of a collection larger than the maximum page size.",
    +          "description": "This field indicates that more results are available beyond the last page displayed. To fetch the results, make another list request and use this value as your page token. This lets you retrieve the complete contents of a very large collection one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You can't retrieve a consistent snapshot of a collection larger than the maximum page size.",
               "type": "string"
             },
             "rrsets": {
    @@ -3318,25 +3309,11 @@
           },
           "type": "object"
         },
    -    "ResponseHeader": {
    -      "description": "Elements common to every response.",
    -      "id": "ResponseHeader",
    -      "properties": {
    -        "operationId": {
    -          "description": "For mutating operation requests that completed successfully. This is the client_operation_id if the client specified it, otherwise it is generated by the server (output only).",
    -          "type": "string"
    -        }
    -      },
    -      "type": "object"
    -    },
         "ResponsePoliciesListResponse": {
           "id": "ResponsePoliciesListResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "nextPageToken": {
    -          "description": "The presence of this field indicates that more results exist following your last page of results in pagination order. To fetch them, make another list request by using this value as your page token. This lets you view the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You cannot retrieve a consistent snapshot of a collection larger than the maximum page size.",
    +          "description": "This field indicates that more results are available beyond the last page displayed. To fetch the results, make another list request and use this value as your page token. This lets you retrieve the complete contents of a very large collection one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You can't retrieve a consistent snapshot of a collection larger than the maximum page size.",
               "type": "string"
             },
             "responsePolicies": {
    @@ -3352,9 +3329,6 @@
         "ResponsePoliciesPatchResponse": {
           "id": "ResponsePoliciesPatchResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "responsePolicy": {
               "$ref": "ResponsePolicy"
             }
    @@ -3364,9 +3338,6 @@
         "ResponsePoliciesUpdateResponse": {
           "id": "ResponsePoliciesUpdateResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "responsePolicy": {
               "$ref": "ResponsePolicy"
             }
    @@ -3440,7 +3411,7 @@
               "type": "string"
             },
             "networkUrl": {
    -          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
    +          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`",
               "type": "string"
             }
           },
    @@ -3458,7 +3429,7 @@
               ],
               "enumDescriptions": [
                 "",
    -            "Skip a less-specific ResponsePolicyRule and continue normal query logic. This can be used with a less-specific wildcard selector to exempt a subset of the wildcard ResponsePolicyRule from the ResponsePolicy behavior and query the public Internet instead. For instance, if these rules exist: *.example.com -\u003e LocalData 1.2.3.4 foo.example.com -\u003e Behavior 'bypassResponsePolicy' Then a query for 'foo.example.com' skips the wildcard. This additionally functions to facilitate the allowlist feature. RPZs can be applied to multiple levels in the (eventually org, folder, project, network) hierarchy. If a rule is applied at a higher level of the hierarchy, adding a passthru rule at a lower level will supersede that, and a query from an affected vm to that domain will be exempt from the RPZ and proceed to normal resolution behavior."
    +            "Skip a less-specific Response Policy Rule and let the query logic continue. This mechanism, when used with wildcard selectors, lets you exempt specific subdomains from a broader Response Policy Rule and direct the queries to the public internet instead. For example, if the following rules exist: ``` *.example.com -\u003e LocalData 1.2.3.4 foo.example.com -\u003e Behavior 'passthrough' ``` A query for foo.example.com skips the wildcard rule. This functionality also facilitates allowlisting. Response Policy Zones (RPZs) can be applied at multiple levels within the hierarchy: for example, an organization, a folder, a project, or a VPC network. If an RPZ rule is applied at a higher level, adding a `passthrough` rule at a lower level will override it. Queries from affected virtual machines (VMs) to that domain bypass the RPZ and proceed with normal resolution."
               ],
               "type": "string"
             },
    @@ -3497,11 +3468,8 @@
         "ResponsePolicyRulesListResponse": {
           "id": "ResponsePolicyRulesListResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "nextPageToken": {
    -          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token. This lets you the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You cannot retrieve a consistent snapshot of a collection larger than the maximum page size.",
    +          "description": "This field indicates that more results are available beyond the last page displayed. To fetch the results, make another list request and use this value as your page token. This lets you retrieve the complete contents of a very large collection one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You can't retrieve a consistent snapshot of a collection larger than the maximum page size.",
               "type": "string"
             },
             "responsePolicyRules": {
    @@ -3517,9 +3485,6 @@
         "ResponsePolicyRulesPatchResponse": {
           "id": "ResponsePolicyRulesPatchResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "responsePolicyRule": {
               "$ref": "ResponsePolicyRule"
             }
    @@ -3529,9 +3494,6 @@
         "ResponsePolicyRulesUpdateResponse": {
           "id": "ResponsePolicyRulesUpdateResponse",
           "properties": {
    -        "header": {
    -          "$ref": "ResponseHeader"
    -        },
             "responsePolicyRule": {
               "$ref": "ResponsePolicyRule"
             }
    diff --git a/vendor/google.golang.org/api/dns/v1/dns-gen.go b/vendor/google.golang.org/api/dns/v1/dns-gen.go
    index 6a0d78a20092..6068a09d91db 100644
    --- a/vendor/google.golang.org/api/dns/v1/dns-gen.go
    +++ b/vendor/google.golang.org/api/dns/v1/dns-gen.go
    @@ -277,13 +277,13 @@ type ResponsePolicyRulesService struct {
     	s *Service
     }
     
    -// Change: A Change represents a set of ResourceRecordSet additions and
    +// Change: A Change represents a set of `ResourceRecordSet` additions and
     // deletions applied atomically to a ManagedZone. ResourceRecordSets within a
     // ManagedZone are modified by creating a new Change element in the Changes
     // collection. In turn the Changes collection also records the past
    -// modifications to the ResourceRecordSets in a ManagedZone. The current state
    -// of the ManagedZone is the sum effect of applying all Change elements in the
    -// Changes collection in sequence.
    +// modifications to the `ResourceRecordSets` in a `ManagedZone`. The current
    +// state of the `ManagedZone` is the sum effect of applying all `Change`
    +// elements in the `Changes` collection in sequence.
     type Change struct {
     	// Additions: Which ResourceRecordSets to add?
     	Additions []*ResourceRecordSet `json:"additions,omitempty"`
    @@ -322,27 +322,26 @@ type Change struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *Change) MarshalJSON() ([]byte, error) {
    +func (s Change) MarshalJSON() ([]byte, error) {
     	type NoMethod Change
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // ChangesListResponse: The response to a request to enumerate Changes to a
     // ResourceRecordSets collection.
     type ChangesListResponse struct {
     	// Changes: The requested changes.
    -	Changes []*Change       `json:"changes,omitempty"`
    -	Header  *ResponseHeader `json:"header,omitempty"`
    +	Changes []*Change `json:"changes,omitempty"`
     	// Kind: Type of resource.
     	Kind string `json:"kind,omitempty"`
    -	// NextPageToken: The presence of this field indicates that there exist more
    -	// results following your last page of results in pagination order. To fetch
    -	// them, make another list request using this value as your pagination token.
    -	// This lets you retrieve the complete contents of even very large collections
    -	// one page at a time. However, if the contents of the collection change
    -	// between the first and last paginated list request, the set of all elements
    -	// returned are an inconsistent view of the collection. You cannot retrieve a
    -	// "snapshot" of collections larger than the maximum page size.
    +	// NextPageToken: This field indicates that more results are available beyond
    +	// the last page displayed. To fetch the results, make another list request and
    +	// use this value as your page token. This lets you retrieve the complete
    +	// contents of a very large collection one page at a time. However, if the
    +	// contents of the collection change between the first and last paginated list
    +	// request, the set of all elements returned are an inconsistent view of the
    +	// collection. You can't retrieve a consistent snapshot of a collection larger
    +	// than the maximum page size.
     	NextPageToken string `json:"nextPageToken,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
    @@ -360,9 +359,9 @@ type ChangesListResponse struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ChangesListResponse) MarshalJSON() ([]byte, error) {
    +func (s ChangesListResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod ChangesListResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // DnsKey: A DNSSEC key pair.
    @@ -433,9 +432,9 @@ type DnsKey struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *DnsKey) MarshalJSON() ([]byte, error) {
    +func (s DnsKey) MarshalJSON() ([]byte, error) {
     	type NoMethod DnsKey
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type DnsKeyDigest struct {
    @@ -462,9 +461,9 @@ type DnsKeyDigest struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *DnsKeyDigest) MarshalJSON() ([]byte, error) {
    +func (s DnsKeyDigest) MarshalJSON() ([]byte, error) {
     	type NoMethod DnsKeyDigest
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // DnsKeySpec: Parameters for DnsKey key generation. Used for generating
    @@ -505,28 +504,26 @@ type DnsKeySpec struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *DnsKeySpec) MarshalJSON() ([]byte, error) {
    +func (s DnsKeySpec) MarshalJSON() ([]byte, error) {
     	type NoMethod DnsKeySpec
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // DnsKeysListResponse: The response to a request to enumerate DnsKeys in a
     // ManagedZone.
     type DnsKeysListResponse struct {
     	// DnsKeys: The requested resources.
    -	DnsKeys []*DnsKey       `json:"dnsKeys,omitempty"`
    -	Header  *ResponseHeader `json:"header,omitempty"`
    +	DnsKeys []*DnsKey `json:"dnsKeys,omitempty"`
     	// Kind: Type of resource.
     	Kind string `json:"kind,omitempty"`
    -	// NextPageToken: The presence of this field indicates that there exist more
    -	// results following your last page of results in pagination order. To fetch
    -	// them, make another list request using this value as your pagination token.
    -	// In this way you can retrieve the complete contents of even very large
    -	// collections one page at a time. However, if the contents of the collection
    -	// change between the first and last paginated list request, the set of all
    -	// elements returned are an inconsistent view of the collection. There is no
    -	// way to retrieve a "snapshot" of collections larger than the maximum page
    -	// size.
    +	// NextPageToken: This field indicates that more results are available beyond
    +	// the last page displayed. To fetch the results, make another list request and
    +	// use this value as your page token. This lets you retrieve the complete
    +	// contents of a very large collection one page at a time. However, if the
    +	// contents of the collection change between the first and last paginated list
    +	// request, the set of all elements returned are an inconsistent view of the
    +	// collection. You can't retrieve a consistent snapshot of a collection larger
    +	// than the maximum page size.
     	NextPageToken string `json:"nextPageToken,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
    @@ -544,9 +541,9 @@ type DnsKeysListResponse struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *DnsKeysListResponse) MarshalJSON() ([]byte, error) {
    +func (s DnsKeysListResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod DnsKeysListResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // Expr: Represents a textual expression in the Common Expression Language
    @@ -592,9 +589,9 @@ type Expr struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *Expr) MarshalJSON() ([]byte, error) {
    +func (s Expr) MarshalJSON() ([]byte, error) {
     	type NoMethod Expr
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // GoogleIamV1AuditConfig: Specifies the audit configuration for a service. The
    @@ -633,9 +630,9 @@ type GoogleIamV1AuditConfig struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *GoogleIamV1AuditConfig) MarshalJSON() ([]byte, error) {
    +func (s GoogleIamV1AuditConfig) MarshalJSON() ([]byte, error) {
     	type NoMethod GoogleIamV1AuditConfig
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // GoogleIamV1AuditLogConfig: Provides the configuration for logging a type of
    @@ -668,9 +665,9 @@ type GoogleIamV1AuditLogConfig struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *GoogleIamV1AuditLogConfig) MarshalJSON() ([]byte, error) {
    +func (s GoogleIamV1AuditLogConfig) MarshalJSON() ([]byte, error) {
     	type NoMethod GoogleIamV1AuditLogConfig
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // GoogleIamV1Binding: Associates `members`, or principals, with a `role`.
    @@ -767,9 +764,9 @@ type GoogleIamV1Binding struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *GoogleIamV1Binding) MarshalJSON() ([]byte, error) {
    +func (s GoogleIamV1Binding) MarshalJSON() ([]byte, error) {
     	type NoMethod GoogleIamV1Binding
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // GoogleIamV1GetIamPolicyRequest: Request message for `GetIamPolicy` method.
    @@ -790,9 +787,9 @@ type GoogleIamV1GetIamPolicyRequest struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *GoogleIamV1GetIamPolicyRequest) MarshalJSON() ([]byte, error) {
    +func (s GoogleIamV1GetIamPolicyRequest) MarshalJSON() ([]byte, error) {
     	type NoMethod GoogleIamV1GetIamPolicyRequest
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // GoogleIamV1GetPolicyOptions: Encapsulates settings provided to GetIamPolicy.
    @@ -822,9 +819,9 @@ type GoogleIamV1GetPolicyOptions struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *GoogleIamV1GetPolicyOptions) MarshalJSON() ([]byte, error) {
    +func (s GoogleIamV1GetPolicyOptions) MarshalJSON() ([]byte, error) {
     	type NoMethod GoogleIamV1GetPolicyOptions
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // GoogleIamV1Policy: An Identity and Access Management (IAM) policy, which
    @@ -914,9 +911,9 @@ type GoogleIamV1Policy struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *GoogleIamV1Policy) MarshalJSON() ([]byte, error) {
    +func (s GoogleIamV1Policy) MarshalJSON() ([]byte, error) {
     	type NoMethod GoogleIamV1Policy
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // GoogleIamV1SetIamPolicyRequest: Request message for `SetIamPolicy` method.
    @@ -943,9 +940,9 @@ type GoogleIamV1SetIamPolicyRequest struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *GoogleIamV1SetIamPolicyRequest) MarshalJSON() ([]byte, error) {
    +func (s GoogleIamV1SetIamPolicyRequest) MarshalJSON() ([]byte, error) {
     	type NoMethod GoogleIamV1SetIamPolicyRequest
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // GoogleIamV1TestIamPermissionsRequest: Request message for
    @@ -969,9 +966,9 @@ type GoogleIamV1TestIamPermissionsRequest struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *GoogleIamV1TestIamPermissionsRequest) MarshalJSON() ([]byte, error) {
    +func (s GoogleIamV1TestIamPermissionsRequest) MarshalJSON() ([]byte, error) {
     	type NoMethod GoogleIamV1TestIamPermissionsRequest
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // GoogleIamV1TestIamPermissionsResponse: Response message for
    @@ -996,9 +993,9 @@ type GoogleIamV1TestIamPermissionsResponse struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *GoogleIamV1TestIamPermissionsResponse) MarshalJSON() ([]byte, error) {
    +func (s GoogleIamV1TestIamPermissionsResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod GoogleIamV1TestIamPermissionsResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // ManagedZone: A zone is a subtree of the DNS namespace under one
    @@ -1058,8 +1055,10 @@ type ManagedZone struct {
     	// while private zones are visible only to Virtual Private Cloud resources.
     	//
     	// Possible values:
    -	//   "public"
    -	//   "private"
    +	//   "public" - Indicates that records in this zone can be queried from the
    +	// public internet.
    +	//   "private" - Indicates that records in this zone cannot be queried from the
    +	// public internet. Access to private zones depends on the zone configuration.
     	Visibility string `json:"visibility,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
    @@ -1077,9 +1076,9 @@ type ManagedZone struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZone) MarshalJSON() ([]byte, error) {
    +func (s ManagedZone) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZone
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // ManagedZoneCloudLoggingConfig: Cloud Logging configurations for publicly
    @@ -1102,9 +1101,9 @@ type ManagedZoneCloudLoggingConfig struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZoneCloudLoggingConfig) MarshalJSON() ([]byte, error) {
    +func (s ManagedZoneCloudLoggingConfig) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZoneCloudLoggingConfig
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZoneDnsSecConfig struct {
    @@ -1116,8 +1115,12 @@ type ManagedZoneDnsSecConfig struct {
     	// responses. Can only be changed while the state is OFF.
     	//
     	// Possible values:
    -	//   "nsec"
    -	//   "nsec3"
    +	//   "nsec" - Indicates that Cloud DNS will sign records in the managed zone
    +	// according to RFC 4034 and respond with NSEC records for names that do not
    +	// exist.
    +	//   "nsec3" - Indicates that Cloud DNS will sign records in the managed zone
    +	// according to RFC 5155 and respond with NSEC3 records for names that do not
    +	// exist.
     	NonExistence string `json:"nonExistence,omitempty"`
     	// State: Specifies whether DNSSEC is enabled, and what mode it is in.
     	//
    @@ -1139,9 +1142,9 @@ type ManagedZoneDnsSecConfig struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZoneDnsSecConfig) MarshalJSON() ([]byte, error) {
    +func (s ManagedZoneDnsSecConfig) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZoneDnsSecConfig
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZoneForwardingConfig struct {
    @@ -1162,9 +1165,9 @@ type ManagedZoneForwardingConfig struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZoneForwardingConfig) MarshalJSON() ([]byte, error) {
    +func (s ManagedZoneForwardingConfig) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZoneForwardingConfig
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZoneForwardingConfigNameServerTarget struct {
    @@ -1199,45 +1202,44 @@ type ManagedZoneForwardingConfigNameServerTarget struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZoneForwardingConfigNameServerTarget) MarshalJSON() ([]byte, error) {
    +func (s ManagedZoneForwardingConfigNameServerTarget) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZoneForwardingConfigNameServerTarget
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZoneOperationsListResponse struct {
    -	Header *ResponseHeader `json:"header,omitempty"`
     	// Kind: Type of resource.
     	Kind string `json:"kind,omitempty"`
    -	// NextPageToken: The presence of this field indicates that there exist more
    -	// results following your last page of results in pagination order. To fetch
    -	// them, make another list request using this value as your page token. This
    -	// lets you retrieve the complete contents of even very large collections one
    -	// page at a time. However, if the contents of the collection change between
    -	// the first and last paginated list request, the set of all elements returned
    -	// are an inconsistent view of the collection. You cannot retrieve a consistent
    -	// snapshot of a collection larger than the maximum page size.
    +	// NextPageToken: This field indicates that more results are available beyond
    +	// the last page displayed. To fetch the results, make another list request and
    +	// use this value as your page token. This lets you retrieve the complete
    +	// contents of a very large collection one page at a time. However, if the
    +	// contents of the collection change between the first and last paginated list
    +	// request, the set of all elements returned are an inconsistent view of the
    +	// collection. You can't retrieve a consistent snapshot of a collection larger
    +	// than the maximum page size.
     	NextPageToken string `json:"nextPageToken,omitempty"`
     	// Operations: The operation resources.
     	Operations []*Operation `json:"operations,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    +	// ForceSendFields is a list of field names (e.g. "Kind") to unconditionally
     	// include in API requests. By default, fields with empty or default values are
     	// omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    -	// requests with the JSON null value. By default, fields with empty values are
    -	// omitted from API requests. See
    +	// NullFields is a list of field names (e.g. "Kind") to include in API requests
    +	// with the JSON null value. By default, fields with empty values are omitted
    +	// from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZoneOperationsListResponse) MarshalJSON() ([]byte, error) {
    +func (s ManagedZoneOperationsListResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZoneOperationsListResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZonePeeringConfig struct {
    @@ -1257,9 +1259,9 @@ type ManagedZonePeeringConfig struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZonePeeringConfig) MarshalJSON() ([]byte, error) {
    +func (s ManagedZonePeeringConfig) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZonePeeringConfig
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZonePeeringConfigTargetNetwork struct {
    @@ -1272,7 +1274,8 @@ type ManagedZonePeeringConfigTargetNetwork struct {
     	Kind           string `json:"kind,omitempty"`
     	// NetworkUrl: The fully qualified URL of the VPC network to forward queries
     	// to. This should be formatted like
    -	// https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
    +	// `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{ne
    +	// twork}`
     	NetworkUrl string `json:"networkUrl,omitempty"`
     	// ForceSendFields is a list of field names (e.g. "DeactivateTime") to
     	// unconditionally include in API requests. By default, fields with empty or
    @@ -1287,9 +1290,9 @@ type ManagedZonePeeringConfigTargetNetwork struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZonePeeringConfigTargetNetwork) MarshalJSON() ([]byte, error) {
    +func (s ManagedZonePeeringConfigTargetNetwork) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZonePeeringConfigTargetNetwork
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZonePrivateVisibilityConfig struct {
    @@ -1312,9 +1315,9 @@ type ManagedZonePrivateVisibilityConfig struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZonePrivateVisibilityConfig) MarshalJSON() ([]byte, error) {
    +func (s ManagedZonePrivateVisibilityConfig) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZonePrivateVisibilityConfig
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZonePrivateVisibilityConfigGKECluster struct {
    @@ -1338,16 +1341,17 @@ type ManagedZonePrivateVisibilityConfigGKECluster struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZonePrivateVisibilityConfigGKECluster) MarshalJSON() ([]byte, error) {
    +func (s ManagedZonePrivateVisibilityConfigGKECluster) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZonePrivateVisibilityConfigGKECluster
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZonePrivateVisibilityConfigNetwork struct {
     	Kind string `json:"kind,omitempty"`
     	// NetworkUrl: The fully qualified URL of the VPC network to bind to. Format
     	// this URL like
    -	// https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
    +	// `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{ne
    +	// twork}`
     	NetworkUrl string `json:"networkUrl,omitempty"`
     	// ForceSendFields is a list of field names (e.g. "Kind") to unconditionally
     	// include in API requests. By default, fields with empty or default values are
    @@ -1362,9 +1366,9 @@ type ManagedZonePrivateVisibilityConfigNetwork struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZonePrivateVisibilityConfigNetwork) MarshalJSON() ([]byte, error) {
    +func (s ManagedZonePrivateVisibilityConfigNetwork) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZonePrivateVisibilityConfigNetwork
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZoneReverseLookupConfig struct {
    @@ -1382,9 +1386,9 @@ type ManagedZoneReverseLookupConfig struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZoneReverseLookupConfig) MarshalJSON() ([]byte, error) {
    +func (s ManagedZoneReverseLookupConfig) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZoneReverseLookupConfig
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // ManagedZoneServiceDirectoryConfig: Contains information about Service
    @@ -1407,9 +1411,9 @@ type ManagedZoneServiceDirectoryConfig struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZoneServiceDirectoryConfig) MarshalJSON() ([]byte, error) {
    +func (s ManagedZoneServiceDirectoryConfig) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZoneServiceDirectoryConfig
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZoneServiceDirectoryConfigNamespace struct {
    @@ -1420,7 +1424,8 @@ type ManagedZoneServiceDirectoryConfigNamespace struct {
     	Kind         string `json:"kind,omitempty"`
     	// NamespaceUrl: The fully qualified URL of the namespace associated with the
     	// zone. Format must be
    -	// https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}
    +	// `https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{loc
    +	// ation}/namespaces/{namespace}`
     	NamespaceUrl string `json:"namespaceUrl,omitempty"`
     	// ForceSendFields is a list of field names (e.g. "DeletionTime") to
     	// unconditionally include in API requests. By default, fields with empty or
    @@ -1435,45 +1440,44 @@ type ManagedZoneServiceDirectoryConfigNamespace struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZoneServiceDirectoryConfigNamespace) MarshalJSON() ([]byte, error) {
    +func (s ManagedZoneServiceDirectoryConfigNamespace) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZoneServiceDirectoryConfigNamespace
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ManagedZonesListResponse struct {
    -	Header *ResponseHeader `json:"header,omitempty"`
     	// Kind: Type of resource.
     	Kind string `json:"kind,omitempty"`
     	// ManagedZones: The managed zone resources.
     	ManagedZones []*ManagedZone `json:"managedZones,omitempty"`
    -	// NextPageToken: The presence of this field indicates that there exist more
    -	// results following your last page of results in pagination order. To fetch
    -	// them, make another list request using this value as your page token. This
    -	// lets you the complete contents of even very large collections one page at a
    -	// time. However, if the contents of the collection change between the first
    -	// and last paginated list request, the set of all elements returned are an
    -	// inconsistent view of the collection. You cannot retrieve a consistent
    -	// snapshot of a collection larger than the maximum page size.
    +	// NextPageToken: This field indicates that more results are available beyond
    +	// the last page displayed. To fetch the results, make another list request and
    +	// use this value as your page token. This lets you retrieve the complete
    +	// contents of a very large collection one page at a time. However, if the
    +	// contents of the collection change between the first and last paginated list
    +	// request, the set of all elements returned are an inconsistent view of the
    +	// collection. You can't retrieve a consistent snapshot of a collection larger
    +	// than the maximum page size.
     	NextPageToken string `json:"nextPageToken,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    +	// ForceSendFields is a list of field names (e.g. "Kind") to unconditionally
     	// include in API requests. By default, fields with empty or default values are
     	// omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    -	// requests with the JSON null value. By default, fields with empty values are
    -	// omitted from API requests. See
    +	// NullFields is a list of field names (e.g. "Kind") to include in API requests
    +	// with the JSON null value. By default, fields with empty values are omitted
    +	// from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *ManagedZonesListResponse) MarshalJSON() ([]byte, error) {
    +func (s ManagedZonesListResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod ManagedZonesListResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // Operation: An operation represents a successful mutation performed on a
    @@ -1529,9 +1533,9 @@ type Operation struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *Operation) MarshalJSON() ([]byte, error) {
    +func (s Operation) MarshalJSON() ([]byte, error) {
     	type NoMethod Operation
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type OperationDnsKeyContext struct {
    @@ -1552,9 +1556,9 @@ type OperationDnsKeyContext struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *OperationDnsKeyContext) MarshalJSON() ([]byte, error) {
    +func (s OperationDnsKeyContext) MarshalJSON() ([]byte, error) {
     	type NoMethod OperationDnsKeyContext
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type OperationManagedZoneContext struct {
    @@ -1575,93 +1579,90 @@ type OperationManagedZoneContext struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *OperationManagedZoneContext) MarshalJSON() ([]byte, error) {
    +func (s OperationManagedZoneContext) MarshalJSON() ([]byte, error) {
     	type NoMethod OperationManagedZoneContext
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type PoliciesListResponse struct {
    -	Header *ResponseHeader `json:"header,omitempty"`
     	// Kind: Type of resource.
     	Kind string `json:"kind,omitempty"`
    -	// NextPageToken: The presence of this field indicates that there exist more
    -	// results following your last page of results in pagination order. To fetch
    -	// them, make another list request using this value as your page token. This
    -	// lets you the complete contents of even very large collections one page at a
    -	// time. However, if the contents of the collection change between the first
    -	// and last paginated list request, the set of all elements returned are an
    -	// inconsistent view of the collection. You cannot retrieve a consistent
    -	// snapshot of a collection larger than the maximum page size.
    +	// NextPageToken: This field indicates that more results are available beyond
    +	// the last page displayed. To fetch the results, make another list request and
    +	// use this value as your page token. This lets you retrieve the complete
    +	// contents of a very large collection one page at a time. However, if the
    +	// contents of the collection change between the first and last paginated list
    +	// request, the set of all elements returned are an inconsistent view of the
    +	// collection. You can't retrieve a consistent snapshot of a collection larger
    +	// than the maximum page size.
     	NextPageToken string `json:"nextPageToken,omitempty"`
     	// Policies: The policy resources.
     	Policies []*Policy `json:"policies,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    +	// ForceSendFields is a list of field names (e.g. "Kind") to unconditionally
     	// include in API requests. By default, fields with empty or default values are
     	// omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    -	// requests with the JSON null value. By default, fields with empty values are
    -	// omitted from API requests. See
    +	// NullFields is a list of field names (e.g. "Kind") to include in API requests
    +	// with the JSON null value. By default, fields with empty values are omitted
    +	// from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *PoliciesListResponse) MarshalJSON() ([]byte, error) {
    +func (s PoliciesListResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod PoliciesListResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type PoliciesPatchResponse struct {
    -	Header *ResponseHeader `json:"header,omitempty"`
    -	Policy *Policy         `json:"policy,omitempty"`
    +	Policy *Policy `json:"policy,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    +	// ForceSendFields is a list of field names (e.g. "Policy") to unconditionally
     	// include in API requests. By default, fields with empty or default values are
     	// omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    +	// NullFields is a list of field names (e.g. "Policy") to include in API
     	// requests with the JSON null value. By default, fields with empty values are
     	// omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *PoliciesPatchResponse) MarshalJSON() ([]byte, error) {
    +func (s PoliciesPatchResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod PoliciesPatchResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type PoliciesUpdateResponse struct {
    -	Header *ResponseHeader `json:"header,omitempty"`
    -	Policy *Policy         `json:"policy,omitempty"`
    +	Policy *Policy `json:"policy,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    +	// ForceSendFields is a list of field names (e.g. "Policy") to unconditionally
     	// include in API requests. By default, fields with empty or default values are
     	// omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    +	// NullFields is a list of field names (e.g. "Policy") to include in API
     	// requests with the JSON null value. By default, fields with empty values are
     	// omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *PoliciesUpdateResponse) MarshalJSON() ([]byte, error) {
    +func (s PoliciesUpdateResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod PoliciesUpdateResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // Policy: A policy is a collection of DNS rules applied to one or more Virtual
    @@ -1708,9 +1709,9 @@ type Policy struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *Policy) MarshalJSON() ([]byte, error) {
    +func (s Policy) MarshalJSON() ([]byte, error) {
     	type NoMethod Policy
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type PolicyAlternativeNameServerConfig struct {
    @@ -1733,9 +1734,9 @@ type PolicyAlternativeNameServerConfig struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *PolicyAlternativeNameServerConfig) MarshalJSON() ([]byte, error) {
    +func (s PolicyAlternativeNameServerConfig) MarshalJSON() ([]byte, error) {
     	type NoMethod PolicyAlternativeNameServerConfig
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type PolicyAlternativeNameServerConfigTargetNameServer struct {
    @@ -1770,9 +1771,9 @@ type PolicyAlternativeNameServerConfigTargetNameServer struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *PolicyAlternativeNameServerConfigTargetNameServer) MarshalJSON() ([]byte, error) {
    +func (s PolicyAlternativeNameServerConfigTargetNameServer) MarshalJSON() ([]byte, error) {
     	type NoMethod PolicyAlternativeNameServerConfigTargetNameServer
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type PolicyNetwork struct {
    @@ -1794,14 +1795,14 @@ type PolicyNetwork struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *PolicyNetwork) MarshalJSON() ([]byte, error) {
    +func (s PolicyNetwork) MarshalJSON() ([]byte, error) {
     	type NoMethod PolicyNetwork
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // Project: A project resource. The project is a top level container for
     // resources including Cloud DNS ManagedZones. Projects can be created only in
    -// the APIs console. Next tag: 7.
    +// the APIs console.
     type Project struct {
     	// Id: User assigned unique identifier for the resource (output only).
     	Id   string `json:"id,omitempty"`
    @@ -1827,9 +1828,9 @@ type Project struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *Project) MarshalJSON() ([]byte, error) {
    +func (s Project) MarshalJSON() ([]byte, error) {
     	type NoMethod Project
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // Quota: Limits associated with a Project.
    @@ -1843,7 +1844,8 @@ type Quota struct {
     	GkeClustersPerPolicy int64 `json:"gkeClustersPerPolicy,omitempty"`
     	// GkeClustersPerResponsePolicy: Maximum allowed number of GKE clusters per
     	// response policy.
    -	GkeClustersPerResponsePolicy int64 `json:"gkeClustersPerResponsePolicy,omitempty"`
    +	GkeClustersPerResponsePolicy       int64 `json:"gkeClustersPerResponsePolicy,omitempty"`
    +	InternetHealthChecksPerManagedZone int64 `json:"internetHealthChecksPerManagedZone,omitempty"`
     	// ItemsPerRoutingPolicy: Maximum allowed number of items per routing policy.
     	ItemsPerRoutingPolicy int64  `json:"itemsPerRoutingPolicy,omitempty"`
     	Kind                  string `json:"kind,omitempty"`
    @@ -1913,16 +1915,20 @@ type Quota struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *Quota) MarshalJSON() ([]byte, error) {
    +func (s Quota) MarshalJSON() ([]byte, error) {
     	type NoMethod Quota
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // RRSetRoutingPolicy: A RRSetRoutingPolicy represents ResourceRecordSet data
     // that is returned dynamically with the response varying based on configured
     // properties such as geolocation or by weighted random selection.
     type RRSetRoutingPolicy struct {
    -	Geo           *RRSetRoutingPolicyGeoPolicy           `json:"geo,omitempty"`
    +	Geo *RRSetRoutingPolicyGeoPolicy `json:"geo,omitempty"`
    +	// HealthCheck: The selfLink attribute of the HealthCheck resource to use for
    +	// this RRSetRoutingPolicy.
    +	// https://cloud.google.com/compute/docs/reference/rest/v1/healthChecks
    +	HealthCheck   string                                 `json:"healthCheck,omitempty"`
     	Kind          string                                 `json:"kind,omitempty"`
     	PrimaryBackup *RRSetRoutingPolicyPrimaryBackupPolicy `json:"primaryBackup,omitempty"`
     	Wrr           *RRSetRoutingPolicyWrrPolicy           `json:"wrr,omitempty"`
    @@ -1939,12 +1945,12 @@ type RRSetRoutingPolicy struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *RRSetRoutingPolicy) MarshalJSON() ([]byte, error) {
    +func (s RRSetRoutingPolicy) MarshalJSON() ([]byte, error) {
     	type NoMethod RRSetRoutingPolicy
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
    -// RRSetRoutingPolicyGeoPolicy: Configures a RRSetRoutingPolicy that routes
    +// RRSetRoutingPolicyGeoPolicy: Configures a `RRSetRoutingPolicy` that routes
     // based on the geo location of the querying user.
     type RRSetRoutingPolicyGeoPolicy struct {
     	// EnableFencing: Without fencing, if health check fails for all configured
    @@ -1972,9 +1978,9 @@ type RRSetRoutingPolicyGeoPolicy struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *RRSetRoutingPolicyGeoPolicy) MarshalJSON() ([]byte, error) {
    +func (s RRSetRoutingPolicyGeoPolicy) MarshalJSON() ([]byte, error) {
     	type NoMethod RRSetRoutingPolicyGeoPolicy
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // RRSetRoutingPolicyGeoPolicyGeoPolicyItem: ResourceRecordSet data for one geo
    @@ -1982,7 +1988,7 @@ func (s *RRSetRoutingPolicyGeoPolicy) MarshalJSON() ([]byte, error) {
     type RRSetRoutingPolicyGeoPolicyGeoPolicyItem struct {
     	// HealthCheckedTargets: For A and AAAA types only. Endpoints to return in the
     	// query result only if they are healthy. These can be specified along with
    -	// rrdata within this item.
    +	// `rrdata` within this item.
     	HealthCheckedTargets *RRSetRoutingPolicyHealthCheckTargets `json:"healthCheckedTargets,omitempty"`
     	Kind                 string                                `json:"kind,omitempty"`
     	// Location: The geo-location granularity is a GCP region. This location string
    @@ -1990,8 +1996,8 @@ type RRSetRoutingPolicyGeoPolicyGeoPolicyItem struct {
     	// "asia-east1", etc.
     	Location string   `json:"location,omitempty"`
     	Rrdatas  []string `json:"rrdatas,omitempty"`
    -	// SignatureRrdatas: DNSSEC generated signatures for all the rrdata within this
    -	// item. If health checked targets are provided for DNSSEC enabled zones,
    +	// SignatureRrdatas: DNSSEC generated signatures for all the `rrdata` within
    +	// this item. If health checked targets are provided for DNSSEC enabled zones,
     	// there's a restriction of 1 IP address per item.
     	SignatureRrdatas []string `json:"signatureRrdatas,omitempty"`
     	// ForceSendFields is a list of field names (e.g. "HealthCheckedTargets") to
    @@ -2007,35 +2013,38 @@ type RRSetRoutingPolicyGeoPolicyGeoPolicyItem struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *RRSetRoutingPolicyGeoPolicyGeoPolicyItem) MarshalJSON() ([]byte, error) {
    +func (s RRSetRoutingPolicyGeoPolicyGeoPolicyItem) MarshalJSON() ([]byte, error) {
     	type NoMethod RRSetRoutingPolicyGeoPolicyGeoPolicyItem
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // RRSetRoutingPolicyHealthCheckTargets: HealthCheckTargets describes endpoints
     // to health-check when responding to Routing Policy queries. Only the healthy
    -// endpoints will be included in the response. Only one of
    -// internal_load_balancer and external_endpoints should be set.
    +// endpoints will be included in the response.
     type RRSetRoutingPolicyHealthCheckTargets struct {
    +	// ExternalEndpoints: The Internet IP addresses to be health checked. The
    +	// format matches the format of ResourceRecordSet.rrdata as defined in RFC 1035
    +	// (section 5) and RFC 1034 (section 3.6.1)
    +	ExternalEndpoints []string `json:"externalEndpoints,omitempty"`
     	// InternalLoadBalancers: Configuration for internal load balancers to be
     	// health checked.
     	InternalLoadBalancers []*RRSetRoutingPolicyLoadBalancerTarget `json:"internalLoadBalancers,omitempty"`
    -	// ForceSendFields is a list of field names (e.g. "InternalLoadBalancers") to
    +	// ForceSendFields is a list of field names (e.g. "ExternalEndpoints") to
     	// unconditionally include in API requests. By default, fields with empty or
     	// default values are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "InternalLoadBalancers") to
    -	// include in API requests with the JSON null value. By default, fields with
    -	// empty values are omitted from API requests. See
    +	// NullFields is a list of field names (e.g. "ExternalEndpoints") to include in
    +	// API requests with the JSON null value. By default, fields with empty values
    +	// are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *RRSetRoutingPolicyHealthCheckTargets) MarshalJSON() ([]byte, error) {
    +func (s RRSetRoutingPolicyHealthCheckTargets) MarshalJSON() ([]byte, error) {
     	type NoMethod RRSetRoutingPolicyHealthCheckTargets
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // RRSetRoutingPolicyLoadBalancerTarget: The configuration for an individual
    @@ -2047,8 +2056,8 @@ type RRSetRoutingPolicyLoadBalancerTarget struct {
     	//
     	// Possible values:
     	//   "undefined"
    -	//   "tcp"
    -	//   "udp"
    +	//   "tcp" - Indicates the load balancer is accessible via TCP.
    +	//   "udp" - Indicates the load balancer is accessible via UDP.
     	IpProtocol string `json:"ipProtocol,omitempty"`
     	Kind       string `json:"kind,omitempty"`
     	// LoadBalancerType: The type of load balancer specified by this target. This
    @@ -2060,14 +2069,17 @@ type RRSetRoutingPolicyLoadBalancerTarget struct {
     	//
     	// Possible values:
     	//   "none"
    -	//   "globalL7ilb"
    -	//   "regionalL4ilb"
    -	//   "regionalL7ilb"
    +	//   "globalL7ilb" - Indicates the load balancer is a Cross-Region Application
    +	// Load Balancer.
    +	//   "regionalL4ilb" - Indicates the load balancer is a Regional Network
    +	// Passthrough Load Balancer.
    +	//   "regionalL7ilb" - Indicates the load balancer is a Regional Application
    +	// Load Balancer.
     	LoadBalancerType string `json:"loadBalancerType,omitempty"`
     	// NetworkUrl: The fully qualified URL of the network that the load balancer is
     	// attached to. This should be formatted like
    -	// https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
    -	// .
    +	// `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{ne
    +	// twork}`.
     	NetworkUrl string `json:"networkUrl,omitempty"`
     	// Port: The configured port of the load balancer.
     	Port string `json:"port,omitempty"`
    @@ -2088,9 +2100,9 @@ type RRSetRoutingPolicyLoadBalancerTarget struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *RRSetRoutingPolicyLoadBalancerTarget) MarshalJSON() ([]byte, error) {
    +func (s RRSetRoutingPolicyLoadBalancerTarget) MarshalJSON() ([]byte, error) {
     	type NoMethod RRSetRoutingPolicyLoadBalancerTarget
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // RRSetRoutingPolicyPrimaryBackupPolicy: Configures a RRSetRoutingPolicy such
    @@ -2099,15 +2111,15 @@ func (s *RRSetRoutingPolicyLoadBalancerTarget) MarshalJSON() ([]byte, error) {
     // policy.
     type RRSetRoutingPolicyPrimaryBackupPolicy struct {
     	// BackupGeoTargets: Backup targets provide a regional failover policy for the
    -	// otherwise global primary targets. If serving state is set to BACKUP, this
    +	// otherwise global primary targets. If serving state is set to `BACKUP`, this
     	// policy essentially becomes a geo routing policy.
     	BackupGeoTargets *RRSetRoutingPolicyGeoPolicy `json:"backupGeoTargets,omitempty"`
     	Kind             string                       `json:"kind,omitempty"`
     	// PrimaryTargets: Endpoints that are health checked before making the routing
     	// decision. Unhealthy endpoints are omitted from the results. If all endpoints
    -	// are unhealthy, we serve a response based on the backup_geo_targets.
    +	// are unhealthy, we serve a response based on the `backup_geo_targets`.
     	PrimaryTargets *RRSetRoutingPolicyHealthCheckTargets `json:"primaryTargets,omitempty"`
    -	// TrickleTraffic: When serving state is PRIMARY, this field provides the
    +	// TrickleTraffic: When serving state is `PRIMARY`, this field provides the
     	// option of sending a small percentage of the traffic to the backup targets.
     	TrickleTraffic float64 `json:"trickleTraffic,omitempty"`
     	// ForceSendFields is a list of field names (e.g. "BackupGeoTargets") to
    @@ -2123,9 +2135,9 @@ type RRSetRoutingPolicyPrimaryBackupPolicy struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *RRSetRoutingPolicyPrimaryBackupPolicy) MarshalJSON() ([]byte, error) {
    +func (s RRSetRoutingPolicyPrimaryBackupPolicy) MarshalJSON() ([]byte, error) {
     	type NoMethod RRSetRoutingPolicyPrimaryBackupPolicy
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     func (s *RRSetRoutingPolicyPrimaryBackupPolicy) UnmarshalJSON(data []byte) error {
    @@ -2160,9 +2172,9 @@ type RRSetRoutingPolicyWrrPolicy struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *RRSetRoutingPolicyWrrPolicy) MarshalJSON() ([]byte, error) {
    +func (s RRSetRoutingPolicyWrrPolicy) MarshalJSON() ([]byte, error) {
     	type NoMethod RRSetRoutingPolicyWrrPolicy
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // RRSetRoutingPolicyWrrPolicyWrrPolicyItem: A routing block which contains the
    @@ -2172,18 +2184,19 @@ type RRSetRoutingPolicyWrrPolicyWrrPolicyItem struct {
     	// routing decision. The unhealthy endpoints are omitted from the result. If
     	// all endpoints within a bucket are unhealthy, we choose a different bucket
     	// (sampled with respect to its weight) for responding. If DNSSEC is enabled
    -	// for this zone, only one of rrdata or health_checked_targets can be set.
    +	// for this zone, only one of `rrdata` or `health_checked_targets` can be set.
     	HealthCheckedTargets *RRSetRoutingPolicyHealthCheckTargets `json:"healthCheckedTargets,omitempty"`
     	Kind                 string                                `json:"kind,omitempty"`
     	Rrdatas              []string                              `json:"rrdatas,omitempty"`
    -	// SignatureRrdatas: DNSSEC generated signatures for all the rrdata within this
    -	// item. Note that if health checked targets are provided for DNSSEC enabled
    -	// zones, there's a restriction of 1 IP address per item.
    +	// SignatureRrdatas: DNSSEC generated signatures for all the `rrdata` within
    +	// this item. Note that if health checked targets are provided for DNSSEC
    +	// enabled zones, there's a restriction of 1 IP address per item.
     	SignatureRrdatas []string `json:"signatureRrdatas,omitempty"`
    -	// Weight: The weight corresponding to this WrrPolicyItem object. When multiple
    -	// WrrPolicyItem objects are configured, the probability of returning an
    -	// WrrPolicyItem object's data is proportional to its weight relative to the
    -	// sum of weights configured for all items. This weight must be non-negative.
    +	// Weight: The weight corresponding to this `WrrPolicyItem` object. When
    +	// multiple `WrrPolicyItem` objects are configured, the probability of
    +	// returning an `WrrPolicyItem` object's data is proportional to its weight
    +	// relative to the sum of weights configured for all items. This weight must be
    +	// non-negative.
     	Weight float64 `json:"weight,omitempty"`
     	// ForceSendFields is a list of field names (e.g. "HealthCheckedTargets") to
     	// unconditionally include in API requests. By default, fields with empty or
    @@ -2198,9 +2211,9 @@ type RRSetRoutingPolicyWrrPolicyWrrPolicyItem struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *RRSetRoutingPolicyWrrPolicyWrrPolicyItem) MarshalJSON() ([]byte, error) {
    +func (s RRSetRoutingPolicyWrrPolicyWrrPolicyItem) MarshalJSON() ([]byte, error) {
     	type NoMethod RRSetRoutingPolicyWrrPolicyWrrPolicyItem
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     func (s *RRSetRoutingPolicyWrrPolicyWrrPolicyItem) UnmarshalJSON(data []byte) error {
    @@ -2224,15 +2237,15 @@ type ResourceRecordSet struct {
     	Name string `json:"name,omitempty"`
     	// RoutingPolicy: Configures dynamic query responses based on either the geo
     	// location of the querying user or a weighted round robin based routing
    -	// policy. A valid ResourceRecordSet contains only rrdata (for static
    -	// resolution) or a routing_policy (for dynamic resolution).
    +	// policy. A valid `ResourceRecordSet` contains only `rrdata` (for static
    +	// resolution) or a `routing_policy` (for dynamic resolution).
     	RoutingPolicy *RRSetRoutingPolicy `json:"routingPolicy,omitempty"`
     	// Rrdatas: As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) --
     	// see examples.
     	Rrdatas []string `json:"rrdatas,omitempty"`
     	// SignatureRrdatas: As defined in RFC 4034 (section 3.2).
     	SignatureRrdatas []string `json:"signatureRrdatas,omitempty"`
    -	// Ttl: Number of seconds that this ResourceRecordSet can be cached by
    +	// Ttl: Number of seconds that this `ResourceRecordSet` can be cached by
     	// resolvers.
     	Ttl int64 `json:"ttl,omitempty"`
     	// Type: The identifier of a supported record type. See the list of Supported
    @@ -2254,9 +2267,9 @@ type ResourceRecordSet struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResourceRecordSet) MarshalJSON() ([]byte, error) {
    +func (s ResourceRecordSet) MarshalJSON() ([]byte, error) {
     	type NoMethod ResourceRecordSet
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ResourceRecordSetsDeleteResponse struct {
    @@ -2265,16 +2278,15 @@ type ResourceRecordSetsDeleteResponse struct {
     }
     
     type ResourceRecordSetsListResponse struct {
    -	Header *ResponseHeader `json:"header,omitempty"`
     	// Kind: Type of resource.
     	Kind string `json:"kind,omitempty"`
    -	// NextPageToken: The presence of this field indicates that there exist more
    -	// results following your last page of results in pagination order. To fetch
    -	// them, make another list request using this value as your pagination token.
    -	// This lets you retrieve the complete contents of even larger collections, one
    -	// page at a time. However, if the collection changes between paginated list
    -	// requests, the set of elements returned is an inconsistent view of the
    -	// collection. You cannot retrieve a consistent snapshot of a collection larger
    +	// NextPageToken: This field indicates that more results are available beyond
    +	// the last page displayed. To fetch the results, make another list request and
    +	// use this value as your page token. This lets you retrieve the complete
    +	// contents of a very large collection one page at a time. However, if the
    +	// contents of the collection change between the first and last paginated list
    +	// request, the set of all elements returned are an inconsistent view of the
    +	// collection. You can't retrieve a consistent snapshot of a collection larger
     	// than the maximum page size.
     	NextPageToken string `json:"nextPageToken,omitempty"`
     	// Rrsets: The resource record set resources.
    @@ -2282,128 +2294,101 @@ type ResourceRecordSetsListResponse struct {
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    +	// ForceSendFields is a list of field names (e.g. "Kind") to unconditionally
     	// include in API requests. By default, fields with empty or default values are
     	// omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    -	// requests with the JSON null value. By default, fields with empty values are
    -	// omitted from API requests. See
    +	// NullFields is a list of field names (e.g. "Kind") to include in API requests
    +	// with the JSON null value. By default, fields with empty values are omitted
    +	// from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResourceRecordSetsListResponse) MarshalJSON() ([]byte, error) {
    +func (s ResourceRecordSetsListResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod ResourceRecordSetsListResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    -}
    -
    -// ResponseHeader: Elements common to every response.
    -type ResponseHeader struct {
    -	// OperationId: For mutating operation requests that completed successfully.
    -	// This is the client_operation_id if the client specified it, otherwise it is
    -	// generated by the server (output only).
    -	OperationId string `json:"operationId,omitempty"`
    -	// ForceSendFields is a list of field names (e.g. "OperationId") to
    -	// unconditionally include in API requests. By default, fields with empty or
    -	// default values are omitted from API requests. See
    -	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
    -	// details.
    -	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "OperationId") to include in API
    -	// requests with the JSON null value. By default, fields with empty values are
    -	// omitted from API requests. See
    -	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
    -	NullFields []string `json:"-"`
    -}
    -
    -func (s *ResponseHeader) MarshalJSON() ([]byte, error) {
    -	type NoMethod ResponseHeader
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ResponsePoliciesListResponse struct {
    -	Header *ResponseHeader `json:"header,omitempty"`
    -	// NextPageToken: The presence of this field indicates that more results exist
    -	// following your last page of results in pagination order. To fetch them, make
    -	// another list request by using this value as your page token. This lets you
    -	// view the complete contents of even very large collections one page at a
    -	// time. However, if the contents of the collection change between the first
    -	// and last paginated list request, the set of all elements returned are an
    -	// inconsistent view of the collection. You cannot retrieve a consistent
    -	// snapshot of a collection larger than the maximum page size.
    +	// NextPageToken: This field indicates that more results are available beyond
    +	// the last page displayed. To fetch the results, make another list request and
    +	// use this value as your page token. This lets you retrieve the complete
    +	// contents of a very large collection one page at a time. However, if the
    +	// contents of the collection change between the first and last paginated list
    +	// request, the set of all elements returned are an inconsistent view of the
    +	// collection. You can't retrieve a consistent snapshot of a collection larger
    +	// than the maximum page size.
     	NextPageToken string `json:"nextPageToken,omitempty"`
     	// ResponsePolicies: The Response Policy resources.
     	ResponsePolicies []*ResponsePolicy `json:"responsePolicies,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    -	// include in API requests. By default, fields with empty or default values are
    -	// omitted from API requests. See
    +	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
    +	// unconditionally include in API requests. By default, fields with empty or
    +	// default values are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    +	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
     	// requests with the JSON null value. By default, fields with empty values are
     	// omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePoliciesListResponse) MarshalJSON() ([]byte, error) {
    +func (s ResponsePoliciesListResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePoliciesListResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ResponsePoliciesPatchResponse struct {
    -	Header         *ResponseHeader `json:"header,omitempty"`
     	ResponsePolicy *ResponsePolicy `json:"responsePolicy,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    -	// include in API requests. By default, fields with empty or default values are
    -	// omitted from API requests. See
    +	// ForceSendFields is a list of field names (e.g. "ResponsePolicy") to
    +	// unconditionally include in API requests. By default, fields with empty or
    +	// default values are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    -	// requests with the JSON null value. By default, fields with empty values are
    -	// omitted from API requests. See
    +	// NullFields is a list of field names (e.g. "ResponsePolicy") to include in
    +	// API requests with the JSON null value. By default, fields with empty values
    +	// are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePoliciesPatchResponse) MarshalJSON() ([]byte, error) {
    +func (s ResponsePoliciesPatchResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePoliciesPatchResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ResponsePoliciesUpdateResponse struct {
    -	Header         *ResponseHeader `json:"header,omitempty"`
     	ResponsePolicy *ResponsePolicy `json:"responsePolicy,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    -	// include in API requests. By default, fields with empty or default values are
    -	// omitted from API requests. See
    +	// ForceSendFields is a list of field names (e.g. "ResponsePolicy") to
    +	// unconditionally include in API requests. By default, fields with empty or
    +	// default values are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    -	// requests with the JSON null value. By default, fields with empty values are
    -	// omitted from API requests. See
    +	// NullFields is a list of field names (e.g. "ResponsePolicy") to include in
    +	// API requests with the JSON null value. By default, fields with empty values
    +	// are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePoliciesUpdateResponse) MarshalJSON() ([]byte, error) {
    +func (s ResponsePoliciesUpdateResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePoliciesUpdateResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // ResponsePolicy: A Response Policy is a collection of selectors that apply to
    @@ -2440,9 +2425,9 @@ type ResponsePolicy struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePolicy) MarshalJSON() ([]byte, error) {
    +func (s ResponsePolicy) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePolicy
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ResponsePolicyGKECluster struct {
    @@ -2466,16 +2451,17 @@ type ResponsePolicyGKECluster struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePolicyGKECluster) MarshalJSON() ([]byte, error) {
    +func (s ResponsePolicyGKECluster) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePolicyGKECluster
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ResponsePolicyNetwork struct {
     	Kind string `json:"kind,omitempty"`
     	// NetworkUrl: The fully qualified URL of the VPC network to bind to. This
     	// should be formatted like
    -	// https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
    +	// `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{ne
    +	// twork}`
     	NetworkUrl string `json:"networkUrl,omitempty"`
     	// ForceSendFields is a list of field names (e.g. "Kind") to unconditionally
     	// include in API requests. By default, fields with empty or default values are
    @@ -2490,9 +2476,9 @@ type ResponsePolicyNetwork struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePolicyNetwork) MarshalJSON() ([]byte, error) {
    +func (s ResponsePolicyNetwork) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePolicyNetwork
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     // ResponsePolicyRule: A Response Policy Rule is a selector that applies its
    @@ -2505,18 +2491,19 @@ type ResponsePolicyRule struct {
     	//
     	// Possible values:
     	//   "behaviorUnspecified"
    -	//   "bypassResponsePolicy" - Skip a less-specific ResponsePolicyRule and
    -	// continue normal query logic. This can be used with a less-specific wildcard
    -	// selector to exempt a subset of the wildcard ResponsePolicyRule from the
    -	// ResponsePolicy behavior and query the public Internet instead. For instance,
    -	// if these rules exist: *.example.com -> LocalData 1.2.3.4 foo.example.com ->
    -	// Behavior 'bypassResponsePolicy' Then a query for 'foo.example.com' skips the
    -	// wildcard. This additionally functions to facilitate the allowlist feature.
    -	// RPZs can be applied to multiple levels in the (eventually org, folder,
    -	// project, network) hierarchy. If a rule is applied at a higher level of the
    -	// hierarchy, adding a passthru rule at a lower level will supersede that, and
    -	// a query from an affected vm to that domain will be exempt from the RPZ and
    -	// proceed to normal resolution behavior.
    +	//   "bypassResponsePolicy" - Skip a less-specific Response Policy Rule and let
    +	// the query logic continue. This mechanism, when used with wildcard selectors,
    +	// lets you exempt specific subdomains from a broader Response Policy Rule and
    +	// direct the queries to the public internet instead. For example, if the
    +	// following rules exist: ``` *.example.com -> LocalData 1.2.3.4
    +	// foo.example.com -> Behavior 'passthrough' ``` A query for foo.example.com
    +	// skips the wildcard rule. This functionality also facilitates allowlisting.
    +	// Response Policy Zones (RPZs) can be applied at multiple levels within the
    +	// hierarchy: for example, an organization, a folder, a project, or a VPC
    +	// network. If an RPZ rule is applied at a higher level, adding a `passthrough`
    +	// rule at a lower level will override it. Queries from affected virtual
    +	// machines (VMs) to that domain bypass the RPZ and proceed with normal
    +	// resolution.
     	Behavior string `json:"behavior,omitempty"`
     	// DnsName: The DNS name (wildcard or exact) to apply this rule to. Must be
     	// unique within the Response Policy Rule.
    @@ -2546,9 +2533,9 @@ type ResponsePolicyRule struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePolicyRule) MarshalJSON() ([]byte, error) {
    +func (s ResponsePolicyRule) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePolicyRule
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ResponsePolicyRuleLocalData struct {
    @@ -2568,91 +2555,88 @@ type ResponsePolicyRuleLocalData struct {
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePolicyRuleLocalData) MarshalJSON() ([]byte, error) {
    +func (s ResponsePolicyRuleLocalData) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePolicyRuleLocalData
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ResponsePolicyRulesListResponse struct {
    -	Header *ResponseHeader `json:"header,omitempty"`
    -	// NextPageToken: The presence of this field indicates that there exist more
    -	// results following your last page of results in pagination order. To fetch
    -	// them, make another list request using this value as your page token. This
    -	// lets you the complete contents of even very large collections one page at a
    -	// time. However, if the contents of the collection change between the first
    -	// and last paginated list request, the set of all elements returned are an
    -	// inconsistent view of the collection. You cannot retrieve a consistent
    -	// snapshot of a collection larger than the maximum page size.
    +	// NextPageToken: This field indicates that more results are available beyond
    +	// the last page displayed. To fetch the results, make another list request and
    +	// use this value as your page token. This lets you retrieve the complete
    +	// contents of a very large collection one page at a time. However, if the
    +	// contents of the collection change between the first and last paginated list
    +	// request, the set of all elements returned are an inconsistent view of the
    +	// collection. You can't retrieve a consistent snapshot of a collection larger
    +	// than the maximum page size.
     	NextPageToken string `json:"nextPageToken,omitempty"`
     	// ResponsePolicyRules: The Response Policy Rule resources.
     	ResponsePolicyRules []*ResponsePolicyRule `json:"responsePolicyRules,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    -	// include in API requests. By default, fields with empty or default values are
    -	// omitted from API requests. See
    +	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
    +	// unconditionally include in API requests. By default, fields with empty or
    +	// default values are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    +	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
     	// requests with the JSON null value. By default, fields with empty values are
     	// omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePolicyRulesListResponse) MarshalJSON() ([]byte, error) {
    +func (s ResponsePolicyRulesListResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePolicyRulesListResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ResponsePolicyRulesPatchResponse struct {
    -	Header             *ResponseHeader     `json:"header,omitempty"`
     	ResponsePolicyRule *ResponsePolicyRule `json:"responsePolicyRule,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    -	// include in API requests. By default, fields with empty or default values are
    -	// omitted from API requests. See
    +	// ForceSendFields is a list of field names (e.g. "ResponsePolicyRule") to
    +	// unconditionally include in API requests. By default, fields with empty or
    +	// default values are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    -	// requests with the JSON null value. By default, fields with empty values are
    -	// omitted from API requests. See
    +	// NullFields is a list of field names (e.g. "ResponsePolicyRule") to include
    +	// in API requests with the JSON null value. By default, fields with empty
    +	// values are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePolicyRulesPatchResponse) MarshalJSON() ([]byte, error) {
    +func (s ResponsePolicyRulesPatchResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePolicyRulesPatchResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ResponsePolicyRulesUpdateResponse struct {
    -	Header             *ResponseHeader     `json:"header,omitempty"`
     	ResponsePolicyRule *ResponsePolicyRule `json:"responsePolicyRule,omitempty"`
     
     	// ServerResponse contains the HTTP response code and headers from the server.
     	googleapi.ServerResponse `json:"-"`
    -	// ForceSendFields is a list of field names (e.g. "Header") to unconditionally
    -	// include in API requests. By default, fields with empty or default values are
    -	// omitted from API requests. See
    +	// ForceSendFields is a list of field names (e.g. "ResponsePolicyRule") to
    +	// unconditionally include in API requests. By default, fields with empty or
    +	// default values are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
     	// details.
     	ForceSendFields []string `json:"-"`
    -	// NullFields is a list of field names (e.g. "Header") to include in API
    -	// requests with the JSON null value. By default, fields with empty values are
    -	// omitted from API requests. See
    +	// NullFields is a list of field names (e.g. "ResponsePolicyRule") to include
    +	// in API requests with the JSON null value. By default, fields with empty
    +	// values are omitted from API requests. See
     	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
     	NullFields []string `json:"-"`
     }
     
    -func (s *ResponsePolicyRulesUpdateResponse) MarshalJSON() ([]byte, error) {
    +func (s ResponsePolicyRulesUpdateResponse) MarshalJSON() ([]byte, error) {
     	type NoMethod ResponsePolicyRulesUpdateResponse
    -	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
    +	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
     }
     
     type ChangesCreateCall struct {
    diff --git a/vendor/google.golang.org/api/internal/creds.go b/vendor/google.golang.org/api/internal/creds.go
    index b6dbace4c979..4ebeb61c1a2f 100644
    --- a/vendor/google.golang.org/api/internal/creds.go
    +++ b/vendor/google.golang.org/api/internal/creds.go
    @@ -42,6 +42,26 @@ func Creds(ctx context.Context, ds *DialSettings) (*google.Credentials, error) {
     	return creds, nil
     }
     
    +// GetOAuth2Configuration determines configurations for the OAuth2 transport, which is separate from the API transport.
    +// The OAuth2 transport and endpoint will be configured for mTLS if applicable.
    +func GetOAuth2Configuration(ctx context.Context, settings *DialSettings) (string, *http.Client, error) {
    +	clientCertSource, err := getClientCertificateSource(settings)
    +	if err != nil {
    +		return "", nil, err
    +	}
    +	tokenURL := oAuth2Endpoint(clientCertSource)
    +	var oauth2Client *http.Client
    +	if clientCertSource != nil {
    +		tlsConfig := &tls.Config{
    +			GetClientCertificate: clientCertSource,
    +		}
    +		oauth2Client = customHTTPClient(tlsConfig)
    +	} else {
    +		oauth2Client = oauth2.NewClient(ctx, nil)
    +	}
    +	return tokenURL, oauth2Client, nil
    +}
    +
     func credsNewAuth(ctx context.Context, settings *DialSettings) (*google.Credentials, error) {
     	// Preserve old options behavior
     	if settings.InternalCredentials != nil {
    @@ -86,7 +106,6 @@ func credsNewAuth(ctx context.Context, settings *DialSettings) (*google.Credenti
     		CredentialsFile:  settings.CredentialsFile,
     		CredentialsJSON:  settings.CredentialsJSON,
     		UseSelfSignedJWT: useSelfSignedJWT,
    -		Client:           oauth2.NewClient(ctx, nil),
     	})
     	if err != nil {
     		return nil, err
    @@ -102,7 +121,7 @@ func baseCreds(ctx context.Context, ds *DialSettings) (*google.Credentials, erro
     	if ds.Credentials != nil {
     		return ds.Credentials, nil
     	}
    -	if ds.CredentialsJSON != nil {
    +	if len(ds.CredentialsJSON) > 0 {
     		return credentialsFromJSON(ctx, ds.CredentialsJSON, ds)
     	}
     	if ds.CredentialsFile != "" {
    @@ -147,19 +166,12 @@ func credentialsFromJSON(ctx context.Context, data []byte, ds *DialSettings) (*g
     	var params google.CredentialsParams
     	params.Scopes = ds.GetScopes()
     
    -	// Determine configurations for the OAuth2 transport, which is separate from the API transport.
    -	// The OAuth2 transport and endpoint will be configured for mTLS if applicable.
    -	clientCertSource, err := getClientCertificateSource(ds)
    +	tokenURL, oauth2Client, err := GetOAuth2Configuration(ctx, ds)
     	if err != nil {
     		return nil, err
     	}
    -	params.TokenURL = oAuth2Endpoint(clientCertSource)
    -	if clientCertSource != nil {
    -		tlsConfig := &tls.Config{
    -			GetClientCertificate: clientCertSource,
    -		}
    -		ctx = context.WithValue(ctx, oauth2.HTTPClient, customHTTPClient(tlsConfig))
    -	}
    +	params.TokenURL = tokenURL
    +	ctx = context.WithValue(ctx, oauth2.HTTPClient, oauth2Client)
     
     	// By default, a standard OAuth 2.0 token source is created
     	cred, err := google.CredentialsFromJSONWithParams(ctx, data, params)
    @@ -284,14 +296,3 @@ func baseTransport() *http.Transport {
     		ExpectContinueTimeout: 1 * time.Second,
     	}
     }
    -
    -// ErrUniverseNotMatch composes an error string from the provided universe
    -// domain sources (DialSettings and Credentials, respectively).
    -func ErrUniverseNotMatch(settingsUD, credsUD string) error {
    -	return fmt.Errorf(
    -		"the configured universe domain (%q) does not match the universe "+
    -			"domain found in the credentials (%q). If you haven't configured "+
    -			"WithUniverseDomain explicitly, \"googleapis.com\" is the default",
    -		settingsUD,
    -		credsUD)
    -}
    diff --git a/vendor/google.golang.org/api/internal/gensupport/resumable.go b/vendor/google.golang.org/api/internal/gensupport/resumable.go
    index 08e7aacefb68..f828ddb60e6d 100644
    --- a/vendor/google.golang.org/api/internal/gensupport/resumable.go
    +++ b/vendor/google.golang.org/api/internal/gensupport/resumable.go
    @@ -171,6 +171,10 @@ func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err
     			if resp != nil && resp.Body != nil {
     				resp.Body.Close()
     			}
    +			// If there were retries, indicate this in the error message and wrap the final error.
    +			if rx.attempts > 1 {
    +				return nil, fmt.Errorf("chunk upload failed after %d attempts;, final error: %w", rx.attempts, err)
    +			}
     			return nil, err
     		}
     		// This case is very unlikely but possible only if rx.ChunkRetryDeadline is
    diff --git a/vendor/google.golang.org/api/internal/gensupport/retry.go b/vendor/google.golang.org/api/internal/gensupport/retry.go
    index 20b57d925f17..089ee3189ba0 100644
    --- a/vendor/google.golang.org/api/internal/gensupport/retry.go
    +++ b/vendor/google.golang.org/api/internal/gensupport/retry.go
    @@ -8,6 +8,7 @@ import (
     	"errors"
     	"io"
     	"net"
    +	"net/url"
     	"strings"
     	"time"
     
    @@ -29,8 +30,6 @@ var (
     	backoff = func() Backoff {
     		return &gax.Backoff{Initial: 100 * time.Millisecond}
     	}
    -	// syscallRetryable is a platform-specific hook, specified in retryable_linux.go
    -	syscallRetryable func(error) bool = func(err error) bool { return false }
     )
     
     const (
    @@ -56,30 +55,33 @@ func shouldRetry(status int, err error) bool {
     	if status == statusTooManyRequests || status == statusRequestTimeout {
     		return true
     	}
    -	if err == io.ErrUnexpectedEOF {
    +	if errors.Is(err, io.ErrUnexpectedEOF) {
     		return true
     	}
    -	// Transient network errors should be retried.
    -	if syscallRetryable(err) {
    +	if errors.Is(err, net.ErrClosed) {
     		return true
     	}
    -	if err, ok := err.(interface{ Temporary() bool }); ok {
    -		if err.Temporary() {
    -			return true
    +	switch e := err.(type) {
    +	case *net.OpError, *url.Error:
    +		// Retry socket-level errors ECONNREFUSED and ECONNRESET (from syscall).
    +		// Unfortunately the error type is unexported, so we resort to string
    +		// matching.
    +		retriable := []string{"connection refused", "connection reset", "broken pipe"}
    +		for _, s := range retriable {
    +			if strings.Contains(e.Error(), s) {
    +				return true
    +			}
     		}
    -	}
    -	var opErr *net.OpError
    -	if errors.As(err, &opErr) {
    -		if strings.Contains(opErr.Error(), "use of closed network connection") {
    -			// TODO: check against net.ErrClosed (go 1.16+) instead of string
    +	case interface{ Temporary() bool }:
    +		if e.Temporary() {
     			return true
     		}
     	}
     
    -	// If Go 1.13 error unwrapping is available, use this to examine wrapped
    +	// If error unwrapping is available, use this to examine wrapped
     	// errors.
    -	if err, ok := err.(interface{ Unwrap() error }); ok {
    -		return shouldRetry(status, err.Unwrap())
    +	if e, ok := err.(interface{ Unwrap() error }); ok {
    +		return shouldRetry(status, e.Unwrap())
     	}
     	return false
     }
    diff --git a/vendor/google.golang.org/api/internal/gensupport/retryable_linux.go b/vendor/google.golang.org/api/internal/gensupport/retryable_linux.go
    deleted file mode 100644
    index a916c3da29b0..000000000000
    --- a/vendor/google.golang.org/api/internal/gensupport/retryable_linux.go
    +++ /dev/null
    @@ -1,16 +0,0 @@
    -// Copyright 2020 Google LLC.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build linux
    -// +build linux
    -
    -package gensupport
    -
    -import "syscall"
    -
    -func init() {
    -	// Initialize syscallRetryable to return true on transient socket-level
    -	// errors. These errors are specific to Linux.
    -	syscallRetryable = func(err error) bool { return err == syscall.ECONNRESET || err == syscall.ECONNREFUSED }
    -}
    diff --git a/vendor/google.golang.org/api/internal/gensupport/send.go b/vendor/google.golang.org/api/internal/gensupport/send.go
    index f39dd00d99f1..f6716134ebf5 100644
    --- a/vendor/google.golang.org/api/internal/gensupport/send.go
    +++ b/vendor/google.golang.org/api/internal/gensupport/send.go
    @@ -48,8 +48,24 @@ func SendRequest(ctx context.Context, client *http.Client, req *http.Request) (*
     	if ctx != nil {
     		headers := callctx.HeadersFromContext(ctx)
     		for k, vals := range headers {
    -			for _, v := range vals {
    -				req.Header.Add(k, v)
    +			if k == "x-goog-api-client" {
    +				// Merge all values into a single "x-goog-api-client" header.
    +				var mergedVal strings.Builder
    +				baseXGoogHeader := req.Header.Get("X-Goog-Api-Client")
    +				if baseXGoogHeader != "" {
    +					mergedVal.WriteString(baseXGoogHeader)
    +					mergedVal.WriteRune(' ')
    +				}
    +				for _, v := range vals {
    +					mergedVal.WriteString(v)
    +					mergedVal.WriteRune(' ')
    +				}
    +				// Remove the last space and replace the header on the request.
    +				req.Header.Set(k, mergedVal.String()[:mergedVal.Len()-1])
    +			} else {
    +				for _, v := range vals {
    +					req.Header.Add(k, v)
    +				}
     			}
     		}
     	}
    @@ -118,7 +134,9 @@ func sendAndRetry(ctx context.Context, client *http.Client, req *http.Request, r
     	var err error
     	attempts := 1
     	invocationID := uuid.New().String()
    -	baseXGoogHeader := req.Header.Get("X-Goog-Api-Client")
    +
    +	xGoogHeaderVals := req.Header.Values("X-Goog-Api-Client")
    +	baseXGoogHeader := strings.Join(xGoogHeaderVals, " ")
     
     	// Loop to retry the request, up to the context deadline.
     	var pause time.Duration
    diff --git a/vendor/google.golang.org/api/internal/settings.go b/vendor/google.golang.org/api/internal/settings.go
    index 6d0c18e5a876..32949cccbd1f 100644
    --- a/vendor/google.golang.org/api/internal/settings.go
    +++ b/vendor/google.golang.org/api/internal/settings.go
    @@ -126,7 +126,7 @@ func (ds *DialSettings) Validate() error {
     	if ds.Credentials != nil {
     		nCreds++
     	}
    -	if ds.CredentialsJSON != nil {
    +	if len(ds.CredentialsJSON) > 0 {
     		nCreds++
     	}
     	if ds.CredentialsFile != "" {
    @@ -204,8 +204,7 @@ func (ds *DialSettings) IsUniverseDomainGDU() bool {
     }
     
     // GetUniverseDomain returns the default service domain for a given Cloud
    -// universe, from google.Credentials, for comparison with the value returned by
    -// (*DialSettings).GetUniverseDomain. This wrapper function should be removed
    +// universe, from google.Credentials. This wrapper function should be removed
     // to close https://github.com/googleapis/google-api-go-client/issues/2399.
     func GetUniverseDomain(creds *google.Credentials) (string, error) {
     	timer := time.NewTimer(time.Second)
    diff --git a/vendor/google.golang.org/api/internal/version.go b/vendor/google.golang.org/api/internal/version.go
    index caf8441363e0..ed0987b42e90 100644
    --- a/vendor/google.golang.org/api/internal/version.go
    +++ b/vendor/google.golang.org/api/internal/version.go
    @@ -5,4 +5,4 @@
     package internal
     
     // Version is the current tagged release of the library.
    -const Version = "0.183.0"
    +const Version = "0.198.0"
    diff --git a/vendor/google.golang.org/api/transport/http/dial.go b/vendor/google.golang.org/api/transport/http/dial.go
    index d1cd83b62d97..d5b213e0f08d 100644
    --- a/vendor/google.golang.org/api/transport/http/dial.go
    +++ b/vendor/google.golang.org/api/transport/http/dial.go
    @@ -121,7 +121,6 @@ func newClientNewAuth(ctx context.Context, base http.RoundTripper, ds *internal.
     			Audience:        aud,
     			CredentialsFile: ds.CredentialsFile,
     			CredentialsJSON: ds.CredentialsJSON,
    -			Client:          oauth2.NewClient(ctx, nil),
     		},
     		InternalOptions: &httptransport.InternalOptions{
     			EnableJWTWithScope:      ds.EnableJwtWithScope,
    @@ -131,6 +130,7 @@ func newClientNewAuth(ctx context.Context, base http.RoundTripper, ds *internal.
     			DefaultScopes:           ds.DefaultScopes,
     			SkipValidation:          skipValidation,
     		},
    +		UniverseDomain: ds.UniverseDomain,
     	})
     	if err != nil {
     		return nil, err
    @@ -183,17 +183,6 @@ func newTransport(ctx context.Context, base http.RoundTripper, settings *interna
     		if err != nil {
     			return nil, err
     		}
    -		if settings.TokenSource == nil {
    -			// We only validate non-tokensource creds, as TokenSource-based credentials
    -			// don't propagate universe.
    -			credsUniverseDomain, err := internal.GetUniverseDomain(creds)
    -			if err != nil {
    -				return nil, err
    -			}
    -			if settings.GetUniverseDomain() != credsUniverseDomain {
    -				return nil, internal.ErrUniverseNotMatch(settings.GetUniverseDomain(), credsUniverseDomain)
    -			}
    -		}
     		paramTransport.quotaProject = internal.GetQuotaProject(creds, settings.QuotaProject)
     		ts := creds.TokenSource
     		if settings.ImpersonationConfig == nil && settings.TokenSource != nil {
    diff --git a/vendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.go b/vendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.go
    index e7d3805e3653..f388426b08f7 100644
    --- a/vendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.go
    +++ b/vendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.go
    @@ -159,14 +159,14 @@ var file_google_api_httpbody_proto_rawDesc = []byte{
     	0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
     	0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
     	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52,
    -	0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x68, 0x0a, 0x0e, 0x63,
    +	0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x65, 0x0a, 0x0e, 0x63,
     	0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0d, 0x48,
     	0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b,
     	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
     	0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
     	0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x62, 0x6f,
    -	0x64, 0x79, 0x3b, 0x68, 0x74, 0x74, 0x70, 0x62, 0x6f, 0x64, 0x79, 0xf8, 0x01, 0x01, 0xa2, 0x02,
    -	0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
    +	0x64, 0x79, 0x3b, 0x68, 0x74, 0x74, 0x70, 0x62, 0x6f, 0x64, 0x79, 0xa2, 0x02, 0x04, 0x47, 0x41,
    +	0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
     }
     
     var (
    diff --git a/vendor/google.golang.org/genproto/googleapis/rpc/errdetails/error_details.pb.go b/vendor/google.golang.org/genproto/googleapis/rpc/errdetails/error_details.pb.go
    index 3e5621827921..3cd9a5bb8e62 100644
    --- a/vendor/google.golang.org/genproto/googleapis/rpc/errdetails/error_details.pb.go
    +++ b/vendor/google.golang.org/genproto/googleapis/rpc/errdetails/error_details.pb.go
    @@ -80,11 +80,12 @@ type ErrorInfo struct {
     	Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
     	// Additional structured details about this error.
     	//
    -	// Keys should match /[a-zA-Z0-9-_]/ and be limited to 64 characters in
    +	// Keys must match a regular expression of `[a-z][a-zA-Z0-9-_]+` but should
    +	// ideally be lowerCamelCase. Also, they must be limited to 64 characters in
     	// length. When identifying the current value of an exceeded limit, the units
     	// should be contained in the key, not the value.  For example, rather than
    -	// {"instanceLimit": "100/request"}, should be returned as,
    -	// {"instanceLimitPerRequest": "100"}, if the client exceeds the number of
    +	// `{"instanceLimit": "100/request"}`, should be returned as,
    +	// `{"instanceLimitPerRequest": "100"}`, if the client exceeds the number of
     	// instances that can be created in a single (batch) request.
     	Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
     }
    @@ -870,6 +871,16 @@ type BadRequest_FieldViolation struct {
     	Field string `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
     	// A description of why the request element is bad.
     	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
    +	// The reason of the field-level error. This is a constant value that
    +	// identifies the proximate cause of the field-level error. It should
    +	// uniquely identify the type of the FieldViolation within the scope of the
    +	// google.rpc.ErrorInfo.domain. This should be at most 63
    +	// characters and match a regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`,
    +	// which represents UPPER_SNAKE_CASE.
    +	Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"`
    +	// Provides a localized error message for field-level errors that is safe to
    +	// return to the API consumer.
    +	LocalizedMessage *LocalizedMessage `protobuf:"bytes,4,opt,name=localized_message,json=localizedMessage,proto3" json:"localized_message,omitempty"`
     }
     
     func (x *BadRequest_FieldViolation) Reset() {
    @@ -918,6 +929,20 @@ func (x *BadRequest_FieldViolation) GetDescription() string {
     	return ""
     }
     
    +func (x *BadRequest_FieldViolation) GetReason() string {
    +	if x != nil {
    +		return x.Reason
    +	}
    +	return ""
    +}
    +
    +func (x *BadRequest_FieldViolation) GetLocalizedMessage() *LocalizedMessage {
    +	if x != nil {
    +		return x.LocalizedMessage
    +	}
    +	return nil
    +}
    +
     // Describes a URL link.
     type Help_Link struct {
     	state         protoimpl.MessageState
    @@ -1026,51 +1051,57 @@ var file_google_rpc_error_details_proto_rawDesc = []byte{
     	0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
     	0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
     	0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
    -	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa8, 0x01, 0x0a, 0x0a, 0x42, 0x61,
    +	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8c, 0x02, 0x0a, 0x0a, 0x42, 0x61,
     	0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c,
     	0x64, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03,
     	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e,
     	0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
     	0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64,
    -	0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x48, 0x0a, 0x0e, 0x46, 0x69,
    -	0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05,
    -	0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65,
    -	0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
    -	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
    -	0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4f, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49,
    -	0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69,
    -	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
    -	0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61,
    -	0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e,
    -	0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x90, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
    -	0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
    -	0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72,
    -	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72,
    -	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
    -	0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65,
    -	0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
    -	0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
    -	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
    -	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6f, 0x0a, 0x04, 0x48, 0x65, 0x6c, 0x70,
    -	0x12, 0x2b, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
    -	0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x65, 0x6c,
    -	0x70, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x1a, 0x3a, 0x0a,
    -	0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
    -	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63,
    -	0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02,
    -	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x44, 0x0a, 0x10, 0x4c, 0x6f, 0x63,
    -	0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a,
    -	0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c,
    -	0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
    -	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42,
    -	0x6c, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70,
    -	0x63, 0x42, 0x11, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x50,
    -	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
    -	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f,
    -	0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x72, 0x70,
    -	0x63, 0x2f, 0x65, 0x72, 0x72, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3b, 0x65, 0x72, 0x72,
    -	0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0xa2, 0x02, 0x03, 0x52, 0x50, 0x43, 0x62, 0x06, 0x70,
    -	0x72, 0x6f, 0x74, 0x6f, 0x33,
    +	0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xab, 0x01, 0x0a, 0x0e, 0x46,
    +	0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a,
    +	0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69,
    +	0x65, 0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
    +	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
    +	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18,
    +	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x49, 0x0a,
    +	0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
    +	0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
    +	0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d,
    +	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65,
    +	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4f, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75,
    +	0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65,
    +	0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71,
    +	0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e,
    +	0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65,
    +	0x72, 0x76, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x90, 0x01, 0x0a, 0x0c, 0x52, 0x65,
    +	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65,
    +	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
    +	0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
    +	0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
    +	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
    +	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20,
    +	0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
    +	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
    +	0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6f, 0x0a, 0x04,
    +	0x48, 0x65, 0x6c, 0x70, 0x12, 0x2b, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20,
    +	0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63,
    +	0x2e, 0x48, 0x65, 0x6c, 0x70, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b,
    +	0x73, 0x1a, 0x3a, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73,
    +	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
    +	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75,
    +	0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x44, 0x0a,
    +	0x10, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
    +	0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
    +	0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
    +	0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
    +	0x61, 0x67, 0x65, 0x42, 0x6c, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
    +	0x65, 0x2e, 0x72, 0x70, 0x63, 0x42, 0x11, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61,
    +	0x69, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67,
    +	0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65,
    +	0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
    +	0x73, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x65, 0x72, 0x72, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
    +	0x3b, 0x65, 0x72, 0x72, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0xa2, 0x02, 0x03, 0x52, 0x50,
    +	0x43, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
     }
     
     var (
    @@ -1111,11 +1142,12 @@ var file_google_rpc_error_details_proto_depIdxs = []int32{
     	12, // 3: google.rpc.PreconditionFailure.violations:type_name -> google.rpc.PreconditionFailure.Violation
     	13, // 4: google.rpc.BadRequest.field_violations:type_name -> google.rpc.BadRequest.FieldViolation
     	14, // 5: google.rpc.Help.links:type_name -> google.rpc.Help.Link
    -	6,  // [6:6] is the sub-list for method output_type
    -	6,  // [6:6] is the sub-list for method input_type
    -	6,  // [6:6] is the sub-list for extension type_name
    -	6,  // [6:6] is the sub-list for extension extendee
    -	0,  // [0:6] is the sub-list for field type_name
    +	9,  // 6: google.rpc.BadRequest.FieldViolation.localized_message:type_name -> google.rpc.LocalizedMessage
    +	7,  // [7:7] is the sub-list for method output_type
    +	7,  // [7:7] is the sub-list for method input_type
    +	7,  // [7:7] is the sub-list for extension type_name
    +	7,  // [7:7] is the sub-list for extension extendee
    +	0,  // [0:7] is the sub-list for field type_name
     }
     
     func init() { file_google_rpc_error_details_proto_init() }
    diff --git a/vendor/google.golang.org/grpc/CONTRIBUTING.md b/vendor/google.golang.org/grpc/CONTRIBUTING.md
    index 0854d298e413..d9bfa6e1e7c0 100644
    --- a/vendor/google.golang.org/grpc/CONTRIBUTING.md
    +++ b/vendor/google.golang.org/grpc/CONTRIBUTING.md
    @@ -4,7 +4,7 @@ We definitely welcome your patches and contributions to gRPC! Please read the gR
     organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md)
     and [contribution guidelines](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md) before proceeding.
     
    -If you are new to github, please start by reading [Pull Request howto](https://help.github.com/articles/about-pull-requests/)
    +If you are new to GitHub, please start by reading [Pull Request howto](https://help.github.com/articles/about-pull-requests/)
     
     ## Legal requirements
     
    @@ -25,8 +25,8 @@ How to get your contributions merged smoothly and quickly.
       is a great place to start. These issues are well-documented and usually can be
       resolved with a single pull request.
     
    -- If you are adding a new file, make sure it has the copyright message template 
    -  at the top as a comment. You can copy over the message from an existing file 
    +- If you are adding a new file, make sure it has the copyright message template
    +  at the top as a comment. You can copy over the message from an existing file
       and update the year.
     
     - The grpc package should only depend on standard Go packages and a small number
    @@ -39,12 +39,12 @@ How to get your contributions merged smoothly and quickly.
       proposal](https://github.com/grpc/proposal).
     
     - Provide a good **PR description** as a record of **what** change is being made
    -  and **why** it was made. Link to a github issue if it exists.
    +  and **why** it was made. Link to a GitHub issue if it exists.
     
    -- If you want to fix formatting or style, consider whether your changes are an 
    -  obvious improvement or might be considered a personal preference. If a style 
    -  change is based on preference, it likely will not be accepted. If it corrects 
    -  widely agreed-upon anti-patterns, then please do create a PR and explain the 
    +- If you want to fix formatting or style, consider whether your changes are an
    +  obvious improvement or might be considered a personal preference. If a style
    +  change is based on preference, it likely will not be accepted. If it corrects
    +  widely agreed-upon anti-patterns, then please do create a PR and explain the
       benefits of the change.
     
     - Unless your PR is trivial, you should expect there will be reviewer comments
    diff --git a/vendor/google.golang.org/grpc/MAINTAINERS.md b/vendor/google.golang.org/grpc/MAINTAINERS.md
    index 6a8a07781ae3..5d4096d46a04 100644
    --- a/vendor/google.golang.org/grpc/MAINTAINERS.md
    +++ b/vendor/google.golang.org/grpc/MAINTAINERS.md
    @@ -9,21 +9,28 @@ for general contribution guidelines.
     
     ## Maintainers (in alphabetical order)
     
    +- [aranjans](https://github.com/aranjans), Google LLC
    +- [arjan-bal](https://github.com/arjan-bal), Google LLC
    +- [arvindbr8](https://github.com/arvindbr8), Google LLC
     - [atollena](https://github.com/atollena), Datadog, Inc.
    -- [cesarghali](https://github.com/cesarghali), Google LLC
     - [dfawley](https://github.com/dfawley), Google LLC
     - [easwars](https://github.com/easwars), Google LLC
    -- [menghanl](https://github.com/menghanl), Google LLC
    -- [srini100](https://github.com/srini100), Google LLC
    +- [erm-g](https://github.com/erm-g), Google LLC
    +- [gtcooke94](https://github.com/gtcooke94), Google LLC
    +- [purnesh42h](https://github.com/purnesh42h), Google LLC
    +- [zasweq](https://github.com/zasweq), Google LLC
     
     ## Emeritus Maintainers (in alphabetical order)
    -- [adelez](https://github.com/adelez), Google LLC
    -- [canguler](https://github.com/canguler), Google LLC
    -- [iamqizhao](https://github.com/iamqizhao), Google LLC
    -- [jadekler](https://github.com/jadekler), Google LLC
    -- [jtattermusch](https://github.com/jtattermusch), Google LLC
    -- [lyuxuan](https://github.com/lyuxuan), Google LLC
    -- [makmukhi](https://github.com/makmukhi), Google LLC
    -- [matt-kwong](https://github.com/matt-kwong), Google LLC
    -- [nicolasnoble](https://github.com/nicolasnoble), Google LLC
    -- [yongni](https://github.com/yongni), Google LLC
    +- [adelez](https://github.com/adelez)
    +- [canguler](https://github.com/canguler)
    +- [cesarghali](https://github.com/cesarghali)
    +- [iamqizhao](https://github.com/iamqizhao)
    +- [jeanbza](https://github.com/jeanbza)
    +- [jtattermusch](https://github.com/jtattermusch)
    +- [lyuxuan](https://github.com/lyuxuan)
    +- [makmukhi](https://github.com/makmukhi)
    +- [matt-kwong](https://github.com/matt-kwong)
    +- [menghanl](https://github.com/menghanl)
    +- [nicolasnoble](https://github.com/nicolasnoble)
    +- [srini100](https://github.com/srini100)
    +- [yongni](https://github.com/yongni)
    diff --git a/vendor/google.golang.org/grpc/SECURITY.md b/vendor/google.golang.org/grpc/SECURITY.md
    index be6e108705c4..abab279379ba 100644
    --- a/vendor/google.golang.org/grpc/SECURITY.md
    +++ b/vendor/google.golang.org/grpc/SECURITY.md
    @@ -1,3 +1,3 @@
     # Security Policy
     
    -For information on gRPC Security Policy and reporting potentional security issues, please see [gRPC CVE Process](https://github.com/grpc/proposal/blob/master/P4-grpc-cve-process.md).
    +For information on gRPC Security Policy and reporting potential security issues, please see [gRPC CVE Process](https://github.com/grpc/proposal/blob/master/P4-grpc-cve-process.md).
    diff --git a/vendor/google.golang.org/grpc/backoff/backoff.go b/vendor/google.golang.org/grpc/backoff/backoff.go
    index 0787d0b50ce9..d7b40b7cb66f 100644
    --- a/vendor/google.golang.org/grpc/backoff/backoff.go
    +++ b/vendor/google.golang.org/grpc/backoff/backoff.go
    @@ -39,7 +39,7 @@ type Config struct {
     	MaxDelay time.Duration
     }
     
    -// DefaultConfig is a backoff configuration with the default values specfied
    +// DefaultConfig is a backoff configuration with the default values specified
     // at https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.
     //
     // This should be useful for callers who want to configure backoff with
    diff --git a/vendor/google.golang.org/grpc/balancer/balancer.go b/vendor/google.golang.org/grpc/balancer/balancer.go
    index f391744f7299..382ad694110f 100644
    --- a/vendor/google.golang.org/grpc/balancer/balancer.go
    +++ b/vendor/google.golang.org/grpc/balancer/balancer.go
    @@ -30,6 +30,7 @@ import (
     	"google.golang.org/grpc/channelz"
     	"google.golang.org/grpc/connectivity"
     	"google.golang.org/grpc/credentials"
    +	estats "google.golang.org/grpc/experimental/stats"
     	"google.golang.org/grpc/grpclog"
     	"google.golang.org/grpc/internal"
     	"google.golang.org/grpc/metadata"
    @@ -74,6 +75,8 @@ func unregisterForTesting(name string) {
     
     func init() {
     	internal.BalancerUnregister = unregisterForTesting
    +	internal.ConnectedAddress = connectedAddress
    +	internal.SetConnectedAddress = setConnectedAddress
     }
     
     // Get returns the resolver builder registered with the given name.
    @@ -92,54 +95,6 @@ func Get(name string) Builder {
     	return nil
     }
     
    -// A SubConn represents a single connection to a gRPC backend service.
    -//
    -// Each SubConn contains a list of addresses.
    -//
    -// All SubConns start in IDLE, and will not try to connect. To trigger the
    -// connecting, Balancers must call Connect.  If a connection re-enters IDLE,
    -// Balancers must call Connect again to trigger a new connection attempt.
    -//
    -// gRPC will try to connect to the addresses in sequence, and stop trying the
    -// remainder once the first connection is successful. If an attempt to connect
    -// to all addresses encounters an error, the SubConn will enter
    -// TRANSIENT_FAILURE for a backoff period, and then transition to IDLE.
    -//
    -// Once established, if a connection is lost, the SubConn will transition
    -// directly to IDLE.
    -//
    -// This interface is to be implemented by gRPC. Users should not need their own
    -// implementation of this interface. For situations like testing, any
    -// implementations should embed this interface. This allows gRPC to add new
    -// methods to this interface.
    -type SubConn interface {
    -	// UpdateAddresses updates the addresses used in this SubConn.
    -	// gRPC checks if currently-connected address is still in the new list.
    -	// If it's in the list, the connection will be kept.
    -	// If it's not in the list, the connection will gracefully closed, and
    -	// a new connection will be created.
    -	//
    -	// This will trigger a state transition for the SubConn.
    -	//
    -	// Deprecated: this method will be removed.  Create new SubConns for new
    -	// addresses instead.
    -	UpdateAddresses([]resolver.Address)
    -	// Connect starts the connecting for this SubConn.
    -	Connect()
    -	// GetOrBuildProducer returns a reference to the existing Producer for this
    -	// ProducerBuilder in this SubConn, or, if one does not currently exist,
    -	// creates a new one and returns it.  Returns a close function which must
    -	// be called when the Producer is no longer needed.
    -	GetOrBuildProducer(ProducerBuilder) (p Producer, close func())
    -	// Shutdown shuts down the SubConn gracefully.  Any started RPCs will be
    -	// allowed to complete.  No future calls should be made on the SubConn.
    -	// One final state update will be delivered to the StateListener (or
    -	// UpdateSubConnState; deprecated) with ConnectivityState of Shutdown to
    -	// indicate the shutdown operation.  This may be delivered before
    -	// in-progress RPCs are complete and the actual connection is closed.
    -	Shutdown()
    -}
    -
     // NewSubConnOptions contains options to create new SubConn.
     type NewSubConnOptions struct {
     	// CredsBundle is the credentials bundle that will be used in the created
    @@ -243,6 +198,10 @@ type BuildOptions struct {
     	// same resolver.Target as passed to the resolver. See the documentation for
     	// the resolver.Target type for details about what it contains.
     	Target resolver.Target
    +	// MetricsRecorder is the metrics recorder that balancers can use to record
    +	// metrics. Balancer implementations which do not register metrics on
    +	// metrics registry and record on them can ignore this field.
    +	MetricsRecorder estats.MetricsRecorder
     }
     
     // Builder creates a balancer.
    @@ -403,15 +362,6 @@ type ExitIdler interface {
     	ExitIdle()
     }
     
    -// SubConnState describes the state of a SubConn.
    -type SubConnState struct {
    -	// ConnectivityState is the connectivity state of the SubConn.
    -	ConnectivityState connectivity.State
    -	// ConnectionError is set if the ConnectivityState is TransientFailure,
    -	// describing the reason the SubConn failed.  Otherwise, it is nil.
    -	ConnectionError error
    -}
    -
     // ClientConnState describes the state of a ClientConn relevant to the
     // balancer.
     type ClientConnState struct {
    @@ -424,20 +374,3 @@ type ClientConnState struct {
     // ErrBadResolverState may be returned by UpdateClientConnState to indicate a
     // problem with the provided name resolver data.
     var ErrBadResolverState = errors.New("bad resolver state")
    -
    -// A ProducerBuilder is a simple constructor for a Producer.  It is used by the
    -// SubConn to create producers when needed.
    -type ProducerBuilder interface {
    -	// Build creates a Producer.  The first parameter is always a
    -	// grpc.ClientConnInterface (a type to allow creating RPCs/streams on the
    -	// associated SubConn), but is declared as `any` to avoid a dependency
    -	// cycle.  Should also return a close function that will be called when all
    -	// references to the Producer have been given up.
    -	Build(grpcClientConnInterface any) (p Producer, close func())
    -}
    -
    -// A Producer is a type shared among potentially many consumers.  It is
    -// associated with a SubConn, and an implementation will typically contain
    -// other methods to provide additional functionality, e.g. configuration or
    -// subscription registration.
    -type Producer any
    diff --git a/vendor/google.golang.org/grpc/balancer/base/balancer.go b/vendor/google.golang.org/grpc/balancer/base/balancer.go
    index a7f1eeec8e6a..d5ed172ae695 100644
    --- a/vendor/google.golang.org/grpc/balancer/base/balancer.go
    +++ b/vendor/google.golang.org/grpc/balancer/base/balancer.go
    @@ -36,7 +36,7 @@ type baseBuilder struct {
     	config        Config
     }
     
    -func (bb *baseBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) balancer.Balancer {
    +func (bb *baseBuilder) Build(cc balancer.ClientConn, _ balancer.BuildOptions) balancer.Balancer {
     	bal := &baseBalancer{
     		cc:            cc,
     		pickerBuilder: bb.pickerBuilder,
    @@ -133,7 +133,7 @@ func (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) error {
     		}
     	}
     	// If resolver state contains no addresses, return an error so ClientConn
    -	// will trigger re-resolve. Also records this as an resolver error, so when
    +	// will trigger re-resolve. Also records this as a resolver error, so when
     	// the overall state turns transient failure, the error message will have
     	// the zero address information.
     	if len(s.ResolverState.Addresses) == 0 {
    @@ -259,6 +259,6 @@ type errPicker struct {
     	err error // Pick() always returns this err.
     }
     
    -func (p *errPicker) Pick(info balancer.PickInfo) (balancer.PickResult, error) {
    +func (p *errPicker) Pick(balancer.PickInfo) (balancer.PickResult, error) {
     	return balancer.PickResult{}, p.err
     }
    diff --git a/vendor/google.golang.org/grpc/balancer/pickfirst/internal/internal.go b/vendor/google.golang.org/grpc/balancer/pickfirst/internal/internal.go
    new file mode 100644
    index 000000000000..7d66cb491c40
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/balancer/pickfirst/internal/internal.go
    @@ -0,0 +1,35 @@
    +/*
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +// Package internal contains code internal to the pickfirst package.
    +package internal
    +
    +import (
    +	rand "math/rand/v2"
    +	"time"
    +)
    +
    +var (
    +	// RandShuffle pseudo-randomizes the order of addresses.
    +	RandShuffle = rand.Shuffle
    +	// TimeAfterFunc allows mocking the timer for testing connection delay
    +	// related functionality.
    +	TimeAfterFunc = func(d time.Duration, f func()) func() {
    +		timer := time.AfterFunc(d, f)
    +		return func() { timer.Stop() }
    +	}
    +)
    diff --git a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go
    index 07527603f1d4..ea8899818c22 100644
    --- a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go
    +++ b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go
    @@ -23,21 +23,26 @@ import (
     	"encoding/json"
     	"errors"
     	"fmt"
    -	"math/rand"
    +	rand "math/rand/v2"
     
     	"google.golang.org/grpc/balancer"
    +	"google.golang.org/grpc/balancer/pickfirst/internal"
     	"google.golang.org/grpc/connectivity"
     	"google.golang.org/grpc/grpclog"
    -	"google.golang.org/grpc/internal"
    +	"google.golang.org/grpc/internal/envconfig"
     	internalgrpclog "google.golang.org/grpc/internal/grpclog"
     	"google.golang.org/grpc/internal/pretty"
     	"google.golang.org/grpc/resolver"
     	"google.golang.org/grpc/serviceconfig"
    +
    +	_ "google.golang.org/grpc/balancer/pickfirst/pickfirstleaf" // For automatically registering the new pickfirst if required.
     )
     
     func init() {
    +	if envconfig.NewPickFirstEnabled {
    +		return
    +	}
     	balancer.Register(pickfirstBuilder{})
    -	internal.ShuffleAddressListForTesting = func(n int, swap func(i, j int)) { rand.Shuffle(n, swap) }
     }
     
     var logger = grpclog.Component("pick-first-lb")
    @@ -50,7 +55,7 @@ const (
     
     type pickfirstBuilder struct{}
     
    -func (pickfirstBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) balancer.Balancer {
    +func (pickfirstBuilder) Build(cc balancer.ClientConn, _ balancer.BuildOptions) balancer.Balancer {
     	b := &pickfirstBalancer{cc: cc}
     	b.logger = internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(logPrefix, b))
     	return b
    @@ -103,10 +108,13 @@ func (b *pickfirstBalancer) ResolverError(err error) {
     	})
     }
     
    +// Shuffler is an interface for shuffling an address list.
     type Shuffler interface {
     	ShuffleAddressListForTesting(n int, swap func(i, j int))
     }
     
    +// ShuffleAddressListForTesting pseudo-randomizes the order of addresses.  n
    +// is the number of elements.  swap swaps the elements with indexes i and j.
     func ShuffleAddressListForTesting(n int, swap func(i, j int)) { rand.Shuffle(n, swap) }
     
     func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error {
    @@ -140,7 +148,7 @@ func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState
     		// within each endpoint. - A61
     		if cfg.ShuffleAddressList {
     			endpoints = append([]resolver.Endpoint{}, endpoints...)
    -			internal.ShuffleAddressListForTesting.(func(int, func(int, int)))(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] })
    +			internal.RandShuffle(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] })
     		}
     
     		// "Flatten the list by concatenating the ordered list of addresses for each
    @@ -155,7 +163,7 @@ func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState
     		// Endpoints not set, process addresses until we migrate resolver
     		// emissions fully to Endpoints. The top channel does wrap emitted
     		// addresses with endpoints, however some balancers such as weighted
    -		// target do not forwarrd the corresponding correct endpoints down/split
    +		// target do not forward the corresponding correct endpoints down/split
     		// endpoints properly. Once all balancers correctly forward endpoints
     		// down, can delete this else conditional.
     		addrs = state.ResolverState.Addresses
    diff --git a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go
    new file mode 100644
    index 000000000000..2fc0a71f9441
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go
    @@ -0,0 +1,911 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +// Package pickfirstleaf contains the pick_first load balancing policy which
    +// will be the universal leaf policy after dualstack changes are implemented.
    +//
    +// # Experimental
    +//
    +// Notice: This package is EXPERIMENTAL and may be changed or removed in a
    +// later release.
    +package pickfirstleaf
    +
    +import (
    +	"encoding/json"
    +	"errors"
    +	"fmt"
    +	"net"
    +	"net/netip"
    +	"sync"
    +	"time"
    +
    +	"google.golang.org/grpc/balancer"
    +	"google.golang.org/grpc/balancer/pickfirst/internal"
    +	"google.golang.org/grpc/connectivity"
    +	expstats "google.golang.org/grpc/experimental/stats"
    +	"google.golang.org/grpc/grpclog"
    +	"google.golang.org/grpc/internal/envconfig"
    +	internalgrpclog "google.golang.org/grpc/internal/grpclog"
    +	"google.golang.org/grpc/internal/pretty"
    +	"google.golang.org/grpc/resolver"
    +	"google.golang.org/grpc/serviceconfig"
    +)
    +
    +func init() {
    +	if envconfig.NewPickFirstEnabled {
    +		// Register as the default pick_first balancer.
    +		Name = "pick_first"
    +	}
    +	balancer.Register(pickfirstBuilder{})
    +}
    +
    +// enableHealthListenerKeyType is a unique key type used in resolver attributes
    +// to indicate whether the health listener usage is enabled.
    +type enableHealthListenerKeyType struct{}
    +
    +var (
    +	logger = grpclog.Component("pick-first-leaf-lb")
    +	// Name is the name of the pick_first_leaf balancer.
    +	// It is changed to "pick_first" in init() if this balancer is to be
    +	// registered as the default pickfirst.
    +	Name                 = "pick_first_leaf"
    +	disconnectionsMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
    +		Name:        "grpc.lb.pick_first.disconnections",
    +		Description: "EXPERIMENTAL. Number of times the selected subchannel becomes disconnected.",
    +		Unit:        "disconnection",
    +		Labels:      []string{"grpc.target"},
    +		Default:     false,
    +	})
    +	connectionAttemptsSucceededMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
    +		Name:        "grpc.lb.pick_first.connection_attempts_succeeded",
    +		Description: "EXPERIMENTAL. Number of successful connection attempts.",
    +		Unit:        "attempt",
    +		Labels:      []string{"grpc.target"},
    +		Default:     false,
    +	})
    +	connectionAttemptsFailedMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
    +		Name:        "grpc.lb.pick_first.connection_attempts_failed",
    +		Description: "EXPERIMENTAL. Number of failed connection attempts.",
    +		Unit:        "attempt",
    +		Labels:      []string{"grpc.target"},
    +		Default:     false,
    +	})
    +)
    +
    +const (
    +	// TODO: change to pick-first when this becomes the default pick_first policy.
    +	logPrefix = "[pick-first-leaf-lb %p] "
    +	// connectionDelayInterval is the time to wait for during the happy eyeballs
    +	// pass before starting the next connection attempt.
    +	connectionDelayInterval = 250 * time.Millisecond
    +)
    +
    +type ipAddrFamily int
    +
    +const (
    +	// ipAddrFamilyUnknown represents strings that can't be parsed as an IP
    +	// address.
    +	ipAddrFamilyUnknown ipAddrFamily = iota
    +	ipAddrFamilyV4
    +	ipAddrFamilyV6
    +)
    +
    +type pickfirstBuilder struct{}
    +
    +func (pickfirstBuilder) Build(cc balancer.ClientConn, bo balancer.BuildOptions) balancer.Balancer {
    +	b := &pickfirstBalancer{
    +		cc:              cc,
    +		target:          bo.Target.String(),
    +		metricsRecorder: bo.MetricsRecorder, // ClientConn will always create a Metrics Recorder.
    +
    +		subConns:              resolver.NewAddressMap(),
    +		state:                 connectivity.Connecting,
    +		cancelConnectionTimer: func() {},
    +	}
    +	b.logger = internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(logPrefix, b))
    +	return b
    +}
    +
    +func (b pickfirstBuilder) Name() string {
    +	return Name
    +}
    +
    +func (pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {
    +	var cfg pfConfig
    +	if err := json.Unmarshal(js, &cfg); err != nil {
    +		return nil, fmt.Errorf("pickfirst: unable to unmarshal LB policy config: %s, error: %v", string(js), err)
    +	}
    +	return cfg, nil
    +}
    +
    +// EnableHealthListener updates the state to configure pickfirst for using a
    +// generic health listener.
    +func EnableHealthListener(state resolver.State) resolver.State {
    +	state.Attributes = state.Attributes.WithValue(enableHealthListenerKeyType{}, true)
    +	return state
    +}
    +
    +type pfConfig struct {
    +	serviceconfig.LoadBalancingConfig `json:"-"`
    +
    +	// If set to true, instructs the LB policy to shuffle the order of the list
    +	// of endpoints received from the name resolver before attempting to
    +	// connect to them.
    +	ShuffleAddressList bool `json:"shuffleAddressList"`
    +}
    +
    +// scData keeps track of the current state of the subConn.
    +// It is not safe for concurrent access.
    +type scData struct {
    +	// The following fields are initialized at build time and read-only after
    +	// that.
    +	subConn balancer.SubConn
    +	addr    resolver.Address
    +
    +	rawConnectivityState connectivity.State
    +	// The effective connectivity state based on raw connectivity, health state
    +	// and after following sticky TransientFailure behaviour defined in A62.
    +	effectiveState              connectivity.State
    +	lastErr                     error
    +	connectionFailedInFirstPass bool
    +}
    +
    +func (b *pickfirstBalancer) newSCData(addr resolver.Address) (*scData, error) {
    +	sd := &scData{
    +		rawConnectivityState: connectivity.Idle,
    +		effectiveState:       connectivity.Idle,
    +		addr:                 addr,
    +	}
    +	sc, err := b.cc.NewSubConn([]resolver.Address{addr}, balancer.NewSubConnOptions{
    +		StateListener: func(state balancer.SubConnState) {
    +			b.updateSubConnState(sd, state)
    +		},
    +	})
    +	if err != nil {
    +		return nil, err
    +	}
    +	sd.subConn = sc
    +	return sd, nil
    +}
    +
    +type pickfirstBalancer struct {
    +	// The following fields are initialized at build time and read-only after
    +	// that and therefore do not need to be guarded by a mutex.
    +	logger          *internalgrpclog.PrefixLogger
    +	cc              balancer.ClientConn
    +	target          string
    +	metricsRecorder expstats.MetricsRecorder // guaranteed to be non nil
    +
    +	// The mutex is used to ensure synchronization of updates triggered
    +	// from the idle picker and the already serialized resolver,
    +	// SubConn state updates.
    +	mu sync.Mutex
    +	// State reported to the channel based on SubConn states and resolver
    +	// updates.
    +	state connectivity.State
    +	// scData for active subonns mapped by address.
    +	subConns              *resolver.AddressMap
    +	addressList           addressList
    +	firstPass             bool
    +	numTF                 int
    +	cancelConnectionTimer func()
    +	healthCheckingEnabled bool
    +}
    +
    +// ResolverError is called by the ClientConn when the name resolver produces
    +// an error or when pickfirst determined the resolver update to be invalid.
    +func (b *pickfirstBalancer) ResolverError(err error) {
    +	b.mu.Lock()
    +	defer b.mu.Unlock()
    +	b.resolverErrorLocked(err)
    +}
    +
    +func (b *pickfirstBalancer) resolverErrorLocked(err error) {
    +	if b.logger.V(2) {
    +		b.logger.Infof("Received error from the name resolver: %v", err)
    +	}
    +
    +	// The picker will not change since the balancer does not currently
    +	// report an error. If the balancer hasn't received a single good resolver
    +	// update yet, transition to TRANSIENT_FAILURE.
    +	if b.state != connectivity.TransientFailure && b.addressList.size() > 0 {
    +		if b.logger.V(2) {
    +			b.logger.Infof("Ignoring resolver error because balancer is using a previous good update.")
    +		}
    +		return
    +	}
    +
    +	b.updateBalancerState(balancer.State{
    +		ConnectivityState: connectivity.TransientFailure,
    +		Picker:            &picker{err: fmt.Errorf("name resolver error: %v", err)},
    +	})
    +}
    +
    +func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error {
    +	b.mu.Lock()
    +	defer b.mu.Unlock()
    +	b.cancelConnectionTimer()
    +	if len(state.ResolverState.Addresses) == 0 && len(state.ResolverState.Endpoints) == 0 {
    +		// Cleanup state pertaining to the previous resolver state.
    +		// Treat an empty address list like an error by calling b.ResolverError.
    +		b.closeSubConnsLocked()
    +		b.addressList.updateAddrs(nil)
    +		b.resolverErrorLocked(errors.New("produced zero addresses"))
    +		return balancer.ErrBadResolverState
    +	}
    +	b.healthCheckingEnabled = state.ResolverState.Attributes.Value(enableHealthListenerKeyType{}) != nil
    +	cfg, ok := state.BalancerConfig.(pfConfig)
    +	if state.BalancerConfig != nil && !ok {
    +		return fmt.Errorf("pickfirst: received illegal BalancerConfig (type %T): %v: %w", state.BalancerConfig, state.BalancerConfig, balancer.ErrBadResolverState)
    +	}
    +
    +	if b.logger.V(2) {
    +		b.logger.Infof("Received new config %s, resolver state %s", pretty.ToJSON(cfg), pretty.ToJSON(state.ResolverState))
    +	}
    +
    +	var newAddrs []resolver.Address
    +	if endpoints := state.ResolverState.Endpoints; len(endpoints) != 0 {
    +		// Perform the optional shuffling described in gRFC A62. The shuffling
    +		// will change the order of endpoints but not touch the order of the
    +		// addresses within each endpoint. - A61
    +		if cfg.ShuffleAddressList {
    +			endpoints = append([]resolver.Endpoint{}, endpoints...)
    +			internal.RandShuffle(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] })
    +		}
    +
    +		// "Flatten the list by concatenating the ordered list of addresses for
    +		// each of the endpoints, in order." - A61
    +		for _, endpoint := range endpoints {
    +			newAddrs = append(newAddrs, endpoint.Addresses...)
    +		}
    +	} else {
    +		// Endpoints not set, process addresses until we migrate resolver
    +		// emissions fully to Endpoints. The top channel does wrap emitted
    +		// addresses with endpoints, however some balancers such as weighted
    +		// target do not forward the corresponding correct endpoints down/split
    +		// endpoints properly. Once all balancers correctly forward endpoints
    +		// down, can delete this else conditional.
    +		newAddrs = state.ResolverState.Addresses
    +		if cfg.ShuffleAddressList {
    +			newAddrs = append([]resolver.Address{}, newAddrs...)
    +			internal.RandShuffle(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] })
    +		}
    +	}
    +
    +	// If an address appears in multiple endpoints or in the same endpoint
    +	// multiple times, we keep it only once. We will create only one SubConn
    +	// for the address because an AddressMap is used to store SubConns.
    +	// Not de-duplicating would result in attempting to connect to the same
    +	// SubConn multiple times in the same pass. We don't want this.
    +	newAddrs = deDupAddresses(newAddrs)
    +	newAddrs = interleaveAddresses(newAddrs)
    +
    +	prevAddr := b.addressList.currentAddress()
    +	prevSCData, found := b.subConns.Get(prevAddr)
    +	prevAddrsCount := b.addressList.size()
    +	isPrevRawConnectivityStateReady := found && prevSCData.(*scData).rawConnectivityState == connectivity.Ready
    +	b.addressList.updateAddrs(newAddrs)
    +
    +	// If the previous ready SubConn exists in new address list,
    +	// keep this connection and don't create new SubConns.
    +	if isPrevRawConnectivityStateReady && b.addressList.seekTo(prevAddr) {
    +		return nil
    +	}
    +
    +	b.reconcileSubConnsLocked(newAddrs)
    +	// If it's the first resolver update or the balancer was already READY
    +	// (but the new address list does not contain the ready SubConn) or
    +	// CONNECTING, enter CONNECTING.
    +	// We may be in TRANSIENT_FAILURE due to a previous empty address list,
    +	// we should still enter CONNECTING because the sticky TF behaviour
    +	//  mentioned in A62 applies only when the TRANSIENT_FAILURE is reported
    +	// due to connectivity failures.
    +	if isPrevRawConnectivityStateReady || b.state == connectivity.Connecting || prevAddrsCount == 0 {
    +		// Start connection attempt at first address.
    +		b.forceUpdateConcludedStateLocked(balancer.State{
    +			ConnectivityState: connectivity.Connecting,
    +			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
    +		})
    +		b.startFirstPassLocked()
    +	} else if b.state == connectivity.TransientFailure {
    +		// If we're in TRANSIENT_FAILURE, we stay in TRANSIENT_FAILURE until
    +		// we're READY. See A62.
    +		b.startFirstPassLocked()
    +	}
    +	return nil
    +}
    +
    +// UpdateSubConnState is unused as a StateListener is always registered when
    +// creating SubConns.
    +func (b *pickfirstBalancer) UpdateSubConnState(subConn balancer.SubConn, state balancer.SubConnState) {
    +	b.logger.Errorf("UpdateSubConnState(%v, %+v) called unexpectedly", subConn, state)
    +}
    +
    +func (b *pickfirstBalancer) Close() {
    +	b.mu.Lock()
    +	defer b.mu.Unlock()
    +	b.closeSubConnsLocked()
    +	b.cancelConnectionTimer()
    +	b.state = connectivity.Shutdown
    +}
    +
    +// ExitIdle moves the balancer out of idle state. It can be called concurrently
    +// by the idlePicker and clientConn so access to variables should be
    +// synchronized.
    +func (b *pickfirstBalancer) ExitIdle() {
    +	b.mu.Lock()
    +	defer b.mu.Unlock()
    +	if b.state == connectivity.Idle {
    +		b.startFirstPassLocked()
    +	}
    +}
    +
    +func (b *pickfirstBalancer) startFirstPassLocked() {
    +	b.firstPass = true
    +	b.numTF = 0
    +	// Reset the connection attempt record for existing SubConns.
    +	for _, sd := range b.subConns.Values() {
    +		sd.(*scData).connectionFailedInFirstPass = false
    +	}
    +	b.requestConnectionLocked()
    +}
    +
    +func (b *pickfirstBalancer) closeSubConnsLocked() {
    +	for _, sd := range b.subConns.Values() {
    +		sd.(*scData).subConn.Shutdown()
    +	}
    +	b.subConns = resolver.NewAddressMap()
    +}
    +
    +// deDupAddresses ensures that each address appears only once in the slice.
    +func deDupAddresses(addrs []resolver.Address) []resolver.Address {
    +	seenAddrs := resolver.NewAddressMap()
    +	retAddrs := []resolver.Address{}
    +
    +	for _, addr := range addrs {
    +		if _, ok := seenAddrs.Get(addr); ok {
    +			continue
    +		}
    +		retAddrs = append(retAddrs, addr)
    +	}
    +	return retAddrs
    +}
    +
    +// interleaveAddresses interleaves addresses of both families (IPv4 and IPv6)
    +// as per RFC-8305 section 4.
    +// Whichever address family is first in the list is followed by an address of
    +// the other address family; that is, if the first address in the list is IPv6,
    +// then the first IPv4 address should be moved up in the list to be second in
    +// the list. It doesn't support configuring "First Address Family Count", i.e.
    +// there will always be a single member of the first address family at the
    +// beginning of the interleaved list.
    +// Addresses that are neither IPv4 nor IPv6 are treated as part of a third
    +// "unknown" family for interleaving.
    +// See: https://datatracker.ietf.org/doc/html/rfc8305#autoid-6
    +func interleaveAddresses(addrs []resolver.Address) []resolver.Address {
    +	familyAddrsMap := map[ipAddrFamily][]resolver.Address{}
    +	interleavingOrder := []ipAddrFamily{}
    +	for _, addr := range addrs {
    +		family := addressFamily(addr.Addr)
    +		if _, found := familyAddrsMap[family]; !found {
    +			interleavingOrder = append(interleavingOrder, family)
    +		}
    +		familyAddrsMap[family] = append(familyAddrsMap[family], addr)
    +	}
    +
    +	interleavedAddrs := make([]resolver.Address, 0, len(addrs))
    +
    +	for curFamilyIdx := 0; len(interleavedAddrs) < len(addrs); curFamilyIdx = (curFamilyIdx + 1) % len(interleavingOrder) {
    +		// Some IP types may have fewer addresses than others, so we look for
    +		// the next type that has a remaining member to add to the interleaved
    +		// list.
    +		family := interleavingOrder[curFamilyIdx]
    +		remainingMembers := familyAddrsMap[family]
    +		if len(remainingMembers) > 0 {
    +			interleavedAddrs = append(interleavedAddrs, remainingMembers[0])
    +			familyAddrsMap[family] = remainingMembers[1:]
    +		}
    +	}
    +
    +	return interleavedAddrs
    +}
    +
    +// addressFamily returns the ipAddrFamily after parsing the address string.
    +// If the address isn't of the format "ip-address:port", it returns
    +// ipAddrFamilyUnknown. The address may be valid even if it's not an IP when
    +// using a resolver like passthrough where the address may be a hostname in
    +// some format that the dialer can resolve.
    +func addressFamily(address string) ipAddrFamily {
    +	// Parse the IP after removing the port.
    +	host, _, err := net.SplitHostPort(address)
    +	if err != nil {
    +		return ipAddrFamilyUnknown
    +	}
    +	ip, err := netip.ParseAddr(host)
    +	if err != nil {
    +		return ipAddrFamilyUnknown
    +	}
    +	switch {
    +	case ip.Is4() || ip.Is4In6():
    +		return ipAddrFamilyV4
    +	case ip.Is6():
    +		return ipAddrFamilyV6
    +	default:
    +		return ipAddrFamilyUnknown
    +	}
    +}
    +
    +// reconcileSubConnsLocked updates the active subchannels based on a new address
    +// list from the resolver. It does this by:
    +//   - closing subchannels: any existing subchannels associated with addresses
    +//     that are no longer in the updated list are shut down.
    +//   - removing subchannels: entries for these closed subchannels are removed
    +//     from the subchannel map.
    +//
    +// This ensures that the subchannel map accurately reflects the current set of
    +// addresses received from the name resolver.
    +func (b *pickfirstBalancer) reconcileSubConnsLocked(newAddrs []resolver.Address) {
    +	newAddrsMap := resolver.NewAddressMap()
    +	for _, addr := range newAddrs {
    +		newAddrsMap.Set(addr, true)
    +	}
    +
    +	for _, oldAddr := range b.subConns.Keys() {
    +		if _, ok := newAddrsMap.Get(oldAddr); ok {
    +			continue
    +		}
    +		val, _ := b.subConns.Get(oldAddr)
    +		val.(*scData).subConn.Shutdown()
    +		b.subConns.Delete(oldAddr)
    +	}
    +}
    +
    +// shutdownRemainingLocked shuts down remaining subConns. Called when a subConn
    +// becomes ready, which means that all other subConn must be shutdown.
    +func (b *pickfirstBalancer) shutdownRemainingLocked(selected *scData) {
    +	b.cancelConnectionTimer()
    +	for _, v := range b.subConns.Values() {
    +		sd := v.(*scData)
    +		if sd.subConn != selected.subConn {
    +			sd.subConn.Shutdown()
    +		}
    +	}
    +	b.subConns = resolver.NewAddressMap()
    +	b.subConns.Set(selected.addr, selected)
    +}
    +
    +// requestConnectionLocked starts connecting on the subchannel corresponding to
    +// the current address. If no subchannel exists, one is created. If the current
    +// subchannel is in TransientFailure, a connection to the next address is
    +// attempted until a subchannel is found.
    +func (b *pickfirstBalancer) requestConnectionLocked() {
    +	if !b.addressList.isValid() {
    +		return
    +	}
    +	var lastErr error
    +	for valid := true; valid; valid = b.addressList.increment() {
    +		curAddr := b.addressList.currentAddress()
    +		sd, ok := b.subConns.Get(curAddr)
    +		if !ok {
    +			var err error
    +			// We want to assign the new scData to sd from the outer scope,
    +			// hence we can't use := below.
    +			sd, err = b.newSCData(curAddr)
    +			if err != nil {
    +				// This should never happen, unless the clientConn is being shut
    +				// down.
    +				if b.logger.V(2) {
    +					b.logger.Infof("Failed to create a subConn for address %v: %v", curAddr.String(), err)
    +				}
    +				// Do nothing, the LB policy will be closed soon.
    +				return
    +			}
    +			b.subConns.Set(curAddr, sd)
    +		}
    +
    +		scd := sd.(*scData)
    +		switch scd.rawConnectivityState {
    +		case connectivity.Idle:
    +			scd.subConn.Connect()
    +			b.scheduleNextConnectionLocked()
    +			return
    +		case connectivity.TransientFailure:
    +			// The SubConn is being re-used and failed during a previous pass
    +			// over the addressList. It has not completed backoff yet.
    +			// Mark it as having failed and try the next address.
    +			scd.connectionFailedInFirstPass = true
    +			lastErr = scd.lastErr
    +			continue
    +		case connectivity.Connecting:
    +			// Wait for the connection attempt to complete or the timer to fire
    +			// before attempting the next address.
    +			b.scheduleNextConnectionLocked()
    +			return
    +		default:
    +			b.logger.Errorf("SubConn with unexpected state %v present in SubConns map.", scd.rawConnectivityState)
    +			return
    +
    +		}
    +	}
    +
    +	// All the remaining addresses in the list are in TRANSIENT_FAILURE, end the
    +	// first pass if possible.
    +	b.endFirstPassIfPossibleLocked(lastErr)
    +}
    +
    +func (b *pickfirstBalancer) scheduleNextConnectionLocked() {
    +	b.cancelConnectionTimer()
    +	if !b.addressList.hasNext() {
    +		return
    +	}
    +	curAddr := b.addressList.currentAddress()
    +	cancelled := false // Access to this is protected by the balancer's mutex.
    +	closeFn := internal.TimeAfterFunc(connectionDelayInterval, func() {
    +		b.mu.Lock()
    +		defer b.mu.Unlock()
    +		// If the scheduled task is cancelled while acquiring the mutex, return.
    +		if cancelled {
    +			return
    +		}
    +		if b.logger.V(2) {
    +			b.logger.Infof("Happy Eyeballs timer expired while waiting for connection to %q.", curAddr.Addr)
    +		}
    +		if b.addressList.increment() {
    +			b.requestConnectionLocked()
    +		}
    +	})
    +	// Access to the cancellation callback held by the balancer is guarded by
    +	// the balancer's mutex, so it's safe to set the boolean from the callback.
    +	b.cancelConnectionTimer = sync.OnceFunc(func() {
    +		cancelled = true
    +		closeFn()
    +	})
    +}
    +
    +func (b *pickfirstBalancer) updateSubConnState(sd *scData, newState balancer.SubConnState) {
    +	b.mu.Lock()
    +	defer b.mu.Unlock()
    +	oldState := sd.rawConnectivityState
    +	sd.rawConnectivityState = newState.ConnectivityState
    +	// Previously relevant SubConns can still callback with state updates.
    +	// To prevent pickers from returning these obsolete SubConns, this logic
    +	// is included to check if the current list of active SubConns includes this
    +	// SubConn.
    +	if !b.isActiveSCData(sd) {
    +		return
    +	}
    +	if newState.ConnectivityState == connectivity.Shutdown {
    +		sd.effectiveState = connectivity.Shutdown
    +		return
    +	}
    +
    +	// Record a connection attempt when exiting CONNECTING.
    +	if newState.ConnectivityState == connectivity.TransientFailure {
    +		sd.connectionFailedInFirstPass = true
    +		connectionAttemptsFailedMetric.Record(b.metricsRecorder, 1, b.target)
    +	}
    +
    +	if newState.ConnectivityState == connectivity.Ready {
    +		connectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)
    +		b.shutdownRemainingLocked(sd)
    +		if !b.addressList.seekTo(sd.addr) {
    +			// This should not fail as we should have only one SubConn after
    +			// entering READY. The SubConn should be present in the addressList.
    +			b.logger.Errorf("Address %q not found address list in  %v", sd.addr, b.addressList.addresses)
    +			return
    +		}
    +		if !b.healthCheckingEnabled {
    +			if b.logger.V(2) {
    +				b.logger.Infof("SubConn %p reported connectivity state READY and the health listener is disabled. Transitioning SubConn to READY.", sd.subConn)
    +			}
    +
    +			sd.effectiveState = connectivity.Ready
    +			b.updateBalancerState(balancer.State{
    +				ConnectivityState: connectivity.Ready,
    +				Picker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},
    +			})
    +			return
    +		}
    +		if b.logger.V(2) {
    +			b.logger.Infof("SubConn %p reported connectivity state READY. Registering health listener.", sd.subConn)
    +		}
    +		// Send a CONNECTING update to take the SubConn out of sticky-TF if
    +		// required.
    +		sd.effectiveState = connectivity.Connecting
    +		b.updateBalancerState(balancer.State{
    +			ConnectivityState: connectivity.Connecting,
    +			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
    +		})
    +		sd.subConn.RegisterHealthListener(func(scs balancer.SubConnState) {
    +			b.updateSubConnHealthState(sd, scs)
    +		})
    +		return
    +	}
    +
    +	// If the LB policy is READY, and it receives a subchannel state change,
    +	// it means that the READY subchannel has failed.
    +	// A SubConn can also transition from CONNECTING directly to IDLE when
    +	// a transport is successfully created, but the connection fails
    +	// before the SubConn can send the notification for READY. We treat
    +	// this as a successful connection and transition to IDLE.
    +	// TODO: https://github.com/grpc/grpc-go/issues/7862 - Remove the second
    +	// part of the if condition below once the issue is fixed.
    +	if oldState == connectivity.Ready || (oldState == connectivity.Connecting && newState.ConnectivityState == connectivity.Idle) {
    +		// Once a transport fails, the balancer enters IDLE and starts from
    +		// the first address when the picker is used.
    +		b.shutdownRemainingLocked(sd)
    +		sd.effectiveState = newState.ConnectivityState
    +		// READY SubConn interspliced in between CONNECTING and IDLE, need to
    +		// account for that.
    +		if oldState == connectivity.Connecting {
    +			// A known issue (https://github.com/grpc/grpc-go/issues/7862)
    +			// causes a race that prevents the READY state change notification.
    +			// This works around it.
    +			connectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)
    +		}
    +		disconnectionsMetric.Record(b.metricsRecorder, 1, b.target)
    +		b.addressList.reset()
    +		b.updateBalancerState(balancer.State{
    +			ConnectivityState: connectivity.Idle,
    +			Picker:            &idlePicker{exitIdle: sync.OnceFunc(b.ExitIdle)},
    +		})
    +		return
    +	}
    +
    +	if b.firstPass {
    +		switch newState.ConnectivityState {
    +		case connectivity.Connecting:
    +			// The effective state can be in either IDLE, CONNECTING or
    +			// TRANSIENT_FAILURE. If it's  TRANSIENT_FAILURE, stay in
    +			// TRANSIENT_FAILURE until it's READY. See A62.
    +			if sd.effectiveState != connectivity.TransientFailure {
    +				sd.effectiveState = connectivity.Connecting
    +				b.updateBalancerState(balancer.State{
    +					ConnectivityState: connectivity.Connecting,
    +					Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
    +				})
    +			}
    +		case connectivity.TransientFailure:
    +			sd.lastErr = newState.ConnectionError
    +			sd.effectiveState = connectivity.TransientFailure
    +			// Since we're re-using common SubConns while handling resolver
    +			// updates, we could receive an out of turn TRANSIENT_FAILURE from
    +			// a pass over the previous address list. Happy Eyeballs will also
    +			// cause out of order updates to arrive.
    +
    +			if curAddr := b.addressList.currentAddress(); equalAddressIgnoringBalAttributes(&curAddr, &sd.addr) {
    +				b.cancelConnectionTimer()
    +				if b.addressList.increment() {
    +					b.requestConnectionLocked()
    +					return
    +				}
    +			}
    +
    +			// End the first pass if we've seen a TRANSIENT_FAILURE from all
    +			// SubConns once.
    +			b.endFirstPassIfPossibleLocked(newState.ConnectionError)
    +		}
    +		return
    +	}
    +
    +	// We have finished the first pass, keep re-connecting failing SubConns.
    +	switch newState.ConnectivityState {
    +	case connectivity.TransientFailure:
    +		b.numTF = (b.numTF + 1) % b.subConns.Len()
    +		sd.lastErr = newState.ConnectionError
    +		if b.numTF%b.subConns.Len() == 0 {
    +			b.updateBalancerState(balancer.State{
    +				ConnectivityState: connectivity.TransientFailure,
    +				Picker:            &picker{err: newState.ConnectionError},
    +			})
    +		}
    +		// We don't need to request re-resolution since the SubConn already
    +		// does that before reporting TRANSIENT_FAILURE.
    +		// TODO: #7534 - Move re-resolution requests from SubConn into
    +		// pick_first.
    +	case connectivity.Idle:
    +		sd.subConn.Connect()
    +	}
    +}
    +
    +// endFirstPassIfPossibleLocked ends the first happy-eyeballs pass if all the
    +// addresses are tried and their SubConns have reported a failure.
    +func (b *pickfirstBalancer) endFirstPassIfPossibleLocked(lastErr error) {
    +	// An optimization to avoid iterating over the entire SubConn map.
    +	if b.addressList.isValid() {
    +		return
    +	}
    +	// Connect() has been called on all the SubConns. The first pass can be
    +	// ended if all the SubConns have reported a failure.
    +	for _, v := range b.subConns.Values() {
    +		sd := v.(*scData)
    +		if !sd.connectionFailedInFirstPass {
    +			return
    +		}
    +	}
    +	b.firstPass = false
    +	b.updateBalancerState(balancer.State{
    +		ConnectivityState: connectivity.TransientFailure,
    +		Picker:            &picker{err: lastErr},
    +	})
    +	// Start re-connecting all the SubConns that are already in IDLE.
    +	for _, v := range b.subConns.Values() {
    +		sd := v.(*scData)
    +		if sd.rawConnectivityState == connectivity.Idle {
    +			sd.subConn.Connect()
    +		}
    +	}
    +}
    +
    +func (b *pickfirstBalancer) isActiveSCData(sd *scData) bool {
    +	activeSD, found := b.subConns.Get(sd.addr)
    +	return found && activeSD == sd
    +}
    +
    +func (b *pickfirstBalancer) updateSubConnHealthState(sd *scData, state balancer.SubConnState) {
    +	b.mu.Lock()
    +	defer b.mu.Unlock()
    +	// Previously relevant SubConns can still callback with state updates.
    +	// To prevent pickers from returning these obsolete SubConns, this logic
    +	// is included to check if the current list of active SubConns includes
    +	// this SubConn.
    +	if !b.isActiveSCData(sd) {
    +		return
    +	}
    +	sd.effectiveState = state.ConnectivityState
    +	switch state.ConnectivityState {
    +	case connectivity.Ready:
    +		b.updateBalancerState(balancer.State{
    +			ConnectivityState: connectivity.Ready,
    +			Picker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},
    +		})
    +	case connectivity.TransientFailure:
    +		b.updateBalancerState(balancer.State{
    +			ConnectivityState: connectivity.TransientFailure,
    +			Picker:            &picker{err: fmt.Errorf("pickfirst: health check failure: %v", state.ConnectionError)},
    +		})
    +	case connectivity.Connecting:
    +		b.updateBalancerState(balancer.State{
    +			ConnectivityState: connectivity.Connecting,
    +			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
    +		})
    +	default:
    +		b.logger.Errorf("Got unexpected health update for SubConn %p: %v", state)
    +	}
    +}
    +
    +// updateBalancerState stores the state reported to the channel and calls
    +// ClientConn.UpdateState(). As an optimization, it avoids sending duplicate
    +// updates to the channel.
    +func (b *pickfirstBalancer) updateBalancerState(newState balancer.State) {
    +	// In case of TransientFailures allow the picker to be updated to update
    +	// the connectivity error, in all other cases don't send duplicate state
    +	// updates.
    +	if newState.ConnectivityState == b.state && b.state != connectivity.TransientFailure {
    +		return
    +	}
    +	b.forceUpdateConcludedStateLocked(newState)
    +}
    +
    +// forceUpdateConcludedStateLocked stores the state reported to the channel and
    +// calls ClientConn.UpdateState().
    +// A separate function is defined to force update the ClientConn state since the
    +// channel doesn't correctly assume that LB policies start in CONNECTING and
    +// relies on LB policy to send an initial CONNECTING update.
    +func (b *pickfirstBalancer) forceUpdateConcludedStateLocked(newState balancer.State) {
    +	b.state = newState.ConnectivityState
    +	b.cc.UpdateState(newState)
    +}
    +
    +type picker struct {
    +	result balancer.PickResult
    +	err    error
    +}
    +
    +func (p *picker) Pick(balancer.PickInfo) (balancer.PickResult, error) {
    +	return p.result, p.err
    +}
    +
    +// idlePicker is used when the SubConn is IDLE and kicks the SubConn into
    +// CONNECTING when Pick is called.
    +type idlePicker struct {
    +	exitIdle func()
    +}
    +
    +func (i *idlePicker) Pick(balancer.PickInfo) (balancer.PickResult, error) {
    +	i.exitIdle()
    +	return balancer.PickResult{}, balancer.ErrNoSubConnAvailable
    +}
    +
    +// addressList manages sequentially iterating over addresses present in a list
    +// of endpoints. It provides a 1 dimensional view of the addresses present in
    +// the endpoints.
    +// This type is not safe for concurrent access.
    +type addressList struct {
    +	addresses []resolver.Address
    +	idx       int
    +}
    +
    +func (al *addressList) isValid() bool {
    +	return al.idx < len(al.addresses)
    +}
    +
    +func (al *addressList) size() int {
    +	return len(al.addresses)
    +}
    +
    +// increment moves to the next index in the address list.
    +// This method returns false if it went off the list, true otherwise.
    +func (al *addressList) increment() bool {
    +	if !al.isValid() {
    +		return false
    +	}
    +	al.idx++
    +	return al.idx < len(al.addresses)
    +}
    +
    +// currentAddress returns the current address pointed to in the addressList.
    +// If the list is in an invalid state, it returns an empty address instead.
    +func (al *addressList) currentAddress() resolver.Address {
    +	if !al.isValid() {
    +		return resolver.Address{}
    +	}
    +	return al.addresses[al.idx]
    +}
    +
    +func (al *addressList) reset() {
    +	al.idx = 0
    +}
    +
    +func (al *addressList) updateAddrs(addrs []resolver.Address) {
    +	al.addresses = addrs
    +	al.reset()
    +}
    +
    +// seekTo returns false if the needle was not found and the current index was
    +// left unchanged.
    +func (al *addressList) seekTo(needle resolver.Address) bool {
    +	for ai, addr := range al.addresses {
    +		if !equalAddressIgnoringBalAttributes(&addr, &needle) {
    +			continue
    +		}
    +		al.idx = ai
    +		return true
    +	}
    +	return false
    +}
    +
    +// hasNext returns whether incrementing the addressList will result in moving
    +// past the end of the list. If the list has already moved past the end, it
    +// returns false.
    +func (al *addressList) hasNext() bool {
    +	if !al.isValid() {
    +		return false
    +	}
    +	return al.idx+1 < len(al.addresses)
    +}
    +
    +// equalAddressIgnoringBalAttributes returns true is a and b are considered
    +// equal. This is different from the Equal method on the resolver.Address type
    +// which considers all fields to determine equality. Here, we only consider
    +// fields that are meaningful to the SubConn.
    +func equalAddressIgnoringBalAttributes(a, b *resolver.Address) bool {
    +	return a.Addr == b.Addr && a.ServerName == b.ServerName &&
    +		a.Attributes.Equal(b.Attributes) &&
    +		a.Metadata == b.Metadata
    +}
    diff --git a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
    index 260255d31b6a..80a42d22510c 100644
    --- a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
    +++ b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
    @@ -22,7 +22,7 @@
     package roundrobin
     
     import (
    -	"math/rand"
    +	rand "math/rand/v2"
     	"sync/atomic"
     
     	"google.golang.org/grpc/balancer"
    @@ -60,7 +60,7 @@ func (*rrPickerBuilder) Build(info base.PickerBuildInfo) balancer.Picker {
     		// Start at a random index, as the same RR balancer rebuilds a new
     		// picker when SubConn states change, and we don't want to apply excess
     		// load to the first server in the list.
    -		next: uint32(rand.Intn(len(scs))),
    +		next: uint32(rand.IntN(len(scs))),
     	}
     }
     
    diff --git a/vendor/google.golang.org/grpc/balancer/subconn.go b/vendor/google.golang.org/grpc/balancer/subconn.go
    new file mode 100644
    index 000000000000..ea27c4fa7674
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/balancer/subconn.go
    @@ -0,0 +1,134 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +package balancer
    +
    +import (
    +	"google.golang.org/grpc/connectivity"
    +	"google.golang.org/grpc/internal"
    +	"google.golang.org/grpc/resolver"
    +)
    +
    +// A SubConn represents a single connection to a gRPC backend service.
    +//
    +// All SubConns start in IDLE, and will not try to connect. To trigger a
    +// connection attempt, Balancers must call Connect.
    +//
    +// If the connection attempt fails, the SubConn will transition to
    +// TRANSIENT_FAILURE for a backoff period, and then return to IDLE.  If the
    +// connection attempt succeeds, it will transition to READY.
    +//
    +// If a READY SubConn becomes disconnected, the SubConn will transition to IDLE.
    +//
    +// If a connection re-enters IDLE, Balancers must call Connect again to trigger
    +// a new connection attempt.
    +//
    +// Each SubConn contains a list of addresses.  gRPC will try to connect to the
    +// addresses in sequence, and stop trying the remainder once the first
    +// connection is successful.  However, this behavior is deprecated.  SubConns
    +// should only use a single address.
    +//
    +// NOTICE: This interface is intended to be implemented by gRPC, or intercepted
    +// by custom load balancing poilices.  Users should not need their own complete
    +// implementation of this interface -- they should always delegate to a SubConn
    +// returned by ClientConn.NewSubConn() by embedding it in their implementations.
    +// An embedded SubConn must never be nil, or runtime panics will occur.
    +type SubConn interface {
    +	// UpdateAddresses updates the addresses used in this SubConn.
    +	// gRPC checks if currently-connected address is still in the new list.
    +	// If it's in the list, the connection will be kept.
    +	// If it's not in the list, the connection will gracefully close, and
    +	// a new connection will be created.
    +	//
    +	// This will trigger a state transition for the SubConn.
    +	//
    +	// Deprecated: this method will be removed.  Create new SubConns for new
    +	// addresses instead.
    +	UpdateAddresses([]resolver.Address)
    +	// Connect starts the connecting for this SubConn.
    +	Connect()
    +	// GetOrBuildProducer returns a reference to the existing Producer for this
    +	// ProducerBuilder in this SubConn, or, if one does not currently exist,
    +	// creates a new one and returns it.  Returns a close function which may be
    +	// called when the Producer is no longer needed.  Otherwise the producer
    +	// will automatically be closed upon connection loss or subchannel close.
    +	// Should only be called on a SubConn in state Ready.  Otherwise the
    +	// producer will be unable to create streams.
    +	GetOrBuildProducer(ProducerBuilder) (p Producer, close func())
    +	// Shutdown shuts down the SubConn gracefully.  Any started RPCs will be
    +	// allowed to complete.  No future calls should be made on the SubConn.
    +	// One final state update will be delivered to the StateListener (or
    +	// UpdateSubConnState; deprecated) with ConnectivityState of Shutdown to
    +	// indicate the shutdown operation.  This may be delivered before
    +	// in-progress RPCs are complete and the actual connection is closed.
    +	Shutdown()
    +	// RegisterHealthListener registers a health listener that receives health
    +	// updates for a Ready SubConn. Only one health listener can be registered
    +	// at a time. A health listener should be registered each time the SubConn's
    +	// connectivity state changes to READY. Registering a health listener when
    +	// the connectivity state is not READY may result in undefined behaviour.
    +	// This method must not be called synchronously while handling an update
    +	// from a previously registered health listener.
    +	RegisterHealthListener(func(SubConnState))
    +	// EnforceSubConnEmbedding is included to force implementers to embed
    +	// another implementation of this interface, allowing gRPC to add methods
    +	// without breaking users.
    +	internal.EnforceSubConnEmbedding
    +}
    +
    +// A ProducerBuilder is a simple constructor for a Producer.  It is used by the
    +// SubConn to create producers when needed.
    +type ProducerBuilder interface {
    +	// Build creates a Producer.  The first parameter is always a
    +	// grpc.ClientConnInterface (a type to allow creating RPCs/streams on the
    +	// associated SubConn), but is declared as `any` to avoid a dependency
    +	// cycle.  Build also returns a close function that will be called when all
    +	// references to the Producer have been given up for a SubConn, or when a
    +	// connectivity state change occurs on the SubConn.  The close function
    +	// should always block until all asynchronous cleanup work is completed.
    +	Build(grpcClientConnInterface any) (p Producer, close func())
    +}
    +
    +// SubConnState describes the state of a SubConn.
    +type SubConnState struct {
    +	// ConnectivityState is the connectivity state of the SubConn.
    +	ConnectivityState connectivity.State
    +	// ConnectionError is set if the ConnectivityState is TransientFailure,
    +	// describing the reason the SubConn failed.  Otherwise, it is nil.
    +	ConnectionError error
    +	// connectedAddr contains the connected address when ConnectivityState is
    +	// Ready. Otherwise, it is indeterminate.
    +	connectedAddress resolver.Address
    +}
    +
    +// connectedAddress returns the connected address for a SubConnState. The
    +// address is only valid if the state is READY.
    +func connectedAddress(scs SubConnState) resolver.Address {
    +	return scs.connectedAddress
    +}
    +
    +// setConnectedAddress sets the connected address for a SubConnState.
    +func setConnectedAddress(scs *SubConnState, addr resolver.Address) {
    +	scs.connectedAddress = addr
    +}
    +
    +// A Producer is a type shared among potentially many consumers.  It is
    +// associated with a SubConn, and an implementation will typically contain
    +// other methods to provide additional functionality, e.g. configuration or
    +// subscription registration.
    +type Producer any
    diff --git a/vendor/google.golang.org/grpc/balancer_wrapper.go b/vendor/google.golang.org/grpc/balancer_wrapper.go
    index 4161fdf47a8b..905817b5fc7b 100644
    --- a/vendor/google.golang.org/grpc/balancer_wrapper.go
    +++ b/vendor/google.golang.org/grpc/balancer_wrapper.go
    @@ -24,13 +24,18 @@ import (
     	"sync"
     
     	"google.golang.org/grpc/balancer"
    +	"google.golang.org/grpc/codes"
     	"google.golang.org/grpc/connectivity"
    +	"google.golang.org/grpc/internal"
     	"google.golang.org/grpc/internal/balancer/gracefulswitch"
     	"google.golang.org/grpc/internal/channelz"
     	"google.golang.org/grpc/internal/grpcsync"
     	"google.golang.org/grpc/resolver"
    +	"google.golang.org/grpc/status"
     )
     
    +var setConnectedAddress = internal.SetConnectedAddress.(func(*balancer.SubConnState, resolver.Address))
    +
     // ccBalancerWrapper sits between the ClientConn and the Balancer.
     //
     // ccBalancerWrapper implements methods corresponding to the ones on the
    @@ -79,6 +84,7 @@ func newCCBalancerWrapper(cc *ClientConn) *ccBalancerWrapper {
     			CustomUserAgent: cc.dopts.copts.UserAgent,
     			ChannelzParent:  cc.channelz,
     			Target:          cc.parsedTarget,
    +			MetricsRecorder: cc.metricsRecorderList,
     		},
     		serializer:       grpcsync.NewCallbackSerializer(ctx),
     		serializerCancel: cancel,
    @@ -92,7 +98,7 @@ func newCCBalancerWrapper(cc *ClientConn) *ccBalancerWrapper {
     // it is safe to call into the balancer here.
     func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnState) error {
     	errCh := make(chan error)
    -	ok := ccb.serializer.Schedule(func(ctx context.Context) {
    +	uccs := func(ctx context.Context) {
     		defer close(errCh)
     		if ctx.Err() != nil || ccb.balancer == nil {
     			return
    @@ -107,17 +113,23 @@ func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnStat
     			logger.Infof("error from balancer.UpdateClientConnState: %v", err)
     		}
     		errCh <- err
    -	})
    -	if !ok {
    -		return nil
     	}
    +	onFailure := func() { close(errCh) }
    +
    +	// UpdateClientConnState can race with Close, and when the latter wins, the
    +	// serializer is closed, and the attempt to schedule the callback will fail.
    +	// It is acceptable to ignore this failure. But since we want to handle the
    +	// state update in a blocking fashion (when we successfully schedule the
    +	// callback), we have to use the ScheduleOr method and not the MaybeSchedule
    +	// method on the serializer.
    +	ccb.serializer.ScheduleOr(uccs, onFailure)
     	return <-errCh
     }
     
     // resolverError is invoked by grpc to push a resolver error to the underlying
     // balancer.  The call to the balancer is executed from the serializer.
     func (ccb *ccBalancerWrapper) resolverError(err error) {
    -	ccb.serializer.Schedule(func(ctx context.Context) {
    +	ccb.serializer.TrySchedule(func(ctx context.Context) {
     		if ctx.Err() != nil || ccb.balancer == nil {
     			return
     		}
    @@ -133,7 +145,7 @@ func (ccb *ccBalancerWrapper) close() {
     	ccb.closed = true
     	ccb.mu.Unlock()
     	channelz.Info(logger, ccb.cc.channelz, "ccBalancerWrapper: closing")
    -	ccb.serializer.Schedule(func(context.Context) {
    +	ccb.serializer.TrySchedule(func(context.Context) {
     		if ccb.balancer == nil {
     			return
     		}
    @@ -145,7 +157,7 @@ func (ccb *ccBalancerWrapper) close() {
     
     // exitIdle invokes the balancer's exitIdle method in the serializer.
     func (ccb *ccBalancerWrapper) exitIdle() {
    -	ccb.serializer.Schedule(func(ctx context.Context) {
    +	ccb.serializer.TrySchedule(func(ctx context.Context) {
     		if ctx.Err() != nil || ccb.balancer == nil {
     			return
     		}
    @@ -177,12 +189,13 @@ func (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer
     		ac:            ac,
     		producers:     make(map[balancer.ProducerBuilder]*refCountedProducer),
     		stateListener: opts.StateListener,
    +		healthData:    newHealthData(connectivity.Idle),
     	}
     	ac.acbw = acbw
     	return acbw, nil
     }
     
    -func (ccb *ccBalancerWrapper) RemoveSubConn(sc balancer.SubConn) {
    +func (ccb *ccBalancerWrapper) RemoveSubConn(balancer.SubConn) {
     	// The graceful switch balancer will never call this.
     	logger.Errorf("ccb RemoveSubConn(%v) called unexpectedly, sc")
     }
    @@ -242,25 +255,70 @@ func (ccb *ccBalancerWrapper) Target() string {
     // acBalancerWrapper is a wrapper on top of ac for balancers.
     // It implements balancer.SubConn interface.
     type acBalancerWrapper struct {
    +	internal.EnforceSubConnEmbedding
     	ac            *addrConn          // read-only
     	ccb           *ccBalancerWrapper // read-only
     	stateListener func(balancer.SubConnState)
     
    -	mu        sync.Mutex
    -	producers map[balancer.ProducerBuilder]*refCountedProducer
    +	producersMu sync.Mutex
    +	producers   map[balancer.ProducerBuilder]*refCountedProducer
    +
    +	// Access to healthData is protected by healthMu.
    +	healthMu sync.Mutex
    +	// healthData is stored as a pointer to detect when the health listener is
    +	// dropped or updated. This is required as closures can't be compared for
    +	// equality.
    +	healthData *healthData
    +}
    +
    +// healthData holds data related to health state reporting.
    +type healthData struct {
    +	// connectivityState stores the most recent connectivity state delivered
    +	// to the LB policy. This is stored to avoid sending updates when the
    +	// SubConn has already exited connectivity state READY.
    +	connectivityState connectivity.State
    +}
    +
    +func newHealthData(s connectivity.State) *healthData {
    +	return &healthData{connectivityState: s}
     }
     
     // updateState is invoked by grpc to push a subConn state update to the
     // underlying balancer.
    -func (acbw *acBalancerWrapper) updateState(s connectivity.State, err error) {
    -	acbw.ccb.serializer.Schedule(func(ctx context.Context) {
    +func (acbw *acBalancerWrapper) updateState(s connectivity.State, curAddr resolver.Address, err error) {
    +	acbw.ccb.serializer.TrySchedule(func(ctx context.Context) {
     		if ctx.Err() != nil || acbw.ccb.balancer == nil {
     			return
     		}
    +		// Invalidate all producers on any state change.
    +		acbw.closeProducers()
    +
     		// Even though it is optional for balancers, gracefulswitch ensures
     		// opts.StateListener is set, so this cannot ever be nil.
     		// TODO: delete this comment when UpdateSubConnState is removed.
    -		acbw.stateListener(balancer.SubConnState{ConnectivityState: s, ConnectionError: err})
    +		scs := balancer.SubConnState{ConnectivityState: s, ConnectionError: err}
    +		if s == connectivity.Ready {
    +			setConnectedAddress(&scs, curAddr)
    +		}
    +		// Invalidate the health listener by updating the healthData.
    +		acbw.healthMu.Lock()
    +		// A race may occur if a health listener is registered soon after the
    +		// connectivity state is set but before the stateListener is called.
    +		// Two cases may arise:
    +		// 1. The new state is not READY: RegisterHealthListener has checks to
    +		//    ensure no updates are sent when the connectivity state is not
    +		//    READY.
    +		// 2. The new state is READY: This means that the old state wasn't Ready.
    +		//    The RegisterHealthListener API mentions that a health listener
    +		//    must not be registered when a SubConn is not ready to avoid such
    +		//    races. When this happens, the LB policy would get health updates
    +		//    on the old listener. When the LB policy registers a new listener
    +		//    on receiving the connectivity update, the health updates will be
    +		//    sent to the new health listener.
    +		acbw.healthData = newHealthData(scs.ConnectivityState)
    +		acbw.healthMu.Unlock()
    +
    +		acbw.stateListener(scs)
     	})
     }
     
    @@ -277,6 +335,7 @@ func (acbw *acBalancerWrapper) Connect() {
     }
     
     func (acbw *acBalancerWrapper) Shutdown() {
    +	acbw.closeProducers()
     	acbw.ccb.cc.removeAddrConn(acbw.ac, errConnDrain)
     }
     
    @@ -284,9 +343,10 @@ func (acbw *acBalancerWrapper) Shutdown() {
     // ready, blocks until it is or ctx expires.  Returns an error when the context
     // expires or the addrConn is shut down.
     func (acbw *acBalancerWrapper) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error) {
    -	transport, err := acbw.ac.getTransport(ctx)
    -	if err != nil {
    -		return nil, err
    +	transport := acbw.ac.getReadyTransport()
    +	if transport == nil {
    +		return nil, status.Errorf(codes.Unavailable, "SubConn state is not Ready")
    +
     	}
     	return newNonRetryClientStream(ctx, desc, method, transport, acbw.ac, opts...)
     }
    @@ -311,15 +371,15 @@ type refCountedProducer struct {
     }
     
     func (acbw *acBalancerWrapper) GetOrBuildProducer(pb balancer.ProducerBuilder) (balancer.Producer, func()) {
    -	acbw.mu.Lock()
    -	defer acbw.mu.Unlock()
    +	acbw.producersMu.Lock()
    +	defer acbw.producersMu.Unlock()
     
     	// Look up existing producer from this builder.
     	pData := acbw.producers[pb]
     	if pData == nil {
     		// Not found; create a new one and add it to the producers map.
    -		p, close := pb.Build(acbw)
    -		pData = &refCountedProducer{producer: p, close: close}
    +		p, closeFn := pb.Build(acbw)
    +		pData = &refCountedProducer{producer: p, close: closeFn}
     		acbw.producers[pb] = pData
     	}
     	// Account for this new reference.
    @@ -329,13 +389,64 @@ func (acbw *acBalancerWrapper) GetOrBuildProducer(pb balancer.ProducerBuilder) (
     	// and delete the refCountedProducer from the map if the total reference
     	// count goes to zero.
     	unref := func() {
    -		acbw.mu.Lock()
    +		acbw.producersMu.Lock()
    +		// If closeProducers has already closed this producer instance, refs is
    +		// set to 0, so the check after decrementing will never pass, and the
    +		// producer will not be double-closed.
     		pData.refs--
     		if pData.refs == 0 {
     			defer pData.close() // Run outside the acbw mutex
     			delete(acbw.producers, pb)
     		}
    -		acbw.mu.Unlock()
    +		acbw.producersMu.Unlock()
     	}
     	return pData.producer, grpcsync.OnceFunc(unref)
     }
    +
    +func (acbw *acBalancerWrapper) closeProducers() {
    +	acbw.producersMu.Lock()
    +	defer acbw.producersMu.Unlock()
    +	for pb, pData := range acbw.producers {
    +		pData.refs = 0
    +		pData.close()
    +		delete(acbw.producers, pb)
    +	}
    +}
    +
    +// RegisterHealthListener accepts a health listener from the LB policy. It sends
    +// updates to the health listener as long as the SubConn's connectivity state
    +// doesn't change and a new health listener is not registered. To invalidate
    +// the currently registered health listener, acbw updates the healthData. If a
    +// nil listener is registered, the active health listener is dropped.
    +func (acbw *acBalancerWrapper) RegisterHealthListener(listener func(balancer.SubConnState)) {
    +	acbw.healthMu.Lock()
    +	defer acbw.healthMu.Unlock()
    +	// listeners should not be registered when the connectivity state
    +	// isn't Ready. This may happen when the balancer registers a listener
    +	// after the connectivityState is updated, but before it is notified
    +	// of the update.
    +	if acbw.healthData.connectivityState != connectivity.Ready {
    +		return
    +	}
    +	// Replace the health data to stop sending updates to any previously
    +	// registered health listeners.
    +	hd := newHealthData(connectivity.Ready)
    +	acbw.healthData = hd
    +	if listener == nil {
    +		return
    +	}
    +
    +	acbw.ccb.serializer.TrySchedule(func(ctx context.Context) {
    +		if ctx.Err() != nil || acbw.ccb.balancer == nil {
    +			return
    +		}
    +		// Don't send updates if a new listener is registered.
    +		acbw.healthMu.Lock()
    +		defer acbw.healthMu.Unlock()
    +		curHD := acbw.healthData
    +		if curHD != hd {
    +			return
    +		}
    +		listener(balancer.SubConnState{ConnectivityState: connectivity.Ready})
    +	})
    +}
    diff --git a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go
    index 63c639e4fe93..9e9d0806995c 100644
    --- a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go
    +++ b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go
    @@ -18,8 +18,8 @@
     
     // Code generated by protoc-gen-go. DO NOT EDIT.
     // versions:
    -// 	protoc-gen-go v1.34.1
    -// 	protoc        v4.25.2
    +// 	protoc-gen-go v1.35.1
    +// 	protoc        v5.27.1
     // source: grpc/binlog/v1/binarylog.proto
     
     package grpc_binarylog_v1
    @@ -274,11 +274,9 @@ type GrpcLogEntry struct {
     
     func (x *GrpcLogEntry) Reset() {
     	*x = GrpcLogEntry{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *GrpcLogEntry) String() string {
    @@ -289,7 +287,7 @@ func (*GrpcLogEntry) ProtoMessage() {}
     
     func (x *GrpcLogEntry) ProtoReflect() protoreflect.Message {
     	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -440,11 +438,9 @@ type ClientHeader struct {
     
     func (x *ClientHeader) Reset() {
     	*x = ClientHeader{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *ClientHeader) String() string {
    @@ -455,7 +451,7 @@ func (*ClientHeader) ProtoMessage() {}
     
     func (x *ClientHeader) ProtoReflect() protoreflect.Message {
     	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -509,11 +505,9 @@ type ServerHeader struct {
     
     func (x *ServerHeader) Reset() {
     	*x = ServerHeader{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *ServerHeader) String() string {
    @@ -524,7 +518,7 @@ func (*ServerHeader) ProtoMessage() {}
     
     func (x *ServerHeader) ProtoReflect() protoreflect.Message {
     	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -565,11 +559,9 @@ type Trailer struct {
     
     func (x *Trailer) Reset() {
     	*x = Trailer{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Trailer) String() string {
    @@ -580,7 +572,7 @@ func (*Trailer) ProtoMessage() {}
     
     func (x *Trailer) ProtoReflect() protoreflect.Message {
     	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -638,11 +630,9 @@ type Message struct {
     
     func (x *Message) Reset() {
     	*x = Message{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Message) String() string {
    @@ -653,7 +643,7 @@ func (*Message) ProtoMessage() {}
     
     func (x *Message) ProtoReflect() protoreflect.Message {
     	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -713,11 +703,9 @@ type Metadata struct {
     
     func (x *Metadata) Reset() {
     	*x = Metadata{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Metadata) String() string {
    @@ -728,7 +716,7 @@ func (*Metadata) ProtoMessage() {}
     
     func (x *Metadata) ProtoReflect() protoreflect.Message {
     	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -762,11 +750,9 @@ type MetadataEntry struct {
     
     func (x *MetadataEntry) Reset() {
     	*x = MetadataEntry{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *MetadataEntry) String() string {
    @@ -777,7 +763,7 @@ func (*MetadataEntry) ProtoMessage() {}
     
     func (x *MetadataEntry) ProtoReflect() protoreflect.Message {
     	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -820,11 +806,9 @@ type Address struct {
     
     func (x *Address) Reset() {
     	*x = Address{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Address) String() string {
    @@ -835,7 +819,7 @@ func (*Address) ProtoMessage() {}
     
     func (x *Address) ProtoReflect() protoreflect.Message {
     	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -1015,7 +999,7 @@ func file_grpc_binlog_v1_binarylog_proto_rawDescGZIP() []byte {
     
     var file_grpc_binlog_v1_binarylog_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
     var file_grpc_binlog_v1_binarylog_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
    -var file_grpc_binlog_v1_binarylog_proto_goTypes = []interface{}{
    +var file_grpc_binlog_v1_binarylog_proto_goTypes = []any{
     	(GrpcLogEntry_EventType)(0),   // 0: grpc.binarylog.v1.GrpcLogEntry.EventType
     	(GrpcLogEntry_Logger)(0),      // 1: grpc.binarylog.v1.GrpcLogEntry.Logger
     	(Address_Type)(0),             // 2: grpc.binarylog.v1.Address.Type
    @@ -1057,105 +1041,7 @@ func file_grpc_binlog_v1_binarylog_proto_init() {
     	if File_grpc_binlog_v1_binarylog_proto != nil {
     		return
     	}
    -	if !protoimpl.UnsafeEnabled {
    -		file_grpc_binlog_v1_binarylog_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*GrpcLogEntry); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_grpc_binlog_v1_binarylog_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*ClientHeader); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_grpc_binlog_v1_binarylog_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*ServerHeader); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_grpc_binlog_v1_binarylog_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Trailer); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_grpc_binlog_v1_binarylog_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Message); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_grpc_binlog_v1_binarylog_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Metadata); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_grpc_binlog_v1_binarylog_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*MetadataEntry); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_grpc_binlog_v1_binarylog_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Address); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -	}
    -	file_grpc_binlog_v1_binarylog_proto_msgTypes[0].OneofWrappers = []interface{}{
    +	file_grpc_binlog_v1_binarylog_proto_msgTypes[0].OneofWrappers = []any{
     		(*GrpcLogEntry_ClientHeader)(nil),
     		(*GrpcLogEntry_ServerHeader)(nil),
     		(*GrpcLogEntry_Message)(nil),
    diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go
    index 423be7b43b00..4f57b55434f9 100644
    --- a/vendor/google.golang.org/grpc/clientconn.go
    +++ b/vendor/google.golang.org/grpc/clientconn.go
    @@ -24,6 +24,7 @@ import (
     	"fmt"
     	"math"
     	"net/url"
    +	"slices"
     	"strings"
     	"sync"
     	"sync/atomic"
    @@ -39,6 +40,7 @@ import (
     	"google.golang.org/grpc/internal/grpcsync"
     	"google.golang.org/grpc/internal/idle"
     	iresolver "google.golang.org/grpc/internal/resolver"
    +	"google.golang.org/grpc/internal/stats"
     	"google.golang.org/grpc/internal/transport"
     	"google.golang.org/grpc/keepalive"
     	"google.golang.org/grpc/resolver"
    @@ -194,8 +196,11 @@ func NewClient(target string, opts ...DialOption) (conn *ClientConn, err error)
     	cc.csMgr = newConnectivityStateManager(cc.ctx, cc.channelz)
     	cc.pickerWrapper = newPickerWrapper(cc.dopts.copts.StatsHandlers)
     
    +	cc.metricsRecorderList = stats.NewMetricsRecorderList(cc.dopts.copts.StatsHandlers)
    +
     	cc.initIdleStateLocked() // Safe to call without the lock, since nothing else has a reference to cc.
     	cc.idlenessMgr = idle.NewManager((*idler)(cc), cc.dopts.idleTimeout)
    +
     	return cc, nil
     }
     
    @@ -590,13 +595,14 @@ type ClientConn struct {
     	cancel context.CancelFunc // Cancelled on close.
     
     	// The following are initialized at dial time, and are read-only after that.
    -	target          string            // User's dial target.
    -	parsedTarget    resolver.Target   // See initParsedTargetAndResolverBuilder().
    -	authority       string            // See initAuthority().
    -	dopts           dialOptions       // Default and user specified dial options.
    -	channelz        *channelz.Channel // Channelz object.
    -	resolverBuilder resolver.Builder  // See initParsedTargetAndResolverBuilder().
    -	idlenessMgr     *idle.Manager
    +	target              string            // User's dial target.
    +	parsedTarget        resolver.Target   // See initParsedTargetAndResolverBuilder().
    +	authority           string            // See initAuthority().
    +	dopts               dialOptions       // Default and user specified dial options.
    +	channelz            *channelz.Channel // Channelz object.
    +	resolverBuilder     resolver.Builder  // See initParsedTargetAndResolverBuilder().
    +	idlenessMgr         *idle.Manager
    +	metricsRecorderList *stats.MetricsRecorderList
     
     	// The following provide their own synchronization, and therefore don't
     	// require cc.mu to be held to access them.
    @@ -626,11 +632,6 @@ type ClientConn struct {
     
     // WaitForStateChange waits until the connectivity.State of ClientConn changes from sourceState or
     // ctx expires. A true value is returned in former case and false in latter.
    -//
    -// # Experimental
    -//
    -// Notice: This API is EXPERIMENTAL and may be changed or removed in a
    -// later release.
     func (cc *ClientConn) WaitForStateChange(ctx context.Context, sourceState connectivity.State) bool {
     	ch := cc.csMgr.getNotifyChan()
     	if cc.csMgr.getState() != sourceState {
    @@ -645,11 +646,6 @@ func (cc *ClientConn) WaitForStateChange(ctx context.Context, sourceState connec
     }
     
     // GetState returns the connectivity.State of ClientConn.
    -//
    -// # Experimental
    -//
    -// Notice: This API is EXPERIMENTAL and may be changed or removed in a later
    -// release.
     func (cc *ClientConn) GetState() connectivity.State {
     	return cc.csMgr.getState()
     }
    @@ -779,10 +775,7 @@ func (cc *ClientConn) updateResolverStateAndUnlock(s resolver.State, err error)
     		}
     	}
     
    -	var balCfg serviceconfig.LoadBalancingConfig
    -	if cc.sc != nil && cc.sc.lbConfig != nil {
    -		balCfg = cc.sc.lbConfig
    -	}
    +	balCfg := cc.sc.lbConfig
     	bw := cc.balancerWrapper
     	cc.mu.Unlock()
     
    @@ -812,17 +805,11 @@ func (cc *ClientConn) applyFailingLBLocked(sc *serviceconfig.ParseResult) {
     	cc.csMgr.updateState(connectivity.TransientFailure)
     }
     
    -// Makes a copy of the input addresses slice and clears out the balancer
    -// attributes field. Addresses are passed during subconn creation and address
    -// update operations. In both cases, we will clear the balancer attributes by
    -// calling this function, and therefore we will be able to use the Equal method
    -// provided by the resolver.Address type for comparison.
    -func copyAddressesWithoutBalancerAttributes(in []resolver.Address) []resolver.Address {
    +// Makes a copy of the input addresses slice. Addresses are passed during
    +// subconn creation and address update operations.
    +func copyAddresses(in []resolver.Address) []resolver.Address {
     	out := make([]resolver.Address, len(in))
    -	for i := range in {
    -		out[i] = in[i]
    -		out[i].BalancerAttributes = nil
    -	}
    +	copy(out, in)
     	return out
     }
     
    @@ -837,12 +824,11 @@ func (cc *ClientConn) newAddrConnLocked(addrs []resolver.Address, opts balancer.
     	ac := &addrConn{
     		state:        connectivity.Idle,
     		cc:           cc,
    -		addrs:        copyAddressesWithoutBalancerAttributes(addrs),
    +		addrs:        copyAddresses(addrs),
     		scopts:       opts,
     		dopts:        cc.dopts,
     		channelz:     channelz.RegisterSubChannel(cc.channelz, ""),
     		resetBackoff: make(chan struct{}),
    -		stateChan:    make(chan struct{}),
     	}
     	ac.ctx, ac.cancel = context.WithCancel(cc.ctx)
     	// Start with our address set to the first address; this may be updated if
    @@ -918,28 +904,29 @@ func (ac *addrConn) connect() error {
     		ac.mu.Unlock()
     		return nil
     	}
    -	ac.mu.Unlock()
     
    -	ac.resetTransport()
    +	ac.resetTransportAndUnlock()
     	return nil
     }
     
    -func equalAddresses(a, b []resolver.Address) bool {
    -	if len(a) != len(b) {
    -		return false
    -	}
    -	for i, v := range a {
    -		if !v.Equal(b[i]) {
    -			return false
    -		}
    -	}
    -	return true
    +// equalAddressIgnoringBalAttributes returns true is a and b are considered equal.
    +// This is different from the Equal method on the resolver.Address type which
    +// considers all fields to determine equality. Here, we only consider fields
    +// that are meaningful to the subConn.
    +func equalAddressIgnoringBalAttributes(a, b *resolver.Address) bool {
    +	return a.Addr == b.Addr && a.ServerName == b.ServerName &&
    +		a.Attributes.Equal(b.Attributes) &&
    +		a.Metadata == b.Metadata
    +}
    +
    +func equalAddressesIgnoringBalAttributes(a, b []resolver.Address) bool {
    +	return slices.EqualFunc(a, b, func(a, b resolver.Address) bool { return equalAddressIgnoringBalAttributes(&a, &b) })
     }
     
     // updateAddrs updates ac.addrs with the new addresses list and handles active
     // connections or connection attempts.
     func (ac *addrConn) updateAddrs(addrs []resolver.Address) {
    -	addrs = copyAddressesWithoutBalancerAttributes(addrs)
    +	addrs = copyAddresses(addrs)
     	limit := len(addrs)
     	if limit > 5 {
     		limit = 5
    @@ -947,7 +934,7 @@ func (ac *addrConn) updateAddrs(addrs []resolver.Address) {
     	channelz.Infof(logger, ac.channelz, "addrConn: updateAddrs addrs (%d of %d): %v", limit, len(addrs), addrs[:limit])
     
     	ac.mu.Lock()
    -	if equalAddresses(ac.addrs, addrs) {
    +	if equalAddressesIgnoringBalAttributes(ac.addrs, addrs) {
     		ac.mu.Unlock()
     		return
     	}
    @@ -966,7 +953,7 @@ func (ac *addrConn) updateAddrs(addrs []resolver.Address) {
     		// Try to find the connected address.
     		for _, a := range addrs {
     			a.ServerName = ac.cc.getServerName(a)
    -			if a.Equal(ac.curAddr) {
    +			if equalAddressIgnoringBalAttributes(&a, &ac.curAddr) {
     				// We are connected to a valid address, so do nothing but
     				// update the addresses.
     				ac.mu.Unlock()
    @@ -992,11 +979,9 @@ func (ac *addrConn) updateAddrs(addrs []resolver.Address) {
     		ac.updateConnectivityState(connectivity.Idle, nil)
     	}
     
    -	ac.mu.Unlock()
    -
     	// Since we were connecting/connected, we should start a new connection
     	// attempt.
    -	go ac.resetTransport()
    +	go ac.resetTransportAndUnlock()
     }
     
     // getServerName determines the serverName to be used in the connection
    @@ -1152,10 +1137,15 @@ func (cc *ClientConn) Close() error {
     
     	<-cc.resolverWrapper.serializer.Done()
     	<-cc.balancerWrapper.serializer.Done()
    -
    +	var wg sync.WaitGroup
     	for ac := range conns {
    -		ac.tearDown(ErrClientConnClosing)
    +		wg.Add(1)
    +		go func(ac *addrConn) {
    +			defer wg.Done()
    +			ac.tearDown(ErrClientConnClosing)
    +		}(ac)
     	}
    +	wg.Wait()
     	cc.addTraceEvent("deleted")
     	// TraceEvent needs to be called before RemoveEntry, as TraceEvent may add
     	// trace reference to the entity being deleted, and thus prevent it from being
    @@ -1190,8 +1180,7 @@ type addrConn struct {
     	addrs   []resolver.Address // All addresses that the resolver resolved to.
     
     	// Use updateConnectivityState for updating addrConn's connectivity state.
    -	state     connectivity.State
    -	stateChan chan struct{} // closed and recreated on every state change.
    +	state connectivity.State
     
     	backoffIdx   int // Needs to be stateful for resetConnectBackoff.
     	resetBackoff chan struct{}
    @@ -1204,9 +1193,6 @@ func (ac *addrConn) updateConnectivityState(s connectivity.State, lastErr error)
     	if ac.state == s {
     		return
     	}
    -	// When changing states, reset the state change channel.
    -	close(ac.stateChan)
    -	ac.stateChan = make(chan struct{})
     	ac.state = s
     	ac.channelz.ChannelMetrics.State.Store(&s)
     	if lastErr == nil {
    @@ -1214,7 +1200,7 @@ func (ac *addrConn) updateConnectivityState(s connectivity.State, lastErr error)
     	} else {
     		channelz.Infof(logger, ac.channelz, "Subchannel Connectivity change to %v, last error: %s", s, lastErr)
     	}
    -	ac.acbw.updateState(s, lastErr)
    +	ac.acbw.updateState(s, ac.curAddr, lastErr)
     }
     
     // adjustParams updates parameters used to create transports upon
    @@ -1231,8 +1217,10 @@ func (ac *addrConn) adjustParams(r transport.GoAwayReason) {
     	}
     }
     
    -func (ac *addrConn) resetTransport() {
    -	ac.mu.Lock()
    +// resetTransportAndUnlock unconditionally connects the addrConn.
    +//
    +// ac.mu must be held by the caller, and this function will guarantee it is released.
    +func (ac *addrConn) resetTransportAndUnlock() {
     	acCtx := ac.ctx
     	if acCtx.Err() != nil {
     		ac.mu.Unlock()
    @@ -1263,6 +1251,8 @@ func (ac *addrConn) resetTransport() {
     	ac.mu.Unlock()
     
     	if err := ac.tryAllAddrs(acCtx, addrs, connectDeadline); err != nil {
    +		// TODO: #7534 - Move re-resolution requests into the pick_first LB policy
    +		// to ensure one resolution request per pass instead of per subconn failure.
     		ac.cc.resolveNow(resolver.ResolveNowOptions{})
     		ac.mu.Lock()
     		if acCtx.Err() != nil {
    @@ -1304,7 +1294,7 @@ func (ac *addrConn) resetTransport() {
     	ac.mu.Unlock()
     }
     
    -// tryAllAddrs tries to creates a connection to the addresses, and stop when at
    +// tryAllAddrs tries to create a connection to the addresses, and stop when at
     // the first successful one. It returns an error if no address was successfully
     // connected, or updates ac appropriately with the new transport.
     func (ac *addrConn) tryAllAddrs(ctx context.Context, addrs []resolver.Address, connectDeadline time.Time) error {
    @@ -1381,7 +1371,7 @@ func (ac *addrConn) createTransport(ctx context.Context, addr resolver.Address,
     	defer cancel()
     	copts.ChannelzParent = ac.channelz
     
    -	newTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, addr, copts, onClose)
    +	newTr, err := transport.NewHTTP2Client(connectCtx, ac.cc.ctx, addr, copts, onClose)
     	if err != nil {
     		if logger.V(2) {
     			logger.Infof("Creating new client transport to %q: %v", addr, err)
    @@ -1455,7 +1445,7 @@ func (ac *addrConn) startHealthCheck(ctx context.Context) {
     	if !ac.scopts.HealthCheckEnabled {
     		return
     	}
    -	healthCheckFunc := ac.cc.dopts.healthCheckFunc
    +	healthCheckFunc := internal.HealthCheckFunc
     	if healthCheckFunc == nil {
     		// The health package is not imported to set health check function.
     		//
    @@ -1487,7 +1477,7 @@ func (ac *addrConn) startHealthCheck(ctx context.Context) {
     	}
     	// Start the health checking stream.
     	go func() {
    -		err := ac.cc.dopts.healthCheckFunc(ctx, newStream, setConnectivityState, healthCheckConfig.ServiceName)
    +		err := healthCheckFunc(ctx, newStream, setConnectivityState, healthCheckConfig.ServiceName)
     		if err != nil {
     			if status.Code(err) == codes.Unimplemented {
     				channelz.Error(logger, ac.channelz, "Subchannel health check is unimplemented at server side, thus health check is disabled")
    @@ -1516,29 +1506,6 @@ func (ac *addrConn) getReadyTransport() transport.ClientTransport {
     	return nil
     }
     
    -// getTransport waits until the addrconn is ready and returns the transport.
    -// If the context expires first, returns an appropriate status.  If the
    -// addrConn is stopped first, returns an Unavailable status error.
    -func (ac *addrConn) getTransport(ctx context.Context) (transport.ClientTransport, error) {
    -	for ctx.Err() == nil {
    -		ac.mu.Lock()
    -		t, state, sc := ac.transport, ac.state, ac.stateChan
    -		ac.mu.Unlock()
    -		if state == connectivity.Ready {
    -			return t, nil
    -		}
    -		if state == connectivity.Shutdown {
    -			return nil, status.Errorf(codes.Unavailable, "SubConn shutting down")
    -		}
    -
    -		select {
    -		case <-ctx.Done():
    -		case <-sc:
    -		}
    -	}
    -	return nil, status.FromContextError(ctx.Err()).Err()
    -}
    -
     // tearDown starts to tear down the addrConn.
     //
     // Note that tearDown doesn't remove ac from ac.cc.conns, so the addrConn struct
    @@ -1585,7 +1552,7 @@ func (ac *addrConn) tearDown(err error) {
     		} else {
     			// Hard close the transport when the channel is entering idle or is
     			// being shutdown. In the case where the channel is being shutdown,
    -			// closing of transports is also taken care of by cancelation of cc.ctx.
    +			// closing of transports is also taken care of by cancellation of cc.ctx.
     			// But in the case where the channel is entering idle, we need to
     			// explicitly close the transports here. Instead of distinguishing
     			// between these two cases, it is simpler to close the transport
    diff --git a/vendor/google.golang.org/grpc/codec.go b/vendor/google.golang.org/grpc/codec.go
    index 411e3dfd47cc..959c2f99d4a7 100644
    --- a/vendor/google.golang.org/grpc/codec.go
    +++ b/vendor/google.golang.org/grpc/codec.go
    @@ -21,18 +21,73 @@ package grpc
     import (
     	"google.golang.org/grpc/encoding"
     	_ "google.golang.org/grpc/encoding/proto" // to register the Codec for "proto"
    +	"google.golang.org/grpc/mem"
     )
     
    -// baseCodec contains the functionality of both Codec and encoding.Codec, but
    -// omits the name/string, which vary between the two and are not needed for
    -// anything besides the registry in the encoding package.
    +// baseCodec captures the new encoding.CodecV2 interface without the Name
    +// function, allowing it to be implemented by older Codec and encoding.Codec
    +// implementations. The omitted Name function is only needed for the register in
    +// the encoding package and is not part of the core functionality.
     type baseCodec interface {
    -	Marshal(v any) ([]byte, error)
    -	Unmarshal(data []byte, v any) error
    +	Marshal(v any) (mem.BufferSlice, error)
    +	Unmarshal(data mem.BufferSlice, v any) error
    +}
    +
    +// getCodec returns an encoding.CodecV2 for the codec of the given name (if
    +// registered). Initially checks the V2 registry with encoding.GetCodecV2 and
    +// returns the V2 codec if it is registered. Otherwise, it checks the V1 registry
    +// with encoding.GetCodec and if it is registered wraps it with newCodecV1Bridge
    +// to turn it into an encoding.CodecV2. Returns nil otherwise.
    +func getCodec(name string) encoding.CodecV2 {
    +	if codecV1 := encoding.GetCodec(name); codecV1 != nil {
    +		return newCodecV1Bridge(codecV1)
    +	}
    +
    +	return encoding.GetCodecV2(name)
    +}
    +
    +func newCodecV0Bridge(c Codec) baseCodec {
    +	return codecV0Bridge{codec: c}
    +}
    +
    +func newCodecV1Bridge(c encoding.Codec) encoding.CodecV2 {
    +	return codecV1Bridge{
    +		codecV0Bridge: codecV0Bridge{codec: c},
    +		name:          c.Name(),
    +	}
    +}
    +
    +var _ baseCodec = codecV0Bridge{}
    +
    +type codecV0Bridge struct {
    +	codec interface {
    +		Marshal(v any) ([]byte, error)
    +		Unmarshal(data []byte, v any) error
    +	}
    +}
    +
    +func (c codecV0Bridge) Marshal(v any) (mem.BufferSlice, error) {
    +	data, err := c.codec.Marshal(v)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return mem.BufferSlice{mem.SliceBuffer(data)}, nil
    +}
    +
    +func (c codecV0Bridge) Unmarshal(data mem.BufferSlice, v any) (err error) {
    +	return c.codec.Unmarshal(data.Materialize(), v)
     }
     
    -var _ baseCodec = Codec(nil)
    -var _ baseCodec = encoding.Codec(nil)
    +var _ encoding.CodecV2 = codecV1Bridge{}
    +
    +type codecV1Bridge struct {
    +	codecV0Bridge
    +	name string
    +}
    +
    +func (c codecV1Bridge) Name() string {
    +	return c.name
    +}
     
     // Codec defines the interface gRPC uses to encode and decode messages.
     // Note that implementations of this interface must be thread safe;
    diff --git a/vendor/google.golang.org/grpc/credentials/insecure/insecure.go b/vendor/google.golang.org/grpc/credentials/insecure/insecure.go
    index 82bee1443bfe..4c805c64462c 100644
    --- a/vendor/google.golang.org/grpc/credentials/insecure/insecure.go
    +++ b/vendor/google.golang.org/grpc/credentials/insecure/insecure.go
    @@ -40,7 +40,7 @@ func NewCredentials() credentials.TransportCredentials {
     // NoSecurity.
     type insecureTC struct{}
     
    -func (insecureTC) ClientHandshake(ctx context.Context, _ string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) {
    +func (insecureTC) ClientHandshake(_ context.Context, _ string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) {
     	return conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil
     }
     
    diff --git a/vendor/google.golang.org/grpc/credentials/tls.go b/vendor/google.golang.org/grpc/credentials/tls.go
    index 4114358545ef..e163a473df93 100644
    --- a/vendor/google.golang.org/grpc/credentials/tls.go
    +++ b/vendor/google.golang.org/grpc/credentials/tls.go
    @@ -200,25 +200,40 @@ var tls12ForbiddenCipherSuites = map[uint16]struct{}{
     
     // NewTLS uses c to construct a TransportCredentials based on TLS.
     func NewTLS(c *tls.Config) TransportCredentials {
    -	tc := &tlsCreds{credinternal.CloneTLSConfig(c)}
    -	tc.config.NextProtos = credinternal.AppendH2ToNextProtos(tc.config.NextProtos)
    +	config := applyDefaults(c)
    +	if config.GetConfigForClient != nil {
    +		oldFn := config.GetConfigForClient
    +		config.GetConfigForClient = func(hello *tls.ClientHelloInfo) (*tls.Config, error) {
    +			cfgForClient, err := oldFn(hello)
    +			if err != nil || cfgForClient == nil {
    +				return cfgForClient, err
    +			}
    +			return applyDefaults(cfgForClient), nil
    +		}
    +	}
    +	return &tlsCreds{config: config}
    +}
    +
    +func applyDefaults(c *tls.Config) *tls.Config {
    +	config := credinternal.CloneTLSConfig(c)
    +	config.NextProtos = credinternal.AppendH2ToNextProtos(config.NextProtos)
     	// If the user did not configure a MinVersion and did not configure a
     	// MaxVersion < 1.2, use MinVersion=1.2, which is required by
     	// https://datatracker.ietf.org/doc/html/rfc7540#section-9.2
    -	if tc.config.MinVersion == 0 && (tc.config.MaxVersion == 0 || tc.config.MaxVersion >= tls.VersionTLS12) {
    -		tc.config.MinVersion = tls.VersionTLS12
    +	if config.MinVersion == 0 && (config.MaxVersion == 0 || config.MaxVersion >= tls.VersionTLS12) {
    +		config.MinVersion = tls.VersionTLS12
     	}
     	// If the user did not configure CipherSuites, use all "secure" cipher
     	// suites reported by the TLS package, but remove some explicitly forbidden
     	// by https://datatracker.ietf.org/doc/html/rfc7540#appendix-A
    -	if tc.config.CipherSuites == nil {
    +	if config.CipherSuites == nil {
     		for _, cs := range tls.CipherSuites() {
     			if _, ok := tls12ForbiddenCipherSuites[cs.ID]; !ok {
    -				tc.config.CipherSuites = append(tc.config.CipherSuites, cs.ID)
    +				config.CipherSuites = append(config.CipherSuites, cs.ID)
     			}
     		}
     	}
    -	return tc
    +	return config
     }
     
     // NewClientTLSFromCert constructs TLS credentials from the provided root
    diff --git a/vendor/google.golang.org/grpc/dialoptions.go b/vendor/google.golang.org/grpc/dialoptions.go
    index f5453d48a53f..7494ae591f16 100644
    --- a/vendor/google.golang.org/grpc/dialoptions.go
    +++ b/vendor/google.golang.org/grpc/dialoptions.go
    @@ -33,6 +33,7 @@ import (
     	"google.golang.org/grpc/internal/binarylog"
     	"google.golang.org/grpc/internal/transport"
     	"google.golang.org/grpc/keepalive"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/grpc/resolver"
     	"google.golang.org/grpc/stats"
     )
    @@ -60,7 +61,7 @@ func init() {
     	internal.WithBinaryLogger = withBinaryLogger
     	internal.JoinDialOptions = newJoinDialOption
     	internal.DisableGlobalDialOptions = newDisableGlobalDialOptions
    -	internal.WithRecvBufferPool = withRecvBufferPool
    +	internal.WithBufferPool = withBufferPool
     }
     
     // dialOptions configure a Dial call. dialOptions are set by the DialOption
    @@ -86,13 +87,11 @@ type dialOptions struct {
     	disableServiceConfig        bool
     	disableRetry                bool
     	disableHealthCheck          bool
    -	healthCheckFunc             internal.HealthChecker
     	minConnectTimeout           func() time.Duration
     	defaultServiceConfig        *ServiceConfig // defaultServiceConfig is parsed from defaultServiceConfigRawJSON.
     	defaultServiceConfigRawJSON *string
     	resolvers                   []resolver.Builder
     	idleTimeout                 time.Duration
    -	recvBufferPool              SharedBufferPool
     	defaultScheme               string
     	maxCallAttempts             int
     }
    @@ -436,7 +435,7 @@ func WithTimeout(d time.Duration) DialOption {
     // option to true from the Control field. For a concrete example of how to do
     // this, see internal.NetDialerWithTCPKeepalive().
     //
    -// For more information, please see [issue 23459] in the Go github repo.
    +// For more information, please see [issue 23459] in the Go GitHub repo.
     //
     // [issue 23459]: https://github.com/golang/go/issues/23459
     func WithContextDialer(f func(context.Context, string) (net.Conn, error)) DialOption {
    @@ -445,10 +444,6 @@ func WithContextDialer(f func(context.Context, string) (net.Conn, error)) DialOp
     	})
     }
     
    -func init() {
    -	internal.WithHealthCheckFunc = withHealthCheckFunc
    -}
    -
     // WithDialer returns a DialOption that specifies a function to use for dialing
     // network addresses. If FailOnNonTempDialError() is set to true, and an error
     // is returned by f, gRPC checks the error's Temporary() method to decide if it
    @@ -518,6 +513,8 @@ func WithUserAgent(s string) DialOption {
     
     // WithKeepaliveParams returns a DialOption that specifies keepalive parameters
     // for the client transport.
    +//
    +// Keepalive is disabled by default.
     func WithKeepaliveParams(kp keepalive.ClientParameters) DialOption {
     	if kp.Time < internal.KeepaliveMinPingTime {
     		logger.Warningf("Adjusting keepalive ping interval to minimum period of %v", internal.KeepaliveMinPingTime)
    @@ -660,16 +657,6 @@ func WithDisableHealthCheck() DialOption {
     	})
     }
     
    -// withHealthCheckFunc replaces the default health check function with the
    -// provided one. It makes tests easier to change the health check function.
    -//
    -// For testing purpose only.
    -func withHealthCheckFunc(f internal.HealthChecker) DialOption {
    -	return newFuncDialOption(func(o *dialOptions) {
    -		o.healthCheckFunc = f
    -	})
    -}
    -
     func defaultDialOptions() dialOptions {
     	return dialOptions{
     		copts: transport.ConnectOptions{
    @@ -677,11 +664,10 @@ func defaultDialOptions() dialOptions {
     			WriteBufferSize: defaultWriteBufSize,
     			UseProxy:        true,
     			UserAgent:       grpcUA,
    +			BufferPool:      mem.DefaultBufferPool(),
     		},
     		bs:              internalbackoff.DefaultExponential,
    -		healthCheckFunc: internal.HealthCheckFunc,
     		idleTimeout:     30 * time.Minute,
    -		recvBufferPool:  nopBufferPool{},
     		defaultScheme:   "dns",
     		maxCallAttempts: defaultMaxCallAttempts,
     	}
    @@ -758,25 +744,8 @@ func WithMaxCallAttempts(n int) DialOption {
     	})
     }
     
    -// WithRecvBufferPool returns a DialOption that configures the ClientConn
    -// to use the provided shared buffer pool for parsing incoming messages. Depending
    -// on the application's workload, this could result in reduced memory allocation.
    -//
    -// If you are unsure about how to implement a memory pool but want to utilize one,
    -// begin with grpc.NewSharedBufferPool.
    -//
    -// Note: The shared buffer pool feature will not be active if any of the following
    -// options are used: WithStatsHandler, EnableTracing, or binary logging. In such
    -// cases, the shared buffer pool will be ignored.
    -//
    -// Deprecated: use experimental.WithRecvBufferPool instead.  Will be deleted in
    -// v1.60.0 or later.
    -func WithRecvBufferPool(bufferPool SharedBufferPool) DialOption {
    -	return withRecvBufferPool(bufferPool)
    -}
    -
    -func withRecvBufferPool(bufferPool SharedBufferPool) DialOption {
    +func withBufferPool(bufferPool mem.BufferPool) DialOption {
     	return newFuncDialOption(func(o *dialOptions) {
    -		o.recvBufferPool = bufferPool
    +		o.copts.BufferPool = bufferPool
     	})
     }
    diff --git a/vendor/google.golang.org/grpc/doc.go b/vendor/google.golang.org/grpc/doc.go
    index 0022859ad746..e7b532b6f806 100644
    --- a/vendor/google.golang.org/grpc/doc.go
    +++ b/vendor/google.golang.org/grpc/doc.go
    @@ -16,7 +16,7 @@
      *
      */
     
    -//go:generate ./regenerate.sh
    +//go:generate ./scripts/regenerate.sh
     
     /*
     Package grpc implements an RPC system called gRPC.
    diff --git a/vendor/google.golang.org/grpc/encoding/encoding.go b/vendor/google.golang.org/grpc/encoding/encoding.go
    index 5ebf88d7147f..11d0ae142c42 100644
    --- a/vendor/google.golang.org/grpc/encoding/encoding.go
    +++ b/vendor/google.golang.org/grpc/encoding/encoding.go
    @@ -94,7 +94,7 @@ type Codec interface {
     	Name() string
     }
     
    -var registeredCodecs = make(map[string]Codec)
    +var registeredCodecs = make(map[string]any)
     
     // RegisterCodec registers the provided Codec for use with all gRPC clients and
     // servers.
    @@ -126,5 +126,6 @@ func RegisterCodec(codec Codec) {
     //
     // The content-subtype is expected to be lowercase.
     func GetCodec(contentSubtype string) Codec {
    -	return registeredCodecs[contentSubtype]
    +	c, _ := registeredCodecs[contentSubtype].(Codec)
    +	return c
     }
    diff --git a/vendor/google.golang.org/grpc/encoding/encoding_v2.go b/vendor/google.golang.org/grpc/encoding/encoding_v2.go
    new file mode 100644
    index 000000000000..074c5e234a7b
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/encoding/encoding_v2.go
    @@ -0,0 +1,81 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +package encoding
    +
    +import (
    +	"strings"
    +
    +	"google.golang.org/grpc/mem"
    +)
    +
    +// CodecV2 defines the interface gRPC uses to encode and decode messages. Note
    +// that implementations of this interface must be thread safe; a CodecV2's
    +// methods can be called from concurrent goroutines.
    +type CodecV2 interface {
    +	// Marshal returns the wire format of v. The buffers in the returned
    +	// [mem.BufferSlice] must have at least one reference each, which will be freed
    +	// by gRPC when they are no longer needed.
    +	Marshal(v any) (out mem.BufferSlice, err error)
    +	// Unmarshal parses the wire format into v. Note that data will be freed as soon
    +	// as this function returns. If the codec wishes to guarantee access to the data
    +	// after this function, it must take its own reference that it frees when it is
    +	// no longer needed.
    +	Unmarshal(data mem.BufferSlice, v any) error
    +	// Name returns the name of the Codec implementation. The returned string
    +	// will be used as part of content type in transmission.  The result must be
    +	// static; the result cannot change between calls.
    +	Name() string
    +}
    +
    +// RegisterCodecV2 registers the provided CodecV2 for use with all gRPC clients and
    +// servers.
    +//
    +// The CodecV2 will be stored and looked up by result of its Name() method, which
    +// should match the content-subtype of the encoding handled by the CodecV2.  This
    +// is case-insensitive, and is stored and looked up as lowercase.  If the
    +// result of calling Name() is an empty string, RegisterCodecV2 will panic. See
    +// Content-Type on
    +// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for
    +// more details.
    +//
    +// If both a Codec and CodecV2 are registered with the same name, the CodecV2
    +// will be used.
    +//
    +// NOTE: this function must only be called during initialization time (i.e. in
    +// an init() function), and is not thread-safe.  If multiple Codecs are
    +// registered with the same name, the one registered last will take effect.
    +func RegisterCodecV2(codec CodecV2) {
    +	if codec == nil {
    +		panic("cannot register a nil CodecV2")
    +	}
    +	if codec.Name() == "" {
    +		panic("cannot register CodecV2 with empty string result for Name()")
    +	}
    +	contentSubtype := strings.ToLower(codec.Name())
    +	registeredCodecs[contentSubtype] = codec
    +}
    +
    +// GetCodecV2 gets a registered CodecV2 by content-subtype, or nil if no CodecV2 is
    +// registered for the content-subtype.
    +//
    +// The content-subtype is expected to be lowercase.
    +func GetCodecV2(contentSubtype string) CodecV2 {
    +	c, _ := registeredCodecs[contentSubtype].(CodecV2)
    +	return c
    +}
    diff --git a/vendor/google.golang.org/grpc/encoding/proto/proto.go b/vendor/google.golang.org/grpc/encoding/proto/proto.go
    index 66d5cdf03ec5..ceec319dd2fb 100644
    --- a/vendor/google.golang.org/grpc/encoding/proto/proto.go
    +++ b/vendor/google.golang.org/grpc/encoding/proto/proto.go
    @@ -1,6 +1,6 @@
     /*
      *
    - * Copyright 2018 gRPC authors.
    + * Copyright 2024 gRPC authors.
      *
      * Licensed under the Apache License, Version 2.0 (the "License");
      * you may not use this file except in compliance with the License.
    @@ -24,6 +24,7 @@ import (
     	"fmt"
     
     	"google.golang.org/grpc/encoding"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/protobuf/proto"
     	"google.golang.org/protobuf/protoadapt"
     )
    @@ -32,28 +33,51 @@ import (
     const Name = "proto"
     
     func init() {
    -	encoding.RegisterCodec(codec{})
    +	encoding.RegisterCodecV2(&codecV2{})
     }
     
    -// codec is a Codec implementation with protobuf. It is the default codec for gRPC.
    -type codec struct{}
    +// codec is a CodecV2 implementation with protobuf. It is the default codec for
    +// gRPC.
    +type codecV2 struct{}
     
    -func (codec) Marshal(v any) ([]byte, error) {
    +func (c *codecV2) Marshal(v any) (data mem.BufferSlice, err error) {
     	vv := messageV2Of(v)
     	if vv == nil {
    -		return nil, fmt.Errorf("failed to marshal, message is %T, want proto.Message", v)
    +		return nil, fmt.Errorf("proto: failed to marshal, message is %T, want proto.Message", v)
     	}
     
    -	return proto.Marshal(vv)
    +	size := proto.Size(vv)
    +	if mem.IsBelowBufferPoolingThreshold(size) {
    +		buf, err := proto.Marshal(vv)
    +		if err != nil {
    +			return nil, err
    +		}
    +		data = append(data, mem.SliceBuffer(buf))
    +	} else {
    +		pool := mem.DefaultBufferPool()
    +		buf := pool.Get(size)
    +		if _, err := (proto.MarshalOptions{}).MarshalAppend((*buf)[:0], vv); err != nil {
    +			pool.Put(buf)
    +			return nil, err
    +		}
    +		data = append(data, mem.NewBuffer(buf, pool))
    +	}
    +
    +	return data, nil
     }
     
    -func (codec) Unmarshal(data []byte, v any) error {
    +func (c *codecV2) Unmarshal(data mem.BufferSlice, v any) (err error) {
     	vv := messageV2Of(v)
     	if vv == nil {
     		return fmt.Errorf("failed to unmarshal, message is %T, want proto.Message", v)
     	}
     
    -	return proto.Unmarshal(data, vv)
    +	buf := data.MaterializeToBuffer(mem.DefaultBufferPool())
    +	defer buf.Free()
    +	// TODO: Upgrade proto.Unmarshal to support mem.BufferSlice. Right now, it's not
    +	//  really possible without a major overhaul of the proto package, but the
    +	//  vtprotobuf library may be able to support this.
    +	return proto.Unmarshal(buf.ReadOnlyData(), vv)
     }
     
     func messageV2Of(v any) proto.Message {
    @@ -67,6 +91,6 @@ func messageV2Of(v any) proto.Message {
     	return nil
     }
     
    -func (codec) Name() string {
    +func (c *codecV2) Name() string {
     	return Name
     }
    diff --git a/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go b/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go
    new file mode 100644
    index 000000000000..ad75313a18e1
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go
    @@ -0,0 +1,270 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +package stats
    +
    +import (
    +	"maps"
    +
    +	"google.golang.org/grpc/grpclog"
    +	"google.golang.org/grpc/internal"
    +	"google.golang.org/grpc/stats"
    +)
    +
    +func init() {
    +	internal.SnapshotMetricRegistryForTesting = snapshotMetricsRegistryForTesting
    +}
    +
    +var logger = grpclog.Component("metrics-registry")
    +
    +// DefaultMetrics are the default metrics registered through global metrics
    +// registry. This is written to at initialization time only, and is read only
    +// after initialization.
    +var DefaultMetrics = stats.NewMetricSet()
    +
    +// MetricDescriptor is the data for a registered metric.
    +type MetricDescriptor struct {
    +	// The name of this metric. This name must be unique across the whole binary
    +	// (including any per call metrics). See
    +	// https://github.com/grpc/proposal/blob/master/A79-non-per-call-metrics-architecture.md#metric-instrument-naming-conventions
    +	// for metric naming conventions.
    +	Name string
    +	// The description of this metric.
    +	Description string
    +	// The unit (e.g. entries, seconds) of this metric.
    +	Unit string
    +	// The required label keys for this metric. These are intended to
    +	// metrics emitted from a stats handler.
    +	Labels []string
    +	// The optional label keys for this metric. These are intended to attached
    +	// to metrics emitted from a stats handler if configured.
    +	OptionalLabels []string
    +	// Whether this metric is on by default.
    +	Default bool
    +	// The type of metric. This is set by the metric registry, and not intended
    +	// to be set by a component registering a metric.
    +	Type MetricType
    +	// Bounds are the bounds of this metric. This only applies to histogram
    +	// metrics. If unset or set with length 0, stats handlers will fall back to
    +	// default bounds.
    +	Bounds []float64
    +}
    +
    +// MetricType is the type of metric.
    +type MetricType int
    +
    +// Type of metric supported by this instrument registry.
    +const (
    +	MetricTypeIntCount MetricType = iota
    +	MetricTypeFloatCount
    +	MetricTypeIntHisto
    +	MetricTypeFloatHisto
    +	MetricTypeIntGauge
    +)
    +
    +// Int64CountHandle is a typed handle for a int count metric. This handle
    +// is passed at the recording point in order to know which metric to record
    +// on.
    +type Int64CountHandle MetricDescriptor
    +
    +// Descriptor returns the int64 count handle typecast to a pointer to a
    +// MetricDescriptor.
    +func (h *Int64CountHandle) Descriptor() *MetricDescriptor {
    +	return (*MetricDescriptor)(h)
    +}
    +
    +// Record records the int64 count value on the metrics recorder provided.
    +func (h *Int64CountHandle) Record(recorder MetricsRecorder, incr int64, labels ...string) {
    +	recorder.RecordInt64Count(h, incr, labels...)
    +}
    +
    +// Float64CountHandle is a typed handle for a float count metric. This handle is
    +// passed at the recording point in order to know which metric to record on.
    +type Float64CountHandle MetricDescriptor
    +
    +// Descriptor returns the float64 count handle typecast to a pointer to a
    +// MetricDescriptor.
    +func (h *Float64CountHandle) Descriptor() *MetricDescriptor {
    +	return (*MetricDescriptor)(h)
    +}
    +
    +// Record records the float64 count value on the metrics recorder provided.
    +func (h *Float64CountHandle) Record(recorder MetricsRecorder, incr float64, labels ...string) {
    +	recorder.RecordFloat64Count(h, incr, labels...)
    +}
    +
    +// Int64HistoHandle is a typed handle for an int histogram metric. This handle
    +// is passed at the recording point in order to know which metric to record on.
    +type Int64HistoHandle MetricDescriptor
    +
    +// Descriptor returns the int64 histo handle typecast to a pointer to a
    +// MetricDescriptor.
    +func (h *Int64HistoHandle) Descriptor() *MetricDescriptor {
    +	return (*MetricDescriptor)(h)
    +}
    +
    +// Record records the int64 histo value on the metrics recorder provided.
    +func (h *Int64HistoHandle) Record(recorder MetricsRecorder, incr int64, labels ...string) {
    +	recorder.RecordInt64Histo(h, incr, labels...)
    +}
    +
    +// Float64HistoHandle is a typed handle for a float histogram metric. This
    +// handle is passed at the recording point in order to know which metric to
    +// record on.
    +type Float64HistoHandle MetricDescriptor
    +
    +// Descriptor returns the float64 histo handle typecast to a pointer to a
    +// MetricDescriptor.
    +func (h *Float64HistoHandle) Descriptor() *MetricDescriptor {
    +	return (*MetricDescriptor)(h)
    +}
    +
    +// Record records the float64 histo value on the metrics recorder provided.
    +func (h *Float64HistoHandle) Record(recorder MetricsRecorder, incr float64, labels ...string) {
    +	recorder.RecordFloat64Histo(h, incr, labels...)
    +}
    +
    +// Int64GaugeHandle is a typed handle for an int gauge metric. This handle is
    +// passed at the recording point in order to know which metric to record on.
    +type Int64GaugeHandle MetricDescriptor
    +
    +// Descriptor returns the int64 gauge handle typecast to a pointer to a
    +// MetricDescriptor.
    +func (h *Int64GaugeHandle) Descriptor() *MetricDescriptor {
    +	return (*MetricDescriptor)(h)
    +}
    +
    +// Record records the int64 histo value on the metrics recorder provided.
    +func (h *Int64GaugeHandle) Record(recorder MetricsRecorder, incr int64, labels ...string) {
    +	recorder.RecordInt64Gauge(h, incr, labels...)
    +}
    +
    +// registeredMetrics are the registered metric descriptor names.
    +var registeredMetrics = make(map[string]bool)
    +
    +// metricsRegistry contains all of the registered metrics.
    +//
    +// This is written to only at init time, and read only after that.
    +var metricsRegistry = make(map[string]*MetricDescriptor)
    +
    +// DescriptorForMetric returns the MetricDescriptor from the global registry.
    +//
    +// Returns nil if MetricDescriptor not present.
    +func DescriptorForMetric(metricName string) *MetricDescriptor {
    +	return metricsRegistry[metricName]
    +}
    +
    +func registerMetric(metricName string, def bool) {
    +	if registeredMetrics[metricName] {
    +		logger.Fatalf("metric %v already registered", metricName)
    +	}
    +	registeredMetrics[metricName] = true
    +	if def {
    +		DefaultMetrics = DefaultMetrics.Add(metricName)
    +	}
    +}
    +
    +// RegisterInt64Count registers the metric description onto the global registry.
    +// It returns a typed handle to use to recording data.
    +//
    +// NOTE: this function must only be called during initialization time (i.e. in
    +// an init() function), and is not thread-safe. If multiple metrics are
    +// registered with the same name, this function will panic.
    +func RegisterInt64Count(descriptor MetricDescriptor) *Int64CountHandle {
    +	registerMetric(descriptor.Name, descriptor.Default)
    +	descriptor.Type = MetricTypeIntCount
    +	descPtr := &descriptor
    +	metricsRegistry[descriptor.Name] = descPtr
    +	return (*Int64CountHandle)(descPtr)
    +}
    +
    +// RegisterFloat64Count registers the metric description onto the global
    +// registry. It returns a typed handle to use to recording data.
    +//
    +// NOTE: this function must only be called during initialization time (i.e. in
    +// an init() function), and is not thread-safe. If multiple metrics are
    +// registered with the same name, this function will panic.
    +func RegisterFloat64Count(descriptor MetricDescriptor) *Float64CountHandle {
    +	registerMetric(descriptor.Name, descriptor.Default)
    +	descriptor.Type = MetricTypeFloatCount
    +	descPtr := &descriptor
    +	metricsRegistry[descriptor.Name] = descPtr
    +	return (*Float64CountHandle)(descPtr)
    +}
    +
    +// RegisterInt64Histo registers the metric description onto the global registry.
    +// It returns a typed handle to use to recording data.
    +//
    +// NOTE: this function must only be called during initialization time (i.e. in
    +// an init() function), and is not thread-safe. If multiple metrics are
    +// registered with the same name, this function will panic.
    +func RegisterInt64Histo(descriptor MetricDescriptor) *Int64HistoHandle {
    +	registerMetric(descriptor.Name, descriptor.Default)
    +	descriptor.Type = MetricTypeIntHisto
    +	descPtr := &descriptor
    +	metricsRegistry[descriptor.Name] = descPtr
    +	return (*Int64HistoHandle)(descPtr)
    +}
    +
    +// RegisterFloat64Histo registers the metric description onto the global
    +// registry. It returns a typed handle to use to recording data.
    +//
    +// NOTE: this function must only be called during initialization time (i.e. in
    +// an init() function), and is not thread-safe. If multiple metrics are
    +// registered with the same name, this function will panic.
    +func RegisterFloat64Histo(descriptor MetricDescriptor) *Float64HistoHandle {
    +	registerMetric(descriptor.Name, descriptor.Default)
    +	descriptor.Type = MetricTypeFloatHisto
    +	descPtr := &descriptor
    +	metricsRegistry[descriptor.Name] = descPtr
    +	return (*Float64HistoHandle)(descPtr)
    +}
    +
    +// RegisterInt64Gauge registers the metric description onto the global registry.
    +// It returns a typed handle to use to recording data.
    +//
    +// NOTE: this function must only be called during initialization time (i.e. in
    +// an init() function), and is not thread-safe. If multiple metrics are
    +// registered with the same name, this function will panic.
    +func RegisterInt64Gauge(descriptor MetricDescriptor) *Int64GaugeHandle {
    +	registerMetric(descriptor.Name, descriptor.Default)
    +	descriptor.Type = MetricTypeIntGauge
    +	descPtr := &descriptor
    +	metricsRegistry[descriptor.Name] = descPtr
    +	return (*Int64GaugeHandle)(descPtr)
    +}
    +
    +// snapshotMetricsRegistryForTesting snapshots the global data of the metrics
    +// registry. Returns a cleanup function that sets the metrics registry to its
    +// original state.
    +func snapshotMetricsRegistryForTesting() func() {
    +	oldDefaultMetrics := DefaultMetrics
    +	oldRegisteredMetrics := registeredMetrics
    +	oldMetricsRegistry := metricsRegistry
    +
    +	registeredMetrics = make(map[string]bool)
    +	metricsRegistry = make(map[string]*MetricDescriptor)
    +	maps.Copy(registeredMetrics, registeredMetrics)
    +	maps.Copy(metricsRegistry, metricsRegistry)
    +
    +	return func() {
    +		DefaultMetrics = oldDefaultMetrics
    +		registeredMetrics = oldRegisteredMetrics
    +		metricsRegistry = oldMetricsRegistry
    +	}
    +}
    diff --git a/vendor/google.golang.org/grpc/experimental/stats/metrics.go b/vendor/google.golang.org/grpc/experimental/stats/metrics.go
    new file mode 100644
    index 000000000000..ee1423605ab4
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/experimental/stats/metrics.go
    @@ -0,0 +1,54 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +// Package stats contains experimental metrics/stats API's.
    +package stats
    +
    +import "google.golang.org/grpc/stats"
    +
    +// MetricsRecorder records on metrics derived from metric registry.
    +type MetricsRecorder interface {
    +	// RecordInt64Count records the measurement alongside labels on the int
    +	// count associated with the provided handle.
    +	RecordInt64Count(handle *Int64CountHandle, incr int64, labels ...string)
    +	// RecordFloat64Count records the measurement alongside labels on the float
    +	// count associated with the provided handle.
    +	RecordFloat64Count(handle *Float64CountHandle, incr float64, labels ...string)
    +	// RecordInt64Histo records the measurement alongside labels on the int
    +	// histo associated with the provided handle.
    +	RecordInt64Histo(handle *Int64HistoHandle, incr int64, labels ...string)
    +	// RecordFloat64Histo records the measurement alongside labels on the float
    +	// histo associated with the provided handle.
    +	RecordFloat64Histo(handle *Float64HistoHandle, incr float64, labels ...string)
    +	// RecordInt64Gauge records the measurement alongside labels on the int
    +	// gauge associated with the provided handle.
    +	RecordInt64Gauge(handle *Int64GaugeHandle, incr int64, labels ...string)
    +}
    +
    +// Metrics is an experimental legacy alias of the now-stable stats.MetricSet.
    +// Metrics will be deleted in a future release.
    +type Metrics = stats.MetricSet
    +
    +// Metric was replaced by direct usage of strings.
    +type Metric = string
    +
    +// NewMetrics is an experimental legacy alias of the now-stable
    +// stats.NewMetricSet.  NewMetrics will be deleted in a future release.
    +func NewMetrics(metrics ...Metric) *Metrics {
    +	return stats.NewMetricSet(metrics...)
    +}
    diff --git a/vendor/google.golang.org/grpc/grpclog/component.go b/vendor/google.golang.org/grpc/grpclog/component.go
    index ac73c9ced255..f1ae080dcb81 100644
    --- a/vendor/google.golang.org/grpc/grpclog/component.go
    +++ b/vendor/google.golang.org/grpc/grpclog/component.go
    @@ -20,8 +20,6 @@ package grpclog
     
     import (
     	"fmt"
    -
    -	"google.golang.org/grpc/internal/grpclog"
     )
     
     // componentData records the settings for a component.
    @@ -33,22 +31,22 @@ var cache = map[string]*componentData{}
     
     func (c *componentData) InfoDepth(depth int, args ...any) {
     	args = append([]any{"[" + string(c.name) + "]"}, args...)
    -	grpclog.InfoDepth(depth+1, args...)
    +	InfoDepth(depth+1, args...)
     }
     
     func (c *componentData) WarningDepth(depth int, args ...any) {
     	args = append([]any{"[" + string(c.name) + "]"}, args...)
    -	grpclog.WarningDepth(depth+1, args...)
    +	WarningDepth(depth+1, args...)
     }
     
     func (c *componentData) ErrorDepth(depth int, args ...any) {
     	args = append([]any{"[" + string(c.name) + "]"}, args...)
    -	grpclog.ErrorDepth(depth+1, args...)
    +	ErrorDepth(depth+1, args...)
     }
     
     func (c *componentData) FatalDepth(depth int, args ...any) {
     	args = append([]any{"[" + string(c.name) + "]"}, args...)
    -	grpclog.FatalDepth(depth+1, args...)
    +	FatalDepth(depth+1, args...)
     }
     
     func (c *componentData) Info(args ...any) {
    diff --git a/vendor/google.golang.org/grpc/grpclog/grpclog.go b/vendor/google.golang.org/grpc/grpclog/grpclog.go
    index 16928c9cb993..db320105e64e 100644
    --- a/vendor/google.golang.org/grpc/grpclog/grpclog.go
    +++ b/vendor/google.golang.org/grpc/grpclog/grpclog.go
    @@ -18,18 +18,15 @@
     
     // Package grpclog defines logging for grpc.
     //
    -// All logs in transport and grpclb packages only go to verbose level 2.
    -// All logs in other packages in grpc are logged in spite of the verbosity level.
    -//
    -// In the default logger,
    -// severity level can be set by environment variable GRPC_GO_LOG_SEVERITY_LEVEL,
    -// verbosity level can be set by GRPC_GO_LOG_VERBOSITY_LEVEL.
    -package grpclog // import "google.golang.org/grpc/grpclog"
    +// In the default logger, severity level can be set by environment variable
    +// GRPC_GO_LOG_SEVERITY_LEVEL, verbosity level can be set by
    +// GRPC_GO_LOG_VERBOSITY_LEVEL.
    +package grpclog
     
     import (
     	"os"
     
    -	"google.golang.org/grpc/internal/grpclog"
    +	"google.golang.org/grpc/grpclog/internal"
     )
     
     func init() {
    @@ -38,58 +35,58 @@ func init() {
     
     // V reports whether verbosity level l is at least the requested verbose level.
     func V(l int) bool {
    -	return grpclog.Logger.V(l)
    +	return internal.LoggerV2Impl.V(l)
     }
     
     // Info logs to the INFO log.
     func Info(args ...any) {
    -	grpclog.Logger.Info(args...)
    +	internal.LoggerV2Impl.Info(args...)
     }
     
     // Infof logs to the INFO log. Arguments are handled in the manner of fmt.Printf.
     func Infof(format string, args ...any) {
    -	grpclog.Logger.Infof(format, args...)
    +	internal.LoggerV2Impl.Infof(format, args...)
     }
     
     // Infoln logs to the INFO log. Arguments are handled in the manner of fmt.Println.
     func Infoln(args ...any) {
    -	grpclog.Logger.Infoln(args...)
    +	internal.LoggerV2Impl.Infoln(args...)
     }
     
     // Warning logs to the WARNING log.
     func Warning(args ...any) {
    -	grpclog.Logger.Warning(args...)
    +	internal.LoggerV2Impl.Warning(args...)
     }
     
     // Warningf logs to the WARNING log. Arguments are handled in the manner of fmt.Printf.
     func Warningf(format string, args ...any) {
    -	grpclog.Logger.Warningf(format, args...)
    +	internal.LoggerV2Impl.Warningf(format, args...)
     }
     
     // Warningln logs to the WARNING log. Arguments are handled in the manner of fmt.Println.
     func Warningln(args ...any) {
    -	grpclog.Logger.Warningln(args...)
    +	internal.LoggerV2Impl.Warningln(args...)
     }
     
     // Error logs to the ERROR log.
     func Error(args ...any) {
    -	grpclog.Logger.Error(args...)
    +	internal.LoggerV2Impl.Error(args...)
     }
     
     // Errorf logs to the ERROR log. Arguments are handled in the manner of fmt.Printf.
     func Errorf(format string, args ...any) {
    -	grpclog.Logger.Errorf(format, args...)
    +	internal.LoggerV2Impl.Errorf(format, args...)
     }
     
     // Errorln logs to the ERROR log. Arguments are handled in the manner of fmt.Println.
     func Errorln(args ...any) {
    -	grpclog.Logger.Errorln(args...)
    +	internal.LoggerV2Impl.Errorln(args...)
     }
     
     // Fatal logs to the FATAL log. Arguments are handled in the manner of fmt.Print.
     // It calls os.Exit() with exit code 1.
     func Fatal(args ...any) {
    -	grpclog.Logger.Fatal(args...)
    +	internal.LoggerV2Impl.Fatal(args...)
     	// Make sure fatal logs will exit.
     	os.Exit(1)
     }
    @@ -97,15 +94,15 @@ func Fatal(args ...any) {
     // Fatalf logs to the FATAL log. Arguments are handled in the manner of fmt.Printf.
     // It calls os.Exit() with exit code 1.
     func Fatalf(format string, args ...any) {
    -	grpclog.Logger.Fatalf(format, args...)
    +	internal.LoggerV2Impl.Fatalf(format, args...)
     	// Make sure fatal logs will exit.
     	os.Exit(1)
     }
     
     // Fatalln logs to the FATAL log. Arguments are handled in the manner of fmt.Println.
    -// It calle os.Exit()) with exit code 1.
    +// It calls os.Exit() with exit code 1.
     func Fatalln(args ...any) {
    -	grpclog.Logger.Fatalln(args...)
    +	internal.LoggerV2Impl.Fatalln(args...)
     	// Make sure fatal logs will exit.
     	os.Exit(1)
     }
    @@ -114,19 +111,76 @@ func Fatalln(args ...any) {
     //
     // Deprecated: use Info.
     func Print(args ...any) {
    -	grpclog.Logger.Info(args...)
    +	internal.LoggerV2Impl.Info(args...)
     }
     
     // Printf prints to the logger. Arguments are handled in the manner of fmt.Printf.
     //
     // Deprecated: use Infof.
     func Printf(format string, args ...any) {
    -	grpclog.Logger.Infof(format, args...)
    +	internal.LoggerV2Impl.Infof(format, args...)
     }
     
     // Println prints to the logger. Arguments are handled in the manner of fmt.Println.
     //
     // Deprecated: use Infoln.
     func Println(args ...any) {
    -	grpclog.Logger.Infoln(args...)
    +	internal.LoggerV2Impl.Infoln(args...)
    +}
    +
    +// InfoDepth logs to the INFO log at the specified depth.
    +//
    +// # Experimental
    +//
    +// Notice: This API is EXPERIMENTAL and may be changed or removed in a
    +// later release.
    +func InfoDepth(depth int, args ...any) {
    +	if internal.DepthLoggerV2Impl != nil {
    +		internal.DepthLoggerV2Impl.InfoDepth(depth, args...)
    +	} else {
    +		internal.LoggerV2Impl.Infoln(args...)
    +	}
    +}
    +
    +// WarningDepth logs to the WARNING log at the specified depth.
    +//
    +// # Experimental
    +//
    +// Notice: This API is EXPERIMENTAL and may be changed or removed in a
    +// later release.
    +func WarningDepth(depth int, args ...any) {
    +	if internal.DepthLoggerV2Impl != nil {
    +		internal.DepthLoggerV2Impl.WarningDepth(depth, args...)
    +	} else {
    +		internal.LoggerV2Impl.Warningln(args...)
    +	}
    +}
    +
    +// ErrorDepth logs to the ERROR log at the specified depth.
    +//
    +// # Experimental
    +//
    +// Notice: This API is EXPERIMENTAL and may be changed or removed in a
    +// later release.
    +func ErrorDepth(depth int, args ...any) {
    +	if internal.DepthLoggerV2Impl != nil {
    +		internal.DepthLoggerV2Impl.ErrorDepth(depth, args...)
    +	} else {
    +		internal.LoggerV2Impl.Errorln(args...)
    +	}
    +}
    +
    +// FatalDepth logs to the FATAL log at the specified depth.
    +//
    +// # Experimental
    +//
    +// Notice: This API is EXPERIMENTAL and may be changed or removed in a
    +// later release.
    +func FatalDepth(depth int, args ...any) {
    +	if internal.DepthLoggerV2Impl != nil {
    +		internal.DepthLoggerV2Impl.FatalDepth(depth, args...)
    +	} else {
    +		internal.LoggerV2Impl.Fatalln(args...)
    +	}
    +	os.Exit(1)
     }
    diff --git a/vendor/google.golang.org/grpc/grpclog/internal/grpclog.go b/vendor/google.golang.org/grpc/grpclog/internal/grpclog.go
    new file mode 100644
    index 000000000000..59c03bc14c2a
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/grpclog/internal/grpclog.go
    @@ -0,0 +1,26 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +// Package internal contains functionality internal to the grpclog package.
    +package internal
    +
    +// LoggerV2Impl is the logger used for the non-depth log functions.
    +var LoggerV2Impl LoggerV2
    +
    +// DepthLoggerV2Impl is the logger used for the depth log functions.
    +var DepthLoggerV2Impl DepthLoggerV2
    diff --git a/vendor/google.golang.org/grpc/grpclog/internal/logger.go b/vendor/google.golang.org/grpc/grpclog/internal/logger.go
    new file mode 100644
    index 000000000000..e524fdd40b23
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/grpclog/internal/logger.go
    @@ -0,0 +1,87 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +package internal
    +
    +// Logger mimics golang's standard Logger as an interface.
    +//
    +// Deprecated: use LoggerV2.
    +type Logger interface {
    +	Fatal(args ...any)
    +	Fatalf(format string, args ...any)
    +	Fatalln(args ...any)
    +	Print(args ...any)
    +	Printf(format string, args ...any)
    +	Println(args ...any)
    +}
    +
    +// LoggerWrapper wraps Logger into a LoggerV2.
    +type LoggerWrapper struct {
    +	Logger
    +}
    +
    +// Info logs to INFO log. Arguments are handled in the manner of fmt.Print.
    +func (l *LoggerWrapper) Info(args ...any) {
    +	l.Logger.Print(args...)
    +}
    +
    +// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println.
    +func (l *LoggerWrapper) Infoln(args ...any) {
    +	l.Logger.Println(args...)
    +}
    +
    +// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.
    +func (l *LoggerWrapper) Infof(format string, args ...any) {
    +	l.Logger.Printf(format, args...)
    +}
    +
    +// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print.
    +func (l *LoggerWrapper) Warning(args ...any) {
    +	l.Logger.Print(args...)
    +}
    +
    +// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println.
    +func (l *LoggerWrapper) Warningln(args ...any) {
    +	l.Logger.Println(args...)
    +}
    +
    +// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.
    +func (l *LoggerWrapper) Warningf(format string, args ...any) {
    +	l.Logger.Printf(format, args...)
    +}
    +
    +// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print.
    +func (l *LoggerWrapper) Error(args ...any) {
    +	l.Logger.Print(args...)
    +}
    +
    +// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println.
    +func (l *LoggerWrapper) Errorln(args ...any) {
    +	l.Logger.Println(args...)
    +}
    +
    +// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.
    +func (l *LoggerWrapper) Errorf(format string, args ...any) {
    +	l.Logger.Printf(format, args...)
    +}
    +
    +// V reports whether verbosity level l is at least the requested verbose level.
    +func (*LoggerWrapper) V(int) bool {
    +	// Returns true for all verbose level.
    +	return true
    +}
    diff --git a/vendor/google.golang.org/grpc/grpclog/internal/loggerv2.go b/vendor/google.golang.org/grpc/grpclog/internal/loggerv2.go
    new file mode 100644
    index 000000000000..ed90060c3cba
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/grpclog/internal/loggerv2.go
    @@ -0,0 +1,267 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +package internal
    +
    +import (
    +	"encoding/json"
    +	"fmt"
    +	"io"
    +	"log"
    +	"os"
    +)
    +
    +// LoggerV2 does underlying logging work for grpclog.
    +type LoggerV2 interface {
    +	// Info logs to INFO log. Arguments are handled in the manner of fmt.Print.
    +	Info(args ...any)
    +	// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println.
    +	Infoln(args ...any)
    +	// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.
    +	Infof(format string, args ...any)
    +	// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print.
    +	Warning(args ...any)
    +	// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println.
    +	Warningln(args ...any)
    +	// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.
    +	Warningf(format string, args ...any)
    +	// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print.
    +	Error(args ...any)
    +	// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println.
    +	Errorln(args ...any)
    +	// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.
    +	Errorf(format string, args ...any)
    +	// Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print.
    +	// gRPC ensures that all Fatal logs will exit with os.Exit(1).
    +	// Implementations may also call os.Exit() with a non-zero exit code.
    +	Fatal(args ...any)
    +	// Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println.
    +	// gRPC ensures that all Fatal logs will exit with os.Exit(1).
    +	// Implementations may also call os.Exit() with a non-zero exit code.
    +	Fatalln(args ...any)
    +	// Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.
    +	// gRPC ensures that all Fatal logs will exit with os.Exit(1).
    +	// Implementations may also call os.Exit() with a non-zero exit code.
    +	Fatalf(format string, args ...any)
    +	// V reports whether verbosity level l is at least the requested verbose level.
    +	V(l int) bool
    +}
    +
    +// DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements
    +// DepthLoggerV2, the below functions will be called with the appropriate stack
    +// depth set for trivial functions the logger may ignore.
    +//
    +// # Experimental
    +//
    +// Notice: This type is EXPERIMENTAL and may be changed or removed in a
    +// later release.
    +type DepthLoggerV2 interface {
    +	LoggerV2
    +	// InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println.
    +	InfoDepth(depth int, args ...any)
    +	// WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println.
    +	WarningDepth(depth int, args ...any)
    +	// ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println.
    +	ErrorDepth(depth int, args ...any)
    +	// FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println.
    +	FatalDepth(depth int, args ...any)
    +}
    +
    +const (
    +	// infoLog indicates Info severity.
    +	infoLog int = iota
    +	// warningLog indicates Warning severity.
    +	warningLog
    +	// errorLog indicates Error severity.
    +	errorLog
    +	// fatalLog indicates Fatal severity.
    +	fatalLog
    +)
    +
    +// severityName contains the string representation of each severity.
    +var severityName = []string{
    +	infoLog:    "INFO",
    +	warningLog: "WARNING",
    +	errorLog:   "ERROR",
    +	fatalLog:   "FATAL",
    +}
    +
    +// sprintf is fmt.Sprintf.
    +// These vars exist to make it possible to test that expensive format calls aren't made unnecessarily.
    +var sprintf = fmt.Sprintf
    +
    +// sprint is fmt.Sprint.
    +// These vars exist to make it possible to test that expensive format calls aren't made unnecessarily.
    +var sprint = fmt.Sprint
    +
    +// sprintln is fmt.Sprintln.
    +// These vars exist to make it possible to test that expensive format calls aren't made unnecessarily.
    +var sprintln = fmt.Sprintln
    +
    +// exit is os.Exit.
    +// This var exists to make it possible to test functions calling os.Exit.
    +var exit = os.Exit
    +
    +// loggerT is the default logger used by grpclog.
    +type loggerT struct {
    +	m          []*log.Logger
    +	v          int
    +	jsonFormat bool
    +}
    +
    +func (g *loggerT) output(severity int, s string) {
    +	sevStr := severityName[severity]
    +	if !g.jsonFormat {
    +		g.m[severity].Output(2, sevStr+": "+s)
    +		return
    +	}
    +	// TODO: we can also include the logging component, but that needs more
    +	// (API) changes.
    +	b, _ := json.Marshal(map[string]string{
    +		"severity": sevStr,
    +		"message":  s,
    +	})
    +	g.m[severity].Output(2, string(b))
    +}
    +
    +func (g *loggerT) printf(severity int, format string, args ...any) {
    +	// Note the discard check is duplicated in each print func, rather than in
    +	// output, to avoid the expensive Sprint calls.
    +	// De-duplicating this by moving to output would be a significant performance regression!
    +	if lg := g.m[severity]; lg.Writer() == io.Discard {
    +		return
    +	}
    +	g.output(severity, sprintf(format, args...))
    +}
    +
    +func (g *loggerT) print(severity int, v ...any) {
    +	if lg := g.m[severity]; lg.Writer() == io.Discard {
    +		return
    +	}
    +	g.output(severity, sprint(v...))
    +}
    +
    +func (g *loggerT) println(severity int, v ...any) {
    +	if lg := g.m[severity]; lg.Writer() == io.Discard {
    +		return
    +	}
    +	g.output(severity, sprintln(v...))
    +}
    +
    +func (g *loggerT) Info(args ...any) {
    +	g.print(infoLog, args...)
    +}
    +
    +func (g *loggerT) Infoln(args ...any) {
    +	g.println(infoLog, args...)
    +}
    +
    +func (g *loggerT) Infof(format string, args ...any) {
    +	g.printf(infoLog, format, args...)
    +}
    +
    +func (g *loggerT) Warning(args ...any) {
    +	g.print(warningLog, args...)
    +}
    +
    +func (g *loggerT) Warningln(args ...any) {
    +	g.println(warningLog, args...)
    +}
    +
    +func (g *loggerT) Warningf(format string, args ...any) {
    +	g.printf(warningLog, format, args...)
    +}
    +
    +func (g *loggerT) Error(args ...any) {
    +	g.print(errorLog, args...)
    +}
    +
    +func (g *loggerT) Errorln(args ...any) {
    +	g.println(errorLog, args...)
    +}
    +
    +func (g *loggerT) Errorf(format string, args ...any) {
    +	g.printf(errorLog, format, args...)
    +}
    +
    +func (g *loggerT) Fatal(args ...any) {
    +	g.print(fatalLog, args...)
    +	exit(1)
    +}
    +
    +func (g *loggerT) Fatalln(args ...any) {
    +	g.println(fatalLog, args...)
    +	exit(1)
    +}
    +
    +func (g *loggerT) Fatalf(format string, args ...any) {
    +	g.printf(fatalLog, format, args...)
    +	exit(1)
    +}
    +
    +func (g *loggerT) V(l int) bool {
    +	return l <= g.v
    +}
    +
    +// LoggerV2Config configures the LoggerV2 implementation.
    +type LoggerV2Config struct {
    +	// Verbosity sets the verbosity level of the logger.
    +	Verbosity int
    +	// FormatJSON controls whether the logger should output logs in JSON format.
    +	FormatJSON bool
    +}
    +
    +// combineLoggers returns a combined logger for both higher & lower severity logs,
    +// or only one if the other is io.Discard.
    +//
    +// This uses io.Discard instead of io.MultiWriter when all loggers
    +// are set to io.Discard. Both this package and the standard log package have
    +// significant optimizations for io.Discard, which io.MultiWriter lacks (as of
    +// this writing).
    +func combineLoggers(lower, higher io.Writer) io.Writer {
    +	if lower == io.Discard {
    +		return higher
    +	}
    +	if higher == io.Discard {
    +		return lower
    +	}
    +	return io.MultiWriter(lower, higher)
    +}
    +
    +// NewLoggerV2 creates a new LoggerV2 instance with the provided configuration.
    +// The infoW, warningW, and errorW writers are used to write log messages of
    +// different severity levels.
    +func NewLoggerV2(infoW, warningW, errorW io.Writer, c LoggerV2Config) LoggerV2 {
    +	flag := log.LstdFlags
    +	if c.FormatJSON {
    +		flag = 0
    +	}
    +
    +	warningW = combineLoggers(infoW, warningW)
    +	errorW = combineLoggers(errorW, warningW)
    +
    +	fatalW := errorW
    +
    +	m := []*log.Logger{
    +		log.New(infoW, "", flag),
    +		log.New(warningW, "", flag),
    +		log.New(errorW, "", flag),
    +		log.New(fatalW, "", flag),
    +	}
    +	return &loggerT{m: m, v: c.Verbosity, jsonFormat: c.FormatJSON}
    +}
    diff --git a/vendor/google.golang.org/grpc/grpclog/logger.go b/vendor/google.golang.org/grpc/grpclog/logger.go
    index b1674d8267ca..4b203585707a 100644
    --- a/vendor/google.golang.org/grpc/grpclog/logger.go
    +++ b/vendor/google.golang.org/grpc/grpclog/logger.go
    @@ -18,70 +18,17 @@
     
     package grpclog
     
    -import "google.golang.org/grpc/internal/grpclog"
    +import "google.golang.org/grpc/grpclog/internal"
     
     // Logger mimics golang's standard Logger as an interface.
     //
     // Deprecated: use LoggerV2.
    -type Logger interface {
    -	Fatal(args ...any)
    -	Fatalf(format string, args ...any)
    -	Fatalln(args ...any)
    -	Print(args ...any)
    -	Printf(format string, args ...any)
    -	Println(args ...any)
    -}
    +type Logger internal.Logger
     
     // SetLogger sets the logger that is used in grpc. Call only from
     // init() functions.
     //
     // Deprecated: use SetLoggerV2.
     func SetLogger(l Logger) {
    -	grpclog.Logger = &loggerWrapper{Logger: l}
    -}
    -
    -// loggerWrapper wraps Logger into a LoggerV2.
    -type loggerWrapper struct {
    -	Logger
    -}
    -
    -func (g *loggerWrapper) Info(args ...any) {
    -	g.Logger.Print(args...)
    -}
    -
    -func (g *loggerWrapper) Infoln(args ...any) {
    -	g.Logger.Println(args...)
    -}
    -
    -func (g *loggerWrapper) Infof(format string, args ...any) {
    -	g.Logger.Printf(format, args...)
    -}
    -
    -func (g *loggerWrapper) Warning(args ...any) {
    -	g.Logger.Print(args...)
    -}
    -
    -func (g *loggerWrapper) Warningln(args ...any) {
    -	g.Logger.Println(args...)
    -}
    -
    -func (g *loggerWrapper) Warningf(format string, args ...any) {
    -	g.Logger.Printf(format, args...)
    -}
    -
    -func (g *loggerWrapper) Error(args ...any) {
    -	g.Logger.Print(args...)
    -}
    -
    -func (g *loggerWrapper) Errorln(args ...any) {
    -	g.Logger.Println(args...)
    -}
    -
    -func (g *loggerWrapper) Errorf(format string, args ...any) {
    -	g.Logger.Printf(format, args...)
    -}
    -
    -func (g *loggerWrapper) V(l int) bool {
    -	// Returns true for all verbose level.
    -	return true
    +	internal.LoggerV2Impl = &internal.LoggerWrapper{Logger: l}
     }
    diff --git a/vendor/google.golang.org/grpc/grpclog/loggerv2.go b/vendor/google.golang.org/grpc/grpclog/loggerv2.go
    index ecfd36d71303..892dc13d164b 100644
    --- a/vendor/google.golang.org/grpc/grpclog/loggerv2.go
    +++ b/vendor/google.golang.org/grpc/grpclog/loggerv2.go
    @@ -19,52 +19,16 @@
     package grpclog
     
     import (
    -	"encoding/json"
    -	"fmt"
     	"io"
    -	"log"
     	"os"
     	"strconv"
     	"strings"
     
    -	"google.golang.org/grpc/internal/grpclog"
    +	"google.golang.org/grpc/grpclog/internal"
     )
     
     // LoggerV2 does underlying logging work for grpclog.
    -type LoggerV2 interface {
    -	// Info logs to INFO log. Arguments are handled in the manner of fmt.Print.
    -	Info(args ...any)
    -	// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println.
    -	Infoln(args ...any)
    -	// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.
    -	Infof(format string, args ...any)
    -	// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print.
    -	Warning(args ...any)
    -	// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println.
    -	Warningln(args ...any)
    -	// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.
    -	Warningf(format string, args ...any)
    -	// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print.
    -	Error(args ...any)
    -	// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println.
    -	Errorln(args ...any)
    -	// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.
    -	Errorf(format string, args ...any)
    -	// Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print.
    -	// gRPC ensures that all Fatal logs will exit with os.Exit(1).
    -	// Implementations may also call os.Exit() with a non-zero exit code.
    -	Fatal(args ...any)
    -	// Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println.
    -	// gRPC ensures that all Fatal logs will exit with os.Exit(1).
    -	// Implementations may also call os.Exit() with a non-zero exit code.
    -	Fatalln(args ...any)
    -	// Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.
    -	// gRPC ensures that all Fatal logs will exit with os.Exit(1).
    -	// Implementations may also call os.Exit() with a non-zero exit code.
    -	Fatalf(format string, args ...any)
    -	// V reports whether verbosity level l is at least the requested verbose level.
    -	V(l int) bool
    -}
    +type LoggerV2 internal.LoggerV2
     
     // SetLoggerV2 sets logger that is used in grpc to a V2 logger.
     // Not mutex-protected, should be called before any gRPC functions.
    @@ -72,34 +36,8 @@ func SetLoggerV2(l LoggerV2) {
     	if _, ok := l.(*componentData); ok {
     		panic("cannot use component logger as grpclog logger")
     	}
    -	grpclog.Logger = l
    -	grpclog.DepthLogger, _ = l.(grpclog.DepthLoggerV2)
    -}
    -
    -const (
    -	// infoLog indicates Info severity.
    -	infoLog int = iota
    -	// warningLog indicates Warning severity.
    -	warningLog
    -	// errorLog indicates Error severity.
    -	errorLog
    -	// fatalLog indicates Fatal severity.
    -	fatalLog
    -)
    -
    -// severityName contains the string representation of each severity.
    -var severityName = []string{
    -	infoLog:    "INFO",
    -	warningLog: "WARNING",
    -	errorLog:   "ERROR",
    -	fatalLog:   "FATAL",
    -}
    -
    -// loggerT is the default logger used by grpclog.
    -type loggerT struct {
    -	m          []*log.Logger
    -	v          int
    -	jsonFormat bool
    +	internal.LoggerV2Impl = l
    +	internal.DepthLoggerV2Impl, _ = l.(internal.DepthLoggerV2)
     }
     
     // NewLoggerV2 creates a loggerV2 with the provided writers.
    @@ -108,32 +46,13 @@ type loggerT struct {
     // Warning logs will be written to warningW and infoW.
     // Info logs will be written to infoW.
     func NewLoggerV2(infoW, warningW, errorW io.Writer) LoggerV2 {
    -	return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{})
    +	return internal.NewLoggerV2(infoW, warningW, errorW, internal.LoggerV2Config{})
     }
     
     // NewLoggerV2WithVerbosity creates a loggerV2 with the provided writers and
     // verbosity level.
     func NewLoggerV2WithVerbosity(infoW, warningW, errorW io.Writer, v int) LoggerV2 {
    -	return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{verbose: v})
    -}
    -
    -type loggerV2Config struct {
    -	verbose    int
    -	jsonFormat bool
    -}
    -
    -func newLoggerV2WithConfig(infoW, warningW, errorW io.Writer, c loggerV2Config) LoggerV2 {
    -	var m []*log.Logger
    -	flag := log.LstdFlags
    -	if c.jsonFormat {
    -		flag = 0
    -	}
    -	m = append(m, log.New(infoW, "", flag))
    -	m = append(m, log.New(io.MultiWriter(infoW, warningW), "", flag))
    -	ew := io.MultiWriter(infoW, warningW, errorW) // ew will be used for error and fatal.
    -	m = append(m, log.New(ew, "", flag))
    -	m = append(m, log.New(ew, "", flag))
    -	return &loggerT{m: m, v: c.verbose, jsonFormat: c.jsonFormat}
    +	return internal.NewLoggerV2(infoW, warningW, errorW, internal.LoggerV2Config{Verbosity: v})
     }
     
     // newLoggerV2 creates a loggerV2 to be used as default logger.
    @@ -161,80 +80,10 @@ func newLoggerV2() LoggerV2 {
     
     	jsonFormat := strings.EqualFold(os.Getenv("GRPC_GO_LOG_FORMATTER"), "json")
     
    -	return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{
    -		verbose:    v,
    -		jsonFormat: jsonFormat,
    -	})
    -}
    -
    -func (g *loggerT) output(severity int, s string) {
    -	sevStr := severityName[severity]
    -	if !g.jsonFormat {
    -		g.m[severity].Output(2, fmt.Sprintf("%v: %v", sevStr, s))
    -		return
    -	}
    -	// TODO: we can also include the logging component, but that needs more
    -	// (API) changes.
    -	b, _ := json.Marshal(map[string]string{
    -		"severity": sevStr,
    -		"message":  s,
    +	return internal.NewLoggerV2(infoW, warningW, errorW, internal.LoggerV2Config{
    +		Verbosity:  v,
    +		FormatJSON: jsonFormat,
     	})
    -	g.m[severity].Output(2, string(b))
    -}
    -
    -func (g *loggerT) Info(args ...any) {
    -	g.output(infoLog, fmt.Sprint(args...))
    -}
    -
    -func (g *loggerT) Infoln(args ...any) {
    -	g.output(infoLog, fmt.Sprintln(args...))
    -}
    -
    -func (g *loggerT) Infof(format string, args ...any) {
    -	g.output(infoLog, fmt.Sprintf(format, args...))
    -}
    -
    -func (g *loggerT) Warning(args ...any) {
    -	g.output(warningLog, fmt.Sprint(args...))
    -}
    -
    -func (g *loggerT) Warningln(args ...any) {
    -	g.output(warningLog, fmt.Sprintln(args...))
    -}
    -
    -func (g *loggerT) Warningf(format string, args ...any) {
    -	g.output(warningLog, fmt.Sprintf(format, args...))
    -}
    -
    -func (g *loggerT) Error(args ...any) {
    -	g.output(errorLog, fmt.Sprint(args...))
    -}
    -
    -func (g *loggerT) Errorln(args ...any) {
    -	g.output(errorLog, fmt.Sprintln(args...))
    -}
    -
    -func (g *loggerT) Errorf(format string, args ...any) {
    -	g.output(errorLog, fmt.Sprintf(format, args...))
    -}
    -
    -func (g *loggerT) Fatal(args ...any) {
    -	g.output(fatalLog, fmt.Sprint(args...))
    -	os.Exit(1)
    -}
    -
    -func (g *loggerT) Fatalln(args ...any) {
    -	g.output(fatalLog, fmt.Sprintln(args...))
    -	os.Exit(1)
    -}
    -
    -func (g *loggerT) Fatalf(format string, args ...any) {
    -	g.output(fatalLog, fmt.Sprintf(format, args...))
    -	os.Exit(1)
    -}
    -
    -func (g *loggerT) V(l int) bool {
    -	return l <= g.v
     }
     
     // DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements
    @@ -245,14 +94,4 @@ func (g *loggerT) V(l int) bool {
     //
     // Notice: This type is EXPERIMENTAL and may be changed or removed in a
     // later release.
    -type DepthLoggerV2 interface {
    -	LoggerV2
    -	// InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println.
    -	InfoDepth(depth int, args ...any)
    -	// WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println.
    -	WarningDepth(depth int, args ...any)
    -	// ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println.
    -	ErrorDepth(depth int, args ...any)
    -	// FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println.
    -	FatalDepth(depth int, args ...any)
    -}
    +type DepthLoggerV2 internal.DepthLoggerV2
    diff --git a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go b/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go
    index 38b883507350..26e16d91924f 100644
    --- a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go
    +++ b/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go
    @@ -17,8 +17,8 @@
     
     // Code generated by protoc-gen-go. DO NOT EDIT.
     // versions:
    -// 	protoc-gen-go v1.34.1
    -// 	protoc        v4.25.2
    +// 	protoc-gen-go v1.35.1
    +// 	protoc        v5.27.1
     // source: grpc/health/v1/health.proto
     
     package grpc_health_v1
    @@ -99,11 +99,9 @@ type HealthCheckRequest struct {
     
     func (x *HealthCheckRequest) Reset() {
     	*x = HealthCheckRequest{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_grpc_health_v1_health_proto_msgTypes[0]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_grpc_health_v1_health_proto_msgTypes[0]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *HealthCheckRequest) String() string {
    @@ -114,7 +112,7 @@ func (*HealthCheckRequest) ProtoMessage() {}
     
     func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message {
     	mi := &file_grpc_health_v1_health_proto_msgTypes[0]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -146,11 +144,9 @@ type HealthCheckResponse struct {
     
     func (x *HealthCheckResponse) Reset() {
     	*x = HealthCheckResponse{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_grpc_health_v1_health_proto_msgTypes[1]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_grpc_health_v1_health_proto_msgTypes[1]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *HealthCheckResponse) String() string {
    @@ -161,7 +157,7 @@ func (*HealthCheckResponse) ProtoMessage() {}
     
     func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message {
     	mi := &file_grpc_health_v1_health_proto_msgTypes[1]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -237,7 +233,7 @@ func file_grpc_health_v1_health_proto_rawDescGZIP() []byte {
     
     var file_grpc_health_v1_health_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
     var file_grpc_health_v1_health_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
    -var file_grpc_health_v1_health_proto_goTypes = []interface{}{
    +var file_grpc_health_v1_health_proto_goTypes = []any{
     	(HealthCheckResponse_ServingStatus)(0), // 0: grpc.health.v1.HealthCheckResponse.ServingStatus
     	(*HealthCheckRequest)(nil),             // 1: grpc.health.v1.HealthCheckRequest
     	(*HealthCheckResponse)(nil),            // 2: grpc.health.v1.HealthCheckResponse
    @@ -260,32 +256,6 @@ func file_grpc_health_v1_health_proto_init() {
     	if File_grpc_health_v1_health_proto != nil {
     		return
     	}
    -	if !protoimpl.UnsafeEnabled {
    -		file_grpc_health_v1_health_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*HealthCheckRequest); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_grpc_health_v1_health_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*HealthCheckResponse); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -	}
     	type x struct{}
     	out := protoimpl.TypeBuilder{
     		File: protoimpl.DescBuilder{
    diff --git a/vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go b/vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go
    index 51b736ba06e5..f96b8ab4927e 100644
    --- a/vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go
    +++ b/vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go
    @@ -17,8 +17,8 @@
     
     // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
     // versions:
    -// - protoc-gen-go-grpc v1.4.0
    -// - protoc             v4.25.2
    +// - protoc-gen-go-grpc v1.5.1
    +// - protoc             v5.27.1
     // source: grpc/health/v1/health.proto
     
     package grpc_health_v1
    @@ -32,8 +32,8 @@ import (
     
     // This is a compile-time assertion to ensure that this generated file
     // is compatible with the grpc package it is being compiled against.
    -// Requires gRPC-Go v1.62.0 or later.
    -const _ = grpc.SupportPackageIsVersion8
    +// Requires gRPC-Go v1.64.0 or later.
    +const _ = grpc.SupportPackageIsVersion9
     
     const (
     	Health_Check_FullMethodName = "/grpc.health.v1.Health/Check"
    @@ -73,7 +73,7 @@ type HealthClient interface {
     	// should assume this method is not supported and should not retry the
     	// call.  If the call terminates with any other status (including OK),
     	// clients should retry the call with appropriate exponential backoff.
    -	Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (Health_WatchClient, error)
    +	Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[HealthCheckResponse], error)
     }
     
     type healthClient struct {
    @@ -94,13 +94,13 @@ func (c *healthClient) Check(ctx context.Context, in *HealthCheckRequest, opts .
     	return out, nil
     }
     
    -func (c *healthClient) Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (Health_WatchClient, error) {
    +func (c *healthClient) Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[HealthCheckResponse], error) {
     	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
     	stream, err := c.cc.NewStream(ctx, &Health_ServiceDesc.Streams[0], Health_Watch_FullMethodName, cOpts...)
     	if err != nil {
     		return nil, err
     	}
    -	x := &healthWatchClient{ClientStream: stream}
    +	x := &grpc.GenericClientStream[HealthCheckRequest, HealthCheckResponse]{ClientStream: stream}
     	if err := x.ClientStream.SendMsg(in); err != nil {
     		return nil, err
     	}
    @@ -110,26 +110,12 @@ func (c *healthClient) Watch(ctx context.Context, in *HealthCheckRequest, opts .
     	return x, nil
     }
     
    -type Health_WatchClient interface {
    -	Recv() (*HealthCheckResponse, error)
    -	grpc.ClientStream
    -}
    -
    -type healthWatchClient struct {
    -	grpc.ClientStream
    -}
    -
    -func (x *healthWatchClient) Recv() (*HealthCheckResponse, error) {
    -	m := new(HealthCheckResponse)
    -	if err := x.ClientStream.RecvMsg(m); err != nil {
    -		return nil, err
    -	}
    -	return m, nil
    -}
    +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
    +type Health_WatchClient = grpc.ServerStreamingClient[HealthCheckResponse]
     
     // HealthServer is the server API for Health service.
     // All implementations should embed UnimplementedHealthServer
    -// for forward compatibility
    +// for forward compatibility.
     //
     // Health is gRPC's mechanism for checking whether a server is able to handle
     // RPCs. Its semantics are documented in
    @@ -160,19 +146,23 @@ type HealthServer interface {
     	// should assume this method is not supported and should not retry the
     	// call.  If the call terminates with any other status (including OK),
     	// clients should retry the call with appropriate exponential backoff.
    -	Watch(*HealthCheckRequest, Health_WatchServer) error
    +	Watch(*HealthCheckRequest, grpc.ServerStreamingServer[HealthCheckResponse]) error
     }
     
    -// UnimplementedHealthServer should be embedded to have forward compatible implementations.
    -type UnimplementedHealthServer struct {
    -}
    +// UnimplementedHealthServer should be embedded to have
    +// forward compatible implementations.
    +//
    +// NOTE: this should be embedded by value instead of pointer to avoid a nil
    +// pointer dereference when methods are called.
    +type UnimplementedHealthServer struct{}
     
     func (UnimplementedHealthServer) Check(context.Context, *HealthCheckRequest) (*HealthCheckResponse, error) {
     	return nil, status.Errorf(codes.Unimplemented, "method Check not implemented")
     }
    -func (UnimplementedHealthServer) Watch(*HealthCheckRequest, Health_WatchServer) error {
    +func (UnimplementedHealthServer) Watch(*HealthCheckRequest, grpc.ServerStreamingServer[HealthCheckResponse]) error {
     	return status.Errorf(codes.Unimplemented, "method Watch not implemented")
     }
    +func (UnimplementedHealthServer) testEmbeddedByValue() {}
     
     // UnsafeHealthServer may be embedded to opt out of forward compatibility for this service.
     // Use of this interface is not recommended, as added methods to HealthServer will
    @@ -182,6 +172,13 @@ type UnsafeHealthServer interface {
     }
     
     func RegisterHealthServer(s grpc.ServiceRegistrar, srv HealthServer) {
    +	// If the following call panics, it indicates UnimplementedHealthServer was
    +	// embedded by pointer and is nil.  This will cause panics if an
    +	// unimplemented method is ever invoked, so we test this at initialization
    +	// time to prevent it from happening at runtime later due to I/O.
    +	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
    +		t.testEmbeddedByValue()
    +	}
     	s.RegisterService(&Health_ServiceDesc, srv)
     }
     
    @@ -208,21 +205,11 @@ func _Health_Watch_Handler(srv interface{}, stream grpc.ServerStream) error {
     	if err := stream.RecvMsg(m); err != nil {
     		return err
     	}
    -	return srv.(HealthServer).Watch(m, &healthWatchServer{ServerStream: stream})
    -}
    -
    -type Health_WatchServer interface {
    -	Send(*HealthCheckResponse) error
    -	grpc.ServerStream
    +	return srv.(HealthServer).Watch(m, &grpc.GenericServerStream[HealthCheckRequest, HealthCheckResponse]{ServerStream: stream})
     }
     
    -type healthWatchServer struct {
    -	grpc.ServerStream
    -}
    -
    -func (x *healthWatchServer) Send(m *HealthCheckResponse) error {
    -	return x.ServerStream.SendMsg(m)
    -}
    +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
    +type Health_WatchServer = grpc.ServerStreamingServer[HealthCheckResponse]
     
     // Health_ServiceDesc is the grpc.ServiceDesc for Health service.
     // It's only intended for direct use with grpc.RegisterService,
    diff --git a/vendor/google.golang.org/grpc/health/server.go b/vendor/google.golang.org/grpc/health/server.go
    index cce6312d77f9..d4b4b7081590 100644
    --- a/vendor/google.golang.org/grpc/health/server.go
    +++ b/vendor/google.golang.org/grpc/health/server.go
    @@ -51,7 +51,7 @@ func NewServer() *Server {
     }
     
     // Check implements `service Health`.
    -func (s *Server) Check(ctx context.Context, in *healthpb.HealthCheckRequest) (*healthpb.HealthCheckResponse, error) {
    +func (s *Server) Check(_ context.Context, in *healthpb.HealthCheckRequest) (*healthpb.HealthCheckResponse, error) {
     	s.mu.RLock()
     	defer s.mu.RUnlock()
     	if servingStatus, ok := s.statusMap[in.Service]; ok {
    diff --git a/vendor/google.golang.org/grpc/internal/backoff/backoff.go b/vendor/google.golang.org/grpc/internal/backoff/backoff.go
    index b15cf482d292..b6ae7f258505 100644
    --- a/vendor/google.golang.org/grpc/internal/backoff/backoff.go
    +++ b/vendor/google.golang.org/grpc/internal/backoff/backoff.go
    @@ -25,7 +25,7 @@ package backoff
     import (
     	"context"
     	"errors"
    -	"math/rand"
    +	rand "math/rand/v2"
     	"time"
     
     	grpcbackoff "google.golang.org/grpc/backoff"
    diff --git a/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/config.go b/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/config.go
    index 13821a926606..85540f86a738 100644
    --- a/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/config.go
    +++ b/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/config.go
    @@ -33,6 +33,8 @@ type lbConfig struct {
     	childConfig  serviceconfig.LoadBalancingConfig
     }
     
    +// ChildName returns the name of the child balancer of the gracefulswitch
    +// Balancer.
     func ChildName(l serviceconfig.LoadBalancingConfig) string {
     	return l.(*lbConfig).childBuilder.Name()
     }
    diff --git a/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go b/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go
    index aa4505a871df..9669328914ad 100644
    --- a/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go
    +++ b/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go
    @@ -106,7 +106,7 @@ func (ml *TruncatingMethodLogger) Build(c LogEntryConfig) *binlogpb.GrpcLogEntry
     }
     
     // Log creates a proto binary log entry, and logs it to the sink.
    -func (ml *TruncatingMethodLogger) Log(ctx context.Context, c LogEntryConfig) {
    +func (ml *TruncatingMethodLogger) Log(_ context.Context, c LogEntryConfig) {
     	ml.sink.Write(ml.Build(c))
     }
     
    diff --git a/vendor/google.golang.org/grpc/internal/channelz/channel.go b/vendor/google.golang.org/grpc/internal/channelz/channel.go
    index d7e9e1d54ecb..3ec662799a83 100644
    --- a/vendor/google.golang.org/grpc/internal/channelz/channel.go
    +++ b/vendor/google.golang.org/grpc/internal/channelz/channel.go
    @@ -43,6 +43,8 @@ type Channel struct {
     	// Non-zero traceRefCount means the trace of this channel cannot be deleted.
     	traceRefCount int32
     
    +	// ChannelMetrics holds connectivity state, target and call metrics for the
    +	// channel within channelz.
     	ChannelMetrics ChannelMetrics
     }
     
    @@ -50,6 +52,8 @@ type Channel struct {
     // nesting.
     func (c *Channel) channelzIdentifier() {}
     
    +// String returns a string representation of the Channel, including its parent
    +// entity and ID.
     func (c *Channel) String() string {
     	if c.Parent == nil {
     		return fmt.Sprintf("Channel #%d", c.ID)
    @@ -61,24 +65,31 @@ func (c *Channel) id() int64 {
     	return c.ID
     }
     
    +// SubChans returns a copy of the map of sub-channels associated with the
    +// Channel.
     func (c *Channel) SubChans() map[int64]string {
     	db.mu.RLock()
     	defer db.mu.RUnlock()
     	return copyMap(c.subChans)
     }
     
    +// NestedChans returns a copy of the map of nested channels associated with the
    +// Channel.
     func (c *Channel) NestedChans() map[int64]string {
     	db.mu.RLock()
     	defer db.mu.RUnlock()
     	return copyMap(c.nestedChans)
     }
     
    +// Trace returns a copy of the Channel's trace data.
     func (c *Channel) Trace() *ChannelTrace {
     	db.mu.RLock()
     	defer db.mu.RUnlock()
     	return c.trace.copy()
     }
     
    +// ChannelMetrics holds connectivity state, target and call metrics for the
    +// channel within channelz.
     type ChannelMetrics struct {
     	// The current connectivity state of the channel.
     	State atomic.Pointer[connectivity.State]
    @@ -136,12 +147,16 @@ func strFromPointer(s *string) string {
     	return *s
     }
     
    +// String returns a string representation of the ChannelMetrics, including its
    +// state, target, and call metrics.
     func (c *ChannelMetrics) String() string {
     	return fmt.Sprintf("State: %v, Target: %s, CallsStarted: %v, CallsSucceeded: %v, CallsFailed: %v, LastCallStartedTimestamp: %v",
     		c.State.Load(), strFromPointer(c.Target.Load()), c.CallsStarted.Load(), c.CallsSucceeded.Load(), c.CallsFailed.Load(), c.LastCallStartedTimestamp.Load(),
     	)
     }
     
    +// NewChannelMetricForTesting creates a new instance of ChannelMetrics with
    +// specified initial values for testing purposes.
     func NewChannelMetricForTesting(state connectivity.State, target string, started, succeeded, failed, timestamp int64) *ChannelMetrics {
     	c := &ChannelMetrics{}
     	c.State.Store(&state)
    diff --git a/vendor/google.golang.org/grpc/internal/channelz/channelmap.go b/vendor/google.golang.org/grpc/internal/channelz/channelmap.go
    index dfe18b08925d..64c791953d01 100644
    --- a/vendor/google.golang.org/grpc/internal/channelz/channelmap.go
    +++ b/vendor/google.golang.org/grpc/internal/channelz/channelmap.go
    @@ -46,7 +46,7 @@ type entry interface {
     
     // channelMap is the storage data structure for channelz.
     //
    -// Methods of channelMap can be divided in two two categories with respect to
    +// Methods of channelMap can be divided into two categories with respect to
     // locking.
     //
     // 1. Methods acquire the global lock.
    @@ -234,13 +234,6 @@ func copyMap(m map[int64]string) map[int64]string {
     	return n
     }
     
    -func min(a, b int) int {
    -	if a < b {
    -		return a
    -	}
    -	return b
    -}
    -
     func (c *channelMap) getTopChannels(id int64, maxResults int) ([]*Channel, bool) {
     	if maxResults <= 0 {
     		maxResults = EntriesPerPage
    diff --git a/vendor/google.golang.org/grpc/internal/channelz/funcs.go b/vendor/google.golang.org/grpc/internal/channelz/funcs.go
    index 03e24e1507aa..078bb81238bc 100644
    --- a/vendor/google.golang.org/grpc/internal/channelz/funcs.go
    +++ b/vendor/google.golang.org/grpc/internal/channelz/funcs.go
    @@ -33,7 +33,7 @@ var (
     	// outside this package except by tests.
     	IDGen IDGenerator
     
    -	db *channelMap = newChannelMap()
    +	db = newChannelMap()
     	// EntriesPerPage defines the number of channelz entries to be shown on a web page.
     	EntriesPerPage = 50
     	curState       int32
    diff --git a/vendor/google.golang.org/grpc/internal/channelz/server.go b/vendor/google.golang.org/grpc/internal/channelz/server.go
    index cdfc49d6eacc..b5a82499299d 100644
    --- a/vendor/google.golang.org/grpc/internal/channelz/server.go
    +++ b/vendor/google.golang.org/grpc/internal/channelz/server.go
    @@ -59,6 +59,8 @@ func NewServerMetricsForTesting(started, succeeded, failed, timestamp int64) *Se
     	return sm
     }
     
    +// CopyFrom copies the metrics data from the provided ServerMetrics
    +// instance into the current instance.
     func (sm *ServerMetrics) CopyFrom(o *ServerMetrics) {
     	sm.CallsStarted.Store(o.CallsStarted.Load())
     	sm.CallsSucceeded.Store(o.CallsSucceeded.Load())
    diff --git a/vendor/google.golang.org/grpc/internal/channelz/socket.go b/vendor/google.golang.org/grpc/internal/channelz/socket.go
    index fa64834b25d0..90103847c5f3 100644
    --- a/vendor/google.golang.org/grpc/internal/channelz/socket.go
    +++ b/vendor/google.golang.org/grpc/internal/channelz/socket.go
    @@ -70,13 +70,18 @@ type EphemeralSocketMetrics struct {
     	RemoteFlowControlWindow int64
     }
     
    +// SocketType represents the type of socket.
     type SocketType string
     
    +// SocketType can be one of these.
     const (
     	SocketTypeNormal = "NormalSocket"
     	SocketTypeListen = "ListenSocket"
     )
     
    +// Socket represents a socket within channelz which includes socket
    +// metrics and data related to socket activity and provides methods
    +// for managing and interacting with sockets.
     type Socket struct {
     	Entity
     	SocketType       SocketType
    @@ -100,6 +105,8 @@ type Socket struct {
     	Security credentials.ChannelzSecurityValue
     }
     
    +// String returns a string representation of the Socket, including its parent
    +// entity, socket type, and ID.
     func (ls *Socket) String() string {
     	return fmt.Sprintf("%s %s #%d", ls.Parent, ls.SocketType, ls.ID)
     }
    diff --git a/vendor/google.golang.org/grpc/internal/channelz/subchannel.go b/vendor/google.golang.org/grpc/internal/channelz/subchannel.go
    index 3b88e4cba8e1..b20802e6e960 100644
    --- a/vendor/google.golang.org/grpc/internal/channelz/subchannel.go
    +++ b/vendor/google.golang.org/grpc/internal/channelz/subchannel.go
    @@ -47,12 +47,14 @@ func (sc *SubChannel) id() int64 {
     	return sc.ID
     }
     
    +// Sockets returns a copy of the sockets map associated with the SubChannel.
     func (sc *SubChannel) Sockets() map[int64]string {
     	db.mu.RLock()
     	defer db.mu.RUnlock()
     	return copyMap(sc.sockets)
     }
     
    +// Trace returns a copy of the ChannelTrace associated with the SubChannel.
     func (sc *SubChannel) Trace() *ChannelTrace {
     	db.mu.RLock()
     	defer db.mu.RUnlock()
    diff --git a/vendor/google.golang.org/grpc/internal/channelz/syscall_nonlinux.go b/vendor/google.golang.org/grpc/internal/channelz/syscall_nonlinux.go
    index d1ed8df6a518..0e6e18e185c7 100644
    --- a/vendor/google.golang.org/grpc/internal/channelz/syscall_nonlinux.go
    +++ b/vendor/google.golang.org/grpc/internal/channelz/syscall_nonlinux.go
    @@ -35,13 +35,13 @@ type SocketOptionData struct {
     // Getsockopt defines the function to get socket options requested by channelz.
     // It is to be passed to syscall.RawConn.Control().
     // Windows OS doesn't support Socket Option
    -func (s *SocketOptionData) Getsockopt(fd uintptr) {
    +func (s *SocketOptionData) Getsockopt(uintptr) {
     	once.Do(func() {
     		logger.Warning("Channelz: socket options are not supported on non-linux environments")
     	})
     }
     
     // GetSocketOption gets the socket option info of the conn.
    -func GetSocketOption(c any) *SocketOptionData {
    +func GetSocketOption(any) *SocketOptionData {
     	return nil
     }
    diff --git a/vendor/google.golang.org/grpc/internal/channelz/trace.go b/vendor/google.golang.org/grpc/internal/channelz/trace.go
    index 36b867403230..2bffe4777684 100644
    --- a/vendor/google.golang.org/grpc/internal/channelz/trace.go
    +++ b/vendor/google.golang.org/grpc/internal/channelz/trace.go
    @@ -79,13 +79,21 @@ type TraceEvent struct {
     	Parent   *TraceEvent
     }
     
    +// ChannelTrace provides tracing information for a channel.
    +// It tracks various events and metadata related to the channel's lifecycle
    +// and operations.
     type ChannelTrace struct {
    -	cm           *channelMap
    -	clearCalled  bool
    +	cm          *channelMap
    +	clearCalled bool
    +	// The time when the trace was created.
     	CreationTime time.Time
    -	EventNum     int64
    -	mu           sync.Mutex
    -	Events       []*traceEvent
    +	// A counter for the number of events recorded in the
    +	// trace.
    +	EventNum int64
    +	mu       sync.Mutex
    +	// A slice of traceEvent pointers representing the events recorded for
    +	// this channel.
    +	Events []*traceEvent
     }
     
     func (c *ChannelTrace) copy() *ChannelTrace {
    @@ -175,6 +183,7 @@ var refChannelTypeToString = map[RefChannelType]string{
     	RefNormalSocket: "NormalSocket",
     }
     
    +// String returns a string representation of the RefChannelType
     func (r RefChannelType) String() string {
     	return refChannelTypeToString[r]
     }
    diff --git a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go
    index d90648713944..6e7dd6b77270 100644
    --- a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go
    +++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go
    @@ -45,7 +45,16 @@ var (
     	// option is present for backward compatibility. This option may be overridden
     	// by setting the environment variable "GRPC_ENFORCE_ALPN_ENABLED" to "true"
     	// or "false".
    -	EnforceALPNEnabled = boolFromEnv("GRPC_ENFORCE_ALPN_ENABLED", false)
    +	EnforceALPNEnabled = boolFromEnv("GRPC_ENFORCE_ALPN_ENABLED", true)
    +	// XDSFallbackSupport is the env variable that controls whether support for
    +	// xDS fallback is turned on. If this is unset or is false, only the first
    +	// xDS server in the list of server configs will be used.
    +	XDSFallbackSupport = boolFromEnv("GRPC_EXPERIMENTAL_XDS_FALLBACK", false)
    +	// NewPickFirstEnabled is set if the new pickfirst leaf policy is to be used
    +	// instead of the exiting pickfirst implementation. This can be enabled by
    +	// setting the environment variable "GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST"
    +	// to "true".
    +	NewPickFirstEnabled = boolFromEnv("GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST", false)
     )
     
     func boolFromEnv(envVar string, def bool) bool {
    diff --git a/vendor/google.golang.org/grpc/internal/experimental.go b/vendor/google.golang.org/grpc/internal/experimental.go
    index 7f7044e1731c..7617be215895 100644
    --- a/vendor/google.golang.org/grpc/internal/experimental.go
    +++ b/vendor/google.golang.org/grpc/internal/experimental.go
    @@ -18,11 +18,11 @@
     package internal
     
     var (
    -	// WithRecvBufferPool is implemented by the grpc package and returns a dial
    +	// WithBufferPool is implemented by the grpc package and returns a dial
     	// option to configure a shared buffer pool for a grpc.ClientConn.
    -	WithRecvBufferPool any // func (grpc.SharedBufferPool) grpc.DialOption
    +	WithBufferPool any // func (grpc.SharedBufferPool) grpc.DialOption
     
    -	// RecvBufferPool is implemented by the grpc package and returns a server
    +	// BufferPool is implemented by the grpc package and returns a server
     	// option to configure a shared buffer pool for a grpc.Server.
    -	RecvBufferPool any // func (grpc.SharedBufferPool) grpc.ServerOption
    +	BufferPool any // func (grpc.SharedBufferPool) grpc.ServerOption
     )
    diff --git a/vendor/google.golang.org/grpc/internal/grpclog/grpclog.go b/vendor/google.golang.org/grpc/internal/grpclog/grpclog.go
    deleted file mode 100644
    index bfc45102ab24..000000000000
    --- a/vendor/google.golang.org/grpc/internal/grpclog/grpclog.go
    +++ /dev/null
    @@ -1,126 +0,0 @@
    -/*
    - *
    - * Copyright 2020 gRPC authors.
    - *
    - * Licensed under the Apache License, Version 2.0 (the "License");
    - * you may not use this file except in compliance with the License.
    - * You may obtain a copy of the License at
    - *
    - *     http://www.apache.org/licenses/LICENSE-2.0
    - *
    - * Unless required by applicable law or agreed to in writing, software
    - * distributed under the License is distributed on an "AS IS" BASIS,
    - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    - * See the License for the specific language governing permissions and
    - * limitations under the License.
    - *
    - */
    -
    -// Package grpclog (internal) defines depth logging for grpc.
    -package grpclog
    -
    -import (
    -	"os"
    -)
    -
    -// Logger is the logger used for the non-depth log functions.
    -var Logger LoggerV2
    -
    -// DepthLogger is the logger used for the depth log functions.
    -var DepthLogger DepthLoggerV2
    -
    -// InfoDepth logs to the INFO log at the specified depth.
    -func InfoDepth(depth int, args ...any) {
    -	if DepthLogger != nil {
    -		DepthLogger.InfoDepth(depth, args...)
    -	} else {
    -		Logger.Infoln(args...)
    -	}
    -}
    -
    -// WarningDepth logs to the WARNING log at the specified depth.
    -func WarningDepth(depth int, args ...any) {
    -	if DepthLogger != nil {
    -		DepthLogger.WarningDepth(depth, args...)
    -	} else {
    -		Logger.Warningln(args...)
    -	}
    -}
    -
    -// ErrorDepth logs to the ERROR log at the specified depth.
    -func ErrorDepth(depth int, args ...any) {
    -	if DepthLogger != nil {
    -		DepthLogger.ErrorDepth(depth, args...)
    -	} else {
    -		Logger.Errorln(args...)
    -	}
    -}
    -
    -// FatalDepth logs to the FATAL log at the specified depth.
    -func FatalDepth(depth int, args ...any) {
    -	if DepthLogger != nil {
    -		DepthLogger.FatalDepth(depth, args...)
    -	} else {
    -		Logger.Fatalln(args...)
    -	}
    -	os.Exit(1)
    -}
    -
    -// LoggerV2 does underlying logging work for grpclog.
    -// This is a copy of the LoggerV2 defined in the external grpclog package. It
    -// is defined here to avoid a circular dependency.
    -type LoggerV2 interface {
    -	// Info logs to INFO log. Arguments are handled in the manner of fmt.Print.
    -	Info(args ...any)
    -	// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println.
    -	Infoln(args ...any)
    -	// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.
    -	Infof(format string, args ...any)
    -	// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print.
    -	Warning(args ...any)
    -	// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println.
    -	Warningln(args ...any)
    -	// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.
    -	Warningf(format string, args ...any)
    -	// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print.
    -	Error(args ...any)
    -	// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println.
    -	Errorln(args ...any)
    -	// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.
    -	Errorf(format string, args ...any)
    -	// Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print.
    -	// gRPC ensures that all Fatal logs will exit with os.Exit(1).
    -	// Implementations may also call os.Exit() with a non-zero exit code.
    -	Fatal(args ...any)
    -	// Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println.
    -	// gRPC ensures that all Fatal logs will exit with os.Exit(1).
    -	// Implementations may also call os.Exit() with a non-zero exit code.
    -	Fatalln(args ...any)
    -	// Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.
    -	// gRPC ensures that all Fatal logs will exit with os.Exit(1).
    -	// Implementations may also call os.Exit() with a non-zero exit code.
    -	Fatalf(format string, args ...any)
    -	// V reports whether verbosity level l is at least the requested verbose level.
    -	V(l int) bool
    -}
    -
    -// DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements
    -// DepthLoggerV2, the below functions will be called with the appropriate stack
    -// depth set for trivial functions the logger may ignore.
    -// This is a copy of the DepthLoggerV2 defined in the external grpclog package.
    -// It is defined here to avoid a circular dependency.
    -//
    -// # Experimental
    -//
    -// Notice: This type is EXPERIMENTAL and may be changed or removed in a
    -// later release.
    -type DepthLoggerV2 interface {
    -	// InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println.
    -	InfoDepth(depth int, args ...any)
    -	// WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println.
    -	WarningDepth(depth int, args ...any)
    -	// ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println.
    -	ErrorDepth(depth int, args ...any)
    -	// FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println.
    -	FatalDepth(depth int, args ...any)
    -}
    diff --git a/vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go b/vendor/google.golang.org/grpc/internal/grpclog/prefix_logger.go
    similarity index 63%
    rename from vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go
    rename to vendor/google.golang.org/grpc/internal/grpclog/prefix_logger.go
    index faa998de7632..092ad187a2c8 100644
    --- a/vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go
    +++ b/vendor/google.golang.org/grpc/internal/grpclog/prefix_logger.go
    @@ -16,17 +16,21 @@
      *
      */
     
    +// Package grpclog provides logging functionality for internal gRPC packages,
    +// outside of the functionality provided by the external `grpclog` package.
     package grpclog
     
     import (
     	"fmt"
    +
    +	"google.golang.org/grpc/grpclog"
     )
     
     // PrefixLogger does logging with a prefix.
     //
     // Logging method on a nil logs without any prefix.
     type PrefixLogger struct {
    -	logger DepthLoggerV2
    +	logger grpclog.DepthLoggerV2
     	prefix string
     }
     
    @@ -38,7 +42,7 @@ func (pl *PrefixLogger) Infof(format string, args ...any) {
     		pl.logger.InfoDepth(1, fmt.Sprintf(format, args...))
     		return
     	}
    -	InfoDepth(1, fmt.Sprintf(format, args...))
    +	grpclog.InfoDepth(1, fmt.Sprintf(format, args...))
     }
     
     // Warningf does warning logging.
    @@ -48,7 +52,7 @@ func (pl *PrefixLogger) Warningf(format string, args ...any) {
     		pl.logger.WarningDepth(1, fmt.Sprintf(format, args...))
     		return
     	}
    -	WarningDepth(1, fmt.Sprintf(format, args...))
    +	grpclog.WarningDepth(1, fmt.Sprintf(format, args...))
     }
     
     // Errorf does error logging.
    @@ -58,36 +62,18 @@ func (pl *PrefixLogger) Errorf(format string, args ...any) {
     		pl.logger.ErrorDepth(1, fmt.Sprintf(format, args...))
     		return
     	}
    -	ErrorDepth(1, fmt.Sprintf(format, args...))
    -}
    -
    -// Debugf does info logging at verbose level 2.
    -func (pl *PrefixLogger) Debugf(format string, args ...any) {
    -	// TODO(6044): Refactor interfaces LoggerV2 and DepthLogger, and maybe
    -	// rewrite PrefixLogger a little to ensure that we don't use the global
    -	// `Logger` here, and instead use the `logger` field.
    -	if !Logger.V(2) {
    -		return
    -	}
    -	if pl != nil {
    -		// Handle nil, so the tests can pass in a nil logger.
    -		format = pl.prefix + format
    -		pl.logger.InfoDepth(1, fmt.Sprintf(format, args...))
    -		return
    -	}
    -	InfoDepth(1, fmt.Sprintf(format, args...))
    -
    +	grpclog.ErrorDepth(1, fmt.Sprintf(format, args...))
     }
     
     // V reports whether verbosity level l is at least the requested verbose level.
     func (pl *PrefixLogger) V(l int) bool {
    -	// TODO(6044): Refactor interfaces LoggerV2 and DepthLogger, and maybe
    -	// rewrite PrefixLogger a little to ensure that we don't use the global
    -	// `Logger` here, and instead use the `logger` field.
    -	return Logger.V(l)
    +	if pl != nil {
    +		return pl.logger.V(l)
    +	}
    +	return true
     }
     
     // NewPrefixLogger creates a prefix logger with the given prefix.
    -func NewPrefixLogger(logger DepthLoggerV2, prefix string) *PrefixLogger {
    +func NewPrefixLogger(logger grpclog.DepthLoggerV2, prefix string) *PrefixLogger {
     	return &PrefixLogger{logger: logger, prefix: prefix}
     }
    diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go b/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go
    index f7f40a16acee..8e8e861280a0 100644
    --- a/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go
    +++ b/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go
    @@ -53,16 +53,28 @@ func NewCallbackSerializer(ctx context.Context) *CallbackSerializer {
     	return cs
     }
     
    -// Schedule adds a callback to be scheduled after existing callbacks are run.
    +// TrySchedule tries to schedule the provided callback function f to be
    +// executed in the order it was added. This is a best-effort operation. If the
    +// context passed to NewCallbackSerializer was canceled before this method is
    +// called, the callback will not be scheduled.
     //
     // Callbacks are expected to honor the context when performing any blocking
     // operations, and should return early when the context is canceled.
    +func (cs *CallbackSerializer) TrySchedule(f func(ctx context.Context)) {
    +	cs.callbacks.Put(f)
    +}
    +
    +// ScheduleOr schedules the provided callback function f to be executed in the
    +// order it was added. If the context passed to NewCallbackSerializer has been
    +// canceled before this method is called, the onFailure callback will be
    +// executed inline instead.
     //
    -// Return value indicates if the callback was successfully added to the list of
    -// callbacks to be executed by the serializer. It is not possible to add
    -// callbacks once the context passed to NewCallbackSerializer is cancelled.
    -func (cs *CallbackSerializer) Schedule(f func(ctx context.Context)) bool {
    -	return cs.callbacks.Put(f) == nil
    +// Callbacks are expected to honor the context when performing any blocking
    +// operations, and should return early when the context is canceled.
    +func (cs *CallbackSerializer) ScheduleOr(f func(ctx context.Context), onFailure func()) {
    +	if cs.callbacks.Put(f) != nil {
    +		onFailure()
    +	}
     }
     
     func (cs *CallbackSerializer) run(ctx context.Context) {
    diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go b/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go
    index aef8cec1ab0c..6d8c2f518dff 100644
    --- a/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go
    +++ b/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go
    @@ -77,7 +77,7 @@ func (ps *PubSub) Subscribe(sub Subscriber) (cancel func()) {
     
     	if ps.msg != nil {
     		msg := ps.msg
    -		ps.cs.Schedule(func(context.Context) {
    +		ps.cs.TrySchedule(func(context.Context) {
     			ps.mu.Lock()
     			defer ps.mu.Unlock()
     			if !ps.subscribers[sub] {
    @@ -103,7 +103,7 @@ func (ps *PubSub) Publish(msg any) {
     	ps.msg = msg
     	for sub := range ps.subscribers {
     		s := sub
    -		ps.cs.Schedule(func(context.Context) {
    +		ps.cs.TrySchedule(func(context.Context) {
     			ps.mu.Lock()
     			defer ps.mu.Unlock()
     			if !ps.subscribers[s] {
    diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/method.go b/vendor/google.golang.org/grpc/internal/grpcutil/method.go
    index ec62b4775e5b..683d1955c6a1 100644
    --- a/vendor/google.golang.org/grpc/internal/grpcutil/method.go
    +++ b/vendor/google.golang.org/grpc/internal/grpcutil/method.go
    @@ -39,7 +39,7 @@ func ParseMethod(methodName string) (service, method string, _ error) {
     }
     
     // baseContentType is the base content-type for gRPC.  This is a valid
    -// content-type on it's own, but can also include a content-subtype such as
    +// content-type on its own, but can also include a content-subtype such as
     // "proto" as a suffix after "+" or ";".  See
     // https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests
     // for more details.
    diff --git a/vendor/google.golang.org/grpc/internal/idle/idle.go b/vendor/google.golang.org/grpc/internal/idle/idle.go
    index fe49cb74c55a..2c13ee9dac75 100644
    --- a/vendor/google.golang.org/grpc/internal/idle/idle.go
    +++ b/vendor/google.golang.org/grpc/internal/idle/idle.go
    @@ -182,6 +182,7 @@ func (m *Manager) tryEnterIdleMode() bool {
     	return true
     }
     
    +// EnterIdleModeForTesting instructs the channel to enter idle mode.
     func (m *Manager) EnterIdleModeForTesting() {
     	m.tryEnterIdleMode()
     }
    @@ -225,7 +226,7 @@ func (m *Manager) ExitIdleMode() error {
     		//   came in and OnCallBegin() noticed that the calls count is negative.
     		// - Channel is in idle mode, and multiple new RPCs come in at the same
     		//   time, all of them notice a negative calls count in OnCallBegin and get
    -		//   here. The first one to get the lock would got the channel to exit idle.
    +		//   here. The first one to get the lock would get the channel to exit idle.
     		// - Channel is not in idle mode, and the user calls Connect which calls
     		//   m.ExitIdleMode.
     		//
    @@ -266,6 +267,7 @@ func (m *Manager) isClosed() bool {
     	return atomic.LoadInt32(&m.closed) == 1
     }
     
    +// Close stops the timer associated with the Manager, if it exists.
     func (m *Manager) Close() {
     	atomic.StoreInt32(&m.closed, 1)
     
    diff --git a/vendor/google.golang.org/grpc/internal/internal.go b/vendor/google.golang.org/grpc/internal/internal.go
    index 5d6653986923..3afc1813440e 100644
    --- a/vendor/google.golang.org/grpc/internal/internal.go
    +++ b/vendor/google.golang.org/grpc/internal/internal.go
    @@ -29,8 +29,6 @@ import (
     )
     
     var (
    -	// WithHealthCheckFunc is set by dialoptions.go
    -	WithHealthCheckFunc any // func (HealthChecker) DialOption
     	// HealthCheckFunc is used to provide client-side LB channel health checking
     	HealthCheckFunc HealthChecker
     	// BalancerUnregister is exported by package balancer to unregister a balancer.
    @@ -149,6 +147,20 @@ var (
     	// other features, including the CSDS service.
     	NewXDSResolverWithConfigForTesting any // func([]byte) (resolver.Builder, error)
     
    +	// NewXDSResolverWithClientForTesting creates a new xDS resolver builder
    +	// using the provided xDS client instead of creating a new one using the
    +	// bootstrap configuration specified by the supported environment variables.
    +	// The resolver.Builder is meant to be used in conjunction with the
    +	// grpc.WithResolvers DialOption. The resolver.Builder does not take
    +	// ownership of the provided xDS client and it is the responsibility of the
    +	// caller to close the client when no longer required.
    +	//
    +	// Testing Only
    +	//
    +	// This function should ONLY be used for testing and may not work with some
    +	// other features, including the CSDS service.
    +	NewXDSResolverWithClientForTesting any // func(xdsclient.XDSClient) (resolver.Builder, error)
    +
     	// RegisterRLSClusterSpecifierPluginForTesting registers the RLS Cluster
     	// Specifier Plugin for testing purposes, regardless of the XDSRLS environment
     	// variable.
    @@ -183,7 +195,7 @@ var (
     
     	// GRPCResolverSchemeExtraMetadata determines when gRPC will add extra
     	// metadata to RPCs.
    -	GRPCResolverSchemeExtraMetadata string = "xds"
    +	GRPCResolverSchemeExtraMetadata = "xds"
     
     	// EnterIdleModeForTesting gets the ClientConn to enter IDLE mode.
     	EnterIdleModeForTesting any // func(*grpc.ClientConn)
    @@ -191,6 +203,8 @@ var (
     	// ExitIdleModeForTesting gets the ClientConn to exit IDLE mode.
     	ExitIdleModeForTesting any // func(*grpc.ClientConn) error
     
    +	// ChannelzTurnOffForTesting disables the Channelz service for testing
    +	// purposes.
     	ChannelzTurnOffForTesting func()
     
     	// TriggerXDSResourceNotFoundForTesting causes the provided xDS Client to
    @@ -203,11 +217,27 @@ var (
     
     	// UserSetDefaultScheme is set to true if the user has overridden the
     	// default resolver scheme.
    -	UserSetDefaultScheme bool = false
    +	UserSetDefaultScheme = false
     
    -	// ShuffleAddressListForTesting pseudo-randomizes the order of addresses.  n
    -	// is the number of elements.  swap swaps the elements with indexes i and j.
    -	ShuffleAddressListForTesting any // func(n int, swap func(i, j int))
    +	// ConnectedAddress returns the connected address for a SubConnState. The
    +	// address is only valid if the state is READY.
    +	ConnectedAddress any // func (scs SubConnState) resolver.Address
    +
    +	// SetConnectedAddress sets the connected address for a SubConnState.
    +	SetConnectedAddress any // func(scs *SubConnState, addr resolver.Address)
    +
    +	// SnapshotMetricRegistryForTesting snapshots the global data of the metric
    +	// registry. Returns a cleanup function that sets the metric registry to its
    +	// original state. Only called in testing functions.
    +	SnapshotMetricRegistryForTesting func() func()
    +
    +	// SetDefaultBufferPoolForTesting updates the default buffer pool, for
    +	// testing purposes.
    +	SetDefaultBufferPoolForTesting any // func(mem.BufferPool)
    +
    +	// SetBufferPoolingThresholdForTesting updates the buffer pooling threshold, for
    +	// testing purposes.
    +	SetBufferPoolingThresholdForTesting any // func(int)
     )
     
     // HealthChecker defines the signature of the client-side LB channel health
    @@ -215,7 +245,7 @@ var (
     //
     // The implementation is expected to create a health checking RPC stream by
     // calling newStream(), watch for the health status of serviceName, and report
    -// it's health back by calling setConnectivityState().
    +// its health back by calling setConnectivityState().
     //
     // The health checking protocol is defined at:
     // https://github.com/grpc/grpc/blob/master/doc/health-checking.md
    @@ -237,3 +267,9 @@ const (
     // It currently has an experimental suffix which would be removed once
     // end-to-end testing of the policy is completed.
     const RLSLoadBalancingPolicyName = "rls_experimental"
    +
    +// EnforceSubConnEmbedding is used to enforce proper SubConn implementation
    +// embedding.
    +type EnforceSubConnEmbedding interface {
    +	enforceSubConnEmbedding()
    +}
    diff --git a/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go b/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go
    index 4552db16b028..ba5c5a95d0d7 100644
    --- a/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go
    +++ b/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go
    @@ -24,8 +24,9 @@ import (
     	"context"
     	"encoding/json"
     	"fmt"
    -	"math/rand"
    +	rand "math/rand/v2"
     	"net"
    +	"net/netip"
     	"os"
     	"strconv"
     	"strings"
    @@ -122,7 +123,7 @@ func (b *dnsBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts
     	}
     
     	// IP address.
    -	if ipAddr, ok := formatIP(host); ok {
    +	if ipAddr, err := formatIP(host); err == nil {
     		addr := []resolver.Address{{Addr: ipAddr + ":" + port}}
     		cc.UpdateState(resolver.State{Addresses: addr})
     		return deadResolver{}, nil
    @@ -177,7 +178,7 @@ type dnsResolver struct {
     	// finished. Otherwise, data race will be possible. [Race Example] in
     	// dns_resolver_test we replace the real lookup functions with mocked ones to
     	// facilitate testing. If Close() doesn't wait for watcher() goroutine
    -	// finishes, race detector sometimes will warns lookup (READ the lookup
    +	// finishes, race detector sometimes will warn lookup (READ the lookup
     	// function pointers) inside watcher() goroutine has data race with
     	// replaceNetFunc (WRITE the lookup function pointers).
     	wg                   sync.WaitGroup
    @@ -237,7 +238,9 @@ func (d *dnsResolver) watcher() {
     }
     
     func (d *dnsResolver) lookupSRV(ctx context.Context) ([]resolver.Address, error) {
    -	if !EnableSRVLookups {
    +	// Skip this particular host to avoid timeouts with some versions of
    +	// systemd-resolved.
    +	if !EnableSRVLookups || d.host == "metadata.google.internal." {
     		return nil, nil
     	}
     	var newAddrs []resolver.Address
    @@ -258,9 +261,9 @@ func (d *dnsResolver) lookupSRV(ctx context.Context) ([]resolver.Address, error)
     			return nil, err
     		}
     		for _, a := range lbAddrs {
    -			ip, ok := formatIP(a)
    -			if !ok {
    -				return nil, fmt.Errorf("dns: error parsing A record IP address %v", a)
    +			ip, err := formatIP(a)
    +			if err != nil {
    +				return nil, fmt.Errorf("dns: error parsing A record IP address %v: %v", a, err)
     			}
     			addr := ip + ":" + strconv.Itoa(int(s.Port))
     			newAddrs = append(newAddrs, resolver.Address{Addr: addr, ServerName: s.Target})
    @@ -320,9 +323,9 @@ func (d *dnsResolver) lookupHost(ctx context.Context) ([]resolver.Address, error
     	}
     	newAddrs := make([]resolver.Address, 0, len(addrs))
     	for _, a := range addrs {
    -		ip, ok := formatIP(a)
    -		if !ok {
    -			return nil, fmt.Errorf("dns: error parsing A record IP address %v", a)
    +		ip, err := formatIP(a)
    +		if err != nil {
    +			return nil, fmt.Errorf("dns: error parsing A record IP address %v: %v", a, err)
     		}
     		addr := ip + ":" + d.port
     		newAddrs = append(newAddrs, resolver.Address{Addr: addr})
    @@ -349,19 +352,19 @@ func (d *dnsResolver) lookup() (*resolver.State, error) {
     	return &state, nil
     }
     
    -// formatIP returns ok = false if addr is not a valid textual representation of
    -// an IP address. If addr is an IPv4 address, return the addr and ok = true.
    +// formatIP returns an error if addr is not a valid textual representation of
    +// an IP address. If addr is an IPv4 address, return the addr and error = nil.
     // If addr is an IPv6 address, return the addr enclosed in square brackets and
    -// ok = true.
    -func formatIP(addr string) (addrIP string, ok bool) {
    -	ip := net.ParseIP(addr)
    -	if ip == nil {
    -		return "", false
    +// error = nil.
    +func formatIP(addr string) (string, error) {
    +	ip, err := netip.ParseAddr(addr)
    +	if err != nil {
    +		return "", err
     	}
    -	if ip.To4() != nil {
    -		return addr, true
    +	if ip.Is4() {
    +		return addr, nil
     	}
    -	return "[" + addr + "]", true
    +	return "[" + addr + "]", nil
     }
     
     // parseTarget takes the user input target string and default port, returns
    @@ -377,7 +380,7 @@ func parseTarget(target, defaultPort string) (host, port string, err error) {
     	if target == "" {
     		return "", "", internal.ErrMissingAddr
     	}
    -	if ip := net.ParseIP(target); ip != nil {
    +	if _, err := netip.ParseAddr(target); err == nil {
     		// target is an IPv4 or IPv6(without brackets) address
     		return target, defaultPort, nil
     	}
    @@ -425,7 +428,7 @@ func chosenByPercentage(a *int) bool {
     	if a == nil {
     		return true
     	}
    -	return rand.Intn(100)+1 <= *a
    +	return rand.IntN(100)+1 <= *a
     }
     
     func canaryingSC(js string) string {
    diff --git a/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go b/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go
    index afac56572ad5..b901c7bace50 100644
    --- a/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go
    +++ b/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go
    @@ -55,7 +55,7 @@ func (r *passthroughResolver) start() {
     	r.cc.UpdateState(resolver.State{Addresses: []resolver.Address{{Addr: r.target.Endpoint()}}})
     }
     
    -func (*passthroughResolver) ResolveNow(o resolver.ResolveNowOptions) {}
    +func (*passthroughResolver) ResolveNow(resolver.ResolveNowOptions) {}
     
     func (*passthroughResolver) Close() {}
     
    diff --git a/vendor/google.golang.org/grpc/internal/stats/labels.go b/vendor/google.golang.org/grpc/internal/stats/labels.go
    new file mode 100644
    index 000000000000..fd33af51ae89
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/internal/stats/labels.go
    @@ -0,0 +1,42 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +// Package stats provides internal stats related functionality.
    +package stats
    +
    +import "context"
    +
    +// Labels are the labels for metrics.
    +type Labels struct {
    +	// TelemetryLabels are the telemetry labels to record.
    +	TelemetryLabels map[string]string
    +}
    +
    +type labelsKey struct{}
    +
    +// GetLabels returns the Labels stored in the context, or nil if there is one.
    +func GetLabels(ctx context.Context) *Labels {
    +	labels, _ := ctx.Value(labelsKey{}).(*Labels)
    +	return labels
    +}
    +
    +// SetLabels sets the Labels in the context.
    +func SetLabels(ctx context.Context, labels *Labels) context.Context {
    +	// could also append
    +	return context.WithValue(ctx, labelsKey{}, labels)
    +}
    diff --git a/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go b/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go
    new file mode 100644
    index 000000000000..79044657be15
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go
    @@ -0,0 +1,105 @@
    +/*
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package stats
    +
    +import (
    +	"fmt"
    +
    +	estats "google.golang.org/grpc/experimental/stats"
    +	"google.golang.org/grpc/stats"
    +)
    +
    +// MetricsRecorderList forwards Record calls to all of its metricsRecorders.
    +//
    +// It eats any record calls where the label values provided do not match the
    +// number of label keys.
    +type MetricsRecorderList struct {
    +	// metricsRecorders are the metrics recorders this list will forward to.
    +	metricsRecorders []estats.MetricsRecorder
    +}
    +
    +// NewMetricsRecorderList creates a new metric recorder list with all the stats
    +// handlers provided which implement the MetricsRecorder interface.
    +// If no stats handlers provided implement the MetricsRecorder interface,
    +// the MetricsRecorder list returned is a no-op.
    +func NewMetricsRecorderList(shs []stats.Handler) *MetricsRecorderList {
    +	var mrs []estats.MetricsRecorder
    +	for _, sh := range shs {
    +		if mr, ok := sh.(estats.MetricsRecorder); ok {
    +			mrs = append(mrs, mr)
    +		}
    +	}
    +	return &MetricsRecorderList{
    +		metricsRecorders: mrs,
    +	}
    +}
    +
    +func verifyLabels(desc *estats.MetricDescriptor, labelsRecv ...string) {
    +	if got, want := len(labelsRecv), len(desc.Labels)+len(desc.OptionalLabels); got != want {
    +		panic(fmt.Sprintf("Received %d labels in call to record metric %q, but expected %d.", got, desc.Name, want))
    +	}
    +}
    +
    +// RecordInt64Count records the measurement alongside labels on the int
    +// count associated with the provided handle.
    +func (l *MetricsRecorderList) RecordInt64Count(handle *estats.Int64CountHandle, incr int64, labels ...string) {
    +	verifyLabels(handle.Descriptor(), labels...)
    +
    +	for _, metricRecorder := range l.metricsRecorders {
    +		metricRecorder.RecordInt64Count(handle, incr, labels...)
    +	}
    +}
    +
    +// RecordFloat64Count records the measurement alongside labels on the float
    +// count associated with the provided handle.
    +func (l *MetricsRecorderList) RecordFloat64Count(handle *estats.Float64CountHandle, incr float64, labels ...string) {
    +	verifyLabels(handle.Descriptor(), labels...)
    +
    +	for _, metricRecorder := range l.metricsRecorders {
    +		metricRecorder.RecordFloat64Count(handle, incr, labels...)
    +	}
    +}
    +
    +// RecordInt64Histo records the measurement alongside labels on the int
    +// histo associated with the provided handle.
    +func (l *MetricsRecorderList) RecordInt64Histo(handle *estats.Int64HistoHandle, incr int64, labels ...string) {
    +	verifyLabels(handle.Descriptor(), labels...)
    +
    +	for _, metricRecorder := range l.metricsRecorders {
    +		metricRecorder.RecordInt64Histo(handle, incr, labels...)
    +	}
    +}
    +
    +// RecordFloat64Histo records the measurement alongside labels on the float
    +// histo associated with the provided handle.
    +func (l *MetricsRecorderList) RecordFloat64Histo(handle *estats.Float64HistoHandle, incr float64, labels ...string) {
    +	verifyLabels(handle.Descriptor(), labels...)
    +
    +	for _, metricRecorder := range l.metricsRecorders {
    +		metricRecorder.RecordFloat64Histo(handle, incr, labels...)
    +	}
    +}
    +
    +// RecordInt64Gauge records the measurement alongside labels on the int
    +// gauge associated with the provided handle.
    +func (l *MetricsRecorderList) RecordInt64Gauge(handle *estats.Int64GaugeHandle, incr int64, labels ...string) {
    +	verifyLabels(handle.Descriptor(), labels...)
    +
    +	for _, metricRecorder := range l.metricsRecorders {
    +		metricRecorder.RecordInt64Gauge(handle, incr, labels...)
    +	}
    +}
    diff --git a/vendor/google.golang.org/grpc/internal/status/status.go b/vendor/google.golang.org/grpc/internal/status/status.go
    index c7dbc8205952..1186f1e9a9ad 100644
    --- a/vendor/google.golang.org/grpc/internal/status/status.go
    +++ b/vendor/google.golang.org/grpc/internal/status/status.go
    @@ -138,17 +138,19 @@ func (s *Status) WithDetails(details ...protoadapt.MessageV1) (*Status, error) {
     	// s.Code() != OK implies that s.Proto() != nil.
     	p := s.Proto()
     	for _, detail := range details {
    -		any, err := anypb.New(protoadapt.MessageV2Of(detail))
    +		m, err := anypb.New(protoadapt.MessageV2Of(detail))
     		if err != nil {
     			return nil, err
     		}
    -		p.Details = append(p.Details, any)
    +		p.Details = append(p.Details, m)
     	}
     	return &Status{s: p}, nil
     }
     
     // Details returns a slice of details messages attached to the status.
     // If a detail cannot be decoded, the error is returned in place of the detail.
    +// If the detail can be decoded, the proto message returned is of the same
    +// type that was given to WithDetails().
     func (s *Status) Details() []any {
     	if s == nil || s.s == nil {
     		return nil
    @@ -160,7 +162,38 @@ func (s *Status) Details() []any {
     			details = append(details, err)
     			continue
     		}
    -		details = append(details, detail)
    +		// The call to MessageV1Of is required to unwrap the proto message if
    +		// it implemented only the MessageV1 API. The proto message would have
    +		// been wrapped in a V2 wrapper in Status.WithDetails. V2 messages are
    +		// added to a global registry used by any.UnmarshalNew().
    +		// MessageV1Of has the following behaviour:
    +		// 1. If the given message is a wrapped MessageV1, it returns the
    +		//   unwrapped value.
    +		// 2. If the given message already implements MessageV1, it returns it
    +		//   as is.
    +		// 3. Else, it wraps the MessageV2 in a MessageV1 wrapper.
    +		//
    +		// Since the Status.WithDetails() API only accepts MessageV1, calling
    +		// MessageV1Of ensures we return the same type that was given to
    +		// WithDetails:
    +		// * If the give type implemented only MessageV1, the unwrapping from
    +		//   point 1 above will restore the type.
    +		// * If the given type implemented both MessageV1 and MessageV2, point 2
    +		//   above will ensure no wrapping is performed.
    +		// * If the given type implemented only MessageV2 and was wrapped using
    +		//   MessageV1Of before passing to WithDetails(), it would be unwrapped
    +		//   in WithDetails by calling MessageV2Of(). Point 3 above will ensure
    +		//   that the type is wrapped in a MessageV1 wrapper again before
    +		//   returning. Note that protoc-gen-go doesn't generate code which
    +		//   implements ONLY MessageV2 at the time of writing.
    +		//
    +		// NOTE: Status details can also be added using the FromProto method.
    +		// This could theoretically allow passing a Detail message that only
    +		// implements the V2 API. In such a case the message will be wrapped in
    +		// a MessageV1 wrapper when fetched using Details().
    +		// Since protoc-gen-go generates only code that implements both V1 and
    +		// V2 APIs for backward compatibility, this is not a concern.
    +		details = append(details, protoadapt.MessageV1Of(detail))
     	}
     	return details
     }
    diff --git a/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go b/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go
    index 999f52cd75bd..54c24c2ff386 100644
    --- a/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go
    +++ b/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go
    @@ -58,20 +58,20 @@ func GetRusage() *Rusage {
     
     // CPUTimeDiff returns the differences of user CPU time and system CPU time used
     // between two Rusage structs. It a no-op function for non-linux environments.
    -func CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) {
    +func CPUTimeDiff(*Rusage, *Rusage) (float64, float64) {
     	log()
     	return 0, 0
     }
     
     // SetTCPUserTimeout is a no-op function under non-linux environments.
    -func SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error {
    +func SetTCPUserTimeout(net.Conn, time.Duration) error {
     	log()
     	return nil
     }
     
     // GetTCPUserTimeout is a no-op function under non-linux environments.
     // A negative return value indicates the operation is not supported
    -func GetTCPUserTimeout(conn net.Conn) (int, error) {
    +func GetTCPUserTimeout(net.Conn) (int, error) {
     	log()
     	return -1, nil
     }
    diff --git a/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go b/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go
    index 078137b7fd70..7e7aaa546368 100644
    --- a/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go
    +++ b/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go
    @@ -44,7 +44,7 @@ func NetDialerWithTCPKeepalive() *net.Dialer {
     		// combination of unconditionally enabling TCP keepalives here, and
     		// disabling the overriding of TCP keepalive parameters by setting the
     		// KeepAlive field to a negative value above, results in OS defaults for
    -		// the TCP keealive interval and time parameters.
    +		// the TCP keepalive interval and time parameters.
     		Control: func(_, _ string, c syscall.RawConn) error {
     			return c.Control(func(fd uintptr) {
     				unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_KEEPALIVE, 1)
    diff --git a/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go b/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go
    index fd7d43a8907b..d5c1085eeaec 100644
    --- a/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go
    +++ b/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go
    @@ -44,7 +44,7 @@ func NetDialerWithTCPKeepalive() *net.Dialer {
     		// combination of unconditionally enabling TCP keepalives here, and
     		// disabling the overriding of TCP keepalive parameters by setting the
     		// KeepAlive field to a negative value above, results in OS defaults for
    -		// the TCP keealive interval and time parameters.
    +		// the TCP keepalive interval and time parameters.
     		Control: func(_, _ string, c syscall.RawConn) error {
     			return c.Control(func(fd uintptr) {
     				windows.SetsockoptInt(windows.Handle(fd), windows.SOL_SOCKET, windows.SO_KEEPALIVE, 1)
    diff --git a/vendor/google.golang.org/grpc/internal/transport/client_stream.go b/vendor/google.golang.org/grpc/internal/transport/client_stream.go
    new file mode 100644
    index 000000000000..8ed347c54195
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/internal/transport/client_stream.go
    @@ -0,0 +1,144 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +package transport
    +
    +import (
    +	"sync/atomic"
    +
    +	"golang.org/x/net/http2"
    +	"google.golang.org/grpc/mem"
    +	"google.golang.org/grpc/metadata"
    +	"google.golang.org/grpc/status"
    +)
    +
    +// ClientStream implements streaming functionality for a gRPC client.
    +type ClientStream struct {
    +	*Stream // Embed for common stream functionality.
    +
    +	ct       *http2Client
    +	done     chan struct{} // closed at the end of stream to unblock writers.
    +	doneFunc func()        // invoked at the end of stream.
    +
    +	headerChan       chan struct{} // closed to indicate the end of header metadata.
    +	headerChanClosed uint32        // set when headerChan is closed. Used to avoid closing headerChan multiple times.
    +	// headerValid indicates whether a valid header was received.  Only
    +	// meaningful after headerChan is closed (always call waitOnHeader() before
    +	// reading its value).
    +	headerValid bool
    +	header      metadata.MD // the received header metadata
    +	noHeaders   bool        // set if the client never received headers (set only after the stream is done).
    +
    +	bytesReceived atomic.Bool // indicates whether any bytes have been received on this stream
    +	unprocessed   atomic.Bool // set if the server sends a refused stream or GOAWAY including this stream
    +
    +	status *status.Status // the status error received from the server
    +}
    +
    +// Read reads an n byte message from the input stream.
    +func (s *ClientStream) Read(n int) (mem.BufferSlice, error) {
    +	b, err := s.Stream.read(n)
    +	if err == nil {
    +		s.ct.incrMsgRecv()
    +	}
    +	return b, err
    +}
    +
    +// Close closes the stream and popagates err to any readers.
    +func (s *ClientStream) Close(err error) {
    +	var (
    +		rst     bool
    +		rstCode http2.ErrCode
    +	)
    +	if err != nil {
    +		rst = true
    +		rstCode = http2.ErrCodeCancel
    +	}
    +	s.ct.closeStream(s, err, rst, rstCode, status.Convert(err), nil, false)
    +}
    +
    +// Write writes the hdr and data bytes to the output stream.
    +func (s *ClientStream) Write(hdr []byte, data mem.BufferSlice, opts *WriteOptions) error {
    +	return s.ct.write(s, hdr, data, opts)
    +}
    +
    +// BytesReceived indicates whether any bytes have been received on this stream.
    +func (s *ClientStream) BytesReceived() bool {
    +	return s.bytesReceived.Load()
    +}
    +
    +// Unprocessed indicates whether the server did not process this stream --
    +// i.e. it sent a refused stream or GOAWAY including this stream ID.
    +func (s *ClientStream) Unprocessed() bool {
    +	return s.unprocessed.Load()
    +}
    +
    +func (s *ClientStream) waitOnHeader() {
    +	select {
    +	case <-s.ctx.Done():
    +		// Close the stream to prevent headers/trailers from changing after
    +		// this function returns.
    +		s.Close(ContextErr(s.ctx.Err()))
    +		// headerChan could possibly not be closed yet if closeStream raced
    +		// with operateHeaders; wait until it is closed explicitly here.
    +		<-s.headerChan
    +	case <-s.headerChan:
    +	}
    +}
    +
    +// RecvCompress returns the compression algorithm applied to the inbound
    +// message. It is empty string if there is no compression applied.
    +func (s *ClientStream) RecvCompress() string {
    +	s.waitOnHeader()
    +	return s.recvCompress
    +}
    +
    +// Done returns a channel which is closed when it receives the final status
    +// from the server.
    +func (s *ClientStream) Done() <-chan struct{} {
    +	return s.done
    +}
    +
    +// Header returns the header metadata of the stream. Acquires the key-value
    +// pairs of header metadata once it is available. It blocks until i) the
    +// metadata is ready or ii) there is no header metadata or iii) the stream is
    +// canceled/expired.
    +func (s *ClientStream) Header() (metadata.MD, error) {
    +	s.waitOnHeader()
    +
    +	if !s.headerValid || s.noHeaders {
    +		return nil, s.status.Err()
    +	}
    +
    +	return s.header.Copy(), nil
    +}
    +
    +// TrailersOnly blocks until a header or trailers-only frame is received and
    +// then returns true if the stream was trailers-only.  If the stream ends
    +// before headers are received, returns true, nil.
    +func (s *ClientStream) TrailersOnly() bool {
    +	s.waitOnHeader()
    +	return s.noHeaders
    +}
    +
    +// Status returns the status received from the server.
    +// Status can be read safely only after the stream has ended,
    +// that is, after Done() is closed.
    +func (s *ClientStream) Status() *status.Status {
    +	return s.status
    +}
    diff --git a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go
    index 3deadfb4a20c..ef72fbb3a016 100644
    --- a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go
    +++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go
    @@ -32,6 +32,7 @@ import (
     	"golang.org/x/net/http2/hpack"
     	"google.golang.org/grpc/internal/grpclog"
     	"google.golang.org/grpc/internal/grpcutil"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/grpc/status"
     )
     
    @@ -148,9 +149,9 @@ type dataFrame struct {
     	streamID  uint32
     	endStream bool
     	h         []byte
    -	d         []byte
    +	reader    mem.Reader
     	// onEachWrite is called every time
    -	// a part of d is written out.
    +	// a part of data is written out.
     	onEachWrite func()
     }
     
    @@ -289,18 +290,22 @@ func (l *outStreamList) dequeue() *outStream {
     }
     
     // controlBuffer is a way to pass information to loopy.
    -// Information is passed as specific struct types called control frames.
    -// A control frame not only represents data, messages or headers to be sent out
    -// but can also be used to instruct loopy to update its internal state.
    -// It shouldn't be confused with an HTTP2 frame, although some of the control frames
    -// like dataFrame and headerFrame do go out on wire as HTTP2 frames.
    +//
    +// Information is passed as specific struct types called control frames. A
    +// control frame not only represents data, messages or headers to be sent out
    +// but can also be used to instruct loopy to update its internal state. It
    +// shouldn't be confused with an HTTP2 frame, although some of the control
    +// frames like dataFrame and headerFrame do go out on wire as HTTP2 frames.
     type controlBuffer struct {
    -	ch              chan struct{}
    -	done            <-chan struct{}
    +	wakeupCh chan struct{}   // Unblocks readers waiting for something to read.
    +	done     <-chan struct{} // Closed when the transport is done.
    +
    +	// Mutex guards all the fields below, except trfChan which can be read
    +	// atomically without holding mu.
     	mu              sync.Mutex
    -	consumerWaiting bool
    -	list            *itemList
    -	err             error
    +	consumerWaiting bool      // True when readers are blocked waiting for new data.
    +	closed          bool      // True when the controlbuf is finished.
    +	list            *itemList // List of queued control frames.
     
     	// transportResponseFrames counts the number of queued items that represent
     	// the response of an action initiated by the peer.  trfChan is created
    @@ -308,47 +313,59 @@ type controlBuffer struct {
     	// closed and nilled when transportResponseFrames drops below the
     	// threshold.  Both fields are protected by mu.
     	transportResponseFrames int
    -	trfChan                 atomic.Value // chan struct{}
    +	trfChan                 atomic.Pointer[chan struct{}]
     }
     
     func newControlBuffer(done <-chan struct{}) *controlBuffer {
     	return &controlBuffer{
    -		ch:   make(chan struct{}, 1),
    -		list: &itemList{},
    -		done: done,
    +		wakeupCh: make(chan struct{}, 1),
    +		list:     &itemList{},
    +		done:     done,
     	}
     }
     
    -// throttle blocks if there are too many incomingSettings/cleanupStreams in the
    -// controlbuf.
    +// throttle blocks if there are too many frames in the control buf that
    +// represent the response of an action initiated by the peer, like
    +// incomingSettings cleanupStreams etc.
     func (c *controlBuffer) throttle() {
    -	ch, _ := c.trfChan.Load().(chan struct{})
    -	if ch != nil {
    +	if ch := c.trfChan.Load(); ch != nil {
     		select {
    -		case <-ch:
    +		case <-(*ch):
     		case <-c.done:
     		}
     	}
     }
     
    +// put adds an item to the controlbuf.
     func (c *controlBuffer) put(it cbItem) error {
     	_, err := c.executeAndPut(nil, it)
     	return err
     }
     
    +// executeAndPut runs f, and if the return value is true, adds the given item to
    +// the controlbuf. The item could be nil, in which case, this method simply
    +// executes f and does not add the item to the controlbuf.
    +//
    +// The first return value indicates whether the item was successfully added to
    +// the control buffer. A non-nil error, specifically ErrConnClosing, is returned
    +// if the control buffer is already closed.
     func (c *controlBuffer) executeAndPut(f func() bool, it cbItem) (bool, error) {
    -	var wakeUp bool
     	c.mu.Lock()
    -	if c.err != nil {
    -		c.mu.Unlock()
    -		return false, c.err
    +	defer c.mu.Unlock()
    +
    +	if c.closed {
    +		return false, ErrConnClosing
     	}
     	if f != nil {
     		if !f() { // f wasn't successful
    -			c.mu.Unlock()
     			return false, nil
     		}
     	}
    +	if it == nil {
    +		return true, nil
    +	}
    +
    +	var wakeUp bool
     	if c.consumerWaiting {
     		wakeUp = true
     		c.consumerWaiting = false
    @@ -359,98 +376,102 @@ func (c *controlBuffer) executeAndPut(f func() bool, it cbItem) (bool, error) {
     		if c.transportResponseFrames == maxQueuedTransportResponseFrames {
     			// We are adding the frame that puts us over the threshold; create
     			// a throttling channel.
    -			c.trfChan.Store(make(chan struct{}))
    +			ch := make(chan struct{})
    +			c.trfChan.Store(&ch)
     		}
     	}
    -	c.mu.Unlock()
     	if wakeUp {
     		select {
    -		case c.ch <- struct{}{}:
    +		case c.wakeupCh <- struct{}{}:
     		default:
     		}
     	}
     	return true, nil
     }
     
    -// Note argument f should never be nil.
    -func (c *controlBuffer) execute(f func(it any) bool, it any) (bool, error) {
    -	c.mu.Lock()
    -	if c.err != nil {
    -		c.mu.Unlock()
    -		return false, c.err
    -	}
    -	if !f(it) { // f wasn't successful
    -		c.mu.Unlock()
    -		return false, nil
    -	}
    -	c.mu.Unlock()
    -	return true, nil
    -}
    -
    +// get returns the next control frame from the control buffer. If block is true
    +// **and** there are no control frames in the control buffer, the call blocks
    +// until one of the conditions is met: there is a frame to return or the
    +// transport is closed.
     func (c *controlBuffer) get(block bool) (any, error) {
     	for {
     		c.mu.Lock()
    -		if c.err != nil {
    +		frame, err := c.getOnceLocked()
    +		if frame != nil || err != nil || !block {
    +			// If we read a frame or an error, we can return to the caller. The
    +			// call to getOnceLocked() returns a nil frame and a nil error if
    +			// there is nothing to read, and in that case, if the caller asked
    +			// us not to block, we can return now as well.
     			c.mu.Unlock()
    -			return nil, c.err
    -		}
    -		if !c.list.isEmpty() {
    -			h := c.list.dequeue().(cbItem)
    -			if h.isTransportResponseFrame() {
    -				if c.transportResponseFrames == maxQueuedTransportResponseFrames {
    -					// We are removing the frame that put us over the
    -					// threshold; close and clear the throttling channel.
    -					ch := c.trfChan.Load().(chan struct{})
    -					close(ch)
    -					c.trfChan.Store((chan struct{})(nil))
    -				}
    -				c.transportResponseFrames--
    -			}
    -			c.mu.Unlock()
    -			return h, nil
    -		}
    -		if !block {
    -			c.mu.Unlock()
    -			return nil, nil
    +			return frame, err
     		}
     		c.consumerWaiting = true
     		c.mu.Unlock()
    +
    +		// Release the lock above and wait to be woken up.
     		select {
    -		case <-c.ch:
    +		case <-c.wakeupCh:
     		case <-c.done:
     			return nil, errors.New("transport closed by client")
     		}
     	}
     }
     
    +// Callers must not use this method, but should instead use get().
    +//
    +// Caller must hold c.mu.
    +func (c *controlBuffer) getOnceLocked() (any, error) {
    +	if c.closed {
    +		return false, ErrConnClosing
    +	}
    +	if c.list.isEmpty() {
    +		return nil, nil
    +	}
    +	h := c.list.dequeue().(cbItem)
    +	if h.isTransportResponseFrame() {
    +		if c.transportResponseFrames == maxQueuedTransportResponseFrames {
    +			// We are removing the frame that put us over the
    +			// threshold; close and clear the throttling channel.
    +			ch := c.trfChan.Swap(nil)
    +			close(*ch)
    +		}
    +		c.transportResponseFrames--
    +	}
    +	return h, nil
    +}
    +
    +// finish closes the control buffer, cleaning up any streams that have queued
    +// header frames. Once this method returns, no more frames can be added to the
    +// control buffer, and attempts to do so will return ErrConnClosing.
     func (c *controlBuffer) finish() {
     	c.mu.Lock()
    -	if c.err != nil {
    -		c.mu.Unlock()
    +	defer c.mu.Unlock()
    +
    +	if c.closed {
     		return
     	}
    -	c.err = ErrConnClosing
    +	c.closed = true
     	// There may be headers for streams in the control buffer.
     	// These streams need to be cleaned out since the transport
     	// is still not aware of these yet.
     	for head := c.list.dequeueAll(); head != nil; head = head.next {
    -		hdr, ok := head.it.(*headerFrame)
    -		if !ok {
    -			continue
    -		}
    -		if hdr.onOrphaned != nil { // It will be nil on the server-side.
    -			hdr.onOrphaned(ErrConnClosing)
    +		switch v := head.it.(type) {
    +		case *headerFrame:
    +			if v.onOrphaned != nil { // It will be nil on the server-side.
    +				v.onOrphaned(ErrConnClosing)
    +			}
    +		case *dataFrame:
    +			_ = v.reader.Close()
     		}
     	}
    +
     	// In case throttle() is currently in flight, it needs to be unblocked.
     	// Otherwise, the transport may not close, since the transport is closed by
     	// the reader encountering the connection error.
    -	ch, _ := c.trfChan.Load().(chan struct{})
    +	ch := c.trfChan.Swap(nil)
     	if ch != nil {
    -		close(ch)
    +		close(*ch)
     	}
    -	c.trfChan.Store((chan struct{})(nil))
    -	c.mu.Unlock()
     }
     
     type side int
    @@ -466,7 +487,7 @@ const (
     // stream maintains a queue of data frames; as loopy receives data frames
     // it gets added to the queue of the relevant stream.
     // Loopy goes over this list of active streams by processing one node every iteration,
    -// thereby closely resemebling to a round-robin scheduling over all streams. While
    +// thereby closely resembling a round-robin scheduling over all streams. While
     // processing a stream, loopy writes out data bytes from this stream capped by the min
     // of http2MaxFrameLen, connection-level flow control and stream-level flow control.
     type loopyWriter struct {
    @@ -490,12 +511,13 @@ type loopyWriter struct {
     	draining      bool
     	conn          net.Conn
     	logger        *grpclog.PrefixLogger
    +	bufferPool    mem.BufferPool
     
     	// Side-specific handlers
     	ssGoAwayHandler func(*goAway) (bool, error)
     }
     
    -func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger, goAwayHandler func(*goAway) (bool, error)) *loopyWriter {
    +func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger, goAwayHandler func(*goAway) (bool, error), bufferPool mem.BufferPool) *loopyWriter {
     	var buf bytes.Buffer
     	l := &loopyWriter{
     		side:            s,
    @@ -511,6 +533,7 @@ func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimato
     		conn:            conn,
     		logger:          logger,
     		ssGoAwayHandler: goAwayHandler,
    +		bufferPool:      bufferPool,
     	}
     	return l
     }
    @@ -768,6 +791,11 @@ func (l *loopyWriter) cleanupStreamHandler(c *cleanupStream) error {
     		// not be established yet.
     		delete(l.estdStreams, c.streamID)
     		str.deleteSelf()
    +		for head := str.itl.dequeueAll(); head != nil; head = head.next {
    +			if df, ok := head.it.(*dataFrame); ok {
    +				_ = df.reader.Close()
    +			}
    +		}
     	}
     	if c.rst { // If RST_STREAM needs to be sent.
     		if err := l.framer.fr.WriteRSTStream(c.streamID, c.rstCode); err != nil {
    @@ -903,16 +931,18 @@ func (l *loopyWriter) processData() (bool, error) {
     	dataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream.
     	// A data item is represented by a dataFrame, since it later translates into
     	// multiple HTTP2 data frames.
    -	// Every dataFrame has two buffers; h that keeps grpc-message header and d that is actual data.
    -	// As an optimization to keep wire traffic low, data from d is copied to h to make as big as the
    -	// maximum possible HTTP2 frame size.
    +	// Every dataFrame has two buffers; h that keeps grpc-message header and data
    +	// that is the actual message. As an optimization to keep wire traffic low, data
    +	// from data is copied to h to make as big as the maximum possible HTTP2 frame
    +	// size.
     
    -	if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // Empty data frame
    +	if len(dataItem.h) == 0 && dataItem.reader.Remaining() == 0 { // Empty data frame
     		// Client sends out empty data frame with endStream = true
     		if err := l.framer.fr.WriteData(dataItem.streamID, dataItem.endStream, nil); err != nil {
     			return false, err
     		}
     		str.itl.dequeue() // remove the empty data item from stream
    +		_ = dataItem.reader.Close()
     		if str.itl.isEmpty() {
     			str.state = empty
     		} else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers.
    @@ -927,9 +957,7 @@ func (l *loopyWriter) processData() (bool, error) {
     		}
     		return false, nil
     	}
    -	var (
    -		buf []byte
    -	)
    +
     	// Figure out the maximum size we can send
     	maxSize := http2MaxFrameLen
     	if strQuota := int(l.oiws) - str.bytesOutStanding; strQuota <= 0 { // stream-level flow control.
    @@ -943,43 +971,50 @@ func (l *loopyWriter) processData() (bool, error) {
     	}
     	// Compute how much of the header and data we can send within quota and max frame length
     	hSize := min(maxSize, len(dataItem.h))
    -	dSize := min(maxSize-hSize, len(dataItem.d))
    -	if hSize != 0 {
    -		if dSize == 0 {
    -			buf = dataItem.h
    -		} else {
    -			// We can add some data to grpc message header to distribute bytes more equally across frames.
    -			// Copy on the stack to avoid generating garbage
    -			var localBuf [http2MaxFrameLen]byte
    -			copy(localBuf[:hSize], dataItem.h)
    -			copy(localBuf[hSize:], dataItem.d[:dSize])
    -			buf = localBuf[:hSize+dSize]
    -		}
    +	dSize := min(maxSize-hSize, dataItem.reader.Remaining())
    +	remainingBytes := len(dataItem.h) + dataItem.reader.Remaining() - hSize - dSize
    +	size := hSize + dSize
    +
    +	var buf *[]byte
    +
    +	if hSize != 0 && dSize == 0 {
    +		buf = &dataItem.h
     	} else {
    -		buf = dataItem.d
    -	}
    +		// Note: this is only necessary because the http2.Framer does not support
    +		// partially writing a frame, so the sequence must be materialized into a buffer.
    +		// TODO: Revisit once https://github.com/golang/go/issues/66655 is addressed.
    +		pool := l.bufferPool
    +		if pool == nil {
    +			// Note that this is only supposed to be nil in tests. Otherwise, stream is
    +			// always initialized with a BufferPool.
    +			pool = mem.DefaultBufferPool()
    +		}
    +		buf = pool.Get(size)
    +		defer pool.Put(buf)
     
    -	size := hSize + dSize
    +		copy((*buf)[:hSize], dataItem.h)
    +		_, _ = dataItem.reader.Read((*buf)[hSize:])
    +	}
     
     	// Now that outgoing flow controls are checked we can replenish str's write quota
     	str.wq.replenish(size)
     	var endStream bool
     	// If this is the last data message on this stream and all of it can be written in this iteration.
    -	if dataItem.endStream && len(dataItem.h)+len(dataItem.d) <= size {
    +	if dataItem.endStream && remainingBytes == 0 {
     		endStream = true
     	}
     	if dataItem.onEachWrite != nil {
     		dataItem.onEachWrite()
     	}
    -	if err := l.framer.fr.WriteData(dataItem.streamID, endStream, buf[:size]); err != nil {
    +	if err := l.framer.fr.WriteData(dataItem.streamID, endStream, (*buf)[:size]); err != nil {
     		return false, err
     	}
     	str.bytesOutStanding += size
     	l.sendQuota -= uint32(size)
     	dataItem.h = dataItem.h[hSize:]
    -	dataItem.d = dataItem.d[dSize:]
     
    -	if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // All the data from that message was written out.
    +	if remainingBytes == 0 { // All the data from that message was written out.
    +		_ = dataItem.reader.Close()
     		str.itl.dequeue()
     	}
     	if str.itl.isEmpty() {
    @@ -998,10 +1033,3 @@ func (l *loopyWriter) processData() (bool, error) {
     	}
     	return false, nil
     }
    -
    -func min(a, b int) int {
    -	if a < b {
    -		return a
    -	}
    -	return b
    -}
    diff --git a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go
    index 97198c515889..dfc0f224ec87 100644
    --- a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go
    +++ b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go
    @@ -92,14 +92,11 @@ func (f *trInFlow) newLimit(n uint32) uint32 {
     
     func (f *trInFlow) onData(n uint32) uint32 {
     	f.unacked += n
    -	if f.unacked >= f.limit/4 {
    -		w := f.unacked
    -		f.unacked = 0
    +	if f.unacked < f.limit/4 {
     		f.updateEffectiveWindowSize()
    -		return w
    +		return 0
     	}
    -	f.updateEffectiveWindowSize()
    -	return 0
    +	return f.reset()
     }
     
     func (f *trInFlow) reset() uint32 {
    diff --git a/vendor/google.golang.org/grpc/internal/transport/handler_server.go b/vendor/google.golang.org/grpc/internal/transport/handler_server.go
    index 4a3ddce29a4e..d9305a65d88f 100644
    --- a/vendor/google.golang.org/grpc/internal/transport/handler_server.go
    +++ b/vendor/google.golang.org/grpc/internal/transport/handler_server.go
    @@ -24,7 +24,6 @@
     package transport
     
     import (
    -	"bytes"
     	"context"
     	"errors"
     	"fmt"
    @@ -40,6 +39,7 @@ import (
     	"google.golang.org/grpc/credentials"
     	"google.golang.org/grpc/internal/grpclog"
     	"google.golang.org/grpc/internal/grpcutil"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/grpc/metadata"
     	"google.golang.org/grpc/peer"
     	"google.golang.org/grpc/stats"
    @@ -50,7 +50,7 @@ import (
     // NewServerHandlerTransport returns a ServerTransport handling gRPC from
     // inside an http.Handler, or writes an HTTP error to w and returns an error.
     // It requires that the http Server supports HTTP/2.
    -func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []stats.Handler) (ServerTransport, error) {
    +func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []stats.Handler, bufferPool mem.BufferPool) (ServerTransport, error) {
     	if r.Method != http.MethodPost {
     		w.Header().Set("Allow", http.MethodPost)
     		msg := fmt.Sprintf("invalid gRPC request method %q", r.Method)
    @@ -98,6 +98,7 @@ func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []s
     		contentType:    contentType,
     		contentSubtype: contentSubtype,
     		stats:          stats,
    +		bufferPool:     bufferPool,
     	}
     	st.logger = prefixLoggerForServerHandlerTransport(st)
     
    @@ -171,6 +172,8 @@ type serverHandlerTransport struct {
     
     	stats  []stats.Handler
     	logger *grpclog.PrefixLogger
    +
    +	bufferPool mem.BufferPool
     }
     
     func (ht *serverHandlerTransport) Close(err error) {
    @@ -222,7 +225,7 @@ func (ht *serverHandlerTransport) do(fn func()) error {
     	}
     }
     
    -func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) error {
    +func (ht *serverHandlerTransport) writeStatus(s *ServerStream, st *status.Status) error {
     	ht.writeStatusMu.Lock()
     	defer ht.writeStatusMu.Unlock()
     
    @@ -244,6 +247,7 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro
     		}
     
     		s.hdrMu.Lock()
    +		defer s.hdrMu.Unlock()
     		if p := st.Proto(); p != nil && len(p.Details) > 0 {
     			delete(s.trailer, grpcStatusDetailsBinHeader)
     			stBytes, err := proto.Marshal(p)
    @@ -268,7 +272,6 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro
     				}
     			}
     		}
    -		s.hdrMu.Unlock()
     	})
     
     	if err == nil { // transport has not been closed
    @@ -286,14 +289,14 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro
     
     // writePendingHeaders sets common and custom headers on the first
     // write call (Write, WriteHeader, or WriteStatus)
    -func (ht *serverHandlerTransport) writePendingHeaders(s *Stream) {
    +func (ht *serverHandlerTransport) writePendingHeaders(s *ServerStream) {
     	ht.writeCommonHeaders(s)
     	ht.writeCustomHeaders(s)
     }
     
     // writeCommonHeaders sets common headers on the first write
     // call (Write, WriteHeader, or WriteStatus).
    -func (ht *serverHandlerTransport) writeCommonHeaders(s *Stream) {
    +func (ht *serverHandlerTransport) writeCommonHeaders(s *ServerStream) {
     	h := ht.rw.Header()
     	h["Date"] = nil // suppress Date to make tests happy; TODO: restore
     	h.Set("Content-Type", ht.contentType)
    @@ -314,7 +317,7 @@ func (ht *serverHandlerTransport) writeCommonHeaders(s *Stream) {
     
     // writeCustomHeaders sets custom headers set on the stream via SetHeader
     // on the first write call (Write, WriteHeader, or WriteStatus)
    -func (ht *serverHandlerTransport) writeCustomHeaders(s *Stream) {
    +func (ht *serverHandlerTransport) writeCustomHeaders(s *ServerStream) {
     	h := ht.rw.Header()
     
     	s.hdrMu.Lock()
    @@ -330,19 +333,31 @@ func (ht *serverHandlerTransport) writeCustomHeaders(s *Stream) {
     	s.hdrMu.Unlock()
     }
     
    -func (ht *serverHandlerTransport) Write(s *Stream, hdr []byte, data []byte, opts *Options) error {
    +func (ht *serverHandlerTransport) write(s *ServerStream, hdr []byte, data mem.BufferSlice, _ *WriteOptions) error {
    +	// Always take a reference because otherwise there is no guarantee the data will
    +	// be available after this function returns. This is what callers to Write
    +	// expect.
    +	data.Ref()
     	headersWritten := s.updateHeaderSent()
    -	return ht.do(func() {
    +	err := ht.do(func() {
    +		defer data.Free()
     		if !headersWritten {
     			ht.writePendingHeaders(s)
     		}
     		ht.rw.Write(hdr)
    -		ht.rw.Write(data)
    +		for _, b := range data {
    +			_, _ = ht.rw.Write(b.ReadOnlyData())
    +		}
     		ht.rw.(http.Flusher).Flush()
     	})
    +	if err != nil {
    +		data.Free()
    +		return err
    +	}
    +	return nil
     }
     
    -func (ht *serverHandlerTransport) WriteHeader(s *Stream, md metadata.MD) error {
    +func (ht *serverHandlerTransport) writeHeader(s *ServerStream, md metadata.MD) error {
     	if err := s.SetHeader(md); err != nil {
     		return err
     	}
    @@ -370,7 +385,7 @@ func (ht *serverHandlerTransport) WriteHeader(s *Stream, md metadata.MD) error {
     	return err
     }
     
    -func (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream func(*Stream)) {
    +func (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream func(*ServerStream)) {
     	// With this transport type there will be exactly 1 stream: this HTTP request.
     	var cancel context.CancelFunc
     	if ht.timeoutSet {
    @@ -393,20 +408,22 @@ func (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream
     
     	ctx = metadata.NewIncomingContext(ctx, ht.headerMD)
     	req := ht.req
    -	s := &Stream{
    -		id:               0, // irrelevant
    -		ctx:              ctx,
    -		requestRead:      func(int) {},
    +	s := &ServerStream{
    +		Stream: &Stream{
    +			id:             0, // irrelevant
    +			ctx:            ctx,
    +			requestRead:    func(int) {},
    +			buf:            newRecvBuffer(),
    +			method:         req.URL.Path,
    +			recvCompress:   req.Header.Get("grpc-encoding"),
    +			contentSubtype: ht.contentSubtype,
    +		},
     		cancel:           cancel,
    -		buf:              newRecvBuffer(),
     		st:               ht,
    -		method:           req.URL.Path,
    -		recvCompress:     req.Header.Get("grpc-encoding"),
    -		contentSubtype:   ht.contentSubtype,
     		headerWireLength: 0, // won't have access to header wire length until golang/go#18997.
     	}
     	s.trReader = &transportReader{
    -		reader:        &recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: s.buf, freeBuffer: func(*bytes.Buffer) {}},
    +		reader:        &recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: s.buf},
     		windowHandler: func(int) {},
     	}
     
    @@ -415,21 +432,19 @@ func (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream
     	go func() {
     		defer close(readerDone)
     
    -		// TODO: minimize garbage, optimize recvBuffer code/ownership
    -		const readSize = 8196
    -		for buf := make([]byte, readSize); ; {
    -			n, err := req.Body.Read(buf)
    +		for {
    +			buf := ht.bufferPool.Get(http2MaxFrameLen)
    +			n, err := req.Body.Read(*buf)
     			if n > 0 {
    -				s.buf.put(recvMsg{buffer: bytes.NewBuffer(buf[:n:n])})
    -				buf = buf[n:]
    +				*buf = (*buf)[:n]
    +				s.buf.put(recvMsg{buffer: mem.NewBuffer(buf, ht.bufferPool)})
    +			} else {
    +				ht.bufferPool.Put(buf)
     			}
     			if err != nil {
     				s.buf.put(recvMsg{err: mapRecvMsgError(err)})
     				return
     			}
    -			if len(buf) == 0 {
    -				buf = make([]byte, readSize)
    -			}
     		}
     	}()
     
    @@ -458,11 +473,9 @@ func (ht *serverHandlerTransport) runStream() {
     	}
     }
     
    -func (ht *serverHandlerTransport) IncrMsgSent() {}
    -
    -func (ht *serverHandlerTransport) IncrMsgRecv() {}
    +func (ht *serverHandlerTransport) incrMsgRecv() {}
     
    -func (ht *serverHandlerTransport) Drain(debugData string) {
    +func (ht *serverHandlerTransport) Drain(string) {
     	panic("Drain() is not implemented")
     }
     
    diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go
    index 3c63c706986d..f323ab7f45a6 100644
    --- a/vendor/google.golang.org/grpc/internal/transport/http2_client.go
    +++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go
    @@ -47,6 +47,7 @@ import (
     	isyscall "google.golang.org/grpc/internal/syscall"
     	"google.golang.org/grpc/internal/transport/networktype"
     	"google.golang.org/grpc/keepalive"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/grpc/metadata"
     	"google.golang.org/grpc/peer"
     	"google.golang.org/grpc/resolver"
    @@ -59,6 +60,8 @@ import (
     // atomically.
     var clientConnectionCounter uint64
     
    +var goAwayLoopyWriterTimeout = 5 * time.Second
    +
     var metadataFromOutgoingContextRaw = internal.FromOutgoingContextRaw.(func(context.Context) (metadata.MD, [][]string, bool))
     
     // http2Client implements the ClientTransport interface with HTTP2.
    @@ -83,9 +86,9 @@ type http2Client struct {
     	writerDone chan struct{} // sync point to enable testing.
     	// goAway is closed to notify the upper layer (i.e., addrConn.transportMonitor)
     	// that the server sent GoAway on this transport.
    -	goAway chan struct{}
    -
    -	framer *framer
    +	goAway        chan struct{}
    +	keepaliveDone chan struct{} // Closed when the keepalive goroutine exits.
    +	framer        *framer
     	// controlBuf delivers all the control related tasks (e.g., window
     	// updates, reset streams, and various settings) to the controller.
     	// Do not access controlBuf with mu held.
    @@ -120,7 +123,7 @@ type http2Client struct {
     	mu            sync.Mutex // guard the following variables
     	nextID        uint32
     	state         transportState
    -	activeStreams map[uint32]*Stream
    +	activeStreams map[uint32]*ClientStream
     	// prevGoAway ID records the Last-Stream-ID in the previous GOAway frame.
     	prevGoAwayID uint32
     	// goAwayReason records the http2.ErrCode and debug data received with the
    @@ -144,7 +147,7 @@ type http2Client struct {
     
     	onClose func(GoAwayReason)
     
    -	bufferPool *bufferPool
    +	bufferPool mem.BufferPool
     
     	connectionID uint64
     	logger       *grpclog.PrefixLogger
    @@ -196,10 +199,10 @@ func isTemporary(err error) bool {
     	return true
     }
     
    -// newHTTP2Client constructs a connected ClientTransport to addr based on HTTP2
    +// NewHTTP2Client constructs a connected ClientTransport to addr based on HTTP2
     // and starts to receive messages on it. Non-nil error returns if construction
     // fails.
    -func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts ConnectOptions, onClose func(GoAwayReason)) (_ *http2Client, err error) {
    +func NewHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts ConnectOptions, onClose func(GoAwayReason)) (_ ClientTransport, err error) {
     	scheme := "http"
     	ctx, cancel := context.WithCancel(ctx)
     	defer func() {
    @@ -229,7 +232,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts
     		}
     	}(conn)
     
    -	// The following defer and goroutine monitor the connectCtx for cancelation
    +	// The following defer and goroutine monitor the connectCtx for cancellation
     	// and deadline.  On context expiration, the connection is hard closed and
     	// this function will naturally fail as a result.  Otherwise, the defer
     	// waits for the goroutine to exit to prevent the context from being
    @@ -332,10 +335,11 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts
     		readerDone:            make(chan struct{}),
     		writerDone:            make(chan struct{}),
     		goAway:                make(chan struct{}),
    +		keepaliveDone:         make(chan struct{}),
     		framer:                newFramer(conn, writeBufSize, readBufSize, opts.SharedWriteBuffer, maxHeaderListSize),
     		fc:                    &trInFlow{limit: uint32(icwz)},
     		scheme:                scheme,
    -		activeStreams:         make(map[uint32]*Stream),
    +		activeStreams:         make(map[uint32]*ClientStream),
     		isSecure:              isSecure,
     		perRPCCreds:           perRPCCreds,
     		kp:                    kp,
    @@ -346,7 +350,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts
     		streamQuota:           defaultMaxStreamsClient,
     		streamsQuotaAvailable: make(chan struct{}, 1),
     		keepaliveEnabled:      keepaliveEnabled,
    -		bufferPool:            newBufferPool(),
    +		bufferPool:            opts.BufferPool,
     		onClose:               onClose,
     	}
     	var czSecurity credentials.ChannelzSecurityValue
    @@ -463,7 +467,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts
     		return nil, err
     	}
     	go func() {
    -		t.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger, t.outgoingGoAwayHandler)
    +		t.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger, t.outgoingGoAwayHandler, t.bufferPool)
     		if err := t.loopy.run(); !isIOError(err) {
     			// Immediately close the connection, as the loopy writer returns
     			// when there are no more active streams and we were draining (the
    @@ -476,17 +480,19 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts
     	return t, nil
     }
     
    -func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *Stream {
    +func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *ClientStream {
     	// TODO(zhaoq): Handle uint32 overflow of Stream.id.
    -	s := &Stream{
    -		ct:             t,
    -		done:           make(chan struct{}),
    -		method:         callHdr.Method,
    -		sendCompress:   callHdr.SendCompress,
    -		buf:            newRecvBuffer(),
    -		headerChan:     make(chan struct{}),
    -		contentSubtype: callHdr.ContentSubtype,
    -		doneFunc:       callHdr.DoneFunc,
    +	s := &ClientStream{
    +		Stream: &Stream{
    +			method:         callHdr.Method,
    +			sendCompress:   callHdr.SendCompress,
    +			buf:            newRecvBuffer(),
    +			contentSubtype: callHdr.ContentSubtype,
    +		},
    +		ct:         t,
    +		done:       make(chan struct{}),
    +		headerChan: make(chan struct{}),
    +		doneFunc:   callHdr.DoneFunc,
     	}
     	s.wq = newWriteQuota(defaultWriteQuota, s.done)
     	s.requestRead = func(n int) {
    @@ -502,9 +508,8 @@ func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *Stream {
     			ctxDone: s.ctx.Done(),
     			recv:    s.buf,
     			closeStream: func(err error) {
    -				t.CloseStream(s, err)
    +				s.Close(err)
     			},
    -			freeBuffer: t.bufferPool.put,
     		},
     		windowHandler: func(n int) {
     			t.updateWindow(s, uint32(n))
    @@ -525,8 +530,9 @@ func (t *http2Client) getPeer() *peer.Peer {
     // to be the last frame loopy writes to the transport.
     func (t *http2Client) outgoingGoAwayHandler(g *goAway) (bool, error) {
     	t.mu.Lock()
    -	defer t.mu.Unlock()
    -	if err := t.framer.fr.WriteGoAway(t.nextID-2, http2.ErrCodeNo, g.debugData); err != nil {
    +	maxStreamID := t.nextID - 2
    +	t.mu.Unlock()
    +	if err := t.framer.fr.WriteGoAway(maxStreamID, http2.ErrCodeNo, g.debugData); err != nil {
     		return false, err
     	}
     	return false, g.closeConn
    @@ -593,12 +599,6 @@ func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr)
     	for k, v := range callAuthData {
     		headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)})
     	}
    -	if b := stats.OutgoingTags(ctx); b != nil {
    -		headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-tags-bin", Value: encodeBinHeader(b)})
    -	}
    -	if b := stats.OutgoingTrace(ctx); b != nil {
    -		headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-trace-bin", Value: encodeBinHeader(b)})
    -	}
     
     	if md, added, ok := metadataFromOutgoingContextRaw(ctx); ok {
     		var k string
    @@ -734,7 +734,7 @@ func (e NewStreamError) Error() string {
     
     // NewStream creates a stream and registers it into the transport as "active"
     // streams.  All non-nil errors returned will be *NewStreamError.
    -func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, error) {
    +func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*ClientStream, error) {
     	ctx = peer.NewContext(ctx, t.getPeer())
     
     	// ServerName field of the resolver returned address takes precedence over
    @@ -759,7 +759,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream,
     			return
     		}
     		// The stream was unprocessed by the server.
    -		atomic.StoreUint32(&s.unprocessed, 1)
    +		s.unprocessed.Store(true)
     		s.write(recvMsg{err: err})
     		close(s.done)
     		// If headerChan isn't closed, then close it.
    @@ -770,7 +770,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream,
     	hdr := &headerFrame{
     		hf:        headerFields,
     		endStream: false,
    -		initStream: func(id uint32) error {
    +		initStream: func(uint32) error {
     			t.mu.Lock()
     			// TODO: handle transport closure in loopy instead and remove this
     			// initStream is never called when transport is draining.
    @@ -904,21 +904,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream,
     	return s, nil
     }
     
    -// CloseStream clears the footprint of a stream when the stream is not needed any more.
    -// This must not be executed in reader's goroutine.
    -func (t *http2Client) CloseStream(s *Stream, err error) {
    -	var (
    -		rst     bool
    -		rstCode http2.ErrCode
    -	)
    -	if err != nil {
    -		rst = true
    -		rstCode = http2.ErrCodeCancel
    -	}
    -	t.closeStream(s, err, rst, rstCode, status.Convert(err), nil, false)
    -}
    -
    -func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2.ErrCode, st *status.Status, mdata map[string][]string, eosReceived bool) {
    +func (t *http2Client) closeStream(s *ClientStream, err error, rst bool, rstCode http2.ErrCode, st *status.Status, mdata map[string][]string, eosReceived bool) {
     	// Set stream status to done.
     	if s.swapState(streamDone) == streamDone {
     		// If it was already done, return.  If multiple closeStream calls
    @@ -983,6 +969,7 @@ func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2.
     // only once on a transport. Once it is called, the transport should not be
     // accessed anymore.
     func (t *http2Client) Close(err error) {
    +	t.conn.SetWriteDeadline(time.Now().Add(time.Second * 10))
     	t.mu.Lock()
     	// Make sure we only close once.
     	if t.state == closing {
    @@ -1005,18 +992,33 @@ func (t *http2Client) Close(err error) {
     		// should unblock it so that the goroutine eventually exits.
     		t.kpDormancyCond.Signal()
     	}
    +	// Append info about previous goaways if there were any, since this may be important
    +	// for understanding the root cause for this connection to be closed.
    +	goAwayDebugMessage := t.goAwayDebugMessage
     	t.mu.Unlock()
    +
     	// Per HTTP/2 spec, a GOAWAY frame must be sent before closing the
    -	// connection. See https://httpwg.org/specs/rfc7540.html#GOAWAY.
    +	// connection. See https://httpwg.org/specs/rfc7540.html#GOAWAY. It
    +	// also waits for loopyWriter to be closed with a timer to avoid the
    +	// long blocking in case the connection is blackholed, i.e. TCP is
    +	// just stuck.
     	t.controlBuf.put(&goAway{code: http2.ErrCodeNo, debugData: []byte("client transport shutdown"), closeConn: err})
    -	<-t.writerDone
    +	timer := time.NewTimer(goAwayLoopyWriterTimeout)
    +	defer timer.Stop()
    +	select {
    +	case <-t.writerDone: // success
    +	case <-timer.C:
    +		t.logger.Infof("Failed to write a GOAWAY frame as part of connection close after %s. Giving up and closing the transport.", goAwayLoopyWriterTimeout)
    +	}
     	t.cancel()
     	t.conn.Close()
    +	// Waits for the reader and keepalive goroutines to exit before returning to
    +	// ensure all resources are cleaned up before Close can return.
    +	<-t.readerDone
    +	if t.keepaliveEnabled {
    +		<-t.keepaliveDone
    +	}
     	channelz.RemoveEntry(t.channelz.ID)
    -	// Append info about previous goaways if there were any, since this may be important
    -	// for understanding the root cause for this connection to be closed.
    -	_, goAwayDebugMessage := t.GetGoAwayReason()
    -
     	var st *status.Status
     	if len(goAwayDebugMessage) > 0 {
     		st = status.Newf(codes.Unavailable, "closing transport due to: %v, received prior goaway: %v", err, goAwayDebugMessage)
    @@ -1065,30 +1067,40 @@ func (t *http2Client) GracefulClose() {
     
     // Write formats the data into HTTP2 data frame(s) and sends it out. The caller
     // should proceed only if Write returns nil.
    -func (t *http2Client) Write(s *Stream, hdr []byte, data []byte, opts *Options) error {
    +func (t *http2Client) write(s *ClientStream, hdr []byte, data mem.BufferSlice, opts *WriteOptions) error {
    +	reader := data.Reader()
    +
     	if opts.Last {
     		// If it's the last message, update stream state.
     		if !s.compareAndSwapState(streamActive, streamWriteDone) {
    +			_ = reader.Close()
     			return errStreamDone
     		}
     	} else if s.getState() != streamActive {
    +		_ = reader.Close()
     		return errStreamDone
     	}
     	df := &dataFrame{
     		streamID:  s.id,
     		endStream: opts.Last,
     		h:         hdr,
    -		d:         data,
    +		reader:    reader,
     	}
    -	if hdr != nil || data != nil { // If it's not an empty data frame, check quota.
    -		if err := s.wq.get(int32(len(hdr) + len(data))); err != nil {
    +	if hdr != nil || df.reader.Remaining() != 0 { // If it's not an empty data frame, check quota.
    +		if err := s.wq.get(int32(len(hdr) + df.reader.Remaining())); err != nil {
    +			_ = reader.Close()
     			return err
     		}
     	}
    -	return t.controlBuf.put(df)
    +	if err := t.controlBuf.put(df); err != nil {
    +		_ = reader.Close()
    +		return err
    +	}
    +	t.incrMsgSent()
    +	return nil
     }
     
    -func (t *http2Client) getStream(f http2.Frame) *Stream {
    +func (t *http2Client) getStream(f http2.Frame) *ClientStream {
     	t.mu.Lock()
     	s := t.activeStreams[f.Header().StreamID]
     	t.mu.Unlock()
    @@ -1098,7 +1110,7 @@ func (t *http2Client) getStream(f http2.Frame) *Stream {
     // adjustWindow sends out extra window update over the initial window size
     // of stream if the application is requesting data larger in size than
     // the window.
    -func (t *http2Client) adjustWindow(s *Stream, n uint32) {
    +func (t *http2Client) adjustWindow(s *ClientStream, n uint32) {
     	if w := s.fc.maybeAdjust(n); w > 0 {
     		t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w})
     	}
    @@ -1107,7 +1119,7 @@ func (t *http2Client) adjustWindow(s *Stream, n uint32) {
     // updateWindow adjusts the inbound quota for the stream.
     // Window updates will be sent out when the cumulative quota
     // exceeds the corresponding threshold.
    -func (t *http2Client) updateWindow(s *Stream, n uint32) {
    +func (t *http2Client) updateWindow(s *ClientStream, n uint32) {
     	if w := s.fc.onRead(n); w > 0 {
     		t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w})
     	}
    @@ -1190,10 +1202,13 @@ func (t *http2Client) handleData(f *http2.DataFrame) {
     		// guarantee f.Data() is consumed before the arrival of next frame.
     		// Can this copy be eliminated?
     		if len(f.Data()) > 0 {
    -			buffer := t.bufferPool.get()
    -			buffer.Reset()
    -			buffer.Write(f.Data())
    -			s.write(recvMsg{buffer: buffer})
    +			pool := t.bufferPool
    +			if pool == nil {
    +				// Note that this is only supposed to be nil in tests. Otherwise, stream is
    +				// always initialized with a BufferPool.
    +				pool = mem.DefaultBufferPool()
    +			}
    +			s.write(recvMsg{buffer: mem.Copy(f.Data(), pool)})
     		}
     	}
     	// The server has closed the stream without sending trailers.  Record that
    @@ -1210,7 +1225,7 @@ func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) {
     	}
     	if f.ErrCode == http2.ErrCodeRefusedStream {
     		// The stream was unprocessed by the server.
    -		atomic.StoreUint32(&s.unprocessed, 1)
    +		s.unprocessed.Store(true)
     	}
     	statusCode, ok := http2ErrConvTab[f.ErrCode]
     	if !ok {
    @@ -1222,7 +1237,7 @@ func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) {
     	if statusCode == codes.Canceled {
     		if d, ok := s.ctx.Deadline(); ok && !d.After(time.Now()) {
     			// Our deadline was already exceeded, and that was likely the cause
    -			// of this cancelation.  Alter the status code accordingly.
    +			// of this cancellation.  Alter the status code accordingly.
     			statusCode = codes.DeadlineExceeded
     		}
     	}
    @@ -1291,11 +1306,11 @@ func (t *http2Client) handlePing(f *http2.PingFrame) {
     	t.controlBuf.put(pingAck)
     }
     
    -func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) {
    +func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) error {
     	t.mu.Lock()
     	if t.state == closing {
     		t.mu.Unlock()
    -		return
    +		return nil
     	}
     	if f.ErrCode == http2.ErrCodeEnhanceYourCalm && string(f.DebugData()) == "too_many_pings" {
     		// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
    @@ -1307,8 +1322,7 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) {
     	id := f.LastStreamID
     	if id > 0 && id%2 == 0 {
     		t.mu.Unlock()
    -		t.Close(connectionErrorf(true, nil, "received goaway with non-zero even-numbered numbered stream id: %v", id))
    -		return
    +		return connectionErrorf(true, nil, "received goaway with non-zero even-numbered stream id: %v", id)
     	}
     	// A client can receive multiple GoAways from the server (see
     	// https://github.com/grpc/grpc-go/issues/1387).  The idea is that the first
    @@ -1325,8 +1339,7 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) {
     		// If there are multiple GoAways the first one should always have an ID greater than the following ones.
     		if id > t.prevGoAwayID {
     			t.mu.Unlock()
    -			t.Close(connectionErrorf(true, nil, "received goaway with stream id: %v, which exceeds stream id of previous goaway: %v", id, t.prevGoAwayID))
    -			return
    +			return connectionErrorf(true, nil, "received goaway with stream id: %v, which exceeds stream id of previous goaway: %v", id, t.prevGoAwayID)
     		}
     	default:
     		t.setGoAwayReason(f)
    @@ -1350,15 +1363,14 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) {
     	t.prevGoAwayID = id
     	if len(t.activeStreams) == 0 {
     		t.mu.Unlock()
    -		t.Close(connectionErrorf(true, nil, "received goaway and there are no active streams"))
    -		return
    +		return connectionErrorf(true, nil, "received goaway and there are no active streams")
     	}
     
    -	streamsToClose := make([]*Stream, 0)
    +	streamsToClose := make([]*ClientStream, 0)
     	for streamID, stream := range t.activeStreams {
     		if streamID > id && streamID <= upperLimit {
     			// The stream was unprocessed by the server.
    -			atomic.StoreUint32(&stream.unprocessed, 1)
    +			stream.unprocessed.Store(true)
     			streamsToClose = append(streamsToClose, stream)
     		}
     	}
    @@ -1368,6 +1380,7 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) {
     	for _, stream := range streamsToClose {
     		t.closeStream(stream, errStreamDrain, false, http2.ErrCodeNo, statusGoAway, nil, false)
     	}
    +	return nil
     }
     
     // setGoAwayReason sets the value of t.goAwayReason based
    @@ -1409,7 +1422,7 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) {
     		return
     	}
     	endStream := frame.StreamEnded()
    -	atomic.StoreUint32(&s.bytesReceived, 1)
    +	s.bytesReceived.Store(true)
     	initialHeader := atomic.LoadUint32(&s.headerChanClosed) == 0
     
     	if !initialHeader && !endStream {
    @@ -1603,7 +1616,13 @@ func (t *http2Client) readServerPreface() error {
     // network connection.  If the server preface is not read successfully, an
     // error is pushed to errCh; otherwise errCh is closed with no error.
     func (t *http2Client) reader(errCh chan<- error) {
    -	defer close(t.readerDone)
    +	var errClose error
    +	defer func() {
    +		close(t.readerDone)
    +		if errClose != nil {
    +			t.Close(errClose)
    +		}
    +	}()
     
     	if err := t.readServerPreface(); err != nil {
     		errCh <- err
    @@ -1642,11 +1661,10 @@ func (t *http2Client) reader(errCh chan<- error) {
     					t.closeStream(s, status.Error(code, msg), true, http2.ErrCodeProtocol, status.New(code, msg), nil, false)
     				}
     				continue
    -			} else {
    -				// Transport error.
    -				t.Close(connectionErrorf(true, err, "error reading from server: %v", err))
    -				return
     			}
    +			// Transport error.
    +			errClose = connectionErrorf(true, err, "error reading from server: %v", err)
    +			return
     		}
     		switch frame := frame.(type) {
     		case *http2.MetaHeadersFrame:
    @@ -1660,7 +1678,7 @@ func (t *http2Client) reader(errCh chan<- error) {
     		case *http2.PingFrame:
     			t.handlePing(frame)
     		case *http2.GoAwayFrame:
    -			t.handleGoAway(frame)
    +			errClose = t.handleGoAway(frame)
     		case *http2.WindowUpdateFrame:
     			t.handleWindowUpdate(frame)
     		default:
    @@ -1671,15 +1689,15 @@ func (t *http2Client) reader(errCh chan<- error) {
     	}
     }
     
    -func minTime(a, b time.Duration) time.Duration {
    -	if a < b {
    -		return a
    -	}
    -	return b
    -}
    -
     // keepalive running in a separate goroutine makes sure the connection is alive by sending pings.
     func (t *http2Client) keepalive() {
    +	var err error
    +	defer func() {
    +		close(t.keepaliveDone)
    +		if err != nil {
    +			t.Close(err)
    +		}
    +	}()
     	p := &ping{data: [8]byte{}}
     	// True iff a ping has been sent, and no data has been received since then.
     	outstandingPing := false
    @@ -1703,7 +1721,7 @@ func (t *http2Client) keepalive() {
     				continue
     			}
     			if outstandingPing && timeoutLeft <= 0 {
    -				t.Close(connectionErrorf(true, nil, "keepalive ping failed to receive ACK within timeout"))
    +				err = connectionErrorf(true, nil, "keepalive ping failed to receive ACK within timeout")
     				return
     			}
     			t.mu.Lock()
    @@ -1745,7 +1763,7 @@ func (t *http2Client) keepalive() {
     			// timeoutLeft. This will ensure that we wait only for kp.Time
     			// before sending out the next ping (for cases where the ping is
     			// acked).
    -			sleepDuration := minTime(t.kp.Time, timeoutLeft)
    +			sleepDuration := min(t.kp.Time, timeoutLeft)
     			timeoutLeft -= sleepDuration
     			timer.Reset(sleepDuration)
     		case <-t.ctx.Done():
    @@ -1774,14 +1792,18 @@ func (t *http2Client) socketMetrics() *channelz.EphemeralSocketMetrics {
     
     func (t *http2Client) RemoteAddr() net.Addr { return t.remoteAddr }
     
    -func (t *http2Client) IncrMsgSent() {
    -	t.channelz.SocketMetrics.MessagesSent.Add(1)
    -	t.channelz.SocketMetrics.LastMessageSentTimestamp.Store(time.Now().UnixNano())
    +func (t *http2Client) incrMsgSent() {
    +	if channelz.IsOn() {
    +		t.channelz.SocketMetrics.MessagesSent.Add(1)
    +		t.channelz.SocketMetrics.LastMessageSentTimestamp.Store(time.Now().UnixNano())
    +	}
     }
     
    -func (t *http2Client) IncrMsgRecv() {
    -	t.channelz.SocketMetrics.MessagesReceived.Add(1)
    -	t.channelz.SocketMetrics.LastMessageReceivedTimestamp.Store(time.Now().UnixNano())
    +func (t *http2Client) incrMsgRecv() {
    +	if channelz.IsOn() {
    +		t.channelz.SocketMetrics.MessagesReceived.Add(1)
    +		t.channelz.SocketMetrics.LastMessageReceivedTimestamp.Store(time.Now().UnixNano())
    +	}
     }
     
     func (t *http2Client) getOutFlowWindow() int64 {
    diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go
    index b7091165b501..0055fddd7ecf 100644
    --- a/vendor/google.golang.org/grpc/internal/transport/http2_server.go
    +++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go
    @@ -25,7 +25,7 @@ import (
     	"fmt"
     	"io"
     	"math"
    -	"math/rand"
    +	rand "math/rand/v2"
     	"net"
     	"net/http"
     	"strconv"
    @@ -39,6 +39,7 @@ import (
     	"google.golang.org/grpc/internal/grpcutil"
     	"google.golang.org/grpc/internal/pretty"
     	"google.golang.org/grpc/internal/syscall"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/protobuf/proto"
     
     	"google.golang.org/grpc/codes"
    @@ -110,7 +111,7 @@ type http2Server struct {
     	// already initialized since draining is already underway.
     	drainEvent    *grpcsync.Event
     	state         transportState
    -	activeStreams map[uint32]*Stream
    +	activeStreams map[uint32]*ServerStream
     	// idle is the time instant when the connection went idle.
     	// This is either the beginning of the connection or when the number of
     	// RPCs go down to 0.
    @@ -119,7 +120,7 @@ type http2Server struct {
     
     	// Fields below are for channelz metric collection.
     	channelz   *channelz.Socket
    -	bufferPool *bufferPool
    +	bufferPool mem.BufferPool
     
     	connectionID uint64
     
    @@ -255,13 +256,13 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport,
     		inTapHandle:       config.InTapHandle,
     		fc:                &trInFlow{limit: uint32(icwz)},
     		state:             reachable,
    -		activeStreams:     make(map[uint32]*Stream),
    +		activeStreams:     make(map[uint32]*ServerStream),
     		stats:             config.StatsHandlers,
     		kp:                kp,
     		idle:              time.Now(),
     		kep:               kep,
     		initialWindowSize: iwz,
    -		bufferPool:        newBufferPool(),
    +		bufferPool:        config.BufferPool,
     	}
     	var czSecurity credentials.ChannelzSecurityValue
     	if au, ok := authInfo.(credentials.ChannelzSecurityInfo); ok {
    @@ -330,7 +331,7 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport,
     	t.handleSettings(sf)
     
     	go func() {
    -		t.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger, t.outgoingGoAwayHandler)
    +		t.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger, t.outgoingGoAwayHandler, t.bufferPool)
     		err := t.loopy.run()
     		close(t.loopyWriterDone)
     		if !isIOError(err) {
    @@ -358,7 +359,7 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport,
     
     // operateHeaders takes action on the decoded headers. Returns an error if fatal
     // error encountered and transport needs to close, otherwise returns nil.
    -func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeadersFrame, handle func(*Stream)) error {
    +func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeadersFrame, handle func(*ServerStream)) error {
     	// Acquire max stream ID lock for entire duration
     	t.maxStreamMu.Lock()
     	defer t.maxStreamMu.Unlock()
    @@ -384,11 +385,13 @@ func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeade
     	t.maxStreamID = streamID
     
     	buf := newRecvBuffer()
    -	s := &Stream{
    -		id:               streamID,
    +	s := &ServerStream{
    +		Stream: &Stream{
    +			id:  streamID,
    +			buf: buf,
    +			fc:  &inFlow{limit: uint32(t.initialWindowSize)},
    +		},
     		st:               t,
    -		buf:              buf,
    -		fc:               &inFlow{limit: uint32(t.initialWindowSize)},
     		headerWireLength: int(frame.Header().Length),
     	}
     	var (
    @@ -536,12 +539,6 @@ func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeade
     	// Attach the received metadata to the context.
     	if len(mdata) > 0 {
     		s.ctx = metadata.NewIncomingContext(s.ctx, mdata)
    -		if statsTags := mdata["grpc-tags-bin"]; len(statsTags) > 0 {
    -			s.ctx = stats.SetIncomingTags(s.ctx, []byte(statsTags[len(statsTags)-1]))
    -		}
    -		if statsTrace := mdata["grpc-trace-bin"]; len(statsTrace) > 0 {
    -			s.ctx = stats.SetIncomingTrace(s.ctx, []byte(statsTrace[len(statsTrace)-1]))
    -		}
     	}
     	t.mu.Lock()
     	if t.state != reachable {
    @@ -613,10 +610,9 @@ func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeade
     	s.wq = newWriteQuota(defaultWriteQuota, s.ctxDone)
     	s.trReader = &transportReader{
     		reader: &recvBufferReader{
    -			ctx:        s.ctx,
    -			ctxDone:    s.ctxDone,
    -			recv:       s.buf,
    -			freeBuffer: t.bufferPool.put,
    +			ctx:     s.ctx,
    +			ctxDone: s.ctxDone,
    +			recv:    s.buf,
     		},
     		windowHandler: func(n int) {
     			t.updateWindow(s, uint32(n))
    @@ -634,7 +630,7 @@ func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeade
     // HandleStreams receives incoming streams using the given handler. This is
     // typically run in a separate goroutine.
     // traceCtx attaches trace to ctx and returns the new context.
    -func (t *http2Server) HandleStreams(ctx context.Context, handle func(*Stream)) {
    +func (t *http2Server) HandleStreams(ctx context.Context, handle func(*ServerStream)) {
     	defer func() {
     		close(t.readerDone)
     		<-t.loopyWriterDone
    @@ -698,7 +694,7 @@ func (t *http2Server) HandleStreams(ctx context.Context, handle func(*Stream)) {
     	}
     }
     
    -func (t *http2Server) getStream(f http2.Frame) (*Stream, bool) {
    +func (t *http2Server) getStream(f http2.Frame) (*ServerStream, bool) {
     	t.mu.Lock()
     	defer t.mu.Unlock()
     	if t.activeStreams == nil {
    @@ -716,7 +712,7 @@ func (t *http2Server) getStream(f http2.Frame) (*Stream, bool) {
     // adjustWindow sends out extra window update over the initial window size
     // of stream if the application is requesting data larger in size than
     // the window.
    -func (t *http2Server) adjustWindow(s *Stream, n uint32) {
    +func (t *http2Server) adjustWindow(s *ServerStream, n uint32) {
     	if w := s.fc.maybeAdjust(n); w > 0 {
     		t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w})
     	}
    @@ -726,7 +722,7 @@ func (t *http2Server) adjustWindow(s *Stream, n uint32) {
     // updateWindow adjusts the inbound quota for the stream and the transport.
     // Window updates will deliver to the controller for sending when
     // the cumulative quota exceeds the corresponding threshold.
    -func (t *http2Server) updateWindow(s *Stream, n uint32) {
    +func (t *http2Server) updateWindow(s *ServerStream, n uint32) {
     	if w := s.fc.onRead(n); w > 0 {
     		t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id,
     			increment: w,
    @@ -813,10 +809,13 @@ func (t *http2Server) handleData(f *http2.DataFrame) {
     		// guarantee f.Data() is consumed before the arrival of next frame.
     		// Can this copy be eliminated?
     		if len(f.Data()) > 0 {
    -			buffer := t.bufferPool.get()
    -			buffer.Reset()
    -			buffer.Write(f.Data())
    -			s.write(recvMsg{buffer: buffer})
    +			pool := t.bufferPool
    +			if pool == nil {
    +				// Note that this is only supposed to be nil in tests. Otherwise, stream is
    +				// always initialized with a BufferPool.
    +				pool = mem.DefaultBufferPool()
    +			}
    +			s.write(recvMsg{buffer: mem.Copy(f.Data(), pool)})
     		}
     	}
     	if f.StreamEnded() {
    @@ -960,7 +959,7 @@ func (t *http2Server) checkForHeaderListSize(it any) bool {
     	return true
     }
     
    -func (t *http2Server) streamContextErr(s *Stream) error {
    +func (t *http2Server) streamContextErr(s *ServerStream) error {
     	select {
     	case <-t.done:
     		return ErrConnClosing
    @@ -970,7 +969,7 @@ func (t *http2Server) streamContextErr(s *Stream) error {
     }
     
     // WriteHeader sends the header metadata md back to the client.
    -func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error {
    +func (t *http2Server) writeHeader(s *ServerStream, md metadata.MD) error {
     	s.hdrMu.Lock()
     	defer s.hdrMu.Unlock()
     	if s.getState() == streamDone {
    @@ -1003,7 +1002,7 @@ func (t *http2Server) setResetPingStrikes() {
     	atomic.StoreUint32(&t.resetPingStrikes, 1)
     }
     
    -func (t *http2Server) writeHeaderLocked(s *Stream) error {
    +func (t *http2Server) writeHeaderLocked(s *ServerStream) error {
     	// TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields
     	// first and create a slice of that exact size.
     	headerFields := make([]hpack.HeaderField, 0, 2) // at least :status, content-type will be there if none else.
    @@ -1043,7 +1042,7 @@ func (t *http2Server) writeHeaderLocked(s *Stream) error {
     // There is no further I/O operations being able to perform on this stream.
     // TODO(zhaoq): Now it indicates the end of entire stream. Revisit if early
     // OK is adopted.
    -func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error {
    +func (t *http2Server) writeStatus(s *ServerStream, st *status.Status) error {
     	s.hdrMu.Lock()
     	defer s.hdrMu.Unlock()
     
    @@ -1089,7 +1088,9 @@ func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error {
     		onWrite:   t.setResetPingStrikes,
     	}
     
    -	success, err := t.controlBuf.execute(t.checkForHeaderListSize, trailingHeader)
    +	success, err := t.controlBuf.executeAndPut(func() bool {
    +		return t.checkForHeaderListSize(trailingHeader)
    +	}, nil)
     	if !success {
     		if err != nil {
     			return err
    @@ -1112,27 +1113,38 @@ func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error {
     
     // Write converts the data into HTTP2 data frame and sends it out. Non-nil error
     // is returns if it fails (e.g., framing error, transport error).
    -func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) error {
    +func (t *http2Server) write(s *ServerStream, hdr []byte, data mem.BufferSlice, _ *WriteOptions) error {
    +	reader := data.Reader()
    +
     	if !s.isHeaderSent() { // Headers haven't been written yet.
    -		if err := t.WriteHeader(s, nil); err != nil {
    +		if err := t.writeHeader(s, nil); err != nil {
    +			_ = reader.Close()
     			return err
     		}
     	} else {
     		// Writing headers checks for this condition.
     		if s.getState() == streamDone {
    +			_ = reader.Close()
     			return t.streamContextErr(s)
     		}
     	}
    +
     	df := &dataFrame{
     		streamID:    s.id,
     		h:           hdr,
    -		d:           data,
    +		reader:      reader,
     		onEachWrite: t.setResetPingStrikes,
     	}
    -	if err := s.wq.get(int32(len(hdr) + len(data))); err != nil {
    +	if err := s.wq.get(int32(len(hdr) + df.reader.Remaining())); err != nil {
    +		_ = reader.Close()
     		return t.streamContextErr(s)
     	}
    -	return t.controlBuf.put(df)
    +	if err := t.controlBuf.put(df); err != nil {
    +		_ = reader.Close()
    +		return err
    +	}
    +	t.incrMsgSent()
    +	return nil
     }
     
     // keepalive running in a separate goroutine does the following:
    @@ -1223,7 +1235,7 @@ func (t *http2Server) keepalive() {
     			// timeoutLeft. This will ensure that we wait only for kp.Time
     			// before sending out the next ping (for cases where the ping is
     			// acked).
    -			sleepDuration := minTime(t.kp.Time, kpTimeoutLeft)
    +			sleepDuration := min(t.kp.Time, kpTimeoutLeft)
     			kpTimeoutLeft -= sleepDuration
     			kpTimer.Reset(sleepDuration)
     		case <-t.done:
    @@ -1261,7 +1273,7 @@ func (t *http2Server) Close(err error) {
     }
     
     // deleteStream deletes the stream s from transport's active streams.
    -func (t *http2Server) deleteStream(s *Stream, eosReceived bool) {
    +func (t *http2Server) deleteStream(s *ServerStream, eosReceived bool) {
     
     	t.mu.Lock()
     	if _, ok := t.activeStreams[s.id]; ok {
    @@ -1282,7 +1294,7 @@ func (t *http2Server) deleteStream(s *Stream, eosReceived bool) {
     }
     
     // finishStream closes the stream and puts the trailing headerFrame into controlbuf.
    -func (t *http2Server) finishStream(s *Stream, rst bool, rstCode http2.ErrCode, hdr *headerFrame, eosReceived bool) {
    +func (t *http2Server) finishStream(s *ServerStream, rst bool, rstCode http2.ErrCode, hdr *headerFrame, eosReceived bool) {
     	// In case stream sending and receiving are invoked in separate
     	// goroutines (e.g., bi-directional streaming), cancel needs to be
     	// called to interrupt the potential blocking on other goroutines.
    @@ -1306,7 +1318,7 @@ func (t *http2Server) finishStream(s *Stream, rst bool, rstCode http2.ErrCode, h
     }
     
     // closeStream clears the footprint of a stream when the stream is not needed any more.
    -func (t *http2Server) closeStream(s *Stream, rst bool, rstCode http2.ErrCode, eosReceived bool) {
    +func (t *http2Server) closeStream(s *ServerStream, rst bool, rstCode http2.ErrCode, eosReceived bool) {
     	// In case stream sending and receiving are invoked in separate
     	// goroutines (e.g., bi-directional streaming), cancel needs to be
     	// called to interrupt the potential blocking on other goroutines.
    @@ -1400,14 +1412,18 @@ func (t *http2Server) socketMetrics() *channelz.EphemeralSocketMetrics {
     	}
     }
     
    -func (t *http2Server) IncrMsgSent() {
    -	t.channelz.SocketMetrics.MessagesSent.Add(1)
    -	t.channelz.SocketMetrics.LastMessageSentTimestamp.Add(1)
    +func (t *http2Server) incrMsgSent() {
    +	if channelz.IsOn() {
    +		t.channelz.SocketMetrics.MessagesSent.Add(1)
    +		t.channelz.SocketMetrics.LastMessageSentTimestamp.Add(1)
    +	}
     }
     
    -func (t *http2Server) IncrMsgRecv() {
    -	t.channelz.SocketMetrics.MessagesReceived.Add(1)
    -	t.channelz.SocketMetrics.LastMessageReceivedTimestamp.Add(1)
    +func (t *http2Server) incrMsgRecv() {
    +	if channelz.IsOn() {
    +		t.channelz.SocketMetrics.MessagesReceived.Add(1)
    +		t.channelz.SocketMetrics.LastMessageReceivedTimestamp.Add(1)
    +	}
     }
     
     func (t *http2Server) getOutFlowWindow() int64 {
    @@ -1440,7 +1456,7 @@ func getJitter(v time.Duration) time.Duration {
     	}
     	// Generate a jitter between +/- 10% of the value.
     	r := int64(v / 10)
    -	j := rand.Int63n(2*r) - r
    +	j := rand.Int64N(2*r) - r
     	return time.Duration(j)
     }
     
    diff --git a/vendor/google.golang.org/grpc/internal/transport/http_util.go b/vendor/google.golang.org/grpc/internal/transport/http_util.go
    index 39cef3bd442e..3613d7b64817 100644
    --- a/vendor/google.golang.org/grpc/internal/transport/http_util.go
    +++ b/vendor/google.golang.org/grpc/internal/transport/http_util.go
    @@ -317,28 +317,32 @@ func newBufWriter(conn net.Conn, batchSize int, pool *sync.Pool) *bufWriter {
     	return w
     }
     
    -func (w *bufWriter) Write(b []byte) (n int, err error) {
    +func (w *bufWriter) Write(b []byte) (int, error) {
     	if w.err != nil {
     		return 0, w.err
     	}
     	if w.batchSize == 0 { // Buffer has been disabled.
    -		n, err = w.conn.Write(b)
    +		n, err := w.conn.Write(b)
     		return n, toIOError(err)
     	}
     	if w.buf == nil {
     		b := w.pool.Get().(*[]byte)
     		w.buf = *b
     	}
    +	written := 0
     	for len(b) > 0 {
    -		nn := copy(w.buf[w.offset:], b)
    -		b = b[nn:]
    -		w.offset += nn
    -		n += nn
    -		if w.offset >= w.batchSize {
    -			err = w.flushKeepBuffer()
    +		copied := copy(w.buf[w.offset:], b)
    +		b = b[copied:]
    +		written += copied
    +		w.offset += copied
    +		if w.offset < w.batchSize {
    +			continue
    +		}
    +		if err := w.flushKeepBuffer(); err != nil {
    +			return written, err
     		}
     	}
    -	return n, err
    +	return written, nil
     }
     
     func (w *bufWriter) Flush() error {
    @@ -389,7 +393,7 @@ type framer struct {
     	fr     *http2.Framer
     }
     
    -var writeBufferPoolMap map[int]*sync.Pool = make(map[int]*sync.Pool)
    +var writeBufferPoolMap = make(map[int]*sync.Pool)
     var writeBufferMutex sync.Mutex
     
     func newFramer(conn net.Conn, writeBufferSize, readBufferSize int, sharedWriteBuffer bool, maxHeaderListSize uint32) *framer {
    diff --git a/vendor/google.golang.org/grpc/internal/transport/proxy.go b/vendor/google.golang.org/grpc/internal/transport/proxy.go
    index 24fa1032574c..54b224436544 100644
    --- a/vendor/google.golang.org/grpc/internal/transport/proxy.go
    +++ b/vendor/google.golang.org/grpc/internal/transport/proxy.go
    @@ -107,8 +107,14 @@ func doHTTPConnectHandshake(ctx context.Context, conn net.Conn, backendAddr stri
     		}
     		return nil, fmt.Errorf("failed to do connect handshake, response: %q", dump)
     	}
    -
    -	return &bufConn{Conn: conn, r: r}, nil
    +	// The buffer could contain extra bytes from the target server, so we can't
    +	// discard it. However, in many cases where the server waits for the client
    +	// to send the first message (e.g. when TLS is being used), the buffer will
    +	// be empty, so we can avoid the overhead of reading through this buffer.
    +	if r.Buffered() != 0 {
    +		return &bufConn{Conn: conn, r: r}, nil
    +	}
    +	return conn, nil
     }
     
     // proxyDial dials, connecting to a proxy first if necessary. Checks if a proxy
    diff --git a/vendor/google.golang.org/grpc/internal/transport/server_stream.go b/vendor/google.golang.org/grpc/internal/transport/server_stream.go
    new file mode 100644
    index 000000000000..a22a90151494
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/internal/transport/server_stream.go
    @@ -0,0 +1,178 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +package transport
    +
    +import (
    +	"context"
    +	"errors"
    +	"strings"
    +	"sync"
    +	"sync/atomic"
    +
    +	"google.golang.org/grpc/mem"
    +	"google.golang.org/grpc/metadata"
    +	"google.golang.org/grpc/status"
    +)
    +
    +// ServerStream implements streaming functionality for a gRPC server.
    +type ServerStream struct {
    +	*Stream // Embed for common stream functionality.
    +
    +	st      internalServerTransport
    +	ctxDone <-chan struct{}    // closed at the end of stream.  Cache of ctx.Done() (for performance)
    +	cancel  context.CancelFunc // invoked at the end of stream to cancel ctx.
    +
    +	// Holds compressor names passed in grpc-accept-encoding metadata from the
    +	// client.
    +	clientAdvertisedCompressors string
    +	headerWireLength            int
    +
    +	// hdrMu protects outgoing header and trailer metadata.
    +	hdrMu      sync.Mutex
    +	header     metadata.MD // the outgoing header metadata.  Updated by WriteHeader.
    +	headerSent atomic.Bool // atomically set when the headers are sent out.
    +}
    +
    +// Read reads an n byte message from the input stream.
    +func (s *ServerStream) Read(n int) (mem.BufferSlice, error) {
    +	b, err := s.Stream.read(n)
    +	if err == nil {
    +		s.st.incrMsgRecv()
    +	}
    +	return b, err
    +}
    +
    +// SendHeader sends the header metadata for the given stream.
    +func (s *ServerStream) SendHeader(md metadata.MD) error {
    +	return s.st.writeHeader(s, md)
    +}
    +
    +// Write writes the hdr and data bytes to the output stream.
    +func (s *ServerStream) Write(hdr []byte, data mem.BufferSlice, opts *WriteOptions) error {
    +	return s.st.write(s, hdr, data, opts)
    +}
    +
    +// WriteStatus sends the status of a stream to the client.  WriteStatus is
    +// the final call made on a stream and always occurs.
    +func (s *ServerStream) WriteStatus(st *status.Status) error {
    +	return s.st.writeStatus(s, st)
    +}
    +
    +// isHeaderSent indicates whether headers have been sent.
    +func (s *ServerStream) isHeaderSent() bool {
    +	return s.headerSent.Load()
    +}
    +
    +// updateHeaderSent updates headerSent and returns true
    +// if it was already set.
    +func (s *ServerStream) updateHeaderSent() bool {
    +	return s.headerSent.Swap(true)
    +}
    +
    +// RecvCompress returns the compression algorithm applied to the inbound
    +// message. It is empty string if there is no compression applied.
    +func (s *ServerStream) RecvCompress() string {
    +	return s.recvCompress
    +}
    +
    +// SendCompress returns the send compressor name.
    +func (s *ServerStream) SendCompress() string {
    +	return s.sendCompress
    +}
    +
    +// ContentSubtype returns the content-subtype for a request. For example, a
    +// content-subtype of "proto" will result in a content-type of
    +// "application/grpc+proto". This will always be lowercase.  See
    +// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for
    +// more details.
    +func (s *ServerStream) ContentSubtype() string {
    +	return s.contentSubtype
    +}
    +
    +// SetSendCompress sets the compression algorithm to the stream.
    +func (s *ServerStream) SetSendCompress(name string) error {
    +	if s.isHeaderSent() || s.getState() == streamDone {
    +		return errors.New("transport: set send compressor called after headers sent or stream done")
    +	}
    +
    +	s.sendCompress = name
    +	return nil
    +}
    +
    +// SetContext sets the context of the stream. This will be deleted once the
    +// stats handler callouts all move to gRPC layer.
    +func (s *ServerStream) SetContext(ctx context.Context) {
    +	s.ctx = ctx
    +}
    +
    +// ClientAdvertisedCompressors returns the compressor names advertised by the
    +// client via grpc-accept-encoding header.
    +func (s *ServerStream) ClientAdvertisedCompressors() []string {
    +	values := strings.Split(s.clientAdvertisedCompressors, ",")
    +	for i, v := range values {
    +		values[i] = strings.TrimSpace(v)
    +	}
    +	return values
    +}
    +
    +// Header returns the header metadata of the stream.  It returns the out header
    +// after t.WriteHeader is called.  It does not block and must not be called
    +// until after WriteHeader.
    +func (s *ServerStream) Header() (metadata.MD, error) {
    +	// Return the header in stream. It will be the out
    +	// header after t.WriteHeader is called.
    +	return s.header.Copy(), nil
    +}
    +
    +// HeaderWireLength returns the size of the headers of the stream as received
    +// from the wire.
    +func (s *ServerStream) HeaderWireLength() int {
    +	return s.headerWireLength
    +}
    +
    +// SetHeader sets the header metadata. This can be called multiple times.
    +// This should not be called in parallel to other data writes.
    +func (s *ServerStream) SetHeader(md metadata.MD) error {
    +	if md.Len() == 0 {
    +		return nil
    +	}
    +	if s.isHeaderSent() || s.getState() == streamDone {
    +		return ErrIllegalHeaderWrite
    +	}
    +	s.hdrMu.Lock()
    +	s.header = metadata.Join(s.header, md)
    +	s.hdrMu.Unlock()
    +	return nil
    +}
    +
    +// SetTrailer sets the trailer metadata which will be sent with the RPC status
    +// by the server. This can be called multiple times.
    +// This should not be called parallel to other data writes.
    +func (s *ServerStream) SetTrailer(md metadata.MD) error {
    +	if md.Len() == 0 {
    +		return nil
    +	}
    +	if s.getState() == streamDone {
    +		return ErrIllegalHeaderWrite
    +	}
    +	s.hdrMu.Lock()
    +	s.trailer = metadata.Join(s.trailer, md)
    +	s.hdrMu.Unlock()
    +	return nil
    +}
    diff --git a/vendor/google.golang.org/grpc/internal/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go
    index 4b39c0ade97c..2859b87755f0 100644
    --- a/vendor/google.golang.org/grpc/internal/transport/transport.go
    +++ b/vendor/google.golang.org/grpc/internal/transport/transport.go
    @@ -22,13 +22,11 @@
     package transport
     
     import (
    -	"bytes"
     	"context"
     	"errors"
     	"fmt"
     	"io"
     	"net"
    -	"strings"
     	"sync"
     	"sync/atomic"
     	"time"
    @@ -37,9 +35,9 @@ import (
     	"google.golang.org/grpc/credentials"
     	"google.golang.org/grpc/internal/channelz"
     	"google.golang.org/grpc/keepalive"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/grpc/metadata"
     	"google.golang.org/grpc/peer"
    -	"google.golang.org/grpc/resolver"
     	"google.golang.org/grpc/stats"
     	"google.golang.org/grpc/status"
     	"google.golang.org/grpc/tap"
    @@ -47,32 +45,10 @@ import (
     
     const logLevel = 2
     
    -type bufferPool struct {
    -	pool sync.Pool
    -}
    -
    -func newBufferPool() *bufferPool {
    -	return &bufferPool{
    -		pool: sync.Pool{
    -			New: func() any {
    -				return new(bytes.Buffer)
    -			},
    -		},
    -	}
    -}
    -
    -func (p *bufferPool) get() *bytes.Buffer {
    -	return p.pool.Get().(*bytes.Buffer)
    -}
    -
    -func (p *bufferPool) put(b *bytes.Buffer) {
    -	p.pool.Put(b)
    -}
    -
     // recvMsg represents the received msg from the transport. All transport
     // protocol specific info has been removed.
     type recvMsg struct {
    -	buffer *bytes.Buffer
    +	buffer mem.Buffer
     	// nil: received some data
     	// io.EOF: stream is completed. data is nil.
     	// other non-nil error: transport failure. data is nil.
    @@ -102,6 +78,9 @@ func newRecvBuffer() *recvBuffer {
     func (b *recvBuffer) put(r recvMsg) {
     	b.mu.Lock()
     	if b.err != nil {
    +		// drop the buffer on the floor. Since b.err is not nil, any subsequent reads
    +		// will always return an error, making this buffer inaccessible.
    +		r.buffer.Free()
     		b.mu.Unlock()
     		// An error had occurred earlier, don't accept more
     		// data or errors.
    @@ -148,45 +127,70 @@ type recvBufferReader struct {
     	ctx         context.Context
     	ctxDone     <-chan struct{} // cache of ctx.Done() (for performance).
     	recv        *recvBuffer
    -	last        *bytes.Buffer // Stores the remaining data in the previous calls.
    +	last        mem.Buffer // Stores the remaining data in the previous calls.
     	err         error
    -	freeBuffer  func(*bytes.Buffer)
     }
     
    -// Read reads the next len(p) bytes from last. If last is drained, it tries to
    -// read additional data from recv. It blocks if there no additional data available
    -// in recv. If Read returns any non-nil error, it will continue to return that error.
    -func (r *recvBufferReader) Read(p []byte) (n int, err error) {
    +func (r *recvBufferReader) ReadMessageHeader(header []byte) (n int, err error) {
     	if r.err != nil {
     		return 0, r.err
     	}
     	if r.last != nil {
    -		// Read remaining data left in last call.
    -		copied, _ := r.last.Read(p)
    -		if r.last.Len() == 0 {
    -			r.freeBuffer(r.last)
    +		n, r.last = mem.ReadUnsafe(header, r.last)
    +		return n, nil
    +	}
    +	if r.closeStream != nil {
    +		n, r.err = r.readMessageHeaderClient(header)
    +	} else {
    +		n, r.err = r.readMessageHeader(header)
    +	}
    +	return n, r.err
    +}
    +
    +// Read reads the next n bytes from last. If last is drained, it tries to read
    +// additional data from recv. It blocks if there no additional data available in
    +// recv. If Read returns any non-nil error, it will continue to return that
    +// error.
    +func (r *recvBufferReader) Read(n int) (buf mem.Buffer, err error) {
    +	if r.err != nil {
    +		return nil, r.err
    +	}
    +	if r.last != nil {
    +		buf = r.last
    +		if r.last.Len() > n {
    +			buf, r.last = mem.SplitUnsafe(buf, n)
    +		} else {
     			r.last = nil
     		}
    -		return copied, nil
    +		return buf, nil
     	}
     	if r.closeStream != nil {
    -		n, r.err = r.readClient(p)
    +		buf, r.err = r.readClient(n)
     	} else {
    -		n, r.err = r.read(p)
    +		buf, r.err = r.read(n)
     	}
    -	return n, r.err
    +	return buf, r.err
     }
     
    -func (r *recvBufferReader) read(p []byte) (n int, err error) {
    +func (r *recvBufferReader) readMessageHeader(header []byte) (n int, err error) {
     	select {
     	case <-r.ctxDone:
     		return 0, ContextErr(r.ctx.Err())
     	case m := <-r.recv.get():
    -		return r.readAdditional(m, p)
    +		return r.readMessageHeaderAdditional(m, header)
     	}
     }
     
    -func (r *recvBufferReader) readClient(p []byte) (n int, err error) {
    +func (r *recvBufferReader) read(n int) (buf mem.Buffer, err error) {
    +	select {
    +	case <-r.ctxDone:
    +		return nil, ContextErr(r.ctx.Err())
    +	case m := <-r.recv.get():
    +		return r.readAdditional(m, n)
    +	}
    +}
    +
    +func (r *recvBufferReader) readMessageHeaderClient(header []byte) (n int, err error) {
     	// If the context is canceled, then closes the stream with nil metadata.
     	// closeStream writes its error parameter to r.recv as a recvMsg.
     	// r.readAdditional acts on that message and returns the necessary error.
    @@ -207,25 +211,67 @@ func (r *recvBufferReader) readClient(p []byte) (n int, err error) {
     		// faster.
     		r.closeStream(ContextErr(r.ctx.Err()))
     		m := <-r.recv.get()
    -		return r.readAdditional(m, p)
    +		return r.readMessageHeaderAdditional(m, header)
     	case m := <-r.recv.get():
    -		return r.readAdditional(m, p)
    +		return r.readMessageHeaderAdditional(m, header)
     	}
     }
     
    -func (r *recvBufferReader) readAdditional(m recvMsg, p []byte) (n int, err error) {
    +func (r *recvBufferReader) readClient(n int) (buf mem.Buffer, err error) {
    +	// If the context is canceled, then closes the stream with nil metadata.
    +	// closeStream writes its error parameter to r.recv as a recvMsg.
    +	// r.readAdditional acts on that message and returns the necessary error.
    +	select {
    +	case <-r.ctxDone:
    +		// Note that this adds the ctx error to the end of recv buffer, and
    +		// reads from the head. This will delay the error until recv buffer is
    +		// empty, thus will delay ctx cancellation in Recv().
    +		//
    +		// It's done this way to fix a race between ctx cancel and trailer. The
    +		// race was, stream.Recv() may return ctx error if ctxDone wins the
    +		// race, but stream.Trailer() may return a non-nil md because the stream
    +		// was not marked as done when trailer is received. This closeStream
    +		// call will mark stream as done, thus fix the race.
    +		//
    +		// TODO: delaying ctx error seems like a unnecessary side effect. What
    +		// we really want is to mark the stream as done, and return ctx error
    +		// faster.
    +		r.closeStream(ContextErr(r.ctx.Err()))
    +		m := <-r.recv.get()
    +		return r.readAdditional(m, n)
    +	case m := <-r.recv.get():
    +		return r.readAdditional(m, n)
    +	}
    +}
    +
    +func (r *recvBufferReader) readMessageHeaderAdditional(m recvMsg, header []byte) (n int, err error) {
     	r.recv.load()
     	if m.err != nil {
    +		if m.buffer != nil {
    +			m.buffer.Free()
    +		}
     		return 0, m.err
     	}
    -	copied, _ := m.buffer.Read(p)
    -	if m.buffer.Len() == 0 {
    -		r.freeBuffer(m.buffer)
    -		r.last = nil
    -	} else {
    -		r.last = m.buffer
    +
    +	n, r.last = mem.ReadUnsafe(header, m.buffer)
    +
    +	return n, nil
    +}
    +
    +func (r *recvBufferReader) readAdditional(m recvMsg, n int) (b mem.Buffer, err error) {
    +	r.recv.load()
    +	if m.err != nil {
    +		if m.buffer != nil {
    +			m.buffer.Free()
    +		}
    +		return nil, m.err
     	}
    -	return copied, nil
    +
    +	if m.buffer.Len() > n {
    +		m.buffer, r.last = mem.SplitUnsafe(m.buffer, n)
    +	}
    +
    +	return m.buffer, nil
     }
     
     type streamState uint32
    @@ -240,73 +286,26 @@ const (
     // Stream represents an RPC in the transport layer.
     type Stream struct {
     	id           uint32
    -	st           ServerTransport    // nil for client side Stream
    -	ct           *http2Client       // nil for server side Stream
    -	ctx          context.Context    // the associated context of the stream
    -	cancel       context.CancelFunc // always nil for client side Stream
    -	done         chan struct{}      // closed at the end of stream to unblock writers. On the client side.
    -	doneFunc     func()             // invoked at the end of stream on client side.
    -	ctxDone      <-chan struct{}    // same as done chan but for server side. Cache of ctx.Done() (for performance)
    -	method       string             // the associated RPC method of the stream
    +	ctx          context.Context // the associated context of the stream
    +	method       string          // the associated RPC method of the stream
     	recvCompress string
     	sendCompress string
     	buf          *recvBuffer
    -	trReader     io.Reader
    +	trReader     *transportReader
     	fc           *inFlow
     	wq           *writeQuota
     
    -	// Holds compressor names passed in grpc-accept-encoding metadata from the
    -	// client. This is empty for the client side stream.
    -	clientAdvertisedCompressors string
     	// Callback to state application's intentions to read data. This
     	// is used to adjust flow control, if needed.
     	requestRead func(int)
     
    -	headerChan       chan struct{} // closed to indicate the end of header metadata.
    -	headerChanClosed uint32        // set when headerChan is closed. Used to avoid closing headerChan multiple times.
    -	// headerValid indicates whether a valid header was received.  Only
    -	// meaningful after headerChan is closed (always call waitOnHeader() before
    -	// reading its value).  Not valid on server side.
    -	headerValid      bool
    -	headerWireLength int // Only set on server side.
    -
    -	// hdrMu protects header and trailer metadata on the server-side.
    -	hdrMu sync.Mutex
    -	// On client side, header keeps the received header metadata.
    -	//
    -	// On server side, header keeps the header set by SetHeader(). The complete
    -	// header will merged into this after t.WriteHeader() is called.
    -	header  metadata.MD
    -	trailer metadata.MD // the key-value map of trailer metadata.
    -
    -	noHeaders bool // set if the client never received headers (set only after the stream is done).
    -
    -	// On the server-side, headerSent is atomically set to 1 when the headers are sent out.
    -	headerSent uint32
    -
     	state streamState
     
    -	// On client-side it is the status error received from the server.
    -	// On server-side it is unused.
    -	status *status.Status
    -
    -	bytesReceived uint32 // indicates whether any bytes have been received on this stream
    -	unprocessed   uint32 // set if the server sends a refused stream or GOAWAY including this stream
    -
     	// contentSubtype is the content-subtype for requests.
     	// this must be lowercase or the behavior is undefined.
     	contentSubtype string
    -}
    -
    -// isHeaderSent is only valid on the server-side.
    -func (s *Stream) isHeaderSent() bool {
    -	return atomic.LoadUint32(&s.headerSent) == 1
    -}
     
    -// updateHeaderSent updates headerSent and returns true
    -// if it was already set. It is valid only on server-side.
    -func (s *Stream) updateHeaderSent() bool {
    -	return atomic.SwapUint32(&s.headerSent, 1) == 1
    +	trailer metadata.MD // the key-value map of trailer metadata.
     }
     
     func (s *Stream) swapState(st streamState) streamState {
    @@ -321,110 +320,12 @@ func (s *Stream) getState() streamState {
     	return streamState(atomic.LoadUint32((*uint32)(&s.state)))
     }
     
    -func (s *Stream) waitOnHeader() {
    -	if s.headerChan == nil {
    -		// On the server headerChan is always nil since a stream originates
    -		// only after having received headers.
    -		return
    -	}
    -	select {
    -	case <-s.ctx.Done():
    -		// Close the stream to prevent headers/trailers from changing after
    -		// this function returns.
    -		s.ct.CloseStream(s, ContextErr(s.ctx.Err()))
    -		// headerChan could possibly not be closed yet if closeStream raced
    -		// with operateHeaders; wait until it is closed explicitly here.
    -		<-s.headerChan
    -	case <-s.headerChan:
    -	}
    -}
    -
    -// RecvCompress returns the compression algorithm applied to the inbound
    -// message. It is empty string if there is no compression applied.
    -func (s *Stream) RecvCompress() string {
    -	s.waitOnHeader()
    -	return s.recvCompress
    -}
    -
    -// SetSendCompress sets the compression algorithm to the stream.
    -func (s *Stream) SetSendCompress(name string) error {
    -	if s.isHeaderSent() || s.getState() == streamDone {
    -		return errors.New("transport: set send compressor called after headers sent or stream done")
    -	}
    -
    -	s.sendCompress = name
    -	return nil
    -}
    -
    -// SendCompress returns the send compressor name.
    -func (s *Stream) SendCompress() string {
    -	return s.sendCompress
    -}
    -
    -// ClientAdvertisedCompressors returns the compressor names advertised by the
    -// client via grpc-accept-encoding header.
    -func (s *Stream) ClientAdvertisedCompressors() []string {
    -	values := strings.Split(s.clientAdvertisedCompressors, ",")
    -	for i, v := range values {
    -		values[i] = strings.TrimSpace(v)
    -	}
    -	return values
    -}
    -
    -// Done returns a channel which is closed when it receives the final status
    -// from the server.
    -func (s *Stream) Done() <-chan struct{} {
    -	return s.done
    -}
    -
    -// Header returns the header metadata of the stream.
    -//
    -// On client side, it acquires the key-value pairs of header metadata once it is
    -// available. It blocks until i) the metadata is ready or ii) there is no header
    -// metadata or iii) the stream is canceled/expired.
    -//
    -// On server side, it returns the out header after t.WriteHeader is called.  It
    -// does not block and must not be called until after WriteHeader.
    -func (s *Stream) Header() (metadata.MD, error) {
    -	if s.headerChan == nil {
    -		// On server side, return the header in stream. It will be the out
    -		// header after t.WriteHeader is called.
    -		return s.header.Copy(), nil
    -	}
    -	s.waitOnHeader()
    -
    -	if !s.headerValid || s.noHeaders {
    -		return nil, s.status.Err()
    -	}
    -
    -	return s.header.Copy(), nil
    -}
    -
    -// TrailersOnly blocks until a header or trailers-only frame is received and
    -// then returns true if the stream was trailers-only.  If the stream ends
    -// before headers are received, returns true, nil.  Client-side only.
    -func (s *Stream) TrailersOnly() bool {
    -	s.waitOnHeader()
    -	return s.noHeaders
    -}
    -
    -// Trailer returns the cached trailer metedata. Note that if it is not called
    -// after the entire stream is done, it could return an empty MD. Client
    -// side only.
    +// Trailer returns the cached trailer metadata. Note that if it is not called
    +// after the entire stream is done, it could return an empty MD.
     // It can be safely read only after stream has ended that is either read
     // or write have returned io.EOF.
     func (s *Stream) Trailer() metadata.MD {
    -	c := s.trailer.Copy()
    -	return c
    -}
    -
    -// ContentSubtype returns the content-subtype for a request. For example, a
    -// content-subtype of "proto" will result in a content-type of
    -// "application/grpc+proto". This will always be lowercase.  See
    -// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for
    -// more details.
    -func (s *Stream) ContentSubtype() string {
    -	return s.contentSubtype
    +	return s.trailer.Copy()
     }
     
     // Context returns the context of the stream.
    @@ -432,114 +333,104 @@ func (s *Stream) Context() context.Context {
     	return s.ctx
     }
     
    -// SetContext sets the context of the stream. This will be deleted once the
    -// stats handler callouts all move to gRPC layer.
    -func (s *Stream) SetContext(ctx context.Context) {
    -	s.ctx = ctx
    -}
    -
     // Method returns the method for the stream.
     func (s *Stream) Method() string {
     	return s.method
     }
     
    -// Status returns the status received from the server.
    -// Status can be read safely only after the stream has ended,
    -// that is, after Done() is closed.
    -func (s *Stream) Status() *status.Status {
    -	return s.status
    -}
    -
    -// HeaderWireLength returns the size of the headers of the stream as received
    -// from the wire. Valid only on the server.
    -func (s *Stream) HeaderWireLength() int {
    -	return s.headerWireLength
    -}
    -
    -// SetHeader sets the header metadata. This can be called multiple times.
    -// Server side only.
    -// This should not be called in parallel to other data writes.
    -func (s *Stream) SetHeader(md metadata.MD) error {
    -	if md.Len() == 0 {
    -		return nil
    -	}
    -	if s.isHeaderSent() || s.getState() == streamDone {
    -		return ErrIllegalHeaderWrite
    -	}
    -	s.hdrMu.Lock()
    -	s.header = metadata.Join(s.header, md)
    -	s.hdrMu.Unlock()
    -	return nil
    -}
    -
    -// SendHeader sends the given header metadata. The given metadata is
    -// combined with any metadata set by previous calls to SetHeader and
    -// then written to the transport stream.
    -func (s *Stream) SendHeader(md metadata.MD) error {
    -	return s.st.WriteHeader(s, md)
    +func (s *Stream) write(m recvMsg) {
    +	s.buf.put(m)
     }
     
    -// SetTrailer sets the trailer metadata which will be sent with the RPC status
    -// by the server. This can be called multiple times. Server side only.
    -// This should not be called parallel to other data writes.
    -func (s *Stream) SetTrailer(md metadata.MD) error {
    -	if md.Len() == 0 {
    -		return nil
    +// ReadMessageHeader reads data into the provided header slice from the stream.
    +// It first checks if there was an error during a previous read operation and
    +// returns it if present. It then requests a read operation for the length of
    +// the header. It continues to read from the stream until the entire header
    +// slice is filled or an error occurs. If an `io.EOF` error is encountered with
    +// partially read data, it is converted to `io.ErrUnexpectedEOF` to indicate an
    +// unexpected end of the stream. The method returns any error encountered during
    +// the read process or nil if the header was successfully read.
    +func (s *Stream) ReadMessageHeader(header []byte) (err error) {
    +	// Don't request a read if there was an error earlier
    +	if er := s.trReader.er; er != nil {
    +		return er
     	}
    -	if s.getState() == streamDone {
    -		return ErrIllegalHeaderWrite
    +	s.requestRead(len(header))
    +	for len(header) != 0 {
    +		n, err := s.trReader.ReadMessageHeader(header)
    +		header = header[n:]
    +		if len(header) == 0 {
    +			err = nil
    +		}
    +		if err != nil {
    +			if n > 0 && err == io.EOF {
    +				err = io.ErrUnexpectedEOF
    +			}
    +			return err
    +		}
     	}
    -	s.hdrMu.Lock()
    -	s.trailer = metadata.Join(s.trailer, md)
    -	s.hdrMu.Unlock()
     	return nil
     }
     
    -func (s *Stream) write(m recvMsg) {
    -	s.buf.put(m)
    -}
    -
    -// Read reads all p bytes from the wire for this stream.
    -func (s *Stream) Read(p []byte) (n int, err error) {
    +// Read reads n bytes from the wire for this stream.
    +func (s *Stream) read(n int) (data mem.BufferSlice, err error) {
     	// Don't request a read if there was an error earlier
    -	if er := s.trReader.(*transportReader).er; er != nil {
    -		return 0, er
    +	if er := s.trReader.er; er != nil {
    +		return nil, er
    +	}
    +	s.requestRead(n)
    +	for n != 0 {
    +		buf, err := s.trReader.Read(n)
    +		var bufLen int
    +		if buf != nil {
    +			bufLen = buf.Len()
    +		}
    +		n -= bufLen
    +		if n == 0 {
    +			err = nil
    +		}
    +		if err != nil {
    +			if bufLen > 0 && err == io.EOF {
    +				err = io.ErrUnexpectedEOF
    +			}
    +			data.Free()
    +			return nil, err
    +		}
    +		data = append(data, buf)
     	}
    -	s.requestRead(len(p))
    -	return io.ReadFull(s.trReader, p)
    +	return data, nil
     }
     
    -// tranportReader reads all the data available for this Stream from the transport and
    +// transportReader reads all the data available for this Stream from the transport and
     // passes them into the decoder, which converts them into a gRPC message stream.
     // The error is io.EOF when the stream is done or another non-nil error if
     // the stream broke.
     type transportReader struct {
    -	reader io.Reader
    +	reader *recvBufferReader
     	// The handler to control the window update procedure for both this
     	// particular stream and the associated transport.
     	windowHandler func(int)
     	er            error
     }
     
    -func (t *transportReader) Read(p []byte) (n int, err error) {
    -	n, err = t.reader.Read(p)
    +func (t *transportReader) ReadMessageHeader(header []byte) (int, error) {
    +	n, err := t.reader.ReadMessageHeader(header)
     	if err != nil {
     		t.er = err
    -		return
    +		return 0, err
     	}
     	t.windowHandler(n)
    -	return
    +	return n, nil
     }
     
    -// BytesReceived indicates whether any bytes have been received on this stream.
    -func (s *Stream) BytesReceived() bool {
    -	return atomic.LoadUint32(&s.bytesReceived) == 1
    -}
    -
    -// Unprocessed indicates whether the server did not process this stream --
    -// i.e. it sent a refused stream or GOAWAY including this stream ID.
    -func (s *Stream) Unprocessed() bool {
    -	return atomic.LoadUint32(&s.unprocessed) == 1
    +func (t *transportReader) Read(n int) (mem.Buffer, error) {
    +	buf, err := t.reader.Read(n)
    +	if err != nil {
    +		t.er = err
    +		return buf, err
    +	}
    +	t.windowHandler(buf.Len())
    +	return buf, nil
     }
     
     // GoString is implemented by Stream so context.String() won't
    @@ -574,6 +465,7 @@ type ServerConfig struct {
     	ChannelzParent        *channelz.Server
     	MaxHeaderListSize     *uint32
     	HeaderTableSize       *uint32
    +	BufferPool            mem.BufferPool
     }
     
     // ConnectOptions covers all relevant options for communicating with the server.
    @@ -612,17 +504,13 @@ type ConnectOptions struct {
     	MaxHeaderListSize *uint32
     	// UseProxy specifies if a proxy should be used.
     	UseProxy bool
    +	// The mem.BufferPool to use when reading/writing to the wire.
    +	BufferPool mem.BufferPool
     }
     
    -// NewClientTransport establishes the transport with the required ConnectOptions
    -// and returns it to the caller.
    -func NewClientTransport(connectCtx, ctx context.Context, addr resolver.Address, opts ConnectOptions, onClose func(GoAwayReason)) (ClientTransport, error) {
    -	return newHTTP2Client(connectCtx, ctx, addr, opts, onClose)
    -}
    -
    -// Options provides additional hints and information for message
    +// WriteOptions provides additional hints and information for message
     // transmission.
    -type Options struct {
    +type WriteOptions struct {
     	// Last indicates whether this write is the last piece for
     	// this stream.
     	Last bool
    @@ -671,18 +559,8 @@ type ClientTransport interface {
     	// It does not block.
     	GracefulClose()
     
    -	// Write sends the data for the given stream. A nil stream indicates
    -	// the write is to be performed on the transport as a whole.
    -	Write(s *Stream, hdr []byte, data []byte, opts *Options) error
    -
     	// NewStream creates a Stream for an RPC.
    -	NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, error)
    -
    -	// CloseStream clears the footprint of a stream when the stream is
    -	// not needed any more. The err indicates the error incurred when
    -	// CloseStream is called. Must be called when a stream is finished
    -	// unless the associated transport is closing.
    -	CloseStream(stream *Stream, err error)
    +	NewStream(ctx context.Context, callHdr *CallHdr) (*ClientStream, error)
     
     	// Error returns a channel that is closed when some I/O error
     	// happens. Typically the caller should have a goroutine to monitor
    @@ -702,12 +580,6 @@ type ClientTransport interface {
     
     	// RemoteAddr returns the remote network address.
     	RemoteAddr() net.Addr
    -
    -	// IncrMsgSent increments the number of message sent through this transport.
    -	IncrMsgSent()
    -
    -	// IncrMsgRecv increments the number of message received through this transport.
    -	IncrMsgRecv()
     }
     
     // ServerTransport is the common interface for all gRPC server-side transport
    @@ -717,19 +589,7 @@ type ClientTransport interface {
     // Write methods for a given Stream will be called serially.
     type ServerTransport interface {
     	// HandleStreams receives incoming streams using the given handler.
    -	HandleStreams(context.Context, func(*Stream))
    -
    -	// WriteHeader sends the header metadata for the given stream.
    -	// WriteHeader may not be called on all streams.
    -	WriteHeader(s *Stream, md metadata.MD) error
    -
    -	// Write sends the data for the given stream.
    -	// Write may not be called on all streams.
    -	Write(s *Stream, hdr []byte, data []byte, opts *Options) error
    -
    -	// WriteStatus sends the status of a stream to the client.  WriteStatus is
    -	// the final call made on a stream and always occurs.
    -	WriteStatus(s *Stream, st *status.Status) error
    +	HandleStreams(context.Context, func(*ServerStream))
     
     	// Close tears down the transport. Once it is called, the transport
     	// should not be accessed any more. All the pending streams and their
    @@ -741,12 +601,14 @@ type ServerTransport interface {
     
     	// Drain notifies the client this ServerTransport stops accepting new RPCs.
     	Drain(debugData string)
    +}
     
    -	// IncrMsgSent increments the number of message sent through this transport.
    -	IncrMsgSent()
    -
    -	// IncrMsgRecv increments the number of message received through this transport.
    -	IncrMsgRecv()
    +type internalServerTransport interface {
    +	ServerTransport
    +	writeHeader(s *ServerStream, md metadata.MD) error
    +	write(s *ServerStream, hdr []byte, data mem.BufferSlice, opts *WriteOptions) error
    +	writeStatus(s *ServerStream, st *status.Status) error
    +	incrMsgRecv()
     }
     
     // connectionErrorf creates an ConnectionError with the specified error description.
    @@ -798,7 +660,7 @@ var (
     	// connection is draining. This could be caused by goaway or balancer
     	// removing the address.
     	errStreamDrain = status.Error(codes.Unavailable, "the connection is draining")
    -	// errStreamDone is returned from write at the client side to indiacte application
    +	// errStreamDone is returned from write at the client side to indicate application
     	// layer of an error.
     	errStreamDone = errors.New("the stream is done")
     	// StatusGoAway indicates that the server sent a GOAWAY that included this
    diff --git a/vendor/google.golang.org/grpc/keepalive/keepalive.go b/vendor/google.golang.org/grpc/keepalive/keepalive.go
    index 34d31b5e7d31..eb42b19fb99a 100644
    --- a/vendor/google.golang.org/grpc/keepalive/keepalive.go
    +++ b/vendor/google.golang.org/grpc/keepalive/keepalive.go
    @@ -34,15 +34,29 @@ type ClientParameters struct {
     	// After a duration of this time if the client doesn't see any activity it
     	// pings the server to see if the transport is still alive.
     	// If set below 10s, a minimum value of 10s will be used instead.
    -	Time time.Duration // The current default value is infinity.
    +	//
    +	// Note that gRPC servers have a default EnforcementPolicy.MinTime of 5
    +	// minutes (which means the client shouldn't ping more frequently than every
    +	// 5 minutes).
    +	//
    +	// Though not ideal, it's not a strong requirement for Time to be less than
    +	// EnforcementPolicy.MinTime.  Time will automatically double if the server
    +	// disconnects due to its enforcement policy.
    +	//
    +	// For more details, see
    +	// https://github.com/grpc/proposal/blob/master/A8-client-side-keepalive.md
    +	Time time.Duration
     	// After having pinged for keepalive check, the client waits for a duration
     	// of Timeout and if no activity is seen even after that the connection is
     	// closed.
    -	Timeout time.Duration // The current default value is 20 seconds.
    +	//
    +	// If keepalive is enabled, and this value is not explicitly set, the default
    +	// is 20 seconds.
    +	Timeout time.Duration
     	// If true, client sends keepalive pings even with no active RPCs. If false,
     	// when there are no active RPCs, Time and Timeout will be ignored and no
     	// keepalive pings will be sent.
    -	PermitWithoutStream bool // false by default.
    +	PermitWithoutStream bool
     }
     
     // ServerParameters is used to set keepalive and max-age parameters on the
    diff --git a/vendor/google.golang.org/grpc/mem/buffer_pool.go b/vendor/google.golang.org/grpc/mem/buffer_pool.go
    new file mode 100644
    index 000000000000..c37c58c0233e
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/mem/buffer_pool.go
    @@ -0,0 +1,194 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +package mem
    +
    +import (
    +	"sort"
    +	"sync"
    +
    +	"google.golang.org/grpc/internal"
    +)
    +
    +// BufferPool is a pool of buffers that can be shared and reused, resulting in
    +// decreased memory allocation.
    +type BufferPool interface {
    +	// Get returns a buffer with specified length from the pool.
    +	Get(length int) *[]byte
    +
    +	// Put returns a buffer to the pool.
    +	Put(*[]byte)
    +}
    +
    +var defaultBufferPoolSizes = []int{
    +	256,
    +	4 << 10,  // 4KB (go page size)
    +	16 << 10, // 16KB (max HTTP/2 frame size used by gRPC)
    +	32 << 10, // 32KB (default buffer size for io.Copy)
    +	1 << 20,  // 1MB
    +}
    +
    +var defaultBufferPool BufferPool
    +
    +func init() {
    +	defaultBufferPool = NewTieredBufferPool(defaultBufferPoolSizes...)
    +
    +	internal.SetDefaultBufferPoolForTesting = func(pool BufferPool) {
    +		defaultBufferPool = pool
    +	}
    +
    +	internal.SetBufferPoolingThresholdForTesting = func(threshold int) {
    +		bufferPoolingThreshold = threshold
    +	}
    +}
    +
    +// DefaultBufferPool returns the current default buffer pool. It is a BufferPool
    +// created with NewBufferPool that uses a set of default sizes optimized for
    +// expected workflows.
    +func DefaultBufferPool() BufferPool {
    +	return defaultBufferPool
    +}
    +
    +// NewTieredBufferPool returns a BufferPool implementation that uses multiple
    +// underlying pools of the given pool sizes.
    +func NewTieredBufferPool(poolSizes ...int) BufferPool {
    +	sort.Ints(poolSizes)
    +	pools := make([]*sizedBufferPool, len(poolSizes))
    +	for i, s := range poolSizes {
    +		pools[i] = newSizedBufferPool(s)
    +	}
    +	return &tieredBufferPool{
    +		sizedPools: pools,
    +	}
    +}
    +
    +// tieredBufferPool implements the BufferPool interface with multiple tiers of
    +// buffer pools for different sizes of buffers.
    +type tieredBufferPool struct {
    +	sizedPools   []*sizedBufferPool
    +	fallbackPool simpleBufferPool
    +}
    +
    +func (p *tieredBufferPool) Get(size int) *[]byte {
    +	return p.getPool(size).Get(size)
    +}
    +
    +func (p *tieredBufferPool) Put(buf *[]byte) {
    +	p.getPool(cap(*buf)).Put(buf)
    +}
    +
    +func (p *tieredBufferPool) getPool(size int) BufferPool {
    +	poolIdx := sort.Search(len(p.sizedPools), func(i int) bool {
    +		return p.sizedPools[i].defaultSize >= size
    +	})
    +
    +	if poolIdx == len(p.sizedPools) {
    +		return &p.fallbackPool
    +	}
    +
    +	return p.sizedPools[poolIdx]
    +}
    +
    +// sizedBufferPool is a BufferPool implementation that is optimized for specific
    +// buffer sizes. For example, HTTP/2 frames within gRPC have a default max size
    +// of 16kb and a sizedBufferPool can be configured to only return buffers with a
    +// capacity of 16kb. Note that however it does not support returning larger
    +// buffers and in fact panics if such a buffer is requested. Because of this,
    +// this BufferPool implementation is not meant to be used on its own and rather
    +// is intended to be embedded in a tieredBufferPool such that Get is only
    +// invoked when the required size is smaller than or equal to defaultSize.
    +type sizedBufferPool struct {
    +	pool        sync.Pool
    +	defaultSize int
    +}
    +
    +func (p *sizedBufferPool) Get(size int) *[]byte {
    +	buf := p.pool.Get().(*[]byte)
    +	b := *buf
    +	clear(b[:cap(b)])
    +	*buf = b[:size]
    +	return buf
    +}
    +
    +func (p *sizedBufferPool) Put(buf *[]byte) {
    +	if cap(*buf) < p.defaultSize {
    +		// Ignore buffers that are too small to fit in the pool. Otherwise, when
    +		// Get is called it will panic as it tries to index outside the bounds
    +		// of the buffer.
    +		return
    +	}
    +	p.pool.Put(buf)
    +}
    +
    +func newSizedBufferPool(size int) *sizedBufferPool {
    +	return &sizedBufferPool{
    +		pool: sync.Pool{
    +			New: func() any {
    +				buf := make([]byte, size)
    +				return &buf
    +			},
    +		},
    +		defaultSize: size,
    +	}
    +}
    +
    +var _ BufferPool = (*simpleBufferPool)(nil)
    +
    +// simpleBufferPool is an implementation of the BufferPool interface that
    +// attempts to pool buffers with a sync.Pool. When Get is invoked, it tries to
    +// acquire a buffer from the pool but if that buffer is too small, it returns it
    +// to the pool and creates a new one.
    +type simpleBufferPool struct {
    +	pool sync.Pool
    +}
    +
    +func (p *simpleBufferPool) Get(size int) *[]byte {
    +	bs, ok := p.pool.Get().(*[]byte)
    +	if ok && cap(*bs) >= size {
    +		*bs = (*bs)[:size]
    +		return bs
    +	}
    +
    +	// A buffer was pulled from the pool, but it is too small. Put it back in
    +	// the pool and create one large enough.
    +	if ok {
    +		p.pool.Put(bs)
    +	}
    +
    +	b := make([]byte, size)
    +	return &b
    +}
    +
    +func (p *simpleBufferPool) Put(buf *[]byte) {
    +	p.pool.Put(buf)
    +}
    +
    +var _ BufferPool = NopBufferPool{}
    +
    +// NopBufferPool is a buffer pool that returns new buffers without pooling.
    +type NopBufferPool struct{}
    +
    +// Get returns a buffer with specified length from the pool.
    +func (NopBufferPool) Get(length int) *[]byte {
    +	b := make([]byte, length)
    +	return &b
    +}
    +
    +// Put returns a buffer to the pool.
    +func (NopBufferPool) Put(*[]byte) {
    +}
    diff --git a/vendor/google.golang.org/grpc/mem/buffer_slice.go b/vendor/google.golang.org/grpc/mem/buffer_slice.go
    new file mode 100644
    index 000000000000..65002e2cc851
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/mem/buffer_slice.go
    @@ -0,0 +1,281 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +package mem
    +
    +import (
    +	"io"
    +)
    +
    +const (
    +	// 32 KiB is what io.Copy uses.
    +	readAllBufSize = 32 * 1024
    +)
    +
    +// BufferSlice offers a means to represent data that spans one or more Buffer
    +// instances. A BufferSlice is meant to be immutable after creation, and methods
    +// like Ref create and return copies of the slice. This is why all methods have
    +// value receivers rather than pointer receivers.
    +//
    +// Note that any of the methods that read the underlying buffers such as Ref,
    +// Len or CopyTo etc., will panic if any underlying buffers have already been
    +// freed. It is recommended to not directly interact with any of the underlying
    +// buffers directly, rather such interactions should be mediated through the
    +// various methods on this type.
    +//
    +// By convention, any APIs that return (mem.BufferSlice, error) should reduce
    +// the burden on the caller by never returning a mem.BufferSlice that needs to
    +// be freed if the error is non-nil, unless explicitly stated.
    +type BufferSlice []Buffer
    +
    +// Len returns the sum of the length of all the Buffers in this slice.
    +//
    +// # Warning
    +//
    +// Invoking the built-in len on a BufferSlice will return the number of buffers
    +// in the slice, and *not* the value returned by this function.
    +func (s BufferSlice) Len() int {
    +	var length int
    +	for _, b := range s {
    +		length += b.Len()
    +	}
    +	return length
    +}
    +
    +// Ref invokes Ref on each buffer in the slice.
    +func (s BufferSlice) Ref() {
    +	for _, b := range s {
    +		b.Ref()
    +	}
    +}
    +
    +// Free invokes Buffer.Free() on each Buffer in the slice.
    +func (s BufferSlice) Free() {
    +	for _, b := range s {
    +		b.Free()
    +	}
    +}
    +
    +// CopyTo copies each of the underlying Buffer's data into the given buffer,
    +// returning the number of bytes copied. Has the same semantics as the copy
    +// builtin in that it will copy as many bytes as it can, stopping when either dst
    +// is full or s runs out of data, returning the minimum of s.Len() and len(dst).
    +func (s BufferSlice) CopyTo(dst []byte) int {
    +	off := 0
    +	for _, b := range s {
    +		off += copy(dst[off:], b.ReadOnlyData())
    +	}
    +	return off
    +}
    +
    +// Materialize concatenates all the underlying Buffer's data into a single
    +// contiguous buffer using CopyTo.
    +func (s BufferSlice) Materialize() []byte {
    +	l := s.Len()
    +	if l == 0 {
    +		return nil
    +	}
    +	out := make([]byte, l)
    +	s.CopyTo(out)
    +	return out
    +}
    +
    +// MaterializeToBuffer functions like Materialize except that it writes the data
    +// to a single Buffer pulled from the given BufferPool.
    +//
    +// As a special case, if the input BufferSlice only actually has one Buffer, this
    +// function simply increases the refcount before returning said Buffer. Freeing this
    +// buffer won't release it until the BufferSlice is itself released.
    +func (s BufferSlice) MaterializeToBuffer(pool BufferPool) Buffer {
    +	if len(s) == 1 {
    +		s[0].Ref()
    +		return s[0]
    +	}
    +	sLen := s.Len()
    +	if sLen == 0 {
    +		return emptyBuffer{}
    +	}
    +	buf := pool.Get(sLen)
    +	s.CopyTo(*buf)
    +	return NewBuffer(buf, pool)
    +}
    +
    +// Reader returns a new Reader for the input slice after taking references to
    +// each underlying buffer.
    +func (s BufferSlice) Reader() Reader {
    +	s.Ref()
    +	return &sliceReader{
    +		data: s,
    +		len:  s.Len(),
    +	}
    +}
    +
    +// Reader exposes a BufferSlice's data as an io.Reader, allowing it to interface
    +// with other parts systems. It also provides an additional convenience method
    +// Remaining(), which returns the number of unread bytes remaining in the slice.
    +// Buffers will be freed as they are read.
    +type Reader interface {
    +	io.Reader
    +	io.ByteReader
    +	// Close frees the underlying BufferSlice and never returns an error. Subsequent
    +	// calls to Read will return (0, io.EOF).
    +	Close() error
    +	// Remaining returns the number of unread bytes remaining in the slice.
    +	Remaining() int
    +}
    +
    +type sliceReader struct {
    +	data BufferSlice
    +	len  int
    +	// The index into data[0].ReadOnlyData().
    +	bufferIdx int
    +}
    +
    +func (r *sliceReader) Remaining() int {
    +	return r.len
    +}
    +
    +func (r *sliceReader) Close() error {
    +	r.data.Free()
    +	r.data = nil
    +	r.len = 0
    +	return nil
    +}
    +
    +func (r *sliceReader) freeFirstBufferIfEmpty() bool {
    +	if len(r.data) == 0 || r.bufferIdx != len(r.data[0].ReadOnlyData()) {
    +		return false
    +	}
    +
    +	r.data[0].Free()
    +	r.data = r.data[1:]
    +	r.bufferIdx = 0
    +	return true
    +}
    +
    +func (r *sliceReader) Read(buf []byte) (n int, _ error) {
    +	if r.len == 0 {
    +		return 0, io.EOF
    +	}
    +
    +	for len(buf) != 0 && r.len != 0 {
    +		// Copy as much as possible from the first Buffer in the slice into the
    +		// given byte slice.
    +		data := r.data[0].ReadOnlyData()
    +		copied := copy(buf, data[r.bufferIdx:])
    +		r.len -= copied       // Reduce len by the number of bytes copied.
    +		r.bufferIdx += copied // Increment the buffer index.
    +		n += copied           // Increment the total number of bytes read.
    +		buf = buf[copied:]    // Shrink the given byte slice.
    +
    +		// If we have copied all the data from the first Buffer, free it and advance to
    +		// the next in the slice.
    +		r.freeFirstBufferIfEmpty()
    +	}
    +
    +	return n, nil
    +}
    +
    +func (r *sliceReader) ReadByte() (byte, error) {
    +	if r.len == 0 {
    +		return 0, io.EOF
    +	}
    +
    +	// There may be any number of empty buffers in the slice, clear them all until a
    +	// non-empty buffer is reached. This is guaranteed to exit since r.len is not 0.
    +	for r.freeFirstBufferIfEmpty() {
    +	}
    +
    +	b := r.data[0].ReadOnlyData()[r.bufferIdx]
    +	r.len--
    +	r.bufferIdx++
    +	// Free the first buffer in the slice if the last byte was read
    +	r.freeFirstBufferIfEmpty()
    +	return b, nil
    +}
    +
    +var _ io.Writer = (*writer)(nil)
    +
    +type writer struct {
    +	buffers *BufferSlice
    +	pool    BufferPool
    +}
    +
    +func (w *writer) Write(p []byte) (n int, err error) {
    +	b := Copy(p, w.pool)
    +	*w.buffers = append(*w.buffers, b)
    +	return b.Len(), nil
    +}
    +
    +// NewWriter wraps the given BufferSlice and BufferPool to implement the
    +// io.Writer interface. Every call to Write copies the contents of the given
    +// buffer into a new Buffer pulled from the given pool and the Buffer is
    +// added to the given BufferSlice.
    +func NewWriter(buffers *BufferSlice, pool BufferPool) io.Writer {
    +	return &writer{buffers: buffers, pool: pool}
    +}
    +
    +// ReadAll reads from r until an error or EOF and returns the data it read.
    +// A successful call returns err == nil, not err == EOF. Because ReadAll is
    +// defined to read from src until EOF, it does not treat an EOF from Read
    +// as an error to be reported.
    +//
    +// Important: A failed call returns a non-nil error and may also return
    +// partially read buffers. It is the responsibility of the caller to free the
    +// BufferSlice returned, or its memory will not be reused.
    +func ReadAll(r io.Reader, pool BufferPool) (BufferSlice, error) {
    +	var result BufferSlice
    +	if wt, ok := r.(io.WriterTo); ok {
    +		// This is more optimal since wt knows the size of chunks it wants to
    +		// write and, hence, we can allocate buffers of an optimal size to fit
    +		// them. E.g. might be a single big chunk, and we wouldn't chop it
    +		// into pieces.
    +		w := NewWriter(&result, pool)
    +		_, err := wt.WriteTo(w)
    +		return result, err
    +	}
    +nextBuffer:
    +	for {
    +		buf := pool.Get(readAllBufSize)
    +		// We asked for 32KiB but may have been given a bigger buffer.
    +		// Use all of it if that's the case.
    +		*buf = (*buf)[:cap(*buf)]
    +		usedCap := 0
    +		for {
    +			n, err := r.Read((*buf)[usedCap:])
    +			usedCap += n
    +			if err != nil {
    +				if usedCap == 0 {
    +					// Nothing in this buf, put it back
    +					pool.Put(buf)
    +				} else {
    +					*buf = (*buf)[:usedCap]
    +					result = append(result, NewBuffer(buf, pool))
    +				}
    +				if err == io.EOF {
    +					err = nil
    +				}
    +				return result, err
    +			}
    +			if len(*buf) == usedCap {
    +				result = append(result, NewBuffer(buf, pool))
    +				continue nextBuffer
    +			}
    +		}
    +	}
    +}
    diff --git a/vendor/google.golang.org/grpc/mem/buffers.go b/vendor/google.golang.org/grpc/mem/buffers.go
    new file mode 100644
    index 000000000000..ecbf0b9a73ea
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/mem/buffers.go
    @@ -0,0 +1,268 @@
    +/*
    + *
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + *
    + */
    +
    +// Package mem provides utilities that facilitate memory reuse in byte slices
    +// that are used as buffers.
    +//
    +// # Experimental
    +//
    +// Notice: All APIs in this package are EXPERIMENTAL and may be changed or
    +// removed in a later release.
    +package mem
    +
    +import (
    +	"fmt"
    +	"sync"
    +	"sync/atomic"
    +)
    +
    +// A Buffer represents a reference counted piece of data (in bytes) that can be
    +// acquired by a call to NewBuffer() or Copy(). A reference to a Buffer may be
    +// released by calling Free(), which invokes the free function given at creation
    +// only after all references are released.
    +//
    +// Note that a Buffer is not safe for concurrent access and instead each
    +// goroutine should use its own reference to the data, which can be acquired via
    +// a call to Ref().
    +//
    +// Attempts to access the underlying data after releasing the reference to the
    +// Buffer will panic.
    +type Buffer interface {
    +	// ReadOnlyData returns the underlying byte slice. Note that it is undefined
    +	// behavior to modify the contents of this slice in any way.
    +	ReadOnlyData() []byte
    +	// Ref increases the reference counter for this Buffer.
    +	Ref()
    +	// Free decrements this Buffer's reference counter and frees the underlying
    +	// byte slice if the counter reaches 0 as a result of this call.
    +	Free()
    +	// Len returns the Buffer's size.
    +	Len() int
    +
    +	split(n int) (left, right Buffer)
    +	read(buf []byte) (int, Buffer)
    +}
    +
    +var (
    +	bufferPoolingThreshold = 1 << 10
    +
    +	bufferObjectPool = sync.Pool{New: func() any { return new(buffer) }}
    +	refObjectPool    = sync.Pool{New: func() any { return new(atomic.Int32) }}
    +)
    +
    +// IsBelowBufferPoolingThreshold returns true if the given size is less than or
    +// equal to the threshold for buffer pooling. This is used to determine whether
    +// to pool buffers or allocate them directly.
    +func IsBelowBufferPoolingThreshold(size int) bool {
    +	return size <= bufferPoolingThreshold
    +}
    +
    +type buffer struct {
    +	origData *[]byte
    +	data     []byte
    +	refs     *atomic.Int32
    +	pool     BufferPool
    +}
    +
    +func newBuffer() *buffer {
    +	return bufferObjectPool.Get().(*buffer)
    +}
    +
    +// NewBuffer creates a new Buffer from the given data, initializing the reference
    +// counter to 1. The data will then be returned to the given pool when all
    +// references to the returned Buffer are released. As a special case to avoid
    +// additional allocations, if the given buffer pool is nil, the returned buffer
    +// will be a "no-op" Buffer where invoking Buffer.Free() does nothing and the
    +// underlying data is never freed.
    +//
    +// Note that the backing array of the given data is not copied.
    +func NewBuffer(data *[]byte, pool BufferPool) Buffer {
    +	// Use the buffer's capacity instead of the length, otherwise buffers may
    +	// not be reused under certain conditions. For example, if a large buffer
    +	// is acquired from the pool, but fewer bytes than the buffering threshold
    +	// are written to it, the buffer will not be returned to the pool.
    +	if pool == nil || IsBelowBufferPoolingThreshold(cap(*data)) {
    +		return (SliceBuffer)(*data)
    +	}
    +	b := newBuffer()
    +	b.origData = data
    +	b.data = *data
    +	b.pool = pool
    +	b.refs = refObjectPool.Get().(*atomic.Int32)
    +	b.refs.Add(1)
    +	return b
    +}
    +
    +// Copy creates a new Buffer from the given data, initializing the reference
    +// counter to 1.
    +//
    +// It acquires a []byte from the given pool and copies over the backing array
    +// of the given data. The []byte acquired from the pool is returned to the
    +// pool when all references to the returned Buffer are released.
    +func Copy(data []byte, pool BufferPool) Buffer {
    +	if IsBelowBufferPoolingThreshold(len(data)) {
    +		buf := make(SliceBuffer, len(data))
    +		copy(buf, data)
    +		return buf
    +	}
    +
    +	buf := pool.Get(len(data))
    +	copy(*buf, data)
    +	return NewBuffer(buf, pool)
    +}
    +
    +func (b *buffer) ReadOnlyData() []byte {
    +	if b.refs == nil {
    +		panic("Cannot read freed buffer")
    +	}
    +	return b.data
    +}
    +
    +func (b *buffer) Ref() {
    +	if b.refs == nil {
    +		panic("Cannot ref freed buffer")
    +	}
    +	b.refs.Add(1)
    +}
    +
    +func (b *buffer) Free() {
    +	if b.refs == nil {
    +		panic("Cannot free freed buffer")
    +	}
    +
    +	refs := b.refs.Add(-1)
    +	switch {
    +	case refs > 0:
    +		return
    +	case refs == 0:
    +		if b.pool != nil {
    +			b.pool.Put(b.origData)
    +		}
    +
    +		refObjectPool.Put(b.refs)
    +		b.origData = nil
    +		b.data = nil
    +		b.refs = nil
    +		b.pool = nil
    +		bufferObjectPool.Put(b)
    +	default:
    +		panic("Cannot free freed buffer")
    +	}
    +}
    +
    +func (b *buffer) Len() int {
    +	return len(b.ReadOnlyData())
    +}
    +
    +func (b *buffer) split(n int) (Buffer, Buffer) {
    +	if b.refs == nil {
    +		panic("Cannot split freed buffer")
    +	}
    +
    +	b.refs.Add(1)
    +	split := newBuffer()
    +	split.origData = b.origData
    +	split.data = b.data[n:]
    +	split.refs = b.refs
    +	split.pool = b.pool
    +
    +	b.data = b.data[:n]
    +
    +	return b, split
    +}
    +
    +func (b *buffer) read(buf []byte) (int, Buffer) {
    +	if b.refs == nil {
    +		panic("Cannot read freed buffer")
    +	}
    +
    +	n := copy(buf, b.data)
    +	if n == len(b.data) {
    +		b.Free()
    +		return n, nil
    +	}
    +
    +	b.data = b.data[n:]
    +	return n, b
    +}
    +
    +func (b *buffer) String() string {
    +	return fmt.Sprintf("mem.Buffer(%p, data: %p, length: %d)", b, b.ReadOnlyData(), len(b.ReadOnlyData()))
    +}
    +
    +// ReadUnsafe reads bytes from the given Buffer into the provided slice.
    +// It does not perform safety checks.
    +func ReadUnsafe(dst []byte, buf Buffer) (int, Buffer) {
    +	return buf.read(dst)
    +}
    +
    +// SplitUnsafe modifies the receiver to point to the first n bytes while it
    +// returns a new reference to the remaining bytes. The returned Buffer
    +// functions just like a normal reference acquired using Ref().
    +func SplitUnsafe(buf Buffer, n int) (left, right Buffer) {
    +	return buf.split(n)
    +}
    +
    +type emptyBuffer struct{}
    +
    +func (e emptyBuffer) ReadOnlyData() []byte {
    +	return nil
    +}
    +
    +func (e emptyBuffer) Ref()  {}
    +func (e emptyBuffer) Free() {}
    +
    +func (e emptyBuffer) Len() int {
    +	return 0
    +}
    +
    +func (e emptyBuffer) split(int) (left, right Buffer) {
    +	return e, e
    +}
    +
    +func (e emptyBuffer) read([]byte) (int, Buffer) {
    +	return 0, e
    +}
    +
    +// SliceBuffer is a Buffer implementation that wraps a byte slice. It provides
    +// methods for reading, splitting, and managing the byte slice.
    +type SliceBuffer []byte
    +
    +// ReadOnlyData returns the byte slice.
    +func (s SliceBuffer) ReadOnlyData() []byte { return s }
    +
    +// Ref is a noop implementation of Ref.
    +func (s SliceBuffer) Ref() {}
    +
    +// Free is a noop implementation of Free.
    +func (s SliceBuffer) Free() {}
    +
    +// Len is a noop implementation of Len.
    +func (s SliceBuffer) Len() int { return len(s) }
    +
    +func (s SliceBuffer) split(n int) (left, right Buffer) {
    +	return s[:n], s[n:]
    +}
    +
    +func (s SliceBuffer) read(buf []byte) (int, Buffer) {
    +	n := copy(buf, s)
    +	if n == len(s) {
    +		return n, nil
    +	}
    +	return n, s[n:]
    +}
    diff --git a/vendor/google.golang.org/grpc/metadata/metadata.go b/vendor/google.golang.org/grpc/metadata/metadata.go
    index 1e9485fd6e26..d2e15253bbfb 100644
    --- a/vendor/google.golang.org/grpc/metadata/metadata.go
    +++ b/vendor/google.golang.org/grpc/metadata/metadata.go
    @@ -213,11 +213,6 @@ func FromIncomingContext(ctx context.Context) (MD, bool) {
     // ValueFromIncomingContext returns the metadata value corresponding to the metadata
     // key from the incoming metadata if it exists. Keys are matched in a case insensitive
     // manner.
    -//
    -// # Experimental
    -//
    -// Notice: This API is EXPERIMENTAL and may be changed or removed in a
    -// later release.
     func ValueFromIncomingContext(ctx context.Context, key string) []string {
     	md, ok := ctx.Value(mdIncomingKey{}).(MD)
     	if !ok {
    @@ -228,7 +223,7 @@ func ValueFromIncomingContext(ctx context.Context, key string) []string {
     		return copyOf(v)
     	}
     	for k, v := range md {
    -		// Case insenitive comparison: MD is a map, and there's no guarantee
    +		// Case insensitive comparison: MD is a map, and there's no guarantee
     		// that the MD attached to the context is created using our helper
     		// functions.
     		if strings.EqualFold(k, key) {
    diff --git a/vendor/google.golang.org/grpc/preloader.go b/vendor/google.golang.org/grpc/preloader.go
    index 73bd63364335..ee0ff969af4d 100644
    --- a/vendor/google.golang.org/grpc/preloader.go
    +++ b/vendor/google.golang.org/grpc/preloader.go
    @@ -20,6 +20,7 @@ package grpc
     
     import (
     	"google.golang.org/grpc/codes"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/grpc/status"
     )
     
    @@ -31,9 +32,10 @@ import (
     // later release.
     type PreparedMsg struct {
     	// Struct for preparing msg before sending them
    -	encodedData []byte
    +	encodedData mem.BufferSlice
     	hdr         []byte
    -	payload     []byte
    +	payload     mem.BufferSlice
    +	pf          payloadFormat
     }
     
     // Encode marshalls and compresses the message using the codec and compressor for the stream.
    @@ -57,11 +59,27 @@ func (p *PreparedMsg) Encode(s Stream, msg any) error {
     	if err != nil {
     		return err
     	}
    -	p.encodedData = data
    -	compData, err := compress(data, rpcInfo.preloaderInfo.cp, rpcInfo.preloaderInfo.comp)
    +
    +	materializedData := data.Materialize()
    +	data.Free()
    +	p.encodedData = mem.BufferSlice{mem.SliceBuffer(materializedData)}
    +
    +	// TODO: it should be possible to grab the bufferPool from the underlying
    +	//  stream implementation with a type cast to its actual type (such as
    +	//  addrConnStream) and accessing the buffer pool directly.
    +	var compData mem.BufferSlice
    +	compData, p.pf, err = compress(p.encodedData, rpcInfo.preloaderInfo.cp, rpcInfo.preloaderInfo.comp, mem.DefaultBufferPool())
     	if err != nil {
     		return err
     	}
    -	p.hdr, p.payload = msgHeader(data, compData)
    +
    +	if p.pf.isCompressed() {
    +		materializedCompData := compData.Materialize()
    +		compData.Free()
    +		compData = mem.BufferSlice{mem.SliceBuffer(materializedCompData)}
    +	}
    +
    +	p.hdr, p.payload = msgHeader(p.encodedData, compData, p.pf)
    +
     	return nil
     }
    diff --git a/vendor/google.golang.org/grpc/regenerate.sh b/vendor/google.golang.org/grpc/regenerate.sh
    deleted file mode 100644
    index 3edca296c224..000000000000
    --- a/vendor/google.golang.org/grpc/regenerate.sh
    +++ /dev/null
    @@ -1,123 +0,0 @@
    -#!/bin/bash
    -# Copyright 2020 gRPC authors.
    -#
    -# Licensed under the Apache License, Version 2.0 (the "License");
    -# you may not use this file except in compliance with the License.
    -# You may obtain a copy of the License at
    -#
    -#      http://www.apache.org/licenses/LICENSE-2.0
    -#
    -# Unless required by applicable law or agreed to in writing, software
    -# distributed under the License is distributed on an "AS IS" BASIS,
    -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -# See the License for the specific language governing permissions and
    -# limitations under the License.
    -
    -set -eu -o pipefail
    -
    -WORKDIR=$(mktemp -d)
    -
    -function finish {
    -  rm -rf "$WORKDIR"
    -}
    -trap finish EXIT
    -
    -export GOBIN=${WORKDIR}/bin
    -export PATH=${GOBIN}:${PATH}
    -mkdir -p ${GOBIN}
    -
    -echo "remove existing generated files"
    -# grpc_testing_not_regenerate/*.pb.go is not re-generated,
    -# see grpc_testing_not_regenerate/README.md for details.
    -rm -f $(find . -name '*.pb.go' | grep -v 'grpc_testing_not_regenerate')
    -
    -echo "go install google.golang.org/protobuf/cmd/protoc-gen-go"
    -(cd test/tools && go install google.golang.org/protobuf/cmd/protoc-gen-go)
    -
    -echo "go install cmd/protoc-gen-go-grpc"
    -(cd cmd/protoc-gen-go-grpc && go install .)
    -
    -echo "git clone https://github.com/grpc/grpc-proto"
    -git clone --quiet https://github.com/grpc/grpc-proto ${WORKDIR}/grpc-proto
    -
    -echo "git clone https://github.com/protocolbuffers/protobuf"
    -git clone --quiet https://github.com/protocolbuffers/protobuf ${WORKDIR}/protobuf
    -
    -# Pull in code.proto as a proto dependency
    -mkdir -p ${WORKDIR}/googleapis/google/rpc
    -echo "curl https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto"
    -curl --silent https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto > ${WORKDIR}/googleapis/google/rpc/code.proto
    -
    -mkdir -p ${WORKDIR}/out
    -
    -# Generates sources without the embed requirement
    -LEGACY_SOURCES=(
    -  ${WORKDIR}/grpc-proto/grpc/binlog/v1/binarylog.proto
    -  ${WORKDIR}/grpc-proto/grpc/channelz/v1/channelz.proto
    -  ${WORKDIR}/grpc-proto/grpc/health/v1/health.proto
    -  ${WORKDIR}/grpc-proto/grpc/lb/v1/load_balancer.proto
    -  profiling/proto/service.proto
    -  ${WORKDIR}/grpc-proto/grpc/reflection/v1alpha/reflection.proto
    -  ${WORKDIR}/grpc-proto/grpc/reflection/v1/reflection.proto
    -)
    -
    -# Generates only the new gRPC Service symbols
    -SOURCES=(
    -  $(git ls-files --exclude-standard --cached --others "*.proto" | grep -v '^profiling/proto/service.proto$')
    -  ${WORKDIR}/grpc-proto/grpc/gcp/altscontext.proto
    -  ${WORKDIR}/grpc-proto/grpc/gcp/handshaker.proto
    -  ${WORKDIR}/grpc-proto/grpc/gcp/transport_security_common.proto
    -  ${WORKDIR}/grpc-proto/grpc/lookup/v1/rls.proto
    -  ${WORKDIR}/grpc-proto/grpc/lookup/v1/rls_config.proto
    -  ${WORKDIR}/grpc-proto/grpc/testing/*.proto
    -  ${WORKDIR}/grpc-proto/grpc/core/*.proto
    -)
    -
    -# These options of the form 'Mfoo.proto=bar' instruct the codegen to use an
    -# import path of 'bar' in the generated code when 'foo.proto' is imported in
    -# one of the sources.
    -#
    -# Note that the protos listed here are all for testing purposes. All protos to
    -# be used externally should have a go_package option (and they don't need to be
    -# listed here).
    -OPTS=Mgrpc/core/stats.proto=google.golang.org/grpc/interop/grpc_testing/core,\
    -Mgrpc/testing/benchmark_service.proto=google.golang.org/grpc/interop/grpc_testing,\
    -Mgrpc/testing/stats.proto=google.golang.org/grpc/interop/grpc_testing,\
    -Mgrpc/testing/report_qps_scenario_service.proto=google.golang.org/grpc/interop/grpc_testing,\
    -Mgrpc/testing/messages.proto=google.golang.org/grpc/interop/grpc_testing,\
    -Mgrpc/testing/worker_service.proto=google.golang.org/grpc/interop/grpc_testing,\
    -Mgrpc/testing/control.proto=google.golang.org/grpc/interop/grpc_testing,\
    -Mgrpc/testing/test.proto=google.golang.org/grpc/interop/grpc_testing,\
    -Mgrpc/testing/payloads.proto=google.golang.org/grpc/interop/grpc_testing,\
    -Mgrpc/testing/empty.proto=google.golang.org/grpc/interop/grpc_testing
    -
    -for src in ${SOURCES[@]}; do
    -  echo "protoc ${src}"
    -  protoc --go_out=${OPTS}:${WORKDIR}/out --go-grpc_out=${OPTS},use_generic_streams_experimental=true:${WORKDIR}/out \
    -    -I"." \
    -    -I${WORKDIR}/grpc-proto \
    -    -I${WORKDIR}/googleapis \
    -    -I${WORKDIR}/protobuf/src \
    -    ${src}
    -done
    -
    -for src in ${LEGACY_SOURCES[@]}; do
    -  echo "protoc ${src}"
    -  protoc --go_out=${OPTS}:${WORKDIR}/out --go-grpc_out=${OPTS},require_unimplemented_servers=false:${WORKDIR}/out \
    -    -I"." \
    -    -I${WORKDIR}/grpc-proto \
    -    -I${WORKDIR}/googleapis \
    -    -I${WORKDIR}/protobuf/src \
    -    ${src}
    -done
    -
    -# The go_package option in grpc/lookup/v1/rls.proto doesn't match the
    -# current location. Move it into the right place.
    -mkdir -p ${WORKDIR}/out/google.golang.org/grpc/internal/proto/grpc_lookup_v1
    -mv ${WORKDIR}/out/google.golang.org/grpc/lookup/grpc_lookup_v1/* ${WORKDIR}/out/google.golang.org/grpc/internal/proto/grpc_lookup_v1
    -
    -# grpc_testing_not_regenerate/*.pb.go are not re-generated,
    -# see grpc_testing_not_regenerate/README.md for details.
    -rm ${WORKDIR}/out/google.golang.org/grpc/reflection/test/grpc_testing_not_regenerate/*.pb.go
    -
    -cp -R ${WORKDIR}/out/google.golang.org/grpc/* .
    diff --git a/vendor/google.golang.org/grpc/resolver/resolver.go b/vendor/google.golang.org/grpc/resolver/resolver.go
    index 202854511b81..8eb1cf3bcfaf 100644
    --- a/vendor/google.golang.org/grpc/resolver/resolver.go
    +++ b/vendor/google.golang.org/grpc/resolver/resolver.go
    @@ -22,6 +22,7 @@ package resolver
     
     import (
     	"context"
    +	"errors"
     	"fmt"
     	"net"
     	"net/url"
    @@ -237,8 +238,8 @@ type ClientConn interface {
     	// UpdateState can be omitted.
     	UpdateState(State) error
     	// ReportError notifies the ClientConn that the Resolver encountered an
    -	// error.  The ClientConn will notify the load balancer and begin calling
    -	// ResolveNow on the Resolver with exponential backoff.
    +	// error. The ClientConn then forwards this error to the load balancing
    +	// policy.
     	ReportError(error)
     	// NewAddress is called by resolver to notify ClientConn a new list
     	// of resolved addresses.
    @@ -330,3 +331,20 @@ type AuthorityOverrider interface {
     	// typically in line, and must keep it unchanged.
     	OverrideAuthority(Target) string
     }
    +
    +// ValidateEndpoints validates endpoints from a petiole policy's perspective.
    +// Petiole policies should call this before calling into their children. See
    +// [gRPC A61](https://github.com/grpc/proposal/blob/master/A61-IPv4-IPv6-dualstack-backends.md)
    +// for details.
    +func ValidateEndpoints(endpoints []Endpoint) error {
    +	if len(endpoints) == 0 {
    +		return errors.New("endpoints list is empty")
    +	}
    +
    +	for _, endpoint := range endpoints {
    +		for range endpoint.Addresses {
    +			return nil
    +		}
    +	}
    +	return errors.New("endpoints list contains no addresses")
    +}
    diff --git a/vendor/google.golang.org/grpc/resolver_wrapper.go b/vendor/google.golang.org/grpc/resolver_wrapper.go
    index c5fb45236faf..23bb3fb25824 100644
    --- a/vendor/google.golang.org/grpc/resolver_wrapper.go
    +++ b/vendor/google.golang.org/grpc/resolver_wrapper.go
    @@ -66,7 +66,7 @@ func newCCResolverWrapper(cc *ClientConn) *ccResolverWrapper {
     // any newly created ccResolverWrapper, except that close may be called instead.
     func (ccr *ccResolverWrapper) start() error {
     	errCh := make(chan error)
    -	ccr.serializer.Schedule(func(ctx context.Context) {
    +	ccr.serializer.TrySchedule(func(ctx context.Context) {
     		if ctx.Err() != nil {
     			return
     		}
    @@ -85,7 +85,7 @@ func (ccr *ccResolverWrapper) start() error {
     }
     
     func (ccr *ccResolverWrapper) resolveNow(o resolver.ResolveNowOptions) {
    -	ccr.serializer.Schedule(func(ctx context.Context) {
    +	ccr.serializer.TrySchedule(func(ctx context.Context) {
     		if ctx.Err() != nil || ccr.resolver == nil {
     			return
     		}
    @@ -102,7 +102,7 @@ func (ccr *ccResolverWrapper) close() {
     	ccr.closed = true
     	ccr.mu.Unlock()
     
    -	ccr.serializer.Schedule(func(context.Context) {
    +	ccr.serializer.TrySchedule(func(context.Context) {
     		if ccr.resolver == nil {
     			return
     		}
    @@ -177,6 +177,9 @@ func (ccr *ccResolverWrapper) ParseServiceConfig(scJSON string) *serviceconfig.P
     // addChannelzTraceEvent adds a channelz trace event containing the new
     // state received from resolver implementations.
     func (ccr *ccResolverWrapper) addChannelzTraceEvent(s resolver.State) {
    +	if !logger.V(0) && !channelz.IsOn() {
    +		return
    +	}
     	var updates []string
     	var oldSC, newSC *ServiceConfig
     	var oldOK, newOK bool
    diff --git a/vendor/google.golang.org/grpc/rpc_util.go b/vendor/google.golang.org/grpc/rpc_util.go
    index fdd49e6e9151..9fac2b08b48b 100644
    --- a/vendor/google.golang.org/grpc/rpc_util.go
    +++ b/vendor/google.golang.org/grpc/rpc_util.go
    @@ -19,7 +19,6 @@
     package grpc
     
     import (
    -	"bytes"
     	"compress/gzip"
     	"context"
     	"encoding/binary"
    @@ -35,6 +34,7 @@ import (
     	"google.golang.org/grpc/encoding"
     	"google.golang.org/grpc/encoding/proto"
     	"google.golang.org/grpc/internal/transport"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/grpc/metadata"
     	"google.golang.org/grpc/peer"
     	"google.golang.org/grpc/stats"
    @@ -220,8 +220,8 @@ type HeaderCallOption struct {
     	HeaderAddr *metadata.MD
     }
     
    -func (o HeaderCallOption) before(c *callInfo) error { return nil }
    -func (o HeaderCallOption) after(c *callInfo, attempt *csAttempt) {
    +func (o HeaderCallOption) before(*callInfo) error { return nil }
    +func (o HeaderCallOption) after(_ *callInfo, attempt *csAttempt) {
     	*o.HeaderAddr, _ = attempt.s.Header()
     }
     
    @@ -242,8 +242,8 @@ type TrailerCallOption struct {
     	TrailerAddr *metadata.MD
     }
     
    -func (o TrailerCallOption) before(c *callInfo) error { return nil }
    -func (o TrailerCallOption) after(c *callInfo, attempt *csAttempt) {
    +func (o TrailerCallOption) before(*callInfo) error { return nil }
    +func (o TrailerCallOption) after(_ *callInfo, attempt *csAttempt) {
     	*o.TrailerAddr = attempt.s.Trailer()
     }
     
    @@ -264,24 +264,20 @@ type PeerCallOption struct {
     	PeerAddr *peer.Peer
     }
     
    -func (o PeerCallOption) before(c *callInfo) error { return nil }
    -func (o PeerCallOption) after(c *callInfo, attempt *csAttempt) {
    +func (o PeerCallOption) before(*callInfo) error { return nil }
    +func (o PeerCallOption) after(_ *callInfo, attempt *csAttempt) {
     	if x, ok := peer.FromContext(attempt.s.Context()); ok {
     		*o.PeerAddr = *x
     	}
     }
     
    -// WaitForReady configures the action to take when an RPC is attempted on broken
    -// connections or unreachable servers. If waitForReady is false and the
    -// connection is in the TRANSIENT_FAILURE state, the RPC will fail
    -// immediately. Otherwise, the RPC client will block the call until a
    -// connection is available (or the call is canceled or times out) and will
    -// retry the call if it fails due to a transient error.  gRPC will not retry if
    -// data was written to the wire unless the server indicates it did not process
    -// the data.  Please refer to
    -// https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md.
    +// WaitForReady configures the RPC's behavior when the client is in
    +// TRANSIENT_FAILURE, which occurs when all addresses fail to connect.  If
    +// waitForReady is false, the RPC will fail immediately.  Otherwise, the client
    +// will wait until a connection becomes available or the RPC's deadline is
    +// reached.
     //
    -// By default, RPCs don't "wait for ready".
    +// By default, RPCs do not "wait for ready".
     func WaitForReady(waitForReady bool) CallOption {
     	return FailFastCallOption{FailFast: !waitForReady}
     }
    @@ -308,7 +304,7 @@ func (o FailFastCallOption) before(c *callInfo) error {
     	c.failFast = o.FailFast
     	return nil
     }
    -func (o FailFastCallOption) after(c *callInfo, attempt *csAttempt) {}
    +func (o FailFastCallOption) after(*callInfo, *csAttempt) {}
     
     // OnFinish returns a CallOption that configures a callback to be called when
     // the call completes. The error passed to the callback is the status of the
    @@ -343,7 +339,7 @@ func (o OnFinishCallOption) before(c *callInfo) error {
     	return nil
     }
     
    -func (o OnFinishCallOption) after(c *callInfo, attempt *csAttempt) {}
    +func (o OnFinishCallOption) after(*callInfo, *csAttempt) {}
     
     // MaxCallRecvMsgSize returns a CallOption which sets the maximum message size
     // in bytes the client can receive. If this is not set, gRPC uses the default
    @@ -367,7 +363,7 @@ func (o MaxRecvMsgSizeCallOption) before(c *callInfo) error {
     	c.maxReceiveMessageSize = &o.MaxRecvMsgSize
     	return nil
     }
    -func (o MaxRecvMsgSizeCallOption) after(c *callInfo, attempt *csAttempt) {}
    +func (o MaxRecvMsgSizeCallOption) after(*callInfo, *csAttempt) {}
     
     // MaxCallSendMsgSize returns a CallOption which sets the maximum message size
     // in bytes the client can send. If this is not set, gRPC uses the default
    @@ -391,7 +387,7 @@ func (o MaxSendMsgSizeCallOption) before(c *callInfo) error {
     	c.maxSendMessageSize = &o.MaxSendMsgSize
     	return nil
     }
    -func (o MaxSendMsgSizeCallOption) after(c *callInfo, attempt *csAttempt) {}
    +func (o MaxSendMsgSizeCallOption) after(*callInfo, *csAttempt) {}
     
     // PerRPCCredentials returns a CallOption that sets credentials.PerRPCCredentials
     // for a call.
    @@ -414,7 +410,7 @@ func (o PerRPCCredsCallOption) before(c *callInfo) error {
     	c.creds = o.Creds
     	return nil
     }
    -func (o PerRPCCredsCallOption) after(c *callInfo, attempt *csAttempt) {}
    +func (o PerRPCCredsCallOption) after(*callInfo, *csAttempt) {}
     
     // UseCompressor returns a CallOption which sets the compressor used when
     // sending the request.  If WithCompressor is also set, UseCompressor has
    @@ -442,7 +438,7 @@ func (o CompressorCallOption) before(c *callInfo) error {
     	c.compressorType = o.CompressorType
     	return nil
     }
    -func (o CompressorCallOption) after(c *callInfo, attempt *csAttempt) {}
    +func (o CompressorCallOption) after(*callInfo, *csAttempt) {}
     
     // CallContentSubtype returns a CallOption that will set the content-subtype
     // for a call. For example, if content-subtype is "json", the Content-Type over
    @@ -479,7 +475,7 @@ func (o ContentSubtypeCallOption) before(c *callInfo) error {
     	c.contentSubtype = o.ContentSubtype
     	return nil
     }
    -func (o ContentSubtypeCallOption) after(c *callInfo, attempt *csAttempt) {}
    +func (o ContentSubtypeCallOption) after(*callInfo, *csAttempt) {}
     
     // ForceCodec returns a CallOption that will set codec to be used for all
     // request and response messages for a call. The result of calling Name() will
    @@ -515,10 +511,50 @@ type ForceCodecCallOption struct {
     }
     
     func (o ForceCodecCallOption) before(c *callInfo) error {
    -	c.codec = o.Codec
    +	c.codec = newCodecV1Bridge(o.Codec)
     	return nil
     }
    -func (o ForceCodecCallOption) after(c *callInfo, attempt *csAttempt) {}
    +func (o ForceCodecCallOption) after(*callInfo, *csAttempt) {}
    +
    +// ForceCodecV2 returns a CallOption that will set codec to be used for all
    +// request and response messages for a call. The result of calling Name() will
    +// be used as the content-subtype after converting to lowercase, unless
    +// CallContentSubtype is also used.
    +//
    +// See Content-Type on
    +// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for
    +// more details. Also see the documentation on RegisterCodec and
    +// CallContentSubtype for more details on the interaction between Codec and
    +// content-subtype.
    +//
    +// This function is provided for advanced users; prefer to use only
    +// CallContentSubtype to select a registered codec instead.
    +//
    +// # Experimental
    +//
    +// Notice: This API is EXPERIMENTAL and may be changed or removed in a
    +// later release.
    +func ForceCodecV2(codec encoding.CodecV2) CallOption {
    +	return ForceCodecV2CallOption{CodecV2: codec}
    +}
    +
    +// ForceCodecV2CallOption is a CallOption that indicates the codec used for
    +// marshaling messages.
    +//
    +// # Experimental
    +//
    +// Notice: This type is EXPERIMENTAL and may be changed or removed in a
    +// later release.
    +type ForceCodecV2CallOption struct {
    +	CodecV2 encoding.CodecV2
    +}
    +
    +func (o ForceCodecV2CallOption) before(c *callInfo) error {
    +	c.codec = o.CodecV2
    +	return nil
    +}
    +
    +func (o ForceCodecV2CallOption) after(*callInfo, *csAttempt) {}
     
     // CallCustomCodec behaves like ForceCodec, but accepts a grpc.Codec instead of
     // an encoding.Codec.
    @@ -540,10 +576,10 @@ type CustomCodecCallOption struct {
     }
     
     func (o CustomCodecCallOption) before(c *callInfo) error {
    -	c.codec = o.Codec
    +	c.codec = newCodecV0Bridge(o.Codec)
     	return nil
     }
    -func (o CustomCodecCallOption) after(c *callInfo, attempt *csAttempt) {}
    +func (o CustomCodecCallOption) after(*callInfo, *csAttempt) {}
     
     // MaxRetryRPCBufferSize returns a CallOption that limits the amount of memory
     // used for buffering this RPC's requests for retry purposes.
    @@ -571,7 +607,7 @@ func (o MaxRetryRPCBufferSizeCallOption) before(c *callInfo) error {
     	c.maxRetryRPCBufferSize = o.MaxRetryRPCBufferSize
     	return nil
     }
    -func (o MaxRetryRPCBufferSizeCallOption) after(c *callInfo, attempt *csAttempt) {}
    +func (o MaxRetryRPCBufferSizeCallOption) after(*callInfo, *csAttempt) {}
     
     // The format of the payload: compressed or not?
     type payloadFormat uint8
    @@ -581,19 +617,28 @@ const (
     	compressionMade payloadFormat = 1 // compressed
     )
     
    +func (pf payloadFormat) isCompressed() bool {
    +	return pf == compressionMade
    +}
    +
    +type streamReader interface {
    +	ReadMessageHeader(header []byte) error
    +	Read(n int) (mem.BufferSlice, error)
    +}
    +
     // parser reads complete gRPC messages from the underlying reader.
     type parser struct {
     	// r is the underlying reader.
     	// See the comment on recvMsg for the permissible
     	// error types.
    -	r io.Reader
    +	r streamReader
     
     	// The header of a gRPC message. Find more detail at
     	// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md
     	header [5]byte
     
    -	// recvBufferPool is the pool of shared receive buffers.
    -	recvBufferPool SharedBufferPool
    +	// bufferPool is the pool of shared receive buffers.
    +	bufferPool mem.BufferPool
     }
     
     // recvMsg reads a complete gRPC message from the stream.
    @@ -608,39 +653,38 @@ type parser struct {
     //   - an error from the status package
     //
     // No other error values or types must be returned, which also means
    -// that the underlying io.Reader must not return an incompatible
    +// that the underlying streamReader must not return an incompatible
     // error.
    -func (p *parser) recvMsg(maxReceiveMessageSize int) (pf payloadFormat, msg []byte, err error) {
    -	if _, err := p.r.Read(p.header[:]); err != nil {
    +func (p *parser) recvMsg(maxReceiveMessageSize int) (payloadFormat, mem.BufferSlice, error) {
    +	err := p.r.ReadMessageHeader(p.header[:])
    +	if err != nil {
     		return 0, nil, err
     	}
     
    -	pf = payloadFormat(p.header[0])
    +	pf := payloadFormat(p.header[0])
     	length := binary.BigEndian.Uint32(p.header[1:])
     
    -	if length == 0 {
    -		return pf, nil, nil
    -	}
     	if int64(length) > int64(maxInt) {
     		return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max length allowed on current machine (%d vs. %d)", length, maxInt)
     	}
     	if int(length) > maxReceiveMessageSize {
     		return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", length, maxReceiveMessageSize)
     	}
    -	msg = p.recvBufferPool.Get(int(length))
    -	if _, err := p.r.Read(msg); err != nil {
    +
    +	data, err := p.r.Read(int(length))
    +	if err != nil {
     		if err == io.EOF {
     			err = io.ErrUnexpectedEOF
     		}
     		return 0, nil, err
     	}
    -	return pf, msg, nil
    +	return pf, data, nil
     }
     
     // encode serializes msg and returns a buffer containing the message, or an
     // error if it is too large to be transmitted by grpc.  If msg is nil, it
     // generates an empty message.
    -func encode(c baseCodec, msg any) ([]byte, error) {
    +func encode(c baseCodec, msg any) (mem.BufferSlice, error) {
     	if msg == nil { // NOTE: typed nils will not be caught by this check
     		return nil, nil
     	}
    @@ -648,7 +692,8 @@ func encode(c baseCodec, msg any) ([]byte, error) {
     	if err != nil {
     		return nil, status.Errorf(codes.Internal, "grpc: error while marshaling: %v", err.Error())
     	}
    -	if uint(len(b)) > math.MaxUint32 {
    +	if uint(b.Len()) > math.MaxUint32 {
    +		b.Free()
     		return nil, status.Errorf(codes.ResourceExhausted, "grpc: message too large (%d bytes)", len(b))
     	}
     	return b, nil
    @@ -659,34 +704,41 @@ func encode(c baseCodec, msg any) ([]byte, error) {
     // indicating no compression was done.
     //
     // TODO(dfawley): eliminate cp parameter by wrapping Compressor in an encoding.Compressor.
    -func compress(in []byte, cp Compressor, compressor encoding.Compressor) ([]byte, error) {
    -	if compressor == nil && cp == nil {
    -		return nil, nil
    -	}
    -	if len(in) == 0 {
    -		return nil, nil
    +func compress(in mem.BufferSlice, cp Compressor, compressor encoding.Compressor, pool mem.BufferPool) (mem.BufferSlice, payloadFormat, error) {
    +	if (compressor == nil && cp == nil) || in.Len() == 0 {
    +		return nil, compressionNone, nil
     	}
    +	var out mem.BufferSlice
    +	w := mem.NewWriter(&out, pool)
     	wrapErr := func(err error) error {
    +		out.Free()
     		return status.Errorf(codes.Internal, "grpc: error while compressing: %v", err.Error())
     	}
    -	cbuf := &bytes.Buffer{}
     	if compressor != nil {
    -		z, err := compressor.Compress(cbuf)
    +		z, err := compressor.Compress(w)
     		if err != nil {
    -			return nil, wrapErr(err)
    +			return nil, 0, wrapErr(err)
     		}
    -		if _, err := z.Write(in); err != nil {
    -			return nil, wrapErr(err)
    +		for _, b := range in {
    +			if _, err := z.Write(b.ReadOnlyData()); err != nil {
    +				return nil, 0, wrapErr(err)
    +			}
     		}
     		if err := z.Close(); err != nil {
    -			return nil, wrapErr(err)
    +			return nil, 0, wrapErr(err)
     		}
     	} else {
    -		if err := cp.Do(cbuf, in); err != nil {
    -			return nil, wrapErr(err)
    +		// This is obviously really inefficient since it fully materializes the data, but
    +		// there is no way around this with the old Compressor API. At least it attempts
    +		// to return the buffer to the provider, in the hopes it can be reused (maybe
    +		// even by a subsequent call to this very function).
    +		buf := in.MaterializeToBuffer(pool)
    +		defer buf.Free()
    +		if err := cp.Do(w, buf.ReadOnlyData()); err != nil {
    +			return nil, 0, wrapErr(err)
     		}
     	}
    -	return cbuf.Bytes(), nil
    +	return out, compressionMade, nil
     }
     
     const (
    @@ -697,33 +749,36 @@ const (
     
     // msgHeader returns a 5-byte header for the message being transmitted and the
     // payload, which is compData if non-nil or data otherwise.
    -func msgHeader(data, compData []byte) (hdr []byte, payload []byte) {
    +func msgHeader(data, compData mem.BufferSlice, pf payloadFormat) (hdr []byte, payload mem.BufferSlice) {
     	hdr = make([]byte, headerLen)
    -	if compData != nil {
    -		hdr[0] = byte(compressionMade)
    -		data = compData
    +	hdr[0] = byte(pf)
    +
    +	var length uint32
    +	if pf.isCompressed() {
    +		length = uint32(compData.Len())
    +		payload = compData
     	} else {
    -		hdr[0] = byte(compressionNone)
    +		length = uint32(data.Len())
    +		payload = data
     	}
     
     	// Write length of payload into buf
    -	binary.BigEndian.PutUint32(hdr[payloadLen:], uint32(len(data)))
    -	return hdr, data
    +	binary.BigEndian.PutUint32(hdr[payloadLen:], length)
    +	return hdr, payload
     }
     
    -func outPayload(client bool, msg any, data, payload []byte, t time.Time) *stats.OutPayload {
    +func outPayload(client bool, msg any, dataLength, payloadLength int, t time.Time) *stats.OutPayload {
     	return &stats.OutPayload{
     		Client:           client,
     		Payload:          msg,
    -		Data:             data,
    -		Length:           len(data),
    -		WireLength:       len(payload) + headerLen,
    -		CompressedLength: len(payload),
    +		Length:           dataLength,
    +		WireLength:       payloadLength + headerLen,
    +		CompressedLength: payloadLength,
     		SentTime:         t,
     	}
     }
     
    -func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool) *status.Status {
    +func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool, isServer bool) *status.Status {
     	switch pf {
     	case compressionNone:
     	case compressionMade:
    @@ -731,7 +786,10 @@ func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool
     			return status.New(codes.Internal, "grpc: compressed flag set with identity or empty encoding")
     		}
     		if !haveCompressor {
    -			return status.Newf(codes.Unimplemented, "grpc: Decompressor is not installed for grpc-encoding %q", recvCompress)
    +			if isServer {
    +				return status.Newf(codes.Unimplemented, "grpc: Decompressor is not installed for grpc-encoding %q", recvCompress)
    +			}
    +			return status.Newf(codes.Internal, "grpc: Decompressor is not installed for grpc-encoding %q", recvCompress)
     		}
     	default:
     		return status.Newf(codes.Internal, "grpc: received unexpected payload format %d", pf)
    @@ -741,104 +799,110 @@ func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool
     
     type payloadInfo struct {
     	compressedLength  int // The compressed length got from wire.
    -	uncompressedBytes []byte
    +	uncompressedBytes mem.BufferSlice
    +}
    +
    +func (p *payloadInfo) free() {
    +	if p != nil && p.uncompressedBytes != nil {
    +		p.uncompressedBytes.Free()
    +	}
     }
     
     // recvAndDecompress reads a message from the stream, decompressing it if necessary.
     //
     // Cancelling the returned cancel function releases the buffer back to the pool. So the caller should cancel as soon as
     // the buffer is no longer needed.
    -func recvAndDecompress(p *parser, s *transport.Stream, dc Decompressor, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor,
    -) (uncompressedBuf []byte, cancel func(), err error) {
    -	pf, compressedBuf, err := p.recvMsg(maxReceiveMessageSize)
    +// TODO: Refactor this function to reduce the number of arguments.
    +// See: https://google.github.io/styleguide/go/best-practices.html#function-argument-lists
    +func recvAndDecompress(p *parser, s recvCompressor, dc Decompressor, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor, isServer bool,
    +) (out mem.BufferSlice, err error) {
    +	pf, compressed, err := p.recvMsg(maxReceiveMessageSize)
     	if err != nil {
    -		return nil, nil, err
    +		return nil, err
     	}
     
    -	if st := checkRecvPayload(pf, s.RecvCompress(), compressor != nil || dc != nil); st != nil {
    -		return nil, nil, st.Err()
    +	compressedLength := compressed.Len()
    +
    +	if st := checkRecvPayload(pf, s.RecvCompress(), compressor != nil || dc != nil, isServer); st != nil {
    +		compressed.Free()
    +		return nil, st.Err()
     	}
     
     	var size int
    -	if pf == compressionMade {
    +	if pf.isCompressed() {
    +		defer compressed.Free()
    +
     		// To match legacy behavior, if the decompressor is set by WithDecompressor or RPCDecompressor,
     		// use this decompressor as the default.
     		if dc != nil {
    -			uncompressedBuf, err = dc.Do(bytes.NewReader(compressedBuf))
    +			var uncompressedBuf []byte
    +			uncompressedBuf, err = dc.Do(compressed.Reader())
    +			if err == nil {
    +				out = mem.BufferSlice{mem.SliceBuffer(uncompressedBuf)}
    +			}
     			size = len(uncompressedBuf)
     		} else {
    -			uncompressedBuf, size, err = decompress(compressor, compressedBuf, maxReceiveMessageSize)
    +			out, size, err = decompress(compressor, compressed, maxReceiveMessageSize, p.bufferPool)
     		}
     		if err != nil {
    -			return nil, nil, status.Errorf(codes.Internal, "grpc: failed to decompress the received message: %v", err)
    +			return nil, status.Errorf(codes.Internal, "grpc: failed to decompress the received message: %v", err)
     		}
     		if size > maxReceiveMessageSize {
    +			out.Free()
     			// TODO: Revisit the error code. Currently keep it consistent with java
     			// implementation.
    -			return nil, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max (%d vs. %d)", size, maxReceiveMessageSize)
    +			return nil, status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max (%d vs. %d)", size, maxReceiveMessageSize)
     		}
     	} else {
    -		uncompressedBuf = compressedBuf
    +		out = compressed
     	}
     
     	if payInfo != nil {
    -		payInfo.compressedLength = len(compressedBuf)
    -		payInfo.uncompressedBytes = uncompressedBuf
    -
    -		cancel = func() {}
    -	} else {
    -		cancel = func() {
    -			p.recvBufferPool.Put(&compressedBuf)
    -		}
    +		payInfo.compressedLength = compressedLength
    +		out.Ref()
    +		payInfo.uncompressedBytes = out
     	}
     
    -	return uncompressedBuf, cancel, nil
    +	return out, nil
     }
     
     // Using compressor, decompress d, returning data and size.
     // Optionally, if data will be over maxReceiveMessageSize, just return the size.
    -func decompress(compressor encoding.Compressor, d []byte, maxReceiveMessageSize int) ([]byte, int, error) {
    -	dcReader, err := compressor.Decompress(bytes.NewReader(d))
    +func decompress(compressor encoding.Compressor, d mem.BufferSlice, maxReceiveMessageSize int, pool mem.BufferPool) (mem.BufferSlice, int, error) {
    +	dcReader, err := compressor.Decompress(d.Reader())
     	if err != nil {
     		return nil, 0, err
     	}
    -	if sizer, ok := compressor.(interface {
    -		DecompressedSize(compressedBytes []byte) int
    -	}); ok {
    -		if size := sizer.DecompressedSize(d); size >= 0 {
    -			if size > maxReceiveMessageSize {
    -				return nil, size, nil
    -			}
    -			// size is used as an estimate to size the buffer, but we
    -			// will read more data if available.
    -			// +MinRead so ReadFrom will not reallocate if size is correct.
    -			//
    -			// TODO: If we ensure that the buffer size is the same as the DecompressedSize,
    -			// we can also utilize the recv buffer pool here.
    -			buf := bytes.NewBuffer(make([]byte, 0, size+bytes.MinRead))
    -			bytesRead, err := buf.ReadFrom(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1))
    -			return buf.Bytes(), int(bytesRead), err
    -		}
    +
    +	out, err := mem.ReadAll(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1), pool)
    +	if err != nil {
    +		out.Free()
    +		return nil, 0, err
     	}
    -	// Read from LimitReader with limit max+1. So if the underlying
    -	// reader is over limit, the result will be bigger than max.
    -	d, err = io.ReadAll(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1))
    -	return d, len(d), err
    +	return out, out.Len(), nil
    +}
    +
    +type recvCompressor interface {
    +	RecvCompress() string
     }
     
     // For the two compressor parameters, both should not be set, but if they are,
     // dc takes precedence over compressor.
     // TODO(dfawley): wrap the old compressor/decompressor using the new API?
    -func recv(p *parser, c baseCodec, s *transport.Stream, dc Decompressor, m any, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor) error {
    -	buf, cancel, err := recvAndDecompress(p, s, dc, maxReceiveMessageSize, payInfo, compressor)
    +func recv(p *parser, c baseCodec, s recvCompressor, dc Decompressor, m any, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor, isServer bool) error {
    +	data, err := recvAndDecompress(p, s, dc, maxReceiveMessageSize, payInfo, compressor, isServer)
     	if err != nil {
     		return err
     	}
    -	defer cancel()
     
    -	if err := c.Unmarshal(buf, m); err != nil {
    +	// If the codec wants its own reference to the data, it can get it. Otherwise, always
    +	// free the buffers.
    +	defer data.Free()
    +
    +	if err := c.Unmarshal(data, m); err != nil {
     		return status.Errorf(codes.Internal, "grpc: failed to unmarshal the received message: %v", err)
     	}
    +
     	return nil
     }
     
    @@ -941,7 +1005,7 @@ func setCallInfoCodec(c *callInfo) error {
     			// encoding.Codec (Name vs. String method name).  We only support
     			// setting content subtype from encoding.Codec to avoid a behavior
     			// change with the deprecated version.
    -			if ec, ok := c.codec.(encoding.Codec); ok {
    +			if ec, ok := c.codec.(encoding.CodecV2); ok {
     				c.contentSubtype = strings.ToLower(ec.Name())
     			}
     		}
    @@ -950,12 +1014,12 @@ func setCallInfoCodec(c *callInfo) error {
     
     	if c.contentSubtype == "" {
     		// No codec specified in CallOptions; use proto by default.
    -		c.codec = encoding.GetCodec(proto.Name)
    +		c.codec = getCodec(proto.Name)
     		return nil
     	}
     
     	// c.contentSubtype is already lowercased in CallContentSubtype
    -	c.codec = encoding.GetCodec(c.contentSubtype)
    +	c.codec = getCodec(c.contentSubtype)
     	if c.codec == nil {
     		return status.Errorf(codes.Internal, "no codec registered for content-subtype %s", c.contentSubtype)
     	}
    diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go
    index 89f8e4792bf1..16065a027ae8 100644
    --- a/vendor/google.golang.org/grpc/server.go
    +++ b/vendor/google.golang.org/grpc/server.go
    @@ -45,6 +45,7 @@ import (
     	"google.golang.org/grpc/internal/grpcutil"
     	"google.golang.org/grpc/internal/transport"
     	"google.golang.org/grpc/keepalive"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/grpc/metadata"
     	"google.golang.org/grpc/peer"
     	"google.golang.org/grpc/stats"
    @@ -80,18 +81,19 @@ func init() {
     	}
     	internal.BinaryLogger = binaryLogger
     	internal.JoinServerOptions = newJoinServerOption
    -	internal.RecvBufferPool = recvBufferPool
    +	internal.BufferPool = bufferPool
     }
     
     var statusOK = status.New(codes.OK, "")
     var logger = grpclog.Component("core")
     
    -type methodHandler func(srv any, ctx context.Context, dec func(any) error, interceptor UnaryServerInterceptor) (any, error)
    +// MethodHandler is a function type that processes a unary RPC method call.
    +type MethodHandler func(srv any, ctx context.Context, dec func(any) error, interceptor UnaryServerInterceptor) (any, error)
     
     // MethodDesc represents an RPC service's method specification.
     type MethodDesc struct {
     	MethodName string
    -	Handler    methodHandler
    +	Handler    MethodHandler
     }
     
     // ServiceDesc represents an RPC service's specification.
    @@ -170,7 +172,7 @@ type serverOptions struct {
     	maxHeaderListSize     *uint32
     	headerTableSize       *uint32
     	numServerWorkers      uint32
    -	recvBufferPool        SharedBufferPool
    +	bufferPool            mem.BufferPool
     	waitForHandlers       bool
     }
     
    @@ -181,7 +183,7 @@ var defaultServerOptions = serverOptions{
     	connectionTimeout:     120 * time.Second,
     	writeBufferSize:       defaultWriteBufSize,
     	readBufferSize:        defaultReadBufSize,
    -	recvBufferPool:        nopBufferPool{},
    +	bufferPool:            mem.DefaultBufferPool(),
     }
     var globalServerOptions []ServerOption
     
    @@ -313,7 +315,7 @@ func KeepaliveEnforcementPolicy(kep keepalive.EnforcementPolicy) ServerOption {
     // Will be supported throughout 1.x.
     func CustomCodec(codec Codec) ServerOption {
     	return newFuncServerOption(func(o *serverOptions) {
    -		o.codec = codec
    +		o.codec = newCodecV0Bridge(codec)
     	})
     }
     
    @@ -342,7 +344,22 @@ func CustomCodec(codec Codec) ServerOption {
     // later release.
     func ForceServerCodec(codec encoding.Codec) ServerOption {
     	return newFuncServerOption(func(o *serverOptions) {
    -		o.codec = codec
    +		o.codec = newCodecV1Bridge(codec)
    +	})
    +}
    +
    +// ForceServerCodecV2 is the equivalent of ForceServerCodec, but for the new
    +// CodecV2 interface.
    +//
    +// Will be supported throughout 1.x.
    +//
    +// # Experimental
    +//
    +// Notice: This API is EXPERIMENTAL and may be changed or removed in a
    +// later release.
    +func ForceServerCodecV2(codecV2 encoding.CodecV2) ServerOption {
    +	return newFuncServerOption(func(o *serverOptions) {
    +		o.codec = codecV2
     	})
     }
     
    @@ -592,26 +609,9 @@ func WaitForHandlers(w bool) ServerOption {
     	})
     }
     
    -// RecvBufferPool returns a ServerOption that configures the server
    -// to use the provided shared buffer pool for parsing incoming messages. Depending
    -// on the application's workload, this could result in reduced memory allocation.
    -//
    -// If you are unsure about how to implement a memory pool but want to utilize one,
    -// begin with grpc.NewSharedBufferPool.
    -//
    -// Note: The shared buffer pool feature will not be active if any of the following
    -// options are used: StatsHandler, EnableTracing, or binary logging. In such
    -// cases, the shared buffer pool will be ignored.
    -//
    -// Deprecated: use experimental.WithRecvBufferPool instead.  Will be deleted in
    -// v1.60.0 or later.
    -func RecvBufferPool(bufferPool SharedBufferPool) ServerOption {
    -	return recvBufferPool(bufferPool)
    -}
    -
    -func recvBufferPool(bufferPool SharedBufferPool) ServerOption {
    +func bufferPool(bufferPool mem.BufferPool) ServerOption {
     	return newFuncServerOption(func(o *serverOptions) {
    -		o.recvBufferPool = bufferPool
    +		o.bufferPool = bufferPool
     	})
     }
     
    @@ -622,8 +622,8 @@ func recvBufferPool(bufferPool SharedBufferPool) ServerOption {
     // workload (assuming a QPS of a few thousand requests/sec).
     const serverWorkerResetThreshold = 1 << 16
     
    -// serverWorkers blocks on a *transport.Stream channel forever and waits for
    -// data to be fed by serveStreams. This allows multiple requests to be
    +// serverWorker blocks on a *transport.ServerStream channel forever and waits
    +// for data to be fed by serveStreams. This allows multiple requests to be
     // processed by the same goroutine, removing the need for expensive stack
     // re-allocations (see the runtime.morestack problem [1]).
     //
    @@ -980,6 +980,7 @@ func (s *Server) newHTTP2Transport(c net.Conn) transport.ServerTransport {
     		ChannelzParent:        s.channelz,
     		MaxHeaderListSize:     s.opts.maxHeaderListSize,
     		HeaderTableSize:       s.opts.headerTableSize,
    +		BufferPool:            s.opts.bufferPool,
     	}
     	st, err := transport.NewServerTransport(c, config)
     	if err != nil {
    @@ -1020,7 +1021,7 @@ func (s *Server) serveStreams(ctx context.Context, st transport.ServerTransport,
     	}()
     
     	streamQuota := newHandlerQuota(s.opts.maxConcurrentStreams)
    -	st.HandleStreams(ctx, func(stream *transport.Stream) {
    +	st.HandleStreams(ctx, func(stream *transport.ServerStream) {
     		s.handlersWG.Add(1)
     		streamQuota.acquire()
     		f := func() {
    @@ -1072,7 +1073,7 @@ var _ http.Handler = (*Server)(nil)
     // Notice: This API is EXPERIMENTAL and may be changed or removed in a
     // later release.
     func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    -	st, err := transport.NewServerHandlerTransport(w, r, s.opts.statsHandlers)
    +	st, err := transport.NewServerHandlerTransport(w, r, s.opts.statsHandlers, s.opts.bufferPool)
     	if err != nil {
     		// Errors returned from transport.NewServerHandlerTransport have
     		// already been written to w.
    @@ -1136,26 +1137,41 @@ func (s *Server) incrCallsFailed() {
     	s.channelz.ServerMetrics.CallsFailed.Add(1)
     }
     
    -func (s *Server) sendResponse(ctx context.Context, t transport.ServerTransport, stream *transport.Stream, msg any, cp Compressor, opts *transport.Options, comp encoding.Compressor) error {
    +func (s *Server) sendResponse(ctx context.Context, stream *transport.ServerStream, msg any, cp Compressor, opts *transport.WriteOptions, comp encoding.Compressor) error {
     	data, err := encode(s.getCodec(stream.ContentSubtype()), msg)
     	if err != nil {
     		channelz.Error(logger, s.channelz, "grpc: server failed to encode response: ", err)
     		return err
     	}
    -	compData, err := compress(data, cp, comp)
    +
    +	compData, pf, err := compress(data, cp, comp, s.opts.bufferPool)
     	if err != nil {
    +		data.Free()
     		channelz.Error(logger, s.channelz, "grpc: server failed to compress response: ", err)
     		return err
     	}
    -	hdr, payload := msgHeader(data, compData)
    +
    +	hdr, payload := msgHeader(data, compData, pf)
    +
    +	defer func() {
    +		compData.Free()
    +		data.Free()
    +		// payload does not need to be freed here, it is either data or compData, both of
    +		// which are already freed.
    +	}()
    +
    +	dataLen := data.Len()
    +	payloadLen := payload.Len()
     	// TODO(dfawley): should we be checking len(data) instead?
    -	if len(payload) > s.opts.maxSendMessageSize {
    -		return status.Errorf(codes.ResourceExhausted, "grpc: trying to send message larger than max (%d vs. %d)", len(payload), s.opts.maxSendMessageSize)
    +	if payloadLen > s.opts.maxSendMessageSize {
    +		return status.Errorf(codes.ResourceExhausted, "grpc: trying to send message larger than max (%d vs. %d)", payloadLen, s.opts.maxSendMessageSize)
     	}
    -	err = t.Write(stream, hdr, payload, opts)
    +	err = stream.Write(hdr, payload, opts)
     	if err == nil {
    -		for _, sh := range s.opts.statsHandlers {
    -			sh.HandleRPC(ctx, outPayload(false, msg, data, payload, time.Now()))
    +		if len(s.opts.statsHandlers) != 0 {
    +			for _, sh := range s.opts.statsHandlers {
    +				sh.HandleRPC(ctx, outPayload(false, msg, dataLen, payloadLen, time.Now()))
    +			}
     		}
     	}
     	return err
    @@ -1197,7 +1213,7 @@ func getChainUnaryHandler(interceptors []UnaryServerInterceptor, curr int, info
     	}
     }
     
    -func (s *Server) processUnaryRPC(ctx context.Context, t transport.ServerTransport, stream *transport.Stream, info *serviceInfo, md *MethodDesc, trInfo *traceInfo) (err error) {
    +func (s *Server) processUnaryRPC(ctx context.Context, stream *transport.ServerStream, info *serviceInfo, md *MethodDesc, trInfo *traceInfo) (err error) {
     	shs := s.opts.statsHandlers
     	if len(shs) != 0 || trInfo != nil || channelz.IsOn() {
     		if channelz.IsOn() {
    @@ -1305,7 +1321,7 @@ func (s *Server) processUnaryRPC(ctx context.Context, t transport.ServerTranspor
     		decomp = encoding.GetCompressor(rc)
     		if decomp == nil {
     			st := status.Newf(codes.Unimplemented, "grpc: Decompressor is not installed for grpc-encoding %q", rc)
    -			t.WriteStatus(stream, st)
    +			stream.WriteStatus(st)
     			return st.Err()
     		}
     	}
    @@ -1334,37 +1350,34 @@ func (s *Server) processUnaryRPC(ctx context.Context, t transport.ServerTranspor
     	var payInfo *payloadInfo
     	if len(shs) != 0 || len(binlogs) != 0 {
     		payInfo = &payloadInfo{}
    +		defer payInfo.free()
     	}
     
    -	d, cancel, err := recvAndDecompress(&parser{r: stream, recvBufferPool: s.opts.recvBufferPool}, stream, dc, s.opts.maxReceiveMessageSize, payInfo, decomp)
    +	d, err := recvAndDecompress(&parser{r: stream, bufferPool: s.opts.bufferPool}, stream, dc, s.opts.maxReceiveMessageSize, payInfo, decomp, true)
     	if err != nil {
    -		if e := t.WriteStatus(stream, status.Convert(err)); e != nil {
    +		if e := stream.WriteStatus(status.Convert(err)); e != nil {
     			channelz.Warningf(logger, s.channelz, "grpc: Server.processUnaryRPC failed to write status: %v", e)
     		}
     		return err
     	}
    -	if channelz.IsOn() {
    -		t.IncrMsgRecv()
    -	}
    +	defer d.Free()
     	df := func(v any) error {
    -		defer cancel()
    -
     		if err := s.getCodec(stream.ContentSubtype()).Unmarshal(d, v); err != nil {
     			return status.Errorf(codes.Internal, "grpc: error unmarshalling request: %v", err)
     		}
    +
     		for _, sh := range shs {
     			sh.HandleRPC(ctx, &stats.InPayload{
     				RecvTime:         time.Now(),
     				Payload:          v,
    -				Length:           len(d),
    +				Length:           d.Len(),
     				WireLength:       payInfo.compressedLength + headerLen,
     				CompressedLength: payInfo.compressedLength,
    -				Data:             d,
     			})
     		}
     		if len(binlogs) != 0 {
     			cm := &binarylog.ClientMessage{
    -				Message: d,
    +				Message: d.Materialize(),
     			}
     			for _, binlog := range binlogs {
     				binlog.Log(ctx, cm)
    @@ -1389,7 +1402,7 @@ func (s *Server) processUnaryRPC(ctx context.Context, t transport.ServerTranspor
     			trInfo.tr.LazyLog(stringer(appStatus.Message()), true)
     			trInfo.tr.SetError()
     		}
    -		if e := t.WriteStatus(stream, appStatus); e != nil {
    +		if e := stream.WriteStatus(appStatus); e != nil {
     			channelz.Warningf(logger, s.channelz, "grpc: Server.processUnaryRPC failed to write status: %v", e)
     		}
     		if len(binlogs) != 0 {
    @@ -1416,20 +1429,20 @@ func (s *Server) processUnaryRPC(ctx context.Context, t transport.ServerTranspor
     	if trInfo != nil {
     		trInfo.tr.LazyLog(stringer("OK"), false)
     	}
    -	opts := &transport.Options{Last: true}
    +	opts := &transport.WriteOptions{Last: true}
     
     	// Server handler could have set new compressor by calling SetSendCompressor.
     	// In case it is set, we need to use it for compressing outbound message.
     	if stream.SendCompress() != sendCompressorName {
     		comp = encoding.GetCompressor(stream.SendCompress())
     	}
    -	if err := s.sendResponse(ctx, t, stream, reply, cp, opts, comp); err != nil {
    +	if err := s.sendResponse(ctx, stream, reply, cp, opts, comp); err != nil {
     		if err == io.EOF {
     			// The entire stream is done (for unary RPC only).
     			return err
     		}
     		if sts, ok := status.FromError(err); ok {
    -			if e := t.WriteStatus(stream, sts); e != nil {
    +			if e := stream.WriteStatus(sts); e != nil {
     				channelz.Warningf(logger, s.channelz, "grpc: Server.processUnaryRPC failed to write status: %v", e)
     			}
     		} else {
    @@ -1469,9 +1482,6 @@ func (s *Server) processUnaryRPC(ctx context.Context, t transport.ServerTranspor
     			binlog.Log(ctx, sm)
     		}
     	}
    -	if channelz.IsOn() {
    -		t.IncrMsgSent()
    -	}
     	if trInfo != nil {
     		trInfo.tr.LazyLog(&payload{sent: true, msg: reply}, true)
     	}
    @@ -1487,7 +1497,7 @@ func (s *Server) processUnaryRPC(ctx context.Context, t transport.ServerTranspor
     			binlog.Log(ctx, st)
     		}
     	}
    -	return t.WriteStatus(stream, statusOK)
    +	return stream.WriteStatus(statusOK)
     }
     
     // chainStreamServerInterceptors chains all stream server interceptors into one.
    @@ -1526,7 +1536,7 @@ func getChainStreamHandler(interceptors []StreamServerInterceptor, curr int, inf
     	}
     }
     
    -func (s *Server) processStreamingRPC(ctx context.Context, t transport.ServerTransport, stream *transport.Stream, info *serviceInfo, sd *StreamDesc, trInfo *traceInfo) (err error) {
    +func (s *Server) processStreamingRPC(ctx context.Context, stream *transport.ServerStream, info *serviceInfo, sd *StreamDesc, trInfo *traceInfo) (err error) {
     	if channelz.IsOn() {
     		s.incrCallsStarted()
     	}
    @@ -1546,9 +1556,8 @@ func (s *Server) processStreamingRPC(ctx context.Context, t transport.ServerTran
     	ctx = NewContextWithServerTransportStream(ctx, stream)
     	ss := &serverStream{
     		ctx:                   ctx,
    -		t:                     t,
     		s:                     stream,
    -		p:                     &parser{r: stream, recvBufferPool: s.opts.recvBufferPool},
    +		p:                     &parser{r: stream, bufferPool: s.opts.bufferPool},
     		codec:                 s.getCodec(stream.ContentSubtype()),
     		maxReceiveMessageSize: s.opts.maxReceiveMessageSize,
     		maxSendMessageSize:    s.opts.maxSendMessageSize,
    @@ -1633,7 +1642,7 @@ func (s *Server) processStreamingRPC(ctx context.Context, t transport.ServerTran
     		ss.decomp = encoding.GetCompressor(rc)
     		if ss.decomp == nil {
     			st := status.Newf(codes.Unimplemented, "grpc: Decompressor is not installed for grpc-encoding %q", rc)
    -			t.WriteStatus(ss.s, st)
    +			ss.s.WriteStatus(st)
     			return st.Err()
     		}
     	}
    @@ -1702,7 +1711,7 @@ func (s *Server) processStreamingRPC(ctx context.Context, t transport.ServerTran
     				binlog.Log(ctx, st)
     			}
     		}
    -		t.WriteStatus(ss.s, appStatus)
    +		ss.s.WriteStatus(appStatus)
     		// TODO: Should we log an error from WriteStatus here and below?
     		return appErr
     	}
    @@ -1720,10 +1729,10 @@ func (s *Server) processStreamingRPC(ctx context.Context, t transport.ServerTran
     			binlog.Log(ctx, st)
     		}
     	}
    -	return t.WriteStatus(ss.s, statusOK)
    +	return ss.s.WriteStatus(statusOK)
     }
     
    -func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Stream) {
    +func (s *Server) handleStream(t transport.ServerTransport, stream *transport.ServerStream) {
     	ctx := stream.Context()
     	ctx = contextWithServer(ctx, s)
     	var ti *traceInfo
    @@ -1753,7 +1762,7 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str
     			ti.tr.SetError()
     		}
     		errDesc := fmt.Sprintf("malformed method name: %q", stream.Method())
    -		if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil {
    +		if err := stream.WriteStatus(status.New(codes.Unimplemented, errDesc)); err != nil {
     			if ti != nil {
     				ti.tr.LazyLog(&fmtStringer{"%v", []any{err}}, true)
     				ti.tr.SetError()
    @@ -1768,17 +1777,20 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str
     	service := sm[:pos]
     	method := sm[pos+1:]
     
    -	md, _ := metadata.FromIncomingContext(ctx)
    -	for _, sh := range s.opts.statsHandlers {
    -		ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: stream.Method()})
    -		sh.HandleRPC(ctx, &stats.InHeader{
    -			FullMethod:  stream.Method(),
    -			RemoteAddr:  t.Peer().Addr,
    -			LocalAddr:   t.Peer().LocalAddr,
    -			Compression: stream.RecvCompress(),
    -			WireLength:  stream.HeaderWireLength(),
    -			Header:      md,
    -		})
    +	// FromIncomingContext is expensive: skip if there are no statsHandlers
    +	if len(s.opts.statsHandlers) > 0 {
    +		md, _ := metadata.FromIncomingContext(ctx)
    +		for _, sh := range s.opts.statsHandlers {
    +			ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: stream.Method()})
    +			sh.HandleRPC(ctx, &stats.InHeader{
    +				FullMethod:  stream.Method(),
    +				RemoteAddr:  t.Peer().Addr,
    +				LocalAddr:   t.Peer().LocalAddr,
    +				Compression: stream.RecvCompress(),
    +				WireLength:  stream.HeaderWireLength(),
    +				Header:      md,
    +			})
    +		}
     	}
     	// To have calls in stream callouts work. Will delete once all stats handler
     	// calls come from the gRPC layer.
    @@ -1787,17 +1799,17 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str
     	srv, knownService := s.services[service]
     	if knownService {
     		if md, ok := srv.methods[method]; ok {
    -			s.processUnaryRPC(ctx, t, stream, srv, md, ti)
    +			s.processUnaryRPC(ctx, stream, srv, md, ti)
     			return
     		}
     		if sd, ok := srv.streams[method]; ok {
    -			s.processStreamingRPC(ctx, t, stream, srv, sd, ti)
    +			s.processStreamingRPC(ctx, stream, srv, sd, ti)
     			return
     		}
     	}
     	// Unknown service, or known server unknown method.
     	if unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil {
    -		s.processStreamingRPC(ctx, t, stream, nil, unknownDesc, ti)
    +		s.processStreamingRPC(ctx, stream, nil, unknownDesc, ti)
     		return
     	}
     	var errDesc string
    @@ -1810,7 +1822,7 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str
     		ti.tr.LazyPrintf("%s", errDesc)
     		ti.tr.SetError()
     	}
    -	if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil {
    +	if err := stream.WriteStatus(status.New(codes.Unimplemented, errDesc)); err != nil {
     		if ti != nil {
     			ti.tr.LazyLog(&fmtStringer{"%v", []any{err}}, true)
     			ti.tr.SetError()
    @@ -1963,12 +1975,12 @@ func (s *Server) getCodec(contentSubtype string) baseCodec {
     		return s.opts.codec
     	}
     	if contentSubtype == "" {
    -		return encoding.GetCodec(proto.Name)
    +		return getCodec(proto.Name)
     	}
    -	codec := encoding.GetCodec(contentSubtype)
    +	codec := getCodec(contentSubtype)
     	if codec == nil {
     		logger.Warningf("Unsupported codec %q. Defaulting to %q for now. This will start to fail in future releases.", contentSubtype, proto.Name)
    -		return encoding.GetCodec(proto.Name)
    +		return getCodec(proto.Name)
     	}
     	return codec
     }
    @@ -2085,7 +2097,7 @@ func SendHeader(ctx context.Context, md metadata.MD) error {
     // Notice: This function is EXPERIMENTAL and may be changed or removed in a
     // later release.
     func SetSendCompressor(ctx context.Context, name string) error {
    -	stream, ok := ServerTransportStreamFromContext(ctx).(*transport.Stream)
    +	stream, ok := ServerTransportStreamFromContext(ctx).(*transport.ServerStream)
     	if !ok || stream == nil {
     		return fmt.Errorf("failed to fetch the stream from the given context")
     	}
    @@ -2107,7 +2119,7 @@ func SetSendCompressor(ctx context.Context, name string) error {
     // Notice: This function is EXPERIMENTAL and may be changed or removed in a
     // later release.
     func ClientSupportedCompressors(ctx context.Context) ([]string, error) {
    -	stream, ok := ServerTransportStreamFromContext(ctx).(*transport.Stream)
    +	stream, ok := ServerTransportStreamFromContext(ctx).(*transport.ServerStream)
     	if !ok || stream == nil {
     		return nil, fmt.Errorf("failed to fetch the stream from the given context %v", ctx)
     	}
    diff --git a/vendor/google.golang.org/grpc/service_config.go b/vendor/google.golang.org/grpc/service_config.go
    index 2671c5ef69f0..7e83027d1994 100644
    --- a/vendor/google.golang.org/grpc/service_config.go
    +++ b/vendor/google.golang.org/grpc/service_config.go
    @@ -168,6 +168,7 @@ func init() {
     		return parseServiceConfig(js, defaultMaxCallAttempts)
     	}
     }
    +
     func parseServiceConfig(js string, maxAttempts int) *serviceconfig.ParseResult {
     	if len(js) == 0 {
     		return &serviceconfig.ParseResult{Err: fmt.Errorf("no JSON service config provided")}
    @@ -297,7 +298,7 @@ func convertRetryPolicy(jrp *jsonRetryPolicy, maxAttempts int) (p *internalservi
     	return rp, nil
     }
     
    -func min(a, b *int) *int {
    +func minPointers(a, b *int) *int {
     	if *a < *b {
     		return a
     	}
    @@ -309,7 +310,7 @@ func getMaxSize(mcMax, doptMax *int, defaultVal int) *int {
     		return &defaultVal
     	}
     	if mcMax != nil && doptMax != nil {
    -		return min(mcMax, doptMax)
    +		return minPointers(mcMax, doptMax)
     	}
     	if mcMax != nil {
     		return mcMax
    diff --git a/vendor/google.golang.org/grpc/shared_buffer_pool.go b/vendor/google.golang.org/grpc/shared_buffer_pool.go
    deleted file mode 100644
    index 48a64cfe8e25..000000000000
    --- a/vendor/google.golang.org/grpc/shared_buffer_pool.go
    +++ /dev/null
    @@ -1,154 +0,0 @@
    -/*
    - *
    - * Copyright 2023 gRPC authors.
    - *
    - * Licensed under the Apache License, Version 2.0 (the "License");
    - * you may not use this file except in compliance with the License.
    - * You may obtain a copy of the License at
    - *
    - *     http://www.apache.org/licenses/LICENSE-2.0
    - *
    - * Unless required by applicable law or agreed to in writing, software
    - * distributed under the License is distributed on an "AS IS" BASIS,
    - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    - * See the License for the specific language governing permissions and
    - * limitations under the License.
    - *
    - */
    -
    -package grpc
    -
    -import "sync"
    -
    -// SharedBufferPool is a pool of buffers that can be shared, resulting in
    -// decreased memory allocation. Currently, in gRPC-go, it is only utilized
    -// for parsing incoming messages.
    -//
    -// # Experimental
    -//
    -// Notice: This API is EXPERIMENTAL and may be changed or removed in a
    -// later release.
    -type SharedBufferPool interface {
    -	// Get returns a buffer with specified length from the pool.
    -	//
    -	// The returned byte slice may be not zero initialized.
    -	Get(length int) []byte
    -
    -	// Put returns a buffer to the pool.
    -	Put(*[]byte)
    -}
    -
    -// NewSharedBufferPool creates a simple SharedBufferPool with buckets
    -// of different sizes to optimize memory usage. This prevents the pool from
    -// wasting large amounts of memory, even when handling messages of varying sizes.
    -//
    -// # Experimental
    -//
    -// Notice: This API is EXPERIMENTAL and may be changed or removed in a
    -// later release.
    -func NewSharedBufferPool() SharedBufferPool {
    -	return &simpleSharedBufferPool{
    -		pools: [poolArraySize]simpleSharedBufferChildPool{
    -			newBytesPool(level0PoolMaxSize),
    -			newBytesPool(level1PoolMaxSize),
    -			newBytesPool(level2PoolMaxSize),
    -			newBytesPool(level3PoolMaxSize),
    -			newBytesPool(level4PoolMaxSize),
    -			newBytesPool(0),
    -		},
    -	}
    -}
    -
    -// simpleSharedBufferPool is a simple implementation of SharedBufferPool.
    -type simpleSharedBufferPool struct {
    -	pools [poolArraySize]simpleSharedBufferChildPool
    -}
    -
    -func (p *simpleSharedBufferPool) Get(size int) []byte {
    -	return p.pools[p.poolIdx(size)].Get(size)
    -}
    -
    -func (p *simpleSharedBufferPool) Put(bs *[]byte) {
    -	p.pools[p.poolIdx(cap(*bs))].Put(bs)
    -}
    -
    -func (p *simpleSharedBufferPool) poolIdx(size int) int {
    -	switch {
    -	case size <= level0PoolMaxSize:
    -		return level0PoolIdx
    -	case size <= level1PoolMaxSize:
    -		return level1PoolIdx
    -	case size <= level2PoolMaxSize:
    -		return level2PoolIdx
    -	case size <= level3PoolMaxSize:
    -		return level3PoolIdx
    -	case size <= level4PoolMaxSize:
    -		return level4PoolIdx
    -	default:
    -		return levelMaxPoolIdx
    -	}
    -}
    -
    -const (
    -	level0PoolMaxSize = 16                     //  16  B
    -	level1PoolMaxSize = level0PoolMaxSize * 16 // 256  B
    -	level2PoolMaxSize = level1PoolMaxSize * 16 //   4 KB
    -	level3PoolMaxSize = level2PoolMaxSize * 16 //  64 KB
    -	level4PoolMaxSize = level3PoolMaxSize * 16 //   1 MB
    -)
    -
    -const (
    -	level0PoolIdx = iota
    -	level1PoolIdx
    -	level2PoolIdx
    -	level3PoolIdx
    -	level4PoolIdx
    -	levelMaxPoolIdx
    -	poolArraySize
    -)
    -
    -type simpleSharedBufferChildPool interface {
    -	Get(size int) []byte
    -	Put(any)
    -}
    -
    -type bufferPool struct {
    -	sync.Pool
    -
    -	defaultSize int
    -}
    -
    -func (p *bufferPool) Get(size int) []byte {
    -	bs := p.Pool.Get().(*[]byte)
    -
    -	if cap(*bs) < size {
    -		p.Pool.Put(bs)
    -
    -		return make([]byte, size)
    -	}
    -
    -	return (*bs)[:size]
    -}
    -
    -func newBytesPool(size int) simpleSharedBufferChildPool {
    -	return &bufferPool{
    -		Pool: sync.Pool{
    -			New: func() any {
    -				bs := make([]byte, size)
    -				return &bs
    -			},
    -		},
    -		defaultSize: size,
    -	}
    -}
    -
    -// nopBufferPool is a buffer pool just makes new buffer without pooling.
    -type nopBufferPool struct {
    -}
    -
    -func (nopBufferPool) Get(length int) []byte {
    -	return make([]byte, length)
    -}
    -
    -func (nopBufferPool) Put(*[]byte) {
    -}
    diff --git a/vendor/google.golang.org/grpc/stats/metrics.go b/vendor/google.golang.org/grpc/stats/metrics.go
    new file mode 100644
    index 000000000000..641c8e9794a5
    --- /dev/null
    +++ b/vendor/google.golang.org/grpc/stats/metrics.go
    @@ -0,0 +1,81 @@
    +/*
    + * Copyright 2024 gRPC authors.
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package stats
    +
    +import "maps"
    +
    +// MetricSet is a set of metrics to record. Once created, MetricSet is immutable,
    +// however Add and Remove can make copies with specific metrics added or
    +// removed, respectively.
    +//
    +// Do not construct directly; use NewMetricSet instead.
    +type MetricSet struct {
    +	// metrics are the set of metrics to initialize.
    +	metrics map[string]bool
    +}
    +
    +// NewMetricSet returns a MetricSet containing metricNames.
    +func NewMetricSet(metricNames ...string) *MetricSet {
    +	newMetrics := make(map[string]bool)
    +	for _, metric := range metricNames {
    +		newMetrics[metric] = true
    +	}
    +	return &MetricSet{metrics: newMetrics}
    +}
    +
    +// Metrics returns the metrics set. The returned map is read-only and must not
    +// be modified.
    +func (m *MetricSet) Metrics() map[string]bool {
    +	return m.metrics
    +}
    +
    +// Add adds the metricNames to the metrics set and returns a new copy with the
    +// additional metrics.
    +func (m *MetricSet) Add(metricNames ...string) *MetricSet {
    +	newMetrics := make(map[string]bool)
    +	for metric := range m.metrics {
    +		newMetrics[metric] = true
    +	}
    +
    +	for _, metric := range metricNames {
    +		newMetrics[metric] = true
    +	}
    +	return &MetricSet{metrics: newMetrics}
    +}
    +
    +// Join joins the metrics passed in with the metrics set, and returns a new copy
    +// with the merged metrics.
    +func (m *MetricSet) Join(metrics *MetricSet) *MetricSet {
    +	newMetrics := make(map[string]bool)
    +	maps.Copy(newMetrics, m.metrics)
    +	maps.Copy(newMetrics, metrics.metrics)
    +	return &MetricSet{metrics: newMetrics}
    +}
    +
    +// Remove removes the metricNames from the metrics set and returns a new copy
    +// with the metrics removed.
    +func (m *MetricSet) Remove(metricNames ...string) *MetricSet {
    +	newMetrics := make(map[string]bool)
    +	for metric := range m.metrics {
    +		newMetrics[metric] = true
    +	}
    +
    +	for _, metric := range metricNames {
    +		delete(newMetrics, metric)
    +	}
    +	return &MetricSet{metrics: newMetrics}
    +}
    diff --git a/vendor/google.golang.org/grpc/stats/stats.go b/vendor/google.golang.org/grpc/stats/stats.go
    index fdb0bd65182c..6f20d2d54868 100644
    --- a/vendor/google.golang.org/grpc/stats/stats.go
    +++ b/vendor/google.golang.org/grpc/stats/stats.go
    @@ -77,9 +77,6 @@ type InPayload struct {
     	// the call to HandleRPC which provides the InPayload returns and must be
     	// copied if needed later.
     	Payload any
    -	// Data is the serialized message payload.
    -	// Deprecated: Data will be removed in the next release.
    -	Data []byte
     
     	// Length is the size of the uncompressed payload data. Does not include any
     	// framing (gRPC or HTTP/2).
    @@ -150,9 +147,6 @@ type OutPayload struct {
     	// the call to HandleRPC which provides the OutPayload returns and must be
     	// copied if needed later.
     	Payload any
    -	// Data is the serialized message payload.
    -	// Deprecated: Data will be removed in the next release.
    -	Data []byte
     	// Length is the size of the uncompressed payload data. Does not include any
     	// framing (gRPC or HTTP/2).
     	Length int
    @@ -266,84 +260,42 @@ func (s *ConnEnd) IsClient() bool { return s.Client }
     
     func (s *ConnEnd) isConnStats() {}
     
    -type incomingTagsKey struct{}
    -type outgoingTagsKey struct{}
    -
     // SetTags attaches stats tagging data to the context, which will be sent in
     // the outgoing RPC with the header grpc-tags-bin.  Subsequent calls to
     // SetTags will overwrite the values from earlier calls.
     //
    -// NOTE: this is provided only for backward compatibility with existing clients
    -// and will likely be removed in an upcoming release.  New uses should transmit
    -// this type of data using metadata with a different, non-reserved (i.e. does
    -// not begin with "grpc-") header name.
    +// Deprecated: set the `grpc-tags-bin` header in the metadata instead.
     func SetTags(ctx context.Context, b []byte) context.Context {
    -	return context.WithValue(ctx, outgoingTagsKey{}, b)
    +	return metadata.AppendToOutgoingContext(ctx, "grpc-tags-bin", string(b))
     }
     
     // Tags returns the tags from the context for the inbound RPC.
     //
    -// NOTE: this is provided only for backward compatibility with existing clients
    -// and will likely be removed in an upcoming release.  New uses should transmit
    -// this type of data using metadata with a different, non-reserved (i.e. does
    -// not begin with "grpc-") header name.
    +// Deprecated: obtain the `grpc-tags-bin` header from metadata instead.
     func Tags(ctx context.Context) []byte {
    -	b, _ := ctx.Value(incomingTagsKey{}).([]byte)
    -	return b
    -}
    -
    -// SetIncomingTags attaches stats tagging data to the context, to be read by
    -// the application (not sent in outgoing RPCs).
    -//
    -// This is intended for gRPC-internal use ONLY.
    -func SetIncomingTags(ctx context.Context, b []byte) context.Context {
    -	return context.WithValue(ctx, incomingTagsKey{}, b)
    -}
    -
    -// OutgoingTags returns the tags from the context for the outbound RPC.
    -//
    -// This is intended for gRPC-internal use ONLY.
    -func OutgoingTags(ctx context.Context) []byte {
    -	b, _ := ctx.Value(outgoingTagsKey{}).([]byte)
    -	return b
    +	traceValues := metadata.ValueFromIncomingContext(ctx, "grpc-tags-bin")
    +	if len(traceValues) == 0 {
    +		return nil
    +	}
    +	return []byte(traceValues[len(traceValues)-1])
     }
     
    -type incomingTraceKey struct{}
    -type outgoingTraceKey struct{}
    -
     // SetTrace attaches stats tagging data to the context, which will be sent in
     // the outgoing RPC with the header grpc-trace-bin.  Subsequent calls to
     // SetTrace will overwrite the values from earlier calls.
     //
    -// NOTE: this is provided only for backward compatibility with existing clients
    -// and will likely be removed in an upcoming release.  New uses should transmit
    -// this type of data using metadata with a different, non-reserved (i.e. does
    -// not begin with "grpc-") header name.
    +// Deprecated: set the `grpc-trace-bin` header in the metadata instead.
     func SetTrace(ctx context.Context, b []byte) context.Context {
    -	return context.WithValue(ctx, outgoingTraceKey{}, b)
    +	return metadata.AppendToOutgoingContext(ctx, "grpc-trace-bin", string(b))
     }
     
     // Trace returns the trace from the context for the inbound RPC.
     //
    -// NOTE: this is provided only for backward compatibility with existing clients
    -// and will likely be removed in an upcoming release.  New uses should transmit
    -// this type of data using metadata with a different, non-reserved (i.e. does
    -// not begin with "grpc-") header name.
    +// Deprecated: obtain the `grpc-trace-bin` header from metadata instead.
     func Trace(ctx context.Context) []byte {
    -	b, _ := ctx.Value(incomingTraceKey{}).([]byte)
    -	return b
    -}
    -
    -// SetIncomingTrace attaches stats tagging data to the context, to be read by
    -// the application (not sent in outgoing RPCs).  It is intended for
    -// gRPC-internal use.
    -func SetIncomingTrace(ctx context.Context, b []byte) context.Context {
    -	return context.WithValue(ctx, incomingTraceKey{}, b)
    -}
    -
    -// OutgoingTrace returns the trace from the context for the outbound RPC.  It is
    -// intended for gRPC-internal use.
    -func OutgoingTrace(ctx context.Context) []byte {
    -	b, _ := ctx.Value(outgoingTraceKey{}).([]byte)
    -	return b
    +	traceValues := metadata.ValueFromIncomingContext(ctx, "grpc-trace-bin")
    +	if len(traceValues) == 0 {
    +		return nil
    +	}
    +	return []byte(traceValues[len(traceValues)-1])
     }
    diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go
    index 8051ef5b514a..17e2267b3320 100644
    --- a/vendor/google.golang.org/grpc/stream.go
    +++ b/vendor/google.golang.org/grpc/stream.go
    @@ -23,7 +23,7 @@ import (
     	"errors"
     	"io"
     	"math"
    -	"math/rand"
    +	rand "math/rand/v2"
     	"strconv"
     	"sync"
     	"time"
    @@ -41,6 +41,7 @@ import (
     	"google.golang.org/grpc/internal/serviceconfig"
     	istatus "google.golang.org/grpc/internal/status"
     	"google.golang.org/grpc/internal/transport"
    +	"google.golang.org/grpc/mem"
     	"google.golang.org/grpc/metadata"
     	"google.golang.org/grpc/peer"
     	"google.golang.org/grpc/stats"
    @@ -112,7 +113,9 @@ type ClientStream interface {
     	// SendMsg is generally called by generated code. On error, SendMsg aborts
     	// the stream. If the error was generated by the client, the status is
     	// returned directly; otherwise, io.EOF is returned and the status of
    -	// the stream may be discovered using RecvMsg.
    +	// the stream may be discovered using RecvMsg. For unary or server-streaming
    +	// RPCs (StreamDesc.ClientStreams is false), a nil error is returned
    +	// unconditionally.
     	//
     	// SendMsg blocks until:
     	//   - There is sufficient flow control to schedule m with the transport, or
    @@ -215,7 +218,7 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
     
     	var mc serviceconfig.MethodConfig
     	var onCommit func()
    -	var newStream = func(ctx context.Context, done func()) (iresolver.ClientStream, error) {
    +	newStream := func(ctx context.Context, done func()) (iresolver.ClientStream, error) {
     		return newClientStreamWithParams(ctx, desc, cc, method, mc, onCommit, done, opts...)
     	}
     
    @@ -359,7 +362,7 @@ func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *Client
     		cs.attempt = a
     		return nil
     	}
    -	if err := cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) }); err != nil {
    +	if err := cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op, nil) }); err != nil {
     		return nil, err
     	}
     
    @@ -517,7 +520,7 @@ func (a *csAttempt) newStream() error {
     	}
     	a.s = s
     	a.ctx = s.Context()
    -	a.p = &parser{r: s, recvBufferPool: a.cs.cc.dopts.recvBufferPool}
    +	a.p = &parser{r: s, bufferPool: a.cs.cc.dopts.copts.BufferPool}
     	return nil
     }
     
    @@ -566,10 +569,15 @@ type clientStream struct {
     	// place where we need to check if the attempt is nil.
     	attempt *csAttempt
     	// TODO(hedging): hedging will have multiple attempts simultaneously.
    -	committed  bool // active attempt committed for retry?
    -	onCommit   func()
    -	buffer     []func(a *csAttempt) error // operations to replay on retry
    -	bufferSize int                        // current size of buffer
    +	committed        bool // active attempt committed for retry?
    +	onCommit         func()
    +	replayBuffer     []replayOp // operations to replay on retry
    +	replayBufferSize int        // current size of replayBuffer
    +}
    +
    +type replayOp struct {
    +	op      func(a *csAttempt) error
    +	cleanup func()
     }
     
     // csAttempt implements a single transport stream attempt within a
    @@ -578,7 +586,7 @@ type csAttempt struct {
     	ctx        context.Context
     	cs         *clientStream
     	t          transport.ClientTransport
    -	s          *transport.Stream
    +	s          *transport.ClientStream
     	p          *parser
     	pickResult balancer.PickResult
     
    @@ -607,7 +615,12 @@ func (cs *clientStream) commitAttemptLocked() {
     		cs.onCommit()
     	}
     	cs.committed = true
    -	cs.buffer = nil
    +	for _, op := range cs.replayBuffer {
    +		if op.cleanup != nil {
    +			op.cleanup()
    +		}
    +	}
    +	cs.replayBuffer = nil
     }
     
     func (cs *clientStream) commitAttempt() {
    @@ -695,11 +708,10 @@ func (a *csAttempt) shouldRetry(err error) (bool, error) {
     		cs.numRetriesSincePushback = 0
     	} else {
     		fact := math.Pow(rp.BackoffMultiplier, float64(cs.numRetriesSincePushback))
    -		cur := float64(rp.InitialBackoff) * fact
    -		if max := float64(rp.MaxBackoff); cur > max {
    -			cur = max
    -		}
    -		dur = time.Duration(rand.Int63n(int64(cur)))
    +		cur := min(float64(rp.InitialBackoff)*fact, float64(rp.MaxBackoff))
    +		// Apply jitter by multiplying with a random factor between 0.8 and 1.2
    +		cur *= 0.8 + 0.4*rand.Float64()
    +		dur = time.Duration(int64(cur))
     		cs.numRetriesSincePushback++
     	}
     
    @@ -732,7 +744,7 @@ func (cs *clientStream) retryLocked(attempt *csAttempt, lastErr error) error {
     			// the stream is canceled.
     			return err
     		}
    -		// Note that the first op in the replay buffer always sets cs.attempt
    +		// Note that the first op in replayBuffer always sets cs.attempt
     		// if it is able to pick a transport and create a stream.
     		if lastErr = cs.replayBufferLocked(attempt); lastErr == nil {
     			return nil
    @@ -761,7 +773,7 @@ func (cs *clientStream) withRetry(op func(a *csAttempt) error, onSuccess func())
     			// already be status errors.
     			return toRPCErr(op(cs.attempt))
     		}
    -		if len(cs.buffer) == 0 {
    +		if len(cs.replayBuffer) == 0 {
     			// For the first op, which controls creation of the stream and
     			// assigns cs.attempt, we need to create a new attempt inline
     			// before executing the first op.  On subsequent ops, the attempt
    @@ -851,25 +863,26 @@ func (cs *clientStream) Trailer() metadata.MD {
     }
     
     func (cs *clientStream) replayBufferLocked(attempt *csAttempt) error {
    -	for _, f := range cs.buffer {
    -		if err := f(attempt); err != nil {
    +	for _, f := range cs.replayBuffer {
    +		if err := f.op(attempt); err != nil {
     			return err
     		}
     	}
     	return nil
     }
     
    -func (cs *clientStream) bufferForRetryLocked(sz int, op func(a *csAttempt) error) {
    +func (cs *clientStream) bufferForRetryLocked(sz int, op func(a *csAttempt) error, cleanup func()) {
     	// Note: we still will buffer if retry is disabled (for transparent retries).
     	if cs.committed {
     		return
     	}
    -	cs.bufferSize += sz
    -	if cs.bufferSize > cs.callInfo.maxRetryRPCBufferSize {
    +	cs.replayBufferSize += sz
    +	if cs.replayBufferSize > cs.callInfo.maxRetryRPCBufferSize {
     		cs.commitAttemptLocked()
    +		cleanup()
     		return
     	}
    -	cs.buffer = append(cs.buffer, op)
    +	cs.replayBuffer = append(cs.replayBuffer, replayOp{op: op, cleanup: cleanup})
     }
     
     func (cs *clientStream) SendMsg(m any) (err error) {
    @@ -891,23 +904,50 @@ func (cs *clientStream) SendMsg(m any) (err error) {
     	}
     
     	// load hdr, payload, data
    -	hdr, payload, data, err := prepareMsg(m, cs.codec, cs.cp, cs.comp)
    +	hdr, data, payload, pf, err := prepareMsg(m, cs.codec, cs.cp, cs.comp, cs.cc.dopts.copts.BufferPool)
     	if err != nil {
     		return err
     	}
     
    +	defer func() {
    +		data.Free()
    +		// only free payload if compression was made, and therefore it is a different set
    +		// of buffers from data.
    +		if pf.isCompressed() {
    +			payload.Free()
    +		}
    +	}()
    +
    +	dataLen := data.Len()
    +	payloadLen := payload.Len()
     	// TODO(dfawley): should we be checking len(data) instead?
    -	if len(payload) > *cs.callInfo.maxSendMessageSize {
    -		return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payload), *cs.callInfo.maxSendMessageSize)
    +	if payloadLen > *cs.callInfo.maxSendMessageSize {
    +		return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", payloadLen, *cs.callInfo.maxSendMessageSize)
     	}
    +
    +	// always take an extra ref in case data == payload (i.e. when the data isn't
    +	// compressed). The original ref will always be freed by the deferred free above.
    +	payload.Ref()
     	op := func(a *csAttempt) error {
    -		return a.sendMsg(m, hdr, payload, data)
    +		return a.sendMsg(m, hdr, payload, dataLen, payloadLen)
    +	}
    +
    +	// onSuccess is invoked when the op is captured for a subsequent retry. If the
    +	// stream was established by a previous message and therefore retries are
    +	// disabled, onSuccess will not be invoked, and payloadRef can be freed
    +	// immediately.
    +	onSuccessCalled := false
    +	err = cs.withRetry(op, func() {
    +		cs.bufferForRetryLocked(len(hdr)+payloadLen, op, payload.Free)
    +		onSuccessCalled = true
    +	})
    +	if !onSuccessCalled {
    +		payload.Free()
     	}
    -	err = cs.withRetry(op, func() { cs.bufferForRetryLocked(len(hdr)+len(payload), op) })
     	if len(cs.binlogs) != 0 && err == nil {
     		cm := &binarylog.ClientMessage{
     			OnClientSide: true,
    -			Message:      data,
    +			Message:      data.Materialize(),
     		}
     		for _, binlog := range cs.binlogs {
     			binlog.Log(cs.ctx, cm)
    @@ -924,6 +964,7 @@ func (cs *clientStream) RecvMsg(m any) error {
     	var recvInfo *payloadInfo
     	if len(cs.binlogs) != 0 {
     		recvInfo = &payloadInfo{}
    +		defer recvInfo.free()
     	}
     	err := cs.withRetry(func(a *csAttempt) error {
     		return a.recvMsg(m, recvInfo)
    @@ -931,7 +972,7 @@ func (cs *clientStream) RecvMsg(m any) error {
     	if len(cs.binlogs) != 0 && err == nil {
     		sm := &binarylog.ServerMessage{
     			OnClientSide: true,
    -			Message:      recvInfo.uncompressedBytes,
    +			Message:      recvInfo.uncompressedBytes.Materialize(),
     		}
     		for _, binlog := range cs.binlogs {
     			binlog.Log(cs.ctx, sm)
    @@ -951,14 +992,14 @@ func (cs *clientStream) CloseSend() error {
     	}
     	cs.sentLast = true
     	op := func(a *csAttempt) error {
    -		a.t.Write(a.s, nil, nil, &transport.Options{Last: true})
    +		a.s.Write(nil, nil, &transport.WriteOptions{Last: true})
     		// Always return nil; io.EOF is the only error that might make sense
     		// instead, but there is no need to signal the client to call RecvMsg
     		// as the only use left for the stream after CloseSend is to call
     		// RecvMsg.  This also matches historical behavior.
     		return nil
     	}
    -	cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) })
    +	cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op, nil) })
     	if len(cs.binlogs) != 0 {
     		chc := &binarylog.ClientHalfClose{
     			OnClientSide: true,
    @@ -1034,7 +1075,7 @@ func (cs *clientStream) finish(err error) {
     	cs.cancel()
     }
     
    -func (a *csAttempt) sendMsg(m any, hdr, payld, data []byte) error {
    +func (a *csAttempt) sendMsg(m any, hdr []byte, payld mem.BufferSlice, dataLength, payloadLength int) error {
     	cs := a.cs
     	if a.trInfo != nil {
     		a.mu.Lock()
    @@ -1043,7 +1084,7 @@ func (a *csAttempt) sendMsg(m any, hdr, payld, data []byte) error {
     		}
     		a.mu.Unlock()
     	}
    -	if err := a.t.Write(a.s, hdr, payld, &transport.Options{Last: !cs.desc.ClientStreams}); err != nil {
    +	if err := a.s.Write(hdr, payld, &transport.WriteOptions{Last: !cs.desc.ClientStreams}); err != nil {
     		if !cs.desc.ClientStreams {
     			// For non-client-streaming RPCs, we return nil instead of EOF on error
     			// because the generated code requires it.  finish is not called; RecvMsg()
    @@ -1052,11 +1093,10 @@ func (a *csAttempt) sendMsg(m any, hdr, payld, data []byte) error {
     		}
     		return io.EOF
     	}
    -	for _, sh := range a.statsHandlers {
    -		sh.HandleRPC(a.ctx, outPayload(true, m, data, payld, time.Now()))
    -	}
    -	if channelz.IsOn() {
    -		a.t.IncrMsgSent()
    +	if len(a.statsHandlers) != 0 {
    +		for _, sh := range a.statsHandlers {
    +			sh.HandleRPC(a.ctx, outPayload(true, m, dataLength, payloadLength, time.Now()))
    +		}
     	}
     	return nil
     }
    @@ -1065,6 +1105,7 @@ func (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) {
     	cs := a.cs
     	if len(a.statsHandlers) != 0 && payInfo == nil {
     		payInfo = &payloadInfo{}
    +		defer payInfo.free()
     	}
     
     	if !a.decompSet {
    @@ -1083,8 +1124,7 @@ func (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) {
     		// Only initialize this state once per stream.
     		a.decompSet = true
     	}
    -	err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decomp)
    -	if err != nil {
    +	if err := recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decomp, false); err != nil {
     		if err == io.EOF {
     			if statusErr := a.s.Status().Err(); statusErr != nil {
     				return statusErr
    @@ -1103,33 +1143,26 @@ func (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) {
     	}
     	for _, sh := range a.statsHandlers {
     		sh.HandleRPC(a.ctx, &stats.InPayload{
    -			Client:   true,
    -			RecvTime: time.Now(),
    -			Payload:  m,
    -			// TODO truncate large payload.
    -			Data:             payInfo.uncompressedBytes,
    +			Client:           true,
    +			RecvTime:         time.Now(),
    +			Payload:          m,
     			WireLength:       payInfo.compressedLength + headerLen,
     			CompressedLength: payInfo.compressedLength,
    -			Length:           len(payInfo.uncompressedBytes),
    +			Length:           payInfo.uncompressedBytes.Len(),
     		})
     	}
    -	if channelz.IsOn() {
    -		a.t.IncrMsgRecv()
    -	}
     	if cs.desc.ServerStreams {
     		// Subsequent messages should be received by subsequent RecvMsg calls.
     		return nil
     	}
     	// Special handling for non-server-stream rpcs.
     	// This recv expects EOF or errors, so we don't collect inPayload.
    -	err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decomp)
    -	if err == nil {
    -		return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want "))
    -	}
    -	if err == io.EOF {
    +	if err := recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decomp, false); err == io.EOF {
     		return a.s.Status().Err() // non-server streaming Recv returns nil on success
    +	} else if err != nil {
    +		return toRPCErr(err)
     	}
    -	return toRPCErr(err)
    +	return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want "))
     }
     
     func (a *csAttempt) finish(err error) {
    @@ -1145,7 +1178,7 @@ func (a *csAttempt) finish(err error) {
     	}
     	var tr metadata.MD
     	if a.s != nil {
    -		a.t.CloseStream(a.s, err)
    +		a.s.Close(err)
     		tr = a.s.Trailer()
     	}
     
    @@ -1185,12 +1218,12 @@ func (a *csAttempt) finish(err error) {
     	a.mu.Unlock()
     }
     
    -// newClientStream creates a ClientStream with the specified transport, on the
    +// newNonRetryClientStream creates a ClientStream with the specified transport, on the
     // given addrConn.
     //
     // It's expected that the given transport is either the same one in addrConn, or
     // is already closed. To avoid race, transport is specified separately, instead
    -// of using ac.transpot.
    +// of using ac.transport.
     //
     // Main difference between this and ClientConn.NewStream:
     // - no retry
    @@ -1276,7 +1309,7 @@ func newNonRetryClientStream(ctx context.Context, desc *StreamDesc, method strin
     		return nil, err
     	}
     	as.s = s
    -	as.p = &parser{r: s, recvBufferPool: ac.dopts.recvBufferPool}
    +	as.p = &parser{r: s, bufferPool: ac.dopts.copts.BufferPool}
     	ac.incrCallsStarted()
     	if desc != unaryStreamDesc {
     		// Listen on stream context to cleanup when the stream context is
    @@ -1302,7 +1335,7 @@ func newNonRetryClientStream(ctx context.Context, desc *StreamDesc, method strin
     }
     
     type addrConnStream struct {
    -	s         *transport.Stream
    +	s         *transport.ClientStream
     	ac        *addrConn
     	callHdr   *transport.CallHdr
     	cancel    context.CancelFunc
    @@ -1342,7 +1375,7 @@ func (as *addrConnStream) CloseSend() error {
     	}
     	as.sentLast = true
     
    -	as.t.Write(as.s, nil, nil, &transport.Options{Last: true})
    +	as.s.Write(nil, nil, &transport.WriteOptions{Last: true})
     	// Always return nil; io.EOF is the only error that might make sense
     	// instead, but there is no need to signal the client to call RecvMsg
     	// as the only use left for the stream after CloseSend is to call
    @@ -1373,17 +1406,26 @@ func (as *addrConnStream) SendMsg(m any) (err error) {
     	}
     
     	// load hdr, payload, data
    -	hdr, payld, _, err := prepareMsg(m, as.codec, as.cp, as.comp)
    +	hdr, data, payload, pf, err := prepareMsg(m, as.codec, as.cp, as.comp, as.ac.dopts.copts.BufferPool)
     	if err != nil {
     		return err
     	}
     
    +	defer func() {
    +		data.Free()
    +		// only free payload if compression was made, and therefore it is a different set
    +		// of buffers from data.
    +		if pf.isCompressed() {
    +			payload.Free()
    +		}
    +	}()
    +
     	// TODO(dfawley): should we be checking len(data) instead?
    -	if len(payld) > *as.callInfo.maxSendMessageSize {
    -		return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payld), *as.callInfo.maxSendMessageSize)
    +	if payload.Len() > *as.callInfo.maxSendMessageSize {
    +		return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", payload.Len(), *as.callInfo.maxSendMessageSize)
     	}
     
    -	if err := as.t.Write(as.s, hdr, payld, &transport.Options{Last: !as.desc.ClientStreams}); err != nil {
    +	if err := as.s.Write(hdr, payload, &transport.WriteOptions{Last: !as.desc.ClientStreams}); err != nil {
     		if !as.desc.ClientStreams {
     			// For non-client-streaming RPCs, we return nil instead of EOF on error
     			// because the generated code requires it.  finish is not called; RecvMsg()
    @@ -1393,9 +1435,6 @@ func (as *addrConnStream) SendMsg(m any) (err error) {
     		return io.EOF
     	}
     
    -	if channelz.IsOn() {
    -		as.t.IncrMsgSent()
    -	}
     	return nil
     }
     
    @@ -1423,8 +1462,7 @@ func (as *addrConnStream) RecvMsg(m any) (err error) {
     		// Only initialize this state once per stream.
     		as.decompSet = true
     	}
    -	err = recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp)
    -	if err != nil {
    +	if err := recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp, false); err != nil {
     		if err == io.EOF {
     			if statusErr := as.s.Status().Err(); statusErr != nil {
     				return statusErr
    @@ -1434,9 +1472,6 @@ func (as *addrConnStream) RecvMsg(m any) (err error) {
     		return toRPCErr(err)
     	}
     
    -	if channelz.IsOn() {
    -		as.t.IncrMsgRecv()
    -	}
     	if as.desc.ServerStreams {
     		// Subsequent messages should be received by subsequent RecvMsg calls.
     		return nil
    @@ -1444,14 +1479,12 @@ func (as *addrConnStream) RecvMsg(m any) (err error) {
     
     	// Special handling for non-server-stream rpcs.
     	// This recv expects EOF or errors, so we don't collect inPayload.
    -	err = recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp)
    -	if err == nil {
    -		return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want "))
    -	}
    -	if err == io.EOF {
    +	if err := recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp, false); err == io.EOF {
     		return as.s.Status().Err() // non-server streaming Recv returns nil on success
    +	} else if err != nil {
    +		return toRPCErr(err)
     	}
    -	return toRPCErr(err)
    +	return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want "))
     }
     
     func (as *addrConnStream) finish(err error) {
    @@ -1466,7 +1499,7 @@ func (as *addrConnStream) finish(err error) {
     		err = nil
     	}
     	if as.s != nil {
    -		as.t.CloseStream(as.s, err)
    +		as.s.Close(err)
     	}
     
     	if err != nil {
    @@ -1533,8 +1566,7 @@ type ServerStream interface {
     // serverStream implements a server side Stream.
     type serverStream struct {
     	ctx   context.Context
    -	t     transport.ServerTransport
    -	s     *transport.Stream
    +	s     *transport.ServerStream
     	p     *parser
     	codec baseCodec
     
    @@ -1584,7 +1616,7 @@ func (ss *serverStream) SendHeader(md metadata.MD) error {
     		return status.Error(codes.Internal, err.Error())
     	}
     
    -	err = ss.t.WriteHeader(ss.s, md)
    +	err = ss.s.SendHeader(md)
     	if len(ss.binlogs) != 0 && !ss.serverHeaderBinlogged {
     		h, _ := ss.s.Header()
     		sh := &binarylog.ServerHeader{
    @@ -1624,7 +1656,7 @@ func (ss *serverStream) SendMsg(m any) (err error) {
     		}
     		if err != nil && err != io.EOF {
     			st, _ := status.FromError(toRPCErr(err))
    -			ss.t.WriteStatus(ss.s, st)
    +			ss.s.WriteStatus(st)
     			// Non-user specified status was sent out. This should be an error
     			// case (as a server side Cancel maybe).
     			//
    @@ -1632,9 +1664,6 @@ func (ss *serverStream) SendMsg(m any) (err error) {
     			// status from the service handler, we will log that error instead.
     			// This behavior is similar to an interceptor.
     		}
    -		if channelz.IsOn() && err == nil {
    -			ss.t.IncrMsgSent()
    -		}
     	}()
     
     	// Server handler could have set new compressor by calling SetSendCompressor.
    @@ -1645,18 +1674,31 @@ func (ss *serverStream) SendMsg(m any) (err error) {
     	}
     
     	// load hdr, payload, data
    -	hdr, payload, data, err := prepareMsg(m, ss.codec, ss.cp, ss.comp)
    +	hdr, data, payload, pf, err := prepareMsg(m, ss.codec, ss.cp, ss.comp, ss.p.bufferPool)
     	if err != nil {
     		return err
     	}
     
    +	defer func() {
    +		data.Free()
    +		// only free payload if compression was made, and therefore it is a different set
    +		// of buffers from data.
    +		if pf.isCompressed() {
    +			payload.Free()
    +		}
    +	}()
    +
    +	dataLen := data.Len()
    +	payloadLen := payload.Len()
    +
     	// TODO(dfawley): should we be checking len(data) instead?
    -	if len(payload) > ss.maxSendMessageSize {
    -		return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payload), ss.maxSendMessageSize)
    +	if payloadLen > ss.maxSendMessageSize {
    +		return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", payloadLen, ss.maxSendMessageSize)
     	}
    -	if err := ss.t.Write(ss.s, hdr, payload, &transport.Options{Last: false}); err != nil {
    +	if err := ss.s.Write(hdr, payload, &transport.WriteOptions{Last: false}); err != nil {
     		return toRPCErr(err)
     	}
    +
     	if len(ss.binlogs) != 0 {
     		if !ss.serverHeaderBinlogged {
     			h, _ := ss.s.Header()
    @@ -1669,7 +1711,7 @@ func (ss *serverStream) SendMsg(m any) (err error) {
     			}
     		}
     		sm := &binarylog.ServerMessage{
    -			Message: data,
    +			Message: data.Materialize(),
     		}
     		for _, binlog := range ss.binlogs {
     			binlog.Log(ss.ctx, sm)
    @@ -1677,7 +1719,7 @@ func (ss *serverStream) SendMsg(m any) (err error) {
     	}
     	if len(ss.statsHandler) != 0 {
     		for _, sh := range ss.statsHandler {
    -			sh.HandleRPC(ss.s.Context(), outPayload(false, m, data, payload, time.Now()))
    +			sh.HandleRPC(ss.s.Context(), outPayload(false, m, dataLen, payloadLen, time.Now()))
     		}
     	}
     	return nil
    @@ -1699,7 +1741,7 @@ func (ss *serverStream) RecvMsg(m any) (err error) {
     		}
     		if err != nil && err != io.EOF {
     			st, _ := status.FromError(toRPCErr(err))
    -			ss.t.WriteStatus(ss.s, st)
    +			ss.s.WriteStatus(st)
     			// Non-user specified status was sent out. This should be an error
     			// case (as a server side Cancel maybe).
     			//
    @@ -1707,15 +1749,13 @@ func (ss *serverStream) RecvMsg(m any) (err error) {
     			// status from the service handler, we will log that error instead.
     			// This behavior is similar to an interceptor.
     		}
    -		if channelz.IsOn() && err == nil {
    -			ss.t.IncrMsgRecv()
    -		}
     	}()
     	var payInfo *payloadInfo
     	if len(ss.statsHandler) != 0 || len(ss.binlogs) != 0 {
     		payInfo = &payloadInfo{}
    +		defer payInfo.free()
     	}
    -	if err := recv(ss.p, ss.codec, ss.s, ss.dc, m, ss.maxReceiveMessageSize, payInfo, ss.decomp); err != nil {
    +	if err := recv(ss.p, ss.codec, ss.s, ss.dc, m, ss.maxReceiveMessageSize, payInfo, ss.decomp, true); err != nil {
     		if err == io.EOF {
     			if len(ss.binlogs) != 0 {
     				chc := &binarylog.ClientHalfClose{}
    @@ -1733,11 +1773,9 @@ func (ss *serverStream) RecvMsg(m any) (err error) {
     	if len(ss.statsHandler) != 0 {
     		for _, sh := range ss.statsHandler {
     			sh.HandleRPC(ss.s.Context(), &stats.InPayload{
    -				RecvTime: time.Now(),
    -				Payload:  m,
    -				// TODO truncate large payload.
    -				Data:             payInfo.uncompressedBytes,
    -				Length:           len(payInfo.uncompressedBytes),
    +				RecvTime:         time.Now(),
    +				Payload:          m,
    +				Length:           payInfo.uncompressedBytes.Len(),
     				WireLength:       payInfo.compressedLength + headerLen,
     				CompressedLength: payInfo.compressedLength,
     			})
    @@ -1745,7 +1783,7 @@ func (ss *serverStream) RecvMsg(m any) (err error) {
     	}
     	if len(ss.binlogs) != 0 {
     		cm := &binarylog.ClientMessage{
    -			Message: payInfo.uncompressedBytes,
    +			Message: payInfo.uncompressedBytes.Materialize(),
     		}
     		for _, binlog := range ss.binlogs {
     			binlog.Log(ss.ctx, cm)
    @@ -1760,23 +1798,26 @@ func MethodFromServerStream(stream ServerStream) (string, bool) {
     	return Method(stream.Context())
     }
     
    -// prepareMsg returns the hdr, payload and data
    -// using the compressors passed or using the
    -// passed preparedmsg
    -func prepareMsg(m any, codec baseCodec, cp Compressor, comp encoding.Compressor) (hdr, payload, data []byte, err error) {
    +// prepareMsg returns the hdr, payload and data using the compressors passed or
    +// using the passed preparedmsg. The returned boolean indicates whether
    +// compression was made and therefore whether the payload needs to be freed in
    +// addition to the returned data. Freeing the payload if the returned boolean is
    +// false can lead to undefined behavior.
    +func prepareMsg(m any, codec baseCodec, cp Compressor, comp encoding.Compressor, pool mem.BufferPool) (hdr []byte, data, payload mem.BufferSlice, pf payloadFormat, err error) {
     	if preparedMsg, ok := m.(*PreparedMsg); ok {
    -		return preparedMsg.hdr, preparedMsg.payload, preparedMsg.encodedData, nil
    +		return preparedMsg.hdr, preparedMsg.encodedData, preparedMsg.payload, preparedMsg.pf, nil
     	}
     	// The input interface is not a prepared msg.
     	// Marshal and Compress the data at this point
     	data, err = encode(codec, m)
     	if err != nil {
    -		return nil, nil, nil, err
    +		return nil, nil, nil, 0, err
     	}
    -	compData, err := compress(data, cp, comp)
    +	compData, pf, err := compress(data, cp, comp, pool)
     	if err != nil {
    -		return nil, nil, nil, err
    +		data.Free()
    +		return nil, nil, nil, 0, err
     	}
    -	hdr, payload = msgHeader(data, compData)
    -	return hdr, payload, data, nil
    +	hdr, payload = msgHeader(data, compData, pf)
    +	return hdr, data, payload, pf, nil
     }
    diff --git a/vendor/google.golang.org/grpc/stream_interfaces.go b/vendor/google.golang.org/grpc/stream_interfaces.go
    index 8b813529c0cc..0037fee0bd71 100644
    --- a/vendor/google.golang.org/grpc/stream_interfaces.go
    +++ b/vendor/google.golang.org/grpc/stream_interfaces.go
    @@ -22,15 +22,35 @@ package grpc
     // request, many responses) RPC. It is generic over the type of the response
     // message. It is used in generated code.
     type ServerStreamingClient[Res any] interface {
    +	// Recv receives the next response message from the server. The client may
    +	// repeatedly call Recv to read messages from the response stream.  If
    +	// io.EOF is returned, the stream has terminated with an OK status.  Any
    +	// other error is compatible with the status package and indicates the
    +	// RPC's status code and message.
     	Recv() (*Res, error)
    +
    +	// ClientStream is embedded to provide Context, Header, and Trailer
    +	// functionality.  No other methods in the ClientStream should be called
    +	// directly.
     	ClientStream
     }
     
     // ServerStreamingServer represents the server side of a server-streaming (one
     // request, many responses) RPC. It is generic over the type of the response
     // message. It is used in generated code.
    +//
    +// To terminate the response stream, return from the handler method and return
    +// an error from the status package, or use nil to indicate an OK status code.
     type ServerStreamingServer[Res any] interface {
    +	// Send sends a response message to the client.  The server handler may
    +	// call Send multiple times to send multiple messages to the client.  An
    +	// error is returned if the stream was terminated unexpectedly, and the
    +	// handler method should return, as the stream is no longer usable.
     	Send(*Res) error
    +
    +	// ServerStream is embedded to provide Context, SetHeader, SendHeader, and
    +	// SetTrailer functionality.  No other methods in the ServerStream should
    +	// be called directly.
     	ServerStream
     }
     
    @@ -39,8 +59,22 @@ type ServerStreamingServer[Res any] interface {
     // message stream and the type of the unary response message. It is used in
     // generated code.
     type ClientStreamingClient[Req any, Res any] interface {
    +	// Send sends a request message to the server.  The client may call Send
    +	// multiple times to send multiple messages to the server.  On error, Send
    +	// aborts the stream.  If the error was generated by the client, the status
    +	// is returned directly.  Otherwise, io.EOF is returned, and the status of
    +	// the stream may be discovered using CloseAndRecv().
     	Send(*Req) error
    +
    +	// CloseAndRecv closes the request stream and waits for the server's
    +	// response.  This method must be called once and only once after sending
    +	// all request messages.  Any error returned is implemented by the status
    +	// package.
     	CloseAndRecv() (*Res, error)
    +
    +	// ClientStream is embedded to provide Context, Header, and Trailer
    +	// functionality.  No other methods in the ClientStream should be called
    +	// directly.
     	ClientStream
     }
     
    @@ -48,9 +82,28 @@ type ClientStreamingClient[Req any, Res any] interface {
     // requests, one response) RPC. It is generic over both the type of the request
     // message stream and the type of the unary response message. It is used in
     // generated code.
    +//
    +// To terminate the RPC, call SendAndClose and return nil from the method
    +// handler or do not call SendAndClose and return an error from the status
    +// package.
     type ClientStreamingServer[Req any, Res any] interface {
    +	// Recv receives the next request message from the client.  The server may
    +	// repeatedly call Recv to read messages from the request stream.  If
    +	// io.EOF is returned, it indicates the client called CloseAndRecv on its
    +	// ClientStreamingClient.  Any other error indicates the stream was
    +	// terminated unexpectedly, and the handler method should return, as the
    +	// stream is no longer usable.
     	Recv() (*Req, error)
    +
    +	// SendAndClose sends a single response message to the client and closes
    +	// the stream.  This method must be called once and only once after all
    +	// request messages have been processed.  Recv should not be called after
    +	// calling SendAndClose.
     	SendAndClose(*Res) error
    +
    +	// ServerStream is embedded to provide Context, SetHeader, SendHeader, and
    +	// SetTrailer functionality.  No other methods in the ServerStream should
    +	// be called directly.
     	ServerStream
     }
     
    @@ -59,8 +112,23 @@ type ClientStreamingServer[Req any, Res any] interface {
     // request message stream and the type of the response message stream. It is
     // used in generated code.
     type BidiStreamingClient[Req any, Res any] interface {
    +	// Send sends a request message to the server.  The client may call Send
    +	// multiple times to send multiple messages to the server.  On error, Send
    +	// aborts the stream.  If the error was generated by the client, the status
    +	// is returned directly.  Otherwise, io.EOF is returned, and the status of
    +	// the stream may be discovered using Recv().
     	Send(*Req) error
    +
    +	// Recv receives the next response message from the server. The client may
    +	// repeatedly call Recv to read messages from the response stream.  If
    +	// io.EOF is returned, the stream has terminated with an OK status.  Any
    +	// other error is compatible with the status package and indicates the
    +	// RPC's status code and message.
     	Recv() (*Res, error)
    +
    +	// ClientStream is embedded to provide Context, Header, Trailer, and
    +	// CloseSend functionality.  No other methods in the ClientStream should be
    +	// called directly.
     	ClientStream
     }
     
    @@ -68,9 +136,27 @@ type BidiStreamingClient[Req any, Res any] interface {
     // (many requests, many responses) RPC. It is generic over both the type of the
     // request message stream and the type of the response message stream. It is
     // used in generated code.
    +//
    +// To terminate the stream, return from the handler method and return
    +// an error from the status package, or use nil to indicate an OK status code.
     type BidiStreamingServer[Req any, Res any] interface {
    +	// Recv receives the next request message from the client.  The server may
    +	// repeatedly call Recv to read messages from the request stream.  If
    +	// io.EOF is returned, it indicates the client called CloseSend on its
    +	// BidiStreamingClient.  Any other error indicates the stream was
    +	// terminated unexpectedly, and the handler method should return, as the
    +	// stream is no longer usable.
     	Recv() (*Req, error)
    +
    +	// Send sends a response message to the client.  The server handler may
    +	// call Send multiple times to send multiple messages to the client.  An
    +	// error is returned if the stream was terminated unexpectedly, and the
    +	// handler method should return, as the stream is no longer usable.
     	Send(*Res) error
    +
    +	// ServerStream is embedded to provide Context, SetHeader, SendHeader, and
    +	// SetTrailer functionality.  No other methods in the ServerStream should
    +	// be called directly.
     	ServerStream
     }
     
    diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go
    index bafaef99be98..6cbe116f2479 100644
    --- a/vendor/google.golang.org/grpc/version.go
    +++ b/vendor/google.golang.org/grpc/version.go
    @@ -19,4 +19,4 @@
     package grpc
     
     // Version is the current grpc version.
    -const Version = "1.65.0"
    +const Version = "1.69.2"
    diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/decode.go b/vendor/google.golang.org/protobuf/encoding/protojson/decode.go
    index f47902371a64..cffdfda96193 100644
    --- a/vendor/google.golang.org/protobuf/encoding/protojson/decode.go
    +++ b/vendor/google.golang.org/protobuf/encoding/protojson/decode.go
    @@ -102,7 +102,7 @@ type decoder struct {
     }
     
     // newError returns an error object with position info.
    -func (d decoder) newError(pos int, f string, x ...interface{}) error {
    +func (d decoder) newError(pos int, f string, x ...any) error {
     	line, column := d.Position(pos)
     	head := fmt.Sprintf("(line %d:%d): ", line, column)
     	return errors.New(head+f, x...)
    @@ -114,7 +114,7 @@ func (d decoder) unexpectedTokenError(tok json.Token) error {
     }
     
     // syntaxError returns a syntax error for given position.
    -func (d decoder) syntaxError(pos int, f string, x ...interface{}) error {
    +func (d decoder) syntaxError(pos int, f string, x ...any) error {
     	line, column := d.Position(pos)
     	head := fmt.Sprintf("syntax error (line %d:%d): ", line, column)
     	return errors.New(head+f, x...)
    @@ -192,7 +192,7 @@ func (d decoder) unmarshalMessage(m protoreflect.Message, skipTypeURL bool) erro
     				fd = fieldDescs.ByTextName(name)
     			}
     		}
    -		if flags.ProtoLegacy {
    +		if flags.ProtoLegacyWeak {
     			if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() {
     				fd = nil // reset since the weak reference is not linked in
     			}
    @@ -351,7 +351,7 @@ func (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.
     		panic(fmt.Sprintf("unmarshalScalar: invalid scalar kind %v", kind))
     	}
     
    -	return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString())
    +	return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v field %v: %v", kind, fd.JSONName(), tok.RawString())
     }
     
     func unmarshalInt(tok json.Token, bitSize int) (protoreflect.Value, bool) {
    diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/encode.go b/vendor/google.golang.org/protobuf/encoding/protojson/encode.go
    index 29846df222c3..0e72d85378b3 100644
    --- a/vendor/google.golang.org/protobuf/encoding/protojson/encode.go
    +++ b/vendor/google.golang.org/protobuf/encoding/protojson/encode.go
    @@ -216,9 +216,7 @@ func (m unpopulatedFieldRanger) Range(f func(protoreflect.FieldDescriptor, proto
     		}
     
     		v := m.Get(fd)
    -		isProto2Scalar := fd.Syntax() == protoreflect.Proto2 && fd.Default().IsValid()
    -		isSingularMessage := fd.Cardinality() != protoreflect.Repeated && fd.Message() != nil
    -		if isProto2Scalar || isSingularMessage {
    +		if fd.HasPresence() {
     			if m.skipNull {
     				continue
     			}
    diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go b/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go
    index 4b177c8206f6..e9fe1039437a 100644
    --- a/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go
    +++ b/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go
    @@ -348,7 +348,11 @@ func (d decoder) unmarshalAnyValue(unmarshal unmarshalFunc, m protoreflect.Messa
     		switch tok.Kind() {
     		case json.ObjectClose:
     			if !found {
    -				return d.newError(tok.Pos(), `missing "value" field`)
    +				// We tolerate an omitted `value` field with the google.protobuf.Empty Well-Known-Type,
    +				// for compatibility with other proto runtimes that have interpreted the spec differently.
    +				if m.Descriptor().FullName() != genid.Empty_message_fullname {
    +					return d.newError(tok.Pos(), `missing "value" field`)
    +				}
     			}
     			return nil
     
    diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go
    index a45f112bce30..d972a3d98ed1 100644
    --- a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go
    +++ b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go
    @@ -84,7 +84,7 @@ type decoder struct {
     }
     
     // newError returns an error object with position info.
    -func (d decoder) newError(pos int, f string, x ...interface{}) error {
    +func (d decoder) newError(pos int, f string, x ...any) error {
     	line, column := d.Position(pos)
     	head := fmt.Sprintf("(line %d:%d): ", line, column)
     	return errors.New(head+f, x...)
    @@ -96,7 +96,7 @@ func (d decoder) unexpectedTokenError(tok text.Token) error {
     }
     
     // syntaxError returns a syntax error for given position.
    -func (d decoder) syntaxError(pos int, f string, x ...interface{}) error {
    +func (d decoder) syntaxError(pos int, f string, x ...any) error {
     	line, column := d.Position(pos)
     	head := fmt.Sprintf("syntax error (line %d:%d): ", line, column)
     	return errors.New(head+f, x...)
    @@ -185,7 +185,7 @@ func (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) erro
     		} else if xtErr != nil && xtErr != protoregistry.NotFound {
     			return d.newError(tok.Pos(), "unable to resolve [%s]: %v", tok.RawString(), xtErr)
     		}
    -		if flags.ProtoLegacy {
    +		if flags.ProtoLegacyWeak {
     			if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() {
     				fd = nil // reset since the weak reference is not linked in
     			}
    diff --git a/vendor/google.golang.org/protobuf/internal/descopts/options.go b/vendor/google.golang.org/protobuf/internal/descopts/options.go
    index 8401be8c84fa..024ffebd3dde 100644
    --- a/vendor/google.golang.org/protobuf/internal/descopts/options.go
    +++ b/vendor/google.golang.org/protobuf/internal/descopts/options.go
    @@ -9,7 +9,7 @@
     // dependency on the descriptor proto package).
     package descopts
     
    -import pref "google.golang.org/protobuf/reflect/protoreflect"
    +import "google.golang.org/protobuf/reflect/protoreflect"
     
     // These variables are set by the init function in descriptor.pb.go via logic
     // in internal/filetype. In other words, so long as the descriptor proto package
    @@ -17,13 +17,13 @@ import pref "google.golang.org/protobuf/reflect/protoreflect"
     //
     // Each variable is populated with a nil pointer to the options struct.
     var (
    -	File           pref.ProtoMessage
    -	Enum           pref.ProtoMessage
    -	EnumValue      pref.ProtoMessage
    -	Message        pref.ProtoMessage
    -	Field          pref.ProtoMessage
    -	Oneof          pref.ProtoMessage
    -	ExtensionRange pref.ProtoMessage
    -	Service        pref.ProtoMessage
    -	Method         pref.ProtoMessage
    +	File           protoreflect.ProtoMessage
    +	Enum           protoreflect.ProtoMessage
    +	EnumValue      protoreflect.ProtoMessage
    +	Message        protoreflect.ProtoMessage
    +	Field          protoreflect.ProtoMessage
    +	Oneof          protoreflect.ProtoMessage
    +	ExtensionRange protoreflect.ProtoMessage
    +	Service        protoreflect.ProtoMessage
    +	Method         protoreflect.ProtoMessage
     )
    diff --git a/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb b/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb
    index ff6a38360add..5a57ef6f3c80 100644
    Binary files a/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb and b/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb differ
    diff --git a/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go b/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go
    index 029a6a12d742..bf1aba0e851b 100644
    --- a/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go
    +++ b/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go
    @@ -5,9 +5,14 @@
     // Package editionssupport defines constants for editions that are supported.
     package editionssupport
     
    -import descriptorpb "google.golang.org/protobuf/types/descriptorpb"
    +import "google.golang.org/protobuf/types/descriptorpb"
     
     const (
     	Minimum = descriptorpb.Edition_EDITION_PROTO2
     	Maximum = descriptorpb.Edition_EDITION_2023
    +
    +	// MaximumKnown is the maximum edition that is known to Go Protobuf, but not
    +	// declared as supported. In other words: end users cannot use it, but
    +	// testprotos inside Go Protobuf can.
    +	MaximumKnown = descriptorpb.Edition_EDITION_2024
     )
    diff --git a/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go b/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go
    index d2b3ac031e1e..ea1d3e65a575 100644
    --- a/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go
    +++ b/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go
    @@ -214,7 +214,7 @@ func (d *Decoder) parseNext() (Token, error) {
     
     // newSyntaxError returns an error with line and column information useful for
     // syntax errors.
    -func (d *Decoder) newSyntaxError(pos int, f string, x ...interface{}) error {
    +func (d *Decoder) newSyntaxError(pos int, f string, x ...any) error {
     	e := errors.New(f, x...)
     	line, column := d.Position(pos)
     	return errors.New("syntax error (line %d:%d): %v", line, column, e)
    diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go
    index 87853e786d0d..099b2bf451b5 100644
    --- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go
    +++ b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go
    @@ -601,7 +601,7 @@ func (d *Decoder) consumeToken(kind Kind, size int, attrs uint8) Token {
     
     // newSyntaxError returns a syntax error with line and column information for
     // current position.
    -func (d *Decoder) newSyntaxError(f string, x ...interface{}) error {
    +func (d *Decoder) newSyntaxError(f string, x ...any) error {
     	e := errors.New(f, x...)
     	line, column := d.Position(len(d.orig) - len(d.in))
     	return errors.New("syntax error (line %d:%d): %v", line, column, e)
    diff --git a/vendor/google.golang.org/protobuf/internal/errors/errors.go b/vendor/google.golang.org/protobuf/internal/errors/errors.go
    index d96719829c23..c2d6bd5265d3 100644
    --- a/vendor/google.golang.org/protobuf/internal/errors/errors.go
    +++ b/vendor/google.golang.org/protobuf/internal/errors/errors.go
    @@ -17,7 +17,7 @@ var Error = errors.New("protobuf error")
     
     // New formats a string according to the format specifier and arguments and
     // returns an error that has a "proto" prefix.
    -func New(f string, x ...interface{}) error {
    +func New(f string, x ...any) error {
     	return &prefixError{s: format(f, x...)}
     }
     
    @@ -43,7 +43,7 @@ func (e *prefixError) Unwrap() error {
     
     // Wrap returns an error that has a "proto" prefix, the formatted string described
     // by the format specifier and arguments, and a suffix of err. The error wraps err.
    -func Wrap(err error, f string, x ...interface{}) error {
    +func Wrap(err error, f string, x ...any) error {
     	return &wrapError{
     		s:   format(f, x...),
     		err: err,
    @@ -67,7 +67,7 @@ func (e *wrapError) Is(target error) bool {
     	return target == Error
     }
     
    -func format(f string, x ...interface{}) string {
    +func format(f string, x ...any) string {
     	// avoid "proto: " prefix when chaining
     	for i := 0; i < len(x); i++ {
     		switch e := x[i].(type) {
    diff --git a/vendor/google.golang.org/protobuf/internal/errors/is_go112.go b/vendor/google.golang.org/protobuf/internal/errors/is_go112.go
    deleted file mode 100644
    index fbcd349207dd..000000000000
    --- a/vendor/google.golang.org/protobuf/internal/errors/is_go112.go
    +++ /dev/null
    @@ -1,40 +0,0 @@
    -// Copyright 2020 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build !go1.13
    -// +build !go1.13
    -
    -package errors
    -
    -import "reflect"
    -
    -// Is is a copy of Go 1.13's errors.Is for use with older Go versions.
    -func Is(err, target error) bool {
    -	if target == nil {
    -		return err == target
    -	}
    -
    -	isComparable := reflect.TypeOf(target).Comparable()
    -	for {
    -		if isComparable && err == target {
    -			return true
    -		}
    -		if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) {
    -			return true
    -		}
    -		if err = unwrap(err); err == nil {
    -			return false
    -		}
    -	}
    -}
    -
    -func unwrap(err error) error {
    -	u, ok := err.(interface {
    -		Unwrap() error
    -	})
    -	if !ok {
    -		return nil
    -	}
    -	return u.Unwrap()
    -}
    diff --git a/vendor/google.golang.org/protobuf/internal/errors/is_go113.go b/vendor/google.golang.org/protobuf/internal/errors/is_go113.go
    deleted file mode 100644
    index 5e72f1cde9e1..000000000000
    --- a/vendor/google.golang.org/protobuf/internal/errors/is_go113.go
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -// Copyright 2020 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build go1.13
    -// +build go1.13
    -
    -package errors
    -
    -import "errors"
    -
    -// Is is errors.Is.
    -func Is(err, target error) bool { return errors.Is(err, target) }
    diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go
    index ece53bea3288..378b826faa6a 100644
    --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go
    +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go
    @@ -32,6 +32,7 @@ const (
     	EditionProto2      Edition = 998
     	EditionProto3      Edition = 999
     	Edition2023        Edition = 1000
    +	Edition2024        Edition = 1001
     	EditionUnsupported Edition = 100000
     )
     
    @@ -77,31 +78,48 @@ type (
     		Locations SourceLocations
     	}
     
    +	// EditionFeatures is a frequently-instantiated struct, so please take care
    +	// to minimize padding when adding new fields to this struct (add them in
    +	// the right place/order).
     	EditionFeatures struct {
    +		// StripEnumPrefix determines if the plugin generates enum value
    +		// constants as-is, with their prefix stripped, or both variants.
    +		StripEnumPrefix int
    +
     		// IsFieldPresence is true if field_presence is EXPLICIT
     		// https://protobuf.dev/editions/features/#field_presence
     		IsFieldPresence bool
    +
     		// IsFieldPresence is true if field_presence is LEGACY_REQUIRED
     		// https://protobuf.dev/editions/features/#field_presence
     		IsLegacyRequired bool
    +
     		// IsOpenEnum is true if enum_type is OPEN
     		// https://protobuf.dev/editions/features/#enum_type
     		IsOpenEnum bool
    +
     		// IsPacked is true if repeated_field_encoding is PACKED
     		// https://protobuf.dev/editions/features/#repeated_field_encoding
     		IsPacked bool
    +
     		// IsUTF8Validated is true if utf_validation is VERIFY
     		// https://protobuf.dev/editions/features/#utf8_validation
     		IsUTF8Validated bool
    +
     		// IsDelimitedEncoded is true if message_encoding is DELIMITED
     		// https://protobuf.dev/editions/features/#message_encoding
     		IsDelimitedEncoded bool
    +
     		// IsJSONCompliant is true if json_format is ALLOW
     		// https://protobuf.dev/editions/features/#json_format
     		IsJSONCompliant bool
    +
     		// GenerateLegacyUnmarshalJSON determines if the plugin generates the
     		// UnmarshalJSON([]byte) error method for enums.
     		GenerateLegacyUnmarshalJSON bool
    +		// APILevel controls which API (Open, Hybrid or Opaque) should be used
    +		// for generated code (.pb.go files).
    +		APILevel int
     	}
     )
     
    @@ -258,6 +276,7 @@ type (
     		StringName       stringName
     		IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto
     		IsWeak           bool // promoted from google.protobuf.FieldOptions
    +		IsLazy           bool // promoted from google.protobuf.FieldOptions
     		Default          defaultValue
     		ContainingOneof  protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields
     		Enum             protoreflect.EnumDescriptor
    @@ -351,6 +370,7 @@ func (fd *Field) IsPacked() bool {
     }
     func (fd *Field) IsExtension() bool { return false }
     func (fd *Field) IsWeak() bool      { return fd.L1.IsWeak }
    +func (fd *Field) IsLazy() bool      { return fd.L1.IsLazy }
     func (fd *Field) IsList() bool      { return fd.Cardinality() == protoreflect.Repeated && !fd.IsMap() }
     func (fd *Field) IsMap() bool       { return fd.Message() != nil && fd.Message().IsMapEntry() }
     func (fd *Field) MapKey() protoreflect.FieldDescriptor {
    @@ -383,6 +403,10 @@ func (fd *Field) Message() protoreflect.MessageDescriptor {
     	}
     	return fd.L1.Message
     }
    +func (fd *Field) IsMapEntry() bool {
    +	parent, ok := fd.L0.Parent.(protoreflect.MessageDescriptor)
    +	return ok && parent.IsMapEntry()
    +}
     func (fd *Field) Format(s fmt.State, r rune)             { descfmt.FormatDesc(s, r, fd) }
     func (fd *Field) ProtoType(protoreflect.FieldDescriptor) {}
     
    @@ -421,6 +445,7 @@ type (
     		Extendee        protoreflect.MessageDescriptor
     		Cardinality     protoreflect.Cardinality
     		Kind            protoreflect.Kind
    +		IsLazy          bool
     		EditionFeatures EditionFeatures
     	}
     	ExtensionL2 struct {
    @@ -461,6 +486,7 @@ func (xd *Extension) IsPacked() bool {
     }
     func (xd *Extension) IsExtension() bool                      { return true }
     func (xd *Extension) IsWeak() bool                           { return false }
    +func (xd *Extension) IsLazy() bool                           { return xd.L1.IsLazy }
     func (xd *Extension) IsList() bool                           { return xd.Cardinality() == protoreflect.Repeated }
     func (xd *Extension) IsMap() bool                            { return false }
     func (xd *Extension) MapKey() protoreflect.FieldDescriptor   { return nil }
    diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go
    index 3bc3b1cdf807..d2f549497eb7 100644
    --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go
    +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go
    @@ -495,6 +495,8 @@ func (xd *Extension) unmarshalOptions(b []byte) {
     			switch num {
     			case genid.FieldOptions_Packed_field_number:
     				xd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v)
    +			case genid.FieldOptions_Lazy_field_number:
    +				xd.L1.IsLazy = protowire.DecodeBool(v)
     			}
     		case protowire.BytesType:
     			v, m := protowire.ConsumeBytes(b)
    @@ -534,7 +536,7 @@ func (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protor
     }
     
     var nameBuilderPool = sync.Pool{
    -	New: func() interface{} { return new(strs.Builder) },
    +	New: func() any { return new(strs.Builder) },
     }
     
     func getBuilder() *strs.Builder {
    diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go
    index 570181eb4874..67a51b327c5c 100644
    --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go
    +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go
    @@ -45,6 +45,11 @@ func (file *File) resolveMessages() {
     			case protoreflect.MessageKind, protoreflect.GroupKind:
     				fd.L1.Message = file.resolveMessageDependency(fd.L1.Message, listFieldDeps, depIdx)
     				depIdx++
    +				if fd.L1.Kind == protoreflect.GroupKind && (fd.IsMap() || fd.IsMapEntry()) {
    +					// A map field might inherit delimited encoding from a file-wide default feature.
    +					// But maps never actually use delimited encoding. (At least for now...)
    +					fd.L1.Kind = protoreflect.MessageKind
    +				}
     			}
     
     			// Default is resolved here since it depends on Enum being resolved.
    @@ -499,6 +504,8 @@ func (fd *Field) unmarshalOptions(b []byte) {
     				fd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v)
     			case genid.FieldOptions_Weak_field_number:
     				fd.L1.IsWeak = protowire.DecodeBool(v)
    +			case genid.FieldOptions_Lazy_field_number:
    +				fd.L1.IsLazy = protowire.DecodeBool(v)
     			case FieldOptions_EnforceUTF8:
     				fd.L1.EditionFeatures.IsUTF8Validated = protowire.DecodeBool(v)
     			}
    diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go
    index 11f5f356b660..10132c9b3847 100644
    --- a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go
    +++ b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go
    @@ -32,6 +32,14 @@ func unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures {
     			v, m := protowire.ConsumeVarint(b)
     			b = b[m:]
     			parent.GenerateLegacyUnmarshalJSON = protowire.DecodeBool(v)
    +		case genid.GoFeatures_ApiLevel_field_number:
    +			v, m := protowire.ConsumeVarint(b)
    +			b = b[m:]
    +			parent.APILevel = int(v)
    +		case genid.GoFeatures_StripEnumPrefix_field_number:
    +			v, m := protowire.ConsumeVarint(b)
    +			b = b[m:]
    +			parent.StripEnumPrefix = int(v)
     		default:
     			panic(fmt.Sprintf("unkown field number %d while unmarshalling GoFeatures", num))
     		}
    @@ -68,7 +76,7 @@ func unmarshalFeatureSet(b []byte, parent EditionFeatures) EditionFeatures {
     			v, m := protowire.ConsumeBytes(b)
     			b = b[m:]
     			switch num {
    -			case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number:
    +			case genid.FeatureSet_Go_ext_number:
     				parent = unmarshalGoFeature(v, parent)
     			}
     		}
    diff --git a/vendor/google.golang.org/protobuf/internal/filetype/build.go b/vendor/google.golang.org/protobuf/internal/filetype/build.go
    index f0e38c4ef4e0..ba83fea44c3e 100644
    --- a/vendor/google.golang.org/protobuf/internal/filetype/build.go
    +++ b/vendor/google.golang.org/protobuf/internal/filetype/build.go
    @@ -68,7 +68,7 @@ type Builder struct {
     	// and for input and output messages referenced by service methods.
     	// Dependencies must come after declarations, but the ordering of
     	// dependencies themselves is unspecified.
    -	GoTypes []interface{}
    +	GoTypes []any
     
     	// DependencyIndexes is an ordered list of indexes into GoTypes for the
     	// dependencies of messages, extensions, or services.
    @@ -268,7 +268,7 @@ func (x depIdxs) Get(i, j int32) int32 {
     
     type (
     	resolverByIndex struct {
    -		goTypes []interface{}
    +		goTypes []any
     		depIdxs depIdxs
     		fileRegistry
     	}
    diff --git a/vendor/google.golang.org/protobuf/internal/flags/flags.go b/vendor/google.golang.org/protobuf/internal/flags/flags.go
    index 58372dd34850..5cb3ee70f91b 100644
    --- a/vendor/google.golang.org/protobuf/internal/flags/flags.go
    +++ b/vendor/google.golang.org/protobuf/internal/flags/flags.go
    @@ -22,3 +22,8 @@ const ProtoLegacy = protoLegacy
     // extension fields at unmarshal time, but defers creating the message
     // structure until the extension is first accessed.
     const LazyUnmarshalExtensions = ProtoLegacy
    +
    +// ProtoLegacyWeak specifies whether to enable support for weak fields.
    +// This flag was split out of ProtoLegacy in preparation for removing
    +// support for weak fields (independent of the other protolegacy features).
    +const ProtoLegacyWeak = ProtoLegacy
    diff --git a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go
    index 1447a11987bc..f30ab6b586fe 100644
    --- a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go
    +++ b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go
    @@ -860,11 +860,13 @@ const (
     	EnumValueOptions_Deprecated_field_name          protoreflect.Name = "deprecated"
     	EnumValueOptions_Features_field_name            protoreflect.Name = "features"
     	EnumValueOptions_DebugRedact_field_name         protoreflect.Name = "debug_redact"
    +	EnumValueOptions_FeatureSupport_field_name      protoreflect.Name = "feature_support"
     	EnumValueOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option"
     
     	EnumValueOptions_Deprecated_field_fullname          protoreflect.FullName = "google.protobuf.EnumValueOptions.deprecated"
     	EnumValueOptions_Features_field_fullname            protoreflect.FullName = "google.protobuf.EnumValueOptions.features"
     	EnumValueOptions_DebugRedact_field_fullname         protoreflect.FullName = "google.protobuf.EnumValueOptions.debug_redact"
    +	EnumValueOptions_FeatureSupport_field_fullname      protoreflect.FullName = "google.protobuf.EnumValueOptions.feature_support"
     	EnumValueOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.uninterpreted_option"
     )
     
    @@ -873,6 +875,7 @@ const (
     	EnumValueOptions_Deprecated_field_number          protoreflect.FieldNumber = 1
     	EnumValueOptions_Features_field_number            protoreflect.FieldNumber = 2
     	EnumValueOptions_DebugRedact_field_number         protoreflect.FieldNumber = 3
    +	EnumValueOptions_FeatureSupport_field_number      protoreflect.FieldNumber = 4
     	EnumValueOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999
     )
     
    diff --git a/vendor/google.golang.org/protobuf/internal/genid/doc.go b/vendor/google.golang.org/protobuf/internal/genid/doc.go
    index 45ccd01211ce..d9b9d916a20e 100644
    --- a/vendor/google.golang.org/protobuf/internal/genid/doc.go
    +++ b/vendor/google.golang.org/protobuf/internal/genid/doc.go
    @@ -6,6 +6,6 @@
     // and the well-known types.
     package genid
     
    -import protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    +import "google.golang.org/protobuf/reflect/protoreflect"
     
     const GoogleProtobuf_package protoreflect.FullName = "google.protobuf"
    diff --git a/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go b/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go
    index 9a652a2b4242..f5ee7f5c2b7a 100644
    --- a/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go
    +++ b/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go
    @@ -12,20 +12,59 @@ import (
     
     const File_google_protobuf_go_features_proto = "google/protobuf/go_features.proto"
     
    -// Names for google.protobuf.GoFeatures.
    +// Names for pb.GoFeatures.
     const (
     	GoFeatures_message_name     protoreflect.Name     = "GoFeatures"
    -	GoFeatures_message_fullname protoreflect.FullName = "google.protobuf.GoFeatures"
    +	GoFeatures_message_fullname protoreflect.FullName = "pb.GoFeatures"
     )
     
    -// Field names for google.protobuf.GoFeatures.
    +// Field names for pb.GoFeatures.
     const (
     	GoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = "legacy_unmarshal_json_enum"
    +	GoFeatures_ApiLevel_field_name                protoreflect.Name = "api_level"
    +	GoFeatures_StripEnumPrefix_field_name         protoreflect.Name = "strip_enum_prefix"
     
    -	GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "google.protobuf.GoFeatures.legacy_unmarshal_json_enum"
    +	GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "pb.GoFeatures.legacy_unmarshal_json_enum"
    +	GoFeatures_ApiLevel_field_fullname                protoreflect.FullName = "pb.GoFeatures.api_level"
    +	GoFeatures_StripEnumPrefix_field_fullname         protoreflect.FullName = "pb.GoFeatures.strip_enum_prefix"
     )
     
    -// Field numbers for google.protobuf.GoFeatures.
    +// Field numbers for pb.GoFeatures.
     const (
     	GoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1
    +	GoFeatures_ApiLevel_field_number                protoreflect.FieldNumber = 2
    +	GoFeatures_StripEnumPrefix_field_number         protoreflect.FieldNumber = 3
    +)
    +
    +// Full and short names for pb.GoFeatures.APILevel.
    +const (
    +	GoFeatures_APILevel_enum_fullname = "pb.GoFeatures.APILevel"
    +	GoFeatures_APILevel_enum_name     = "APILevel"
    +)
    +
    +// Enum values for pb.GoFeatures.APILevel.
    +const (
    +	GoFeatures_API_LEVEL_UNSPECIFIED_enum_value = 0
    +	GoFeatures_API_OPEN_enum_value              = 1
    +	GoFeatures_API_HYBRID_enum_value            = 2
    +	GoFeatures_API_OPAQUE_enum_value            = 3
    +)
    +
    +// Full and short names for pb.GoFeatures.StripEnumPrefix.
    +const (
    +	GoFeatures_StripEnumPrefix_enum_fullname = "pb.GoFeatures.StripEnumPrefix"
    +	GoFeatures_StripEnumPrefix_enum_name     = "StripEnumPrefix"
    +)
    +
    +// Enum values for pb.GoFeatures.StripEnumPrefix.
    +const (
    +	GoFeatures_STRIP_ENUM_PREFIX_UNSPECIFIED_enum_value   = 0
    +	GoFeatures_STRIP_ENUM_PREFIX_KEEP_enum_value          = 1
    +	GoFeatures_STRIP_ENUM_PREFIX_GENERATE_BOTH_enum_value = 2
    +	GoFeatures_STRIP_ENUM_PREFIX_STRIP_enum_value         = 3
    +)
    +
    +// Extension numbers
    +const (
    +	FeatureSet_Go_ext_number protoreflect.FieldNumber = 1002
     )
    diff --git a/vendor/google.golang.org/protobuf/internal/genid/map_entry.go b/vendor/google.golang.org/protobuf/internal/genid/map_entry.go
    index 8f9ea02ff2a4..bef5a25fbbf0 100644
    --- a/vendor/google.golang.org/protobuf/internal/genid/map_entry.go
    +++ b/vendor/google.golang.org/protobuf/internal/genid/map_entry.go
    @@ -4,7 +4,7 @@
     
     package genid
     
    -import protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    +import "google.golang.org/protobuf/reflect/protoreflect"
     
     // Generic field names and numbers for synthetic map entry messages.
     const (
    diff --git a/vendor/golang.org/x/tools/internal/versions/toolchain_go120.go b/vendor/google.golang.org/protobuf/internal/genid/name.go
    similarity index 50%
    rename from vendor/golang.org/x/tools/internal/versions/toolchain_go120.go
    rename to vendor/google.golang.org/protobuf/internal/genid/name.go
    index 1a9efa126cdf..224f339302fd 100644
    --- a/vendor/golang.org/x/tools/internal/versions/toolchain_go120.go
    +++ b/vendor/google.golang.org/protobuf/internal/genid/name.go
    @@ -2,13 +2,11 @@
     // Use of this source code is governed by a BSD-style
     // license that can be found in the LICENSE file.
     
    -//go:build go1.20
    -// +build go1.20
    +package genid
     
    -package versions
    +const (
    +	NoUnkeyedLiteral_goname  = "noUnkeyedLiteral"
    +	NoUnkeyedLiteralA_goname = "XXX_NoUnkeyedLiteral"
     
    -func init() {
    -	if Compare(toolchain, Go1_20) < 0 {
    -		toolchain = Go1_20
    -	}
    -}
    +	BuilderSuffix_goname = "_builder"
    +)
    diff --git a/vendor/google.golang.org/protobuf/internal/genid/wrappers.go b/vendor/google.golang.org/protobuf/internal/genid/wrappers.go
    index 429384b85b02..9404270de0ba 100644
    --- a/vendor/google.golang.org/protobuf/internal/genid/wrappers.go
    +++ b/vendor/google.golang.org/protobuf/internal/genid/wrappers.go
    @@ -4,7 +4,7 @@
     
     package genid
     
    -import protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    +import "google.golang.org/protobuf/reflect/protoreflect"
     
     // Generic field name and number for messages in wrappers.proto.
     const (
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/api_export.go b/vendor/google.golang.org/protobuf/internal/impl/api_export.go
    index a371f98de143..5d5771c2ed56 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/api_export.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/api_export.go
    @@ -22,13 +22,13 @@ type Export struct{}
     
     // NewError formats a string according to the format specifier and arguments and
     // returns an error that has a "proto" prefix.
    -func (Export) NewError(f string, x ...interface{}) error {
    +func (Export) NewError(f string, x ...any) error {
     	return errors.New(f, x...)
     }
     
     // enum is any enum type generated by protoc-gen-go
     // and must be a named int32 type.
    -type enum = interface{}
    +type enum = any
     
     // EnumOf returns the protoreflect.Enum interface over e.
     // It returns nil if e is nil.
    @@ -81,7 +81,7 @@ func (Export) EnumStringOf(ed protoreflect.EnumDescriptor, n protoreflect.EnumNu
     
     // message is any message type generated by protoc-gen-go
     // and must be a pointer to a named struct type.
    -type message = interface{}
    +type message = any
     
     // legacyMessageWrapper wraps a v2 message as a v1 message.
     type legacyMessageWrapper struct{ m protoreflect.ProtoMessage }
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/api_export_opaque.go b/vendor/google.golang.org/protobuf/internal/impl/api_export_opaque.go
    new file mode 100644
    index 000000000000..6075d6f69678
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/api_export_opaque.go
    @@ -0,0 +1,128 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package impl
    +
    +import (
    +	"strconv"
    +	"sync/atomic"
    +	"unsafe"
    +
    +	"google.golang.org/protobuf/reflect/protoreflect"
    +)
    +
    +func (Export) UnmarshalField(msg any, fieldNum int32) {
    +	UnmarshalField(msg.(protoreflect.ProtoMessage).ProtoReflect(), protoreflect.FieldNumber(fieldNum))
    +}
    +
    +// Present checks the presence set for a certain field number (zero
    +// based, ordered by appearance in original proto file). part is
    +// a pointer to the correct element in the bitmask array, num is the
    +// field number unaltered.  Example (field number 70 -> part =
    +// &m.XXX_presence[1], num = 70)
    +func (Export) Present(part *uint32, num uint32) bool {
    +	// This hook will read an unprotected shadow presence set if
    +	// we're unning under the race detector
    +	raceDetectHookPresent(part, num)
    +	return atomic.LoadUint32(part)&(1<<(num%32)) > 0
    +}
    +
    +// SetPresent adds a field to the presence set. part is a pointer to
    +// the relevant element in the array and num is the field number
    +// unaltered.  size is the number of fields in the protocol
    +// buffer.
    +func (Export) SetPresent(part *uint32, num uint32, size uint32) {
    +	// This hook will mutate an unprotected shadow presence set if
    +	// we're running under the race detector
    +	raceDetectHookSetPresent(part, num, presenceSize(size))
    +	for {
    +		old := atomic.LoadUint32(part)
    +		if atomic.CompareAndSwapUint32(part, old, old|(1<<(num%32))) {
    +			return
    +		}
    +	}
    +}
    +
    +// SetPresentNonAtomic is like SetPresent, but operates non-atomically.
    +// It is meant for use by builder methods, where the message is known not
    +// to be accessible yet by other goroutines.
    +func (Export) SetPresentNonAtomic(part *uint32, num uint32, size uint32) {
    +	// This hook will mutate an unprotected shadow presence set if
    +	// we're running under the race detector
    +	raceDetectHookSetPresent(part, num, presenceSize(size))
    +	*part |= 1 << (num % 32)
    +}
    +
    +// ClearPresence removes a field from the presence set. part is a
    +// pointer to the relevant element in the presence array and num is
    +// the field number unaltered.
    +func (Export) ClearPresent(part *uint32, num uint32) {
    +	// This hook will mutate an unprotected shadow presence set if
    +	// we're running under the race detector
    +	raceDetectHookClearPresent(part, num)
    +	for {
    +		old := atomic.LoadUint32(part)
    +		if atomic.CompareAndSwapUint32(part, old, old&^(1<<(num%32))) {
    +			return
    +		}
    +	}
    +}
    +
    +// interfaceToPointer takes a pointer to an empty interface whose value is a
    +// pointer type, and converts it into a "pointer" that points to the same
    +// target
    +func interfaceToPointer(i *any) pointer {
    +	return pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}
    +}
    +
    +func (p pointer) atomicGetPointer() pointer {
    +	return pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}
    +}
    +
    +func (p pointer) atomicSetPointer(q pointer) {
    +	atomic.StorePointer((*unsafe.Pointer)(p.p), q.p)
    +}
    +
    +// AtomicCheckPointerIsNil takes an interface (which is a pointer to a
    +// pointer) and returns true if the pointed-to pointer is nil (using an
    +// atomic load).  This function is inlineable and, on x86, just becomes a
    +// simple load and compare.
    +func (Export) AtomicCheckPointerIsNil(ptr any) bool {
    +	return interfaceToPointer(&ptr).atomicGetPointer().IsNil()
    +}
    +
    +// AtomicSetPointer takes two interfaces (first is a pointer to a pointer,
    +// second is a pointer) and atomically sets the second pointer into location
    +// referenced by first pointer.  Unfortunately, atomicSetPointer() does not inline
    +// (even on x86), so this does not become a simple store on x86.
    +func (Export) AtomicSetPointer(dstPtr, valPtr any) {
    +	interfaceToPointer(&dstPtr).atomicSetPointer(interfaceToPointer(&valPtr))
    +}
    +
    +// AtomicLoadPointer loads the pointer at the location pointed at by src,
    +// and stores that pointer value into the location pointed at by dst.
    +func (Export) AtomicLoadPointer(ptr Pointer, dst Pointer) {
    +	*(*unsafe.Pointer)(unsafe.Pointer(dst)) = atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(ptr)))
    +}
    +
    +// AtomicInitializePointer makes ptr and dst point to the same value.
    +//
    +// If *ptr is a nil pointer, it sets *ptr = *dst.
    +//
    +// If *ptr is a non-nil pointer, it sets *dst = *ptr.
    +func (Export) AtomicInitializePointer(ptr Pointer, dst Pointer) {
    +	if !atomic.CompareAndSwapPointer((*unsafe.Pointer)(ptr), unsafe.Pointer(nil), *(*unsafe.Pointer)(dst)) {
    +		*(*unsafe.Pointer)(unsafe.Pointer(dst)) = atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(ptr)))
    +	}
    +}
    +
    +// MessageFieldStringOf returns the field formatted as a string,
    +// either as the field name if resolvable otherwise as a decimal string.
    +func (Export) MessageFieldStringOf(md protoreflect.MessageDescriptor, n protoreflect.FieldNumber) string {
    +	fd := md.Fields().ByNumber(n)
    +	if fd != nil {
    +		return string(fd.Name())
    +	}
    +	return strconv.Itoa(int(n))
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/bitmap.go b/vendor/google.golang.org/protobuf/internal/impl/bitmap.go
    new file mode 100644
    index 000000000000..ea276547cd67
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/bitmap.go
    @@ -0,0 +1,34 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +//go:build !race
    +
    +package impl
    +
    +// There is no additional data as we're not running under race detector.
    +type RaceDetectHookData struct{}
    +
    +// Empty stubs for when not using the race detector. Calls to these from index.go should be optimized away.
    +func (presence) raceDetectHookPresent(num uint32)                       {}
    +func (presence) raceDetectHookSetPresent(num uint32, size presenceSize) {}
    +func (presence) raceDetectHookClearPresent(num uint32)                  {}
    +func (presence) raceDetectHookAllocAndCopy(src presence)                {}
    +
    +// raceDetectHookPresent is called by the generated file interface
    +// (*proto.internalFuncs) Present to optionally read an unprotected
    +// shadow bitmap when race detection is enabled. In regular code it is
    +// a noop.
    +func raceDetectHookPresent(field *uint32, num uint32) {}
    +
    +// raceDetectHookSetPresent is called by the generated file interface
    +// (*proto.internalFuncs) SetPresent to optionally write an unprotected
    +// shadow bitmap when race detection is enabled. In regular code it is
    +// a noop.
    +func raceDetectHookSetPresent(field *uint32, num uint32, size presenceSize) {}
    +
    +// raceDetectHookClearPresent is called by the generated file interface
    +// (*proto.internalFuncs) ClearPresent to optionally write an unprotected
    +// shadow bitmap when race detection is enabled. In regular code it is
    +// a noop.
    +func raceDetectHookClearPresent(field *uint32, num uint32) {}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/bitmap_race.go b/vendor/google.golang.org/protobuf/internal/impl/bitmap_race.go
    new file mode 100644
    index 000000000000..e9a27583aebf
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/bitmap_race.go
    @@ -0,0 +1,126 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +//go:build race
    +
    +package impl
    +
    +// When running under race detector, we add a presence map of bytes, that we can access
    +// in the hook functions so that we trigger the race detection whenever we have concurrent
    +// Read-Writes or Write-Writes. The race detector does not otherwise detect invalid concurrent
    +// access to lazy fields as all updates of bitmaps and pointers are done using atomic operations.
    +type RaceDetectHookData struct {
    +	shadowPresence *[]byte
    +}
    +
    +// Hooks for presence bitmap operations that allocate, read and write the shadowPresence
    +// using non-atomic operations.
    +func (data *RaceDetectHookData) raceDetectHookAlloc(size presenceSize) {
    +	sp := make([]byte, size)
    +	atomicStoreShadowPresence(&data.shadowPresence, &sp)
    +}
    +
    +func (p presence) raceDetectHookPresent(num uint32) {
    +	data := p.toRaceDetectData()
    +	if data == nil {
    +		return
    +	}
    +	sp := atomicLoadShadowPresence(&data.shadowPresence)
    +	if sp != nil {
    +		_ = (*sp)[num]
    +	}
    +}
    +
    +func (p presence) raceDetectHookSetPresent(num uint32, size presenceSize) {
    +	data := p.toRaceDetectData()
    +	if data == nil {
    +		return
    +	}
    +	sp := atomicLoadShadowPresence(&data.shadowPresence)
    +	if sp == nil {
    +		data.raceDetectHookAlloc(size)
    +		sp = atomicLoadShadowPresence(&data.shadowPresence)
    +	}
    +	(*sp)[num] = 1
    +}
    +
    +func (p presence) raceDetectHookClearPresent(num uint32) {
    +	data := p.toRaceDetectData()
    +	if data == nil {
    +		return
    +	}
    +	sp := atomicLoadShadowPresence(&data.shadowPresence)
    +	if sp != nil {
    +		(*sp)[num] = 0
    +
    +	}
    +}
    +
    +// raceDetectHookAllocAndCopy allocates a new shadowPresence slice at lazy and copies
    +// shadowPresence bytes from src to lazy.
    +func (p presence) raceDetectHookAllocAndCopy(q presence) {
    +	sData := q.toRaceDetectData()
    +	dData := p.toRaceDetectData()
    +	if sData == nil {
    +		return
    +	}
    +	srcSp := atomicLoadShadowPresence(&sData.shadowPresence)
    +	if srcSp == nil {
    +		atomicStoreShadowPresence(&dData.shadowPresence, nil)
    +		return
    +	}
    +	n := len(*srcSp)
    +	dSlice := make([]byte, n)
    +	atomicStoreShadowPresence(&dData.shadowPresence, &dSlice)
    +	for i := 0; i < n; i++ {
    +		dSlice[i] = (*srcSp)[i]
    +	}
    +}
    +
    +// raceDetectHookPresent is called by the generated file interface
    +// (*proto.internalFuncs) Present to optionally read an unprotected
    +// shadow bitmap when race detection is enabled. In regular code it is
    +// a noop.
    +func raceDetectHookPresent(field *uint32, num uint32) {
    +	data := findPointerToRaceDetectData(field, num)
    +	if data == nil {
    +		return
    +	}
    +	sp := atomicLoadShadowPresence(&data.shadowPresence)
    +	if sp != nil {
    +		_ = (*sp)[num]
    +	}
    +}
    +
    +// raceDetectHookSetPresent is called by the generated file interface
    +// (*proto.internalFuncs) SetPresent to optionally write an unprotected
    +// shadow bitmap when race detection is enabled. In regular code it is
    +// a noop.
    +func raceDetectHookSetPresent(field *uint32, num uint32, size presenceSize) {
    +	data := findPointerToRaceDetectData(field, num)
    +	if data == nil {
    +		return
    +	}
    +	sp := atomicLoadShadowPresence(&data.shadowPresence)
    +	if sp == nil {
    +		data.raceDetectHookAlloc(size)
    +		sp = atomicLoadShadowPresence(&data.shadowPresence)
    +	}
    +	(*sp)[num] = 1
    +}
    +
    +// raceDetectHookClearPresent is called by the generated file interface
    +// (*proto.internalFuncs) ClearPresent to optionally write an unprotected
    +// shadow bitmap when race detection is enabled. In regular code it is
    +// a noop.
    +func raceDetectHookClearPresent(field *uint32, num uint32) {
    +	data := findPointerToRaceDetectData(field, num)
    +	if data == nil {
    +		return
    +	}
    +	sp := atomicLoadShadowPresence(&data.shadowPresence)
    +	if sp != nil {
    +		(*sp)[num] = 0
    +	}
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/checkinit.go b/vendor/google.golang.org/protobuf/internal/impl/checkinit.go
    index bff041edc946..fe2c719ce403 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/checkinit.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/checkinit.go
    @@ -35,6 +35,12 @@ func (mi *MessageInfo) checkInitializedPointer(p pointer) error {
     		}
     		return nil
     	}
    +
    +	var presence presence
    +	if mi.presenceOffset.IsValid() {
    +		presence = p.Apply(mi.presenceOffset).PresenceInfo()
    +	}
    +
     	if mi.extensionOffset.IsValid() {
     		e := p.Apply(mi.extensionOffset).Extensions()
     		if err := mi.isInitExtensions(e); err != nil {
    @@ -45,6 +51,33 @@ func (mi *MessageInfo) checkInitializedPointer(p pointer) error {
     		if !f.isRequired && f.funcs.isInit == nil {
     			continue
     		}
    +
    +		if f.presenceIndex != noPresence {
    +			if !presence.Present(f.presenceIndex) {
    +				if f.isRequired {
    +					return errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))
    +				}
    +				continue
    +			}
    +			if f.funcs.isInit != nil {
    +				f.mi.init()
    +				if f.mi.needsInitCheck {
    +					if f.isLazy && p.Apply(f.offset).AtomicGetPointer().IsNil() {
    +						lazy := *p.Apply(mi.lazyOffset).LazyInfoPtr()
    +						if !lazy.AllowedPartial() {
    +							// Nothing to see here, it was checked on unmarshal
    +							continue
    +						}
    +						mi.lazyUnmarshal(p, f.num)
    +					}
    +					if err := f.funcs.isInit(p.Apply(f.offset), f); err != nil {
    +						return err
    +					}
    +				}
    +			}
    +			continue
    +		}
    +
     		fptr := p.Apply(f.offset)
     		if f.isPointer && fptr.Elem().IsNil() {
     			if f.isRequired {
    @@ -68,7 +101,7 @@ func (mi *MessageInfo) isInitExtensions(ext *map[int32]ExtensionField) error {
     	}
     	for _, x := range *ext {
     		ei := getExtensionFieldInfo(x.Type())
    -		if ei.funcs.isInit == nil {
    +		if ei.funcs.isInit == nil || x.isUnexpandedLazy() {
     			continue
     		}
     		v := x.Value()
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go
    index 2b8f122c27bf..0d5b546e0eed 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go
    @@ -67,7 +67,6 @@ type lazyExtensionValue struct {
     	xi         *extensionFieldInfo
     	value      protoreflect.Value
     	b          []byte
    -	fn         func() protoreflect.Value
     }
     
     type ExtensionField struct {
    @@ -99,6 +98,28 @@ func (f *ExtensionField) canLazy(xt protoreflect.ExtensionType) bool {
     	return false
     }
     
    +// isUnexpandedLazy returns true if the ExensionField is lazy and not
    +// yet expanded, which means it's present and already checked for
    +// initialized required fields.
    +func (f *ExtensionField) isUnexpandedLazy() bool {
    +	return f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0
    +}
    +
    +// lazyBuffer retrieves the buffer for a lazy extension if it's not yet expanded.
    +//
    +// The returned buffer has to be kept over whatever operation we're planning,
    +// as re-retrieving it will fail after the message is lazily decoded.
    +func (f *ExtensionField) lazyBuffer() []byte {
    +	// This function might be in the critical path, so check the atomic without
    +	// taking a look first, then only take the lock if needed.
    +	if !f.isUnexpandedLazy() {
    +		return nil
    +	}
    +	f.lazy.mu.Lock()
    +	defer f.lazy.mu.Unlock()
    +	return f.lazy.b
    +}
    +
     func (f *ExtensionField) lazyInit() {
     	f.lazy.mu.Lock()
     	defer f.lazy.mu.Unlock()
    @@ -136,10 +157,9 @@ func (f *ExtensionField) lazyInit() {
     		}
     		f.lazy.value = val
     	} else {
    -		f.lazy.value = f.lazy.fn()
    +		panic("No support for lazy fns for ExtensionField")
     	}
     	f.lazy.xi = nil
    -	f.lazy.fn = nil
     	f.lazy.b = nil
     	atomic.StoreUint32(&f.lazy.atomicOnce, 1)
     }
    @@ -152,13 +172,6 @@ func (f *ExtensionField) Set(t protoreflect.ExtensionType, v protoreflect.Value)
     	f.lazy = nil
     }
     
    -// SetLazy sets the type and a value that is to be lazily evaluated upon first use.
    -// This must not be called concurrently.
    -func (f *ExtensionField) SetLazy(t protoreflect.ExtensionType, fn func() protoreflect.Value) {
    -	f.typ = t
    -	f.lazy = &lazyExtensionValue{fn: fn}
    -}
    -
     // Value returns the value of the extension field.
     // This may be called concurrently.
     func (f *ExtensionField) Value() protoreflect.Value {
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go b/vendor/google.golang.org/protobuf/internal/impl/codec_field.go
    index 78ee47e44b92..7c1f66c8c195 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_field.go
    @@ -65,6 +65,9 @@ func (mi *MessageInfo) initOneofFieldCoders(od protoreflect.OneofDescriptor, si
     			if err != nil {
     				return out, err
     			}
    +			if cf.funcs.isInit == nil {
    +				out.initialized = true
    +			}
     			vi.Set(vw)
     			return out, nil
     		}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_field_opaque.go b/vendor/google.golang.org/protobuf/internal/impl/codec_field_opaque.go
    new file mode 100644
    index 000000000000..76818ea252f0
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_field_opaque.go
    @@ -0,0 +1,264 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package impl
    +
    +import (
    +	"fmt"
    +	"reflect"
    +
    +	"google.golang.org/protobuf/encoding/protowire"
    +	"google.golang.org/protobuf/internal/errors"
    +	"google.golang.org/protobuf/reflect/protoreflect"
    +)
    +
    +func makeOpaqueMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {
    +	mi := getMessageInfo(ft)
    +	if mi == nil {
    +		panic(fmt.Sprintf("invalid field: %v: unsupported message type %v", fd.FullName(), ft))
    +	}
    +	switch fd.Kind() {
    +	case protoreflect.MessageKind:
    +		return mi, pointerCoderFuncs{
    +			size:      sizeOpaqueMessage,
    +			marshal:   appendOpaqueMessage,
    +			unmarshal: consumeOpaqueMessage,
    +			isInit:    isInitOpaqueMessage,
    +			merge:     mergeOpaqueMessage,
    +		}
    +	case protoreflect.GroupKind:
    +		return mi, pointerCoderFuncs{
    +			size:      sizeOpaqueGroup,
    +			marshal:   appendOpaqueGroup,
    +			unmarshal: consumeOpaqueGroup,
    +			isInit:    isInitOpaqueMessage,
    +			merge:     mergeOpaqueMessage,
    +		}
    +	}
    +	panic("unexpected field kind")
    +}
    +
    +func sizeOpaqueMessage(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
    +	return protowire.SizeBytes(f.mi.sizePointer(p.AtomicGetPointer(), opts)) + f.tagsize
    +}
    +
    +func appendOpaqueMessage(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
    +	mp := p.AtomicGetPointer()
    +	calculatedSize := f.mi.sizePointer(mp, opts)
    +	b = protowire.AppendVarint(b, f.wiretag)
    +	b = protowire.AppendVarint(b, uint64(calculatedSize))
    +	before := len(b)
    +	b, err := f.mi.marshalAppendPointer(b, mp, opts)
    +	if measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil {
    +		return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize)
    +	}
    +	return b, err
    +}
    +
    +func consumeOpaqueMessage(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
    +	if wtyp != protowire.BytesType {
    +		return out, errUnknown
    +	}
    +	v, n := protowire.ConsumeBytes(b)
    +	if n < 0 {
    +		return out, errDecode
    +	}
    +	mp := p.AtomicGetPointer()
    +	if mp.IsNil() {
    +		mp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))
    +	}
    +	o, err := f.mi.unmarshalPointer(v, mp, 0, opts)
    +	if err != nil {
    +		return out, err
    +	}
    +	out.n = n
    +	out.initialized = o.initialized
    +	return out, nil
    +}
    +
    +func isInitOpaqueMessage(p pointer, f *coderFieldInfo) error {
    +	mp := p.AtomicGetPointer()
    +	if mp.IsNil() {
    +		return nil
    +	}
    +	return f.mi.checkInitializedPointer(mp)
    +}
    +
    +func mergeOpaqueMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
    +	dstmp := dst.AtomicGetPointer()
    +	if dstmp.IsNil() {
    +		dstmp = dst.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))
    +	}
    +	f.mi.mergePointer(dstmp, src.AtomicGetPointer(), opts)
    +}
    +
    +func sizeOpaqueGroup(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
    +	return 2*f.tagsize + f.mi.sizePointer(p.AtomicGetPointer(), opts)
    +}
    +
    +func appendOpaqueGroup(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
    +	b = protowire.AppendVarint(b, f.wiretag) // start group
    +	b, err := f.mi.marshalAppendPointer(b, p.AtomicGetPointer(), opts)
    +	b = protowire.AppendVarint(b, f.wiretag+1) // end group
    +	return b, err
    +}
    +
    +func consumeOpaqueGroup(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
    +	if wtyp != protowire.StartGroupType {
    +		return out, errUnknown
    +	}
    +	mp := p.AtomicGetPointer()
    +	if mp.IsNil() {
    +		mp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))
    +	}
    +	o, e := f.mi.unmarshalPointer(b, mp, f.num, opts)
    +	return o, e
    +}
    +
    +func makeOpaqueRepeatedMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {
    +	if ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {
    +		panic(fmt.Sprintf("invalid field: %v: unsupported type for opaque repeated message: %v", fd.FullName(), ft))
    +	}
    +	mt := ft.Elem().Elem() // *[]*T -> *T
    +	mi := getMessageInfo(mt)
    +	if mi == nil {
    +		panic(fmt.Sprintf("invalid field: %v: unsupported message type %v", fd.FullName(), mt))
    +	}
    +	switch fd.Kind() {
    +	case protoreflect.MessageKind:
    +		return mi, pointerCoderFuncs{
    +			size:      sizeOpaqueMessageSlice,
    +			marshal:   appendOpaqueMessageSlice,
    +			unmarshal: consumeOpaqueMessageSlice,
    +			isInit:    isInitOpaqueMessageSlice,
    +			merge:     mergeOpaqueMessageSlice,
    +		}
    +	case protoreflect.GroupKind:
    +		return mi, pointerCoderFuncs{
    +			size:      sizeOpaqueGroupSlice,
    +			marshal:   appendOpaqueGroupSlice,
    +			unmarshal: consumeOpaqueGroupSlice,
    +			isInit:    isInitOpaqueMessageSlice,
    +			merge:     mergeOpaqueMessageSlice,
    +		}
    +	}
    +	panic("unexpected field kind")
    +}
    +
    +func sizeOpaqueMessageSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
    +	s := p.AtomicGetPointer().PointerSlice()
    +	n := 0
    +	for _, v := range s {
    +		n += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize
    +	}
    +	return n
    +}
    +
    +func appendOpaqueMessageSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
    +	s := p.AtomicGetPointer().PointerSlice()
    +	var err error
    +	for _, v := range s {
    +		b = protowire.AppendVarint(b, f.wiretag)
    +		siz := f.mi.sizePointer(v, opts)
    +		b = protowire.AppendVarint(b, uint64(siz))
    +		before := len(b)
    +		b, err = f.mi.marshalAppendPointer(b, v, opts)
    +		if err != nil {
    +			return b, err
    +		}
    +		if measuredSize := len(b) - before; siz != measuredSize {
    +			return nil, errors.MismatchedSizeCalculation(siz, measuredSize)
    +		}
    +	}
    +	return b, nil
    +}
    +
    +func consumeOpaqueMessageSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
    +	if wtyp != protowire.BytesType {
    +		return out, errUnknown
    +	}
    +	v, n := protowire.ConsumeBytes(b)
    +	if n < 0 {
    +		return out, errDecode
    +	}
    +	mp := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))
    +	o, err := f.mi.unmarshalPointer(v, mp, 0, opts)
    +	if err != nil {
    +		return out, err
    +	}
    +	sp := p.AtomicGetPointer()
    +	if sp.IsNil() {
    +		sp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))
    +	}
    +	sp.AppendPointerSlice(mp)
    +	out.n = n
    +	out.initialized = o.initialized
    +	return out, nil
    +}
    +
    +func isInitOpaqueMessageSlice(p pointer, f *coderFieldInfo) error {
    +	sp := p.AtomicGetPointer()
    +	if sp.IsNil() {
    +		return nil
    +	}
    +	s := sp.PointerSlice()
    +	for _, v := range s {
    +		if err := f.mi.checkInitializedPointer(v); err != nil {
    +			return err
    +		}
    +	}
    +	return nil
    +}
    +
    +func mergeOpaqueMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
    +	ds := dst.AtomicGetPointer()
    +	if ds.IsNil() {
    +		ds = dst.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))
    +	}
    +	for _, sp := range src.AtomicGetPointer().PointerSlice() {
    +		dm := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))
    +		f.mi.mergePointer(dm, sp, opts)
    +		ds.AppendPointerSlice(dm)
    +	}
    +}
    +
    +func sizeOpaqueGroupSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
    +	s := p.AtomicGetPointer().PointerSlice()
    +	n := 0
    +	for _, v := range s {
    +		n += 2*f.tagsize + f.mi.sizePointer(v, opts)
    +	}
    +	return n
    +}
    +
    +func appendOpaqueGroupSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
    +	s := p.AtomicGetPointer().PointerSlice()
    +	var err error
    +	for _, v := range s {
    +		b = protowire.AppendVarint(b, f.wiretag) // start group
    +		b, err = f.mi.marshalAppendPointer(b, v, opts)
    +		if err != nil {
    +			return b, err
    +		}
    +		b = protowire.AppendVarint(b, f.wiretag+1) // end group
    +	}
    +	return b, nil
    +}
    +
    +func consumeOpaqueGroupSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
    +	if wtyp != protowire.StartGroupType {
    +		return out, errUnknown
    +	}
    +	mp := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))
    +	out, err = f.mi.unmarshalPointer(b, mp, f.num, opts)
    +	if err != nil {
    +		return out, err
    +	}
    +	sp := p.AtomicGetPointer()
    +	if sp.IsNil() {
    +		sp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))
    +	}
    +	sp.AppendPointerSlice(mp)
    +	return out, err
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go
    index fb35f0bae9c8..229c69801386 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go
    @@ -94,7 +94,7 @@ func sizeMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalO
     		return 0
     	}
     	n := 0
    -	iter := mapRange(mapv)
    +	iter := mapv.MapRange()
     	for iter.Next() {
     		key := mapi.conv.keyConv.PBValueOf(iter.Key()).MapKey()
     		keySize := mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)
    @@ -281,7 +281,7 @@ func appendMap(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, o
     	if opts.Deterministic() {
     		return appendMapDeterministic(b, mapv, mapi, f, opts)
     	}
    -	iter := mapRange(mapv)
    +	iter := mapv.MapRange()
     	for iter.Next() {
     		var err error
     		b = protowire.AppendVarint(b, f.wiretag)
    @@ -328,7 +328,7 @@ func isInitMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo) error {
     		if !mi.needsInitCheck {
     			return nil
     		}
    -		iter := mapRange(mapv)
    +		iter := mapv.MapRange()
     		for iter.Next() {
     			val := pointerOfValue(iter.Value())
     			if err := mi.checkInitializedPointer(val); err != nil {
    @@ -336,7 +336,7 @@ func isInitMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo) error {
     			}
     		}
     	} else {
    -		iter := mapRange(mapv)
    +		iter := mapv.MapRange()
     		for iter.Next() {
     			val := mapi.conv.valConv.PBValueOf(iter.Value())
     			if err := mapi.valFuncs.isInit(val); err != nil {
    @@ -356,7 +356,7 @@ func mergeMap(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
     	if dstm.IsNil() {
     		dstm.Set(reflect.MakeMap(f.ft))
     	}
    -	iter := mapRange(srcm)
    +	iter := srcm.MapRange()
     	for iter.Next() {
     		dstm.SetMapIndex(iter.Key(), iter.Value())
     	}
    @@ -371,7 +371,7 @@ func mergeMapOfBytes(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
     	if dstm.IsNil() {
     		dstm.Set(reflect.MakeMap(f.ft))
     	}
    -	iter := mapRange(srcm)
    +	iter := srcm.MapRange()
     	for iter.Next() {
     		dstm.SetMapIndex(iter.Key(), reflect.ValueOf(append(emptyBuf[:], iter.Value().Bytes()...)))
     	}
    @@ -386,7 +386,7 @@ func mergeMapOfMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
     	if dstm.IsNil() {
     		dstm.Set(reflect.MakeMap(f.ft))
     	}
    -	iter := mapRange(srcm)
    +	iter := srcm.MapRange()
     	for iter.Next() {
     		val := reflect.New(f.ft.Elem().Elem())
     		if f.mi != nil {
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go
    deleted file mode 100644
    index 4b15493f2f43..000000000000
    --- a/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go
    +++ /dev/null
    @@ -1,38 +0,0 @@
    -// Copyright 2019 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build !go1.12
    -// +build !go1.12
    -
    -package impl
    -
    -import "reflect"
    -
    -type mapIter struct {
    -	v    reflect.Value
    -	keys []reflect.Value
    -}
    -
    -// mapRange provides a less-efficient equivalent to
    -// the Go 1.12 reflect.Value.MapRange method.
    -func mapRange(v reflect.Value) *mapIter {
    -	return &mapIter{v: v}
    -}
    -
    -func (i *mapIter) Next() bool {
    -	if i.keys == nil {
    -		i.keys = i.v.MapKeys()
    -	} else {
    -		i.keys = i.keys[1:]
    -	}
    -	return len(i.keys) > 0
    -}
    -
    -func (i *mapIter) Key() reflect.Value {
    -	return i.keys[0]
    -}
    -
    -func (i *mapIter) Value() reflect.Value {
    -	return i.v.MapIndex(i.keys[0])
    -}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go
    deleted file mode 100644
    index 0b31b66eaf84..000000000000
    --- a/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go
    +++ /dev/null
    @@ -1,12 +0,0 @@
    -// Copyright 2019 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build go1.12
    -// +build go1.12
    -
    -package impl
    -
    -import "reflect"
    -
    -func mapRange(v reflect.Value) *reflect.MapIter { return v.MapRange() }
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go b/vendor/google.golang.org/protobuf/internal/impl/codec_message.go
    index 6b2fdbb739a2..111d95833d46 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_message.go
    @@ -32,6 +32,10 @@ type coderMessageInfo struct {
     	needsInitCheck     bool
     	isMessageSet       bool
     	numRequiredFields  uint8
    +
    +	lazyOffset     offset
    +	presenceOffset offset
    +	presenceSize   presenceSize
     }
     
     type coderFieldInfo struct {
    @@ -45,12 +49,19 @@ type coderFieldInfo struct {
     	tagsize    int                      // size of the varint-encoded tag
     	isPointer  bool                     // true if IsNil may be called on the struct field
     	isRequired bool                     // true if field is required
    +
    +	isLazy        bool
    +	presenceIndex uint32
     }
     
    +const noPresence = 0xffffffff
    +
     func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {
     	mi.sizecacheOffset = invalidOffset
     	mi.unknownOffset = invalidOffset
     	mi.extensionOffset = invalidOffset
    +	mi.lazyOffset = invalidOffset
    +	mi.presenceOffset = si.presenceOffset
     
     	if si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType {
     		mi.sizecacheOffset = si.sizecacheOffset
    @@ -107,12 +118,12 @@ func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {
     				},
     			}
     		case isOneof:
    -			fieldOffset = offsetOf(fs, mi.Exporter)
    +			fieldOffset = offsetOf(fs)
     		case fd.IsWeak():
     			fieldOffset = si.weakOffset
     			funcs = makeWeakMessageFieldCoder(fd)
     		default:
    -			fieldOffset = offsetOf(fs, mi.Exporter)
    +			fieldOffset = offsetOf(fs)
     			childMessage, funcs = fieldCoder(fd, ft)
     		}
     		cf := &preallocFields[i]
    @@ -127,6 +138,8 @@ func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {
     			validation: newFieldValidationInfo(mi, si, fd, ft),
     			isPointer:  fd.Cardinality() == protoreflect.Repeated || fd.HasPresence(),
     			isRequired: fd.Cardinality() == protoreflect.Required,
    +
    +			presenceIndex: noPresence,
     		}
     		mi.orderedCoderFields = append(mi.orderedCoderFields, cf)
     		mi.coderFields[cf.num] = cf
    @@ -189,6 +202,9 @@ func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {
     	if mi.methods.Merge == nil {
     		mi.methods.Merge = mi.merge
     	}
    +	if mi.methods.Equal == nil {
    +		mi.methods.Equal = equal
    +	}
     }
     
     // getUnknownBytes returns a *[]byte for the unknown fields.
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go b/vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go
    new file mode 100644
    index 000000000000..f81d7d0db9ae
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go
    @@ -0,0 +1,156 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package impl
    +
    +import (
    +	"fmt"
    +	"reflect"
    +	"sort"
    +
    +	"google.golang.org/protobuf/encoding/protowire"
    +	"google.golang.org/protobuf/internal/encoding/messageset"
    +	"google.golang.org/protobuf/internal/order"
    +	"google.golang.org/protobuf/reflect/protoreflect"
    +	piface "google.golang.org/protobuf/runtime/protoiface"
    +)
    +
    +func (mi *MessageInfo) makeOpaqueCoderMethods(t reflect.Type, si opaqueStructInfo) {
    +	mi.sizecacheOffset = si.sizecacheOffset
    +	mi.unknownOffset = si.unknownOffset
    +	mi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr
    +	mi.extensionOffset = si.extensionOffset
    +	mi.lazyOffset = si.lazyOffset
    +	mi.presenceOffset = si.presenceOffset
    +
    +	mi.coderFields = make(map[protowire.Number]*coderFieldInfo)
    +	fields := mi.Desc.Fields()
    +	for i := 0; i < fields.Len(); i++ {
    +		fd := fields.Get(i)
    +
    +		fs := si.fieldsByNumber[fd.Number()]
    +		if fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() {
    +			fs = si.oneofsByName[fd.ContainingOneof().Name()]
    +		}
    +		ft := fs.Type
    +		var wiretag uint64
    +		if !fd.IsPacked() {
    +			wiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()])
    +		} else {
    +			wiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType)
    +		}
    +		var fieldOffset offset
    +		var funcs pointerCoderFuncs
    +		var childMessage *MessageInfo
    +		switch {
    +		case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():
    +			fieldOffset = offsetOf(fs)
    +		case fd.IsWeak():
    +			fieldOffset = si.weakOffset
    +			funcs = makeWeakMessageFieldCoder(fd)
    +		case fd.Message() != nil && !fd.IsMap():
    +			fieldOffset = offsetOf(fs)
    +			if fd.IsList() {
    +				childMessage, funcs = makeOpaqueRepeatedMessageFieldCoder(fd, ft)
    +			} else {
    +				childMessage, funcs = makeOpaqueMessageFieldCoder(fd, ft)
    +			}
    +		default:
    +			fieldOffset = offsetOf(fs)
    +			childMessage, funcs = fieldCoder(fd, ft)
    +		}
    +		cf := &coderFieldInfo{
    +			num:        fd.Number(),
    +			offset:     fieldOffset,
    +			wiretag:    wiretag,
    +			ft:         ft,
    +			tagsize:    protowire.SizeVarint(wiretag),
    +			funcs:      funcs,
    +			mi:         childMessage,
    +			validation: newFieldValidationInfo(mi, si.structInfo, fd, ft),
    +			isPointer: (fd.Cardinality() == protoreflect.Repeated ||
    +				fd.Kind() == protoreflect.MessageKind ||
    +				fd.Kind() == protoreflect.GroupKind),
    +			isRequired:    fd.Cardinality() == protoreflect.Required,
    +			presenceIndex: noPresence,
    +		}
    +
    +		// TODO: Use presence for all fields.
    +		//
    +		// In some cases, such as maps, presence means only "might be set" rather
    +		// than "is definitely set", but every field should have a presence bit to
    +		// permit us to skip over definitely-unset fields at marshal time.
    +
    +		var hasPresence bool
    +		hasPresence, cf.isLazy = usePresenceForField(si, fd)
    +
    +		if hasPresence {
    +			cf.presenceIndex, mi.presenceSize = presenceIndex(mi.Desc, fd)
    +		}
    +
    +		mi.orderedCoderFields = append(mi.orderedCoderFields, cf)
    +		mi.coderFields[cf.num] = cf
    +	}
    +	for i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ {
    +		if od := oneofs.Get(i); !od.IsSynthetic() {
    +			mi.initOneofFieldCoders(od, si.structInfo)
    +		}
    +	}
    +	if messageset.IsMessageSet(mi.Desc) {
    +		if !mi.extensionOffset.IsValid() {
    +			panic(fmt.Sprintf("%v: MessageSet with no extensions field", mi.Desc.FullName()))
    +		}
    +		if !mi.unknownOffset.IsValid() {
    +			panic(fmt.Sprintf("%v: MessageSet with no unknown field", mi.Desc.FullName()))
    +		}
    +		mi.isMessageSet = true
    +	}
    +	sort.Slice(mi.orderedCoderFields, func(i, j int) bool {
    +		return mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num
    +	})
    +
    +	var maxDense protoreflect.FieldNumber
    +	for _, cf := range mi.orderedCoderFields {
    +		if cf.num >= 16 && cf.num >= 2*maxDense {
    +			break
    +		}
    +		maxDense = cf.num
    +	}
    +	mi.denseCoderFields = make([]*coderFieldInfo, maxDense+1)
    +	for _, cf := range mi.orderedCoderFields {
    +		if int(cf.num) > len(mi.denseCoderFields) {
    +			break
    +		}
    +		mi.denseCoderFields[cf.num] = cf
    +	}
    +
    +	// To preserve compatibility with historic wire output, marshal oneofs last.
    +	if mi.Desc.Oneofs().Len() > 0 {
    +		sort.Slice(mi.orderedCoderFields, func(i, j int) bool {
    +			fi := fields.ByNumber(mi.orderedCoderFields[i].num)
    +			fj := fields.ByNumber(mi.orderedCoderFields[j].num)
    +			return order.LegacyFieldOrder(fi, fj)
    +		})
    +	}
    +
    +	mi.needsInitCheck = needsInitCheck(mi.Desc)
    +	if mi.methods.Marshal == nil && mi.methods.Size == nil {
    +		mi.methods.Flags |= piface.SupportMarshalDeterministic
    +		mi.methods.Marshal = mi.marshal
    +		mi.methods.Size = mi.size
    +	}
    +	if mi.methods.Unmarshal == nil {
    +		mi.methods.Flags |= piface.SupportUnmarshalDiscardUnknown
    +		mi.methods.Unmarshal = mi.unmarshal
    +	}
    +	if mi.methods.CheckInitialized == nil {
    +		mi.methods.CheckInitialized = mi.checkInitialized
    +	}
    +	if mi.methods.Merge == nil {
    +		mi.methods.Merge = mi.merge
    +	}
    +	if mi.methods.Equal == nil {
    +		mi.methods.Equal = equal
    +	}
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go b/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go
    index b7a23faf1e43..7a16ec13dd1a 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go
    @@ -26,6 +26,15 @@ func sizeMessageSet(mi *MessageInfo, p pointer, opts marshalOptions) (size int)
     		}
     		num, _ := protowire.DecodeTag(xi.wiretag)
     		size += messageset.SizeField(num)
    +		if fullyLazyExtensions(opts) {
    +			// Don't expand the extension, instead use the buffer to calculate size
    +			if lb := x.lazyBuffer(); lb != nil {
    +				// We got hold of the buffer, so it's still lazy.
    +				// Don't count the tag size in the extension buffer, it's already added.
    +				size += protowire.SizeTag(messageset.FieldMessage) + len(lb) - xi.tagsize
    +				continue
    +			}
    +		}
     		size += xi.funcs.size(x.Value(), protowire.SizeTag(messageset.FieldMessage), opts)
     	}
     
    @@ -85,6 +94,19 @@ func marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts ma
     	xi := getExtensionFieldInfo(x.Type())
     	num, _ := protowire.DecodeTag(xi.wiretag)
     	b = messageset.AppendFieldStart(b, num)
    +
    +	if fullyLazyExtensions(opts) {
    +		// Don't expand the extension if it's still in wire format, instead use the buffer content.
    +		if lb := x.lazyBuffer(); lb != nil {
    +			// The tag inside the lazy buffer is a different tag (the extension
    +			// number), but what we need here is the tag for FieldMessage:
    +			b = protowire.AppendVarint(b, protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType))
    +			b = append(b, lb[xi.tagsize:]...)
    +			b = messageset.AppendFieldEnd(b)
    +			return b, nil
    +		}
    +	}
    +
     	b, err := xi.funcs.marshal(b, x.Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), opts)
     	if err != nil {
     		return b, err
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go
    deleted file mode 100644
    index 145c577bd6b2..000000000000
    --- a/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go
    +++ /dev/null
    @@ -1,210 +0,0 @@
    -// Copyright 2019 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build purego || appengine
    -// +build purego appengine
    -
    -package impl
    -
    -import (
    -	"reflect"
    -
    -	"google.golang.org/protobuf/encoding/protowire"
    -)
    -
    -func sizeEnum(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
    -	v := p.v.Elem().Int()
    -	return f.tagsize + protowire.SizeVarint(uint64(v))
    -}
    -
    -func appendEnum(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
    -	v := p.v.Elem().Int()
    -	b = protowire.AppendVarint(b, f.wiretag)
    -	b = protowire.AppendVarint(b, uint64(v))
    -	return b, nil
    -}
    -
    -func consumeEnum(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
    -	if wtyp != protowire.VarintType {
    -		return out, errUnknown
    -	}
    -	v, n := protowire.ConsumeVarint(b)
    -	if n < 0 {
    -		return out, errDecode
    -	}
    -	p.v.Elem().SetInt(int64(v))
    -	out.n = n
    -	return out, nil
    -}
    -
    -func mergeEnum(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
    -	dst.v.Elem().Set(src.v.Elem())
    -}
    -
    -var coderEnum = pointerCoderFuncs{
    -	size:      sizeEnum,
    -	marshal:   appendEnum,
    -	unmarshal: consumeEnum,
    -	merge:     mergeEnum,
    -}
    -
    -func sizeEnumNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
    -	if p.v.Elem().Int() == 0 {
    -		return 0
    -	}
    -	return sizeEnum(p, f, opts)
    -}
    -
    -func appendEnumNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
    -	if p.v.Elem().Int() == 0 {
    -		return b, nil
    -	}
    -	return appendEnum(b, p, f, opts)
    -}
    -
    -func mergeEnumNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
    -	if src.v.Elem().Int() != 0 {
    -		dst.v.Elem().Set(src.v.Elem())
    -	}
    -}
    -
    -var coderEnumNoZero = pointerCoderFuncs{
    -	size:      sizeEnumNoZero,
    -	marshal:   appendEnumNoZero,
    -	unmarshal: consumeEnum,
    -	merge:     mergeEnumNoZero,
    -}
    -
    -func sizeEnumPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
    -	return sizeEnum(pointer{p.v.Elem()}, f, opts)
    -}
    -
    -func appendEnumPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
    -	return appendEnum(b, pointer{p.v.Elem()}, f, opts)
    -}
    -
    -func consumeEnumPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
    -	if wtyp != protowire.VarintType {
    -		return out, errUnknown
    -	}
    -	if p.v.Elem().IsNil() {
    -		p.v.Elem().Set(reflect.New(p.v.Elem().Type().Elem()))
    -	}
    -	return consumeEnum(b, pointer{p.v.Elem()}, wtyp, f, opts)
    -}
    -
    -func mergeEnumPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
    -	if !src.v.Elem().IsNil() {
    -		v := reflect.New(dst.v.Type().Elem().Elem())
    -		v.Elem().Set(src.v.Elem().Elem())
    -		dst.v.Elem().Set(v)
    -	}
    -}
    -
    -var coderEnumPtr = pointerCoderFuncs{
    -	size:      sizeEnumPtr,
    -	marshal:   appendEnumPtr,
    -	unmarshal: consumeEnumPtr,
    -	merge:     mergeEnumPtr,
    -}
    -
    -func sizeEnumSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
    -	s := p.v.Elem()
    -	for i, llen := 0, s.Len(); i < llen; i++ {
    -		size += protowire.SizeVarint(uint64(s.Index(i).Int())) + f.tagsize
    -	}
    -	return size
    -}
    -
    -func appendEnumSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
    -	s := p.v.Elem()
    -	for i, llen := 0, s.Len(); i < llen; i++ {
    -		b = protowire.AppendVarint(b, f.wiretag)
    -		b = protowire.AppendVarint(b, uint64(s.Index(i).Int()))
    -	}
    -	return b, nil
    -}
    -
    -func consumeEnumSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
    -	s := p.v.Elem()
    -	if wtyp == protowire.BytesType {
    -		b, n := protowire.ConsumeBytes(b)
    -		if n < 0 {
    -			return out, errDecode
    -		}
    -		for len(b) > 0 {
    -			v, n := protowire.ConsumeVarint(b)
    -			if n < 0 {
    -				return out, errDecode
    -			}
    -			rv := reflect.New(s.Type().Elem()).Elem()
    -			rv.SetInt(int64(v))
    -			s.Set(reflect.Append(s, rv))
    -			b = b[n:]
    -		}
    -		out.n = n
    -		return out, nil
    -	}
    -	if wtyp != protowire.VarintType {
    -		return out, errUnknown
    -	}
    -	v, n := protowire.ConsumeVarint(b)
    -	if n < 0 {
    -		return out, errDecode
    -	}
    -	rv := reflect.New(s.Type().Elem()).Elem()
    -	rv.SetInt(int64(v))
    -	s.Set(reflect.Append(s, rv))
    -	out.n = n
    -	return out, nil
    -}
    -
    -func mergeEnumSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
    -	dst.v.Elem().Set(reflect.AppendSlice(dst.v.Elem(), src.v.Elem()))
    -}
    -
    -var coderEnumSlice = pointerCoderFuncs{
    -	size:      sizeEnumSlice,
    -	marshal:   appendEnumSlice,
    -	unmarshal: consumeEnumSlice,
    -	merge:     mergeEnumSlice,
    -}
    -
    -func sizeEnumPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
    -	s := p.v.Elem()
    -	llen := s.Len()
    -	if llen == 0 {
    -		return 0
    -	}
    -	n := 0
    -	for i := 0; i < llen; i++ {
    -		n += protowire.SizeVarint(uint64(s.Index(i).Int()))
    -	}
    -	return f.tagsize + protowire.SizeBytes(n)
    -}
    -
    -func appendEnumPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
    -	s := p.v.Elem()
    -	llen := s.Len()
    -	if llen == 0 {
    -		return b, nil
    -	}
    -	b = protowire.AppendVarint(b, f.wiretag)
    -	n := 0
    -	for i := 0; i < llen; i++ {
    -		n += protowire.SizeVarint(uint64(s.Index(i).Int()))
    -	}
    -	b = protowire.AppendVarint(b, uint64(n))
    -	for i := 0; i < llen; i++ {
    -		b = protowire.AppendVarint(b, uint64(s.Index(i).Int()))
    -	}
    -	return b, nil
    -}
    -
    -var coderEnumPackedSlice = pointerCoderFuncs{
    -	size:      sizeEnumPackedSlice,
    -	marshal:   appendEnumPackedSlice,
    -	unmarshal: consumeEnumSlice,
    -	merge:     mergeEnumSlice,
    -}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go
    index 757642e23c9e..077712c2c5a3 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go
    @@ -2,9 +2,6 @@
     // Use of this source code is governed by a BSD-style
     // license that can be found in the LICENSE file.
     
    -//go:build !purego && !appengine
    -// +build !purego,!appengine
    -
     package impl
     
     // When using unsafe pointers, we can just treat enum values as int32s.
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert.go b/vendor/google.golang.org/protobuf/internal/impl/convert.go
    index 185ef2efa5bf..f72ddd882f32 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/convert.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/convert.go
    @@ -14,7 +14,7 @@ import (
     // unwrapper unwraps the value to the underlying value.
     // This is implemented by List and Map.
     type unwrapper interface {
    -	protoUnwrap() interface{}
    +	protoUnwrap() any
     }
     
     // A Converter coverts to/from Go reflect.Value types and protobuf protoreflect.Value types.
    @@ -322,7 +322,7 @@ func (c *stringConverter) PBValueOf(v reflect.Value) protoreflect.Value {
     	return protoreflect.ValueOfString(v.Convert(stringType).String())
     }
     func (c *stringConverter) GoValueOf(v protoreflect.Value) reflect.Value {
    -	// pref.Value.String never panics, so we go through an interface
    +	// protoreflect.Value.String never panics, so we go through an interface
     	// conversion here to check the type.
     	s := v.Interface().(string)
     	if c.goType.Kind() == reflect.Slice && s == "" {
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert_list.go b/vendor/google.golang.org/protobuf/internal/impl/convert_list.go
    index f89136516f96..18cb96fd70a2 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/convert_list.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/convert_list.go
    @@ -136,6 +136,6 @@ func (ls *listReflect) NewElement() protoreflect.Value {
     func (ls *listReflect) IsValid() bool {
     	return !ls.v.IsNil()
     }
    -func (ls *listReflect) protoUnwrap() interface{} {
    +func (ls *listReflect) protoUnwrap() any {
     	return ls.v.Interface()
     }
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert_map.go b/vendor/google.golang.org/protobuf/internal/impl/convert_map.go
    index f30b0a0576de..e4580b3ac2ef 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/convert_map.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/convert_map.go
    @@ -101,7 +101,7 @@ func (ms *mapReflect) Mutable(k protoreflect.MapKey) protoreflect.Value {
     	return v
     }
     func (ms *mapReflect) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {
    -	iter := mapRange(ms.v)
    +	iter := ms.v.MapRange()
     	for iter.Next() {
     		k := ms.keyConv.PBValueOf(iter.Key()).MapKey()
     		v := ms.valConv.PBValueOf(iter.Value())
    @@ -116,6 +116,6 @@ func (ms *mapReflect) NewValue() protoreflect.Value {
     func (ms *mapReflect) IsValid() bool {
     	return !ms.v.IsNil()
     }
    -func (ms *mapReflect) protoUnwrap() interface{} {
    +func (ms *mapReflect) protoUnwrap() any {
     	return ms.v.Interface()
     }
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/decode.go b/vendor/google.golang.org/protobuf/internal/impl/decode.go
    index cda0520c275c..e0dd21fa5f4f 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/decode.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/decode.go
    @@ -34,6 +34,8 @@ func (o unmarshalOptions) Options() proto.UnmarshalOptions {
     		AllowPartial:   true,
     		DiscardUnknown: o.DiscardUnknown(),
     		Resolver:       o.resolver,
    +
    +		NoLazyDecoding: o.NoLazyDecoding(),
     	}
     }
     
    @@ -41,13 +43,26 @@ func (o unmarshalOptions) DiscardUnknown() bool {
     	return o.flags&protoiface.UnmarshalDiscardUnknown != 0
     }
     
    -func (o unmarshalOptions) IsDefault() bool {
    -	return o.flags == 0 && o.resolver == protoregistry.GlobalTypes
    +func (o unmarshalOptions) AliasBuffer() bool { return o.flags&protoiface.UnmarshalAliasBuffer != 0 }
    +func (o unmarshalOptions) Validated() bool   { return o.flags&protoiface.UnmarshalValidated != 0 }
    +func (o unmarshalOptions) NoLazyDecoding() bool {
    +	return o.flags&protoiface.UnmarshalNoLazyDecoding != 0
    +}
    +
    +func (o unmarshalOptions) CanBeLazy() bool {
    +	if o.resolver != protoregistry.GlobalTypes {
    +		return false
    +	}
    +	// We ignore the UnmarshalInvalidateSizeCache even though it's not in the default set
    +	return (o.flags & ^(protoiface.UnmarshalAliasBuffer | protoiface.UnmarshalValidated | protoiface.UnmarshalCheckRequired)) == 0
     }
     
     var lazyUnmarshalOptions = unmarshalOptions{
     	resolver: protoregistry.GlobalTypes,
    -	depth:    protowire.DefaultRecursionLimit,
    +
    +	flags: protoiface.UnmarshalAliasBuffer | protoiface.UnmarshalValidated,
    +
    +	depth: protowire.DefaultRecursionLimit,
     }
     
     type unmarshalOutput struct {
    @@ -94,9 +109,30 @@ func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.
     	if flags.ProtoLegacy && mi.isMessageSet {
     		return unmarshalMessageSet(mi, b, p, opts)
     	}
    +
    +	lazyDecoding := LazyEnabled() // default
    +	if opts.NoLazyDecoding() {
    +		lazyDecoding = false // explicitly disabled
    +	}
    +	if mi.lazyOffset.IsValid() && lazyDecoding {
    +		return mi.unmarshalPointerLazy(b, p, groupTag, opts)
    +	}
    +	return mi.unmarshalPointerEager(b, p, groupTag, opts)
    +}
    +
    +// unmarshalPointerEager is the message unmarshalling function for all messages that are not lazy.
    +// The corresponding function for Lazy is in google_lazy.go.
    +func (mi *MessageInfo) unmarshalPointerEager(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {
    +
     	initialized := true
     	var requiredMask uint64
     	var exts *map[int32]ExtensionField
    +
    +	var presence presence
    +	if mi.presenceOffset.IsValid() {
    +		presence = p.Apply(mi.presenceOffset).PresenceInfo()
    +	}
    +
     	start := len(b)
     	for len(b) > 0 {
     		// Parse the tag (field number and wire type).
    @@ -154,6 +190,11 @@ func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.
     			if f.funcs.isInit != nil && !o.initialized {
     				initialized = false
     			}
    +
    +			if f.presenceIndex != noPresence {
    +				presence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)
    +			}
    +
     		default:
     			// Possible extension.
     			if exts == nil && mi.extensionOffset.IsValid() {
    @@ -222,7 +263,7 @@ func (mi *MessageInfo) unmarshalExtension(b []byte, num protowire.Number, wtyp p
     		return out, errUnknown
     	}
     	if flags.LazyUnmarshalExtensions {
    -		if opts.IsDefault() && x.canLazy(xt) {
    +		if opts.CanBeLazy() && x.canLazy(xt) {
     			out, valid := skipExtension(b, xi, num, wtyp, opts)
     			switch valid {
     			case ValidationValid:
    @@ -270,6 +311,13 @@ func skipExtension(b []byte, xi *extensionFieldInfo, num protowire.Number, wtyp
     		if n < 0 {
     			return out, ValidationUnknown
     		}
    +
    +		if opts.Validated() {
    +			out.initialized = true
    +			out.n = n
    +			return out, ValidationValid
    +		}
    +
     		out, st := xi.validation.mi.validate(v, 0, opts)
     		out.n = n
     		return out, st
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/encode.go b/vendor/google.golang.org/protobuf/internal/impl/encode.go
    index 845c67d6e7e5..b2e212291d6d 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/encode.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/encode.go
    @@ -10,7 +10,8 @@ import (
     	"sync/atomic"
     
     	"google.golang.org/protobuf/internal/flags"
    -	proto "google.golang.org/protobuf/proto"
    +	"google.golang.org/protobuf/internal/protolazy"
    +	"google.golang.org/protobuf/proto"
     	piface "google.golang.org/protobuf/runtime/protoiface"
     )
     
    @@ -49,8 +50,11 @@ func (mi *MessageInfo) sizePointer(p pointer, opts marshalOptions) (size int) {
     		return 0
     	}
     	if opts.UseCachedSize() && mi.sizecacheOffset.IsValid() {
    -		if size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size >= 0 {
    -			return int(size)
    +		// The size cache contains the size + 1, to allow the
    +		// zero value to be invalid, while also allowing for a
    +		// 0 size to be cached.
    +		if size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size > 0 {
    +			return int(size - 1)
     		}
     	}
     	return mi.sizePointerSlow(p, opts)
    @@ -60,7 +64,7 @@ func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int
     	if flags.ProtoLegacy && mi.isMessageSet {
     		size = sizeMessageSet(mi, p, opts)
     		if mi.sizecacheOffset.IsValid() {
    -			atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size))
    +			atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1))
     		}
     		return size
     	}
    @@ -68,11 +72,39 @@ func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int
     		e := p.Apply(mi.extensionOffset).Extensions()
     		size += mi.sizeExtensions(e, opts)
     	}
    +
    +	var lazy **protolazy.XXX_lazyUnmarshalInfo
    +	var presence presence
    +	if mi.presenceOffset.IsValid() {
    +		presence = p.Apply(mi.presenceOffset).PresenceInfo()
    +		if mi.lazyOffset.IsValid() {
    +			lazy = p.Apply(mi.lazyOffset).LazyInfoPtr()
    +		}
    +	}
    +
     	for _, f := range mi.orderedCoderFields {
     		if f.funcs.size == nil {
     			continue
     		}
     		fptr := p.Apply(f.offset)
    +
    +		if f.presenceIndex != noPresence {
    +			if !presence.Present(f.presenceIndex) {
    +				continue
    +			}
    +
    +			if f.isLazy && fptr.AtomicGetPointer().IsNil() {
    +				if lazyFields(opts) {
    +					size += (*lazy).SizeField(uint32(f.num))
    +					continue
    +				} else {
    +					mi.lazyUnmarshal(p, f.num)
    +				}
    +			}
    +			size += f.funcs.size(fptr, f, opts)
    +			continue
    +		}
    +
     		if f.isPointer && fptr.Elem().IsNil() {
     			continue
     		}
    @@ -84,13 +116,16 @@ func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int
     		}
     	}
     	if mi.sizecacheOffset.IsValid() {
    -		if size > math.MaxInt32 {
    +		if size > (math.MaxInt32 - 1) {
     			// The size is too large for the int32 sizecache field.
     			// We will need to recompute the size when encoding;
     			// unfortunately expensive, but better than invalid output.
    -			atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), -1)
    +			atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), 0)
     		} else {
    -			atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size))
    +			// The size cache contains the size + 1, to allow the
    +			// zero value to be invalid, while also allowing for a
    +			// 0 size to be cached.
    +			atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1))
     		}
     	}
     	return size
    @@ -128,11 +163,52 @@ func (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOpt
     			return b, err
     		}
     	}
    +
    +	var lazy **protolazy.XXX_lazyUnmarshalInfo
    +	var presence presence
    +	if mi.presenceOffset.IsValid() {
    +		presence = p.Apply(mi.presenceOffset).PresenceInfo()
    +		if mi.lazyOffset.IsValid() {
    +			lazy = p.Apply(mi.lazyOffset).LazyInfoPtr()
    +		}
    +	}
    +
     	for _, f := range mi.orderedCoderFields {
     		if f.funcs.marshal == nil {
     			continue
     		}
     		fptr := p.Apply(f.offset)
    +
    +		if f.presenceIndex != noPresence {
    +			if !presence.Present(f.presenceIndex) {
    +				continue
    +			}
    +			if f.isLazy {
    +				// Be careful, this field needs to be read atomically, like for a get
    +				if f.isPointer && fptr.AtomicGetPointer().IsNil() {
    +					if lazyFields(opts) {
    +						b, _ = (*lazy).AppendField(b, uint32(f.num))
    +						continue
    +					} else {
    +						mi.lazyUnmarshal(p, f.num)
    +					}
    +				}
    +
    +				b, err = f.funcs.marshal(b, fptr, f, opts)
    +				if err != nil {
    +					return b, err
    +				}
    +				continue
    +			} else if f.isPointer && fptr.Elem().IsNil() {
    +				continue
    +			}
    +			b, err = f.funcs.marshal(b, fptr, f, opts)
    +			if err != nil {
    +				return b, err
    +			}
    +			continue
    +		}
    +
     		if f.isPointer && fptr.Elem().IsNil() {
     			continue
     		}
    @@ -149,6 +225,22 @@ func (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOpt
     	return b, nil
     }
     
    +// fullyLazyExtensions returns true if we should attempt to keep extensions lazy over size and marshal.
    +func fullyLazyExtensions(opts marshalOptions) bool {
    +	// When deterministic marshaling is requested, force an unmarshal for lazy
    +	// extensions to produce a deterministic result, instead of passing through
    +	// bytes lazily that may or may not match what Go Protobuf would produce.
    +	return opts.flags&piface.MarshalDeterministic == 0
    +}
    +
    +// lazyFields returns true if we should attempt to keep fields lazy over size and marshal.
    +func lazyFields(opts marshalOptions) bool {
    +	// When deterministic marshaling is requested, force an unmarshal for lazy
    +	// fields to produce a deterministic result, instead of passing through
    +	// bytes lazily that may or may not match what Go Protobuf would produce.
    +	return opts.flags&piface.MarshalDeterministic == 0
    +}
    +
     func (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) {
     	if ext == nil {
     		return 0
    @@ -158,6 +250,14 @@ func (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marsha
     		if xi.funcs.size == nil {
     			continue
     		}
    +		if fullyLazyExtensions(opts) {
    +			// Don't expand the extension, instead use the buffer to calculate size
    +			if lb := x.lazyBuffer(); lb != nil {
    +				// We got hold of the buffer, so it's still lazy.
    +				n += len(lb)
    +				continue
    +			}
    +		}
     		n += xi.funcs.size(x.Value(), xi.tagsize, opts)
     	}
     	return n
    @@ -176,6 +276,13 @@ func (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField,
     		var err error
     		for _, x := range *ext {
     			xi := getExtensionFieldInfo(x.Type())
    +			if fullyLazyExtensions(opts) {
    +				// Don't expand the extension if it's still in wire format, instead use the buffer content.
    +				if lb := x.lazyBuffer(); lb != nil {
    +					b = append(b, lb...)
    +					continue
    +				}
    +			}
     			b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts)
     		}
     		return b, err
    @@ -191,6 +298,13 @@ func (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField,
     		for _, k := range keys {
     			x := (*ext)[int32(k)]
     			xi := getExtensionFieldInfo(x.Type())
    +			if fullyLazyExtensions(opts) {
    +				// Don't expand the extension if it's still in wire format, instead use the buffer content.
    +				if lb := x.lazyBuffer(); lb != nil {
    +					b = append(b, lb...)
    +					continue
    +				}
    +			}
     			b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts)
     			if err != nil {
     				return b, err
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/equal.go b/vendor/google.golang.org/protobuf/internal/impl/equal.go
    new file mode 100644
    index 000000000000..9f6c32a7d8cd
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/equal.go
    @@ -0,0 +1,224 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package impl
    +
    +import (
    +	"bytes"
    +
    +	"google.golang.org/protobuf/encoding/protowire"
    +	"google.golang.org/protobuf/reflect/protoreflect"
    +	"google.golang.org/protobuf/runtime/protoiface"
    +)
    +
    +func equal(in protoiface.EqualInput) protoiface.EqualOutput {
    +	return protoiface.EqualOutput{Equal: equalMessage(in.MessageA, in.MessageB)}
    +}
    +
    +// equalMessage is a fast-path variant of protoreflect.equalMessage.
    +// It takes advantage of the internal messageState type to avoid
    +// unnecessary allocations, type assertions.
    +func equalMessage(mx, my protoreflect.Message) bool {
    +	if mx == nil || my == nil {
    +		return mx == my
    +	}
    +	if mx.Descriptor() != my.Descriptor() {
    +		return false
    +	}
    +
    +	msx, ok := mx.(*messageState)
    +	if !ok {
    +		return protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my))
    +	}
    +	msy, ok := my.(*messageState)
    +	if !ok {
    +		return protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my))
    +	}
    +
    +	mi := msx.messageInfo()
    +	miy := msy.messageInfo()
    +	if mi != miy {
    +		return protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my))
    +	}
    +	mi.init()
    +	// Compares regular fields
    +	// Modified Message.Range code that compares two messages of the same type
    +	// while going over the fields.
    +	for _, ri := range mi.rangeInfos {
    +		var fd protoreflect.FieldDescriptor
    +		var vx, vy protoreflect.Value
    +
    +		switch ri := ri.(type) {
    +		case *fieldInfo:
    +			hx := ri.has(msx.pointer())
    +			hy := ri.has(msy.pointer())
    +			if hx != hy {
    +				return false
    +			}
    +			if !hx {
    +				continue
    +			}
    +			fd = ri.fieldDesc
    +			vx = ri.get(msx.pointer())
    +			vy = ri.get(msy.pointer())
    +		case *oneofInfo:
    +			fnx := ri.which(msx.pointer())
    +			fny := ri.which(msy.pointer())
    +			if fnx != fny {
    +				return false
    +			}
    +			if fnx <= 0 {
    +				continue
    +			}
    +			fi := mi.fields[fnx]
    +			fd = fi.fieldDesc
    +			vx = fi.get(msx.pointer())
    +			vy = fi.get(msy.pointer())
    +		}
    +
    +		if !equalValue(fd, vx, vy) {
    +			return false
    +		}
    +	}
    +
    +	// Compare extensions.
    +	// This is more complicated because mx or my could have empty/nil extension maps,
    +	// however some populated extension map values are equal to nil extension maps.
    +	emx := mi.extensionMap(msx.pointer())
    +	emy := mi.extensionMap(msy.pointer())
    +	if emx != nil {
    +		for k, x := range *emx {
    +			xd := x.Type().TypeDescriptor()
    +			xv := x.Value()
    +			var y ExtensionField
    +			ok := false
    +			if emy != nil {
    +				y, ok = (*emy)[k]
    +			}
    +			// We need to treat empty lists as equal to nil values
    +			if emy == nil || !ok {
    +				if xd.IsList() && xv.List().Len() == 0 {
    +					continue
    +				}
    +				return false
    +			}
    +
    +			if !equalValue(xd, xv, y.Value()) {
    +				return false
    +			}
    +		}
    +	}
    +	if emy != nil {
    +		// emy may have extensions emx does not have, need to check them as well
    +		for k, y := range *emy {
    +			if emx != nil {
    +				// emx has the field, so we already checked it
    +				if _, ok := (*emx)[k]; ok {
    +					continue
    +				}
    +			}
    +			// Empty lists are equal to nil
    +			if y.Type().TypeDescriptor().IsList() && y.Value().List().Len() == 0 {
    +				continue
    +			}
    +
    +			// Cant be equal if the extension is populated
    +			return false
    +		}
    +	}
    +
    +	return equalUnknown(mx.GetUnknown(), my.GetUnknown())
    +}
    +
    +func equalValue(fd protoreflect.FieldDescriptor, vx, vy protoreflect.Value) bool {
    +	// slow path
    +	if fd.Kind() != protoreflect.MessageKind {
    +		return vx.Equal(vy)
    +	}
    +
    +	// fast path special cases
    +	if fd.IsMap() {
    +		if fd.MapValue().Kind() == protoreflect.MessageKind {
    +			return equalMessageMap(vx.Map(), vy.Map())
    +		}
    +		return vx.Equal(vy)
    +	}
    +
    +	if fd.IsList() {
    +		return equalMessageList(vx.List(), vy.List())
    +	}
    +
    +	return equalMessage(vx.Message(), vy.Message())
    +}
    +
    +// Mostly copied from protoreflect.equalMap.
    +// This variant only works for messages as map types.
    +// All other map types should be handled via Value.Equal.
    +func equalMessageMap(mx, my protoreflect.Map) bool {
    +	if mx.Len() != my.Len() {
    +		return false
    +	}
    +	equal := true
    +	mx.Range(func(k protoreflect.MapKey, vx protoreflect.Value) bool {
    +		if !my.Has(k) {
    +			equal = false
    +			return false
    +		}
    +		vy := my.Get(k)
    +		equal = equalMessage(vx.Message(), vy.Message())
    +		return equal
    +	})
    +	return equal
    +}
    +
    +// Mostly copied from protoreflect.equalList.
    +// The only change is the usage of equalImpl instead of protoreflect.equalValue.
    +func equalMessageList(lx, ly protoreflect.List) bool {
    +	if lx.Len() != ly.Len() {
    +		return false
    +	}
    +	for i := 0; i < lx.Len(); i++ {
    +		// We only operate on messages here since equalImpl will not call us in any other case.
    +		if !equalMessage(lx.Get(i).Message(), ly.Get(i).Message()) {
    +			return false
    +		}
    +	}
    +	return true
    +}
    +
    +// equalUnknown compares unknown fields by direct comparison on the raw bytes
    +// of each individual field number.
    +// Copied from protoreflect.equalUnknown.
    +func equalUnknown(x, y protoreflect.RawFields) bool {
    +	if len(x) != len(y) {
    +		return false
    +	}
    +	if bytes.Equal([]byte(x), []byte(y)) {
    +		return true
    +	}
    +
    +	mx := make(map[protoreflect.FieldNumber]protoreflect.RawFields)
    +	my := make(map[protoreflect.FieldNumber]protoreflect.RawFields)
    +	for len(x) > 0 {
    +		fnum, _, n := protowire.ConsumeField(x)
    +		mx[fnum] = append(mx[fnum], x[:n]...)
    +		x = x[n:]
    +	}
    +	for len(y) > 0 {
    +		fnum, _, n := protowire.ConsumeField(y)
    +		my[fnum] = append(my[fnum], y[:n]...)
    +		y = y[n:]
    +	}
    +	if len(mx) != len(my) {
    +		return false
    +	}
    +
    +	for k, v1 := range mx {
    +		if v2, ok := my[k]; !ok || !bytes.Equal([]byte(v1), []byte(v2)) {
    +			return false
    +		}
    +	}
    +
    +	return true
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/extension.go b/vendor/google.golang.org/protobuf/internal/impl/extension.go
    index cb25b0bae1d7..e31249f64f78 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/extension.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/extension.go
    @@ -53,7 +53,7 @@ type ExtensionInfo struct {
     	// type returned by InterfaceOf may not be identical.
     	//
     	// Deprecated: Use InterfaceOf(xt.Zero()) instead.
    -	ExtensionType interface{}
    +	ExtensionType any
     
     	// Field is the field number of the extension.
     	//
    @@ -95,16 +95,16 @@ func (xi *ExtensionInfo) New() protoreflect.Value {
     func (xi *ExtensionInfo) Zero() protoreflect.Value {
     	return xi.lazyInit().Zero()
     }
    -func (xi *ExtensionInfo) ValueOf(v interface{}) protoreflect.Value {
    +func (xi *ExtensionInfo) ValueOf(v any) protoreflect.Value {
     	return xi.lazyInit().PBValueOf(reflect.ValueOf(v))
     }
    -func (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) interface{} {
    +func (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) any {
     	return xi.lazyInit().GoValueOf(v).Interface()
     }
     func (xi *ExtensionInfo) IsValidValue(v protoreflect.Value) bool {
     	return xi.lazyInit().IsValidPB(v)
     }
    -func (xi *ExtensionInfo) IsValidInterface(v interface{}) bool {
    +func (xi *ExtensionInfo) IsValidInterface(v any) bool {
     	return xi.lazyInit().IsValidGo(reflect.ValueOf(v))
     }
     func (xi *ExtensionInfo) TypeDescriptor() protoreflect.ExtensionTypeDescriptor {
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/lazy.go b/vendor/google.golang.org/protobuf/internal/impl/lazy.go
    new file mode 100644
    index 000000000000..e8fb6c35b4ab
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/lazy.go
    @@ -0,0 +1,433 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package impl
    +
    +import (
    +	"fmt"
    +	"math/bits"
    +	"os"
    +	"reflect"
    +	"sort"
    +	"sync/atomic"
    +
    +	"google.golang.org/protobuf/encoding/protowire"
    +	"google.golang.org/protobuf/internal/errors"
    +	"google.golang.org/protobuf/internal/protolazy"
    +	"google.golang.org/protobuf/reflect/protoreflect"
    +	preg "google.golang.org/protobuf/reflect/protoregistry"
    +	piface "google.golang.org/protobuf/runtime/protoiface"
    +)
    +
    +var enableLazy int32 = func() int32 {
    +	if os.Getenv("GOPROTODEBUG") == "nolazy" {
    +		return 0
    +	}
    +	return 1
    +}()
    +
    +// EnableLazyUnmarshal enables lazy unmarshaling.
    +func EnableLazyUnmarshal(enable bool) {
    +	if enable {
    +		atomic.StoreInt32(&enableLazy, 1)
    +		return
    +	}
    +	atomic.StoreInt32(&enableLazy, 0)
    +}
    +
    +// LazyEnabled reports whether lazy unmarshalling is currently enabled.
    +func LazyEnabled() bool {
    +	return atomic.LoadInt32(&enableLazy) != 0
    +}
    +
    +// UnmarshalField unmarshals a field in a message.
    +func UnmarshalField(m interface{}, num protowire.Number) {
    +	switch m := m.(type) {
    +	case *messageState:
    +		m.messageInfo().lazyUnmarshal(m.pointer(), num)
    +	case *messageReflectWrapper:
    +		m.messageInfo().lazyUnmarshal(m.pointer(), num)
    +	default:
    +		panic(fmt.Sprintf("unsupported wrapper type %T", m))
    +	}
    +}
    +
    +func (mi *MessageInfo) lazyUnmarshal(p pointer, num protoreflect.FieldNumber) {
    +	var f *coderFieldInfo
    +	if int(num) < len(mi.denseCoderFields) {
    +		f = mi.denseCoderFields[num]
    +	} else {
    +		f = mi.coderFields[num]
    +	}
    +	if f == nil {
    +		panic(fmt.Sprintf("lazyUnmarshal: field info for %v.%v", mi.Desc.FullName(), num))
    +	}
    +	lazy := *p.Apply(mi.lazyOffset).LazyInfoPtr()
    +	start, end, found, _, multipleEntries := lazy.FindFieldInProto(uint32(num))
    +	if !found && multipleEntries == nil {
    +		panic(fmt.Sprintf("lazyUnmarshal: can't find field data for %v.%v", mi.Desc.FullName(), num))
    +	}
    +	// The actual pointer in the message can not be set until the whole struct is filled in, otherwise we will have races.
    +	// Create another pointer and set it atomically, if we won the race and the pointer in the original message is still nil.
    +	fp := pointerOfValue(reflect.New(f.ft))
    +	if multipleEntries != nil {
    +		for _, entry := range multipleEntries {
    +			mi.unmarshalField(lazy.Buffer()[entry.Start:entry.End], fp, f, lazy, lazy.UnmarshalFlags())
    +		}
    +	} else {
    +		mi.unmarshalField(lazy.Buffer()[start:end], fp, f, lazy, lazy.UnmarshalFlags())
    +	}
    +	p.Apply(f.offset).AtomicSetPointerIfNil(fp.Elem())
    +}
    +
    +func (mi *MessageInfo) unmarshalField(b []byte, p pointer, f *coderFieldInfo, lazyInfo *protolazy.XXX_lazyUnmarshalInfo, flags piface.UnmarshalInputFlags) error {
    +	opts := lazyUnmarshalOptions
    +	opts.flags |= flags
    +	for len(b) > 0 {
    +		// Parse the tag (field number and wire type).
    +		var tag uint64
    +		if b[0] < 0x80 {
    +			tag = uint64(b[0])
    +			b = b[1:]
    +		} else if len(b) >= 2 && b[1] < 128 {
    +			tag = uint64(b[0]&0x7f) + uint64(b[1])<<7
    +			b = b[2:]
    +		} else {
    +			var n int
    +			tag, n = protowire.ConsumeVarint(b)
    +			if n < 0 {
    +				return errors.New("invalid wire data")
    +			}
    +			b = b[n:]
    +		}
    +		var num protowire.Number
    +		if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {
    +			return errors.New("invalid wire data")
    +		} else {
    +			num = protowire.Number(n)
    +		}
    +		wtyp := protowire.Type(tag & 7)
    +		if num == f.num {
    +			o, err := f.funcs.unmarshal(b, p, wtyp, f, opts)
    +			if err == nil {
    +				b = b[o.n:]
    +				continue
    +			}
    +			if err != errUnknown {
    +				return err
    +			}
    +		}
    +		n := protowire.ConsumeFieldValue(num, wtyp, b)
    +		if n < 0 {
    +			return errors.New("invalid wire data")
    +		}
    +		b = b[n:]
    +	}
    +	return nil
    +}
    +
    +func (mi *MessageInfo) skipField(b []byte, f *coderFieldInfo, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) {
    +	fmi := f.validation.mi
    +	if fmi == nil {
    +		fd := mi.Desc.Fields().ByNumber(f.num)
    +		if fd == nil || !fd.IsWeak() {
    +			return out, ValidationUnknown
    +		}
    +		messageName := fd.Message().FullName()
    +		messageType, err := preg.GlobalTypes.FindMessageByName(messageName)
    +		if err != nil {
    +			return out, ValidationUnknown
    +		}
    +		var ok bool
    +		fmi, ok = messageType.(*MessageInfo)
    +		if !ok {
    +			return out, ValidationUnknown
    +		}
    +	}
    +	fmi.init()
    +	switch f.validation.typ {
    +	case validationTypeMessage:
    +		if wtyp != protowire.BytesType {
    +			return out, ValidationWrongWireType
    +		}
    +		v, n := protowire.ConsumeBytes(b)
    +		if n < 0 {
    +			return out, ValidationInvalid
    +		}
    +		out, st := fmi.validate(v, 0, opts)
    +		out.n = n
    +		return out, st
    +	case validationTypeGroup:
    +		if wtyp != protowire.StartGroupType {
    +			return out, ValidationWrongWireType
    +		}
    +		out, st := fmi.validate(b, f.num, opts)
    +		return out, st
    +	default:
    +		return out, ValidationUnknown
    +	}
    +}
    +
    +// unmarshalPointerLazy is similar to unmarshalPointerEager, but it
    +// specifically handles lazy unmarshalling.  it expects lazyOffset and
    +// presenceOffset to both be valid.
    +func (mi *MessageInfo) unmarshalPointerLazy(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {
    +	initialized := true
    +	var requiredMask uint64
    +	var lazy **protolazy.XXX_lazyUnmarshalInfo
    +	var presence presence
    +	var lazyIndex []protolazy.IndexEntry
    +	var lastNum protowire.Number
    +	outOfOrder := false
    +	lazyDecode := false
    +	presence = p.Apply(mi.presenceOffset).PresenceInfo()
    +	lazy = p.Apply(mi.lazyOffset).LazyInfoPtr()
    +	if !presence.AnyPresent(mi.presenceSize) {
    +		if opts.CanBeLazy() {
    +			// If the message contains existing data, we need to merge into it.
    +			// Lazy unmarshaling doesn't merge, so only enable it when the
    +			// message is empty (has no presence bitmap).
    +			lazyDecode = true
    +			if *lazy == nil {
    +				*lazy = &protolazy.XXX_lazyUnmarshalInfo{}
    +			}
    +			(*lazy).SetUnmarshalFlags(opts.flags)
    +			if !opts.AliasBuffer() {
    +				// Make a copy of the buffer for lazy unmarshaling.
    +				// Set the AliasBuffer flag so recursive unmarshal
    +				// operations reuse the copy.
    +				b = append([]byte{}, b...)
    +				opts.flags |= piface.UnmarshalAliasBuffer
    +			}
    +			(*lazy).SetBuffer(b)
    +		}
    +	}
    +	// Track special handling of lazy fields.
    +	//
    +	// In the common case, all fields are lazyValidateOnly (and lazyFields remains nil).
    +	// In the event that validation for a field fails, this map tracks handling of the field.
    +	type lazyAction uint8
    +	const (
    +		lazyValidateOnly   lazyAction = iota // validate the field only
    +		lazyUnmarshalNow                     // eagerly unmarshal the field
    +		lazyUnmarshalLater                   // unmarshal the field after the message is fully processed
    +	)
    +	var lazyFields map[*coderFieldInfo]lazyAction
    +	var exts *map[int32]ExtensionField
    +	start := len(b)
    +	pos := 0
    +	for len(b) > 0 {
    +		// Parse the tag (field number and wire type).
    +		var tag uint64
    +		if b[0] < 0x80 {
    +			tag = uint64(b[0])
    +			b = b[1:]
    +		} else if len(b) >= 2 && b[1] < 128 {
    +			tag = uint64(b[0]&0x7f) + uint64(b[1])<<7
    +			b = b[2:]
    +		} else {
    +			var n int
    +			tag, n = protowire.ConsumeVarint(b)
    +			if n < 0 {
    +				return out, errDecode
    +			}
    +			b = b[n:]
    +		}
    +		var num protowire.Number
    +		if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {
    +			return out, errors.New("invalid field number")
    +		} else {
    +			num = protowire.Number(n)
    +		}
    +		wtyp := protowire.Type(tag & 7)
    +
    +		if wtyp == protowire.EndGroupType {
    +			if num != groupTag {
    +				return out, errors.New("mismatching end group marker")
    +			}
    +			groupTag = 0
    +			break
    +		}
    +
    +		var f *coderFieldInfo
    +		if int(num) < len(mi.denseCoderFields) {
    +			f = mi.denseCoderFields[num]
    +		} else {
    +			f = mi.coderFields[num]
    +		}
    +		var n int
    +		err := errUnknown
    +		discardUnknown := false
    +	Field:
    +		switch {
    +		case f != nil:
    +			if f.funcs.unmarshal == nil {
    +				break
    +			}
    +			if f.isLazy && lazyDecode {
    +				switch {
    +				case lazyFields == nil || lazyFields[f] == lazyValidateOnly:
    +					// Attempt to validate this field and leave it for later lazy unmarshaling.
    +					o, valid := mi.skipField(b, f, wtyp, opts)
    +					switch valid {
    +					case ValidationValid:
    +						// Skip over the valid field and continue.
    +						err = nil
    +						presence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)
    +						requiredMask |= f.validation.requiredBit
    +						if !o.initialized {
    +							initialized = false
    +						}
    +						n = o.n
    +						break Field
    +					case ValidationInvalid:
    +						return out, errors.New("invalid proto wire format")
    +					case ValidationWrongWireType:
    +						break Field
    +					case ValidationUnknown:
    +						if lazyFields == nil {
    +							lazyFields = make(map[*coderFieldInfo]lazyAction)
    +						}
    +						if presence.Present(f.presenceIndex) {
    +							// We were unable to determine if the field is valid or not,
    +							// and we've already skipped over at least one instance of this
    +							// field. Clear the presence bit (so if we stop decoding early,
    +							// we don't leave a partially-initialized field around) and flag
    +							// the field for unmarshaling before we return.
    +							presence.ClearPresent(f.presenceIndex)
    +							lazyFields[f] = lazyUnmarshalLater
    +							discardUnknown = true
    +							break Field
    +						} else {
    +							// We were unable to determine if the field is valid or not,
    +							// but this is the first time we've seen it. Flag it as needing
    +							// eager unmarshaling and fall through to the eager unmarshal case below.
    +							lazyFields[f] = lazyUnmarshalNow
    +						}
    +					}
    +				case lazyFields[f] == lazyUnmarshalLater:
    +					// This field will be unmarshaled in a separate pass below.
    +					// Skip over it here.
    +					discardUnknown = true
    +					break Field
    +				default:
    +					// Eagerly unmarshal the field.
    +				}
    +			}
    +			if f.isLazy && !lazyDecode && presence.Present(f.presenceIndex) {
    +				if p.Apply(f.offset).AtomicGetPointer().IsNil() {
    +					mi.lazyUnmarshal(p, f.num)
    +				}
    +			}
    +			var o unmarshalOutput
    +			o, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts)
    +			n = o.n
    +			if err != nil {
    +				break
    +			}
    +			requiredMask |= f.validation.requiredBit
    +			if f.funcs.isInit != nil && !o.initialized {
    +				initialized = false
    +			}
    +			if f.presenceIndex != noPresence {
    +				presence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)
    +			}
    +		default:
    +			// Possible extension.
    +			if exts == nil && mi.extensionOffset.IsValid() {
    +				exts = p.Apply(mi.extensionOffset).Extensions()
    +				if *exts == nil {
    +					*exts = make(map[int32]ExtensionField)
    +				}
    +			}
    +			if exts == nil {
    +				break
    +			}
    +			var o unmarshalOutput
    +			o, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts)
    +			if err != nil {
    +				break
    +			}
    +			n = o.n
    +			if !o.initialized {
    +				initialized = false
    +			}
    +		}
    +		if err != nil {
    +			if err != errUnknown {
    +				return out, err
    +			}
    +			n = protowire.ConsumeFieldValue(num, wtyp, b)
    +			if n < 0 {
    +				return out, errDecode
    +			}
    +			if !discardUnknown && !opts.DiscardUnknown() && mi.unknownOffset.IsValid() {
    +				u := mi.mutableUnknownBytes(p)
    +				*u = protowire.AppendTag(*u, num, wtyp)
    +				*u = append(*u, b[:n]...)
    +			}
    +		}
    +		b = b[n:]
    +		end := start - len(b)
    +		if lazyDecode && f != nil && f.isLazy {
    +			if num != lastNum {
    +				lazyIndex = append(lazyIndex, protolazy.IndexEntry{
    +					FieldNum: uint32(num),
    +					Start:    uint32(pos),
    +					End:      uint32(end),
    +				})
    +			} else {
    +				i := len(lazyIndex) - 1
    +				lazyIndex[i].End = uint32(end)
    +				lazyIndex[i].MultipleContiguous = true
    +			}
    +		}
    +		if num < lastNum {
    +			outOfOrder = true
    +		}
    +		pos = end
    +		lastNum = num
    +	}
    +	if groupTag != 0 {
    +		return out, errors.New("missing end group marker")
    +	}
    +	if lazyFields != nil {
    +		// Some fields failed validation, and now need to be unmarshaled.
    +		for f, action := range lazyFields {
    +			if action != lazyUnmarshalLater {
    +				continue
    +			}
    +			initialized = false
    +			if *lazy == nil {
    +				*lazy = &protolazy.XXX_lazyUnmarshalInfo{}
    +			}
    +			if err := mi.unmarshalField((*lazy).Buffer(), p.Apply(f.offset), f, *lazy, opts.flags); err != nil {
    +				return out, err
    +			}
    +			presence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)
    +		}
    +	}
    +	if lazyDecode {
    +		if outOfOrder {
    +			sort.Slice(lazyIndex, func(i, j int) bool {
    +				return lazyIndex[i].FieldNum < lazyIndex[j].FieldNum ||
    +					(lazyIndex[i].FieldNum == lazyIndex[j].FieldNum &&
    +						lazyIndex[i].Start < lazyIndex[j].Start)
    +			})
    +		}
    +		if *lazy == nil {
    +			*lazy = &protolazy.XXX_lazyUnmarshalInfo{}
    +		}
    +
    +		(*lazy).SetIndex(lazyIndex)
    +	}
    +	if mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) {
    +		initialized = false
    +	}
    +	if initialized {
    +		out.initialized = true
    +	}
    +	out.n = start - len(b)
    +	return out, nil
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go
    index c1c33d0057ec..81b2b1a763d7 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go
    @@ -97,7 +97,7 @@ func (e *legacyEnumWrapper) Number() protoreflect.EnumNumber {
     func (e *legacyEnumWrapper) ProtoReflect() protoreflect.Enum {
     	return e
     }
    -func (e *legacyEnumWrapper) protoUnwrap() interface{} {
    +func (e *legacyEnumWrapper) protoUnwrap() any {
     	v := reflect.New(e.goTyp).Elem()
     	v.SetInt(int64(e.num))
     	return v.Interface()
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go
    index 6e8677ee633f..b6849d66927d 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go
    @@ -160,6 +160,7 @@ func (x placeholderExtension) HasPresence() bool
     func (x placeholderExtension) HasOptionalKeyword() bool                           { return false }
     func (x placeholderExtension) IsExtension() bool                                  { return true }
     func (x placeholderExtension) IsWeak() bool                                       { return false }
    +func (x placeholderExtension) IsLazy() bool                                       { return false }
     func (x placeholderExtension) IsPacked() bool                                     { return false }
     func (x placeholderExtension) IsList() bool                                       { return false }
     func (x placeholderExtension) IsMap() bool                                        { return false }
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go
    index 950e9a1fe7a3..bf0b6049b46f 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go
    @@ -216,7 +216,7 @@ func aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName
     	}
     	for _, fn := range methods {
     		for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {
    -			if vs, ok := v.Interface().([]interface{}); ok {
    +			if vs, ok := v.Interface().([]any); ok {
     				for _, v := range vs {
     					oneofWrappers = append(oneofWrappers, reflect.TypeOf(v))
     				}
    @@ -567,6 +567,6 @@ func (m aberrantMessage) IsValid() bool {
     func (m aberrantMessage) ProtoMethods() *protoiface.Methods {
     	return aberrantProtoMethods
     }
    -func (m aberrantMessage) protoUnwrap() interface{} {
    +func (m aberrantMessage) protoUnwrap() any {
     	return m.v.Interface()
     }
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/merge.go b/vendor/google.golang.org/protobuf/internal/impl/merge.go
    index 7e65f64f28e3..8ffdce67d343 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/merge.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/merge.go
    @@ -41,11 +41,38 @@ func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) {
     	if src.IsNil() {
     		return
     	}
    +
    +	var presenceSrc presence
    +	var presenceDst presence
    +	if mi.presenceOffset.IsValid() {
    +		presenceSrc = src.Apply(mi.presenceOffset).PresenceInfo()
    +		presenceDst = dst.Apply(mi.presenceOffset).PresenceInfo()
    +	}
    +
     	for _, f := range mi.orderedCoderFields {
     		if f.funcs.merge == nil {
     			continue
     		}
     		sfptr := src.Apply(f.offset)
    +
    +		if f.presenceIndex != noPresence {
    +			if !presenceSrc.Present(f.presenceIndex) {
    +				continue
    +			}
    +			dfptr := dst.Apply(f.offset)
    +			if f.isLazy {
    +				if sfptr.AtomicGetPointer().IsNil() {
    +					mi.lazyUnmarshal(src, f.num)
    +				}
    +				if presenceDst.Present(f.presenceIndex) && dfptr.AtomicGetPointer().IsNil() {
    +					mi.lazyUnmarshal(dst, f.num)
    +				}
    +			}
    +			f.funcs.merge(dst.Apply(f.offset), sfptr, f, opts)
    +			presenceDst.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)
    +			continue
    +		}
    +
     		if f.isPointer && sfptr.Elem().IsNil() {
     			continue
     		}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/message.go b/vendor/google.golang.org/protobuf/internal/impl/message.go
    index 629bacdcedd3..d1f79b4224f0 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/message.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/message.go
    @@ -30,12 +30,12 @@ type MessageInfo struct {
     	// Desc is the underlying message descriptor type and must be populated.
     	Desc protoreflect.MessageDescriptor
     
    -	// Exporter must be provided in a purego environment in order to provide
    -	// access to unexported fields.
    +	// Deprecated: Exporter will be removed the next time we bump
    +	// protoimpl.GenVersion. See https://github.com/golang/protobuf/issues/1640
     	Exporter exporter
     
     	// OneofWrappers is list of pointers to oneof wrapper struct types.
    -	OneofWrappers []interface{}
    +	OneofWrappers []any
     
     	initMu   sync.Mutex // protects all unexported fields
     	initDone uint32
    @@ -47,7 +47,7 @@ type MessageInfo struct {
     // exporter is a function that returns a reference to the ith field of v,
     // where v is a pointer to a struct. It returns nil if it does not support
     // exporting the requested field (e.g., already exported).
    -type exporter func(v interface{}, i int) interface{}
    +type exporter func(v any, i int) any
     
     // getMessageInfo returns the MessageInfo for any message type that
     // is generated by our implementation of protoc-gen-go (for v2 and on).
    @@ -79,6 +79,9 @@ func (mi *MessageInfo) initOnce() {
     	if mi.initDone == 1 {
     		return
     	}
    +	if opaqueInitHook(mi) {
    +		return
    +	}
     
     	t := mi.GoReflectType
     	if t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct {
    @@ -133,6 +136,9 @@ type structInfo struct {
     	extensionOffset offset
     	extensionType   reflect.Type
     
    +	lazyOffset     offset
    +	presenceOffset offset
    +
     	fieldsByNumber        map[protoreflect.FieldNumber]reflect.StructField
     	oneofsByName          map[protoreflect.Name]reflect.StructField
     	oneofWrappersByType   map[reflect.Type]protoreflect.FieldNumber
    @@ -145,6 +151,8 @@ func (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo {
     		weakOffset:      invalidOffset,
     		unknownOffset:   invalidOffset,
     		extensionOffset: invalidOffset,
    +		lazyOffset:      invalidOffset,
    +		presenceOffset:  invalidOffset,
     
     		fieldsByNumber:        map[protoreflect.FieldNumber]reflect.StructField{},
     		oneofsByName:          map[protoreflect.Name]reflect.StructField{},
    @@ -157,24 +165,28 @@ fieldLoop:
     		switch f := t.Field(i); f.Name {
     		case genid.SizeCache_goname, genid.SizeCacheA_goname:
     			if f.Type == sizecacheType {
    -				si.sizecacheOffset = offsetOf(f, mi.Exporter)
    +				si.sizecacheOffset = offsetOf(f)
     				si.sizecacheType = f.Type
     			}
     		case genid.WeakFields_goname, genid.WeakFieldsA_goname:
     			if f.Type == weakFieldsType {
    -				si.weakOffset = offsetOf(f, mi.Exporter)
    +				si.weakOffset = offsetOf(f)
     				si.weakType = f.Type
     			}
     		case genid.UnknownFields_goname, genid.UnknownFieldsA_goname:
     			if f.Type == unknownFieldsAType || f.Type == unknownFieldsBType {
    -				si.unknownOffset = offsetOf(f, mi.Exporter)
    +				si.unknownOffset = offsetOf(f)
     				si.unknownType = f.Type
     			}
     		case genid.ExtensionFields_goname, genid.ExtensionFieldsA_goname, genid.ExtensionFieldsB_goname:
     			if f.Type == extensionFieldsType {
    -				si.extensionOffset = offsetOf(f, mi.Exporter)
    +				si.extensionOffset = offsetOf(f)
     				si.extensionType = f.Type
     			}
    +		case "lazyFields", "XXX_lazyUnmarshalInfo":
    +			si.lazyOffset = offsetOf(f)
    +		case "XXX_presence":
    +			si.presenceOffset = offsetOf(f)
     		default:
     			for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") {
     				if len(s) > 0 && strings.Trim(s, "0123456789") == "" {
    @@ -201,7 +213,7 @@ fieldLoop:
     	}
     	for _, fn := range methods {
     		for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {
    -			if vs, ok := v.Interface().([]interface{}); ok {
    +			if vs, ok := v.Interface().([]any); ok {
     				oneofWrappers = vs
     			}
     		}
    @@ -256,7 +268,7 @@ func (mi *MessageInfo) Message(i int) protoreflect.MessageType {
     
     type mapEntryType struct {
     	desc    protoreflect.MessageDescriptor
    -	valType interface{} // zero value of enum or message type
    +	valType any // zero value of enum or message type
     }
     
     func (mt mapEntryType) New() protoreflect.Message {
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_opaque.go b/vendor/google.golang.org/protobuf/internal/impl/message_opaque.go
    new file mode 100644
    index 000000000000..d8dcd7886364
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/message_opaque.go
    @@ -0,0 +1,632 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package impl
    +
    +import (
    +	"fmt"
    +	"math"
    +	"reflect"
    +	"strings"
    +	"sync/atomic"
    +
    +	"google.golang.org/protobuf/reflect/protoreflect"
    +)
    +
    +type opaqueStructInfo struct {
    +	structInfo
    +}
    +
    +// isOpaque determines whether a protobuf message type is on the Opaque API.  It
    +// checks whether the type is a Go struct that protoc-gen-go would generate.
    +//
    +// This function only detects newly generated messages from the v2
    +// implementation of protoc-gen-go. It is unable to classify generated messages
    +// that are too old or those that are generated by a different generator
    +// such as protoc-gen-gogo.
    +func isOpaque(t reflect.Type) bool {
    +	// The current detection mechanism is to simply check the first field
    +	// for a struct tag with the "protogen" key.
    +	if t.Kind() == reflect.Struct && t.NumField() > 0 {
    +		pgt := t.Field(0).Tag.Get("protogen")
    +		return strings.HasPrefix(pgt, "opaque.")
    +	}
    +	return false
    +}
    +
    +func opaqueInitHook(mi *MessageInfo) bool {
    +	mt := mi.GoReflectType.Elem()
    +	si := opaqueStructInfo{
    +		structInfo: mi.makeStructInfo(mt),
    +	}
    +
    +	if !isOpaque(mt) {
    +		return false
    +	}
    +
    +	defer atomic.StoreUint32(&mi.initDone, 1)
    +
    +	mi.fields = map[protoreflect.FieldNumber]*fieldInfo{}
    +	fds := mi.Desc.Fields()
    +	for i := 0; i < fds.Len(); i++ {
    +		fd := fds.Get(i)
    +		fs := si.fieldsByNumber[fd.Number()]
    +		var fi fieldInfo
    +		usePresence, _ := usePresenceForField(si, fd)
    +
    +		switch {
    +		case fd.IsWeak():
    +			// Weak fields are no different for opaque.
    +			fi = fieldInfoForWeakMessage(fd, si.weakOffset)
    +		case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():
    +			// Oneofs are no different for opaque.
    +			fi = fieldInfoForOneof(fd, si.oneofsByName[fd.ContainingOneof().Name()], mi.Exporter, si.oneofWrappersByNumber[fd.Number()])
    +		case fd.IsMap():
    +			fi = mi.fieldInfoForMapOpaque(si, fd, fs)
    +		case fd.IsList() && fd.Message() == nil && usePresence:
    +			fi = mi.fieldInfoForScalarListOpaque(si, fd, fs)
    +		case fd.IsList() && fd.Message() == nil:
    +			// Proto3 lists without presence can use same access methods as open
    +			fi = fieldInfoForList(fd, fs, mi.Exporter)
    +		case fd.IsList() && usePresence:
    +			fi = mi.fieldInfoForMessageListOpaque(si, fd, fs)
    +		case fd.IsList():
    +			// Proto3 opaque messages that does not need presence bitmap.
    +			// Different representation than open struct, but same logic
    +			fi = mi.fieldInfoForMessageListOpaqueNoPresence(si, fd, fs)
    +		case fd.Message() != nil && usePresence:
    +			fi = mi.fieldInfoForMessageOpaque(si, fd, fs)
    +		case fd.Message() != nil:
    +			// Proto3 messages without presence can use same access methods as open
    +			fi = fieldInfoForMessage(fd, fs, mi.Exporter)
    +		default:
    +			fi = mi.fieldInfoForScalarOpaque(si, fd, fs)
    +		}
    +		mi.fields[fd.Number()] = &fi
    +	}
    +	mi.oneofs = map[protoreflect.Name]*oneofInfo{}
    +	for i := 0; i < mi.Desc.Oneofs().Len(); i++ {
    +		od := mi.Desc.Oneofs().Get(i)
    +		mi.oneofs[od.Name()] = makeOneofInfoOpaque(mi, od, si.structInfo, mi.Exporter)
    +	}
    +
    +	mi.denseFields = make([]*fieldInfo, fds.Len()*2)
    +	for i := 0; i < fds.Len(); i++ {
    +		if fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) {
    +			mi.denseFields[fd.Number()] = mi.fields[fd.Number()]
    +		}
    +	}
    +
    +	for i := 0; i < fds.Len(); {
    +		fd := fds.Get(i)
    +		if od := fd.ContainingOneof(); od != nil && !fd.ContainingOneof().IsSynthetic() {
    +			mi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()])
    +			i += od.Fields().Len()
    +		} else {
    +			mi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()])
    +			i++
    +		}
    +	}
    +
    +	mi.makeExtensionFieldsFunc(mt, si.structInfo)
    +	mi.makeUnknownFieldsFunc(mt, si.structInfo)
    +	mi.makeOpaqueCoderMethods(mt, si)
    +	mi.makeFieldTypes(si.structInfo)
    +
    +	return true
    +}
    +
    +func makeOneofInfoOpaque(mi *MessageInfo, od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo {
    +	oi := &oneofInfo{oneofDesc: od}
    +	if od.IsSynthetic() {
    +		fd := od.Fields().Get(0)
    +		index, _ := presenceIndex(mi.Desc, fd)
    +		oi.which = func(p pointer) protoreflect.FieldNumber {
    +			if p.IsNil() {
    +				return 0
    +			}
    +			if !mi.present(p, index) {
    +				return 0
    +			}
    +			return od.Fields().Get(0).Number()
    +		}
    +		return oi
    +	}
    +	// Dispatch to non-opaque oneof implementation for non-synthetic oneofs.
    +	return makeOneofInfo(od, si, x)
    +}
    +
    +func (mi *MessageInfo) fieldInfoForMapOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
    +	ft := fs.Type
    +	if ft.Kind() != reflect.Map {
    +		panic(fmt.Sprintf("invalid type: got %v, want map kind", ft))
    +	}
    +	fieldOffset := offsetOf(fs)
    +	conv := NewConverter(ft, fd)
    +	return fieldInfo{
    +		fieldDesc: fd,
    +		has: func(p pointer) bool {
    +			if p.IsNil() {
    +				return false
    +			}
    +			// Don't bother checking presence bits, since we need to
    +			// look at the map length even if the presence bit is set.
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			return rv.Len() > 0
    +		},
    +		clear: func(p pointer) {
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			rv.Set(reflect.Zero(rv.Type()))
    +		},
    +		get: func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			if rv.Len() == 0 {
    +				return conv.Zero()
    +			}
    +			return conv.PBValueOf(rv)
    +		},
    +		set: func(p pointer, v protoreflect.Value) {
    +			pv := conv.GoValueOf(v)
    +			if pv.IsNil() {
    +				panic(fmt.Sprintf("invalid value: setting map field to read-only value"))
    +			}
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			rv.Set(pv)
    +		},
    +		mutable: func(p pointer) protoreflect.Value {
    +			v := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			if v.IsNil() {
    +				v.Set(reflect.MakeMap(fs.Type))
    +			}
    +			return conv.PBValueOf(v)
    +		},
    +		newField: func() protoreflect.Value {
    +			return conv.New()
    +		},
    +	}
    +}
    +
    +func (mi *MessageInfo) fieldInfoForScalarListOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
    +	ft := fs.Type
    +	if ft.Kind() != reflect.Slice {
    +		panic(fmt.Sprintf("invalid type: got %v, want slice kind", ft))
    +	}
    +	conv := NewConverter(reflect.PtrTo(ft), fd)
    +	fieldOffset := offsetOf(fs)
    +	index, _ := presenceIndex(mi.Desc, fd)
    +	return fieldInfo{
    +		fieldDesc: fd,
    +		has: func(p pointer) bool {
    +			if p.IsNil() {
    +				return false
    +			}
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			return rv.Len() > 0
    +		},
    +		clear: func(p pointer) {
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			rv.Set(reflect.Zero(rv.Type()))
    +		},
    +		get: func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type)
    +			if rv.Elem().Len() == 0 {
    +				return conv.Zero()
    +			}
    +			return conv.PBValueOf(rv)
    +		},
    +		set: func(p pointer, v protoreflect.Value) {
    +			pv := conv.GoValueOf(v)
    +			if pv.IsNil() {
    +				panic(fmt.Sprintf("invalid value: setting repeated field to read-only value"))
    +			}
    +			mi.setPresent(p, index)
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			rv.Set(pv.Elem())
    +		},
    +		mutable: func(p pointer) protoreflect.Value {
    +			mi.setPresent(p, index)
    +			return conv.PBValueOf(p.Apply(fieldOffset).AsValueOf(fs.Type))
    +		},
    +		newField: func() protoreflect.Value {
    +			return conv.New()
    +		},
    +	}
    +}
    +
    +func (mi *MessageInfo) fieldInfoForMessageListOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
    +	ft := fs.Type
    +	if ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {
    +		panic(fmt.Sprintf("invalid type: got %v, want slice kind", ft))
    +	}
    +	conv := NewConverter(ft, fd)
    +	fieldOffset := offsetOf(fs)
    +	index, _ := presenceIndex(mi.Desc, fd)
    +	fieldNumber := fd.Number()
    +	return fieldInfo{
    +		fieldDesc: fd,
    +		has: func(p pointer) bool {
    +			if p.IsNil() {
    +				return false
    +			}
    +			if !mi.present(p, index) {
    +				return false
    +			}
    +			sp := p.Apply(fieldOffset).AtomicGetPointer()
    +			if sp.IsNil() {
    +				// Lazily unmarshal this field.
    +				mi.lazyUnmarshal(p, fieldNumber)
    +				sp = p.Apply(fieldOffset).AtomicGetPointer()
    +			}
    +			rv := sp.AsValueOf(fs.Type.Elem())
    +			return rv.Elem().Len() > 0
    +		},
    +		clear: func(p pointer) {
    +			fp := p.Apply(fieldOffset)
    +			sp := fp.AtomicGetPointer()
    +			if sp.IsNil() {
    +				sp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))
    +				mi.setPresent(p, index)
    +			}
    +			rv := sp.AsValueOf(fs.Type.Elem())
    +			rv.Elem().Set(reflect.Zero(rv.Type().Elem()))
    +		},
    +		get: func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			if !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			sp := p.Apply(fieldOffset).AtomicGetPointer()
    +			if sp.IsNil() {
    +				// Lazily unmarshal this field.
    +				mi.lazyUnmarshal(p, fieldNumber)
    +				sp = p.Apply(fieldOffset).AtomicGetPointer()
    +			}
    +			rv := sp.AsValueOf(fs.Type.Elem())
    +			if rv.Elem().Len() == 0 {
    +				return conv.Zero()
    +			}
    +			return conv.PBValueOf(rv)
    +		},
    +		set: func(p pointer, v protoreflect.Value) {
    +			fp := p.Apply(fieldOffset)
    +			sp := fp.AtomicGetPointer()
    +			if sp.IsNil() {
    +				sp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))
    +				mi.setPresent(p, index)
    +			}
    +			rv := sp.AsValueOf(fs.Type.Elem())
    +			val := conv.GoValueOf(v)
    +			if val.IsNil() {
    +				panic(fmt.Sprintf("invalid value: setting repeated field to read-only value"))
    +			} else {
    +				rv.Elem().Set(val.Elem())
    +			}
    +		},
    +		mutable: func(p pointer) protoreflect.Value {
    +			fp := p.Apply(fieldOffset)
    +			sp := fp.AtomicGetPointer()
    +			if sp.IsNil() {
    +				if mi.present(p, index) {
    +					// Lazily unmarshal this field.
    +					mi.lazyUnmarshal(p, fieldNumber)
    +					sp = p.Apply(fieldOffset).AtomicGetPointer()
    +				} else {
    +					sp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))
    +					mi.setPresent(p, index)
    +				}
    +			}
    +			rv := sp.AsValueOf(fs.Type.Elem())
    +			return conv.PBValueOf(rv)
    +		},
    +		newField: func() protoreflect.Value {
    +			return conv.New()
    +		},
    +	}
    +}
    +
    +func (mi *MessageInfo) fieldInfoForMessageListOpaqueNoPresence(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
    +	ft := fs.Type
    +	if ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {
    +		panic(fmt.Sprintf("invalid type: got %v, want slice kind", ft))
    +	}
    +	conv := NewConverter(ft, fd)
    +	fieldOffset := offsetOf(fs)
    +	return fieldInfo{
    +		fieldDesc: fd,
    +		has: func(p pointer) bool {
    +			if p.IsNil() {
    +				return false
    +			}
    +			sp := p.Apply(fieldOffset).AtomicGetPointer()
    +			if sp.IsNil() {
    +				return false
    +			}
    +			rv := sp.AsValueOf(fs.Type.Elem())
    +			return rv.Elem().Len() > 0
    +		},
    +		clear: func(p pointer) {
    +			sp := p.Apply(fieldOffset).AtomicGetPointer()
    +			if !sp.IsNil() {
    +				rv := sp.AsValueOf(fs.Type.Elem())
    +				rv.Elem().Set(reflect.Zero(rv.Type().Elem()))
    +			}
    +		},
    +		get: func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			sp := p.Apply(fieldOffset).AtomicGetPointer()
    +			if sp.IsNil() {
    +				return conv.Zero()
    +			}
    +			rv := sp.AsValueOf(fs.Type.Elem())
    +			if rv.Elem().Len() == 0 {
    +				return conv.Zero()
    +			}
    +			return conv.PBValueOf(rv)
    +		},
    +		set: func(p pointer, v protoreflect.Value) {
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			if rv.IsNil() {
    +				rv.Set(reflect.New(fs.Type.Elem()))
    +			}
    +			val := conv.GoValueOf(v)
    +			if val.IsNil() {
    +				panic(fmt.Sprintf("invalid value: setting repeated field to read-only value"))
    +			} else {
    +				rv.Elem().Set(val.Elem())
    +			}
    +		},
    +		mutable: func(p pointer) protoreflect.Value {
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			if rv.IsNil() {
    +				rv.Set(reflect.New(fs.Type.Elem()))
    +			}
    +			return conv.PBValueOf(rv)
    +		},
    +		newField: func() protoreflect.Value {
    +			return conv.New()
    +		},
    +	}
    +}
    +
    +func (mi *MessageInfo) fieldInfoForScalarOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
    +	ft := fs.Type
    +	nullable := fd.HasPresence()
    +	if oneof := fd.ContainingOneof(); oneof != nil && oneof.IsSynthetic() {
    +		nullable = true
    +	}
    +	deref := false
    +	if nullable && ft.Kind() == reflect.Ptr {
    +		ft = ft.Elem()
    +		deref = true
    +	}
    +	conv := NewConverter(ft, fd)
    +	fieldOffset := offsetOf(fs)
    +	index, _ := presenceIndex(mi.Desc, fd)
    +	var getter func(p pointer) protoreflect.Value
    +	if !nullable {
    +		getter = getterForDirectScalar(fd, fs, conv, fieldOffset)
    +	} else {
    +		getter = getterForOpaqueNullableScalar(mi, index, fd, fs, conv, fieldOffset)
    +	}
    +	return fieldInfo{
    +		fieldDesc: fd,
    +		has: func(p pointer) bool {
    +			if p.IsNil() {
    +				return false
    +			}
    +			if nullable {
    +				return mi.present(p, index)
    +			}
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			switch rv.Kind() {
    +			case reflect.Bool:
    +				return rv.Bool()
    +			case reflect.Int32, reflect.Int64:
    +				return rv.Int() != 0
    +			case reflect.Uint32, reflect.Uint64:
    +				return rv.Uint() != 0
    +			case reflect.Float32, reflect.Float64:
    +				return rv.Float() != 0 || math.Signbit(rv.Float())
    +			case reflect.String, reflect.Slice:
    +				return rv.Len() > 0
    +			default:
    +				panic(fmt.Sprintf("invalid type: %v", rv.Type())) // should never happen
    +			}
    +		},
    +		clear: func(p pointer) {
    +			if nullable {
    +				mi.clearPresent(p, index)
    +			}
    +			// This is only valuable for bytes and strings, but we do it unconditionally.
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			rv.Set(reflect.Zero(rv.Type()))
    +		},
    +		get: getter,
    +		// TODO: Implement unsafe fast path for set?
    +		set: func(p pointer, v protoreflect.Value) {
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			if deref {
    +				if rv.IsNil() {
    +					rv.Set(reflect.New(ft))
    +				}
    +				rv = rv.Elem()
    +			}
    +
    +			rv.Set(conv.GoValueOf(v))
    +			if nullable && rv.Kind() == reflect.Slice && rv.IsNil() {
    +				rv.Set(emptyBytes)
    +			}
    +			if nullable {
    +				mi.setPresent(p, index)
    +			}
    +		},
    +		newField: func() protoreflect.Value {
    +			return conv.New()
    +		},
    +	}
    +}
    +
    +func (mi *MessageInfo) fieldInfoForMessageOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
    +	ft := fs.Type
    +	conv := NewConverter(ft, fd)
    +	fieldOffset := offsetOf(fs)
    +	index, _ := presenceIndex(mi.Desc, fd)
    +	fieldNumber := fd.Number()
    +	elemType := fs.Type.Elem()
    +	return fieldInfo{
    +		fieldDesc: fd,
    +		has: func(p pointer) bool {
    +			if p.IsNil() {
    +				return false
    +			}
    +			return mi.present(p, index)
    +		},
    +		clear: func(p pointer) {
    +			mi.clearPresent(p, index)
    +			p.Apply(fieldOffset).AtomicSetNilPointer()
    +		},
    +		get: func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			fp := p.Apply(fieldOffset)
    +			mp := fp.AtomicGetPointer()
    +			if mp.IsNil() {
    +				// Lazily unmarshal this field.
    +				mi.lazyUnmarshal(p, fieldNumber)
    +				mp = fp.AtomicGetPointer()
    +			}
    +			rv := mp.AsValueOf(elemType)
    +			return conv.PBValueOf(rv)
    +		},
    +		set: func(p pointer, v protoreflect.Value) {
    +			val := pointerOfValue(conv.GoValueOf(v))
    +			if val.IsNil() {
    +				panic("invalid nil pointer")
    +			}
    +			p.Apply(fieldOffset).AtomicSetPointer(val)
    +			mi.setPresent(p, index)
    +		},
    +		mutable: func(p pointer) protoreflect.Value {
    +			fp := p.Apply(fieldOffset)
    +			mp := fp.AtomicGetPointer()
    +			if mp.IsNil() {
    +				if mi.present(p, index) {
    +					// Lazily unmarshal this field.
    +					mi.lazyUnmarshal(p, fieldNumber)
    +					mp = fp.AtomicGetPointer()
    +				} else {
    +					mp = pointerOfValue(conv.GoValueOf(conv.New()))
    +					fp.AtomicSetPointer(mp)
    +					mi.setPresent(p, index)
    +				}
    +			}
    +			return conv.PBValueOf(mp.AsValueOf(fs.Type.Elem()))
    +		},
    +		newMessage: func() protoreflect.Message {
    +			return conv.New().Message()
    +		},
    +		newField: func() protoreflect.Value {
    +			return conv.New()
    +		},
    +	}
    +}
    +
    +// A presenceList wraps a List, updating presence bits as necessary when the
    +// list contents change.
    +type presenceList struct {
    +	pvalueList
    +	setPresence func(bool)
    +}
    +type pvalueList interface {
    +	protoreflect.List
    +	//Unwrapper
    +}
    +
    +func (list presenceList) Append(v protoreflect.Value) {
    +	list.pvalueList.Append(v)
    +	list.setPresence(true)
    +}
    +func (list presenceList) Truncate(i int) {
    +	list.pvalueList.Truncate(i)
    +	list.setPresence(i > 0)
    +}
    +
    +// presenceIndex returns the index to pass to presence functions.
    +//
    +// TODO: field.Desc.Index() would be simpler, and would give space to record the presence of oneof fields.
    +func presenceIndex(md protoreflect.MessageDescriptor, fd protoreflect.FieldDescriptor) (uint32, presenceSize) {
    +	found := false
    +	var index, numIndices uint32
    +	for i := 0; i < md.Fields().Len(); i++ {
    +		f := md.Fields().Get(i)
    +		if f == fd {
    +			found = true
    +			index = numIndices
    +		}
    +		if f.ContainingOneof() == nil || isLastOneofField(f) {
    +			numIndices++
    +		}
    +	}
    +	if !found {
    +		panic(fmt.Sprintf("BUG: %v not in %v", fd.Name(), md.FullName()))
    +	}
    +	return index, presenceSize(numIndices)
    +}
    +
    +func isLastOneofField(fd protoreflect.FieldDescriptor) bool {
    +	fields := fd.ContainingOneof().Fields()
    +	return fields.Get(fields.Len()-1) == fd
    +}
    +
    +func (mi *MessageInfo) setPresent(p pointer, index uint32) {
    +	p.Apply(mi.presenceOffset).PresenceInfo().SetPresent(index, mi.presenceSize)
    +}
    +
    +func (mi *MessageInfo) clearPresent(p pointer, index uint32) {
    +	p.Apply(mi.presenceOffset).PresenceInfo().ClearPresent(index)
    +}
    +
    +func (mi *MessageInfo) present(p pointer, index uint32) bool {
    +	return p.Apply(mi.presenceOffset).PresenceInfo().Present(index)
    +}
    +
    +// usePresenceForField implements the somewhat intricate logic of when
    +// the presence bitmap is used for a field.  The main logic is that a
    +// field that is optional or that can be lazy will use the presence
    +// bit, but for proto2, also maps have a presence bit. It also records
    +// if the field can ever be lazy, which is true if we have a
    +// lazyOffset and the field is a message or a slice of messages. A
    +// field that is lazy will always need a presence bit.  Oneofs are not
    +// lazy and do not use presence, unless they are a synthetic oneof,
    +// which is a proto3 optional field. For proto3 optionals, we use the
    +// presence and they can also be lazy when applicable (a message).
    +func usePresenceForField(si opaqueStructInfo, fd protoreflect.FieldDescriptor) (usePresence, canBeLazy bool) {
    +	hasLazyField := fd.(interface{ IsLazy() bool }).IsLazy()
    +
    +	// Non-oneof scalar fields with explicit field presence use the presence array.
    +	usesPresenceArray := fd.HasPresence() && fd.Message() == nil && (fd.ContainingOneof() == nil || fd.ContainingOneof().IsSynthetic())
    +	switch {
    +	case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():
    +		return false, false
    +	case fd.IsWeak():
    +		return false, false
    +	case fd.IsMap():
    +		return false, false
    +	case fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind:
    +		return hasLazyField, hasLazyField
    +	default:
    +		return usesPresenceArray || (hasLazyField && fd.HasPresence()), false
    +	}
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_opaque_gen.go b/vendor/google.golang.org/protobuf/internal/impl/message_opaque_gen.go
    new file mode 100644
    index 000000000000..a69825699abf
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/message_opaque_gen.go
    @@ -0,0 +1,132 @@
    +// Copyright 2018 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +// Code generated by generate-types. DO NOT EDIT.
    +
    +package impl
    +
    +import (
    +	"reflect"
    +
    +	"google.golang.org/protobuf/reflect/protoreflect"
    +)
    +
    +func getterForOpaqueNullableScalar(mi *MessageInfo, index uint32, fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {
    +	ft := fs.Type
    +	if ft.Kind() == reflect.Ptr {
    +		ft = ft.Elem()
    +	}
    +	if fd.Kind() == protoreflect.EnumKind {
    +		// Enums for nullable opaque types.
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			return conv.PBValueOf(rv)
    +		}
    +	}
    +	switch ft.Kind() {
    +	case reflect.Bool:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Bool()
    +			return protoreflect.ValueOfBool(*x)
    +		}
    +	case reflect.Int32:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Int32()
    +			return protoreflect.ValueOfInt32(*x)
    +		}
    +	case reflect.Uint32:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Uint32()
    +			return protoreflect.ValueOfUint32(*x)
    +		}
    +	case reflect.Int64:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Int64()
    +			return protoreflect.ValueOfInt64(*x)
    +		}
    +	case reflect.Uint64:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Uint64()
    +			return protoreflect.ValueOfUint64(*x)
    +		}
    +	case reflect.Float32:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Float32()
    +			return protoreflect.ValueOfFloat32(*x)
    +		}
    +	case reflect.Float64:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Float64()
    +			return protoreflect.ValueOfFloat64(*x)
    +		}
    +	case reflect.String:
    +		if fd.Kind() == protoreflect.BytesKind {
    +			return func(p pointer) protoreflect.Value {
    +				if p.IsNil() || !mi.present(p, index) {
    +					return conv.Zero()
    +				}
    +				x := p.Apply(fieldOffset).StringPtr()
    +				if *x == nil {
    +					return conv.Zero()
    +				}
    +				if len(**x) == 0 {
    +					return protoreflect.ValueOfBytes(nil)
    +				}
    +				return protoreflect.ValueOfBytes([]byte(**x))
    +			}
    +		}
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).StringPtr()
    +			if *x == nil {
    +				return conv.Zero()
    +			}
    +			return protoreflect.ValueOfString(**x)
    +		}
    +	case reflect.Slice:
    +		if fd.Kind() == protoreflect.StringKind {
    +			return func(p pointer) protoreflect.Value {
    +				if p.IsNil() || !mi.present(p, index) {
    +					return conv.Zero()
    +				}
    +				x := p.Apply(fieldOffset).Bytes()
    +				return protoreflect.ValueOfString(string(*x))
    +			}
    +		}
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() || !mi.present(p, index) {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Bytes()
    +			return protoreflect.ValueOfBytes(*x)
    +		}
    +	}
    +	panic("unexpected protobuf kind: " + ft.Kind().String())
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go
    index a6f0dbdade64..31c19b54f8d9 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go
    @@ -20,7 +20,7 @@ type reflectMessageInfo struct {
     	// fieldTypes contains the zero value of an enum or message field.
     	// For lists, it contains the element type.
     	// For maps, it contains the entry value type.
    -	fieldTypes map[protoreflect.FieldNumber]interface{}
    +	fieldTypes map[protoreflect.FieldNumber]any
     
     	// denseFields is a subset of fields where:
     	//	0 < fieldDesc.Number() < len(denseFields)
    @@ -28,7 +28,7 @@ type reflectMessageInfo struct {
     	denseFields []*fieldInfo
     
     	// rangeInfos is a list of all fields (not belonging to a oneof) and oneofs.
    -	rangeInfos []interface{} // either *fieldInfo or *oneofInfo
    +	rangeInfos []any // either *fieldInfo or *oneofInfo
     
     	getUnknown   func(pointer) protoreflect.RawFields
     	setUnknown   func(pointer, protoreflect.RawFields)
    @@ -205,6 +205,11 @@ func (mi *MessageInfo) makeFieldTypes(si structInfo) {
     		case fd.IsList():
     			if fd.Enum() != nil || fd.Message() != nil {
     				ft = fs.Type.Elem()
    +
    +				if ft.Kind() == reflect.Slice {
    +					ft = ft.Elem()
    +				}
    +
     			}
     			isMessage = fd.Message() != nil
     		case fd.Enum() != nil:
    @@ -224,7 +229,7 @@ func (mi *MessageInfo) makeFieldTypes(si structInfo) {
     		}
     		if ft != nil {
     			if mi.fieldTypes == nil {
    -				mi.fieldTypes = make(map[protoreflect.FieldNumber]interface{})
    +				mi.fieldTypes = make(map[protoreflect.FieldNumber]any)
     			}
     			mi.fieldTypes[fd.Number()] = reflect.Zero(ft).Interface()
     		}
    @@ -255,6 +260,10 @@ func (m *extensionMap) Has(xd protoreflect.ExtensionTypeDescriptor) (ok bool) {
     	if !ok {
     		return false
     	}
    +	if x.isUnexpandedLazy() {
    +		// Avoid calling x.Value(), which triggers a lazy unmarshal.
    +		return true
    +	}
     	switch {
     	case xd.IsList():
     		return x.Value().List().Len() > 0
    @@ -389,7 +398,7 @@ var (
     // MessageOf returns a reflective view over a message. The input must be a
     // pointer to a named Go struct. If the provided type has a ProtoReflect method,
     // it must be implemented by calling this method.
    -func (mi *MessageInfo) MessageOf(m interface{}) protoreflect.Message {
    +func (mi *MessageInfo) MessageOf(m any) protoreflect.Message {
     	if reflect.TypeOf(m) != mi.GoReflectType {
     		panic(fmt.Sprintf("type mismatch: got %T, want %v", m, mi.GoReflectType))
     	}
    @@ -417,7 +426,7 @@ func (m *messageIfaceWrapper) Reset() {
     func (m *messageIfaceWrapper) ProtoReflect() protoreflect.Message {
     	return (*messageReflectWrapper)(m)
     }
    -func (m *messageIfaceWrapper) protoUnwrap() interface{} {
    +func (m *messageIfaceWrapper) protoUnwrap() any {
     	return m.p.AsIfaceOf(m.mi.GoReflectType.Elem())
     }
     
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go
    index 986322b195a4..3cd1fbc21fb4 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go
    @@ -76,7 +76,7 @@ func fieldInfoForOneof(fd protoreflect.FieldDescriptor, fs reflect.StructField,
     	isMessage := fd.Message() != nil
     
     	// TODO: Implement unsafe fast path?
    -	fieldOffset := offsetOf(fs, x)
    +	fieldOffset := offsetOf(fs)
     	return fieldInfo{
     		// NOTE: The logic below intentionally assumes that oneof fields are
     		// well-formatted. That is, the oneof interface never contains a
    @@ -152,7 +152,7 @@ func fieldInfoForMap(fd protoreflect.FieldDescriptor, fs reflect.StructField, x
     	conv := NewConverter(ft, fd)
     
     	// TODO: Implement unsafe fast path?
    -	fieldOffset := offsetOf(fs, x)
    +	fieldOffset := offsetOf(fs)
     	return fieldInfo{
     		fieldDesc: fd,
     		has: func(p pointer) bool {
    @@ -205,7 +205,7 @@ func fieldInfoForList(fd protoreflect.FieldDescriptor, fs reflect.StructField, x
     	conv := NewConverter(reflect.PtrTo(ft), fd)
     
     	// TODO: Implement unsafe fast path?
    -	fieldOffset := offsetOf(fs, x)
    +	fieldOffset := offsetOf(fs)
     	return fieldInfo{
     		fieldDesc: fd,
     		has: func(p pointer) bool {
    @@ -256,6 +256,7 @@ func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField,
     	ft := fs.Type
     	nullable := fd.HasPresence()
     	isBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8
    +	var getter func(p pointer) protoreflect.Value
     	if nullable {
     		if ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice {
     			// This never occurs for generated message types.
    @@ -268,19 +269,25 @@ func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField,
     		}
     	}
     	conv := NewConverter(ft, fd)
    +	fieldOffset := offsetOf(fs)
    +
    +	// Generate specialized getter functions to avoid going through reflect.Value
    +	if nullable {
    +		getter = getterForNullableScalar(fd, fs, conv, fieldOffset)
    +	} else {
    +		getter = getterForDirectScalar(fd, fs, conv, fieldOffset)
    +	}
     
    -	// TODO: Implement unsafe fast path?
    -	fieldOffset := offsetOf(fs, x)
     	return fieldInfo{
     		fieldDesc: fd,
     		has: func(p pointer) bool {
     			if p.IsNil() {
     				return false
     			}
    -			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
     			if nullable {
    -				return !rv.IsNil()
    +				return !p.Apply(fieldOffset).Elem().IsNil()
     			}
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
     			switch rv.Kind() {
     			case reflect.Bool:
     				return rv.Bool()
    @@ -300,21 +307,8 @@ func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField,
     			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
     			rv.Set(reflect.Zero(rv.Type()))
     		},
    -		get: func(p pointer) protoreflect.Value {
    -			if p.IsNil() {
    -				return conv.Zero()
    -			}
    -			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    -			if nullable {
    -				if rv.IsNil() {
    -					return conv.Zero()
    -				}
    -				if rv.Kind() == reflect.Ptr {
    -					rv = rv.Elem()
    -				}
    -			}
    -			return conv.PBValueOf(rv)
    -		},
    +		get: getter,
    +		// TODO: Implement unsafe fast path for set?
     		set: func(p pointer, v protoreflect.Value) {
     			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
     			if nullable && rv.Kind() == reflect.Ptr {
    @@ -339,7 +333,7 @@ func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField,
     }
     
     func fieldInfoForWeakMessage(fd protoreflect.FieldDescriptor, weakOffset offset) fieldInfo {
    -	if !flags.ProtoLegacy {
    +	if !flags.ProtoLegacyWeak {
     		panic("no support for proto1 weak fields")
     	}
     
    @@ -416,7 +410,7 @@ func fieldInfoForMessage(fd protoreflect.FieldDescriptor, fs reflect.StructField
     	conv := NewConverter(ft, fd)
     
     	// TODO: Implement unsafe fast path?
    -	fieldOffset := offsetOf(fs, x)
    +	fieldOffset := offsetOf(fs)
     	return fieldInfo{
     		fieldDesc: fd,
     		has: func(p pointer) bool {
    @@ -425,7 +419,7 @@ func fieldInfoForMessage(fd protoreflect.FieldDescriptor, fs reflect.StructField
     			}
     			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
     			if fs.Type.Kind() != reflect.Ptr {
    -				return !isZero(rv)
    +				return !rv.IsZero()
     			}
     			return !rv.IsNil()
     		},
    @@ -472,7 +466,7 @@ func makeOneofInfo(od protoreflect.OneofDescriptor, si structInfo, x exporter) *
     	oi := &oneofInfo{oneofDesc: od}
     	if od.IsSynthetic() {
     		fs := si.fieldsByNumber[od.Fields().Get(0).Number()]
    -		fieldOffset := offsetOf(fs, x)
    +		fieldOffset := offsetOf(fs)
     		oi.which = func(p pointer) protoreflect.FieldNumber {
     			if p.IsNil() {
     				return 0
    @@ -485,7 +479,7 @@ func makeOneofInfo(od protoreflect.OneofDescriptor, si structInfo, x exporter) *
     		}
     	} else {
     		fs := si.oneofsByName[od.Name()]
    -		fieldOffset := offsetOf(fs, x)
    +		fieldOffset := offsetOf(fs)
     		oi.which = func(p pointer) protoreflect.FieldNumber {
     			if p.IsNil() {
     				return 0
    @@ -503,41 +497,3 @@ func makeOneofInfo(od protoreflect.OneofDescriptor, si structInfo, x exporter) *
     	}
     	return oi
     }
    -
    -// isZero is identical to reflect.Value.IsZero.
    -// TODO: Remove this when Go1.13 is the minimally supported Go version.
    -func isZero(v reflect.Value) bool {
    -	switch v.Kind() {
    -	case reflect.Bool:
    -		return !v.Bool()
    -	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
    -		return v.Int() == 0
    -	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
    -		return v.Uint() == 0
    -	case reflect.Float32, reflect.Float64:
    -		return math.Float64bits(v.Float()) == 0
    -	case reflect.Complex64, reflect.Complex128:
    -		c := v.Complex()
    -		return math.Float64bits(real(c)) == 0 && math.Float64bits(imag(c)) == 0
    -	case reflect.Array:
    -		for i := 0; i < v.Len(); i++ {
    -			if !isZero(v.Index(i)) {
    -				return false
    -			}
    -		}
    -		return true
    -	case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer:
    -		return v.IsNil()
    -	case reflect.String:
    -		return v.Len() == 0
    -	case reflect.Struct:
    -		for i := 0; i < v.NumField(); i++ {
    -			if !isZero(v.Field(i)) {
    -				return false
    -			}
    -		}
    -		return true
    -	default:
    -		panic(&reflect.ValueError{Method: "reflect.Value.IsZero", Kind: v.Kind()})
    -	}
    -}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field_gen.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field_gen.go
    new file mode 100644
    index 000000000000..af5e063a1e87
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field_gen.go
    @@ -0,0 +1,273 @@
    +// Copyright 2018 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +// Code generated by generate-types. DO NOT EDIT.
    +
    +package impl
    +
    +import (
    +	"reflect"
    +
    +	"google.golang.org/protobuf/reflect/protoreflect"
    +)
    +
    +func getterForNullableScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {
    +	ft := fs.Type
    +	if ft.Kind() == reflect.Ptr {
    +		ft = ft.Elem()
    +	}
    +	if fd.Kind() == protoreflect.EnumKind {
    +		elemType := fs.Type.Elem()
    +		// Enums for nullable types.
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			rv := p.Apply(fieldOffset).Elem().AsValueOf(elemType)
    +			if rv.IsNil() {
    +				return conv.Zero()
    +			}
    +			return conv.PBValueOf(rv.Elem())
    +		}
    +	}
    +	switch ft.Kind() {
    +	case reflect.Bool:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).BoolPtr()
    +			if *x == nil {
    +				return conv.Zero()
    +			}
    +			return protoreflect.ValueOfBool(**x)
    +		}
    +	case reflect.Int32:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Int32Ptr()
    +			if *x == nil {
    +				return conv.Zero()
    +			}
    +			return protoreflect.ValueOfInt32(**x)
    +		}
    +	case reflect.Uint32:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Uint32Ptr()
    +			if *x == nil {
    +				return conv.Zero()
    +			}
    +			return protoreflect.ValueOfUint32(**x)
    +		}
    +	case reflect.Int64:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Int64Ptr()
    +			if *x == nil {
    +				return conv.Zero()
    +			}
    +			return protoreflect.ValueOfInt64(**x)
    +		}
    +	case reflect.Uint64:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Uint64Ptr()
    +			if *x == nil {
    +				return conv.Zero()
    +			}
    +			return protoreflect.ValueOfUint64(**x)
    +		}
    +	case reflect.Float32:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Float32Ptr()
    +			if *x == nil {
    +				return conv.Zero()
    +			}
    +			return protoreflect.ValueOfFloat32(**x)
    +		}
    +	case reflect.Float64:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Float64Ptr()
    +			if *x == nil {
    +				return conv.Zero()
    +			}
    +			return protoreflect.ValueOfFloat64(**x)
    +		}
    +	case reflect.String:
    +		if fd.Kind() == protoreflect.BytesKind {
    +			return func(p pointer) protoreflect.Value {
    +				if p.IsNil() {
    +					return conv.Zero()
    +				}
    +				x := p.Apply(fieldOffset).StringPtr()
    +				if *x == nil {
    +					return conv.Zero()
    +				}
    +				if len(**x) == 0 {
    +					return protoreflect.ValueOfBytes(nil)
    +				}
    +				return protoreflect.ValueOfBytes([]byte(**x))
    +			}
    +		}
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).StringPtr()
    +			if *x == nil {
    +				return conv.Zero()
    +			}
    +			return protoreflect.ValueOfString(**x)
    +		}
    +	case reflect.Slice:
    +		if fd.Kind() == protoreflect.StringKind {
    +			return func(p pointer) protoreflect.Value {
    +				if p.IsNil() {
    +					return conv.Zero()
    +				}
    +				x := p.Apply(fieldOffset).Bytes()
    +				if len(*x) == 0 {
    +					return conv.Zero()
    +				}
    +				return protoreflect.ValueOfString(string(*x))
    +			}
    +		}
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Bytes()
    +			if *x == nil {
    +				return conv.Zero()
    +			}
    +			return protoreflect.ValueOfBytes(*x)
    +		}
    +	}
    +	panic("unexpected protobuf kind: " + ft.Kind().String())
    +}
    +
    +func getterForDirectScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {
    +	ft := fs.Type
    +	if fd.Kind() == protoreflect.EnumKind {
    +		// Enums for non nullable types.
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
    +			return conv.PBValueOf(rv)
    +		}
    +	}
    +	switch ft.Kind() {
    +	case reflect.Bool:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Bool()
    +			return protoreflect.ValueOfBool(*x)
    +		}
    +	case reflect.Int32:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Int32()
    +			return protoreflect.ValueOfInt32(*x)
    +		}
    +	case reflect.Uint32:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Uint32()
    +			return protoreflect.ValueOfUint32(*x)
    +		}
    +	case reflect.Int64:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Int64()
    +			return protoreflect.ValueOfInt64(*x)
    +		}
    +	case reflect.Uint64:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Uint64()
    +			return protoreflect.ValueOfUint64(*x)
    +		}
    +	case reflect.Float32:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Float32()
    +			return protoreflect.ValueOfFloat32(*x)
    +		}
    +	case reflect.Float64:
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Float64()
    +			return protoreflect.ValueOfFloat64(*x)
    +		}
    +	case reflect.String:
    +		if fd.Kind() == protoreflect.BytesKind {
    +			return func(p pointer) protoreflect.Value {
    +				if p.IsNil() {
    +					return conv.Zero()
    +				}
    +				x := p.Apply(fieldOffset).String()
    +				if len(*x) == 0 {
    +					return protoreflect.ValueOfBytes(nil)
    +				}
    +				return protoreflect.ValueOfBytes([]byte(*x))
    +			}
    +		}
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).String()
    +			return protoreflect.ValueOfString(*x)
    +		}
    +	case reflect.Slice:
    +		if fd.Kind() == protoreflect.StringKind {
    +			return func(p pointer) protoreflect.Value {
    +				if p.IsNil() {
    +					return conv.Zero()
    +				}
    +				x := p.Apply(fieldOffset).Bytes()
    +				return protoreflect.ValueOfString(string(*x))
    +			}
    +		}
    +		return func(p pointer) protoreflect.Value {
    +			if p.IsNil() {
    +				return conv.Zero()
    +			}
    +			x := p.Apply(fieldOffset).Bytes()
    +			return protoreflect.ValueOfBytes(*x)
    +		}
    +	}
    +	panic("unexpected protobuf kind: " + ft.Kind().String())
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go
    index 29ba6bd35523..99dc23c6f0a4 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go
    @@ -23,7 +23,7 @@ func (m *messageState) New() protoreflect.Message {
     func (m *messageState) Interface() protoreflect.ProtoMessage {
     	return m.protoUnwrap().(protoreflect.ProtoMessage)
     }
    -func (m *messageState) protoUnwrap() interface{} {
    +func (m *messageState) protoUnwrap() any {
     	return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())
     }
     func (m *messageState) ProtoMethods() *protoiface.Methods {
    @@ -154,7 +154,7 @@ func (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage {
     	}
     	return (*messageIfaceWrapper)(m)
     }
    -func (m *messageReflectWrapper) protoUnwrap() interface{} {
    +func (m *messageReflectWrapper) protoUnwrap() any {
     	return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())
     }
     func (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods {
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go
    deleted file mode 100644
    index 517e94434c73..000000000000
    --- a/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go
    +++ /dev/null
    @@ -1,215 +0,0 @@
    -// Copyright 2018 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build purego || appengine
    -// +build purego appengine
    -
    -package impl
    -
    -import (
    -	"fmt"
    -	"reflect"
    -	"sync"
    -)
    -
    -const UnsafeEnabled = false
    -
    -// Pointer is an opaque pointer type.
    -type Pointer interface{}
    -
    -// offset represents the offset to a struct field, accessible from a pointer.
    -// The offset is the field index into a struct.
    -type offset struct {
    -	index  int
    -	export exporter
    -}
    -
    -// offsetOf returns a field offset for the struct field.
    -func offsetOf(f reflect.StructField, x exporter) offset {
    -	if len(f.Index) != 1 {
    -		panic("embedded structs are not supported")
    -	}
    -	if f.PkgPath == "" {
    -		return offset{index: f.Index[0]} // field is already exported
    -	}
    -	if x == nil {
    -		panic("exporter must be provided for unexported field")
    -	}
    -	return offset{index: f.Index[0], export: x}
    -}
    -
    -// IsValid reports whether the offset is valid.
    -func (f offset) IsValid() bool { return f.index >= 0 }
    -
    -// invalidOffset is an invalid field offset.
    -var invalidOffset = offset{index: -1}
    -
    -// zeroOffset is a noop when calling pointer.Apply.
    -var zeroOffset = offset{index: 0}
    -
    -// pointer is an abstract representation of a pointer to a struct or field.
    -type pointer struct{ v reflect.Value }
    -
    -// pointerOf returns p as a pointer.
    -func pointerOf(p Pointer) pointer {
    -	return pointerOfIface(p)
    -}
    -
    -// pointerOfValue returns v as a pointer.
    -func pointerOfValue(v reflect.Value) pointer {
    -	return pointer{v: v}
    -}
    -
    -// pointerOfIface returns the pointer portion of an interface.
    -func pointerOfIface(v interface{}) pointer {
    -	return pointer{v: reflect.ValueOf(v)}
    -}
    -
    -// IsNil reports whether the pointer is nil.
    -func (p pointer) IsNil() bool {
    -	return p.v.IsNil()
    -}
    -
    -// Apply adds an offset to the pointer to derive a new pointer
    -// to a specified field. The current pointer must be pointing at a struct.
    -func (p pointer) Apply(f offset) pointer {
    -	if f.export != nil {
    -		if v := reflect.ValueOf(f.export(p.v.Interface(), f.index)); v.IsValid() {
    -			return pointer{v: v}
    -		}
    -	}
    -	return pointer{v: p.v.Elem().Field(f.index).Addr()}
    -}
    -
    -// AsValueOf treats p as a pointer to an object of type t and returns the value.
    -// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t))
    -func (p pointer) AsValueOf(t reflect.Type) reflect.Value {
    -	if got := p.v.Type().Elem(); got != t {
    -		panic(fmt.Sprintf("invalid type: got %v, want %v", got, t))
    -	}
    -	return p.v
    -}
    -
    -// AsIfaceOf treats p as a pointer to an object of type t and returns the value.
    -// It is equivalent to p.AsValueOf(t).Interface()
    -func (p pointer) AsIfaceOf(t reflect.Type) interface{} {
    -	return p.AsValueOf(t).Interface()
    -}
    -
    -func (p pointer) Bool() *bool              { return p.v.Interface().(*bool) }
    -func (p pointer) BoolPtr() **bool          { return p.v.Interface().(**bool) }
    -func (p pointer) BoolSlice() *[]bool       { return p.v.Interface().(*[]bool) }
    -func (p pointer) Int32() *int32            { return p.v.Interface().(*int32) }
    -func (p pointer) Int32Ptr() **int32        { return p.v.Interface().(**int32) }
    -func (p pointer) Int32Slice() *[]int32     { return p.v.Interface().(*[]int32) }
    -func (p pointer) Int64() *int64            { return p.v.Interface().(*int64) }
    -func (p pointer) Int64Ptr() **int64        { return p.v.Interface().(**int64) }
    -func (p pointer) Int64Slice() *[]int64     { return p.v.Interface().(*[]int64) }
    -func (p pointer) Uint32() *uint32          { return p.v.Interface().(*uint32) }
    -func (p pointer) Uint32Ptr() **uint32      { return p.v.Interface().(**uint32) }
    -func (p pointer) Uint32Slice() *[]uint32   { return p.v.Interface().(*[]uint32) }
    -func (p pointer) Uint64() *uint64          { return p.v.Interface().(*uint64) }
    -func (p pointer) Uint64Ptr() **uint64      { return p.v.Interface().(**uint64) }
    -func (p pointer) Uint64Slice() *[]uint64   { return p.v.Interface().(*[]uint64) }
    -func (p pointer) Float32() *float32        { return p.v.Interface().(*float32) }
    -func (p pointer) Float32Ptr() **float32    { return p.v.Interface().(**float32) }
    -func (p pointer) Float32Slice() *[]float32 { return p.v.Interface().(*[]float32) }
    -func (p pointer) Float64() *float64        { return p.v.Interface().(*float64) }
    -func (p pointer) Float64Ptr() **float64    { return p.v.Interface().(**float64) }
    -func (p pointer) Float64Slice() *[]float64 { return p.v.Interface().(*[]float64) }
    -func (p pointer) String() *string          { return p.v.Interface().(*string) }
    -func (p pointer) StringPtr() **string      { return p.v.Interface().(**string) }
    -func (p pointer) StringSlice() *[]string   { return p.v.Interface().(*[]string) }
    -func (p pointer) Bytes() *[]byte           { return p.v.Interface().(*[]byte) }
    -func (p pointer) BytesPtr() **[]byte       { return p.v.Interface().(**[]byte) }
    -func (p pointer) BytesSlice() *[][]byte    { return p.v.Interface().(*[][]byte) }
    -func (p pointer) WeakFields() *weakFields  { return (*weakFields)(p.v.Interface().(*WeakFields)) }
    -func (p pointer) Extensions() *map[int32]ExtensionField {
    -	return p.v.Interface().(*map[int32]ExtensionField)
    -}
    -
    -func (p pointer) Elem() pointer {
    -	return pointer{v: p.v.Elem()}
    -}
    -
    -// PointerSlice copies []*T from p as a new []pointer.
    -// This behavior differs from the implementation in pointer_unsafe.go.
    -func (p pointer) PointerSlice() []pointer {
    -	// TODO: reconsider this
    -	if p.v.IsNil() {
    -		return nil
    -	}
    -	n := p.v.Elem().Len()
    -	s := make([]pointer, n)
    -	for i := 0; i < n; i++ {
    -		s[i] = pointer{v: p.v.Elem().Index(i)}
    -	}
    -	return s
    -}
    -
    -// AppendPointerSlice appends v to p, which must be a []*T.
    -func (p pointer) AppendPointerSlice(v pointer) {
    -	sp := p.v.Elem()
    -	sp.Set(reflect.Append(sp, v.v))
    -}
    -
    -// SetPointer sets *p to v.
    -func (p pointer) SetPointer(v pointer) {
    -	p.v.Elem().Set(v.v)
    -}
    -
    -func growSlice(p pointer, addCap int) {
    -	// TODO: Once we only support Go 1.20 and newer, use reflect.Grow.
    -	in := p.v.Elem()
    -	out := reflect.MakeSlice(in.Type(), in.Len(), in.Len()+addCap)
    -	reflect.Copy(out, in)
    -	p.v.Elem().Set(out)
    -}
    -
    -func (p pointer) growBoolSlice(addCap int) {
    -	growSlice(p, addCap)
    -}
    -
    -func (p pointer) growInt32Slice(addCap int) {
    -	growSlice(p, addCap)
    -}
    -
    -func (p pointer) growUint32Slice(addCap int) {
    -	growSlice(p, addCap)
    -}
    -
    -func (p pointer) growInt64Slice(addCap int) {
    -	growSlice(p, addCap)
    -}
    -
    -func (p pointer) growUint64Slice(addCap int) {
    -	growSlice(p, addCap)
    -}
    -
    -func (p pointer) growFloat64Slice(addCap int) {
    -	growSlice(p, addCap)
    -}
    -
    -func (p pointer) growFloat32Slice(addCap int) {
    -	growSlice(p, addCap)
    -}
    -
    -func (Export) MessageStateOf(p Pointer) *messageState     { panic("not supported") }
    -func (ms *messageState) pointer() pointer                 { panic("not supported") }
    -func (ms *messageState) messageInfo() *MessageInfo        { panic("not supported") }
    -func (ms *messageState) LoadMessageInfo() *MessageInfo    { panic("not supported") }
    -func (ms *messageState) StoreMessageInfo(mi *MessageInfo) { panic("not supported") }
    -
    -type atomicNilMessage struct {
    -	once sync.Once
    -	m    messageReflectWrapper
    -}
    -
    -func (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper {
    -	m.once.Do(func() {
    -		m.m.p = pointerOfIface(reflect.Zero(mi.GoReflectType).Interface())
    -		m.m.mi = mi
    -	})
    -	return &m.m
    -}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go
    index 4b020e311644..6bed45e35c25 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go
    @@ -2,15 +2,14 @@
     // Use of this source code is governed by a BSD-style
     // license that can be found in the LICENSE file.
     
    -//go:build !purego && !appengine
    -// +build !purego,!appengine
    -
     package impl
     
     import (
     	"reflect"
     	"sync/atomic"
     	"unsafe"
    +
    +	"google.golang.org/protobuf/internal/protolazy"
     )
     
     const UnsafeEnabled = true
    @@ -23,7 +22,7 @@ type Pointer unsafe.Pointer
     type offset uintptr
     
     // offsetOf returns a field offset for the struct field.
    -func offsetOf(f reflect.StructField, x exporter) offset {
    +func offsetOf(f reflect.StructField) offset {
     	return offset(f.Offset)
     }
     
    @@ -50,7 +49,7 @@ func pointerOfValue(v reflect.Value) pointer {
     }
     
     // pointerOfIface returns the pointer portion of an interface.
    -func pointerOfIface(v interface{}) pointer {
    +func pointerOfIface(v any) pointer {
     	type ifaceHeader struct {
     		Type unsafe.Pointer
     		Data unsafe.Pointer
    @@ -80,7 +79,7 @@ func (p pointer) AsValueOf(t reflect.Type) reflect.Value {
     
     // AsIfaceOf treats p as a pointer to an object of type t and returns the value.
     // It is equivalent to p.AsValueOf(t).Interface()
    -func (p pointer) AsIfaceOf(t reflect.Type) interface{} {
    +func (p pointer) AsIfaceOf(t reflect.Type) any {
     	// TODO: Use tricky unsafe magic to directly create ifaceHeader.
     	return p.AsValueOf(t).Interface()
     }
    @@ -114,6 +113,13 @@ func (p pointer) BytesPtr() **[]byte                    { return (**[]byte)(p.p)
     func (p pointer) BytesSlice() *[][]byte                 { return (*[][]byte)(p.p) }
     func (p pointer) WeakFields() *weakFields               { return (*weakFields)(p.p) }
     func (p pointer) Extensions() *map[int32]ExtensionField { return (*map[int32]ExtensionField)(p.p) }
    +func (p pointer) LazyInfoPtr() **protolazy.XXX_lazyUnmarshalInfo {
    +	return (**protolazy.XXX_lazyUnmarshalInfo)(p.p)
    +}
    +
    +func (p pointer) PresenceInfo() presence {
    +	return presence{P: p.p}
    +}
     
     func (p pointer) Elem() pointer {
     	return pointer{p: *(*unsafe.Pointer)(p.p)}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe_opaque.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe_opaque.go
    new file mode 100644
    index 000000000000..38aa7b7dcf23
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe_opaque.go
    @@ -0,0 +1,42 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package impl
    +
    +import (
    +	"sync/atomic"
    +	"unsafe"
    +)
    +
    +func (p pointer) AtomicGetPointer() pointer {
    +	return pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}
    +}
    +
    +func (p pointer) AtomicSetPointer(v pointer) {
    +	atomic.StorePointer((*unsafe.Pointer)(p.p), v.p)
    +}
    +
    +func (p pointer) AtomicSetNilPointer() {
    +	atomic.StorePointer((*unsafe.Pointer)(p.p), unsafe.Pointer(nil))
    +}
    +
    +func (p pointer) AtomicSetPointerIfNil(v pointer) pointer {
    +	if atomic.CompareAndSwapPointer((*unsafe.Pointer)(p.p), unsafe.Pointer(nil), v.p) {
    +		return v
    +	}
    +	return pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}
    +}
    +
    +type atomicV1MessageInfo struct{ p Pointer }
    +
    +func (mi *atomicV1MessageInfo) Get() Pointer {
    +	return Pointer(atomic.LoadPointer((*unsafe.Pointer)(&mi.p)))
    +}
    +
    +func (mi *atomicV1MessageInfo) SetIfNil(p Pointer) Pointer {
    +	if atomic.CompareAndSwapPointer((*unsafe.Pointer)(&mi.p), nil, unsafe.Pointer(p)) {
    +		return p
    +	}
    +	return mi.Get()
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/presence.go b/vendor/google.golang.org/protobuf/internal/impl/presence.go
    new file mode 100644
    index 000000000000..914cb1deda22
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/impl/presence.go
    @@ -0,0 +1,142 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package impl
    +
    +import (
    +	"sync/atomic"
    +	"unsafe"
    +)
    +
    +// presenceSize represents the size of a presence set, which should be the largest index of the set+1
    +type presenceSize uint32
    +
    +// presence is the internal representation of the bitmap array in a generated protobuf
    +type presence struct {
    +	// This is a pointer to the beginning of an array of uint32
    +	P unsafe.Pointer
    +}
    +
    +func (p presence) toElem(num uint32) (ret *uint32) {
    +	const (
    +		bitsPerByte = 8
    +		siz         = unsafe.Sizeof(*ret)
    +	)
    +	// p.P points to an array of uint32, num is the bit in this array that the
    +	// caller wants to check/manipulate. Calculate the index in the array that
    +	// contains this specific bit. E.g.: 76 / 32 = 2 (integer division).
    +	offset := uintptr(num) / (siz * bitsPerByte) * siz
    +	return (*uint32)(unsafe.Pointer(uintptr(p.P) + offset))
    +}
    +
    +// Present checks for the presence of a specific field number in a presence set.
    +func (p presence) Present(num uint32) bool {
    +	if p.P == nil {
    +		return false
    +	}
    +	return Export{}.Present(p.toElem(num), num)
    +}
    +
    +// SetPresent adds presence for a specific field number in a presence set.
    +func (p presence) SetPresent(num uint32, size presenceSize) {
    +	Export{}.SetPresent(p.toElem(num), num, uint32(size))
    +}
    +
    +// SetPresentUnatomic adds presence for a specific field number in a presence set without using
    +// atomic operations. Only to be called during unmarshaling.
    +func (p presence) SetPresentUnatomic(num uint32, size presenceSize) {
    +	Export{}.SetPresentNonAtomic(p.toElem(num), num, uint32(size))
    +}
    +
    +// ClearPresent removes presence for a specific field number in a presence set.
    +func (p presence) ClearPresent(num uint32) {
    +	Export{}.ClearPresent(p.toElem(num), num)
    +}
    +
    +// LoadPresenceCache (together with PresentInCache) allows for a
    +// cached version of checking for presence without re-reading the word
    +// for every field. It is optimized for efficiency and assumes no
    +// simltaneous mutation of the presence set (or at least does not have
    +// a problem with simultaneous mutation giving inconsistent results).
    +func (p presence) LoadPresenceCache() (current uint32) {
    +	if p.P == nil {
    +		return 0
    +	}
    +	return atomic.LoadUint32((*uint32)(p.P))
    +}
    +
    +// PresentInCache reads presence from a cached word in the presence
    +// bitmap. It caches up a new word if the bit is outside the
    +// word. This is for really fast iteration through bitmaps in cases
    +// where we either know that the bitmap will not be altered, or we
    +// don't care about inconsistencies caused by simultaneous writes.
    +func (p presence) PresentInCache(num uint32, cachedElement *uint32, current *uint32) bool {
    +	if num/32 != *cachedElement {
    +		o := uintptr(num/32) * unsafe.Sizeof(uint32(0))
    +		q := (*uint32)(unsafe.Pointer(uintptr(p.P) + o))
    +		*current = atomic.LoadUint32(q)
    +		*cachedElement = num / 32
    +	}
    +	return (*current & (1 << (num % 32))) > 0
    +}
    +
    +// AnyPresent checks if any field is marked as present in the bitmap.
    +func (p presence) AnyPresent(size presenceSize) bool {
    +	n := uintptr((size + 31) / 32)
    +	for j := uintptr(0); j < n; j++ {
    +		o := j * unsafe.Sizeof(uint32(0))
    +		q := (*uint32)(unsafe.Pointer(uintptr(p.P) + o))
    +		b := atomic.LoadUint32(q)
    +		if b > 0 {
    +			return true
    +		}
    +	}
    +	return false
    +}
    +
    +// toRaceDetectData finds the preceding RaceDetectHookData in a
    +// message by using pointer arithmetic. As the type of the presence
    +// set (bitmap) varies with the number of fields in the protobuf, we
    +// can not have a struct type containing the array and the
    +// RaceDetectHookData.  instead the RaceDetectHookData is placed
    +// immediately before the bitmap array, and we find it by walking
    +// backwards in the struct.
    +//
    +// This method is only called from the race-detect version of the code,
    +// so RaceDetectHookData is never an empty struct.
    +func (p presence) toRaceDetectData() *RaceDetectHookData {
    +	var template struct {
    +		d RaceDetectHookData
    +		a [1]uint32
    +	}
    +	o := (uintptr(unsafe.Pointer(&template.a)) - uintptr(unsafe.Pointer(&template.d)))
    +	return (*RaceDetectHookData)(unsafe.Pointer(uintptr(p.P) - o))
    +}
    +
    +func atomicLoadShadowPresence(p **[]byte) *[]byte {
    +	return (*[]byte)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
    +}
    +func atomicStoreShadowPresence(p **[]byte, v *[]byte) {
    +	atomic.CompareAndSwapPointer((*unsafe.Pointer)(unsafe.Pointer(p)), nil, unsafe.Pointer(v))
    +}
    +
    +// findPointerToRaceDetectData finds the preceding RaceDetectHookData
    +// in a message by using pointer arithmetic. For the methods called
    +// directy from generated code, we don't have a pointer to the
    +// beginning of the presence set, but a pointer inside the array. As
    +// we know the index of the bit we're manipulating (num), we can
    +// calculate which element of the array ptr is pointing to. With that
    +// information we find the preceding RaceDetectHookData and can
    +// manipulate the shadow bitmap.
    +//
    +// This method is only called from the race-detect version of the
    +// code, so RaceDetectHookData is never an empty struct.
    +func findPointerToRaceDetectData(ptr *uint32, num uint32) *RaceDetectHookData {
    +	var template struct {
    +		d RaceDetectHookData
    +		a [1]uint32
    +	}
    +	o := (uintptr(unsafe.Pointer(&template.a)) - uintptr(unsafe.Pointer(&template.d))) + uintptr(num/32)*unsafe.Sizeof(uint32(0))
    +	return (*RaceDetectHookData)(unsafe.Pointer(uintptr(unsafe.Pointer(ptr)) - o))
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/impl/validate.go b/vendor/google.golang.org/protobuf/internal/impl/validate.go
    index a24e6bbd7a5f..b534a3d6dbb3 100644
    --- a/vendor/google.golang.org/protobuf/internal/impl/validate.go
    +++ b/vendor/google.golang.org/protobuf/internal/impl/validate.go
    @@ -37,6 +37,10 @@ const (
     
     	// ValidationValid indicates that unmarshaling the message will succeed.
     	ValidationValid
    +
    +	// ValidationWrongWireType indicates that a validated field does not have
    +	// the expected wire type.
    +	ValidationWrongWireType
     )
     
     func (v ValidationStatus) String() string {
    @@ -149,11 +153,23 @@ func newValidationInfo(fd protoreflect.FieldDescriptor, ft reflect.Type) validat
     		switch fd.Kind() {
     		case protoreflect.MessageKind:
     			vi.typ = validationTypeMessage
    +
    +			if ft.Kind() == reflect.Ptr {
    +				// Repeated opaque message fields are *[]*T.
    +				ft = ft.Elem()
    +			}
    +
     			if ft.Kind() == reflect.Slice {
     				vi.mi = getMessageInfo(ft.Elem())
     			}
     		case protoreflect.GroupKind:
     			vi.typ = validationTypeGroup
    +
    +			if ft.Kind() == reflect.Ptr {
    +				// Repeated opaque message fields are *[]*T.
    +				ft = ft.Elem()
    +			}
    +
     			if ft.Kind() == reflect.Slice {
     				vi.mi = getMessageInfo(ft.Elem())
     			}
    diff --git a/vendor/google.golang.org/protobuf/internal/order/range.go b/vendor/google.golang.org/protobuf/internal/order/range.go
    index 1665a68e5b7c..a1f09162d05d 100644
    --- a/vendor/google.golang.org/protobuf/internal/order/range.go
    +++ b/vendor/google.golang.org/protobuf/internal/order/range.go
    @@ -18,7 +18,7 @@ type messageField struct {
     }
     
     var messageFieldPool = sync.Pool{
    -	New: func() interface{} { return new([]messageField) },
    +	New: func() any { return new([]messageField) },
     }
     
     type (
    @@ -69,7 +69,7 @@ type mapEntry struct {
     }
     
     var mapEntryPool = sync.Pool{
    -	New: func() interface{} { return new([]mapEntry) },
    +	New: func() any { return new([]mapEntry) },
     }
     
     type (
    diff --git a/vendor/google.golang.org/protobuf/internal/protolazy/bufferreader.go b/vendor/google.golang.org/protobuf/internal/protolazy/bufferreader.go
    new file mode 100644
    index 000000000000..82e5cab4aadd
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/protolazy/bufferreader.go
    @@ -0,0 +1,364 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +// Helper code for parsing a protocol buffer
    +
    +package protolazy
    +
    +import (
    +	"errors"
    +	"fmt"
    +	"io"
    +
    +	"google.golang.org/protobuf/encoding/protowire"
    +)
    +
    +// BufferReader is a structure encapsulating a protobuf and a current position
    +type BufferReader struct {
    +	Buf []byte
    +	Pos int
    +}
    +
    +// NewBufferReader creates a new BufferRead from a protobuf
    +func NewBufferReader(buf []byte) BufferReader {
    +	return BufferReader{Buf: buf, Pos: 0}
    +}
    +
    +var errOutOfBounds = errors.New("protobuf decoding: out of bounds")
    +var errOverflow = errors.New("proto: integer overflow")
    +
    +func (b *BufferReader) DecodeVarintSlow() (x uint64, err error) {
    +	i := b.Pos
    +	l := len(b.Buf)
    +
    +	for shift := uint(0); shift < 64; shift += 7 {
    +		if i >= l {
    +			err = io.ErrUnexpectedEOF
    +			return
    +		}
    +		v := b.Buf[i]
    +		i++
    +		x |= (uint64(v) & 0x7F) << shift
    +		if v < 0x80 {
    +			b.Pos = i
    +			return
    +		}
    +	}
    +
    +	// The number is too large to represent in a 64-bit value.
    +	err = errOverflow
    +	return
    +}
    +
    +// decodeVarint decodes a varint at the current position
    +func (b *BufferReader) DecodeVarint() (x uint64, err error) {
    +	i := b.Pos
    +	buf := b.Buf
    +
    +	if i >= len(buf) {
    +		return 0, io.ErrUnexpectedEOF
    +	} else if buf[i] < 0x80 {
    +		b.Pos++
    +		return uint64(buf[i]), nil
    +	} else if len(buf)-i < 10 {
    +		return b.DecodeVarintSlow()
    +	}
    +
    +	var v uint64
    +	// we already checked the first byte
    +	x = uint64(buf[i]) & 127
    +	i++
    +
    +	v = uint64(buf[i])
    +	i++
    +	x |= (v & 127) << 7
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint64(buf[i])
    +	i++
    +	x |= (v & 127) << 14
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint64(buf[i])
    +	i++
    +	x |= (v & 127) << 21
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint64(buf[i])
    +	i++
    +	x |= (v & 127) << 28
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint64(buf[i])
    +	i++
    +	x |= (v & 127) << 35
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint64(buf[i])
    +	i++
    +	x |= (v & 127) << 42
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint64(buf[i])
    +	i++
    +	x |= (v & 127) << 49
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint64(buf[i])
    +	i++
    +	x |= (v & 127) << 56
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint64(buf[i])
    +	i++
    +	x |= (v & 127) << 63
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	return 0, errOverflow
    +
    +done:
    +	b.Pos = i
    +	return
    +}
    +
    +// decodeVarint32 decodes a varint32 at the current position
    +func (b *BufferReader) DecodeVarint32() (x uint32, err error) {
    +	i := b.Pos
    +	buf := b.Buf
    +
    +	if i >= len(buf) {
    +		return 0, io.ErrUnexpectedEOF
    +	} else if buf[i] < 0x80 {
    +		b.Pos++
    +		return uint32(buf[i]), nil
    +	} else if len(buf)-i < 5 {
    +		v, err := b.DecodeVarintSlow()
    +		return uint32(v), err
    +	}
    +
    +	var v uint32
    +	// we already checked the first byte
    +	x = uint32(buf[i]) & 127
    +	i++
    +
    +	v = uint32(buf[i])
    +	i++
    +	x |= (v & 127) << 7
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint32(buf[i])
    +	i++
    +	x |= (v & 127) << 14
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint32(buf[i])
    +	i++
    +	x |= (v & 127) << 21
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	v = uint32(buf[i])
    +	i++
    +	x |= (v & 127) << 28
    +	if v < 128 {
    +		goto done
    +	}
    +
    +	return 0, errOverflow
    +
    +done:
    +	b.Pos = i
    +	return
    +}
    +
    +// skipValue skips a value in the protobuf, based on the specified tag
    +func (b *BufferReader) SkipValue(tag uint32) (err error) {
    +	wireType := tag & 0x7
    +	switch protowire.Type(wireType) {
    +	case protowire.VarintType:
    +		err = b.SkipVarint()
    +	case protowire.Fixed64Type:
    +		err = b.SkipFixed64()
    +	case protowire.BytesType:
    +		var n uint32
    +		n, err = b.DecodeVarint32()
    +		if err == nil {
    +			err = b.Skip(int(n))
    +		}
    +	case protowire.StartGroupType:
    +		err = b.SkipGroup(tag)
    +	case protowire.Fixed32Type:
    +		err = b.SkipFixed32()
    +	default:
    +		err = fmt.Errorf("Unexpected wire type (%d)", wireType)
    +	}
    +	return
    +}
    +
    +// skipGroup skips a group with the specified tag.  It executes efficiently using a tag stack
    +func (b *BufferReader) SkipGroup(tag uint32) (err error) {
    +	tagStack := make([]uint32, 0, 16)
    +	tagStack = append(tagStack, tag)
    +	var n uint32
    +	for len(tagStack) > 0 {
    +		tag, err = b.DecodeVarint32()
    +		if err != nil {
    +			return err
    +		}
    +		switch protowire.Type(tag & 0x7) {
    +		case protowire.VarintType:
    +			err = b.SkipVarint()
    +		case protowire.Fixed64Type:
    +			err = b.Skip(8)
    +		case protowire.BytesType:
    +			n, err = b.DecodeVarint32()
    +			if err == nil {
    +				err = b.Skip(int(n))
    +			}
    +		case protowire.StartGroupType:
    +			tagStack = append(tagStack, tag)
    +		case protowire.Fixed32Type:
    +			err = b.SkipFixed32()
    +		case protowire.EndGroupType:
    +			if protoFieldNumber(tagStack[len(tagStack)-1]) == protoFieldNumber(tag) {
    +				tagStack = tagStack[:len(tagStack)-1]
    +			} else {
    +				err = fmt.Errorf("end group tag %d does not match begin group tag %d at pos %d",
    +					protoFieldNumber(tag), protoFieldNumber(tagStack[len(tagStack)-1]), b.Pos)
    +			}
    +		}
    +		if err != nil {
    +			return err
    +		}
    +	}
    +	return nil
    +}
    +
    +// skipVarint effiently skips a varint
    +func (b *BufferReader) SkipVarint() (err error) {
    +	i := b.Pos
    +
    +	if len(b.Buf)-i < 10 {
    +		// Use DecodeVarintSlow() to check for buffer overflow, but ignore result
    +		if _, err := b.DecodeVarintSlow(); err != nil {
    +			return err
    +		}
    +		return nil
    +	}
    +
    +	if b.Buf[i] < 0x80 {
    +		goto out
    +	}
    +	i++
    +
    +	if b.Buf[i] < 0x80 {
    +		goto out
    +	}
    +	i++
    +
    +	if b.Buf[i] < 0x80 {
    +		goto out
    +	}
    +	i++
    +
    +	if b.Buf[i] < 0x80 {
    +		goto out
    +	}
    +	i++
    +
    +	if b.Buf[i] < 0x80 {
    +		goto out
    +	}
    +	i++
    +
    +	if b.Buf[i] < 0x80 {
    +		goto out
    +	}
    +	i++
    +
    +	if b.Buf[i] < 0x80 {
    +		goto out
    +	}
    +	i++
    +
    +	if b.Buf[i] < 0x80 {
    +		goto out
    +	}
    +	i++
    +
    +	if b.Buf[i] < 0x80 {
    +		goto out
    +	}
    +	i++
    +
    +	if b.Buf[i] < 0x80 {
    +		goto out
    +	}
    +	return errOverflow
    +
    +out:
    +	b.Pos = i + 1
    +	return nil
    +}
    +
    +// skip skips the specified number of bytes
    +func (b *BufferReader) Skip(n int) (err error) {
    +	if len(b.Buf) < b.Pos+n {
    +		return io.ErrUnexpectedEOF
    +	}
    +	b.Pos += n
    +	return
    +}
    +
    +// skipFixed64 skips a fixed64
    +func (b *BufferReader) SkipFixed64() (err error) {
    +	return b.Skip(8)
    +}
    +
    +// skipFixed32 skips a fixed32
    +func (b *BufferReader) SkipFixed32() (err error) {
    +	return b.Skip(4)
    +}
    +
    +// skipBytes skips a set of bytes
    +func (b *BufferReader) SkipBytes() (err error) {
    +	n, err := b.DecodeVarint32()
    +	if err != nil {
    +		return err
    +	}
    +	return b.Skip(int(n))
    +}
    +
    +// Done returns whether we are at the end of the protobuf
    +func (b *BufferReader) Done() bool {
    +	return b.Pos == len(b.Buf)
    +}
    +
    +// Remaining returns how many bytes remain
    +func (b *BufferReader) Remaining() int {
    +	return len(b.Buf) - b.Pos
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/protolazy/lazy.go b/vendor/google.golang.org/protobuf/internal/protolazy/lazy.go
    new file mode 100644
    index 000000000000..ff4d4834bbce
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/protolazy/lazy.go
    @@ -0,0 +1,359 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +// Package protolazy contains internal data structures for lazy message decoding.
    +package protolazy
    +
    +import (
    +	"fmt"
    +	"sort"
    +
    +	"google.golang.org/protobuf/encoding/protowire"
    +	piface "google.golang.org/protobuf/runtime/protoiface"
    +)
    +
    +// IndexEntry is the structure for an index of the fields in a message of a
    +// proto (not descending to sub-messages)
    +type IndexEntry struct {
    +	FieldNum uint32
    +	// first byte of this tag/field
    +	Start uint32
    +	// first byte after a contiguous sequence of bytes for this tag/field, which could
    +	// include a single encoding of the field, or multiple encodings for the field
    +	End uint32
    +	// True if this protobuf segment includes multiple encodings of the field
    +	MultipleContiguous bool
    +}
    +
    +// XXX_lazyUnmarshalInfo has information about a particular lazily decoded message
    +//
    +// Deprecated: Do not use. This will be deleted in the near future.
    +type XXX_lazyUnmarshalInfo struct {
    +	// Index of fields and their positions in the protobuf for this
    +	// message.  Make index be a pointer to a slice so it can be updated
    +	// atomically.  The index pointer is only set once (lazily when/if
    +	// the index is first needed), and must always be SET and LOADED
    +	// ATOMICALLY.
    +	index *[]IndexEntry
    +	// The protobuf associated with this lazily decoded message.  It is
    +	// only set during proto.Unmarshal().  It doesn't need to be set and
    +	// loaded atomically, since any simultaneous set (Unmarshal) and read
    +	// (during a get) would already be a race in the app code.
    +	Protobuf []byte
    +	// The flags present when Unmarshal was originally called for this particular message
    +	unmarshalFlags piface.UnmarshalInputFlags
    +}
    +
    +// The Buffer and SetBuffer methods let v2/internal/impl interact with
    +// XXX_lazyUnmarshalInfo via an interface, to avoid an import cycle.
    +
    +// Buffer returns the lazy unmarshal buffer.
    +//
    +// Deprecated: Do not use. This will be deleted in the near future.
    +func (lazy *XXX_lazyUnmarshalInfo) Buffer() []byte {
    +	return lazy.Protobuf
    +}
    +
    +// SetBuffer sets the lazy unmarshal buffer.
    +//
    +// Deprecated: Do not use. This will be deleted in the near future.
    +func (lazy *XXX_lazyUnmarshalInfo) SetBuffer(b []byte) {
    +	lazy.Protobuf = b
    +}
    +
    +// SetUnmarshalFlags is called to set a copy of the original unmarshalInputFlags.
    +// The flags should reflect how Unmarshal was called.
    +func (lazy *XXX_lazyUnmarshalInfo) SetUnmarshalFlags(f piface.UnmarshalInputFlags) {
    +	lazy.unmarshalFlags = f
    +}
    +
    +// UnmarshalFlags returns the original unmarshalInputFlags.
    +func (lazy *XXX_lazyUnmarshalInfo) UnmarshalFlags() piface.UnmarshalInputFlags {
    +	return lazy.unmarshalFlags
    +}
    +
    +// AllowedPartial returns true if the user originally unmarshalled this message with
    +// AllowPartial set to true
    +func (lazy *XXX_lazyUnmarshalInfo) AllowedPartial() bool {
    +	return (lazy.unmarshalFlags & piface.UnmarshalCheckRequired) == 0
    +}
    +
    +func protoFieldNumber(tag uint32) uint32 {
    +	return tag >> 3
    +}
    +
    +// buildIndex builds an index of the specified protobuf, return the index
    +// array and an error.
    +func buildIndex(buf []byte) ([]IndexEntry, error) {
    +	index := make([]IndexEntry, 0, 16)
    +	var lastProtoFieldNum uint32
    +	var outOfOrder bool
    +
    +	var r BufferReader = NewBufferReader(buf)
    +
    +	for !r.Done() {
    +		var tag uint32
    +		var err error
    +		var curPos = r.Pos
    +		// INLINED: tag, err = r.DecodeVarint32()
    +		{
    +			i := r.Pos
    +			buf := r.Buf
    +
    +			if i >= len(buf) {
    +				return nil, errOutOfBounds
    +			} else if buf[i] < 0x80 {
    +				r.Pos++
    +				tag = uint32(buf[i])
    +			} else if r.Remaining() < 5 {
    +				var v uint64
    +				v, err = r.DecodeVarintSlow()
    +				tag = uint32(v)
    +			} else {
    +				var v uint32
    +				// we already checked the first byte
    +				tag = uint32(buf[i]) & 127
    +				i++
    +
    +				v = uint32(buf[i])
    +				i++
    +				tag |= (v & 127) << 7
    +				if v < 128 {
    +					goto done
    +				}
    +
    +				v = uint32(buf[i])
    +				i++
    +				tag |= (v & 127) << 14
    +				if v < 128 {
    +					goto done
    +				}
    +
    +				v = uint32(buf[i])
    +				i++
    +				tag |= (v & 127) << 21
    +				if v < 128 {
    +					goto done
    +				}
    +
    +				v = uint32(buf[i])
    +				i++
    +				tag |= (v & 127) << 28
    +				if v < 128 {
    +					goto done
    +				}
    +
    +				return nil, errOutOfBounds
    +
    +			done:
    +				r.Pos = i
    +			}
    +		}
    +		// DONE: tag, err = r.DecodeVarint32()
    +
    +		fieldNum := protoFieldNumber(tag)
    +		if fieldNum < lastProtoFieldNum {
    +			outOfOrder = true
    +		}
    +
    +		// Skip the current value -- will skip over an entire group as well.
    +		// INLINED: err = r.SkipValue(tag)
    +		wireType := tag & 0x7
    +		switch protowire.Type(wireType) {
    +		case protowire.VarintType:
    +			// INLINED: err = r.SkipVarint()
    +			i := r.Pos
    +
    +			if len(r.Buf)-i < 10 {
    +				// Use DecodeVarintSlow() to skip while
    +				// checking for buffer overflow, but ignore result
    +				_, err = r.DecodeVarintSlow()
    +				goto out2
    +			}
    +			if r.Buf[i] < 0x80 {
    +				goto out
    +			}
    +			i++
    +
    +			if r.Buf[i] < 0x80 {
    +				goto out
    +			}
    +			i++
    +
    +			if r.Buf[i] < 0x80 {
    +				goto out
    +			}
    +			i++
    +
    +			if r.Buf[i] < 0x80 {
    +				goto out
    +			}
    +			i++
    +
    +			if r.Buf[i] < 0x80 {
    +				goto out
    +			}
    +			i++
    +
    +			if r.Buf[i] < 0x80 {
    +				goto out
    +			}
    +			i++
    +
    +			if r.Buf[i] < 0x80 {
    +				goto out
    +			}
    +			i++
    +
    +			if r.Buf[i] < 0x80 {
    +				goto out
    +			}
    +			i++
    +
    +			if r.Buf[i] < 0x80 {
    +				goto out
    +			}
    +			i++
    +
    +			if r.Buf[i] < 0x80 {
    +				goto out
    +			}
    +			return nil, errOverflow
    +		out:
    +			r.Pos = i + 1
    +			// DONE: err = r.SkipVarint()
    +		case protowire.Fixed64Type:
    +			err = r.SkipFixed64()
    +		case protowire.BytesType:
    +			var n uint32
    +			n, err = r.DecodeVarint32()
    +			if err == nil {
    +				err = r.Skip(int(n))
    +			}
    +		case protowire.StartGroupType:
    +			err = r.SkipGroup(tag)
    +		case protowire.Fixed32Type:
    +			err = r.SkipFixed32()
    +		default:
    +			err = fmt.Errorf("Unexpected wire type (%d)", wireType)
    +		}
    +		// DONE: err = r.SkipValue(tag)
    +
    +	out2:
    +		if err != nil {
    +			return nil, err
    +		}
    +		if fieldNum != lastProtoFieldNum {
    +			index = append(index, IndexEntry{FieldNum: fieldNum,
    +				Start: uint32(curPos),
    +				End:   uint32(r.Pos)},
    +			)
    +		} else {
    +			index[len(index)-1].End = uint32(r.Pos)
    +			index[len(index)-1].MultipleContiguous = true
    +		}
    +		lastProtoFieldNum = fieldNum
    +	}
    +	if outOfOrder {
    +		sort.Slice(index, func(i, j int) bool {
    +			return index[i].FieldNum < index[j].FieldNum ||
    +				(index[i].FieldNum == index[j].FieldNum &&
    +					index[i].Start < index[j].Start)
    +		})
    +	}
    +	return index, nil
    +}
    +
    +func (lazy *XXX_lazyUnmarshalInfo) SizeField(num uint32) (size int) {
    +	start, end, found, _, multipleEntries := lazy.FindFieldInProto(num)
    +	if multipleEntries != nil {
    +		for _, entry := range multipleEntries {
    +			size += int(entry.End - entry.Start)
    +		}
    +		return size
    +	}
    +	if !found {
    +		return 0
    +	}
    +	return int(end - start)
    +}
    +
    +func (lazy *XXX_lazyUnmarshalInfo) AppendField(b []byte, num uint32) ([]byte, bool) {
    +	start, end, found, _, multipleEntries := lazy.FindFieldInProto(num)
    +	if multipleEntries != nil {
    +		for _, entry := range multipleEntries {
    +			b = append(b, lazy.Protobuf[entry.Start:entry.End]...)
    +		}
    +		return b, true
    +	}
    +	if !found {
    +		return nil, false
    +	}
    +	b = append(b, lazy.Protobuf[start:end]...)
    +	return b, true
    +}
    +
    +func (lazy *XXX_lazyUnmarshalInfo) SetIndex(index []IndexEntry) {
    +	atomicStoreIndex(&lazy.index, &index)
    +}
    +
    +// FindFieldInProto looks for field fieldNum in lazyUnmarshalInfo information
    +// (including protobuf), returns startOffset/endOffset/found.
    +func (lazy *XXX_lazyUnmarshalInfo) FindFieldInProto(fieldNum uint32) (start, end uint32, found, multipleContiguous bool, multipleEntries []IndexEntry) {
    +	if lazy.Protobuf == nil {
    +		// There is no backing protobuf for this message -- it was made from a builder
    +		return 0, 0, false, false, nil
    +	}
    +	index := atomicLoadIndex(&lazy.index)
    +	if index == nil {
    +		r, err := buildIndex(lazy.Protobuf)
    +		if err != nil {
    +			panic(fmt.Sprintf("findFieldInfo: error building index when looking for field %d: %v", fieldNum, err))
    +		}
    +		// lazy.index is a pointer to the slice returned by BuildIndex
    +		index = &r
    +		atomicStoreIndex(&lazy.index, index)
    +	}
    +	return lookupField(index, fieldNum)
    +}
    +
    +// lookupField returns the offset at which the indicated field starts using
    +// the index, offset immediately after field ends (including all instances of
    +// a repeated field), and bools indicating if field was found and if there
    +// are multiple encodings of the field in the byte range.
    +//
    +// To hande the uncommon case where there are repeated encodings for the same
    +// field which are not consecutive in the protobuf (so we need to returns
    +// multiple start/end offsets), we also return a slice multipleEntries.  If
    +// multipleEntries is non-nil, then multiple entries were found, and the
    +// values in the slice should be used, rather than start/end/found.
    +func lookupField(indexp *[]IndexEntry, fieldNum uint32) (start, end uint32, found bool, multipleContiguous bool, multipleEntries []IndexEntry) {
    +	// The pointer indexp to the index was already loaded atomically.
    +	// The slice is uniquely associated with the pointer, so it doesn't
    +	// need to be loaded atomically.
    +	index := *indexp
    +	for i, entry := range index {
    +		if fieldNum == entry.FieldNum {
    +			if i < len(index)-1 && entry.FieldNum == index[i+1].FieldNum {
    +				// Handle the uncommon case where there are
    +				// repeated entries for the same field which
    +				// are not contiguous in the protobuf.
    +				multiple := make([]IndexEntry, 1, 2)
    +				multiple[0] = IndexEntry{fieldNum, entry.Start, entry.End, entry.MultipleContiguous}
    +				i++
    +				for i < len(index) && index[i].FieldNum == fieldNum {
    +					multiple = append(multiple, IndexEntry{fieldNum, index[i].Start, index[i].End, index[i].MultipleContiguous})
    +					i++
    +				}
    +				return 0, 0, false, false, multiple
    +
    +			}
    +			return entry.Start, entry.End, true, entry.MultipleContiguous, nil
    +		}
    +		if fieldNum < entry.FieldNum {
    +			return 0, 0, false, false, nil
    +		}
    +	}
    +	return 0, 0, false, false, nil
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/protolazy/pointer_unsafe.go b/vendor/google.golang.org/protobuf/internal/protolazy/pointer_unsafe.go
    new file mode 100644
    index 000000000000..dc2a64ca6437
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/internal/protolazy/pointer_unsafe.go
    @@ -0,0 +1,17 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package protolazy
    +
    +import (
    +	"sync/atomic"
    +	"unsafe"
    +)
    +
    +func atomicLoadIndex(p **[]IndexEntry) *[]IndexEntry {
    +	return (*[]IndexEntry)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
    +}
    +func atomicStoreIndex(p **[]IndexEntry, v *[]IndexEntry) {
    +	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))
    +}
    diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go b/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go
    deleted file mode 100644
    index a1f6f333860e..000000000000
    --- a/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go
    +++ /dev/null
    @@ -1,28 +0,0 @@
    -// Copyright 2018 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build purego || appengine
    -// +build purego appengine
    -
    -package strs
    -
    -import pref "google.golang.org/protobuf/reflect/protoreflect"
    -
    -func UnsafeString(b []byte) string {
    -	return string(b)
    -}
    -
    -func UnsafeBytes(s string) []byte {
    -	return []byte(s)
    -}
    -
    -type Builder struct{}
    -
    -func (*Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName {
    -	return prefix.Append(name)
    -}
    -
    -func (*Builder) MakeString(b []byte) string {
    -	return string(b)
    -}
    diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go
    index a008acd09082..832a7988f145 100644
    --- a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go
    +++ b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go
    @@ -2,8 +2,7 @@
     // Use of this source code is governed by a BSD-style
     // license that can be found in the LICENSE file.
     
    -//go:build !purego && !appengine && !go1.21
    -// +build !purego,!appengine,!go1.21
    +//go:build !go1.21
     
     package strs
     
    diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go
    index 60166f2ba3cf..1ffddf6877a9 100644
    --- a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go
    +++ b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go
    @@ -2,8 +2,7 @@
     // Use of this source code is governed by a BSD-style
     // license that can be found in the LICENSE file.
     
    -//go:build !purego && !appengine && go1.21
    -// +build !purego,!appengine,go1.21
    +//go:build go1.21
     
     package strs
     
    diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go
    index a3cba5080225..f5c06280fe32 100644
    --- a/vendor/google.golang.org/protobuf/internal/version/version.go
    +++ b/vendor/google.golang.org/protobuf/internal/version/version.go
    @@ -51,8 +51,8 @@ import (
     //  10. Send out the CL for review and submit it.
     const (
     	Major      = 1
    -	Minor      = 34
    -	Patch      = 1
    +	Minor      = 36
    +	Patch      = 3
     	PreRelease = ""
     )
     
    diff --git a/vendor/google.golang.org/protobuf/proto/decode.go b/vendor/google.golang.org/protobuf/proto/decode.go
    index d75a6534c1b9..e28d7acb3780 100644
    --- a/vendor/google.golang.org/protobuf/proto/decode.go
    +++ b/vendor/google.golang.org/protobuf/proto/decode.go
    @@ -47,6 +47,12 @@ type UnmarshalOptions struct {
     	// RecursionLimit limits how deeply messages may be nested.
     	// If zero, a default limit is applied.
     	RecursionLimit int
    +
    +	//
    +	// NoLazyDecoding turns off lazy decoding, which otherwise is enabled by
    +	// default. Lazy decoding only affects submessages (annotated with [lazy =
    +	// true] in the .proto file) within messages that use the Opaque API.
    +	NoLazyDecoding bool
     }
     
     // Unmarshal parses the wire-format message in b and places the result in m.
    @@ -104,6 +110,16 @@ func (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out proto
     		if o.DiscardUnknown {
     			in.Flags |= protoiface.UnmarshalDiscardUnknown
     		}
    +
    +		if !allowPartial {
    +			// This does not affect how current unmarshal functions work, it just allows them
    +			// to record this for lazy the decoding case.
    +			in.Flags |= protoiface.UnmarshalCheckRequired
    +		}
    +		if o.NoLazyDecoding {
    +			in.Flags |= protoiface.UnmarshalNoLazyDecoding
    +		}
    +
     		out, err = methods.Unmarshal(in)
     	} else {
     		o.RecursionLimit--
    @@ -156,7 +172,7 @@ func (o UnmarshalOptions) unmarshalMessageSlow(b []byte, m protoreflect.Message)
     		var err error
     		if fd == nil {
     			err = errUnknown
    -		} else if flags.ProtoLegacy {
    +		} else if flags.ProtoLegacyWeak {
     			if fd.IsWeak() && fd.Message().IsPlaceholder() {
     				err = errUnknown // weak referent is not linked in
     			}
    diff --git a/vendor/google.golang.org/protobuf/proto/encode.go b/vendor/google.golang.org/protobuf/proto/encode.go
    index 1f847bcc358e..f0473c5869a1 100644
    --- a/vendor/google.golang.org/protobuf/proto/encode.go
    +++ b/vendor/google.golang.org/protobuf/proto/encode.go
    @@ -63,7 +63,8 @@ type MarshalOptions struct {
     	// options (except for UseCachedSize itself).
     	//
     	// 2. The message and all its submessages have not changed in any
    -	// way since the Size call.
    +	// way since the Size call. For lazily decoded messages, accessing
    +	// a message results in decoding the message, which is a change.
     	//
     	// If either of these invariants is violated,
     	// the results are undefined and may include panics or corrupted output.
    diff --git a/vendor/google.golang.org/protobuf/proto/equal.go b/vendor/google.golang.org/protobuf/proto/equal.go
    index 1a0be1b03c73..c36d4a9cd75b 100644
    --- a/vendor/google.golang.org/protobuf/proto/equal.go
    +++ b/vendor/google.golang.org/protobuf/proto/equal.go
    @@ -8,6 +8,7 @@ import (
     	"reflect"
     
     	"google.golang.org/protobuf/reflect/protoreflect"
    +	"google.golang.org/protobuf/runtime/protoiface"
     )
     
     // Equal reports whether two messages are equal,
    @@ -51,6 +52,14 @@ func Equal(x, y Message) bool {
     	if mx.IsValid() != my.IsValid() {
     		return false
     	}
    +
    +	// Only one of the messages needs to implement the fast-path for it to work.
    +	pmx := protoMethods(mx)
    +	pmy := protoMethods(my)
    +	if pmx != nil && pmy != nil && pmx.Equal != nil && pmy.Equal != nil {
    +		return pmx.Equal(protoiface.EqualInput{MessageA: mx, MessageB: my}).Equal
    +	}
    +
     	vx := protoreflect.ValueOfMessage(mx)
     	vy := protoreflect.ValueOfMessage(my)
     	return vx.Equal(vy)
    diff --git a/vendor/google.golang.org/protobuf/proto/extension.go b/vendor/google.golang.org/protobuf/proto/extension.go
    index c9c8721a6979..78445d116f7b 100644
    --- a/vendor/google.golang.org/protobuf/proto/extension.go
    +++ b/vendor/google.golang.org/protobuf/proto/extension.go
    @@ -39,7 +39,49 @@ func ClearExtension(m Message, xt protoreflect.ExtensionType) {
     // If the field is unpopulated, it returns the default value for
     // scalars and an immutable, empty value for lists or messages.
     // It panics if xt does not extend m.
    -func GetExtension(m Message, xt protoreflect.ExtensionType) interface{} {
    +//
    +// The type of the value is dependent on the field type of the extension.
    +// For extensions generated by protoc-gen-go, the Go type is as follows:
    +//
    +//	╔═══════════════════╤═════════════════════════╗
    +//	║ Go type           │ Protobuf kind           ║
    +//	╠═══════════════════╪═════════════════════════╣
    +//	║ bool              │ bool                    ║
    +//	║ int32             │ int32, sint32, sfixed32 ║
    +//	║ int64             │ int64, sint64, sfixed64 ║
    +//	║ uint32            │ uint32, fixed32         ║
    +//	║ uint64            │ uint64, fixed64         ║
    +//	║ float32           │ float                   ║
    +//	║ float64           │ double                  ║
    +//	║ string            │ string                  ║
    +//	║ []byte            │ bytes                   ║
    +//	║ protoreflect.Enum │ enum                    ║
    +//	║ proto.Message     │ message, group          ║
    +//	╚═══════════════════╧═════════════════════════╝
    +//
    +// The protoreflect.Enum and proto.Message types are the concrete Go type
    +// associated with the named enum or message. Repeated fields are represented
    +// using a Go slice of the base element type.
    +//
    +// If a generated extension descriptor variable is directly passed to
    +// GetExtension, then the call should be followed immediately by a
    +// type assertion to the expected output value. For example:
    +//
    +//	mm := proto.GetExtension(m, foopb.E_MyExtension).(*foopb.MyMessage)
    +//
    +// This pattern enables static analysis tools to verify that the asserted type
    +// matches the Go type associated with the extension field and
    +// also enables a possible future migration to a type-safe extension API.
    +//
    +// Since singular messages are the most common extension type, the pattern of
    +// calling HasExtension followed by GetExtension may be simplified to:
    +//
    +//	if mm := proto.GetExtension(m, foopb.E_MyExtension).(*foopb.MyMessage); mm != nil {
    +//	    ... // make use of mm
    +//	}
    +//
    +// The mm variable is non-nil if and only if HasExtension reports true.
    +func GetExtension(m Message, xt protoreflect.ExtensionType) any {
     	// Treat nil message interface as an empty message; return the default.
     	if m == nil {
     		return xt.InterfaceOf(xt.Zero())
    @@ -51,7 +93,36 @@ func GetExtension(m Message, xt protoreflect.ExtensionType) interface{} {
     // SetExtension stores the value of an extension field.
     // It panics if m is invalid, xt does not extend m, or if type of v
     // is invalid for the specified extension field.
    -func SetExtension(m Message, xt protoreflect.ExtensionType, v interface{}) {
    +//
    +// The type of the value is dependent on the field type of the extension.
    +// For extensions generated by protoc-gen-go, the Go type is as follows:
    +//
    +//	╔═══════════════════╤═════════════════════════╗
    +//	║ Go type           │ Protobuf kind           ║
    +//	╠═══════════════════╪═════════════════════════╣
    +//	║ bool              │ bool                    ║
    +//	║ int32             │ int32, sint32, sfixed32 ║
    +//	║ int64             │ int64, sint64, sfixed64 ║
    +//	║ uint32            │ uint32, fixed32         ║
    +//	║ uint64            │ uint64, fixed64         ║
    +//	║ float32           │ float                   ║
    +//	║ float64           │ double                  ║
    +//	║ string            │ string                  ║
    +//	║ []byte            │ bytes                   ║
    +//	║ protoreflect.Enum │ enum                    ║
    +//	║ proto.Message     │ message, group          ║
    +//	╚═══════════════════╧═════════════════════════╝
    +//
    +// The protoreflect.Enum and proto.Message types are the concrete Go type
    +// associated with the named enum or message. Repeated fields are represented
    +// using a Go slice of the base element type.
    +//
    +// If a generated extension descriptor variable is directly passed to
    +// SetExtension (e.g., foopb.E_MyExtension), then the value should be a
    +// concrete type that matches the expected Go type for the extension descriptor
    +// so that static analysis tools can verify type correctness.
    +// This also enables a possible future migration to a type-safe extension API.
    +func SetExtension(m Message, xt protoreflect.ExtensionType, v any) {
     	xd := xt.TypeDescriptor()
     	pv := xt.ValueOf(v)
     
    @@ -78,7 +149,7 @@ func SetExtension(m Message, xt protoreflect.ExtensionType, v interface{}) {
     // It returns immediately if f returns false.
     // While iterating, mutating operations may only be performed
     // on the current extension field.
    -func RangeExtensions(m Message, f func(protoreflect.ExtensionType, interface{}) bool) {
    +func RangeExtensions(m Message, f func(protoreflect.ExtensionType, any) bool) {
     	// Treat nil message interface as an empty message; nothing to range over.
     	if m == nil {
     		return
    diff --git a/vendor/google.golang.org/protobuf/proto/size.go b/vendor/google.golang.org/protobuf/proto/size.go
    index 052fb5ae3134..c8675806c659 100644
    --- a/vendor/google.golang.org/protobuf/proto/size.go
    +++ b/vendor/google.golang.org/protobuf/proto/size.go
    @@ -12,11 +12,19 @@ import (
     )
     
     // Size returns the size in bytes of the wire-format encoding of m.
    +//
    +// Note that Size might return more bytes than Marshal will write in the case of
    +// lazily decoded messages that arrive in non-minimal wire format: see
    +// https://protobuf.dev/reference/go/size/ for more details.
     func Size(m Message) int {
     	return MarshalOptions{}.Size(m)
     }
     
     // Size returns the size in bytes of the wire-format encoding of m.
    +//
    +// Note that Size might return more bytes than Marshal will write in the case of
    +// lazily decoded messages that arrive in non-minimal wire format: see
    +// https://protobuf.dev/reference/go/size/ for more details.
     func (o MarshalOptions) Size(m Message) int {
     	// Treat a nil message interface as an empty message; nothing to output.
     	if m == nil {
    diff --git a/vendor/google.golang.org/protobuf/proto/wrapperopaque.go b/vendor/google.golang.org/protobuf/proto/wrapperopaque.go
    new file mode 100644
    index 000000000000..267fd0f1f624
    --- /dev/null
    +++ b/vendor/google.golang.org/protobuf/proto/wrapperopaque.go
    @@ -0,0 +1,80 @@
    +// Copyright 2024 The Go Authors. All rights reserved.
    +// Use of this source code is governed by a BSD-style
    +// license that can be found in the LICENSE file.
    +
    +package proto
    +
    +// ValueOrNil returns nil if has is false, or a pointer to a new variable
    +// containing the value returned by the specified getter.
    +//
    +// This function is similar to the wrappers (proto.Int32(), proto.String(),
    +// etc.), but is generic (works for any field type) and works with the hasser
    +// and getter of a field, as opposed to a value.
    +//
    +// This is convenient when populating builder fields.
    +//
    +// Example:
    +//
    +//	hop := attr.GetDirectHop()
    +//	injectedRoute := ripb.InjectedRoute_builder{
    +//	  Prefixes: route.GetPrefixes(),
    +//	  NextHop:  proto.ValueOrNil(hop.HasAddress(), hop.GetAddress),
    +//	}
    +func ValueOrNil[T any](has bool, getter func() T) *T {
    +	if !has {
    +		return nil
    +	}
    +	v := getter()
    +	return &v
    +}
    +
    +// ValueOrDefault returns the protobuf message val if val is not nil, otherwise
    +// it returns a pointer to an empty val message.
    +//
    +// This function allows for translating code from the old Open Struct API to the
    +// new Opaque API.
    +//
    +// The old Open Struct API represented oneof fields with a wrapper struct:
    +//
    +//	var signedImg *accountpb.SignedImage
    +//	profile := &accountpb.Profile{
    +//		// The Avatar oneof will be set, with an empty SignedImage.
    +//		Avatar: &accountpb.Profile_SignedImage{signedImg},
    +//	}
    +//
    +// The new Opaque API treats oneof fields like regular fields, there are no more
    +// wrapper structs:
    +//
    +//	var signedImg *accountpb.SignedImage
    +//	profile := &accountpb.Profile{}
    +//	profile.SetSignedImage(signedImg)
    +//
    +// For convenience, the Opaque API also offers Builders, which allow for a
    +// direct translation of struct initialization. However, because Builders use
    +// nilness to represent field presence (but there is no non-nil wrapper struct
    +// anymore), Builders cannot distinguish between an unset oneof and a set oneof
    +// with nil message. The above code would need to be translated with help of the
    +// ValueOrDefault function to retain the same behavior:
    +//
    +//	var signedImg *accountpb.SignedImage
    +//	return &accountpb.Profile_builder{
    +//		SignedImage: proto.ValueOrDefault(signedImg),
    +//	}.Build()
    +func ValueOrDefault[T interface {
    +	*P
    +	Message
    +}, P any](val T) T {
    +	if val == nil {
    +		return T(new(P))
    +	}
    +	return val
    +}
    +
    +// ValueOrDefaultBytes is like ValueOrDefault but for working with fields of
    +// type []byte.
    +func ValueOrDefaultBytes(val []byte) []byte {
    +	if val == nil {
    +		return []byte{}
    +	}
    +	return val
    +}
    diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go
    index 8fbecb4f58d8..69a050509177 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go
    @@ -13,6 +13,8 @@
     package protodesc
     
     import (
    +	"strings"
    +
     	"google.golang.org/protobuf/internal/editionssupport"
     	"google.golang.org/protobuf/internal/errors"
     	"google.golang.org/protobuf/internal/filedesc"
    @@ -102,13 +104,17 @@ func (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (prot
     	default:
     		return nil, errors.New("invalid syntax: %q", fd.GetSyntax())
     	}
    -	if f.L1.Syntax == protoreflect.Editions && (fd.GetEdition() < editionssupport.Minimum || fd.GetEdition() > editionssupport.Maximum) {
    -		return nil, errors.New("use of edition %v not yet supported by the Go Protobuf runtime", fd.GetEdition())
    -	}
     	f.L1.Path = fd.GetName()
     	if f.L1.Path == "" {
     		return nil, errors.New("file path must be populated")
     	}
    +	if f.L1.Syntax == protoreflect.Editions && (fd.GetEdition() < editionssupport.Minimum || fd.GetEdition() > editionssupport.Maximum) {
    +		// Allow cmd/protoc-gen-go/testdata to use any edition for easier
    +		// testing of upcoming edition features.
    +		if !strings.HasPrefix(fd.GetName(), "cmd/protoc-gen-go/testdata/") {
    +			return nil, errors.New("use of edition %v not yet supported by the Go Protobuf runtime", fd.GetEdition())
    +		}
    +	}
     	f.L1.Package = protoreflect.FullName(fd.GetPackage())
     	if !f.L1.Package.IsValid() && f.L1.Package != "" {
     		return nil, errors.New("invalid package: %q", f.L1.Package)
    diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go
    index 85617554272c..ebcb4a8ab138 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go
    @@ -150,6 +150,7 @@ func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDesc
     			opts = proto.Clone(opts).(*descriptorpb.FieldOptions)
     			f.L1.Options = func() protoreflect.ProtoMessage { return opts }
     			f.L1.IsWeak = opts.GetWeak()
    +			f.L1.IsLazy = opts.GetLazy()
     			if opts.Packed != nil {
     				f.L1.EditionFeatures.IsPacked = opts.GetPacked()
     			}
    @@ -214,6 +215,9 @@ func (r descsByName) initExtensionDeclarations(xds []*descriptorpb.FieldDescript
     		if xd.JsonName != nil {
     			x.L2.StringName.InitJSON(xd.GetJsonName())
     		}
    +		if x.L1.Kind == protoreflect.MessageKind && x.L1.EditionFeatures.IsDelimitedEncoded {
    +			x.L1.Kind = protoreflect.GroupKind
    +		}
     	}
     	return xs, nil
     }
    diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go
    index 254ca5854245..f3cebab29c8a 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go
    @@ -46,6 +46,11 @@ func (r *resolver) resolveMessageDependencies(ms []filedesc.Message, mds []*desc
     			if f.L1.Kind, f.L1.Enum, f.L1.Message, err = r.findTarget(f.Kind(), f.Parent().FullName(), partialName(fd.GetTypeName()), f.IsWeak()); err != nil {
     				return errors.New("message field %q cannot resolve type: %v", f.FullName(), err)
     			}
    +			if f.L1.Kind == protoreflect.GroupKind && (f.IsMap() || f.IsMapEntry()) {
    +				// A map field might inherit delimited encoding from a file-wide default feature.
    +				// But maps never actually use delimited encoding. (At least for now...)
    +				f.L1.Kind = protoreflect.MessageKind
    +			}
     			if fd.DefaultValue != nil {
     				v, ev, err := unmarshalDefault(fd.GetDefaultValue(), f, r.allowUnresolvable)
     				if err != nil {
    diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go
    index c6293086750a..5eaf652176c0 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go
    @@ -116,18 +116,6 @@ func validateMessageDeclarations(file *filedesc.File, ms []filedesc.Message, mds
     			if m.ExtensionRanges().Len() > 0 {
     				return errors.New("message %q using proto3 semantics cannot have extension ranges", m.FullName())
     			}
    -			// Verify that field names in proto3 do not conflict if lowercased
    -			// with all underscores removed.
    -			// See protoc v3.8.0: src/google/protobuf/descriptor.cc:5830-5847
    -			names := map[string]protoreflect.FieldDescriptor{}
    -			for i := 0; i < m.Fields().Len(); i++ {
    -				f1 := m.Fields().Get(i)
    -				s := strings.Replace(strings.ToLower(string(f1.Name())), "_", "", -1)
    -				if f2, ok := names[s]; ok {
    -					return errors.New("message %q using proto3 semantics has conflict: %q with %q", m.FullName(), f1.Name(), f2.Name())
    -				}
    -				names[s] = f1
    -			}
     		}
     
     		for j, fd := range md.GetField() {
    @@ -161,7 +149,7 @@ func validateMessageDeclarations(file *filedesc.File, ms []filedesc.Message, mds
     					return errors.New("message field %q under proto3 optional semantics must be within a single element oneof", f.FullName())
     				}
     			}
    -			if f.IsWeak() && !flags.ProtoLegacy {
    +			if f.IsWeak() && !flags.ProtoLegacyWeak {
     				return errors.New("message field %q is a weak field, which is a legacy proto1 feature that is no longer supported", f.FullName())
     			}
     			if f.IsWeak() && (!f.HasPresence() || !isOptionalMessage(f) || f.ContainingOneof() != nil) {
    diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go
    index 804830eda36f..f55b03695966 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go
    @@ -14,7 +14,7 @@ import (
     	"google.golang.org/protobuf/proto"
     	"google.golang.org/protobuf/reflect/protoreflect"
     	"google.golang.org/protobuf/types/descriptorpb"
    -	gofeaturespb "google.golang.org/protobuf/types/gofeaturespb"
    +	"google.golang.org/protobuf/types/gofeaturespb"
     )
     
     var defaults = &descriptorpb.FeatureSetDefaults{}
    @@ -43,6 +43,8 @@ func toEditionProto(ed filedesc.Edition) descriptorpb.Edition {
     		return descriptorpb.Edition_EDITION_PROTO3
     	case filedesc.Edition2023:
     		return descriptorpb.Edition_EDITION_2023
    +	case filedesc.Edition2024:
    +		return descriptorpb.Edition_EDITION_2024
     	default:
     		panic(fmt.Sprintf("unknown value for edition: %v", ed))
     	}
    @@ -123,10 +125,27 @@ func mergeEditionFeatures(parentDesc protoreflect.Descriptor, child *descriptorp
     		parentFS.IsJSONCompliant = *jf == descriptorpb.FeatureSet_ALLOW
     	}
     
    -	if goFeatures, ok := proto.GetExtension(child, gofeaturespb.E_Go).(*gofeaturespb.GoFeatures); ok && goFeatures != nil {
    -		if luje := goFeatures.LegacyUnmarshalJsonEnum; luje != nil {
    -			parentFS.GenerateLegacyUnmarshalJSON = *luje
    -		}
    +	// We must not use proto.GetExtension(child, gofeaturespb.E_Go)
    +	// because that only works for messages we generated, but not for
    +	// dynamicpb messages. See golang/protobuf#1669.
    +	goFeatures := child.ProtoReflect().Get(gofeaturespb.E_Go.TypeDescriptor())
    +	if !goFeatures.IsValid() {
    +		return parentFS
    +	}
    +	// gf.Interface() could be *dynamicpb.Message or *gofeaturespb.GoFeatures.
    +	gf := goFeatures.Message()
    +	fields := gf.Descriptor().Fields()
    +
    +	if fd := fields.ByName("legacy_unmarshal_json_enum"); gf.Has(fd) {
    +		parentFS.GenerateLegacyUnmarshalJSON = gf.Get(fd).Bool()
    +	}
    +
    +	if fd := fields.ByName("strip_enum_prefix"); gf.Has(fd) {
    +		parentFS.StripEnumPrefix = int(gf.Get(fd).Enum())
    +	}
    +
    +	if fd := fields.ByName("api_level"); gf.Has(fd) {
    +		parentFS.APILevel = int(gf.Get(fd).Enum())
     	}
     
     	return parentFS
    diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go
    index d5d5af6ebedb..742cb518c40b 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go
    @@ -23,6 +23,7 @@ type (
     		Unmarshal        func(unmarshalInput) (unmarshalOutput, error)
     		Merge            func(mergeInput) mergeOutput
     		CheckInitialized func(checkInitializedInput) (checkInitializedOutput, error)
    +		Equal            func(equalInput) equalOutput
     	}
     	supportFlags = uint64
     	sizeInput    = struct {
    @@ -75,4 +76,13 @@ type (
     	checkInitializedOutput = struct {
     		pragma.NoUnkeyedLiterals
     	}
    +	equalInput = struct {
    +		pragma.NoUnkeyedLiterals
    +		MessageA Message
    +		MessageB Message
    +	}
    +	equalOutput = struct {
    +		pragma.NoUnkeyedLiterals
    +		Equal bool
    +	}
     )
    diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go
    index 00102d311781..ea154eec44d3 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go
    @@ -485,6 +485,8 @@ func (p *SourcePath) appendEnumValueOptions(b []byte) []byte {
     		b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet)
     	case 3:
     		b = p.appendSingularField(b, "debug_redact", nil)
    +	case 4:
    +		b = p.appendSingularField(b, "feature_support", (*SourcePath).appendFieldOptions_FeatureSupport)
     	case 999:
     		b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption)
     	}
    diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go
    index 5b80afe52045..cd8fadbaf8f3 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go
    @@ -510,7 +510,7 @@ type ExtensionType interface {
     	//
     	// ValueOf is more extensive than protoreflect.ValueOf for a given field's
     	// value as it has more type information available.
    -	ValueOf(interface{}) Value
    +	ValueOf(any) Value
     
     	// InterfaceOf completely unwraps the Value to the underlying Go type.
     	// InterfaceOf panics if the input is nil or does not represent the
    @@ -519,13 +519,13 @@ type ExtensionType interface {
     	//
     	// InterfaceOf is able to unwrap the Value further than Value.Interface
     	// as it has more type information available.
    -	InterfaceOf(Value) interface{}
    +	InterfaceOf(Value) any
     
     	// IsValidValue reports whether the Value is valid to assign to the field.
     	IsValidValue(Value) bool
     
     	// IsValidInterface reports whether the input is valid to assign to the field.
    -	IsValidInterface(interface{}) bool
    +	IsValidInterface(any) bool
     }
     
     // EnumDescriptor describes an enum and
    diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go
    index a7b0d06ff328..a4b78acef688 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go
    @@ -152,7 +152,7 @@ type Message interface {
     	// This method may return nil.
     	//
     	// The returned methods type is identical to
    -	// google.golang.org/protobuf/runtime/protoiface.Methods.
    +	// [google.golang.org/protobuf/runtime/protoiface.Methods].
     	// Consult the protoiface package documentation for details.
     	ProtoMethods() *methods
     }
    diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go
    deleted file mode 100644
    index 7ced876f4e89..000000000000
    --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go
    +++ /dev/null
    @@ -1,60 +0,0 @@
    -// Copyright 2018 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -//go:build purego || appengine
    -// +build purego appengine
    -
    -package protoreflect
    -
    -import "google.golang.org/protobuf/internal/pragma"
    -
    -type valueType int
    -
    -const (
    -	nilType valueType = iota
    -	boolType
    -	int32Type
    -	int64Type
    -	uint32Type
    -	uint64Type
    -	float32Type
    -	float64Type
    -	stringType
    -	bytesType
    -	enumType
    -	ifaceType
    -)
    -
    -// value is a union where only one type can be represented at a time.
    -// This uses a distinct field for each type. This is type safe in Go, but
    -// occupies more memory than necessary (72B).
    -type value struct {
    -	pragma.DoNotCompare // 0B
    -
    -	typ   valueType   // 8B
    -	num   uint64      // 8B
    -	str   string      // 16B
    -	bin   []byte      // 24B
    -	iface interface{} // 16B
    -}
    -
    -func valueOfString(v string) Value {
    -	return Value{typ: stringType, str: v}
    -}
    -func valueOfBytes(v []byte) Value {
    -	return Value{typ: bytesType, bin: v}
    -}
    -func valueOfIface(v interface{}) Value {
    -	return Value{typ: ifaceType, iface: v}
    -}
    -
    -func (v Value) getString() string {
    -	return v.str
    -}
    -func (v Value) getBytes() []byte {
    -	return v.bin
    -}
    -func (v Value) getIface() interface{} {
    -	return v.iface
    -}
    diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go
    index 1603097311e9..9fe83cef5a9c 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go
    @@ -69,8 +69,8 @@ import (
     // composite Value. Modifying an empty, read-only value panics.
     type Value value
     
    -// The protoreflect API uses a custom Value union type instead of interface{}
    -// to keep the future open for performance optimizations. Using an interface{}
    +// The protoreflect API uses a custom Value union type instead of any
    +// to keep the future open for performance optimizations. Using an any
     // always incurs an allocation for primitives (e.g., int64) since it needs to
     // be boxed on the heap (as interfaces can only contain pointers natively).
     // Instead, we represent the Value union as a flat struct that internally keeps
    @@ -85,7 +85,7 @@ type Value value
     // ValueOf returns a Value initialized with the concrete value stored in v.
     // This panics if the type does not match one of the allowed types in the
     // Value union.
    -func ValueOf(v interface{}) Value {
    +func ValueOf(v any) Value {
     	switch v := v.(type) {
     	case nil:
     		return Value{}
    @@ -192,10 +192,10 @@ func (v Value) IsValid() bool {
     	return v.typ != nilType
     }
     
    -// Interface returns v as an interface{}.
    +// Interface returns v as an any.
     //
     // Invariant: v == ValueOf(v).Interface()
    -func (v Value) Interface() interface{} {
    +func (v Value) Interface() any {
     	switch v.typ {
     	case nilType:
     		return nil
    @@ -406,8 +406,8 @@ func (k MapKey) IsValid() bool {
     	return Value(k).IsValid()
     }
     
    -// Interface returns k as an interface{}.
    -func (k MapKey) Interface() interface{} {
    +// Interface returns k as an any.
    +func (k MapKey) Interface() any {
     	return Value(k).Interface()
     }
     
    diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go
    index b1fdbe3e8e17..0015fcb35d83 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go
    @@ -2,8 +2,7 @@
     // Use of this source code is governed by a BSD-style
     // license that can be found in the LICENSE file.
     
    -//go:build !purego && !appengine && !go1.21
    -// +build !purego,!appengine,!go1.21
    +//go:build !go1.21
     
     package protoreflect
     
    @@ -45,7 +44,7 @@ var (
     
     // typeOf returns a pointer to the Go type information.
     // The pointer is comparable and equal if and only if the types are identical.
    -func typeOf(t interface{}) unsafe.Pointer {
    +func typeOf(t any) unsafe.Pointer {
     	return (*ifaceHeader)(unsafe.Pointer(&t)).Type
     }
     
    @@ -80,7 +79,7 @@ func valueOfBytes(v []byte) Value {
     	p := (*sliceHeader)(unsafe.Pointer(&v))
     	return Value{typ: bytesType, ptr: p.Data, num: uint64(len(v))}
     }
    -func valueOfIface(v interface{}) Value {
    +func valueOfIface(v any) Value {
     	p := (*ifaceHeader)(unsafe.Pointer(&v))
     	return Value{typ: p.Type, ptr: p.Data}
     }
    @@ -93,7 +92,7 @@ func (v Value) getBytes() (x []byte) {
     	*(*sliceHeader)(unsafe.Pointer(&x)) = sliceHeader{Data: v.ptr, Len: int(v.num), Cap: int(v.num)}
     	return x
     }
    -func (v Value) getIface() (x interface{}) {
    +func (v Value) getIface() (x any) {
     	*(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr}
     	return x
     }
    diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go
    index 43547011173a..479527b58dd3 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go
    @@ -2,8 +2,7 @@
     // Use of this source code is governed by a BSD-style
     // license that can be found in the LICENSE file.
     
    -//go:build !purego && !appengine && go1.21
    -// +build !purego,!appengine,go1.21
    +//go:build go1.21
     
     package protoreflect
     
    @@ -15,7 +14,7 @@ import (
     
     type (
     	ifaceHeader struct {
    -		_    [0]interface{} // if interfaces have greater alignment than unsafe.Pointer, this will enforce it.
    +		_    [0]any // if interfaces have greater alignment than unsafe.Pointer, this will enforce it.
     		Type unsafe.Pointer
     		Data unsafe.Pointer
     	}
    @@ -37,7 +36,7 @@ var (
     
     // typeOf returns a pointer to the Go type information.
     // The pointer is comparable and equal if and only if the types are identical.
    -func typeOf(t interface{}) unsafe.Pointer {
    +func typeOf(t any) unsafe.Pointer {
     	return (*ifaceHeader)(unsafe.Pointer(&t)).Type
     }
     
    @@ -70,7 +69,7 @@ func valueOfString(v string) Value {
     func valueOfBytes(v []byte) Value {
     	return Value{typ: bytesType, ptr: unsafe.Pointer(unsafe.SliceData(v)), num: uint64(len(v))}
     }
    -func valueOfIface(v interface{}) Value {
    +func valueOfIface(v any) Value {
     	p := (*ifaceHeader)(unsafe.Pointer(&v))
     	return Value{typ: p.Type, ptr: p.Data}
     }
    @@ -81,7 +80,7 @@ func (v Value) getString() string {
     func (v Value) getBytes() []byte {
     	return unsafe.Slice((*byte)(v.ptr), v.num)
     }
    -func (v Value) getIface() (x interface{}) {
    +func (v Value) getIface() (x any) {
     	*(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr}
     	return x
     }
    diff --git a/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go b/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go
    index 6267dc52a67a..de1777339141 100644
    --- a/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go
    +++ b/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go
    @@ -95,7 +95,7 @@ type Files struct {
     	// multiple files. Only top-level declarations are registered.
     	// Note that enum values are in the top-level since that are in the same
     	// scope as the parent enum.
    -	descsByName map[protoreflect.FullName]interface{}
    +	descsByName map[protoreflect.FullName]any
     	filesByPath map[string][]protoreflect.FileDescriptor
     	numFiles    int
     }
    @@ -117,7 +117,7 @@ func (r *Files) RegisterFile(file protoreflect.FileDescriptor) error {
     		defer globalMutex.Unlock()
     	}
     	if r.descsByName == nil {
    -		r.descsByName = map[protoreflect.FullName]interface{}{
    +		r.descsByName = map[protoreflect.FullName]any{
     			"": &packageDescriptor{},
     		}
     		r.filesByPath = make(map[string][]protoreflect.FileDescriptor)
    @@ -485,7 +485,7 @@ type Types struct {
     }
     
     type (
    -	typesByName         map[protoreflect.FullName]interface{}
    +	typesByName         map[protoreflect.FullName]any
     	extensionsByMessage map[protoreflect.FullName]extensionsByNumber
     	extensionsByNumber  map[protoreflect.FieldNumber]protoreflect.ExtensionType
     )
    @@ -570,7 +570,7 @@ func (r *Types) RegisterExtension(xt protoreflect.ExtensionType) error {
     	return nil
     }
     
    -func (r *Types) register(kind string, desc protoreflect.Descriptor, typ interface{}) error {
    +func (r *Types) register(kind string, desc protoreflect.Descriptor, typ any) error {
     	name := desc.FullName()
     	prev := r.typesByName[name]
     	if prev != nil {
    @@ -841,7 +841,7 @@ func (r *Types) RangeExtensionsByMessage(message protoreflect.FullName, f func(p
     	}
     }
     
    -func typeName(t interface{}) string {
    +func typeName(t any) string {
     	switch t.(type) {
     	case protoreflect.EnumType:
     		return "enum"
    @@ -854,7 +854,7 @@ func typeName(t interface{}) string {
     	}
     }
     
    -func amendErrorWithCaller(err error, prev, curr interface{}) error {
    +func amendErrorWithCaller(err error, prev, curr any) error {
     	prevPkg := goPackage(prev)
     	currPkg := goPackage(curr)
     	if prevPkg == "" || currPkg == "" || prevPkg == currPkg {
    @@ -863,7 +863,7 @@ func amendErrorWithCaller(err error, prev, curr interface{}) error {
     	return errors.New("%s\n\tpreviously from: %q\n\tcurrently from:  %q", err, prevPkg, currPkg)
     }
     
    -func goPackage(v interface{}) string {
    +func goPackage(v any) string {
     	switch d := v.(type) {
     	case protoreflect.EnumType:
     		v = d.Descriptor()
    diff --git a/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go b/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go
    index 44cf467d8845..28e9e9f03971 100644
    --- a/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go
    +++ b/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go
    @@ -39,6 +39,9 @@ type Methods = struct {
     
     	// CheckInitialized returns an error if any required fields in the message are not set.
     	CheckInitialized func(CheckInitializedInput) (CheckInitializedOutput, error)
    +
    +	// Equal compares two messages and returns EqualOutput.Equal == true if they are equal.
    +	Equal func(EqualInput) EqualOutput
     }
     
     // SupportFlags indicate support for optional features.
    @@ -119,6 +122,22 @@ type UnmarshalInputFlags = uint8
     
     const (
     	UnmarshalDiscardUnknown UnmarshalInputFlags = 1 << iota
    +
    +	// UnmarshalAliasBuffer permits unmarshal operations to alias the input buffer.
    +	// The unmarshaller must not modify the contents of the buffer.
    +	UnmarshalAliasBuffer
    +
    +	// UnmarshalValidated indicates that validation has already been
    +	// performed on the input buffer.
    +	UnmarshalValidated
    +
    +	// UnmarshalCheckRequired is set if this unmarshal operation ultimately will care if required fields are
    +	// initialized.
    +	UnmarshalCheckRequired
    +
    +	// UnmarshalNoLazyDecoding is set if this unmarshal operation should not use
    +	// lazy decoding, even when otherwise available.
    +	UnmarshalNoLazyDecoding
     )
     
     // UnmarshalOutputFlags are output from the Unmarshal method.
    @@ -166,3 +185,18 @@ type CheckInitializedInput = struct {
     type CheckInitializedOutput = struct {
     	pragma.NoUnkeyedLiterals
     }
    +
    +// EqualInput is input to the Equal method.
    +type EqualInput = struct {
    +	pragma.NoUnkeyedLiterals
    +
    +	MessageA protoreflect.Message
    +	MessageB protoreflect.Message
    +}
    +
    +// EqualOutput is output from the Equal method.
    +type EqualOutput = struct {
    +	pragma.NoUnkeyedLiterals
    +
    +	Equal bool
    +}
    diff --git a/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go b/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go
    index 4a1ab7fb3de1..93df1b569bbc 100644
    --- a/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go
    +++ b/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go
    @@ -15,6 +15,7 @@ import (
     	"google.golang.org/protobuf/internal/filedesc"
     	"google.golang.org/protobuf/internal/filetype"
     	"google.golang.org/protobuf/internal/impl"
    +	"google.golang.org/protobuf/internal/protolazy"
     )
     
     // UnsafeEnabled specifies whether package unsafe can be used.
    @@ -39,6 +40,9 @@ type (
     	ExtensionFieldV1 = impl.ExtensionField
     
     	Pointer = impl.Pointer
    +
    +	LazyUnmarshalInfo  = *protolazy.XXX_lazyUnmarshalInfo
    +	RaceDetectHookData = impl.RaceDetectHookData
     )
     
     var X impl.Export
    diff --git a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
    index 10c9030eb030..a551e7ae945e 100644
    --- a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
    +++ b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
    @@ -69,7 +69,7 @@ const (
     	Edition_EDITION_2023 Edition = 1000
     	Edition_EDITION_2024 Edition = 1001
     	// Placeholder editions for testing feature resolution.  These should not be
    -	// used or relyed on outside of tests.
    +	// used or relied on outside of tests.
     	Edition_EDITION_1_TEST_ONLY     Edition = 1
     	Edition_EDITION_2_TEST_ONLY     Edition = 2
     	Edition_EDITION_99997_TEST_ONLY Edition = 99997
    @@ -577,8 +577,6 @@ func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) {
     }
     
     // If set to RETENTION_SOURCE, the option will be omitted from the binary.
    -// Note: as of January 2023, support for this is in progress and does not yet
    -// have an effect (b/264593489).
     type FieldOptions_OptionRetention int32
     
     const (
    @@ -640,8 +638,7 @@ func (FieldOptions_OptionRetention) EnumDescriptor() ([]byte, []int) {
     
     // This indicates the types of entities that the field may apply to when used
     // as an option. If it is unset, then the field may be freely used as an
    -// option on any kind of entity. Note: as of January 2023, support for this is
    -// in progress and does not yet have an effect (b/264593489).
    +// option on any kind of entity.
     type FieldOptions_OptionTargetType int32
     
     const (
    @@ -1208,20 +1205,18 @@ func (GeneratedCodeInfo_Annotation_Semantic) EnumDescriptor() ([]byte, []int) {
     // The protocol compiler can output a FileDescriptorSet containing the .proto
     // files it parses.
     type FileDescriptorSet struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    -	File []*FileDescriptorProto `protobuf:"bytes,1,rep,name=file" json:"file,omitempty"`
    +	state           protoimpl.MessageState `protogen:"open.v1"`
    +	File            []*FileDescriptorProto `protobuf:"bytes,1,rep,name=file" json:"file,omitempty"`
    +	extensionFields protoimpl.ExtensionFields
    +	unknownFields   protoimpl.UnknownFields
    +	sizeCache       protoimpl.SizeCache
     }
     
     func (x *FileDescriptorSet) Reset() {
     	*x = FileDescriptorSet{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[0]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[0]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FileDescriptorSet) String() string {
    @@ -1232,7 +1227,7 @@ func (*FileDescriptorSet) ProtoMessage() {}
     
     func (x *FileDescriptorSet) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[0]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -1256,12 +1251,9 @@ func (x *FileDescriptorSet) GetFile() []*FileDescriptorProto {
     
     // Describes a complete .proto file.
     type FileDescriptorProto struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    -	Name    *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`       // file name, relative to root of source tree
    -	Package *string `protobuf:"bytes,2,opt,name=package" json:"package,omitempty"` // e.g. "foo", "foo.bar", etc.
    +	state   protoimpl.MessageState `protogen:"open.v1"`
    +	Name    *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`       // file name, relative to root of source tree
    +	Package *string                `protobuf:"bytes,2,opt,name=package" json:"package,omitempty"` // e.g. "foo", "foo.bar", etc.
     	// Names of files imported by this file.
     	Dependency []string `protobuf:"bytes,3,rep,name=dependency" json:"dependency,omitempty"`
     	// Indexes of the public imported files in the dependency list above.
    @@ -1286,16 +1278,16 @@ type FileDescriptorProto struct {
     	// If `edition` is present, this value must be "editions".
     	Syntax *string `protobuf:"bytes,12,opt,name=syntax" json:"syntax,omitempty"`
     	// The edition of the proto file.
    -	Edition *Edition `protobuf:"varint,14,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
    +	Edition       *Edition `protobuf:"varint,14,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *FileDescriptorProto) Reset() {
     	*x = FileDescriptorProto{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[1]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[1]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FileDescriptorProto) String() string {
    @@ -1306,7 +1298,7 @@ func (*FileDescriptorProto) ProtoMessage() {}
     
     func (x *FileDescriptorProto) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[1]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -1414,10 +1406,7 @@ func (x *FileDescriptorProto) GetEdition() Edition {
     
     // Describes a message type.
     type DescriptorProto struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state          protoimpl.MessageState            `protogen:"open.v1"`
     	Name           *string                           `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
     	Field          []*FieldDescriptorProto           `protobuf:"bytes,2,rep,name=field" json:"field,omitempty"`
     	Extension      []*FieldDescriptorProto           `protobuf:"bytes,6,rep,name=extension" json:"extension,omitempty"`
    @@ -1429,16 +1418,16 @@ type DescriptorProto struct {
     	ReservedRange  []*DescriptorProto_ReservedRange  `protobuf:"bytes,9,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"`
     	// Reserved field names, which may not be used by fields in the same message.
     	// A given name may only be reserved once.
    -	ReservedName []string `protobuf:"bytes,10,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
    +	ReservedName  []string `protobuf:"bytes,10,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *DescriptorProto) Reset() {
     	*x = DescriptorProto{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[2]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[2]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *DescriptorProto) String() string {
    @@ -1449,7 +1438,7 @@ func (*DescriptorProto) ProtoMessage() {}
     
     func (x *DescriptorProto) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[2]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -1535,11 +1524,7 @@ func (x *DescriptorProto) GetReservedName() []string {
     }
     
     type ExtensionRangeOptions struct {
    -	state           protoimpl.MessageState
    -	sizeCache       protoimpl.SizeCache
    -	unknownFields   protoimpl.UnknownFields
    -	extensionFields protoimpl.ExtensionFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The parser stores options it doesn't recognize here. See above.
     	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
     	// For external users: DO NOT USE. We are in the process of open sourcing
    @@ -1551,7 +1536,10 @@ type ExtensionRangeOptions struct {
     	// The verification state of the range.
     	// TODO: flip the default to DECLARATION once all empty ranges
     	// are marked as UNVERIFIED.
    -	Verification *ExtensionRangeOptions_VerificationState `protobuf:"varint,3,opt,name=verification,enum=google.protobuf.ExtensionRangeOptions_VerificationState,def=1" json:"verification,omitempty"`
    +	Verification    *ExtensionRangeOptions_VerificationState `protobuf:"varint,3,opt,name=verification,enum=google.protobuf.ExtensionRangeOptions_VerificationState,def=1" json:"verification,omitempty"`
    +	extensionFields protoimpl.ExtensionFields
    +	unknownFields   protoimpl.UnknownFields
    +	sizeCache       protoimpl.SizeCache
     }
     
     // Default values for ExtensionRangeOptions fields.
    @@ -1561,11 +1549,9 @@ const (
     
     func (x *ExtensionRangeOptions) Reset() {
     	*x = ExtensionRangeOptions{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[3]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[3]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *ExtensionRangeOptions) String() string {
    @@ -1576,7 +1562,7 @@ func (*ExtensionRangeOptions) ProtoMessage() {}
     
     func (x *ExtensionRangeOptions) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[3]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -1621,10 +1607,7 @@ func (x *ExtensionRangeOptions) GetVerification() ExtensionRangeOptions_Verifica
     
     // Describes a field within a message.
     type FieldDescriptorProto struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state  protoimpl.MessageState      `protogen:"open.v1"`
     	Name   *string                     `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
     	Number *int32                      `protobuf:"varint,3,opt,name=number" json:"number,omitempty"`
     	Label  *FieldDescriptorProto_Label `protobuf:"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label" json:"label,omitempty"`
    @@ -1676,15 +1659,15 @@ type FieldDescriptorProto struct {
     	// Proto2 optional fields do not set this flag, because they already indicate
     	// optional with `LABEL_OPTIONAL`.
     	Proto3Optional *bool `protobuf:"varint,17,opt,name=proto3_optional,json=proto3Optional" json:"proto3_optional,omitempty"`
    +	unknownFields  protoimpl.UnknownFields
    +	sizeCache      protoimpl.SizeCache
     }
     
     func (x *FieldDescriptorProto) Reset() {
     	*x = FieldDescriptorProto{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[4]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[4]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FieldDescriptorProto) String() string {
    @@ -1695,7 +1678,7 @@ func (*FieldDescriptorProto) ProtoMessage() {}
     
     func (x *FieldDescriptorProto) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[4]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -1789,21 +1772,18 @@ func (x *FieldDescriptorProto) GetProto3Optional() bool {
     
     // Describes a oneof.
     type OneofDescriptorProto struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    +	state         protoimpl.MessageState `protogen:"open.v1"`
    +	Name          *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
    +	Options       *OneofOptions          `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"`
     	unknownFields protoimpl.UnknownFields
    -
    -	Name    *string       `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
    -	Options *OneofOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"`
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *OneofDescriptorProto) Reset() {
     	*x = OneofDescriptorProto{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[5]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[5]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *OneofDescriptorProto) String() string {
    @@ -1814,7 +1794,7 @@ func (*OneofDescriptorProto) ProtoMessage() {}
     
     func (x *OneofDescriptorProto) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[5]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -1845,10 +1825,7 @@ func (x *OneofDescriptorProto) GetOptions() *OneofOptions {
     
     // Describes an enum type.
     type EnumDescriptorProto struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state   protoimpl.MessageState      `protogen:"open.v1"`
     	Name    *string                     `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
     	Value   []*EnumValueDescriptorProto `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"`
     	Options *EnumOptions                `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
    @@ -1858,16 +1835,16 @@ type EnumDescriptorProto struct {
     	ReservedRange []*EnumDescriptorProto_EnumReservedRange `protobuf:"bytes,4,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"`
     	// Reserved enum value names, which may not be reused. A given name may only
     	// be reserved once.
    -	ReservedName []string `protobuf:"bytes,5,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
    +	ReservedName  []string `protobuf:"bytes,5,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *EnumDescriptorProto) Reset() {
     	*x = EnumDescriptorProto{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[6]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[6]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *EnumDescriptorProto) String() string {
    @@ -1878,7 +1855,7 @@ func (*EnumDescriptorProto) ProtoMessage() {}
     
     func (x *EnumDescriptorProto) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[6]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -1930,22 +1907,19 @@ func (x *EnumDescriptorProto) GetReservedName() []string {
     
     // Describes a value within an enum.
     type EnumValueDescriptorProto struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    +	state         protoimpl.MessageState `protogen:"open.v1"`
    +	Name          *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
    +	Number        *int32                 `protobuf:"varint,2,opt,name=number" json:"number,omitempty"`
    +	Options       *EnumValueOptions      `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
     	unknownFields protoimpl.UnknownFields
    -
    -	Name    *string           `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
    -	Number  *int32            `protobuf:"varint,2,opt,name=number" json:"number,omitempty"`
    -	Options *EnumValueOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *EnumValueDescriptorProto) Reset() {
     	*x = EnumValueDescriptorProto{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[7]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[7]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *EnumValueDescriptorProto) String() string {
    @@ -1956,7 +1930,7 @@ func (*EnumValueDescriptorProto) ProtoMessage() {}
     
     func (x *EnumValueDescriptorProto) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[7]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -1994,22 +1968,19 @@ func (x *EnumValueDescriptorProto) GetOptions() *EnumValueOptions {
     
     // Describes a service.
     type ServiceDescriptorProto struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    +	state         protoimpl.MessageState   `protogen:"open.v1"`
    +	Name          *string                  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
    +	Method        []*MethodDescriptorProto `protobuf:"bytes,2,rep,name=method" json:"method,omitempty"`
    +	Options       *ServiceOptions          `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
     	unknownFields protoimpl.UnknownFields
    -
    -	Name    *string                  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
    -	Method  []*MethodDescriptorProto `protobuf:"bytes,2,rep,name=method" json:"method,omitempty"`
    -	Options *ServiceOptions          `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *ServiceDescriptorProto) Reset() {
     	*x = ServiceDescriptorProto{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[8]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[8]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *ServiceDescriptorProto) String() string {
    @@ -2020,7 +1991,7 @@ func (*ServiceDescriptorProto) ProtoMessage() {}
     
     func (x *ServiceDescriptorProto) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[8]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -2058,11 +2029,8 @@ func (x *ServiceDescriptorProto) GetOptions() *ServiceOptions {
     
     // Describes a method of a service.
     type MethodDescriptorProto struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    -	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
    +	state protoimpl.MessageState `protogen:"open.v1"`
    +	Name  *string                `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
     	// Input and output type names.  These are resolved in the same way as
     	// FieldDescriptorProto.type_name, but must refer to a message type.
     	InputType  *string        `protobuf:"bytes,2,opt,name=input_type,json=inputType" json:"input_type,omitempty"`
    @@ -2072,6 +2040,8 @@ type MethodDescriptorProto struct {
     	ClientStreaming *bool `protobuf:"varint,5,opt,name=client_streaming,json=clientStreaming,def=0" json:"client_streaming,omitempty"`
     	// Identifies if server streams multiple server messages
     	ServerStreaming *bool `protobuf:"varint,6,opt,name=server_streaming,json=serverStreaming,def=0" json:"server_streaming,omitempty"`
    +	unknownFields   protoimpl.UnknownFields
    +	sizeCache       protoimpl.SizeCache
     }
     
     // Default values for MethodDescriptorProto fields.
    @@ -2082,11 +2052,9 @@ const (
     
     func (x *MethodDescriptorProto) Reset() {
     	*x = MethodDescriptorProto{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[9]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[9]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *MethodDescriptorProto) String() string {
    @@ -2097,7 +2065,7 @@ func (*MethodDescriptorProto) ProtoMessage() {}
     
     func (x *MethodDescriptorProto) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[9]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -2155,11 +2123,7 @@ func (x *MethodDescriptorProto) GetServerStreaming() bool {
     }
     
     type FileOptions struct {
    -	state           protoimpl.MessageState
    -	sizeCache       protoimpl.SizeCache
    -	unknownFields   protoimpl.UnknownFields
    -	extensionFields protoimpl.ExtensionFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Sets the Java package where classes generated from this .proto will be
     	// placed.  By default, the proto package is used, but this is often
     	// inappropriate because proto packages do not normally start with backwards
    @@ -2251,6 +2215,9 @@ type FileOptions struct {
     	// The parser stores options it doesn't recognize here.
     	// See the documentation for the "Options" section above.
     	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
    +	extensionFields     protoimpl.ExtensionFields
    +	unknownFields       protoimpl.UnknownFields
    +	sizeCache           protoimpl.SizeCache
     }
     
     // Default values for FileOptions fields.
    @@ -2267,11 +2234,9 @@ const (
     
     func (x *FileOptions) Reset() {
     	*x = FileOptions{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[10]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[10]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FileOptions) String() string {
    @@ -2282,7 +2247,7 @@ func (*FileOptions) ProtoMessage() {}
     
     func (x *FileOptions) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[10]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -2446,11 +2411,7 @@ func (x *FileOptions) GetUninterpretedOption() []*UninterpretedOption {
     }
     
     type MessageOptions struct {
    -	state           protoimpl.MessageState
    -	sizeCache       protoimpl.SizeCache
    -	unknownFields   protoimpl.UnknownFields
    -	extensionFields protoimpl.ExtensionFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Set true to use the old proto1 MessageSet wire format for extensions.
     	// This is provided for backwards-compatibility with the MessageSet wire
     	// format.  You should not use this for any other reason:  It's less
    @@ -2523,6 +2484,9 @@ type MessageOptions struct {
     	Features *FeatureSet `protobuf:"bytes,12,opt,name=features" json:"features,omitempty"`
     	// The parser stores options it doesn't recognize here. See above.
     	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
    +	extensionFields     protoimpl.ExtensionFields
    +	unknownFields       protoimpl.UnknownFields
    +	sizeCache           protoimpl.SizeCache
     }
     
     // Default values for MessageOptions fields.
    @@ -2534,11 +2498,9 @@ const (
     
     func (x *MessageOptions) Reset() {
     	*x = MessageOptions{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[11]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[11]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *MessageOptions) String() string {
    @@ -2549,7 +2511,7 @@ func (*MessageOptions) ProtoMessage() {}
     
     func (x *MessageOptions) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[11]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -2615,17 +2577,14 @@ func (x *MessageOptions) GetUninterpretedOption() []*UninterpretedOption {
     }
     
     type FieldOptions struct {
    -	state           protoimpl.MessageState
    -	sizeCache       protoimpl.SizeCache
    -	unknownFields   protoimpl.UnknownFields
    -	extensionFields protoimpl.ExtensionFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
    +	// NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.
     	// The ctype option instructs the C++ code generator to use a different
     	// representation of the field than it normally would.  See the specific
     	// options below.  This option is only implemented to support use of
     	// [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
    -	// type "bytes" in the open source release -- sorry, we'll try to include
    -	// other types in a future version!
    +	// type "bytes" in the open source release.
    +	// TODO: make ctype actually deprecated.
     	Ctype *FieldOptions_CType `protobuf:"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0" json:"ctype,omitempty"`
     	// The packed option can be enabled for repeated primitive fields to enable
     	// a more efficient representation on the wire. Rather than repeatedly
    @@ -2692,6 +2651,9 @@ type FieldOptions struct {
     	FeatureSupport *FieldOptions_FeatureSupport `protobuf:"bytes,22,opt,name=feature_support,json=featureSupport" json:"feature_support,omitempty"`
     	// The parser stores options it doesn't recognize here. See above.
     	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
    +	extensionFields     protoimpl.ExtensionFields
    +	unknownFields       protoimpl.UnknownFields
    +	sizeCache           protoimpl.SizeCache
     }
     
     // Default values for FieldOptions fields.
    @@ -2707,11 +2669,9 @@ const (
     
     func (x *FieldOptions) Reset() {
     	*x = FieldOptions{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[12]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[12]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FieldOptions) String() string {
    @@ -2722,7 +2682,7 @@ func (*FieldOptions) ProtoMessage() {}
     
     func (x *FieldOptions) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[12]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -2836,24 +2796,21 @@ func (x *FieldOptions) GetUninterpretedOption() []*UninterpretedOption {
     }
     
     type OneofOptions struct {
    -	state           protoimpl.MessageState
    -	sizeCache       protoimpl.SizeCache
    -	unknownFields   protoimpl.UnknownFields
    -	extensionFields protoimpl.ExtensionFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Any features defined in the specific edition.
     	Features *FeatureSet `protobuf:"bytes,1,opt,name=features" json:"features,omitempty"`
     	// The parser stores options it doesn't recognize here. See above.
     	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
    +	extensionFields     protoimpl.ExtensionFields
    +	unknownFields       protoimpl.UnknownFields
    +	sizeCache           protoimpl.SizeCache
     }
     
     func (x *OneofOptions) Reset() {
     	*x = OneofOptions{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[13]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[13]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *OneofOptions) String() string {
    @@ -2864,7 +2821,7 @@ func (*OneofOptions) ProtoMessage() {}
     
     func (x *OneofOptions) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[13]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -2894,11 +2851,7 @@ func (x *OneofOptions) GetUninterpretedOption() []*UninterpretedOption {
     }
     
     type EnumOptions struct {
    -	state           protoimpl.MessageState
    -	sizeCache       protoimpl.SizeCache
    -	unknownFields   protoimpl.UnknownFields
    -	extensionFields protoimpl.ExtensionFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Set this option to true to allow mapping different tag names to the same
     	// value.
     	AllowAlias *bool `protobuf:"varint,2,opt,name=allow_alias,json=allowAlias" json:"allow_alias,omitempty"`
    @@ -2920,6 +2873,9 @@ type EnumOptions struct {
     	Features *FeatureSet `protobuf:"bytes,7,opt,name=features" json:"features,omitempty"`
     	// The parser stores options it doesn't recognize here. See above.
     	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
    +	extensionFields     protoimpl.ExtensionFields
    +	unknownFields       protoimpl.UnknownFields
    +	sizeCache           protoimpl.SizeCache
     }
     
     // Default values for EnumOptions fields.
    @@ -2929,11 +2885,9 @@ const (
     
     func (x *EnumOptions) Reset() {
     	*x = EnumOptions{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[14]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[14]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *EnumOptions) String() string {
    @@ -2944,7 +2898,7 @@ func (*EnumOptions) ProtoMessage() {}
     
     func (x *EnumOptions) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[14]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -2996,11 +2950,7 @@ func (x *EnumOptions) GetUninterpretedOption() []*UninterpretedOption {
     }
     
     type EnumValueOptions struct {
    -	state           protoimpl.MessageState
    -	sizeCache       protoimpl.SizeCache
    -	unknownFields   protoimpl.UnknownFields
    -	extensionFields protoimpl.ExtensionFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Is this enum value deprecated?
     	// Depending on the target platform, this can emit Deprecated annotations
     	// for the enum value, or it will be completely ignored; in the very least,
    @@ -3012,8 +2962,13 @@ type EnumValueOptions struct {
     	// out when using debug formats, e.g. when the field contains sensitive
     	// credentials.
     	DebugRedact *bool `protobuf:"varint,3,opt,name=debug_redact,json=debugRedact,def=0" json:"debug_redact,omitempty"`
    +	// Information about the support window of a feature value.
    +	FeatureSupport *FieldOptions_FeatureSupport `protobuf:"bytes,4,opt,name=feature_support,json=featureSupport" json:"feature_support,omitempty"`
     	// The parser stores options it doesn't recognize here. See above.
     	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
    +	extensionFields     protoimpl.ExtensionFields
    +	unknownFields       protoimpl.UnknownFields
    +	sizeCache           protoimpl.SizeCache
     }
     
     // Default values for EnumValueOptions fields.
    @@ -3024,11 +2979,9 @@ const (
     
     func (x *EnumValueOptions) Reset() {
     	*x = EnumValueOptions{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[15]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[15]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *EnumValueOptions) String() string {
    @@ -3039,7 +2992,7 @@ func (*EnumValueOptions) ProtoMessage() {}
     
     func (x *EnumValueOptions) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[15]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3075,6 +3028,13 @@ func (x *EnumValueOptions) GetDebugRedact() bool {
     	return Default_EnumValueOptions_DebugRedact
     }
     
    +func (x *EnumValueOptions) GetFeatureSupport() *FieldOptions_FeatureSupport {
    +	if x != nil {
    +		return x.FeatureSupport
    +	}
    +	return nil
    +}
    +
     func (x *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption {
     	if x != nil {
     		return x.UninterpretedOption
    @@ -3083,11 +3043,7 @@ func (x *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption {
     }
     
     type ServiceOptions struct {
    -	state           protoimpl.MessageState
    -	sizeCache       protoimpl.SizeCache
    -	unknownFields   protoimpl.UnknownFields
    -	extensionFields protoimpl.ExtensionFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Any features defined in the specific edition.
     	Features *FeatureSet `protobuf:"bytes,34,opt,name=features" json:"features,omitempty"`
     	// Is this service deprecated?
    @@ -3097,6 +3053,9 @@ type ServiceOptions struct {
     	Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
     	// The parser stores options it doesn't recognize here. See above.
     	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
    +	extensionFields     protoimpl.ExtensionFields
    +	unknownFields       protoimpl.UnknownFields
    +	sizeCache           protoimpl.SizeCache
     }
     
     // Default values for ServiceOptions fields.
    @@ -3106,11 +3065,9 @@ const (
     
     func (x *ServiceOptions) Reset() {
     	*x = ServiceOptions{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[16]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[16]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *ServiceOptions) String() string {
    @@ -3121,7 +3078,7 @@ func (*ServiceOptions) ProtoMessage() {}
     
     func (x *ServiceOptions) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[16]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3158,11 +3115,7 @@ func (x *ServiceOptions) GetUninterpretedOption() []*UninterpretedOption {
     }
     
     type MethodOptions struct {
    -	state           protoimpl.MessageState
    -	sizeCache       protoimpl.SizeCache
    -	unknownFields   protoimpl.UnknownFields
    -	extensionFields protoimpl.ExtensionFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Is this method deprecated?
     	// Depending on the target platform, this can emit Deprecated annotations
     	// for the method, or it will be completely ignored; in the very least,
    @@ -3173,6 +3126,9 @@ type MethodOptions struct {
     	Features *FeatureSet `protobuf:"bytes,35,opt,name=features" json:"features,omitempty"`
     	// The parser stores options it doesn't recognize here. See above.
     	UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
    +	extensionFields     protoimpl.ExtensionFields
    +	unknownFields       protoimpl.UnknownFields
    +	sizeCache           protoimpl.SizeCache
     }
     
     // Default values for MethodOptions fields.
    @@ -3183,11 +3139,9 @@ const (
     
     func (x *MethodOptions) Reset() {
     	*x = MethodOptions{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[17]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[17]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *MethodOptions) String() string {
    @@ -3198,7 +3152,7 @@ func (*MethodOptions) ProtoMessage() {}
     
     func (x *MethodOptions) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[17]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3248,11 +3202,8 @@ func (x *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {
     // or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
     // in them.
     type UninterpretedOption struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    -	Name []*UninterpretedOption_NamePart `protobuf:"bytes,2,rep,name=name" json:"name,omitempty"`
    +	state protoimpl.MessageState          `protogen:"open.v1"`
    +	Name  []*UninterpretedOption_NamePart `protobuf:"bytes,2,rep,name=name" json:"name,omitempty"`
     	// The value of the uninterpreted option, in whatever type the tokenizer
     	// identified it as during parsing. Exactly one of these should be set.
     	IdentifierValue  *string  `protobuf:"bytes,3,opt,name=identifier_value,json=identifierValue" json:"identifier_value,omitempty"`
    @@ -3261,15 +3212,15 @@ type UninterpretedOption struct {
     	DoubleValue      *float64 `protobuf:"fixed64,6,opt,name=double_value,json=doubleValue" json:"double_value,omitempty"`
     	StringValue      []byte   `protobuf:"bytes,7,opt,name=string_value,json=stringValue" json:"string_value,omitempty"`
     	AggregateValue   *string  `protobuf:"bytes,8,opt,name=aggregate_value,json=aggregateValue" json:"aggregate_value,omitempty"`
    +	unknownFields    protoimpl.UnknownFields
    +	sizeCache        protoimpl.SizeCache
     }
     
     func (x *UninterpretedOption) Reset() {
     	*x = UninterpretedOption{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[18]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[18]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *UninterpretedOption) String() string {
    @@ -3280,7 +3231,7 @@ func (*UninterpretedOption) ProtoMessage() {}
     
     func (x *UninterpretedOption) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[18]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3351,26 +3302,23 @@ func (x *UninterpretedOption) GetAggregateValue() string {
     // be designed and implemented to handle this, hopefully before we ever hit a
     // conflict here.
     type FeatureSet struct {
    -	state           protoimpl.MessageState
    -	sizeCache       protoimpl.SizeCache
    -	unknownFields   protoimpl.UnknownFields
    -	extensionFields protoimpl.ExtensionFields
    -
    +	state                 protoimpl.MessageState            `protogen:"open.v1"`
     	FieldPresence         *FeatureSet_FieldPresence         `protobuf:"varint,1,opt,name=field_presence,json=fieldPresence,enum=google.protobuf.FeatureSet_FieldPresence" json:"field_presence,omitempty"`
     	EnumType              *FeatureSet_EnumType              `protobuf:"varint,2,opt,name=enum_type,json=enumType,enum=google.protobuf.FeatureSet_EnumType" json:"enum_type,omitempty"`
     	RepeatedFieldEncoding *FeatureSet_RepeatedFieldEncoding `protobuf:"varint,3,opt,name=repeated_field_encoding,json=repeatedFieldEncoding,enum=google.protobuf.FeatureSet_RepeatedFieldEncoding" json:"repeated_field_encoding,omitempty"`
     	Utf8Validation        *FeatureSet_Utf8Validation        `protobuf:"varint,4,opt,name=utf8_validation,json=utf8Validation,enum=google.protobuf.FeatureSet_Utf8Validation" json:"utf8_validation,omitempty"`
     	MessageEncoding       *FeatureSet_MessageEncoding       `protobuf:"varint,5,opt,name=message_encoding,json=messageEncoding,enum=google.protobuf.FeatureSet_MessageEncoding" json:"message_encoding,omitempty"`
     	JsonFormat            *FeatureSet_JsonFormat            `protobuf:"varint,6,opt,name=json_format,json=jsonFormat,enum=google.protobuf.FeatureSet_JsonFormat" json:"json_format,omitempty"`
    +	extensionFields       protoimpl.ExtensionFields
    +	unknownFields         protoimpl.UnknownFields
    +	sizeCache             protoimpl.SizeCache
     }
     
     func (x *FeatureSet) Reset() {
     	*x = FeatureSet{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[19]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[19]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FeatureSet) String() string {
    @@ -3381,7 +3329,7 @@ func (*FeatureSet) ProtoMessage() {}
     
     func (x *FeatureSet) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[19]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3443,10 +3391,7 @@ func (x *FeatureSet) GetJsonFormat() FeatureSet_JsonFormat {
     // feature resolution. The resolution with this object becomes a simple search
     // for the closest matching edition, followed by proto merges.
     type FeatureSetDefaults struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state    protoimpl.MessageState                         `protogen:"open.v1"`
     	Defaults []*FeatureSetDefaults_FeatureSetEditionDefault `protobuf:"bytes,1,rep,name=defaults" json:"defaults,omitempty"`
     	// The minimum supported edition (inclusive) when this was constructed.
     	// Editions before this will not have defaults.
    @@ -3454,15 +3399,15 @@ type FeatureSetDefaults struct {
     	// The maximum known edition (inclusive) when this was constructed. Editions
     	// after this will not have reliable defaults.
     	MaximumEdition *Edition `protobuf:"varint,5,opt,name=maximum_edition,json=maximumEdition,enum=google.protobuf.Edition" json:"maximum_edition,omitempty"`
    +	unknownFields  protoimpl.UnknownFields
    +	sizeCache      protoimpl.SizeCache
     }
     
     func (x *FeatureSetDefaults) Reset() {
     	*x = FeatureSetDefaults{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[20]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[20]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FeatureSetDefaults) String() string {
    @@ -3473,7 +3418,7 @@ func (*FeatureSetDefaults) ProtoMessage() {}
     
     func (x *FeatureSetDefaults) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[20]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3512,10 +3457,7 @@ func (x *FeatureSetDefaults) GetMaximumEdition() Edition {
     // Encapsulates information about the original source file from which a
     // FileDescriptorProto was generated.
     type SourceCodeInfo struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// A Location identifies a piece of source code in a .proto file which
     	// corresponds to a particular definition.  This information is intended
     	// to be useful to IDEs, code indexers, documentation generators, and similar
    @@ -3564,16 +3506,17 @@ type SourceCodeInfo struct {
     	//   - Code which tries to interpret locations should probably be designed to
     	//     ignore those that it doesn't understand, as more types of locations could
     	//     be recorded in the future.
    -	Location []*SourceCodeInfo_Location `protobuf:"bytes,1,rep,name=location" json:"location,omitempty"`
    +	Location        []*SourceCodeInfo_Location `protobuf:"bytes,1,rep,name=location" json:"location,omitempty"`
    +	extensionFields protoimpl.ExtensionFields
    +	unknownFields   protoimpl.UnknownFields
    +	sizeCache       protoimpl.SizeCache
     }
     
     func (x *SourceCodeInfo) Reset() {
     	*x = SourceCodeInfo{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[21]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[21]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *SourceCodeInfo) String() string {
    @@ -3584,7 +3527,7 @@ func (*SourceCodeInfo) ProtoMessage() {}
     
     func (x *SourceCodeInfo) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[21]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3610,22 +3553,19 @@ func (x *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location {
     // file. A GeneratedCodeInfo message is associated with only one generated
     // source file, but may contain references to different source .proto files.
     type GeneratedCodeInfo struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// An Annotation connects some span of text in generated code to an element
     	// of its generating .proto file.
    -	Annotation []*GeneratedCodeInfo_Annotation `protobuf:"bytes,1,rep,name=annotation" json:"annotation,omitempty"`
    +	Annotation    []*GeneratedCodeInfo_Annotation `protobuf:"bytes,1,rep,name=annotation" json:"annotation,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *GeneratedCodeInfo) Reset() {
     	*x = GeneratedCodeInfo{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[22]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[22]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *GeneratedCodeInfo) String() string {
    @@ -3636,7 +3576,7 @@ func (*GeneratedCodeInfo) ProtoMessage() {}
     
     func (x *GeneratedCodeInfo) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[22]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3659,22 +3599,19 @@ func (x *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation {
     }
     
     type DescriptorProto_ExtensionRange struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    +	state         protoimpl.MessageState `protogen:"open.v1"`
    +	Start         *int32                 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
    +	End           *int32                 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Exclusive.
    +	Options       *ExtensionRangeOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
     	unknownFields protoimpl.UnknownFields
    -
    -	Start   *int32                 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
    -	End     *int32                 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Exclusive.
    -	Options *ExtensionRangeOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *DescriptorProto_ExtensionRange) Reset() {
     	*x = DescriptorProto_ExtensionRange{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[23]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[23]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *DescriptorProto_ExtensionRange) String() string {
    @@ -3685,7 +3622,7 @@ func (*DescriptorProto_ExtensionRange) ProtoMessage() {}
     
     func (x *DescriptorProto_ExtensionRange) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[23]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3725,21 +3662,18 @@ func (x *DescriptorProto_ExtensionRange) GetOptions() *ExtensionRangeOptions {
     // fields or extension ranges in the same message. Reserved ranges may
     // not overlap.
     type DescriptorProto_ReservedRange struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    +	state         protoimpl.MessageState `protogen:"open.v1"`
    +	Start         *int32                 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
    +	End           *int32                 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Exclusive.
     	unknownFields protoimpl.UnknownFields
    -
    -	Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
    -	End   *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Exclusive.
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *DescriptorProto_ReservedRange) Reset() {
     	*x = DescriptorProto_ReservedRange{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[24]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[24]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *DescriptorProto_ReservedRange) String() string {
    @@ -3750,7 +3684,7 @@ func (*DescriptorProto_ReservedRange) ProtoMessage() {}
     
     func (x *DescriptorProto_ReservedRange) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[24]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3780,10 +3714,7 @@ func (x *DescriptorProto_ReservedRange) GetEnd() int32 {
     }
     
     type ExtensionRangeOptions_Declaration struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The extension number declared within the extension range.
     	Number *int32 `protobuf:"varint,1,opt,name=number" json:"number,omitempty"`
     	// The fully-qualified name of the extension field. There must be a leading
    @@ -3799,16 +3730,16 @@ type ExtensionRangeOptions_Declaration struct {
     	Reserved *bool `protobuf:"varint,5,opt,name=reserved" json:"reserved,omitempty"`
     	// If true, indicates that the extension must be defined as repeated.
     	// Otherwise the extension must be defined as optional.
    -	Repeated *bool `protobuf:"varint,6,opt,name=repeated" json:"repeated,omitempty"`
    +	Repeated      *bool `protobuf:"varint,6,opt,name=repeated" json:"repeated,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *ExtensionRangeOptions_Declaration) Reset() {
     	*x = ExtensionRangeOptions_Declaration{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[25]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[25]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *ExtensionRangeOptions_Declaration) String() string {
    @@ -3819,7 +3750,7 @@ func (*ExtensionRangeOptions_Declaration) ProtoMessage() {}
     
     func (x *ExtensionRangeOptions_Declaration) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[25]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3876,21 +3807,18 @@ func (x *ExtensionRangeOptions_Declaration) GetRepeated() bool {
     // is inclusive such that it can appropriately represent the entire int32
     // domain.
     type EnumDescriptorProto_EnumReservedRange struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    +	state         protoimpl.MessageState `protogen:"open.v1"`
    +	Start         *int32                 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
    +	End           *int32                 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Inclusive.
     	unknownFields protoimpl.UnknownFields
    -
    -	Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
    -	End   *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Inclusive.
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *EnumDescriptorProto_EnumReservedRange) Reset() {
     	*x = EnumDescriptorProto_EnumReservedRange{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[26]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[26]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *EnumDescriptorProto_EnumReservedRange) String() string {
    @@ -3901,7 +3829,7 @@ func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {}
     
     func (x *EnumDescriptorProto_EnumReservedRange) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[26]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3931,21 +3859,18 @@ func (x *EnumDescriptorProto_EnumReservedRange) GetEnd() int32 {
     }
     
     type FieldOptions_EditionDefault struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    +	state         protoimpl.MessageState `protogen:"open.v1"`
    +	Edition       *Edition               `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
    +	Value         *string                `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` // Textproto value.
     	unknownFields protoimpl.UnknownFields
    -
    -	Edition *Edition `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
    -	Value   *string  `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` // Textproto value.
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *FieldOptions_EditionDefault) Reset() {
     	*x = FieldOptions_EditionDefault{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[27]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[27]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FieldOptions_EditionDefault) String() string {
    @@ -3956,7 +3881,7 @@ func (*FieldOptions_EditionDefault) ProtoMessage() {}
     
     func (x *FieldOptions_EditionDefault) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[27]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -3987,10 +3912,7 @@ func (x *FieldOptions_EditionDefault) GetValue() string {
     
     // Information about the support window of a feature.
     type FieldOptions_FeatureSupport struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The edition that this feature was first available in.  In editions
     	// earlier than this one, the default assigned to EDITION_LEGACY will be
     	// used, and proto files will not be able to override it.
    @@ -4005,15 +3927,15 @@ type FieldOptions_FeatureSupport struct {
     	// this one, the last default assigned will be used, and proto files will
     	// not be able to override it.
     	EditionRemoved *Edition `protobuf:"varint,4,opt,name=edition_removed,json=editionRemoved,enum=google.protobuf.Edition" json:"edition_removed,omitempty"`
    +	unknownFields  protoimpl.UnknownFields
    +	sizeCache      protoimpl.SizeCache
     }
     
     func (x *FieldOptions_FeatureSupport) Reset() {
     	*x = FieldOptions_FeatureSupport{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[28]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[28]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FieldOptions_FeatureSupport) String() string {
    @@ -4024,7 +3946,7 @@ func (*FieldOptions_FeatureSupport) ProtoMessage() {}
     
     func (x *FieldOptions_FeatureSupport) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[28]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -4073,21 +3995,18 @@ func (x *FieldOptions_FeatureSupport) GetEditionRemoved() Edition {
     // E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
     // "foo.(bar.baz).moo".
     type UninterpretedOption_NamePart struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    +	state         protoimpl.MessageState `protogen:"open.v1"`
    +	NamePart      *string                `protobuf:"bytes,1,req,name=name_part,json=namePart" json:"name_part,omitempty"`
    +	IsExtension   *bool                  `protobuf:"varint,2,req,name=is_extension,json=isExtension" json:"is_extension,omitempty"`
     	unknownFields protoimpl.UnknownFields
    -
    -	NamePart    *string `protobuf:"bytes,1,req,name=name_part,json=namePart" json:"name_part,omitempty"`
    -	IsExtension *bool   `protobuf:"varint,2,req,name=is_extension,json=isExtension" json:"is_extension,omitempty"`
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *UninterpretedOption_NamePart) Reset() {
     	*x = UninterpretedOption_NamePart{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[29]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[29]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *UninterpretedOption_NamePart) String() string {
    @@ -4098,7 +4017,7 @@ func (*UninterpretedOption_NamePart) ProtoMessage() {}
     
     func (x *UninterpretedOption_NamePart) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[29]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -4132,24 +4051,21 @@ func (x *UninterpretedOption_NamePart) GetIsExtension() bool {
     // the defaults at the closest matching edition ordered at or before it should
     // be used.  This field must be in strict ascending order by edition.
     type FeatureSetDefaults_FeatureSetEditionDefault struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    -	Edition *Edition `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
    +	state   protoimpl.MessageState `protogen:"open.v1"`
    +	Edition *Edition               `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"`
     	// Defaults of features that can be overridden in this edition.
     	OverridableFeatures *FeatureSet `protobuf:"bytes,4,opt,name=overridable_features,json=overridableFeatures" json:"overridable_features,omitempty"`
     	// Defaults of features that can't be overridden in this edition.
     	FixedFeatures *FeatureSet `protobuf:"bytes,5,opt,name=fixed_features,json=fixedFeatures" json:"fixed_features,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *FeatureSetDefaults_FeatureSetEditionDefault) Reset() {
     	*x = FeatureSetDefaults_FeatureSetEditionDefault{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[30]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[30]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FeatureSetDefaults_FeatureSetEditionDefault) String() string {
    @@ -4160,7 +4076,7 @@ func (*FeatureSetDefaults_FeatureSetEditionDefault) ProtoMessage() {}
     
     func (x *FeatureSetDefaults_FeatureSetEditionDefault) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[30]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -4197,10 +4113,7 @@ func (x *FeatureSetDefaults_FeatureSetEditionDefault) GetFixedFeatures() *Featur
     }
     
     type SourceCodeInfo_Location struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Identifies which part of the FileDescriptorProto was defined at this
     	// location.
     	//
    @@ -4292,15 +4205,15 @@ type SourceCodeInfo_Location struct {
     	LeadingComments         *string  `protobuf:"bytes,3,opt,name=leading_comments,json=leadingComments" json:"leading_comments,omitempty"`
     	TrailingComments        *string  `protobuf:"bytes,4,opt,name=trailing_comments,json=trailingComments" json:"trailing_comments,omitempty"`
     	LeadingDetachedComments []string `protobuf:"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments" json:"leading_detached_comments,omitempty"`
    +	unknownFields           protoimpl.UnknownFields
    +	sizeCache               protoimpl.SizeCache
     }
     
     func (x *SourceCodeInfo_Location) Reset() {
     	*x = SourceCodeInfo_Location{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[31]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[31]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *SourceCodeInfo_Location) String() string {
    @@ -4311,7 +4224,7 @@ func (*SourceCodeInfo_Location) ProtoMessage() {}
     
     func (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[31]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -4362,10 +4275,7 @@ func (x *SourceCodeInfo_Location) GetLeadingDetachedComments() []string {
     }
     
     type GeneratedCodeInfo_Annotation struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Identifies the element in the original source .proto file. This field
     	// is formatted the same as SourceCodeInfo.Location.path.
     	Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"`
    @@ -4377,17 +4287,17 @@ type GeneratedCodeInfo_Annotation struct {
     	// Identifies the ending offset in bytes in the generated code that
     	// relates to the identified object. The end offset should be one past
     	// the last relevant byte (so the length of the text = end - begin).
    -	End      *int32                                 `protobuf:"varint,4,opt,name=end" json:"end,omitempty"`
    -	Semantic *GeneratedCodeInfo_Annotation_Semantic `protobuf:"varint,5,opt,name=semantic,enum=google.protobuf.GeneratedCodeInfo_Annotation_Semantic" json:"semantic,omitempty"`
    +	End           *int32                                 `protobuf:"varint,4,opt,name=end" json:"end,omitempty"`
    +	Semantic      *GeneratedCodeInfo_Annotation_Semantic `protobuf:"varint,5,opt,name=semantic,enum=google.protobuf.GeneratedCodeInfo_Annotation_Semantic" json:"semantic,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     func (x *GeneratedCodeInfo_Annotation) Reset() {
     	*x = GeneratedCodeInfo_Annotation{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_descriptor_proto_msgTypes[32]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_descriptor_proto_msgTypes[32]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *GeneratedCodeInfo_Annotation) String() string {
    @@ -4398,7 +4308,7 @@ func (*GeneratedCodeInfo_Annotation) ProtoMessage() {}
     
     func (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_descriptor_proto_msgTypes[32]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -4454,319 +4364,495 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{
     	0x0a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
     	0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f,
     	0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
    -	0x62, 0x75, 0x66, 0x22, 0x4d, 0x0a, 0x11, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72,
    +	0x62, 0x75, 0x66, 0x22, 0x5b, 0x0a, 0x11, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72,
     	0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65,
     	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
     	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73,
     	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x04, 0x66, 0x69,
    -	0x6c, 0x65, 0x22, 0x98, 0x05, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72,
    -	0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
    -	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18,
    -	0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
    -	0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65,
    -	0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65,
    -	0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x75, 0x62, 0x6c,
    -	0x69, 0x63, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20,
    -	0x03, 0x28, 0x05, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x44, 0x65, 0x70, 0x65, 0x6e,
    -	0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x64, 0x65,
    -	0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e,
    -	0x77, 0x65, 0x61, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x43,
    -	0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04,
    -	0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
    -	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
    -	0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54,
    -	0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65,
    -	0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
    -	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73,
    -	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e,
    -	0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
    -	0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
    -	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
    -	0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f,
    -	0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74,
    -	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67,
    -	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
    -	0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72,
    -	0x6f, 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36,
    -	0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
    -	0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
    -	0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f,
    -	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
    -	0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
    -	0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
    -	0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66,
    -	0x6f, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66,
    -	0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28,
    -	0x09, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69,
    -	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f,
    -	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69,
    -	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x06,
    -	0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74,
    -	0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
    -	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02,
    -	0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
    -	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63,
    -	0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x66, 0x69, 0x65,
    -	0x6c, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18,
    -	0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    -	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73,
    -	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78,
    -	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65,
    -	0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67,
    -	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
    -	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0a,
    -	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e,
    -	0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
    +	0x6c, 0x65, 0x2a, 0x0c, 0x08, 0x80, 0xec, 0xca, 0xff, 0x01, 0x10, 0x81, 0xec, 0xca, 0xff, 0x01,
    +	0x22, 0x98, 0x05, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
    +	0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
    +	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07,
    +	0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70,
    +	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64,
    +	0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x65,
    +	0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
    +	0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x03, 0x28,
    +	0x05, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65,
    +	0x6e, 0x63, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x65,
    +	0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x77, 0x65,
    +	0x61, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x43, 0x0a, 0x0c,
    +	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03,
    +	0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    +	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50,
    +	0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70,
    +	0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05,
    +	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
    +	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72,
    +	0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d,
    +	0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18,
    +	0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    +	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44,
    +	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x07,
    +	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e,
    +	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f,
    +	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
    +	0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74,
    +	0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07,
    +	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
     	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
    -	0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72,
    -	0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a,
    -	0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65,
    -	0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
    -	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
    -	0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
    -	0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
    -	0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
    -	0x5f, 0x64, 0x65, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f,
    -	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e,
    -	0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f,
    -	0x74, 0x6f, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x63, 0x6c, 0x12, 0x39, 0x0a,
    -	0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
    +	0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74,
    +	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63,
    +	0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
     	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
    -	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
    -	0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65,
    -	0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b,
    -	0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
    -	0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f,
    -	0x74, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65,
    -	0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12,
    -	0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
    -	0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
    -	0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x7a, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
    -	0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18,
    -	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03,
    -	0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x40,
    -	0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
    -	0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
    -	0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65,
    -	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
    -	0x1a, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67,
    -	0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
    -	0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02,
    -	0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xcc, 0x04, 0x0a, 0x15, 0x45, 0x78,
    -	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69,
    -	0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
    -	0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03,
    -	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    -	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,
    -	0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65,
    -	0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a,
    -	0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03,
    -	0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    -	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61,
    -	0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61,
    -	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0x88, 0x01, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x63,
    -	0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74,
    -	0x75, 0x72, 0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
    -	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61,
    -	0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
    -	0x73, 0x12, 0x6d, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
    -	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
    -	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
    -	0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
    -	0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
    -	0x65, 0x3a, 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x42, 0x03, 0x88,
    -	0x01, 0x02, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
    -	0x1a, 0x94, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
    -	0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
    -	0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c,
    -	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c,
    -	0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20,
    -	0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73,
    -	0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73,
    -	0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
    -	0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
    -	0x64, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x34, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66,
    -	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b,
    -	0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a,
    -	0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x2a, 0x09, 0x08,
    -	0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, 0x65,
    +	0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
    +	0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
    +	0x16, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52,
    +	0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69,
    +	0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
    +	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69,
    +	0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x06, 0x0a, 0x0f,
    +	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12,
    +	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
    +	0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03,
    +	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    +	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
    +	0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64,
    +	0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20,
    +	0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
    +	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72,
    +	0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65,
    +	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
    +	0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f,
    +	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73,
    +	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0a, 0x6e, 0x65,
    +	0x73, 0x74, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d,
    +	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f,
    +	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e,
    +	0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74,
    +	0x6f, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x0f, 0x65,
    +	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05,
    +	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
    +	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
    +	0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    +	0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    +	0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64,
    +	0x65, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
    +	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f,
    +	0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f,
    +	0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x63, 0x6c, 0x12, 0x39, 0x0a, 0x07, 0x6f,
    +	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67,
    +	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d,
    +	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f,
    +	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,
    +	0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e,
    +	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
    +	0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f,
    +	0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d,
    +	0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a,
    +	0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a,
    +	0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61,
    +	0x6d, 0x65, 0x1a, 0x7a, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52,
    +	0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20,
    +	0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e,
    +	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x40, 0x0a, 0x07,
    +	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
    +	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
    +	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70,
    +	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x37,
    +	0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12,
    +	0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
    +	0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01,
    +	0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xcc, 0x04, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65,
    +	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
    +	0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,
    +	0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b,
    +	0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
    +	0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64,
    +	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70,
    +	0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0b, 0x64,
    +	0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
    +	0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
    +	0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67,
    +	0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61,
    +	0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0x88, 0x01, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61,
    +	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
    +	0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
    +	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75,
    +	0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12,
    +	0x6d, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
    +	0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    +	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
    +	0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65,
    +	0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3a,
    +	0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x42, 0x03, 0x88, 0x01, 0x02,
    +	0x52, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x94,
    +	0x01, 0x0a, 0x0b, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16,
    +	0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
    +	0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e,
    +	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e,
    +	0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
    +	0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72,
    +	0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72,
    +	0x76, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18,
    +	0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4a,
    +	0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x34, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63,
    +	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45,
    +	0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x55,
    +	0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x2a, 0x09, 0x08, 0xe8, 0x07,
    +	0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, 0x65, 0x6c, 0x64,
    +	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12,
    +	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
    +	0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20,
    +	0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x05, 0x6c,
    +	0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f,
    +	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
     	0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74,
    -	0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
    -	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18,
    -	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a,
    -	0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67,
    +	0x6f, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3e,
    +	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67,
     	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
     	0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72,
    -	0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c,
    -	0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a,
    -	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
    -	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,
    -	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
    -	0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20,
    -	0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a,
    -	0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
    -	0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66,
    -	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
    -	0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f,
    -	0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20,
    -	0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
    -	0x1b, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01,
    -	0x28, 0x09, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07,
    -	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
    +	0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b,
    +	0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
    +	0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65,
    +	0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65,
    +	0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75,
    +	0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
    +	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b,
    +	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28,
    +	0x05, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a,
    +	0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
    +	0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70,
    +	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f,
    +	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69,
    +	0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69,
    +	0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x6f, 0x70,
    +	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x72,
    +	0x6f, 0x74, 0x6f, 0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xb6, 0x02, 0x0a,
    +	0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f,
    +	0x55, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46,
    +	0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49,
    +	0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55,
    +	0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f,
    +	0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f,
    +	0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50,
    +	0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x54,
    +	0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59,
    +	0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x54,
    +	0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x54,
    +	0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a,
    +	0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x0f, 0x0a,
    +	0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d, 0x12, 0x0d,
    +	0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12, 0x11, 0x0a,
    +	0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x0f,
    +	0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36,
    +	0x34, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54,
    +	0x33, 0x32, 0x10, 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e,
    +	0x54, 0x36, 0x34, 0x10, 0x12, 0x22, 0x43, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12,
    +	0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c,
    +	0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, 0x45,
    +	0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f,
    +	0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x22, 0x63, 0x0a, 0x14, 0x4f, 0x6e,
    +	0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f,
    +	0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
    +	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
    +	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
    +	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f,
    +	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22,
    +	0xe3, 0x02, 0x0a, 0x13, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
    +	0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
    +	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x76,
    +	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f,
    +	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75,
    +	0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,
    +	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x07,
    +	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
     	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
    -	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70,
    -	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f,
    -	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
    -	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xb6,
    -	0x02, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f,
    -	0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45,
    -	0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45,
    -	0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45,
    -	0x5f, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50,
    -	0x45, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50,
    -	0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54,
    -	0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a,
    -	0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b,
    -	0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a,
    -	0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a,
    -	0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12,
    -	0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12,
    -	0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d,
    -	0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12,
    -	0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32,
    -	0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45,
    -	0x44, 0x36, 0x34, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49,
    -	0x4e, 0x54, 0x33, 0x32, 0x10, 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53,
    -	0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x12, 0x22, 0x43, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c,
    -	0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e,
    -	0x41, 0x4c, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45,
    -	0x50, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45,
    -	0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x22, 0x63, 0x0a, 0x14,
    -	0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50,
    -	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
    -	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69,
    -	0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
    -	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f,
    -	0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
    -	0x73, 0x22, 0xe3, 0x02, 0x0a, 0x13, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
    -	0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
    -	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a,
    -	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67,
    +	0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74,
    +	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
    +	0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67,
     	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
    -	0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
    -	0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36,
    +	0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f,
    +	0x74, 0x6f, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52,
    +	0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61,
    +	0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f,
    +	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65,
    +	0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, 0x6e, 0x75, 0x6d,
    +	0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a,
    +	0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74,
    +	0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
    +	0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61,
    +	0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f,
    +	0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
    +	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
    +	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3b,
     	0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
    -	0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
    -	0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f,
    -	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,
    -	0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36,
    -	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
    -	0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50,
    -	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,
    -	0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
    -	0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,
    -	0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65,
    -	0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, 0x6e,
    -	0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12,
    -	0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
    -	0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01,
    -	0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, 0x6d,
    -	0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50,
    -	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
    -	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62,
    -	0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
    -	0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
    -	0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
    -	0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74,
    -	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01,
    -	0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
    -	0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
    -	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06,
    -	0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67,
    -	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d,
    -	0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50,
    -	0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, 0x07,
    -	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
    +	0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
    +	0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
    +	0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x16,
    +	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
    +	0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
    +	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x65,
    +	0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f,
    +	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74,
    +	0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f,
    +	0x74, 0x6f, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70,
    +	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f,
    +	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65,
    +	0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70,
    +	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,
    +	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12,
    +	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
    +	0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70,
    +	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79,
    +	0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70,
    +	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54,
    +	0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04,
    +	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
    +	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74,
    +	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a,
    +	0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e,
    +	0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f,
    +	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12,
    +	0x30, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
    +	0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
    +	0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e,
    +	0x67, 0x22, 0xad, 0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
    +	0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67,
    +	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50, 0x61, 0x63,
    +	0x6b, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f, 0x75, 0x74,
    +	0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01,
    +	0x28, 0x09, 0x52, 0x12, 0x6a, 0x61, 0x76, 0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61,
    +	0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6d,
    +	0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20,
    +	0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, 0x61, 0x76, 0x61,
    +	0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x44, 0x0a,
    +	0x1d, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x65,
    +	0x71, 0x75, 0x61, 0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x14,
    +	0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65,
    +	0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x48,
    +	0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x16, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69,
    +	0x6e, 0x67, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x18, 0x1b, 0x20,
    +	0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61,
    +	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, 0x66, 0x38, 0x12,
    +	0x53, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x18,
    +	0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    +	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69,
    +	0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65,
    +	0x3a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
    +	0x65, 0x46, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61,
    +	0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, 0x61, 0x63, 0x6b,
    +	0x61, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69,
    +	0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08,
    +	0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x63, 0x63, 0x47, 0x65, 0x6e, 0x65, 0x72,
    +	0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x15, 0x6a, 0x61,
    +	0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69,
    +	0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
    +	0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72,
    +	0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, 0x65, 0x6e, 0x65,
    +	0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01,
    +	0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x70, 0x79, 0x47, 0x65, 0x6e,
    +	0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a,
    +	0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08,
    +	0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
    +	0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
    +	0x5f, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74,
    +	0x72, 0x75, 0x65, 0x52, 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x72, 0x65,
    +	0x6e, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73,
    +	0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
    +	0x6f, 0x62, 0x6a, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12,
    +	0x29, 0x0a, 0x10, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
    +	0x61, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x73, 0x68, 0x61, 0x72,
    +	0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x77,
    +	0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09,
    +	0x52, 0x0b, 0x73, 0x77, 0x69, 0x66, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x28, 0x0a,
    +	0x10, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69,
    +	0x78, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x68, 0x70, 0x43, 0x6c, 0x61, 0x73,
    +	0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x68, 0x70, 0x5f, 0x6e,
    +	0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
    +	0x70, 0x68, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x16,
    +	0x70, 0x68, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d,
    +	0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x68,
    +	0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
    +	0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61,
    +	0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x62, 0x79, 0x50, 0x61,
    +	0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
    +	0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
    +	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72,
    +	0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58,
    +	0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f,
    +	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
     	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
    -	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07,
    -	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68,
    -	0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74,
    -	0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
    -	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74,
    -	0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74,
    -	0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74,
    -	0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75,
    -	0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
    -	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
    -	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f,
    -	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
    -	0x30, 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
    -	0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
    -	0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e,
    -	0x67, 0x12, 0x30, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65,
    -	0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,
    -	0x73, 0x65, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
    -	0x69, 0x6e, 0x67, 0x22, 0x97, 0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69,
    -	0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b,
    -	0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50,
    -	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f,
    -	0x75, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08,
    -	0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6a, 0x61, 0x76, 0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43,
    -	0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61,
    -	0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18,
    -	0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, 0x61,
    -	0x76, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12,
    -	0x44, 0x0a, 0x1d, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65,
    -	0x5f, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68,
    -	0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, 0x61,
    -	0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, 0x6e,
    -	0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x16, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x74,
    -	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x18,
    -	0x1b, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61,
    -	0x76, 0x61, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, 0x66,
    -	0x38, 0x12, 0x53, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x6f,
    -	0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
    -	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70,
    -	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f,
    -	0x64, 0x65, 0x3a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6d,
    -	0x69, 0x7a, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, 0x63,
    -	0x6b, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, 0x61,
    -	0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x65,
    -	0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01,
    -	0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x63, 0x63, 0x47, 0x65, 0x6e,
    -	0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x15,
    -	0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72,
    -	0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,
    -	0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53,
    -	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, 0x65,
    -	0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x12,
    -	0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x70, 0x79, 0x47,
    -	0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25,
    -	0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01,
    -	0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65,
    -	0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62,
    -	0x6c, 0x65, 0x5f, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x3a,
    -	0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41,
    -	0x72, 0x65, 0x6e, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x63, 0x5f, 0x63, 0x6c,
    -	0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09,
    -	0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69,
    -	0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
    -	0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x73, 0x68,
    -	0x61, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c,
    -	0x73, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x27, 0x20, 0x01,
    -	0x28, 0x09, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x66, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12,
    -	0x28, 0x0a, 0x10, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65,
    -	0x66, 0x69, 0x78, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x68, 0x70, 0x43, 0x6c,
    -	0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x68, 0x70,
    -	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09,
    -	0x52, 0x0c, 0x70, 0x68, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x34,
    -	0x0a, 0x16, 0x70, 0x68, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e,
    -	0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14,
    -	0x70, 0x68, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73,
    -	0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79, 0x5f, 0x70, 0x61, 0x63,
    -	0x6b, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x62, 0x79,
    -	0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75,
    -	0x72, 0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
    +	0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74,
    +	0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,
    +	0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69,
    +	0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x45, 0x45,
    +	0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45,
    +	0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49,
    +	0x4d, 0x45, 0x10, 0x03, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a,
    +	0x04, 0x08, 0x2a, 0x10, 0x2b, 0x4a, 0x04, 0x08, 0x26, 0x10, 0x27, 0x52, 0x14, 0x70, 0x68, 0x70,
    +	0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
    +	0x73, 0x22, 0xf4, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74,
    +	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
    +	0x73, 0x65, 0x74, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18,
    +	0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d, 0x65,
    +	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d,
    +	0x61, 0x74, 0x12, 0x4c, 0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72,
    +	0x64, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63,
    +	0x65, 0x73, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,
    +	0x73, 0x65, 0x52, 0x1c, 0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65,
    +	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72,
    +	0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03,
    +	0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70,
    +	0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x65,
    +	0x6e, 0x74, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x45,
    +	0x6e, 0x74, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
    +	0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66,
    +	0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x0b,
    +	0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63,
    +	0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69,
    +	0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08,
    +	0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
    +	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
    +	0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61,
    +	0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72,
    +	0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07,
    +	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
    +	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
    +	0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e,
    +	0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a,
    +	0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05,
    +	0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x08,
    +	0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0x9d, 0x0d, 0x0a, 0x0c, 0x46, 0x69, 0x65,
    +	0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x74, 0x79,
    +	0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
    +	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
    +	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x06, 0x53,
    +	0x54, 0x52, 0x49, 0x4e, 0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06,
    +	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61,
    +	0x63, 0x6b, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06,
    +	0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
    +	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
    +	0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, 0x5f, 0x4e,
    +	0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a,
    +	0x04, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,
    +	0x73, 0x65, 0x52, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f, 0x75, 0x6e, 0x76, 0x65,
    +	0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28,
    +	0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69,
    +	0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72,
    +	0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61,
    +	0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,
    +	0x19, 0x0a, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66,
    +	0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65,
    +	0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08,
    +	0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65,
    +	0x64, 0x61, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f,
    +	0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
    +	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f,
    +	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74,
    +	0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f,
    +	0x6e, 0x12, 0x48, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03,
    +	0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    +	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
    +	0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79,
    +	0x70, 0x65, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x65,
    +	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18,
    +	0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    +	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74,
    +	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61,
    +	0x75, 0x6c, 0x74, 0x52, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61,
    +	0x75, 0x6c, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
    +	0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
    +	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
    +	0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x55, 0x0a,
    +	0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
    +	0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
    +	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70,
    +	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70,
    +	0x70, 0x6f, 0x72, 0x74, 0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70,
    +	0x70, 0x6f, 0x72, 0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70,
    +	0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20,
    +	0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
    +	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65,
    +	0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74,
    +	0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x5a,
    +	0x0a, 0x0e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
    +	0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
    +	0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
    +	0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69,
    +	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
    +	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x96, 0x02, 0x0a, 0x0e, 0x46,
    +	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x47, 0x0a,
    +	0x12, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75,
    +	0x63, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
    +	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74,
    +	0x69, 0x6f, 0x6e, 0x52, 0x11, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x72,
    +	0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x12, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
    +	0x6e, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01,
    +	0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    +	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x65, 0x64,
    +	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,
    +	0x2f, 0x0a, 0x13, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77,
    +	0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65,
    +	0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67,
    +	0x12, 0x41, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f,
    +	0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
    +	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74,
    +	0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f,
    +	0x76, 0x65, 0x64, 0x22, 0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06,
    +	0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x52, 0x44,
    +	0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x49, 0x45,
    +	0x43, 0x45, 0x10, 0x02, 0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d,
    +	0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a,
    +	0x09, 0x4a, 0x53, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09,
    +	0x4a, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x22, 0x55, 0x0a, 0x0f, 0x4f,
    +	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15,
    +	0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e,
    +	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49,
    +	0x4f, 0x4e, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10,
    +	0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45,
    +	0x10, 0x02, 0x22, 0x8c, 0x02, 0x0a, 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72,
    +	0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45,
    +	0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
    +	0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
    +	0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54,
    +	0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f,
    +	0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45,
    +	0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03,
    +	0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
    +	0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45,
    +	0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x05, 0x12, 0x14,
    +	0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e,
    +	0x55, 0x4d, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54,
    +	0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x07,
    +	0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
    +	0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x52,
    +	0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10,
    +	0x09, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04,
    +	0x10, 0x05, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x4f, 0x6e, 0x65,
    +	0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61,
    +	0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f,
    +	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65,
    +	0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
    +	0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65,
    +	0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28,
    +	0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
    +	0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65,
    +	0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72,
    +	0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8,
    +	0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd1, 0x02, 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d,
    +	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
    +	0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c,
    +	0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72,
    +	0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61,
    +	0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,
    +	0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65,
    +	0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
    +	0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42,
    +	0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c,
    +	0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f,
    +	0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75,
    +	0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
     	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74,
     	0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
     	0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65,
    @@ -4774,443 +4860,276 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{
     	0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
     	0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f,
     	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
    -	0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0c, 0x4f, 0x70,
    -	0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50,
    -	0x45, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49,
    -	0x5a, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e,
    -	0x54, 0x49, 0x4d, 0x45, 0x10, 0x03, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80,
    -	0x02, 0x4a, 0x04, 0x08, 0x2a, 0x10, 0x2b, 0x4a, 0x04, 0x08, 0x26, 0x10, 0x27, 0x22, 0xf4, 0x03,
    -	0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
    -	0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f,
    -	0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
    -	0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
    -	0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4c,
    -	0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65,
    -	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f,
    -	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x1c,
    -	0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
    -	0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0a,
    -	0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
    -	0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
    -	0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79,
    -	0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79,
    -	0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c,
    -	0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
    -	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08,
    -	0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
    -	0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43,
    -	0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74,
    -	0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
    -	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61,
    -	0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
    -	0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,
    +	0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10,
    +	0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xd8, 0x02, 0x0a, 0x10,
    +	0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
    +	0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01,
    +	0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70,
    +	0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75,
    +	0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
    +	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74,
    +	0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
    +	0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74,
    +	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64,
    +	0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x55, 0x0a, 0x0f, 0x66, 0x65,
    +	0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20,
    +	0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
    +	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f,
    +	0x6e, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72,
    +	0x74, 0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72,
    +	0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,
     	0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b,
     	0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
     	0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64,
     	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70,
     	0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07,
    -	0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05,
    -	0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04,
    -	0x08, 0x09, 0x10, 0x0a, 0x22, 0x9d, 0x0d, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70,
    -	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
    -	0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
    -	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
    -	0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e,
    -	0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b,
    -	0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
    -	0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e,
    -	0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
    -	0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
    -	0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41,
    -	0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x6c, 0x61, 0x7a,
    -	0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04,
    -	0x6c, 0x61, 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69,
    -	0x65, 0x64, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66,
    -	0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64,
    -	0x4c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
    -	0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52,
    -	0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x04, 0x77,
    -	0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
    -	0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f,
    -	0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61,
    -	0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74,
    -	0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20,
    -	0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
    -	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f,
    -	0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69,
    -	0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a,
    -	0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e,
    -	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
    -	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70,
    -	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07,
    -	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x65, 0x64, 0x69, 0x74, 0x69,
    -	0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28,
    -	0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
    -	0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
    -	0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52,
    -	0x0f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73,
    -	0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01,
    -	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    -	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52,
    -	0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x0f, 0x66, 0x65, 0x61,
    -	0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x16, 0x20, 0x01,
    -	0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    -	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
    -	0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
    -	0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
    -	0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65,
    -	0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32,
    -	0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
    -	0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f,
    -	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
    -	0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x5a, 0x0a, 0x0e, 0x45, 0x64,
    -	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07,
    -	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e,
    +	0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd5, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69,
    +	0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61,
    +	0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f,
    +	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65,
    +	0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
    +	0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
    +	0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64,
    +	0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69,
    +	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
    +	0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
    +	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74,
    +	0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13,
    +	0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74,
    +	0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x99,
    +	0x03, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
    +	0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x21,
    +	0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70,
    +	0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11, 0x69, 0x64, 0x65, 0x6d, 0x70,
    +	0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x22, 0x20, 0x01,
    +	0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    +	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f,
    +	0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65,
    +	0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x43, 0x59,
    +	0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f,
    +	0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65,
    +	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67,
    +	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
    +	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75,
    +	0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
    +	0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03,
    +	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    +	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,
    +	0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65,
    +	0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a,
    +	0x10, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65,
    +	0x6c, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x43, 0x59,
    +	0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f,
    +	0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x53, 0x10, 0x01, 0x12,
    +	0x0e, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x2a,
    +	0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9a, 0x03, 0x0a, 0x13, 0x55,
    +	0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69,
    +	0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
    +	0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
    +	0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64,
    +	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x52,
    +	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
    +	0x69, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
    +	0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65,
    +	0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74,
    +	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x70, 0x6f,
    +	0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c,
    +	0x0a, 0x12, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76,
    +	0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x67, 0x61,
    +	0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c,
    +	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01,
    +	0x28, 0x01, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
    +	0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
    +	0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
    +	0x75, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f,
    +	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x67, 0x67,
    +	0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, 0x0a, 0x08, 0x4e,
    +	0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x5f,
    +	0x70, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x61, 0x6d, 0x65,
    +	0x50, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e,
    +	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x45, 0x78,
    +	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa7, 0x0a, 0x0a, 0x0a, 0x46, 0x65, 0x61, 0x74,
    +	0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x91, 0x01, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64,
    +	0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
    +	0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
    +	0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x46, 0x69, 0x65,
    +	0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x3f, 0x88, 0x01, 0x01, 0x98,
    +	0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43,
    +	0x49, 0x54, 0x18, 0x84, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43,
    +	0x49, 0x54, 0x18, 0xe7, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43,
    +	0x49, 0x54, 0x18, 0xe8, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0d, 0x66, 0x69, 0x65,
    +	0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x09, 0x65, 0x6e,
    +	0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e,
    +	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
    +	0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x54,
    +	0x79, 0x70, 0x65, 0x42, 0x29, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01,
    +	0x0b, 0x12, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x18, 0x84, 0x07, 0xa2, 0x01, 0x09, 0x12,
    +	0x04, 0x4f, 0x50, 0x45, 0x4e, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x08,
    +	0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x70,
    +	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x6f,
    +	0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f,
    +	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61,
    +	0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
    +	0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x2d, 0x88,
    +	0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50,
    +	0x41, 0x4e, 0x44, 0x45, 0x44, 0x18, 0x84, 0x07, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x50, 0x41, 0x43,
    +	0x4b, 0x45, 0x44, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x15, 0x72, 0x65,
    +	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64,
    +	0x69, 0x6e, 0x67, 0x12, 0x7e, 0x0a, 0x0f, 0x75, 0x74, 0x66, 0x38, 0x5f, 0x76, 0x61, 0x6c, 0x69,
    +	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67,
    +	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
    +	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x55, 0x74, 0x66, 0x38, 0x56, 0x61,
    +	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x29, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04,
    +	0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x18, 0x84, 0x07, 0xa2,
    +	0x01, 0x0b, 0x12, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03,
    +	0x08, 0xe8, 0x07, 0x52, 0x0e, 0x75, 0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
    +	0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65,
    +	0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e,
     	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
    -	0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
    -	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
    -	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x96, 0x02, 0x0a, 0x0e, 0x46, 0x65, 0x61, 0x74, 0x75,
    -	0x72, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x47, 0x0a, 0x12, 0x65, 0x64, 0x69,
    -	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x18,
    -	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    -	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52,
    -	0x11, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63,
    -	0x65, 0x64, 0x12, 0x47, 0x0a, 0x12, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65,
    -	0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18,
    +	0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
    +	0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x26, 0x88, 0x01, 0x01, 0x98,
    +	0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x14, 0x12, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48,
    +	0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x18, 0x84, 0x07, 0xb2, 0x01, 0x03, 0x08,
    +	0xe8, 0x07, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64,
    +	0x69, 0x6e, 0x67, 0x12, 0x82, 0x01, 0x0a, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72,
    +	0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
    +	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74,
    +	0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61,
    +	0x74, 0x42, 0x39, 0x88, 0x01, 0x01, 0x98, 0x01, 0x03, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2,
    +	0x01, 0x17, 0x12, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f,
    +	0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x18, 0x84, 0x07, 0xa2, 0x01, 0x0a, 0x12, 0x05, 0x41, 0x4c,
    +	0x4c, 0x4f, 0x57, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0a, 0x6a, 0x73,
    +	0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x5c, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c,
    +	0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x49, 0x45,
    +	0x4c, 0x44, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e,
    +	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49,
    +	0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10,
    +	0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55,
    +	0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, 0x37, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79,
    +	0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
    +	0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x50, 0x45,
    +	0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x02, 0x22,
    +	0x56, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64,
    +	0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x50, 0x45,
    +	0x41, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44,
    +	0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a,
    +	0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50,
    +	0x41, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x22, 0x49, 0x0a, 0x0e, 0x55, 0x74, 0x66, 0x38, 0x56,
    +	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x54, 0x46,
    +	0x38, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b,
    +	0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59,
    +	0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x22, 0x04, 0x08, 0x01,
    +	0x10, 0x01, 0x22, 0x53, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63,
    +	0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45,
    +	0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
    +	0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52,
    +	0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49,
    +	0x4d, 0x49, 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, 0x48, 0x0a, 0x0a, 0x4a, 0x73, 0x6f, 0x6e, 0x46,
    +	0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x4f,
    +	0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09,
    +	0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x47,
    +	0x41, 0x43, 0x59, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x10,
    +	0x02, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0x8b, 0x4e, 0x2a, 0x06, 0x08, 0x8b, 0x4e, 0x10, 0x90,
    +	0x4e, 0x2a, 0x06, 0x08, 0x90, 0x4e, 0x10, 0x91, 0x4e, 0x4a, 0x06, 0x08, 0xe7, 0x07, 0x10, 0xe8,
    +	0x07, 0x22, 0xef, 0x03, 0x0a, 0x12, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74,
    +	0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61,
    +	0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f,
    +	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61,
    +	0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x2e,
    +	0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f,
    +	0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
    +	0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64,
    +	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f,
    +	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64,
    +	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64,
    +	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d,
    +	0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18,
     	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
    -	0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f,
    -	0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x13, 0x64,
    -	0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69,
    -	0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63,
    -	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x0f,
    -	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18,
    -	0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    -	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52,
    -	0x0e, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22,
    -	0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49,
    -	0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x01, 0x12, 0x10,
    -	0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x49, 0x45, 0x43, 0x45, 0x10, 0x02,
    -	0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53,
    -	0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f,
    -	0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e,
    -	0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x22, 0x55, 0x0a, 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6f,
    -	0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45,
    -	0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
    -	0x00, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52,
    -	0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x54, 0x45,
    -	0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x02, 0x22, 0x8c,
    -	0x02, 0x0a, 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54,
    -	0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59,
    -	0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10,
    -	0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45,
    -	0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50,
    -	0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47,
    -	0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59,
    -	0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11,
    -	0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c,
    -	0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59,
    -	0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41,
    -	0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x06,
    -	0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
    -	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13,
    -	0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56,
    -	0x49, 0x43, 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f,
    -	0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0x09, 0x2a, 0x09, 0x08,
    -	0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04,
    -	0x08, 0x12, 0x10, 0x13, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70,
    -	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
    -	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
    +	0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75,
    +	0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xf8, 0x01, 0x0a, 0x18, 0x46, 0x65, 0x61,
    +	0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65,
    +	0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
    +	0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
    +	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
    +	0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x14, 0x6f, 0x76, 0x65,
    +	0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
    +	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
     	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72,
    -	0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58,
    -	0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f,
    -	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
    -	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
    -	0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74,
    -	0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,
    -	0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80,
    -	0x80, 0x80, 0x02, 0x22, 0xd1, 0x02, 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69,
    -	0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69,
    -	0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41,
    -	0x6c, 0x69, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
    -	0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52,
    -	0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x56, 0x0a, 0x26, 0x64,
    -	0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79,
    -	0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
    -	0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52,
    -	0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63,
    -	0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69,
    -	0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18,
    -	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    -	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53,
    -	0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14,
    -	0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70,
    -	0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f,
    -	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e,
    -	0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f,
    -	0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64,
    -	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80,
    -	0x02, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x81, 0x02, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d,
    -	0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a,
    -	0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
    -	0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
    -	0x74, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18,
    -	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    -	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53,
    -	0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0c,
    -	0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01,
    -	0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67,
    -	0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65,
    -	0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7,
    -	0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    -	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70,
    -	0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69,
    -	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
    -	0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd5, 0x01, 0x0a, 0x0e,
    -	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37,
    -	0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b,
    -	0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
    -	0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66,
    -	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65,
    -	0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,
    -	0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58,
    -	0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f,
    -	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
    -	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
    -	0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74,
    -	0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,
    -	0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80,
    -	0x80, 0x80, 0x02, 0x22, 0x99, 0x03, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70,
    -	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
    -	0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
    -	0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11,
    -	0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65,
    -	0x6c, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
    -	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,
    -	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65,
    -	0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f,
    -	0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69,
    -	0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12,
    -	0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28,
    +	0x65, 0x53, 0x65, 0x74, 0x52, 0x13, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c,
    +	0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x66, 0x69, 0x78,
    +	0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
     	0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
    -	0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08,
    -	0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e,
    -	0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
    -	0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
    -	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65,
    -	0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75,
    -	0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69,
    -	0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63,
    -	0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f,
    -	0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
    -	0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43,
    -	0x54, 0x53, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45,
    -	0x4e, 0x54, 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22,
    -	0x9a, 0x03, 0x0a, 0x13, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65,
    -	0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
    -	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    -	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70,
    -	0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65,
    -	0x50, 0x61, 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64,
    -	0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03,
    -	0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
    -	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76,
    -	0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
    -	0x04, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61,
    -	0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f,
    -	0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
    -	0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75,
    -	0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75,
    -	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56,
    -	0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76,
    -	0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69,
    -	0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65,
    -	0x67, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
    -	0x52, 0x0e, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
    -	0x1a, 0x4a, 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09,
    -	0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52,
    -	0x08, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f,
    -	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52,
    -	0x0b, 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x0a, 0x0a,
    -	0x0a, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x91, 0x01, 0x0a, 0x0e,
    -	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01,
    -	0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
    -	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65,
    -	0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x42,
    -	0x3f, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45,
    -	0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x49,
    -	0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe7, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45,
    -	0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe8, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07,
    -	0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12,
    -	0x6c, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
    -	0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    -	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e,
    -	0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x29, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06,
    -	0x98, 0x01, 0x01, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x18, 0xe6,
    -	0x07, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03,
    -	0x08, 0xe8, 0x07, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x98, 0x01,
    -	0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
    -	0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
    -	0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
    -	0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x70,
    -	0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69,
    -	0x6e, 0x67, 0x42, 0x2d, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d,
    -	0x12, 0x08, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0b,
    -	0x12, 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8,
    -	0x07, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64,
    -	0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x7e, 0x0a, 0x0f, 0x75, 0x74, 0x66, 0x38,
    -	0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
    -	0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
    -	0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x55,
    -	0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x29, 0x88,
    -	0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4e, 0x4f, 0x4e,
    -	0x45, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x18,
    -	0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0e, 0x75, 0x74, 0x66, 0x38, 0x56, 0x61,
    -	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73,
    -	0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01,
    -	0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    -	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e,
    -	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42,
    -	0x26, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x14, 0x12, 0x0f, 0x4c,
    -	0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x18, 0xe6,
    -	0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
    -	0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x82, 0x01, 0x0a, 0x0b, 0x6a, 0x73, 0x6f,
    -	0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,
    -	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
    -	0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4a, 0x73, 0x6f, 0x6e,
    -	0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x39, 0x88, 0x01, 0x01, 0x98, 0x01, 0x03, 0x98, 0x01,
    -	0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x17, 0x12, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f,
    -	0x42, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01,
    -	0x0a, 0x12, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8,
    -	0x07, 0x52, 0x0a, 0x6a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x5c, 0x0a,
    -	0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a,
    -	0x0a, 0x16, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45,
    -	0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58,
    -	0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c,
    -	0x49, 0x43, 0x49, 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59,
    -	0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, 0x37, 0x0a, 0x08, 0x45,
    -	0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
    -	0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08,
    -	0x0a, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53,
    -	0x45, 0x44, 0x10, 0x02, 0x22, 0x56, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
    -	0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a,
    -	0x1f, 0x52, 0x45, 0x50, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f,
    -	0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
    -	0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c,
    -	0x0a, 0x08, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x22, 0x43, 0x0a, 0x0e,
    -	0x55, 0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b,
    -	0x0a, 0x17, 0x55, 0x54, 0x46, 0x38, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f,
    -	0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x56,
    -	0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10,
    -	0x03, 0x22, 0x53, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f,
    -	0x64, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f,
    -	0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
    -	0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45,
    -	0x46, 0x49, 0x58, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49, 0x4d,
    -	0x49, 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, 0x48, 0x0a, 0x0a, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x6f,
    -	0x72, 0x6d, 0x61, 0x74, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52,
    -	0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a,
    -	0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x47, 0x41,
    -	0x43, 0x59, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x10, 0x02,
    -	0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xe9, 0x07, 0x2a, 0x06, 0x08, 0xe9, 0x07, 0x10, 0xea, 0x07,
    -	0x2a, 0x06, 0x08, 0xea, 0x07, 0x10, 0xeb, 0x07, 0x2a, 0x06, 0x08, 0x86, 0x4e, 0x10, 0x87, 0x4e,
    -	0x2a, 0x06, 0x08, 0x8b, 0x4e, 0x10, 0x90, 0x4e, 0x2a, 0x06, 0x08, 0x90, 0x4e, 0x10, 0x91, 0x4e,
    -	0x4a, 0x06, 0x08, 0xe7, 0x07, 0x10, 0xe8, 0x07, 0x22, 0xd9, 0x03, 0x0a, 0x12, 0x46, 0x65, 0x61,
    -	0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12,
    -	0x58, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
    -	0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
    -	0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65,
    -	0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65,
    -	0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52,
    -	0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x6d, 0x69, 0x6e,
    -	0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01,
    -	0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    -	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x69,
    -	0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0f,
    -	0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18,
    -	0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    -	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52,
    -	0x0e, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a,
    -	0xe2, 0x01, 0x0a, 0x18, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x45, 0x64,
    -	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07,
    -	0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e,
    -	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
    -	0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
    -	0x12, 0x4e, 0x0a, 0x14, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x5f,
    -	0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
    -	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
    -	0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x13, 0x6f, 0x76, 0x65,
    -	0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
    -	0x12, 0x42, 0x0a, 0x0e, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
    -	0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
    -	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75,
    -	0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74,
    -	0x75, 0x72, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43,
    -	0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74,
    -	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
    -	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72,
    -	0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
    -	0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xce, 0x01,
    -	0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61,
    -	0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61,
    -	0x74, 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05,
    -	0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x65,
    -	0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03,
    -	0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d,
    -	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e,
    -	0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
    -	0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
    -	0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65,
    -	0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18,
    -	0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65,
    -	0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd0,
    -	0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65,
    -	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
    -	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
    -	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72,
    -	0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e,
    -	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
    -	0x69, 0x6f, 0x6e, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
    -	0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05,
    -	0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f,
    -	0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
    -	0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62,
    -	0x65, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, 0x67, 0x69,
    -	0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
    -	0x65, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x18,
    -	0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
    +	0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0d,
    +	0x66, 0x69, 0x78, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4a, 0x04, 0x08,
    +	0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75,
    +	0x72, 0x65, 0x73, 0x22, 0xb5, 0x02, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f,
    +	0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
    +	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
    +	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63,
    +	0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69,
    +	0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xce, 0x01, 0x0a,
    +	0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74,
    +	0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74,
    +	0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x42,
    +	0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x65, 0x61,
    +	0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20,
    +	0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d,
    +	0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67,
    +	0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
    +	0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
    +	0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74,
    +	0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06,
    +	0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74,
    +	0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2a, 0x0c, 0x08,
    +	0x80, 0xec, 0xca, 0xff, 0x01, 0x10, 0x81, 0xec, 0xca, 0xff, 0x01, 0x22, 0xd0, 0x02, 0x0a, 0x11,
    +	0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66,
    +	0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
    +	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
     	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65,
     	0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
    -	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x52, 0x08, 0x73,
    -	0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x22, 0x28, 0x0a, 0x08, 0x53, 0x65, 0x6d, 0x61, 0x6e,
    -	0x74, 0x69, 0x63, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a,
    -	0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x10,
    -	0x02, 0x2a, 0xa7, 0x02, 0x0a, 0x07, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a,
    -	0x0f, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
    -	0x10, 0x00, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45,
    -	0x47, 0x41, 0x43, 0x59, 0x10, 0x84, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49,
    -	0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x32, 0x10, 0xe6, 0x07, 0x12, 0x13, 0x0a, 0x0e,
    -	0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x33, 0x10, 0xe7,
    +	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
    +	0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
    +	0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10,
    +	0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63,
    +	0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f,
    +	0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x65, 0x67, 0x69,
    +	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x10,
    +	0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64,
    +	0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01,
    +	0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
    +	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f,
    +	0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
    +	0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x61,
    +	0x6e, 0x74, 0x69, 0x63, 0x22, 0x28, 0x0a, 0x08, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63,
    +	0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45,
    +	0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x10, 0x02, 0x2a, 0xa7,
    +	0x02, 0x0a, 0x07, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x44,
    +	0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
    +	0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x47, 0x41, 0x43,
    +	0x59, 0x10, 0x84, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
    +	0x50, 0x52, 0x4f, 0x54, 0x4f, 0x32, 0x10, 0xe6, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49,
    +	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x33, 0x10, 0xe7, 0x07, 0x12, 0x11,
    +	0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x30, 0x32, 0x33, 0x10, 0xe8,
     	0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x30, 0x32,
    -	0x33, 0x10, 0xe8, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
    -	0x32, 0x30, 0x32, 0x34, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49,
    -	0x4f, 0x4e, 0x5f, 0x31, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01,
    -	0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x5f, 0x54, 0x45,
    -	0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49,
    -	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x37, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f,
    -	0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9d, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54,
    -	0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x38, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f,
    -	0x4e, 0x4c, 0x59, 0x10, 0x9e, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, 0x49,
    -	0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e,
    -	0x4c, 0x59, 0x10, 0x9f, 0x8d, 0x06, 0x12, 0x13, 0x0a, 0x0b, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f,
    -	0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x42, 0x7e, 0x0a, 0x13, 0x63,
    -	0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
    -	0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72,
    -	0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
    -	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
    -	0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
    -	0x74, 0x6f, 0x72, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02,
    -	0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
    -	0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
    +	0x34, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
    +	0x31, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x17, 0x0a,
    +	0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f,
    +	0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f,
    +	0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x37, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c,
    +	0x59, 0x10, 0x9d, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e,
    +	0x5f, 0x39, 0x39, 0x39, 0x39, 0x38, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59,
    +	0x10, 0x9e, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
    +	0x39, 0x39, 0x39, 0x39, 0x39, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10,
    +	0x9f, 0x8d, 0x06, 0x12, 0x13, 0x0a, 0x0b, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d,
    +	0x41, 0x58, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x42, 0x7e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e,
    +	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42,
    +	0x10, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f,
    +	0x73, 0x48, 0x01, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
    +	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
    +	0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,
    +	0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1a, 0x47, 0x6f,
    +	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65,
    +	0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
     }
     
     var (
    @@ -5227,7 +5146,7 @@ func file_google_protobuf_descriptor_proto_rawDescGZIP() []byte {
     
     var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 17)
     var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 33)
    -var file_google_protobuf_descriptor_proto_goTypes = []interface{}{
    +var file_google_protobuf_descriptor_proto_goTypes = []any{
     	(Edition)(0), // 0: google.protobuf.Edition
     	(ExtensionRangeOptions_VerificationState)(0),        // 1: google.protobuf.ExtensionRangeOptions.VerificationState
     	(FieldDescriptorProto_Type)(0),                      // 2: google.protobuf.FieldDescriptorProto.Type
    @@ -5329,38 +5248,39 @@ var file_google_protobuf_descriptor_proto_depIdxs = []int32{
     	36, // 46: google.protobuf.EnumOptions.features:type_name -> google.protobuf.FeatureSet
     	35, // 47: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
     	36, // 48: google.protobuf.EnumValueOptions.features:type_name -> google.protobuf.FeatureSet
    -	35, // 49: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
    -	36, // 50: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet
    -	35, // 51: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
    -	9,  // 52: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel
    -	36, // 53: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet
    -	35, // 54: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
    -	46, // 55: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart
    -	10, // 56: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence
    -	11, // 57: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType
    -	12, // 58: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding
    -	13, // 59: google.protobuf.FeatureSet.utf8_validation:type_name -> google.protobuf.FeatureSet.Utf8Validation
    -	14, // 60: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding
    -	15, // 61: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat
    -	47, // 62: google.protobuf.FeatureSetDefaults.defaults:type_name -> google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
    -	0,  // 63: google.protobuf.FeatureSetDefaults.minimum_edition:type_name -> google.protobuf.Edition
    -	0,  // 64: google.protobuf.FeatureSetDefaults.maximum_edition:type_name -> google.protobuf.Edition
    -	48, // 65: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location
    -	49, // 66: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation
    -	20, // 67: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions
    -	0,  // 68: google.protobuf.FieldOptions.EditionDefault.edition:type_name -> google.protobuf.Edition
    -	0,  // 69: google.protobuf.FieldOptions.FeatureSupport.edition_introduced:type_name -> google.protobuf.Edition
    -	0,  // 70: google.protobuf.FieldOptions.FeatureSupport.edition_deprecated:type_name -> google.protobuf.Edition
    -	0,  // 71: google.protobuf.FieldOptions.FeatureSupport.edition_removed:type_name -> google.protobuf.Edition
    -	0,  // 72: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition:type_name -> google.protobuf.Edition
    -	36, // 73: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features:type_name -> google.protobuf.FeatureSet
    -	36, // 74: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features:type_name -> google.protobuf.FeatureSet
    -	16, // 75: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic
    -	76, // [76:76] is the sub-list for method output_type
    -	76, // [76:76] is the sub-list for method input_type
    -	76, // [76:76] is the sub-list for extension type_name
    -	76, // [76:76] is the sub-list for extension extendee
    -	0,  // [0:76] is the sub-list for field type_name
    +	45, // 49: google.protobuf.EnumValueOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport
    +	35, // 50: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
    +	36, // 51: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet
    +	35, // 52: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
    +	9,  // 53: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel
    +	36, // 54: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet
    +	35, // 55: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
    +	46, // 56: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart
    +	10, // 57: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence
    +	11, // 58: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType
    +	12, // 59: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding
    +	13, // 60: google.protobuf.FeatureSet.utf8_validation:type_name -> google.protobuf.FeatureSet.Utf8Validation
    +	14, // 61: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding
    +	15, // 62: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat
    +	47, // 63: google.protobuf.FeatureSetDefaults.defaults:type_name -> google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
    +	0,  // 64: google.protobuf.FeatureSetDefaults.minimum_edition:type_name -> google.protobuf.Edition
    +	0,  // 65: google.protobuf.FeatureSetDefaults.maximum_edition:type_name -> google.protobuf.Edition
    +	48, // 66: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location
    +	49, // 67: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation
    +	20, // 68: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions
    +	0,  // 69: google.protobuf.FieldOptions.EditionDefault.edition:type_name -> google.protobuf.Edition
    +	0,  // 70: google.protobuf.FieldOptions.FeatureSupport.edition_introduced:type_name -> google.protobuf.Edition
    +	0,  // 71: google.protobuf.FieldOptions.FeatureSupport.edition_deprecated:type_name -> google.protobuf.Edition
    +	0,  // 72: google.protobuf.FieldOptions.FeatureSupport.edition_removed:type_name -> google.protobuf.Edition
    +	0,  // 73: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition:type_name -> google.protobuf.Edition
    +	36, // 74: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features:type_name -> google.protobuf.FeatureSet
    +	36, // 75: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features:type_name -> google.protobuf.FeatureSet
    +	16, // 76: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic
    +	77, // [77:77] is the sub-list for method output_type
    +	77, // [77:77] is the sub-list for method input_type
    +	77, // [77:77] is the sub-list for extension type_name
    +	77, // [77:77] is the sub-list for extension extendee
    +	0,  // [0:77] is the sub-list for field type_name
     }
     
     func init() { file_google_protobuf_descriptor_proto_init() }
    @@ -5368,424 +5288,6 @@ func file_google_protobuf_descriptor_proto_init() {
     	if File_google_protobuf_descriptor_proto != nil {
     		return
     	}
    -	if !protoimpl.UnsafeEnabled {
    -		file_google_protobuf_descriptor_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FileDescriptorSet); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FileDescriptorProto); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*DescriptorProto); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*ExtensionRangeOptions); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			case 3:
    -				return &v.extensionFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FieldDescriptorProto); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*OneofDescriptorProto); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*EnumDescriptorProto); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*EnumValueDescriptorProto); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*ServiceDescriptorProto); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*MethodDescriptorProto); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FileOptions); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			case 3:
    -				return &v.extensionFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*MessageOptions); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			case 3:
    -				return &v.extensionFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FieldOptions); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			case 3:
    -				return &v.extensionFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*OneofOptions); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			case 3:
    -				return &v.extensionFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*EnumOptions); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			case 3:
    -				return &v.extensionFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*EnumValueOptions); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			case 3:
    -				return &v.extensionFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*ServiceOptions); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			case 3:
    -				return &v.extensionFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*MethodOptions); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			case 3:
    -				return &v.extensionFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*UninterpretedOption); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FeatureSet); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			case 3:
    -				return &v.extensionFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FeatureSetDefaults); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*SourceCodeInfo); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*GeneratedCodeInfo); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*DescriptorProto_ExtensionRange); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*DescriptorProto_ReservedRange); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*ExtensionRangeOptions_Declaration); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*EnumDescriptorProto_EnumReservedRange); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FieldOptions_EditionDefault); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FieldOptions_FeatureSupport); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*UninterpretedOption_NamePart); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FeatureSetDefaults_FeatureSetEditionDefault); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*SourceCodeInfo_Location); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_descriptor_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*GeneratedCodeInfo_Annotation); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -	}
     	type x struct{}
     	out := protoimpl.TypeBuilder{
     		File: protoimpl.DescBuilder{
    diff --git a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go
    index b0df3fb33409..e0b72eaf9225 100644
    --- a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go
    +++ b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go
    @@ -18,22 +18,150 @@ import (
     	sync "sync"
     )
     
    -type GoFeatures struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    +type GoFeatures_APILevel int32
    +
    +const (
    +	// API_LEVEL_UNSPECIFIED results in selecting the OPEN API,
    +	// but needs to be a separate value to distinguish between
    +	// an explicitly set api level or a missing api level.
    +	GoFeatures_API_LEVEL_UNSPECIFIED GoFeatures_APILevel = 0
    +	GoFeatures_API_OPEN              GoFeatures_APILevel = 1
    +	GoFeatures_API_HYBRID            GoFeatures_APILevel = 2
    +	GoFeatures_API_OPAQUE            GoFeatures_APILevel = 3
    +)
    +
    +// Enum value maps for GoFeatures_APILevel.
    +var (
    +	GoFeatures_APILevel_name = map[int32]string{
    +		0: "API_LEVEL_UNSPECIFIED",
    +		1: "API_OPEN",
    +		2: "API_HYBRID",
    +		3: "API_OPAQUE",
    +	}
    +	GoFeatures_APILevel_value = map[string]int32{
    +		"API_LEVEL_UNSPECIFIED": 0,
    +		"API_OPEN":              1,
    +		"API_HYBRID":            2,
    +		"API_OPAQUE":            3,
    +	}
    +)
    +
    +func (x GoFeatures_APILevel) Enum() *GoFeatures_APILevel {
    +	p := new(GoFeatures_APILevel)
    +	*p = x
    +	return p
    +}
    +
    +func (x GoFeatures_APILevel) String() string {
    +	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    +}
    +
    +func (GoFeatures_APILevel) Descriptor() protoreflect.EnumDescriptor {
    +	return file_google_protobuf_go_features_proto_enumTypes[0].Descriptor()
    +}
    +
    +func (GoFeatures_APILevel) Type() protoreflect.EnumType {
    +	return &file_google_protobuf_go_features_proto_enumTypes[0]
    +}
    +
    +func (x GoFeatures_APILevel) Number() protoreflect.EnumNumber {
    +	return protoreflect.EnumNumber(x)
    +}
    +
    +// Deprecated: Do not use.
    +func (x *GoFeatures_APILevel) UnmarshalJSON(b []byte) error {
    +	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
    +	if err != nil {
    +		return err
    +	}
    +	*x = GoFeatures_APILevel(num)
    +	return nil
    +}
    +
    +// Deprecated: Use GoFeatures_APILevel.Descriptor instead.
    +func (GoFeatures_APILevel) EnumDescriptor() ([]byte, []int) {
    +	return file_google_protobuf_go_features_proto_rawDescGZIP(), []int{0, 0}
    +}
    +
    +type GoFeatures_StripEnumPrefix int32
    +
    +const (
    +	GoFeatures_STRIP_ENUM_PREFIX_UNSPECIFIED   GoFeatures_StripEnumPrefix = 0
    +	GoFeatures_STRIP_ENUM_PREFIX_KEEP          GoFeatures_StripEnumPrefix = 1
    +	GoFeatures_STRIP_ENUM_PREFIX_GENERATE_BOTH GoFeatures_StripEnumPrefix = 2
    +	GoFeatures_STRIP_ENUM_PREFIX_STRIP         GoFeatures_StripEnumPrefix = 3
    +)
    +
    +// Enum value maps for GoFeatures_StripEnumPrefix.
    +var (
    +	GoFeatures_StripEnumPrefix_name = map[int32]string{
    +		0: "STRIP_ENUM_PREFIX_UNSPECIFIED",
    +		1: "STRIP_ENUM_PREFIX_KEEP",
    +		2: "STRIP_ENUM_PREFIX_GENERATE_BOTH",
    +		3: "STRIP_ENUM_PREFIX_STRIP",
    +	}
    +	GoFeatures_StripEnumPrefix_value = map[string]int32{
    +		"STRIP_ENUM_PREFIX_UNSPECIFIED":   0,
    +		"STRIP_ENUM_PREFIX_KEEP":          1,
    +		"STRIP_ENUM_PREFIX_GENERATE_BOTH": 2,
    +		"STRIP_ENUM_PREFIX_STRIP":         3,
    +	}
    +)
    +
    +func (x GoFeatures_StripEnumPrefix) Enum() *GoFeatures_StripEnumPrefix {
    +	p := new(GoFeatures_StripEnumPrefix)
    +	*p = x
    +	return p
    +}
    +
    +func (x GoFeatures_StripEnumPrefix) String() string {
    +	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    +}
    +
    +func (GoFeatures_StripEnumPrefix) Descriptor() protoreflect.EnumDescriptor {
    +	return file_google_protobuf_go_features_proto_enumTypes[1].Descriptor()
    +}
    +
    +func (GoFeatures_StripEnumPrefix) Type() protoreflect.EnumType {
    +	return &file_google_protobuf_go_features_proto_enumTypes[1]
    +}
    +
    +func (x GoFeatures_StripEnumPrefix) Number() protoreflect.EnumNumber {
    +	return protoreflect.EnumNumber(x)
    +}
    +
    +// Deprecated: Do not use.
    +func (x *GoFeatures_StripEnumPrefix) UnmarshalJSON(b []byte) error {
    +	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
    +	if err != nil {
    +		return err
    +	}
    +	*x = GoFeatures_StripEnumPrefix(num)
    +	return nil
    +}
     
    +// Deprecated: Use GoFeatures_StripEnumPrefix.Descriptor instead.
    +func (GoFeatures_StripEnumPrefix) EnumDescriptor() ([]byte, []int) {
    +	return file_google_protobuf_go_features_proto_rawDescGZIP(), []int{0, 1}
    +}
    +
    +type GoFeatures struct {
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Whether or not to generate the deprecated UnmarshalJSON method for enums.
    +	// Can only be true for proto using the Open Struct api.
     	LegacyUnmarshalJsonEnum *bool `protobuf:"varint,1,opt,name=legacy_unmarshal_json_enum,json=legacyUnmarshalJsonEnum" json:"legacy_unmarshal_json_enum,omitempty"`
    +	// One of OPEN, HYBRID or OPAQUE.
    +	ApiLevel        *GoFeatures_APILevel        `protobuf:"varint,2,opt,name=api_level,json=apiLevel,enum=pb.GoFeatures_APILevel" json:"api_level,omitempty"`
    +	StripEnumPrefix *GoFeatures_StripEnumPrefix `protobuf:"varint,3,opt,name=strip_enum_prefix,json=stripEnumPrefix,enum=pb.GoFeatures_StripEnumPrefix" json:"strip_enum_prefix,omitempty"`
    +	unknownFields   protoimpl.UnknownFields
    +	sizeCache       protoimpl.SizeCache
     }
     
     func (x *GoFeatures) Reset() {
     	*x = GoFeatures{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_go_features_proto_msgTypes[0]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_go_features_proto_msgTypes[0]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *GoFeatures) String() string {
    @@ -44,7 +172,7 @@ func (*GoFeatures) ProtoMessage() {}
     
     func (x *GoFeatures) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_go_features_proto_msgTypes[0]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -66,6 +194,20 @@ func (x *GoFeatures) GetLegacyUnmarshalJsonEnum() bool {
     	return false
     }
     
    +func (x *GoFeatures) GetApiLevel() GoFeatures_APILevel {
    +	if x != nil && x.ApiLevel != nil {
    +		return *x.ApiLevel
    +	}
    +	return GoFeatures_API_LEVEL_UNSPECIFIED
    +}
    +
    +func (x *GoFeatures) GetStripEnumPrefix() GoFeatures_StripEnumPrefix {
    +	if x != nil && x.StripEnumPrefix != nil {
    +		return *x.StripEnumPrefix
    +	}
    +	return GoFeatures_STRIP_ENUM_PREFIX_UNSPECIFIED
    +}
    +
     var file_google_protobuf_go_features_proto_extTypes = []protoimpl.ExtensionInfo{
     	{
     		ExtendedType:  (*descriptorpb.FeatureSet)(nil),
    @@ -90,27 +232,57 @@ var file_google_protobuf_go_features_proto_rawDesc = []byte{
     	0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72,
     	0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
     	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
    -	0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc9, 0x01, 0x0a, 0x0a, 0x47, 0x6f,
    -	0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0xba, 0x01, 0x0a, 0x1a, 0x6c, 0x65, 0x67,
    +	0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xab, 0x05, 0x0a, 0x0a, 0x47, 0x6f,
    +	0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x1a, 0x6c, 0x65, 0x67,
     	0x61, 0x63, 0x79, 0x5f, 0x75, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x5f, 0x6a, 0x73,
    -	0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x7d, 0x88,
    -	0x01, 0x01, 0x98, 0x01, 0x06, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x74, 0x72, 0x75, 0x65, 0x18, 0x84,
    -	0x07, 0xa2, 0x01, 0x0a, 0x12, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x18, 0xe7, 0x07, 0xb2, 0x01,
    -	0x5b, 0x08, 0xe8, 0x07, 0x10, 0xe8, 0x07, 0x1a, 0x53, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x67,
    -	0x61, 0x63, 0x79, 0x20, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x4a, 0x53, 0x4f,
    -	0x4e, 0x20, 0x41, 0x50, 0x49, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
    -	0x74, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20,
    -	0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x66, 0x75, 0x74,
    -	0x75, 0x72, 0x65, 0x20, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x17, 0x6c, 0x65,
    -	0x67, 0x61, 0x63, 0x79, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x4a, 0x73, 0x6f,
    -	0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x3c, 0x0a, 0x02, 0x67, 0x6f, 0x12, 0x1b, 0x2e, 0x67, 0x6f,
    -	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65,
    -	0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
    -	0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52,
    -	0x02, 0x67, 0x6f, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
    -	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
    -	0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x67, 0x6f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
    -	0x65, 0x73, 0x70, 0x62,
    +	0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x80, 0x01,
    +	0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x74, 0x72,
    +	0x75, 0x65, 0x18, 0x84, 0x07, 0xa2, 0x01, 0x0a, 0x12, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x18,
    +	0xe7, 0x07, 0xb2, 0x01, 0x5b, 0x08, 0xe8, 0x07, 0x10, 0xe8, 0x07, 0x1a, 0x53, 0x54, 0x68, 0x65,
    +	0x20, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x20, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61,
    +	0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x41, 0x50, 0x49, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x70,
    +	0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x6c, 0x6c,
    +	0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x61,
    +	0x20, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x20, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
    +	0x52, 0x17, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61,
    +	0x6c, 0x4a, 0x73, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x74, 0x0a, 0x09, 0x61, 0x70, 0x69,
    +	0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70,
    +	0x62, 0x2e, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x50, 0x49,
    +	0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x3e, 0x88, 0x01, 0x01, 0x98, 0x01, 0x03, 0x98, 0x01, 0x01,
    +	0xa2, 0x01, 0x1a, 0x12, 0x15, 0x41, 0x50, 0x49, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55,
    +	0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x18, 0x84, 0x07, 0xa2, 0x01, 0x0f,
    +	0x12, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x41, 0x51, 0x55, 0x45, 0x18, 0xe9, 0x07, 0xb2,
    +	0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x08, 0x61, 0x70, 0x69, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12,
    +	0x7c, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x72,
    +	0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x2e,
    +	0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x70,
    +	0x45, 0x6e, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x30, 0x88, 0x01, 0x01, 0x98,
    +	0x01, 0x06, 0x98, 0x01, 0x07, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x1b, 0x12, 0x16, 0x53, 0x54, 0x52,
    +	0x49, 0x50, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x5f, 0x4b,
    +	0x45, 0x45, 0x50, 0x18, 0x84, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe9, 0x07, 0x52, 0x0f, 0x73, 0x74,
    +	0x72, 0x69, 0x70, 0x45, 0x6e, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x53, 0x0a,
    +	0x08, 0x41, 0x50, 0x49, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x50, 0x49,
    +	0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
    +	0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x4e,
    +	0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x48, 0x59, 0x42, 0x52, 0x49, 0x44,
    +	0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x41, 0x51, 0x55, 0x45,
    +	0x10, 0x03, 0x22, 0x92, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x69, 0x70, 0x45, 0x6e, 0x75, 0x6d,
    +	0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x54, 0x52, 0x49, 0x50, 0x5f,
    +	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x5f, 0x55, 0x4e, 0x53, 0x50,
    +	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x52,
    +	0x49, 0x50, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x5f, 0x4b,
    +	0x45, 0x45, 0x50, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x54, 0x52, 0x49, 0x50, 0x5f, 0x45,
    +	0x4e, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52,
    +	0x41, 0x54, 0x45, 0x5f, 0x42, 0x4f, 0x54, 0x48, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54,
    +	0x52, 0x49, 0x50, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x5f,
    +	0x53, 0x54, 0x52, 0x49, 0x50, 0x10, 0x03, 0x3a, 0x3c, 0x0a, 0x02, 0x67, 0x6f, 0x12, 0x1b, 0x2e,
    +	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
    +	0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28,
    +	0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
    +	0x73, 0x52, 0x02, 0x67, 0x6f, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
    +	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
    +	0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x67, 0x6f, 0x66, 0x65, 0x61, 0x74,
    +	0x75, 0x72, 0x65, 0x73, 0x70, 0x62,
     }
     
     var (
    @@ -125,19 +297,24 @@ func file_google_protobuf_go_features_proto_rawDescGZIP() []byte {
     	return file_google_protobuf_go_features_proto_rawDescData
     }
     
    +var file_google_protobuf_go_features_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
     var file_google_protobuf_go_features_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
    -var file_google_protobuf_go_features_proto_goTypes = []interface{}{
    -	(*GoFeatures)(nil),              // 0: pb.GoFeatures
    -	(*descriptorpb.FeatureSet)(nil), // 1: google.protobuf.FeatureSet
    +var file_google_protobuf_go_features_proto_goTypes = []any{
    +	(GoFeatures_APILevel)(0),        // 0: pb.GoFeatures.APILevel
    +	(GoFeatures_StripEnumPrefix)(0), // 1: pb.GoFeatures.StripEnumPrefix
    +	(*GoFeatures)(nil),              // 2: pb.GoFeatures
    +	(*descriptorpb.FeatureSet)(nil), // 3: google.protobuf.FeatureSet
     }
     var file_google_protobuf_go_features_proto_depIdxs = []int32{
    -	1, // 0: pb.go:extendee -> google.protobuf.FeatureSet
    -	0, // 1: pb.go:type_name -> pb.GoFeatures
    -	2, // [2:2] is the sub-list for method output_type
    -	2, // [2:2] is the sub-list for method input_type
    -	1, // [1:2] is the sub-list for extension type_name
    -	0, // [0:1] is the sub-list for extension extendee
    -	0, // [0:0] is the sub-list for field type_name
    +	0, // 0: pb.GoFeatures.api_level:type_name -> pb.GoFeatures.APILevel
    +	1, // 1: pb.GoFeatures.strip_enum_prefix:type_name -> pb.GoFeatures.StripEnumPrefix
    +	3, // 2: pb.go:extendee -> google.protobuf.FeatureSet
    +	2, // 3: pb.go:type_name -> pb.GoFeatures
    +	4, // [4:4] is the sub-list for method output_type
    +	4, // [4:4] is the sub-list for method input_type
    +	3, // [3:4] is the sub-list for extension type_name
    +	2, // [2:3] is the sub-list for extension extendee
    +	0, // [0:2] is the sub-list for field type_name
     }
     
     func init() { file_google_protobuf_go_features_proto_init() }
    @@ -145,32 +322,19 @@ func file_google_protobuf_go_features_proto_init() {
     	if File_google_protobuf_go_features_proto != nil {
     		return
     	}
    -	if !protoimpl.UnsafeEnabled {
    -		file_google_protobuf_go_features_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*GoFeatures); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -	}
     	type x struct{}
     	out := protoimpl.TypeBuilder{
     		File: protoimpl.DescBuilder{
     			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
     			RawDescriptor: file_google_protobuf_go_features_proto_rawDesc,
    -			NumEnums:      0,
    +			NumEnums:      2,
     			NumMessages:   1,
     			NumExtensions: 1,
     			NumServices:   0,
     		},
     		GoTypes:           file_google_protobuf_go_features_proto_goTypes,
     		DependencyIndexes: file_google_protobuf_go_features_proto_depIdxs,
    +		EnumInfos:         file_google_protobuf_go_features_proto_enumTypes,
     		MessageInfos:      file_google_protobuf_go_features_proto_msgTypes,
     		ExtensionInfos:    file_google_protobuf_go_features_proto_extTypes,
     	}.Build()
    diff --git a/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go b/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go
    index 9de51be54032..191552cce093 100644
    --- a/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go
    +++ b/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go
    @@ -210,10 +210,7 @@ import (
     //	  "value": "1.212s"
     //	}
     type Any struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// A URL/resource name that uniquely identifies the type of the serialized
     	// protocol buffer message. This string must contain at least
     	// one "/" character. The last segment of the URL's path must represent
    @@ -244,7 +241,9 @@ type Any struct {
     	// used with implementation specific semantics.
     	TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
     	// Must be a valid serialized protocol buffer of the above specified type.
    -	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
    +	Value         []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // New marshals src into a new Any instance.
    @@ -368,11 +367,9 @@ func (x *Any) UnmarshalNew() (proto.Message, error) {
     
     func (x *Any) Reset() {
     	*x = Any{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_any_proto_msgTypes[0]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_any_proto_msgTypes[0]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Any) String() string {
    @@ -383,7 +380,7 @@ func (*Any) ProtoMessage() {}
     
     func (x *Any) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_any_proto_msgTypes[0]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -445,7 +442,7 @@ func file_google_protobuf_any_proto_rawDescGZIP() []byte {
     }
     
     var file_google_protobuf_any_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
    -var file_google_protobuf_any_proto_goTypes = []interface{}{
    +var file_google_protobuf_any_proto_goTypes = []any{
     	(*Any)(nil), // 0: google.protobuf.Any
     }
     var file_google_protobuf_any_proto_depIdxs = []int32{
    @@ -461,20 +458,6 @@ func file_google_protobuf_any_proto_init() {
     	if File_google_protobuf_any_proto != nil {
     		return
     	}
    -	if !protoimpl.UnsafeEnabled {
    -		file_google_protobuf_any_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Any); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -	}
     	type x struct{}
     	out := protoimpl.TypeBuilder{
     		File: protoimpl.DescBuilder{
    diff --git a/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go b/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go
    index df709a8dd4c2..34d76e6cd93d 100644
    --- a/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go
    +++ b/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go
    @@ -141,10 +141,7 @@ import (
     // be expressed in JSON format as "3.000000001s", and 3 seconds and 1
     // microsecond should be expressed in JSON format as "3.000001s".
     type Duration struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Signed seconds of the span of time. Must be from -315,576,000,000
     	// to +315,576,000,000 inclusive. Note: these bounds are computed from:
     	// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
    @@ -155,7 +152,9 @@ type Duration struct {
     	// of one second or more, a non-zero value for the `nanos` field must be
     	// of the same sign as the `seconds` field. Must be from -999,999,999
     	// to +999,999,999 inclusive.
    -	Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
    +	Nanos         int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // New constructs a new Duration from the provided time.Duration.
    @@ -245,11 +244,9 @@ func (x *Duration) check() uint {
     
     func (x *Duration) Reset() {
     	*x = Duration{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_duration_proto_msgTypes[0]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_duration_proto_msgTypes[0]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Duration) String() string {
    @@ -260,7 +257,7 @@ func (*Duration) ProtoMessage() {}
     
     func (x *Duration) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_duration_proto_msgTypes[0]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -323,7 +320,7 @@ func file_google_protobuf_duration_proto_rawDescGZIP() []byte {
     }
     
     var file_google_protobuf_duration_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
    -var file_google_protobuf_duration_proto_goTypes = []interface{}{
    +var file_google_protobuf_duration_proto_goTypes = []any{
     	(*Duration)(nil), // 0: google.protobuf.Duration
     }
     var file_google_protobuf_duration_proto_depIdxs = []int32{
    @@ -339,20 +336,6 @@ func file_google_protobuf_duration_proto_init() {
     	if File_google_protobuf_duration_proto != nil {
     		return
     	}
    -	if !protoimpl.UnsafeEnabled {
    -		file_google_protobuf_duration_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Duration); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -	}
     	type x struct{}
     	out := protoimpl.TypeBuilder{
     		File: protoimpl.DescBuilder{
    diff --git a/vendor/google.golang.org/protobuf/types/known/fieldmaskpb/field_mask.pb.go b/vendor/google.golang.org/protobuf/types/known/fieldmaskpb/field_mask.pb.go
    index e8789cb331eb..e5d7da38c207 100644
    --- a/vendor/google.golang.org/protobuf/types/known/fieldmaskpb/field_mask.pb.go
    +++ b/vendor/google.golang.org/protobuf/types/known/fieldmaskpb/field_mask.pb.go
    @@ -284,12 +284,11 @@ import (
     // request should verify the included field paths, and return an
     // `INVALID_ARGUMENT` error if any path is unmappable.
     type FieldMask struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The set of field mask paths.
    -	Paths []string `protobuf:"bytes,1,rep,name=paths,proto3" json:"paths,omitempty"`
    +	Paths         []string `protobuf:"bytes,1,rep,name=paths,proto3" json:"paths,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // New constructs a field mask from a list of paths and verifies that
    @@ -467,11 +466,9 @@ func rangeFields(path string, f func(field string) bool) bool {
     
     func (x *FieldMask) Reset() {
     	*x = FieldMask{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_field_mask_proto_msgTypes[0]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_field_mask_proto_msgTypes[0]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FieldMask) String() string {
    @@ -482,7 +479,7 @@ func (*FieldMask) ProtoMessage() {}
     
     func (x *FieldMask) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_field_mask_proto_msgTypes[0]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -537,7 +534,7 @@ func file_google_protobuf_field_mask_proto_rawDescGZIP() []byte {
     }
     
     var file_google_protobuf_field_mask_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
    -var file_google_protobuf_field_mask_proto_goTypes = []interface{}{
    +var file_google_protobuf_field_mask_proto_goTypes = []any{
     	(*FieldMask)(nil), // 0: google.protobuf.FieldMask
     }
     var file_google_protobuf_field_mask_proto_depIdxs = []int32{
    @@ -553,20 +550,6 @@ func file_google_protobuf_field_mask_proto_init() {
     	if File_google_protobuf_field_mask_proto != nil {
     		return
     	}
    -	if !protoimpl.UnsafeEnabled {
    -		file_google_protobuf_field_mask_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FieldMask); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -	}
     	type x struct{}
     	out := protoimpl.TypeBuilder{
     		File: protoimpl.DescBuilder{
    diff --git a/vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go b/vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go
    index d2bac8b88ea1..f2c53ea337ca 100644
    --- a/vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go
    +++ b/vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go
    @@ -49,11 +49,11 @@
     // The standard Go "encoding/json" package has functionality to serialize
     // arbitrary types to a large degree. The Value.AsInterface, Struct.AsMap, and
     // ListValue.AsSlice methods can convert the protobuf message representation into
    -// a form represented by interface{}, map[string]interface{}, and []interface{}.
    +// a form represented by any, map[string]any, and []any.
     // This form can be used with other packages that operate on such data structures
     // and also directly with the standard json package.
     //
    -// In order to convert the interface{}, map[string]interface{}, and []interface{}
    +// In order to convert the any, map[string]any, and []any
     // forms back as Value, Struct, and ListValue messages, use the NewStruct,
     // NewList, and NewValue constructor functions.
     //
    @@ -88,28 +88,28 @@
     //
     // To construct a Value message representing the above JSON object:
     //
    -//	m, err := structpb.NewValue(map[string]interface{}{
    +//	m, err := structpb.NewValue(map[string]any{
     //		"firstName": "John",
     //		"lastName":  "Smith",
     //		"isAlive":   true,
     //		"age":       27,
    -//		"address": map[string]interface{}{
    +//		"address": map[string]any{
     //			"streetAddress": "21 2nd Street",
     //			"city":          "New York",
     //			"state":         "NY",
     //			"postalCode":    "10021-3100",
     //		},
    -//		"phoneNumbers": []interface{}{
    -//			map[string]interface{}{
    +//		"phoneNumbers": []any{
    +//			map[string]any{
     //				"type":   "home",
     //				"number": "212 555-1234",
     //			},
    -//			map[string]interface{}{
    +//			map[string]any{
     //				"type":   "office",
     //				"number": "646 555-4567",
     //			},
     //		},
    -//		"children": []interface{}{},
    +//		"children": []any{},
     //		"spouse":   nil,
     //	})
     //	if err != nil {
    @@ -120,6 +120,7 @@ package structpb
     
     import (
     	base64 "encoding/base64"
    +	json "encoding/json"
     	protojson "google.golang.org/protobuf/encoding/protojson"
     	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
     	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    @@ -186,18 +187,17 @@ func (NullValue) EnumDescriptor() ([]byte, []int) {
     //
     // The JSON representation for `Struct` is JSON object.
     type Struct struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Unordered map of dynamically typed values.
    -	Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
    +	Fields        map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // NewStruct constructs a Struct from a general-purpose Go map.
     // The map keys must be valid UTF-8.
     // The map values are converted using NewValue.
    -func NewStruct(v map[string]interface{}) (*Struct, error) {
    +func NewStruct(v map[string]any) (*Struct, error) {
     	x := &Struct{Fields: make(map[string]*Value, len(v))}
     	for k, v := range v {
     		if !utf8.ValidString(k) {
    @@ -214,9 +214,9 @@ func NewStruct(v map[string]interface{}) (*Struct, error) {
     
     // AsMap converts x to a general-purpose Go map.
     // The map values are converted by calling Value.AsInterface.
    -func (x *Struct) AsMap() map[string]interface{} {
    +func (x *Struct) AsMap() map[string]any {
     	f := x.GetFields()
    -	vs := make(map[string]interface{}, len(f))
    +	vs := make(map[string]any, len(f))
     	for k, v := range f {
     		vs[k] = v.AsInterface()
     	}
    @@ -233,11 +233,9 @@ func (x *Struct) UnmarshalJSON(b []byte) error {
     
     func (x *Struct) Reset() {
     	*x = Struct{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_struct_proto_msgTypes[0]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_struct_proto_msgTypes[0]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Struct) String() string {
    @@ -248,7 +246,7 @@ func (*Struct) ProtoMessage() {}
     
     func (x *Struct) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_struct_proto_msgTypes[0]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -277,13 +275,10 @@ func (x *Struct) GetFields() map[string]*Value {
     //
     // The JSON representation for `Value` is JSON value.
     type Value struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The kind of value.
     	//
    -	// Types that are assignable to Kind:
    +	// Types that are valid to be assigned to Kind:
     	//
     	//	*Value_NullValue
     	//	*Value_NumberValue
    @@ -291,28 +286,31 @@ type Value struct {
     	//	*Value_BoolValue
     	//	*Value_StructValue
     	//	*Value_ListValue
    -	Kind isValue_Kind `protobuf_oneof:"kind"`
    +	Kind          isValue_Kind `protobuf_oneof:"kind"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // NewValue constructs a Value from a general-purpose Go interface.
     //
    -//	╔════════════════════════╤════════════════════════════════════════════╗
    -//	║ Go type                │ Conversion                                 ║
    -//	╠════════════════════════╪════════════════════════════════════════════╣
    -//	║ nil                    │ stored as NullValue                        ║
    -//	║ bool                   │ stored as BoolValue                        ║
    -//	║ int, int32, int64      │ stored as NumberValue                      ║
    -//	║ uint, uint32, uint64   │ stored as NumberValue                      ║
    -//	║ float32, float64       │ stored as NumberValue                      ║
    -//	║ string                 │ stored as StringValue; must be valid UTF-8 ║
    -//	║ []byte                 │ stored as StringValue; base64-encoded      ║
    -//	║ map[string]interface{} │ stored as StructValue                      ║
    -//	║ []interface{}          │ stored as ListValue                        ║
    -//	╚════════════════════════╧════════════════════════════════════════════╝
    +//	╔═══════════════════════════════════════╤════════════════════════════════════════════╗
    +//	║ Go type                               │ Conversion                                 ║
    +//	╠═══════════════════════════════════════╪════════════════════════════════════════════╣
    +//	║ nil                                   │ stored as NullValue                        ║
    +//	║ bool                                  │ stored as BoolValue                        ║
    +//	║ int, int8, int16, int32, int64        │ stored as NumberValue                      ║
    +//	║ uint, uint8, uint16, uint32, uint64   │ stored as NumberValue                      ║
    +//	║ float32, float64                      │ stored as NumberValue                      ║
    +//	║ json.Number                           │ stored as NumberValue                      ║
    +//	║ string                                │ stored as StringValue; must be valid UTF-8 ║
    +//	║ []byte                                │ stored as StringValue; base64-encoded      ║
    +//	║ map[string]any                        │ stored as StructValue                      ║
    +//	║ []any                                 │ stored as ListValue                        ║
    +//	╚═══════════════════════════════════════╧════════════════════════════════════════════╝
     //
     // When converting an int64 or uint64 to a NumberValue, numeric precision loss
     // is possible since they are stored as a float64.
    -func NewValue(v interface{}) (*Value, error) {
    +func NewValue(v any) (*Value, error) {
     	switch v := v.(type) {
     	case nil:
     		return NewNullValue(), nil
    @@ -320,12 +318,20 @@ func NewValue(v interface{}) (*Value, error) {
     		return NewBoolValue(v), nil
     	case int:
     		return NewNumberValue(float64(v)), nil
    +	case int8:
    +		return NewNumberValue(float64(v)), nil
    +	case int16:
    +		return NewNumberValue(float64(v)), nil
     	case int32:
     		return NewNumberValue(float64(v)), nil
     	case int64:
     		return NewNumberValue(float64(v)), nil
     	case uint:
     		return NewNumberValue(float64(v)), nil
    +	case uint8:
    +		return NewNumberValue(float64(v)), nil
    +	case uint16:
    +		return NewNumberValue(float64(v)), nil
     	case uint32:
     		return NewNumberValue(float64(v)), nil
     	case uint64:
    @@ -334,6 +340,12 @@ func NewValue(v interface{}) (*Value, error) {
     		return NewNumberValue(float64(v)), nil
     	case float64:
     		return NewNumberValue(float64(v)), nil
    +	case json.Number:
    +		n, err := v.Float64()
    +		if err != nil {
    +			return nil, protoimpl.X.NewError("invalid number format %q, expected a float64: %v", v, err)
    +		}
    +		return NewNumberValue(n), nil
     	case string:
     		if !utf8.ValidString(v) {
     			return nil, protoimpl.X.NewError("invalid UTF-8 in string: %q", v)
    @@ -342,13 +354,13 @@ func NewValue(v interface{}) (*Value, error) {
     	case []byte:
     		s := base64.StdEncoding.EncodeToString(v)
     		return NewStringValue(s), nil
    -	case map[string]interface{}:
    +	case map[string]any:
     		v2, err := NewStruct(v)
     		if err != nil {
     			return nil, err
     		}
     		return NewStructValue(v2), nil
    -	case []interface{}:
    +	case []any:
     		v2, err := NewList(v)
     		if err != nil {
     			return nil, err
    @@ -396,7 +408,7 @@ func NewListValue(v *ListValue) *Value {
     //
     // Floating-point values (i.e., "NaN", "Infinity", and "-Infinity") are
     // converted as strings to remain compatible with MarshalJSON.
    -func (x *Value) AsInterface() interface{} {
    +func (x *Value) AsInterface() any {
     	switch v := x.GetKind().(type) {
     	case *Value_NumberValue:
     		if v != nil {
    @@ -441,11 +453,9 @@ func (x *Value) UnmarshalJSON(b []byte) error {
     
     func (x *Value) Reset() {
     	*x = Value{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_struct_proto_msgTypes[1]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_struct_proto_msgTypes[1]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Value) String() string {
    @@ -456,7 +466,7 @@ func (*Value) ProtoMessage() {}
     
     func (x *Value) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_struct_proto_msgTypes[1]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -471,51 +481,63 @@ func (*Value) Descriptor() ([]byte, []int) {
     	return file_google_protobuf_struct_proto_rawDescGZIP(), []int{1}
     }
     
    -func (m *Value) GetKind() isValue_Kind {
    -	if m != nil {
    -		return m.Kind
    +func (x *Value) GetKind() isValue_Kind {
    +	if x != nil {
    +		return x.Kind
     	}
     	return nil
     }
     
     func (x *Value) GetNullValue() NullValue {
    -	if x, ok := x.GetKind().(*Value_NullValue); ok {
    -		return x.NullValue
    +	if x != nil {
    +		if x, ok := x.Kind.(*Value_NullValue); ok {
    +			return x.NullValue
    +		}
     	}
     	return NullValue_NULL_VALUE
     }
     
     func (x *Value) GetNumberValue() float64 {
    -	if x, ok := x.GetKind().(*Value_NumberValue); ok {
    -		return x.NumberValue
    +	if x != nil {
    +		if x, ok := x.Kind.(*Value_NumberValue); ok {
    +			return x.NumberValue
    +		}
     	}
     	return 0
     }
     
     func (x *Value) GetStringValue() string {
    -	if x, ok := x.GetKind().(*Value_StringValue); ok {
    -		return x.StringValue
    +	if x != nil {
    +		if x, ok := x.Kind.(*Value_StringValue); ok {
    +			return x.StringValue
    +		}
     	}
     	return ""
     }
     
     func (x *Value) GetBoolValue() bool {
    -	if x, ok := x.GetKind().(*Value_BoolValue); ok {
    -		return x.BoolValue
    +	if x != nil {
    +		if x, ok := x.Kind.(*Value_BoolValue); ok {
    +			return x.BoolValue
    +		}
     	}
     	return false
     }
     
     func (x *Value) GetStructValue() *Struct {
    -	if x, ok := x.GetKind().(*Value_StructValue); ok {
    -		return x.StructValue
    +	if x != nil {
    +		if x, ok := x.Kind.(*Value_StructValue); ok {
    +			return x.StructValue
    +		}
     	}
     	return nil
     }
     
     func (x *Value) GetListValue() *ListValue {
    -	if x, ok := x.GetKind().(*Value_ListValue); ok {
    -		return x.ListValue
    +	if x != nil {
    +		if x, ok := x.Kind.(*Value_ListValue); ok {
    +			return x.ListValue
    +		}
     	}
     	return nil
     }
    @@ -570,17 +592,16 @@ func (*Value_ListValue) isValue_Kind() {}
     //
     // The JSON representation for `ListValue` is JSON array.
     type ListValue struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Repeated field of dynamically typed values.
    -	Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
    +	Values        []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // NewList constructs a ListValue from a general-purpose Go slice.
     // The slice elements are converted using NewValue.
    -func NewList(v []interface{}) (*ListValue, error) {
    +func NewList(v []any) (*ListValue, error) {
     	x := &ListValue{Values: make([]*Value, len(v))}
     	for i, v := range v {
     		var err error
    @@ -594,9 +615,9 @@ func NewList(v []interface{}) (*ListValue, error) {
     
     // AsSlice converts x to a general-purpose Go slice.
     // The slice elements are converted by calling Value.AsInterface.
    -func (x *ListValue) AsSlice() []interface{} {
    +func (x *ListValue) AsSlice() []any {
     	vals := x.GetValues()
    -	vs := make([]interface{}, len(vals))
    +	vs := make([]any, len(vals))
     	for i, v := range vals {
     		vs[i] = v.AsInterface()
     	}
    @@ -613,11 +634,9 @@ func (x *ListValue) UnmarshalJSON(b []byte) error {
     
     func (x *ListValue) Reset() {
     	*x = ListValue{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_struct_proto_msgTypes[2]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_struct_proto_msgTypes[2]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *ListValue) String() string {
    @@ -628,7 +647,7 @@ func (*ListValue) ProtoMessage() {}
     
     func (x *ListValue) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_struct_proto_msgTypes[2]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -716,7 +735,7 @@ func file_google_protobuf_struct_proto_rawDescGZIP() []byte {
     
     var file_google_protobuf_struct_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
     var file_google_protobuf_struct_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
    -var file_google_protobuf_struct_proto_goTypes = []interface{}{
    +var file_google_protobuf_struct_proto_goTypes = []any{
     	(NullValue)(0),    // 0: google.protobuf.NullValue
     	(*Struct)(nil),    // 1: google.protobuf.Struct
     	(*Value)(nil),     // 2: google.protobuf.Value
    @@ -742,45 +761,7 @@ func file_google_protobuf_struct_proto_init() {
     	if File_google_protobuf_struct_proto != nil {
     		return
     	}
    -	if !protoimpl.UnsafeEnabled {
    -		file_google_protobuf_struct_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Struct); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_struct_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Value); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_struct_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*ListValue); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -	}
    -	file_google_protobuf_struct_proto_msgTypes[1].OneofWrappers = []interface{}{
    +	file_google_protobuf_struct_proto_msgTypes[1].OneofWrappers = []any{
     		(*Value_NullValue)(nil),
     		(*Value_NumberValue)(nil),
     		(*Value_StringValue)(nil),
    diff --git a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go
    index 81511a3363ee..9550109aa3b0 100644
    --- a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go
    +++ b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go
    @@ -170,10 +170,7 @@ import (
     // http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
     // ) to obtain a formatter capable of generating timestamps in this format.
     type Timestamp struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// Represents seconds of UTC time since Unix epoch
     	// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
     	// 9999-12-31T23:59:59Z inclusive.
    @@ -182,7 +179,9 @@ type Timestamp struct {
     	// second values with fractions must still have non-negative nanos values
     	// that count forward in time. Must be from 0 to 999,999,999
     	// inclusive.
    -	Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
    +	Nanos         int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // Now constructs a new Timestamp from the current time.
    @@ -254,11 +253,9 @@ func (x *Timestamp) check() uint {
     
     func (x *Timestamp) Reset() {
     	*x = Timestamp{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_timestamp_proto_msgTypes[0]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_timestamp_proto_msgTypes[0]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Timestamp) String() string {
    @@ -269,7 +266,7 @@ func (*Timestamp) ProtoMessage() {}
     
     func (x *Timestamp) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_timestamp_proto_msgTypes[0]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -332,7 +329,7 @@ func file_google_protobuf_timestamp_proto_rawDescGZIP() []byte {
     }
     
     var file_google_protobuf_timestamp_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
    -var file_google_protobuf_timestamp_proto_goTypes = []interface{}{
    +var file_google_protobuf_timestamp_proto_goTypes = []any{
     	(*Timestamp)(nil), // 0: google.protobuf.Timestamp
     }
     var file_google_protobuf_timestamp_proto_depIdxs = []int32{
    @@ -348,20 +345,6 @@ func file_google_protobuf_timestamp_proto_init() {
     	if File_google_protobuf_timestamp_proto != nil {
     		return
     	}
    -	if !protoimpl.UnsafeEnabled {
    -		file_google_protobuf_timestamp_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Timestamp); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -	}
     	type x struct{}
     	out := protoimpl.TypeBuilder{
     		File: protoimpl.DescBuilder{
    diff --git a/vendor/google.golang.org/protobuf/types/known/wrapperspb/wrappers.pb.go b/vendor/google.golang.org/protobuf/types/known/wrapperspb/wrappers.pb.go
    index 762a87130f83..15b424ec12cc 100644
    --- a/vendor/google.golang.org/protobuf/types/known/wrapperspb/wrappers.pb.go
    +++ b/vendor/google.golang.org/protobuf/types/known/wrapperspb/wrappers.pb.go
    @@ -54,12 +54,11 @@ import (
     //
     // The JSON representation for `DoubleValue` is JSON number.
     type DoubleValue struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The double value.
    -	Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
    +	Value         float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // Double stores v in a new DoubleValue and returns a pointer to it.
    @@ -69,11 +68,9 @@ func Double(v float64) *DoubleValue {
     
     func (x *DoubleValue) Reset() {
     	*x = DoubleValue{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_wrappers_proto_msgTypes[0]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_wrappers_proto_msgTypes[0]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *DoubleValue) String() string {
    @@ -84,7 +81,7 @@ func (*DoubleValue) ProtoMessage() {}
     
     func (x *DoubleValue) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_wrappers_proto_msgTypes[0]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -110,12 +107,11 @@ func (x *DoubleValue) GetValue() float64 {
     //
     // The JSON representation for `FloatValue` is JSON number.
     type FloatValue struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The float value.
    -	Value float32 `protobuf:"fixed32,1,opt,name=value,proto3" json:"value,omitempty"`
    +	Value         float32 `protobuf:"fixed32,1,opt,name=value,proto3" json:"value,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // Float stores v in a new FloatValue and returns a pointer to it.
    @@ -125,11 +121,9 @@ func Float(v float32) *FloatValue {
     
     func (x *FloatValue) Reset() {
     	*x = FloatValue{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_wrappers_proto_msgTypes[1]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_wrappers_proto_msgTypes[1]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *FloatValue) String() string {
    @@ -140,7 +134,7 @@ func (*FloatValue) ProtoMessage() {}
     
     func (x *FloatValue) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_wrappers_proto_msgTypes[1]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -166,12 +160,11 @@ func (x *FloatValue) GetValue() float32 {
     //
     // The JSON representation for `Int64Value` is JSON string.
     type Int64Value struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The int64 value.
    -	Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
    +	Value         int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // Int64 stores v in a new Int64Value and returns a pointer to it.
    @@ -181,11 +174,9 @@ func Int64(v int64) *Int64Value {
     
     func (x *Int64Value) Reset() {
     	*x = Int64Value{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_wrappers_proto_msgTypes[2]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_wrappers_proto_msgTypes[2]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Int64Value) String() string {
    @@ -196,7 +187,7 @@ func (*Int64Value) ProtoMessage() {}
     
     func (x *Int64Value) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_wrappers_proto_msgTypes[2]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -222,12 +213,11 @@ func (x *Int64Value) GetValue() int64 {
     //
     // The JSON representation for `UInt64Value` is JSON string.
     type UInt64Value struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The uint64 value.
    -	Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
    +	Value         uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // UInt64 stores v in a new UInt64Value and returns a pointer to it.
    @@ -237,11 +227,9 @@ func UInt64(v uint64) *UInt64Value {
     
     func (x *UInt64Value) Reset() {
     	*x = UInt64Value{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_wrappers_proto_msgTypes[3]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_wrappers_proto_msgTypes[3]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *UInt64Value) String() string {
    @@ -252,7 +240,7 @@ func (*UInt64Value) ProtoMessage() {}
     
     func (x *UInt64Value) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_wrappers_proto_msgTypes[3]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -278,12 +266,11 @@ func (x *UInt64Value) GetValue() uint64 {
     //
     // The JSON representation for `Int32Value` is JSON number.
     type Int32Value struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The int32 value.
    -	Value int32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
    +	Value         int32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // Int32 stores v in a new Int32Value and returns a pointer to it.
    @@ -293,11 +280,9 @@ func Int32(v int32) *Int32Value {
     
     func (x *Int32Value) Reset() {
     	*x = Int32Value{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_wrappers_proto_msgTypes[4]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_wrappers_proto_msgTypes[4]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *Int32Value) String() string {
    @@ -308,7 +293,7 @@ func (*Int32Value) ProtoMessage() {}
     
     func (x *Int32Value) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_wrappers_proto_msgTypes[4]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -334,12 +319,11 @@ func (x *Int32Value) GetValue() int32 {
     //
     // The JSON representation for `UInt32Value` is JSON number.
     type UInt32Value struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The uint32 value.
    -	Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
    +	Value         uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // UInt32 stores v in a new UInt32Value and returns a pointer to it.
    @@ -349,11 +333,9 @@ func UInt32(v uint32) *UInt32Value {
     
     func (x *UInt32Value) Reset() {
     	*x = UInt32Value{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_wrappers_proto_msgTypes[5]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_wrappers_proto_msgTypes[5]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *UInt32Value) String() string {
    @@ -364,7 +346,7 @@ func (*UInt32Value) ProtoMessage() {}
     
     func (x *UInt32Value) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_wrappers_proto_msgTypes[5]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -390,12 +372,11 @@ func (x *UInt32Value) GetValue() uint32 {
     //
     // The JSON representation for `BoolValue` is JSON `true` and `false`.
     type BoolValue struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The bool value.
    -	Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
    +	Value         bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // Bool stores v in a new BoolValue and returns a pointer to it.
    @@ -405,11 +386,9 @@ func Bool(v bool) *BoolValue {
     
     func (x *BoolValue) Reset() {
     	*x = BoolValue{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_wrappers_proto_msgTypes[6]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_wrappers_proto_msgTypes[6]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *BoolValue) String() string {
    @@ -420,7 +399,7 @@ func (*BoolValue) ProtoMessage() {}
     
     func (x *BoolValue) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_wrappers_proto_msgTypes[6]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -446,12 +425,11 @@ func (x *BoolValue) GetValue() bool {
     //
     // The JSON representation for `StringValue` is JSON string.
     type StringValue struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The string value.
    -	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
    +	Value         string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // String stores v in a new StringValue and returns a pointer to it.
    @@ -461,11 +439,9 @@ func String(v string) *StringValue {
     
     func (x *StringValue) Reset() {
     	*x = StringValue{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_wrappers_proto_msgTypes[7]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_wrappers_proto_msgTypes[7]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *StringValue) String() string {
    @@ -476,7 +452,7 @@ func (*StringValue) ProtoMessage() {}
     
     func (x *StringValue) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_wrappers_proto_msgTypes[7]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -502,12 +478,11 @@ func (x *StringValue) GetValue() string {
     //
     // The JSON representation for `BytesValue` is JSON string.
     type BytesValue struct {
    -	state         protoimpl.MessageState
    -	sizeCache     protoimpl.SizeCache
    -	unknownFields protoimpl.UnknownFields
    -
    +	state protoimpl.MessageState `protogen:"open.v1"`
     	// The bytes value.
    -	Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
    +	Value         []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
    +	unknownFields protoimpl.UnknownFields
    +	sizeCache     protoimpl.SizeCache
     }
     
     // Bytes stores v in a new BytesValue and returns a pointer to it.
    @@ -517,11 +492,9 @@ func Bytes(v []byte) *BytesValue {
     
     func (x *BytesValue) Reset() {
     	*x = BytesValue{}
    -	if protoimpl.UnsafeEnabled {
    -		mi := &file_google_protobuf_wrappers_proto_msgTypes[8]
    -		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    -		ms.StoreMessageInfo(mi)
    -	}
    +	mi := &file_google_protobuf_wrappers_proto_msgTypes[8]
    +	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    +	ms.StoreMessageInfo(mi)
     }
     
     func (x *BytesValue) String() string {
    @@ -532,7 +505,7 @@ func (*BytesValue) ProtoMessage() {}
     
     func (x *BytesValue) ProtoReflect() protoreflect.Message {
     	mi := &file_google_protobuf_wrappers_proto_msgTypes[8]
    -	if protoimpl.UnsafeEnabled && x != nil {
    +	if x != nil {
     		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
     		if ms.LoadMessageInfo() == nil {
     			ms.StoreMessageInfo(mi)
    @@ -605,7 +578,7 @@ func file_google_protobuf_wrappers_proto_rawDescGZIP() []byte {
     }
     
     var file_google_protobuf_wrappers_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
    -var file_google_protobuf_wrappers_proto_goTypes = []interface{}{
    +var file_google_protobuf_wrappers_proto_goTypes = []any{
     	(*DoubleValue)(nil), // 0: google.protobuf.DoubleValue
     	(*FloatValue)(nil),  // 1: google.protobuf.FloatValue
     	(*Int64Value)(nil),  // 2: google.protobuf.Int64Value
    @@ -629,116 +602,6 @@ func file_google_protobuf_wrappers_proto_init() {
     	if File_google_protobuf_wrappers_proto != nil {
     		return
     	}
    -	if !protoimpl.UnsafeEnabled {
    -		file_google_protobuf_wrappers_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*DoubleValue); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_wrappers_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*FloatValue); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_wrappers_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Int64Value); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_wrappers_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*UInt64Value); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_wrappers_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*Int32Value); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_wrappers_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*UInt32Value); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_wrappers_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*BoolValue); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_wrappers_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*StringValue); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -		file_google_protobuf_wrappers_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
    -			switch v := v.(*BytesValue); i {
    -			case 0:
    -				return &v.state
    -			case 1:
    -				return &v.sizeCache
    -			case 2:
    -				return &v.unknownFields
    -			default:
    -				return nil
    -			}
    -		}
    -	}
     	type x struct{}
     	out := protoimpl.TypeBuilder{
     		File: protoimpl.DescBuilder{
    diff --git a/vendor/github.com/evanphx/json-patch/.gitignore b/vendor/gopkg.in/evanphx/json-patch.v4/.gitignore
    similarity index 100%
    rename from vendor/github.com/evanphx/json-patch/.gitignore
    rename to vendor/gopkg.in/evanphx/json-patch.v4/.gitignore
    diff --git a/vendor/github.com/evanphx/json-patch/LICENSE b/vendor/gopkg.in/evanphx/json-patch.v4/LICENSE
    similarity index 100%
    rename from vendor/github.com/evanphx/json-patch/LICENSE
    rename to vendor/gopkg.in/evanphx/json-patch.v4/LICENSE
    diff --git a/vendor/github.com/evanphx/json-patch/README.md b/vendor/gopkg.in/evanphx/json-patch.v4/README.md
    similarity index 100%
    rename from vendor/github.com/evanphx/json-patch/README.md
    rename to vendor/gopkg.in/evanphx/json-patch.v4/README.md
    diff --git a/vendor/github.com/evanphx/json-patch/errors.go b/vendor/gopkg.in/evanphx/json-patch.v4/errors.go
    similarity index 100%
    rename from vendor/github.com/evanphx/json-patch/errors.go
    rename to vendor/gopkg.in/evanphx/json-patch.v4/errors.go
    diff --git a/vendor/github.com/evanphx/json-patch/merge.go b/vendor/gopkg.in/evanphx/json-patch.v4/merge.go
    similarity index 100%
    rename from vendor/github.com/evanphx/json-patch/merge.go
    rename to vendor/gopkg.in/evanphx/json-patch.v4/merge.go
    diff --git a/vendor/github.com/evanphx/json-patch/patch.go b/vendor/gopkg.in/evanphx/json-patch.v4/patch.go
    similarity index 95%
    rename from vendor/github.com/evanphx/json-patch/patch.go
    rename to vendor/gopkg.in/evanphx/json-patch.v4/patch.go
    index 4bce5936d502..dc2b7e51e60b 100644
    --- a/vendor/github.com/evanphx/json-patch/patch.go
    +++ b/vendor/gopkg.in/evanphx/json-patch.v4/patch.go
    @@ -568,6 +568,29 @@ func (p Patch) replace(doc *container, op Operation) error {
     		return errors.Wrapf(err, "replace operation failed to decode path")
     	}
     
    +	if path == "" {
    +		val := op.value()
    +
    +		if val.which == eRaw {
    +			if !val.tryDoc() {
    +				if !val.tryAry() {
    +					return errors.Wrapf(err, "replace operation value must be object or array")
    +				}
    +			}
    +		}
    +
    +		switch val.which {
    +		case eAry:
    +			*doc = &val.ary
    +		case eDoc:
    +			*doc = &val.doc
    +		case eRaw:
    +			return errors.Wrapf(err, "replace operation hit impossible case")
    +		}
    +
    +		return nil
    +	}
    +
     	con, key := findObject(doc, path)
     
     	if con == nil {
    @@ -634,6 +657,25 @@ func (p Patch) test(doc *container, op Operation) error {
     		return errors.Wrapf(err, "test operation failed to decode path")
     	}
     
    +	if path == "" {
    +		var self lazyNode
    +
    +		switch sv := (*doc).(type) {
    +		case *partialDoc:
    +			self.doc = *sv
    +			self.which = eDoc
    +		case *partialArray:
    +			self.ary = *sv
    +			self.which = eAry
    +		}
    +
    +		if self.equal(op.value()) {
    +			return nil
    +		}
    +
    +		return errors.Wrapf(ErrTestFailed, "testing value %s failed", path)
    +	}
    +
     	con, key := findObject(doc, path)
     
     	if con == nil {
    diff --git a/vendor/k8s.io/api/admission/v1/doc.go b/vendor/k8s.io/api/admission/v1/doc.go
    index cbc6bb59dd96..e7df9f629c34 100644
    --- a/vendor/k8s.io/api/admission/v1/doc.go
    +++ b/vendor/k8s.io/api/admission/v1/doc.go
    @@ -17,7 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=false
    -
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=admission.k8s.io
     
     package v1 // import "k8s.io/api/admission/v1"
    diff --git a/vendor/k8s.io/api/admission/v1/generated.pb.go b/vendor/k8s.io/api/admission/v1/generated.pb.go
    index a2d8ff5dde6c..f5c417919826 100644
    --- a/vendor/k8s.io/api/admission/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/admission/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/admission/v1/generated.proto
    +// source: k8s.io/api/admission/v1/generated.proto
     
     package v1
     
    @@ -50,7 +50,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *AdmissionRequest) Reset()      { *m = AdmissionRequest{} }
     func (*AdmissionRequest) ProtoMessage() {}
     func (*AdmissionRequest) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_4b73421fd5edef9f, []int{0}
    +	return fileDescriptor_7b47d27831186ccf, []int{0}
     }
     func (m *AdmissionRequest) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -78,7 +78,7 @@ var xxx_messageInfo_AdmissionRequest proto.InternalMessageInfo
     func (m *AdmissionResponse) Reset()      { *m = AdmissionResponse{} }
     func (*AdmissionResponse) ProtoMessage() {}
     func (*AdmissionResponse) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_4b73421fd5edef9f, []int{1}
    +	return fileDescriptor_7b47d27831186ccf, []int{1}
     }
     func (m *AdmissionResponse) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -106,7 +106,7 @@ var xxx_messageInfo_AdmissionResponse proto.InternalMessageInfo
     func (m *AdmissionReview) Reset()      { *m = AdmissionReview{} }
     func (*AdmissionReview) ProtoMessage() {}
     func (*AdmissionReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_4b73421fd5edef9f, []int{2}
    +	return fileDescriptor_7b47d27831186ccf, []int{2}
     }
     func (m *AdmissionReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -139,69 +139,68 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/admission/v1/generated.proto", fileDescriptor_4b73421fd5edef9f)
    +	proto.RegisterFile("k8s.io/api/admission/v1/generated.proto", fileDescriptor_7b47d27831186ccf)
     }
     
    -var fileDescriptor_4b73421fd5edef9f = []byte{
    -	// 921 bytes of a gzipped FileDescriptorProto
    +var fileDescriptor_7b47d27831186ccf = []byte{
    +	// 907 bytes of a gzipped FileDescriptorProto
     	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x6f, 0x1b, 0x45,
    -	0x14, 0xf7, 0xd6, 0x8e, 0xed, 0x1d, 0x87, 0xda, 0x9d, 0x82, 0xba, 0xf2, 0x61, 0x6d, 0x72, 0x40,
    -	0x2e, 0x6a, 0x77, 0x49, 0x04, 0x55, 0x54, 0x81, 0xd4, 0x2c, 0xa9, 0x50, 0x40, 0x6a, 0xa2, 0x69,
    -	0x03, 0x15, 0x07, 0xa4, 0xb1, 0x3d, 0xb5, 0x07, 0xdb, 0x33, 0xcb, 0xce, 0xac, 0x83, 0x6f, 0x9c,
    -	0x38, 0xf3, 0x0d, 0x38, 0xf2, 0x19, 0xf8, 0x06, 0x39, 0xf6, 0xd8, 0x93, 0x45, 0xcc, 0xb7, 0xc8,
    -	0x09, 0xcd, 0xec, 0xec, 0x9f, 0x26, 0xb1, 0x08, 0x0d, 0xa7, 0xec, 0xfb, 0xf3, 0xfb, 0xbd, 0x97,
    -	0xdf, 0xdb, 0xf7, 0xd6, 0xe0, 0xc9, 0x64, 0x57, 0x78, 0x94, 0xfb, 0x93, 0xb8, 0x4f, 0x22, 0x46,
    -	0x24, 0x11, 0xfe, 0x9c, 0xb0, 0x21, 0x8f, 0x7c, 0x13, 0xc0, 0x21, 0xf5, 0xf1, 0x70, 0x46, 0x85,
    -	0xa0, 0x9c, 0xf9, 0xf3, 0x6d, 0x7f, 0x44, 0x18, 0x89, 0xb0, 0x24, 0x43, 0x2f, 0x8c, 0xb8, 0xe4,
    -	0xf0, 0x5e, 0x92, 0xe8, 0xe1, 0x90, 0x7a, 0x59, 0xa2, 0x37, 0xdf, 0x6e, 0x3f, 0x1c, 0x51, 0x39,
    -	0x8e, 0xfb, 0xde, 0x80, 0xcf, 0xfc, 0x11, 0x1f, 0x71, 0x5f, 0xe7, 0xf7, 0xe3, 0x57, 0xda, 0xd2,
    -	0x86, 0x7e, 0x4a, 0x78, 0xda, 0x0f, 0x8a, 0x05, 0x63, 0x39, 0x26, 0x4c, 0xd2, 0x01, 0x96, 0x57,
    -	0x57, 0x6d, 0x7f, 0x9a, 0x67, 0xcf, 0xf0, 0x60, 0x4c, 0x19, 0x89, 0x16, 0x7e, 0x38, 0x19, 0x29,
    -	0x87, 0xf0, 0x67, 0x44, 0xe2, 0xab, 0x50, 0xfe, 0x3a, 0x54, 0x14, 0x33, 0x49, 0x67, 0xe4, 0x12,
    -	0xe0, 0xd1, 0xbf, 0x01, 0xc4, 0x60, 0x4c, 0x66, 0xf8, 0x22, 0x6e, 0xeb, 0x77, 0x1b, 0xb4, 0xf6,
    -	0x52, 0x31, 0x10, 0xf9, 0x29, 0x26, 0x42, 0xc2, 0x00, 0x94, 0x63, 0x3a, 0x74, 0xac, 0xae, 0xd5,
    -	0xb3, 0x83, 0x4f, 0x4e, 0x97, 0x9d, 0xd2, 0x6a, 0xd9, 0x29, 0x1f, 0x1f, 0xec, 0x9f, 0x2f, 0x3b,
    -	0x1f, 0xae, 0x2b, 0x24, 0x17, 0x21, 0x11, 0xde, 0xf1, 0xc1, 0x3e, 0x52, 0x60, 0xf8, 0x12, 0x54,
    -	0x26, 0x94, 0x0d, 0x9d, 0x5b, 0x5d, 0xab, 0xd7, 0xd8, 0x79, 0xe4, 0xe5, 0xe2, 0x67, 0x30, 0x2f,
    -	0x9c, 0x8c, 0x94, 0x43, 0x78, 0x4a, 0x06, 0x6f, 0xbe, 0xed, 0x7d, 0x15, 0xf1, 0x38, 0xfc, 0x96,
    -	0x44, 0xaa, 0x99, 0x6f, 0x28, 0x1b, 0x06, 0x9b, 0xa6, 0x78, 0x45, 0x59, 0x48, 0x33, 0xc2, 0x31,
    -	0xa8, 0x47, 0x44, 0xf0, 0x38, 0x1a, 0x10, 0xa7, 0xac, 0xd9, 0x1f, 0xff, 0x77, 0x76, 0x64, 0x18,
    -	0x82, 0x96, 0xa9, 0x50, 0x4f, 0x3d, 0x28, 0x63, 0x87, 0x9f, 0x81, 0x86, 0x88, 0xfb, 0x69, 0xc0,
    -	0xa9, 0x68, 0x3d, 0xee, 0x1a, 0x40, 0xe3, 0x79, 0x1e, 0x42, 0xc5, 0x3c, 0x48, 0x41, 0x23, 0x4a,
    -	0x94, 0x54, 0x5d, 0x3b, 0xef, 0xdd, 0x48, 0x81, 0xa6, 0x2a, 0x85, 0x72, 0x3a, 0x54, 0xe4, 0x86,
    -	0x0b, 0xd0, 0x34, 0x66, 0xd6, 0xe5, 0xed, 0x1b, 0x4b, 0x72, 0x77, 0xb5, 0xec, 0x34, 0xd1, 0xdb,
    -	0xb4, 0xe8, 0x62, 0x1d, 0xf8, 0x35, 0x80, 0xc6, 0x55, 0x10, 0xc2, 0x69, 0x6a, 0x8d, 0xda, 0x46,
    -	0x23, 0x88, 0x2e, 0x65, 0xa0, 0x2b, 0x50, 0xb0, 0x0b, 0x2a, 0x0c, 0xcf, 0x88, 0xb3, 0xa1, 0xd1,
    -	0xd9, 0xd0, 0x9f, 0xe1, 0x19, 0x41, 0x3a, 0x02, 0x7d, 0x60, 0xab, 0xbf, 0x22, 0xc4, 0x03, 0xe2,
    -	0x54, 0x75, 0xda, 0x1d, 0x93, 0x66, 0x3f, 0x4b, 0x03, 0x28, 0xcf, 0x81, 0x9f, 0x03, 0x9b, 0x87,
    -	0xea, 0x55, 0xa7, 0x9c, 0x39, 0x35, 0x0d, 0x70, 0x53, 0xc0, 0x61, 0x1a, 0x38, 0x2f, 0x1a, 0x28,
    -	0x07, 0xc0, 0x17, 0xa0, 0x1e, 0x0b, 0x12, 0x1d, 0xb0, 0x57, 0xdc, 0xa9, 0x6b, 0x41, 0x3f, 0xf2,
    -	0x8a, 0xe7, 0xe3, 0xad, 0xb5, 0x57, 0x42, 0x1e, 0x9b, 0xec, 0xfc, 0x7d, 0x4a, 0x3d, 0x28, 0x63,
    -	0x82, 0xc7, 0xa0, 0xca, 0xfb, 0x3f, 0x92, 0x81, 0x74, 0x6c, 0xcd, 0xf9, 0x70, 0xed, 0x90, 0xcc,
    -	0xd6, 0x7a, 0x08, 0x9f, 0x3c, 0xfd, 0x59, 0x12, 0xa6, 0xe6, 0x13, 0xdc, 0x36, 0xd4, 0xd5, 0x43,
    -	0x4d, 0x82, 0x0c, 0x19, 0xfc, 0x01, 0xd8, 0x7c, 0x3a, 0x4c, 0x9c, 0x0e, 0x78, 0x17, 0xe6, 0x4c,
    -	0xca, 0xc3, 0x94, 0x07, 0xe5, 0x94, 0x70, 0x0b, 0x54, 0x87, 0xd1, 0x02, 0xc5, 0xcc, 0x69, 0x74,
    -	0xad, 0x5e, 0x3d, 0x00, 0xaa, 0x87, 0x7d, 0xed, 0x41, 0x26, 0x02, 0x5f, 0x82, 0x1a, 0x0f, 0x95,
    -	0x18, 0xc2, 0xd9, 0x7c, 0x97, 0x0e, 0x9a, 0xa6, 0x83, 0xda, 0x61, 0xc2, 0x82, 0x52, 0xba, 0xad,
    -	0x3f, 0x2a, 0xe0, 0x4e, 0xe1, 0x42, 0x89, 0x90, 0x33, 0x41, 0xfe, 0x97, 0x13, 0x75, 0x1f, 0xd4,
    -	0xf0, 0x74, 0xca, 0x4f, 0x48, 0x72, 0xa5, 0xea, 0x79, 0x13, 0x7b, 0x89, 0x1b, 0xa5, 0x71, 0x78,
    -	0x04, 0xaa, 0x42, 0x62, 0x19, 0x0b, 0x73, 0x71, 0x1e, 0x5c, 0x6f, 0xbd, 0x9e, 0x6b, 0x4c, 0x22,
    -	0x18, 0x22, 0x22, 0x9e, 0x4a, 0x64, 0x78, 0x60, 0x07, 0x6c, 0x84, 0x58, 0x0e, 0xc6, 0xfa, 0xaa,
    -	0x6c, 0x06, 0xf6, 0x6a, 0xd9, 0xd9, 0x38, 0x52, 0x0e, 0x94, 0xf8, 0xe1, 0x2e, 0xb0, 0xf5, 0xc3,
    -	0x8b, 0x45, 0x98, 0x2e, 0x46, 0x5b, 0x8d, 0xe8, 0x28, 0x75, 0x9e, 0x17, 0x0d, 0x94, 0x27, 0xc3,
    -	0x5f, 0x2d, 0xd0, 0xc2, 0xf1, 0x90, 0xca, 0x3d, 0xc6, 0xb8, 0xc4, 0xc9, 0x54, 0xaa, 0xdd, 0x72,
    -	0xaf, 0xb1, 0xf3, 0xc4, 0x5b, 0xf3, 0x11, 0xf4, 0x2e, 0x49, 0xec, 0xed, 0x5d, 0xa0, 0x78, 0xca,
    -	0x64, 0xb4, 0x08, 0x1c, 0xa3, 0x51, 0xeb, 0x62, 0x18, 0x5d, 0xaa, 0x09, 0x7b, 0xa0, 0x7e, 0x82,
    -	0x23, 0x46, 0xd9, 0x48, 0x38, 0xb5, 0x6e, 0x59, 0xad, 0xb6, 0xda, 0x8c, 0xef, 0x8c, 0x0f, 0x65,
    -	0xd1, 0xf6, 0x97, 0xe0, 0x83, 0x2b, 0xcb, 0xc1, 0x16, 0x28, 0x4f, 0xc8, 0x22, 0x99, 0x33, 0x52,
    -	0x8f, 0xf0, 0x7d, 0xb0, 0x31, 0xc7, 0xd3, 0x98, 0xe8, 0x99, 0xd9, 0x28, 0x31, 0x1e, 0xdf, 0xda,
    -	0xb5, 0xb6, 0xfe, 0xb4, 0x40, 0xb3, 0xf0, 0x6f, 0xcc, 0x29, 0x39, 0x81, 0x47, 0xa0, 0x66, 0xee,
    -	0x8d, 0xe6, 0x68, 0xec, 0xdc, 0xbf, 0x8e, 0x02, 0x1a, 0x10, 0x34, 0xd4, 0xab, 0x90, 0xde, 0xc1,
    -	0x94, 0x46, 0x9d, 0x86, 0xc8, 0x48, 0x64, 0x3e, 0x6e, 0x1f, 0x5f, 0x5f, 0xd4, 0x44, 0x80, 0xd4,
    -	0x42, 0x19, 0x53, 0xf0, 0xc5, 0xe9, 0x99, 0x5b, 0x7a, 0x7d, 0xe6, 0x96, 0xde, 0x9c, 0xb9, 0xa5,
    -	0x5f, 0x56, 0xae, 0x75, 0xba, 0x72, 0xad, 0xd7, 0x2b, 0xd7, 0x7a, 0xb3, 0x72, 0xad, 0xbf, 0x56,
    -	0xae, 0xf5, 0xdb, 0xdf, 0x6e, 0xe9, 0xfb, 0x7b, 0x6b, 0x7e, 0xeb, 0xfc, 0x13, 0x00, 0x00, 0xff,
    -	0xff, 0x5e, 0xe0, 0xad, 0x0d, 0x1e, 0x09, 0x00, 0x00,
    +	0x14, 0xf7, 0xd6, 0x8e, 0xed, 0x1d, 0x87, 0xda, 0x9d, 0x82, 0xba, 0xf2, 0x61, 0x6d, 0x72, 0x00,
    +	0x17, 0xb5, 0xbb, 0x24, 0x82, 0x2a, 0xaa, 0x40, 0x22, 0x4b, 0x2a, 0x14, 0x90, 0x9a, 0x68, 0xda,
    +	0x40, 0xc5, 0x01, 0x69, 0x62, 0x4f, 0xed, 0xc1, 0xf6, 0xcc, 0xb2, 0x33, 0xeb, 0xe0, 0x1b, 0x27,
    +	0xce, 0x7c, 0x03, 0x8e, 0x7c, 0x06, 0xbe, 0x41, 0x8e, 0x3d, 0xf6, 0x64, 0x11, 0xf3, 0x2d, 0x72,
    +	0x42, 0x33, 0x3b, 0xfb, 0xa7, 0x89, 0x2d, 0x42, 0xc3, 0x29, 0xfb, 0xfe, 0xfc, 0x7e, 0xef, 0xe5,
    +	0xf7, 0xf6, 0xbd, 0x35, 0xf8, 0x70, 0xbc, 0x2b, 0x3c, 0xca, 0x7d, 0x1c, 0x52, 0x1f, 0x0f, 0xa6,
    +	0x54, 0x08, 0xca, 0x99, 0x3f, 0xdb, 0xf6, 0x87, 0x84, 0x91, 0x08, 0x4b, 0x32, 0xf0, 0xc2, 0x88,
    +	0x4b, 0x0e, 0xef, 0x25, 0x89, 0x1e, 0x0e, 0xa9, 0x97, 0x25, 0x7a, 0xb3, 0xed, 0xf6, 0xc3, 0x21,
    +	0x95, 0xa3, 0xf8, 0xc4, 0xeb, 0xf3, 0xa9, 0x3f, 0xe4, 0x43, 0xee, 0xeb, 0xfc, 0x93, 0xf8, 0xa5,
    +	0xb6, 0xb4, 0xa1, 0x9f, 0x12, 0x9e, 0xf6, 0x83, 0x62, 0xc1, 0x58, 0x8e, 0x08, 0x93, 0xb4, 0x8f,
    +	0xe5, 0xea, 0xaa, 0xed, 0x4f, 0xf2, 0xec, 0x29, 0xee, 0x8f, 0x28, 0x23, 0xd1, 0xdc, 0x0f, 0xc7,
    +	0x43, 0xe5, 0x10, 0xfe, 0x94, 0x48, 0xbc, 0x0a, 0xe5, 0xaf, 0x43, 0x45, 0x31, 0x93, 0x74, 0x4a,
    +	0xae, 0x00, 0x1e, 0xfd, 0x1b, 0x40, 0xf4, 0x47, 0x64, 0x8a, 0x2f, 0xe3, 0xb6, 0x7e, 0xb7, 0x41,
    +	0x6b, 0x2f, 0x15, 0x03, 0x91, 0x9f, 0x62, 0x22, 0x24, 0x0c, 0x40, 0x39, 0xa6, 0x03, 0xc7, 0xea,
    +	0x5a, 0x3d, 0x3b, 0xf8, 0xf8, 0x6c, 0xd1, 0x29, 0x2d, 0x17, 0x9d, 0xf2, 0xf1, 0xc1, 0xfe, 0xc5,
    +	0xa2, 0xf3, 0xfe, 0xba, 0x42, 0x72, 0x1e, 0x12, 0xe1, 0x1d, 0x1f, 0xec, 0x23, 0x05, 0x86, 0x2f,
    +	0x40, 0x65, 0x4c, 0xd9, 0xc0, 0xb9, 0xd5, 0xb5, 0x7a, 0x8d, 0x9d, 0x47, 0x5e, 0x2e, 0x7e, 0x06,
    +	0xf3, 0xc2, 0xf1, 0x50, 0x39, 0x84, 0xa7, 0x64, 0xf0, 0x66, 0xdb, 0xde, 0x57, 0x11, 0x8f, 0xc3,
    +	0x6f, 0x49, 0xa4, 0x9a, 0xf9, 0x86, 0xb2, 0x41, 0xb0, 0x69, 0x8a, 0x57, 0x94, 0x85, 0x34, 0x23,
    +	0x1c, 0x81, 0x7a, 0x44, 0x04, 0x8f, 0xa3, 0x3e, 0x71, 0xca, 0x9a, 0xfd, 0xf1, 0x7f, 0x67, 0x47,
    +	0x86, 0x21, 0x68, 0x99, 0x0a, 0xf5, 0xd4, 0x83, 0x32, 0x76, 0xf8, 0x29, 0x68, 0x88, 0xf8, 0x24,
    +	0x0d, 0x38, 0x15, 0xad, 0xc7, 0x5d, 0x03, 0x68, 0x3c, 0xcb, 0x43, 0xa8, 0x98, 0x07, 0x29, 0x68,
    +	0x44, 0x89, 0x92, 0xaa, 0x6b, 0xe7, 0x9d, 0x1b, 0x29, 0xd0, 0x54, 0xa5, 0x50, 0x4e, 0x87, 0x8a,
    +	0xdc, 0x70, 0x0e, 0x9a, 0xc6, 0xcc, 0xba, 0xbc, 0x7d, 0x63, 0x49, 0xee, 0x2e, 0x17, 0x9d, 0x26,
    +	0x7a, 0x93, 0x16, 0x5d, 0xae, 0x03, 0xbf, 0x06, 0xd0, 0xb8, 0x0a, 0x42, 0x38, 0x4d, 0xad, 0x51,
    +	0xdb, 0x68, 0x04, 0xd1, 0x95, 0x0c, 0xb4, 0x02, 0x05, 0xbb, 0xa0, 0xc2, 0xf0, 0x94, 0x38, 0x1b,
    +	0x1a, 0x9d, 0x0d, 0xfd, 0x29, 0x9e, 0x12, 0xa4, 0x23, 0xd0, 0x07, 0xb6, 0xfa, 0x2b, 0x42, 0xdc,
    +	0x27, 0x4e, 0x55, 0xa7, 0xdd, 0x31, 0x69, 0xf6, 0xd3, 0x34, 0x80, 0xf2, 0x1c, 0xf8, 0x19, 0xb0,
    +	0x79, 0xa8, 0x5e, 0x75, 0xca, 0x99, 0x53, 0xd3, 0x00, 0x37, 0x05, 0x1c, 0xa6, 0x81, 0x8b, 0xa2,
    +	0x81, 0x72, 0x00, 0x7c, 0x0e, 0xea, 0xb1, 0x20, 0xd1, 0x01, 0x7b, 0xc9, 0x9d, 0xba, 0x16, 0xf4,
    +	0x03, 0xaf, 0x78, 0x3e, 0xde, 0x58, 0x7b, 0x25, 0xe4, 0xb1, 0xc9, 0xce, 0xdf, 0xa7, 0xd4, 0x83,
    +	0x32, 0x26, 0x78, 0x0c, 0xaa, 0xfc, 0xe4, 0x47, 0xd2, 0x97, 0x8e, 0xad, 0x39, 0x1f, 0xae, 0x1d,
    +	0x92, 0xd9, 0x5a, 0x0f, 0xe1, 0xd3, 0x27, 0x3f, 0x4b, 0xc2, 0xd4, 0x7c, 0x82, 0xdb, 0x86, 0xba,
    +	0x7a, 0xa8, 0x49, 0x90, 0x21, 0x83, 0x3f, 0x00, 0x9b, 0x4f, 0x06, 0x89, 0xd3, 0x01, 0x6f, 0xc3,
    +	0x9c, 0x49, 0x79, 0x98, 0xf2, 0xa0, 0x9c, 0x12, 0x6e, 0x81, 0xea, 0x20, 0x9a, 0xa3, 0x98, 0x39,
    +	0x8d, 0xae, 0xd5, 0xab, 0x07, 0x40, 0xf5, 0xb0, 0xaf, 0x3d, 0xc8, 0x44, 0xe0, 0x0b, 0x50, 0xe3,
    +	0xa1, 0x12, 0x43, 0x38, 0x9b, 0x6f, 0xd3, 0x41, 0xd3, 0x74, 0x50, 0x3b, 0x4c, 0x58, 0x50, 0x4a,
    +	0xb7, 0xf5, 0x47, 0x05, 0xdc, 0x29, 0x5c, 0x28, 0x11, 0x72, 0x26, 0xc8, 0xff, 0x72, 0xa2, 0xee,
    +	0x83, 0x1a, 0x9e, 0x4c, 0xf8, 0x29, 0x49, 0xae, 0x54, 0x3d, 0x6f, 0x62, 0x2f, 0x71, 0xa3, 0x34,
    +	0x0e, 0x8f, 0x40, 0x55, 0x48, 0x2c, 0x63, 0x61, 0x2e, 0xce, 0x83, 0xeb, 0xad, 0xd7, 0x33, 0x8d,
    +	0x49, 0x04, 0x43, 0x44, 0xc4, 0x13, 0x89, 0x0c, 0x0f, 0xec, 0x80, 0x8d, 0x10, 0xcb, 0xfe, 0x48,
    +	0x5f, 0x95, 0xcd, 0xc0, 0x5e, 0x2e, 0x3a, 0x1b, 0x47, 0xca, 0x81, 0x12, 0x3f, 0xdc, 0x05, 0xb6,
    +	0x7e, 0x78, 0x3e, 0x0f, 0xd3, 0xc5, 0x68, 0xab, 0x11, 0x1d, 0xa5, 0xce, 0x8b, 0xa2, 0x81, 0xf2,
    +	0x64, 0xf8, 0xab, 0x05, 0x5a, 0x38, 0x1e, 0x50, 0xb9, 0xc7, 0x18, 0x97, 0x38, 0x99, 0x4a, 0xb5,
    +	0x5b, 0xee, 0x35, 0x76, 0xbe, 0xf0, 0xd6, 0x7c, 0x04, 0xbd, 0x2b, 0x12, 0x7b, 0x7b, 0x97, 0x28,
    +	0x9e, 0x30, 0x19, 0xcd, 0x03, 0xc7, 0x68, 0xd4, 0xba, 0x1c, 0x46, 0x57, 0x6a, 0xc2, 0x1e, 0xa8,
    +	0x9f, 0xe2, 0x88, 0x51, 0x36, 0x14, 0x4e, 0xad, 0x5b, 0x56, 0xab, 0xad, 0x36, 0xe3, 0x3b, 0xe3,
    +	0x43, 0x59, 0xb4, 0xfd, 0x25, 0x78, 0x6f, 0x65, 0x39, 0xd8, 0x02, 0xe5, 0x31, 0x99, 0x27, 0x73,
    +	0x46, 0xea, 0x11, 0xbe, 0x0b, 0x36, 0x66, 0x78, 0x12, 0x13, 0x3d, 0x33, 0x1b, 0x25, 0xc6, 0xe3,
    +	0x5b, 0xbb, 0xd6, 0xd6, 0x9f, 0x16, 0x68, 0x16, 0xfe, 0x8d, 0x19, 0x25, 0xa7, 0xf0, 0x08, 0xd4,
    +	0xcc, 0xbd, 0xd1, 0x1c, 0x8d, 0x9d, 0xfb, 0xd7, 0x51, 0x40, 0x03, 0x82, 0x86, 0x7a, 0x15, 0xd2,
    +	0x3b, 0x98, 0xd2, 0xa8, 0xd3, 0x10, 0x19, 0x89, 0xcc, 0xc7, 0xed, 0xa3, 0xeb, 0x8b, 0x9a, 0x08,
    +	0x90, 0x5a, 0x28, 0x63, 0x0a, 0x3e, 0x3f, 0x3b, 0x77, 0x4b, 0xaf, 0xce, 0xdd, 0xd2, 0xeb, 0x73,
    +	0xb7, 0xf4, 0xcb, 0xd2, 0xb5, 0xce, 0x96, 0xae, 0xf5, 0x6a, 0xe9, 0x5a, 0xaf, 0x97, 0xae, 0xf5,
    +	0xd7, 0xd2, 0xb5, 0x7e, 0xfb, 0xdb, 0x2d, 0x7d, 0x7f, 0x6f, 0xcd, 0x6f, 0x9d, 0x7f, 0x02, 0x00,
    +	0x00, 0xff, 0xff, 0x5c, 0x49, 0x23, 0x22, 0x05, 0x09, 0x00, 0x00,
     }
     
     func (m *AdmissionRequest) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/admission/v1/generated.proto b/vendor/k8s.io/api/admission/v1/generated.proto
    index 941deb4fb4bf..9648aa58fbc3 100644
    --- a/vendor/k8s.io/api/admission/v1/generated.proto
    +++ b/vendor/k8s.io/api/admission/v1/generated.proto
    @@ -38,10 +38,10 @@ message AdmissionRequest {
       optional string uid = 1;
     
       // Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;
     
       // Resource is the fully-qualified resource being requested (for example, v1.pods)
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;
     
       // SubResource is the subresource being requested, if any (for example, "status" or "scale")
       // +optional
    @@ -58,7 +58,7 @@ message AdmissionRequest {
       //
       // See documentation for the "matchPolicy" field in the webhook configuration type for more details.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;
     
       // RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
       // If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
    @@ -71,7 +71,7 @@ message AdmissionRequest {
       //
       // See documentation for the "matchPolicy" field in the webhook configuration type.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;
     
       // RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
       // If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
    @@ -93,15 +93,15 @@ message AdmissionRequest {
       optional string operation = 7;
     
       // UserInfo is information about the requesting user
    -  optional k8s.io.api.authentication.v1.UserInfo userInfo = 8;
    +  optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;
     
       // Object is the object from the incoming request.
       // +optional
    -  optional k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;
     
       // OldObject is the existing object. Only populated for DELETE and UPDATE requests.
       // +optional
    -  optional k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;
     
       // DryRun indicates that modifications will definitely not be persisted for this request.
       // Defaults to false.
    @@ -114,7 +114,7 @@ message AdmissionRequest {
       // Operation might be a CREATE, in which case the Options will a
       // `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
       // +optional
    -  optional k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;
     }
     
     // AdmissionResponse describes an admission response.
    @@ -129,7 +129,7 @@ message AdmissionResponse {
       // Result contains extra details into why an admission request was denied.
       // This field IS NOT consulted in any way if "Allowed" is "true".
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;
     
       // The patch body. Currently we only support "JSONPatch" which implements RFC 6902.
       // +optional
    diff --git a/vendor/k8s.io/api/admission/v1/types.go b/vendor/k8s.io/api/admission/v1/types.go
    index 556fd1ad54d5..2def92da5b39 100644
    --- a/vendor/k8s.io/api/admission/v1/types.go
    +++ b/vendor/k8s.io/api/admission/v1/types.go
    @@ -24,6 +24,7 @@ import (
     )
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // AdmissionReview describes an admission review request/response.
     type AdmissionReview struct {
    diff --git a/vendor/k8s.io/api/admission/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/admission/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..ac81d993c603
    --- /dev/null
    +++ b/vendor/k8s.io/api/admission/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,28 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *AdmissionReview) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    diff --git a/vendor/k8s.io/api/admissionregistration/v1/doc.go b/vendor/k8s.io/api/admissionregistration/v1/doc.go
    index c3940f090c8c..ca0086188a3d 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1/doc.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1/doc.go
    @@ -17,6 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=admissionregistration.k8s.io
     
     // Package v1 is the v1 version of the API.
    diff --git a/vendor/k8s.io/api/admissionregistration/v1/generated.pb.go b/vendor/k8s.io/api/admissionregistration/v1/generated.pb.go
    index 9a2d0bccdda5..09295734dfe3 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1/generated.proto
    +// source: k8s.io/api/admissionregistration/v1/generated.proto
     
     package v1
     
    @@ -25,6 +25,7 @@ import (
     	io "io"
     
     	proto "github.com/gogo/protobuf/proto"
    +	k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     
     	math "math"
    @@ -44,10 +45,66 @@ var _ = math.Inf
     // proto package needs to be updated.
     const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     
    +func (m *AuditAnnotation) Reset()      { *m = AuditAnnotation{} }
    +func (*AuditAnnotation) ProtoMessage() {}
    +func (*AuditAnnotation) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{0}
    +}
    +func (m *AuditAnnotation) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *AuditAnnotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *AuditAnnotation) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_AuditAnnotation.Merge(m, src)
    +}
    +func (m *AuditAnnotation) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *AuditAnnotation) XXX_DiscardUnknown() {
    +	xxx_messageInfo_AuditAnnotation.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_AuditAnnotation proto.InternalMessageInfo
    +
    +func (m *ExpressionWarning) Reset()      { *m = ExpressionWarning{} }
    +func (*ExpressionWarning) ProtoMessage() {}
    +func (*ExpressionWarning) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{1}
    +}
    +func (m *ExpressionWarning) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ExpressionWarning) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ExpressionWarning) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ExpressionWarning.Merge(m, src)
    +}
    +func (m *ExpressionWarning) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ExpressionWarning) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ExpressionWarning.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ExpressionWarning proto.InternalMessageInfo
    +
     func (m *MatchCondition) Reset()      { *m = MatchCondition{} }
     func (*MatchCondition) ProtoMessage() {}
     func (*MatchCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{0}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{2}
     }
     func (m *MatchCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -72,10 +129,38 @@ func (m *MatchCondition) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_MatchCondition proto.InternalMessageInfo
     
    +func (m *MatchResources) Reset()      { *m = MatchResources{} }
    +func (*MatchResources) ProtoMessage() {}
    +func (*MatchResources) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{3}
    +}
    +func (m *MatchResources) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MatchResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MatchResources) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MatchResources.Merge(m, src)
    +}
    +func (m *MatchResources) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MatchResources) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MatchResources.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MatchResources proto.InternalMessageInfo
    +
     func (m *MutatingWebhook) Reset()      { *m = MutatingWebhook{} }
     func (*MutatingWebhook) ProtoMessage() {}
     func (*MutatingWebhook) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{1}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{4}
     }
     func (m *MutatingWebhook) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +188,7 @@ var xxx_messageInfo_MutatingWebhook proto.InternalMessageInfo
     func (m *MutatingWebhookConfiguration) Reset()      { *m = MutatingWebhookConfiguration{} }
     func (*MutatingWebhookConfiguration) ProtoMessage() {}
     func (*MutatingWebhookConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{2}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{5}
     }
     func (m *MutatingWebhookConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -131,7 +216,7 @@ var xxx_messageInfo_MutatingWebhookConfiguration proto.InternalMessageInfo
     func (m *MutatingWebhookConfigurationList) Reset()      { *m = MutatingWebhookConfigurationList{} }
     func (*MutatingWebhookConfigurationList) ProtoMessage() {}
     func (*MutatingWebhookConfigurationList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{3}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{6}
     }
     func (m *MutatingWebhookConfigurationList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -156,10 +241,94 @@ func (m *MutatingWebhookConfigurationList) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_MutatingWebhookConfigurationList proto.InternalMessageInfo
     
    +func (m *NamedRuleWithOperations) Reset()      { *m = NamedRuleWithOperations{} }
    +func (*NamedRuleWithOperations) ProtoMessage() {}
    +func (*NamedRuleWithOperations) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{7}
    +}
    +func (m *NamedRuleWithOperations) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *NamedRuleWithOperations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *NamedRuleWithOperations) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_NamedRuleWithOperations.Merge(m, src)
    +}
    +func (m *NamedRuleWithOperations) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *NamedRuleWithOperations) XXX_DiscardUnknown() {
    +	xxx_messageInfo_NamedRuleWithOperations.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_NamedRuleWithOperations proto.InternalMessageInfo
    +
    +func (m *ParamKind) Reset()      { *m = ParamKind{} }
    +func (*ParamKind) ProtoMessage() {}
    +func (*ParamKind) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{8}
    +}
    +func (m *ParamKind) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ParamKind) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ParamKind) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ParamKind.Merge(m, src)
    +}
    +func (m *ParamKind) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ParamKind) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ParamKind.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ParamKind proto.InternalMessageInfo
    +
    +func (m *ParamRef) Reset()      { *m = ParamRef{} }
    +func (*ParamRef) ProtoMessage() {}
    +func (*ParamRef) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{9}
    +}
    +func (m *ParamRef) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ParamRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ParamRef) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ParamRef.Merge(m, src)
    +}
    +func (m *ParamRef) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ParamRef) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ParamRef.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ParamRef proto.InternalMessageInfo
    +
     func (m *Rule) Reset()      { *m = Rule{} }
     func (*Rule) ProtoMessage() {}
     func (*Rule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{4}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{10}
     }
     func (m *Rule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -187,7 +356,7 @@ var xxx_messageInfo_Rule proto.InternalMessageInfo
     func (m *RuleWithOperations) Reset()      { *m = RuleWithOperations{} }
     func (*RuleWithOperations) ProtoMessage() {}
     func (*RuleWithOperations) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{5}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{11}
     }
     func (m *RuleWithOperations) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -215,7 +384,7 @@ var xxx_messageInfo_RuleWithOperations proto.InternalMessageInfo
     func (m *ServiceReference) Reset()      { *m = ServiceReference{} }
     func (*ServiceReference) ProtoMessage() {}
     func (*ServiceReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{6}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{12}
     }
     func (m *ServiceReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -240,10 +409,234 @@ func (m *ServiceReference) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ServiceReference proto.InternalMessageInfo
     
    +func (m *TypeChecking) Reset()      { *m = TypeChecking{} }
    +func (*TypeChecking) ProtoMessage() {}
    +func (*TypeChecking) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{13}
    +}
    +func (m *TypeChecking) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *TypeChecking) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *TypeChecking) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_TypeChecking.Merge(m, src)
    +}
    +func (m *TypeChecking) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *TypeChecking) XXX_DiscardUnknown() {
    +	xxx_messageInfo_TypeChecking.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_TypeChecking proto.InternalMessageInfo
    +
    +func (m *ValidatingAdmissionPolicy) Reset()      { *m = ValidatingAdmissionPolicy{} }
    +func (*ValidatingAdmissionPolicy) ProtoMessage() {}
    +func (*ValidatingAdmissionPolicy) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{14}
    +}
    +func (m *ValidatingAdmissionPolicy) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ValidatingAdmissionPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ValidatingAdmissionPolicy) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ValidatingAdmissionPolicy.Merge(m, src)
    +}
    +func (m *ValidatingAdmissionPolicy) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ValidatingAdmissionPolicy) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ValidatingAdmissionPolicy.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ValidatingAdmissionPolicy proto.InternalMessageInfo
    +
    +func (m *ValidatingAdmissionPolicyBinding) Reset()      { *m = ValidatingAdmissionPolicyBinding{} }
    +func (*ValidatingAdmissionPolicyBinding) ProtoMessage() {}
    +func (*ValidatingAdmissionPolicyBinding) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{15}
    +}
    +func (m *ValidatingAdmissionPolicyBinding) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ValidatingAdmissionPolicyBinding) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ValidatingAdmissionPolicyBinding) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ValidatingAdmissionPolicyBinding.Merge(m, src)
    +}
    +func (m *ValidatingAdmissionPolicyBinding) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ValidatingAdmissionPolicyBinding) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ValidatingAdmissionPolicyBinding.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ValidatingAdmissionPolicyBinding proto.InternalMessageInfo
    +
    +func (m *ValidatingAdmissionPolicyBindingList) Reset()      { *m = ValidatingAdmissionPolicyBindingList{} }
    +func (*ValidatingAdmissionPolicyBindingList) ProtoMessage() {}
    +func (*ValidatingAdmissionPolicyBindingList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{16}
    +}
    +func (m *ValidatingAdmissionPolicyBindingList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ValidatingAdmissionPolicyBindingList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ValidatingAdmissionPolicyBindingList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ValidatingAdmissionPolicyBindingList.Merge(m, src)
    +}
    +func (m *ValidatingAdmissionPolicyBindingList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ValidatingAdmissionPolicyBindingList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ValidatingAdmissionPolicyBindingList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ValidatingAdmissionPolicyBindingList proto.InternalMessageInfo
    +
    +func (m *ValidatingAdmissionPolicyBindingSpec) Reset()      { *m = ValidatingAdmissionPolicyBindingSpec{} }
    +func (*ValidatingAdmissionPolicyBindingSpec) ProtoMessage() {}
    +func (*ValidatingAdmissionPolicyBindingSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{17}
    +}
    +func (m *ValidatingAdmissionPolicyBindingSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ValidatingAdmissionPolicyBindingSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ValidatingAdmissionPolicyBindingSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ValidatingAdmissionPolicyBindingSpec.Merge(m, src)
    +}
    +func (m *ValidatingAdmissionPolicyBindingSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ValidatingAdmissionPolicyBindingSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ValidatingAdmissionPolicyBindingSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ValidatingAdmissionPolicyBindingSpec proto.InternalMessageInfo
    +
    +func (m *ValidatingAdmissionPolicyList) Reset()      { *m = ValidatingAdmissionPolicyList{} }
    +func (*ValidatingAdmissionPolicyList) ProtoMessage() {}
    +func (*ValidatingAdmissionPolicyList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{18}
    +}
    +func (m *ValidatingAdmissionPolicyList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ValidatingAdmissionPolicyList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ValidatingAdmissionPolicyList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ValidatingAdmissionPolicyList.Merge(m, src)
    +}
    +func (m *ValidatingAdmissionPolicyList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ValidatingAdmissionPolicyList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ValidatingAdmissionPolicyList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ValidatingAdmissionPolicyList proto.InternalMessageInfo
    +
    +func (m *ValidatingAdmissionPolicySpec) Reset()      { *m = ValidatingAdmissionPolicySpec{} }
    +func (*ValidatingAdmissionPolicySpec) ProtoMessage() {}
    +func (*ValidatingAdmissionPolicySpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{19}
    +}
    +func (m *ValidatingAdmissionPolicySpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ValidatingAdmissionPolicySpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ValidatingAdmissionPolicySpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ValidatingAdmissionPolicySpec.Merge(m, src)
    +}
    +func (m *ValidatingAdmissionPolicySpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ValidatingAdmissionPolicySpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ValidatingAdmissionPolicySpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ValidatingAdmissionPolicySpec proto.InternalMessageInfo
    +
    +func (m *ValidatingAdmissionPolicyStatus) Reset()      { *m = ValidatingAdmissionPolicyStatus{} }
    +func (*ValidatingAdmissionPolicyStatus) ProtoMessage() {}
    +func (*ValidatingAdmissionPolicyStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{20}
    +}
    +func (m *ValidatingAdmissionPolicyStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ValidatingAdmissionPolicyStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ValidatingAdmissionPolicyStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ValidatingAdmissionPolicyStatus.Merge(m, src)
    +}
    +func (m *ValidatingAdmissionPolicyStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ValidatingAdmissionPolicyStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ValidatingAdmissionPolicyStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ValidatingAdmissionPolicyStatus proto.InternalMessageInfo
    +
     func (m *ValidatingWebhook) Reset()      { *m = ValidatingWebhook{} }
     func (*ValidatingWebhook) ProtoMessage() {}
     func (*ValidatingWebhook) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{7}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{21}
     }
     func (m *ValidatingWebhook) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -271,7 +664,7 @@ var xxx_messageInfo_ValidatingWebhook proto.InternalMessageInfo
     func (m *ValidatingWebhookConfiguration) Reset()      { *m = ValidatingWebhookConfiguration{} }
     func (*ValidatingWebhookConfiguration) ProtoMessage() {}
     func (*ValidatingWebhookConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{8}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{22}
     }
     func (m *ValidatingWebhookConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -299,7 +692,7 @@ var xxx_messageInfo_ValidatingWebhookConfiguration proto.InternalMessageInfo
     func (m *ValidatingWebhookConfigurationList) Reset()      { *m = ValidatingWebhookConfigurationList{} }
     func (*ValidatingWebhookConfigurationList) ProtoMessage() {}
     func (*ValidatingWebhookConfigurationList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{9}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{23}
     }
     func (m *ValidatingWebhookConfigurationList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -324,10 +717,66 @@ func (m *ValidatingWebhookConfigurationList) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ValidatingWebhookConfigurationList proto.InternalMessageInfo
     
    +func (m *Validation) Reset()      { *m = Validation{} }
    +func (*Validation) ProtoMessage() {}
    +func (*Validation) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{24}
    +}
    +func (m *Validation) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *Validation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *Validation) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_Validation.Merge(m, src)
    +}
    +func (m *Validation) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *Validation) XXX_DiscardUnknown() {
    +	xxx_messageInfo_Validation.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_Validation proto.InternalMessageInfo
    +
    +func (m *Variable) Reset()      { *m = Variable{} }
    +func (*Variable) ProtoMessage() {}
    +func (*Variable) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{25}
    +}
    +func (m *Variable) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *Variable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *Variable) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_Variable.Merge(m, src)
    +}
    +func (m *Variable) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *Variable) XXX_DiscardUnknown() {
    +	xxx_messageInfo_Variable.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_Variable proto.InternalMessageInfo
    +
     func (m *WebhookClientConfig) Reset()      { *m = WebhookClientConfig{} }
     func (*WebhookClientConfig) ProtoMessage() {}
     func (*WebhookClientConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_aaac5994f79683e8, []int{10}
    +	return fileDescriptor_3205c7dc5bf0c9bf, []int{26}
     }
     func (m *WebhookClientConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -353,99 +802,237 @@ func (m *WebhookClientConfig) XXX_DiscardUnknown() {
     var xxx_messageInfo_WebhookClientConfig proto.InternalMessageInfo
     
     func init() {
    +	proto.RegisterType((*AuditAnnotation)(nil), "k8s.io.api.admissionregistration.v1.AuditAnnotation")
    +	proto.RegisterType((*ExpressionWarning)(nil), "k8s.io.api.admissionregistration.v1.ExpressionWarning")
     	proto.RegisterType((*MatchCondition)(nil), "k8s.io.api.admissionregistration.v1.MatchCondition")
    +	proto.RegisterType((*MatchResources)(nil), "k8s.io.api.admissionregistration.v1.MatchResources")
     	proto.RegisterType((*MutatingWebhook)(nil), "k8s.io.api.admissionregistration.v1.MutatingWebhook")
     	proto.RegisterType((*MutatingWebhookConfiguration)(nil), "k8s.io.api.admissionregistration.v1.MutatingWebhookConfiguration")
     	proto.RegisterType((*MutatingWebhookConfigurationList)(nil), "k8s.io.api.admissionregistration.v1.MutatingWebhookConfigurationList")
    +	proto.RegisterType((*NamedRuleWithOperations)(nil), "k8s.io.api.admissionregistration.v1.NamedRuleWithOperations")
    +	proto.RegisterType((*ParamKind)(nil), "k8s.io.api.admissionregistration.v1.ParamKind")
    +	proto.RegisterType((*ParamRef)(nil), "k8s.io.api.admissionregistration.v1.ParamRef")
     	proto.RegisterType((*Rule)(nil), "k8s.io.api.admissionregistration.v1.Rule")
     	proto.RegisterType((*RuleWithOperations)(nil), "k8s.io.api.admissionregistration.v1.RuleWithOperations")
     	proto.RegisterType((*ServiceReference)(nil), "k8s.io.api.admissionregistration.v1.ServiceReference")
    +	proto.RegisterType((*TypeChecking)(nil), "k8s.io.api.admissionregistration.v1.TypeChecking")
    +	proto.RegisterType((*ValidatingAdmissionPolicy)(nil), "k8s.io.api.admissionregistration.v1.ValidatingAdmissionPolicy")
    +	proto.RegisterType((*ValidatingAdmissionPolicyBinding)(nil), "k8s.io.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding")
    +	proto.RegisterType((*ValidatingAdmissionPolicyBindingList)(nil), "k8s.io.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingList")
    +	proto.RegisterType((*ValidatingAdmissionPolicyBindingSpec)(nil), "k8s.io.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingSpec")
    +	proto.RegisterType((*ValidatingAdmissionPolicyList)(nil), "k8s.io.api.admissionregistration.v1.ValidatingAdmissionPolicyList")
    +	proto.RegisterType((*ValidatingAdmissionPolicySpec)(nil), "k8s.io.api.admissionregistration.v1.ValidatingAdmissionPolicySpec")
    +	proto.RegisterType((*ValidatingAdmissionPolicyStatus)(nil), "k8s.io.api.admissionregistration.v1.ValidatingAdmissionPolicyStatus")
     	proto.RegisterType((*ValidatingWebhook)(nil), "k8s.io.api.admissionregistration.v1.ValidatingWebhook")
     	proto.RegisterType((*ValidatingWebhookConfiguration)(nil), "k8s.io.api.admissionregistration.v1.ValidatingWebhookConfiguration")
     	proto.RegisterType((*ValidatingWebhookConfigurationList)(nil), "k8s.io.api.admissionregistration.v1.ValidatingWebhookConfigurationList")
    +	proto.RegisterType((*Validation)(nil), "k8s.io.api.admissionregistration.v1.Validation")
    +	proto.RegisterType((*Variable)(nil), "k8s.io.api.admissionregistration.v1.Variable")
     	proto.RegisterType((*WebhookClientConfig)(nil), "k8s.io.api.admissionregistration.v1.WebhookClientConfig")
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1/generated.proto", fileDescriptor_aaac5994f79683e8)
    -}
    -
    -var fileDescriptor_aaac5994f79683e8 = []byte{
    -	// 1169 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x4d, 0x6f, 0x1b, 0x45,
    -	0x18, 0xce, 0xc6, 0x36, 0xb1, 0xc7, 0x4e, 0xd2, 0x0c, 0xd0, 0x2e, 0xa5, 0xf2, 0x5a, 0xae, 0x84,
    -	0x82, 0x00, 0x6f, 0x9b, 0x96, 0x52, 0x71, 0x41, 0xb1, 0x29, 0x28, 0x22, 0x69, 0xa3, 0x49, 0x3f,
    -	0x10, 0xea, 0xa1, 0xe3, 0xf5, 0xd8, 0x1e, 0x62, 0xef, 0xac, 0x66, 0x66, 0x4d, 0x7b, 0xe3, 0x27,
    -	0xf0, 0x17, 0xe0, 0x4f, 0xc0, 0x95, 0x5b, 0x8f, 0xbd, 0x91, 0x03, 0x5a, 0x91, 0xe5, 0xc2, 0x81,
    -	0x5f, 0x90, 0x13, 0x9a, 0xd9, 0xf5, 0xae, 0xbf, 0x12, 0x56, 0x39, 0xe4, 0x94, 0x5b, 0xe6, 0x79,
    -	0xdf, 0xf7, 0x79, 0xe7, 0x19, 0xbf, 0x1f, 0xab, 0x80, 0xdd, 0xc3, 0xfb, 0xa2, 0x41, 0x99, 0x7d,
    -	0xe8, 0xb7, 0x09, 0x77, 0x89, 0x24, 0xc2, 0x1e, 0x11, 0xb7, 0xc3, 0xb8, 0x1d, 0x1b, 0xb0, 0x47,
    -	0x6d, 0xdc, 0x19, 0x52, 0x21, 0x28, 0x73, 0x39, 0xe9, 0x51, 0x21, 0x39, 0x96, 0x94, 0xb9, 0xf6,
    -	0xe8, 0xb6, 0xdd, 0x23, 0x2e, 0xe1, 0x58, 0x92, 0x4e, 0xc3, 0xe3, 0x4c, 0x32, 0x78, 0x33, 0x0a,
    -	0x6a, 0x60, 0x8f, 0x36, 0x16, 0x06, 0x35, 0x46, 0xb7, 0xaf, 0x7f, 0xd2, 0xa3, 0xb2, 0xef, 0xb7,
    -	0x1b, 0x0e, 0x1b, 0xda, 0x3d, 0xd6, 0x63, 0xb6, 0x8e, 0x6d, 0xfb, 0x5d, 0x7d, 0xd2, 0x07, 0xfd,
    -	0x57, 0xc4, 0x79, 0xfd, 0x6e, 0x7a, 0x91, 0x21, 0x76, 0xfa, 0xd4, 0x25, 0xfc, 0x95, 0xed, 0x1d,
    -	0xf6, 0x14, 0x20, 0xec, 0x21, 0x91, 0x78, 0xc1, 0x4d, 0xae, 0xdb, 0xa7, 0x45, 0x71, 0xdf, 0x95,
    -	0x74, 0x48, 0xe6, 0x02, 0xee, 0xfd, 0x5f, 0x80, 0x70, 0xfa, 0x64, 0x88, 0x67, 0xe3, 0xea, 0x5d,
    -	0xb0, 0xb6, 0x87, 0xa5, 0xd3, 0x6f, 0x31, 0xb7, 0x43, 0x95, 0x44, 0x58, 0x03, 0x79, 0x17, 0x0f,
    -	0x89, 0x69, 0xd4, 0x8c, 0xcd, 0x52, 0xb3, 0xf2, 0x3a, 0xb0, 0x96, 0xc2, 0xc0, 0xca, 0x3f, 0xc4,
    -	0x43, 0x82, 0xb4, 0x05, 0x6e, 0x01, 0x40, 0x5e, 0x7a, 0x9c, 0xe8, 0xe7, 0x31, 0x97, 0xb5, 0x1f,
    -	0x8c, 0xfd, 0xc0, 0x83, 0xc4, 0x82, 0x26, 0xbc, 0xea, 0xbf, 0x16, 0xc1, 0xfa, 0x9e, 0x2f, 0xb1,
    -	0xa4, 0x6e, 0xef, 0x19, 0x69, 0xf7, 0x19, 0x3b, 0xcc, 0x90, 0x89, 0x83, 0x8a, 0x33, 0xa0, 0xc4,
    -	0x95, 0x2d, 0xe6, 0x76, 0x69, 0x4f, 0xe7, 0x2a, 0x6f, 0xdd, 0x6f, 0x64, 0xf8, 0x9d, 0x1a, 0x71,
    -	0x96, 0xd6, 0x44, 0x7c, 0xf3, 0x9d, 0x38, 0x47, 0x65, 0x12, 0x45, 0x53, 0x39, 0xe0, 0x73, 0x50,
    -	0xe0, 0xfe, 0x80, 0x08, 0x33, 0x57, 0xcb, 0x6d, 0x96, 0xb7, 0x3e, 0xcb, 0x94, 0x0c, 0xf9, 0x03,
    -	0xf2, 0x8c, 0xca, 0xfe, 0x23, 0x8f, 0x44, 0xa0, 0x68, 0xae, 0xc6, 0xb9, 0x0a, 0xca, 0x26, 0x50,
    -	0x44, 0x0a, 0x77, 0xc1, 0x6a, 0x17, 0xd3, 0x81, 0xcf, 0xc9, 0x3e, 0x1b, 0x50, 0xe7, 0x95, 0x99,
    -	0xd7, 0xe2, 0x3f, 0x08, 0x03, 0x6b, 0xf5, 0xab, 0x49, 0xc3, 0x49, 0x60, 0x6d, 0x4c, 0x01, 0x8f,
    -	0x5f, 0x79, 0x04, 0x4d, 0x07, 0xc3, 0x2f, 0x41, 0x79, 0xa8, 0x7e, 0xbd, 0x98, 0xab, 0xa4, 0xb9,
    -	0xea, 0x61, 0x60, 0x95, 0xf7, 0x52, 0xf8, 0x24, 0xb0, 0xd6, 0x27, 0x8e, 0x9a, 0x67, 0x32, 0x0c,
    -	0xbe, 0x04, 0x1b, 0xea, 0xb5, 0x85, 0x87, 0x1d, 0x72, 0x40, 0x06, 0xc4, 0x91, 0x8c, 0x9b, 0x05,
    -	0xfd, 0xd4, 0x77, 0x26, 0xd4, 0x27, 0x75, 0xd5, 0xf0, 0x0e, 0x7b, 0x0a, 0x10, 0x0d, 0x55, 0xbe,
    -	0x4a, 0xfe, 0x2e, 0x6e, 0x93, 0xc1, 0x38, 0xb4, 0xf9, 0x6e, 0x18, 0x58, 0x1b, 0x0f, 0x67, 0x19,
    -	0xd1, 0x7c, 0x12, 0xc8, 0xc0, 0x1a, 0x6b, 0x7f, 0x4f, 0x1c, 0x99, 0xa4, 0x2d, 0x9f, 0x3f, 0x2d,
    -	0x0c, 0x03, 0x6b, 0xed, 0xd1, 0x14, 0x1d, 0x9a, 0xa1, 0x57, 0x0f, 0x26, 0x68, 0x87, 0x3c, 0xe8,
    -	0x76, 0x89, 0x23, 0x85, 0xf9, 0x56, 0xfa, 0x60, 0x07, 0x29, 0xac, 0x1e, 0x2c, 0x3d, 0xb6, 0x06,
    -	0x58, 0x08, 0x34, 0x19, 0x06, 0x3f, 0x07, 0x6b, 0xaa, 0xa7, 0x98, 0x2f, 0x0f, 0x88, 0xc3, 0xdc,
    -	0x8e, 0x30, 0x57, 0x6a, 0xc6, 0x66, 0x21, 0xba, 0xc1, 0xe3, 0x29, 0x0b, 0x9a, 0xf1, 0x84, 0x4f,
    -	0xc0, 0xb5, 0xa4, 0x8a, 0x10, 0x19, 0x51, 0xf2, 0xc3, 0x53, 0xc2, 0xd5, 0x41, 0x98, 0xc5, 0x5a,
    -	0x6e, 0xb3, 0xd4, 0x7c, 0x3f, 0x0c, 0xac, 0x6b, 0xdb, 0x8b, 0x5d, 0xd0, 0x69, 0xb1, 0xf0, 0x05,
    -	0x80, 0x9c, 0x50, 0x77, 0xc4, 0x1c, 0x5d, 0x7e, 0x71, 0x41, 0x00, 0xad, 0xef, 0x56, 0x18, 0x58,
    -	0x10, 0xcd, 0x59, 0x4f, 0x02, 0xeb, 0xea, 0x3c, 0xaa, 0xcb, 0x63, 0x01, 0x17, 0x1c, 0x81, 0xf5,
    -	0xe1, 0xd4, 0xa4, 0x10, 0x66, 0x45, 0x77, 0xc8, 0x9d, 0x4c, 0x1d, 0x32, 0x3d, 0x65, 0x9a, 0xd7,
    -	0xe2, 0xee, 0x58, 0x9f, 0xc6, 0x05, 0x9a, 0x4d, 0x52, 0x3f, 0x32, 0xc0, 0x8d, 0x99, 0xc9, 0x11,
    -	0x75, 0xaa, 0x1f, 0x91, 0xc3, 0x17, 0xa0, 0xa8, 0x0a, 0xa2, 0x83, 0x25, 0xd6, 0xa3, 0xa4, 0xbc,
    -	0x75, 0x2b, 0x5b, 0xf9, 0x44, 0xb5, 0xb2, 0x47, 0x24, 0x4e, 0xc7, 0x57, 0x8a, 0xa1, 0x84, 0x15,
    -	0x3e, 0x05, 0xc5, 0x38, 0xb3, 0x30, 0x97, 0xb5, 0xe6, 0xbb, 0xd9, 0x34, 0x4f, 0x5f, 0xbb, 0x99,
    -	0x57, 0x59, 0x50, 0xc2, 0x55, 0xff, 0xc7, 0x00, 0xb5, 0xb3, 0xa4, 0xed, 0x52, 0x21, 0xe1, 0xf3,
    -	0x39, 0x79, 0x8d, 0x8c, 0xdd, 0x41, 0x45, 0x24, 0xee, 0x4a, 0x2c, 0xae, 0x38, 0x46, 0x26, 0xa4,
    -	0x75, 0x41, 0x81, 0x4a, 0x32, 0x1c, 0xeb, 0xda, 0x3e, 0x8f, 0xae, 0xa9, 0x3b, 0xa7, 0x73, 0x6f,
    -	0x47, 0xf1, 0xa2, 0x88, 0xbe, 0xfe, 0xbb, 0x01, 0xf2, 0x6a, 0x10, 0xc2, 0x8f, 0x40, 0x09, 0x7b,
    -	0xf4, 0x6b, 0xce, 0x7c, 0x4f, 0x98, 0x86, 0xae, 0xf8, 0xd5, 0x30, 0xb0, 0x4a, 0xdb, 0xfb, 0x3b,
    -	0x11, 0x88, 0x52, 0x3b, 0xbc, 0x0d, 0xca, 0xd8, 0xa3, 0x49, 0x83, 0x2c, 0x6b, 0xf7, 0x75, 0xd5,
    -	0xae, 0xdb, 0xfb, 0x3b, 0x49, 0x53, 0x4c, 0xfa, 0x28, 0x7e, 0x4e, 0x04, 0xf3, 0xb9, 0x13, 0x8f,
    -	0xf0, 0x98, 0x1f, 0x8d, 0x41, 0x94, 0xda, 0xe1, 0xc7, 0xa0, 0x20, 0x1c, 0xe6, 0x91, 0x78, 0x0a,
    -	0x5f, 0x55, 0xd7, 0x3e, 0x50, 0xc0, 0x49, 0x60, 0x95, 0xf4, 0x1f, 0xba, 0x1d, 0x22, 0xa7, 0xfa,
    -	0x2f, 0x06, 0x80, 0xf3, 0x83, 0x1e, 0x7e, 0x01, 0x00, 0x4b, 0x4e, 0xb1, 0x24, 0x4b, 0xd7, 0x52,
    -	0x82, 0x9e, 0x04, 0xd6, 0x6a, 0x72, 0xd2, 0x94, 0x13, 0x21, 0xf0, 0x1b, 0x90, 0x57, 0xcb, 0x21,
    -	0xde, 0x6e, 0x1f, 0x66, 0x5e, 0x38, 0xe9, 0xca, 0x54, 0x27, 0xa4, 0x49, 0xea, 0x3f, 0x1b, 0xe0,
    -	0xca, 0x01, 0xe1, 0x23, 0xea, 0x10, 0x44, 0xba, 0x84, 0x13, 0xd7, 0x21, 0xd0, 0x06, 0xa5, 0x64,
    -	0xf8, 0xc6, 0xeb, 0x76, 0x23, 0x8e, 0x2d, 0x25, 0x83, 0x1a, 0xa5, 0x3e, 0xc9, 0x6a, 0x5e, 0x3e,
    -	0x75, 0x35, 0xdf, 0x00, 0x79, 0x0f, 0xcb, 0xbe, 0x99, 0xd3, 0x1e, 0x45, 0x65, 0xdd, 0xc7, 0xb2,
    -	0x8f, 0x34, 0xaa, 0xad, 0x8c, 0x4b, 0xfd, 0xae, 0x85, 0xd8, 0xca, 0xb8, 0x44, 0x1a, 0xad, 0xff,
    -	0xb1, 0x02, 0x36, 0x9e, 0xe2, 0x01, 0xed, 0x5c, 0x7e, 0x0e, 0x5c, 0x7e, 0x0e, 0x9c, 0xf9, 0x39,
    -	0x00, 0x2e, 0x3f, 0x07, 0xce, 0xf5, 0x39, 0xb0, 0x60, 0x59, 0x97, 0x2f, 0x62, 0x59, 0xff, 0x69,
    -	0x80, 0xea, 0x5c, 0x67, 0x5f, 0xf4, 0xba, 0xfe, 0x76, 0x6e, 0x5d, 0xdf, 0xcb, 0xa4, 0x7a, 0xee,
    -	0xe2, 0x73, 0x0b, 0xfb, 0x5f, 0x03, 0xd4, 0xcf, 0x96, 0x77, 0x01, 0x2b, 0xbb, 0x3f, 0xbd, 0xb2,
    -	0x5b, 0xe7, 0xd3, 0x96, 0x65, 0x69, 0xff, 0x66, 0x80, 0xb7, 0x17, 0xcc, 0x4d, 0xf8, 0x1e, 0xc8,
    -	0xf9, 0x7c, 0x10, 0x8f, 0xfe, 0x95, 0x30, 0xb0, 0x72, 0x4f, 0xd0, 0x2e, 0x52, 0x18, 0x7c, 0x0e,
    -	0x56, 0x44, 0xb4, 0x7d, 0x62, 0xe5, 0x9f, 0x66, 0xba, 0xde, 0xec, 0xc6, 0x6a, 0x96, 0xc3, 0xc0,
    -	0x5a, 0x19, 0xa3, 0x63, 0x4a, 0xb8, 0x09, 0x8a, 0x0e, 0x6e, 0xfa, 0x6e, 0x27, 0xde, 0x96, 0x95,
    -	0x66, 0x45, 0x3d, 0x52, 0x6b, 0x3b, 0xc2, 0x50, 0x62, 0x6d, 0xee, 0xbc, 0x3e, 0xae, 0x2e, 0xbd,
    -	0x39, 0xae, 0x2e, 0x1d, 0x1d, 0x57, 0x97, 0x7e, 0x0c, 0xab, 0xc6, 0xeb, 0xb0, 0x6a, 0xbc, 0x09,
    -	0xab, 0xc6, 0x51, 0x58, 0x35, 0xfe, 0x0a, 0xab, 0xc6, 0x4f, 0x7f, 0x57, 0x97, 0xbe, 0xbb, 0x99,
    -	0xe1, 0xbf, 0x04, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xe1, 0x3a, 0x73, 0x64, 0x10, 0x00,
    -	0x00,
    +	proto.RegisterFile("k8s.io/api/admissionregistration/v1/generated.proto", fileDescriptor_3205c7dc5bf0c9bf)
    +}
    +
    +var fileDescriptor_3205c7dc5bf0c9bf = []byte{
    +	// 2075 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0xc7,
    +	0x15, 0xf7, 0x8a, 0x94, 0x44, 0x3e, 0xea, 0x8b, 0x13, 0x27, 0xa2, 0x1d, 0x87, 0x2b, 0x6c, 0x82,
    +	0xc2, 0x46, 0x63, 0x32, 0xb2, 0x53, 0x27, 0x08, 0x8a, 0x06, 0xa2, 0xfc, 0x01, 0xc5, 0x96, 0x2d,
    +	0x8c, 0x12, 0xa9, 0x68, 0xdd, 0x22, 0xab, 0xdd, 0x21, 0xb9, 0x11, 0xb9, 0xbb, 0xd8, 0xd9, 0x65,
    +	0xac, 0x9e, 0x8a, 0xf6, 0x5e, 0x14, 0xe8, 0x5f, 0xd0, 0xfe, 0x09, 0xbd, 0xb4, 0x40, 0x4f, 0xbd,
    +	0xf9, 0x52, 0x20, 0x3d, 0xd5, 0x87, 0x62, 0x51, 0xb3, 0x97, 0x1e, 0x7a, 0x68, 0xaf, 0x02, 0x8a,
    +	0x16, 0x33, 0x3b, 0xfb, 0xc9, 0xa5, 0xb5, 0x96, 0x6d, 0xf5, 0xe2, 0x9b, 0xf6, 0x7d, 0xfc, 0xde,
    +	0xbc, 0x37, 0x6f, 0xe6, 0xbd, 0x79, 0x14, 0x5c, 0x3f, 0xfc, 0x98, 0xb6, 0x0c, 0xab, 0xad, 0xda,
    +	0x46, 0x5b, 0xd5, 0x87, 0x06, 0xa5, 0x86, 0x65, 0x3a, 0xa4, 0x67, 0x50, 0xd7, 0x51, 0x5d, 0xc3,
    +	0x32, 0xdb, 0xa3, 0xf5, 0x76, 0x8f, 0x98, 0xc4, 0x51, 0x5d, 0xa2, 0xb7, 0x6c, 0xc7, 0x72, 0x2d,
    +	0xf4, 0x6e, 0xa0, 0xd4, 0x52, 0x6d, 0xa3, 0x95, 0xab, 0xd4, 0x1a, 0xad, 0x5f, 0xbc, 0xda, 0x33,
    +	0xdc, 0xbe, 0x77, 0xd0, 0xd2, 0xac, 0x61, 0xbb, 0x67, 0xf5, 0xac, 0x36, 0xd7, 0x3d, 0xf0, 0xba,
    +	0xfc, 0x8b, 0x7f, 0xf0, 0xbf, 0x02, 0xcc, 0x8b, 0x1f, 0xc6, 0x0b, 0x19, 0xaa, 0x5a, 0xdf, 0x30,
    +	0x89, 0x73, 0xd4, 0xb6, 0x0f, 0x7b, 0x8c, 0x40, 0xdb, 0x43, 0xe2, 0xaa, 0x39, 0x2b, 0xb9, 0xd8,
    +	0x9e, 0xa6, 0xe5, 0x78, 0xa6, 0x6b, 0x0c, 0xc9, 0x84, 0xc2, 0x8d, 0x93, 0x14, 0xa8, 0xd6, 0x27,
    +	0x43, 0x35, 0xab, 0xa7, 0x50, 0x58, 0xde, 0xf0, 0x74, 0xc3, 0xdd, 0x30, 0x4d, 0xcb, 0xe5, 0x3e,
    +	0xa2, 0x77, 0xa0, 0x74, 0x48, 0x8e, 0x1a, 0xd2, 0x9a, 0x74, 0xb9, 0xda, 0xa9, 0x3d, 0xf6, 0xe5,
    +	0x73, 0x63, 0x5f, 0x2e, 0xdd, 0x25, 0x47, 0x98, 0xd1, 0xd1, 0x06, 0x2c, 0x8f, 0xd4, 0x81, 0x47,
    +	0x6e, 0x3d, 0xb2, 0x1d, 0xc2, 0x23, 0xd4, 0x98, 0xe1, 0xa2, 0xab, 0x42, 0x74, 0x79, 0x2f, 0xcd,
    +	0xc6, 0x59, 0x79, 0x65, 0x00, 0xf5, 0xf8, 0x6b, 0x5f, 0x75, 0x4c, 0xc3, 0xec, 0xa1, 0xf7, 0xa1,
    +	0xd2, 0x35, 0xc8, 0x40, 0xc7, 0xa4, 0x2b, 0x00, 0x57, 0x04, 0x60, 0xe5, 0xb6, 0xa0, 0xe3, 0x48,
    +	0x02, 0x5d, 0x81, 0xf9, 0xaf, 0x03, 0xc5, 0x46, 0x89, 0x0b, 0x2f, 0x0b, 0xe1, 0x79, 0x81, 0x87,
    +	0x43, 0xbe, 0xd2, 0x85, 0xa5, 0x6d, 0xd5, 0xd5, 0xfa, 0x9b, 0x96, 0xa9, 0x1b, 0xdc, 0xc3, 0x35,
    +	0x28, 0x9b, 0xea, 0x90, 0x08, 0x17, 0x17, 0x84, 0x66, 0xf9, 0xbe, 0x3a, 0x24, 0x98, 0x73, 0xd0,
    +	0x35, 0x00, 0x92, 0xf5, 0x0f, 0x09, 0x39, 0x48, 0xb8, 0x96, 0x90, 0x52, 0xfe, 0x54, 0x16, 0x86,
    +	0x30, 0xa1, 0x96, 0xe7, 0x68, 0x84, 0xa2, 0x47, 0x50, 0x67, 0x70, 0xd4, 0x56, 0x35, 0xb2, 0x4b,
    +	0x06, 0x44, 0x73, 0x2d, 0x87, 0x5b, 0xad, 0x5d, 0xbb, 0xde, 0x8a, 0x93, 0x2d, 0xda, 0xb1, 0x96,
    +	0x7d, 0xd8, 0x63, 0x04, 0xda, 0x62, 0x89, 0xd1, 0x1a, 0xad, 0xb7, 0xee, 0xa9, 0x07, 0x64, 0x10,
    +	0xaa, 0x76, 0xde, 0x1c, 0xfb, 0x72, 0xfd, 0x7e, 0x16, 0x11, 0x4f, 0x1a, 0x41, 0x16, 0x2c, 0x59,
    +	0x07, 0x5f, 0x11, 0xcd, 0x8d, 0xcc, 0xce, 0x9c, 0xde, 0x2c, 0x1a, 0xfb, 0xf2, 0xd2, 0x83, 0x14,
    +	0x1c, 0xce, 0xc0, 0xa3, 0x23, 0x58, 0x74, 0x84, 0xdf, 0xd8, 0x1b, 0x10, 0xda, 0x28, 0xad, 0x95,
    +	0x2e, 0xd7, 0xae, 0x7d, 0xb7, 0x55, 0xe0, 0x4c, 0xb5, 0x98, 0x4b, 0x3a, 0x53, 0xdb, 0x37, 0xdc,
    +	0xfe, 0x03, 0x9b, 0x04, 0x1c, 0xda, 0x79, 0x53, 0x84, 0x7c, 0x11, 0x27, 0xa1, 0x71, 0xda, 0x12,
    +	0xfa, 0x85, 0x04, 0xe7, 0xc9, 0x23, 0x6d, 0xe0, 0xe9, 0x24, 0x25, 0xd7, 0x28, 0xbf, 0x84, 0x25,
    +	0x5c, 0x12, 0x4b, 0x38, 0x7f, 0x2b, 0xc7, 0x02, 0xce, 0xb5, 0x8b, 0x6e, 0x42, 0x6d, 0xc8, 0x12,
    +	0x61, 0xc7, 0x1a, 0x18, 0xda, 0x51, 0x63, 0x9e, 0xa7, 0x8f, 0x32, 0xf6, 0xe5, 0xda, 0x76, 0x4c,
    +	0x3e, 0xf6, 0xe5, 0xe5, 0xc4, 0xe7, 0xe7, 0x47, 0x36, 0xc1, 0x49, 0x35, 0xe5, 0x77, 0x15, 0x58,
    +	0xde, 0xf6, 0xd8, 0xa1, 0x34, 0x7b, 0xfb, 0xe4, 0xa0, 0x6f, 0x59, 0x87, 0x05, 0x32, 0xd7, 0x81,
    +	0x05, 0x6d, 0x60, 0x10, 0xd3, 0xdd, 0xb4, 0xcc, 0xae, 0xd1, 0x13, 0xdb, 0xfe, 0x71, 0xa1, 0x18,
    +	0x08, 0x2b, 0x9b, 0x09, 0xfd, 0xce, 0x79, 0x61, 0x63, 0x21, 0x49, 0xc5, 0x29, 0x1b, 0xe8, 0x21,
    +	0xcc, 0x3a, 0x89, 0x3d, 0xff, 0xa8, 0x90, 0xb1, 0x9c, 0x58, 0x2f, 0x0a, 0x5b, 0xb3, 0x41, 0x70,
    +	0x03, 0x50, 0x74, 0x0f, 0x16, 0xbb, 0xaa, 0x31, 0xf0, 0x1c, 0x22, 0xe2, 0x59, 0xe6, 0xce, 0x7f,
    +	0x8b, 0xe5, 0xc5, 0xed, 0x24, 0xe3, 0xd8, 0x97, 0xeb, 0x29, 0x02, 0x8f, 0x69, 0x5a, 0x39, 0xbb,
    +	0x37, 0xd5, 0x53, 0xed, 0x4d, 0xfe, 0xc1, 0x9e, 0xfd, 0xff, 0x1c, 0xec, 0xda, 0xab, 0x3d, 0xd8,
    +	0x37, 0xa1, 0x46, 0x0d, 0x9d, 0xdc, 0xea, 0x76, 0x89, 0xe6, 0xd2, 0xc6, 0x5c, 0x1c, 0xb0, 0xdd,
    +	0x98, 0xcc, 0x02, 0x16, 0x7f, 0x6e, 0x0e, 0x54, 0x4a, 0x71, 0x52, 0x0d, 0x7d, 0x02, 0x4b, 0xac,
    +	0x0c, 0x59, 0x9e, 0xbb, 0x4b, 0x34, 0xcb, 0xd4, 0x29, 0x3f, 0x15, 0xb3, 0xc1, 0x0a, 0x3e, 0x4f,
    +	0x71, 0x70, 0x46, 0x12, 0x7d, 0x01, 0xab, 0x51, 0x16, 0x61, 0x32, 0x32, 0xc8, 0xd7, 0x7b, 0xc4,
    +	0x61, 0x1f, 0xb4, 0x51, 0x59, 0x2b, 0x5d, 0xae, 0x76, 0xde, 0x1e, 0xfb, 0xf2, 0xea, 0x46, 0xbe,
    +	0x08, 0x9e, 0xa6, 0x8b, 0xbe, 0x04, 0xe4, 0x10, 0xc3, 0x1c, 0x59, 0x1a, 0x4f, 0x3f, 0x91, 0x10,
    +	0xc0, 0xfd, 0xfb, 0x60, 0xec, 0xcb, 0x08, 0x4f, 0x70, 0x8f, 0x7d, 0xf9, 0xad, 0x49, 0x2a, 0x4f,
    +	0x8f, 0x1c, 0x2c, 0x34, 0x82, 0xe5, 0x61, 0xaa, 0xf2, 0xd0, 0xc6, 0x02, 0x3f, 0x21, 0xd7, 0x0b,
    +	0x9d, 0x90, 0x74, 0xd5, 0x8a, 0xeb, 0x6b, 0x9a, 0x4e, 0x71, 0xd6, 0x88, 0xf2, 0x44, 0x82, 0x4b,
    +	0x99, 0x9b, 0x23, 0x38, 0xa9, 0x5e, 0x00, 0x8e, 0xbe, 0x84, 0x0a, 0x4b, 0x08, 0x5d, 0x75, 0x55,
    +	0x51, 0x8e, 0x3e, 0x28, 0x96, 0x3e, 0x41, 0xae, 0x6c, 0x13, 0x57, 0x8d, 0xcb, 0x61, 0x4c, 0xc3,
    +	0x11, 0x2a, 0xda, 0x83, 0x8a, 0xb0, 0x4c, 0x1b, 0x33, 0xdc, 0xe7, 0x0f, 0x8b, 0xf9, 0x9c, 0x5e,
    +	0x76, 0xa7, 0xcc, 0xac, 0xe0, 0x08, 0x4b, 0xf9, 0x87, 0x04, 0x6b, 0xcf, 0x72, 0xed, 0x9e, 0x41,
    +	0x5d, 0xf4, 0x70, 0xc2, 0xbd, 0x56, 0xc1, 0xd3, 0x61, 0xd0, 0xc0, 0xb9, 0xa8, 0xf5, 0x08, 0x29,
    +	0x09, 0xd7, 0xba, 0x30, 0x6b, 0xb8, 0x64, 0x18, 0xfa, 0xb5, 0x71, 0x1a, 0xbf, 0x52, 0x6b, 0x8e,
    +	0xef, 0xbd, 0x2d, 0x86, 0x8b, 0x03, 0x78, 0xb6, 0x8b, 0xab, 0x53, 0xaa, 0x12, 0xfa, 0x28, 0xae,
    +	0xb6, 0xfc, 0xd6, 0x68, 0x48, 0xfc, 0x20, 0xd4, 0x93, 0xb5, 0x92, 0x33, 0x70, 0x5a, 0x0e, 0xfd,
    +	0x5c, 0x02, 0xe4, 0x4c, 0xe0, 0x89, 0x2a, 0x71, 0xea, 0x8b, 0xfb, 0xa2, 0x70, 0x00, 0x4d, 0xf2,
    +	0x70, 0x8e, 0x39, 0x45, 0x85, 0xea, 0x8e, 0xea, 0xa8, 0xc3, 0xbb, 0x86, 0xa9, 0xb3, 0x5e, 0x4b,
    +	0xb5, 0x0d, 0x71, 0x2c, 0x45, 0x65, 0x8b, 0x92, 0x6b, 0x63, 0x67, 0x4b, 0x70, 0x70, 0x42, 0x8a,
    +	0xd5, 0xc1, 0x43, 0xc3, 0xd4, 0x45, 0x67, 0x16, 0xd5, 0x41, 0x86, 0x87, 0x39, 0x47, 0xf9, 0xed,
    +	0x0c, 0x54, 0xb8, 0x0d, 0xd6, 0x2d, 0x9e, 0x5c, 0x36, 0xdb, 0x50, 0x8d, 0xee, 0x5a, 0x81, 0x5a,
    +	0x17, 0x62, 0xd5, 0xe8, 0x5e, 0xc6, 0xb1, 0x0c, 0xfa, 0x11, 0x54, 0x68, 0x78, 0x03, 0x97, 0x4e,
    +	0x7f, 0x03, 0x2f, 0xb0, 0x24, 0x8b, 0xee, 0xde, 0x08, 0x12, 0xb9, 0xb0, 0x6a, 0xb3, 0xd5, 0x13,
    +	0x97, 0x38, 0xf7, 0x2d, 0xf7, 0xb6, 0xe5, 0x99, 0xfa, 0x86, 0xc6, 0xa2, 0x27, 0xca, 0xdf, 0x27,
    +	0xec, 0xce, 0xdb, 0xc9, 0x17, 0x39, 0xf6, 0xe5, 0xb7, 0xa7, 0xb0, 0xf8, 0x5d, 0x35, 0x0d, 0x5a,
    +	0xf9, 0xa3, 0x04, 0x65, 0xb6, 0x85, 0xe8, 0xdb, 0x50, 0x55, 0x6d, 0xe3, 0x8e, 0x63, 0x79, 0x76,
    +	0x98, 0x5b, 0x8b, 0x2c, 0x14, 0x1b, 0x3b, 0x5b, 0x01, 0x11, 0xc7, 0x7c, 0xb4, 0x0e, 0xb5, 0x78,
    +	0x6b, 0x82, 0x63, 0x51, 0xed, 0x2c, 0xb3, 0x0a, 0x11, 0xef, 0x1e, 0xc5, 0x49, 0x19, 0x86, 0x1f,
    +	0xe6, 0x65, 0xd0, 0x35, 0x08, 0xfc, 0xa8, 0x75, 0xc6, 0x31, 0x1f, 0xbd, 0x0f, 0xb3, 0x54, 0xb3,
    +	0x6c, 0x22, 0x3c, 0x7f, 0x8b, 0x9d, 0x94, 0x5d, 0x46, 0x38, 0xf6, 0xe5, 0x2a, 0xff, 0x83, 0x7b,
    +	0x15, 0x08, 0x29, 0xbf, 0x91, 0x20, 0x27, 0x0d, 0xd1, 0xa7, 0x00, 0x56, 0x9c, 0xef, 0x81, 0x4b,
    +	0x32, 0xbf, 0xbe, 0x22, 0xea, 0xb1, 0x2f, 0x2f, 0x46, 0x5f, 0x1c, 0x32, 0xa1, 0x82, 0xee, 0x42,
    +	0x99, 0x65, 0xb2, 0x38, 0x2a, 0x57, 0x0a, 0x1f, 0x95, 0x38, 0xdd, 0xd8, 0x17, 0xe6, 0x20, 0xca,
    +	0xaf, 0x25, 0x58, 0xd9, 0x25, 0xce, 0xc8, 0xd0, 0x08, 0x26, 0x5d, 0xe2, 0x10, 0x53, 0xcb, 0xe4,
    +	0xa0, 0x54, 0x20, 0x07, 0xc3, 0xb4, 0x9e, 0x99, 0x9a, 0xd6, 0x97, 0xa0, 0x6c, 0xab, 0x6e, 0x5f,
    +	0xbc, 0x91, 0x2a, 0x8c, 0xbb, 0xa3, 0xba, 0x7d, 0xcc, 0xa9, 0x9c, 0x6b, 0x39, 0x2e, 0x8f, 0xeb,
    +	0xac, 0xe0, 0x5a, 0x8e, 0x8b, 0x39, 0x55, 0xf9, 0x95, 0x04, 0x0b, 0x2c, 0x0a, 0x9b, 0x7d, 0xa2,
    +	0x1d, 0xb2, 0x17, 0xda, 0xcf, 0x24, 0x40, 0x24, 0xfb, 0x6e, 0x0b, 0x62, 0x59, 0xbb, 0x76, 0xa3,
    +	0x50, 0x40, 0x26, 0x9e, 0x7d, 0xf1, 0xd5, 0x31, 0xc1, 0xa2, 0x38, 0xc7, 0x9a, 0xf2, 0xe7, 0x19,
    +	0xb8, 0xb0, 0xa7, 0x0e, 0x0c, 0x9d, 0x5f, 0xa7, 0x51, 0xd1, 0x17, 0x15, 0xf7, 0xd5, 0x17, 0x36,
    +	0x1d, 0xca, 0xd4, 0x26, 0x9a, 0x48, 0x83, 0x4e, 0x21, 0xaf, 0xa7, 0xae, 0x77, 0xd7, 0x26, 0x5a,
    +	0xbc, 0x6f, 0xec, 0x0b, 0x73, 0x74, 0x34, 0x80, 0x39, 0xea, 0xaa, 0xae, 0x47, 0xc5, 0xdd, 0x72,
    +	0xf3, 0x05, 0xed, 0x70, 0xac, 0xce, 0x92, 0xb0, 0x34, 0x17, 0x7c, 0x63, 0x61, 0x43, 0xf9, 0xb7,
    +	0x04, 0x6b, 0x53, 0x75, 0x3b, 0x86, 0xa9, 0xb3, 0xdd, 0x7f, 0xf5, 0xa1, 0x3d, 0x4c, 0x85, 0x76,
    +	0xeb, 0xc5, 0x5c, 0x16, 0xcb, 0x9e, 0x16, 0x61, 0xe5, 0x5f, 0x12, 0xbc, 0x77, 0x92, 0xf2, 0x19,
    +	0x34, 0x13, 0x5f, 0xa5, 0x9b, 0x89, 0x5b, 0x2f, 0xc5, 0xe9, 0x29, 0x0d, 0xc5, 0x7f, 0x66, 0x4e,
    +	0x76, 0x99, 0x45, 0x88, 0x55, 0x64, 0x9b, 0x13, 0xef, 0xc7, 0x45, 0x33, 0xda, 0xba, 0x9d, 0x88,
    +	0x83, 0x13, 0x52, 0x68, 0x1f, 0x2a, 0xb6, 0x28, 0xb7, 0x62, 0x03, 0xaf, 0x16, 0xf2, 0x25, 0xac,
    +	0xd1, 0x41, 0x25, 0x0c, 0xbf, 0x70, 0x04, 0xc6, 0x1e, 0x3c, 0xc3, 0xd4, 0x54, 0x25, 0xa7, 0xdc,
    +	0x9e, 0xd0, 0x43, 0x47, 0xaa, 0xc1, 0x73, 0x23, 0x4d, 0xc3, 0x19, 0x78, 0xb4, 0x0f, 0xf5, 0x91,
    +	0x88, 0x92, 0x65, 0x06, 0x85, 0x31, 0x18, 0x25, 0x54, 0x3b, 0x57, 0xd8, 0x33, 0x6d, 0x2f, 0xcb,
    +	0x3c, 0xf6, 0xe5, 0x95, 0x2c, 0x11, 0x4f, 0x62, 0x28, 0x63, 0x09, 0xde, 0x99, 0x1a, 0xff, 0x33,
    +	0xc8, 0x35, 0x2d, 0x9d, 0x6b, 0xdf, 0x7b, 0xc1, 0x5c, 0x9b, 0x92, 0x64, 0xb3, 0xcf, 0x70, 0x92,
    +	0x67, 0xd7, 0x0f, 0xa1, 0x6a, 0x87, 0xcd, 0x5f, 0x8e, 0x97, 0x27, 0xa4, 0x0a, 0xd3, 0x0a, 0x7a,
    +	0x85, 0xe8, 0x13, 0xc7, 0x78, 0xc8, 0x83, 0x95, 0xf0, 0x35, 0xc4, 0x54, 0x0d, 0xd3, 0xa5, 0x39,
    +	0x93, 0xaf, 0xc2, 0xf9, 0x72, 0x7e, 0xec, 0xcb, 0x2b, 0xdb, 0x19, 0x40, 0x3c, 0x61, 0x02, 0x75,
    +	0xa1, 0x16, 0xef, 0x77, 0x38, 0x07, 0x69, 0x3f, 0x57, 0x80, 0x2d, 0xb3, 0xf3, 0x86, 0x88, 0x68,
    +	0x2d, 0xa6, 0x51, 0x9c, 0x04, 0x7e, 0xc9, 0xb3, 0x90, 0x9f, 0xc0, 0x8a, 0x9a, 0x1e, 0xfe, 0xd2,
    +	0xc6, 0xec, 0x73, 0x3c, 0xd6, 0x32, 0x93, 0xe3, 0x4e, 0x43, 0xac, 0x7f, 0x25, 0xc3, 0xa0, 0x78,
    +	0xc2, 0x4e, 0xde, 0xdb, 0x78, 0xee, 0x0c, 0xde, 0xc6, 0xe8, 0xc7, 0x50, 0x1d, 0xa9, 0x8e, 0xa1,
    +	0x1e, 0x0c, 0x08, 0x6d, 0xcc, 0x73, 0x8b, 0x57, 0x0b, 0xee, 0x53, 0xa0, 0x15, 0xf7, 0x64, 0x21,
    +	0x85, 0xe2, 0x18, 0x52, 0xf9, 0xc3, 0x0c, 0xc8, 0x27, 0xd4, 0x61, 0xf4, 0x19, 0x20, 0xeb, 0x80,
    +	0x12, 0x67, 0x44, 0xf4, 0x3b, 0xc1, 0x3c, 0x3e, 0x7c, 0xf9, 0x94, 0xe2, 0x7e, 0xe8, 0xc1, 0x84,
    +	0x04, 0xce, 0xd1, 0x42, 0x3d, 0x58, 0x70, 0x13, 0x4d, 0x9a, 0x48, 0xf6, 0xf5, 0x42, 0x2e, 0x25,
    +	0xbb, 0xbb, 0xce, 0xca, 0xd8, 0x97, 0x53, 0xfd, 0x1e, 0x4e, 0x01, 0x23, 0x0d, 0x40, 0x8b, 0xf7,
    +	0x6a, 0x32, 0xc3, 0x9f, 0x71, 0x3b, 0xc5, 0xfb, 0x14, 0x55, 0x91, 0xc4, 0x16, 0x25, 0x60, 0x95,
    +	0xbf, 0xcc, 0x43, 0x3d, 0x8e, 0xde, 0xeb, 0xa9, 0xe7, 0xeb, 0xa9, 0xe7, 0xb4, 0xa9, 0x27, 0xbc,
    +	0x9e, 0x7a, 0x9e, 0x6a, 0xea, 0x99, 0x73, 0xef, 0xd6, 0xce, 0x62, 0x26, 0xf9, 0x57, 0x09, 0x9a,
    +	0x13, 0x27, 0xfb, 0xac, 0xa7, 0x92, 0xdf, 0x9f, 0x98, 0x4a, 0xde, 0x78, 0xce, 0x26, 0x68, 0xda,
    +	0x5c, 0xf2, 0x9f, 0x12, 0x28, 0xcf, 0x76, 0xef, 0x0c, 0x1a, 0xbc, 0x7e, 0xba, 0xc1, 0xdb, 0x3c,
    +	0x9d, 0x6f, 0x45, 0x66, 0x93, 0xff, 0x95, 0x00, 0xe2, 0x26, 0x05, 0xbd, 0x07, 0x89, 0x1f, 0x45,
    +	0xc5, 0x35, 0x1d, 0x44, 0x28, 0x41, 0x47, 0x57, 0x60, 0x7e, 0x48, 0x28, 0x55, 0x7b, 0xe1, 0xc4,
    +	0x22, 0xfa, 0xcd, 0x76, 0x3b, 0x20, 0xe3, 0x90, 0x8f, 0xf6, 0x61, 0xce, 0x21, 0x2a, 0xb5, 0x4c,
    +	0x31, 0xb9, 0xf8, 0x94, 0xbd, 0x5a, 0x31, 0xa7, 0x1c, 0xfb, 0xf2, 0x7a, 0x91, 0xdf, 0xd4, 0x5b,
    +	0xe2, 0x91, 0xcb, 0x95, 0xb0, 0x80, 0x43, 0x77, 0xa0, 0x2e, 0x6c, 0x24, 0x16, 0x1c, 0x5c, 0xad,
    +	0x17, 0xc4, 0x6a, 0xea, 0xdb, 0x59, 0x01, 0x3c, 0xa9, 0xa3, 0x7c, 0x06, 0x95, 0xb0, 0xfe, 0xa3,
    +	0x06, 0x94, 0x13, 0x2f, 0xa5, 0xc0, 0x71, 0x4e, 0xc9, 0x04, 0x66, 0x26, 0x3f, 0x30, 0xca, 0xef,
    +	0x25, 0x78, 0x23, 0xa7, 0x0a, 0xa1, 0x0b, 0x50, 0xf2, 0x9c, 0x81, 0x08, 0xc1, 0xfc, 0xd8, 0x97,
    +	0x4b, 0x5f, 0xe0, 0x7b, 0x98, 0xd1, 0xd0, 0x43, 0x98, 0xa7, 0xc1, 0xfc, 0x48, 0xe4, 0xd1, 0x77,
    +	0x0a, 0x6d, 0x76, 0x76, 0xe6, 0xd4, 0xa9, 0xb1, 0xf0, 0x87, 0xd4, 0x10, 0x12, 0x5d, 0x86, 0x8a,
    +	0xa6, 0x76, 0x3c, 0x53, 0x17, 0xf3, 0xae, 0x85, 0xe0, 0x75, 0xb6, 0xb9, 0x11, 0xd0, 0x70, 0xc4,
    +	0xed, 0x6c, 0x3d, 0x7e, 0xda, 0x3c, 0xf7, 0xcd, 0xd3, 0xe6, 0xb9, 0x27, 0x4f, 0x9b, 0xe7, 0x7e,
    +	0x3a, 0x6e, 0x4a, 0x8f, 0xc7, 0x4d, 0xe9, 0x9b, 0x71, 0x53, 0x7a, 0x32, 0x6e, 0x4a, 0x7f, 0x1b,
    +	0x37, 0xa5, 0x5f, 0xfe, 0xbd, 0x79, 0xee, 0x07, 0xef, 0x16, 0xf8, 0x6f, 0x8c, 0xff, 0x05, 0x00,
    +	0x00, 0xff, 0xff, 0x1e, 0x59, 0xab, 0xd9, 0xb3, 0x21, 0x00, 0x00,
    +}
    +
    +func (m *AuditAnnotation) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *AuditAnnotation) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *AuditAnnotation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.ValueExpression)
    +	copy(dAtA[i:], m.ValueExpression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ValueExpression)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Key)
    +	copy(dAtA[i:], m.Key)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ExpressionWarning) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ExpressionWarning) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ExpressionWarning) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Warning)
    +	copy(dAtA[i:], m.Warning)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Warning)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.FieldRef)
    +	copy(dAtA[i:], m.FieldRef)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.FieldRef)))
    +	i--
    +	dAtA[i] = 0x12
    +	return len(dAtA) - i, nil
     }
     
     func (m *MatchCondition) Marshal() (dAtA []byte, err error) {
    @@ -481,6 +1068,88 @@ func (m *MatchCondition) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *MatchResources) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *MatchResources) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *MatchResources) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.MatchPolicy != nil {
    +		i -= len(*m.MatchPolicy)
    +		copy(dAtA[i:], *m.MatchPolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MatchPolicy)))
    +		i--
    +		dAtA[i] = 0x3a
    +	}
    +	if len(m.ExcludeResourceRules) > 0 {
    +		for iNdEx := len(m.ExcludeResourceRules) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.ExcludeResourceRules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	if len(m.ResourceRules) > 0 {
    +		for iNdEx := len(m.ResourceRules) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.ResourceRules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if m.ObjectSelector != nil {
    +		{
    +			size, err := m.ObjectSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	if m.NamespaceSelector != nil {
    +		{
    +			size, err := m.NamespaceSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *MutatingWebhook) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -707,6 +1376,133 @@ func (m *MutatingWebhookConfigurationList) MarshalToSizedBuffer(dAtA []byte) (in
     	return len(dAtA) - i, nil
     }
     
    +func (m *NamedRuleWithOperations) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *NamedRuleWithOperations) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *NamedRuleWithOperations) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.RuleWithOperations.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	if len(m.ResourceNames) > 0 {
    +		for iNdEx := len(m.ResourceNames) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.ResourceNames[iNdEx])
    +			copy(dAtA[i:], m.ResourceNames[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceNames[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ParamKind) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ParamKind) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ParamKind) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Kind)
    +	copy(dAtA[i:], m.Kind)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.APIVersion)
    +	copy(dAtA[i:], m.APIVersion)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ParamRef) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ParamRef) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ParamRef) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.ParameterNotFoundAction != nil {
    +		i -= len(*m.ParameterNotFoundAction)
    +		copy(dAtA[i:], *m.ParameterNotFoundAction)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ParameterNotFoundAction)))
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if m.Selector != nil {
    +		{
    +			size, err := m.Selector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	i -= len(m.Namespace)
    +	copy(dAtA[i:], m.Namespace)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *Rule) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -851,7 +1647,7 @@ func (m *ServiceReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingWebhook) Marshal() (dAtA []byte, err error) {
    +func (m *TypeChecking) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -861,20 +1657,20 @@ func (m *ValidatingWebhook) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingWebhook) MarshalTo(dAtA []byte) (int, error) {
    +func (m *TypeChecking) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *TypeChecking) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.MatchConditions) > 0 {
    -		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
    +	if len(m.ExpressionWarnings) > 0 {
    +		for iNdEx := len(m.ExpressionWarnings) - 1; iNdEx >= 0; iNdEx-- {
     			{
    -				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				size, err := m.ExpressionWarnings[iNdEx].MarshalToSizedBuffer(dAtA[:i])
     				if err != nil {
     					return 0, err
     				}
    @@ -882,84 +1678,87 @@ func (m *ValidatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     				i = encodeVarintGenerated(dAtA, i, uint64(size))
     			}
     			i--
    -			dAtA[i] = 0x5a
    -		}
    -	}
    -	if m.ObjectSelector != nil {
    -		{
    -			size, err := m.ObjectSelector.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			dAtA[i] = 0xa
     		}
    -		i--
    -		dAtA[i] = 0x52
     	}
    -	if m.MatchPolicy != nil {
    -		i -= len(*m.MatchPolicy)
    -		copy(dAtA[i:], *m.MatchPolicy)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MatchPolicy)))
    -		i--
    -		dAtA[i] = 0x4a
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ValidatingAdmissionPolicy) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	if len(m.AdmissionReviewVersions) > 0 {
    -		for iNdEx := len(m.AdmissionReviewVersions) - 1; iNdEx >= 0; iNdEx-- {
    -			i -= len(m.AdmissionReviewVersions[iNdEx])
    -			copy(dAtA[i:], m.AdmissionReviewVersions[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(m.AdmissionReviewVersions[iNdEx])))
    -			i--
    -			dAtA[i] = 0x42
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingAdmissionPolicy) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingAdmissionPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	if m.TimeoutSeconds != nil {
    -		i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds))
    -		i--
    -		dAtA[i] = 0x38
    -	}
    -	if m.SideEffects != nil {
    -		i -= len(*m.SideEffects)
    -		copy(dAtA[i:], *m.SideEffects)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SideEffects)))
    -		i--
    -		dAtA[i] = 0x32
    -	}
    -	if m.NamespaceSelector != nil {
    -		{
    -			size, err := m.NamespaceSelector.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    -		i--
    -		dAtA[i] = 0x2a
    -	}
    -	if m.FailurePolicy != nil {
    -		i -= len(*m.FailurePolicy)
    -		copy(dAtA[i:], *m.FailurePolicy)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    -		i--
    -		dAtA[i] = 0x22
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	if len(m.Rules) > 0 {
    -		for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x1a
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ValidatingAdmissionPolicyBinding) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingAdmissionPolicyBinding) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingAdmissionPolicyBinding) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
     	{
    -		size, err := m.ClientConfig.MarshalToSizedBuffer(dAtA[:i])
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
     		if err != nil {
     			return 0, err
     		}
    @@ -968,15 +1767,20 @@ func (m *ValidatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	}
     	i--
     	dAtA[i] = 0x12
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
     	i--
     	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
    +func (m *ValidatingAdmissionPolicyBindingList) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -986,20 +1790,20 @@ func (m *ValidatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingWebhookConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyBindingList) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingWebhookConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyBindingList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.Webhooks) > 0 {
    -		for iNdEx := len(m.Webhooks) - 1; iNdEx >= 0; iNdEx-- {
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
     			{
    -				size, err := m.Webhooks[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
     				if err != nil {
     					return 0, err
     				}
    @@ -1011,7 +1815,7 @@ func (m *ValidatingWebhookConfiguration) MarshalToSizedBuffer(dAtA []byte) (int,
     		}
     	}
     	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
     		if err != nil {
     			return 0, err
     		}
    @@ -1023,7 +1827,7 @@ func (m *ValidatingWebhookConfiguration) MarshalToSizedBuffer(dAtA []byte) (int,
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingWebhookConfigurationList) Marshal() (dAtA []byte, err error) {
    +func (m *ValidatingAdmissionPolicyBindingSpec) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1033,12 +1837,73 @@ func (m *ValidatingWebhookConfigurationList) Marshal() (dAtA []byte, err error)
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingWebhookConfigurationList) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyBindingSpec) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingWebhookConfigurationList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyBindingSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.ValidationActions) > 0 {
    +		for iNdEx := len(m.ValidationActions) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.ValidationActions[iNdEx])
    +			copy(dAtA[i:], m.ValidationActions[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ValidationActions[iNdEx])))
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	if m.MatchResources != nil {
    +		{
    +			size, err := m.MatchResources.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	if m.ParamRef != nil {
    +		{
    +			size, err := m.ParamRef.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.PolicyName)
    +	copy(dAtA[i:], m.PolicyName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.PolicyName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ValidatingAdmissionPolicyList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingAdmissionPolicyList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingAdmissionPolicyList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
    @@ -1070,7 +1935,7 @@ func (m *ValidatingWebhookConfigurationList) MarshalToSizedBuffer(dAtA []byte) (
     	return len(dAtA) - i, nil
     }
     
    -func (m *WebhookClientConfig) Marshal() (dAtA []byte, err error) {
    +func (m *ValidatingAdmissionPolicySpec) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1080,33 +1945,94 @@ func (m *WebhookClientConfig) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *WebhookClientConfig) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicySpec) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *WebhookClientConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if m.URL != nil {
    -		i -= len(*m.URL)
    -		copy(dAtA[i:], *m.URL)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.URL)))
    +	if len(m.Variables) > 0 {
    +		for iNdEx := len(m.Variables) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Variables[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x3a
    +		}
    +	}
    +	if len(m.MatchConditions) > 0 {
    +		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x32
    +		}
    +	}
    +	if len(m.AuditAnnotations) > 0 {
    +		for iNdEx := len(m.AuditAnnotations) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.AuditAnnotations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x2a
    +		}
    +	}
    +	if m.FailurePolicy != nil {
    +		i -= len(*m.FailurePolicy)
    +		copy(dAtA[i:], *m.FailurePolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
     		i--
    -		dAtA[i] = 0x1a
    +		dAtA[i] = 0x22
     	}
    -	if m.CABundle != nil {
    -		i -= len(m.CABundle)
    -		copy(dAtA[i:], m.CABundle)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(m.CABundle)))
    +	if len(m.Validations) > 0 {
    +		for iNdEx := len(m.Validations) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Validations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if m.MatchConstraints != nil {
    +		{
    +			size, err := m.MatchConstraints.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
     		i--
     		dAtA[i] = 0x12
     	}
    -	if m.Service != nil {
    +	if m.ParamKind != nil {
     		{
    -			size, err := m.Service.MarshalToSizedBuffer(dAtA[:i])
    +			size, err := m.ParamKind.MarshalToSizedBuffer(dAtA[:i])
     			if err != nil {
     				return 0, err
     			}
    @@ -1119,191 +2045,488 @@ func (m *WebhookClientConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    -func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    -	offset -= sovGenerated(v)
    -	base := offset
    -	for v >= 1<<7 {
    -		dAtA[offset] = uint8(v&0x7f | 0x80)
    -		v >>= 7
    -		offset++
    +func (m *ValidatingAdmissionPolicyStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	dAtA[offset] = uint8(v)
    -	return base
    +	return dAtA[:n], nil
     }
    -func (m *MatchCondition) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    +
    +func (m *ValidatingAdmissionPolicyStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingAdmissionPolicyStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Expression)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	if len(m.Conditions) > 0 {
    +		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if m.TypeChecking != nil {
    +		{
    +			size, err := m.TypeChecking.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration))
    +	i--
    +	dAtA[i] = 0x8
    +	return len(dAtA) - i, nil
     }
     
    -func (m *MutatingWebhook) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *ValidatingWebhook) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingWebhook) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.ClientConfig.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.Rules) > 0 {
    -		for _, e := range m.Rules {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.MatchConditions) > 0 {
    +		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x5a
     		}
     	}
    -	if m.FailurePolicy != nil {
    -		l = len(*m.FailurePolicy)
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if m.ObjectSelector != nil {
    +		{
    +			size, err := m.ObjectSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x52
     	}
    -	if m.NamespaceSelector != nil {
    -		l = m.NamespaceSelector.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if m.MatchPolicy != nil {
    +		i -= len(*m.MatchPolicy)
    +		copy(dAtA[i:], *m.MatchPolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MatchPolicy)))
    +		i--
    +		dAtA[i] = 0x4a
     	}
    -	if m.SideEffects != nil {
    -		l = len(*m.SideEffects)
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.AdmissionReviewVersions) > 0 {
    +		for iNdEx := len(m.AdmissionReviewVersions) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.AdmissionReviewVersions[iNdEx])
    +			copy(dAtA[i:], m.AdmissionReviewVersions[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.AdmissionReviewVersions[iNdEx])))
    +			i--
    +			dAtA[i] = 0x42
    +		}
     	}
     	if m.TimeoutSeconds != nil {
    -		n += 1 + sovGenerated(uint64(*m.TimeoutSeconds))
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds))
    +		i--
    +		dAtA[i] = 0x38
     	}
    -	if len(m.AdmissionReviewVersions) > 0 {
    -		for _, s := range m.AdmissionReviewVersions {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    +	if m.SideEffects != nil {
    +		i -= len(*m.SideEffects)
    +		copy(dAtA[i:], *m.SideEffects)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SideEffects)))
    +		i--
    +		dAtA[i] = 0x32
     	}
    -	if m.MatchPolicy != nil {
    -		l = len(*m.MatchPolicy)
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if m.NamespaceSelector != nil {
    +		{
    +			size, err := m.NamespaceSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x2a
     	}
    -	if m.ReinvocationPolicy != nil {
    -		l = len(*m.ReinvocationPolicy)
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if m.FailurePolicy != nil {
    +		i -= len(*m.FailurePolicy)
    +		copy(dAtA[i:], *m.FailurePolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    +		i--
    +		dAtA[i] = 0x22
     	}
    -	if m.ObjectSelector != nil {
    -		l = m.ObjectSelector.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Rules) > 0 {
    +		for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
     	}
    -	if len(m.MatchConditions) > 0 {
    -		for _, e := range m.MatchConditions {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	{
    +		size, err := m.ClientConfig.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	return n
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *MutatingWebhookConfiguration) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *ValidatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingWebhookConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingWebhookConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
     	if len(m.Webhooks) > 0 {
    -		for _, e := range m.Webhooks {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +		for iNdEx := len(m.Webhooks) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Webhooks[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
     		}
     	}
    -	return n
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *MutatingWebhookConfigurationList) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *ValidatingWebhookConfigurationList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingWebhookConfigurationList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingWebhookConfigurationList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = m.ListMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
     	if len(m.Items) > 0 {
    -		for _, e := range m.Items {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
     		}
     	}
    -	return n
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *Rule) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *Validation) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *Validation) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *Validation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	if len(m.APIGroups) > 0 {
    -		for _, s := range m.APIGroups {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    +	i -= len(m.MessageExpression)
    +	copy(dAtA[i:], m.MessageExpression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.MessageExpression)))
    +	i--
    +	dAtA[i] = 0x22
    +	if m.Reason != nil {
    +		i -= len(*m.Reason)
    +		copy(dAtA[i:], *m.Reason)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Reason)))
    +		i--
    +		dAtA[i] = 0x1a
     	}
    -	if len(m.APIVersions) > 0 {
    -		for _, s := range m.APIVersions {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    +	i -= len(m.Message)
    +	copy(dAtA[i:], m.Message)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *Variable) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	if len(m.Resources) > 0 {
    -		for _, s := range m.Resources {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    +	return dAtA[:n], nil
    +}
    +
    +func (m *Variable) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *Variable) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *WebhookClientConfig) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *WebhookClientConfig) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *WebhookClientConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.URL != nil {
    +		i -= len(*m.URL)
    +		copy(dAtA[i:], *m.URL)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.URL)))
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	if m.CABundle != nil {
    +		i -= len(m.CABundle)
    +		copy(dAtA[i:], m.CABundle)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(m.CABundle)))
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	if m.Service != nil {
    +		{
    +			size, err := m.Service.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
    +		i--
    +		dAtA[i] = 0xa
     	}
    -	if m.Scope != nil {
    -		l = len(*m.Scope)
    -		n += 1 + l + sovGenerated(uint64(l))
    +	return len(dAtA) - i, nil
    +}
    +
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
    +	}
    +	dAtA[offset] = uint8(v)
    +	return base
    +}
    +func (m *AuditAnnotation) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    +	var l int
    +	_ = l
    +	l = len(m.Key)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.ValueExpression)
    +	n += 1 + l + sovGenerated(uint64(l))
     	return n
     }
     
    -func (m *RuleWithOperations) Size() (n int) {
    +func (m *ExpressionWarning) Size() (n int) {
     	if m == nil {
     		return 0
     	}
     	var l int
     	_ = l
    -	if len(m.Operations) > 0 {
    -		for _, s := range m.Operations {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	l = m.Rule.Size()
    +	l = len(m.FieldRef)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Warning)
     	n += 1 + l + sovGenerated(uint64(l))
     	return n
     }
     
    -func (m *ServiceReference) Size() (n int) {
    +func (m *MatchCondition) Size() (n int) {
     	if m == nil {
     		return 0
     	}
     	var l int
     	_ = l
    -	l = len(m.Namespace)
    -	n += 1 + l + sovGenerated(uint64(l))
     	l = len(m.Name)
     	n += 1 + l + sovGenerated(uint64(l))
    -	if m.Path != nil {
    -		l = len(*m.Path)
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *MatchResources) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.NamespaceSelector != nil {
    +		l = m.NamespaceSelector.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	if m.Port != nil {
    -		n += 1 + sovGenerated(uint64(*m.Port))
    +	if m.ObjectSelector != nil {
    +		l = m.ObjectSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.ResourceRules) > 0 {
    +		for _, e := range m.ResourceRules {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.ExcludeResourceRules) > 0 {
    +		for _, e := range m.ExcludeResourceRules {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.MatchPolicy != nil {
    +		l = len(*m.MatchPolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
     	return n
     }
     
    -func (m *ValidatingWebhook) Size() (n int) {
    +func (m *MutatingWebhook) Size() (n int) {
     	if m == nil {
     		return 0
     	}
    @@ -1344,6 +2567,10 @@ func (m *ValidatingWebhook) Size() (n int) {
     		l = len(*m.MatchPolicy)
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if m.ReinvocationPolicy != nil {
    +		l = len(*m.ReinvocationPolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	if m.ObjectSelector != nil {
     		l = m.ObjectSelector.Size()
     		n += 1 + l + sovGenerated(uint64(l))
    @@ -1357,7 +2584,7 @@ func (m *ValidatingWebhook) Size() (n int) {
     	return n
     }
     
    -func (m *ValidatingWebhookConfiguration) Size() (n int) {
    +func (m *MutatingWebhookConfiguration) Size() (n int) {
     	if m == nil {
     		return 0
     	}
    @@ -1374,7 +2601,7 @@ func (m *ValidatingWebhookConfiguration) Size() (n int) {
     	return n
     }
     
    -func (m *ValidatingWebhookConfigurationList) Size() (n int) {
    +func (m *MutatingWebhookConfigurationList) Size() (n int) {
     	if m == nil {
     		return 0
     	}
    @@ -1391,227 +2618,2818 @@ func (m *ValidatingWebhookConfigurationList) Size() (n int) {
     	return n
     }
     
    -func (m *WebhookClientConfig) Size() (n int) {
    +func (m *NamedRuleWithOperations) Size() (n int) {
     	if m == nil {
     		return 0
     	}
     	var l int
     	_ = l
    -	if m.Service != nil {
    -		l = m.Service.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.ResourceNames) > 0 {
    +		for _, s := range m.ResourceNames {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	if m.CABundle != nil {
    -		l = len(m.CABundle)
    +	l = m.RuleWithOperations.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ParamKind) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.APIVersion)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Kind)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ParamRef) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Namespace)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Selector != nil {
    +		l = m.Selector.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	if m.URL != nil {
    -		l = len(*m.URL)
    +	if m.ParameterNotFoundAction != nil {
    +		l = len(*m.ParameterNotFoundAction)
     		n += 1 + l + sovGenerated(uint64(l))
     	}
     	return n
     }
     
    -func sovGenerated(x uint64) (n int) {
    -	return (math_bits.Len64(x|1) + 6) / 7
    -}
    -func sozGenerated(x uint64) (n int) {
    -	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    -}
    -func (this *MatchCondition) String() string {
    -	if this == nil {
    -		return "nil"
    +func (m *Rule) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&MatchCondition{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *MutatingWebhook) String() string {
    -	if this == nil {
    -		return "nil"
    +	var l int
    +	_ = l
    +	if len(m.APIGroups) > 0 {
    +		for _, s := range m.APIGroups {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForRules := "[]RuleWithOperations{"
    -	for _, f := range this.Rules {
    -		repeatedStringForRules += strings.Replace(strings.Replace(f.String(), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + ","
    +	if len(m.APIVersions) > 0 {
    +		for _, s := range m.APIVersions {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForRules += "}"
    -	repeatedStringForMatchConditions := "[]MatchCondition{"
    -	for _, f := range this.MatchConditions {
    -		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	if len(m.Resources) > 0 {
    +		for _, s := range m.Resources {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForMatchConditions += "}"
    -	s := strings.Join([]string{`&MutatingWebhook{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "WebhookClientConfig", "WebhookClientConfig", 1), `&`, ``, 1) + `,`,
    -		`Rules:` + repeatedStringForRules + `,`,
    -		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    -		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`SideEffects:` + valueToStringGenerated(this.SideEffects) + `,`,
    -		`TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
    -		`AdmissionReviewVersions:` + fmt.Sprintf("%v", this.AdmissionReviewVersions) + `,`,
    -		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    -		`ReinvocationPolicy:` + valueToStringGenerated(this.ReinvocationPolicy) + `,`,
    -		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	if m.Scope != nil {
    +		l = len(*m.Scope)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
     }
    -func (this *MutatingWebhookConfiguration) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *RuleWithOperations) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForWebhooks := "[]MutatingWebhook{"
    -	for _, f := range this.Webhooks {
    -		repeatedStringForWebhooks += strings.Replace(strings.Replace(f.String(), "MutatingWebhook", "MutatingWebhook", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	if len(m.Operations) > 0 {
    +		for _, s := range m.Operations {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForWebhooks += "}"
    -	s := strings.Join([]string{`&MutatingWebhookConfiguration{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Webhooks:` + repeatedStringForWebhooks + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	l = m.Rule.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *MutatingWebhookConfigurationList) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ServiceReference) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForItems := "[]MutatingWebhookConfiguration{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "MutatingWebhookConfiguration", "MutatingWebhookConfiguration", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	l = len(m.Namespace)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Path != nil {
    +		l = len(*m.Path)
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&MutatingWebhookConfigurationList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *Rule) String() string {
    -	if this == nil {
    -		return "nil"
    +	if m.Port != nil {
    +		n += 1 + sovGenerated(uint64(*m.Port))
     	}
    -	s := strings.Join([]string{`&Rule{`,
    -		`APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`,
    -		`APIVersions:` + fmt.Sprintf("%v", this.APIVersions) + `,`,
    -		`Resources:` + fmt.Sprintf("%v", this.Resources) + `,`,
    -		`Scope:` + valueToStringGenerated(this.Scope) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	return n
     }
    -func (this *RuleWithOperations) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *TypeChecking) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&RuleWithOperations{`,
    -		`Operations:` + fmt.Sprintf("%v", this.Operations) + `,`,
    -		`Rule:` + strings.Replace(strings.Replace(this.Rule.String(), "Rule", "Rule", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	if len(m.ExpressionWarnings) > 0 {
    +		for _, e := range m.ExpressionWarnings {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
     }
    -func (this *ServiceReference) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingAdmissionPolicy) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&ServiceReference{`,
    -		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Path:` + valueToStringGenerated(this.Path) + `,`,
    -		`Port:` + valueToStringGenerated(this.Port) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Status.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *ValidatingWebhook) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingAdmissionPolicyBinding) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForRules := "[]RuleWithOperations{"
    -	for _, f := range this.Rules {
    -		repeatedStringForRules += strings.Replace(strings.Replace(f.String(), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicyBindingList) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForRules += "}"
    -	repeatedStringForMatchConditions := "[]MatchCondition{"
    -	for _, f := range this.MatchConditions {
    -		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForMatchConditions += "}"
    -	s := strings.Join([]string{`&ValidatingWebhook{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "WebhookClientConfig", "WebhookClientConfig", 1), `&`, ``, 1) + `,`,
    -		`Rules:` + repeatedStringForRules + `,`,
    -		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    -		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`SideEffects:` + valueToStringGenerated(this.SideEffects) + `,`,
    -		`TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
    -		`AdmissionReviewVersions:` + fmt.Sprintf("%v", this.AdmissionReviewVersions) + `,`,
    -		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    -		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	return n
     }
    -func (this *ValidatingWebhookConfiguration) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingAdmissionPolicyBindingSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForWebhooks := "[]ValidatingWebhook{"
    -	for _, f := range this.Webhooks {
    -		repeatedStringForWebhooks += strings.Replace(strings.Replace(f.String(), "ValidatingWebhook", "ValidatingWebhook", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	l = len(m.PolicyName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.ParamRef != nil {
    +		l = m.ParamRef.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForWebhooks += "}"
    -	s := strings.Join([]string{`&ValidatingWebhookConfiguration{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Webhooks:` + repeatedStringForWebhooks + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ValidatingWebhookConfigurationList) String() string {
    -	if this == nil {
    -		return "nil"
    +	if m.MatchResources != nil {
    +		l = m.MatchResources.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForItems := "[]ValidatingWebhookConfiguration{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingWebhookConfiguration", "ValidatingWebhookConfiguration", 1), `&`, ``, 1) + ","
    +	if len(m.ValidationActions) > 0 {
    +		for _, s := range m.ValidationActions {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&ValidatingWebhookConfigurationList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicyList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicySpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.ParamKind != nil {
    +		l = m.ParamKind.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.MatchConstraints != nil {
    +		l = m.MatchConstraints.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.Validations) > 0 {
    +		for _, e := range m.Validations {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.FailurePolicy != nil {
    +		l = len(*m.FailurePolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.AuditAnnotations) > 0 {
    +		for _, e := range m.AuditAnnotations {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.MatchConditions) > 0 {
    +		for _, e := range m.MatchConditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Variables) > 0 {
    +		for _, e := range m.Variables {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicyStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	n += 1 + sovGenerated(uint64(m.ObservedGeneration))
    +	if m.TypeChecking != nil {
    +		l = m.TypeChecking.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.Conditions) > 0 {
    +		for _, e := range m.Conditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingWebhook) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.ClientConfig.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Rules) > 0 {
    +		for _, e := range m.Rules {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.FailurePolicy != nil {
    +		l = len(*m.FailurePolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.NamespaceSelector != nil {
    +		l = m.NamespaceSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.SideEffects != nil {
    +		l = len(*m.SideEffects)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.TimeoutSeconds != nil {
    +		n += 1 + sovGenerated(uint64(*m.TimeoutSeconds))
    +	}
    +	if len(m.AdmissionReviewVersions) > 0 {
    +		for _, s := range m.AdmissionReviewVersions {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.MatchPolicy != nil {
    +		l = len(*m.MatchPolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.ObjectSelector != nil {
    +		l = m.ObjectSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.MatchConditions) > 0 {
    +		for _, e := range m.MatchConditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingWebhookConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Webhooks) > 0 {
    +		for _, e := range m.Webhooks {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingWebhookConfigurationList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *Validation) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Message)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Reason != nil {
    +		l = len(*m.Reason)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	l = len(m.MessageExpression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *Variable) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *WebhookClientConfig) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Service != nil {
    +		l = m.Service.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.CABundle != nil {
    +		l = len(m.CABundle)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.URL != nil {
    +		l = len(*m.URL)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *AuditAnnotation) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&AuditAnnotation{`,
    +		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
    +		`ValueExpression:` + fmt.Sprintf("%v", this.ValueExpression) + `,`,
     		`}`,
     	}, "")
     	return s
     }
    -func (this *WebhookClientConfig) String() string {
    +func (this *ExpressionWarning) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ExpressionWarning{`,
    +		`FieldRef:` + fmt.Sprintf("%v", this.FieldRef) + `,`,
    +		`Warning:` + fmt.Sprintf("%v", this.Warning) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MatchCondition) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&MatchCondition{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MatchResources) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForResourceRules := "[]NamedRuleWithOperations{"
    +	for _, f := range this.ResourceRules {
    +		repeatedStringForResourceRules += strings.Replace(strings.Replace(f.String(), "NamedRuleWithOperations", "NamedRuleWithOperations", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForResourceRules += "}"
    +	repeatedStringForExcludeResourceRules := "[]NamedRuleWithOperations{"
    +	for _, f := range this.ExcludeResourceRules {
    +		repeatedStringForExcludeResourceRules += strings.Replace(strings.Replace(f.String(), "NamedRuleWithOperations", "NamedRuleWithOperations", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForExcludeResourceRules += "}"
    +	s := strings.Join([]string{`&MatchResources{`,
    +		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`ResourceRules:` + repeatedStringForResourceRules + `,`,
    +		`ExcludeResourceRules:` + repeatedStringForExcludeResourceRules + `,`,
    +		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingWebhook) String() string {
     	if this == nil {
     		return "nil"
     	}
    -	s := strings.Join([]string{`&WebhookClientConfig{`,
    -		`Service:` + strings.Replace(this.Service.String(), "ServiceReference", "ServiceReference", 1) + `,`,
    -		`CABundle:` + valueToStringGenerated(this.CABundle) + `,`,
    -		`URL:` + valueToStringGenerated(this.URL) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	repeatedStringForRules := "[]RuleWithOperations{"
    +	for _, f := range this.Rules {
    +		repeatedStringForRules += strings.Replace(strings.Replace(f.String(), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForRules += "}"
    +	repeatedStringForMatchConditions := "[]MatchCondition{"
    +	for _, f := range this.MatchConditions {
    +		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMatchConditions += "}"
    +	s := strings.Join([]string{`&MutatingWebhook{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "WebhookClientConfig", "WebhookClientConfig", 1), `&`, ``, 1) + `,`,
    +		`Rules:` + repeatedStringForRules + `,`,
    +		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    +		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`SideEffects:` + valueToStringGenerated(this.SideEffects) + `,`,
    +		`TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
    +		`AdmissionReviewVersions:` + fmt.Sprintf("%v", this.AdmissionReviewVersions) + `,`,
    +		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    +		`ReinvocationPolicy:` + valueToStringGenerated(this.ReinvocationPolicy) + `,`,
    +		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingWebhookConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForWebhooks := "[]MutatingWebhook{"
    +	for _, f := range this.Webhooks {
    +		repeatedStringForWebhooks += strings.Replace(strings.Replace(f.String(), "MutatingWebhook", "MutatingWebhook", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForWebhooks += "}"
    +	s := strings.Join([]string{`&MutatingWebhookConfiguration{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Webhooks:` + repeatedStringForWebhooks + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingWebhookConfigurationList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]MutatingWebhookConfiguration{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "MutatingWebhookConfiguration", "MutatingWebhookConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&MutatingWebhookConfigurationList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *NamedRuleWithOperations) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&NamedRuleWithOperations{`,
    +		`ResourceNames:` + fmt.Sprintf("%v", this.ResourceNames) + `,`,
    +		`RuleWithOperations:` + strings.Replace(strings.Replace(this.RuleWithOperations.String(), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ParamKind) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ParamKind{`,
    +		`APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`,
    +		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ParamRef) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ParamRef{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    +		`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`ParameterNotFoundAction:` + valueToStringGenerated(this.ParameterNotFoundAction) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Rule) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Rule{`,
    +		`APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`,
    +		`APIVersions:` + fmt.Sprintf("%v", this.APIVersions) + `,`,
    +		`Resources:` + fmt.Sprintf("%v", this.Resources) + `,`,
    +		`Scope:` + valueToStringGenerated(this.Scope) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *RuleWithOperations) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&RuleWithOperations{`,
    +		`Operations:` + fmt.Sprintf("%v", this.Operations) + `,`,
    +		`Rule:` + strings.Replace(strings.Replace(this.Rule.String(), "Rule", "Rule", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ServiceReference) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ServiceReference{`,
    +		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Path:` + valueToStringGenerated(this.Path) + `,`,
    +		`Port:` + valueToStringGenerated(this.Port) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *TypeChecking) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForExpressionWarnings := "[]ExpressionWarning{"
    +	for _, f := range this.ExpressionWarnings {
    +		repeatedStringForExpressionWarnings += strings.Replace(strings.Replace(f.String(), "ExpressionWarning", "ExpressionWarning", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForExpressionWarnings += "}"
    +	s := strings.Join([]string{`&TypeChecking{`,
    +		`ExpressionWarnings:` + repeatedStringForExpressionWarnings + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicy) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicy{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ValidatingAdmissionPolicySpec", "ValidatingAdmissionPolicySpec", 1), `&`, ``, 1) + `,`,
    +		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ValidatingAdmissionPolicyStatus", "ValidatingAdmissionPolicyStatus", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyBinding) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyBinding{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ValidatingAdmissionPolicyBindingSpec", "ValidatingAdmissionPolicyBindingSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyBindingList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ValidatingAdmissionPolicyBinding{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingAdmissionPolicyBinding", "ValidatingAdmissionPolicyBinding", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyBindingList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyBindingSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyBindingSpec{`,
    +		`PolicyName:` + fmt.Sprintf("%v", this.PolicyName) + `,`,
    +		`ParamRef:` + strings.Replace(this.ParamRef.String(), "ParamRef", "ParamRef", 1) + `,`,
    +		`MatchResources:` + strings.Replace(this.MatchResources.String(), "MatchResources", "MatchResources", 1) + `,`,
    +		`ValidationActions:` + fmt.Sprintf("%v", this.ValidationActions) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ValidatingAdmissionPolicy{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingAdmissionPolicy", "ValidatingAdmissionPolicy", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicySpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForValidations := "[]Validation{"
    +	for _, f := range this.Validations {
    +		repeatedStringForValidations += strings.Replace(strings.Replace(f.String(), "Validation", "Validation", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForValidations += "}"
    +	repeatedStringForAuditAnnotations := "[]AuditAnnotation{"
    +	for _, f := range this.AuditAnnotations {
    +		repeatedStringForAuditAnnotations += strings.Replace(strings.Replace(f.String(), "AuditAnnotation", "AuditAnnotation", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForAuditAnnotations += "}"
    +	repeatedStringForMatchConditions := "[]MatchCondition{"
    +	for _, f := range this.MatchConditions {
    +		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMatchConditions += "}"
    +	repeatedStringForVariables := "[]Variable{"
    +	for _, f := range this.Variables {
    +		repeatedStringForVariables += strings.Replace(strings.Replace(f.String(), "Variable", "Variable", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForVariables += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicySpec{`,
    +		`ParamKind:` + strings.Replace(this.ParamKind.String(), "ParamKind", "ParamKind", 1) + `,`,
    +		`MatchConstraints:` + strings.Replace(this.MatchConstraints.String(), "MatchResources", "MatchResources", 1) + `,`,
    +		`Validations:` + repeatedStringForValidations + `,`,
    +		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    +		`AuditAnnotations:` + repeatedStringForAuditAnnotations + `,`,
    +		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    +		`Variables:` + repeatedStringForVariables + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForConditions := "[]Condition{"
    +	for _, f := range this.Conditions {
    +		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForConditions += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyStatus{`,
    +		`ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`,
    +		`TypeChecking:` + strings.Replace(this.TypeChecking.String(), "TypeChecking", "TypeChecking", 1) + `,`,
    +		`Conditions:` + repeatedStringForConditions + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingWebhook) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForRules := "[]RuleWithOperations{"
    +	for _, f := range this.Rules {
    +		repeatedStringForRules += strings.Replace(strings.Replace(f.String(), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForRules += "}"
    +	repeatedStringForMatchConditions := "[]MatchCondition{"
    +	for _, f := range this.MatchConditions {
    +		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMatchConditions += "}"
    +	s := strings.Join([]string{`&ValidatingWebhook{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "WebhookClientConfig", "WebhookClientConfig", 1), `&`, ``, 1) + `,`,
    +		`Rules:` + repeatedStringForRules + `,`,
    +		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    +		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`SideEffects:` + valueToStringGenerated(this.SideEffects) + `,`,
    +		`TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
    +		`AdmissionReviewVersions:` + fmt.Sprintf("%v", this.AdmissionReviewVersions) + `,`,
    +		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    +		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingWebhookConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForWebhooks := "[]ValidatingWebhook{"
    +	for _, f := range this.Webhooks {
    +		repeatedStringForWebhooks += strings.Replace(strings.Replace(f.String(), "ValidatingWebhook", "ValidatingWebhook", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForWebhooks += "}"
    +	s := strings.Join([]string{`&ValidatingWebhookConfiguration{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Webhooks:` + repeatedStringForWebhooks + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingWebhookConfigurationList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ValidatingWebhookConfiguration{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingWebhookConfiguration", "ValidatingWebhookConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ValidatingWebhookConfigurationList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Validation) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Validation{`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`Message:` + fmt.Sprintf("%v", this.Message) + `,`,
    +		`Reason:` + valueToStringGenerated(this.Reason) + `,`,
    +		`MessageExpression:` + fmt.Sprintf("%v", this.MessageExpression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Variable) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Variable{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *WebhookClientConfig) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&WebhookClientConfig{`,
    +		`Service:` + strings.Replace(this.Service.String(), "ServiceReference", "ServiceReference", 1) + `,`,
    +		`CABundle:` + valueToStringGenerated(this.CABundle) + `,`,
    +		`URL:` + valueToStringGenerated(this.URL) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AuditAnnotation: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AuditAnnotation: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Key = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ValueExpression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ValueExpression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ExpressionWarning: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ExpressionWarning: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.FieldRef = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Warning", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Warning = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MatchCondition) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MatchCondition: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MatchCondition: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MatchResources) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MatchResources: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MatchResources: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NamespaceSelector == nil {
    +				m.NamespaceSelector = &v1.LabelSelector{}
    +			}
    +			if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ObjectSelector == nil {
    +				m.ObjectSelector = &v1.LabelSelector{}
    +			}
    +			if err := m.ObjectSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceRules", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ResourceRules = append(m.ResourceRules, NamedRuleWithOperations{})
    +			if err := m.ResourceRules[len(m.ResourceRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ExcludeResourceRules", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ExcludeResourceRules = append(m.ExcludeResourceRules, NamedRuleWithOperations{})
    +			if err := m.ExcludeResourceRules[len(m.ExcludeResourceRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchPolicy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := MatchPolicyType(dAtA[iNdEx:postIndex])
    +			m.MatchPolicy = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MutatingWebhook: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MutatingWebhook: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ClientConfig", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ClientConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Rules = append(m.Rules, RuleWithOperations{})
    +			if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field FailurePolicy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := FailurePolicyType(dAtA[iNdEx:postIndex])
    +			m.FailurePolicy = &s
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NamespaceSelector == nil {
    +				m.NamespaceSelector = &v1.LabelSelector{}
    +			}
    +			if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SideEffects", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := SideEffectClass(dAtA[iNdEx:postIndex])
    +			m.SideEffects = &s
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType)
    +			}
    +			var v int32
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int32(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.TimeoutSeconds = &v
    +		case 8:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AdmissionReviewVersions", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.AdmissionReviewVersions = append(m.AdmissionReviewVersions, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 9:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchPolicy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := MatchPolicyType(dAtA[iNdEx:postIndex])
    +			m.MatchPolicy = &s
    +			iNdEx = postIndex
    +		case 10:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ReinvocationPolicy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := ReinvocationPolicyType(dAtA[iNdEx:postIndex])
    +			m.ReinvocationPolicy = &s
    +			iNdEx = postIndex
    +		case 11:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ObjectSelector == nil {
    +				m.ObjectSelector = &v1.LabelSelector{}
    +			}
    +			if err := m.ObjectSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 12:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchConditions", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.MatchConditions = append(m.MatchConditions, MatchCondition{})
    +			if err := m.MatchConditions[len(m.MatchConditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MutatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MutatingWebhookConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MutatingWebhookConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Webhooks", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Webhooks = append(m.Webhooks, MutatingWebhook{})
    +			if err := m.Webhooks[len(m.Webhooks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MutatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MutatingWebhookConfigurationList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MutatingWebhookConfigurationList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, MutatingWebhookConfiguration{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *NamedRuleWithOperations) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: NamedRuleWithOperations: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: NamedRuleWithOperations: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceNames", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ResourceNames = append(m.ResourceNames, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field RuleWithOperations", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.RuleWithOperations.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ParamKind) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ParamKind: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ParamKind: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.APIVersion = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Kind = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ParamRef) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ParamRef: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ParamRef: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Namespace = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Selector == nil {
    +				m.Selector = &v1.LabelSelector{}
    +			}
    +			if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ParameterNotFoundAction", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := ParameterNotFoundActionType(dAtA[iNdEx:postIndex])
    +			m.ParameterNotFoundAction = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *Rule) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: Rule: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: Rule: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field APIGroups", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.APIGroups = append(m.APIGroups, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field APIVersions", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.APIVersions = append(m.APIVersions, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Resources = append(m.Resources, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := ScopeType(dAtA[iNdEx:postIndex])
    +			m.Scope = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
     }
    -func valueToStringGenerated(v interface{}) string {
    -	rv := reflect.ValueOf(v)
    -	if rv.IsNil() {
    -		return "nil"
    +func (m *RuleWithOperations) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: RuleWithOperations: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: RuleWithOperations: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Operations", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Operations = append(m.Operations, OperationType(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Rule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
     	}
    -	pv := reflect.Indirect(rv).Interface()
    -	return fmt.Sprintf("*%v", pv)
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
     }
    -func (m *MatchCondition) Unmarshal(dAtA []byte) error {
    +func (m *ServiceReference) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -1634,13 +5452,45 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: MatchCondition: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ServiceReference: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: MatchCondition: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ServiceReference: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Namespace = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
     			if wireType != 2 {
     				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
     			}
    @@ -1667,16 +5517,119 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			if postIndex > l {
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.Path = &s
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
    +			}
    +			var v int32
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int32(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.Port = &v
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *TypeChecking) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: TypeChecking: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: TypeChecking: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ExpressionWarnings", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -1686,23 +5639,25 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Expression = string(dAtA[iNdEx:postIndex])
    +			m.ExpressionWarnings = append(m.ExpressionWarnings, ExpressionWarning{})
    +			if err := m.ExpressionWarnings[len(m.ExpressionWarnings)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -1725,7 +5680,7 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
    +func (m *ValidatingAdmissionPolicy) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -1748,17 +5703,17 @@ func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: MutatingWebhook: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicy: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: MutatingWebhook: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicy: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -1768,27 +5723,28 @@ func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ClientConfig", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -1815,13 +5771,13 @@ func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.ClientConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -1848,47 +5804,63 @@ func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Rules = append(m.Rules, RuleWithOperations{})
    -			if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 4:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field FailurePolicy", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
     			}
    -			if postIndex > l {
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ValidatingAdmissionPolicyBinding) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := FailurePolicyType(dAtA[iNdEx:postIndex])
    -			m.FailurePolicy = &s
    -			iNdEx = postIndex
    -		case 5:
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicyBinding: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicyBinding: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -1915,71 +5887,15 @@ func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.NamespaceSelector == nil {
    -				m.NamespaceSelector = &v1.LabelSelector{}
    -			}
    -			if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 6:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field SideEffects", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			s := SideEffectClass(dAtA[iNdEx:postIndex])
    -			m.SideEffects = &s
    -			iNdEx = postIndex
    -		case 7:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType)
    -			}
    -			var v int32
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int32(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			m.TimeoutSeconds = &v
    -		case 8:
    +		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field AdmissionReviewVersions", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -1989,93 +5905,78 @@ func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.AdmissionReviewVersions = append(m.AdmissionReviewVersions, string(dAtA[iNdEx:postIndex]))
    -			iNdEx = postIndex
    -		case 9:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field MatchPolicy", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
     			}
    -			s := MatchPolicyType(dAtA[iNdEx:postIndex])
    -			m.MatchPolicy = &s
     			iNdEx = postIndex
    -		case 10:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ReinvocationPolicy", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
     			}
    -			if postIndex > l {
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ValidatingAdmissionPolicyBindingList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := ReinvocationPolicyType(dAtA[iNdEx:postIndex])
    -			m.ReinvocationPolicy = &s
    -			iNdEx = postIndex
    -		case 11:
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicyBindingList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicyBindingList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectSelector", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2102,16 +6003,13 @@ func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.ObjectSelector == nil {
    -				m.ObjectSelector = &v1.LabelSelector{}
    -			}
    -			if err := m.ObjectSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 12:
    +		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field MatchConditions", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2138,8 +6036,8 @@ func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.MatchConditions = append(m.MatchConditions, MatchCondition{})
    -			if err := m.MatchConditions[len(m.MatchConditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Items = append(m.Items, ValidatingAdmissionPolicyBinding{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -2164,7 +6062,7 @@ func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *MutatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
    +func (m *ValidatingAdmissionPolicyBindingSpec) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2187,15 +6085,47 @@ func (m *MutatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: MutatingWebhookConfiguration: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicyBindingSpec: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: MutatingWebhookConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicyBindingSpec: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field PolicyName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.PolicyName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ParamRef", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2222,13 +6152,16 @@ func (m *MutatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if m.ParamRef == nil {
    +				m.ParamRef = &ParamRef{}
    +			}
    +			if err := m.ParamRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 2:
    +		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Webhooks", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchResources", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2255,11 +6188,45 @@ func (m *MutatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Webhooks = append(m.Webhooks, MutatingWebhook{})
    -			if err := m.Webhooks[len(m.Webhooks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if m.MatchResources == nil {
    +				m.MatchResources = &MatchResources{}
    +			}
    +			if err := m.MatchResources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ValidationActions", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ValidationActions = append(m.ValidationActions, ValidationAction(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -2281,7 +6248,7 @@ func (m *MutatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *MutatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
    +func (m *ValidatingAdmissionPolicyList) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2304,10 +6271,10 @@ func (m *MutatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: MutatingWebhookConfigurationList: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicyList: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: MutatingWebhookConfigurationList: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicyList: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    @@ -2372,7 +6339,7 @@ func (m *MutatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Items = append(m.Items, MutatingWebhookConfiguration{})
    +			m.Items = append(m.Items, ValidatingAdmissionPolicy{})
     			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
    @@ -2398,7 +6365,7 @@ func (m *MutatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *Rule) Unmarshal(dAtA []byte) error {
    +func (m *ValidatingAdmissionPolicySpec) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2421,17 +6388,17 @@ func (m *Rule) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: Rule: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicySpec: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: Rule: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicySpec: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field APIGroups", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ParamKind", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2441,29 +6408,33 @@ func (m *Rule) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.APIGroups = append(m.APIGroups, string(dAtA[iNdEx:postIndex]))
    +			if m.ParamKind == nil {
    +				m.ParamKind = &ParamKind{}
    +			}
    +			if err := m.ParamKind.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field APIVersions", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchConstraints", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2473,29 +6444,33 @@ func (m *Rule) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.APIVersions = append(m.APIVersions, string(dAtA[iNdEx:postIndex]))
    +			if m.MatchConstraints == nil {
    +				m.MatchConstraints = &MatchResources{}
    +			}
    +			if err := m.MatchConstraints.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Validations", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2505,27 +6480,29 @@ func (m *Rule) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Resources = append(m.Resources, string(dAtA[iNdEx:postIndex]))
    +			m.Validations = append(m.Validations, Validation{})
    +			if err := m.Validations[len(m.Validations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		case 4:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field FailurePolicy", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -2553,64 +6530,48 @@ func (m *Rule) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := ScopeType(dAtA[iNdEx:postIndex])
    -			m.Scope = &s
    +			s := FailurePolicyType(dAtA[iNdEx:postIndex])
    +			m.FailurePolicy = &s
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *RuleWithOperations) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AuditAnnotations", wireType)
     			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
     			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
     			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: RuleWithOperations: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: RuleWithOperations: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.AuditAnnotations = append(m.AuditAnnotations, AuditAnnotation{})
    +			if err := m.AuditAnnotations[len(m.AuditAnnotations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 6:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Operations", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchConditions", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2620,27 +6581,29 @@ func (m *RuleWithOperations) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Operations = append(m.Operations, OperationType(dAtA[iNdEx:postIndex]))
    +			m.MatchConditions = append(m.MatchConditions, MatchCondition{})
    +			if err := m.MatchConditions[len(m.MatchConditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
    -		case 2:
    +		case 7:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Variables", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2667,7 +6630,8 @@ func (m *RuleWithOperations) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.Rule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Variables = append(m.Variables, Variable{})
    +			if err := m.Variables[len(m.Variables)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -2692,7 +6656,7 @@ func (m *RuleWithOperations) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *ServiceReference) Unmarshal(dAtA []byte) error {
    +func (m *ValidatingAdmissionPolicyStatus) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2715,17 +6679,17 @@ func (m *ServiceReference) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: ServiceReference: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicyStatus: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ServiceReference: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ValidatingAdmissionPolicyStatus: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType)
     			}
    -			var stringLen uint64
    +			m.ObservedGeneration = 0
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2735,29 +6699,16 @@ func (m *ServiceReference) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				m.ObservedGeneration |= int64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Namespace = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field TypeChecking", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2767,29 +6718,33 @@ func (m *ServiceReference) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    +			if m.TypeChecking == nil {
    +				m.TypeChecking = &TypeChecking{}
    +			}
    +			if err := m.TypeChecking.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2799,45 +6754,26 @@ func (m *ServiceReference) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := string(dAtA[iNdEx:postIndex])
    -			m.Path = &s
    -			iNdEx = postIndex
    -		case 4:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
    -			}
    -			var v int32
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int32(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    +			m.Conditions = append(m.Conditions, v1.Condition{})
    +			if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
     			}
    -			m.Port = &v
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -3108,12 +7044,197 @@ func (m *ValidatingWebhook) Unmarshal(dAtA []byte) error {
     					break
     				}
     			}
    -			m.TimeoutSeconds = &v
    -		case 8:
    +			m.TimeoutSeconds = &v
    +		case 8:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AdmissionReviewVersions", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.AdmissionReviewVersions = append(m.AdmissionReviewVersions, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 9:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchPolicy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := MatchPolicyType(dAtA[iNdEx:postIndex])
    +			m.MatchPolicy = &s
    +			iNdEx = postIndex
    +		case 10:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ObjectSelector == nil {
    +				m.ObjectSelector = &v1.LabelSelector{}
    +			}
    +			if err := m.ObjectSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 11:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchConditions", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.MatchConditions = append(m.MatchConditions, MatchCondition{})
    +			if err := m.MatchConditions[len(m.MatchConditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ValidatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ValidatingWebhookConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ValidatingWebhookConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field AdmissionReviewVersions", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3123,29 +7244,30 @@ func (m *ValidatingWebhook) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.AdmissionReviewVersions = append(m.AdmissionReviewVersions, string(dAtA[iNdEx:postIndex]))
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
    -		case 9:
    +		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field MatchPolicy", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Webhooks", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3155,28 +7277,79 @@ func (m *ValidatingWebhook) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := MatchPolicyType(dAtA[iNdEx:postIndex])
    -			m.MatchPolicy = &s
    +			m.Webhooks = append(m.Webhooks, ValidatingWebhook{})
    +			if err := m.Webhooks[len(m.Webhooks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
    -		case 10:
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ValidatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ValidatingWebhookConfigurationList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ValidatingWebhookConfigurationList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectSelector", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3203,16 +7376,13 @@ func (m *ValidatingWebhook) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.ObjectSelector == nil {
    -				m.ObjectSelector = &v1.LabelSelector{}
    -			}
    -			if err := m.ObjectSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 11:
    +		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field MatchConditions", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3239,8 +7409,8 @@ func (m *ValidatingWebhook) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.MatchConditions = append(m.MatchConditions, MatchCondition{})
    -			if err := m.MatchConditions[len(m.MatchConditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Items = append(m.Items, ValidatingWebhookConfiguration{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -3265,7 +7435,7 @@ func (m *ValidatingWebhook) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *ValidatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
    +func (m *Validation) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3288,17 +7458,17 @@ func (m *ValidatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: ValidatingWebhookConfiguration: wiretype end group for non-group")
    +			return fmt.Errorf("proto: Validation: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ValidatingWebhookConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: Validation: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3308,30 +7478,29 @@ func (m *ValidatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Webhooks", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3341,25 +7510,88 @@ func (m *ValidatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Webhooks = append(m.Webhooks, ValidatingWebhook{})
    -			if err := m.Webhooks[len(m.Webhooks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    +			m.Message = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
     			}
    +			s := k8s_io_apimachinery_pkg_apis_meta_v1.StatusReason(dAtA[iNdEx:postIndex])
    +			m.Reason = &s
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MessageExpression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.MessageExpression = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -3382,7 +7614,7 @@ func (m *ValidatingWebhookConfiguration) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *ValidatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
    +func (m *Variable) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3405,17 +7637,17 @@ func (m *ValidatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: ValidatingWebhookConfigurationList: wiretype end group for non-group")
    +			return fmt.Errorf("proto: Variable: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ValidatingWebhookConfigurationList: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: Variable: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3425,30 +7657,29 @@ func (m *ValidatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3458,25 +7689,23 @@ func (m *ValidatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Items = append(m.Items, ValidatingWebhookConfiguration{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    diff --git a/vendor/k8s.io/api/admissionregistration/v1/generated.proto b/vendor/k8s.io/api/admissionregistration/v1/generated.proto
    index a8903621c8e2..e856e9eaf2fb 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1/generated.proto
    +++ b/vendor/k8s.io/api/admissionregistration/v1/generated.proto
    @@ -28,6 +28,56 @@ import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
     // Package-wide variables from generator "generated".
     option go_package = "k8s.io/api/admissionregistration/v1";
     
    +// AuditAnnotation describes how to produce an audit annotation for an API request.
    +message AuditAnnotation {
    +  // key specifies the audit annotation key. The audit annotation keys of
    +  // a ValidatingAdmissionPolicy must be unique. The key must be a qualified
    +  // name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.
    +  //
    +  // The key is combined with the resource name of the
    +  // ValidatingAdmissionPolicy to construct an audit annotation key:
    +  // "{ValidatingAdmissionPolicy name}/{key}".
    +  //
    +  // If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy
    +  // and the same audit annotation key, the annotation key will be identical.
    +  // In this case, the first annotation written with the key will be included
    +  // in the audit event and all subsequent annotations with the same key
    +  // will be discarded.
    +  //
    +  // Required.
    +  optional string key = 1;
    +
    +  // valueExpression represents the expression which is evaluated by CEL to
    +  // produce an audit annotation value. The expression must evaluate to either
    +  // a string or null value. If the expression evaluates to a string, the
    +  // audit annotation is included with the string value. If the expression
    +  // evaluates to null or empty string the audit annotation will be omitted.
    +  // The valueExpression may be no longer than 5kb in length.
    +  // If the result of the valueExpression is more than 10kb in length, it
    +  // will be truncated to 10kb.
    +  //
    +  // If multiple ValidatingAdmissionPolicyBinding resources match an
    +  // API request, then the valueExpression will be evaluated for
    +  // each binding. All unique values produced by the valueExpressions
    +  // will be joined together in a comma-separated list.
    +  //
    +  // Required.
    +  optional string valueExpression = 2;
    +}
    +
    +// ExpressionWarning is a warning information that targets a specific expression.
    +message ExpressionWarning {
    +  // The path to the field that refers the expression.
    +  // For example, the reference to the expression of the first item of
    +  // validations is "spec.validations[0].expression"
    +  optional string fieldRef = 2;
    +
    +  // The content of type checking information in a human-readable form.
    +  // Each line of the warning contains the type that the expression is checked
    +  // against, followed by the type check error from the compiler.
    +  optional string warning = 3;
    +}
    +
     // MatchCondition represents a condition which must by fulfilled for a request to be sent to a webhook.
     message MatchCondition {
       // Name is an identifier for this match condition, used for strategic merging of MatchConditions,
    @@ -57,6 +107,101 @@ message MatchCondition {
       optional string expression = 2;
     }
     
    +// MatchResources decides whether to run the admission control policy on an object based
    +// on whether it meets the match criteria.
    +// The exclude rules take precedence over include rules (if a resource matches both, it is excluded)
    +// +structType=atomic
    +message MatchResources {
    +  // NamespaceSelector decides whether to run the admission control policy on an object based
    +  // on whether the namespace for that object matches the selector. If the
    +  // object itself is a namespace, the matching is performed on
    +  // object.metadata.labels. If the object is another cluster scoped resource,
    +  // it never skips the policy.
    +  //
    +  // For example, to run the webhook on any objects whose namespace is not
    +  // associated with "runlevel" of "0" or "1";  you will set the selector as
    +  // follows:
    +  // "namespaceSelector": {
    +  //   "matchExpressions": [
    +  //     {
    +  //       "key": "runlevel",
    +  //       "operator": "NotIn",
    +  //       "values": [
    +  //         "0",
    +  //         "1"
    +  //       ]
    +  //     }
    +  //   ]
    +  // }
    +  //
    +  // If instead you want to only run the policy on any objects whose
    +  // namespace is associated with the "environment" of "prod" or "staging";
    +  // you will set the selector as follows:
    +  // "namespaceSelector": {
    +  //   "matchExpressions": [
    +  //     {
    +  //       "key": "environment",
    +  //       "operator": "In",
    +  //       "values": [
    +  //         "prod",
    +  //         "staging"
    +  //       ]
    +  //     }
    +  //   ]
    +  // }
    +  //
    +  // See
    +  // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
    +  // for more examples of label selectors.
    +  //
    +  // Default to the empty LabelSelector, which matches everything.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 1;
    +
    +  // ObjectSelector decides whether to run the validation based on if the
    +  // object has matching labels. objectSelector is evaluated against both
    +  // the oldObject and newObject that would be sent to the cel validation, and
    +  // is considered to match if either object matches the selector. A null
    +  // object (oldObject in the case of create, or newObject in the case of
    +  // delete) or an object that cannot have labels (like a
    +  // DeploymentRollback or a PodProxyOptions object) is not considered to
    +  // match.
    +  // Use the object selector only if the webhook is opt-in, because end
    +  // users may skip the admission webhook by setting the labels.
    +  // Default to the empty LabelSelector, which matches everything.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 2;
    +
    +  // ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches.
    +  // The policy cares about an operation if it matches _any_ Rule.
    +  // +listType=atomic
    +  // +optional
    +  repeated NamedRuleWithOperations resourceRules = 3;
    +
    +  // ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about.
    +  // The exclude rules take precedence over include rules (if a resource matches both, it is excluded)
    +  // +listType=atomic
    +  // +optional
    +  repeated NamedRuleWithOperations excludeResourceRules = 4;
    +
    +  // matchPolicy defines how the "MatchResources" list is used to match incoming requests.
    +  // Allowed values are "Exact" or "Equivalent".
    +  //
    +  // - Exact: match a request only if it exactly matches a specified rule.
    +  // For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1,
    +  // but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`,
    +  // a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy.
    +  //
    +  // - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version.
    +  // For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1,
    +  // and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`,
    +  // a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy.
    +  //
    +  // Defaults to "Equivalent"
    +  // +optional
    +  optional string matchPolicy = 7;
    +}
    +
     // MutatingWebhook describes an admission webhook and the resources and operations it applies to.
     message MutatingWebhook {
       // The name of the admission webhook.
    @@ -76,6 +221,7 @@ message MutatingWebhook {
       // from putting the cluster in a state which cannot be recovered from without completely
       // disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called
       // on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.
    +  // +listType=atomic
       repeated RuleWithOperations rules = 3;
     
       // FailurePolicy defines how unrecognized errors from the admission endpoint are handled -
    @@ -144,7 +290,7 @@ message MutatingWebhook {
       //
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
     
       // ObjectSelector decides whether to run the webhook based on if the
       // object has matching labels. objectSelector is evaluated against both
    @@ -158,7 +304,7 @@ message MutatingWebhook {
       // users may skip the admission webhook by setting the labels.
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 11;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 11;
     
       // SideEffects states whether this webhook has side effects.
       // Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown).
    @@ -183,6 +329,7 @@ message MutatingWebhook {
       // If a persisted webhook configuration specifies allowed versions and does not
       // include any versions known to the API Server, calls to the webhook will fail
       // and be subject to the failure policy.
    +  // +listType=atomic
       repeated string admissionReviewVersions = 8;
     
       // reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation.
    @@ -215,13 +362,10 @@ message MutatingWebhook {
       //      - If failurePolicy=Fail, reject the request
       //      - If failurePolicy=Ignore, the error is ignored and the webhook is skipped
       //
    -  // This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.
    -  //
       // +patchMergeKey=name
       // +patchStrategy=merge
       // +listType=map
       // +listMapKey=name
    -  // +featureGate=AdmissionWebhookMatchConditions
       // +optional
       repeated MatchCondition matchConditions = 12;
     }
    @@ -230,12 +374,14 @@ message MutatingWebhook {
     message MutatingWebhookConfiguration {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Webhooks is a list of webhooks and the affected resources and operations.
       // +optional
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated MutatingWebhook Webhooks = 2;
     }
     
    @@ -244,12 +390,94 @@ message MutatingWebhookConfigurationList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of MutatingWebhookConfiguration.
       repeated MutatingWebhookConfiguration items = 2;
     }
     
    +// NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.
    +// +structType=atomic
    +message NamedRuleWithOperations {
    +  // ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
    +  // +listType=atomic
    +  // +optional
    +  repeated string resourceNames = 1;
    +
    +  // RuleWithOperations is a tuple of Operations and Resources.
    +  optional RuleWithOperations ruleWithOperations = 2;
    +}
    +
    +// ParamKind is a tuple of Group Kind and Version.
    +// +structType=atomic
    +message ParamKind {
    +  // APIVersion is the API group version the resources belong to.
    +  // In format of "group/version".
    +  // Required.
    +  optional string apiVersion = 1;
    +
    +  // Kind is the API kind the resources belong to.
    +  // Required.
    +  optional string kind = 2;
    +}
    +
    +// ParamRef describes how to locate the params to be used as input to
    +// expressions of rules applied by a policy binding.
    +// +structType=atomic
    +message ParamRef {
    +  // name is the name of the resource being referenced.
    +  //
    +  // One of `name` or `selector` must be set, but `name` and `selector` are
    +  // mutually exclusive properties. If one is set, the other must be unset.
    +  //
    +  // A single parameter used for all admission requests can be configured
    +  // by setting the `name` field, leaving `selector` blank, and setting namespace
    +  // if `paramKind` is namespace-scoped.
    +  optional string name = 1;
    +
    +  // namespace is the namespace of the referenced resource. Allows limiting
    +  // the search for params to a specific namespace. Applies to both `name` and
    +  // `selector` fields.
    +  //
    +  // A per-namespace parameter may be used by specifying a namespace-scoped
    +  // `paramKind` in the policy and leaving this field empty.
    +  //
    +  // - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this
    +  // field results in a configuration error.
    +  //
    +  // - If `paramKind` is namespace-scoped, the namespace of the object being
    +  // evaluated for admission will be used when this field is left unset. Take
    +  // care that if this is left empty the binding must not match any cluster-scoped
    +  // resources, which will result in an error.
    +  //
    +  // +optional
    +  optional string namespace = 2;
    +
    +  // selector can be used to match multiple param objects based on their labels.
    +  // Supply selector: {} to match all resources of the ParamKind.
    +  //
    +  // If multiple params are found, they are all evaluated with the policy expressions
    +  // and the results are ANDed together.
    +  //
    +  // One of `name` or `selector` must be set, but `name` and `selector` are
    +  // mutually exclusive properties. If one is set, the other must be unset.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
    +
    +  // `parameterNotFoundAction` controls the behavior of the binding when the resource
    +  // exists, and name or selector is valid, but there are no parameters
    +  // matched by the binding. If the value is set to `Allow`, then no
    +  // matched parameters will be treated as successful validation by the binding.
    +  // If set to `Deny`, then no matched parameters will be subject to the
    +  // `failurePolicy` of the policy.
    +  //
    +  // Allowed values are `Allow` or `Deny`
    +  //
    +  // Required
    +  optional string parameterNotFoundAction = 4;
    +}
    +
     // Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended
     // to make sure that all the tuple expansions are valid.
     message Rule {
    @@ -333,6 +561,241 @@ message ServiceReference {
       optional int32 port = 4;
     }
     
    +// TypeChecking contains results of type checking the expressions in the
    +// ValidatingAdmissionPolicy
    +message TypeChecking {
    +  // The type checking warnings for each expression.
    +  // +optional
    +  // +listType=atomic
    +  repeated ExpressionWarning expressionWarnings = 1;
    +}
    +
    +// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it.
    +message ValidatingAdmissionPolicy {
    +  // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Specification of the desired behavior of the ValidatingAdmissionPolicy.
    +  optional ValidatingAdmissionPolicySpec spec = 2;
    +
    +  // The status of the ValidatingAdmissionPolicy, including warnings that are useful to determine if the policy
    +  // behaves in the expected way.
    +  // Populated by the system.
    +  // Read-only.
    +  // +optional
    +  optional ValidatingAdmissionPolicyStatus status = 3;
    +}
    +
    +// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources.
    +// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters.
    +//
    +// For a given admission request, each binding will cause its policy to be
    +// evaluated N times, where N is 1 for policies/bindings that don't use
    +// params, otherwise N is the number of parameters selected by the binding.
    +//
    +// The CEL expressions of a policy must have a computed CEL cost below the maximum
    +// CEL budget. Each evaluation of the policy is given an independent CEL cost budget.
    +// Adding/removing policies, bindings, or params can not affect whether a
    +// given (policy, binding, param) combination is within its own CEL budget.
    +message ValidatingAdmissionPolicyBinding {
    +  // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.
    +  optional ValidatingAdmissionPolicyBindingSpec spec = 2;
    +}
    +
    +// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.
    +message ValidatingAdmissionPolicyBindingList {
    +  // Standard list metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // List of PolicyBinding.
    +  repeated ValidatingAdmissionPolicyBinding items = 2;
    +}
    +
    +// ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.
    +message ValidatingAdmissionPolicyBindingSpec {
    +  // PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to.
    +  // If the referenced resource does not exist, this binding is considered invalid and will be ignored
    +  // Required.
    +  optional string policyName = 1;
    +
    +  // paramRef specifies the parameter resource used to configure the admission control policy.
    +  // It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy.
    +  // If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied.
    +  // If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.
    +  // +optional
    +  optional ParamRef paramRef = 2;
    +
    +  // MatchResources declares what resources match this binding and will be validated by it.
    +  // Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this.
    +  // If this is unset, all resources matched by the policy are validated by this binding
    +  // When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated.
    +  // Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required.
    +  // +optional
    +  optional MatchResources matchResources = 3;
    +
    +  // validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced.
    +  // If a validation evaluates to false it is always enforced according to these actions.
    +  //
    +  // Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according
    +  // to these actions only if the FailurePolicy is set to Fail, otherwise the failures are
    +  // ignored. This includes compilation errors, runtime errors and misconfigurations of the policy.
    +  //
    +  // validationActions is declared as a set of action values. Order does
    +  // not matter. validationActions may not contain duplicates of the same action.
    +  //
    +  // The supported actions values are:
    +  //
    +  // "Deny" specifies that a validation failure results in a denied request.
    +  //
    +  // "Warn" specifies that a validation failure is reported to the request client
    +  // in HTTP Warning headers, with a warning code of 299. Warnings can be sent
    +  // both for allowed or denied admission responses.
    +  //
    +  // "Audit" specifies that a validation failure is included in the published
    +  // audit event for the request. The audit event will contain a
    +  // `validation.policy.admission.k8s.io/validation_failure` audit annotation
    +  // with a value containing the details of the validation failures, formatted as
    +  // a JSON list of objects, each with the following fields:
    +  // - message: The validation failure message string
    +  // - policy: The resource name of the ValidatingAdmissionPolicy
    +  // - binding: The resource name of the ValidatingAdmissionPolicyBinding
    +  // - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy
    +  // - validationActions: The enforcement actions enacted for the validation failure
    +  // Example audit annotation:
    +  // `"validation.policy.admission.k8s.io/validation_failure": "[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]"`
    +  //
    +  // Clients should expect to handle additional values by ignoring
    +  // any values not recognized.
    +  //
    +  // "Deny" and "Warn" may not be used together since this combination
    +  // needlessly duplicates the validation failure both in the
    +  // API response body and the HTTP warning headers.
    +  //
    +  // Required.
    +  // +listType=set
    +  repeated string validationActions = 4;
    +}
    +
    +// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.
    +message ValidatingAdmissionPolicyList {
    +  // Standard list metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // List of ValidatingAdmissionPolicy.
    +  repeated ValidatingAdmissionPolicy items = 2;
    +}
    +
    +// ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.
    +message ValidatingAdmissionPolicySpec {
    +  // ParamKind specifies the kind of resources used to parameterize this policy.
    +  // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions.
    +  // If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied.
    +  // If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null.
    +  // +optional
    +  optional ParamKind paramKind = 1;
    +
    +  // MatchConstraints specifies what resources this policy is designed to validate.
    +  // The AdmissionPolicy cares about a request if it matches _all_ Constraints.
    +  // However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API
    +  // ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding.
    +  // Required.
    +  optional MatchResources matchConstraints = 2;
    +
    +  // Validations contain CEL expressions which is used to apply the validation.
    +  // Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is
    +  // required.
    +  // +listType=atomic
    +  // +optional
    +  repeated Validation validations = 3;
    +
    +  // failurePolicy defines how to handle failures for the admission policy. Failures can
    +  // occur from CEL expression parse errors, type check errors, runtime errors and invalid
    +  // or mis-configured policy definitions or bindings.
    +  //
    +  // A policy is invalid if spec.paramKind refers to a non-existent Kind.
    +  // A binding is invalid if spec.paramRef.name refers to a non-existent resource.
    +  //
    +  // failurePolicy does not define how validations that evaluate to false are handled.
    +  //
    +  // When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions
    +  // define how failures are enforced.
    +  //
    +  // Allowed values are Ignore or Fail. Defaults to Fail.
    +  // +optional
    +  optional string failurePolicy = 4;
    +
    +  // auditAnnotations contains CEL expressions which are used to produce audit
    +  // annotations for the audit event of the API request.
    +  // validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is
    +  // required.
    +  // +listType=atomic
    +  // +optional
    +  repeated AuditAnnotation auditAnnotations = 5;
    +
    +  // MatchConditions is a list of conditions that must be met for a request to be validated.
    +  // Match conditions filter requests that have already been matched by the rules,
    +  // namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests.
    +  // There are a maximum of 64 match conditions allowed.
    +  //
    +  // If a parameter object is provided, it can be accessed via the `params` handle in the same
    +  // manner as validation expressions.
    +  //
    +  // The exact matching logic is (in order):
    +  //   1. If ANY matchCondition evaluates to FALSE, the policy is skipped.
    +  //   2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.
    +  //   3. If any matchCondition evaluates to an error (but none are FALSE):
    +  //      - If failurePolicy=Fail, reject the request
    +  //      - If failurePolicy=Ignore, the policy is skipped
    +  //
    +  // +patchMergeKey=name
    +  // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
    +  // +optional
    +  repeated MatchCondition matchConditions = 6;
    +
    +  // Variables contain definitions of variables that can be used in composition of other expressions.
    +  // Each variable is defined as a named CEL expression.
    +  // The variables defined here will be available under `variables` in other expressions of the policy
    +  // except MatchConditions because MatchConditions are evaluated before the rest of the policy.
    +  //
    +  // The expression of a variable can refer to other variables defined earlier in the list but not those after.
    +  // Thus, Variables must be sorted by the order of first appearance and acyclic.
    +  // +patchMergeKey=name
    +  // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
    +  // +optional
    +  repeated Variable variables = 7;
    +}
    +
    +// ValidatingAdmissionPolicyStatus represents the status of an admission validation policy.
    +message ValidatingAdmissionPolicyStatus {
    +  // The generation observed by the controller.
    +  // +optional
    +  optional int64 observedGeneration = 1;
    +
    +  // The results of type checking for each expression.
    +  // Presence of this field indicates the completion of the type checking.
    +  // +optional
    +  optional TypeChecking typeChecking = 2;
    +
    +  // The conditions represent the latest available observations of a policy's current state.
    +  // +optional
    +  // +listType=map
    +  // +listMapKey=type
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 3;
    +}
    +
     // ValidatingWebhook describes an admission webhook and the resources and operations it applies to.
     message ValidatingWebhook {
       // The name of the admission webhook.
    @@ -352,6 +815,7 @@ message ValidatingWebhook {
       // from putting the cluster in a state which cannot be recovered from without completely
       // disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called
       // on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.
    +  // +listType=atomic
       repeated RuleWithOperations rules = 3;
     
       // FailurePolicy defines how unrecognized errors from the admission endpoint are handled -
    @@ -420,7 +884,7 @@ message ValidatingWebhook {
       //
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
     
       // ObjectSelector decides whether to run the webhook based on if the
       // object has matching labels. objectSelector is evaluated against both
    @@ -434,7 +898,7 @@ message ValidatingWebhook {
       // users may skip the admission webhook by setting the labels.
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 10;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 10;
     
       // SideEffects states whether this webhook has side effects.
       // Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown).
    @@ -459,6 +923,7 @@ message ValidatingWebhook {
       // If a persisted webhook configuration specifies allowed versions and does not
       // include any versions known to the API Server, calls to the webhook will fail
       // and be subject to the failure policy.
    +  // +listType=atomic
       repeated string admissionReviewVersions = 8;
     
       // MatchConditions is a list of conditions that must be met for a request to be sent to this
    @@ -473,13 +938,10 @@ message ValidatingWebhook {
       //      - If failurePolicy=Fail, reject the request
       //      - If failurePolicy=Ignore, the error is ignored and the webhook is skipped
       //
    -  // This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.
    -  //
       // +patchMergeKey=name
       // +patchStrategy=merge
       // +listType=map
       // +listMapKey=name
    -  // +featureGate=AdmissionWebhookMatchConditions
       // +optional
       repeated MatchCondition matchConditions = 11;
     }
    @@ -488,12 +950,14 @@ message ValidatingWebhook {
     message ValidatingWebhookConfiguration {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Webhooks is a list of webhooks and the affected resources and operations.
       // +optional
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated ValidatingWebhook Webhooks = 2;
     }
     
    @@ -502,12 +966,103 @@ message ValidatingWebhookConfigurationList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of ValidatingWebhookConfiguration.
       repeated ValidatingWebhookConfiguration items = 2;
     }
     
    +// Validation specifies the CEL expression which is used to apply the validation.
    +message Validation {
    +  // Expression represents the expression which will be evaluated by CEL.
    +  // ref: https://github.com/google/cel-spec
    +  // CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables:
    +  //
    +  // - 'object' - The object from the incoming request. The value is null for DELETE requests.
    +  // - 'oldObject' - The existing object. The value is null for CREATE requests.
    +  // - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)).
    +  // - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind.
    +  // - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources.
    +  // - 'variables' - Map of composited variables, from its name to its lazily evaluated value.
    +  //   For example, a variable named 'foo' can be accessed as 'variables.foo'.
    +  // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.
    +  //   See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
    +  // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the
    +  //   request resource.
    +  //
    +  // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
    +  // object. No other metadata properties are accessible.
    +  //
    +  // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
    +  // Accessible property names are escaped according to the following rules when accessed in the expression:
    +  // - '__' escapes to '__underscores__'
    +  // - '.' escapes to '__dot__'
    +  // - '-' escapes to '__dash__'
    +  // - '/' escapes to '__slash__'
    +  // - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
    +  // 	  "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
    +  // 	  "import", "let", "loop", "package", "namespace", "return".
    +  // Examples:
    +  //   - Expression accessing a property named "namespace": {"Expression": "object.__namespace__ > 0"}
    +  //   - Expression accessing a property named "x-prop": {"Expression": "object.x__dash__prop > 0"}
    +  //   - Expression accessing a property named "redact__d": {"Expression": "object.redact__underscores__d > 0"}
    +  //
    +  // Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
    +  // Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
    +  //   - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
    +  //     non-intersecting elements in `Y` are appended, retaining their partial order.
    +  //   - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
    +  //     are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
    +  //     non-intersecting keys are appended, retaining their partial order.
    +  // Required.
    +  optional string Expression = 1;
    +
    +  // Message represents the message displayed when validation fails. The message is required if the Expression contains
    +  // line breaks. The message must not contain line breaks.
    +  // If unset, the message is "failed rule: {Rule}".
    +  // e.g. "must be a URL with the host matching spec.host"
    +  // If the Expression contains line breaks. Message is required.
    +  // The message must not contain line breaks.
    +  // If unset, the message is "failed Expression: {Expression}".
    +  // +optional
    +  optional string message = 2;
    +
    +  // Reason represents a machine-readable description of why this validation failed.
    +  // If this is the first validation in the list to fail, this reason, as well as the
    +  // corresponding HTTP response code, are used in the
    +  // HTTP response to the client.
    +  // The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge".
    +  // If not set, StatusReasonInvalid is used in the response to the client.
    +  // +optional
    +  optional string reason = 3;
    +
    +  // messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
    +  // Since messageExpression is used as a failure message, it must evaluate to a string.
    +  // If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails.
    +  // If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
    +  // as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
    +  // that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
    +  // the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
    +  // messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'.
    +  // Example:
    +  // "object.x must be less than max ("+string(params.max)+")"
    +  // +optional
    +  optional string messageExpression = 4;
    +}
    +
    +// Variable is the definition of a variable that is used for composition. A variable is defined as a named expression.
    +// +structType=atomic
    +message Variable {
    +  // Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables.
    +  // The variable can be accessed in other expressions through `variables`
    +  // For example, if name is "foo", the variable will be available as `variables.foo`
    +  optional string Name = 1;
    +
    +  // Expression is the expression that will be evaluated as the value of the variable.
    +  // The CEL expression has access to the same identifiers as the CEL expressions in Validation.
    +  optional string Expression = 2;
    +}
    +
     // WebhookClientConfig contains the information to make a TLS
     // connection with the webhook
     message WebhookClientConfig {
    diff --git a/vendor/k8s.io/api/admissionregistration/v1/register.go b/vendor/k8s.io/api/admissionregistration/v1/register.go
    index e42a8bce3be0..da74379ce2ed 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1/register.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1/register.go
    @@ -50,6 +50,10 @@ func addKnownTypes(scheme *runtime.Scheme) error {
     		&ValidatingWebhookConfigurationList{},
     		&MutatingWebhookConfiguration{},
     		&MutatingWebhookConfigurationList{},
    +		&ValidatingAdmissionPolicy{},
    +		&ValidatingAdmissionPolicyList{},
    +		&ValidatingAdmissionPolicyBinding{},
    +		&ValidatingAdmissionPolicyBindingList{},
     	)
     	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
     	return nil
    diff --git a/vendor/k8s.io/api/admissionregistration/v1/types.go b/vendor/k8s.io/api/admissionregistration/v1/types.go
    index 07ed7a6246bd..4efeb26748c6 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1/types.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1/types.go
    @@ -91,6 +91,18 @@ const (
     	Fail FailurePolicyType = "Fail"
     )
     
    +// ParameterNotFoundActionType specifies a failure policy that defines how a binding
    +// is evaluated when the param referred by its perNamespaceParamRef is not found.
    +type ParameterNotFoundActionType string
    +
    +const (
    +	// Allow means all requests will be admitted if no param resources
    +	// could be found.
    +	AllowAction ParameterNotFoundActionType = "Allow"
    +	// Deny means all requests will be denied if no param resources are found.
    +	DenyAction ParameterNotFoundActionType = "Deny"
    +)
    +
     // MatchPolicyType specifies the type of match policy.
     // +enum
     type MatchPolicyType string
    @@ -120,9 +132,590 @@ const (
     	SideEffectClassNoneOnDryRun SideEffectClass = "NoneOnDryRun"
     )
     
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.30
    +
    +// ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it.
    +type ValidatingAdmissionPolicy struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// Specification of the desired behavior of the ValidatingAdmissionPolicy.
    +	Spec ValidatingAdmissionPolicySpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    +	// The status of the ValidatingAdmissionPolicy, including warnings that are useful to determine if the policy
    +	// behaves in the expected way.
    +	// Populated by the system.
    +	// Read-only.
    +	// +optional
    +	Status ValidatingAdmissionPolicyStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
    +}
    +
    +// ValidatingAdmissionPolicyStatus represents the status of an admission validation policy.
    +type ValidatingAdmissionPolicyStatus struct {
    +	// The generation observed by the controller.
    +	// +optional
    +	ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"`
    +	// The results of type checking for each expression.
    +	// Presence of this field indicates the completion of the type checking.
    +	// +optional
    +	TypeChecking *TypeChecking `json:"typeChecking,omitempty" protobuf:"bytes,2,opt,name=typeChecking"`
    +	// The conditions represent the latest available observations of a policy's current state.
    +	// +optional
    +	// +listType=map
    +	// +listMapKey=type
    +	Conditions []metav1.Condition `json:"conditions,omitempty" protobuf:"bytes,3,rep,name=conditions"`
    +}
    +
    +// ValidatingAdmissionPolicyConditionType is the condition type of admission validation policy.
    +type ValidatingAdmissionPolicyConditionType string
    +
    +// TypeChecking contains results of type checking the expressions in the
    +// ValidatingAdmissionPolicy
    +type TypeChecking struct {
    +	// The type checking warnings for each expression.
    +	// +optional
    +	// +listType=atomic
    +	ExpressionWarnings []ExpressionWarning `json:"expressionWarnings,omitempty" protobuf:"bytes,1,rep,name=expressionWarnings"`
    +}
    +
    +// ExpressionWarning is a warning information that targets a specific expression.
    +type ExpressionWarning struct {
    +	// The path to the field that refers the expression.
    +	// For example, the reference to the expression of the first item of
    +	// validations is "spec.validations[0].expression"
    +	FieldRef string `json:"fieldRef" protobuf:"bytes,2,opt,name=fieldRef"`
    +	// The content of type checking information in a human-readable form.
    +	// Each line of the warning contains the type that the expression is checked
    +	// against, followed by the type check error from the compiler.
    +	Warning string `json:"warning" protobuf:"bytes,3,opt,name=warning"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.30
    +
    +// ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.
    +type ValidatingAdmissionPolicyList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// List of ValidatingAdmissionPolicy.
    +	Items []ValidatingAdmissionPolicy `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.
    +type ValidatingAdmissionPolicySpec struct {
    +	// ParamKind specifies the kind of resources used to parameterize this policy.
    +	// If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions.
    +	// If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied.
    +	// If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null.
    +	// +optional
    +	ParamKind *ParamKind `json:"paramKind,omitempty" protobuf:"bytes,1,rep,name=paramKind"`
    +
    +	// MatchConstraints specifies what resources this policy is designed to validate.
    +	// The AdmissionPolicy cares about a request if it matches _all_ Constraints.
    +	// However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API
    +	// ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding.
    +	// Required.
    +	MatchConstraints *MatchResources `json:"matchConstraints,omitempty" protobuf:"bytes,2,rep,name=matchConstraints"`
    +
    +	// Validations contain CEL expressions which is used to apply the validation.
    +	// Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is
    +	// required.
    +	// +listType=atomic
    +	// +optional
    +	Validations []Validation `json:"validations,omitempty" protobuf:"bytes,3,rep,name=validations"`
    +
    +	// failurePolicy defines how to handle failures for the admission policy. Failures can
    +	// occur from CEL expression parse errors, type check errors, runtime errors and invalid
    +	// or mis-configured policy definitions or bindings.
    +	//
    +	// A policy is invalid if spec.paramKind refers to a non-existent Kind.
    +	// A binding is invalid if spec.paramRef.name refers to a non-existent resource.
    +	//
    +	// failurePolicy does not define how validations that evaluate to false are handled.
    +	//
    +	// When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions
    +	// define how failures are enforced.
    +	//
    +	// Allowed values are Ignore or Fail. Defaults to Fail.
    +	// +optional
    +	FailurePolicy *FailurePolicyType `json:"failurePolicy,omitempty" protobuf:"bytes,4,opt,name=failurePolicy,casttype=FailurePolicyType"`
    +
    +	// auditAnnotations contains CEL expressions which are used to produce audit
    +	// annotations for the audit event of the API request.
    +	// validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is
    +	// required.
    +	// +listType=atomic
    +	// +optional
    +	AuditAnnotations []AuditAnnotation `json:"auditAnnotations,omitempty" protobuf:"bytes,5,rep,name=auditAnnotations"`
    +
    +	// MatchConditions is a list of conditions that must be met for a request to be validated.
    +	// Match conditions filter requests that have already been matched by the rules,
    +	// namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests.
    +	// There are a maximum of 64 match conditions allowed.
    +	//
    +	// If a parameter object is provided, it can be accessed via the `params` handle in the same
    +	// manner as validation expressions.
    +	//
    +	// The exact matching logic is (in order):
    +	//   1. If ANY matchCondition evaluates to FALSE, the policy is skipped.
    +	//   2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.
    +	//   3. If any matchCondition evaluates to an error (but none are FALSE):
    +	//      - If failurePolicy=Fail, reject the request
    +	//      - If failurePolicy=Ignore, the policy is skipped
    +	//
    +	// +patchMergeKey=name
    +	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
    +	// +optional
    +	MatchConditions []MatchCondition `json:"matchConditions,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,6,rep,name=matchConditions"`
    +
    +	// Variables contain definitions of variables that can be used in composition of other expressions.
    +	// Each variable is defined as a named CEL expression.
    +	// The variables defined here will be available under `variables` in other expressions of the policy
    +	// except MatchConditions because MatchConditions are evaluated before the rest of the policy.
    +	//
    +	// The expression of a variable can refer to other variables defined earlier in the list but not those after.
    +	// Thus, Variables must be sorted by the order of first appearance and acyclic.
    +	// +patchMergeKey=name
    +	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
    +	// +optional
    +	Variables []Variable `json:"variables,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,7,rep,name=variables"`
    +}
    +
    +// ParamKind is a tuple of Group Kind and Version.
    +// +structType=atomic
    +type ParamKind struct {
    +	// APIVersion is the API group version the resources belong to.
    +	// In format of "group/version".
    +	// Required.
    +	APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,1,rep,name=apiVersion"`
    +
    +	// Kind is the API kind the resources belong to.
    +	// Required.
    +	Kind string `json:"kind,omitempty" protobuf:"bytes,2,rep,name=kind"`
    +}
    +
    +// Validation specifies the CEL expression which is used to apply the validation.
    +type Validation struct {
    +	// Expression represents the expression which will be evaluated by CEL.
    +	// ref: https://github.com/google/cel-spec
    +	// CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables:
    +	//
    +	// - 'object' - The object from the incoming request. The value is null for DELETE requests.
    +	// - 'oldObject' - The existing object. The value is null for CREATE requests.
    +	// - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)).
    +	// - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind.
    +	// - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources.
    +	// - 'variables' - Map of composited variables, from its name to its lazily evaluated value.
    +	//   For example, a variable named 'foo' can be accessed as 'variables.foo'.
    +	// - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.
    +	//   See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
    +	// - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the
    +	//   request resource.
    +	//
    +	// The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
    +	// object. No other metadata properties are accessible.
    +	//
    +	// Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
    +	// Accessible property names are escaped according to the following rules when accessed in the expression:
    +	// - '__' escapes to '__underscores__'
    +	// - '.' escapes to '__dot__'
    +	// - '-' escapes to '__dash__'
    +	// - '/' escapes to '__slash__'
    +	// - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
    +	//	  "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
    +	//	  "import", "let", "loop", "package", "namespace", "return".
    +	// Examples:
    +	//   - Expression accessing a property named "namespace": {"Expression": "object.__namespace__ > 0"}
    +	//   - Expression accessing a property named "x-prop": {"Expression": "object.x__dash__prop > 0"}
    +	//   - Expression accessing a property named "redact__d": {"Expression": "object.redact__underscores__d > 0"}
    +	//
    +	// Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
    +	// Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
    +	//   - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
    +	//     non-intersecting elements in `Y` are appended, retaining their partial order.
    +	//   - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
    +	//     are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
    +	//     non-intersecting keys are appended, retaining their partial order.
    +	// Required.
    +	Expression string `json:"expression" protobuf:"bytes,1,opt,name=Expression"`
    +	// Message represents the message displayed when validation fails. The message is required if the Expression contains
    +	// line breaks. The message must not contain line breaks.
    +	// If unset, the message is "failed rule: {Rule}".
    +	// e.g. "must be a URL with the host matching spec.host"
    +	// If the Expression contains line breaks. Message is required.
    +	// The message must not contain line breaks.
    +	// If unset, the message is "failed Expression: {Expression}".
    +	// +optional
    +	Message string `json:"message,omitempty" protobuf:"bytes,2,opt,name=message"`
    +	// Reason represents a machine-readable description of why this validation failed.
    +	// If this is the first validation in the list to fail, this reason, as well as the
    +	// corresponding HTTP response code, are used in the
    +	// HTTP response to the client.
    +	// The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge".
    +	// If not set, StatusReasonInvalid is used in the response to the client.
    +	// +optional
    +	Reason *metav1.StatusReason `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"`
    +	// messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
    +	// Since messageExpression is used as a failure message, it must evaluate to a string.
    +	// If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails.
    +	// If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
    +	// as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
    +	// that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
    +	// the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
    +	// messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'.
    +	// Example:
    +	// "object.x must be less than max ("+string(params.max)+")"
    +	// +optional
    +	MessageExpression string `json:"messageExpression,omitempty" protobuf:"bytes,4,opt,name=messageExpression"`
    +}
    +
    +// Variable is the definition of a variable that is used for composition. A variable is defined as a named expression.
    +// +structType=atomic
    +type Variable struct {
    +	// Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables.
    +	// The variable can be accessed in other expressions through `variables`
    +	// For example, if name is "foo", the variable will be available as `variables.foo`
    +	Name string `json:"name" protobuf:"bytes,1,opt,name=Name"`
    +
    +	// Expression is the expression that will be evaluated as the value of the variable.
    +	// The CEL expression has access to the same identifiers as the CEL expressions in Validation.
    +	Expression string `json:"expression" protobuf:"bytes,2,opt,name=Expression"`
    +}
    +
    +// AuditAnnotation describes how to produce an audit annotation for an API request.
    +type AuditAnnotation struct {
    +	// key specifies the audit annotation key. The audit annotation keys of
    +	// a ValidatingAdmissionPolicy must be unique. The key must be a qualified
    +	// name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.
    +	//
    +	// The key is combined with the resource name of the
    +	// ValidatingAdmissionPolicy to construct an audit annotation key:
    +	// "{ValidatingAdmissionPolicy name}/{key}".
    +	//
    +	// If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy
    +	// and the same audit annotation key, the annotation key will be identical.
    +	// In this case, the first annotation written with the key will be included
    +	// in the audit event and all subsequent annotations with the same key
    +	// will be discarded.
    +	//
    +	// Required.
    +	Key string `json:"key" protobuf:"bytes,1,opt,name=key"`
    +
    +	// valueExpression represents the expression which is evaluated by CEL to
    +	// produce an audit annotation value. The expression must evaluate to either
    +	// a string or null value. If the expression evaluates to a string, the
    +	// audit annotation is included with the string value. If the expression
    +	// evaluates to null or empty string the audit annotation will be omitted.
    +	// The valueExpression may be no longer than 5kb in length.
    +	// If the result of the valueExpression is more than 10kb in length, it
    +	// will be truncated to 10kb.
    +	//
    +	// If multiple ValidatingAdmissionPolicyBinding resources match an
    +	// API request, then the valueExpression will be evaluated for
    +	// each binding. All unique values produced by the valueExpressions
    +	// will be joined together in a comma-separated list.
    +	//
    +	// Required.
    +	ValueExpression string `json:"valueExpression" protobuf:"bytes,2,opt,name=valueExpression"`
    +}
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.30
    +
    +// ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources.
    +// ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters.
    +//
    +// For a given admission request, each binding will cause its policy to be
    +// evaluated N times, where N is 1 for policies/bindings that don't use
    +// params, otherwise N is the number of parameters selected by the binding.
    +//
    +// The CEL expressions of a policy must have a computed CEL cost below the maximum
    +// CEL budget. Each evaluation of the policy is given an independent CEL cost budget.
    +// Adding/removing policies, bindings, or params can not affect whether a
    +// given (policy, binding, param) combination is within its own CEL budget.
    +type ValidatingAdmissionPolicyBinding struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.
    +	Spec ValidatingAdmissionPolicyBindingSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.30
    +
    +// ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.
    +type ValidatingAdmissionPolicyBindingList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// List of PolicyBinding.
    +	Items []ValidatingAdmissionPolicyBinding `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.
    +type ValidatingAdmissionPolicyBindingSpec struct {
    +	// PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to.
    +	// If the referenced resource does not exist, this binding is considered invalid and will be ignored
    +	// Required.
    +	PolicyName string `json:"policyName,omitempty" protobuf:"bytes,1,rep,name=policyName"`
    +
    +	// paramRef specifies the parameter resource used to configure the admission control policy.
    +	// It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy.
    +	// If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied.
    +	// If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.
    +	// +optional
    +	ParamRef *ParamRef `json:"paramRef,omitempty" protobuf:"bytes,2,rep,name=paramRef"`
    +
    +	// MatchResources declares what resources match this binding and will be validated by it.
    +	// Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this.
    +	// If this is unset, all resources matched by the policy are validated by this binding
    +	// When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated.
    +	// Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required.
    +	// +optional
    +	MatchResources *MatchResources `json:"matchResources,omitempty" protobuf:"bytes,3,rep,name=matchResources"`
    +
    +	// validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced.
    +	// If a validation evaluates to false it is always enforced according to these actions.
    +	//
    +	// Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according
    +	// to these actions only if the FailurePolicy is set to Fail, otherwise the failures are
    +	// ignored. This includes compilation errors, runtime errors and misconfigurations of the policy.
    +	//
    +	// validationActions is declared as a set of action values. Order does
    +	// not matter. validationActions may not contain duplicates of the same action.
    +	//
    +	// The supported actions values are:
    +	//
    +	// "Deny" specifies that a validation failure results in a denied request.
    +	//
    +	// "Warn" specifies that a validation failure is reported to the request client
    +	// in HTTP Warning headers, with a warning code of 299. Warnings can be sent
    +	// both for allowed or denied admission responses.
    +	//
    +	// "Audit" specifies that a validation failure is included in the published
    +	// audit event for the request. The audit event will contain a
    +	// `validation.policy.admission.k8s.io/validation_failure` audit annotation
    +	// with a value containing the details of the validation failures, formatted as
    +	// a JSON list of objects, each with the following fields:
    +	// - message: The validation failure message string
    +	// - policy: The resource name of the ValidatingAdmissionPolicy
    +	// - binding: The resource name of the ValidatingAdmissionPolicyBinding
    +	// - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy
    +	// - validationActions: The enforcement actions enacted for the validation failure
    +	// Example audit annotation:
    +	// `"validation.policy.admission.k8s.io/validation_failure": "[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]"`
    +	//
    +	// Clients should expect to handle additional values by ignoring
    +	// any values not recognized.
    +	//
    +	// "Deny" and "Warn" may not be used together since this combination
    +	// needlessly duplicates the validation failure both in the
    +	// API response body and the HTTP warning headers.
    +	//
    +	// Required.
    +	// +listType=set
    +	ValidationActions []ValidationAction `json:"validationActions,omitempty" protobuf:"bytes,4,rep,name=validationActions"`
    +}
    +
    +// ParamRef describes how to locate the params to be used as input to
    +// expressions of rules applied by a policy binding.
    +// +structType=atomic
    +type ParamRef struct {
    +	// name is the name of the resource being referenced.
    +	//
    +	// One of `name` or `selector` must be set, but `name` and `selector` are
    +	// mutually exclusive properties. If one is set, the other must be unset.
    +	//
    +	// A single parameter used for all admission requests can be configured
    +	// by setting the `name` field, leaving `selector` blank, and setting namespace
    +	// if `paramKind` is namespace-scoped.
    +	//
    +	Name string `json:"name,omitempty" protobuf:"bytes,1,rep,name=name"`
    +
    +	// namespace is the namespace of the referenced resource. Allows limiting
    +	// the search for params to a specific namespace. Applies to both `name` and
    +	// `selector` fields.
    +	//
    +	// A per-namespace parameter may be used by specifying a namespace-scoped
    +	// `paramKind` in the policy and leaving this field empty.
    +	//
    +	// - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this
    +	// field results in a configuration error.
    +	//
    +	// - If `paramKind` is namespace-scoped, the namespace of the object being
    +	// evaluated for admission will be used when this field is left unset. Take
    +	// care that if this is left empty the binding must not match any cluster-scoped
    +	// resources, which will result in an error.
    +	//
    +	// +optional
    +	Namespace string `json:"namespace,omitempty" protobuf:"bytes,2,rep,name=namespace"`
    +
    +	// selector can be used to match multiple param objects based on their labels.
    +	// Supply selector: {} to match all resources of the ParamKind.
    +	//
    +	// If multiple params are found, they are all evaluated with the policy expressions
    +	// and the results are ANDed together.
    +	//
    +	// One of `name` or `selector` must be set, but `name` and `selector` are
    +	// mutually exclusive properties. If one is set, the other must be unset.
    +	//
    +	// +optional
    +	Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,3,rep,name=selector"`
    +
    +	// `parameterNotFoundAction` controls the behavior of the binding when the resource
    +	// exists, and name or selector is valid, but there are no parameters
    +	// matched by the binding. If the value is set to `Allow`, then no
    +	// matched parameters will be treated as successful validation by the binding.
    +	// If set to `Deny`, then no matched parameters will be subject to the
    +	// `failurePolicy` of the policy.
    +	//
    +	// Allowed values are `Allow` or `Deny`
    +	//
    +	// Required
    +	ParameterNotFoundAction *ParameterNotFoundActionType `json:"parameterNotFoundAction,omitempty" protobuf:"bytes,4,rep,name=parameterNotFoundAction"`
    +}
    +
    +// MatchResources decides whether to run the admission control policy on an object based
    +// on whether it meets the match criteria.
    +// The exclude rules take precedence over include rules (if a resource matches both, it is excluded)
    +// +structType=atomic
    +type MatchResources struct {
    +	// NamespaceSelector decides whether to run the admission control policy on an object based
    +	// on whether the namespace for that object matches the selector. If the
    +	// object itself is a namespace, the matching is performed on
    +	// object.metadata.labels. If the object is another cluster scoped resource,
    +	// it never skips the policy.
    +	//
    +	// For example, to run the webhook on any objects whose namespace is not
    +	// associated with "runlevel" of "0" or "1";  you will set the selector as
    +	// follows:
    +	// "namespaceSelector": {
    +	//   "matchExpressions": [
    +	//     {
    +	//       "key": "runlevel",
    +	//       "operator": "NotIn",
    +	//       "values": [
    +	//         "0",
    +	//         "1"
    +	//       ]
    +	//     }
    +	//   ]
    +	// }
    +	//
    +	// If instead you want to only run the policy on any objects whose
    +	// namespace is associated with the "environment" of "prod" or "staging";
    +	// you will set the selector as follows:
    +	// "namespaceSelector": {
    +	//   "matchExpressions": [
    +	//     {
    +	//       "key": "environment",
    +	//       "operator": "In",
    +	//       "values": [
    +	//         "prod",
    +	//         "staging"
    +	//       ]
    +	//     }
    +	//   ]
    +	// }
    +	//
    +	// See
    +	// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
    +	// for more examples of label selectors.
    +	//
    +	// Default to the empty LabelSelector, which matches everything.
    +	// +optional
    +	NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,1,opt,name=namespaceSelector"`
    +	// ObjectSelector decides whether to run the validation based on if the
    +	// object has matching labels. objectSelector is evaluated against both
    +	// the oldObject and newObject that would be sent to the cel validation, and
    +	// is considered to match if either object matches the selector. A null
    +	// object (oldObject in the case of create, or newObject in the case of
    +	// delete) or an object that cannot have labels (like a
    +	// DeploymentRollback or a PodProxyOptions object) is not considered to
    +	// match.
    +	// Use the object selector only if the webhook is opt-in, because end
    +	// users may skip the admission webhook by setting the labels.
    +	// Default to the empty LabelSelector, which matches everything.
    +	// +optional
    +	ObjectSelector *metav1.LabelSelector `json:"objectSelector,omitempty" protobuf:"bytes,2,opt,name=objectSelector"`
    +	// ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches.
    +	// The policy cares about an operation if it matches _any_ Rule.
    +	// +listType=atomic
    +	// +optional
    +	ResourceRules []NamedRuleWithOperations `json:"resourceRules,omitempty" protobuf:"bytes,3,rep,name=resourceRules"`
    +	// ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about.
    +	// The exclude rules take precedence over include rules (if a resource matches both, it is excluded)
    +	// +listType=atomic
    +	// +optional
    +	ExcludeResourceRules []NamedRuleWithOperations `json:"excludeResourceRules,omitempty" protobuf:"bytes,4,rep,name=excludeResourceRules"`
    +	// matchPolicy defines how the "MatchResources" list is used to match incoming requests.
    +	// Allowed values are "Exact" or "Equivalent".
    +	//
    +	// - Exact: match a request only if it exactly matches a specified rule.
    +	// For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1,
    +	// but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`,
    +	// a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy.
    +	//
    +	// - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version.
    +	// For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1,
    +	// and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`,
    +	// a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy.
    +	//
    +	// Defaults to "Equivalent"
    +	// +optional
    +	MatchPolicy *MatchPolicyType `json:"matchPolicy,omitempty" protobuf:"bytes,7,opt,name=matchPolicy,casttype=MatchPolicyType"`
    +}
    +
    +// ValidationAction specifies a policy enforcement action.
    +// +enum
    +type ValidationAction string
    +
    +const (
    +	// Deny specifies that a validation failure results in a denied request.
    +	Deny ValidationAction = "Deny"
    +	// Warn specifies that a validation failure is reported to the request client
    +	// in HTTP Warning headers, with a warning code of 299. Warnings can be sent
    +	// both for allowed or denied admission responses.
    +	Warn ValidationAction = "Warn"
    +	// Audit specifies that a validation failure is included in the published
    +	// audit event for the request. The audit event will contain a
    +	// `validation.policy.admission.k8s.io/validation_failure` audit annotation
    +	// with a value containing the details of the validation failure.
    +	Audit ValidationAction = "Audit"
    +)
    +
    +// NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.
    +// +structType=atomic
    +type NamedRuleWithOperations struct {
    +	// ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
    +	// +listType=atomic
    +	// +optional
    +	ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,1,rep,name=resourceNames"`
    +	// RuleWithOperations is a tuple of Operations and Resources.
    +	RuleWithOperations `json:",inline" protobuf:"bytes,2,opt,name=ruleWithOperations"`
    +}
    +
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.16
     
     // ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it.
     type ValidatingWebhookConfiguration struct {
    @@ -134,10 +727,13 @@ type ValidatingWebhookConfiguration struct {
     	// +optional
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	Webhooks []ValidatingWebhook `json:"webhooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=Webhooks"`
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.16
     
     // ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.
     type ValidatingWebhookConfigurationList struct {
    @@ -153,6 +749,7 @@ type ValidatingWebhookConfigurationList struct {
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.16
     
     // MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.
     type MutatingWebhookConfiguration struct {
    @@ -164,10 +761,13 @@ type MutatingWebhookConfiguration struct {
     	// +optional
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	Webhooks []MutatingWebhook `json:"webhooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=Webhooks"`
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.16
     
     // MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.
     type MutatingWebhookConfigurationList struct {
    @@ -199,6 +799,7 @@ type ValidatingWebhook struct {
     	// from putting the cluster in a state which cannot be recovered from without completely
     	// disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called
     	// on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.
    +	// +listType=atomic
     	Rules []RuleWithOperations `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"`
     
     	// FailurePolicy defines how unrecognized errors from the admission endpoint are handled -
    @@ -306,6 +907,7 @@ type ValidatingWebhook struct {
     	// If a persisted webhook configuration specifies allowed versions and does not
     	// include any versions known to the API Server, calls to the webhook will fail
     	// and be subject to the failure policy.
    +	// +listType=atomic
     	AdmissionReviewVersions []string `json:"admissionReviewVersions" protobuf:"bytes,8,rep,name=admissionReviewVersions"`
     
     	// MatchConditions is a list of conditions that must be met for a request to be sent to this
    @@ -320,13 +922,10 @@ type ValidatingWebhook struct {
     	//      - If failurePolicy=Fail, reject the request
     	//      - If failurePolicy=Ignore, the error is ignored and the webhook is skipped
     	//
    -	// This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.
    -	//
     	// +patchMergeKey=name
     	// +patchStrategy=merge
     	// +listType=map
     	// +listMapKey=name
    -	// +featureGate=AdmissionWebhookMatchConditions
     	// +optional
     	MatchConditions []MatchCondition `json:"matchConditions,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,11,opt,name=matchConditions"`
     }
    @@ -350,6 +949,7 @@ type MutatingWebhook struct {
     	// from putting the cluster in a state which cannot be recovered from without completely
     	// disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called
     	// on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.
    +	// +listType=atomic
     	Rules []RuleWithOperations `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"`
     
     	// FailurePolicy defines how unrecognized errors from the admission endpoint are handled -
    @@ -457,6 +1057,7 @@ type MutatingWebhook struct {
     	// If a persisted webhook configuration specifies allowed versions and does not
     	// include any versions known to the API Server, calls to the webhook will fail
     	// and be subject to the failure policy.
    +	// +listType=atomic
     	AdmissionReviewVersions []string `json:"admissionReviewVersions" protobuf:"bytes,8,rep,name=admissionReviewVersions"`
     
     	// reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation.
    @@ -489,13 +1090,10 @@ type MutatingWebhook struct {
     	//      - If failurePolicy=Fail, reject the request
     	//      - If failurePolicy=Ignore, the error is ignored and the webhook is skipped
     	//
    -	// This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.
    -	//
     	// +patchMergeKey=name
     	// +patchStrategy=merge
     	// +listType=map
     	// +listMapKey=name
    -	// +featureGate=AdmissionWebhookMatchConditions
     	// +optional
     	MatchConditions []MatchCondition `json:"matchConditions,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,12,opt,name=matchConditions"`
     }
    diff --git a/vendor/k8s.io/api/admissionregistration/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/admissionregistration/v1/types_swagger_doc_generated.go
    index c41cceb2f24b..f43139505d15 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1/types_swagger_doc_generated.go
    @@ -27,6 +27,26 @@ package v1
     // Those methods can be generated by using hack/update-codegen.sh
     
     // AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    +var map_AuditAnnotation = map[string]string{
    +	"":                "AuditAnnotation describes how to produce an audit annotation for an API request.",
    +	"key":             "key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.\n\nThe key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \"{ValidatingAdmissionPolicy name}/{key}\".\n\nIf an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded.\n\nRequired.",
    +	"valueExpression": "valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb.\n\nIf multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list.\n\nRequired.",
    +}
    +
    +func (AuditAnnotation) SwaggerDoc() map[string]string {
    +	return map_AuditAnnotation
    +}
    +
    +var map_ExpressionWarning = map[string]string{
    +	"":         "ExpressionWarning is a warning information that targets a specific expression.",
    +	"fieldRef": "The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \"spec.validations[0].expression\"",
    +	"warning":  "The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler.",
    +}
    +
    +func (ExpressionWarning) SwaggerDoc() map[string]string {
    +	return map_ExpressionWarning
    +}
    +
     var map_MatchCondition = map[string]string{
     	"":           "MatchCondition represents a condition which must by fulfilled for a request to be sent to a webhook.",
     	"name":       "Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')\n\nRequired.",
    @@ -37,6 +57,19 @@ func (MatchCondition) SwaggerDoc() map[string]string {
     	return map_MatchCondition
     }
     
    +var map_MatchResources = map[string]string{
    +	"":                     "MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)",
    +	"namespaceSelector":    "NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy.\n\nFor example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\";  you will set the selector as follows: \"namespaceSelector\": {\n  \"matchExpressions\": [\n    {\n      \"key\": \"runlevel\",\n      \"operator\": \"NotIn\",\n      \"values\": [\n        \"0\",\n        \"1\"\n      ]\n    }\n  ]\n}\n\nIf instead you want to only run the policy on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n  \"matchExpressions\": [\n    {\n      \"key\": \"environment\",\n      \"operator\": \"In\",\n      \"values\": [\n        \"prod\",\n        \"staging\"\n      ]\n    }\n  ]\n}\n\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\n\nDefault to the empty LabelSelector, which matches everything.",
    +	"objectSelector":       "ObjectSelector decides whether to run the validation based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.",
    +	"resourceRules":        "ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule.",
    +	"excludeResourceRules": "ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)",
    +	"matchPolicy":          "matchPolicy defines how the \"MatchResources\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\".\n\n- Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy.\n\n- Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy.\n\nDefaults to \"Equivalent\"",
    +}
    +
    +func (MatchResources) SwaggerDoc() map[string]string {
    +	return map_MatchResources
    +}
    +
     var map_MutatingWebhook = map[string]string{
     	"":                        "MutatingWebhook describes an admission webhook and the resources and operations it applies to.",
     	"name":                    "The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.",
    @@ -50,7 +83,7 @@ var map_MutatingWebhook = map[string]string{
     	"timeoutSeconds":          "TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds.",
     	"admissionReviewVersions": "AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy.",
     	"reinvocationPolicy":      "reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation. Allowed values are \"Never\" and \"IfNeeded\".\n\nNever: the webhook will not be called more than once in a single admission evaluation.\n\nIfNeeded: the webhook will be called at least one additional time as part of the admission evaluation if the object being admitted is modified by other admission plugins after the initial webhook call. Webhooks that specify this option *must* be idempotent, able to process objects they previously admitted. Note: * the number of additional invocations is not guaranteed to be exactly one. * if additional invocations result in further modifications to the object, webhooks are not guaranteed to be invoked again. * webhooks that use this option may be reordered to minimize the number of additional invocations. * to validate an object after all mutations are guaranteed complete, use a validating admission webhook instead.\n\nDefaults to \"Never\".",
    -	"matchConditions":         "MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the webhook is called.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the error is ignored and the webhook is skipped\n\nThis is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.",
    +	"matchConditions":         "MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the webhook is called.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the error is ignored and the webhook is skipped",
     }
     
     func (MutatingWebhook) SwaggerDoc() map[string]string {
    @@ -77,6 +110,37 @@ func (MutatingWebhookConfigurationList) SwaggerDoc() map[string]string {
     	return map_MutatingWebhookConfigurationList
     }
     
    +var map_NamedRuleWithOperations = map[string]string{
    +	"":              "NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.",
    +	"resourceNames": "ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.",
    +}
    +
    +func (NamedRuleWithOperations) SwaggerDoc() map[string]string {
    +	return map_NamedRuleWithOperations
    +}
    +
    +var map_ParamKind = map[string]string{
    +	"":           "ParamKind is a tuple of Group Kind and Version.",
    +	"apiVersion": "APIVersion is the API group version the resources belong to. In format of \"group/version\". Required.",
    +	"kind":       "Kind is the API kind the resources belong to. Required.",
    +}
    +
    +func (ParamKind) SwaggerDoc() map[string]string {
    +	return map_ParamKind
    +}
    +
    +var map_ParamRef = map[string]string{
    +	"":                        "ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding.",
    +	"name":                    "name is the name of the resource being referenced.\n\nOne of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\n\nA single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped.",
    +	"namespace":               "namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields.\n\nA per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty.\n\n- If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error.\n\n- If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error.",
    +	"selector":                "selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.\n\nIf multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.\n\nOne of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.",
    +	"parameterNotFoundAction": "`parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy.\n\nAllowed values are `Allow` or `Deny`\n\nRequired",
    +}
    +
    +func (ParamRef) SwaggerDoc() map[string]string {
    +	return map_ParamRef
    +}
    +
     var map_Rule = map[string]string{
     	"":            "Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended to make sure that all the tuple expansions are valid.",
     	"apiGroups":   "APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.",
    @@ -110,6 +174,94 @@ func (ServiceReference) SwaggerDoc() map[string]string {
     	return map_ServiceReference
     }
     
    +var map_TypeChecking = map[string]string{
    +	"":                   "TypeChecking contains results of type checking the expressions in the ValidatingAdmissionPolicy",
    +	"expressionWarnings": "The type checking warnings for each expression.",
    +}
    +
    +func (TypeChecking) SwaggerDoc() map[string]string {
    +	return map_TypeChecking
    +}
    +
    +var map_ValidatingAdmissionPolicy = map[string]string{
    +	"":         "ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it.",
    +	"metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.",
    +	"spec":     "Specification of the desired behavior of the ValidatingAdmissionPolicy.",
    +	"status":   "The status of the ValidatingAdmissionPolicy, including warnings that are useful to determine if the policy behaves in the expected way. Populated by the system. Read-only.",
    +}
    +
    +func (ValidatingAdmissionPolicy) SwaggerDoc() map[string]string {
    +	return map_ValidatingAdmissionPolicy
    +}
    +
    +var map_ValidatingAdmissionPolicyBinding = map[string]string{
    +	"":         "ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters.\n\nFor a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding.\n\nThe CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget.",
    +	"metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.",
    +	"spec":     "Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.",
    +}
    +
    +func (ValidatingAdmissionPolicyBinding) SwaggerDoc() map[string]string {
    +	return map_ValidatingAdmissionPolicyBinding
    +}
    +
    +var map_ValidatingAdmissionPolicyBindingList = map[string]string{
    +	"":         "ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.",
    +	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
    +	"items":    "List of PolicyBinding.",
    +}
    +
    +func (ValidatingAdmissionPolicyBindingList) SwaggerDoc() map[string]string {
    +	return map_ValidatingAdmissionPolicyBindingList
    +}
    +
    +var map_ValidatingAdmissionPolicyBindingSpec = map[string]string{
    +	"":                  "ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.",
    +	"policyName":        "PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required.",
    +	"paramRef":          "paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.",
    +	"matchResources":    "MatchResources declares what resources match this binding and will be validated by it. Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required.",
    +	"validationActions": "validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions.\n\nFailures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy.\n\nvalidationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action.\n\nThe supported actions values are:\n\n\"Deny\" specifies that a validation failure results in a denied request.\n\n\"Warn\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses.\n\n\"Audit\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\"validation.policy.admission.k8s.io/validation_failure\": \"[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]\"`\n\nClients should expect to handle additional values by ignoring any values not recognized.\n\n\"Deny\" and \"Warn\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers.\n\nRequired.",
    +}
    +
    +func (ValidatingAdmissionPolicyBindingSpec) SwaggerDoc() map[string]string {
    +	return map_ValidatingAdmissionPolicyBindingSpec
    +}
    +
    +var map_ValidatingAdmissionPolicyList = map[string]string{
    +	"":         "ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.",
    +	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
    +	"items":    "List of ValidatingAdmissionPolicy.",
    +}
    +
    +func (ValidatingAdmissionPolicyList) SwaggerDoc() map[string]string {
    +	return map_ValidatingAdmissionPolicyList
    +}
    +
    +var map_ValidatingAdmissionPolicySpec = map[string]string{
    +	"":                 "ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.",
    +	"paramKind":        "ParamKind specifies the kind of resources used to parameterize this policy. If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null.",
    +	"matchConstraints": "MatchConstraints specifies what resources this policy is designed to validate. The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required.",
    +	"validations":      "Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required.",
    +	"failurePolicy":    "failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings.\n\nA policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource.\n\nfailurePolicy does not define how validations that evaluate to false are handled.\n\nWhen failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced.\n\nAllowed values are Ignore or Fail. Defaults to Fail.",
    +	"auditAnnotations": "auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required.",
    +	"matchConditions":  "MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nIf a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the policy is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the policy is skipped",
    +	"variables":        "Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy.\n\nThe expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic.",
    +}
    +
    +func (ValidatingAdmissionPolicySpec) SwaggerDoc() map[string]string {
    +	return map_ValidatingAdmissionPolicySpec
    +}
    +
    +var map_ValidatingAdmissionPolicyStatus = map[string]string{
    +	"":                   "ValidatingAdmissionPolicyStatus represents the status of an admission validation policy.",
    +	"observedGeneration": "The generation observed by the controller.",
    +	"typeChecking":       "The results of type checking for each expression. Presence of this field indicates the completion of the type checking.",
    +	"conditions":         "The conditions represent the latest available observations of a policy's current state.",
    +}
    +
    +func (ValidatingAdmissionPolicyStatus) SwaggerDoc() map[string]string {
    +	return map_ValidatingAdmissionPolicyStatus
    +}
    +
     var map_ValidatingWebhook = map[string]string{
     	"":                        "ValidatingWebhook describes an admission webhook and the resources and operations it applies to.",
     	"name":                    "The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.",
    @@ -122,7 +274,7 @@ var map_ValidatingWebhook = map[string]string{
     	"sideEffects":             "SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some.",
     	"timeoutSeconds":          "TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds.",
     	"admissionReviewVersions": "AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy.",
    -	"matchConditions":         "MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the webhook is called.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the error is ignored and the webhook is skipped\n\nThis is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.",
    +	"matchConditions":         "MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the webhook is called.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the error is ignored and the webhook is skipped",
     }
     
     func (ValidatingWebhook) SwaggerDoc() map[string]string {
    @@ -149,6 +301,28 @@ func (ValidatingWebhookConfigurationList) SwaggerDoc() map[string]string {
     	return map_ValidatingWebhookConfigurationList
     }
     
    +var map_Validation = map[string]string{
    +	"":                  "Validation specifies the CEL expression which is used to apply the validation.",
    +	"expression":        "Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables:\n\n- 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\n  For example, a variable named 'foo' can be accessed as 'variables.foo'.\n- 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n- 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n  request resource.\n\nThe `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible.\n\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\n\t  \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\",\n\t  \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\".\nExamples:\n  - Expression accessing a property named \"namespace\": {\"Expression\": \"object.__namespace__ > 0\"}\n  - Expression accessing a property named \"x-prop\": {\"Expression\": \"object.x__dash__prop > 0\"}\n  - Expression accessing a property named \"redact__d\": {\"Expression\": \"object.redact__underscores__d > 0\"}\n\nEquality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:\n  - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and\n    non-intersecting elements in `Y` are appended, retaining their partial order.\n  - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values\n    are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with\n    non-intersecting keys are appended, retaining their partial order.\nRequired.",
    +	"message":           "Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \"failed Expression: {Expression}\".",
    +	"reason":            "Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \"Unauthorized\", \"Forbidden\", \"Invalid\", \"RequestEntityTooLarge\". If not set, StatusReasonInvalid is used in the response to the client.",
    +	"messageExpression": "messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \"object.x must be less than max (\"+string(params.max)+\")\"",
    +}
    +
    +func (Validation) SwaggerDoc() map[string]string {
    +	return map_Validation
    +}
    +
    +var map_Variable = map[string]string{
    +	"":           "Variable is the definition of a variable that is used for composition. A variable is defined as a named expression.",
    +	"name":       "Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \"foo\", the variable will be available as `variables.foo`",
    +	"expression": "Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation.",
    +}
    +
    +func (Variable) SwaggerDoc() map[string]string {
    +	return map_Variable
    +}
    +
     var map_WebhookClientConfig = map[string]string{
     	"":         "WebhookClientConfig contains the information to make a TLS connection with the webhook",
     	"url":      "`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be \"https\"; the URL must begin with \"https://\".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either.",
    diff --git a/vendor/k8s.io/api/admissionregistration/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/admissionregistration/v1/zz_generated.deepcopy.go
    index b9560991384e..bfe599c1d327 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1/zz_generated.deepcopy.go
    @@ -26,6 +26,38 @@ import (
     	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 *AuditAnnotation) DeepCopyInto(out *AuditAnnotation) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuditAnnotation.
    +func (in *AuditAnnotation) DeepCopy() *AuditAnnotation {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(AuditAnnotation)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ExpressionWarning) DeepCopyInto(out *ExpressionWarning) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExpressionWarning.
    +func (in *ExpressionWarning) DeepCopy() *ExpressionWarning {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ExpressionWarning)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *MatchCondition) DeepCopyInto(out *MatchCondition) {
     	*out = *in
    @@ -42,6 +74,51 @@ func (in *MatchCondition) DeepCopy() *MatchCondition {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *MatchResources) DeepCopyInto(out *MatchResources) {
    +	*out = *in
    +	if in.NamespaceSelector != nil {
    +		in, out := &in.NamespaceSelector, &out.NamespaceSelector
    +		*out = new(metav1.LabelSelector)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.ObjectSelector != nil {
    +		in, out := &in.ObjectSelector, &out.ObjectSelector
    +		*out = new(metav1.LabelSelector)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.ResourceRules != nil {
    +		in, out := &in.ResourceRules, &out.ResourceRules
    +		*out = make([]NamedRuleWithOperations, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.ExcludeResourceRules != nil {
    +		in, out := &in.ExcludeResourceRules, &out.ExcludeResourceRules
    +		*out = make([]NamedRuleWithOperations, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.MatchPolicy != nil {
    +		in, out := &in.MatchPolicy, &out.MatchPolicy
    +		*out = new(MatchPolicyType)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MatchResources.
    +func (in *MatchResources) DeepCopy() *MatchResources {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MatchResources)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *MutatingWebhook) DeepCopyInto(out *MutatingWebhook) {
     	*out = *in
    @@ -177,6 +254,70 @@ func (in *MutatingWebhookConfigurationList) DeepCopyObject() runtime.Object {
     	return nil
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *NamedRuleWithOperations) DeepCopyInto(out *NamedRuleWithOperations) {
    +	*out = *in
    +	if in.ResourceNames != nil {
    +		in, out := &in.ResourceNames, &out.ResourceNames
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	in.RuleWithOperations.DeepCopyInto(&out.RuleWithOperations)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamedRuleWithOperations.
    +func (in *NamedRuleWithOperations) DeepCopy() *NamedRuleWithOperations {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(NamedRuleWithOperations)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ParamKind) DeepCopyInto(out *ParamKind) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParamKind.
    +func (in *ParamKind) DeepCopy() *ParamKind {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ParamKind)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ParamRef) DeepCopyInto(out *ParamRef) {
    +	*out = *in
    +	if in.Selector != nil {
    +		in, out := &in.Selector, &out.Selector
    +		*out = new(metav1.LabelSelector)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.ParameterNotFoundAction != nil {
    +		in, out := &in.ParameterNotFoundAction, &out.ParameterNotFoundAction
    +		*out = new(ParameterNotFoundActionType)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParamRef.
    +func (in *ParamRef) DeepCopy() *ParamRef {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ParamRef)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *Rule) DeepCopyInto(out *Rule) {
     	*out = *in
    @@ -261,6 +402,260 @@ func (in *ServiceReference) DeepCopy() *ServiceReference {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *TypeChecking) DeepCopyInto(out *TypeChecking) {
    +	*out = *in
    +	if in.ExpressionWarnings != nil {
    +		in, out := &in.ExpressionWarnings, &out.ExpressionWarnings
    +		*out = make([]ExpressionWarning, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TypeChecking.
    +func (in *TypeChecking) DeepCopy() *TypeChecking {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(TypeChecking)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ValidatingAdmissionPolicy) DeepCopyInto(out *ValidatingAdmissionPolicy) {
    +	*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 ValidatingAdmissionPolicy.
    +func (in *ValidatingAdmissionPolicy) DeepCopy() *ValidatingAdmissionPolicy {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ValidatingAdmissionPolicy)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ValidatingAdmissionPolicy) 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 *ValidatingAdmissionPolicyBinding) DeepCopyInto(out *ValidatingAdmissionPolicyBinding) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidatingAdmissionPolicyBinding.
    +func (in *ValidatingAdmissionPolicyBinding) DeepCopy() *ValidatingAdmissionPolicyBinding {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ValidatingAdmissionPolicyBinding)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ValidatingAdmissionPolicyBinding) 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 *ValidatingAdmissionPolicyBindingList) DeepCopyInto(out *ValidatingAdmissionPolicyBindingList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]ValidatingAdmissionPolicyBinding, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidatingAdmissionPolicyBindingList.
    +func (in *ValidatingAdmissionPolicyBindingList) DeepCopy() *ValidatingAdmissionPolicyBindingList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ValidatingAdmissionPolicyBindingList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ValidatingAdmissionPolicyBindingList) 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 *ValidatingAdmissionPolicyBindingSpec) DeepCopyInto(out *ValidatingAdmissionPolicyBindingSpec) {
    +	*out = *in
    +	if in.ParamRef != nil {
    +		in, out := &in.ParamRef, &out.ParamRef
    +		*out = new(ParamRef)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.MatchResources != nil {
    +		in, out := &in.MatchResources, &out.MatchResources
    +		*out = new(MatchResources)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.ValidationActions != nil {
    +		in, out := &in.ValidationActions, &out.ValidationActions
    +		*out = make([]ValidationAction, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidatingAdmissionPolicyBindingSpec.
    +func (in *ValidatingAdmissionPolicyBindingSpec) DeepCopy() *ValidatingAdmissionPolicyBindingSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ValidatingAdmissionPolicyBindingSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ValidatingAdmissionPolicyList) DeepCopyInto(out *ValidatingAdmissionPolicyList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]ValidatingAdmissionPolicy, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidatingAdmissionPolicyList.
    +func (in *ValidatingAdmissionPolicyList) DeepCopy() *ValidatingAdmissionPolicyList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ValidatingAdmissionPolicyList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ValidatingAdmissionPolicyList) 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 *ValidatingAdmissionPolicySpec) DeepCopyInto(out *ValidatingAdmissionPolicySpec) {
    +	*out = *in
    +	if in.ParamKind != nil {
    +		in, out := &in.ParamKind, &out.ParamKind
    +		*out = new(ParamKind)
    +		**out = **in
    +	}
    +	if in.MatchConstraints != nil {
    +		in, out := &in.MatchConstraints, &out.MatchConstraints
    +		*out = new(MatchResources)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.Validations != nil {
    +		in, out := &in.Validations, &out.Validations
    +		*out = make([]Validation, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.FailurePolicy != nil {
    +		in, out := &in.FailurePolicy, &out.FailurePolicy
    +		*out = new(FailurePolicyType)
    +		**out = **in
    +	}
    +	if in.AuditAnnotations != nil {
    +		in, out := &in.AuditAnnotations, &out.AuditAnnotations
    +		*out = make([]AuditAnnotation, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.MatchConditions != nil {
    +		in, out := &in.MatchConditions, &out.MatchConditions
    +		*out = make([]MatchCondition, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.Variables != nil {
    +		in, out := &in.Variables, &out.Variables
    +		*out = make([]Variable, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidatingAdmissionPolicySpec.
    +func (in *ValidatingAdmissionPolicySpec) DeepCopy() *ValidatingAdmissionPolicySpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ValidatingAdmissionPolicySpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ValidatingAdmissionPolicyStatus) DeepCopyInto(out *ValidatingAdmissionPolicyStatus) {
    +	*out = *in
    +	if in.TypeChecking != nil {
    +		in, out := &in.TypeChecking, &out.TypeChecking
    +		*out = new(TypeChecking)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	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])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidatingAdmissionPolicyStatus.
    +func (in *ValidatingAdmissionPolicyStatus) DeepCopy() *ValidatingAdmissionPolicyStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ValidatingAdmissionPolicyStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *ValidatingWebhook) DeepCopyInto(out *ValidatingWebhook) {
     	*out = *in
    @@ -391,6 +786,43 @@ func (in *ValidatingWebhookConfigurationList) DeepCopyObject() runtime.Object {
     	return nil
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *Validation) DeepCopyInto(out *Validation) {
    +	*out = *in
    +	if in.Reason != nil {
    +		in, out := &in.Reason, &out.Reason
    +		*out = new(metav1.StatusReason)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Validation.
    +func (in *Validation) DeepCopy() *Validation {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(Validation)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *Variable) DeepCopyInto(out *Variable) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Variable.
    +func (in *Variable) DeepCopy() *Variable {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(Variable)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *WebhookClientConfig) DeepCopyInto(out *WebhookClientConfig) {
     	*out = *in
    diff --git a/vendor/k8s.io/api/admissionregistration/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/admissionregistration/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..0862bb1f2d39
    --- /dev/null
    +++ b/vendor/k8s.io/api/admissionregistration/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,70 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *MutatingWebhookConfiguration) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 16
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *MutatingWebhookConfigurationList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 16
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ValidatingAdmissionPolicy) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 30
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ValidatingAdmissionPolicyBinding) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 30
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ValidatingAdmissionPolicyBindingList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 30
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ValidatingAdmissionPolicyList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 30
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ValidatingWebhookConfiguration) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 16
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ValidatingWebhookConfigurationList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 16
    +}
    diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/doc.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/doc.go
    index 385c60e0d3f5..98066211d854 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1alpha1/doc.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/doc.go
    @@ -17,6 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=admissionregistration.k8s.io
     
     // Package v1alpha1 is the v1alpha1 version of the API.
    diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go
    index 4f1373ec5a7b..993ff6f20eb0 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto
    +// source: k8s.io/api/admissionregistration/v1alpha1/generated.proto
     
     package v1alpha1
     
    @@ -25,6 +25,7 @@ import (
     	io "io"
     
     	proto "github.com/gogo/protobuf/proto"
    +	k8s_io_api_admissionregistration_v1 "k8s.io/api/admissionregistration/v1"
     	k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     
    @@ -45,10 +46,38 @@ var _ = math.Inf
     // proto package needs to be updated.
     const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     
    +func (m *ApplyConfiguration) Reset()      { *m = ApplyConfiguration{} }
    +func (*ApplyConfiguration) ProtoMessage() {}
    +func (*ApplyConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_2c49182728ae0af5, []int{0}
    +}
    +func (m *ApplyConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ApplyConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ApplyConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ApplyConfiguration.Merge(m, src)
    +}
    +func (m *ApplyConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ApplyConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ApplyConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ApplyConfiguration proto.InternalMessageInfo
    +
     func (m *AuditAnnotation) Reset()      { *m = AuditAnnotation{} }
     func (*AuditAnnotation) ProtoMessage() {}
     func (*AuditAnnotation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{0}
    +	return fileDescriptor_2c49182728ae0af5, []int{1}
     }
     func (m *AuditAnnotation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -76,7 +105,7 @@ var xxx_messageInfo_AuditAnnotation proto.InternalMessageInfo
     func (m *ExpressionWarning) Reset()      { *m = ExpressionWarning{} }
     func (*ExpressionWarning) ProtoMessage() {}
     func (*ExpressionWarning) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{1}
    +	return fileDescriptor_2c49182728ae0af5, []int{2}
     }
     func (m *ExpressionWarning) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -101,10 +130,38 @@ func (m *ExpressionWarning) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ExpressionWarning proto.InternalMessageInfo
     
    +func (m *JSONPatch) Reset()      { *m = JSONPatch{} }
    +func (*JSONPatch) ProtoMessage() {}
    +func (*JSONPatch) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_2c49182728ae0af5, []int{3}
    +}
    +func (m *JSONPatch) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *JSONPatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *JSONPatch) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_JSONPatch.Merge(m, src)
    +}
    +func (m *JSONPatch) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *JSONPatch) XXX_DiscardUnknown() {
    +	xxx_messageInfo_JSONPatch.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_JSONPatch proto.InternalMessageInfo
    +
     func (m *MatchCondition) Reset()      { *m = MatchCondition{} }
     func (*MatchCondition) ProtoMessage() {}
     func (*MatchCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{2}
    +	return fileDescriptor_2c49182728ae0af5, []int{4}
     }
     func (m *MatchCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -132,7 +189,7 @@ var xxx_messageInfo_MatchCondition proto.InternalMessageInfo
     func (m *MatchResources) Reset()      { *m = MatchResources{} }
     func (*MatchResources) ProtoMessage() {}
     func (*MatchResources) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{3}
    +	return fileDescriptor_2c49182728ae0af5, []int{5}
     }
     func (m *MatchResources) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -157,10 +214,206 @@ func (m *MatchResources) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_MatchResources proto.InternalMessageInfo
     
    +func (m *MutatingAdmissionPolicy) Reset()      { *m = MutatingAdmissionPolicy{} }
    +func (*MutatingAdmissionPolicy) ProtoMessage() {}
    +func (*MutatingAdmissionPolicy) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_2c49182728ae0af5, []int{6}
    +}
    +func (m *MutatingAdmissionPolicy) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicy) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicy.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicy) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicy) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicy.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicy proto.InternalMessageInfo
    +
    +func (m *MutatingAdmissionPolicyBinding) Reset()      { *m = MutatingAdmissionPolicyBinding{} }
    +func (*MutatingAdmissionPolicyBinding) ProtoMessage() {}
    +func (*MutatingAdmissionPolicyBinding) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_2c49182728ae0af5, []int{7}
    +}
    +func (m *MutatingAdmissionPolicyBinding) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicyBinding) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicyBinding) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicyBinding.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicyBinding) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicyBinding) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicyBinding.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicyBinding proto.InternalMessageInfo
    +
    +func (m *MutatingAdmissionPolicyBindingList) Reset()      { *m = MutatingAdmissionPolicyBindingList{} }
    +func (*MutatingAdmissionPolicyBindingList) ProtoMessage() {}
    +func (*MutatingAdmissionPolicyBindingList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_2c49182728ae0af5, []int{8}
    +}
    +func (m *MutatingAdmissionPolicyBindingList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicyBindingList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicyBindingList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicyBindingList.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicyBindingList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicyBindingList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicyBindingList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicyBindingList proto.InternalMessageInfo
    +
    +func (m *MutatingAdmissionPolicyBindingSpec) Reset()      { *m = MutatingAdmissionPolicyBindingSpec{} }
    +func (*MutatingAdmissionPolicyBindingSpec) ProtoMessage() {}
    +func (*MutatingAdmissionPolicyBindingSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_2c49182728ae0af5, []int{9}
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicyBindingSpec.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicyBindingSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicyBindingSpec proto.InternalMessageInfo
    +
    +func (m *MutatingAdmissionPolicyList) Reset()      { *m = MutatingAdmissionPolicyList{} }
    +func (*MutatingAdmissionPolicyList) ProtoMessage() {}
    +func (*MutatingAdmissionPolicyList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_2c49182728ae0af5, []int{10}
    +}
    +func (m *MutatingAdmissionPolicyList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicyList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicyList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicyList.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicyList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicyList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicyList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicyList proto.InternalMessageInfo
    +
    +func (m *MutatingAdmissionPolicySpec) Reset()      { *m = MutatingAdmissionPolicySpec{} }
    +func (*MutatingAdmissionPolicySpec) ProtoMessage() {}
    +func (*MutatingAdmissionPolicySpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_2c49182728ae0af5, []int{11}
    +}
    +func (m *MutatingAdmissionPolicySpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicySpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicySpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicySpec.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicySpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicySpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicySpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicySpec proto.InternalMessageInfo
    +
    +func (m *Mutation) Reset()      { *m = Mutation{} }
    +func (*Mutation) ProtoMessage() {}
    +func (*Mutation) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_2c49182728ae0af5, []int{12}
    +}
    +func (m *Mutation) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *Mutation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *Mutation) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_Mutation.Merge(m, src)
    +}
    +func (m *Mutation) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *Mutation) XXX_DiscardUnknown() {
    +	xxx_messageInfo_Mutation.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_Mutation proto.InternalMessageInfo
    +
     func (m *NamedRuleWithOperations) Reset()      { *m = NamedRuleWithOperations{} }
     func (*NamedRuleWithOperations) ProtoMessage() {}
     func (*NamedRuleWithOperations) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{4}
    +	return fileDescriptor_2c49182728ae0af5, []int{13}
     }
     func (m *NamedRuleWithOperations) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -188,7 +441,7 @@ var xxx_messageInfo_NamedRuleWithOperations proto.InternalMessageInfo
     func (m *ParamKind) Reset()      { *m = ParamKind{} }
     func (*ParamKind) ProtoMessage() {}
     func (*ParamKind) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{5}
    +	return fileDescriptor_2c49182728ae0af5, []int{14}
     }
     func (m *ParamKind) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -216,7 +469,7 @@ var xxx_messageInfo_ParamKind proto.InternalMessageInfo
     func (m *ParamRef) Reset()      { *m = ParamRef{} }
     func (*ParamRef) ProtoMessage() {}
     func (*ParamRef) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{6}
    +	return fileDescriptor_2c49182728ae0af5, []int{15}
     }
     func (m *ParamRef) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -244,7 +497,7 @@ var xxx_messageInfo_ParamRef proto.InternalMessageInfo
     func (m *TypeChecking) Reset()      { *m = TypeChecking{} }
     func (*TypeChecking) ProtoMessage() {}
     func (*TypeChecking) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{7}
    +	return fileDescriptor_2c49182728ae0af5, []int{16}
     }
     func (m *TypeChecking) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -272,7 +525,7 @@ var xxx_messageInfo_TypeChecking proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicy) Reset()      { *m = ValidatingAdmissionPolicy{} }
     func (*ValidatingAdmissionPolicy) ProtoMessage() {}
     func (*ValidatingAdmissionPolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{8}
    +	return fileDescriptor_2c49182728ae0af5, []int{17}
     }
     func (m *ValidatingAdmissionPolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -300,7 +553,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicy proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicyBinding) Reset()      { *m = ValidatingAdmissionPolicyBinding{} }
     func (*ValidatingAdmissionPolicyBinding) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyBinding) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{9}
    +	return fileDescriptor_2c49182728ae0af5, []int{18}
     }
     func (m *ValidatingAdmissionPolicyBinding) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -328,7 +581,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyBinding proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicyBindingList) Reset()      { *m = ValidatingAdmissionPolicyBindingList{} }
     func (*ValidatingAdmissionPolicyBindingList) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyBindingList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{10}
    +	return fileDescriptor_2c49182728ae0af5, []int{19}
     }
     func (m *ValidatingAdmissionPolicyBindingList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -356,7 +609,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyBindingList proto.InternalMessageIn
     func (m *ValidatingAdmissionPolicyBindingSpec) Reset()      { *m = ValidatingAdmissionPolicyBindingSpec{} }
     func (*ValidatingAdmissionPolicyBindingSpec) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyBindingSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{11}
    +	return fileDescriptor_2c49182728ae0af5, []int{20}
     }
     func (m *ValidatingAdmissionPolicyBindingSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -384,7 +637,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyBindingSpec proto.InternalMessageIn
     func (m *ValidatingAdmissionPolicyList) Reset()      { *m = ValidatingAdmissionPolicyList{} }
     func (*ValidatingAdmissionPolicyList) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{12}
    +	return fileDescriptor_2c49182728ae0af5, []int{21}
     }
     func (m *ValidatingAdmissionPolicyList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -412,7 +665,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyList proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicySpec) Reset()      { *m = ValidatingAdmissionPolicySpec{} }
     func (*ValidatingAdmissionPolicySpec) ProtoMessage() {}
     func (*ValidatingAdmissionPolicySpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{13}
    +	return fileDescriptor_2c49182728ae0af5, []int{22}
     }
     func (m *ValidatingAdmissionPolicySpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -440,7 +693,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicySpec proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicyStatus) Reset()      { *m = ValidatingAdmissionPolicyStatus{} }
     func (*ValidatingAdmissionPolicyStatus) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{14}
    +	return fileDescriptor_2c49182728ae0af5, []int{23}
     }
     func (m *ValidatingAdmissionPolicyStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -468,7 +721,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyStatus proto.InternalMessageInfo
     func (m *Validation) Reset()      { *m = Validation{} }
     func (*Validation) ProtoMessage() {}
     func (*Validation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{15}
    +	return fileDescriptor_2c49182728ae0af5, []int{24}
     }
     func (m *Validation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -496,7 +749,7 @@ var xxx_messageInfo_Validation proto.InternalMessageInfo
     func (m *Variable) Reset()      { *m = Variable{} }
     func (*Variable) ProtoMessage() {}
     func (*Variable) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c3be8d256e3ae3cf, []int{16}
    +	return fileDescriptor_2c49182728ae0af5, []int{25}
     }
     func (m *Variable) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -522,10 +775,19 @@ func (m *Variable) XXX_DiscardUnknown() {
     var xxx_messageInfo_Variable proto.InternalMessageInfo
     
     func init() {
    +	proto.RegisterType((*ApplyConfiguration)(nil), "k8s.io.api.admissionregistration.v1alpha1.ApplyConfiguration")
     	proto.RegisterType((*AuditAnnotation)(nil), "k8s.io.api.admissionregistration.v1alpha1.AuditAnnotation")
     	proto.RegisterType((*ExpressionWarning)(nil), "k8s.io.api.admissionregistration.v1alpha1.ExpressionWarning")
    +	proto.RegisterType((*JSONPatch)(nil), "k8s.io.api.admissionregistration.v1alpha1.JSONPatch")
     	proto.RegisterType((*MatchCondition)(nil), "k8s.io.api.admissionregistration.v1alpha1.MatchCondition")
     	proto.RegisterType((*MatchResources)(nil), "k8s.io.api.admissionregistration.v1alpha1.MatchResources")
    +	proto.RegisterType((*MutatingAdmissionPolicy)(nil), "k8s.io.api.admissionregistration.v1alpha1.MutatingAdmissionPolicy")
    +	proto.RegisterType((*MutatingAdmissionPolicyBinding)(nil), "k8s.io.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBinding")
    +	proto.RegisterType((*MutatingAdmissionPolicyBindingList)(nil), "k8s.io.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBindingList")
    +	proto.RegisterType((*MutatingAdmissionPolicyBindingSpec)(nil), "k8s.io.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBindingSpec")
    +	proto.RegisterType((*MutatingAdmissionPolicyList)(nil), "k8s.io.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyList")
    +	proto.RegisterType((*MutatingAdmissionPolicySpec)(nil), "k8s.io.api.admissionregistration.v1alpha1.MutatingAdmissionPolicySpec")
    +	proto.RegisterType((*Mutation)(nil), "k8s.io.api.admissionregistration.v1alpha1.Mutation")
     	proto.RegisterType((*NamedRuleWithOperations)(nil), "k8s.io.api.admissionregistration.v1alpha1.NamedRuleWithOperations")
     	proto.RegisterType((*ParamKind)(nil), "k8s.io.api.admissionregistration.v1alpha1.ParamKind")
     	proto.RegisterType((*ParamRef)(nil), "k8s.io.api.admissionregistration.v1alpha1.ParamRef")
    @@ -542,106 +804,151 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto", fileDescriptor_c3be8d256e3ae3cf)
    -}
    -
    -var fileDescriptor_c3be8d256e3ae3cf = []byte{
    -	// 1509 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcb, 0x6f, 0x1b, 0x45,
    -	0x18, 0xcf, 0xc6, 0x6e, 0x12, 0x8f, 0xf3, 0xf2, 0xd0, 0x2a, 0x6e, 0xa0, 0xde, 0x68, 0x55, 0xa1,
    -	0x46, 0x82, 0x35, 0x49, 0x0b, 0x85, 0x0a, 0x09, 0x65, 0xfb, 0xa2, 0x8f, 0x3c, 0x34, 0x45, 0x89,
    -	0x84, 0x40, 0x62, 0xb2, 0x3b, 0x71, 0xa6, 0xf6, 0x3e, 0xd8, 0x59, 0x9b, 0x46, 0x20, 0x51, 0x89,
    -	0x0b, 0xdc, 0x38, 0x70, 0xe1, 0xca, 0x9f, 0xc0, 0x7f, 0xc0, 0xad, 0xc7, 0x1e, 0xcb, 0x01, 0x8b,
    -	0x9a, 0x0b, 0x7f, 0x01, 0x48, 0xb9, 0x80, 0x66, 0x76, 0xf6, 0x69, 0x9b, 0xd8, 0x25, 0x70, 0xf3,
    -	0x7c, 0x8f, 0xdf, 0xf7, 0x98, 0xef, 0xfb, 0xf6, 0x1b, 0x03, 0xd4, 0x7c, 0x9b, 0xe9, 0xd4, 0xad,
    -	0x37, 0xdb, 0xfb, 0xc4, 0x77, 0x48, 0x40, 0x58, 0xbd, 0x43, 0x1c, 0xcb, 0xf5, 0xeb, 0x92, 0x81,
    -	0x3d, 0x5a, 0xc7, 0x96, 0x4d, 0x19, 0xa3, 0xae, 0xe3, 0x93, 0x06, 0x65, 0x81, 0x8f, 0x03, 0xea,
    -	0x3a, 0xf5, 0xce, 0x1a, 0x6e, 0x79, 0x87, 0x78, 0xad, 0xde, 0x20, 0x0e, 0xf1, 0x71, 0x40, 0x2c,
    -	0xdd, 0xf3, 0xdd, 0xc0, 0x85, 0xab, 0xa1, 0xaa, 0x8e, 0x3d, 0xaa, 0x0f, 0x54, 0xd5, 0x23, 0xd5,
    -	0xe5, 0xd7, 0x1b, 0x34, 0x38, 0x6c, 0xef, 0xeb, 0xa6, 0x6b, 0xd7, 0x1b, 0x6e, 0xc3, 0xad, 0x0b,
    -	0x84, 0xfd, 0xf6, 0x81, 0x38, 0x89, 0x83, 0xf8, 0x15, 0x22, 0x2f, 0x5f, 0x1e, 0xc1, 0xa9, 0xbc,
    -	0x3b, 0xcb, 0x57, 0x12, 0x25, 0x1b, 0x9b, 0x87, 0xd4, 0x21, 0xfe, 0x51, 0xdd, 0x6b, 0x36, 0x38,
    -	0x81, 0xd5, 0x6d, 0x12, 0xe0, 0x41, 0x5a, 0xf5, 0x61, 0x5a, 0x7e, 0xdb, 0x09, 0xa8, 0x4d, 0xfa,
    -	0x14, 0xde, 0x3a, 0x49, 0x81, 0x99, 0x87, 0xc4, 0xc6, 0x79, 0x3d, 0x8d, 0x81, 0x85, 0x8d, 0xb6,
    -	0x45, 0x83, 0x0d, 0xc7, 0x71, 0x03, 0x11, 0x04, 0xbc, 0x00, 0x0a, 0x4d, 0x72, 0x54, 0x55, 0x56,
    -	0x94, 0x4b, 0x25, 0xa3, 0xfc, 0xa4, 0xab, 0x4e, 0xf4, 0xba, 0x6a, 0xe1, 0x1e, 0x39, 0x42, 0x9c,
    -	0x0e, 0x37, 0xc0, 0x42, 0x07, 0xb7, 0xda, 0xe4, 0xe6, 0x23, 0xcf, 0x27, 0x22, 0x05, 0xd5, 0x49,
    -	0x21, 0xba, 0x24, 0x45, 0x17, 0x76, 0xb3, 0x6c, 0x94, 0x97, 0xd7, 0x5a, 0xa0, 0x92, 0x9c, 0xf6,
    -	0xb0, 0xef, 0x50, 0xa7, 0x01, 0x5f, 0x03, 0x33, 0x07, 0x94, 0xb4, 0x2c, 0x44, 0x0e, 0x24, 0xe0,
    -	0xa2, 0x04, 0x9c, 0xb9, 0x25, 0xe9, 0x28, 0x96, 0x80, 0xab, 0x60, 0xfa, 0xb3, 0x50, 0xb1, 0x5a,
    -	0x10, 0xc2, 0x0b, 0x52, 0x78, 0x5a, 0xe2, 0xa1, 0x88, 0xaf, 0x1d, 0x80, 0xf9, 0x4d, 0x1c, 0x98,
    -	0x87, 0xd7, 0x5d, 0xc7, 0xa2, 0x22, 0xc2, 0x15, 0x50, 0x74, 0xb0, 0x4d, 0x64, 0x88, 0xb3, 0x52,
    -	0xb3, 0xb8, 0x85, 0x6d, 0x82, 0x04, 0x07, 0xae, 0x03, 0x40, 0xf2, 0xf1, 0x41, 0x29, 0x07, 0x52,
    -	0xa1, 0xa5, 0xa4, 0xb4, 0x9f, 0x8b, 0xd2, 0x10, 0x22, 0xcc, 0x6d, 0xfb, 0x26, 0x61, 0xf0, 0x11,
    -	0xa8, 0x70, 0x38, 0xe6, 0x61, 0x93, 0x3c, 0x20, 0x2d, 0x62, 0x06, 0xae, 0x2f, 0xac, 0x96, 0xd7,
    -	0x2f, 0xeb, 0x49, 0x9d, 0xc6, 0x37, 0xa6, 0x7b, 0xcd, 0x06, 0x27, 0x30, 0x9d, 0x17, 0x86, 0xde,
    -	0x59, 0xd3, 0xef, 0xe3, 0x7d, 0xd2, 0x8a, 0x54, 0x8d, 0x73, 0xbd, 0xae, 0x5a, 0xd9, 0xca, 0x23,
    -	0xa2, 0x7e, 0x23, 0xd0, 0x05, 0xf3, 0xee, 0xfe, 0x43, 0x62, 0x06, 0xb1, 0xd9, 0xc9, 0x17, 0x37,
    -	0x0b, 0x7b, 0x5d, 0x75, 0x7e, 0x3b, 0x03, 0x87, 0x72, 0xf0, 0xf0, 0x4b, 0x30, 0xe7, 0xcb, 0xb8,
    -	0x51, 0xbb, 0x45, 0x58, 0xb5, 0xb0, 0x52, 0xb8, 0x54, 0x5e, 0x37, 0xf4, 0x91, 0xdb, 0x51, 0xe7,
    -	0x81, 0x59, 0x5c, 0x79, 0x8f, 0x06, 0x87, 0xdb, 0x1e, 0x09, 0xf9, 0xcc, 0x38, 0x27, 0x13, 0x3f,
    -	0x87, 0xd2, 0x06, 0x50, 0xd6, 0x1e, 0xfc, 0x4e, 0x01, 0x67, 0xc9, 0x23, 0xb3, 0xd5, 0xb6, 0x48,
    -	0x46, 0xae, 0x5a, 0x3c, 0x35, 0x47, 0x5e, 0x91, 0x8e, 0x9c, 0xbd, 0x39, 0xc0, 0x0e, 0x1a, 0x68,
    -	0x1d, 0xde, 0x00, 0x65, 0x9b, 0x17, 0xc5, 0x8e, 0xdb, 0xa2, 0xe6, 0x51, 0x75, 0x5a, 0x94, 0x92,
    -	0xd6, 0xeb, 0xaa, 0xe5, 0xcd, 0x84, 0x7c, 0xdc, 0x55, 0x17, 0x52, 0xc7, 0x0f, 0x8e, 0x3c, 0x82,
    -	0xd2, 0x6a, 0xda, 0x33, 0x05, 0x2c, 0x0d, 0xf1, 0x0a, 0x5e, 0x4d, 0x32, 0x2f, 0x4a, 0xa3, 0xaa,
    -	0xac, 0x14, 0x2e, 0x95, 0x8c, 0x4a, 0x3a, 0x63, 0x82, 0x81, 0xb2, 0x72, 0xf0, 0x2b, 0x05, 0x40,
    -	0xbf, 0x0f, 0x4f, 0x16, 0xca, 0xd5, 0x51, 0xf2, 0xa5, 0x0f, 0x48, 0xd2, 0xb2, 0x4c, 0x12, 0xec,
    -	0xe7, 0xa1, 0x01, 0xe6, 0x34, 0x0c, 0x4a, 0x3b, 0xd8, 0xc7, 0xf6, 0x3d, 0xea, 0x58, 0xbc, 0xef,
    -	0xb0, 0x47, 0x77, 0x89, 0x2f, 0xfa, 0x4e, 0xc9, 0xf6, 0xdd, 0xc6, 0xce, 0x1d, 0xc9, 0x41, 0x29,
    -	0x29, 0xde, 0xcd, 0x4d, 0xea, 0x58, 0xb2, 0x4b, 0xe3, 0x6e, 0xe6, 0x78, 0x48, 0x70, 0xb4, 0x1f,
    -	0x27, 0xc1, 0x8c, 0xb0, 0xc1, 0x27, 0xc7, 0xc9, 0xcd, 0x5f, 0x07, 0xa5, 0xb8, 0xa1, 0x24, 0x6a,
    -	0x45, 0x8a, 0x95, 0xe2, 0xe6, 0x43, 0x89, 0x0c, 0xfc, 0x18, 0xcc, 0xb0, 0xa8, 0xcd, 0x0a, 0x2f,
    -	0xde, 0x66, 0xb3, 0x7c, 0xd6, 0xc5, 0x0d, 0x16, 0x43, 0xc2, 0x00, 0x2c, 0x79, 0xdc, 0x7b, 0x12,
    -	0x10, 0x7f, 0xcb, 0x0d, 0x6e, 0xb9, 0x6d, 0xc7, 0xda, 0x30, 0x79, 0xf6, 0xaa, 0x45, 0xe1, 0xdd,
    -	0xb5, 0x5e, 0x57, 0x5d, 0xda, 0x19, 0x2c, 0x72, 0xdc, 0x55, 0x5f, 0x1e, 0xc2, 0x12, 0x65, 0x36,
    -	0x0c, 0x5a, 0xfb, 0x5e, 0x01, 0xb3, 0x5c, 0xe2, 0xfa, 0x21, 0x31, 0x9b, 0x7c, 0x40, 0x7f, 0xad,
    -	0x00, 0x48, 0xf2, 0x63, 0x3b, 0xac, 0xb6, 0xf2, 0xfa, 0xbb, 0x63, 0xb4, 0x57, 0xdf, 0xec, 0x4f,
    -	0x6a, 0xa6, 0x8f, 0xc5, 0xd0, 0x00, 0x9b, 0xda, 0x2f, 0x93, 0xe0, 0xfc, 0x2e, 0x6e, 0x51, 0x0b,
    -	0x07, 0xd4, 0x69, 0x6c, 0x44, 0xe6, 0xc2, 0x66, 0x81, 0x9f, 0x80, 0x19, 0x9e, 0x60, 0x0b, 0x07,
    -	0x58, 0x0e, 0xdb, 0x37, 0x46, 0xbb, 0x8e, 0x70, 0xc4, 0x6d, 0x92, 0x00, 0x27, 0x45, 0x97, 0xd0,
    -	0x50, 0x8c, 0x0a, 0x1f, 0x82, 0x22, 0xf3, 0x88, 0x29, 0x5b, 0xe5, 0xfd, 0x31, 0x62, 0x1f, 0xea,
    -	0xf5, 0x03, 0x8f, 0x98, 0x49, 0x35, 0xf2, 0x13, 0x12, 0x36, 0xa0, 0x0f, 0xa6, 0x58, 0x80, 0x83,
    -	0x36, 0x93, 0xa5, 0x75, 0xf7, 0x54, 0xac, 0x09, 0x44, 0x63, 0x5e, 0xda, 0x9b, 0x0a, 0xcf, 0x48,
    -	0x5a, 0xd2, 0xfe, 0x54, 0xc0, 0xca, 0x50, 0x5d, 0x83, 0x3a, 0x16, 0xaf, 0x87, 0xff, 0x3e, 0xcd,
    -	0x9f, 0x66, 0xd2, 0xbc, 0x7d, 0x1a, 0x81, 0x4b, 0xe7, 0x87, 0x65, 0x5b, 0xfb, 0x43, 0x01, 0x17,
    -	0x4f, 0x52, 0xbe, 0x4f, 0x59, 0x00, 0x3f, 0xea, 0x8b, 0x5e, 0x1f, 0xb1, 0xe7, 0x29, 0x0b, 0x63,
    -	0x8f, 0xd7, 0x9b, 0x88, 0x92, 0x8a, 0xdc, 0x03, 0x67, 0x68, 0x40, 0x6c, 0x3e, 0x8c, 0x79, 0x77,
    -	0xdd, 0x3b, 0xc5, 0xd0, 0x8d, 0x39, 0x69, 0xf7, 0xcc, 0x1d, 0x6e, 0x01, 0x85, 0x86, 0xb4, 0x6f,
    -	0x0a, 0x27, 0x07, 0xce, 0xf3, 0xc4, 0x47, 0xb4, 0x27, 0x88, 0x5b, 0xc9, 0x14, 0x8d, 0xaf, 0x71,
    -	0x27, 0xe6, 0xa0, 0x94, 0x14, 0x1f, 0x90, 0x9e, 0x9c, 0xbf, 0x03, 0xf6, 0x90, 0x93, 0x22, 0x8a,
    -	0x46, 0x77, 0x38, 0x20, 0xa3, 0x13, 0x8a, 0x21, 0x61, 0x1b, 0xcc, 0xdb, 0x99, 0xc5, 0x4b, 0xb6,
    -	0xca, 0x3b, 0x63, 0x18, 0xc9, 0x6e, 0x6e, 0xe1, 0xca, 0x93, 0xa5, 0xa1, 0x9c, 0x11, 0xb8, 0x07,
    -	0x2a, 0x1d, 0x99, 0x31, 0xd7, 0x09, 0xa7, 0x66, 0xb8, 0x6d, 0x94, 0x8c, 0x55, 0xbe, 0xa8, 0xed,
    -	0xe6, 0x99, 0xc7, 0x5d, 0x75, 0x31, 0x4f, 0x44, 0xfd, 0x18, 0xda, 0xef, 0x0a, 0xb8, 0x30, 0xf4,
    -	0x2e, 0xfe, 0x87, 0xea, 0xa3, 0xd9, 0xea, 0xbb, 0x71, 0x2a, 0xd5, 0x37, 0xb8, 0xec, 0x7e, 0x98,
    -	0xfa, 0x87, 0x50, 0x45, 0xbd, 0x61, 0x50, 0xf2, 0xa2, 0xfd, 0x40, 0xc6, 0x7a, 0x65, 0xdc, 0xe2,
    -	0xe1, 0xba, 0xc6, 0x1c, 0xff, 0x7e, 0xc7, 0x47, 0x94, 0xa0, 0xc2, 0xcf, 0xc1, 0xa2, 0x2d, 0x5f,
    -	0x08, 0x1c, 0x80, 0x3a, 0x41, 0xb4, 0x05, 0xfd, 0x8b, 0x0a, 0x3a, 0xdb, 0xeb, 0xaa, 0x8b, 0x9b,
    -	0x39, 0x58, 0xd4, 0x67, 0x08, 0xb6, 0x40, 0x39, 0xa9, 0x80, 0x68, 0x6d, 0x7e, 0xf3, 0x05, 0x52,
    -	0xee, 0x3a, 0xc6, 0x4b, 0x32, 0xc7, 0xe5, 0x84, 0xc6, 0x50, 0x1a, 0x1e, 0xde, 0x07, 0x73, 0x07,
    -	0x98, 0xb6, 0xda, 0x3e, 0x91, 0x0b, 0x69, 0xb8, 0x41, 0xbc, 0xca, 0x97, 0xc5, 0x5b, 0x69, 0xc6,
    -	0x71, 0x57, 0xad, 0x64, 0x08, 0x62, 0x5b, 0xc8, 0x2a, 0xc3, 0xc7, 0x0a, 0x58, 0xc4, 0xd9, 0xe7,
    -	0x23, 0xab, 0x9e, 0x11, 0x11, 0x5c, 0x1b, 0x23, 0x82, 0xdc, 0x0b, 0xd4, 0xa8, 0xca, 0x30, 0x16,
    -	0x73, 0x0c, 0x86, 0xfa, 0xac, 0xc1, 0x2f, 0xc0, 0x82, 0x9d, 0x79, 0xdd, 0xb1, 0xea, 0x94, 0x70,
    -	0x60, 0xec, 0xab, 0x8b, 0x11, 0x92, 0x97, 0x6c, 0x96, 0xce, 0x50, 0xde, 0x14, 0xb4, 0x40, 0xa9,
    -	0x83, 0x7d, 0x8a, 0xf7, 0xf9, 0x43, 0x63, 0x5a, 0xd8, 0xbd, 0x3c, 0xd6, 0xd5, 0x85, 0xba, 0xc9,
    -	0x7e, 0x19, 0x51, 0x18, 0x4a, 0x80, 0xb5, 0x9f, 0x26, 0x81, 0x7a, 0xc2, 0xa7, 0x1c, 0xde, 0x05,
    -	0xd0, 0xdd, 0x67, 0xc4, 0xef, 0x10, 0xeb, 0x76, 0xf8, 0xc6, 0x8f, 0x36, 0xe8, 0x42, 0xb2, 0x5e,
    -	0x6d, 0xf7, 0x49, 0xa0, 0x01, 0x5a, 0xd0, 0x06, 0xb3, 0x41, 0x6a, 0xf3, 0x1b, 0xe7, 0x45, 0x20,
    -	0x03, 0x4b, 0x2f, 0x8e, 0xc6, 0x62, 0xaf, 0xab, 0x66, 0x56, 0x49, 0x94, 0x81, 0x87, 0x26, 0x00,
    -	0x66, 0x72, 0x7b, 0x61, 0x03, 0xd4, 0x47, 0x1b, 0x67, 0xc9, 0x9d, 0xc5, 0x9f, 0xa0, 0xd4, 0x75,
    -	0xa5, 0x60, 0xb5, 0xbf, 0x14, 0x00, 0x92, 0xae, 0x80, 0x17, 0x41, 0xea, 0x19, 0x2f, 0xbf, 0x62,
    -	0x45, 0x0e, 0x81, 0x52, 0x74, 0xb8, 0x0a, 0xa6, 0x6d, 0xc2, 0x18, 0x6e, 0x44, 0xef, 0x80, 0xf8,
    -	0x5f, 0x86, 0xcd, 0x90, 0x8c, 0x22, 0x3e, 0xdc, 0x03, 0x53, 0x3e, 0xc1, 0xcc, 0x75, 0xe4, 0xff,
    -	0x11, 0xef, 0xf1, 0xb5, 0x0a, 0x09, 0xca, 0x71, 0x57, 0x5d, 0x1b, 0xe5, 0x5f, 0x20, 0x5d, 0x6e,
    -	0x61, 0x42, 0x09, 0x49, 0x38, 0x78, 0x1b, 0x54, 0xa4, 0x8d, 0x94, 0xc3, 0x61, 0xd7, 0x9e, 0x97,
    -	0xde, 0x54, 0x36, 0xf3, 0x02, 0xa8, 0x5f, 0x47, 0xbb, 0x0b, 0x66, 0xa2, 0xea, 0x82, 0x55, 0x50,
    -	0x4c, 0x7d, 0xbe, 0xc3, 0xc0, 0x05, 0x25, 0x97, 0x98, 0xc9, 0xc1, 0x89, 0x31, 0xb6, 0x9f, 0x3c,
    -	0xaf, 0x4d, 0x3c, 0x7d, 0x5e, 0x9b, 0x78, 0xf6, 0xbc, 0x36, 0xf1, 0xb8, 0x57, 0x53, 0x9e, 0xf4,
    -	0x6a, 0xca, 0xd3, 0x5e, 0x4d, 0x79, 0xd6, 0xab, 0x29, 0xbf, 0xf6, 0x6a, 0xca, 0xb7, 0xbf, 0xd5,
    -	0x26, 0x3e, 0x5c, 0x1d, 0xf9, 0x5f, 0xbc, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xad, 0xe2, 0x61,
    -	0x96, 0x0a, 0x14, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/admissionregistration/v1alpha1/generated.proto", fileDescriptor_2c49182728ae0af5)
    +}
    +
    +var fileDescriptor_2c49182728ae0af5 = []byte{
    +	// 1783 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xdd, 0x6f, 0x1b, 0x4b,
    +	0x15, 0xcf, 0xda, 0xce, 0x87, 0xc7, 0xf9, 0xf2, 0xd0, 0x12, 0x37, 0xa5, 0xde, 0x68, 0x55, 0xa1,
    +	0x46, 0x82, 0x35, 0x49, 0x0b, 0xa5, 0x55, 0x51, 0x95, 0x6d, 0x9b, 0xb6, 0x69, 0x9d, 0x44, 0x53,
    +	0x94, 0x20, 0x04, 0x12, 0x93, 0xf5, 0xc4, 0xde, 0xc6, 0xfb, 0xc1, 0xce, 0x3a, 0x34, 0x02, 0x89,
    +	0x4a, 0x08, 0x09, 0xde, 0x78, 0xe0, 0x85, 0x37, 0xc4, 0x1f, 0xc0, 0x03, 0xfc, 0x05, 0xbc, 0xf5,
    +	0xb1, 0x8f, 0xe5, 0x81, 0x15, 0x35, 0x20, 0xf1, 0x0c, 0xd2, 0xbd, 0x52, 0x5e, 0xee, 0xd5, 0xcc,
    +	0xce, 0x7e, 0x79, 0xed, 0xc6, 0x4e, 0xd3, 0xf4, 0xe1, 0xde, 0x37, 0xcf, 0xf9, 0xf8, 0x9d, 0x39,
    +	0x67, 0xce, 0x9c, 0x39, 0xc7, 0x0b, 0x6e, 0x1d, 0x7c, 0x97, 0xaa, 0x86, 0x5d, 0xc3, 0x8e, 0x51,
    +	0xc3, 0x0d, 0xd3, 0xa0, 0xd4, 0xb0, 0x2d, 0x97, 0x34, 0x0d, 0xea, 0xb9, 0xd8, 0x33, 0x6c, 0xab,
    +	0x76, 0xb8, 0x82, 0xdb, 0x4e, 0x0b, 0xaf, 0xd4, 0x9a, 0xc4, 0x22, 0x2e, 0xf6, 0x48, 0x43, 0x75,
    +	0x5c, 0xdb, 0xb3, 0xe1, 0x72, 0xa0, 0xaa, 0x62, 0xc7, 0x50, 0xfb, 0xaa, 0xaa, 0xa1, 0xea, 0xe2,
    +	0x37, 0x9b, 0x86, 0xd7, 0xea, 0xec, 0xa9, 0xba, 0x6d, 0xd6, 0x9a, 0x76, 0xd3, 0xae, 0x71, 0x84,
    +	0xbd, 0xce, 0x3e, 0x5f, 0xf1, 0x05, 0xff, 0x15, 0x20, 0x2f, 0x5e, 0x1f, 0x62, 0x53, 0xbd, 0xdb,
    +	0x59, 0xbc, 0x11, 0x2b, 0x99, 0x58, 0x6f, 0x19, 0x16, 0x71, 0x8f, 0x6a, 0xce, 0x41, 0x93, 0x11,
    +	0x68, 0xcd, 0x24, 0x1e, 0xee, 0xa7, 0x55, 0x1b, 0xa4, 0xe5, 0x76, 0x2c, 0xcf, 0x30, 0x49, 0x46,
    +	0xe1, 0x3b, 0x27, 0x29, 0x50, 0xbd, 0x45, 0x4c, 0xdc, 0xab, 0xa7, 0x3c, 0x02, 0x70, 0xcd, 0x71,
    +	0xda, 0x47, 0xf7, 0x6c, 0x6b, 0xdf, 0x68, 0x76, 0x02, 0x3f, 0xe0, 0x2a, 0x00, 0xe4, 0x85, 0xe3,
    +	0x12, 0xee, 0x61, 0x45, 0x5a, 0x92, 0xae, 0x15, 0x35, 0xf8, 0xca, 0x97, 0xc7, 0xba, 0xbe, 0x0c,
    +	0x1e, 0x44, 0x1c, 0x94, 0x90, 0x52, 0x28, 0x98, 0x5b, 0xeb, 0x34, 0x0c, 0x6f, 0xcd, 0xb2, 0x6c,
    +	0x2f, 0x80, 0xb9, 0x02, 0xf2, 0x07, 0xe4, 0x48, 0xe8, 0x97, 0x84, 0x7e, 0xfe, 0x09, 0x39, 0x42,
    +	0x8c, 0x0e, 0xd7, 0xc0, 0xdc, 0x21, 0x6e, 0x77, 0x48, 0x0c, 0x58, 0xc9, 0x71, 0xd1, 0x05, 0x21,
    +	0x3a, 0xb7, 0x93, 0x66, 0xa3, 0x5e, 0x79, 0xa5, 0x0d, 0xca, 0xf1, 0x6a, 0x17, 0xbb, 0x96, 0x61,
    +	0x35, 0xe1, 0x37, 0xc0, 0xd4, 0xbe, 0x41, 0xda, 0x0d, 0x44, 0xf6, 0x05, 0xe0, 0xbc, 0x00, 0x9c,
    +	0x5a, 0x17, 0x74, 0x14, 0x49, 0xc0, 0x65, 0x30, 0xf9, 0xb3, 0x40, 0xb1, 0x92, 0xe7, 0xc2, 0x73,
    +	0x42, 0x78, 0x52, 0xe0, 0xa1, 0x90, 0xaf, 0xdc, 0x05, 0xc5, 0x8d, 0x67, 0x5b, 0x9b, 0xdb, 0xd8,
    +	0xd3, 0x5b, 0xa7, 0x8a, 0xd1, 0x3e, 0x98, 0xad, 0x33, 0xe5, 0x7b, 0xb6, 0xd5, 0x30, 0x78, 0x88,
    +	0x96, 0x40, 0xc1, 0xc2, 0x26, 0x11, 0xfa, 0xd3, 0x42, 0xbf, 0xb0, 0x89, 0x4d, 0x82, 0x38, 0xa7,
    +	0xc7, 0x4e, 0x6e, 0x28, 0x3b, 0x7f, 0x2f, 0x08, 0x43, 0x88, 0x50, 0xbb, 0xe3, 0xea, 0x84, 0xc2,
    +	0x17, 0xa0, 0xcc, 0xe0, 0xa8, 0x83, 0x75, 0xf2, 0x8c, 0xb4, 0x89, 0xee, 0xd9, 0x2e, 0xb7, 0x5a,
    +	0x5a, 0xbd, 0xae, 0xc6, 0x57, 0x26, 0x4a, 0x1e, 0xd5, 0x39, 0x68, 0x32, 0x02, 0x55, 0x59, 0x8e,
    +	0xaa, 0x87, 0x2b, 0xea, 0x53, 0xbc, 0x47, 0xda, 0xa1, 0xaa, 0x76, 0xb1, 0xeb, 0xcb, 0xe5, 0xcd,
    +	0x5e, 0x44, 0x94, 0x35, 0x02, 0x6d, 0x30, 0x6b, 0xef, 0x3d, 0x27, 0xba, 0x17, 0x99, 0xcd, 0x9d,
    +	0xde, 0x2c, 0xec, 0xfa, 0xf2, 0xec, 0x56, 0x0a, 0x0e, 0xf5, 0xc0, 0xc3, 0x5f, 0x82, 0x19, 0x57,
    +	0xf8, 0x8d, 0x3a, 0x6d, 0x42, 0x2b, 0xf9, 0xa5, 0xfc, 0xb5, 0xd2, 0xaa, 0xa6, 0x0e, 0x5d, 0x19,
    +	0x54, 0xe6, 0x58, 0x83, 0x29, 0xef, 0x1a, 0x5e, 0x6b, 0xcb, 0x21, 0x01, 0x9f, 0x6a, 0x17, 0x45,
    +	0xe0, 0x67, 0x50, 0xd2, 0x00, 0x4a, 0xdb, 0x83, 0xbf, 0x97, 0xc0, 0x05, 0xf2, 0x42, 0x6f, 0x77,
    +	0x1a, 0x24, 0x25, 0x57, 0x29, 0x9c, 0xd9, 0x46, 0xbe, 0x26, 0x36, 0x72, 0xe1, 0x41, 0x1f, 0x3b,
    +	0xa8, 0xaf, 0x75, 0x78, 0x1f, 0x94, 0x4c, 0x96, 0x14, 0xdb, 0x76, 0xdb, 0xd0, 0x8f, 0x2a, 0x93,
    +	0x3c, 0x95, 0x94, 0xae, 0x2f, 0x97, 0xea, 0x31, 0xf9, 0xd8, 0x97, 0xe7, 0x12, 0xcb, 0xef, 0x1f,
    +	0x39, 0x04, 0x25, 0xd5, 0x94, 0xff, 0x48, 0x60, 0xa1, 0xde, 0x61, 0x37, 0xdc, 0x6a, 0xae, 0x85,
    +	0x9b, 0x0f, 0x78, 0xf0, 0x27, 0x60, 0x8a, 0x1d, 0x5b, 0x03, 0x7b, 0x58, 0xe4, 0xd6, 0xb7, 0x86,
    +	0x3b, 0xe4, 0xe0, 0x44, 0xeb, 0xc4, 0xc3, 0x71, 0x6e, 0xc7, 0x34, 0x14, 0xa1, 0xc2, 0x16, 0x28,
    +	0x50, 0x87, 0xe8, 0x22, 0x85, 0xd6, 0x47, 0x88, 0xe4, 0x80, 0x3d, 0x3f, 0x73, 0x88, 0x1e, 0xdf,
    +	0x3b, 0xb6, 0x42, 0xdc, 0x82, 0xf2, 0x7f, 0x09, 0x54, 0x07, 0xe8, 0x68, 0x86, 0xd5, 0x60, 0x85,
    +	0xe6, 0xc3, 0xbb, 0x6b, 0xa7, 0xdc, 0xad, 0xbf, 0xbf, 0xbb, 0x62, 0xeb, 0x03, 0xbd, 0xfe, 0x9f,
    +	0x04, 0x94, 0x77, 0xab, 0x3e, 0x35, 0xa8, 0x07, 0x7f, 0x94, 0xf1, 0x5c, 0x1d, 0xf2, 0x36, 0x1b,
    +	0x34, 0xf0, 0x3b, 0x2a, 0xc9, 0x21, 0x25, 0xe1, 0xb5, 0x05, 0xc6, 0x0d, 0x8f, 0x98, 0xb4, 0x92,
    +	0xe3, 0xf7, 0xe5, 0xf1, 0x99, 0xb9, 0xad, 0xcd, 0x08, 0xab, 0xe3, 0x8f, 0x19, 0x3e, 0x0a, 0xcc,
    +	0x28, 0x7f, 0xce, 0x9d, 0xe4, 0x34, 0x8b, 0x10, 0xab, 0xc4, 0x0e, 0x27, 0x6e, 0xc6, 0x15, 0x3b,
    +	0x3a, 0xbe, 0xed, 0x88, 0x83, 0x12, 0x52, 0xf0, 0xc7, 0x60, 0xca, 0xc1, 0x2e, 0x36, 0xc3, 0xb7,
    +	0x28, 0x5d, 0xf6, 0x4e, 0xf2, 0x66, 0x5b, 0xa8, 0x6a, 0xd3, 0x2c, 0x52, 0xe1, 0x0a, 0x45, 0x90,
    +	0xb0, 0x03, 0x66, 0xcd, 0x54, 0x9d, 0xe7, 0x6f, 0x58, 0x69, 0xf5, 0xd6, 0x28, 0x21, 0x4b, 0x01,
    +	0x04, 0x15, 0x36, 0x4d, 0x43, 0x3d, 0x46, 0x94, 0x7f, 0x4b, 0xe0, 0xf2, 0x80, 0x80, 0x9d, 0x43,
    +	0x7a, 0x34, 0xd3, 0xe9, 0xa1, 0x9d, 0x41, 0x7a, 0xf4, 0xcf, 0x8b, 0x3f, 0x4e, 0x0c, 0x74, 0x93,
    +	0x27, 0x04, 0x06, 0x45, 0x7e, 0x12, 0x4f, 0x0c, 0xab, 0x21, 0xfc, 0xbc, 0x31, 0xea, 0xe9, 0x32,
    +	0x5d, 0x6d, 0xa6, 0xeb, 0xcb, 0xc5, 0x68, 0x89, 0x62, 0x54, 0xf8, 0x73, 0x30, 0x6f, 0x8a, 0x8e,
    +	0x81, 0x01, 0x18, 0x96, 0x47, 0x45, 0x1e, 0xbd, 0xc7, 0x11, 0x5f, 0xe8, 0xfa, 0xf2, 0x7c, 0xbd,
    +	0x07, 0x16, 0x65, 0x0c, 0xc1, 0x06, 0x28, 0x1e, 0x62, 0xd7, 0xc0, 0x7b, 0xf1, 0x23, 0x3a, 0x4a,
    +	0xf6, 0xee, 0x08, 0x5d, 0xad, 0x2c, 0xa2, 0x5b, 0x0c, 0x29, 0x14, 0xc5, 0xc0, 0xcc, 0x8a, 0xd9,
    +	0x09, 0x3a, 0xc6, 0xf0, 0x85, 0xbc, 0x3e, 0xf2, 0x91, 0xda, 0x56, 0x6c, 0x25, 0xa4, 0x50, 0x14,
    +	0x03, 0xc3, 0xa7, 0x60, 0x66, 0x1f, 0x1b, 0xed, 0x8e, 0x4b, 0xc4, 0xf3, 0x37, 0xce, 0xef, 0xef,
    +	0xd7, 0xd9, 0x63, 0xbe, 0x9e, 0x64, 0x1c, 0xfb, 0x72, 0x39, 0x45, 0xe0, 0x4f, 0x60, 0x5a, 0x19,
    +	0xfe, 0x02, 0xcc, 0x99, 0xa9, 0x46, 0x8e, 0x56, 0x26, 0xf8, 0xce, 0x47, 0x3e, 0x95, 0x08, 0x21,
    +	0xee, 0x7a, 0xd3, 0x74, 0x8a, 0x7a, 0x4d, 0xc1, 0xdf, 0x48, 0x00, 0xba, 0xc4, 0xb0, 0x0e, 0x6d,
    +	0x9d, 0x43, 0xa6, 0x1e, 0xf4, 0x1f, 0x08, 0x18, 0x88, 0x32, 0x12, 0xc7, 0xbe, 0x7c, 0x7b, 0x88,
    +	0x19, 0x46, 0xcd, 0x6a, 0xf2, 0x18, 0xf4, 0xb1, 0xa9, 0xfc, 0x35, 0x07, 0xa6, 0xc2, 0x78, 0xc3,
    +	0x3b, 0xec, 0x3e, 0x78, 0x7a, 0x8b, 0x49, 0x8b, 0x4e, 0xb5, 0x1a, 0x1e, 0xca, 0x76, 0xc8, 0x38,
    +	0x4e, 0x2e, 0x50, 0xac, 0x00, 0x7f, 0x2d, 0x01, 0x88, 0x33, 0xb3, 0x88, 0x28, 0x68, 0xdf, 0x1b,
    +	0x21, 0xae, 0xd9, 0x81, 0x46, 0xfb, 0x2a, 0x0b, 0x48, 0x96, 0x8e, 0xfa, 0x18, 0x64, 0xb7, 0xfa,
    +	0x39, 0xb5, 0x2d, 0xbe, 0xc7, 0x4a, 0x61, 0xe4, 0x5b, 0x1d, 0x4d, 0x08, 0xc1, 0xad, 0x8e, 0x96,
    +	0x28, 0x46, 0x55, 0xde, 0x48, 0x60, 0x61, 0x40, 0x67, 0x07, 0x6f, 0xc6, 0xdd, 0x2b, 0x6f, 0xaf,
    +	0x2b, 0xd2, 0x52, 0xfe, 0x5a, 0x51, 0x2b, 0x27, 0xbb, 0x4e, 0xce, 0x40, 0x69, 0x39, 0xf8, 0x2b,
    +	0x96, 0x15, 0x19, 0x3c, 0x51, 0x2d, 0x6e, 0x0e, 0xe3, 0x81, 0xda, 0xa7, 0xd1, 0x5c, 0x8c, 0xd2,
    +	0x29, 0xc3, 0x43, 0x7d, 0xcc, 0x29, 0x18, 0xc4, 0x85, 0x8c, 0xbd, 0x98, 0xd8, 0x31, 0x76, 0x88,
    +	0xdb, 0x6f, 0x46, 0x5a, 0xdb, 0x7e, 0x2c, 0x38, 0x28, 0x21, 0xc5, 0x26, 0xa2, 0x03, 0x56, 0x4f,
    +	0x73, 0xe9, 0x89, 0x88, 0x17, 0x46, 0xce, 0x51, 0xfe, 0x92, 0x03, 0xd1, 0x5b, 0x38, 0xc4, 0x00,
    +	0x55, 0x03, 0xc5, 0x68, 0x28, 0x11, 0xa8, 0x51, 0xa9, 0x88, 0x06, 0x18, 0x14, 0xcb, 0xb0, 0x37,
    +	0x9b, 0x86, 0xa3, 0x4a, 0xfe, 0xf4, 0xa3, 0x0a, 0x7f, 0xb3, 0xa3, 0x21, 0x25, 0x82, 0x84, 0x1e,
    +	0x58, 0xe0, 0xf5, 0x9d, 0x78, 0xc4, 0xdd, 0xb4, 0xbd, 0x75, 0xbb, 0x63, 0x35, 0xd6, 0x74, 0x9e,
    +	0xeb, 0x05, 0xbe, 0xbb, 0xdb, 0x5d, 0x5f, 0x5e, 0xd8, 0xee, 0x2f, 0x72, 0xec, 0xcb, 0x97, 0x07,
    +	0xb0, 0xf8, 0x7d, 0x1a, 0x04, 0xad, 0xfc, 0x41, 0x02, 0xd3, 0x4c, 0xe2, 0x5e, 0x8b, 0xe8, 0x07,
    +	0xac, 0x79, 0x65, 0x45, 0x84, 0xf4, 0xce, 0xce, 0x41, 0xb6, 0x95, 0x56, 0xef, 0x8c, 0x90, 0xf0,
    +	0x99, 0x01, 0x3c, 0xce, 0x99, 0x0c, 0x8b, 0xa2, 0x3e, 0x36, 0x95, 0x7f, 0xe4, 0xc0, 0xa5, 0x1d,
    +	0xdc, 0x36, 0x1a, 0x1f, 0x69, 0xa8, 0x78, 0x9e, 0xea, 0xb2, 0x1f, 0x8d, 0xf4, 0xc4, 0x0d, 0xd8,
    +	0xf5, 0xa0, 0x06, 0x1b, 0xba, 0x60, 0x82, 0x7a, 0xd8, 0xeb, 0x84, 0x9d, 0xda, 0xc6, 0x99, 0x58,
    +	0xe3, 0x88, 0xda, 0xac, 0xb0, 0x37, 0x11, 0xac, 0x91, 0xb0, 0xa4, 0x7c, 0x2a, 0x81, 0xa5, 0x81,
    +	0xba, 0xe7, 0x37, 0xcc, 0xfc, 0x34, 0x15, 0xe6, 0xad, 0xb3, 0x70, 0xfc, 0xa4, 0x71, 0xe6, 0x13,
    +	0x09, 0x5c, 0x3d, 0x49, 0xf9, 0x1c, 0x3a, 0x56, 0x27, 0xdd, 0xb1, 0x3e, 0x39, 0x43, 0xd7, 0x07,
    +	0xb4, 0xae, 0xbf, 0xcd, 0x9f, 0xec, 0xf8, 0x97, 0x43, 0x4d, 0xea, 0x1f, 0xb2, 0x5d, 0x50, 0x3e,
    +	0x14, 0x11, 0xb3, 0xad, 0xa0, 0x6a, 0x06, 0xfd, 0x68, 0x51, 0x5b, 0xee, 0xfa, 0x72, 0x79, 0xa7,
    +	0x97, 0x79, 0xec, 0xcb, 0xf3, 0xbd, 0x44, 0x94, 0xc5, 0x50, 0xfe, 0x2b, 0x81, 0x2b, 0x03, 0xcf,
    +	0xe2, 0x1c, 0xb2, 0xcf, 0x48, 0x67, 0xdf, 0xfd, 0x33, 0xc9, 0xbe, 0xfe, 0x69, 0xf7, 0xa7, 0x89,
    +	0x77, 0xb8, 0xfa, 0x85, 0x98, 0x99, 0xda, 0xa0, 0x14, 0x67, 0x40, 0x38, 0x35, 0x7d, 0xfb, 0x14,
    +	0x21, 0xb7, 0x2d, 0xed, 0x2b, 0x22, 0xc6, 0xa5, 0x98, 0x46, 0x51, 0x12, 0x3e, 0x3b, 0xd5, 0x14,
    +	0xde, 0x67, 0xaa, 0x79, 0x29, 0x81, 0x79, 0x9c, 0xfe, 0x0f, 0x9f, 0x56, 0xc6, 0xb9, 0x07, 0xb7,
    +	0x47, 0xe9, 0xbf, 0xd3, 0x10, 0x5a, 0x45, 0xb8, 0x31, 0xdf, 0xc3, 0xa0, 0x28, 0x63, 0xed, 0x23,
    +	0x0f, 0x56, 0xa9, 0x81, 0x77, 0xf2, 0x03, 0x0d, 0xbc, 0xca, 0xdf, 0x72, 0x40, 0x3e, 0xe1, 0x29,
    +	0x87, 0x1b, 0x00, 0xda, 0x7b, 0x94, 0xb8, 0x87, 0xa4, 0xf1, 0x30, 0xf8, 0x64, 0x13, 0x76, 0xd0,
    +	0xf9, 0xb8, 0xbd, 0xda, 0xca, 0x48, 0xa0, 0x3e, 0x5a, 0xd0, 0x04, 0xd3, 0x5e, 0xa2, 0xf3, 0x1b,
    +	0x65, 0x22, 0x10, 0x8e, 0x25, 0x1b, 0x47, 0x6d, 0xbe, 0xeb, 0xcb, 0xa9, 0x56, 0x12, 0xa5, 0xe0,
    +	0xa1, 0x0e, 0x80, 0x1e, 0x9f, 0x5e, 0x70, 0x01, 0x6a, 0xc3, 0x95, 0xb3, 0xf8, 0xcc, 0xa2, 0x27,
    +	0x28, 0x71, 0x5c, 0x09, 0x58, 0xe5, 0x33, 0x09, 0x80, 0xf8, 0x56, 0xc0, 0xab, 0x20, 0xf1, 0x29,
    +	0x44, 0xbc, 0x62, 0x05, 0x06, 0x81, 0x12, 0x74, 0xb8, 0x0c, 0x26, 0x4d, 0x42, 0x29, 0x6e, 0x86,
    +	0x73, 0x40, 0xf4, 0xa9, 0xa7, 0x1e, 0x90, 0x51, 0xc8, 0x87, 0xbb, 0x60, 0xc2, 0x25, 0x98, 0x8a,
    +	0xf9, 0xb3, 0xa8, 0xdd, 0x65, 0x6d, 0x15, 0xe2, 0x94, 0x63, 0x5f, 0x5e, 0x19, 0xe6, 0xa3, 0x9e,
    +	0x2a, 0xba, 0x30, 0xae, 0x84, 0x04, 0x1c, 0x7c, 0x08, 0xca, 0xc2, 0x46, 0x62, 0xc3, 0xc1, 0xad,
    +	0xbd, 0x24, 0x76, 0x53, 0xae, 0xf7, 0x0a, 0xa0, 0xac, 0x8e, 0xb2, 0x01, 0xa6, 0xc2, 0xec, 0x82,
    +	0x15, 0x50, 0x48, 0x3c, 0xdf, 0x81, 0xe3, 0x9c, 0xd2, 0x13, 0x98, 0x5c, 0xff, 0xc0, 0x68, 0x5b,
    +	0xaf, 0xde, 0x56, 0xc7, 0x5e, 0xbf, 0xad, 0x8e, 0xbd, 0x79, 0x5b, 0x1d, 0x7b, 0xd9, 0xad, 0x4a,
    +	0xaf, 0xba, 0x55, 0xe9, 0x75, 0xb7, 0x2a, 0xbd, 0xe9, 0x56, 0xa5, 0x7f, 0x76, 0xab, 0xd2, 0xef,
    +	0xfe, 0x55, 0x1d, 0xfb, 0xe1, 0xf2, 0xd0, 0x1f, 0x65, 0x3f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xac,
    +	0xc8, 0x8c, 0x78, 0xc0, 0x1d, 0x00, 0x00,
    +}
    +
    +func (m *ApplyConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ApplyConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ApplyConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
     func (m *AuditAnnotation) Marshal() (dAtA []byte, err error) {
    @@ -710,6 +1017,34 @@ func (m *ExpressionWarning) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *JSONPatch) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *JSONPatch) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *JSONPatch) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *MatchCondition) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -825,7 +1160,7 @@ func (m *MatchResources) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    -func (m *NamedRuleWithOperations) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicy) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -835,18 +1170,18 @@ func (m *NamedRuleWithOperations) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *NamedRuleWithOperations) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicy) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *NamedRuleWithOperations) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
     	{
    -		size, err := m.RuleWithOperations.MarshalToSizedBuffer(dAtA[:i])
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
     		if err != nil {
     			return 0, err
     		}
    @@ -855,19 +1190,20 @@ func (m *NamedRuleWithOperations) MarshalToSizedBuffer(dAtA []byte) (int, error)
     	}
     	i--
     	dAtA[i] = 0x12
    -	if len(m.ResourceNames) > 0 {
    -		for iNdEx := len(m.ResourceNames) - 1; iNdEx >= 0; iNdEx-- {
    -			i -= len(m.ResourceNames[iNdEx])
    -			copy(dAtA[i:], m.ResourceNames[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceNames[iNdEx])))
    -			i--
    -			dAtA[i] = 0xa
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    +	i--
    +	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *ParamKind) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicyBinding) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -877,30 +1213,40 @@ func (m *ParamKind) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ParamKind) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBinding) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ParamKind) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBinding) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	i -= len(m.Kind)
    -	copy(dAtA[i:], m.Kind)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind)))
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
     	i--
     	dAtA[i] = 0x12
    -	i -= len(m.APIVersion)
    -	copy(dAtA[i:], m.APIVersion)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion)))
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
     	i--
     	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *ParamRef) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicyBindingList) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -910,197 +1256,12 @@ func (m *ParamRef) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ParamRef) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBindingList) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ParamRef) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if m.ParameterNotFoundAction != nil {
    -		i -= len(*m.ParameterNotFoundAction)
    -		copy(dAtA[i:], *m.ParameterNotFoundAction)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ParameterNotFoundAction)))
    -		i--
    -		dAtA[i] = 0x22
    -	}
    -	if m.Selector != nil {
    -		{
    -			size, err := m.Selector.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0x1a
    -	}
    -	i -= len(m.Namespace)
    -	copy(dAtA[i:], m.Namespace)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
    -	i--
    -	dAtA[i] = 0x12
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *TypeChecking) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *TypeChecking) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *TypeChecking) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.ExpressionWarnings) > 0 {
    -		for iNdEx := len(m.ExpressionWarnings) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.ExpressionWarnings[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0xa
    -		}
    -	}
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ValidatingAdmissionPolicy) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ValidatingAdmissionPolicy) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ValidatingAdmissionPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	{
    -		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x1a
    -	{
    -		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x12
    -	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ValidatingAdmissionPolicyBinding) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ValidatingAdmissionPolicyBinding) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ValidatingAdmissionPolicyBinding) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	{
    -		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x12
    -	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ValidatingAdmissionPolicyBindingList) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ValidatingAdmissionPolicyBindingList) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ValidatingAdmissionPolicyBindingList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBindingList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
    @@ -1132,7 +1293,7 @@ func (m *ValidatingAdmissionPolicyBindingList) MarshalToSizedBuffer(dAtA []byte)
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyBindingSpec) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicyBindingSpec) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1142,25 +1303,16 @@ func (m *ValidatingAdmissionPolicyBindingSpec) Marshal() (dAtA []byte, err error
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicyBindingSpec) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBindingSpec) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicyBindingSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBindingSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.ValidationActions) > 0 {
    -		for iNdEx := len(m.ValidationActions) - 1; iNdEx >= 0; iNdEx-- {
    -			i -= len(m.ValidationActions[iNdEx])
    -			copy(dAtA[i:], m.ValidationActions[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ValidationActions[iNdEx])))
    -			i--
    -			dAtA[i] = 0x22
    -		}
    -	}
     	if m.MatchResources != nil {
     		{
     			size, err := m.MatchResources.MarshalToSizedBuffer(dAtA[:i])
    @@ -1193,7 +1345,7 @@ func (m *ValidatingAdmissionPolicyBindingSpec) MarshalToSizedBuffer(dAtA []byte)
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyList) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicyList) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1203,12 +1355,12 @@ func (m *ValidatingAdmissionPolicyList) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicyList) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyList) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicyList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
    @@ -1240,7 +1392,7 @@ func (m *ValidatingAdmissionPolicyList) MarshalToSizedBuffer(dAtA []byte) (int,
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicySpec) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicySpec) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1250,30 +1402,21 @@ func (m *ValidatingAdmissionPolicySpec) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicySpec) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicySpec) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.Variables) > 0 {
    -		for iNdEx := len(m.Variables) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Variables[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x3a
    -		}
    -	}
    +	i -= len(m.ReinvocationPolicy)
    +	copy(dAtA[i:], m.ReinvocationPolicy)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ReinvocationPolicy)))
    +	i--
    +	dAtA[i] = 0x3a
     	if len(m.MatchConditions) > 0 {
     		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
     			{
    @@ -1288,10 +1431,17 @@ func (m *ValidatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int,
     			dAtA[i] = 0x32
     		}
     	}
    -	if len(m.AuditAnnotations) > 0 {
    -		for iNdEx := len(m.AuditAnnotations) - 1; iNdEx >= 0; iNdEx-- {
    +	if m.FailurePolicy != nil {
    +		i -= len(*m.FailurePolicy)
    +		copy(dAtA[i:], *m.FailurePolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    +		i--
    +		dAtA[i] = 0x2a
    +	}
    +	if len(m.Mutations) > 0 {
    +		for iNdEx := len(m.Mutations) - 1; iNdEx >= 0; iNdEx-- {
     			{
    -				size, err := m.AuditAnnotations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				size, err := m.Mutations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
     				if err != nil {
     					return 0, err
     				}
    @@ -1299,20 +1449,13 @@ func (m *ValidatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int,
     				i = encodeVarintGenerated(dAtA, i, uint64(size))
     			}
     			i--
    -			dAtA[i] = 0x2a
    +			dAtA[i] = 0x22
     		}
     	}
    -	if m.FailurePolicy != nil {
    -		i -= len(*m.FailurePolicy)
    -		copy(dAtA[i:], *m.FailurePolicy)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    -		i--
    -		dAtA[i] = 0x22
    -	}
    -	if len(m.Validations) > 0 {
    -		for iNdEx := len(m.Validations) - 1; iNdEx >= 0; iNdEx-- {
    +	if len(m.Variables) > 0 {
    +		for iNdEx := len(m.Variables) - 1; iNdEx >= 0; iNdEx-- {
     			{
    -				size, err := m.Validations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				size, err := m.Variables[iNdEx].MarshalToSizedBuffer(dAtA[:i])
     				if err != nil {
     					return 0, err
     				}
    @@ -1350,7 +1493,7 @@ func (m *ValidatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int,
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyStatus) Marshal() (dAtA []byte, err error) {
    +func (m *Mutation) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1360,33 +1503,31 @@ func (m *ValidatingAdmissionPolicyStatus) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicyStatus) MarshalTo(dAtA []byte) (int, error) {
    +func (m *Mutation) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicyStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *Mutation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.Conditions) > 0 {
    -		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	if m.JSONPatch != nil {
    +		{
    +			size, err := m.JSONPatch.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
     			}
    -			i--
    -			dAtA[i] = 0x1a
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
    +		i--
    +		dAtA[i] = 0x22
     	}
    -	if m.TypeChecking != nil {
    +	if m.ApplyConfiguration != nil {
     		{
    -			size, err := m.TypeChecking.MarshalToSizedBuffer(dAtA[:i])
    +			size, err := m.ApplyConfiguration.MarshalToSizedBuffer(dAtA[:i])
     			if err != nil {
     				return 0, err
     			}
    @@ -1394,15 +1535,17 @@ func (m *ValidatingAdmissionPolicyStatus) MarshalToSizedBuffer(dAtA []byte) (int
     			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
     		i--
    -		dAtA[i] = 0x12
    +		dAtA[i] = 0x1a
     	}
    -	i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration))
    +	i -= len(m.PatchType)
    +	copy(dAtA[i:], m.PatchType)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.PatchType)))
     	i--
    -	dAtA[i] = 0x8
    +	dAtA[i] = 0x12
     	return len(dAtA) - i, nil
     }
     
    -func (m *Validation) Marshal() (dAtA []byte, err error) {
    +func (m *NamedRuleWithOperations) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1412,42 +1555,72 @@ func (m *Validation) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *Validation) MarshalTo(dAtA []byte) (int, error) {
    +func (m *NamedRuleWithOperations) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *Validation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *NamedRuleWithOperations) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	i -= len(m.MessageExpression)
    -	copy(dAtA[i:], m.MessageExpression)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.MessageExpression)))
    +	{
    +		size, err := m.RuleWithOperations.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
     	i--
    -	dAtA[i] = 0x22
    -	if m.Reason != nil {
    -		i -= len(*m.Reason)
    -		copy(dAtA[i:], *m.Reason)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Reason)))
    -		i--
    -		dAtA[i] = 0x1a
    +	dAtA[i] = 0x12
    +	if len(m.ResourceNames) > 0 {
    +		for iNdEx := len(m.ResourceNames) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.ResourceNames[iNdEx])
    +			copy(dAtA[i:], m.ResourceNames[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceNames[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +		}
     	}
    -	i -= len(m.Message)
    -	copy(dAtA[i:], m.Message)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message)))
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ParamKind) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ParamKind) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ParamKind) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Kind)
    +	copy(dAtA[i:], m.Kind)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind)))
     	i--
     	dAtA[i] = 0x12
    -	i -= len(m.Expression)
    -	copy(dAtA[i:], m.Expression)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i -= len(m.APIVersion)
    +	copy(dAtA[i:], m.APIVersion)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion)))
     	i--
     	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *Variable) Marshal() (dAtA []byte, err error) {
    +func (m *ParamRef) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1457,19 +1630,38 @@ func (m *Variable) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *Variable) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ParamRef) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *Variable) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ParamRef) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	i -= len(m.Expression)
    -	copy(dAtA[i:], m.Expression)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	if m.ParameterNotFoundAction != nil {
    +		i -= len(*m.ParameterNotFoundAction)
    +		copy(dAtA[i:], *m.ParameterNotFoundAction)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ParameterNotFoundAction)))
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if m.Selector != nil {
    +		{
    +			size, err := m.Selector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	i -= len(m.Namespace)
    +	copy(dAtA[i:], m.Namespace)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
     	i--
     	dAtA[i] = 0x12
     	i -= len(m.Name)
    @@ -1480,606 +1672,2773 @@ func (m *Variable) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    -func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    -	offset -= sovGenerated(v)
    -	base := offset
    -	for v >= 1<<7 {
    -		dAtA[offset] = uint8(v&0x7f | 0x80)
    -		v >>= 7
    -		offset++
    +func (m *TypeChecking) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	dAtA[offset] = uint8(v)
    -	return base
    +	return dAtA[:n], nil
     }
    -func (m *AuditAnnotation) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.Key)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.ValueExpression)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +
    +func (m *TypeChecking) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ExpressionWarning) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    +func (m *TypeChecking) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = len(m.FieldRef)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Warning)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	if len(m.ExpressionWarnings) > 0 {
    +		for iNdEx := len(m.ExpressionWarnings) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.ExpressionWarnings[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
     }
     
    -func (m *MatchCondition) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *ValidatingAdmissionPolicy) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	var l int
    -	_ = l
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Expression)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	return dAtA[:n], nil
     }
     
    -func (m *MatchResources) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    +func (m *ValidatingAdmissionPolicy) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingAdmissionPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	if m.NamespaceSelector != nil {
    -		l = m.NamespaceSelector.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if m.ObjectSelector != nil {
    -		l = m.ObjectSelector.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if len(m.ResourceRules) > 0 {
    -		for _, e := range m.ResourceRules {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	{
    +		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	if len(m.ExcludeResourceRules) > 0 {
    -		for _, e := range m.ExcludeResourceRules {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	if m.MatchPolicy != nil {
    -		l = len(*m.MatchPolicy)
    -		n += 1 + l + sovGenerated(uint64(l))
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	return n
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *NamedRuleWithOperations) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	if len(m.ResourceNames) > 0 {
    -		for _, s := range m.ResourceNames {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    +func (m *ValidatingAdmissionPolicyBinding) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	l = m.RuleWithOperations.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	return dAtA[:n], nil
     }
     
    -func (m *ParamKind) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.APIVersion)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Kind)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +func (m *ValidatingAdmissionPolicyBinding) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ParamRef) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    +func (m *ValidatingAdmissionPolicyBinding) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Namespace)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if m.Selector != nil {
    -		l = m.Selector.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if m.ParameterNotFoundAction != nil {
    -		l = len(*m.ParameterNotFoundAction)
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	return n
    -}
    -
    -func (m *TypeChecking) Size() (n int) {
    -	if m == nil {
    -		return 0
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	var l int
    -	_ = l
    -	if len(m.ExpressionWarnings) > 0 {
    -		for _, e := range m.ExpressionWarnings {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	return n
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicy) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *ValidatingAdmissionPolicyBindingList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Spec.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Status.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicyBinding) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Spec.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +func (m *ValidatingAdmissionPolicyBindingList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicyBindingList) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    +func (m *ValidatingAdmissionPolicyBindingList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = m.ListMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
     	if len(m.Items) > 0 {
    -		for _, e := range m.Items {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
     		}
     	}
    -	return n
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyBindingSpec) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *ValidatingAdmissionPolicyBindingSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingAdmissionPolicyBindingSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingAdmissionPolicyBindingSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = len(m.PolicyName)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if m.ParamRef != nil {
    -		l = m.ParamRef.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.ValidationActions) > 0 {
    +		for iNdEx := len(m.ValidationActions) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.ValidationActions[iNdEx])
    +			copy(dAtA[i:], m.ValidationActions[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ValidationActions[iNdEx])))
    +			i--
    +			dAtA[i] = 0x22
    +		}
     	}
     	if m.MatchResources != nil {
    -		l = m.MatchResources.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    +		{
    +			size, err := m.MatchResources.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1a
     	}
    -	if len(m.ValidationActions) > 0 {
    -		for _, s := range m.ValidationActions {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if m.ParamRef != nil {
    +		{
    +			size, err := m.ParamRef.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
    +		i--
    +		dAtA[i] = 0x12
     	}
    -	return n
    +	i -= len(m.PolicyName)
    +	copy(dAtA[i:], m.PolicyName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.PolicyName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyList) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *ValidatingAdmissionPolicyList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingAdmissionPolicyList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingAdmissionPolicyList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = m.ListMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
     	if len(m.Items) > 0 {
    -		for _, e := range m.Items {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
     		}
     	}
    -	return n
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicySpec) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	if m.ParamKind != nil {
    -		l = m.ParamKind.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    +func (m *ValidatingAdmissionPolicySpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	if m.MatchConstraints != nil {
    -		l = m.MatchConstraints.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingAdmissionPolicySpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Variables) > 0 {
    +		for iNdEx := len(m.Variables) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Variables[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x3a
    +		}
     	}
    -	if len(m.Validations) > 0 {
    -		for _, e := range m.Validations {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.MatchConditions) > 0 {
    +		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x32
    +		}
    +	}
    +	if len(m.AuditAnnotations) > 0 {
    +		for iNdEx := len(m.AuditAnnotations) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.AuditAnnotations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x2a
     		}
     	}
     	if m.FailurePolicy != nil {
    -		l = len(*m.FailurePolicy)
    -		n += 1 + l + sovGenerated(uint64(l))
    +		i -= len(*m.FailurePolicy)
    +		copy(dAtA[i:], *m.FailurePolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    +		i--
    +		dAtA[i] = 0x22
     	}
    -	if len(m.AuditAnnotations) > 0 {
    -		for _, e := range m.AuditAnnotations {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Validations) > 0 {
    +		for iNdEx := len(m.Validations) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Validations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
     		}
     	}
    -	if len(m.MatchConditions) > 0 {
    -		for _, e := range m.MatchConditions {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if m.MatchConstraints != nil {
    +		{
    +			size, err := m.MatchConstraints.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
    +		i--
    +		dAtA[i] = 0x12
     	}
    -	if len(m.Variables) > 0 {
    -		for _, e := range m.Variables {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if m.ParamKind != nil {
    +		{
    +			size, err := m.ParamKind.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
    +		i--
    +		dAtA[i] = 0xa
     	}
    -	return n
    +	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyStatus) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *ValidatingAdmissionPolicyStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingAdmissionPolicyStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingAdmissionPolicyStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	n += 1 + sovGenerated(uint64(m.ObservedGeneration))
    -	if m.TypeChecking != nil {
    -		l = m.TypeChecking.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
     	if len(m.Conditions) > 0 {
    -		for _, e := range m.Conditions {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
     		}
     	}
    -	return n
    +	if m.TypeChecking != nil {
    +		{
    +			size, err := m.TypeChecking.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration))
    +	i--
    +	dAtA[i] = 0x8
    +	return len(dAtA) - i, nil
     }
     
    -func (m *Validation) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *Validation) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *Validation) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *Validation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = len(m.Expression)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Message)
    -	n += 1 + l + sovGenerated(uint64(l))
    +	i -= len(m.MessageExpression)
    +	copy(dAtA[i:], m.MessageExpression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.MessageExpression)))
    +	i--
    +	dAtA[i] = 0x22
     	if m.Reason != nil {
    -		l = len(*m.Reason)
    -		n += 1 + l + sovGenerated(uint64(l))
    +		i -= len(*m.Reason)
    +		copy(dAtA[i:], *m.Reason)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Reason)))
    +		i--
    +		dAtA[i] = 0x1a
     	}
    -	l = len(m.MessageExpression)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	i -= len(m.Message)
    +	copy(dAtA[i:], m.Message)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *Variable) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *Variable) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *Variable) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *Variable) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Expression)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func sovGenerated(x uint64) (n int) {
    -	return (math_bits.Len64(x|1) + 6) / 7
    -}
    -func sozGenerated(x uint64) (n int) {
    -	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    -}
    -func (this *AuditAnnotation) String() string {
    -	if this == nil {
    -		return "nil"
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
     	}
    -	s := strings.Join([]string{`&AuditAnnotation{`,
    -		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
    -		`ValueExpression:` + fmt.Sprintf("%v", this.ValueExpression) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	dAtA[offset] = uint8(v)
    +	return base
     }
    -func (this *ExpressionWarning) String() string {
    -	if this == nil {
    -		return "nil"
    +func (m *ApplyConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&ExpressionWarning{`,
    -		`FieldRef:` + fmt.Sprintf("%v", this.FieldRef) + `,`,
    -		`Warning:` + fmt.Sprintf("%v", this.Warning) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *MatchCondition) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *AuditAnnotation) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&MatchCondition{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = len(m.Key)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.ValueExpression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *MatchResources) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForResourceRules := "[]NamedRuleWithOperations{"
    -	for _, f := range this.ResourceRules {
    -		repeatedStringForResourceRules += strings.Replace(strings.Replace(f.String(), "NamedRuleWithOperations", "NamedRuleWithOperations", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForResourceRules += "}"
    -	repeatedStringForExcludeResourceRules := "[]NamedRuleWithOperations{"
    -	for _, f := range this.ExcludeResourceRules {
    -		repeatedStringForExcludeResourceRules += strings.Replace(strings.Replace(f.String(), "NamedRuleWithOperations", "NamedRuleWithOperations", 1), `&`, ``, 1) + ","
    +
    +func (m *ExpressionWarning) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForExcludeResourceRules += "}"
    -	s := strings.Join([]string{`&MatchResources{`,
    -		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`ResourceRules:` + repeatedStringForResourceRules + `,`,
    -		`ExcludeResourceRules:` + repeatedStringForExcludeResourceRules + `,`,
    -		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = len(m.FieldRef)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Warning)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *NamedRuleWithOperations) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *JSONPatch) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&NamedRuleWithOperations{`,
    -		`ResourceNames:` + fmt.Sprintf("%v", this.ResourceNames) + `,`,
    -		`RuleWithOperations:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.RuleWithOperations), "RuleWithOperations", "v11.RuleWithOperations", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *ParamKind) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *MatchCondition) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&ParamKind{`,
    -		`APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`,
    -		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *ParamRef) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *MatchResources) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&ParamRef{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    -		`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`ParameterNotFoundAction:` + valueToStringGenerated(this.ParameterNotFoundAction) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *TypeChecking) String() string {
    -	if this == nil {
    -		return "nil"
    +	var l int
    +	_ = l
    +	if m.NamespaceSelector != nil {
    +		l = m.NamespaceSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForExpressionWarnings := "[]ExpressionWarning{"
    -	for _, f := range this.ExpressionWarnings {
    -		repeatedStringForExpressionWarnings += strings.Replace(strings.Replace(f.String(), "ExpressionWarning", "ExpressionWarning", 1), `&`, ``, 1) + ","
    +	if m.ObjectSelector != nil {
    +		l = m.ObjectSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForExpressionWarnings += "}"
    -	s := strings.Join([]string{`&TypeChecking{`,
    -		`ExpressionWarnings:` + repeatedStringForExpressionWarnings + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	if len(m.ResourceRules) > 0 {
    +		for _, e := range m.ResourceRules {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.ExcludeResourceRules) > 0 {
    +		for _, e := range m.ExcludeResourceRules {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.MatchPolicy != nil {
    +		l = len(*m.MatchPolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
     }
    -func (this *ValidatingAdmissionPolicy) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *MutatingAdmissionPolicy) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicy{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ValidatingAdmissionPolicySpec", "ValidatingAdmissionPolicySpec", 1), `&`, ``, 1) + `,`,
    -		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ValidatingAdmissionPolicyStatus", "ValidatingAdmissionPolicyStatus", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *ValidatingAdmissionPolicyBinding) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *MutatingAdmissionPolicyBinding) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicyBinding{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ValidatingAdmissionPolicyBindingSpec", "ValidatingAdmissionPolicyBindingSpec", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *ValidatingAdmissionPolicyBindingList) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *MutatingAdmissionPolicyBindingList) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForItems := "[]ValidatingAdmissionPolicyBinding{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingAdmissionPolicyBinding", "ValidatingAdmissionPolicyBinding", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicyBindingList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	return n
     }
    -func (this *ValidatingAdmissionPolicyBindingSpec) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *MutatingAdmissionPolicyBindingSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicyBindingSpec{`,
    -		`PolicyName:` + fmt.Sprintf("%v", this.PolicyName) + `,`,
    -		`ParamRef:` + strings.Replace(this.ParamRef.String(), "ParamRef", "ParamRef", 1) + `,`,
    -		`MatchResources:` + strings.Replace(this.MatchResources.String(), "MatchResources", "MatchResources", 1) + `,`,
    -		`ValidationActions:` + fmt.Sprintf("%v", this.ValidationActions) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = len(m.PolicyName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.ParamRef != nil {
    +		l = m.ParamRef.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.MatchResources != nil {
    +		l = m.MatchResources.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
     }
    -func (this *ValidatingAdmissionPolicyList) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *MutatingAdmissionPolicyList) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForItems := "[]ValidatingAdmissionPolicy{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingAdmissionPolicy", "ValidatingAdmissionPolicy", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicyList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	return n
     }
    -func (this *ValidatingAdmissionPolicySpec) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *MutatingAdmissionPolicySpec) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForValidations := "[]Validation{"
    -	for _, f := range this.Validations {
    -		repeatedStringForValidations += strings.Replace(strings.Replace(f.String(), "Validation", "Validation", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	if m.ParamKind != nil {
    +		l = m.ParamKind.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForValidations += "}"
    -	repeatedStringForAuditAnnotations := "[]AuditAnnotation{"
    -	for _, f := range this.AuditAnnotations {
    -		repeatedStringForAuditAnnotations += strings.Replace(strings.Replace(f.String(), "AuditAnnotation", "AuditAnnotation", 1), `&`, ``, 1) + ","
    +	if m.MatchConstraints != nil {
    +		l = m.MatchConstraints.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForAuditAnnotations += "}"
    -	repeatedStringForMatchConditions := "[]MatchCondition{"
    -	for _, f := range this.MatchConditions {
    -		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	if len(m.Variables) > 0 {
    +		for _, e := range m.Variables {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForMatchConditions += "}"
    -	repeatedStringForVariables := "[]Variable{"
    -	for _, f := range this.Variables {
    -		repeatedStringForVariables += strings.Replace(strings.Replace(f.String(), "Variable", "Variable", 1), `&`, ``, 1) + ","
    +	if len(m.Mutations) > 0 {
    +		for _, e := range m.Mutations {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForVariables += "}"
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicySpec{`,
    -		`ParamKind:` + strings.Replace(this.ParamKind.String(), "ParamKind", "ParamKind", 1) + `,`,
    -		`MatchConstraints:` + strings.Replace(this.MatchConstraints.String(), "MatchResources", "MatchResources", 1) + `,`,
    -		`Validations:` + repeatedStringForValidations + `,`,
    -		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    -		`AuditAnnotations:` + repeatedStringForAuditAnnotations + `,`,
    -		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    -		`Variables:` + repeatedStringForVariables + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	if m.FailurePolicy != nil {
    +		l = len(*m.FailurePolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.MatchConditions) > 0 {
    +		for _, e := range m.MatchConditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.ReinvocationPolicy)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *ValidatingAdmissionPolicyStatus) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *Mutation) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForConditions := "[]Condition{"
    -	for _, f := range this.Conditions {
    -		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    +	var l int
    +	_ = l
    +	l = len(m.PatchType)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.ApplyConfiguration != nil {
    +		l = m.ApplyConfiguration.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.JSONPatch != nil {
    +		l = m.JSONPatch.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *NamedRuleWithOperations) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.ResourceNames) > 0 {
    +		for _, s := range m.ResourceNames {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = m.RuleWithOperations.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ParamKind) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.APIVersion)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Kind)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ParamRef) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Namespace)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Selector != nil {
    +		l = m.Selector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.ParameterNotFoundAction != nil {
    +		l = len(*m.ParameterNotFoundAction)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *TypeChecking) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.ExpressionWarnings) > 0 {
    +		for _, e := range m.ExpressionWarnings {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicy) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Status.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicyBinding) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicyBindingList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicyBindingSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.PolicyName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.ParamRef != nil {
    +		l = m.ParamRef.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.MatchResources != nil {
    +		l = m.MatchResources.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.ValidationActions) > 0 {
    +		for _, s := range m.ValidationActions {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicyList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicySpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.ParamKind != nil {
    +		l = m.ParamKind.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.MatchConstraints != nil {
    +		l = m.MatchConstraints.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.Validations) > 0 {
    +		for _, e := range m.Validations {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.FailurePolicy != nil {
    +		l = len(*m.FailurePolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.AuditAnnotations) > 0 {
    +		for _, e := range m.AuditAnnotations {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.MatchConditions) > 0 {
    +		for _, e := range m.MatchConditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Variables) > 0 {
    +		for _, e := range m.Variables {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingAdmissionPolicyStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	n += 1 + sovGenerated(uint64(m.ObservedGeneration))
    +	if m.TypeChecking != nil {
    +		l = m.TypeChecking.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.Conditions) > 0 {
    +		for _, e := range m.Conditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *Validation) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Message)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Reason != nil {
    +		l = len(*m.Reason)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	l = len(m.MessageExpression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *Variable) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *ApplyConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ApplyConfiguration{`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *AuditAnnotation) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&AuditAnnotation{`,
    +		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
    +		`ValueExpression:` + fmt.Sprintf("%v", this.ValueExpression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ExpressionWarning) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ExpressionWarning{`,
    +		`FieldRef:` + fmt.Sprintf("%v", this.FieldRef) + `,`,
    +		`Warning:` + fmt.Sprintf("%v", this.Warning) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *JSONPatch) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&JSONPatch{`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MatchCondition) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&MatchCondition{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MatchResources) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForResourceRules := "[]NamedRuleWithOperations{"
    +	for _, f := range this.ResourceRules {
    +		repeatedStringForResourceRules += strings.Replace(strings.Replace(f.String(), "NamedRuleWithOperations", "NamedRuleWithOperations", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForResourceRules += "}"
    +	repeatedStringForExcludeResourceRules := "[]NamedRuleWithOperations{"
    +	for _, f := range this.ExcludeResourceRules {
    +		repeatedStringForExcludeResourceRules += strings.Replace(strings.Replace(f.String(), "NamedRuleWithOperations", "NamedRuleWithOperations", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForExcludeResourceRules += "}"
    +	s := strings.Join([]string{`&MatchResources{`,
    +		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`ResourceRules:` + repeatedStringForResourceRules + `,`,
    +		`ExcludeResourceRules:` + repeatedStringForExcludeResourceRules + `,`,
    +		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingAdmissionPolicy) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&MutatingAdmissionPolicy{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "MutatingAdmissionPolicySpec", "MutatingAdmissionPolicySpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingAdmissionPolicyBinding) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&MutatingAdmissionPolicyBinding{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "MutatingAdmissionPolicyBindingSpec", "MutatingAdmissionPolicyBindingSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingAdmissionPolicyBindingList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]MutatingAdmissionPolicyBinding{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "MutatingAdmissionPolicyBinding", "MutatingAdmissionPolicyBinding", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&MutatingAdmissionPolicyBindingList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingAdmissionPolicyBindingSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&MutatingAdmissionPolicyBindingSpec{`,
    +		`PolicyName:` + fmt.Sprintf("%v", this.PolicyName) + `,`,
    +		`ParamRef:` + strings.Replace(this.ParamRef.String(), "ParamRef", "ParamRef", 1) + `,`,
    +		`MatchResources:` + strings.Replace(this.MatchResources.String(), "MatchResources", "MatchResources", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingAdmissionPolicyList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]MutatingAdmissionPolicy{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "MutatingAdmissionPolicy", "MutatingAdmissionPolicy", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&MutatingAdmissionPolicyList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingAdmissionPolicySpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForVariables := "[]Variable{"
    +	for _, f := range this.Variables {
    +		repeatedStringForVariables += strings.Replace(strings.Replace(f.String(), "Variable", "Variable", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForVariables += "}"
    +	repeatedStringForMutations := "[]Mutation{"
    +	for _, f := range this.Mutations {
    +		repeatedStringForMutations += strings.Replace(strings.Replace(f.String(), "Mutation", "Mutation", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMutations += "}"
    +	repeatedStringForMatchConditions := "[]MatchCondition{"
    +	for _, f := range this.MatchConditions {
    +		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMatchConditions += "}"
    +	s := strings.Join([]string{`&MutatingAdmissionPolicySpec{`,
    +		`ParamKind:` + strings.Replace(this.ParamKind.String(), "ParamKind", "ParamKind", 1) + `,`,
    +		`MatchConstraints:` + strings.Replace(this.MatchConstraints.String(), "MatchResources", "MatchResources", 1) + `,`,
    +		`Variables:` + repeatedStringForVariables + `,`,
    +		`Mutations:` + repeatedStringForMutations + `,`,
    +		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    +		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    +		`ReinvocationPolicy:` + fmt.Sprintf("%v", this.ReinvocationPolicy) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Mutation) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Mutation{`,
    +		`PatchType:` + fmt.Sprintf("%v", this.PatchType) + `,`,
    +		`ApplyConfiguration:` + strings.Replace(this.ApplyConfiguration.String(), "ApplyConfiguration", "ApplyConfiguration", 1) + `,`,
    +		`JSONPatch:` + strings.Replace(this.JSONPatch.String(), "JSONPatch", "JSONPatch", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *NamedRuleWithOperations) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&NamedRuleWithOperations{`,
    +		`ResourceNames:` + fmt.Sprintf("%v", this.ResourceNames) + `,`,
    +		`RuleWithOperations:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.RuleWithOperations), "RuleWithOperations", "v11.RuleWithOperations", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ParamKind) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ParamKind{`,
    +		`APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`,
    +		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ParamRef) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ParamRef{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    +		`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`ParameterNotFoundAction:` + valueToStringGenerated(this.ParameterNotFoundAction) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *TypeChecking) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForExpressionWarnings := "[]ExpressionWarning{"
    +	for _, f := range this.ExpressionWarnings {
    +		repeatedStringForExpressionWarnings += strings.Replace(strings.Replace(f.String(), "ExpressionWarning", "ExpressionWarning", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForExpressionWarnings += "}"
    +	s := strings.Join([]string{`&TypeChecking{`,
    +		`ExpressionWarnings:` + repeatedStringForExpressionWarnings + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicy) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicy{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ValidatingAdmissionPolicySpec", "ValidatingAdmissionPolicySpec", 1), `&`, ``, 1) + `,`,
    +		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ValidatingAdmissionPolicyStatus", "ValidatingAdmissionPolicyStatus", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyBinding) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyBinding{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ValidatingAdmissionPolicyBindingSpec", "ValidatingAdmissionPolicyBindingSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyBindingList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ValidatingAdmissionPolicyBinding{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingAdmissionPolicyBinding", "ValidatingAdmissionPolicyBinding", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyBindingList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyBindingSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyBindingSpec{`,
    +		`PolicyName:` + fmt.Sprintf("%v", this.PolicyName) + `,`,
    +		`ParamRef:` + strings.Replace(this.ParamRef.String(), "ParamRef", "ParamRef", 1) + `,`,
    +		`MatchResources:` + strings.Replace(this.MatchResources.String(), "MatchResources", "MatchResources", 1) + `,`,
    +		`ValidationActions:` + fmt.Sprintf("%v", this.ValidationActions) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ValidatingAdmissionPolicy{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingAdmissionPolicy", "ValidatingAdmissionPolicy", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicySpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForValidations := "[]Validation{"
    +	for _, f := range this.Validations {
    +		repeatedStringForValidations += strings.Replace(strings.Replace(f.String(), "Validation", "Validation", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForValidations += "}"
    +	repeatedStringForAuditAnnotations := "[]AuditAnnotation{"
    +	for _, f := range this.AuditAnnotations {
    +		repeatedStringForAuditAnnotations += strings.Replace(strings.Replace(f.String(), "AuditAnnotation", "AuditAnnotation", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForAuditAnnotations += "}"
    +	repeatedStringForMatchConditions := "[]MatchCondition{"
    +	for _, f := range this.MatchConditions {
    +		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMatchConditions += "}"
    +	repeatedStringForVariables := "[]Variable{"
    +	for _, f := range this.Variables {
    +		repeatedStringForVariables += strings.Replace(strings.Replace(f.String(), "Variable", "Variable", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForVariables += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicySpec{`,
    +		`ParamKind:` + strings.Replace(this.ParamKind.String(), "ParamKind", "ParamKind", 1) + `,`,
    +		`MatchConstraints:` + strings.Replace(this.MatchConstraints.String(), "MatchResources", "MatchResources", 1) + `,`,
    +		`Validations:` + repeatedStringForValidations + `,`,
    +		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    +		`AuditAnnotations:` + repeatedStringForAuditAnnotations + `,`,
    +		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    +		`Variables:` + repeatedStringForVariables + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForConditions := "[]Condition{"
    +	for _, f := range this.Conditions {
    +		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForConditions += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyStatus{`,
    +		`ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`,
    +		`TypeChecking:` + strings.Replace(this.TypeChecking.String(), "TypeChecking", "TypeChecking", 1) + `,`,
    +		`Conditions:` + repeatedStringForConditions + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Validation) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Validation{`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`Message:` + fmt.Sprintf("%v", this.Message) + `,`,
    +		`Reason:` + valueToStringGenerated(this.Reason) + `,`,
    +		`MessageExpression:` + fmt.Sprintf("%v", this.MessageExpression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Variable) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Variable{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *ApplyConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ApplyConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ApplyConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AuditAnnotation: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AuditAnnotation: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Key = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ValueExpression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ValueExpression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ExpressionWarning: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ExpressionWarning: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.FieldRef = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Warning", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Warning = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *JSONPatch) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: JSONPatch: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: JSONPatch: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MatchCondition) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MatchCondition: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MatchCondition: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MatchResources) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MatchResources: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MatchResources: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NamespaceSelector == nil {
    +				m.NamespaceSelector = &v1.LabelSelector{}
    +			}
    +			if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ObjectSelector == nil {
    +				m.ObjectSelector = &v1.LabelSelector{}
    +			}
    +			if err := m.ObjectSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceRules", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ResourceRules = append(m.ResourceRules, NamedRuleWithOperations{})
    +			if err := m.ResourceRules[len(m.ResourceRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ExcludeResourceRules", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ExcludeResourceRules = append(m.ExcludeResourceRules, NamedRuleWithOperations{})
    +			if err := m.ExcludeResourceRules[len(m.ExcludeResourceRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchPolicy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := MatchPolicyType(dAtA[iNdEx:postIndex])
    +			m.MatchPolicy = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MutatingAdmissionPolicy) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicy: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicy: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MutatingAdmissionPolicyBinding) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBinding: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBinding: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MutatingAdmissionPolicyBindingList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBindingList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBindingList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, MutatingAdmissionPolicyBinding{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBindingSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBindingSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PolicyName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.PolicyName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ParamRef", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ParamRef == nil {
    +				m.ParamRef = &ParamRef{}
    +			}
    +			if err := m.ParamRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchResources", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.MatchResources == nil {
    +				m.MatchResources = &MatchResources{}
    +			}
    +			if err := m.MatchResources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
     	}
    -	repeatedStringForConditions += "}"
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicyStatus{`,
    -		`ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`,
    -		`TypeChecking:` + strings.Replace(this.TypeChecking.String(), "TypeChecking", "TypeChecking", 1) + `,`,
    -		`Conditions:` + repeatedStringForConditions + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *Validation) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
     	}
    -	s := strings.Join([]string{`&Validation{`,
    -		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    -		`Message:` + fmt.Sprintf("%v", this.Message) + `,`,
    -		`Reason:` + valueToStringGenerated(this.Reason) + `,`,
    -		`MessageExpression:` + fmt.Sprintf("%v", this.MessageExpression) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	return nil
     }
    -func (this *Variable) String() string {
    -	if this == nil {
    -		return "nil"
    +func (m *MutatingAdmissionPolicyList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, MutatingAdmissionPolicy{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
     	}
    -	s := strings.Join([]string{`&Variable{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func valueToStringGenerated(v interface{}) string {
    -	rv := reflect.ValueOf(v)
    -	if rv.IsNil() {
    -		return "nil"
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
     	}
    -	pv := reflect.Indirect(rv).Interface()
    -	return fmt.Sprintf("*%v", pv)
    +	return nil
     }
    -func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
    +func (m *MutatingAdmissionPolicySpec) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2102,17 +4461,17 @@ func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: AuditAnnotation: wiretype end group for non-group")
    +			return fmt.Errorf("proto: MutatingAdmissionPolicySpec: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: AuditAnnotation: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: MutatingAdmissionPolicySpec: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ParamKind", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2122,29 +4481,69 @@ func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Key = string(dAtA[iNdEx:postIndex])
    +			if m.ParamKind == nil {
    +				m.ParamKind = &ParamKind{}
    +			}
    +			if err := m.ParamKind.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchConstraints", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.MatchConstraints == nil {
    +				m.MatchConstraints = &MatchResources{}
    +			}
    +			if err := m.MatchConstraints.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
    -		case 2:
    +		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ValueExpression", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Variables", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2154,79 +4553,31 @@ func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.ValueExpression = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    +			m.Variables = append(m.Variables, Variable{})
    +			if err := m.Variables[len(m.Variables)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ExpressionWarning: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ExpressionWarning: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 2:
    +			iNdEx = postIndex
    +		case 4:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Mutations", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2236,27 +4587,29 @@ func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.FieldRef = string(dAtA[iNdEx:postIndex])
    +			m.Mutations = append(m.Mutations, Mutation{})
    +			if err := m.Mutations[len(m.Mutations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
    -		case 3:
    +		case 5:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Warning", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field FailurePolicy", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -2284,63 +4637,14 @@ func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Warning = string(dAtA[iNdEx:postIndex])
    +			s := FailurePolicyType(dAtA[iNdEx:postIndex])
    +			m.FailurePolicy = &s
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *MatchCondition) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: MatchCondition: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: MatchCondition: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    +		case 6:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchConditions", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2350,27 +4654,29 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    +			m.MatchConditions = append(m.MatchConditions, MatchCondition{})
    +			if err := m.MatchConditions[len(m.MatchConditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
    -		case 2:
    +		case 7:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ReinvocationPolicy", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -2398,7 +4704,7 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Expression = string(dAtA[iNdEx:postIndex])
    +			m.ReinvocationPolicy = k8s_io_api_admissionregistration_v1.ReinvocationPolicyType(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -2421,7 +4727,7 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *MatchResources) Unmarshal(dAtA []byte) error {
    +func (m *Mutation) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2444,53 +4750,17 @@ func (m *MatchResources) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: MatchResources: wiretype end group for non-group")
    +			return fmt.Errorf("proto: Mutation: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: MatchResources: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: Mutation: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if m.NamespaceSelector == nil {
    -				m.NamespaceSelector = &v1.LabelSelector{}
    -			}
    -			if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectSelector", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field PatchType", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2500,31 +4770,27 @@ func (m *MatchResources) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.ObjectSelector == nil {
    -				m.ObjectSelector = &v1.LabelSelector{}
    -			}
    -			if err := m.ObjectSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.PatchType = PatchType(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ResourceRules", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ApplyConfiguration", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2551,14 +4817,16 @@ func (m *MatchResources) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.ResourceRules = append(m.ResourceRules, NamedRuleWithOperations{})
    -			if err := m.ResourceRules[len(m.ResourceRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if m.ApplyConfiguration == nil {
    +				m.ApplyConfiguration = &ApplyConfiguration{}
    +			}
    +			if err := m.ApplyConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 4:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ExcludeResourceRules", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field JSONPatch", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2585,43 +4853,12 @@ func (m *MatchResources) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.ExcludeResourceRules = append(m.ExcludeResourceRules, NamedRuleWithOperations{})
    -			if err := m.ExcludeResourceRules[len(m.ExcludeResourceRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 7:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field MatchPolicy", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    +			if m.JSONPatch == nil {
    +				m.JSONPatch = &JSONPatch{}
     			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    +			if err := m.JSONPatch.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
     			}
    -			s := MatchPolicyType(dAtA[iNdEx:postIndex])
    -			m.MatchPolicy = &s
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto
    index db02dd929f00..88344ce87acb 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto
    +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto
    @@ -29,6 +29,51 @@ import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
     // Package-wide variables from generator "generated".
     option go_package = "k8s.io/api/admissionregistration/v1alpha1";
     
    +// ApplyConfiguration defines the desired configuration values of an object.
    +message ApplyConfiguration {
    +  // expression will be evaluated by CEL to create an apply configuration.
    +  // ref: https://github.com/google/cel-spec
    +  //
    +  // Apply configurations are declared in CEL using object initialization. For example, this CEL expression
    +  // returns an apply configuration to set a single field:
    +  //
    +  // 	Object{
    +  // 	  spec: Object.spec{
    +  // 	    serviceAccountName: "example"
    +  // 	  }
    +  // 	}
    +  //
    +  // Apply configurations may not modify atomic structs, maps or arrays due to the risk of accidental deletion of
    +  // values not included in the apply configuration.
    +  //
    +  // CEL expressions have access to the object types needed to create apply configurations:
    +  //
    +  // - 'Object' - CEL type of the resource object.
    +  // - 'Object.' - CEL type of object field (such as 'Object.spec')
    +  // - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')
    +  //
    +  // CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:
    +  //
    +  // - 'object' - The object from the incoming request. The value is null for DELETE requests.
    +  // - 'oldObject' - The existing object. The value is null for CREATE requests.
    +  // - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)).
    +  // - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind.
    +  // - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources.
    +  // - 'variables' - Map of composited variables, from its name to its lazily evaluated value.
    +  //   For example, a variable named 'foo' can be accessed as 'variables.foo'.
    +  // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.
    +  //   See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
    +  // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the
    +  //   request resource.
    +  //
    +  // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
    +  // object. No other metadata properties are accessible.
    +  //
    +  // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
    +  // Required.
    +  optional string expression = 1;
    +}
    +
     // AuditAnnotation describes how to produce an audit annotation for an API request.
     message AuditAnnotation {
       // key specifies the audit annotation key. The audit annotation keys of
    @@ -79,6 +124,75 @@ message ExpressionWarning {
       optional string warning = 3;
     }
     
    +// JSONPatch defines a JSON Patch.
    +message JSONPatch {
    +  // expression will be evaluated by CEL to create a [JSON patch](https://jsonpatch.com/).
    +  // ref: https://github.com/google/cel-spec
    +  //
    +  // expression must return an array of JSONPatch values.
    +  //
    +  // For example, this CEL expression returns a JSON patch to conditionally modify a value:
    +  //
    +  // 	  [
    +  // 	    JSONPatch{op: "test", path: "/spec/example", value: "Red"},
    +  // 	    JSONPatch{op: "replace", path: "/spec/example", value: "Green"}
    +  // 	  ]
    +  //
    +  // To define an object for the patch value, use Object types. For example:
    +  //
    +  // 	  [
    +  // 	    JSONPatch{
    +  // 	      op: "add",
    +  // 	      path: "/spec/selector",
    +  // 	      value: Object.spec.selector{matchLabels: {"environment": "test"}}
    +  // 	    }
    +  // 	  ]
    +  //
    +  // To use strings containing '/' and '~' as JSONPatch path keys, use "jsonpatch.escapeKey". For example:
    +  //
    +  // 	  [
    +  // 	    JSONPatch{
    +  // 	      op: "add",
    +  // 	      path: "/metadata/labels/" + jsonpatch.escapeKey("example.com/environment"),
    +  // 	      value: "test"
    +  // 	    },
    +  // 	  ]
    +  //
    +  // CEL expressions have access to the types needed to create JSON patches and objects:
    +  //
    +  // - 'JSONPatch' - CEL type of JSON Patch operations. JSONPatch has the fields 'op', 'from', 'path' and 'value'.
    +  //   See [JSON patch](https://jsonpatch.com/) for more details. The 'value' field may be set to any of: string,
    +  //   integer, array, map or object.  If set, the 'path' and 'from' fields must be set to a
    +  //   [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901/) string, where the 'jsonpatch.escapeKey()' CEL
    +  //   function may be used to escape path keys containing '/' and '~'.
    +  // - 'Object' - CEL type of the resource object.
    +  // - 'Object.' - CEL type of object field (such as 'Object.spec')
    +  // - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')
    +  //
    +  // CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:
    +  //
    +  // - 'object' - The object from the incoming request. The value is null for DELETE requests.
    +  // - 'oldObject' - The existing object. The value is null for CREATE requests.
    +  // - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)).
    +  // - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind.
    +  // - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources.
    +  // - 'variables' - Map of composited variables, from its name to its lazily evaluated value.
    +  //   For example, a variable named 'foo' can be accessed as 'variables.foo'.
    +  // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.
    +  //   See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
    +  // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the
    +  //   request resource.
    +  //
    +  // CEL expressions have access to [Kubernetes CEL function libraries](https://kubernetes.io/docs/reference/using-api/cel/#cel-options-language-features-and-libraries)
    +  // as well as:
    +  //
    +  // - 'jsonpatch.escapeKey' - Performs JSONPatch key escaping. '~' and  '/' are escaped as '~0' and `~1' respectively).
    +  //
    +  // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
    +  // Required.
    +  optional string expression = 1;
    +}
    +
     message MatchCondition {
       // Name is an identifier for this match condition, used for strategic merging of MatchConditions,
       // as well as providing an identifier for logging purposes. A good name should be descriptive of
    @@ -156,7 +270,7 @@ message MatchResources {
       //
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 1;
     
       // ObjectSelector decides whether to run the validation based on if the
       // object has matching labels. objectSelector is evaluated against both
    @@ -170,7 +284,7 @@ message MatchResources {
       // users may skip the admission webhook by setting the labels.
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 2;
     
       // ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches.
       // The policy cares about an operation if it matches _any_ Rule.
    @@ -202,6 +316,193 @@ message MatchResources {
       optional string matchPolicy = 7;
     }
     
    +// MutatingAdmissionPolicy describes the definition of an admission mutation policy that mutates the object coming into admission chain.
    +message MutatingAdmissionPolicy {
    +  // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Specification of the desired behavior of the MutatingAdmissionPolicy.
    +  optional MutatingAdmissionPolicySpec spec = 2;
    +}
    +
    +// MutatingAdmissionPolicyBinding binds the MutatingAdmissionPolicy with parametrized resources.
    +// MutatingAdmissionPolicyBinding and the optional parameter resource together define how cluster administrators
    +// configure policies for clusters.
    +//
    +// For a given admission request, each binding will cause its policy to be
    +// evaluated N times, where N is 1 for policies/bindings that don't use
    +// params, otherwise N is the number of parameters selected by the binding.
    +// Each evaluation is constrained by a [runtime cost budget](https://kubernetes.io/docs/reference/using-api/cel/#runtime-cost-budget).
    +//
    +// Adding/removing policies, bindings, or params can not affect whether a
    +// given (policy, binding, param) combination is within its own CEL budget.
    +message MutatingAdmissionPolicyBinding {
    +  // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Specification of the desired behavior of the MutatingAdmissionPolicyBinding.
    +  optional MutatingAdmissionPolicyBindingSpec spec = 2;
    +}
    +
    +// MutatingAdmissionPolicyBindingList is a list of MutatingAdmissionPolicyBinding.
    +message MutatingAdmissionPolicyBindingList {
    +  // Standard list metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // List of PolicyBinding.
    +  repeated MutatingAdmissionPolicyBinding items = 2;
    +}
    +
    +// MutatingAdmissionPolicyBindingSpec is the specification of the MutatingAdmissionPolicyBinding.
    +message MutatingAdmissionPolicyBindingSpec {
    +  // policyName references a MutatingAdmissionPolicy name which the MutatingAdmissionPolicyBinding binds to.
    +  // If the referenced resource does not exist, this binding is considered invalid and will be ignored
    +  // Required.
    +  optional string policyName = 1;
    +
    +  // paramRef specifies the parameter resource used to configure the admission control policy.
    +  // It should point to a resource of the type specified in spec.ParamKind of the bound MutatingAdmissionPolicy.
    +  // If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the MutatingAdmissionPolicy applied.
    +  // If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.
    +  // +optional
    +  optional ParamRef paramRef = 2;
    +
    +  // matchResources limits what resources match this binding and may be mutated by it.
    +  // Note that if matchResources matches a resource, the resource must also match a policy's matchConstraints and
    +  // matchConditions before the resource may be mutated.
    +  // When matchResources is unset, it does not constrain resource matching, and only the policy's matchConstraints
    +  // and matchConditions must match for the resource to be mutated.
    +  // Additionally, matchResources.resourceRules are optional and do not constraint matching when unset.
    +  // Note that this is differs from MutatingAdmissionPolicy matchConstraints, where resourceRules are required.
    +  // The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched.
    +  // '*' matches CREATE, UPDATE and CONNECT.
    +  // +optional
    +  optional MatchResources matchResources = 3;
    +}
    +
    +// MutatingAdmissionPolicyList is a list of MutatingAdmissionPolicy.
    +message MutatingAdmissionPolicyList {
    +  // Standard list metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // List of ValidatingAdmissionPolicy.
    +  repeated MutatingAdmissionPolicy items = 2;
    +}
    +
    +// MutatingAdmissionPolicySpec is the specification of the desired behavior of the admission policy.
    +message MutatingAdmissionPolicySpec {
    +  // paramKind specifies the kind of resources used to parameterize this policy.
    +  // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions.
    +  // If paramKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied.
    +  // If paramKind is specified but paramRef is unset in MutatingAdmissionPolicyBinding, the params variable will be null.
    +  // +optional
    +  optional ParamKind paramKind = 1;
    +
    +  // matchConstraints specifies what resources this policy is designed to validate.
    +  // The MutatingAdmissionPolicy cares about a request if it matches _all_ Constraints.
    +  // However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API
    +  // MutatingAdmissionPolicy cannot match MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding.
    +  // The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched.
    +  // '*' matches CREATE, UPDATE and CONNECT.
    +  // Required.
    +  optional MatchResources matchConstraints = 2;
    +
    +  // variables contain definitions of variables that can be used in composition of other expressions.
    +  // Each variable is defined as a named CEL expression.
    +  // The variables defined here will be available under `variables` in other expressions of the policy
    +  // except matchConditions because matchConditions are evaluated before the rest of the policy.
    +  //
    +  // The expression of a variable can refer to other variables defined earlier in the list but not those after.
    +  // Thus, variables must be sorted by the order of first appearance and acyclic.
    +  // +listType=atomic
    +  // +optional
    +  repeated Variable variables = 3;
    +
    +  // mutations contain operations to perform on matching objects.
    +  // mutations may not be empty; a minimum of one mutation is required.
    +  // mutations are evaluated in order, and are reinvoked according to
    +  // the reinvocationPolicy.
    +  // The mutations of a policy are invoked for each binding of this policy
    +  // and reinvocation of mutations occurs on a per binding basis.
    +  //
    +  // +listType=atomic
    +  // +optional
    +  repeated Mutation mutations = 4;
    +
    +  // failurePolicy defines how to handle failures for the admission policy. Failures can
    +  // occur from CEL expression parse errors, type check errors, runtime errors and invalid
    +  // or mis-configured policy definitions or bindings.
    +  //
    +  // A policy is invalid if paramKind refers to a non-existent Kind.
    +  // A binding is invalid if paramRef.name refers to a non-existent resource.
    +  //
    +  // failurePolicy does not define how validations that evaluate to false are handled.
    +  //
    +  // Allowed values are Ignore or Fail. Defaults to Fail.
    +  // +optional
    +  optional string failurePolicy = 5;
    +
    +  // matchConditions is a list of conditions that must be met for a request to be validated.
    +  // Match conditions filter requests that have already been matched by the matchConstraints.
    +  // An empty list of matchConditions matches all requests.
    +  // There are a maximum of 64 match conditions allowed.
    +  //
    +  // If a parameter object is provided, it can be accessed via the `params` handle in the same
    +  // manner as validation expressions.
    +  //
    +  // The exact matching logic is (in order):
    +  //   1. If ANY matchCondition evaluates to FALSE, the policy is skipped.
    +  //   2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.
    +  //   3. If any matchCondition evaluates to an error (but none are FALSE):
    +  //      - If failurePolicy=Fail, reject the request
    +  //      - If failurePolicy=Ignore, the policy is skipped
    +  //
    +  // +patchMergeKey=name
    +  // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
    +  // +optional
    +  repeated MatchCondition matchConditions = 6;
    +
    +  // reinvocationPolicy indicates whether mutations may be called multiple times per MutatingAdmissionPolicyBinding
    +  // as part of a single admission evaluation.
    +  // Allowed values are "Never" and "IfNeeded".
    +  //
    +  // Never: These mutations will not be called more than once per binding in a single admission evaluation.
    +  //
    +  // IfNeeded: These mutations may be invoked more than once per binding for a single admission request and there is no guarantee of
    +  // order with respect to other admission plugins, admission webhooks, bindings of this policy and admission policies.  Mutations are only
    +  // reinvoked when mutations change the object after this mutation is invoked.
    +  // Required.
    +  optional string reinvocationPolicy = 7;
    +}
    +
    +// Mutation specifies the CEL expression which is used to apply the Mutation.
    +message Mutation {
    +  // patchType indicates the patch strategy used.
    +  // Allowed values are "ApplyConfiguration" and "JSONPatch".
    +  // Required.
    +  //
    +  // +unionDiscriminator
    +  optional string patchType = 2;
    +
    +  // applyConfiguration defines the desired configuration values of an object.
    +  // The configuration is applied to the admission object using
    +  // [structured merge diff](https://github.com/kubernetes-sigs/structured-merge-diff).
    +  // A CEL expression is used to create apply configuration.
    +  optional ApplyConfiguration applyConfiguration = 3;
    +
    +  // jsonPatch defines a [JSON patch](https://jsonpatch.com/) operation to perform a mutation to the object.
    +  // A CEL expression is used to create the JSON patch.
    +  optional JSONPatch jsonPatch = 4;
    +}
    +
     // NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.
     // +structType=atomic
     message NamedRuleWithOperations {
    @@ -211,7 +512,7 @@ message NamedRuleWithOperations {
       repeated string resourceNames = 1;
     
       // RuleWithOperations is a tuple of Operations and Resources.
    -  optional k8s.io.api.admissionregistration.v1.RuleWithOperations ruleWithOperations = 2;
    +  optional .k8s.io.api.admissionregistration.v1.RuleWithOperations ruleWithOperations = 2;
     }
     
     // ParamKind is a tuple of Group Kind and Version.
    @@ -267,7 +568,7 @@ message ParamRef {
       // mutually exclusive properties. If one is set, the other must be unset.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
     
       // `parameterNotFoundAction` controls the behavior of the binding when the resource
       // exists, and name or selector is valid, but there are no parameters
    @@ -295,7 +596,7 @@ message TypeChecking {
     message ValidatingAdmissionPolicy {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the ValidatingAdmissionPolicy.
       optional ValidatingAdmissionPolicySpec spec = 2;
    @@ -322,7 +623,7 @@ message ValidatingAdmissionPolicy {
     message ValidatingAdmissionPolicyBinding {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.
       optional ValidatingAdmissionPolicyBindingSpec spec = 2;
    @@ -333,7 +634,7 @@ message ValidatingAdmissionPolicyBindingList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of PolicyBinding.
       repeated ValidatingAdmissionPolicyBinding items = 2;
    @@ -409,7 +710,7 @@ message ValidatingAdmissionPolicyList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of ValidatingAdmissionPolicy.
       repeated ValidatingAdmissionPolicy items = 2;
    @@ -514,7 +815,7 @@ message ValidatingAdmissionPolicyStatus {
       // +optional
       // +listType=map
       // +listMapKey=type
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 3;
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 3;
     }
     
     // Validation specifies the CEL expression which is used to apply the validation.
    diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/register.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/register.go
    index d4c2fbe807f5..eead376cc7d7 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1alpha1/register.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/register.go
    @@ -50,6 +50,10 @@ func addKnownTypes(scheme *runtime.Scheme) error {
     		&ValidatingAdmissionPolicyList{},
     		&ValidatingAdmissionPolicyBinding{},
     		&ValidatingAdmissionPolicyBindingList{},
    +		&MutatingAdmissionPolicy{},
    +		&MutatingAdmissionPolicyList{},
    +		&MutatingAdmissionPolicyBinding{},
    +		&MutatingAdmissionPolicyBindingList{},
     	)
     	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
     	return nil
    diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go
    index bd6b17e15880..ee50fbe2d4cd 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go
    @@ -142,7 +142,7 @@ type ValidatingAdmissionPolicyList struct {
     	// +optional
     	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
     	// List of ValidatingAdmissionPolicy.
    -	Items []ValidatingAdmissionPolicy `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"`
    +	Items []ValidatingAdmissionPolicy `json:"items" protobuf:"bytes,2,rep,name=items"`
     }
     
     // ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.
    @@ -404,7 +404,7 @@ type ValidatingAdmissionPolicyBindingList struct {
     	// +optional
     	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
     	// List of PolicyBinding.
    -	Items []ValidatingAdmissionPolicyBinding `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"`
    +	Items []ValidatingAdmissionPolicyBinding `json:"items" protobuf:"bytes,2,rep,name=items"`
     }
     
     // ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.
    @@ -663,3 +663,346 @@ const (
     	Delete       OperationType = v1.Delete
     	Connect      OperationType = v1.Connect
     )
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// MutatingAdmissionPolicy describes the definition of an admission mutation policy that mutates the object coming into admission chain.
    +type MutatingAdmissionPolicy struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// Specification of the desired behavior of the MutatingAdmissionPolicy.
    +	Spec MutatingAdmissionPolicySpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// MutatingAdmissionPolicyList is a list of MutatingAdmissionPolicy.
    +type MutatingAdmissionPolicyList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// List of ValidatingAdmissionPolicy.
    +	Items []MutatingAdmissionPolicy `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// MutatingAdmissionPolicySpec is the specification of the desired behavior of the admission policy.
    +type MutatingAdmissionPolicySpec struct {
    +	// paramKind specifies the kind of resources used to parameterize this policy.
    +	// If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions.
    +	// If paramKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied.
    +	// If paramKind is specified but paramRef is unset in MutatingAdmissionPolicyBinding, the params variable will be null.
    +	// +optional
    +	ParamKind *ParamKind `json:"paramKind,omitempty" protobuf:"bytes,1,rep,name=paramKind"`
    +
    +	// matchConstraints specifies what resources this policy is designed to validate.
    +	// The MutatingAdmissionPolicy cares about a request if it matches _all_ Constraints.
    +	// However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API
    +	// MutatingAdmissionPolicy cannot match MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding.
    +	// The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched.
    +	// '*' matches CREATE, UPDATE and CONNECT.
    +	// Required.
    +	MatchConstraints *MatchResources `json:"matchConstraints,omitempty" protobuf:"bytes,2,rep,name=matchConstraints"`
    +
    +	// variables contain definitions of variables that can be used in composition of other expressions.
    +	// Each variable is defined as a named CEL expression.
    +	// The variables defined here will be available under `variables` in other expressions of the policy
    +	// except matchConditions because matchConditions are evaluated before the rest of the policy.
    +	//
    +	// The expression of a variable can refer to other variables defined earlier in the list but not those after.
    +	// Thus, variables must be sorted by the order of first appearance and acyclic.
    +	// +listType=atomic
    +	// +optional
    +	Variables []Variable `json:"variables,omitempty" protobuf:"bytes,3,rep,name=variables"`
    +
    +	// mutations contain operations to perform on matching objects.
    +	// mutations may not be empty; a minimum of one mutation is required.
    +	// mutations are evaluated in order, and are reinvoked according to
    +	// the reinvocationPolicy.
    +	// The mutations of a policy are invoked for each binding of this policy
    +	// and reinvocation of mutations occurs on a per binding basis.
    +	//
    +	// +listType=atomic
    +	// +optional
    +	Mutations []Mutation `json:"mutations,omitempty" protobuf:"bytes,4,rep,name=mutations"`
    +
    +	// failurePolicy defines how to handle failures for the admission policy. Failures can
    +	// occur from CEL expression parse errors, type check errors, runtime errors and invalid
    +	// or mis-configured policy definitions or bindings.
    +	//
    +	// A policy is invalid if paramKind refers to a non-existent Kind.
    +	// A binding is invalid if paramRef.name refers to a non-existent resource.
    +	//
    +	// failurePolicy does not define how validations that evaluate to false are handled.
    +	//
    +	// Allowed values are Ignore or Fail. Defaults to Fail.
    +	// +optional
    +	FailurePolicy *FailurePolicyType `json:"failurePolicy,omitempty" protobuf:"bytes,5,opt,name=failurePolicy,casttype=FailurePolicyType"`
    +
    +	// matchConditions is a list of conditions that must be met for a request to be validated.
    +	// Match conditions filter requests that have already been matched by the matchConstraints.
    +	// An empty list of matchConditions matches all requests.
    +	// There are a maximum of 64 match conditions allowed.
    +	//
    +	// If a parameter object is provided, it can be accessed via the `params` handle in the same
    +	// manner as validation expressions.
    +	//
    +	// The exact matching logic is (in order):
    +	//   1. If ANY matchCondition evaluates to FALSE, the policy is skipped.
    +	//   2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.
    +	//   3. If any matchCondition evaluates to an error (but none are FALSE):
    +	//      - If failurePolicy=Fail, reject the request
    +	//      - If failurePolicy=Ignore, the policy is skipped
    +	//
    +	// +patchMergeKey=name
    +	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
    +	// +optional
    +	MatchConditions []MatchCondition `json:"matchConditions,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,6,rep,name=matchConditions"`
    +
    +	// reinvocationPolicy indicates whether mutations may be called multiple times per MutatingAdmissionPolicyBinding
    +	// as part of a single admission evaluation.
    +	// Allowed values are "Never" and "IfNeeded".
    +	//
    +	// Never: These mutations will not be called more than once per binding in a single admission evaluation.
    +	//
    +	// IfNeeded: These mutations may be invoked more than once per binding for a single admission request and there is no guarantee of
    +	// order with respect to other admission plugins, admission webhooks, bindings of this policy and admission policies.  Mutations are only
    +	// reinvoked when mutations change the object after this mutation is invoked.
    +	// Required.
    +	ReinvocationPolicy ReinvocationPolicyType `json:"reinvocationPolicy,omitempty" protobuf:"bytes,7,opt,name=reinvocationPolicy,casttype=ReinvocationPolicyType"`
    +}
    +
    +// Mutation specifies the CEL expression which is used to apply the Mutation.
    +type Mutation struct {
    +	// patchType indicates the patch strategy used.
    +	// Allowed values are "ApplyConfiguration" and "JSONPatch".
    +	// Required.
    +	//
    +	// +unionDiscriminator
    +	PatchType PatchType `json:"patchType" protobuf:"bytes,2,opt,name=patchType,casttype=PatchType"`
    +
    +	// applyConfiguration defines the desired configuration values of an object.
    +	// The configuration is applied to the admission object using
    +	// [structured merge diff](https://github.com/kubernetes-sigs/structured-merge-diff).
    +	// A CEL expression is used to create apply configuration.
    +	ApplyConfiguration *ApplyConfiguration `json:"applyConfiguration,omitempty" protobuf:"bytes,3,opt,name=applyConfiguration"`
    +
    +	// jsonPatch defines a [JSON patch](https://jsonpatch.com/) operation to perform a mutation to the object.
    +	// A CEL expression is used to create the JSON patch.
    +	JSONPatch *JSONPatch `json:"jsonPatch,omitempty" protobuf:"bytes,4,opt,name=jsonPatch"`
    +}
    +
    +// PatchType specifies the type of patch operation for a mutation.
    +// +enum
    +type PatchType string
    +
    +const (
    +	// ApplyConfiguration indicates that the mutation is using apply configuration to mutate the object.
    +	PatchTypeApplyConfiguration PatchType = "ApplyConfiguration"
    +	// JSONPatch indicates that the object is mutated through JSON Patch.
    +	PatchTypeJSONPatch PatchType = "JSONPatch"
    +)
    +
    +// ApplyConfiguration defines the desired configuration values of an object.
    +type ApplyConfiguration struct {
    +	// expression will be evaluated by CEL to create an apply configuration.
    +	// ref: https://github.com/google/cel-spec
    +	//
    +	// Apply configurations are declared in CEL using object initialization. For example, this CEL expression
    +	// returns an apply configuration to set a single field:
    +	//
    +	//	Object{
    +	//	  spec: Object.spec{
    +	//	    serviceAccountName: "example"
    +	//	  }
    +	//	}
    +	//
    +	// Apply configurations may not modify atomic structs, maps or arrays due to the risk of accidental deletion of
    +	// values not included in the apply configuration.
    +	//
    +	// CEL expressions have access to the object types needed to create apply configurations:
    +	//
    +	// - 'Object' - CEL type of the resource object.
    +	// - 'Object.' - CEL type of object field (such as 'Object.spec')
    +	// - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')
    +	//
    +	// CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:
    +	//
    +	// - 'object' - The object from the incoming request. The value is null for DELETE requests.
    +	// - 'oldObject' - The existing object. The value is null for CREATE requests.
    +	// - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)).
    +	// - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind.
    +	// - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources.
    +	// - 'variables' - Map of composited variables, from its name to its lazily evaluated value.
    +	//   For example, a variable named 'foo' can be accessed as 'variables.foo'.
    +	// - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.
    +	//   See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
    +	// - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the
    +	//   request resource.
    +	//
    +	// The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
    +	// object. No other metadata properties are accessible.
    +	//
    +	// Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
    +	// Required.
    +	Expression string `json:"expression,omitempty" protobuf:"bytes,1,opt,name=expression"`
    +}
    +
    +// JSONPatch defines a JSON Patch.
    +type JSONPatch struct {
    +	// expression will be evaluated by CEL to create a [JSON patch](https://jsonpatch.com/).
    +	// ref: https://github.com/google/cel-spec
    +	//
    +	// expression must return an array of JSONPatch values.
    +	//
    +	// For example, this CEL expression returns a JSON patch to conditionally modify a value:
    +	//
    +	//	  [
    +	//	    JSONPatch{op: "test", path: "/spec/example", value: "Red"},
    +	//	    JSONPatch{op: "replace", path: "/spec/example", value: "Green"}
    +	//	  ]
    +	//
    +	// To define an object for the patch value, use Object types. For example:
    +	//
    +	//	  [
    +	//	    JSONPatch{
    +	//	      op: "add",
    +	//	      path: "/spec/selector",
    +	//	      value: Object.spec.selector{matchLabels: {"environment": "test"}}
    +	//	    }
    +	//	  ]
    +	//
    +	// To use strings containing '/' and '~' as JSONPatch path keys, use "jsonpatch.escapeKey". For example:
    +	//
    +	//	  [
    +	//	    JSONPatch{
    +	//	      op: "add",
    +	//	      path: "/metadata/labels/" + jsonpatch.escapeKey("example.com/environment"),
    +	//	      value: "test"
    +	//	    },
    +	//	  ]
    +	//
    +	// CEL expressions have access to the types needed to create JSON patches and objects:
    +	//
    +	// - 'JSONPatch' - CEL type of JSON Patch operations. JSONPatch has the fields 'op', 'from', 'path' and 'value'.
    +	//   See [JSON patch](https://jsonpatch.com/) for more details. The 'value' field may be set to any of: string,
    +	//   integer, array, map or object.  If set, the 'path' and 'from' fields must be set to a
    +	//   [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901/) string, where the 'jsonpatch.escapeKey()' CEL
    +	//   function may be used to escape path keys containing '/' and '~'.
    +	// - 'Object' - CEL type of the resource object.
    +	// - 'Object.' - CEL type of object field (such as 'Object.spec')
    +	// - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')
    +	//
    +	// CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:
    +	//
    +	// - 'object' - The object from the incoming request. The value is null for DELETE requests.
    +	// - 'oldObject' - The existing object. The value is null for CREATE requests.
    +	// - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)).
    +	// - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind.
    +	// - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources.
    +	// - 'variables' - Map of composited variables, from its name to its lazily evaluated value.
    +	//   For example, a variable named 'foo' can be accessed as 'variables.foo'.
    +	// - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.
    +	//   See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
    +	// - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the
    +	//   request resource.
    +	//
    +	// CEL expressions have access to [Kubernetes CEL function libraries](https://kubernetes.io/docs/reference/using-api/cel/#cel-options-language-features-and-libraries)
    +	// as well as:
    +	//
    +	// - 'jsonpatch.escapeKey' - Performs JSONPatch key escaping. '~' and  '/' are escaped as '~0' and `~1' respectively).
    +	//
    +	//
    +	// Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
    +	// Required.
    +	Expression string `json:"expression,omitempty" protobuf:"bytes,1,opt,name=expression"`
    +}
    +
    +// ReinvocationPolicyType specifies what type of policy the admission mutation uses.
    +// +enum
    +type ReinvocationPolicyType = v1.ReinvocationPolicyType
    +
    +const (
    +	// NeverReinvocationPolicy indicates that the mutation must not be called more than once in a
    +	// single admission evaluation.
    +	NeverReinvocationPolicy ReinvocationPolicyType = v1.NeverReinvocationPolicy
    +	// IfNeededReinvocationPolicy indicates that the mutation may be called at least one
    +	// additional time as part of the admission evaluation if the object being admitted is
    +	// modified by other admission plugins after the initial mutation call.
    +	IfNeededReinvocationPolicy ReinvocationPolicyType = v1.IfNeededReinvocationPolicy
    +)
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// MutatingAdmissionPolicyBinding binds the MutatingAdmissionPolicy with parametrized resources.
    +// MutatingAdmissionPolicyBinding and the optional parameter resource together define how cluster administrators
    +// configure policies for clusters.
    +//
    +// For a given admission request, each binding will cause its policy to be
    +// evaluated N times, where N is 1 for policies/bindings that don't use
    +// params, otherwise N is the number of parameters selected by the binding.
    +// Each evaluation is constrained by a [runtime cost budget](https://kubernetes.io/docs/reference/using-api/cel/#runtime-cost-budget).
    +//
    +// Adding/removing policies, bindings, or params can not affect whether a
    +// given (policy, binding, param) combination is within its own CEL budget.
    +type MutatingAdmissionPolicyBinding struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// Specification of the desired behavior of the MutatingAdmissionPolicyBinding.
    +	Spec MutatingAdmissionPolicyBindingSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// MutatingAdmissionPolicyBindingList is a list of MutatingAdmissionPolicyBinding.
    +type MutatingAdmissionPolicyBindingList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// List of PolicyBinding.
    +	Items []MutatingAdmissionPolicyBinding `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// MutatingAdmissionPolicyBindingSpec is the specification of the MutatingAdmissionPolicyBinding.
    +type MutatingAdmissionPolicyBindingSpec struct {
    +	// policyName references a MutatingAdmissionPolicy name which the MutatingAdmissionPolicyBinding binds to.
    +	// If the referenced resource does not exist, this binding is considered invalid and will be ignored
    +	// Required.
    +	PolicyName string `json:"policyName,omitempty" protobuf:"bytes,1,rep,name=policyName"`
    +
    +	// paramRef specifies the parameter resource used to configure the admission control policy.
    +	// It should point to a resource of the type specified in spec.ParamKind of the bound MutatingAdmissionPolicy.
    +	// If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the MutatingAdmissionPolicy applied.
    +	// If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.
    +	// +optional
    +	ParamRef *ParamRef `json:"paramRef,omitempty" protobuf:"bytes,2,rep,name=paramRef"`
    +
    +	// matchResources limits what resources match this binding and may be mutated by it.
    +	// Note that if matchResources matches a resource, the resource must also match a policy's matchConstraints and
    +	// matchConditions before the resource may be mutated.
    +	// When matchResources is unset, it does not constrain resource matching, and only the policy's matchConstraints
    +	// and matchConditions must match for the resource to be mutated.
    +	// Additionally, matchResources.resourceRules are optional and do not constraint matching when unset.
    +	// Note that this is differs from MutatingAdmissionPolicy matchConstraints, where resourceRules are required.
    +	// The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched.
    +	// '*' matches CREATE, UPDATE and CONNECT.
    +	// +optional
    +	MatchResources *MatchResources `json:"matchResources,omitempty" protobuf:"bytes,3,rep,name=matchResources"`
    +}
    diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go
    index dcf46b324f1e..32222a81b898 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go
    @@ -27,6 +27,15 @@ package v1alpha1
     // Those methods can be generated by using hack/update-codegen.sh
     
     // AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    +var map_ApplyConfiguration = map[string]string{
    +	"":           "ApplyConfiguration defines the desired configuration values of an object.",
    +	"expression": "expression will be evaluated by CEL to create an apply configuration. ref: https://github.com/google/cel-spec\n\nApply configurations are declared in CEL using object initialization. For example, this CEL expression returns an apply configuration to set a single field:\n\n\tObject{\n\t  spec: Object.spec{\n\t    serviceAccountName: \"example\"\n\t  }\n\t}\n\nApply configurations may not modify atomic structs, maps or arrays due to the risk of accidental deletion of values not included in the apply configuration.\n\nCEL expressions have access to the object types needed to create apply configurations:\n\n- 'Object' - CEL type of the resource object. - 'Object.' - CEL type of object field (such as 'Object.spec') - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')\n\nCEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:\n\n- 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\n  For example, a variable named 'foo' can be accessed as 'variables.foo'.\n- 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n- 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n  request resource.\n\nThe `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible.\n\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Required.",
    +}
    +
    +func (ApplyConfiguration) SwaggerDoc() map[string]string {
    +	return map_ApplyConfiguration
    +}
    +
     var map_AuditAnnotation = map[string]string{
     	"":                "AuditAnnotation describes how to produce an audit annotation for an API request.",
     	"key":             "key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.\n\nThe key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \"{ValidatingAdmissionPolicy name}/{key}\".\n\nIf an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded.\n\nRequired.",
    @@ -47,6 +56,15 @@ func (ExpressionWarning) SwaggerDoc() map[string]string {
     	return map_ExpressionWarning
     }
     
    +var map_JSONPatch = map[string]string{
    +	"":           "JSONPatch defines a JSON Patch.",
    +	"expression": "expression will be evaluated by CEL to create a [JSON patch](https://jsonpatch.com/). ref: https://github.com/google/cel-spec\n\nexpression must return an array of JSONPatch values.\n\nFor example, this CEL expression returns a JSON patch to conditionally modify a value:\n\n\t  [\n\t    JSONPatch{op: \"test\", path: \"/spec/example\", value: \"Red\"},\n\t    JSONPatch{op: \"replace\", path: \"/spec/example\", value: \"Green\"}\n\t  ]\n\nTo define an object for the patch value, use Object types. For example:\n\n\t  [\n\t    JSONPatch{\n\t      op: \"add\",\n\t      path: \"/spec/selector\",\n\t      value: Object.spec.selector{matchLabels: {\"environment\": \"test\"}}\n\t    }\n\t  ]\n\nTo use strings containing '/' and '~' as JSONPatch path keys, use \"jsonpatch.escapeKey\". For example:\n\n\t  [\n\t    JSONPatch{\n\t      op: \"add\",\n\t      path: \"/metadata/labels/\" + jsonpatch.escapeKey(\"example.com/environment\"),\n\t      value: \"test\"\n\t    },\n\t  ]\n\nCEL expressions have access to the types needed to create JSON patches and objects:\n\n- 'JSONPatch' - CEL type of JSON Patch operations. JSONPatch has the fields 'op', 'from', 'path' and 'value'.\n  See [JSON patch](https://jsonpatch.com/) for more details. The 'value' field may be set to any of: string,\n  integer, array, map or object.  If set, the 'path' and 'from' fields must be set to a\n  [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901/) string, where the 'jsonpatch.escapeKey()' CEL\n  function may be used to escape path keys containing '/' and '~'.\n- 'Object' - CEL type of the resource object. - 'Object.' - CEL type of object field (such as 'Object.spec') - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')\n\nCEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:\n\n- 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\n  For example, a variable named 'foo' can be accessed as 'variables.foo'.\n- 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n- 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n  request resource.\n\nCEL expressions have access to [Kubernetes CEL function libraries](https://kubernetes.io/docs/reference/using-api/cel/#cel-options-language-features-and-libraries) as well as:\n\n- 'jsonpatch.escapeKey' - Performs JSONPatch key escaping. '~' and  '/' are escaped as '~0' and `~1' respectively).\n\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Required.",
    +}
    +
    +func (JSONPatch) SwaggerDoc() map[string]string {
    +	return map_JSONPatch
    +}
    +
     var map_MatchResources = map[string]string{
     	"":                     "MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)",
     	"namespaceSelector":    "NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy.\n\nFor example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\";  you will set the selector as follows: \"namespaceSelector\": {\n  \"matchExpressions\": [\n    {\n      \"key\": \"runlevel\",\n      \"operator\": \"NotIn\",\n      \"values\": [\n        \"0\",\n        \"1\"\n      ]\n    }\n  ]\n}\n\nIf instead you want to only run the policy on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n  \"matchExpressions\": [\n    {\n      \"key\": \"environment\",\n      \"operator\": \"In\",\n      \"values\": [\n        \"prod\",\n        \"staging\"\n      ]\n    }\n  ]\n}\n\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\n\nDefault to the empty LabelSelector, which matches everything.",
    @@ -60,6 +78,83 @@ func (MatchResources) SwaggerDoc() map[string]string {
     	return map_MatchResources
     }
     
    +var map_MutatingAdmissionPolicy = map[string]string{
    +	"":         "MutatingAdmissionPolicy describes the definition of an admission mutation policy that mutates the object coming into admission chain.",
    +	"metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.",
    +	"spec":     "Specification of the desired behavior of the MutatingAdmissionPolicy.",
    +}
    +
    +func (MutatingAdmissionPolicy) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicy
    +}
    +
    +var map_MutatingAdmissionPolicyBinding = map[string]string{
    +	"":         "MutatingAdmissionPolicyBinding binds the MutatingAdmissionPolicy with parametrized resources. MutatingAdmissionPolicyBinding and the optional parameter resource together define how cluster administrators configure policies for clusters.\n\nFor a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. Each evaluation is constrained by a [runtime cost budget](https://kubernetes.io/docs/reference/using-api/cel/#runtime-cost-budget).\n\nAdding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget.",
    +	"metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.",
    +	"spec":     "Specification of the desired behavior of the MutatingAdmissionPolicyBinding.",
    +}
    +
    +func (MutatingAdmissionPolicyBinding) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicyBinding
    +}
    +
    +var map_MutatingAdmissionPolicyBindingList = map[string]string{
    +	"":         "MutatingAdmissionPolicyBindingList is a list of MutatingAdmissionPolicyBinding.",
    +	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
    +	"items":    "List of PolicyBinding.",
    +}
    +
    +func (MutatingAdmissionPolicyBindingList) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicyBindingList
    +}
    +
    +var map_MutatingAdmissionPolicyBindingSpec = map[string]string{
    +	"":               "MutatingAdmissionPolicyBindingSpec is the specification of the MutatingAdmissionPolicyBinding.",
    +	"policyName":     "policyName references a MutatingAdmissionPolicy name which the MutatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required.",
    +	"paramRef":       "paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in spec.ParamKind of the bound MutatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the MutatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.",
    +	"matchResources": "matchResources limits what resources match this binding and may be mutated by it. Note that if matchResources matches a resource, the resource must also match a policy's matchConstraints and matchConditions before the resource may be mutated. When matchResources is unset, it does not constrain resource matching, and only the policy's matchConstraints and matchConditions must match for the resource to be mutated. Additionally, matchResources.resourceRules are optional and do not constraint matching when unset. Note that this is differs from MutatingAdmissionPolicy matchConstraints, where resourceRules are required. The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched. '*' matches CREATE, UPDATE and CONNECT.",
    +}
    +
    +func (MutatingAdmissionPolicyBindingSpec) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicyBindingSpec
    +}
    +
    +var map_MutatingAdmissionPolicyList = map[string]string{
    +	"":         "MutatingAdmissionPolicyList is a list of MutatingAdmissionPolicy.",
    +	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
    +	"items":    "List of ValidatingAdmissionPolicy.",
    +}
    +
    +func (MutatingAdmissionPolicyList) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicyList
    +}
    +
    +var map_MutatingAdmissionPolicySpec = map[string]string{
    +	"":                   "MutatingAdmissionPolicySpec is the specification of the desired behavior of the admission policy.",
    +	"paramKind":          "paramKind specifies the kind of resources used to parameterize this policy. If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If paramKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in MutatingAdmissionPolicyBinding, the params variable will be null.",
    +	"matchConstraints":   "matchConstraints specifies what resources this policy is designed to validate. The MutatingAdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API MutatingAdmissionPolicy cannot match MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding. The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched. '*' matches CREATE, UPDATE and CONNECT. Required.",
    +	"variables":          "variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except matchConditions because matchConditions are evaluated before the rest of the policy.\n\nThe expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, variables must be sorted by the order of first appearance and acyclic.",
    +	"mutations":          "mutations contain operations to perform on matching objects. mutations may not be empty; a minimum of one mutation is required. mutations are evaluated in order, and are reinvoked according to the reinvocationPolicy. The mutations of a policy are invoked for each binding of this policy and reinvocation of mutations occurs on a per binding basis.",
    +	"failurePolicy":      "failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings.\n\nA policy is invalid if paramKind refers to a non-existent Kind. A binding is invalid if paramRef.name refers to a non-existent resource.\n\nfailurePolicy does not define how validations that evaluate to false are handled.\n\nAllowed values are Ignore or Fail. Defaults to Fail.",
    +	"matchConditions":    "matchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the matchConstraints. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nIf a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the policy is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the policy is skipped",
    +	"reinvocationPolicy": "reinvocationPolicy indicates whether mutations may be called multiple times per MutatingAdmissionPolicyBinding as part of a single admission evaluation. Allowed values are \"Never\" and \"IfNeeded\".\n\nNever: These mutations will not be called more than once per binding in a single admission evaluation.\n\nIfNeeded: These mutations may be invoked more than once per binding for a single admission request and there is no guarantee of order with respect to other admission plugins, admission webhooks, bindings of this policy and admission policies.  Mutations are only reinvoked when mutations change the object after this mutation is invoked. Required.",
    +}
    +
    +func (MutatingAdmissionPolicySpec) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicySpec
    +}
    +
    +var map_Mutation = map[string]string{
    +	"":                   "Mutation specifies the CEL expression which is used to apply the Mutation.",
    +	"patchType":          "patchType indicates the patch strategy used. Allowed values are \"ApplyConfiguration\" and \"JSONPatch\". Required.",
    +	"applyConfiguration": "applyConfiguration defines the desired configuration values of an object. The configuration is applied to the admission object using [structured merge diff](https://github.com/kubernetes-sigs/structured-merge-diff). A CEL expression is used to create apply configuration.",
    +	"jsonPatch":          "jsonPatch defines a [JSON patch](https://jsonpatch.com/) operation to perform a mutation to the object. A CEL expression is used to create the JSON patch.",
    +}
    +
    +func (Mutation) SwaggerDoc() map[string]string {
    +	return map_Mutation
    +}
    +
     var map_NamedRuleWithOperations = map[string]string{
     	"":              "NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.",
     	"resourceNames": "ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.",
    diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go
    index 24cd0e4e9b45..97c159c74f0c 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go
    @@ -26,6 +26,22 @@ import (
     	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 *ApplyConfiguration) DeepCopyInto(out *ApplyConfiguration) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplyConfiguration.
    +func (in *ApplyConfiguration) DeepCopy() *ApplyConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ApplyConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *AuditAnnotation) DeepCopyInto(out *AuditAnnotation) {
     	*out = *in
    @@ -58,6 +74,22 @@ func (in *ExpressionWarning) DeepCopy() *ExpressionWarning {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *JSONPatch) DeepCopyInto(out *JSONPatch) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONPatch.
    +func (in *JSONPatch) DeepCopy() *JSONPatch {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(JSONPatch)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *MatchCondition) DeepCopyInto(out *MatchCondition) {
     	*out = *in
    @@ -119,6 +151,226 @@ func (in *MatchResources) DeepCopy() *MatchResources {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *MutatingAdmissionPolicy) DeepCopyInto(out *MutatingAdmissionPolicy) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicy.
    +func (in *MutatingAdmissionPolicy) DeepCopy() *MutatingAdmissionPolicy {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicy)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *MutatingAdmissionPolicy) 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 *MutatingAdmissionPolicyBinding) DeepCopyInto(out *MutatingAdmissionPolicyBinding) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicyBinding.
    +func (in *MutatingAdmissionPolicyBinding) DeepCopy() *MutatingAdmissionPolicyBinding {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicyBinding)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *MutatingAdmissionPolicyBinding) 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 *MutatingAdmissionPolicyBindingList) DeepCopyInto(out *MutatingAdmissionPolicyBindingList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]MutatingAdmissionPolicyBinding, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicyBindingList.
    +func (in *MutatingAdmissionPolicyBindingList) DeepCopy() *MutatingAdmissionPolicyBindingList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicyBindingList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *MutatingAdmissionPolicyBindingList) 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 *MutatingAdmissionPolicyBindingSpec) DeepCopyInto(out *MutatingAdmissionPolicyBindingSpec) {
    +	*out = *in
    +	if in.ParamRef != nil {
    +		in, out := &in.ParamRef, &out.ParamRef
    +		*out = new(ParamRef)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.MatchResources != nil {
    +		in, out := &in.MatchResources, &out.MatchResources
    +		*out = new(MatchResources)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicyBindingSpec.
    +func (in *MutatingAdmissionPolicyBindingSpec) DeepCopy() *MutatingAdmissionPolicyBindingSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicyBindingSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *MutatingAdmissionPolicyList) DeepCopyInto(out *MutatingAdmissionPolicyList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]MutatingAdmissionPolicy, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicyList.
    +func (in *MutatingAdmissionPolicyList) DeepCopy() *MutatingAdmissionPolicyList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicyList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *MutatingAdmissionPolicyList) 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 *MutatingAdmissionPolicySpec) DeepCopyInto(out *MutatingAdmissionPolicySpec) {
    +	*out = *in
    +	if in.ParamKind != nil {
    +		in, out := &in.ParamKind, &out.ParamKind
    +		*out = new(ParamKind)
    +		**out = **in
    +	}
    +	if in.MatchConstraints != nil {
    +		in, out := &in.MatchConstraints, &out.MatchConstraints
    +		*out = new(MatchResources)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.Variables != nil {
    +		in, out := &in.Variables, &out.Variables
    +		*out = make([]Variable, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.Mutations != nil {
    +		in, out := &in.Mutations, &out.Mutations
    +		*out = make([]Mutation, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.FailurePolicy != nil {
    +		in, out := &in.FailurePolicy, &out.FailurePolicy
    +		*out = new(FailurePolicyType)
    +		**out = **in
    +	}
    +	if in.MatchConditions != nil {
    +		in, out := &in.MatchConditions, &out.MatchConditions
    +		*out = make([]MatchCondition, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicySpec.
    +func (in *MutatingAdmissionPolicySpec) DeepCopy() *MutatingAdmissionPolicySpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicySpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *Mutation) DeepCopyInto(out *Mutation) {
    +	*out = *in
    +	if in.ApplyConfiguration != nil {
    +		in, out := &in.ApplyConfiguration, &out.ApplyConfiguration
    +		*out = new(ApplyConfiguration)
    +		**out = **in
    +	}
    +	if in.JSONPatch != nil {
    +		in, out := &in.JSONPatch, &out.JSONPatch
    +		*out = new(JSONPatch)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Mutation.
    +func (in *Mutation) DeepCopy() *Mutation {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(Mutation)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *NamedRuleWithOperations) DeepCopyInto(out *NamedRuleWithOperations) {
     	*out = *in
    diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..91c813d5f774
    --- /dev/null
    +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,166 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *MutatingAdmissionPolicy) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *MutatingAdmissionPolicy) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *MutatingAdmissionPolicy) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *MutatingAdmissionPolicyBinding) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *MutatingAdmissionPolicyBinding) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *MutatingAdmissionPolicyBinding) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *MutatingAdmissionPolicyBindingList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *MutatingAdmissionPolicyBindingList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *MutatingAdmissionPolicyBindingList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *MutatingAdmissionPolicyList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *MutatingAdmissionPolicyList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *MutatingAdmissionPolicyList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ValidatingAdmissionPolicy) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 26
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ValidatingAdmissionPolicy) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 29
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ValidatingAdmissionPolicy) APILifecycleRemoved() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ValidatingAdmissionPolicyBinding) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 26
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ValidatingAdmissionPolicyBinding) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 29
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ValidatingAdmissionPolicyBinding) APILifecycleRemoved() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ValidatingAdmissionPolicyBindingList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 26
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ValidatingAdmissionPolicyBindingList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 29
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ValidatingAdmissionPolicyBindingList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ValidatingAdmissionPolicyList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 26
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ValidatingAdmissionPolicyList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 29
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ValidatingAdmissionPolicyList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 32
    +}
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go
    index 267ddc1cbd66..261ae41bd037 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto
    +// source: k8s.io/api/admissionregistration/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -49,7 +49,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *AuditAnnotation) Reset()      { *m = AuditAnnotation{} }
     func (*AuditAnnotation) ProtoMessage() {}
     func (*AuditAnnotation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{0}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{0}
     }
     func (m *AuditAnnotation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -77,7 +77,7 @@ var xxx_messageInfo_AuditAnnotation proto.InternalMessageInfo
     func (m *ExpressionWarning) Reset()      { *m = ExpressionWarning{} }
     func (*ExpressionWarning) ProtoMessage() {}
     func (*ExpressionWarning) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{1}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{1}
     }
     func (m *ExpressionWarning) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -105,7 +105,7 @@ var xxx_messageInfo_ExpressionWarning proto.InternalMessageInfo
     func (m *MatchCondition) Reset()      { *m = MatchCondition{} }
     func (*MatchCondition) ProtoMessage() {}
     func (*MatchCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{2}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{2}
     }
     func (m *MatchCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -133,7 +133,7 @@ var xxx_messageInfo_MatchCondition proto.InternalMessageInfo
     func (m *MatchResources) Reset()      { *m = MatchResources{} }
     func (*MatchResources) ProtoMessage() {}
     func (*MatchResources) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{3}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{3}
     }
     func (m *MatchResources) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -161,7 +161,7 @@ var xxx_messageInfo_MatchResources proto.InternalMessageInfo
     func (m *MutatingWebhook) Reset()      { *m = MutatingWebhook{} }
     func (*MutatingWebhook) ProtoMessage() {}
     func (*MutatingWebhook) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{4}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{4}
     }
     func (m *MutatingWebhook) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -189,7 +189,7 @@ var xxx_messageInfo_MutatingWebhook proto.InternalMessageInfo
     func (m *MutatingWebhookConfiguration) Reset()      { *m = MutatingWebhookConfiguration{} }
     func (*MutatingWebhookConfiguration) ProtoMessage() {}
     func (*MutatingWebhookConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{5}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{5}
     }
     func (m *MutatingWebhookConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -217,7 +217,7 @@ var xxx_messageInfo_MutatingWebhookConfiguration proto.InternalMessageInfo
     func (m *MutatingWebhookConfigurationList) Reset()      { *m = MutatingWebhookConfigurationList{} }
     func (*MutatingWebhookConfigurationList) ProtoMessage() {}
     func (*MutatingWebhookConfigurationList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{6}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{6}
     }
     func (m *MutatingWebhookConfigurationList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -245,7 +245,7 @@ var xxx_messageInfo_MutatingWebhookConfigurationList proto.InternalMessageInfo
     func (m *NamedRuleWithOperations) Reset()      { *m = NamedRuleWithOperations{} }
     func (*NamedRuleWithOperations) ProtoMessage() {}
     func (*NamedRuleWithOperations) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{7}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{7}
     }
     func (m *NamedRuleWithOperations) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -273,7 +273,7 @@ var xxx_messageInfo_NamedRuleWithOperations proto.InternalMessageInfo
     func (m *ParamKind) Reset()      { *m = ParamKind{} }
     func (*ParamKind) ProtoMessage() {}
     func (*ParamKind) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{8}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{8}
     }
     func (m *ParamKind) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -301,7 +301,7 @@ var xxx_messageInfo_ParamKind proto.InternalMessageInfo
     func (m *ParamRef) Reset()      { *m = ParamRef{} }
     func (*ParamRef) ProtoMessage() {}
     func (*ParamRef) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{9}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{9}
     }
     func (m *ParamRef) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -329,7 +329,7 @@ var xxx_messageInfo_ParamRef proto.InternalMessageInfo
     func (m *ServiceReference) Reset()      { *m = ServiceReference{} }
     func (*ServiceReference) ProtoMessage() {}
     func (*ServiceReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{10}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{10}
     }
     func (m *ServiceReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -357,7 +357,7 @@ var xxx_messageInfo_ServiceReference proto.InternalMessageInfo
     func (m *TypeChecking) Reset()      { *m = TypeChecking{} }
     func (*TypeChecking) ProtoMessage() {}
     func (*TypeChecking) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{11}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{11}
     }
     func (m *TypeChecking) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -385,7 +385,7 @@ var xxx_messageInfo_TypeChecking proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicy) Reset()      { *m = ValidatingAdmissionPolicy{} }
     func (*ValidatingAdmissionPolicy) ProtoMessage() {}
     func (*ValidatingAdmissionPolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{12}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{12}
     }
     func (m *ValidatingAdmissionPolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -413,7 +413,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicy proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicyBinding) Reset()      { *m = ValidatingAdmissionPolicyBinding{} }
     func (*ValidatingAdmissionPolicyBinding) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyBinding) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{13}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{13}
     }
     func (m *ValidatingAdmissionPolicyBinding) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -441,7 +441,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyBinding proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicyBindingList) Reset()      { *m = ValidatingAdmissionPolicyBindingList{} }
     func (*ValidatingAdmissionPolicyBindingList) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyBindingList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{14}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{14}
     }
     func (m *ValidatingAdmissionPolicyBindingList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -469,7 +469,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyBindingList proto.InternalMessageIn
     func (m *ValidatingAdmissionPolicyBindingSpec) Reset()      { *m = ValidatingAdmissionPolicyBindingSpec{} }
     func (*ValidatingAdmissionPolicyBindingSpec) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyBindingSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{15}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{15}
     }
     func (m *ValidatingAdmissionPolicyBindingSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -497,7 +497,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyBindingSpec proto.InternalMessageIn
     func (m *ValidatingAdmissionPolicyList) Reset()      { *m = ValidatingAdmissionPolicyList{} }
     func (*ValidatingAdmissionPolicyList) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{16}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{16}
     }
     func (m *ValidatingAdmissionPolicyList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -525,7 +525,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyList proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicySpec) Reset()      { *m = ValidatingAdmissionPolicySpec{} }
     func (*ValidatingAdmissionPolicySpec) ProtoMessage() {}
     func (*ValidatingAdmissionPolicySpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{17}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{17}
     }
     func (m *ValidatingAdmissionPolicySpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -553,7 +553,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicySpec proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicyStatus) Reset()      { *m = ValidatingAdmissionPolicyStatus{} }
     func (*ValidatingAdmissionPolicyStatus) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{18}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{18}
     }
     func (m *ValidatingAdmissionPolicyStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -581,7 +581,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyStatus proto.InternalMessageInfo
     func (m *ValidatingWebhook) Reset()      { *m = ValidatingWebhook{} }
     func (*ValidatingWebhook) ProtoMessage() {}
     func (*ValidatingWebhook) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{19}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{19}
     }
     func (m *ValidatingWebhook) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -609,7 +609,7 @@ var xxx_messageInfo_ValidatingWebhook proto.InternalMessageInfo
     func (m *ValidatingWebhookConfiguration) Reset()      { *m = ValidatingWebhookConfiguration{} }
     func (*ValidatingWebhookConfiguration) ProtoMessage() {}
     func (*ValidatingWebhookConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{20}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{20}
     }
     func (m *ValidatingWebhookConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -637,7 +637,7 @@ var xxx_messageInfo_ValidatingWebhookConfiguration proto.InternalMessageInfo
     func (m *ValidatingWebhookConfigurationList) Reset()      { *m = ValidatingWebhookConfigurationList{} }
     func (*ValidatingWebhookConfigurationList) ProtoMessage() {}
     func (*ValidatingWebhookConfigurationList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{21}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{21}
     }
     func (m *ValidatingWebhookConfigurationList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -665,7 +665,7 @@ var xxx_messageInfo_ValidatingWebhookConfigurationList proto.InternalMessageInfo
     func (m *Validation) Reset()      { *m = Validation{} }
     func (*Validation) ProtoMessage() {}
     func (*Validation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{22}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{22}
     }
     func (m *Validation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -693,7 +693,7 @@ var xxx_messageInfo_Validation proto.InternalMessageInfo
     func (m *Variable) Reset()      { *m = Variable{} }
     func (*Variable) ProtoMessage() {}
     func (*Variable) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{23}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{23}
     }
     func (m *Variable) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -721,7 +721,7 @@ var xxx_messageInfo_Variable proto.InternalMessageInfo
     func (m *WebhookClientConfig) Reset()      { *m = WebhookClientConfig{} }
     func (*WebhookClientConfig) ProtoMessage() {}
     func (*WebhookClientConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_abeea74cbc46f55a, []int{24}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{24}
     }
     func (m *WebhookClientConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -775,135 +775,134 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto", fileDescriptor_abeea74cbc46f55a)
    -}
    -
    -var fileDescriptor_abeea74cbc46f55a = []byte{
    -	// 1973 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x1a, 0x4d, 0x6f, 0x23, 0x49,
    -	0x35, 0x1d, 0xe7, 0xc3, 0x7e, 0xce, 0x97, 0x6b, 0x67, 0x89, 0x77, 0x76, 0xd6, 0x8e, 0x5a, 0x2b,
    -	0x94, 0x91, 0xc0, 0xde, 0xc9, 0xae, 0x76, 0x97, 0x59, 0x21, 0x14, 0x67, 0x67, 0x86, 0x99, 0x9d,
    -	0x64, 0x42, 0x65, 0x37, 0x91, 0x60, 0x57, 0x9a, 0x72, 0x77, 0xd9, 0x6e, 0x6c, 0x77, 0x37, 0x5d,
    -	0x6d, 0xcf, 0x04, 0x24, 0x40, 0xe2, 0xb0, 0x57, 0x24, 0x2e, 0x48, 0x9c, 0xf8, 0x0b, 0xdc, 0x91,
    -	0xe0, 0x36, 0xc7, 0xbd, 0x31, 0x12, 0xc2, 0x22, 0xe6, 0xc0, 0x89, 0x03, 0x07, 0x38, 0xe4, 0x02,
    -	0xaa, 0xea, 0xea, 0x4f, 0xb7, 0x27, 0x9d, 0x90, 0x09, 0x97, 0xb9, 0xa5, 0xdf, 0x67, 0xbd, 0x57,
    -	0xef, 0xab, 0x9e, 0x03, 0xdf, 0xeb, 0x7e, 0xc8, 0x6a, 0x86, 0x55, 0xef, 0x0e, 0x9a, 0xd4, 0x31,
    -	0xa9, 0x4b, 0x59, 0x7d, 0x48, 0x4d, 0xdd, 0x72, 0xea, 0x12, 0x41, 0x6c, 0xa3, 0x4e, 0xf4, 0xbe,
    -	0xc1, 0x98, 0x61, 0x99, 0x0e, 0x6d, 0x1b, 0xcc, 0x75, 0x88, 0x6b, 0x58, 0x66, 0x7d, 0x78, 0xab,
    -	0x49, 0x5d, 0x72, 0xab, 0xde, 0xa6, 0x26, 0x75, 0x88, 0x4b, 0xf5, 0x9a, 0xed, 0x58, 0xae, 0x85,
    -	0x36, 0x3d, 0xce, 0x1a, 0xb1, 0x8d, 0x5a, 0x2a, 0x67, 0x4d, 0x72, 0x5e, 0xff, 0x66, 0xdb, 0x70,
    -	0x3b, 0x83, 0x66, 0x4d, 0xb3, 0xfa, 0xf5, 0xb6, 0xd5, 0xb6, 0xea, 0x42, 0x40, 0x73, 0xd0, 0x12,
    -	0x5f, 0xe2, 0x43, 0xfc, 0xe5, 0x09, 0xbe, 0xfe, 0x6e, 0x86, 0x23, 0x25, 0x4f, 0x73, 0xfd, 0xbd,
    -	0x90, 0xa9, 0x4f, 0xb4, 0x8e, 0x61, 0x52, 0xe7, 0xb8, 0x6e, 0x77, 0xdb, 0x1c, 0xc0, 0xea, 0x7d,
    -	0xea, 0x92, 0x34, 0xae, 0xfa, 0x34, 0x2e, 0x67, 0x60, 0xba, 0x46, 0x9f, 0x4e, 0x30, 0xbc, 0x7f,
    -	0x16, 0x03, 0xd3, 0x3a, 0xb4, 0x4f, 0x92, 0x7c, 0x2a, 0x83, 0xd5, 0xed, 0x81, 0x6e, 0xb8, 0xdb,
    -	0xa6, 0x69, 0xb9, 0xc2, 0x08, 0xf4, 0x16, 0xe4, 0xba, 0xf4, 0xb8, 0xac, 0x6c, 0x28, 0x9b, 0x85,
    -	0x46, 0xf1, 0xd9, 0xa8, 0x3a, 0x33, 0x1e, 0x55, 0x73, 0x9f, 0xd0, 0x63, 0xcc, 0xe1, 0x68, 0x1b,
    -	0x56, 0x87, 0xa4, 0x37, 0xa0, 0x77, 0x9e, 0xda, 0x0e, 0x15, 0x2e, 0x28, 0xcf, 0x0a, 0xd2, 0x75,
    -	0x49, 0xba, 0x7a, 0x18, 0x47, 0xe3, 0x24, 0xbd, 0xda, 0x83, 0x52, 0xf8, 0x75, 0x44, 0x1c, 0xd3,
    -	0x30, 0xdb, 0xe8, 0x1b, 0x90, 0x6f, 0x19, 0xb4, 0xa7, 0x63, 0xda, 0x92, 0x02, 0xd7, 0xa4, 0xc0,
    -	0xfc, 0x5d, 0x09, 0xc7, 0x01, 0x05, 0xba, 0x09, 0x8b, 0x4f, 0x3c, 0xc6, 0x72, 0x4e, 0x10, 0xaf,
    -	0x4a, 0xe2, 0x45, 0x29, 0x0f, 0xfb, 0x78, 0xb5, 0x05, 0x2b, 0xbb, 0xc4, 0xd5, 0x3a, 0x3b, 0x96,
    -	0xa9, 0x1b, 0xc2, 0xc2, 0x0d, 0x98, 0x33, 0x49, 0x9f, 0x4a, 0x13, 0x97, 0x24, 0xe7, 0xdc, 0x1e,
    -	0xe9, 0x53, 0x2c, 0x30, 0x68, 0x0b, 0x80, 0x26, 0xed, 0x43, 0x92, 0x0e, 0x22, 0xa6, 0x45, 0xa8,
    -	0xd4, 0x3f, 0xcd, 0x49, 0x45, 0x98, 0x32, 0x6b, 0xe0, 0x68, 0x94, 0xa1, 0xa7, 0x50, 0xe2, 0xe2,
    -	0x98, 0x4d, 0x34, 0x7a, 0x40, 0x7b, 0x54, 0x73, 0x2d, 0x47, 0x68, 0x2d, 0x6e, 0xbd, 0x5b, 0x0b,
    -	0xc3, 0x34, 0xb8, 0xb1, 0x9a, 0xdd, 0x6d, 0x73, 0x00, 0xab, 0xf1, 0xc0, 0xa8, 0x0d, 0x6f, 0xd5,
    -	0x1e, 0x92, 0x26, 0xed, 0xf9, 0xac, 0x8d, 0xd7, 0xc7, 0xa3, 0x6a, 0x69, 0x2f, 0x29, 0x11, 0x4f,
    -	0x2a, 0x41, 0x16, 0xac, 0x58, 0xcd, 0x1f, 0x52, 0xcd, 0x0d, 0xd4, 0xce, 0x5e, 0x5c, 0x2d, 0x1a,
    -	0x8f, 0xaa, 0x2b, 0x8f, 0x62, 0xe2, 0x70, 0x42, 0x3c, 0xfa, 0x29, 0x2c, 0x3b, 0xd2, 0x6e, 0x3c,
    -	0xe8, 0x51, 0x56, 0xce, 0x6d, 0xe4, 0x36, 0x8b, 0x5b, 0xdb, 0xb5, 0xac, 0xd9, 0x58, 0xe3, 0x76,
    -	0xe9, 0x9c, 0xf7, 0xc8, 0x70, 0x3b, 0x8f, 0x6c, 0xea, 0xa1, 0x59, 0xe3, 0x75, 0xe9, 0xf7, 0x65,
    -	0x1c, 0x95, 0x8f, 0xe3, 0xea, 0xd0, 0xaf, 0x14, 0xb8, 0x46, 0x9f, 0x6a, 0xbd, 0x81, 0x4e, 0x63,
    -	0x74, 0xe5, 0xb9, 0xcb, 0x3a, 0xc7, 0x0d, 0x79, 0x8e, 0x6b, 0x77, 0x52, 0xd4, 0xe0, 0x54, 0xe5,
    -	0xe8, 0x63, 0x28, 0xf6, 0x79, 0x48, 0xec, 0x5b, 0x3d, 0x43, 0x3b, 0x2e, 0x2f, 0x8a, 0x40, 0x52,
    -	0xc7, 0xa3, 0x6a, 0x71, 0x37, 0x04, 0x9f, 0x8e, 0xaa, 0xab, 0x91, 0xcf, 0x4f, 0x8f, 0x6d, 0x8a,
    -	0xa3, 0x6c, 0xea, 0x1f, 0xf3, 0xb0, 0xba, 0x3b, 0xe0, 0xe9, 0x69, 0xb6, 0x8f, 0x68, 0xb3, 0x63,
    -	0x59, 0xdd, 0x0c, 0x31, 0xfc, 0x04, 0x96, 0xb4, 0x9e, 0x41, 0x4d, 0x77, 0xc7, 0x32, 0x5b, 0x46,
    -	0x5b, 0x06, 0xc0, 0xb7, 0xb3, 0x3b, 0x42, 0xaa, 0xda, 0x89, 0x08, 0x69, 0x5c, 0x93, 0x8a, 0x96,
    -	0xa2, 0x50, 0x1c, 0x53, 0x84, 0x3e, 0x87, 0x79, 0x27, 0x12, 0x02, 0x1f, 0x64, 0xd1, 0x58, 0x4b,
    -	0x71, 0xf8, 0xb2, 0xd4, 0x35, 0xef, 0x79, 0xd8, 0x13, 0x8a, 0x1e, 0xc2, 0x72, 0x8b, 0x18, 0xbd,
    -	0x81, 0x43, 0xa5, 0x53, 0xe7, 0x84, 0x07, 0xbe, 0xce, 0x23, 0xe4, 0x6e, 0x14, 0x71, 0x3a, 0xaa,
    -	0x96, 0x62, 0x00, 0xe1, 0xd8, 0x38, 0x73, 0xf2, 0x82, 0x0a, 0x17, 0xba, 0xa0, 0xf4, 0x3c, 0x9f,
    -	0xff, 0xff, 0xe4, 0x79, 0xf1, 0xe5, 0xe6, 0xf9, 0xc7, 0x50, 0x64, 0x86, 0x4e, 0xef, 0xb4, 0x5a,
    -	0x54, 0x73, 0x59, 0x79, 0x21, 0x74, 0xd8, 0x41, 0x08, 0xe6, 0x0e, 0x0b, 0x3f, 0x77, 0x7a, 0x84,
    -	0x31, 0x1c, 0x65, 0x43, 0xb7, 0x61, 0x85, 0x77, 0x25, 0x6b, 0xe0, 0x1e, 0x50, 0xcd, 0x32, 0x75,
    -	0x26, 0x52, 0x63, 0xde, 0x3b, 0xc1, 0xa7, 0x31, 0x0c, 0x4e, 0x50, 0xa2, 0xcf, 0x60, 0x3d, 0x88,
    -	0x22, 0x4c, 0x87, 0x06, 0x7d, 0x72, 0x48, 0x1d, 0xfe, 0xc1, 0xca, 0xf9, 0x8d, 0xdc, 0x66, 0xa1,
    -	0xf1, 0xe6, 0x78, 0x54, 0x5d, 0xdf, 0x4e, 0x27, 0xc1, 0xd3, 0x78, 0xd1, 0x63, 0x40, 0x0e, 0x35,
    -	0xcc, 0xa1, 0xa5, 0x89, 0xf0, 0x93, 0x01, 0x01, 0xc2, 0xbe, 0x77, 0xc6, 0xa3, 0x2a, 0xc2, 0x13,
    -	0xd8, 0xd3, 0x51, 0xf5, 0x6b, 0x93, 0x50, 0x11, 0x1e, 0x29, 0xb2, 0xd0, 0x4f, 0x60, 0xb5, 0x1f,
    -	0x6b, 0x44, 0xac, 0xbc, 0x24, 0x32, 0xe4, 0xc3, 0xec, 0x39, 0x19, 0xef, 0x64, 0x61, 0xcf, 0x8d,
    -	0xc3, 0x19, 0x4e, 0x6a, 0x52, 0xff, 0xa2, 0xc0, 0x8d, 0x44, 0x0d, 0xf1, 0xd2, 0x75, 0xe0, 0x69,
    -	0x40, 0x8f, 0x21, 0xcf, 0xa3, 0x42, 0x27, 0x2e, 0x91, 0x2d, 0xea, 0x9d, 0x6c, 0x31, 0xe4, 0x05,
    -	0xcc, 0x2e, 0x75, 0x49, 0xd8, 0x22, 0x43, 0x18, 0x0e, 0xa4, 0xa2, 0x1f, 0x40, 0x5e, 0x6a, 0x66,
    -	0xe5, 0x59, 0x61, 0xf8, 0xb7, 0xce, 0x61, 0x78, 0xfc, 0xec, 0x8d, 0x39, 0xae, 0x0a, 0x07, 0x02,
    -	0xd5, 0x7f, 0x28, 0xb0, 0xf1, 0x22, 0xfb, 0x1e, 0x1a, 0xcc, 0x45, 0x9f, 0x4f, 0xd8, 0x58, 0xcb,
    -	0x98, 0x27, 0x06, 0xf3, 0x2c, 0x0c, 0x66, 0x12, 0x1f, 0x12, 0xb1, 0xaf, 0x0b, 0xf3, 0x86, 0x4b,
    -	0xfb, 0xbe, 0x71, 0x77, 0x2f, 0x6c, 0x5c, 0xec, 0xe0, 0x61, 0x19, 0xbc, 0xcf, 0x85, 0x63, 0x4f,
    -	0x87, 0xfa, 0x5c, 0x81, 0xf5, 0x29, 0x9d, 0x0a, 0x7d, 0x10, 0xf6, 0x62, 0x51, 0x44, 0xca, 0x8a,
    -	0xc8, 0x8b, 0x52, 0xb4, 0x89, 0x0a, 0x04, 0x8e, 0xd3, 0xa1, 0x5f, 0x28, 0x80, 0x9c, 0x09, 0x79,
    -	0xb2, 0x73, 0x5c, 0xb8, 0x8e, 0x5f, 0x97, 0x06, 0xa0, 0x49, 0x1c, 0x4e, 0x51, 0xa7, 0x12, 0x28,
    -	0xec, 0x13, 0x87, 0xf4, 0x3f, 0x31, 0x4c, 0x9d, 0x4f, 0x62, 0xc4, 0x36, 0x64, 0x96, 0xca, 0x6e,
    -	0x17, 0x84, 0xd9, 0xf6, 0xfe, 0x7d, 0x89, 0xc1, 0x11, 0x2a, 0xde, 0x1b, 0xbb, 0x86, 0xa9, 0xcb,
    -	0xb9, 0x2d, 0xe8, 0x8d, 0x5c, 0x1e, 0x16, 0x18, 0xf5, 0x77, 0xb3, 0x90, 0x17, 0x3a, 0xf8, 0x2c,
    -	0x79, 0x76, 0x2b, 0xad, 0x43, 0x21, 0x28, 0xbd, 0x52, 0x6a, 0x49, 0x92, 0x15, 0x82, 0x32, 0x8d,
    -	0x43, 0x1a, 0xf4, 0x05, 0xe4, 0x99, 0x5f, 0x90, 0x73, 0x17, 0x2f, 0xc8, 0x4b, 0x3c, 0xd2, 0x82,
    -	0x52, 0x1c, 0x88, 0x44, 0x2e, 0xac, 0xdb, 0xfc, 0xf4, 0xd4, 0xa5, 0xce, 0x9e, 0xe5, 0xde, 0xb5,
    -	0x06, 0xa6, 0xbe, 0xad, 0x71, 0xef, 0xc9, 0x6e, 0x78, 0x9b, 0x97, 0xc0, 0xfd, 0x74, 0x92, 0xd3,
    -	0x51, 0xf5, 0xcd, 0x29, 0x28, 0x51, 0xba, 0xa6, 0x89, 0x56, 0x7f, 0xab, 0xc0, 0xda, 0x01, 0x75,
    -	0x86, 0x86, 0x46, 0x31, 0x6d, 0x51, 0x87, 0x9a, 0x5a, 0xc2, 0x35, 0x4a, 0x06, 0xd7, 0xf8, 0xde,
    -	0x9e, 0x9d, 0xea, 0xed, 0x1b, 0x30, 0x67, 0x13, 0xb7, 0x23, 0x07, 0xfb, 0x3c, 0xc7, 0xee, 0x13,
    -	0xb7, 0x83, 0x05, 0x54, 0x60, 0x2d, 0xc7, 0x15, 0x86, 0xce, 0x4b, 0xac, 0xe5, 0xb8, 0x58, 0x40,
    -	0xd5, 0x5f, 0x2b, 0xb0, 0xc4, 0xad, 0xd8, 0xe9, 0x50, 0xad, 0xcb, 0x9f, 0x15, 0x5f, 0x2a, 0x80,
    -	0x68, 0xf2, 0xb1, 0xe1, 0x65, 0x44, 0x71, 0xeb, 0xa3, 0xec, 0x29, 0x3a, 0xf1, 0x60, 0x09, 0xc3,
    -	0x7a, 0x02, 0xc5, 0x70, 0x8a, 0x4a, 0xf5, 0xcf, 0xb3, 0xf0, 0xc6, 0x21, 0xe9, 0x19, 0xba, 0x48,
    -	0xf5, 0xa0, 0x3f, 0xc9, 0xe6, 0xf0, 0xf2, 0xcb, 0xaf, 0x01, 0x73, 0xcc, 0xa6, 0x9a, 0xcc, 0xe6,
    -	0x7b, 0xd9, 0x4d, 0x9f, 0x7a, 0xe8, 0x03, 0x9b, 0x6a, 0xe1, 0x0d, 0xf2, 0x2f, 0x2c, 0x54, 0xa0,
    -	0x1f, 0xc1, 0x02, 0x73, 0x89, 0x3b, 0x60, 0x32, 0xf8, 0xef, 0x5f, 0x86, 0x32, 0x21, 0xb0, 0xb1,
    -	0x22, 0xd5, 0x2d, 0x78, 0xdf, 0x58, 0x2a, 0x52, 0xff, 0xad, 0xc0, 0xc6, 0x54, 0xde, 0x86, 0x61,
    -	0xea, 0x3c, 0x18, 0x5e, 0xbe, 0x93, 0xed, 0x98, 0x93, 0xf7, 0x2e, 0xc1, 0x6e, 0x79, 0xf6, 0x69,
    -	0xbe, 0x56, 0xff, 0xa5, 0xc0, 0xdb, 0x67, 0x31, 0x5f, 0x41, 0xf3, 0xb3, 0xe2, 0xcd, 0xef, 0xc1,
    -	0xe5, 0x59, 0x3e, 0xa5, 0x01, 0x7e, 0x99, 0x3b, 0xdb, 0x6e, 0xee, 0x26, 0xde, 0x41, 0x6c, 0x01,
    -	0xdc, 0x0b, 0x8b, 0x7c, 0x70, 0x89, 0xfb, 0x01, 0x06, 0x47, 0xa8, 0xb8, 0xaf, 0x6c, 0xd9, 0x1e,
    -	0xe4, 0x55, 0x6e, 0x65, 0x37, 0xc8, 0x6f, 0x2c, 0x5e, 0xf9, 0xf6, 0xbf, 0x70, 0x20, 0x11, 0xb9,
    -	0xb0, 0xd2, 0x8f, 0x2d, 0x0a, 0x64, 0x9a, 0x9c, 0x77, 0x0e, 0x0c, 0xf8, 0xbd, 0xb9, 0x39, 0x0e,
    -	0xc3, 0x09, 0x1d, 0xe8, 0x08, 0x4a, 0x43, 0xe9, 0x2f, 0xcb, 0xf4, 0x4a, 0xba, 0xf7, 0x3a, 0x2e,
    -	0x34, 0x6e, 0xf2, 0xf7, 0xc6, 0x61, 0x12, 0x79, 0x3a, 0xaa, 0xae, 0x25, 0x81, 0x78, 0x52, 0x86,
    -	0xfa, 0x77, 0x05, 0xde, 0x9a, 0x7a, 0x13, 0x57, 0x10, 0x7a, 0x9d, 0x78, 0xe8, 0xed, 0x5c, 0x46,
    -	0xe8, 0xa5, 0xc7, 0xdc, 0x6f, 0x16, 0x5e, 0x60, 0xa9, 0x08, 0xb6, 0xc7, 0x50, 0xb0, 0xfd, 0xd9,
    -	0x25, 0x65, 0xd3, 0x93, 0x25, 0x72, 0x38, 0x6b, 0x63, 0x99, 0xf7, 0xcf, 0xe0, 0x13, 0x87, 0x42,
    -	0xd1, 0x8f, 0x61, 0xcd, 0x9f, 0xed, 0x39, 0xbf, 0x61, 0xba, 0xfe, 0x80, 0x76, 0xf1, 0xf0, 0xb9,
    -	0x36, 0x1e, 0x55, 0xd7, 0x76, 0x13, 0x52, 0xf1, 0x84, 0x1e, 0xd4, 0x85, 0x62, 0x78, 0xfd, 0xfe,
    -	0xfb, 0xfe, 0xbd, 0xf3, 0xfb, 0xdb, 0x32, 0x1b, 0xaf, 0x49, 0x07, 0x17, 0x43, 0x18, 0xc3, 0x51,
    -	0xe9, 0x97, 0xfc, 0xd0, 0xff, 0x19, 0xac, 0x91, 0xf8, 0xa2, 0x93, 0x95, 0xe7, 0xcf, 0xfb, 0x08,
    -	0x49, 0xac, 0x4a, 0x1b, 0x65, 0x69, 0xc4, 0x5a, 0x02, 0xc1, 0xf0, 0x84, 0xb2, 0xb4, 0xd7, 0xdf,
    -	0xc2, 0x55, 0xbd, 0xfe, 0x90, 0x06, 0x85, 0x21, 0x71, 0x0c, 0xd2, 0xec, 0x51, 0xfe, 0xd4, 0xce,
    -	0x9d, 0xaf, 0xa0, 0x1d, 0x4a, 0xd6, 0x70, 0xb2, 0xf3, 0x21, 0x0c, 0x87, 0x72, 0xd5, 0x3f, 0xcc,
    -	0x42, 0xf5, 0x8c, 0xf6, 0x8d, 0x1e, 0x00, 0xb2, 0x9a, 0x8c, 0x3a, 0x43, 0xaa, 0xdf, 0xf3, 0x56,
    -	0xd1, 0xfe, 0x58, 0x9f, 0x0b, 0x07, 0xaa, 0x47, 0x13, 0x14, 0x38, 0x85, 0x0b, 0xf5, 0x60, 0xc9,
    -	0x8d, 0x8c, 0x7a, 0x32, 0x0b, 0xde, 0xcf, 0x6e, 0x57, 0x74, 0x50, 0x6c, 0xac, 0x8d, 0x47, 0xd5,
    -	0xd8, 0xe8, 0x88, 0x63, 0xd2, 0x91, 0x06, 0xa0, 0x85, 0x57, 0xe7, 0x85, 0x7e, 0x3d, 0x5b, 0x15,
    -	0x0b, 0x6f, 0x2c, 0xe8, 0x3b, 0x91, 0xcb, 0x8a, 0x88, 0x55, 0x4f, 0x16, 0xa1, 0x14, 0xba, 0xf0,
    -	0xd5, 0xae, 0xef, 0xd5, 0xae, 0xef, 0x85, 0xbb, 0x3e, 0x78, 0xb5, 0xeb, 0xbb, 0xd0, 0xae, 0x2f,
    -	0xa5, 0x16, 0x17, 0xaf, 0x6c, 0x13, 0x77, 0xa2, 0x40, 0x65, 0x22, 0xc7, 0xaf, 0x7a, 0x17, 0xf7,
    -	0xc5, 0xc4, 0x2e, 0xee, 0xa3, 0x8b, 0x8c, 0x4d, 0xd3, 0xb6, 0x71, 0xff, 0x54, 0x40, 0x7d, 0xb1,
    -	0x8d, 0x57, 0x30, 0x17, 0xf6, 0xe3, 0x73, 0xe1, 0x77, 0xff, 0x07, 0x03, 0xb3, 0x6c, 0xe4, 0xfe,
    -	0xa3, 0x00, 0x84, 0xc3, 0x0c, 0x7a, 0x1b, 0x22, 0x3f, 0x14, 0xca, 0xd2, 0xed, 0xb9, 0x29, 0x02,
    -	0x47, 0x37, 0x61, 0xb1, 0x4f, 0x19, 0x23, 0x6d, 0x7f, 0x21, 0x12, 0xfc, 0x8e, 0xb9, 0xeb, 0x81,
    -	0xb1, 0x8f, 0x47, 0x47, 0xb0, 0xe0, 0x50, 0xc2, 0x2c, 0x53, 0x2e, 0x46, 0xbe, 0xc3, 0x5f, 0xc1,
    -	0x58, 0x40, 0x4e, 0x47, 0xd5, 0x5b, 0x59, 0x7e, 0x67, 0xae, 0xc9, 0x47, 0xb3, 0x60, 0xc2, 0x52,
    -	0x1c, 0xba, 0x07, 0x25, 0xa9, 0x23, 0x72, 0x60, 0xaf, 0xd2, 0xbe, 0x21, 0x4f, 0x53, 0xda, 0x4d,
    -	0x12, 0xe0, 0x49, 0x1e, 0xf5, 0x01, 0xe4, 0xfd, 0xc1, 0x00, 0x95, 0x61, 0x2e, 0xf2, 0xde, 0xf2,
    -	0x0c, 0x17, 0x90, 0x84, 0x63, 0x66, 0xd3, 0x1d, 0xa3, 0xfe, 0x5e, 0x81, 0xd7, 0x52, 0x9a, 0x12,
    -	0x7a, 0x03, 0x72, 0x03, 0xa7, 0x27, 0x5d, 0xb0, 0x38, 0x1e, 0x55, 0x73, 0x9f, 0xe1, 0x87, 0x98,
    -	0xc3, 0x10, 0x81, 0x45, 0xe6, 0xad, 0xa7, 0x64, 0x30, 0xdd, 0xce, 0x7e, 0xe3, 0xc9, 0xbd, 0x56,
    -	0xa3, 0xc8, 0xef, 0xc0, 0x87, 0xfa, 0x72, 0xd1, 0x26, 0xe4, 0x35, 0xd2, 0x18, 0x98, 0x7a, 0xcf,
    -	0xbb, 0xaf, 0x25, 0xef, 0x8d, 0xb7, 0xb3, 0xed, 0xc1, 0x70, 0x80, 0x6d, 0xec, 0x3d, 0x3b, 0xa9,
    -	0xcc, 0x7c, 0x75, 0x52, 0x99, 0x79, 0x7e, 0x52, 0x99, 0xf9, 0xf9, 0xb8, 0xa2, 0x3c, 0x1b, 0x57,
    -	0x94, 0xaf, 0xc6, 0x15, 0xe5, 0xf9, 0xb8, 0xa2, 0xfc, 0x75, 0x5c, 0x51, 0x7e, 0xf9, 0xb7, 0xca,
    -	0xcc, 0xf7, 0x37, 0xb3, 0xfe, 0x97, 0xc3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x71, 0x54, 0x54,
    -	0xe6, 0x29, 0x21, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/admissionregistration/v1beta1/generated.proto", fileDescriptor_7f7c65a4f012fb19)
    +}
    +
    +var fileDescriptor_7f7c65a4f012fb19 = []byte{
    +	// 1957 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x1a, 0x4d, 0x6f, 0x1b, 0xc7,
    +	0xd5, 0x2b, 0x52, 0x12, 0xf9, 0xa8, 0x2f, 0x4e, 0x9c, 0x8a, 0x76, 0x1c, 0x52, 0x58, 0x04, 0x85,
    +	0x0c, 0xb4, 0x64, 0xac, 0x04, 0x89, 0xeb, 0xa0, 0x28, 0x44, 0xc5, 0x76, 0xed, 0x58, 0xb2, 0x30,
    +	0x4a, 0x24, 0xa0, 0x4d, 0x00, 0x8f, 0x76, 0x87, 0xe4, 0x96, 0xe4, 0xee, 0x76, 0x67, 0x49, 0x5b,
    +	0x2d, 0xd0, 0x16, 0xe8, 0x21, 0xd7, 0x02, 0xbd, 0x14, 0xe8, 0xa9, 0x7f, 0xa1, 0xf7, 0x02, 0xed,
    +	0xcd, 0xc7, 0xdc, 0x6a, 0xa0, 0x28, 0x51, 0xb1, 0x87, 0x9e, 0x7a, 0xe8, 0xa1, 0x3d, 0xe8, 0xd2,
    +	0x62, 0x66, 0x67, 0x3f, 0xb9, 0xb4, 0x56, 0xaa, 0xac, 0x5c, 0x7c, 0xd3, 0xbe, 0xcf, 0x79, 0x6f,
    +	0xde, 0xd7, 0x3c, 0x0a, 0x6e, 0x77, 0x6f, 0xb3, 0xba, 0x61, 0x35, 0x88, 0x6d, 0x34, 0x88, 0xde,
    +	0x37, 0x18, 0x33, 0x2c, 0xd3, 0xa1, 0x6d, 0x83, 0xb9, 0x0e, 0x71, 0x0d, 0xcb, 0x6c, 0x0c, 0x6f,
    +	0x1d, 0x52, 0x97, 0xdc, 0x6a, 0xb4, 0xa9, 0x49, 0x1d, 0xe2, 0x52, 0xbd, 0x6e, 0x3b, 0x96, 0x6b,
    +	0xa1, 0x75, 0x8f, 0xb3, 0x4e, 0x6c, 0xa3, 0x9e, 0xca, 0x59, 0x97, 0x9c, 0xd7, 0xbf, 0xdd, 0x36,
    +	0xdc, 0xce, 0xe0, 0xb0, 0xae, 0x59, 0xfd, 0x46, 0xdb, 0x6a, 0x5b, 0x0d, 0x21, 0xe0, 0x70, 0xd0,
    +	0x12, 0x5f, 0xe2, 0x43, 0xfc, 0xe5, 0x09, 0xbe, 0xfe, 0x5e, 0x86, 0x23, 0x25, 0x4f, 0x73, 0xfd,
    +	0xfd, 0x90, 0xa9, 0x4f, 0xb4, 0x8e, 0x61, 0x52, 0xe7, 0xa8, 0x61, 0x77, 0xdb, 0x1c, 0xc0, 0x1a,
    +	0x7d, 0xea, 0x92, 0x34, 0xae, 0xc6, 0x34, 0x2e, 0x67, 0x60, 0xba, 0x46, 0x9f, 0x4e, 0x30, 0x7c,
    +	0x70, 0x1a, 0x03, 0xd3, 0x3a, 0xb4, 0x4f, 0x92, 0x7c, 0x2a, 0x83, 0xe5, 0xcd, 0x81, 0x6e, 0xb8,
    +	0x9b, 0xa6, 0x69, 0xb9, 0xc2, 0x08, 0xf4, 0x36, 0xe4, 0xba, 0xf4, 0xa8, 0xa2, 0xac, 0x29, 0xeb,
    +	0xc5, 0x66, 0xe9, 0xf9, 0xa8, 0x76, 0x65, 0x3c, 0xaa, 0xe5, 0x3e, 0xa1, 0x47, 0x98, 0xc3, 0xd1,
    +	0x26, 0x2c, 0x0f, 0x49, 0x6f, 0x40, 0xef, 0x3e, 0xb3, 0x1d, 0x2a, 0x5c, 0x50, 0x99, 0x11, 0xa4,
    +	0xab, 0x92, 0x74, 0x79, 0x3f, 0x8e, 0xc6, 0x49, 0x7a, 0xb5, 0x07, 0xe5, 0xf0, 0xeb, 0x80, 0x38,
    +	0xa6, 0x61, 0xb6, 0xd1, 0xb7, 0xa0, 0xd0, 0x32, 0x68, 0x4f, 0xc7, 0xb4, 0x25, 0x05, 0xae, 0x48,
    +	0x81, 0x85, 0x7b, 0x12, 0x8e, 0x03, 0x0a, 0x74, 0x13, 0xe6, 0x9f, 0x7a, 0x8c, 0x95, 0x9c, 0x20,
    +	0x5e, 0x96, 0xc4, 0xf3, 0x52, 0x1e, 0xf6, 0xf1, 0x6a, 0x0b, 0x96, 0xb6, 0x89, 0xab, 0x75, 0xb6,
    +	0x2c, 0x53, 0x37, 0x84, 0x85, 0x6b, 0x90, 0x37, 0x49, 0x9f, 0x4a, 0x13, 0x17, 0x24, 0x67, 0x7e,
    +	0x87, 0xf4, 0x29, 0x16, 0x18, 0xb4, 0x01, 0x40, 0x93, 0xf6, 0x21, 0x49, 0x07, 0x11, 0xd3, 0x22,
    +	0x54, 0xea, 0x9f, 0xf3, 0x52, 0x11, 0xa6, 0xcc, 0x1a, 0x38, 0x1a, 0x65, 0xe8, 0x19, 0x94, 0xb9,
    +	0x38, 0x66, 0x13, 0x8d, 0xee, 0xd1, 0x1e, 0xd5, 0x5c, 0xcb, 0x11, 0x5a, 0x4b, 0x1b, 0xef, 0xd5,
    +	0xc3, 0x30, 0x0d, 0x6e, 0xac, 0x6e, 0x77, 0xdb, 0x1c, 0xc0, 0xea, 0x3c, 0x30, 0xea, 0xc3, 0x5b,
    +	0xf5, 0x47, 0xe4, 0x90, 0xf6, 0x7c, 0xd6, 0xe6, 0x9b, 0xe3, 0x51, 0xad, 0xbc, 0x93, 0x94, 0x88,
    +	0x27, 0x95, 0x20, 0x0b, 0x96, 0xac, 0xc3, 0x1f, 0x51, 0xcd, 0x0d, 0xd4, 0xce, 0x9c, 0x5f, 0x2d,
    +	0x1a, 0x8f, 0x6a, 0x4b, 0x8f, 0x63, 0xe2, 0x70, 0x42, 0x3c, 0xfa, 0x19, 0x2c, 0x3a, 0xd2, 0x6e,
    +	0x3c, 0xe8, 0x51, 0x56, 0xc9, 0xad, 0xe5, 0xd6, 0x4b, 0x1b, 0x9b, 0xf5, 0xac, 0xd9, 0x58, 0xe7,
    +	0x76, 0xe9, 0x9c, 0xf7, 0xc0, 0x70, 0x3b, 0x8f, 0x6d, 0xea, 0xa1, 0x59, 0xf3, 0x4d, 0xe9, 0xf7,
    +	0x45, 0x1c, 0x95, 0x8f, 0xe3, 0xea, 0xd0, 0xaf, 0x15, 0xb8, 0x4a, 0x9f, 0x69, 0xbd, 0x81, 0x4e,
    +	0x63, 0x74, 0x95, 0xfc, 0x45, 0x9d, 0xe3, 0x86, 0x3c, 0xc7, 0xd5, 0xbb, 0x29, 0x6a, 0x70, 0xaa,
    +	0x72, 0xf4, 0x31, 0x94, 0xfa, 0x3c, 0x24, 0x76, 0xad, 0x9e, 0xa1, 0x1d, 0x55, 0xe6, 0x45, 0x20,
    +	0xa9, 0xe3, 0x51, 0xad, 0xb4, 0x1d, 0x82, 0x4f, 0x46, 0xb5, 0xe5, 0xc8, 0xe7, 0xa7, 0x47, 0x36,
    +	0xc5, 0x51, 0x36, 0xf5, 0x4f, 0x05, 0x58, 0xde, 0x1e, 0xf0, 0xf4, 0x34, 0xdb, 0x07, 0xf4, 0xb0,
    +	0x63, 0x59, 0xdd, 0x0c, 0x31, 0xfc, 0x14, 0x16, 0xb4, 0x9e, 0x41, 0x4d, 0x77, 0xcb, 0x32, 0x5b,
    +	0x46, 0x5b, 0x06, 0xc0, 0x77, 0xb3, 0x3b, 0x42, 0xaa, 0xda, 0x8a, 0x08, 0x69, 0x5e, 0x95, 0x8a,
    +	0x16, 0xa2, 0x50, 0x1c, 0x53, 0x84, 0x3e, 0x87, 0x59, 0x27, 0x12, 0x02, 0x1f, 0x66, 0xd1, 0x58,
    +	0x4f, 0x71, 0xf8, 0xa2, 0xd4, 0x35, 0xeb, 0x79, 0xd8, 0x13, 0x8a, 0x1e, 0xc1, 0x62, 0x8b, 0x18,
    +	0xbd, 0x81, 0x43, 0xa5, 0x53, 0xf3, 0xc2, 0x03, 0xdf, 0xe4, 0x11, 0x72, 0x2f, 0x8a, 0x38, 0x19,
    +	0xd5, 0xca, 0x31, 0x80, 0x70, 0x6c, 0x9c, 0x39, 0x79, 0x41, 0xc5, 0x73, 0x5d, 0x50, 0x7a, 0x9e,
    +	0xcf, 0x7e, 0x3d, 0x79, 0x5e, 0x7a, 0xb5, 0x79, 0xfe, 0x31, 0x94, 0x98, 0xa1, 0xd3, 0xbb, 0xad,
    +	0x16, 0xd5, 0x5c, 0x56, 0x99, 0x0b, 0x1d, 0xb6, 0x17, 0x82, 0xb9, 0xc3, 0xc2, 0xcf, 0xad, 0x1e,
    +	0x61, 0x0c, 0x47, 0xd9, 0xd0, 0x1d, 0x58, 0xe2, 0x5d, 0xc9, 0x1a, 0xb8, 0x7b, 0x54, 0xb3, 0x4c,
    +	0x9d, 0x89, 0xd4, 0x98, 0xf5, 0x4e, 0xf0, 0x69, 0x0c, 0x83, 0x13, 0x94, 0xe8, 0x33, 0x58, 0x0d,
    +	0xa2, 0x08, 0xd3, 0xa1, 0x41, 0x9f, 0xee, 0x53, 0x87, 0x7f, 0xb0, 0x4a, 0x61, 0x2d, 0xb7, 0x5e,
    +	0x6c, 0xbe, 0x35, 0x1e, 0xd5, 0x56, 0x37, 0xd3, 0x49, 0xf0, 0x34, 0x5e, 0xf4, 0x04, 0x90, 0x43,
    +	0x0d, 0x73, 0x68, 0x69, 0x22, 0xfc, 0x64, 0x40, 0x80, 0xb0, 0xef, 0xdd, 0xf1, 0xa8, 0x86, 0xf0,
    +	0x04, 0xf6, 0x64, 0x54, 0xfb, 0xc6, 0x24, 0x54, 0x84, 0x47, 0x8a, 0x2c, 0xf4, 0x53, 0x58, 0xee,
    +	0xc7, 0x1a, 0x11, 0xab, 0x2c, 0x88, 0x0c, 0xb9, 0x9d, 0x3d, 0x27, 0xe3, 0x9d, 0x2c, 0xec, 0xb9,
    +	0x71, 0x38, 0xc3, 0x49, 0x4d, 0xea, 0x5f, 0x15, 0xb8, 0x91, 0xa8, 0x21, 0x5e, 0xba, 0x0e, 0x3c,
    +	0x0d, 0xe8, 0x09, 0x14, 0x78, 0x54, 0xe8, 0xc4, 0x25, 0xb2, 0x45, 0xbd, 0x9b, 0x2d, 0x86, 0xbc,
    +	0x80, 0xd9, 0xa6, 0x2e, 0x09, 0x5b, 0x64, 0x08, 0xc3, 0x81, 0x54, 0xf4, 0x43, 0x28, 0x48, 0xcd,
    +	0xac, 0x32, 0x23, 0x0c, 0xff, 0xce, 0x19, 0x0c, 0x8f, 0x9f, 0xbd, 0x99, 0xe7, 0xaa, 0x70, 0x20,
    +	0x50, 0xfd, 0xa7, 0x02, 0x6b, 0x2f, 0xb3, 0xef, 0x91, 0xc1, 0x5c, 0xf4, 0xf9, 0x84, 0x8d, 0xf5,
    +	0x8c, 0x79, 0x62, 0x30, 0xcf, 0xc2, 0x60, 0x26, 0xf1, 0x21, 0x11, 0xfb, 0xba, 0x30, 0x6b, 0xb8,
    +	0xb4, 0xef, 0x1b, 0x77, 0xef, 0xdc, 0xc6, 0xc5, 0x0e, 0x1e, 0x96, 0xc1, 0x07, 0x5c, 0x38, 0xf6,
    +	0x74, 0xa8, 0x2f, 0x14, 0x58, 0x9d, 0xd2, 0xa9, 0xd0, 0x87, 0x61, 0x2f, 0x16, 0x45, 0xa4, 0xa2,
    +	0x88, 0xbc, 0x28, 0x47, 0x9b, 0xa8, 0x40, 0xe0, 0x38, 0x1d, 0xfa, 0xa5, 0x02, 0xc8, 0x99, 0x90,
    +	0x27, 0x3b, 0xc7, 0xb9, 0xeb, 0xf8, 0x75, 0x69, 0x00, 0x9a, 0xc4, 0xe1, 0x14, 0x75, 0x2a, 0x81,
    +	0xe2, 0x2e, 0x71, 0x48, 0xff, 0x13, 0xc3, 0xd4, 0xf9, 0x24, 0x46, 0x6c, 0x43, 0x66, 0xa9, 0xec,
    +	0x76, 0x41, 0x98, 0x6d, 0xee, 0x3e, 0x90, 0x18, 0x1c, 0xa1, 0xe2, 0xbd, 0xb1, 0x6b, 0x98, 0xba,
    +	0x9c, 0xdb, 0x82, 0xde, 0xc8, 0xe5, 0x61, 0x81, 0x51, 0x7f, 0x3f, 0x03, 0x05, 0xa1, 0x83, 0xcf,
    +	0x92, 0xa7, 0xb7, 0xd2, 0x06, 0x14, 0x83, 0xd2, 0x2b, 0xa5, 0x96, 0x25, 0x59, 0x31, 0x28, 0xd3,
    +	0x38, 0xa4, 0x41, 0x5f, 0x40, 0x81, 0xf9, 0x05, 0x39, 0x77, 0xfe, 0x82, 0xbc, 0xc0, 0x23, 0x2d,
    +	0x28, 0xc5, 0x81, 0x48, 0xe4, 0xc2, 0xaa, 0xcd, 0x4f, 0x4f, 0x5d, 0xea, 0xec, 0x58, 0xee, 0x3d,
    +	0x6b, 0x60, 0xea, 0x9b, 0x1a, 0xf7, 0x9e, 0xec, 0x86, 0x77, 0x78, 0x09, 0xdc, 0x4d, 0x27, 0x39,
    +	0x19, 0xd5, 0xde, 0x9a, 0x82, 0x12, 0xa5, 0x6b, 0x9a, 0x68, 0xf5, 0x77, 0x0a, 0xac, 0xec, 0x51,
    +	0x67, 0x68, 0x68, 0x14, 0xd3, 0x16, 0x75, 0xa8, 0xa9, 0x25, 0x5c, 0xa3, 0x64, 0x70, 0x8d, 0xef,
    +	0xed, 0x99, 0xa9, 0xde, 0xbe, 0x01, 0x79, 0x9b, 0xb8, 0x1d, 0x39, 0xd8, 0x17, 0x38, 0x76, 0x97,
    +	0xb8, 0x1d, 0x2c, 0xa0, 0x02, 0x6b, 0x39, 0xae, 0x30, 0x74, 0x56, 0x62, 0x2d, 0xc7, 0xc5, 0x02,
    +	0xaa, 0xfe, 0x46, 0x81, 0x05, 0x6e, 0xc5, 0x56, 0x87, 0x6a, 0x5d, 0xfe, 0xac, 0xf8, 0x52, 0x01,
    +	0x44, 0x93, 0x8f, 0x0d, 0x2f, 0x23, 0x4a, 0x1b, 0x1f, 0x65, 0x4f, 0xd1, 0x89, 0x07, 0x4b, 0x18,
    +	0xd6, 0x13, 0x28, 0x86, 0x53, 0x54, 0xaa, 0x7f, 0x99, 0x81, 0x6b, 0xfb, 0xa4, 0x67, 0xe8, 0x22,
    +	0xd5, 0x83, 0xfe, 0x24, 0x9b, 0xc3, 0xab, 0x2f, 0xbf, 0x06, 0xe4, 0x99, 0x4d, 0x35, 0x99, 0xcd,
    +	0xf7, 0xb3, 0x9b, 0x3e, 0xf5, 0xd0, 0x7b, 0x36, 0xd5, 0xc2, 0x1b, 0xe4, 0x5f, 0x58, 0xa8, 0x40,
    +	0x3f, 0x86, 0x39, 0xe6, 0x12, 0x77, 0xc0, 0x64, 0xf0, 0x3f, 0xb8, 0x08, 0x65, 0x42, 0x60, 0x73,
    +	0x49, 0xaa, 0x9b, 0xf3, 0xbe, 0xb1, 0x54, 0xa4, 0xfe, 0x47, 0x81, 0xb5, 0xa9, 0xbc, 0x4d, 0xc3,
    +	0xd4, 0x79, 0x30, 0xbc, 0x7a, 0x27, 0xdb, 0x31, 0x27, 0xef, 0x5c, 0x80, 0xdd, 0xf2, 0xec, 0xd3,
    +	0x7c, 0xad, 0xfe, 0x5b, 0x81, 0x77, 0x4e, 0x63, 0xbe, 0x84, 0xe6, 0x67, 0xc5, 0x9b, 0xdf, 0xc3,
    +	0x8b, 0xb3, 0x7c, 0x4a, 0x03, 0xfc, 0x32, 0x77, 0xba, 0xdd, 0xdc, 0x4d, 0xbc, 0x83, 0xd8, 0x02,
    +	0xb8, 0x13, 0x16, 0xf9, 0xe0, 0x12, 0x77, 0x03, 0x0c, 0x8e, 0x50, 0x71, 0x5f, 0xd9, 0xb2, 0x3d,
    +	0xc8, 0xab, 0xdc, 0xc8, 0x6e, 0x90, 0xdf, 0x58, 0xbc, 0xf2, 0xed, 0x7f, 0xe1, 0x40, 0x22, 0x72,
    +	0x61, 0xa9, 0x1f, 0x5b, 0x14, 0xc8, 0x34, 0x39, 0xeb, 0x1c, 0x18, 0xf0, 0x7b, 0x73, 0x73, 0x1c,
    +	0x86, 0x13, 0x3a, 0xd0, 0x01, 0x94, 0x87, 0xd2, 0x5f, 0x96, 0xe9, 0x95, 0x74, 0xef, 0x75, 0x5c,
    +	0x6c, 0xde, 0xe4, 0xef, 0x8d, 0xfd, 0x24, 0xf2, 0x64, 0x54, 0x5b, 0x49, 0x02, 0xf1, 0xa4, 0x0c,
    +	0xf5, 0x1f, 0x0a, 0xbc, 0x3d, 0xf5, 0x26, 0x2e, 0x21, 0xf4, 0x3a, 0xf1, 0xd0, 0xdb, 0xba, 0x88,
    +	0xd0, 0x4b, 0x8f, 0xb9, 0xdf, 0xce, 0xbd, 0xc4, 0x52, 0x11, 0x6c, 0x4f, 0xa0, 0x68, 0xfb, 0xb3,
    +	0x4b, 0xca, 0xa6, 0x27, 0x4b, 0xe4, 0x70, 0xd6, 0xe6, 0x22, 0xef, 0x9f, 0xc1, 0x27, 0x0e, 0x85,
    +	0xa2, 0x9f, 0xc0, 0x8a, 0x3f, 0xdb, 0x73, 0x7e, 0xc3, 0x74, 0xfd, 0x01, 0xed, 0xfc, 0xe1, 0x73,
    +	0x75, 0x3c, 0xaa, 0xad, 0x6c, 0x27, 0xa4, 0xe2, 0x09, 0x3d, 0xa8, 0x0b, 0xa5, 0xf0, 0xfa, 0xfd,
    +	0xf7, 0xfd, 0xfb, 0x67, 0xf7, 0xb7, 0x65, 0x36, 0xdf, 0x90, 0x0e, 0x2e, 0x85, 0x30, 0x86, 0xa3,
    +	0xd2, 0x2f, 0xf8, 0xa1, 0xff, 0x73, 0x58, 0x21, 0xf1, 0x45, 0x27, 0xab, 0xcc, 0x9e, 0xf5, 0x11,
    +	0x92, 0x58, 0x95, 0x36, 0x2b, 0xd2, 0x88, 0x95, 0x04, 0x82, 0xe1, 0x09, 0x65, 0x69, 0xaf, 0xbf,
    +	0xb9, 0xcb, 0x7a, 0xfd, 0x21, 0x0d, 0x8a, 0x43, 0xe2, 0x18, 0xe4, 0xb0, 0x47, 0xf9, 0x53, 0x3b,
    +	0x77, 0xb6, 0x82, 0xb6, 0x2f, 0x59, 0xc3, 0xc9, 0xce, 0x87, 0x30, 0x1c, 0xca, 0x55, 0xff, 0x38,
    +	0x03, 0xb5, 0x53, 0xda, 0x37, 0x7a, 0x08, 0xc8, 0x3a, 0x64, 0xd4, 0x19, 0x52, 0xfd, 0xbe, 0xb7,
    +	0x8a, 0xf6, 0xc7, 0xfa, 0x5c, 0x38, 0x50, 0x3d, 0x9e, 0xa0, 0xc0, 0x29, 0x5c, 0xa8, 0x07, 0x0b,
    +	0x6e, 0x64, 0xd4, 0x93, 0x59, 0xf0, 0x41, 0x76, 0xbb, 0xa2, 0x83, 0x62, 0x73, 0x65, 0x3c, 0xaa,
    +	0xc5, 0x46, 0x47, 0x1c, 0x93, 0x8e, 0x34, 0x00, 0x2d, 0xbc, 0x3a, 0x2f, 0xf4, 0x1b, 0xd9, 0xaa,
    +	0x58, 0x78, 0x63, 0x41, 0xdf, 0x89, 0x5c, 0x56, 0x44, 0xac, 0x7a, 0x3c, 0x0f, 0xe5, 0xd0, 0x85,
    +	0xaf, 0x77, 0x7d, 0xaf, 0x77, 0x7d, 0x2f, 0xdd, 0xf5, 0xc1, 0xeb, 0x5d, 0xdf, 0xb9, 0x76, 0x7d,
    +	0x29, 0xb5, 0xb8, 0x74, 0x69, 0x9b, 0xb8, 0x63, 0x05, 0xaa, 0x13, 0x39, 0x7e, 0xd9, 0xbb, 0xb8,
    +	0x2f, 0x26, 0x76, 0x71, 0x1f, 0x9d, 0x67, 0x6c, 0x9a, 0xb6, 0x8d, 0xfb, 0x97, 0x02, 0xea, 0xcb,
    +	0x6d, 0xbc, 0x84, 0xb9, 0xb0, 0x1f, 0x9f, 0x0b, 0xbf, 0xff, 0x7f, 0x18, 0x98, 0x65, 0x23, 0xf7,
    +	0x5f, 0x05, 0x20, 0x1c, 0x66, 0xd0, 0x3b, 0x10, 0xf9, 0xa1, 0x50, 0x96, 0x6e, 0xcf, 0x4d, 0x11,
    +	0x38, 0xba, 0x09, 0xf3, 0x7d, 0xca, 0x18, 0x69, 0xfb, 0x0b, 0x91, 0xe0, 0x77, 0xcc, 0x6d, 0x0f,
    +	0x8c, 0x7d, 0x3c, 0x3a, 0x80, 0x39, 0x87, 0x12, 0x66, 0x99, 0x72, 0x31, 0xf2, 0x3d, 0xfe, 0x0a,
    +	0xc6, 0x02, 0x72, 0x32, 0xaa, 0xdd, 0xca, 0xf2, 0x3b, 0x73, 0x5d, 0x3e, 0x9a, 0x05, 0x13, 0x96,
    +	0xe2, 0xd0, 0x7d, 0x28, 0x4b, 0x1d, 0x91, 0x03, 0x7b, 0x95, 0xf6, 0x9a, 0x3c, 0x4d, 0x79, 0x3b,
    +	0x49, 0x80, 0x27, 0x79, 0xd4, 0x87, 0x50, 0xf0, 0x07, 0x03, 0x54, 0x81, 0x7c, 0xe4, 0xbd, 0xe5,
    +	0x19, 0x2e, 0x20, 0x09, 0xc7, 0xcc, 0xa4, 0x3b, 0x46, 0xfd, 0x83, 0x02, 0x6f, 0xa4, 0x34, 0x25,
    +	0x74, 0x0d, 0x72, 0x03, 0xa7, 0x27, 0x5d, 0x30, 0x3f, 0x1e, 0xd5, 0x72, 0x9f, 0xe1, 0x47, 0x98,
    +	0xc3, 0x10, 0x81, 0x79, 0xe6, 0xad, 0xa7, 0x64, 0x30, 0xdd, 0xc9, 0x7e, 0xe3, 0xc9, 0xbd, 0x56,
    +	0xb3, 0xc4, 0xef, 0xc0, 0x87, 0xfa, 0x72, 0xd1, 0x3a, 0x14, 0x34, 0xd2, 0x1c, 0x98, 0x7a, 0xcf,
    +	0xbb, 0xaf, 0x05, 0xef, 0x8d, 0xb7, 0xb5, 0xe9, 0xc1, 0x70, 0x80, 0x6d, 0xee, 0x3c, 0x3f, 0xae,
    +	0x5e, 0xf9, 0xea, 0xb8, 0x7a, 0xe5, 0xc5, 0x71, 0xf5, 0xca, 0x2f, 0xc6, 0x55, 0xe5, 0xf9, 0xb8,
    +	0xaa, 0x7c, 0x35, 0xae, 0x2a, 0x2f, 0xc6, 0x55, 0xe5, 0x6f, 0xe3, 0xaa, 0xf2, 0xab, 0xbf, 0x57,
    +	0xaf, 0xfc, 0x60, 0x3d, 0xeb, 0x7f, 0x39, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x6f, 0xf2, 0xe8,
    +	0x4a, 0x10, 0x21, 0x00, 0x00,
     }
     
     func (m *AuditAnnotation) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto
    index 1855cdfc4f7e..30f99f64d0f9 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto
    @@ -157,7 +157,7 @@ message MatchResources {
       //
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 1;
     
       // ObjectSelector decides whether to run the validation based on if the
       // object has matching labels. objectSelector is evaluated against both
    @@ -171,7 +171,7 @@ message MatchResources {
       // users may skip the admission webhook by setting the labels.
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 2;
     
       // ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches.
       // The policy cares about an operation if it matches _any_ Rule.
    @@ -222,7 +222,8 @@ message MutatingWebhook {
       // from putting the cluster in a state which cannot be recovered from without completely
       // disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called
       // on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.
    -  repeated k8s.io.api.admissionregistration.v1.RuleWithOperations rules = 3;
    +  // +listType=atomic
    +  repeated .k8s.io.api.admissionregistration.v1.RuleWithOperations rules = 3;
     
       // FailurePolicy defines how unrecognized errors from the admission endpoint are handled -
       // allowed values are Ignore or Fail. Defaults to Ignore.
    @@ -290,7 +291,7 @@ message MutatingWebhook {
       //
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
     
       // ObjectSelector decides whether to run the webhook based on if the
       // object has matching labels. objectSelector is evaluated against both
    @@ -304,7 +305,7 @@ message MutatingWebhook {
       // users may skip the admission webhook by setting the labels.
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 11;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 11;
     
       // SideEffects states whether this webhook has side effects.
       // Acceptable values are: Unknown, None, Some, NoneOnDryRun
    @@ -332,6 +333,7 @@ message MutatingWebhook {
       // and be subject to the failure policy.
       // Default to `['v1beta1']`.
       // +optional
    +  // +listType=atomic
       repeated string admissionReviewVersions = 8;
     
       // reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation.
    @@ -364,13 +366,10 @@ message MutatingWebhook {
       //      - If failurePolicy=Fail, reject the request
       //      - If failurePolicy=Ignore, the error is ignored and the webhook is skipped
       //
    -  // This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.
    -  //
       // +patchMergeKey=name
       // +patchStrategy=merge
       // +listType=map
       // +listMapKey=name
    -  // +featureGate=AdmissionWebhookMatchConditions
       // +optional
       repeated MatchCondition matchConditions = 12;
     }
    @@ -380,12 +379,14 @@ message MutatingWebhook {
     message MutatingWebhookConfiguration {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Webhooks is a list of webhooks and the affected resources and operations.
       // +optional
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated MutatingWebhook Webhooks = 2;
     }
     
    @@ -394,7 +395,7 @@ message MutatingWebhookConfigurationList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of MutatingWebhookConfiguration.
       repeated MutatingWebhookConfiguration items = 2;
    @@ -409,7 +410,7 @@ message NamedRuleWithOperations {
       repeated string resourceNames = 1;
     
       // RuleWithOperations is a tuple of Operations and Resources.
    -  optional k8s.io.api.admissionregistration.v1.RuleWithOperations ruleWithOperations = 2;
    +  optional .k8s.io.api.admissionregistration.v1.RuleWithOperations ruleWithOperations = 2;
     }
     
     // ParamKind is a tuple of Group Kind and Version.
    @@ -467,7 +468,7 @@ message ParamRef {
       // mutually exclusive properties. If one is set, the other must be unset.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
     
       // `parameterNotFoundAction` controls the behavior of the binding when the resource
       // exists, and name or selector is valid, but there are no parameters
    @@ -522,7 +523,7 @@ message TypeChecking {
     message ValidatingAdmissionPolicy {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the ValidatingAdmissionPolicy.
       optional ValidatingAdmissionPolicySpec spec = 2;
    @@ -549,7 +550,7 @@ message ValidatingAdmissionPolicy {
     message ValidatingAdmissionPolicyBinding {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.
       optional ValidatingAdmissionPolicyBindingSpec spec = 2;
    @@ -560,7 +561,7 @@ message ValidatingAdmissionPolicyBindingList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of PolicyBinding.
       repeated ValidatingAdmissionPolicyBinding items = 2;
    @@ -638,7 +639,7 @@ message ValidatingAdmissionPolicyList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of ValidatingAdmissionPolicy.
       repeated ValidatingAdmissionPolicy items = 2;
    @@ -743,7 +744,7 @@ message ValidatingAdmissionPolicyStatus {
       // +optional
       // +listType=map
       // +listMapKey=type
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 3;
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 3;
     }
     
     // ValidatingWebhook describes an admission webhook and the resources and operations it applies to.
    @@ -765,7 +766,8 @@ message ValidatingWebhook {
       // from putting the cluster in a state which cannot be recovered from without completely
       // disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called
       // on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.
    -  repeated k8s.io.api.admissionregistration.v1.RuleWithOperations rules = 3;
    +  // +listType=atomic
    +  repeated .k8s.io.api.admissionregistration.v1.RuleWithOperations rules = 3;
     
       // FailurePolicy defines how unrecognized errors from the admission endpoint are handled -
       // allowed values are Ignore or Fail. Defaults to Ignore.
    @@ -833,7 +835,7 @@ message ValidatingWebhook {
       //
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
     
       // ObjectSelector decides whether to run the webhook based on if the
       // object has matching labels. objectSelector is evaluated against both
    @@ -847,7 +849,7 @@ message ValidatingWebhook {
       // users may skip the admission webhook by setting the labels.
       // Default to the empty LabelSelector, which matches everything.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 10;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector objectSelector = 10;
     
       // SideEffects states whether this webhook has side effects.
       // Acceptable values are: Unknown, None, Some, NoneOnDryRun
    @@ -856,6 +858,7 @@ message ValidatingWebhook {
       // Requests with the dryRun attribute will be auto-rejected if they match a webhook with
       // sideEffects == Unknown or Some. Defaults to Unknown.
       // +optional
    +  // +listType=atomic
       optional string sideEffects = 6;
     
       // TimeoutSeconds specifies the timeout for this webhook. After the timeout passes,
    @@ -875,6 +878,7 @@ message ValidatingWebhook {
       // and be subject to the failure policy.
       // Default to `['v1beta1']`.
       // +optional
    +  // +listType=atomic
       repeated string admissionReviewVersions = 8;
     
       // MatchConditions is a list of conditions that must be met for a request to be sent to this
    @@ -889,13 +893,10 @@ message ValidatingWebhook {
       //      - If failurePolicy=Fail, reject the request
       //      - If failurePolicy=Ignore, the error is ignored and the webhook is skipped
       //
    -  // This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.
    -  //
       // +patchMergeKey=name
       // +patchStrategy=merge
       // +listType=map
       // +listMapKey=name
    -  // +featureGate=AdmissionWebhookMatchConditions
       // +optional
       repeated MatchCondition matchConditions = 11;
     }
    @@ -905,12 +906,14 @@ message ValidatingWebhook {
     message ValidatingWebhookConfiguration {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Webhooks is a list of webhooks and the affected resources and operations.
       // +optional
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated ValidatingWebhook Webhooks = 2;
     }
     
    @@ -919,7 +922,7 @@ message ValidatingWebhookConfigurationList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of ValidatingWebhookConfiguration.
       repeated ValidatingWebhookConfiguration items = 2;
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/types.go b/vendor/k8s.io/api/admissionregistration/v1beta1/types.go
    index 12c680dc972d..0f5903123923 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/types.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/types.go
    @@ -158,7 +158,7 @@ type ValidatingAdmissionPolicyList struct {
     	// +optional
     	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
     	// List of ValidatingAdmissionPolicy.
    -	Items []ValidatingAdmissionPolicy `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"`
    +	Items []ValidatingAdmissionPolicy `json:"items" protobuf:"bytes,2,rep,name=items"`
     }
     
     // ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.
    @@ -419,7 +419,7 @@ type ValidatingAdmissionPolicyBindingList struct {
     	// +optional
     	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
     	// List of PolicyBinding.
    -	Items []ValidatingAdmissionPolicyBinding `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"`
    +	Items []ValidatingAdmissionPolicyBinding `json:"items" protobuf:"bytes,2,rep,name=items"`
     }
     
     // ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.
    @@ -684,6 +684,8 @@ type ValidatingWebhookConfiguration struct {
     	// +optional
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	Webhooks []ValidatingWebhook `json:"webhooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=Webhooks"`
     }
     
    @@ -723,6 +725,8 @@ type MutatingWebhookConfiguration struct {
     	// +optional
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	Webhooks []MutatingWebhook `json:"webhooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=Webhooks"`
     }
     
    @@ -762,6 +766,7 @@ type ValidatingWebhook struct {
     	// from putting the cluster in a state which cannot be recovered from without completely
     	// disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called
     	// on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.
    +	// +listType=atomic
     	Rules []RuleWithOperations `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"`
     
     	// FailurePolicy defines how unrecognized errors from the admission endpoint are handled -
    @@ -853,6 +858,7 @@ type ValidatingWebhook struct {
     	// Requests with the dryRun attribute will be auto-rejected if they match a webhook with
     	// sideEffects == Unknown or Some. Defaults to Unknown.
     	// +optional
    +	// +listType=atomic
     	SideEffects *SideEffectClass `json:"sideEffects,omitempty" protobuf:"bytes,6,opt,name=sideEffects,casttype=SideEffectClass"`
     
     	// TimeoutSeconds specifies the timeout for this webhook. After the timeout passes,
    @@ -872,6 +878,7 @@ type ValidatingWebhook struct {
     	// and be subject to the failure policy.
     	// Default to `['v1beta1']`.
     	// +optional
    +	// +listType=atomic
     	AdmissionReviewVersions []string `json:"admissionReviewVersions,omitempty" protobuf:"bytes,8,rep,name=admissionReviewVersions"`
     
     	// MatchConditions is a list of conditions that must be met for a request to be sent to this
    @@ -886,13 +893,10 @@ type ValidatingWebhook struct {
     	//      - If failurePolicy=Fail, reject the request
     	//      - If failurePolicy=Ignore, the error is ignored and the webhook is skipped
     	//
    -	// This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.
    -	//
     	// +patchMergeKey=name
     	// +patchStrategy=merge
     	// +listType=map
     	// +listMapKey=name
    -	// +featureGate=AdmissionWebhookMatchConditions
     	// +optional
     	MatchConditions []MatchCondition `json:"matchConditions,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,11,rep,name=matchConditions"`
     }
    @@ -916,6 +920,7 @@ type MutatingWebhook struct {
     	// from putting the cluster in a state which cannot be recovered from without completely
     	// disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called
     	// on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.
    +	// +listType=atomic
     	Rules []RuleWithOperations `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"`
     
     	// FailurePolicy defines how unrecognized errors from the admission endpoint are handled -
    @@ -1026,6 +1031,7 @@ type MutatingWebhook struct {
     	// and be subject to the failure policy.
     	// Default to `['v1beta1']`.
     	// +optional
    +	// +listType=atomic
     	AdmissionReviewVersions []string `json:"admissionReviewVersions,omitempty" protobuf:"bytes,8,rep,name=admissionReviewVersions"`
     
     	// reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation.
    @@ -1058,13 +1064,10 @@ type MutatingWebhook struct {
     	//      - If failurePolicy=Fail, reject the request
     	//      - If failurePolicy=Ignore, the error is ignored and the webhook is skipped
     	//
    -	// This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.
    -	//
     	// +patchMergeKey=name
     	// +patchStrategy=merge
     	// +listType=map
     	// +listMapKey=name
    -	// +featureGate=AdmissionWebhookMatchConditions
     	// +optional
     	MatchConditions []MatchCondition `json:"matchConditions,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,12,rep,name=matchConditions"`
     }
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go
    index adaf4bc11dbe..cc1509b539a4 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go
    @@ -83,7 +83,7 @@ var map_MutatingWebhook = map[string]string{
     	"timeoutSeconds":          "TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 30 seconds.",
     	"admissionReviewVersions": "AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. Default to `['v1beta1']`.",
     	"reinvocationPolicy":      "reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation. Allowed values are \"Never\" and \"IfNeeded\".\n\nNever: the webhook will not be called more than once in a single admission evaluation.\n\nIfNeeded: the webhook will be called at least one additional time as part of the admission evaluation if the object being admitted is modified by other admission plugins after the initial webhook call. Webhooks that specify this option *must* be idempotent, able to process objects they previously admitted. Note: * the number of additional invocations is not guaranteed to be exactly one. * if additional invocations result in further modifications to the object, webhooks are not guaranteed to be invoked again. * webhooks that use this option may be reordered to minimize the number of additional invocations. * to validate an object after all mutations are guaranteed complete, use a validating admission webhook instead.\n\nDefaults to \"Never\".",
    -	"matchConditions":         "MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the webhook is called.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the error is ignored and the webhook is skipped\n\nThis is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.",
    +	"matchConditions":         "MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the webhook is called.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the error is ignored and the webhook is skipped",
     }
     
     func (MutatingWebhook) SwaggerDoc() map[string]string {
    @@ -253,7 +253,7 @@ var map_ValidatingWebhook = map[string]string{
     	"sideEffects":             "SideEffects states whether this webhook has side effects. Acceptable values are: Unknown, None, Some, NoneOnDryRun Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. Defaults to Unknown.",
     	"timeoutSeconds":          "TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 30 seconds.",
     	"admissionReviewVersions": "AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. Default to `['v1beta1']`.",
    -	"matchConditions":         "MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the webhook is called.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the error is ignored and the webhook is skipped\n\nThis is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate.",
    +	"matchConditions":         "MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the webhook is called.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the error is ignored and the webhook is skipped",
     }
     
     func (ValidatingWebhook) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/apidiscovery/v2/doc.go b/vendor/k8s.io/api/apidiscovery/v2/doc.go
    new file mode 100644
    index 000000000000..4f3ad5f139d0
    --- /dev/null
    +++ b/vendor/k8s.io/api/apidiscovery/v2/doc.go
    @@ -0,0 +1,23 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// +k8s:deepcopy-gen=package
    +// +k8s:protobuf-gen=package
    +// +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
    +// +groupName=apidiscovery.k8s.io
    +
    +package v2 // import "k8s.io/api/apidiscovery/v2"
    diff --git a/vendor/k8s.io/api/apidiscovery/v2/generated.pb.go b/vendor/k8s.io/api/apidiscovery/v2/generated.pb.go
    new file mode 100644
    index 000000000000..5c37feaa2ea3
    --- /dev/null
    +++ b/vendor/k8s.io/api/apidiscovery/v2/generated.pb.go
    @@ -0,0 +1,1742 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by protoc-gen-gogo. DO NOT EDIT.
    +// source: k8s.io/api/apidiscovery/v2/generated.proto
    +
    +package v2
    +
    +import (
    +	fmt "fmt"
    +
    +	io "io"
    +
    +	proto "github.com/gogo/protobuf/proto"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +
    +	math "math"
    +	math_bits "math/bits"
    +	reflect "reflect"
    +	strings "strings"
    +)
    +
    +// Reference imports to suppress errors if they are not otherwise used.
    +var _ = proto.Marshal
    +var _ = fmt.Errorf
    +var _ = math.Inf
    +
    +// This is a compile-time assertion to ensure that this generated file
    +// is compatible with the proto package it is being compiled against.
    +// A compilation error at this line likely means your copy of the
    +// proto package needs to be updated.
    +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    +
    +func (m *APIGroupDiscovery) Reset()      { *m = APIGroupDiscovery{} }
    +func (*APIGroupDiscovery) ProtoMessage() {}
    +func (*APIGroupDiscovery) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_e0b7287280068d8f, []int{0}
    +}
    +func (m *APIGroupDiscovery) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *APIGroupDiscovery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *APIGroupDiscovery) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_APIGroupDiscovery.Merge(m, src)
    +}
    +func (m *APIGroupDiscovery) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *APIGroupDiscovery) XXX_DiscardUnknown() {
    +	xxx_messageInfo_APIGroupDiscovery.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_APIGroupDiscovery proto.InternalMessageInfo
    +
    +func (m *APIGroupDiscoveryList) Reset()      { *m = APIGroupDiscoveryList{} }
    +func (*APIGroupDiscoveryList) ProtoMessage() {}
    +func (*APIGroupDiscoveryList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_e0b7287280068d8f, []int{1}
    +}
    +func (m *APIGroupDiscoveryList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *APIGroupDiscoveryList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *APIGroupDiscoveryList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_APIGroupDiscoveryList.Merge(m, src)
    +}
    +func (m *APIGroupDiscoveryList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *APIGroupDiscoveryList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_APIGroupDiscoveryList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_APIGroupDiscoveryList proto.InternalMessageInfo
    +
    +func (m *APIResourceDiscovery) Reset()      { *m = APIResourceDiscovery{} }
    +func (*APIResourceDiscovery) ProtoMessage() {}
    +func (*APIResourceDiscovery) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_e0b7287280068d8f, []int{2}
    +}
    +func (m *APIResourceDiscovery) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *APIResourceDiscovery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *APIResourceDiscovery) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_APIResourceDiscovery.Merge(m, src)
    +}
    +func (m *APIResourceDiscovery) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *APIResourceDiscovery) XXX_DiscardUnknown() {
    +	xxx_messageInfo_APIResourceDiscovery.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_APIResourceDiscovery proto.InternalMessageInfo
    +
    +func (m *APISubresourceDiscovery) Reset()      { *m = APISubresourceDiscovery{} }
    +func (*APISubresourceDiscovery) ProtoMessage() {}
    +func (*APISubresourceDiscovery) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_e0b7287280068d8f, []int{3}
    +}
    +func (m *APISubresourceDiscovery) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *APISubresourceDiscovery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *APISubresourceDiscovery) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_APISubresourceDiscovery.Merge(m, src)
    +}
    +func (m *APISubresourceDiscovery) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *APISubresourceDiscovery) XXX_DiscardUnknown() {
    +	xxx_messageInfo_APISubresourceDiscovery.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_APISubresourceDiscovery proto.InternalMessageInfo
    +
    +func (m *APIVersionDiscovery) Reset()      { *m = APIVersionDiscovery{} }
    +func (*APIVersionDiscovery) ProtoMessage() {}
    +func (*APIVersionDiscovery) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_e0b7287280068d8f, []int{4}
    +}
    +func (m *APIVersionDiscovery) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *APIVersionDiscovery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *APIVersionDiscovery) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_APIVersionDiscovery.Merge(m, src)
    +}
    +func (m *APIVersionDiscovery) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *APIVersionDiscovery) XXX_DiscardUnknown() {
    +	xxx_messageInfo_APIVersionDiscovery.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_APIVersionDiscovery proto.InternalMessageInfo
    +
    +func init() {
    +	proto.RegisterType((*APIGroupDiscovery)(nil), "k8s.io.api.apidiscovery.v2.APIGroupDiscovery")
    +	proto.RegisterType((*APIGroupDiscoveryList)(nil), "k8s.io.api.apidiscovery.v2.APIGroupDiscoveryList")
    +	proto.RegisterType((*APIResourceDiscovery)(nil), "k8s.io.api.apidiscovery.v2.APIResourceDiscovery")
    +	proto.RegisterType((*APISubresourceDiscovery)(nil), "k8s.io.api.apidiscovery.v2.APISubresourceDiscovery")
    +	proto.RegisterType((*APIVersionDiscovery)(nil), "k8s.io.api.apidiscovery.v2.APIVersionDiscovery")
    +}
    +
    +func init() {
    +	proto.RegisterFile("k8s.io/api/apidiscovery/v2/generated.proto", fileDescriptor_e0b7287280068d8f)
    +}
    +
    +var fileDescriptor_e0b7287280068d8f = []byte{
    +	// 736 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcd, 0x4e, 0xdb, 0x4c,
    +	0x14, 0x8d, 0x09, 0xf9, 0x48, 0x26, 0xc9, 0xd7, 0x30, 0x80, 0x6a, 0x65, 0xe1, 0xa0, 0x6c, 0x4a,
    +	0xab, 0x32, 0x86, 0x94, 0xa2, 0x2e, 0x9b, 0x94, 0xb6, 0x8a, 0xfa, 0x87, 0x26, 0x15, 0x8b, 0xaa,
    +	0x95, 0xea, 0x38, 0x83, 0xe3, 0x82, 0x7f, 0x34, 0xe3, 0x44, 0x62, 0xd7, 0x47, 0xe8, 0x13, 0xf4,
    +	0x79, 0xe8, 0x8e, 0x05, 0x0b, 0x56, 0x51, 0x49, 0x77, 0x7d, 0x04, 0x56, 0xd5, 0x8c, 0xc7, 0x3f,
    +	0x21, 0x44, 0x41, 0x5d, 0x74, 0x81, 0x84, 0xcf, 0x9c, 0x73, 0xee, 0x3d, 0xd7, 0xd7, 0x13, 0xf0,
    +	0xe0, 0xe8, 0x09, 0x43, 0xb6, 0xa7, 0x1b, 0xbe, 0xcd, 0xff, 0x7a, 0x36, 0x33, 0xbd, 0x21, 0xa1,
    +	0x27, 0xfa, 0xb0, 0xa1, 0x5b, 0xc4, 0x25, 0xd4, 0x08, 0x48, 0x0f, 0xf9, 0xd4, 0x0b, 0x3c, 0x58,
    +	0x0d, 0xb9, 0xc8, 0xf0, 0x6d, 0x94, 0xe6, 0xa2, 0x61, 0xa3, 0xba, 0x69, 0xd9, 0x41, 0x7f, 0xd0,
    +	0x45, 0xa6, 0xe7, 0xe8, 0x96, 0x67, 0x79, 0xba, 0x90, 0x74, 0x07, 0x87, 0xe2, 0x49, 0x3c, 0x88,
    +	0xff, 0x42, 0xab, 0xea, 0x4e, 0x52, 0xd6, 0x31, 0xcc, 0xbe, 0xed, 0xf2, 0x92, 0xfe, 0x91, 0xc5,
    +	0x01, 0xa6, 0x3b, 0x24, 0x30, 0xf4, 0xe1, 0xf6, 0xf5, 0x06, 0xaa, 0xfa, 0x2c, 0x15, 0x1d, 0xb8,
    +	0x81, 0xed, 0x90, 0x29, 0xc1, 0xee, 0x3c, 0x01, 0x33, 0xfb, 0xc4, 0x31, 0xae, 0xeb, 0xea, 0xe7,
    +	0x0a, 0x58, 0x6e, 0xee, 0xb7, 0x5f, 0x52, 0x6f, 0xe0, 0xef, 0x45, 0x31, 0xe1, 0x67, 0x90, 0xe7,
    +	0x9d, 0xf5, 0x8c, 0xc0, 0x50, 0x95, 0x75, 0x65, 0xa3, 0xd8, 0xd8, 0x42, 0xc9, 0x48, 0xe2, 0x02,
    +	0xc8, 0x3f, 0xb2, 0x38, 0xc0, 0x10, 0x67, 0xa3, 0xe1, 0x36, 0x7a, 0xd7, 0xfd, 0x42, 0xcc, 0xe0,
    +	0x0d, 0x09, 0x8c, 0x16, 0x3c, 0x1d, 0xd5, 0x32, 0xe3, 0x51, 0x0d, 0x24, 0x18, 0x8e, 0x5d, 0xe1,
    +	0x27, 0x90, 0x1f, 0x12, 0xca, 0x6c, 0xcf, 0x65, 0xea, 0xc2, 0x7a, 0x76, 0xa3, 0xd8, 0xd0, 0xd1,
    +	0xec, 0xa1, 0xa3, 0xe6, 0x7e, 0xfb, 0x20, 0xa4, 0xc7, 0x4d, 0xb6, 0x2a, 0xb2, 0x40, 0x5e, 0x9e,
    +	0x30, 0x1c, 0x5b, 0xd6, 0x7f, 0x28, 0x60, 0x6d, 0x2a, 0xd6, 0x6b, 0x9b, 0x05, 0xf0, 0xe3, 0x54,
    +	0x34, 0x74, 0xbb, 0x68, 0x5c, 0x2d, 0x82, 0xc5, 0x75, 0x23, 0x24, 0x15, 0x0b, 0x83, 0x9c, 0x1d,
    +	0x10, 0x27, 0xca, 0xb4, 0x39, 0x27, 0xd3, 0x64, 0x7f, 0xad, 0xb2, 0x74, 0xce, 0xb5, 0xb9, 0x07,
    +	0x0e, 0xad, 0xea, 0xdf, 0x17, 0xc1, 0x6a, 0x73, 0xbf, 0x8d, 0x09, 0xf3, 0x06, 0xd4, 0x24, 0xc9,
    +	0x5b, 0x7a, 0x08, 0xf2, 0x54, 0x82, 0x22, 0x4a, 0x21, 0x69, 0x2d, 0x22, 0xe3, 0x98, 0x01, 0x8f,
    +	0x41, 0x89, 0x12, 0xe6, 0x7b, 0x2e, 0x23, 0xaf, 0x6c, 0xb7, 0xa7, 0x2e, 0x88, 0xf0, 0xbb, 0xb7,
    +	0x0b, 0x2f, 0x1a, 0x95, 0x73, 0xe6, 0xea, 0x56, 0x65, 0x3c, 0xaa, 0x95, 0x70, 0xca, 0x0f, 0x4f,
    +	0xb8, 0xc3, 0x1d, 0x90, 0x63, 0xa6, 0xe7, 0x13, 0x35, 0x2b, 0x1a, 0xd3, 0xa2, 0x64, 0x1d, 0x0e,
    +	0x5e, 0x8d, 0x6a, 0xe5, 0xa8, 0x43, 0x01, 0xe0, 0x90, 0x0c, 0xf7, 0x40, 0x85, 0xd9, 0xae, 0x35,
    +	0x38, 0x36, 0x68, 0x74, 0xae, 0x2e, 0x0a, 0x03, 0x55, 0x1a, 0x54, 0x3a, 0xd7, 0xce, 0xf1, 0x94,
    +	0x02, 0xd6, 0x40, 0x6e, 0x48, 0x68, 0x97, 0xa9, 0xb9, 0xf5, 0xec, 0x46, 0xa1, 0x55, 0xe0, 0x75,
    +	0x0f, 0x38, 0x80, 0x43, 0x1c, 0x22, 0x00, 0x58, 0xdf, 0xa3, 0xc1, 0x5b, 0xc3, 0x21, 0x4c, 0xfd,
    +	0x4f, 0xb0, 0xfe, 0xe7, 0xab, 0xda, 0x89, 0x51, 0x9c, 0x62, 0x70, 0xbe, 0x69, 0x04, 0xc4, 0xf2,
    +	0xa8, 0x4d, 0x98, 0xba, 0x94, 0xf0, 0x9f, 0xc5, 0x28, 0x4e, 0x31, 0xa0, 0x03, 0x4a, 0x6c, 0xd0,
    +	0x8d, 0x26, 0xcf, 0xd4, 0xbc, 0x58, 0x86, 0x47, 0x73, 0x96, 0xa1, 0x93, 0x48, 0x92, 0x95, 0x58,
    +	0x95, 0xb9, 0x4b, 0xa9, 0x53, 0x86, 0x27, 0xec, 0xeb, 0xe7, 0x0b, 0xe0, 0xee, 0x0c, 0x3d, 0x7c,
    +	0x0c, 0x8a, 0x29, 0xae, 0x5c, 0x93, 0x15, 0x69, 0x5a, 0x4c, 0x49, 0x70, 0x9a, 0xf7, 0x8f, 0x97,
    +	0x85, 0x81, 0xb2, 0x61, 0x9a, 0xc4, 0x0f, 0x48, 0xef, 0xfd, 0x89, 0x4f, 0x98, 0x9a, 0x15, 0x03,
    +	0xfb, 0xdb, 0x72, 0x6b, 0x32, 0x5e, 0xb9, 0x99, 0x36, 0xc5, 0x93, 0x35, 0x92, 0x2d, 0x59, 0xbc,
    +	0x79, 0x4b, 0xea, 0xbf, 0x15, 0xb0, 0x72, 0xc3, 0xbd, 0x03, 0xef, 0x83, 0x25, 0x79, 0xcf, 0xc8,
    +	0x71, 0xde, 0x91, 0xf5, 0x96, 0x24, 0x15, 0x47, 0xe7, 0xd0, 0x00, 0x85, 0x64, 0x0b, 0xc2, 0x2b,
    +	0x61, 0x6b, 0xce, 0x16, 0x4c, 0x7d, 0xe6, 0xad, 0x65, 0x69, 0x5f, 0xc0, 0xf1, 0xfb, 0x4f, 0x5c,
    +	0xe1, 0x73, 0x50, 0x38, 0xa4, 0x84, 0xf5, 0x5d, 0xc2, 0x98, 0xfc, 0xd8, 0xee, 0x45, 0x82, 0x17,
    +	0xd1, 0xc1, 0xd5, 0xa8, 0x06, 0x63, 0xc3, 0x18, 0xc5, 0x89, 0xb2, 0xf5, 0xf4, 0xf4, 0x52, 0xcb,
    +	0x9c, 0x5d, 0x6a, 0x99, 0x8b, 0x4b, 0x2d, 0xf3, 0x75, 0xac, 0x29, 0xa7, 0x63, 0x4d, 0x39, 0x1b,
    +	0x6b, 0xca, 0xc5, 0x58, 0x53, 0x7e, 0x8e, 0x35, 0xe5, 0xdb, 0x2f, 0x2d, 0xf3, 0xa1, 0x3a, 0xfb,
    +	0x37, 0xf4, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x35, 0x6a, 0x0f, 0x60, 0x07, 0x00, 0x00,
    +}
    +
    +func (m *APIGroupDiscovery) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *APIGroupDiscovery) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *APIGroupDiscovery) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Versions) > 0 {
    +		for iNdEx := len(m.Versions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Versions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *APIGroupDiscoveryList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *APIGroupDiscoveryList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *APIGroupDiscoveryList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *APIResourceDiscovery) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *APIResourceDiscovery) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *APIResourceDiscovery) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Subresources) > 0 {
    +		for iNdEx := len(m.Subresources) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Subresources[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x42
    +		}
    +	}
    +	if len(m.Categories) > 0 {
    +		for iNdEx := len(m.Categories) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Categories[iNdEx])
    +			copy(dAtA[i:], m.Categories[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Categories[iNdEx])))
    +			i--
    +			dAtA[i] = 0x3a
    +		}
    +	}
    +	if len(m.ShortNames) > 0 {
    +		for iNdEx := len(m.ShortNames) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.ShortNames[iNdEx])
    +			copy(dAtA[i:], m.ShortNames[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ShortNames[iNdEx])))
    +			i--
    +			dAtA[i] = 0x32
    +		}
    +	}
    +	if len(m.Verbs) > 0 {
    +		for iNdEx := len(m.Verbs) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Verbs[iNdEx])
    +			copy(dAtA[i:], m.Verbs[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Verbs[iNdEx])))
    +			i--
    +			dAtA[i] = 0x2a
    +		}
    +	}
    +	i -= len(m.SingularResource)
    +	copy(dAtA[i:], m.SingularResource)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.SingularResource)))
    +	i--
    +	dAtA[i] = 0x22
    +	i -= len(m.Scope)
    +	copy(dAtA[i:], m.Scope)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Scope)))
    +	i--
    +	dAtA[i] = 0x1a
    +	if m.ResponseKind != nil {
    +		{
    +			size, err := m.ResponseKind.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.Resource)
    +	copy(dAtA[i:], m.Resource)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *APISubresourceDiscovery) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *APISubresourceDiscovery) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *APISubresourceDiscovery) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Verbs) > 0 {
    +		for iNdEx := len(m.Verbs) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Verbs[iNdEx])
    +			copy(dAtA[i:], m.Verbs[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Verbs[iNdEx])))
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	if len(m.AcceptedTypes) > 0 {
    +		for iNdEx := len(m.AcceptedTypes) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.AcceptedTypes[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if m.ResponseKind != nil {
    +		{
    +			size, err := m.ResponseKind.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.Subresource)
    +	copy(dAtA[i:], m.Subresource)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Subresource)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *APIVersionDiscovery) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *APIVersionDiscovery) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *APIVersionDiscovery) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Freshness)
    +	copy(dAtA[i:], m.Freshness)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Freshness)))
    +	i--
    +	dAtA[i] = 0x1a
    +	if len(m.Resources) > 0 {
    +		for iNdEx := len(m.Resources) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Resources[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.Version)
    +	copy(dAtA[i:], m.Version)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Version)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
    +	}
    +	dAtA[offset] = uint8(v)
    +	return base
    +}
    +func (m *APIGroupDiscovery) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Versions) > 0 {
    +		for _, e := range m.Versions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *APIGroupDiscoveryList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *APIResourceDiscovery) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Resource)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.ResponseKind != nil {
    +		l = m.ResponseKind.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	l = len(m.Scope)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.SingularResource)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Verbs) > 0 {
    +		for _, s := range m.Verbs {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.ShortNames) > 0 {
    +		for _, s := range m.ShortNames {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Categories) > 0 {
    +		for _, s := range m.Categories {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Subresources) > 0 {
    +		for _, e := range m.Subresources {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *APISubresourceDiscovery) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Subresource)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.ResponseKind != nil {
    +		l = m.ResponseKind.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.AcceptedTypes) > 0 {
    +		for _, e := range m.AcceptedTypes {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Verbs) > 0 {
    +		for _, s := range m.Verbs {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *APIVersionDiscovery) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Version)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Resources) > 0 {
    +		for _, e := range m.Resources {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.Freshness)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *APIGroupDiscovery) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForVersions := "[]APIVersionDiscovery{"
    +	for _, f := range this.Versions {
    +		repeatedStringForVersions += strings.Replace(strings.Replace(f.String(), "APIVersionDiscovery", "APIVersionDiscovery", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForVersions += "}"
    +	s := strings.Join([]string{`&APIGroupDiscovery{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Versions:` + repeatedStringForVersions + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *APIGroupDiscoveryList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]APIGroupDiscovery{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "APIGroupDiscovery", "APIGroupDiscovery", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&APIGroupDiscoveryList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *APIResourceDiscovery) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForSubresources := "[]APISubresourceDiscovery{"
    +	for _, f := range this.Subresources {
    +		repeatedStringForSubresources += strings.Replace(strings.Replace(f.String(), "APISubresourceDiscovery", "APISubresourceDiscovery", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSubresources += "}"
    +	s := strings.Join([]string{`&APIResourceDiscovery{`,
    +		`Resource:` + fmt.Sprintf("%v", this.Resource) + `,`,
    +		`ResponseKind:` + strings.Replace(fmt.Sprintf("%v", this.ResponseKind), "GroupVersionKind", "v1.GroupVersionKind", 1) + `,`,
    +		`Scope:` + fmt.Sprintf("%v", this.Scope) + `,`,
    +		`SingularResource:` + fmt.Sprintf("%v", this.SingularResource) + `,`,
    +		`Verbs:` + fmt.Sprintf("%v", this.Verbs) + `,`,
    +		`ShortNames:` + fmt.Sprintf("%v", this.ShortNames) + `,`,
    +		`Categories:` + fmt.Sprintf("%v", this.Categories) + `,`,
    +		`Subresources:` + repeatedStringForSubresources + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *APISubresourceDiscovery) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForAcceptedTypes := "[]GroupVersionKind{"
    +	for _, f := range this.AcceptedTypes {
    +		repeatedStringForAcceptedTypes += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForAcceptedTypes += "}"
    +	s := strings.Join([]string{`&APISubresourceDiscovery{`,
    +		`Subresource:` + fmt.Sprintf("%v", this.Subresource) + `,`,
    +		`ResponseKind:` + strings.Replace(fmt.Sprintf("%v", this.ResponseKind), "GroupVersionKind", "v1.GroupVersionKind", 1) + `,`,
    +		`AcceptedTypes:` + repeatedStringForAcceptedTypes + `,`,
    +		`Verbs:` + fmt.Sprintf("%v", this.Verbs) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *APIVersionDiscovery) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForResources := "[]APIResourceDiscovery{"
    +	for _, f := range this.Resources {
    +		repeatedStringForResources += strings.Replace(strings.Replace(f.String(), "APIResourceDiscovery", "APIResourceDiscovery", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForResources += "}"
    +	s := strings.Join([]string{`&APIVersionDiscovery{`,
    +		`Version:` + fmt.Sprintf("%v", this.Version) + `,`,
    +		`Resources:` + repeatedStringForResources + `,`,
    +		`Freshness:` + fmt.Sprintf("%v", this.Freshness) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *APIGroupDiscovery) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: APIGroupDiscovery: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: APIGroupDiscovery: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Versions", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Versions = append(m.Versions, APIVersionDiscovery{})
    +			if err := m.Versions[len(m.Versions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *APIGroupDiscoveryList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: APIGroupDiscoveryList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: APIGroupDiscoveryList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, APIGroupDiscovery{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *APIResourceDiscovery) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: APIResourceDiscovery: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: APIResourceDiscovery: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Resource = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResponseKind", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ResponseKind == nil {
    +				m.ResponseKind = &v1.GroupVersionKind{}
    +			}
    +			if err := m.ResponseKind.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Scope = ResourceScope(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SingularResource", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.SingularResource = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Verbs", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Verbs = append(m.Verbs, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ShortNames", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ShortNames = append(m.ShortNames, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Categories", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Categories = append(m.Categories, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 8:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Subresources", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Subresources = append(m.Subresources, APISubresourceDiscovery{})
    +			if err := m.Subresources[len(m.Subresources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *APISubresourceDiscovery) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: APISubresourceDiscovery: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: APISubresourceDiscovery: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Subresource", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Subresource = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResponseKind", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ResponseKind == nil {
    +				m.ResponseKind = &v1.GroupVersionKind{}
    +			}
    +			if err := m.ResponseKind.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AcceptedTypes", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.AcceptedTypes = append(m.AcceptedTypes, v1.GroupVersionKind{})
    +			if err := m.AcceptedTypes[len(m.AcceptedTypes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Verbs", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Verbs = append(m.Verbs, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *APIVersionDiscovery) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: APIVersionDiscovery: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: APIVersionDiscovery: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Version = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Resources = append(m.Resources, APIResourceDiscovery{})
    +			if err := m.Resources[len(m.Resources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Freshness", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Freshness = DiscoveryFreshness(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func skipGenerated(dAtA []byte) (n int, err error) {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	depth := 0
    +	for iNdEx < l {
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return 0, ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return 0, io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= (uint64(b) & 0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		wireType := int(wire & 0x7)
    +		switch wireType {
    +		case 0:
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				iNdEx++
    +				if dAtA[iNdEx-1] < 0x80 {
    +					break
    +				}
    +			}
    +		case 1:
    +			iNdEx += 8
    +		case 2:
    +			var length int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				length |= (int(b) & 0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if length < 0 {
    +				return 0, ErrInvalidLengthGenerated
    +			}
    +			iNdEx += length
    +		case 3:
    +			depth++
    +		case 4:
    +			if depth == 0 {
    +				return 0, ErrUnexpectedEndOfGroupGenerated
    +			}
    +			depth--
    +		case 5:
    +			iNdEx += 4
    +		default:
    +			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
    +		}
    +		if iNdEx < 0 {
    +			return 0, ErrInvalidLengthGenerated
    +		}
    +		if depth == 0 {
    +			return iNdEx, nil
    +		}
    +	}
    +	return 0, io.ErrUnexpectedEOF
    +}
    +
    +var (
    +	ErrInvalidLengthGenerated        = fmt.Errorf("proto: negative length found during unmarshaling")
    +	ErrIntOverflowGenerated          = fmt.Errorf("proto: integer overflow")
    +	ErrUnexpectedEndOfGroupGenerated = fmt.Errorf("proto: unexpected end of group")
    +)
    diff --git a/vendor/k8s.io/api/apidiscovery/v2/generated.proto b/vendor/k8s.io/api/apidiscovery/v2/generated.proto
    new file mode 100644
    index 000000000000..62f2d7f2c119
    --- /dev/null
    +++ b/vendor/k8s.io/api/apidiscovery/v2/generated.proto
    @@ -0,0 +1,156 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +
    +// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    +
    +syntax = "proto2";
    +
    +package k8s.io.api.apidiscovery.v2;
    +
    +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    +
    +// Package-wide variables from generator "generated".
    +option go_package = "k8s.io/api/apidiscovery/v2";
    +
    +// APIGroupDiscovery holds information about which resources are being served for all version of the API Group.
    +// It contains a list of APIVersionDiscovery that holds a list of APIResourceDiscovery types served for a version.
    +// Versions are in descending order of preference, with the first version being the preferred entry.
    +message APIGroupDiscovery {
    +  // Standard object's metadata.
    +  // The only field completed will be name. For instance, resourceVersion will be empty.
    +  // name is the name of the API group whose discovery information is presented here.
    +  // name is allowed to be "" to represent the legacy, ungroupified resources.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // versions are the versions supported in this group. They are sorted in descending order of preference,
    +  // with the preferred version being the first entry.
    +  // +listType=map
    +  // +listMapKey=version
    +  repeated APIVersionDiscovery versions = 2;
    +}
    +
    +// APIGroupDiscoveryList is a resource containing a list of APIGroupDiscovery.
    +// This is one of the types able to be returned from the /api and /apis endpoint and contains an aggregated
    +// list of API resources (built-ins, Custom Resource Definitions, resources from aggregated servers)
    +// that a cluster supports.
    +message APIGroupDiscoveryList {
    +  // ResourceVersion will not be set, because this does not have a replayable ordering among multiple apiservers.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // items is the list of groups for discovery. The groups are listed in priority order.
    +  repeated APIGroupDiscovery items = 2;
    +}
    +
    +// APIResourceDiscovery provides information about an API resource for discovery.
    +message APIResourceDiscovery {
    +  // resource is the plural name of the resource.  This is used in the URL path and is the unique identifier
    +  // for this resource across all versions in the API group.
    +  // Resources with non-empty groups are located at /apis///
    +  // Resources with empty groups are located at /api/v1/
    +  optional string resource = 1;
    +
    +  // responseKind describes the group, version, and kind of the serialization schema for the object type this endpoint typically returns.
    +  // APIs may return other objects types at their discretion, such as error conditions, requests for alternate representations, or other operation specific behavior.
    +  // This value will be null or empty if an APIService reports subresources but supports no operations on the parent resource
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind responseKind = 2;
    +
    +  // scope indicates the scope of a resource, either Cluster or Namespaced
    +  optional string scope = 3;
    +
    +  // singularResource is the singular name of the resource.  This allows clients to handle plural and singular opaquely.
    +  // For many clients the singular form of the resource will be more understandable to users reading messages and should be used when integrating the name of the resource into a sentence.
    +  // The command line tool kubectl, for example, allows use of the singular resource name in place of plurals.
    +  // The singular form of a resource should always be an optional element - when in doubt use the canonical resource name.
    +  optional string singularResource = 4;
    +
    +  // verbs is a list of supported API operation types (this includes
    +  // but is not limited to get, list, watch, create, update, patch,
    +  // delete, deletecollection, and proxy).
    +  // +listType=set
    +  repeated string verbs = 5;
    +
    +  // shortNames is a list of suggested short names of the resource.
    +  // +listType=set
    +  repeated string shortNames = 6;
    +
    +  // categories is a list of the grouped resources this resource belongs to (e.g. 'all').
    +  // Clients may use this to simplify acting on multiple resource types at once.
    +  // +listType=set
    +  repeated string categories = 7;
    +
    +  // subresources is a list of subresources provided by this resource. Subresources are located at /apis////name-of-instance/
    +  // +listType=map
    +  // +listMapKey=subresource
    +  repeated APISubresourceDiscovery subresources = 8;
    +}
    +
    +// APISubresourceDiscovery provides information about an API subresource for discovery.
    +message APISubresourceDiscovery {
    +  // subresource is the name of the subresource.  This is used in the URL path and is the unique identifier
    +  // for this resource across all versions.
    +  optional string subresource = 1;
    +
    +  // responseKind describes the group, version, and kind of the serialization schema for the object type this endpoint typically returns.
    +  // Some subresources do not return normal resources, these will have null or empty return types.
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind responseKind = 2;
    +
    +  // acceptedTypes describes the kinds that this endpoint accepts.
    +  // Subresources may accept the standard content types or define
    +  // custom negotiation schemes. The list may not be exhaustive for
    +  // all operations.
    +  // +listType=map
    +  // +listMapKey=group
    +  // +listMapKey=version
    +  // +listMapKey=kind
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind acceptedTypes = 3;
    +
    +  // verbs is a list of supported API operation types (this includes
    +  // but is not limited to get, list, watch, create, update, patch,
    +  // delete, deletecollection, and proxy). Subresources may define
    +  // custom verbs outside the standard Kubernetes verb set. Clients
    +  // should expect the behavior of standard verbs to align with
    +  // Kubernetes interaction conventions.
    +  // +listType=set
    +  repeated string verbs = 4;
    +}
    +
    +// APIVersionDiscovery holds a list of APIResourceDiscovery types that are served for a particular version within an API Group.
    +message APIVersionDiscovery {
    +  // version is the name of the version within a group version.
    +  optional string version = 1;
    +
    +  // resources is a list of APIResourceDiscovery objects for the corresponding group version.
    +  // +listType=map
    +  // +listMapKey=resource
    +  repeated APIResourceDiscovery resources = 2;
    +
    +  // freshness marks whether a group version's discovery document is up to date.
    +  // "Current" indicates the discovery document was recently
    +  // refreshed. "Stale" indicates the discovery document could not
    +  // be retrieved and the returned discovery document may be
    +  // significantly out of date. Clients that require the latest
    +  // version of the discovery information be retrieved before
    +  // performing an operation should not use the aggregated document
    +  optional string freshness = 3;
    +}
    +
    diff --git a/vendor/k8s.io/api/apidiscovery/v2/register.go b/vendor/k8s.io/api/apidiscovery/v2/register.go
    new file mode 100644
    index 000000000000..dd759defce54
    --- /dev/null
    +++ b/vendor/k8s.io/api/apidiscovery/v2/register.go
    @@ -0,0 +1,56 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v2
    +
    +import (
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/runtime/schema"
    +)
    +
    +// GroupName is the group name for this API.
    +const GroupName = "apidiscovery.k8s.io"
    +
    +// SchemeGroupVersion is group version used to register these objects
    +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v2"}
    +
    +// Kind takes an unqualified kind and returns a Group qualified GroupKind
    +func Kind(kind string) schema.GroupKind {
    +	return SchemeGroupVersion.WithKind(kind).GroupKind()
    +}
    +
    +// Resource takes an unqualified resource and returns a Group qualified GroupResource
    +func Resource(resource string) schema.GroupResource {
    +	return SchemeGroupVersion.WithResource(resource).GroupResource()
    +}
    +
    +var (
    +	// SchemeBuilder installs the api group to a scheme
    +	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
    +	// AddToScheme adds api to a scheme
    +	AddToScheme = SchemeBuilder.AddToScheme
    +)
    +
    +// Adds the list of known types to the given scheme.
    +func addKnownTypes(scheme *runtime.Scheme) error {
    +	scheme.AddKnownTypes(SchemeGroupVersion,
    +		&APIGroupDiscoveryList{},
    +		&APIGroupDiscovery{},
    +	)
    +	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
    +	return nil
    +}
    diff --git a/vendor/k8s.io/api/apidiscovery/v2/types.go b/vendor/k8s.io/api/apidiscovery/v2/types.go
    new file mode 100644
    index 000000000000..449679b61d0c
    --- /dev/null
    +++ b/vendor/k8s.io/api/apidiscovery/v2/types.go
    @@ -0,0 +1,157 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v2
    +
    +import (
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +)
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.30
    +
    +// APIGroupDiscoveryList is a resource containing a list of APIGroupDiscovery.
    +// This is one of the types able to be returned from the /api and /apis endpoint and contains an aggregated
    +// list of API resources (built-ins, Custom Resource Definitions, resources from aggregated servers)
    +// that a cluster supports.
    +type APIGroupDiscoveryList struct {
    +	v1.TypeMeta `json:",inline"`
    +	// ResourceVersion will not be set, because this does not have a replayable ordering among multiple apiservers.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	v1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// items is the list of groups for discovery. The groups are listed in priority order.
    +	Items []APIGroupDiscovery `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.30
    +
    +// APIGroupDiscovery holds information about which resources are being served for all version of the API Group.
    +// It contains a list of APIVersionDiscovery that holds a list of APIResourceDiscovery types served for a version.
    +// Versions are in descending order of preference, with the first version being the preferred entry.
    +type APIGroupDiscovery struct {
    +	v1.TypeMeta `json:",inline"`
    +	// Standard object's metadata.
    +	// The only field completed will be name. For instance, resourceVersion will be empty.
    +	// name is the name of the API group whose discovery information is presented here.
    +	// name is allowed to be "" to represent the legacy, ungroupified resources.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// versions are the versions supported in this group. They are sorted in descending order of preference,
    +	// with the preferred version being the first entry.
    +	// +listType=map
    +	// +listMapKey=version
    +	Versions []APIVersionDiscovery `json:"versions,omitempty" protobuf:"bytes,2,rep,name=versions"`
    +}
    +
    +// APIVersionDiscovery holds a list of APIResourceDiscovery types that are served for a particular version within an API Group.
    +type APIVersionDiscovery struct {
    +	// version is the name of the version within a group version.
    +	Version string `json:"version" protobuf:"bytes,1,opt,name=version"`
    +	// resources is a list of APIResourceDiscovery objects for the corresponding group version.
    +	// +listType=map
    +	// +listMapKey=resource
    +	Resources []APIResourceDiscovery `json:"resources,omitempty" protobuf:"bytes,2,rep,name=resources"`
    +	// freshness marks whether a group version's discovery document is up to date.
    +	// "Current" indicates the discovery document was recently
    +	// refreshed. "Stale" indicates the discovery document could not
    +	// be retrieved and the returned discovery document may be
    +	// significantly out of date. Clients that require the latest
    +	// version of the discovery information be retrieved before
    +	// performing an operation should not use the aggregated document
    +	Freshness DiscoveryFreshness `json:"freshness,omitempty" protobuf:"bytes,3,opt,name=freshness"`
    +}
    +
    +// APIResourceDiscovery provides information about an API resource for discovery.
    +type APIResourceDiscovery struct {
    +	// resource is the plural name of the resource.  This is used in the URL path and is the unique identifier
    +	// for this resource across all versions in the API group.
    +	// Resources with non-empty groups are located at /apis///
    +	// Resources with empty groups are located at /api/v1/
    +	Resource string `json:"resource" protobuf:"bytes,1,opt,name=resource"`
    +	// responseKind describes the group, version, and kind of the serialization schema for the object type this endpoint typically returns.
    +	// APIs may return other objects types at their discretion, such as error conditions, requests for alternate representations, or other operation specific behavior.
    +	// This value will be null or empty if an APIService reports subresources but supports no operations on the parent resource
    +	ResponseKind *v1.GroupVersionKind `json:"responseKind,omitempty" protobuf:"bytes,2,opt,name=responseKind"`
    +	// scope indicates the scope of a resource, either Cluster or Namespaced
    +	Scope ResourceScope `json:"scope" protobuf:"bytes,3,opt,name=scope"`
    +	// singularResource is the singular name of the resource.  This allows clients to handle plural and singular opaquely.
    +	// For many clients the singular form of the resource will be more understandable to users reading messages and should be used when integrating the name of the resource into a sentence.
    +	// The command line tool kubectl, for example, allows use of the singular resource name in place of plurals.
    +	// The singular form of a resource should always be an optional element - when in doubt use the canonical resource name.
    +	SingularResource string `json:"singularResource" protobuf:"bytes,4,opt,name=singularResource"`
    +	// verbs is a list of supported API operation types (this includes
    +	// but is not limited to get, list, watch, create, update, patch,
    +	// delete, deletecollection, and proxy).
    +	// +listType=set
    +	Verbs []string `json:"verbs" protobuf:"bytes,5,opt,name=verbs"`
    +	// shortNames is a list of suggested short names of the resource.
    +	// +listType=set
    +	ShortNames []string `json:"shortNames,omitempty" protobuf:"bytes,6,rep,name=shortNames"`
    +	// categories is a list of the grouped resources this resource belongs to (e.g. 'all').
    +	// Clients may use this to simplify acting on multiple resource types at once.
    +	// +listType=set
    +	Categories []string `json:"categories,omitempty" protobuf:"bytes,7,rep,name=categories"`
    +	// subresources is a list of subresources provided by this resource. Subresources are located at /apis////name-of-instance/
    +	// +listType=map
    +	// +listMapKey=subresource
    +	Subresources []APISubresourceDiscovery `json:"subresources,omitempty" protobuf:"bytes,8,rep,name=subresources"`
    +}
    +
    +// ResourceScope is an enum defining the different scopes available to a resource.
    +type ResourceScope string
    +
    +const (
    +	ScopeCluster   ResourceScope = "Cluster"
    +	ScopeNamespace ResourceScope = "Namespaced"
    +)
    +
    +// DiscoveryFreshness is an enum defining whether the Discovery document published by an apiservice is up to date (fresh).
    +type DiscoveryFreshness string
    +
    +const (
    +	DiscoveryFreshnessCurrent DiscoveryFreshness = "Current"
    +	DiscoveryFreshnessStale   DiscoveryFreshness = "Stale"
    +)
    +
    +// APISubresourceDiscovery provides information about an API subresource for discovery.
    +type APISubresourceDiscovery struct {
    +	// subresource is the name of the subresource.  This is used in the URL path and is the unique identifier
    +	// for this resource across all versions.
    +	Subresource string `json:"subresource" protobuf:"bytes,1,opt,name=subresource"`
    +	// responseKind describes the group, version, and kind of the serialization schema for the object type this endpoint typically returns.
    +	// Some subresources do not return normal resources, these will have null or empty return types.
    +	ResponseKind *v1.GroupVersionKind `json:"responseKind,omitempty" protobuf:"bytes,2,opt,name=responseKind"`
    +	// acceptedTypes describes the kinds that this endpoint accepts.
    +	// Subresources may accept the standard content types or define
    +	// custom negotiation schemes. The list may not be exhaustive for
    +	// all operations.
    +	// +listType=map
    +	// +listMapKey=group
    +	// +listMapKey=version
    +	// +listMapKey=kind
    +	AcceptedTypes []v1.GroupVersionKind `json:"acceptedTypes,omitempty" protobuf:"bytes,3,rep,name=acceptedTypes"`
    +	// verbs is a list of supported API operation types (this includes
    +	// but is not limited to get, list, watch, create, update, patch,
    +	// delete, deletecollection, and proxy). Subresources may define
    +	// custom verbs outside the standard Kubernetes verb set. Clients
    +	// should expect the behavior of standard verbs to align with
    +	// Kubernetes interaction conventions.
    +	// +listType=set
    +	Verbs []string `json:"verbs" protobuf:"bytes,4,opt,name=verbs"`
    +}
    diff --git a/vendor/k8s.io/api/apidiscovery/v2/zz_generated.deepcopy.go b/vendor/k8s.io/api/apidiscovery/v2/zz_generated.deepcopy.go
    new file mode 100644
    index 000000000000..029aeeab8c8f
    --- /dev/null
    +++ b/vendor/k8s.io/api/apidiscovery/v2/zz_generated.deepcopy.go
    @@ -0,0 +1,190 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by deepcopy-gen. DO NOT EDIT.
    +
    +package v2
    +
    +import (
    +	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 *APIGroupDiscovery) DeepCopyInto(out *APIGroupDiscovery) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	if in.Versions != nil {
    +		in, out := &in.Versions, &out.Versions
    +		*out = make([]APIVersionDiscovery, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIGroupDiscovery.
    +func (in *APIGroupDiscovery) DeepCopy() *APIGroupDiscovery {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(APIGroupDiscovery)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *APIGroupDiscovery) 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 *APIGroupDiscoveryList) DeepCopyInto(out *APIGroupDiscoveryList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]APIGroupDiscovery, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIGroupDiscoveryList.
    +func (in *APIGroupDiscoveryList) DeepCopy() *APIGroupDiscoveryList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(APIGroupDiscoveryList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *APIGroupDiscoveryList) 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 *APIResourceDiscovery) DeepCopyInto(out *APIResourceDiscovery) {
    +	*out = *in
    +	if in.ResponseKind != nil {
    +		in, out := &in.ResponseKind, &out.ResponseKind
    +		*out = new(v1.GroupVersionKind)
    +		**out = **in
    +	}
    +	if in.Verbs != nil {
    +		in, out := &in.Verbs, &out.Verbs
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.ShortNames != nil {
    +		in, out := &in.ShortNames, &out.ShortNames
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.Categories != nil {
    +		in, out := &in.Categories, &out.Categories
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.Subresources != nil {
    +		in, out := &in.Subresources, &out.Subresources
    +		*out = make([]APISubresourceDiscovery, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIResourceDiscovery.
    +func (in *APIResourceDiscovery) DeepCopy() *APIResourceDiscovery {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(APIResourceDiscovery)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *APISubresourceDiscovery) DeepCopyInto(out *APISubresourceDiscovery) {
    +	*out = *in
    +	if in.ResponseKind != nil {
    +		in, out := &in.ResponseKind, &out.ResponseKind
    +		*out = new(v1.GroupVersionKind)
    +		**out = **in
    +	}
    +	if in.AcceptedTypes != nil {
    +		in, out := &in.AcceptedTypes, &out.AcceptedTypes
    +		*out = make([]v1.GroupVersionKind, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.Verbs != nil {
    +		in, out := &in.Verbs, &out.Verbs
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APISubresourceDiscovery.
    +func (in *APISubresourceDiscovery) DeepCopy() *APISubresourceDiscovery {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(APISubresourceDiscovery)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *APIVersionDiscovery) DeepCopyInto(out *APIVersionDiscovery) {
    +	*out = *in
    +	if in.Resources != nil {
    +		in, out := &in.Resources, &out.Resources
    +		*out = make([]APIResourceDiscovery, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIVersionDiscovery.
    +func (in *APIVersionDiscovery) DeepCopy() *APIVersionDiscovery {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(APIVersionDiscovery)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    diff --git a/vendor/k8s.io/api/apidiscovery/v2/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/apidiscovery/v2/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..b7132c647d05
    --- /dev/null
    +++ b/vendor/k8s.io/api/apidiscovery/v2/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,34 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v2
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *APIGroupDiscovery) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 30
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *APIGroupDiscoveryList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 30
    +}
    diff --git a/vendor/k8s.io/api/apidiscovery/v2beta1/generated.pb.go b/vendor/k8s.io/api/apidiscovery/v2beta1/generated.pb.go
    index ba6eee1b3273..398c5f94f2af 100644
    --- a/vendor/k8s.io/api/apidiscovery/v2beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/apidiscovery/v2beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/apidiscovery/v2beta1/generated.proto
    +// source: k8s.io/api/apidiscovery/v2beta1/generated.proto
     
     package v2beta1
     
    @@ -47,7 +47,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *APIGroupDiscovery) Reset()      { *m = APIGroupDiscovery{} }
     func (*APIGroupDiscovery) ProtoMessage() {}
     func (*APIGroupDiscovery) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_0442b7af4d680cb7, []int{0}
    +	return fileDescriptor_48661e6ba3d554f3, []int{0}
     }
     func (m *APIGroupDiscovery) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +75,7 @@ var xxx_messageInfo_APIGroupDiscovery proto.InternalMessageInfo
     func (m *APIGroupDiscoveryList) Reset()      { *m = APIGroupDiscoveryList{} }
     func (*APIGroupDiscoveryList) ProtoMessage() {}
     func (*APIGroupDiscoveryList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_0442b7af4d680cb7, []int{1}
    +	return fileDescriptor_48661e6ba3d554f3, []int{1}
     }
     func (m *APIGroupDiscoveryList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +103,7 @@ var xxx_messageInfo_APIGroupDiscoveryList proto.InternalMessageInfo
     func (m *APIResourceDiscovery) Reset()      { *m = APIResourceDiscovery{} }
     func (*APIResourceDiscovery) ProtoMessage() {}
     func (*APIResourceDiscovery) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_0442b7af4d680cb7, []int{2}
    +	return fileDescriptor_48661e6ba3d554f3, []int{2}
     }
     func (m *APIResourceDiscovery) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -131,7 +131,7 @@ var xxx_messageInfo_APIResourceDiscovery proto.InternalMessageInfo
     func (m *APISubresourceDiscovery) Reset()      { *m = APISubresourceDiscovery{} }
     func (*APISubresourceDiscovery) ProtoMessage() {}
     func (*APISubresourceDiscovery) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_0442b7af4d680cb7, []int{3}
    +	return fileDescriptor_48661e6ba3d554f3, []int{3}
     }
     func (m *APISubresourceDiscovery) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -159,7 +159,7 @@ var xxx_messageInfo_APISubresourceDiscovery proto.InternalMessageInfo
     func (m *APIVersionDiscovery) Reset()      { *m = APIVersionDiscovery{} }
     func (*APIVersionDiscovery) ProtoMessage() {}
     func (*APIVersionDiscovery) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_0442b7af4d680cb7, []int{4}
    +	return fileDescriptor_48661e6ba3d554f3, []int{4}
     }
     func (m *APIVersionDiscovery) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -193,59 +193,58 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/apidiscovery/v2beta1/generated.proto", fileDescriptor_0442b7af4d680cb7)
    +	proto.RegisterFile("k8s.io/api/apidiscovery/v2beta1/generated.proto", fileDescriptor_48661e6ba3d554f3)
     }
     
    -var fileDescriptor_0442b7af4d680cb7 = []byte{
    -	// 754 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcd, 0x4e, 0xdb, 0x4c,
    -	0x14, 0x8d, 0x09, 0xf9, 0x48, 0x26, 0xc9, 0xf7, 0x85, 0x01, 0xf4, 0x59, 0x2c, 0x6c, 0x94, 0x4d,
    -	0xa9, 0xd4, 0xda, 0x25, 0x02, 0xc4, 0x36, 0x29, 0xb4, 0x8d, 0xfa, 0x87, 0x26, 0x15, 0x95, 0xaa,
    -	0x2e, 0x6a, 0x3b, 0x17, 0xc7, 0x0d, 0xb1, 0xad, 0x99, 0x71, 0x24, 0x76, 0x7d, 0x84, 0xbe, 0x43,
    -	0x5f, 0x86, 0x55, 0xc5, 0xa2, 0x0b, 0xba, 0x89, 0x4a, 0xfa, 0x00, 0xdd, 0xb3, 0xaa, 0xec, 0x8c,
    -	0x7f, 0x42, 0x40, 0x44, 0x5d, 0x74, 0x81, 0x84, 0xcf, 0x3d, 0xe7, 0xdc, 0x7b, 0x2e, 0xd7, 0x06,
    -	0x3d, 0xeb, 0xef, 0x31, 0xcd, 0xf1, 0xf4, 0x7e, 0x60, 0x02, 0x75, 0x81, 0x03, 0xd3, 0x87, 0xe0,
    -	0x76, 0x3d, 0xaa, 0x8b, 0x82, 0xe1, 0x3b, 0xe1, 0x4f, 0xd7, 0x61, 0x96, 0x37, 0x04, 0x7a, 0xaa,
    -	0x0f, 0x1b, 0x26, 0x70, 0x63, 0x4b, 0xb7, 0xc1, 0x05, 0x6a, 0x70, 0xe8, 0x6a, 0x3e, 0xf5, 0xb8,
    -	0x87, 0xd5, 0x89, 0x40, 0x33, 0x7c, 0x47, 0xcb, 0x0a, 0x34, 0x21, 0x58, 0x7f, 0x68, 0x3b, 0xbc,
    -	0x17, 0x98, 0x9a, 0xe5, 0x0d, 0x74, 0xdb, 0xb3, 0x3d, 0x3d, 0xd2, 0x99, 0xc1, 0x71, 0xf4, 0x14,
    -	0x3d, 0x44, 0xbf, 0x4d, 0xfc, 0xd6, 0xb7, 0xd3, 0x01, 0x06, 0x86, 0xd5, 0x73, 0xdc, 0xb0, 0xb9,
    -	0xdf, 0xb7, 0x43, 0x80, 0xe9, 0x03, 0xe0, 0x86, 0x3e, 0x9c, 0x99, 0x62, 0x5d, 0xbf, 0x4d, 0x45,
    -	0x03, 0x97, 0x3b, 0x03, 0x98, 0x11, 0xec, 0xde, 0x25, 0x60, 0x56, 0x0f, 0x06, 0xc6, 0x75, 0x5d,
    -	0xfd, 0xbb, 0x84, 0x96, 0x9b, 0x87, 0xed, 0xa7, 0xd4, 0x0b, 0xfc, 0xfd, 0x38, 0x2b, 0xfe, 0x80,
    -	0x8a, 0xe1, 0x64, 0x5d, 0x83, 0x1b, 0xb2, 0xb4, 0x21, 0x6d, 0x96, 0x1b, 0x8f, 0xb4, 0x74, 0x2f,
    -	0x49, 0x03, 0xcd, 0xef, 0xdb, 0x21, 0xc0, 0xb4, 0x90, 0xad, 0x0d, 0xb7, 0xb4, 0xd7, 0xe6, 0x47,
    -	0xb0, 0xf8, 0x4b, 0xe0, 0x46, 0x0b, 0x9f, 0x8d, 0xd4, 0xdc, 0x78, 0xa4, 0xa2, 0x14, 0x23, 0x89,
    -	0x2b, 0x36, 0x51, 0x71, 0x08, 0x94, 0x39, 0x9e, 0xcb, 0xe4, 0x85, 0x8d, 0xfc, 0x66, 0xb9, 0xb1,
    -	0xad, 0xdd, 0xb1, 0x79, 0xad, 0x79, 0xd8, 0x3e, 0x9a, 0x68, 0x92, 0x49, 0x5b, 0x35, 0xd1, 0xa5,
    -	0x28, 0x2a, 0x8c, 0x24, 0xbe, 0xf5, 0xaf, 0x12, 0x5a, 0x9b, 0xc9, 0xf6, 0xc2, 0x61, 0x1c, 0xbf,
    -	0x9f, 0xc9, 0xa7, 0xcd, 0x97, 0x2f, 0x54, 0x47, 0xe9, 0x92, 0xbe, 0x31, 0x92, 0xc9, 0xf6, 0x16,
    -	0x15, 0x1c, 0x0e, 0x83, 0x38, 0x58, 0x63, 0x9e, 0x60, 0xd3, 0x43, 0xb6, 0xaa, 0xc2, 0xbe, 0xd0,
    -	0x0e, 0x8d, 0xc8, 0xc4, 0xaf, 0xfe, 0x65, 0x11, 0xad, 0x36, 0x0f, 0xdb, 0x04, 0x98, 0x17, 0x50,
    -	0x0b, 0xd2, 0xbf, 0xd7, 0x03, 0x54, 0xa4, 0x02, 0x8c, 0xf2, 0x94, 0xd2, 0xf9, 0x62, 0x32, 0x49,
    -	0x18, 0xf8, 0x04, 0x55, 0x28, 0x30, 0xdf, 0x73, 0x19, 0x3c, 0x77, 0xdc, 0xae, 0xbc, 0x10, 0x6d,
    -	0x60, 0x77, 0xbe, 0x0d, 0x44, 0x83, 0x8a, 0x65, 0x87, 0xea, 0x56, 0x6d, 0x3c, 0x52, 0x2b, 0x24,
    -	0xe3, 0x47, 0xa6, 0xdc, 0xf1, 0x36, 0x2a, 0x30, 0xcb, 0xf3, 0x41, 0xce, 0x47, 0x83, 0x29, 0x71,
    -	0xb2, 0x4e, 0x08, 0x5e, 0x8d, 0xd4, 0x6a, 0x3c, 0x61, 0x04, 0x90, 0x09, 0x19, 0xef, 0xa3, 0x1a,
    -	0x73, 0x5c, 0x3b, 0x38, 0x31, 0x68, 0x5c, 0x97, 0x17, 0x23, 0x03, 0x59, 0x18, 0xd4, 0x3a, 0xd7,
    -	0xea, 0x64, 0x46, 0x81, 0x55, 0x54, 0x18, 0x02, 0x35, 0x99, 0x5c, 0xd8, 0xc8, 0x6f, 0x96, 0x5a,
    -	0xa5, 0xb0, 0xef, 0x51, 0x08, 0x90, 0x09, 0x8e, 0x35, 0x84, 0x58, 0xcf, 0xa3, 0xfc, 0x95, 0x31,
    -	0x00, 0x26, 0xff, 0x13, 0xb1, 0xfe, 0x0d, 0x8f, 0xb6, 0x93, 0xa0, 0x24, 0xc3, 0x08, 0xf9, 0x96,
    -	0xc1, 0xc1, 0xf6, 0xa8, 0x03, 0x4c, 0x5e, 0x4a, 0xf9, 0x8f, 0x13, 0x94, 0x64, 0x18, 0x98, 0xa2,
    -	0x0a, 0x0b, 0xcc, 0x78, 0xf3, 0x4c, 0x2e, 0x46, 0x17, 0xb1, 0x37, 0xcf, 0x45, 0x74, 0x52, 0x5d,
    -	0x7a, 0x17, 0xab, 0x22, 0x7c, 0x25, 0x53, 0x65, 0x64, 0xaa, 0x47, 0xfd, 0xdb, 0x02, 0xfa, 0xff,
    -	0x16, 0x3d, 0xde, 0x41, 0xe5, 0x0c, 0x57, 0xdc, 0xca, 0x8a, 0x30, 0x2d, 0x67, 0x24, 0x24, 0xcb,
    -	0xfb, 0xcb, 0x17, 0xc3, 0x50, 0xd5, 0xb0, 0x2c, 0xf0, 0x39, 0x74, 0xdf, 0x9c, 0xfa, 0xc0, 0xe4,
    -	0x7c, 0xb4, 0xb5, 0x3f, 0x6d, 0xb7, 0x26, 0xe2, 0x55, 0x9b, 0x59, 0x53, 0x32, 0xdd, 0x23, 0x3d,
    -	0x95, 0xc5, 0x9b, 0x4f, 0xa5, 0xfe, 0x4b, 0x42, 0x2b, 0x37, 0x7c, 0x81, 0xf0, 0x7d, 0xb4, 0x24,
    -	0xbe, 0x38, 0x62, 0x9d, 0xff, 0x89, 0x7e, 0x4b, 0x82, 0x4a, 0xe2, 0x3a, 0x3e, 0x46, 0xa5, 0xf4,
    -	0x14, 0x26, 0x1f, 0x87, 0x9d, 0x79, 0x4e, 0x61, 0xe6, 0x85, 0x6f, 0x2d, 0x8b, 0x1e, 0x25, 0x92,
    -	0x1c, 0x41, 0x6a, 0x8d, 0x0f, 0x50, 0xe9, 0x98, 0x02, 0xeb, 0xb9, 0xc0, 0x98, 0x78, 0xed, 0xee,
    -	0xc5, 0x82, 0x27, 0x71, 0xe1, 0x6a, 0xa4, 0xe2, 0xc4, 0x30, 0x41, 0x49, 0xaa, 0x6c, 0x1d, 0x9c,
    -	0x5d, 0x2a, 0xb9, 0xf3, 0x4b, 0x25, 0x77, 0x71, 0xa9, 0xe4, 0x3e, 0x8d, 0x15, 0xe9, 0x6c, 0xac,
    -	0x48, 0xe7, 0x63, 0x45, 0xba, 0x18, 0x2b, 0xd2, 0x8f, 0xb1, 0x22, 0x7d, 0xfe, 0xa9, 0xe4, 0xde,
    -	0xa9, 0x77, 0xfc, 0x87, 0xfd, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x66, 0x3b, 0x84, 0x9c, 0x07,
    -	0x00, 0x00,
    +var fileDescriptor_48661e6ba3d554f3 = []byte{
    +	// 740 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcd, 0x4e, 0xdb, 0x4a,
    +	0x18, 0x8d, 0x09, 0xb9, 0x24, 0x93, 0xe4, 0xde, 0x30, 0x80, 0xae, 0xc5, 0xc2, 0x46, 0xd9, 0x5c,
    +	0xae, 0xd4, 0x8e, 0x4b, 0x04, 0x88, 0x6d, 0x52, 0x68, 0x15, 0xf5, 0x0f, 0x4d, 0x2a, 0x2a, 0x55,
    +	0x5d, 0xd4, 0x71, 0x06, 0xc7, 0x85, 0xd8, 0xd6, 0xcc, 0x24, 0x12, 0xbb, 0x3e, 0x42, 0xdf, 0xa1,
    +	0x2f, 0xc3, 0xaa, 0x62, 0xd1, 0x05, 0xdd, 0x44, 0x25, 0x7d, 0x80, 0xee, 0x59, 0x55, 0x33, 0x1e,
    +	0xff, 0x84, 0x80, 0x88, 0xba, 0xe8, 0x22, 0x52, 0x7c, 0xe6, 0x9c, 0xf3, 0x7d, 0xe7, 0xcb, 0xe7,
    +	0x09, 0xb0, 0x4e, 0xf6, 0x18, 0xf2, 0x02, 0xcb, 0x0e, 0x3d, 0xf1, 0xe9, 0x79, 0xcc, 0x09, 0x46,
    +	0x84, 0x9e, 0x59, 0xa3, 0x46, 0x97, 0x70, 0x7b, 0xcb, 0x72, 0x89, 0x4f, 0xa8, 0xcd, 0x49, 0x0f,
    +	0x85, 0x34, 0xe0, 0x01, 0x34, 0x23, 0x01, 0xb2, 0x43, 0x0f, 0x65, 0x05, 0x48, 0x09, 0xd6, 0x1f,
    +	0xba, 0x1e, 0xef, 0x0f, 0xbb, 0xc8, 0x09, 0x06, 0x96, 0x1b, 0xb8, 0x81, 0x25, 0x75, 0xdd, 0xe1,
    +	0xb1, 0x7c, 0x92, 0x0f, 0xf2, 0x5b, 0xe4, 0xb7, 0xbe, 0x9d, 0x36, 0x30, 0xb0, 0x9d, 0xbe, 0xe7,
    +	0x8b, 0xe2, 0xe1, 0x89, 0x2b, 0x00, 0x66, 0x0d, 0x08, 0xb7, 0xad, 0xd1, 0x4c, 0x17, 0xeb, 0xd6,
    +	0x5d, 0x2a, 0x3a, 0xf4, 0xb9, 0x37, 0x20, 0x33, 0x82, 0xdd, 0xfb, 0x04, 0xcc, 0xe9, 0x93, 0x81,
    +	0x7d, 0x53, 0x57, 0xff, 0xa6, 0x81, 0xe5, 0xe6, 0x61, 0xfb, 0x29, 0x0d, 0x86, 0xe1, 0x7e, 0x9c,
    +	0x15, 0xbe, 0x07, 0x45, 0xd1, 0x59, 0xcf, 0xe6, 0xb6, 0xae, 0x6d, 0x68, 0x9b, 0xe5, 0xc6, 0x23,
    +	0x94, 0xce, 0x25, 0x29, 0x80, 0xc2, 0x13, 0x57, 0x00, 0x0c, 0x09, 0x36, 0x1a, 0x6d, 0xa1, 0x57,
    +	0xdd, 0x0f, 0xc4, 0xe1, 0x2f, 0x08, 0xb7, 0x5b, 0xf0, 0x7c, 0x6c, 0xe6, 0x26, 0x63, 0x13, 0xa4,
    +	0x18, 0x4e, 0x5c, 0x61, 0x17, 0x14, 0x47, 0x84, 0x32, 0x2f, 0xf0, 0x99, 0xbe, 0xb0, 0x91, 0xdf,
    +	0x2c, 0x37, 0xb6, 0xd1, 0x3d, 0x93, 0x47, 0xcd, 0xc3, 0xf6, 0x51, 0xa4, 0x49, 0x3a, 0x6d, 0xd5,
    +	0x54, 0x95, 0xa2, 0x3a, 0x61, 0x38, 0xf1, 0xad, 0x7f, 0xd1, 0xc0, 0xda, 0x4c, 0xb6, 0xe7, 0x1e,
    +	0xe3, 0xf0, 0xdd, 0x4c, 0x3e, 0x34, 0x5f, 0x3e, 0xa1, 0x96, 0xe9, 0x92, 0xba, 0x31, 0x92, 0xc9,
    +	0xf6, 0x06, 0x14, 0x3c, 0x4e, 0x06, 0x71, 0xb0, 0xc6, 0x3c, 0xc1, 0xa6, 0x9b, 0x6c, 0x55, 0x95,
    +	0x7d, 0xa1, 0x2d, 0x8c, 0x70, 0xe4, 0x57, 0xff, 0xbc, 0x08, 0x56, 0x9b, 0x87, 0x6d, 0x4c, 0x58,
    +	0x30, 0xa4, 0x0e, 0x49, 0x7f, 0xaf, 0x07, 0xa0, 0x48, 0x15, 0x28, 0xf3, 0x94, 0xd2, 0xfe, 0x62,
    +	0x32, 0x4e, 0x18, 0xf0, 0x14, 0x54, 0x28, 0x61, 0x61, 0xe0, 0x33, 0xf2, 0xcc, 0xf3, 0x7b, 0xfa,
    +	0x82, 0x9c, 0xc0, 0xee, 0x7c, 0x13, 0x90, 0x8d, 0xaa, 0x61, 0x0b, 0x75, 0xab, 0x36, 0x19, 0x9b,
    +	0x15, 0x9c, 0xf1, 0xc3, 0x53, 0xee, 0x70, 0x1b, 0x14, 0x98, 0x13, 0x84, 0x44, 0xcf, 0xcb, 0xc6,
    +	0x8c, 0x38, 0x59, 0x47, 0x80, 0xd7, 0x63, 0xb3, 0x1a, 0x77, 0x28, 0x01, 0x1c, 0x91, 0xe1, 0x3e,
    +	0xa8, 0x31, 0xcf, 0x77, 0x87, 0xa7, 0x36, 0x8d, 0xcf, 0xf5, 0x45, 0x69, 0xa0, 0x2b, 0x83, 0x5a,
    +	0xe7, 0xc6, 0x39, 0x9e, 0x51, 0x40, 0x13, 0x14, 0x46, 0x84, 0x76, 0x99, 0x5e, 0xd8, 0xc8, 0x6f,
    +	0x96, 0x5a, 0x25, 0x51, 0xf7, 0x48, 0x00, 0x38, 0xc2, 0x21, 0x02, 0x80, 0xf5, 0x03, 0xca, 0x5f,
    +	0xda, 0x03, 0xc2, 0xf4, 0xbf, 0x24, 0xeb, 0x6f, 0xb1, 0xb4, 0x9d, 0x04, 0xc5, 0x19, 0x86, 0xe0,
    +	0x3b, 0x36, 0x27, 0x6e, 0x40, 0x3d, 0xc2, 0xf4, 0xa5, 0x94, 0xff, 0x38, 0x41, 0x71, 0x86, 0x01,
    +	0x29, 0xa8, 0xb0, 0x61, 0x37, 0x9e, 0x3c, 0xd3, 0x8b, 0x72, 0x23, 0xf6, 0xe6, 0xd9, 0x88, 0x4e,
    +	0xaa, 0x4b, 0xf7, 0x62, 0x55, 0x85, 0xaf, 0x64, 0x4e, 0x19, 0x9e, 0xaa, 0x51, 0xff, 0xba, 0x00,
    +	0xfe, 0xbd, 0x43, 0x0f, 0x77, 0x40, 0x39, 0xc3, 0x55, 0xbb, 0xb2, 0xa2, 0x4c, 0xcb, 0x19, 0x09,
    +	0xce, 0xf2, 0xfe, 0xf0, 0xc6, 0x30, 0x50, 0xb5, 0x1d, 0x87, 0x84, 0x9c, 0xf4, 0x5e, 0x9f, 0x85,
    +	0x84, 0xe9, 0x79, 0x39, 0xb5, 0xdf, 0x2d, 0xb7, 0xa6, 0xe2, 0x55, 0x9b, 0x59, 0x53, 0x3c, 0x5d,
    +	0x23, 0x5d, 0x95, 0xc5, 0xdb, 0x57, 0xa5, 0xfe, 0x53, 0x03, 0x2b, 0xb7, 0xdc, 0x40, 0xf0, 0x7f,
    +	0xb0, 0xa4, 0x6e, 0x1c, 0x35, 0xce, 0x7f, 0x54, 0xbd, 0x25, 0x45, 0xc5, 0xf1, 0x39, 0x3c, 0x06,
    +	0xa5, 0x74, 0x15, 0xa2, 0xcb, 0x61, 0x67, 0x9e, 0x55, 0x98, 0x79, 0xe1, 0x5b, 0xcb, 0xaa, 0x46,
    +	0x09, 0x27, 0x4b, 0x90, 0x5a, 0xc3, 0x03, 0x50, 0x3a, 0xa6, 0x84, 0xf5, 0x7d, 0xc2, 0x98, 0x7a,
    +	0xed, 0xfe, 0x8b, 0x05, 0x4f, 0xe2, 0x83, 0xeb, 0xb1, 0x09, 0x13, 0xc3, 0x04, 0xc5, 0xa9, 0xb2,
    +	0x75, 0x70, 0x7e, 0x65, 0xe4, 0x2e, 0xae, 0x8c, 0xdc, 0xe5, 0x95, 0x91, 0xfb, 0x38, 0x31, 0xb4,
    +	0xf3, 0x89, 0xa1, 0x5d, 0x4c, 0x0c, 0xed, 0x72, 0x62, 0x68, 0xdf, 0x27, 0x86, 0xf6, 0xe9, 0x87,
    +	0x91, 0x7b, 0x6b, 0xde, 0xf3, 0x0f, 0xfb, 0x2b, 0x00, 0x00, 0xff, 0xff, 0xe4, 0x85, 0x3b, 0x06,
    +	0x83, 0x07, 0x00, 0x00,
     }
     
     func (m *APIGroupDiscovery) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/apidiscovery/v2beta1/generated.proto b/vendor/k8s.io/api/apidiscovery/v2beta1/generated.proto
    index a09af750ba36..e9ae88072a5c 100644
    --- a/vendor/k8s.io/api/apidiscovery/v2beta1/generated.proto
    +++ b/vendor/k8s.io/api/apidiscovery/v2beta1/generated.proto
    @@ -38,7 +38,7 @@ message APIGroupDiscovery {
       // name is allowed to be "" to represent the legacy, ungroupified resources.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // versions are the versions supported in this group. They are sorted in descending order of preference,
       // with the preferred version being the first entry.
    @@ -55,7 +55,7 @@ message APIGroupDiscoveryList {
       // ResourceVersion will not be set, because this does not have a replayable ordering among multiple apiservers.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of groups for discovery. The groups are listed in priority order.
       repeated APIGroupDiscovery items = 2;
    @@ -72,7 +72,7 @@ message APIResourceDiscovery {
       // responseKind describes the group, version, and kind of the serialization schema for the object type this endpoint typically returns.
       // APIs may return other objects types at their discretion, such as error conditions, requests for alternate representations, or other operation specific behavior.
       // This value will be null or empty if an APIService reports subresources but supports no operations on the parent resource
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind responseKind = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind responseKind = 2;
     
       // scope indicates the scope of a resource, either Cluster or Namespaced
       optional string scope = 3;
    @@ -112,7 +112,7 @@ message APISubresourceDiscovery {
     
       // responseKind describes the group, version, and kind of the serialization schema for the object type this endpoint typically returns.
       // Some subresources do not return normal resources, these will have null or empty return types.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind responseKind = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind responseKind = 2;
     
       // acceptedTypes describes the kinds that this endpoint accepts.
       // Subresources may accept the standard content types or define
    @@ -122,7 +122,7 @@ message APISubresourceDiscovery {
       // +listMapKey=group
       // +listMapKey=version
       // +listMapKey=kind
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind acceptedTypes = 3;
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind acceptedTypes = 3;
     
       // verbs is a list of supported API operation types (this includes
       // but is not limited to get, list, watch, create, update, patch,
    diff --git a/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.pb.go b/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.pb.go
    index 6871da414c3e..b0343ffcfb38 100644
    --- a/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.pb.go
    +++ b/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto
    +// source: k8s.io/api/apiserverinternal/v1alpha1/generated.proto
     
     package v1alpha1
     
    @@ -46,7 +46,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ServerStorageVersion) Reset()      { *m = ServerStorageVersion{} }
     func (*ServerStorageVersion) ProtoMessage() {}
     func (*ServerStorageVersion) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_a3903ff5e3cc7a03, []int{0}
    +	return fileDescriptor_126bcbf538b54729, []int{0}
     }
     func (m *ServerStorageVersion) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -74,7 +74,7 @@ var xxx_messageInfo_ServerStorageVersion proto.InternalMessageInfo
     func (m *StorageVersion) Reset()      { *m = StorageVersion{} }
     func (*StorageVersion) ProtoMessage() {}
     func (*StorageVersion) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_a3903ff5e3cc7a03, []int{1}
    +	return fileDescriptor_126bcbf538b54729, []int{1}
     }
     func (m *StorageVersion) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -102,7 +102,7 @@ var xxx_messageInfo_StorageVersion proto.InternalMessageInfo
     func (m *StorageVersionCondition) Reset()      { *m = StorageVersionCondition{} }
     func (*StorageVersionCondition) ProtoMessage() {}
     func (*StorageVersionCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_a3903ff5e3cc7a03, []int{2}
    +	return fileDescriptor_126bcbf538b54729, []int{2}
     }
     func (m *StorageVersionCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -130,7 +130,7 @@ var xxx_messageInfo_StorageVersionCondition proto.InternalMessageInfo
     func (m *StorageVersionList) Reset()      { *m = StorageVersionList{} }
     func (*StorageVersionList) ProtoMessage() {}
     func (*StorageVersionList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_a3903ff5e3cc7a03, []int{3}
    +	return fileDescriptor_126bcbf538b54729, []int{3}
     }
     func (m *StorageVersionList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -158,7 +158,7 @@ var xxx_messageInfo_StorageVersionList proto.InternalMessageInfo
     func (m *StorageVersionSpec) Reset()      { *m = StorageVersionSpec{} }
     func (*StorageVersionSpec) ProtoMessage() {}
     func (*StorageVersionSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_a3903ff5e3cc7a03, []int{4}
    +	return fileDescriptor_126bcbf538b54729, []int{4}
     }
     func (m *StorageVersionSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -186,7 +186,7 @@ var xxx_messageInfo_StorageVersionSpec proto.InternalMessageInfo
     func (m *StorageVersionStatus) Reset()      { *m = StorageVersionStatus{} }
     func (*StorageVersionStatus) ProtoMessage() {}
     func (*StorageVersionStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_a3903ff5e3cc7a03, []int{5}
    +	return fileDescriptor_126bcbf538b54729, []int{5}
     }
     func (m *StorageVersionStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -221,61 +221,60 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto", fileDescriptor_a3903ff5e3cc7a03)
    +	proto.RegisterFile("k8s.io/api/apiserverinternal/v1alpha1/generated.proto", fileDescriptor_126bcbf538b54729)
     }
     
    -var fileDescriptor_a3903ff5e3cc7a03 = []byte{
    -	// 790 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x41, 0x4f, 0xdb, 0x48,
    -	0x14, 0x8e, 0x49, 0x08, 0x30, 0xd9, 0x4d, 0x96, 0x59, 0x10, 0xd9, 0xac, 0xe4, 0xb0, 0x91, 0x58,
    -	0xb1, 0xbb, 0x5a, 0x7b, 0x89, 0x96, 0xaa, 0xb4, 0x52, 0x2b, 0x0c, 0xa8, 0xa2, 0x85, 0x52, 0x4d,
    -	0x50, 0x0f, 0xb4, 0x87, 0x4e, 0xec, 0xa9, 0xe3, 0x26, 0xf6, 0x58, 0x9e, 0x49, 0x24, 0x2e, 0x55,
    -	0x7f, 0x42, 0xfb, 0x3f, 0x7a, 0xec, 0x8f, 0xe0, 0x54, 0x71, 0x44, 0xaa, 0x14, 0x15, 0xf7, 0x5f,
    -	0x70, 0xaa, 0x66, 0xec, 0x38, 0x38, 0x09, 0x6a, 0xc4, 0x21, 0x52, 0xe6, 0xbd, 0xf7, 0x7d, 0xef,
    -	0xcd, 0x37, 0xdf, 0x8c, 0xc1, 0xd3, 0xf6, 0x5d, 0xa6, 0x39, 0x54, 0x6f, 0x77, 0x9b, 0x24, 0xf0,
    -	0x08, 0x27, 0x4c, 0xef, 0x11, 0xcf, 0xa2, 0x81, 0x1e, 0x27, 0xb0, 0xef, 0x88, 0x1f, 0x23, 0x41,
    -	0x8f, 0x04, 0x8e, 0xc7, 0x49, 0xe0, 0xe1, 0x8e, 0xde, 0xdb, 0xc0, 0x1d, 0xbf, 0x85, 0x37, 0x74,
    -	0x9b, 0x78, 0x24, 0xc0, 0x9c, 0x58, 0x9a, 0x1f, 0x50, 0x4e, 0xe1, 0x5a, 0x04, 0xd3, 0xb0, 0xef,
    -	0x68, 0x63, 0x30, 0x6d, 0x00, 0xab, 0xfc, 0x6b, 0x3b, 0xbc, 0xd5, 0x6d, 0x6a, 0x26, 0x75, 0x75,
    -	0x9b, 0xda, 0x54, 0x97, 0xe8, 0x66, 0xf7, 0xb5, 0x5c, 0xc9, 0x85, 0xfc, 0x17, 0xb1, 0x56, 0xfe,
    -	0x1f, 0x0e, 0xe3, 0x62, 0xb3, 0xe5, 0x78, 0x24, 0x38, 0xd5, 0xfd, 0xb6, 0x2d, 0x27, 0xd3, 0x5d,
    -	0xc2, 0xb1, 0xde, 0x1b, 0x9b, 0xa5, 0xa2, 0xdf, 0x84, 0x0a, 0xba, 0x1e, 0x77, 0x5c, 0x32, 0x06,
    -	0xb8, 0xf3, 0x23, 0x00, 0x33, 0x5b, 0xc4, 0xc5, 0xa3, 0xb8, 0xda, 0x87, 0x19, 0xb0, 0xd4, 0x90,
    -	0x3b, 0x6d, 0x70, 0x1a, 0x60, 0x9b, 0x3c, 0x27, 0x01, 0x73, 0xa8, 0x07, 0x37, 0x41, 0x01, 0xfb,
    -	0x4e, 0x94, 0xda, 0xdf, 0x2d, 0x2b, 0xab, 0xca, 0xfa, 0x82, 0xf1, 0xeb, 0x59, 0xbf, 0x9a, 0x09,
    -	0xfb, 0xd5, 0xc2, 0xf6, 0xb3, 0xfd, 0x41, 0x0a, 0x5d, 0xaf, 0x83, 0xdb, 0xa0, 0x44, 0x3c, 0x93,
    -	0x5a, 0x8e, 0x67, 0xc7, 0x4c, 0xe5, 0x19, 0x09, 0x5d, 0x89, 0xa1, 0xa5, 0xbd, 0x74, 0x1a, 0x8d,
    -	0xd6, 0xc3, 0x1d, 0xb0, 0x68, 0x11, 0x93, 0x5a, 0xb8, 0xd9, 0x19, 0x4c, 0xc3, 0xca, 0xd9, 0xd5,
    -	0xec, 0xfa, 0x82, 0xb1, 0x1c, 0xf6, 0xab, 0x8b, 0xbb, 0xa3, 0x49, 0x34, 0x5e, 0x0f, 0xef, 0x81,
    -	0xa2, 0x3c, 0x40, 0x2b, 0x61, 0xc8, 0x49, 0x06, 0x18, 0xf6, 0xab, 0xc5, 0x46, 0x2a, 0x83, 0x46,
    -	0x2a, 0x6b, 0x9f, 0x66, 0x40, 0x71, 0x44, 0x8d, 0x57, 0x60, 0x5e, 0x1c, 0x95, 0x85, 0x39, 0x96,
    -	0x52, 0x14, 0xea, 0xff, 0x69, 0x43, 0xbb, 0x24, 0x8a, 0x6b, 0x7e, 0xdb, 0x96, 0xde, 0xd1, 0x44,
    -	0xb5, 0xd6, 0xdb, 0xd0, 0x8e, 0x9a, 0x6f, 0x88, 0xc9, 0x0f, 0x09, 0xc7, 0x06, 0x8c, 0x15, 0x00,
    -	0xc3, 0x18, 0x4a, 0x58, 0xe1, 0x0b, 0x90, 0x63, 0x3e, 0x31, 0xa5, 0x5a, 0x85, 0xfa, 0x96, 0x36,
    -	0x95, 0x19, 0xb5, 0xf4, 0x98, 0x0d, 0x9f, 0x98, 0xc6, 0x4f, 0x71, 0x9b, 0x9c, 0x58, 0x21, 0x49,
    -	0x0a, 0x4d, 0x90, 0x67, 0x1c, 0xf3, 0xae, 0xd0, 0x51, 0xd0, 0xdf, 0xbf, 0x1d, 0xbd, 0xa4, 0x30,
    -	0x8a, 0x71, 0x83, 0x7c, 0xb4, 0x46, 0x31, 0x75, 0xed, 0x63, 0x16, 0xac, 0xa4, 0x01, 0x3b, 0xd4,
    -	0xb3, 0x1c, 0x2e, 0xf4, 0x7b, 0x08, 0x72, 0xfc, 0xd4, 0x27, 0xb1, 0x8d, 0xfe, 0x19, 0x8c, 0x78,
    -	0x7c, 0xea, 0x93, 0xab, 0x7e, 0xf5, 0xf7, 0x1b, 0x60, 0x22, 0x8d, 0x24, 0x10, 0x6e, 0x25, 0x3b,
    -	0x88, 0xec, 0xf4, 0x47, 0x7a, 0x88, 0xab, 0x7e, 0xb5, 0x94, 0xc0, 0xd2, 0x73, 0xc1, 0xc7, 0x00,
    -	0xd2, 0x66, 0x74, 0xc4, 0x8f, 0x22, 0xf7, 0x0b, 0x57, 0x0a, 0x21, 0xb2, 0x46, 0x25, 0xa6, 0x81,
    -	0x47, 0x63, 0x15, 0x68, 0x02, 0x0a, 0xf6, 0x00, 0xec, 0x60, 0xc6, 0x8f, 0x03, 0xec, 0xb1, 0x68,
    -	0x44, 0xc7, 0x25, 0xe5, 0x9c, 0x14, 0xf5, 0xef, 0xe9, 0x1c, 0x21, 0x10, 0xc3, 0xbe, 0x07, 0x63,
    -	0x6c, 0x68, 0x42, 0x07, 0xf8, 0x27, 0xc8, 0x07, 0x04, 0x33, 0xea, 0x95, 0x67, 0xe5, 0xf6, 0x93,
    -	0x33, 0x40, 0x32, 0x8a, 0xe2, 0x2c, 0xfc, 0x0b, 0xcc, 0xb9, 0x84, 0x31, 0x6c, 0x93, 0x72, 0x5e,
    -	0x16, 0x96, 0xe2, 0xc2, 0xb9, 0xc3, 0x28, 0x8c, 0x06, 0xf9, 0xda, 0x67, 0x05, 0xc0, 0xb4, 0xee,
    -	0x07, 0x0e, 0xe3, 0xf0, 0xe5, 0x98, 0xd3, 0xb5, 0xe9, 0xf6, 0x25, 0xd0, 0xd2, 0xe7, 0xbf, 0xc4,
    -	0x2d, 0xe7, 0x07, 0x91, 0x6b, 0x2e, 0x3f, 0x01, 0xb3, 0x0e, 0x27, 0xae, 0x38, 0xc5, 0xec, 0x7a,
    -	0xa1, 0xbe, 0x79, 0x2b, 0x1f, 0x1a, 0x3f, 0xc7, 0x1d, 0x66, 0xf7, 0x05, 0x17, 0x8a, 0x28, 0x6b,
    -	0x4b, 0xa3, 0xfb, 0x11, 0x17, 0xa0, 0xf6, 0x45, 0x3c, 0x70, 0x13, 0x6c, 0x0c, 0xdf, 0x82, 0x12,
    -	0x4b, 0xc5, 0x59, 0x59, 0x91, 0x43, 0x4d, 0x7d, 0x39, 0x26, 0x3c, 0x9b, 0xc3, 0x67, 0x2e, 0x1d,
    -	0x67, 0x68, 0xb4, 0x19, 0x3c, 0x02, 0xcb, 0x26, 0x75, 0x5d, 0xea, 0xed, 0x4d, 0x7c, 0x2f, 0x7f,
    -	0x0b, 0xfb, 0xd5, 0xe5, 0x9d, 0x49, 0x05, 0x68, 0x32, 0x0e, 0x06, 0x00, 0x98, 0x83, 0x2b, 0x10,
    -	0x3d, 0x98, 0x85, 0xfa, 0x83, 0x5b, 0x09, 0x9c, 0xdc, 0xa4, 0xe1, 0x9b, 0x95, 0x84, 0x18, 0xba,
    -	0xd6, 0xc5, 0x78, 0x72, 0x76, 0xa9, 0x66, 0xce, 0x2f, 0xd5, 0xcc, 0xc5, 0xa5, 0x9a, 0x79, 0x17,
    -	0xaa, 0xca, 0x59, 0xa8, 0x2a, 0xe7, 0xa1, 0xaa, 0x5c, 0x84, 0xaa, 0xf2, 0x35, 0x54, 0x95, 0xf7,
    -	0xdf, 0xd4, 0xcc, 0xc9, 0xda, 0x54, 0x1f, 0xe4, 0xef, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa0, 0x3a,
    -	0x2e, 0x07, 0xd1, 0x07, 0x00, 0x00,
    +var fileDescriptor_126bcbf538b54729 = []byte{
    +	// 770 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x41, 0x4f, 0x13, 0x41,
    +	0x14, 0xee, 0xd2, 0x52, 0x60, 0xaa, 0xad, 0x8c, 0x10, 0x6a, 0x4d, 0xb6, 0xd8, 0x04, 0x83, 0x1a,
    +	0x77, 0xa5, 0x11, 0x23, 0x9a, 0x68, 0x58, 0x20, 0x06, 0x85, 0x60, 0xa6, 0xc4, 0x03, 0x7a, 0x70,
    +	0xba, 0x1d, 0xb7, 0x2b, 0xdd, 0x9d, 0xcd, 0xce, 0xb4, 0x09, 0x17, 0xe3, 0x4f, 0xd0, 0xff, 0xe1,
    +	0xd1, 0x1f, 0xc1, 0xc9, 0x70, 0x24, 0x31, 0x69, 0x64, 0xfd, 0x17, 0x9c, 0xcc, 0xcc, 0x6e, 0xb7,
    +	0x6c, 0x5b, 0x62, 0xc3, 0xa1, 0x49, 0xe7, 0xbd, 0xf7, 0x7d, 0xef, 0xcd, 0x37, 0xdf, 0xcc, 0x82,
    +	0xd5, 0xc3, 0xa7, 0x4c, 0xb3, 0xa9, 0x8e, 0x3d, 0x5b, 0xfc, 0x18, 0xf1, 0x3b, 0xc4, 0xb7, 0x5d,
    +	0x4e, 0x7c, 0x17, 0xb7, 0xf4, 0xce, 0x0a, 0x6e, 0x79, 0x4d, 0xbc, 0xa2, 0x5b, 0xc4, 0x25, 0x3e,
    +	0xe6, 0xa4, 0xa1, 0x79, 0x3e, 0xe5, 0x14, 0x2e, 0x85, 0x30, 0x0d, 0x7b, 0xb6, 0x36, 0x04, 0xd3,
    +	0x7a, 0xb0, 0xd2, 0x43, 0xcb, 0xe6, 0xcd, 0x76, 0x5d, 0x33, 0xa9, 0xa3, 0x5b, 0xd4, 0xa2, 0xba,
    +	0x44, 0xd7, 0xdb, 0x9f, 0xe4, 0x4a, 0x2e, 0xe4, 0xbf, 0x90, 0xb5, 0xf4, 0xb8, 0x3f, 0x8c, 0x83,
    +	0xcd, 0xa6, 0xed, 0x12, 0xff, 0x48, 0xf7, 0x0e, 0x2d, 0x39, 0x99, 0xee, 0x10, 0x8e, 0xf5, 0xce,
    +	0xd0, 0x2c, 0x25, 0xfd, 0x32, 0x94, 0xdf, 0x76, 0xb9, 0xed, 0x90, 0x21, 0xc0, 0x93, 0xff, 0x01,
    +	0x98, 0xd9, 0x24, 0x0e, 0x1e, 0xc4, 0x55, 0xbe, 0x4f, 0x80, 0xb9, 0x9a, 0xdc, 0x69, 0x8d, 0x53,
    +	0x1f, 0x5b, 0xe4, 0x1d, 0xf1, 0x99, 0x4d, 0x5d, 0xb8, 0x0a, 0x72, 0xd8, 0xb3, 0xc3, 0xd4, 0xf6,
    +	0x66, 0x51, 0x59, 0x54, 0x96, 0x67, 0x8c, 0x9b, 0xc7, 0xdd, 0x72, 0x2a, 0xe8, 0x96, 0x73, 0xeb,
    +	0x6f, 0xb7, 0x7b, 0x29, 0x74, 0xb1, 0x0e, 0xae, 0x83, 0x02, 0x71, 0x4d, 0xda, 0xb0, 0x5d, 0x2b,
    +	0x62, 0x2a, 0x4e, 0x48, 0xe8, 0x42, 0x04, 0x2d, 0x6c, 0x25, 0xd3, 0x68, 0xb0, 0x1e, 0x6e, 0x80,
    +	0xd9, 0x06, 0x31, 0x69, 0x03, 0xd7, 0x5b, 0xbd, 0x69, 0x58, 0x31, 0xbd, 0x98, 0x5e, 0x9e, 0x31,
    +	0xe6, 0x83, 0x6e, 0x79, 0x76, 0x73, 0x30, 0x89, 0x86, 0xeb, 0xe1, 0x33, 0x90, 0x97, 0x07, 0xd8,
    +	0x88, 0x19, 0x32, 0x92, 0x01, 0x06, 0xdd, 0x72, 0xbe, 0x96, 0xc8, 0xa0, 0x81, 0xca, 0xca, 0xcf,
    +	0x09, 0x90, 0x1f, 0x50, 0xe3, 0x23, 0x98, 0x16, 0x47, 0xd5, 0xc0, 0x1c, 0x4b, 0x29, 0x72, 0xd5,
    +	0x47, 0x5a, 0xdf, 0x2e, 0xb1, 0xe2, 0x9a, 0x77, 0x68, 0x49, 0xef, 0x68, 0xa2, 0x5a, 0xeb, 0xac,
    +	0x68, 0x7b, 0xf5, 0xcf, 0xc4, 0xe4, 0xbb, 0x84, 0x63, 0x03, 0x46, 0x0a, 0x80, 0x7e, 0x0c, 0xc5,
    +	0xac, 0xf0, 0x3d, 0xc8, 0x30, 0x8f, 0x98, 0x52, 0xad, 0x5c, 0x75, 0x4d, 0x1b, 0xcb, 0x8c, 0x5a,
    +	0x72, 0xcc, 0x9a, 0x47, 0x4c, 0xe3, 0x5a, 0xd4, 0x26, 0x23, 0x56, 0x48, 0x92, 0x42, 0x13, 0x64,
    +	0x19, 0xc7, 0xbc, 0x2d, 0x74, 0x14, 0xf4, 0xcf, 0xaf, 0x46, 0x2f, 0x29, 0x8c, 0x7c, 0xd4, 0x20,
    +	0x1b, 0xae, 0x51, 0x44, 0x5d, 0xf9, 0x91, 0x06, 0x0b, 0x49, 0xc0, 0x06, 0x75, 0x1b, 0x36, 0x17,
    +	0xfa, 0xbd, 0x04, 0x19, 0x7e, 0xe4, 0x91, 0xc8, 0x46, 0x0f, 0x7a, 0x23, 0xee, 0x1f, 0x79, 0xe4,
    +	0xbc, 0x5b, 0xbe, 0x7d, 0x09, 0x4c, 0xa4, 0x91, 0x04, 0xc2, 0xb5, 0x78, 0x07, 0xa1, 0x9d, 0xee,
    +	0x24, 0x87, 0x38, 0xef, 0x96, 0x0b, 0x31, 0x2c, 0x39, 0x17, 0x7c, 0x0d, 0x20, 0xad, 0x87, 0x47,
    +	0xfc, 0x2a, 0x74, 0xbf, 0x70, 0xa5, 0x10, 0x22, 0x6d, 0x94, 0x22, 0x1a, 0xb8, 0x37, 0x54, 0x81,
    +	0x46, 0xa0, 0x60, 0x07, 0xc0, 0x16, 0x66, 0x7c, 0xdf, 0xc7, 0x2e, 0x0b, 0x47, 0xb4, 0x1d, 0x52,
    +	0xcc, 0x48, 0x51, 0xef, 0x8f, 0xe7, 0x08, 0x81, 0xe8, 0xf7, 0xdd, 0x19, 0x62, 0x43, 0x23, 0x3a,
    +	0xc0, 0xbb, 0x20, 0xeb, 0x13, 0xcc, 0xa8, 0x5b, 0x9c, 0x94, 0xdb, 0x8f, 0xcf, 0x00, 0xc9, 0x28,
    +	0x8a, 0xb2, 0xf0, 0x1e, 0x98, 0x72, 0x08, 0x63, 0xd8, 0x22, 0xc5, 0xac, 0x2c, 0x2c, 0x44, 0x85,
    +	0x53, 0xbb, 0x61, 0x18, 0xf5, 0xf2, 0x95, 0x5f, 0x0a, 0x80, 0x49, 0xdd, 0x77, 0x6c, 0xc6, 0xe1,
    +	0x87, 0x21, 0xa7, 0x6b, 0xe3, 0xed, 0x4b, 0xa0, 0xa5, 0xcf, 0x6f, 0x44, 0x2d, 0xa7, 0x7b, 0x91,
    +	0x0b, 0x2e, 0x3f, 0x00, 0x93, 0x36, 0x27, 0x8e, 0x38, 0xc5, 0xf4, 0x72, 0xae, 0xba, 0x7a, 0x25,
    +	0x1f, 0x1a, 0xd7, 0xa3, 0x0e, 0x93, 0xdb, 0x82, 0x0b, 0x85, 0x94, 0x95, 0xb9, 0xc1, 0xfd, 0x88,
    +	0x0b, 0x50, 0xf9, 0x2d, 0x1e, 0xb8, 0x11, 0x36, 0x86, 0x5f, 0x40, 0x81, 0x25, 0xe2, 0xac, 0xa8,
    +	0xc8, 0xa1, 0xc6, 0xbe, 0x1c, 0x23, 0x9e, 0xcd, 0xfe, 0x33, 0x97, 0x8c, 0x33, 0x34, 0xd8, 0x0c,
    +	0xee, 0x81, 0x79, 0x93, 0x3a, 0x0e, 0x75, 0xb7, 0x46, 0xbe, 0x97, 0xb7, 0x82, 0x6e, 0x79, 0x7e,
    +	0x63, 0x54, 0x01, 0x1a, 0x8d, 0x83, 0x3e, 0x00, 0x66, 0xef, 0x0a, 0x84, 0x0f, 0x66, 0xae, 0xfa,
    +	0xe2, 0x4a, 0x02, 0xc7, 0x37, 0xa9, 0xff, 0x66, 0xc5, 0x21, 0x86, 0x2e, 0x74, 0x31, 0xde, 0x1c,
    +	0x9f, 0xa9, 0xa9, 0x93, 0x33, 0x35, 0x75, 0x7a, 0xa6, 0xa6, 0xbe, 0x06, 0xaa, 0x72, 0x1c, 0xa8,
    +	0xca, 0x49, 0xa0, 0x2a, 0xa7, 0x81, 0xaa, 0xfc, 0x09, 0x54, 0xe5, 0xdb, 0x5f, 0x35, 0x75, 0xb0,
    +	0x34, 0xd6, 0x07, 0xf9, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x79, 0x04, 0x7d, 0x78, 0xb8, 0x07,
    +	0x00, 0x00,
     }
     
     func (m *ServerStorageVersion) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto b/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto
    index 6e6bab52182b..8a77860720f0 100644
    --- a/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto
    +++ b/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto
    @@ -52,7 +52,7 @@ message ServerStorageVersion {
     // Storage version of a specific resource.
     message StorageVersion {
       // The name is ..
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec is an empty spec. It is here to comply with Kubernetes API style.
       optional StorageVersionSpec spec = 2;
    @@ -77,8 +77,7 @@ message StorageVersionCondition {
       optional int64 observedGeneration = 3;
     
       // Last time the condition transitioned from one status to another.
    -  // +required
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
     
       // The reason for the condition's last transition.
       // +required
    @@ -94,7 +93,7 @@ message StorageVersionList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items holds a list of StorageVersion
       repeated StorageVersion items = 2;
    diff --git a/vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go b/vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go
    index 0ffcf95f0667..31a419abf130 100644
    --- a/vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go
    +++ b/vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go
    @@ -111,7 +111,6 @@ type StorageVersionCondition struct {
     	// +optional
     	ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"`
     	// Last time the condition transitioned from one status to another.
    -	// +required
     	LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"`
     	// The reason for the condition's last transition.
     	// +required
    diff --git a/vendor/k8s.io/api/apps/v1/doc.go b/vendor/k8s.io/api/apps/v1/doc.go
    index 61dc97bde523..d189e860f2cc 100644
    --- a/vendor/k8s.io/api/apps/v1/doc.go
    +++ b/vendor/k8s.io/api/apps/v1/doc.go
    @@ -17,5 +17,6 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     
     package v1 // import "k8s.io/api/apps/v1"
    diff --git a/vendor/k8s.io/api/apps/v1/generated.pb.go b/vendor/k8s.io/api/apps/v1/generated.pb.go
    index 84a7af5994f8..ea62a099fed7 100644
    --- a/vendor/k8s.io/api/apps/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/apps/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/apps/v1/generated.proto
    +// source: k8s.io/api/apps/v1/generated.proto
     
     package v1
     
    @@ -51,7 +51,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ControllerRevision) Reset()      { *m = ControllerRevision{} }
     func (*ControllerRevision) ProtoMessage() {}
     func (*ControllerRevision) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{0}
    +	return fileDescriptor_5b781835628d5338, []int{0}
     }
     func (m *ControllerRevision) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -79,7 +79,7 @@ var xxx_messageInfo_ControllerRevision proto.InternalMessageInfo
     func (m *ControllerRevisionList) Reset()      { *m = ControllerRevisionList{} }
     func (*ControllerRevisionList) ProtoMessage() {}
     func (*ControllerRevisionList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{1}
    +	return fileDescriptor_5b781835628d5338, []int{1}
     }
     func (m *ControllerRevisionList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,7 +107,7 @@ var xxx_messageInfo_ControllerRevisionList proto.InternalMessageInfo
     func (m *DaemonSet) Reset()      { *m = DaemonSet{} }
     func (*DaemonSet) ProtoMessage() {}
     func (*DaemonSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{2}
    +	return fileDescriptor_5b781835628d5338, []int{2}
     }
     func (m *DaemonSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,7 +135,7 @@ var xxx_messageInfo_DaemonSet proto.InternalMessageInfo
     func (m *DaemonSetCondition) Reset()      { *m = DaemonSetCondition{} }
     func (*DaemonSetCondition) ProtoMessage() {}
     func (*DaemonSetCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{3}
    +	return fileDescriptor_5b781835628d5338, []int{3}
     }
     func (m *DaemonSetCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -163,7 +163,7 @@ var xxx_messageInfo_DaemonSetCondition proto.InternalMessageInfo
     func (m *DaemonSetList) Reset()      { *m = DaemonSetList{} }
     func (*DaemonSetList) ProtoMessage() {}
     func (*DaemonSetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{4}
    +	return fileDescriptor_5b781835628d5338, []int{4}
     }
     func (m *DaemonSetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -191,7 +191,7 @@ var xxx_messageInfo_DaemonSetList proto.InternalMessageInfo
     func (m *DaemonSetSpec) Reset()      { *m = DaemonSetSpec{} }
     func (*DaemonSetSpec) ProtoMessage() {}
     func (*DaemonSetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{5}
    +	return fileDescriptor_5b781835628d5338, []int{5}
     }
     func (m *DaemonSetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -219,7 +219,7 @@ var xxx_messageInfo_DaemonSetSpec proto.InternalMessageInfo
     func (m *DaemonSetStatus) Reset()      { *m = DaemonSetStatus{} }
     func (*DaemonSetStatus) ProtoMessage() {}
     func (*DaemonSetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{6}
    +	return fileDescriptor_5b781835628d5338, []int{6}
     }
     func (m *DaemonSetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -247,7 +247,7 @@ var xxx_messageInfo_DaemonSetStatus proto.InternalMessageInfo
     func (m *DaemonSetUpdateStrategy) Reset()      { *m = DaemonSetUpdateStrategy{} }
     func (*DaemonSetUpdateStrategy) ProtoMessage() {}
     func (*DaemonSetUpdateStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{7}
    +	return fileDescriptor_5b781835628d5338, []int{7}
     }
     func (m *DaemonSetUpdateStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -275,7 +275,7 @@ var xxx_messageInfo_DaemonSetUpdateStrategy proto.InternalMessageInfo
     func (m *Deployment) Reset()      { *m = Deployment{} }
     func (*Deployment) ProtoMessage() {}
     func (*Deployment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{8}
    +	return fileDescriptor_5b781835628d5338, []int{8}
     }
     func (m *Deployment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -303,7 +303,7 @@ var xxx_messageInfo_Deployment proto.InternalMessageInfo
     func (m *DeploymentCondition) Reset()      { *m = DeploymentCondition{} }
     func (*DeploymentCondition) ProtoMessage() {}
     func (*DeploymentCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{9}
    +	return fileDescriptor_5b781835628d5338, []int{9}
     }
     func (m *DeploymentCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -331,7 +331,7 @@ var xxx_messageInfo_DeploymentCondition proto.InternalMessageInfo
     func (m *DeploymentList) Reset()      { *m = DeploymentList{} }
     func (*DeploymentList) ProtoMessage() {}
     func (*DeploymentList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{10}
    +	return fileDescriptor_5b781835628d5338, []int{10}
     }
     func (m *DeploymentList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -359,7 +359,7 @@ var xxx_messageInfo_DeploymentList proto.InternalMessageInfo
     func (m *DeploymentSpec) Reset()      { *m = DeploymentSpec{} }
     func (*DeploymentSpec) ProtoMessage() {}
     func (*DeploymentSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{11}
    +	return fileDescriptor_5b781835628d5338, []int{11}
     }
     func (m *DeploymentSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -387,7 +387,7 @@ var xxx_messageInfo_DeploymentSpec proto.InternalMessageInfo
     func (m *DeploymentStatus) Reset()      { *m = DeploymentStatus{} }
     func (*DeploymentStatus) ProtoMessage() {}
     func (*DeploymentStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{12}
    +	return fileDescriptor_5b781835628d5338, []int{12}
     }
     func (m *DeploymentStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -415,7 +415,7 @@ var xxx_messageInfo_DeploymentStatus proto.InternalMessageInfo
     func (m *DeploymentStrategy) Reset()      { *m = DeploymentStrategy{} }
     func (*DeploymentStrategy) ProtoMessage() {}
     func (*DeploymentStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{13}
    +	return fileDescriptor_5b781835628d5338, []int{13}
     }
     func (m *DeploymentStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -443,7 +443,7 @@ var xxx_messageInfo_DeploymentStrategy proto.InternalMessageInfo
     func (m *ReplicaSet) Reset()      { *m = ReplicaSet{} }
     func (*ReplicaSet) ProtoMessage() {}
     func (*ReplicaSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{14}
    +	return fileDescriptor_5b781835628d5338, []int{14}
     }
     func (m *ReplicaSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -471,7 +471,7 @@ var xxx_messageInfo_ReplicaSet proto.InternalMessageInfo
     func (m *ReplicaSetCondition) Reset()      { *m = ReplicaSetCondition{} }
     func (*ReplicaSetCondition) ProtoMessage() {}
     func (*ReplicaSetCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{15}
    +	return fileDescriptor_5b781835628d5338, []int{15}
     }
     func (m *ReplicaSetCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -499,7 +499,7 @@ var xxx_messageInfo_ReplicaSetCondition proto.InternalMessageInfo
     func (m *ReplicaSetList) Reset()      { *m = ReplicaSetList{} }
     func (*ReplicaSetList) ProtoMessage() {}
     func (*ReplicaSetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{16}
    +	return fileDescriptor_5b781835628d5338, []int{16}
     }
     func (m *ReplicaSetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -527,7 +527,7 @@ var xxx_messageInfo_ReplicaSetList proto.InternalMessageInfo
     func (m *ReplicaSetSpec) Reset()      { *m = ReplicaSetSpec{} }
     func (*ReplicaSetSpec) ProtoMessage() {}
     func (*ReplicaSetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{17}
    +	return fileDescriptor_5b781835628d5338, []int{17}
     }
     func (m *ReplicaSetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -555,7 +555,7 @@ var xxx_messageInfo_ReplicaSetSpec proto.InternalMessageInfo
     func (m *ReplicaSetStatus) Reset()      { *m = ReplicaSetStatus{} }
     func (*ReplicaSetStatus) ProtoMessage() {}
     func (*ReplicaSetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{18}
    +	return fileDescriptor_5b781835628d5338, []int{18}
     }
     func (m *ReplicaSetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -583,7 +583,7 @@ var xxx_messageInfo_ReplicaSetStatus proto.InternalMessageInfo
     func (m *RollingUpdateDaemonSet) Reset()      { *m = RollingUpdateDaemonSet{} }
     func (*RollingUpdateDaemonSet) ProtoMessage() {}
     func (*RollingUpdateDaemonSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{19}
    +	return fileDescriptor_5b781835628d5338, []int{19}
     }
     func (m *RollingUpdateDaemonSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -611,7 +611,7 @@ var xxx_messageInfo_RollingUpdateDaemonSet proto.InternalMessageInfo
     func (m *RollingUpdateDeployment) Reset()      { *m = RollingUpdateDeployment{} }
     func (*RollingUpdateDeployment) ProtoMessage() {}
     func (*RollingUpdateDeployment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{20}
    +	return fileDescriptor_5b781835628d5338, []int{20}
     }
     func (m *RollingUpdateDeployment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -639,7 +639,7 @@ var xxx_messageInfo_RollingUpdateDeployment proto.InternalMessageInfo
     func (m *RollingUpdateStatefulSetStrategy) Reset()      { *m = RollingUpdateStatefulSetStrategy{} }
     func (*RollingUpdateStatefulSetStrategy) ProtoMessage() {}
     func (*RollingUpdateStatefulSetStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{21}
    +	return fileDescriptor_5b781835628d5338, []int{21}
     }
     func (m *RollingUpdateStatefulSetStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -667,7 +667,7 @@ var xxx_messageInfo_RollingUpdateStatefulSetStrategy proto.InternalMessageInfo
     func (m *StatefulSet) Reset()      { *m = StatefulSet{} }
     func (*StatefulSet) ProtoMessage() {}
     func (*StatefulSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{22}
    +	return fileDescriptor_5b781835628d5338, []int{22}
     }
     func (m *StatefulSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -695,7 +695,7 @@ var xxx_messageInfo_StatefulSet proto.InternalMessageInfo
     func (m *StatefulSetCondition) Reset()      { *m = StatefulSetCondition{} }
     func (*StatefulSetCondition) ProtoMessage() {}
     func (*StatefulSetCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{23}
    +	return fileDescriptor_5b781835628d5338, []int{23}
     }
     func (m *StatefulSetCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -723,7 +723,7 @@ var xxx_messageInfo_StatefulSetCondition proto.InternalMessageInfo
     func (m *StatefulSetList) Reset()      { *m = StatefulSetList{} }
     func (*StatefulSetList) ProtoMessage() {}
     func (*StatefulSetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{24}
    +	return fileDescriptor_5b781835628d5338, []int{24}
     }
     func (m *StatefulSetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -751,7 +751,7 @@ var xxx_messageInfo_StatefulSetList proto.InternalMessageInfo
     func (m *StatefulSetOrdinals) Reset()      { *m = StatefulSetOrdinals{} }
     func (*StatefulSetOrdinals) ProtoMessage() {}
     func (*StatefulSetOrdinals) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{25}
    +	return fileDescriptor_5b781835628d5338, []int{25}
     }
     func (m *StatefulSetOrdinals) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -781,7 +781,7 @@ func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Reset() {
     }
     func (*StatefulSetPersistentVolumeClaimRetentionPolicy) ProtoMessage() {}
     func (*StatefulSetPersistentVolumeClaimRetentionPolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{26}
    +	return fileDescriptor_5b781835628d5338, []int{26}
     }
     func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -809,7 +809,7 @@ var xxx_messageInfo_StatefulSetPersistentVolumeClaimRetentionPolicy proto.Intern
     func (m *StatefulSetSpec) Reset()      { *m = StatefulSetSpec{} }
     func (*StatefulSetSpec) ProtoMessage() {}
     func (*StatefulSetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{27}
    +	return fileDescriptor_5b781835628d5338, []int{27}
     }
     func (m *StatefulSetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -837,7 +837,7 @@ var xxx_messageInfo_StatefulSetSpec proto.InternalMessageInfo
     func (m *StatefulSetStatus) Reset()      { *m = StatefulSetStatus{} }
     func (*StatefulSetStatus) ProtoMessage() {}
     func (*StatefulSetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{28}
    +	return fileDescriptor_5b781835628d5338, []int{28}
     }
     func (m *StatefulSetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -865,7 +865,7 @@ var xxx_messageInfo_StatefulSetStatus proto.InternalMessageInfo
     func (m *StatefulSetUpdateStrategy) Reset()      { *m = StatefulSetUpdateStrategy{} }
     func (*StatefulSetUpdateStrategy) ProtoMessage() {}
     func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e1014cab6f31e43b, []int{29}
    +	return fileDescriptor_5b781835628d5338, []int{29}
     }
     func (m *StatefulSetUpdateStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -924,150 +924,149 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/apps/v1/generated.proto", fileDescriptor_e1014cab6f31e43b)
    +	proto.RegisterFile("k8s.io/api/apps/v1/generated.proto", fileDescriptor_5b781835628d5338)
     }
     
    -var fileDescriptor_e1014cab6f31e43b = []byte{
    -	// 2211 bytes of a gzipped FileDescriptorProto
    +var fileDescriptor_5b781835628d5338 = []byte{
    +	// 2194 bytes of a gzipped FileDescriptorProto
     	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0xc7,
     	0x15, 0xd7, 0xf2, 0x43, 0xa2, 0x86, 0x96, 0x64, 0x8f, 0x54, 0x89, 0xb1, 0x1b, 0xd2, 0xdd, 0xb8,
    -	0xb6, 0x12, 0xc7, 0x64, 0xed, 0x38, 0x41, 0x60, 0x17, 0x09, 0x44, 0x2a, 0x4d, 0xd3, 0xe8, 0xab,
    -	0x43, 0xcb, 0x01, 0xdc, 0xb4, 0xe8, 0x88, 0x1c, 0x53, 0x1b, 0xed, 0x17, 0x76, 0x87, 0x8a, 0x89,
    -	0x5e, 0x8a, 0x02, 0xbd, 0xf5, 0xd0, 0xbf, 0xa1, 0xff, 0x40, 0x51, 0x14, 0xcd, 0x2d, 0x08, 0x82,
    -	0x5e, 0x7c, 0x29, 0x10, 0xf4, 0xd2, 0x9c, 0x88, 0x9a, 0x39, 0x15, 0x45, 0x6f, 0xed, 0xc5, 0x97,
    -	0x16, 0x33, 0x3b, 0xfb, 0x3d, 0x2b, 0x52, 0x72, 0xac, 0x34, 0x81, 0x6f, 0xdc, 0x99, 0xdf, 0xfb,
    -	0xed, 0x9b, 0x99, 0xf7, 0xe6, 0xfd, 0x66, 0x96, 0xe0, 0xf6, 0xc1, 0xeb, 0x6e, 0x5d, 0xb3, 0x1a,
    -	0x07, 0xfd, 0x3d, 0xe2, 0x98, 0x84, 0x12, 0xb7, 0x71, 0x48, 0xcc, 0xae, 0xe5, 0x34, 0x44, 0x07,
    -	0xb6, 0xb5, 0x06, 0xb6, 0x6d, 0xb7, 0x71, 0x78, 0xbd, 0xd1, 0x23, 0x26, 0x71, 0x30, 0x25, 0xdd,
    -	0xba, 0xed, 0x58, 0xd4, 0x82, 0xd0, 0xc3, 0xd4, 0xb1, 0xad, 0xd5, 0x19, 0xa6, 0x7e, 0x78, 0xfd,
    -	0xfc, 0xb5, 0x9e, 0x46, 0xf7, 0xfb, 0x7b, 0xf5, 0x8e, 0x65, 0x34, 0x7a, 0x56, 0xcf, 0x6a, 0x70,
    -	0xe8, 0x5e, 0xff, 0x3e, 0x7f, 0xe2, 0x0f, 0xfc, 0x97, 0x47, 0x71, 0x5e, 0x8d, 0xbc, 0xa6, 0x63,
    -	0x39, 0x44, 0xf2, 0x9a, 0xf3, 0x37, 0x43, 0x8c, 0x81, 0x3b, 0xfb, 0x9a, 0x49, 0x9c, 0x41, 0xc3,
    -	0x3e, 0xe8, 0xb1, 0x06, 0xb7, 0x61, 0x10, 0x8a, 0x65, 0x56, 0x8d, 0x2c, 0x2b, 0xa7, 0x6f, 0x52,
    -	0xcd, 0x20, 0x29, 0x83, 0xd7, 0xc6, 0x19, 0xb8, 0x9d, 0x7d, 0x62, 0xe0, 0x94, 0xdd, 0x2b, 0x59,
    -	0x76, 0x7d, 0xaa, 0xe9, 0x0d, 0xcd, 0xa4, 0x2e, 0x75, 0x92, 0x46, 0xea, 0x7f, 0x14, 0x00, 0x5b,
    -	0x96, 0x49, 0x1d, 0x4b, 0xd7, 0x89, 0x83, 0xc8, 0xa1, 0xe6, 0x6a, 0x96, 0x09, 0x7f, 0x0e, 0x4a,
    -	0x6c, 0x3c, 0x5d, 0x4c, 0x71, 0x45, 0xb9, 0xa8, 0xac, 0x96, 0x6f, 0x7c, 0xaf, 0x1e, 0x4e, 0x72,
    -	0x40, 0x5f, 0xb7, 0x0f, 0x7a, 0xac, 0xc1, 0xad, 0x33, 0x74, 0xfd, 0xf0, 0x7a, 0x7d, 0x7b, 0xef,
    -	0x03, 0xd2, 0xa1, 0x9b, 0x84, 0xe2, 0x26, 0x7c, 0x38, 0xac, 0x4d, 0x8d, 0x86, 0x35, 0x10, 0xb6,
    -	0xa1, 0x80, 0x15, 0x6e, 0x83, 0x02, 0x67, 0xcf, 0x71, 0xf6, 0x6b, 0x99, 0xec, 0x62, 0xd0, 0x75,
    -	0x84, 0x3f, 0x7c, 0xeb, 0x01, 0x25, 0x26, 0x73, 0xaf, 0x79, 0x46, 0x50, 0x17, 0xd6, 0x31, 0xc5,
    -	0x88, 0x13, 0xc1, 0x97, 0x41, 0xc9, 0x11, 0xee, 0x57, 0xf2, 0x17, 0x95, 0xd5, 0x7c, 0xf3, 0xac,
    -	0x40, 0x95, 0xfc, 0x61, 0xa1, 0x00, 0xa1, 0xfe, 0x59, 0x01, 0xcb, 0xe9, 0x71, 0x6f, 0x68, 0x2e,
    -	0x85, 0xef, 0xa7, 0xc6, 0x5e, 0x9f, 0x6c, 0xec, 0xcc, 0x9a, 0x8f, 0x3c, 0x78, 0xb1, 0xdf, 0x12,
    -	0x19, 0xf7, 0xbb, 0xa0, 0xa8, 0x51, 0x62, 0xb8, 0x95, 0xdc, 0xc5, 0xfc, 0x6a, 0xf9, 0xc6, 0xe5,
    -	0x7a, 0x3a, 0x76, 0xeb, 0x69, 0xc7, 0x9a, 0x73, 0x82, 0xb2, 0xf8, 0x0e, 0x33, 0x46, 0x1e, 0x87,
    -	0xfa, 0x5f, 0x05, 0xcc, 0xae, 0x63, 0x62, 0x58, 0x66, 0x9b, 0xd0, 0x53, 0x58, 0xb4, 0x16, 0x28,
    -	0xb8, 0x36, 0xe9, 0x88, 0x45, 0xfb, 0x8e, 0xcc, 0xf7, 0xc0, 0x9d, 0xb6, 0x4d, 0x3a, 0xe1, 0x42,
    -	0xb1, 0x27, 0xc4, 0x8d, 0xe1, 0xbb, 0x60, 0xda, 0xa5, 0x98, 0xf6, 0x5d, 0xbe, 0x4c, 0xe5, 0x1b,
    -	0x2f, 0x1c, 0x4d, 0xc3, 0xa1, 0xcd, 0x79, 0x41, 0x34, 0xed, 0x3d, 0x23, 0x41, 0xa1, 0xfe, 0x23,
    -	0x07, 0x60, 0x80, 0x6d, 0x59, 0x66, 0x57, 0xa3, 0x2c, 0x7e, 0x6f, 0x81, 0x02, 0x1d, 0xd8, 0x84,
    -	0x4f, 0xc3, 0x6c, 0xf3, 0xb2, 0xef, 0xc5, 0x9d, 0x81, 0x4d, 0x1e, 0x0f, 0x6b, 0xcb, 0x69, 0x0b,
    -	0xd6, 0x83, 0xb8, 0x0d, 0xdc, 0x08, 0xfc, 0xcb, 0x71, 0xeb, 0x9b, 0xf1, 0x57, 0x3f, 0x1e, 0xd6,
    -	0x24, 0x9b, 0x45, 0x3d, 0x60, 0x8a, 0x3b, 0x08, 0x0f, 0x01, 0xd4, 0xb1, 0x4b, 0xef, 0x38, 0xd8,
    -	0x74, 0xbd, 0x37, 0x69, 0x06, 0x11, 0x23, 0x7f, 0x69, 0xb2, 0xe5, 0x61, 0x16, 0xcd, 0xf3, 0xc2,
    -	0x0b, 0xb8, 0x91, 0x62, 0x43, 0x92, 0x37, 0xc0, 0xcb, 0x60, 0xda, 0x21, 0xd8, 0xb5, 0xcc, 0x4a,
    -	0x81, 0x8f, 0x22, 0x98, 0x40, 0xc4, 0x5b, 0x91, 0xe8, 0x85, 0x2f, 0x82, 0x19, 0x83, 0xb8, 0x2e,
    -	0xee, 0x91, 0x4a, 0x91, 0x03, 0x17, 0x04, 0x70, 0x66, 0xd3, 0x6b, 0x46, 0x7e, 0xbf, 0xfa, 0x07,
    -	0x05, 0xcc, 0x05, 0x33, 0x77, 0x0a, 0xa9, 0xd2, 0x8c, 0xa7, 0xca, 0xf3, 0x47, 0xc6, 0x49, 0x46,
    -	0x86, 0x7c, 0x92, 0x8f, 0xf8, 0xcc, 0x82, 0x10, 0xfe, 0x14, 0x94, 0x5c, 0xa2, 0x93, 0x0e, 0xb5,
    -	0x1c, 0xe1, 0xf3, 0x2b, 0x13, 0xfa, 0x8c, 0xf7, 0x88, 0xde, 0x16, 0xa6, 0xcd, 0x33, 0xcc, 0x69,
    -	0xff, 0x09, 0x05, 0x94, 0xf0, 0xc7, 0xa0, 0x44, 0x89, 0x61, 0xeb, 0x98, 0x12, 0x91, 0x26, 0xb1,
    -	0xf8, 0x66, 0xe1, 0xc2, 0xc8, 0x76, 0xac, 0xee, 0x1d, 0x01, 0xe3, 0x89, 0x12, 0xcc, 0x83, 0xdf,
    -	0x8a, 0x02, 0x1a, 0x78, 0x00, 0xe6, 0xfb, 0x76, 0x97, 0x21, 0x29, 0xdb, 0xba, 0x7b, 0x03, 0x11,
    -	0x3e, 0x57, 0x8f, 0x9c, 0x90, 0xdd, 0x98, 0x49, 0x73, 0x59, 0xbc, 0x60, 0x3e, 0xde, 0x8e, 0x12,
    -	0xd4, 0x70, 0x0d, 0x2c, 0x18, 0x9a, 0x89, 0x08, 0xee, 0x0e, 0xda, 0xa4, 0x63, 0x99, 0x5d, 0x97,
    -	0x07, 0x50, 0xb1, 0xb9, 0x22, 0x08, 0x16, 0x36, 0xe3, 0xdd, 0x28, 0x89, 0x87, 0x1b, 0x60, 0xc9,
    -	0xdf, 0x67, 0x7f, 0xa8, 0xb9, 0xd4, 0x72, 0x06, 0x1b, 0x9a, 0xa1, 0xd1, 0xca, 0x34, 0xe7, 0xa9,
    -	0x8c, 0x86, 0xb5, 0x25, 0x24, 0xe9, 0x47, 0x52, 0x2b, 0xf5, 0x37, 0xd3, 0x60, 0x21, 0xb1, 0x1b,
    -	0xc0, 0xbb, 0x60, 0xb9, 0xd3, 0x77, 0x1c, 0x62, 0xd2, 0xad, 0xbe, 0xb1, 0x47, 0x9c, 0x76, 0x67,
    -	0x9f, 0x74, 0xfb, 0x3a, 0xe9, 0xf2, 0x15, 0x2d, 0x36, 0xab, 0xc2, 0xd7, 0xe5, 0x96, 0x14, 0x85,
    -	0x32, 0xac, 0xe1, 0x8f, 0x00, 0x34, 0x79, 0xd3, 0xa6, 0xe6, 0xba, 0x01, 0x67, 0x8e, 0x73, 0x06,
    -	0x09, 0xb8, 0x95, 0x42, 0x20, 0x89, 0x15, 0xf3, 0xb1, 0x4b, 0x5c, 0xcd, 0x21, 0xdd, 0xa4, 0x8f,
    -	0xf9, 0xb8, 0x8f, 0xeb, 0x52, 0x14, 0xca, 0xb0, 0x86, 0xaf, 0x82, 0xb2, 0xf7, 0x36, 0x3e, 0xe7,
    -	0x62, 0x71, 0x16, 0x05, 0x59, 0x79, 0x2b, 0xec, 0x42, 0x51, 0x1c, 0x1b, 0x9a, 0xb5, 0xe7, 0x12,
    -	0xe7, 0x90, 0x74, 0xdf, 0xf6, 0x34, 0x00, 0x2b, 0x94, 0x45, 0x5e, 0x28, 0x83, 0xa1, 0x6d, 0xa7,
    -	0x10, 0x48, 0x62, 0xc5, 0x86, 0xe6, 0x45, 0x4d, 0x6a, 0x68, 0xd3, 0xf1, 0xa1, 0xed, 0x4a, 0x51,
    -	0x28, 0xc3, 0x9a, 0xc5, 0x9e, 0xe7, 0xf2, 0xda, 0x21, 0xd6, 0x74, 0xbc, 0xa7, 0x93, 0xca, 0x4c,
    -	0x3c, 0xf6, 0xb6, 0xe2, 0xdd, 0x28, 0x89, 0x87, 0x6f, 0x83, 0x73, 0x5e, 0xd3, 0xae, 0x89, 0x03,
    -	0x92, 0x12, 0x27, 0x79, 0x4e, 0x90, 0x9c, 0xdb, 0x4a, 0x02, 0x50, 0xda, 0x06, 0xde, 0x02, 0xf3,
    -	0x1d, 0x4b, 0xd7, 0x79, 0x3c, 0xb6, 0xac, 0xbe, 0x49, 0x2b, 0xb3, 0x9c, 0x05, 0xb2, 0x1c, 0x6a,
    -	0xc5, 0x7a, 0x50, 0x02, 0x09, 0xef, 0x01, 0xd0, 0xf1, 0xcb, 0x81, 0x5b, 0x01, 0xd9, 0x85, 0x3e,
    -	0x5d, 0x87, 0xc2, 0x02, 0x1c, 0x34, 0xb9, 0x28, 0xc2, 0xa6, 0x7e, 0xa2, 0x80, 0x95, 0x8c, 0x1c,
    -	0x87, 0x6f, 0xc6, 0xaa, 0xde, 0xd5, 0x44, 0xd5, 0xbb, 0x90, 0x61, 0x16, 0x29, 0x7d, 0x1d, 0x30,
    -	0xc7, 0x74, 0x87, 0x66, 0xf6, 0x3c, 0x88, 0xd8, 0xc1, 0x5e, 0x92, 0xf9, 0x8e, 0xa2, 0xc0, 0x70,
    -	0x1b, 0x3e, 0x37, 0x1a, 0xd6, 0xe6, 0x62, 0x7d, 0x28, 0xce, 0xa9, 0xfe, 0x2a, 0x07, 0xc0, 0x3a,
    -	0xb1, 0x75, 0x6b, 0x60, 0x10, 0xf3, 0x34, 0x54, 0xcb, 0x7a, 0x4c, 0xb5, 0xa8, 0xd2, 0x85, 0x08,
    -	0xfc, 0xc9, 0x94, 0x2d, 0x1b, 0x09, 0xd9, 0x72, 0x69, 0x0c, 0xcf, 0xd1, 0xba, 0xe5, 0x6f, 0x79,
    -	0xb0, 0x18, 0x82, 0x43, 0xe1, 0x72, 0x3b, 0xb6, 0x84, 0x57, 0x12, 0x4b, 0xb8, 0x22, 0x31, 0x79,
    -	0x6a, 0xca, 0xe5, 0x03, 0x30, 0xcf, 0x74, 0x85, 0xb7, 0x6a, 0x5c, 0xb5, 0x4c, 0x1f, 0x5b, 0xb5,
    -	0x04, 0x55, 0x67, 0x23, 0xc6, 0x84, 0x12, 0xcc, 0x19, 0x2a, 0x69, 0xe6, 0xeb, 0xa8, 0x92, 0xfe,
    -	0xa8, 0x80, 0xf9, 0x70, 0x99, 0x4e, 0x41, 0x26, 0xb5, 0xe2, 0x32, 0xa9, 0x7a, 0x74, 0x5c, 0x66,
    -	0xe8, 0xa4, 0xbf, 0x16, 0xa2, 0x5e, 0x73, 0xa1, 0xb4, 0xca, 0x0e, 0x54, 0xb6, 0xae, 0x75, 0xb0,
    -	0x2b, 0xca, 0xea, 0x19, 0xef, 0x30, 0xe5, 0xb5, 0xa1, 0xa0, 0x37, 0x26, 0xa9, 0x72, 0x4f, 0x57,
    -	0x52, 0xe5, 0xbf, 0x1c, 0x49, 0x75, 0x07, 0x94, 0x5c, 0x5f, 0x4c, 0x15, 0x38, 0xe5, 0xe5, 0x71,
    -	0xe9, 0x2c, 0x74, 0x54, 0xc0, 0x1a, 0x28, 0xa8, 0x80, 0x49, 0xa6, 0x9d, 0x8a, 0x5f, 0xa5, 0x76,
    -	0x62, 0xe1, 0x6d, 0xe3, 0xbe, 0x4b, 0xba, 0x3c, 0x95, 0x4a, 0x61, 0x78, 0xef, 0xf0, 0x56, 0x24,
    -	0x7a, 0xe1, 0x2e, 0x58, 0xb1, 0x1d, 0xab, 0xe7, 0x10, 0xd7, 0x5d, 0x27, 0xb8, 0xab, 0x6b, 0x26,
    -	0xf1, 0x07, 0xe0, 0x55, 0xbd, 0x0b, 0xa3, 0x61, 0x6d, 0x65, 0x47, 0x0e, 0x41, 0x59, 0xb6, 0xea,
    -	0xc7, 0x05, 0x70, 0x36, 0xb9, 0x23, 0x66, 0x08, 0x11, 0xe5, 0x44, 0x42, 0xe4, 0xe5, 0x48, 0x88,
    -	0x7a, 0x2a, 0x2d, 0x72, 0xe6, 0x4f, 0x85, 0xe9, 0x1a, 0x58, 0x10, 0xc2, 0xc3, 0xef, 0x14, 0x52,
    -	0x2c, 0x58, 0x9e, 0xdd, 0x78, 0x37, 0x4a, 0xe2, 0xe1, 0x6d, 0x30, 0xe7, 0x70, 0x6d, 0xe5, 0x13,
    -	0x78, 0xfa, 0xe4, 0x5b, 0x82, 0x60, 0x0e, 0x45, 0x3b, 0x51, 0x1c, 0xcb, 0xb4, 0x49, 0x28, 0x39,
    -	0x7c, 0x82, 0x42, 0x5c, 0x9b, 0xac, 0x25, 0x01, 0x28, 0x6d, 0x03, 0x37, 0xc1, 0x62, 0xdf, 0x4c,
    -	0x53, 0x79, 0xb1, 0x76, 0x41, 0x50, 0x2d, 0xee, 0xa6, 0x21, 0x48, 0x66, 0x07, 0x7f, 0x12, 0x93,
    -	0x2b, 0xd3, 0x7c, 0x17, 0xb9, 0x72, 0x74, 0x3a, 0x4c, 0xac, 0x57, 0x24, 0x3a, 0xaa, 0x34, 0xa9,
    -	0x8e, 0x52, 0x3f, 0x52, 0x00, 0x4c, 0xa7, 0xe0, 0xd8, 0xc3, 0x7d, 0xca, 0x22, 0x52, 0x22, 0xbb,
    -	0x72, 0x85, 0x73, 0x75, 0xbc, 0xc2, 0x09, 0x77, 0xd0, 0xc9, 0x24, 0x8e, 0x98, 0xde, 0xd3, 0xb9,
    -	0x98, 0x99, 0x40, 0xe2, 0x84, 0xfe, 0x3c, 0x99, 0xc4, 0x89, 0xf0, 0x1c, 0x2d, 0x71, 0xfe, 0x99,
    -	0x03, 0x8b, 0x21, 0x78, 0x62, 0x89, 0x23, 0x31, 0x79, 0x76, 0x39, 0x33, 0x99, 0xec, 0x08, 0xa7,
    -	0xee, 0xff, 0x44, 0x76, 0x84, 0x0e, 0x65, 0xc8, 0x8e, 0xdf, 0xe7, 0xa2, 0x5e, 0x1f, 0x53, 0x76,
    -	0x7c, 0x09, 0x57, 0x15, 0x5f, 0x3b, 0xe5, 0xa2, 0x7e, 0x9a, 0x07, 0x67, 0x93, 0x29, 0x18, 0xab,
    -	0x83, 0xca, 0xd8, 0x3a, 0xb8, 0x03, 0x96, 0xee, 0xf7, 0x75, 0x7d, 0xc0, 0xc7, 0x10, 0x29, 0x86,
    -	0x5e, 0x05, 0xfd, 0xb6, 0xb0, 0x5c, 0xfa, 0x81, 0x04, 0x83, 0xa4, 0x96, 0xe9, 0xb2, 0x58, 0x78,
    -	0xd2, 0xb2, 0x58, 0x3c, 0x41, 0x59, 0x94, 0x2b, 0x8b, 0xfc, 0x89, 0x94, 0xc5, 0xc4, 0x35, 0x51,
    -	0xb2, 0x5d, 0x8d, 0x3d, 0xc3, 0x8f, 0x14, 0xb0, 0x2c, 0x3f, 0x3e, 0x43, 0x1d, 0xcc, 0x1b, 0xf8,
    -	0x41, 0xf4, 0xf2, 0x62, 0x5c, 0xc1, 0xe8, 0x53, 0x4d, 0xaf, 0x7b, 0x5f, 0x77, 0xea, 0xef, 0x98,
    -	0x74, 0xdb, 0x69, 0x53, 0x47, 0x33, 0x7b, 0x5e, 0x81, 0xdd, 0x8c, 0x71, 0xa1, 0x04, 0x37, 0xbc,
    -	0x07, 0x4a, 0x06, 0x7e, 0xd0, 0xee, 0x3b, 0x3d, 0xbf, 0x10, 0x1e, 0xff, 0x3d, 0x3c, 0xf6, 0x37,
    -	0x05, 0x0b, 0x0a, 0xf8, 0xd4, 0x2f, 0x14, 0xb0, 0x92, 0x51, 0x41, 0xbf, 0x41, 0xa3, 0xfc, 0x58,
    -	0x01, 0x17, 0x63, 0xa3, 0x64, 0x19, 0x49, 0xee, 0xf7, 0x75, 0x9e, 0x9c, 0x42, 0xb0, 0x5c, 0x05,
    -	0xb3, 0x36, 0x76, 0xa8, 0x16, 0x28, 0xdd, 0x62, 0x73, 0x6e, 0x34, 0xac, 0xcd, 0xee, 0xf8, 0x8d,
    -	0x28, 0xec, 0x97, 0xcc, 0x4d, 0xee, 0xe9, 0xcd, 0x8d, 0xfa, 0xeb, 0x1c, 0x28, 0x47, 0x5c, 0x3e,
    -	0x05, 0xa9, 0xf2, 0x56, 0x4c, 0xaa, 0x48, 0x3f, 0xfe, 0x44, 0xe7, 0x30, 0x4b, 0xab, 0x6c, 0x26,
    -	0xb4, 0xca, 0x77, 0xc7, 0x11, 0x1d, 0x2d, 0x56, 0xfe, 0x95, 0x03, 0x4b, 0x11, 0x74, 0xa8, 0x56,
    -	0xbe, 0x1f, 0x53, 0x2b, 0xab, 0x09, 0xb5, 0x52, 0x91, 0xd9, 0x3c, 0x93, 0x2b, 0xe3, 0xe5, 0xca,
    -	0x9f, 0x14, 0xb0, 0x10, 0x99, 0xbb, 0x53, 0xd0, 0x2b, 0xeb, 0x71, 0xbd, 0x52, 0x1b, 0x13, 0x2f,
    -	0x19, 0x82, 0xe5, 0x16, 0x58, 0x8c, 0x80, 0xb6, 0x9d, 0xae, 0x66, 0x62, 0xdd, 0x85, 0x2f, 0x80,
    -	0xa2, 0x4b, 0xb1, 0x43, 0xfd, 0xec, 0xf6, 0x6d, 0xdb, 0xac, 0x11, 0x79, 0x7d, 0xea, 0xbf, 0x15,
    -	0xd0, 0x88, 0x18, 0xef, 0x10, 0xc7, 0xd5, 0x5c, 0x4a, 0x4c, 0x7a, 0xd7, 0xd2, 0xfb, 0x06, 0x69,
    -	0xe9, 0x58, 0x33, 0x10, 0x61, 0x0d, 0x9a, 0x65, 0xee, 0x58, 0xba, 0xd6, 0x19, 0x40, 0x0c, 0xca,
    -	0x1f, 0xee, 0x13, 0x73, 0x9d, 0xe8, 0x84, 0x8a, 0xcf, 0x1b, 0xb3, 0xcd, 0x37, 0xfd, 0xdb, 0xfe,
    -	0xf7, 0xc2, 0xae, 0xc7, 0xc3, 0xda, 0xea, 0x24, 0x8c, 0x3c, 0x38, 0xa3, 0x9c, 0xf0, 0x67, 0x00,
    -	0xb0, 0xc7, 0x76, 0x07, 0xfb, 0x1f, 0x3b, 0x66, 0x9b, 0x6f, 0xf8, 0x29, 0xfc, 0x5e, 0xd0, 0x73,
    -	0xac, 0x17, 0x44, 0x18, 0xd5, 0xdf, 0x95, 0x62, 0x4b, 0xfd, 0x8d, 0xbf, 0x5b, 0xfa, 0x05, 0x58,
    -	0x3a, 0x0c, 0x67, 0xc7, 0x07, 0x30, 0x4d, 0xc4, 0xe2, 0xee, 0x45, 0x29, 0xbd, 0x6c, 0x5e, 0x43,
    -	0x25, 0x76, 0x57, 0x42, 0x87, 0xa4, 0x2f, 0x81, 0xaf, 0x82, 0x32, 0xd3, 0x32, 0x5a, 0x87, 0x6c,
    -	0x61, 0xc3, 0x4f, 0xc3, 0xe0, 0xeb, 0x50, 0x3b, 0xec, 0x42, 0x51, 0x1c, 0xdc, 0x07, 0x8b, 0xb6,
    -	0xd5, 0xdd, 0xc4, 0x26, 0xee, 0x11, 0x56, 0xa1, 0xbd, 0xa5, 0xe4, 0xb7, 0x4e, 0xb3, 0xcd, 0xd7,
    -	0xfc, 0x1b, 0x85, 0x9d, 0x34, 0x84, 0x9d, 0xd8, 0x24, 0xcd, 0x3c, 0x08, 0x64, 0x94, 0xd0, 0x48,
    -	0x7d, 0xcc, 0x9c, 0x49, 0xfd, 0x03, 0x44, 0x96, 0x8f, 0x27, 0xfc, 0x9c, 0x99, 0x75, 0x9f, 0x56,
    -	0x3a, 0xd1, 0x7d, 0x9a, 0xe4, 0xc4, 0x31, 0x7b, 0xcc, 0x13, 0xc7, 0xa7, 0x0a, 0xb8, 0x64, 0x4f,
    -	0x90, 0x46, 0x15, 0xc0, 0xa7, 0xa5, 0x35, 0x66, 0x5a, 0x26, 0xc9, 0xc8, 0xe6, 0xea, 0x68, 0x58,
    -	0xbb, 0x34, 0x09, 0x12, 0x4d, 0xe4, 0x1a, 0x4b, 0x1a, 0x4b, 0xec, 0x7c, 0x95, 0x32, 0x77, 0xf3,
    -	0xca, 0x18, 0x37, 0xfd, 0x8d, 0xd2, 0xcb, 0x43, 0xff, 0x09, 0x05, 0x34, 0xea, 0x47, 0x45, 0x70,
    -	0x2e, 0x55, 0xad, 0xbf, 0xc2, 0xbb, 0xc2, 0xd4, 0x89, 0x26, 0x7f, 0x8c, 0x13, 0xcd, 0x1a, 0x58,
    -	0x10, 0x1f, 0x98, 0x13, 0x07, 0xa2, 0x20, 0x4c, 0x5a, 0xf1, 0x6e, 0x94, 0xc4, 0xcb, 0xee, 0x2a,
    -	0x8b, 0xc7, 0xbc, 0xab, 0x8c, 0x7a, 0x21, 0xfe, 0x17, 0xe5, 0xe5, 0x73, 0xda, 0x0b, 0xf1, 0xf7,
    -	0xa8, 0x24, 0x1e, 0xbe, 0xe1, 0x27, 0x6b, 0xc0, 0x30, 0xc3, 0x19, 0x12, 0xd9, 0x17, 0x10, 0x24,
    -	0xd0, 0x4f, 0xf4, 0x11, 0xf5, 0x7d, 0xc9, 0x47, 0xd4, 0xd5, 0x31, 0x61, 0x36, 0xf9, 0xb5, 0xa4,
    -	0xf4, 0xd0, 0x59, 0x3e, 0xfe, 0xa1, 0x53, 0xfd, 0x8b, 0x02, 0x9e, 0xcb, 0xdc, 0xa6, 0xe0, 0x5a,
    -	0x4c, 0x3d, 0x5e, 0x4b, 0xa8, 0xc7, 0xe7, 0x33, 0x0d, 0x23, 0x12, 0xd2, 0x90, 0xdf, 0x58, 0xde,
    -	0x1c, 0x7b, 0x63, 0x29, 0x39, 0x89, 0x8c, 0xbf, 0xba, 0x6c, 0xbe, 0xfe, 0xf0, 0x51, 0x75, 0xea,
    -	0xb3, 0x47, 0xd5, 0xa9, 0xcf, 0x1f, 0x55, 0xa7, 0x7e, 0x39, 0xaa, 0x2a, 0x0f, 0x47, 0x55, 0xe5,
    -	0xb3, 0x51, 0x55, 0xf9, 0x7c, 0x54, 0x55, 0xfe, 0x3e, 0xaa, 0x2a, 0xbf, 0xfd, 0xa2, 0x3a, 0x75,
    -	0x0f, 0xa6, 0xff, 0x95, 0xf9, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xae, 0x39, 0x4c, 0x13, 0xc3,
    -	0x29, 0x00, 0x00,
    +	0xb6, 0x12, 0xc7, 0x64, 0xed, 0x38, 0x41, 0xe0, 0x14, 0x09, 0x44, 0x2a, 0x4d, 0xd3, 0xe8, 0xab,
    +	0x43, 0xcb, 0x01, 0xdc, 0xb4, 0xe8, 0x68, 0x39, 0xa6, 0x36, 0xde, 0x2f, 0xec, 0x0e, 0x15, 0x0b,
    +	0xbd, 0x14, 0x05, 0x7a, 0xeb, 0xa1, 0x7f, 0x43, 0xff, 0x81, 0xa2, 0x28, 0x9a, 0x5b, 0x10, 0x04,
    +	0xbd, 0xf8, 0x52, 0x20, 0xe8, 0xa5, 0x39, 0x11, 0x35, 0x73, 0x2a, 0x8a, 0xde, 0xda, 0x8b, 0x2f,
    +	0x2d, 0x66, 0x76, 0xf6, 0x7b, 0x56, 0xa4, 0xe4, 0x58, 0x69, 0x82, 0xdc, 0xb8, 0x33, 0xbf, 0xf7,
    +	0xdb, 0x37, 0x33, 0xef, 0xcd, 0xfb, 0xcd, 0x2c, 0x81, 0x7a, 0xff, 0x55, 0xaf, 0xa9, 0xdb, 0x2d,
    +	0xec, 0xe8, 0x2d, 0xec, 0x38, 0x5e, 0xeb, 0xe0, 0x7a, 0xab, 0x4f, 0x2c, 0xe2, 0x62, 0x4a, 0x7a,
    +	0x4d, 0xc7, 0xb5, 0xa9, 0x0d, 0xa1, 0x8f, 0x69, 0x62, 0x47, 0x6f, 0x32, 0x4c, 0xf3, 0xe0, 0xfa,
    +	0xf9, 0x6b, 0x7d, 0x9d, 0xee, 0x0f, 0xf6, 0x9a, 0x9a, 0x6d, 0xb6, 0xfa, 0x76, 0xdf, 0x6e, 0x71,
    +	0xe8, 0xde, 0xe0, 0x1e, 0x7f, 0xe2, 0x0f, 0xfc, 0x97, 0x4f, 0x71, 0x3e, 0xfe, 0x1a, 0xcd, 0x76,
    +	0x89, 0xe4, 0x35, 0xe7, 0x6f, 0x46, 0x18, 0x13, 0x6b, 0xfb, 0xba, 0x45, 0xdc, 0xc3, 0x96, 0x73,
    +	0xbf, 0xcf, 0x1a, 0xbc, 0x96, 0x49, 0x28, 0x96, 0x59, 0xb5, 0xf2, 0xac, 0xdc, 0x81, 0x45, 0x75,
    +	0x93, 0x64, 0x0c, 0x5e, 0x19, 0x67, 0xe0, 0x69, 0xfb, 0xc4, 0xc4, 0x19, 0xbb, 0x97, 0xf2, 0xec,
    +	0x06, 0x54, 0x37, 0x5a, 0xba, 0x45, 0x3d, 0xea, 0xa6, 0x8d, 0xd4, 0xff, 0x28, 0x00, 0x76, 0x6c,
    +	0x8b, 0xba, 0xb6, 0x61, 0x10, 0x17, 0x91, 0x03, 0xdd, 0xd3, 0x6d, 0x0b, 0xfe, 0x1c, 0x54, 0xd8,
    +	0x78, 0x7a, 0x98, 0xe2, 0x9a, 0x72, 0x51, 0x59, 0xad, 0xde, 0xf8, 0x5e, 0x33, 0x9a, 0xe4, 0x90,
    +	0xbe, 0xe9, 0xdc, 0xef, 0xb3, 0x06, 0xaf, 0xc9, 0xd0, 0xcd, 0x83, 0xeb, 0xcd, 0xed, 0xbd, 0xf7,
    +	0x89, 0x46, 0x37, 0x09, 0xc5, 0x6d, 0xf8, 0x70, 0xd8, 0x98, 0x1a, 0x0d, 0x1b, 0x20, 0x6a, 0x43,
    +	0x21, 0x2b, 0xdc, 0x06, 0x25, 0xce, 0x5e, 0xe0, 0xec, 0xd7, 0x72, 0xd9, 0xc5, 0xa0, 0x9b, 0x08,
    +	0x7f, 0xf0, 0xe6, 0x03, 0x4a, 0x2c, 0xe6, 0x5e, 0xfb, 0x8c, 0xa0, 0x2e, 0xad, 0x63, 0x8a, 0x11,
    +	0x27, 0x82, 0x2f, 0x82, 0x8a, 0x2b, 0xdc, 0xaf, 0x15, 0x2f, 0x2a, 0xab, 0xc5, 0xf6, 0x59, 0x81,
    +	0xaa, 0x04, 0xc3, 0x42, 0x21, 0x42, 0xfd, 0xb3, 0x02, 0x96, 0xb3, 0xe3, 0xde, 0xd0, 0x3d, 0x0a,
    +	0xdf, 0xcb, 0x8c, 0xbd, 0x39, 0xd9, 0xd8, 0x99, 0x35, 0x1f, 0x79, 0xf8, 0xe2, 0xa0, 0x25, 0x36,
    +	0xee, 0x77, 0x40, 0x59, 0xa7, 0xc4, 0xf4, 0x6a, 0x85, 0x8b, 0xc5, 0xd5, 0xea, 0x8d, 0xcb, 0xcd,
    +	0x6c, 0xec, 0x36, 0xb3, 0x8e, 0xb5, 0xe7, 0x04, 0x65, 0xf9, 0x6d, 0x66, 0x8c, 0x7c, 0x0e, 0xf5,
    +	0xbf, 0x0a, 0x98, 0x5d, 0xc7, 0xc4, 0xb4, 0xad, 0x2e, 0xa1, 0xa7, 0xb0, 0x68, 0x1d, 0x50, 0xf2,
    +	0x1c, 0xa2, 0x89, 0x45, 0xfb, 0x8e, 0xcc, 0xf7, 0xd0, 0x9d, 0xae, 0x43, 0xb4, 0x68, 0xa1, 0xd8,
    +	0x13, 0xe2, 0xc6, 0xf0, 0x1d, 0x30, 0xed, 0x51, 0x4c, 0x07, 0x1e, 0x5f, 0xa6, 0xea, 0x8d, 0xe7,
    +	0x8e, 0xa6, 0xe1, 0xd0, 0xf6, 0xbc, 0x20, 0x9a, 0xf6, 0x9f, 0x91, 0xa0, 0x50, 0xff, 0x51, 0x00,
    +	0x30, 0xc4, 0x76, 0x6c, 0xab, 0xa7, 0x53, 0x16, 0xbf, 0xb7, 0x40, 0x89, 0x1e, 0x3a, 0x84, 0x4f,
    +	0xc3, 0x6c, 0xfb, 0x72, 0xe0, 0xc5, 0xed, 0x43, 0x87, 0x3c, 0x1e, 0x36, 0x96, 0xb3, 0x16, 0xac,
    +	0x07, 0x71, 0x1b, 0xb8, 0x11, 0xfa, 0x57, 0xe0, 0xd6, 0x37, 0x93, 0xaf, 0x7e, 0x3c, 0x6c, 0x48,
    +	0x36, 0x8b, 0x66, 0xc8, 0x94, 0x74, 0x10, 0x1e, 0x00, 0x68, 0x60, 0x8f, 0xde, 0x76, 0xb1, 0xe5,
    +	0xf9, 0x6f, 0xd2, 0x4d, 0x22, 0x46, 0xfe, 0xc2, 0x64, 0xcb, 0xc3, 0x2c, 0xda, 0xe7, 0x85, 0x17,
    +	0x70, 0x23, 0xc3, 0x86, 0x24, 0x6f, 0x80, 0x97, 0xc1, 0xb4, 0x4b, 0xb0, 0x67, 0x5b, 0xb5, 0x12,
    +	0x1f, 0x45, 0x38, 0x81, 0x88, 0xb7, 0x22, 0xd1, 0x0b, 0x9f, 0x07, 0x33, 0x26, 0xf1, 0x3c, 0xdc,
    +	0x27, 0xb5, 0x32, 0x07, 0x2e, 0x08, 0xe0, 0xcc, 0xa6, 0xdf, 0x8c, 0x82, 0x7e, 0xf5, 0x0f, 0x0a,
    +	0x98, 0x0b, 0x67, 0xee, 0x14, 0x52, 0xa5, 0x9d, 0x4c, 0x95, 0x67, 0x8f, 0x8c, 0x93, 0x9c, 0x0c,
    +	0xf9, 0xb8, 0x18, 0xf3, 0x99, 0x05, 0x21, 0xfc, 0x29, 0xa8, 0x78, 0xc4, 0x20, 0x1a, 0xb5, 0x5d,
    +	0xe1, 0xf3, 0x4b, 0x13, 0xfa, 0x8c, 0xf7, 0x88, 0xd1, 0x15, 0xa6, 0xed, 0x33, 0xcc, 0xe9, 0xe0,
    +	0x09, 0x85, 0x94, 0xf0, 0xc7, 0xa0, 0x42, 0x89, 0xe9, 0x18, 0x98, 0x12, 0x91, 0x26, 0x89, 0xf8,
    +	0x66, 0xe1, 0xc2, 0xc8, 0x76, 0xec, 0xde, 0x6d, 0x01, 0xe3, 0x89, 0x12, 0xce, 0x43, 0xd0, 0x8a,
    +	0x42, 0x1a, 0x78, 0x1f, 0xcc, 0x0f, 0x9c, 0x1e, 0x43, 0x52, 0xb6, 0x75, 0xf7, 0x0f, 0x45, 0xf8,
    +	0x5c, 0x3d, 0x72, 0x42, 0x76, 0x13, 0x26, 0xed, 0x65, 0xf1, 0x82, 0xf9, 0x64, 0x3b, 0x4a, 0x51,
    +	0xc3, 0x35, 0xb0, 0x60, 0xea, 0x16, 0x22, 0xb8, 0x77, 0xd8, 0x25, 0x9a, 0x6d, 0xf5, 0x3c, 0x1e,
    +	0x40, 0xe5, 0xf6, 0x8a, 0x20, 0x58, 0xd8, 0x4c, 0x76, 0xa3, 0x34, 0x1e, 0x6e, 0x80, 0xa5, 0x60,
    +	0x9f, 0xfd, 0xa1, 0xee, 0x51, 0xdb, 0x3d, 0xdc, 0xd0, 0x4d, 0x9d, 0xd6, 0xa6, 0x39, 0x4f, 0x6d,
    +	0x34, 0x6c, 0x2c, 0x21, 0x49, 0x3f, 0x92, 0x5a, 0xa9, 0xbf, 0x99, 0x06, 0x0b, 0xa9, 0xdd, 0x00,
    +	0xde, 0x01, 0xcb, 0xda, 0xc0, 0x75, 0x89, 0x45, 0xb7, 0x06, 0xe6, 0x1e, 0x71, 0xbb, 0xda, 0x3e,
    +	0xe9, 0x0d, 0x0c, 0xd2, 0xe3, 0x2b, 0x5a, 0x6e, 0xd7, 0x85, 0xaf, 0xcb, 0x1d, 0x29, 0x0a, 0xe5,
    +	0x58, 0xc3, 0x1f, 0x01, 0x68, 0xf1, 0xa6, 0x4d, 0xdd, 0xf3, 0x42, 0xce, 0x02, 0xe7, 0x0c, 0x13,
    +	0x70, 0x2b, 0x83, 0x40, 0x12, 0x2b, 0xe6, 0x63, 0x8f, 0x78, 0xba, 0x4b, 0x7a, 0x69, 0x1f, 0x8b,
    +	0x49, 0x1f, 0xd7, 0xa5, 0x28, 0x94, 0x63, 0x0d, 0x5f, 0x06, 0x55, 0xff, 0x6d, 0x7c, 0xce, 0xc5,
    +	0xe2, 0x2c, 0x0a, 0xb2, 0xea, 0x56, 0xd4, 0x85, 0xe2, 0x38, 0x36, 0x34, 0x7b, 0xcf, 0x23, 0xee,
    +	0x01, 0xe9, 0xbd, 0xe5, 0x6b, 0x00, 0x56, 0x28, 0xcb, 0xbc, 0x50, 0x86, 0x43, 0xdb, 0xce, 0x20,
    +	0x90, 0xc4, 0x8a, 0x0d, 0xcd, 0x8f, 0x9a, 0xcc, 0xd0, 0xa6, 0x93, 0x43, 0xdb, 0x95, 0xa2, 0x50,
    +	0x8e, 0x35, 0x8b, 0x3d, 0xdf, 0xe5, 0xb5, 0x03, 0xac, 0x1b, 0x78, 0xcf, 0x20, 0xb5, 0x99, 0x64,
    +	0xec, 0x6d, 0x25, 0xbb, 0x51, 0x1a, 0x0f, 0xdf, 0x02, 0xe7, 0xfc, 0xa6, 0x5d, 0x0b, 0x87, 0x24,
    +	0x15, 0x4e, 0xf2, 0x8c, 0x20, 0x39, 0xb7, 0x95, 0x06, 0xa0, 0xac, 0x0d, 0xbc, 0x05, 0xe6, 0x35,
    +	0xdb, 0x30, 0x78, 0x3c, 0x76, 0xec, 0x81, 0x45, 0x6b, 0xb3, 0x9c, 0x05, 0xb2, 0x1c, 0xea, 0x24,
    +	0x7a, 0x50, 0x0a, 0x09, 0xef, 0x02, 0xa0, 0x05, 0xe5, 0xc0, 0xab, 0x81, 0xfc, 0x42, 0x9f, 0xad,
    +	0x43, 0x51, 0x01, 0x0e, 0x9b, 0x3c, 0x14, 0x63, 0x53, 0x3f, 0x56, 0xc0, 0x4a, 0x4e, 0x8e, 0xc3,
    +	0x37, 0x12, 0x55, 0xef, 0x6a, 0xaa, 0xea, 0x5d, 0xc8, 0x31, 0x8b, 0x95, 0x3e, 0x0d, 0xcc, 0x31,
    +	0xdd, 0xa1, 0x5b, 0x7d, 0x1f, 0x22, 0x76, 0xb0, 0x17, 0x64, 0xbe, 0xa3, 0x38, 0x30, 0xda, 0x86,
    +	0xcf, 0x8d, 0x86, 0x8d, 0xb9, 0x44, 0x1f, 0x4a, 0x72, 0xaa, 0xbf, 0x2a, 0x00, 0xb0, 0x4e, 0x1c,
    +	0xc3, 0x3e, 0x34, 0x89, 0x75, 0x1a, 0xaa, 0x65, 0x3d, 0xa1, 0x5a, 0x54, 0xe9, 0x42, 0x84, 0xfe,
    +	0xe4, 0xca, 0x96, 0x8d, 0x94, 0x6c, 0xb9, 0x34, 0x86, 0xe7, 0x68, 0xdd, 0xf2, 0xb7, 0x22, 0x58,
    +	0x8c, 0xc0, 0x91, 0x70, 0x79, 0x2d, 0xb1, 0x84, 0x57, 0x52, 0x4b, 0xb8, 0x22, 0x31, 0x79, 0x6a,
    +	0xca, 0xe5, 0x7d, 0x30, 0xcf, 0x74, 0x85, 0xbf, 0x6a, 0x5c, 0xb5, 0x4c, 0x1f, 0x5b, 0xb5, 0x84,
    +	0x55, 0x67, 0x23, 0xc1, 0x84, 0x52, 0xcc, 0x39, 0x2a, 0x69, 0xe6, 0xab, 0xa8, 0x92, 0xfe, 0xa8,
    +	0x80, 0xf9, 0x68, 0x99, 0x4e, 0x41, 0x26, 0x75, 0x92, 0x32, 0xa9, 0x7e, 0x74, 0x5c, 0xe6, 0xe8,
    +	0xa4, 0xbf, 0x96, 0xe2, 0x5e, 0x73, 0xa1, 0xb4, 0xca, 0x0e, 0x54, 0x8e, 0xa1, 0x6b, 0xd8, 0x13,
    +	0x65, 0xf5, 0x8c, 0x7f, 0x98, 0xf2, 0xdb, 0x50, 0xd8, 0x9b, 0x90, 0x54, 0x85, 0xa7, 0x2b, 0xa9,
    +	0x8a, 0x5f, 0x8c, 0xa4, 0xba, 0x0d, 0x2a, 0x5e, 0x20, 0xa6, 0x4a, 0x9c, 0xf2, 0xf2, 0xb8, 0x74,
    +	0x16, 0x3a, 0x2a, 0x64, 0x0d, 0x15, 0x54, 0xc8, 0x24, 0xd3, 0x4e, 0xe5, 0x2f, 0x53, 0x3b, 0xb1,
    +	0xf0, 0x76, 0xf0, 0xc0, 0x23, 0x3d, 0x9e, 0x4a, 0x95, 0x28, 0xbc, 0x77, 0x78, 0x2b, 0x12, 0xbd,
    +	0x70, 0x17, 0xac, 0x38, 0xae, 0xdd, 0x77, 0x89, 0xe7, 0xad, 0x13, 0xdc, 0x33, 0x74, 0x8b, 0x04,
    +	0x03, 0xf0, 0xab, 0xde, 0x85, 0xd1, 0xb0, 0xb1, 0xb2, 0x23, 0x87, 0xa0, 0x3c, 0x5b, 0xf5, 0xa3,
    +	0x12, 0x38, 0x9b, 0xde, 0x11, 0x73, 0x84, 0x88, 0x72, 0x22, 0x21, 0xf2, 0x62, 0x2c, 0x44, 0x7d,
    +	0x95, 0x16, 0x3b, 0xf3, 0x67, 0xc2, 0x74, 0x0d, 0x2c, 0x08, 0xe1, 0x11, 0x74, 0x0a, 0x29, 0x16,
    +	0x2e, 0xcf, 0x6e, 0xb2, 0x1b, 0xa5, 0xf1, 0xf0, 0x35, 0x30, 0xe7, 0x72, 0x6d, 0x15, 0x10, 0xf8,
    +	0xfa, 0xe4, 0x5b, 0x82, 0x60, 0x0e, 0xc5, 0x3b, 0x51, 0x12, 0xcb, 0xb4, 0x49, 0x24, 0x39, 0x02,
    +	0x82, 0x52, 0x52, 0x9b, 0xac, 0xa5, 0x01, 0x28, 0x6b, 0x03, 0x37, 0xc1, 0xe2, 0xc0, 0xca, 0x52,
    +	0xf9, 0xb1, 0x76, 0x41, 0x50, 0x2d, 0xee, 0x66, 0x21, 0x48, 0x66, 0x07, 0x7f, 0x92, 0x90, 0x2b,
    +	0xd3, 0x7c, 0x17, 0xb9, 0x72, 0x74, 0x3a, 0x4c, 0xac, 0x57, 0x24, 0x3a, 0xaa, 0x32, 0xa9, 0x8e,
    +	0x52, 0x3f, 0x54, 0x00, 0xcc, 0xa6, 0xe0, 0xd8, 0xc3, 0x7d, 0xc6, 0x22, 0x56, 0x22, 0x7b, 0x72,
    +	0x85, 0x73, 0x75, 0xbc, 0xc2, 0x89, 0x76, 0xd0, 0xc9, 0x24, 0x8e, 0x98, 0xde, 0xd3, 0xb9, 0x98,
    +	0x99, 0x40, 0xe2, 0x44, 0xfe, 0x3c, 0x99, 0xc4, 0x89, 0xf1, 0x1c, 0x2d, 0x71, 0xfe, 0x59, 0x00,
    +	0x8b, 0x11, 0x78, 0x62, 0x89, 0x23, 0x31, 0xf9, 0xe6, 0x72, 0x66, 0x32, 0xd9, 0x11, 0x4d, 0xdd,
    +	0xff, 0x89, 0xec, 0x88, 0x1c, 0xca, 0x91, 0x1d, 0xbf, 0x2f, 0xc4, 0xbd, 0x3e, 0xa6, 0xec, 0xf8,
    +	0x02, 0xae, 0x2a, 0xbe, 0x72, 0xca, 0x45, 0xfd, 0xa4, 0x08, 0xce, 0xa6, 0x53, 0x30, 0x51, 0x07,
    +	0x95, 0xb1, 0x75, 0x70, 0x07, 0x2c, 0xdd, 0x1b, 0x18, 0xc6, 0x21, 0x1f, 0x43, 0xac, 0x18, 0xfa,
    +	0x15, 0xf4, 0xdb, 0xc2, 0x72, 0xe9, 0x07, 0x12, 0x0c, 0x92, 0x5a, 0x66, 0xcb, 0x62, 0xe9, 0x49,
    +	0xcb, 0x62, 0xf9, 0x04, 0x65, 0x51, 0xae, 0x2c, 0x8a, 0x27, 0x52, 0x16, 0x13, 0xd7, 0x44, 0xc9,
    +	0x76, 0x35, 0xf6, 0x0c, 0x3f, 0x52, 0xc0, 0xb2, 0xfc, 0xf8, 0x0c, 0x0d, 0x30, 0x6f, 0xe2, 0x07,
    +	0xf1, 0xcb, 0x8b, 0x71, 0x05, 0x63, 0x40, 0x75, 0xa3, 0xe9, 0x7f, 0xdd, 0x69, 0xbe, 0x6d, 0xd1,
    +	0x6d, 0xb7, 0x4b, 0x5d, 0xdd, 0xea, 0xfb, 0x05, 0x76, 0x33, 0xc1, 0x85, 0x52, 0xdc, 0xf0, 0x2e,
    +	0xa8, 0x98, 0xf8, 0x41, 0x77, 0xe0, 0xf6, 0x83, 0x42, 0x78, 0xfc, 0xf7, 0xf0, 0xd8, 0xdf, 0x14,
    +	0x2c, 0x28, 0xe4, 0x53, 0x3f, 0x57, 0xc0, 0x4a, 0x4e, 0x05, 0xfd, 0x1a, 0x8d, 0xf2, 0x23, 0x05,
    +	0x5c, 0x4c, 0x8c, 0x92, 0x65, 0x24, 0xb9, 0x37, 0x30, 0x78, 0x72, 0x0a, 0xc1, 0x72, 0x15, 0xcc,
    +	0x3a, 0xd8, 0xa5, 0x7a, 0xa8, 0x74, 0xcb, 0xed, 0xb9, 0xd1, 0xb0, 0x31, 0xbb, 0x13, 0x34, 0xa2,
    +	0xa8, 0x5f, 0x32, 0x37, 0x85, 0xa7, 0x37, 0x37, 0xea, 0xaf, 0x0b, 0xa0, 0x1a, 0x73, 0xf9, 0x14,
    +	0xa4, 0xca, 0x9b, 0x09, 0xa9, 0x22, 0xfd, 0xf8, 0x13, 0x9f, 0xc3, 0x3c, 0xad, 0xb2, 0x99, 0xd2,
    +	0x2a, 0xdf, 0x1d, 0x47, 0x74, 0xb4, 0x58, 0xf9, 0x57, 0x01, 0x2c, 0xc5, 0xd0, 0x91, 0x5a, 0xf9,
    +	0x7e, 0x42, 0xad, 0xac, 0xa6, 0xd4, 0x4a, 0x4d, 0x66, 0xf3, 0x8d, 0x5c, 0x19, 0x2f, 0x57, 0xfe,
    +	0xa4, 0x80, 0x85, 0xd8, 0xdc, 0x9d, 0x82, 0x5e, 0x59, 0x4f, 0xea, 0x95, 0xc6, 0x98, 0x78, 0xc9,
    +	0x11, 0x2c, 0xb7, 0xc0, 0x62, 0x0c, 0xb4, 0xed, 0xf6, 0x74, 0x0b, 0x1b, 0x1e, 0x7c, 0x0e, 0x94,
    +	0x3d, 0x8a, 0x5d, 0x1a, 0x64, 0x77, 0x60, 0xdb, 0x65, 0x8d, 0xc8, 0xef, 0x53, 0xff, 0xad, 0x80,
    +	0x56, 0xcc, 0x78, 0x87, 0xb8, 0x9e, 0xee, 0x51, 0x62, 0xd1, 0x3b, 0xb6, 0x31, 0x30, 0x49, 0xc7,
    +	0xc0, 0xba, 0x89, 0x08, 0x6b, 0xd0, 0x6d, 0x6b, 0xc7, 0x36, 0x74, 0xed, 0x10, 0x62, 0x50, 0xfd,
    +	0x60, 0x9f, 0x58, 0xeb, 0xc4, 0x20, 0x54, 0x7c, 0xde, 0x98, 0x6d, 0xbf, 0x11, 0xdc, 0xf6, 0xbf,
    +	0x1b, 0x75, 0x3d, 0x1e, 0x36, 0x56, 0x27, 0x61, 0xe4, 0xc1, 0x19, 0xe7, 0x84, 0x3f, 0x03, 0x80,
    +	0x3d, 0x76, 0x35, 0x1c, 0x7c, 0xec, 0x98, 0x6d, 0xbf, 0x1e, 0xa4, 0xf0, 0xbb, 0x61, 0xcf, 0xb1,
    +	0x5e, 0x10, 0x63, 0x54, 0x7f, 0x57, 0x49, 0x2c, 0xf5, 0xd7, 0xfe, 0x6e, 0xe9, 0x17, 0x60, 0xe9,
    +	0x20, 0x9a, 0x9d, 0x00, 0xc0, 0x34, 0x11, 0x8b, 0xbb, 0xe7, 0xa5, 0xf4, 0xb2, 0x79, 0x8d, 0x94,
    +	0xd8, 0x1d, 0x09, 0x1d, 0x92, 0xbe, 0x04, 0xbe, 0x0c, 0xaa, 0x4c, 0xcb, 0xe8, 0x1a, 0xd9, 0xc2,
    +	0x66, 0x90, 0x86, 0xe1, 0xd7, 0xa1, 0x6e, 0xd4, 0x85, 0xe2, 0x38, 0xb8, 0x0f, 0x16, 0x1d, 0xbb,
    +	0xb7, 0x89, 0x2d, 0xdc, 0x27, 0xac, 0x42, 0xfb, 0x4b, 0xc9, 0x6f, 0x9d, 0x66, 0xdb, 0xaf, 0x04,
    +	0x37, 0x0a, 0x3b, 0x59, 0x08, 0x3b, 0xb1, 0x49, 0x9a, 0x79, 0x10, 0xc8, 0x28, 0xa1, 0x99, 0xf9,
    +	0x98, 0x39, 0x93, 0xf9, 0x07, 0x88, 0x2c, 0x1f, 0x4f, 0xf8, 0x39, 0x33, 0xef, 0x3e, 0xad, 0x72,
    +	0xa2, 0xfb, 0x34, 0xc9, 0x89, 0x63, 0xf6, 0x98, 0x27, 0x8e, 0x4f, 0x14, 0x70, 0xc9, 0x99, 0x20,
    +	0x8d, 0x6a, 0x80, 0x4f, 0x4b, 0x67, 0xcc, 0xb4, 0x4c, 0x92, 0x91, 0xed, 0xd5, 0xd1, 0xb0, 0x71,
    +	0x69, 0x12, 0x24, 0x9a, 0xc8, 0x35, 0x96, 0x34, 0xb6, 0xd8, 0xf9, 0x6a, 0x55, 0xee, 0xe6, 0x95,
    +	0x31, 0x6e, 0x06, 0x1b, 0xa5, 0x9f, 0x87, 0xc1, 0x13, 0x0a, 0x69, 0xd4, 0x0f, 0xcb, 0xe0, 0x5c,
    +	0xa6, 0x5a, 0x7f, 0x89, 0x77, 0x85, 0x99, 0x13, 0x4d, 0xf1, 0x18, 0x27, 0x9a, 0x35, 0xb0, 0x20,
    +	0x3e, 0x30, 0xa7, 0x0e, 0x44, 0x61, 0x98, 0x74, 0x92, 0xdd, 0x28, 0x8d, 0x97, 0xdd, 0x55, 0x96,
    +	0x8f, 0x79, 0x57, 0x19, 0xf7, 0x42, 0xfc, 0x2f, 0xca, 0xcf, 0xe7, 0xac, 0x17, 0xe2, 0xef, 0x51,
    +	0x69, 0x3c, 0x7c, 0x3d, 0x48, 0xd6, 0x90, 0x61, 0x86, 0x33, 0xa4, 0xb2, 0x2f, 0x24, 0x48, 0xa1,
    +	0x9f, 0xe8, 0x23, 0xea, 0x7b, 0x92, 0x8f, 0xa8, 0xab, 0x63, 0xc2, 0x6c, 0xf2, 0x6b, 0x49, 0xe9,
    +	0xa1, 0xb3, 0x7a, 0xfc, 0x43, 0xa7, 0xfa, 0x17, 0x05, 0x3c, 0x93, 0xbb, 0x4d, 0xc1, 0xb5, 0x84,
    +	0x7a, 0xbc, 0x96, 0x52, 0x8f, 0xcf, 0xe6, 0x1a, 0xc6, 0x24, 0xa4, 0x29, 0xbf, 0xb1, 0xbc, 0x39,
    +	0xf6, 0xc6, 0x52, 0x72, 0x12, 0x19, 0x7f, 0x75, 0xd9, 0x7e, 0xf5, 0xe1, 0xa3, 0xfa, 0xd4, 0xa7,
    +	0x8f, 0xea, 0x53, 0x9f, 0x3d, 0xaa, 0x4f, 0xfd, 0x72, 0x54, 0x57, 0x1e, 0x8e, 0xea, 0xca, 0xa7,
    +	0xa3, 0xba, 0xf2, 0xd9, 0xa8, 0xae, 0xfc, 0x7d, 0x54, 0x57, 0x7e, 0xfb, 0x79, 0x7d, 0xea, 0x2e,
    +	0xcc, 0xfe, 0x2b, 0xf3, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd3, 0xfa, 0xed, 0x70, 0xaa, 0x29,
    +	0x00, 0x00,
     }
     
     func (m *ControllerRevision) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/apps/v1/generated.proto b/vendor/k8s.io/api/apps/v1/generated.proto
    index a7a7e7c54711..388e638f4dff 100644
    --- a/vendor/k8s.io/api/apps/v1/generated.proto
    +++ b/vendor/k8s.io/api/apps/v1/generated.proto
    @@ -43,10 +43,10 @@ message ControllerRevision {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Data is the serialized representation of the state.
    -  optional k8s.io.apimachinery.pkg.runtime.RawExtension data = 2;
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension data = 2;
     
       // Revision indicates the revision of the state represented by Data.
       optional int64 revision = 3;
    @@ -56,7 +56,7 @@ message ControllerRevision {
     message ControllerRevisionList {
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of ControllerRevisions
       repeated ControllerRevision items = 2;
    @@ -67,7 +67,7 @@ message DaemonSet {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // The desired behavior of this daemon set.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -93,7 +93,7 @@ message DaemonSetCondition {
     
       // Last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // The reason for the condition's last transition.
       // +optional
    @@ -109,7 +109,7 @@ message DaemonSetList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // A list of daemon sets.
       repeated DaemonSet items = 2;
    @@ -121,7 +121,7 @@ message DaemonSetSpec {
       // Must match in order to be controlled.
       // It must match the pod template's labels.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1;
     
       // An object that describes the pod that will be created.
       // The DaemonSet will create exactly one copy of this pod on every node
    @@ -129,7 +129,7 @@ message DaemonSetSpec {
       // selector is specified).
       // The only allowed template.spec.restartPolicy value is "Always".
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 2;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;
     
       // An update strategy to replace existing DaemonSet pods with new pods.
       // +optional
    @@ -200,6 +200,8 @@ message DaemonSetStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated DaemonSetCondition conditions = 10;
     }
     
    @@ -223,7 +225,7 @@ message Deployment {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the Deployment.
       // +optional
    @@ -243,10 +245,10 @@ message DeploymentCondition {
       optional string status = 2;
     
       // The last time this condition was updated.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6;
     
       // Last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7;
     
       // The reason for the condition's last transition.
       optional string reason = 4;
    @@ -259,7 +261,7 @@ message DeploymentCondition {
     message DeploymentList {
       // Standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of Deployments.
       repeated Deployment items = 2;
    @@ -275,11 +277,11 @@ message DeploymentSpec {
       // Label selector for pods. Existing ReplicaSets whose pods are
       // selected by this will be the ones affected by this deployment.
       // It must match the pod template's labels.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // Template describes the pods that will be created.
       // The only allowed template.spec.restartPolicy value is "Always".
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 3;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;
     
       // The deployment strategy to use to replace existing pods with new ones.
       // +optional
    @@ -341,6 +343,8 @@ message DeploymentStatus {
       // Represents the latest available observations of a deployment's current state.
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated DeploymentCondition conditions = 6;
     
       // Count of hash collisions for the Deployment. The Deployment controller uses this
    @@ -372,7 +376,7 @@ message ReplicaSet {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the specification of the desired behavior of the ReplicaSet.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -398,7 +402,7 @@ message ReplicaSetCondition {
     
       // The last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // The reason for the condition's last transition.
       // +optional
    @@ -414,7 +418,7 @@ message ReplicaSetList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of ReplicaSets.
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
    @@ -440,13 +444,13 @@ message ReplicaSetSpec {
       // Label keys and values that must match in order to be controlled by this replica set.
       // It must match the pod template's labels.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // Template is the object that describes the pod that will be created if
       // insufficient replicas are detected.
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       // +optional
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 3;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;
     }
     
     // ReplicaSetStatus represents the current status of a ReplicaSet.
    @@ -475,6 +479,8 @@ message ReplicaSetStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated ReplicaSetCondition conditions = 6;
     }
     
    @@ -495,7 +501,7 @@ message RollingUpdateDaemonSet {
       // 70% of original number of DaemonSet pods are available at all times during
       // the update.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
     
       // The maximum number of nodes with an existing available DaemonSet pod that
       // can have an updated DaemonSet pod during during an update.
    @@ -516,7 +522,7 @@ message RollingUpdateDaemonSet {
       // so resource intensive daemonsets should take into account that they may
       // cause evictions during disruption.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
     }
     
     // Spec to control the desired behavior of rolling update.
    @@ -532,7 +538,7 @@ message RollingUpdateDeployment {
       // that the total number of pods available at all times during the update is at
       // least 70% of desired pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
     
       // The maximum number of pods that can be scheduled above the desired number of
       // pods.
    @@ -546,7 +552,7 @@ message RollingUpdateDeployment {
       // new ReplicaSet can be scaled up further, ensuring that total number of pods running
       // at any time during the update is at most 130% of desired pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
     }
     
     // RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.
    @@ -566,7 +572,7 @@ message RollingUpdateStatefulSetStrategy {
       // Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it
       // will be counted towards MaxUnavailable.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 2;
     }
     
     // StatefulSet represents a set of pods with consistent identities.
    @@ -580,7 +586,7 @@ message StatefulSet {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the desired identities of pods in this set.
       // +optional
    @@ -602,7 +608,7 @@ message StatefulSetCondition {
     
       // Last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // The reason for the condition's last transition.
       // +optional
    @@ -618,7 +624,7 @@ message StatefulSetList {
       // Standard list's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of stateful sets.
       repeated StatefulSet items = 2;
    @@ -669,7 +675,7 @@ message StatefulSetSpec {
       // selector is a label query over pods that should match the replica count.
       // It must match the pod template's labels.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // template is the object that describes the pod that will be created if
       // insufficient replicas are detected. Each pod stamped out by the StatefulSet
    @@ -678,7 +684,7 @@ message StatefulSetSpec {
       // -. For example, a pod in a StatefulSet named
       // "web" with index number "3" would be named "web-3".
       // The only allowed template.spec.restartPolicy value is "Always".
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 3;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;
     
       // volumeClaimTemplates is a list of claims that pods are allowed to reference.
       // The StatefulSet controller is responsible for mapping network identities to
    @@ -688,7 +694,8 @@ message StatefulSetSpec {
       // any volumes in the template, with the same name.
       // TODO: Define the behavior if a claim already exists with the same name.
       // +optional
    -  repeated k8s.io.api.core.v1.PersistentVolumeClaim volumeClaimTemplates = 4;
    +  // +listType=atomic
    +  repeated .k8s.io.api.core.v1.PersistentVolumeClaim volumeClaimTemplates = 4;
     
       // serviceName is the name of the service that governs this StatefulSet.
       // This service must exist before the StatefulSet, and is responsible for
    @@ -730,15 +737,13 @@ message StatefulSetSpec {
       // volume claims are created as needed and retained until manually deleted. This
       // policy allows the lifecycle to be altered, for example by deleting persistent
       // volume claims when their stateful set is deleted, or when their pod is scaled
    -  // down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled,
    -  // which is alpha.  +optional
    +  // down.
    +  // +optional
       optional StatefulSetPersistentVolumeClaimRetentionPolicy persistentVolumeClaimRetentionPolicy = 10;
     
       // ordinals controls the numbering of replica indices in a StatefulSet. The
       // default ordinals behavior assigns a "0" index to the first replica and
    -  // increments the index by one for each additional replica requested. Using
    -  // the ordinals field requires the StatefulSetStartOrdinal feature gate to be
    -  // enabled, which is beta.
    +  // increments the index by one for each additional replica requested.
       // +optional
       optional StatefulSetOrdinals ordinals = 11;
     }
    @@ -782,6 +787,8 @@ message StatefulSetStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated StatefulSetCondition conditions = 10;
     
       // Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset.
    diff --git a/vendor/k8s.io/api/apps/v1/types.go b/vendor/k8s.io/api/apps/v1/types.go
    index 644d368fe4d8..a68690b4478e 100644
    --- a/vendor/k8s.io/api/apps/v1/types.go
    +++ b/vendor/k8s.io/api/apps/v1/types.go
    @@ -37,6 +37,7 @@ const (
     // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
     // +genclient:method=ApplyScale,verb=apply,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.9
     
     // StatefulSet represents a set of pods with consistent identities.
     // Identities are defined as:
    @@ -141,7 +142,7 @@ const (
     	// PersistentVolumeClaims associated with StatefulSet VolumeClaimTemplates
     	// will not be deleted.
     	RetainPersistentVolumeClaimRetentionPolicyType PersistentVolumeClaimRetentionPolicyType = "Retain"
    -	// RetentionPersistentVolumeClaimRetentionPolicyType specifies that
    +	// DeletePersistentVolumeClaimRetentionPolicyType specifies that
     	// PersistentVolumeClaims associated with StatefulSet VolumeClaimTemplates
     	// will be deleted in the scenario specified in
     	// StatefulSetPersistentVolumeClaimRetentionPolicy.
    @@ -211,6 +212,7 @@ type StatefulSetSpec struct {
     	// any volumes in the template, with the same name.
     	// TODO: Define the behavior if a claim already exists with the same name.
     	// +optional
    +	// +listType=atomic
     	VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" protobuf:"bytes,4,rep,name=volumeClaimTemplates"`
     
     	// serviceName is the name of the service that governs this StatefulSet.
    @@ -253,15 +255,13 @@ type StatefulSetSpec struct {
     	// volume claims are created as needed and retained until manually deleted. This
     	// policy allows the lifecycle to be altered, for example by deleting persistent
     	// volume claims when their stateful set is deleted, or when their pod is scaled
    -	// down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled,
    -	// which is alpha.  +optional
    +	// down.
    +	// +optional
     	PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy `json:"persistentVolumeClaimRetentionPolicy,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaimRetentionPolicy"`
     
     	// ordinals controls the numbering of replica indices in a StatefulSet. The
     	// default ordinals behavior assigns a "0" index to the first replica and
    -	// increments the index by one for each additional replica requested. Using
    -	// the ordinals field requires the StatefulSetStartOrdinal feature gate to be
    -	// enabled, which is beta.
    +	// increments the index by one for each additional replica requested.
     	// +optional
     	Ordinals *StatefulSetOrdinals `json:"ordinals,omitempty" protobuf:"bytes,11,opt,name=ordinals"`
     }
    @@ -305,6 +305,8 @@ type StatefulSetStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []StatefulSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"`
     
     	// Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset.
    @@ -332,6 +334,7 @@ type StatefulSetCondition struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.9
     
     // StatefulSetList is a collection of StatefulSets.
     type StatefulSetList struct {
    @@ -350,6 +353,7 @@ type StatefulSetList struct {
     // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
     // +genclient:method=ApplyScale,verb=apply,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.9
     
     // Deployment enables declarative updates for Pods and ReplicaSets.
     type Deployment struct {
    @@ -507,6 +511,8 @@ type DeploymentStatus struct {
     	// Represents the latest available observations of a deployment's current state.
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []DeploymentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`
     
     	// Count of hash collisions for the Deployment. The Deployment controller uses this
    @@ -550,6 +556,7 @@ type DeploymentCondition struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.9
     
     // DeploymentList is a list of Deployments.
     type DeploymentList struct {
    @@ -714,6 +721,8 @@ type DaemonSetStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []DaemonSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"`
     }
     
    @@ -740,6 +749,7 @@ type DaemonSetCondition struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.9
     
     // DaemonSet represents the configuration of a daemon set.
     type DaemonSet struct {
    @@ -771,6 +781,7 @@ const (
     )
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.9
     
     // DaemonSetList is a collection of daemon sets.
     type DaemonSetList struct {
    @@ -789,6 +800,7 @@ type DaemonSetList struct {
     // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
     // +genclient:method=ApplyScale,verb=apply,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.9
     
     // ReplicaSet ensures that a specified number of pod replicas are running at any given time.
     type ReplicaSet struct {
    @@ -816,6 +828,7 @@ type ReplicaSet struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.9
     
     // ReplicaSetList is a collection of ReplicaSets.
     type ReplicaSetList struct {
    @@ -884,6 +897,8 @@ type ReplicaSetStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []ReplicaSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`
     }
     
    @@ -916,6 +931,7 @@ type ReplicaSetCondition struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.9
     
     // ControllerRevision implements an immutable snapshot of state data. Clients
     // are responsible for serializing and deserializing the objects that contain
    @@ -941,6 +957,7 @@ type ControllerRevision struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.9
     
     // ControllerRevisionList is a resource containing a list of ControllerRevision objects.
     type ControllerRevisionList struct {
    diff --git a/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go
    index 6676da064037..341ecdadb269 100644
    --- a/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go
    @@ -354,8 +354,8 @@ var map_StatefulSetSpec = map[string]string{
     	"updateStrategy":                       "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.",
     	"revisionHistoryLimit":                 "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.",
     	"minReadySeconds":                      "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)",
    -	"persistentVolumeClaimRetentionPolicy": "persistentVolumeClaimRetentionPolicy describes the lifecycle of persistent volume claims created from volumeClaimTemplates. By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.  +optional",
    -	"ordinals":                             "ordinals controls the numbering of replica indices in a StatefulSet. The default ordinals behavior assigns a \"0\" index to the first replica and increments the index by one for each additional replica requested. Using the ordinals field requires the StatefulSetStartOrdinal feature gate to be enabled, which is beta.",
    +	"persistentVolumeClaimRetentionPolicy": "persistentVolumeClaimRetentionPolicy describes the lifecycle of persistent volume claims created from volumeClaimTemplates. By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down.",
    +	"ordinals":                             "ordinals controls the numbering of replica indices in a StatefulSet. The default ordinals behavior assigns a \"0\" index to the first replica and increments the index by one for each additional replica requested.",
     }
     
     func (StatefulSetSpec) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/apps/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/apps/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..34a036b6252d
    --- /dev/null
    +++ b/vendor/k8s.io/api/apps/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,82 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ControllerRevision) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 9
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ControllerRevisionList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 9
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *DaemonSet) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 9
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *DaemonSetList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 9
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Deployment) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 9
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *DeploymentList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 9
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ReplicaSet) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 9
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ReplicaSetList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 9
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *StatefulSet) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 9
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *StatefulSetList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 9
    +}
    diff --git a/vendor/k8s.io/api/apps/v1beta1/generated.pb.go b/vendor/k8s.io/api/apps/v1beta1/generated.pb.go
    index 2f1e7c00a187..76e755b4a360 100644
    --- a/vendor/k8s.io/api/apps/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/apps/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta1/generated.proto
    +// source: k8s.io/api/apps/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -52,7 +52,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ControllerRevision) Reset()      { *m = ControllerRevision{} }
     func (*ControllerRevision) ProtoMessage() {}
     func (*ControllerRevision) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{0}
    +	return fileDescriptor_2747f709ac7c95e7, []int{0}
     }
     func (m *ControllerRevision) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -80,7 +80,7 @@ var xxx_messageInfo_ControllerRevision proto.InternalMessageInfo
     func (m *ControllerRevisionList) Reset()      { *m = ControllerRevisionList{} }
     func (*ControllerRevisionList) ProtoMessage() {}
     func (*ControllerRevisionList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{1}
    +	return fileDescriptor_2747f709ac7c95e7, []int{1}
     }
     func (m *ControllerRevisionList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -108,7 +108,7 @@ var xxx_messageInfo_ControllerRevisionList proto.InternalMessageInfo
     func (m *Deployment) Reset()      { *m = Deployment{} }
     func (*Deployment) ProtoMessage() {}
     func (*Deployment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{2}
    +	return fileDescriptor_2747f709ac7c95e7, []int{2}
     }
     func (m *Deployment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -136,7 +136,7 @@ var xxx_messageInfo_Deployment proto.InternalMessageInfo
     func (m *DeploymentCondition) Reset()      { *m = DeploymentCondition{} }
     func (*DeploymentCondition) ProtoMessage() {}
     func (*DeploymentCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{3}
    +	return fileDescriptor_2747f709ac7c95e7, []int{3}
     }
     func (m *DeploymentCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -164,7 +164,7 @@ var xxx_messageInfo_DeploymentCondition proto.InternalMessageInfo
     func (m *DeploymentList) Reset()      { *m = DeploymentList{} }
     func (*DeploymentList) ProtoMessage() {}
     func (*DeploymentList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{4}
    +	return fileDescriptor_2747f709ac7c95e7, []int{4}
     }
     func (m *DeploymentList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -192,7 +192,7 @@ var xxx_messageInfo_DeploymentList proto.InternalMessageInfo
     func (m *DeploymentRollback) Reset()      { *m = DeploymentRollback{} }
     func (*DeploymentRollback) ProtoMessage() {}
     func (*DeploymentRollback) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{5}
    +	return fileDescriptor_2747f709ac7c95e7, []int{5}
     }
     func (m *DeploymentRollback) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -220,7 +220,7 @@ var xxx_messageInfo_DeploymentRollback proto.InternalMessageInfo
     func (m *DeploymentSpec) Reset()      { *m = DeploymentSpec{} }
     func (*DeploymentSpec) ProtoMessage() {}
     func (*DeploymentSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{6}
    +	return fileDescriptor_2747f709ac7c95e7, []int{6}
     }
     func (m *DeploymentSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -248,7 +248,7 @@ var xxx_messageInfo_DeploymentSpec proto.InternalMessageInfo
     func (m *DeploymentStatus) Reset()      { *m = DeploymentStatus{} }
     func (*DeploymentStatus) ProtoMessage() {}
     func (*DeploymentStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{7}
    +	return fileDescriptor_2747f709ac7c95e7, []int{7}
     }
     func (m *DeploymentStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -276,7 +276,7 @@ var xxx_messageInfo_DeploymentStatus proto.InternalMessageInfo
     func (m *DeploymentStrategy) Reset()      { *m = DeploymentStrategy{} }
     func (*DeploymentStrategy) ProtoMessage() {}
     func (*DeploymentStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{8}
    +	return fileDescriptor_2747f709ac7c95e7, []int{8}
     }
     func (m *DeploymentStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -304,7 +304,7 @@ var xxx_messageInfo_DeploymentStrategy proto.InternalMessageInfo
     func (m *RollbackConfig) Reset()      { *m = RollbackConfig{} }
     func (*RollbackConfig) ProtoMessage() {}
     func (*RollbackConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{9}
    +	return fileDescriptor_2747f709ac7c95e7, []int{9}
     }
     func (m *RollbackConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -332,7 +332,7 @@ var xxx_messageInfo_RollbackConfig proto.InternalMessageInfo
     func (m *RollingUpdateDeployment) Reset()      { *m = RollingUpdateDeployment{} }
     func (*RollingUpdateDeployment) ProtoMessage() {}
     func (*RollingUpdateDeployment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{10}
    +	return fileDescriptor_2747f709ac7c95e7, []int{10}
     }
     func (m *RollingUpdateDeployment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -360,7 +360,7 @@ var xxx_messageInfo_RollingUpdateDeployment proto.InternalMessageInfo
     func (m *RollingUpdateStatefulSetStrategy) Reset()      { *m = RollingUpdateStatefulSetStrategy{} }
     func (*RollingUpdateStatefulSetStrategy) ProtoMessage() {}
     func (*RollingUpdateStatefulSetStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{11}
    +	return fileDescriptor_2747f709ac7c95e7, []int{11}
     }
     func (m *RollingUpdateStatefulSetStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -388,7 +388,7 @@ var xxx_messageInfo_RollingUpdateStatefulSetStrategy proto.InternalMessageInfo
     func (m *Scale) Reset()      { *m = Scale{} }
     func (*Scale) ProtoMessage() {}
     func (*Scale) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{12}
    +	return fileDescriptor_2747f709ac7c95e7, []int{12}
     }
     func (m *Scale) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -416,7 +416,7 @@ var xxx_messageInfo_Scale proto.InternalMessageInfo
     func (m *ScaleSpec) Reset()      { *m = ScaleSpec{} }
     func (*ScaleSpec) ProtoMessage() {}
     func (*ScaleSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{13}
    +	return fileDescriptor_2747f709ac7c95e7, []int{13}
     }
     func (m *ScaleSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -444,7 +444,7 @@ var xxx_messageInfo_ScaleSpec proto.InternalMessageInfo
     func (m *ScaleStatus) Reset()      { *m = ScaleStatus{} }
     func (*ScaleStatus) ProtoMessage() {}
     func (*ScaleStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{14}
    +	return fileDescriptor_2747f709ac7c95e7, []int{14}
     }
     func (m *ScaleStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -472,7 +472,7 @@ var xxx_messageInfo_ScaleStatus proto.InternalMessageInfo
     func (m *StatefulSet) Reset()      { *m = StatefulSet{} }
     func (*StatefulSet) ProtoMessage() {}
     func (*StatefulSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{15}
    +	return fileDescriptor_2747f709ac7c95e7, []int{15}
     }
     func (m *StatefulSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -500,7 +500,7 @@ var xxx_messageInfo_StatefulSet proto.InternalMessageInfo
     func (m *StatefulSetCondition) Reset()      { *m = StatefulSetCondition{} }
     func (*StatefulSetCondition) ProtoMessage() {}
     func (*StatefulSetCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{16}
    +	return fileDescriptor_2747f709ac7c95e7, []int{16}
     }
     func (m *StatefulSetCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -528,7 +528,7 @@ var xxx_messageInfo_StatefulSetCondition proto.InternalMessageInfo
     func (m *StatefulSetList) Reset()      { *m = StatefulSetList{} }
     func (*StatefulSetList) ProtoMessage() {}
     func (*StatefulSetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{17}
    +	return fileDescriptor_2747f709ac7c95e7, []int{17}
     }
     func (m *StatefulSetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -556,7 +556,7 @@ var xxx_messageInfo_StatefulSetList proto.InternalMessageInfo
     func (m *StatefulSetOrdinals) Reset()      { *m = StatefulSetOrdinals{} }
     func (*StatefulSetOrdinals) ProtoMessage() {}
     func (*StatefulSetOrdinals) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{18}
    +	return fileDescriptor_2747f709ac7c95e7, []int{18}
     }
     func (m *StatefulSetOrdinals) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -586,7 +586,7 @@ func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Reset() {
     }
     func (*StatefulSetPersistentVolumeClaimRetentionPolicy) ProtoMessage() {}
     func (*StatefulSetPersistentVolumeClaimRetentionPolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{19}
    +	return fileDescriptor_2747f709ac7c95e7, []int{19}
     }
     func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -614,7 +614,7 @@ var xxx_messageInfo_StatefulSetPersistentVolumeClaimRetentionPolicy proto.Intern
     func (m *StatefulSetSpec) Reset()      { *m = StatefulSetSpec{} }
     func (*StatefulSetSpec) ProtoMessage() {}
     func (*StatefulSetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{20}
    +	return fileDescriptor_2747f709ac7c95e7, []int{20}
     }
     func (m *StatefulSetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -642,7 +642,7 @@ var xxx_messageInfo_StatefulSetSpec proto.InternalMessageInfo
     func (m *StatefulSetStatus) Reset()      { *m = StatefulSetStatus{} }
     func (*StatefulSetStatus) ProtoMessage() {}
     func (*StatefulSetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{21}
    +	return fileDescriptor_2747f709ac7c95e7, []int{21}
     }
     func (m *StatefulSetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -670,7 +670,7 @@ var xxx_messageInfo_StatefulSetStatus proto.InternalMessageInfo
     func (m *StatefulSetUpdateStrategy) Reset()      { *m = StatefulSetUpdateStrategy{} }
     func (*StatefulSetUpdateStrategy) ProtoMessage() {}
     func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2a07313e8f66e805, []int{22}
    +	return fileDescriptor_2747f709ac7c95e7, []int{22}
     }
     func (m *StatefulSetUpdateStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -724,138 +724,137 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta1/generated.proto", fileDescriptor_2a07313e8f66e805)
    +	proto.RegisterFile("k8s.io/api/apps/v1beta1/generated.proto", fileDescriptor_2747f709ac7c95e7)
     }
     
    -var fileDescriptor_2a07313e8f66e805 = []byte{
    -	// 2034 bytes of a gzipped FileDescriptorProto
    +var fileDescriptor_2747f709ac7c95e7 = []byte{
    +	// 2018 bytes of a gzipped FileDescriptorProto
     	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0xcd, 0x6f, 0x1b, 0xc7,
    -	0x15, 0xd7, 0x52, 0xa2, 0x44, 0x3d, 0x45, 0x54, 0x3c, 0x52, 0x2d, 0x46, 0x69, 0x25, 0x61, 0x63,
    -	0x24, 0x4a, 0x62, 0x2f, 0x63, 0x25, 0x0d, 0x12, 0xbb, 0x75, 0x2b, 0x4a, 0x6e, 0xec, 0x40, 0x8a,
    +	0x15, 0xf7, 0x52, 0xa2, 0x44, 0x3d, 0x45, 0x94, 0x3d, 0x52, 0x2d, 0x46, 0x69, 0x25, 0x61, 0x63,
    +	0xc4, 0x4a, 0x62, 0x2f, 0x63, 0x25, 0x0d, 0x12, 0xbb, 0x75, 0x21, 0x4a, 0x6e, 0xec, 0x40, 0x8a,
     	0x94, 0x91, 0x64, 0xa3, 0xe9, 0x07, 0x32, 0x22, 0xc7, 0xd4, 0x46, 0xfb, 0x85, 0xdd, 0x21, 0x63,
     	0xa2, 0x97, 0xfe, 0x01, 0x05, 0xd2, 0x73, 0xff, 0x8a, 0xf6, 0xd4, 0xa2, 0x45, 0x2f, 0x3d, 0x14,
     	0x3e, 0x06, 0xbd, 0x34, 0x27, 0xa2, 0x66, 0xae, 0xed, 0xad, 0xbd, 0x18, 0x28, 0x50, 0xcc, 0xec,
    -	0xec, 0xf7, 0xae, 0xb4, 0x2c, 0x60, 0x01, 0xed, 0x8d, 0x3b, 0xef, 0xbd, 0xdf, 0x7b, 0xf3, 0xe6,
    -	0xbd, 0x37, 0xef, 0x0d, 0xe1, 0xfb, 0x67, 0xef, 0x79, 0x9a, 0x6e, 0x37, 0xcf, 0x7a, 0x27, 0xd4,
    -	0xb5, 0x28, 0xa3, 0x5e, 0xb3, 0x4f, 0xad, 0x8e, 0xed, 0x36, 0x25, 0x81, 0x38, 0x7a, 0x93, 0x38,
    -	0x8e, 0xd7, 0xec, 0xdf, 0x3c, 0xa1, 0x8c, 0xdc, 0x6c, 0x76, 0xa9, 0x45, 0x5d, 0xc2, 0x68, 0x47,
    -	0x73, 0x5c, 0x9b, 0xd9, 0x68, 0xd9, 0x67, 0xd4, 0x88, 0xa3, 0x6b, 0x9c, 0x51, 0x93, 0x8c, 0x2b,
    -	0x37, 0xba, 0x3a, 0x3b, 0xed, 0x9d, 0x68, 0x6d, 0xdb, 0x6c, 0x76, 0xed, 0xae, 0xdd, 0x14, 0xfc,
    -	0x27, 0xbd, 0x47, 0xe2, 0x4b, 0x7c, 0x88, 0x5f, 0x3e, 0xce, 0x8a, 0x1a, 0x53, 0xd8, 0xb6, 0x5d,
    -	0xda, 0xec, 0x67, 0x74, 0xad, 0xbc, 0x13, 0xf1, 0x98, 0xa4, 0x7d, 0xaa, 0x5b, 0xd4, 0x1d, 0x34,
    -	0x9d, 0xb3, 0x2e, 0x5f, 0xf0, 0x9a, 0x26, 0x65, 0x24, 0x4f, 0xaa, 0x59, 0x24, 0xe5, 0xf6, 0x2c,
    -	0xa6, 0x9b, 0x34, 0x23, 0xf0, 0xee, 0x45, 0x02, 0x5e, 0xfb, 0x94, 0x9a, 0x24, 0x23, 0xf7, 0x76,
    -	0x91, 0x5c, 0x8f, 0xe9, 0x46, 0x53, 0xb7, 0x98, 0xc7, 0xdc, 0xb4, 0x90, 0xfa, 0x2f, 0x05, 0xd0,
    -	0xb6, 0x6d, 0x31, 0xd7, 0x36, 0x0c, 0xea, 0x62, 0xda, 0xd7, 0x3d, 0xdd, 0xb6, 0xd0, 0xa7, 0x50,
    -	0xe3, 0xfb, 0xe9, 0x10, 0x46, 0x1a, 0xca, 0xba, 0xb2, 0x31, 0xb7, 0xf9, 0x96, 0x16, 0x79, 0x3a,
    -	0x84, 0xd7, 0x9c, 0xb3, 0x2e, 0x5f, 0xf0, 0x34, 0xce, 0xad, 0xf5, 0x6f, 0x6a, 0xfb, 0x27, 0x9f,
    -	0xd1, 0x36, 0xdb, 0xa3, 0x8c, 0xb4, 0xd0, 0x93, 0xe1, 0xda, 0xc4, 0x68, 0xb8, 0x06, 0xd1, 0x1a,
    -	0x0e, 0x51, 0xd1, 0x3e, 0x4c, 0x09, 0xf4, 0x8a, 0x40, 0xbf, 0x51, 0x88, 0x2e, 0x37, 0xad, 0x61,
    -	0xf2, 0xf9, 0xdd, 0xc7, 0x8c, 0x5a, 0xdc, 0xbc, 0xd6, 0x0b, 0x12, 0x7a, 0x6a, 0x87, 0x30, 0x82,
    -	0x05, 0x10, 0xba, 0x0e, 0x35, 0x57, 0x9a, 0xdf, 0x98, 0x5c, 0x57, 0x36, 0x26, 0x5b, 0x2f, 0x4a,
    -	0xae, 0x5a, 0xb0, 0x2d, 0x1c, 0x72, 0xa8, 0x4f, 0x14, 0xb8, 0x9a, 0xdd, 0xf7, 0xae, 0xee, 0x31,
    -	0xf4, 0xe3, 0xcc, 0xde, 0xb5, 0x72, 0x7b, 0xe7, 0xd2, 0x62, 0xe7, 0xa1, 0xe2, 0x60, 0x25, 0xb6,
    -	0xef, 0x03, 0xa8, 0xea, 0x8c, 0x9a, 0x5e, 0xa3, 0xb2, 0x3e, 0xb9, 0x31, 0xb7, 0xf9, 0xa6, 0x56,
    -	0x10, 0xc0, 0x5a, 0xd6, 0xba, 0xd6, 0xbc, 0xc4, 0xad, 0xde, 0xe7, 0x08, 0xd8, 0x07, 0x52, 0x7f,
    -	0x51, 0x01, 0xd8, 0xa1, 0x8e, 0x61, 0x0f, 0x4c, 0x6a, 0xb1, 0x4b, 0x38, 0xba, 0xfb, 0x30, 0xe5,
    -	0x39, 0xb4, 0x2d, 0x8f, 0xee, 0xb5, 0xc2, 0x1d, 0x44, 0x46, 0x1d, 0x3a, 0xb4, 0x1d, 0x1d, 0x1a,
    -	0xff, 0xc2, 0x02, 0x02, 0x7d, 0x0c, 0xd3, 0x1e, 0x23, 0xac, 0xe7, 0x89, 0x23, 0x9b, 0xdb, 0x7c,
    -	0xbd, 0x0c, 0x98, 0x10, 0x68, 0xd5, 0x25, 0xdc, 0xb4, 0xff, 0x8d, 0x25, 0x90, 0xfa, 0xd7, 0x49,
    -	0x58, 0x8c, 0x98, 0xb7, 0x6d, 0xab, 0xa3, 0x33, 0x1e, 0xd2, 0xb7, 0x61, 0x8a, 0x0d, 0x1c, 0x2a,
    -	0x7c, 0x32, 0xdb, 0x7a, 0x2d, 0x30, 0xe6, 0x68, 0xe0, 0xd0, 0x67, 0xc3, 0xb5, 0xe5, 0x1c, 0x11,
    -	0x4e, 0xc2, 0x42, 0x08, 0xed, 0x86, 0x76, 0x56, 0x84, 0xf8, 0x3b, 0x49, 0xe5, 0xcf, 0x86, 0x6b,
    -	0x39, 0x05, 0x44, 0x0b, 0x91, 0x92, 0x26, 0xa2, 0xcf, 0xa0, 0x6e, 0x10, 0x8f, 0x1d, 0x3b, 0x1d,
    -	0xc2, 0xe8, 0x91, 0x6e, 0xd2, 0xc6, 0xb4, 0xd8, 0xfd, 0x1b, 0xe5, 0x0e, 0x8a, 0x4b, 0xb4, 0xae,
    -	0x4a, 0x0b, 0xea, 0xbb, 0x09, 0x24, 0x9c, 0x42, 0x46, 0x7d, 0x40, 0x7c, 0xe5, 0xc8, 0x25, 0x96,
    -	0xe7, 0xef, 0x8a, 0xeb, 0x9b, 0x19, 0x5b, 0xdf, 0x8a, 0xd4, 0x87, 0x76, 0x33, 0x68, 0x38, 0x47,
    -	0x03, 0x7a, 0x15, 0xa6, 0x5d, 0x4a, 0x3c, 0xdb, 0x6a, 0x4c, 0x09, 0x8f, 0x85, 0xc7, 0x85, 0xc5,
    -	0x2a, 0x96, 0x54, 0xf4, 0x3a, 0xcc, 0x98, 0xd4, 0xf3, 0x48, 0x97, 0x36, 0xaa, 0x82, 0x71, 0x41,
    -	0x32, 0xce, 0xec, 0xf9, 0xcb, 0x38, 0xa0, 0xab, 0xbf, 0x53, 0xa0, 0x1e, 0x1d, 0xd3, 0x25, 0xe4,
    -	0xea, 0xbd, 0x64, 0xae, 0xbe, 0x52, 0x22, 0x38, 0x0b, 0x72, 0xf4, 0xef, 0x15, 0x40, 0x11, 0x13,
    -	0xb6, 0x0d, 0xe3, 0x84, 0xb4, 0xcf, 0xd0, 0x3a, 0x4c, 0x59, 0xc4, 0x0c, 0x62, 0x32, 0x4c, 0x90,
    -	0x8f, 0x88, 0x49, 0xb1, 0xa0, 0xa0, 0x2f, 0x14, 0x40, 0x3d, 0x71, 0x9a, 0x9d, 0x2d, 0xcb, 0xb2,
    -	0x19, 0xe1, 0x0e, 0x0e, 0x0c, 0xda, 0x2e, 0x61, 0x50, 0xa0, 0x4b, 0x3b, 0xce, 0xa0, 0xdc, 0xb5,
    -	0x98, 0x3b, 0x88, 0x0e, 0x36, 0xcb, 0x80, 0x73, 0x54, 0xa3, 0x1f, 0x01, 0xb8, 0x12, 0xf3, 0xc8,
    -	0x96, 0x69, 0x5b, 0x5c, 0x03, 0x02, 0xf5, 0xdb, 0xb6, 0xf5, 0x48, 0xef, 0x46, 0x85, 0x05, 0x87,
    -	0x10, 0x38, 0x06, 0xb7, 0x72, 0x17, 0x96, 0x0b, 0xec, 0x44, 0x2f, 0xc2, 0xe4, 0x19, 0x1d, 0xf8,
    -	0xae, 0xc2, 0xfc, 0x27, 0x5a, 0x82, 0x6a, 0x9f, 0x18, 0x3d, 0xea, 0xe7, 0x24, 0xf6, 0x3f, 0x6e,
    -	0x55, 0xde, 0x53, 0xd4, 0x5f, 0x57, 0xe3, 0x91, 0xc2, 0xeb, 0x0d, 0xda, 0xe0, 0xd7, 0x83, 0x63,
    -	0xe8, 0x6d, 0xe2, 0x09, 0x8c, 0x6a, 0xeb, 0x05, 0xff, 0x6a, 0xf0, 0xd7, 0x70, 0x48, 0x45, 0x3f,
    -	0x81, 0x9a, 0x47, 0x0d, 0xda, 0x66, 0xb6, 0x2b, 0x4b, 0xdc, 0xdb, 0x25, 0x63, 0x8a, 0x9c, 0x50,
    -	0xe3, 0x50, 0x8a, 0xfa, 0xf0, 0xc1, 0x17, 0x0e, 0x21, 0xd1, 0xc7, 0x50, 0x63, 0xd4, 0x74, 0x0c,
    -	0xc2, 0xa8, 0xf4, 0x5e, 0x22, 0xae, 0x78, 0xed, 0xe0, 0x60, 0x07, 0x76, 0xe7, 0x48, 0xb2, 0x89,
    -	0xea, 0x19, 0xc6, 0x69, 0xb0, 0x8a, 0x43, 0x18, 0xf4, 0x43, 0xa8, 0x79, 0x8c, 0xdf, 0xea, 0xdd,
    -	0x81, 0xc8, 0xb6, 0xf3, 0xae, 0x95, 0x78, 0x1d, 0xf5, 0x45, 0x22, 0xe8, 0x60, 0x05, 0x87, 0x70,
    -	0x68, 0x0b, 0x16, 0x4c, 0xdd, 0xc2, 0x94, 0x74, 0x06, 0x87, 0xb4, 0x6d, 0x5b, 0x1d, 0x4f, 0xa4,
    -	0x69, 0xb5, 0xb5, 0x2c, 0x85, 0x16, 0xf6, 0x92, 0x64, 0x9c, 0xe6, 0x47, 0xbb, 0xb0, 0x14, 0x5c,
    -	0xbb, 0xf7, 0x74, 0x8f, 0xd9, 0xee, 0x60, 0x57, 0x37, 0x75, 0x26, 0x6a, 0x5e, 0xb5, 0xd5, 0x18,
    -	0x0d, 0xd7, 0x96, 0x70, 0x0e, 0x1d, 0xe7, 0x4a, 0xf1, 0xba, 0xe2, 0x90, 0x9e, 0x47, 0x3b, 0xa2,
    -	0x86, 0xd5, 0xa2, 0xba, 0x72, 0x20, 0x56, 0xb1, 0xa4, 0xa2, 0x87, 0x89, 0x30, 0xad, 0x8d, 0x17,
    -	0xa6, 0xf5, 0xe2, 0x10, 0x45, 0xc7, 0xb0, 0xec, 0xb8, 0x76, 0xd7, 0xa5, 0x9e, 0xb7, 0x43, 0x49,
    -	0xc7, 0xd0, 0x2d, 0x1a, 0x78, 0x66, 0x56, 0xec, 0xe8, 0xe5, 0xd1, 0x70, 0x6d, 0xf9, 0x20, 0x9f,
    -	0x05, 0x17, 0xc9, 0xaa, 0x7f, 0x9a, 0x82, 0x17, 0xd3, 0x77, 0x1c, 0xfa, 0x10, 0x90, 0x7d, 0xe2,
    -	0x51, 0xb7, 0x4f, 0x3b, 0x1f, 0xf8, 0x8d, 0x1b, 0xef, 0x6e, 0x14, 0xd1, 0xdd, 0x84, 0x79, 0xbb,
    -	0x9f, 0xe1, 0xc0, 0x39, 0x52, 0x7e, 0x7f, 0x24, 0x13, 0xa0, 0x22, 0x0c, 0x8d, 0xf5, 0x47, 0x99,
    -	0x24, 0xd8, 0x82, 0x05, 0x99, 0xfb, 0x01, 0x51, 0x04, 0x6b, 0xec, 0xdc, 0x8f, 0x93, 0x64, 0x9c,
    -	0xe6, 0x47, 0xb7, 0x61, 0xde, 0xe5, 0x71, 0x10, 0x02, 0xcc, 0x08, 0x80, 0x6f, 0x48, 0x80, 0x79,
    -	0x1c, 0x27, 0xe2, 0x24, 0x2f, 0xfa, 0x00, 0xae, 0x90, 0x3e, 0xd1, 0x0d, 0x72, 0x62, 0xd0, 0x10,
    -	0x60, 0x4a, 0x00, 0xbc, 0x24, 0x01, 0xae, 0x6c, 0xa5, 0x19, 0x70, 0x56, 0x06, 0xed, 0xc1, 0x62,
    -	0xcf, 0xca, 0x42, 0xf9, 0x41, 0xfc, 0xb2, 0x84, 0x5a, 0x3c, 0xce, 0xb2, 0xe0, 0x3c, 0x39, 0xf4,
    -	0x29, 0x40, 0x3b, 0xb8, 0xd5, 0xbd, 0xc6, 0xb4, 0x28, 0xc3, 0xd7, 0x4b, 0x24, 0x5b, 0xd8, 0x0a,
    -	0x44, 0x25, 0x30, 0x5c, 0xf2, 0x70, 0x0c, 0x13, 0xdd, 0x82, 0x7a, 0xdb, 0x36, 0x0c, 0x11, 0xf9,
    -	0xdb, 0x76, 0xcf, 0x62, 0x22, 0x78, 0xab, 0x2d, 0xc4, 0x2f, 0xfb, 0xed, 0x04, 0x05, 0xa7, 0x38,
    -	0xd5, 0x3f, 0x28, 0xf1, 0x6b, 0x26, 0x48, 0x67, 0x74, 0x2b, 0xd1, 0xfa, 0xbc, 0x9a, 0x6a, 0x7d,
    -	0xae, 0x66, 0x25, 0x62, 0x9d, 0x8f, 0x0e, 0xf3, 0x3c, 0xf8, 0x75, 0xab, 0xeb, 0x1f, 0xb8, 0x2c,
    -	0x89, 0x6f, 0x9d, 0x9b, 0x4a, 0x21, 0x77, 0xec, 0x62, 0xbc, 0x22, 0xce, 0x3c, 0x4e, 0xc4, 0x49,
    -	0x64, 0xf5, 0x0e, 0xd4, 0x93, 0x79, 0x98, 0xe8, 0xe9, 0x95, 0x0b, 0x7b, 0xfa, 0xaf, 0x15, 0x58,
    -	0x2e, 0xd0, 0x8e, 0x0c, 0xa8, 0x9b, 0xe4, 0x71, 0xec, 0x98, 0x2f, 0xec, 0x8d, 0xf9, 0xd4, 0xa4,
    -	0xf9, 0x53, 0x93, 0x76, 0xdf, 0x62, 0xfb, 0xee, 0x21, 0x73, 0x75, 0xab, 0xeb, 0x9f, 0xc3, 0x5e,
    -	0x02, 0x0b, 0xa7, 0xb0, 0xd1, 0x27, 0x50, 0x33, 0xc9, 0xe3, 0xc3, 0x9e, 0xdb, 0xcd, 0xf3, 0x57,
    -	0x39, 0x3d, 0xe2, 0xfe, 0xd8, 0x93, 0x28, 0x38, 0xc4, 0x53, 0xff, 0xa8, 0xc0, 0x7a, 0x62, 0x97,
    -	0xbc, 0x56, 0xd0, 0x47, 0x3d, 0xe3, 0x90, 0x46, 0x27, 0xfe, 0x26, 0xcc, 0x3a, 0xc4, 0x65, 0x7a,
    -	0x58, 0x2f, 0xaa, 0xad, 0xf9, 0xd1, 0x70, 0x6d, 0xf6, 0x20, 0x58, 0xc4, 0x11, 0x3d, 0xc7, 0x37,
    -	0x95, 0xe7, 0xe7, 0x1b, 0xf5, 0xdf, 0x0a, 0x54, 0x0f, 0xdb, 0xc4, 0xa0, 0x97, 0x30, 0xa9, 0xec,
    -	0x24, 0x26, 0x15, 0xb5, 0x30, 0x66, 0x85, 0x3d, 0x85, 0x43, 0xca, 0x6e, 0x6a, 0x48, 0xb9, 0x76,
    -	0x01, 0xce, 0xf9, 0xf3, 0xc9, 0xfb, 0x30, 0x1b, 0xaa, 0x4b, 0x14, 0x65, 0xe5, 0xa2, 0xa2, 0xac,
    -	0xfe, 0xaa, 0x02, 0x73, 0x31, 0x15, 0xe3, 0x49, 0x73, 0x77, 0xc7, 0xfa, 0x1a, 0x5e, 0xb8, 0x36,
    -	0xcb, 0x6c, 0x44, 0x0b, 0x7a, 0x18, 0xbf, 0x5d, 0x8c, 0x9a, 0x85, 0x6c, 0x6b, 0x73, 0x07, 0xea,
    -	0x8c, 0xb8, 0x5d, 0xca, 0x02, 0x9a, 0x70, 0xd8, 0x6c, 0x34, 0xab, 0x1c, 0x25, 0xa8, 0x38, 0xc5,
    -	0xbd, 0x72, 0x1b, 0xe6, 0x13, 0xca, 0xc6, 0xea, 0xf9, 0xbe, 0xe0, 0xce, 0x89, 0x52, 0xe1, 0x12,
    -	0xa2, 0xeb, 0xc3, 0x44, 0x74, 0x6d, 0x14, 0x3b, 0x33, 0x96, 0xa0, 0x45, 0x31, 0x86, 0x53, 0x31,
    -	0xf6, 0x46, 0x29, 0xb4, 0xf3, 0x23, 0xed, 0x1f, 0x15, 0x58, 0x8a, 0x71, 0x47, 0xa3, 0xf0, 0x77,
    -	0x12, 0xf7, 0xc1, 0x46, 0xea, 0x3e, 0x68, 0xe4, 0xc9, 0x3c, 0xb7, 0x59, 0x38, 0x7f, 0x3e, 0x9d,
    -	0xfc, 0x5f, 0x9c, 0x4f, 0x7f, 0xaf, 0xc0, 0x42, 0xcc, 0x77, 0x97, 0x30, 0xa0, 0xde, 0x4f, 0x0e,
    -	0xa8, 0xd7, 0xca, 0x04, 0x4d, 0xc1, 0x84, 0x7a, 0x0b, 0x16, 0x63, 0x4c, 0xfb, 0x6e, 0x47, 0xb7,
    -	0x88, 0xe1, 0xa1, 0x57, 0xa0, 0xea, 0x31, 0xe2, 0xb2, 0xe0, 0x12, 0x09, 0x64, 0x0f, 0xf9, 0x22,
    -	0xf6, 0x69, 0xea, 0x3f, 0x15, 0x68, 0xc6, 0x84, 0x0f, 0xa8, 0xeb, 0xe9, 0x1e, 0xa3, 0x16, 0x7b,
    -	0x60, 0x1b, 0x3d, 0x93, 0x6e, 0x1b, 0x44, 0x37, 0x31, 0xe5, 0x0b, 0xba, 0x6d, 0x1d, 0xd8, 0x86,
    -	0xde, 0x1e, 0x20, 0x02, 0x73, 0x9f, 0x9f, 0x52, 0x6b, 0x87, 0x1a, 0x94, 0xd1, 0x8e, 0x0c, 0xc5,
    -	0xef, 0x49, 0xf8, 0xb9, 0x87, 0x11, 0xe9, 0xd9, 0x70, 0x6d, 0xa3, 0x0c, 0xa2, 0x88, 0xd0, 0x38,
    -	0x26, 0xfa, 0x29, 0x00, 0xff, 0x14, 0xb5, 0xac, 0x23, 0x83, 0xf5, 0x4e, 0x90, 0xd1, 0x0f, 0x43,
    -	0xca, 0x58, 0x0a, 0x62, 0x88, 0xea, 0x6f, 0x6a, 0x89, 0xf3, 0xfe, 0xbf, 0x1f, 0x33, 0x7f, 0x06,
    -	0x4b, 0xfd, 0xc8, 0x3b, 0x01, 0x03, 0x6f, 0xcb, 0x27, 0xd3, 0x4f, 0x77, 0x21, 0x7c, 0x9e, 0x5f,
    -	0x5b, 0xdf, 0x94, 0x4a, 0x96, 0x1e, 0xe4, 0xc0, 0xe1, 0x5c, 0x25, 0xe8, 0xdb, 0x30, 0xc7, 0x47,
    -	0x1a, 0xbd, 0x4d, 0x3f, 0x22, 0x66, 0x90, 0x8b, 0x8b, 0x41, 0xbc, 0x1c, 0x46, 0x24, 0x1c, 0xe7,
    -	0x43, 0xa7, 0xb0, 0xe8, 0xd8, 0x9d, 0x3d, 0x62, 0x91, 0x2e, 0xe5, 0x8d, 0xa0, 0x7f, 0x94, 0x62,
    -	0xf6, 0x9c, 0x6d, 0xbd, 0x1b, 0xb4, 0xff, 0x07, 0x59, 0x96, 0x67, 0x7c, 0x88, 0xcb, 0x2e, 0x8b,
    -	0x20, 0xc8, 0x83, 0x44, 0x2e, 0xd4, 0x7b, 0xb2, 0x1f, 0x93, 0xa3, 0xb8, 0xff, 0xc8, 0xb6, 0x59,
    -	0x26, 0x29, 0x8f, 0x13, 0x92, 0xd1, 0x85, 0x99, 0x5c, 0xc7, 0x29, 0x0d, 0x85, 0xa3, 0x75, 0xed,
    -	0xbf, 0x1a, 0xad, 0x73, 0x66, 0xfd, 0xd9, 0x31, 0x67, 0xfd, 0x3f, 0x2b, 0x70, 0xcd, 0x29, 0x91,
    -	0x4b, 0x0d, 0x10, 0xbe, 0xb9, 0x57, 0xc6, 0x37, 0x65, 0x72, 0xb3, 0xb5, 0x31, 0x1a, 0xae, 0x5d,
    -	0x2b, 0xc3, 0x89, 0x4b, 0xd9, 0x87, 0x1e, 0x40, 0xcd, 0x96, 0x35, 0xb0, 0x31, 0x27, 0x6c, 0xbd,
    -	0x5e, 0xc6, 0xd6, 0xa0, 0x6e, 0xfa, 0x69, 0x19, 0x7c, 0xe1, 0x10, 0x4b, 0xfd, 0x6d, 0x15, 0xae,
    -	0x64, 0x6e, 0x70, 0xf4, 0x83, 0x73, 0xe6, 0xfc, 0xab, 0xcf, 0x6d, 0xc6, 0xcf, 0x0c, 0xe8, 0x93,
    -	0x63, 0x0c, 0xe8, 0x5b, 0xb0, 0xd0, 0xee, 0xb9, 0x2e, 0xb5, 0x58, 0x6a, 0x3c, 0x0f, 0x83, 0x65,
    -	0x3b, 0x49, 0xc6, 0x69, 0xfe, 0xbc, 0x37, 0x86, 0xea, 0x98, 0x6f, 0x0c, 0x71, 0x2b, 0xe4, 0x9c,
    -	0xe8, 0xa7, 0x76, 0xd6, 0x0a, 0x39, 0x2e, 0xa6, 0xf9, 0x79, 0xd3, 0xea, 0xa3, 0x86, 0x08, 0x33,
    -	0xc9, 0xa6, 0xf5, 0x38, 0x41, 0xc5, 0x29, 0xee, 0x9c, 0x79, 0x7d, 0xb6, 0xec, 0xbc, 0x8e, 0x48,
    -	0xe2, 0x35, 0x01, 0x44, 0x1d, 0xbd, 0x51, 0x26, 0xce, 0xca, 0x3f, 0x27, 0xe4, 0x3e, 0xa4, 0xcc,
    -	0x8d, 0xff, 0x90, 0xa2, 0xfe, 0x45, 0x81, 0x97, 0x0a, 0x2b, 0x16, 0xda, 0x4a, 0xb4, 0x94, 0x37,
    -	0x52, 0x2d, 0xe5, 0xb7, 0x0a, 0x05, 0x63, 0x7d, 0xa5, 0x9b, 0xff, 0xd2, 0xf0, 0x7e, 0xb9, 0x97,
    -	0x86, 0x9c, 0x29, 0xf8, 0xe2, 0x27, 0x87, 0xd6, 0x77, 0x9f, 0x3c, 0x5d, 0x9d, 0xf8, 0xf2, 0xe9,
    -	0xea, 0xc4, 0x57, 0x4f, 0x57, 0x27, 0x7e, 0x3e, 0x5a, 0x55, 0x9e, 0x8c, 0x56, 0x95, 0x2f, 0x47,
    -	0xab, 0xca, 0x57, 0xa3, 0x55, 0xe5, 0x6f, 0xa3, 0x55, 0xe5, 0x97, 0x5f, 0xaf, 0x4e, 0x7c, 0xb2,
    -	0x5c, 0xf0, 0x6f, 0xf4, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x0a, 0xd6, 0x32, 0xc0, 0x1e,
    +	0xec, 0xf7, 0xae, 0xb4, 0x2c, 0x60, 0x01, 0xcd, 0x8d, 0x3b, 0xef, 0xbd, 0xdf, 0x7b, 0xf3, 0xe6,
    +	0xbd, 0x37, 0xef, 0x0d, 0xe1, 0xfa, 0xe9, 0x7b, 0x9e, 0xa6, 0xdb, 0x4d, 0xe2, 0xe8, 0x4d, 0xe2,
    +	0x38, 0x5e, 0xb3, 0x7f, 0xeb, 0x98, 0x32, 0x72, 0xab, 0xd9, 0xa5, 0x16, 0x75, 0x09, 0xa3, 0x1d,
    +	0xcd, 0x71, 0x6d, 0x66, 0xa3, 0x25, 0x9f, 0x51, 0x23, 0x8e, 0xae, 0x71, 0x46, 0x4d, 0x32, 0x2e,
    +	0xdf, 0xec, 0xea, 0xec, 0xa4, 0x77, 0xac, 0xb5, 0x6d, 0xb3, 0xd9, 0xb5, 0xbb, 0x76, 0x53, 0xf0,
    +	0x1f, 0xf7, 0x1e, 0x8b, 0x2f, 0xf1, 0x21, 0x7e, 0xf9, 0x38, 0xcb, 0x6a, 0x4c, 0x61, 0xdb, 0x76,
    +	0x69, 0xb3, 0x9f, 0xd1, 0xb5, 0xfc, 0x4e, 0xc4, 0x63, 0x92, 0xf6, 0x89, 0x6e, 0x51, 0x77, 0xd0,
    +	0x74, 0x4e, 0xbb, 0x7c, 0xc1, 0x6b, 0x9a, 0x94, 0x91, 0x3c, 0xa9, 0x66, 0x91, 0x94, 0xdb, 0xb3,
    +	0x98, 0x6e, 0xd2, 0x8c, 0xc0, 0xbb, 0xe7, 0x09, 0x78, 0xed, 0x13, 0x6a, 0x92, 0x8c, 0xdc, 0xdb,
    +	0x45, 0x72, 0x3d, 0xa6, 0x1b, 0x4d, 0xdd, 0x62, 0x1e, 0x73, 0xd3, 0x42, 0xea, 0xbf, 0x15, 0x40,
    +	0x5b, 0xb6, 0xc5, 0x5c, 0xdb, 0x30, 0xa8, 0x8b, 0x69, 0x5f, 0xf7, 0x74, 0xdb, 0x42, 0x9f, 0x42,
    +	0x8d, 0xef, 0xa7, 0x43, 0x18, 0x69, 0x28, 0x6b, 0xca, 0xfa, 0xec, 0xc6, 0x5b, 0x5a, 0xe4, 0xe9,
    +	0x10, 0x5e, 0x73, 0x4e, 0xbb, 0x7c, 0xc1, 0xd3, 0x38, 0xb7, 0xd6, 0xbf, 0xa5, 0xed, 0x1d, 0x7f,
    +	0x46, 0xdb, 0x6c, 0x97, 0x32, 0xd2, 0x42, 0x4f, 0x87, 0xab, 0x97, 0x46, 0xc3, 0x55, 0x88, 0xd6,
    +	0x70, 0x88, 0x8a, 0xf6, 0x60, 0x52, 0xa0, 0x57, 0x04, 0xfa, 0xcd, 0x42, 0x74, 0xb9, 0x69, 0x0d,
    +	0x93, 0xcf, 0xef, 0x3d, 0x61, 0xd4, 0xe2, 0xe6, 0xb5, 0x5e, 0x92, 0xd0, 0x93, 0xdb, 0x84, 0x11,
    +	0x2c, 0x80, 0xd0, 0x0d, 0xa8, 0xb9, 0xd2, 0xfc, 0xc6, 0xc4, 0x9a, 0xb2, 0x3e, 0xd1, 0xba, 0x2c,
    +	0xb9, 0x6a, 0xc1, 0xb6, 0x70, 0xc8, 0xa1, 0x3e, 0x55, 0xe0, 0x6a, 0x76, 0xdf, 0x3b, 0xba, 0xc7,
    +	0xd0, 0x4f, 0x32, 0x7b, 0xd7, 0xca, 0xed, 0x9d, 0x4b, 0x8b, 0x9d, 0x87, 0x8a, 0x83, 0x95, 0xd8,
    +	0xbe, 0xf7, 0xa1, 0xaa, 0x33, 0x6a, 0x7a, 0x8d, 0xca, 0xda, 0xc4, 0xfa, 0xec, 0xc6, 0x9b, 0x5a,
    +	0x41, 0x00, 0x6b, 0x59, 0xeb, 0x5a, 0x73, 0x12, 0xb7, 0xfa, 0x80, 0x23, 0x60, 0x1f, 0x48, 0xfd,
    +	0x65, 0x05, 0x60, 0x9b, 0x3a, 0x86, 0x3d, 0x30, 0xa9, 0xc5, 0x2e, 0xe0, 0xe8, 0x1e, 0xc0, 0xa4,
    +	0xe7, 0xd0, 0xb6, 0x3c, 0xba, 0xeb, 0x85, 0x3b, 0x88, 0x8c, 0x3a, 0x70, 0x68, 0x3b, 0x3a, 0x34,
    +	0xfe, 0x85, 0x05, 0x04, 0xfa, 0x18, 0xa6, 0x3c, 0x46, 0x58, 0xcf, 0x13, 0x47, 0x36, 0xbb, 0xf1,
    +	0x7a, 0x19, 0x30, 0x21, 0xd0, 0xaa, 0x4b, 0xb8, 0x29, 0xff, 0x1b, 0x4b, 0x20, 0xf5, 0x6f, 0x13,
    +	0xb0, 0x10, 0x31, 0x6f, 0xd9, 0x56, 0x47, 0x67, 0x3c, 0xa4, 0xef, 0xc0, 0x24, 0x1b, 0x38, 0x54,
    +	0xf8, 0x64, 0xa6, 0x75, 0x3d, 0x30, 0xe6, 0x70, 0xe0, 0xd0, 0xe7, 0xc3, 0xd5, 0xa5, 0x1c, 0x11,
    +	0x4e, 0xc2, 0x42, 0x08, 0xed, 0x84, 0x76, 0x56, 0x84, 0xf8, 0x3b, 0x49, 0xe5, 0xcf, 0x87, 0xab,
    +	0x39, 0x05, 0x44, 0x0b, 0x91, 0x92, 0x26, 0xa2, 0xcf, 0xa0, 0x6e, 0x10, 0x8f, 0x1d, 0x39, 0x1d,
    +	0xc2, 0xe8, 0xa1, 0x6e, 0xd2, 0xc6, 0x94, 0xd8, 0xfd, 0x1b, 0xe5, 0x0e, 0x8a, 0x4b, 0xb4, 0xae,
    +	0x4a, 0x0b, 0xea, 0x3b, 0x09, 0x24, 0x9c, 0x42, 0x46, 0x7d, 0x40, 0x7c, 0xe5, 0xd0, 0x25, 0x96,
    +	0xe7, 0xef, 0x8a, 0xeb, 0x9b, 0x1e, 0x5b, 0xdf, 0xb2, 0xd4, 0x87, 0x76, 0x32, 0x68, 0x38, 0x47,
    +	0x03, 0x7a, 0x0d, 0xa6, 0x5c, 0x4a, 0x3c, 0xdb, 0x6a, 0x4c, 0x0a, 0x8f, 0x85, 0xc7, 0x85, 0xc5,
    +	0x2a, 0x96, 0x54, 0xf4, 0x3a, 0x4c, 0x9b, 0xd4, 0xf3, 0x48, 0x97, 0x36, 0xaa, 0x82, 0x71, 0x5e,
    +	0x32, 0x4e, 0xef, 0xfa, 0xcb, 0x38, 0xa0, 0xab, 0xbf, 0x57, 0xa0, 0x1e, 0x1d, 0xd3, 0x05, 0xe4,
    +	0xea, 0xfd, 0x64, 0xae, 0xbe, 0x5a, 0x22, 0x38, 0x0b, 0x72, 0xf4, 0x1f, 0x15, 0x40, 0x11, 0x13,
    +	0xb6, 0x0d, 0xe3, 0x98, 0xb4, 0x4f, 0xd1, 0x1a, 0x4c, 0x5a, 0xc4, 0x0c, 0x62, 0x32, 0x4c, 0x90,
    +	0x8f, 0x88, 0x49, 0xb1, 0xa0, 0xa0, 0x2f, 0x14, 0x40, 0x3d, 0x71, 0x9a, 0x9d, 0x4d, 0xcb, 0xb2,
    +	0x19, 0xe1, 0x0e, 0x0e, 0x0c, 0xda, 0x2a, 0x61, 0x50, 0xa0, 0x4b, 0x3b, 0xca, 0xa0, 0xdc, 0xb3,
    +	0x98, 0x3b, 0x88, 0x0e, 0x36, 0xcb, 0x80, 0x73, 0x54, 0xa3, 0x1f, 0x03, 0xb8, 0x12, 0xf3, 0xd0,
    +	0x96, 0x69, 0x5b, 0x5c, 0x03, 0x02, 0xf5, 0x5b, 0xb6, 0xf5, 0x58, 0xef, 0x46, 0x85, 0x05, 0x87,
    +	0x10, 0x38, 0x06, 0xb7, 0x7c, 0x0f, 0x96, 0x0a, 0xec, 0x44, 0x97, 0x61, 0xe2, 0x94, 0x0e, 0x7c,
    +	0x57, 0x61, 0xfe, 0x13, 0x2d, 0x42, 0xb5, 0x4f, 0x8c, 0x1e, 0xf5, 0x73, 0x12, 0xfb, 0x1f, 0xb7,
    +	0x2b, 0xef, 0x29, 0xea, 0x6f, 0xaa, 0xf1, 0x48, 0xe1, 0xf5, 0x06, 0xad, 0xf3, 0xeb, 0xc1, 0x31,
    +	0xf4, 0x36, 0xf1, 0x04, 0x46, 0xb5, 0xf5, 0x92, 0x7f, 0x35, 0xf8, 0x6b, 0x38, 0xa4, 0xa2, 0x9f,
    +	0x42, 0xcd, 0xa3, 0x06, 0x6d, 0x33, 0xdb, 0x95, 0x25, 0xee, 0xed, 0x92, 0x31, 0x45, 0x8e, 0xa9,
    +	0x71, 0x20, 0x45, 0x7d, 0xf8, 0xe0, 0x0b, 0x87, 0x90, 0xe8, 0x63, 0xa8, 0x31, 0x6a, 0x3a, 0x06,
    +	0x61, 0x54, 0x7a, 0x2f, 0x11, 0x57, 0xbc, 0x76, 0x70, 0xb0, 0x7d, 0xbb, 0x73, 0x28, 0xd9, 0x44,
    +	0xf5, 0x0c, 0xe3, 0x34, 0x58, 0xc5, 0x21, 0x0c, 0xfa, 0x11, 0xd4, 0x3c, 0xc6, 0x6f, 0xf5, 0xee,
    +	0x40, 0x64, 0xdb, 0x59, 0xd7, 0x4a, 0xbc, 0x8e, 0xfa, 0x22, 0x11, 0x74, 0xb0, 0x82, 0x43, 0x38,
    +	0xb4, 0x09, 0xf3, 0xa6, 0x6e, 0x61, 0x4a, 0x3a, 0x83, 0x03, 0xda, 0xb6, 0xad, 0x8e, 0x27, 0xd2,
    +	0xb4, 0xda, 0x5a, 0x92, 0x42, 0xf3, 0xbb, 0x49, 0x32, 0x4e, 0xf3, 0xa3, 0x1d, 0x58, 0x0c, 0xae,
    +	0xdd, 0xfb, 0xba, 0xc7, 0x6c, 0x77, 0xb0, 0xa3, 0x9b, 0x3a, 0x13, 0x35, 0xaf, 0xda, 0x6a, 0x8c,
    +	0x86, 0xab, 0x8b, 0x38, 0x87, 0x8e, 0x73, 0xa5, 0x78, 0x5d, 0x71, 0x48, 0xcf, 0xa3, 0x1d, 0x51,
    +	0xc3, 0x6a, 0x51, 0x5d, 0xd9, 0x17, 0xab, 0x58, 0x52, 0xd1, 0xa3, 0x44, 0x98, 0xd6, 0xc6, 0x0b,
    +	0xd3, 0x7a, 0x71, 0x88, 0xa2, 0x23, 0x58, 0x72, 0x5c, 0xbb, 0xeb, 0x52, 0xcf, 0xdb, 0xa6, 0xa4,
    +	0x63, 0xe8, 0x16, 0x0d, 0x3c, 0x33, 0x23, 0x76, 0xf4, 0xca, 0x68, 0xb8, 0xba, 0xb4, 0x9f, 0xcf,
    +	0x82, 0x8b, 0x64, 0xd5, 0x3f, 0x4f, 0xc2, 0xe5, 0xf4, 0x1d, 0x87, 0x3e, 0x04, 0x64, 0x1f, 0x7b,
    +	0xd4, 0xed, 0xd3, 0xce, 0x07, 0x7e, 0xe3, 0xc6, 0xbb, 0x1b, 0x45, 0x74, 0x37, 0x61, 0xde, 0xee,
    +	0x65, 0x38, 0x70, 0x8e, 0x94, 0xdf, 0x1f, 0xc9, 0x04, 0xa8, 0x08, 0x43, 0x63, 0xfd, 0x51, 0x26,
    +	0x09, 0x36, 0x61, 0x5e, 0xe6, 0x7e, 0x40, 0x14, 0xc1, 0x1a, 0x3b, 0xf7, 0xa3, 0x24, 0x19, 0xa7,
    +	0xf9, 0xd1, 0x1d, 0x98, 0x73, 0x79, 0x1c, 0x84, 0x00, 0xd3, 0x02, 0xe0, 0x5b, 0x12, 0x60, 0x0e,
    +	0xc7, 0x89, 0x38, 0xc9, 0x8b, 0x3e, 0x80, 0x2b, 0xa4, 0x4f, 0x74, 0x83, 0x1c, 0x1b, 0x34, 0x04,
    +	0x98, 0x14, 0x00, 0x2f, 0x4b, 0x80, 0x2b, 0x9b, 0x69, 0x06, 0x9c, 0x95, 0x41, 0xbb, 0xb0, 0xd0,
    +	0xb3, 0xb2, 0x50, 0x7e, 0x10, 0xbf, 0x22, 0xa1, 0x16, 0x8e, 0xb2, 0x2c, 0x38, 0x4f, 0x0e, 0x7d,
    +	0x0a, 0xd0, 0x0e, 0x6e, 0x75, 0xaf, 0x31, 0x25, 0xca, 0xf0, 0x8d, 0x12, 0xc9, 0x16, 0xb6, 0x02,
    +	0x51, 0x09, 0x0c, 0x97, 0x3c, 0x1c, 0xc3, 0x44, 0xb7, 0xa1, 0xde, 0xb6, 0x0d, 0x43, 0x44, 0xfe,
    +	0x96, 0xdd, 0xb3, 0x98, 0x08, 0xde, 0x6a, 0x0b, 0xf1, 0xcb, 0x7e, 0x2b, 0x41, 0xc1, 0x29, 0x4e,
    +	0xf5, 0x8f, 0x4a, 0xfc, 0x9a, 0x09, 0xd2, 0x19, 0xdd, 0x4e, 0xb4, 0x3e, 0xaf, 0xa5, 0x5a, 0x9f,
    +	0xab, 0x59, 0x89, 0x58, 0xe7, 0xa3, 0xc3, 0x1c, 0x0f, 0x7e, 0xdd, 0xea, 0xfa, 0x07, 0x2e, 0x4b,
    +	0xe2, 0x5b, 0x67, 0xa6, 0x52, 0xc8, 0x1d, 0xbb, 0x18, 0xaf, 0x88, 0x33, 0x8f, 0x13, 0x71, 0x12,
    +	0x59, 0xbd, 0x0b, 0xf5, 0x64, 0x1e, 0x26, 0x7a, 0x7a, 0xe5, 0xdc, 0x9e, 0xfe, 0x6b, 0x05, 0x96,
    +	0x0a, 0xb4, 0x23, 0x03, 0xea, 0x26, 0x79, 0x12, 0x3b, 0xe6, 0x73, 0x7b, 0x63, 0x3e, 0x35, 0x69,
    +	0xfe, 0xd4, 0xa4, 0x3d, 0xb0, 0xd8, 0x9e, 0x7b, 0xc0, 0x5c, 0xdd, 0xea, 0xfa, 0xe7, 0xb0, 0x9b,
    +	0xc0, 0xc2, 0x29, 0x6c, 0xf4, 0x09, 0xd4, 0x4c, 0xf2, 0xe4, 0xa0, 0xe7, 0x76, 0xf3, 0xfc, 0x55,
    +	0x4e, 0x8f, 0xb8, 0x3f, 0x76, 0x25, 0x0a, 0x0e, 0xf1, 0xd4, 0x3f, 0x29, 0xb0, 0x96, 0xd8, 0x25,
    +	0xaf, 0x15, 0xf4, 0x71, 0xcf, 0x38, 0xa0, 0xd1, 0x89, 0xbf, 0x09, 0x33, 0x0e, 0x71, 0x99, 0x1e,
    +	0xd6, 0x8b, 0x6a, 0x6b, 0x6e, 0x34, 0x5c, 0x9d, 0xd9, 0x0f, 0x16, 0x71, 0x44, 0xcf, 0xf1, 0x4d,
    +	0xe5, 0xc5, 0xf9, 0x46, 0xfd, 0x8f, 0x02, 0xd5, 0x83, 0x36, 0x31, 0xe8, 0x05, 0x4c, 0x2a, 0xdb,
    +	0x89, 0x49, 0x45, 0x2d, 0x8c, 0x59, 0x61, 0x4f, 0xe1, 0x90, 0xb2, 0x93, 0x1a, 0x52, 0xae, 0x9d,
    +	0x83, 0x73, 0xf6, 0x7c, 0xf2, 0x3e, 0xcc, 0x84, 0xea, 0x12, 0x45, 0x59, 0x39, 0xaf, 0x28, 0xab,
    +	0xbf, 0xae, 0xc0, 0x6c, 0x4c, 0xc5, 0x78, 0xd2, 0xdc, 0xdd, 0xb1, 0xbe, 0x86, 0x17, 0xae, 0x8d,
    +	0x32, 0x1b, 0xd1, 0x82, 0x1e, 0xc6, 0x6f, 0x17, 0xa3, 0x66, 0x21, 0xdb, 0xda, 0xdc, 0x85, 0x3a,
    +	0x23, 0x6e, 0x97, 0xb2, 0x80, 0x26, 0x1c, 0x36, 0x13, 0xcd, 0x2a, 0x87, 0x09, 0x2a, 0x4e, 0x71,
    +	0x2f, 0xdf, 0x81, 0xb9, 0x84, 0xb2, 0xb1, 0x7a, 0xbe, 0x2f, 0xb8, 0x73, 0xa2, 0x54, 0xb8, 0x80,
    +	0xe8, 0xfa, 0x30, 0x11, 0x5d, 0xeb, 0xc5, 0xce, 0x8c, 0x25, 0x68, 0x51, 0x8c, 0xe1, 0x54, 0x8c,
    +	0xbd, 0x51, 0x0a, 0xed, 0xec, 0x48, 0xfb, 0x67, 0x05, 0x16, 0x63, 0xdc, 0xd1, 0x28, 0xfc, 0xbd,
    +	0xc4, 0x7d, 0xb0, 0x9e, 0xba, 0x0f, 0x1a, 0x79, 0x32, 0x2f, 0x6c, 0x16, 0xce, 0x9f, 0x4f, 0x27,
    +	0xfe, 0x1f, 0xe7, 0xd3, 0x3f, 0x28, 0x30, 0x1f, 0xf3, 0xdd, 0x05, 0x0c, 0xa8, 0x0f, 0x92, 0x03,
    +	0xea, 0xb5, 0x32, 0x41, 0x53, 0x30, 0xa1, 0xde, 0x86, 0x85, 0x18, 0xd3, 0x9e, 0xdb, 0xd1, 0x2d,
    +	0x62, 0x78, 0xe8, 0x55, 0xa8, 0x7a, 0x8c, 0xb8, 0x2c, 0xb8, 0x44, 0x02, 0xd9, 0x03, 0xbe, 0x88,
    +	0x7d, 0x9a, 0xfa, 0x2f, 0x05, 0x9a, 0x31, 0xe1, 0x7d, 0xea, 0x7a, 0xba, 0xc7, 0xa8, 0xc5, 0x1e,
    +	0xda, 0x46, 0xcf, 0xa4, 0x5b, 0x06, 0xd1, 0x4d, 0x4c, 0xf9, 0x82, 0x6e, 0x5b, 0xfb, 0xb6, 0xa1,
    +	0xb7, 0x07, 0x88, 0xc0, 0xec, 0xe7, 0x27, 0xd4, 0xda, 0xa6, 0x06, 0x65, 0xb4, 0x23, 0x43, 0xf1,
    +	0x07, 0x12, 0x7e, 0xf6, 0x51, 0x44, 0x7a, 0x3e, 0x5c, 0x5d, 0x2f, 0x83, 0x28, 0x22, 0x34, 0x8e,
    +	0x89, 0x7e, 0x06, 0xc0, 0x3f, 0x45, 0x2d, 0xeb, 0xc8, 0x60, 0xbd, 0x1b, 0x64, 0xf4, 0xa3, 0x90,
    +	0x32, 0x96, 0x82, 0x18, 0xa2, 0xfa, 0xdb, 0x5a, 0xe2, 0xbc, 0xbf, 0xf1, 0x63, 0xe6, 0xcf, 0x61,
    +	0xb1, 0x1f, 0x79, 0x27, 0x60, 0xe0, 0x6d, 0xf9, 0x44, 0xfa, 0xe9, 0x2e, 0x84, 0xcf, 0xf3, 0x6b,
    +	0xeb, 0xdb, 0x52, 0xc9, 0xe2, 0xc3, 0x1c, 0x38, 0x9c, 0xab, 0x04, 0x7d, 0x17, 0x66, 0xf9, 0x48,
    +	0xa3, 0xb7, 0xe9, 0x47, 0xc4, 0x0c, 0x72, 0x71, 0x21, 0x88, 0x97, 0x83, 0x88, 0x84, 0xe3, 0x7c,
    +	0xe8, 0x04, 0x16, 0x1c, 0xbb, 0xb3, 0x4b, 0x2c, 0xd2, 0xa5, 0xbc, 0x11, 0xf4, 0x8f, 0x52, 0xcc,
    +	0x9e, 0x33, 0xad, 0x77, 0x83, 0xf6, 0x7f, 0x3f, 0xcb, 0xf2, 0x9c, 0x0f, 0x71, 0xd9, 0x65, 0x11,
    +	0x04, 0x79, 0x90, 0xc8, 0x85, 0x7a, 0x4f, 0xf6, 0x63, 0x72, 0x14, 0xf7, 0x1f, 0xd9, 0x36, 0xca,
    +	0x24, 0xe5, 0x51, 0x42, 0x32, 0xba, 0x30, 0x93, 0xeb, 0x38, 0xa5, 0xa1, 0x70, 0xb4, 0xae, 0xfd,
    +	0x4f, 0xa3, 0x75, 0xce, 0xac, 0x3f, 0x33, 0xe6, 0xac, 0xff, 0x17, 0x05, 0xae, 0x39, 0x25, 0x72,
    +	0xa9, 0x01, 0xc2, 0x37, 0xf7, 0xcb, 0xf8, 0xa6, 0x4c, 0x6e, 0xb6, 0xd6, 0x47, 0xc3, 0xd5, 0x6b,
    +	0x65, 0x38, 0x71, 0x29, 0xfb, 0xd0, 0x43, 0xa8, 0xd9, 0xb2, 0x06, 0x36, 0x66, 0x85, 0xad, 0x37,
    +	0xca, 0xd8, 0x1a, 0xd4, 0x4d, 0x3f, 0x2d, 0x83, 0x2f, 0x1c, 0x62, 0xa9, 0xbf, 0xab, 0xc2, 0x95,
    +	0xcc, 0x0d, 0x8e, 0x7e, 0x78, 0xc6, 0x9c, 0x7f, 0xf5, 0x85, 0xcd, 0xf8, 0x99, 0x01, 0x7d, 0x62,
    +	0x8c, 0x01, 0x7d, 0x13, 0xe6, 0xdb, 0x3d, 0xd7, 0xa5, 0x16, 0x4b, 0x8d, 0xe7, 0x61, 0xb0, 0x6c,
    +	0x25, 0xc9, 0x38, 0xcd, 0x9f, 0xf7, 0xc6, 0x50, 0x1d, 0xf3, 0x8d, 0x21, 0x6e, 0x85, 0x9c, 0x13,
    +	0xfd, 0xd4, 0xce, 0x5a, 0x21, 0xc7, 0xc5, 0x34, 0x3f, 0x6f, 0x5a, 0x7d, 0xd4, 0x10, 0x61, 0x3a,
    +	0xd9, 0xb4, 0x1e, 0x25, 0xa8, 0x38, 0xc5, 0x9d, 0x33, 0xaf, 0xcf, 0x94, 0x9d, 0xd7, 0x11, 0x49,
    +	0xbc, 0x26, 0x80, 0xa8, 0xa3, 0x37, 0xcb, 0xc4, 0x59, 0xf9, 0xe7, 0x84, 0xdc, 0x87, 0x94, 0xd9,
    +	0xf1, 0x1f, 0x52, 0xd4, 0xbf, 0x2a, 0xf0, 0x72, 0x61, 0xc5, 0x42, 0x9b, 0x89, 0x96, 0xf2, 0x66,
    +	0xaa, 0xa5, 0xfc, 0x4e, 0xa1, 0x60, 0xac, 0xaf, 0x74, 0xf3, 0x5f, 0x1a, 0xde, 0x2f, 0xf7, 0xd2,
    +	0x90, 0x33, 0x05, 0x9f, 0xff, 0xe4, 0xd0, 0xfa, 0xfe, 0xd3, 0x67, 0x2b, 0x97, 0xbe, 0x7c, 0xb6,
    +	0x72, 0xe9, 0xab, 0x67, 0x2b, 0x97, 0x7e, 0x31, 0x5a, 0x51, 0x9e, 0x8e, 0x56, 0x94, 0x2f, 0x47,
    +	0x2b, 0xca, 0x57, 0xa3, 0x15, 0xe5, 0xef, 0xa3, 0x15, 0xe5, 0x57, 0x5f, 0xaf, 0x5c, 0xfa, 0x64,
    +	0xa9, 0xe0, 0xdf, 0xe8, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xb9, 0xc9, 0xe6, 0x8c, 0xa7, 0x1e,
     	0x00, 0x00,
     }
     
    diff --git a/vendor/k8s.io/api/apps/v1beta1/generated.proto b/vendor/k8s.io/api/apps/v1beta1/generated.proto
    index 245ec30f4214..46d7bfdf9239 100644
    --- a/vendor/k8s.io/api/apps/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/apps/v1beta1/generated.proto
    @@ -45,10 +45,10 @@ message ControllerRevision {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // data is the serialized representation of the state.
    -  optional k8s.io.apimachinery.pkg.runtime.RawExtension data = 2;
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension data = 2;
     
       // revision indicates the revision of the state represented by Data.
       optional int64 revision = 3;
    @@ -58,7 +58,7 @@ message ControllerRevision {
     message ControllerRevisionList {
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of ControllerRevisions
       repeated ControllerRevision items = 2;
    @@ -70,7 +70,7 @@ message ControllerRevisionList {
     message Deployment {
       // Standard object metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the Deployment.
       // +optional
    @@ -90,10 +90,10 @@ message DeploymentCondition {
       optional string status = 2;
     
       // The last time this condition was updated.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6;
     
       // Last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7;
     
       // The reason for the condition's last transition.
       optional string reason = 4;
    @@ -106,7 +106,7 @@ message DeploymentCondition {
     message DeploymentList {
       // Standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of Deployments.
       repeated Deployment items = 2;
    @@ -136,11 +136,11 @@ message DeploymentSpec {
       // selector is the label selector for pods. Existing ReplicaSets whose pods are
       // selected by this will be the ones affected by this deployment.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // Template describes the pods that will be created.
       // The only allowed template.spec.restartPolicy value is "Always".
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 3;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;
     
       // The deployment strategy to use to replace existing pods with new ones.
       // +optional
    @@ -208,6 +208,8 @@ message DeploymentStatus {
       // Conditions represent the latest available observations of a deployment's current state.
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated DeploymentCondition conditions = 6;
     
       // collisionCount is the count of hash collisions for the Deployment. The Deployment controller uses this
    @@ -252,7 +254,7 @@ message RollingUpdateDeployment {
       // that the total number of pods available at all times during the update is at
       // least 70% of desired pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
     
       // The maximum number of pods that can be scheduled above the desired number of
       // pods.
    @@ -266,7 +268,7 @@ message RollingUpdateDeployment {
       // new ReplicaSet can be scaled up further, ensuring that total number of pods running
       // at any time during the update is at most 130% of desired pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
     }
     
     // RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.
    @@ -285,14 +287,14 @@ message RollingUpdateStatefulSetStrategy {
       // Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it
       // will be counted towards MaxUnavailable.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 2;
     }
     
     // Scale represents a scaling request for a resource.
     message Scale {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
       // +optional
    @@ -340,7 +342,7 @@ message ScaleStatus {
     // map to the same storage identity.
     message StatefulSet {
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the desired identities of pods in this set.
       // +optional
    @@ -362,7 +364,7 @@ message StatefulSetCondition {
     
       // Last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // The reason for the condition's last transition.
       // +optional
    @@ -376,7 +378,7 @@ message StatefulSetCondition {
     // StatefulSetList is a collection of StatefulSets.
     message StatefulSetList {
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       repeated StatefulSet items = 2;
     }
    @@ -427,7 +429,7 @@ message StatefulSetSpec {
       // If empty, defaulted to labels on the pod template.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // template is the object that describes the pod that will be created if
       // insufficient replicas are detected. Each pod stamped out by the StatefulSet
    @@ -435,7 +437,7 @@ message StatefulSetSpec {
       // of the StatefulSet. Each pod will be named with the format
       // -. For example, a pod in a StatefulSet named
       // "web" with index number "3" would be named "web-3".
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 3;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;
     
       // volumeClaimTemplates is a list of claims that pods are allowed to reference.
       // The StatefulSet controller is responsible for mapping network identities to
    @@ -445,7 +447,8 @@ message StatefulSetSpec {
       // any volumes in the template, with the same name.
       // TODO: Define the behavior if a claim already exists with the same name.
       // +optional
    -  repeated k8s.io.api.core.v1.PersistentVolumeClaim volumeClaimTemplates = 4;
    +  // +listType=atomic
    +  repeated .k8s.io.api.core.v1.PersistentVolumeClaim volumeClaimTemplates = 4;
     
       // serviceName is the name of the service that governs this StatefulSet.
       // This service must exist before the StatefulSet, and is responsible for
    @@ -483,16 +486,13 @@ message StatefulSetSpec {
       optional int32 minReadySeconds = 9;
     
       // PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from
    -  // the StatefulSet VolumeClaimTemplates. This requires the
    -  // StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.
    +  // the StatefulSet VolumeClaimTemplates.
       // +optional
       optional StatefulSetPersistentVolumeClaimRetentionPolicy persistentVolumeClaimRetentionPolicy = 10;
     
       // ordinals controls the numbering of replica indices in a StatefulSet. The
       // default ordinals behavior assigns a "0" index to the first replica and
    -  // increments the index by one for each additional replica requested. Using
    -  // the ordinals field requires the StatefulSetStartOrdinal feature gate to be
    -  // enabled, which is beta.
    +  // increments the index by one for each additional replica requested.
       // +optional
       optional StatefulSetOrdinals ordinals = 11;
     }
    @@ -536,6 +536,8 @@ message StatefulSetStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated StatefulSetCondition conditions = 10;
     
       // availableReplicas is the total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet.
    diff --git a/vendor/k8s.io/api/apps/v1beta1/types.go b/vendor/k8s.io/api/apps/v1beta1/types.go
    index 59ed9c2ac3b1..bc485195781f 100644
    --- a/vendor/k8s.io/api/apps/v1beta1/types.go
    +++ b/vendor/k8s.io/api/apps/v1beta1/types.go
    @@ -181,11 +181,11 @@ const (
     	// PersistentVolumeClaims associated with StatefulSet VolumeClaimTemplates
     	// will not be deleted.
     	RetainPersistentVolumeClaimRetentionPolicyType PersistentVolumeClaimRetentionPolicyType = "Retain"
    -	// RetentionPersistentVolumeClaimRetentionPolicyType specifies that
    +	// DeletePersistentVolumeClaimRetentionPolicyType specifies that
     	// PersistentVolumeClaims associated with StatefulSet VolumeClaimTemplates
     	// will be deleted in the scenario specified in
     	// StatefulSetPersistentVolumeClaimRetentionPolicy.
    -	RetentionPersistentVolumeClaimRetentionPolicyType PersistentVolumeClaimRetentionPolicyType = "Delete"
    +	DeletePersistentVolumeClaimRetentionPolicyType PersistentVolumeClaimRetentionPolicyType = "Delete"
     )
     
     // StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs
    @@ -251,6 +251,7 @@ type StatefulSetSpec struct {
     	// any volumes in the template, with the same name.
     	// TODO: Define the behavior if a claim already exists with the same name.
     	// +optional
    +	// +listType=atomic
     	VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" protobuf:"bytes,4,rep,name=volumeClaimTemplates"`
     
     	// serviceName is the name of the service that governs this StatefulSet.
    @@ -289,16 +290,13 @@ type StatefulSetSpec struct {
     	MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,9,opt,name=minReadySeconds"`
     
     	// PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from
    -	// the StatefulSet VolumeClaimTemplates. This requires the
    -	// StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.
    +	// the StatefulSet VolumeClaimTemplates.
     	// +optional
     	PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy `json:"persistentVolumeClaimRetentionPolicy,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaimRetentionPolicy"`
     
     	// ordinals controls the numbering of replica indices in a StatefulSet. The
     	// default ordinals behavior assigns a "0" index to the first replica and
    -	// increments the index by one for each additional replica requested. Using
    -	// the ordinals field requires the StatefulSetStartOrdinal feature gate to be
    -	// enabled, which is beta.
    +	// increments the index by one for each additional replica requested.
     	// +optional
     	Ordinals *StatefulSetOrdinals `json:"ordinals,omitempty" protobuf:"bytes,11,opt,name=ordinals"`
     }
    @@ -342,6 +340,8 @@ type StatefulSetStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []StatefulSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"`
     
     	// availableReplicas is the total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet.
    @@ -577,6 +577,8 @@ type DeploymentStatus struct {
     	// Conditions represent the latest available observations of a deployment's current state.
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []DeploymentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`
     
     	// collisionCount is the count of hash collisions for the Deployment. The Deployment controller uses this
    diff --git a/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go
    index a62e9869d688..1381d75dc04d 100644
    --- a/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go
    @@ -258,8 +258,8 @@ var map_StatefulSetSpec = map[string]string{
     	"updateStrategy":                       "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.",
     	"revisionHistoryLimit":                 "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.",
     	"minReadySeconds":                      "minReadySeconds is the minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)",
    -	"persistentVolumeClaimRetentionPolicy": "PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.",
    -	"ordinals":                             "ordinals controls the numbering of replica indices in a StatefulSet. The default ordinals behavior assigns a \"0\" index to the first replica and increments the index by one for each additional replica requested. Using the ordinals field requires the StatefulSetStartOrdinal feature gate to be enabled, which is beta.",
    +	"persistentVolumeClaimRetentionPolicy": "PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.",
    +	"ordinals":                             "ordinals controls the numbering of replica indices in a StatefulSet. The default ordinals behavior assigns a \"0\" index to the first replica and increments the index by one for each additional replica requested.",
     }
     
     func (StatefulSetSpec) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/apps/v1beta2/generated.pb.go b/vendor/k8s.io/api/apps/v1beta2/generated.pb.go
    index 6dfb4d5d2a8d..1c3d3be5bc60 100644
    --- a/vendor/k8s.io/api/apps/v1beta2/generated.pb.go
    +++ b/vendor/k8s.io/api/apps/v1beta2/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta2/generated.proto
    +// source: k8s.io/api/apps/v1beta2/generated.proto
     
     package v1beta2
     
    @@ -52,7 +52,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ControllerRevision) Reset()      { *m = ControllerRevision{} }
     func (*ControllerRevision) ProtoMessage() {}
     func (*ControllerRevision) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{0}
    +	return fileDescriptor_c423c016abf485d4, []int{0}
     }
     func (m *ControllerRevision) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -80,7 +80,7 @@ var xxx_messageInfo_ControllerRevision proto.InternalMessageInfo
     func (m *ControllerRevisionList) Reset()      { *m = ControllerRevisionList{} }
     func (*ControllerRevisionList) ProtoMessage() {}
     func (*ControllerRevisionList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{1}
    +	return fileDescriptor_c423c016abf485d4, []int{1}
     }
     func (m *ControllerRevisionList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -108,7 +108,7 @@ var xxx_messageInfo_ControllerRevisionList proto.InternalMessageInfo
     func (m *DaemonSet) Reset()      { *m = DaemonSet{} }
     func (*DaemonSet) ProtoMessage() {}
     func (*DaemonSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{2}
    +	return fileDescriptor_c423c016abf485d4, []int{2}
     }
     func (m *DaemonSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -136,7 +136,7 @@ var xxx_messageInfo_DaemonSet proto.InternalMessageInfo
     func (m *DaemonSetCondition) Reset()      { *m = DaemonSetCondition{} }
     func (*DaemonSetCondition) ProtoMessage() {}
     func (*DaemonSetCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{3}
    +	return fileDescriptor_c423c016abf485d4, []int{3}
     }
     func (m *DaemonSetCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -164,7 +164,7 @@ var xxx_messageInfo_DaemonSetCondition proto.InternalMessageInfo
     func (m *DaemonSetList) Reset()      { *m = DaemonSetList{} }
     func (*DaemonSetList) ProtoMessage() {}
     func (*DaemonSetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{4}
    +	return fileDescriptor_c423c016abf485d4, []int{4}
     }
     func (m *DaemonSetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -192,7 +192,7 @@ var xxx_messageInfo_DaemonSetList proto.InternalMessageInfo
     func (m *DaemonSetSpec) Reset()      { *m = DaemonSetSpec{} }
     func (*DaemonSetSpec) ProtoMessage() {}
     func (*DaemonSetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{5}
    +	return fileDescriptor_c423c016abf485d4, []int{5}
     }
     func (m *DaemonSetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -220,7 +220,7 @@ var xxx_messageInfo_DaemonSetSpec proto.InternalMessageInfo
     func (m *DaemonSetStatus) Reset()      { *m = DaemonSetStatus{} }
     func (*DaemonSetStatus) ProtoMessage() {}
     func (*DaemonSetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{6}
    +	return fileDescriptor_c423c016abf485d4, []int{6}
     }
     func (m *DaemonSetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -248,7 +248,7 @@ var xxx_messageInfo_DaemonSetStatus proto.InternalMessageInfo
     func (m *DaemonSetUpdateStrategy) Reset()      { *m = DaemonSetUpdateStrategy{} }
     func (*DaemonSetUpdateStrategy) ProtoMessage() {}
     func (*DaemonSetUpdateStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{7}
    +	return fileDescriptor_c423c016abf485d4, []int{7}
     }
     func (m *DaemonSetUpdateStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -276,7 +276,7 @@ var xxx_messageInfo_DaemonSetUpdateStrategy proto.InternalMessageInfo
     func (m *Deployment) Reset()      { *m = Deployment{} }
     func (*Deployment) ProtoMessage() {}
     func (*Deployment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{8}
    +	return fileDescriptor_c423c016abf485d4, []int{8}
     }
     func (m *Deployment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -304,7 +304,7 @@ var xxx_messageInfo_Deployment proto.InternalMessageInfo
     func (m *DeploymentCondition) Reset()      { *m = DeploymentCondition{} }
     func (*DeploymentCondition) ProtoMessage() {}
     func (*DeploymentCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{9}
    +	return fileDescriptor_c423c016abf485d4, []int{9}
     }
     func (m *DeploymentCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -332,7 +332,7 @@ var xxx_messageInfo_DeploymentCondition proto.InternalMessageInfo
     func (m *DeploymentList) Reset()      { *m = DeploymentList{} }
     func (*DeploymentList) ProtoMessage() {}
     func (*DeploymentList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{10}
    +	return fileDescriptor_c423c016abf485d4, []int{10}
     }
     func (m *DeploymentList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -360,7 +360,7 @@ var xxx_messageInfo_DeploymentList proto.InternalMessageInfo
     func (m *DeploymentSpec) Reset()      { *m = DeploymentSpec{} }
     func (*DeploymentSpec) ProtoMessage() {}
     func (*DeploymentSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{11}
    +	return fileDescriptor_c423c016abf485d4, []int{11}
     }
     func (m *DeploymentSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -388,7 +388,7 @@ var xxx_messageInfo_DeploymentSpec proto.InternalMessageInfo
     func (m *DeploymentStatus) Reset()      { *m = DeploymentStatus{} }
     func (*DeploymentStatus) ProtoMessage() {}
     func (*DeploymentStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{12}
    +	return fileDescriptor_c423c016abf485d4, []int{12}
     }
     func (m *DeploymentStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -416,7 +416,7 @@ var xxx_messageInfo_DeploymentStatus proto.InternalMessageInfo
     func (m *DeploymentStrategy) Reset()      { *m = DeploymentStrategy{} }
     func (*DeploymentStrategy) ProtoMessage() {}
     func (*DeploymentStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{13}
    +	return fileDescriptor_c423c016abf485d4, []int{13}
     }
     func (m *DeploymentStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -444,7 +444,7 @@ var xxx_messageInfo_DeploymentStrategy proto.InternalMessageInfo
     func (m *ReplicaSet) Reset()      { *m = ReplicaSet{} }
     func (*ReplicaSet) ProtoMessage() {}
     func (*ReplicaSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{14}
    +	return fileDescriptor_c423c016abf485d4, []int{14}
     }
     func (m *ReplicaSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -472,7 +472,7 @@ var xxx_messageInfo_ReplicaSet proto.InternalMessageInfo
     func (m *ReplicaSetCondition) Reset()      { *m = ReplicaSetCondition{} }
     func (*ReplicaSetCondition) ProtoMessage() {}
     func (*ReplicaSetCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{15}
    +	return fileDescriptor_c423c016abf485d4, []int{15}
     }
     func (m *ReplicaSetCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -500,7 +500,7 @@ var xxx_messageInfo_ReplicaSetCondition proto.InternalMessageInfo
     func (m *ReplicaSetList) Reset()      { *m = ReplicaSetList{} }
     func (*ReplicaSetList) ProtoMessage() {}
     func (*ReplicaSetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{16}
    +	return fileDescriptor_c423c016abf485d4, []int{16}
     }
     func (m *ReplicaSetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -528,7 +528,7 @@ var xxx_messageInfo_ReplicaSetList proto.InternalMessageInfo
     func (m *ReplicaSetSpec) Reset()      { *m = ReplicaSetSpec{} }
     func (*ReplicaSetSpec) ProtoMessage() {}
     func (*ReplicaSetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{17}
    +	return fileDescriptor_c423c016abf485d4, []int{17}
     }
     func (m *ReplicaSetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -556,7 +556,7 @@ var xxx_messageInfo_ReplicaSetSpec proto.InternalMessageInfo
     func (m *ReplicaSetStatus) Reset()      { *m = ReplicaSetStatus{} }
     func (*ReplicaSetStatus) ProtoMessage() {}
     func (*ReplicaSetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{18}
    +	return fileDescriptor_c423c016abf485d4, []int{18}
     }
     func (m *ReplicaSetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -584,7 +584,7 @@ var xxx_messageInfo_ReplicaSetStatus proto.InternalMessageInfo
     func (m *RollingUpdateDaemonSet) Reset()      { *m = RollingUpdateDaemonSet{} }
     func (*RollingUpdateDaemonSet) ProtoMessage() {}
     func (*RollingUpdateDaemonSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{19}
    +	return fileDescriptor_c423c016abf485d4, []int{19}
     }
     func (m *RollingUpdateDaemonSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -612,7 +612,7 @@ var xxx_messageInfo_RollingUpdateDaemonSet proto.InternalMessageInfo
     func (m *RollingUpdateDeployment) Reset()      { *m = RollingUpdateDeployment{} }
     func (*RollingUpdateDeployment) ProtoMessage() {}
     func (*RollingUpdateDeployment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{20}
    +	return fileDescriptor_c423c016abf485d4, []int{20}
     }
     func (m *RollingUpdateDeployment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -640,7 +640,7 @@ var xxx_messageInfo_RollingUpdateDeployment proto.InternalMessageInfo
     func (m *RollingUpdateStatefulSetStrategy) Reset()      { *m = RollingUpdateStatefulSetStrategy{} }
     func (*RollingUpdateStatefulSetStrategy) ProtoMessage() {}
     func (*RollingUpdateStatefulSetStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{21}
    +	return fileDescriptor_c423c016abf485d4, []int{21}
     }
     func (m *RollingUpdateStatefulSetStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -668,7 +668,7 @@ var xxx_messageInfo_RollingUpdateStatefulSetStrategy proto.InternalMessageInfo
     func (m *Scale) Reset()      { *m = Scale{} }
     func (*Scale) ProtoMessage() {}
     func (*Scale) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{22}
    +	return fileDescriptor_c423c016abf485d4, []int{22}
     }
     func (m *Scale) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -696,7 +696,7 @@ var xxx_messageInfo_Scale proto.InternalMessageInfo
     func (m *ScaleSpec) Reset()      { *m = ScaleSpec{} }
     func (*ScaleSpec) ProtoMessage() {}
     func (*ScaleSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{23}
    +	return fileDescriptor_c423c016abf485d4, []int{23}
     }
     func (m *ScaleSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -724,7 +724,7 @@ var xxx_messageInfo_ScaleSpec proto.InternalMessageInfo
     func (m *ScaleStatus) Reset()      { *m = ScaleStatus{} }
     func (*ScaleStatus) ProtoMessage() {}
     func (*ScaleStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{24}
    +	return fileDescriptor_c423c016abf485d4, []int{24}
     }
     func (m *ScaleStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -752,7 +752,7 @@ var xxx_messageInfo_ScaleStatus proto.InternalMessageInfo
     func (m *StatefulSet) Reset()      { *m = StatefulSet{} }
     func (*StatefulSet) ProtoMessage() {}
     func (*StatefulSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{25}
    +	return fileDescriptor_c423c016abf485d4, []int{25}
     }
     func (m *StatefulSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -780,7 +780,7 @@ var xxx_messageInfo_StatefulSet proto.InternalMessageInfo
     func (m *StatefulSetCondition) Reset()      { *m = StatefulSetCondition{} }
     func (*StatefulSetCondition) ProtoMessage() {}
     func (*StatefulSetCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{26}
    +	return fileDescriptor_c423c016abf485d4, []int{26}
     }
     func (m *StatefulSetCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -808,7 +808,7 @@ var xxx_messageInfo_StatefulSetCondition proto.InternalMessageInfo
     func (m *StatefulSetList) Reset()      { *m = StatefulSetList{} }
     func (*StatefulSetList) ProtoMessage() {}
     func (*StatefulSetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{27}
    +	return fileDescriptor_c423c016abf485d4, []int{27}
     }
     func (m *StatefulSetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -836,7 +836,7 @@ var xxx_messageInfo_StatefulSetList proto.InternalMessageInfo
     func (m *StatefulSetOrdinals) Reset()      { *m = StatefulSetOrdinals{} }
     func (*StatefulSetOrdinals) ProtoMessage() {}
     func (*StatefulSetOrdinals) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{28}
    +	return fileDescriptor_c423c016abf485d4, []int{28}
     }
     func (m *StatefulSetOrdinals) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -866,7 +866,7 @@ func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Reset() {
     }
     func (*StatefulSetPersistentVolumeClaimRetentionPolicy) ProtoMessage() {}
     func (*StatefulSetPersistentVolumeClaimRetentionPolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{29}
    +	return fileDescriptor_c423c016abf485d4, []int{29}
     }
     func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -894,7 +894,7 @@ var xxx_messageInfo_StatefulSetPersistentVolumeClaimRetentionPolicy proto.Intern
     func (m *StatefulSetSpec) Reset()      { *m = StatefulSetSpec{} }
     func (*StatefulSetSpec) ProtoMessage() {}
     func (*StatefulSetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{30}
    +	return fileDescriptor_c423c016abf485d4, []int{30}
     }
     func (m *StatefulSetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -922,7 +922,7 @@ var xxx_messageInfo_StatefulSetSpec proto.InternalMessageInfo
     func (m *StatefulSetStatus) Reset()      { *m = StatefulSetStatus{} }
     func (*StatefulSetStatus) ProtoMessage() {}
     func (*StatefulSetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{31}
    +	return fileDescriptor_c423c016abf485d4, []int{31}
     }
     func (m *StatefulSetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -950,7 +950,7 @@ var xxx_messageInfo_StatefulSetStatus proto.InternalMessageInfo
     func (m *StatefulSetUpdateStrategy) Reset()      { *m = StatefulSetUpdateStrategy{} }
     func (*StatefulSetUpdateStrategy) ProtoMessage() {}
     func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_42fe616264472f7e, []int{32}
    +	return fileDescriptor_c423c016abf485d4, []int{32}
     }
     func (m *StatefulSetUpdateStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1013,158 +1013,157 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta2/generated.proto", fileDescriptor_42fe616264472f7e)
    +	proto.RegisterFile("k8s.io/api/apps/v1beta2/generated.proto", fileDescriptor_c423c016abf485d4)
     }
     
    -var fileDescriptor_42fe616264472f7e = []byte{
    -	// 2345 bytes of a gzipped FileDescriptorProto
    +var fileDescriptor_c423c016abf485d4 = []byte{
    +	// 2328 bytes of a gzipped FileDescriptorProto
     	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0xc7,
    -	0x15, 0xf7, 0xf2, 0x43, 0x26, 0x87, 0x96, 0x64, 0x8f, 0x54, 0x89, 0x91, 0x5b, 0xd2, 0x58, 0x1b,
    -	0x8e, 0x12, 0xdb, 0xa4, 0xad, 0x7c, 0x20, 0xb1, 0xdb, 0xa4, 0xa2, 0x94, 0xda, 0x0e, 0xf4, 0xc1,
    -	0x0c, 0x2d, 0x07, 0x0d, 0xfa, 0xe1, 0x11, 0x39, 0xa6, 0x36, 0x5a, 0xee, 0x2e, 0x76, 0x87, 0x8c,
    -	0x89, 0x5e, 0x7a, 0x2d, 0x50, 0xa0, 0xed, 0xb5, 0xff, 0x44, 0xd1, 0x4b, 0x51, 0x34, 0xe8, 0xa5,
    -	0x08, 0x02, 0x1f, 0x83, 0x5e, 0x92, 0x13, 0x51, 0x33, 0xa7, 0xa2, 0xe8, 0xad, 0xbd, 0x18, 0x28,
    -	0x50, 0xcc, 0xec, 0xec, 0xf7, 0xae, 0xb9, 0x54, 0x6c, 0xe5, 0x03, 0xb9, 0x71, 0xe7, 0xbd, 0xf7,
    -	0x9b, 0x37, 0x33, 0xef, 0xcd, 0xfb, 0xcd, 0x0c, 0xc1, 0x0f, 0x0f, 0x5f, 0xb3, 0x6a, 0x8a, 0x5e,
    -	0x3f, 0xec, 0xef, 0x13, 0x53, 0x23, 0x94, 0x58, 0xf5, 0x01, 0xd1, 0x3a, 0xba, 0x59, 0x17, 0x02,
    -	0x6c, 0x28, 0x75, 0x6c, 0x18, 0x56, 0x7d, 0x70, 0x6d, 0x9f, 0x50, 0xbc, 0x56, 0xef, 0x12, 0x8d,
    -	0x98, 0x98, 0x92, 0x4e, 0xcd, 0x30, 0x75, 0xaa, 0xc3, 0x65, 0x5b, 0xb1, 0x86, 0x0d, 0xa5, 0xc6,
    -	0x14, 0x6b, 0x42, 0x71, 0xe5, 0x4a, 0x57, 0xa1, 0x07, 0xfd, 0xfd, 0x5a, 0x5b, 0xef, 0xd5, 0xbb,
    -	0x7a, 0x57, 0xaf, 0x73, 0xfd, 0xfd, 0xfe, 0x7d, 0xfe, 0xc5, 0x3f, 0xf8, 0x2f, 0x1b, 0x67, 0x45,
    -	0xf6, 0x75, 0xd8, 0xd6, 0x4d, 0x52, 0x1f, 0x5c, 0x0b, 0xf7, 0xb5, 0xf2, 0xb2, 0xa7, 0xd3, 0xc3,
    -	0xed, 0x03, 0x45, 0x23, 0xe6, 0xb0, 0x6e, 0x1c, 0x76, 0x59, 0x83, 0x55, 0xef, 0x11, 0x8a, 0xe3,
    -	0xac, 0xea, 0x49, 0x56, 0x66, 0x5f, 0xa3, 0x4a, 0x8f, 0x44, 0x0c, 0x5e, 0x9d, 0x64, 0x60, 0xb5,
    -	0x0f, 0x48, 0x0f, 0x47, 0xec, 0x5e, 0x4a, 0xb2, 0xeb, 0x53, 0x45, 0xad, 0x2b, 0x1a, 0xb5, 0xa8,
    -	0x19, 0x36, 0x92, 0xff, 0x2b, 0x01, 0xb8, 0xa1, 0x6b, 0xd4, 0xd4, 0x55, 0x95, 0x98, 0x88, 0x0c,
    -	0x14, 0x4b, 0xd1, 0x35, 0x78, 0x0f, 0x14, 0xd8, 0x78, 0x3a, 0x98, 0xe2, 0xb2, 0x74, 0x4e, 0x5a,
    -	0x2d, 0xad, 0x5d, 0xad, 0x79, 0x33, 0xed, 0xc2, 0xd7, 0x8c, 0xc3, 0x2e, 0x6b, 0xb0, 0x6a, 0x4c,
    -	0xbb, 0x36, 0xb8, 0x56, 0xdb, 0xdd, 0x7f, 0x9f, 0xb4, 0xe9, 0x36, 0xa1, 0xb8, 0x01, 0x1f, 0x8e,
    -	0xaa, 0x27, 0xc6, 0xa3, 0x2a, 0xf0, 0xda, 0x90, 0x8b, 0x0a, 0x77, 0x41, 0x8e, 0xa3, 0x67, 0x38,
    -	0xfa, 0x95, 0x44, 0x74, 0x31, 0xe8, 0x1a, 0xc2, 0x1f, 0xbc, 0xf5, 0x80, 0x12, 0x8d, 0xb9, 0xd7,
    -	0x38, 0x25, 0xa0, 0x73, 0x9b, 0x98, 0x62, 0xc4, 0x81, 0xe0, 0x65, 0x50, 0x30, 0x85, 0xfb, 0xe5,
    -	0xec, 0x39, 0x69, 0x35, 0xdb, 0x38, 0x2d, 0xb4, 0x0a, 0xce, 0xb0, 0x90, 0xab, 0x21, 0x3f, 0x94,
    -	0xc0, 0x52, 0x74, 0xdc, 0x5b, 0x8a, 0x45, 0xe1, 0x4f, 0x22, 0x63, 0xaf, 0xa5, 0x1b, 0x3b, 0xb3,
    -	0xe6, 0x23, 0x77, 0x3b, 0x76, 0x5a, 0x7c, 0xe3, 0x6e, 0x82, 0xbc, 0x42, 0x49, 0xcf, 0x2a, 0x67,
    -	0xce, 0x65, 0x57, 0x4b, 0x6b, 0x97, 0x6a, 0x09, 0x01, 0x5c, 0x8b, 0x7a, 0xd7, 0x98, 0x15, 0xb8,
    -	0xf9, 0xdb, 0x0c, 0x01, 0xd9, 0x40, 0xf2, 0xaf, 0x32, 0xa0, 0xb8, 0x89, 0x49, 0x4f, 0xd7, 0x5a,
    -	0x84, 0x1e, 0xc3, 0xca, 0xdd, 0x02, 0x39, 0xcb, 0x20, 0x6d, 0xb1, 0x72, 0x17, 0x13, 0x07, 0xe0,
    -	0xfa, 0xd4, 0x32, 0x48, 0xdb, 0x5b, 0x32, 0xf6, 0x85, 0x38, 0x02, 0x6c, 0x82, 0x19, 0x8b, 0x62,
    -	0xda, 0xb7, 0xf8, 0x82, 0x95, 0xd6, 0x56, 0x53, 0x60, 0x71, 0xfd, 0xc6, 0x9c, 0x40, 0x9b, 0xb1,
    -	0xbf, 0x91, 0xc0, 0x91, 0xff, 0x99, 0x01, 0xd0, 0xd5, 0xdd, 0xd0, 0xb5, 0x8e, 0x42, 0x59, 0x38,
    -	0x5f, 0x07, 0x39, 0x3a, 0x34, 0x08, 0x9f, 0x90, 0x62, 0xe3, 0xa2, 0xe3, 0xca, 0x9d, 0xa1, 0x41,
    -	0x1e, 0x8f, 0xaa, 0x4b, 0x51, 0x0b, 0x26, 0x41, 0xdc, 0x06, 0x6e, 0xb9, 0x4e, 0x66, 0xb8, 0xf5,
    -	0xcb, 0xc1, 0xae, 0x1f, 0x8f, 0xaa, 0x31, 0x7b, 0x47, 0xcd, 0x45, 0x0a, 0x3a, 0x08, 0x07, 0x00,
    -	0xaa, 0xd8, 0xa2, 0x77, 0x4c, 0xac, 0x59, 0x76, 0x4f, 0x4a, 0x8f, 0x88, 0xe1, 0xbf, 0x98, 0x6e,
    -	0xa1, 0x98, 0x45, 0x63, 0x45, 0x78, 0x01, 0xb7, 0x22, 0x68, 0x28, 0xa6, 0x07, 0x78, 0x11, 0xcc,
    -	0x98, 0x04, 0x5b, 0xba, 0x56, 0xce, 0xf1, 0x51, 0xb8, 0x13, 0x88, 0x78, 0x2b, 0x12, 0x52, 0xf8,
    -	0x02, 0x38, 0xd9, 0x23, 0x96, 0x85, 0xbb, 0xa4, 0x9c, 0xe7, 0x8a, 0xf3, 0x42, 0xf1, 0xe4, 0xb6,
    -	0xdd, 0x8c, 0x1c, 0xb9, 0xfc, 0x27, 0x09, 0xcc, 0xba, 0x33, 0x77, 0x0c, 0x99, 0x73, 0x33, 0x98,
    -	0x39, 0xf2, 0xe4, 0x60, 0x49, 0x48, 0x98, 0x8f, 0xb2, 0x3e, 0xc7, 0x59, 0x38, 0xc2, 0x9f, 0x82,
    -	0x82, 0x45, 0x54, 0xd2, 0xa6, 0xba, 0x29, 0x1c, 0x7f, 0x29, 0xa5, 0xe3, 0x78, 0x9f, 0xa8, 0x2d,
    -	0x61, 0xda, 0x38, 0xc5, 0x3c, 0x77, 0xbe, 0x90, 0x0b, 0x09, 0xdf, 0x01, 0x05, 0x4a, 0x7a, 0x86,
    -	0x8a, 0x29, 0x11, 0x59, 0x73, 0xde, 0xef, 0x3c, 0x8b, 0x19, 0x06, 0xd6, 0xd4, 0x3b, 0x77, 0x84,
    -	0x1a, 0x4f, 0x19, 0x77, 0x32, 0x9c, 0x56, 0xe4, 0xc2, 0x40, 0x03, 0xcc, 0xf5, 0x8d, 0x0e, 0xd3,
    -	0xa4, 0x6c, 0x3b, 0xef, 0x0e, 0x45, 0x0c, 0x5d, 0x9d, 0x3c, 0x2b, 0x7b, 0x01, 0xbb, 0xc6, 0x92,
    -	0xe8, 0x65, 0x2e, 0xd8, 0x8e, 0x42, 0xf8, 0x70, 0x1d, 0xcc, 0xf7, 0x14, 0x0d, 0x11, 0xdc, 0x19,
    -	0xb6, 0x48, 0x5b, 0xd7, 0x3a, 0x16, 0x0f, 0xa5, 0x7c, 0x63, 0x59, 0x00, 0xcc, 0x6f, 0x07, 0xc5,
    -	0x28, 0xac, 0x0f, 0xb7, 0xc0, 0xa2, 0xb3, 0x01, 0xdf, 0x52, 0x2c, 0xaa, 0x9b, 0xc3, 0x2d, 0xa5,
    -	0xa7, 0xd0, 0xf2, 0x0c, 0xc7, 0x29, 0x8f, 0x47, 0xd5, 0x45, 0x14, 0x23, 0x47, 0xb1, 0x56, 0xf2,
    -	0xef, 0x66, 0xc0, 0x7c, 0x68, 0x5f, 0x80, 0x77, 0xc1, 0x52, 0xbb, 0x6f, 0x9a, 0x44, 0xa3, 0x3b,
    -	0xfd, 0xde, 0x3e, 0x31, 0x5b, 0xed, 0x03, 0xd2, 0xe9, 0xab, 0xa4, 0xc3, 0x97, 0x35, 0xdf, 0xa8,
    -	0x08, 0x5f, 0x97, 0x36, 0x62, 0xb5, 0x50, 0x82, 0x35, 0x7c, 0x1b, 0x40, 0x8d, 0x37, 0x6d, 0x2b,
    -	0x96, 0xe5, 0x62, 0x66, 0x38, 0xa6, 0x9b, 0x8a, 0x3b, 0x11, 0x0d, 0x14, 0x63, 0xc5, 0x7c, 0xec,
    -	0x10, 0x4b, 0x31, 0x49, 0x27, 0xec, 0x63, 0x36, 0xe8, 0xe3, 0x66, 0xac, 0x16, 0x4a, 0xb0, 0x86,
    -	0xaf, 0x80, 0x92, 0xdd, 0x1b, 0x9f, 0x73, 0xb1, 0x38, 0x0b, 0x02, 0xac, 0xb4, 0xe3, 0x89, 0x90,
    -	0x5f, 0x8f, 0x0d, 0x4d, 0xdf, 0xb7, 0x88, 0x39, 0x20, 0x9d, 0x9b, 0x36, 0x39, 0x60, 0x15, 0x34,
    -	0xcf, 0x2b, 0xa8, 0x3b, 0xb4, 0xdd, 0x88, 0x06, 0x8a, 0xb1, 0x62, 0x43, 0xb3, 0xa3, 0x26, 0x32,
    -	0xb4, 0x99, 0xe0, 0xd0, 0xf6, 0x62, 0xb5, 0x50, 0x82, 0x35, 0x8b, 0x3d, 0xdb, 0xe5, 0xf5, 0x01,
    -	0x56, 0x54, 0xbc, 0xaf, 0x92, 0xf2, 0xc9, 0x60, 0xec, 0xed, 0x04, 0xc5, 0x28, 0xac, 0x0f, 0x6f,
    -	0x82, 0x33, 0x76, 0xd3, 0x9e, 0x86, 0x5d, 0x90, 0x02, 0x07, 0x79, 0x4e, 0x80, 0x9c, 0xd9, 0x09,
    -	0x2b, 0xa0, 0xa8, 0x0d, 0xbc, 0x0e, 0xe6, 0xda, 0xba, 0xaa, 0xf2, 0x78, 0xdc, 0xd0, 0xfb, 0x1a,
    -	0x2d, 0x17, 0x39, 0x0a, 0x64, 0x39, 0xb4, 0x11, 0x90, 0xa0, 0x90, 0x26, 0xfc, 0x39, 0x00, 0x6d,
    -	0xa7, 0x30, 0x58, 0x65, 0x30, 0x81, 0x01, 0x44, 0xcb, 0x92, 0x57, 0x99, 0xdd, 0x26, 0x0b, 0xf9,
    -	0x20, 0xe5, 0x8f, 0x24, 0xb0, 0x9c, 0x90, 0xe8, 0xf0, 0xcd, 0x40, 0x11, 0xbc, 0x14, 0x2a, 0x82,
    -	0x67, 0x13, 0xcc, 0x7c, 0x95, 0xf0, 0x00, 0xcc, 0x32, 0x42, 0xa2, 0x68, 0x5d, 0x5b, 0x45, 0xec,
    -	0x65, 0xf5, 0xc4, 0x01, 0x20, 0xbf, 0xb6, 0xb7, 0x2b, 0x9f, 0x19, 0x8f, 0xaa, 0xb3, 0x01, 0x19,
    -	0x0a, 0x02, 0xcb, 0xbf, 0xce, 0x00, 0xb0, 0x49, 0x0c, 0x55, 0x1f, 0xf6, 0x88, 0x76, 0x1c, 0x9c,
    -	0xe6, 0x76, 0x80, 0xd3, 0x3c, 0x9f, 0xbc, 0x24, 0xae, 0x53, 0x89, 0xa4, 0xe6, 0x9d, 0x10, 0xa9,
    -	0x79, 0x21, 0x0d, 0xd8, 0x93, 0x59, 0xcd, 0xa7, 0x59, 0xb0, 0xe0, 0x29, 0x7b, 0xb4, 0xe6, 0x46,
    -	0x60, 0x45, 0x9f, 0x0f, 0xad, 0xe8, 0x72, 0x8c, 0xc9, 0x33, 0xe3, 0x35, 0xef, 0x83, 0x39, 0xc6,
    -	0x3a, 0xec, 0xf5, 0xe3, 0x9c, 0x66, 0x66, 0x6a, 0x4e, 0xe3, 0x56, 0xa2, 0xad, 0x00, 0x12, 0x0a,
    -	0x21, 0x27, 0x70, 0xa8, 0x93, 0x5f, 0x47, 0x0e, 0xf5, 0x67, 0x09, 0xcc, 0x79, 0xcb, 0x74, 0x0c,
    -	0x24, 0xea, 0x56, 0x90, 0x44, 0x9d, 0x4f, 0x11, 0x9c, 0x09, 0x2c, 0xea, 0xd3, 0x9c, 0xdf, 0x75,
    -	0x4e, 0xa3, 0x56, 0xd9, 0x11, 0xcc, 0x50, 0x95, 0x36, 0xb6, 0x44, 0xbd, 0x3d, 0x65, 0x1f, 0xbf,
    -	0xec, 0x36, 0xe4, 0x4a, 0x03, 0x84, 0x2b, 0xf3, 0x6c, 0x09, 0x57, 0xf6, 0xe9, 0x10, 0xae, 0x1f,
    -	0x83, 0x82, 0xe5, 0x50, 0xad, 0x1c, 0x87, 0xbc, 0x94, 0x2a, 0xb1, 0x05, 0xcb, 0x72, 0xa1, 0x5d,
    -	0x7e, 0xe5, 0xc2, 0xc5, 0x31, 0xab, 0xfc, 0x97, 0xc9, 0xac, 0x58, 0xa0, 0x1b, 0xb8, 0x6f, 0x91,
    -	0x0e, 0x4f, 0xaa, 0x82, 0x17, 0xe8, 0x4d, 0xde, 0x8a, 0x84, 0x14, 0xee, 0x81, 0x65, 0xc3, 0xd4,
    -	0xbb, 0x26, 0xb1, 0xac, 0x4d, 0x82, 0x3b, 0xaa, 0xa2, 0x11, 0x67, 0x00, 0x76, 0x4d, 0x3c, 0x3b,
    -	0x1e, 0x55, 0x97, 0x9b, 0xf1, 0x2a, 0x28, 0xc9, 0x56, 0xfe, 0x5b, 0x0e, 0x9c, 0x0e, 0xef, 0x8d,
    -	0x09, 0x34, 0x45, 0x3a, 0x12, 0x4d, 0xb9, 0xec, 0x8b, 0x53, 0x9b, 0xc3, 0xf9, 0xae, 0x0a, 0x22,
    -	0xb1, 0xba, 0x0e, 0xe6, 0x05, 0x2d, 0x71, 0x84, 0x82, 0xa8, 0xb9, 0xcb, 0xb3, 0x17, 0x14, 0xa3,
    -	0xb0, 0x3e, 0xbc, 0x01, 0x66, 0x4d, 0xce, 0xbc, 0x1c, 0x00, 0x9b, 0xbd, 0x7c, 0x47, 0x00, 0xcc,
    -	0x22, 0xbf, 0x10, 0x05, 0x75, 0x19, 0x73, 0xf1, 0x08, 0x89, 0x03, 0x90, 0x0b, 0x32, 0x97, 0xf5,
    -	0xb0, 0x02, 0x8a, 0xda, 0xc0, 0x6d, 0xb0, 0xd0, 0xd7, 0xa2, 0x50, 0x76, 0xac, 0x9d, 0x15, 0x50,
    -	0x0b, 0x7b, 0x51, 0x15, 0x14, 0x67, 0x07, 0xef, 0x05, 0xc8, 0xcc, 0x0c, 0xdf, 0x4f, 0x2e, 0xa7,
    -	0xc8, 0x89, 0xd4, 0x6c, 0x26, 0x86, 0x6a, 0x15, 0xd2, 0x52, 0x2d, 0xf9, 0x43, 0x09, 0xc0, 0x68,
    -	0x1e, 0x4e, 0xbc, 0x09, 0x88, 0x58, 0xf8, 0x2a, 0xa6, 0x12, 0xcf, 0x7f, 0xae, 0xa6, 0xe4, 0x3f,
    -	0xde, 0x86, 0x9a, 0x8e, 0x00, 0x89, 0x89, 0x3e, 0x9e, 0x4b, 0x9d, 0xb4, 0x04, 0xc8, 0x73, 0xea,
    -	0x29, 0x10, 0x20, 0x1f, 0xd8, 0x93, 0x09, 0xd0, 0xbf, 0x32, 0x60, 0xc1, 0x53, 0x4e, 0x4d, 0x80,
    -	0x62, 0x4c, 0xbe, 0xbd, 0xd8, 0x49, 0x47, 0x4a, 0xbc, 0xa9, 0xfb, 0x2a, 0x91, 0x12, 0xcf, 0xab,
    -	0x04, 0x52, 0xf2, 0x87, 0x8c, 0xdf, 0xf5, 0x29, 0x49, 0xc9, 0x53, 0xb8, 0xe1, 0xf8, 0xda, 0xf1,
    -	0x1a, 0xf9, 0xe3, 0x2c, 0x38, 0x1d, 0xce, 0xc3, 0x40, 0x81, 0x94, 0x26, 0x16, 0xc8, 0x26, 0x58,
    -	0xbc, 0xdf, 0x57, 0xd5, 0x21, 0x1f, 0x83, 0xaf, 0x4a, 0xda, 0xa5, 0xf5, 0xbb, 0xc2, 0x72, 0xf1,
    -	0x47, 0x31, 0x3a, 0x28, 0xd6, 0x32, 0x5a, 0x2f, 0x73, 0x5f, 0xb4, 0x5e, 0xe6, 0x8f, 0x50, 0x2f,
    -	0xe3, 0x29, 0x47, 0xf6, 0x48, 0x94, 0x63, 0xba, 0x62, 0x19, 0xb3, 0x71, 0x4d, 0x3c, 0xfa, 0x8f,
    -	0x25, 0xb0, 0x14, 0x7f, 0xe0, 0x86, 0x2a, 0x98, 0xeb, 0xe1, 0x07, 0xfe, 0x8b, 0x8f, 0x49, 0x45,
    -	0xa4, 0x4f, 0x15, 0xb5, 0x66, 0x3f, 0x19, 0xd5, 0x6e, 0x6b, 0x74, 0xd7, 0x6c, 0x51, 0x53, 0xd1,
    -	0xba, 0x76, 0xe5, 0xdd, 0x0e, 0x60, 0xa1, 0x10, 0x36, 0x7c, 0x0f, 0x14, 0x7a, 0xf8, 0x41, 0xab,
    -	0x6f, 0x76, 0xe3, 0x2a, 0x64, 0xba, 0x7e, 0x78, 0x02, 0x6c, 0x0b, 0x14, 0xe4, 0xe2, 0xc9, 0x9f,
    -	0x4b, 0x60, 0x39, 0xa1, 0xaa, 0x7e, 0x83, 0x46, 0xf9, 0x57, 0x09, 0x9c, 0x0b, 0x8c, 0x92, 0xa5,
    -	0x25, 0xb9, 0xdf, 0x57, 0x79, 0x86, 0x0a, 0x26, 0x73, 0x09, 0x14, 0x0d, 0x6c, 0x52, 0xc5, 0xe5,
    -	0xc1, 0xf9, 0xc6, 0xec, 0x78, 0x54, 0x2d, 0x36, 0x9d, 0x46, 0xe4, 0xc9, 0x63, 0xe6, 0x26, 0xf3,
    -	0xec, 0xe6, 0x46, 0xfe, 0x9f, 0x04, 0xf2, 0xad, 0x36, 0x56, 0xc9, 0x31, 0x10, 0x97, 0xcd, 0x00,
    -	0x71, 0x49, 0x7e, 0x14, 0xe0, 0xfe, 0x24, 0x72, 0x96, 0xad, 0x10, 0x67, 0xb9, 0x30, 0x01, 0xe7,
    -	0xc9, 0x74, 0xe5, 0x75, 0x50, 0x74, 0xbb, 0x9b, 0x6e, 0x2f, 0x95, 0x7f, 0x9f, 0x01, 0x25, 0x5f,
    -	0x17, 0x53, 0xee, 0xc4, 0xf7, 0x02, 0xe5, 0x87, 0xed, 0x31, 0x6b, 0x69, 0x06, 0x52, 0x73, 0x4a,
    -	0xcd, 0x5b, 0x1a, 0x35, 0xfd, 0x67, 0xd5, 0x68, 0x05, 0x7a, 0x03, 0xcc, 0x51, 0x6c, 0x76, 0x09,
    -	0x75, 0x64, 0x7c, 0xc2, 0x8a, 0xde, 0xdd, 0xcd, 0x9d, 0x80, 0x14, 0x85, 0xb4, 0x57, 0x6e, 0x80,
    -	0xd9, 0x40, 0x67, 0xf0, 0x34, 0xc8, 0x1e, 0x92, 0xa1, 0xcd, 0xe0, 0x10, 0xfb, 0x09, 0x17, 0x41,
    -	0x7e, 0x80, 0xd5, 0xbe, 0x1d, 0xa2, 0x45, 0x64, 0x7f, 0x5c, 0xcf, 0xbc, 0x26, 0xc9, 0xbf, 0x61,
    -	0x93, 0xe3, 0xa5, 0xc2, 0x31, 0x44, 0xd7, 0xdb, 0x81, 0xe8, 0x4a, 0x7e, 0x9f, 0xf4, 0x27, 0x68,
    -	0x52, 0x8c, 0xa1, 0x50, 0x8c, 0xbd, 0x98, 0x0a, 0xed, 0xc9, 0x91, 0xf6, 0xef, 0x0c, 0x58, 0xf4,
    -	0x69, 0x7b, 0xcc, 0xf8, 0xfb, 0x01, 0x66, 0xbc, 0x1a, 0x62, 0xc6, 0xe5, 0x38, 0x9b, 0x6f, 0xa9,
    -	0xf1, 0x64, 0x6a, 0xfc, 0x17, 0x09, 0xcc, 0xfb, 0xe6, 0xee, 0x18, 0xb8, 0xf1, 0xed, 0x20, 0x37,
    -	0xbe, 0x90, 0x26, 0x68, 0x12, 0xc8, 0xf1, 0x75, 0xb0, 0xe0, 0x53, 0xda, 0x35, 0x3b, 0x8a, 0x86,
    -	0x55, 0x0b, 0x9e, 0x07, 0x79, 0x8b, 0x62, 0x93, 0x3a, 0x45, 0xc4, 0xb1, 0x6d, 0xb1, 0x46, 0x64,
    -	0xcb, 0xe4, 0xff, 0x48, 0xa0, 0xee, 0x33, 0x6e, 0x12, 0xd3, 0x52, 0x2c, 0x4a, 0x34, 0x7a, 0x57,
    -	0x57, 0xfb, 0x3d, 0xb2, 0xa1, 0x62, 0xa5, 0x87, 0x08, 0x6b, 0x50, 0x74, 0xad, 0xa9, 0xab, 0x4a,
    -	0x7b, 0x08, 0x31, 0x28, 0x7d, 0x70, 0x40, 0xb4, 0x4d, 0xa2, 0x12, 0x2a, 0x5e, 0xe0, 0x8a, 0x8d,
    -	0x37, 0x9d, 0x07, 0xa9, 0x77, 0x3d, 0xd1, 0xe3, 0x51, 0x75, 0x35, 0x0d, 0x22, 0x8f, 0x50, 0x3f,
    -	0x26, 0xfc, 0x19, 0x00, 0xec, 0x93, 0xef, 0x65, 0x1d, 0x11, 0xac, 0x6f, 0x38, 0x19, 0xfd, 0xae,
    -	0x2b, 0x99, 0xaa, 0x03, 0x1f, 0xa2, 0xfc, 0xc7, 0x42, 0x60, 0xbd, 0xbf, 0xf1, 0xb7, 0x9c, 0xbf,
    -	0x00, 0x8b, 0x03, 0x6f, 0x76, 0x1c, 0x05, 0xc6, 0xbf, 0xb3, 0xe1, 0x93, 0xbc, 0x0b, 0x1f, 0x37,
    -	0xaf, 0x1e, 0xeb, 0xbf, 0x1b, 0x03, 0x87, 0x62, 0x3b, 0x81, 0xaf, 0x80, 0x12, 0xe3, 0xcd, 0x4a,
    -	0x9b, 0xec, 0xe0, 0x9e, 0x93, 0x8b, 0xee, 0x03, 0x66, 0xcb, 0x13, 0x21, 0xbf, 0x1e, 0x3c, 0x00,
    -	0x0b, 0x86, 0xde, 0xd9, 0xc6, 0x1a, 0xee, 0x12, 0x46, 0x04, 0xed, 0xa5, 0xe4, 0x57, 0x9f, 0xc5,
    -	0xc6, 0xab, 0xce, 0xb5, 0x56, 0x33, 0xaa, 0xf2, 0x78, 0x54, 0x5d, 0x8e, 0x69, 0xe6, 0x41, 0x10,
    -	0x07, 0x09, 0xcd, 0xc8, 0xa3, 0xbb, 0xfd, 0xe8, 0xb0, 0x96, 0x26, 0x29, 0x8f, 0xf8, 0xec, 0x9e,
    -	0x74, 0xb3, 0x5b, 0x38, 0xd2, 0xcd, 0x6e, 0xcc, 0x11, 0xb7, 0x38, 0xe5, 0x11, 0xf7, 0x63, 0x09,
    -	0x5c, 0x30, 0x52, 0xe4, 0x52, 0x19, 0xf0, 0xb9, 0xb9, 0x95, 0x66, 0x6e, 0xd2, 0xe4, 0x66, 0x63,
    -	0x75, 0x3c, 0xaa, 0x5e, 0x48, 0xa3, 0x89, 0x52, 0xf9, 0x07, 0xef, 0x82, 0x82, 0x2e, 0xf6, 0xc0,
    -	0x72, 0x89, 0xfb, 0x7a, 0x39, 0x8d, 0xaf, 0xce, 0xbe, 0x69, 0xa7, 0xa5, 0xf3, 0x85, 0x5c, 0x2c,
    -	0xf9, 0xc3, 0x3c, 0x38, 0x13, 0xa9, 0xe0, 0x5f, 0xe2, 0xfd, 0x75, 0xe4, 0x30, 0x9d, 0x9d, 0xe2,
    -	0x30, 0xbd, 0x0e, 0xe6, 0xc5, 0x5f, 0x22, 0x42, 0x67, 0x71, 0x37, 0x60, 0x36, 0x82, 0x62, 0x14,
    -	0xd6, 0x8f, 0xbb, 0x3f, 0xcf, 0x4f, 0x79, 0x7f, 0xee, 0xf7, 0x42, 0xfc, 0xc5, 0xcf, 0x4e, 0xef,
    -	0xa8, 0x17, 0xe2, 0x9f, 0x7e, 0x61, 0x7d, 0x46, 0x5c, 0x6d, 0x54, 0x17, 0xe1, 0x64, 0x90, 0xb8,
    -	0xee, 0x05, 0xa4, 0x28, 0xa4, 0xfd, 0x85, 0x9e, 0xfd, 0x71, 0xcc, 0xb3, 0xff, 0x95, 0x34, 0xb1,
    -	0x96, 0xfe, 0xaa, 0x3c, 0xf6, 0xd2, 0xa3, 0x34, 0xfd, 0xa5, 0x87, 0xfc, 0x77, 0x09, 0x3c, 0x97,
    -	0xb8, 0x6b, 0xc1, 0xf5, 0x00, 0xad, 0xbc, 0x12, 0xa2, 0x95, 0xdf, 0x4b, 0x34, 0xf4, 0x71, 0x4b,
    -	0x33, 0xfe, 0x16, 0xfd, 0xf5, 0x74, 0xb7, 0xe8, 0x31, 0x27, 0xe1, 0xc9, 0xd7, 0xe9, 0x8d, 0x1f,
    -	0x3c, 0x7c, 0x54, 0x39, 0xf1, 0xc9, 0xa3, 0xca, 0x89, 0xcf, 0x1e, 0x55, 0x4e, 0xfc, 0x72, 0x5c,
    -	0x91, 0x1e, 0x8e, 0x2b, 0xd2, 0x27, 0xe3, 0x8a, 0xf4, 0xd9, 0xb8, 0x22, 0xfd, 0x63, 0x5c, 0x91,
    -	0x7e, 0xfb, 0x79, 0xe5, 0xc4, 0x7b, 0xcb, 0x09, 0x7f, 0x3a, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0xff,
    -	0xff, 0xd1, 0xcb, 0x7d, 0xc7, 0xa7, 0x2c, 0x00, 0x00,
    +	0x15, 0xf7, 0xf2, 0x43, 0x26, 0x87, 0x96, 0x64, 0x8f, 0x54, 0x89, 0xb1, 0x5b, 0xd2, 0x58, 0x1b,
    +	0xb6, 0x12, 0xdb, 0xa4, 0xad, 0x7c, 0x20, 0xb1, 0xdb, 0x04, 0xa2, 0x94, 0xda, 0x0e, 0xf4, 0xc1,
    +	0x0c, 0x2d, 0x07, 0x0d, 0xfa, 0xe1, 0x11, 0x39, 0xa6, 0x36, 0xde, 0x2f, 0xec, 0x0e, 0x15, 0x13,
    +	0xbd, 0xf4, 0x5a, 0xa0, 0x40, 0xdb, 0x6b, 0xff, 0x89, 0xa2, 0x97, 0xa2, 0x68, 0xd0, 0x4b, 0x11,
    +	0x04, 0x3e, 0x06, 0xbd, 0x24, 0x27, 0xa2, 0x66, 0x4e, 0x45, 0xd1, 0x5b, 0x7b, 0x31, 0x50, 0xa0,
    +	0x98, 0xd9, 0xd9, 0xef, 0x5d, 0x73, 0xa9, 0xd8, 0x4a, 0x13, 0xe4, 0xc6, 0x9d, 0xf7, 0xde, 0x6f,
    +	0xde, 0xcc, 0xbc, 0x37, 0xef, 0x37, 0x33, 0x04, 0x17, 0x1f, 0xbc, 0x6e, 0x37, 0x14, 0xa3, 0x89,
    +	0x4d, 0xa5, 0x89, 0x4d, 0xd3, 0x6e, 0x1e, 0x5c, 0xdb, 0x23, 0x14, 0xaf, 0x36, 0xfb, 0x44, 0x27,
    +	0x16, 0xa6, 0xa4, 0xd7, 0x30, 0x2d, 0x83, 0x1a, 0x70, 0xd9, 0x51, 0x6c, 0x60, 0x53, 0x69, 0x30,
    +	0xc5, 0x86, 0x50, 0x3c, 0x7d, 0xa5, 0xaf, 0xd0, 0xfd, 0xc1, 0x5e, 0xa3, 0x6b, 0x68, 0xcd, 0xbe,
    +	0xd1, 0x37, 0x9a, 0x5c, 0x7f, 0x6f, 0x70, 0x9f, 0x7f, 0xf1, 0x0f, 0xfe, 0xcb, 0xc1, 0x39, 0x2d,
    +	0x07, 0x3a, 0xec, 0x1a, 0x16, 0x69, 0x1e, 0x5c, 0x8b, 0xf6, 0x75, 0xfa, 0x15, 0x5f, 0x47, 0xc3,
    +	0xdd, 0x7d, 0x45, 0x27, 0xd6, 0xb0, 0x69, 0x3e, 0xe8, 0xb3, 0x06, 0xbb, 0xa9, 0x11, 0x8a, 0x93,
    +	0xac, 0x9a, 0x69, 0x56, 0xd6, 0x40, 0xa7, 0x8a, 0x46, 0x62, 0x06, 0xaf, 0x4d, 0x32, 0xb0, 0xbb,
    +	0xfb, 0x44, 0xc3, 0x31, 0xbb, 0x97, 0xd3, 0xec, 0x06, 0x54, 0x51, 0x9b, 0x8a, 0x4e, 0x6d, 0x6a,
    +	0x45, 0x8d, 0xe4, 0xff, 0x48, 0x00, 0xae, 0x1b, 0x3a, 0xb5, 0x0c, 0x55, 0x25, 0x16, 0x22, 0x07,
    +	0x8a, 0xad, 0x18, 0x3a, 0xbc, 0x07, 0x4a, 0x6c, 0x3c, 0x3d, 0x4c, 0x71, 0x55, 0x3a, 0x2b, 0xad,
    +	0x54, 0x56, 0xaf, 0x36, 0xfc, 0x99, 0xf6, 0xe0, 0x1b, 0xe6, 0x83, 0x3e, 0x6b, 0xb0, 0x1b, 0x4c,
    +	0xbb, 0x71, 0x70, 0xad, 0xb1, 0xb3, 0xf7, 0x01, 0xe9, 0xd2, 0x2d, 0x42, 0x71, 0x0b, 0x3e, 0x1a,
    +	0xd5, 0x8f, 0x8d, 0x47, 0x75, 0xe0, 0xb7, 0x21, 0x0f, 0x15, 0xee, 0x80, 0x02, 0x47, 0xcf, 0x71,
    +	0xf4, 0x2b, 0xa9, 0xe8, 0x62, 0xd0, 0x0d, 0x84, 0x3f, 0x7c, 0xfb, 0x21, 0x25, 0x3a, 0x73, 0xaf,
    +	0x75, 0x42, 0x40, 0x17, 0x36, 0x30, 0xc5, 0x88, 0x03, 0xc1, 0xcb, 0xa0, 0x64, 0x09, 0xf7, 0xab,
    +	0xf9, 0xb3, 0xd2, 0x4a, 0xbe, 0x75, 0x52, 0x68, 0x95, 0xdc, 0x61, 0x21, 0x4f, 0x43, 0x7e, 0x24,
    +	0x81, 0xa5, 0xf8, 0xb8, 0x37, 0x15, 0x9b, 0xc2, 0x1f, 0xc7, 0xc6, 0xde, 0xc8, 0x36, 0x76, 0x66,
    +	0xcd, 0x47, 0xee, 0x75, 0xec, 0xb6, 0x04, 0xc6, 0xdd, 0x06, 0x45, 0x85, 0x12, 0xcd, 0xae, 0xe6,
    +	0xce, 0xe6, 0x57, 0x2a, 0xab, 0x97, 0x1a, 0x29, 0x01, 0xdc, 0x88, 0x7b, 0xd7, 0x9a, 0x15, 0xb8,
    +	0xc5, 0xdb, 0x0c, 0x01, 0x39, 0x40, 0xf2, 0x2f, 0x73, 0xa0, 0xbc, 0x81, 0x89, 0x66, 0xe8, 0x1d,
    +	0x42, 0x8f, 0x60, 0xe5, 0x6e, 0x81, 0x82, 0x6d, 0x92, 0xae, 0x58, 0xb9, 0x0b, 0xa9, 0x03, 0xf0,
    +	0x7c, 0xea, 0x98, 0xa4, 0xeb, 0x2f, 0x19, 0xfb, 0x42, 0x1c, 0x01, 0xb6, 0xc1, 0x8c, 0x4d, 0x31,
    +	0x1d, 0xd8, 0x7c, 0xc1, 0x2a, 0xab, 0x2b, 0x19, 0xb0, 0xb8, 0x7e, 0x6b, 0x4e, 0xa0, 0xcd, 0x38,
    +	0xdf, 0x48, 0xe0, 0xc8, 0xff, 0xc8, 0x01, 0xe8, 0xe9, 0xae, 0x1b, 0x7a, 0x4f, 0xa1, 0x2c, 0x9c,
    +	0xaf, 0x83, 0x02, 0x1d, 0x9a, 0x84, 0x4f, 0x48, 0xb9, 0x75, 0xc1, 0x75, 0xe5, 0xce, 0xd0, 0x24,
    +	0x4f, 0x46, 0xf5, 0xa5, 0xb8, 0x05, 0x93, 0x20, 0x6e, 0x03, 0x37, 0x3d, 0x27, 0x73, 0xdc, 0xfa,
    +	0x95, 0x70, 0xd7, 0x4f, 0x46, 0xf5, 0x84, 0xbd, 0xa3, 0xe1, 0x21, 0x85, 0x1d, 0x84, 0x07, 0x00,
    +	0xaa, 0xd8, 0xa6, 0x77, 0x2c, 0xac, 0xdb, 0x4e, 0x4f, 0x8a, 0x46, 0xc4, 0xf0, 0x5f, 0xca, 0xb6,
    +	0x50, 0xcc, 0xa2, 0x75, 0x5a, 0x78, 0x01, 0x37, 0x63, 0x68, 0x28, 0xa1, 0x07, 0x78, 0x01, 0xcc,
    +	0x58, 0x04, 0xdb, 0x86, 0x5e, 0x2d, 0xf0, 0x51, 0x78, 0x13, 0x88, 0x78, 0x2b, 0x12, 0x52, 0xf8,
    +	0x22, 0x38, 0xae, 0x11, 0xdb, 0xc6, 0x7d, 0x52, 0x2d, 0x72, 0xc5, 0x79, 0xa1, 0x78, 0x7c, 0xcb,
    +	0x69, 0x46, 0xae, 0x5c, 0xfe, 0xa3, 0x04, 0x66, 0xbd, 0x99, 0x3b, 0x82, 0xcc, 0xb9, 0x19, 0xce,
    +	0x1c, 0x79, 0x72, 0xb0, 0xa4, 0x24, 0xcc, 0xc7, 0xf9, 0x80, 0xe3, 0x2c, 0x1c, 0xe1, 0x4f, 0x40,
    +	0xc9, 0x26, 0x2a, 0xe9, 0x52, 0xc3, 0x12, 0x8e, 0xbf, 0x9c, 0xd1, 0x71, 0xbc, 0x47, 0xd4, 0x8e,
    +	0x30, 0x6d, 0x9d, 0x60, 0x9e, 0xbb, 0x5f, 0xc8, 0x83, 0x84, 0xef, 0x82, 0x12, 0x25, 0x9a, 0xa9,
    +	0x62, 0x4a, 0x44, 0xd6, 0x9c, 0x0b, 0x3a, 0xcf, 0x62, 0x86, 0x81, 0xb5, 0x8d, 0xde, 0x1d, 0xa1,
    +	0xc6, 0x53, 0xc6, 0x9b, 0x0c, 0xb7, 0x15, 0x79, 0x30, 0xd0, 0x04, 0x73, 0x03, 0xb3, 0xc7, 0x34,
    +	0x29, 0xdb, 0xce, 0xfb, 0x43, 0x11, 0x43, 0x57, 0x27, 0xcf, 0xca, 0x6e, 0xc8, 0xae, 0xb5, 0x24,
    +	0x7a, 0x99, 0x0b, 0xb7, 0xa3, 0x08, 0x3e, 0x5c, 0x03, 0xf3, 0x9a, 0xa2, 0x23, 0x82, 0x7b, 0xc3,
    +	0x0e, 0xe9, 0x1a, 0x7a, 0xcf, 0xe6, 0xa1, 0x54, 0x6c, 0x2d, 0x0b, 0x80, 0xf9, 0xad, 0xb0, 0x18,
    +	0x45, 0xf5, 0xe1, 0x26, 0x58, 0x74, 0x37, 0xe0, 0x5b, 0x8a, 0x4d, 0x0d, 0x6b, 0xb8, 0xa9, 0x68,
    +	0x0a, 0xad, 0xce, 0x70, 0x9c, 0xea, 0x78, 0x54, 0x5f, 0x44, 0x09, 0x72, 0x94, 0x68, 0x25, 0xff,
    +	0x76, 0x06, 0xcc, 0x47, 0xf6, 0x05, 0x78, 0x17, 0x2c, 0x75, 0x07, 0x96, 0x45, 0x74, 0xba, 0x3d,
    +	0xd0, 0xf6, 0x88, 0xd5, 0xe9, 0xee, 0x93, 0xde, 0x40, 0x25, 0x3d, 0xbe, 0xac, 0xc5, 0x56, 0x4d,
    +	0xf8, 0xba, 0xb4, 0x9e, 0xa8, 0x85, 0x52, 0xac, 0xe1, 0x3b, 0x00, 0xea, 0xbc, 0x69, 0x4b, 0xb1,
    +	0x6d, 0x0f, 0x33, 0xc7, 0x31, 0xbd, 0x54, 0xdc, 0x8e, 0x69, 0xa0, 0x04, 0x2b, 0xe6, 0x63, 0x8f,
    +	0xd8, 0x8a, 0x45, 0x7a, 0x51, 0x1f, 0xf3, 0x61, 0x1f, 0x37, 0x12, 0xb5, 0x50, 0x8a, 0x35, 0x7c,
    +	0x15, 0x54, 0x9c, 0xde, 0xf8, 0x9c, 0x8b, 0xc5, 0x59, 0x10, 0x60, 0x95, 0x6d, 0x5f, 0x84, 0x82,
    +	0x7a, 0x6c, 0x68, 0xc6, 0x9e, 0x4d, 0xac, 0x03, 0xd2, 0xbb, 0xe9, 0x90, 0x03, 0x56, 0x41, 0x8b,
    +	0xbc, 0x82, 0x7a, 0x43, 0xdb, 0x89, 0x69, 0xa0, 0x04, 0x2b, 0x36, 0x34, 0x27, 0x6a, 0x62, 0x43,
    +	0x9b, 0x09, 0x0f, 0x6d, 0x37, 0x51, 0x0b, 0xa5, 0x58, 0xb3, 0xd8, 0x73, 0x5c, 0x5e, 0x3b, 0xc0,
    +	0x8a, 0x8a, 0xf7, 0x54, 0x52, 0x3d, 0x1e, 0x8e, 0xbd, 0xed, 0xb0, 0x18, 0x45, 0xf5, 0xe1, 0x4d,
    +	0x70, 0xca, 0x69, 0xda, 0xd5, 0xb1, 0x07, 0x52, 0xe2, 0x20, 0x2f, 0x08, 0x90, 0x53, 0xdb, 0x51,
    +	0x05, 0x14, 0xb7, 0x81, 0xd7, 0xc1, 0x5c, 0xd7, 0x50, 0x55, 0x1e, 0x8f, 0xeb, 0xc6, 0x40, 0xa7,
    +	0xd5, 0x32, 0x47, 0x81, 0x2c, 0x87, 0xd6, 0x43, 0x12, 0x14, 0xd1, 0x84, 0x3f, 0x03, 0xa0, 0xeb,
    +	0x16, 0x06, 0xbb, 0x0a, 0x26, 0x30, 0x80, 0x78, 0x59, 0xf2, 0x2b, 0xb3, 0xd7, 0x64, 0xa3, 0x00,
    +	0xa4, 0xfc, 0xb1, 0x04, 0x96, 0x53, 0x12, 0x1d, 0xbe, 0x15, 0x2a, 0x82, 0x97, 0x22, 0x45, 0xf0,
    +	0x4c, 0x8a, 0x59, 0xa0, 0x12, 0xee, 0x83, 0x59, 0x46, 0x48, 0x14, 0xbd, 0xef, 0xa8, 0x88, 0xbd,
    +	0xac, 0x99, 0x3a, 0x00, 0x14, 0xd4, 0xf6, 0x77, 0xe5, 0x53, 0xe3, 0x51, 0x7d, 0x36, 0x24, 0x43,
    +	0x61, 0x60, 0xf9, 0x57, 0x39, 0x00, 0x36, 0x88, 0xa9, 0x1a, 0x43, 0x8d, 0xe8, 0x47, 0xc1, 0x69,
    +	0x6e, 0x87, 0x38, 0xcd, 0xc5, 0xf4, 0x25, 0xf1, 0x9c, 0x4a, 0x25, 0x35, 0xef, 0x46, 0x48, 0xcd,
    +	0x8b, 0x59, 0xc0, 0x9e, 0xce, 0x6a, 0x3e, 0xcb, 0x83, 0x05, 0x5f, 0xd9, 0xa7, 0x35, 0x37, 0x42,
    +	0x2b, 0x7a, 0x31, 0xb2, 0xa2, 0xcb, 0x09, 0x26, 0xcf, 0x8d, 0xd7, 0x7c, 0x00, 0xe6, 0x18, 0xeb,
    +	0x70, 0xd6, 0x8f, 0x73, 0x9a, 0x99, 0xa9, 0x39, 0x8d, 0x57, 0x89, 0x36, 0x43, 0x48, 0x28, 0x82,
    +	0x9c, 0xc2, 0xa1, 0x8e, 0x7f, 0x1d, 0x39, 0xd4, 0x9f, 0x24, 0x30, 0xe7, 0x2f, 0xd3, 0x11, 0x90,
    +	0xa8, 0x5b, 0x61, 0x12, 0x75, 0x2e, 0x43, 0x70, 0xa6, 0xb0, 0xa8, 0xcf, 0x0a, 0x41, 0xd7, 0x39,
    +	0x8d, 0x5a, 0x61, 0x47, 0x30, 0x53, 0x55, 0xba, 0xd8, 0x16, 0xf5, 0xf6, 0x84, 0x73, 0xfc, 0x72,
    +	0xda, 0x90, 0x27, 0x0d, 0x11, 0xae, 0xdc, 0xf3, 0x25, 0x5c, 0xf9, 0x67, 0x43, 0xb8, 0x7e, 0x04,
    +	0x4a, 0xb6, 0x4b, 0xb5, 0x0a, 0x1c, 0xf2, 0x52, 0xa6, 0xc4, 0x16, 0x2c, 0xcb, 0x83, 0xf6, 0xf8,
    +	0x95, 0x07, 0x97, 0xc4, 0xac, 0x8a, 0x5f, 0x25, 0xb3, 0x62, 0x81, 0x6e, 0xe2, 0x81, 0x4d, 0x7a,
    +	0x3c, 0xa9, 0x4a, 0x7e, 0xa0, 0xb7, 0x79, 0x2b, 0x12, 0x52, 0xb8, 0x0b, 0x96, 0x4d, 0xcb, 0xe8,
    +	0x5b, 0xc4, 0xb6, 0x37, 0x08, 0xee, 0xa9, 0x8a, 0x4e, 0xdc, 0x01, 0x38, 0x35, 0xf1, 0xcc, 0x78,
    +	0x54, 0x5f, 0x6e, 0x27, 0xab, 0xa0, 0x34, 0x5b, 0xf9, 0xaf, 0x05, 0x70, 0x32, 0xba, 0x37, 0xa6,
    +	0xd0, 0x14, 0xe9, 0x50, 0x34, 0xe5, 0x72, 0x20, 0x4e, 0x1d, 0x0e, 0x17, 0xb8, 0x2a, 0x88, 0xc5,
    +	0xea, 0x1a, 0x98, 0x17, 0xb4, 0xc4, 0x15, 0x0a, 0xa2, 0xe6, 0x2d, 0xcf, 0x6e, 0x58, 0x8c, 0xa2,
    +	0xfa, 0xf0, 0x06, 0x98, 0xb5, 0x38, 0xf3, 0x72, 0x01, 0x1c, 0xf6, 0xf2, 0x1d, 0x01, 0x30, 0x8b,
    +	0x82, 0x42, 0x14, 0xd6, 0x65, 0xcc, 0xc5, 0x27, 0x24, 0x2e, 0x40, 0x21, 0xcc, 0x5c, 0xd6, 0xa2,
    +	0x0a, 0x28, 0x6e, 0x03, 0xb7, 0xc0, 0xc2, 0x40, 0x8f, 0x43, 0x39, 0xb1, 0x76, 0x46, 0x40, 0x2d,
    +	0xec, 0xc6, 0x55, 0x50, 0x92, 0x1d, 0xbc, 0x17, 0x22, 0x33, 0x33, 0x7c, 0x3f, 0xb9, 0x9c, 0x21,
    +	0x27, 0x32, 0xb3, 0x99, 0x04, 0xaa, 0x55, 0xca, 0x4a, 0xb5, 0xe4, 0x8f, 0x24, 0x00, 0xe3, 0x79,
    +	0x38, 0xf1, 0x26, 0x20, 0x66, 0x11, 0xa8, 0x98, 0x4a, 0x32, 0xff, 0xb9, 0x9a, 0x91, 0xff, 0xf8,
    +	0x1b, 0x6a, 0x36, 0x02, 0x24, 0x26, 0xfa, 0x68, 0x2e, 0x75, 0xb2, 0x12, 0x20, 0xdf, 0xa9, 0x67,
    +	0x40, 0x80, 0x02, 0x60, 0x4f, 0x27, 0x40, 0xff, 0xcc, 0x81, 0x05, 0x5f, 0x39, 0x33, 0x01, 0x4a,
    +	0x30, 0xf9, 0xf6, 0x62, 0x27, 0x1b, 0x29, 0xf1, 0xa7, 0xee, 0xff, 0x89, 0x94, 0xf8, 0x5e, 0xa5,
    +	0x90, 0x92, 0xdf, 0xe7, 0x82, 0xae, 0x4f, 0x49, 0x4a, 0x9e, 0xc1, 0x0d, 0xc7, 0xd7, 0x8e, 0xd7,
    +	0xc8, 0x9f, 0xe4, 0xc1, 0xc9, 0x68, 0x1e, 0x86, 0x0a, 0xa4, 0x34, 0xb1, 0x40, 0xb6, 0xc1, 0xe2,
    +	0xfd, 0x81, 0xaa, 0x0e, 0xf9, 0x18, 0x02, 0x55, 0xd2, 0x29, 0xad, 0xdf, 0x15, 0x96, 0x8b, 0x3f,
    +	0x4c, 0xd0, 0x41, 0x89, 0x96, 0xf1, 0x7a, 0x59, 0xf8, 0xb2, 0xf5, 0xb2, 0x78, 0x88, 0x7a, 0x99,
    +	0x4c, 0x39, 0xf2, 0x87, 0xa2, 0x1c, 0xd3, 0x15, 0xcb, 0x84, 0x8d, 0x6b, 0xe2, 0xd1, 0x7f, 0x2c,
    +	0x81, 0xa5, 0xe4, 0x03, 0x37, 0x54, 0xc1, 0x9c, 0x86, 0x1f, 0x06, 0x2f, 0x3e, 0x26, 0x15, 0x91,
    +	0x01, 0x55, 0xd4, 0x86, 0xf3, 0x64, 0xd4, 0xb8, 0xad, 0xd3, 0x1d, 0xab, 0x43, 0x2d, 0x45, 0xef,
    +	0x3b, 0x95, 0x77, 0x2b, 0x84, 0x85, 0x22, 0xd8, 0xf0, 0x7d, 0x50, 0xd2, 0xf0, 0xc3, 0xce, 0xc0,
    +	0xea, 0x27, 0x55, 0xc8, 0x6c, 0xfd, 0xf0, 0x04, 0xd8, 0x12, 0x28, 0xc8, 0xc3, 0x93, 0xbf, 0x90,
    +	0xc0, 0x72, 0x4a, 0x55, 0xfd, 0x06, 0x8d, 0xf2, 0x2f, 0x12, 0x38, 0x1b, 0x1a, 0x25, 0x4b, 0x4b,
    +	0x72, 0x7f, 0xa0, 0xf2, 0x0c, 0x15, 0x4c, 0xe6, 0x12, 0x28, 0x9b, 0xd8, 0xa2, 0x8a, 0xc7, 0x83,
    +	0x8b, 0xad, 0xd9, 0xf1, 0xa8, 0x5e, 0x6e, 0xbb, 0x8d, 0xc8, 0x97, 0x27, 0xcc, 0x4d, 0xee, 0xf9,
    +	0xcd, 0x8d, 0xfc, 0x5f, 0x09, 0x14, 0x3b, 0x5d, 0xac, 0x92, 0x23, 0x20, 0x2e, 0x1b, 0x21, 0xe2,
    +	0x92, 0xfe, 0x28, 0xc0, 0xfd, 0x49, 0xe5, 0x2c, 0x9b, 0x11, 0xce, 0x72, 0x7e, 0x02, 0xce, 0xd3,
    +	0xe9, 0xca, 0x1b, 0xa0, 0xec, 0x75, 0x37, 0xdd, 0x5e, 0x2a, 0xff, 0x2e, 0x07, 0x2a, 0x81, 0x2e,
    +	0xa6, 0xdc, 0x89, 0xef, 0x85, 0xca, 0x0f, 0xdb, 0x63, 0x56, 0xb3, 0x0c, 0xa4, 0xe1, 0x96, 0x9a,
    +	0xb7, 0x75, 0x6a, 0x05, 0xcf, 0xaa, 0xf1, 0x0a, 0xf4, 0x26, 0x98, 0xa3, 0xd8, 0xea, 0x13, 0xea,
    +	0xca, 0xf8, 0x84, 0x95, 0xfd, 0xbb, 0x9b, 0x3b, 0x21, 0x29, 0x8a, 0x68, 0x9f, 0xbe, 0x01, 0x66,
    +	0x43, 0x9d, 0xc1, 0x93, 0x20, 0xff, 0x80, 0x0c, 0x1d, 0x06, 0x87, 0xd8, 0x4f, 0xb8, 0x08, 0x8a,
    +	0x07, 0x58, 0x1d, 0x38, 0x21, 0x5a, 0x46, 0xce, 0xc7, 0xf5, 0xdc, 0xeb, 0x92, 0xfc, 0x6b, 0x36,
    +	0x39, 0x7e, 0x2a, 0x1c, 0x41, 0x74, 0xbd, 0x13, 0x8a, 0xae, 0xf4, 0xf7, 0xc9, 0x60, 0x82, 0xa6,
    +	0xc5, 0x18, 0x8a, 0xc4, 0xd8, 0x4b, 0x99, 0xd0, 0x9e, 0x1e, 0x69, 0xff, 0xca, 0x81, 0xc5, 0x80,
    +	0xb6, 0xcf, 0x8c, 0xbf, 0x1f, 0x62, 0xc6, 0x2b, 0x11, 0x66, 0x5c, 0x4d, 0xb2, 0xf9, 0x96, 0x1a,
    +	0x4f, 0xa6, 0xc6, 0x7f, 0x96, 0xc0, 0x7c, 0x60, 0xee, 0x8e, 0x80, 0x1b, 0xdf, 0x0e, 0x73, 0xe3,
    +	0xf3, 0x59, 0x82, 0x26, 0x85, 0x1c, 0x5f, 0x07, 0x0b, 0x01, 0xa5, 0x1d, 0xab, 0xa7, 0xe8, 0x58,
    +	0xb5, 0xe1, 0x39, 0x50, 0xb4, 0x29, 0xb6, 0xa8, 0x5b, 0x44, 0x5c, 0xdb, 0x0e, 0x6b, 0x44, 0x8e,
    +	0x4c, 0xfe, 0xb7, 0x04, 0x9a, 0x01, 0xe3, 0x36, 0xb1, 0x6c, 0xc5, 0xa6, 0x44, 0xa7, 0x77, 0x0d,
    +	0x75, 0xa0, 0x91, 0x75, 0x15, 0x2b, 0x1a, 0x22, 0xac, 0x41, 0x31, 0xf4, 0xb6, 0xa1, 0x2a, 0xdd,
    +	0x21, 0xc4, 0xa0, 0xf2, 0xe1, 0x3e, 0xd1, 0x37, 0x88, 0x4a, 0xa8, 0x78, 0x81, 0x2b, 0xb7, 0xde,
    +	0x72, 0x1f, 0xa4, 0xde, 0xf3, 0x45, 0x4f, 0x46, 0xf5, 0x95, 0x2c, 0x88, 0x3c, 0x42, 0x83, 0x98,
    +	0xf0, 0xa7, 0x00, 0xb0, 0x4f, 0xbe, 0x97, 0xf5, 0x44, 0xb0, 0xbe, 0xe9, 0x66, 0xf4, 0x7b, 0x9e,
    +	0x64, 0xaa, 0x0e, 0x02, 0x88, 0xf2, 0x1f, 0x4a, 0xa1, 0xf5, 0xfe, 0xc6, 0xdf, 0x72, 0xfe, 0x1c,
    +	0x2c, 0x1e, 0xf8, 0xb3, 0xe3, 0x2a, 0x30, 0xfe, 0x9d, 0x8f, 0x9e, 0xe4, 0x3d, 0xf8, 0xa4, 0x79,
    +	0xf5, 0x59, 0xff, 0xdd, 0x04, 0x38, 0x94, 0xd8, 0x09, 0x7c, 0x15, 0x54, 0x18, 0x6f, 0x56, 0xba,
    +	0x64, 0x1b, 0x6b, 0x6e, 0x2e, 0x7a, 0x0f, 0x98, 0x1d, 0x5f, 0x84, 0x82, 0x7a, 0x70, 0x1f, 0x2c,
    +	0x98, 0x46, 0x6f, 0x0b, 0xeb, 0xb8, 0x4f, 0x18, 0x11, 0x74, 0x96, 0x92, 0x5f, 0x7d, 0x96, 0x5b,
    +	0xaf, 0xb9, 0xd7, 0x5a, 0xed, 0xb8, 0xca, 0x93, 0x51, 0x7d, 0x39, 0xa1, 0x99, 0x07, 0x41, 0x12,
    +	0x24, 0xb4, 0x62, 0x8f, 0xee, 0xce, 0xa3, 0xc3, 0x6a, 0x96, 0xa4, 0x3c, 0xe4, 0xb3, 0x7b, 0xda,
    +	0xcd, 0x6e, 0xe9, 0x50, 0x37, 0xbb, 0x09, 0x47, 0xdc, 0xf2, 0x94, 0x47, 0xdc, 0x4f, 0x24, 0x70,
    +	0xde, 0xcc, 0x90, 0x4b, 0x55, 0xc0, 0xe7, 0xe6, 0x56, 0x96, 0xb9, 0xc9, 0x92, 0x9b, 0xad, 0x95,
    +	0xf1, 0xa8, 0x7e, 0x3e, 0x8b, 0x26, 0xca, 0xe4, 0x1f, 0xbc, 0x0b, 0x4a, 0x86, 0xd8, 0x03, 0xab,
    +	0x15, 0xee, 0xeb, 0xe5, 0x2c, 0xbe, 0xba, 0xfb, 0xa6, 0x93, 0x96, 0xee, 0x17, 0xf2, 0xb0, 0xe4,
    +	0x8f, 0x8a, 0xe0, 0x54, 0xac, 0x82, 0x7f, 0x85, 0xf7, 0xd7, 0xb1, 0xc3, 0x74, 0x7e, 0x8a, 0xc3,
    +	0xf4, 0x1a, 0x98, 0x17, 0x7f, 0x89, 0x88, 0x9c, 0xc5, 0xbd, 0x80, 0x59, 0x0f, 0x8b, 0x51, 0x54,
    +	0x3f, 0xe9, 0xfe, 0xbc, 0x38, 0xe5, 0xfd, 0x79, 0xd0, 0x0b, 0xf1, 0x17, 0x3f, 0x27, 0xbd, 0xe3,
    +	0x5e, 0x88, 0x7f, 0xfa, 0x45, 0xf5, 0x19, 0x71, 0x75, 0x50, 0x3d, 0x84, 0xe3, 0x61, 0xe2, 0xba,
    +	0x1b, 0x92, 0xa2, 0x88, 0xf6, 0x97, 0x7a, 0xf6, 0xc7, 0x09, 0xcf, 0xfe, 0x57, 0xb2, 0xc4, 0x5a,
    +	0xf6, 0xab, 0xf2, 0xc4, 0x4b, 0x8f, 0xca, 0xf4, 0x97, 0x1e, 0xf2, 0xdf, 0x24, 0xf0, 0x42, 0xea,
    +	0xae, 0x05, 0xd7, 0x42, 0xb4, 0xf2, 0x4a, 0x84, 0x56, 0x7e, 0x2f, 0xd5, 0x30, 0xc0, 0x2d, 0xad,
    +	0xe4, 0x5b, 0xf4, 0x37, 0xb2, 0xdd, 0xa2, 0x27, 0x9c, 0x84, 0x27, 0x5f, 0xa7, 0xb7, 0x7e, 0xf0,
    +	0xe8, 0x71, 0xed, 0xd8, 0xa7, 0x8f, 0x6b, 0xc7, 0x3e, 0x7f, 0x5c, 0x3b, 0xf6, 0x8b, 0x71, 0x4d,
    +	0x7a, 0x34, 0xae, 0x49, 0x9f, 0x8e, 0x6b, 0xd2, 0xe7, 0xe3, 0x9a, 0xf4, 0xf7, 0x71, 0x4d, 0xfa,
    +	0xcd, 0x17, 0xb5, 0x63, 0xef, 0x2f, 0xa7, 0xfc, 0xe9, 0xf8, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff,
    +	0xa4, 0x79, 0xcd, 0x52, 0x8e, 0x2c, 0x00, 0x00,
     }
     
     func (m *ControllerRevision) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/apps/v1beta2/generated.proto b/vendor/k8s.io/api/apps/v1beta2/generated.proto
    index ddbe3544114f..c08a4c78bc9a 100644
    --- a/vendor/k8s.io/api/apps/v1beta2/generated.proto
    +++ b/vendor/k8s.io/api/apps/v1beta2/generated.proto
    @@ -45,10 +45,10 @@ message ControllerRevision {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Data is the serialized representation of the state.
    -  optional k8s.io.apimachinery.pkg.runtime.RawExtension data = 2;
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension data = 2;
     
       // Revision indicates the revision of the state represented by Data.
       optional int64 revision = 3;
    @@ -58,7 +58,7 @@ message ControllerRevision {
     message ControllerRevisionList {
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of ControllerRevisions
       repeated ControllerRevision items = 2;
    @@ -71,7 +71,7 @@ message DaemonSet {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // The desired behavior of this daemon set.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -97,7 +97,7 @@ message DaemonSetCondition {
     
       // Last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // The reason for the condition's last transition.
       // +optional
    @@ -113,7 +113,7 @@ message DaemonSetList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // A list of daemon sets.
       repeated DaemonSet items = 2;
    @@ -125,7 +125,7 @@ message DaemonSetSpec {
       // Must match in order to be controlled.
       // It must match the pod template's labels.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1;
     
       // An object that describes the pod that will be created.
       // The DaemonSet will create exactly one copy of this pod on every node
    @@ -133,7 +133,7 @@ message DaemonSetSpec {
       // selector is specified).
       // The only allowed template.spec.restartPolicy value is "Always".
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 2;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;
     
       // An update strategy to replace existing DaemonSet pods with new pods.
       // +optional
    @@ -204,6 +204,8 @@ message DaemonSetStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated DaemonSetCondition conditions = 10;
     }
     
    @@ -228,7 +230,7 @@ message DaemonSetUpdateStrategy {
     message Deployment {
       // Standard object metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the Deployment.
       // +optional
    @@ -248,10 +250,10 @@ message DeploymentCondition {
       optional string status = 2;
     
       // The last time this condition was updated.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6;
     
       // Last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7;
     
       // The reason for the condition's last transition.
       optional string reason = 4;
    @@ -264,7 +266,7 @@ message DeploymentCondition {
     message DeploymentList {
       // Standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of Deployments.
       repeated Deployment items = 2;
    @@ -280,11 +282,11 @@ message DeploymentSpec {
       // Label selector for pods. Existing ReplicaSets whose pods are
       // selected by this will be the ones affected by this deployment.
       // It must match the pod template's labels.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // Template describes the pods that will be created.
       // The only allowed template.spec.restartPolicy value is "Always".
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 3;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;
     
       // The deployment strategy to use to replace existing pods with new ones.
       // +optional
    @@ -346,6 +348,8 @@ message DeploymentStatus {
       // Represents the latest available observations of a deployment's current state.
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated DeploymentCondition conditions = 6;
     
       // Count of hash collisions for the Deployment. The Deployment controller uses this
    @@ -378,7 +382,7 @@ message ReplicaSet {
       // be the same as the Pod(s) that the ReplicaSet manages.
       // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the specification of the desired behavior of the ReplicaSet.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -404,7 +408,7 @@ message ReplicaSetCondition {
     
       // The last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // The reason for the condition's last transition.
       // +optional
    @@ -420,7 +424,7 @@ message ReplicaSetList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of ReplicaSets.
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
    @@ -446,13 +450,13 @@ message ReplicaSetSpec {
       // Label keys and values that must match in order to be controlled by this replica set.
       // It must match the pod template's labels.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // Template is the object that describes the pod that will be created if
       // insufficient replicas are detected.
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       // +optional
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 3;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;
     }
     
     // ReplicaSetStatus represents the current status of a ReplicaSet.
    @@ -481,6 +485,8 @@ message ReplicaSetStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated ReplicaSetCondition conditions = 6;
     }
     
    @@ -501,7 +507,7 @@ message RollingUpdateDaemonSet {
       // 70% of original number of DaemonSet pods are available at all times during
       // the update.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
     
       // The maximum number of nodes with an existing available DaemonSet pod that
       // can have an updated DaemonSet pod during during an update.
    @@ -522,7 +528,7 @@ message RollingUpdateDaemonSet {
       // so resource intensive daemonsets should take into account that they may
       // cause evictions during disruption.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
     }
     
     // Spec to control the desired behavior of rolling update.
    @@ -538,7 +544,7 @@ message RollingUpdateDeployment {
       // that the total number of pods available at all times during the update is at
       // least 70% of desired pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
     
       // The maximum number of pods that can be scheduled above the desired number of
       // pods.
    @@ -552,7 +558,7 @@ message RollingUpdateDeployment {
       // new ReplicaSet can be scaled up further, ensuring that total number of pods running
       // at any time during the update is at most 130% of desired pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
     }
     
     // RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.
    @@ -572,14 +578,14 @@ message RollingUpdateStatefulSetStrategy {
       // Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it
       // will be counted towards MaxUnavailable.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 2;
     }
     
     // Scale represents a scaling request for a resource.
     message Scale {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
       // +optional
    @@ -628,7 +634,7 @@ message ScaleStatus {
     // map to the same storage identity.
     message StatefulSet {
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the desired identities of pods in this set.
       // +optional
    @@ -650,7 +656,7 @@ message StatefulSetCondition {
     
       // Last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // The reason for the condition's last transition.
       // +optional
    @@ -664,7 +670,7 @@ message StatefulSetCondition {
     // StatefulSetList is a collection of StatefulSets.
     message StatefulSetList {
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       repeated StatefulSet items = 2;
     }
    @@ -714,7 +720,7 @@ message StatefulSetSpec {
       // selector is a label query over pods that should match the replica count.
       // It must match the pod template's labels.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // template is the object that describes the pod that will be created if
       // insufficient replicas are detected. Each pod stamped out by the StatefulSet
    @@ -723,7 +729,7 @@ message StatefulSetSpec {
       // -. For example, a pod in a StatefulSet named
       // "web" with index number "3" would be named "web-3".
       // The only allowed template.spec.restartPolicy value is "Always".
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 3;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;
     
       // volumeClaimTemplates is a list of claims that pods are allowed to reference.
       // The StatefulSet controller is responsible for mapping network identities to
    @@ -733,7 +739,8 @@ message StatefulSetSpec {
       // any volumes in the template, with the same name.
       // TODO: Define the behavior if a claim already exists with the same name.
       // +optional
    -  repeated k8s.io.api.core.v1.PersistentVolumeClaim volumeClaimTemplates = 4;
    +  // +listType=atomic
    +  repeated .k8s.io.api.core.v1.PersistentVolumeClaim volumeClaimTemplates = 4;
     
       // serviceName is the name of the service that governs this StatefulSet.
       // This service must exist before the StatefulSet, and is responsible for
    @@ -771,16 +778,13 @@ message StatefulSetSpec {
       optional int32 minReadySeconds = 9;
     
       // PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from
    -  // the StatefulSet VolumeClaimTemplates. This requires the
    -  // StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.
    +  // the StatefulSet VolumeClaimTemplates.
       // +optional
       optional StatefulSetPersistentVolumeClaimRetentionPolicy persistentVolumeClaimRetentionPolicy = 10;
     
       // ordinals controls the numbering of replica indices in a StatefulSet. The
       // default ordinals behavior assigns a "0" index to the first replica and
    -  // increments the index by one for each additional replica requested. Using
    -  // the ordinals field requires the StatefulSetStartOrdinal feature gate to be
    -  // enabled, which is beta.
    +  // increments the index by one for each additional replica requested.
       // +optional
       optional StatefulSetOrdinals ordinals = 11;
     }
    @@ -824,6 +828,8 @@ message StatefulSetStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated StatefulSetCondition conditions = 10;
     
       // Total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet.
    diff --git a/vendor/k8s.io/api/apps/v1beta2/types.go b/vendor/k8s.io/api/apps/v1beta2/types.go
    index a97ac6fcf0be..c2624a941dfc 100644
    --- a/vendor/k8s.io/api/apps/v1beta2/types.go
    +++ b/vendor/k8s.io/api/apps/v1beta2/types.go
    @@ -191,11 +191,11 @@ const (
     	// PersistentVolumeClaims associated with StatefulSet VolumeClaimTemplates
     	// will not be deleted.
     	RetainPersistentVolumeClaimRetentionPolicyType PersistentVolumeClaimRetentionPolicyType = "Retain"
    -	// RetentionPersistentVolumeClaimRetentionPolicyType specifies that
    +	// DeletePersistentVolumeClaimRetentionPolicyType specifies that
     	// PersistentVolumeClaims associated with StatefulSet VolumeClaimTemplates
     	// will be deleted in the scenario specified in
     	// StatefulSetPersistentVolumeClaimRetentionPolicy.
    -	RetentionPersistentVolumeClaimRetentionPolicyType PersistentVolumeClaimRetentionPolicyType = "Delete"
    +	DeletePersistentVolumeClaimRetentionPolicyType PersistentVolumeClaimRetentionPolicyType = "Delete"
     )
     
     // StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs
    @@ -261,6 +261,7 @@ type StatefulSetSpec struct {
     	// any volumes in the template, with the same name.
     	// TODO: Define the behavior if a claim already exists with the same name.
     	// +optional
    +	// +listType=atomic
     	VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" protobuf:"bytes,4,rep,name=volumeClaimTemplates"`
     
     	// serviceName is the name of the service that governs this StatefulSet.
    @@ -299,16 +300,13 @@ type StatefulSetSpec struct {
     	MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,9,opt,name=minReadySeconds"`
     
     	// PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from
    -	// the StatefulSet VolumeClaimTemplates. This requires the
    -	// StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.
    +	// the StatefulSet VolumeClaimTemplates.
     	// +optional
     	PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy `json:"persistentVolumeClaimRetentionPolicy,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaimRetentionPolicy"`
     
     	// ordinals controls the numbering of replica indices in a StatefulSet. The
     	// default ordinals behavior assigns a "0" index to the first replica and
    -	// increments the index by one for each additional replica requested. Using
    -	// the ordinals field requires the StatefulSetStartOrdinal feature gate to be
    -	// enabled, which is beta.
    +	// increments the index by one for each additional replica requested.
     	// +optional
     	Ordinals *StatefulSetOrdinals `json:"ordinals,omitempty" protobuf:"bytes,11,opt,name=ordinals"`
     }
    @@ -352,6 +350,8 @@ type StatefulSetStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []StatefulSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"`
     
     	// Total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet.
    @@ -555,6 +555,8 @@ type DeploymentStatus struct {
     	// Represents the latest available observations of a deployment's current state.
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []DeploymentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`
     
     	// Count of hash collisions for the Deployment. The Deployment controller uses this
    @@ -765,6 +767,8 @@ type DaemonSetStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []DaemonSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"`
     }
     
    @@ -951,6 +955,8 @@ type ReplicaSetStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []ReplicaSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`
     }
     
    diff --git a/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go b/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go
    index d7e92099155d..beec4b7555a2 100644
    --- a/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go
    @@ -382,8 +382,8 @@ var map_StatefulSetSpec = map[string]string{
     	"updateStrategy":                       "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.",
     	"revisionHistoryLimit":                 "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.",
     	"minReadySeconds":                      "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)",
    -	"persistentVolumeClaimRetentionPolicy": "PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.",
    -	"ordinals":                             "ordinals controls the numbering of replica indices in a StatefulSet. The default ordinals behavior assigns a \"0\" index to the first replica and increments the index by one for each additional replica requested. Using the ordinals field requires the StatefulSetStartOrdinal feature gate to be enabled, which is beta.",
    +	"persistentVolumeClaimRetentionPolicy": "PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.",
    +	"ordinals":                             "ordinals controls the numbering of replica indices in a StatefulSet. The default ordinals behavior assigns a \"0\" index to the first replica and increments the index by one for each additional replica requested.",
     }
     
     func (StatefulSetSpec) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/authentication/v1/doc.go b/vendor/k8s.io/api/authentication/v1/doc.go
    index 1614265bdfa4..3bdc89badcdd 100644
    --- a/vendor/k8s.io/api/authentication/v1/doc.go
    +++ b/vendor/k8s.io/api/authentication/v1/doc.go
    @@ -18,5 +18,6 @@ limitations under the License.
     // +k8s:protobuf-gen=package
     // +groupName=authentication.k8s.io
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     
     package v1 // import "k8s.io/api/authentication/v1"
    diff --git a/vendor/k8s.io/api/authentication/v1/generated.pb.go b/vendor/k8s.io/api/authentication/v1/generated.pb.go
    index 304bbd0744d8..6d922030c1c3 100644
    --- a/vendor/k8s.io/api/authentication/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/authentication/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1/generated.proto
    +// source: k8s.io/api/authentication/v1/generated.proto
     
     package v1
     
    @@ -49,7 +49,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *BoundObjectReference) Reset()      { *m = BoundObjectReference{} }
     func (*BoundObjectReference) ProtoMessage() {}
     func (*BoundObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{0}
    +	return fileDescriptor_d1237cbf54dccd53, []int{0}
     }
     func (m *BoundObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -77,7 +77,7 @@ var xxx_messageInfo_BoundObjectReference proto.InternalMessageInfo
     func (m *ExtraValue) Reset()      { *m = ExtraValue{} }
     func (*ExtraValue) ProtoMessage() {}
     func (*ExtraValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{1}
    +	return fileDescriptor_d1237cbf54dccd53, []int{1}
     }
     func (m *ExtraValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -105,7 +105,7 @@ var xxx_messageInfo_ExtraValue proto.InternalMessageInfo
     func (m *SelfSubjectReview) Reset()      { *m = SelfSubjectReview{} }
     func (*SelfSubjectReview) ProtoMessage() {}
     func (*SelfSubjectReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{2}
    +	return fileDescriptor_d1237cbf54dccd53, []int{2}
     }
     func (m *SelfSubjectReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -133,7 +133,7 @@ var xxx_messageInfo_SelfSubjectReview proto.InternalMessageInfo
     func (m *SelfSubjectReviewStatus) Reset()      { *m = SelfSubjectReviewStatus{} }
     func (*SelfSubjectReviewStatus) ProtoMessage() {}
     func (*SelfSubjectReviewStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{3}
    +	return fileDescriptor_d1237cbf54dccd53, []int{3}
     }
     func (m *SelfSubjectReviewStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -161,7 +161,7 @@ var xxx_messageInfo_SelfSubjectReviewStatus proto.InternalMessageInfo
     func (m *TokenRequest) Reset()      { *m = TokenRequest{} }
     func (*TokenRequest) ProtoMessage() {}
     func (*TokenRequest) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{4}
    +	return fileDescriptor_d1237cbf54dccd53, []int{4}
     }
     func (m *TokenRequest) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -189,7 +189,7 @@ var xxx_messageInfo_TokenRequest proto.InternalMessageInfo
     func (m *TokenRequestSpec) Reset()      { *m = TokenRequestSpec{} }
     func (*TokenRequestSpec) ProtoMessage() {}
     func (*TokenRequestSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{5}
    +	return fileDescriptor_d1237cbf54dccd53, []int{5}
     }
     func (m *TokenRequestSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -217,7 +217,7 @@ var xxx_messageInfo_TokenRequestSpec proto.InternalMessageInfo
     func (m *TokenRequestStatus) Reset()      { *m = TokenRequestStatus{} }
     func (*TokenRequestStatus) ProtoMessage() {}
     func (*TokenRequestStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{6}
    +	return fileDescriptor_d1237cbf54dccd53, []int{6}
     }
     func (m *TokenRequestStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -245,7 +245,7 @@ var xxx_messageInfo_TokenRequestStatus proto.InternalMessageInfo
     func (m *TokenReview) Reset()      { *m = TokenReview{} }
     func (*TokenReview) ProtoMessage() {}
     func (*TokenReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{7}
    +	return fileDescriptor_d1237cbf54dccd53, []int{7}
     }
     func (m *TokenReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -273,7 +273,7 @@ var xxx_messageInfo_TokenReview proto.InternalMessageInfo
     func (m *TokenReviewSpec) Reset()      { *m = TokenReviewSpec{} }
     func (*TokenReviewSpec) ProtoMessage() {}
     func (*TokenReviewSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{8}
    +	return fileDescriptor_d1237cbf54dccd53, []int{8}
     }
     func (m *TokenReviewSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -301,7 +301,7 @@ var xxx_messageInfo_TokenReviewSpec proto.InternalMessageInfo
     func (m *TokenReviewStatus) Reset()      { *m = TokenReviewStatus{} }
     func (*TokenReviewStatus) ProtoMessage() {}
     func (*TokenReviewStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{9}
    +	return fileDescriptor_d1237cbf54dccd53, []int{9}
     }
     func (m *TokenReviewStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -329,7 +329,7 @@ var xxx_messageInfo_TokenReviewStatus proto.InternalMessageInfo
     func (m *UserInfo) Reset()      { *m = UserInfo{} }
     func (*UserInfo) ProtoMessage() {}
     func (*UserInfo) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2953ea822e7ffe1e, []int{10}
    +	return fileDescriptor_d1237cbf54dccd53, []int{10}
     }
     func (m *UserInfo) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -370,71 +370,71 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1/generated.proto", fileDescriptor_2953ea822e7ffe1e)
    -}
    -
    -var fileDescriptor_2953ea822e7ffe1e = []byte{
    -	// 958 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4b, 0x6f, 0x23, 0x45,
    -	0x10, 0xf6, 0xf8, 0x11, 0xd9, 0xe5, 0x4d, 0x48, 0x7a, 0x59, 0x61, 0x85, 0xc5, 0x0e, 0xb3, 0x12,
    -	0x8a, 0x80, 0x9d, 0xd9, 0x58, 0x3c, 0x56, 0x8b, 0x84, 0x94, 0x21, 0x16, 0x58, 0x08, 0x76, 0xd5,
    -	0x4e, 0x02, 0x42, 0x42, 0xa2, 0x3d, 0xae, 0x38, 0x83, 0x77, 0x1e, 0xcc, 0xf4, 0x98, 0xf5, 0x6d,
    -	0x7f, 0x02, 0x47, 0x90, 0x38, 0xf0, 0x23, 0x90, 0xf8, 0x0b, 0x39, 0xae, 0x10, 0x87, 0x3d, 0x20,
    -	0x8b, 0x0c, 0x57, 0x8e, 0x9c, 0x38, 0xa1, 0xee, 0xe9, 0xf8, 0x99, 0x4c, 0x7c, 0xda, 0x9b, 0xa7,
    -	0x1e, 0x5f, 0x55, 0x7d, 0x55, 0x5d, 0x65, 0x68, 0x0d, 0xee, 0x47, 0x86, 0xe3, 0x9b, 0x83, 0xb8,
    -	0x8b, 0xa1, 0x87, 0x1c, 0x23, 0x73, 0x88, 0x5e, 0xcf, 0x0f, 0x4d, 0xa5, 0x60, 0x81, 0x63, 0xb2,
    -	0x98, 0x9f, 0xa2, 0xc7, 0x1d, 0x9b, 0x71, 0xc7, 0xf7, 0xcc, 0xe1, 0x9e, 0xd9, 0x47, 0x0f, 0x43,
    -	0xc6, 0xb1, 0x67, 0x04, 0xa1, 0xcf, 0x7d, 0x72, 0x3b, 0xb5, 0x36, 0x58, 0xe0, 0x18, 0xf3, 0xd6,
    -	0xc6, 0x70, 0x6f, 0xfb, 0x6e, 0xdf, 0xe1, 0xa7, 0x71, 0xd7, 0xb0, 0x7d, 0xd7, 0xec, 0xfb, 0x7d,
    -	0xdf, 0x94, 0x4e, 0xdd, 0xf8, 0x44, 0x7e, 0xc9, 0x0f, 0xf9, 0x2b, 0x05, 0xdb, 0x7e, 0x67, 0x1a,
    -	0xda, 0x65, 0xf6, 0xa9, 0xe3, 0x61, 0x38, 0x32, 0x83, 0x41, 0x5f, 0x08, 0x22, 0xd3, 0x45, 0xce,
    -	0x2e, 0x49, 0x61, 0xdb, 0xbc, 0xca, 0x2b, 0x8c, 0x3d, 0xee, 0xb8, 0xb8, 0xe4, 0xf0, 0xde, 0x75,
    -	0x0e, 0x91, 0x7d, 0x8a, 0x2e, 0x5b, 0xf4, 0xd3, 0x7f, 0xd7, 0xe0, 0x65, 0xcb, 0x8f, 0xbd, 0xde,
    -	0xc3, 0xee, 0xb7, 0x68, 0x73, 0x8a, 0x27, 0x18, 0xa2, 0x67, 0x23, 0xd9, 0x81, 0xe2, 0xc0, 0xf1,
    -	0x7a, 0x35, 0x6d, 0x47, 0xdb, 0xad, 0x58, 0x37, 0xce, 0xc6, 0x8d, 0x5c, 0x32, 0x6e, 0x14, 0x3f,
    -	0x75, 0xbc, 0x1e, 0x95, 0x1a, 0xd2, 0x04, 0x60, 0x81, 0x73, 0x8c, 0x61, 0xe4, 0xf8, 0x5e, 0x2d,
    -	0x2f, 0xed, 0x88, 0xb2, 0x83, 0xfd, 0x47, 0x6d, 0xa5, 0xa1, 0x33, 0x56, 0x02, 0xd5, 0x63, 0x2e,
    -	0xd6, 0x0a, 0xf3, 0xa8, 0x9f, 0x33, 0x17, 0xa9, 0xd4, 0x10, 0x0b, 0x0a, 0x71, 0xfb, 0xa0, 0x56,
    -	0x94, 0x06, 0xf7, 0x94, 0x41, 0xe1, 0xa8, 0x7d, 0xf0, 0xdf, 0xb8, 0xf1, 0xfa, 0x55, 0x45, 0xf2,
    -	0x51, 0x80, 0x91, 0x71, 0xd4, 0x3e, 0xa0, 0xc2, 0x59, 0x7f, 0x1f, 0xa0, 0xf5, 0x84, 0x87, 0xec,
    -	0x98, 0x3d, 0x8e, 0x91, 0x34, 0xa0, 0xe4, 0x70, 0x74, 0xa3, 0x9a, 0xb6, 0x53, 0xd8, 0xad, 0x58,
    -	0x95, 0x64, 0xdc, 0x28, 0xb5, 0x85, 0x80, 0xa6, 0xf2, 0x07, 0xe5, 0x1f, 0x7f, 0x69, 0xe4, 0x9e,
    -	0xfe, 0xb9, 0x93, 0xd3, 0xff, 0xd0, 0x60, 0xab, 0x83, 0x8f, 0x4f, 0x3a, 0xb1, 0x62, 0x63, 0xe8,
    -	0xe0, 0xf7, 0xe4, 0x1b, 0x28, 0x8b, 0x3e, 0xf5, 0x18, 0x67, 0x92, 0x8e, 0x6a, 0xf3, 0x9e, 0x31,
    -	0x1d, 0x91, 0x49, 0x26, 0x46, 0x30, 0xe8, 0x0b, 0x41, 0x64, 0x08, 0x6b, 0x63, 0xb8, 0x67, 0xa4,
    -	0x9c, 0x7e, 0x86, 0x9c, 0x4d, 0x89, 0x99, 0xca, 0xe8, 0x04, 0x95, 0x7c, 0x0d, 0x6b, 0x11, 0x67,
    -	0x3c, 0x8e, 0x24, 0x8d, 0xd5, 0xe6, 0xbb, 0x46, 0xd6, 0x08, 0x1a, 0x4b, 0x29, 0x76, 0xa4, 0xb3,
    -	0xb5, 0xa1, 0x82, 0xac, 0xa5, 0xdf, 0x54, 0x81, 0xea, 0x3e, 0xbc, 0x72, 0x85, 0x0b, 0x39, 0x84,
    -	0x72, 0x1c, 0x61, 0xd8, 0xf6, 0x4e, 0x7c, 0x55, 0xdb, 0x1b, 0xd9, 0xb1, 0x8f, 0x94, 0xb5, 0xb5,
    -	0xa9, 0x82, 0x95, 0x2f, 0x24, 0x74, 0x82, 0xa4, 0xff, 0x9c, 0x87, 0x1b, 0x87, 0xfe, 0x00, 0x3d,
    -	0x8a, 0xdf, 0xc5, 0x18, 0xf1, 0x17, 0x40, 0xe1, 0x23, 0x28, 0x46, 0x01, 0xda, 0x8a, 0x40, 0x23,
    -	0xbb, 0x88, 0xd9, 0xdc, 0x3a, 0x01, 0xda, 0xd3, 0x49, 0x14, 0x5f, 0x54, 0x22, 0x91, 0x2f, 0x27,
    -	0x4d, 0x29, 0x2c, 0x65, 0x7c, 0x1d, 0x66, 0x76, 0x3f, 0xfe, 0xd5, 0x60, 0x73, 0x31, 0x05, 0xf2,
    -	0x16, 0x54, 0x58, 0xdc, 0x73, 0xc4, 0xe3, 0xbb, 0x18, 0xd5, 0xf5, 0x64, 0xdc, 0xa8, 0xec, 0x5f,
    -	0x08, 0xe9, 0x54, 0x4f, 0x3e, 0x82, 0x2d, 0x7c, 0x12, 0x38, 0xa1, 0x8c, 0xde, 0x41, 0xdb, 0xf7,
    -	0x7a, 0x91, 0x7c, 0x33, 0x05, 0xeb, 0x56, 0x32, 0x6e, 0x6c, 0xb5, 0x16, 0x95, 0x74, 0xd9, 0x9e,
    -	0x78, 0xb0, 0xd1, 0x9d, 0x7b, 0xfa, 0xaa, 0xd0, 0x66, 0x76, 0xa1, 0x97, 0xad, 0x0b, 0x8b, 0x24,
    -	0xe3, 0xc6, 0xc6, 0xbc, 0x86, 0x2e, 0xa0, 0xeb, 0xbf, 0x6a, 0x40, 0x96, 0x59, 0x22, 0x77, 0xa0,
    -	0xc4, 0x85, 0x54, 0xad, 0x9a, 0x75, 0x45, 0x5a, 0x29, 0x35, 0x4d, 0x75, 0x64, 0x04, 0x37, 0xa7,
    -	0x05, 0x1c, 0x3a, 0x2e, 0x46, 0x9c, 0xb9, 0x81, 0xea, 0xf6, 0x9b, 0xab, 0xcd, 0x92, 0x70, 0xb3,
    -	0x5e, 0x55, 0xf0, 0x37, 0x5b, 0xcb, 0x70, 0xf4, 0xb2, 0x18, 0xfa, 0x4f, 0x79, 0xa8, 0xaa, 0xb4,
    -	0x5f, 0xd0, 0x3a, 0x78, 0x38, 0x37, 0xcb, 0x77, 0x57, 0x9a, 0x3b, 0xf9, 0xa6, 0xaf, 0x1a, 0xe5,
    -	0x2f, 0x16, 0x46, 0xd9, 0x5c, 0x1d, 0x32, 0x7b, 0x92, 0x6d, 0x78, 0x69, 0x21, 0xfe, 0x6a, 0xed,
    -	0x9c, 0x1b, 0xf6, 0x7c, 0xf6, 0xb0, 0xeb, 0xff, 0x68, 0xb0, 0xb5, 0x94, 0x12, 0xf9, 0x00, 0xd6,
    -	0x67, 0x32, 0xc7, 0xf4, 0x52, 0x95, 0xad, 0x5b, 0x2a, 0xde, 0xfa, 0xfe, 0xac, 0x92, 0xce, 0xdb,
    -	0x92, 0x4f, 0xa0, 0x28, 0x96, 0x95, 0x62, 0x78, 0xd5, 0x95, 0x37, 0xa1, 0x56, 0x48, 0xa8, 0x44,
    -	0x98, 0xaf, 0xa4, 0x78, 0xcd, 0xb3, 0xbd, 0x03, 0x25, 0x0c, 0x43, 0x3f, 0x54, 0xf7, 0x6f, 0xc2,
    -	0x4d, 0x4b, 0x08, 0x69, 0xaa, 0xd3, 0x7f, 0xcb, 0xc3, 0x64, 0xa7, 0x92, 0xb7, 0xd3, 0xfd, 0x2c,
    -	0x8f, 0x66, 0x4a, 0xe8, 0xdc, 0xde, 0x15, 0x72, 0x3a, 0xb1, 0x20, 0xaf, 0x41, 0x21, 0x76, 0x7a,
    -	0xea, 0x16, 0x57, 0x67, 0x8e, 0x27, 0x15, 0x72, 0xa2, 0xc3, 0x5a, 0x3f, 0xf4, 0xe3, 0x40, 0x8c,
    -	0x81, 0x48, 0x14, 0x44, 0x47, 0x3f, 0x96, 0x12, 0xaa, 0x34, 0xe4, 0x18, 0x4a, 0x28, 0x6e, 0xa7,
    -	0xac, 0xa5, 0xda, 0xdc, 0x5b, 0x8d, 0x1a, 0x43, 0xde, 0xdb, 0x96, 0xc7, 0xc3, 0xd1, 0x4c, 0x55,
    -	0x42, 0x46, 0x53, 0xb8, 0xed, 0xae, 0xba, 0xc9, 0xd2, 0x86, 0x6c, 0x42, 0x61, 0x80, 0xa3, 0xb4,
    -	0x22, 0x2a, 0x7e, 0x92, 0x0f, 0xa1, 0x34, 0x14, 0xe7, 0x5a, 0xb5, 0x64, 0x37, 0x3b, 0xee, 0xf4,
    -	0xbc, 0xd3, 0xd4, 0xed, 0x41, 0xfe, 0xbe, 0x66, 0x59, 0x67, 0xe7, 0xf5, 0xdc, 0xb3, 0xf3, 0x7a,
    -	0xee, 0xf9, 0x79, 0x3d, 0xf7, 0x34, 0xa9, 0x6b, 0x67, 0x49, 0x5d, 0x7b, 0x96, 0xd4, 0xb5, 0xe7,
    -	0x49, 0x5d, 0xfb, 0x2b, 0xa9, 0x6b, 0x3f, 0xfc, 0x5d, 0xcf, 0x7d, 0x75, 0x3b, 0xeb, 0xcf, 0xe0,
    -	0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0d, 0x9a, 0x38, 0x17, 0x44, 0x0a, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/authentication/v1/generated.proto", fileDescriptor_d1237cbf54dccd53)
    +}
    +
    +var fileDescriptor_d1237cbf54dccd53 = []byte{
    +	// 947 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4b, 0x6f, 0x23, 0xc5,
    +	0x13, 0xf7, 0xf8, 0x11, 0xd9, 0xe5, 0x4d, 0xfe, 0x49, 0xef, 0x7f, 0x85, 0x15, 0x16, 0x4f, 0x98,
    +	0x95, 0x50, 0x04, 0xbb, 0x33, 0x1b, 0x8b, 0xc7, 0x6a, 0x91, 0x90, 0x32, 0xc4, 0x02, 0x0b, 0xc1,
    +	0xae, 0xda, 0x49, 0x40, 0x48, 0x48, 0xb4, 0xc7, 0x1d, 0xa7, 0xf1, 0xce, 0x83, 0x99, 0x1e, 0xb3,
    +	0xbe, 0xed, 0x47, 0xe0, 0x08, 0x12, 0x07, 0x3e, 0x04, 0x12, 0x5f, 0x21, 0xc7, 0x15, 0xe2, 0xb0,
    +	0x07, 0x64, 0x91, 0xe1, 0xca, 0x91, 0x13, 0x27, 0xd4, 0x3d, 0x1d, 0xdb, 0x63, 0x27, 0x13, 0x9f,
    +	0xf6, 0xe6, 0xa9, 0xc7, 0xaf, 0xaa, 0x7e, 0x55, 0x5d, 0x65, 0xb8, 0x3b, 0x7c, 0x10, 0x99, 0xcc,
    +	0xb7, 0x48, 0xc0, 0x2c, 0x12, 0xf3, 0x53, 0xea, 0x71, 0xe6, 0x10, 0xce, 0x7c, 0xcf, 0x1a, 0xed,
    +	0x59, 0x03, 0xea, 0xd1, 0x90, 0x70, 0xda, 0x37, 0x83, 0xd0, 0xe7, 0x3e, 0xba, 0x9d, 0x5a, 0x9b,
    +	0x24, 0x60, 0x66, 0xd6, 0xda, 0x1c, 0xed, 0x6d, 0xdf, 0x1b, 0x30, 0x7e, 0x1a, 0xf7, 0x4c, 0xc7,
    +	0x77, 0xad, 0x81, 0x3f, 0xf0, 0x2d, 0xe9, 0xd4, 0x8b, 0x4f, 0xe4, 0x97, 0xfc, 0x90, 0xbf, 0x52,
    +	0xb0, 0xed, 0xb7, 0x67, 0xa1, 0x5d, 0xe2, 0x9c, 0x32, 0x8f, 0x86, 0x63, 0x2b, 0x18, 0x0e, 0x84,
    +	0x20, 0xb2, 0x5c, 0xca, 0xc9, 0x25, 0x29, 0x6c, 0x5b, 0x57, 0x79, 0x85, 0xb1, 0xc7, 0x99, 0x4b,
    +	0x97, 0x1c, 0xde, 0xbd, 0xce, 0x21, 0x72, 0x4e, 0xa9, 0x4b, 0x16, 0xfd, 0x8c, 0xdf, 0x34, 0xf8,
    +	0xbf, 0xed, 0xc7, 0x5e, 0xff, 0x51, 0xef, 0x1b, 0xea, 0x70, 0x4c, 0x4f, 0x68, 0x48, 0x3d, 0x87,
    +	0xa2, 0x1d, 0x28, 0x0f, 0x99, 0xd7, 0x6f, 0x68, 0x3b, 0xda, 0x6e, 0xcd, 0xbe, 0x71, 0x36, 0xd1,
    +	0x0b, 0xc9, 0x44, 0x2f, 0x7f, 0xc2, 0xbc, 0x3e, 0x96, 0x1a, 0xd4, 0x02, 0x20, 0x01, 0x3b, 0xa6,
    +	0x61, 0xc4, 0x7c, 0xaf, 0x51, 0x94, 0x76, 0x48, 0xd9, 0xc1, 0xfe, 0xe3, 0x8e, 0xd2, 0xe0, 0x39,
    +	0x2b, 0x81, 0xea, 0x11, 0x97, 0x36, 0x4a, 0x59, 0xd4, 0xcf, 0x88, 0x4b, 0xb1, 0xd4, 0x20, 0x1b,
    +	0x4a, 0x71, 0xe7, 0xa0, 0x51, 0x96, 0x06, 0xf7, 0x95, 0x41, 0xe9, 0xa8, 0x73, 0xf0, 0xef, 0x44,
    +	0x7f, 0xfd, 0xaa, 0x22, 0xf9, 0x38, 0xa0, 0x91, 0x79, 0xd4, 0x39, 0xc0, 0xc2, 0xd9, 0x78, 0x0f,
    +	0xa0, 0xfd, 0x94, 0x87, 0xe4, 0x98, 0x3c, 0x89, 0x29, 0xd2, 0xa1, 0xc2, 0x38, 0x75, 0xa3, 0x86,
    +	0xb6, 0x53, 0xda, 0xad, 0xd9, 0xb5, 0x64, 0xa2, 0x57, 0x3a, 0x42, 0x80, 0x53, 0xf9, 0xc3, 0xea,
    +	0x0f, 0x3f, 0xeb, 0x85, 0x67, 0x7f, 0xec, 0x14, 0x8c, 0xdf, 0x35, 0xd8, 0xea, 0xd2, 0x27, 0x27,
    +	0xdd, 0x58, 0xb1, 0x31, 0x62, 0xf4, 0x3b, 0xf4, 0x35, 0x54, 0x45, 0x9f, 0xfa, 0x84, 0x13, 0x49,
    +	0x47, 0xbd, 0x75, 0xdf, 0x9c, 0x8d, 0xc8, 0x34, 0x13, 0x33, 0x18, 0x0e, 0x84, 0x20, 0x32, 0x85,
    +	0xb5, 0x39, 0xda, 0x33, 0x53, 0x4e, 0x3f, 0xa5, 0x9c, 0xcc, 0x88, 0x99, 0xc9, 0xf0, 0x14, 0x15,
    +	0x7d, 0x05, 0x6b, 0x11, 0x27, 0x3c, 0x8e, 0x24, 0x8d, 0xf5, 0xd6, 0x3b, 0x66, 0xde, 0x08, 0x9a,
    +	0x4b, 0x29, 0x76, 0xa5, 0xb3, 0xbd, 0xa1, 0x82, 0xac, 0xa5, 0xdf, 0x58, 0x81, 0x1a, 0x3e, 0xbc,
    +	0x72, 0x85, 0x0b, 0x3a, 0x84, 0x6a, 0x1c, 0xd1, 0xb0, 0xe3, 0x9d, 0xf8, 0xaa, 0xb6, 0x37, 0xf2,
    +	0x63, 0x1f, 0x29, 0x6b, 0x7b, 0x53, 0x05, 0xab, 0x5e, 0x48, 0xf0, 0x14, 0xc9, 0xf8, 0xa9, 0x08,
    +	0x37, 0x0e, 0xfd, 0x21, 0xf5, 0x30, 0xfd, 0x36, 0xa6, 0x11, 0x7f, 0x09, 0x14, 0x3e, 0x86, 0x72,
    +	0x14, 0x50, 0x47, 0x11, 0x68, 0xe6, 0x17, 0x31, 0x9f, 0x5b, 0x37, 0xa0, 0xce, 0x6c, 0x12, 0xc5,
    +	0x17, 0x96, 0x48, 0xe8, 0x8b, 0x69, 0x53, 0x4a, 0x4b, 0x19, 0x5f, 0x87, 0x99, 0xdf, 0x8f, 0x7f,
    +	0x34, 0xd8, 0x5c, 0x4c, 0x01, 0xbd, 0x05, 0x35, 0x12, 0xf7, 0x99, 0x78, 0x7c, 0x17, 0xa3, 0xba,
    +	0x9e, 0x4c, 0xf4, 0xda, 0xfe, 0x85, 0x10, 0xcf, 0xf4, 0xe8, 0x43, 0xd8, 0xa2, 0x4f, 0x03, 0x16,
    +	0xca, 0xe8, 0x5d, 0xea, 0xf8, 0x5e, 0x3f, 0x92, 0x6f, 0xa6, 0x64, 0xdf, 0x4a, 0x26, 0xfa, 0x56,
    +	0x7b, 0x51, 0x89, 0x97, 0xed, 0x91, 0x07, 0x1b, 0xbd, 0xcc, 0xd3, 0x57, 0x85, 0xb6, 0xf2, 0x0b,
    +	0xbd, 0x6c, 0x5d, 0xd8, 0x28, 0x99, 0xe8, 0x1b, 0x59, 0x0d, 0x5e, 0x40, 0x37, 0x7e, 0xd1, 0x00,
    +	0x2d, 0xb3, 0x84, 0xee, 0x40, 0x85, 0x0b, 0xa9, 0x5a, 0x35, 0xeb, 0x8a, 0xb4, 0x4a, 0x6a, 0x9a,
    +	0xea, 0xd0, 0x18, 0x6e, 0xce, 0x0a, 0x38, 0x64, 0x2e, 0x8d, 0x38, 0x71, 0x03, 0xd5, 0xed, 0x37,
    +	0x57, 0x9b, 0x25, 0xe1, 0x66, 0xbf, 0xaa, 0xe0, 0x6f, 0xb6, 0x97, 0xe1, 0xf0, 0x65, 0x31, 0x8c,
    +	0x1f, 0x8b, 0x50, 0x57, 0x69, 0xbf, 0xa4, 0x75, 0xf0, 0x28, 0x33, 0xcb, 0xf7, 0x56, 0x9a, 0x3b,
    +	0xf9, 0xa6, 0xaf, 0x1a, 0xe5, 0xcf, 0x17, 0x46, 0xd9, 0x5a, 0x1d, 0x32, 0x7f, 0x92, 0x1d, 0xf8,
    +	0xdf, 0x42, 0xfc, 0xd5, 0xda, 0x99, 0x19, 0xf6, 0x62, 0xfe, 0xb0, 0x1b, 0x7f, 0x6b, 0xb0, 0xb5,
    +	0x94, 0x12, 0x7a, 0x1f, 0xd6, 0xe7, 0x32, 0xa7, 0xe9, 0xa5, 0xaa, 0xda, 0xb7, 0x54, 0xbc, 0xf5,
    +	0xfd, 0x79, 0x25, 0xce, 0xda, 0xa2, 0x8f, 0xa1, 0x2c, 0x96, 0x95, 0x62, 0x78, 0xd5, 0x95, 0x37,
    +	0xa5, 0x56, 0x48, 0xb0, 0x44, 0xc8, 0x56, 0x52, 0xbe, 0xe6, 0xd9, 0xde, 0x81, 0x0a, 0x0d, 0x43,
    +	0x3f, 0x54, 0xf7, 0x6f, 0xca, 0x4d, 0x5b, 0x08, 0x71, 0xaa, 0x33, 0x7e, 0x2d, 0xc2, 0x74, 0xa7,
    +	0xa2, 0xbb, 0xe9, 0x7e, 0x96, 0x47, 0x33, 0x25, 0x34, 0xb3, 0x77, 0x85, 0x1c, 0x4f, 0x2d, 0xd0,
    +	0x6b, 0x50, 0x8a, 0x59, 0x5f, 0xdd, 0xe2, 0xfa, 0xdc, 0xf1, 0xc4, 0x42, 0x8e, 0x0c, 0x58, 0x1b,
    +	0x84, 0x7e, 0x1c, 0x88, 0x31, 0x10, 0x89, 0x82, 0xe8, 0xe8, 0x47, 0x52, 0x82, 0x95, 0x06, 0x1d,
    +	0x43, 0x85, 0x8a, 0xdb, 0x29, 0x6b, 0xa9, 0xb7, 0xf6, 0x56, 0xa3, 0xc6, 0x94, 0xf7, 0xb6, 0xed,
    +	0xf1, 0x70, 0x3c, 0x57, 0x95, 0x90, 0xe1, 0x14, 0x6e, 0xbb, 0xa7, 0x6e, 0xb2, 0xb4, 0x41, 0x9b,
    +	0x50, 0x1a, 0xd2, 0x71, 0x5a, 0x11, 0x16, 0x3f, 0xd1, 0x07, 0x50, 0x19, 0x89, 0x73, 0xad, 0x5a,
    +	0xb2, 0x9b, 0x1f, 0x77, 0x76, 0xde, 0x71, 0xea, 0xf6, 0xb0, 0xf8, 0x40, 0xb3, 0xed, 0xb3, 0xf3,
    +	0x66, 0xe1, 0xf9, 0x79, 0xb3, 0xf0, 0xe2, 0xbc, 0x59, 0x78, 0x96, 0x34, 0xb5, 0xb3, 0xa4, 0xa9,
    +	0x3d, 0x4f, 0x9a, 0xda, 0x8b, 0xa4, 0xa9, 0xfd, 0x99, 0x34, 0xb5, 0xef, 0xff, 0x6a, 0x16, 0xbe,
    +	0xbc, 0x9d, 0xf7, 0x67, 0xf0, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, 0xb7, 0xc1, 0xa0, 0x2b,
    +	0x0a, 0x00, 0x00,
     }
     
     func (m *BoundObjectReference) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/authentication/v1/generated.proto b/vendor/k8s.io/api/authentication/v1/generated.proto
    index 1632070c872c..ae9763576cac 100644
    --- a/vendor/k8s.io/api/authentication/v1/generated.proto
    +++ b/vendor/k8s.io/api/authentication/v1/generated.proto
    @@ -63,7 +63,7 @@ message SelfSubjectReview {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Status is filled in by the server with the user attributes.
       optional SelfSubjectReviewStatus status = 2;
    @@ -81,7 +81,7 @@ message TokenRequest {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated
       optional TokenRequestSpec spec = 2;
    @@ -99,6 +99,7 @@ message TokenRequestSpec {
       // token issued for multiple audiences may be used to authenticate
       // against any of the audiences listed but implies a high degree of
       // trust between the target audiences.
    +  // +listType=atomic
       repeated string audiences = 1;
     
       // ExpirationSeconds is the requested duration of validity of the request. The
    @@ -122,7 +123,7 @@ message TokenRequestStatus {
       optional string token = 1;
     
       // ExpirationTimestamp is the time of expiration of the returned token.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time expirationTimestamp = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time expirationTimestamp = 2;
     }
     
     // TokenReview attempts to authenticate a token to a known user.
    @@ -132,7 +133,7 @@ message TokenReview {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated
       optional TokenReviewSpec spec = 2;
    @@ -154,6 +155,7 @@ message TokenReviewSpec {
       // this list. If no audiences are provided, the audience will default to the
       // audience of the Kubernetes apiserver.
       // +optional
    +  // +listType=atomic
       repeated string audiences = 2;
     }
     
    @@ -177,6 +179,7 @@ message TokenReviewStatus {
       // status.audience field where status.authenticated is "true", the token is
       // valid against the audience of the Kubernetes API server.
       // +optional
    +  // +listType=atomic
       repeated string audiences = 4;
     
       // Error indicates that the token couldn't be checked
    @@ -199,6 +202,7 @@ message UserInfo {
     
       // The names of groups this user is a part of.
       // +optional
    +  // +listType=atomic
       repeated string groups = 3;
     
       // Any additional information provided by the authenticator.
    diff --git a/vendor/k8s.io/api/authentication/v1/types.go b/vendor/k8s.io/api/authentication/v1/types.go
    index b498007c000c..2dc0707c4fae 100644
    --- a/vendor/k8s.io/api/authentication/v1/types.go
    +++ b/vendor/k8s.io/api/authentication/v1/types.go
    @@ -45,6 +45,7 @@ const (
     // +genclient:nonNamespaced
     // +genclient:onlyVerbs=create
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.6
     
     // TokenReview attempts to authenticate a token to a known user.
     // Note: TokenReview requests may be cached by the webhook token authenticator
    @@ -75,6 +76,7 @@ type TokenReviewSpec struct {
     	// this list. If no audiences are provided, the audience will default to the
     	// audience of the Kubernetes apiserver.
     	// +optional
    +	// +listType=atomic
     	Audiences []string `json:"audiences,omitempty" protobuf:"bytes,2,rep,name=audiences"`
     }
     
    @@ -96,6 +98,7 @@ type TokenReviewStatus struct {
     	// status.audience field where status.authenticated is "true", the token is
     	// valid against the audience of the Kubernetes API server.
     	// +optional
    +	// +listType=atomic
     	Audiences []string `json:"audiences,omitempty" protobuf:"bytes,4,rep,name=audiences"`
     	// Error indicates that the token couldn't be checked
     	// +optional
    @@ -115,6 +118,7 @@ type UserInfo struct {
     	UID string `json:"uid,omitempty" protobuf:"bytes,2,opt,name=uid"`
     	// The names of groups this user is a part of.
     	// +optional
    +	// +listType=atomic
     	Groups []string `json:"groups,omitempty" protobuf:"bytes,3,rep,name=groups"`
     	// Any additional information provided by the authenticator.
     	// +optional
    @@ -131,6 +135,7 @@ func (t ExtraValue) String() string {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.10
     
     // TokenRequest requests a token for a given service account.
     type TokenRequest struct {
    @@ -156,6 +161,7 @@ type TokenRequestSpec struct {
     	// token issued for multiple audiences may be used to authenticate
     	// against any of the audiences listed but implies a high degree of
     	// trust between the target audiences.
    +	// +listType=atomic
     	Audiences []string `json:"audiences" protobuf:"bytes,1,rep,name=audiences"`
     
     	// ExpirationSeconds is the requested duration of validity of the request. The
    @@ -202,6 +208,7 @@ type BoundObjectReference struct {
     // +genclient:nonNamespaced
     // +genclient:onlyVerbs=create
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.28
     
     // SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request.
     // When using impersonation, users will receive the user info of the user being impersonated.  If impersonation or
    diff --git a/vendor/k8s.io/api/authentication/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/authentication/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..b612bdec486f
    --- /dev/null
    +++ b/vendor/k8s.io/api/authentication/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,40 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *SelfSubjectReview) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 28
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *TokenRequest) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 10
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *TokenReview) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 6
    +}
    diff --git a/vendor/k8s.io/api/authentication/v1alpha1/generated.pb.go b/vendor/k8s.io/api/authentication/v1alpha1/generated.pb.go
    index ea274ac07b88..98c106ec65a8 100644
    --- a/vendor/k8s.io/api/authentication/v1alpha1/generated.pb.go
    +++ b/vendor/k8s.io/api/authentication/v1alpha1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1alpha1/generated.proto
    +// source: k8s.io/api/authentication/v1alpha1/generated.proto
     
     package v1alpha1
     
    @@ -46,7 +46,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *SelfSubjectReview) Reset()      { *m = SelfSubjectReview{} }
     func (*SelfSubjectReview) ProtoMessage() {}
     func (*SelfSubjectReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_05a77aeb710b43c2, []int{0}
    +	return fileDescriptor_f003acd72d3d5efb, []int{0}
     }
     func (m *SelfSubjectReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -74,7 +74,7 @@ var xxx_messageInfo_SelfSubjectReview proto.InternalMessageInfo
     func (m *SelfSubjectReviewStatus) Reset()      { *m = SelfSubjectReviewStatus{} }
     func (*SelfSubjectReviewStatus) ProtoMessage() {}
     func (*SelfSubjectReviewStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_05a77aeb710b43c2, []int{1}
    +	return fileDescriptor_f003acd72d3d5efb, []int{1}
     }
     func (m *SelfSubjectReviewStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -105,35 +105,34 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1alpha1/generated.proto", fileDescriptor_05a77aeb710b43c2)
    +	proto.RegisterFile("k8s.io/api/authentication/v1alpha1/generated.proto", fileDescriptor_f003acd72d3d5efb)
     }
     
    -var fileDescriptor_05a77aeb710b43c2 = []byte{
    -	// 384 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xbd, 0x6e, 0xdb, 0x30,
    -	0x14, 0x85, 0xc5, 0x0e, 0x86, 0xa1, 0x02, 0x45, 0xab, 0xa5, 0x86, 0x07, 0xba, 0xd0, 0x50, 0x74,
    -	0x68, 0xc9, 0xba, 0x28, 0x8a, 0x02, 0xdd, 0x34, 0x35, 0x08, 0x82, 0x00, 0x72, 0xb2, 0x64, 0x0a,
    -	0x25, 0x5f, 0x4b, 0x8c, 0x2c, 0x52, 0x10, 0x49, 0x05, 0xd9, 0xf2, 0x08, 0x79, 0x2c, 0x8f, 0x1e,
    -	0x8d, 0x0c, 0x46, 0xac, 0xbc, 0x48, 0x20, 0x59, 0xb6, 0x11, 0x3b, 0xb6, 0x37, 0xde, 0xc3, 0xfb,
    -	0x9d, 0x7b, 0xf8, 0x63, 0x9f, 0x26, 0x7f, 0x15, 0xe1, 0x92, 0x26, 0x26, 0x80, 0x5c, 0x80, 0x06,
    -	0x45, 0x0b, 0x10, 0x43, 0x99, 0xd3, 0x66, 0x83, 0x65, 0x9c, 0x32, 0xa3, 0x63, 0x10, 0x9a, 0x87,
    -	0x4c, 0x73, 0x29, 0x68, 0xd1, 0x67, 0xe3, 0x2c, 0x66, 0x7d, 0x1a, 0x81, 0x80, 0x9c, 0x69, 0x18,
    -	0x92, 0x2c, 0x97, 0x5a, 0x3a, 0xee, 0x92, 0x21, 0x2c, 0xe3, 0xe4, 0x35, 0x43, 0x56, 0x4c, 0xf7,
    -	0x47, 0xc4, 0x75, 0x6c, 0x02, 0x12, 0xca, 0x94, 0x46, 0x32, 0x92, 0xb4, 0x46, 0x03, 0x33, 0xaa,
    -	0xab, 0xba, 0xa8, 0x57, 0x4b, 0xcb, 0xee, 0xf7, 0x43, 0x31, 0xb6, 0x03, 0x74, 0x7f, 0x6f, 0xba,
    -	0x53, 0x16, 0xc6, 0x5c, 0x40, 0x7e, 0x47, 0xb3, 0x24, 0xaa, 0x04, 0x45, 0x53, 0xd0, 0xec, 0x2d,
    -	0x8a, 0xee, 0xa3, 0x72, 0x23, 0x34, 0x4f, 0x61, 0x07, 0xf8, 0x73, 0x0c, 0x50, 0x61, 0x0c, 0x29,
    -	0xdb, 0xe6, 0xdc, 0x47, 0x64, 0x7f, 0x1a, 0xc0, 0x78, 0x34, 0x30, 0xc1, 0x0d, 0x84, 0xda, 0x87,
    -	0x82, 0xc3, 0xad, 0x73, 0x6d, 0xb7, 0xab, 0x64, 0x43, 0xa6, 0x59, 0x07, 0x7d, 0x41, 0xdf, 0xde,
    -	0xff, 0xfa, 0x49, 0x36, 0x17, 0xb9, 0x1e, 0x40, 0xb2, 0x24, 0xaa, 0x04, 0x45, 0xaa, 0x6e, 0x52,
    -	0xf4, 0xc9, 0x79, 0xed, 0x72, 0x06, 0x9a, 0x79, 0xce, 0x64, 0xde, 0xb3, 0xca, 0x79, 0xcf, 0xde,
    -	0x68, 0xfe, 0xda, 0xd5, 0x09, 0xed, 0x96, 0xd2, 0x4c, 0x1b, 0xd5, 0x79, 0x57, 0xfb, 0xff, 0x23,
    -	0xc7, 0x1f, 0x8a, 0xec, 0x04, 0x1d, 0xd4, 0x16, 0xde, 0x87, 0x66, 0x54, 0x6b, 0x59, 0xfb, 0x8d,
    -	0xb5, 0x2b, 0xed, 0xcf, 0x7b, 0x10, 0xe7, 0xc2, 0x6e, 0x1b, 0x05, 0xf9, 0x89, 0x18, 0xc9, 0xe6,
    -	0x84, 0x5f, 0x0f, 0x26, 0x20, 0x97, 0x4d, 0xb7, 0xf7, 0xb1, 0x19, 0xd6, 0x5e, 0x29, 0xfe, 0xda,
    -	0xc9, 0xfb, 0x3f, 0x59, 0x60, 0x6b, 0xba, 0xc0, 0xd6, 0x6c, 0x81, 0xad, 0xfb, 0x12, 0xa3, 0x49,
    -	0x89, 0xd1, 0xb4, 0xc4, 0x68, 0x56, 0x62, 0xf4, 0x54, 0x62, 0xf4, 0xf0, 0x8c, 0xad, 0x2b, 0xf7,
    -	0xf8, 0x3f, 0x7e, 0x09, 0x00, 0x00, 0xff, 0xff, 0xec, 0xf9, 0xa3, 0xcd, 0x05, 0x03, 0x00, 0x00,
    +var fileDescriptor_f003acd72d3d5efb = []byte{
    +	// 368 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x41, 0x4f, 0xe2, 0x40,
    +	0x14, 0xc7, 0x3b, 0x7b, 0x20, 0xa4, 0x9b, 0x6c, 0x76, 0x7b, 0x59, 0xc2, 0x61, 0x30, 0x3d, 0x18,
    +	0x0f, 0x3a, 0x23, 0xc4, 0x18, 0x13, 0x6f, 0x3d, 0xe9, 0xc1, 0x98, 0x14, 0xbd, 0x78, 0xf2, 0x51,
    +	0x1e, 0xed, 0x08, 0xed, 0x34, 0xed, 0x14, 0xe3, 0xcd, 0x8f, 0xe0, 0xc7, 0xe2, 0xc8, 0x91, 0x78,
    +	0x20, 0x52, 0xbf, 0x88, 0xe9, 0x50, 0x20, 0x82, 0xc0, 0xad, 0xef, 0xe5, 0xfd, 0x7e, 0xef, 0xdf,
    +	0x99, 0x31, 0x5b, 0xfd, 0x8b, 0x94, 0x09, 0xc9, 0x21, 0x16, 0x1c, 0x32, 0x15, 0x60, 0xa4, 0x84,
    +	0x07, 0x4a, 0xc8, 0x88, 0x0f, 0x9b, 0x30, 0x88, 0x03, 0x68, 0x72, 0x1f, 0x23, 0x4c, 0x40, 0x61,
    +	0x97, 0xc5, 0x89, 0x54, 0xd2, 0xb2, 0xe7, 0x0c, 0x83, 0x58, 0xb0, 0xef, 0x0c, 0x5b, 0x30, 0xf5,
    +	0x13, 0x5f, 0xa8, 0x20, 0xeb, 0x30, 0x4f, 0x86, 0xdc, 0x97, 0xbe, 0xe4, 0x1a, 0xed, 0x64, 0x3d,
    +	0x5d, 0xe9, 0x42, 0x7f, 0xcd, 0x95, 0xf5, 0xe3, 0x5d, 0x31, 0xd6, 0x03, 0xd4, 0xcf, 0x56, 0xd3,
    +	0x21, 0x78, 0x81, 0x88, 0x30, 0x79, 0xe1, 0x71, 0xdf, 0x2f, 0x1a, 0x29, 0x0f, 0x51, 0xc1, 0x4f,
    +	0x14, 0xdf, 0x46, 0x25, 0x59, 0xa4, 0x44, 0x88, 0x1b, 0xc0, 0xf9, 0x3e, 0x20, 0xf5, 0x02, 0x0c,
    +	0x61, 0x9d, 0xb3, 0xdf, 0x89, 0xf9, 0xaf, 0x8d, 0x83, 0x5e, 0x3b, 0xeb, 0x3c, 0xa1, 0xa7, 0x5c,
    +	0x1c, 0x0a, 0x7c, 0xb6, 0x1e, 0xcd, 0x6a, 0x91, 0xac, 0x0b, 0x0a, 0x6a, 0xe4, 0x80, 0x1c, 0xfd,
    +	0x6e, 0x9d, 0xb2, 0xd5, 0x41, 0x2e, 0x17, 0xb0, 0xb8, 0xef, 0x17, 0x8d, 0x94, 0x15, 0xd3, 0x6c,
    +	0xd8, 0x64, 0xb7, 0xda, 0x72, 0x83, 0x0a, 0x1c, 0x6b, 0x34, 0x6d, 0x18, 0xf9, 0xb4, 0x61, 0xae,
    +	0x7a, 0xee, 0xd2, 0x6a, 0x79, 0x66, 0x25, 0x55, 0xa0, 0xb2, 0xb4, 0xf6, 0x4b, 0xfb, 0x2f, 0xd9,
    +	0xfe, 0x8b, 0x62, 0x1b, 0x41, 0xdb, 0x5a, 0xe1, 0xfc, 0x29, 0x57, 0x55, 0xe6, 0xb5, 0x5b, 0xaa,
    +	0x6d, 0x69, 0xfe, 0xdf, 0x82, 0x58, 0x77, 0x66, 0x35, 0x4b, 0x31, 0xb9, 0x8e, 0x7a, 0xb2, 0xfc,
    +	0xc3, 0xc3, 0x9d, 0x09, 0xd8, 0x7d, 0x39, 0xed, 0xfc, 0x2d, 0x97, 0x55, 0x17, 0x1d, 0x77, 0x69,
    +	0x72, 0xae, 0x46, 0x33, 0x6a, 0x8c, 0x67, 0xd4, 0x98, 0xcc, 0xa8, 0xf1, 0x9a, 0x53, 0x32, 0xca,
    +	0x29, 0x19, 0xe7, 0x94, 0x4c, 0x72, 0x4a, 0x3e, 0x72, 0x4a, 0xde, 0x3e, 0xa9, 0xf1, 0x60, 0xef,
    +	0x7f, 0xc7, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x04, 0xfb, 0xb6, 0xfb, 0xec, 0x02, 0x00, 0x00,
     }
     
     func (m *SelfSubjectReview) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/authentication/v1alpha1/generated.proto b/vendor/k8s.io/api/authentication/v1alpha1/generated.proto
    index 51d9252440c8..4585e5cdd325 100644
    --- a/vendor/k8s.io/api/authentication/v1alpha1/generated.proto
    +++ b/vendor/k8s.io/api/authentication/v1alpha1/generated.proto
    @@ -36,7 +36,7 @@ message SelfSubjectReview {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Status is filled in by the server with the user attributes.
       optional SelfSubjectReviewStatus status = 2;
    @@ -46,6 +46,6 @@ message SelfSubjectReview {
     message SelfSubjectReviewStatus {
       // User attributes of the user making this request.
       // +optional
    -  optional k8s.io.api.authentication.v1.UserInfo userInfo = 1;
    +  optional .k8s.io.api.authentication.v1.UserInfo userInfo = 1;
     }
     
    diff --git a/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go b/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go
    index 7f1d5ca6ce1e..415392644783 100644
    --- a/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1beta1/generated.proto
    +// source: k8s.io/api/authentication/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -47,7 +47,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ExtraValue) Reset()      { *m = ExtraValue{} }
     func (*ExtraValue) ProtoMessage() {}
     func (*ExtraValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_77c9b20d3ad27844, []int{0}
    +	return fileDescriptor_fdc2de40fd7f3b21, []int{0}
     }
     func (m *ExtraValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +75,7 @@ var xxx_messageInfo_ExtraValue proto.InternalMessageInfo
     func (m *SelfSubjectReview) Reset()      { *m = SelfSubjectReview{} }
     func (*SelfSubjectReview) ProtoMessage() {}
     func (*SelfSubjectReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_77c9b20d3ad27844, []int{1}
    +	return fileDescriptor_fdc2de40fd7f3b21, []int{1}
     }
     func (m *SelfSubjectReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +103,7 @@ var xxx_messageInfo_SelfSubjectReview proto.InternalMessageInfo
     func (m *SelfSubjectReviewStatus) Reset()      { *m = SelfSubjectReviewStatus{} }
     func (*SelfSubjectReviewStatus) ProtoMessage() {}
     func (*SelfSubjectReviewStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_77c9b20d3ad27844, []int{2}
    +	return fileDescriptor_fdc2de40fd7f3b21, []int{2}
     }
     func (m *SelfSubjectReviewStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -131,7 +131,7 @@ var xxx_messageInfo_SelfSubjectReviewStatus proto.InternalMessageInfo
     func (m *TokenReview) Reset()      { *m = TokenReview{} }
     func (*TokenReview) ProtoMessage() {}
     func (*TokenReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_77c9b20d3ad27844, []int{3}
    +	return fileDescriptor_fdc2de40fd7f3b21, []int{3}
     }
     func (m *TokenReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -159,7 +159,7 @@ var xxx_messageInfo_TokenReview proto.InternalMessageInfo
     func (m *TokenReviewSpec) Reset()      { *m = TokenReviewSpec{} }
     func (*TokenReviewSpec) ProtoMessage() {}
     func (*TokenReviewSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_77c9b20d3ad27844, []int{4}
    +	return fileDescriptor_fdc2de40fd7f3b21, []int{4}
     }
     func (m *TokenReviewSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -187,7 +187,7 @@ var xxx_messageInfo_TokenReviewSpec proto.InternalMessageInfo
     func (m *TokenReviewStatus) Reset()      { *m = TokenReviewStatus{} }
     func (*TokenReviewStatus) ProtoMessage() {}
     func (*TokenReviewStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_77c9b20d3ad27844, []int{5}
    +	return fileDescriptor_fdc2de40fd7f3b21, []int{5}
     }
     func (m *TokenReviewStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -215,7 +215,7 @@ var xxx_messageInfo_TokenReviewStatus proto.InternalMessageInfo
     func (m *UserInfo) Reset()      { *m = UserInfo{} }
     func (*UserInfo) ProtoMessage() {}
     func (*UserInfo) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_77c9b20d3ad27844, []int{6}
    +	return fileDescriptor_fdc2de40fd7f3b21, []int{6}
     }
     func (m *UserInfo) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -252,57 +252,56 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1beta1/generated.proto", fileDescriptor_77c9b20d3ad27844)
    -}
    -
    -var fileDescriptor_77c9b20d3ad27844 = []byte{
    -	// 725 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x4f, 0x4f, 0x13, 0x41,
    -	0x14, 0xef, 0xf6, 0x0f, 0x69, 0xa7, 0x56, 0x61, 0x12, 0x23, 0x69, 0xe2, 0x16, 0x6a, 0x62, 0x48,
    -	0x80, 0x59, 0x21, 0x04, 0x09, 0x9e, 0x58, 0x25, 0x04, 0x13, 0x62, 0x32, 0x05, 0x0f, 0xea, 0xc1,
    -	0xe9, 0xf6, 0xb1, 0x5d, 0x4b, 0x77, 0x37, 0xbb, 0xb3, 0x55, 0x6e, 0x7c, 0x04, 0x8f, 0x1e, 0x4d,
    -	0xfc, 0x24, 0xde, 0x38, 0x72, 0xc4, 0xc4, 0x34, 0xb2, 0x7e, 0x02, 0xbf, 0x81, 0x99, 0xd9, 0x61,
    -	0xdb, 0x82, 0x14, 0xb8, 0x78, 0xdb, 0xf9, 0xcd, 0xfb, 0xfd, 0xde, 0x7b, 0xbf, 0xf7, 0x32, 0x8b,
    -	0x5e, 0x76, 0xd6, 0x42, 0xe2, 0x78, 0x46, 0x27, 0x6a, 0x42, 0xe0, 0x02, 0x87, 0xd0, 0xe8, 0x81,
    -	0xdb, 0xf2, 0x02, 0x43, 0x5d, 0x30, 0xdf, 0x31, 0x58, 0xc4, 0xdb, 0xe0, 0x72, 0xc7, 0x62, 0xdc,
    -	0xf1, 0x5c, 0xa3, 0xb7, 0xd4, 0x04, 0xce, 0x96, 0x0c, 0x1b, 0x5c, 0x08, 0x18, 0x87, 0x16, 0xf1,
    -	0x03, 0x8f, 0x7b, 0x78, 0x36, 0xa1, 0x10, 0xe6, 0x3b, 0x64, 0x94, 0x42, 0x14, 0xa5, 0xba, 0x68,
    -	0x3b, 0xbc, 0x1d, 0x35, 0x89, 0xe5, 0x75, 0x0d, 0xdb, 0xb3, 0x3d, 0x43, 0x32, 0x9b, 0xd1, 0xbe,
    -	0x3c, 0xc9, 0x83, 0xfc, 0x4a, 0x14, 0xab, 0x0b, 0xe3, 0x8a, 0xb8, 0x98, 0xbf, 0xba, 0x32, 0x88,
    -	0xee, 0x32, 0xab, 0xed, 0xb8, 0x10, 0x1c, 0x1a, 0x7e, 0xc7, 0x16, 0x40, 0x68, 0x74, 0x81, 0xb3,
    -	0x7f, 0xb1, 0x8c, 0xab, 0x58, 0x41, 0xe4, 0x72, 0xa7, 0x0b, 0x97, 0x08, 0xab, 0xd7, 0x11, 0x42,
    -	0xab, 0x0d, 0x5d, 0x76, 0x91, 0x57, 0x7f, 0x8a, 0xd0, 0xe6, 0x27, 0x1e, 0xb0, 0xd7, 0xec, 0x20,
    -	0x02, 0x5c, 0x43, 0x05, 0x87, 0x43, 0x37, 0x9c, 0xd6, 0x66, 0x72, 0x73, 0x25, 0xb3, 0x14, 0xf7,
    -	0x6b, 0x85, 0x6d, 0x01, 0xd0, 0x04, 0x5f, 0x2f, 0x7e, 0xf9, 0x5a, 0xcb, 0x1c, 0xfd, 0x9c, 0xc9,
    -	0xd4, 0x7f, 0x68, 0x68, 0xaa, 0x01, 0x07, 0xfb, 0x8d, 0xa8, 0xf9, 0x01, 0x2c, 0x4e, 0xa1, 0xe7,
    -	0xc0, 0x47, 0xfc, 0x1e, 0x15, 0x45, 0x4b, 0x2d, 0xc6, 0xd9, 0xb4, 0x36, 0xa3, 0xcd, 0x95, 0x97,
    -	0x9f, 0x90, 0xc1, 0x00, 0xd2, 0xca, 0x88, 0xdf, 0xb1, 0x05, 0x10, 0x12, 0x11, 0x4d, 0x7a, 0x4b,
    -	0xe4, 0x95, 0x54, 0xd9, 0x01, 0xce, 0x4c, 0x7c, 0xdc, 0xaf, 0x65, 0xe2, 0x7e, 0x0d, 0x0d, 0x30,
    -	0x9a, 0xaa, 0xe2, 0x26, 0x9a, 0x08, 0x39, 0xe3, 0x51, 0x38, 0x9d, 0x95, 0xfa, 0xeb, 0xe4, 0xda,
    -	0x01, 0x93, 0x4b, 0x75, 0x36, 0xa4, 0x82, 0x79, 0x57, 0x65, 0x9a, 0x48, 0xce, 0x54, 0x29, 0xd7,
    -	0x3d, 0xf4, 0xe0, 0x0a, 0x0a, 0xde, 0x45, 0xc5, 0x28, 0x84, 0x60, 0xdb, 0xdd, 0xf7, 0x54, 0x83,
    -	0x8f, 0xc7, 0x16, 0x40, 0xf6, 0x54, 0xb4, 0x39, 0xa9, 0x92, 0x15, 0xcf, 0x11, 0x9a, 0x2a, 0xd5,
    -	0xbf, 0x65, 0x51, 0x79, 0xd7, 0xeb, 0x80, 0xfb, 0xdf, 0x6c, 0xdc, 0x45, 0xf9, 0xd0, 0x07, 0x4b,
    -	0x99, 0xb8, 0x7c, 0x03, 0x13, 0x87, 0xea, 0x6b, 0xf8, 0x60, 0x99, 0x77, 0x94, 0x7e, 0x5e, 0x9c,
    -	0xa8, 0x54, 0xc3, 0xef, 0xd2, 0xe1, 0xe4, 0xa4, 0xee, 0xca, 0x2d, 0x75, 0xc7, 0x8f, 0xc5, 0x42,
    -	0xf7, 0x2e, 0x14, 0x81, 0x1f, 0xa1, 0x02, 0x17, 0x90, 0x74, 0xa9, 0x64, 0x56, 0x14, 0xb3, 0x90,
    -	0xc4, 0x25, 0x77, 0x78, 0x1e, 0x95, 0x58, 0xd4, 0x72, 0xc0, 0xb5, 0x40, 0x6c, 0x8d, 0xd8, 0xec,
    -	0x4a, 0xdc, 0xaf, 0x95, 0x36, 0xce, 0x41, 0x3a, 0xb8, 0xaf, 0xff, 0xd1, 0xd0, 0xd4, 0xa5, 0x92,
    -	0xf0, 0x33, 0x54, 0x19, 0x2a, 0x1f, 0x5a, 0x32, 0x5f, 0xd1, 0xbc, 0xaf, 0xf2, 0x55, 0x36, 0x86,
    -	0x2f, 0xe9, 0x68, 0x2c, 0xde, 0x41, 0x79, 0x31, 0x69, 0xe5, 0xf5, 0xfc, 0x0d, 0x3c, 0x49, 0x97,
    -	0x26, 0x35, 0x59, 0x20, 0x54, 0xca, 0x8c, 0xb6, 0x93, 0x1f, 0xdf, 0x8e, 0x30, 0x08, 0x82, 0xc0,
    -	0x0b, 0xe4, 0x40, 0x86, 0x0c, 0xda, 0x14, 0x20, 0x4d, 0xee, 0xea, 0xdf, 0xb3, 0x28, 0xdd, 0x4a,
    -	0xbc, 0x90, 0x6c, 0xb8, 0xcb, 0xba, 0xa0, 0x5c, 0x1d, 0xd9, 0x5c, 0x81, 0xd3, 0x34, 0x02, 0x3f,
    -	0x44, 0xb9, 0xc8, 0x69, 0xc9, 0xd6, 0x4a, 0x66, 0x59, 0x05, 0xe6, 0xf6, 0xb6, 0x5f, 0x50, 0x81,
    -	0xe3, 0x3a, 0x9a, 0xb0, 0x03, 0x2f, 0xf2, 0xc5, 0x42, 0x88, 0x42, 0x91, 0x18, 0xeb, 0x96, 0x44,
    -	0xa8, 0xba, 0xc1, 0x6f, 0x51, 0x01, 0xc4, 0x13, 0x24, 0x7b, 0x29, 0x2f, 0xaf, 0xde, 0xc2, 0x1f,
    -	0x22, 0xdf, 0xae, 0x4d, 0x97, 0x07, 0x87, 0x43, 0xad, 0x09, 0x8c, 0x26, 0x9a, 0x55, 0x5b, 0xbd,
    -	0x6f, 0x32, 0x06, 0x4f, 0xa2, 0x5c, 0x07, 0x0e, 0x93, 0xb6, 0xa8, 0xf8, 0xc4, 0xcf, 0x51, 0xa1,
    -	0x27, 0x9e, 0x3e, 0x35, 0x9c, 0xc5, 0x1b, 0x24, 0x1f, 0xbc, 0x97, 0x34, 0xe1, 0xae, 0x67, 0xd7,
    -	0x34, 0x73, 0xeb, 0xf8, 0x4c, 0xcf, 0x9c, 0x9c, 0xe9, 0x99, 0xd3, 0x33, 0x3d, 0x73, 0x14, 0xeb,
    -	0xda, 0x71, 0xac, 0x6b, 0x27, 0xb1, 0xae, 0x9d, 0xc6, 0xba, 0xf6, 0x2b, 0xd6, 0xb5, 0xcf, 0xbf,
    -	0xf5, 0xcc, 0x9b, 0xd9, 0x6b, 0x7f, 0x60, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x19, 0x49,
    -	0x3f, 0xfd, 0x06, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/authentication/v1beta1/generated.proto", fileDescriptor_fdc2de40fd7f3b21)
    +}
    +
    +var fileDescriptor_fdc2de40fd7f3b21 = []byte{
    +	// 711 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcf, 0x4e, 0xdb, 0x4e,
    +	0x10, 0x8e, 0xf3, 0x07, 0x25, 0x9b, 0x5f, 0x7e, 0x85, 0x95, 0xaa, 0xa2, 0x48, 0x75, 0x20, 0x95,
    +	0x2a, 0x24, 0x60, 0xdd, 0x20, 0x44, 0x11, 0x3d, 0xe1, 0x16, 0x21, 0x0e, 0xa8, 0xd2, 0x06, 0x7a,
    +	0x68, 0x7b, 0xe8, 0xc6, 0x19, 0x1c, 0x37, 0xc4, 0xb6, 0xec, 0x75, 0x5a, 0x6e, 0x3c, 0x42, 0x8f,
    +	0x3d, 0x56, 0xea, 0x93, 0xf4, 0xc6, 0x91, 0x23, 0x95, 0xaa, 0xa8, 0xb8, 0x4f, 0xd0, 0x37, 0xa8,
    +	0x76, 0xbd, 0x38, 0x09, 0x94, 0x00, 0x97, 0xde, 0xbc, 0xdf, 0xce, 0xf7, 0xcd, 0xcc, 0x37, 0xa3,
    +	0x35, 0x6a, 0x74, 0xd7, 0x43, 0xe2, 0x78, 0x06, 0xf3, 0x1d, 0x83, 0x45, 0xbc, 0x03, 0x2e, 0x77,
    +	0x2c, 0xc6, 0x1d, 0xcf, 0x35, 0xfa, 0x8d, 0x16, 0x70, 0xd6, 0x30, 0x6c, 0x70, 0x21, 0x60, 0x1c,
    +	0xda, 0xc4, 0x0f, 0x3c, 0xee, 0xe1, 0xf9, 0x84, 0x42, 0x98, 0xef, 0x90, 0x71, 0x0a, 0x51, 0x94,
    +	0xea, 0xb2, 0xed, 0xf0, 0x4e, 0xd4, 0x22, 0x96, 0xd7, 0x33, 0x6c, 0xcf, 0xf6, 0x0c, 0xc9, 0x6c,
    +	0x45, 0x07, 0xf2, 0x24, 0x0f, 0xf2, 0x2b, 0x51, 0xac, 0x2e, 0x4d, 0x2a, 0xe2, 0x72, 0xfe, 0xea,
    +	0xea, 0x30, 0xba, 0xc7, 0xac, 0x8e, 0xe3, 0x42, 0x70, 0x64, 0xf8, 0x5d, 0x5b, 0x00, 0xa1, 0xd1,
    +	0x03, 0xce, 0xfe, 0xc6, 0x32, 0xae, 0x63, 0x05, 0x91, 0xcb, 0x9d, 0x1e, 0x5c, 0x21, 0xac, 0xdd,
    +	0x44, 0x08, 0xad, 0x0e, 0xf4, 0xd8, 0x65, 0x5e, 0xfd, 0x29, 0x42, 0x5b, 0x1f, 0x79, 0xc0, 0x5e,
    +	0xb1, 0xc3, 0x08, 0x70, 0x0d, 0x15, 0x1c, 0x0e, 0xbd, 0x70, 0x56, 0x9b, 0xcb, 0x2d, 0x94, 0xcc,
    +	0x52, 0x3c, 0xa8, 0x15, 0x76, 0x04, 0x40, 0x13, 0x7c, 0xa3, 0xf8, 0xf9, 0x4b, 0x2d, 0x73, 0xfc,
    +	0x63, 0x2e, 0x53, 0xff, 0xae, 0xa1, 0x99, 0x26, 0x1c, 0x1e, 0x34, 0xa3, 0xd6, 0x7b, 0xb0, 0x38,
    +	0x85, 0xbe, 0x03, 0x1f, 0xf0, 0x3b, 0x54, 0x14, 0x2d, 0xb5, 0x19, 0x67, 0xb3, 0xda, 0x9c, 0xb6,
    +	0x50, 0x5e, 0x79, 0x42, 0x86, 0x03, 0x48, 0x2b, 0x23, 0x7e, 0xd7, 0x16, 0x40, 0x48, 0x44, 0x34,
    +	0xe9, 0x37, 0xc8, 0x4b, 0xa9, 0xb2, 0x0b, 0x9c, 0x99, 0xf8, 0x64, 0x50, 0xcb, 0xc4, 0x83, 0x1a,
    +	0x1a, 0x62, 0x34, 0x55, 0xc5, 0x2d, 0x34, 0x15, 0x72, 0xc6, 0xa3, 0x70, 0x36, 0x2b, 0xf5, 0x37,
    +	0xc8, 0x8d, 0x03, 0x26, 0x57, 0xea, 0x6c, 0x4a, 0x05, 0xf3, 0x7f, 0x95, 0x69, 0x2a, 0x39, 0x53,
    +	0xa5, 0x5c, 0xf7, 0xd0, 0x83, 0x6b, 0x28, 0x78, 0x0f, 0x15, 0xa3, 0x10, 0x82, 0x1d, 0xf7, 0xc0,
    +	0x53, 0x0d, 0x3e, 0x9e, 0x58, 0x00, 0xd9, 0x57, 0xd1, 0xe6, 0xb4, 0x4a, 0x56, 0xbc, 0x40, 0x68,
    +	0xaa, 0x54, 0xff, 0x9a, 0x45, 0xe5, 0x3d, 0xaf, 0x0b, 0xee, 0x3f, 0xb3, 0x71, 0x0f, 0xe5, 0x43,
    +	0x1f, 0x2c, 0x65, 0xe2, 0xca, 0x2d, 0x4c, 0x1c, 0xa9, 0xaf, 0xe9, 0x83, 0x65, 0xfe, 0xa7, 0xf4,
    +	0xf3, 0xe2, 0x44, 0xa5, 0x1a, 0x7e, 0x9b, 0x0e, 0x27, 0x27, 0x75, 0x57, 0xef, 0xa8, 0x3b, 0x79,
    +	0x2c, 0x16, 0xba, 0x77, 0xa9, 0x08, 0xfc, 0x08, 0x15, 0xb8, 0x80, 0xa4, 0x4b, 0x25, 0xb3, 0xa2,
    +	0x98, 0x85, 0x24, 0x2e, 0xb9, 0xc3, 0x8b, 0xa8, 0xc4, 0xa2, 0xb6, 0x03, 0xae, 0x05, 0x62, 0x6b,
    +	0xc4, 0x66, 0x57, 0xe2, 0x41, 0xad, 0xb4, 0x79, 0x01, 0xd2, 0xe1, 0x7d, 0xfd, 0xb7, 0x86, 0x66,
    +	0xae, 0x94, 0x84, 0x9f, 0xa1, 0xca, 0x48, 0xf9, 0xd0, 0x96, 0xf9, 0x8a, 0xe6, 0x7d, 0x95, 0xaf,
    +	0xb2, 0x39, 0x7a, 0x49, 0xc7, 0x63, 0xf1, 0x2e, 0xca, 0x8b, 0x49, 0x2b, 0xaf, 0x17, 0x6f, 0xe1,
    +	0x49, 0xba, 0x34, 0xa9, 0xc9, 0x02, 0xa1, 0x52, 0x66, 0xbc, 0x9d, 0xfc, 0xe4, 0x76, 0x84, 0x41,
    +	0x10, 0x04, 0x5e, 0x20, 0x07, 0x32, 0x62, 0xd0, 0x96, 0x00, 0x69, 0x72, 0x57, 0xff, 0x96, 0x45,
    +	0xe9, 0x56, 0xe2, 0xa5, 0x64, 0xc3, 0x5d, 0xd6, 0x03, 0xe5, 0xea, 0xd8, 0xe6, 0x0a, 0x9c, 0xa6,
    +	0x11, 0xf8, 0x21, 0xca, 0x45, 0x4e, 0x5b, 0xb6, 0x56, 0x32, 0xcb, 0x2a, 0x30, 0xb7, 0xbf, 0xf3,
    +	0x82, 0x0a, 0x1c, 0xd7, 0xd1, 0x94, 0x1d, 0x78, 0x91, 0x2f, 0x16, 0x42, 0x14, 0x8a, 0xc4, 0x58,
    +	0xb7, 0x25, 0x42, 0xd5, 0x0d, 0x7e, 0x83, 0x0a, 0x20, 0x9e, 0x20, 0xd9, 0x4b, 0x79, 0x65, 0xed,
    +	0x0e, 0xfe, 0x10, 0xf9, 0x76, 0x6d, 0xb9, 0x3c, 0x38, 0x1a, 0x69, 0x4d, 0x60, 0x34, 0xd1, 0xac,
    +	0xda, 0xea, 0x7d, 0x93, 0x31, 0x78, 0x1a, 0xe5, 0xba, 0x70, 0x94, 0xb4, 0x45, 0xc5, 0x27, 0x7e,
    +	0x8e, 0x0a, 0x7d, 0xf1, 0xf4, 0xa9, 0xe1, 0x2c, 0xdf, 0x22, 0xf9, 0xf0, 0xbd, 0xa4, 0x09, 0x77,
    +	0x23, 0xbb, 0xae, 0x99, 0xdb, 0x27, 0xe7, 0x7a, 0xe6, 0xf4, 0x5c, 0xcf, 0x9c, 0x9d, 0xeb, 0x99,
    +	0xe3, 0x58, 0xd7, 0x4e, 0x62, 0x5d, 0x3b, 0x8d, 0x75, 0xed, 0x2c, 0xd6, 0xb5, 0x9f, 0xb1, 0xae,
    +	0x7d, 0xfa, 0xa5, 0x67, 0x5e, 0xcf, 0xdf, 0xf8, 0x03, 0xfb, 0x13, 0x00, 0x00, 0xff, 0xff, 0x45,
    +	0x72, 0x2b, 0xf2, 0xe4, 0x06, 0x00, 0x00,
     }
     
     func (m ExtraValue) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/authentication/v1beta1/generated.proto b/vendor/k8s.io/api/authentication/v1beta1/generated.proto
    index 53b4635d7e91..d0f6fe4402d8 100644
    --- a/vendor/k8s.io/api/authentication/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/authentication/v1beta1/generated.proto
    @@ -45,7 +45,7 @@ message SelfSubjectReview {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Status is filled in by the server with the user attributes.
       optional SelfSubjectReviewStatus status = 2;
    @@ -55,7 +55,7 @@ message SelfSubjectReview {
     message SelfSubjectReviewStatus {
       // User attributes of the user making this request.
       // +optional
    -  optional k8s.io.api.authentication.v1.UserInfo userInfo = 1;
    +  optional .k8s.io.api.authentication.v1.UserInfo userInfo = 1;
     }
     
     // TokenReview attempts to authenticate a token to a known user.
    @@ -65,7 +65,7 @@ message TokenReview {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated
       optional TokenReviewSpec spec = 2;
    @@ -87,6 +87,7 @@ message TokenReviewSpec {
       // this list. If no audiences are provided, the audience will default to the
       // audience of the Kubernetes apiserver.
       // +optional
    +  // +listType=atomic
       repeated string audiences = 2;
     }
     
    @@ -110,6 +111,7 @@ message TokenReviewStatus {
       // status.audience field where status.authenticated is "true", the token is
       // valid against the audience of the Kubernetes API server.
       // +optional
    +  // +listType=atomic
       repeated string audiences = 4;
     
       // Error indicates that the token couldn't be checked
    @@ -132,6 +134,7 @@ message UserInfo {
     
       // The names of groups this user is a part of.
       // +optional
    +  // +listType=atomic
       repeated string groups = 3;
     
       // Any additional information provided by the authenticator.
    diff --git a/vendor/k8s.io/api/authentication/v1beta1/types.go b/vendor/k8s.io/api/authentication/v1beta1/types.go
    index 5bce82e7cfdb..8038ef7d346c 100644
    --- a/vendor/k8s.io/api/authentication/v1beta1/types.go
    +++ b/vendor/k8s.io/api/authentication/v1beta1/types.go
    @@ -60,6 +60,7 @@ type TokenReviewSpec struct {
     	// this list. If no audiences are provided, the audience will default to the
     	// audience of the Kubernetes apiserver.
     	// +optional
    +	// +listType=atomic
     	Audiences []string `json:"audiences,omitempty" protobuf:"bytes,2,rep,name=audiences"`
     }
     
    @@ -81,6 +82,7 @@ type TokenReviewStatus struct {
     	// status.audience field where status.authenticated is "true", the token is
     	// valid against the audience of the Kubernetes API server.
     	// +optional
    +	// +listType=atomic
     	Audiences []string `json:"audiences,omitempty" protobuf:"bytes,4,rep,name=audiences"`
     	// Error indicates that the token couldn't be checked
     	// +optional
    @@ -100,6 +102,7 @@ type UserInfo struct {
     	UID string `json:"uid,omitempty" protobuf:"bytes,2,opt,name=uid"`
     	// The names of groups this user is a part of.
     	// +optional
    +	// +listType=atomic
     	Groups []string `json:"groups,omitempty" protobuf:"bytes,3,rep,name=groups"`
     	// Any additional information provided by the authenticator.
     	// +optional
    diff --git a/vendor/k8s.io/api/authorization/v1/doc.go b/vendor/k8s.io/api/authorization/v1/doc.go
    index cf100e6b7542..77e5a19c4c81 100644
    --- a/vendor/k8s.io/api/authorization/v1/doc.go
    +++ b/vendor/k8s.io/api/authorization/v1/doc.go
    @@ -17,7 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    -
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=authorization.k8s.io
     
     package v1 // import "k8s.io/api/authorization/v1"
    diff --git a/vendor/k8s.io/api/authorization/v1/generated.pb.go b/vendor/k8s.io/api/authorization/v1/generated.pb.go
    index 2e8e35a551ca..aed9a3a47616 100644
    --- a/vendor/k8s.io/api/authorization/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/authorization/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1/generated.proto
    +// source: k8s.io/api/authorization/v1/generated.proto
     
     package v1
     
    @@ -26,6 +26,7 @@ import (
     
     	proto "github.com/gogo/protobuf/proto"
     	github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     
     	math "math"
     	math_bits "math/bits"
    @@ -47,7 +48,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ExtraValue) Reset()      { *m = ExtraValue{} }
     func (*ExtraValue) ProtoMessage() {}
     func (*ExtraValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{0}
    +	return fileDescriptor_aafd0e5e70cec678, []int{0}
     }
     func (m *ExtraValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -72,10 +73,66 @@ func (m *ExtraValue) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ExtraValue proto.InternalMessageInfo
     
    +func (m *FieldSelectorAttributes) Reset()      { *m = FieldSelectorAttributes{} }
    +func (*FieldSelectorAttributes) ProtoMessage() {}
    +func (*FieldSelectorAttributes) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_aafd0e5e70cec678, []int{1}
    +}
    +func (m *FieldSelectorAttributes) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *FieldSelectorAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *FieldSelectorAttributes) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_FieldSelectorAttributes.Merge(m, src)
    +}
    +func (m *FieldSelectorAttributes) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *FieldSelectorAttributes) XXX_DiscardUnknown() {
    +	xxx_messageInfo_FieldSelectorAttributes.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_FieldSelectorAttributes proto.InternalMessageInfo
    +
    +func (m *LabelSelectorAttributes) Reset()      { *m = LabelSelectorAttributes{} }
    +func (*LabelSelectorAttributes) ProtoMessage() {}
    +func (*LabelSelectorAttributes) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_aafd0e5e70cec678, []int{2}
    +}
    +func (m *LabelSelectorAttributes) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *LabelSelectorAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *LabelSelectorAttributes) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_LabelSelectorAttributes.Merge(m, src)
    +}
    +func (m *LabelSelectorAttributes) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *LabelSelectorAttributes) XXX_DiscardUnknown() {
    +	xxx_messageInfo_LabelSelectorAttributes.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_LabelSelectorAttributes proto.InternalMessageInfo
    +
     func (m *LocalSubjectAccessReview) Reset()      { *m = LocalSubjectAccessReview{} }
     func (*LocalSubjectAccessReview) ProtoMessage() {}
     func (*LocalSubjectAccessReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{1}
    +	return fileDescriptor_aafd0e5e70cec678, []int{3}
     }
     func (m *LocalSubjectAccessReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +160,7 @@ var xxx_messageInfo_LocalSubjectAccessReview proto.InternalMessageInfo
     func (m *NonResourceAttributes) Reset()      { *m = NonResourceAttributes{} }
     func (*NonResourceAttributes) ProtoMessage() {}
     func (*NonResourceAttributes) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{2}
    +	return fileDescriptor_aafd0e5e70cec678, []int{4}
     }
     func (m *NonResourceAttributes) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -131,7 +188,7 @@ var xxx_messageInfo_NonResourceAttributes proto.InternalMessageInfo
     func (m *NonResourceRule) Reset()      { *m = NonResourceRule{} }
     func (*NonResourceRule) ProtoMessage() {}
     func (*NonResourceRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{3}
    +	return fileDescriptor_aafd0e5e70cec678, []int{5}
     }
     func (m *NonResourceRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -159,7 +216,7 @@ var xxx_messageInfo_NonResourceRule proto.InternalMessageInfo
     func (m *ResourceAttributes) Reset()      { *m = ResourceAttributes{} }
     func (*ResourceAttributes) ProtoMessage() {}
     func (*ResourceAttributes) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{4}
    +	return fileDescriptor_aafd0e5e70cec678, []int{6}
     }
     func (m *ResourceAttributes) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -187,7 +244,7 @@ var xxx_messageInfo_ResourceAttributes proto.InternalMessageInfo
     func (m *ResourceRule) Reset()      { *m = ResourceRule{} }
     func (*ResourceRule) ProtoMessage() {}
     func (*ResourceRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{5}
    +	return fileDescriptor_aafd0e5e70cec678, []int{7}
     }
     func (m *ResourceRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -215,7 +272,7 @@ var xxx_messageInfo_ResourceRule proto.InternalMessageInfo
     func (m *SelfSubjectAccessReview) Reset()      { *m = SelfSubjectAccessReview{} }
     func (*SelfSubjectAccessReview) ProtoMessage() {}
     func (*SelfSubjectAccessReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{6}
    +	return fileDescriptor_aafd0e5e70cec678, []int{8}
     }
     func (m *SelfSubjectAccessReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -243,7 +300,7 @@ var xxx_messageInfo_SelfSubjectAccessReview proto.InternalMessageInfo
     func (m *SelfSubjectAccessReviewSpec) Reset()      { *m = SelfSubjectAccessReviewSpec{} }
     func (*SelfSubjectAccessReviewSpec) ProtoMessage() {}
     func (*SelfSubjectAccessReviewSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{7}
    +	return fileDescriptor_aafd0e5e70cec678, []int{9}
     }
     func (m *SelfSubjectAccessReviewSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -271,7 +328,7 @@ var xxx_messageInfo_SelfSubjectAccessReviewSpec proto.InternalMessageInfo
     func (m *SelfSubjectRulesReview) Reset()      { *m = SelfSubjectRulesReview{} }
     func (*SelfSubjectRulesReview) ProtoMessage() {}
     func (*SelfSubjectRulesReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{8}
    +	return fileDescriptor_aafd0e5e70cec678, []int{10}
     }
     func (m *SelfSubjectRulesReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -299,7 +356,7 @@ var xxx_messageInfo_SelfSubjectRulesReview proto.InternalMessageInfo
     func (m *SelfSubjectRulesReviewSpec) Reset()      { *m = SelfSubjectRulesReviewSpec{} }
     func (*SelfSubjectRulesReviewSpec) ProtoMessage() {}
     func (*SelfSubjectRulesReviewSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{9}
    +	return fileDescriptor_aafd0e5e70cec678, []int{11}
     }
     func (m *SelfSubjectRulesReviewSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -327,7 +384,7 @@ var xxx_messageInfo_SelfSubjectRulesReviewSpec proto.InternalMessageInfo
     func (m *SubjectAccessReview) Reset()      { *m = SubjectAccessReview{} }
     func (*SubjectAccessReview) ProtoMessage() {}
     func (*SubjectAccessReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{10}
    +	return fileDescriptor_aafd0e5e70cec678, []int{12}
     }
     func (m *SubjectAccessReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -355,7 +412,7 @@ var xxx_messageInfo_SubjectAccessReview proto.InternalMessageInfo
     func (m *SubjectAccessReviewSpec) Reset()      { *m = SubjectAccessReviewSpec{} }
     func (*SubjectAccessReviewSpec) ProtoMessage() {}
     func (*SubjectAccessReviewSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{11}
    +	return fileDescriptor_aafd0e5e70cec678, []int{13}
     }
     func (m *SubjectAccessReviewSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -383,7 +440,7 @@ var xxx_messageInfo_SubjectAccessReviewSpec proto.InternalMessageInfo
     func (m *SubjectAccessReviewStatus) Reset()      { *m = SubjectAccessReviewStatus{} }
     func (*SubjectAccessReviewStatus) ProtoMessage() {}
     func (*SubjectAccessReviewStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{12}
    +	return fileDescriptor_aafd0e5e70cec678, []int{14}
     }
     func (m *SubjectAccessReviewStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -411,7 +468,7 @@ var xxx_messageInfo_SubjectAccessReviewStatus proto.InternalMessageInfo
     func (m *SubjectRulesReviewStatus) Reset()      { *m = SubjectRulesReviewStatus{} }
     func (*SubjectRulesReviewStatus) ProtoMessage() {}
     func (*SubjectRulesReviewStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e50da13573e369bd, []int{13}
    +	return fileDescriptor_aafd0e5e70cec678, []int{15}
     }
     func (m *SubjectRulesReviewStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -438,6 +495,8 @@ var xxx_messageInfo_SubjectRulesReviewStatus proto.InternalMessageInfo
     
     func init() {
     	proto.RegisterType((*ExtraValue)(nil), "k8s.io.api.authorization.v1.ExtraValue")
    +	proto.RegisterType((*FieldSelectorAttributes)(nil), "k8s.io.api.authorization.v1.FieldSelectorAttributes")
    +	proto.RegisterType((*LabelSelectorAttributes)(nil), "k8s.io.api.authorization.v1.LabelSelectorAttributes")
     	proto.RegisterType((*LocalSubjectAccessReview)(nil), "k8s.io.api.authorization.v1.LocalSubjectAccessReview")
     	proto.RegisterType((*NonResourceAttributes)(nil), "k8s.io.api.authorization.v1.NonResourceAttributes")
     	proto.RegisterType((*NonResourceRule)(nil), "k8s.io.api.authorization.v1.NonResourceRule")
    @@ -455,83 +514,89 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1/generated.proto", fileDescriptor_e50da13573e369bd)
    -}
    -
    -var fileDescriptor_e50da13573e369bd = []byte{
    -	// 1140 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0x4f, 0x6f, 0x1b, 0x45,
    -	0x14, 0xf7, 0xfa, 0x4f, 0x62, 0x8f, 0x1b, 0x92, 0x4e, 0x94, 0x66, 0x9b, 0x08, 0x3b, 0x5a, 0x24,
    -	0x48, 0x45, 0xd9, 0x25, 0x56, 0xdb, 0x44, 0x95, 0x2a, 0x64, 0x2b, 0x11, 0x8a, 0xd4, 0x96, 0x6a,
    -	0xa2, 0x44, 0xa2, 0x08, 0xc4, 0x78, 0x3d, 0xb1, 0x97, 0xd8, 0xbb, 0xcb, 0xcc, 0xac, 0x43, 0x38,
    -	0x55, 0xe2, 0x0b, 0x70, 0xe4, 0xc0, 0x81, 0x6f, 0xc0, 0x05, 0x89, 0x1b, 0x07, 0x0e, 0x28, 0xc7,
    -	0x1e, 0x8b, 0x84, 0x2c, 0xb2, 0x9c, 0xf9, 0x0e, 0x68, 0x66, 0xc7, 0xde, 0x75, 0xb2, 0x76, 0x13,
    -	0x0e, 0xed, 0xa5, 0x37, 0xef, 0xfb, 0xfd, 0xde, 0x9b, 0x37, 0xef, 0xdf, 0x3c, 0x83, 0xed, 0xa3,
    -	0x2d, 0x66, 0x3a, 0x9e, 0x75, 0x14, 0x34, 0x09, 0x75, 0x09, 0x27, 0xcc, 0xea, 0x13, 0xb7, 0xe5,
    -	0x51, 0x4b, 0x01, 0xd8, 0x77, 0x2c, 0x1c, 0xf0, 0x8e, 0x47, 0x9d, 0x6f, 0x31, 0x77, 0x3c, 0xd7,
    -	0xea, 0x6f, 0x58, 0x6d, 0xe2, 0x12, 0x8a, 0x39, 0x69, 0x99, 0x3e, 0xf5, 0xb8, 0x07, 0x57, 0x23,
    -	0xb2, 0x89, 0x7d, 0xc7, 0x1c, 0x23, 0x9b, 0xfd, 0x8d, 0x95, 0x0f, 0xda, 0x0e, 0xef, 0x04, 0x4d,
    -	0xd3, 0xf6, 0x7a, 0x56, 0xdb, 0x6b, 0x7b, 0x96, 0xd4, 0x69, 0x06, 0x87, 0xf2, 0x4b, 0x7e, 0xc8,
    -	0x5f, 0x91, 0xad, 0x95, 0x3b, 0xf1, 0xc1, 0x3d, 0x6c, 0x77, 0x1c, 0x97, 0xd0, 0x13, 0xcb, 0x3f,
    -	0x6a, 0x0b, 0x01, 0xb3, 0x7a, 0x84, 0xe3, 0x14, 0x0f, 0x56, 0xac, 0x49, 0x5a, 0x34, 0x70, 0xb9,
    -	0xd3, 0x23, 0x17, 0x14, 0xee, 0xbd, 0x4c, 0x81, 0xd9, 0x1d, 0xd2, 0xc3, 0xe7, 0xf5, 0x8c, 0x4d,
    -	0x00, 0x76, 0xbe, 0xe1, 0x14, 0x1f, 0xe0, 0x6e, 0x40, 0x60, 0x15, 0x14, 0x1c, 0x4e, 0x7a, 0x4c,
    -	0xd7, 0xd6, 0x72, 0xeb, 0xa5, 0x46, 0x29, 0x1c, 0x54, 0x0b, 0xbb, 0x42, 0x80, 0x22, 0xf9, 0xfd,
    -	0xe2, 0x0f, 0x3f, 0x55, 0x33, 0xcf, 0xfe, 0x5a, 0xcb, 0x18, 0xbf, 0x64, 0x81, 0xfe, 0xd0, 0xb3,
    -	0x71, 0x77, 0x2f, 0x68, 0x7e, 0x45, 0x6c, 0x5e, 0xb7, 0x6d, 0xc2, 0x18, 0x22, 0x7d, 0x87, 0x1c,
    -	0xc3, 0x2f, 0x41, 0x51, 0xdc, 0xac, 0x85, 0x39, 0xd6, 0xb5, 0x35, 0x6d, 0xbd, 0x5c, 0xfb, 0xd0,
    -	0x8c, 0x63, 0x3a, 0x72, 0xd0, 0xf4, 0x8f, 0xda, 0x42, 0xc0, 0x4c, 0xc1, 0x36, 0xfb, 0x1b, 0xe6,
    -	0x27, 0xd2, 0xd6, 0x23, 0xc2, 0x71, 0x03, 0x9e, 0x0e, 0xaa, 0x99, 0x70, 0x50, 0x05, 0xb1, 0x0c,
    -	0x8d, 0xac, 0xc2, 0x03, 0x90, 0x67, 0x3e, 0xb1, 0xf5, 0xac, 0xb4, 0x7e, 0xc7, 0x9c, 0x92, 0x31,
    -	0x33, 0xc5, 0xc3, 0x3d, 0x9f, 0xd8, 0x8d, 0x6b, 0xea, 0x84, 0xbc, 0xf8, 0x42, 0xd2, 0x1e, 0xfc,
    -	0x02, 0xcc, 0x30, 0x8e, 0x79, 0xc0, 0xf4, 0x9c, 0xb4, 0x7c, 0xef, 0xca, 0x96, 0xa5, 0x76, 0xe3,
    -	0x2d, 0x65, 0x7b, 0x26, 0xfa, 0x46, 0xca, 0xaa, 0xf1, 0x19, 0x58, 0x7a, 0xec, 0xb9, 0x88, 0x30,
    -	0x2f, 0xa0, 0x36, 0xa9, 0x73, 0x4e, 0x9d, 0x66, 0xc0, 0x09, 0x83, 0x6b, 0x20, 0xef, 0x63, 0xde,
    -	0x91, 0xe1, 0x2a, 0xc5, 0xae, 0x3d, 0xc1, 0xbc, 0x83, 0x24, 0x22, 0x18, 0x7d, 0x42, 0x9b, 0xf2,
    -	0xca, 0x09, 0xc6, 0x01, 0xa1, 0x4d, 0x24, 0x11, 0xe3, 0x6b, 0x30, 0x9f, 0x30, 0x8e, 0x82, 0xae,
    -	0xcc, 0xa8, 0x80, 0xc6, 0x32, 0x2a, 0x34, 0x18, 0x8a, 0xe4, 0xf0, 0x01, 0x98, 0x77, 0x63, 0x9d,
    -	0x7d, 0xf4, 0x90, 0xe9, 0x59, 0x49, 0x5d, 0x0c, 0x07, 0xd5, 0xa4, 0x39, 0x01, 0xa1, 0xf3, 0x5c,
    -	0xe3, 0xb7, 0x2c, 0x80, 0x29, 0xb7, 0xb1, 0x40, 0xc9, 0xc5, 0x3d, 0xc2, 0x7c, 0x6c, 0x13, 0x75,
    -	0xa5, 0xeb, 0xca, 0xe1, 0xd2, 0xe3, 0x21, 0x80, 0x62, 0xce, 0xcb, 0x2f, 0x07, 0xdf, 0x01, 0x85,
    -	0x36, 0xf5, 0x02, 0x5f, 0x26, 0xa6, 0xd4, 0x98, 0x53, 0x94, 0xc2, 0xc7, 0x42, 0x88, 0x22, 0x0c,
    -	0xde, 0x02, 0xb3, 0x7d, 0x42, 0x99, 0xe3, 0xb9, 0x7a, 0x5e, 0xd2, 0xe6, 0x15, 0x6d, 0xf6, 0x20,
    -	0x12, 0xa3, 0x21, 0x0e, 0x6f, 0x83, 0x22, 0x55, 0x8e, 0xeb, 0x05, 0xc9, 0x5d, 0x50, 0xdc, 0xe2,
    -	0x28, 0x82, 0x23, 0x06, 0xbc, 0x0b, 0xca, 0x2c, 0x68, 0x8e, 0x14, 0x66, 0xa4, 0xc2, 0xa2, 0x52,
    -	0x28, 0xef, 0xc5, 0x10, 0x4a, 0xf2, 0xc4, 0xb5, 0xc4, 0x1d, 0xf5, 0xd9, 0xf1, 0x6b, 0x89, 0x10,
    -	0x20, 0x89, 0x18, 0xbf, 0x6b, 0xe0, 0xda, 0xd5, 0x32, 0xf6, 0x3e, 0x28, 0x61, 0xdf, 0x91, 0xd7,
    -	0x1e, 0xe6, 0x6a, 0x4e, 0xc4, 0xb5, 0xfe, 0x64, 0x37, 0x12, 0xa2, 0x18, 0x17, 0xe4, 0xa1, 0x33,
    -	0xa2, 0xa4, 0x47, 0xe4, 0xe1, 0x91, 0x0c, 0xc5, 0x38, 0xdc, 0x04, 0x73, 0xc3, 0x0f, 0x99, 0x24,
    -	0x3d, 0x2f, 0x15, 0xae, 0x87, 0x83, 0xea, 0x1c, 0x4a, 0x02, 0x68, 0x9c, 0x67, 0xfc, 0x9a, 0x05,
    -	0xcb, 0x7b, 0xa4, 0x7b, 0xf8, 0x7a, 0x66, 0xc1, 0xd3, 0xb1, 0x59, 0xb0, 0x35, 0xbd, 0x63, 0xd3,
    -	0xbd, 0x7c, 0x6d, 0xf3, 0xe0, 0xc7, 0x2c, 0x58, 0x9d, 0xe2, 0x13, 0x3c, 0x06, 0x90, 0x5e, 0x68,
    -	0x2f, 0x15, 0x47, 0x6b, 0xaa, 0x2f, 0x17, 0xbb, 0xb2, 0x71, 0x23, 0x1c, 0x54, 0x53, 0xba, 0x15,
    -	0xa5, 0x1c, 0x01, 0xbf, 0xd3, 0xc0, 0x92, 0x9b, 0x36, 0xa9, 0x54, 0x98, 0x6b, 0x53, 0x0f, 0x4f,
    -	0x9d, 0x71, 0x8d, 0x9b, 0xe1, 0xa0, 0x9a, 0x3e, 0xfe, 0x50, 0xfa, 0x59, 0xe2, 0x95, 0xb9, 0x91,
    -	0x08, 0x8f, 0x68, 0x90, 0x57, 0x57, 0x57, 0x9f, 0x8e, 0xd5, 0xd5, 0xe6, 0x65, 0xeb, 0x2a, 0xe1,
    -	0xe4, 0xc4, 0xb2, 0xfa, 0xfc, 0x5c, 0x59, 0xdd, 0xbd, 0x4c, 0x59, 0x25, 0x0d, 0x4f, 0xaf, 0xaa,
    -	0x47, 0x60, 0x65, 0xb2, 0x43, 0x57, 0x1e, 0xce, 0xc6, 0xcf, 0x59, 0xb0, 0xf8, 0xe6, 0x99, 0xbf,
    -	0x4a, 0x5b, 0xff, 0x91, 0x07, 0xcb, 0x6f, 0x5a, 0x7a, 0xd2, 0xa2, 0x13, 0x30, 0x42, 0xd5, 0x33,
    -	0x3e, 0x4a, 0xce, 0x3e, 0x23, 0x14, 0x49, 0x04, 0x1a, 0x60, 0xa6, 0x1d, 0xbd, 0x6e, 0xd1, 0xfb,
    -	0x03, 0x44, 0x80, 0xd5, 0xd3, 0xa6, 0x10, 0xd8, 0x02, 0x05, 0x22, 0xf6, 0x56, 0xbd, 0xb0, 0x96,
    -	0x5b, 0x2f, 0xd7, 0x3e, 0xfa, 0x3f, 0x95, 0x61, 0xca, 0xcd, 0x77, 0xc7, 0xe5, 0xf4, 0x24, 0x5e,
    -	0x27, 0xa4, 0x0c, 0x45, 0xc6, 0xe1, 0xdb, 0x20, 0x17, 0x38, 0x2d, 0xf5, 0xda, 0x97, 0x15, 0x25,
    -	0xb7, 0xbf, 0xbb, 0x8d, 0x84, 0x7c, 0x05, 0xab, 0xe5, 0x59, 0x9a, 0x80, 0x0b, 0x20, 0x77, 0x44,
    -	0x4e, 0xa2, 0x86, 0x42, 0xe2, 0x27, 0x7c, 0x00, 0x0a, 0x7d, 0xb1, 0x57, 0xab, 0xf8, 0xbe, 0x37,
    -	0xd5, 0xc9, 0x78, 0x0d, 0x47, 0x91, 0xd6, 0xfd, 0xec, 0x96, 0x66, 0xfc, 0xa9, 0x81, 0x9b, 0x13,
    -	0xcb, 0x4f, 0xac, 0x3b, 0xb8, 0xdb, 0xf5, 0x8e, 0x49, 0x4b, 0x1e, 0x5b, 0x8c, 0xd7, 0x9d, 0x7a,
    -	0x24, 0x46, 0x43, 0x1c, 0xbe, 0x0b, 0x66, 0x5a, 0xc4, 0x75, 0x48, 0x4b, 0x2e, 0x46, 0xc5, 0xb8,
    -	0x72, 0xb7, 0xa5, 0x14, 0x29, 0x54, 0xf0, 0x28, 0xc1, 0xcc, 0x73, 0xd5, 0x2a, 0x36, 0xe2, 0x21,
    -	0x29, 0x45, 0x0a, 0x85, 0x75, 0x30, 0x4f, 0x84, 0x9b, 0xd2, 0xff, 0x1d, 0x4a, 0xbd, 0x61, 0x46,
    -	0x97, 0x95, 0xc2, 0xfc, 0xce, 0x38, 0x8c, 0xce, 0xf3, 0x8d, 0x7f, 0xb3, 0x40, 0x9f, 0x34, 0xda,
    -	0xe0, 0x61, 0xbc, 0x8b, 0x48, 0x50, 0xae, 0x43, 0xe5, 0xda, 0xad, 0x4b, 0x35, 0x88, 0xd0, 0x68,
    -	0x2c, 0x29, 0x47, 0xe6, 0x92, 0xd2, 0xc4, 0xea, 0x22, 0x3f, 0x21, 0x05, 0x0b, 0xee, 0xf8, 0xce,
    -	0x1c, 0x2d, 0x55, 0xe5, 0xda, 0xed, 0xcb, 0xb6, 0x83, 0x3c, 0x4d, 0x57, 0xa7, 0x2d, 0x9c, 0x03,
    -	0x18, 0xba, 0x60, 0x1f, 0xd6, 0x00, 0x70, 0x5c, 0xdb, 0xeb, 0xf9, 0x5d, 0xc2, 0x89, 0x0c, 0x5b,
    -	0x31, 0x9e, 0x83, 0xbb, 0x23, 0x04, 0x25, 0x58, 0x69, 0xf1, 0xce, 0x5f, 0x2d, 0xde, 0x8d, 0xfa,
    -	0xe9, 0x59, 0x25, 0xf3, 0xfc, 0xac, 0x92, 0x79, 0x71, 0x56, 0xc9, 0x3c, 0x0b, 0x2b, 0xda, 0x69,
    -	0x58, 0xd1, 0x9e, 0x87, 0x15, 0xed, 0x45, 0x58, 0xd1, 0xfe, 0x0e, 0x2b, 0xda, 0xf7, 0xff, 0x54,
    -	0x32, 0x4f, 0x57, 0xa7, 0xfc, 0x53, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xea, 0x67, 0x63, 0x89,
    -	0x60, 0x0f, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/authorization/v1/generated.proto", fileDescriptor_aafd0e5e70cec678)
    +}
    +
    +var fileDescriptor_aafd0e5e70cec678 = []byte{
    +	// 1247 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0xcf, 0x6f, 0x1b, 0xc5,
    +	0x17, 0xf7, 0xfa, 0x47, 0x62, 0x8f, 0xe3, 0x6f, 0xd2, 0xc9, 0x37, 0xcd, 0x36, 0x11, 0x76, 0x64,
    +	0x24, 0x48, 0xd5, 0xb2, 0x26, 0x51, 0xdb, 0x44, 0x95, 0x0a, 0xf2, 0xaa, 0x01, 0x45, 0x4a, 0x4b,
    +	0x35, 0x51, 0x22, 0x51, 0x04, 0x62, 0xbc, 0x9e, 0xd8, 0x4b, 0xec, 0xdd, 0xed, 0xcc, 0xac, 0xd3,
    +	0x70, 0xaa, 0xc4, 0x3f, 0xc0, 0x91, 0x43, 0x0f, 0xfc, 0x07, 0x5c, 0x90, 0xb8, 0x73, 0x40, 0x11,
    +	0xa7, 0x1e, 0x8b, 0x84, 0x2c, 0x62, 0xce, 0xfc, 0x0f, 0x68, 0x66, 0xc7, 0xde, 0xdd, 0xc4, 0x76,
    +	0x6d, 0x0e, 0x94, 0x43, 0x6f, 0x9e, 0xf7, 0x79, 0xbf, 0xe7, 0xbd, 0xb7, 0x6f, 0x0c, 0x6e, 0x1c,
    +	0x6f, 0x33, 0xc3, 0x76, 0x2b, 0xd8, 0xb3, 0x2b, 0xd8, 0xe7, 0x4d, 0x97, 0xda, 0x5f, 0x63, 0x6e,
    +	0xbb, 0x4e, 0xa5, 0xb3, 0x51, 0x69, 0x10, 0x87, 0x50, 0xcc, 0x49, 0xdd, 0xf0, 0xa8, 0xcb, 0x5d,
    +	0xb8, 0x1a, 0x30, 0x1b, 0xd8, 0xb3, 0x8d, 0x18, 0xb3, 0xd1, 0xd9, 0x58, 0x79, 0xaf, 0x61, 0xf3,
    +	0xa6, 0x5f, 0x33, 0x2c, 0xb7, 0x5d, 0x69, 0xb8, 0x0d, 0xb7, 0x22, 0x65, 0x6a, 0xfe, 0x91, 0x3c,
    +	0xc9, 0x83, 0xfc, 0x15, 0xe8, 0x5a, 0xb9, 0x15, 0x1a, 0x6e, 0x63, 0xab, 0x69, 0x3b, 0x84, 0x9e,
    +	0x56, 0xbc, 0xe3, 0x86, 0x20, 0xb0, 0x4a, 0x9b, 0x70, 0x3c, 0xc4, 0x83, 0x95, 0xca, 0x28, 0x29,
    +	0xea, 0x3b, 0xdc, 0x6e, 0x93, 0x4b, 0x02, 0x77, 0x5e, 0x25, 0xc0, 0xac, 0x26, 0x69, 0xe3, 0x8b,
    +	0x72, 0xe5, 0x2d, 0x00, 0x76, 0x9e, 0x72, 0x8a, 0x0f, 0x71, 0xcb, 0x27, 0xb0, 0x04, 0x32, 0x36,
    +	0x27, 0x6d, 0xa6, 0x6b, 0x6b, 0xa9, 0xf5, 0x9c, 0x99, 0xeb, 0x75, 0x4b, 0x99, 0x5d, 0x41, 0x40,
    +	0x01, 0xfd, 0x6e, 0xf6, 0xbb, 0xef, 0x4b, 0x89, 0x67, 0xbf, 0xaf, 0x25, 0xca, 0xbf, 0x6a, 0x60,
    +	0xf9, 0x23, 0x9b, 0xb4, 0xea, 0xfb, 0xa4, 0x45, 0x2c, 0xee, 0xd2, 0x2a, 0xe7, 0xd4, 0xae, 0xf9,
    +	0x9c, 0x30, 0x78, 0x1b, 0xe4, 0x29, 0x3e, 0xe9, 0x03, 0xba, 0xb6, 0xa6, 0xad, 0xe7, 0xcc, 0xc5,
    +	0xb3, 0x6e, 0x29, 0xd1, 0xeb, 0x96, 0xf2, 0x28, 0x84, 0x50, 0x94, 0x0f, 0x3e, 0x05, 0x73, 0x94,
    +	0x3c, 0xf1, 0x6d, 0x4a, 0xda, 0xc4, 0xe1, 0x4c, 0x4f, 0xae, 0xa5, 0xd6, 0xf3, 0x9b, 0x1f, 0x18,
    +	0xe1, 0x6d, 0x0c, 0x42, 0x33, 0xbc, 0xe3, 0x86, 0x20, 0x30, 0x43, 0x64, 0xd0, 0xe8, 0x6c, 0x18,
    +	0x31, 0x5f, 0x50, 0xa8, 0xc6, 0xfc, 0xbf, 0xb2, 0x3b, 0x17, 0x21, 0x32, 0x14, 0xb3, 0x24, 0x83,
    +	0xd9, 0xc3, 0x35, 0xd2, 0xfa, 0x8f, 0x04, 0x13, 0xf3, 0x65, 0xda, 0x60, 0x7e, 0x4c, 0x02, 0x7d,
    +	0xcf, 0xb5, 0x70, 0x6b, 0xdf, 0xaf, 0x7d, 0x45, 0x2c, 0x5e, 0xb5, 0x2c, 0xc2, 0x18, 0x22, 0x1d,
    +	0x9b, 0x9c, 0xc0, 0x2f, 0x41, 0x56, 0x18, 0xa9, 0x63, 0x8e, 0x65, 0x28, 0xf9, 0xcd, 0xf7, 0x27,
    +	0x73, 0xe9, 0x13, 0xa9, 0xeb, 0x01, 0xe1, 0xd8, 0x84, 0xca, 0x09, 0x10, 0xd2, 0xd0, 0x40, 0x2b,
    +	0x3c, 0x04, 0x69, 0xe6, 0x11, 0x4b, 0x4f, 0x4a, 0xed, 0xb7, 0x8c, 0x31, 0xbd, 0x64, 0x0c, 0xf1,
    +	0x70, 0xdf, 0x23, 0x96, 0x39, 0xa7, 0x2c, 0xa4, 0xc5, 0x09, 0x49, 0x7d, 0xf0, 0x0b, 0x30, 0xc3,
    +	0x38, 0xe6, 0x3e, 0xd3, 0x53, 0x52, 0xf3, 0x9d, 0xa9, 0x35, 0x4b, 0x69, 0xf3, 0x7f, 0x4a, 0xf7,
    +	0x4c, 0x70, 0x46, 0x4a, 0x6b, 0xf9, 0x33, 0xb0, 0xf4, 0xd0, 0x75, 0x10, 0x61, 0xae, 0x4f, 0x2d,
    +	0x12, 0x29, 0x80, 0x35, 0x90, 0xf6, 0x30, 0x6f, 0xaa, 0x9b, 0x1f, 0xb8, 0xf6, 0x08, 0xf3, 0x26,
    +	0x92, 0x88, 0xe0, 0xe8, 0x10, 0x5a, 0x93, 0x21, 0x47, 0x38, 0x0e, 0x09, 0xad, 0x21, 0x89, 0x94,
    +	0x9f, 0x80, 0xf9, 0x88, 0x72, 0xe4, 0xb7, 0x64, 0xaf, 0x09, 0x28, 0xd6, 0x6b, 0x42, 0x82, 0xa1,
    +	0x80, 0x0e, 0xef, 0x81, 0x79, 0x27, 0x94, 0x39, 0x40, 0x7b, 0x41, 0x11, 0xe5, 0xcc, 0xc5, 0x5e,
    +	0xb7, 0x14, 0x55, 0x27, 0x20, 0x74, 0x91, 0xb7, 0xfc, 0x3c, 0x0d, 0xe0, 0x90, 0x68, 0x2a, 0x20,
    +	0xe7, 0xe0, 0x36, 0x61, 0x1e, 0xb6, 0x88, 0x0a, 0xe9, 0x8a, 0x72, 0x38, 0xf7, 0xb0, 0x0f, 0xa0,
    +	0x90, 0xe7, 0xd5, 0xc1, 0xc1, 0xb7, 0x41, 0xa6, 0x41, 0x5d, 0xdf, 0x93, 0x17, 0x93, 0x33, 0x0b,
    +	0x8a, 0x25, 0xf3, 0xb1, 0x20, 0xa2, 0x00, 0x83, 0xd7, 0xc1, 0x6c, 0x87, 0x50, 0x66, 0xbb, 0x8e,
    +	0x9e, 0x96, 0x6c, 0xf3, 0x8a, 0x6d, 0xf6, 0x30, 0x20, 0xa3, 0x3e, 0x0e, 0x6f, 0x82, 0x2c, 0x55,
    +	0x8e, 0xeb, 0x19, 0xc9, 0xbb, 0xa0, 0x78, 0xb3, 0x83, 0x0c, 0x0e, 0x38, 0x44, 0x7f, 0x32, 0xbf,
    +	0x36, 0x10, 0x98, 0x89, 0xf7, 0xe7, 0x7e, 0x08, 0xa1, 0x28, 0x9f, 0x08, 0x4b, 0xc4, 0xa8, 0xcf,
    +	0xc6, 0xc3, 0x12, 0x29, 0x40, 0x12, 0x81, 0x6d, 0x50, 0x38, 0x8a, 0x0e, 0x15, 0x3d, 0x3b, 0x41,
    +	0x45, 0x8f, 0x18, 0x89, 0xe6, 0x95, 0x5e, 0xb7, 0x54, 0x88, 0xcf, 0xa8, 0xb8, 0x76, 0x61, 0xae,
    +	0x15, 0x6d, 0x7b, 0x3d, 0x37, 0x81, 0xb9, 0x11, 0x43, 0x2b, 0x30, 0x17, 0x9f, 0x22, 0x71, 0xed,
    +	0xe5, 0x9f, 0x35, 0x30, 0x37, 0x5d, 0x3d, 0xde, 0x00, 0x39, 0xec, 0xd9, 0xf2, 0x52, 0xfb, 0x95,
    +	0x58, 0x10, 0x55, 0x53, 0x7d, 0xb4, 0x1b, 0x10, 0x51, 0x88, 0x0b, 0xe6, 0x7e, 0xaa, 0x45, 0xc3,
    +	0x0e, 0x98, 0xfb, 0x26, 0x19, 0x0a, 0x71, 0xb8, 0x05, 0x0a, 0xfd, 0x83, 0x2c, 0x41, 0x3d, 0x2d,
    +	0x05, 0x64, 0x10, 0x28, 0x0a, 0xa0, 0x38, 0x5f, 0xf9, 0xa7, 0x24, 0x58, 0xde, 0x27, 0xad, 0xa3,
    +	0xd7, 0x33, 0xe9, 0x1e, 0xc7, 0x26, 0xdd, 0xf6, 0xf8, 0x79, 0x34, 0xdc, 0xcb, 0xd7, 0x36, 0xed,
    +	0x9e, 0x27, 0xc1, 0xea, 0x18, 0x9f, 0xe0, 0x09, 0x80, 0xf4, 0xd2, 0xf0, 0x50, 0x79, 0xac, 0x8c,
    +	0xf5, 0xe5, 0xf2, 0xcc, 0x31, 0xaf, 0xf6, 0xba, 0xa5, 0x21, 0xb3, 0x08, 0x0d, 0x31, 0x01, 0xbf,
    +	0xd1, 0xc0, 0x92, 0x33, 0x6c, 0x0e, 0xab, 0x34, 0x6f, 0x8e, 0x35, 0x3e, 0x74, 0x82, 0x9b, 0xd7,
    +	0x7a, 0xdd, 0xd2, 0xf0, 0xe1, 0x8e, 0x86, 0xdb, 0x12, 0xdf, 0xd0, 0xab, 0x91, 0xf4, 0x88, 0x06,
    +	0xf9, 0xf7, 0xea, 0xea, 0xd3, 0x58, 0x5d, 0x6d, 0x4d, 0x5a, 0x57, 0x11, 0x27, 0x47, 0x96, 0xd5,
    +	0xe7, 0x17, 0xca, 0xea, 0xf6, 0x24, 0x65, 0x15, 0x55, 0x3c, 0xbe, 0xaa, 0x1e, 0x80, 0x95, 0xd1,
    +	0x0e, 0x4d, 0xfd, 0xe9, 0x29, 0xff, 0x90, 0x04, 0x8b, 0x6f, 0x96, 0x98, 0x69, 0xda, 0xfa, 0x97,
    +	0x34, 0x58, 0x7e, 0xd3, 0xd2, 0xa3, 0xd6, 0x38, 0x9f, 0x11, 0xaa, 0x96, 0x94, 0xc1, 0xe5, 0x1c,
    +	0x30, 0x42, 0x91, 0x44, 0x60, 0x19, 0xcc, 0x34, 0x82, 0xaf, 0x5b, 0xf0, 0xfd, 0x01, 0x22, 0xc1,
    +	0xea, 0xd3, 0xa6, 0x10, 0x58, 0x07, 0x19, 0x22, 0xde, 0x4b, 0x7a, 0x46, 0xee, 0xf3, 0x1f, 0xfe,
    +	0x93, 0xca, 0x30, 0xe4, 0x8b, 0x6b, 0xc7, 0xe1, 0xf4, 0x34, 0x5c, 0x96, 0x24, 0x0d, 0x05, 0xca,
    +	0xe1, 0x5b, 0x20, 0xe5, 0xdb, 0x75, 0xb5, 0xcb, 0xe4, 0x15, 0x4b, 0xea, 0x60, 0xf7, 0x3e, 0x12,
    +	0xf4, 0x15, 0xac, 0x1e, 0x6d, 0x52, 0x05, 0x5c, 0x00, 0xa9, 0x63, 0x72, 0x1a, 0x34, 0x14, 0x12,
    +	0x3f, 0xe1, 0x3d, 0x90, 0xe9, 0x88, 0xf7, 0x9c, 0xca, 0xef, 0xbb, 0x63, 0x9d, 0x0c, 0x9f, 0x7f,
    +	0x28, 0x90, 0xba, 0x9b, 0xdc, 0xd6, 0xca, 0xbf, 0x69, 0xe0, 0xda, 0xc8, 0xf2, 0x13, 0xcb, 0x1c,
    +	0x6e, 0xb5, 0xdc, 0x13, 0x52, 0x97, 0x66, 0xb3, 0xe1, 0x32, 0x57, 0x0d, 0xc8, 0xa8, 0x8f, 0xc3,
    +	0x77, 0xc0, 0x4c, 0x9d, 0x38, 0x36, 0xa9, 0xcb, 0xb5, 0x2f, 0x1b, 0x56, 0xee, 0x7d, 0x49, 0x45,
    +	0x0a, 0x15, 0x7c, 0x94, 0x60, 0xe6, 0x3a, 0x6a, 0xd1, 0x1c, 0xf0, 0x21, 0x49, 0x45, 0x0a, 0x85,
    +	0x55, 0x30, 0x4f, 0x84, 0x9b, 0xd2, 0xff, 0x1d, 0x4a, 0xdd, 0xfe, 0x8d, 0x2e, 0x2b, 0x81, 0xf9,
    +	0x9d, 0x38, 0x8c, 0x2e, 0xf2, 0x97, 0xff, 0x4a, 0x02, 0x7d, 0xd4, 0x68, 0x83, 0x47, 0xe1, 0x2e,
    +	0x22, 0x41, 0xb9, 0x0e, 0xe5, 0x37, 0xaf, 0x4f, 0xd4, 0x20, 0x42, 0xc2, 0x5c, 0x52, 0x8e, 0x14,
    +	0xa2, 0xd4, 0xc8, 0xea, 0x22, 0x8f, 0x90, 0x82, 0x05, 0x27, 0xfe, 0x22, 0xe8, 0xbf, 0x11, 0x6f,
    +	0x4e, 0xda, 0x0e, 0xd2, 0x9a, 0xae, 0xac, 0x2d, 0x5c, 0x00, 0x18, 0xba, 0xa4, 0x1f, 0x6e, 0x02,
    +	0x60, 0x3b, 0x96, 0xdb, 0xf6, 0x5a, 0x84, 0x13, 0x99, 0xb6, 0x6c, 0x38, 0x07, 0x77, 0x07, 0x08,
    +	0x8a, 0x70, 0x0d, 0xcb, 0x77, 0x7a, 0xba, 0x7c, 0x9b, 0xd5, 0xb3, 0xf3, 0x62, 0xe2, 0xc5, 0x79,
    +	0x31, 0xf1, 0xf2, 0xbc, 0x98, 0x78, 0xd6, 0x2b, 0x6a, 0x67, 0xbd, 0xa2, 0xf6, 0xa2, 0x57, 0xd4,
    +	0x5e, 0xf6, 0x8a, 0xda, 0x1f, 0xbd, 0xa2, 0xf6, 0xed, 0x9f, 0xc5, 0xc4, 0xe3, 0xd5, 0x31, 0xff,
    +	0xd0, 0xfc, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x8c, 0x77, 0x0f, 0xbf, 0x11, 0x00, 0x00,
     }
     
     func (m ExtraValue) Marshal() (dAtA []byte, err error) {
    @@ -566,6 +631,90 @@ func (m ExtraValue) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *FieldSelectorAttributes) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *FieldSelectorAttributes) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *FieldSelectorAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Requirements) > 0 {
    +		for iNdEx := len(m.Requirements) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Requirements[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.RawSelector)
    +	copy(dAtA[i:], m.RawSelector)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.RawSelector)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *LabelSelectorAttributes) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *LabelSelectorAttributes) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *LabelSelectorAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Requirements) > 0 {
    +		for iNdEx := len(m.Requirements) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Requirements[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.RawSelector)
    +	copy(dAtA[i:], m.RawSelector)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.RawSelector)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *LocalSubjectAccessReview) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -713,6 +862,30 @@ func (m *ResourceAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.LabelSelector != nil {
    +		{
    +			size, err := m.LabelSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x4a
    +	}
    +	if m.FieldSelector != nil {
    +		{
    +			size, err := m.FieldSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x42
    +	}
     	i -= len(m.Name)
     	copy(dAtA[i:], m.Name)
     	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    @@ -1278,6 +1451,40 @@ func (m ExtraValue) Size() (n int) {
     	return n
     }
     
    +func (m *FieldSelectorAttributes) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.RawSelector)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Requirements) > 0 {
    +		for _, e := range m.Requirements {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *LabelSelectorAttributes) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.RawSelector)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Requirements) > 0 {
    +		for _, e := range m.Requirements {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
     func (m *LocalSubjectAccessReview) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -1347,6 +1554,14 @@ func (m *ResourceAttributes) Size() (n int) {
     	n += 1 + l + sovGenerated(uint64(l))
     	l = len(m.Name)
     	n += 1 + l + sovGenerated(uint64(l))
    +	if m.FieldSelector != nil {
    +		l = m.FieldSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.LabelSelector != nil {
    +		l = m.LabelSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -1537,6 +1752,38 @@ func sovGenerated(x uint64) (n int) {
     func sozGenerated(x uint64) (n int) {
     	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
     }
    +func (this *FieldSelectorAttributes) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForRequirements := "[]FieldSelectorRequirement{"
    +	for _, f := range this.Requirements {
    +		repeatedStringForRequirements += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForRequirements += "}"
    +	s := strings.Join([]string{`&FieldSelectorAttributes{`,
    +		`RawSelector:` + fmt.Sprintf("%v", this.RawSelector) + `,`,
    +		`Requirements:` + repeatedStringForRequirements + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *LabelSelectorAttributes) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForRequirements := "[]LabelSelectorRequirement{"
    +	for _, f := range this.Requirements {
    +		repeatedStringForRequirements += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForRequirements += "}"
    +	s := strings.Join([]string{`&LabelSelectorAttributes{`,
    +		`RawSelector:` + fmt.Sprintf("%v", this.RawSelector) + `,`,
    +		`Requirements:` + repeatedStringForRequirements + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *LocalSubjectAccessReview) String() string {
     	if this == nil {
     		return "nil"
    @@ -1583,6 +1830,8 @@ func (this *ResourceAttributes) String() string {
     		`Resource:` + fmt.Sprintf("%v", this.Resource) + `,`,
     		`Subresource:` + fmt.Sprintf("%v", this.Subresource) + `,`,
     		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`FieldSelector:` + strings.Replace(this.FieldSelector.String(), "FieldSelectorAttributes", "FieldSelectorAttributes", 1) + `,`,
    +		`LabelSelector:` + strings.Replace(this.LabelSelector.String(), "LabelSelectorAttributes", "LabelSelectorAttributes", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -1808,6 +2057,238 @@ func (m *ExtraValue) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *FieldSelectorAttributes) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: FieldSelectorAttributes: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: FieldSelectorAttributes: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field RawSelector", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.RawSelector = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requirements", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requirements = append(m.Requirements, v1.FieldSelectorRequirement{})
    +			if err := m.Requirements[len(m.Requirements)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *LabelSelectorAttributes) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: LabelSelectorAttributes: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: LabelSelectorAttributes: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field RawSelector", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.RawSelector = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requirements", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requirements = append(m.Requirements, v1.LabelSelectorRequirement{})
    +			if err := m.Requirements[len(m.Requirements)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func (m *LocalSubjectAccessReview) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
    @@ -2438,6 +2919,78 @@ func (m *ResourceAttributes) Unmarshal(dAtA []byte) error {
     			}
     			m.Name = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    +		case 8:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field FieldSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.FieldSelector == nil {
    +				m.FieldSelector = &FieldSelectorAttributes{}
    +			}
    +			if err := m.FieldSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 9:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.LabelSelector == nil {
    +				m.LabelSelector = &LabelSelectorAttributes{}
    +			}
    +			if err := m.LabelSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    diff --git a/vendor/k8s.io/api/authorization/v1/generated.proto b/vendor/k8s.io/api/authorization/v1/generated.proto
    index 47d3a57a0720..37b05b8552ff 100644
    --- a/vendor/k8s.io/api/authorization/v1/generated.proto
    +++ b/vendor/k8s.io/api/authorization/v1/generated.proto
    @@ -37,6 +37,60 @@ message ExtraValue {
       repeated string items = 1;
     }
     
    +// FieldSelectorAttributes indicates a field limited access.
    +// Webhook authors are encouraged to
    +// * ensure rawSelector and requirements are not both set
    +// * consider the requirements field if set
    +// * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details.
    +// For the *SubjectAccessReview endpoints of the kube-apiserver:
    +// * If rawSelector is empty and requirements are empty, the request is not limited.
    +// * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds.
    +// * If rawSelector is empty and requirements are present, the requirements should be honored
    +// * If rawSelector is present and requirements are present, the request is invalid.
    +message FieldSelectorAttributes {
    +  // rawSelector is the serialization of a field selector that would be included in a query parameter.
    +  // Webhook implementations are encouraged to ignore rawSelector.
    +  // The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present.
    +  // +optional
    +  optional string rawSelector = 1;
    +
    +  // requirements is the parsed interpretation of a field selector.
    +  // All requirements must be met for a resource instance to match the selector.
    +  // Webhook implementations should handle requirements, but how to handle them is up to the webhook.
    +  // Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements
    +  // are not understood.
    +  // +optional
    +  // +listType=atomic
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.FieldSelectorRequirement requirements = 2;
    +}
    +
    +// LabelSelectorAttributes indicates a label limited access.
    +// Webhook authors are encouraged to
    +// * ensure rawSelector and requirements are not both set
    +// * consider the requirements field if set
    +// * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details.
    +// For the *SubjectAccessReview endpoints of the kube-apiserver:
    +// * If rawSelector is empty and requirements are empty, the request is not limited.
    +// * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds.
    +// * If rawSelector is empty and requirements are present, the requirements should be honored
    +// * If rawSelector is present and requirements are present, the request is invalid.
    +message LabelSelectorAttributes {
    +  // rawSelector is the serialization of a field selector that would be included in a query parameter.
    +  // Webhook implementations are encouraged to ignore rawSelector.
    +  // The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present.
    +  // +optional
    +  optional string rawSelector = 1;
    +
    +  // requirements is the parsed interpretation of a label selector.
    +  // All requirements must be met for a resource instance to match the selector.
    +  // Webhook implementations should handle requirements, but how to handle them is up to the webhook.
    +  // Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements
    +  // are not understood.
    +  // +optional
    +  // +listType=atomic
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement requirements = 2;
    +}
    +
     // LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace.
     // Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions
     // checking.
    @@ -44,7 +98,7 @@ message LocalSubjectAccessReview {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated.  spec.namespace must be equal to the namespace
       // you made the request against.  If empty, it is defaulted.
    @@ -69,11 +123,13 @@ message NonResourceAttributes {
     // NonResourceRule holds information that describes a rule for the non-resource
     message NonResourceRule {
       // Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options.  "*" means all.
    +  // +listType=atomic
       repeated string verbs = 1;
     
       // NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full,
       // final step in the path.  "*" means all.
       // +optional
    +  // +listType=atomic
       repeated string nonResourceURLs = 2;
     }
     
    @@ -109,26 +165,44 @@ message ResourceAttributes {
       // Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.
       // +optional
       optional string name = 7;
    +
    +  // fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.
    +  //
    +  // This field  is alpha-level. To use this field, you must enable the
    +  // `AuthorizeWithSelectors` feature gate (disabled by default).
    +  // +optional
    +  optional FieldSelectorAttributes fieldSelector = 8;
    +
    +  // labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.
    +  //
    +  // This field  is alpha-level. To use this field, you must enable the
    +  // `AuthorizeWithSelectors` feature gate (disabled by default).
    +  // +optional
    +  optional LabelSelectorAttributes labelSelector = 9;
     }
     
     // ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant,
     // may contain duplicates, and possibly be incomplete.
     message ResourceRule {
       // Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy.  "*" means all.
    +  // +listType=atomic
       repeated string verbs = 1;
     
       // APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       // the enumerated resources in any API group will be allowed.  "*" means all.
       // +optional
    +  // +listType=atomic
       repeated string apiGroups = 2;
     
       // Resources is a list of resources this rule applies to.  "*" means all in the specified apiGroups.
       //  "*/foo" represents the subresource 'foo' for all resources in the specified apiGroups.
       // +optional
    +  // +listType=atomic
       repeated string resources = 3;
     
       // ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.  "*" means all.
       // +optional
    +  // +listType=atomic
       repeated string resourceNames = 4;
     }
     
    @@ -139,7 +213,7 @@ message SelfSubjectAccessReview {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated.  user and groups must be empty
       optional SelfSubjectAccessReviewSpec spec = 2;
    @@ -171,7 +245,7 @@ message SelfSubjectRulesReview {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated.
       optional SelfSubjectRulesReviewSpec spec = 2;
    @@ -192,7 +266,7 @@ message SubjectAccessReview {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated
       optional SubjectAccessReviewSpec spec = 2;
    @@ -220,6 +294,7 @@ message SubjectAccessReviewSpec {
     
       // Groups is the groups you're testing for.
       // +optional
    +  // +listType=atomic
       repeated string groups = 4;
     
       // Extra corresponds to the user.Info.GetExtra() method from the authenticator.  Since that is input to the authorizer
    @@ -262,10 +337,12 @@ message SubjectAccessReviewStatus {
     message SubjectRulesReviewStatus {
       // ResourceRules is the list of actions the subject is allowed to perform on resources.
       // The list ordering isn't significant, may contain duplicates, and possibly be incomplete.
    +  // +listType=atomic
       repeated ResourceRule resourceRules = 1;
     
       // NonResourceRules is the list of actions the subject is allowed to perform on non-resources.
       // The list ordering isn't significant, may contain duplicates, and possibly be incomplete.
    +  // +listType=atomic
       repeated NonResourceRule nonResourceRules = 2;
     
       // Incomplete is true when the rules returned by this call are incomplete. This is most commonly
    diff --git a/vendor/k8s.io/api/authorization/v1/types.go b/vendor/k8s.io/api/authorization/v1/types.go
    index d1fe483f9649..36f5fa410782 100644
    --- a/vendor/k8s.io/api/authorization/v1/types.go
    +++ b/vendor/k8s.io/api/authorization/v1/types.go
    @@ -26,6 +26,7 @@ import (
     // +genclient:nonNamespaced
     // +genclient:onlyVerbs=create
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.6
     
     // SubjectAccessReview checks whether or not a user or group can perform an action.
     type SubjectAccessReview struct {
    @@ -47,6 +48,7 @@ type SubjectAccessReview struct {
     // +genclient:nonNamespaced
     // +genclient:onlyVerbs=create
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // SelfSubjectAccessReview checks whether or the current user can perform an action.  Not filling in a
     // spec.namespace means "in all namespaces".  Self is a special case, because users should always be able
    @@ -69,6 +71,7 @@ type SelfSubjectAccessReview struct {
     // +genclient
     // +genclient:onlyVerbs=create
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace.
     // Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions
    @@ -115,6 +118,72 @@ type ResourceAttributes struct {
     	// Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.
     	// +optional
     	Name string `json:"name,omitempty" protobuf:"bytes,7,opt,name=name"`
    +	// fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.
    +	//
    +	// This field  is alpha-level. To use this field, you must enable the
    +	// `AuthorizeWithSelectors` feature gate (disabled by default).
    +	// +optional
    +	FieldSelector *FieldSelectorAttributes `json:"fieldSelector,omitempty" protobuf:"bytes,8,opt,name=fieldSelector"`
    +	// labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.
    +	//
    +	// This field  is alpha-level. To use this field, you must enable the
    +	// `AuthorizeWithSelectors` feature gate (disabled by default).
    +	// +optional
    +	LabelSelector *LabelSelectorAttributes `json:"labelSelector,omitempty" protobuf:"bytes,9,opt,name=labelSelector"`
    +}
    +
    +// LabelSelectorAttributes indicates a label limited access.
    +// Webhook authors are encouraged to
    +// * ensure rawSelector and requirements are not both set
    +// * consider the requirements field if set
    +// * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details.
    +// For the *SubjectAccessReview endpoints of the kube-apiserver:
    +// * If rawSelector is empty and requirements are empty, the request is not limited.
    +// * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds.
    +// * If rawSelector is empty and requirements are present, the requirements should be honored
    +// * If rawSelector is present and requirements are present, the request is invalid.
    +type LabelSelectorAttributes struct {
    +	// rawSelector is the serialization of a field selector that would be included in a query parameter.
    +	// Webhook implementations are encouraged to ignore rawSelector.
    +	// The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present.
    +	// +optional
    +	RawSelector string `json:"rawSelector,omitempty" protobuf:"bytes,1,opt,name=rawSelector"`
    +
    +	// requirements is the parsed interpretation of a label selector.
    +	// All requirements must be met for a resource instance to match the selector.
    +	// Webhook implementations should handle requirements, but how to handle them is up to the webhook.
    +	// Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements
    +	// are not understood.
    +	// +optional
    +	// +listType=atomic
    +	Requirements []metav1.LabelSelectorRequirement `json:"requirements,omitempty" protobuf:"bytes,2,rep,name=requirements"`
    +}
    +
    +// FieldSelectorAttributes indicates a field limited access.
    +// Webhook authors are encouraged to
    +// * ensure rawSelector and requirements are not both set
    +// * consider the requirements field if set
    +// * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details.
    +// For the *SubjectAccessReview endpoints of the kube-apiserver:
    +// * If rawSelector is empty and requirements are empty, the request is not limited.
    +// * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds.
    +// * If rawSelector is empty and requirements are present, the requirements should be honored
    +// * If rawSelector is present and requirements are present, the request is invalid.
    +type FieldSelectorAttributes struct {
    +	// rawSelector is the serialization of a field selector that would be included in a query parameter.
    +	// Webhook implementations are encouraged to ignore rawSelector.
    +	// The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present.
    +	// +optional
    +	RawSelector string `json:"rawSelector,omitempty" protobuf:"bytes,1,opt,name=rawSelector"`
    +
    +	// requirements is the parsed interpretation of a field selector.
    +	// All requirements must be met for a resource instance to match the selector.
    +	// Webhook implementations should handle requirements, but how to handle them is up to the webhook.
    +	// Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements
    +	// are not understood.
    +	// +optional
    +	// +listType=atomic
    +	Requirements []metav1.FieldSelectorRequirement `json:"requirements,omitempty" protobuf:"bytes,2,rep,name=requirements"`
     }
     
     // NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface
    @@ -143,6 +212,7 @@ type SubjectAccessReviewSpec struct {
     	User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=user"`
     	// Groups is the groups you're testing for.
     	// +optional
    +	// +listType=atomic
     	Groups []string `json:"groups,omitempty" protobuf:"bytes,4,rep,name=groups"`
     	// Extra corresponds to the user.Info.GetExtra() method from the authenticator.  Since that is input to the authorizer
     	// it needs a reflection here.
    @@ -197,6 +267,7 @@ type SubjectAccessReviewStatus struct {
     // +genclient:nonNamespaced
     // +genclient:onlyVerbs=create
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace.
     // The returned list of actions may be incomplete depending on the server's authorization mode,
    @@ -232,9 +303,11 @@ type SelfSubjectRulesReviewSpec struct {
     type SubjectRulesReviewStatus struct {
     	// ResourceRules is the list of actions the subject is allowed to perform on resources.
     	// The list ordering isn't significant, may contain duplicates, and possibly be incomplete.
    +	// +listType=atomic
     	ResourceRules []ResourceRule `json:"resourceRules" protobuf:"bytes,1,rep,name=resourceRules"`
     	// NonResourceRules is the list of actions the subject is allowed to perform on non-resources.
     	// The list ordering isn't significant, may contain duplicates, and possibly be incomplete.
    +	// +listType=atomic
     	NonResourceRules []NonResourceRule `json:"nonResourceRules" protobuf:"bytes,2,rep,name=nonResourceRules"`
     	// Incomplete is true when the rules returned by this call are incomplete. This is most commonly
     	// encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.
    @@ -250,28 +323,34 @@ type SubjectRulesReviewStatus struct {
     // may contain duplicates, and possibly be incomplete.
     type ResourceRule struct {
     	// Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy.  "*" means all.
    +	// +listType=atomic
     	Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"`
     
     	// APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     	// the enumerated resources in any API group will be allowed.  "*" means all.
     	// +optional
    +	// +listType=atomic
     	APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,2,rep,name=apiGroups"`
     	// Resources is a list of resources this rule applies to.  "*" means all in the specified apiGroups.
     	//  "*/foo" represents the subresource 'foo' for all resources in the specified apiGroups.
     	// +optional
    +	// +listType=atomic
     	Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"`
     	// ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.  "*" means all.
     	// +optional
    +	// +listType=atomic
     	ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,4,rep,name=resourceNames"`
     }
     
     // NonResourceRule holds information that describes a rule for the non-resource
     type NonResourceRule struct {
     	// Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options.  "*" means all.
    +	// +listType=atomic
     	Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"`
     
     	// NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full,
     	// final step in the path.  "*" means all.
     	// +optional
    +	// +listType=atomic
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,2,rep,name=nonResourceURLs"`
     }
    diff --git a/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go
    index 93229485cc00..dc6b8a89ecde 100644
    --- a/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go
    @@ -27,6 +27,26 @@ package v1
     // Those methods can be generated by using hack/update-codegen.sh
     
     // AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    +var map_FieldSelectorAttributes = map[string]string{
    +	"":             "FieldSelectorAttributes indicates a field limited access. Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid.",
    +	"rawSelector":  "rawSelector is the serialization of a field selector that would be included in a query parameter. Webhook implementations are encouraged to ignore rawSelector. The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present.",
    +	"requirements": "requirements is the parsed interpretation of a field selector. All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood.",
    +}
    +
    +func (FieldSelectorAttributes) SwaggerDoc() map[string]string {
    +	return map_FieldSelectorAttributes
    +}
    +
    +var map_LabelSelectorAttributes = map[string]string{
    +	"":             "LabelSelectorAttributes indicates a label limited access. Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid.",
    +	"rawSelector":  "rawSelector is the serialization of a field selector that would be included in a query parameter. Webhook implementations are encouraged to ignore rawSelector. The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present.",
    +	"requirements": "requirements is the parsed interpretation of a label selector. All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood.",
    +}
    +
    +func (LabelSelectorAttributes) SwaggerDoc() map[string]string {
    +	return map_LabelSelectorAttributes
    +}
    +
     var map_LocalSubjectAccessReview = map[string]string{
     	"":         "LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.",
     	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    @@ -59,14 +79,16 @@ func (NonResourceRule) SwaggerDoc() map[string]string {
     }
     
     var map_ResourceAttributes = map[string]string{
    -	"":            "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface",
    -	"namespace":   "Namespace is the namespace of the action being requested.  Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview",
    -	"verb":        "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy.  \"*\" means all.",
    -	"group":       "Group is the API Group of the Resource.  \"*\" means all.",
    -	"version":     "Version is the API Version of the Resource.  \"*\" means all.",
    -	"resource":    "Resource is one of the existing resource types.  \"*\" means all.",
    -	"subresource": "Subresource is one of the existing resource types.  \"\" means none.",
    -	"name":        "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.",
    +	"":              "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface",
    +	"namespace":     "Namespace is the namespace of the action being requested.  Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview",
    +	"verb":          "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy.  \"*\" means all.",
    +	"group":         "Group is the API Group of the Resource.  \"*\" means all.",
    +	"version":       "Version is the API Version of the Resource.  \"*\" means all.",
    +	"resource":      "Resource is one of the existing resource types.  \"*\" means all.",
    +	"subresource":   "Subresource is one of the existing resource types.  \"\" means none.",
    +	"name":          "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.",
    +	"fieldSelector": "fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.\n\nThis field  is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default).",
    +	"labelSelector": "labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.\n\nThis field  is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default).",
     }
     
     func (ResourceAttributes) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go
    index f1d49eb386ec..7f040f5c5633 100644
    --- a/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go
    @@ -22,6 +22,7 @@ limitations under the License.
     package v1
     
     import (
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     )
     
    @@ -45,6 +46,52 @@ func (in ExtraValue) DeepCopy() ExtraValue {
     	return *out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *FieldSelectorAttributes) DeepCopyInto(out *FieldSelectorAttributes) {
    +	*out = *in
    +	if in.Requirements != nil {
    +		in, out := &in.Requirements, &out.Requirements
    +		*out = make([]metav1.FieldSelectorRequirement, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FieldSelectorAttributes.
    +func (in *FieldSelectorAttributes) DeepCopy() *FieldSelectorAttributes {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(FieldSelectorAttributes)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *LabelSelectorAttributes) DeepCopyInto(out *LabelSelectorAttributes) {
    +	*out = *in
    +	if in.Requirements != nil {
    +		in, out := &in.Requirements, &out.Requirements
    +		*out = make([]metav1.LabelSelectorRequirement, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LabelSelectorAttributes.
    +func (in *LabelSelectorAttributes) DeepCopy() *LabelSelectorAttributes {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(LabelSelectorAttributes)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *LocalSubjectAccessReview) DeepCopyInto(out *LocalSubjectAccessReview) {
     	*out = *in
    @@ -118,6 +165,16 @@ func (in *NonResourceRule) DeepCopy() *NonResourceRule {
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *ResourceAttributes) DeepCopyInto(out *ResourceAttributes) {
     	*out = *in
    +	if in.FieldSelector != nil {
    +		in, out := &in.FieldSelector, &out.FieldSelector
    +		*out = new(FieldSelectorAttributes)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.LabelSelector != nil {
    +		in, out := &in.LabelSelector, &out.LabelSelector
    +		*out = new(LabelSelectorAttributes)
    +		(*in).DeepCopyInto(*out)
    +	}
     	return
     }
     
    @@ -201,7 +258,7 @@ func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReview
     	if in.ResourceAttributes != nil {
     		in, out := &in.ResourceAttributes, &out.ResourceAttributes
     		*out = new(ResourceAttributes)
    -		**out = **in
    +		(*in).DeepCopyInto(*out)
     	}
     	if in.NonResourceAttributes != nil {
     		in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
    @@ -299,7 +356,7 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) {
     	if in.ResourceAttributes != nil {
     		in, out := &in.ResourceAttributes, &out.ResourceAttributes
     		*out = new(ResourceAttributes)
    -		**out = **in
    +		(*in).DeepCopyInto(*out)
     	}
     	if in.NonResourceAttributes != nil {
     		in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
    diff --git a/vendor/k8s.io/api/authorization/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/authorization/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..b0c0475b487b
    --- /dev/null
    +++ b/vendor/k8s.io/api/authorization/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,46 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *LocalSubjectAccessReview) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *SelfSubjectAccessReview) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *SelfSubjectRulesReview) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *SubjectAccessReview) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 6
    +}
    diff --git a/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go b/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go
    index aadcf8240496..5007d1b4963c 100644
    --- a/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1beta1/generated.proto
    +// source: k8s.io/api/authorization/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -26,6 +26,7 @@ import (
     
     	proto "github.com/gogo/protobuf/proto"
     	github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
    +	v11 "k8s.io/api/authorization/v1"
     
     	math "math"
     	math_bits "math/bits"
    @@ -47,7 +48,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ExtraValue) Reset()      { *m = ExtraValue{} }
     func (*ExtraValue) ProtoMessage() {}
     func (*ExtraValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{0}
    +	return fileDescriptor_8eab727787743457, []int{0}
     }
     func (m *ExtraValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +76,7 @@ var xxx_messageInfo_ExtraValue proto.InternalMessageInfo
     func (m *LocalSubjectAccessReview) Reset()      { *m = LocalSubjectAccessReview{} }
     func (*LocalSubjectAccessReview) ProtoMessage() {}
     func (*LocalSubjectAccessReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{1}
    +	return fileDescriptor_8eab727787743457, []int{1}
     }
     func (m *LocalSubjectAccessReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +104,7 @@ var xxx_messageInfo_LocalSubjectAccessReview proto.InternalMessageInfo
     func (m *NonResourceAttributes) Reset()      { *m = NonResourceAttributes{} }
     func (*NonResourceAttributes) ProtoMessage() {}
     func (*NonResourceAttributes) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{2}
    +	return fileDescriptor_8eab727787743457, []int{2}
     }
     func (m *NonResourceAttributes) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -131,7 +132,7 @@ var xxx_messageInfo_NonResourceAttributes proto.InternalMessageInfo
     func (m *NonResourceRule) Reset()      { *m = NonResourceRule{} }
     func (*NonResourceRule) ProtoMessage() {}
     func (*NonResourceRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{3}
    +	return fileDescriptor_8eab727787743457, []int{3}
     }
     func (m *NonResourceRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -159,7 +160,7 @@ var xxx_messageInfo_NonResourceRule proto.InternalMessageInfo
     func (m *ResourceAttributes) Reset()      { *m = ResourceAttributes{} }
     func (*ResourceAttributes) ProtoMessage() {}
     func (*ResourceAttributes) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{4}
    +	return fileDescriptor_8eab727787743457, []int{4}
     }
     func (m *ResourceAttributes) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -187,7 +188,7 @@ var xxx_messageInfo_ResourceAttributes proto.InternalMessageInfo
     func (m *ResourceRule) Reset()      { *m = ResourceRule{} }
     func (*ResourceRule) ProtoMessage() {}
     func (*ResourceRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{5}
    +	return fileDescriptor_8eab727787743457, []int{5}
     }
     func (m *ResourceRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -215,7 +216,7 @@ var xxx_messageInfo_ResourceRule proto.InternalMessageInfo
     func (m *SelfSubjectAccessReview) Reset()      { *m = SelfSubjectAccessReview{} }
     func (*SelfSubjectAccessReview) ProtoMessage() {}
     func (*SelfSubjectAccessReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{6}
    +	return fileDescriptor_8eab727787743457, []int{6}
     }
     func (m *SelfSubjectAccessReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -243,7 +244,7 @@ var xxx_messageInfo_SelfSubjectAccessReview proto.InternalMessageInfo
     func (m *SelfSubjectAccessReviewSpec) Reset()      { *m = SelfSubjectAccessReviewSpec{} }
     func (*SelfSubjectAccessReviewSpec) ProtoMessage() {}
     func (*SelfSubjectAccessReviewSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{7}
    +	return fileDescriptor_8eab727787743457, []int{7}
     }
     func (m *SelfSubjectAccessReviewSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -271,7 +272,7 @@ var xxx_messageInfo_SelfSubjectAccessReviewSpec proto.InternalMessageInfo
     func (m *SelfSubjectRulesReview) Reset()      { *m = SelfSubjectRulesReview{} }
     func (*SelfSubjectRulesReview) ProtoMessage() {}
     func (*SelfSubjectRulesReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{8}
    +	return fileDescriptor_8eab727787743457, []int{8}
     }
     func (m *SelfSubjectRulesReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -299,7 +300,7 @@ var xxx_messageInfo_SelfSubjectRulesReview proto.InternalMessageInfo
     func (m *SelfSubjectRulesReviewSpec) Reset()      { *m = SelfSubjectRulesReviewSpec{} }
     func (*SelfSubjectRulesReviewSpec) ProtoMessage() {}
     func (*SelfSubjectRulesReviewSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{9}
    +	return fileDescriptor_8eab727787743457, []int{9}
     }
     func (m *SelfSubjectRulesReviewSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -327,7 +328,7 @@ var xxx_messageInfo_SelfSubjectRulesReviewSpec proto.InternalMessageInfo
     func (m *SubjectAccessReview) Reset()      { *m = SubjectAccessReview{} }
     func (*SubjectAccessReview) ProtoMessage() {}
     func (*SubjectAccessReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{10}
    +	return fileDescriptor_8eab727787743457, []int{10}
     }
     func (m *SubjectAccessReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -355,7 +356,7 @@ var xxx_messageInfo_SubjectAccessReview proto.InternalMessageInfo
     func (m *SubjectAccessReviewSpec) Reset()      { *m = SubjectAccessReviewSpec{} }
     func (*SubjectAccessReviewSpec) ProtoMessage() {}
     func (*SubjectAccessReviewSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{11}
    +	return fileDescriptor_8eab727787743457, []int{11}
     }
     func (m *SubjectAccessReviewSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -383,7 +384,7 @@ var xxx_messageInfo_SubjectAccessReviewSpec proto.InternalMessageInfo
     func (m *SubjectAccessReviewStatus) Reset()      { *m = SubjectAccessReviewStatus{} }
     func (*SubjectAccessReviewStatus) ProtoMessage() {}
     func (*SubjectAccessReviewStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{12}
    +	return fileDescriptor_8eab727787743457, []int{12}
     }
     func (m *SubjectAccessReviewStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -411,7 +412,7 @@ var xxx_messageInfo_SubjectAccessReviewStatus proto.InternalMessageInfo
     func (m *SubjectRulesReviewStatus) Reset()      { *m = SubjectRulesReviewStatus{} }
     func (*SubjectRulesReviewStatus) ProtoMessage() {}
     func (*SubjectRulesReviewStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_43130d8376f09103, []int{13}
    +	return fileDescriptor_8eab727787743457, []int{13}
     }
     func (m *SubjectRulesReviewStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -455,83 +456,86 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1beta1/generated.proto", fileDescriptor_43130d8376f09103)
    -}
    -
    -var fileDescriptor_43130d8376f09103 = []byte{
    -	// 1143 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0x4f, 0x6f, 0x1b, 0x45,
    -	0x14, 0xf7, 0xfa, 0x4f, 0x62, 0x8f, 0x1b, 0x92, 0x4e, 0x94, 0x66, 0x1b, 0x84, 0x6d, 0x19, 0x09,
    -	0x05, 0x51, 0x76, 0x49, 0x54, 0x48, 0x09, 0xf4, 0x10, 0x2b, 0x01, 0x45, 0x6a, 0x4b, 0x35, 0x51,
    -	0x72, 0xa0, 0x12, 0x30, 0xbb, 0x9e, 0xd8, 0x8b, 0xed, 0xdd, 0x65, 0x66, 0xd6, 0x21, 0x88, 0x43,
    -	0x8f, 0x1c, 0x39, 0x72, 0xe4, 0xc4, 0x77, 0xe0, 0x82, 0x04, 0xa7, 0x1c, 0x7b, 0x0c, 0x12, 0xb2,
    -	0xc8, 0xf2, 0x21, 0xb8, 0xa2, 0x99, 0x1d, 0x7b, 0xd7, 0xc9, 0x26, 0x8e, 0x73, 0xa0, 0x97, 0xde,
    -	0x3c, 0xef, 0xf7, 0x7b, 0x6f, 0xde, 0x7b, 0xf3, 0xde, 0xdb, 0x67, 0xb0, 0xdb, 0x79, 0xc0, 0x0c,
    -	0xc7, 0x33, 0x3b, 0x81, 0x45, 0xa8, 0x4b, 0x38, 0x61, 0x66, 0x9f, 0xb8, 0x4d, 0x8f, 0x9a, 0x0a,
    -	0xc0, 0xbe, 0x63, 0xe2, 0x80, 0xb7, 0x3d, 0xea, 0x7c, 0x87, 0xb9, 0xe3, 0xb9, 0x66, 0x7f, 0xcd,
    -	0x22, 0x1c, 0xaf, 0x99, 0x2d, 0xe2, 0x12, 0x8a, 0x39, 0x69, 0x1a, 0x3e, 0xf5, 0xb8, 0x07, 0x6b,
    -	0x91, 0x86, 0x81, 0x7d, 0xc7, 0x18, 0xd3, 0x30, 0x94, 0xc6, 0xca, 0xbb, 0x2d, 0x87, 0xb7, 0x03,
    -	0xcb, 0xb0, 0xbd, 0x9e, 0xd9, 0xf2, 0x5a, 0x9e, 0x29, 0x15, 0xad, 0xe0, 0x50, 0x9e, 0xe4, 0x41,
    -	0xfe, 0x8a, 0x0c, 0xae, 0xdc, 0x8f, 0x5d, 0xe8, 0x61, 0xbb, 0xed, 0xb8, 0x84, 0x1e, 0x9b, 0x7e,
    -	0xa7, 0x25, 0x04, 0xcc, 0xec, 0x11, 0x8e, 0xcd, 0xfe, 0x05, 0x37, 0x56, 0xcc, 0xcb, 0xb4, 0x68,
    -	0xe0, 0x72, 0xa7, 0x47, 0x2e, 0x28, 0x7c, 0x30, 0x49, 0x81, 0xd9, 0x6d, 0xd2, 0xc3, 0xe7, 0xf5,
    -	0xea, 0x1b, 0x00, 0xec, 0x7c, 0xcb, 0x29, 0x3e, 0xc0, 0xdd, 0x80, 0xc0, 0x2a, 0x28, 0x38, 0x9c,
    -	0xf4, 0x98, 0xae, 0xd5, 0x72, 0xab, 0xa5, 0x46, 0x29, 0x1c, 0x54, 0x0b, 0xbb, 0x42, 0x80, 0x22,
    -	0xf9, 0x66, 0xf1, 0xa7, 0x9f, 0xab, 0x99, 0xe7, 0x7f, 0xd5, 0x32, 0xf5, 0xdf, 0xb2, 0x40, 0x7f,
    -	0xe4, 0xd9, 0xb8, 0xbb, 0x17, 0x58, 0x5f, 0x13, 0x9b, 0x6f, 0xd9, 0x36, 0x61, 0x0c, 0x91, 0xbe,
    -	0x43, 0x8e, 0xe0, 0x57, 0xa0, 0x28, 0x22, 0x6b, 0x62, 0x8e, 0x75, 0xad, 0xa6, 0xad, 0x96, 0xd7,
    -	0xdf, 0x33, 0xe2, 0xc4, 0x8e, 0x1c, 0x34, 0xfc, 0x4e, 0x4b, 0x08, 0x98, 0x21, 0xd8, 0x46, 0x7f,
    -	0xcd, 0xf8, 0x4c, 0xda, 0x7a, 0x4c, 0x38, 0x6e, 0xc0, 0x93, 0x41, 0x35, 0x13, 0x0e, 0xaa, 0x20,
    -	0x96, 0xa1, 0x91, 0x55, 0xf8, 0x0c, 0xe4, 0x99, 0x4f, 0x6c, 0x3d, 0x2b, 0xad, 0x7f, 0x68, 0x4c,
    -	0x7a, 0x36, 0x23, 0xc5, 0xcd, 0x3d, 0x9f, 0xd8, 0x8d, 0x5b, 0xea, 0x9a, 0xbc, 0x38, 0x21, 0x69,
    -	0x14, 0xda, 0x60, 0x86, 0x71, 0xcc, 0x03, 0xa6, 0xe7, 0xa4, 0xf9, 0x8f, 0x6e, 0x66, 0x5e, 0x9a,
    -	0x68, 0xbc, 0xa6, 0x2e, 0x98, 0x89, 0xce, 0x48, 0x99, 0xae, 0x3f, 0x03, 0x4b, 0x4f, 0x3c, 0x17,
    -	0x11, 0xe6, 0x05, 0xd4, 0x26, 0x5b, 0x9c, 0x53, 0xc7, 0x0a, 0x38, 0x61, 0xb0, 0x06, 0xf2, 0x3e,
    -	0xe6, 0x6d, 0x99, 0xb8, 0x52, 0xec, 0xdf, 0x53, 0xcc, 0xdb, 0x48, 0x22, 0x82, 0xd1, 0x27, 0xd4,
    -	0x92, 0xc1, 0x27, 0x18, 0x07, 0x84, 0x5a, 0x48, 0x22, 0xf5, 0x6f, 0xc0, 0x7c, 0xc2, 0x38, 0x0a,
    -	0xba, 0xf2, 0x6d, 0x05, 0x34, 0xf6, 0xb6, 0x42, 0x83, 0xa1, 0x48, 0x0e, 0x1f, 0x82, 0x79, 0x37,
    -	0xd6, 0xd9, 0x47, 0x8f, 0x98, 0x9e, 0x95, 0xd4, 0xc5, 0x70, 0x50, 0x4d, 0x9a, 0x13, 0x10, 0x3a,
    -	0xcf, 0x15, 0x05, 0x01, 0x53, 0xa2, 0x31, 0x41, 0xc9, 0xc5, 0x3d, 0xc2, 0x7c, 0x6c, 0x13, 0x15,
    -	0xd2, 0x6d, 0xe5, 0x70, 0xe9, 0xc9, 0x10, 0x40, 0x31, 0x67, 0x72, 0x70, 0xf0, 0x4d, 0x50, 0x68,
    -	0x51, 0x2f, 0xf0, 0xe5, 0xeb, 0x94, 0x1a, 0x73, 0x8a, 0x52, 0xf8, 0x54, 0x08, 0x51, 0x84, 0xc1,
    -	0xb7, 0xc1, 0x6c, 0x9f, 0x50, 0xe6, 0x78, 0xae, 0x9e, 0x97, 0xb4, 0x79, 0x45, 0x9b, 0x3d, 0x88,
    -	0xc4, 0x68, 0x88, 0xc3, 0x7b, 0xa0, 0x48, 0x95, 0xe3, 0x7a, 0x41, 0x72, 0x17, 0x14, 0xb7, 0x38,
    -	0xca, 0xe0, 0x88, 0x01, 0xdf, 0x07, 0x65, 0x16, 0x58, 0x23, 0x85, 0x19, 0xa9, 0xb0, 0xa8, 0x14,
    -	0xca, 0x7b, 0x31, 0x84, 0x92, 0x3c, 0x11, 0x96, 0x88, 0x51, 0x9f, 0x1d, 0x0f, 0x4b, 0xa4, 0x00,
    -	0x49, 0xa4, 0xfe, 0x87, 0x06, 0x6e, 0x4d, 0xf7, 0x62, 0xef, 0x80, 0x12, 0xf6, 0x1d, 0x19, 0xf6,
    -	0xf0, 0xad, 0xe6, 0x44, 0x5e, 0xb7, 0x9e, 0xee, 0x46, 0x42, 0x14, 0xe3, 0x82, 0x3c, 0x74, 0x46,
    -	0xd4, 0xf5, 0x88, 0x3c, 0xbc, 0x92, 0xa1, 0x18, 0x87, 0x1b, 0x60, 0x6e, 0x78, 0x90, 0x8f, 0xa4,
    -	0xe7, 0xa5, 0xc2, 0xed, 0x70, 0x50, 0x9d, 0x43, 0x49, 0x00, 0x8d, 0xf3, 0xea, 0xbf, 0x67, 0xc1,
    -	0xf2, 0x1e, 0xe9, 0x1e, 0xbe, 0x9c, 0xa9, 0xf0, 0xe5, 0xd8, 0x54, 0x78, 0x78, 0x8d, 0xb6, 0x4d,
    -	0x77, 0xf5, 0xe5, 0x4e, 0x86, 0x5f, 0xb2, 0xe0, 0xf5, 0x2b, 0x1c, 0x83, 0xdf, 0x03, 0x48, 0x2f,
    -	0x34, 0x9a, 0xca, 0xe8, 0xfd, 0xc9, 0x0e, 0x5d, 0x6c, 0xd2, 0xc6, 0x9d, 0x70, 0x50, 0x4d, 0x69,
    -	0x5e, 0x94, 0x72, 0x0f, 0xfc, 0x41, 0x03, 0x4b, 0x6e, 0xda, 0xe0, 0x52, 0x59, 0xdf, 0x98, 0xec,
    -	0x41, 0xea, 0xdc, 0x6b, 0xdc, 0x0d, 0x07, 0xd5, 0xf4, 0x91, 0x88, 0xd2, 0x2f, 0x14, 0x23, 0xe7,
    -	0x4e, 0x22, 0x51, 0xa2, 0x69, 0xfe, 0xbf, 0x5a, 0xfb, 0x62, 0xac, 0xd6, 0x3e, 0x9e, 0xaa, 0xd6,
    -	0x12, 0x9e, 0x5e, 0x5a, 0x6a, 0xd6, 0xb9, 0x52, 0xdb, 0xbc, 0x76, 0xa9, 0x25, 0xad, 0x5f, 0x5d,
    -	0x69, 0x8f, 0xc1, 0xca, 0xe5, 0x5e, 0x4d, 0x3d, 0xba, 0xeb, 0xbf, 0x66, 0xc1, 0xe2, 0xab, 0x75,
    -	0xe0, 0x66, 0x4d, 0x7f, 0x9a, 0x07, 0xcb, 0xaf, 0x1a, 0xfe, 0xea, 0x86, 0x17, 0x1f, 0xd1, 0x80,
    -	0x11, 0xaa, 0x3e, 0xfc, 0xa3, 0xb7, 0xda, 0x67, 0x84, 0x22, 0x89, 0xc0, 0xda, 0x70, 0x37, 0x88,
    -	0x3e, 0x58, 0x40, 0x64, 0x5a, 0x7d, 0x0b, 0xd5, 0x62, 0xe0, 0x80, 0x02, 0x11, 0x1b, 0xaf, 0x5e,
    -	0xa8, 0xe5, 0x56, 0xcb, 0xeb, 0xdb, 0x37, 0xae, 0x15, 0x43, 0x2e, 0xce, 0x3b, 0x2e, 0xa7, 0xc7,
    -	0xf1, 0x0e, 0x22, 0x65, 0x28, 0xba, 0x01, 0xbe, 0x01, 0x72, 0x81, 0xd3, 0x54, 0x2b, 0x42, 0x59,
    -	0x51, 0x72, 0xfb, 0xbb, 0xdb, 0x48, 0xc8, 0x57, 0x0e, 0xd5, 0xee, 0x2d, 0x4d, 0xc0, 0x05, 0x90,
    -	0xeb, 0x90, 0xe3, 0xa8, 0xcf, 0x90, 0xf8, 0x09, 0x1b, 0xa0, 0xd0, 0x17, 0x6b, 0xb9, 0xca, 0xf3,
    -	0xbd, 0xc9, 0x9e, 0xc6, 0xab, 0x3c, 0x8a, 0x54, 0x37, 0xb3, 0x0f, 0xb4, 0xfa, 0x9f, 0x1a, 0xb8,
    -	0x7b, 0x69, 0x41, 0x8a, 0x45, 0x09, 0x77, 0xbb, 0xde, 0x11, 0x69, 0xca, 0xbb, 0x8b, 0xf1, 0xa2,
    -	0xb4, 0x15, 0x89, 0xd1, 0x10, 0x87, 0x6f, 0x81, 0x99, 0x26, 0x71, 0x1d, 0xd2, 0x94, 0x2b, 0x55,
    -	0x31, 0xae, 0xe5, 0x6d, 0x29, 0x45, 0x0a, 0x15, 0x3c, 0x4a, 0x30, 0xf3, 0x5c, 0xb5, 0xc4, 0x8d,
    -	0x78, 0x48, 0x4a, 0x91, 0x42, 0xe1, 0x16, 0x98, 0x27, 0xc2, 0x4d, 0x19, 0xc4, 0x0e, 0xa5, 0xde,
    -	0xf0, 0x65, 0x97, 0x95, 0xc2, 0xfc, 0xce, 0x38, 0x8c, 0xce, 0xf3, 0xeb, 0xff, 0x66, 0x81, 0x7e,
    -	0xd9, 0xd8, 0x83, 0x9d, 0x78, 0x8b, 0x91, 0xa0, 0x5c, 0xa4, 0xca, 0xeb, 0xc6, 0xf5, 0x5b, 0x46,
    -	0xa8, 0x35, 0x96, 0x94, 0x37, 0x73, 0x49, 0x69, 0x62, 0xf3, 0x91, 0x47, 0x78, 0x04, 0x16, 0xdc,
    -	0xf1, 0x95, 0x3b, 0xda, 0xc9, 0xca, 0xeb, 0x6b, 0x53, 0x35, 0x88, 0xbc, 0x52, 0x57, 0x57, 0x2e,
    -	0x9c, 0x03, 0x18, 0xba, 0x70, 0x09, 0x5c, 0x07, 0xc0, 0x71, 0x6d, 0xaf, 0xe7, 0x77, 0x09, 0x27,
    -	0x32, 0x81, 0xc5, 0x78, 0x5a, 0xee, 0x8e, 0x10, 0x94, 0x60, 0xa5, 0x65, 0x3e, 0x3f, 0x5d, 0xe6,
    -	0x1b, 0x9f, 0x9c, 0x9c, 0x55, 0x32, 0x2f, 0xce, 0x2a, 0x99, 0xd3, 0xb3, 0x4a, 0xe6, 0x79, 0x58,
    -	0xd1, 0x4e, 0xc2, 0x8a, 0xf6, 0x22, 0xac, 0x68, 0xa7, 0x61, 0x45, 0xfb, 0x3b, 0xac, 0x68, 0x3f,
    -	0xfe, 0x53, 0xc9, 0x7c, 0x5e, 0x9b, 0xf4, 0x0f, 0xfc, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x58,
    -	0x16, 0x3a, 0xdf, 0xbd, 0x0f, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/authorization/v1beta1/generated.proto", fileDescriptor_8eab727787743457)
    +}
    +
    +var fileDescriptor_8eab727787743457 = []byte{
    +	// 1192 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x4f, 0x6f, 0xe3, 0x44,
    +	0x14, 0x8f, 0xf3, 0xa7, 0x4d, 0x26, 0x1b, 0xda, 0x9d, 0xaa, 0x5b, 0x6f, 0x11, 0x49, 0x14, 0x24,
    +	0x54, 0xb4, 0x8b, 0xb3, 0xad, 0x0a, 0x5d, 0x0a, 0x7b, 0xa8, 0xd5, 0x2e, 0xaa, 0xd4, 0x5d, 0x56,
    +	0x53, 0xb5, 0x07, 0x56, 0x02, 0x26, 0xce, 0x34, 0x31, 0x75, 0x6c, 0xe3, 0x19, 0xa7, 0x14, 0x71,
    +	0xd8, 0x23, 0x47, 0x8e, 0x1c, 0x38, 0x70, 0xe2, 0x3b, 0x70, 0x41, 0x82, 0x53, 0x8f, 0x7b, 0x2c,
    +	0x12, 0x8a, 0xa8, 0xf9, 0x10, 0x5c, 0xd1, 0x8c, 0x27, 0xb1, 0x9d, 0xba, 0x4d, 0xdb, 0x03, 0x7b,
    +	0xd9, 0x5b, 0xe6, 0xfd, 0x7e, 0xef, 0xcf, 0xbc, 0x79, 0xf3, 0xfc, 0x26, 0xe0, 0xc1, 0xe1, 0x43,
    +	0xaa, 0x99, 0x4e, 0x13, 0xbb, 0x66, 0x13, 0xfb, 0xac, 0xeb, 0x78, 0xe6, 0xb7, 0x98, 0x99, 0x8e,
    +	0xdd, 0xec, 0x2f, 0xb7, 0x08, 0xc3, 0xcb, 0xcd, 0x0e, 0xb1, 0x89, 0x87, 0x19, 0x69, 0x6b, 0xae,
    +	0xe7, 0x30, 0x07, 0xd6, 0x43, 0x0d, 0x0d, 0xbb, 0xa6, 0x96, 0xd0, 0xd0, 0xa4, 0xc6, 0xe2, 0x7b,
    +	0x1d, 0x93, 0x75, 0xfd, 0x96, 0x66, 0x38, 0xbd, 0x66, 0xc7, 0xe9, 0x38, 0x4d, 0xa1, 0xd8, 0xf2,
    +	0x0f, 0xc4, 0x4a, 0x2c, 0xc4, 0xaf, 0xd0, 0xe0, 0xe2, 0xbd, 0x4b, 0x42, 0x18, 0xf7, 0xbe, 0xb8,
    +	0x1a, 0x91, 0x7b, 0xd8, 0xe8, 0x9a, 0x36, 0xf1, 0x8e, 0x9b, 0xee, 0x61, 0x87, 0x0b, 0x68, 0xb3,
    +	0x47, 0x18, 0x4e, 0xd3, 0x6a, 0x5e, 0xa4, 0xe5, 0xf9, 0x36, 0x33, 0x7b, 0xe4, 0x9c, 0xc2, 0x07,
    +	0x93, 0x14, 0xa8, 0xd1, 0x25, 0x3d, 0x3c, 0xae, 0xd7, 0x58, 0x03, 0x60, 0xeb, 0x1b, 0xe6, 0xe1,
    +	0x7d, 0x6c, 0xf9, 0x04, 0xd6, 0x40, 0xc1, 0x64, 0xa4, 0x47, 0x55, 0xa5, 0x9e, 0x5b, 0x2a, 0xe9,
    +	0xa5, 0x60, 0x50, 0x2b, 0x6c, 0x73, 0x01, 0x0a, 0xe5, 0xeb, 0xc5, 0x1f, 0x7f, 0xae, 0x65, 0x5e,
    +	0xfc, 0x55, 0xcf, 0x34, 0x7e, 0xcb, 0x02, 0x75, 0xc7, 0x31, 0xb0, 0xb5, 0xeb, 0xb7, 0xbe, 0x22,
    +	0x06, 0xdb, 0x30, 0x0c, 0x42, 0x29, 0x22, 0x7d, 0x93, 0x1c, 0xc1, 0x2f, 0x41, 0x91, 0xef, 0xac,
    +	0x8d, 0x19, 0x56, 0x95, 0xba, 0xb2, 0x54, 0x5e, 0x79, 0xa0, 0x45, 0xa7, 0x30, 0x0a, 0x50, 0x73,
    +	0x0f, 0x3b, 0x5c, 0x40, 0x35, 0xce, 0xd6, 0xfa, 0xcb, 0xda, 0xa7, 0xc2, 0xd6, 0x13, 0xc2, 0xb0,
    +	0x0e, 0x4f, 0x06, 0xb5, 0x4c, 0x30, 0xa8, 0x81, 0x48, 0x86, 0x46, 0x56, 0xe1, 0x73, 0x90, 0xa7,
    +	0x2e, 0x31, 0xd4, 0xac, 0xb0, 0xfe, 0xa1, 0x36, 0xe9, 0x8c, 0xb5, 0x94, 0x30, 0x77, 0x5d, 0x62,
    +	0xe8, 0xb7, 0xa4, 0x9b, 0x3c, 0x5f, 0x21, 0x61, 0x14, 0x1a, 0x60, 0x8a, 0x32, 0xcc, 0x7c, 0xaa,
    +	0xe6, 0x84, 0xf9, 0x8f, 0x6e, 0x66, 0x5e, 0x98, 0xd0, 0xdf, 0x90, 0x0e, 0xa6, 0xc2, 0x35, 0x92,
    +	0xa6, 0x1b, 0xcf, 0xc1, 0xfc, 0x53, 0xc7, 0x46, 0x84, 0x3a, 0xbe, 0x67, 0x90, 0x0d, 0xc6, 0x3c,
    +	0xb3, 0xe5, 0x33, 0x42, 0x61, 0x1d, 0xe4, 0x5d, 0xcc, 0xba, 0x22, 0x71, 0xa5, 0x28, 0xbe, 0x67,
    +	0x98, 0x75, 0x91, 0x40, 0x38, 0xa3, 0x4f, 0xbc, 0x96, 0xd8, 0x7c, 0x8c, 0xb1, 0x4f, 0xbc, 0x16,
    +	0x12, 0x48, 0xe3, 0x6b, 0x30, 0x13, 0x33, 0x8e, 0x7c, 0x4b, 0x9c, 0x2d, 0x87, 0x12, 0x67, 0xcb,
    +	0x35, 0x28, 0x0a, 0xe5, 0xf0, 0x11, 0x98, 0xb1, 0x23, 0x9d, 0x3d, 0xb4, 0x43, 0xd5, 0xac, 0xa0,
    +	0xce, 0x05, 0x83, 0x5a, 0xdc, 0x1c, 0x87, 0xd0, 0x38, 0xb7, 0xf1, 0x53, 0x1e, 0xc0, 0x94, 0xdd,
    +	0x34, 0x41, 0xc9, 0xc6, 0x3d, 0x42, 0x5d, 0x6c, 0x10, 0xb9, 0xa5, 0xdb, 0x32, 0xe0, 0xd2, 0xd3,
    +	0x21, 0x80, 0x22, 0xce, 0xe4, 0xcd, 0xc1, 0xb7, 0x41, 0xa1, 0xe3, 0x39, 0xbe, 0x2b, 0x4e, 0xa7,
    +	0xa4, 0x57, 0x24, 0xa5, 0xf0, 0x09, 0x17, 0xa2, 0x10, 0x83, 0xef, 0x82, 0xe9, 0x3e, 0xf1, 0xa8,
    +	0xe9, 0xd8, 0x6a, 0x5e, 0xd0, 0x66, 0x24, 0x6d, 0x7a, 0x3f, 0x14, 0xa3, 0x21, 0x0e, 0xef, 0x83,
    +	0xa2, 0x27, 0x03, 0x57, 0x0b, 0x82, 0x3b, 0x2b, 0xb9, 0xc5, 0x51, 0x06, 0x47, 0x0c, 0xf8, 0x3e,
    +	0x28, 0x53, 0xbf, 0x35, 0x52, 0x98, 0x12, 0x0a, 0x73, 0x52, 0xa1, 0xbc, 0x1b, 0x41, 0x28, 0xce,
    +	0xe3, 0xdb, 0xe2, 0x7b, 0x54, 0xa7, 0x93, 0xdb, 0xe2, 0x29, 0x40, 0x02, 0x81, 0x3d, 0x50, 0x39,
    +	0x30, 0x89, 0xd5, 0xde, 0x25, 0x16, 0x31, 0x98, 0xe3, 0xa9, 0x45, 0x51, 0x7c, 0xab, 0x97, 0x15,
    +	0x9f, 0xf6, 0x38, 0xae, 0x11, 0xa5, 0x5d, 0xbf, 0x1d, 0x0c, 0x6a, 0x95, 0x04, 0x88, 0x92, 0xd6,
    +	0xb9, 0x3b, 0x0b, 0xb7, 0x88, 0x35, 0x72, 0x57, 0xba, 0x82, 0xbb, 0x9d, 0xb8, 0xc6, 0xb8, 0xbb,
    +	0x04, 0x88, 0x92, 0xd6, 0x1b, 0x7f, 0x28, 0xe0, 0xd6, 0xf5, 0xea, 0xf1, 0x1e, 0x28, 0x61, 0xd7,
    +	0x14, 0x87, 0x3a, 0xac, 0xc4, 0x0a, 0xaf, 0x9a, 0x8d, 0x67, 0xdb, 0xa1, 0x10, 0x45, 0x38, 0x27,
    +	0x0f, 0x53, 0xcd, 0x6f, 0xed, 0x88, 0x3c, 0x74, 0x49, 0x51, 0x84, 0xc3, 0x35, 0x50, 0x19, 0x2e,
    +	0x44, 0x09, 0xaa, 0x79, 0xa1, 0x20, 0x36, 0x81, 0xe2, 0x00, 0x4a, 0xf2, 0x1a, 0xbf, 0x67, 0xc1,
    +	0xc2, 0x2e, 0xb1, 0x0e, 0x5e, 0x4d, 0xcf, 0xfb, 0x22, 0xd1, 0xf3, 0x1e, 0x5d, 0xa1, 0x29, 0xa5,
    +	0x87, 0xfa, 0x6a, 0xfb, 0xde, 0x2f, 0x59, 0xf0, 0xe6, 0x25, 0x81, 0xc1, 0xef, 0x00, 0xf4, 0xce,
    +	0xb5, 0x11, 0x99, 0xd1, 0xd5, 0xc9, 0x01, 0x9d, 0x6f, 0x41, 0xfa, 0x9d, 0x60, 0x50, 0x4b, 0x69,
    +	0x4d, 0x28, 0xc5, 0x0f, 0xfc, 0x5e, 0x01, 0xf3, 0x76, 0x5a, 0x5b, 0x96, 0x59, 0x5f, 0x9b, 0x1c,
    +	0x41, 0x6a, 0x57, 0xd7, 0xef, 0x06, 0x83, 0x5a, 0x7a, 0xc3, 0x47, 0xe9, 0x0e, 0xf9, 0x17, 0xf6,
    +	0x4e, 0x2c, 0x51, 0xfc, 0xd2, 0xfc, 0x7f, 0xb5, 0xf6, 0x79, 0xa2, 0xd6, 0x3e, 0xbe, 0x56, 0xad,
    +	0xc5, 0x22, 0xbd, 0xb0, 0xd4, 0x5a, 0x63, 0xa5, 0xb6, 0x7e, 0xe5, 0x52, 0x8b, 0x5b, 0xbf, 0xbc,
    +	0xd2, 0x9e, 0x80, 0xc5, 0x8b, 0xa3, 0xba, 0xf6, 0x87, 0xa9, 0xf1, 0x6b, 0x16, 0xcc, 0xbd, 0x1e,
    +	0x76, 0x6e, 0x76, 0xe9, 0x4f, 0xf3, 0x60, 0xe1, 0xf5, 0x85, 0xbf, 0xfc, 0xc2, 0xf3, 0x11, 0xc1,
    +	0xa7, 0xc4, 0x93, 0x63, 0xcd, 0xe8, 0xac, 0xf6, 0x28, 0xf1, 0x90, 0x40, 0x60, 0x7d, 0x38, 0xf9,
    +	0x84, 0x1f, 0x2c, 0xc0, 0x33, 0x2d, 0xbf, 0x85, 0x72, 0xec, 0x31, 0x41, 0x81, 0xf0, 0x79, 0x5e,
    +	0x2d, 0xd4, 0x73, 0x4b, 0xe5, 0x95, 0xcd, 0x1b, 0xd7, 0x8a, 0x26, 0x9e, 0x05, 0x5b, 0x36, 0xf3,
    +	0x8e, 0xa3, 0x09, 0x4b, 0xc8, 0x50, 0xe8, 0x01, 0xbe, 0x05, 0x72, 0xbe, 0xd9, 0x96, 0x03, 0x50,
    +	0x59, 0x52, 0x72, 0x7b, 0xdb, 0x9b, 0x88, 0xcb, 0x17, 0x0f, 0xe4, 0xcb, 0x42, 0x98, 0x80, 0xb3,
    +	0x20, 0x77, 0x48, 0x8e, 0xc3, 0x7b, 0x86, 0xf8, 0x4f, 0xa8, 0x83, 0x42, 0x9f, 0x3f, 0x3a, 0x64,
    +	0x9e, 0xef, 0x4f, 0x8e, 0x34, 0x7a, 0xa8, 0xa0, 0x50, 0x75, 0x3d, 0xfb, 0x50, 0x69, 0xfc, 0xa9,
    +	0x80, 0xbb, 0x17, 0x16, 0x24, 0x1f, 0x03, 0xb1, 0x65, 0x39, 0x47, 0xa4, 0x2d, 0x7c, 0x17, 0xa3,
    +	0x31, 0x70, 0x23, 0x14, 0xa3, 0x21, 0x0e, 0xdf, 0x01, 0x53, 0x6d, 0x62, 0x9b, 0xa4, 0x2d, 0x06,
    +	0xc6, 0x62, 0x54, 0xcb, 0x9b, 0x42, 0x8a, 0x24, 0xca, 0x79, 0x1e, 0xc1, 0xd4, 0xb1, 0xe5, 0x88,
    +	0x3a, 0xe2, 0x21, 0x21, 0x45, 0x12, 0x85, 0x1b, 0x60, 0x86, 0xf0, 0x30, 0xc5, 0x26, 0xb6, 0x3c,
    +	0xcf, 0x19, 0x9e, 0xec, 0x82, 0x54, 0x98, 0xd9, 0x4a, 0xc2, 0x68, 0x9c, 0xdf, 0xf8, 0x37, 0x0b,
    +	0xd4, 0x8b, 0xda, 0x1e, 0x3c, 0x8c, 0xa6, 0x18, 0x01, 0x8a, 0x41, 0xaa, 0xbc, 0xa2, 0x5d, 0xfd,
    +	0xca, 0x70, 0x35, 0x7d, 0x5e, 0x46, 0x53, 0x89, 0x4b, 0x63, 0x93, 0x8f, 0x58, 0xc2, 0x23, 0x30,
    +	0x6b, 0x27, 0x1f, 0x14, 0xe1, 0x4c, 0x56, 0x5e, 0x59, 0xbe, 0xd6, 0x05, 0x11, 0x2e, 0x55, 0xe9,
    +	0x72, 0x76, 0x0c, 0xa0, 0xe8, 0x9c, 0x13, 0xb8, 0x02, 0x80, 0x69, 0x1b, 0x4e, 0xcf, 0xb5, 0x08,
    +	0x23, 0x22, 0x81, 0xc5, 0xa8, 0x5b, 0x6e, 0x8f, 0x10, 0x14, 0x63, 0xa5, 0x65, 0x3e, 0x7f, 0xbd,
    +	0xcc, 0xeb, 0x8f, 0x4f, 0xce, 0xaa, 0x99, 0x97, 0x67, 0xd5, 0xcc, 0xe9, 0x59, 0x35, 0xf3, 0x22,
    +	0xa8, 0x2a, 0x27, 0x41, 0x55, 0x79, 0x19, 0x54, 0x95, 0xd3, 0xa0, 0xaa, 0xfc, 0x1d, 0x54, 0x95,
    +	0x1f, 0xfe, 0xa9, 0x66, 0x3e, 0xab, 0x4f, 0xfa, 0x33, 0xe2, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff,
    +	0x46, 0xf7, 0xe0, 0x3d, 0xaf, 0x10, 0x00, 0x00,
     }
     
     func (m ExtraValue) Marshal() (dAtA []byte, err error) {
    @@ -713,6 +717,30 @@ func (m *ResourceAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.LabelSelector != nil {
    +		{
    +			size, err := m.LabelSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x4a
    +	}
    +	if m.FieldSelector != nil {
    +		{
    +			size, err := m.FieldSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x42
    +	}
     	i -= len(m.Name)
     	copy(dAtA[i:], m.Name)
     	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    @@ -1347,6 +1375,14 @@ func (m *ResourceAttributes) Size() (n int) {
     	n += 1 + l + sovGenerated(uint64(l))
     	l = len(m.Name)
     	n += 1 + l + sovGenerated(uint64(l))
    +	if m.FieldSelector != nil {
    +		l = m.FieldSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.LabelSelector != nil {
    +		l = m.LabelSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -1583,6 +1619,8 @@ func (this *ResourceAttributes) String() string {
     		`Resource:` + fmt.Sprintf("%v", this.Resource) + `,`,
     		`Subresource:` + fmt.Sprintf("%v", this.Subresource) + `,`,
     		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`FieldSelector:` + strings.Replace(fmt.Sprintf("%v", this.FieldSelector), "FieldSelectorAttributes", "v11.FieldSelectorAttributes", 1) + `,`,
    +		`LabelSelector:` + strings.Replace(fmt.Sprintf("%v", this.LabelSelector), "LabelSelectorAttributes", "v11.LabelSelectorAttributes", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -2438,6 +2476,78 @@ func (m *ResourceAttributes) Unmarshal(dAtA []byte) error {
     			}
     			m.Name = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    +		case 8:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field FieldSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.FieldSelector == nil {
    +				m.FieldSelector = &v11.FieldSelectorAttributes{}
    +			}
    +			if err := m.FieldSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 9:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.LabelSelector == nil {
    +				m.LabelSelector = &v11.LabelSelectorAttributes{}
    +			}
    +			if err := m.LabelSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    diff --git a/vendor/k8s.io/api/authorization/v1beta1/generated.proto b/vendor/k8s.io/api/authorization/v1beta1/generated.proto
    index 01736202f837..8738768b8907 100644
    --- a/vendor/k8s.io/api/authorization/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/authorization/v1beta1/generated.proto
    @@ -21,6 +21,7 @@ syntax = "proto2";
     
     package k8s.io.api.authorization.v1beta1;
     
    +import "k8s.io/api/authorization/v1/generated.proto";
     import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
     import "k8s.io/apimachinery/pkg/runtime/generated.proto";
     import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    @@ -44,7 +45,7 @@ message LocalSubjectAccessReview {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated.  spec.namespace must be equal to the namespace
       // you made the request against.  If empty, it is defaulted.
    @@ -69,11 +70,13 @@ message NonResourceAttributes {
     // NonResourceRule holds information that describes a rule for the non-resource
     message NonResourceRule {
       // Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options.  "*" means all.
    +  // +listType=atomic
       repeated string verbs = 1;
     
       // NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full,
       // final step in the path.  "*" means all.
       // +optional
    +  // +listType=atomic
       repeated string nonResourceURLs = 2;
     }
     
    @@ -109,26 +112,38 @@ message ResourceAttributes {
       // Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.
       // +optional
       optional string name = 7;
    +
    +  // fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.
    +  // +optional
    +  optional .k8s.io.api.authorization.v1.FieldSelectorAttributes fieldSelector = 8;
    +
    +  // labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.
    +  // +optional
    +  optional .k8s.io.api.authorization.v1.LabelSelectorAttributes labelSelector = 9;
     }
     
     // ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant,
     // may contain duplicates, and possibly be incomplete.
     message ResourceRule {
       // Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy.  "*" means all.
    +  // +listType=atomic
       repeated string verbs = 1;
     
       // APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       // the enumerated resources in any API group will be allowed.  "*" means all.
       // +optional
    +  // +listType=atomic
       repeated string apiGroups = 2;
     
       // Resources is a list of resources this rule applies to.  "*" means all in the specified apiGroups.
       //  "*/foo" represents the subresource 'foo' for all resources in the specified apiGroups.
       // +optional
    +  // +listType=atomic
       repeated string resources = 3;
     
       // ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.  "*" means all.
       // +optional
    +  // +listType=atomic
       repeated string resourceNames = 4;
     }
     
    @@ -139,7 +154,7 @@ message SelfSubjectAccessReview {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated.  user and groups must be empty
       optional SelfSubjectAccessReviewSpec spec = 2;
    @@ -171,7 +186,7 @@ message SelfSubjectRulesReview {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated.
       optional SelfSubjectRulesReviewSpec spec = 2;
    @@ -192,7 +207,7 @@ message SubjectAccessReview {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec holds information about the request being evaluated
       optional SubjectAccessReviewSpec spec = 2;
    @@ -220,6 +235,7 @@ message SubjectAccessReviewSpec {
     
       // Groups is the groups you're testing for.
       // +optional
    +  // +listType=atomic
       repeated string group = 4;
     
       // Extra corresponds to the user.Info.GetExtra() method from the authenticator.  Since that is input to the authorizer
    @@ -262,10 +278,12 @@ message SubjectAccessReviewStatus {
     message SubjectRulesReviewStatus {
       // ResourceRules is the list of actions the subject is allowed to perform on resources.
       // The list ordering isn't significant, may contain duplicates, and possibly be incomplete.
    +  // +listType=atomic
       repeated ResourceRule resourceRules = 1;
     
       // NonResourceRules is the list of actions the subject is allowed to perform on non-resources.
       // The list ordering isn't significant, may contain duplicates, and possibly be incomplete.
    +  // +listType=atomic
       repeated NonResourceRule nonResourceRules = 2;
     
       // Incomplete is true when the rules returned by this call are incomplete. This is most commonly
    diff --git a/vendor/k8s.io/api/authorization/v1beta1/types.go b/vendor/k8s.io/api/authorization/v1beta1/types.go
    index 265309865566..8b8e5a986780 100644
    --- a/vendor/k8s.io/api/authorization/v1beta1/types.go
    +++ b/vendor/k8s.io/api/authorization/v1beta1/types.go
    @@ -19,6 +19,7 @@ package v1beta1
     import (
     	"fmt"
     
    +	authorizationv1 "k8s.io/api/authorization/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    @@ -124,6 +125,12 @@ type ResourceAttributes struct {
     	// Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all.
     	// +optional
     	Name string `json:"name,omitempty" protobuf:"bytes,7,opt,name=name"`
    +	// fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.
    +	// +optional
    +	FieldSelector *authorizationv1.FieldSelectorAttributes `json:"fieldSelector,omitempty" protobuf:"bytes,8,opt,name=fieldSelector"`
    +	// labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.
    +	// +optional
    +	LabelSelector *authorizationv1.LabelSelectorAttributes `json:"labelSelector,omitempty" protobuf:"bytes,9,opt,name=labelSelector"`
     }
     
     // NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface
    @@ -152,6 +159,7 @@ type SubjectAccessReviewSpec struct {
     	User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=user"`
     	// Groups is the groups you're testing for.
     	// +optional
    +	// +listType=atomic
     	Groups []string `json:"group,omitempty" protobuf:"bytes,4,rep,name=group"`
     	// Extra corresponds to the user.Info.GetExtra() method from the authenticator.  Since that is input to the authorizer
     	// it needs a reflection here.
    @@ -244,9 +252,11 @@ type SelfSubjectRulesReviewSpec struct {
     type SubjectRulesReviewStatus struct {
     	// ResourceRules is the list of actions the subject is allowed to perform on resources.
     	// The list ordering isn't significant, may contain duplicates, and possibly be incomplete.
    +	// +listType=atomic
     	ResourceRules []ResourceRule `json:"resourceRules" protobuf:"bytes,1,rep,name=resourceRules"`
     	// NonResourceRules is the list of actions the subject is allowed to perform on non-resources.
     	// The list ordering isn't significant, may contain duplicates, and possibly be incomplete.
    +	// +listType=atomic
     	NonResourceRules []NonResourceRule `json:"nonResourceRules" protobuf:"bytes,2,rep,name=nonResourceRules"`
     	// Incomplete is true when the rules returned by this call are incomplete. This is most commonly
     	// encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.
    @@ -262,28 +272,34 @@ type SubjectRulesReviewStatus struct {
     // may contain duplicates, and possibly be incomplete.
     type ResourceRule struct {
     	// Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy.  "*" means all.
    +	// +listType=atomic
     	Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"`
     
     	// APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     	// the enumerated resources in any API group will be allowed.  "*" means all.
     	// +optional
    +	// +listType=atomic
     	APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,2,rep,name=apiGroups"`
     	// Resources is a list of resources this rule applies to.  "*" means all in the specified apiGroups.
     	//  "*/foo" represents the subresource 'foo' for all resources in the specified apiGroups.
     	// +optional
    +	// +listType=atomic
     	Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"`
     	// ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.  "*" means all.
     	// +optional
    +	// +listType=atomic
     	ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,4,rep,name=resourceNames"`
     }
     
     // NonResourceRule holds information that describes a rule for the non-resource
     type NonResourceRule struct {
     	// Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options.  "*" means all.
    +	// +listType=atomic
     	Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"`
     
     	// NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full,
     	// final step in the path.  "*" means all.
     	// +optional
    +	// +listType=atomic
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,2,rep,name=nonResourceURLs"`
     }
    diff --git a/vendor/k8s.io/api/authorization/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authorization/v1beta1/types_swagger_doc_generated.go
    index e0846be7a4d5..bb1352a2d9d3 100644
    --- a/vendor/k8s.io/api/authorization/v1beta1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/authorization/v1beta1/types_swagger_doc_generated.go
    @@ -59,14 +59,16 @@ func (NonResourceRule) SwaggerDoc() map[string]string {
     }
     
     var map_ResourceAttributes = map[string]string{
    -	"":            "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface",
    -	"namespace":   "Namespace is the namespace of the action being requested.  Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview",
    -	"verb":        "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy.  \"*\" means all.",
    -	"group":       "Group is the API Group of the Resource.  \"*\" means all.",
    -	"version":     "Version is the API Version of the Resource.  \"*\" means all.",
    -	"resource":    "Resource is one of the existing resource types.  \"*\" means all.",
    -	"subresource": "Subresource is one of the existing resource types.  \"\" means none.",
    -	"name":        "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.",
    +	"":              "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface",
    +	"namespace":     "Namespace is the namespace of the action being requested.  Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview",
    +	"verb":          "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy.  \"*\" means all.",
    +	"group":         "Group is the API Group of the Resource.  \"*\" means all.",
    +	"version":       "Version is the API Version of the Resource.  \"*\" means all.",
    +	"resource":      "Resource is one of the existing resource types.  \"*\" means all.",
    +	"subresource":   "Subresource is one of the existing resource types.  \"\" means none.",
    +	"name":          "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.",
    +	"fieldSelector": "fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.",
    +	"labelSelector": "labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.",
     }
     
     func (ResourceAttributes) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go
    index 13f09cf2d278..d76993dba4d5 100644
    --- a/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go
    @@ -22,6 +22,7 @@ limitations under the License.
     package v1beta1
     
     import (
    +	v1 "k8s.io/api/authorization/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     )
     
    @@ -118,6 +119,16 @@ func (in *NonResourceRule) DeepCopy() *NonResourceRule {
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *ResourceAttributes) DeepCopyInto(out *ResourceAttributes) {
     	*out = *in
    +	if in.FieldSelector != nil {
    +		in, out := &in.FieldSelector, &out.FieldSelector
    +		*out = new(v1.FieldSelectorAttributes)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.LabelSelector != nil {
    +		in, out := &in.LabelSelector, &out.LabelSelector
    +		*out = new(v1.LabelSelectorAttributes)
    +		(*in).DeepCopyInto(*out)
    +	}
     	return
     }
     
    @@ -201,7 +212,7 @@ func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReview
     	if in.ResourceAttributes != nil {
     		in, out := &in.ResourceAttributes, &out.ResourceAttributes
     		*out = new(ResourceAttributes)
    -		**out = **in
    +		(*in).DeepCopyInto(*out)
     	}
     	if in.NonResourceAttributes != nil {
     		in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
    @@ -299,7 +310,7 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) {
     	if in.ResourceAttributes != nil {
     		in, out := &in.ResourceAttributes, &out.ResourceAttributes
     		*out = new(ResourceAttributes)
    -		**out = **in
    +		(*in).DeepCopyInto(*out)
     	}
     	if in.NonResourceAttributes != nil {
     		in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
    diff --git a/vendor/k8s.io/api/autoscaling/v1/doc.go b/vendor/k8s.io/api/autoscaling/v1/doc.go
    index 8c9c09b5cb4f..d64c9cbc1a49 100644
    --- a/vendor/k8s.io/api/autoscaling/v1/doc.go
    +++ b/vendor/k8s.io/api/autoscaling/v1/doc.go
    @@ -17,5 +17,6 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     
     package v1 // import "k8s.io/api/autoscaling/v1"
    diff --git a/vendor/k8s.io/api/autoscaling/v1/generated.pb.go b/vendor/k8s.io/api/autoscaling/v1/generated.pb.go
    index 289d1b827f67..3e3c23135195 100644
    --- a/vendor/k8s.io/api/autoscaling/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/autoscaling/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v1/generated.proto
    +// source: k8s.io/api/autoscaling/v1/generated.proto
     
     package v1
     
    @@ -50,7 +50,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ContainerResourceMetricSource) Reset()      { *m = ContainerResourceMetricSource{} }
     func (*ContainerResourceMetricSource) ProtoMessage() {}
     func (*ContainerResourceMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{0}
    +	return fileDescriptor_1972394c0c7aac8b, []int{0}
     }
     func (m *ContainerResourceMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -78,7 +78,7 @@ var xxx_messageInfo_ContainerResourceMetricSource proto.InternalMessageInfo
     func (m *ContainerResourceMetricStatus) Reset()      { *m = ContainerResourceMetricStatus{} }
     func (*ContainerResourceMetricStatus) ProtoMessage() {}
     func (*ContainerResourceMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{1}
    +	return fileDescriptor_1972394c0c7aac8b, []int{1}
     }
     func (m *ContainerResourceMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -106,7 +106,7 @@ var xxx_messageInfo_ContainerResourceMetricStatus proto.InternalMessageInfo
     func (m *CrossVersionObjectReference) Reset()      { *m = CrossVersionObjectReference{} }
     func (*CrossVersionObjectReference) ProtoMessage() {}
     func (*CrossVersionObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{2}
    +	return fileDescriptor_1972394c0c7aac8b, []int{2}
     }
     func (m *CrossVersionObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -134,7 +134,7 @@ var xxx_messageInfo_CrossVersionObjectReference proto.InternalMessageInfo
     func (m *ExternalMetricSource) Reset()      { *m = ExternalMetricSource{} }
     func (*ExternalMetricSource) ProtoMessage() {}
     func (*ExternalMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{3}
    +	return fileDescriptor_1972394c0c7aac8b, []int{3}
     }
     func (m *ExternalMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -162,7 +162,7 @@ var xxx_messageInfo_ExternalMetricSource proto.InternalMessageInfo
     func (m *ExternalMetricStatus) Reset()      { *m = ExternalMetricStatus{} }
     func (*ExternalMetricStatus) ProtoMessage() {}
     func (*ExternalMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{4}
    +	return fileDescriptor_1972394c0c7aac8b, []int{4}
     }
     func (m *ExternalMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -190,7 +190,7 @@ var xxx_messageInfo_ExternalMetricStatus proto.InternalMessageInfo
     func (m *HorizontalPodAutoscaler) Reset()      { *m = HorizontalPodAutoscaler{} }
     func (*HorizontalPodAutoscaler) ProtoMessage() {}
     func (*HorizontalPodAutoscaler) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{5}
    +	return fileDescriptor_1972394c0c7aac8b, []int{5}
     }
     func (m *HorizontalPodAutoscaler) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -218,7 +218,7 @@ var xxx_messageInfo_HorizontalPodAutoscaler proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerCondition) Reset()      { *m = HorizontalPodAutoscalerCondition{} }
     func (*HorizontalPodAutoscalerCondition) ProtoMessage() {}
     func (*HorizontalPodAutoscalerCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{6}
    +	return fileDescriptor_1972394c0c7aac8b, []int{6}
     }
     func (m *HorizontalPodAutoscalerCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -246,7 +246,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerCondition proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerList) Reset()      { *m = HorizontalPodAutoscalerList{} }
     func (*HorizontalPodAutoscalerList) ProtoMessage() {}
     func (*HorizontalPodAutoscalerList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{7}
    +	return fileDescriptor_1972394c0c7aac8b, []int{7}
     }
     func (m *HorizontalPodAutoscalerList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -274,7 +274,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerList proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerSpec) Reset()      { *m = HorizontalPodAutoscalerSpec{} }
     func (*HorizontalPodAutoscalerSpec) ProtoMessage() {}
     func (*HorizontalPodAutoscalerSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{8}
    +	return fileDescriptor_1972394c0c7aac8b, []int{8}
     }
     func (m *HorizontalPodAutoscalerSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -302,7 +302,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerSpec proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerStatus) Reset()      { *m = HorizontalPodAutoscalerStatus{} }
     func (*HorizontalPodAutoscalerStatus) ProtoMessage() {}
     func (*HorizontalPodAutoscalerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{9}
    +	return fileDescriptor_1972394c0c7aac8b, []int{9}
     }
     func (m *HorizontalPodAutoscalerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -330,7 +330,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerStatus proto.InternalMessageInfo
     func (m *MetricSpec) Reset()      { *m = MetricSpec{} }
     func (*MetricSpec) ProtoMessage() {}
     func (*MetricSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{10}
    +	return fileDescriptor_1972394c0c7aac8b, []int{10}
     }
     func (m *MetricSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -358,7 +358,7 @@ var xxx_messageInfo_MetricSpec proto.InternalMessageInfo
     func (m *MetricStatus) Reset()      { *m = MetricStatus{} }
     func (*MetricStatus) ProtoMessage() {}
     func (*MetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{11}
    +	return fileDescriptor_1972394c0c7aac8b, []int{11}
     }
     func (m *MetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -386,7 +386,7 @@ var xxx_messageInfo_MetricStatus proto.InternalMessageInfo
     func (m *ObjectMetricSource) Reset()      { *m = ObjectMetricSource{} }
     func (*ObjectMetricSource) ProtoMessage() {}
     func (*ObjectMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{12}
    +	return fileDescriptor_1972394c0c7aac8b, []int{12}
     }
     func (m *ObjectMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -414,7 +414,7 @@ var xxx_messageInfo_ObjectMetricSource proto.InternalMessageInfo
     func (m *ObjectMetricStatus) Reset()      { *m = ObjectMetricStatus{} }
     func (*ObjectMetricStatus) ProtoMessage() {}
     func (*ObjectMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{13}
    +	return fileDescriptor_1972394c0c7aac8b, []int{13}
     }
     func (m *ObjectMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -442,7 +442,7 @@ var xxx_messageInfo_ObjectMetricStatus proto.InternalMessageInfo
     func (m *PodsMetricSource) Reset()      { *m = PodsMetricSource{} }
     func (*PodsMetricSource) ProtoMessage() {}
     func (*PodsMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{14}
    +	return fileDescriptor_1972394c0c7aac8b, []int{14}
     }
     func (m *PodsMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -470,7 +470,7 @@ var xxx_messageInfo_PodsMetricSource proto.InternalMessageInfo
     func (m *PodsMetricStatus) Reset()      { *m = PodsMetricStatus{} }
     func (*PodsMetricStatus) ProtoMessage() {}
     func (*PodsMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{15}
    +	return fileDescriptor_1972394c0c7aac8b, []int{15}
     }
     func (m *PodsMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -498,7 +498,7 @@ var xxx_messageInfo_PodsMetricStatus proto.InternalMessageInfo
     func (m *ResourceMetricSource) Reset()      { *m = ResourceMetricSource{} }
     func (*ResourceMetricSource) ProtoMessage() {}
     func (*ResourceMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{16}
    +	return fileDescriptor_1972394c0c7aac8b, []int{16}
     }
     func (m *ResourceMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -526,7 +526,7 @@ var xxx_messageInfo_ResourceMetricSource proto.InternalMessageInfo
     func (m *ResourceMetricStatus) Reset()      { *m = ResourceMetricStatus{} }
     func (*ResourceMetricStatus) ProtoMessage() {}
     func (*ResourceMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{17}
    +	return fileDescriptor_1972394c0c7aac8b, []int{17}
     }
     func (m *ResourceMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -554,7 +554,7 @@ var xxx_messageInfo_ResourceMetricStatus proto.InternalMessageInfo
     func (m *Scale) Reset()      { *m = Scale{} }
     func (*Scale) ProtoMessage() {}
     func (*Scale) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{18}
    +	return fileDescriptor_1972394c0c7aac8b, []int{18}
     }
     func (m *Scale) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -582,7 +582,7 @@ var xxx_messageInfo_Scale proto.InternalMessageInfo
     func (m *ScaleSpec) Reset()      { *m = ScaleSpec{} }
     func (*ScaleSpec) ProtoMessage() {}
     func (*ScaleSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{19}
    +	return fileDescriptor_1972394c0c7aac8b, []int{19}
     }
     func (m *ScaleSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -610,7 +610,7 @@ var xxx_messageInfo_ScaleSpec proto.InternalMessageInfo
     func (m *ScaleStatus) Reset()      { *m = ScaleStatus{} }
     func (*ScaleStatus) ProtoMessage() {}
     func (*ScaleStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2bb1f2101a7f10e2, []int{20}
    +	return fileDescriptor_1972394c0c7aac8b, []int{20}
     }
     func (m *ScaleStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -660,112 +660,111 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v1/generated.proto", fileDescriptor_2bb1f2101a7f10e2)
    -}
    -
    -var fileDescriptor_2bb1f2101a7f10e2 = []byte{
    -	// 1608 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x4d, 0x6c, 0xd4, 0xc6,
    -	0x17, 0xcf, 0x7e, 0x24, 0x24, 0x6f, 0x43, 0x3e, 0x06, 0xfe, 0x90, 0x84, 0x3f, 0xeb, 0xc8, 0x7f,
    -	0x84, 0xf2, 0x6f, 0x8b, 0xdd, 0x6c, 0x29, 0xa2, 0xa7, 0x2a, 0xde, 0x96, 0x82, 0x9a, 0x85, 0x30,
    -	0x09, 0x94, 0x7e, 0x8a, 0x89, 0x77, 0xd8, 0x98, 0xac, 0xed, 0x95, 0xed, 0x5d, 0x11, 0x24, 0xa4,
    -	0xf6, 0xd0, 0x7b, 0x2f, 0xb4, 0xd7, 0x56, 0xea, 0xb5, 0x67, 0xce, 0xbd, 0x71, 0xe4, 0x80, 0x54,
    -	0x4e, 0xab, 0xe2, 0x1e, 0x7a, 0xe8, 0xa9, 0x57, 0x4e, 0x95, 0xc7, 0x63, 0xaf, 0xbd, 0xbb, 0x76,
    -	0x36, 0x9b, 0x10, 0xb5, 0x15, 0xb7, 0x78, 0xe7, 0xbd, 0xdf, 0x9b, 0x79, 0xdf, 0xef, 0x05, 0x94,
    -	0xed, 0x8b, 0xb6, 0xa4, 0x99, 0xf2, 0x76, 0x73, 0x93, 0x5a, 0x06, 0x75, 0xa8, 0x2d, 0xb7, 0xa8,
    -	0x51, 0x35, 0x2d, 0x99, 0x1f, 0x90, 0x86, 0x26, 0x93, 0xa6, 0x63, 0xda, 0x2a, 0xa9, 0x6b, 0x46,
    -	0x4d, 0x6e, 0x2d, 0xcb, 0x35, 0x6a, 0x50, 0x8b, 0x38, 0xb4, 0x2a, 0x35, 0x2c, 0xd3, 0x31, 0xd1,
    -	0xbc, 0x4f, 0x2a, 0x91, 0x86, 0x26, 0x45, 0x48, 0xa5, 0xd6, 0xf2, 0xc2, 0xb9, 0x9a, 0xe6, 0x6c,
    -	0x35, 0x37, 0x25, 0xd5, 0xd4, 0xe5, 0x9a, 0x59, 0x33, 0x65, 0xc6, 0xb1, 0xd9, 0xbc, 0xc3, 0xbe,
    -	0xd8, 0x07, 0xfb, 0xcb, 0x47, 0x5a, 0x10, 0x23, 0x42, 0x55, 0xd3, 0xa2, 0x7d, 0xa4, 0x2d, 0x9c,
    -	0xef, 0xd0, 0xe8, 0x44, 0xdd, 0xd2, 0x0c, 0x6a, 0xed, 0xc8, 0x8d, 0xed, 0x1a, 0x63, 0xb2, 0xa8,
    -	0x6d, 0x36, 0x2d, 0x95, 0xee, 0x89, 0xcb, 0x96, 0x75, 0xea, 0x90, 0x7e, 0xb2, 0xe4, 0x24, 0x2e,
    -	0xab, 0x69, 0x38, 0x9a, 0xde, 0x2b, 0xe6, 0xc2, 0x6e, 0x0c, 0xb6, 0xba, 0x45, 0x75, 0xd2, 0xcd,
    -	0x27, 0xfe, 0x9e, 0x85, 0xd3, 0x65, 0xd3, 0x70, 0x88, 0xc7, 0x81, 0xf9, 0x23, 0x2a, 0xd4, 0xb1,
    -	0x34, 0x75, 0x9d, 0xfd, 0x8d, 0xca, 0x90, 0x37, 0x88, 0x4e, 0xe7, 0x32, 0x8b, 0x99, 0xa5, 0x09,
    -	0x45, 0x7e, 0xdc, 0x16, 0x46, 0xdc, 0xb6, 0x90, 0xbf, 0x4a, 0x74, 0xfa, 0xa2, 0x2d, 0x08, 0xbd,
    -	0x8a, 0x93, 0x02, 0x18, 0x8f, 0x04, 0x33, 0x66, 0x74, 0x0b, 0xe6, 0x1c, 0x62, 0xd5, 0xa8, 0xb3,
    -	0xd2, 0xa2, 0x16, 0xa9, 0xd1, 0x1b, 0x8e, 0x56, 0xd7, 0xee, 0x13, 0x47, 0x33, 0x8d, 0xb9, 0xec,
    -	0x62, 0x66, 0x69, 0x54, 0xf9, 0xaf, 0xdb, 0x16, 0xe6, 0x36, 0x12, 0x68, 0x70, 0x22, 0x37, 0x6a,
    -	0x01, 0x8a, 0x9d, 0xdd, 0x24, 0xf5, 0x26, 0x9d, 0xcb, 0x2d, 0x66, 0x96, 0x0a, 0x25, 0x49, 0xea,
    -	0x38, 0x48, 0xa8, 0x15, 0xa9, 0xb1, 0x5d, 0x63, 0x1e, 0x13, 0x98, 0x4c, 0xba, 0xde, 0x24, 0x86,
    -	0xa3, 0x39, 0x3b, 0xca, 0x09, 0xb7, 0x2d, 0xa0, 0x8d, 0x1e, 0x34, 0xdc, 0x47, 0x02, 0x92, 0x61,
    -	0x42, 0x0d, 0xf4, 0x36, 0x37, 0xca, 0x74, 0x33, 0xcb, 0x75, 0x33, 0xd1, 0x51, 0x68, 0x87, 0x46,
    -	0xfc, 0x33, 0x45, 0xd3, 0x0e, 0x71, 0x9a, 0xf6, 0xc1, 0x68, 0xfa, 0x53, 0x98, 0x57, 0x9b, 0x96,
    -	0x45, 0x8d, 0x64, 0x55, 0x9f, 0x76, 0xdb, 0xc2, 0x7c, 0x39, 0x89, 0x08, 0x27, 0xf3, 0xa3, 0x07,
    -	0x70, 0x2c, 0x7e, 0xb8, 0x1f, 0x6d, 0x9f, 0xe2, 0x0f, 0x3c, 0x56, 0xee, 0x85, 0xc4, 0xfd, 0xe4,
    -	0xc4, 0x75, 0x9e, 0x1f, 0x40, 0xe7, 0x0f, 0x33, 0x70, 0xaa, 0x6c, 0x99, 0xb6, 0x7d, 0x93, 0x5a,
    -	0xb6, 0x66, 0x1a, 0xd7, 0x36, 0xef, 0x52, 0xd5, 0xc1, 0xf4, 0x0e, 0xb5, 0xa8, 0xa1, 0x52, 0xb4,
    -	0x08, 0xf9, 0x6d, 0xcd, 0xa8, 0x72, 0x8d, 0x4f, 0x06, 0x1a, 0xff, 0x50, 0x33, 0xaa, 0x98, 0x9d,
    -	0x78, 0x14, 0xcc, 0x26, 0xd9, 0x38, 0x45, 0x44, 0xe1, 0x25, 0x00, 0xd2, 0xd0, 0xb8, 0x00, 0xa6,
    -	0x8a, 0x09, 0x05, 0x71, 0x3a, 0x58, 0x59, 0xbb, 0xc2, 0x4f, 0x70, 0x84, 0x4a, 0xfc, 0x36, 0x07,
    -	0xc7, 0xdf, 0xbf, 0xe7, 0x50, 0xcb, 0x20, 0xf5, 0x58, 0xb0, 0x95, 0x00, 0x74, 0xf6, 0x7d, 0xb5,
    -	0xe3, 0x08, 0x21, 0x58, 0x25, 0x3c, 0xc1, 0x11, 0x2a, 0x64, 0xc2, 0x94, 0xff, 0xb5, 0x4e, 0xeb,
    -	0x54, 0x75, 0x4c, 0x8b, 0x5d, 0xb6, 0x50, 0x7a, 0x2b, 0xcd, 0x1e, 0xb6, 0xe4, 0xa5, 0x1e, 0xa9,
    -	0xb5, 0x2c, 0xad, 0x92, 0x4d, 0x5a, 0x0f, 0x58, 0x15, 0xe4, 0xb6, 0x85, 0xa9, 0x4a, 0x0c, 0x0e,
    -	0x77, 0xc1, 0x23, 0x02, 0x05, 0x3f, 0x20, 0xf6, 0x63, 0xfd, 0x69, 0xb7, 0x2d, 0x14, 0x36, 0x3a,
    -	0x30, 0x38, 0x8a, 0x99, 0x10, 0xd5, 0xf9, 0x97, 0x1d, 0xd5, 0xe2, 0xf7, 0xbd, 0x86, 0xf1, 0x63,
    -	0xf3, 0x1f, 0x61, 0x98, 0x2d, 0x98, 0xe4, 0x61, 0xb3, 0x1f, 0xcb, 0x1c, 0xe7, 0xcf, 0x9a, 0x2c,
    -	0x47, 0xb0, 0x70, 0x0c, 0x19, 0xed, 0xf4, 0x4f, 0x04, 0xc3, 0x19, 0xe8, 0xe4, 0x5e, 0x92, 0x80,
    -	0xf8, 0x28, 0x0b, 0x27, 0x2f, 0x9b, 0x96, 0x76, 0xdf, 0x8b, 0xf2, 0xfa, 0x9a, 0x59, 0x5d, 0xe1,
    -	0x95, 0x9f, 0x5a, 0xe8, 0x36, 0x8c, 0x7b, 0xda, 0xab, 0x12, 0x87, 0x30, 0x1b, 0x15, 0x4a, 0x6f,
    -	0x0e, 0xa6, 0x6b, 0x3f, 0x31, 0x54, 0xa8, 0x43, 0x3a, 0x56, 0xed, 0xfc, 0x86, 0x43, 0x54, 0x74,
    -	0x0b, 0xf2, 0x76, 0x83, 0xaa, 0xdc, 0x92, 0x17, 0xa4, 0xc4, 0x0e, 0x44, 0x4a, 0xb8, 0xe3, 0x7a,
    -	0x83, 0xaa, 0x9d, 0x3c, 0xe2, 0x7d, 0x61, 0x86, 0x88, 0x6e, 0xc3, 0x98, 0xcd, 0x7c, 0x8d, 0x9b,
    -	0xed, 0xe2, 0x10, 0xd8, 0x8c, 0x5f, 0x99, 0xe2, 0xe8, 0x63, 0xfe, 0x37, 0xe6, 0xb8, 0xe2, 0xd7,
    -	0x39, 0x58, 0x4c, 0xe0, 0x2c, 0x9b, 0x46, 0x55, 0x63, 0x29, 0xfe, 0x32, 0xe4, 0x9d, 0x9d, 0x46,
    -	0xe0, 0xe2, 0xe7, 0x83, 0x8b, 0x6e, 0xec, 0x34, 0xbc, 0x22, 0x74, 0x66, 0x37, 0x7e, 0x8f, 0x0e,
    -	0x33, 0x04, 0xb4, 0x1a, 0x3e, 0x28, 0x1b, 0xc3, 0xe2, 0xd7, 0x7a, 0xd1, 0x16, 0xfa, 0x74, 0x5d,
    -	0x52, 0x88, 0x14, 0xbf, 0xbc, 0x97, 0x11, 0xea, 0xc4, 0x76, 0x36, 0x2c, 0x62, 0xd8, 0xbe, 0x24,
    -	0x4d, 0x0f, 0x3c, 0xfc, 0xb5, 0xc1, 0x8c, 0xec, 0x71, 0x28, 0x0b, 0xfc, 0x16, 0x68, 0xb5, 0x07,
    -	0x0d, 0xf7, 0x91, 0x80, 0xce, 0xc2, 0x98, 0x45, 0x89, 0x6d, 0x1a, 0xbc, 0xe0, 0x84, 0xca, 0xc5,
    -	0xec, 0x57, 0xcc, 0x4f, 0xd1, 0xff, 0xe1, 0x88, 0x4e, 0x6d, 0x9b, 0xd4, 0x28, 0xef, 0x06, 0xa6,
    -	0x39, 0xe1, 0x91, 0x8a, 0xff, 0x33, 0x0e, 0xce, 0xc5, 0xa7, 0x19, 0x38, 0x95, 0xa0, 0xc7, 0x55,
    -	0xcd, 0x76, 0xd0, 0x67, 0x3d, 0x5e, 0x2c, 0x0d, 0x98, 0x31, 0x34, 0xdb, 0xf7, 0xe1, 0x19, 0x2e,
    -	0x7b, 0x3c, 0xf8, 0x25, 0xe2, 0xc1, 0x1f, 0xc1, 0xa8, 0xe6, 0x50, 0xdd, 0xb3, 0x4a, 0x6e, 0xa9,
    -	0x50, 0x2a, 0xed, 0xdd, 0xcd, 0x94, 0xa3, 0x1c, 0x7e, 0xf4, 0x8a, 0x07, 0x84, 0x7d, 0x3c, 0xf1,
    -	0x8f, 0x6c, 0xe2, 0xb3, 0x3c, 0x37, 0x47, 0x2d, 0x98, 0x62, 0x5f, 0x7e, 0x2a, 0xc6, 0xf4, 0x0e,
    -	0x7f, 0x5c, 0x5a, 0x10, 0xa5, 0x14, 0x6f, 0xe5, 0x04, 0xbf, 0xc5, 0xd4, 0x7a, 0x0c, 0x15, 0x77,
    -	0x49, 0x41, 0xcb, 0x50, 0xd0, 0x35, 0x03, 0xd3, 0x46, 0x5d, 0x53, 0x89, 0xcd, 0x7b, 0x20, 0x56,
    -	0x7e, 0x2a, 0x9d, 0x9f, 0x71, 0x94, 0x06, 0xbd, 0x0d, 0x05, 0x9d, 0xdc, 0x0b, 0x59, 0x72, 0x8c,
    -	0xe5, 0x18, 0x97, 0x57, 0xa8, 0x74, 0x8e, 0x70, 0x94, 0x0e, 0xdd, 0x85, 0xa2, 0x5f, 0x53, 0xca,
    -	0x6b, 0x37, 0x22, 0x6d, 0xd3, 0x1a, 0xb5, 0x54, 0x6a, 0x38, 0x9e, 0x6b, 0xe4, 0x19, 0x92, 0xe8,
    -	0xb6, 0x85, 0xe2, 0x46, 0x2a, 0x25, 0xde, 0x05, 0x49, 0xfc, 0x39, 0x07, 0xa7, 0x53, 0xd3, 0x00,
    -	0xba, 0x04, 0xc8, 0xdc, 0xb4, 0xa9, 0xd5, 0xa2, 0xd5, 0x0f, 0xfc, 0xae, 0xdf, 0x6b, 0x50, 0x3c,
    -	0x9d, 0xe7, 0xfc, 0x9a, 0x78, 0xad, 0xe7, 0x14, 0xf7, 0xe1, 0x40, 0x2a, 0x1c, 0xf5, 0xe2, 0xc2,
    -	0xd7, 0xb2, 0xc6, 0x7b, 0xa1, 0xbd, 0x05, 0xdd, 0xac, 0xdb, 0x16, 0x8e, 0xae, 0x46, 0x41, 0x70,
    -	0x1c, 0x13, 0xad, 0xc0, 0x34, 0x4f, 0xf6, 0x5d, 0x5a, 0x3f, 0xc9, 0xb5, 0x3e, 0x5d, 0x8e, 0x1f,
    -	0xe3, 0x6e, 0x7a, 0x0f, 0xa2, 0x4a, 0x6d, 0xcd, 0xa2, 0xd5, 0x10, 0x22, 0x1f, 0x87, 0x78, 0x2f,
    -	0x7e, 0x8c, 0xbb, 0xe9, 0x91, 0x0e, 0x02, 0x47, 0x4d, 0xb4, 0xe0, 0x28, 0x83, 0xfc, 0x9f, 0xdb,
    -	0x16, 0x84, 0x72, 0x3a, 0x29, 0xde, 0x0d, 0x4b, 0x7c, 0x98, 0x07, 0xde, 0x3b, 0xb0, 0x00, 0x39,
    -	0x1f, 0x4b, 0xbd, 0x8b, 0x5d, 0xa9, 0x77, 0x26, 0xda, 0x28, 0x46, 0xd2, 0xec, 0x75, 0x18, 0x33,
    -	0x59, 0x64, 0x70, 0xbb, 0x9c, 0x4b, 0x09, 0xa7, 0xb0, 0xa4, 0x85, 0x40, 0x0a, 0x78, 0xb9, 0x8c,
    -	0x87, 0x16, 0x07, 0x42, 0x57, 0x20, 0xdf, 0x30, 0xab, 0x41, 0x21, 0x7a, 0x3d, 0x05, 0x70, 0xcd,
    -	0xac, 0xda, 0x31, 0xb8, 0x71, 0xef, 0xc6, 0xde, 0xaf, 0x98, 0x41, 0xa0, 0x8f, 0x61, 0x3c, 0x28,
    -	0xf8, 0xbc, 0x3b, 0x90, 0x53, 0xe0, 0xfa, 0x0d, 0xa0, 0xca, 0xa4, 0x97, 0xc8, 0x82, 0x13, 0x1c,
    -	0xc2, 0xa1, 0x07, 0x30, 0xab, 0x76, 0xcf, 0x53, 0x73, 0x47, 0x76, 0xad, 0x9d, 0xa9, 0xd3, 0xae,
    -	0xf2, 0x1f, 0xb7, 0x2d, 0xcc, 0xf6, 0x90, 0xe0, 0x5e, 0x49, 0xde, 0xcb, 0x28, 0xef, 0x14, 0x99,
    -	0x53, 0xa4, 0xbf, 0xac, 0x5f, 0xb7, 0xef, 0xbf, 0x2c, 0x38, 0xc1, 0x21, 0x9c, 0xf8, 0x5d, 0x1e,
    -	0x26, 0x63, 0xdd, 0xe7, 0x21, 0x7b, 0x86, 0xdf, 0x46, 0x1c, 0x98, 0x67, 0xf8, 0x70, 0x07, 0xea,
    -	0x19, 0x3e, 0xe4, 0x21, 0x79, 0x86, 0x2f, 0xec, 0x90, 0x3c, 0x23, 0xf2, 0xb2, 0x3e, 0x9e, 0xf1,
    -	0x34, 0x07, 0xa8, 0x37, 0x88, 0xd1, 0x17, 0x30, 0xe6, 0x97, 0x8b, 0x7d, 0x96, 0xd4, 0xb0, 0xb9,
    -	0xe1, 0xd5, 0x93, 0xa3, 0x76, 0x4d, 0x3f, 0xd9, 0x81, 0xa6, 0x1f, 0x7a, 0x10, 0x53, 0x62, 0x58,
    -	0x73, 0x13, 0x27, 0xc5, 0xcf, 0x61, 0xdc, 0x0e, 0xc6, 0xab, 0xfc, 0xf0, 0xe3, 0x15, 0x53, 0x78,
    -	0x38, 0x58, 0x85, 0x90, 0xa8, 0x0a, 0x93, 0x24, 0x3a, 0xe1, 0x8c, 0x0e, 0xf5, 0x8c, 0x19, 0x6f,
    -	0x9c, 0x8a, 0x8d, 0x36, 0x31, 0x54, 0xf1, 0x97, 0x6e, 0xb3, 0xfa, 0x61, 0xff, 0x77, 0x34, 0xeb,
    -	0xe1, 0xcd, 0x98, 0xff, 0x0a, 0xcb, 0xfe, 0x90, 0x85, 0x99, 0xee, 0x22, 0x39, 0xd4, 0x32, 0xe1,
    -	0x7e, 0xdf, 0x8d, 0x48, 0x76, 0xa8, 0x4b, 0x87, 0x33, 0xd0, 0x80, 0xbb, 0xce, 0xa8, 0x25, 0x72,
    -	0x07, 0x6e, 0x09, 0xf1, 0xc7, 0xb8, 0x8e, 0x86, 0x5f, 0xb8, 0x24, 0xac, 0x27, 0xb3, 0x87, 0xb4,
    -	0x9e, 0x7c, 0xc9, 0x6a, 0xfa, 0x29, 0x0b, 0xc7, 0x5f, 0x6d, 0xe8, 0x07, 0xdf, 0xe5, 0x3d, 0xea,
    -	0xd5, 0xd7, 0xab, 0x3d, 0xfb, 0x40, 0x2b, 0xb6, 0xaf, 0xb2, 0x30, 0xca, 0x46, 0xb3, 0x43, 0x58,
    -	0xa8, 0x5d, 0x8a, 0x2d, 0xd4, 0xce, 0xa4, 0x54, 0x38, 0x76, 0xa3, 0xc4, 0xf5, 0xd9, 0xd5, 0xae,
    -	0xf5, 0xd9, 0xd9, 0x5d, 0x91, 0xd2, 0x97, 0x65, 0xef, 0xc0, 0x44, 0x28, 0x10, 0xbd, 0xe1, 0xf5,
    -	0xaa, 0x7c, 0xa6, 0xcc, 0x30, 0xdb, 0x86, 0x1b, 0x96, 0x70, 0x98, 0x0c, 0x29, 0x44, 0x0d, 0x0a,
    -	0x11, 0x09, 0x7b, 0x63, 0xf6, 0xa8, 0xed, 0xe8, 0xba, 0x78, 0xa2, 0x43, 0xdd, 0x9b, 0x13, 0x94,
    -	0x77, 0x1f, 0x3f, 0x2f, 0x8e, 0x3c, 0x79, 0x5e, 0x1c, 0x79, 0xf6, 0xbc, 0x38, 0xf2, 0xa5, 0x5b,
    -	0xcc, 0x3c, 0x76, 0x8b, 0x99, 0x27, 0x6e, 0x31, 0xf3, 0xcc, 0x2d, 0x66, 0x7e, 0x75, 0x8b, 0x99,
    -	0x6f, 0x7e, 0x2b, 0x8e, 0x7c, 0x32, 0x9f, 0xf8, 0x2f, 0xd5, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff,
    -	0x5d, 0x92, 0x55, 0x29, 0x87, 0x1d, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/autoscaling/v1/generated.proto", fileDescriptor_1972394c0c7aac8b)
    +}
    +
    +var fileDescriptor_1972394c0c7aac8b = []byte{
    +	// 1593 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x4d, 0x6c, 0x13, 0xd7,
    +	0x16, 0x8e, 0x7f, 0x12, 0x92, 0xe3, 0x90, 0x9f, 0x0b, 0x0f, 0x92, 0xf0, 0xf0, 0x44, 0xf3, 0x10,
    +	0x0a, 0xef, 0x3d, 0xc6, 0x8d, 0x4b, 0x11, 0x5d, 0x55, 0xb1, 0x5b, 0x0a, 0x6a, 0x0c, 0xe1, 0x26,
    +	0x50, 0xfa, 0x2b, 0x6e, 0xc6, 0x17, 0x67, 0x88, 0x67, 0xc6, 0x9a, 0x19, 0x5b, 0x04, 0x09, 0xa9,
    +	0x5d, 0x74, 0xdf, 0x0d, 0xed, 0xb6, 0x95, 0xba, 0xed, 0x9a, 0x75, 0x77, 0x2c, 0x59, 0x20, 0x95,
    +	0x95, 0x55, 0xa6, 0x8b, 0x2e, 0xba, 0xea, 0x96, 0x55, 0x75, 0xef, 0xdc, 0x19, 0xcf, 0xd8, 0x9e,
    +	0x89, 0xe3, 0x84, 0xa8, 0xad, 0xd8, 0x65, 0x7c, 0xcf, 0xf9, 0xce, 0xbd, 0xe7, 0xff, 0x9c, 0xc0,
    +	0xb9, 0xed, 0x4b, 0xb6, 0xa2, 0x99, 0x05, 0xd2, 0xd0, 0x0a, 0xa4, 0xe9, 0x98, 0xb6, 0x4a, 0xea,
    +	0x9a, 0x51, 0x2b, 0xb4, 0x96, 0x0b, 0x35, 0x6a, 0x50, 0x8b, 0x38, 0xb4, 0xaa, 0x34, 0x2c, 0xd3,
    +	0x31, 0xd1, 0xbc, 0x47, 0xaa, 0x90, 0x86, 0xa6, 0x84, 0x48, 0x95, 0xd6, 0xf2, 0xc2, 0xf9, 0x9a,
    +	0xe6, 0x6c, 0x35, 0x37, 0x15, 0xd5, 0xd4, 0x0b, 0x35, 0xb3, 0x66, 0x16, 0x38, 0xc7, 0x66, 0xf3,
    +	0x2e, 0xff, 0xe2, 0x1f, 0xfc, 0x2f, 0x0f, 0x69, 0x41, 0x0e, 0x09, 0x55, 0x4d, 0x8b, 0xf6, 0x91,
    +	0xb6, 0x70, 0xa1, 0x43, 0xa3, 0x13, 0x75, 0x4b, 0x33, 0xa8, 0xb5, 0x53, 0x68, 0x6c, 0xd7, 0x38,
    +	0x93, 0x45, 0x6d, 0xb3, 0x69, 0xa9, 0x74, 0x4f, 0x5c, 0x76, 0x41, 0xa7, 0x0e, 0xe9, 0x27, 0xab,
    +	0x10, 0xc7, 0x65, 0x35, 0x0d, 0x47, 0xd3, 0x7b, 0xc5, 0x5c, 0xdc, 0x8d, 0xc1, 0x56, 0xb7, 0xa8,
    +	0x4e, 0xba, 0xf9, 0xe4, 0xdf, 0xd2, 0x70, 0xba, 0x6c, 0x1a, 0x0e, 0x61, 0x1c, 0x58, 0x3c, 0xa2,
    +	0x42, 0x1d, 0x4b, 0x53, 0xd7, 0xf9, 0xdf, 0xa8, 0x0c, 0x59, 0x83, 0xe8, 0x74, 0x2e, 0xb5, 0x98,
    +	0x5a, 0x9a, 0x28, 0x15, 0x9e, 0xb4, 0xa5, 0x11, 0xb7, 0x2d, 0x65, 0xaf, 0x11, 0x9d, 0xbe, 0x6c,
    +	0x4b, 0x52, 0xaf, 0xe2, 0x14, 0x1f, 0x86, 0x91, 0x60, 0xce, 0x8c, 0x6e, 0xc3, 0x9c, 0x43, 0xac,
    +	0x1a, 0x75, 0x56, 0x5a, 0xd4, 0x22, 0x35, 0x7a, 0xd3, 0xd1, 0xea, 0xda, 0x03, 0xe2, 0x68, 0xa6,
    +	0x31, 0x97, 0x5e, 0x4c, 0x2d, 0x8d, 0x96, 0xfe, 0xed, 0xb6, 0xa5, 0xb9, 0x8d, 0x18, 0x1a, 0x1c,
    +	0xcb, 0x8d, 0x5a, 0x80, 0x22, 0x67, 0xb7, 0x48, 0xbd, 0x49, 0xe7, 0x32, 0x8b, 0xa9, 0xa5, 0x5c,
    +	0x51, 0x51, 0x3a, 0x0e, 0x12, 0x68, 0x45, 0x69, 0x6c, 0xd7, 0xb8, 0xc7, 0xf8, 0x26, 0x53, 0x6e,
    +	0x34, 0x89, 0xe1, 0x68, 0xce, 0x4e, 0xe9, 0x84, 0xdb, 0x96, 0xd0, 0x46, 0x0f, 0x1a, 0xee, 0x23,
    +	0x01, 0x15, 0x60, 0x42, 0xf5, 0xf5, 0x36, 0x37, 0xca, 0x75, 0x33, 0x2b, 0x74, 0x33, 0xd1, 0x51,
    +	0x68, 0x87, 0x46, 0xfe, 0x23, 0x41, 0xd3, 0x0e, 0x71, 0x9a, 0xf6, 0xc1, 0x68, 0xfa, 0x13, 0x98,
    +	0x57, 0x9b, 0x96, 0x45, 0x8d, 0x78, 0x55, 0x9f, 0x76, 0xdb, 0xd2, 0x7c, 0x39, 0x8e, 0x08, 0xc7,
    +	0xf3, 0xa3, 0x87, 0x70, 0x2c, 0x7a, 0xb8, 0x1f, 0x6d, 0x9f, 0x12, 0x0f, 0x3c, 0x56, 0xee, 0x85,
    +	0xc4, 0xfd, 0xe4, 0x44, 0x75, 0x9e, 0x1d, 0x40, 0xe7, 0x8f, 0x52, 0x70, 0xaa, 0x6c, 0x99, 0xb6,
    +	0x7d, 0x8b, 0x5a, 0xb6, 0x66, 0x1a, 0xd7, 0x37, 0xef, 0x51, 0xd5, 0xc1, 0xf4, 0x2e, 0xb5, 0xa8,
    +	0xa1, 0x52, 0xb4, 0x08, 0xd9, 0x6d, 0xcd, 0xa8, 0x0a, 0x8d, 0x4f, 0xfa, 0x1a, 0xff, 0x40, 0x33,
    +	0xaa, 0x98, 0x9f, 0x30, 0x0a, 0x6e, 0x93, 0x74, 0x94, 0x22, 0xa4, 0xf0, 0x22, 0x00, 0x69, 0x68,
    +	0x42, 0x00, 0x57, 0xc5, 0x44, 0x09, 0x09, 0x3a, 0x58, 0x59, 0xbb, 0x2a, 0x4e, 0x70, 0x88, 0x4a,
    +	0xfe, 0x26, 0x03, 0xc7, 0xdf, 0xbb, 0xef, 0x50, 0xcb, 0x20, 0xf5, 0x48, 0xb0, 0x15, 0x01, 0x74,
    +	0xfe, 0x7d, 0xad, 0xe3, 0x08, 0x01, 0x58, 0x25, 0x38, 0xc1, 0x21, 0x2a, 0x64, 0xc2, 0x94, 0xf7,
    +	0xb5, 0x4e, 0xeb, 0x54, 0x75, 0x4c, 0x8b, 0x5f, 0x36, 0x57, 0x7c, 0x33, 0xc9, 0x1e, 0xb6, 0xc2,
    +	0x52, 0x8f, 0xd2, 0x5a, 0x56, 0x56, 0xc9, 0x26, 0xad, 0xfb, 0xac, 0x25, 0xe4, 0xb6, 0xa5, 0xa9,
    +	0x4a, 0x04, 0x0e, 0x77, 0xc1, 0x23, 0x02, 0x39, 0x2f, 0x20, 0xf6, 0x63, 0xfd, 0x69, 0xb7, 0x2d,
    +	0xe5, 0x36, 0x3a, 0x30, 0x38, 0x8c, 0x19, 0x13, 0xd5, 0xd9, 0x57, 0x1d, 0xd5, 0xf2, 0x77, 0xbd,
    +	0x86, 0xf1, 0x62, 0xf3, 0x6f, 0x61, 0x98, 0x2d, 0x98, 0x14, 0x61, 0xb3, 0x1f, 0xcb, 0x1c, 0x17,
    +	0xcf, 0x9a, 0x2c, 0x87, 0xb0, 0x70, 0x04, 0x19, 0xed, 0xf4, 0x4f, 0x04, 0xc3, 0x19, 0xe8, 0xe4,
    +	0x5e, 0x92, 0x80, 0xfc, 0x38, 0x0d, 0x27, 0xaf, 0x98, 0x96, 0xf6, 0x80, 0x45, 0x79, 0x7d, 0xcd,
    +	0xac, 0xae, 0x88, 0xca, 0x4f, 0x2d, 0x74, 0x07, 0xc6, 0x99, 0xf6, 0xaa, 0xc4, 0x21, 0xdc, 0x46,
    +	0xb9, 0xe2, 0x1b, 0x83, 0xe9, 0xda, 0x4b, 0x0c, 0x15, 0xea, 0x90, 0x8e, 0x55, 0x3b, 0xbf, 0xe1,
    +	0x00, 0x15, 0xdd, 0x86, 0xac, 0xdd, 0xa0, 0xaa, 0xb0, 0xe4, 0x45, 0x25, 0xb6, 0x03, 0x51, 0x62,
    +	0xee, 0xb8, 0xde, 0xa0, 0x6a, 0x27, 0x8f, 0xb0, 0x2f, 0xcc, 0x11, 0xd1, 0x1d, 0x18, 0xb3, 0xb9,
    +	0xaf, 0x09, 0xb3, 0x5d, 0x1a, 0x02, 0x9b, 0xf3, 0x97, 0xa6, 0x04, 0xfa, 0x98, 0xf7, 0x8d, 0x05,
    +	0xae, 0xfc, 0x55, 0x06, 0x16, 0x63, 0x38, 0xcb, 0xa6, 0x51, 0xd5, 0x78, 0x8a, 0xbf, 0x02, 0x59,
    +	0x67, 0xa7, 0xe1, 0xbb, 0xf8, 0x05, 0xff, 0xa2, 0x1b, 0x3b, 0x0d, 0x56, 0x84, 0xce, 0xec, 0xc6,
    +	0xcf, 0xe8, 0x30, 0x47, 0x40, 0xab, 0xc1, 0x83, 0xd2, 0x11, 0x2c, 0x71, 0xad, 0x97, 0x6d, 0xa9,
    +	0x4f, 0xd7, 0xa5, 0x04, 0x48, 0xd1, 0xcb, 0xb3, 0x8c, 0x50, 0x27, 0xb6, 0xb3, 0x61, 0x11, 0xc3,
    +	0xf6, 0x24, 0x69, 0xba, 0xef, 0xe1, 0xff, 0x1d, 0xcc, 0xc8, 0x8c, 0xa3, 0xb4, 0x20, 0x6e, 0x81,
    +	0x56, 0x7b, 0xd0, 0x70, 0x1f, 0x09, 0xe8, 0x2c, 0x8c, 0x59, 0x94, 0xd8, 0xa6, 0x21, 0x0a, 0x4e,
    +	0xa0, 0x5c, 0xcc, 0x7f, 0xc5, 0xe2, 0x14, 0x9d, 0x83, 0x23, 0x3a, 0xb5, 0x6d, 0x52, 0xa3, 0xa2,
    +	0x1b, 0x98, 0x16, 0x84, 0x47, 0x2a, 0xde, 0xcf, 0xd8, 0x3f, 0x97, 0x9f, 0xa5, 0xe0, 0x54, 0x8c,
    +	0x1e, 0x57, 0x35, 0xdb, 0x41, 0x9f, 0xf6, 0x78, 0xb1, 0x32, 0x60, 0xc6, 0xd0, 0x6c, 0xcf, 0x87,
    +	0x67, 0x84, 0xec, 0x71, 0xff, 0x97, 0x90, 0x07, 0x7f, 0x08, 0xa3, 0x9a, 0x43, 0x75, 0x66, 0x95,
    +	0xcc, 0x52, 0xae, 0x58, 0xdc, 0xbb, 0x9b, 0x95, 0x8e, 0x0a, 0xf8, 0xd1, 0xab, 0x0c, 0x08, 0x7b,
    +	0x78, 0xf2, 0xef, 0xe9, 0xd8, 0x67, 0x31, 0x37, 0x47, 0x2d, 0x98, 0xe2, 0x5f, 0x5e, 0x2a, 0xc6,
    +	0xf4, 0xae, 0x78, 0x5c, 0x52, 0x10, 0x25, 0x14, 0xef, 0xd2, 0x09, 0x71, 0x8b, 0xa9, 0xf5, 0x08,
    +	0x2a, 0xee, 0x92, 0x82, 0x96, 0x21, 0xa7, 0x6b, 0x06, 0xa6, 0x8d, 0xba, 0xa6, 0x12, 0x5b, 0xf4,
    +	0x40, 0xbc, 0xfc, 0x54, 0x3a, 0x3f, 0xe3, 0x30, 0x0d, 0x7a, 0x0b, 0x72, 0x3a, 0xb9, 0x1f, 0xb0,
    +	0x64, 0x38, 0xcb, 0x31, 0x21, 0x2f, 0x57, 0xe9, 0x1c, 0xe1, 0x30, 0x1d, 0xba, 0x07, 0x79, 0xaf,
    +	0xa6, 0x94, 0xd7, 0x6e, 0x86, 0xda, 0xa6, 0x35, 0x6a, 0xa9, 0xd4, 0x70, 0x98, 0x6b, 0x64, 0x39,
    +	0x92, 0xec, 0xb6, 0xa5, 0xfc, 0x46, 0x22, 0x25, 0xde, 0x05, 0x49, 0xfe, 0x29, 0x03, 0xa7, 0x13,
    +	0xd3, 0x00, 0xba, 0x0c, 0xc8, 0xdc, 0xb4, 0xa9, 0xd5, 0xa2, 0xd5, 0xf7, 0xbd, 0xae, 0x9f, 0x35,
    +	0x28, 0x4c, 0xe7, 0x19, 0xaf, 0x26, 0x5e, 0xef, 0x39, 0xc5, 0x7d, 0x38, 0x90, 0x0a, 0x47, 0x59,
    +	0x5c, 0x78, 0x5a, 0xd6, 0x44, 0x2f, 0xb4, 0xb7, 0xa0, 0x9b, 0x75, 0xdb, 0xd2, 0xd1, 0xd5, 0x30,
    +	0x08, 0x8e, 0x62, 0xa2, 0x15, 0x98, 0x16, 0xc9, 0xbe, 0x4b, 0xeb, 0x27, 0x85, 0xd6, 0xa7, 0xcb,
    +	0xd1, 0x63, 0xdc, 0x4d, 0xcf, 0x20, 0xaa, 0xd4, 0xd6, 0x2c, 0x5a, 0x0d, 0x20, 0xb2, 0x51, 0x88,
    +	0x77, 0xa3, 0xc7, 0xb8, 0x9b, 0x1e, 0xe9, 0x20, 0x09, 0xd4, 0x58, 0x0b, 0x8e, 0x72, 0xc8, 0xff,
    +	0xb8, 0x6d, 0x49, 0x2a, 0x27, 0x93, 0xe2, 0xdd, 0xb0, 0xe4, 0x47, 0x59, 0x10, 0xbd, 0x03, 0x0f,
    +	0x90, 0x0b, 0x91, 0xd4, 0xbb, 0xd8, 0x95, 0x7a, 0x67, 0xc2, 0x8d, 0x62, 0x28, 0xcd, 0xde, 0x80,
    +	0x31, 0x93, 0x47, 0x86, 0xb0, 0xcb, 0xf9, 0x84, 0x70, 0x0a, 0x4a, 0x5a, 0x00, 0x54, 0x02, 0x96,
    +	0xcb, 0x44, 0x68, 0x09, 0x20, 0x74, 0x15, 0xb2, 0x0d, 0xb3, 0xea, 0x17, 0xa2, 0xff, 0x25, 0x00,
    +	0xae, 0x99, 0x55, 0x3b, 0x02, 0x37, 0xce, 0x6e, 0xcc, 0x7e, 0xc5, 0x1c, 0x02, 0x7d, 0x04, 0xe3,
    +	0x7e, 0xc1, 0x17, 0xdd, 0x41, 0x21, 0x01, 0xae, 0xdf, 0x00, 0x5a, 0x9a, 0x64, 0x89, 0xcc, 0x3f,
    +	0xc1, 0x01, 0x1c, 0x7a, 0x08, 0xb3, 0x6a, 0xf7, 0x3c, 0x35, 0x77, 0x64, 0xd7, 0xda, 0x99, 0x38,
    +	0xed, 0x96, 0xfe, 0xe5, 0xb6, 0xa5, 0xd9, 0x1e, 0x12, 0xdc, 0x2b, 0x89, 0xbd, 0x8c, 0x8a, 0x4e,
    +	0x91, 0x3b, 0x45, 0xf2, 0xcb, 0xfa, 0x75, 0xfb, 0xde, 0xcb, 0xfc, 0x13, 0x1c, 0xc0, 0xc9, 0xdf,
    +	0x66, 0x61, 0x32, 0xd2, 0x7d, 0x1e, 0xb2, 0x67, 0x78, 0x6d, 0xc4, 0x81, 0x79, 0x86, 0x07, 0x77,
    +	0xa0, 0x9e, 0xe1, 0x41, 0x1e, 0x92, 0x67, 0x78, 0xc2, 0x0e, 0xc9, 0x33, 0x42, 0x2f, 0xeb, 0xe3,
    +	0x19, 0xcf, 0x32, 0x80, 0x7a, 0x83, 0x18, 0x7d, 0x0e, 0x63, 0x5e, 0xb9, 0xd8, 0x67, 0x49, 0x0d,
    +	0x9a, 0x1b, 0x51, 0x3d, 0x05, 0x6a, 0xd7, 0xf4, 0x93, 0x1e, 0x68, 0xfa, 0xa1, 0x07, 0x31, 0x25,
    +	0x06, 0x35, 0x37, 0x76, 0x52, 0xfc, 0x0c, 0xc6, 0x6d, 0x7f, 0xbc, 0xca, 0x0e, 0x3f, 0x5e, 0x71,
    +	0x85, 0x07, 0x83, 0x55, 0x00, 0x89, 0xaa, 0x30, 0x49, 0xc2, 0x13, 0xce, 0xe8, 0x50, 0xcf, 0x98,
    +	0x61, 0xe3, 0x54, 0x64, 0xb4, 0x89, 0xa0, 0xca, 0x3f, 0x77, 0x9b, 0xd5, 0x0b, 0xfb, 0xbf, 0xa2,
    +	0x59, 0x0f, 0x6f, 0xc6, 0xfc, 0x47, 0x58, 0xf6, 0xfb, 0x34, 0xcc, 0x74, 0x17, 0xc9, 0xa1, 0x96,
    +	0x09, 0x0f, 0xfa, 0x6e, 0x44, 0xd2, 0x43, 0x5d, 0x3a, 0x98, 0x81, 0x06, 0xdc, 0x75, 0x86, 0x2d,
    +	0x91, 0x39, 0x70, 0x4b, 0xc8, 0x3f, 0x44, 0x75, 0x34, 0xfc, 0xc2, 0x25, 0x66, 0x3d, 0x99, 0x3e,
    +	0xa4, 0xf5, 0xe4, 0x2b, 0x56, 0xd3, 0x8f, 0x69, 0x38, 0xfe, 0x7a, 0x43, 0x3f, 0xf8, 0x2e, 0xef,
    +	0x71, 0xaf, 0xbe, 0x5e, 0xef, 0xd9, 0x07, 0x5a, 0xb1, 0x7d, 0x99, 0x86, 0x51, 0x3e, 0x9a, 0x1d,
    +	0xc2, 0x42, 0xed, 0x72, 0x64, 0xa1, 0x76, 0x26, 0xa1, 0xc2, 0xf1, 0x1b, 0xc5, 0xae, 0xcf, 0xae,
    +	0x75, 0xad, 0xcf, 0xce, 0xee, 0x8a, 0x94, 0xbc, 0x2c, 0x7b, 0x1b, 0x26, 0x02, 0x81, 0xe8, 0xff,
    +	0xac, 0x57, 0x15, 0x33, 0x65, 0x8a, 0xdb, 0x36, 0xd8, 0xb0, 0x04, 0xc3, 0x64, 0x40, 0x21, 0x6b,
    +	0x90, 0x0b, 0x49, 0xd8, 0x1b, 0x33, 0xa3, 0xb6, 0xc3, 0xeb, 0xe2, 0x89, 0x0e, 0x75, 0x6f, 0x4e,
    +	0x28, 0xbd, 0xf3, 0xe4, 0x45, 0x7e, 0xe4, 0xe9, 0x8b, 0xfc, 0xc8, 0xf3, 0x17, 0xf9, 0x91, 0x2f,
    +	0xdc, 0x7c, 0xea, 0x89, 0x9b, 0x4f, 0x3d, 0x75, 0xf3, 0xa9, 0xe7, 0x6e, 0x3e, 0xf5, 0x8b, 0x9b,
    +	0x4f, 0x7d, 0xfd, 0x6b, 0x7e, 0xe4, 0xe3, 0xf9, 0xd8, 0x7f, 0xa9, 0xfe, 0x19, 0x00, 0x00, 0xff,
    +	0xff, 0xd7, 0x67, 0xd4, 0x08, 0x6e, 0x1d, 0x00, 0x00,
     }
     
     func (m *ContainerResourceMetricSource) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/autoscaling/v1/generated.proto b/vendor/k8s.io/api/autoscaling/v1/generated.proto
    index 1dbafd1a5313..68c35b6b22b6 100644
    --- a/vendor/k8s.io/api/autoscaling/v1/generated.proto
    +++ b/vendor/k8s.io/api/autoscaling/v1/generated.proto
    @@ -51,7 +51,7 @@ message ContainerResourceMetricSource {
       // resource metric across all relevant pods, as a raw value (instead of as
       // a percentage of the request), similar to the "pods" metric source type.
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3;
     
       // container is the name of the container in the pods of the scaling target.
       optional string container = 5;
    @@ -78,7 +78,7 @@ message ContainerResourceMetricStatus {
       // resource metric across all relevant pods, as a raw value (instead of as
       // a percentage of the request), similar to the "pods" metric source type.
       // It will always be set, regardless of the corresponding metric specification.
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3;
     
       // container is the name of the container in the pods of the scaling taget
       optional string container = 4;
    @@ -108,17 +108,17 @@ message ExternalMetricSource {
       // metricSelector is used to identify a specific time series
       // within a given metric.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector metricSelector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector metricSelector = 2;
     
       // targetValue is the target value of the metric (as a quantity).
       // Mutually exclusive with TargetAverageValue.
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
     
       // targetAverageValue is the target per-pod value of global metric (as a quantity).
       // Mutually exclusive with TargetValue.
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 4;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 4;
     }
     
     // ExternalMetricStatus indicates the current value of a global metric
    @@ -131,21 +131,21 @@ message ExternalMetricStatus {
       // metricSelector is used to identify a specific time series
       // within a given metric.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector metricSelector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector metricSelector = 2;
     
       // currentValue is the current value of the metric (as a quantity)
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
     
       // currentAverageValue is the current value of metric averaged over autoscaled pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 4;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 4;
     }
     
     // configuration of a horizontal pod autoscaler.
     message HorizontalPodAutoscaler {
       // Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec defines the behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
       // +optional
    @@ -168,7 +168,7 @@ message HorizontalPodAutoscalerCondition {
       // lastTransitionTime is the last time the condition transitioned from
       // one status to another
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // reason is the reason for the condition's last transition.
       // +optional
    @@ -184,7 +184,7 @@ message HorizontalPodAutoscalerCondition {
     message HorizontalPodAutoscalerList {
       // Standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of horizontal pod autoscaler objects.
       repeated HorizontalPodAutoscaler items = 2;
    @@ -222,7 +222,7 @@ message HorizontalPodAutoscalerStatus {
       // lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods;
       // used by the autoscaler to control how often the number of pods is changed.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2;
     
       // currentReplicas is the current number of replicas of pods managed by this autoscaler.
       optional int32 currentReplicas = 3;
    @@ -241,8 +241,6 @@ message HorizontalPodAutoscalerStatus {
     message MetricSpec {
       // type is the type of metric source.  It should be one of "ContainerResource",
       // "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object.
    -  // Note: "ContainerResource" type is available on when the feature-gate
    -  // HPAContainerMetrics is enabled
       optional string type = 1;
     
       // object refers to a metric describing a single kubernetes object
    @@ -269,7 +267,6 @@ message MetricSpec {
       // current scale target (e.g. CPU or memory). Such metrics are built in to
       // Kubernetes, and have special scaling options on top of those available
       // to normal per-pod metrics using the "pods" source.
    -  // This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
       // +optional
       optional ContainerResourceMetricSource containerResource = 7;
     
    @@ -286,8 +283,6 @@ message MetricSpec {
     message MetricStatus {
       // type is the type of metric source.  It will be one of "ContainerResource",
       // "External", "Object", "Pods" or "Resource", each corresponds to a matching field in the object.
    -  // Note: "ContainerResource" type is available on when the feature-gate
    -  // HPAContainerMetrics is enabled
       optional string type = 1;
     
       // object refers to a metric describing a single kubernetes object
    @@ -336,18 +331,18 @@ message ObjectMetricSource {
       optional string metricName = 2;
     
       // targetValue is the target value of the metric (as a quantity).
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
     
       // selector is the string-encoded form of a standard kubernetes label selector for the given metric.
       // When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
       // When unset, just the metricName will be used to gather metrics.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
     
       // averageValue is the target value of the average of the
       // metric across all relevant pods (as a quantity)
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
     }
     
     // ObjectMetricStatus indicates the current value of a metric describing a
    @@ -360,18 +355,18 @@ message ObjectMetricStatus {
       optional string metricName = 2;
     
       // currentValue is the current value of the metric (as a quantity).
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
     
       // selector is the string-encoded form of a standard kubernetes label selector for the given metric
       // When set in the ObjectMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
       // When unset, just the metricName will be used to gather metrics.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
     
       // averageValue is the current value of the average of the
       // metric across all relevant pods (as a quantity)
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
     }
     
     // PodsMetricSource indicates how to scale on a metric describing each pod in
    @@ -384,13 +379,13 @@ message PodsMetricSource {
     
       // targetAverageValue is the target value of the average of the
       // metric across all relevant pods (as a quantity)
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2;
     
       // selector is the string-encoded form of a standard kubernetes label selector for the given metric
       // When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
       // When unset, just the metricName will be used to gather metrics.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
     }
     
     // PodsMetricStatus indicates the current value of a metric describing each pod in
    @@ -401,13 +396,13 @@ message PodsMetricStatus {
     
       // currentAverageValue is the current value of the average of the
       // metric across all relevant pods (as a quantity)
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2;
     
       // selector is the string-encoded form of a standard kubernetes label selector for the given metric
       // When set in the PodsMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
       // When unset, just the metricName will be used to gather metrics.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
     }
     
     // ResourceMetricSource indicates how to scale on a resource metric known to
    @@ -431,7 +426,7 @@ message ResourceMetricSource {
       // resource metric across all relevant pods, as a raw value (instead of as
       // a percentage of the request), similar to the "pods" metric source type.
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3;
     }
     
     // ResourceMetricStatus indicates the current value of a resource metric known to
    @@ -455,14 +450,14 @@ message ResourceMetricStatus {
       // resource metric across all relevant pods, as a raw value (instead of as
       // a percentage of the request), similar to the "pods" metric source type.
       // It will always be set, regardless of the corresponding metric specification.
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3;
     }
     
     // Scale represents a scaling request for a resource.
     message Scale {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
       // +optional
    diff --git a/vendor/k8s.io/api/autoscaling/v1/types.go b/vendor/k8s.io/api/autoscaling/v1/types.go
    index 450829017646..85c609e5c777 100644
    --- a/vendor/k8s.io/api/autoscaling/v1/types.go
    +++ b/vendor/k8s.io/api/autoscaling/v1/types.go
    @@ -83,6 +83,7 @@ type HorizontalPodAutoscalerStatus struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.2
     
     // configuration of a horizontal pod autoscaler.
     type HorizontalPodAutoscaler struct {
    @@ -101,6 +102,7 @@ type HorizontalPodAutoscaler struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.2
     
     // list of horizontal pod autoscaler objects.
     type HorizontalPodAutoscalerList struct {
    @@ -114,6 +116,7 @@ type HorizontalPodAutoscalerList struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.2
     
     // Scale represents a scaling request for a resource.
     type Scale struct {
    @@ -190,8 +193,6 @@ const (
     type MetricSpec struct {
     	// type is the type of metric source.  It should be one of "ContainerResource",
     	// "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object.
    -	// Note: "ContainerResource" type is available on when the feature-gate
    -	// HPAContainerMetrics is enabled
     	Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"`
     
     	// object refers to a metric describing a single kubernetes object
    @@ -218,7 +219,6 @@ type MetricSpec struct {
     	// current scale target (e.g. CPU or memory). Such metrics are built in to
     	// Kubernetes, and have special scaling options on top of those available
     	// to normal per-pod metrics using the "pods" source.
    -	// This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
     	// +optional
     	ContainerResource *ContainerResourceMetricSource `json:"containerResource,omitempty" protobuf:"bytes,7,opt,name=containerResource"`
     
    @@ -352,8 +352,6 @@ type ExternalMetricSource struct {
     type MetricStatus struct {
     	// type is the type of metric source.  It will be one of "ContainerResource",
     	// "External", "Object", "Pods" or "Resource", each corresponds to a matching field in the object.
    -	// Note: "ContainerResource" type is available on when the feature-gate
    -	// HPAContainerMetrics is enabled
     	Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"`
     
     	// object refers to a metric describing a single kubernetes object
    diff --git a/vendor/k8s.io/api/autoscaling/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/autoscaling/v1/types_swagger_doc_generated.go
    index 37c2b36a51f0..ba43d06c106e 100644
    --- a/vendor/k8s.io/api/autoscaling/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/autoscaling/v1/types_swagger_doc_generated.go
    @@ -147,11 +147,11 @@ func (HorizontalPodAutoscalerStatus) SwaggerDoc() map[string]string {
     
     var map_MetricSpec = map[string]string{
     	"":                  "MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).",
    -	"type":              "type is the type of metric source.  It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled",
    +	"type":              "type is the type of metric source.  It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object.",
     	"object":            "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).",
     	"pods":              "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.",
     	"resource":          "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
    -	"containerResource": "containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.",
    +	"containerResource": "containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
     	"external":          "external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).",
     }
     
    @@ -161,7 +161,7 @@ func (MetricSpec) SwaggerDoc() map[string]string {
     
     var map_MetricStatus = map[string]string{
     	"":                  "MetricStatus describes the last-read state of a single metric.",
    -	"type":              "type is the type of metric source.  It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled",
    +	"type":              "type is the type of metric source.  It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object.",
     	"object":            "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).",
     	"pods":              "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.",
     	"resource":          "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
    diff --git a/vendor/k8s.io/api/autoscaling/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/autoscaling/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..36d86a5ec31d
    --- /dev/null
    +++ b/vendor/k8s.io/api/autoscaling/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,40 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *HorizontalPodAutoscaler) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 2
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *HorizontalPodAutoscalerList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 2
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Scale) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 2
    +}
    diff --git a/vendor/k8s.io/api/autoscaling/v2/doc.go b/vendor/k8s.io/api/autoscaling/v2/doc.go
    index f96a059b6c7e..aafa2d4de2ca 100644
    --- a/vendor/k8s.io/api/autoscaling/v2/doc.go
    +++ b/vendor/k8s.io/api/autoscaling/v2/doc.go
    @@ -17,5 +17,6 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     
     package v2 // import "k8s.io/api/autoscaling/v2"
    diff --git a/vendor/k8s.io/api/autoscaling/v2/generated.pb.go b/vendor/k8s.io/api/autoscaling/v2/generated.pb.go
    index 9f57916d7c94..ece6dedadb15 100644
    --- a/vendor/k8s.io/api/autoscaling/v2/generated.pb.go
    +++ b/vendor/k8s.io/api/autoscaling/v2/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2/generated.proto
    +// source: k8s.io/api/autoscaling/v2/generated.proto
     
     package v2
     
    @@ -50,7 +50,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ContainerResourceMetricSource) Reset()      { *m = ContainerResourceMetricSource{} }
     func (*ContainerResourceMetricSource) ProtoMessage() {}
     func (*ContainerResourceMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{0}
    +	return fileDescriptor_4d5f2c8767749221, []int{0}
     }
     func (m *ContainerResourceMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -78,7 +78,7 @@ var xxx_messageInfo_ContainerResourceMetricSource proto.InternalMessageInfo
     func (m *ContainerResourceMetricStatus) Reset()      { *m = ContainerResourceMetricStatus{} }
     func (*ContainerResourceMetricStatus) ProtoMessage() {}
     func (*ContainerResourceMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{1}
    +	return fileDescriptor_4d5f2c8767749221, []int{1}
     }
     func (m *ContainerResourceMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -106,7 +106,7 @@ var xxx_messageInfo_ContainerResourceMetricStatus proto.InternalMessageInfo
     func (m *CrossVersionObjectReference) Reset()      { *m = CrossVersionObjectReference{} }
     func (*CrossVersionObjectReference) ProtoMessage() {}
     func (*CrossVersionObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{2}
    +	return fileDescriptor_4d5f2c8767749221, []int{2}
     }
     func (m *CrossVersionObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -134,7 +134,7 @@ var xxx_messageInfo_CrossVersionObjectReference proto.InternalMessageInfo
     func (m *ExternalMetricSource) Reset()      { *m = ExternalMetricSource{} }
     func (*ExternalMetricSource) ProtoMessage() {}
     func (*ExternalMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{3}
    +	return fileDescriptor_4d5f2c8767749221, []int{3}
     }
     func (m *ExternalMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -162,7 +162,7 @@ var xxx_messageInfo_ExternalMetricSource proto.InternalMessageInfo
     func (m *ExternalMetricStatus) Reset()      { *m = ExternalMetricStatus{} }
     func (*ExternalMetricStatus) ProtoMessage() {}
     func (*ExternalMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{4}
    +	return fileDescriptor_4d5f2c8767749221, []int{4}
     }
     func (m *ExternalMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -190,7 +190,7 @@ var xxx_messageInfo_ExternalMetricStatus proto.InternalMessageInfo
     func (m *HPAScalingPolicy) Reset()      { *m = HPAScalingPolicy{} }
     func (*HPAScalingPolicy) ProtoMessage() {}
     func (*HPAScalingPolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{5}
    +	return fileDescriptor_4d5f2c8767749221, []int{5}
     }
     func (m *HPAScalingPolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -218,7 +218,7 @@ var xxx_messageInfo_HPAScalingPolicy proto.InternalMessageInfo
     func (m *HPAScalingRules) Reset()      { *m = HPAScalingRules{} }
     func (*HPAScalingRules) ProtoMessage() {}
     func (*HPAScalingRules) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{6}
    +	return fileDescriptor_4d5f2c8767749221, []int{6}
     }
     func (m *HPAScalingRules) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -246,7 +246,7 @@ var xxx_messageInfo_HPAScalingRules proto.InternalMessageInfo
     func (m *HorizontalPodAutoscaler) Reset()      { *m = HorizontalPodAutoscaler{} }
     func (*HorizontalPodAutoscaler) ProtoMessage() {}
     func (*HorizontalPodAutoscaler) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{7}
    +	return fileDescriptor_4d5f2c8767749221, []int{7}
     }
     func (m *HorizontalPodAutoscaler) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -274,7 +274,7 @@ var xxx_messageInfo_HorizontalPodAutoscaler proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerBehavior) Reset()      { *m = HorizontalPodAutoscalerBehavior{} }
     func (*HorizontalPodAutoscalerBehavior) ProtoMessage() {}
     func (*HorizontalPodAutoscalerBehavior) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{8}
    +	return fileDescriptor_4d5f2c8767749221, []int{8}
     }
     func (m *HorizontalPodAutoscalerBehavior) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -302,7 +302,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerBehavior proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerCondition) Reset()      { *m = HorizontalPodAutoscalerCondition{} }
     func (*HorizontalPodAutoscalerCondition) ProtoMessage() {}
     func (*HorizontalPodAutoscalerCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{9}
    +	return fileDescriptor_4d5f2c8767749221, []int{9}
     }
     func (m *HorizontalPodAutoscalerCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -330,7 +330,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerCondition proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerList) Reset()      { *m = HorizontalPodAutoscalerList{} }
     func (*HorizontalPodAutoscalerList) ProtoMessage() {}
     func (*HorizontalPodAutoscalerList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{10}
    +	return fileDescriptor_4d5f2c8767749221, []int{10}
     }
     func (m *HorizontalPodAutoscalerList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -358,7 +358,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerList proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerSpec) Reset()      { *m = HorizontalPodAutoscalerSpec{} }
     func (*HorizontalPodAutoscalerSpec) ProtoMessage() {}
     func (*HorizontalPodAutoscalerSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{11}
    +	return fileDescriptor_4d5f2c8767749221, []int{11}
     }
     func (m *HorizontalPodAutoscalerSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -386,7 +386,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerSpec proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerStatus) Reset()      { *m = HorizontalPodAutoscalerStatus{} }
     func (*HorizontalPodAutoscalerStatus) ProtoMessage() {}
     func (*HorizontalPodAutoscalerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{12}
    +	return fileDescriptor_4d5f2c8767749221, []int{12}
     }
     func (m *HorizontalPodAutoscalerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -414,7 +414,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerStatus proto.InternalMessageInfo
     func (m *MetricIdentifier) Reset()      { *m = MetricIdentifier{} }
     func (*MetricIdentifier) ProtoMessage() {}
     func (*MetricIdentifier) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{13}
    +	return fileDescriptor_4d5f2c8767749221, []int{13}
     }
     func (m *MetricIdentifier) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -442,7 +442,7 @@ var xxx_messageInfo_MetricIdentifier proto.InternalMessageInfo
     func (m *MetricSpec) Reset()      { *m = MetricSpec{} }
     func (*MetricSpec) ProtoMessage() {}
     func (*MetricSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{14}
    +	return fileDescriptor_4d5f2c8767749221, []int{14}
     }
     func (m *MetricSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -470,7 +470,7 @@ var xxx_messageInfo_MetricSpec proto.InternalMessageInfo
     func (m *MetricStatus) Reset()      { *m = MetricStatus{} }
     func (*MetricStatus) ProtoMessage() {}
     func (*MetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{15}
    +	return fileDescriptor_4d5f2c8767749221, []int{15}
     }
     func (m *MetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -498,7 +498,7 @@ var xxx_messageInfo_MetricStatus proto.InternalMessageInfo
     func (m *MetricTarget) Reset()      { *m = MetricTarget{} }
     func (*MetricTarget) ProtoMessage() {}
     func (*MetricTarget) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{16}
    +	return fileDescriptor_4d5f2c8767749221, []int{16}
     }
     func (m *MetricTarget) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -526,7 +526,7 @@ var xxx_messageInfo_MetricTarget proto.InternalMessageInfo
     func (m *MetricValueStatus) Reset()      { *m = MetricValueStatus{} }
     func (*MetricValueStatus) ProtoMessage() {}
     func (*MetricValueStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{17}
    +	return fileDescriptor_4d5f2c8767749221, []int{17}
     }
     func (m *MetricValueStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -554,7 +554,7 @@ var xxx_messageInfo_MetricValueStatus proto.InternalMessageInfo
     func (m *ObjectMetricSource) Reset()      { *m = ObjectMetricSource{} }
     func (*ObjectMetricSource) ProtoMessage() {}
     func (*ObjectMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{18}
    +	return fileDescriptor_4d5f2c8767749221, []int{18}
     }
     func (m *ObjectMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -582,7 +582,7 @@ var xxx_messageInfo_ObjectMetricSource proto.InternalMessageInfo
     func (m *ObjectMetricStatus) Reset()      { *m = ObjectMetricStatus{} }
     func (*ObjectMetricStatus) ProtoMessage() {}
     func (*ObjectMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{19}
    +	return fileDescriptor_4d5f2c8767749221, []int{19}
     }
     func (m *ObjectMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -610,7 +610,7 @@ var xxx_messageInfo_ObjectMetricStatus proto.InternalMessageInfo
     func (m *PodsMetricSource) Reset()      { *m = PodsMetricSource{} }
     func (*PodsMetricSource) ProtoMessage() {}
     func (*PodsMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{20}
    +	return fileDescriptor_4d5f2c8767749221, []int{20}
     }
     func (m *PodsMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -638,7 +638,7 @@ var xxx_messageInfo_PodsMetricSource proto.InternalMessageInfo
     func (m *PodsMetricStatus) Reset()      { *m = PodsMetricStatus{} }
     func (*PodsMetricStatus) ProtoMessage() {}
     func (*PodsMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{21}
    +	return fileDescriptor_4d5f2c8767749221, []int{21}
     }
     func (m *PodsMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -666,7 +666,7 @@ var xxx_messageInfo_PodsMetricStatus proto.InternalMessageInfo
     func (m *ResourceMetricSource) Reset()      { *m = ResourceMetricSource{} }
     func (*ResourceMetricSource) ProtoMessage() {}
     func (*ResourceMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{22}
    +	return fileDescriptor_4d5f2c8767749221, []int{22}
     }
     func (m *ResourceMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -694,7 +694,7 @@ var xxx_messageInfo_ResourceMetricSource proto.InternalMessageInfo
     func (m *ResourceMetricStatus) Reset()      { *m = ResourceMetricStatus{} }
     func (*ResourceMetricStatus) ProtoMessage() {}
     func (*ResourceMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b14d4df4b5f3935e, []int{23}
    +	return fileDescriptor_4d5f2c8767749221, []int{23}
     }
     func (m *ResourceMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -747,120 +747,119 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2/generated.proto", fileDescriptor_b14d4df4b5f3935e)
    -}
    -
    -var fileDescriptor_b14d4df4b5f3935e = []byte{
    -	// 1738 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcb, 0x8f, 0x13, 0xc9,
    -	0x19, 0x9f, 0xb6, 0x3d, 0xaf, 0xf2, 0x3c, 0x8b, 0x97, 0x19, 0x84, 0x3d, 0xea, 0x90, 0x40, 0x48,
    -	0x68, 0x07, 0x87, 0x20, 0x14, 0x0e, 0xd1, 0xf4, 0x90, 0x84, 0x11, 0x33, 0x19, 0x53, 0x06, 0x26,
    -	0x89, 0x92, 0x88, 0x72, 0x77, 0x8d, 0xa7, 0x32, 0x76, 0xb7, 0xd5, 0xdd, 0x36, 0x0c, 0x52, 0xa4,
    -	0x5c, 0x72, 0x8f, 0x12, 0xa1, 0x28, 0xff, 0x03, 0xca, 0x29, 0x11, 0x39, 0xec, 0x4a, 0x2b, 0xed,
    -	0x1e, 0xb8, 0xac, 0xc4, 0x61, 0x0f, 0x9c, 0xac, 0xc5, 0x2b, 0xed, 0x71, 0xff, 0x00, 0x4e, 0xab,
    -	0x7a, 0xf4, 0xd3, 0xaf, 0x31, 0x3b, 0x8c, 0x34, 0x37, 0x57, 0xd5, 0xf7, 0xfd, 0xbe, 0x47, 0x7d,
    -	0xaf, 0x6a, 0x03, 0x7d, 0xff, 0x96, 0xab, 0x51, 0xbb, 0xb8, 0xdf, 0xaa, 0x12, 0xc7, 0x22, 0x1e,
    -	0x71, 0x8b, 0x6d, 0x62, 0x99, 0xb6, 0x53, 0x94, 0x07, 0xb8, 0x49, 0x8b, 0xb8, 0xe5, 0xd9, 0xae,
    -	0x81, 0xeb, 0xd4, 0xaa, 0x15, 0xdb, 0xa5, 0x62, 0x8d, 0x58, 0xc4, 0xc1, 0x1e, 0x31, 0xb5, 0xa6,
    -	0x63, 0x7b, 0x36, 0x3c, 0x2f, 0x48, 0x35, 0xdc, 0xa4, 0x5a, 0x84, 0x54, 0x6b, 0x97, 0x56, 0xae,
    -	0xd5, 0xa8, 0xb7, 0xd7, 0xaa, 0x6a, 0x86, 0xdd, 0x28, 0xd6, 0xec, 0x9a, 0x5d, 0xe4, 0x1c, 0xd5,
    -	0xd6, 0x2e, 0x5f, 0xf1, 0x05, 0xff, 0x25, 0x90, 0x56, 0xd4, 0x88, 0x50, 0xc3, 0x76, 0x48, 0xb1,
    -	0x7d, 0x3d, 0x29, 0x6d, 0xe5, 0x46, 0x48, 0xd3, 0xc0, 0xc6, 0x1e, 0xb5, 0x88, 0x73, 0x50, 0x6c,
    -	0xee, 0xd7, 0x38, 0x93, 0x43, 0x5c, 0xbb, 0xe5, 0x18, 0x64, 0x2c, 0x2e, 0xb7, 0xd8, 0x20, 0x1e,
    -	0xee, 0x27, 0xab, 0x38, 0x88, 0xcb, 0x69, 0x59, 0x1e, 0x6d, 0xf4, 0x8a, 0xb9, 0x39, 0x8a, 0xc1,
    -	0x35, 0xf6, 0x48, 0x03, 0x27, 0xf9, 0xd4, 0xaf, 0x15, 0x70, 0x71, 0xdd, 0xb6, 0x3c, 0xcc, 0x38,
    -	0x90, 0x34, 0x62, 0x8b, 0x78, 0x0e, 0x35, 0x2a, 0xfc, 0x37, 0x5c, 0x07, 0x19, 0x0b, 0x37, 0x48,
    -	0x4e, 0x59, 0x55, 0xae, 0xcc, 0xea, 0xc5, 0x57, 0x9d, 0xc2, 0x44, 0xb7, 0x53, 0xc8, 0xfc, 0x06,
    -	0x37, 0xc8, 0xbb, 0x4e, 0xa1, 0xd0, 0xeb, 0x38, 0xcd, 0x87, 0x61, 0x24, 0x88, 0x33, 0xc3, 0x6d,
    -	0x30, 0xe5, 0x61, 0xa7, 0x46, 0xbc, 0x5c, 0x6a, 0x55, 0xb9, 0x92, 0x2d, 0x5d, 0xd6, 0x06, 0x5e,
    -	0x9d, 0x26, 0xa4, 0x3f, 0xe0, 0xe4, 0xfa, 0x82, 0x94, 0x37, 0x25, 0xd6, 0x48, 0xc2, 0xc0, 0x22,
    -	0x98, 0x35, 0x7c, 0xb5, 0x73, 0x69, 0xae, 0xda, 0xb2, 0x24, 0x9d, 0x0d, 0xed, 0x09, 0x69, 0xd4,
    -	0x6f, 0x86, 0x18, 0xea, 0x61, 0xaf, 0xe5, 0x1e, 0x8d, 0xa1, 0x3b, 0x60, 0xda, 0x68, 0x39, 0x0e,
    -	0xb1, 0x7c, 0x4b, 0x7f, 0x3c, 0xd2, 0xd2, 0x47, 0xb8, 0xde, 0x22, 0x42, 0x07, 0x7d, 0x51, 0x4a,
    -	0x9d, 0x5e, 0x17, 0x20, 0xc8, 0x47, 0x1b, 0xdf, 0xe0, 0xe7, 0x0a, 0xb8, 0xb0, 0xee, 0xd8, 0xae,
    -	0xfb, 0x88, 0x38, 0x2e, 0xb5, 0xad, 0xed, 0xea, 0x9f, 0x89, 0xe1, 0x21, 0xb2, 0x4b, 0x1c, 0x62,
    -	0x19, 0x04, 0xae, 0x82, 0xcc, 0x3e, 0xb5, 0x4c, 0x69, 0xee, 0x9c, 0x6f, 0xee, 0x3d, 0x6a, 0x99,
    -	0x88, 0x9f, 0x30, 0x0a, 0xee, 0x90, 0x54, 0x9c, 0x22, 0x62, 0x6d, 0x09, 0x00, 0xdc, 0xa4, 0x52,
    -	0x80, 0xd4, 0x0a, 0x4a, 0x3a, 0xb0, 0x56, 0xde, 0x90, 0x27, 0x28, 0x42, 0xa5, 0x7e, 0xa4, 0x80,
    -	0xd3, 0xbf, 0x7c, 0xea, 0x11, 0xc7, 0xc2, 0xf5, 0x58, 0xa0, 0x55, 0xc0, 0x54, 0x83, 0xaf, 0xb9,
    -	0x4a, 0xd9, 0xd2, 0x8f, 0x46, 0x7a, 0x6e, 0xc3, 0x24, 0x96, 0x47, 0x77, 0x29, 0x71, 0xc2, 0x38,
    -	0x11, 0x27, 0x48, 0x42, 0x1d, 0x79, 0xe0, 0xa9, 0x9f, 0xf5, 0xaa, 0x2f, 0xc2, 0xe7, 0x83, 0xa8,
    -	0xff, 0xa1, 0xc2, 0x49, 0xfd, 0x8f, 0x02, 0x96, 0xee, 0x96, 0xd7, 0x2a, 0x82, 0xbb, 0x6c, 0xd7,
    -	0xa9, 0x71, 0x00, 0x6f, 0x81, 0x8c, 0x77, 0xd0, 0xf4, 0x33, 0xe0, 0x92, 0x7f, 0xe1, 0x0f, 0x0e,
    -	0x9a, 0x2c, 0x03, 0x4e, 0x27, 0xe9, 0xd9, 0x3e, 0xe2, 0x1c, 0xf0, 0x7b, 0x60, 0xb2, 0xcd, 0xe4,
    -	0x72, 0x2d, 0x27, 0xf5, 0x79, 0xc9, 0x3a, 0xc9, 0x95, 0x41, 0xe2, 0x0c, 0xde, 0x06, 0xf3, 0x4d,
    -	0xe2, 0x50, 0xdb, 0xac, 0x10, 0xc3, 0xb6, 0x4c, 0x97, 0x07, 0xcc, 0xa4, 0x7e, 0x46, 0x12, 0xcf,
    -	0x97, 0xa3, 0x87, 0x28, 0x4e, 0xab, 0xfe, 0x3b, 0x05, 0x16, 0x43, 0x05, 0x50, 0xab, 0x4e, 0x5c,
    -	0xf8, 0x27, 0xb0, 0xe2, 0x7a, 0xb8, 0x4a, 0xeb, 0xf4, 0x19, 0xf6, 0xa8, 0x6d, 0xed, 0x50, 0xcb,
    -	0xb4, 0x9f, 0xc4, 0xd1, 0xf3, 0xdd, 0x4e, 0x61, 0xa5, 0x32, 0x90, 0x0a, 0x0d, 0x41, 0x80, 0xf7,
    -	0xc0, 0x9c, 0x4b, 0xea, 0xc4, 0xf0, 0x84, 0xbd, 0xd2, 0x2f, 0x97, 0xbb, 0x9d, 0xc2, 0x5c, 0x25,
    -	0xb2, 0xff, 0xae, 0x53, 0x38, 0x15, 0x73, 0x8c, 0x38, 0x44, 0x31, 0x66, 0xf8, 0x3b, 0x30, 0xd3,
    -	0x64, 0xbf, 0x28, 0x71, 0x73, 0xa9, 0xd5, 0xf4, 0x88, 0x08, 0x49, 0xfa, 0x5a, 0x5f, 0x92, 0x5e,
    -	0x9a, 0x29, 0x4b, 0x10, 0x14, 0xc0, 0xa9, 0x2f, 0x53, 0xe0, 0xdc, 0x5d, 0xdb, 0xa1, 0xcf, 0x58,
    -	0xf2, 0xd7, 0xcb, 0xb6, 0xb9, 0x26, 0xc1, 0x88, 0x03, 0x1f, 0x83, 0x19, 0xd6, 0x64, 0x4c, 0xec,
    -	0x61, 0x19, 0x98, 0x3f, 0x89, 0x88, 0x0d, 0x7a, 0x85, 0xd6, 0xdc, 0xaf, 0xb1, 0x0d, 0x57, 0x63,
    -	0xd4, 0x5a, 0xfb, 0xba, 0x26, 0xea, 0xc5, 0x16, 0xf1, 0x70, 0x98, 0xd2, 0xe1, 0x1e, 0x0a, 0x50,
    -	0xe1, 0x6f, 0x41, 0xc6, 0x6d, 0x12, 0x43, 0x06, 0xe8, 0xcd, 0x61, 0x46, 0xf5, 0xd7, 0xb1, 0xd2,
    -	0x24, 0x46, 0x58, 0x5e, 0xd8, 0x0a, 0x71, 0x44, 0xf8, 0x18, 0x4c, 0xb9, 0x3c, 0x90, 0xf9, 0x5d,
    -	0x66, 0x4b, 0xb7, 0xde, 0x03, 0x5b, 0x24, 0x42, 0x90, 0x5f, 0x62, 0x8d, 0x24, 0xae, 0xfa, 0xb9,
    -	0x02, 0x0a, 0x03, 0x38, 0x75, 0xb2, 0x87, 0xdb, 0xd4, 0x76, 0xe0, 0x7d, 0x30, 0xcd, 0x77, 0x1e,
    -	0x36, 0xa5, 0x03, 0xaf, 0x1e, 0xea, 0xde, 0x78, 0x88, 0xea, 0x59, 0x96, 0x7d, 0x15, 0xc1, 0x8e,
    -	0x7c, 0x1c, 0xb8, 0x03, 0x66, 0xf9, 0xcf, 0x3b, 0xf6, 0x13, 0x4b, 0xfa, 0x6d, 0x1c, 0xd0, 0x79,
    -	0x56, 0xf4, 0x2b, 0x3e, 0x00, 0x0a, 0xb1, 0xd4, 0xbf, 0xa5, 0xc1, 0xea, 0x00, 0x7b, 0xd6, 0x6d,
    -	0xcb, 0xa4, 0x2c, 0xc6, 0xe1, 0xdd, 0x58, 0x9a, 0xdf, 0x48, 0xa4, 0xf9, 0xa5, 0x51, 0xfc, 0x91,
    -	0xb4, 0xdf, 0x0c, 0x2e, 0x28, 0x15, 0xc3, 0x92, 0x6e, 0x7e, 0xd7, 0x29, 0xf4, 0x19, 0xac, 0xb4,
    -	0x00, 0x29, 0x7e, 0x19, 0xb0, 0x0d, 0x60, 0x1d, 0xbb, 0xde, 0x03, 0x07, 0x5b, 0xae, 0x90, 0x44,
    -	0x1b, 0x44, 0x5e, 0xfd, 0xd5, 0xc3, 0x05, 0x2d, 0xe3, 0xd0, 0x57, 0xa4, 0x16, 0x70, 0xb3, 0x07,
    -	0x0d, 0xf5, 0x91, 0x00, 0x7f, 0x00, 0xa6, 0x1c, 0x82, 0x5d, 0xdb, 0xca, 0x65, 0xb8, 0x15, 0x41,
    -	0xb0, 0x20, 0xbe, 0x8b, 0xe4, 0x29, 0xfc, 0x21, 0x98, 0x6e, 0x10, 0xd7, 0xc5, 0x35, 0x92, 0x9b,
    -	0xe4, 0x84, 0x41, 0x79, 0xdd, 0x12, 0xdb, 0xc8, 0x3f, 0x57, 0xbf, 0x50, 0xc0, 0x85, 0x01, 0x7e,
    -	0xdc, 0xa4, 0xae, 0x07, 0xff, 0xd0, 0x93, 0x95, 0xda, 0xe1, 0x0c, 0x64, 0xdc, 0x3c, 0x27, 0x83,
    +	proto.RegisterFile("k8s.io/api/autoscaling/v2/generated.proto", fileDescriptor_4d5f2c8767749221)
    +}
    +
    +var fileDescriptor_4d5f2c8767749221 = []byte{
    +	// 1722 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcb, 0x8f, 0x1b, 0x49,
    +	0x19, 0x9f, 0xb6, 0x3d, 0xaf, 0xf2, 0x3c, 0x2b, 0x2f, 0x67, 0xa2, 0xd8, 0xa3, 0x26, 0x90, 0x07,
    +	0xa4, 0x4d, 0x4c, 0x88, 0x22, 0x72, 0x40, 0xd3, 0x13, 0x20, 0xa3, 0xcc, 0x30, 0x4e, 0x39, 0xc9,
    +	0x00, 0x02, 0x94, 0x72, 0x77, 0x8d, 0xa7, 0x18, 0xbb, 0xdb, 0xea, 0x6e, 0x3b, 0x99, 0x48, 0x48,
    +	0x5c, 0xb8, 0x23, 0x50, 0x84, 0xf8, 0x1f, 0x22, 0x4e, 0xa0, 0x70, 0x00, 0x09, 0x69, 0xf7, 0x90,
    +	0xcb, 0x4a, 0x39, 0xec, 0x21, 0x27, 0x6b, 0xe3, 0x95, 0xf6, 0xb8, 0x7f, 0x40, 0x4e, 0xab, 0x7a,
    +	0xf4, 0xd3, 0xaf, 0x71, 0x76, 0x32, 0xd2, 0xdc, 0x5c, 0x55, 0xdf, 0xf7, 0xfb, 0x1e, 0xf5, 0xbd,
    +	0xaa, 0x0d, 0xae, 0xee, 0xdf, 0x76, 0x35, 0x6a, 0x17, 0x71, 0x93, 0x16, 0x71, 0xcb, 0xb3, 0x5d,
    +	0x03, 0xd7, 0xa9, 0x55, 0x2b, 0xb6, 0x4b, 0xc5, 0x1a, 0xb1, 0x88, 0x83, 0x3d, 0x62, 0x6a, 0x4d,
    +	0xc7, 0xf6, 0x6c, 0x78, 0x5e, 0x90, 0x6a, 0xb8, 0x49, 0xb5, 0x08, 0xa9, 0xd6, 0x2e, 0xad, 0x5c,
    +	0xaf, 0x51, 0x6f, 0xaf, 0x55, 0xd5, 0x0c, 0xbb, 0x51, 0xac, 0xd9, 0x35, 0xbb, 0xc8, 0x39, 0xaa,
    +	0xad, 0x5d, 0xbe, 0xe2, 0x0b, 0xfe, 0x4b, 0x20, 0xad, 0xa8, 0x11, 0xa1, 0x86, 0xed, 0x90, 0x62,
    +	0xfb, 0x46, 0x52, 0xda, 0xca, 0xcd, 0x90, 0xa6, 0x81, 0x8d, 0x3d, 0x6a, 0x11, 0xe7, 0xa0, 0xd8,
    +	0xdc, 0xaf, 0x71, 0x26, 0x87, 0xb8, 0x76, 0xcb, 0x31, 0xc8, 0x58, 0x5c, 0x6e, 0xb1, 0x41, 0x3c,
    +	0xdc, 0x4f, 0x56, 0x71, 0x10, 0x97, 0xd3, 0xb2, 0x3c, 0xda, 0xe8, 0x15, 0x73, 0x6b, 0x14, 0x83,
    +	0x6b, 0xec, 0x91, 0x06, 0x4e, 0xf2, 0xa9, 0x5f, 0x29, 0xe0, 0xe2, 0xba, 0x6d, 0x79, 0x98, 0x71,
    +	0x20, 0x69, 0xc4, 0x16, 0xf1, 0x1c, 0x6a, 0x54, 0xf8, 0x6f, 0xb8, 0x0e, 0x32, 0x16, 0x6e, 0x90,
    +	0x9c, 0xb2, 0xaa, 0x5c, 0x99, 0xd5, 0x8b, 0xaf, 0x3b, 0x85, 0x89, 0x6e, 0xa7, 0x90, 0xf9, 0x25,
    +	0x6e, 0x90, 0xf7, 0x9d, 0x42, 0xa1, 0xd7, 0x71, 0x9a, 0x0f, 0xc3, 0x48, 0x10, 0x67, 0x86, 0xdb,
    +	0x60, 0xca, 0xc3, 0x4e, 0x8d, 0x78, 0xb9, 0xd4, 0xaa, 0x72, 0x25, 0x5b, 0xba, 0xac, 0x0d, 0xbc,
    +	0x3a, 0x4d, 0x48, 0x7f, 0xc8, 0xc9, 0xf5, 0x05, 0x29, 0x6f, 0x4a, 0xac, 0x91, 0x84, 0x81, 0x45,
    +	0x30, 0x6b, 0xf8, 0x6a, 0xe7, 0xd2, 0x5c, 0xb5, 0x65, 0x49, 0x3a, 0x1b, 0xda, 0x13, 0xd2, 0xa8,
    +	0x5f, 0x0f, 0x31, 0xd4, 0xc3, 0x5e, 0xcb, 0x3d, 0x1a, 0x43, 0x77, 0xc0, 0xb4, 0xd1, 0x72, 0x1c,
    +	0x62, 0xf9, 0x96, 0xfe, 0x60, 0xa4, 0xa5, 0x8f, 0x71, 0xbd, 0x45, 0x84, 0x0e, 0xfa, 0xa2, 0x94,
    +	0x3a, 0xbd, 0x2e, 0x40, 0x90, 0x8f, 0x36, 0xbe, 0xc1, 0x2f, 0x14, 0x70, 0x61, 0xdd, 0xb1, 0x5d,
    +	0xf7, 0x31, 0x71, 0x5c, 0x6a, 0x5b, 0xdb, 0xd5, 0x3f, 0x10, 0xc3, 0x43, 0x64, 0x97, 0x38, 0xc4,
    +	0x32, 0x08, 0x5c, 0x05, 0x99, 0x7d, 0x6a, 0x99, 0xd2, 0xdc, 0x39, 0xdf, 0xdc, 0xfb, 0xd4, 0x32,
    +	0x11, 0x3f, 0x61, 0x14, 0xdc, 0x21, 0xa9, 0x38, 0x45, 0xc4, 0xda, 0x12, 0x00, 0xb8, 0x49, 0xa5,
    +	0x00, 0xa9, 0x15, 0x94, 0x74, 0x60, 0xad, 0xbc, 0x21, 0x4f, 0x50, 0x84, 0x4a, 0xfd, 0xaf, 0x02,
    +	0x4e, 0xff, 0xec, 0x99, 0x47, 0x1c, 0x0b, 0xd7, 0x63, 0x81, 0x56, 0x01, 0x53, 0x0d, 0xbe, 0xe6,
    +	0x2a, 0x65, 0x4b, 0xdf, 0x1f, 0xe9, 0xb9, 0x0d, 0x93, 0x58, 0x1e, 0xdd, 0xa5, 0xc4, 0x09, 0xe3,
    +	0x44, 0x9c, 0x20, 0x09, 0x75, 0xe4, 0x81, 0xa7, 0x7e, 0xda, 0xab, 0xbe, 0x08, 0x9f, 0x8f, 0xa2,
    +	0xfe, 0xc7, 0x0a, 0x27, 0xf5, 0x9f, 0x0a, 0x58, 0xba, 0x57, 0x5e, 0xab, 0x08, 0xee, 0xb2, 0x5d,
    +	0xa7, 0xc6, 0x01, 0xbc, 0x0d, 0x32, 0xde, 0x41, 0xd3, 0xcf, 0x80, 0x4b, 0xfe, 0x85, 0x3f, 0x3c,
    +	0x68, 0xb2, 0x0c, 0x38, 0x9d, 0xa4, 0x67, 0xfb, 0x88, 0x73, 0xc0, 0xef, 0x80, 0xc9, 0x36, 0x93,
    +	0xcb, 0xb5, 0x9c, 0xd4, 0xe7, 0x25, 0xeb, 0x24, 0x57, 0x06, 0x89, 0x33, 0x78, 0x07, 0xcc, 0x37,
    +	0x89, 0x43, 0x6d, 0xb3, 0x42, 0x0c, 0xdb, 0x32, 0x5d, 0x1e, 0x30, 0x93, 0xfa, 0x19, 0x49, 0x3c,
    +	0x5f, 0x8e, 0x1e, 0xa2, 0x38, 0xad, 0xfa, 0x8f, 0x14, 0x58, 0x0c, 0x15, 0x40, 0xad, 0x3a, 0x71,
    +	0xe1, 0xef, 0xc1, 0x8a, 0xeb, 0xe1, 0x2a, 0xad, 0xd3, 0xe7, 0xd8, 0xa3, 0xb6, 0xb5, 0x43, 0x2d,
    +	0xd3, 0x7e, 0x1a, 0x47, 0xcf, 0x77, 0x3b, 0x85, 0x95, 0xca, 0x40, 0x2a, 0x34, 0x04, 0x01, 0xde,
    +	0x07, 0x73, 0x2e, 0xa9, 0x13, 0xc3, 0x13, 0xf6, 0x4a, 0xbf, 0x5c, 0xee, 0x76, 0x0a, 0x73, 0x95,
    +	0xc8, 0xfe, 0xfb, 0x4e, 0xe1, 0x54, 0xcc, 0x31, 0xe2, 0x10, 0xc5, 0x98, 0xe1, 0xaf, 0xc1, 0x4c,
    +	0x93, 0xfd, 0xa2, 0xc4, 0xcd, 0xa5, 0x56, 0xd3, 0x23, 0x22, 0x24, 0xe9, 0x6b, 0x7d, 0x49, 0x7a,
    +	0x69, 0xa6, 0x2c, 0x41, 0x50, 0x00, 0xa7, 0xbe, 0x4a, 0x81, 0x73, 0xf7, 0x6c, 0x87, 0x3e, 0x67,
    +	0xc9, 0x5f, 0x2f, 0xdb, 0xe6, 0x9a, 0x04, 0x23, 0x0e, 0x7c, 0x02, 0x66, 0x58, 0x93, 0x31, 0xb1,
    +	0x87, 0x65, 0x60, 0xfe, 0x30, 0x22, 0x36, 0xe8, 0x15, 0x5a, 0x73, 0xbf, 0xc6, 0x36, 0x5c, 0x8d,
    +	0x51, 0x6b, 0xed, 0x1b, 0x9a, 0xa8, 0x17, 0x5b, 0xc4, 0xc3, 0x61, 0x4a, 0x87, 0x7b, 0x28, 0x40,
    +	0x85, 0xbf, 0x02, 0x19, 0xb7, 0x49, 0x0c, 0x19, 0xa0, 0xb7, 0x86, 0x19, 0xd5, 0x5f, 0xc7, 0x4a,
    +	0x93, 0x18, 0x61, 0x79, 0x61, 0x2b, 0xc4, 0x11, 0xe1, 0x13, 0x30, 0xe5, 0xf2, 0x40, 0xe6, 0x77,
    +	0x99, 0x2d, 0xdd, 0xfe, 0x00, 0x6c, 0x91, 0x08, 0x41, 0x7e, 0x89, 0x35, 0x92, 0xb8, 0xea, 0x67,
    +	0x0a, 0x28, 0x0c, 0xe0, 0xd4, 0xc9, 0x1e, 0x6e, 0x53, 0xdb, 0x81, 0x0f, 0xc0, 0x34, 0xdf, 0x79,
    +	0xd4, 0x94, 0x0e, 0xbc, 0x76, 0xa8, 0x7b, 0xe3, 0x21, 0xaa, 0x67, 0x59, 0xf6, 0x55, 0x04, 0x3b,
    +	0xf2, 0x71, 0xe0, 0x0e, 0x98, 0xe5, 0x3f, 0xef, 0xda, 0x4f, 0x2d, 0xe9, 0xb7, 0x71, 0x40, 0xe7,
    +	0x59, 0xd1, 0xaf, 0xf8, 0x00, 0x28, 0xc4, 0x52, 0xff, 0x9c, 0x06, 0xab, 0x03, 0xec, 0x59, 0xb7,
    +	0x2d, 0x93, 0xb2, 0x18, 0x87, 0xf7, 0x62, 0x69, 0x7e, 0x33, 0x91, 0xe6, 0x97, 0x46, 0xf1, 0x47,
    +	0xd2, 0x7e, 0x33, 0xb8, 0xa0, 0x54, 0x0c, 0x4b, 0xba, 0xf9, 0x7d, 0xa7, 0xd0, 0x67, 0xb0, 0xd2,
    +	0x02, 0xa4, 0xf8, 0x65, 0xc0, 0x36, 0x80, 0x75, 0xec, 0x7a, 0x0f, 0x1d, 0x6c, 0xb9, 0x42, 0x12,
    +	0x6d, 0x10, 0x79, 0xf5, 0xd7, 0x0e, 0x17, 0xb4, 0x8c, 0x43, 0x5f, 0x91, 0x5a, 0xc0, 0xcd, 0x1e,
    +	0x34, 0xd4, 0x47, 0x02, 0xfc, 0x1e, 0x98, 0x72, 0x08, 0x76, 0x6d, 0x2b, 0x97, 0xe1, 0x56, 0x04,
    +	0xc1, 0x82, 0xf8, 0x2e, 0x92, 0xa7, 0xf0, 0x2a, 0x98, 0x6e, 0x10, 0xd7, 0xc5, 0x35, 0x92, 0x9b,
    +	0xe4, 0x84, 0x41, 0x79, 0xdd, 0x12, 0xdb, 0xc8, 0x3f, 0x57, 0x3f, 0x57, 0xc0, 0x85, 0x01, 0x7e,
    +	0xdc, 0xa4, 0xae, 0x07, 0x7f, 0xdb, 0x93, 0x95, 0xda, 0xe1, 0x0c, 0x64, 0xdc, 0x3c, 0x27, 0x83,
     	0x7a, 0xe0, 0xef, 0x44, 0x32, 0x72, 0x07, 0x4c, 0x52, 0x8f, 0x34, 0xfc, 0x3a, 0x53, 0x1a, 0x3f,
    -	0x6d, 0xc2, 0x0a, 0xbe, 0xc1, 0x80, 0x90, 0xc0, 0x53, 0x5f, 0xa6, 0x07, 0x9a, 0xc5, 0xd2, 0x16,
    +	0x6d, 0xc2, 0x0a, 0xbe, 0xc1, 0x80, 0x90, 0xc0, 0x53, 0x5f, 0xa5, 0x07, 0x9a, 0xc5, 0xd2, 0x16,
     	0xb6, 0xc1, 0x02, 0x5f, 0xc9, 0x9e, 0x49, 0x76, 0xa5, 0x71, 0xc3, 0x8a, 0xc2, 0x90, 0x19, 0x45,
    -	0x3f, 0x2b, 0xb5, 0x58, 0xa8, 0xc4, 0x50, 0x51, 0x42, 0x0a, 0xbc, 0x0e, 0xb2, 0x0d, 0x6a, 0x21,
    +	0x3f, 0x2b, 0xb5, 0x58, 0xa8, 0xc4, 0x50, 0x51, 0x42, 0x0a, 0xbc, 0x01, 0xb2, 0x0d, 0x6a, 0x21,
     	0xd2, 0xac, 0x53, 0x03, 0xbb, 0xb2, 0x09, 0x2d, 0x76, 0x3b, 0x85, 0xec, 0x56, 0xb8, 0x8d, 0xa2,
    -	0x34, 0xf0, 0x67, 0x20, 0xdb, 0xc0, 0x4f, 0x03, 0x16, 0xd1, 0x2c, 0x4e, 0x49, 0x79, 0xd9, 0xad,
    -	0xf0, 0x08, 0x45, 0xe9, 0x60, 0x99, 0xc5, 0x00, 0x6b, 0xb3, 0x6e, 0x2e, 0xc3, 0x9d, 0xfb, 0xfd,
    +	0x34, 0xf0, 0xc7, 0x20, 0xdb, 0xc0, 0xcf, 0x02, 0x16, 0xd1, 0x2c, 0x4e, 0x49, 0x79, 0xd9, 0xad,
    +	0xf0, 0x08, 0x45, 0xe9, 0x60, 0x99, 0xc5, 0x00, 0x6b, 0xb3, 0x6e, 0x2e, 0xc3, 0x9d, 0xfb, 0xdd,
     	0x91, 0x0d, 0x99, 0x97, 0xb7, 0x48, 0xa8, 0x70, 0x6e, 0xe4, 0xc3, 0x40, 0x13, 0xcc, 0x54, 0x65,
    -	0xa9, 0xe1, 0x61, 0x95, 0x2d, 0xfd, 0xfc, 0x3d, 0xee, 0x4b, 0x22, 0xe8, 0x73, 0x2c, 0x24, 0xfc,
    -	0x15, 0x0a, 0x90, 0xd5, 0x17, 0x19, 0x70, 0x71, 0x68, 0x89, 0x84, 0xbf, 0x02, 0xd0, 0xae, 0xba,
    -	0xc4, 0x69, 0x13, 0xf3, 0xd7, 0xe2, 0x91, 0xc0, 0x66, 0x3a, 0x76, 0x7f, 0x69, 0xfd, 0x2c, 0xcb,
    +	0xa9, 0xe1, 0x61, 0x95, 0x2d, 0xfd, 0xe4, 0x03, 0xee, 0x4b, 0x22, 0xe8, 0x73, 0x2c, 0x24, 0xfc,
    +	0x15, 0x0a, 0x90, 0xd5, 0x97, 0x19, 0x70, 0x71, 0x68, 0x89, 0x84, 0x3f, 0x07, 0xd0, 0xae, 0xba,
    +	0xc4, 0x69, 0x13, 0xf3, 0x17, 0xe2, 0x91, 0xc0, 0x66, 0x3a, 0x76, 0x7f, 0x69, 0xfd, 0x2c, 0xcb,
     	0xa6, 0xed, 0x9e, 0x53, 0xd4, 0x87, 0x03, 0x1a, 0x60, 0x9e, 0xe5, 0x98, 0xb8, 0x31, 0x2a, 0xc7,
     	0xc7, 0xf1, 0x12, 0x78, 0x99, 0x4d, 0x03, 0x9b, 0x51, 0x10, 0x14, 0xc7, 0x84, 0x6b, 0x60, 0x51,
     	0x4e, 0x32, 0x89, 0x1b, 0x3c, 0x27, 0xfd, 0xbc, 0xb8, 0x1e, 0x3f, 0x46, 0x49, 0x7a, 0x06, 0x61,
    -	0x12, 0x97, 0x3a, 0xc4, 0x0c, 0x20, 0x32, 0x71, 0x88, 0x3b, 0xf1, 0x63, 0x94, 0xa4, 0x87, 0x35,
    +	0x12, 0x97, 0x3a, 0xc4, 0x0c, 0x20, 0x32, 0x71, 0x88, 0xbb, 0xf1, 0x63, 0x94, 0xa4, 0x87, 0x35,
     	0xb0, 0x20, 0x51, 0xe5, 0xad, 0xe6, 0x26, 0x79, 0x4c, 0x8c, 0x1e, 0x32, 0x65, 0x5b, 0x0a, 0xe2,
     	0x7b, 0x3d, 0x06, 0x83, 0x12, 0xb0, 0xd0, 0x06, 0xc0, 0xf0, 0x8b, 0xa6, 0x9b, 0x9b, 0xe2, 0x42,
    -	0x6e, 0x8f, 0x1f, 0x25, 0x41, 0xe1, 0x0d, 0x3b, 0x7a, 0xb0, 0xe5, 0xa2, 0x88, 0x08, 0xf5, 0x9f,
    -	0x0a, 0x58, 0x4a, 0x0e, 0xa9, 0xc1, 0x7b, 0x40, 0x19, 0xf8, 0x1e, 0xf8, 0x23, 0x98, 0x11, 0x33,
    -	0x8f, 0xed, 0xc8, 0x6b, 0xff, 0xe9, 0x21, 0xcb, 0x1a, 0xae, 0x92, 0x7a, 0x45, 0xb2, 0x8a, 0x20,
    -	0xf6, 0x57, 0x28, 0x80, 0x54, 0x9f, 0x67, 0x00, 0x08, 0x73, 0x0a, 0xde, 0x88, 0xf5, 0xb1, 0xd5,
    -	0x44, 0x1f, 0x5b, 0x8a, 0x3e, 0x2e, 0x22, 0x3d, 0xeb, 0x3e, 0x98, 0xb2, 0x79, 0x99, 0x91, 0x1a,
    -	0x5e, 0x1b, 0xe2, 0xc7, 0x60, 0xde, 0x09, 0x80, 0x74, 0xc0, 0x1a, 0x83, 0xac, 0x53, 0x12, 0x08,
    +	0xee, 0x8c, 0x1f, 0x25, 0x41, 0xe1, 0x0d, 0x3b, 0x7a, 0xb0, 0xe5, 0xa2, 0x88, 0x08, 0xf5, 0x6f,
    +	0x0a, 0x58, 0x4a, 0x0e, 0xa9, 0xc1, 0x7b, 0x40, 0x19, 0xf8, 0x1e, 0xf8, 0x1d, 0x98, 0x11, 0x33,
    +	0x8f, 0xed, 0xc8, 0x6b, 0xff, 0xd1, 0x21, 0xcb, 0x1a, 0xae, 0x92, 0x7a, 0x45, 0xb2, 0x8a, 0x20,
    +	0xf6, 0x57, 0x28, 0x80, 0x54, 0x5f, 0x64, 0x00, 0x08, 0x73, 0x0a, 0xde, 0x8c, 0xf5, 0xb1, 0xd5,
    +	0x44, 0x1f, 0x5b, 0x8a, 0x3e, 0x2e, 0x22, 0x3d, 0xeb, 0x01, 0x98, 0xb2, 0x79, 0x99, 0x91, 0x1a,
    +	0x5e, 0x1f, 0xe2, 0xc7, 0x60, 0xde, 0x09, 0x80, 0x74, 0xc0, 0x1a, 0x83, 0xac, 0x53, 0x12, 0x08,
     	0x6e, 0x80, 0x4c, 0xd3, 0x36, 0xfd, 0x29, 0x65, 0xd8, 0x58, 0x57, 0xb6, 0x4d, 0x37, 0x06, 0x37,
     	0xc3, 0x34, 0x66, 0xbb, 0x88, 0x43, 0xb0, 0x29, 0xd1, 0xff, 0x94, 0xc0, 0xc3, 0x31, 0x5b, 0x2a,
    -	0x0e, 0x81, 0xeb, 0xf7, 0x60, 0x17, 0xde, 0xf3, 0x4f, 0x50, 0x00, 0x07, 0xff, 0x02, 0x96, 0x8d,
    +	0x0e, 0x81, 0xeb, 0xf7, 0x60, 0x17, 0xde, 0xf3, 0x4f, 0x50, 0x00, 0x07, 0xff, 0x08, 0x96, 0x8d,
     	0xe4, 0x03, 0x38, 0x37, 0x3d, 0x72, 0xb0, 0x1a, 0xfa, 0x75, 0x40, 0x3f, 0xd3, 0xed, 0x14, 0x96,
     	0x7b, 0x48, 0x50, 0xaf, 0x24, 0x66, 0x19, 0x91, 0xef, 0x26, 0x59, 0xe7, 0x86, 0x59, 0xd6, 0xef,
    -	0x85, 0x28, 0x2c, 0xf3, 0x4f, 0x50, 0x00, 0xa7, 0xfe, 0x2b, 0x03, 0xe6, 0x62, 0x6f, 0xb1, 0x63,
    +	0x85, 0x28, 0x2c, 0xf3, 0x4f, 0x50, 0x00, 0xa7, 0xfe, 0x3d, 0x03, 0xe6, 0x62, 0x6f, 0xb1, 0x63,
     	0x8e, 0x0c, 0x91, 0xcc, 0x47, 0x16, 0x19, 0x02, 0xee, 0x48, 0x23, 0x43, 0x40, 0x1e, 0x53, 0x64,
    -	0x08, 0x61, 0xc7, 0x14, 0x19, 0x11, 0xcb, 0xfa, 0x44, 0xc6, 0xa7, 0x29, 0x3f, 0x32, 0xc4, 0xb0,
    +	0x08, 0x61, 0xc7, 0x14, 0x19, 0x11, 0xcb, 0xfa, 0x44, 0xc6, 0x27, 0x29, 0x3f, 0x32, 0xc4, 0xb0,
     	0x70, 0xb8, 0xc8, 0x10, 0xb4, 0x91, 0xc8, 0xd8, 0x8e, 0x3e, 0x6f, 0x47, 0xcc, 0x6a, 0x9a, 0xef,
    -	0x56, 0xed, 0x7e, 0x0b, 0x5b, 0x1e, 0xf5, 0x0e, 0xf4, 0xd9, 0x9e, 0xa7, 0xb0, 0x09, 0xe6, 0x70,
    +	0x56, 0xed, 0x41, 0x0b, 0x5b, 0x1e, 0xf5, 0x0e, 0xf4, 0xd9, 0x9e, 0xa7, 0xb0, 0x09, 0xe6, 0x70,
     	0x9b, 0x38, 0xb8, 0x46, 0xf8, 0xb6, 0x8c, 0x8f, 0x71, 0x71, 0x97, 0xd8, 0x4b, 0x74, 0x2d, 0x82,
    -	0x83, 0x62, 0xa8, 0xac, 0xa5, 0xcb, 0xf5, 0x43, 0x2f, 0x78, 0xe2, 0xca, 0x2e, 0xc7, 0x5b, 0xfa,
    -	0x5a, 0xcf, 0x29, 0xea, 0xc3, 0xa1, 0xfe, 0x23, 0x05, 0x96, 0x7b, 0x3e, 0x2e, 0x84, 0x4e, 0x51,
    -	0x3e, 0x90, 0x53, 0x52, 0xc7, 0xe8, 0x94, 0xf4, 0xd8, 0x4e, 0xf9, 0x5f, 0x0a, 0xc0, 0xde, 0xfe,
    -	0x00, 0x0f, 0xf8, 0x58, 0x61, 0x38, 0xb4, 0x4a, 0x4c, 0x71, 0xfc, 0x1d, 0x67, 0xe0, 0xe8, 0x38,
    +	0x83, 0x62, 0xa8, 0xac, 0xa5, 0xcb, 0xf5, 0x23, 0x2f, 0x78, 0xe2, 0xca, 0x2e, 0xc7, 0x5b, 0xfa,
    +	0x5a, 0xcf, 0x29, 0xea, 0xc3, 0xa1, 0xfe, 0x35, 0x05, 0x96, 0x7b, 0x3e, 0x2e, 0x84, 0x4e, 0x51,
    +	0x3e, 0x92, 0x53, 0x52, 0xc7, 0xe8, 0x94, 0xf4, 0xd8, 0x4e, 0xf9, 0x77, 0x0a, 0xc0, 0xde, 0xfe,
    +	0x00, 0x0f, 0xf8, 0x58, 0x61, 0x38, 0xb4, 0x4a, 0x4c, 0x71, 0xfc, 0x2d, 0x67, 0xe0, 0xe8, 0x38,
     	0x12, 0x85, 0x45, 0x49, 0x39, 0x47, 0xff, 0x91, 0x35, 0xfc, 0xa4, 0x95, 0x3e, 0xb2, 0x4f, 0x5a,
    -	0xea, 0xc7, 0x49, 0xbf, 0x9d, 0xc0, 0xcf, 0x67, 0xfd, 0x6e, 0x39, 0x7d, 0x3c, 0xb7, 0xac, 0xfe,
    -	0x5f, 0x01, 0x4b, 0xc9, 0x31, 0xe2, 0x84, 0x7c, 0x3b, 0xfd, 0x24, 0xae, 0xfa, 0x49, 0xfc, 0x6e,
    -	0xfa, 0x42, 0x01, 0xa7, 0x4f, 0xce, 0xdf, 0x24, 0xea, 0x7f, 0x7b, 0xd5, 0x3d, 0x01, 0x7f, 0x76,
    -	0xe8, 0xbf, 0x78, 0xf5, 0x36, 0x3f, 0xf1, 0xfa, 0x6d, 0x7e, 0xe2, 0xcd, 0xdb, 0xfc, 0xc4, 0x5f,
    -	0xbb, 0x79, 0xe5, 0x55, 0x37, 0xaf, 0xbc, 0xee, 0xe6, 0x95, 0x37, 0xdd, 0xbc, 0xf2, 0x65, 0x37,
    -	0xaf, 0xfc, 0xfd, 0xab, 0xfc, 0xc4, 0xef, 0xcf, 0x0f, 0xfc, 0xa7, 0xf0, 0xdb, 0x00, 0x00, 0x00,
    -	0xff, 0xff, 0xc5, 0xb7, 0xf9, 0x52, 0x5e, 0x1c, 0x00, 0x00,
    +	0xea, 0xff, 0x92, 0x7e, 0x3b, 0x81, 0x9f, 0xcf, 0xfa, 0xdd, 0x72, 0xfa, 0x78, 0x6e, 0x59, 0xfd,
    +	0x8f, 0x02, 0x96, 0x92, 0x63, 0xc4, 0x09, 0xf9, 0x76, 0xfa, 0xff, 0xb8, 0xea, 0x27, 0xf1, 0xbb,
    +	0xe9, 0x4b, 0x05, 0x9c, 0x3e, 0x39, 0x7f, 0x93, 0xa8, 0xff, 0xea, 0x55, 0xf7, 0x04, 0xfc, 0xd9,
    +	0xa1, 0xff, 0xf4, 0xf5, 0xbb, 0xfc, 0xc4, 0x9b, 0x77, 0xf9, 0x89, 0xb7, 0xef, 0xf2, 0x13, 0x7f,
    +	0xea, 0xe6, 0x95, 0xd7, 0xdd, 0xbc, 0xf2, 0xa6, 0x9b, 0x57, 0xde, 0x76, 0xf3, 0xca, 0x17, 0xdd,
    +	0xbc, 0xf2, 0x97, 0x2f, 0xf3, 0x13, 0xbf, 0x39, 0x3f, 0xf0, 0x9f, 0xc2, 0x6f, 0x02, 0x00, 0x00,
    +	0xff, 0xff, 0xca, 0x8b, 0x47, 0xba, 0x45, 0x1c, 0x00, 0x00,
     }
     
     func (m *ContainerResourceMetricSource) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/autoscaling/v2/generated.proto b/vendor/k8s.io/api/autoscaling/v2/generated.proto
    index a9e36975fcac..4e6dc0592aaa 100644
    --- a/vendor/k8s.io/api/autoscaling/v2/generated.proto
    +++ b/vendor/k8s.io/api/autoscaling/v2/generated.proto
    @@ -147,7 +147,7 @@ message HorizontalPodAutoscaler {
       // metadata is the standard object metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the specification for the behaviour of the autoscaler.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
    @@ -190,7 +190,7 @@ message HorizontalPodAutoscalerCondition {
       // lastTransitionTime is the last time the condition transitioned from
       // one status to another
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // reason is the reason for the condition's last transition.
       // +optional
    @@ -206,7 +206,7 @@ message HorizontalPodAutoscalerCondition {
     message HorizontalPodAutoscalerList {
       // metadata is the standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of horizontal pod autoscaler objects.
       repeated HorizontalPodAutoscaler items = 2;
    @@ -258,7 +258,7 @@ message HorizontalPodAutoscalerStatus {
       // lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods,
       // used by the autoscaler to control how often the number of pods is changed.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2;
     
       // currentReplicas is current number of replicas of pods managed by this autoscaler,
       // as last seen by the autoscaler.
    @@ -293,7 +293,7 @@ message MetricIdentifier {
       // When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
       // When unset, just the metricName will be used to gather metrics.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     }
     
     // MetricSpec specifies how to scale based on a single metric
    @@ -301,8 +301,6 @@ message MetricIdentifier {
     message MetricSpec {
       // type is the type of metric source.  It should be one of "ContainerResource", "External",
       // "Object", "Pods" or "Resource", each mapping to a matching field in the object.
    -  // Note: "ContainerResource" type is available on when the feature-gate
    -  // HPAContainerMetrics is enabled
       optional string type = 1;
     
       // object refers to a metric describing a single kubernetes object
    @@ -329,7 +327,6 @@ message MetricSpec {
       // each pod of the current scale target (e.g. CPU or memory). Such metrics are
       // built in to Kubernetes, and have special scaling options on top of those
       // available to normal per-pod metrics using the "pods" source.
    -  // This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
       // +optional
       optional ContainerResourceMetricSource containerResource = 7;
     
    @@ -346,8 +343,6 @@ message MetricSpec {
     message MetricStatus {
       // type is the type of metric source.  It will be one of "ContainerResource", "External",
       // "Object", "Pods" or "Resource", each corresponds to a matching field in the object.
    -  // Note: "ContainerResource" type is available on when the feature-gate
    -  // HPAContainerMetrics is enabled
       optional string type = 1;
     
       // object refers to a metric describing a single kubernetes object
    @@ -393,12 +388,12 @@ message MetricTarget {
     
       // value is the target value of the metric (as a quantity).
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity value = 2;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity value = 2;
     
       // averageValue is the target value of the average of the
       // metric across all relevant pods (as a quantity)
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 3;
     
       // averageUtilization is the target value of the average of the
       // resource metric across all relevant pods, represented as a percentage of
    @@ -412,12 +407,12 @@ message MetricTarget {
     message MetricValueStatus {
       // value is the current value of the metric (as a quantity).
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity value = 1;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity value = 1;
     
       // averageValue is the current value of the average of the
       // metric across all relevant pods (as a quantity)
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 2;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 2;
     
       // currentAverageUtilization is the current value of the average of the
       // resource metric across all relevant pods, represented as a percentage of
    diff --git a/vendor/k8s.io/api/autoscaling/v2/types.go b/vendor/k8s.io/api/autoscaling/v2/types.go
    index c12a83df1bf8..99e8db09dc8a 100644
    --- a/vendor/k8s.io/api/autoscaling/v2/types.go
    +++ b/vendor/k8s.io/api/autoscaling/v2/types.go
    @@ -26,6 +26,7 @@ import (
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.23
     
     // HorizontalPodAutoscaler is the configuration for a horizontal pod
     // autoscaler, which automatically manages the replica count of any resource
    @@ -101,8 +102,6 @@ type CrossVersionObjectReference struct {
     type MetricSpec struct {
     	// type is the type of metric source.  It should be one of "ContainerResource", "External",
     	// "Object", "Pods" or "Resource", each mapping to a matching field in the object.
    -	// Note: "ContainerResource" type is available on when the feature-gate
    -	// HPAContainerMetrics is enabled
     	Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"`
     
     	// object refers to a metric describing a single kubernetes object
    @@ -129,7 +128,6 @@ type MetricSpec struct {
     	// each pod of the current scale target (e.g. CPU or memory). Such metrics are
     	// built in to Kubernetes, and have special scaling options on top of those
     	// available to normal per-pod metrics using the "pods" source.
    -	// This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
     	// +optional
     	ContainerResource *ContainerResourceMetricSource `json:"containerResource,omitempty" protobuf:"bytes,7,opt,name=containerResource"`
     
    @@ -452,8 +450,6 @@ type HorizontalPodAutoscalerCondition struct {
     type MetricStatus struct {
     	// type is the type of metric source.  It will be one of "ContainerResource", "External",
     	// "Object", "Pods" or "Resource", each corresponds to a matching field in the object.
    -	// Note: "ContainerResource" type is available on when the feature-gate
    -	// HPAContainerMetrics is enabled
     	Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"`
     
     	// object refers to a metric describing a single kubernetes object
    @@ -573,6 +569,7 @@ type MetricValueStatus struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.23
     
     // HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects.
     type HorizontalPodAutoscalerList struct {
    diff --git a/vendor/k8s.io/api/autoscaling/v2/types_swagger_doc_generated.go b/vendor/k8s.io/api/autoscaling/v2/types_swagger_doc_generated.go
    index 1941b1ef57aa..649cd04a03cd 100644
    --- a/vendor/k8s.io/api/autoscaling/v2/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/autoscaling/v2/types_swagger_doc_generated.go
    @@ -185,11 +185,11 @@ func (MetricIdentifier) SwaggerDoc() map[string]string {
     
     var map_MetricSpec = map[string]string{
     	"":                  "MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).",
    -	"type":              "type is the type of metric source.  It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled",
    +	"type":              "type is the type of metric source.  It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object.",
     	"object":            "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).",
     	"pods":              "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.",
     	"resource":          "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
    -	"containerResource": "containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.",
    +	"containerResource": "containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
     	"external":          "external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).",
     }
     
    @@ -199,7 +199,7 @@ func (MetricSpec) SwaggerDoc() map[string]string {
     
     var map_MetricStatus = map[string]string{
     	"":                  "MetricStatus describes the last-read state of a single metric.",
    -	"type":              "type is the type of metric source.  It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled",
    +	"type":              "type is the type of metric source.  It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object.",
     	"object":            "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).",
     	"pods":              "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.",
     	"resource":          "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
    diff --git a/vendor/k8s.io/api/autoscaling/v2/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/autoscaling/v2/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..99ae74865126
    --- /dev/null
    +++ b/vendor/k8s.io/api/autoscaling/v2/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,34 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v2
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *HorizontalPodAutoscaler) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 23
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *HorizontalPodAutoscalerList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 23
    +}
    diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go b/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go
    index edda3581e76e..69567089b6fc 100644
    --- a/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto
    +// source: k8s.io/api/autoscaling/v2beta1/generated.proto
     
     package v2beta1
     
    @@ -50,7 +50,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ContainerResourceMetricSource) Reset()      { *m = ContainerResourceMetricSource{} }
     func (*ContainerResourceMetricSource) ProtoMessage() {}
     func (*ContainerResourceMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{0}
    +	return fileDescriptor_ea74040359c1ed83, []int{0}
     }
     func (m *ContainerResourceMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -78,7 +78,7 @@ var xxx_messageInfo_ContainerResourceMetricSource proto.InternalMessageInfo
     func (m *ContainerResourceMetricStatus) Reset()      { *m = ContainerResourceMetricStatus{} }
     func (*ContainerResourceMetricStatus) ProtoMessage() {}
     func (*ContainerResourceMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{1}
    +	return fileDescriptor_ea74040359c1ed83, []int{1}
     }
     func (m *ContainerResourceMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -106,7 +106,7 @@ var xxx_messageInfo_ContainerResourceMetricStatus proto.InternalMessageInfo
     func (m *CrossVersionObjectReference) Reset()      { *m = CrossVersionObjectReference{} }
     func (*CrossVersionObjectReference) ProtoMessage() {}
     func (*CrossVersionObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{2}
    +	return fileDescriptor_ea74040359c1ed83, []int{2}
     }
     func (m *CrossVersionObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -134,7 +134,7 @@ var xxx_messageInfo_CrossVersionObjectReference proto.InternalMessageInfo
     func (m *ExternalMetricSource) Reset()      { *m = ExternalMetricSource{} }
     func (*ExternalMetricSource) ProtoMessage() {}
     func (*ExternalMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{3}
    +	return fileDescriptor_ea74040359c1ed83, []int{3}
     }
     func (m *ExternalMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -162,7 +162,7 @@ var xxx_messageInfo_ExternalMetricSource proto.InternalMessageInfo
     func (m *ExternalMetricStatus) Reset()      { *m = ExternalMetricStatus{} }
     func (*ExternalMetricStatus) ProtoMessage() {}
     func (*ExternalMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{4}
    +	return fileDescriptor_ea74040359c1ed83, []int{4}
     }
     func (m *ExternalMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -190,7 +190,7 @@ var xxx_messageInfo_ExternalMetricStatus proto.InternalMessageInfo
     func (m *HorizontalPodAutoscaler) Reset()      { *m = HorizontalPodAutoscaler{} }
     func (*HorizontalPodAutoscaler) ProtoMessage() {}
     func (*HorizontalPodAutoscaler) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{5}
    +	return fileDescriptor_ea74040359c1ed83, []int{5}
     }
     func (m *HorizontalPodAutoscaler) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -218,7 +218,7 @@ var xxx_messageInfo_HorizontalPodAutoscaler proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerCondition) Reset()      { *m = HorizontalPodAutoscalerCondition{} }
     func (*HorizontalPodAutoscalerCondition) ProtoMessage() {}
     func (*HorizontalPodAutoscalerCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{6}
    +	return fileDescriptor_ea74040359c1ed83, []int{6}
     }
     func (m *HorizontalPodAutoscalerCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -246,7 +246,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerCondition proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerList) Reset()      { *m = HorizontalPodAutoscalerList{} }
     func (*HorizontalPodAutoscalerList) ProtoMessage() {}
     func (*HorizontalPodAutoscalerList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{7}
    +	return fileDescriptor_ea74040359c1ed83, []int{7}
     }
     func (m *HorizontalPodAutoscalerList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -274,7 +274,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerList proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerSpec) Reset()      { *m = HorizontalPodAutoscalerSpec{} }
     func (*HorizontalPodAutoscalerSpec) ProtoMessage() {}
     func (*HorizontalPodAutoscalerSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{8}
    +	return fileDescriptor_ea74040359c1ed83, []int{8}
     }
     func (m *HorizontalPodAutoscalerSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -302,7 +302,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerSpec proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerStatus) Reset()      { *m = HorizontalPodAutoscalerStatus{} }
     func (*HorizontalPodAutoscalerStatus) ProtoMessage() {}
     func (*HorizontalPodAutoscalerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{9}
    +	return fileDescriptor_ea74040359c1ed83, []int{9}
     }
     func (m *HorizontalPodAutoscalerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -330,7 +330,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerStatus proto.InternalMessageInfo
     func (m *MetricSpec) Reset()      { *m = MetricSpec{} }
     func (*MetricSpec) ProtoMessage() {}
     func (*MetricSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{10}
    +	return fileDescriptor_ea74040359c1ed83, []int{10}
     }
     func (m *MetricSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -358,7 +358,7 @@ var xxx_messageInfo_MetricSpec proto.InternalMessageInfo
     func (m *MetricStatus) Reset()      { *m = MetricStatus{} }
     func (*MetricStatus) ProtoMessage() {}
     func (*MetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{11}
    +	return fileDescriptor_ea74040359c1ed83, []int{11}
     }
     func (m *MetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -386,7 +386,7 @@ var xxx_messageInfo_MetricStatus proto.InternalMessageInfo
     func (m *ObjectMetricSource) Reset()      { *m = ObjectMetricSource{} }
     func (*ObjectMetricSource) ProtoMessage() {}
     func (*ObjectMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{12}
    +	return fileDescriptor_ea74040359c1ed83, []int{12}
     }
     func (m *ObjectMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -414,7 +414,7 @@ var xxx_messageInfo_ObjectMetricSource proto.InternalMessageInfo
     func (m *ObjectMetricStatus) Reset()      { *m = ObjectMetricStatus{} }
     func (*ObjectMetricStatus) ProtoMessage() {}
     func (*ObjectMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{13}
    +	return fileDescriptor_ea74040359c1ed83, []int{13}
     }
     func (m *ObjectMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -442,7 +442,7 @@ var xxx_messageInfo_ObjectMetricStatus proto.InternalMessageInfo
     func (m *PodsMetricSource) Reset()      { *m = PodsMetricSource{} }
     func (*PodsMetricSource) ProtoMessage() {}
     func (*PodsMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{14}
    +	return fileDescriptor_ea74040359c1ed83, []int{14}
     }
     func (m *PodsMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -470,7 +470,7 @@ var xxx_messageInfo_PodsMetricSource proto.InternalMessageInfo
     func (m *PodsMetricStatus) Reset()      { *m = PodsMetricStatus{} }
     func (*PodsMetricStatus) ProtoMessage() {}
     func (*PodsMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{15}
    +	return fileDescriptor_ea74040359c1ed83, []int{15}
     }
     func (m *PodsMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -498,7 +498,7 @@ var xxx_messageInfo_PodsMetricStatus proto.InternalMessageInfo
     func (m *ResourceMetricSource) Reset()      { *m = ResourceMetricSource{} }
     func (*ResourceMetricSource) ProtoMessage() {}
     func (*ResourceMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{16}
    +	return fileDescriptor_ea74040359c1ed83, []int{16}
     }
     func (m *ResourceMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -526,7 +526,7 @@ var xxx_messageInfo_ResourceMetricSource proto.InternalMessageInfo
     func (m *ResourceMetricStatus) Reset()      { *m = ResourceMetricStatus{} }
     func (*ResourceMetricStatus) ProtoMessage() {}
     func (*ResourceMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_26c1bfc7a52d0478, []int{17}
    +	return fileDescriptor_ea74040359c1ed83, []int{17}
     }
     func (m *ResourceMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -573,109 +573,108 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto", fileDescriptor_26c1bfc7a52d0478)
    -}
    -
    -var fileDescriptor_26c1bfc7a52d0478 = []byte{
    -	// 1565 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x4d, 0x6c, 0x1b, 0x45,
    -	0x1b, 0x8e, 0xed, 0x4d, 0x9a, 0xbc, 0x4e, 0xf3, 0x33, 0xed, 0xd7, 0xba, 0xe9, 0x57, 0x3b, 0x5a,
    -	0x7d, 0xfa, 0x94, 0xaf, 0xfa, 0xd8, 0x6d, 0x4d, 0xf8, 0x91, 0x10, 0x12, 0xb1, 0x0b, 0x6d, 0x45,
    -	0xd2, 0x96, 0x49, 0x5a, 0x21, 0x68, 0x11, 0x93, 0xf5, 0xd4, 0x59, 0x62, 0xef, 0x5a, 0x3b, 0x63,
    -	0xab, 0x29, 0x42, 0x42, 0x48, 0xdc, 0xb9, 0xc0, 0x19, 0x24, 0xae, 0x08, 0x71, 0x81, 0x33, 0xb7,
    -	0x1e, 0x7b, 0x6c, 0x05, 0xb2, 0xa8, 0x39, 0x70, 0xe6, 0xda, 0x13, 0x9a, 0xd9, 0xd9, 0xf5, 0xae,
    -	0xff, 0xe3, 0xa6, 0xe1, 0x47, 0xbd, 0x79, 0x77, 0xde, 0xf7, 0x79, 0x67, 0x9e, 0xf7, 0x6f, 0xde,
    -	0x35, 0x5c, 0xdc, 0x7d, 0x99, 0x19, 0xb6, 0x6b, 0xee, 0xd6, 0xb7, 0xa9, 0xe7, 0x50, 0x4e, 0x99,
    -	0xd9, 0xa0, 0x4e, 0xc9, 0xf5, 0x4c, 0xb5, 0x40, 0x6a, 0xb6, 0x49, 0xea, 0xdc, 0x65, 0x16, 0xa9,
    -	0xd8, 0x4e, 0xd9, 0x6c, 0xe4, 0xb7, 0x29, 0x27, 0xe7, 0xcd, 0x32, 0x75, 0xa8, 0x47, 0x38, 0x2d,
    -	0x19, 0x35, 0xcf, 0xe5, 0x2e, 0xca, 0xfa, 0xf2, 0x06, 0xa9, 0xd9, 0x46, 0x44, 0xde, 0x50, 0xf2,
    -	0x4b, 0xcf, 0x95, 0x6d, 0xbe, 0x53, 0xdf, 0x36, 0x2c, 0xb7, 0x6a, 0x96, 0xdd, 0xb2, 0x6b, 0x4a,
    -	0xb5, 0xed, 0xfa, 0x6d, 0xf9, 0x24, 0x1f, 0xe4, 0x2f, 0x1f, 0x6e, 0x49, 0x8f, 0x98, 0xb7, 0x5c,
    -	0x8f, 0x9a, 0x8d, 0x2e, 0x93, 0x4b, 0xab, 0x6d, 0x99, 0x2a, 0xb1, 0x76, 0x6c, 0x87, 0x7a, 0x7b,
    -	0x66, 0x6d, 0xb7, 0x2c, 0x95, 0x3c, 0xca, 0xdc, 0xba, 0x67, 0xd1, 0x7d, 0x69, 0x31, 0xb3, 0x4a,
    -	0x39, 0xe9, 0x65, 0xcb, 0xec, 0xa7, 0xe5, 0xd5, 0x1d, 0x6e, 0x57, 0xbb, 0xcd, 0xbc, 0x38, 0x4c,
    -	0x81, 0x59, 0x3b, 0xb4, 0x4a, 0x3a, 0xf5, 0xf4, 0xdf, 0x92, 0x70, 0xa6, 0xe8, 0x3a, 0x9c, 0x08,
    -	0x0d, 0xac, 0x0e, 0xb1, 0x41, 0xb9, 0x67, 0x5b, 0x9b, 0xf2, 0x37, 0x2a, 0x82, 0xe6, 0x90, 0x2a,
    -	0xcd, 0x24, 0x96, 0x13, 0x2b, 0x33, 0x05, 0xf3, 0x5e, 0x33, 0x37, 0xd1, 0x6a, 0xe6, 0xb4, 0x2b,
    -	0xa4, 0x4a, 0x1f, 0x37, 0x73, 0xb9, 0x6e, 0xe2, 0x8c, 0x00, 0x46, 0x88, 0x60, 0xa9, 0x8c, 0xde,
    -	0x86, 0x0c, 0x27, 0x5e, 0x99, 0xf2, 0xb5, 0x06, 0xf5, 0x48, 0x99, 0x5e, 0xe7, 0x76, 0xc5, 0xbe,
    -	0x4b, 0xb8, 0xed, 0x3a, 0x99, 0xe4, 0x72, 0x62, 0x65, 0xb2, 0xf0, 0xef, 0x56, 0x33, 0x97, 0xd9,
    -	0xea, 0x23, 0x83, 0xfb, 0x6a, 0xa3, 0x06, 0xa0, 0xd8, 0xda, 0x0d, 0x52, 0xa9, 0xd3, 0x4c, 0x6a,
    -	0x39, 0xb1, 0x92, 0xce, 0x1b, 0x46, 0x3b, 0x4a, 0x42, 0x56, 0x8c, 0xda, 0x6e, 0x59, 0x86, 0x4d,
    -	0xe0, 0x32, 0xe3, 0xad, 0x3a, 0x71, 0xb8, 0xcd, 0xf7, 0x0a, 0x27, 0x5a, 0xcd, 0x1c, 0xda, 0xea,
    -	0x42, 0xc3, 0x3d, 0x2c, 0x20, 0x13, 0x66, 0xac, 0x80, 0xb7, 0x8c, 0x26, 0xb9, 0x59, 0x54, 0xdc,
    -	0xcc, 0xb4, 0x09, 0x6d, 0xcb, 0xe8, 0xbf, 0x0f, 0x60, 0x9a, 0x13, 0x5e, 0x67, 0x07, 0xc3, 0xf4,
    -	0xbb, 0x70, 0xca, 0xaa, 0x7b, 0x1e, 0x75, 0xfa, 0x53, 0x7d, 0xa6, 0xd5, 0xcc, 0x9d, 0x2a, 0xf6,
    -	0x13, 0xc2, 0xfd, 0xf5, 0xd1, 0x47, 0x70, 0x2c, 0xbe, 0xf8, 0x24, 0x6c, 0x9f, 0x56, 0x07, 0x3c,
    -	0x56, 0xec, 0x86, 0xc4, 0xbd, 0xec, 0xec, 0x9f, 0xf3, 0xcf, 0x13, 0x70, 0xba, 0xe8, 0xb9, 0x8c,
    -	0xdd, 0xa0, 0x1e, 0xb3, 0x5d, 0xe7, 0xea, 0xf6, 0x07, 0xd4, 0xe2, 0x98, 0xde, 0xa6, 0x1e, 0x75,
    -	0x2c, 0x8a, 0x96, 0x41, 0xdb, 0xb5, 0x9d, 0x92, 0x62, 0x7c, 0x36, 0x60, 0xfc, 0x4d, 0xdb, 0x29,
    -	0x61, 0xb9, 0x22, 0x24, 0xa4, 0x4f, 0x92, 0x71, 0x89, 0x08, 0xe1, 0x79, 0x00, 0x52, 0xb3, 0x95,
    -	0x01, 0x49, 0xc5, 0x4c, 0x01, 0x29, 0x39, 0x58, 0xbb, 0x76, 0x59, 0xad, 0xe0, 0x88, 0x94, 0xfe,
    -	0x45, 0x0a, 0x8e, 0xbf, 0x7e, 0x87, 0x53, 0xcf, 0x21, 0x95, 0x58, 0xb2, 0xe5, 0x01, 0xaa, 0xf2,
    -	0xf9, 0x4a, 0x3b, 0x10, 0x42, 0xb0, 0x8d, 0x70, 0x05, 0x47, 0xa4, 0x90, 0x0b, 0x73, 0xfe, 0xd3,
    -	0x26, 0xad, 0x50, 0x8b, 0xbb, 0x9e, 0xdc, 0x6c, 0x3a, 0xff, 0xfc, 0x20, 0x7f, 0x30, 0x43, 0x94,
    -	0x1e, 0xa3, 0x71, 0xde, 0x58, 0x27, 0xdb, 0xb4, 0x12, 0xa8, 0x16, 0x50, 0xab, 0x99, 0x9b, 0xdb,
    -	0x88, 0xc1, 0xe1, 0x0e, 0x78, 0x44, 0x20, 0xed, 0x27, 0xc4, 0x93, 0x78, 0x7f, 0xbe, 0xd5, 0xcc,
    -	0xa5, 0xb7, 0xda, 0x30, 0x38, 0x8a, 0xd9, 0x27, 0xab, 0xb5, 0xa7, 0x9d, 0xd5, 0xfa, 0x97, 0xdd,
    -	0x8e, 0xf1, 0x73, 0xf3, 0x6f, 0xe1, 0x98, 0x1d, 0x98, 0x55, 0x69, 0xf3, 0x24, 0x9e, 0x39, 0xae,
    -	0x8e, 0x35, 0x5b, 0x8c, 0x60, 0xe1, 0x18, 0x32, 0xda, 0xeb, 0x5d, 0x08, 0xc6, 0x73, 0xd0, 0xc9,
    -	0xfd, 0x14, 0x01, 0xfd, 0xc7, 0x24, 0x9c, 0xbc, 0xe4, 0x7a, 0xf6, 0x5d, 0x91, 0xe5, 0x95, 0x6b,
    -	0x6e, 0x69, 0x4d, 0xb5, 0x7f, 0xea, 0xa1, 0xf7, 0x61, 0x5a, 0xb0, 0x57, 0x22, 0x9c, 0x48, 0x1f,
    -	0xa5, 0xf3, 0xe7, 0x46, 0xe3, 0xda, 0x2f, 0x0c, 0x1b, 0x94, 0x93, 0xb6, 0x57, 0xdb, 0xef, 0x70,
    -	0x88, 0x8a, 0x6e, 0x81, 0xc6, 0x6a, 0xd4, 0x52, 0x9e, 0x7c, 0xc5, 0x18, 0x7c, 0x0d, 0x31, 0xfa,
    -	0x6c, 0x74, 0xb3, 0x46, 0xad, 0x76, 0x31, 0x11, 0x4f, 0x58, 0xc2, 0x22, 0x0a, 0x53, 0x4c, 0x06,
    -	0x9c, 0xf2, 0xdd, 0xab, 0xe3, 0x1a, 0x90, 0x20, 0x85, 0x39, 0x65, 0x62, 0xca, 0x7f, 0xc6, 0x0a,
    -	0x5c, 0xff, 0x34, 0x05, 0xcb, 0x7d, 0x34, 0x8b, 0xae, 0x53, 0xb2, 0x65, 0xb1, 0xbf, 0x04, 0x1a,
    -	0xdf, 0xab, 0x05, 0xc1, 0xbe, 0x1a, 0xec, 0x76, 0x6b, 0xaf, 0x26, 0xda, 0xd1, 0x7f, 0x86, 0xe9,
    -	0x0b, 0x39, 0x2c, 0x11, 0xd0, 0x7a, 0x78, 0xaa, 0x64, 0x0c, 0x4b, 0x6d, 0xeb, 0x71, 0x33, 0xd7,
    -	0xe3, 0xfe, 0x65, 0x84, 0x48, 0xf1, 0xcd, 0x8b, 0xda, 0x50, 0x21, 0x8c, 0x6f, 0x79, 0xc4, 0x61,
    -	0xbe, 0x25, 0xbb, 0x1a, 0xc4, 0xfa, 0xd9, 0xd1, 0xdc, 0x2d, 0x34, 0x0a, 0x4b, 0x6a, 0x17, 0x68,
    -	0xbd, 0x0b, 0x0d, 0xf7, 0xb0, 0x80, 0xfe, 0x0b, 0x53, 0x1e, 0x25, 0xcc, 0x75, 0x54, 0xeb, 0x09,
    -	0xc9, 0xc5, 0xf2, 0x2d, 0x56, 0xab, 0xe8, 0x7f, 0x70, 0xa4, 0x4a, 0x19, 0x23, 0x65, 0x9a, 0x99,
    -	0x94, 0x82, 0xf3, 0x4a, 0xf0, 0xc8, 0x86, 0xff, 0x1a, 0x07, 0xeb, 0xfa, 0xc3, 0x04, 0x9c, 0xee,
    -	0xc3, 0xe3, 0xba, 0xcd, 0x38, 0xba, 0xd9, 0x15, 0xcf, 0xc6, 0x88, 0xb5, 0xc3, 0x66, 0x7e, 0x34,
    -	0x2f, 0x28, 0xdb, 0xd3, 0xc1, 0x9b, 0x48, 0x2c, 0xdf, 0x84, 0x49, 0x9b, 0xd3, 0xaa, 0xf0, 0x4a,
    -	0x6a, 0x25, 0x9d, 0x7f, 0x69, 0xcc, 0x58, 0x2b, 0x1c, 0x55, 0x36, 0x26, 0x2f, 0x0b, 0x34, 0xec,
    -	0x83, 0xea, 0x3f, 0x25, 0xfb, 0x9e, 0x4d, 0x04, 0x3c, 0xfa, 0x10, 0xe6, 0xe4, 0x93, 0x5f, 0x99,
    -	0x31, 0xbd, 0xad, 0x4e, 0x38, 0x34, 0xa7, 0x06, 0x34, 0xf4, 0xc2, 0x09, 0xb5, 0x95, 0xb9, 0xcd,
    -	0x18, 0x34, 0xee, 0x30, 0x85, 0xce, 0x43, 0xba, 0x6a, 0x3b, 0x98, 0xd6, 0x2a, 0xb6, 0x45, 0x98,
    -	0xba, 0x17, 0xc9, 0x96, 0xb4, 0xd1, 0x7e, 0x8d, 0xa3, 0x32, 0xe8, 0x05, 0x48, 0x57, 0xc9, 0x9d,
    -	0x50, 0x25, 0x25, 0x55, 0x8e, 0x29, 0x7b, 0xe9, 0x8d, 0xf6, 0x12, 0x8e, 0xca, 0xa1, 0xeb, 0x22,
    -	0x1a, 0x44, 0x95, 0x66, 0x19, 0x4d, 0xd2, 0x7c, 0x76, 0xd8, 0xf9, 0x54, 0x91, 0x17, 0x25, 0x22,
    -	0x12, 0x39, 0x12, 0x02, 0x07, 0x58, 0xfa, 0xf7, 0x1a, 0x9c, 0x19, 0x98, 0xfb, 0xe8, 0x0d, 0x40,
    -	0xee, 0x36, 0xa3, 0x5e, 0x83, 0x96, 0x2e, 0xfa, 0x97, 0x7e, 0x71, 0x3f, 0x11, 0x1c, 0xa7, 0xfc,
    -	0x96, 0x78, 0xb5, 0x6b, 0x15, 0xf7, 0xd0, 0x40, 0x16, 0x1c, 0x15, 0xc9, 0xe0, 0x13, 0x6a, 0xab,
    -	0xab, 0xd0, 0xfe, 0x32, 0x6d, 0xb1, 0xd5, 0xcc, 0x1d, 0x5d, 0x8f, 0x82, 0xe0, 0x38, 0x26, 0x5a,
    -	0x83, 0x79, 0x55, 0xeb, 0x3b, 0x08, 0x3e, 0xa9, 0x18, 0x98, 0x2f, 0xc6, 0x97, 0x71, 0xa7, 0xbc,
    -	0x80, 0x28, 0x51, 0x66, 0x7b, 0xb4, 0x14, 0x42, 0x68, 0x71, 0x88, 0x0b, 0xf1, 0x65, 0xdc, 0x29,
    -	0x8f, 0x2a, 0x30, 0xa7, 0x50, 0x15, 0xdf, 0x99, 0x49, 0xe9, 0xb2, 0xff, 0x8f, 0xe8, 0x32, 0xbf,
    -	0xe8, 0x86, 0x31, 0x58, 0x8c, 0x61, 0xe1, 0x0e, 0x6c, 0xc4, 0x01, 0xac, 0xa0, 0xc4, 0xb1, 0xcc,
    -	0x94, 0xb4, 0xf4, 0xda, 0x98, 0x39, 0x18, 0xd6, 0xca, 0x76, 0xfb, 0x0a, 0x5f, 0x31, 0x1c, 0xb1,
    -	0xa3, 0x7f, 0xab, 0x01, 0xb4, 0x23, 0x0c, 0xad, 0xc6, 0x8a, 0xfc, 0x72, 0x47, 0x91, 0x5f, 0x88,
    -	0x5e, 0x4e, 0x23, 0x05, 0xfd, 0x06, 0x4c, 0xb9, 0x32, 0xf3, 0x54, 0x30, 0xe4, 0x87, 0x6d, 0x3b,
    -	0xec, 0xa5, 0x21, 0x5a, 0x01, 0x44, 0xe9, 0x54, 0xf9, 0xab, 0xd0, 0xd0, 0x15, 0xd0, 0x6a, 0x6e,
    -	0x29, 0x68, 0x7e, 0xe7, 0x86, 0xa1, 0x5e, 0x73, 0x4b, 0x2c, 0x86, 0x39, 0x2d, 0xf6, 0x2e, 0xde,
    -	0x62, 0x89, 0x83, 0xde, 0x83, 0xe9, 0xe0, 0xba, 0xa1, 0xee, 0x26, 0xab, 0xc3, 0x30, 0x7b, 0xcd,
    -	0xc0, 0x85, 0x59, 0x51, 0x41, 0x83, 0x15, 0x1c, 0x62, 0xa2, 0x4f, 0x12, 0xb0, 0x68, 0x75, 0xce,
    -	0x74, 0x99, 0x23, 0xa3, 0xb5, 0xee, 0x81, 0x63, 0x77, 0xe1, 0x5f, 0xad, 0x66, 0x6e, 0xb1, 0x4b,
    -	0x04, 0x77, 0x9b, 0x13, 0x87, 0xa4, 0xea, 0xca, 0x2a, 0x1b, 0xce, 0x08, 0x87, 0xec, 0x35, 0x7b,
    -	0xf8, 0x87, 0x0c, 0x56, 0x70, 0x88, 0xa9, 0x7f, 0xa7, 0xc1, 0x6c, 0xec, 0x2e, 0xfc, 0x67, 0xc4,
    -	0x8c, 0x9f, 0x5a, 0x07, 0x1b, 0x33, 0x3e, 0xe6, 0xc1, 0xc7, 0x8c, 0x8f, 0x7b, 0xa8, 0x31, 0xe3,
    -	0x9b, 0x3c, 0xcc, 0x98, 0x89, 0x1c, 0xb2, 0x47, 0xcc, 0x3c, 0x4c, 0x01, 0xea, 0xce, 0x79, 0x64,
    -	0xc1, 0x94, 0x3f, 0x74, 0x1d, 0x44, 0xaf, 0x0f, 0xef, 0x5f, 0xaa, 0xad, 0x2b, 0xe8, 0x8e, 0x51,
    -	0x2d, 0x39, 0xd2, 0xa8, 0x46, 0x0f, 0x62, 0xa4, 0x0d, 0x2f, 0x03, 0x7d, 0xc7, 0xda, 0x5b, 0x30,
    -	0xcd, 0x82, 0x59, 0x50, 0x1b, 0x7f, 0x16, 0x94, 0xac, 0x87, 0x53, 0x60, 0x08, 0x89, 0x4a, 0x30,
    -	0x4b, 0xa2, 0xe3, 0xd8, 0xe4, 0x58, 0xc7, 0x58, 0x10, 0xb3, 0x5f, 0x6c, 0x0e, 0x8b, 0xa1, 0xea,
    -	0x3f, 0x77, 0xfa, 0xd6, 0xaf, 0x0a, 0x7f, 0x59, 0xdf, 0x1e, 0xde, 0x54, 0xfc, 0x8f, 0x70, 0xef,
    -	0x57, 0x49, 0x58, 0xe8, 0x6c, 0xac, 0x63, 0x7d, 0xfe, 0xb8, 0xdb, 0xf3, 0x1b, 0x4e, 0x72, 0xac,
    -	0x4d, 0x87, 0xb3, 0xda, 0x88, 0x5f, 0x67, 0xa3, 0x9e, 0x48, 0x1d, 0xb8, 0x27, 0xf4, 0xaf, 0xe3,
    -	0x1c, 0x8d, 0xff, 0x89, 0xa8, 0xcf, 0x07, 0xd5, 0xe4, 0x21, 0x7d, 0x50, 0x7d, 0xca, 0x34, 0x7d,
    -	0x93, 0x84, 0xe3, 0xcf, 0xfe, 0x53, 0x18, 0xfd, 0xeb, 0xe3, 0x0f, 0xdd, 0x7c, 0x3d, 0xfb, 0x67,
    -	0x60, 0x94, 0x40, 0x2e, 0x5c, 0xb8, 0xf7, 0x28, 0x3b, 0x71, 0xff, 0x51, 0x76, 0xe2, 0xc1, 0xa3,
    -	0xec, 0xc4, 0xc7, 0xad, 0x6c, 0xe2, 0x5e, 0x2b, 0x9b, 0xb8, 0xdf, 0xca, 0x26, 0x1e, 0xb4, 0xb2,
    -	0x89, 0x5f, 0x5a, 0xd9, 0xc4, 0x67, 0xbf, 0x66, 0x27, 0xde, 0xc9, 0x0e, 0xfe, 0x93, 0xf1, 0x8f,
    -	0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x76, 0xa2, 0x69, 0x9e, 0x1c, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/autoscaling/v2beta1/generated.proto", fileDescriptor_ea74040359c1ed83)
    +}
    +
    +var fileDescriptor_ea74040359c1ed83 = []byte{
    +	// 1549 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x4d, 0x6c, 0x1b, 0xc5,
    +	0x17, 0x8f, 0xed, 0x4d, 0x9a, 0x3c, 0xa7, 0xf9, 0x98, 0xf6, 0xdf, 0xba, 0xe9, 0xbf, 0x76, 0xb4,
    +	0xfa, 0xeb, 0xaf, 0x50, 0xc1, 0xba, 0x35, 0xe1, 0x43, 0x42, 0x48, 0xc4, 0x2e, 0xd0, 0x8a, 0xb8,
    +	0x2d, 0x93, 0xb4, 0x42, 0xd0, 0x22, 0x26, 0xeb, 0xa9, 0xb3, 0xc4, 0xde, 0xb5, 0x76, 0xc6, 0x51,
    +	0x53, 0x84, 0x84, 0x90, 0xb8, 0x73, 0x81, 0x33, 0x48, 0x5c, 0x11, 0xe2, 0x02, 0x67, 0x6e, 0x3d,
    +	0xf6, 0xd8, 0x0a, 0x64, 0x51, 0x73, 0xe0, 0xcc, 0xb5, 0x27, 0x34, 0xb3, 0xb3, 0xeb, 0x5d, 0xdb,
    +	0x6b, 0x3b, 0x6e, 0x1a, 0x3e, 0xd4, 0x9b, 0x77, 0xe7, 0xbd, 0xdf, 0x9b, 0xf9, 0xbd, 0xaf, 0x79,
    +	0x6b, 0x30, 0x76, 0x5e, 0x66, 0x86, 0xe5, 0xe4, 0x49, 0xc3, 0xca, 0x93, 0x26, 0x77, 0x98, 0x49,
    +	0x6a, 0x96, 0x5d, 0xcd, 0xef, 0x16, 0xb6, 0x28, 0x27, 0xe7, 0xf3, 0x55, 0x6a, 0x53, 0x97, 0x70,
    +	0x5a, 0x31, 0x1a, 0xae, 0xc3, 0x1d, 0x94, 0xf5, 0xe4, 0x0d, 0xd2, 0xb0, 0x8c, 0x90, 0xbc, 0xa1,
    +	0xe4, 0x97, 0x9e, 0xab, 0x5a, 0x7c, 0xbb, 0xb9, 0x65, 0x98, 0x4e, 0x3d, 0x5f, 0x75, 0xaa, 0x4e,
    +	0x5e, 0xaa, 0x6d, 0x35, 0x6f, 0xc9, 0x27, 0xf9, 0x20, 0x7f, 0x79, 0x70, 0x4b, 0x7a, 0xc8, 0xbc,
    +	0xe9, 0xb8, 0x34, 0xbf, 0xdb, 0x63, 0x72, 0x69, 0xb5, 0x23, 0x53, 0x27, 0xe6, 0xb6, 0x65, 0x53,
    +	0x77, 0x2f, 0xdf, 0xd8, 0xa9, 0x4a, 0x25, 0x97, 0x32, 0xa7, 0xe9, 0x9a, 0x74, 0x5f, 0x5a, 0x2c,
    +	0x5f, 0xa7, 0x9c, 0xf4, 0xb3, 0x95, 0x8f, 0xd3, 0x72, 0x9b, 0x36, 0xb7, 0xea, 0xbd, 0x66, 0x5e,
    +	0x1c, 0xa6, 0xc0, 0xcc, 0x6d, 0x5a, 0x27, 0xdd, 0x7a, 0xfa, 0xef, 0x49, 0x38, 0x53, 0x72, 0x6c,
    +	0x4e, 0x84, 0x06, 0x56, 0x87, 0x28, 0x53, 0xee, 0x5a, 0xe6, 0x86, 0xfc, 0x8d, 0x4a, 0xa0, 0xd9,
    +	0xa4, 0x4e, 0x33, 0x89, 0xe5, 0xc4, 0xca, 0x4c, 0x31, 0x7f, 0xb7, 0x95, 0x9b, 0x68, 0xb7, 0x72,
    +	0xda, 0x65, 0x52, 0xa7, 0x8f, 0x5a, 0xb9, 0x5c, 0x2f, 0x71, 0x86, 0x0f, 0x23, 0x44, 0xb0, 0x54,
    +	0x46, 0xef, 0x40, 0x86, 0x13, 0xb7, 0x4a, 0xf9, 0xda, 0x2e, 0x75, 0x49, 0x95, 0x5e, 0xe3, 0x56,
    +	0xcd, 0xba, 0x43, 0xb8, 0xe5, 0xd8, 0x99, 0xe4, 0x72, 0x62, 0x65, 0xb2, 0xf8, 0xdf, 0x76, 0x2b,
    +	0x97, 0xd9, 0x8c, 0x91, 0xc1, 0xb1, 0xda, 0x68, 0x17, 0x50, 0x64, 0xed, 0x3a, 0xa9, 0x35, 0x69,
    +	0x26, 0xb5, 0x9c, 0x58, 0x49, 0x17, 0x0c, 0xa3, 0x13, 0x25, 0x01, 0x2b, 0x46, 0x63, 0xa7, 0x2a,
    +	0xc3, 0xc6, 0x77, 0x99, 0xf1, 0x76, 0x93, 0xd8, 0xdc, 0xe2, 0x7b, 0xc5, 0x13, 0xed, 0x56, 0x0e,
    +	0x6d, 0xf6, 0xa0, 0xe1, 0x3e, 0x16, 0x50, 0x1e, 0x66, 0x4c, 0x9f, 0xb7, 0x8c, 0x26, 0xb9, 0x59,
    +	0x54, 0xdc, 0xcc, 0x74, 0x08, 0xed, 0xc8, 0xe8, 0x7f, 0x0c, 0x60, 0x9a, 0x13, 0xde, 0x64, 0x07,
    +	0xc3, 0xf4, 0x7b, 0x70, 0xca, 0x6c, 0xba, 0x2e, 0xb5, 0xe3, 0xa9, 0x3e, 0xd3, 0x6e, 0xe5, 0x4e,
    +	0x95, 0xe2, 0x84, 0x70, 0xbc, 0x3e, 0xfa, 0x18, 0x8e, 0x45, 0x17, 0x1f, 0x87, 0xed, 0xd3, 0xea,
    +	0x80, 0xc7, 0x4a, 0xbd, 0x90, 0xb8, 0x9f, 0x9d, 0xfd, 0x73, 0xfe, 0x45, 0x02, 0x4e, 0x97, 0x5c,
    +	0x87, 0xb1, 0xeb, 0xd4, 0x65, 0x96, 0x63, 0x5f, 0xd9, 0xfa, 0x90, 0x9a, 0x1c, 0xd3, 0x5b, 0xd4,
    +	0xa5, 0xb6, 0x49, 0xd1, 0x32, 0x68, 0x3b, 0x96, 0x5d, 0x51, 0x8c, 0xcf, 0xfa, 0x8c, 0xbf, 0x65,
    +	0xd9, 0x15, 0x2c, 0x57, 0x84, 0x84, 0xf4, 0x49, 0x32, 0x2a, 0x11, 0x22, 0xbc, 0x00, 0x40, 0x1a,
    +	0x96, 0x32, 0x20, 0xa9, 0x98, 0x29, 0x22, 0x25, 0x07, 0x6b, 0x57, 0x2f, 0xa9, 0x15, 0x1c, 0x92,
    +	0xd2, 0xbf, 0x4c, 0xc1, 0xf1, 0xd7, 0x6f, 0x73, 0xea, 0xda, 0xa4, 0x16, 0x49, 0xb6, 0x02, 0x40,
    +	0x5d, 0x3e, 0x5f, 0xee, 0x04, 0x42, 0x00, 0x56, 0x0e, 0x56, 0x70, 0x48, 0x0a, 0x39, 0x30, 0xe7,
    +	0x3d, 0x6d, 0xd0, 0x1a, 0x35, 0xb9, 0xe3, 0xca, 0xcd, 0xa6, 0x0b, 0xcf, 0x0f, 0xf2, 0x07, 0x33,
    +	0x44, 0xe9, 0x31, 0x76, 0xcf, 0x1b, 0xeb, 0x64, 0x8b, 0xd6, 0x7c, 0xd5, 0x22, 0x6a, 0xb7, 0x72,
    +	0x73, 0xe5, 0x08, 0x1c, 0xee, 0x82, 0x47, 0x04, 0xd2, 0x5e, 0x42, 0x3c, 0x8e, 0xf7, 0xe7, 0xdb,
    +	0xad, 0x5c, 0x7a, 0xb3, 0x03, 0x83, 0xc3, 0x98, 0x31, 0x59, 0xad, 0x3d, 0xe9, 0xac, 0xd6, 0xbf,
    +	0xea, 0x75, 0x8c, 0x97, 0x9b, 0xff, 0x08, 0xc7, 0x6c, 0xc3, 0xac, 0x4a, 0x9b, 0xc7, 0xf1, 0xcc,
    +	0x71, 0x75, 0xac, 0xd9, 0x52, 0x08, 0x0b, 0x47, 0x90, 0xd1, 0x5e, 0xff, 0x42, 0x30, 0x9e, 0x83,
    +	0x4e, 0xee, 0xa7, 0x08, 0xe8, 0x3f, 0x25, 0xe1, 0xe4, 0x45, 0xc7, 0xb5, 0xee, 0x88, 0x2c, 0xaf,
    +	0x5d, 0x75, 0x2a, 0x6b, 0xaa, 0xfd, 0x53, 0x17, 0x7d, 0x00, 0xd3, 0x82, 0xbd, 0x0a, 0xe1, 0x44,
    +	0xfa, 0x28, 0x5d, 0x38, 0x37, 0x1a, 0xd7, 0x5e, 0x61, 0x28, 0x53, 0x4e, 0x3a, 0x5e, 0xed, 0xbc,
    +	0xc3, 0x01, 0x2a, 0xba, 0x09, 0x1a, 0x6b, 0x50, 0x53, 0x79, 0xf2, 0x15, 0x63, 0xf0, 0x35, 0xc4,
    +	0x88, 0xd9, 0xe8, 0x46, 0x83, 0x9a, 0x9d, 0x62, 0x22, 0x9e, 0xb0, 0x84, 0x45, 0x14, 0xa6, 0x98,
    +	0x0c, 0x38, 0xe5, 0xbb, 0x57, 0xc7, 0x35, 0x20, 0x41, 0x8a, 0x73, 0xca, 0xc4, 0x94, 0xf7, 0x8c,
    +	0x15, 0xb8, 0xfe, 0x59, 0x0a, 0x96, 0x63, 0x34, 0x4b, 0x8e, 0x5d, 0xb1, 0x64, 0xb1, 0xbf, 0x08,
    +	0x1a, 0xdf, 0x6b, 0xf8, 0xc1, 0xbe, 0xea, 0xef, 0x76, 0x73, 0xaf, 0x21, 0xda, 0xd1, 0xff, 0x86,
    +	0xe9, 0x0b, 0x39, 0x2c, 0x11, 0xd0, 0x7a, 0x70, 0xaa, 0x64, 0x04, 0x4b, 0x6d, 0xeb, 0x51, 0x2b,
    +	0xd7, 0xe7, 0xfe, 0x65, 0x04, 0x48, 0xd1, 0xcd, 0x8b, 0xda, 0x50, 0x23, 0x8c, 0x6f, 0xba, 0xc4,
    +	0x66, 0x9e, 0x25, 0xab, 0xee, 0xc7, 0xfa, 0xd9, 0xd1, 0xdc, 0x2d, 0x34, 0x8a, 0x4b, 0x6a, 0x17,
    +	0x68, 0xbd, 0x07, 0x0d, 0xf7, 0xb1, 0x80, 0xfe, 0x0f, 0x53, 0x2e, 0x25, 0xcc, 0xb1, 0x55, 0xeb,
    +	0x09, 0xc8, 0xc5, 0xf2, 0x2d, 0x56, 0xab, 0xe8, 0x19, 0x38, 0x52, 0xa7, 0x8c, 0x91, 0x2a, 0xcd,
    +	0x4c, 0x4a, 0xc1, 0x79, 0x25, 0x78, 0xa4, 0xec, 0xbd, 0xc6, 0xfe, 0xba, 0xfe, 0x20, 0x01, 0xa7,
    +	0x63, 0x78, 0x5c, 0xb7, 0x18, 0x47, 0x37, 0x7a, 0xe2, 0xd9, 0x18, 0xb1, 0x76, 0x58, 0xcc, 0x8b,
    +	0xe6, 0x05, 0x65, 0x7b, 0xda, 0x7f, 0x13, 0x8a, 0xe5, 0x1b, 0x30, 0x69, 0x71, 0x5a, 0x17, 0x5e,
    +	0x49, 0xad, 0xa4, 0x0b, 0x2f, 0x8d, 0x19, 0x6b, 0xc5, 0xa3, 0xca, 0xc6, 0xe4, 0x25, 0x81, 0x86,
    +	0x3d, 0x50, 0xfd, 0xe7, 0x64, 0xec, 0xd9, 0x44, 0xc0, 0xa3, 0x8f, 0x60, 0x4e, 0x3e, 0x79, 0x95,
    +	0x19, 0xd3, 0x5b, 0xea, 0x84, 0x43, 0x73, 0x6a, 0x40, 0x43, 0x2f, 0x9e, 0x50, 0x5b, 0x99, 0xdb,
    +	0x88, 0x40, 0xe3, 0x2e, 0x53, 0xe8, 0x3c, 0xa4, 0xeb, 0x96, 0x8d, 0x69, 0xa3, 0x66, 0x99, 0x84,
    +	0xa9, 0x7b, 0x91, 0x6c, 0x49, 0xe5, 0xce, 0x6b, 0x1c, 0x96, 0x41, 0x2f, 0x40, 0xba, 0x4e, 0x6e,
    +	0x07, 0x2a, 0x29, 0xa9, 0x72, 0x4c, 0xd9, 0x4b, 0x97, 0x3b, 0x4b, 0x38, 0x2c, 0x87, 0xae, 0x89,
    +	0x68, 0x10, 0x55, 0x9a, 0x65, 0x34, 0x49, 0xf3, 0xd9, 0x61, 0xe7, 0x53, 0x45, 0x5e, 0x94, 0x88,
    +	0x50, 0xe4, 0x48, 0x08, 0xec, 0x63, 0xe9, 0x3f, 0x68, 0x70, 0x66, 0x60, 0xee, 0xa3, 0x37, 0x00,
    +	0x39, 0x5b, 0x8c, 0xba, 0xbb, 0xb4, 0xf2, 0xa6, 0x77, 0xe9, 0x17, 0xf7, 0x13, 0xc1, 0x71, 0xca,
    +	0x6b, 0x89, 0x57, 0x7a, 0x56, 0x71, 0x1f, 0x0d, 0x64, 0xc2, 0x51, 0x91, 0x0c, 0x1e, 0xa1, 0x96,
    +	0xba, 0x0a, 0xed, 0x2f, 0xd3, 0x16, 0xdb, 0xad, 0xdc, 0xd1, 0xf5, 0x30, 0x08, 0x8e, 0x62, 0xa2,
    +	0x35, 0x98, 0x57, 0xb5, 0xbe, 0x8b, 0xe0, 0x93, 0x8a, 0x81, 0xf9, 0x52, 0x74, 0x19, 0x77, 0xcb,
    +	0x0b, 0x88, 0x0a, 0x65, 0x96, 0x4b, 0x2b, 0x01, 0x84, 0x16, 0x85, 0xb8, 0x10, 0x5d, 0xc6, 0xdd,
    +	0xf2, 0xa8, 0x06, 0x73, 0x0a, 0x55, 0xf1, 0x9d, 0x99, 0x94, 0x2e, 0x7b, 0x76, 0x44, 0x97, 0x79,
    +	0x45, 0x37, 0x88, 0xc1, 0x52, 0x04, 0x0b, 0x77, 0x61, 0x23, 0x0e, 0x60, 0xfa, 0x25, 0x8e, 0x65,
    +	0xa6, 0xa4, 0xa5, 0xd7, 0xc6, 0xcc, 0xc1, 0xa0, 0x56, 0x76, 0xda, 0x57, 0xf0, 0x8a, 0xe1, 0x90,
    +	0x1d, 0xfd, 0x3b, 0x0d, 0xa0, 0x13, 0x61, 0x68, 0x35, 0x52, 0xe4, 0x97, 0xbb, 0x8a, 0xfc, 0x42,
    +	0xf8, 0x72, 0x1a, 0x2a, 0xe8, 0xd7, 0x61, 0xca, 0x91, 0x99, 0xa7, 0x82, 0xa1, 0x30, 0x6c, 0xdb,
    +	0x41, 0x2f, 0x0d, 0xd0, 0x8a, 0x20, 0x4a, 0xa7, 0xca, 0x5f, 0x85, 0x86, 0x2e, 0x83, 0xd6, 0x70,
    +	0x2a, 0x7e, 0xf3, 0x3b, 0x37, 0x0c, 0xf5, 0xaa, 0x53, 0x61, 0x11, 0xcc, 0x69, 0xb1, 0x77, 0xf1,
    +	0x16, 0x4b, 0x1c, 0xf4, 0x3e, 0x4c, 0xfb, 0xd7, 0x0d, 0x75, 0x37, 0x59, 0x1d, 0x86, 0xd9, 0x6f,
    +	0x06, 0x2e, 0xce, 0x8a, 0x0a, 0xea, 0xaf, 0xe0, 0x00, 0x13, 0x7d, 0x9a, 0x80, 0x45, 0xb3, 0x7b,
    +	0xa6, 0xcb, 0x1c, 0x19, 0xad, 0x75, 0x0f, 0x1c, 0xbb, 0x8b, 0xff, 0x69, 0xb7, 0x72, 0x8b, 0x3d,
    +	0x22, 0xb8, 0xd7, 0x9c, 0x38, 0x24, 0x55, 0x57, 0x56, 0xd9, 0x70, 0x46, 0x38, 0x64, 0xbf, 0xd9,
    +	0xc3, 0x3b, 0xa4, 0xbf, 0x82, 0x03, 0x4c, 0xfd, 0x7b, 0x0d, 0x66, 0x23, 0x77, 0xe1, 0xbf, 0x22,
    +	0x66, 0xbc, 0xd4, 0x3a, 0xd8, 0x98, 0xf1, 0x30, 0x0f, 0x3e, 0x66, 0x3c, 0xdc, 0x43, 0x8d, 0x19,
    +	0xcf, 0xe4, 0x61, 0xc6, 0x4c, 0xe8, 0x90, 0x7d, 0x62, 0xe6, 0x41, 0x0a, 0x50, 0x6f, 0xce, 0x23,
    +	0x13, 0xa6, 0xbc, 0xa1, 0xeb, 0x20, 0x7a, 0x7d, 0x70, 0xff, 0x52, 0x6d, 0x5d, 0x41, 0x77, 0x8d,
    +	0x6a, 0xc9, 0x91, 0x46, 0x35, 0x7a, 0x10, 0x23, 0x6d, 0x70, 0x19, 0x88, 0x1d, 0x6b, 0x6f, 0xc2,
    +	0x34, 0xf3, 0x67, 0x41, 0x6d, 0xfc, 0x59, 0x50, 0xb2, 0x1e, 0x4c, 0x81, 0x01, 0x24, 0xaa, 0xc0,
    +	0x2c, 0x09, 0x8f, 0x63, 0x93, 0x63, 0x1d, 0x63, 0x41, 0xcc, 0x7e, 0x91, 0x39, 0x2c, 0x82, 0xaa,
    +	0xff, 0xd2, 0xed, 0x5b, 0xaf, 0x2a, 0xfc, 0x6d, 0x7d, 0x7b, 0x78, 0x53, 0xf1, 0xbf, 0xc2, 0xbd,
    +	0x5f, 0x27, 0x61, 0xa1, 0xbb, 0xb1, 0x8e, 0xf5, 0xf9, 0xe3, 0x4e, 0xdf, 0x6f, 0x38, 0xc9, 0xb1,
    +	0x36, 0x1d, 0xcc, 0x6a, 0x23, 0x7e, 0x9d, 0x0d, 0x7b, 0x22, 0x75, 0xe0, 0x9e, 0xd0, 0xbf, 0x89,
    +	0x72, 0x34, 0xfe, 0x27, 0xa2, 0x98, 0x0f, 0xaa, 0xc9, 0x43, 0xfa, 0xa0, 0xfa, 0x84, 0x69, 0xfa,
    +	0x36, 0x09, 0xc7, 0x9f, 0xfe, 0xa7, 0x30, 0xfa, 0xd7, 0xc7, 0x1f, 0x7b, 0xf9, 0x7a, 0xfa, 0xcf,
    +	0xc0, 0x28, 0x81, 0x5c, 0xbc, 0x70, 0xf7, 0x61, 0x76, 0xe2, 0xde, 0xc3, 0xec, 0xc4, 0xfd, 0x87,
    +	0xd9, 0x89, 0x4f, 0xda, 0xd9, 0xc4, 0xdd, 0x76, 0x36, 0x71, 0xaf, 0x9d, 0x4d, 0xdc, 0x6f, 0x67,
    +	0x13, 0xbf, 0xb6, 0xb3, 0x89, 0xcf, 0x7f, 0xcb, 0x4e, 0xbc, 0x9b, 0x1d, 0xfc, 0x27, 0xe3, 0x9f,
    +	0x01, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x05, 0xaa, 0x18, 0x85, 0x1c, 0x00, 0x00,
     }
     
     func (m *ContainerResourceMetricSource) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto b/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto
    index 6b3d41521263..4b71732ab9e4 100644
    --- a/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto
    +++ b/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto
    @@ -51,7 +51,7 @@ message ContainerResourceMetricSource {
       // resource metric across all relevant pods, as a raw value (instead of as
       // a percentage of the request), similar to the "pods" metric source type.
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3;
     
       // container is the name of the container in the pods of the scaling target
       optional string container = 4;
    @@ -78,7 +78,7 @@ message ContainerResourceMetricStatus {
       // resource metric across all relevant pods, as a raw value (instead of as
       // a percentage of the request), similar to the "pods" metric source type.
       // It will always be set, regardless of the corresponding metric specification.
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3;
     
       // container is the name of the container in the pods of the scaling target
       optional string container = 4;
    @@ -108,17 +108,17 @@ message ExternalMetricSource {
       // metricSelector is used to identify a specific time series
       // within a given metric.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector metricSelector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector metricSelector = 2;
     
       // targetValue is the target value of the metric (as a quantity).
       // Mutually exclusive with TargetAverageValue.
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
     
       // targetAverageValue is the target per-pod value of global metric (as a quantity).
       // Mutually exclusive with TargetValue.
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 4;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 4;
     }
     
     // ExternalMetricStatus indicates the current value of a global metric
    @@ -131,14 +131,14 @@ message ExternalMetricStatus {
       // metricSelector is used to identify a specific time series
       // within a given metric.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector metricSelector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector metricSelector = 2;
     
       // currentValue is the current value of the metric (as a quantity)
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
     
       // currentAverageValue is the current value of metric averaged over autoscaled pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 4;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 4;
     }
     
     // HorizontalPodAutoscaler is the configuration for a horizontal pod
    @@ -148,7 +148,7 @@ message HorizontalPodAutoscaler {
       // metadata is the standard object metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the specification for the behaviour of the autoscaler.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
    @@ -172,7 +172,7 @@ message HorizontalPodAutoscalerCondition {
       // lastTransitionTime is the last time the condition transitioned from
       // one status to another
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // reason is the reason for the condition's last transition.
       // +optional
    @@ -188,7 +188,7 @@ message HorizontalPodAutoscalerCondition {
     message HorizontalPodAutoscalerList {
       // metadata is the standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of horizontal pod autoscaler objects.
       repeated HorizontalPodAutoscaler items = 2;
    @@ -220,6 +220,7 @@ message HorizontalPodAutoscalerSpec {
       // increased, and vice-versa.  See the individual metric source types for
       // more information about how each type of metric must respond.
       // +optional
    +  // +listType=atomic
       repeated MetricSpec metrics = 4;
     }
     
    @@ -232,7 +233,7 @@ message HorizontalPodAutoscalerStatus {
       // lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods,
       // used by the autoscaler to control how often the number of pods is changed.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2;
     
       // currentReplicas is current number of replicas of pods managed by this autoscaler,
       // as last seen by the autoscaler.
    @@ -244,11 +245,13 @@ message HorizontalPodAutoscalerStatus {
     
       // currentMetrics is the last read state of the metrics used by this autoscaler.
       // +optional
    +  // +listType=atomic
       repeated MetricStatus currentMetrics = 5;
     
       // conditions is the set of conditions required for this autoscaler to scale its target,
       // and indicates whether or not those conditions are met.
       // +optional
    +  // +listType=atomic
       repeated HorizontalPodAutoscalerCondition conditions = 6;
     }
     
    @@ -257,8 +260,6 @@ message HorizontalPodAutoscalerStatus {
     message MetricSpec {
       // type is the type of metric source.  It should be one of "ContainerResource",
       // "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object.
    -  // Note: "ContainerResource" type is available on when the feature-gate
    -  // HPAContainerMetrics is enabled
       optional string type = 1;
     
       // object refers to a metric describing a single kubernetes object
    @@ -285,7 +286,6 @@ message MetricSpec {
       // each pod of the current scale target (e.g. CPU or memory). Such metrics are
       // built in to Kubernetes, and have special scaling options on top of those
       // available to normal per-pod metrics using the "pods" source.
    -  // This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
       // +optional
       optional ContainerResourceMetricSource containerResource = 7;
     
    @@ -302,8 +302,6 @@ message MetricSpec {
     message MetricStatus {
       // type is the type of metric source.  It will be one of "ContainerResource",
       // "External", "Object", "Pods" or "Resource", each corresponds to a matching field in the object.
    -  // Note: "ContainerResource" type is available on when the feature-gate
    -  // HPAContainerMetrics is enabled
       optional string type = 1;
     
       // object refers to a metric describing a single kubernetes object
    @@ -352,18 +350,18 @@ message ObjectMetricSource {
       optional string metricName = 2;
     
       // targetValue is the target value of the metric (as a quantity).
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
     
       // selector is the string-encoded form of a standard kubernetes label selector for the given metric
       // When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
       // When unset, just the metricName will be used to gather metrics.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
     
       // averageValue is the target value of the average of the
       // metric across all relevant pods (as a quantity)
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
     }
     
     // ObjectMetricStatus indicates the current value of a metric describing a
    @@ -376,18 +374,18 @@ message ObjectMetricStatus {
       optional string metricName = 2;
     
       // currentValue is the current value of the metric (as a quantity).
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
     
       // selector is the string-encoded form of a standard kubernetes label selector for the given metric
       // When set in the ObjectMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
       // When unset, just the metricName will be used to gather metrics.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
     
       // averageValue is the current value of the average of the
       // metric across all relevant pods (as a quantity)
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
     }
     
     // PodsMetricSource indicates how to scale on a metric describing each pod in
    @@ -400,13 +398,13 @@ message PodsMetricSource {
     
       // targetAverageValue is the target value of the average of the
       // metric across all relevant pods (as a quantity)
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2;
     
       // selector is the string-encoded form of a standard kubernetes label selector for the given metric
       // When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
       // When unset, just the metricName will be used to gather metrics.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
     }
     
     // PodsMetricStatus indicates the current value of a metric describing each pod in
    @@ -417,13 +415,13 @@ message PodsMetricStatus {
     
       // currentAverageValue is the current value of the average of the
       // metric across all relevant pods (as a quantity)
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2;
     
       // selector is the string-encoded form of a standard kubernetes label selector for the given metric
       // When set in the PodsMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
       // When unset, just the metricName will be used to gather metrics.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
     }
     
     // ResourceMetricSource indicates how to scale on a resource metric known to
    @@ -447,7 +445,7 @@ message ResourceMetricSource {
       // resource metric across all relevant pods, as a raw value (instead of as
       // a percentage of the request), similar to the "pods" metric source type.
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3;
     }
     
     // ResourceMetricStatus indicates the current value of a resource metric known to
    @@ -471,6 +469,6 @@ message ResourceMetricStatus {
       // resource metric across all relevant pods, as a raw value (instead of as
       // a percentage of the request), similar to the "pods" metric source type.
       // It will always be set, regardless of the corresponding metric specification.
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3;
     }
     
    diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/types.go b/vendor/k8s.io/api/autoscaling/v2beta1/types.go
    index 842284072d9b..c3abdd9bd905 100644
    --- a/vendor/k8s.io/api/autoscaling/v2beta1/types.go
    +++ b/vendor/k8s.io/api/autoscaling/v2beta1/types.go
    @@ -56,6 +56,7 @@ type HorizontalPodAutoscalerSpec struct {
     	// increased, and vice-versa.  See the individual metric source types for
     	// more information about how each type of metric must respond.
     	// +optional
    +	// +listType=atomic
     	Metrics []MetricSpec `json:"metrics,omitempty" protobuf:"bytes,4,rep,name=metrics"`
     }
     
    @@ -95,8 +96,6 @@ const (
     type MetricSpec struct {
     	// type is the type of metric source.  It should be one of "ContainerResource",
     	// "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object.
    -	// Note: "ContainerResource" type is available on when the feature-gate
    -	// HPAContainerMetrics is enabled
     	Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"`
     
     	// object refers to a metric describing a single kubernetes object
    @@ -120,7 +119,6 @@ type MetricSpec struct {
     	// each pod of the current scale target (e.g. CPU or memory). Such metrics are
     	// built in to Kubernetes, and have special scaling options on top of those
     	// available to normal per-pod metrics using the "pods" source.
    -	// This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
     	// +optional
     	ContainerResource *ContainerResourceMetricSource `json:"containerResource,omitempty" protobuf:"bytes,7,opt,name=containerResource"`
     	// external refers to a global metric that is not associated
    @@ -260,11 +258,13 @@ type HorizontalPodAutoscalerStatus struct {
     
     	// currentMetrics is the last read state of the metrics used by this autoscaler.
     	// +optional
    +	// +listType=atomic
     	CurrentMetrics []MetricStatus `json:"currentMetrics" protobuf:"bytes,5,rep,name=currentMetrics"`
     
     	// conditions is the set of conditions required for this autoscaler to scale its target,
     	// and indicates whether or not those conditions are met.
     	// +optional
    +	// +listType=atomic
     	Conditions []HorizontalPodAutoscalerCondition `json:"conditions" protobuf:"bytes,6,rep,name=conditions"`
     }
     
    @@ -308,8 +308,6 @@ type HorizontalPodAutoscalerCondition struct {
     type MetricStatus struct {
     	// type is the type of metric source.  It will be one of "ContainerResource",
     	// "External", "Object", "Pods" or "Resource", each corresponds to a matching field in the object.
    -	// Note: "ContainerResource" type is available on when the feature-gate
    -	// HPAContainerMetrics is enabled
     	Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"`
     
     	// object refers to a metric describing a single kubernetes object
    diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/autoscaling/v2beta1/types_swagger_doc_generated.go
    index d656ee416dad..c7c72bf35687 100644
    --- a/vendor/k8s.io/api/autoscaling/v2beta1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/autoscaling/v2beta1/types_swagger_doc_generated.go
    @@ -148,11 +148,11 @@ func (HorizontalPodAutoscalerStatus) SwaggerDoc() map[string]string {
     
     var map_MetricSpec = map[string]string{
     	"":                  "MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).",
    -	"type":              "type is the type of metric source.  It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled",
    +	"type":              "type is the type of metric source.  It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object.",
     	"object":            "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).",
     	"pods":              "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.",
     	"resource":          "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
    -	"containerResource": "container resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.",
    +	"containerResource": "container resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
     	"external":          "external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).",
     }
     
    @@ -162,7 +162,7 @@ func (MetricSpec) SwaggerDoc() map[string]string {
     
     var map_MetricStatus = map[string]string{
     	"":                  "MetricStatus describes the last-read state of a single metric.",
    -	"type":              "type is the type of metric source.  It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled",
    +	"type":              "type is the type of metric source.  It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object.",
     	"object":            "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).",
     	"pods":              "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.",
     	"resource":          "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
    diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/generated.pb.go b/vendor/k8s.io/api/autoscaling/v2beta2/generated.pb.go
    index 211acd1ae3fb..741979505dc7 100644
    --- a/vendor/k8s.io/api/autoscaling/v2beta2/generated.pb.go
    +++ b/vendor/k8s.io/api/autoscaling/v2beta2/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta2/generated.proto
    +// source: k8s.io/api/autoscaling/v2beta2/generated.proto
     
     package v2beta2
     
    @@ -50,7 +50,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ContainerResourceMetricSource) Reset()      { *m = ContainerResourceMetricSource{} }
     func (*ContainerResourceMetricSource) ProtoMessage() {}
     func (*ContainerResourceMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{0}
    +	return fileDescriptor_1076ab1fac987148, []int{0}
     }
     func (m *ContainerResourceMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -78,7 +78,7 @@ var xxx_messageInfo_ContainerResourceMetricSource proto.InternalMessageInfo
     func (m *ContainerResourceMetricStatus) Reset()      { *m = ContainerResourceMetricStatus{} }
     func (*ContainerResourceMetricStatus) ProtoMessage() {}
     func (*ContainerResourceMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{1}
    +	return fileDescriptor_1076ab1fac987148, []int{1}
     }
     func (m *ContainerResourceMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -106,7 +106,7 @@ var xxx_messageInfo_ContainerResourceMetricStatus proto.InternalMessageInfo
     func (m *CrossVersionObjectReference) Reset()      { *m = CrossVersionObjectReference{} }
     func (*CrossVersionObjectReference) ProtoMessage() {}
     func (*CrossVersionObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{2}
    +	return fileDescriptor_1076ab1fac987148, []int{2}
     }
     func (m *CrossVersionObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -134,7 +134,7 @@ var xxx_messageInfo_CrossVersionObjectReference proto.InternalMessageInfo
     func (m *ExternalMetricSource) Reset()      { *m = ExternalMetricSource{} }
     func (*ExternalMetricSource) ProtoMessage() {}
     func (*ExternalMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{3}
    +	return fileDescriptor_1076ab1fac987148, []int{3}
     }
     func (m *ExternalMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -162,7 +162,7 @@ var xxx_messageInfo_ExternalMetricSource proto.InternalMessageInfo
     func (m *ExternalMetricStatus) Reset()      { *m = ExternalMetricStatus{} }
     func (*ExternalMetricStatus) ProtoMessage() {}
     func (*ExternalMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{4}
    +	return fileDescriptor_1076ab1fac987148, []int{4}
     }
     func (m *ExternalMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -190,7 +190,7 @@ var xxx_messageInfo_ExternalMetricStatus proto.InternalMessageInfo
     func (m *HPAScalingPolicy) Reset()      { *m = HPAScalingPolicy{} }
     func (*HPAScalingPolicy) ProtoMessage() {}
     func (*HPAScalingPolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{5}
    +	return fileDescriptor_1076ab1fac987148, []int{5}
     }
     func (m *HPAScalingPolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -218,7 +218,7 @@ var xxx_messageInfo_HPAScalingPolicy proto.InternalMessageInfo
     func (m *HPAScalingRules) Reset()      { *m = HPAScalingRules{} }
     func (*HPAScalingRules) ProtoMessage() {}
     func (*HPAScalingRules) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{6}
    +	return fileDescriptor_1076ab1fac987148, []int{6}
     }
     func (m *HPAScalingRules) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -246,7 +246,7 @@ var xxx_messageInfo_HPAScalingRules proto.InternalMessageInfo
     func (m *HorizontalPodAutoscaler) Reset()      { *m = HorizontalPodAutoscaler{} }
     func (*HorizontalPodAutoscaler) ProtoMessage() {}
     func (*HorizontalPodAutoscaler) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{7}
    +	return fileDescriptor_1076ab1fac987148, []int{7}
     }
     func (m *HorizontalPodAutoscaler) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -274,7 +274,7 @@ var xxx_messageInfo_HorizontalPodAutoscaler proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerBehavior) Reset()      { *m = HorizontalPodAutoscalerBehavior{} }
     func (*HorizontalPodAutoscalerBehavior) ProtoMessage() {}
     func (*HorizontalPodAutoscalerBehavior) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{8}
    +	return fileDescriptor_1076ab1fac987148, []int{8}
     }
     func (m *HorizontalPodAutoscalerBehavior) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -302,7 +302,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerBehavior proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerCondition) Reset()      { *m = HorizontalPodAutoscalerCondition{} }
     func (*HorizontalPodAutoscalerCondition) ProtoMessage() {}
     func (*HorizontalPodAutoscalerCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{9}
    +	return fileDescriptor_1076ab1fac987148, []int{9}
     }
     func (m *HorizontalPodAutoscalerCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -330,7 +330,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerCondition proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerList) Reset()      { *m = HorizontalPodAutoscalerList{} }
     func (*HorizontalPodAutoscalerList) ProtoMessage() {}
     func (*HorizontalPodAutoscalerList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{10}
    +	return fileDescriptor_1076ab1fac987148, []int{10}
     }
     func (m *HorizontalPodAutoscalerList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -358,7 +358,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerList proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerSpec) Reset()      { *m = HorizontalPodAutoscalerSpec{} }
     func (*HorizontalPodAutoscalerSpec) ProtoMessage() {}
     func (*HorizontalPodAutoscalerSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{11}
    +	return fileDescriptor_1076ab1fac987148, []int{11}
     }
     func (m *HorizontalPodAutoscalerSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -386,7 +386,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerSpec proto.InternalMessageInfo
     func (m *HorizontalPodAutoscalerStatus) Reset()      { *m = HorizontalPodAutoscalerStatus{} }
     func (*HorizontalPodAutoscalerStatus) ProtoMessage() {}
     func (*HorizontalPodAutoscalerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{12}
    +	return fileDescriptor_1076ab1fac987148, []int{12}
     }
     func (m *HorizontalPodAutoscalerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -414,7 +414,7 @@ var xxx_messageInfo_HorizontalPodAutoscalerStatus proto.InternalMessageInfo
     func (m *MetricIdentifier) Reset()      { *m = MetricIdentifier{} }
     func (*MetricIdentifier) ProtoMessage() {}
     func (*MetricIdentifier) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{13}
    +	return fileDescriptor_1076ab1fac987148, []int{13}
     }
     func (m *MetricIdentifier) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -442,7 +442,7 @@ var xxx_messageInfo_MetricIdentifier proto.InternalMessageInfo
     func (m *MetricSpec) Reset()      { *m = MetricSpec{} }
     func (*MetricSpec) ProtoMessage() {}
     func (*MetricSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{14}
    +	return fileDescriptor_1076ab1fac987148, []int{14}
     }
     func (m *MetricSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -470,7 +470,7 @@ var xxx_messageInfo_MetricSpec proto.InternalMessageInfo
     func (m *MetricStatus) Reset()      { *m = MetricStatus{} }
     func (*MetricStatus) ProtoMessage() {}
     func (*MetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{15}
    +	return fileDescriptor_1076ab1fac987148, []int{15}
     }
     func (m *MetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -498,7 +498,7 @@ var xxx_messageInfo_MetricStatus proto.InternalMessageInfo
     func (m *MetricTarget) Reset()      { *m = MetricTarget{} }
     func (*MetricTarget) ProtoMessage() {}
     func (*MetricTarget) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{16}
    +	return fileDescriptor_1076ab1fac987148, []int{16}
     }
     func (m *MetricTarget) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -526,7 +526,7 @@ var xxx_messageInfo_MetricTarget proto.InternalMessageInfo
     func (m *MetricValueStatus) Reset()      { *m = MetricValueStatus{} }
     func (*MetricValueStatus) ProtoMessage() {}
     func (*MetricValueStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{17}
    +	return fileDescriptor_1076ab1fac987148, []int{17}
     }
     func (m *MetricValueStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -554,7 +554,7 @@ var xxx_messageInfo_MetricValueStatus proto.InternalMessageInfo
     func (m *ObjectMetricSource) Reset()      { *m = ObjectMetricSource{} }
     func (*ObjectMetricSource) ProtoMessage() {}
     func (*ObjectMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{18}
    +	return fileDescriptor_1076ab1fac987148, []int{18}
     }
     func (m *ObjectMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -582,7 +582,7 @@ var xxx_messageInfo_ObjectMetricSource proto.InternalMessageInfo
     func (m *ObjectMetricStatus) Reset()      { *m = ObjectMetricStatus{} }
     func (*ObjectMetricStatus) ProtoMessage() {}
     func (*ObjectMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{19}
    +	return fileDescriptor_1076ab1fac987148, []int{19}
     }
     func (m *ObjectMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -610,7 +610,7 @@ var xxx_messageInfo_ObjectMetricStatus proto.InternalMessageInfo
     func (m *PodsMetricSource) Reset()      { *m = PodsMetricSource{} }
     func (*PodsMetricSource) ProtoMessage() {}
     func (*PodsMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{20}
    +	return fileDescriptor_1076ab1fac987148, []int{20}
     }
     func (m *PodsMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -638,7 +638,7 @@ var xxx_messageInfo_PodsMetricSource proto.InternalMessageInfo
     func (m *PodsMetricStatus) Reset()      { *m = PodsMetricStatus{} }
     func (*PodsMetricStatus) ProtoMessage() {}
     func (*PodsMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{21}
    +	return fileDescriptor_1076ab1fac987148, []int{21}
     }
     func (m *PodsMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -666,7 +666,7 @@ var xxx_messageInfo_PodsMetricStatus proto.InternalMessageInfo
     func (m *ResourceMetricSource) Reset()      { *m = ResourceMetricSource{} }
     func (*ResourceMetricSource) ProtoMessage() {}
     func (*ResourceMetricSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{22}
    +	return fileDescriptor_1076ab1fac987148, []int{22}
     }
     func (m *ResourceMetricSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -694,7 +694,7 @@ var xxx_messageInfo_ResourceMetricSource proto.InternalMessageInfo
     func (m *ResourceMetricStatus) Reset()      { *m = ResourceMetricStatus{} }
     func (*ResourceMetricStatus) ProtoMessage() {}
     func (*ResourceMetricStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_592ad94d7d6be24f, []int{23}
    +	return fileDescriptor_1076ab1fac987148, []int{23}
     }
     func (m *ResourceMetricStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -747,120 +747,119 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta2/generated.proto", fileDescriptor_592ad94d7d6be24f)
    +	proto.RegisterFile("k8s.io/api/autoscaling/v2beta2/generated.proto", fileDescriptor_1076ab1fac987148)
     }
     
    -var fileDescriptor_592ad94d7d6be24f = []byte{
    -	// 1743 bytes of a gzipped FileDescriptorProto
    +var fileDescriptor_1076ab1fac987148 = []byte{
    +	// 1727 bytes of a gzipped FileDescriptorProto
     	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcd, 0x6f, 0x1b, 0xc7,
     	0x15, 0xd7, 0x92, 0xd4, 0xd7, 0x50, 0x9f, 0xe3, 0x2f, 0x42, 0x86, 0x49, 0x61, 0x6b, 0xb4, 0xae,
    -	0xd1, 0x2e, 0x2b, 0x56, 0x6d, 0x0d, 0x18, 0x45, 0xab, 0x95, 0x5b, 0xdb, 0xb0, 0x64, 0xab, 0x43,
    -	0x59, 0x2d, 0x0a, 0xd9, 0xe8, 0x70, 0x77, 0x44, 0x4d, 0x45, 0xee, 0x12, 0xbb, 0x4b, 0xda, 0x72,
    +	0xd1, 0x2e, 0x2b, 0x56, 0x6d, 0x0d, 0x18, 0x45, 0xab, 0x95, 0xdb, 0xda, 0xb0, 0x64, 0xab, 0x43,
    +	0x59, 0x2d, 0x02, 0xd9, 0xc8, 0x70, 0x77, 0x44, 0x4d, 0x44, 0xee, 0x12, 0xbb, 0x4b, 0xda, 0x72,
     	0x80, 0x20, 0x08, 0x90, 0x7b, 0x90, 0x20, 0xd7, 0xfc, 0x09, 0x09, 0x7c, 0x09, 0x90, 0x63, 0x3e,
     	0x60, 0x18, 0x41, 0x10, 0xf8, 0x16, 0xe7, 0x42, 0xc4, 0xcc, 0x31, 0xc7, 0xdc, 0x7c, 0x0a, 0xe6,
     	0x63, 0x3f, 0x49, 0x89, 0x94, 0x20, 0x29, 0xd0, 0x8d, 0x3b, 0xf3, 0xde, 0xef, 0xcd, 0x7b, 0xf3,
    -	0x7b, 0x6f, 0xde, 0x0c, 0xc1, 0xcd, 0x9d, 0x6b, 0xae, 0x46, 0xed, 0xe2, 0x4e, 0xb3, 0x42, 0x1c,
    -	0x8b, 0x78, 0xc4, 0x2d, 0xb6, 0x88, 0x65, 0xda, 0x4e, 0x51, 0x4e, 0xe0, 0x06, 0x2d, 0xe2, 0xa6,
    -	0x67, 0xbb, 0x06, 0xae, 0x51, 0xab, 0x5a, 0x6c, 0x95, 0x2a, 0xc4, 0xc3, 0xa5, 0x62, 0x95, 0x58,
    -	0xc4, 0xc1, 0x1e, 0x31, 0xb5, 0x86, 0x63, 0x7b, 0x36, 0xcc, 0x0b, 0x79, 0x0d, 0x37, 0xa8, 0x16,
    -	0x91, 0xd7, 0xa4, 0xfc, 0xdc, 0xef, 0xab, 0xd4, 0xdb, 0x6e, 0x56, 0x34, 0xc3, 0xae, 0x17, 0xab,
    -	0x76, 0xd5, 0x2e, 0x72, 0xb5, 0x4a, 0x73, 0x8b, 0x7f, 0xf1, 0x0f, 0xfe, 0x4b, 0xc0, 0xcd, 0xa9,
    -	0x11, 0xf3, 0x86, 0xed, 0x90, 0x62, 0x6b, 0x21, 0x69, 0x72, 0x6e, 0x31, 0x94, 0xa9, 0x63, 0x63,
    -	0x9b, 0x5a, 0xc4, 0xd9, 0x2d, 0x36, 0x76, 0xaa, 0x5c, 0xc9, 0x21, 0xae, 0xdd, 0x74, 0x0c, 0x72,
    -	0x20, 0x2d, 0xb7, 0x58, 0x27, 0x1e, 0xee, 0x65, 0xab, 0xb8, 0x97, 0x96, 0xd3, 0xb4, 0x3c, 0x5a,
    -	0xef, 0x36, 0xf3, 0xe7, 0x7e, 0x0a, 0xae, 0xb1, 0x4d, 0xea, 0x38, 0xa9, 0xa7, 0xfe, 0xa8, 0x80,
    -	0x4b, 0xcb, 0xb6, 0xe5, 0x61, 0xa6, 0x81, 0xa4, 0x13, 0xab, 0xc4, 0x73, 0xa8, 0x51, 0xe6, 0xbf,
    -	0xe1, 0x32, 0xc8, 0x58, 0xb8, 0x4e, 0x72, 0xca, 0xbc, 0x72, 0x65, 0x5c, 0x2f, 0x3e, 0x6f, 0x17,
    -	0x86, 0x3a, 0xed, 0x42, 0xe6, 0x2e, 0xae, 0x93, 0xd7, 0xed, 0x42, 0xa1, 0x3b, 0x70, 0x9a, 0x0f,
    -	0xc3, 0x44, 0x10, 0x57, 0x86, 0xeb, 0x60, 0xc4, 0xc3, 0x4e, 0x95, 0x78, 0xb9, 0xd4, 0xbc, 0x72,
    -	0x25, 0x5b, 0xfa, 0x9d, 0xb6, 0xff, 0xfe, 0x69, 0x62, 0x09, 0xeb, 0x5c, 0x47, 0x9f, 0x92, 0x46,
    -	0x47, 0xc4, 0x37, 0x92, 0x58, 0xb0, 0x08, 0xc6, 0x0d, 0x7f, 0xed, 0xb9, 0x34, 0x5f, 0xdf, 0xac,
    -	0x14, 0x1d, 0x0f, 0x9d, 0x0a, 0x65, 0xd4, 0x9f, 0xf6, 0xf1, 0xd6, 0xc3, 0x5e, 0xd3, 0x3d, 0x1a,
    -	0x6f, 0x37, 0xc1, 0xa8, 0xd1, 0x74, 0x1c, 0x62, 0xf9, 0xee, 0x2e, 0x0c, 0xe6, 0xee, 0x06, 0xae,
    -	0x35, 0x89, 0x58, 0x88, 0x3e, 0x2d, 0x4d, 0x8f, 0x2e, 0x0b, 0x24, 0xe4, 0x43, 0x1e, 0xdc, 0xeb,
    -	0x0f, 0x14, 0x70, 0x71, 0xd9, 0xb1, 0x5d, 0x77, 0x83, 0x38, 0x2e, 0xb5, 0xad, 0x7b, 0x95, 0xff,
    -	0x13, 0xc3, 0x43, 0x64, 0x8b, 0x38, 0xc4, 0x32, 0x08, 0x9c, 0x07, 0x99, 0x1d, 0x6a, 0x99, 0xd2,
    -	0xe7, 0x09, 0xdf, 0xe7, 0x3b, 0xd4, 0x32, 0x11, 0x9f, 0x61, 0x12, 0x3c, 0x2a, 0xa9, 0xb8, 0x44,
    -	0xc4, 0xe5, 0x12, 0x00, 0xb8, 0x41, 0xa5, 0x01, 0xb9, 0x2a, 0x28, 0xe5, 0xc0, 0xd2, 0xda, 0x6d,
    -	0x39, 0x83, 0x22, 0x52, 0xea, 0x33, 0x05, 0x9c, 0xfd, 0xc7, 0x63, 0x8f, 0x38, 0x16, 0xae, 0xc5,
    -	0x28, 0xf7, 0x1f, 0x30, 0x52, 0xe7, 0xdf, 0x7c, 0x49, 0xd9, 0xd2, 0x1f, 0x06, 0x0b, 0xdf, 0x6d,
    +	0x7b, 0x6f, 0xde, 0x0c, 0x81, 0xb6, 0x73, 0xcd, 0xd5, 0xa8, 0x5d, 0xc4, 0x0d, 0x5a, 0xc4, 0x4d,
    +	0xcf, 0x76, 0x0d, 0x5c, 0xa3, 0x56, 0xb5, 0xd8, 0x2a, 0x55, 0x88, 0x87, 0x4b, 0xc5, 0x2a, 0xb1,
    +	0x88, 0x83, 0x3d, 0x62, 0x6a, 0x0d, 0xc7, 0xf6, 0x6c, 0x98, 0x17, 0xf2, 0x1a, 0x6e, 0x50, 0x2d,
    +	0x22, 0xaf, 0x49, 0xf9, 0xb9, 0x3f, 0x56, 0xa9, 0xb7, 0xdd, 0xac, 0x68, 0x86, 0x5d, 0x2f, 0x56,
    +	0xed, 0xaa, 0x5d, 0xe4, 0x6a, 0x95, 0xe6, 0x16, 0xff, 0xe2, 0x1f, 0xfc, 0x97, 0x80, 0x9b, 0x53,
    +	0x23, 0xe6, 0x0d, 0xdb, 0x21, 0xc5, 0xd6, 0x42, 0xd2, 0xe4, 0xdc, 0x62, 0x28, 0x53, 0xc7, 0xc6,
    +	0x36, 0xb5, 0x88, 0xb3, 0x5b, 0x6c, 0xec, 0x54, 0xb9, 0x92, 0x43, 0x5c, 0xbb, 0xe9, 0x18, 0xe4,
    +	0x40, 0x5a, 0x6e, 0xb1, 0x4e, 0x3c, 0xdc, 0xcb, 0x56, 0x71, 0x2f, 0x2d, 0xa7, 0x69, 0x79, 0xb4,
    +	0xde, 0x6d, 0xe6, 0xaf, 0xfd, 0x14, 0x5c, 0x63, 0x9b, 0xd4, 0x71, 0x52, 0x4f, 0xfd, 0x49, 0x01,
    +	0x97, 0x96, 0x6d, 0xcb, 0xc3, 0x4c, 0x03, 0x49, 0x27, 0x56, 0x89, 0xe7, 0x50, 0xa3, 0xcc, 0x7f,
    +	0xc3, 0x65, 0x90, 0xb1, 0x70, 0x9d, 0xe4, 0x94, 0x79, 0xe5, 0xca, 0xb8, 0x5e, 0x7c, 0xd6, 0x2e,
    +	0x0c, 0x75, 0xda, 0x85, 0xcc, 0x1d, 0x5c, 0x27, 0xaf, 0xda, 0x85, 0x42, 0x77, 0xe0, 0x34, 0x1f,
    +	0x86, 0x89, 0x20, 0xae, 0x0c, 0xd7, 0xc1, 0x88, 0x87, 0x9d, 0x2a, 0xf1, 0x72, 0xa9, 0x79, 0xe5,
    +	0x4a, 0xb6, 0xf4, 0x07, 0x6d, 0xff, 0xfd, 0xd3, 0xc4, 0x12, 0xd6, 0xb9, 0x8e, 0x3e, 0x25, 0x8d,
    +	0x8e, 0x88, 0x6f, 0x24, 0xb1, 0x60, 0x11, 0x8c, 0x1b, 0xfe, 0xda, 0x73, 0x69, 0xbe, 0xbe, 0x59,
    +	0x29, 0x3a, 0x1e, 0x3a, 0x15, 0xca, 0xa8, 0x3f, 0xef, 0xe3, 0xad, 0x87, 0xbd, 0xa6, 0x7b, 0x34,
    +	0xde, 0x6e, 0x82, 0x51, 0xa3, 0xe9, 0x38, 0xc4, 0xf2, 0xdd, 0x5d, 0x18, 0xcc, 0xdd, 0x0d, 0x5c,
    +	0x6b, 0x12, 0xb1, 0x10, 0x7d, 0x5a, 0x9a, 0x1e, 0x5d, 0x16, 0x48, 0xc8, 0x87, 0x3c, 0xb8, 0xd7,
    +	0x1f, 0x2a, 0xe0, 0xe2, 0xb2, 0x63, 0xbb, 0xee, 0x06, 0x71, 0x5c, 0x6a, 0x5b, 0x77, 0x2b, 0x6f,
    +	0x10, 0xc3, 0x43, 0x64, 0x8b, 0x38, 0xc4, 0x32, 0x08, 0x9c, 0x07, 0x99, 0x1d, 0x6a, 0x99, 0xd2,
    +	0xe7, 0x09, 0xdf, 0xe7, 0xdb, 0xd4, 0x32, 0x11, 0x9f, 0x61, 0x12, 0x3c, 0x2a, 0xa9, 0xb8, 0x44,
    +	0xc4, 0xe5, 0x12, 0x00, 0xb8, 0x41, 0xa5, 0x01, 0xb9, 0x2a, 0x28, 0xe5, 0xc0, 0xd2, 0xda, 0x2d,
    +	0x39, 0x83, 0x22, 0x52, 0xea, 0x53, 0x05, 0x9c, 0xfd, 0xd7, 0x23, 0x8f, 0x38, 0x16, 0xae, 0xc5,
    +	0x28, 0xf7, 0x7f, 0x30, 0x52, 0xe7, 0xdf, 0x7c, 0x49, 0xd9, 0xd2, 0x9f, 0x06, 0x0b, 0xdf, 0x2d,
     	0x93, 0x58, 0x1e, 0xdd, 0xa2, 0xc4, 0x09, 0x19, 0x23, 0x66, 0x90, 0xc4, 0x3b, 0x1e, 0x1e, 0xaa,
    -	0xdf, 0x74, 0x3b, 0x22, 0xd8, 0x74, 0x7c, 0x8e, 0x1c, 0x2b, 0xc5, 0xd4, 0x8f, 0x14, 0x30, 0x73,
    -	0x6b, 0x6d, 0xa9, 0x2c, 0x20, 0xd6, 0xec, 0x1a, 0x35, 0x76, 0xe1, 0x35, 0x90, 0xf1, 0x76, 0x1b,
    +	0xdf, 0x76, 0x3b, 0x22, 0xd8, 0x74, 0x7c, 0x8e, 0x1c, 0x2b, 0xc5, 0xd4, 0x8f, 0x15, 0x30, 0x73,
    +	0x73, 0x6d, 0xa9, 0x2c, 0x20, 0xd6, 0xec, 0x1a, 0x35, 0x76, 0xe1, 0x35, 0x90, 0xf1, 0x76, 0x1b,
     	0x7e, 0x6a, 0x5c, 0xf6, 0x49, 0xb0, 0xbe, 0xdb, 0x60, 0xa9, 0x71, 0x36, 0x29, 0xcf, 0xc6, 0x11,
    -	0xd7, 0x80, 0xbf, 0x02, 0xc3, 0x2d, 0x66, 0x97, 0x2f, 0x75, 0x58, 0x9f, 0x94, 0xaa, 0xc3, 0x7c,
    +	0xd7, 0x80, 0xbf, 0x01, 0xc3, 0x2d, 0x66, 0x97, 0x2f, 0x75, 0x58, 0x9f, 0x94, 0xaa, 0xc3, 0x7c,
     	0x31, 0x48, 0xcc, 0xc1, 0xeb, 0x60, 0xb2, 0x41, 0x1c, 0x6a, 0x9b, 0x65, 0x62, 0xd8, 0x96, 0xe9,
    -	0x72, 0x12, 0x0d, 0xeb, 0xe7, 0xa4, 0xf0, 0xe4, 0x5a, 0x74, 0x12, 0xc5, 0x65, 0xd5, 0x0f, 0x53,
    -	0x60, 0x3a, 0x5c, 0x00, 0x6a, 0xd6, 0x88, 0x0b, 0x1f, 0x82, 0x39, 0xd7, 0xc3, 0x15, 0x5a, 0xa3,
    -	0x4f, 0xb0, 0x47, 0x6d, 0xeb, 0xdf, 0xd4, 0x32, 0xed, 0x47, 0x71, 0xf4, 0x7c, 0xa7, 0x5d, 0x98,
    -	0x2b, 0xef, 0x29, 0x85, 0xf6, 0x41, 0x80, 0x77, 0xc0, 0x84, 0x4b, 0x6a, 0xc4, 0xf0, 0x84, 0xbf,
    -	0x32, 0x2e, 0xbf, 0xe9, 0xb4, 0x0b, 0x13, 0xe5, 0xc8, 0xf8, 0xeb, 0x76, 0xe1, 0x4c, 0x2c, 0x30,
    -	0x62, 0x12, 0xc5, 0x94, 0xe1, 0x43, 0x30, 0xd6, 0x60, 0xbf, 0x28, 0x71, 0x73, 0xa9, 0xf9, 0xf4,
    +	0x72, 0x12, 0x0d, 0xeb, 0xe7, 0xa4, 0xf0, 0xe4, 0x5a, 0x74, 0x12, 0xc5, 0x65, 0xd5, 0x8f, 0x52,
    +	0x60, 0x3a, 0x5c, 0x00, 0x6a, 0xd6, 0x88, 0x0b, 0x1f, 0x80, 0x39, 0xd7, 0xc3, 0x15, 0x5a, 0xa3,
    +	0x8f, 0xb1, 0x47, 0x6d, 0xeb, 0x7f, 0xd4, 0x32, 0xed, 0x87, 0x71, 0xf4, 0x7c, 0xa7, 0x5d, 0x98,
    +	0x2b, 0xef, 0x29, 0x85, 0xf6, 0x41, 0x80, 0xb7, 0xc1, 0x84, 0x4b, 0x6a, 0xc4, 0xf0, 0x84, 0xbf,
    +	0x32, 0x2e, 0xbf, 0xeb, 0xb4, 0x0b, 0x13, 0xe5, 0xc8, 0xf8, 0xab, 0x76, 0xe1, 0x4c, 0x2c, 0x30,
    +	0x62, 0x12, 0xc5, 0x94, 0xe1, 0x03, 0x30, 0xd6, 0x60, 0xbf, 0x28, 0x71, 0x73, 0xa9, 0xf9, 0xf4,
     	0x20, 0x5c, 0x49, 0x06, 0x5c, 0x9f, 0x91, 0xa1, 0x1a, 0x5b, 0x93, 0x48, 0x28, 0xc0, 0x54, 0x3f,
    -	0x4b, 0x81, 0x0b, 0xb7, 0x6c, 0x87, 0x3e, 0x61, 0x55, 0xa1, 0xb6, 0x66, 0x9b, 0x4b, 0x12, 0x91,
    -	0x38, 0xf0, 0x7f, 0x60, 0x8c, 0x9d, 0x43, 0x26, 0xf6, 0x70, 0x0f, 0x9e, 0x06, 0xc7, 0x89, 0xd6,
    -	0xd8, 0xa9, 0xb2, 0x01, 0x57, 0x63, 0xd2, 0x5a, 0x6b, 0x41, 0x13, 0x85, 0x64, 0x95, 0x78, 0x38,
    -	0xcc, 0xf5, 0x70, 0x0c, 0x05, 0xa8, 0xf0, 0x01, 0xc8, 0xb8, 0x0d, 0x62, 0x48, 0xaa, 0x5e, 0xef,
    -	0xeb, 0x59, 0xef, 0x85, 0x96, 0x1b, 0xc4, 0x08, 0x8b, 0x0f, 0xfb, 0x42, 0x1c, 0x16, 0x12, 0x30,
    -	0xe2, 0x72, 0x4a, 0xf3, 0x5d, 0xcd, 0x96, 0xfe, 0x7a, 0x58, 0x03, 0x22, 0x2f, 0x82, 0x9c, 0x13,
    -	0xdf, 0x48, 0x82, 0xab, 0xdf, 0x2a, 0xa0, 0xb0, 0x87, 0xa6, 0x4e, 0xb6, 0x71, 0x8b, 0xda, 0x0e,
    -	0xdc, 0x00, 0xa3, 0x7c, 0xe4, 0x7e, 0x43, 0x86, 0xb2, 0x38, 0xf8, 0x36, 0x72, 0xda, 0xea, 0x59,
    -	0x96, 0x91, 0x65, 0x81, 0x81, 0x7c, 0x30, 0xb8, 0x09, 0xc6, 0xf9, 0xcf, 0x1b, 0xf6, 0x23, 0x4b,
    -	0x86, 0xf1, 0xc0, 0xc8, 0x93, 0xec, 0x84, 0x28, 0xfb, 0x28, 0x28, 0x04, 0x54, 0xdf, 0x49, 0x83,
    -	0xf9, 0x3d, 0x3c, 0x5b, 0xb6, 0x2d, 0x93, 0x32, 0xf2, 0xc3, 0x5b, 0xb1, 0xfc, 0x5f, 0x4c, 0xe4,
    -	0xff, 0xe5, 0x7e, 0xfa, 0x91, 0x7a, 0xb0, 0x12, 0xec, 0x57, 0x2a, 0x86, 0x25, 0x03, 0xfe, 0xba,
    -	0x5d, 0xe8, 0xd1, 0x8f, 0x69, 0x01, 0x52, 0x7c, 0x5b, 0x60, 0x0b, 0xc0, 0x1a, 0x76, 0xbd, 0x75,
    -	0x07, 0x5b, 0xae, 0xb0, 0x44, 0xeb, 0x44, 0x32, 0xe1, 0xea, 0x60, 0x44, 0x66, 0x1a, 0xfa, 0x9c,
    -	0x5c, 0x05, 0x5c, 0xe9, 0x42, 0x43, 0x3d, 0x2c, 0xc0, 0x5f, 0x83, 0x11, 0x87, 0x60, 0xd7, 0xb6,
    -	0x72, 0x19, 0xee, 0x45, 0x40, 0x1b, 0xc4, 0x47, 0x91, 0x9c, 0x85, 0xbf, 0x05, 0xa3, 0x75, 0xe2,
    -	0xba, 0xb8, 0x4a, 0x72, 0xc3, 0x5c, 0x30, 0xa8, 0xbb, 0xab, 0x62, 0x18, 0xf9, 0xf3, 0xea, 0x77,
    -	0x0a, 0xb8, 0xb8, 0x47, 0x1c, 0x57, 0xa8, 0xeb, 0xc1, 0xcd, 0xae, 0x4c, 0xd5, 0x06, 0x73, 0x90,
    -	0x69, 0xf3, 0x3c, 0x0d, 0x6a, 0x84, 0x3f, 0x12, 0xc9, 0xd2, 0x4d, 0x30, 0x4c, 0x3d, 0x52, 0xf7,
    -	0x0b, 0xd0, 0x5f, 0x0e, 0x99, 0x45, 0x61, 0x7d, 0xbf, 0xcd, 0xd0, 0x90, 0x00, 0x55, 0x9f, 0xa5,
    -	0xf7, 0xf4, 0x8d, 0xa5, 0x32, 0x7c, 0x03, 0x4c, 0xf1, 0x2f, 0x79, 0xb6, 0x92, 0x2d, 0xe9, 0x61,
    -	0xdf, 0x6a, 0xb1, 0x4f, 0x6b, 0xa3, 0x9f, 0x97, 0x4b, 0x99, 0x2a, 0xc7, 0xa0, 0x51, 0xc2, 0x14,
    -	0x5c, 0x00, 0xd9, 0x3a, 0xb5, 0x10, 0x69, 0xd4, 0xa8, 0x81, 0x5d, 0x79, 0x4e, 0x4d, 0x77, 0xda,
    -	0x85, 0xec, 0x6a, 0x38, 0x8c, 0xa2, 0x32, 0xf0, 0x4f, 0x20, 0x5b, 0xc7, 0x8f, 0x03, 0x15, 0x71,
    -	0x9e, 0x9c, 0x91, 0xf6, 0xb2, 0xab, 0xe1, 0x14, 0x8a, 0xca, 0xc1, 0xfb, 0x8c, 0x0d, 0xec, 0x24,
    -	0x76, 0x73, 0x19, 0x1e, 0xe6, 0xab, 0x83, 0x1d, 0xdc, 0xbc, 0xf8, 0x45, 0x98, 0xc3, 0x21, 0x90,
    -	0x8f, 0x05, 0x29, 0x18, 0xab, 0xc8, 0x1a, 0xc4, 0x59, 0x96, 0x2d, 0xfd, 0xed, 0xb0, 0xdb, 0x27,
    -	0x61, 0xf4, 0x09, 0x46, 0x13, 0xff, 0x0b, 0x05, 0xf0, 0xea, 0x27, 0x19, 0x70, 0x69, 0xdf, 0x02,
    -	0x0a, 0xff, 0x09, 0xa0, 0x5d, 0x71, 0x89, 0xd3, 0x22, 0xe6, 0x4d, 0x71, 0xdf, 0x60, 0x4d, 0x21,
    -	0xdb, 0xce, 0xb4, 0x7e, 0x9e, 0x65, 0xd8, 0xbd, 0xae, 0x59, 0xd4, 0x43, 0x03, 0x1a, 0x60, 0x92,
    -	0xe5, 0x9d, 0xd8, 0x3b, 0x2a, 0xfb, 0xcf, 0x83, 0x25, 0xf5, 0x2c, 0x6b, 0x1d, 0x56, 0xa2, 0x20,
    -	0x28, 0x8e, 0x09, 0x97, 0xc0, 0xb4, 0x6c, 0x7b, 0x12, 0x7b, 0x79, 0x41, 0x06, 0x7b, 0x7a, 0x39,
    -	0x3e, 0x8d, 0x92, 0xf2, 0x0c, 0xc2, 0x24, 0x2e, 0x75, 0x88, 0x19, 0x40, 0x64, 0xe2, 0x10, 0x37,
    -	0xe2, 0xd3, 0x28, 0x29, 0x0f, 0x6b, 0x60, 0x4a, 0xa2, 0xca, 0xad, 0xcd, 0x0d, 0x73, 0x76, 0x0c,
    -	0xd8, 0xa0, 0xca, 0x93, 0x2b, 0xa0, 0xfb, 0x72, 0x0c, 0x0b, 0x25, 0xb0, 0xa1, 0x07, 0x80, 0xe1,
    -	0x57, 0x53, 0x37, 0x37, 0xc2, 0x2d, 0xfd, 0xfd, 0x90, 0x7c, 0x09, 0xca, 0x72, 0xd8, 0x03, 0x04,
    -	0x43, 0x2e, 0x8a, 0xd8, 0x51, 0xdf, 0x57, 0xc0, 0x4c, 0xb2, 0xc1, 0x0d, 0xae, 0x16, 0xca, 0x9e,
    -	0x57, 0x8b, 0x07, 0x60, 0x4c, 0xb4, 0x4a, 0xb6, 0x23, 0x09, 0xf0, 0xc7, 0x01, 0x8b, 0x1e, 0xae,
    -	0x90, 0x5a, 0x59, 0xaa, 0x0a, 0x3a, 0xfb, 0x5f, 0x28, 0x80, 0x54, 0x3f, 0xce, 0x00, 0x10, 0xa6,
    -	0x18, 0x5c, 0x8c, 0x9d, 0x72, 0xf3, 0x89, 0x53, 0x6e, 0x26, 0x7a, 0x4f, 0x89, 0x9c, 0x68, 0x1b,
    -	0x60, 0xc4, 0xe6, 0xa5, 0x47, 0xae, 0xb0, 0xd4, 0x2f, 0x98, 0x41, 0x9b, 0x14, 0xa0, 0xe9, 0x80,
    -	0x9d, 0x1d, 0xb2, 0x80, 0x49, 0x34, 0x78, 0x17, 0x64, 0x1a, 0xb6, 0xe9, 0xf7, 0x35, 0x7d, 0x5b,
    -	0xc2, 0x35, 0xdb, 0x74, 0x63, 0x98, 0x63, 0x6c, 0xed, 0x6c, 0x14, 0x71, 0x1c, 0xd6, 0x66, 0xfa,
    -	0x2f, 0x15, 0x9c, 0xa2, 0xd9, 0xd2, 0x62, 0x3f, 0xcc, 0x5e, 0x8f, 0x02, 0x22, 0x98, 0xfe, 0x0c,
    -	0x0a, 0x30, 0xe1, 0xdb, 0x0a, 0x98, 0x35, 0x92, 0x17, 0xec, 0xdc, 0xe8, 0x60, 0x5d, 0xd9, 0xbe,
    -	0xef, 0x10, 0xfa, 0xb9, 0x4e, 0xbb, 0x30, 0xdb, 0x25, 0x82, 0xba, 0xcd, 0x31, 0x27, 0x89, 0xbc,
    -	0x8d, 0xc9, 0x5a, 0xd8, 0xd7, 0xc9, 0x5e, 0xd7, 0x50, 0xe1, 0xa4, 0x3f, 0x83, 0x02, 0x4c, 0xf5,
    -	0x69, 0x06, 0x4c, 0xc4, 0xae, 0x79, 0xbf, 0x04, 0x67, 0x44, 0xc2, 0x1f, 0x2d, 0x67, 0x04, 0xe6,
    -	0xd1, 0x73, 0x46, 0xe0, 0x9e, 0x28, 0x67, 0x84, 0xc9, 0x93, 0xe4, 0x4c, 0xc4, 0xc9, 0x1e, 0x9c,
    -	0xf9, 0x22, 0xe5, 0x73, 0x46, 0x34, 0x1d, 0x83, 0x71, 0x46, 0xc8, 0x46, 0x38, 0x73, 0x2f, 0x7a,
    -	0x93, 0xee, 0xd3, 0xfd, 0x69, 0x7e, 0x84, 0xb5, 0x7f, 0x35, 0xb1, 0xe5, 0x51, 0x6f, 0x57, 0x1f,
    -	0xef, 0xba, 0x75, 0x9b, 0x60, 0x02, 0xb7, 0x88, 0x83, 0xab, 0x84, 0x0f, 0x4b, 0xd2, 0x1c, 0x14,
    -	0x77, 0x86, 0x5d, 0x7a, 0x97, 0x22, 0x38, 0x28, 0x86, 0xca, 0x1a, 0x02, 0xf9, 0x7d, 0xdf, 0x0b,
    -	0x6e, 0xd3, 0xf2, 0x8c, 0xe4, 0x0d, 0xc1, 0x52, 0xd7, 0x2c, 0xea, 0xa1, 0xa1, 0xbe, 0x97, 0x02,
    -	0xb3, 0x5d, 0xef, 0x18, 0x61, 0x50, 0x94, 0x63, 0x0a, 0x4a, 0xea, 0x04, 0x83, 0x92, 0x3e, 0x70,
    -	0x50, 0xbe, 0x4c, 0x01, 0xd8, 0x7d, 0x9c, 0xc0, 0x37, 0x79, 0x53, 0x62, 0x38, 0xb4, 0x42, 0x4c,
    -	0x31, 0x7d, 0x14, 0x0d, 0x75, 0xb4, 0xa3, 0x89, 0x62, 0xa3, 0xa4, 0xb1, 0x63, 0x7a, 0xf2, 0x0d,
    -	0x5f, 0xd4, 0xd2, 0x47, 0xfb, 0xa2, 0xa6, 0x7e, 0x9d, 0x0c, 0xe3, 0xa9, 0x7e, 0xc2, 0xeb, 0xb5,
    -	0xfd, 0xe9, 0x13, 0xdc, 0x7e, 0xf5, 0x73, 0x05, 0xcc, 0x24, 0xdb, 0x91, 0x53, 0xf7, 0xb0, 0xfb,
    -	0x55, 0xdc, 0x89, 0xd3, 0xfd, 0xa8, 0xfb, 0x54, 0x01, 0x67, 0x4f, 0xd9, 0x3f, 0x3c, 0xea, 0xa7,
    -	0xdd, 0x6b, 0x3e, 0x2d, 0xff, 0xd3, 0xe8, 0x37, 0x9e, 0xbf, 0xca, 0x0f, 0xbd, 0x78, 0x95, 0x1f,
    -	0x7a, 0xf9, 0x2a, 0x3f, 0xf4, 0x56, 0x27, 0xaf, 0x3c, 0xef, 0xe4, 0x95, 0x17, 0x9d, 0xbc, 0xf2,
    -	0xb2, 0x93, 0x57, 0xbe, 0xef, 0xe4, 0x95, 0x77, 0x7f, 0xc8, 0x0f, 0xfd, 0x37, 0xbf, 0xff, 0x1f,
    -	0x9f, 0x3f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x10, 0x14, 0x03, 0x76, 0x32, 0x1d, 0x00, 0x00,
    +	0x4f, 0x81, 0x0b, 0x37, 0x6d, 0x87, 0x3e, 0x66, 0x55, 0xa1, 0xb6, 0x66, 0x9b, 0x4b, 0x12, 0x91,
    +	0x38, 0xf0, 0x75, 0x30, 0xc6, 0xce, 0x21, 0x13, 0x7b, 0xb8, 0x07, 0x4f, 0x83, 0xe3, 0x44, 0x6b,
    +	0xec, 0x54, 0xd9, 0x80, 0xab, 0x31, 0x69, 0xad, 0xb5, 0xa0, 0x89, 0x42, 0xb2, 0x4a, 0x3c, 0x1c,
    +	0xe6, 0x7a, 0x38, 0x86, 0x02, 0x54, 0x78, 0x1f, 0x64, 0xdc, 0x06, 0x31, 0x24, 0x55, 0xaf, 0xf7,
    +	0xf5, 0xac, 0xf7, 0x42, 0xcb, 0x0d, 0x62, 0x84, 0xc5, 0x87, 0x7d, 0x21, 0x0e, 0x0b, 0x09, 0x18,
    +	0x71, 0x39, 0xa5, 0xf9, 0xae, 0x66, 0x4b, 0x7f, 0x3f, 0xac, 0x01, 0x91, 0x17, 0x41, 0xce, 0x89,
    +	0x6f, 0x24, 0xc1, 0xd5, 0xef, 0x14, 0x50, 0xd8, 0x43, 0x53, 0x27, 0xdb, 0xb8, 0x45, 0x6d, 0x07,
    +	0x6e, 0x80, 0x51, 0x3e, 0x72, 0xaf, 0x21, 0x43, 0x59, 0x1c, 0x7c, 0x1b, 0x39, 0x6d, 0xf5, 0x2c,
    +	0xcb, 0xc8, 0xb2, 0xc0, 0x40, 0x3e, 0x18, 0xdc, 0x04, 0xe3, 0xfc, 0xe7, 0x0d, 0xfb, 0xa1, 0x25,
    +	0xc3, 0x78, 0x60, 0xe4, 0x49, 0x76, 0x42, 0x94, 0x7d, 0x14, 0x14, 0x02, 0xaa, 0xef, 0xa6, 0xc1,
    +	0xfc, 0x1e, 0x9e, 0x2d, 0xdb, 0x96, 0x49, 0x19, 0xf9, 0xe1, 0xcd, 0x58, 0xfe, 0x2f, 0x26, 0xf2,
    +	0xff, 0x72, 0x3f, 0xfd, 0x48, 0x3d, 0x58, 0x09, 0xf6, 0x2b, 0x15, 0xc3, 0x92, 0x01, 0x7f, 0xd5,
    +	0x2e, 0xf4, 0xe8, 0xc7, 0xb4, 0x00, 0x29, 0xbe, 0x2d, 0xb0, 0x05, 0x60, 0x0d, 0xbb, 0xde, 0xba,
    +	0x83, 0x2d, 0x57, 0x58, 0xa2, 0x75, 0x22, 0x99, 0x70, 0x75, 0x30, 0x22, 0x33, 0x0d, 0x7d, 0x4e,
    +	0xae, 0x02, 0xae, 0x74, 0xa1, 0xa1, 0x1e, 0x16, 0xe0, 0x6f, 0xc1, 0x88, 0x43, 0xb0, 0x6b, 0x5b,
    +	0xb9, 0x0c, 0xf7, 0x22, 0xa0, 0x0d, 0xe2, 0xa3, 0x48, 0xce, 0xc2, 0xdf, 0x83, 0xd1, 0x3a, 0x71,
    +	0x5d, 0x5c, 0x25, 0xb9, 0x61, 0x2e, 0x18, 0xd4, 0xdd, 0x55, 0x31, 0x8c, 0xfc, 0x79, 0xf5, 0x7b,
    +	0x05, 0x5c, 0xdc, 0x23, 0x8e, 0x2b, 0xd4, 0xf5, 0xe0, 0x66, 0x57, 0xa6, 0x6a, 0x83, 0x39, 0xc8,
    +	0xb4, 0x79, 0x9e, 0x06, 0x35, 0xc2, 0x1f, 0x89, 0x64, 0xe9, 0x26, 0x18, 0xa6, 0x1e, 0xa9, 0xfb,
    +	0x05, 0xe8, 0x6f, 0x87, 0xcc, 0xa2, 0xb0, 0xbe, 0xdf, 0x62, 0x68, 0x48, 0x80, 0xaa, 0x4f, 0xd3,
    +	0x7b, 0xfa, 0xc6, 0x52, 0x19, 0xbe, 0x09, 0xa6, 0xf8, 0x97, 0x3c, 0x5b, 0xc9, 0x96, 0xf4, 0xb0,
    +	0x6f, 0xb5, 0xd8, 0xa7, 0xb5, 0xd1, 0xcf, 0xcb, 0xa5, 0x4c, 0x95, 0x63, 0xd0, 0x28, 0x61, 0x0a,
    +	0x2e, 0x80, 0x6c, 0x9d, 0x5a, 0x88, 0x34, 0x6a, 0xd4, 0xc0, 0xae, 0x3c, 0xa7, 0xa6, 0x3b, 0xed,
    +	0x42, 0x76, 0x35, 0x1c, 0x46, 0x51, 0x19, 0xf8, 0x17, 0x90, 0xad, 0xe3, 0x47, 0x81, 0x8a, 0x38,
    +	0x4f, 0xce, 0x48, 0x7b, 0xd9, 0xd5, 0x70, 0x0a, 0x45, 0xe5, 0xe0, 0x3d, 0xc6, 0x06, 0x76, 0x12,
    +	0xbb, 0xb9, 0x0c, 0x0f, 0xf3, 0xd5, 0xc1, 0x0e, 0x6e, 0x5e, 0xfc, 0x22, 0xcc, 0xe1, 0x10, 0xc8,
    +	0xc7, 0x82, 0x14, 0x8c, 0x55, 0x64, 0x0d, 0xe2, 0x2c, 0xcb, 0x96, 0xfe, 0x71, 0xd8, 0xed, 0x93,
    +	0x30, 0xfa, 0x04, 0xa3, 0x89, 0xff, 0x85, 0x02, 0x78, 0xf5, 0xd3, 0x0c, 0xb8, 0xb4, 0x6f, 0x01,
    +	0x85, 0xff, 0x06, 0xd0, 0xae, 0xb8, 0xc4, 0x69, 0x11, 0xf3, 0x3f, 0xe2, 0xbe, 0xc1, 0x9a, 0x42,
    +	0xb6, 0x9d, 0x69, 0xfd, 0x3c, 0xcb, 0xb0, 0xbb, 0x5d, 0xb3, 0xa8, 0x87, 0x06, 0x34, 0xc0, 0x24,
    +	0xcb, 0x3b, 0xb1, 0x77, 0x54, 0xf6, 0x9f, 0x07, 0x4b, 0xea, 0x59, 0xd6, 0x3a, 0xac, 0x44, 0x41,
    +	0x50, 0x1c, 0x13, 0x2e, 0x81, 0x69, 0xd9, 0xf6, 0x24, 0xf6, 0xf2, 0x82, 0x0c, 0xf6, 0xf4, 0x72,
    +	0x7c, 0x1a, 0x25, 0xe5, 0x19, 0x84, 0x49, 0x5c, 0xea, 0x10, 0x33, 0x80, 0xc8, 0xc4, 0x21, 0x6e,
    +	0xc4, 0xa7, 0x51, 0x52, 0x1e, 0xd6, 0xc0, 0x94, 0x44, 0x95, 0x5b, 0x9b, 0x1b, 0xe6, 0xec, 0x18,
    +	0xb0, 0x41, 0x95, 0x27, 0x57, 0x40, 0xf7, 0xe5, 0x18, 0x16, 0x4a, 0x60, 0x43, 0x0f, 0x00, 0xc3,
    +	0xaf, 0xa6, 0x6e, 0x6e, 0x84, 0x5b, 0xfa, 0xe7, 0x21, 0xf9, 0x12, 0x94, 0xe5, 0xb0, 0x07, 0x08,
    +	0x86, 0x5c, 0x14, 0xb1, 0xa3, 0x7e, 0xa0, 0x80, 0x99, 0x64, 0x83, 0x1b, 0x5c, 0x2d, 0x94, 0x3d,
    +	0xaf, 0x16, 0xf7, 0xc1, 0x98, 0x68, 0x95, 0x6c, 0x47, 0x12, 0xe0, 0xcf, 0x03, 0x16, 0x3d, 0x5c,
    +	0x21, 0xb5, 0xb2, 0x54, 0x15, 0x74, 0xf6, 0xbf, 0x50, 0x00, 0xa9, 0x7e, 0x92, 0x01, 0x20, 0x4c,
    +	0x31, 0xb8, 0x18, 0x3b, 0xe5, 0xe6, 0x13, 0xa7, 0xdc, 0x4c, 0xf4, 0x9e, 0x12, 0x39, 0xd1, 0x36,
    +	0xc0, 0x88, 0xcd, 0x4b, 0x8f, 0x5c, 0x61, 0xa9, 0x5f, 0x30, 0x83, 0x36, 0x29, 0x40, 0xd3, 0x01,
    +	0x3b, 0x3b, 0x64, 0x01, 0x93, 0x68, 0xf0, 0x0e, 0xc8, 0x34, 0x6c, 0xd3, 0xef, 0x6b, 0xfa, 0xb6,
    +	0x84, 0x6b, 0xb6, 0xe9, 0xc6, 0x30, 0xc7, 0xd8, 0xda, 0xd9, 0x28, 0xe2, 0x38, 0xac, 0xcd, 0xf4,
    +	0x5f, 0x2a, 0x38, 0x45, 0xb3, 0xa5, 0xc5, 0x7e, 0x98, 0xbd, 0x1e, 0x05, 0x44, 0x30, 0xfd, 0x19,
    +	0x14, 0x60, 0xc2, 0x77, 0x14, 0x30, 0x6b, 0x24, 0x2f, 0xd8, 0xb9, 0xd1, 0xc1, 0xba, 0xb2, 0x7d,
    +	0xdf, 0x21, 0xf4, 0x73, 0x9d, 0x76, 0x61, 0xb6, 0x4b, 0x04, 0x75, 0x9b, 0x63, 0x4e, 0x12, 0x79,
    +	0x1b, 0x93, 0xb5, 0xb0, 0xaf, 0x93, 0xbd, 0xae, 0xa1, 0xc2, 0x49, 0x7f, 0x06, 0x05, 0x98, 0xea,
    +	0x93, 0x0c, 0x98, 0x88, 0x5d, 0xf3, 0x7e, 0x0d, 0xce, 0x88, 0x84, 0x3f, 0x5a, 0xce, 0x08, 0xcc,
    +	0xa3, 0xe7, 0x8c, 0xc0, 0x3d, 0x51, 0xce, 0x08, 0x93, 0x27, 0xc9, 0x99, 0x88, 0x93, 0x3d, 0x38,
    +	0xf3, 0x65, 0xca, 0xe7, 0x8c, 0x68, 0x3a, 0x06, 0xe3, 0x8c, 0x90, 0x8d, 0x70, 0xe6, 0x6e, 0xf4,
    +	0x26, 0xdd, 0xa7, 0xfb, 0xd3, 0xfc, 0x08, 0x6b, 0xff, 0x6d, 0x62, 0xcb, 0xa3, 0xde, 0xae, 0x3e,
    +	0xde, 0x75, 0xeb, 0x36, 0xc1, 0x04, 0x6e, 0x11, 0x07, 0x57, 0x09, 0x1f, 0x96, 0xa4, 0x39, 0x28,
    +	0xee, 0x0c, 0xbb, 0xf4, 0x2e, 0x45, 0x70, 0x50, 0x0c, 0x95, 0x35, 0x04, 0xf2, 0xfb, 0x9e, 0x17,
    +	0xdc, 0xa6, 0xe5, 0x19, 0xc9, 0x1b, 0x82, 0xa5, 0xae, 0x59, 0xd4, 0x43, 0x43, 0x7d, 0x3f, 0x05,
    +	0x66, 0xbb, 0xde, 0x31, 0xc2, 0xa0, 0x28, 0xc7, 0x14, 0x94, 0xd4, 0x09, 0x06, 0x25, 0x7d, 0xe0,
    +	0xa0, 0x7c, 0x95, 0x02, 0xb0, 0xfb, 0x38, 0x81, 0x6f, 0xf1, 0xa6, 0xc4, 0x70, 0x68, 0x85, 0x98,
    +	0x62, 0xfa, 0x28, 0x1a, 0xea, 0x68, 0x47, 0x13, 0xc5, 0x46, 0x49, 0x63, 0xc7, 0xf4, 0xe4, 0x1b,
    +	0xbe, 0xa8, 0xa5, 0x8f, 0xf6, 0x45, 0x4d, 0xfd, 0x26, 0x19, 0xc6, 0x53, 0xfd, 0x84, 0xd7, 0x6b,
    +	0xfb, 0xd3, 0x27, 0xb8, 0xfd, 0xea, 0x17, 0x0a, 0x98, 0x49, 0xb6, 0x23, 0xa7, 0xee, 0x61, 0xf7,
    +	0xeb, 0xb8, 0x13, 0xa7, 0xfb, 0x51, 0xf7, 0x89, 0x02, 0xce, 0x9e, 0xb2, 0x7f, 0x78, 0xd4, 0xcf,
    +	0xba, 0xd7, 0x7c, 0x5a, 0xfe, 0xa7, 0xd1, 0x6f, 0x3c, 0x7b, 0x99, 0x1f, 0x7a, 0xfe, 0x32, 0x3f,
    +	0xf4, 0xe2, 0x65, 0x7e, 0xe8, 0xed, 0x4e, 0x5e, 0x79, 0xd6, 0xc9, 0x2b, 0xcf, 0x3b, 0x79, 0xe5,
    +	0x45, 0x27, 0xaf, 0xfc, 0xd0, 0xc9, 0x2b, 0xef, 0xfd, 0x98, 0x1f, 0x7a, 0x2d, 0xbf, 0xff, 0x1f,
    +	0x9f, 0xbf, 0x04, 0x00, 0x00, 0xff, 0xff, 0xa4, 0x27, 0xde, 0xc0, 0x19, 0x1d, 0x00, 0x00,
     }
     
     func (m *ContainerResourceMetricSource) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/generated.proto b/vendor/k8s.io/api/autoscaling/v2beta2/generated.proto
    index 5b2fe9442aaf..941d9752ae15 100644
    --- a/vendor/k8s.io/api/autoscaling/v2beta2/generated.proto
    +++ b/vendor/k8s.io/api/autoscaling/v2beta2/generated.proto
    @@ -136,6 +136,7 @@ message HPAScalingRules {
       // policies is a list of potential scaling polices which can be used during scaling.
       // At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid
       // +optional
    +  // +listType=atomic
       repeated HPAScalingPolicy policies = 2;
     }
     
    @@ -146,7 +147,7 @@ message HorizontalPodAutoscaler {
       // metadata is the standard object metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the specification for the behaviour of the autoscaler.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
    @@ -189,7 +190,7 @@ message HorizontalPodAutoscalerCondition {
       // lastTransitionTime is the last time the condition transitioned from
       // one status to another
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // reason is the reason for the condition's last transition.
       // +optional
    @@ -205,7 +206,7 @@ message HorizontalPodAutoscalerCondition {
     message HorizontalPodAutoscalerList {
       // metadata is the standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of horizontal pod autoscaler objects.
       repeated HorizontalPodAutoscaler items = 2;
    @@ -238,6 +239,7 @@ message HorizontalPodAutoscalerSpec {
       // more information about how each type of metric must respond.
       // If not set, the default metric will be set to 80% average CPU utilization.
       // +optional
    +  // +listType=atomic
       repeated MetricSpec metrics = 4;
     
       // behavior configures the scaling behavior of the target
    @@ -256,7 +258,7 @@ message HorizontalPodAutoscalerStatus {
       // lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods,
       // used by the autoscaler to control how often the number of pods is changed.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2;
     
       // currentReplicas is current number of replicas of pods managed by this autoscaler,
       // as last seen by the autoscaler.
    @@ -268,11 +270,13 @@ message HorizontalPodAutoscalerStatus {
     
       // currentMetrics is the last read state of the metrics used by this autoscaler.
       // +optional
    +  // +listType=atomic
       repeated MetricStatus currentMetrics = 5;
     
       // conditions is the set of conditions required for this autoscaler to scale its target,
       // and indicates whether or not those conditions are met.
       // +optional
    +  // +listType=atomic
       repeated HorizontalPodAutoscalerCondition conditions = 6;
     }
     
    @@ -285,7 +289,7 @@ message MetricIdentifier {
       // When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
       // When unset, just the metricName will be used to gather metrics.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     }
     
     // MetricSpec specifies how to scale based on a single metric
    @@ -293,8 +297,6 @@ message MetricIdentifier {
     message MetricSpec {
       // type is the type of metric source.  It should be one of "ContainerResource", "External",
       // "Object", "Pods" or "Resource", each mapping to a matching field in the object.
    -  // Note: "ContainerResource" type is available on when the feature-gate
    -  // HPAContainerMetrics is enabled
       optional string type = 1;
     
       // object refers to a metric describing a single kubernetes object
    @@ -321,7 +323,6 @@ message MetricSpec {
       // each pod of the current scale target (e.g. CPU or memory). Such metrics are
       // built in to Kubernetes, and have special scaling options on top of those
       // available to normal per-pod metrics using the "pods" source.
    -  // This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
       // +optional
       optional ContainerResourceMetricSource containerResource = 7;
     
    @@ -338,8 +339,6 @@ message MetricSpec {
     message MetricStatus {
       // type is the type of metric source.  It will be one of "ContainerResource", "External",
       // "Object", "Pods" or "Resource", each corresponds to a matching field in the object.
    -  // Note: "ContainerResource" type is available on when the feature-gate
    -  // HPAContainerMetrics is enabled
       optional string type = 1;
     
       // object refers to a metric describing a single kubernetes object
    @@ -385,12 +384,12 @@ message MetricTarget {
     
       // value is the target value of the metric (as a quantity).
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity value = 2;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity value = 2;
     
       // averageValue is the target value of the average of the
       // metric across all relevant pods (as a quantity)
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 3;
     
       // averageUtilization is the target value of the average of the
       // resource metric across all relevant pods, represented as a percentage of
    @@ -404,12 +403,12 @@ message MetricTarget {
     message MetricValueStatus {
       // value is the current value of the metric (as a quantity).
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity value = 1;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity value = 1;
     
       // averageValue is the current value of the average of the
       // metric across all relevant pods (as a quantity)
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 2;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 2;
     
       // averageUtilization is the current value of the average of the
       // resource metric across all relevant pods, represented as a percentage of
    diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/types.go b/vendor/k8s.io/api/autoscaling/v2beta2/types.go
    index b0b7681c0ebd..bc9677b147e0 100644
    --- a/vendor/k8s.io/api/autoscaling/v2beta2/types.go
    +++ b/vendor/k8s.io/api/autoscaling/v2beta2/types.go
    @@ -76,6 +76,7 @@ type HorizontalPodAutoscalerSpec struct {
     	// more information about how each type of metric must respond.
     	// If not set, the default metric will be set to 80% average CPU utilization.
     	// +optional
    +	// +listType=atomic
     	Metrics []MetricSpec `json:"metrics,omitempty" protobuf:"bytes,4,rep,name=metrics"`
     
     	// behavior configures the scaling behavior of the target
    @@ -103,8 +104,6 @@ type CrossVersionObjectReference struct {
     type MetricSpec struct {
     	// type is the type of metric source.  It should be one of "ContainerResource", "External",
     	// "Object", "Pods" or "Resource", each mapping to a matching field in the object.
    -	// Note: "ContainerResource" type is available on when the feature-gate
    -	// HPAContainerMetrics is enabled
     	Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"`
     
     	// object refers to a metric describing a single kubernetes object
    @@ -131,7 +130,6 @@ type MetricSpec struct {
     	// each pod of the current scale target (e.g. CPU or memory). Such metrics are
     	// built in to Kubernetes, and have special scaling options on top of those
     	// available to normal per-pod metrics using the "pods" source.
    -	// This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
     	// +optional
     	ContainerResource *ContainerResourceMetricSource `json:"containerResource,omitempty" protobuf:"bytes,7,opt,name=containerResource"`
     
    @@ -199,6 +197,7 @@ type HPAScalingRules struct {
     	// policies is a list of potential scaling polices which can be used during scaling.
     	// At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid
     	// +optional
    +	// +listType=atomic
     	Policies []HPAScalingPolicy `json:"policies,omitempty" protobuf:"bytes,2,rep,name=policies"`
     }
     
    @@ -393,11 +392,13 @@ type HorizontalPodAutoscalerStatus struct {
     
     	// currentMetrics is the last read state of the metrics used by this autoscaler.
     	// +optional
    +	// +listType=atomic
     	CurrentMetrics []MetricStatus `json:"currentMetrics" protobuf:"bytes,5,rep,name=currentMetrics"`
     
     	// conditions is the set of conditions required for this autoscaler to scale its target,
     	// and indicates whether or not those conditions are met.
     	// +optional
    +	// +listType=atomic
     	Conditions []HorizontalPodAutoscalerCondition `json:"conditions" protobuf:"bytes,6,rep,name=conditions"`
     }
     
    @@ -445,8 +446,6 @@ type HorizontalPodAutoscalerCondition struct {
     type MetricStatus struct {
     	// type is the type of metric source.  It will be one of "ContainerResource", "External",
     	// "Object", "Pods" or "Resource", each corresponds to a matching field in the object.
    -	// Note: "ContainerResource" type is available on when the feature-gate
    -	// HPAContainerMetrics is enabled
     	Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"`
     
     	// object refers to a metric describing a single kubernetes object
    diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/types_swagger_doc_generated.go b/vendor/k8s.io/api/autoscaling/v2beta2/types_swagger_doc_generated.go
    index 4af7d0ec0d29..5d4bb86b8344 100644
    --- a/vendor/k8s.io/api/autoscaling/v2beta2/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/autoscaling/v2beta2/types_swagger_doc_generated.go
    @@ -185,11 +185,11 @@ func (MetricIdentifier) SwaggerDoc() map[string]string {
     
     var map_MetricSpec = map[string]string{
     	"":                  "MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).",
    -	"type":              "type is the type of metric source.  It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled",
    +	"type":              "type is the type of metric source.  It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object.",
     	"object":            "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).",
     	"pods":              "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.",
     	"resource":          "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
    -	"containerResource": "container resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.",
    +	"containerResource": "container resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
     	"external":          "external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).",
     }
     
    @@ -199,7 +199,7 @@ func (MetricSpec) SwaggerDoc() map[string]string {
     
     var map_MetricStatus = map[string]string{
     	"":                  "MetricStatus describes the last-read state of a single metric.",
    -	"type":              "type is the type of metric source.  It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled",
    +	"type":              "type is the type of metric source.  It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object.",
     	"object":            "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).",
     	"pods":              "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.",
     	"resource":          "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
    diff --git a/vendor/k8s.io/api/batch/v1/doc.go b/vendor/k8s.io/api/batch/v1/doc.go
    index c4a8db6e78e3..cb5cbb6002eb 100644
    --- a/vendor/k8s.io/api/batch/v1/doc.go
    +++ b/vendor/k8s.io/api/batch/v1/doc.go
    @@ -17,5 +17,5 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    -
    +// +k8s:prerelease-lifecycle-gen=true
     package v1 // import "k8s.io/api/batch/v1"
    diff --git a/vendor/k8s.io/api/batch/v1/generated.pb.go b/vendor/k8s.io/api/batch/v1/generated.pb.go
    index 59a7482a0d20..6108a60839fc 100644
    --- a/vendor/k8s.io/api/batch/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/batch/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/batch/v1/generated.proto
    +// source: k8s.io/api/batch/v1/generated.proto
     
     package v1
     
    @@ -51,7 +51,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *CronJob) Reset()      { *m = CronJob{} }
     func (*CronJob) ProtoMessage() {}
     func (*CronJob) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{0}
    +	return fileDescriptor_79228dc2c4001a22, []int{0}
     }
     func (m *CronJob) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -79,7 +79,7 @@ var xxx_messageInfo_CronJob proto.InternalMessageInfo
     func (m *CronJobList) Reset()      { *m = CronJobList{} }
     func (*CronJobList) ProtoMessage() {}
     func (*CronJobList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{1}
    +	return fileDescriptor_79228dc2c4001a22, []int{1}
     }
     func (m *CronJobList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,7 +107,7 @@ var xxx_messageInfo_CronJobList proto.InternalMessageInfo
     func (m *CronJobSpec) Reset()      { *m = CronJobSpec{} }
     func (*CronJobSpec) ProtoMessage() {}
     func (*CronJobSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{2}
    +	return fileDescriptor_79228dc2c4001a22, []int{2}
     }
     func (m *CronJobSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,7 +135,7 @@ var xxx_messageInfo_CronJobSpec proto.InternalMessageInfo
     func (m *CronJobStatus) Reset()      { *m = CronJobStatus{} }
     func (*CronJobStatus) ProtoMessage() {}
     func (*CronJobStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{3}
    +	return fileDescriptor_79228dc2c4001a22, []int{3}
     }
     func (m *CronJobStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -163,7 +163,7 @@ var xxx_messageInfo_CronJobStatus proto.InternalMessageInfo
     func (m *Job) Reset()      { *m = Job{} }
     func (*Job) ProtoMessage() {}
     func (*Job) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{4}
    +	return fileDescriptor_79228dc2c4001a22, []int{4}
     }
     func (m *Job) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -191,7 +191,7 @@ var xxx_messageInfo_Job proto.InternalMessageInfo
     func (m *JobCondition) Reset()      { *m = JobCondition{} }
     func (*JobCondition) ProtoMessage() {}
     func (*JobCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{5}
    +	return fileDescriptor_79228dc2c4001a22, []int{5}
     }
     func (m *JobCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -219,7 +219,7 @@ var xxx_messageInfo_JobCondition proto.InternalMessageInfo
     func (m *JobList) Reset()      { *m = JobList{} }
     func (*JobList) ProtoMessage() {}
     func (*JobList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{6}
    +	return fileDescriptor_79228dc2c4001a22, []int{6}
     }
     func (m *JobList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -247,7 +247,7 @@ var xxx_messageInfo_JobList proto.InternalMessageInfo
     func (m *JobSpec) Reset()      { *m = JobSpec{} }
     func (*JobSpec) ProtoMessage() {}
     func (*JobSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{7}
    +	return fileDescriptor_79228dc2c4001a22, []int{7}
     }
     func (m *JobSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -275,7 +275,7 @@ var xxx_messageInfo_JobSpec proto.InternalMessageInfo
     func (m *JobStatus) Reset()      { *m = JobStatus{} }
     func (*JobStatus) ProtoMessage() {}
     func (*JobStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{8}
    +	return fileDescriptor_79228dc2c4001a22, []int{8}
     }
     func (m *JobStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -303,7 +303,7 @@ var xxx_messageInfo_JobStatus proto.InternalMessageInfo
     func (m *JobTemplateSpec) Reset()      { *m = JobTemplateSpec{} }
     func (*JobTemplateSpec) ProtoMessage() {}
     func (*JobTemplateSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{9}
    +	return fileDescriptor_79228dc2c4001a22, []int{9}
     }
     func (m *JobTemplateSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -331,7 +331,7 @@ var xxx_messageInfo_JobTemplateSpec proto.InternalMessageInfo
     func (m *PodFailurePolicy) Reset()      { *m = PodFailurePolicy{} }
     func (*PodFailurePolicy) ProtoMessage() {}
     func (*PodFailurePolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{10}
    +	return fileDescriptor_79228dc2c4001a22, []int{10}
     }
     func (m *PodFailurePolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -361,7 +361,7 @@ func (m *PodFailurePolicyOnExitCodesRequirement) Reset() {
     }
     func (*PodFailurePolicyOnExitCodesRequirement) ProtoMessage() {}
     func (*PodFailurePolicyOnExitCodesRequirement) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{11}
    +	return fileDescriptor_79228dc2c4001a22, []int{11}
     }
     func (m *PodFailurePolicyOnExitCodesRequirement) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -391,7 +391,7 @@ func (m *PodFailurePolicyOnPodConditionsPattern) Reset() {
     }
     func (*PodFailurePolicyOnPodConditionsPattern) ProtoMessage() {}
     func (*PodFailurePolicyOnPodConditionsPattern) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{12}
    +	return fileDescriptor_79228dc2c4001a22, []int{12}
     }
     func (m *PodFailurePolicyOnPodConditionsPattern) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -419,7 +419,7 @@ var xxx_messageInfo_PodFailurePolicyOnPodConditionsPattern proto.InternalMessage
     func (m *PodFailurePolicyRule) Reset()      { *m = PodFailurePolicyRule{} }
     func (*PodFailurePolicyRule) ProtoMessage() {}
     func (*PodFailurePolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{13}
    +	return fileDescriptor_79228dc2c4001a22, []int{13}
     }
     func (m *PodFailurePolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -444,10 +444,66 @@ func (m *PodFailurePolicyRule) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_PodFailurePolicyRule proto.InternalMessageInfo
     
    +func (m *SuccessPolicy) Reset()      { *m = SuccessPolicy{} }
    +func (*SuccessPolicy) ProtoMessage() {}
    +func (*SuccessPolicy) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_79228dc2c4001a22, []int{14}
    +}
    +func (m *SuccessPolicy) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *SuccessPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *SuccessPolicy) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_SuccessPolicy.Merge(m, src)
    +}
    +func (m *SuccessPolicy) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *SuccessPolicy) XXX_DiscardUnknown() {
    +	xxx_messageInfo_SuccessPolicy.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_SuccessPolicy proto.InternalMessageInfo
    +
    +func (m *SuccessPolicyRule) Reset()      { *m = SuccessPolicyRule{} }
    +func (*SuccessPolicyRule) ProtoMessage() {}
    +func (*SuccessPolicyRule) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_79228dc2c4001a22, []int{15}
    +}
    +func (m *SuccessPolicyRule) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *SuccessPolicyRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *SuccessPolicyRule) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_SuccessPolicyRule.Merge(m, src)
    +}
    +func (m *SuccessPolicyRule) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *SuccessPolicyRule) XXX_DiscardUnknown() {
    +	xxx_messageInfo_SuccessPolicyRule.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_SuccessPolicyRule proto.InternalMessageInfo
    +
     func (m *UncountedTerminatedPods) Reset()      { *m = UncountedTerminatedPods{} }
     func (*UncountedTerminatedPods) ProtoMessage() {}
     func (*UncountedTerminatedPods) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b52da57c93de713, []int{14}
    +	return fileDescriptor_79228dc2c4001a22, []int{16}
     }
     func (m *UncountedTerminatedPods) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -487,128 +543,135 @@ func init() {
     	proto.RegisterType((*PodFailurePolicyOnExitCodesRequirement)(nil), "k8s.io.api.batch.v1.PodFailurePolicyOnExitCodesRequirement")
     	proto.RegisterType((*PodFailurePolicyOnPodConditionsPattern)(nil), "k8s.io.api.batch.v1.PodFailurePolicyOnPodConditionsPattern")
     	proto.RegisterType((*PodFailurePolicyRule)(nil), "k8s.io.api.batch.v1.PodFailurePolicyRule")
    +	proto.RegisterType((*SuccessPolicy)(nil), "k8s.io.api.batch.v1.SuccessPolicy")
    +	proto.RegisterType((*SuccessPolicyRule)(nil), "k8s.io.api.batch.v1.SuccessPolicyRule")
     	proto.RegisterType((*UncountedTerminatedPods)(nil), "k8s.io.api.batch.v1.UncountedTerminatedPods")
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/batch/v1/generated.proto", fileDescriptor_3b52da57c93de713)
    -}
    -
    -var fileDescriptor_3b52da57c93de713 = []byte{
    -	// 1797 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcd, 0x6f, 0x23, 0x49,
    -	0x15, 0x8f, 0x93, 0x38, 0xb1, 0xcb, 0xf9, 0xf0, 0xd4, 0x64, 0x66, 0x4c, 0x58, 0xb9, 0xb3, 0x9e,
    -	0xdd, 0x55, 0x16, 0x2d, 0xed, 0x9d, 0xec, 0x88, 0xe5, 0x5b, 0x3b, 0x9d, 0x61, 0x96, 0x09, 0xce,
    -	0x8e, 0x29, 0x67, 0x40, 0x5a, 0x16, 0x44, 0xb9, 0xbb, 0xec, 0xf4, 0xa6, 0xdd, 0xd5, 0x74, 0x55,
    -	0x47, 0x93, 0x0b, 0x42, 0xe2, 0x0f, 0x80, 0xbf, 0x82, 0x23, 0x17, 0x38, 0xc3, 0x0d, 0xcd, 0x71,
    -	0xc5, 0x69, 0xc5, 0xa1, 0xc5, 0x34, 0x7f, 0x00, 0xf7, 0x20, 0x24, 0x54, 0xd5, 0xe5, 0xfe, 0x72,
    -	0x77, 0xc8, 0xac, 0xc4, 0x88, 0x5b, 0xfa, 0xbd, 0xdf, 0xfb, 0xd5, 0xc7, 0x7b, 0xf5, 0x7b, 0x2f,
    -	0x06, 0xdf, 0x3e, 0xfb, 0x3a, 0xd3, 0x6d, 0xda, 0x3f, 0x0b, 0xc6, 0xc4, 0x77, 0x09, 0x27, 0xac,
    -	0x7f, 0x4e, 0x5c, 0x8b, 0xfa, 0x7d, 0xe5, 0xc0, 0x9e, 0xdd, 0x1f, 0x63, 0x6e, 0x9e, 0xf6, 0xcf,
    -	0xef, 0xf5, 0xa7, 0xc4, 0x25, 0x3e, 0xe6, 0xc4, 0xd2, 0x3d, 0x9f, 0x72, 0x0a, 0x6f, 0xc6, 0x20,
    -	0x1d, 0x7b, 0xb6, 0x2e, 0x41, 0xfa, 0xf9, 0xbd, 0xdd, 0xaf, 0x4e, 0x6d, 0x7e, 0x1a, 0x8c, 0x75,
    -	0x93, 0xce, 0xfa, 0x53, 0x3a, 0xa5, 0x7d, 0x89, 0x1d, 0x07, 0x13, 0xf9, 0x25, 0x3f, 0xe4, 0x5f,
    -	0x31, 0xc7, 0x6e, 0x2f, 0xb3, 0x90, 0x49, 0x7d, 0x52, 0xb2, 0xce, 0xee, 0xfd, 0x14, 0x33, 0xc3,
    -	0xe6, 0xa9, 0xed, 0x12, 0xff, 0xa2, 0xef, 0x9d, 0x4d, 0x85, 0x81, 0xf5, 0x67, 0x84, 0xe3, 0xb2,
    -	0xa8, 0x7e, 0x55, 0x94, 0x1f, 0xb8, 0xdc, 0x9e, 0x91, 0x85, 0x80, 0xaf, 0xfd, 0xb7, 0x00, 0x66,
    -	0x9e, 0x92, 0x19, 0x2e, 0xc6, 0xf5, 0xfe, 0x55, 0x03, 0xeb, 0x87, 0x3e, 0x75, 0x8f, 0xe8, 0x18,
    -	0xfe, 0x1c, 0x34, 0xc4, 0x7e, 0x2c, 0xcc, 0x71, 0xa7, 0xb6, 0x57, 0xdb, 0x6f, 0x1d, 0xbc, 0xab,
    -	0xa7, 0xb7, 0x94, 0xd0, 0xea, 0xde, 0xd9, 0x54, 0x18, 0x98, 0x2e, 0xd0, 0xfa, 0xf9, 0x3d, 0xfd,
    -	0xc9, 0xf8, 0x53, 0x62, 0xf2, 0x63, 0xc2, 0xb1, 0x01, 0x9f, 0x87, 0xda, 0x52, 0x14, 0x6a, 0x20,
    -	0xb5, 0xa1, 0x84, 0x15, 0x1a, 0x60, 0x95, 0x79, 0xc4, 0xec, 0x2c, 0x4b, 0xf6, 0x3d, 0xbd, 0x24,
    -	0x07, 0xba, 0xda, 0xcd, 0xc8, 0x23, 0xa6, 0xb1, 0xa1, 0xd8, 0x56, 0xc5, 0x17, 0x92, 0xb1, 0xf0,
    -	0x08, 0xac, 0x31, 0x8e, 0x79, 0xc0, 0x3a, 0x2b, 0x92, 0xa5, 0x77, 0x25, 0x8b, 0x44, 0x1a, 0x5b,
    -	0x8a, 0x67, 0x2d, 0xfe, 0x46, 0x8a, 0xa1, 0xf7, 0xfb, 0x1a, 0x68, 0x29, 0xe4, 0xc0, 0x66, 0x1c,
    -	0x7e, 0xb2, 0x70, 0x03, 0xfa, 0xf5, 0x6e, 0x40, 0x44, 0xcb, 0xf3, 0xb7, 0xd5, 0x4a, 0x8d, 0xb9,
    -	0x25, 0x73, 0xfa, 0x07, 0xa0, 0x6e, 0x73, 0x32, 0x63, 0x9d, 0xe5, 0xbd, 0x95, 0xfd, 0xd6, 0xc1,
    -	0x6b, 0x57, 0x6d, 0xdc, 0xd8, 0x54, 0x44, 0xf5, 0xc7, 0x22, 0x04, 0xc5, 0x91, 0xbd, 0xbf, 0xae,
    -	0x26, 0x1b, 0x16, 0x57, 0x02, 0xdf, 0x01, 0x0d, 0x91, 0x58, 0x2b, 0x70, 0x88, 0xdc, 0x70, 0x33,
    -	0xdd, 0xc0, 0x48, 0xd9, 0x51, 0x82, 0x80, 0xfb, 0xa0, 0x21, 0x6a, 0xe1, 0x63, 0xea, 0x92, 0x4e,
    -	0x43, 0xa2, 0x37, 0x04, 0xf2, 0x44, 0xd9, 0x50, 0xe2, 0x85, 0x4f, 0xc1, 0x1d, 0xc6, 0xb1, 0xcf,
    -	0x6d, 0x77, 0xfa, 0x90, 0x60, 0xcb, 0xb1, 0x5d, 0x32, 0x22, 0x26, 0x75, 0x2d, 0x26, 0x73, 0xb7,
    -	0x62, 0x7c, 0x39, 0x0a, 0xb5, 0x3b, 0xa3, 0x72, 0x08, 0xaa, 0x8a, 0x85, 0x9f, 0x80, 0x1b, 0x26,
    -	0x75, 0xcd, 0xc0, 0xf7, 0x89, 0x6b, 0x5e, 0x0c, 0xa9, 0x63, 0x9b, 0x17, 0x32, 0x8d, 0x4d, 0x43,
    -	0x57, 0xfb, 0xbe, 0x71, 0x58, 0x04, 0x5c, 0x96, 0x19, 0xd1, 0x22, 0x11, 0x7c, 0x13, 0xac, 0xb3,
    -	0x80, 0x79, 0xc4, 0xb5, 0x3a, 0xab, 0x7b, 0xb5, 0xfd, 0x86, 0xd1, 0x8a, 0x42, 0x6d, 0x7d, 0x14,
    -	0x9b, 0xd0, 0xdc, 0x07, 0x7f, 0x02, 0x5a, 0x9f, 0xd2, 0xf1, 0x09, 0x99, 0x79, 0x0e, 0xe6, 0xa4,
    -	0x53, 0x97, 0x79, 0x7e, 0xa3, 0x34, 0x19, 0x47, 0x29, 0x4e, 0xd6, 0xe3, 0x4d, 0xb5, 0xc9, 0x56,
    -	0xc6, 0x81, 0xb2, 0x6c, 0xf0, 0x67, 0x60, 0x97, 0x05, 0xa6, 0x49, 0x18, 0x9b, 0x04, 0xce, 0x11,
    -	0x1d, 0xb3, 0xef, 0xdb, 0x8c, 0x53, 0xff, 0x62, 0x60, 0xcf, 0x6c, 0xde, 0x59, 0xdb, 0xab, 0xed,
    -	0xd7, 0x8d, 0x6e, 0x14, 0x6a, 0xbb, 0xa3, 0x4a, 0x14, 0xba, 0x82, 0x01, 0x22, 0x70, 0x7b, 0x82,
    -	0x6d, 0x87, 0x58, 0x0b, 0xdc, 0xeb, 0x92, 0x7b, 0x37, 0x0a, 0xb5, 0xdb, 0x8f, 0x4a, 0x11, 0xa8,
    -	0x22, 0xb2, 0xf7, 0xa7, 0x65, 0xb0, 0x99, 0x7b, 0x2f, 0xf0, 0x07, 0x60, 0x0d, 0x9b, 0xdc, 0x3e,
    -	0x17, 0x45, 0x25, 0x4a, 0xf5, 0x6e, 0xf6, 0x76, 0x84, 0xd2, 0xa5, 0xaf, 0x1e, 0x91, 0x09, 0x11,
    -	0x49, 0x20, 0xe9, 0x23, 0x7b, 0x20, 0x43, 0x91, 0xa2, 0x80, 0x0e, 0x68, 0x3b, 0x98, 0xf1, 0x79,
    -	0x3d, 0x8a, 0x6a, 0x93, 0xf9, 0x69, 0x1d, 0x7c, 0xe5, 0x7a, 0x8f, 0x4b, 0x44, 0x18, 0x3b, 0x51,
    -	0xa8, 0xb5, 0x07, 0x05, 0x1e, 0xb4, 0xc0, 0x0c, 0x7d, 0x00, 0xa5, 0x2d, 0xb9, 0x42, 0xb9, 0x5e,
    -	0xfd, 0xa5, 0xd7, 0xbb, 0x1d, 0x85, 0x1a, 0x1c, 0x2c, 0x30, 0xa1, 0x12, 0xf6, 0xde, 0x3f, 0x6b,
    -	0x60, 0xe5, 0xd5, 0x08, 0xe8, 0x77, 0x73, 0x02, 0xfa, 0x5a, 0x55, 0xd1, 0x56, 0x8a, 0xe7, 0xa3,
    -	0x82, 0x78, 0x76, 0x2b, 0x19, 0xae, 0x16, 0xce, 0xbf, 0xac, 0x80, 0x8d, 0x23, 0x3a, 0x3e, 0xa4,
    -	0xae, 0x65, 0x73, 0x9b, 0xba, 0xf0, 0x3e, 0x58, 0xe5, 0x17, 0xde, 0x5c, 0x84, 0xf6, 0xe6, 0x4b,
    -	0x9f, 0x5c, 0x78, 0xe4, 0x32, 0xd4, 0xda, 0x59, 0xac, 0xb0, 0x21, 0x89, 0x86, 0x83, 0x64, 0x3b,
    -	0xcb, 0x32, 0xee, 0x7e, 0x7e, 0xb9, 0xcb, 0x50, 0x2b, 0x69, 0xb1, 0x7a, 0xc2, 0x94, 0xdf, 0x14,
    -	0x9c, 0x82, 0x4d, 0x91, 0x9c, 0xa1, 0x4f, 0xc7, 0x71, 0x95, 0xad, 0xbc, 0x74, 0xd6, 0x6f, 0xa9,
    -	0x0d, 0x6c, 0x0e, 0xb2, 0x44, 0x28, 0xcf, 0x0b, 0xcf, 0xe3, 0x1a, 0x3b, 0xf1, 0xb1, 0xcb, 0xe2,
    -	0x23, 0x7d, 0xb1, 0x9a, 0xde, 0x55, 0xab, 0xc9, 0x3a, 0xcb, 0xb3, 0xa1, 0x92, 0x15, 0xe0, 0x5b,
    -	0x60, 0xcd, 0x27, 0x98, 0x51, 0x57, 0xd6, 0x73, 0x33, 0xcd, 0x0e, 0x92, 0x56, 0xa4, 0xbc, 0xf0,
    -	0x6d, 0xb0, 0x3e, 0x23, 0x8c, 0xe1, 0x29, 0x91, 0x8a, 0xd3, 0x34, 0xb6, 0x15, 0x70, 0xfd, 0x38,
    -	0x36, 0xa3, 0xb9, 0xbf, 0xf7, 0xbb, 0x1a, 0x58, 0x7f, 0x35, 0xdd, 0xef, 0x3b, 0xf9, 0xee, 0xd7,
    -	0xa9, 0xaa, 0xbc, 0x8a, 0xce, 0xf7, 0x9b, 0x86, 0xdc, 0xa8, 0xec, 0x7a, 0xf7, 0x40, 0xcb, 0xc3,
    -	0x3e, 0x76, 0x1c, 0xe2, 0xd8, 0x6c, 0x26, 0xf7, 0x5a, 0x37, 0xb6, 0x85, 0x2e, 0x0f, 0x53, 0x33,
    -	0xca, 0x62, 0x44, 0x88, 0x49, 0x67, 0x9e, 0x43, 0xc4, 0x65, 0xc6, 0xe5, 0xa6, 0x42, 0x0e, 0x53,
    -	0x33, 0xca, 0x62, 0xe0, 0x13, 0x70, 0x2b, 0x56, 0xb0, 0x62, 0x07, 0x5c, 0x91, 0x1d, 0xf0, 0x4b,
    -	0x51, 0xa8, 0xdd, 0x7a, 0x50, 0x06, 0x40, 0xe5, 0x71, 0x70, 0x0a, 0xda, 0x1e, 0xb5, 0x84, 0x38,
    -	0x07, 0x3e, 0x51, 0xcd, 0xaf, 0x25, 0xef, 0xf9, 0xcd, 0xd2, 0xcb, 0x18, 0x16, 0xc0, 0xb1, 0x06,
    -	0x16, 0xad, 0x68, 0x81, 0x14, 0xde, 0x07, 0x1b, 0x63, 0x6c, 0x9e, 0xd1, 0xc9, 0x24, 0xdb, 0x1a,
    -	0xda, 0x51, 0xa8, 0x6d, 0x18, 0x19, 0x3b, 0xca, 0xa1, 0xe0, 0x00, 0xec, 0x64, 0xbf, 0x87, 0xc4,
    -	0x7f, 0xec, 0x5a, 0xe4, 0x59, 0x67, 0x43, 0x46, 0x77, 0xa2, 0x50, 0xdb, 0x31, 0x4a, 0xfc, 0xa8,
    -	0x34, 0x0a, 0x7e, 0x00, 0xda, 0x33, 0xfc, 0x2c, 0xee, 0x44, 0xd2, 0x42, 0x58, 0x67, 0x53, 0x32,
    -	0xc9, 0x53, 0x1c, 0x17, 0x7c, 0x68, 0x01, 0x0d, 0x7f, 0x0a, 0x1a, 0x8c, 0x38, 0xc4, 0xe4, 0xd4,
    -	0x57, 0x6f, 0xeb, 0xbd, 0x6b, 0x96, 0x23, 0x1e, 0x13, 0x67, 0xa4, 0x42, 0xe3, 0x11, 0x67, 0xfe,
    -	0x85, 0x12, 0x4a, 0xf8, 0x4d, 0xb0, 0x35, 0xc3, 0x6e, 0x80, 0x13, 0xa4, 0x7c, 0x54, 0x0d, 0x03,
    -	0x46, 0xa1, 0xb6, 0x75, 0x9c, 0xf3, 0xa0, 0x02, 0x12, 0xfe, 0x10, 0x34, 0xf8, 0x7c, 0x7e, 0x58,
    -	0x93, 0x5b, 0x2b, 0xed, 0x90, 0x43, 0x6a, 0xe5, 0xc6, 0x87, 0xe4, 0x79, 0x24, 0xb3, 0x43, 0x42,
    -	0x23, 0x26, 0x2e, 0xce, 0x1d, 0x55, 0x2a, 0x0f, 0x26, 0x9c, 0xf8, 0x8f, 0x6c, 0xd7, 0x66, 0xa7,
    -	0xc4, 0x92, 0xa3, 0x5a, 0x3d, 0x9e, 0xb8, 0x4e, 0x4e, 0x06, 0x65, 0x10, 0x54, 0x15, 0x0b, 0x07,
    -	0x60, 0x2b, 0xad, 0xe9, 0x63, 0x6a, 0x91, 0x4e, 0x53, 0x2a, 0xc2, 0x1b, 0xe2, 0x94, 0x87, 0x39,
    -	0xcf, 0xe5, 0x82, 0x05, 0x15, 0x62, 0xb3, 0x13, 0x16, 0xb8, 0x62, 0xc2, 0xb2, 0xc0, 0x8e, 0x47,
    -	0x2d, 0x44, 0x3c, 0x07, 0x9b, 0x64, 0x46, 0x5c, 0xae, 0x8a, 0x7d, 0x4b, 0x2e, 0xfd, 0xae, 0xa8,
    -	0xa4, 0x61, 0x89, 0xff, 0xb2, 0xc2, 0x8e, 0x4a, 0xd9, 0x7a, 0xff, 0xae, 0x83, 0x66, 0x3a, 0xb2,
    -	0x3c, 0x05, 0xc0, 0x9c, 0xf7, 0x05, 0xa6, 0xc6, 0x96, 0xd7, 0xab, 0x34, 0x26, 0xe9, 0x20, 0x69,
    -	0xbb, 0x4d, 0x4c, 0x0c, 0x65, 0x88, 0xe0, 0x8f, 0x41, 0x53, 0x0e, 0xb3, 0x52, 0xe1, 0x97, 0x5f,
    -	0x5a, 0xe1, 0x37, 0xa3, 0x50, 0x6b, 0x8e, 0xe6, 0x04, 0x28, 0xe5, 0x82, 0x93, 0x6c, 0x62, 0xbe,
    -	0x60, 0xb7, 0x82, 0xf9, 0x24, 0xca, 0x25, 0x0a, 0xac, 0xa2, 0x67, 0xa8, 0x51, 0x6e, 0x55, 0x96,
    -	0x51, 0xd5, 0x94, 0xd6, 0x07, 0x4d, 0x39, 0x76, 0x12, 0x8b, 0x58, 0xf2, 0x25, 0xd4, 0x8d, 0x1b,
    -	0x0a, 0xda, 0x1c, 0xcd, 0x1d, 0x28, 0xc5, 0x08, 0xe2, 0x78, 0x9e, 0x54, 0x53, 0x6d, 0x42, 0x1c,
    -	0xbf, 0x62, 0xa4, 0xbc, 0x42, 0x79, 0x39, 0xf1, 0x67, 0xb6, 0x8b, 0xc5, 0x7f, 0x04, 0x52, 0xf0,
    -	0x94, 0xf2, 0x9e, 0xa4, 0x66, 0x94, 0xc5, 0xc0, 0x87, 0xa0, 0xad, 0x4e, 0x91, 0x6a, 0xc7, 0xba,
    -	0xac, 0x9d, 0x8e, 0x5a, 0xa4, 0x7d, 0x58, 0xf0, 0xa3, 0x85, 0x08, 0xf8, 0x3e, 0xd8, 0x9c, 0xe4,
    -	0xe4, 0x07, 0x48, 0x8a, 0x1b, 0xa2, 0xbd, 0xe7, 0xb5, 0x27, 0x8f, 0x83, 0xbf, 0xae, 0x81, 0x3b,
    -	0x81, 0x6b, 0xd2, 0xc0, 0xe5, 0xc4, 0x9a, 0x6f, 0x92, 0x58, 0x43, 0x6a, 0x31, 0xf9, 0x16, 0x5b,
    -	0x07, 0xef, 0x94, 0x16, 0xd6, 0xd3, 0xf2, 0x98, 0xf8, 0xe5, 0x56, 0x38, 0x51, 0xd5, 0x4a, 0x50,
    -	0x03, 0x75, 0x9f, 0x60, 0xeb, 0x42, 0x3e, 0xd8, 0xba, 0xd1, 0x14, 0x1d, 0x11, 0x09, 0x03, 0x8a,
    -	0xed, 0xbd, 0x3f, 0xd4, 0xc0, 0x76, 0xe1, 0x1f, 0x94, 0xff, 0xff, 0x09, 0xb4, 0x37, 0x06, 0x0b,
    -	0x1d, 0x0c, 0x7e, 0x04, 0xea, 0x7e, 0xe0, 0x90, 0xf9, 0xb3, 0x7d, 0xfb, 0x5a, 0xdd, 0x10, 0x05,
    -	0x0e, 0x49, 0x67, 0x05, 0xf1, 0xc5, 0x50, 0x4c, 0xd3, 0xfb, 0x5b, 0x0d, 0xbc, 0x55, 0x84, 0x3f,
    -	0x71, 0xbf, 0xf7, 0xcc, 0xe6, 0x87, 0xd4, 0x22, 0x0c, 0x91, 0x5f, 0x04, 0xb6, 0x2f, 0xa5, 0x44,
    -	0x14, 0x89, 0x49, 0x5d, 0x8e, 0xc5, 0xb5, 0x7c, 0x84, 0x67, 0xf3, 0x01, 0x56, 0x16, 0xc9, 0x61,
    -	0xd6, 0x81, 0xf2, 0x38, 0x38, 0x02, 0x0d, 0xea, 0x11, 0x1f, 0x8b, 0xc6, 0x11, 0x0f, 0xaf, 0xef,
    -	0xcf, 0xd5, 0xfd, 0x89, 0xb2, 0x5f, 0x86, 0xda, 0xdd, 0x2b, 0xb6, 0x31, 0x87, 0xa1, 0x84, 0x08,
    -	0xf6, 0xc0, 0xda, 0x39, 0x76, 0x02, 0x22, 0x66, 0x8c, 0x95, 0xfd, 0xba, 0x01, 0xc4, 0x7b, 0xfa,
    -	0x91, 0xb4, 0x20, 0xe5, 0xe9, 0xfd, 0xb9, 0xf4, 0x70, 0x43, 0x6a, 0xa5, 0x0a, 0x36, 0xc4, 0x9c,
    -	0x13, 0xdf, 0x85, 0x1f, 0xe6, 0x86, 0xf2, 0xf7, 0x0a, 0x43, 0xf9, 0xdd, 0x92, 0xd1, 0x3a, 0x4b,
    -	0xf3, 0xbf, 0x9a, 0xd3, 0x7b, 0xcf, 0x97, 0xc1, 0x4e, 0x59, 0x36, 0xe1, 0x07, 0xb1, 0x56, 0x51,
    -	0x57, 0xed, 0x78, 0x3f, 0xab, 0x55, 0xd4, 0xbd, 0x0c, 0xb5, 0xdb, 0xc5, 0xb8, 0xd8, 0x83, 0x54,
    -	0x1c, 0x74, 0x41, 0x8b, 0xa6, 0x37, 0xac, 0x8a, 0xf4, 0x5b, 0xd7, 0xaa, 0xa7, 0xf2, 0x02, 0x89,
    -	0x95, 0x2a, 0xeb, 0xcb, 0x2e, 0x00, 0x7f, 0x09, 0xb6, 0x69, 0xfe, 0xee, 0x65, 0xe6, 0xae, 0xbf,
    -	0x66, 0x59, 0xde, 0x8c, 0x3b, 0xea, 0xdc, 0xdb, 0x05, 0x3f, 0x2a, 0x2e, 0xd6, 0xfb, 0x63, 0x0d,
    -	0x54, 0x29, 0x0b, 0x1c, 0x66, 0x15, 0x5d, 0xbc, 0xac, 0xa6, 0x71, 0x90, 0x53, 0xf3, 0xcb, 0x50,
    -	0x7b, 0xbd, 0xea, 0x67, 0x43, 0x91, 0x76, 0xa6, 0x3f, 0x7d, 0xfc, 0x30, 0x2b, 0xf9, 0x1f, 0x26,
    -	0x92, 0xbf, 0x2c, 0xe9, 0xfa, 0xa9, 0xdc, 0x5f, 0x8f, 0x4b, 0x85, 0x1b, 0xdf, 0x78, 0xfe, 0xa2,
    -	0xbb, 0xf4, 0xd9, 0x8b, 0xee, 0xd2, 0xe7, 0x2f, 0xba, 0x4b, 0xbf, 0x8a, 0xba, 0xb5, 0xe7, 0x51,
    -	0xb7, 0xf6, 0x59, 0xd4, 0xad, 0x7d, 0x1e, 0x75, 0x6b, 0x7f, 0x8f, 0xba, 0xb5, 0xdf, 0xfe, 0xa3,
    -	0xbb, 0xf4, 0xf1, 0xcd, 0x92, 0xdf, 0x71, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x43, 0xdf, 0xa6,
    -	0x7c, 0xf6, 0x15, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/batch/v1/generated.proto", fileDescriptor_79228dc2c4001a22)
    +}
    +
    +var fileDescriptor_79228dc2c4001a22 = []byte{
    +	// 1882 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcd, 0x6f, 0xdb, 0xc8,
    +	0x15, 0x37, 0x6d, 0xcb, 0x96, 0x46, 0xfe, 0x90, 0x27, 0x4e, 0xa2, 0xba, 0x0b, 0xd1, 0xab, 0xec,
    +	0x06, 0xde, 0x76, 0x2b, 0x6d, 0xbc, 0x41, 0xb7, 0x1f, 0x68, 0xb1, 0xa1, 0xd2, 0x6c, 0xe3, 0x95,
    +	0x37, 0xea, 0xc8, 0x69, 0x81, 0xdd, 0xb4, 0xe8, 0x88, 0x1c, 0xc9, 0xdc, 0x50, 0x1c, 0x96, 0x1c,
    +	0x1a, 0xf1, 0xa5, 0x28, 0xd0, 0x7f, 0xa0, 0x3d, 0xf6, 0x1f, 0xe8, 0xb1, 0x97, 0xf6, 0xdc, 0xde,
    +	0x8a, 0x1c, 0x17, 0x3d, 0x2d, 0x7a, 0x20, 0x1a, 0xf6, 0x0f, 0xe8, 0xdd, 0x45, 0x81, 0x62, 0x86,
    +	0xc3, 0x4f, 0x91, 0x5e, 0x67, 0x81, 0x06, 0xbd, 0x89, 0xef, 0xfd, 0xde, 0x6f, 0x1e, 0xe7, 0x7d,
    +	0x52, 0xe0, 0xd6, 0xd3, 0x6f, 0x79, 0x3d, 0x93, 0xf6, 0xb1, 0x63, 0xf6, 0x27, 0x98, 0xe9, 0xa7,
    +	0xfd, 0xb3, 0x3b, 0xfd, 0x19, 0xb1, 0x89, 0x8b, 0x19, 0x31, 0x7a, 0x8e, 0x4b, 0x19, 0x85, 0xd7,
    +	0x22, 0x50, 0x0f, 0x3b, 0x66, 0x4f, 0x80, 0x7a, 0x67, 0x77, 0xf6, 0xbe, 0x31, 0x33, 0xd9, 0xa9,
    +	0x3f, 0xe9, 0xe9, 0x74, 0xde, 0x9f, 0xd1, 0x19, 0xed, 0x0b, 0xec, 0xc4, 0x9f, 0x8a, 0x27, 0xf1,
    +	0x20, 0x7e, 0x45, 0x1c, 0x7b, 0xdd, 0xcc, 0x41, 0x3a, 0x75, 0x49, 0xc9, 0x39, 0x7b, 0x77, 0x53,
    +	0xcc, 0x1c, 0xeb, 0xa7, 0xa6, 0x4d, 0xdc, 0xf3, 0xbe, 0xf3, 0x74, 0xc6, 0x05, 0x5e, 0x7f, 0x4e,
    +	0x18, 0x2e, 0xb3, 0xea, 0x57, 0x59, 0xb9, 0xbe, 0xcd, 0xcc, 0x39, 0x59, 0x30, 0xf8, 0xe6, 0x17,
    +	0x19, 0x78, 0xfa, 0x29, 0x99, 0xe3, 0xa2, 0x5d, 0xf7, 0xdf, 0x0a, 0x58, 0x1f, 0xb8, 0xd4, 0x3e,
    +	0xa2, 0x13, 0xf8, 0x73, 0x50, 0xe7, 0xfe, 0x18, 0x98, 0xe1, 0xb6, 0xb2, 0xaf, 0x1c, 0x34, 0x0f,
    +	0xdf, 0xe9, 0xa5, 0xb7, 0x94, 0xd0, 0xf6, 0x9c, 0xa7, 0x33, 0x2e, 0xf0, 0x7a, 0x1c, 0xdd, 0x3b,
    +	0xbb, 0xd3, 0x7b, 0x34, 0xf9, 0x94, 0xe8, 0xec, 0x98, 0x30, 0xac, 0xc1, 0xe7, 0x81, 0xba, 0x14,
    +	0x06, 0x2a, 0x48, 0x65, 0x28, 0x61, 0x85, 0x1a, 0x58, 0xf5, 0x1c, 0xa2, 0xb7, 0x97, 0x05, 0xfb,
    +	0x7e, 0xaf, 0x24, 0x06, 0x3d, 0xe9, 0xcd, 0xd8, 0x21, 0xba, 0xb6, 0x21, 0xd9, 0x56, 0xf9, 0x13,
    +	0x12, 0xb6, 0xf0, 0x08, 0xac, 0x79, 0x0c, 0x33, 0xdf, 0x6b, 0xaf, 0x08, 0x96, 0xee, 0xa5, 0x2c,
    +	0x02, 0xa9, 0x6d, 0x49, 0x9e, 0xb5, 0xe8, 0x19, 0x49, 0x86, 0xee, 0x1f, 0x14, 0xd0, 0x94, 0xc8,
    +	0xa1, 0xe9, 0x31, 0xf8, 0x64, 0xe1, 0x06, 0x7a, 0x57, 0xbb, 0x01, 0x6e, 0x2d, 0xde, 0xbf, 0x25,
    +	0x4f, 0xaa, 0xc7, 0x92, 0xcc, 0xdb, 0xdf, 0x03, 0x35, 0x93, 0x91, 0xb9, 0xd7, 0x5e, 0xde, 0x5f,
    +	0x39, 0x68, 0x1e, 0xbe, 0x76, 0x99, 0xe3, 0xda, 0xa6, 0x24, 0xaa, 0x3d, 0xe4, 0x26, 0x28, 0xb2,
    +	0xec, 0xfe, 0x6d, 0x35, 0x71, 0x98, 0x5f, 0x09, 0x7c, 0x1b, 0xd4, 0x79, 0x60, 0x0d, 0xdf, 0x22,
    +	0xc2, 0xe1, 0x46, 0xea, 0xc0, 0x58, 0xca, 0x51, 0x82, 0x80, 0x07, 0xa0, 0xce, 0x73, 0xe1, 0x63,
    +	0x6a, 0x93, 0x76, 0x5d, 0xa0, 0x37, 0x38, 0xf2, 0x44, 0xca, 0x50, 0xa2, 0x85, 0x8f, 0xc1, 0x4d,
    +	0x8f, 0x61, 0x97, 0x99, 0xf6, 0xec, 0x3e, 0xc1, 0x86, 0x65, 0xda, 0x64, 0x4c, 0x74, 0x6a, 0x1b,
    +	0x9e, 0x88, 0xdd, 0x8a, 0xf6, 0xd5, 0x30, 0x50, 0x6f, 0x8e, 0xcb, 0x21, 0xa8, 0xca, 0x16, 0x3e,
    +	0x01, 0x3b, 0x3a, 0xb5, 0x75, 0xdf, 0x75, 0x89, 0xad, 0x9f, 0x8f, 0xa8, 0x65, 0xea, 0xe7, 0x22,
    +	0x8c, 0x0d, 0xad, 0x27, 0xfd, 0xde, 0x19, 0x14, 0x01, 0x17, 0x65, 0x42, 0xb4, 0x48, 0x04, 0xdf,
    +	0x04, 0xeb, 0x9e, 0xef, 0x39, 0xc4, 0x36, 0xda, 0xab, 0xfb, 0xca, 0x41, 0x5d, 0x6b, 0x86, 0x81,
    +	0xba, 0x3e, 0x8e, 0x44, 0x28, 0xd6, 0xc1, 0x4f, 0x40, 0xf3, 0x53, 0x3a, 0x39, 0x21, 0x73, 0xc7,
    +	0xc2, 0x8c, 0xb4, 0x6b, 0x22, 0xce, 0x6f, 0x94, 0x06, 0xe3, 0x28, 0xc5, 0x89, 0x7c, 0xbc, 0x26,
    +	0x9d, 0x6c, 0x66, 0x14, 0x28, 0xcb, 0x06, 0x7f, 0x06, 0xf6, 0x3c, 0x5f, 0xd7, 0x89, 0xe7, 0x4d,
    +	0x7d, 0xeb, 0x88, 0x4e, 0xbc, 0x1f, 0x9a, 0x1e, 0xa3, 0xee, 0xf9, 0xd0, 0x9c, 0x9b, 0xac, 0xbd,
    +	0xb6, 0xaf, 0x1c, 0xd4, 0xb4, 0x4e, 0x18, 0xa8, 0x7b, 0xe3, 0x4a, 0x14, 0xba, 0x84, 0x01, 0x22,
    +	0x70, 0x63, 0x8a, 0x4d, 0x8b, 0x18, 0x0b, 0xdc, 0xeb, 0x82, 0x7b, 0x2f, 0x0c, 0xd4, 0x1b, 0x0f,
    +	0x4a, 0x11, 0xa8, 0xc2, 0xb2, 0xfb, 0xe7, 0x65, 0xb0, 0x99, 0xab, 0x17, 0xf8, 0x21, 0x58, 0xc3,
    +	0x3a, 0x33, 0xcf, 0x78, 0x52, 0xf1, 0x54, 0xbd, 0x95, 0xbd, 0x1d, 0xde, 0xe9, 0xd2, 0xaa, 0x47,
    +	0x64, 0x4a, 0x78, 0x10, 0x48, 0x5a, 0x64, 0xf7, 0x84, 0x29, 0x92, 0x14, 0xd0, 0x02, 0x2d, 0x0b,
    +	0x7b, 0x2c, 0xce, 0x47, 0x9e, 0x6d, 0x22, 0x3e, 0xcd, 0xc3, 0xaf, 0x5d, 0xad, 0xb8, 0xb8, 0x85,
    +	0xb6, 0x1b, 0x06, 0x6a, 0x6b, 0x58, 0xe0, 0x41, 0x0b, 0xcc, 0xd0, 0x05, 0x50, 0xc8, 0x92, 0x2b,
    +	0x14, 0xe7, 0xd5, 0x5e, 0xfa, 0xbc, 0x1b, 0x61, 0xa0, 0xc2, 0xe1, 0x02, 0x13, 0x2a, 0x61, 0xef,
    +	0xfe, 0x4b, 0x01, 0x2b, 0xaf, 0xa6, 0x81, 0x7e, 0x3f, 0xd7, 0x40, 0x5f, 0xab, 0x4a, 0xda, 0xca,
    +	0xe6, 0xf9, 0xa0, 0xd0, 0x3c, 0x3b, 0x95, 0x0c, 0x97, 0x37, 0xce, 0xbf, 0xae, 0x80, 0x8d, 0x23,
    +	0x3a, 0x19, 0x50, 0xdb, 0x30, 0x99, 0x49, 0x6d, 0x78, 0x17, 0xac, 0xb2, 0x73, 0x27, 0x6e, 0x42,
    +	0xfb, 0xf1, 0xd1, 0x27, 0xe7, 0x0e, 0xb9, 0x08, 0xd4, 0x56, 0x16, 0xcb, 0x65, 0x48, 0xa0, 0xe1,
    +	0x30, 0x71, 0x67, 0x59, 0xd8, 0xdd, 0xcd, 0x1f, 0x77, 0x11, 0xa8, 0x25, 0x23, 0xb6, 0x97, 0x30,
    +	0xe5, 0x9d, 0x82, 0x33, 0xb0, 0xc9, 0x83, 0x33, 0x72, 0xe9, 0x24, 0xca, 0xb2, 0x95, 0x97, 0x8e,
    +	0xfa, 0x75, 0xe9, 0xc0, 0xe6, 0x30, 0x4b, 0x84, 0xf2, 0xbc, 0xf0, 0x2c, 0xca, 0xb1, 0x13, 0x17,
    +	0xdb, 0x5e, 0xf4, 0x4a, 0x5f, 0x2e, 0xa7, 0xf7, 0xe4, 0x69, 0x22, 0xcf, 0xf2, 0x6c, 0xa8, 0xe4,
    +	0x04, 0x78, 0x1b, 0xac, 0xb9, 0x04, 0x7b, 0xd4, 0x16, 0xf9, 0xdc, 0x48, 0xa3, 0x83, 0x84, 0x14,
    +	0x49, 0x2d, 0x7c, 0x0b, 0xac, 0xcf, 0x89, 0xe7, 0xe1, 0x19, 0x11, 0x1d, 0xa7, 0xa1, 0x6d, 0x4b,
    +	0xe0, 0xfa, 0x71, 0x24, 0x46, 0xb1, 0xbe, 0xfb, 0x7b, 0x05, 0xac, 0xbf, 0x9a, 0xe9, 0xf7, 0xbd,
    +	0xfc, 0xf4, 0x6b, 0x57, 0x65, 0x5e, 0xc5, 0xe4, 0xfb, 0x5d, 0x43, 0x38, 0x2a, 0xa6, 0xde, 0x1d,
    +	0xd0, 0x74, 0xb0, 0x8b, 0x2d, 0x8b, 0x58, 0xa6, 0x37, 0x17, 0xbe, 0xd6, 0xb4, 0x6d, 0xde, 0x97,
    +	0x47, 0xa9, 0x18, 0x65, 0x31, 0xdc, 0x44, 0xa7, 0x73, 0xc7, 0x22, 0xfc, 0x32, 0xa3, 0x74, 0x93,
    +	0x26, 0x83, 0x54, 0x8c, 0xb2, 0x18, 0xf8, 0x08, 0x5c, 0x8f, 0x3a, 0x58, 0x71, 0x02, 0xae, 0x88,
    +	0x09, 0xf8, 0x95, 0x30, 0x50, 0xaf, 0xdf, 0x2b, 0x03, 0xa0, 0x72, 0x3b, 0x38, 0x03, 0x2d, 0x87,
    +	0x1a, 0xbc, 0x39, 0xfb, 0x2e, 0x91, 0xc3, 0xaf, 0x29, 0xee, 0xf9, 0xcd, 0xd2, 0xcb, 0x18, 0x15,
    +	0xc0, 0x51, 0x0f, 0x2c, 0x4a, 0xd1, 0x02, 0x29, 0xfc, 0x04, 0x6c, 0xca, 0x11, 0x22, 0x4f, 0x69,
    +	0x5d, 0xb2, 0x29, 0x8d, 0xb3, 0x48, 0x6d, 0x87, 0x27, 0x7f, 0x4e, 0x84, 0xf2, 0x5c, 0xf0, 0x2e,
    +	0xd8, 0x98, 0x60, 0xfd, 0x29, 0x9d, 0x4e, 0xb3, 0x73, 0xa7, 0x15, 0x06, 0xea, 0x86, 0x96, 0x91,
    +	0xa3, 0x1c, 0x0a, 0x0e, 0xc1, 0x6e, 0xf6, 0x79, 0x44, 0xdc, 0x87, 0xb6, 0x41, 0x9e, 0xb5, 0x37,
    +	0x84, 0x75, 0x3b, 0x0c, 0xd4, 0x5d, 0xad, 0x44, 0x8f, 0x4a, 0xad, 0xe0, 0xfb, 0xa0, 0x35, 0xc7,
    +	0xcf, 0xa2, 0x31, 0x27, 0x24, 0xc4, 0x6b, 0x6f, 0x0a, 0x26, 0x71, 0x45, 0xc7, 0x05, 0x1d, 0x5a,
    +	0x40, 0xc3, 0x9f, 0x82, 0xba, 0x47, 0x2c, 0xa2, 0x33, 0xea, 0xca, 0xc2, 0x7d, 0xf7, 0x8a, 0xb9,
    +	0x8e, 0x27, 0xc4, 0x1a, 0x4b, 0xd3, 0x68, 0x7f, 0x8a, 0x9f, 0x50, 0x42, 0x09, 0xbf, 0x03, 0xb6,
    +	0xe6, 0xd8, 0xf6, 0x71, 0x82, 0x14, 0x15, 0x5b, 0xd7, 0x60, 0x18, 0xa8, 0x5b, 0xc7, 0x39, 0x0d,
    +	0x2a, 0x20, 0xe1, 0x8f, 0x40, 0x9d, 0xc5, 0xcb, 0xc9, 0x9a, 0x70, 0xad, 0x74, 0xfc, 0x8e, 0xa8,
    +	0x91, 0xdb, 0x4d, 0x92, 0xda, 0x4b, 0x16, 0x93, 0x84, 0x86, 0xaf, 0x73, 0x8c, 0x59, 0x32, 0x0f,
    +	0xef, 0x4d, 0x19, 0x71, 0x1f, 0x98, 0xb6, 0xe9, 0x9d, 0x12, 0x43, 0xec, 0x81, 0xb5, 0x68, 0x9d,
    +	0x3b, 0x39, 0x19, 0x96, 0x41, 0x50, 0x95, 0x2d, 0x1c, 0x82, 0xad, 0xb4, 0x60, 0x8e, 0xa9, 0x41,
    +	0xda, 0x0d, 0xd1, 0x6e, 0xde, 0xe0, 0x6f, 0x39, 0xc8, 0x69, 0x2e, 0x16, 0x24, 0xa8, 0x60, 0x9b,
    +	0x5d, 0xdf, 0xc0, 0x25, 0xeb, 0x9b, 0x01, 0x76, 0x1d, 0x6a, 0x20, 0xe2, 0x58, 0x58, 0x27, 0x73,
    +	0x62, 0x33, 0x99, 0xe3, 0x5b, 0xe2, 0xe8, 0x77, 0x78, 0x26, 0x8d, 0x4a, 0xf4, 0x17, 0x15, 0x72,
    +	0x54, 0xca, 0x06, 0xbf, 0x0e, 0x1a, 0x73, 0x6c, 0xe3, 0x19, 0x31, 0xb4, 0xf3, 0xf6, 0xb6, 0xa0,
    +	0xde, 0x0c, 0x03, 0xb5, 0x71, 0x1c, 0x0b, 0x51, 0xaa, 0xef, 0xfe, 0xa7, 0x06, 0x1a, 0xe9, 0xf2,
    +	0xf4, 0x18, 0x00, 0x3d, 0x9e, 0x50, 0x9e, 0x5c, 0xa0, 0x5e, 0xaf, 0xea, 0x76, 0xc9, 0x2c, 0x4b,
    +	0x07, 0x7f, 0x22, 0xf2, 0x50, 0x86, 0x08, 0xfe, 0x04, 0x34, 0xc4, 0x5a, 0x2d, 0x66, 0xcd, 0xf2,
    +	0x4b, 0xcf, 0x1a, 0xe1, 0xfd, 0x38, 0x26, 0x40, 0x29, 0x17, 0x9c, 0x66, 0xa3, 0xf8, 0x25, 0xe7,
    +	0x26, 0xcc, 0x47, 0x5c, 0x1c, 0x51, 0x60, 0xe5, 0xd3, 0x4b, 0x2e, 0x95, 0xab, 0x22, 0xe7, 0xaa,
    +	0xf6, 0xc5, 0x3e, 0x68, 0x88, 0x8e, 0x43, 0x0c, 0x62, 0x88, 0xb2, 0xa9, 0x69, 0x3b, 0x12, 0xda,
    +	0x18, 0xc7, 0x0a, 0x94, 0x62, 0x38, 0x71, 0xb4, 0xd9, 0xca, 0xfd, 0x3a, 0x21, 0x8e, 0x4a, 0x1e,
    +	0x49, 0x2d, 0x9f, 0x01, 0x8c, 0xb8, 0x73, 0xd3, 0xc6, 0xfc, 0xdb, 0x44, 0xb4, 0x5e, 0x39, 0x03,
    +	0x4e, 0x52, 0x31, 0xca, 0x62, 0xe0, 0x7d, 0xd0, 0x92, 0x6f, 0x91, 0x36, 0x9a, 0x75, 0x91, 0x0d,
    +	0x6d, 0x79, 0x48, 0x6b, 0x50, 0xd0, 0xa3, 0x05, 0x0b, 0xf8, 0x1e, 0xd8, 0x9c, 0xe6, 0x7a, 0x15,
    +	0x10, 0x14, 0xa2, 0xd7, 0xe6, 0x1b, 0x55, 0x1e, 0x07, 0x7f, 0xad, 0x80, 0x9b, 0xbe, 0xad, 0x53,
    +	0xdf, 0x66, 0xc4, 0x88, 0x9d, 0x24, 0xc6, 0x88, 0x1a, 0x9e, 0x28, 0xdc, 0xe6, 0xe1, 0xdb, 0xa5,
    +	0x89, 0xf5, 0xb8, 0xdc, 0x26, 0x2a, 0xf3, 0x0a, 0x25, 0xaa, 0x3a, 0x09, 0xaa, 0xa0, 0xe6, 0x12,
    +	0x6c, 0x9c, 0x8b, 0xea, 0xae, 0x69, 0x0d, 0x3e, 0x9b, 0x11, 0x17, 0xa0, 0x48, 0xde, 0xfd, 0xa3,
    +	0x02, 0xb6, 0x0b, 0x9f, 0x4a, 0xff, 0xff, 0xbb, 0x70, 0x77, 0x02, 0x16, 0x66, 0x29, 0xfc, 0x08,
    +	0xd4, 0x5c, 0xdf, 0x22, 0x71, 0xd9, 0xbe, 0x75, 0xa5, 0xb9, 0x8c, 0x7c, 0x8b, 0xa4, 0x5b, 0x0b,
    +	0x7f, 0xf2, 0x50, 0x44, 0xd3, 0xfd, 0xbb, 0x02, 0x6e, 0x17, 0xe1, 0x8f, 0xec, 0x1f, 0x3c, 0x33,
    +	0xd9, 0x80, 0x1a, 0xc4, 0x43, 0xe4, 0x17, 0xbe, 0xe9, 0x8a, 0xbe, 0xc3, 0x93, 0x44, 0xa7, 0x36,
    +	0xc3, 0xfc, 0x5a, 0x3e, 0xc2, 0xf3, 0x78, 0x95, 0x16, 0x49, 0x32, 0xc8, 0x2a, 0x50, 0x1e, 0x07,
    +	0xc7, 0xa0, 0x4e, 0x1d, 0xe2, 0x62, 0x3e, 0x65, 0xa2, 0x35, 0xfa, 0xbd, 0x78, 0x14, 0x3c, 0x92,
    +	0xf2, 0x8b, 0x40, 0xbd, 0x75, 0x89, 0x1b, 0x31, 0x0c, 0x25, 0x44, 0xb0, 0x0b, 0xd6, 0xce, 0xb0,
    +	0xe5, 0x13, 0xbe, 0xed, 0xac, 0x1c, 0xd4, 0x34, 0xc0, 0xeb, 0xe9, 0xc7, 0x42, 0x82, 0xa4, 0xa6,
    +	0xfb, 0x97, 0xd2, 0x97, 0x1b, 0x51, 0x23, 0xed, 0x60, 0x23, 0xcc, 0x18, 0x71, 0x6d, 0xf8, 0x41,
    +	0xee, 0xf3, 0xe0, 0xdd, 0xc2, 0xe7, 0xc1, 0xad, 0x92, 0x25, 0x3f, 0x4b, 0xf3, 0xbf, 0xfa, 0x62,
    +	0xe8, 0x3e, 0x5f, 0x06, 0xbb, 0x65, 0xd1, 0x84, 0xef, 0x47, 0xbd, 0x8a, 0xda, 0xd2, 0xe3, 0x83,
    +	0x6c, 0xaf, 0xa2, 0xf6, 0x45, 0xa0, 0xde, 0x28, 0xda, 0x45, 0x1a, 0x24, 0xed, 0xa0, 0x0d, 0x9a,
    +	0x34, 0xbd, 0x61, 0x99, 0xa4, 0xdf, 0xbd, 0x52, 0x3e, 0x95, 0x27, 0x48, 0xd4, 0xa9, 0xb2, 0xba,
    +	0xec, 0x01, 0xf0, 0x97, 0x60, 0x9b, 0xe6, 0xef, 0x5e, 0x44, 0xee, 0xea, 0x67, 0x96, 0xc5, 0x4d,
    +	0xbb, 0x29, 0xdf, 0x7b, 0xbb, 0xa0, 0x47, 0xc5, 0xc3, 0xba, 0x4f, 0x40, 0x7e, 0x6d, 0x84, 0x1f,
    +	0xe6, 0x4b, 0xe9, 0xf6, 0x17, 0x2f, 0x9f, 0x97, 0xd4, 0xd1, 0x6f, 0x15, 0xb0, 0xb3, 0x80, 0xe5,
    +	0x6b, 0x60, 0x32, 0x05, 0xe2, 0xd6, 0x1a, 0xc5, 0x4b, 0xac, 0x81, 0xe3, 0x82, 0x0e, 0x2d, 0xa0,
    +	0xf9, 0x9e, 0x96, 0xc8, 0x06, 0xbc, 0xf9, 0xc9, 0x2f, 0x03, 0x31, 0xcf, 0xc6, 0x39, 0x0d, 0x2a,
    +	0x20, 0xbb, 0x7f, 0x52, 0x40, 0x55, 0x2f, 0x85, 0xa3, 0xec, 0x0c, 0xe3, 0x17, 0xd0, 0xd0, 0x0e,
    +	0x73, 0xf3, 0xeb, 0x22, 0x50, 0x5f, 0xaf, 0xfa, 0xcb, 0x96, 0x27, 0xba, 0xd7, 0x7b, 0xfc, 0xf0,
    +	0x7e, 0x76, 0xc8, 0x7d, 0x90, 0x0c, 0xb9, 0x65, 0x41, 0xd7, 0x4f, 0x07, 0xdc, 0xd5, 0xb8, 0xa4,
    +	0xb9, 0xf6, 0xed, 0xe7, 0x2f, 0x3a, 0x4b, 0x9f, 0xbd, 0xe8, 0x2c, 0x7d, 0xfe, 0xa2, 0xb3, 0xf4,
    +	0xab, 0xb0, 0xa3, 0x3c, 0x0f, 0x3b, 0xca, 0x67, 0x61, 0x47, 0xf9, 0x3c, 0xec, 0x28, 0xff, 0x08,
    +	0x3b, 0xca, 0x6f, 0xfe, 0xd9, 0x59, 0xfa, 0xf8, 0x5a, 0xc9, 0x7f, 0xe8, 0xff, 0x0d, 0x00, 0x00,
    +	0xff, 0xff, 0x1e, 0x70, 0x68, 0xe1, 0x59, 0x17, 0x00, 0x00,
     }
     
     func (m *CronJob) Marshal() (dAtA []byte, err error) {
    @@ -1030,6 +1093,27 @@ func (m *JobSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.SuccessPolicy != nil {
    +		{
    +			size, err := m.SuccessPolicy.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1
    +		i--
    +		dAtA[i] = 0x82
    +	}
    +	if m.ManagedBy != nil {
    +		i -= len(*m.ManagedBy)
    +		copy(dAtA[i:], *m.ManagedBy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ManagedBy)))
    +		i--
    +		dAtA[i] = 0x7a
    +	}
     	if m.PodReplacementPolicy != nil {
     		i -= len(*m.PodReplacementPolicy)
     		copy(dAtA[i:], *m.PodReplacementPolicy)
    @@ -1449,6 +1533,78 @@ func (m *PodFailurePolicyRule) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *SuccessPolicy) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *SuccessPolicy) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *SuccessPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Rules) > 0 {
    +		for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *SuccessPolicyRule) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *SuccessPolicyRule) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *SuccessPolicyRule) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.SucceededCount != nil {
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.SucceededCount))
    +		i--
    +		dAtA[i] = 0x10
    +	}
    +	if m.SucceededIndexes != nil {
    +		i -= len(*m.SucceededIndexes)
    +		copy(dAtA[i:], *m.SucceededIndexes)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SucceededIndexes)))
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *UncountedTerminatedPods) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -1691,6 +1847,14 @@ func (m *JobSpec) Size() (n int) {
     		l = len(*m.PodReplacementPolicy)
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if m.ManagedBy != nil {
    +		l = len(*m.ManagedBy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.SuccessPolicy != nil {
    +		l = m.SuccessPolicy.Size()
    +		n += 2 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -1818,6 +1982,37 @@ func (m *PodFailurePolicyRule) Size() (n int) {
     	return n
     }
     
    +func (m *SuccessPolicy) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Rules) > 0 {
    +		for _, e := range m.Rules {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *SuccessPolicyRule) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.SucceededIndexes != nil {
    +		l = len(*m.SucceededIndexes)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.SucceededCount != nil {
    +		n += 1 + sovGenerated(uint64(*m.SucceededCount))
    +	}
    +	return n
    +}
    +
     func (m *UncountedTerminatedPods) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -1969,6 +2164,8 @@ func (this *JobSpec) String() string {
     		`BackoffLimitPerIndex:` + valueToStringGenerated(this.BackoffLimitPerIndex) + `,`,
     		`MaxFailedIndexes:` + valueToStringGenerated(this.MaxFailedIndexes) + `,`,
     		`PodReplacementPolicy:` + valueToStringGenerated(this.PodReplacementPolicy) + `,`,
    +		`ManagedBy:` + valueToStringGenerated(this.ManagedBy) + `,`,
    +		`SuccessPolicy:` + strings.Replace(this.SuccessPolicy.String(), "SuccessPolicy", "SuccessPolicy", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -2064,6 +2261,32 @@ func (this *PodFailurePolicyRule) String() string {
     	}, "")
     	return s
     }
    +func (this *SuccessPolicy) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForRules := "[]SuccessPolicyRule{"
    +	for _, f := range this.Rules {
    +		repeatedStringForRules += strings.Replace(strings.Replace(f.String(), "SuccessPolicyRule", "SuccessPolicyRule", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForRules += "}"
    +	s := strings.Join([]string{`&SuccessPolicy{`,
    +		`Rules:` + repeatedStringForRules + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *SuccessPolicyRule) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&SuccessPolicyRule{`,
    +		`SucceededIndexes:` + valueToStringGenerated(this.SucceededIndexes) + `,`,
    +		`SucceededCount:` + valueToStringGenerated(this.SucceededCount) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *UncountedTerminatedPods) String() string {
     	if this == nil {
     		return "nil"
    @@ -3658,6 +3881,75 @@ func (m *JobSpec) Unmarshal(dAtA []byte) error {
     			s := PodReplacementPolicy(dAtA[iNdEx:postIndex])
     			m.PodReplacementPolicy = &s
     			iNdEx = postIndex
    +		case 15:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ManagedBy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.ManagedBy = &s
    +			iNdEx = postIndex
    +		case 16:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SuccessPolicy", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.SuccessPolicy == nil {
    +				m.SuccessPolicy = &SuccessPolicy{}
    +			}
    +			if err := m.SuccessPolicy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -4690,6 +4982,193 @@ func (m *PodFailurePolicyRule) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *SuccessPolicy) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: SuccessPolicy: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: SuccessPolicy: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Rules = append(m.Rules, SuccessPolicyRule{})
    +			if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *SuccessPolicyRule) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: SuccessPolicyRule: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: SuccessPolicyRule: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SucceededIndexes", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.SucceededIndexes = &s
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SucceededCount", wireType)
    +			}
    +			var v int32
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int32(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.SucceededCount = &v
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func (m *UncountedTerminatedPods) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
    diff --git a/vendor/k8s.io/api/batch/v1/generated.proto b/vendor/k8s.io/api/batch/v1/generated.proto
    index f89977988929..361ebdca1241 100644
    --- a/vendor/k8s.io/api/batch/v1/generated.proto
    +++ b/vendor/k8s.io/api/batch/v1/generated.proto
    @@ -34,7 +34,7 @@ message CronJob {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of a cron job, including the schedule.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -52,7 +52,7 @@ message CronJobList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of CronJobs.
       repeated CronJob items = 2;
    @@ -113,15 +113,15 @@ message CronJobStatus {
       // A list of pointers to currently running jobs.
       // +optional
       // +listType=atomic
    -  repeated k8s.io.api.core.v1.ObjectReference active = 1;
    +  repeated .k8s.io.api.core.v1.ObjectReference active = 1;
     
       // Information when was the last time the job was successfully scheduled.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;
     
       // Information when was the last time the job successfully completed.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastSuccessfulTime = 5;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastSuccessfulTime = 5;
     }
     
     // Job represents the configuration of a single job.
    @@ -129,7 +129,7 @@ message Job {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of a job.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -152,11 +152,11 @@ message JobCondition {
     
       // Last time the condition was checked.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;
     
       // Last time the condition transit from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
     
       // (brief) reason for the condition's last transition.
       // +optional
    @@ -172,7 +172,7 @@ message JobList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of Jobs.
       repeated Job items = 2;
    @@ -213,11 +213,20 @@ message JobSpec {
       // checked against the backoffLimit. This field cannot be used in combination
       // with restartPolicy=OnFailure.
       //
    -  // This field is beta-level. It can be used when the `JobPodFailurePolicy`
    -  // feature gate is enabled (enabled by default).
       // +optional
       optional PodFailurePolicy podFailurePolicy = 11;
     
    +  // successPolicy specifies the policy when the Job can be declared as succeeded.
    +  // If empty, the default behavior applies - the Job is declared as succeeded
    +  // only when the number of succeeded pods equals to the completions.
    +  // When the field is specified, it must be immutable and works only for the Indexed Jobs.
    +  // Once the Job meets the SuccessPolicy, the lingering pods are terminated.
    +  //
    +  // This field is beta-level. To use this field, you must enable the
    +  // `JobSuccessPolicy` feature gate (enabled by default).
    +  // +optional
    +  optional SuccessPolicy successPolicy = 16;
    +
       // Specifies the number of retries before marking this job failed.
       // Defaults to 6
       // +optional
    @@ -251,7 +260,7 @@ message JobSpec {
       // Normally, the system sets this field for you.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
     
       // manualSelector controls generation of pod labels and pod selectors.
       // Leave `manualSelector` unset unless you are certain what you are doing.
    @@ -269,7 +278,7 @@ message JobSpec {
       // Describes the pod that will be created when executing a job.
       // The only allowed template.spec.restartPolicy values are "Never" or "OnFailure".
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 6;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 6;
     
       // ttlSecondsAfterFinished limits the lifetime of a Job that has finished
       // execution (either Complete or Failed). If this field is set,
    @@ -330,6 +339,21 @@ message JobSpec {
       // This is on by default.
       // +optional
       optional string podReplacementPolicy = 14;
    +
    +  // ManagedBy field indicates the controller that manages a Job. The k8s Job
    +  // controller reconciles jobs which don't have this field at all or the field
    +  // value is the reserved string `kubernetes.io/job-controller`, but skips
    +  // reconciling Jobs with a custom value for this field.
    +  // The value must be a valid domain-prefixed path (e.g. acme.io/foo) -
    +  // all characters before the first "/" must be a valid subdomain as defined
    +  // by RFC 1123. All characters trailing the first "/" must be valid HTTP Path
    +  // characters as defined by RFC 3986. The value cannot exceed 63 characters.
    +  // This field is immutable.
    +  //
    +  // This field is beta-level. The job controller accepts setting the field
    +  // when the feature gate JobManagedBy is enabled (enabled by default).
    +  // +optional
    +  optional string managedBy = 15;
     }
     
     // JobStatus represents the current state of a Job.
    @@ -340,6 +364,12 @@ message JobStatus {
       // status true; when the Job is resumed, the status of this condition will
       // become false. When a Job is completed, one of the conditions will have
       // type "Complete" and status true.
    +  //
    +  // A job is considered finished when it is in a terminal condition, either
    +  // "Complete" or "Failed". A Job cannot have both the "Complete" and "Failed" conditions.
    +  // Additionally, it cannot be in the "Complete" and "FailureTarget" conditions.
    +  // The "Complete", "Failed" and "FailureTarget" conditions cannot be disabled.
    +  //
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
       // +optional
       // +patchMergeKey=type
    @@ -351,25 +381,36 @@ message JobStatus {
       // Job is created in the suspended state, this field is not set until the
       // first time it is resumed. This field is reset every time a Job is resumed
       // from suspension. It is represented in RFC3339 form and is in UTC.
    +  //
    +  // Once set, the field can only be removed when the job is suspended.
    +  // The field cannot be modified while the job is unsuspended or finished.
    +  //
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 2;
     
       // Represents time when the job was completed. It is not guaranteed to
       // be set in happens-before order across separate operations.
       // It is represented in RFC3339 form and is in UTC.
    -  // The completion time is only set when the job finishes successfully.
    +  // The completion time is set when the job finishes successfully, and only then.
    +  // The value cannot be updated or removed. The value indicates the same or
    +  // later point in time as the startTime field.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time completionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time completionTime = 3;
     
    -  // The number of pending and running pods.
    +  // The number of pending and running pods which are not terminating (without
    +  // a deletionTimestamp).
    +  // The value is zero for finished jobs.
       // +optional
       optional int32 active = 4;
     
       // The number of pods which reached phase Succeeded.
    +  // The value increases monotonically for a given spec. However, it may
    +  // decrease in reaction to scale down of elastic indexed jobs.
       // +optional
       optional int32 succeeded = 5;
     
       // The number of pods which reached phase Failed.
    +  // The value increases monotonically.
       // +optional
       optional int32 failed = 6;
     
    @@ -391,7 +432,7 @@ message JobStatus {
       // +optional
       optional string completedIndexes = 7;
     
    -  // FailedIndexes holds the failed indexes when backoffLimitPerIndex=true.
    +  // FailedIndexes holds the failed indexes when spec.backoffLimitPerIndex is set.
       // The indexes are represented in the text format analogous as for the
       // `completedIndexes` field, ie. they are kept as decimal integers
       // separated by commas. The numbers are listed in increasing order. Three or
    @@ -399,6 +440,8 @@ message JobStatus {
       // last element of the series, separated by a hyphen.
       // For example, if the failed indexes are 1, 3, 4, 5 and 7, they are
       // represented as "1,3-5,7".
    +  // The set of failed indexes cannot overlap with the set of completed indexes.
    +  //
       // This field is beta-level. It can be used when the `JobBackoffLimitPerIndex`
       // feature gate is enabled (enabled by default).
       // +optional
    @@ -418,11 +461,12 @@ message JobStatus {
       //
       // Old jobs might not be tracked using this field, in which case the field
       // remains null.
    +  // The structure is empty for finished jobs.
       // +optional
       optional UncountedTerminatedPods uncountedTerminatedPods = 8;
     
    -  // The number of pods which have a Ready condition.
    -  // +optional
    +  // The number of active pods which have a Ready condition and are not
    +  // terminating (without a deletionTimestamp).
       optional int32 ready = 9;
     }
     
    @@ -431,7 +475,7 @@ message JobTemplateSpec {
       // Standard object's metadata of the jobs created from this template.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the job.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -532,6 +576,51 @@ message PodFailurePolicyRule {
       repeated PodFailurePolicyOnPodConditionsPattern onPodConditions = 3;
     }
     
    +// SuccessPolicy describes when a Job can be declared as succeeded based on the success of some indexes.
    +message SuccessPolicy {
    +  // rules represents the list of alternative rules for the declaring the Jobs
    +  // as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met,
    +  // the "SucceededCriteriaMet" condition is added, and the lingering pods are removed.
    +  // The terminal state for such a Job has the "Complete" condition.
    +  // Additionally, these rules are evaluated in order; Once the Job meets one of the rules,
    +  // other rules are ignored. At most 20 elements are allowed.
    +  // +listType=atomic
    +  repeated SuccessPolicyRule rules = 1;
    +}
    +
    +// SuccessPolicyRule describes rule for declaring a Job as succeeded.
    +// Each rule must have at least one of the "succeededIndexes" or "succeededCount" specified.
    +message SuccessPolicyRule {
    +  // succeededIndexes specifies the set of indexes
    +  // which need to be contained in the actual set of the succeeded indexes for the Job.
    +  // The list of indexes must be within 0 to ".spec.completions-1" and
    +  // must not contain duplicates. At least one element is required.
    +  // The indexes are represented as intervals separated by commas.
    +  // The intervals can be a decimal integer or a pair of decimal integers separated by a hyphen.
    +  // The number are listed in represented by the first and last element of the series,
    +  // separated by a hyphen.
    +  // For example, if the completed indexes are 1, 3, 4, 5 and 7, they are
    +  // represented as "1,3-5,7".
    +  // When this field is null, this field doesn't default to any value
    +  // and is never evaluated at any time.
    +  //
    +  // +optional
    +  optional string succeededIndexes = 1;
    +
    +  // succeededCount specifies the minimal required size of the actual set of the succeeded indexes
    +  // for the Job. When succeededCount is used along with succeededIndexes, the check is
    +  // constrained only to the set of indexes specified by succeededIndexes.
    +  // For example, given that succeededIndexes is "1-4", succeededCount is "3",
    +  // and completed indexes are "1", "3", and "5", the Job isn't declared as succeeded
    +  // because only "1" and "3" indexes are considered in that rules.
    +  // When this field is null, this doesn't default to any value and
    +  // is never evaluated at any time.
    +  // When specified it needs to be a positive integer.
    +  //
    +  // +optional
    +  optional int32 succeededCount = 2;
    +}
    +
     // UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't
     // been accounted in Job status counters.
     message UncountedTerminatedPods {
    diff --git a/vendor/k8s.io/api/batch/v1/types.go b/vendor/k8s.io/api/batch/v1/types.go
    index 53fdf3c8d01b..8e9a761b9555 100644
    --- a/vendor/k8s.io/api/batch/v1/types.go
    +++ b/vendor/k8s.io/api/batch/v1/types.go
    @@ -29,7 +29,6 @@ const (
     
     	// CronJobScheduledTimestampAnnotation is the scheduled timestamp annotation for the Job.
     	// It records the original/expected scheduled timestamp for the running job, represented in RFC3339.
    -	// The CronJob controller adds this annotation if the CronJobsScheduledAnnotation feature gate (beta in 1.28) is enabled.
     	CronJobScheduledTimestampAnnotation = labelPrefix + "cronjob-scheduled-timestamp"
     
     	JobCompletionIndexAnnotation = labelPrefix + "job-completion-index"
    @@ -57,10 +56,14 @@ const (
     	// to the pod, which don't count towards the backoff limit, according to the
     	// pod failure policy. When the annotation is absent zero is implied.
     	JobIndexIgnoredFailureCountAnnotation = labelPrefix + "job-index-ignored-failure-count"
    +	// JobControllerName reserved value for the managedBy field for the built-in
    +	// Job controller.
    +	JobControllerName = "kubernetes.io/job-controller"
     )
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.2
     
     // Job represents the configuration of a single job.
     type Job struct {
    @@ -82,6 +85,7 @@ type Job struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.2
     
     // JobList is a collection of jobs.
     type JobList struct {
    @@ -171,7 +175,7 @@ type PodFailurePolicyOnExitCodesRequirement struct {
     	// When specified, it should match one the container or initContainer
     	// names in the pod template.
     	// +optional
    -	ContainerName *string `json:"containerName" protobuf:"bytes,1,opt,name=containerName"`
    +	ContainerName *string `json:"containerName,omitempty" protobuf:"bytes,1,opt,name=containerName"`
     
     	// Represents the relationship between the container exit code(s) and the
     	// specified values. Containers completed with success (exit code 0) are
    @@ -231,14 +235,14 @@ type PodFailurePolicyRule struct {
     
     	// Represents the requirement on the container exit codes.
     	// +optional
    -	OnExitCodes *PodFailurePolicyOnExitCodesRequirement `json:"onExitCodes" protobuf:"bytes,2,opt,name=onExitCodes"`
    +	OnExitCodes *PodFailurePolicyOnExitCodesRequirement `json:"onExitCodes,omitempty" protobuf:"bytes,2,opt,name=onExitCodes"`
     
     	// Represents the requirement on the pod conditions. The requirement is represented
     	// as a list of pod condition patterns. The requirement is satisfied if at
     	// least one pattern matches an actual pod condition. At most 20 elements are allowed.
     	// +listType=atomic
     	// +optional
    -	OnPodConditions []PodFailurePolicyOnPodConditionsPattern `json:"onPodConditions" protobuf:"bytes,3,opt,name=onPodConditions"`
    +	OnPodConditions []PodFailurePolicyOnPodConditionsPattern `json:"onPodConditions,omitempty" protobuf:"bytes,3,opt,name=onPodConditions"`
     }
     
     // PodFailurePolicy describes how failed pods influence the backoffLimit.
    @@ -252,6 +256,51 @@ type PodFailurePolicy struct {
     	Rules []PodFailurePolicyRule `json:"rules" protobuf:"bytes,1,opt,name=rules"`
     }
     
    +// SuccessPolicy describes when a Job can be declared as succeeded based on the success of some indexes.
    +type SuccessPolicy struct {
    +	// rules represents the list of alternative rules for the declaring the Jobs
    +	// as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met,
    +	// the "SucceededCriteriaMet" condition is added, and the lingering pods are removed.
    +	// The terminal state for such a Job has the "Complete" condition.
    +	// Additionally, these rules are evaluated in order; Once the Job meets one of the rules,
    +	// other rules are ignored. At most 20 elements are allowed.
    +	// +listType=atomic
    +	Rules []SuccessPolicyRule `json:"rules" protobuf:"bytes,1,opt,name=rules"`
    +}
    +
    +// SuccessPolicyRule describes rule for declaring a Job as succeeded.
    +// Each rule must have at least one of the "succeededIndexes" or "succeededCount" specified.
    +type SuccessPolicyRule struct {
    +	// succeededIndexes specifies the set of indexes
    +	// which need to be contained in the actual set of the succeeded indexes for the Job.
    +	// The list of indexes must be within 0 to ".spec.completions-1" and
    +	// must not contain duplicates. At least one element is required.
    +	// The indexes are represented as intervals separated by commas.
    +	// The intervals can be a decimal integer or a pair of decimal integers separated by a hyphen.
    +	// The number are listed in represented by the first and last element of the series,
    +	// separated by a hyphen.
    +	// For example, if the completed indexes are 1, 3, 4, 5 and 7, they are
    +	// represented as "1,3-5,7".
    +	// When this field is null, this field doesn't default to any value
    +	// and is never evaluated at any time.
    +	//
    +	// +optional
    +	SucceededIndexes *string `json:"succeededIndexes,omitempty" protobuf:"bytes,1,opt,name=succeededIndexes"`
    +
    +	// succeededCount specifies the minimal required size of the actual set of the succeeded indexes
    +	// for the Job. When succeededCount is used along with succeededIndexes, the check is
    +	// constrained only to the set of indexes specified by succeededIndexes.
    +	// For example, given that succeededIndexes is "1-4", succeededCount is "3",
    +	// and completed indexes are "1", "3", and "5", the Job isn't declared as succeeded
    +	// because only "1" and "3" indexes are considered in that rules.
    +	// When this field is null, this doesn't default to any value and
    +	// is never evaluated at any time.
    +	// When specified it needs to be a positive integer.
    +	//
    +	// +optional
    +	SucceededCount *int32 `json:"succeededCount,omitempty" protobuf:"varint,2,opt,name=succeededCount"`
    +}
    +
     // JobSpec describes how the job execution will look like.
     type JobSpec struct {
     
    @@ -288,11 +337,20 @@ type JobSpec struct {
     	// checked against the backoffLimit. This field cannot be used in combination
     	// with restartPolicy=OnFailure.
     	//
    -	// This field is beta-level. It can be used when the `JobPodFailurePolicy`
    -	// feature gate is enabled (enabled by default).
     	// +optional
     	PodFailurePolicy *PodFailurePolicy `json:"podFailurePolicy,omitempty" protobuf:"bytes,11,opt,name=podFailurePolicy"`
     
    +	// successPolicy specifies the policy when the Job can be declared as succeeded.
    +	// If empty, the default behavior applies - the Job is declared as succeeded
    +	// only when the number of succeeded pods equals to the completions.
    +	// When the field is specified, it must be immutable and works only for the Indexed Jobs.
    +	// Once the Job meets the SuccessPolicy, the lingering pods are terminated.
    +	//
    +	// This field is beta-level. To use this field, you must enable the
    +	// `JobSuccessPolicy` feature gate (enabled by default).
    +	// +optional
    +	SuccessPolicy *SuccessPolicy `json:"successPolicy,omitempty" protobuf:"bytes,16,opt,name=successPolicy"`
    +
     	// Specifies the number of retries before marking this job failed.
     	// Defaults to 6
     	// +optional
    @@ -410,6 +468,21 @@ type JobSpec struct {
     	// This is on by default.
     	// +optional
     	PodReplacementPolicy *PodReplacementPolicy `json:"podReplacementPolicy,omitempty" protobuf:"bytes,14,opt,name=podReplacementPolicy,casttype=podReplacementPolicy"`
    +
    +	// ManagedBy field indicates the controller that manages a Job. The k8s Job
    +	// controller reconciles jobs which don't have this field at all or the field
    +	// value is the reserved string `kubernetes.io/job-controller`, but skips
    +	// reconciling Jobs with a custom value for this field.
    +	// The value must be a valid domain-prefixed path (e.g. acme.io/foo) -
    +	// all characters before the first "/" must be a valid subdomain as defined
    +	// by RFC 1123. All characters trailing the first "/" must be valid HTTP Path
    +	// characters as defined by RFC 3986. The value cannot exceed 63 characters.
    +	// This field is immutable.
    +	//
    +	// This field is beta-level. The job controller accepts setting the field
    +	// when the feature gate JobManagedBy is enabled (enabled by default).
    +	// +optional
    +	ManagedBy *string `json:"managedBy,omitempty" protobuf:"bytes,15,opt,name=managedBy"`
     }
     
     // JobStatus represents the current state of a Job.
    @@ -420,6 +493,12 @@ type JobStatus struct {
     	// status true; when the Job is resumed, the status of this condition will
     	// become false. When a Job is completed, one of the conditions will have
     	// type "Complete" and status true.
    +	//
    +	// A job is considered finished when it is in a terminal condition, either
    +	// "Complete" or "Failed". A Job cannot have both the "Complete" and "Failed" conditions.
    +	// Additionally, it cannot be in the "Complete" and "FailureTarget" conditions.
    +	// The "Complete", "Failed" and "FailureTarget" conditions cannot be disabled.
    +	//
     	// More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
     	// +optional
     	// +patchMergeKey=type
    @@ -431,25 +510,36 @@ type JobStatus struct {
     	// Job is created in the suspended state, this field is not set until the
     	// first time it is resumed. This field is reset every time a Job is resumed
     	// from suspension. It is represented in RFC3339 form and is in UTC.
    +	//
    +	// Once set, the field can only be removed when the job is suspended.
    +	// The field cannot be modified while the job is unsuspended or finished.
    +	//
     	// +optional
     	StartTime *metav1.Time `json:"startTime,omitempty" protobuf:"bytes,2,opt,name=startTime"`
     
     	// Represents time when the job was completed. It is not guaranteed to
     	// be set in happens-before order across separate operations.
     	// It is represented in RFC3339 form and is in UTC.
    -	// The completion time is only set when the job finishes successfully.
    +	// The completion time is set when the job finishes successfully, and only then.
    +	// The value cannot be updated or removed. The value indicates the same or
    +	// later point in time as the startTime field.
     	// +optional
     	CompletionTime *metav1.Time `json:"completionTime,omitempty" protobuf:"bytes,3,opt,name=completionTime"`
     
    -	// The number of pending and running pods.
    +	// The number of pending and running pods which are not terminating (without
    +	// a deletionTimestamp).
    +	// The value is zero for finished jobs.
     	// +optional
     	Active int32 `json:"active,omitempty" protobuf:"varint,4,opt,name=active"`
     
     	// The number of pods which reached phase Succeeded.
    +	// The value increases monotonically for a given spec. However, it may
    +	// decrease in reaction to scale down of elastic indexed jobs.
     	// +optional
     	Succeeded int32 `json:"succeeded,omitempty" protobuf:"varint,5,opt,name=succeeded"`
     
     	// The number of pods which reached phase Failed.
    +	// The value increases monotonically.
     	// +optional
     	Failed int32 `json:"failed,omitempty" protobuf:"varint,6,opt,name=failed"`
     
    @@ -471,7 +561,7 @@ type JobStatus struct {
     	// +optional
     	CompletedIndexes string `json:"completedIndexes,omitempty" protobuf:"bytes,7,opt,name=completedIndexes"`
     
    -	// FailedIndexes holds the failed indexes when backoffLimitPerIndex=true.
    +	// FailedIndexes holds the failed indexes when spec.backoffLimitPerIndex is set.
     	// The indexes are represented in the text format analogous as for the
     	// `completedIndexes` field, ie. they are kept as decimal integers
     	// separated by commas. The numbers are listed in increasing order. Three or
    @@ -479,6 +569,8 @@ type JobStatus struct {
     	// last element of the series, separated by a hyphen.
     	// For example, if the failed indexes are 1, 3, 4, 5 and 7, they are
     	// represented as "1,3-5,7".
    +	// The set of failed indexes cannot overlap with the set of completed indexes.
    +	//
     	// This field is beta-level. It can be used when the `JobBackoffLimitPerIndex`
     	// feature gate is enabled (enabled by default).
     	// +optional
    @@ -498,11 +590,12 @@ type JobStatus struct {
     	//
     	// Old jobs might not be tracked using this field, in which case the field
     	// remains null.
    +	// The structure is empty for finished jobs.
     	// +optional
     	UncountedTerminatedPods *UncountedTerminatedPods `json:"uncountedTerminatedPods,omitempty" protobuf:"bytes,8,opt,name=uncountedTerminatedPods"`
     
    -	// The number of pods which have a Ready condition.
    -	// +optional
    +	// The number of active pods which have a Ready condition and are not
    +	// terminating (without a deletionTimestamp).
     	Ready *int32 `json:"ready,omitempty" protobuf:"varint,9,opt,name=ready"`
     }
     
    @@ -532,13 +625,14 @@ const (
     	JobFailed JobConditionType = "Failed"
     	// FailureTarget means the job is about to fail its execution.
     	JobFailureTarget JobConditionType = "FailureTarget"
    +	// JobSuccessCriteriaMet means the Job has been succeeded.
    +	JobSuccessCriteriaMet JobConditionType = "SuccessCriteriaMet"
     )
     
     const (
     	// JobReasonPodFailurePolicy reason indicates a job failure condition is added due to
     	// a failed pod matching a pod failure policy rule
     	// https://kep.k8s.io/3329
    -	// This is currently a beta field.
     	JobReasonPodFailurePolicy string = "PodFailurePolicy"
     	// JobReasonBackOffLimitExceeded reason indicates that pods within a job have failed a number of
     	// times higher than backOffLimit times.
    @@ -551,6 +645,16 @@ const (
     	// JobReasonFailedIndexes means Job has failed indexes.
     	// This const is used in beta-level feature: https://kep.k8s.io/3850.
     	JobReasonFailedIndexes string = "FailedIndexes"
    +	// JobReasonSuccessPolicy reason indicates a SuccessCriteriaMet condition is added due to
    +	// a Job met successPolicy.
    +	// https://kep.k8s.io/3998
    +	// This is currently a beta field.
    +	JobReasonSuccessPolicy string = "SuccessPolicy"
    +	// JobReasonCompletionsReached reason indicates a SuccessCriteriaMet condition is added due to
    +	// a number of succeeded Job pods met completions.
    +	// - https://kep.k8s.io/3998
    +	// This is currently a beta field.
    +	JobReasonCompletionsReached string = "CompletionsReached"
     )
     
     // JobCondition describes current state of a job.
    @@ -588,6 +692,7 @@ type JobTemplateSpec struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.21
     
     // CronJob represents the configuration of a single cron job.
     type CronJob struct {
    @@ -609,6 +714,7 @@ type CronJob struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.21
     
     // CronJobList is a collection of cron jobs.
     type CronJobList struct {
    diff --git a/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go
    index 980f1e47505c..893f3371f05a 100644
    --- a/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go
    @@ -115,7 +115,8 @@ var map_JobSpec = map[string]string{
     	"parallelism":             "Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/",
     	"completions":             "Specifies the desired number of successfully finished pods the job should be run with.  Setting to null means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value.  Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/",
     	"activeDeadlineSeconds":   "Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.",
    -	"podFailurePolicy":        "Specifies the policy of handling failed pods. In particular, it allows to specify the set of actions and conditions which need to be satisfied to take the associated action. If empty, the default behaviour applies - the counter of failed pods, represented by the jobs's .status.failed field, is incremented and it is checked against the backoffLimit. This field cannot be used in combination with restartPolicy=OnFailure.\n\nThis field is beta-level. It can be used when the `JobPodFailurePolicy` feature gate is enabled (enabled by default).",
    +	"podFailurePolicy":        "Specifies the policy of handling failed pods. In particular, it allows to specify the set of actions and conditions which need to be satisfied to take the associated action. If empty, the default behaviour applies - the counter of failed pods, represented by the jobs's .status.failed field, is incremented and it is checked against the backoffLimit. This field cannot be used in combination with restartPolicy=OnFailure.",
    +	"successPolicy":           "successPolicy specifies the policy when the Job can be declared as succeeded. If empty, the default behavior applies - the Job is declared as succeeded only when the number of succeeded pods equals to the completions. When the field is specified, it must be immutable and works only for the Indexed Jobs. Once the Job meets the SuccessPolicy, the lingering pods are terminated.\n\nThis field is beta-level. To use this field, you must enable the `JobSuccessPolicy` feature gate (enabled by default).",
     	"backoffLimit":            "Specifies the number of retries before marking this job failed. Defaults to 6",
     	"backoffLimitPerIndex":    "Specifies the limit for the number of retries within an index before marking this index as failed. When enabled the number of failures per index is kept in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can only be set when Job's completionMode=Indexed, and the Pod's restart policy is Never. The field is immutable. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).",
     	"maxFailedIndexes":        "Specifies the maximal number of failed indexes before marking the Job as failed, when backoffLimitPerIndex is set. Once the number of failed indexes exceeds this number the entire Job is marked as Failed and its execution is terminated. When left as null the job continues execution of all of its indexes and is marked with the `Complete` Job condition. It can only be specified when backoffLimitPerIndex is set. It can be null or up to completions. It is required and must be less than or equal to 10^4 when is completions greater than 10^5. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).",
    @@ -126,6 +127,7 @@ var map_JobSpec = map[string]string{
     	"completionMode":          "completionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5. In addition, The Pod name takes the form `$(job-name)-$(index)-$(random-string)`, the Pod hostname takes the form `$(job-name)-$(index)`.\n\nMore completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, which is possible during upgrades due to version skew, the controller skips updates for the Job.",
     	"suspend":                 "suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. Defaults to false.",
     	"podReplacementPolicy":    "podReplacementPolicy specifies when to create replacement Pods. Possible values are: - TerminatingOrFailed means that we recreate pods\n  when they are terminating (has a metadata.deletionTimestamp) or failed.\n- Failed means to wait until a previously created Pod is fully terminated (has phase\n  Failed or Succeeded) before creating a replacement Pod.\n\nWhen using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use. This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle. This is on by default.",
    +	"managedBy":               "ManagedBy field indicates the controller that manages a Job. The k8s Job controller reconciles jobs which don't have this field at all or the field value is the reserved string `kubernetes.io/job-controller`, but skips reconciling Jobs with a custom value for this field. The value must be a valid domain-prefixed path (e.g. acme.io/foo) - all characters before the first \"/\" must be a valid subdomain as defined by RFC 1123. All characters trailing the first \"/\" must be valid HTTP Path characters as defined by RFC 3986. The value cannot exceed 63 characters. This field is immutable.\n\nThis field is beta-level. The job controller accepts setting the field when the feature gate JobManagedBy is enabled (enabled by default).",
     }
     
     func (JobSpec) SwaggerDoc() map[string]string {
    @@ -134,17 +136,17 @@ func (JobSpec) SwaggerDoc() map[string]string {
     
     var map_JobStatus = map[string]string{
     	"":                        "JobStatus represents the current state of a Job.",
    -	"conditions":              "The latest available observations of an object's current state. When a Job fails, one of the conditions will have type \"Failed\" and status true. When a Job is suspended, one of the conditions will have type \"Suspended\" and status true; when the Job is resumed, the status of this condition will become false. When a Job is completed, one of the conditions will have type \"Complete\" and status true. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/",
    -	"startTime":               "Represents time when the job controller started processing a job. When a Job is created in the suspended state, this field is not set until the first time it is resumed. This field is reset every time a Job is resumed from suspension. It is represented in RFC3339 form and is in UTC.",
    -	"completionTime":          "Represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. The completion time is only set when the job finishes successfully.",
    -	"active":                  "The number of pending and running pods.",
    -	"succeeded":               "The number of pods which reached phase Succeeded.",
    -	"failed":                  "The number of pods which reached phase Failed.",
    +	"conditions":              "The latest available observations of an object's current state. When a Job fails, one of the conditions will have type \"Failed\" and status true. When a Job is suspended, one of the conditions will have type \"Suspended\" and status true; when the Job is resumed, the status of this condition will become false. When a Job is completed, one of the conditions will have type \"Complete\" and status true.\n\nA job is considered finished when it is in a terminal condition, either \"Complete\" or \"Failed\". A Job cannot have both the \"Complete\" and \"Failed\" conditions. Additionally, it cannot be in the \"Complete\" and \"FailureTarget\" conditions. The \"Complete\", \"Failed\" and \"FailureTarget\" conditions cannot be disabled.\n\nMore info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/",
    +	"startTime":               "Represents time when the job controller started processing a job. When a Job is created in the suspended state, this field is not set until the first time it is resumed. This field is reset every time a Job is resumed from suspension. It is represented in RFC3339 form and is in UTC.\n\nOnce set, the field can only be removed when the job is suspended. The field cannot be modified while the job is unsuspended or finished.",
    +	"completionTime":          "Represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. The completion time is set when the job finishes successfully, and only then. The value cannot be updated or removed. The value indicates the same or later point in time as the startTime field.",
    +	"active":                  "The number of pending and running pods which are not terminating (without a deletionTimestamp). The value is zero for finished jobs.",
    +	"succeeded":               "The number of pods which reached phase Succeeded. The value increases monotonically for a given spec. However, it may decrease in reaction to scale down of elastic indexed jobs.",
    +	"failed":                  "The number of pods which reached phase Failed. The value increases monotonically.",
     	"terminating":             "The number of pods which are terminating (in phase Pending or Running and have a deletionTimestamp).\n\nThis field is beta-level. The job controller populates the field when the feature gate JobPodReplacementPolicy is enabled (enabled by default).",
     	"completedIndexes":        "completedIndexes holds the completed indexes when .spec.completionMode = \"Indexed\" in a text format. The indexes are represented as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\".",
    -	"failedIndexes":           "FailedIndexes holds the failed indexes when backoffLimitPerIndex=true. The indexes are represented in the text format analogous as for the `completedIndexes` field, ie. they are kept as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the failed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\". This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).",
    -	"uncountedTerminatedPods": "uncountedTerminatedPods holds the UIDs of Pods that have terminated but the job controller hasn't yet accounted for in the status counters.\n\nThe job controller creates pods with a finalizer. When a pod terminates (succeeded or failed), the controller does three steps to account for it in the job status:\n\n1. Add the pod UID to the arrays in this field. 2. Remove the pod finalizer. 3. Remove the pod UID from the arrays while increasing the corresponding\n    counter.\n\nOld jobs might not be tracked using this field, in which case the field remains null.",
    -	"ready":                   "The number of pods which have a Ready condition.",
    +	"failedIndexes":           "FailedIndexes holds the failed indexes when spec.backoffLimitPerIndex is set. The indexes are represented in the text format analogous as for the `completedIndexes` field, ie. they are kept as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the failed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\". The set of failed indexes cannot overlap with the set of completed indexes.\n\nThis field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).",
    +	"uncountedTerminatedPods": "uncountedTerminatedPods holds the UIDs of Pods that have terminated but the job controller hasn't yet accounted for in the status counters.\n\nThe job controller creates pods with a finalizer. When a pod terminates (succeeded or failed), the controller does three steps to account for it in the job status:\n\n1. Add the pod UID to the arrays in this field. 2. Remove the pod finalizer. 3. Remove the pod UID from the arrays while increasing the corresponding\n    counter.\n\nOld jobs might not be tracked using this field, in which case the field remains null. The structure is empty for finished jobs.",
    +	"ready":                   "The number of active pods which have a Ready condition and are not terminating (without a deletionTimestamp).",
     }
     
     func (JobStatus) SwaggerDoc() map[string]string {
    @@ -202,6 +204,25 @@ func (PodFailurePolicyRule) SwaggerDoc() map[string]string {
     	return map_PodFailurePolicyRule
     }
     
    +var map_SuccessPolicy = map[string]string{
    +	"":      "SuccessPolicy describes when a Job can be declared as succeeded based on the success of some indexes.",
    +	"rules": "rules represents the list of alternative rules for the declaring the Jobs as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met, the \"SucceededCriteriaMet\" condition is added, and the lingering pods are removed. The terminal state for such a Job has the \"Complete\" condition. Additionally, these rules are evaluated in order; Once the Job meets one of the rules, other rules are ignored. At most 20 elements are allowed.",
    +}
    +
    +func (SuccessPolicy) SwaggerDoc() map[string]string {
    +	return map_SuccessPolicy
    +}
    +
    +var map_SuccessPolicyRule = map[string]string{
    +	"":                 "SuccessPolicyRule describes rule for declaring a Job as succeeded. Each rule must have at least one of the \"succeededIndexes\" or \"succeededCount\" specified.",
    +	"succeededIndexes": "succeededIndexes specifies the set of indexes which need to be contained in the actual set of the succeeded indexes for the Job. The list of indexes must be within 0 to \".spec.completions-1\" and must not contain duplicates. At least one element is required. The indexes are represented as intervals separated by commas. The intervals can be a decimal integer or a pair of decimal integers separated by a hyphen. The number are listed in represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\". When this field is null, this field doesn't default to any value and is never evaluated at any time.",
    +	"succeededCount":   "succeededCount specifies the minimal required size of the actual set of the succeeded indexes for the Job. When succeededCount is used along with succeededIndexes, the check is constrained only to the set of indexes specified by succeededIndexes. For example, given that succeededIndexes is \"1-4\", succeededCount is \"3\", and completed indexes are \"1\", \"3\", and \"5\", the Job isn't declared as succeeded because only \"1\" and \"3\" indexes are considered in that rules. When this field is null, this doesn't default to any value and is never evaluated at any time. When specified it needs to be a positive integer.",
    +}
    +
    +func (SuccessPolicyRule) SwaggerDoc() map[string]string {
    +	return map_SuccessPolicyRule
    +}
    +
     var map_UncountedTerminatedPods = map[string]string{
     	"":          "UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't been accounted in Job status counters.",
     	"succeeded": "succeeded holds UIDs of succeeded Pods.",
    diff --git a/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go
    index 43fc41515be1..88c58b3d111e 100644
    --- a/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go
    @@ -262,6 +262,11 @@ func (in *JobSpec) DeepCopyInto(out *JobSpec) {
     		*out = new(PodFailurePolicy)
     		(*in).DeepCopyInto(*out)
     	}
    +	if in.SuccessPolicy != nil {
    +		in, out := &in.SuccessPolicy, &out.SuccessPolicy
    +		*out = new(SuccessPolicy)
    +		(*in).DeepCopyInto(*out)
    +	}
     	if in.BackoffLimit != nil {
     		in, out := &in.BackoffLimit, &out.BackoffLimit
     		*out = new(int32)
    @@ -308,6 +313,11 @@ func (in *JobSpec) DeepCopyInto(out *JobSpec) {
     		*out = new(PodReplacementPolicy)
     		**out = **in
     	}
    +	if in.ManagedBy != nil {
    +		in, out := &in.ManagedBy, &out.ManagedBy
    +		*out = new(string)
    +		**out = **in
    +	}
     	return
     }
     
    @@ -481,6 +491,55 @@ func (in *PodFailurePolicyRule) DeepCopy() *PodFailurePolicyRule {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *SuccessPolicy) DeepCopyInto(out *SuccessPolicy) {
    +	*out = *in
    +	if in.Rules != nil {
    +		in, out := &in.Rules, &out.Rules
    +		*out = make([]SuccessPolicyRule, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SuccessPolicy.
    +func (in *SuccessPolicy) DeepCopy() *SuccessPolicy {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(SuccessPolicy)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *SuccessPolicyRule) DeepCopyInto(out *SuccessPolicyRule) {
    +	*out = *in
    +	if in.SucceededIndexes != nil {
    +		in, out := &in.SucceededIndexes, &out.SucceededIndexes
    +		*out = new(string)
    +		**out = **in
    +	}
    +	if in.SucceededCount != nil {
    +		in, out := &in.SucceededCount, &out.SucceededCount
    +		*out = new(int32)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SuccessPolicyRule.
    +func (in *SuccessPolicyRule) DeepCopy() *SuccessPolicyRule {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(SuccessPolicyRule)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *UncountedTerminatedPods) DeepCopyInto(out *UncountedTerminatedPods) {
     	*out = *in
    diff --git a/vendor/k8s.io/api/batch/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/batch/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..b76cb09249a4
    --- /dev/null
    +++ b/vendor/k8s.io/api/batch/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,46 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CronJob) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 21
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CronJobList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 21
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Job) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 2
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *JobList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 2
    +}
    diff --git a/vendor/k8s.io/api/batch/v1beta1/generated.pb.go b/vendor/k8s.io/api/batch/v1beta1/generated.pb.go
    index 03feb2ceafa9..895d9c91966a 100644
    --- a/vendor/k8s.io/api/batch/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/batch/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/batch/v1beta1/generated.proto
    +// source: k8s.io/api/batch/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -48,7 +48,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *CronJob) Reset()      { *m = CronJob{} }
     func (*CronJob) ProtoMessage() {}
     func (*CronJob) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e57b277b05179ae7, []int{0}
    +	return fileDescriptor_ed95843ae7b4086b, []int{0}
     }
     func (m *CronJob) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -76,7 +76,7 @@ var xxx_messageInfo_CronJob proto.InternalMessageInfo
     func (m *CronJobList) Reset()      { *m = CronJobList{} }
     func (*CronJobList) ProtoMessage() {}
     func (*CronJobList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e57b277b05179ae7, []int{1}
    +	return fileDescriptor_ed95843ae7b4086b, []int{1}
     }
     func (m *CronJobList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -104,7 +104,7 @@ var xxx_messageInfo_CronJobList proto.InternalMessageInfo
     func (m *CronJobSpec) Reset()      { *m = CronJobSpec{} }
     func (*CronJobSpec) ProtoMessage() {}
     func (*CronJobSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e57b277b05179ae7, []int{2}
    +	return fileDescriptor_ed95843ae7b4086b, []int{2}
     }
     func (m *CronJobSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -132,7 +132,7 @@ var xxx_messageInfo_CronJobSpec proto.InternalMessageInfo
     func (m *CronJobStatus) Reset()      { *m = CronJobStatus{} }
     func (*CronJobStatus) ProtoMessage() {}
     func (*CronJobStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e57b277b05179ae7, []int{3}
    +	return fileDescriptor_ed95843ae7b4086b, []int{3}
     }
     func (m *CronJobStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -160,7 +160,7 @@ var xxx_messageInfo_CronJobStatus proto.InternalMessageInfo
     func (m *JobTemplateSpec) Reset()      { *m = JobTemplateSpec{} }
     func (*JobTemplateSpec) ProtoMessage() {}
     func (*JobTemplateSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_e57b277b05179ae7, []int{4}
    +	return fileDescriptor_ed95843ae7b4086b, []int{4}
     }
     func (m *JobTemplateSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -194,60 +194,59 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/batch/v1beta1/generated.proto", fileDescriptor_e57b277b05179ae7)
    +	proto.RegisterFile("k8s.io/api/batch/v1beta1/generated.proto", fileDescriptor_ed95843ae7b4086b)
     }
     
    -var fileDescriptor_e57b277b05179ae7 = []byte{
    -	// 787 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x41, 0x6f, 0x1b, 0x45,
    -	0x14, 0xc7, 0xbd, 0x49, 0x9c, 0xb8, 0xe3, 0x16, 0xd2, 0x01, 0xa5, 0x2b, 0x83, 0xd6, 0xc1, 0x55,
    -	0x85, 0x41, 0x30, 0x4b, 0x22, 0x84, 0x38, 0x55, 0xea, 0x16, 0x15, 0x08, 0x41, 0x45, 0xe3, 0x72,
    -	0xa9, 0x2a, 0xd4, 0xd9, 0xd9, 0x17, 0x67, 0x9a, 0xdd, 0x9d, 0xd5, 0xce, 0x6c, 0xa4, 0xdc, 0xb8,
    -	0x70, 0xe7, 0xbb, 0x70, 0xe7, 0x9c, 0x63, 0x6f, 0xf4, 0xb4, 0x22, 0xcb, 0xb7, 0xe0, 0x84, 0x66,
    -	0xbc, 0xb1, 0x5d, 0x7b, 0xdd, 0x84, 0x4b, 0x6f, 0x9e, 0x37, 0xff, 0xff, 0x6f, 0x9e, 0xde, 0x7b,
    -	0xfb, 0x8c, 0x1e, 0x9c, 0x7c, 0xad, 0x88, 0x90, 0xfe, 0x49, 0x11, 0x42, 0x9e, 0x82, 0x06, 0xe5,
    -	0x9f, 0x42, 0x1a, 0xc9, 0xdc, 0xaf, 0x2f, 0x58, 0x26, 0xfc, 0x90, 0x69, 0x7e, 0xec, 0x9f, 0xee,
    -	0x85, 0xa0, 0xd9, 0x9e, 0x3f, 0x86, 0x14, 0x72, 0xa6, 0x21, 0x22, 0x59, 0x2e, 0xb5, 0xc4, 0xee,
    -	0x44, 0x49, 0x58, 0x26, 0x88, 0x55, 0x92, 0x5a, 0xd9, 0xfb, 0x7c, 0x2c, 0xf4, 0x71, 0x11, 0x12,
    -	0x2e, 0x13, 0x7f, 0x2c, 0xc7, 0xd2, 0xb7, 0x86, 0xb0, 0x38, 0xb2, 0x27, 0x7b, 0xb0, 0xbf, 0x26,
    -	0xa0, 0xde, 0xdd, 0x86, 0x27, 0x17, 0x5f, 0xeb, 0x0d, 0xe6, 0x44, 0x5c, 0xe6, 0xd0, 0xa4, 0xf9,
    -	0x72, 0xa6, 0x49, 0x18, 0x3f, 0x16, 0x29, 0xe4, 0x67, 0x7e, 0x76, 0x32, 0x36, 0x01, 0xe5, 0x27,
    -	0xa0, 0x59, 0x93, 0xcb, 0x5f, 0xe5, 0xca, 0x8b, 0x54, 0x8b, 0x04, 0x96, 0x0c, 0x5f, 0x5d, 0x65,
    -	0x50, 0xfc, 0x18, 0x12, 0xb6, 0xe8, 0x1b, 0xfc, 0xb6, 0x86, 0xb6, 0x1e, 0xe6, 0x32, 0x3d, 0x90,
    -	0x21, 0x7e, 0x8e, 0x3a, 0x26, 0x9f, 0x88, 0x69, 0xe6, 0x3a, 0xbb, 0xce, 0xb0, 0xbb, 0xff, 0x05,
    -	0x99, 0xd5, 0x73, 0x8a, 0x25, 0xd9, 0xc9, 0xd8, 0x04, 0x14, 0x31, 0x6a, 0x72, 0xba, 0x47, 0x1e,
    -	0x87, 0x2f, 0x80, 0xeb, 0x1f, 0x41, 0xb3, 0x00, 0x9f, 0x97, 0xfd, 0x56, 0x55, 0xf6, 0xd1, 0x2c,
    -	0x46, 0xa7, 0x54, 0xfc, 0x2d, 0xda, 0x50, 0x19, 0x70, 0x77, 0xcd, 0xd2, 0xef, 0x91, 0x55, 0xdd,
    -	0x22, 0x75, 0x4a, 0xa3, 0x0c, 0x78, 0x70, 0xb3, 0x46, 0x6e, 0x98, 0x13, 0xb5, 0x00, 0xfc, 0x18,
    -	0x6d, 0x2a, 0xcd, 0x74, 0xa1, 0xdc, 0x75, 0x8b, 0xfa, 0xf8, 0x6a, 0x94, 0x95, 0x07, 0xef, 0xd4,
    -	0xb0, 0xcd, 0xc9, 0x99, 0xd6, 0x98, 0xc1, 0x1f, 0x0e, 0xea, 0xd6, 0xca, 0x43, 0xa1, 0x34, 0x7e,
    -	0xb6, 0x54, 0x0b, 0x72, 0xbd, 0x5a, 0x18, 0xb7, 0xad, 0xc4, 0x76, 0xfd, 0x52, 0xe7, 0x32, 0x32,
    -	0x57, 0x87, 0x47, 0xa8, 0x2d, 0x34, 0x24, 0xca, 0x5d, 0xdb, 0x5d, 0x1f, 0x76, 0xf7, 0x3f, 0xba,
    -	0x32, 0xfb, 0xe0, 0x56, 0x4d, 0x6b, 0x7f, 0x6f, 0x7c, 0x74, 0x62, 0x1f, 0xfc, 0xb5, 0x31, 0xcd,
    -	0xda, 0x14, 0x07, 0x7f, 0x86, 0x3a, 0xa6, 0xcf, 0x51, 0x11, 0x83, 0xcd, 0xfa, 0xc6, 0x2c, 0x8b,
    -	0x51, 0x1d, 0xa7, 0x53, 0x05, 0x1e, 0xa2, 0x8e, 0x19, 0x8d, 0xa7, 0x32, 0x05, 0xb7, 0x63, 0xd5,
    -	0x37, 0x8d, 0xf2, 0x49, 0x1d, 0xa3, 0xd3, 0x5b, 0xfc, 0x33, 0xba, 0xa3, 0x34, 0xcb, 0xb5, 0x48,
    -	0xc7, 0xdf, 0x00, 0x8b, 0x62, 0x91, 0xc2, 0x08, 0xb8, 0x4c, 0x23, 0x65, 0x5b, 0xb9, 0x1e, 0x7c,
    -	0x50, 0x95, 0xfd, 0x3b, 0xa3, 0x66, 0x09, 0x5d, 0xe5, 0xc5, 0xcf, 0xd0, 0x6d, 0x2e, 0x53, 0x5e,
    -	0xe4, 0x39, 0xa4, 0xfc, 0xec, 0x27, 0x19, 0x0b, 0x7e, 0x66, 0x1b, 0x7a, 0x23, 0x20, 0x75, 0xde,
    -	0xb7, 0x1f, 0x2e, 0x0a, 0xfe, 0x6d, 0x0a, 0xd2, 0x65, 0x10, 0xbe, 0x87, 0xb6, 0x54, 0xa1, 0x32,
    -	0x48, 0x23, 0x77, 0x63, 0xd7, 0x19, 0x76, 0x82, 0x6e, 0x55, 0xf6, 0xb7, 0x46, 0x93, 0x10, 0xbd,
    -	0xbc, 0xc3, 0xcf, 0x51, 0xf7, 0x85, 0x0c, 0x9f, 0x40, 0x92, 0xc5, 0x4c, 0x83, 0xdb, 0xb6, 0xcd,
    -	0xfe, 0x64, 0x75, 0x47, 0x0e, 0x66, 0x62, 0x3b, 0x9e, 0xef, 0xd5, 0x99, 0x76, 0xe7, 0x2e, 0xe8,
    -	0x3c, 0x12, 0xff, 0x82, 0x7a, 0xaa, 0xe0, 0x1c, 0x94, 0x3a, 0x2a, 0xe2, 0x03, 0x19, 0xaa, 0xef,
    -	0x84, 0xd2, 0x32, 0x3f, 0x3b, 0x14, 0x89, 0xd0, 0xee, 0xe6, 0xae, 0x33, 0x6c, 0x07, 0x5e, 0x55,
    -	0xf6, 0x7b, 0xa3, 0x95, 0x2a, 0xfa, 0x06, 0x02, 0xa6, 0x68, 0xe7, 0x88, 0x89, 0x18, 0xa2, 0x25,
    -	0xf6, 0x96, 0x65, 0xf7, 0xaa, 0xb2, 0xbf, 0xf3, 0xa8, 0x51, 0x41, 0x57, 0x38, 0x07, 0x7f, 0xae,
    -	0xa1, 0x5b, 0xaf, 0x7d, 0x39, 0xf8, 0x07, 0xb4, 0xc9, 0xb8, 0x16, 0xa7, 0x66, 0xb2, 0xcc, 0xd0,
    -	0xde, 0x9d, 0x2f, 0x91, 0xd9, 0x7e, 0xb3, 0x4d, 0x40, 0xe1, 0x08, 0x4c, 0x27, 0x60, 0xf6, 0xb9,
    -	0x3d, 0xb0, 0x56, 0x5a, 0x23, 0x70, 0x8c, 0xb6, 0x63, 0xa6, 0xf4, 0xe5, 0x50, 0x9a, 0x91, 0xb3,
    -	0x4d, 0xea, 0xee, 0x7f, 0x7a, 0xbd, 0xcf, 0xcc, 0x38, 0x82, 0xf7, 0xab, 0xb2, 0xbf, 0x7d, 0xb8,
    -	0xc0, 0xa1, 0x4b, 0x64, 0x9c, 0x23, 0x6c, 0x63, 0xd3, 0x12, 0xda, 0xf7, 0xda, 0xff, 0xfb, 0xbd,
    -	0x9d, 0xaa, 0xec, 0xe3, 0xc3, 0x25, 0x12, 0x6d, 0xa0, 0x9b, 0x85, 0xf2, 0xee, 0xc2, 0xa8, 0xbc,
    -	0x85, 0x05, 0x7b, 0xff, 0xb5, 0x05, 0xfb, 0x61, 0xd3, 0x14, 0x93, 0x37, 0xec, 0xd5, 0xe0, 0xfe,
    -	0xf9, 0x85, 0xd7, 0x7a, 0x79, 0xe1, 0xb5, 0x5e, 0x5d, 0x78, 0xad, 0x5f, 0x2b, 0xcf, 0x39, 0xaf,
    -	0x3c, 0xe7, 0x65, 0xe5, 0x39, 0xaf, 0x2a, 0xcf, 0xf9, 0xbb, 0xf2, 0x9c, 0xdf, 0xff, 0xf1, 0x5a,
    -	0x4f, 0xdd, 0x55, 0xff, 0xc7, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x61, 0x72, 0xc3, 0xe0, 0xc3,
    +var fileDescriptor_ed95843ae7b4086b = []byte{
    +	// 771 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0xcf, 0x8f, 0xdb, 0x44,
    +	0x14, 0xc7, 0xe3, 0x6c, 0x7e, 0x75, 0xd2, 0xc2, 0x76, 0x40, 0x5b, 0x2b, 0x20, 0x3b, 0xa4, 0xaa,
    +	0x08, 0x08, 0xc6, 0xec, 0x0a, 0x21, 0x4e, 0x95, 0x70, 0x51, 0x81, 0x25, 0xa8, 0x68, 0x52, 0x2e,
    +	0x55, 0x85, 0x3a, 0x9e, 0x4c, 0x92, 0xe9, 0xda, 0x1e, 0xcb, 0x33, 0x5e, 0x29, 0x37, 0x2e, 0xdc,
    +	0xf9, 0x5f, 0xb8, 0x73, 0xde, 0x63, 0x6f, 0xf4, 0x64, 0xb1, 0xe6, 0xbf, 0xe0, 0x84, 0x66, 0xe2,
    +	0x4d, 0xd2, 0xc4, 0xe9, 0x96, 0x0b, 0xb7, 0xcc, 0xf3, 0xf7, 0xfb, 0x99, 0xa7, 0xf7, 0xde, 0xbc,
    +	0x80, 0xe1, 0xd9, 0x97, 0x12, 0x71, 0xe1, 0x91, 0x84, 0x7b, 0x01, 0x51, 0x74, 0xee, 0x9d, 0x1f,
    +	0x07, 0x4c, 0x91, 0x63, 0x6f, 0xc6, 0x62, 0x96, 0x12, 0xc5, 0x26, 0x28, 0x49, 0x85, 0x12, 0xd0,
    +	0x5e, 0x2a, 0x11, 0x49, 0x38, 0x32, 0x4a, 0x54, 0x2a, 0x7b, 0x9f, 0xce, 0xb8, 0x9a, 0x67, 0x01,
    +	0xa2, 0x22, 0xf2, 0x66, 0x62, 0x26, 0x3c, 0x63, 0x08, 0xb2, 0xa9, 0x39, 0x99, 0x83, 0xf9, 0xb5,
    +	0x04, 0xf5, 0xee, 0x56, 0x5c, 0xb9, 0x7d, 0x5b, 0x6f, 0xb0, 0x21, 0xa2, 0x22, 0x65, 0x55, 0x9a,
    +	0xcf, 0xd7, 0x9a, 0x88, 0xd0, 0x39, 0x8f, 0x59, 0xba, 0xf0, 0x92, 0xb3, 0x99, 0x0e, 0x48, 0x2f,
    +	0x62, 0x8a, 0x54, 0xb9, 0xbc, 0x7d, 0xae, 0x34, 0x8b, 0x15, 0x8f, 0xd8, 0x8e, 0xe1, 0x8b, 0xeb,
    +	0x0c, 0x92, 0xce, 0x59, 0x44, 0xb6, 0x7d, 0x83, 0x5f, 0xeb, 0xa0, 0xfd, 0x20, 0x15, 0xf1, 0xa9,
    +	0x08, 0xe0, 0x33, 0xd0, 0xd1, 0xf9, 0x4c, 0x88, 0x22, 0xb6, 0xd5, 0xb7, 0x86, 0xdd, 0x93, 0xcf,
    +	0xd0, 0xba, 0x9e, 0x2b, 0x2c, 0x4a, 0xce, 0x66, 0x3a, 0x20, 0x91, 0x56, 0xa3, 0xf3, 0x63, 0xf4,
    +	0x28, 0x78, 0xce, 0xa8, 0xfa, 0x81, 0x29, 0xe2, 0xc3, 0x8b, 0xdc, 0xad, 0x15, 0xb9, 0x0b, 0xd6,
    +	0x31, 0xbc, 0xa2, 0xc2, 0x6f, 0x40, 0x43, 0x26, 0x8c, 0xda, 0x75, 0x43, 0xbf, 0x87, 0xf6, 0x75,
    +	0x0b, 0x95, 0x29, 0x8d, 0x13, 0x46, 0xfd, 0x9b, 0x25, 0xb2, 0xa1, 0x4f, 0xd8, 0x00, 0xe0, 0x23,
    +	0xd0, 0x92, 0x8a, 0xa8, 0x4c, 0xda, 0x07, 0x06, 0xf5, 0xe1, 0xf5, 0x28, 0x23, 0xf7, 0xdf, 0x2a,
    +	0x61, 0xad, 0xe5, 0x19, 0x97, 0x98, 0xc1, 0xef, 0x16, 0xe8, 0x96, 0xca, 0x11, 0x97, 0x0a, 0x3e,
    +	0xdd, 0xa9, 0x05, 0x7a, 0xb3, 0x5a, 0x68, 0xb7, 0xa9, 0xc4, 0x61, 0x79, 0x53, 0xe7, 0x2a, 0xb2,
    +	0x51, 0x87, 0x87, 0xa0, 0xc9, 0x15, 0x8b, 0xa4, 0x5d, 0xef, 0x1f, 0x0c, 0xbb, 0x27, 0x1f, 0x5c,
    +	0x9b, 0xbd, 0x7f, 0xab, 0xa4, 0x35, 0xbf, 0xd3, 0x3e, 0xbc, 0xb4, 0x0f, 0xfe, 0x6c, 0xac, 0xb2,
    +	0xd6, 0xc5, 0x81, 0x9f, 0x80, 0x8e, 0xee, 0xf3, 0x24, 0x0b, 0x99, 0xc9, 0xfa, 0xc6, 0x3a, 0x8b,
    +	0x71, 0x19, 0xc7, 0x2b, 0x05, 0x1c, 0x82, 0x8e, 0x1e, 0x8d, 0x27, 0x22, 0x66, 0x76, 0xc7, 0xa8,
    +	0x6f, 0x6a, 0xe5, 0xe3, 0x32, 0x86, 0x57, 0x5f, 0xe1, 0x4f, 0xe0, 0x8e, 0x54, 0x24, 0x55, 0x3c,
    +	0x9e, 0x7d, 0xcd, 0xc8, 0x24, 0xe4, 0x31, 0x1b, 0x33, 0x2a, 0xe2, 0x89, 0x34, 0xad, 0x3c, 0xf0,
    +	0xdf, 0x2b, 0x72, 0xf7, 0xce, 0xb8, 0x5a, 0x82, 0xf7, 0x79, 0xe1, 0x53, 0x70, 0x9b, 0x8a, 0x98,
    +	0x66, 0x69, 0xca, 0x62, 0xba, 0xf8, 0x51, 0x84, 0x9c, 0x2e, 0x4c, 0x43, 0x6f, 0xf8, 0xa8, 0xcc,
    +	0xfb, 0xf6, 0x83, 0x6d, 0xc1, 0x3f, 0x55, 0x41, 0xbc, 0x0b, 0x82, 0xf7, 0x40, 0x5b, 0x66, 0x32,
    +	0x61, 0xf1, 0xc4, 0x6e, 0xf4, 0xad, 0x61, 0xc7, 0xef, 0x16, 0xb9, 0xdb, 0x1e, 0x2f, 0x43, 0xf8,
    +	0xea, 0x1b, 0x7c, 0x06, 0xba, 0xcf, 0x45, 0xf0, 0x98, 0x45, 0x49, 0x48, 0x14, 0xb3, 0x9b, 0xa6,
    +	0xd9, 0x1f, 0xed, 0xef, 0xc8, 0xe9, 0x5a, 0x6c, 0xc6, 0xf3, 0x9d, 0x32, 0xd3, 0xee, 0xc6, 0x07,
    +	0xbc, 0x89, 0x84, 0x3f, 0x83, 0x9e, 0xcc, 0x28, 0x65, 0x52, 0x4e, 0xb3, 0xf0, 0x54, 0x04, 0xf2,
    +	0x5b, 0x2e, 0x95, 0x48, 0x17, 0x23, 0x1e, 0x71, 0x65, 0xb7, 0xfa, 0xd6, 0xb0, 0xe9, 0x3b, 0x45,
    +	0xee, 0xf6, 0xc6, 0x7b, 0x55, 0xf8, 0x35, 0x04, 0x88, 0xc1, 0xd1, 0x94, 0xf0, 0x90, 0x4d, 0x76,
    +	0xd8, 0x6d, 0xc3, 0xee, 0x15, 0xb9, 0x7b, 0xf4, 0xb0, 0x52, 0x81, 0xf7, 0x38, 0x07, 0x7f, 0xd4,
    +	0xc1, 0xad, 0x57, 0x5e, 0x0e, 0xfc, 0x1e, 0xb4, 0x08, 0x55, 0xfc, 0x5c, 0x4f, 0x96, 0x1e, 0xda,
    +	0xbb, 0x9b, 0x25, 0xd2, 0xdb, 0x6f, 0xbd, 0x09, 0x30, 0x9b, 0x32, 0xdd, 0x09, 0xb6, 0x7e, 0x6e,
    +	0x5f, 0x19, 0x2b, 0x2e, 0x11, 0x30, 0x04, 0x87, 0x21, 0x91, 0xea, 0x6a, 0x28, 0xf5, 0xc8, 0x99,
    +	0x26, 0x75, 0x4f, 0x3e, 0x7e, 0xb3, 0x67, 0xa6, 0x1d, 0xfe, 0xbb, 0x45, 0xee, 0x1e, 0x8e, 0xb6,
    +	0x38, 0x78, 0x87, 0x0c, 0x53, 0x00, 0x4d, 0x6c, 0x55, 0x42, 0x73, 0x5f, 0xf3, 0x3f, 0xdf, 0x77,
    +	0x54, 0xe4, 0x2e, 0x1c, 0xed, 0x90, 0x70, 0x05, 0x5d, 0x2f, 0x94, 0xb7, 0xb7, 0x46, 0xe5, 0x7f,
    +	0x58, 0xb0, 0xf7, 0x5f, 0x59, 0xb0, 0xef, 0x57, 0x4d, 0x31, 0x7a, 0xcd, 0x5e, 0xf5, 0xef, 0x5f,
    +	0x5c, 0x3a, 0xb5, 0x17, 0x97, 0x4e, 0xed, 0xe5, 0xa5, 0x53, 0xfb, 0xa5, 0x70, 0xac, 0x8b, 0xc2,
    +	0xb1, 0x5e, 0x14, 0x8e, 0xf5, 0xb2, 0x70, 0xac, 0xbf, 0x0a, 0xc7, 0xfa, 0xed, 0x6f, 0xa7, 0xf6,
    +	0xc4, 0xde, 0xf7, 0x7f, 0xfc, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9e, 0xaa, 0x2c, 0x86, 0xaa,
     	0x07, 0x00, 0x00,
     }
     
    diff --git a/vendor/k8s.io/api/batch/v1beta1/generated.proto b/vendor/k8s.io/api/batch/v1beta1/generated.proto
    index ac774f19adef..6dd322128dc0 100644
    --- a/vendor/k8s.io/api/batch/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/batch/v1beta1/generated.proto
    @@ -35,7 +35,7 @@ message CronJob {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of a cron job, including the schedule.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -53,7 +53,7 @@ message CronJobList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of CronJobs.
       repeated CronJob items = 2;
    @@ -116,15 +116,15 @@ message CronJobStatus {
       // A list of pointers to currently running jobs.
       // +optional
       // +listType=atomic
    -  repeated k8s.io.api.core.v1.ObjectReference active = 1;
    +  repeated .k8s.io.api.core.v1.ObjectReference active = 1;
     
       // Information when was the last time the job was successfully scheduled.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;
     
       // Information when was the last time the job successfully completed.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastSuccessfulTime = 5;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastSuccessfulTime = 5;
     }
     
     // JobTemplateSpec describes the data a Job should have when created from a template
    @@ -132,11 +132,11 @@ message JobTemplateSpec {
       // Standard object's metadata of the jobs created from this template.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the job.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       // +optional
    -  optional k8s.io.api.batch.v1.JobSpec spec = 2;
    +  optional .k8s.io.api.batch.v1.JobSpec spec = 2;
     }
     
    diff --git a/vendor/k8s.io/api/certificates/v1/doc.go b/vendor/k8s.io/api/certificates/v1/doc.go
    index fe3ea3af87fd..78434478e84a 100644
    --- a/vendor/k8s.io/api/certificates/v1/doc.go
    +++ b/vendor/k8s.io/api/certificates/v1/doc.go
    @@ -17,7 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    -
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=certificates.k8s.io
     
     package v1 // import "k8s.io/api/certificates/v1"
    diff --git a/vendor/k8s.io/api/certificates/v1/generated.pb.go b/vendor/k8s.io/api/certificates/v1/generated.pb.go
    index 37859babcd58..cba4a8ea4926 100644
    --- a/vendor/k8s.io/api/certificates/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/certificates/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/certificates/v1/generated.proto
    +// source: k8s.io/api/certificates/v1/generated.proto
     
     package v1
     
    @@ -49,7 +49,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *CertificateSigningRequest) Reset()      { *m = CertificateSigningRequest{} }
     func (*CertificateSigningRequest) ProtoMessage() {}
     func (*CertificateSigningRequest) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_17e045d0de66f3c7, []int{0}
    +	return fileDescriptor_5f7d41da689f96f7, []int{0}
     }
     func (m *CertificateSigningRequest) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -77,7 +77,7 @@ var xxx_messageInfo_CertificateSigningRequest proto.InternalMessageInfo
     func (m *CertificateSigningRequestCondition) Reset()      { *m = CertificateSigningRequestCondition{} }
     func (*CertificateSigningRequestCondition) ProtoMessage() {}
     func (*CertificateSigningRequestCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_17e045d0de66f3c7, []int{1}
    +	return fileDescriptor_5f7d41da689f96f7, []int{1}
     }
     func (m *CertificateSigningRequestCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -105,7 +105,7 @@ var xxx_messageInfo_CertificateSigningRequestCondition proto.InternalMessageInfo
     func (m *CertificateSigningRequestList) Reset()      { *m = CertificateSigningRequestList{} }
     func (*CertificateSigningRequestList) ProtoMessage() {}
     func (*CertificateSigningRequestList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_17e045d0de66f3c7, []int{2}
    +	return fileDescriptor_5f7d41da689f96f7, []int{2}
     }
     func (m *CertificateSigningRequestList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -133,7 +133,7 @@ var xxx_messageInfo_CertificateSigningRequestList proto.InternalMessageInfo
     func (m *CertificateSigningRequestSpec) Reset()      { *m = CertificateSigningRequestSpec{} }
     func (*CertificateSigningRequestSpec) ProtoMessage() {}
     func (*CertificateSigningRequestSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_17e045d0de66f3c7, []int{3}
    +	return fileDescriptor_5f7d41da689f96f7, []int{3}
     }
     func (m *CertificateSigningRequestSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -161,7 +161,7 @@ var xxx_messageInfo_CertificateSigningRequestSpec proto.InternalMessageInfo
     func (m *CertificateSigningRequestStatus) Reset()      { *m = CertificateSigningRequestStatus{} }
     func (*CertificateSigningRequestStatus) ProtoMessage() {}
     func (*CertificateSigningRequestStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_17e045d0de66f3c7, []int{4}
    +	return fileDescriptor_5f7d41da689f96f7, []int{4}
     }
     func (m *CertificateSigningRequestStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -189,7 +189,7 @@ var xxx_messageInfo_CertificateSigningRequestStatus proto.InternalMessageInfo
     func (m *ExtraValue) Reset()      { *m = ExtraValue{} }
     func (*ExtraValue) ProtoMessage() {}
     func (*ExtraValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_17e045d0de66f3c7, []int{5}
    +	return fileDescriptor_5f7d41da689f96f7, []int{5}
     }
     func (m *ExtraValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -225,68 +225,67 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/certificates/v1/generated.proto", fileDescriptor_17e045d0de66f3c7)
    +	proto.RegisterFile("k8s.io/api/certificates/v1/generated.proto", fileDescriptor_5f7d41da689f96f7)
     }
     
    -var fileDescriptor_17e045d0de66f3c7 = []byte{
    -	// 910 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xdf, 0x6e, 0x1b, 0xc5,
    -	0x17, 0xf6, 0xc6, 0x7f, 0x62, 0x8f, 0xf3, 0x4b, 0xdb, 0xd1, 0x8f, 0x6a, 0xb1, 0x54, 0xaf, 0xb5,
    -	0x82, 0x2a, 0x20, 0xd8, 0x25, 0x51, 0x81, 0x50, 0x10, 0x42, 0x9b, 0x46, 0xa8, 0x22, 0x05, 0x69,
    -	0x92, 0x70, 0x51, 0xb8, 0xe8, 0x64, 0x7d, 0xba, 0x99, 0xba, 0xfb, 0x87, 0x99, 0x59, 0xab, 0xbe,
    -	0xeb, 0x23, 0x70, 0xc9, 0x25, 0x2f, 0xc0, 0x33, 0x70, 0x9b, 0xcb, 0x5e, 0x16, 0x09, 0x59, 0xc4,
    -	0x7d, 0x8b, 0x5c, 0xa1, 0x99, 0x1d, 0xaf, 0x1d, 0x27, 0x6e, 0x4b, 0xee, 0x76, 0xce, 0xf9, 0xce,
    -	0xf7, 0x9d, 0x73, 0xe6, 0x9c, 0xd1, 0xa2, 0x9d, 0xc1, 0xb6, 0xf0, 0x58, 0xea, 0x0f, 0xf2, 0x23,
    -	0xe0, 0x09, 0x48, 0x10, 0xfe, 0x10, 0x92, 0x7e, 0xca, 0x7d, 0xe3, 0xa0, 0x19, 0xf3, 0x43, 0xe0,
    -	0x92, 0x3d, 0x66, 0x21, 0xd5, 0xee, 0x4d, 0x3f, 0x82, 0x04, 0x38, 0x95, 0xd0, 0xf7, 0x32, 0x9e,
    -	0xca, 0x14, 0x77, 0x0a, 0xac, 0x47, 0x33, 0xe6, 0xcd, 0x63, 0xbd, 0xe1, 0x66, 0xe7, 0xe3, 0x88,
    -	0xc9, 0xe3, 0xfc, 0xc8, 0x0b, 0xd3, 0xd8, 0x8f, 0xd2, 0x28, 0xf5, 0x75, 0xc8, 0x51, 0xfe, 0x58,
    -	0x9f, 0xf4, 0x41, 0x7f, 0x15, 0x54, 0x1d, 0x77, 0x5e, 0x36, 0xe5, 0x70, 0x89, 0x5c, 0xe7, 0xce,
    -	0x0c, 0x13, 0xd3, 0xf0, 0x98, 0x25, 0xc0, 0x47, 0x7e, 0x36, 0x88, 0x94, 0x41, 0xf8, 0x31, 0x48,
    -	0x7a, 0x59, 0x94, 0xbf, 0x2c, 0x8a, 0xe7, 0x89, 0x64, 0x31, 0x5c, 0x08, 0xf8, 0xec, 0x4d, 0x01,
    -	0x22, 0x3c, 0x86, 0x98, 0x2e, 0xc6, 0xb9, 0x7f, 0xae, 0xa0, 0x77, 0x77, 0x66, 0x5d, 0xd8, 0x67,
    -	0x51, 0xc2, 0x92, 0x88, 0xc0, 0x2f, 0x39, 0x08, 0x89, 0x1f, 0xa1, 0xa6, 0xca, 0xb0, 0x4f, 0x25,
    -	0xb5, 0xad, 0x9e, 0xb5, 0xd1, 0xde, 0xfa, 0xc4, 0x9b, 0xb5, 0xaf, 0x14, 0xf2, 0xb2, 0x41, 0xa4,
    -	0x0c, 0xc2, 0x53, 0x68, 0x6f, 0xb8, 0xe9, 0xfd, 0x70, 0xf4, 0x04, 0x42, 0xf9, 0x00, 0x24, 0x0d,
    -	0xf0, 0xc9, 0xd8, 0xa9, 0x4c, 0xc6, 0x0e, 0x9a, 0xd9, 0x48, 0xc9, 0x8a, 0x7f, 0x42, 0x35, 0x91,
    -	0x41, 0x68, 0xaf, 0x68, 0xf6, 0x2f, 0xbc, 0xe5, 0x97, 0xe3, 0x2d, 0x4d, 0x73, 0x3f, 0x83, 0x30,
    -	0x58, 0x33, 0x32, 0x35, 0x75, 0x22, 0x9a, 0x14, 0x87, 0xa8, 0x21, 0x24, 0x95, 0xb9, 0xb0, 0xab,
    -	0x9a, 0xfe, 0xcb, 0xab, 0xd1, 0x6b, 0x8a, 0x60, 0xdd, 0x08, 0x34, 0x8a, 0x33, 0x31, 0xd4, 0xee,
    -	0xab, 0x2a, 0x72, 0x97, 0xc6, 0xee, 0xa4, 0x49, 0x9f, 0x49, 0x96, 0x26, 0x78, 0x1b, 0xd5, 0xe4,
    -	0x28, 0x03, 0xdd, 0xc6, 0x56, 0xf0, 0xde, 0x34, 0xdb, 0x83, 0x51, 0x06, 0x67, 0x63, 0xe7, 0xff,
    -	0x8b, 0x78, 0x65, 0x27, 0x3a, 0x02, 0xef, 0x95, 0x55, 0x34, 0x74, 0xec, 0x9d, 0xf3, 0x89, 0x9c,
    -	0x8d, 0x9d, 0x4b, 0xe6, 0xd0, 0x2b, 0x99, 0xce, 0xa7, 0x8b, 0x6f, 0xa3, 0x06, 0x07, 0x2a, 0xd2,
    -	0x44, 0xb7, 0xbc, 0x35, 0x2b, 0x8b, 0x68, 0x2b, 0x31, 0x5e, 0xfc, 0x01, 0x5a, 0x8d, 0x41, 0x08,
    -	0x1a, 0x81, 0x6e, 0x5e, 0x2b, 0xb8, 0x66, 0x80, 0xab, 0x0f, 0x0a, 0x33, 0x99, 0xfa, 0xf1, 0x13,
    -	0xb4, 0xfe, 0x94, 0x0a, 0x79, 0x98, 0xf5, 0xa9, 0x84, 0x03, 0x16, 0x83, 0x5d, 0xd3, 0xed, 0xfe,
    -	0xf0, 0xed, 0x66, 0x45, 0x45, 0x04, 0x37, 0x0d, 0xfb, 0xfa, 0xde, 0x39, 0x26, 0xb2, 0xc0, 0x8c,
    -	0x87, 0x08, 0x2b, 0xcb, 0x01, 0xa7, 0x89, 0x28, 0x1a, 0xa5, 0xf4, 0xea, 0xff, 0x59, 0xaf, 0x63,
    -	0xf4, 0xf0, 0xde, 0x05, 0x36, 0x72, 0x89, 0x82, 0xfb, 0x97, 0x85, 0x6e, 0x2d, 0xbd, 0xe5, 0x3d,
    -	0x26, 0x24, 0xfe, 0xf9, 0xc2, 0xae, 0x78, 0x6f, 0x97, 0x8f, 0x8a, 0xd6, 0x9b, 0x72, 0xdd, 0xe4,
    -	0xd4, 0x9c, 0x5a, 0xe6, 0xf6, 0xe4, 0x21, 0xaa, 0x33, 0x09, 0xb1, 0xb0, 0x57, 0x7a, 0xd5, 0x8d,
    -	0xf6, 0xd6, 0xa7, 0x57, 0x9a, 0xe4, 0xe0, 0x7f, 0x46, 0xa1, 0x7e, 0x5f, 0x71, 0x91, 0x82, 0xd2,
    -	0xfd, 0xa3, 0xf6, 0x9a, 0xda, 0xd4, 0x3a, 0xe1, 0xf7, 0xd1, 0x2a, 0x2f, 0x8e, 0xba, 0xb4, 0xb5,
    -	0xa0, 0xad, 0x06, 0xc1, 0x20, 0xc8, 0xd4, 0x87, 0xb7, 0x10, 0x12, 0x2c, 0x4a, 0x80, 0x7f, 0x4f,
    -	0x63, 0xb0, 0x57, 0xf5, 0xd8, 0x94, 0xeb, 0xbf, 0x5f, 0x7a, 0xc8, 0x1c, 0x0a, 0xef, 0xa0, 0x1b,
    -	0xf0, 0x2c, 0x63, 0x9c, 0xea, 0x59, 0x85, 0x30, 0x4d, 0xfa, 0xc2, 0x6e, 0xf6, 0xac, 0x8d, 0x7a,
    -	0xf0, 0xce, 0x64, 0xec, 0xdc, 0xd8, 0x5d, 0x74, 0x92, 0x8b, 0x78, 0xec, 0xa1, 0x46, 0xae, 0x46,
    -	0x51, 0xd8, 0xf5, 0x5e, 0x75, 0xa3, 0x15, 0xdc, 0x54, 0x03, 0x7d, 0xa8, 0x2d, 0x67, 0x63, 0xa7,
    -	0xf9, 0x1d, 0x8c, 0xf4, 0x81, 0x18, 0x14, 0xfe, 0x08, 0x35, 0x73, 0x01, 0x3c, 0x51, 0x69, 0x16,
    -	0x6b, 0x50, 0xf6, 0xfe, 0xd0, 0xd8, 0x49, 0x89, 0xc0, 0xb7, 0x50, 0x35, 0x67, 0x7d, 0xb3, 0x06,
    -	0x6d, 0x03, 0xac, 0x1e, 0xde, 0xbf, 0x47, 0x94, 0x1d, 0xbb, 0xa8, 0x11, 0xf1, 0x34, 0xcf, 0x84,
    -	0x5d, 0xd3, 0xe2, 0x48, 0x89, 0x7f, 0xab, 0x2d, 0xc4, 0x78, 0x30, 0x43, 0x75, 0x78, 0x26, 0x39,
    -	0xb5, 0x1b, 0xfa, 0xfa, 0xee, 0x5d, 0xf9, 0x9d, 0xf3, 0x76, 0x15, 0xcd, 0x6e, 0x22, 0xf9, 0x68,
    -	0x76, 0x9b, 0xda, 0x46, 0x0a, 0x85, 0xce, 0x23, 0x84, 0x66, 0x18, 0x7c, 0x1d, 0x55, 0x07, 0x30,
    -	0x2a, 0x5e, 0x1d, 0xa2, 0x3e, 0xf1, 0x57, 0xa8, 0x3e, 0xa4, 0x4f, 0x73, 0x30, 0x4f, 0xee, 0xed,
    -	0xd7, 0xa5, 0xa2, 0x89, 0x7e, 0x54, 0x68, 0x52, 0x04, 0xdd, 0x5d, 0xd9, 0xb6, 0xdc, 0x13, 0x0b,
    -	0x39, 0x6f, 0x78, 0x2d, 0x31, 0x47, 0x28, 0x9c, 0xbe, 0x40, 0xc2, 0xb6, 0x74, 0xd5, 0x5f, 0x5f,
    -	0xa9, 0xea, 0xf2, 0x21, 0x9b, 0x8d, 0x52, 0x69, 0x12, 0x64, 0x4e, 0x05, 0x6f, 0xa2, 0xf6, 0x1c,
    -	0xab, 0xae, 0x6f, 0x2d, 0xb8, 0x36, 0x19, 0x3b, 0xed, 0x39, 0x72, 0x32, 0x8f, 0x71, 0x3f, 0x37,
    -	0xcd, 0xd2, 0x35, 0x62, 0x67, 0xba, 0x64, 0x96, 0xbe, 0xc8, 0xd6, 0xe2, 0xa6, 0xdc, 0x6d, 0xfe,
    -	0xf6, 0xbb, 0x53, 0x79, 0xfe, 0x77, 0xaf, 0x12, 0x7c, 0x73, 0x72, 0xda, 0xad, 0xbc, 0x38, 0xed,
    -	0x56, 0x5e, 0x9e, 0x76, 0x2b, 0xcf, 0x27, 0x5d, 0xeb, 0x64, 0xd2, 0xb5, 0x5e, 0x4c, 0xba, 0xd6,
    -	0xcb, 0x49, 0xd7, 0xfa, 0x67, 0xd2, 0xb5, 0x7e, 0x7d, 0xd5, 0xad, 0x3c, 0xec, 0x2c, 0xff, 0x2f,
    -	0xf9, 0x37, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x00, 0x0c, 0x1b, 0xcd, 0x08, 0x00, 0x00,
    +var fileDescriptor_5f7d41da689f96f7 = []byte{
    +	// 896 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4f, 0x6f, 0x1b, 0x45,
    +	0x14, 0xf7, 0xc6, 0x7f, 0x62, 0x8f, 0x43, 0xda, 0x8e, 0xa0, 0x5a, 0x2c, 0xd5, 0x6b, 0xad, 0xa0,
    +	0x0a, 0x15, 0xcc, 0x92, 0xa8, 0x40, 0x28, 0x08, 0xa1, 0x4d, 0x23, 0x54, 0x91, 0x82, 0x34, 0x49,
    +	0x38, 0x14, 0x0e, 0x9d, 0xac, 0x5f, 0x37, 0xd3, 0x74, 0xff, 0xb0, 0x33, 0x6b, 0xd5, 0xb7, 0x7e,
    +	0x04, 0x8e, 0x1c, 0xf9, 0x02, 0x7c, 0x06, 0xae, 0x39, 0xf6, 0x58, 0x24, 0x64, 0x11, 0xf7, 0x5b,
    +	0xe4, 0x84, 0x66, 0x76, 0xbc, 0x76, 0x9c, 0xb8, 0x0d, 0xb9, 0x79, 0x7e, 0xf3, 0x7b, 0xbf, 0xdf,
    +	0x7b, 0x6f, 0xdf, 0x1b, 0x19, 0xdd, 0x39, 0xda, 0x14, 0x84, 0x27, 0x1e, 0x4b, 0xb9, 0x17, 0x40,
    +	0x26, 0xf9, 0x13, 0x1e, 0x30, 0x09, 0xc2, 0x1b, 0xac, 0x7b, 0x21, 0xc4, 0x90, 0x31, 0x09, 0x7d,
    +	0x92, 0x66, 0x89, 0x4c, 0x70, 0xa7, 0xe0, 0x12, 0x96, 0x72, 0x32, 0xcb, 0x25, 0x83, 0xf5, 0xce,
    +	0x27, 0x21, 0x97, 0x87, 0xf9, 0x01, 0x09, 0x92, 0xc8, 0x0b, 0x93, 0x30, 0xf1, 0x74, 0xc8, 0x41,
    +	0xfe, 0x44, 0x9f, 0xf4, 0x41, 0xff, 0x2a, 0xa4, 0x3a, 0xee, 0xac, 0x6d, 0x92, 0xc1, 0x05, 0x76,
    +	0x9d, 0xbb, 0x53, 0x4e, 0xc4, 0x82, 0x43, 0x1e, 0x43, 0x36, 0xf4, 0xd2, 0xa3, 0x50, 0x01, 0xc2,
    +	0x8b, 0x40, 0xb2, 0x8b, 0xa2, 0xbc, 0x45, 0x51, 0x59, 0x1e, 0x4b, 0x1e, 0xc1, 0xb9, 0x80, 0xcf,
    +	0xdf, 0x16, 0x20, 0x82, 0x43, 0x88, 0xd8, 0x7c, 0x9c, 0xfb, 0xd7, 0x12, 0x7a, 0x7f, 0x6b, 0xda,
    +	0x85, 0x5d, 0x1e, 0xc6, 0x3c, 0x0e, 0x29, 0xfc, 0x9a, 0x83, 0x90, 0xf8, 0x31, 0x6a, 0xaa, 0x0c,
    +	0xfb, 0x4c, 0x32, 0xdb, 0xea, 0x59, 0x6b, 0xed, 0x8d, 0x4f, 0xc9, 0xb4, 0x7d, 0xa5, 0x11, 0x49,
    +	0x8f, 0x42, 0x05, 0x08, 0xa2, 0xd8, 0x64, 0xb0, 0x4e, 0x7e, 0x3c, 0x78, 0x0a, 0x81, 0x7c, 0x08,
    +	0x92, 0xf9, 0xf8, 0x78, 0xe4, 0x54, 0xc6, 0x23, 0x07, 0x4d, 0x31, 0x5a, 0xaa, 0xe2, 0x9f, 0x51,
    +	0x4d, 0xa4, 0x10, 0xd8, 0x4b, 0x5a, 0xfd, 0x4b, 0xb2, 0xf8, 0xe3, 0x90, 0x85, 0x69, 0xee, 0xa6,
    +	0x10, 0xf8, 0x2b, 0xc6, 0xa6, 0xa6, 0x4e, 0x54, 0x8b, 0xe2, 0x00, 0x35, 0x84, 0x64, 0x32, 0x17,
    +	0x76, 0x55, 0xcb, 0x7f, 0x75, 0x35, 0x79, 0x2d, 0xe1, 0xaf, 0x1a, 0x83, 0x46, 0x71, 0xa6, 0x46,
    +	0xda, 0x7d, 0x5d, 0x45, 0xee, 0xc2, 0xd8, 0xad, 0x24, 0xee, 0x73, 0xc9, 0x93, 0x18, 0x6f, 0xa2,
    +	0x9a, 0x1c, 0xa6, 0xa0, 0xdb, 0xd8, 0xf2, 0x3f, 0x98, 0x64, 0xbb, 0x37, 0x4c, 0xe1, 0x74, 0xe4,
    +	0xbc, 0x3b, 0xcf, 0x57, 0x38, 0xd5, 0x11, 0x78, 0xa7, 0xac, 0xa2, 0xa1, 0x63, 0xef, 0x9e, 0x4d,
    +	0xe4, 0x74, 0xe4, 0x5c, 0x30, 0x87, 0xa4, 0x54, 0x3a, 0x9b, 0x2e, 0xbe, 0x8d, 0x1a, 0x19, 0x30,
    +	0x91, 0xc4, 0xba, 0xe5, 0xad, 0x69, 0x59, 0x54, 0xa3, 0xd4, 0xdc, 0xe2, 0x8f, 0xd0, 0x72, 0x04,
    +	0x42, 0xb0, 0x10, 0x74, 0xf3, 0x5a, 0xfe, 0x35, 0x43, 0x5c, 0x7e, 0x58, 0xc0, 0x74, 0x72, 0x8f,
    +	0x9f, 0xa2, 0xd5, 0x67, 0x4c, 0xc8, 0xfd, 0xb4, 0xcf, 0x24, 0xec, 0xf1, 0x08, 0xec, 0x9a, 0x6e,
    +	0xf7, 0x9d, 0xcb, 0xcd, 0x8a, 0x8a, 0xf0, 0x6f, 0x1a, 0xf5, 0xd5, 0x9d, 0x33, 0x4a, 0x74, 0x4e,
    +	0x19, 0x0f, 0x10, 0x56, 0xc8, 0x5e, 0xc6, 0x62, 0x51, 0x34, 0x4a, 0xf9, 0xd5, 0xff, 0xb7, 0x5f,
    +	0xc7, 0xf8, 0xe1, 0x9d, 0x73, 0x6a, 0xf4, 0x02, 0x07, 0xf7, 0x6f, 0x0b, 0xdd, 0x5a, 0xf8, 0x95,
    +	0x77, 0xb8, 0x90, 0xf8, 0x97, 0x73, 0xbb, 0x42, 0x2e, 0x97, 0x8f, 0x8a, 0xd6, 0x9b, 0x72, 0xdd,
    +	0xe4, 0xd4, 0x9c, 0x20, 0x33, 0x7b, 0xf2, 0x08, 0xd5, 0xb9, 0x84, 0x48, 0xd8, 0x4b, 0xbd, 0xea,
    +	0x5a, 0x7b, 0xe3, 0xb3, 0x2b, 0x4d, 0xb2, 0xff, 0x8e, 0x71, 0xa8, 0x3f, 0x50, 0x5a, 0xb4, 0x90,
    +	0x74, 0xff, 0xac, 0xbd, 0xa1, 0x36, 0xb5, 0x4e, 0xf8, 0x43, 0xb4, 0x9c, 0x15, 0x47, 0x5d, 0xda,
    +	0x8a, 0xdf, 0x56, 0x83, 0x60, 0x18, 0x74, 0x72, 0x87, 0x37, 0x10, 0x12, 0x3c, 0x8c, 0x21, 0xfb,
    +	0x81, 0x45, 0x60, 0x2f, 0xeb, 0xb1, 0x29, 0xd7, 0x7f, 0xb7, 0xbc, 0xa1, 0x33, 0x2c, 0xbc, 0x85,
    +	0x6e, 0xc0, 0xf3, 0x94, 0x67, 0x4c, 0xcf, 0x2a, 0x04, 0x49, 0xdc, 0x17, 0x76, 0xb3, 0x67, 0xad,
    +	0xd5, 0xfd, 0xf7, 0xc6, 0x23, 0xe7, 0xc6, 0xf6, 0xfc, 0x25, 0x3d, 0xcf, 0xc7, 0x04, 0x35, 0x72,
    +	0x35, 0x8a, 0xc2, 0xae, 0xf7, 0xaa, 0x6b, 0x2d, 0xff, 0xa6, 0x1a, 0xe8, 0x7d, 0x8d, 0x9c, 0x8e,
    +	0x9c, 0xe6, 0xf7, 0x30, 0xd4, 0x07, 0x6a, 0x58, 0xf8, 0x63, 0xd4, 0xcc, 0x05, 0x64, 0xb1, 0x4a,
    +	0xb3, 0x58, 0x83, 0xb2, 0xf7, 0xfb, 0x06, 0xa7, 0x25, 0x03, 0xdf, 0x42, 0xd5, 0x9c, 0xf7, 0xcd,
    +	0x1a, 0xb4, 0x0d, 0xb1, 0xba, 0xff, 0xe0, 0x3e, 0x55, 0x38, 0x76, 0x51, 0x23, 0xcc, 0x92, 0x3c,
    +	0x15, 0x76, 0x4d, 0x9b, 0x23, 0x65, 0xfe, 0x9d, 0x46, 0xa8, 0xb9, 0xc1, 0x1c, 0xd5, 0xe1, 0xb9,
    +	0xcc, 0x98, 0xdd, 0xd0, 0x9f, 0xef, 0xfe, 0x95, 0xdf, 0x39, 0xb2, 0xad, 0x64, 0xb6, 0x63, 0x99,
    +	0x0d, 0xa7, 0x5f, 0x53, 0x63, 0xb4, 0x70, 0xe8, 0x3c, 0x46, 0x68, 0xca, 0xc1, 0xd7, 0x51, 0xf5,
    +	0x08, 0x86, 0xc5, 0xab, 0x43, 0xd5, 0x4f, 0xfc, 0x35, 0xaa, 0x0f, 0xd8, 0xb3, 0x1c, 0xcc, 0x93,
    +	0x7b, 0xfb, 0x4d, 0xa9, 0x68, 0xa1, 0x9f, 0x14, 0x9b, 0x16, 0x41, 0xf7, 0x96, 0x36, 0x2d, 0xf7,
    +	0xd8, 0x42, 0xce, 0x5b, 0x5e, 0x4b, 0x9c, 0x21, 0x14, 0x4c, 0x5e, 0x20, 0x61, 0x5b, 0xba, 0xea,
    +	0x6f, 0xae, 0x54, 0x75, 0xf9, 0x90, 0x4d, 0x47, 0xa9, 0x84, 0x04, 0x9d, 0x71, 0xc1, 0xeb, 0xa8,
    +	0x3d, 0xa3, 0xaa, 0xeb, 0x5b, 0xf1, 0xaf, 0x8d, 0x47, 0x4e, 0x7b, 0x46, 0x9c, 0xce, 0x72, 0xdc,
    +	0x2f, 0x4c, 0xb3, 0x74, 0x8d, 0xd8, 0x99, 0x2c, 0x99, 0xa5, 0x3f, 0x64, 0x6b, 0x7e, 0x53, 0xee,
    +	0x35, 0x7f, 0xff, 0xc3, 0xa9, 0xbc, 0xf8, 0xa7, 0x57, 0xf1, 0xbf, 0x3d, 0x3e, 0xe9, 0x56, 0x5e,
    +	0x9e, 0x74, 0x2b, 0xaf, 0x4e, 0xba, 0x95, 0x17, 0xe3, 0xae, 0x75, 0x3c, 0xee, 0x5a, 0x2f, 0xc7,
    +	0x5d, 0xeb, 0xd5, 0xb8, 0x6b, 0xfd, 0x3b, 0xee, 0x5a, 0xbf, 0xbd, 0xee, 0x56, 0x1e, 0x75, 0x16,
    +	0xff, 0x2f, 0xf9, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xd9, 0x4a, 0x4f, 0xbc, 0xb4, 0x08, 0x00, 0x00,
     }
     
     func (m *CertificateSigningRequest) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/certificates/v1/generated.proto b/vendor/k8s.io/api/certificates/v1/generated.proto
    index 968cc2564c1f..dac7c7f5f229 100644
    --- a/vendor/k8s.io/api/certificates/v1/generated.proto
    +++ b/vendor/k8s.io/api/certificates/v1/generated.proto
    @@ -41,7 +41,7 @@ option go_package = "k8s.io/api/certificates/v1";
     // or to obtain certificates from custom non-Kubernetes signers.
     message CertificateSigningRequest {
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec contains the certificate request, and is immutable after creation.
       // Only the request, signerName, expirationSeconds, and usages fields can be set on creation.
    @@ -87,19 +87,19 @@ message CertificateSigningRequestCondition {
     
       // lastUpdateTime is the time of the last update to this condition
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 4;
     
       // lastTransitionTime is the time the condition last transitioned from one status to another.
       // If unset, when a new condition type is added or an existing condition's status is changed,
       // the server defaults this to the current time.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 5;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 5;
     }
     
     // CertificateSigningRequestList is a collection of CertificateSigningRequest objects
     message CertificateSigningRequestList {
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a collection of CertificateSigningRequest objects
       repeated CertificateSigningRequest items = 2;
    diff --git a/vendor/k8s.io/api/certificates/v1/types.go b/vendor/k8s.io/api/certificates/v1/types.go
    index 92b2018e761a..ba8009840d82 100644
    --- a/vendor/k8s.io/api/certificates/v1/types.go
    +++ b/vendor/k8s.io/api/certificates/v1/types.go
    @@ -27,6 +27,7 @@ import (
     // +genclient:nonNamespaced
     // +genclient:method=UpdateApproval,verb=update,subresource=approval,input=k8s.io/api/certificates/v1.CertificateSigningRequest,result=k8s.io/api/certificates/v1.CertificateSigningRequest
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // CertificateSigningRequest objects provide a mechanism to obtain x509 certificates
     // by submitting a certificate signing request, and having it asynchronously approved and issued.
    @@ -262,6 +263,7 @@ type CertificateSigningRequestCondition struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // CertificateSigningRequestList is a collection of CertificateSigningRequest objects
     type CertificateSigningRequestList struct {
    diff --git a/vendor/k8s.io/api/certificates/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/certificates/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..3a2b27403057
    --- /dev/null
    +++ b/vendor/k8s.io/api/certificates/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,34 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CertificateSigningRequest) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CertificateSigningRequestList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/generated.pb.go b/vendor/k8s.io/api/certificates/v1alpha1/generated.pb.go
    index 546ecbefbf78..a62a40059639 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/generated.pb.go
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/certificates/v1alpha1/generated.proto
    +// source: k8s.io/api/certificates/v1alpha1/generated.proto
     
     package v1alpha1
     
    @@ -46,7 +46,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ClusterTrustBundle) Reset()      { *m = ClusterTrustBundle{} }
     func (*ClusterTrustBundle) ProtoMessage() {}
     func (*ClusterTrustBundle) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_8915b0d419f9eda6, []int{0}
    +	return fileDescriptor_f73d5fe56c015bb8, []int{0}
     }
     func (m *ClusterTrustBundle) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -74,7 +74,7 @@ var xxx_messageInfo_ClusterTrustBundle proto.InternalMessageInfo
     func (m *ClusterTrustBundleList) Reset()      { *m = ClusterTrustBundleList{} }
     func (*ClusterTrustBundleList) ProtoMessage() {}
     func (*ClusterTrustBundleList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_8915b0d419f9eda6, []int{1}
    +	return fileDescriptor_f73d5fe56c015bb8, []int{1}
     }
     func (m *ClusterTrustBundleList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -102,7 +102,7 @@ var xxx_messageInfo_ClusterTrustBundleList proto.InternalMessageInfo
     func (m *ClusterTrustBundleSpec) Reset()      { *m = ClusterTrustBundleSpec{} }
     func (*ClusterTrustBundleSpec) ProtoMessage() {}
     func (*ClusterTrustBundleSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_8915b0d419f9eda6, []int{2}
    +	return fileDescriptor_f73d5fe56c015bb8, []int{2}
     }
     func (m *ClusterTrustBundleSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -134,39 +134,39 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/certificates/v1alpha1/generated.proto", fileDescriptor_8915b0d419f9eda6)
    -}
    -
    -var fileDescriptor_8915b0d419f9eda6 = []byte{
    -	// 448 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xcf, 0x6b, 0x13, 0x41,
    -	0x14, 0xc7, 0x77, 0x6a, 0x0b, 0xed, 0x44, 0x41, 0x56, 0x90, 0x90, 0xc3, 0x34, 0xe4, 0xd4, 0x8b,
    -	0x33, 0x26, 0x54, 0xe9, 0x79, 0x05, 0xa1, 0xe0, 0x0f, 0xd8, 0x7a, 0xb1, 0x78, 0x70, 0x32, 0x79,
    -	0xdd, 0x8c, 0xc9, 0xee, 0x0e, 0x33, 0xb3, 0x01, 0x6f, 0x82, 0xff, 0x80, 0x7f, 0x56, 0x8e, 0xd5,
    -	0x53, 0x4f, 0xc5, 0xac, 0xff, 0x88, 0xcc, 0x64, 0x93, 0x5d, 0x5c, 0x25, 0xd2, 0xdb, 0xbe, 0x1f,
    -	0x9f, 0xef, 0x7b, 0xdf, 0xb7, 0x0c, 0x3e, 0x9f, 0x9d, 0x19, 0x2a, 0x73, 0x36, 0x2b, 0xc6, 0xa0,
    -	0x33, 0xb0, 0x60, 0xd8, 0x02, 0xb2, 0x49, 0xae, 0x59, 0x55, 0xe0, 0x4a, 0x32, 0x01, 0xda, 0xca,
    -	0x2b, 0x29, 0xb8, 0x2f, 0x0f, 0xf9, 0x5c, 0x4d, 0xf9, 0x90, 0x25, 0x90, 0x81, 0xe6, 0x16, 0x26,
    -	0x54, 0xe9, 0xdc, 0xe6, 0x61, 0x7f, 0x4d, 0x50, 0xae, 0x24, 0x6d, 0x12, 0x74, 0x43, 0xf4, 0x9e,
    -	0x24, 0xd2, 0x4e, 0x8b, 0x31, 0x15, 0x79, 0xca, 0x92, 0x3c, 0xc9, 0x99, 0x07, 0xc7, 0xc5, 0x95,
    -	0x8f, 0x7c, 0xe0, 0xbf, 0xd6, 0x82, 0xbd, 0xd3, 0x7a, 0x85, 0x94, 0x8b, 0xa9, 0xcc, 0x40, 0x7f,
    -	0x66, 0x6a, 0x96, 0xb8, 0x84, 0x61, 0x29, 0x58, 0xce, 0x16, 0xad, 0x35, 0x7a, 0xec, 0x5f, 0x94,
    -	0x2e, 0x32, 0x2b, 0x53, 0x68, 0x01, 0xcf, 0x77, 0x01, 0x46, 0x4c, 0x21, 0xe5, 0x7f, 0x72, 0x83,
    -	0x1f, 0x08, 0x87, 0x2f, 0xe6, 0x85, 0xb1, 0xa0, 0xdf, 0xe9, 0xc2, 0xd8, 0xa8, 0xc8, 0x26, 0x73,
    -	0x08, 0x3f, 0xe2, 0x43, 0xb7, 0xda, 0x84, 0x5b, 0xde, 0x45, 0x7d, 0x74, 0xd2, 0x19, 0x3d, 0xa5,
    -	0xf5, 0x65, 0xb6, 0x13, 0xa8, 0x9a, 0x25, 0x2e, 0x61, 0xa8, 0xeb, 0xa6, 0x8b, 0x21, 0x7d, 0x3b,
    -	0xfe, 0x04, 0xc2, 0xbe, 0x06, 0xcb, 0xa3, 0x70, 0x79, 0x7b, 0x1c, 0x94, 0xb7, 0xc7, 0xb8, 0xce,
    -	0xc5, 0x5b, 0xd5, 0xf0, 0x12, 0xef, 0x1b, 0x05, 0xa2, 0xbb, 0xe7, 0xd5, 0xcf, 0xe8, 0xae, 0xbb,
    -	0xd3, 0xf6, 0x96, 0x17, 0x0a, 0x44, 0x74, 0xbf, 0x9a, 0xb2, 0xef, 0xa2, 0xd8, 0x6b, 0x0e, 0xbe,
    -	0x23, 0xfc, 0xb8, 0xdd, 0xfe, 0x4a, 0x1a, 0x1b, 0x7e, 0x68, 0x19, 0xa3, 0xff, 0x67, 0xcc, 0xd1,
    -	0xde, 0xd6, 0xc3, 0x6a, 0xe0, 0xe1, 0x26, 0xd3, 0x30, 0xf5, 0x1e, 0x1f, 0x48, 0x0b, 0xa9, 0xe9,
    -	0xee, 0xf5, 0xef, 0x9d, 0x74, 0x46, 0xa7, 0x77, 0x71, 0x15, 0x3d, 0xa8, 0x06, 0x1c, 0x9c, 0x3b,
    -	0xa9, 0x78, 0xad, 0x38, 0xf8, 0xfa, 0x57, 0x4f, 0xce, 0x74, 0x38, 0xc2, 0xd8, 0xc8, 0x24, 0x03,
    -	0xfd, 0x86, 0xa7, 0xe0, 0x5d, 0x1d, 0xd5, 0xc7, 0xbf, 0xd8, 0x56, 0xe2, 0x46, 0x57, 0xf8, 0x0c,
    -	0x77, 0x6c, 0x2d, 0xe3, 0xff, 0xc2, 0x51, 0xf4, 0xa8, 0x82, 0x3a, 0x8d, 0x09, 0x71, 0xb3, 0x2f,
    -	0x7a, 0xb9, 0x5c, 0x91, 0xe0, 0x7a, 0x45, 0x82, 0x9b, 0x15, 0x09, 0xbe, 0x94, 0x04, 0x2d, 0x4b,
    -	0x82, 0xae, 0x4b, 0x82, 0x6e, 0x4a, 0x82, 0x7e, 0x96, 0x04, 0x7d, 0xfb, 0x45, 0x82, 0xcb, 0xfe,
    -	0xae, 0x67, 0xf7, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x05, 0xe9, 0xaa, 0x07, 0xb2, 0x03, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/certificates/v1alpha1/generated.proto", fileDescriptor_f73d5fe56c015bb8)
    +}
    +
    +var fileDescriptor_f73d5fe56c015bb8 = []byte{
    +	// 437 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xcf, 0x6a, 0xdb, 0x40,
    +	0x10, 0xc6, 0xb5, 0x69, 0x02, 0xc9, 0xba, 0x85, 0xa2, 0x42, 0x31, 0x3e, 0x6c, 0x8c, 0x4f, 0xb9,
    +	0x74, 0x37, 0x36, 0x69, 0xc9, 0x59, 0x85, 0x42, 0xa1, 0x7f, 0x40, 0xe9, 0xa5, 0xa1, 0x87, 0xae,
    +	0xd7, 0x13, 0x79, 0x6b, 0x4b, 0x5a, 0x76, 0x57, 0x86, 0xde, 0x0a, 0x7d, 0x81, 0x3e, 0x96, 0x8f,
    +	0x69, 0x4f, 0x39, 0x85, 0x5a, 0x7d, 0x91, 0xb2, 0x6b, 0xd9, 0x12, 0x55, 0x8b, 0x4b, 0x6e, 0x9a,
    +	0xd1, 0xfc, 0xbe, 0x6f, 0xbe, 0x11, 0xc2, 0xa7, 0xb3, 0x73, 0x43, 0x65, 0xce, 0xb8, 0x92, 0x4c,
    +	0x80, 0xb6, 0xf2, 0x4a, 0x0a, 0x6e, 0xc1, 0xb0, 0xc5, 0x90, 0xcf, 0xd5, 0x94, 0x0f, 0x59, 0x02,
    +	0x19, 0x68, 0x6e, 0x61, 0x42, 0x95, 0xce, 0x6d, 0x1e, 0xf6, 0xd7, 0x04, 0xe5, 0x4a, 0xd2, 0x26,
    +	0x41, 0x37, 0x44, 0xef, 0x49, 0x22, 0xed, 0xb4, 0x18, 0x53, 0x91, 0xa7, 0x2c, 0xc9, 0x93, 0x9c,
    +	0x79, 0x70, 0x5c, 0x5c, 0xf9, 0xca, 0x17, 0xfe, 0x69, 0x2d, 0xd8, 0x3b, 0xab, 0x57, 0x48, 0xb9,
    +	0x98, 0xca, 0x0c, 0xf4, 0x67, 0xa6, 0x66, 0x89, 0x6b, 0x18, 0x96, 0x82, 0xe5, 0x6c, 0xd1, 0x5a,
    +	0xa3, 0xc7, 0xfe, 0x45, 0xe9, 0x22, 0xb3, 0x32, 0x85, 0x16, 0xf0, 0x6c, 0x17, 0x60, 0xc4, 0x14,
    +	0x52, 0xfe, 0x27, 0x37, 0xf8, 0x81, 0x70, 0xf8, 0x7c, 0x5e, 0x18, 0x0b, 0xfa, 0x9d, 0x2e, 0x8c,
    +	0x8d, 0x8a, 0x6c, 0x32, 0x87, 0xf0, 0x23, 0x3e, 0x74, 0xab, 0x4d, 0xb8, 0xe5, 0x5d, 0xd4, 0x47,
    +	0x27, 0x9d, 0xd1, 0x29, 0xad, 0x2f, 0xb3, 0x75, 0xa0, 0x6a, 0x96, 0xb8, 0x86, 0xa1, 0x6e, 0x9a,
    +	0x2e, 0x86, 0xf4, 0xed, 0xf8, 0x13, 0x08, 0xfb, 0x1a, 0x2c, 0x8f, 0xc2, 0xe5, 0xed, 0x71, 0x50,
    +	0xde, 0x1e, 0xe3, 0xba, 0x17, 0x6f, 0x55, 0xc3, 0x4b, 0xbc, 0x6f, 0x14, 0x88, 0xee, 0x9e, 0x57,
    +	0x3f, 0xa7, 0xbb, 0xee, 0x4e, 0xdb, 0x5b, 0x5e, 0x28, 0x10, 0xd1, 0xfd, 0xca, 0x65, 0xdf, 0x55,
    +	0xb1, 0xd7, 0x1c, 0x7c, 0x47, 0xf8, 0x71, 0x7b, 0xfc, 0x95, 0x34, 0x36, 0xfc, 0xd0, 0x0a, 0x46,
    +	0xff, 0x2f, 0x98, 0xa3, 0x7d, 0xac, 0x87, 0x95, 0xe1, 0xe1, 0xa6, 0xd3, 0x08, 0xf5, 0x1e, 0x1f,
    +	0x48, 0x0b, 0xa9, 0xe9, 0xee, 0xf5, 0xef, 0x9d, 0x74, 0x46, 0x67, 0x77, 0x49, 0x15, 0x3d, 0xa8,
    +	0x0c, 0x0e, 0x5e, 0x3a, 0xa9, 0x78, 0xad, 0x38, 0xf8, 0xfa, 0xd7, 0x4c, 0x2e, 0x74, 0x38, 0xc2,
    +	0xd8, 0xc8, 0x24, 0x03, 0xfd, 0x86, 0xa7, 0xe0, 0x53, 0x1d, 0xd5, 0xc7, 0xbf, 0xd8, 0xbe, 0x89,
    +	0x1b, 0x53, 0xe1, 0x53, 0xdc, 0xb1, 0xb5, 0x8c, 0xff, 0x0a, 0x47, 0xd1, 0xa3, 0x0a, 0xea, 0x34,
    +	0x1c, 0xe2, 0xe6, 0x5c, 0xf4, 0x62, 0xb9, 0x22, 0xc1, 0xf5, 0x8a, 0x04, 0x37, 0x2b, 0x12, 0x7c,
    +	0x29, 0x09, 0x5a, 0x96, 0x04, 0x5d, 0x97, 0x04, 0xdd, 0x94, 0x04, 0xfd, 0x2c, 0x09, 0xfa, 0xf6,
    +	0x8b, 0x04, 0x97, 0xfd, 0x5d, 0xbf, 0xdd, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x1c, 0xcb,
    +	0xdd, 0x99, 0x03, 0x00, 0x00,
     }
     
     func (m *ClusterTrustBundle) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/generated.proto b/vendor/k8s.io/api/certificates/v1alpha1/generated.proto
    index b0ebc4bd4580..7155f778cffc 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/generated.proto
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/generated.proto
    @@ -46,7 +46,7 @@ option go_package = "k8s.io/api/certificates/v1alpha1";
     message ClusterTrustBundle {
       // metadata contains the object metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec contains the signer (if any) and trust anchors.
       optional ClusterTrustBundleSpec spec = 2;
    @@ -57,7 +57,7 @@ message ClusterTrustBundleList {
       // metadata contains the list metadata.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a collection of ClusterTrustBundle objects
       repeated ClusterTrustBundle items = 2;
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/types.go b/vendor/k8s.io/api/certificates/v1alpha1/types.go
    index 1a9fda01123c..beef02599d07 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/types.go
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/types.go
    @@ -23,6 +23,7 @@ import (
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:prerelease-lifecycle-gen:introduced=1.26
    +// +k8s:prerelease-lifecycle-gen:deprecated=1.34
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
     
     // ClusterTrustBundle is a cluster-scoped container for X.509 trust anchors
    @@ -90,6 +91,7 @@ type ClusterTrustBundleSpec struct {
     }
     
     // +k8s:prerelease-lifecycle-gen:introduced=1.26
    +// +k8s:prerelease-lifecycle-gen:deprecated=1.34
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
     
     // ClusterTrustBundleList is a collection of ClusterTrustBundle objects
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.prerelease-lifecycle.go
    index dfafa656cccf..3121a87d0826 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.prerelease-lifecycle.go
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.prerelease-lifecycle.go
    @@ -30,13 +30,13 @@ func (in *ClusterTrustBundle) APILifecycleIntroduced() (major, minor int) {
     // APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
     // It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
     func (in *ClusterTrustBundle) APILifecycleDeprecated() (major, minor int) {
    -	return 1, 29
    +	return 1, 34
     }
     
     // APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
     // It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
     func (in *ClusterTrustBundle) APILifecycleRemoved() (major, minor int) {
    -	return 1, 32
    +	return 1, 37
     }
     
     // APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    @@ -48,11 +48,11 @@ func (in *ClusterTrustBundleList) APILifecycleIntroduced() (major, minor int) {
     // APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
     // It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
     func (in *ClusterTrustBundleList) APILifecycleDeprecated() (major, minor int) {
    -	return 1, 29
    +	return 1, 34
     }
     
     // APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
     // It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
     func (in *ClusterTrustBundleList) APILifecycleRemoved() (major, minor int) {
    -	return 1, 32
    +	return 1, 37
     }
    diff --git a/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go b/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go
    index 352b9faa7a6a..b6d8ab3f5996 100644
    --- a/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/certificates/v1beta1/generated.proto
    +// source: k8s.io/api/certificates/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -49,7 +49,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *CertificateSigningRequest) Reset()      { *m = CertificateSigningRequest{} }
     func (*CertificateSigningRequest) ProtoMessage() {}
     func (*CertificateSigningRequest) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_09d156762b8218ef, []int{0}
    +	return fileDescriptor_6529c11a462c48a5, []int{0}
     }
     func (m *CertificateSigningRequest) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -77,7 +77,7 @@ var xxx_messageInfo_CertificateSigningRequest proto.InternalMessageInfo
     func (m *CertificateSigningRequestCondition) Reset()      { *m = CertificateSigningRequestCondition{} }
     func (*CertificateSigningRequestCondition) ProtoMessage() {}
     func (*CertificateSigningRequestCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_09d156762b8218ef, []int{1}
    +	return fileDescriptor_6529c11a462c48a5, []int{1}
     }
     func (m *CertificateSigningRequestCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -105,7 +105,7 @@ var xxx_messageInfo_CertificateSigningRequestCondition proto.InternalMessageInfo
     func (m *CertificateSigningRequestList) Reset()      { *m = CertificateSigningRequestList{} }
     func (*CertificateSigningRequestList) ProtoMessage() {}
     func (*CertificateSigningRequestList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_09d156762b8218ef, []int{2}
    +	return fileDescriptor_6529c11a462c48a5, []int{2}
     }
     func (m *CertificateSigningRequestList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -133,7 +133,7 @@ var xxx_messageInfo_CertificateSigningRequestList proto.InternalMessageInfo
     func (m *CertificateSigningRequestSpec) Reset()      { *m = CertificateSigningRequestSpec{} }
     func (*CertificateSigningRequestSpec) ProtoMessage() {}
     func (*CertificateSigningRequestSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_09d156762b8218ef, []int{3}
    +	return fileDescriptor_6529c11a462c48a5, []int{3}
     }
     func (m *CertificateSigningRequestSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -161,7 +161,7 @@ var xxx_messageInfo_CertificateSigningRequestSpec proto.InternalMessageInfo
     func (m *CertificateSigningRequestStatus) Reset()      { *m = CertificateSigningRequestStatus{} }
     func (*CertificateSigningRequestStatus) ProtoMessage() {}
     func (*CertificateSigningRequestStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_09d156762b8218ef, []int{4}
    +	return fileDescriptor_6529c11a462c48a5, []int{4}
     }
     func (m *CertificateSigningRequestStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -189,7 +189,7 @@ var xxx_messageInfo_CertificateSigningRequestStatus proto.InternalMessageInfo
     func (m *ExtraValue) Reset()      { *m = ExtraValue{} }
     func (*ExtraValue) ProtoMessage() {}
     func (*ExtraValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_09d156762b8218ef, []int{5}
    +	return fileDescriptor_6529c11a462c48a5, []int{5}
     }
     func (m *ExtraValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -225,69 +225,68 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/certificates/v1beta1/generated.proto", fileDescriptor_09d156762b8218ef)
    +	proto.RegisterFile("k8s.io/api/certificates/v1beta1/generated.proto", fileDescriptor_6529c11a462c48a5)
     }
     
    -var fileDescriptor_09d156762b8218ef = []byte{
    -	// 915 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x5d, 0x6f, 0x1b, 0x45,
    -	0x17, 0xf6, 0xc6, 0x1f, 0xb1, 0xc7, 0x79, 0xd3, 0x76, 0xf4, 0x52, 0x2d, 0x96, 0xea, 0xb5, 0x2c,
    -	0x40, 0xe1, 0x6b, 0x96, 0x54, 0x15, 0x44, 0xb9, 0x40, 0xb0, 0x21, 0x82, 0x88, 0x14, 0xa4, 0x49,
    -	0xc2, 0x05, 0x42, 0xa2, 0xe3, 0xf5, 0xe9, 0x66, 0xea, 0xee, 0x07, 0x3b, 0xb3, 0xa6, 0xbe, 0xeb,
    -	0x4f, 0xe0, 0x92, 0x4b, 0xfe, 0x03, 0x7f, 0x22, 0x5c, 0x20, 0xf5, 0xb2, 0x17, 0xc8, 0x22, 0xee,
    -	0xbf, 0xc8, 0x15, 0x9a, 0xd9, 0xf1, 0xda, 0xb1, 0x13, 0x5c, 0xda, 0xbb, 0x9d, 0x67, 0xce, 0xf3,
    -	0x3c, 0x67, 0xce, 0x9c, 0x33, 0x36, 0xfa, 0x6a, 0xb0, 0x23, 0x08, 0x8f, 0xdd, 0x41, 0xd6, 0x83,
    -	0x34, 0x02, 0x09, 0xc2, 0x1d, 0x42, 0xd4, 0x8f, 0x53, 0xd7, 0x6c, 0xb0, 0x84, 0xbb, 0x3e, 0xa4,
    -	0x92, 0x3f, 0xe4, 0x3e, 0xd3, 0xdb, 0xdb, 0x3d, 0x90, 0x6c, 0xdb, 0x0d, 0x20, 0x82, 0x94, 0x49,
    -	0xe8, 0x93, 0x24, 0x8d, 0x65, 0x8c, 0x9d, 0x9c, 0x40, 0x58, 0xc2, 0xc9, 0x3c, 0x81, 0x18, 0x42,
    -	0xeb, 0xc3, 0x80, 0xcb, 0xd3, 0xac, 0x47, 0xfc, 0x38, 0x74, 0x83, 0x38, 0x88, 0x5d, 0xcd, 0xeb,
    -	0x65, 0x0f, 0xf5, 0x4a, 0x2f, 0xf4, 0x57, 0xae, 0xd7, 0xea, 0xce, 0x27, 0x10, 0xa7, 0xe0, 0x0e,
    -	0x97, 0x3c, 0x5b, 0xf7, 0x66, 0x31, 0x21, 0xf3, 0x4f, 0x79, 0x04, 0xe9, 0xc8, 0x4d, 0x06, 0x81,
    -	0x02, 0x84, 0x1b, 0x82, 0x64, 0x57, 0xb1, 0xdc, 0xeb, 0x58, 0x69, 0x16, 0x49, 0x1e, 0xc2, 0x12,
    -	0xe1, 0xe3, 0x55, 0x04, 0xe1, 0x9f, 0x42, 0xc8, 0x16, 0x79, 0xdd, 0x3f, 0xd6, 0xd0, 0x9b, 0x7b,
    -	0xb3, 0x52, 0x1c, 0xf1, 0x20, 0xe2, 0x51, 0x40, 0xe1, 0xa7, 0x0c, 0x84, 0xc4, 0x0f, 0x50, 0x5d,
    -	0x65, 0xd8, 0x67, 0x92, 0xd9, 0x56, 0xc7, 0xda, 0x6a, 0xde, 0xfd, 0x88, 0xcc, 0x6a, 0x58, 0x18,
    -	0x91, 0x64, 0x10, 0x28, 0x40, 0x10, 0x15, 0x4d, 0x86, 0xdb, 0xe4, 0xdb, 0xde, 0x23, 0xf0, 0xe5,
    -	0x7d, 0x90, 0xcc, 0xc3, 0x67, 0x63, 0xa7, 0x34, 0x19, 0x3b, 0x68, 0x86, 0xd1, 0x42, 0x15, 0x3f,
    -	0x40, 0x15, 0x91, 0x80, 0x6f, 0xaf, 0x69, 0xf5, 0x4f, 0xc9, 0x8a, 0x1b, 0x22, 0xd7, 0xe6, 0x7a,
    -	0x94, 0x80, 0xef, 0x6d, 0x18, 0xaf, 0x8a, 0x5a, 0x51, 0xad, 0x8c, 0x4f, 0x51, 0x4d, 0x48, 0x26,
    -	0x33, 0x61, 0x97, 0xb5, 0xc7, 0x67, 0xaf, 0xe1, 0xa1, 0x75, 0xbc, 0x4d, 0xe3, 0x52, 0xcb, 0xd7,
    -	0xd4, 0xe8, 0x77, 0x5f, 0x94, 0x51, 0xf7, 0x5a, 0xee, 0x5e, 0x1c, 0xf5, 0xb9, 0xe4, 0x71, 0x84,
    -	0x77, 0x50, 0x45, 0x8e, 0x12, 0xd0, 0x05, 0x6d, 0x78, 0x6f, 0x4d, 0x53, 0x3e, 0x1e, 0x25, 0x70,
    -	0x31, 0x76, 0xfe, 0xbf, 0x18, 0xaf, 0x70, 0xaa, 0x19, 0xf8, 0xb0, 0x38, 0x4a, 0x4d, 0x73, 0xef,
    -	0x5d, 0x4e, 0xe4, 0x62, 0xec, 0x5c, 0xd1, 0x91, 0xa4, 0x50, 0xba, 0x9c, 0x2e, 0x7e, 0x07, 0xd5,
    -	0x52, 0x60, 0x22, 0x8e, 0x74, 0xf1, 0x1b, 0xb3, 0x63, 0x51, 0x8d, 0x52, 0xb3, 0x8b, 0xdf, 0x45,
    -	0xeb, 0x21, 0x08, 0xc1, 0x02, 0xd0, 0x15, 0x6c, 0x78, 0x37, 0x4c, 0xe0, 0xfa, 0xfd, 0x1c, 0xa6,
    -	0xd3, 0x7d, 0xfc, 0x08, 0x6d, 0x3e, 0x66, 0x42, 0x9e, 0x24, 0x7d, 0x26, 0xe1, 0x98, 0x87, 0x60,
    -	0x57, 0x74, 0xcd, 0xdf, 0x7b, 0xb9, 0xae, 0x51, 0x0c, 0xef, 0xb6, 0x51, 0xdf, 0x3c, 0xbc, 0xa4,
    -	0x44, 0x17, 0x94, 0xf1, 0x10, 0x61, 0x85, 0x1c, 0xa7, 0x2c, 0x12, 0x79, 0xa1, 0x94, 0x5f, 0xf5,
    -	0x3f, 0xfb, 0xb5, 0x8c, 0x1f, 0x3e, 0x5c, 0x52, 0xa3, 0x57, 0x38, 0x74, 0xc7, 0x16, 0xba, 0x73,
    -	0xed, 0x2d, 0x1f, 0x72, 0x21, 0xf1, 0x0f, 0x4b, 0x53, 0x43, 0x5e, 0x2e, 0x1f, 0xc5, 0xd6, 0x33,
    -	0x73, 0xd3, 0xe4, 0x54, 0x9f, 0x22, 0x73, 0x13, 0xf3, 0x23, 0xaa, 0x72, 0x09, 0xa1, 0xb0, 0xd7,
    -	0x3a, 0xe5, 0xad, 0xe6, 0xdd, 0xdd, 0x57, 0x6f, 0x67, 0xef, 0x7f, 0xc6, 0xa6, 0x7a, 0xa0, 0x04,
    -	0x69, 0xae, 0xdb, 0xfd, 0xbd, 0xf2, 0x2f, 0x07, 0x54, 0x83, 0x85, 0xdf, 0x46, 0xeb, 0x69, 0xbe,
    -	0xd4, 0xe7, 0xdb, 0xf0, 0x9a, 0xaa, 0x1b, 0x4c, 0x04, 0x9d, 0xee, 0x61, 0x82, 0x90, 0xe0, 0x41,
    -	0x04, 0xe9, 0x37, 0x2c, 0x04, 0x7b, 0x3d, 0x6f, 0x32, 0xf5, 0x12, 0x1c, 0x15, 0x28, 0x9d, 0x8b,
    -	0xc0, 0x7b, 0xe8, 0x16, 0x3c, 0x49, 0x78, 0xca, 0x74, 0xb3, 0x82, 0x1f, 0x47, 0x7d, 0x61, 0xd7,
    -	0x3b, 0xd6, 0x56, 0xd5, 0x7b, 0x63, 0x32, 0x76, 0x6e, 0xed, 0x2f, 0x6e, 0xd2, 0xe5, 0x78, 0x4c,
    -	0x50, 0x2d, 0x53, 0xbd, 0x28, 0xec, 0x6a, 0xa7, 0xbc, 0xd5, 0xf0, 0x6e, 0xab, 0x8e, 0x3e, 0xd1,
    -	0xc8, 0xc5, 0xd8, 0xa9, 0x7f, 0x0d, 0x23, 0xbd, 0xa0, 0x26, 0x0a, 0x7f, 0x80, 0xea, 0x99, 0x80,
    -	0x34, 0x52, 0x29, 0xe6, 0x73, 0x50, 0x14, 0xff, 0xc4, 0xe0, 0xb4, 0x88, 0xc0, 0x77, 0x50, 0x39,
    -	0xe3, 0x7d, 0x33, 0x07, 0x4d, 0x13, 0x58, 0x3e, 0x39, 0xf8, 0x82, 0x2a, 0x1c, 0x77, 0x51, 0x2d,
    -	0x48, 0xe3, 0x2c, 0x11, 0x76, 0x45, 0x9b, 0x23, 0x65, 0xfe, 0xa5, 0x46, 0xa8, 0xd9, 0xc1, 0x11,
    -	0xaa, 0xc2, 0x13, 0x99, 0x32, 0xbb, 0xa6, 0xef, 0xef, 0xe0, 0xf5, 0x9e, 0x3c, 0xb2, 0xaf, 0xb4,
    -	0xf6, 0x23, 0x99, 0x8e, 0x66, 0xd7, 0xa9, 0x31, 0x9a, 0xdb, 0xb4, 0x00, 0xa1, 0x59, 0x0c, 0xbe,
    -	0x89, 0xca, 0x03, 0x18, 0xe5, 0x6f, 0x0f, 0x55, 0x9f, 0xf8, 0x73, 0x54, 0x1d, 0xb2, 0xc7, 0x19,
    -	0x98, 0x27, 0xf8, 0xfd, 0x95, 0xf9, 0x68, 0xb5, 0xef, 0x14, 0x85, 0xe6, 0xcc, 0xdd, 0xb5, 0x1d,
    -	0xab, 0xfb, 0xa7, 0x85, 0x9c, 0x15, 0x0f, 0x27, 0xfe, 0x19, 0x21, 0x7f, 0xfa, 0x18, 0x09, 0xdb,
    -	0xd2, 0xe7, 0xdf, 0x7b, 0xf5, 0xf3, 0x17, 0x0f, 0xdb, 0xec, 0x37, 0xa6, 0x80, 0x04, 0x9d, 0xb3,
    -	0xc2, 0xdb, 0xa8, 0x39, 0x27, 0xad, 0x4f, 0xba, 0xe1, 0xdd, 0x98, 0x8c, 0x9d, 0xe6, 0x9c, 0x38,
    -	0x9d, 0x8f, 0xe9, 0x7e, 0x62, 0xca, 0xa6, 0x0f, 0x8a, 0x9d, 0xe9, 0xd0, 0x59, 0xfa, 0x5e, 0x1b,
    -	0x8b, 0x43, 0xb3, 0x5b, 0xff, 0xf5, 0x37, 0xa7, 0xf4, 0xf4, 0xaf, 0x4e, 0xc9, 0xdb, 0x3f, 0x3b,
    -	0x6f, 0x97, 0x9e, 0x9d, 0xb7, 0x4b, 0xcf, 0xcf, 0xdb, 0xa5, 0xa7, 0x93, 0xb6, 0x75, 0x36, 0x69,
    -	0x5b, 0xcf, 0x26, 0x6d, 0xeb, 0xf9, 0xa4, 0x6d, 0xfd, 0x3d, 0x69, 0x5b, 0xbf, 0xbc, 0x68, 0x97,
    -	0xbe, 0x77, 0x56, 0xfc, 0x77, 0xf9, 0x27, 0x00, 0x00, 0xff, 0xff, 0x7b, 0xe7, 0x9b, 0x78, 0xf6,
    -	0x08, 0x00, 0x00,
    +var fileDescriptor_6529c11a462c48a5 = []byte{
    +	// 901 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4d, 0x6f, 0x1b, 0x45,
    +	0x18, 0xf6, 0xc6, 0x1f, 0xb1, 0xc7, 0x21, 0x6d, 0x47, 0x50, 0x2d, 0x96, 0xea, 0xb5, 0x56, 0x80,
    +	0xc2, 0xd7, 0x2c, 0xa9, 0x2a, 0x88, 0x72, 0x40, 0xb0, 0x21, 0x42, 0x11, 0x29, 0x48, 0x93, 0x84,
    +	0x03, 0x42, 0xa2, 0x93, 0xf5, 0xdb, 0xcd, 0x34, 0xdd, 0x0f, 0x76, 0x66, 0x4d, 0x7d, 0xeb, 0x4f,
    +	0xe0, 0xc8, 0x91, 0xff, 0xc0, 0x9f, 0x08, 0x07, 0xa4, 0x1e, 0x7b, 0x40, 0x16, 0x71, 0xff, 0x45,
    +	0x4e, 0x68, 0x66, 0xc7, 0x6b, 0xc7, 0x4e, 0x70, 0x69, 0x6f, 0x3b, 0xcf, 0xbc, 0xcf, 0xf3, 0xbc,
    +	0xf3, 0xce, 0xfb, 0x8e, 0x8d, 0xbc, 0xd3, 0x2d, 0x41, 0x78, 0xe2, 0xb1, 0x94, 0x7b, 0x01, 0x64,
    +	0x92, 0x3f, 0xe4, 0x01, 0x93, 0x20, 0xbc, 0xc1, 0xe6, 0x31, 0x48, 0xb6, 0xe9, 0x85, 0x10, 0x43,
    +	0xc6, 0x24, 0xf4, 0x49, 0x9a, 0x25, 0x32, 0xc1, 0x4e, 0x41, 0x20, 0x2c, 0xe5, 0x64, 0x96, 0x40,
    +	0x0c, 0xa1, 0xf3, 0x71, 0xc8, 0xe5, 0x49, 0x7e, 0x4c, 0x82, 0x24, 0xf2, 0xc2, 0x24, 0x4c, 0x3c,
    +	0xcd, 0x3b, 0xce, 0x1f, 0xea, 0x95, 0x5e, 0xe8, 0xaf, 0x42, 0xaf, 0xe3, 0xce, 0x26, 0x90, 0x64,
    +	0xe0, 0x0d, 0x16, 0x3c, 0x3b, 0xf7, 0xa6, 0x31, 0x11, 0x0b, 0x4e, 0x78, 0x0c, 0xd9, 0xd0, 0x4b,
    +	0x4f, 0x43, 0x05, 0x08, 0x2f, 0x02, 0xc9, 0xae, 0x62, 0x79, 0xd7, 0xb1, 0xb2, 0x3c, 0x96, 0x3c,
    +	0x82, 0x05, 0xc2, 0xa7, 0xcb, 0x08, 0x22, 0x38, 0x81, 0x88, 0xcd, 0xf3, 0xdc, 0x3f, 0x57, 0xd0,
    +	0xdb, 0x3b, 0xd3, 0x52, 0x1c, 0xf0, 0x30, 0xe6, 0x71, 0x48, 0xe1, 0xe7, 0x1c, 0x84, 0xc4, 0x0f,
    +	0x50, 0x53, 0x65, 0xd8, 0x67, 0x92, 0xd9, 0x56, 0xcf, 0xda, 0x68, 0xdf, 0xfd, 0x84, 0x4c, 0x6b,
    +	0x58, 0x1a, 0x91, 0xf4, 0x34, 0x54, 0x80, 0x20, 0x2a, 0x9a, 0x0c, 0x36, 0xc9, 0x77, 0xc7, 0x8f,
    +	0x20, 0x90, 0xf7, 0x41, 0x32, 0x1f, 0x9f, 0x8d, 0x9c, 0xca, 0x78, 0xe4, 0xa0, 0x29, 0x46, 0x4b,
    +	0x55, 0xfc, 0x00, 0xd5, 0x44, 0x0a, 0x81, 0xbd, 0xa2, 0xd5, 0x3f, 0x27, 0x4b, 0x6e, 0x88, 0x5c,
    +	0x9b, 0xeb, 0x41, 0x0a, 0x81, 0xbf, 0x66, 0xbc, 0x6a, 0x6a, 0x45, 0xb5, 0x32, 0x3e, 0x41, 0x0d,
    +	0x21, 0x99, 0xcc, 0x85, 0x5d, 0xd5, 0x1e, 0x5f, 0xbc, 0x86, 0x87, 0xd6, 0xf1, 0xd7, 0x8d, 0x4b,
    +	0xa3, 0x58, 0x53, 0xa3, 0xef, 0xbe, 0xa8, 0x22, 0xf7, 0x5a, 0xee, 0x4e, 0x12, 0xf7, 0xb9, 0xe4,
    +	0x49, 0x8c, 0xb7, 0x50, 0x4d, 0x0e, 0x53, 0xd0, 0x05, 0x6d, 0xf9, 0xef, 0x4c, 0x52, 0x3e, 0x1c,
    +	0xa6, 0x70, 0x31, 0x72, 0xde, 0x9c, 0x8f, 0x57, 0x38, 0xd5, 0x0c, 0xbc, 0x5f, 0x1e, 0xa5, 0xa1,
    +	0xb9, 0xf7, 0x2e, 0x27, 0x72, 0x31, 0x72, 0xae, 0xe8, 0x48, 0x52, 0x2a, 0x5d, 0x4e, 0x17, 0xbf,
    +	0x87, 0x1a, 0x19, 0x30, 0x91, 0xc4, 0xba, 0xf8, 0xad, 0xe9, 0xb1, 0xa8, 0x46, 0xa9, 0xd9, 0xc5,
    +	0xef, 0xa3, 0xd5, 0x08, 0x84, 0x60, 0x21, 0xe8, 0x0a, 0xb6, 0xfc, 0x1b, 0x26, 0x70, 0xf5, 0x7e,
    +	0x01, 0xd3, 0xc9, 0x3e, 0x7e, 0x84, 0xd6, 0x1f, 0x33, 0x21, 0x8f, 0xd2, 0x3e, 0x93, 0x70, 0xc8,
    +	0x23, 0xb0, 0x6b, 0xba, 0xe6, 0x1f, 0xbc, 0x5c, 0xd7, 0x28, 0x86, 0x7f, 0xdb, 0xa8, 0xaf, 0xef,
    +	0x5f, 0x52, 0xa2, 0x73, 0xca, 0x78, 0x80, 0xb0, 0x42, 0x0e, 0x33, 0x16, 0x8b, 0xa2, 0x50, 0xca,
    +	0xaf, 0xfe, 0xbf, 0xfd, 0x3a, 0xc6, 0x0f, 0xef, 0x2f, 0xa8, 0xd1, 0x2b, 0x1c, 0xdc, 0x91, 0x85,
    +	0xee, 0x5c, 0x7b, 0xcb, 0xfb, 0x5c, 0x48, 0xfc, 0xe3, 0xc2, 0xd4, 0x90, 0x97, 0xcb, 0x47, 0xb1,
    +	0xf5, 0xcc, 0xdc, 0x34, 0x39, 0x35, 0x27, 0xc8, 0xcc, 0xc4, 0xfc, 0x84, 0xea, 0x5c, 0x42, 0x24,
    +	0xec, 0x95, 0x5e, 0x75, 0xa3, 0x7d, 0x77, 0xfb, 0xd5, 0xdb, 0xd9, 0x7f, 0xc3, 0xd8, 0xd4, 0xf7,
    +	0x94, 0x20, 0x2d, 0x74, 0xdd, 0x3f, 0x6a, 0xff, 0x71, 0x40, 0x35, 0x58, 0xf8, 0x5d, 0xb4, 0x9a,
    +	0x15, 0x4b, 0x7d, 0xbe, 0x35, 0xbf, 0xad, 0xba, 0xc1, 0x44, 0xd0, 0xc9, 0x1e, 0x26, 0x08, 0x09,
    +	0x1e, 0xc6, 0x90, 0x7d, 0xcb, 0x22, 0xb0, 0x57, 0x8b, 0x26, 0x53, 0x2f, 0xc1, 0x41, 0x89, 0xd2,
    +	0x99, 0x08, 0xbc, 0x83, 0x6e, 0xc1, 0x93, 0x94, 0x67, 0x4c, 0x37, 0x2b, 0x04, 0x49, 0xdc, 0x17,
    +	0x76, 0xb3, 0x67, 0x6d, 0xd4, 0xfd, 0xb7, 0xc6, 0x23, 0xe7, 0xd6, 0xee, 0xfc, 0x26, 0x5d, 0x8c,
    +	0xc7, 0x04, 0x35, 0x72, 0xd5, 0x8b, 0xc2, 0xae, 0xf7, 0xaa, 0x1b, 0x2d, 0xff, 0xb6, 0xea, 0xe8,
    +	0x23, 0x8d, 0x5c, 0x8c, 0x9c, 0xe6, 0x37, 0x30, 0xd4, 0x0b, 0x6a, 0xa2, 0xf0, 0x47, 0xa8, 0x99,
    +	0x0b, 0xc8, 0x62, 0x95, 0x62, 0x31, 0x07, 0x65, 0xf1, 0x8f, 0x0c, 0x4e, 0xcb, 0x08, 0x7c, 0x07,
    +	0x55, 0x73, 0xde, 0x37, 0x73, 0xd0, 0x36, 0x81, 0xd5, 0xa3, 0xbd, 0xaf, 0xa8, 0xc2, 0xb1, 0x8b,
    +	0x1a, 0x61, 0x96, 0xe4, 0xa9, 0xb0, 0x6b, 0xda, 0x1c, 0x29, 0xf3, 0xaf, 0x35, 0x42, 0xcd, 0x0e,
    +	0x8e, 0x51, 0x1d, 0x9e, 0xc8, 0x8c, 0xd9, 0x0d, 0x7d, 0x7f, 0x7b, 0xaf, 0xf7, 0xe4, 0x91, 0x5d,
    +	0xa5, 0xb5, 0x1b, 0xcb, 0x6c, 0x38, 0xbd, 0x4e, 0x8d, 0xd1, 0xc2, 0xa6, 0x03, 0x08, 0x4d, 0x63,
    +	0xf0, 0x4d, 0x54, 0x3d, 0x85, 0x61, 0xf1, 0xf6, 0x50, 0xf5, 0x89, 0xbf, 0x44, 0xf5, 0x01, 0x7b,
    +	0x9c, 0x83, 0x79, 0x82, 0x3f, 0x5c, 0x9a, 0x8f, 0x56, 0xfb, 0x5e, 0x51, 0x68, 0xc1, 0xdc, 0x5e,
    +	0xd9, 0xb2, 0xdc, 0xbf, 0x2c, 0xe4, 0x2c, 0x79, 0x38, 0xf1, 0x2f, 0x08, 0x05, 0x93, 0xc7, 0x48,
    +	0xd8, 0x96, 0x3e, 0xff, 0xce, 0xab, 0x9f, 0xbf, 0x7c, 0xd8, 0xa6, 0xbf, 0x31, 0x25, 0x24, 0xe8,
    +	0x8c, 0x15, 0xde, 0x44, 0xed, 0x19, 0x69, 0x7d, 0xd2, 0x35, 0xff, 0xc6, 0x78, 0xe4, 0xb4, 0x67,
    +	0xc4, 0xe9, 0x6c, 0x8c, 0xfb, 0x99, 0x29, 0x9b, 0x3e, 0x28, 0x76, 0x26, 0x43, 0x67, 0xe9, 0x7b,
    +	0x6d, 0xcd, 0x0f, 0xcd, 0x76, 0xf3, 0xb7, 0xdf, 0x9d, 0xca, 0xd3, 0xbf, 0x7b, 0x15, 0x7f, 0xf7,
    +	0xec, 0xbc, 0x5b, 0x79, 0x76, 0xde, 0xad, 0x3c, 0x3f, 0xef, 0x56, 0x9e, 0x8e, 0xbb, 0xd6, 0xd9,
    +	0xb8, 0x6b, 0x3d, 0x1b, 0x77, 0xad, 0xe7, 0xe3, 0xae, 0xf5, 0xcf, 0xb8, 0x6b, 0xfd, 0xfa, 0xa2,
    +	0x5b, 0xf9, 0xc1, 0x59, 0xf2, 0xdf, 0xe5, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x35, 0x2f, 0x11,
    +	0xe8, 0xdd, 0x08, 0x00, 0x00,
     }
     
     func (m *CertificateSigningRequest) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/certificates/v1beta1/generated.proto b/vendor/k8s.io/api/certificates/v1beta1/generated.proto
    index f70f01ef7ab5..f3ec4c06e4cb 100644
    --- a/vendor/k8s.io/api/certificates/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/certificates/v1beta1/generated.proto
    @@ -32,7 +32,7 @@ option go_package = "k8s.io/api/certificates/v1beta1";
     // Describes a certificate signing request
     message CertificateSigningRequest {
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec contains the certificate request, and is immutable after creation.
       // Only the request, signerName, expirationSeconds, and usages fields can be set on creation.
    @@ -65,18 +65,18 @@ message CertificateSigningRequestCondition {
     
       // timestamp for the last update to this condition
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 4;
     
       // lastTransitionTime is the time the condition last transitioned from one status to another.
       // If unset, when a new condition type is added or an existing condition's status is changed,
       // the server defaults this to the current time.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 5;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 5;
     }
     
     message CertificateSigningRequestList {
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       repeated CertificateSigningRequest items = 2;
     }
    diff --git a/vendor/k8s.io/api/coordination/v1/doc.go b/vendor/k8s.io/api/coordination/v1/doc.go
    index fc2f4f2c6e1e..9b2fbbda3ad7 100644
    --- a/vendor/k8s.io/api/coordination/v1/doc.go
    +++ b/vendor/k8s.io/api/coordination/v1/doc.go
    @@ -17,6 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     
     // +groupName=coordination.k8s.io
     
    diff --git a/vendor/k8s.io/api/coordination/v1/generated.pb.go b/vendor/k8s.io/api/coordination/v1/generated.pb.go
    index de0610601358..cf6702aef37e 100644
    --- a/vendor/k8s.io/api/coordination/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/coordination/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/coordination/v1/generated.proto
    +// source: k8s.io/api/coordination/v1/generated.proto
     
     package v1
     
    @@ -47,7 +47,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Lease) Reset()      { *m = Lease{} }
     func (*Lease) ProtoMessage() {}
     func (*Lease) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_929e1148ad9baca3, []int{0}
    +	return fileDescriptor_239d5a4df3139dce, []int{0}
     }
     func (m *Lease) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +75,7 @@ var xxx_messageInfo_Lease proto.InternalMessageInfo
     func (m *LeaseList) Reset()      { *m = LeaseList{} }
     func (*LeaseList) ProtoMessage() {}
     func (*LeaseList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_929e1148ad9baca3, []int{1}
    +	return fileDescriptor_239d5a4df3139dce, []int{1}
     }
     func (m *LeaseList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +103,7 @@ var xxx_messageInfo_LeaseList proto.InternalMessageInfo
     func (m *LeaseSpec) Reset()      { *m = LeaseSpec{} }
     func (*LeaseSpec) ProtoMessage() {}
     func (*LeaseSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_929e1148ad9baca3, []int{2}
    +	return fileDescriptor_239d5a4df3139dce, []int{2}
     }
     func (m *LeaseSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,45 +135,48 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/coordination/v1/generated.proto", fileDescriptor_929e1148ad9baca3)
    -}
    -
    -var fileDescriptor_929e1148ad9baca3 = []byte{
    -	// 539 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xcf, 0x6e, 0xd3, 0x4c,
    -	0x14, 0xc5, 0xe3, 0x36, 0x91, 0x9a, 0xc9, 0xd7, 0x7e, 0x91, 0x95, 0x85, 0x95, 0x85, 0x5d, 0x22,
    -	0x21, 0x75, 0xc3, 0x0c, 0xa9, 0x10, 0x42, 0xac, 0x8a, 0x41, 0x40, 0xa5, 0x54, 0x48, 0x6e, 0x57,
    -	0xa8, 0x0b, 0x26, 0xf6, 0xc5, 0x19, 0x52, 0x7b, 0xcc, 0xcc, 0x38, 0xa8, 0x3b, 0x1e, 0x81, 0x2d,
    -	0x8f, 0x01, 0x4f, 0x91, 0x65, 0x97, 0x5d, 0x59, 0xc4, 0xbc, 0x08, 0x9a, 0x49, 0xda, 0x84, 0xfc,
    -	0x51, 0x2b, 0x76, 0x9e, 0x7b, 0xef, 0xf9, 0xdd, 0x73, 0xcf, 0xc2, 0xe8, 0xe5, 0xf0, 0x99, 0xc4,
    -	0x8c, 0x93, 0x61, 0xde, 0x07, 0x91, 0x82, 0x02, 0x49, 0x46, 0x90, 0x46, 0x5c, 0x90, 0x59, 0x83,
    -	0x66, 0x8c, 0x84, 0x9c, 0x8b, 0x88, 0xa5, 0x54, 0x31, 0x9e, 0x92, 0x51, 0x97, 0xc4, 0x90, 0x82,
    -	0xa0, 0x0a, 0x22, 0x9c, 0x09, 0xae, 0xb8, 0xdd, 0x9e, 0xce, 0x62, 0x9a, 0x31, 0xbc, 0x38, 0x8b,
    -	0x47, 0xdd, 0xf6, 0xa3, 0x98, 0xa9, 0x41, 0xde, 0xc7, 0x21, 0x4f, 0x48, 0xcc, 0x63, 0x4e, 0x8c,
    -	0xa4, 0x9f, 0x7f, 0x34, 0x2f, 0xf3, 0x30, 0x5f, 0x53, 0x54, 0xfb, 0xc9, 0x7c, 0x6d, 0x42, 0xc3,
    -	0x01, 0x4b, 0x41, 0x5c, 0x92, 0x6c, 0x18, 0xeb, 0x82, 0x24, 0x09, 0x28, 0xba, 0xc6, 0x40, 0x9b,
    -	0x6c, 0x52, 0x89, 0x3c, 0x55, 0x2c, 0x81, 0x15, 0xc1, 0xd3, 0xbb, 0x04, 0x32, 0x1c, 0x40, 0x42,
    -	0x97, 0x75, 0x9d, 0x9f, 0x16, 0xaa, 0xf5, 0x80, 0x4a, 0xb0, 0x3f, 0xa0, 0x1d, 0xed, 0x26, 0xa2,
    -	0x8a, 0x3a, 0xd6, 0xbe, 0x75, 0xd0, 0x38, 0x7c, 0x8c, 0xe7, 0x31, 0xdc, 0x42, 0x71, 0x36, 0x8c,
    -	0x75, 0x41, 0x62, 0x3d, 0x8d, 0x47, 0x5d, 0xfc, 0xae, 0xff, 0x09, 0x42, 0x75, 0x02, 0x8a, 0xfa,
    -	0xf6, 0xb8, 0xf0, 0x2a, 0x65, 0xe1, 0xa1, 0x79, 0x2d, 0xb8, 0xa5, 0xda, 0x6f, 0x50, 0x55, 0x66,
    -	0x10, 0x3a, 0x5b, 0x86, 0xfe, 0x10, 0x6f, 0x0e, 0x19, 0x1b, 0x4b, 0xa7, 0x19, 0x84, 0xfe, 0x7f,
    -	0x33, 0x64, 0x55, 0xbf, 0x02, 0x03, 0xe8, 0xfc, 0xb0, 0x50, 0xdd, 0x4c, 0xf4, 0x98, 0x54, 0xf6,
    -	0xf9, 0x8a, 0x71, 0x7c, 0x3f, 0xe3, 0x5a, 0x6d, 0x6c, 0x37, 0x67, 0x3b, 0x76, 0x6e, 0x2a, 0x0b,
    -	0xa6, 0x5f, 0xa3, 0x1a, 0x53, 0x90, 0x48, 0x67, 0x6b, 0x7f, 0xfb, 0xa0, 0x71, 0xf8, 0xe0, 0x4e,
    -	0xd7, 0xfe, 0xee, 0x8c, 0x56, 0x3b, 0xd6, 0xba, 0x60, 0x2a, 0xef, 0x7c, 0xdf, 0x9e, 0x79, 0xd6,
    -	0x77, 0xd8, 0xcf, 0xd1, 0xde, 0x80, 0x5f, 0x44, 0x20, 0x8e, 0x23, 0x48, 0x15, 0x53, 0x97, 0xc6,
    -	0x79, 0xdd, 0xb7, 0xcb, 0xc2, 0xdb, 0x7b, 0xfb, 0x57, 0x27, 0x58, 0x9a, 0xb4, 0x7b, 0xa8, 0x75,
    -	0xa1, 0x41, 0xaf, 0x72, 0x61, 0x36, 0x9f, 0x42, 0xc8, 0xd3, 0x48, 0x9a, 0x58, 0x6b, 0xbe, 0x53,
    -	0x16, 0x5e, 0xab, 0xb7, 0xa6, 0x1f, 0xac, 0x55, 0xd9, 0x7d, 0xd4, 0xa0, 0xe1, 0xe7, 0x9c, 0x09,
    -	0x38, 0x63, 0x09, 0x38, 0xdb, 0x26, 0x40, 0x72, 0xbf, 0x00, 0x4f, 0x58, 0x28, 0xb8, 0x96, 0xf9,
    -	0xff, 0x97, 0x85, 0xd7, 0x78, 0x31, 0xe7, 0x04, 0x8b, 0x50, 0xfb, 0x1c, 0xd5, 0x05, 0xa4, 0xf0,
    -	0xc5, 0x6c, 0xa8, 0xfe, 0xdb, 0x86, 0xdd, 0xb2, 0xf0, 0xea, 0xc1, 0x0d, 0x25, 0x98, 0x03, 0xed,
    -	0x23, 0xd4, 0x34, 0x97, 0x9d, 0x09, 0x9a, 0x4a, 0xa6, 0x6f, 0x93, 0x4e, 0xcd, 0x64, 0xd1, 0x2a,
    -	0x0b, 0xaf, 0xd9, 0x5b, 0xea, 0x05, 0x2b, 0xd3, 0xfe, 0xd1, 0x78, 0xe2, 0x56, 0xae, 0x26, 0x6e,
    -	0xe5, 0x7a, 0xe2, 0x56, 0xbe, 0x96, 0xae, 0x35, 0x2e, 0x5d, 0xeb, 0xaa, 0x74, 0xad, 0xeb, 0xd2,
    -	0xb5, 0x7e, 0x95, 0xae, 0xf5, 0xed, 0xb7, 0x5b, 0x79, 0xdf, 0xde, 0xfc, 0x03, 0xf9, 0x13, 0x00,
    -	0x00, 0xff, 0xff, 0xef, 0xe4, 0x75, 0x3b, 0x76, 0x04, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/coordination/v1/generated.proto", fileDescriptor_239d5a4df3139dce)
    +}
    +
    +var fileDescriptor_239d5a4df3139dce = []byte{
    +	// 588 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xdf, 0x4e, 0xd4, 0x40,
    +	0x14, 0xc6, 0xb7, 0xb0, 0xab, 0xec, 0xac, 0xfc, 0xc9, 0xc8, 0x45, 0xb3, 0x17, 0x2d, 0x92, 0x98,
    +	0x10, 0x13, 0xa7, 0x42, 0x8c, 0x31, 0x26, 0x26, 0x58, 0x89, 0x4a, 0xb2, 0x44, 0x53, 0xb8, 0x32,
    +	0x5c, 0x38, 0xdb, 0x1e, 0xba, 0x23, 0xb4, 0x53, 0x67, 0x66, 0x31, 0xdc, 0xf9, 0x08, 0x3e, 0x81,
    +	0xef, 0xa0, 0x4f, 0xc1, 0x25, 0x97, 0x5c, 0x35, 0x32, 0xbe, 0x85, 0x57, 0x66, 0x66, 0x0b, 0x0b,
    +	0xcb, 0x6e, 0x20, 0xde, 0x75, 0xce, 0x39, 0xdf, 0xef, 0x7c, 0x73, 0x4e, 0x5b, 0xf4, 0x68, 0xff,
    +	0xb9, 0x24, 0x8c, 0x07, 0xb4, 0x60, 0x41, 0xcc, 0xb9, 0x48, 0x58, 0x4e, 0x15, 0xe3, 0x79, 0x70,
    +	0xb8, 0x1a, 0xa4, 0x90, 0x83, 0xa0, 0x0a, 0x12, 0x52, 0x08, 0xae, 0x38, 0x6e, 0x0f, 0x6a, 0x09,
    +	0x2d, 0x18, 0xb9, 0x5c, 0x4b, 0x0e, 0x57, 0xdb, 0x8f, 0x53, 0xa6, 0x7a, 0xfd, 0x2e, 0x89, 0x79,
    +	0x16, 0xa4, 0x3c, 0xe5, 0x81, 0x95, 0x74, 0xfb, 0x7b, 0xf6, 0x64, 0x0f, 0xf6, 0x69, 0x80, 0x6a,
    +	0x3f, 0x1d, 0xb6, 0xcd, 0x68, 0xdc, 0x63, 0x39, 0x88, 0xa3, 0xa0, 0xd8, 0x4f, 0x4d, 0x40, 0x06,
    +	0x19, 0x28, 0x3a, 0xc6, 0x40, 0x3b, 0x98, 0xa4, 0x12, 0xfd, 0x5c, 0xb1, 0x0c, 0xae, 0x09, 0x9e,
    +	0xdd, 0x24, 0x90, 0x71, 0x0f, 0x32, 0x3a, 0xaa, 0x5b, 0xfe, 0xe5, 0xa0, 0x46, 0x07, 0xa8, 0x04,
    +	0xfc, 0x09, 0xcd, 0x18, 0x37, 0x09, 0x55, 0xd4, 0x75, 0x96, 0x9c, 0x95, 0xd6, 0xda, 0x13, 0x32,
    +	0x1c, 0xc3, 0x05, 0x94, 0x14, 0xfb, 0xa9, 0x09, 0x48, 0x62, 0xaa, 0xc9, 0xe1, 0x2a, 0x79, 0xdf,
    +	0xfd, 0x0c, 0xb1, 0xda, 0x02, 0x45, 0x43, 0x7c, 0x5c, 0xfa, 0x35, 0x5d, 0xfa, 0x68, 0x18, 0x8b,
    +	0x2e, 0xa8, 0xf8, 0x2d, 0xaa, 0xcb, 0x02, 0x62, 0x77, 0xca, 0xd2, 0x1f, 0x92, 0xc9, 0x43, 0x26,
    +	0xd6, 0xd2, 0x76, 0x01, 0x71, 0x78, 0xaf, 0x42, 0xd6, 0xcd, 0x29, 0xb2, 0x80, 0xe5, 0x9f, 0x0e,
    +	0x6a, 0xda, 0x8a, 0x0e, 0x93, 0x0a, 0xef, 0x5e, 0x33, 0x4e, 0x6e, 0x67, 0xdc, 0xa8, 0xad, 0xed,
    +	0x85, 0xaa, 0xc7, 0xcc, 0x79, 0xe4, 0x92, 0xe9, 0x37, 0xa8, 0xc1, 0x14, 0x64, 0xd2, 0x9d, 0x5a,
    +	0x9a, 0x5e, 0x69, 0xad, 0x3d, 0xb8, 0xd1, 0x75, 0x38, 0x5b, 0xd1, 0x1a, 0x9b, 0x46, 0x17, 0x0d,
    +	0xe4, 0xcb, 0x3f, 0xea, 0x95, 0x67, 0x73, 0x0f, 0xfc, 0x02, 0xcd, 0xf5, 0xf8, 0x41, 0x02, 0x62,
    +	0x33, 0x81, 0x5c, 0x31, 0x75, 0x64, 0x9d, 0x37, 0x43, 0xac, 0x4b, 0x7f, 0xee, 0xdd, 0x95, 0x4c,
    +	0x34, 0x52, 0x89, 0x3b, 0x68, 0xf1, 0xc0, 0x80, 0x36, 0xfa, 0xc2, 0x76, 0xde, 0x86, 0x98, 0xe7,
    +	0x89, 0xb4, 0x63, 0x6d, 0x84, 0xae, 0x2e, 0xfd, 0xc5, 0xce, 0x98, 0x7c, 0x34, 0x56, 0x85, 0xbb,
    +	0xa8, 0x45, 0xe3, 0x2f, 0x7d, 0x26, 0x60, 0x87, 0x65, 0xe0, 0x4e, 0xdb, 0x01, 0x06, 0xb7, 0x1b,
    +	0xe0, 0x16, 0x8b, 0x05, 0x37, 0xb2, 0x70, 0x5e, 0x97, 0x7e, 0xeb, 0xd5, 0x90, 0x13, 0x5d, 0x86,
    +	0xe2, 0x5d, 0xd4, 0x14, 0x90, 0xc3, 0x57, 0xdb, 0xa1, 0xfe, 0x7f, 0x1d, 0x66, 0x75, 0xe9, 0x37,
    +	0xa3, 0x73, 0x4a, 0x34, 0x04, 0xe2, 0x75, 0xb4, 0x60, 0x6f, 0xb6, 0x23, 0x68, 0x2e, 0x99, 0xb9,
    +	0x9b, 0x74, 0x1b, 0x76, 0x16, 0x8b, 0xba, 0xf4, 0x17, 0x3a, 0x23, 0xb9, 0xe8, 0x5a, 0x35, 0xde,
    +	0x40, 0x33, 0x52, 0x99, 0xaf, 0x22, 0x3d, 0x72, 0xef, 0xd8, 0x3d, 0xac, 0x98, 0xb7, 0x61, 0xbb,
    +	0x8a, 0xfd, 0x2d, 0x7d, 0xf7, 0xf5, 0xf9, 0xaa, 0x21, 0x19, 0x6c, 0xb1, 0xca, 0x45, 0x17, 0x4a,
    +	0xfc, 0x12, 0xcd, 0x17, 0x02, 0xf6, 0x40, 0x08, 0x48, 0x06, 0x2b, 0x74, 0xef, 0x5a, 0xd8, 0x7d,
    +	0x5d, 0xfa, 0xf3, 0x1f, 0xae, 0xa6, 0xa2, 0xd1, 0xda, 0x70, 0xfd, 0xf8, 0xcc, 0xab, 0x9d, 0x9c,
    +	0x79, 0xb5, 0xd3, 0x33, 0xaf, 0xf6, 0x4d, 0x7b, 0xce, 0xb1, 0xf6, 0x9c, 0x13, 0xed, 0x39, 0xa7,
    +	0xda, 0x73, 0x7e, 0x6b, 0xcf, 0xf9, 0xfe, 0xc7, 0xab, 0x7d, 0x6c, 0x4f, 0xfe, 0x8b, 0xfd, 0x0b,
    +	0x00, 0x00, 0xff, 0xff, 0xf8, 0xf4, 0xd4, 0x78, 0xe2, 0x04, 0x00, 0x00,
     }
     
     func (m *Lease) Marshal() (dAtA []byte, err error) {
    @@ -286,6 +289,20 @@ func (m *LeaseSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.PreferredHolder != nil {
    +		i -= len(*m.PreferredHolder)
    +		copy(dAtA[i:], *m.PreferredHolder)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.PreferredHolder)))
    +		i--
    +		dAtA[i] = 0x3a
    +	}
    +	if m.Strategy != nil {
    +		i -= len(*m.Strategy)
    +		copy(dAtA[i:], *m.Strategy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Strategy)))
    +		i--
    +		dAtA[i] = 0x32
    +	}
     	if m.LeaseTransitions != nil {
     		i = encodeVarintGenerated(dAtA, i, uint64(*m.LeaseTransitions))
     		i--
    @@ -395,6 +412,14 @@ func (m *LeaseSpec) Size() (n int) {
     	if m.LeaseTransitions != nil {
     		n += 1 + sovGenerated(uint64(*m.LeaseTransitions))
     	}
    +	if m.Strategy != nil {
    +		l = len(*m.Strategy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.PreferredHolder != nil {
    +		l = len(*m.PreferredHolder)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -441,6 +466,8 @@ func (this *LeaseSpec) String() string {
     		`AcquireTime:` + strings.Replace(fmt.Sprintf("%v", this.AcquireTime), "MicroTime", "v1.MicroTime", 1) + `,`,
     		`RenewTime:` + strings.Replace(fmt.Sprintf("%v", this.RenewTime), "MicroTime", "v1.MicroTime", 1) + `,`,
     		`LeaseTransitions:` + valueToStringGenerated(this.LeaseTransitions) + `,`,
    +		`Strategy:` + valueToStringGenerated(this.Strategy) + `,`,
    +		`PreferredHolder:` + valueToStringGenerated(this.PreferredHolder) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -860,6 +887,72 @@ func (m *LeaseSpec) Unmarshal(dAtA []byte) error {
     				}
     			}
     			m.LeaseTransitions = &v
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Strategy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := CoordinatedLeaseStrategy(dAtA[iNdEx:postIndex])
    +			m.Strategy = &s
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PreferredHolder", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.PreferredHolder = &s
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    diff --git a/vendor/k8s.io/api/coordination/v1/generated.proto b/vendor/k8s.io/api/coordination/v1/generated.proto
    index 36fce60f2de7..4d4f7e08f45c 100644
    --- a/vendor/k8s.io/api/coordination/v1/generated.proto
    +++ b/vendor/k8s.io/api/coordination/v1/generated.proto
    @@ -32,7 +32,7 @@ option go_package = "k8s.io/api/coordination/v1";
     message Lease {
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec contains the specification of the Lease.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -45,7 +45,7 @@ message LeaseList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a list of schema objects.
       repeated Lease items = 2;
    @@ -54,27 +54,43 @@ message LeaseList {
     // LeaseSpec is a specification of a Lease.
     message LeaseSpec {
       // holderIdentity contains the identity of the holder of a current lease.
    +  // If Coordinated Leader Election is used, the holder identity must be
    +  // equal to the elected LeaseCandidate.metadata.name field.
       // +optional
       optional string holderIdentity = 1;
     
       // leaseDurationSeconds is a duration that candidates for a lease need
    -  // to wait to force acquire it. This is measure against time of last
    +  // to wait to force acquire it. This is measured against the time of last
       // observed renewTime.
       // +optional
       optional int32 leaseDurationSeconds = 2;
     
       // acquireTime is a time when the current lease was acquired.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime acquireTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime acquireTime = 3;
     
       // renewTime is a time when the current holder of a lease has last
       // updated the lease.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime renewTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime renewTime = 4;
     
       // leaseTransitions is the number of transitions of a lease between
       // holders.
       // +optional
       optional int32 leaseTransitions = 5;
    +
    +  // Strategy indicates the strategy for picking the leader for coordinated leader election.
    +  // If the field is not specified, there is no active coordination for this lease.
    +  // (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.
    +  // +featureGate=CoordinatedLeaderElection
    +  // +optional
    +  optional string strategy = 6;
    +
    +  // PreferredHolder signals to a lease holder that the lease has a
    +  // more optimal holder and should be given up.
    +  // This field can only be set if Strategy is also set.
    +  // +featureGate=CoordinatedLeaderElection
    +  // +optional
    +  optional string preferredHolder = 7;
     }
     
    diff --git a/vendor/k8s.io/api/coordination/v1/types.go b/vendor/k8s.io/api/coordination/v1/types.go
    index b0e1d0682961..5307cea88fa8 100644
    --- a/vendor/k8s.io/api/coordination/v1/types.go
    +++ b/vendor/k8s.io/api/coordination/v1/types.go
    @@ -20,8 +20,21 @@ import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    +type CoordinatedLeaseStrategy string
    +
    +// CoordinatedLeaseStrategy defines the strategy for picking the leader for coordinated leader election.
    +const (
    +	// OldestEmulationVersion picks the oldest LeaseCandidate, where "oldest" is defined as follows
    +	// 1) Select the candidate(s) with the lowest emulation version
    +	// 2) If multiple candidates have the same emulation version, select the candidate(s) with the lowest binary version. (Note that binary version must be greater or equal to emulation version)
    +	// 3) If multiple candidates have the same binary version, select the candidate with the oldest creationTimestamp.
    +	// If a candidate does not specify the emulationVersion and binaryVersion fields, it will not be considered a candidate for the lease.
    +	OldestEmulationVersion CoordinatedLeaseStrategy = "OldestEmulationVersion"
    +)
    +
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.14
     
     // Lease defines a lease concept.
     type Lease struct {
    @@ -39,10 +52,12 @@ type Lease struct {
     // LeaseSpec is a specification of a Lease.
     type LeaseSpec struct {
     	// holderIdentity contains the identity of the holder of a current lease.
    +	// If Coordinated Leader Election is used, the holder identity must be
    +	// equal to the elected LeaseCandidate.metadata.name field.
     	// +optional
     	HolderIdentity *string `json:"holderIdentity,omitempty" protobuf:"bytes,1,opt,name=holderIdentity"`
     	// leaseDurationSeconds is a duration that candidates for a lease need
    -	// to wait to force acquire it. This is measure against time of last
    +	// to wait to force acquire it. This is measured against the time of last
     	// observed renewTime.
     	// +optional
     	LeaseDurationSeconds *int32 `json:"leaseDurationSeconds,omitempty" protobuf:"varint,2,opt,name=leaseDurationSeconds"`
    @@ -57,9 +72,22 @@ type LeaseSpec struct {
     	// holders.
     	// +optional
     	LeaseTransitions *int32 `json:"leaseTransitions,omitempty" protobuf:"varint,5,opt,name=leaseTransitions"`
    +	// Strategy indicates the strategy for picking the leader for coordinated leader election.
    +	// If the field is not specified, there is no active coordination for this lease.
    +	// (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.
    +	// +featureGate=CoordinatedLeaderElection
    +	// +optional
    +	Strategy *CoordinatedLeaseStrategy `json:"strategy,omitempty" protobuf:"bytes,6,opt,name=strategy"`
    +	// PreferredHolder signals to a lease holder that the lease has a
    +	// more optimal holder and should be given up.
    +	// This field can only be set if Strategy is also set.
    +	// +featureGate=CoordinatedLeaderElection
    +	// +optional
    +	PreferredHolder *string `json:"preferredHolder,omitempty" protobuf:"bytes,7,opt,name=preferredHolder"`
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // LeaseList is a list of Lease objects.
     type LeaseList struct {
    diff --git a/vendor/k8s.io/api/coordination/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/coordination/v1/types_swagger_doc_generated.go
    index f3720eca0271..6c1a7ea8b90b 100644
    --- a/vendor/k8s.io/api/coordination/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/coordination/v1/types_swagger_doc_generated.go
    @@ -49,11 +49,13 @@ func (LeaseList) SwaggerDoc() map[string]string {
     
     var map_LeaseSpec = map[string]string{
     	"":                     "LeaseSpec is a specification of a Lease.",
    -	"holderIdentity":       "holderIdentity contains the identity of the holder of a current lease.",
    -	"leaseDurationSeconds": "leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed renewTime.",
    +	"holderIdentity":       "holderIdentity contains the identity of the holder of a current lease. If Coordinated Leader Election is used, the holder identity must be equal to the elected LeaseCandidate.metadata.name field.",
    +	"leaseDurationSeconds": "leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measured against the time of last observed renewTime.",
     	"acquireTime":          "acquireTime is a time when the current lease was acquired.",
     	"renewTime":            "renewTime is a time when the current holder of a lease has last updated the lease.",
     	"leaseTransitions":     "leaseTransitions is the number of transitions of a lease between holders.",
    +	"strategy":             "Strategy indicates the strategy for picking the leader for coordinated leader election. If the field is not specified, there is no active coordination for this lease. (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.",
    +	"preferredHolder":      "PreferredHolder signals to a lease holder that the lease has a more optimal holder and should be given up. This field can only be set if Strategy is also set.",
     }
     
     func (LeaseSpec) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/coordination/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/coordination/v1/zz_generated.deepcopy.go
    index 99f6b0be7ac4..4d549cc99fc1 100644
    --- a/vendor/k8s.io/api/coordination/v1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/coordination/v1/zz_generated.deepcopy.go
    @@ -111,6 +111,16 @@ func (in *LeaseSpec) DeepCopyInto(out *LeaseSpec) {
     		*out = new(int32)
     		**out = **in
     	}
    +	if in.Strategy != nil {
    +		in, out := &in.Strategy, &out.Strategy
    +		*out = new(CoordinatedLeaseStrategy)
    +		**out = **in
    +	}
    +	if in.PreferredHolder != nil {
    +		in, out := &in.PreferredHolder, &out.PreferredHolder
    +		*out = new(string)
    +		**out = **in
    +	}
     	return
     }
     
    diff --git a/vendor/k8s.io/api/coordination/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/coordination/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..a22632cba969
    --- /dev/null
    +++ b/vendor/k8s.io/api/coordination/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,34 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Lease) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 14
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *LeaseList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    diff --git a/vendor/k8s.io/api/coordination/v1alpha2/doc.go b/vendor/k8s.io/api/coordination/v1alpha2/doc.go
    new file mode 100644
    index 000000000000..5e6d655302e5
    --- /dev/null
    +++ b/vendor/k8s.io/api/coordination/v1alpha2/doc.go
    @@ -0,0 +1,24 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// +k8s:deepcopy-gen=package
    +// +k8s:protobuf-gen=package
    +// +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
    +
    +// +groupName=coordination.k8s.io
    +
    +package v1alpha2 // import "k8s.io/api/coordination/v1alpha2"
    diff --git a/vendor/k8s.io/api/coordination/v1alpha2/generated.pb.go b/vendor/k8s.io/api/coordination/v1alpha2/generated.pb.go
    new file mode 100644
    index 000000000000..85ceea1f258f
    --- /dev/null
    +++ b/vendor/k8s.io/api/coordination/v1alpha2/generated.pb.go
    @@ -0,0 +1,1027 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by protoc-gen-gogo. DO NOT EDIT.
    +// source: k8s.io/api/coordination/v1alpha2/generated.proto
    +
    +package v1alpha2
    +
    +import (
    +	fmt "fmt"
    +
    +	io "io"
    +
    +	proto "github.com/gogo/protobuf/proto"
    +
    +	k8s_io_api_coordination_v1 "k8s.io/api/coordination/v1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +
    +	math "math"
    +	math_bits "math/bits"
    +	reflect "reflect"
    +	strings "strings"
    +)
    +
    +// Reference imports to suppress errors if they are not otherwise used.
    +var _ = proto.Marshal
    +var _ = fmt.Errorf
    +var _ = math.Inf
    +
    +// This is a compile-time assertion to ensure that this generated file
    +// is compatible with the proto package it is being compiled against.
    +// A compilation error at this line likely means your copy of the
    +// proto package needs to be updated.
    +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    +
    +func (m *LeaseCandidate) Reset()      { *m = LeaseCandidate{} }
    +func (*LeaseCandidate) ProtoMessage() {}
    +func (*LeaseCandidate) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_c1ec5c989d262916, []int{0}
    +}
    +func (m *LeaseCandidate) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *LeaseCandidate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *LeaseCandidate) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_LeaseCandidate.Merge(m, src)
    +}
    +func (m *LeaseCandidate) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *LeaseCandidate) XXX_DiscardUnknown() {
    +	xxx_messageInfo_LeaseCandidate.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_LeaseCandidate proto.InternalMessageInfo
    +
    +func (m *LeaseCandidateList) Reset()      { *m = LeaseCandidateList{} }
    +func (*LeaseCandidateList) ProtoMessage() {}
    +func (*LeaseCandidateList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_c1ec5c989d262916, []int{1}
    +}
    +func (m *LeaseCandidateList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *LeaseCandidateList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *LeaseCandidateList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_LeaseCandidateList.Merge(m, src)
    +}
    +func (m *LeaseCandidateList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *LeaseCandidateList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_LeaseCandidateList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_LeaseCandidateList proto.InternalMessageInfo
    +
    +func (m *LeaseCandidateSpec) Reset()      { *m = LeaseCandidateSpec{} }
    +func (*LeaseCandidateSpec) ProtoMessage() {}
    +func (*LeaseCandidateSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_c1ec5c989d262916, []int{2}
    +}
    +func (m *LeaseCandidateSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *LeaseCandidateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *LeaseCandidateSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_LeaseCandidateSpec.Merge(m, src)
    +}
    +func (m *LeaseCandidateSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *LeaseCandidateSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_LeaseCandidateSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_LeaseCandidateSpec proto.InternalMessageInfo
    +
    +func init() {
    +	proto.RegisterType((*LeaseCandidate)(nil), "k8s.io.api.coordination.v1alpha2.LeaseCandidate")
    +	proto.RegisterType((*LeaseCandidateList)(nil), "k8s.io.api.coordination.v1alpha2.LeaseCandidateList")
    +	proto.RegisterType((*LeaseCandidateSpec)(nil), "k8s.io.api.coordination.v1alpha2.LeaseCandidateSpec")
    +}
    +
    +func init() {
    +	proto.RegisterFile("k8s.io/api/coordination/v1alpha2/generated.proto", fileDescriptor_c1ec5c989d262916)
    +}
    +
    +var fileDescriptor_c1ec5c989d262916 = []byte{
    +	// 555 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x4f, 0x8b, 0xd3, 0x4e,
    +	0x18, 0xc7, 0x9b, 0xdd, 0xf6, 0x47, 0x3b, 0xbf, 0xad, 0xd4, 0x01, 0x21, 0xf4, 0x90, 0x96, 0x9e,
    +	0x44, 0x70, 0x66, 0x77, 0x5d, 0x44, 0xf0, 0x96, 0xf5, 0x0f, 0x42, 0x57, 0x25, 0xab, 0x0b, 0xca,
    +	0x1e, 0x9c, 0x26, 0x8f, 0xe9, 0xd8, 0x26, 0x13, 0x92, 0xe9, 0x4a, 0x6f, 0xbe, 0x04, 0x5f, 0x56,
    +	0xf5, 0xb4, 0xc7, 0x3d, 0x15, 0x1b, 0xc1, 0x17, 0xe1, 0x49, 0x66, 0x9a, 0xf4, 0xaf, 0xa5, 0xc5,
    +	0x5b, 0xe7, 0x99, 0xe7, 0xf3, 0x99, 0xf9, 0x3e, 0x69, 0x82, 0x0e, 0x7b, 0x8f, 0x12, 0xc2, 0x05,
    +	0x65, 0x11, 0xa7, 0xae, 0x10, 0xb1, 0xc7, 0x43, 0x26, 0xb9, 0x08, 0xe9, 0xd5, 0x11, 0xeb, 0x47,
    +	0x5d, 0x76, 0x4c, 0x7d, 0x08, 0x21, 0x66, 0x12, 0x3c, 0x12, 0xc5, 0x42, 0x0a, 0xdc, 0x9c, 0x12,
    +	0x84, 0x45, 0x9c, 0x2c, 0x12, 0x24, 0x27, 0xea, 0xf7, 0x7d, 0x2e, 0xbb, 0x83, 0x0e, 0x71, 0x45,
    +	0x40, 0x7d, 0xe1, 0x0b, 0xaa, 0xc1, 0xce, 0xe0, 0xa3, 0x5e, 0xe9, 0x85, 0xfe, 0x35, 0x15, 0xd6,
    +	0xef, 0x6d, 0xbe, 0xc2, 0xea, 0xe1, 0xf5, 0x93, 0x79, 0x6f, 0xc0, 0xdc, 0x2e, 0x0f, 0x21, 0x1e,
    +	0xd2, 0xa8, 0xe7, 0xab, 0x42, 0x42, 0x03, 0x90, 0xec, 0x6f, 0x14, 0xdd, 0x44, 0xc5, 0x83, 0x50,
    +	0xf2, 0x00, 0xd6, 0x80, 0x87, 0xdb, 0x80, 0xc4, 0xed, 0x42, 0xc0, 0x56, 0xb9, 0xd6, 0x77, 0x03,
    +	0xdd, 0x6a, 0x03, 0x4b, 0xe0, 0x94, 0x85, 0x1e, 0xf7, 0x98, 0x04, 0xfc, 0x01, 0x95, 0xd5, 0xb5,
    +	0x3c, 0x26, 0x99, 0x69, 0x34, 0x8d, 0xbb, 0xff, 0x1f, 0x1f, 0x92, 0xf9, 0x04, 0x67, 0x76, 0x12,
    +	0xf5, 0x7c, 0x55, 0x48, 0x88, 0xea, 0x26, 0x57, 0x47, 0xe4, 0x55, 0xe7, 0x13, 0xb8, 0xf2, 0x0c,
    +	0x24, 0xb3, 0xf1, 0x68, 0xdc, 0x28, 0xa4, 0xe3, 0x06, 0x9a, 0xd7, 0x9c, 0x99, 0x15, 0x5f, 0xa0,
    +	0x62, 0x12, 0x81, 0x6b, 0xee, 0x69, 0xfb, 0x09, 0xd9, 0xf6, 0x7c, 0xc8, 0xf2, 0x0d, 0xcf, 0x23,
    +	0x70, 0xed, 0x83, 0xec, 0x84, 0xa2, 0x5a, 0x39, 0xda, 0xd7, 0xfa, 0x66, 0x20, 0xbc, 0xdc, 0xda,
    +	0xe6, 0x89, 0xc4, 0x97, 0x6b, 0x81, 0xc8, 0x6e, 0x81, 0x14, 0xad, 0xe3, 0xd4, 0xb2, 0xc3, 0xca,
    +	0x79, 0x65, 0x21, 0xcc, 0x5b, 0x54, 0xe2, 0x12, 0x82, 0xc4, 0xdc, 0x6b, 0xee, 0xaf, 0xcc, 0x6a,
    +	0xa7, 0x34, 0x76, 0x35, 0x93, 0x97, 0x5e, 0x28, 0x8d, 0x33, 0xb5, 0xb5, 0x7e, 0xed, 0xaf, 0x66,
    +	0x51, 0x41, 0x31, 0x45, 0x95, 0xbe, 0xaa, 0xbe, 0x64, 0x01, 0xe8, 0x30, 0x15, 0xfb, 0x76, 0xc6,
    +	0x57, 0xda, 0xf9, 0x86, 0x33, 0xef, 0xc1, 0xef, 0x50, 0x39, 0xe2, 0xa1, 0xff, 0x86, 0x07, 0x90,
    +	0xcd, 0x9b, 0xee, 0x16, 0xfe, 0x8c, 0xbb, 0xb1, 0x50, 0x98, 0x7d, 0xa0, 0x92, 0xbf, 0xce, 0x24,
    +	0xce, 0x4c, 0x87, 0x2f, 0x51, 0x25, 0x86, 0x10, 0x3e, 0x6b, 0xf7, 0xfe, 0xbf, 0xb9, 0xab, 0xea,
    +	0xe2, 0x4e, 0x6e, 0x71, 0xe6, 0x42, 0xfc, 0x18, 0x55, 0x3b, 0x3c, 0x64, 0xf1, 0xf0, 0x02, 0xe2,
    +	0x84, 0x8b, 0xd0, 0x2c, 0xea, 0xb4, 0x77, 0xb2, 0xb4, 0x55, 0x7b, 0x71, 0xd3, 0x59, 0xee, 0xc5,
    +	0x4f, 0x50, 0x0d, 0x82, 0x41, 0x5f, 0x0f, 0x3e, 0xe7, 0x4b, 0x9a, 0x37, 0x33, 0xbe, 0xf6, 0x74,
    +	0x65, 0xdf, 0x59, 0x23, 0xb0, 0x8b, 0xca, 0x89, 0x54, 0x6f, 0x8b, 0x3f, 0x34, 0xff, 0xd3, 0xf4,
    +	0xf3, 0xfc, 0x8f, 0x70, 0x9e, 0xd5, 0x7f, 0x8f, 0x1b, 0x0f, 0x36, 0x7f, 0x0d, 0xc8, 0x69, 0xbe,
    +	0x06, 0x4f, 0x3f, 0x9d, 0x1c, 0x73, 0x66, 0x62, 0xfb, 0xd9, 0x68, 0x62, 0x15, 0xae, 0x27, 0x56,
    +	0xe1, 0x66, 0x62, 0x15, 0xbe, 0xa4, 0x96, 0x31, 0x4a, 0x2d, 0xe3, 0x3a, 0xb5, 0x8c, 0x9b, 0xd4,
    +	0x32, 0x7e, 0xa4, 0x96, 0xf1, 0xf5, 0xa7, 0x55, 0x78, 0xdf, 0xdc, 0xf6, 0xd5, 0xfb, 0x13, 0x00,
    +	0x00, 0xff, 0xff, 0x7f, 0x15, 0x63, 0xd0, 0x18, 0x05, 0x00, 0x00,
    +}
    +
    +func (m *LeaseCandidate) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *LeaseCandidate) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *LeaseCandidate) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *LeaseCandidateList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *LeaseCandidateList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *LeaseCandidateList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *LeaseCandidateSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *LeaseCandidateSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *LeaseCandidateSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Strategy)
    +	copy(dAtA[i:], m.Strategy)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Strategy)))
    +	i--
    +	dAtA[i] = 0x32
    +	i -= len(m.EmulationVersion)
    +	copy(dAtA[i:], m.EmulationVersion)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.EmulationVersion)))
    +	i--
    +	dAtA[i] = 0x2a
    +	i -= len(m.BinaryVersion)
    +	copy(dAtA[i:], m.BinaryVersion)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.BinaryVersion)))
    +	i--
    +	dAtA[i] = 0x22
    +	if m.RenewTime != nil {
    +		{
    +			size, err := m.RenewTime.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	if m.PingTime != nil {
    +		{
    +			size, err := m.PingTime.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.LeaseName)
    +	copy(dAtA[i:], m.LeaseName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.LeaseName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
    +	}
    +	dAtA[offset] = uint8(v)
    +	return base
    +}
    +func (m *LeaseCandidate) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *LeaseCandidateList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *LeaseCandidateSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.LeaseName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.PingTime != nil {
    +		l = m.PingTime.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.RenewTime != nil {
    +		l = m.RenewTime.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	l = len(m.BinaryVersion)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.EmulationVersion)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Strategy)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *LeaseCandidate) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&LeaseCandidate{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "LeaseCandidateSpec", "LeaseCandidateSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *LeaseCandidateList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]LeaseCandidate{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "LeaseCandidate", "LeaseCandidate", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&LeaseCandidateList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *LeaseCandidateSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&LeaseCandidateSpec{`,
    +		`LeaseName:` + fmt.Sprintf("%v", this.LeaseName) + `,`,
    +		`PingTime:` + strings.Replace(fmt.Sprintf("%v", this.PingTime), "MicroTime", "v1.MicroTime", 1) + `,`,
    +		`RenewTime:` + strings.Replace(fmt.Sprintf("%v", this.RenewTime), "MicroTime", "v1.MicroTime", 1) + `,`,
    +		`BinaryVersion:` + fmt.Sprintf("%v", this.BinaryVersion) + `,`,
    +		`EmulationVersion:` + fmt.Sprintf("%v", this.EmulationVersion) + `,`,
    +		`Strategy:` + fmt.Sprintf("%v", this.Strategy) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *LeaseCandidate) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: LeaseCandidate: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: LeaseCandidate: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *LeaseCandidateList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: LeaseCandidateList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: LeaseCandidateList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, LeaseCandidate{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *LeaseCandidateSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: LeaseCandidateSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: LeaseCandidateSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field LeaseName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.LeaseName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PingTime", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.PingTime == nil {
    +				m.PingTime = &v1.MicroTime{}
    +			}
    +			if err := m.PingTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field RenewTime", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.RenewTime == nil {
    +				m.RenewTime = &v1.MicroTime{}
    +			}
    +			if err := m.RenewTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field BinaryVersion", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.BinaryVersion = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field EmulationVersion", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.EmulationVersion = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Strategy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Strategy = k8s_io_api_coordination_v1.CoordinatedLeaseStrategy(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func skipGenerated(dAtA []byte) (n int, err error) {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	depth := 0
    +	for iNdEx < l {
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return 0, ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return 0, io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= (uint64(b) & 0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		wireType := int(wire & 0x7)
    +		switch wireType {
    +		case 0:
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				iNdEx++
    +				if dAtA[iNdEx-1] < 0x80 {
    +					break
    +				}
    +			}
    +		case 1:
    +			iNdEx += 8
    +		case 2:
    +			var length int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				length |= (int(b) & 0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if length < 0 {
    +				return 0, ErrInvalidLengthGenerated
    +			}
    +			iNdEx += length
    +		case 3:
    +			depth++
    +		case 4:
    +			if depth == 0 {
    +				return 0, ErrUnexpectedEndOfGroupGenerated
    +			}
    +			depth--
    +		case 5:
    +			iNdEx += 4
    +		default:
    +			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
    +		}
    +		if iNdEx < 0 {
    +			return 0, ErrInvalidLengthGenerated
    +		}
    +		if depth == 0 {
    +			return iNdEx, nil
    +		}
    +	}
    +	return 0, io.ErrUnexpectedEOF
    +}
    +
    +var (
    +	ErrInvalidLengthGenerated        = fmt.Errorf("proto: negative length found during unmarshaling")
    +	ErrIntOverflowGenerated          = fmt.Errorf("proto: integer overflow")
    +	ErrUnexpectedEndOfGroupGenerated = fmt.Errorf("proto: unexpected end of group")
    +)
    diff --git a/vendor/k8s.io/api/coordination/v1alpha2/generated.proto b/vendor/k8s.io/api/coordination/v1alpha2/generated.proto
    new file mode 100644
    index 000000000000..7e56cd7f9666
    --- /dev/null
    +++ b/vendor/k8s.io/api/coordination/v1alpha2/generated.proto
    @@ -0,0 +1,100 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +
    +// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    +
    +syntax = "proto2";
    +
    +package k8s.io.api.coordination.v1alpha2;
    +
    +import "k8s.io/api/coordination/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    +
    +// Package-wide variables from generator "generated".
    +option go_package = "k8s.io/api/coordination/v1alpha2";
    +
    +// LeaseCandidate defines a candidate for a Lease object.
    +// Candidates are created such that coordinated leader election will pick the best leader from the list of candidates.
    +message LeaseCandidate {
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // spec contains the specification of the Lease.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    +  // +optional
    +  optional LeaseCandidateSpec spec = 2;
    +}
    +
    +// LeaseCandidateList is a list of Lease objects.
    +message LeaseCandidateList {
    +  // Standard list metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // items is a list of schema objects.
    +  repeated LeaseCandidate items = 2;
    +}
    +
    +// LeaseCandidateSpec is a specification of a Lease.
    +message LeaseCandidateSpec {
    +  // LeaseName is the name of the lease for which this candidate is contending.
    +  // This field is immutable.
    +  // +required
    +  optional string leaseName = 1;
    +
    +  // PingTime is the last time that the server has requested the LeaseCandidate
    +  // to renew. It is only done during leader election to check if any
    +  // LeaseCandidates have become ineligible. When PingTime is updated, the
    +  // LeaseCandidate will respond by updating RenewTime.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime pingTime = 2;
    +
    +  // RenewTime is the time that the LeaseCandidate was last updated.
    +  // Any time a Lease needs to do leader election, the PingTime field
    +  // is updated to signal to the LeaseCandidate that they should update
    +  // the RenewTime.
    +  // Old LeaseCandidate objects are also garbage collected if it has been hours
    +  // since the last renew. The PingTime field is updated regularly to prevent
    +  // garbage collection for still active LeaseCandidates.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime renewTime = 3;
    +
    +  // BinaryVersion is the binary version. It must be in a semver format without leading `v`.
    +  // This field is required.
    +  // +required
    +  optional string binaryVersion = 4;
    +
    +  // EmulationVersion is the emulation version. It must be in a semver format without leading `v`.
    +  // EmulationVersion must be less than or equal to BinaryVersion.
    +  // This field is required when strategy is "OldestEmulationVersion"
    +  // +optional
    +  optional string emulationVersion = 5;
    +
    +  // Strategy is the strategy that coordinated leader election will use for picking the leader.
    +  // If multiple candidates for the same Lease return different strategies, the strategy provided
    +  // by the candidate with the latest BinaryVersion will be used. If there is still conflict,
    +  // this is a user error and coordinated leader election will not operate the Lease until resolved.
    +  // (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.
    +  // +featureGate=CoordinatedLeaderElection
    +  // +required
    +  optional string strategy = 6;
    +}
    +
    diff --git a/vendor/k8s.io/api/coordination/v1alpha2/register.go b/vendor/k8s.io/api/coordination/v1alpha2/register.go
    new file mode 100644
    index 000000000000..86bb8e0f2e36
    --- /dev/null
    +++ b/vendor/k8s.io/api/coordination/v1alpha2/register.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha2
    +
    +import (
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/runtime/schema"
    +)
    +
    +// GroupName is the group name use in this package
    +const GroupName = "coordination.k8s.io"
    +
    +// SchemeGroupVersion is group version used to register these objects
    +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha2"}
    +
    +// Resource takes an unqualified resource and returns a Group qualified GroupResource
    +func Resource(resource string) schema.GroupResource {
    +	return SchemeGroupVersion.WithResource(resource).GroupResource()
    +}
    +
    +var (
    +	// TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api.
    +	// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
    +	SchemeBuilder      = runtime.NewSchemeBuilder(addKnownTypes)
    +	localSchemeBuilder = &SchemeBuilder
    +	AddToScheme        = localSchemeBuilder.AddToScheme
    +)
    +
    +// Adds the list of known types to api.Scheme.
    +func addKnownTypes(scheme *runtime.Scheme) error {
    +	scheme.AddKnownTypes(SchemeGroupVersion,
    +		&LeaseCandidate{},
    +		&LeaseCandidateList{},
    +	)
    +
    +	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
    +	return nil
    +}
    diff --git a/vendor/k8s.io/api/coordination/v1alpha2/types.go b/vendor/k8s.io/api/coordination/v1alpha2/types.go
    new file mode 100644
    index 000000000000..2f53b097a28b
    --- /dev/null
    +++ b/vendor/k8s.io/api/coordination/v1alpha2/types.go
    @@ -0,0 +1,95 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha2
    +
    +import (
    +	v1 "k8s.io/api/coordination/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +)
    +
    +// +genclient
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// LeaseCandidate defines a candidate for a Lease object.
    +// Candidates are created such that coordinated leader election will pick the best leader from the list of candidates.
    +type LeaseCandidate struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// spec contains the specification of the Lease.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    +	// +optional
    +	Spec LeaseCandidateSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    +}
    +
    +// LeaseCandidateSpec is a specification of a Lease.
    +type LeaseCandidateSpec struct {
    +	// LeaseName is the name of the lease for which this candidate is contending.
    +	// This field is immutable.
    +	// +required
    +	LeaseName string `json:"leaseName" protobuf:"bytes,1,name=leaseName"`
    +	// PingTime is the last time that the server has requested the LeaseCandidate
    +	// to renew. It is only done during leader election to check if any
    +	// LeaseCandidates have become ineligible. When PingTime is updated, the
    +	// LeaseCandidate will respond by updating RenewTime.
    +	// +optional
    +	PingTime *metav1.MicroTime `json:"pingTime,omitempty" protobuf:"bytes,2,opt,name=pingTime"`
    +	// RenewTime is the time that the LeaseCandidate was last updated.
    +	// Any time a Lease needs to do leader election, the PingTime field
    +	// is updated to signal to the LeaseCandidate that they should update
    +	// the RenewTime.
    +	// Old LeaseCandidate objects are also garbage collected if it has been hours
    +	// since the last renew. The PingTime field is updated regularly to prevent
    +	// garbage collection for still active LeaseCandidates.
    +	// +optional
    +	RenewTime *metav1.MicroTime `json:"renewTime,omitempty" protobuf:"bytes,3,opt,name=renewTime"`
    +	// BinaryVersion is the binary version. It must be in a semver format without leading `v`.
    +	// This field is required.
    +	// +required
    +	BinaryVersion string `json:"binaryVersion" protobuf:"bytes,4,name=binaryVersion"`
    +	// EmulationVersion is the emulation version. It must be in a semver format without leading `v`.
    +	// EmulationVersion must be less than or equal to BinaryVersion.
    +	// This field is required when strategy is "OldestEmulationVersion"
    +	// +optional
    +	EmulationVersion string `json:"emulationVersion,omitempty" protobuf:"bytes,5,opt,name=emulationVersion"`
    +	// Strategy is the strategy that coordinated leader election will use for picking the leader.
    +	// If multiple candidates for the same Lease return different strategies, the strategy provided
    +	// by the candidate with the latest BinaryVersion will be used. If there is still conflict,
    +	// this is a user error and coordinated leader election will not operate the Lease until resolved.
    +	// (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.
    +	// +featureGate=CoordinatedLeaderElection
    +	// +required
    +	Strategy v1.CoordinatedLeaseStrategy `json:"strategy,omitempty" protobuf:"bytes,6,opt,name=strategy"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// LeaseCandidateList is a list of Lease objects.
    +type LeaseCandidateList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// items is a list of schema objects.
    +	Items []LeaseCandidate `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    diff --git a/vendor/k8s.io/api/coordination/v1alpha2/types_swagger_doc_generated.go b/vendor/k8s.io/api/coordination/v1alpha2/types_swagger_doc_generated.go
    new file mode 100644
    index 000000000000..39534e6adb05
    --- /dev/null
    +++ b/vendor/k8s.io/api/coordination/v1alpha2/types_swagger_doc_generated.go
    @@ -0,0 +1,64 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha2
    +
    +// This file contains a collection of methods that can be used from go-restful to
    +// generate Swagger API documentation for its models. Please read this PR for more
    +// information on the implementation: https://github.com/emicklei/go-restful/pull/215
    +//
    +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if
    +// they are on one line! For multiple line or blocks that you want to ignore use ---.
    +// Any context after a --- is ignored.
    +//
    +// Those methods can be generated by using hack/update-codegen.sh
    +
    +// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    +var map_LeaseCandidate = map[string]string{
    +	"":         "LeaseCandidate defines a candidate for a Lease object. Candidates are created such that coordinated leader election will pick the best leader from the list of candidates.",
    +	"metadata": "More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"spec":     "spec contains the specification of the Lease. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
    +}
    +
    +func (LeaseCandidate) SwaggerDoc() map[string]string {
    +	return map_LeaseCandidate
    +}
    +
    +var map_LeaseCandidateList = map[string]string{
    +	"":         "LeaseCandidateList is a list of Lease objects.",
    +	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"items":    "items is a list of schema objects.",
    +}
    +
    +func (LeaseCandidateList) SwaggerDoc() map[string]string {
    +	return map_LeaseCandidateList
    +}
    +
    +var map_LeaseCandidateSpec = map[string]string{
    +	"":                 "LeaseCandidateSpec is a specification of a Lease.",
    +	"leaseName":        "LeaseName is the name of the lease for which this candidate is contending. This field is immutable.",
    +	"pingTime":         "PingTime is the last time that the server has requested the LeaseCandidate to renew. It is only done during leader election to check if any LeaseCandidates have become ineligible. When PingTime is updated, the LeaseCandidate will respond by updating RenewTime.",
    +	"renewTime":        "RenewTime is the time that the LeaseCandidate was last updated. Any time a Lease needs to do leader election, the PingTime field is updated to signal to the LeaseCandidate that they should update the RenewTime. Old LeaseCandidate objects are also garbage collected if it has been hours since the last renew. The PingTime field is updated regularly to prevent garbage collection for still active LeaseCandidates.",
    +	"binaryVersion":    "BinaryVersion is the binary version. It must be in a semver format without leading `v`. This field is required.",
    +	"emulationVersion": "EmulationVersion is the emulation version. It must be in a semver format without leading `v`. EmulationVersion must be less than or equal to BinaryVersion. This field is required when strategy is \"OldestEmulationVersion\"",
    +	"strategy":         "Strategy is the strategy that coordinated leader election will use for picking the leader. If multiple candidates for the same Lease return different strategies, the strategy provided by the candidate with the latest BinaryVersion will be used. If there is still conflict, this is a user error and coordinated leader election will not operate the Lease until resolved. (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.",
    +}
    +
    +func (LeaseCandidateSpec) SwaggerDoc() map[string]string {
    +	return map_LeaseCandidateSpec
    +}
    +
    +// AUTO-GENERATED FUNCTIONS END HERE
    diff --git a/vendor/k8s.io/api/coordination/v1alpha2/zz_generated.deepcopy.go b/vendor/k8s.io/api/coordination/v1alpha2/zz_generated.deepcopy.go
    new file mode 100644
    index 000000000000..a20284797316
    --- /dev/null
    +++ b/vendor/k8s.io/api/coordination/v1alpha2/zz_generated.deepcopy.go
    @@ -0,0 +1,110 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by deepcopy-gen. DO NOT EDIT.
    +
    +package v1alpha2
    +
    +import (
    +	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 *LeaseCandidate) DeepCopyInto(out *LeaseCandidate) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LeaseCandidate.
    +func (in *LeaseCandidate) DeepCopy() *LeaseCandidate {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(LeaseCandidate)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *LeaseCandidate) 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 *LeaseCandidateList) DeepCopyInto(out *LeaseCandidateList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]LeaseCandidate, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LeaseCandidateList.
    +func (in *LeaseCandidateList) DeepCopy() *LeaseCandidateList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(LeaseCandidateList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *LeaseCandidateList) 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 *LeaseCandidateSpec) DeepCopyInto(out *LeaseCandidateSpec) {
    +	*out = *in
    +	if in.PingTime != nil {
    +		in, out := &in.PingTime, &out.PingTime
    +		*out = (*in).DeepCopy()
    +	}
    +	if in.RenewTime != nil {
    +		in, out := &in.RenewTime, &out.RenewTime
    +		*out = (*in).DeepCopy()
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LeaseCandidateSpec.
    +func (in *LeaseCandidateSpec) DeepCopy() *LeaseCandidateSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(LeaseCandidateSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    diff --git a/vendor/k8s.io/api/coordination/v1alpha2/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/coordination/v1alpha2/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..a99b9ab5bfd6
    --- /dev/null
    +++ b/vendor/k8s.io/api/coordination/v1alpha2/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,58 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1alpha2
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *LeaseCandidate) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *LeaseCandidate) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *LeaseCandidate) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *LeaseCandidateList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *LeaseCandidateList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *LeaseCandidateList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    diff --git a/vendor/k8s.io/api/coordination/v1beta1/generated.pb.go b/vendor/k8s.io/api/coordination/v1beta1/generated.pb.go
    index 7334290fbbd4..bea9b8146ade 100644
    --- a/vendor/k8s.io/api/coordination/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/coordination/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/coordination/v1beta1/generated.proto
    +// source: k8s.io/api/coordination/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -25,6 +25,8 @@ import (
     	io "io"
     
     	proto "github.com/gogo/protobuf/proto"
    +
    +	k8s_io_api_coordination_v1 "k8s.io/api/coordination/v1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     
     	math "math"
    @@ -47,7 +49,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Lease) Reset()      { *m = Lease{} }
     func (*Lease) ProtoMessage() {}
     func (*Lease) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_daca6bcd2ff63a80, []int{0}
    +	return fileDescriptor_8d4e223b8bb23da3, []int{0}
     }
     func (m *Lease) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +77,7 @@ var xxx_messageInfo_Lease proto.InternalMessageInfo
     func (m *LeaseList) Reset()      { *m = LeaseList{} }
     func (*LeaseList) ProtoMessage() {}
     func (*LeaseList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_daca6bcd2ff63a80, []int{1}
    +	return fileDescriptor_8d4e223b8bb23da3, []int{1}
     }
     func (m *LeaseList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +105,7 @@ var xxx_messageInfo_LeaseList proto.InternalMessageInfo
     func (m *LeaseSpec) Reset()      { *m = LeaseSpec{} }
     func (*LeaseSpec) ProtoMessage() {}
     func (*LeaseSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_daca6bcd2ff63a80, []int{2}
    +	return fileDescriptor_8d4e223b8bb23da3, []int{2}
     }
     func (m *LeaseSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,45 +137,49 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/coordination/v1beta1/generated.proto", fileDescriptor_daca6bcd2ff63a80)
    -}
    -
    -var fileDescriptor_daca6bcd2ff63a80 = []byte{
    -	// 543 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xc1, 0x6e, 0xd3, 0x4e,
    -	0x10, 0xc6, 0xe3, 0xb6, 0x91, 0x9a, 0xcd, 0xbf, 0xfd, 0x47, 0x56, 0x0e, 0x56, 0x0e, 0x76, 0x95,
    -	0x03, 0xaa, 0x90, 0xd8, 0x25, 0x15, 0x42, 0x88, 0x13, 0x58, 0x20, 0xb5, 0xc2, 0x15, 0x92, 0xdb,
    -	0x13, 0xea, 0x81, 0xb5, 0x3d, 0x38, 0x4b, 0x6a, 0xaf, 0xd9, 0x5d, 0x07, 0xf5, 0xc6, 0x23, 0x70,
    -	0xe5, 0x45, 0xe0, 0x15, 0x72, 0xec, 0xb1, 0x27, 0x8b, 0x98, 0x17, 0x41, 0xde, 0xb8, 0x4d, 0x48,
    -	0x8a, 0x12, 0x71, 0xf3, 0xce, 0xcc, 0xf7, 0x9b, 0x6f, 0xbe, 0x83, 0xd1, 0xf1, 0xe8, 0x99, 0xc4,
    -	0x8c, 0x93, 0x51, 0x1e, 0x80, 0x48, 0x41, 0x81, 0x24, 0x63, 0x48, 0x23, 0x2e, 0x48, 0xdd, 0xa0,
    -	0x19, 0x23, 0x21, 0xe7, 0x22, 0x62, 0x29, 0x55, 0x8c, 0xa7, 0x64, 0x3c, 0x08, 0x40, 0xd1, 0x01,
    -	0x89, 0x21, 0x05, 0x41, 0x15, 0x44, 0x38, 0x13, 0x5c, 0x71, 0xd3, 0x99, 0x09, 0x30, 0xcd, 0x18,
    -	0x5e, 0x14, 0xe0, 0x5a, 0xd0, 0x7b, 0x14, 0x33, 0x35, 0xcc, 0x03, 0x1c, 0xf2, 0x84, 0xc4, 0x3c,
    -	0xe6, 0x44, 0xeb, 0x82, 0xfc, 0x83, 0x7e, 0xe9, 0x87, 0xfe, 0x9a, 0xf1, 0x7a, 0x4f, 0xe6, 0x06,
    -	0x12, 0x1a, 0x0e, 0x59, 0x0a, 0xe2, 0x8a, 0x64, 0xa3, 0xb8, 0x2a, 0x48, 0x92, 0x80, 0xa2, 0x64,
    -	0xbc, 0xe2, 0xa2, 0x47, 0xfe, 0xa6, 0x12, 0x79, 0xaa, 0x58, 0x02, 0x2b, 0x82, 0xa7, 0xeb, 0x04,
    -	0x32, 0x1c, 0x42, 0x42, 0x97, 0x75, 0xfd, 0x1f, 0x06, 0x6a, 0x7a, 0x40, 0x25, 0x98, 0xef, 0xd1,
    -	0x6e, 0xe5, 0x26, 0xa2, 0x8a, 0x5a, 0xc6, 0x81, 0x71, 0xd8, 0x3e, 0x7a, 0x8c, 0xe7, 0x59, 0xdc,
    -	0x41, 0x71, 0x36, 0x8a, 0xab, 0x82, 0xc4, 0xd5, 0x34, 0x1e, 0x0f, 0xf0, 0xdb, 0xe0, 0x23, 0x84,
    -	0xea, 0x14, 0x14, 0x75, 0xcd, 0x49, 0xe1, 0x34, 0xca, 0xc2, 0x41, 0xf3, 0x9a, 0x7f, 0x47, 0x35,
    -	0x3d, 0xb4, 0x23, 0x33, 0x08, 0xad, 0x2d, 0x4d, 0x7f, 0x88, 0xd7, 0x24, 0x8d, 0xb5, 0xaf, 0xb3,
    -	0x0c, 0x42, 0xf7, 0xbf, 0x9a, 0xbb, 0x53, 0xbd, 0x7c, 0x4d, 0xe9, 0x7f, 0x37, 0x50, 0x4b, 0x4f,
    -	0x78, 0x4c, 0x2a, 0xf3, 0x62, 0xc5, 0x3d, 0xde, 0xcc, 0x7d, 0xa5, 0xd6, 0xde, 0x3b, 0xf5, 0x8e,
    -	0xdd, 0xdb, 0xca, 0x82, 0xf3, 0x37, 0xa8, 0xc9, 0x14, 0x24, 0xd2, 0xda, 0x3a, 0xd8, 0x3e, 0x6c,
    -	0x1f, 0x3d, 0xd8, 0xcc, 0xba, 0xbb, 0x57, 0x23, 0x9b, 0x27, 0x95, 0xd8, 0x9f, 0x31, 0xfa, 0xdf,
    -	0xb6, 0x6b, 0xe3, 0xd5, 0x31, 0xe6, 0x73, 0xb4, 0x3f, 0xe4, 0x97, 0x11, 0x88, 0x93, 0x08, 0x52,
    -	0xc5, 0xd4, 0x95, 0xb6, 0xdf, 0x72, 0xcd, 0xb2, 0x70, 0xf6, 0x8f, 0xff, 0xe8, 0xf8, 0x4b, 0x93,
    -	0xa6, 0x87, 0xba, 0x97, 0x15, 0xe8, 0x55, 0x2e, 0xf4, 0xfa, 0x33, 0x08, 0x79, 0x1a, 0x49, 0x1d,
    -	0x70, 0xd3, 0xb5, 0xca, 0xc2, 0xe9, 0x7a, 0xf7, 0xf4, 0xfd, 0x7b, 0x55, 0x66, 0x80, 0xda, 0x34,
    -	0xfc, 0x94, 0x33, 0x01, 0xe7, 0x2c, 0x01, 0x6b, 0x5b, 0xa7, 0x48, 0x36, 0x4b, 0xf1, 0x94, 0x85,
    -	0x82, 0x57, 0x32, 0xf7, 0xff, 0xb2, 0x70, 0xda, 0x2f, 0xe7, 0x1c, 0x7f, 0x11, 0x6a, 0x5e, 0xa0,
    -	0x96, 0x80, 0x14, 0x3e, 0xeb, 0x0d, 0x3b, 0xff, 0xb6, 0x61, 0xaf, 0x2c, 0x9c, 0x96, 0x7f, 0x4b,
    -	0xf1, 0xe7, 0x40, 0xf3, 0x05, 0xea, 0xe8, 0xcb, 0xce, 0x05, 0x4d, 0x25, 0xab, 0x6e, 0x93, 0x56,
    -	0x53, 0x67, 0xd1, 0x2d, 0x0b, 0xa7, 0xe3, 0x2d, 0xf5, 0xfc, 0x95, 0x69, 0xf7, 0xf5, 0x64, 0x6a,
    -	0x37, 0xae, 0xa7, 0x76, 0xe3, 0x66, 0x6a, 0x37, 0xbe, 0x94, 0xb6, 0x31, 0x29, 0x6d, 0xe3, 0xba,
    -	0xb4, 0x8d, 0x9b, 0xd2, 0x36, 0x7e, 0x96, 0xb6, 0xf1, 0xf5, 0x97, 0xdd, 0x78, 0xe7, 0xac, 0xf9,
    -	0xa9, 0xfc, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x19, 0x0e, 0xd7, 0x8f, 0x04, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/coordination/v1beta1/generated.proto", fileDescriptor_8d4e223b8bb23da3)
    +}
    +
    +var fileDescriptor_8d4e223b8bb23da3 = []byte{
    +	// 600 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xdf, 0x4e, 0xd4, 0x4e,
    +	0x14, 0xc7, 0xb7, 0xb0, 0xfb, 0xfb, 0xb1, 0xb3, 0xf2, 0x27, 0x23, 0x17, 0x0d, 0x17, 0x2d, 0xe1,
    +	0xc2, 0x10, 0x12, 0xa7, 0x82, 0xc6, 0x18, 0x13, 0x13, 0x2d, 0x9a, 0x48, 0x2c, 0xd1, 0x14, 0xae,
    +	0x0c, 0x89, 0xce, 0xb6, 0x87, 0xee, 0x08, 0xed, 0xd4, 0x99, 0x59, 0x0c, 0x77, 0x3e, 0x82, 0x4f,
    +	0xa3, 0xf1, 0x0d, 0xb8, 0xe4, 0x92, 0xab, 0x46, 0xc6, 0xb7, 0xf0, 0xca, 0xcc, 0x6c, 0x61, 0x61,
    +	0x81, 0xb0, 0xf1, 0x6e, 0xe7, 0x9c, 0xf3, 0xfd, 0x9c, 0xef, 0x9c, 0xb3, 0x53, 0x14, 0xec, 0x3d,
    +	0x91, 0x84, 0xf1, 0x80, 0x96, 0x2c, 0x48, 0x38, 0x17, 0x29, 0x2b, 0xa8, 0x62, 0xbc, 0x08, 0x0e,
    +	0x56, 0xbb, 0xa0, 0xe8, 0x6a, 0x90, 0x41, 0x01, 0x82, 0x2a, 0x48, 0x49, 0x29, 0xb8, 0xe2, 0xd8,
    +	0x1f, 0x08, 0x08, 0x2d, 0x19, 0xb9, 0x28, 0x20, 0xb5, 0x60, 0xe1, 0x7e, 0xc6, 0x54, 0xaf, 0xdf,
    +	0x25, 0x09, 0xcf, 0x83, 0x8c, 0x67, 0x3c, 0xb0, 0xba, 0x6e, 0x7f, 0xd7, 0x9e, 0xec, 0xc1, 0xfe,
    +	0x1a, 0xf0, 0x16, 0x56, 0x6e, 0x36, 0x30, 0xda, 0x7b, 0xe1, 0xd1, 0xb0, 0x36, 0xa7, 0x49, 0x8f,
    +	0x15, 0x20, 0x0e, 0x83, 0x72, 0x2f, 0x33, 0x01, 0x19, 0xe4, 0xa0, 0xe8, 0x75, 0xaa, 0xe0, 0x26,
    +	0x95, 0xe8, 0x17, 0x8a, 0xe5, 0x70, 0x45, 0xf0, 0xf8, 0x36, 0x81, 0x4c, 0x7a, 0x90, 0xd3, 0x51,
    +	0xdd, 0xd2, 0x0f, 0x07, 0xb5, 0x22, 0xa0, 0x12, 0xf0, 0x47, 0x34, 0x65, 0xdc, 0xa4, 0x54, 0x51,
    +	0xd7, 0x59, 0x74, 0x96, 0x3b, 0x6b, 0x0f, 0xc8, 0x70, 0x6e, 0xe7, 0x50, 0x52, 0xee, 0x65, 0x26,
    +	0x20, 0x89, 0xa9, 0x26, 0x07, 0xab, 0xe4, 0x6d, 0xf7, 0x13, 0x24, 0x6a, 0x13, 0x14, 0x0d, 0xf1,
    +	0x51, 0xe5, 0x37, 0x74, 0xe5, 0xa3, 0x61, 0x2c, 0x3e, 0xa7, 0xe2, 0x08, 0x35, 0x65, 0x09, 0x89,
    +	0x3b, 0x61, 0xe9, 0x2b, 0xe4, 0x96, 0xad, 0x10, 0xeb, 0x6b, 0xab, 0x84, 0x24, 0xbc, 0x53, 0x73,
    +	0x9b, 0xe6, 0x14, 0x5b, 0xca, 0xd2, 0x77, 0x07, 0xb5, 0x6d, 0x45, 0xc4, 0xa4, 0xc2, 0x3b, 0x57,
    +	0xdc, 0x93, 0xf1, 0xdc, 0x1b, 0xb5, 0xf5, 0x3e, 0x57, 0xf7, 0x98, 0x3a, 0x8b, 0x5c, 0x70, 0xfe,
    +	0x06, 0xb5, 0x98, 0x82, 0x5c, 0xba, 0x13, 0x8b, 0x93, 0xcb, 0x9d, 0xb5, 0x7b, 0xe3, 0x59, 0x0f,
    +	0xa7, 0x6b, 0x64, 0x6b, 0xc3, 0x88, 0xe3, 0x01, 0x63, 0xe9, 0x67, 0xb3, 0x36, 0x6e, 0x2e, 0x83,
    +	0x9f, 0xa2, 0x99, 0x1e, 0xdf, 0x4f, 0x41, 0x6c, 0xa4, 0x50, 0x28, 0xa6, 0x0e, 0xad, 0xfd, 0x76,
    +	0x88, 0x75, 0xe5, 0xcf, 0xbc, 0xbe, 0x94, 0x89, 0x47, 0x2a, 0x71, 0x84, 0xe6, 0xf7, 0x0d, 0xe8,
    +	0x65, 0x5f, 0xd8, 0xf6, 0x5b, 0x90, 0xf0, 0x22, 0x95, 0x76, 0xc0, 0xad, 0xd0, 0xd5, 0x95, 0x3f,
    +	0x1f, 0x5d, 0x93, 0x8f, 0xaf, 0x55, 0xe1, 0x2e, 0xea, 0xd0, 0xe4, 0x73, 0x9f, 0x09, 0xd8, 0x66,
    +	0x39, 0xb8, 0x93, 0x76, 0x8a, 0xc1, 0x78, 0x53, 0xdc, 0x64, 0x89, 0xe0, 0x46, 0x16, 0xce, 0xea,
    +	0xca, 0xef, 0xbc, 0x18, 0x72, 0xe2, 0x8b, 0x50, 0xbc, 0x83, 0xda, 0x02, 0x0a, 0xf8, 0x62, 0x3b,
    +	0x34, 0xff, 0xad, 0xc3, 0xb4, 0xae, 0xfc, 0x76, 0x7c, 0x46, 0x89, 0x87, 0x40, 0xfc, 0x1c, 0xcd,
    +	0xd9, 0x9b, 0x6d, 0x0b, 0x5a, 0x48, 0x66, 0xee, 0x26, 0xdd, 0x96, 0x9d, 0xc5, 0xbc, 0xae, 0xfc,
    +	0xb9, 0x68, 0x24, 0x17, 0x5f, 0xa9, 0xc6, 0x1f, 0xd0, 0x94, 0x54, 0xe6, 0x7d, 0x64, 0x87, 0xee,
    +	0x7f, 0x76, 0x0f, 0xeb, 0xe6, 0x2f, 0xb1, 0x55, 0xc7, 0xfe, 0x54, 0xfe, 0xc3, 0x9b, 0xdf, 0x3e,
    +	0x59, 0x3f, 0x3b, 0x43, 0x3a, 0x58, 0x70, 0x2d, 0x8b, 0xcf, 0xa1, 0xf8, 0x19, 0x9a, 0x2d, 0x05,
    +	0xec, 0x82, 0x10, 0x90, 0x0e, 0xb6, 0xeb, 0xfe, 0x6f, 0xfb, 0xdc, 0xd5, 0x95, 0x3f, 0xfb, 0xee,
    +	0x72, 0x2a, 0x1e, 0xad, 0x0d, 0x5f, 0x1d, 0x9d, 0x7a, 0x8d, 0xe3, 0x53, 0xaf, 0x71, 0x72, 0xea,
    +	0x35, 0xbe, 0x6a, 0xcf, 0x39, 0xd2, 0x9e, 0x73, 0xac, 0x3d, 0xe7, 0x44, 0x7b, 0xce, 0x2f, 0xed,
    +	0x39, 0xdf, 0x7e, 0x7b, 0x8d, 0xf7, 0xfe, 0x2d, 0x1f, 0xc8, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff,
    +	0x57, 0x93, 0xf3, 0xef, 0x42, 0x05, 0x00, 0x00,
     }
     
     func (m *Lease) Marshal() (dAtA []byte, err error) {
    @@ -286,6 +292,20 @@ func (m *LeaseSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.PreferredHolder != nil {
    +		i -= len(*m.PreferredHolder)
    +		copy(dAtA[i:], *m.PreferredHolder)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.PreferredHolder)))
    +		i--
    +		dAtA[i] = 0x3a
    +	}
    +	if m.Strategy != nil {
    +		i -= len(*m.Strategy)
    +		copy(dAtA[i:], *m.Strategy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Strategy)))
    +		i--
    +		dAtA[i] = 0x32
    +	}
     	if m.LeaseTransitions != nil {
     		i = encodeVarintGenerated(dAtA, i, uint64(*m.LeaseTransitions))
     		i--
    @@ -395,6 +415,14 @@ func (m *LeaseSpec) Size() (n int) {
     	if m.LeaseTransitions != nil {
     		n += 1 + sovGenerated(uint64(*m.LeaseTransitions))
     	}
    +	if m.Strategy != nil {
    +		l = len(*m.Strategy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.PreferredHolder != nil {
    +		l = len(*m.PreferredHolder)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -441,6 +469,8 @@ func (this *LeaseSpec) String() string {
     		`AcquireTime:` + strings.Replace(fmt.Sprintf("%v", this.AcquireTime), "MicroTime", "v1.MicroTime", 1) + `,`,
     		`RenewTime:` + strings.Replace(fmt.Sprintf("%v", this.RenewTime), "MicroTime", "v1.MicroTime", 1) + `,`,
     		`LeaseTransitions:` + valueToStringGenerated(this.LeaseTransitions) + `,`,
    +		`Strategy:` + valueToStringGenerated(this.Strategy) + `,`,
    +		`PreferredHolder:` + valueToStringGenerated(this.PreferredHolder) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -860,6 +890,72 @@ func (m *LeaseSpec) Unmarshal(dAtA []byte) error {
     				}
     			}
     			m.LeaseTransitions = &v
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Strategy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := k8s_io_api_coordination_v1.CoordinatedLeaseStrategy(dAtA[iNdEx:postIndex])
    +			m.Strategy = &s
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PreferredHolder", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.PreferredHolder = &s
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    diff --git a/vendor/k8s.io/api/coordination/v1beta1/generated.proto b/vendor/k8s.io/api/coordination/v1beta1/generated.proto
    index 92c8918b801c..088811a74b3f 100644
    --- a/vendor/k8s.io/api/coordination/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/coordination/v1beta1/generated.proto
    @@ -21,6 +21,7 @@ syntax = "proto2";
     
     package k8s.io.api.coordination.v1beta1;
     
    +import "k8s.io/api/coordination/v1/generated.proto";
     import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
     import "k8s.io/apimachinery/pkg/runtime/generated.proto";
     import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    @@ -32,7 +33,7 @@ option go_package = "k8s.io/api/coordination/v1beta1";
     message Lease {
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec contains the specification of the Lease.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -45,7 +46,7 @@ message LeaseList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a list of schema objects.
       repeated Lease items = 2;
    @@ -54,6 +55,8 @@ message LeaseList {
     // LeaseSpec is a specification of a Lease.
     message LeaseSpec {
       // holderIdentity contains the identity of the holder of a current lease.
    +  // If Coordinated Leader Election is used, the holder identity must be
    +  // equal to the elected LeaseCandidate.metadata.name field.
       // +optional
       optional string holderIdentity = 1;
     
    @@ -65,16 +68,28 @@ message LeaseSpec {
     
       // acquireTime is a time when the current lease was acquired.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime acquireTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime acquireTime = 3;
     
       // renewTime is a time when the current holder of a lease has last
       // updated the lease.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime renewTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime renewTime = 4;
     
       // leaseTransitions is the number of transitions of a lease between
       // holders.
       // +optional
       optional int32 leaseTransitions = 5;
    +
    +  // Strategy indicates the strategy for picking the leader for coordinated leader election
    +  // (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.
    +  // +featureGate=CoordinatedLeaderElection
    +  // +optional
    +  optional string strategy = 6;
    +
    +  // PreferredHolder signals to a lease holder that the lease has a
    +  // more optimal holder and should be given up.
    +  // +featureGate=CoordinatedLeaderElection
    +  // +optional
    +  optional string preferredHolder = 7;
     }
     
    diff --git a/vendor/k8s.io/api/coordination/v1beta1/types.go b/vendor/k8s.io/api/coordination/v1beta1/types.go
    index 3a3d5f32e214..d63fc30a9e78 100644
    --- a/vendor/k8s.io/api/coordination/v1beta1/types.go
    +++ b/vendor/k8s.io/api/coordination/v1beta1/types.go
    @@ -17,6 +17,7 @@ limitations under the License.
     package v1beta1
     
     import (
    +	v1 "k8s.io/api/coordination/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    @@ -42,6 +43,8 @@ type Lease struct {
     // LeaseSpec is a specification of a Lease.
     type LeaseSpec struct {
     	// holderIdentity contains the identity of the holder of a current lease.
    +	// If Coordinated Leader Election is used, the holder identity must be
    +	// equal to the elected LeaseCandidate.metadata.name field.
     	// +optional
     	HolderIdentity *string `json:"holderIdentity,omitempty" protobuf:"bytes,1,opt,name=holderIdentity"`
     	// leaseDurationSeconds is a duration that candidates for a lease need
    @@ -60,6 +63,16 @@ type LeaseSpec struct {
     	// holders.
     	// +optional
     	LeaseTransitions *int32 `json:"leaseTransitions,omitempty" protobuf:"varint,5,opt,name=leaseTransitions"`
    +	// Strategy indicates the strategy for picking the leader for coordinated leader election
    +	// (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.
    +	// +featureGate=CoordinatedLeaderElection
    +	// +optional
    +	Strategy *v1.CoordinatedLeaseStrategy `json:"strategy,omitempty" protobuf:"bytes,6,opt,name=strategy"`
    +	// PreferredHolder signals to a lease holder that the lease has a
    +	// more optimal holder and should be given up.
    +	// +featureGate=CoordinatedLeaderElection
    +	// +optional
    +	PreferredHolder *string `json:"preferredHolder,omitempty" protobuf:"bytes,7,opt,name=preferredHolder"`
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    diff --git a/vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.go
    index 78ca4e393fc7..50fe8ea1896a 100644
    --- a/vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.go
    @@ -49,11 +49,13 @@ func (LeaseList) SwaggerDoc() map[string]string {
     
     var map_LeaseSpec = map[string]string{
     	"":                     "LeaseSpec is a specification of a Lease.",
    -	"holderIdentity":       "holderIdentity contains the identity of the holder of a current lease.",
    +	"holderIdentity":       "holderIdentity contains the identity of the holder of a current lease. If Coordinated Leader Election is used, the holder identity must be equal to the elected LeaseCandidate.metadata.name field.",
     	"leaseDurationSeconds": "leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed renewTime.",
     	"acquireTime":          "acquireTime is a time when the current lease was acquired.",
     	"renewTime":            "renewTime is a time when the current holder of a lease has last updated the lease.",
     	"leaseTransitions":     "leaseTransitions is the number of transitions of a lease between holders.",
    +	"strategy":             "Strategy indicates the strategy for picking the leader for coordinated leader election (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.",
    +	"preferredHolder":      "PreferredHolder signals to a lease holder that the lease has a more optimal holder and should be given up.",
     }
     
     func (LeaseSpec) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go
    index 3adfd8720384..dcef1e346add 100644
    --- a/vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go
    @@ -22,6 +22,7 @@ limitations under the License.
     package v1beta1
     
     import (
    +	v1 "k8s.io/api/coordination/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     )
     
    @@ -111,6 +112,16 @@ func (in *LeaseSpec) DeepCopyInto(out *LeaseSpec) {
     		*out = new(int32)
     		**out = **in
     	}
    +	if in.Strategy != nil {
    +		in, out := &in.Strategy, &out.Strategy
    +		*out = new(v1.CoordinatedLeaseStrategy)
    +		**out = **in
    +	}
    +	if in.PreferredHolder != nil {
    +		in, out := &in.PreferredHolder, &out.PreferredHolder
    +		*out = new(string)
    +		**out = **in
    +	}
     	return
     }
     
    diff --git a/vendor/k8s.io/api/core/v1/annotation_key_constants.go b/vendor/k8s.io/api/core/v1/annotation_key_constants.go
    index 106ba14c3df1..62e86402e1f9 100644
    --- a/vendor/k8s.io/api/core/v1/annotation_key_constants.go
    +++ b/vendor/k8s.io/api/core/v1/annotation_key_constants.go
    @@ -23,7 +23,7 @@ const (
     	// webhook backend fails.
     	ImagePolicyFailedOpenKey string = "alpha.image-policy.k8s.io/failed-open"
     
    -	// MirrorAnnotationKey represents the annotation key set by kubelets when creating mirror pods
    +	// MirrorPodAnnotationKey represents the annotation key set by kubelets when creating mirror pods
     	MirrorPodAnnotationKey string = "kubernetes.io/config.mirror"
     
     	// TolerationsAnnotationKey represents the key of tolerations data (json serialized)
    @@ -54,21 +54,18 @@ const (
     	// SeccompLocalhostProfileNamePrefix is the prefix for specifying profiles loaded from the node's disk.
     	SeccompLocalhostProfileNamePrefix = "localhost/"
     
    -	// AppArmorBetaContainerAnnotationKeyPrefix is the prefix to an annotation key specifying a container's apparmor profile.
    -	AppArmorBetaContainerAnnotationKeyPrefix = "container.apparmor.security.beta.kubernetes.io/"
    -	// AppArmorBetaDefaultProfileAnnotationKey is the annotation key specifying the default AppArmor profile.
    -	AppArmorBetaDefaultProfileAnnotationKey = "apparmor.security.beta.kubernetes.io/defaultProfileName"
    -	// AppArmorBetaAllowedProfilesAnnotationKey is the annotation key specifying the allowed AppArmor profiles.
    -	AppArmorBetaAllowedProfilesAnnotationKey = "apparmor.security.beta.kubernetes.io/allowedProfileNames"
    +	// DeprecatedAppArmorBetaContainerAnnotationKeyPrefix is the prefix to an annotation key specifying a container's apparmor profile.
    +	// Deprecated: use a pod or container security context `appArmorProfile` field instead.
    +	DeprecatedAppArmorBetaContainerAnnotationKeyPrefix = "container.apparmor.security.beta.kubernetes.io/"
     
    -	// AppArmorBetaProfileRuntimeDefault is the profile specifying the runtime default.
    -	AppArmorBetaProfileRuntimeDefault = "runtime/default"
    +	// DeprecatedAppArmorBetaProfileRuntimeDefault is the profile specifying the runtime default.
    +	DeprecatedAppArmorBetaProfileRuntimeDefault = "runtime/default"
     
    -	// AppArmorBetaProfileNamePrefix is the prefix for specifying profiles loaded on the node.
    -	AppArmorBetaProfileNamePrefix = "localhost/"
    +	// DeprecatedAppArmorBetaProfileNamePrefix is the prefix for specifying profiles loaded on the node.
    +	DeprecatedAppArmorBetaProfileNamePrefix = "localhost/"
     
    -	// AppArmorBetaProfileNameUnconfined is the Unconfined AppArmor profile
    -	AppArmorBetaProfileNameUnconfined = "unconfined"
    +	// DeprecatedAppArmorBetaProfileNameUnconfined is the Unconfined AppArmor profile
    +	DeprecatedAppArmorBetaProfileNameUnconfined = "unconfined"
     
     	// DeprecatedSeccompProfileDockerDefault represents the default seccomp profile used by docker.
     	// Deprecated: set a pod or container security context `seccompProfile` of type "RuntimeDefault" instead.
    @@ -83,7 +80,7 @@ const (
     	// This annotation can be attached to node.
     	ObjectTTLAnnotationKey string = "node.alpha.kubernetes.io/ttl"
     
    -	// annotation key prefix used to identify non-convertible json paths.
    +	// NonConvertibleAnnotationPrefix is the annotation key prefix used to identify non-convertible json paths.
     	NonConvertibleAnnotationPrefix = "non-convertible.kubernetes.io"
     
     	kubectlPrefix = "kubectl.kubernetes.io/"
    diff --git a/vendor/k8s.io/api/core/v1/doc.go b/vendor/k8s.io/api/core/v1/doc.go
    index 1bdf0b25b1b0..bc0041b331a6 100644
    --- a/vendor/k8s.io/api/core/v1/doc.go
    +++ b/vendor/k8s.io/api/core/v1/doc.go
    @@ -17,6 +17,8 @@ limitations under the License.
     // +k8s:openapi-gen=true
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
    +// +k8s:prerelease-lifecycle-gen=true
    +// +groupName=
     
     // Package v1 is the v1 version of the core API.
     package v1 // import "k8s.io/api/core/v1"
    diff --git a/vendor/k8s.io/api/core/v1/generated.pb.go b/vendor/k8s.io/api/core/v1/generated.pb.go
    index 04c7939e0d5b..9d466c6d79dc 100644
    --- a/vendor/k8s.io/api/core/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/core/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/core/v1/generated.proto
    +// source: k8s.io/api/core/v1/generated.proto
     
     package v1
     
    @@ -52,7 +52,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *AWSElasticBlockStoreVolumeSource) Reset()      { *m = AWSElasticBlockStoreVolumeSource{} }
     func (*AWSElasticBlockStoreVolumeSource) ProtoMessage() {}
     func (*AWSElasticBlockStoreVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{0}
    +	return fileDescriptor_6c07b07c062484ab, []int{0}
     }
     func (m *AWSElasticBlockStoreVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -80,7 +80,7 @@ var xxx_messageInfo_AWSElasticBlockStoreVolumeSource proto.InternalMessageInfo
     func (m *Affinity) Reset()      { *m = Affinity{} }
     func (*Affinity) ProtoMessage() {}
     func (*Affinity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{1}
    +	return fileDescriptor_6c07b07c062484ab, []int{1}
     }
     func (m *Affinity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -105,10 +105,38 @@ func (m *Affinity) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_Affinity proto.InternalMessageInfo
     
    +func (m *AppArmorProfile) Reset()      { *m = AppArmorProfile{} }
    +func (*AppArmorProfile) ProtoMessage() {}
    +func (*AppArmorProfile) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{2}
    +}
    +func (m *AppArmorProfile) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *AppArmorProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *AppArmorProfile) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_AppArmorProfile.Merge(m, src)
    +}
    +func (m *AppArmorProfile) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *AppArmorProfile) XXX_DiscardUnknown() {
    +	xxx_messageInfo_AppArmorProfile.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_AppArmorProfile proto.InternalMessageInfo
    +
     func (m *AttachedVolume) Reset()      { *m = AttachedVolume{} }
     func (*AttachedVolume) ProtoMessage() {}
     func (*AttachedVolume) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{2}
    +	return fileDescriptor_6c07b07c062484ab, []int{3}
     }
     func (m *AttachedVolume) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -136,7 +164,7 @@ var xxx_messageInfo_AttachedVolume proto.InternalMessageInfo
     func (m *AvoidPods) Reset()      { *m = AvoidPods{} }
     func (*AvoidPods) ProtoMessage() {}
     func (*AvoidPods) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{3}
    +	return fileDescriptor_6c07b07c062484ab, []int{4}
     }
     func (m *AvoidPods) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -164,7 +192,7 @@ var xxx_messageInfo_AvoidPods proto.InternalMessageInfo
     func (m *AzureDiskVolumeSource) Reset()      { *m = AzureDiskVolumeSource{} }
     func (*AzureDiskVolumeSource) ProtoMessage() {}
     func (*AzureDiskVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{4}
    +	return fileDescriptor_6c07b07c062484ab, []int{5}
     }
     func (m *AzureDiskVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -192,7 +220,7 @@ var xxx_messageInfo_AzureDiskVolumeSource proto.InternalMessageInfo
     func (m *AzureFilePersistentVolumeSource) Reset()      { *m = AzureFilePersistentVolumeSource{} }
     func (*AzureFilePersistentVolumeSource) ProtoMessage() {}
     func (*AzureFilePersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{5}
    +	return fileDescriptor_6c07b07c062484ab, []int{6}
     }
     func (m *AzureFilePersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -220,7 +248,7 @@ var xxx_messageInfo_AzureFilePersistentVolumeSource proto.InternalMessageInfo
     func (m *AzureFileVolumeSource) Reset()      { *m = AzureFileVolumeSource{} }
     func (*AzureFileVolumeSource) ProtoMessage() {}
     func (*AzureFileVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{6}
    +	return fileDescriptor_6c07b07c062484ab, []int{7}
     }
     func (m *AzureFileVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -248,7 +276,7 @@ var xxx_messageInfo_AzureFileVolumeSource proto.InternalMessageInfo
     func (m *Binding) Reset()      { *m = Binding{} }
     func (*Binding) ProtoMessage() {}
     func (*Binding) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{7}
    +	return fileDescriptor_6c07b07c062484ab, []int{8}
     }
     func (m *Binding) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -276,7 +304,7 @@ var xxx_messageInfo_Binding proto.InternalMessageInfo
     func (m *CSIPersistentVolumeSource) Reset()      { *m = CSIPersistentVolumeSource{} }
     func (*CSIPersistentVolumeSource) ProtoMessage() {}
     func (*CSIPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{8}
    +	return fileDescriptor_6c07b07c062484ab, []int{9}
     }
     func (m *CSIPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -304,7 +332,7 @@ var xxx_messageInfo_CSIPersistentVolumeSource proto.InternalMessageInfo
     func (m *CSIVolumeSource) Reset()      { *m = CSIVolumeSource{} }
     func (*CSIVolumeSource) ProtoMessage() {}
     func (*CSIVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{9}
    +	return fileDescriptor_6c07b07c062484ab, []int{10}
     }
     func (m *CSIVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -332,7 +360,7 @@ var xxx_messageInfo_CSIVolumeSource proto.InternalMessageInfo
     func (m *Capabilities) Reset()      { *m = Capabilities{} }
     func (*Capabilities) ProtoMessage() {}
     func (*Capabilities) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{10}
    +	return fileDescriptor_6c07b07c062484ab, []int{11}
     }
     func (m *Capabilities) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -360,7 +388,7 @@ var xxx_messageInfo_Capabilities proto.InternalMessageInfo
     func (m *CephFSPersistentVolumeSource) Reset()      { *m = CephFSPersistentVolumeSource{} }
     func (*CephFSPersistentVolumeSource) ProtoMessage() {}
     func (*CephFSPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{11}
    +	return fileDescriptor_6c07b07c062484ab, []int{12}
     }
     func (m *CephFSPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -388,7 +416,7 @@ var xxx_messageInfo_CephFSPersistentVolumeSource proto.InternalMessageInfo
     func (m *CephFSVolumeSource) Reset()      { *m = CephFSVolumeSource{} }
     func (*CephFSVolumeSource) ProtoMessage() {}
     func (*CephFSVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{12}
    +	return fileDescriptor_6c07b07c062484ab, []int{13}
     }
     func (m *CephFSVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -416,7 +444,7 @@ var xxx_messageInfo_CephFSVolumeSource proto.InternalMessageInfo
     func (m *CinderPersistentVolumeSource) Reset()      { *m = CinderPersistentVolumeSource{} }
     func (*CinderPersistentVolumeSource) ProtoMessage() {}
     func (*CinderPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{13}
    +	return fileDescriptor_6c07b07c062484ab, []int{14}
     }
     func (m *CinderPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -444,7 +472,7 @@ var xxx_messageInfo_CinderPersistentVolumeSource proto.InternalMessageInfo
     func (m *CinderVolumeSource) Reset()      { *m = CinderVolumeSource{} }
     func (*CinderVolumeSource) ProtoMessage() {}
     func (*CinderVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{14}
    +	return fileDescriptor_6c07b07c062484ab, []int{15}
     }
     func (m *CinderVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -469,38 +497,10 @@ func (m *CinderVolumeSource) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_CinderVolumeSource proto.InternalMessageInfo
     
    -func (m *ClaimSource) Reset()      { *m = ClaimSource{} }
    -func (*ClaimSource) ProtoMessage() {}
    -func (*ClaimSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{15}
    -}
    -func (m *ClaimSource) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ClaimSource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ClaimSource) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ClaimSource.Merge(m, src)
    -}
    -func (m *ClaimSource) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ClaimSource) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ClaimSource.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ClaimSource proto.InternalMessageInfo
    -
     func (m *ClientIPConfig) Reset()      { *m = ClientIPConfig{} }
     func (*ClientIPConfig) ProtoMessage() {}
     func (*ClientIPConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{16}
    +	return fileDescriptor_6c07b07c062484ab, []int{16}
     }
     func (m *ClientIPConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -528,7 +528,7 @@ var xxx_messageInfo_ClientIPConfig proto.InternalMessageInfo
     func (m *ClusterTrustBundleProjection) Reset()      { *m = ClusterTrustBundleProjection{} }
     func (*ClusterTrustBundleProjection) ProtoMessage() {}
     func (*ClusterTrustBundleProjection) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{17}
    +	return fileDescriptor_6c07b07c062484ab, []int{17}
     }
     func (m *ClusterTrustBundleProjection) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -556,7 +556,7 @@ var xxx_messageInfo_ClusterTrustBundleProjection proto.InternalMessageInfo
     func (m *ComponentCondition) Reset()      { *m = ComponentCondition{} }
     func (*ComponentCondition) ProtoMessage() {}
     func (*ComponentCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{18}
    +	return fileDescriptor_6c07b07c062484ab, []int{18}
     }
     func (m *ComponentCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -584,7 +584,7 @@ var xxx_messageInfo_ComponentCondition proto.InternalMessageInfo
     func (m *ComponentStatus) Reset()      { *m = ComponentStatus{} }
     func (*ComponentStatus) ProtoMessage() {}
     func (*ComponentStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{19}
    +	return fileDescriptor_6c07b07c062484ab, []int{19}
     }
     func (m *ComponentStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -612,7 +612,7 @@ var xxx_messageInfo_ComponentStatus proto.InternalMessageInfo
     func (m *ComponentStatusList) Reset()      { *m = ComponentStatusList{} }
     func (*ComponentStatusList) ProtoMessage() {}
     func (*ComponentStatusList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{20}
    +	return fileDescriptor_6c07b07c062484ab, []int{20}
     }
     func (m *ComponentStatusList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -640,7 +640,7 @@ var xxx_messageInfo_ComponentStatusList proto.InternalMessageInfo
     func (m *ConfigMap) Reset()      { *m = ConfigMap{} }
     func (*ConfigMap) ProtoMessage() {}
     func (*ConfigMap) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{21}
    +	return fileDescriptor_6c07b07c062484ab, []int{21}
     }
     func (m *ConfigMap) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -668,7 +668,7 @@ var xxx_messageInfo_ConfigMap proto.InternalMessageInfo
     func (m *ConfigMapEnvSource) Reset()      { *m = ConfigMapEnvSource{} }
     func (*ConfigMapEnvSource) ProtoMessage() {}
     func (*ConfigMapEnvSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{22}
    +	return fileDescriptor_6c07b07c062484ab, []int{22}
     }
     func (m *ConfigMapEnvSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -696,7 +696,7 @@ var xxx_messageInfo_ConfigMapEnvSource proto.InternalMessageInfo
     func (m *ConfigMapKeySelector) Reset()      { *m = ConfigMapKeySelector{} }
     func (*ConfigMapKeySelector) ProtoMessage() {}
     func (*ConfigMapKeySelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{23}
    +	return fileDescriptor_6c07b07c062484ab, []int{23}
     }
     func (m *ConfigMapKeySelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -724,7 +724,7 @@ var xxx_messageInfo_ConfigMapKeySelector proto.InternalMessageInfo
     func (m *ConfigMapList) Reset()      { *m = ConfigMapList{} }
     func (*ConfigMapList) ProtoMessage() {}
     func (*ConfigMapList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{24}
    +	return fileDescriptor_6c07b07c062484ab, []int{24}
     }
     func (m *ConfigMapList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -752,7 +752,7 @@ var xxx_messageInfo_ConfigMapList proto.InternalMessageInfo
     func (m *ConfigMapNodeConfigSource) Reset()      { *m = ConfigMapNodeConfigSource{} }
     func (*ConfigMapNodeConfigSource) ProtoMessage() {}
     func (*ConfigMapNodeConfigSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{25}
    +	return fileDescriptor_6c07b07c062484ab, []int{25}
     }
     func (m *ConfigMapNodeConfigSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -780,7 +780,7 @@ var xxx_messageInfo_ConfigMapNodeConfigSource proto.InternalMessageInfo
     func (m *ConfigMapProjection) Reset()      { *m = ConfigMapProjection{} }
     func (*ConfigMapProjection) ProtoMessage() {}
     func (*ConfigMapProjection) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{26}
    +	return fileDescriptor_6c07b07c062484ab, []int{26}
     }
     func (m *ConfigMapProjection) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -808,7 +808,7 @@ var xxx_messageInfo_ConfigMapProjection proto.InternalMessageInfo
     func (m *ConfigMapVolumeSource) Reset()      { *m = ConfigMapVolumeSource{} }
     func (*ConfigMapVolumeSource) ProtoMessage() {}
     func (*ConfigMapVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{27}
    +	return fileDescriptor_6c07b07c062484ab, []int{27}
     }
     func (m *ConfigMapVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -836,7 +836,7 @@ var xxx_messageInfo_ConfigMapVolumeSource proto.InternalMessageInfo
     func (m *Container) Reset()      { *m = Container{} }
     func (*Container) ProtoMessage() {}
     func (*Container) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{28}
    +	return fileDescriptor_6c07b07c062484ab, []int{28}
     }
     func (m *Container) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -864,7 +864,7 @@ var xxx_messageInfo_Container proto.InternalMessageInfo
     func (m *ContainerImage) Reset()      { *m = ContainerImage{} }
     func (*ContainerImage) ProtoMessage() {}
     func (*ContainerImage) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{29}
    +	return fileDescriptor_6c07b07c062484ab, []int{29}
     }
     func (m *ContainerImage) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -892,7 +892,7 @@ var xxx_messageInfo_ContainerImage proto.InternalMessageInfo
     func (m *ContainerPort) Reset()      { *m = ContainerPort{} }
     func (*ContainerPort) ProtoMessage() {}
     func (*ContainerPort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{30}
    +	return fileDescriptor_6c07b07c062484ab, []int{30}
     }
     func (m *ContainerPort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -920,7 +920,7 @@ var xxx_messageInfo_ContainerPort proto.InternalMessageInfo
     func (m *ContainerResizePolicy) Reset()      { *m = ContainerResizePolicy{} }
     func (*ContainerResizePolicy) ProtoMessage() {}
     func (*ContainerResizePolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{31}
    +	return fileDescriptor_6c07b07c062484ab, []int{31}
     }
     func (m *ContainerResizePolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -948,7 +948,7 @@ var xxx_messageInfo_ContainerResizePolicy proto.InternalMessageInfo
     func (m *ContainerState) Reset()      { *m = ContainerState{} }
     func (*ContainerState) ProtoMessage() {}
     func (*ContainerState) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{32}
    +	return fileDescriptor_6c07b07c062484ab, []int{32}
     }
     func (m *ContainerState) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -976,7 +976,7 @@ var xxx_messageInfo_ContainerState proto.InternalMessageInfo
     func (m *ContainerStateRunning) Reset()      { *m = ContainerStateRunning{} }
     func (*ContainerStateRunning) ProtoMessage() {}
     func (*ContainerStateRunning) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{33}
    +	return fileDescriptor_6c07b07c062484ab, []int{33}
     }
     func (m *ContainerStateRunning) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1004,7 +1004,7 @@ var xxx_messageInfo_ContainerStateRunning proto.InternalMessageInfo
     func (m *ContainerStateTerminated) Reset()      { *m = ContainerStateTerminated{} }
     func (*ContainerStateTerminated) ProtoMessage() {}
     func (*ContainerStateTerminated) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{34}
    +	return fileDescriptor_6c07b07c062484ab, []int{34}
     }
     func (m *ContainerStateTerminated) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1032,7 +1032,7 @@ var xxx_messageInfo_ContainerStateTerminated proto.InternalMessageInfo
     func (m *ContainerStateWaiting) Reset()      { *m = ContainerStateWaiting{} }
     func (*ContainerStateWaiting) ProtoMessage() {}
     func (*ContainerStateWaiting) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{35}
    +	return fileDescriptor_6c07b07c062484ab, []int{35}
     }
     func (m *ContainerStateWaiting) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1060,7 +1060,7 @@ var xxx_messageInfo_ContainerStateWaiting proto.InternalMessageInfo
     func (m *ContainerStatus) Reset()      { *m = ContainerStatus{} }
     func (*ContainerStatus) ProtoMessage() {}
     func (*ContainerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{36}
    +	return fileDescriptor_6c07b07c062484ab, []int{36}
     }
     func (m *ContainerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1085,10 +1085,38 @@ func (m *ContainerStatus) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ContainerStatus proto.InternalMessageInfo
     
    +func (m *ContainerUser) Reset()      { *m = ContainerUser{} }
    +func (*ContainerUser) ProtoMessage() {}
    +func (*ContainerUser) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{37}
    +}
    +func (m *ContainerUser) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ContainerUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ContainerUser) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ContainerUser.Merge(m, src)
    +}
    +func (m *ContainerUser) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ContainerUser) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ContainerUser.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ContainerUser proto.InternalMessageInfo
    +
     func (m *DaemonEndpoint) Reset()      { *m = DaemonEndpoint{} }
     func (*DaemonEndpoint) ProtoMessage() {}
     func (*DaemonEndpoint) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{37}
    +	return fileDescriptor_6c07b07c062484ab, []int{38}
     }
     func (m *DaemonEndpoint) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1116,7 +1144,7 @@ var xxx_messageInfo_DaemonEndpoint proto.InternalMessageInfo
     func (m *DownwardAPIProjection) Reset()      { *m = DownwardAPIProjection{} }
     func (*DownwardAPIProjection) ProtoMessage() {}
     func (*DownwardAPIProjection) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{38}
    +	return fileDescriptor_6c07b07c062484ab, []int{39}
     }
     func (m *DownwardAPIProjection) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1144,7 +1172,7 @@ var xxx_messageInfo_DownwardAPIProjection proto.InternalMessageInfo
     func (m *DownwardAPIVolumeFile) Reset()      { *m = DownwardAPIVolumeFile{} }
     func (*DownwardAPIVolumeFile) ProtoMessage() {}
     func (*DownwardAPIVolumeFile) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{39}
    +	return fileDescriptor_6c07b07c062484ab, []int{40}
     }
     func (m *DownwardAPIVolumeFile) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1172,7 +1200,7 @@ var xxx_messageInfo_DownwardAPIVolumeFile proto.InternalMessageInfo
     func (m *DownwardAPIVolumeSource) Reset()      { *m = DownwardAPIVolumeSource{} }
     func (*DownwardAPIVolumeSource) ProtoMessage() {}
     func (*DownwardAPIVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{40}
    +	return fileDescriptor_6c07b07c062484ab, []int{41}
     }
     func (m *DownwardAPIVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1200,7 +1228,7 @@ var xxx_messageInfo_DownwardAPIVolumeSource proto.InternalMessageInfo
     func (m *EmptyDirVolumeSource) Reset()      { *m = EmptyDirVolumeSource{} }
     func (*EmptyDirVolumeSource) ProtoMessage() {}
     func (*EmptyDirVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{41}
    +	return fileDescriptor_6c07b07c062484ab, []int{42}
     }
     func (m *EmptyDirVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1228,7 +1256,7 @@ var xxx_messageInfo_EmptyDirVolumeSource proto.InternalMessageInfo
     func (m *EndpointAddress) Reset()      { *m = EndpointAddress{} }
     func (*EndpointAddress) ProtoMessage() {}
     func (*EndpointAddress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{42}
    +	return fileDescriptor_6c07b07c062484ab, []int{43}
     }
     func (m *EndpointAddress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1256,7 +1284,7 @@ var xxx_messageInfo_EndpointAddress proto.InternalMessageInfo
     func (m *EndpointPort) Reset()      { *m = EndpointPort{} }
     func (*EndpointPort) ProtoMessage() {}
     func (*EndpointPort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{43}
    +	return fileDescriptor_6c07b07c062484ab, []int{44}
     }
     func (m *EndpointPort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1284,7 +1312,7 @@ var xxx_messageInfo_EndpointPort proto.InternalMessageInfo
     func (m *EndpointSubset) Reset()      { *m = EndpointSubset{} }
     func (*EndpointSubset) ProtoMessage() {}
     func (*EndpointSubset) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{44}
    +	return fileDescriptor_6c07b07c062484ab, []int{45}
     }
     func (m *EndpointSubset) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1312,7 +1340,7 @@ var xxx_messageInfo_EndpointSubset proto.InternalMessageInfo
     func (m *Endpoints) Reset()      { *m = Endpoints{} }
     func (*Endpoints) ProtoMessage() {}
     func (*Endpoints) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{45}
    +	return fileDescriptor_6c07b07c062484ab, []int{46}
     }
     func (m *Endpoints) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1340,7 +1368,7 @@ var xxx_messageInfo_Endpoints proto.InternalMessageInfo
     func (m *EndpointsList) Reset()      { *m = EndpointsList{} }
     func (*EndpointsList) ProtoMessage() {}
     func (*EndpointsList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{46}
    +	return fileDescriptor_6c07b07c062484ab, []int{47}
     }
     func (m *EndpointsList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1368,7 +1396,7 @@ var xxx_messageInfo_EndpointsList proto.InternalMessageInfo
     func (m *EnvFromSource) Reset()      { *m = EnvFromSource{} }
     func (*EnvFromSource) ProtoMessage() {}
     func (*EnvFromSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{47}
    +	return fileDescriptor_6c07b07c062484ab, []int{48}
     }
     func (m *EnvFromSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1396,7 +1424,7 @@ var xxx_messageInfo_EnvFromSource proto.InternalMessageInfo
     func (m *EnvVar) Reset()      { *m = EnvVar{} }
     func (*EnvVar) ProtoMessage() {}
     func (*EnvVar) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{48}
    +	return fileDescriptor_6c07b07c062484ab, []int{49}
     }
     func (m *EnvVar) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1424,7 +1452,7 @@ var xxx_messageInfo_EnvVar proto.InternalMessageInfo
     func (m *EnvVarSource) Reset()      { *m = EnvVarSource{} }
     func (*EnvVarSource) ProtoMessage() {}
     func (*EnvVarSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{49}
    +	return fileDescriptor_6c07b07c062484ab, []int{50}
     }
     func (m *EnvVarSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1452,7 +1480,7 @@ var xxx_messageInfo_EnvVarSource proto.InternalMessageInfo
     func (m *EphemeralContainer) Reset()      { *m = EphemeralContainer{} }
     func (*EphemeralContainer) ProtoMessage() {}
     func (*EphemeralContainer) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{50}
    +	return fileDescriptor_6c07b07c062484ab, []int{51}
     }
     func (m *EphemeralContainer) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1480,7 +1508,7 @@ var xxx_messageInfo_EphemeralContainer proto.InternalMessageInfo
     func (m *EphemeralContainerCommon) Reset()      { *m = EphemeralContainerCommon{} }
     func (*EphemeralContainerCommon) ProtoMessage() {}
     func (*EphemeralContainerCommon) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{51}
    +	return fileDescriptor_6c07b07c062484ab, []int{52}
     }
     func (m *EphemeralContainerCommon) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1508,7 +1536,7 @@ var xxx_messageInfo_EphemeralContainerCommon proto.InternalMessageInfo
     func (m *EphemeralVolumeSource) Reset()      { *m = EphemeralVolumeSource{} }
     func (*EphemeralVolumeSource) ProtoMessage() {}
     func (*EphemeralVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{52}
    +	return fileDescriptor_6c07b07c062484ab, []int{53}
     }
     func (m *EphemeralVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1536,7 +1564,7 @@ var xxx_messageInfo_EphemeralVolumeSource proto.InternalMessageInfo
     func (m *Event) Reset()      { *m = Event{} }
     func (*Event) ProtoMessage() {}
     func (*Event) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{53}
    +	return fileDescriptor_6c07b07c062484ab, []int{54}
     }
     func (m *Event) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1564,7 +1592,7 @@ var xxx_messageInfo_Event proto.InternalMessageInfo
     func (m *EventList) Reset()      { *m = EventList{} }
     func (*EventList) ProtoMessage() {}
     func (*EventList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{54}
    +	return fileDescriptor_6c07b07c062484ab, []int{55}
     }
     func (m *EventList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1592,7 +1620,7 @@ var xxx_messageInfo_EventList proto.InternalMessageInfo
     func (m *EventSeries) Reset()      { *m = EventSeries{} }
     func (*EventSeries) ProtoMessage() {}
     func (*EventSeries) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{55}
    +	return fileDescriptor_6c07b07c062484ab, []int{56}
     }
     func (m *EventSeries) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1620,7 +1648,7 @@ var xxx_messageInfo_EventSeries proto.InternalMessageInfo
     func (m *EventSource) Reset()      { *m = EventSource{} }
     func (*EventSource) ProtoMessage() {}
     func (*EventSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{56}
    +	return fileDescriptor_6c07b07c062484ab, []int{57}
     }
     func (m *EventSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1648,7 +1676,7 @@ var xxx_messageInfo_EventSource proto.InternalMessageInfo
     func (m *ExecAction) Reset()      { *m = ExecAction{} }
     func (*ExecAction) ProtoMessage() {}
     func (*ExecAction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{57}
    +	return fileDescriptor_6c07b07c062484ab, []int{58}
     }
     func (m *ExecAction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1676,7 +1704,7 @@ var xxx_messageInfo_ExecAction proto.InternalMessageInfo
     func (m *FCVolumeSource) Reset()      { *m = FCVolumeSource{} }
     func (*FCVolumeSource) ProtoMessage() {}
     func (*FCVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{58}
    +	return fileDescriptor_6c07b07c062484ab, []int{59}
     }
     func (m *FCVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1704,7 +1732,7 @@ var xxx_messageInfo_FCVolumeSource proto.InternalMessageInfo
     func (m *FlexPersistentVolumeSource) Reset()      { *m = FlexPersistentVolumeSource{} }
     func (*FlexPersistentVolumeSource) ProtoMessage() {}
     func (*FlexPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{59}
    +	return fileDescriptor_6c07b07c062484ab, []int{60}
     }
     func (m *FlexPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1732,7 +1760,7 @@ var xxx_messageInfo_FlexPersistentVolumeSource proto.InternalMessageInfo
     func (m *FlexVolumeSource) Reset()      { *m = FlexVolumeSource{} }
     func (*FlexVolumeSource) ProtoMessage() {}
     func (*FlexVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{60}
    +	return fileDescriptor_6c07b07c062484ab, []int{61}
     }
     func (m *FlexVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1760,7 +1788,7 @@ var xxx_messageInfo_FlexVolumeSource proto.InternalMessageInfo
     func (m *FlockerVolumeSource) Reset()      { *m = FlockerVolumeSource{} }
     func (*FlockerVolumeSource) ProtoMessage() {}
     func (*FlockerVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{61}
    +	return fileDescriptor_6c07b07c062484ab, []int{62}
     }
     func (m *FlockerVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1788,7 +1816,7 @@ var xxx_messageInfo_FlockerVolumeSource proto.InternalMessageInfo
     func (m *GCEPersistentDiskVolumeSource) Reset()      { *m = GCEPersistentDiskVolumeSource{} }
     func (*GCEPersistentDiskVolumeSource) ProtoMessage() {}
     func (*GCEPersistentDiskVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{62}
    +	return fileDescriptor_6c07b07c062484ab, []int{63}
     }
     func (m *GCEPersistentDiskVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1816,7 +1844,7 @@ var xxx_messageInfo_GCEPersistentDiskVolumeSource proto.InternalMessageInfo
     func (m *GRPCAction) Reset()      { *m = GRPCAction{} }
     func (*GRPCAction) ProtoMessage() {}
     func (*GRPCAction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{63}
    +	return fileDescriptor_6c07b07c062484ab, []int{64}
     }
     func (m *GRPCAction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1844,7 +1872,7 @@ var xxx_messageInfo_GRPCAction proto.InternalMessageInfo
     func (m *GitRepoVolumeSource) Reset()      { *m = GitRepoVolumeSource{} }
     func (*GitRepoVolumeSource) ProtoMessage() {}
     func (*GitRepoVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{64}
    +	return fileDescriptor_6c07b07c062484ab, []int{65}
     }
     func (m *GitRepoVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1872,7 +1900,7 @@ var xxx_messageInfo_GitRepoVolumeSource proto.InternalMessageInfo
     func (m *GlusterfsPersistentVolumeSource) Reset()      { *m = GlusterfsPersistentVolumeSource{} }
     func (*GlusterfsPersistentVolumeSource) ProtoMessage() {}
     func (*GlusterfsPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{65}
    +	return fileDescriptor_6c07b07c062484ab, []int{66}
     }
     func (m *GlusterfsPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1900,7 +1928,7 @@ var xxx_messageInfo_GlusterfsPersistentVolumeSource proto.InternalMessageInfo
     func (m *GlusterfsVolumeSource) Reset()      { *m = GlusterfsVolumeSource{} }
     func (*GlusterfsVolumeSource) ProtoMessage() {}
     func (*GlusterfsVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{66}
    +	return fileDescriptor_6c07b07c062484ab, []int{67}
     }
     func (m *GlusterfsVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1928,7 +1956,7 @@ var xxx_messageInfo_GlusterfsVolumeSource proto.InternalMessageInfo
     func (m *HTTPGetAction) Reset()      { *m = HTTPGetAction{} }
     func (*HTTPGetAction) ProtoMessage() {}
     func (*HTTPGetAction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{67}
    +	return fileDescriptor_6c07b07c062484ab, []int{68}
     }
     func (m *HTTPGetAction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1956,7 +1984,7 @@ var xxx_messageInfo_HTTPGetAction proto.InternalMessageInfo
     func (m *HTTPHeader) Reset()      { *m = HTTPHeader{} }
     func (*HTTPHeader) ProtoMessage() {}
     func (*HTTPHeader) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{68}
    +	return fileDescriptor_6c07b07c062484ab, []int{69}
     }
     func (m *HTTPHeader) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1984,7 +2012,7 @@ var xxx_messageInfo_HTTPHeader proto.InternalMessageInfo
     func (m *HostAlias) Reset()      { *m = HostAlias{} }
     func (*HostAlias) ProtoMessage() {}
     func (*HostAlias) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{69}
    +	return fileDescriptor_6c07b07c062484ab, []int{70}
     }
     func (m *HostAlias) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2012,7 +2040,7 @@ var xxx_messageInfo_HostAlias proto.InternalMessageInfo
     func (m *HostIP) Reset()      { *m = HostIP{} }
     func (*HostIP) ProtoMessage() {}
     func (*HostIP) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{70}
    +	return fileDescriptor_6c07b07c062484ab, []int{71}
     }
     func (m *HostIP) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2040,7 +2068,7 @@ var xxx_messageInfo_HostIP proto.InternalMessageInfo
     func (m *HostPathVolumeSource) Reset()      { *m = HostPathVolumeSource{} }
     func (*HostPathVolumeSource) ProtoMessage() {}
     func (*HostPathVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{71}
    +	return fileDescriptor_6c07b07c062484ab, []int{72}
     }
     func (m *HostPathVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2068,7 +2096,7 @@ var xxx_messageInfo_HostPathVolumeSource proto.InternalMessageInfo
     func (m *ISCSIPersistentVolumeSource) Reset()      { *m = ISCSIPersistentVolumeSource{} }
     func (*ISCSIPersistentVolumeSource) ProtoMessage() {}
     func (*ISCSIPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{72}
    +	return fileDescriptor_6c07b07c062484ab, []int{73}
     }
     func (m *ISCSIPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2096,7 +2124,7 @@ var xxx_messageInfo_ISCSIPersistentVolumeSource proto.InternalMessageInfo
     func (m *ISCSIVolumeSource) Reset()      { *m = ISCSIVolumeSource{} }
     func (*ISCSIVolumeSource) ProtoMessage() {}
     func (*ISCSIVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{73}
    +	return fileDescriptor_6c07b07c062484ab, []int{74}
     }
     func (m *ISCSIVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2121,10 +2149,38 @@ func (m *ISCSIVolumeSource) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ISCSIVolumeSource proto.InternalMessageInfo
     
    +func (m *ImageVolumeSource) Reset()      { *m = ImageVolumeSource{} }
    +func (*ImageVolumeSource) ProtoMessage() {}
    +func (*ImageVolumeSource) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{75}
    +}
    +func (m *ImageVolumeSource) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ImageVolumeSource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ImageVolumeSource) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ImageVolumeSource.Merge(m, src)
    +}
    +func (m *ImageVolumeSource) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ImageVolumeSource) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ImageVolumeSource.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ImageVolumeSource proto.InternalMessageInfo
    +
     func (m *KeyToPath) Reset()      { *m = KeyToPath{} }
     func (*KeyToPath) ProtoMessage() {}
     func (*KeyToPath) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{74}
    +	return fileDescriptor_6c07b07c062484ab, []int{76}
     }
     func (m *KeyToPath) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2152,7 +2208,7 @@ var xxx_messageInfo_KeyToPath proto.InternalMessageInfo
     func (m *Lifecycle) Reset()      { *m = Lifecycle{} }
     func (*Lifecycle) ProtoMessage() {}
     func (*Lifecycle) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{75}
    +	return fileDescriptor_6c07b07c062484ab, []int{77}
     }
     func (m *Lifecycle) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2180,7 +2236,7 @@ var xxx_messageInfo_Lifecycle proto.InternalMessageInfo
     func (m *LifecycleHandler) Reset()      { *m = LifecycleHandler{} }
     func (*LifecycleHandler) ProtoMessage() {}
     func (*LifecycleHandler) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{76}
    +	return fileDescriptor_6c07b07c062484ab, []int{78}
     }
     func (m *LifecycleHandler) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2208,7 +2264,7 @@ var xxx_messageInfo_LifecycleHandler proto.InternalMessageInfo
     func (m *LimitRange) Reset()      { *m = LimitRange{} }
     func (*LimitRange) ProtoMessage() {}
     func (*LimitRange) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{77}
    +	return fileDescriptor_6c07b07c062484ab, []int{79}
     }
     func (m *LimitRange) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2236,7 +2292,7 @@ var xxx_messageInfo_LimitRange proto.InternalMessageInfo
     func (m *LimitRangeItem) Reset()      { *m = LimitRangeItem{} }
     func (*LimitRangeItem) ProtoMessage() {}
     func (*LimitRangeItem) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{78}
    +	return fileDescriptor_6c07b07c062484ab, []int{80}
     }
     func (m *LimitRangeItem) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2264,7 +2320,7 @@ var xxx_messageInfo_LimitRangeItem proto.InternalMessageInfo
     func (m *LimitRangeList) Reset()      { *m = LimitRangeList{} }
     func (*LimitRangeList) ProtoMessage() {}
     func (*LimitRangeList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{79}
    +	return fileDescriptor_6c07b07c062484ab, []int{81}
     }
     func (m *LimitRangeList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2292,7 +2348,7 @@ var xxx_messageInfo_LimitRangeList proto.InternalMessageInfo
     func (m *LimitRangeSpec) Reset()      { *m = LimitRangeSpec{} }
     func (*LimitRangeSpec) ProtoMessage() {}
     func (*LimitRangeSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{80}
    +	return fileDescriptor_6c07b07c062484ab, []int{82}
     }
     func (m *LimitRangeSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2317,10 +2373,38 @@ func (m *LimitRangeSpec) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_LimitRangeSpec proto.InternalMessageInfo
     
    +func (m *LinuxContainerUser) Reset()      { *m = LinuxContainerUser{} }
    +func (*LinuxContainerUser) ProtoMessage() {}
    +func (*LinuxContainerUser) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{83}
    +}
    +func (m *LinuxContainerUser) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *LinuxContainerUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *LinuxContainerUser) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_LinuxContainerUser.Merge(m, src)
    +}
    +func (m *LinuxContainerUser) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *LinuxContainerUser) XXX_DiscardUnknown() {
    +	xxx_messageInfo_LinuxContainerUser.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_LinuxContainerUser proto.InternalMessageInfo
    +
     func (m *List) Reset()      { *m = List{} }
     func (*List) ProtoMessage() {}
     func (*List) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{81}
    +	return fileDescriptor_6c07b07c062484ab, []int{84}
     }
     func (m *List) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2348,7 +2432,7 @@ var xxx_messageInfo_List proto.InternalMessageInfo
     func (m *LoadBalancerIngress) Reset()      { *m = LoadBalancerIngress{} }
     func (*LoadBalancerIngress) ProtoMessage() {}
     func (*LoadBalancerIngress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{82}
    +	return fileDescriptor_6c07b07c062484ab, []int{85}
     }
     func (m *LoadBalancerIngress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2376,7 +2460,7 @@ var xxx_messageInfo_LoadBalancerIngress proto.InternalMessageInfo
     func (m *LoadBalancerStatus) Reset()      { *m = LoadBalancerStatus{} }
     func (*LoadBalancerStatus) ProtoMessage() {}
     func (*LoadBalancerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{83}
    +	return fileDescriptor_6c07b07c062484ab, []int{86}
     }
     func (m *LoadBalancerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2404,7 +2488,7 @@ var xxx_messageInfo_LoadBalancerStatus proto.InternalMessageInfo
     func (m *LocalObjectReference) Reset()      { *m = LocalObjectReference{} }
     func (*LocalObjectReference) ProtoMessage() {}
     func (*LocalObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{84}
    +	return fileDescriptor_6c07b07c062484ab, []int{87}
     }
     func (m *LocalObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2432,7 +2516,7 @@ var xxx_messageInfo_LocalObjectReference proto.InternalMessageInfo
     func (m *LocalVolumeSource) Reset()      { *m = LocalVolumeSource{} }
     func (*LocalVolumeSource) ProtoMessage() {}
     func (*LocalVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{85}
    +	return fileDescriptor_6c07b07c062484ab, []int{88}
     }
     func (m *LocalVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2460,7 +2544,7 @@ var xxx_messageInfo_LocalVolumeSource proto.InternalMessageInfo
     func (m *ModifyVolumeStatus) Reset()      { *m = ModifyVolumeStatus{} }
     func (*ModifyVolumeStatus) ProtoMessage() {}
     func (*ModifyVolumeStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{86}
    +	return fileDescriptor_6c07b07c062484ab, []int{89}
     }
     func (m *ModifyVolumeStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2488,7 +2572,7 @@ var xxx_messageInfo_ModifyVolumeStatus proto.InternalMessageInfo
     func (m *NFSVolumeSource) Reset()      { *m = NFSVolumeSource{} }
     func (*NFSVolumeSource) ProtoMessage() {}
     func (*NFSVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{87}
    +	return fileDescriptor_6c07b07c062484ab, []int{90}
     }
     func (m *NFSVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2516,7 +2600,7 @@ var xxx_messageInfo_NFSVolumeSource proto.InternalMessageInfo
     func (m *Namespace) Reset()      { *m = Namespace{} }
     func (*Namespace) ProtoMessage() {}
     func (*Namespace) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{88}
    +	return fileDescriptor_6c07b07c062484ab, []int{91}
     }
     func (m *Namespace) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2544,7 +2628,7 @@ var xxx_messageInfo_Namespace proto.InternalMessageInfo
     func (m *NamespaceCondition) Reset()      { *m = NamespaceCondition{} }
     func (*NamespaceCondition) ProtoMessage() {}
     func (*NamespaceCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{89}
    +	return fileDescriptor_6c07b07c062484ab, []int{92}
     }
     func (m *NamespaceCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2572,7 +2656,7 @@ var xxx_messageInfo_NamespaceCondition proto.InternalMessageInfo
     func (m *NamespaceList) Reset()      { *m = NamespaceList{} }
     func (*NamespaceList) ProtoMessage() {}
     func (*NamespaceList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{90}
    +	return fileDescriptor_6c07b07c062484ab, []int{93}
     }
     func (m *NamespaceList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2600,7 +2684,7 @@ var xxx_messageInfo_NamespaceList proto.InternalMessageInfo
     func (m *NamespaceSpec) Reset()      { *m = NamespaceSpec{} }
     func (*NamespaceSpec) ProtoMessage() {}
     func (*NamespaceSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{91}
    +	return fileDescriptor_6c07b07c062484ab, []int{94}
     }
     func (m *NamespaceSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2628,7 +2712,7 @@ var xxx_messageInfo_NamespaceSpec proto.InternalMessageInfo
     func (m *NamespaceStatus) Reset()      { *m = NamespaceStatus{} }
     func (*NamespaceStatus) ProtoMessage() {}
     func (*NamespaceStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{92}
    +	return fileDescriptor_6c07b07c062484ab, []int{95}
     }
     func (m *NamespaceStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2656,7 +2740,7 @@ var xxx_messageInfo_NamespaceStatus proto.InternalMessageInfo
     func (m *Node) Reset()      { *m = Node{} }
     func (*Node) ProtoMessage() {}
     func (*Node) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{93}
    +	return fileDescriptor_6c07b07c062484ab, []int{96}
     }
     func (m *Node) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2684,7 +2768,7 @@ var xxx_messageInfo_Node proto.InternalMessageInfo
     func (m *NodeAddress) Reset()      { *m = NodeAddress{} }
     func (*NodeAddress) ProtoMessage() {}
     func (*NodeAddress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{94}
    +	return fileDescriptor_6c07b07c062484ab, []int{97}
     }
     func (m *NodeAddress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2712,7 +2796,7 @@ var xxx_messageInfo_NodeAddress proto.InternalMessageInfo
     func (m *NodeAffinity) Reset()      { *m = NodeAffinity{} }
     func (*NodeAffinity) ProtoMessage() {}
     func (*NodeAffinity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{95}
    +	return fileDescriptor_6c07b07c062484ab, []int{98}
     }
     func (m *NodeAffinity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2740,7 +2824,7 @@ var xxx_messageInfo_NodeAffinity proto.InternalMessageInfo
     func (m *NodeCondition) Reset()      { *m = NodeCondition{} }
     func (*NodeCondition) ProtoMessage() {}
     func (*NodeCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{96}
    +	return fileDescriptor_6c07b07c062484ab, []int{99}
     }
     func (m *NodeCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2768,7 +2852,7 @@ var xxx_messageInfo_NodeCondition proto.InternalMessageInfo
     func (m *NodeConfigSource) Reset()      { *m = NodeConfigSource{} }
     func (*NodeConfigSource) ProtoMessage() {}
     func (*NodeConfigSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{97}
    +	return fileDescriptor_6c07b07c062484ab, []int{100}
     }
     func (m *NodeConfigSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2796,7 +2880,7 @@ var xxx_messageInfo_NodeConfigSource proto.InternalMessageInfo
     func (m *NodeConfigStatus) Reset()      { *m = NodeConfigStatus{} }
     func (*NodeConfigStatus) ProtoMessage() {}
     func (*NodeConfigStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{98}
    +	return fileDescriptor_6c07b07c062484ab, []int{101}
     }
     func (m *NodeConfigStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2824,7 +2908,7 @@ var xxx_messageInfo_NodeConfigStatus proto.InternalMessageInfo
     func (m *NodeDaemonEndpoints) Reset()      { *m = NodeDaemonEndpoints{} }
     func (*NodeDaemonEndpoints) ProtoMessage() {}
     func (*NodeDaemonEndpoints) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{99}
    +	return fileDescriptor_6c07b07c062484ab, []int{102}
     }
     func (m *NodeDaemonEndpoints) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2849,10 +2933,38 @@ func (m *NodeDaemonEndpoints) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_NodeDaemonEndpoints proto.InternalMessageInfo
     
    +func (m *NodeFeatures) Reset()      { *m = NodeFeatures{} }
    +func (*NodeFeatures) ProtoMessage() {}
    +func (*NodeFeatures) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{103}
    +}
    +func (m *NodeFeatures) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *NodeFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *NodeFeatures) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_NodeFeatures.Merge(m, src)
    +}
    +func (m *NodeFeatures) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *NodeFeatures) XXX_DiscardUnknown() {
    +	xxx_messageInfo_NodeFeatures.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_NodeFeatures proto.InternalMessageInfo
    +
     func (m *NodeList) Reset()      { *m = NodeList{} }
     func (*NodeList) ProtoMessage() {}
     func (*NodeList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{100}
    +	return fileDescriptor_6c07b07c062484ab, []int{104}
     }
     func (m *NodeList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2880,7 +2992,7 @@ var xxx_messageInfo_NodeList proto.InternalMessageInfo
     func (m *NodeProxyOptions) Reset()      { *m = NodeProxyOptions{} }
     func (*NodeProxyOptions) ProtoMessage() {}
     func (*NodeProxyOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{101}
    +	return fileDescriptor_6c07b07c062484ab, []int{105}
     }
     func (m *NodeProxyOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2905,15 +3017,15 @@ func (m *NodeProxyOptions) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_NodeProxyOptions proto.InternalMessageInfo
     
    -func (m *NodeResources) Reset()      { *m = NodeResources{} }
    -func (*NodeResources) ProtoMessage() {}
    -func (*NodeResources) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{102}
    +func (m *NodeRuntimeHandler) Reset()      { *m = NodeRuntimeHandler{} }
    +func (*NodeRuntimeHandler) ProtoMessage() {}
    +func (*NodeRuntimeHandler) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{106}
     }
    -func (m *NodeResources) XXX_Unmarshal(b []byte) error {
    +func (m *NodeRuntimeHandler) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
     }
    -func (m *NodeResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +func (m *NodeRuntimeHandler) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
     	b = b[:cap(b)]
     	n, err := m.MarshalToSizedBuffer(b)
     	if err != nil {
    @@ -2921,22 +3033,50 @@ func (m *NodeResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error
     	}
     	return b[:n], nil
     }
    -func (m *NodeResources) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_NodeResources.Merge(m, src)
    +func (m *NodeRuntimeHandler) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_NodeRuntimeHandler.Merge(m, src)
     }
    -func (m *NodeResources) XXX_Size() int {
    +func (m *NodeRuntimeHandler) XXX_Size() int {
     	return m.Size()
     }
    -func (m *NodeResources) XXX_DiscardUnknown() {
    -	xxx_messageInfo_NodeResources.DiscardUnknown(m)
    +func (m *NodeRuntimeHandler) XXX_DiscardUnknown() {
    +	xxx_messageInfo_NodeRuntimeHandler.DiscardUnknown(m)
     }
     
    -var xxx_messageInfo_NodeResources proto.InternalMessageInfo
    +var xxx_messageInfo_NodeRuntimeHandler proto.InternalMessageInfo
    +
    +func (m *NodeRuntimeHandlerFeatures) Reset()      { *m = NodeRuntimeHandlerFeatures{} }
    +func (*NodeRuntimeHandlerFeatures) ProtoMessage() {}
    +func (*NodeRuntimeHandlerFeatures) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{107}
    +}
    +func (m *NodeRuntimeHandlerFeatures) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *NodeRuntimeHandlerFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *NodeRuntimeHandlerFeatures) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_NodeRuntimeHandlerFeatures.Merge(m, src)
    +}
    +func (m *NodeRuntimeHandlerFeatures) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *NodeRuntimeHandlerFeatures) XXX_DiscardUnknown() {
    +	xxx_messageInfo_NodeRuntimeHandlerFeatures.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_NodeRuntimeHandlerFeatures proto.InternalMessageInfo
     
     func (m *NodeSelector) Reset()      { *m = NodeSelector{} }
     func (*NodeSelector) ProtoMessage() {}
     func (*NodeSelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{103}
    +	return fileDescriptor_6c07b07c062484ab, []int{108}
     }
     func (m *NodeSelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2964,7 +3104,7 @@ var xxx_messageInfo_NodeSelector proto.InternalMessageInfo
     func (m *NodeSelectorRequirement) Reset()      { *m = NodeSelectorRequirement{} }
     func (*NodeSelectorRequirement) ProtoMessage() {}
     func (*NodeSelectorRequirement) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{104}
    +	return fileDescriptor_6c07b07c062484ab, []int{109}
     }
     func (m *NodeSelectorRequirement) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2992,7 +3132,7 @@ var xxx_messageInfo_NodeSelectorRequirement proto.InternalMessageInfo
     func (m *NodeSelectorTerm) Reset()      { *m = NodeSelectorTerm{} }
     func (*NodeSelectorTerm) ProtoMessage() {}
     func (*NodeSelectorTerm) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{105}
    +	return fileDescriptor_6c07b07c062484ab, []int{110}
     }
     func (m *NodeSelectorTerm) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3020,7 +3160,7 @@ var xxx_messageInfo_NodeSelectorTerm proto.InternalMessageInfo
     func (m *NodeSpec) Reset()      { *m = NodeSpec{} }
     func (*NodeSpec) ProtoMessage() {}
     func (*NodeSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{106}
    +	return fileDescriptor_6c07b07c062484ab, []int{111}
     }
     func (m *NodeSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3048,7 +3188,7 @@ var xxx_messageInfo_NodeSpec proto.InternalMessageInfo
     func (m *NodeStatus) Reset()      { *m = NodeStatus{} }
     func (*NodeStatus) ProtoMessage() {}
     func (*NodeStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{107}
    +	return fileDescriptor_6c07b07c062484ab, []int{112}
     }
     func (m *NodeStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3076,7 +3216,7 @@ var xxx_messageInfo_NodeStatus proto.InternalMessageInfo
     func (m *NodeSystemInfo) Reset()      { *m = NodeSystemInfo{} }
     func (*NodeSystemInfo) ProtoMessage() {}
     func (*NodeSystemInfo) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{108}
    +	return fileDescriptor_6c07b07c062484ab, []int{113}
     }
     func (m *NodeSystemInfo) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3104,7 +3244,7 @@ var xxx_messageInfo_NodeSystemInfo proto.InternalMessageInfo
     func (m *ObjectFieldSelector) Reset()      { *m = ObjectFieldSelector{} }
     func (*ObjectFieldSelector) ProtoMessage() {}
     func (*ObjectFieldSelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{109}
    +	return fileDescriptor_6c07b07c062484ab, []int{114}
     }
     func (m *ObjectFieldSelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3132,7 +3272,7 @@ var xxx_messageInfo_ObjectFieldSelector proto.InternalMessageInfo
     func (m *ObjectReference) Reset()      { *m = ObjectReference{} }
     func (*ObjectReference) ProtoMessage() {}
     func (*ObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{110}
    +	return fileDescriptor_6c07b07c062484ab, []int{115}
     }
     func (m *ObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3160,7 +3300,7 @@ var xxx_messageInfo_ObjectReference proto.InternalMessageInfo
     func (m *PersistentVolume) Reset()      { *m = PersistentVolume{} }
     func (*PersistentVolume) ProtoMessage() {}
     func (*PersistentVolume) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{111}
    +	return fileDescriptor_6c07b07c062484ab, []int{116}
     }
     func (m *PersistentVolume) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3188,7 +3328,7 @@ var xxx_messageInfo_PersistentVolume proto.InternalMessageInfo
     func (m *PersistentVolumeClaim) Reset()      { *m = PersistentVolumeClaim{} }
     func (*PersistentVolumeClaim) ProtoMessage() {}
     func (*PersistentVolumeClaim) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{112}
    +	return fileDescriptor_6c07b07c062484ab, []int{117}
     }
     func (m *PersistentVolumeClaim) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3216,7 +3356,7 @@ var xxx_messageInfo_PersistentVolumeClaim proto.InternalMessageInfo
     func (m *PersistentVolumeClaimCondition) Reset()      { *m = PersistentVolumeClaimCondition{} }
     func (*PersistentVolumeClaimCondition) ProtoMessage() {}
     func (*PersistentVolumeClaimCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{113}
    +	return fileDescriptor_6c07b07c062484ab, []int{118}
     }
     func (m *PersistentVolumeClaimCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3244,7 +3384,7 @@ var xxx_messageInfo_PersistentVolumeClaimCondition proto.InternalMessageInfo
     func (m *PersistentVolumeClaimList) Reset()      { *m = PersistentVolumeClaimList{} }
     func (*PersistentVolumeClaimList) ProtoMessage() {}
     func (*PersistentVolumeClaimList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{114}
    +	return fileDescriptor_6c07b07c062484ab, []int{119}
     }
     func (m *PersistentVolumeClaimList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3272,7 +3412,7 @@ var xxx_messageInfo_PersistentVolumeClaimList proto.InternalMessageInfo
     func (m *PersistentVolumeClaimSpec) Reset()      { *m = PersistentVolumeClaimSpec{} }
     func (*PersistentVolumeClaimSpec) ProtoMessage() {}
     func (*PersistentVolumeClaimSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{115}
    +	return fileDescriptor_6c07b07c062484ab, []int{120}
     }
     func (m *PersistentVolumeClaimSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3300,7 +3440,7 @@ var xxx_messageInfo_PersistentVolumeClaimSpec proto.InternalMessageInfo
     func (m *PersistentVolumeClaimStatus) Reset()      { *m = PersistentVolumeClaimStatus{} }
     func (*PersistentVolumeClaimStatus) ProtoMessage() {}
     func (*PersistentVolumeClaimStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{116}
    +	return fileDescriptor_6c07b07c062484ab, []int{121}
     }
     func (m *PersistentVolumeClaimStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3328,7 +3468,7 @@ var xxx_messageInfo_PersistentVolumeClaimStatus proto.InternalMessageInfo
     func (m *PersistentVolumeClaimTemplate) Reset()      { *m = PersistentVolumeClaimTemplate{} }
     func (*PersistentVolumeClaimTemplate) ProtoMessage() {}
     func (*PersistentVolumeClaimTemplate) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{117}
    +	return fileDescriptor_6c07b07c062484ab, []int{122}
     }
     func (m *PersistentVolumeClaimTemplate) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3356,7 +3496,7 @@ var xxx_messageInfo_PersistentVolumeClaimTemplate proto.InternalMessageInfo
     func (m *PersistentVolumeClaimVolumeSource) Reset()      { *m = PersistentVolumeClaimVolumeSource{} }
     func (*PersistentVolumeClaimVolumeSource) ProtoMessage() {}
     func (*PersistentVolumeClaimVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{118}
    +	return fileDescriptor_6c07b07c062484ab, []int{123}
     }
     func (m *PersistentVolumeClaimVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3384,7 +3524,7 @@ var xxx_messageInfo_PersistentVolumeClaimVolumeSource proto.InternalMessageInfo
     func (m *PersistentVolumeList) Reset()      { *m = PersistentVolumeList{} }
     func (*PersistentVolumeList) ProtoMessage() {}
     func (*PersistentVolumeList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{119}
    +	return fileDescriptor_6c07b07c062484ab, []int{124}
     }
     func (m *PersistentVolumeList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3412,7 +3552,7 @@ var xxx_messageInfo_PersistentVolumeList proto.InternalMessageInfo
     func (m *PersistentVolumeSource) Reset()      { *m = PersistentVolumeSource{} }
     func (*PersistentVolumeSource) ProtoMessage() {}
     func (*PersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{120}
    +	return fileDescriptor_6c07b07c062484ab, []int{125}
     }
     func (m *PersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3440,7 +3580,7 @@ var xxx_messageInfo_PersistentVolumeSource proto.InternalMessageInfo
     func (m *PersistentVolumeSpec) Reset()      { *m = PersistentVolumeSpec{} }
     func (*PersistentVolumeSpec) ProtoMessage() {}
     func (*PersistentVolumeSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{121}
    +	return fileDescriptor_6c07b07c062484ab, []int{126}
     }
     func (m *PersistentVolumeSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3468,7 +3608,7 @@ var xxx_messageInfo_PersistentVolumeSpec proto.InternalMessageInfo
     func (m *PersistentVolumeStatus) Reset()      { *m = PersistentVolumeStatus{} }
     func (*PersistentVolumeStatus) ProtoMessage() {}
     func (*PersistentVolumeStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{122}
    +	return fileDescriptor_6c07b07c062484ab, []int{127}
     }
     func (m *PersistentVolumeStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3496,7 +3636,7 @@ var xxx_messageInfo_PersistentVolumeStatus proto.InternalMessageInfo
     func (m *PhotonPersistentDiskVolumeSource) Reset()      { *m = PhotonPersistentDiskVolumeSource{} }
     func (*PhotonPersistentDiskVolumeSource) ProtoMessage() {}
     func (*PhotonPersistentDiskVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{123}
    +	return fileDescriptor_6c07b07c062484ab, []int{128}
     }
     func (m *PhotonPersistentDiskVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3524,7 +3664,7 @@ var xxx_messageInfo_PhotonPersistentDiskVolumeSource proto.InternalMessageInfo
     func (m *Pod) Reset()      { *m = Pod{} }
     func (*Pod) ProtoMessage() {}
     func (*Pod) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{124}
    +	return fileDescriptor_6c07b07c062484ab, []int{129}
     }
     func (m *Pod) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3552,7 +3692,7 @@ var xxx_messageInfo_Pod proto.InternalMessageInfo
     func (m *PodAffinity) Reset()      { *m = PodAffinity{} }
     func (*PodAffinity) ProtoMessage() {}
     func (*PodAffinity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{125}
    +	return fileDescriptor_6c07b07c062484ab, []int{130}
     }
     func (m *PodAffinity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3580,7 +3720,7 @@ var xxx_messageInfo_PodAffinity proto.InternalMessageInfo
     func (m *PodAffinityTerm) Reset()      { *m = PodAffinityTerm{} }
     func (*PodAffinityTerm) ProtoMessage() {}
     func (*PodAffinityTerm) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{126}
    +	return fileDescriptor_6c07b07c062484ab, []int{131}
     }
     func (m *PodAffinityTerm) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3608,7 +3748,7 @@ var xxx_messageInfo_PodAffinityTerm proto.InternalMessageInfo
     func (m *PodAntiAffinity) Reset()      { *m = PodAntiAffinity{} }
     func (*PodAntiAffinity) ProtoMessage() {}
     func (*PodAntiAffinity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{127}
    +	return fileDescriptor_6c07b07c062484ab, []int{132}
     }
     func (m *PodAntiAffinity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3636,7 +3776,7 @@ var xxx_messageInfo_PodAntiAffinity proto.InternalMessageInfo
     func (m *PodAttachOptions) Reset()      { *m = PodAttachOptions{} }
     func (*PodAttachOptions) ProtoMessage() {}
     func (*PodAttachOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{128}
    +	return fileDescriptor_6c07b07c062484ab, []int{133}
     }
     func (m *PodAttachOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3664,7 +3804,7 @@ var xxx_messageInfo_PodAttachOptions proto.InternalMessageInfo
     func (m *PodCondition) Reset()      { *m = PodCondition{} }
     func (*PodCondition) ProtoMessage() {}
     func (*PodCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{129}
    +	return fileDescriptor_6c07b07c062484ab, []int{134}
     }
     func (m *PodCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3692,7 +3832,7 @@ var xxx_messageInfo_PodCondition proto.InternalMessageInfo
     func (m *PodDNSConfig) Reset()      { *m = PodDNSConfig{} }
     func (*PodDNSConfig) ProtoMessage() {}
     func (*PodDNSConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{130}
    +	return fileDescriptor_6c07b07c062484ab, []int{135}
     }
     func (m *PodDNSConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3720,7 +3860,7 @@ var xxx_messageInfo_PodDNSConfig proto.InternalMessageInfo
     func (m *PodDNSConfigOption) Reset()      { *m = PodDNSConfigOption{} }
     func (*PodDNSConfigOption) ProtoMessage() {}
     func (*PodDNSConfigOption) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{131}
    +	return fileDescriptor_6c07b07c062484ab, []int{136}
     }
     func (m *PodDNSConfigOption) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3748,7 +3888,7 @@ var xxx_messageInfo_PodDNSConfigOption proto.InternalMessageInfo
     func (m *PodExecOptions) Reset()      { *m = PodExecOptions{} }
     func (*PodExecOptions) ProtoMessage() {}
     func (*PodExecOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{132}
    +	return fileDescriptor_6c07b07c062484ab, []int{137}
     }
     func (m *PodExecOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3776,7 +3916,7 @@ var xxx_messageInfo_PodExecOptions proto.InternalMessageInfo
     func (m *PodIP) Reset()      { *m = PodIP{} }
     func (*PodIP) ProtoMessage() {}
     func (*PodIP) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{133}
    +	return fileDescriptor_6c07b07c062484ab, []int{138}
     }
     func (m *PodIP) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3804,7 +3944,7 @@ var xxx_messageInfo_PodIP proto.InternalMessageInfo
     func (m *PodList) Reset()      { *m = PodList{} }
     func (*PodList) ProtoMessage() {}
     func (*PodList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{134}
    +	return fileDescriptor_6c07b07c062484ab, []int{139}
     }
     func (m *PodList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3832,7 +3972,7 @@ var xxx_messageInfo_PodList proto.InternalMessageInfo
     func (m *PodLogOptions) Reset()      { *m = PodLogOptions{} }
     func (*PodLogOptions) ProtoMessage() {}
     func (*PodLogOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{135}
    +	return fileDescriptor_6c07b07c062484ab, []int{140}
     }
     func (m *PodLogOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3860,7 +4000,7 @@ var xxx_messageInfo_PodLogOptions proto.InternalMessageInfo
     func (m *PodOS) Reset()      { *m = PodOS{} }
     func (*PodOS) ProtoMessage() {}
     func (*PodOS) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{136}
    +	return fileDescriptor_6c07b07c062484ab, []int{141}
     }
     func (m *PodOS) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3888,7 +4028,7 @@ var xxx_messageInfo_PodOS proto.InternalMessageInfo
     func (m *PodPortForwardOptions) Reset()      { *m = PodPortForwardOptions{} }
     func (*PodPortForwardOptions) ProtoMessage() {}
     func (*PodPortForwardOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{137}
    +	return fileDescriptor_6c07b07c062484ab, []int{142}
     }
     func (m *PodPortForwardOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3916,7 +4056,7 @@ var xxx_messageInfo_PodPortForwardOptions proto.InternalMessageInfo
     func (m *PodProxyOptions) Reset()      { *m = PodProxyOptions{} }
     func (*PodProxyOptions) ProtoMessage() {}
     func (*PodProxyOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{138}
    +	return fileDescriptor_6c07b07c062484ab, []int{143}
     }
     func (m *PodProxyOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3944,7 +4084,7 @@ var xxx_messageInfo_PodProxyOptions proto.InternalMessageInfo
     func (m *PodReadinessGate) Reset()      { *m = PodReadinessGate{} }
     func (*PodReadinessGate) ProtoMessage() {}
     func (*PodReadinessGate) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{139}
    +	return fileDescriptor_6c07b07c062484ab, []int{144}
     }
     func (m *PodReadinessGate) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3972,7 +4112,7 @@ var xxx_messageInfo_PodReadinessGate proto.InternalMessageInfo
     func (m *PodResourceClaim) Reset()      { *m = PodResourceClaim{} }
     func (*PodResourceClaim) ProtoMessage() {}
     func (*PodResourceClaim) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{140}
    +	return fileDescriptor_6c07b07c062484ab, []int{145}
     }
     func (m *PodResourceClaim) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4000,7 +4140,7 @@ var xxx_messageInfo_PodResourceClaim proto.InternalMessageInfo
     func (m *PodResourceClaimStatus) Reset()      { *m = PodResourceClaimStatus{} }
     func (*PodResourceClaimStatus) ProtoMessage() {}
     func (*PodResourceClaimStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{141}
    +	return fileDescriptor_6c07b07c062484ab, []int{146}
     }
     func (m *PodResourceClaimStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4028,7 +4168,7 @@ var xxx_messageInfo_PodResourceClaimStatus proto.InternalMessageInfo
     func (m *PodSchedulingGate) Reset()      { *m = PodSchedulingGate{} }
     func (*PodSchedulingGate) ProtoMessage() {}
     func (*PodSchedulingGate) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{142}
    +	return fileDescriptor_6c07b07c062484ab, []int{147}
     }
     func (m *PodSchedulingGate) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4056,7 +4196,7 @@ var xxx_messageInfo_PodSchedulingGate proto.InternalMessageInfo
     func (m *PodSecurityContext) Reset()      { *m = PodSecurityContext{} }
     func (*PodSecurityContext) ProtoMessage() {}
     func (*PodSecurityContext) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{143}
    +	return fileDescriptor_6c07b07c062484ab, []int{148}
     }
     func (m *PodSecurityContext) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4084,7 +4224,7 @@ var xxx_messageInfo_PodSecurityContext proto.InternalMessageInfo
     func (m *PodSignature) Reset()      { *m = PodSignature{} }
     func (*PodSignature) ProtoMessage() {}
     func (*PodSignature) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{144}
    +	return fileDescriptor_6c07b07c062484ab, []int{149}
     }
     func (m *PodSignature) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4112,7 +4252,7 @@ var xxx_messageInfo_PodSignature proto.InternalMessageInfo
     func (m *PodSpec) Reset()      { *m = PodSpec{} }
     func (*PodSpec) ProtoMessage() {}
     func (*PodSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{145}
    +	return fileDescriptor_6c07b07c062484ab, []int{150}
     }
     func (m *PodSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4140,7 +4280,7 @@ var xxx_messageInfo_PodSpec proto.InternalMessageInfo
     func (m *PodStatus) Reset()      { *m = PodStatus{} }
     func (*PodStatus) ProtoMessage() {}
     func (*PodStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{146}
    +	return fileDescriptor_6c07b07c062484ab, []int{151}
     }
     func (m *PodStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4168,7 +4308,7 @@ var xxx_messageInfo_PodStatus proto.InternalMessageInfo
     func (m *PodStatusResult) Reset()      { *m = PodStatusResult{} }
     func (*PodStatusResult) ProtoMessage() {}
     func (*PodStatusResult) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{147}
    +	return fileDescriptor_6c07b07c062484ab, []int{152}
     }
     func (m *PodStatusResult) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4196,7 +4336,7 @@ var xxx_messageInfo_PodStatusResult proto.InternalMessageInfo
     func (m *PodTemplate) Reset()      { *m = PodTemplate{} }
     func (*PodTemplate) ProtoMessage() {}
     func (*PodTemplate) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{148}
    +	return fileDescriptor_6c07b07c062484ab, []int{153}
     }
     func (m *PodTemplate) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4224,7 +4364,7 @@ var xxx_messageInfo_PodTemplate proto.InternalMessageInfo
     func (m *PodTemplateList) Reset()      { *m = PodTemplateList{} }
     func (*PodTemplateList) ProtoMessage() {}
     func (*PodTemplateList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{149}
    +	return fileDescriptor_6c07b07c062484ab, []int{154}
     }
     func (m *PodTemplateList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4252,7 +4392,7 @@ var xxx_messageInfo_PodTemplateList proto.InternalMessageInfo
     func (m *PodTemplateSpec) Reset()      { *m = PodTemplateSpec{} }
     func (*PodTemplateSpec) ProtoMessage() {}
     func (*PodTemplateSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{150}
    +	return fileDescriptor_6c07b07c062484ab, []int{155}
     }
     func (m *PodTemplateSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4280,7 +4420,7 @@ var xxx_messageInfo_PodTemplateSpec proto.InternalMessageInfo
     func (m *PortStatus) Reset()      { *m = PortStatus{} }
     func (*PortStatus) ProtoMessage() {}
     func (*PortStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{151}
    +	return fileDescriptor_6c07b07c062484ab, []int{156}
     }
     func (m *PortStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4308,7 +4448,7 @@ var xxx_messageInfo_PortStatus proto.InternalMessageInfo
     func (m *PortworxVolumeSource) Reset()      { *m = PortworxVolumeSource{} }
     func (*PortworxVolumeSource) ProtoMessage() {}
     func (*PortworxVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{152}
    +	return fileDescriptor_6c07b07c062484ab, []int{157}
     }
     func (m *PortworxVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4336,7 +4476,7 @@ var xxx_messageInfo_PortworxVolumeSource proto.InternalMessageInfo
     func (m *Preconditions) Reset()      { *m = Preconditions{} }
     func (*Preconditions) ProtoMessage() {}
     func (*Preconditions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{153}
    +	return fileDescriptor_6c07b07c062484ab, []int{158}
     }
     func (m *Preconditions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4364,7 +4504,7 @@ var xxx_messageInfo_Preconditions proto.InternalMessageInfo
     func (m *PreferAvoidPodsEntry) Reset()      { *m = PreferAvoidPodsEntry{} }
     func (*PreferAvoidPodsEntry) ProtoMessage() {}
     func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{154}
    +	return fileDescriptor_6c07b07c062484ab, []int{159}
     }
     func (m *PreferAvoidPodsEntry) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4392,7 +4532,7 @@ var xxx_messageInfo_PreferAvoidPodsEntry proto.InternalMessageInfo
     func (m *PreferredSchedulingTerm) Reset()      { *m = PreferredSchedulingTerm{} }
     func (*PreferredSchedulingTerm) ProtoMessage() {}
     func (*PreferredSchedulingTerm) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{155}
    +	return fileDescriptor_6c07b07c062484ab, []int{160}
     }
     func (m *PreferredSchedulingTerm) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4420,7 +4560,7 @@ var xxx_messageInfo_PreferredSchedulingTerm proto.InternalMessageInfo
     func (m *Probe) Reset()      { *m = Probe{} }
     func (*Probe) ProtoMessage() {}
     func (*Probe) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{156}
    +	return fileDescriptor_6c07b07c062484ab, []int{161}
     }
     func (m *Probe) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4448,7 +4588,7 @@ var xxx_messageInfo_Probe proto.InternalMessageInfo
     func (m *ProbeHandler) Reset()      { *m = ProbeHandler{} }
     func (*ProbeHandler) ProtoMessage() {}
     func (*ProbeHandler) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{157}
    +	return fileDescriptor_6c07b07c062484ab, []int{162}
     }
     func (m *ProbeHandler) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4476,7 +4616,7 @@ var xxx_messageInfo_ProbeHandler proto.InternalMessageInfo
     func (m *ProjectedVolumeSource) Reset()      { *m = ProjectedVolumeSource{} }
     func (*ProjectedVolumeSource) ProtoMessage() {}
     func (*ProjectedVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{158}
    +	return fileDescriptor_6c07b07c062484ab, []int{163}
     }
     func (m *ProjectedVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4504,7 +4644,7 @@ var xxx_messageInfo_ProjectedVolumeSource proto.InternalMessageInfo
     func (m *QuobyteVolumeSource) Reset()      { *m = QuobyteVolumeSource{} }
     func (*QuobyteVolumeSource) ProtoMessage() {}
     func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{159}
    +	return fileDescriptor_6c07b07c062484ab, []int{164}
     }
     func (m *QuobyteVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4532,7 +4672,7 @@ var xxx_messageInfo_QuobyteVolumeSource proto.InternalMessageInfo
     func (m *RBDPersistentVolumeSource) Reset()      { *m = RBDPersistentVolumeSource{} }
     func (*RBDPersistentVolumeSource) ProtoMessage() {}
     func (*RBDPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{160}
    +	return fileDescriptor_6c07b07c062484ab, []int{165}
     }
     func (m *RBDPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4560,7 +4700,7 @@ var xxx_messageInfo_RBDPersistentVolumeSource proto.InternalMessageInfo
     func (m *RBDVolumeSource) Reset()      { *m = RBDVolumeSource{} }
     func (*RBDVolumeSource) ProtoMessage() {}
     func (*RBDVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{161}
    +	return fileDescriptor_6c07b07c062484ab, []int{166}
     }
     func (m *RBDVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4588,7 +4728,7 @@ var xxx_messageInfo_RBDVolumeSource proto.InternalMessageInfo
     func (m *RangeAllocation) Reset()      { *m = RangeAllocation{} }
     func (*RangeAllocation) ProtoMessage() {}
     func (*RangeAllocation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{162}
    +	return fileDescriptor_6c07b07c062484ab, []int{167}
     }
     func (m *RangeAllocation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4616,7 +4756,7 @@ var xxx_messageInfo_RangeAllocation proto.InternalMessageInfo
     func (m *ReplicationController) Reset()      { *m = ReplicationController{} }
     func (*ReplicationController) ProtoMessage() {}
     func (*ReplicationController) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{163}
    +	return fileDescriptor_6c07b07c062484ab, []int{168}
     }
     func (m *ReplicationController) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4644,7 +4784,7 @@ var xxx_messageInfo_ReplicationController proto.InternalMessageInfo
     func (m *ReplicationControllerCondition) Reset()      { *m = ReplicationControllerCondition{} }
     func (*ReplicationControllerCondition) ProtoMessage() {}
     func (*ReplicationControllerCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{164}
    +	return fileDescriptor_6c07b07c062484ab, []int{169}
     }
     func (m *ReplicationControllerCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4672,7 +4812,7 @@ var xxx_messageInfo_ReplicationControllerCondition proto.InternalMessageInfo
     func (m *ReplicationControllerList) Reset()      { *m = ReplicationControllerList{} }
     func (*ReplicationControllerList) ProtoMessage() {}
     func (*ReplicationControllerList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{165}
    +	return fileDescriptor_6c07b07c062484ab, []int{170}
     }
     func (m *ReplicationControllerList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4700,7 +4840,7 @@ var xxx_messageInfo_ReplicationControllerList proto.InternalMessageInfo
     func (m *ReplicationControllerSpec) Reset()      { *m = ReplicationControllerSpec{} }
     func (*ReplicationControllerSpec) ProtoMessage() {}
     func (*ReplicationControllerSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{166}
    +	return fileDescriptor_6c07b07c062484ab, []int{171}
     }
     func (m *ReplicationControllerSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4728,7 +4868,7 @@ var xxx_messageInfo_ReplicationControllerSpec proto.InternalMessageInfo
     func (m *ReplicationControllerStatus) Reset()      { *m = ReplicationControllerStatus{} }
     func (*ReplicationControllerStatus) ProtoMessage() {}
     func (*ReplicationControllerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{167}
    +	return fileDescriptor_6c07b07c062484ab, []int{172}
     }
     func (m *ReplicationControllerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4756,7 +4896,7 @@ var xxx_messageInfo_ReplicationControllerStatus proto.InternalMessageInfo
     func (m *ResourceClaim) Reset()      { *m = ResourceClaim{} }
     func (*ResourceClaim) ProtoMessage() {}
     func (*ResourceClaim) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{168}
    +	return fileDescriptor_6c07b07c062484ab, []int{173}
     }
     func (m *ResourceClaim) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4784,7 +4924,7 @@ var xxx_messageInfo_ResourceClaim proto.InternalMessageInfo
     func (m *ResourceFieldSelector) Reset()      { *m = ResourceFieldSelector{} }
     func (*ResourceFieldSelector) ProtoMessage() {}
     func (*ResourceFieldSelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{169}
    +	return fileDescriptor_6c07b07c062484ab, []int{174}
     }
     func (m *ResourceFieldSelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4809,10 +4949,38 @@ func (m *ResourceFieldSelector) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ResourceFieldSelector proto.InternalMessageInfo
     
    +func (m *ResourceHealth) Reset()      { *m = ResourceHealth{} }
    +func (*ResourceHealth) ProtoMessage() {}
    +func (*ResourceHealth) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{175}
    +}
    +func (m *ResourceHealth) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceHealth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceHealth) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceHealth.Merge(m, src)
    +}
    +func (m *ResourceHealth) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceHealth) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceHealth.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceHealth proto.InternalMessageInfo
    +
     func (m *ResourceQuota) Reset()      { *m = ResourceQuota{} }
     func (*ResourceQuota) ProtoMessage() {}
     func (*ResourceQuota) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{170}
    +	return fileDescriptor_6c07b07c062484ab, []int{176}
     }
     func (m *ResourceQuota) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4840,7 +5008,7 @@ var xxx_messageInfo_ResourceQuota proto.InternalMessageInfo
     func (m *ResourceQuotaList) Reset()      { *m = ResourceQuotaList{} }
     func (*ResourceQuotaList) ProtoMessage() {}
     func (*ResourceQuotaList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{171}
    +	return fileDescriptor_6c07b07c062484ab, []int{177}
     }
     func (m *ResourceQuotaList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4868,7 +5036,7 @@ var xxx_messageInfo_ResourceQuotaList proto.InternalMessageInfo
     func (m *ResourceQuotaSpec) Reset()      { *m = ResourceQuotaSpec{} }
     func (*ResourceQuotaSpec) ProtoMessage() {}
     func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{172}
    +	return fileDescriptor_6c07b07c062484ab, []int{178}
     }
     func (m *ResourceQuotaSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4896,7 +5064,7 @@ var xxx_messageInfo_ResourceQuotaSpec proto.InternalMessageInfo
     func (m *ResourceQuotaStatus) Reset()      { *m = ResourceQuotaStatus{} }
     func (*ResourceQuotaStatus) ProtoMessage() {}
     func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{173}
    +	return fileDescriptor_6c07b07c062484ab, []int{179}
     }
     func (m *ResourceQuotaStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4924,7 +5092,7 @@ var xxx_messageInfo_ResourceQuotaStatus proto.InternalMessageInfo
     func (m *ResourceRequirements) Reset()      { *m = ResourceRequirements{} }
     func (*ResourceRequirements) ProtoMessage() {}
     func (*ResourceRequirements) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{174}
    +	return fileDescriptor_6c07b07c062484ab, []int{180}
     }
     func (m *ResourceRequirements) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4949,10 +5117,38 @@ func (m *ResourceRequirements) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ResourceRequirements proto.InternalMessageInfo
     
    +func (m *ResourceStatus) Reset()      { *m = ResourceStatus{} }
    +func (*ResourceStatus) ProtoMessage() {}
    +func (*ResourceStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{181}
    +}
    +func (m *ResourceStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceStatus.Merge(m, src)
    +}
    +func (m *ResourceStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceStatus proto.InternalMessageInfo
    +
     func (m *SELinuxOptions) Reset()      { *m = SELinuxOptions{} }
     func (*SELinuxOptions) ProtoMessage() {}
     func (*SELinuxOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{175}
    +	return fileDescriptor_6c07b07c062484ab, []int{182}
     }
     func (m *SELinuxOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4980,7 +5176,7 @@ var xxx_messageInfo_SELinuxOptions proto.InternalMessageInfo
     func (m *ScaleIOPersistentVolumeSource) Reset()      { *m = ScaleIOPersistentVolumeSource{} }
     func (*ScaleIOPersistentVolumeSource) ProtoMessage() {}
     func (*ScaleIOPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{176}
    +	return fileDescriptor_6c07b07c062484ab, []int{183}
     }
     func (m *ScaleIOPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5008,7 +5204,7 @@ var xxx_messageInfo_ScaleIOPersistentVolumeSource proto.InternalMessageInfo
     func (m *ScaleIOVolumeSource) Reset()      { *m = ScaleIOVolumeSource{} }
     func (*ScaleIOVolumeSource) ProtoMessage() {}
     func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{177}
    +	return fileDescriptor_6c07b07c062484ab, []int{184}
     }
     func (m *ScaleIOVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5036,7 +5232,7 @@ var xxx_messageInfo_ScaleIOVolumeSource proto.InternalMessageInfo
     func (m *ScopeSelector) Reset()      { *m = ScopeSelector{} }
     func (*ScopeSelector) ProtoMessage() {}
     func (*ScopeSelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{178}
    +	return fileDescriptor_6c07b07c062484ab, []int{185}
     }
     func (m *ScopeSelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5064,7 +5260,7 @@ var xxx_messageInfo_ScopeSelector proto.InternalMessageInfo
     func (m *ScopedResourceSelectorRequirement) Reset()      { *m = ScopedResourceSelectorRequirement{} }
     func (*ScopedResourceSelectorRequirement) ProtoMessage() {}
     func (*ScopedResourceSelectorRequirement) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{179}
    +	return fileDescriptor_6c07b07c062484ab, []int{186}
     }
     func (m *ScopedResourceSelectorRequirement) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5092,7 +5288,7 @@ var xxx_messageInfo_ScopedResourceSelectorRequirement proto.InternalMessageInfo
     func (m *SeccompProfile) Reset()      { *m = SeccompProfile{} }
     func (*SeccompProfile) ProtoMessage() {}
     func (*SeccompProfile) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{180}
    +	return fileDescriptor_6c07b07c062484ab, []int{187}
     }
     func (m *SeccompProfile) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5120,7 +5316,7 @@ var xxx_messageInfo_SeccompProfile proto.InternalMessageInfo
     func (m *Secret) Reset()      { *m = Secret{} }
     func (*Secret) ProtoMessage() {}
     func (*Secret) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{181}
    +	return fileDescriptor_6c07b07c062484ab, []int{188}
     }
     func (m *Secret) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5148,7 +5344,7 @@ var xxx_messageInfo_Secret proto.InternalMessageInfo
     func (m *SecretEnvSource) Reset()      { *m = SecretEnvSource{} }
     func (*SecretEnvSource) ProtoMessage() {}
     func (*SecretEnvSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{182}
    +	return fileDescriptor_6c07b07c062484ab, []int{189}
     }
     func (m *SecretEnvSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5176,7 +5372,7 @@ var xxx_messageInfo_SecretEnvSource proto.InternalMessageInfo
     func (m *SecretKeySelector) Reset()      { *m = SecretKeySelector{} }
     func (*SecretKeySelector) ProtoMessage() {}
     func (*SecretKeySelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{183}
    +	return fileDescriptor_6c07b07c062484ab, []int{190}
     }
     func (m *SecretKeySelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5204,7 +5400,7 @@ var xxx_messageInfo_SecretKeySelector proto.InternalMessageInfo
     func (m *SecretList) Reset()      { *m = SecretList{} }
     func (*SecretList) ProtoMessage() {}
     func (*SecretList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{184}
    +	return fileDescriptor_6c07b07c062484ab, []int{191}
     }
     func (m *SecretList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5232,7 +5428,7 @@ var xxx_messageInfo_SecretList proto.InternalMessageInfo
     func (m *SecretProjection) Reset()      { *m = SecretProjection{} }
     func (*SecretProjection) ProtoMessage() {}
     func (*SecretProjection) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{185}
    +	return fileDescriptor_6c07b07c062484ab, []int{192}
     }
     func (m *SecretProjection) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5260,7 +5456,7 @@ var xxx_messageInfo_SecretProjection proto.InternalMessageInfo
     func (m *SecretReference) Reset()      { *m = SecretReference{} }
     func (*SecretReference) ProtoMessage() {}
     func (*SecretReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{186}
    +	return fileDescriptor_6c07b07c062484ab, []int{193}
     }
     func (m *SecretReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5288,7 +5484,7 @@ var xxx_messageInfo_SecretReference proto.InternalMessageInfo
     func (m *SecretVolumeSource) Reset()      { *m = SecretVolumeSource{} }
     func (*SecretVolumeSource) ProtoMessage() {}
     func (*SecretVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{187}
    +	return fileDescriptor_6c07b07c062484ab, []int{194}
     }
     func (m *SecretVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5316,7 +5512,7 @@ var xxx_messageInfo_SecretVolumeSource proto.InternalMessageInfo
     func (m *SecurityContext) Reset()      { *m = SecurityContext{} }
     func (*SecurityContext) ProtoMessage() {}
     func (*SecurityContext) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{188}
    +	return fileDescriptor_6c07b07c062484ab, []int{195}
     }
     func (m *SecurityContext) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5344,7 +5540,7 @@ var xxx_messageInfo_SecurityContext proto.InternalMessageInfo
     func (m *SerializedReference) Reset()      { *m = SerializedReference{} }
     func (*SerializedReference) ProtoMessage() {}
     func (*SerializedReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{189}
    +	return fileDescriptor_6c07b07c062484ab, []int{196}
     }
     func (m *SerializedReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5372,7 +5568,7 @@ var xxx_messageInfo_SerializedReference proto.InternalMessageInfo
     func (m *Service) Reset()      { *m = Service{} }
     func (*Service) ProtoMessage() {}
     func (*Service) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{190}
    +	return fileDescriptor_6c07b07c062484ab, []int{197}
     }
     func (m *Service) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5400,7 +5596,7 @@ var xxx_messageInfo_Service proto.InternalMessageInfo
     func (m *ServiceAccount) Reset()      { *m = ServiceAccount{} }
     func (*ServiceAccount) ProtoMessage() {}
     func (*ServiceAccount) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{191}
    +	return fileDescriptor_6c07b07c062484ab, []int{198}
     }
     func (m *ServiceAccount) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5428,7 +5624,7 @@ var xxx_messageInfo_ServiceAccount proto.InternalMessageInfo
     func (m *ServiceAccountList) Reset()      { *m = ServiceAccountList{} }
     func (*ServiceAccountList) ProtoMessage() {}
     func (*ServiceAccountList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{192}
    +	return fileDescriptor_6c07b07c062484ab, []int{199}
     }
     func (m *ServiceAccountList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5456,7 +5652,7 @@ var xxx_messageInfo_ServiceAccountList proto.InternalMessageInfo
     func (m *ServiceAccountTokenProjection) Reset()      { *m = ServiceAccountTokenProjection{} }
     func (*ServiceAccountTokenProjection) ProtoMessage() {}
     func (*ServiceAccountTokenProjection) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{193}
    +	return fileDescriptor_6c07b07c062484ab, []int{200}
     }
     func (m *ServiceAccountTokenProjection) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5484,7 +5680,7 @@ var xxx_messageInfo_ServiceAccountTokenProjection proto.InternalMessageInfo
     func (m *ServiceList) Reset()      { *m = ServiceList{} }
     func (*ServiceList) ProtoMessage() {}
     func (*ServiceList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{194}
    +	return fileDescriptor_6c07b07c062484ab, []int{201}
     }
     func (m *ServiceList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5512,7 +5708,7 @@ var xxx_messageInfo_ServiceList proto.InternalMessageInfo
     func (m *ServicePort) Reset()      { *m = ServicePort{} }
     func (*ServicePort) ProtoMessage() {}
     func (*ServicePort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{195}
    +	return fileDescriptor_6c07b07c062484ab, []int{202}
     }
     func (m *ServicePort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5540,7 +5736,7 @@ var xxx_messageInfo_ServicePort proto.InternalMessageInfo
     func (m *ServiceProxyOptions) Reset()      { *m = ServiceProxyOptions{} }
     func (*ServiceProxyOptions) ProtoMessage() {}
     func (*ServiceProxyOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{196}
    +	return fileDescriptor_6c07b07c062484ab, []int{203}
     }
     func (m *ServiceProxyOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5568,7 +5764,7 @@ var xxx_messageInfo_ServiceProxyOptions proto.InternalMessageInfo
     func (m *ServiceSpec) Reset()      { *m = ServiceSpec{} }
     func (*ServiceSpec) ProtoMessage() {}
     func (*ServiceSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{197}
    +	return fileDescriptor_6c07b07c062484ab, []int{204}
     }
     func (m *ServiceSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5596,7 +5792,7 @@ var xxx_messageInfo_ServiceSpec proto.InternalMessageInfo
     func (m *ServiceStatus) Reset()      { *m = ServiceStatus{} }
     func (*ServiceStatus) ProtoMessage() {}
     func (*ServiceStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{198}
    +	return fileDescriptor_6c07b07c062484ab, []int{205}
     }
     func (m *ServiceStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5624,7 +5820,7 @@ var xxx_messageInfo_ServiceStatus proto.InternalMessageInfo
     func (m *SessionAffinityConfig) Reset()      { *m = SessionAffinityConfig{} }
     func (*SessionAffinityConfig) ProtoMessage() {}
     func (*SessionAffinityConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{199}
    +	return fileDescriptor_6c07b07c062484ab, []int{206}
     }
     func (m *SessionAffinityConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5652,7 +5848,7 @@ var xxx_messageInfo_SessionAffinityConfig proto.InternalMessageInfo
     func (m *SleepAction) Reset()      { *m = SleepAction{} }
     func (*SleepAction) ProtoMessage() {}
     func (*SleepAction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{200}
    +	return fileDescriptor_6c07b07c062484ab, []int{207}
     }
     func (m *SleepAction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5680,7 +5876,7 @@ var xxx_messageInfo_SleepAction proto.InternalMessageInfo
     func (m *StorageOSPersistentVolumeSource) Reset()      { *m = StorageOSPersistentVolumeSource{} }
     func (*StorageOSPersistentVolumeSource) ProtoMessage() {}
     func (*StorageOSPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{201}
    +	return fileDescriptor_6c07b07c062484ab, []int{208}
     }
     func (m *StorageOSPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5708,7 +5904,7 @@ var xxx_messageInfo_StorageOSPersistentVolumeSource proto.InternalMessageInfo
     func (m *StorageOSVolumeSource) Reset()      { *m = StorageOSVolumeSource{} }
     func (*StorageOSVolumeSource) ProtoMessage() {}
     func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{202}
    +	return fileDescriptor_6c07b07c062484ab, []int{209}
     }
     func (m *StorageOSVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5736,7 +5932,7 @@ var xxx_messageInfo_StorageOSVolumeSource proto.InternalMessageInfo
     func (m *Sysctl) Reset()      { *m = Sysctl{} }
     func (*Sysctl) ProtoMessage() {}
     func (*Sysctl) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{203}
    +	return fileDescriptor_6c07b07c062484ab, []int{210}
     }
     func (m *Sysctl) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5764,7 +5960,7 @@ var xxx_messageInfo_Sysctl proto.InternalMessageInfo
     func (m *TCPSocketAction) Reset()      { *m = TCPSocketAction{} }
     func (*TCPSocketAction) ProtoMessage() {}
     func (*TCPSocketAction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{204}
    +	return fileDescriptor_6c07b07c062484ab, []int{211}
     }
     func (m *TCPSocketAction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5792,7 +5988,7 @@ var xxx_messageInfo_TCPSocketAction proto.InternalMessageInfo
     func (m *Taint) Reset()      { *m = Taint{} }
     func (*Taint) ProtoMessage() {}
     func (*Taint) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{205}
    +	return fileDescriptor_6c07b07c062484ab, []int{212}
     }
     func (m *Taint) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5820,7 +6016,7 @@ var xxx_messageInfo_Taint proto.InternalMessageInfo
     func (m *Toleration) Reset()      { *m = Toleration{} }
     func (*Toleration) ProtoMessage() {}
     func (*Toleration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{206}
    +	return fileDescriptor_6c07b07c062484ab, []int{213}
     }
     func (m *Toleration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5848,7 +6044,7 @@ var xxx_messageInfo_Toleration proto.InternalMessageInfo
     func (m *TopologySelectorLabelRequirement) Reset()      { *m = TopologySelectorLabelRequirement{} }
     func (*TopologySelectorLabelRequirement) ProtoMessage() {}
     func (*TopologySelectorLabelRequirement) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{207}
    +	return fileDescriptor_6c07b07c062484ab, []int{214}
     }
     func (m *TopologySelectorLabelRequirement) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5876,7 +6072,7 @@ var xxx_messageInfo_TopologySelectorLabelRequirement proto.InternalMessageInfo
     func (m *TopologySelectorTerm) Reset()      { *m = TopologySelectorTerm{} }
     func (*TopologySelectorTerm) ProtoMessage() {}
     func (*TopologySelectorTerm) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{208}
    +	return fileDescriptor_6c07b07c062484ab, []int{215}
     }
     func (m *TopologySelectorTerm) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5904,7 +6100,7 @@ var xxx_messageInfo_TopologySelectorTerm proto.InternalMessageInfo
     func (m *TopologySpreadConstraint) Reset()      { *m = TopologySpreadConstraint{} }
     func (*TopologySpreadConstraint) ProtoMessage() {}
     func (*TopologySpreadConstraint) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{209}
    +	return fileDescriptor_6c07b07c062484ab, []int{216}
     }
     func (m *TopologySpreadConstraint) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5932,7 +6128,7 @@ var xxx_messageInfo_TopologySpreadConstraint proto.InternalMessageInfo
     func (m *TypedLocalObjectReference) Reset()      { *m = TypedLocalObjectReference{} }
     func (*TypedLocalObjectReference) ProtoMessage() {}
     func (*TypedLocalObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{210}
    +	return fileDescriptor_6c07b07c062484ab, []int{217}
     }
     func (m *TypedLocalObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5960,7 +6156,7 @@ var xxx_messageInfo_TypedLocalObjectReference proto.InternalMessageInfo
     func (m *TypedObjectReference) Reset()      { *m = TypedObjectReference{} }
     func (*TypedObjectReference) ProtoMessage() {}
     func (*TypedObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{211}
    +	return fileDescriptor_6c07b07c062484ab, []int{218}
     }
     func (m *TypedObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5988,7 +6184,7 @@ var xxx_messageInfo_TypedObjectReference proto.InternalMessageInfo
     func (m *Volume) Reset()      { *m = Volume{} }
     func (*Volume) ProtoMessage() {}
     func (*Volume) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{212}
    +	return fileDescriptor_6c07b07c062484ab, []int{219}
     }
     func (m *Volume) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6016,7 +6212,7 @@ var xxx_messageInfo_Volume proto.InternalMessageInfo
     func (m *VolumeDevice) Reset()      { *m = VolumeDevice{} }
     func (*VolumeDevice) ProtoMessage() {}
     func (*VolumeDevice) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{213}
    +	return fileDescriptor_6c07b07c062484ab, []int{220}
     }
     func (m *VolumeDevice) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6044,7 +6240,7 @@ var xxx_messageInfo_VolumeDevice proto.InternalMessageInfo
     func (m *VolumeMount) Reset()      { *m = VolumeMount{} }
     func (*VolumeMount) ProtoMessage() {}
     func (*VolumeMount) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{214}
    +	return fileDescriptor_6c07b07c062484ab, []int{221}
     }
     func (m *VolumeMount) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6069,10 +6265,38 @@ func (m *VolumeMount) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_VolumeMount proto.InternalMessageInfo
     
    +func (m *VolumeMountStatus) Reset()      { *m = VolumeMountStatus{} }
    +func (*VolumeMountStatus) ProtoMessage() {}
    +func (*VolumeMountStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{222}
    +}
    +func (m *VolumeMountStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *VolumeMountStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *VolumeMountStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_VolumeMountStatus.Merge(m, src)
    +}
    +func (m *VolumeMountStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *VolumeMountStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_VolumeMountStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_VolumeMountStatus proto.InternalMessageInfo
    +
     func (m *VolumeNodeAffinity) Reset()      { *m = VolumeNodeAffinity{} }
     func (*VolumeNodeAffinity) ProtoMessage() {}
     func (*VolumeNodeAffinity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{215}
    +	return fileDescriptor_6c07b07c062484ab, []int{223}
     }
     func (m *VolumeNodeAffinity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6100,7 +6324,7 @@ var xxx_messageInfo_VolumeNodeAffinity proto.InternalMessageInfo
     func (m *VolumeProjection) Reset()      { *m = VolumeProjection{} }
     func (*VolumeProjection) ProtoMessage() {}
     func (*VolumeProjection) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{216}
    +	return fileDescriptor_6c07b07c062484ab, []int{224}
     }
     func (m *VolumeProjection) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6128,7 +6352,7 @@ var xxx_messageInfo_VolumeProjection proto.InternalMessageInfo
     func (m *VolumeResourceRequirements) Reset()      { *m = VolumeResourceRequirements{} }
     func (*VolumeResourceRequirements) ProtoMessage() {}
     func (*VolumeResourceRequirements) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{217}
    +	return fileDescriptor_6c07b07c062484ab, []int{225}
     }
     func (m *VolumeResourceRequirements) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6156,7 +6380,7 @@ var xxx_messageInfo_VolumeResourceRequirements proto.InternalMessageInfo
     func (m *VolumeSource) Reset()      { *m = VolumeSource{} }
     func (*VolumeSource) ProtoMessage() {}
     func (*VolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{218}
    +	return fileDescriptor_6c07b07c062484ab, []int{226}
     }
     func (m *VolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6184,7 +6408,7 @@ var xxx_messageInfo_VolumeSource proto.InternalMessageInfo
     func (m *VsphereVirtualDiskVolumeSource) Reset()      { *m = VsphereVirtualDiskVolumeSource{} }
     func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {}
     func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{219}
    +	return fileDescriptor_6c07b07c062484ab, []int{227}
     }
     func (m *VsphereVirtualDiskVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6212,7 +6436,7 @@ var xxx_messageInfo_VsphereVirtualDiskVolumeSource proto.InternalMessageInfo
     func (m *WeightedPodAffinityTerm) Reset()      { *m = WeightedPodAffinityTerm{} }
     func (*WeightedPodAffinityTerm) ProtoMessage() {}
     func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{220}
    +	return fileDescriptor_6c07b07c062484ab, []int{228}
     }
     func (m *WeightedPodAffinityTerm) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6240,7 +6464,7 @@ var xxx_messageInfo_WeightedPodAffinityTerm proto.InternalMessageInfo
     func (m *WindowsSecurityContextOptions) Reset()      { *m = WindowsSecurityContextOptions{} }
     func (*WindowsSecurityContextOptions) ProtoMessage() {}
     func (*WindowsSecurityContextOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_83c10c24ec417dc9, []int{221}
    +	return fileDescriptor_6c07b07c062484ab, []int{229}
     }
     func (m *WindowsSecurityContextOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6268,6 +6492,7 @@ var xxx_messageInfo_WindowsSecurityContextOptions proto.InternalMessageInfo
     func init() {
     	proto.RegisterType((*AWSElasticBlockStoreVolumeSource)(nil), "k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource")
     	proto.RegisterType((*Affinity)(nil), "k8s.io.api.core.v1.Affinity")
    +	proto.RegisterType((*AppArmorProfile)(nil), "k8s.io.api.core.v1.AppArmorProfile")
     	proto.RegisterType((*AttachedVolume)(nil), "k8s.io.api.core.v1.AttachedVolume")
     	proto.RegisterType((*AvoidPods)(nil), "k8s.io.api.core.v1.AvoidPods")
     	proto.RegisterType((*AzureDiskVolumeSource)(nil), "k8s.io.api.core.v1.AzureDiskVolumeSource")
    @@ -6283,7 +6508,6 @@ func init() {
     	proto.RegisterType((*CephFSVolumeSource)(nil), "k8s.io.api.core.v1.CephFSVolumeSource")
     	proto.RegisterType((*CinderPersistentVolumeSource)(nil), "k8s.io.api.core.v1.CinderPersistentVolumeSource")
     	proto.RegisterType((*CinderVolumeSource)(nil), "k8s.io.api.core.v1.CinderVolumeSource")
    -	proto.RegisterType((*ClaimSource)(nil), "k8s.io.api.core.v1.ClaimSource")
     	proto.RegisterType((*ClientIPConfig)(nil), "k8s.io.api.core.v1.ClientIPConfig")
     	proto.RegisterType((*ClusterTrustBundleProjection)(nil), "k8s.io.api.core.v1.ClusterTrustBundleProjection")
     	proto.RegisterType((*ComponentCondition)(nil), "k8s.io.api.core.v1.ComponentCondition")
    @@ -6308,6 +6532,7 @@ func init() {
     	proto.RegisterType((*ContainerStateWaiting)(nil), "k8s.io.api.core.v1.ContainerStateWaiting")
     	proto.RegisterType((*ContainerStatus)(nil), "k8s.io.api.core.v1.ContainerStatus")
     	proto.RegisterMapType((ResourceList)(nil), "k8s.io.api.core.v1.ContainerStatus.AllocatedResourcesEntry")
    +	proto.RegisterType((*ContainerUser)(nil), "k8s.io.api.core.v1.ContainerUser")
     	proto.RegisterType((*DaemonEndpoint)(nil), "k8s.io.api.core.v1.DaemonEndpoint")
     	proto.RegisterType((*DownwardAPIProjection)(nil), "k8s.io.api.core.v1.DownwardAPIProjection")
     	proto.RegisterType((*DownwardAPIVolumeFile)(nil), "k8s.io.api.core.v1.DownwardAPIVolumeFile")
    @@ -6347,6 +6572,7 @@ func init() {
     	proto.RegisterType((*HostPathVolumeSource)(nil), "k8s.io.api.core.v1.HostPathVolumeSource")
     	proto.RegisterType((*ISCSIPersistentVolumeSource)(nil), "k8s.io.api.core.v1.ISCSIPersistentVolumeSource")
     	proto.RegisterType((*ISCSIVolumeSource)(nil), "k8s.io.api.core.v1.ISCSIVolumeSource")
    +	proto.RegisterType((*ImageVolumeSource)(nil), "k8s.io.api.core.v1.ImageVolumeSource")
     	proto.RegisterType((*KeyToPath)(nil), "k8s.io.api.core.v1.KeyToPath")
     	proto.RegisterType((*Lifecycle)(nil), "k8s.io.api.core.v1.Lifecycle")
     	proto.RegisterType((*LifecycleHandler)(nil), "k8s.io.api.core.v1.LifecycleHandler")
    @@ -6359,6 +6585,7 @@ func init() {
     	proto.RegisterMapType((ResourceList)(nil), "k8s.io.api.core.v1.LimitRangeItem.MinEntry")
     	proto.RegisterType((*LimitRangeList)(nil), "k8s.io.api.core.v1.LimitRangeList")
     	proto.RegisterType((*LimitRangeSpec)(nil), "k8s.io.api.core.v1.LimitRangeSpec")
    +	proto.RegisterType((*LinuxContainerUser)(nil), "k8s.io.api.core.v1.LinuxContainerUser")
     	proto.RegisterType((*List)(nil), "k8s.io.api.core.v1.List")
     	proto.RegisterType((*LoadBalancerIngress)(nil), "k8s.io.api.core.v1.LoadBalancerIngress")
     	proto.RegisterType((*LoadBalancerStatus)(nil), "k8s.io.api.core.v1.LoadBalancerStatus")
    @@ -6378,10 +6605,11 @@ func init() {
     	proto.RegisterType((*NodeConfigSource)(nil), "k8s.io.api.core.v1.NodeConfigSource")
     	proto.RegisterType((*NodeConfigStatus)(nil), "k8s.io.api.core.v1.NodeConfigStatus")
     	proto.RegisterType((*NodeDaemonEndpoints)(nil), "k8s.io.api.core.v1.NodeDaemonEndpoints")
    +	proto.RegisterType((*NodeFeatures)(nil), "k8s.io.api.core.v1.NodeFeatures")
     	proto.RegisterType((*NodeList)(nil), "k8s.io.api.core.v1.NodeList")
     	proto.RegisterType((*NodeProxyOptions)(nil), "k8s.io.api.core.v1.NodeProxyOptions")
    -	proto.RegisterType((*NodeResources)(nil), "k8s.io.api.core.v1.NodeResources")
    -	proto.RegisterMapType((ResourceList)(nil), "k8s.io.api.core.v1.NodeResources.CapacityEntry")
    +	proto.RegisterType((*NodeRuntimeHandler)(nil), "k8s.io.api.core.v1.NodeRuntimeHandler")
    +	proto.RegisterType((*NodeRuntimeHandlerFeatures)(nil), "k8s.io.api.core.v1.NodeRuntimeHandlerFeatures")
     	proto.RegisterType((*NodeSelector)(nil), "k8s.io.api.core.v1.NodeSelector")
     	proto.RegisterType((*NodeSelectorRequirement)(nil), "k8s.io.api.core.v1.NodeSelectorRequirement")
     	proto.RegisterType((*NodeSelectorTerm)(nil), "k8s.io.api.core.v1.NodeSelectorTerm")
    @@ -6458,6 +6686,7 @@ func init() {
     	proto.RegisterType((*ReplicationControllerStatus)(nil), "k8s.io.api.core.v1.ReplicationControllerStatus")
     	proto.RegisterType((*ResourceClaim)(nil), "k8s.io.api.core.v1.ResourceClaim")
     	proto.RegisterType((*ResourceFieldSelector)(nil), "k8s.io.api.core.v1.ResourceFieldSelector")
    +	proto.RegisterType((*ResourceHealth)(nil), "k8s.io.api.core.v1.ResourceHealth")
     	proto.RegisterType((*ResourceQuota)(nil), "k8s.io.api.core.v1.ResourceQuota")
     	proto.RegisterType((*ResourceQuotaList)(nil), "k8s.io.api.core.v1.ResourceQuotaList")
     	proto.RegisterType((*ResourceQuotaSpec)(nil), "k8s.io.api.core.v1.ResourceQuotaSpec")
    @@ -6468,6 +6697,7 @@ func init() {
     	proto.RegisterType((*ResourceRequirements)(nil), "k8s.io.api.core.v1.ResourceRequirements")
     	proto.RegisterMapType((ResourceList)(nil), "k8s.io.api.core.v1.ResourceRequirements.LimitsEntry")
     	proto.RegisterMapType((ResourceList)(nil), "k8s.io.api.core.v1.ResourceRequirements.RequestsEntry")
    +	proto.RegisterType((*ResourceStatus)(nil), "k8s.io.api.core.v1.ResourceStatus")
     	proto.RegisterType((*SELinuxOptions)(nil), "k8s.io.api.core.v1.SELinuxOptions")
     	proto.RegisterType((*ScaleIOPersistentVolumeSource)(nil), "k8s.io.api.core.v1.ScaleIOPersistentVolumeSource")
     	proto.RegisterType((*ScaleIOVolumeSource)(nil), "k8s.io.api.core.v1.ScaleIOVolumeSource")
    @@ -6511,6 +6741,7 @@ func init() {
     	proto.RegisterType((*Volume)(nil), "k8s.io.api.core.v1.Volume")
     	proto.RegisterType((*VolumeDevice)(nil), "k8s.io.api.core.v1.VolumeDevice")
     	proto.RegisterType((*VolumeMount)(nil), "k8s.io.api.core.v1.VolumeMount")
    +	proto.RegisterType((*VolumeMountStatus)(nil), "k8s.io.api.core.v1.VolumeMountStatus")
     	proto.RegisterType((*VolumeNodeAffinity)(nil), "k8s.io.api.core.v1.VolumeNodeAffinity")
     	proto.RegisterType((*VolumeProjection)(nil), "k8s.io.api.core.v1.VolumeProjection")
     	proto.RegisterType((*VolumeResourceRequirements)(nil), "k8s.io.api.core.v1.VolumeResourceRequirements")
    @@ -6523,978 +6754,1019 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/core/v1/generated.proto", fileDescriptor_83c10c24ec417dc9)
    -}
    -
    -var fileDescriptor_83c10c24ec417dc9 = []byte{
    -	// 15465 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x69, 0x90, 0x1c, 0xc9,
    -	0x75, 0x18, 0xcc, 0xea, 0x9e, 0xab, 0xdf, 0xdc, 0x39, 0x00, 0x76, 0x30, 0x0b, 0xa0, 0xb1, 0xb5,
    -	0xbb, 0x58, 0xec, 0x35, 0x20, 0xf6, 0x20, 0x97, 0xbb, 0xcb, 0x15, 0xe7, 0x04, 0x66, 0x31, 0x33,
    -	0xe8, 0xcd, 0x1e, 0x00, 0xe4, 0x72, 0xc9, 0x8f, 0x85, 0xee, 0x9c, 0x99, 0xe2, 0x74, 0x57, 0xf5,
    -	0x56, 0x55, 0x0f, 0x30, 0xf8, 0xc8, 0x90, 0x44, 0x7d, 0xa2, 0x44, 0x4a, 0x5f, 0x04, 0xe3, 0x0b,
    -	0x7d, 0x47, 0x50, 0x0a, 0xc5, 0x17, 0x92, 0xac, 0xc3, 0xb4, 0x64, 0xd3, 0x94, 0x25, 0x59, 0xd4,
    -	0xe5, 0x2b, 0x2c, 0x29, 0x1c, 0xb2, 0xac, 0x08, 0x8b, 0x0a, 0x2b, 0x3c, 0x32, 0x21, 0x47, 0x28,
    -	0xf4, 0xc3, 0x92, 0x7c, 0xfc, 0xb0, 0x61, 0xd9, 0x72, 0xe4, 0x59, 0x99, 0x75, 0x74, 0xf7, 0x60,
    -	0x07, 0xc3, 0x25, 0x63, 0xff, 0x75, 0xbf, 0xf7, 0xf2, 0x65, 0x56, 0x9e, 0x2f, 0xdf, 0x7b, 0xf9,
    -	0x1e, 0xbc, 0xb2, 0xf3, 0x52, 0x38, 0xeb, 0xfa, 0x17, 0x76, 0xda, 0x37, 0x49, 0xe0, 0x91, 0x88,
    -	0x84, 0x17, 0x76, 0x89, 0x57, 0xf7, 0x83, 0x0b, 0x02, 0xe1, 0xb4, 0xdc, 0x0b, 0x35, 0x3f, 0x20,
    -	0x17, 0x76, 0x2f, 0x5e, 0xd8, 0x22, 0x1e, 0x09, 0x9c, 0x88, 0xd4, 0x67, 0x5b, 0x81, 0x1f, 0xf9,
    -	0x08, 0x71, 0x9a, 0x59, 0xa7, 0xe5, 0xce, 0x52, 0x9a, 0xd9, 0xdd, 0x8b, 0x33, 0xcf, 0x6e, 0xb9,
    -	0xd1, 0x76, 0xfb, 0xe6, 0x6c, 0xcd, 0x6f, 0x5e, 0xd8, 0xf2, 0xb7, 0xfc, 0x0b, 0x8c, 0xf4, 0x66,
    -	0x7b, 0x93, 0xfd, 0x63, 0x7f, 0xd8, 0x2f, 0xce, 0x62, 0xe6, 0x85, 0xb8, 0x9a, 0xa6, 0x53, 0xdb,
    -	0x76, 0x3d, 0x12, 0xec, 0x5d, 0x68, 0xed, 0x6c, 0xb1, 0x7a, 0x03, 0x12, 0xfa, 0xed, 0xa0, 0x46,
    -	0x92, 0x15, 0x77, 0x2c, 0x15, 0x5e, 0x68, 0x92, 0xc8, 0xc9, 0x68, 0xee, 0xcc, 0x85, 0xbc, 0x52,
    -	0x41, 0xdb, 0x8b, 0xdc, 0x66, 0xba, 0x9a, 0x0f, 0x74, 0x2b, 0x10, 0xd6, 0xb6, 0x49, 0xd3, 0x49,
    -	0x95, 0x7b, 0x3e, 0xaf, 0x5c, 0x3b, 0x72, 0x1b, 0x17, 0x5c, 0x2f, 0x0a, 0xa3, 0x20, 0x59, 0xc8,
    -	0xfe, 0x86, 0x05, 0x67, 0xe7, 0x6e, 0x54, 0x97, 0x1a, 0x4e, 0x18, 0xb9, 0xb5, 0xf9, 0x86, 0x5f,
    -	0xdb, 0xa9, 0x46, 0x7e, 0x40, 0xae, 0xfb, 0x8d, 0x76, 0x93, 0x54, 0x59, 0x47, 0xa0, 0x67, 0x60,
    -	0x68, 0x97, 0xfd, 0x5f, 0x59, 0x9c, 0xb6, 0xce, 0x5a, 0xe7, 0x4b, 0xf3, 0x13, 0xbf, 0xbd, 0x5f,
    -	0x7e, 0xdf, 0xdd, 0xfd, 0xf2, 0xd0, 0x75, 0x01, 0xc7, 0x8a, 0x02, 0x9d, 0x83, 0x81, 0xcd, 0x70,
    -	0x63, 0xaf, 0x45, 0xa6, 0x0b, 0x8c, 0x76, 0x4c, 0xd0, 0x0e, 0x2c, 0x57, 0x29, 0x14, 0x0b, 0x2c,
    -	0xba, 0x00, 0xa5, 0x96, 0x13, 0x44, 0x6e, 0xe4, 0xfa, 0xde, 0x74, 0xf1, 0xac, 0x75, 0xbe, 0x7f,
    -	0x7e, 0x52, 0x90, 0x96, 0x2a, 0x12, 0x81, 0x63, 0x1a, 0xda, 0x8c, 0x80, 0x38, 0xf5, 0xab, 0x5e,
    -	0x63, 0x6f, 0xba, 0xef, 0xac, 0x75, 0x7e, 0x28, 0x6e, 0x06, 0x16, 0x70, 0xac, 0x28, 0xec, 0x2f,
    -	0x17, 0x60, 0x68, 0x6e, 0x73, 0xd3, 0xf5, 0xdc, 0x68, 0x0f, 0x5d, 0x87, 0x11, 0xcf, 0xaf, 0x13,
    -	0xf9, 0x9f, 0x7d, 0xc5, 0xf0, 0x73, 0x67, 0x67, 0xd3, 0x53, 0x69, 0x76, 0x5d, 0xa3, 0x9b, 0x9f,
    -	0xb8, 0xbb, 0x5f, 0x1e, 0xd1, 0x21, 0xd8, 0xe0, 0x83, 0x30, 0x0c, 0xb7, 0xfc, 0xba, 0x62, 0x5b,
    -	0x60, 0x6c, 0xcb, 0x59, 0x6c, 0x2b, 0x31, 0xd9, 0xfc, 0xf8, 0xdd, 0xfd, 0xf2, 0xb0, 0x06, 0xc0,
    -	0x3a, 0x13, 0x74, 0x13, 0xc6, 0xe9, 0x5f, 0x2f, 0x72, 0x15, 0xdf, 0x22, 0xe3, 0xfb, 0x68, 0x1e,
    -	0x5f, 0x8d, 0x74, 0x7e, 0xea, 0xee, 0x7e, 0x79, 0x3c, 0x01, 0xc4, 0x49, 0x86, 0xf6, 0x1d, 0x18,
    -	0x9b, 0x8b, 0x22, 0xa7, 0xb6, 0x4d, 0xea, 0x7c, 0x04, 0xd1, 0x0b, 0xd0, 0xe7, 0x39, 0x4d, 0x22,
    -	0xc6, 0xf7, 0xac, 0xe8, 0xd8, 0xbe, 0x75, 0xa7, 0x49, 0xee, 0xed, 0x97, 0x27, 0xae, 0x79, 0xee,
    -	0xdb, 0x6d, 0x31, 0x2b, 0x28, 0x0c, 0x33, 0x6a, 0xf4, 0x1c, 0x40, 0x9d, 0xec, 0xba, 0x35, 0x52,
    -	0x71, 0xa2, 0x6d, 0x31, 0xde, 0x48, 0x94, 0x85, 0x45, 0x85, 0xc1, 0x1a, 0x95, 0x7d, 0x1b, 0x4a,
    -	0x73, 0xbb, 0xbe, 0x5b, 0xaf, 0xf8, 0xf5, 0x10, 0xed, 0xc0, 0x78, 0x2b, 0x20, 0x9b, 0x24, 0x50,
    -	0xa0, 0x69, 0xeb, 0x6c, 0xf1, 0xfc, 0xf0, 0x73, 0xe7, 0x33, 0x3f, 0xd6, 0x24, 0x5d, 0xf2, 0xa2,
    -	0x60, 0x6f, 0xfe, 0x21, 0x51, 0xdf, 0x78, 0x02, 0x8b, 0x93, 0x9c, 0xed, 0x7f, 0x5a, 0x80, 0xe3,
    -	0x73, 0x77, 0xda, 0x01, 0x59, 0x74, 0xc3, 0x9d, 0xe4, 0x0c, 0xaf, 0xbb, 0xe1, 0xce, 0x7a, 0xdc,
    -	0x03, 0x6a, 0x6a, 0x2d, 0x0a, 0x38, 0x56, 0x14, 0xe8, 0x59, 0x18, 0xa4, 0xbf, 0xaf, 0xe1, 0x15,
    -	0xf1, 0xc9, 0x53, 0x82, 0x78, 0x78, 0xd1, 0x89, 0x9c, 0x45, 0x8e, 0xc2, 0x92, 0x06, 0xad, 0xc1,
    -	0x70, 0x8d, 0x2d, 0xc8, 0xad, 0x35, 0xbf, 0x4e, 0xd8, 0x60, 0x96, 0xe6, 0x9f, 0xa6, 0xe4, 0x0b,
    -	0x31, 0xf8, 0xde, 0x7e, 0x79, 0x9a, 0xb7, 0x4d, 0xb0, 0xd0, 0x70, 0x58, 0x2f, 0x8f, 0x6c, 0xb5,
    -	0xbe, 0xfa, 0x18, 0x27, 0xc8, 0x58, 0x5b, 0xe7, 0xb5, 0xa5, 0xd2, 0xcf, 0x96, 0xca, 0x48, 0xf6,
    -	0x32, 0x41, 0x17, 0xa1, 0x6f, 0xc7, 0xf5, 0xea, 0xd3, 0x03, 0x8c, 0xd7, 0x69, 0x3a, 0xe6, 0x57,
    -	0x5c, 0xaf, 0x7e, 0x6f, 0xbf, 0x3c, 0x69, 0x34, 0x87, 0x02, 0x31, 0x23, 0xb5, 0xff, 0xb3, 0x05,
    -	0x65, 0x86, 0x5b, 0x76, 0x1b, 0xa4, 0x42, 0x82, 0xd0, 0x0d, 0x23, 0xe2, 0x45, 0x46, 0x87, 0x3e,
    -	0x07, 0x10, 0x92, 0x5a, 0x40, 0x22, 0xad, 0x4b, 0xd5, 0xc4, 0xa8, 0x2a, 0x0c, 0xd6, 0xa8, 0xe8,
    -	0x86, 0x10, 0x6e, 0x3b, 0x01, 0x9b, 0x5f, 0xa2, 0x63, 0xd5, 0x86, 0x50, 0x95, 0x08, 0x1c, 0xd3,
    -	0x18, 0x1b, 0x42, 0xb1, 0xdb, 0x86, 0x80, 0x3e, 0x0c, 0xe3, 0x71, 0x65, 0x61, 0xcb, 0xa9, 0xc9,
    -	0x0e, 0x64, 0x4b, 0xa6, 0x6a, 0xa2, 0x70, 0x92, 0xd6, 0xfe, 0xdb, 0x96, 0x98, 0x3c, 0xf4, 0xab,
    -	0xdf, 0xe5, 0xdf, 0x6a, 0xff, 0x8a, 0x05, 0x83, 0xf3, 0xae, 0x57, 0x77, 0xbd, 0x2d, 0xf4, 0x29,
    -	0x18, 0xa2, 0x67, 0x53, 0xdd, 0x89, 0x1c, 0xb1, 0xef, 0xbd, 0x5f, 0x5b, 0x5b, 0xea, 0xa8, 0x98,
    -	0x6d, 0xed, 0x6c, 0x51, 0x40, 0x38, 0x4b, 0xa9, 0xe9, 0x6a, 0xbb, 0x7a, 0xf3, 0xd3, 0xa4, 0x16,
    -	0xad, 0x91, 0xc8, 0x89, 0x3f, 0x27, 0x86, 0x61, 0xc5, 0x15, 0x5d, 0x81, 0x81, 0xc8, 0x09, 0xb6,
    -	0x48, 0x24, 0x36, 0xc0, 0xcc, 0x8d, 0x8a, 0x97, 0xc4, 0x74, 0x45, 0x12, 0xaf, 0x46, 0xe2, 0x63,
    -	0x61, 0x83, 0x15, 0xc5, 0x82, 0x85, 0xfd, 0x3f, 0x06, 0xe1, 0xe4, 0x42, 0x75, 0x25, 0x67, 0x5e,
    -	0x9d, 0x83, 0x81, 0x7a, 0xe0, 0xee, 0x92, 0x40, 0xf4, 0xb3, 0xe2, 0xb2, 0xc8, 0xa0, 0x58, 0x60,
    -	0xd1, 0x4b, 0x30, 0xc2, 0x0f, 0xa4, 0xcb, 0x8e, 0x57, 0x6f, 0xc8, 0x2e, 0x3e, 0x26, 0xa8, 0x47,
    -	0xae, 0x6b, 0x38, 0x6c, 0x50, 0x1e, 0x70, 0x52, 0x9d, 0x4b, 0x2c, 0xc6, 0xbc, 0xc3, 0xee, 0x0b,
    -	0x16, 0x4c, 0xf0, 0x6a, 0xe6, 0xa2, 0x28, 0x70, 0x6f, 0xb6, 0x23, 0x12, 0x4e, 0xf7, 0xb3, 0x9d,
    -	0x6e, 0x21, 0xab, 0xb7, 0x72, 0x7b, 0x60, 0xf6, 0x7a, 0x82, 0x0b, 0xdf, 0x04, 0xa7, 0x45, 0xbd,
    -	0x13, 0x49, 0x34, 0x4e, 0x55, 0x8b, 0xbe, 0xcf, 0x82, 0x99, 0x9a, 0xef, 0x45, 0x81, 0xdf, 0x68,
    -	0x90, 0xa0, 0xd2, 0xbe, 0xd9, 0x70, 0xc3, 0x6d, 0x3e, 0x4f, 0x31, 0xd9, 0x64, 0x3b, 0x41, 0xce,
    -	0x18, 0x2a, 0x22, 0x31, 0x86, 0x67, 0xee, 0xee, 0x97, 0x67, 0x16, 0x72, 0x59, 0xe1, 0x0e, 0xd5,
    -	0xa0, 0x1d, 0x40, 0xf4, 0x28, 0xad, 0x46, 0xce, 0x16, 0x89, 0x2b, 0x1f, 0xec, 0xbd, 0xf2, 0x13,
    -	0x77, 0xf7, 0xcb, 0x68, 0x3d, 0xc5, 0x02, 0x67, 0xb0, 0x45, 0x6f, 0xc3, 0x31, 0x0a, 0x4d, 0x7d,
    -	0xeb, 0x50, 0xef, 0xd5, 0x4d, 0xdf, 0xdd, 0x2f, 0x1f, 0x5b, 0xcf, 0x60, 0x82, 0x33, 0x59, 0xa3,
    -	0xef, 0xb1, 0xe0, 0x64, 0xfc, 0xf9, 0x4b, 0xb7, 0x5b, 0x8e, 0x57, 0x8f, 0x2b, 0x2e, 0xf5, 0x5e,
    -	0x31, 0xdd, 0x93, 0x4f, 0x2e, 0xe4, 0x71, 0xc2, 0xf9, 0x95, 0x20, 0x0f, 0xa6, 0x68, 0xd3, 0x92,
    -	0x75, 0x43, 0xef, 0x75, 0x3f, 0x74, 0x77, 0xbf, 0x3c, 0xb5, 0x9e, 0xe6, 0x81, 0xb3, 0x18, 0xcf,
    -	0x2c, 0xc0, 0xf1, 0xcc, 0xd9, 0x89, 0x26, 0xa0, 0xb8, 0x43, 0xb8, 0xd4, 0x55, 0xc2, 0xf4, 0x27,
    -	0x3a, 0x06, 0xfd, 0xbb, 0x4e, 0xa3, 0x2d, 0x16, 0x26, 0xe6, 0x7f, 0x5e, 0x2e, 0xbc, 0x64, 0xd9,
    -	0xff, 0xac, 0x08, 0xe3, 0x0b, 0xd5, 0x95, 0xfb, 0x5a, 0xf5, 0xfa, 0xb1, 0x57, 0xe8, 0x78, 0xec,
    -	0xc5, 0x87, 0x68, 0x31, 0xf7, 0x10, 0xfd, 0xee, 0x8c, 0x25, 0xdb, 0xc7, 0x96, 0xec, 0x87, 0x72,
    -	0x96, 0xec, 0x21, 0x2f, 0xd4, 0xdd, 0x9c, 0x59, 0xdb, 0xcf, 0x06, 0x30, 0x53, 0x42, 0x5a, 0xf5,
    -	0x6b, 0x4e, 0x23, 0xb9, 0xd5, 0x1e, 0x70, 0xea, 0x1e, 0xce, 0x38, 0xd6, 0x60, 0x64, 0xc1, 0x69,
    -	0x39, 0x37, 0xdd, 0x86, 0x1b, 0xb9, 0x24, 0x44, 0x4f, 0x40, 0xd1, 0xa9, 0xd7, 0x99, 0x74, 0x57,
    -	0x9a, 0x3f, 0x7e, 0x77, 0xbf, 0x5c, 0x9c, 0xab, 0x53, 0x31, 0x03, 0x14, 0xd5, 0x1e, 0xa6, 0x14,
    -	0xe8, 0x29, 0xe8, 0xab, 0x07, 0x7e, 0x6b, 0xba, 0xc0, 0x28, 0xe9, 0x2a, 0xef, 0x5b, 0x0c, 0xfc,
    -	0x56, 0x82, 0x94, 0xd1, 0xd8, 0xbf, 0x55, 0x80, 0x53, 0x0b, 0xa4, 0xb5, 0xbd, 0x5c, 0xcd, 0x39,
    -	0x2f, 0xce, 0xc3, 0x50, 0xd3, 0xf7, 0xdc, 0xc8, 0x0f, 0x42, 0x51, 0x35, 0x9b, 0x11, 0x6b, 0x02,
    -	0x86, 0x15, 0x16, 0x9d, 0x85, 0xbe, 0x56, 0x2c, 0xc4, 0x8e, 0x48, 0x01, 0x98, 0x89, 0xaf, 0x0c,
    -	0x43, 0x29, 0xda, 0x21, 0x09, 0xc4, 0x8c, 0x51, 0x14, 0xd7, 0x42, 0x12, 0x60, 0x86, 0x89, 0x25,
    -	0x01, 0x2a, 0x23, 0x88, 0x13, 0x21, 0x21, 0x09, 0x50, 0x0c, 0xd6, 0xa8, 0x50, 0x05, 0x4a, 0x61,
    -	0x62, 0x64, 0x7b, 0x5a, 0x9a, 0xa3, 0x4c, 0x54, 0x50, 0x23, 0x19, 0x33, 0x31, 0x4e, 0xb0, 0x81,
    -	0xae, 0xa2, 0xc2, 0xd7, 0x0b, 0x80, 0x78, 0x17, 0x7e, 0x9b, 0x75, 0xdc, 0xb5, 0x74, 0xc7, 0xf5,
    -	0xbe, 0x24, 0x0e, 0xab, 0xf7, 0xfe, 0x8b, 0x05, 0xa7, 0x16, 0x5c, 0xaf, 0x4e, 0x82, 0x9c, 0x09,
    -	0xf8, 0x60, 0xee, 0xce, 0x07, 0x13, 0x52, 0x8c, 0x29, 0xd6, 0x77, 0x08, 0x53, 0xcc, 0xfe, 0x4b,
    -	0x0b, 0x10, 0xff, 0xec, 0x77, 0xdd, 0xc7, 0x5e, 0x4b, 0x7f, 0xec, 0x21, 0x4c, 0x0b, 0xfb, 0xef,
    -	0x5a, 0x30, 0xbc, 0xd0, 0x70, 0xdc, 0xa6, 0xf8, 0xd4, 0x05, 0x98, 0x94, 0x8a, 0x22, 0x06, 0xd6,
    -	0x64, 0x7f, 0xba, 0xb9, 0x4d, 0xe2, 0x24, 0x12, 0xa7, 0xe9, 0xd1, 0xc7, 0xe1, 0xa4, 0x01, 0xdc,
    -	0x20, 0xcd, 0x56, 0xc3, 0x89, 0xf4, 0x5b, 0x01, 0x3b, 0xfd, 0x71, 0x1e, 0x11, 0xce, 0x2f, 0x6f,
    -	0xaf, 0xc2, 0xd8, 0x42, 0xc3, 0x25, 0x5e, 0xb4, 0x52, 0x59, 0xf0, 0xbd, 0x4d, 0x77, 0x0b, 0xbd,
    -	0x0c, 0x63, 0x91, 0xdb, 0x24, 0x7e, 0x3b, 0xaa, 0x92, 0x9a, 0xef, 0xb1, 0xbb, 0xb6, 0x75, 0xbe,
    -	0x7f, 0x1e, 0xdd, 0xdd, 0x2f, 0x8f, 0x6d, 0x18, 0x18, 0x9c, 0xa0, 0xb4, 0x7f, 0x9a, 0xee, 0xb4,
    -	0x8d, 0x76, 0x18, 0x91, 0x60, 0x23, 0x68, 0x87, 0xd1, 0x7c, 0x9b, 0x4a, 0xcb, 0x95, 0xc0, 0xa7,
    -	0x1d, 0xe8, 0xfa, 0x1e, 0x3a, 0x65, 0x28, 0x10, 0x86, 0xa4, 0xf2, 0x40, 0x28, 0x0a, 0x66, 0x01,
    -	0x42, 0x77, 0xcb, 0x23, 0x81, 0xf6, 0x69, 0x63, 0x6c, 0x71, 0x2b, 0x28, 0xd6, 0x28, 0x50, 0x03,
    -	0x46, 0x1b, 0xce, 0x4d, 0xd2, 0xa8, 0x92, 0x06, 0xa9, 0x45, 0x7e, 0x20, 0x54, 0x20, 0xcf, 0xf7,
    -	0x76, 0x73, 0x59, 0xd5, 0x8b, 0xce, 0x4f, 0xde, 0xdd, 0x2f, 0x8f, 0x1a, 0x20, 0x6c, 0x32, 0xa7,
    -	0x9b, 0x9d, 0xdf, 0xa2, 0x5f, 0xe1, 0x34, 0xf4, 0xeb, 0xf2, 0x55, 0x01, 0xc3, 0x0a, 0xab, 0x36,
    -	0xbb, 0xbe, 0xbc, 0xcd, 0xce, 0xfe, 0x63, 0xba, 0x34, 0xfc, 0x66, 0xcb, 0xf7, 0x88, 0x17, 0x2d,
    -	0xf8, 0x5e, 0x9d, 0x2b, 0xaf, 0x5e, 0x86, 0xbe, 0x88, 0x4e, 0x75, 0xde, 0x3d, 0xe7, 0x64, 0x41,
    -	0x3a, 0xc1, 0xef, 0xed, 0x97, 0x4f, 0xa4, 0x4b, 0xb0, 0x25, 0xc0, 0xca, 0xa0, 0x0f, 0xc1, 0x40,
    -	0x18, 0x39, 0x51, 0x3b, 0x14, 0x1d, 0xf7, 0x88, 0x5c, 0x28, 0x55, 0x06, 0xbd, 0xb7, 0x5f, 0x1e,
    -	0x57, 0xc5, 0x38, 0x08, 0x8b, 0x02, 0xe8, 0x49, 0x18, 0x6c, 0x92, 0x30, 0x74, 0xb6, 0xa4, 0xa0,
    -	0x33, 0x2e, 0xca, 0x0e, 0xae, 0x71, 0x30, 0x96, 0x78, 0xf4, 0x28, 0xf4, 0x93, 0x20, 0xf0, 0x03,
    -	0xf1, 0x6d, 0xa3, 0x82, 0xb0, 0x7f, 0x89, 0x02, 0x31, 0xc7, 0xd9, 0xff, 0xd2, 0x82, 0x71, 0xd5,
    -	0x56, 0x5e, 0xd7, 0x11, 0x5c, 0x30, 0xdf, 0x04, 0xa8, 0xc9, 0x0f, 0x0c, 0x99, 0x60, 0x30, 0xfc,
    -	0xdc, 0xb9, 0x4c, 0x19, 0x2c, 0xd5, 0x8d, 0x31, 0x67, 0x05, 0x0a, 0xb1, 0xc6, 0xcd, 0xfe, 0x75,
    -	0x0b, 0xa6, 0x12, 0x5f, 0xb4, 0xea, 0x86, 0x11, 0x7a, 0x2b, 0xf5, 0x55, 0xb3, 0x3d, 0x4e, 0x3e,
    -	0x37, 0xe4, 0xdf, 0xa4, 0x76, 0x29, 0x09, 0xd1, 0xbe, 0xe8, 0x32, 0xf4, 0xbb, 0x11, 0x69, 0xca,
    -	0x8f, 0x79, 0xb4, 0xe3, 0xc7, 0xf0, 0x56, 0xc5, 0x23, 0xb2, 0x42, 0x4b, 0x62, 0xce, 0xc0, 0xfe,
    -	0xad, 0x22, 0x94, 0xf8, 0xfa, 0x5e, 0x73, 0x5a, 0x47, 0x30, 0x16, 0x4f, 0x43, 0xc9, 0x6d, 0x36,
    -	0xdb, 0x91, 0x73, 0x53, 0x9c, 0xd4, 0x43, 0x7c, 0xd7, 0x5c, 0x91, 0x40, 0x1c, 0xe3, 0xd1, 0x0a,
    -	0xf4, 0xb1, 0xa6, 0xf0, 0xaf, 0x7c, 0x22, 0xfb, 0x2b, 0x45, 0xdb, 0x67, 0x17, 0x9d, 0xc8, 0xe1,
    -	0x42, 0xb2, 0x5a, 0x57, 0x14, 0x84, 0x19, 0x0b, 0xe4, 0x00, 0xdc, 0x74, 0x3d, 0x27, 0xd8, 0xa3,
    -	0xb0, 0xe9, 0x22, 0x63, 0xf8, 0x6c, 0x67, 0x86, 0xf3, 0x8a, 0x9e, 0xb3, 0x55, 0x1f, 0x16, 0x23,
    -	0xb0, 0xc6, 0x74, 0xe6, 0x83, 0x50, 0x52, 0xc4, 0x07, 0x91, 0x75, 0x67, 0x3e, 0x0c, 0xe3, 0x89,
    -	0xba, 0xba, 0x15, 0x1f, 0xd1, 0x45, 0xe5, 0x5f, 0x65, 0x5b, 0x86, 0x68, 0xf5, 0x92, 0xb7, 0x2b,
    -	0x8e, 0x98, 0x3b, 0x70, 0xac, 0x91, 0x71, 0x48, 0x89, 0x71, 0xed, 0xfd, 0x50, 0x3b, 0x25, 0x3e,
    -	0xfb, 0x58, 0x16, 0x16, 0x67, 0xd6, 0x61, 0xec, 0x88, 0x85, 0x4e, 0x3b, 0x22, 0xdd, 0xef, 0x8e,
    -	0xa9, 0xc6, 0x5f, 0x21, 0x7b, 0x6a, 0x53, 0xfd, 0x56, 0x36, 0xff, 0x34, 0xef, 0x7d, 0xbe, 0x5d,
    -	0x0e, 0x0b, 0x06, 0xc5, 0x2b, 0x64, 0x8f, 0x0f, 0x85, 0xfe, 0x75, 0xc5, 0x8e, 0x5f, 0xf7, 0x55,
    -	0x0b, 0x46, 0xd5, 0xd7, 0x1d, 0xc1, 0xbe, 0x30, 0x6f, 0xee, 0x0b, 0xa7, 0x3b, 0x4e, 0xf0, 0x9c,
    -	0x1d, 0xe1, 0xeb, 0x05, 0x38, 0xa9, 0x68, 0xe8, 0xb5, 0x8f, 0xff, 0x11, 0xb3, 0xea, 0x02, 0x94,
    -	0x3c, 0xa5, 0x00, 0xb5, 0x4c, 0xcd, 0x63, 0xac, 0xfe, 0x8c, 0x69, 0xe8, 0x91, 0xe7, 0xc5, 0x87,
    -	0xf6, 0x88, 0x6e, 0x19, 0x10, 0x87, 0xfb, 0x3c, 0x14, 0xdb, 0x6e, 0x5d, 0x1c, 0x30, 0xef, 0x97,
    -	0xbd, 0x7d, 0x6d, 0x65, 0xf1, 0xde, 0x7e, 0xf9, 0x91, 0x3c, 0xab, 0x14, 0x3d, 0xd9, 0xc2, 0xd9,
    -	0x6b, 0x2b, 0x8b, 0x98, 0x16, 0x46, 0x73, 0x30, 0x2e, 0x45, 0x99, 0xeb, 0x54, 0x92, 0xf6, 0x3d,
    -	0x71, 0x0e, 0x29, 0xf5, 0x3e, 0x36, 0xd1, 0x38, 0x49, 0x8f, 0x16, 0x61, 0x62, 0xa7, 0x7d, 0x93,
    -	0x34, 0x48, 0xc4, 0x3f, 0xf8, 0x0a, 0xe1, 0xca, 0xef, 0x52, 0x7c, 0xe9, 0xbe, 0x92, 0xc0, 0xe3,
    -	0x54, 0x09, 0xfb, 0x6f, 0xd8, 0x79, 0x20, 0x7a, 0x4f, 0x93, 0x6f, 0xbe, 0x95, 0xd3, 0xb9, 0x97,
    -	0x59, 0x71, 0x85, 0xec, 0x6d, 0xf8, 0x54, 0x0e, 0xc9, 0x9e, 0x15, 0xc6, 0x9c, 0xef, 0xeb, 0x38,
    -	0xe7, 0x7f, 0xb1, 0x00, 0xc7, 0x55, 0x0f, 0x18, 0xf2, 0xfd, 0xb7, 0x7b, 0x1f, 0x5c, 0x84, 0xe1,
    -	0x3a, 0xd9, 0x74, 0xda, 0x8d, 0x48, 0x59, 0x62, 0xfa, 0xb9, 0x35, 0x6e, 0x31, 0x06, 0x63, 0x9d,
    -	0xe6, 0x00, 0xdd, 0xf6, 0xf3, 0xa3, 0xec, 0x20, 0x8e, 0x1c, 0x3a, 0xc7, 0xd5, 0xaa, 0xb1, 0x72,
    -	0x57, 0xcd, 0xa3, 0xd0, 0xef, 0x36, 0xa9, 0x60, 0x56, 0x30, 0xe5, 0xad, 0x15, 0x0a, 0xc4, 0x1c,
    -	0x87, 0x1e, 0x87, 0xc1, 0x9a, 0xdf, 0x6c, 0x3a, 0x5e, 0x9d, 0x1d, 0x79, 0xa5, 0xf9, 0x61, 0x2a,
    -	0xbb, 0x2d, 0x70, 0x10, 0x96, 0x38, 0x2a, 0x7c, 0x3b, 0xc1, 0x16, 0x57, 0x4f, 0x09, 0xe1, 0x7b,
    -	0x2e, 0xd8, 0x0a, 0x31, 0x83, 0xd2, 0xdb, 0xf5, 0x2d, 0x3f, 0xd8, 0x71, 0xbd, 0xad, 0x45, 0x37,
    -	0x10, 0x4b, 0x42, 0x9d, 0x85, 0x37, 0x14, 0x06, 0x6b, 0x54, 0x68, 0x19, 0xfa, 0x5b, 0x7e, 0x10,
    -	0x85, 0xd3, 0x03, 0xac, 0xbb, 0x1f, 0xc9, 0xd9, 0x88, 0xf8, 0xd7, 0x56, 0xfc, 0x20, 0x8a, 0x3f,
    -	0x80, 0xfe, 0x0b, 0x31, 0x2f, 0x8e, 0x56, 0x61, 0x90, 0x78, 0xbb, 0xcb, 0x81, 0xdf, 0x9c, 0x9e,
    -	0xca, 0xe7, 0xb4, 0xc4, 0x49, 0xf8, 0x34, 0x8b, 0x65, 0x54, 0x01, 0xc6, 0x92, 0x05, 0xfa, 0x10,
    -	0x14, 0x89, 0xb7, 0x3b, 0x3d, 0xc8, 0x38, 0xcd, 0xe4, 0x70, 0xba, 0xee, 0x04, 0xf1, 0x9e, 0xbf,
    -	0xe4, 0xed, 0x62, 0x5a, 0x06, 0x7d, 0x0c, 0x4a, 0x72, 0xc3, 0x08, 0x85, 0xde, 0x37, 0x73, 0xc2,
    -	0xca, 0x6d, 0x06, 0x93, 0xb7, 0xdb, 0x6e, 0x40, 0x9a, 0xc4, 0x8b, 0xc2, 0x78, 0x87, 0x94, 0xd8,
    -	0x10, 0xc7, 0xdc, 0x50, 0x0d, 0x46, 0x02, 0x12, 0xba, 0x77, 0x48, 0xc5, 0x6f, 0xb8, 0xb5, 0xbd,
    -	0xe9, 0x87, 0x58, 0xf3, 0x9e, 0xec, 0xd8, 0x65, 0x58, 0x2b, 0x10, 0xdb, 0x25, 0x74, 0x28, 0x36,
    -	0x98, 0xa2, 0x37, 0x60, 0x34, 0x20, 0x61, 0xe4, 0x04, 0x91, 0xa8, 0x65, 0x5a, 0xd9, 0x11, 0x47,
    -	0xb1, 0x8e, 0xe0, 0xd7, 0x89, 0xb8, 0x9a, 0x18, 0x83, 0x4d, 0x0e, 0xe8, 0x63, 0xd2, 0x48, 0xb2,
    -	0xe6, 0xb7, 0xbd, 0x28, 0x9c, 0x2e, 0xb1, 0x76, 0x67, 0x9a, 0xaf, 0xaf, 0xc7, 0x74, 0x49, 0x2b,
    -	0x0a, 0x2f, 0x8c, 0x0d, 0x56, 0xe8, 0x13, 0x30, 0xca, 0xff, 0x73, 0x23, 0x70, 0x38, 0x7d, 0x9c,
    -	0xf1, 0x3e, 0x9b, 0xcf, 0x9b, 0x13, 0xce, 0x1f, 0x17, 0xcc, 0x47, 0x75, 0x68, 0x88, 0x4d, 0x6e,
    -	0x08, 0xc3, 0x68, 0xc3, 0xdd, 0x25, 0x1e, 0x09, 0xc3, 0x4a, 0xe0, 0xdf, 0x24, 0x42, 0xa7, 0x7d,
    -	0x32, 0xdb, 0x68, 0xec, 0xdf, 0x24, 0xe2, 0x12, 0xa8, 0x97, 0xc1, 0x26, 0x0b, 0x74, 0x0d, 0xc6,
    -	0x02, 0xe2, 0xd4, 0xdd, 0x98, 0xe9, 0x70, 0x37, 0xa6, 0xec, 0xe2, 0x8c, 0x8d, 0x42, 0x38, 0xc1,
    -	0x04, 0x5d, 0x85, 0x11, 0xd6, 0xe7, 0xed, 0x16, 0x67, 0x7a, 0xa2, 0x1b, 0x53, 0xe6, 0x73, 0x50,
    -	0xd5, 0x8a, 0x60, 0x83, 0x01, 0x7a, 0x1d, 0x4a, 0x0d, 0x77, 0x93, 0xd4, 0xf6, 0x6a, 0x0d, 0x32,
    -	0x3d, 0xc2, 0xb8, 0x65, 0x6e, 0x86, 0xab, 0x92, 0x88, 0xcb, 0xe7, 0xea, 0x2f, 0x8e, 0x8b, 0xa3,
    -	0xeb, 0x70, 0x22, 0x22, 0x41, 0xd3, 0xf5, 0x1c, 0xba, 0x89, 0x89, 0x2b, 0x21, 0xb3, 0xe5, 0x8f,
    -	0xb2, 0xd9, 0x75, 0x46, 0x8c, 0xc6, 0x89, 0x8d, 0x4c, 0x2a, 0x9c, 0x53, 0x1a, 0xdd, 0x86, 0xe9,
    -	0x0c, 0x0c, 0x9f, 0xb7, 0xc7, 0x18, 0xe7, 0x57, 0x05, 0xe7, 0xe9, 0x8d, 0x1c, 0xba, 0x7b, 0x1d,
    -	0x70, 0x38, 0x97, 0x3b, 0xba, 0x0a, 0xe3, 0x6c, 0xe7, 0xac, 0xb4, 0x1b, 0x0d, 0x51, 0xe1, 0x18,
    -	0xab, 0xf0, 0x71, 0x29, 0x47, 0xac, 0x98, 0xe8, 0x7b, 0xfb, 0x65, 0x88, 0xff, 0xe1, 0x64, 0x69,
    -	0x74, 0x93, 0x99, 0x8d, 0xdb, 0x81, 0x1b, 0xed, 0xd1, 0x55, 0x45, 0x6e, 0x47, 0xd3, 0xe3, 0x1d,
    -	0x55, 0x68, 0x3a, 0xa9, 0xb2, 0x2d, 0xeb, 0x40, 0x9c, 0x64, 0x48, 0x8f, 0x82, 0x30, 0xaa, 0xbb,
    -	0xde, 0xf4, 0x04, 0xbf, 0x4f, 0xc9, 0x9d, 0xb4, 0x4a, 0x81, 0x98, 0xe3, 0x98, 0xc9, 0x98, 0xfe,
    -	0xb8, 0x4a, 0x4f, 0xdc, 0x49, 0x46, 0x18, 0x9b, 0x8c, 0x25, 0x02, 0xc7, 0x34, 0x54, 0x08, 0x8e,
    -	0xa2, 0xbd, 0x69, 0xc4, 0x48, 0xd5, 0x86, 0xb8, 0xb1, 0xf1, 0x31, 0x4c, 0xe1, 0xf6, 0x4d, 0x18,
    -	0x53, 0xdb, 0x04, 0xeb, 0x13, 0x54, 0x86, 0x7e, 0x26, 0xf6, 0x09, 0x85, 0x6f, 0x89, 0x36, 0x81,
    -	0x89, 0x84, 0x98, 0xc3, 0x59, 0x13, 0xdc, 0x3b, 0x64, 0x7e, 0x2f, 0x22, 0x5c, 0x17, 0x51, 0xd4,
    -	0x9a, 0x20, 0x11, 0x38, 0xa6, 0xb1, 0xff, 0x27, 0x17, 0x9f, 0xe3, 0x53, 0xa2, 0x87, 0x73, 0xf1,
    -	0x19, 0x18, 0xda, 0xf6, 0xc3, 0x88, 0x52, 0xb3, 0x3a, 0xfa, 0x63, 0x81, 0xf9, 0xb2, 0x80, 0x63,
    -	0x45, 0x81, 0x5e, 0x81, 0xd1, 0x9a, 0x5e, 0x81, 0x38, 0xd4, 0xd5, 0x36, 0x62, 0xd4, 0x8e, 0x4d,
    -	0x5a, 0xf4, 0x12, 0x0c, 0x31, 0x37, 0xa8, 0x9a, 0xdf, 0x10, 0xd2, 0xa6, 0x94, 0x4c, 0x86, 0x2a,
    -	0x02, 0x7e, 0x4f, 0xfb, 0x8d, 0x15, 0x35, 0x3a, 0x07, 0x03, 0xb4, 0x09, 0x2b, 0x15, 0x71, 0x9c,
    -	0x2a, 0xdd, 0xe5, 0x65, 0x06, 0xc5, 0x02, 0x6b, 0xff, 0xba, 0xc5, 0x64, 0xa9, 0xf4, 0x9e, 0x8f,
    -	0x2e, 0xb3, 0x43, 0x83, 0x9d, 0x20, 0x9a, 0xee, 0xf0, 0x31, 0xed, 0x24, 0x50, 0xb8, 0x7b, 0x89,
    -	0xff, 0xd8, 0x28, 0x89, 0xde, 0x4c, 0x9e, 0x0c, 0x5c, 0xa0, 0x78, 0x41, 0x76, 0x41, 0xf2, 0x74,
    -	0x78, 0x38, 0x3e, 0xe2, 0x68, 0x7b, 0x3a, 0x1d, 0x11, 0xf6, 0xff, 0x55, 0xd0, 0x66, 0x49, 0x35,
    -	0x72, 0x22, 0x82, 0x2a, 0x30, 0x78, 0xcb, 0x71, 0x23, 0xd7, 0xdb, 0x12, 0x72, 0x5f, 0xe7, 0x83,
    -	0x8e, 0x15, 0xba, 0xc1, 0x0b, 0x70, 0xe9, 0x45, 0xfc, 0xc1, 0x92, 0x0d, 0xe5, 0x18, 0xb4, 0x3d,
    -	0x8f, 0x72, 0x2c, 0xf4, 0xca, 0x11, 0xf3, 0x02, 0x9c, 0xa3, 0xf8, 0x83, 0x25, 0x1b, 0xf4, 0x16,
    -	0x80, 0xdc, 0x21, 0x48, 0x5d, 0xe8, 0x0e, 0x9f, 0xe9, 0xce, 0x74, 0x43, 0x95, 0xe1, 0xca, 0xc9,
    -	0xf8, 0x3f, 0xd6, 0xf8, 0xd9, 0x91, 0x36, 0xa6, 0x7a, 0x63, 0xd0, 0xc7, 0xe9, 0x12, 0x75, 0x82,
    -	0x88, 0xd4, 0xe7, 0x22, 0xd1, 0x39, 0x4f, 0xf5, 0x76, 0x39, 0xdc, 0x70, 0x9b, 0x44, 0x5f, 0xce,
    -	0x82, 0x09, 0x8e, 0xf9, 0xd9, 0xbf, 0x5c, 0x84, 0xe9, 0xbc, 0xe6, 0xd2, 0x45, 0x43, 0x6e, 0xbb,
    -	0xd1, 0x02, 0x15, 0x6b, 0x2d, 0x73, 0xd1, 0x2c, 0x09, 0x38, 0x56, 0x14, 0x74, 0xf6, 0x86, 0xee,
    -	0x96, 0xbc, 0xdb, 0xf7, 0xc7, 0xb3, 0xb7, 0xca, 0xa0, 0x58, 0x60, 0x29, 0x5d, 0x40, 0x9c, 0x50,
    -	0xf8, 0xe7, 0x69, 0xb3, 0x1c, 0x33, 0x28, 0x16, 0x58, 0x5d, 0xcb, 0xd8, 0xd7, 0x45, 0xcb, 0x68,
    -	0x74, 0x51, 0xff, 0xe1, 0x76, 0x11, 0xfa, 0x24, 0xc0, 0xa6, 0xeb, 0xb9, 0xe1, 0x36, 0xe3, 0x3e,
    -	0x70, 0x60, 0xee, 0x4a, 0x28, 0x5e, 0x56, 0x5c, 0xb0, 0xc6, 0x11, 0xbd, 0x08, 0xc3, 0x6a, 0x03,
    -	0x59, 0x59, 0x64, 0xce, 0x0a, 0x9a, 0xf3, 0x57, 0xbc, 0x9b, 0x2e, 0x62, 0x9d, 0xce, 0xfe, 0x74,
    -	0x72, 0xbe, 0x88, 0x15, 0xa0, 0xf5, 0xaf, 0xd5, 0x6b, 0xff, 0x16, 0x3a, 0xf7, 0xaf, 0xfd, 0xcd,
    -	0x01, 0x18, 0x37, 0x2a, 0x6b, 0x87, 0x3d, 0xec, 0xb9, 0x97, 0xe8, 0x01, 0xe4, 0x44, 0x44, 0xac,
    -	0x3f, 0xbb, 0xfb, 0x52, 0xd1, 0x0f, 0x29, 0xba, 0x02, 0x78, 0x79, 0xf4, 0x49, 0x28, 0x35, 0x9c,
    -	0x90, 0x69, 0x2c, 0x89, 0x58, 0x77, 0xbd, 0x30, 0x8b, 0x2f, 0x84, 0x4e, 0x18, 0x69, 0xa7, 0x3e,
    -	0xe7, 0x1d, 0xb3, 0xa4, 0x27, 0x25, 0x95, 0xaf, 0xa4, 0x03, 0xa8, 0x6a, 0x04, 0x15, 0xc2, 0xf6,
    -	0x30, 0xc7, 0xa1, 0x97, 0xd8, 0xd6, 0x4a, 0x67, 0xc5, 0x02, 0x95, 0x46, 0xd9, 0x34, 0xeb, 0x37,
    -	0x84, 0x6c, 0x85, 0xc3, 0x06, 0x65, 0x7c, 0x27, 0x1b, 0xe8, 0x70, 0x27, 0x7b, 0x12, 0x06, 0xd9,
    -	0x0f, 0x35, 0x03, 0xd4, 0x68, 0xac, 0x70, 0x30, 0x96, 0xf8, 0xe4, 0x84, 0x19, 0xea, 0x6d, 0xc2,
    -	0xd0, 0x5b, 0x9f, 0x98, 0xd4, 0xcc, 0x51, 0x64, 0x88, 0xef, 0x72, 0x62, 0xca, 0x63, 0x89, 0x43,
    -	0x3f, 0x63, 0x01, 0x72, 0x1a, 0xf4, 0xb6, 0x4c, 0xc1, 0xea, 0x72, 0x03, 0x4c, 0xd4, 0x7e, 0xa5,
    -	0x6b, 0xb7, 0xb7, 0xc3, 0xd9, 0xb9, 0x54, 0x69, 0xae, 0x29, 0x7d, 0x59, 0x34, 0x11, 0xa5, 0x09,
    -	0xf4, 0xc3, 0x68, 0xd5, 0x0d, 0xa3, 0xcf, 0xfd, 0x49, 0xe2, 0x70, 0xca, 0x68, 0x12, 0xba, 0xa6,
    -	0x5f, 0xbe, 0x86, 0x0f, 0x78, 0xf9, 0x1a, 0xcd, 0xbb, 0x78, 0xcd, 0xb4, 0xe1, 0xa1, 0x9c, 0x2f,
    -	0xc8, 0xd0, 0xbf, 0x2e, 0xea, 0xfa, 0xd7, 0x2e, 0x5a, 0xbb, 0x59, 0x59, 0xc7, 0xec, 0x1b, 0x6d,
    -	0xc7, 0x8b, 0xdc, 0x68, 0x4f, 0xd7, 0xd7, 0x3e, 0x05, 0x63, 0x8b, 0x0e, 0x69, 0xfa, 0xde, 0x92,
    -	0x57, 0x6f, 0xf9, 0xae, 0x17, 0xa1, 0x69, 0xe8, 0x63, 0xc2, 0x07, 0xdf, 0x7a, 0xfb, 0x68, 0xef,
    -	0x61, 0x06, 0xb1, 0xb7, 0xe0, 0xf8, 0xa2, 0x7f, 0xcb, 0xbb, 0xe5, 0x04, 0xf5, 0xb9, 0xca, 0x8a,
    -	0xa6, 0x4f, 0x5a, 0x97, 0xfa, 0x0c, 0x2b, 0xff, 0xb6, 0xa8, 0x95, 0xe4, 0xd7, 0xa1, 0x65, 0xb7,
    -	0x41, 0x72, 0xb4, 0x7e, 0xff, 0x6f, 0xc1, 0xa8, 0x29, 0xa6, 0x57, 0x36, 0x2b, 0x2b, 0xd7, 0x40,
    -	0xff, 0x06, 0x0c, 0x6d, 0xba, 0xa4, 0x51, 0xc7, 0x64, 0x53, 0xf4, 0xce, 0x13, 0xf9, 0x2e, 0x7c,
    -	0xcb, 0x94, 0x52, 0x19, 0xd7, 0x98, 0x36, 0x64, 0x59, 0x14, 0xc6, 0x8a, 0x0d, 0xda, 0x81, 0x09,
    -	0xd9, 0x87, 0x12, 0x2b, 0xf6, 0x83, 0x27, 0x3b, 0x0d, 0xbc, 0xc9, 0xfc, 0xd8, 0xdd, 0xfd, 0xf2,
    -	0x04, 0x4e, 0xb0, 0xc1, 0x29, 0xc6, 0xe8, 0x14, 0xf4, 0x35, 0xe9, 0xc9, 0xd7, 0xc7, 0xba, 0x9f,
    -	0xa9, 0x3f, 0x98, 0x26, 0x87, 0x41, 0xed, 0x1f, 0xb3, 0xe0, 0xa1, 0x54, 0xcf, 0x08, 0x8d, 0xd6,
    -	0x21, 0x8f, 0x42, 0x52, 0xc3, 0x54, 0xe8, 0xae, 0x61, 0xb2, 0xff, 0x8e, 0x05, 0xc7, 0x96, 0x9a,
    -	0xad, 0x68, 0x6f, 0xd1, 0x35, 0xad, 0xe9, 0x1f, 0x84, 0x81, 0x26, 0xa9, 0xbb, 0xed, 0xa6, 0x18,
    -	0xb9, 0xb2, 0x3c, 0x1d, 0xd6, 0x18, 0xf4, 0xde, 0x7e, 0x79, 0xb4, 0x1a, 0xf9, 0x81, 0xb3, 0x45,
    -	0x38, 0x00, 0x0b, 0x72, 0x76, 0xc6, 0xba, 0x77, 0xc8, 0xaa, 0xdb, 0x74, 0xa3, 0xfb, 0x9b, 0xed,
    -	0xc2, 0x10, 0x2e, 0x99, 0xe0, 0x98, 0x9f, 0xfd, 0x0d, 0x0b, 0xc6, 0xe5, 0xbc, 0x9f, 0xab, 0xd7,
    -	0x03, 0x12, 0x86, 0x68, 0x06, 0x0a, 0x6e, 0x4b, 0xb4, 0x12, 0x44, 0x2b, 0x0b, 0x2b, 0x15, 0x5c,
    -	0x70, 0x5b, 0x52, 0x9c, 0x67, 0x07, 0x50, 0xd1, 0xf4, 0x09, 0xb8, 0x2c, 0xe0, 0x58, 0x51, 0xa0,
    -	0xf3, 0x30, 0xe4, 0xf9, 0x75, 0x2e, 0x11, 0x0b, 0x1b, 0x2b, 0xa5, 0x5c, 0x17, 0x30, 0xac, 0xb0,
    -	0xa8, 0x02, 0x25, 0xee, 0x31, 0x1a, 0x4f, 0xda, 0x9e, 0xfc, 0x4e, 0xd9, 0x97, 0x6d, 0xc8, 0x92,
    -	0x38, 0x66, 0x62, 0xff, 0xa6, 0x05, 0x23, 0xf2, 0xcb, 0x7a, 0xbc, 0xab, 0xd0, 0xa5, 0x15, 0xdf,
    -	0x53, 0xe2, 0xa5, 0x45, 0xef, 0x1a, 0x0c, 0x63, 0x5c, 0x31, 0x8a, 0x07, 0xba, 0x62, 0x5c, 0x84,
    -	0x61, 0xa7, 0xd5, 0xaa, 0x98, 0xf7, 0x13, 0x36, 0x95, 0xe6, 0x62, 0x30, 0xd6, 0x69, 0xec, 0x1f,
    -	0x2d, 0xc0, 0x98, 0xfc, 0x82, 0x6a, 0xfb, 0x66, 0x48, 0x22, 0xb4, 0x01, 0x25, 0x87, 0x8f, 0x12,
    -	0x91, 0x93, 0xfc, 0xd1, 0x6c, 0xbd, 0x99, 0x31, 0xa4, 0xb1, 0xa0, 0x35, 0x27, 0x4b, 0xe3, 0x98,
    -	0x11, 0x6a, 0xc0, 0xa4, 0xe7, 0x47, 0xec, 0xd0, 0x55, 0xf8, 0x4e, 0xa6, 0xcc, 0x24, 0xf7, 0x93,
    -	0x82, 0xfb, 0xe4, 0x7a, 0x92, 0x0b, 0x4e, 0x33, 0x46, 0x4b, 0x52, 0x17, 0x59, 0xcc, 0x57, 0x22,
    -	0xe9, 0x03, 0x97, 0xad, 0x8a, 0xb4, 0x7f, 0xcd, 0x82, 0x92, 0x24, 0x3b, 0x0a, 0xab, 0xf5, 0x1a,
    -	0x0c, 0x86, 0x6c, 0x10, 0x64, 0xd7, 0xd8, 0x9d, 0x1a, 0xce, 0xc7, 0x2b, 0x96, 0x25, 0xf8, 0xff,
    -	0x10, 0x4b, 0x1e, 0xcc, 0x14, 0xa5, 0x9a, 0xff, 0x2e, 0x31, 0x45, 0xa9, 0xf6, 0xe4, 0x1c, 0x4a,
    -	0x7f, 0xc6, 0xda, 0xac, 0xe9, 0x76, 0xa9, 0xc8, 0xdb, 0x0a, 0xc8, 0xa6, 0x7b, 0x3b, 0x29, 0xf2,
    -	0x56, 0x18, 0x14, 0x0b, 0x2c, 0x7a, 0x0b, 0x46, 0x6a, 0xd2, 0x06, 0x11, 0xaf, 0xf0, 0x73, 0x1d,
    -	0xed, 0x61, 0xca, 0x74, 0xca, 0x75, 0x68, 0x0b, 0x5a, 0x79, 0x6c, 0x70, 0x33, 0x3d, 0xa2, 0x8a,
    -	0xdd, 0x3c, 0xa2, 0x62, 0xbe, 0xf9, 0xfe, 0x41, 0x3f, 0x6e, 0xc1, 0x00, 0xd7, 0x3d, 0xf7, 0xa6,
    -	0xfa, 0xd7, 0x2c, 0xc9, 0x71, 0xdf, 0x5d, 0xa7, 0x40, 0x21, 0x69, 0xa0, 0x35, 0x28, 0xb1, 0x1f,
    -	0x4c, 0x77, 0x5e, 0xcc, 0x7f, 0xb0, 0xc4, 0x6b, 0xd5, 0x1b, 0x78, 0x5d, 0x16, 0xc3, 0x31, 0x07,
    -	0xfb, 0x47, 0x8a, 0x74, 0x77, 0x8b, 0x49, 0x8d, 0x43, 0xdf, 0x7a, 0x70, 0x87, 0x7e, 0xe1, 0x41,
    -	0x1d, 0xfa, 0x5b, 0x30, 0x5e, 0xd3, 0xec, 0xce, 0xf1, 0x48, 0x9e, 0xef, 0x38, 0x49, 0x34, 0x13,
    -	0x35, 0xd7, 0xce, 0x2d, 0x98, 0x4c, 0x70, 0x92, 0x2b, 0xfa, 0x38, 0x8c, 0xf0, 0x71, 0x16, 0xb5,
    -	0x70, 0xa7, 0xb2, 0xc7, 0xf3, 0xe7, 0x8b, 0x5e, 0x05, 0xd7, 0xe6, 0x6a, 0xc5, 0xb1, 0xc1, 0xcc,
    -	0xfe, 0x2b, 0x0b, 0xd0, 0x52, 0x6b, 0x9b, 0x34, 0x49, 0xe0, 0x34, 0x62, 0xf3, 0xd1, 0x17, 0x2d,
    -	0x98, 0x26, 0x29, 0xf0, 0x82, 0xdf, 0x6c, 0x8a, 0xcb, 0x62, 0x8e, 0x3e, 0x63, 0x29, 0xa7, 0x8c,
    -	0x7a, 0xd1, 0x35, 0x9d, 0x47, 0x81, 0x73, 0xeb, 0x43, 0x6b, 0x30, 0xc5, 0x4f, 0x49, 0x85, 0xd0,
    -	0xbc, 0xb8, 0x1e, 0x16, 0x8c, 0xa7, 0x36, 0xd2, 0x24, 0x38, 0xab, 0x9c, 0xfd, 0x6b, 0xa3, 0x90,
    -	0xdb, 0x8a, 0xf7, 0xec, 0x66, 0xef, 0xd9, 0xcd, 0xde, 0xb3, 0x9b, 0xbd, 0x67, 0x37, 0x7b, 0xcf,
    -	0x6e, 0xf6, 0x9e, 0xdd, 0xec, 0x5d, 0x6a, 0x37, 0xfb, 0xbf, 0x2d, 0x38, 0xae, 0x8e, 0x2f, 0xe3,
    -	0xc2, 0xfe, 0x19, 0x98, 0xe2, 0xcb, 0xcd, 0x70, 0xc6, 0x16, 0xc7, 0xf5, 0xc5, 0xcc, 0x99, 0x9b,
    -	0x78, 0x34, 0x60, 0x14, 0xe4, 0xaf, 0xaf, 0x32, 0x10, 0x38, 0xab, 0x1a, 0xfb, 0x97, 0x87, 0xa0,
    -	0x7f, 0x69, 0x97, 0x78, 0xd1, 0x11, 0x5c, 0x6d, 0x6a, 0x30, 0xe6, 0x7a, 0xbb, 0x7e, 0x63, 0x97,
    -	0xd4, 0x39, 0xfe, 0x20, 0x37, 0xf0, 0x13, 0x82, 0xf5, 0xd8, 0x8a, 0xc1, 0x02, 0x27, 0x58, 0x3e,
    -	0x08, 0xeb, 0xc3, 0x25, 0x18, 0xe0, 0x87, 0x8f, 0x30, 0x3d, 0x64, 0xee, 0xd9, 0xac, 0x13, 0xc5,
    -	0x91, 0x1a, 0x5b, 0x46, 0xf8, 0xe1, 0x26, 0x8a, 0xa3, 0x4f, 0xc3, 0xd8, 0xa6, 0x1b, 0x84, 0xd1,
    -	0x86, 0xdb, 0xa4, 0x47, 0x43, 0xb3, 0x75, 0x1f, 0xd6, 0x06, 0xd5, 0x0f, 0xcb, 0x06, 0x27, 0x9c,
    -	0xe0, 0x8c, 0xb6, 0x60, 0xb4, 0xe1, 0xe8, 0x55, 0x0d, 0x1e, 0xb8, 0x2a, 0x75, 0x3a, 0xac, 0xea,
    -	0x8c, 0xb0, 0xc9, 0x97, 0x2e, 0xa7, 0x1a, 0x53, 0x98, 0x0f, 0x31, 0x75, 0x86, 0x5a, 0x4e, 0x5c,
    -	0x53, 0xce, 0x71, 0x54, 0x40, 0x63, 0x8e, 0xec, 0x25, 0x53, 0x40, 0xd3, 0xdc, 0xd5, 0x3f, 0x05,
    -	0x25, 0x42, 0xbb, 0x90, 0x32, 0x16, 0x07, 0xcc, 0x85, 0xde, 0xda, 0xba, 0xe6, 0xd6, 0x02, 0xdf,
    -	0xb4, 0xf3, 0x2c, 0x49, 0x4e, 0x38, 0x66, 0x8a, 0x16, 0x60, 0x20, 0x24, 0x81, 0xab, 0x74, 0xc9,
    -	0x1d, 0x86, 0x91, 0x91, 0xf1, 0xe7, 0x7d, 0xfc, 0x37, 0x16, 0x45, 0xe9, 0xf4, 0x72, 0x98, 0x2a,
    -	0x96, 0x1d, 0x06, 0xda, 0xf4, 0x9a, 0x63, 0x50, 0x2c, 0xb0, 0xe8, 0x75, 0x18, 0x0c, 0x48, 0x83,
    -	0x19, 0x12, 0x47, 0x7b, 0x9f, 0xe4, 0xdc, 0x2e, 0xc9, 0xcb, 0x61, 0xc9, 0x00, 0x5d, 0x01, 0x14,
    -	0x10, 0x2a, 0xe0, 0xb9, 0xde, 0x96, 0x72, 0xef, 0x16, 0x1b, 0xad, 0x12, 0xa4, 0x71, 0x4c, 0x21,
    -	0x5f, 0x76, 0xe2, 0x8c, 0x62, 0xe8, 0x12, 0x4c, 0x2a, 0xe8, 0x8a, 0x17, 0x46, 0x0e, 0xdd, 0xe0,
    -	0xc6, 0x19, 0x2f, 0xa5, 0x5f, 0xc1, 0x49, 0x02, 0x9c, 0x2e, 0x63, 0xff, 0x9c, 0x05, 0xbc, 0x9f,
    -	0x8f, 0x40, 0xab, 0xf0, 0x9a, 0xa9, 0x55, 0x38, 0x99, 0x3b, 0x72, 0x39, 0x1a, 0x85, 0x9f, 0xb3,
    -	0x60, 0x58, 0x1b, 0xd9, 0x78, 0xce, 0x5a, 0x1d, 0xe6, 0x6c, 0x1b, 0x26, 0xe8, 0x4c, 0xbf, 0x7a,
    -	0x33, 0x24, 0xc1, 0x2e, 0xa9, 0xb3, 0x89, 0x59, 0xb8, 0xbf, 0x89, 0xa9, 0x5c, 0x49, 0x57, 0x13,
    -	0x0c, 0x71, 0xaa, 0x0a, 0xfb, 0x53, 0xb2, 0xa9, 0xca, 0xf3, 0xb6, 0xa6, 0xc6, 0x3c, 0xe1, 0x79,
    -	0xab, 0x46, 0x15, 0xc7, 0x34, 0x74, 0xa9, 0x6d, 0xfb, 0x61, 0x94, 0xf4, 0xbc, 0xbd, 0xec, 0x87,
    -	0x11, 0x66, 0x18, 0xfb, 0x79, 0x80, 0xa5, 0xdb, 0xa4, 0xc6, 0x67, 0xac, 0x7e, 0xe9, 0xb1, 0xf2,
    -	0x2f, 0x3d, 0xf6, 0x1f, 0x58, 0x30, 0xb6, 0xbc, 0x60, 0x9c, 0x5c, 0xb3, 0x00, 0xfc, 0xa6, 0x76,
    -	0xe3, 0xc6, 0xba, 0x74, 0xff, 0xe0, 0x16, 0x70, 0x05, 0xc5, 0x1a, 0x05, 0x3a, 0x09, 0xc5, 0x46,
    -	0xdb, 0x13, 0x6a, 0xcf, 0x41, 0x7a, 0x3c, 0xae, 0xb6, 0x3d, 0x4c, 0x61, 0xda, 0xab, 0xae, 0x62,
    -	0xcf, 0xaf, 0xba, 0xba, 0x46, 0x73, 0x41, 0x65, 0xe8, 0xbf, 0x75, 0xcb, 0xad, 0xf3, 0x37, 0xf3,
    -	0xc2, 0x35, 0xe5, 0xc6, 0x8d, 0x95, 0xc5, 0x10, 0x73, 0xb8, 0xfd, 0xa5, 0x22, 0xcc, 0x2c, 0x37,
    -	0xc8, 0xed, 0x77, 0x18, 0x37, 0xa0, 0xd7, 0x37, 0x69, 0x07, 0x53, 0x20, 0x1d, 0xf4, 0xdd, 0x61,
    -	0xf7, 0xfe, 0xd8, 0x84, 0x41, 0xee, 0x78, 0x2a, 0xa3, 0x08, 0x64, 0x9a, 0xfb, 0xf2, 0x3b, 0x64,
    -	0x96, 0x3b, 0xb0, 0x0a, 0x73, 0x9f, 0x3a, 0x30, 0x05, 0x14, 0x4b, 0xe6, 0x33, 0x2f, 0xc3, 0x88,
    -	0x4e, 0x79, 0xa0, 0x17, 0xc0, 0xdf, 0x5b, 0x84, 0x09, 0xda, 0x82, 0x07, 0x3a, 0x10, 0xd7, 0xd2,
    -	0x03, 0x71, 0xd8, 0xaf, 0x40, 0xbb, 0x8f, 0xc6, 0x5b, 0xc9, 0xd1, 0xb8, 0x98, 0x37, 0x1a, 0x47,
    -	0x3d, 0x06, 0xdf, 0x67, 0xc1, 0xd4, 0x72, 0xc3, 0xaf, 0xed, 0x24, 0x5e, 0x6a, 0xbe, 0x08, 0xc3,
    -	0x74, 0x3b, 0x0e, 0x8d, 0xa0, 0x25, 0x46, 0x18, 0x1b, 0x81, 0xc2, 0x3a, 0x9d, 0x56, 0xec, 0xda,
    -	0xb5, 0x95, 0xc5, 0xac, 0xe8, 0x37, 0x02, 0x85, 0x75, 0x3a, 0xfb, 0xf7, 0x2c, 0x38, 0x7d, 0x69,
    -	0x61, 0x29, 0x9e, 0x8a, 0xa9, 0x00, 0x3c, 0xe7, 0x60, 0xa0, 0x55, 0xd7, 0x9a, 0x12, 0xab, 0x85,
    -	0x17, 0x59, 0x2b, 0x04, 0xf6, 0xdd, 0x12, 0x5c, 0xea, 0x1a, 0xc0, 0x25, 0x5c, 0x59, 0x10, 0xfb,
    -	0xae, 0xb4, 0x02, 0x59, 0xb9, 0x56, 0xa0, 0xc7, 0x61, 0x90, 0x9e, 0x0b, 0x6e, 0x4d, 0xb6, 0x9b,
    -	0x1b, 0xf4, 0x39, 0x08, 0x4b, 0x9c, 0xfd, 0xb3, 0x16, 0x4c, 0x5d, 0x72, 0x23, 0x7a, 0x68, 0x27,
    -	0x23, 0xcc, 0xd0, 0x53, 0x3b, 0x74, 0x23, 0x3f, 0xd8, 0x4b, 0x46, 0x98, 0xc1, 0x0a, 0x83, 0x35,
    -	0x2a, 0xfe, 0x41, 0xbb, 0x2e, 0x7b, 0x49, 0x51, 0x30, 0xed, 0x6e, 0x58, 0xc0, 0xb1, 0xa2, 0xa0,
    -	0xfd, 0x55, 0x77, 0x03, 0xa6, 0xb2, 0xdc, 0x13, 0x1b, 0xb7, 0xea, 0xaf, 0x45, 0x89, 0xc0, 0x31,
    -	0x8d, 0xfd, 0x17, 0x16, 0x94, 0x2f, 0xf1, 0xf7, 0xa0, 0x9b, 0x61, 0xce, 0xa6, 0xfb, 0x3c, 0x94,
    -	0x88, 0x34, 0x10, 0xc8, 0xb7, 0xb1, 0x52, 0x10, 0x55, 0x96, 0x03, 0x1e, 0xe8, 0x46, 0xd1, 0xf5,
    -	0xf0, 0x9c, 0xfc, 0x60, 0xef, 0x81, 0x97, 0x01, 0x11, 0xbd, 0x2e, 0x3d, 0xf2, 0x0f, 0x0b, 0x21,
    -	0xb2, 0x94, 0xc2, 0xe2, 0x8c, 0x12, 0xf6, 0x8f, 0x59, 0x70, 0x5c, 0x7d, 0xf0, 0xbb, 0xee, 0x33,
    -	0xed, 0xaf, 0x15, 0x60, 0xf4, 0xf2, 0xc6, 0x46, 0xe5, 0x12, 0x89, 0xb4, 0x59, 0xd9, 0xd9, 0xec,
    -	0x8f, 0x35, 0xeb, 0x65, 0xa7, 0x3b, 0x62, 0x3b, 0x72, 0x1b, 0xb3, 0x3c, 0x80, 0xdc, 0xec, 0x8a,
    -	0x17, 0x5d, 0x0d, 0xaa, 0x51, 0xe0, 0x7a, 0x5b, 0x99, 0x33, 0x5d, 0xca, 0x2c, 0xc5, 0x3c, 0x99,
    -	0x05, 0x3d, 0x0f, 0x03, 0x2c, 0x82, 0x9d, 0x1c, 0x84, 0x87, 0xd5, 0x15, 0x8b, 0x41, 0xef, 0xed,
    -	0x97, 0x4b, 0xd7, 0xf0, 0x0a, 0xff, 0x83, 0x05, 0x29, 0xba, 0x06, 0xc3, 0xdb, 0x51, 0xd4, 0xba,
    -	0x4c, 0x9c, 0x3a, 0x09, 0xe4, 0x2e, 0x7b, 0x26, 0x6b, 0x97, 0xa5, 0x9d, 0xc0, 0xc9, 0xe2, 0x8d,
    -	0x29, 0x86, 0x85, 0x58, 0xe7, 0x63, 0x57, 0x01, 0x62, 0xdc, 0x21, 0x19, 0x6e, 0xec, 0x0d, 0x28,
    -	0xd1, 0xcf, 0x9d, 0x6b, 0xb8, 0x4e, 0x67, 0xd3, 0xf8, 0xd3, 0x50, 0x92, 0x86, 0xef, 0x50, 0x84,
    -	0xbb, 0x60, 0x27, 0x92, 0xb4, 0x8b, 0x87, 0x38, 0xc6, 0xdb, 0x8f, 0x81, 0xf0, 0x2d, 0xed, 0xc4,
    -	0xd2, 0xde, 0x84, 0x63, 0xcc, 0x49, 0xd6, 0x89, 0xb6, 0x8d, 0x39, 0xda, 0x7d, 0x32, 0x3c, 0x23,
    -	0xee, 0x75, 0xfc, 0xcb, 0xa6, 0xb5, 0xc7, 0xc9, 0x23, 0x92, 0x63, 0x7c, 0xc7, 0xb3, 0xff, 0xbc,
    -	0x0f, 0x1e, 0x5e, 0xa9, 0xe6, 0xc7, 0x69, 0x7a, 0x09, 0x46, 0xb8, 0xb8, 0x48, 0xa7, 0x86, 0xd3,
    -	0x10, 0xf5, 0x2a, 0x0d, 0xe8, 0x86, 0x86, 0xc3, 0x06, 0x25, 0x3a, 0x0d, 0x45, 0xf7, 0x6d, 0x2f,
    -	0xf9, 0x74, 0x6f, 0xe5, 0x8d, 0x75, 0x4c, 0xe1, 0x14, 0x4d, 0x25, 0x4f, 0xbe, 0xa5, 0x2b, 0xb4,
    -	0x92, 0x3e, 0x5f, 0x83, 0x31, 0x37, 0xac, 0x85, 0xee, 0x8a, 0x47, 0xd7, 0xa9, 0xb6, 0xd2, 0x95,
    -	0xce, 0x81, 0x36, 0x5a, 0x61, 0x71, 0x82, 0x5a, 0x3b, 0x5f, 0xfa, 0x7b, 0x96, 0x5e, 0xbb, 0x46,
    -	0x89, 0xa0, 0xdb, 0x7f, 0x8b, 0x7d, 0x5d, 0xc8, 0x54, 0xf0, 0x62, 0xfb, 0xe7, 0x1f, 0x1c, 0x62,
    -	0x89, 0xa3, 0x17, 0xba, 0xda, 0xb6, 0xd3, 0x9a, 0x6b, 0x47, 0xdb, 0x8b, 0x6e, 0x58, 0xf3, 0x77,
    -	0x49, 0xb0, 0xc7, 0xee, 0xe2, 0x43, 0xf1, 0x85, 0x4e, 0x21, 0x16, 0x2e, 0xcf, 0x55, 0x28, 0x25,
    -	0x4e, 0x97, 0x41, 0x73, 0x30, 0x2e, 0x81, 0x55, 0x12, 0xb2, 0x23, 0x60, 0x98, 0xb1, 0x51, 0x8f,
    -	0xe9, 0x04, 0x58, 0x31, 0x49, 0xd2, 0x9b, 0x02, 0x2e, 0x1c, 0x86, 0x80, 0xfb, 0x41, 0x18, 0x75,
    -	0x3d, 0x37, 0x72, 0x9d, 0xc8, 0xe7, 0xf6, 0x23, 0x7e, 0xed, 0x66, 0x0a, 0xe6, 0x15, 0x1d, 0x81,
    -	0x4d, 0x3a, 0xfb, 0xdf, 0xf7, 0xc1, 0x24, 0x1b, 0xb6, 0xf7, 0x66, 0xd8, 0x77, 0xd2, 0x0c, 0xbb,
    -	0x96, 0x9e, 0x61, 0x87, 0x21, 0xb9, 0xdf, 0xf7, 0x34, 0xfb, 0x34, 0x94, 0xd4, 0xfb, 0x41, 0xf9,
    -	0x80, 0xd8, 0xca, 0x79, 0x40, 0xdc, 0xfd, 0xf4, 0x96, 0x2e, 0x69, 0xc5, 0x4c, 0x97, 0xb4, 0xaf,
    -	0x58, 0x10, 0x1b, 0x16, 0xd0, 0x1b, 0x50, 0x6a, 0xf9, 0xcc, 0xc3, 0x35, 0x90, 0x6e, 0xe3, 0x8f,
    -	0x75, 0xb4, 0x4c, 0xf0, 0x50, 0x75, 0x01, 0xef, 0x85, 0x8a, 0x2c, 0x8a, 0x63, 0x2e, 0xe8, 0x0a,
    -	0x0c, 0xb6, 0x02, 0x52, 0x8d, 0x58, 0x1c, 0xa5, 0xde, 0x19, 0xf2, 0x59, 0xc3, 0x0b, 0x62, 0xc9,
    -	0xc1, 0xfe, 0x85, 0x02, 0x4c, 0x24, 0x49, 0xd1, 0xab, 0xd0, 0x47, 0x6e, 0x93, 0x9a, 0x68, 0x6f,
    -	0xe6, 0x51, 0x1c, 0xab, 0x26, 0x78, 0x07, 0xd0, 0xff, 0x98, 0x95, 0x42, 0x97, 0x61, 0x90, 0x9e,
    -	0xc3, 0x97, 0x54, 0xcc, 0xc0, 0x47, 0xf2, 0xce, 0x72, 0x25, 0xd0, 0xf0, 0xc6, 0x09, 0x10, 0x96,
    -	0xc5, 0x99, 0x1f, 0x58, 0xad, 0x55, 0xa5, 0x57, 0x9c, 0xa8, 0xd3, 0x4d, 0x7c, 0x63, 0xa1, 0xc2,
    -	0x89, 0x04, 0x37, 0xee, 0x07, 0x26, 0x81, 0x38, 0x66, 0x82, 0x3e, 0x02, 0xfd, 0x61, 0x83, 0x90,
    -	0x96, 0x30, 0xf4, 0x67, 0x2a, 0x17, 0xab, 0x94, 0x40, 0x70, 0x62, 0xca, 0x08, 0x06, 0xc0, 0xbc,
    -	0xa0, 0xfd, 0x8b, 0x16, 0x00, 0x77, 0x9c, 0x73, 0xbc, 0x2d, 0x72, 0x04, 0xfa, 0xf8, 0x45, 0xe8,
    -	0x0b, 0x5b, 0xa4, 0xd6, 0xc9, 0x7d, 0x3b, 0x6e, 0x4f, 0xb5, 0x45, 0x6a, 0xf1, 0x9c, 0xa5, 0xff,
    -	0x30, 0x2b, 0x6d, 0x7f, 0x3f, 0xc0, 0x58, 0x4c, 0xb6, 0x12, 0x91, 0x26, 0x7a, 0xd6, 0x08, 0x5b,
    -	0x72, 0x32, 0x11, 0xb6, 0xa4, 0xc4, 0xa8, 0x35, 0xd5, 0xef, 0xa7, 0xa1, 0xd8, 0x74, 0x6e, 0x0b,
    -	0xdd, 0xde, 0xd3, 0x9d, 0x9b, 0x41, 0xf9, 0xcf, 0xae, 0x39, 0xb7, 0xf9, 0xf5, 0xf7, 0x69, 0xb9,
    -	0xc6, 0xd6, 0x9c, 0xdb, 0x5d, 0x5d, 0x8c, 0x69, 0x25, 0xac, 0x2e, 0xd7, 0x13, 0x3e, 0x61, 0x3d,
    -	0xd5, 0xe5, 0x7a, 0xc9, 0xba, 0x5c, 0xaf, 0x87, 0xba, 0x5c, 0x0f, 0xdd, 0x81, 0x41, 0xe1, 0xb2,
    -	0x29, 0x22, 0xc0, 0x5d, 0xe8, 0xa1, 0x3e, 0xe1, 0xf1, 0xc9, 0xeb, 0xbc, 0x20, 0xaf, 0xf7, 0x02,
    -	0xda, 0xb5, 0x5e, 0x59, 0x21, 0xfa, 0x7f, 0x2c, 0x18, 0x13, 0xbf, 0x31, 0x79, 0xbb, 0x4d, 0xc2,
    -	0x48, 0x88, 0xbf, 0x1f, 0xe8, 0xbd, 0x0d, 0xa2, 0x20, 0x6f, 0xca, 0x07, 0xe4, 0x49, 0x65, 0x22,
    -	0xbb, 0xb6, 0x28, 0xd1, 0x0a, 0xf4, 0x0b, 0x16, 0x1c, 0x6b, 0x3a, 0xb7, 0x79, 0x8d, 0x1c, 0x86,
    -	0x9d, 0xc8, 0xf5, 0x85, 0xeb, 0xc3, 0xab, 0xbd, 0x0d, 0x7f, 0xaa, 0x38, 0x6f, 0xa4, 0xb4, 0x73,
    -	0x1e, 0xcb, 0x22, 0xe9, 0xda, 0xd4, 0xcc, 0x76, 0xcd, 0x6c, 0xc2, 0x90, 0x9c, 0x6f, 0x0f, 0xd2,
    -	0x3f, 0x9c, 0xd5, 0x23, 0xe6, 0xda, 0x03, 0xad, 0xe7, 0xd3, 0x30, 0xa2, 0xcf, 0xb1, 0x07, 0x5a,
    -	0xd7, 0xdb, 0x30, 0x95, 0x31, 0x97, 0x1e, 0x68, 0x95, 0xb7, 0xe0, 0x64, 0xee, 0xfc, 0x78, 0xa0,
    -	0xfe, 0xfd, 0x5f, 0xb3, 0xf4, 0x7d, 0xf0, 0x08, 0x8c, 0x22, 0x0b, 0xa6, 0x51, 0xe4, 0x4c, 0xe7,
    -	0x95, 0x93, 0x63, 0x19, 0x79, 0x4b, 0x6f, 0x34, 0xdd, 0xd5, 0xd1, 0xeb, 0x30, 0xd0, 0xa0, 0x10,
    -	0xe9, 0xf8, 0x6b, 0x77, 0x5f, 0x91, 0xb1, 0x38, 0xca, 0xe0, 0x21, 0x16, 0x1c, 0xec, 0x5f, 0xb1,
    -	0xa0, 0xef, 0x08, 0x7a, 0x02, 0x9b, 0x3d, 0xf1, 0x6c, 0x2e, 0x6b, 0x11, 0x0c, 0x7f, 0x16, 0x3b,
    -	0xb7, 0x96, 0x6e, 0x47, 0xc4, 0x0b, 0xd9, 0x99, 0x9e, 0xd9, 0x31, 0xfb, 0x16, 0x4c, 0xad, 0xfa,
    -	0x4e, 0x7d, 0xde, 0x69, 0x38, 0x5e, 0x8d, 0x04, 0x2b, 0xde, 0xd6, 0x81, 0xbc, 0xd6, 0x0b, 0x5d,
    -	0xbd, 0xd6, 0x5f, 0x82, 0x01, 0xb7, 0xa5, 0x05, 0xf7, 0x3e, 0x4b, 0x3b, 0x70, 0xa5, 0x22, 0xe2,
    -	0x7a, 0x23, 0xa3, 0x72, 0x06, 0xc5, 0x82, 0x9e, 0x8e, 0x3c, 0x77, 0x17, 0xeb, 0xcb, 0x1f, 0x79,
    -	0x2a, 0xc5, 0x27, 0x43, 0x40, 0x19, 0x8e, 0xcd, 0xdb, 0x60, 0x54, 0x21, 0x5e, 0x7d, 0x61, 0x18,
    -	0x74, 0xf9, 0x97, 0x8a, 0xe1, 0x7f, 0x22, 0x5b, 0xba, 0x4e, 0x75, 0x8c, 0xf6, 0x9e, 0x89, 0x03,
    -	0xb0, 0x64, 0x64, 0xbf, 0x04, 0x99, 0x21, 0x3b, 0xba, 0x6b, 0x4e, 0xec, 0x8f, 0xc1, 0x24, 0x2b,
    -	0x79, 0x40, 0xad, 0x84, 0x9d, 0xd0, 0xf7, 0x66, 0xc4, 0x69, 0xb5, 0xff, 0x8d, 0x05, 0x68, 0xcd,
    -	0xaf, 0xbb, 0x9b, 0x7b, 0x82, 0x39, 0xff, 0xfe, 0xb7, 0xa1, 0xcc, 0xaf, 0x7d, 0xc9, 0x58, 0xa6,
    -	0x0b, 0x0d, 0x27, 0x0c, 0x35, 0x5d, 0xf3, 0x13, 0xa2, 0xde, 0xf2, 0x46, 0x67, 0x72, 0xdc, 0x8d,
    -	0x1f, 0x7a, 0x23, 0x11, 0xa8, 0xed, 0x43, 0xa9, 0x40, 0x6d, 0x4f, 0x64, 0x7a, 0x7c, 0xa4, 0x5b,
    -	0x2f, 0x03, 0xb8, 0xd9, 0x5f, 0xb0, 0x60, 0x7c, 0x3d, 0x11, 0x9b, 0xf3, 0x1c, 0x33, 0x7f, 0x67,
    -	0xd8, 0x50, 0xaa, 0x0c, 0x8a, 0x05, 0xf6, 0xd0, 0x75, 0x8c, 0x7f, 0x63, 0x41, 0x1c, 0x22, 0xe8,
    -	0x08, 0xa4, 0xda, 0x05, 0x43, 0xaa, 0xcd, 0xbc, 0x21, 0xa8, 0xe6, 0xe4, 0x09, 0xb5, 0xe8, 0x8a,
    -	0x1a, 0x93, 0x0e, 0x97, 0x83, 0x98, 0x0d, 0x5f, 0x67, 0x63, 0xe6, 0xc0, 0xa9, 0xd1, 0xf8, 0xc3,
    -	0x02, 0x20, 0x45, 0xdb, 0x73, 0x70, 0xbf, 0x74, 0x89, 0xc3, 0x09, 0xee, 0xb7, 0x0b, 0x88, 0x39,
    -	0x70, 0x04, 0x8e, 0x17, 0x72, 0xb6, 0xae, 0xd0, 0xaa, 0x1e, 0xcc, 0x3b, 0x64, 0x46, 0xbe, 0xf6,
    -	0x5b, 0x4d, 0x71, 0xc3, 0x19, 0x35, 0x68, 0x8e, 0x39, 0xfd, 0xbd, 0x3a, 0xe6, 0x0c, 0x74, 0x79,
    -	0xb6, 0xfa, 0x55, 0x0b, 0x46, 0x55, 0x37, 0xbd, 0x4b, 0x1e, 0x37, 0xa8, 0xf6, 0xe4, 0x9c, 0x2b,
    -	0x15, 0xad, 0xc9, 0xec, 0xbc, 0xfd, 0x2e, 0xf6, 0xfc, 0xd8, 0x69, 0xb8, 0x77, 0x88, 0x8a, 0x9a,
    -	0x5b, 0x16, 0xcf, 0x89, 0x05, 0xf4, 0xde, 0x7e, 0x79, 0x54, 0xfd, 0xe3, 0x51, 0x2f, 0xe3, 0x22,
    -	0xf6, 0x4f, 0xd1, 0xc5, 0x6e, 0x4e, 0x45, 0xf4, 0x22, 0xf4, 0xb7, 0xb6, 0x9d, 0x90, 0x24, 0x1e,
    -	0x81, 0xf5, 0x57, 0x28, 0xf0, 0xde, 0x7e, 0x79, 0x4c, 0x15, 0x60, 0x10, 0xcc, 0xa9, 0x7b, 0x0f,
    -	0x99, 0x98, 0x9e, 0x9c, 0x5d, 0x43, 0x26, 0xfe, 0x95, 0x05, 0x7d, 0xeb, 0xf4, 0xf4, 0x7a, 0xf0,
    -	0x5b, 0xc0, 0x6b, 0xc6, 0x16, 0x70, 0x2a, 0x2f, 0x61, 0x4b, 0xee, 0xea, 0x5f, 0x4e, 0xac, 0xfe,
    -	0x33, 0xb9, 0x1c, 0x3a, 0x2f, 0xfc, 0x26, 0x0c, 0xb3, 0x34, 0x30, 0xe2, 0xc1, 0xdb, 0xf3, 0xc6,
    -	0x82, 0x2f, 0x27, 0x16, 0xfc, 0xb8, 0x46, 0xaa, 0xad, 0xf4, 0x27, 0x61, 0x50, 0xbc, 0xa0, 0x4a,
    -	0xbe, 0xe2, 0x16, 0xb4, 0x58, 0xe2, 0xed, 0x1f, 0x2f, 0x82, 0x91, 0x76, 0x06, 0xfd, 0x9a, 0x05,
    -	0xb3, 0x01, 0xf7, 0xac, 0xae, 0x2f, 0xb6, 0x03, 0xd7, 0xdb, 0xaa, 0xd6, 0xb6, 0x49, 0xbd, 0xdd,
    -	0x70, 0xbd, 0xad, 0x95, 0x2d, 0xcf, 0x57, 0xe0, 0xa5, 0xdb, 0xa4, 0xd6, 0x66, 0x56, 0xcf, 0x2e,
    -	0x39, 0x6e, 0xd4, 0x0b, 0x85, 0xe7, 0xee, 0xee, 0x97, 0x67, 0xf1, 0x81, 0x78, 0xe3, 0x03, 0xb6,
    -	0x05, 0xfd, 0x9e, 0x05, 0x17, 0x78, 0x36, 0x96, 0xde, 0xdb, 0xdf, 0x41, 0x89, 0x50, 0x91, 0xac,
    -	0x62, 0x26, 0x1b, 0x24, 0x68, 0xce, 0x7f, 0x50, 0x74, 0xe8, 0x85, 0xca, 0xc1, 0xea, 0xc2, 0x07,
    -	0x6d, 0x9c, 0xfd, 0x8f, 0x8a, 0x30, 0x2a, 0x42, 0xeb, 0x89, 0x33, 0xe0, 0x45, 0x63, 0x4a, 0x3c,
    -	0x92, 0x98, 0x12, 0x93, 0x06, 0xf1, 0xe1, 0x6c, 0xff, 0x21, 0x4c, 0xd2, 0xcd, 0xf9, 0x32, 0x71,
    -	0x82, 0xe8, 0x26, 0x71, 0xb8, 0xbf, 0x5d, 0xf1, 0xc0, 0xbb, 0xbf, 0x52, 0xfc, 0xae, 0x26, 0x99,
    -	0xe1, 0x34, 0xff, 0xef, 0xa4, 0x33, 0xc7, 0x83, 0x89, 0x54, 0x74, 0xc4, 0x37, 0xa1, 0xa4, 0x9e,
    -	0xff, 0x88, 0x4d, 0xa7, 0x73, 0x90, 0xd1, 0x24, 0x07, 0xae, 0x57, 0x8c, 0x9f, 0x9e, 0xc5, 0xec,
    -	0xec, 0xbf, 0x57, 0x30, 0x2a, 0xe4, 0x83, 0xb8, 0x0e, 0x43, 0x4e, 0xc8, 0x02, 0x1f, 0xd7, 0x3b,
    -	0xa9, 0x7e, 0x53, 0xd5, 0xb0, 0x27, 0x58, 0x73, 0xa2, 0x24, 0x56, 0x3c, 0xd0, 0x65, 0xee, 0xd5,
    -	0xb8, 0x4b, 0x3a, 0xe9, 0x7d, 0x53, 0xdc, 0x40, 0xfa, 0x3d, 0xee, 0x12, 0x2c, 0xca, 0xa3, 0x4f,
    -	0x70, 0xb7, 0xd3, 0x2b, 0x9e, 0x7f, 0xcb, 0xbb, 0xe4, 0xfb, 0x32, 0x8c, 0x4a, 0x6f, 0x0c, 0x27,
    -	0xa5, 0xb3, 0xa9, 0x2a, 0x8e, 0x4d, 0x6e, 0xbd, 0x85, 0x1b, 0xfe, 0x0c, 0xb0, 0xec, 0x13, 0xe6,
    -	0x6b, 0xfb, 0x10, 0x11, 0x18, 0x17, 0x71, 0x1b, 0x25, 0x4c, 0xf4, 0x5d, 0xe6, 0x0d, 0xd7, 0x2c,
    -	0x1d, 0x5b, 0x28, 0xae, 0x98, 0x2c, 0x70, 0x92, 0xa7, 0xfd, 0x33, 0x16, 0xb0, 0x97, 0xc7, 0x47,
    -	0x20, 0x8f, 0x7c, 0xd8, 0x94, 0x47, 0xa6, 0xf3, 0x3a, 0x39, 0x47, 0x14, 0x79, 0x81, 0xcf, 0xac,
    -	0x4a, 0xe0, 0xdf, 0xde, 0x13, 0xbe, 0x42, 0xdd, 0x2f, 0x57, 0xf6, 0x7f, 0xb7, 0xf8, 0x26, 0x16,
    -	0xc7, 0x69, 0xf8, 0x2c, 0x0c, 0xd5, 0x9c, 0x96, 0x53, 0xe3, 0x39, 0xd2, 0x72, 0x15, 0x9d, 0x46,
    -	0xa1, 0xd9, 0x05, 0x51, 0x82, 0x2b, 0xee, 0x64, 0xfc, 0xcf, 0x21, 0x09, 0xee, 0xaa, 0xac, 0x53,
    -	0x55, 0xce, 0xec, 0xc0, 0xa8, 0xc1, 0xec, 0x81, 0x6a, 0x79, 0x3e, 0xcb, 0x8f, 0x58, 0x15, 0xaf,
    -	0xb6, 0x09, 0x93, 0x9e, 0xf6, 0x9f, 0x1e, 0x28, 0xf2, 0xe6, 0xfc, 0x58, 0xb7, 0x43, 0x94, 0x9d,
    -	0x3e, 0xda, 0xa3, 0xe6, 0x04, 0x1b, 0x9c, 0xe6, 0x6c, 0xff, 0x84, 0x05, 0x0f, 0xe9, 0x84, 0xda,
    -	0xbb, 0xa9, 0x6e, 0xd6, 0xa7, 0x45, 0x18, 0xf2, 0x5b, 0x24, 0x70, 0x22, 0x3f, 0x10, 0xa7, 0xc6,
    -	0x79, 0xd9, 0xe9, 0x57, 0x05, 0xfc, 0x9e, 0xc8, 0xf8, 0x21, 0xb9, 0x4b, 0x38, 0x56, 0x25, 0xe9,
    -	0xd5, 0x9a, 0x75, 0x46, 0x28, 0x5e, 0xc8, 0xb1, 0x3d, 0x80, 0x39, 0x32, 0x84, 0x58, 0x60, 0xec,
    -	0x3f, 0xb7, 0xf8, 0xc4, 0xd2, 0x9b, 0x8e, 0xde, 0x86, 0x89, 0xa6, 0x13, 0xd5, 0xb6, 0x97, 0x6e,
    -	0xb7, 0x02, 0x6e, 0xcb, 0x93, 0xfd, 0xf4, 0x74, 0xb7, 0x7e, 0xd2, 0x3e, 0x32, 0xf6, 0xa4, 0x5d,
    -	0x4b, 0x30, 0xc3, 0x29, 0xf6, 0xe8, 0x26, 0x0c, 0x33, 0x18, 0x7b, 0xfc, 0x19, 0x76, 0x12, 0x0d,
    -	0xf2, 0x6a, 0x53, 0xbe, 0x20, 0x6b, 0x31, 0x1f, 0xac, 0x33, 0xb5, 0xbf, 0x52, 0xe4, 0xab, 0x9d,
    -	0x89, 0xf2, 0x4f, 0xc2, 0x60, 0xcb, 0xaf, 0x2f, 0xac, 0x2c, 0x62, 0x31, 0x0a, 0xea, 0x18, 0xa9,
    -	0x70, 0x30, 0x96, 0x78, 0x74, 0x1e, 0x86, 0xc4, 0x4f, 0x69, 0x7b, 0x65, 0x7b, 0xb3, 0xa0, 0x0b,
    -	0xb1, 0xc2, 0xa2, 0xe7, 0x00, 0x5a, 0x81, 0xbf, 0xeb, 0xd6, 0x59, 0x30, 0x98, 0xa2, 0xe9, 0xc6,
    -	0x55, 0x51, 0x18, 0xac, 0x51, 0xa1, 0x57, 0x60, 0xb4, 0xed, 0x85, 0x5c, 0x1c, 0xd1, 0x42, 0x6e,
    -	0x2b, 0x07, 0xa3, 0x6b, 0x3a, 0x12, 0x9b, 0xb4, 0x68, 0x0e, 0x06, 0x22, 0x87, 0xb9, 0x25, 0xf5,
    -	0xe7, 0x7b, 0x5b, 0x6f, 0x50, 0x0a, 0x3d, 0x1d, 0x17, 0x2d, 0x80, 0x45, 0x41, 0xf4, 0xa6, 0x7c,
    -	0x87, 0xcd, 0x37, 0x76, 0xf1, 0xcc, 0xa1, 0xb7, 0x43, 0x40, 0x7b, 0x85, 0x2d, 0x9e, 0x4f, 0x18,
    -	0xbc, 0xd0, 0xcb, 0x00, 0xe4, 0x76, 0x44, 0x02, 0xcf, 0x69, 0x28, 0x67, 0x42, 0x25, 0x17, 0x2c,
    -	0xfa, 0xeb, 0x7e, 0x74, 0x2d, 0x24, 0x4b, 0x8a, 0x02, 0x6b, 0xd4, 0xf6, 0xef, 0x95, 0x00, 0x62,
    -	0xb9, 0x1d, 0xdd, 0x49, 0x6d, 0x5c, 0xcf, 0x74, 0x96, 0xf4, 0x0f, 0x6f, 0xd7, 0x42, 0x9f, 0xb7,
    -	0x60, 0x58, 0xc4, 0xbc, 0x61, 0x23, 0x54, 0xe8, 0xbc, 0x71, 0x9a, 0xa1, 0x77, 0x68, 0x09, 0xde,
    -	0x84, 0xe7, 0xe5, 0x0c, 0xd5, 0x30, 0x5d, 0x5b, 0xa1, 0x57, 0x8c, 0xde, 0x2f, 0xaf, 0x8a, 0x45,
    -	0xa3, 0x2b, 0xd5, 0x55, 0xb1, 0xc4, 0xce, 0x08, 0xfd, 0x96, 0x78, 0xcd, 0xb8, 0x25, 0xf6, 0xe5,
    -	0x3f, 0x34, 0x35, 0xc4, 0xd7, 0x6e, 0x17, 0x44, 0x54, 0xd1, 0x83, 0x4e, 0xf4, 0xe7, 0xbf, 0x8e,
    -	0xd4, 0xee, 0x49, 0x5d, 0x02, 0x4e, 0x7c, 0x1a, 0xc6, 0xeb, 0xa6, 0x10, 0x20, 0x66, 0xe2, 0x13,
    -	0x79, 0x7c, 0x13, 0x32, 0x43, 0x7c, 0xec, 0x27, 0x10, 0x38, 0xc9, 0x18, 0x55, 0x78, 0x0c, 0x92,
    -	0x15, 0x6f, 0xd3, 0x17, 0x4f, 0x6d, 0xec, 0xdc, 0xb1, 0xdc, 0x0b, 0x23, 0xd2, 0xa4, 0x94, 0xf1,
    -	0xe9, 0xbe, 0x2e, 0xca, 0x62, 0xc5, 0x05, 0xbd, 0x0e, 0x03, 0xec, 0x79, 0x5c, 0x38, 0x3d, 0x94,
    -	0xaf, 0x88, 0x37, 0x83, 0x31, 0xc6, 0x0b, 0x92, 0xfd, 0x0d, 0xb1, 0xe0, 0x80, 0x2e, 0xcb, 0xc7,
    -	0xa7, 0xe1, 0x8a, 0x77, 0x2d, 0x24, 0xec, 0xf1, 0x69, 0x69, 0xfe, 0xb1, 0xf8, 0x5d, 0x29, 0x87,
    -	0x67, 0x26, 0xed, 0x34, 0x4a, 0x52, 0x29, 0x4a, 0xfc, 0x97, 0xb9, 0x40, 0x45, 0xe8, 0xa8, 0xcc,
    -	0xe6, 0x99, 0xf9, 0x42, 0xe3, 0xee, 0xbc, 0x6e, 0xb2, 0xc0, 0x49, 0x9e, 0x54, 0x22, 0xe5, 0xab,
    -	0x5e, 0x3c, 0xd6, 0xe9, 0xb6, 0x77, 0xf0, 0x8b, 0x38, 0x3b, 0x8d, 0x38, 0x04, 0x8b, 0xf2, 0x47,
    -	0x2a, 0x1e, 0xcc, 0x78, 0x30, 0x91, 0x5c, 0xa2, 0x0f, 0x54, 0x1c, 0xf9, 0xd3, 0x3e, 0x18, 0x33,
    -	0xa7, 0x14, 0xba, 0x00, 0x25, 0xc1, 0x44, 0xe5, 0xd3, 0x51, 0xab, 0x64, 0x4d, 0x22, 0x70, 0x4c,
    -	0xc3, 0xd2, 0x28, 0xb1, 0xe2, 0x9a, 0x77, 0x76, 0x9c, 0x46, 0x49, 0x61, 0xb0, 0x46, 0x45, 0x2f,
    -	0x56, 0x37, 0x7d, 0x3f, 0x52, 0x07, 0x92, 0x9a, 0x77, 0xf3, 0x0c, 0x8a, 0x05, 0x96, 0x1e, 0x44,
    -	0x3b, 0x24, 0xf0, 0x48, 0xc3, 0x0c, 0xcf, 0xae, 0x0e, 0xa2, 0x2b, 0x3a, 0x12, 0x9b, 0xb4, 0xf4,
    -	0x38, 0xf5, 0x43, 0x36, 0x91, 0xc5, 0xf5, 0x2d, 0xf6, 0x76, 0xaf, 0xf2, 0x77, 0xfb, 0x12, 0x8f,
    -	0x3e, 0x06, 0x0f, 0xa9, 0x50, 0x68, 0x98, 0x1b, 0x79, 0x64, 0x8d, 0x03, 0x86, 0xb6, 0xe5, 0xa1,
    -	0x85, 0x6c, 0x32, 0x9c, 0x57, 0x1e, 0xbd, 0x06, 0x63, 0x42, 0xc4, 0x97, 0x1c, 0x07, 0x4d, 0xd7,
    -	0xad, 0x2b, 0x06, 0x16, 0x27, 0xa8, 0x65, 0x80, 0x79, 0x26, 0x65, 0x4b, 0x0e, 0x43, 0xe9, 0x00,
    -	0xf3, 0x3a, 0x1e, 0xa7, 0x4a, 0xa0, 0x39, 0x18, 0xe7, 0x32, 0x98, 0xeb, 0x6d, 0xf1, 0x31, 0x11,
    -	0x6f, 0xe9, 0xd4, 0x92, 0xba, 0x6a, 0xa2, 0x71, 0x92, 0x1e, 0xbd, 0x04, 0x23, 0x4e, 0x50, 0xdb,
    -	0x76, 0x23, 0x52, 0x8b, 0xda, 0x01, 0x7f, 0x64, 0xa7, 0xf9, 0xbe, 0xcd, 0x69, 0x38, 0x6c, 0x50,
    -	0xda, 0x77, 0x60, 0x2a, 0x23, 0xa0, 0x07, 0x9d, 0x38, 0x4e, 0xcb, 0x95, 0xdf, 0x94, 0x70, 0x30,
    -	0x9f, 0xab, 0xac, 0xc8, 0xaf, 0xd1, 0xa8, 0xe8, 0xec, 0x64, 0x81, 0x3f, 0xb4, 0xd4, 0xbf, 0x6a,
    -	0x76, 0x2e, 0x4b, 0x04, 0x8e, 0x69, 0xec, 0xff, 0x54, 0x80, 0xf1, 0x0c, 0xc3, 0x11, 0x4b, 0x3f,
    -	0x9b, 0xb8, 0xa4, 0xc4, 0xd9, 0x66, 0xcd, 0x7c, 0x05, 0x85, 0x03, 0xe4, 0x2b, 0x28, 0x76, 0xcb,
    -	0x57, 0xd0, 0xf7, 0x4e, 0xf2, 0x15, 0x98, 0x3d, 0xd6, 0xdf, 0x53, 0x8f, 0x65, 0xe4, 0x38, 0x18,
    -	0x38, 0x60, 0x8e, 0x03, 0xa3, 0xd3, 0x07, 0x7b, 0xe8, 0xf4, 0x1f, 0x29, 0xc0, 0x44, 0xd2, 0xe6,
    -	0x74, 0x04, 0x7a, 0xdb, 0xd7, 0x0d, 0xbd, 0xed, 0xf9, 0x5e, 0xde, 0x3e, 0xe7, 0xea, 0x70, 0x71,
    -	0x42, 0x87, 0xfb, 0x54, 0x4f, 0xdc, 0x3a, 0xeb, 0x73, 0x7f, 0xb2, 0x00, 0xc7, 0x33, 0x4d, 0x71,
    -	0x47, 0xd0, 0x37, 0x57, 0x8d, 0xbe, 0x79, 0xb6, 0xe7, 0x77, 0xe1, 0xb9, 0x1d, 0x74, 0x23, 0xd1,
    -	0x41, 0x17, 0x7a, 0x67, 0xd9, 0xb9, 0x97, 0xbe, 0x51, 0x84, 0x33, 0x99, 0xe5, 0x62, 0xb5, 0xe7,
    -	0xb2, 0xa1, 0xf6, 0x7c, 0x2e, 0xa1, 0xf6, 0xb4, 0x3b, 0x97, 0x3e, 0x1c, 0x3d, 0xa8, 0x78, 0x1f,
    -	0xcd, 0xa2, 0x3c, 0xdc, 0xa7, 0x0e, 0xd4, 0x78, 0x1f, 0xad, 0x18, 0x61, 0x93, 0xef, 0x77, 0x92,
    -	0xee, 0xf3, 0x77, 0x2c, 0x38, 0x99, 0x39, 0x36, 0x47, 0xa0, 0xeb, 0x5a, 0x37, 0x75, 0x5d, 0x4f,
    -	0xf6, 0x3c, 0x5b, 0x73, 0x94, 0x5f, 0x5f, 0x18, 0xc8, 0xf9, 0x16, 0x76, 0x93, 0xbf, 0x0a, 0xc3,
    -	0x4e, 0xad, 0x46, 0xc2, 0x70, 0xcd, 0xaf, 0xab, 0xd0, 0xe6, 0xcf, 0xb2, 0x7b, 0x56, 0x0c, 0xbe,
    -	0xb7, 0x5f, 0x9e, 0x49, 0xb2, 0x88, 0xd1, 0x58, 0xe7, 0x80, 0x3e, 0x01, 0x43, 0xa1, 0xcc, 0x4a,
    -	0xd7, 0x77, 0xff, 0x59, 0xe9, 0x98, 0x92, 0x40, 0x69, 0x2a, 0x14, 0x4b, 0xf4, 0xbf, 0xe9, 0xf1,
    -	0x76, 0xd2, 0x52, 0x65, 0x22, 0xfa, 0xcb, 0x7d, 0x44, 0xdd, 0x79, 0x0e, 0x60, 0x57, 0x5d, 0x09,
    -	0x92, 0x5a, 0x08, 0xed, 0xb2, 0xa0, 0x51, 0xa1, 0x8f, 0xc0, 0x44, 0xc8, 0x43, 0x4d, 0xc6, 0xce,
    -	0x13, 0x7c, 0x2e, 0xb2, 0x68, 0x5d, 0xd5, 0x04, 0x0e, 0xa7, 0xa8, 0xd1, 0xb2, 0xac, 0x95, 0xb9,
    -	0xc9, 0xf0, 0xe9, 0x79, 0x2e, 0xae, 0x51, 0xb8, 0xca, 0x1c, 0x4b, 0x0e, 0x02, 0xeb, 0x7e, 0xad,
    -	0x24, 0xfa, 0x04, 0x00, 0x9d, 0x44, 0x42, 0x1b, 0x31, 0x98, 0xbf, 0x85, 0xd2, 0xbd, 0xa5, 0x9e,
    -	0xe9, 0x3b, 0xce, 0x1e, 0x36, 0x2f, 0x2a, 0x26, 0x58, 0x63, 0x88, 0x1c, 0x18, 0x8d, 0xff, 0xc5,
    -	0x19, 0xa2, 0xcf, 0xe7, 0xd6, 0x90, 0x64, 0xce, 0x14, 0xdf, 0x8b, 0x3a, 0x0b, 0x6c, 0x72, 0x44,
    -	0x1f, 0x87, 0x93, 0xbb, 0xb9, 0x1e, 0x29, 0xa5, 0x38, 0xe9, 0x63, 0xbe, 0x1f, 0x4a, 0x7e, 0x79,
    -	0xfb, 0x77, 0x01, 0x1e, 0xee, 0xb0, 0xd3, 0xa3, 0x39, 0xd3, 0x9a, 0xfc, 0x74, 0x52, 0x45, 0x30,
    -	0x93, 0x59, 0xd8, 0xd0, 0x19, 0x24, 0x16, 0x54, 0xe1, 0x1d, 0x2f, 0xa8, 0x1f, 0xb2, 0x34, 0xe5,
    -	0x0d, 0x77, 0xe7, 0xfd, 0xf0, 0x01, 0x4f, 0xb0, 0x43, 0xd4, 0xe6, 0x6c, 0x66, 0xa8, 0x44, 0x9e,
    -	0xeb, 0xb9, 0x39, 0xbd, 0xeb, 0x48, 0xbe, 0x96, 0x1d, 0xbc, 0x99, 0x6b, 0x4b, 0x2e, 0x1d, 0xf4,
    -	0xfb, 0x8f, 0x2a, 0x90, 0xf3, 0x1f, 0x5a, 0x70, 0x32, 0x05, 0xe6, 0x6d, 0x20, 0xa1, 0x88, 0x2f,
    -	0xb6, 0xfe, 0x8e, 0x1b, 0x2f, 0x19, 0xf2, 0x6f, 0xb8, 0x2c, 0xbe, 0xe1, 0x64, 0x2e, 0x5d, 0xb2,
    -	0xe9, 0x5f, 0xfc, 0x93, 0xf2, 0x14, 0xab, 0xc0, 0x24, 0xc4, 0xf9, 0x4d, 0x47, 0x2d, 0x38, 0x5b,
    -	0x6b, 0x07, 0x41, 0x3c, 0x59, 0x33, 0x16, 0x27, 0xbf, 0xeb, 0x3d, 0x76, 0x77, 0xbf, 0x7c, 0x76,
    -	0xa1, 0x0b, 0x2d, 0xee, 0xca, 0x0d, 0x79, 0x80, 0x9a, 0x29, 0xbf, 0x2f, 0x91, 0x18, 0x3e, 0xd3,
    -	0x53, 0x23, 0xed, 0x25, 0xc6, 0x1f, 0xb0, 0x66, 0x78, 0x8f, 0x65, 0x70, 0x3e, 0x5a, 0xed, 0xc9,
    -	0xb7, 0x26, 0x32, 0xf7, 0xcc, 0x2a, 0x9c, 0xe9, 0x3c, 0x99, 0x0e, 0xf4, 0x78, 0xfe, 0x0f, 0x2c,
    -	0x38, 0xdd, 0x31, 0x42, 0xd3, 0xb7, 0xe1, 0x65, 0xc1, 0xfe, 0x9c, 0x05, 0x8f, 0x64, 0x96, 0x30,
    -	0x5c, 0x0c, 0x2f, 0x40, 0xa9, 0x96, 0x48, 0x6b, 0x1c, 0xc7, 0x2a, 0x51, 0x29, 0x8d, 0x63, 0x1a,
    -	0xc3, 0x93, 0xb0, 0xd0, 0xd5, 0x93, 0xf0, 0x37, 0x2d, 0x48, 0x1d, 0xf5, 0x47, 0x20, 0x79, 0xae,
    -	0x98, 0x92, 0xe7, 0x63, 0xbd, 0xf4, 0x66, 0x8e, 0xd0, 0xf9, 0x97, 0xe3, 0x70, 0x22, 0xe7, 0xed,
    -	0xeb, 0x2e, 0x4c, 0x6e, 0xd5, 0x88, 0x19, 0xec, 0xa0, 0x53, 0x10, 0xb0, 0x8e, 0x91, 0x11, 0x78,
    -	0x36, 0xe9, 0x14, 0x09, 0x4e, 0x57, 0x81, 0x3e, 0x67, 0xc1, 0x31, 0xe7, 0x56, 0xb8, 0x44, 0x6f,
    -	0x10, 0x6e, 0x6d, 0xbe, 0xe1, 0xd7, 0x76, 0xa8, 0x60, 0x26, 0x97, 0xd5, 0x0b, 0x99, 0x5a, 0xdd,
    -	0x1b, 0xd5, 0x14, 0xbd, 0x51, 0xfd, 0xf4, 0xdd, 0xfd, 0xf2, 0xb1, 0x2c, 0x2a, 0x9c, 0x59, 0x17,
    -	0xc2, 0x22, 0x7b, 0x8f, 0x13, 0x6d, 0x77, 0x0a, 0xc7, 0x91, 0xf5, 0x48, 0x99, 0x8b, 0xc4, 0x12,
    -	0x83, 0x15, 0x1f, 0xf4, 0x29, 0x28, 0x6d, 0xc9, 0x97, 0xf7, 0x19, 0x22, 0x77, 0xdc, 0x91, 0x9d,
    -	0xe3, 0x11, 0x70, 0xd7, 0x0c, 0x45, 0x84, 0x63, 0xa6, 0xe8, 0x35, 0x28, 0x7a, 0x9b, 0x61, 0xa7,
    -	0xf4, 0xfb, 0x09, 0x1f, 0x5c, 0x1e, 0xf4, 0x66, 0x7d, 0xb9, 0x8a, 0x69, 0x41, 0x74, 0x19, 0x8a,
    -	0xc1, 0xcd, 0xba, 0x30, 0x49, 0x64, 0x2e, 0x52, 0x3c, 0xbf, 0x98, 0xd3, 0x2a, 0xc6, 0x09, 0xcf,
    -	0x2f, 0x62, 0xca, 0x02, 0x55, 0xa0, 0x9f, 0x3d, 0x18, 0x15, 0xa2, 0x6d, 0xe6, 0x55, 0xbe, 0xc3,
    -	0xc3, 0x6b, 0xfe, 0x18, 0x8d, 0x11, 0x60, 0xce, 0x08, 0x6d, 0xc0, 0x40, 0x8d, 0xa5, 0x6a, 0x17,
    -	0xb2, 0xec, 0xfb, 0x33, 0x8d, 0x0f, 0x1d, 0x72, 0xd8, 0x0b, 0x5d, 0x3c, 0xa3, 0xc0, 0x82, 0x17,
    -	0xe3, 0x4a, 0x5a, 0xdb, 0x9b, 0xf2, 0xc4, 0xca, 0xe6, 0x4a, 0x5a, 0xdb, 0xcb, 0xd5, 0x8e, 0x5c,
    -	0x19, 0x05, 0x16, 0xbc, 0xd0, 0xcb, 0x50, 0xd8, 0xac, 0x89, 0xc7, 0xa0, 0x99, 0x56, 0x08, 0x33,
    -	0x6e, 0xd1, 0xfc, 0xc0, 0xdd, 0xfd, 0x72, 0x61, 0x79, 0x01, 0x17, 0x36, 0x6b, 0x68, 0x1d, 0x06,
    -	0x37, 0x79, 0xa4, 0x13, 0x61, 0x68, 0x78, 0x22, 0x3b, 0x08, 0x4b, 0x2a, 0x18, 0x0a, 0x7f, 0x58,
    -	0x28, 0x10, 0x58, 0x32, 0x61, 0xc9, 0x64, 0x54, 0xc4, 0x16, 0x11, 0x30, 0x72, 0xf6, 0x60, 0x51,
    -	0x76, 0xf8, 0x55, 0x23, 0x8e, 0xfb, 0x82, 0x35, 0x8e, 0x74, 0x56, 0x3b, 0x77, 0xda, 0x01, 0xcb,
    -	0x26, 0x20, 0x22, 0x8b, 0x65, 0xce, 0xea, 0x39, 0x49, 0xd4, 0x69, 0x56, 0x2b, 0x22, 0x1c, 0x33,
    -	0x45, 0x3b, 0x30, 0xba, 0x1b, 0xb6, 0xb6, 0x89, 0x5c, 0xd2, 0x2c, 0xd0, 0x58, 0x8e, 0x34, 0x7b,
    -	0x5d, 0x10, 0xba, 0x41, 0xd4, 0x76, 0x1a, 0xa9, 0x5d, 0x88, 0x5d, 0x6b, 0xae, 0xeb, 0xcc, 0xb0,
    -	0xc9, 0x9b, 0x76, 0xff, 0xdb, 0x6d, 0xff, 0xe6, 0x5e, 0x44, 0x44, 0x9c, 0xc7, 0xcc, 0xee, 0x7f,
    -	0x83, 0x93, 0xa4, 0xbb, 0x5f, 0x20, 0xb0, 0x64, 0x82, 0xae, 0x8b, 0xee, 0x61, 0xbb, 0xe7, 0x44,
    -	0x7e, 0x10, 0xe9, 0x39, 0x49, 0x94, 0xd3, 0x29, 0x6c, 0xb7, 0x8c, 0x59, 0xb1, 0x5d, 0xb2, 0xb5,
    -	0xed, 0x47, 0xbe, 0x97, 0xd8, 0xa1, 0x27, 0xf3, 0x77, 0xc9, 0x4a, 0x06, 0x7d, 0x7a, 0x97, 0xcc,
    -	0xa2, 0xc2, 0x99, 0x75, 0xa1, 0x3a, 0x8c, 0xb5, 0xfc, 0x20, 0xba, 0xe5, 0x07, 0x72, 0x7e, 0xa1,
    -	0x0e, 0x8a, 0x52, 0x83, 0x52, 0xd4, 0xc8, 0x42, 0xa8, 0x9a, 0x18, 0x9c, 0xe0, 0x89, 0x3e, 0x0a,
    -	0x83, 0x61, 0xcd, 0x69, 0x90, 0x95, 0xab, 0xd3, 0x53, 0xf9, 0xc7, 0x4f, 0x95, 0x93, 0xe4, 0xcc,
    -	0x2e, 0x1e, 0xa8, 0x86, 0x93, 0x60, 0xc9, 0x0e, 0x2d, 0x43, 0x3f, 0x4b, 0xd2, 0xca, 0x82, 0x92,
    -	0xe6, 0xc4, 0xc2, 0x4e, 0x3d, 0xf7, 0xe0, 0x7b, 0x13, 0x03, 0x63, 0x5e, 0x9c, 0xae, 0x01, 0xa1,
    -	0x29, 0xf0, 0xc3, 0xe9, 0xe3, 0xf9, 0x6b, 0x40, 0x28, 0x18, 0xae, 0x56, 0x3b, 0xad, 0x01, 0x45,
    -	0x84, 0x63, 0xa6, 0x74, 0x67, 0xa6, 0xbb, 0xe9, 0x89, 0x0e, 0xae, 0x7c, 0xb9, 0x7b, 0x29, 0xdb,
    -	0x99, 0xe9, 0x4e, 0x4a, 0x59, 0xd8, 0xbf, 0x3e, 0x94, 0x96, 0x59, 0x98, 0x86, 0xe9, 0xff, 0xb0,
    -	0x52, 0xce, 0x07, 0x1f, 0xe8, 0x55, 0xe1, 0x7d, 0x88, 0x17, 0xd7, 0xcf, 0x59, 0x70, 0xa2, 0x95,
    -	0xf9, 0x21, 0x42, 0x00, 0xe8, 0x4d, 0x6f, 0xce, 0x3f, 0x5d, 0x05, 0xb0, 0xcd, 0xc6, 0xe3, 0x9c,
    -	0x9a, 0x92, 0xca, 0x81, 0xe2, 0x3b, 0x56, 0x0e, 0xac, 0xc1, 0x50, 0x8d, 0xdf, 0xe4, 0x64, 0xe0,
    -	0xf5, 0x9e, 0xc2, 0x2f, 0x32, 0x51, 0x42, 0x5c, 0x01, 0x37, 0xb1, 0x62, 0x81, 0x7e, 0xd8, 0x82,
    -	0xd3, 0xc9, 0xa6, 0x63, 0xc2, 0xd0, 0x22, 0xea, 0x2d, 0x57, 0x6b, 0x2d, 0x8b, 0xef, 0x4f, 0xc9,
    -	0xff, 0x06, 0xf1, 0xbd, 0x6e, 0x04, 0xb8, 0x73, 0x65, 0x68, 0x31, 0x43, 0xaf, 0x36, 0x60, 0x5a,
    -	0x14, 0x7b, 0xd0, 0xad, 0xbd, 0x00, 0x23, 0x4d, 0xbf, 0xed, 0x45, 0xc2, 0xf3, 0x4f, 0x78, 0x21,
    -	0x31, 0xef, 0x9b, 0x35, 0x0d, 0x8e, 0x0d, 0xaa, 0x84, 0x46, 0x6e, 0xe8, 0xbe, 0x35, 0x72, 0x6f,
    -	0xc1, 0x88, 0xa7, 0xb9, 0xaa, 0x77, 0xba, 0xc1, 0x0a, 0xed, 0xa2, 0x46, 0xcd, 0x5b, 0xa9, 0x43,
    -	0xb0, 0xc1, 0xad, 0xb3, 0xb6, 0x0c, 0xde, 0x99, 0xb6, 0xec, 0x68, 0xfd, 0x0d, 0x7f, 0xbe, 0x90,
    -	0x71, 0x63, 0xe0, 0x5a, 0xb9, 0x57, 0x4d, 0xad, 0xdc, 0xb9, 0xa4, 0x56, 0x2e, 0x65, 0xaa, 0x32,
    -	0x14, 0x72, 0xbd, 0x67, 0x87, 0xeb, 0x39, 0xa4, 0xee, 0xf7, 0x5a, 0xf0, 0x10, 0xb3, 0x7d, 0xd0,
    -	0x0a, 0xde, 0xb1, 0xbd, 0xe3, 0xe1, 0xbb, 0xfb, 0xe5, 0x87, 0x56, 0xb3, 0xd9, 0xe1, 0xbc, 0x7a,
    -	0xec, 0x06, 0x9c, 0xed, 0x76, 0xee, 0x32, 0x1f, 0xd7, 0xba, 0x72, 0x8e, 0x88, 0x7d, 0x5c, 0xeb,
    -	0x2b, 0x8b, 0x98, 0x61, 0x7a, 0x0d, 0x18, 0x67, 0xff, 0x07, 0x0b, 0x8a, 0x15, 0xbf, 0x7e, 0x04,
    -	0x37, 0xfa, 0x0f, 0x1b, 0x37, 0xfa, 0x87, 0xb3, 0x4f, 0xfc, 0x7a, 0xae, 0xb1, 0x6f, 0x29, 0x61,
    -	0xec, 0x3b, 0x9d, 0xc7, 0xa0, 0xb3, 0x69, 0xef, 0xa7, 0x8a, 0x30, 0x5c, 0xf1, 0xeb, 0x6a, 0x9d,
    -	0xfd, 0x93, 0xfb, 0x79, 0x60, 0x92, 0x9b, 0xef, 0x47, 0xe3, 0xcc, 0x5c, 0x63, 0x65, 0xc8, 0x81,
    -	0x6f, 0xb3, 0x77, 0x26, 0x37, 0x88, 0xbb, 0xb5, 0x1d, 0x91, 0x7a, 0xf2, 0x73, 0x8e, 0xee, 0x9d,
    -	0xc9, 0x37, 0x8b, 0x30, 0x9e, 0xa8, 0x1d, 0x35, 0x60, 0xb4, 0xa1, 0x9b, 0x92, 0xc4, 0x3c, 0xbd,
    -	0x2f, 0x2b, 0x94, 0xf0, 0xd3, 0xd7, 0x40, 0xd8, 0x64, 0x8e, 0x66, 0x01, 0x94, 0x6f, 0x85, 0xd4,
    -	0xf6, 0xb3, 0x6b, 0x8d, 0x72, 0xbe, 0x08, 0xb1, 0x46, 0x81, 0x5e, 0x84, 0xe1, 0xc8, 0x6f, 0xf9,
    -	0x0d, 0x7f, 0x6b, 0xef, 0x0a, 0x91, 0xb1, 0x04, 0x95, 0xf7, 0xed, 0x46, 0x8c, 0xc2, 0x3a, 0x1d,
    -	0xba, 0x0d, 0x93, 0x8a, 0x49, 0xf5, 0x10, 0xcc, 0x6b, 0x4c, 0x6d, 0xb2, 0x9e, 0xe4, 0x88, 0xd3,
    -	0x95, 0xa0, 0x97, 0x61, 0x8c, 0xb9, 0x01, 0xb3, 0xf2, 0x57, 0xc8, 0x9e, 0x8c, 0x31, 0xcb, 0x24,
    -	0xec, 0x35, 0x03, 0x83, 0x13, 0x94, 0x68, 0x01, 0x26, 0x9b, 0x6e, 0x98, 0x28, 0x3e, 0xc0, 0x8a,
    -	0xb3, 0x06, 0xac, 0x25, 0x91, 0x38, 0x4d, 0x6f, 0xff, 0xac, 0x18, 0x63, 0x2f, 0x72, 0xdf, 0x5b,
    -	0x8e, 0xef, 0xee, 0xe5, 0xf8, 0x0d, 0x0b, 0x26, 0x68, 0xed, 0xcc, 0xb7, 0x51, 0x0a, 0x52, 0x2a,
    -	0x0b, 0x81, 0xd5, 0x21, 0x0b, 0xc1, 0x39, 0xba, 0x6d, 0xd7, 0xfd, 0x76, 0x24, 0xb4, 0xa3, 0xda,
    -	0xbe, 0x4c, 0xa1, 0x58, 0x60, 0x05, 0x1d, 0x09, 0x02, 0xf1, 0x1e, 0x5b, 0xa7, 0x23, 0x41, 0x80,
    -	0x05, 0x56, 0x26, 0x29, 0xe8, 0xcb, 0x4e, 0x52, 0xc0, 0x63, 0x4d, 0x0b, 0x2f, 0x38, 0x21, 0xd2,
    -	0x6a, 0xb1, 0xa6, 0xa5, 0x7b, 0x5c, 0x4c, 0x63, 0x7f, 0xad, 0x08, 0x23, 0x15, 0xbf, 0x1e, 0x3b,
    -	0x76, 0xbc, 0x60, 0x38, 0x76, 0x9c, 0x4d, 0x38, 0x76, 0x4c, 0xe8, 0xb4, 0xef, 0xb9, 0x71, 0x7c,
    -	0xab, 0xdc, 0x38, 0x7e, 0xc3, 0x62, 0xa3, 0xb6, 0xb8, 0x5e, 0xe5, 0xae, 0xb2, 0xe8, 0x22, 0x0c,
    -	0xb3, 0x1d, 0x8e, 0x05, 0x00, 0x90, 0xde, 0x0e, 0x2c, 0x69, 0xe0, 0x7a, 0x0c, 0xc6, 0x3a, 0x0d,
    -	0x3a, 0x0f, 0x43, 0x21, 0x71, 0x82, 0xda, 0xb6, 0xda, 0xde, 0x85, 0x6b, 0x02, 0x87, 0x61, 0x85,
    -	0x45, 0x6f, 0xc4, 0x61, 0x8e, 0x8b, 0xf9, 0x0f, 0x8a, 0xf5, 0xf6, 0xf0, 0x25, 0x92, 0x1f, 0xdb,
    -	0xd8, 0xbe, 0x01, 0x28, 0x4d, 0xdf, 0x43, 0x20, 0xce, 0xb2, 0x19, 0x88, 0xb3, 0x94, 0x0a, 0xc2,
    -	0xf9, 0xd7, 0x16, 0x8c, 0x55, 0xfc, 0x3a, 0x5d, 0xba, 0xdf, 0x49, 0xeb, 0x54, 0x8f, 0xf1, 0x3e,
    -	0xd0, 0x21, 0xc6, 0xfb, 0xa3, 0xd0, 0x5f, 0xf1, 0xeb, 0x5d, 0x82, 0x85, 0xfe, 0x2d, 0x0b, 0x06,
    -	0x2b, 0x7e, 0xfd, 0x08, 0x0c, 0x2f, 0xaf, 0x9a, 0x86, 0x97, 0x87, 0x72, 0xe6, 0x4d, 0x8e, 0xad,
    -	0xe5, 0xff, 0xef, 0x83, 0x51, 0xda, 0x4e, 0x7f, 0x4b, 0x0e, 0xa5, 0xd1, 0x6d, 0x56, 0x0f, 0xdd,
    -	0x46, 0xaf, 0x01, 0x7e, 0xa3, 0xe1, 0xdf, 0x4a, 0x0e, 0xeb, 0x32, 0x83, 0x62, 0x81, 0x45, 0xcf,
    -	0xc0, 0x50, 0x2b, 0x20, 0xbb, 0xae, 0x2f, 0xe4, 0x6b, 0xcd, 0x8c, 0x55, 0x11, 0x70, 0xac, 0x28,
    -	0xe8, 0xc5, 0x3b, 0x74, 0x3d, 0x2a, 0x4b, 0xd4, 0x7c, 0xaf, 0xce, 0x6d, 0x13, 0x45, 0x91, 0x88,
    -	0x48, 0x83, 0x63, 0x83, 0x0a, 0xdd, 0x80, 0x12, 0xfb, 0xcf, 0xb6, 0x9d, 0x83, 0xa7, 0x40, 0x17,
    -	0xa9, 0x59, 0x05, 0x03, 0x1c, 0xf3, 0x42, 0xcf, 0x01, 0x44, 0x32, 0x99, 0x47, 0x28, 0x82, 0x46,
    -	0xaa, 0xbb, 0x88, 0x4a, 0xf3, 0x11, 0x62, 0x8d, 0x0a, 0x3d, 0x0d, 0xa5, 0xc8, 0x71, 0x1b, 0xab,
    -	0xae, 0xc7, 0xec, 0xf7, 0xb4, 0xfd, 0x22, 0x43, 0xaa, 0x00, 0xe2, 0x18, 0x4f, 0x65, 0x41, 0x16,
    -	0x0e, 0x68, 0x7e, 0x2f, 0x12, 0xc9, 0xc0, 0x8a, 0x5c, 0x16, 0x5c, 0x55, 0x50, 0xac, 0x51, 0xa0,
    -	0x6d, 0x38, 0xe5, 0x7a, 0x2c, 0x69, 0x0f, 0xa9, 0xee, 0xb8, 0xad, 0x8d, 0xd5, 0xea, 0x75, 0x12,
    -	0xb8, 0x9b, 0x7b, 0xf3, 0x4e, 0x6d, 0x87, 0x78, 0x32, 0xb9, 0xf5, 0x63, 0xa2, 0x89, 0xa7, 0x56,
    -	0x3a, 0xd0, 0xe2, 0x8e, 0x9c, 0xec, 0xe7, 0xd9, 0x7c, 0xbf, 0x5a, 0x45, 0x4f, 0x19, 0x5b, 0xc7,
    -	0x09, 0x7d, 0xeb, 0xb8, 0xb7, 0x5f, 0x1e, 0xb8, 0x5a, 0xd5, 0x62, 0xd2, 0xbc, 0x04, 0xc7, 0x2b,
    -	0x7e, 0xbd, 0xe2, 0x07, 0xd1, 0xb2, 0x1f, 0xdc, 0x72, 0x82, 0xba, 0x9c, 0x5e, 0x65, 0x19, 0x95,
    -	0x87, 0xee, 0x9f, 0xfd, 0x7c, 0x77, 0x31, 0x22, 0xee, 0x3c, 0xcf, 0x24, 0xb6, 0x03, 0x3e, 0xb7,
    -	0xac, 0x31, 0xd9, 0x41, 0xa5, 0xbd, 0xba, 0xe4, 0x44, 0x04, 0x5d, 0x85, 0xd1, 0x9a, 0x7e, 0x8c,
    -	0x8a, 0xe2, 0x4f, 0xca, 0x83, 0xcc, 0x38, 0x63, 0x33, 0xcf, 0x5d, 0xb3, 0xbc, 0xfd, 0x59, 0x51,
    -	0x09, 0x57, 0x44, 0x70, 0x97, 0xd6, 0x5e, 0xf2, 0xbf, 0xcb, 0xbc, 0x38, 0x85, 0xfc, 0x98, 0x87,
    -	0xdc, 0xae, 0xdc, 0x31, 0x2f, 0x8e, 0xfd, 0xdd, 0x70, 0x22, 0x59, 0x7d, 0xcf, 0x49, 0xe8, 0x17,
    -	0x60, 0x32, 0xd0, 0x0b, 0x6a, 0x49, 0x06, 0x8f, 0xf3, 0x5c, 0x26, 0x09, 0x24, 0x4e, 0xd3, 0xdb,
    -	0x2f, 0xc2, 0x24, 0xbd, 0xfc, 0x2a, 0x41, 0x8e, 0xf5, 0x72, 0xf7, 0xf0, 0x44, 0xff, 0xb1, 0x9f,
    -	0x1d, 0x44, 0x89, 0x8c, 0x53, 0xe8, 0x93, 0x30, 0x16, 0x92, 0x55, 0xd7, 0x6b, 0xdf, 0x96, 0xba,
    -	0xb5, 0x0e, 0xef, 0x8c, 0xab, 0x4b, 0x3a, 0x25, 0xbf, 0x3f, 0x98, 0x30, 0x9c, 0xe0, 0x86, 0x9a,
    -	0x30, 0x76, 0xcb, 0xf5, 0xea, 0xfe, 0xad, 0x50, 0xf2, 0x1f, 0xca, 0x57, 0xd4, 0xdf, 0xe0, 0x94,
    -	0x89, 0x36, 0x1a, 0xd5, 0xdd, 0x30, 0x98, 0xe1, 0x04, 0x73, 0xba, 0xd8, 0x83, 0xb6, 0x37, 0x17,
    -	0x5e, 0x0b, 0x09, 0x7f, 0x39, 0x2a, 0x16, 0x3b, 0x96, 0x40, 0x1c, 0xe3, 0xe9, 0x62, 0x67, 0x7f,
    -	0x2e, 0x05, 0x7e, 0x9b, 0xa7, 0x37, 0x12, 0x8b, 0x1d, 0x2b, 0x28, 0xd6, 0x28, 0xe8, 0x66, 0xc8,
    -	0xfe, 0xad, 0xfb, 0x1e, 0xf6, 0xfd, 0x48, 0x6e, 0x9f, 0x2c, 0x3d, 0x9f, 0x06, 0xc7, 0x06, 0x15,
    -	0x5a, 0x06, 0x14, 0xb6, 0x5b, 0xad, 0x06, 0x73, 0x5d, 0x74, 0x1a, 0x8c, 0x15, 0x77, 0xbb, 0x2a,
    -	0x72, 0xef, 0x96, 0x6a, 0x0a, 0x8b, 0x33, 0x4a, 0xd0, 0x73, 0x71, 0x53, 0x34, 0xb5, 0x9f, 0x35,
    -	0x95, 0x1b, 0xf5, 0xaa, 0xbc, 0x9d, 0x12, 0x87, 0x96, 0x60, 0x30, 0xdc, 0x0b, 0x6b, 0x51, 0x23,
    -	0xec, 0x94, 0x0c, 0xb1, 0xca, 0x48, 0xb4, 0x5c, 0xbc, 0xbc, 0x08, 0x96, 0x65, 0x51, 0x0d, 0xa6,
    -	0x04, 0xc7, 0x85, 0x6d, 0xc7, 0x53, 0x29, 0xda, 0xb8, 0xf7, 0xde, 0xc5, 0xbb, 0xfb, 0xe5, 0x29,
    -	0x51, 0xb3, 0x8e, 0xbe, 0xb7, 0x5f, 0xa6, 0x8b, 0x23, 0x03, 0x83, 0xb3, 0xb8, 0xf1, 0xc9, 0x57,
    -	0xab, 0xf9, 0xcd, 0x56, 0x25, 0xf0, 0x37, 0xdd, 0x06, 0xe9, 0x64, 0x18, 0xad, 0x1a, 0x94, 0x62,
    -	0xf2, 0x19, 0x30, 0x9c, 0xe0, 0x66, 0x7f, 0x96, 0xc9, 0x8e, 0x55, 0x77, 0xcb, 0x73, 0xa2, 0x76,
    -	0x40, 0x50, 0x13, 0x46, 0x5b, 0x6c, 0x77, 0x11, 0x49, 0x87, 0xc4, 0x5c, 0x7f, 0xa1, 0x47, 0xfd,
    -	0xd7, 0x2d, 0x96, 0x36, 0xd1, 0xf0, 0x83, 0xac, 0xe8, 0xec, 0xb0, 0xc9, 0xdd, 0xfe, 0x17, 0x27,
    -	0x99, 0xf4, 0x51, 0xe5, 0x4a, 0xad, 0x41, 0xf1, 0x6c, 0x4c, 0x5c, 0x63, 0x67, 0xf2, 0xd5, 0xc7,
    -	0xf1, 0xb0, 0x88, 0xa7, 0x67, 0x58, 0x96, 0x45, 0x9f, 0x80, 0x31, 0x7a, 0x2b, 0x54, 0x12, 0x40,
    -	0x38, 0x7d, 0x2c, 0x3f, 0xbc, 0x8f, 0xa2, 0xd2, 0x13, 0x92, 0xe9, 0x85, 0x71, 0x82, 0x19, 0x7a,
    -	0x83, 0xb9, 0x06, 0x4a, 0xd6, 0x85, 0x5e, 0x58, 0xeb, 0x5e, 0x80, 0x92, 0xad, 0xc6, 0x04, 0xb5,
    -	0x61, 0x2a, 0x9d, 0x76, 0x35, 0x9c, 0xb6, 0xf3, 0xc5, 0xeb, 0x74, 0xe6, 0xd4, 0x38, 0x73, 0x54,
    -	0x1a, 0x17, 0xe2, 0x2c, 0xfe, 0x68, 0x35, 0x99, 0x14, 0xb3, 0x68, 0x28, 0x9e, 0x53, 0x89, 0x31,
    -	0x47, 0x3b, 0xe6, 0xc3, 0xdc, 0x82, 0xd3, 0x5a, 0x5e, 0xc1, 0x4b, 0x81, 0xc3, 0x5c, 0x53, 0x5c,
    -	0xb6, 0x9d, 0x6a, 0x72, 0xd1, 0x23, 0x77, 0xf7, 0xcb, 0xa7, 0x37, 0x3a, 0x11, 0xe2, 0xce, 0x7c,
    -	0xd0, 0x55, 0x38, 0xce, 0x83, 0x53, 0x2c, 0x12, 0xa7, 0xde, 0x70, 0x3d, 0x25, 0x78, 0xf1, 0x25,
    -	0x7f, 0xf2, 0xee, 0x7e, 0xf9, 0xf8, 0x5c, 0x16, 0x01, 0xce, 0x2e, 0x87, 0x5e, 0x85, 0x52, 0xdd,
    -	0x0b, 0x45, 0x1f, 0x0c, 0x18, 0xa9, 0x1b, 0x4b, 0x8b, 0xeb, 0x55, 0xf5, 0xfd, 0xf1, 0x1f, 0x1c,
    -	0x17, 0x40, 0x5b, 0xdc, 0xf2, 0xa1, 0xd4, 0x55, 0x83, 0xa9, 0x98, 0x85, 0x49, 0x8d, 0xae, 0xf1,
    -	0x3c, 0x9d, 0x9b, 0xfc, 0xd4, 0xab, 0x2d, 0xe3, 0xe5, 0xba, 0xc1, 0x18, 0xbd, 0x0e, 0x48, 0xa4,
    -	0x08, 0x99, 0xab, 0xb1, 0x8c, 0x56, 0x9a, 0x3b, 0xa2, 0xba, 0x85, 0x56, 0x53, 0x14, 0x38, 0xa3,
    -	0x14, 0xba, 0x4c, 0x77, 0x15, 0x1d, 0x2a, 0x76, 0x2d, 0x95, 0x20, 0x78, 0x91, 0xb4, 0x02, 0xc2,
    -	0x3c, 0xe8, 0x4c, 0x8e, 0x38, 0x51, 0x0e, 0xd5, 0xe1, 0x94, 0xd3, 0x8e, 0x7c, 0x66, 0x54, 0x32,
    -	0x49, 0x37, 0xfc, 0x1d, 0xe2, 0x31, 0x7b, 0xee, 0x10, 0x8b, 0x85, 0x78, 0x6a, 0xae, 0x03, 0x1d,
    -	0xee, 0xc8, 0x85, 0x4a, 0xe4, 0x32, 0xe7, 0xbf, 0xb0, 0xf7, 0x18, 0x2f, 0x6d, 0xb9, 0x11, 0x54,
    -	0x52, 0xa0, 0x17, 0x61, 0x78, 0xdb, 0x0f, 0xa3, 0x75, 0x12, 0xdd, 0xf2, 0x83, 0x1d, 0x11, 0x93,
    -	0x3c, 0xce, 0x03, 0x11, 0xa3, 0xb0, 0x4e, 0x47, 0xaf, 0xdc, 0xcc, 0xdb, 0x68, 0x65, 0x91, 0x39,
    -	0x7a, 0x0c, 0xc5, 0x7b, 0xcc, 0x65, 0x0e, 0xc6, 0x12, 0x2f, 0x49, 0x57, 0x2a, 0x0b, 0xcc, 0x69,
    -	0x23, 0x41, 0xba, 0x52, 0x59, 0xc0, 0x12, 0x4f, 0xa7, 0x6b, 0xb8, 0xed, 0x04, 0xa4, 0x12, 0xf8,
    -	0x35, 0x12, 0x6a, 0xd9, 0x47, 0x1e, 0xe6, 0x11, 0xd7, 0xe9, 0x74, 0xad, 0x66, 0x11, 0xe0, 0xec,
    -	0x72, 0x88, 0xa4, 0x73, 0x6a, 0x8e, 0xe5, 0x5b, 0xdb, 0xd2, 0xf2, 0x4c, 0x8f, 0x69, 0x35, 0x3d,
    -	0x98, 0x50, 0xd9, 0x3c, 0x79, 0x8c, 0xf5, 0x70, 0x7a, 0x9c, 0xcd, 0xed, 0xde, 0x03, 0xb4, 0x2b,
    -	0xfb, 0xe5, 0x4a, 0x82, 0x13, 0x4e, 0xf1, 0x36, 0x82, 0x6d, 0x4e, 0x74, 0x0d, 0xb6, 0x79, 0x01,
    -	0x4a, 0x61, 0xfb, 0x66, 0xdd, 0x6f, 0x3a, 0xae, 0xc7, 0x9c, 0x36, 0xb4, 0xbb, 0x5f, 0x55, 0x22,
    -	0x70, 0x4c, 0x83, 0x96, 0x61, 0xc8, 0x91, 0xc6, 0x49, 0x94, 0x1f, 0x47, 0x4c, 0x99, 0x24, 0x79,
    -	0x68, 0x1d, 0x69, 0x8e, 0x54, 0x65, 0xd1, 0x2b, 0x30, 0x2a, 0x82, 0x2b, 0x88, 0x04, 0xd8, 0x53,
    -	0xe6, 0x0b, 0xd8, 0xaa, 0x8e, 0xc4, 0x26, 0x2d, 0xba, 0x06, 0xc3, 0x91, 0xdf, 0x60, 0xcf, 0x38,
    -	0xa9, 0x98, 0x77, 0x22, 0x3f, 0xdc, 0xe7, 0x86, 0x22, 0xd3, 0xd5, 0xe6, 0xaa, 0x28, 0xd6, 0xf9,
    -	0xa0, 0x0d, 0x3e, 0xdf, 0x59, 0xae, 0x11, 0x12, 0x8a, 0x0c, 0xca, 0xa7, 0xf3, 0x3c, 0xee, 0x18,
    -	0x99, 0xb9, 0x1c, 0x44, 0x49, 0xac, 0xb3, 0x41, 0x97, 0x60, 0xb2, 0x15, 0xb8, 0x3e, 0x9b, 0x13,
    -	0xca, 0xd8, 0x3a, 0x6d, 0x66, 0x16, 0xac, 0x24, 0x09, 0x70, 0xba, 0x0c, 0x8b, 0x8d, 0x21, 0x80,
    -	0xd3, 0x27, 0x79, 0x76, 0x24, 0x7e, 0x95, 0xe6, 0x30, 0xac, 0xb0, 0x68, 0x8d, 0xed, 0xc4, 0x5c,
    -	0x0b, 0x34, 0x3d, 0x93, 0x1f, 0xba, 0x4c, 0xd7, 0x16, 0x71, 0xe1, 0x55, 0xfd, 0xc5, 0x31, 0x07,
    -	0x54, 0xd7, 0x92, 0x12, 0xd3, 0x2b, 0x40, 0x38, 0x7d, 0xaa, 0x83, 0xcb, 0x67, 0xe2, 0x56, 0x16,
    -	0x0b, 0x04, 0x06, 0x38, 0xc4, 0x09, 0x9e, 0xe8, 0x23, 0x30, 0x21, 0xe2, 0xd0, 0xc6, 0xdd, 0x74,
    -	0x3a, 0x7e, 0x16, 0x83, 0x13, 0x38, 0x9c, 0xa2, 0xe6, 0xd9, 0x89, 0x9c, 0x9b, 0x0d, 0x22, 0xb6,
    -	0xbe, 0x55, 0xd7, 0xdb, 0x09, 0xa7, 0xcf, 0xb0, 0xfd, 0x41, 0x64, 0x27, 0x4a, 0x62, 0x71, 0x46,
    -	0x09, 0xb4, 0x01, 0x13, 0xad, 0x80, 0x90, 0x26, 0x13, 0xf4, 0xc5, 0x79, 0x56, 0xe6, 0xa1, 0x61,
    -	0x68, 0x4b, 0x2a, 0x09, 0xdc, 0xbd, 0x0c, 0x18, 0x4e, 0x71, 0x40, 0xb7, 0x60, 0xc8, 0xdf, 0x25,
    -	0xc1, 0x36, 0x71, 0xea, 0xd3, 0x67, 0x3b, 0x3c, 0xd6, 0x12, 0x87, 0xdb, 0x55, 0x41, 0x9b, 0xf0,
    -	0x65, 0x91, 0xe0, 0xee, 0xbe, 0x2c, 0xb2, 0x32, 0xf4, 0x7f, 0x5a, 0x70, 0x52, 0x5a, 0x87, 0xaa,
    -	0x2d, 0xda, 0xeb, 0x0b, 0xbe, 0x17, 0x46, 0x01, 0x0f, 0x66, 0xf2, 0x48, 0x7e, 0x80, 0x8f, 0x8d,
    -	0x9c, 0x42, 0x4a, 0x11, 0x7d, 0x32, 0x8f, 0x22, 0xc4, 0xf9, 0x35, 0xd2, 0xab, 0x69, 0x48, 0x22,
    -	0xb9, 0x19, 0xcd, 0x85, 0xcb, 0x6f, 0x2c, 0xae, 0x4f, 0x3f, 0xca, 0x23, 0xb1, 0xd0, 0xc5, 0x50,
    -	0x4d, 0x22, 0x71, 0x9a, 0x1e, 0x5d, 0x84, 0x82, 0x1f, 0x4e, 0x3f, 0xd6, 0x21, 0x8f, 0xb5, 0x5f,
    -	0xbf, 0x5a, 0xe5, 0x3e, 0x8d, 0x57, 0xab, 0xb8, 0xe0, 0x87, 0x32, 0x43, 0x10, 0xbd, 0x8f, 0x85,
    -	0xd3, 0x8f, 0x73, 0xb5, 0xa5, 0xcc, 0x10, 0xc4, 0x80, 0x38, 0xc6, 0xa3, 0x6d, 0x18, 0x0f, 0x8d,
    -	0x7b, 0x6f, 0x38, 0x7d, 0x8e, 0xf5, 0xd4, 0xe3, 0x79, 0x83, 0x66, 0x50, 0x6b, 0xa9, 0x3b, 0x4c,
    -	0x2e, 0x38, 0xc9, 0x96, 0xaf, 0x2e, 0xed, 0xe6, 0x1d, 0x4e, 0x3f, 0xd1, 0x65, 0x75, 0x69, 0xc4,
    -	0xfa, 0xea, 0xd2, 0x79, 0xe0, 0x04, 0xcf, 0x99, 0xef, 0x82, 0xc9, 0x94, 0xb8, 0x74, 0x10, 0xff,
    -	0xfd, 0x99, 0x1d, 0x18, 0x35, 0xa6, 0xe4, 0x03, 0x75, 0xef, 0xf8, 0x9d, 0x12, 0x94, 0x94, 0xd9,
    -	0x1d, 0x5d, 0x30, 0x3d, 0x3a, 0x4e, 0x26, 0x3d, 0x3a, 0x86, 0x2a, 0x7e, 0xdd, 0x70, 0xe2, 0xd8,
    -	0xc8, 0x88, 0xd7, 0x99, 0xb7, 0x01, 0xf6, 0xfe, 0xc8, 0x48, 0x33, 0x25, 0x14, 0x7b, 0x76, 0x0d,
    -	0xe9, 0xeb, 0x68, 0x9d, 0xb8, 0x04, 0x93, 0x9e, 0xcf, 0x64, 0x74, 0x52, 0x97, 0x02, 0x18, 0x93,
    -	0xb3, 0x4a, 0x7a, 0x00, 0xac, 0x04, 0x01, 0x4e, 0x97, 0xa1, 0x15, 0x72, 0x41, 0x29, 0x69, 0x0e,
    -	0xe1, 0x72, 0x14, 0x16, 0x58, 0x7a, 0x37, 0xe4, 0xbf, 0xc2, 0xe9, 0x89, 0xfc, 0xbb, 0x21, 0x2f,
    -	0x94, 0x14, 0xc6, 0x42, 0x29, 0x8c, 0x31, 0xed, 0x7f, 0xcb, 0xaf, 0xaf, 0x54, 0x84, 0x98, 0xaf,
    -	0x45, 0xd2, 0xae, 0xaf, 0x54, 0x30, 0xc7, 0xa1, 0x39, 0x18, 0x60, 0x3f, 0xc2, 0xe9, 0x91, 0xfc,
    -	0x80, 0x49, 0xac, 0x84, 0x96, 0xa1, 0x90, 0x15, 0xc0, 0xa2, 0x20, 0xd3, 0xee, 0xd2, 0xbb, 0x11,
    -	0xd3, 0xee, 0x0e, 0xde, 0xa7, 0x76, 0x57, 0x32, 0xc0, 0x31, 0x2f, 0x74, 0x1b, 0x8e, 0x1b, 0xf7,
    -	0x51, 0xf5, 0xea, 0x0a, 0xf2, 0x0d, 0xbf, 0x09, 0xe2, 0xf9, 0xd3, 0xa2, 0xd1, 0xc7, 0x57, 0xb2,
    -	0x38, 0xe1, 0xec, 0x0a, 0x50, 0x03, 0x26, 0x6b, 0xa9, 0x5a, 0x87, 0x7a, 0xaf, 0x55, 0xcd, 0x8b,
    -	0x74, 0x8d, 0x69, 0xc6, 0xe8, 0x15, 0x18, 0x7a, 0xdb, 0xe7, 0x4e, 0x5a, 0xe2, 0x6a, 0x22, 0x23,
    -	0x7e, 0x0c, 0xbd, 0x71, 0xb5, 0xca, 0xe0, 0xf7, 0xf6, 0xcb, 0xc3, 0x15, 0xbf, 0x2e, 0xff, 0x62,
    -	0x55, 0x00, 0xfd, 0x80, 0x05, 0x33, 0xe9, 0x0b, 0xaf, 0x6a, 0xf4, 0x68, 0xef, 0x8d, 0xb6, 0x45,
    -	0xa5, 0x33, 0x4b, 0xb9, 0xec, 0x70, 0x87, 0xaa, 0xd0, 0x87, 0xe8, 0x7a, 0x0a, 0xdd, 0x3b, 0x44,
    -	0xa4, 0x77, 0x7e, 0x24, 0x5e, 0x4f, 0x14, 0x7a, 0x6f, 0xbf, 0x3c, 0xce, 0x77, 0x46, 0xf7, 0x8e,
    -	0x8a, 0xf9, 0xcd, 0x0b, 0xa0, 0xef, 0x86, 0xe3, 0x41, 0x5a, 0x83, 0x4a, 0xa4, 0x10, 0xfe, 0x54,
    -	0x2f, 0xbb, 0x6c, 0x72, 0xc0, 0x71, 0x16, 0x43, 0x9c, 0x5d, 0x8f, 0xfd, 0xab, 0x16, 0xd3, 0x6f,
    -	0x8b, 0x66, 0x91, 0xb0, 0xdd, 0x38, 0x8a, 0xa4, 0xf2, 0x4b, 0x86, 0xed, 0xf8, 0xbe, 0x3d, 0x9b,
    -	0xfe, 0xb1, 0xc5, 0x3c, 0x9b, 0x8e, 0xf0, 0x8d, 0xd6, 0x1b, 0x30, 0x14, 0xc9, 0x64, 0xff, 0x1d,
    -	0xf2, 0xe0, 0x6b, 0x8d, 0x62, 0xde, 0x5d, 0xea, 0x92, 0xa3, 0xf2, 0xfa, 0x2b, 0x36, 0xf6, 0x3f,
    -	0xe0, 0x23, 0x20, 0x31, 0x47, 0x60, 0xa2, 0x5b, 0x34, 0x4d, 0x74, 0xe5, 0x2e, 0x5f, 0x90, 0x63,
    -	0xaa, 0xfb, 0xfb, 0x66, 0xbb, 0x99, 0x72, 0xef, 0xdd, 0xee, 0x52, 0x67, 0x7f, 0xc1, 0x02, 0x88,
    -	0x93, 0x2c, 0xf4, 0x90, 0xce, 0xf5, 0x25, 0x7a, 0xad, 0xf1, 0x23, 0xbf, 0xe6, 0x37, 0x84, 0x81,
    -	0xe2, 0x54, 0x6c, 0x25, 0xe4, 0xf0, 0x7b, 0xda, 0x6f, 0xac, 0xa8, 0x51, 0x59, 0x46, 0x3d, 0x2d,
    -	0xc6, 0x76, 0x6b, 0x23, 0xe2, 0xe9, 0x97, 0x2d, 0x38, 0x96, 0xe5, 0xf0, 0x4f, 0x2f, 0xc9, 0x5c,
    -	0xcd, 0xa9, 0xdc, 0x1d, 0xd5, 0x68, 0x5e, 0x17, 0x70, 0xac, 0x28, 0x7a, 0xce, 0x93, 0x7b, 0xb0,
    -	0x04, 0x00, 0x57, 0x61, 0xb4, 0x12, 0x10, 0x4d, 0xbe, 0x78, 0x8d, 0x47, 0xd2, 0xe1, 0xed, 0x79,
    -	0xe6, 0xc0, 0x51, 0x74, 0xec, 0xaf, 0x14, 0xe0, 0x18, 0x77, 0xda, 0x99, 0xdb, 0xf5, 0xdd, 0x7a,
    -	0xc5, 0xaf, 0x8b, 0x67, 0x9a, 0x6f, 0xc2, 0x48, 0x4b, 0xd3, 0x4d, 0x77, 0x0a, 0x66, 0xad, 0xeb,
    -	0xb0, 0x63, 0x6d, 0x9a, 0x0e, 0xc5, 0x06, 0x2f, 0x54, 0x87, 0x11, 0xb2, 0xeb, 0xd6, 0x94, 0xe7,
    -	0x47, 0xe1, 0xc0, 0x87, 0xb4, 0xaa, 0x65, 0x49, 0xe3, 0x83, 0x0d, 0xae, 0x3d, 0xbb, 0xda, 0x6a,
    -	0x22, 0x5a, 0x5f, 0x17, 0x6f, 0x8f, 0x1f, 0xb5, 0xe0, 0xa1, 0x9c, 0xd0, 0xd7, 0xb4, 0xba, 0x5b,
    -	0xcc, 0x3d, 0x4a, 0x4c, 0x5b, 0x55, 0x1d, 0x77, 0x9a, 0xc2, 0x02, 0x8b, 0x3e, 0x0a, 0xc0, 0x9d,
    -	0x9e, 0x88, 0x57, 0xeb, 0x1a, 0x23, 0xd8, 0x08, 0x6f, 0xaa, 0x45, 0xaa, 0x94, 0xe5, 0xb1, 0xc6,
    -	0xcb, 0xfe, 0x72, 0x1f, 0xf4, 0x33, 0x27, 0x1b, 0x54, 0x81, 0xc1, 0x6d, 0x9e, 0x25, 0xae, 0xe3,
    -	0xb8, 0x51, 0x5a, 0x99, 0x78, 0x2e, 0x1e, 0x37, 0x0d, 0x8a, 0x25, 0x1b, 0xb4, 0x06, 0x53, 0x3c,
    -	0x59, 0x5f, 0x63, 0x91, 0x34, 0x9c, 0x3d, 0xa9, 0xf6, 0xe5, 0xf9, 0xe7, 0x95, 0xfa, 0x7b, 0x25,
    -	0x4d, 0x82, 0xb3, 0xca, 0xa1, 0xd7, 0x60, 0x8c, 0x5e, 0xc3, 0xfd, 0x76, 0x24, 0x39, 0xf1, 0x34,
    -	0x7d, 0xea, 0x66, 0xb2, 0x61, 0x60, 0x71, 0x82, 0x1a, 0xbd, 0x02, 0xa3, 0xad, 0x94, 0x82, 0xbb,
    -	0x3f, 0xd6, 0x04, 0x99, 0x4a, 0x6d, 0x93, 0x96, 0xf9, 0xfc, 0xb7, 0xd9, 0x0b, 0x87, 0x8d, 0xed,
    -	0x80, 0x84, 0xdb, 0x7e, 0xa3, 0xce, 0x24, 0xe0, 0x7e, 0xcd, 0xe7, 0x3f, 0x81, 0xc7, 0xa9, 0x12,
    -	0x94, 0xcb, 0xa6, 0xe3, 0x36, 0xda, 0x01, 0x89, 0xb9, 0x0c, 0x98, 0x5c, 0x96, 0x13, 0x78, 0x9c,
    -	0x2a, 0xd1, 0x5d, 0x73, 0x3f, 0x78, 0x38, 0x9a, 0x7b, 0xfb, 0xa7, 0x0b, 0x60, 0x0c, 0xed, 0x77,
    -	0x70, 0xfa, 0xc0, 0x57, 0xa1, 0x6f, 0x2b, 0x68, 0xd5, 0x84, 0x43, 0x59, 0xe6, 0x97, 0xc5, 0xb9,
    -	0xc3, 0xf9, 0x97, 0xd1, 0xff, 0x98, 0x95, 0xa2, 0x6b, 0xfc, 0x78, 0x25, 0xf0, 0xe9, 0x21, 0x27,
    -	0x63, 0x2d, 0xaa, 0xa7, 0x35, 0x83, 0x32, 0x48, 0x44, 0x87, 0xa8, 0xc4, 0xe2, 0x7d, 0x00, 0xe7,
    -	0x60, 0xf8, 0x5e, 0x55, 0x45, 0x28, 0x18, 0xc9, 0x05, 0x5d, 0x84, 0x61, 0x91, 0xd1, 0x8d, 0xbd,
    -	0x00, 0xe1, 0x8b, 0x89, 0xf9, 0x8a, 0x2d, 0xc6, 0x60, 0xac, 0xd3, 0xd8, 0x3f, 0x58, 0x80, 0xa9,
    -	0x8c, 0x27, 0x7c, 0xfc, 0x18, 0xd9, 0x72, 0xc3, 0x48, 0xa5, 0x27, 0xd7, 0x8e, 0x11, 0x0e, 0xc7,
    -	0x8a, 0x82, 0xee, 0x55, 0xfc, 0xa0, 0x4a, 0x1e, 0x4e, 0xe2, 0x89, 0x8c, 0xc0, 0x1e, 0x30, 0xd1,
    -	0xf7, 0x59, 0xe8, 0x6b, 0x87, 0x44, 0xc6, 0x13, 0x57, 0xc7, 0x36, 0x33, 0x6b, 0x33, 0x0c, 0xbd,
    -	0x02, 0x6e, 0x29, 0x0b, 0xb1, 0x76, 0x05, 0xe4, 0x36, 0x62, 0x8e, 0xa3, 0x8d, 0x8b, 0x88, 0xe7,
    -	0x78, 0x91, 0xb8, 0x28, 0xc6, 0x81, 0x71, 0x19, 0x14, 0x0b, 0xac, 0xfd, 0xa5, 0x22, 0x9c, 0xcc,
    -	0x7d, 0xd4, 0x4b, 0x9b, 0xde, 0xf4, 0x3d, 0x37, 0xf2, 0x95, 0x13, 0x1e, 0x0f, 0x86, 0x4b, 0x5a,
    -	0xdb, 0x6b, 0x02, 0x8e, 0x15, 0x05, 0x3a, 0x07, 0xfd, 0x4c, 0x29, 0x9e, 0x4a, 0xd4, 0x3e, 0xbf,
    -	0xc8, 0xa3, 0x23, 0x72, 0xb4, 0x76, 0xaa, 0x17, 0x3b, 0x9e, 0xea, 0x8f, 0x52, 0x09, 0xc6, 0x6f,
    -	0x24, 0x0f, 0x14, 0xda, 0x5c, 0xdf, 0x6f, 0x60, 0x86, 0x44, 0x8f, 0x8b, 0xfe, 0x4a, 0x78, 0x9d,
    -	0x61, 0xa7, 0xee, 0x87, 0x5a, 0xa7, 0x3d, 0x09, 0x83, 0x3b, 0x64, 0x2f, 0x70, 0xbd, 0xad, 0xa4,
    -	0x37, 0xe2, 0x15, 0x0e, 0xc6, 0x12, 0x6f, 0xe6, 0x0c, 0x1e, 0x3c, 0x8c, 0x9c, 0xc1, 0xfa, 0x0c,
    -	0x18, 0xea, 0x2a, 0x9e, 0xfc, 0x50, 0x11, 0xc6, 0xf1, 0xfc, 0xe2, 0x7b, 0x03, 0x71, 0x2d, 0x3d,
    -	0x10, 0x87, 0x91, 0x5a, 0xf7, 0x60, 0xa3, 0xf1, 0x4b, 0x16, 0x8c, 0xb3, 0xbc, 0x72, 0x22, 0x22,
    -	0x87, 0xeb, 0x7b, 0x47, 0x70, 0x15, 0x78, 0x14, 0xfa, 0x03, 0x5a, 0x69, 0x32, 0x43, 0x3b, 0x6b,
    -	0x09, 0xe6, 0x38, 0x74, 0x0a, 0xfa, 0x58, 0x13, 0xe8, 0xe0, 0x8d, 0xf0, 0x2d, 0x78, 0xd1, 0x89,
    -	0x1c, 0xcc, 0xa0, 0x2c, 0x36, 0x20, 0x26, 0xad, 0x86, 0xcb, 0x1b, 0x1d, 0xbb, 0x2c, 0xbc, 0x3b,
    -	0xc2, 0x7d, 0x64, 0x36, 0xed, 0x9d, 0xc5, 0x06, 0xcc, 0x66, 0xd9, 0xf9, 0x9a, 0xfd, 0x17, 0x05,
    -	0x38, 0x93, 0x59, 0xae, 0xe7, 0xd8, 0x80, 0x9d, 0x4b, 0x3f, 0xc8, 0x14, 0x59, 0xc5, 0x23, 0xf4,
    -	0xf5, 0xee, 0xeb, 0x55, 0xfa, 0xef, 0xef, 0x21, 0x64, 0x5f, 0x66, 0x97, 0xbd, 0x4b, 0x42, 0xf6,
    -	0x65, 0xb6, 0x2d, 0x47, 0x4d, 0xf0, 0x37, 0x85, 0x9c, 0x6f, 0x61, 0x0a, 0x83, 0xf3, 0x74, 0x9f,
    -	0x61, 0xc8, 0x50, 0x5e, 0xc2, 0xf9, 0x1e, 0xc3, 0x61, 0x58, 0x61, 0xd1, 0x1c, 0x8c, 0x37, 0x5d,
    -	0x8f, 0x6e, 0x3e, 0x7b, 0xa6, 0x28, 0xae, 0x6c, 0x19, 0x6b, 0x26, 0x1a, 0x27, 0xe9, 0x91, 0xab,
    -	0x85, 0xf3, 0xe3, 0x5f, 0xf7, 0xca, 0x81, 0x56, 0xdd, 0xac, 0xe9, 0xce, 0xa1, 0x7a, 0x31, 0x23,
    -	0xb4, 0xdf, 0x9a, 0xa6, 0x27, 0x2a, 0xf6, 0xae, 0x27, 0x1a, 0xc9, 0xd6, 0x11, 0xcd, 0xbc, 0x02,
    -	0xa3, 0xf7, 0x6d, 0x1b, 0xb1, 0xbf, 0x51, 0x84, 0x87, 0x3b, 0x2c, 0x7b, 0xbe, 0xd7, 0x1b, 0x63,
    -	0xa0, 0xed, 0xf5, 0xa9, 0x71, 0xa8, 0xc0, 0xb1, 0xcd, 0x76, 0xa3, 0xb1, 0xc7, 0x1e, 0x35, 0x91,
    -	0xba, 0xa4, 0x10, 0x32, 0xa5, 0x54, 0x8e, 0x1c, 0x5b, 0xce, 0xa0, 0xc1, 0x99, 0x25, 0xe9, 0x15,
    -	0x8b, 0x9e, 0x24, 0x7b, 0x8a, 0x55, 0xe2, 0x8a, 0x85, 0x75, 0x24, 0x36, 0x69, 0xd1, 0x25, 0x98,
    -	0x74, 0x76, 0x1d, 0x97, 0xe7, 0x44, 0x90, 0x0c, 0xf8, 0x1d, 0x4b, 0xe9, 0xa2, 0xe7, 0x92, 0x04,
    -	0x38, 0x5d, 0x06, 0xbd, 0x0e, 0xc8, 0xbf, 0xc9, 0x1e, 0x4a, 0xd4, 0x2f, 0x11, 0x4f, 0x58, 0xdd,
    -	0xd9, 0xd8, 0x15, 0xe3, 0x2d, 0xe1, 0x6a, 0x8a, 0x02, 0x67, 0x94, 0x4a, 0x04, 0x96, 0x1b, 0xc8,
    -	0x0f, 0x2c, 0xd7, 0x79, 0x5f, 0xec, 0x9a, 0x9d, 0xed, 0x22, 0x8c, 0x1e, 0xd0, 0xfd, 0xd7, 0xfe,
    -	0xb7, 0x16, 0x28, 0x05, 0xb1, 0x19, 0x18, 0xfa, 0x15, 0xe6, 0x9f, 0xcc, 0x55, 0xdb, 0x5a, 0x2c,
    -	0xa8, 0xe3, 0x9a, 0x7f, 0x72, 0x8c, 0xc4, 0x26, 0x2d, 0x9f, 0x43, 0x9a, 0x5f, 0xb1, 0x71, 0x2b,
    -	0x10, 0x71, 0x2b, 0x15, 0x05, 0xfa, 0x18, 0x0c, 0xd6, 0xdd, 0x5d, 0x37, 0x14, 0xca, 0xb1, 0x03,
    -	0x1b, 0xe3, 0xe2, 0xad, 0x73, 0x91, 0xb3, 0xc1, 0x92, 0x9f, 0xfd, 0x43, 0x85, 0xb8, 0x4f, 0xde,
    -	0x68, 0xfb, 0x91, 0x73, 0x04, 0x27, 0xf9, 0x25, 0xe3, 0x24, 0x7f, 0x3c, 0x7b, 0xa0, 0xb5, 0x26,
    -	0xe5, 0x9e, 0xe0, 0x57, 0x13, 0x27, 0xf8, 0x13, 0xdd, 0x59, 0x75, 0x3e, 0xb9, 0xff, 0xa1, 0x05,
    -	0x93, 0x06, 0xfd, 0x11, 0x1c, 0x20, 0xcb, 0xe6, 0x01, 0xf2, 0x48, 0xd7, 0x6f, 0xc8, 0x39, 0x38,
    -	0xbe, 0xbf, 0x98, 0x68, 0x3b, 0x3b, 0x30, 0xde, 0x86, 0xbe, 0x6d, 0x27, 0xa8, 0x77, 0x4a, 0x59,
    -	0x94, 0x2a, 0x34, 0x7b, 0xd9, 0x09, 0x84, 0xa7, 0xc2, 0x33, 0xb2, 0xd7, 0x29, 0xa8, 0xab, 0x97,
    -	0x02, 0xab, 0x0a, 0xbd, 0x04, 0x03, 0x61, 0xcd, 0x6f, 0xa9, 0x37, 0x53, 0x2c, 0xe5, 0x6f, 0x95,
    -	0x41, 0xee, 0xed, 0x97, 0x91, 0x59, 0x1d, 0x05, 0x63, 0x41, 0x8f, 0xde, 0x84, 0x51, 0xf6, 0x4b,
    -	0xb9, 0x0d, 0x16, 0xf3, 0x35, 0x18, 0x55, 0x9d, 0x90, 0xfb, 0xd4, 0x1a, 0x20, 0x6c, 0xb2, 0x9a,
    -	0xd9, 0x82, 0x92, 0xfa, 0xac, 0x07, 0x6a, 0xed, 0xfe, 0x57, 0x45, 0x98, 0xca, 0x98, 0x73, 0x28,
    -	0x34, 0x46, 0xe2, 0x62, 0x8f, 0x53, 0xf5, 0x1d, 0x8e, 0x45, 0xc8, 0x2e, 0x50, 0x75, 0x31, 0xb7,
    -	0x7a, 0xae, 0xf4, 0x5a, 0x48, 0x92, 0x95, 0x52, 0x50, 0xf7, 0x4a, 0x69, 0x65, 0x47, 0xd6, 0xd5,
    -	0xb4, 0x22, 0xd5, 0xd2, 0x07, 0x3a, 0xa6, 0xbf, 0xd1, 0x07, 0xc7, 0xb2, 0xe2, 0x09, 0xa3, 0xcf,
    -	0x24, 0xf2, 0x88, 0xbf, 0xd0, 0xa9, 0x87, 0xf5, 0x92, 0x3c, 0xb9, 0xb8, 0x08, 0xe3, 0x39, 0x6b,
    -	0x66, 0x16, 0xef, 0xda, 0xcd, 0xa2, 0x4e, 0x16, 0x5e, 0x27, 0xe0, 0xf9, 0xdf, 0xe5, 0xf6, 0xf1,
    -	0x81, 0x9e, 0x1b, 0x20, 0x12, 0xc7, 0x87, 0x09, 0x97, 0x24, 0x09, 0xee, 0xee, 0x92, 0x24, 0x6b,
    -	0x46, 0x2b, 0x30, 0x50, 0xe3, 0xbe, 0x2e, 0xc5, 0xee, 0x5b, 0x18, 0x77, 0x74, 0x51, 0x1b, 0xb0,
    -	0x70, 0x70, 0x11, 0x0c, 0x66, 0x5c, 0x18, 0xd6, 0x3a, 0xe6, 0x81, 0x4e, 0x9e, 0x1d, 0x7a, 0xf0,
    -	0x69, 0x5d, 0xf0, 0x40, 0x27, 0xd0, 0x8f, 0x5a, 0x90, 0x78, 0xf0, 0xa2, 0x94, 0x72, 0x56, 0xae,
    -	0x52, 0xee, 0x2c, 0xf4, 0x05, 0x7e, 0x83, 0x24, 0x93, 0x54, 0x63, 0xbf, 0x41, 0x30, 0xc3, 0x50,
    -	0x8a, 0x28, 0x56, 0xb5, 0x8c, 0xe8, 0xd7, 0x48, 0x71, 0x41, 0x7c, 0x14, 0xfa, 0x1b, 0x64, 0x97,
    -	0x34, 0x92, 0xb9, 0x04, 0x57, 0x29, 0x10, 0x73, 0x9c, 0xfd, 0x4b, 0x7d, 0x70, 0xba, 0x63, 0xac,
    -	0x2b, 0x7a, 0x19, 0xdb, 0x72, 0x22, 0x72, 0xcb, 0xd9, 0x4b, 0x26, 0xfd, 0xba, 0xc4, 0xc1, 0x58,
    -	0xe2, 0xd9, 0xf3, 0x4f, 0x9e, 0xbb, 0x23, 0xa1, 0xc2, 0x14, 0x29, 0x3b, 0x04, 0xd6, 0x54, 0x89,
    -	0x15, 0x0f, 0x43, 0x25, 0xf6, 0x1c, 0x40, 0x18, 0x36, 0xb8, 0x5b, 0x60, 0x5d, 0xbc, 0x2b, 0x8d,
    -	0x73, 0xbc, 0x54, 0x57, 0x05, 0x06, 0x6b, 0x54, 0x68, 0x11, 0x26, 0x5a, 0x81, 0x1f, 0x71, 0x8d,
    -	0xf0, 0x22, 0xf7, 0x9c, 0xed, 0x37, 0xc3, 0x0c, 0x55, 0x12, 0x78, 0x9c, 0x2a, 0x81, 0x5e, 0x84,
    -	0x61, 0x11, 0x7a, 0xa8, 0xe2, 0xfb, 0x0d, 0xa1, 0x84, 0x52, 0xce, 0xa4, 0xd5, 0x18, 0x85, 0x75,
    -	0x3a, 0xad, 0x18, 0x53, 0x33, 0x0f, 0x66, 0x16, 0xe3, 0xaa, 0x66, 0x8d, 0x2e, 0x11, 0xa6, 0x7c,
    -	0xa8, 0xa7, 0x30, 0xe5, 0xb1, 0x5a, 0xae, 0xd4, 0xb3, 0xd5, 0x13, 0xba, 0x2a, 0xb2, 0xbe, 0xda,
    -	0x07, 0x53, 0x62, 0xe2, 0x3c, 0xe8, 0xe9, 0x72, 0x2d, 0x3d, 0x5d, 0x0e, 0x43, 0x71, 0xf7, 0xde,
    -	0x9c, 0x39, 0xea, 0x39, 0xf3, 0xc3, 0x16, 0x98, 0x92, 0x1a, 0xfa, 0xdf, 0x73, 0xb3, 0x26, 0xbe,
    -	0x98, 0x2b, 0xf9, 0xc5, 0x31, 0x8c, 0xdf, 0x59, 0xfe, 0x44, 0xfb, 0x5f, 0x5b, 0xf0, 0x48, 0x57,
    -	0x8e, 0x68, 0x09, 0x4a, 0x4c, 0x9c, 0xd4, 0x2e, 0x7a, 0x4f, 0x28, 0xcf, 0x7a, 0x89, 0xc8, 0x91,
    -	0x6e, 0xe3, 0x92, 0x68, 0x29, 0x95, 0x9e, 0xf2, 0xc9, 0x8c, 0xf4, 0x94, 0xc7, 0x8d, 0xee, 0xb9,
    -	0xcf, 0xfc, 0x94, 0x5f, 0xa4, 0x27, 0x8e, 0xf1, 0xaa, 0x0d, 0x7d, 0xc0, 0x50, 0x3a, 0xda, 0x09,
    -	0xa5, 0x23, 0x32, 0xa9, 0xb5, 0x33, 0xe4, 0x23, 0x30, 0xc1, 0x62, 0x12, 0xb2, 0x77, 0x1e, 0xe2,
    -	0xbd, 0x5d, 0x21, 0xf6, 0xe5, 0x5e, 0x4d, 0xe0, 0x70, 0x8a, 0xda, 0xfe, 0xb3, 0x22, 0x0c, 0xf0,
    -	0xe5, 0x77, 0x04, 0xd7, 0xcb, 0xa7, 0xa1, 0xe4, 0x36, 0x9b, 0x6d, 0x9e, 0x71, 0xb0, 0x3f, 0xf6,
    -	0x0c, 0x5e, 0x91, 0x40, 0x1c, 0xe3, 0xd1, 0xb2, 0xd0, 0x77, 0x77, 0x08, 0x7b, 0xcc, 0x1b, 0x3e,
    -	0xbb, 0xe8, 0x44, 0x0e, 0x97, 0x95, 0xd4, 0x39, 0x1b, 0x6b, 0xc6, 0xd1, 0x27, 0x01, 0xc2, 0x28,
    -	0x70, 0xbd, 0x2d, 0x0a, 0x13, 0xb1, 0xf1, 0x9f, 0xea, 0xc0, 0xad, 0xaa, 0x88, 0x39, 0xcf, 0x78,
    -	0xcf, 0x51, 0x08, 0xac, 0x71, 0x44, 0xb3, 0xc6, 0x49, 0x3f, 0x93, 0x18, 0x3b, 0xe0, 0x5c, 0xe3,
    -	0x31, 0x9b, 0xf9, 0x20, 0x94, 0x14, 0xf3, 0x6e, 0xda, 0xaf, 0x11, 0x5d, 0x2c, 0xfa, 0x30, 0x8c,
    -	0x27, 0xda, 0x76, 0x20, 0xe5, 0xd9, 0x2f, 0x5b, 0x30, 0xce, 0x1b, 0xb3, 0xe4, 0xed, 0x8a, 0xd3,
    -	0xe0, 0x0e, 0x1c, 0x6b, 0x64, 0xec, 0xca, 0x62, 0xf8, 0x7b, 0xdf, 0xc5, 0x95, 0xb2, 0x2c, 0x0b,
    -	0x8b, 0x33, 0xeb, 0x40, 0xe7, 0xe9, 0x8a, 0xa3, 0xbb, 0xae, 0xd3, 0x10, 0xf1, 0x0d, 0x46, 0xf8,
    -	0x6a, 0xe3, 0x30, 0xac, 0xb0, 0xf6, 0x1f, 0x59, 0x30, 0xc9, 0x5b, 0x7e, 0x85, 0xec, 0xa9, 0xbd,
    -	0xe9, 0x5b, 0xd9, 0x76, 0x91, 0xeb, 0xb6, 0x90, 0x93, 0xeb, 0x56, 0xff, 0xb4, 0x62, 0xc7, 0x4f,
    -	0xfb, 0x8a, 0x05, 0x62, 0x86, 0x1c, 0x81, 0x3e, 0xe3, 0xbb, 0x4c, 0x7d, 0xc6, 0x4c, 0xfe, 0x22,
    -	0xc8, 0x51, 0x64, 0xfc, 0xb5, 0x05, 0x13, 0x9c, 0x20, 0xb6, 0xd5, 0x7f, 0x4b, 0xc7, 0x61, 0xde,
    -	0xfc, 0xa2, 0x4c, 0xe7, 0xcb, 0x2b, 0x64, 0x6f, 0xc3, 0xaf, 0x38, 0xd1, 0x76, 0xf6, 0x47, 0x19,
    -	0x83, 0xd5, 0xd7, 0x71, 0xb0, 0xea, 0x72, 0x01, 0x19, 0xa9, 0xe0, 0xba, 0x04, 0x08, 0x38, 0x68,
    -	0x2a, 0x38, 0xfb, 0xcf, 0x2d, 0x40, 0xbc, 0x1a, 0x43, 0x70, 0xa3, 0xe2, 0x10, 0x83, 0x6a, 0x07,
    -	0x5d, 0xbc, 0x35, 0x29, 0x0c, 0xd6, 0xa8, 0x0e, 0xa5, 0x7b, 0x12, 0x0e, 0x17, 0xc5, 0xee, 0x0e,
    -	0x17, 0x07, 0xe8, 0xd1, 0x7f, 0x3e, 0x00, 0xc9, 0x97, 0x7d, 0xe8, 0x3a, 0x8c, 0xd4, 0x9c, 0x96,
    -	0x73, 0xd3, 0x6d, 0xb8, 0x91, 0x4b, 0xc2, 0x4e, 0xde, 0x58, 0x0b, 0x1a, 0x9d, 0x30, 0x91, 0x6b,
    -	0x10, 0x6c, 0xf0, 0x41, 0xb3, 0x00, 0xad, 0xc0, 0xdd, 0x75, 0x1b, 0x64, 0x8b, 0xa9, 0x5d, 0x58,
    -	0x44, 0x15, 0xee, 0x1a, 0x26, 0xa1, 0x58, 0xa3, 0xc8, 0x08, 0xa3, 0x50, 0x7c, 0xc0, 0x61, 0x14,
    -	0xe0, 0xc8, 0xc2, 0x28, 0xf4, 0x1d, 0x28, 0x8c, 0xc2, 0xd0, 0x81, 0xc3, 0x28, 0xf4, 0xf7, 0x14,
    -	0x46, 0x01, 0xc3, 0x09, 0x29, 0x7b, 0xd2, 0xff, 0xcb, 0x6e, 0x83, 0x88, 0x0b, 0x07, 0x0f, 0x03,
    -	0x33, 0x73, 0x77, 0xbf, 0x7c, 0x02, 0x67, 0x52, 0xe0, 0x9c, 0x92, 0xe8, 0xa3, 0x30, 0xed, 0x34,
    -	0x1a, 0xfe, 0x2d, 0x35, 0xa8, 0x4b, 0x61, 0xcd, 0x69, 0x70, 0x13, 0xc8, 0x20, 0xe3, 0x7a, 0xea,
    -	0xee, 0x7e, 0x79, 0x7a, 0x2e, 0x87, 0x06, 0xe7, 0x96, 0x46, 0xaf, 0x42, 0xa9, 0x15, 0xf8, 0xb5,
    -	0x35, 0xed, 0xf9, 0xf1, 0x19, 0xda, 0x81, 0x15, 0x09, 0xbc, 0xb7, 0x5f, 0x1e, 0x55, 0x7f, 0xd8,
    -	0x81, 0x1f, 0x17, 0xc8, 0x88, 0x8b, 0x30, 0x7c, 0xa8, 0x71, 0x11, 0x76, 0x60, 0xaa, 0x4a, 0x02,
    -	0xd7, 0x69, 0xb8, 0x77, 0xa8, 0xbc, 0x2c, 0xf7, 0xa7, 0x0d, 0x28, 0x05, 0x89, 0x1d, 0xb9, 0xa7,
    -	0x50, 0xc4, 0x5a, 0x36, 0x2e, 0xb9, 0x03, 0xc7, 0x8c, 0xec, 0xff, 0x66, 0xc1, 0xa0, 0x78, 0xc9,
    -	0x77, 0x04, 0x52, 0xe3, 0x9c, 0x61, 0x94, 0x28, 0x67, 0x77, 0x18, 0x6b, 0x4c, 0xae, 0x39, 0x62,
    -	0x25, 0x61, 0x8e, 0x78, 0xa4, 0x13, 0x93, 0xce, 0x86, 0x88, 0xff, 0xaf, 0x48, 0xa5, 0x77, 0xe3,
    -	0x4d, 0xf9, 0x83, 0xef, 0x82, 0x75, 0x18, 0x0c, 0xc5, 0x9b, 0xe6, 0x42, 0xfe, 0x6b, 0x90, 0xe4,
    -	0x20, 0xc6, 0x5e, 0x74, 0xe2, 0x15, 0xb3, 0x64, 0x92, 0xf9, 0x58, 0xba, 0xf8, 0x00, 0x1f, 0x4b,
    -	0x77, 0x7b, 0x75, 0xdf, 0x77, 0x18, 0xaf, 0xee, 0xed, 0xaf, 0xb3, 0x93, 0x53, 0x87, 0x1f, 0x81,
    -	0x50, 0x75, 0xc9, 0x3c, 0x63, 0xed, 0x0e, 0x33, 0x4b, 0x34, 0x2a, 0x47, 0xb8, 0xfa, 0x45, 0x0b,
    -	0x4e, 0x67, 0x7c, 0x95, 0x26, 0x69, 0x3d, 0x03, 0x43, 0x4e, 0xbb, 0xee, 0xaa, 0xb5, 0xac, 0x99,
    -	0x26, 0xe7, 0x04, 0x1c, 0x2b, 0x0a, 0xb4, 0x00, 0x93, 0xe4, 0x76, 0xcb, 0xe5, 0x86, 0x5c, 0xdd,
    -	0xf9, 0xb8, 0xc8, 0x9f, 0x7f, 0x2e, 0x25, 0x91, 0x38, 0x4d, 0xaf, 0x02, 0x44, 0x15, 0x73, 0x03,
    -	0x44, 0xfd, 0xbc, 0x05, 0xc3, 0xea, 0x55, 0xef, 0x03, 0xef, 0xed, 0x8f, 0x98, 0xbd, 0xfd, 0x70,
    -	0x87, 0xde, 0xce, 0xe9, 0xe6, 0x3f, 0x28, 0xa8, 0xf6, 0x56, 0xfc, 0x20, 0xea, 0x41, 0x82, 0xbb,
    -	0xff, 0x87, 0x13, 0x17, 0x61, 0xd8, 0x69, 0xb5, 0x24, 0x42, 0x7a, 0xc0, 0xb1, 0xc0, 0xf2, 0x31,
    -	0x18, 0xeb, 0x34, 0xea, 0x1d, 0x47, 0x31, 0xf7, 0x1d, 0x47, 0x1d, 0x20, 0x72, 0x82, 0x2d, 0x12,
    -	0x51, 0x98, 0x70, 0xd8, 0xcd, 0xdf, 0x6f, 0xda, 0x91, 0xdb, 0x98, 0x75, 0xbd, 0x28, 0x8c, 0x82,
    -	0xd9, 0x15, 0x2f, 0xba, 0x1a, 0xf0, 0x2b, 0xa4, 0x16, 0x62, 0x4d, 0xf1, 0xc2, 0x1a, 0x5f, 0x19,
    -	0xc1, 0x82, 0xd5, 0xd1, 0x6f, 0xba, 0x52, 0xac, 0x0b, 0x38, 0x56, 0x14, 0xf6, 0x07, 0xd9, 0xe9,
    -	0xc3, 0xfa, 0xf4, 0x60, 0xe1, 0xc5, 0x7e, 0x72, 0x44, 0x8d, 0x06, 0x33, 0x8a, 0x2e, 0xea, 0x41,
    -	0xcc, 0x3a, 0x6f, 0xf6, 0xb4, 0x62, 0xfd, 0x45, 0x64, 0x1c, 0xe9, 0x0c, 0x7d, 0x3c, 0xe5, 0x1e,
    -	0xf3, 0x6c, 0x97, 0x53, 0xe3, 0x00, 0x0e, 0x31, 0x2c, 0xcb, 0x14, 0xcb, 0xc1, 0xb3, 0x52, 0x11,
    -	0xeb, 0x42, 0xcb, 0x32, 0x25, 0x10, 0x38, 0xa6, 0xa1, 0xc2, 0x94, 0xfa, 0x13, 0x4e, 0xa3, 0x38,
    -	0x18, 0xb1, 0xa2, 0x0e, 0xb1, 0x46, 0x81, 0x2e, 0x08, 0x85, 0x02, 0xb7, 0x0b, 0x3c, 0x9c, 0x50,
    -	0x28, 0xc8, 0xee, 0xd2, 0xb4, 0x40, 0x17, 0x61, 0x98, 0xdc, 0x8e, 0x48, 0xe0, 0x39, 0x0d, 0x5a,
    -	0x43, 0x7f, 0x1c, 0x3f, 0x73, 0x29, 0x06, 0x63, 0x9d, 0x06, 0x6d, 0xc0, 0x78, 0xc8, 0xf5, 0x6c,
    -	0x2a, 0x04, 0x3e, 0xd7, 0x57, 0x3e, 0xa5, 0xde, 0x53, 0x9b, 0xe8, 0x7b, 0x0c, 0xc4, 0x77, 0x27,
    -	0x19, 0x65, 0x22, 0xc9, 0x02, 0xbd, 0x06, 0x63, 0x0d, 0xdf, 0xa9, 0xcf, 0x3b, 0x0d, 0xc7, 0xab,
    -	0xb1, 0xfe, 0x19, 0x32, 0x73, 0x95, 0xaf, 0x1a, 0x58, 0x9c, 0xa0, 0xa6, 0xc2, 0x9b, 0x0e, 0x11,
    -	0x61, 0xda, 0x1c, 0x6f, 0x8b, 0x84, 0xd3, 0x25, 0xf6, 0x55, 0x4c, 0x78, 0x5b, 0xcd, 0xa1, 0xc1,
    -	0xb9, 0xa5, 0xd1, 0x4b, 0x30, 0x22, 0x3f, 0x5f, 0x0b, 0xca, 0x12, 0x3f, 0x89, 0xd1, 0x70, 0xd8,
    -	0xa0, 0x44, 0x21, 0x1c, 0x97, 0xff, 0x37, 0x02, 0x67, 0x73, 0xd3, 0xad, 0x89, 0x48, 0x05, 0xfc,
    -	0xf9, 0xf0, 0x87, 0xe5, 0x5b, 0xc5, 0xa5, 0x2c, 0xa2, 0x7b, 0xfb, 0xe5, 0x53, 0xa2, 0xd7, 0x32,
    -	0xf1, 0x38, 0x9b, 0x37, 0x5a, 0x83, 0xa9, 0x6d, 0xe2, 0x34, 0xa2, 0xed, 0x85, 0x6d, 0x52, 0xdb,
    -	0x91, 0x0b, 0x8e, 0x85, 0x79, 0xd1, 0x9e, 0x8e, 0x5c, 0x4e, 0x93, 0xe0, 0xac, 0x72, 0xe8, 0x2d,
    -	0x98, 0x6e, 0xb5, 0x6f, 0x36, 0xdc, 0x70, 0x7b, 0xdd, 0x8f, 0x98, 0x13, 0xd2, 0x5c, 0xbd, 0x1e,
    -	0x90, 0x90, 0xbf, 0x2e, 0x65, 0x47, 0xaf, 0x0c, 0xa4, 0x53, 0xc9, 0xa1, 0xc3, 0xb9, 0x1c, 0xd0,
    -	0x1d, 0x38, 0x9e, 0x98, 0x08, 0x22, 0x22, 0xc6, 0x58, 0x7e, 0x02, 0x9c, 0x6a, 0x56, 0x01, 0x11,
    -	0x5c, 0x26, 0x0b, 0x85, 0xb3, 0xab, 0x40, 0x2f, 0x03, 0xb8, 0xad, 0x65, 0xa7, 0xe9, 0x36, 0xe8,
    -	0x55, 0x71, 0x8a, 0xcd, 0x11, 0x7a, 0x6d, 0x80, 0x95, 0x8a, 0x84, 0xd2, 0xbd, 0x59, 0xfc, 0xdb,
    -	0xc3, 0x1a, 0x35, 0x5a, 0x85, 0x31, 0xf1, 0x6f, 0x4f, 0x0c, 0xe9, 0xa4, 0xca, 0x95, 0x38, 0x26,
    -	0x4b, 0xa8, 0x71, 0x4c, 0x40, 0x70, 0xa2, 0x2c, 0xda, 0x82, 0xd3, 0x32, 0x51, 0xa3, 0x3e, 0x3f,
    -	0xe5, 0x18, 0x84, 0x2c, 0xeb, 0xcc, 0x10, 0x7f, 0x95, 0x32, 0xd7, 0x89, 0x10, 0x77, 0xe6, 0x43,
    -	0xcf, 0x75, 0x7d, 0x9a, 0xf3, 0x37, 0xc7, 0xc7, 0xe3, 0x88, 0x83, 0xab, 0x49, 0x24, 0x4e, 0xd3,
    -	0x23, 0x1f, 0x8e, 0xbb, 0x5e, 0xd6, 0xac, 0x3e, 0xc1, 0x18, 0x7d, 0x88, 0x3f, 0xb7, 0xee, 0x3c,
    -	0xa3, 0x33, 0xf1, 0x38, 0x9b, 0xef, 0x3b, 0xf3, 0xfb, 0xfb, 0x43, 0x8b, 0x96, 0xd6, 0xa4, 0x73,
    -	0xf4, 0x29, 0x18, 0xd1, 0x3f, 0x4a, 0x48, 0x1a, 0xe7, 0xb2, 0x85, 0x57, 0x6d, 0x4f, 0xe0, 0xb2,
    -	0xbd, 0x5a, 0xf7, 0x3a, 0x0e, 0x1b, 0x1c, 0x51, 0x2d, 0x23, 0xb6, 0xc1, 0x85, 0xde, 0x24, 0x99,
    -	0xde, 0xdd, 0xde, 0x08, 0x64, 0x4f, 0x77, 0xb4, 0x0a, 0x43, 0xb5, 0x86, 0x4b, 0xbc, 0x68, 0xa5,
    -	0xd2, 0x29, 0x7a, 0xe3, 0x82, 0xa0, 0x11, 0xeb, 0x47, 0x24, 0x90, 0xe1, 0x30, 0xac, 0x38, 0xd8,
    -	0x2f, 0xc1, 0x70, 0xb5, 0x41, 0x48, 0x8b, 0x3f, 0xdf, 0x41, 0x4f, 0xb2, 0xdb, 0x04, 0x93, 0x07,
    -	0x2d, 0x26, 0x0f, 0xea, 0x17, 0x05, 0x26, 0x09, 0x4a, 0xbc, 0xfd, 0x5b, 0x05, 0x28, 0x77, 0xc9,
    -	0x63, 0x94, 0x30, 0x60, 0x59, 0x3d, 0x19, 0xb0, 0xe6, 0x60, 0x3c, 0xfe, 0xa7, 0xeb, 0xc6, 0x94,
    -	0x0f, 0xec, 0x75, 0x13, 0x8d, 0x93, 0xf4, 0x3d, 0x3f, 0x67, 0xd0, 0x6d, 0x60, 0x7d, 0x5d, 0x1f,
    -	0xe4, 0x18, 0xb6, 0xef, 0xfe, 0xde, 0x2f, 0xcc, 0xb9, 0x76, 0x4c, 0xfb, 0xeb, 0x05, 0x38, 0xae,
    -	0xba, 0xf0, 0x3b, 0xb7, 0xe3, 0xae, 0xa5, 0x3b, 0xee, 0x10, 0xac, 0xc0, 0xf6, 0x55, 0x18, 0xe0,
    -	0x81, 0x2c, 0x7b, 0x10, 0xd4, 0x1f, 0x35, 0xe3, 0x6b, 0x2b, 0xd9, 0xd0, 0x88, 0xb1, 0xfd, 0x03,
    -	0x16, 0x8c, 0x27, 0xde, 0xc5, 0x21, 0xac, 0x3d, 0x9e, 0xbe, 0x1f, 0x61, 0x3a, 0x4b, 0x4c, 0x3f,
    -	0x0b, 0x7d, 0xdb, 0x7e, 0x18, 0x25, 0x5d, 0x44, 0x2e, 0xfb, 0x61, 0x84, 0x19, 0xc6, 0xfe, 0x63,
    -	0x0b, 0xfa, 0x37, 0x1c, 0xd7, 0x8b, 0xa4, 0x39, 0xc1, 0xca, 0x31, 0x27, 0xf4, 0xf2, 0x5d, 0xe8,
    -	0x45, 0x18, 0x20, 0x9b, 0x9b, 0xa4, 0x16, 0x89, 0x51, 0x95, 0x41, 0x14, 0x06, 0x96, 0x18, 0x94,
    -	0x4a, 0x8e, 0xac, 0x32, 0xfe, 0x17, 0x0b, 0x62, 0x74, 0x03, 0x4a, 0x91, 0xdb, 0x24, 0x73, 0xf5,
    -	0xba, 0x30, 0xb2, 0xdf, 0x47, 0xe4, 0x8f, 0x0d, 0xc9, 0x00, 0xc7, 0xbc, 0xec, 0x2f, 0x15, 0x00,
    -	0xe2, 0x08, 0x60, 0xdd, 0x3e, 0x71, 0x3e, 0x65, 0x7e, 0x3d, 0x97, 0x61, 0x7e, 0x45, 0x31, 0xc3,
    -	0x0c, 0xdb, 0xab, 0xea, 0xa6, 0x62, 0x4f, 0xdd, 0xd4, 0x77, 0x90, 0x6e, 0x5a, 0x80, 0xc9, 0x38,
    -	0x82, 0x99, 0x19, 0xc0, 0x91, 0x1d, 0xba, 0x1b, 0x49, 0x24, 0x4e, 0xd3, 0xdb, 0x04, 0xce, 0xaa,
    -	0x40, 0x4e, 0xe2, 0x2c, 0x64, 0x1e, 0xe4, 0xba, 0x39, 0xbb, 0x4b, 0x3f, 0xc5, 0xf6, 0xe5, 0x42,
    -	0xae, 0x7d, 0xf9, 0x27, 0x2c, 0x38, 0x96, 0xac, 0x87, 0x3d, 0xb7, 0xfe, 0x82, 0x05, 0xc7, 0xe3,
    -	0x34, 0x1e, 0x69, 0x9b, 0xfe, 0x0b, 0x1d, 0x83, 0x53, 0xe5, 0xb4, 0x38, 0x8e, 0xd6, 0xb1, 0x96,
    -	0xc5, 0x1a, 0x67, 0xd7, 0x68, 0xff, 0xd7, 0x3e, 0x98, 0xce, 0x8b, 0x6a, 0xc5, 0x1e, 0x98, 0x38,
    -	0xb7, 0xab, 0x3b, 0xe4, 0x96, 0x70, 0xe3, 0x8f, 0x1f, 0x98, 0x70, 0x30, 0x96, 0xf8, 0x64, 0xe6,
    -	0x96, 0x42, 0x8f, 0x99, 0x5b, 0xb6, 0x61, 0xf2, 0xd6, 0x36, 0xf1, 0xae, 0x79, 0xa1, 0x13, 0xb9,
    -	0xe1, 0xa6, 0xcb, 0x2c, 0xd2, 0x7c, 0xde, 0xc8, 0xec, 0xe3, 0x93, 0x37, 0x92, 0x04, 0xf7, 0xf6,
    -	0xcb, 0xa7, 0x0d, 0x40, 0xdc, 0x64, 0xbe, 0x91, 0xe0, 0x34, 0xd3, 0x74, 0xe2, 0x9b, 0xbe, 0x07,
    -	0x9c, 0xf8, 0xa6, 0xe9, 0x0a, 0x3f, 0x16, 0xf9, 0x7a, 0x80, 0xdd, 0x35, 0xd7, 0x14, 0x14, 0x6b,
    -	0x14, 0xe8, 0x13, 0x80, 0xf4, 0xcc, 0x65, 0x46, 0x50, 0xd1, 0x67, 0xef, 0xee, 0x97, 0xd1, 0x7a,
    -	0x0a, 0x7b, 0x6f, 0xbf, 0x3c, 0x45, 0xa1, 0x2b, 0x1e, 0xbd, 0xb3, 0xc6, 0x91, 0xd8, 0x32, 0x18,
    -	0xa1, 0x1b, 0x30, 0x41, 0xa1, 0x6c, 0x45, 0xc9, 0x88, 0xa5, 0xfc, 0x9e, 0xf9, 0xf4, 0xdd, 0xfd,
    -	0xf2, 0xc4, 0x7a, 0x02, 0x97, 0xc7, 0x3a, 0xc5, 0x24, 0x23, 0xff, 0xcd, 0x50, 0xaf, 0xf9, 0x6f,
    -	0xec, 0x2f, 0x58, 0x70, 0x92, 0x1e, 0x70, 0xf5, 0xd5, 0x1c, 0xb3, 0xb4, 0xd3, 0x72, 0xb9, 0xe1,
    -	0x43, 0x1c, 0x35, 0x4c, 0xc1, 0x56, 0x59, 0xe1, 0x66, 0x0f, 0x85, 0xa5, 0x3b, 0xfc, 0x8e, 0xeb,
    -	0xd5, 0x93, 0x3b, 0xfc, 0x15, 0xd7, 0xab, 0x63, 0x86, 0x51, 0x47, 0x56, 0x31, 0xf7, 0x11, 0xc3,
    -	0x57, 0xe9, 0x5a, 0xa5, 0x6d, 0xf9, 0x96, 0x36, 0x03, 0x3d, 0xad, 0x1b, 0x29, 0x85, 0x3f, 0x62,
    -	0xae, 0x81, 0xf2, 0xf3, 0x16, 0x88, 0x47, 0xcf, 0x3d, 0x9c, 0xc9, 0x6f, 0xc2, 0xc8, 0x6e, 0x3a,
    -	0xab, 0xe3, 0xd9, 0xfc, 0x57, 0xe0, 0x22, 0x56, 0xbb, 0x12, 0xd1, 0x8d, 0x0c, 0x8e, 0x06, 0x2f,
    -	0xbb, 0x0e, 0x02, 0xbb, 0x48, 0x98, 0x29, 0xa2, 0x7b, 0x6b, 0x9e, 0x03, 0xa8, 0x33, 0x5a, 0x96,
    -	0xea, 0xb9, 0x60, 0x4a, 0x5c, 0x8b, 0x0a, 0x83, 0x35, 0x2a, 0xfb, 0x77, 0x0b, 0x30, 0x2c, 0xb3,
    -	0x08, 0xb6, 0xbd, 0x5e, 0x14, 0x86, 0x07, 0x4a, 0x2b, 0x8e, 0x2e, 0x40, 0x89, 0x69, 0xb4, 0x2b,
    -	0xb1, 0x9e, 0x55, 0xe9, 0x93, 0xd6, 0x24, 0x02, 0xc7, 0x34, 0x4c, 0x7c, 0x6f, 0xdf, 0x64, 0xe4,
    -	0x89, 0x27, 0xba, 0x55, 0x0e, 0xc6, 0x12, 0x8f, 0x3e, 0x0a, 0x13, 0xbc, 0x5c, 0xe0, 0xb7, 0x9c,
    -	0x2d, 0x6e, 0x05, 0xeb, 0x57, 0x71, 0x4f, 0x26, 0xd6, 0x12, 0xb8, 0x7b, 0xfb, 0xe5, 0x63, 0x49,
    -	0x18, 0x33, 0xef, 0xa6, 0xb8, 0x30, 0x67, 0x37, 0x5e, 0x09, 0xdd, 0xd5, 0x53, 0x3e, 0x72, 0x31,
    -	0x0a, 0xeb, 0x74, 0xf6, 0xa7, 0x00, 0xa5, 0xf3, 0x29, 0xa2, 0xd7, 0xb9, 0xb3, 0xb4, 0x1b, 0x90,
    -	0x7a, 0x27, 0x73, 0xaf, 0x1e, 0xdd, 0x43, 0xbe, 0xae, 0xe3, 0xa5, 0xb0, 0x2a, 0x6f, 0xff, 0x60,
    -	0x1f, 0x4c, 0x24, 0xe3, 0x09, 0xa0, 0xcb, 0x30, 0xc0, 0x45, 0x4a, 0xc1, 0xbe, 0x83, 0x37, 0x91,
    -	0x16, 0x85, 0x80, 0x1d, 0xae, 0x42, 0x2a, 0x15, 0xe5, 0xd1, 0x5b, 0x30, 0x5c, 0xf7, 0x6f, 0x79,
    -	0xb7, 0x9c, 0xa0, 0x3e, 0x57, 0x59, 0x11, 0xd3, 0x39, 0x53, 0xc5, 0xb1, 0x18, 0x93, 0xe9, 0x91,
    -	0x0d, 0x98, 0xe5, 0x3c, 0x46, 0x61, 0x9d, 0x1d, 0xda, 0x60, 0x29, 0x42, 0x36, 0xdd, 0xad, 0x35,
    -	0xa7, 0xd5, 0xe9, 0xe5, 0xcc, 0x82, 0x24, 0xd2, 0x38, 0x8f, 0x8a, 0x3c, 0x22, 0x1c, 0x81, 0x63,
    -	0x46, 0xe8, 0x33, 0x30, 0x15, 0xe6, 0x18, 0x5d, 0xf2, 0xd2, 0xeb, 0x76, 0xb2, 0x43, 0xcc, 0x3f,
    -	0x74, 0x77, 0xbf, 0x3c, 0x95, 0x65, 0x9e, 0xc9, 0xaa, 0x06, 0xdd, 0x06, 0x24, 0x94, 0x9b, 0x1b,
    -	0x41, 0x3b, 0x8c, 0xe6, 0xdb, 0x5e, 0xbd, 0x21, 0x53, 0x88, 0x64, 0x27, 0xe0, 0x4e, 0x51, 0x6b,
    -	0x75, 0xb3, 0xf8, 0xa2, 0x69, 0x0a, 0x9c, 0x51, 0x87, 0xfd, 0xf9, 0x3e, 0x98, 0x91, 0x09, 0x4c,
    -	0x33, 0x5e, 0x08, 0x7c, 0xce, 0x4a, 0x3c, 0x11, 0x78, 0x39, 0x7f, 0x57, 0x7a, 0x60, 0x0f, 0x05,
    -	0xbe, 0x98, 0x7e, 0x28, 0xf0, 0xea, 0x01, 0x9b, 0x71, 0x68, 0xcf, 0x05, 0xbe, 0x63, 0x7d, 0xfc,
    -	0xbf, 0x7c, 0x0c, 0x8c, 0x73, 0xc4, 0x48, 0xf8, 0x6f, 0x1d, 0x52, 0xc2, 0x7f, 0x0c, 0x43, 0xa4,
    -	0xd9, 0x8a, 0xf6, 0x16, 0xdd, 0x40, 0xb4, 0x38, 0x93, 0xe7, 0x92, 0xa0, 0x49, 0xf3, 0x94, 0x18,
    -	0xac, 0xf8, 0xa0, 0x5d, 0x98, 0xdc, 0xaa, 0x91, 0x44, 0xce, 0xef, 0x62, 0xfe, 0xba, 0xbd, 0xb4,
    -	0xb0, 0xd4, 0x21, 0xe1, 0x37, 0xbb, 0xa9, 0xa4, 0x48, 0x70, 0xba, 0x0a, 0x96, 0x6f, 0xdc, 0xb9,
    -	0x15, 0x2e, 0x35, 0x9c, 0x30, 0x72, 0x6b, 0xf3, 0x0d, 0xbf, 0xb6, 0x53, 0x8d, 0xfc, 0x40, 0x26,
    -	0x1c, 0xcb, 0xbc, 0x28, 0xcc, 0xdd, 0xa8, 0xa6, 0xe8, 0xd3, 0xf9, 0xc6, 0xb3, 0xa8, 0x70, 0x66,
    -	0x5d, 0x68, 0x1d, 0x06, 0xb7, 0xdc, 0x08, 0x93, 0x96, 0x2f, 0x76, 0x8b, 0xcc, 0xad, 0xf0, 0x12,
    -	0x27, 0x49, 0xe7, 0xff, 0x16, 0x08, 0x2c, 0x99, 0xa0, 0xd7, 0xd5, 0x21, 0x30, 0x90, 0xaf, 0x2d,
    -	0x4c, 0x7b, 0x5e, 0x65, 0x1e, 0x03, 0xaf, 0x41, 0xd1, 0xdb, 0x0c, 0x3b, 0xc5, 0x0b, 0x59, 0x5f,
    -	0xae, 0xa6, 0xf3, 0x72, 0xaf, 0x2f, 0x57, 0x31, 0x2d, 0xc8, 0x9e, 0x16, 0x86, 0xb5, 0xd0, 0x15,
    -	0xa9, 0x53, 0x32, 0x5f, 0x5a, 0xae, 0x54, 0x17, 0xaa, 0x2b, 0xe9, 0x5c, 0xe4, 0x0c, 0x8c, 0x79,
    -	0x71, 0x74, 0x1d, 0x4a, 0x5b, 0x7c, 0xe3, 0xdb, 0x0c, 0x45, 0x12, 0xe3, 0xcc, 0xc3, 0xe8, 0x92,
    -	0x24, 0x4a, 0x67, 0x20, 0x57, 0x28, 0x1c, 0xb3, 0x42, 0x9f, 0xb7, 0xe0, 0x78, 0x32, 0x0b, 0x34,
    -	0x7b, 0x10, 0x24, 0x9c, 0x94, 0x5e, 0xec, 0x25, 0x2d, 0x37, 0x2b, 0x60, 0x54, 0xc8, 0x14, 0xfc,
    -	0x99, 0x64, 0x38, 0xbb, 0x3a, 0xda, 0xd1, 0xc1, 0xcd, 0xba, 0x70, 0x96, 0xc9, 0xec, 0xe8, 0x44,
    -	0xf0, 0x14, 0xde, 0xd1, 0x78, 0x7e, 0x11, 0xd3, 0x82, 0x68, 0x03, 0x60, 0xb3, 0x41, 0x64, 0xc2,
    -	0xfa, 0x91, 0xfc, 0xd3, 0x7f, 0x59, 0x51, 0xc9, 0x6c, 0x41, 0x54, 0x26, 0x8c, 0xa1, 0x58, 0xe3,
    -	0x43, 0xa7, 0x52, 0xcd, 0xf5, 0xea, 0x24, 0x60, 0xe6, 0x93, 0x9c, 0xa9, 0xb4, 0xc0, 0x28, 0xd2,
    -	0x53, 0x89, 0xc3, 0xb1, 0xe0, 0xc0, 0x78, 0x91, 0xd6, 0xf6, 0x66, 0xd8, 0x29, 0x2c, 0xfe, 0x02,
    -	0x69, 0x6d, 0x27, 0x26, 0x14, 0xe7, 0xc5, 0xe0, 0x58, 0x70, 0xa0, 0x4b, 0x66, 0x93, 0x2e, 0x20,
    -	0x12, 0x4c, 0x8f, 0xe7, 0x2f, 0x99, 0x65, 0x4e, 0x92, 0x5e, 0x32, 0x02, 0x81, 0x25, 0x13, 0xf4,
    -	0x49, 0x53, 0xda, 0x99, 0x60, 0x3c, 0x9f, 0xee, 0x22, 0xed, 0x18, 0x7c, 0x3b, 0xcb, 0x3b, 0x2f,
    -	0x43, 0x61, 0xb3, 0xc6, 0xcc, 0x2e, 0x39, 0x0a, 0xee, 0xe5, 0x05, 0x83, 0x1b, 0x0b, 0x33, 0xbd,
    -	0xbc, 0x80, 0x0b, 0x9b, 0x35, 0x3a, 0xf5, 0x9d, 0x3b, 0xed, 0x80, 0x2c, 0xbb, 0x0d, 0x22, 0x42,
    -	0xe4, 0x67, 0x4e, 0xfd, 0x39, 0x49, 0x94, 0x9e, 0xfa, 0x0a, 0x85, 0x63, 0x56, 0x94, 0x6f, 0x2c,
    -	0x83, 0x4d, 0xe5, 0xf3, 0x55, 0xa2, 0x56, 0x9a, 0x6f, 0xa6, 0x14, 0xb6, 0x03, 0xa3, 0xbb, 0x61,
    -	0x6b, 0x9b, 0xc8, 0x5d, 0x91, 0x19, 0x84, 0x72, 0x5e, 0xd3, 0x5f, 0x17, 0x84, 0x6e, 0x10, 0xb5,
    -	0x9d, 0x46, 0x6a, 0x23, 0x67, 0x7a, 0x80, 0xeb, 0x3a, 0x33, 0x6c, 0xf2, 0xa6, 0x13, 0xe1, 0x6d,
    -	0x1e, 0xf2, 0x8a, 0x99, 0x86, 0x72, 0x26, 0x42, 0x46, 0x54, 0x2c, 0x3e, 0x11, 0x04, 0x02, 0x4b,
    -	0x26, 0xaa, 0xb3, 0xd9, 0x01, 0x74, 0xa2, 0x4b, 0x67, 0xa7, 0xda, 0x1b, 0x77, 0x36, 0x3b, 0x70,
    -	0x62, 0x56, 0xec, 0xa0, 0x69, 0x65, 0x24, 0xcc, 0x9e, 0x7e, 0x28, 0xff, 0xa0, 0xe9, 0x96, 0x60,
    -	0x9b, 0x1f, 0x34, 0x59, 0x54, 0x38, 0xb3, 0x2e, 0xfa, 0x71, 0x2d, 0x19, 0xbd, 0x4c, 0x84, 0xf1,
    -	0x7f, 0x32, 0x27, 0xf8, 0x5f, 0x3a, 0xc4, 0x19, 0xff, 0x38, 0x85, 0xc2, 0x31, 0x2b, 0x54, 0x87,
    -	0xb1, 0x96, 0x11, 0x15, 0x93, 0xa5, 0x23, 0xc8, 0x91, 0x0b, 0xb2, 0xe2, 0x67, 0x72, 0x75, 0x86,
    -	0x89, 0xc1, 0x09, 0x9e, 0xcc, 0x37, 0x8c, 0x3f, 0xf4, 0x62, 0xd9, 0x0a, 0x72, 0x86, 0x3a, 0xe3,
    -	0x2d, 0x18, 0x1f, 0x6a, 0x81, 0xc0, 0x92, 0x09, 0xed, 0x0d, 0xf1, 0x3c, 0xc9, 0x0f, 0x59, 0xd2,
    -	0x8f, 0x3c, 0x13, 0x6e, 0x96, 0x4d, 0x43, 0x86, 0x82, 0x16, 0x28, 0x1c, 0xb3, 0xa2, 0x3b, 0x39,
    -	0x3d, 0xf0, 0x4e, 0xe5, 0xef, 0xe4, 0xc9, 0xe3, 0x8e, 0xed, 0xe4, 0xf4, 0xb0, 0x2b, 0x8a, 0xa3,
    -	0x4e, 0x45, 0x2e, 0x66, 0x09, 0x0b, 0x72, 0xda, 0xa5, 0x42, 0x1f, 0xa7, 0xdb, 0xa5, 0x50, 0x38,
    -	0x66, 0x65, 0xff, 0x60, 0x01, 0xce, 0x74, 0x5e, 0x6f, 0xb1, 0xa1, 0xa6, 0x12, 0x7b, 0xb3, 0x24,
    -	0x0c, 0x35, 0x5c, 0x6d, 0x10, 0x53, 0xf5, 0x1c, 0xcc, 0xf4, 0x12, 0x4c, 0xaa, 0x47, 0x64, 0x0d,
    -	0xb7, 0xb6, 0xb7, 0x1e, 0x6b, 0x6a, 0x54, 0xd8, 0x8f, 0x6a, 0x92, 0x00, 0xa7, 0xcb, 0xa0, 0x39,
    -	0x18, 0x37, 0x80, 0x2b, 0x8b, 0x42, 0x3d, 0x10, 0x87, 0xc8, 0x37, 0xd1, 0x38, 0x49, 0x6f, 0xff,
    -	0x9c, 0x05, 0x0f, 0xe5, 0xe4, 0x2b, 0xee, 0x39, 0x56, 0xe7, 0x26, 0x8c, 0xb7, 0xcc, 0xa2, 0x5d,
    -	0xc2, 0x0b, 0x1b, 0x59, 0x91, 0x55, 0x5b, 0x13, 0x08, 0x9c, 0x64, 0x6a, 0xff, 0x4c, 0x01, 0x4e,
    -	0x77, 0xf4, 0x8a, 0x46, 0x18, 0x4e, 0x6c, 0x35, 0x43, 0x67, 0x21, 0x20, 0x75, 0xe2, 0x45, 0xae,
    -	0xd3, 0xa8, 0xb6, 0x48, 0x4d, 0x33, 0xb5, 0x31, 0xf7, 0xe2, 0x4b, 0x6b, 0xd5, 0xb9, 0x34, 0x05,
    -	0xce, 0x29, 0x89, 0x96, 0x01, 0xa5, 0x31, 0x62, 0x84, 0xd9, 0xd5, 0x34, 0xcd, 0x0f, 0x67, 0x94,
    -	0x40, 0x1f, 0x84, 0x51, 0xe5, 0x6d, 0xad, 0x8d, 0x38, 0xdb, 0xd8, 0xb1, 0x8e, 0xc0, 0x26, 0x1d,
    -	0xba, 0xc8, 0x73, 0xa7, 0x88, 0x2c, 0x3b, 0xc2, 0x2e, 0x37, 0x2e, 0x13, 0xa3, 0x08, 0x30, 0xd6,
    -	0x69, 0xe6, 0x5f, 0xfa, 0xed, 0x6f, 0x9e, 0x79, 0xdf, 0xef, 0x7f, 0xf3, 0xcc, 0xfb, 0xfe, 0xe8,
    -	0x9b, 0x67, 0xde, 0xf7, 0x3d, 0x77, 0xcf, 0x58, 0xbf, 0x7d, 0xf7, 0x8c, 0xf5, 0xfb, 0x77, 0xcf,
    -	0x58, 0x7f, 0x74, 0xf7, 0x8c, 0xf5, 0xef, 0xee, 0x9e, 0xb1, 0xbe, 0xf4, 0xa7, 0x67, 0xde, 0xf7,
    -	0x26, 0x8a, 0xa3, 0xdf, 0x5e, 0xa0, 0xa3, 0x73, 0x61, 0xf7, 0xe2, 0xff, 0x0a, 0x00, 0x00, 0xff,
    -	0xff, 0x31, 0xd1, 0xcb, 0x48, 0xf3, 0x1a, 0x01, 0x00,
    +	proto.RegisterFile("k8s.io/api/core/v1/generated.proto", fileDescriptor_6c07b07c062484ab)
    +}
    +
    +var fileDescriptor_6c07b07c062484ab = []byte{
    +	// 16114 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x69, 0x90, 0x64, 0xd9,
    +	0x59, 0x28, 0xa6, 0x9b, 0x59, 0xeb, 0x57, 0xfb, 0xa9, 0x5e, 0xaa, 0x6b, 0xba, 0x3b, 0x7b, 0xee,
    +	0xcc, 0xf4, 0xf4, 0x6c, 0xd5, 0xea, 0x59, 0x34, 0xad, 0x99, 0xd1, 0x30, 0xb5, 0x76, 0xd7, 0x74,
    +	0x57, 0x75, 0xce, 0xc9, 0xaa, 0x6e, 0x69, 0x34, 0x12, 0xba, 0x9d, 0x79, 0xaa, 0xea, 0xaa, 0x32,
    +	0xef, 0xcd, 0xb9, 0xf7, 0x66, 0x75, 0x57, 0x5b, 0x04, 0x20, 0x8c, 0x40, 0x02, 0x47, 0x28, 0x08,
    +	0x6c, 0x1c, 0x82, 0xe0, 0x07, 0x60, 0x16, 0xcb, 0x60, 0x64, 0x61, 0xc0, 0x88, 0xcd, 0x36, 0x8e,
    +	0x00, 0xff, 0xc0, 0x98, 0x08, 0x4b, 0x84, 0x09, 0x17, 0x56, 0xe1, 0x08, 0x82, 0x1f, 0x06, 0x82,
    +	0xf7, 0x7e, 0xbc, 0x57, 0xc1, 0x7b, 0xbc, 0x38, 0xeb, 0x3d, 0xe7, 0x2e, 0x99, 0x59, 0x3d, 0xdd,
    +	0xa5, 0x91, 0x62, 0xfe, 0x65, 0x9e, 0xef, 0x3b, 0xdf, 0x39, 0xf7, 0xac, 0xdf, 0xf9, 0x56, 0xb0,
    +	0xb7, 0x2f, 0x87, 0x33, 0xae, 0x7f, 0xd1, 0x69, 0xba, 0x17, 0xab, 0x7e, 0x40, 0x2e, 0xee, 0x5c,
    +	0xba, 0xb8, 0x49, 0x3c, 0x12, 0x38, 0x11, 0xa9, 0xcd, 0x34, 0x03, 0x3f, 0xf2, 0x11, 0xe2, 0x38,
    +	0x33, 0x4e, 0xd3, 0x9d, 0xa1, 0x38, 0x33, 0x3b, 0x97, 0xa6, 0x9f, 0xdb, 0x74, 0xa3, 0xad, 0xd6,
    +	0xed, 0x99, 0xaa, 0xdf, 0xb8, 0xb8, 0xe9, 0x6f, 0xfa, 0x17, 0x19, 0xea, 0xed, 0xd6, 0x06, 0xfb,
    +	0xc7, 0xfe, 0xb0, 0x5f, 0x9c, 0xc4, 0xf4, 0x8b, 0x71, 0x33, 0x0d, 0xa7, 0xba, 0xe5, 0x7a, 0x24,
    +	0xd8, 0xbd, 0xd8, 0xdc, 0xde, 0x64, 0xed, 0x06, 0x24, 0xf4, 0x5b, 0x41, 0x95, 0x24, 0x1b, 0x6e,
    +	0x5b, 0x2b, 0xbc, 0xd8, 0x20, 0x91, 0x93, 0xd1, 0xdd, 0xe9, 0x8b, 0x79, 0xb5, 0x82, 0x96, 0x17,
    +	0xb9, 0x8d, 0x74, 0x33, 0x1f, 0xe9, 0x54, 0x21, 0xac, 0x6e, 0x91, 0x86, 0x93, 0xaa, 0xf7, 0x42,
    +	0x5e, 0xbd, 0x56, 0xe4, 0xd6, 0x2f, 0xba, 0x5e, 0x14, 0x46, 0x41, 0xb2, 0x92, 0xfd, 0x2d, 0x0b,
    +	0xce, 0xcd, 0xde, 0xaa, 0x2c, 0xd6, 0x9d, 0x30, 0x72, 0xab, 0x73, 0x75, 0xbf, 0xba, 0x5d, 0x89,
    +	0xfc, 0x80, 0xdc, 0xf4, 0xeb, 0xad, 0x06, 0xa9, 0xb0, 0x81, 0x40, 0xcf, 0xc2, 0xc0, 0x0e, 0xfb,
    +	0xbf, 0xbc, 0x30, 0x65, 0x9d, 0xb3, 0x2e, 0x0c, 0xce, 0x8d, 0xff, 0xe9, 0x5e, 0xe9, 0x43, 0xfb,
    +	0x7b, 0xa5, 0x81, 0x9b, 0xa2, 0x1c, 0x2b, 0x0c, 0x74, 0x1e, 0xfa, 0x36, 0xc2, 0xb5, 0xdd, 0x26,
    +	0x99, 0x2a, 0x30, 0xdc, 0x51, 0x81, 0xdb, 0xb7, 0x54, 0xa1, 0xa5, 0x58, 0x40, 0xd1, 0x45, 0x18,
    +	0x6c, 0x3a, 0x41, 0xe4, 0x46, 0xae, 0xef, 0x4d, 0x15, 0xcf, 0x59, 0x17, 0x7a, 0xe7, 0x26, 0x04,
    +	0xea, 0x60, 0x59, 0x02, 0x70, 0x8c, 0x43, 0xbb, 0x11, 0x10, 0xa7, 0x76, 0xc3, 0xab, 0xef, 0x4e,
    +	0xf5, 0x9c, 0xb3, 0x2e, 0x0c, 0xc4, 0xdd, 0xc0, 0xa2, 0x1c, 0x2b, 0x0c, 0xfb, 0x2b, 0x05, 0x18,
    +	0x98, 0xdd, 0xd8, 0x70, 0x3d, 0x37, 0xda, 0x45, 0x37, 0x61, 0xd8, 0xf3, 0x6b, 0x44, 0xfe, 0x67,
    +	0x5f, 0x31, 0xf4, 0xfc, 0xb9, 0x99, 0xf4, 0x52, 0x9a, 0x59, 0xd5, 0xf0, 0xe6, 0xc6, 0xf7, 0xf7,
    +	0x4a, 0xc3, 0x7a, 0x09, 0x36, 0xe8, 0x20, 0x0c, 0x43, 0x4d, 0xbf, 0xa6, 0xc8, 0x16, 0x18, 0xd9,
    +	0x52, 0x16, 0xd9, 0x72, 0x8c, 0x36, 0x37, 0xb6, 0xbf, 0x57, 0x1a, 0xd2, 0x0a, 0xb0, 0x4e, 0x04,
    +	0xdd, 0x86, 0x31, 0xfa, 0xd7, 0x8b, 0x5c, 0x45, 0xb7, 0xc8, 0xe8, 0x3e, 0x96, 0x47, 0x57, 0x43,
    +	0x9d, 0x9b, 0xdc, 0xdf, 0x2b, 0x8d, 0x25, 0x0a, 0x71, 0x92, 0xa0, 0xfd, 0x93, 0x16, 0x8c, 0xcd,
    +	0x36, 0x9b, 0xb3, 0x41, 0xc3, 0x0f, 0xca, 0x81, 0xbf, 0xe1, 0xd6, 0x09, 0x7a, 0x19, 0x7a, 0x22,
    +	0x3a, 0x6b, 0x7c, 0x86, 0x1f, 0x13, 0x43, 0xdb, 0x43, 0xe7, 0xea, 0x60, 0xaf, 0x34, 0x99, 0x40,
    +	0x67, 0x53, 0xc9, 0x2a, 0xa0, 0x37, 0x60, 0xbc, 0xee, 0x57, 0x9d, 0xfa, 0x96, 0x1f, 0x46, 0x02,
    +	0x2a, 0xa6, 0xfe, 0xd8, 0xfe, 0x5e, 0x69, 0xfc, 0x7a, 0x02, 0x86, 0x53, 0xd8, 0xf6, 0x3d, 0x18,
    +	0x9d, 0x8d, 0x22, 0xa7, 0xba, 0x45, 0x6a, 0x7c, 0x41, 0xa1, 0x17, 0xa1, 0xc7, 0x73, 0x1a, 0xb2,
    +	0x33, 0xe7, 0x64, 0x67, 0x56, 0x9d, 0x06, 0xed, 0xcc, 0xf8, 0xba, 0xe7, 0xbe, 0xdb, 0x12, 0x8b,
    +	0x94, 0x96, 0x61, 0x86, 0x8d, 0x9e, 0x07, 0xa8, 0x91, 0x1d, 0xb7, 0x4a, 0xca, 0x4e, 0xb4, 0x25,
    +	0xfa, 0x80, 0x44, 0x5d, 0x58, 0x50, 0x10, 0xac, 0x61, 0xd9, 0x77, 0x61, 0x70, 0x76, 0xc7, 0x77,
    +	0x6b, 0x65, 0xbf, 0x16, 0xa2, 0x6d, 0x18, 0x6b, 0x06, 0x64, 0x83, 0x04, 0xaa, 0x68, 0xca, 0x3a,
    +	0x57, 0xbc, 0x30, 0xf4, 0xfc, 0x85, 0xcc, 0xb1, 0x37, 0x51, 0x17, 0xbd, 0x28, 0xd8, 0x9d, 0x3b,
    +	0x29, 0xda, 0x1b, 0x4b, 0x40, 0x71, 0x92, 0xb2, 0xfd, 0x27, 0x05, 0x38, 0x3e, 0x7b, 0xaf, 0x15,
    +	0x90, 0x05, 0x37, 0xdc, 0x4e, 0x6e, 0xb8, 0x9a, 0x1b, 0x6e, 0xaf, 0xc6, 0x23, 0xa0, 0x56, 0xfa,
    +	0x82, 0x28, 0xc7, 0x0a, 0x03, 0x3d, 0x07, 0xfd, 0xf4, 0xf7, 0x3a, 0x5e, 0x16, 0x9f, 0x3c, 0x29,
    +	0x90, 0x87, 0x16, 0x9c, 0xc8, 0x59, 0xe0, 0x20, 0x2c, 0x71, 0xd0, 0x0a, 0x0c, 0x55, 0xd9, 0xf9,
    +	0xb0, 0xb9, 0xe2, 0xd7, 0x08, 0x5b, 0x5b, 0x83, 0x73, 0xcf, 0x50, 0xf4, 0xf9, 0xb8, 0xf8, 0x60,
    +	0xaf, 0x34, 0xc5, 0xfb, 0x26, 0x48, 0x68, 0x30, 0xac, 0xd7, 0x47, 0xb6, 0xda, 0xee, 0x3d, 0x8c,
    +	0x12, 0x64, 0x6c, 0xf5, 0x0b, 0xda, 0xce, 0xed, 0x65, 0x3b, 0x77, 0x38, 0x7b, 0xd7, 0xa2, 0x4b,
    +	0xd0, 0xb3, 0xed, 0x7a, 0xb5, 0xa9, 0x3e, 0x46, 0xeb, 0x0c, 0x9d, 0xf3, 0x6b, 0xae, 0x57, 0x3b,
    +	0xd8, 0x2b, 0x4d, 0x18, 0xdd, 0xa1, 0x85, 0x98, 0xa1, 0xda, 0xff, 0xc6, 0x82, 0x12, 0x83, 0x2d,
    +	0xb9, 0x75, 0x52, 0x26, 0x41, 0xe8, 0x86, 0x11, 0xf1, 0x22, 0x63, 0x40, 0x9f, 0x07, 0x08, 0x49,
    +	0x35, 0x20, 0x91, 0x36, 0xa4, 0x6a, 0x61, 0x54, 0x14, 0x04, 0x6b, 0x58, 0xf4, 0x7c, 0x0a, 0xb7,
    +	0x9c, 0x80, 0xad, 0x2f, 0x31, 0xb0, 0xea, 0x7c, 0xaa, 0x48, 0x00, 0x8e, 0x71, 0x8c, 0xf3, 0xa9,
    +	0xd8, 0xe9, 0x7c, 0x42, 0x1f, 0x83, 0xb1, 0xb8, 0xb1, 0xb0, 0xe9, 0x54, 0xe5, 0x00, 0xb2, 0x1d,
    +	0x5c, 0x31, 0x41, 0x38, 0x89, 0x6b, 0xff, 0xb7, 0x96, 0x58, 0x3c, 0xf4, 0xab, 0xdf, 0xe7, 0xdf,
    +	0x6a, 0xff, 0xae, 0x05, 0xfd, 0x73, 0xae, 0x57, 0x73, 0xbd, 0x4d, 0xf4, 0x19, 0x18, 0xa0, 0x57,
    +	0x65, 0xcd, 0x89, 0x1c, 0x71, 0x0c, 0x7f, 0x58, 0xdb, 0x5b, 0xea, 0xe6, 0x9a, 0x69, 0x6e, 0x6f,
    +	0xd2, 0x82, 0x70, 0x86, 0x62, 0xd3, 0xdd, 0x76, 0xe3, 0xf6, 0x67, 0x49, 0x35, 0x5a, 0x21, 0x91,
    +	0x13, 0x7f, 0x4e, 0x5c, 0x86, 0x15, 0x55, 0x74, 0x0d, 0xfa, 0x22, 0x27, 0xd8, 0x24, 0x91, 0x38,
    +	0x8f, 0x33, 0xcf, 0x4d, 0x5e, 0x13, 0xd3, 0x1d, 0x49, 0xbc, 0x2a, 0x89, 0x6f, 0xa9, 0x35, 0x56,
    +	0x15, 0x0b, 0x12, 0xf6, 0x7f, 0xe8, 0x87, 0x53, 0xf3, 0x95, 0xe5, 0x9c, 0x75, 0x75, 0x1e, 0xfa,
    +	0x6a, 0x81, 0xbb, 0x43, 0x02, 0x31, 0xce, 0x8a, 0xca, 0x02, 0x2b, 0xc5, 0x02, 0x8a, 0x2e, 0xc3,
    +	0x30, 0xbf, 0x1f, 0xaf, 0x3a, 0x5e, 0x2d, 0x3e, 0x1e, 0x05, 0xf6, 0xf0, 0x4d, 0x0d, 0x86, 0x0d,
    +	0xcc, 0x43, 0x2e, 0xaa, 0xf3, 0x89, 0xcd, 0x98, 0x77, 0xf7, 0x7e, 0xd1, 0x82, 0x71, 0xde, 0xcc,
    +	0x6c, 0x14, 0x05, 0xee, 0xed, 0x56, 0x44, 0xc2, 0xa9, 0x5e, 0x76, 0xd2, 0xcd, 0x67, 0x8d, 0x56,
    +	0xee, 0x08, 0xcc, 0xdc, 0x4c, 0x50, 0xe1, 0x87, 0xe0, 0x94, 0x68, 0x77, 0x3c, 0x09, 0xc6, 0xa9,
    +	0x66, 0xd1, 0x8f, 0x58, 0x30, 0x5d, 0xf5, 0xbd, 0x28, 0xf0, 0xeb, 0x75, 0x12, 0x94, 0x5b, 0xb7,
    +	0xeb, 0x6e, 0xb8, 0xc5, 0xd7, 0x29, 0x26, 0x1b, 0xec, 0x24, 0xc8, 0x99, 0x43, 0x85, 0x24, 0xe6,
    +	0xf0, 0xec, 0xfe, 0x5e, 0x69, 0x7a, 0x3e, 0x97, 0x14, 0x6e, 0xd3, 0x0c, 0xda, 0x06, 0x44, 0x6f,
    +	0xf6, 0x4a, 0xe4, 0x6c, 0x92, 0xb8, 0xf1, 0xfe, 0xee, 0x1b, 0x3f, 0xb1, 0xbf, 0x57, 0x42, 0xab,
    +	0x29, 0x12, 0x38, 0x83, 0x2c, 0x7a, 0x17, 0x8e, 0xd1, 0xd2, 0xd4, 0xb7, 0x0e, 0x74, 0xdf, 0xdc,
    +	0xd4, 0xfe, 0x5e, 0xe9, 0xd8, 0x6a, 0x06, 0x11, 0x9c, 0x49, 0x1a, 0xfd, 0x90, 0x05, 0xa7, 0xe2,
    +	0xcf, 0x5f, 0xbc, 0xdb, 0x74, 0xbc, 0x5a, 0xdc, 0xf0, 0x60, 0xf7, 0x0d, 0xd3, 0x33, 0xf9, 0xd4,
    +	0x7c, 0x1e, 0x25, 0x9c, 0xdf, 0x08, 0xf2, 0x60, 0x92, 0x76, 0x2d, 0xd9, 0x36, 0x74, 0xdf, 0xf6,
    +	0xc9, 0xfd, 0xbd, 0xd2, 0xe4, 0x6a, 0x9a, 0x06, 0xce, 0x22, 0x3c, 0x3d, 0x0f, 0xc7, 0x33, 0x57,
    +	0x27, 0x1a, 0x87, 0xe2, 0x36, 0xe1, 0x4c, 0xe0, 0x20, 0xa6, 0x3f, 0xd1, 0x31, 0xe8, 0xdd, 0x71,
    +	0xea, 0x2d, 0xb1, 0x31, 0x31, 0xff, 0xf3, 0x4a, 0xe1, 0xb2, 0x65, 0xff, 0x6f, 0x45, 0x18, 0x9b,
    +	0xaf, 0x2c, 0xdf, 0xd7, 0xae, 0xd7, 0xaf, 0xbd, 0x42, 0xdb, 0x6b, 0x2f, 0xbe, 0x44, 0x8b, 0xb9,
    +	0x97, 0xe8, 0x0f, 0x66, 0x6c, 0xd9, 0x1e, 0xb6, 0x65, 0x3f, 0x9a, 0xb3, 0x65, 0x1f, 0xf0, 0x46,
    +	0xdd, 0xc9, 0x59, 0xb5, 0xbd, 0x6c, 0x02, 0x33, 0x39, 0x24, 0xc6, 0xfb, 0x25, 0x8f, 0xda, 0x43,
    +	0x2e, 0xdd, 0x07, 0x33, 0x8f, 0x55, 0x18, 0x9e, 0x77, 0x9a, 0xce, 0x6d, 0xb7, 0xee, 0x46, 0x2e,
    +	0x09, 0xd1, 0x93, 0x50, 0x74, 0x6a, 0x35, 0xc6, 0xdd, 0x0d, 0xce, 0x1d, 0xdf, 0xdf, 0x2b, 0x15,
    +	0x67, 0x6b, 0x94, 0xcd, 0x00, 0x85, 0xb5, 0x8b, 0x29, 0x06, 0x7a, 0x1a, 0x7a, 0x6a, 0x81, 0xdf,
    +	0x9c, 0x2a, 0x30, 0x4c, 0xba, 0xcb, 0x7b, 0x16, 0x02, 0xbf, 0x99, 0x40, 0x65, 0x38, 0xf6, 0x1f,
    +	0x17, 0xe0, 0xf4, 0x3c, 0x69, 0x6e, 0x2d, 0x55, 0x72, 0xee, 0x8b, 0x0b, 0x30, 0xd0, 0xf0, 0x3d,
    +	0x37, 0xf2, 0x83, 0x50, 0x34, 0xcd, 0x56, 0xc4, 0x8a, 0x28, 0xc3, 0x0a, 0x8a, 0xce, 0x41, 0x4f,
    +	0x33, 0x66, 0x62, 0x87, 0x25, 0x03, 0xcc, 0xd8, 0x57, 0x06, 0xa1, 0x18, 0xad, 0x90, 0x04, 0x62,
    +	0xc5, 0x28, 0x8c, 0xf5, 0x90, 0x04, 0x98, 0x41, 0x62, 0x4e, 0x80, 0xf2, 0x08, 0xe2, 0x46, 0x48,
    +	0x70, 0x02, 0x14, 0x82, 0x35, 0x2c, 0x54, 0x86, 0xc1, 0x30, 0x31, 0xb3, 0x5d, 0x6d, 0xcd, 0x11,
    +	0xc6, 0x2a, 0xa8, 0x99, 0x8c, 0x89, 0x18, 0x37, 0x58, 0x5f, 0x47, 0x56, 0xe1, 0x1b, 0x05, 0x40,
    +	0x7c, 0x08, 0xbf, 0xcb, 0x06, 0x6e, 0x3d, 0x3d, 0x70, 0xdd, 0x6f, 0x89, 0x07, 0x35, 0x7a, 0xff,
    +	0xd6, 0x82, 0xd3, 0xf3, 0xae, 0x57, 0x23, 0x41, 0xce, 0x02, 0x7c, 0x38, 0x4f, 0xf9, 0xc3, 0x31,
    +	0x29, 0xc6, 0x12, 0xeb, 0x79, 0x00, 0x4b, 0xcc, 0xfe, 0x47, 0x0b, 0x10, 0xff, 0xec, 0xf7, 0xdd,
    +	0xc7, 0xae, 0xa7, 0x3f, 0xf6, 0x01, 0x2c, 0x0b, 0xfb, 0x3a, 0x8c, 0xce, 0xd7, 0x5d, 0xe2, 0x45,
    +	0xcb, 0xe5, 0x79, 0xdf, 0xdb, 0x70, 0x37, 0xd1, 0x2b, 0x30, 0x1a, 0xb9, 0x0d, 0xe2, 0xb7, 0xa2,
    +	0x0a, 0xa9, 0xfa, 0x1e, 0x7b, 0xb9, 0x5a, 0x17, 0x7a, 0xe7, 0xd0, 0xfe, 0x5e, 0x69, 0x74, 0xcd,
    +	0x80, 0xe0, 0x04, 0xa6, 0xfd, 0xcb, 0xf4, 0xdc, 0xaa, 0xb7, 0xc2, 0x88, 0x04, 0x6b, 0x41, 0x2b,
    +	0x8c, 0xe6, 0x5a, 0x94, 0xf7, 0x2c, 0x07, 0x3e, 0xed, 0x8e, 0xeb, 0x7b, 0xe8, 0xb4, 0xf1, 0x1c,
    +	0x1f, 0x90, 0x4f, 0x71, 0xf1, 0xec, 0x9e, 0x01, 0x08, 0xdd, 0x4d, 0x8f, 0x04, 0xda, 0xf3, 0x61,
    +	0x94, 0x6d, 0x15, 0x55, 0x8a, 0x35, 0x0c, 0x54, 0x87, 0x91, 0xba, 0x73, 0x9b, 0xd4, 0x2b, 0xa4,
    +	0x4e, 0xaa, 0x91, 0x1f, 0x08, 0xf9, 0xc6, 0x0b, 0xdd, 0xbd, 0x03, 0xae, 0xeb, 0x55, 0xe7, 0x26,
    +	0xf6, 0xf7, 0x4a, 0x23, 0x46, 0x11, 0x36, 0x89, 0xd3, 0xa3, 0xc3, 0x6f, 0xd2, 0xaf, 0x70, 0xea,
    +	0xfa, 0xe3, 0xf3, 0x86, 0x28, 0xc3, 0x0a, 0xaa, 0x8e, 0x8e, 0x9e, 0xbc, 0xa3, 0xc3, 0xfe, 0x6b,
    +	0xba, 0xd0, 0xfc, 0x46, 0xd3, 0xf7, 0x88, 0x17, 0xcd, 0xfb, 0x5e, 0x8d, 0x4b, 0xa6, 0x5e, 0x31,
    +	0x44, 0x27, 0xe7, 0x13, 0xa2, 0x93, 0x13, 0xe9, 0x1a, 0x9a, 0xf4, 0xe4, 0xa3, 0xd0, 0x17, 0x46,
    +	0x4e, 0xd4, 0x0a, 0xc5, 0xc0, 0x3d, 0x2a, 0x97, 0x5d, 0x85, 0x95, 0x1e, 0xec, 0x95, 0xc6, 0x54,
    +	0x35, 0x5e, 0x84, 0x45, 0x05, 0xf4, 0x14, 0xf4, 0x37, 0x48, 0x18, 0x3a, 0x9b, 0x92, 0x6d, 0x18,
    +	0x13, 0x75, 0xfb, 0x57, 0x78, 0x31, 0x96, 0x70, 0xf4, 0x18, 0xf4, 0x92, 0x20, 0xf0, 0x03, 0xf1,
    +	0x6d, 0x23, 0x02, 0xb1, 0x77, 0x91, 0x16, 0x62, 0x0e, 0xb3, 0xff, 0x0f, 0x0b, 0xc6, 0x54, 0x5f,
    +	0x79, 0x5b, 0x47, 0xf0, 0x5c, 0x7b, 0x1b, 0xa0, 0x2a, 0x3f, 0x30, 0x64, 0xd7, 0xec, 0xd0, 0xf3,
    +	0xe7, 0x33, 0x39, 0x9a, 0xd4, 0x30, 0xc6, 0x94, 0x55, 0x51, 0x88, 0x35, 0x6a, 0xf6, 0x1f, 0x58,
    +	0x30, 0x99, 0xf8, 0xa2, 0xeb, 0x6e, 0x18, 0xa1, 0x77, 0x52, 0x5f, 0x35, 0xd3, 0xe5, 0xe2, 0x73,
    +	0x43, 0xfe, 0x4d, 0x6a, 0xcf, 0xcb, 0x12, 0xed, 0x8b, 0xae, 0x42, 0xaf, 0x1b, 0x91, 0x86, 0xfc,
    +	0x98, 0xc7, 0xda, 0x7e, 0x0c, 0xef, 0x55, 0x3c, 0x23, 0xcb, 0xb4, 0x26, 0xe6, 0x04, 0xec, 0x3f,
    +	0x2e, 0xc2, 0x20, 0xdf, 0xdf, 0x2b, 0x4e, 0xf3, 0x08, 0xe6, 0xe2, 0x19, 0x18, 0x74, 0x1b, 0x8d,
    +	0x56, 0xe4, 0xdc, 0x16, 0xf7, 0xde, 0x00, 0x3f, 0x83, 0x96, 0x65, 0x21, 0x8e, 0xe1, 0x68, 0x19,
    +	0x7a, 0x58, 0x57, 0xf8, 0x57, 0x3e, 0x99, 0xfd, 0x95, 0xa2, 0xef, 0x33, 0x0b, 0x4e, 0xe4, 0x70,
    +	0x96, 0x53, 0xed, 0x2b, 0x5a, 0x84, 0x19, 0x09, 0xe4, 0x00, 0xdc, 0x76, 0x3d, 0x27, 0xd8, 0xa5,
    +	0x65, 0x53, 0x45, 0x46, 0xf0, 0xb9, 0xf6, 0x04, 0xe7, 0x14, 0x3e, 0x27, 0xab, 0x3e, 0x2c, 0x06,
    +	0x60, 0x8d, 0xe8, 0xf4, 0xcb, 0x30, 0xa8, 0x90, 0x0f, 0xc3, 0x39, 0x4e, 0x7f, 0x0c, 0xc6, 0x12,
    +	0x6d, 0x75, 0xaa, 0x3e, 0xac, 0x33, 0x9e, 0xbf, 0xc7, 0x8e, 0x0c, 0xd1, 0xeb, 0x45, 0x6f, 0x47,
    +	0xdc, 0x4d, 0xf7, 0xe0, 0x58, 0x3d, 0xe3, 0xc8, 0x17, 0xf3, 0xda, 0xfd, 0x15, 0x71, 0x5a, 0x7c,
    +	0xf6, 0xb1, 0x2c, 0x28, 0xce, 0x6c, 0xc3, 0x38, 0x11, 0x0b, 0xed, 0x4e, 0x44, 0x7a, 0xde, 0x1d,
    +	0x53, 0x9d, 0xbf, 0x46, 0x76, 0xd5, 0xa1, 0xfa, 0x9d, 0xec, 0xfe, 0x19, 0x3e, 0xfa, 0xfc, 0xb8,
    +	0x1c, 0x12, 0x04, 0x8a, 0xd7, 0xc8, 0x2e, 0x9f, 0x0a, 0xfd, 0xeb, 0x8a, 0x6d, 0xbf, 0xee, 0x6b,
    +	0x16, 0x8c, 0xa8, 0xaf, 0x3b, 0x82, 0x73, 0x61, 0xce, 0x3c, 0x17, 0xce, 0xb4, 0x5d, 0xe0, 0x39,
    +	0x27, 0xc2, 0x37, 0x0a, 0x70, 0x4a, 0xe1, 0xd0, 0x47, 0x14, 0xff, 0x23, 0x56, 0xd5, 0x45, 0x18,
    +	0xf4, 0x94, 0x38, 0xd1, 0x32, 0xe5, 0x78, 0xb1, 0x30, 0x31, 0xc6, 0xa1, 0x57, 0x9e, 0x17, 0x5f,
    +	0xda, 0xc3, 0xba, 0x9c, 0x5d, 0x5c, 0xee, 0x73, 0x50, 0x6c, 0xb9, 0x35, 0x71, 0xc1, 0x7c, 0x58,
    +	0x8e, 0xf6, 0xfa, 0xf2, 0xc2, 0xc1, 0x5e, 0xe9, 0xd1, 0x3c, 0x95, 0x13, 0xbd, 0xd9, 0xc2, 0x99,
    +	0xf5, 0xe5, 0x05, 0x4c, 0x2b, 0xa3, 0x59, 0x18, 0x93, 0x5a, 0xb5, 0x9b, 0x94, 0x2f, 0xf5, 0x3d,
    +	0x71, 0x0f, 0x29, 0x61, 0x39, 0x36, 0xc1, 0x38, 0x89, 0x8f, 0x16, 0x60, 0x7c, 0xbb, 0x75, 0x9b,
    +	0xd4, 0x49, 0xc4, 0x3f, 0xf8, 0x1a, 0xe1, 0xa2, 0xe4, 0xc1, 0xf8, 0x09, 0x7b, 0x2d, 0x01, 0xc7,
    +	0xa9, 0x1a, 0xf6, 0xbf, 0xb2, 0xfb, 0x40, 0x8c, 0x9e, 0xc6, 0xdf, 0x7c, 0x27, 0x97, 0x73, 0x37,
    +	0xab, 0xe2, 0x1a, 0xd9, 0x5d, 0xf3, 0x29, 0x1f, 0x92, 0xbd, 0x2a, 0x8c, 0x35, 0xdf, 0xd3, 0x76,
    +	0xcd, 0xff, 0x56, 0x01, 0x8e, 0xab, 0x11, 0x30, 0xb8, 0xe5, 0xef, 0xf6, 0x31, 0xb8, 0x04, 0x43,
    +	0x35, 0xb2, 0xe1, 0xb4, 0xea, 0x91, 0xd2, 0x6b, 0xf4, 0x72, 0x55, 0xdb, 0x42, 0x5c, 0x8c, 0x75,
    +	0x9c, 0x43, 0x0c, 0xdb, 0xaf, 0x8f, 0xb0, 0x8b, 0x38, 0x72, 0xe8, 0x1a, 0x57, 0xbb, 0xc6, 0xca,
    +	0xdd, 0x35, 0x8f, 0x41, 0xaf, 0xdb, 0xa0, 0x8c, 0x59, 0xc1, 0xe4, 0xb7, 0x96, 0x69, 0x21, 0xe6,
    +	0x30, 0xf4, 0x04, 0xf4, 0x57, 0xfd, 0x46, 0xc3, 0xf1, 0x6a, 0xec, 0xca, 0x1b, 0x9c, 0x1b, 0xa2,
    +	0xbc, 0xdb, 0x3c, 0x2f, 0xc2, 0x12, 0x46, 0x99, 0x6f, 0x27, 0xd8, 0xe4, 0xc2, 0x1e, 0xc1, 0x7c,
    +	0xcf, 0x06, 0x9b, 0x21, 0x66, 0xa5, 0xf4, 0xad, 0x7a, 0xc7, 0x0f, 0xb6, 0x5d, 0x6f, 0x73, 0xc1,
    +	0x0d, 0xc4, 0x96, 0x50, 0x77, 0xe1, 0x2d, 0x05, 0xc1, 0x1a, 0x16, 0x5a, 0x82, 0xde, 0xa6, 0x1f,
    +	0x44, 0xe1, 0x54, 0x1f, 0x1b, 0xee, 0x47, 0x73, 0x0e, 0x22, 0xfe, 0xb5, 0x65, 0x3f, 0x88, 0xe2,
    +	0x0f, 0xa0, 0xff, 0x42, 0xcc, 0xab, 0xa3, 0xeb, 0xd0, 0x4f, 0xbc, 0x9d, 0xa5, 0xc0, 0x6f, 0x4c,
    +	0x4d, 0xe6, 0x53, 0x5a, 0xe4, 0x28, 0x7c, 0x99, 0xc5, 0x3c, 0xaa, 0x28, 0xc6, 0x92, 0x04, 0xfa,
    +	0x28, 0x14, 0x89, 0xb7, 0x33, 0xd5, 0xcf, 0x28, 0x4d, 0xe7, 0x50, 0xba, 0xe9, 0x04, 0xf1, 0x99,
    +	0xbf, 0xe8, 0xed, 0x60, 0x5a, 0x07, 0x7d, 0x02, 0x06, 0xe5, 0x81, 0x11, 0x0a, 0x29, 0x6a, 0xe6,
    +	0x82, 0x95, 0xc7, 0x0c, 0x26, 0xef, 0xb6, 0xdc, 0x80, 0x34, 0x88, 0x17, 0x85, 0xf1, 0x09, 0x29,
    +	0xa1, 0x21, 0x8e, 0xa9, 0xa1, 0x2a, 0x0c, 0x07, 0x24, 0x74, 0xef, 0x91, 0xb2, 0x5f, 0x77, 0xab,
    +	0xbb, 0x53, 0x27, 0x59, 0xf7, 0x9e, 0x6a, 0x3b, 0x64, 0x58, 0xab, 0x10, 0x4b, 0xf9, 0xf5, 0x52,
    +	0x6c, 0x10, 0x45, 0x6f, 0xc1, 0x48, 0x40, 0xc2, 0xc8, 0x09, 0x22, 0xd1, 0xca, 0x94, 0xd2, 0xca,
    +	0x8d, 0x60, 0x1d, 0xc0, 0x9f, 0x13, 0x71, 0x33, 0x31, 0x04, 0x9b, 0x14, 0xd0, 0x27, 0xa4, 0xca,
    +	0x61, 0xc5, 0x6f, 0x79, 0x51, 0x38, 0x35, 0xc8, 0xfa, 0x9d, 0xa9, 0x9b, 0xbe, 0x19, 0xe3, 0x25,
    +	0x75, 0x12, 0xbc, 0x32, 0x36, 0x48, 0xa1, 0x4f, 0xc1, 0x08, 0xff, 0xcf, 0x55, 0xaa, 0xe1, 0xd4,
    +	0x71, 0x46, 0xfb, 0x5c, 0x3e, 0x6d, 0x8e, 0x38, 0x77, 0x5c, 0x10, 0x1f, 0xd1, 0x4b, 0x43, 0x6c,
    +	0x52, 0x43, 0x18, 0x46, 0xea, 0xee, 0x0e, 0xf1, 0x48, 0x18, 0x96, 0x03, 0xff, 0x36, 0x11, 0x12,
    +	0xe2, 0x53, 0xd9, 0x2a, 0x58, 0xff, 0x36, 0x11, 0x8f, 0x40, 0xbd, 0x0e, 0x36, 0x49, 0xa0, 0x75,
    +	0x18, 0xa5, 0x4f, 0x72, 0x37, 0x26, 0x3a, 0xd4, 0x89, 0x28, 0x7b, 0x38, 0x63, 0xa3, 0x12, 0x4e,
    +	0x10, 0x41, 0x37, 0x60, 0x98, 0x8d, 0x79, 0xab, 0xc9, 0x89, 0x9e, 0xe8, 0x44, 0x94, 0x19, 0x14,
    +	0x54, 0xb4, 0x2a, 0xd8, 0x20, 0x80, 0xde, 0x84, 0xc1, 0xba, 0xbb, 0x41, 0xaa, 0xbb, 0xd5, 0x3a,
    +	0x99, 0x1a, 0x66, 0xd4, 0x32, 0x0f, 0xc3, 0xeb, 0x12, 0x89, 0xf3, 0xe7, 0xea, 0x2f, 0x8e, 0xab,
    +	0xa3, 0x9b, 0x70, 0x22, 0x22, 0x41, 0xc3, 0xf5, 0x1c, 0x7a, 0x88, 0x89, 0x27, 0x21, 0xd3, 0x8c,
    +	0x8f, 0xb0, 0xd5, 0x75, 0x56, 0xcc, 0xc6, 0x89, 0xb5, 0x4c, 0x2c, 0x9c, 0x53, 0x1b, 0xdd, 0x85,
    +	0xa9, 0x0c, 0x08, 0x5f, 0xb7, 0xc7, 0x18, 0xe5, 0xd7, 0x04, 0xe5, 0xa9, 0xb5, 0x1c, 0xbc, 0x83,
    +	0x36, 0x30, 0x9c, 0x4b, 0x1d, 0xdd, 0x80, 0x31, 0x76, 0x72, 0x96, 0x5b, 0xf5, 0xba, 0x68, 0x70,
    +	0x94, 0x35, 0xf8, 0x84, 0xe4, 0x23, 0x96, 0x4d, 0xf0, 0xc1, 0x5e, 0x09, 0xe2, 0x7f, 0x38, 0x59,
    +	0x1b, 0xdd, 0x66, 0x4a, 0xd8, 0x56, 0xe0, 0x46, 0xbb, 0x74, 0x57, 0x91, 0xbb, 0xd1, 0xd4, 0x58,
    +	0x5b, 0x81, 0x94, 0x8e, 0xaa, 0x34, 0xb5, 0x7a, 0x21, 0x4e, 0x12, 0xa4, 0x57, 0x41, 0x18, 0xd5,
    +	0x5c, 0x6f, 0x6a, 0x9c, 0xbf, 0xa7, 0xe4, 0x49, 0x5a, 0xa1, 0x85, 0x98, 0xc3, 0x98, 0x02, 0x96,
    +	0xfe, 0xb8, 0x41, 0x6f, 0xdc, 0x09, 0x86, 0x18, 0x2b, 0x60, 0x25, 0x00, 0xc7, 0x38, 0x94, 0x09,
    +	0x8e, 0xa2, 0xdd, 0x29, 0xc4, 0x50, 0xd5, 0x81, 0xb8, 0xb6, 0xf6, 0x09, 0x4c, 0xcb, 0xed, 0xdb,
    +	0x30, 0xaa, 0x8e, 0x09, 0x36, 0x26, 0xa8, 0x04, 0xbd, 0x8c, 0xed, 0x13, 0xe2, 0xd3, 0x41, 0xda,
    +	0x05, 0xc6, 0x12, 0x62, 0x5e, 0xce, 0xba, 0xe0, 0xde, 0x23, 0x73, 0xbb, 0x11, 0xe1, 0xb2, 0x88,
    +	0xa2, 0xd6, 0x05, 0x09, 0xc0, 0x31, 0x8e, 0xfd, 0x1f, 0x39, 0xfb, 0x1c, 0xdf, 0x12, 0x5d, 0xdc,
    +	0x8b, 0xcf, 0xc2, 0x00, 0x33, 0xfc, 0xf0, 0x03, 0xae, 0x9d, 0xed, 0x8d, 0x19, 0xe6, 0xab, 0xa2,
    +	0x1c, 0x2b, 0x0c, 0xf4, 0x2a, 0x8c, 0x54, 0xf5, 0x06, 0xc4, 0xa5, 0xae, 0x8e, 0x11, 0xa3, 0x75,
    +	0x6c, 0xe2, 0xa2, 0xcb, 0x30, 0xc0, 0x6c, 0x9c, 0xaa, 0x7e, 0x5d, 0x70, 0x9b, 0x92, 0x33, 0x19,
    +	0x28, 0x8b, 0xf2, 0x03, 0xed, 0x37, 0x56, 0xd8, 0xe8, 0x3c, 0xf4, 0xd1, 0x2e, 0x2c, 0x97, 0xc5,
    +	0x75, 0xaa, 0x24, 0x81, 0x57, 0x59, 0x29, 0x16, 0x50, 0xfb, 0x0f, 0x2c, 0xc6, 0x4b, 0xa5, 0xcf,
    +	0x7c, 0x74, 0x95, 0x5d, 0x1a, 0xec, 0x06, 0xd1, 0xb4, 0xf0, 0x8f, 0x6b, 0x37, 0x81, 0x82, 0x1d,
    +	0x24, 0xfe, 0x63, 0xa3, 0x26, 0x7a, 0x3b, 0x79, 0x33, 0x70, 0x86, 0xe2, 0x45, 0x39, 0x04, 0xc9,
    +	0xdb, 0xe1, 0x91, 0xf8, 0x8a, 0xa3, 0xfd, 0x69, 0x77, 0x45, 0xd8, 0x3f, 0x55, 0xd0, 0x56, 0x49,
    +	0x25, 0x72, 0x22, 0x82, 0xca, 0xd0, 0x7f, 0xc7, 0x71, 0x23, 0xd7, 0xdb, 0x14, 0x7c, 0x5f, 0xfb,
    +	0x8b, 0x8e, 0x55, 0xba, 0xc5, 0x2b, 0x70, 0xee, 0x45, 0xfc, 0xc1, 0x92, 0x0c, 0xa5, 0x18, 0xb4,
    +	0x3c, 0x8f, 0x52, 0x2c, 0x74, 0x4b, 0x11, 0xf3, 0x0a, 0x9c, 0xa2, 0xf8, 0x83, 0x25, 0x19, 0xf4,
    +	0x0e, 0x80, 0x3c, 0x21, 0x48, 0x4d, 0xc8, 0x0e, 0x9f, 0xed, 0x4c, 0x74, 0x4d, 0xd5, 0xe1, 0xc2,
    +	0xc9, 0xf8, 0x3f, 0xd6, 0xe8, 0xd9, 0x91, 0x36, 0xa7, 0x7a, 0x67, 0xd0, 0x27, 0xe9, 0x16, 0x75,
    +	0x82, 0x88, 0xd4, 0x66, 0x23, 0x31, 0x38, 0x4f, 0x77, 0xf7, 0x38, 0x5c, 0x73, 0x1b, 0x44, 0xdf,
    +	0xce, 0x82, 0x08, 0x8e, 0xe9, 0xd9, 0xbf, 0x53, 0x84, 0xa9, 0xbc, 0xee, 0xd2, 0x4d, 0x43, 0xee,
    +	0xba, 0xd1, 0x3c, 0x65, 0x6b, 0x2d, 0x73, 0xd3, 0x2c, 0x8a, 0x72, 0xac, 0x30, 0xe8, 0xea, 0x0d,
    +	0xdd, 0x4d, 0xf9, 0xb6, 0xef, 0x8d, 0x57, 0x6f, 0x85, 0x95, 0x62, 0x01, 0xa5, 0x78, 0x01, 0x71,
    +	0x42, 0x61, 0x7c, 0xa7, 0xad, 0x72, 0xcc, 0x4a, 0xb1, 0x80, 0xea, 0x52, 0xc6, 0x9e, 0x0e, 0x52,
    +	0x46, 0x63, 0x88, 0x7a, 0x1f, 0xec, 0x10, 0xa1, 0x4f, 0x03, 0x6c, 0xb8, 0x9e, 0x1b, 0x6e, 0x31,
    +	0xea, 0x7d, 0x87, 0xa6, 0xae, 0x98, 0xe2, 0x25, 0x45, 0x05, 0x6b, 0x14, 0xd1, 0x4b, 0x30, 0xa4,
    +	0x0e, 0x90, 0xe5, 0x05, 0xa6, 0xfa, 0xd7, 0x4c, 0xa9, 0xe2, 0xd3, 0x74, 0x01, 0xeb, 0x78, 0xf6,
    +	0x67, 0x93, 0xeb, 0x45, 0xec, 0x00, 0x6d, 0x7c, 0xad, 0x6e, 0xc7, 0xb7, 0xd0, 0x7e, 0x7c, 0xed,
    +	0x9f, 0x19, 0x84, 0x31, 0xa3, 0xb1, 0x56, 0xd8, 0xc5, 0x99, 0x7b, 0x85, 0x5e, 0x40, 0x4e, 0x44,
    +	0xc4, 0xfe, 0xb3, 0x3b, 0x6f, 0x15, 0xfd, 0x92, 0xa2, 0x3b, 0x80, 0xd7, 0x47, 0x9f, 0x86, 0xc1,
    +	0xba, 0x13, 0x32, 0x89, 0x25, 0x11, 0xfb, 0xae, 0x1b, 0x62, 0xf1, 0x83, 0xd0, 0x09, 0x23, 0xed,
    +	0xd6, 0xe7, 0xb4, 0x63, 0x92, 0xf4, 0xa6, 0xa4, 0xfc, 0x95, 0xb4, 0xee, 0x54, 0x9d, 0xa0, 0x4c,
    +	0xd8, 0x2e, 0xe6, 0x30, 0x74, 0x99, 0x1d, 0xad, 0x74, 0x55, 0xcc, 0x53, 0x6e, 0x94, 0x2d, 0xb3,
    +	0x5e, 0x83, 0xc9, 0x56, 0x30, 0x6c, 0x60, 0xc6, 0x6f, 0xb2, 0xbe, 0x36, 0x6f, 0xb2, 0xa7, 0xa0,
    +	0x9f, 0xfd, 0x50, 0x2b, 0x40, 0xcd, 0xc6, 0x32, 0x2f, 0xc6, 0x12, 0x9e, 0x5c, 0x30, 0x03, 0xdd,
    +	0x2d, 0x18, 0xfa, 0xea, 0x13, 0x8b, 0x9a, 0x99, 0x5d, 0x0c, 0xf0, 0x53, 0x4e, 0x2c, 0x79, 0x2c,
    +	0x61, 0xe8, 0x57, 0x2c, 0x40, 0x4e, 0x9d, 0xbe, 0x96, 0x69, 0xb1, 0x7a, 0xdc, 0x00, 0x63, 0xb5,
    +	0x5f, 0xed, 0x38, 0xec, 0xad, 0x70, 0x66, 0x36, 0x55, 0x9b, 0x4b, 0x4a, 0x5f, 0x11, 0x5d, 0x44,
    +	0x69, 0x04, 0xfd, 0x32, 0xba, 0xee, 0x86, 0xd1, 0xe7, 0xff, 0x26, 0x71, 0x39, 0x65, 0x74, 0x09,
    +	0xad, 0xeb, 0x8f, 0xaf, 0xa1, 0x43, 0x3e, 0xbe, 0x46, 0x72, 0x1f, 0x5e, 0xdf, 0x9f, 0x78, 0xc0,
    +	0x0c, 0xb3, 0x2f, 0x7f, 0xa2, 0xc3, 0x03, 0x46, 0x88, 0xd3, 0xbb, 0x79, 0xc6, 0x94, 0x85, 0x1e,
    +	0x78, 0x84, 0x75, 0xb9, 0xfd, 0x23, 0x78, 0x3d, 0x24, 0xc1, 0xdc, 0x29, 0xa9, 0x26, 0x3e, 0xd0,
    +	0x79, 0x0f, 0x4d, 0x6f, 0xfc, 0x43, 0x16, 0x4c, 0xa5, 0x07, 0x88, 0x77, 0x69, 0x6a, 0x94, 0xf5,
    +	0xdf, 0x6e, 0x37, 0x32, 0xa2, 0xf3, 0xd2, 0xdc, 0x75, 0x6a, 0x36, 0x87, 0x16, 0xce, 0x6d, 0x65,
    +	0xba, 0x05, 0x27, 0x73, 0xe6, 0x3d, 0x43, 0x6a, 0xbd, 0xa0, 0x4b, 0xad, 0x3b, 0xc8, 0x3a, 0x67,
    +	0xe4, 0xcc, 0xcc, 0xbc, 0xd5, 0x72, 0xbc, 0xc8, 0x8d, 0x76, 0x75, 0x29, 0xb7, 0x07, 0xe6, 0x80,
    +	0xa0, 0x4f, 0x41, 0x6f, 0xdd, 0xf5, 0x5a, 0x77, 0xc5, 0x4d, 0x79, 0x3e, 0xfb, 0x11, 0xe3, 0xb5,
    +	0xee, 0x9a, 0x43, 0x5c, 0xa2, 0x1b, 0x92, 0x95, 0x1f, 0xec, 0x95, 0x50, 0x1a, 0x01, 0x73, 0xaa,
    +	0xf6, 0xd3, 0x30, 0xba, 0xe0, 0x90, 0x86, 0xef, 0x2d, 0x7a, 0xb5, 0xa6, 0xef, 0x7a, 0x11, 0x9a,
    +	0x82, 0x1e, 0xc6, 0x22, 0xf2, 0x0b, 0xb2, 0x87, 0x0e, 0x21, 0x66, 0x25, 0xf6, 0x26, 0x1c, 0x5f,
    +	0xf0, 0xef, 0x78, 0x77, 0x9c, 0xa0, 0x36, 0x5b, 0x5e, 0xd6, 0xa4, 0x7e, 0xab, 0x52, 0xea, 0x64,
    +	0xe5, 0xbf, 0xe9, 0xb5, 0x9a, 0x7c, 0x29, 0x2d, 0xb9, 0x75, 0x92, 0x23, 0x9b, 0xfd, 0x99, 0x82,
    +	0xd1, 0x52, 0x8c, 0xaf, 0x34, 0x8b, 0x56, 0xae, 0x51, 0xc2, 0x5b, 0x30, 0xb0, 0xe1, 0x92, 0x7a,
    +	0x0d, 0x93, 0x0d, 0x31, 0x1b, 0x4f, 0xe6, 0x9b, 0x2d, 0x2e, 0x51, 0x4c, 0xa5, 0x02, 0x65, 0x32,
    +	0xab, 0x25, 0x51, 0x19, 0x2b, 0x32, 0x68, 0x1b, 0xc6, 0xe5, 0x9c, 0x49, 0xa8, 0x38, 0xb5, 0x9f,
    +	0x6a, 0xb7, 0x08, 0x4d, 0xe2, 0xcc, 0x84, 0x1b, 0x27, 0xc8, 0xe0, 0x14, 0x61, 0x74, 0x1a, 0x7a,
    +	0x1a, 0x94, 0x3f, 0xe9, 0x61, 0xc3, 0xcf, 0x84, 0x54, 0x4c, 0xde, 0xc6, 0x4a, 0xed, 0x9f, 0xb3,
    +	0xe0, 0x64, 0x6a, 0x64, 0x84, 0xdc, 0xf1, 0x01, 0xcf, 0x42, 0x52, 0x0e, 0x58, 0xe8, 0x2c, 0x07,
    +	0xb4, 0xff, 0x3b, 0x0b, 0x8e, 0x2d, 0x36, 0x9a, 0xd1, 0xee, 0x82, 0x6b, 0x5a, 0x10, 0xbc, 0x0c,
    +	0x7d, 0x0d, 0x52, 0x73, 0x5b, 0x0d, 0x31, 0x73, 0x25, 0x79, 0x87, 0xaf, 0xb0, 0x52, 0x7a, 0x0e,
    +	0x54, 0x22, 0x3f, 0x70, 0x36, 0x09, 0x2f, 0xc0, 0x02, 0x9d, 0x71, 0x42, 0xee, 0x3d, 0x72, 0xdd,
    +	0x6d, 0xb8, 0xd1, 0xfd, 0xed, 0x2e, 0xa1, 0xfc, 0x97, 0x44, 0x70, 0x4c, 0xcf, 0xfe, 0x96, 0x05,
    +	0x63, 0x72, 0xdd, 0xcf, 0xd6, 0x6a, 0x01, 0x09, 0x43, 0x34, 0x0d, 0x05, 0xb7, 0x29, 0x7a, 0x09,
    +	0xa2, 0x97, 0x85, 0xe5, 0x32, 0x2e, 0xb8, 0x4d, 0xf9, 0xe8, 0x62, 0x6c, 0x42, 0xd1, 0xb4, 0x83,
    +	0xb8, 0x2a, 0xca, 0xb1, 0xc2, 0x40, 0x17, 0x60, 0xc0, 0xf3, 0x6b, 0xfc, 0xdd, 0x22, 0x34, 0xe1,
    +	0x14, 0x73, 0x55, 0x94, 0x61, 0x05, 0x45, 0x65, 0x18, 0xe4, 0x56, 0xb2, 0xf1, 0xa2, 0xed, 0xca,
    +	0xd6, 0x96, 0x7d, 0xd9, 0x9a, 0xac, 0x89, 0x63, 0x22, 0xf6, 0x1f, 0x59, 0x30, 0x2c, 0xbf, 0xac,
    +	0xcb, 0x17, 0x25, 0xdd, 0x5a, 0xf1, 0x6b, 0x32, 0xde, 0x5a, 0xf4, 0x45, 0xc8, 0x20, 0xc6, 0x43,
    +	0xb0, 0x78, 0xa8, 0x87, 0xe0, 0x25, 0x18, 0x72, 0x9a, 0xcd, 0xb2, 0xf9, 0x8a, 0x64, 0x4b, 0x69,
    +	0x36, 0x2e, 0xc6, 0x3a, 0x8e, 0xfd, 0xb3, 0x05, 0x18, 0x95, 0x5f, 0x50, 0x69, 0xdd, 0x0e, 0x49,
    +	0x84, 0xd6, 0x60, 0xd0, 0xe1, 0xb3, 0x44, 0xe4, 0x22, 0x7f, 0x2c, 0x5b, 0xba, 0x69, 0x4c, 0x69,
    +	0xcc, 0x0e, 0xcf, 0xca, 0xda, 0x38, 0x26, 0x84, 0xea, 0x30, 0xe1, 0xf9, 0x11, 0x63, 0x8d, 0x14,
    +	0xbc, 0x9d, 0xc2, 0x39, 0x49, 0xfd, 0x94, 0xa0, 0x3e, 0xb1, 0x9a, 0xa4, 0x82, 0xd3, 0x84, 0xd1,
    +	0xa2, 0x94, 0x18, 0x17, 0xf3, 0x45, 0x7d, 0xfa, 0xc4, 0x65, 0x0b, 0x8c, 0xed, 0xdf, 0xb7, 0x60,
    +	0x50, 0xa2, 0x1d, 0x85, 0x6d, 0xc1, 0x0a, 0xf4, 0x87, 0x6c, 0x12, 0xe4, 0xd0, 0xd8, 0xed, 0x3a,
    +	0xce, 0xe7, 0x2b, 0xe6, 0xf8, 0xf8, 0xff, 0x10, 0x4b, 0x1a, 0x4c, 0x61, 0xa8, 0xba, 0xff, 0x3e,
    +	0x51, 0x18, 0xaa, 0xfe, 0xe4, 0x5c, 0x4a, 0x7f, 0xc7, 0xfa, 0xac, 0x49, 0xe0, 0xe9, 0xc3, 0xa4,
    +	0x19, 0x90, 0x0d, 0xf7, 0x6e, 0xf2, 0x61, 0x52, 0x66, 0xa5, 0x58, 0x40, 0xd1, 0x3b, 0x30, 0x5c,
    +	0x95, 0x9a, 0xa2, 0x78, 0x87, 0x9f, 0x6f, 0xab, 0xb5, 0x54, 0x0a, 0x6e, 0x2e, 0xe9, 0x9c, 0xd7,
    +	0xea, 0x63, 0x83, 0x9a, 0x69, 0x05, 0x56, 0xec, 0x64, 0x05, 0x16, 0xd3, 0xcd, 0xb7, 0x89, 0xfa,
    +	0x79, 0x0b, 0xfa, 0xb8, 0x86, 0xa0, 0x3b, 0x05, 0x8d, 0xa6, 0xef, 0x8f, 0xc7, 0xee, 0x26, 0x2d,
    +	0x14, 0x9c, 0x0d, 0x5a, 0x81, 0x41, 0xf6, 0x83, 0x69, 0x38, 0x8a, 0xf9, 0x3e, 0x63, 0xbc, 0x55,
    +	0xbd, 0x83, 0x37, 0x65, 0x35, 0x1c, 0x53, 0xb0, 0x7f, 0xba, 0x48, 0x4f, 0xb7, 0x18, 0xd5, 0xb8,
    +	0xf4, 0xad, 0x87, 0x77, 0xe9, 0x17, 0x1e, 0xd6, 0xa5, 0xbf, 0x09, 0x63, 0x55, 0xcd, 0x3a, 0x20,
    +	0x9e, 0xc9, 0x0b, 0x6d, 0x17, 0x89, 0x66, 0x48, 0xc0, 0x65, 0xa8, 0xf3, 0x26, 0x11, 0x9c, 0xa4,
    +	0x8a, 0x3e, 0x09, 0xc3, 0x7c, 0x9e, 0x45, 0x2b, 0xdc, 0x90, 0xee, 0x89, 0xfc, 0xf5, 0xa2, 0x37,
    +	0xc1, 0x65, 0xee, 0x5a, 0x75, 0x6c, 0x10, 0xb3, 0xff, 0xc9, 0x02, 0xb4, 0xd8, 0xdc, 0x22, 0x0d,
    +	0x12, 0x38, 0xf5, 0x58, 0xc9, 0xf7, 0x25, 0x0b, 0xa6, 0x48, 0xaa, 0x78, 0xde, 0x6f, 0x34, 0xc4,
    +	0x93, 0x3e, 0x47, 0xea, 0xb4, 0x98, 0x53, 0x27, 0x66, 0xeb, 0xf3, 0x30, 0x70, 0x6e, 0x7b, 0x68,
    +	0x05, 0x26, 0xf9, 0x2d, 0xa9, 0x00, 0x9a, 0xad, 0xdd, 0x23, 0x82, 0xf0, 0xe4, 0x5a, 0x1a, 0x05,
    +	0x67, 0xd5, 0xb3, 0x7f, 0x7f, 0x04, 0x72, 0x7b, 0xf1, 0x81, 0x76, 0xf3, 0x03, 0xed, 0xe6, 0x07,
    +	0xda, 0xcd, 0x0f, 0xb4, 0x9b, 0x1f, 0x68, 0x37, 0x3f, 0xd0, 0x6e, 0xbe, 0x4f, 0xb5, 0x9b, 0xff,
    +	0xa5, 0x05, 0xc7, 0xd5, 0xf5, 0x65, 0x3c, 0xd8, 0x3f, 0x07, 0x93, 0x7c, 0xbb, 0xcd, 0xd7, 0x1d,
    +	0xb7, 0xb1, 0x46, 0x1a, 0xcd, 0xba, 0x13, 0x49, 0x1b, 0xa6, 0x4b, 0x99, 0x2b, 0x37, 0xe1, 0x28,
    +	0x61, 0x54, 0xe4, 0x1e, 0x67, 0x19, 0x00, 0x9c, 0xd5, 0x8c, 0xfd, 0x3b, 0x03, 0xd0, 0xbb, 0xb8,
    +	0x43, 0xbc, 0xe8, 0x08, 0x9e, 0x36, 0x55, 0x18, 0x75, 0xbd, 0x1d, 0xbf, 0xbe, 0x43, 0x6a, 0x1c,
    +	0x7e, 0x98, 0x17, 0xf8, 0x09, 0x41, 0x7a, 0x74, 0xd9, 0x20, 0x81, 0x13, 0x24, 0x1f, 0x86, 0x8e,
    +	0xe8, 0x0a, 0xf4, 0xf1, 0xcb, 0x47, 0x28, 0x88, 0x32, 0xcf, 0x6c, 0x36, 0x88, 0xe2, 0x4a, 0x8d,
    +	0xf5, 0x57, 0xfc, 0x72, 0x13, 0xd5, 0xd1, 0x67, 0x61, 0x74, 0xc3, 0x0d, 0xc2, 0x68, 0xcd, 0x6d,
    +	0xd0, 0xab, 0xa1, 0xd1, 0xbc, 0x0f, 0x9d, 0x90, 0x1a, 0x87, 0x25, 0x83, 0x12, 0x4e, 0x50, 0x46,
    +	0x9b, 0x30, 0x52, 0x77, 0xf4, 0xa6, 0xfa, 0x0f, 0xdd, 0x94, 0xba, 0x1d, 0xae, 0xeb, 0x84, 0xb0,
    +	0x49, 0x97, 0x6e, 0xa7, 0x2a, 0x53, 0x6b, 0x0c, 0x30, 0x71, 0x86, 0xda, 0x4e, 0x5c, 0x9f, 0xc1,
    +	0x61, 0x94, 0x41, 0x63, 0xee, 0x06, 0x83, 0x26, 0x83, 0xa6, 0x39, 0x15, 0x7c, 0x06, 0x06, 0x09,
    +	0x1d, 0x42, 0x4a, 0x58, 0x5c, 0x30, 0x17, 0xbb, 0xeb, 0xeb, 0x8a, 0x5b, 0x0d, 0x7c, 0x53, 0x1b,
    +	0xb7, 0x28, 0x29, 0xe1, 0x98, 0x28, 0x9a, 0x87, 0xbe, 0x90, 0x04, 0xae, 0x92, 0xf8, 0xb7, 0x99,
    +	0x46, 0x86, 0xc6, 0x5d, 0x1a, 0xf9, 0x6f, 0x2c, 0xaa, 0xd2, 0xe5, 0xe5, 0x30, 0x51, 0x2c, 0xbb,
    +	0x0c, 0xb4, 0xe5, 0x35, 0xcb, 0x4a, 0xb1, 0x80, 0xa2, 0x37, 0xa1, 0x3f, 0x20, 0x75, 0xa6, 0xee,
    +	0x1d, 0xe9, 0x7e, 0x91, 0x73, 0xed, 0x31, 0xaf, 0x87, 0x25, 0x01, 0x74, 0x0d, 0x50, 0x40, 0x28,
    +	0x83, 0xe7, 0x7a, 0x9b, 0xca, 0x08, 0x5f, 0x1c, 0xb4, 0x8a, 0x91, 0xc6, 0x31, 0x86, 0xf4, 0x66,
    +	0xc5, 0x19, 0xd5, 0xd0, 0x15, 0x98, 0x50, 0xa5, 0xcb, 0x5e, 0x18, 0x39, 0xf4, 0x80, 0x1b, 0x63,
    +	0xb4, 0x94, 0x7c, 0x05, 0x27, 0x11, 0x70, 0xba, 0x8e, 0xfd, 0x6b, 0x16, 0xf0, 0x71, 0x3e, 0x02,
    +	0xa9, 0xc2, 0xeb, 0xa6, 0x54, 0xe1, 0x54, 0xee, 0xcc, 0xe5, 0x48, 0x14, 0x7e, 0xcd, 0x82, 0x21,
    +	0x6d, 0x66, 0xe3, 0x35, 0x6b, 0xb5, 0x59, 0xb3, 0x2d, 0x18, 0xa7, 0x2b, 0xfd, 0xc6, 0xed, 0x90,
    +	0x04, 0x3b, 0xa4, 0xc6, 0x16, 0x66, 0xe1, 0xfe, 0x16, 0xa6, 0x32, 0xf8, 0xbd, 0x9e, 0x20, 0x88,
    +	0x53, 0x4d, 0xd8, 0x9f, 0x91, 0x5d, 0x55, 0xf6, 0xd1, 0x55, 0x35, 0xe7, 0x09, 0xfb, 0x68, 0x35,
    +	0xab, 0x38, 0xc6, 0xa1, 0x5b, 0x6d, 0xcb, 0x0f, 0xa3, 0xa4, 0x7d, 0xf4, 0x55, 0x3f, 0x8c, 0x30,
    +	0x83, 0xd8, 0x2f, 0x00, 0x2c, 0xde, 0x25, 0x55, 0xbe, 0x62, 0xf5, 0x47, 0x8f, 0x95, 0xff, 0xe8,
    +	0xb1, 0xff, 0xd2, 0x82, 0xd1, 0xa5, 0x79, 0xe3, 0xe6, 0x9a, 0x01, 0xe0, 0x2f, 0xb5, 0x5b, 0xb7,
    +	0x56, 0xa5, 0x91, 0x0e, 0xb7, 0x53, 0x50, 0xa5, 0x58, 0xc3, 0x40, 0xa7, 0xa0, 0x58, 0x6f, 0x79,
    +	0x42, 0xec, 0xd9, 0x4f, 0xaf, 0xc7, 0xeb, 0x2d, 0x0f, 0xd3, 0x32, 0xcd, 0x93, 0xad, 0xd8, 0xb5,
    +	0x27, 0x5b, 0xc7, 0x80, 0x3a, 0xa8, 0x04, 0xbd, 0x77, 0xee, 0xb8, 0x35, 0x1e, 0x27, 0x40, 0x18,
    +	0x10, 0xdd, 0xba, 0xb5, 0xbc, 0x10, 0x62, 0x5e, 0x6e, 0x7f, 0xb9, 0x08, 0xd3, 0x4b, 0x75, 0x72,
    +	0xf7, 0x3d, 0xc6, 0x4a, 0xe8, 0xd6, 0x0f, 0xef, 0x70, 0x02, 0xa4, 0xc3, 0xfa, 0x5a, 0x76, 0x1e,
    +	0x8f, 0x0d, 0xe8, 0xe7, 0xe6, 0xc1, 0x32, 0x72, 0x42, 0xa6, 0x52, 0x36, 0x7f, 0x40, 0x66, 0xb8,
    +	0x99, 0xb1, 0x50, 0xca, 0xaa, 0x0b, 0x53, 0x94, 0x62, 0x49, 0x7c, 0xfa, 0x15, 0x18, 0xd6, 0x31,
    +	0x0f, 0xe5, 0xf5, 0xfc, 0xc3, 0x45, 0x18, 0xa7, 0x3d, 0x78, 0xa8, 0x13, 0xb1, 0x9e, 0x9e, 0x88,
    +	0x07, 0xed, 0xf9, 0xda, 0x79, 0x36, 0xde, 0x49, 0xce, 0xc6, 0xa5, 0xbc, 0xd9, 0x38, 0xea, 0x39,
    +	0xf8, 0x11, 0x0b, 0x26, 0x97, 0xea, 0x7e, 0x75, 0x3b, 0xe1, 0x9d, 0xfa, 0x12, 0x0c, 0xd1, 0xe3,
    +	0x38, 0x34, 0x02, 0xb5, 0x18, 0xa1, 0x7b, 0x04, 0x08, 0xeb, 0x78, 0x5a, 0xb5, 0xf5, 0xf5, 0xe5,
    +	0x85, 0xac, 0x88, 0x3f, 0x02, 0x84, 0x75, 0x3c, 0xfb, 0xcf, 0x2d, 0x38, 0x73, 0x65, 0x7e, 0x31,
    +	0x5e, 0x8a, 0xa9, 0xa0, 0x43, 0xe7, 0xa1, 0xaf, 0x59, 0xd3, 0xba, 0x12, 0x8b, 0x85, 0x17, 0x58,
    +	0x2f, 0x04, 0xf4, 0xfd, 0x12, 0xdf, 0x6b, 0x1d, 0xe0, 0x0a, 0x2e, 0xcf, 0x8b, 0x73, 0x57, 0x6a,
    +	0x81, 0xac, 0x5c, 0x2d, 0xd0, 0x13, 0xd0, 0x4f, 0xef, 0x05, 0xb7, 0x2a, 0xfb, 0xcd, 0xcd, 0x2e,
    +	0x78, 0x11, 0x96, 0x30, 0xfb, 0x57, 0x2d, 0x98, 0xbc, 0xe2, 0x46, 0xf4, 0xd2, 0x4e, 0x46, 0xd5,
    +	0xa1, 0xb7, 0x76, 0xe8, 0x46, 0x7e, 0xb0, 0x9b, 0x8c, 0xaa, 0x83, 0x15, 0x04, 0x6b, 0x58, 0xfc,
    +	0x83, 0x76, 0x5c, 0xe6, 0xef, 0x52, 0x30, 0xf5, 0x6e, 0x58, 0x94, 0x63, 0x85, 0x41, 0xc7, 0xab,
    +	0xe6, 0x06, 0x4c, 0x64, 0xb9, 0x2b, 0x0e, 0x6e, 0x35, 0x5e, 0x0b, 0x12, 0x80, 0x63, 0x1c, 0xfb,
    +	0x1f, 0x2c, 0x28, 0x5d, 0xe1, 0x5e, 0xbb, 0x1b, 0x61, 0xce, 0xa1, 0xfb, 0x02, 0x0c, 0x12, 0xa9,
    +	0x20, 0x10, 0xbd, 0x56, 0x8c, 0xa8, 0xd2, 0x1c, 0xf0, 0xe0, 0x3e, 0x0a, 0xaf, 0x0b, 0x17, 0xfa,
    +	0xc3, 0xf9, 0x40, 0x2f, 0x01, 0x22, 0x7a, 0x5b, 0x7a, 0xb4, 0x23, 0x16, 0x36, 0x65, 0x31, 0x05,
    +	0xc5, 0x19, 0x35, 0xec, 0x9f, 0xb3, 0xe0, 0xb8, 0xfa, 0xe0, 0xf7, 0xdd, 0x67, 0xda, 0x5f, 0x2f,
    +	0xc0, 0xc8, 0xd5, 0xb5, 0xb5, 0xf2, 0x15, 0x12, 0x69, 0xab, 0xb2, 0xbd, 0xda, 0x1f, 0x6b, 0xda,
    +	0xcb, 0x76, 0x6f, 0xc4, 0x56, 0xe4, 0xd6, 0x67, 0x78, 0x0c, 0xbf, 0x99, 0x65, 0x2f, 0xba, 0x11,
    +	0x54, 0xa2, 0xc0, 0xf5, 0x36, 0x33, 0x57, 0xba, 0xe4, 0x59, 0x8a, 0x79, 0x3c, 0x0b, 0x7a, 0x01,
    +	0xfa, 0x58, 0x10, 0x41, 0x39, 0x09, 0x8f, 0xa8, 0x27, 0x16, 0x2b, 0x3d, 0xd8, 0x2b, 0x0d, 0xae,
    +	0xe3, 0x65, 0xfe, 0x07, 0x0b, 0x54, 0xb4, 0x0e, 0x43, 0x5b, 0x51, 0xd4, 0xbc, 0x4a, 0x9c, 0x1a,
    +	0x09, 0xe4, 0x29, 0x7b, 0x36, 0xeb, 0x94, 0xa5, 0x83, 0xc0, 0xd1, 0xe2, 0x83, 0x29, 0x2e, 0x0b,
    +	0xb1, 0x4e, 0xc7, 0xae, 0x00, 0xc4, 0xb0, 0x07, 0xa4, 0xb8, 0xb1, 0xd7, 0x60, 0x90, 0x7e, 0xee,
    +	0x6c, 0xdd, 0x75, 0xda, 0xab, 0xc6, 0x9f, 0x81, 0x41, 0xa9, 0xf8, 0x0e, 0x45, 0x88, 0x0f, 0x76,
    +	0x23, 0x49, 0xbd, 0x78, 0x88, 0x63, 0xb8, 0xfd, 0x38, 0x08, 0x0b, 0xe0, 0x76, 0x24, 0xed, 0x0d,
    +	0x38, 0xc6, 0x4c, 0x99, 0x9d, 0x68, 0xcb, 0x58, 0xa3, 0x9d, 0x17, 0xc3, 0xb3, 0xe2, 0x5d, 0xc7,
    +	0xbf, 0x6c, 0x4a, 0x73, 0x21, 0x1f, 0x96, 0x14, 0xe3, 0x37, 0x9e, 0xfd, 0xf7, 0x3d, 0xf0, 0xc8,
    +	0x72, 0x25, 0x3f, 0x36, 0xd5, 0x65, 0x18, 0xe6, 0xec, 0x22, 0x5d, 0x1a, 0x4e, 0x5d, 0xb4, 0xab,
    +	0x24, 0xa0, 0x6b, 0x1a, 0x0c, 0x1b, 0x98, 0xe8, 0x0c, 0x14, 0xdd, 0x77, 0xbd, 0xa4, 0x83, 0xe5,
    +	0xf2, 0x5b, 0xab, 0x98, 0x96, 0x53, 0x30, 0xe5, 0x3c, 0xf9, 0x91, 0xae, 0xc0, 0x8a, 0xfb, 0x7c,
    +	0x1d, 0x46, 0xdd, 0xb0, 0x1a, 0xba, 0xcb, 0x1e, 0xdd, 0xa7, 0xda, 0x4e, 0x57, 0x32, 0x07, 0xda,
    +	0x69, 0x05, 0xc5, 0x09, 0x6c, 0xed, 0x7e, 0xe9, 0xed, 0x9a, 0x7b, 0xed, 0x18, 0x19, 0x83, 0x1e,
    +	0xff, 0x4d, 0xf6, 0x75, 0x21, 0x13, 0xc1, 0x8b, 0xe3, 0x9f, 0x7f, 0x70, 0x88, 0x25, 0x8c, 0x3e,
    +	0xe8, 0xaa, 0x5b, 0x4e, 0x73, 0xb6, 0x15, 0x6d, 0x2d, 0xb8, 0x61, 0xd5, 0xdf, 0x21, 0xc1, 0x2e,
    +	0x7b, 0x8b, 0x0f, 0xc4, 0x0f, 0x3a, 0x05, 0x98, 0xbf, 0x3a, 0x5b, 0xa6, 0x98, 0x38, 0x5d, 0x07,
    +	0xcd, 0xc2, 0x98, 0x2c, 0xac, 0x90, 0x90, 0x5d, 0x01, 0x43, 0x8c, 0x8c, 0x72, 0x79, 0x14, 0xc5,
    +	0x8a, 0x48, 0x12, 0xdf, 0x64, 0x70, 0xe1, 0x41, 0x30, 0xb8, 0x2f, 0xc3, 0x88, 0xeb, 0xb9, 0x91,
    +	0xeb, 0x44, 0x3e, 0xd7, 0x1f, 0xf1, 0x67, 0x37, 0x13, 0x30, 0x2f, 0xeb, 0x00, 0x6c, 0xe2, 0xd9,
    +	0xff, 0x5f, 0x0f, 0x4c, 0xb0, 0x69, 0xfb, 0x60, 0x85, 0x7d, 0x2f, 0xad, 0xb0, 0xf5, 0xf4, 0x0a,
    +	0x7b, 0x10, 0x9c, 0xfb, 0x7d, 0x2f, 0xb3, 0x2f, 0x58, 0x30, 0xc1, 0x64, 0xdc, 0xc6, 0x32, 0xbb,
    +	0x08, 0x83, 0x81, 0xe1, 0x8d, 0x3a, 0xa8, 0x2b, 0xb5, 0xa4, 0x63, 0x69, 0x8c, 0x83, 0xde, 0x00,
    +	0x68, 0xc6, 0x32, 0xf4, 0x82, 0x11, 0x42, 0x14, 0x72, 0xc5, 0xe7, 0x5a, 0x1d, 0xfb, 0xb3, 0x30,
    +	0xa8, 0xdc, 0x4d, 0xa5, 0xbf, 0xb9, 0x95, 0xe3, 0x6f, 0xde, 0x99, 0x8d, 0x90, 0xb6, 0x71, 0xc5,
    +	0x4c, 0xdb, 0xb8, 0xaf, 0x5a, 0x10, 0x6b, 0x38, 0xd0, 0x5b, 0x30, 0xd8, 0xf4, 0x99, 0x41, 0x74,
    +	0x20, 0xbd, 0x0c, 0x1e, 0x6f, 0xab, 0x22, 0xe1, 0x71, 0x02, 0x03, 0x3e, 0x1d, 0x65, 0x59, 0x15,
    +	0xc7, 0x54, 0xd0, 0x35, 0xe8, 0x6f, 0x06, 0xa4, 0x12, 0xb1, 0x20, 0x56, 0xdd, 0x13, 0xe4, 0xcb,
    +	0x97, 0x57, 0xc4, 0x92, 0x82, 0xfd, 0x1b, 0x05, 0x18, 0x4f, 0xa2, 0xa2, 0xd7, 0xa0, 0x87, 0xdc,
    +	0x25, 0x55, 0xd1, 0xdf, 0x4c, 0x9e, 0x20, 0x96, 0x91, 0xf0, 0x01, 0xa0, 0xff, 0x31, 0xab, 0x85,
    +	0xae, 0x42, 0x3f, 0x65, 0x08, 0xae, 0xa8, 0x80, 0x8d, 0x8f, 0xe6, 0x31, 0x15, 0x8a, 0xb3, 0xe2,
    +	0x9d, 0x13, 0x45, 0x58, 0x56, 0x67, 0x06, 0x69, 0xd5, 0x66, 0x85, 0xbe, 0xb5, 0xa2, 0x76, 0x22,
    +	0x81, 0xb5, 0xf9, 0x32, 0x47, 0x12, 0xd4, 0xb8, 0x41, 0x9a, 0x2c, 0xc4, 0x31, 0x11, 0xf4, 0x06,
    +	0xf4, 0x86, 0x75, 0x42, 0x9a, 0xc2, 0xe2, 0x20, 0x53, 0xca, 0x59, 0xa1, 0x08, 0x82, 0x12, 0x93,
    +	0x8a, 0xb0, 0x02, 0xcc, 0x2b, 0xda, 0xbf, 0x65, 0x01, 0x70, 0x0b, 0x3e, 0xc7, 0xdb, 0x24, 0x47,
    +	0xa0, 0x18, 0x58, 0x80, 0x9e, 0xb0, 0x49, 0xaa, 0xed, 0xac, 0xfd, 0xe3, 0xfe, 0x54, 0x9a, 0xa4,
    +	0x1a, 0xaf, 0x59, 0xfa, 0x0f, 0xb3, 0xda, 0xf6, 0x8f, 0x02, 0x8c, 0xc6, 0x68, 0xcb, 0x11, 0x69,
    +	0xa0, 0xe7, 0x8c, 0x28, 0x37, 0xa7, 0x12, 0x51, 0x6e, 0x06, 0x19, 0xb6, 0x26, 0x83, 0xfe, 0x2c,
    +	0x14, 0x1b, 0xce, 0x5d, 0x21, 0x64, 0x7c, 0xa6, 0x7d, 0x37, 0x28, 0xfd, 0x99, 0x15, 0xe7, 0x2e,
    +	0x7f, 0x87, 0x3f, 0x23, 0xf7, 0xd8, 0x8a, 0x73, 0xb7, 0xa3, 0x45, 0x3a, 0x6d, 0x84, 0xb5, 0xe5,
    +	0x7a, 0xc2, 0x38, 0xad, 0xab, 0xb6, 0x5c, 0x2f, 0xd9, 0x96, 0xeb, 0x75, 0xd1, 0x96, 0xeb, 0xa1,
    +	0x7b, 0xd0, 0x2f, 0x6c, 0x47, 0x45, 0xf8, 0xbd, 0x8b, 0x5d, 0xb4, 0x27, 0x4c, 0x4f, 0x79, 0x9b,
    +	0x17, 0xa5, 0x9c, 0x41, 0x94, 0x76, 0x6c, 0x57, 0x36, 0x88, 0xfe, 0x2b, 0x0b, 0x46, 0xc5, 0x6f,
    +	0x4c, 0xde, 0x6d, 0x91, 0x30, 0x12, 0x7c, 0xf8, 0x47, 0xba, 0xef, 0x83, 0xa8, 0xc8, 0xbb, 0xf2,
    +	0x11, 0x79, 0x65, 0x9a, 0xc0, 0x8e, 0x3d, 0x4a, 0xf4, 0x02, 0xfd, 0x86, 0x05, 0xc7, 0x1a, 0xce,
    +	0x5d, 0xde, 0x22, 0x2f, 0xc3, 0x4e, 0xe4, 0xfa, 0xc2, 0x06, 0xe3, 0xb5, 0xee, 0xa6, 0x3f, 0x55,
    +	0x9d, 0x77, 0x52, 0x2a, 0x5c, 0x8f, 0x65, 0xa1, 0x74, 0xec, 0x6a, 0x66, 0xbf, 0xa6, 0x37, 0x60,
    +	0x40, 0xae, 0xb7, 0x87, 0x69, 0x18, 0xcf, 0xda, 0x11, 0x6b, 0xed, 0xa1, 0xb6, 0xf3, 0x59, 0x18,
    +	0xd6, 0xd7, 0xd8, 0x43, 0x6d, 0xeb, 0x5d, 0x98, 0xcc, 0x58, 0x4b, 0x0f, 0xb5, 0xc9, 0x3b, 0x70,
    +	0x2a, 0x77, 0x7d, 0x3c, 0x54, 0xc7, 0x86, 0xaf, 0x5b, 0xfa, 0x39, 0x78, 0x04, 0xda, 0x99, 0x79,
    +	0x53, 0x3b, 0x73, 0xb6, 0xfd, 0xce, 0xc9, 0x51, 0xd1, 0xbc, 0xa3, 0x77, 0x9a, 0x9e, 0xea, 0xe8,
    +	0x4d, 0xe8, 0xab, 0xd3, 0x12, 0x69, 0x81, 0x6c, 0x77, 0xde, 0x91, 0x31, 0x5f, 0xcc, 0xca, 0x43,
    +	0x2c, 0x28, 0xd8, 0x5f, 0xb1, 0x20, 0xc3, 0x35, 0x83, 0xf2, 0x49, 0x2d, 0xb7, 0xc6, 0x86, 0xa4,
    +	0x18, 0xf3, 0x49, 0x2a, 0x08, 0xcc, 0x19, 0x28, 0x6e, 0xba, 0x35, 0xe1, 0x59, 0xac, 0xc0, 0x57,
    +	0x28, 0x78, 0xd3, 0xad, 0xa1, 0x25, 0x40, 0x61, 0xab, 0xd9, 0xac, 0x33, 0xb3, 0x25, 0xa7, 0x7e,
    +	0x25, 0xf0, 0x5b, 0x4d, 0x6e, 0x6e, 0x5c, 0xe4, 0x42, 0xa2, 0x4a, 0x0a, 0x8a, 0x33, 0x6a, 0xd8,
    +	0xbf, 0x6b, 0x41, 0xcf, 0x11, 0x4c, 0x13, 0x36, 0xa7, 0xe9, 0xb9, 0x5c, 0xd2, 0x22, 0x6b, 0xc3,
    +	0x0c, 0x76, 0xee, 0x2c, 0xde, 0x8d, 0x88, 0x17, 0x32, 0x86, 0x23, 0x73, 0xd6, 0xf6, 0x2c, 0x98,
    +	0xbc, 0xee, 0x3b, 0xb5, 0x39, 0xa7, 0xee, 0x78, 0x55, 0x12, 0x2c, 0x7b, 0x9b, 0x87, 0xb2, 0xed,
    +	0x2f, 0x74, 0xb4, 0xed, 0xbf, 0x0c, 0x7d, 0x6e, 0x53, 0x0b, 0xfb, 0x7e, 0x8e, 0xce, 0xee, 0x72,
    +	0x59, 0x44, 0x7c, 0x47, 0x46, 0xe3, 0xac, 0x14, 0x0b, 0x7c, 0xba, 0x2c, 0xb9, 0x51, 0x5d, 0x4f,
    +	0xfe, 0xb2, 0xa4, 0x6f, 0x9d, 0x64, 0x38, 0x33, 0xc3, 0xfc, 0x7b, 0x0b, 0x8c, 0x26, 0x84, 0x07,
    +	0x23, 0x86, 0x7e, 0x97, 0x7f, 0xa9, 0x58, 0x9b, 0x4f, 0x66, 0xbf, 0x41, 0x52, 0x03, 0xa3, 0xf9,
    +	0xe6, 0xf1, 0x02, 0x2c, 0x09, 0xd9, 0x97, 0x21, 0x33, 0xfc, 0x4c, 0x67, 0xf9, 0x92, 0xfd, 0x09,
    +	0x98, 0x60, 0x35, 0x0f, 0x29, 0xbb, 0xb1, 0x13, 0x52, 0xf1, 0x8c, 0x08, 0xbe, 0xf6, 0xff, 0x6d,
    +	0x01, 0x5a, 0xf1, 0x6b, 0xee, 0xc6, 0xae, 0x20, 0xce, 0xbf, 0xff, 0x5d, 0x28, 0xf1, 0xc7, 0x71,
    +	0x32, 0xca, 0xed, 0x7c, 0xdd, 0x09, 0x43, 0x4d, 0x22, 0xff, 0xa4, 0x68, 0xb7, 0xb4, 0xd6, 0x1e,
    +	0x1d, 0x77, 0xa2, 0x87, 0xde, 0x4a, 0x04, 0x1d, 0xfc, 0x68, 0x2a, 0xe8, 0xe0, 0x93, 0x99, 0x76,
    +	0x31, 0xe9, 0xde, 0xcb, 0x60, 0x84, 0xf6, 0x17, 0x2d, 0x18, 0x5b, 0x4d, 0x44, 0x6d, 0x3d, 0xcf,
    +	0x8c, 0x04, 0x32, 0x34, 0x4d, 0x15, 0x56, 0x8a, 0x05, 0xf4, 0x81, 0x4b, 0x62, 0xff, 0xd5, 0x82,
    +	0x38, 0xdc, 0xd5, 0x11, 0xb0, 0xdc, 0xf3, 0x06, 0xcb, 0x9d, 0xf9, 0x7c, 0x51, 0xdd, 0xc9, 0xe3,
    +	0xb8, 0xd1, 0x35, 0x35, 0x27, 0x6d, 0x5e, 0x2e, 0x31, 0x19, 0xbe, 0xcf, 0x46, 0xcd, 0x89, 0x53,
    +	0xb3, 0xf1, 0xcd, 0x02, 0x20, 0x85, 0xdb, 0x75, 0xa0, 0xca, 0x74, 0x8d, 0x07, 0x13, 0xa8, 0x72,
    +	0x07, 0x10, 0x33, 0x73, 0x09, 0x1c, 0x2f, 0xe4, 0x64, 0x5d, 0x21, 0x7b, 0x3e, 0x9c, 0x0d, 0xcd,
    +	0xb4, 0xf4, 0x5c, 0xbd, 0x9e, 0xa2, 0x86, 0x33, 0x5a, 0xd0, 0xcc, 0x97, 0x7a, 0xbb, 0x35, 0x5f,
    +	0xea, 0xeb, 0xe0, 0x82, 0xfd, 0x35, 0x0b, 0x46, 0xd4, 0x30, 0xbd, 0x4f, 0x5c, 0x40, 0x54, 0x7f,
    +	0x72, 0xee, 0x95, 0xb2, 0xd6, 0x65, 0xc6, 0x0c, 0x7c, 0x1f, 0x73, 0xa5, 0x77, 0xea, 0xee, 0x3d,
    +	0xa2, 0xe2, 0x29, 0x97, 0x84, 0x6b, 0xbc, 0x28, 0x3d, 0xd8, 0x2b, 0x8d, 0xa8, 0x7f, 0x3c, 0x82,
    +	0x6b, 0x5c, 0xc5, 0xfe, 0x25, 0xba, 0xd9, 0xcd, 0xa5, 0x88, 0x5e, 0x82, 0xde, 0xe6, 0x96, 0x13,
    +	0x92, 0x84, 0xab, 0x5c, 0x6f, 0x99, 0x16, 0x1e, 0xec, 0x95, 0x46, 0x55, 0x05, 0x56, 0x82, 0x39,
    +	0x76, 0xf7, 0xe1, 0x3f, 0xd3, 0x8b, 0xb3, 0x63, 0xf8, 0xcf, 0x7f, 0xb2, 0xa0, 0x67, 0x95, 0xde,
    +	0x5e, 0x0f, 0xff, 0x08, 0x78, 0xdd, 0x38, 0x02, 0x4e, 0xe7, 0x65, 0x16, 0xca, 0xdd, 0xfd, 0x4b,
    +	0x89, 0xdd, 0x7f, 0x36, 0x97, 0x42, 0xfb, 0x8d, 0xdf, 0x80, 0x21, 0x96, 0xaf, 0x48, 0xb8, 0x05,
    +	0xbe, 0x60, 0x6c, 0xf8, 0x52, 0x62, 0xc3, 0x8f, 0x69, 0xa8, 0xda, 0x4e, 0x7f, 0x0a, 0xfa, 0x85,
    +	0x9f, 0x59, 0x32, 0x22, 0x81, 0xc0, 0xc5, 0x12, 0x6e, 0xff, 0x7c, 0x11, 0x8c, 0xfc, 0x48, 0xe8,
    +	0xf7, 0x2d, 0x98, 0x09, 0xb8, 0xfd, 0x79, 0x6d, 0xa1, 0x15, 0xb8, 0xde, 0x66, 0xa5, 0xba, 0x45,
    +	0x6a, 0xad, 0xba, 0xeb, 0x6d, 0x2e, 0x6f, 0x7a, 0xbe, 0x2a, 0x5e, 0xbc, 0x4b, 0xaa, 0x2d, 0xa6,
    +	0x1b, 0xee, 0x90, 0x8c, 0x49, 0xf9, 0x71, 0x3c, 0xbf, 0xbf, 0x57, 0x9a, 0xc1, 0x87, 0xa2, 0x8d,
    +	0x0f, 0xd9, 0x17, 0xf4, 0xe7, 0x16, 0x5c, 0xe4, 0x79, 0x7a, 0xba, 0xef, 0x7f, 0x1b, 0x09, 0x47,
    +	0x59, 0x92, 0x8a, 0x89, 0xac, 0x91, 0xa0, 0x31, 0xf7, 0xb2, 0x18, 0xd0, 0x8b, 0xe5, 0xc3, 0xb5,
    +	0x85, 0x0f, 0xdb, 0x39, 0xfb, 0x7f, 0x2e, 0xc2, 0x88, 0x08, 0x13, 0x29, 0xee, 0x80, 0x97, 0x8c,
    +	0x25, 0xf1, 0x68, 0x62, 0x49, 0x4c, 0x18, 0xc8, 0x0f, 0xe6, 0xf8, 0x0f, 0x61, 0x82, 0x1e, 0xce,
    +	0x57, 0x89, 0x13, 0x44, 0xb7, 0x89, 0xc3, 0xad, 0x12, 0x8b, 0x87, 0x3e, 0xfd, 0x95, 0x78, 0xfc,
    +	0x7a, 0x92, 0x18, 0x4e, 0xd3, 0xff, 0x5e, 0xba, 0x73, 0x3c, 0x18, 0x4f, 0x45, 0xfa, 0x7c, 0x1b,
    +	0x06, 0x95, 0x93, 0x94, 0x38, 0x74, 0xda, 0x07, 0xcc, 0x4d, 0x52, 0xe0, 0x42, 0xcf, 0xd8, 0x41,
    +	0x2f, 0x26, 0x67, 0xff, 0x66, 0xc1, 0x68, 0x90, 0x4f, 0xe2, 0x2a, 0x0c, 0x38, 0x21, 0x0b, 0xe2,
    +	0x5d, 0x6b, 0x27, 0x97, 0x4e, 0x35, 0xc3, 0x1c, 0xd5, 0x66, 0x45, 0x4d, 0xac, 0x68, 0xa0, 0xab,
    +	0xdc, 0xf6, 0x73, 0x87, 0xb4, 0x13, 0x4a, 0xa7, 0xa8, 0x81, 0xb4, 0x0e, 0xdd, 0x21, 0x58, 0xd4,
    +	0x47, 0x9f, 0xe2, 0xc6, 0xb9, 0xd7, 0x3c, 0xff, 0x8e, 0x77, 0xc5, 0xf7, 0x65, 0x48, 0xa0, 0xee,
    +	0x08, 0x4e, 0x48, 0x93, 0x5c, 0x55, 0x1d, 0x9b, 0xd4, 0xba, 0x0b, 0x9d, 0xfd, 0x39, 0x60, 0x79,
    +	0x49, 0xcc, 0x98, 0x04, 0x21, 0x22, 0x30, 0x26, 0x62, 0x90, 0xca, 0x32, 0x31, 0x76, 0x99, 0xcf,
    +	0x6f, 0xb3, 0x76, 0xac, 0xc7, 0xb9, 0x66, 0x92, 0xc0, 0x49, 0x9a, 0xf6, 0x16, 0x3f, 0x84, 0x97,
    +	0x88, 0x13, 0xb5, 0x02, 0x12, 0xa2, 0x8f, 0xc3, 0x54, 0xfa, 0x65, 0x2c, 0xd4, 0x21, 0x16, 0xe3,
    +	0x9e, 0x4f, 0xef, 0xef, 0x95, 0xa6, 0x2a, 0x39, 0x38, 0x38, 0xb7, 0xb6, 0xfd, 0x2b, 0x16, 0x30,
    +	0x4f, 0xf0, 0x23, 0xe0, 0x7c, 0x3e, 0x66, 0x72, 0x3e, 0x53, 0x79, 0xd3, 0x99, 0xc3, 0xf4, 0xbc,
    +	0xc8, 0xd7, 0x70, 0x39, 0xf0, 0xef, 0xee, 0x0a, 0xdb, 0xad, 0xce, 0xcf, 0x38, 0xfb, 0xcb, 0x16,
    +	0xb0, 0x24, 0x3e, 0x98, 0xbf, 0xda, 0xa5, 0x82, 0xa3, 0xb3, 0x59, 0xc2, 0xc7, 0x61, 0x60, 0x43,
    +	0x0c, 0x7f, 0x86, 0xd0, 0xc9, 0xe8, 0xb0, 0x49, 0x5b, 0x4e, 0x9a, 0xf0, 0xe8, 0x14, 0xff, 0xb0,
    +	0xa2, 0x66, 0xff, 0xf7, 0x16, 0x4c, 0xe7, 0x57, 0x43, 0xeb, 0x70, 0x32, 0x20, 0xd5, 0x56, 0x10,
    +	0xd2, 0x2d, 0x21, 0x1e, 0x40, 0xc2, 0x29, 0x8a, 0x4f, 0xf5, 0x23, 0xfb, 0x7b, 0xa5, 0x93, 0x38,
    +	0x1b, 0x05, 0xe7, 0xd5, 0x45, 0xaf, 0xc0, 0x68, 0x2b, 0xe4, 0x9c, 0x1f, 0x63, 0xba, 0x42, 0x11,
    +	0x29, 0x9a, 0xf9, 0x0d, 0xad, 0x1b, 0x10, 0x9c, 0xc0, 0xb4, 0x7f, 0x80, 0x2f, 0x47, 0x15, 0x2c,
    +	0xba, 0x01, 0x13, 0x9e, 0xf6, 0x9f, 0xde, 0x80, 0xf2, 0xa9, 0xff, 0x78, 0xa7, 0x5b, 0x9f, 0x5d,
    +	0x97, 0x9a, 0xaf, 0x7a, 0x82, 0x0c, 0x4e, 0x53, 0xb6, 0x7f, 0xc1, 0x82, 0x93, 0x3a, 0xa2, 0xe6,
    +	0x0e, 0xd7, 0x49, 0x97, 0xb7, 0x00, 0x03, 0x7e, 0x93, 0x04, 0x4e, 0xe4, 0x07, 0xe2, 0x9a, 0xbb,
    +	0x20, 0x57, 0xe8, 0x0d, 0x51, 0x7e, 0x20, 0x92, 0xd7, 0x48, 0xea, 0xb2, 0x1c, 0xab, 0x9a, 0xc8,
    +	0x86, 0x3e, 0x26, 0x40, 0x0c, 0x85, 0xe3, 0x23, 0x3b, 0xb4, 0x98, 0x7d, 0x4a, 0x88, 0x05, 0xc4,
    +	0xfe, 0x7b, 0x8b, 0xaf, 0x4f, 0xbd, 0xeb, 0xe8, 0x5d, 0x18, 0x6f, 0x38, 0x51, 0x75, 0x6b, 0xf1,
    +	0x6e, 0x33, 0xe0, 0x2a, 0x5a, 0x39, 0x4e, 0xcf, 0x74, 0x1a, 0x27, 0xed, 0x23, 0x63, 0x03, 0xe9,
    +	0x95, 0x04, 0x31, 0x9c, 0x22, 0x8f, 0x6e, 0xc3, 0x10, 0x2b, 0x63, 0x3e, 0xbd, 0x61, 0x3b, 0x5e,
    +	0x26, 0xaf, 0x35, 0x65, 0xe2, 0xb3, 0x12, 0xd3, 0xc1, 0x3a, 0x51, 0xfb, 0xab, 0x45, 0x7e, 0x68,
    +	0xb0, 0xb7, 0xc7, 0x53, 0xd0, 0xdf, 0xf4, 0x6b, 0xf3, 0xcb, 0x0b, 0x58, 0xcc, 0x82, 0xba, 0xf7,
    +	0xca, 0xbc, 0x18, 0x4b, 0x38, 0xba, 0x00, 0x03, 0xe2, 0xa7, 0x54, 0xa9, 0xb3, 0x3d, 0x22, 0xf0,
    +	0x42, 0xac, 0xa0, 0xe8, 0x79, 0x80, 0x66, 0xe0, 0xef, 0xb8, 0x35, 0x16, 0x89, 0xa9, 0x68, 0x5a,
    +	0xe7, 0x95, 0x15, 0x04, 0x6b, 0x58, 0xe8, 0x55, 0x18, 0x69, 0x79, 0x21, 0xe7, 0x9f, 0xb4, 0x78,
    +	0xf7, 0xca, 0x6e, 0x6c, 0x5d, 0x07, 0x62, 0x13, 0x17, 0xcd, 0x42, 0x5f, 0xe4, 0x30, 0x6b, 0xb3,
    +	0xde, 0x7c, 0x23, 0xfa, 0x35, 0x8a, 0xa1, 0x67, 0x96, 0xa3, 0x15, 0xb0, 0xa8, 0x88, 0xde, 0x96,
    +	0xee, 0xf5, 0xfc, 0x26, 0x12, 0xde, 0x2b, 0xdd, 0xdd, 0x5a, 0x9a, 0x73, 0xbd, 0xf0, 0x8a, 0x31,
    +	0x68, 0xa1, 0x57, 0x00, 0xc8, 0xdd, 0x88, 0x04, 0x9e, 0x53, 0x57, 0x36, 0xa2, 0x8a, 0x91, 0x59,
    +	0xf0, 0x57, 0xfd, 0x68, 0x3d, 0x24, 0x8b, 0x0a, 0x03, 0x6b, 0xd8, 0xf6, 0x8f, 0x0e, 0x01, 0xc4,
    +	0x0f, 0x0d, 0x74, 0x0f, 0x06, 0xaa, 0x4e, 0xd3, 0xa9, 0xf2, 0xb4, 0xa9, 0xc5, 0x3c, 0xaf, 0xe7,
    +	0xb8, 0xc6, 0xcc, 0xbc, 0x40, 0xe7, 0xca, 0x1b, 0x19, 0x32, 0x7c, 0x40, 0x16, 0x77, 0x54, 0xd8,
    +	0xa8, 0xf6, 0xd0, 0x17, 0x2c, 0x18, 0x12, 0x91, 0x8e, 0xd8, 0x0c, 0x15, 0xf2, 0xf5, 0x6d, 0x5a,
    +	0xfb, 0xb3, 0x71, 0x0d, 0xde, 0x85, 0x17, 0xe4, 0x0a, 0xd5, 0x20, 0x1d, 0x7b, 0xa1, 0x37, 0x8c,
    +	0x3e, 0x2c, 0xdf, 0xb6, 0x45, 0x63, 0x28, 0xd5, 0xdb, 0x76, 0x90, 0x5d, 0x35, 0xfa, 0xb3, 0x76,
    +	0xdd, 0x78, 0xd6, 0xf6, 0xe4, 0xfb, 0x0f, 0x1b, 0xfc, 0x76, 0xa7, 0x17, 0x2d, 0x2a, 0xeb, 0xb1,
    +	0x44, 0x7a, 0xf3, 0x9d, 0x5e, 0xb5, 0x87, 0x5d, 0x87, 0x38, 0x22, 0x9f, 0x85, 0xb1, 0x9a, 0xc9,
    +	0xb5, 0x88, 0x95, 0xf8, 0x64, 0x1e, 0xdd, 0x04, 0x93, 0x13, 0xf3, 0x29, 0x09, 0x00, 0x4e, 0x12,
    +	0x46, 0x65, 0x1e, 0x5a, 0x66, 0xd9, 0xdb, 0xf0, 0x85, 0x07, 0x95, 0x9d, 0x3b, 0x97, 0xbb, 0x61,
    +	0x44, 0x1a, 0x14, 0x33, 0x66, 0x12, 0x56, 0x45, 0x5d, 0xac, 0xa8, 0xa0, 0x37, 0xa1, 0x8f, 0x79,
    +	0x3d, 0x86, 0x53, 0x03, 0xf9, 0x6a, 0x0d, 0x33, 0x12, 0x6a, 0xbc, 0x21, 0xd9, 0xdf, 0x10, 0x0b,
    +	0x0a, 0xe8, 0xaa, 0xf4, 0x29, 0x0e, 0x97, 0xbd, 0xf5, 0x90, 0x30, 0x9f, 0xe2, 0xc1, 0xb9, 0xc7,
    +	0x63, 0x77, 0x61, 0x5e, 0x9e, 0x99, 0x7f, 0xd6, 0xa8, 0x49, 0xd9, 0x3e, 0xf1, 0x5f, 0xa6, 0xb5,
    +	0x15, 0x71, 0xdb, 0x32, 0xbb, 0x67, 0xa6, 0xbe, 0x8d, 0x87, 0xf3, 0xa6, 0x49, 0x02, 0x27, 0x69,
    +	0x52, 0x16, 0x9a, 0xef, 0x7a, 0xe1, 0x83, 0xd5, 0xe9, 0xec, 0xe0, 0x92, 0x03, 0x76, 0x1b, 0xf1,
    +	0x12, 0x2c, 0xea, 0x23, 0x17, 0xc6, 0x02, 0x83, 0xbd, 0x90, 0xe1, 0xd6, 0xce, 0x77, 0xc7, 0xc4,
    +	0x68, 0x81, 0xfc, 0x4d, 0x32, 0x38, 0x49, 0x17, 0xbd, 0xa9, 0x31, 0x4a, 0x23, 0xed, 0x5f, 0xfe,
    +	0x9d, 0x58, 0xa3, 0xe9, 0x6d, 0x18, 0x31, 0x0e, 0x9b, 0x87, 0xaa, 0x82, 0xf4, 0x60, 0x3c, 0x79,
    +	0xb2, 0x3c, 0x54, 0xcd, 0xe3, 0xdf, 0xf6, 0xc0, 0xa8, 0xb9, 0x13, 0xd0, 0x45, 0x18, 0x14, 0x44,
    +	0x54, 0x46, 0x2b, 0xb5, 0xb9, 0x57, 0x24, 0x00, 0xc7, 0x38, 0x2c, 0x91, 0x19, 0xab, 0xae, 0xf9,
    +	0x0a, 0xc4, 0x89, 0xcc, 0x14, 0x04, 0x6b, 0x58, 0xf4, 0x01, 0x7b, 0xdb, 0xf7, 0x23, 0x75, 0x8f,
    +	0xaa, 0xed, 0x32, 0xc7, 0x4a, 0xb1, 0x80, 0xd2, 0xfb, 0x73, 0x9b, 0x04, 0x1e, 0xa9, 0x9b, 0x29,
    +	0x1d, 0xd4, 0xfd, 0x79, 0x4d, 0x07, 0x62, 0x13, 0x97, 0x72, 0x01, 0x7e, 0xc8, 0xf6, 0x9f, 0x78,
    +	0x26, 0xc7, 0xbe, 0x17, 0x15, 0x1e, 0x45, 0x42, 0xc2, 0xd1, 0x27, 0xe0, 0xa4, 0x0a, 0x9f, 0x28,
    +	0x56, 0x97, 0x6c, 0xb1, 0xcf, 0x90, 0x6a, 0x9d, 0x9c, 0xcf, 0x46, 0xc3, 0x79, 0xf5, 0xd1, 0xeb,
    +	0x30, 0x2a, 0x9e, 0x52, 0x92, 0x62, 0xbf, 0x69, 0x48, 0x78, 0xcd, 0x80, 0xe2, 0x04, 0xb6, 0x4c,
    +	0x4a, 0xc1, 0xde, 0x18, 0x92, 0xc2, 0x40, 0x3a, 0x29, 0x85, 0x0e, 0xc7, 0xa9, 0x1a, 0x68, 0x16,
    +	0xc6, 0x38, 0xeb, 0xe8, 0x7a, 0x9b, 0x7c, 0x4e, 0x84, 0x67, 0xa7, 0xda, 0x54, 0x37, 0x4c, 0x30,
    +	0x4e, 0xe2, 0xa3, 0xcb, 0x30, 0xec, 0x04, 0xd5, 0x2d, 0x37, 0x22, 0x55, 0xba, 0x33, 0x98, 0x2d,
    +	0x9f, 0x66, 0x89, 0x39, 0xab, 0xc1, 0xb0, 0x81, 0x69, 0xdf, 0x83, 0xc9, 0x8c, 0xf0, 0x32, 0x74,
    +	0xe1, 0x38, 0x4d, 0x57, 0x7e, 0x53, 0xc2, 0xdd, 0x61, 0xb6, 0xbc, 0x2c, 0xbf, 0x46, 0xc3, 0xa2,
    +	0xab, 0x93, 0x85, 0xa1, 0xd1, 0x92, 0x6f, 0xab, 0xd5, 0xb9, 0x24, 0x01, 0x38, 0xc6, 0xb1, 0xff,
    +	0xb9, 0x00, 0x63, 0x19, 0x0a, 0x3a, 0x96, 0x00, 0x3a, 0xf1, 0xd2, 0x8a, 0xf3, 0x3d, 0x9b, 0x39,
    +	0x4e, 0x0a, 0x87, 0xc8, 0x71, 0x52, 0xec, 0x94, 0xe3, 0xa4, 0xe7, 0xbd, 0xe4, 0x38, 0x31, 0x47,
    +	0xac, 0xb7, 0xab, 0x11, 0xcb, 0xc8, 0x8b, 0xd2, 0x77, 0xc8, 0xbc, 0x28, 0xc6, 0xa0, 0xf7, 0x77,
    +	0x31, 0xe8, 0x3f, 0x5d, 0x80, 0xf1, 0xa4, 0x6e, 0xef, 0x08, 0xe4, 0xe3, 0x6f, 0x1a, 0xf2, 0xf1,
    +	0x0b, 0xdd, 0x78, 0xe2, 0xe7, 0xca, 0xca, 0x71, 0x42, 0x56, 0xfe, 0x74, 0x57, 0xd4, 0xda, 0xcb,
    +	0xcd, 0x7f, 0xb1, 0x00, 0xc7, 0x33, 0x55, 0x9e, 0x47, 0x30, 0x36, 0x37, 0x8c, 0xb1, 0x79, 0xae,
    +	0xeb, 0x28, 0x05, 0xb9, 0x03, 0x74, 0x2b, 0x31, 0x40, 0x17, 0xbb, 0x27, 0xd9, 0x7e, 0x94, 0xbe,
    +	0x55, 0x84, 0xb3, 0x99, 0xf5, 0x62, 0xf1, 0xf2, 0x92, 0x21, 0x5e, 0x7e, 0x3e, 0x21, 0x5e, 0xb6,
    +	0xdb, 0xd7, 0x7e, 0x30, 0xf2, 0x66, 0xe1, 0xad, 0xcf, 0x62, 0x8e, 0xdc, 0xa7, 0xac, 0xd9, 0xf0,
    +	0xd6, 0x57, 0x84, 0xb0, 0x49, 0xf7, 0x7b, 0x49, 0xc6, 0xfc, 0x67, 0x16, 0x9c, 0xca, 0x9c, 0x9b,
    +	0x23, 0x90, 0xf4, 0xad, 0x9a, 0x92, 0xbe, 0xa7, 0xba, 0x5e, 0xad, 0x39, 0xa2, 0xbf, 0x2f, 0xf6,
    +	0xe5, 0x7c, 0x0b, 0x13, 0x40, 0xdc, 0x80, 0x21, 0xa7, 0x5a, 0x25, 0x61, 0xb8, 0xe2, 0xd7, 0x54,
    +	0x3a, 0x84, 0xe7, 0xd8, 0xf3, 0x30, 0x2e, 0x3e, 0xd8, 0x2b, 0x4d, 0x27, 0x49, 0xc4, 0x60, 0xac,
    +	0x53, 0x40, 0x9f, 0x82, 0x81, 0x50, 0x66, 0xb2, 0xec, 0xb9, 0xff, 0x4c, 0x96, 0x8c, 0xc9, 0x55,
    +	0x02, 0x16, 0x45, 0x12, 0x7d, 0xbf, 0x1e, 0xfd, 0xa9, 0x8d, 0x68, 0x91, 0x77, 0xf2, 0x3e, 0x62,
    +	0x40, 0x3d, 0x0f, 0xb0, 0xa3, 0x5e, 0x32, 0x49, 0xe1, 0x89, 0xf6, 0xc6, 0xd1, 0xb0, 0xd0, 0x1b,
    +	0x30, 0x1e, 0xf2, 0xc0, 0xa7, 0xb1, 0x91, 0x0a, 0x5f, 0x8b, 0x2c, 0x76, 0x5c, 0x25, 0x01, 0xc3,
    +	0x29, 0x6c, 0xb4, 0x24, 0x5b, 0x65, 0xe6, 0x48, 0x7c, 0x79, 0x9e, 0x8f, 0x5b, 0x14, 0x26, 0x49,
    +	0xc7, 0x92, 0x93, 0xc0, 0x86, 0x5f, 0xab, 0x89, 0x3e, 0x05, 0x40, 0x17, 0x91, 0x10, 0xa2, 0xf4,
    +	0xe7, 0x1f, 0xa1, 0xf4, 0x6c, 0xa9, 0x65, 0x7a, 0x32, 0x30, 0x37, 0xfb, 0x05, 0x45, 0x04, 0x6b,
    +	0x04, 0x91, 0x03, 0x23, 0xf1, 0xbf, 0x38, 0x47, 0xfb, 0x85, 0xdc, 0x16, 0x92, 0xc4, 0x99, 0x82,
    +	0x61, 0x41, 0x27, 0x81, 0x4d, 0x8a, 0xe8, 0x93, 0x70, 0x6a, 0x27, 0xd7, 0xf2, 0x87, 0x73, 0x82,
    +	0x2c, 0xe9, 0x7a, 0xbe, 0xbd, 0x4f, 0x7e, 0x7d, 0xfb, 0x7f, 0x07, 0x78, 0xa4, 0xcd, 0x49, 0x8f,
    +	0x66, 0x4d, 0xad, 0xfd, 0x33, 0x49, 0xc9, 0xc6, 0x74, 0x66, 0x65, 0x43, 0xd4, 0x91, 0xd8, 0x50,
    +	0x85, 0xf7, 0xbc, 0xa1, 0x7e, 0xc2, 0xd2, 0x64, 0x4e, 0xdc, 0xa6, 0xfb, 0x63, 0x87, 0xbc, 0xc1,
    +	0x1e, 0xa0, 0x10, 0x6a, 0x23, 0x43, 0x92, 0xf3, 0x7c, 0xd7, 0xdd, 0xe9, 0x5e, 0xb4, 0xf3, 0xf5,
    +	0xec, 0x80, 0xef, 0x5c, 0xc8, 0x73, 0xe5, 0xb0, 0xdf, 0x7f, 0x54, 0xc1, 0xdf, 0xbf, 0x69, 0xc1,
    +	0xa9, 0x54, 0x31, 0xef, 0x03, 0x09, 0x45, 0xb4, 0xbb, 0xd5, 0xf7, 0xdc, 0x79, 0x49, 0x90, 0x7f,
    +	0xc3, 0x55, 0xf1, 0x0d, 0xa7, 0x72, 0xf1, 0x92, 0x5d, 0xff, 0xd2, 0xdf, 0x94, 0x26, 0x59, 0x03,
    +	0x26, 0x22, 0xce, 0xef, 0x3a, 0x6a, 0xc2, 0xb9, 0x6a, 0x2b, 0x08, 0xe2, 0xc5, 0x9a, 0xb1, 0x39,
    +	0xf9, 0x5b, 0xef, 0xf1, 0xfd, 0xbd, 0xd2, 0xb9, 0xf9, 0x0e, 0xb8, 0xb8, 0x23, 0x35, 0xe4, 0x01,
    +	0x6a, 0xa4, 0xec, 0xeb, 0xd8, 0x01, 0x90, 0x23, 0x87, 0x49, 0x5b, 0xe3, 0x71, 0x4b, 0xd9, 0x0c,
    +	0x2b, 0xbd, 0x0c, 0xca, 0x47, 0x2b, 0x3d, 0xf9, 0xce, 0xc4, 0xa5, 0x9f, 0xbe, 0x0e, 0x67, 0xdb,
    +	0x2f, 0xa6, 0x43, 0x85, 0x72, 0xf8, 0x4b, 0x0b, 0xce, 0xb4, 0x8d, 0x17, 0xf6, 0x5d, 0xf8, 0x58,
    +	0xb0, 0x3f, 0x6f, 0xc1, 0xa3, 0x99, 0x35, 0x92, 0x4e, 0x78, 0x55, 0x5a, 0xa8, 0x99, 0xa3, 0xc6,
    +	0x91, 0x73, 0x24, 0x00, 0xc7, 0x38, 0x86, 0xc5, 0x66, 0xa1, 0xa3, 0xc5, 0xe6, 0x1f, 0x59, 0x90,
    +	0xba, 0xea, 0x8f, 0x80, 0xf3, 0x5c, 0x36, 0x39, 0xcf, 0xc7, 0xbb, 0x19, 0xcd, 0x1c, 0xa6, 0xf3,
    +	0x1f, 0xc7, 0xe0, 0x44, 0x8e, 0x27, 0xf6, 0x0e, 0x4c, 0x6c, 0x56, 0x89, 0x19, 0x7a, 0xa3, 0x5d,
    +	0x48, 0xba, 0xb6, 0x71, 0x3a, 0xe6, 0x8e, 0xef, 0xef, 0x95, 0x26, 0x52, 0x28, 0x38, 0xdd, 0x04,
    +	0xfa, 0xbc, 0x05, 0xc7, 0x9c, 0x3b, 0xe1, 0x22, 0x7d, 0x41, 0xb8, 0xd5, 0xb9, 0xba, 0x5f, 0xdd,
    +	0xa6, 0x8c, 0x99, 0xdc, 0x56, 0x2f, 0x66, 0x0a, 0xa3, 0x6f, 0x55, 0x52, 0xf8, 0x46, 0xf3, 0x53,
    +	0xfb, 0x7b, 0xa5, 0x63, 0x59, 0x58, 0x38, 0xb3, 0x2d, 0x84, 0x45, 0xc6, 0x2f, 0x27, 0xda, 0x6a,
    +	0x17, 0x1c, 0x26, 0xcb, 0x65, 0x9e, 0xb3, 0xc4, 0x12, 0x82, 0x15, 0x1d, 0xf4, 0x19, 0x18, 0xdc,
    +	0x94, 0x71, 0x20, 0x32, 0x58, 0xee, 0x78, 0x20, 0xdb, 0x47, 0xc7, 0xe0, 0x26, 0x30, 0x0a, 0x09,
    +	0xc7, 0x44, 0xd1, 0xeb, 0x50, 0xf4, 0x36, 0x42, 0x11, 0xa2, 0x2e, 0xdb, 0x12, 0xd7, 0xb4, 0x75,
    +	0xe6, 0x21, 0x98, 0x56, 0x97, 0x2a, 0x98, 0x56, 0x44, 0x57, 0xa1, 0x18, 0xdc, 0xae, 0x09, 0x4d,
    +	0x4a, 0xe6, 0x26, 0xc5, 0x73, 0x0b, 0x39, 0xbd, 0x62, 0x94, 0xf0, 0xdc, 0x02, 0xa6, 0x24, 0x50,
    +	0x19, 0x7a, 0x99, 0xfb, 0xb2, 0x60, 0x6d, 0x33, 0x9f, 0xf2, 0x6d, 0xc2, 0x00, 0x70, 0x8f, 0x44,
    +	0x86, 0x80, 0x39, 0x21, 0xb4, 0x06, 0x7d, 0x55, 0xd7, 0xab, 0x91, 0x40, 0xf0, 0xb2, 0x1f, 0xce,
    +	0xd4, 0x99, 0x30, 0x8c, 0x1c, 0x9a, 0x5c, 0x85, 0xc0, 0x30, 0xb0, 0xa0, 0xc5, 0xa8, 0x92, 0xe6,
    +	0xd6, 0x86, 0xbc, 0xb1, 0xb2, 0xa9, 0x92, 0xe6, 0xd6, 0x52, 0xa5, 0x2d, 0x55, 0x86, 0x81, 0x05,
    +	0x2d, 0xf4, 0x0a, 0x14, 0x36, 0xaa, 0xc2, 0x35, 0x39, 0x53, 0x79, 0x62, 0x46, 0xd1, 0x9a, 0xeb,
    +	0xdb, 0xdf, 0x2b, 0x15, 0x96, 0xe6, 0x71, 0x61, 0xa3, 0x8a, 0x56, 0xa1, 0x7f, 0x83, 0xc7, 0xdd,
    +	0x11, 0xfa, 0x91, 0x27, 0xb3, 0x43, 0x02, 0xa5, 0x42, 0xf3, 0x70, 0xef, 0x52, 0x01, 0xc0, 0x92,
    +	0x08, 0x4b, 0x40, 0xa5, 0xe2, 0x07, 0x89, 0xf0, 0xa5, 0x33, 0x87, 0x8b, 0xf9, 0xc4, 0x9f, 0x1a,
    +	0x71, 0x14, 0x22, 0xac, 0x51, 0xa4, 0xab, 0xda, 0xb9, 0xd7, 0x0a, 0x58, 0x6e, 0x0b, 0xa1, 0x1a,
    +	0xc9, 0x5c, 0xd5, 0xb3, 0x12, 0xa9, 0xdd, 0xaa, 0x56, 0x48, 0x38, 0x26, 0x8a, 0xb6, 0x61, 0x64,
    +	0x27, 0x6c, 0x6e, 0x11, 0xb9, 0xa5, 0x59, 0xd8, 0xbb, 0x1c, 0x6e, 0xf6, 0xa6, 0x40, 0x74, 0x83,
    +	0xa8, 0xe5, 0xd4, 0x53, 0xa7, 0x10, 0x7b, 0xd6, 0xdc, 0xd4, 0x89, 0x61, 0x93, 0x36, 0x1d, 0xfe,
    +	0x77, 0x5b, 0xfe, 0xed, 0xdd, 0x88, 0x88, 0xa8, 0xa3, 0x99, 0xc3, 0xff, 0x16, 0x47, 0x49, 0x0f,
    +	0xbf, 0x00, 0x60, 0x49, 0x04, 0xdd, 0x14, 0xc3, 0xc3, 0x4e, 0xcf, 0xf1, 0xfc, 0x90, 0xe6, 0xb3,
    +	0x12, 0x29, 0x67, 0x50, 0xd8, 0x69, 0x19, 0x93, 0x62, 0xa7, 0x64, 0x73, 0xcb, 0x8f, 0x7c, 0x2f,
    +	0x71, 0x42, 0x4f, 0xe4, 0x9f, 0x92, 0xe5, 0x0c, 0xfc, 0xf4, 0x29, 0x99, 0x85, 0x85, 0x33, 0xdb,
    +	0x42, 0x35, 0x18, 0x6d, 0xfa, 0x41, 0x74, 0xc7, 0x0f, 0xe4, 0xfa, 0x42, 0x6d, 0x04, 0xa5, 0x06,
    +	0xa6, 0x68, 0x91, 0x19, 0xe6, 0x98, 0x10, 0x9c, 0xa0, 0x89, 0x3e, 0x0e, 0xfd, 0x61, 0xd5, 0xa9,
    +	0x93, 0xe5, 0x1b, 0x53, 0x93, 0xf9, 0xd7, 0x4f, 0x85, 0xa3, 0xe4, 0xac, 0x2e, 0x1e, 0x36, 0x89,
    +	0xa3, 0x60, 0x49, 0x0e, 0x2d, 0x41, 0x2f, 0x4b, 0xec, 0xcc, 0x42, 0xe4, 0xe6, 0x44, 0x66, 0x4f,
    +	0xb9, 0xd5, 0xf0, 0xb3, 0x89, 0x15, 0x63, 0x5e, 0x9d, 0xee, 0x01, 0x21, 0x29, 0xf0, 0xc3, 0xa9,
    +	0xe3, 0xf9, 0x7b, 0x40, 0x08, 0x18, 0x6e, 0x54, 0xda, 0xed, 0x01, 0x85, 0x84, 0x63, 0xa2, 0xf4,
    +	0x64, 0xa6, 0xa7, 0xe9, 0x89, 0x36, 0x26, 0x93, 0xb9, 0x67, 0x29, 0x3b, 0x99, 0xe9, 0x49, 0x4a,
    +	0x49, 0xd8, 0x7f, 0x30, 0x90, 0xe6, 0x59, 0x98, 0x84, 0xe9, 0x3f, 0xb7, 0x52, 0x36, 0x13, 0x1f,
    +	0xe9, 0x56, 0xe0, 0xfd, 0x00, 0x1f, 0xae, 0x9f, 0xb7, 0xe0, 0x44, 0x33, 0xf3, 0x43, 0x04, 0x03,
    +	0xd0, 0x9d, 0xdc, 0x9c, 0x7f, 0xba, 0x0a, 0xa7, 0x9c, 0x0d, 0xc7, 0x39, 0x2d, 0x25, 0x85, 0x03,
    +	0xc5, 0xf7, 0x2c, 0x1c, 0x58, 0x81, 0x81, 0x2a, 0x7f, 0xc9, 0xc9, 0x34, 0x00, 0x5d, 0x05, 0x03,
    +	0x65, 0xac, 0x84, 0x78, 0x02, 0x6e, 0x60, 0x45, 0x02, 0xfd, 0xa4, 0x05, 0x67, 0x92, 0x5d, 0xc7,
    +	0x84, 0x81, 0x85, 0xc1, 0x24, 0x17, 0x6b, 0x2d, 0x89, 0xef, 0x4f, 0xf1, 0xff, 0x06, 0xf2, 0x41,
    +	0x27, 0x04, 0xdc, 0xbe, 0x31, 0xb4, 0x90, 0x21, 0x57, 0xeb, 0x33, 0x35, 0x8a, 0x5d, 0xc8, 0xd6,
    +	0x5e, 0x84, 0xe1, 0x86, 0xdf, 0xf2, 0x22, 0x61, 0xf7, 0x28, 0x8c, 0xa7, 0x98, 0xd1, 0xd0, 0x8a,
    +	0x56, 0x8e, 0x0d, 0xac, 0x84, 0x44, 0x6e, 0xe0, 0xbe, 0x25, 0x72, 0xef, 0xc0, 0xb0, 0xa7, 0xb9,
    +	0x04, 0xb4, 0x7b, 0xc1, 0x0a, 0xe9, 0xa2, 0x86, 0xcd, 0x7b, 0xa9, 0x97, 0x60, 0x83, 0x5a, 0x7b,
    +	0x69, 0x19, 0xbc, 0x37, 0x69, 0xd9, 0x91, 0x3e, 0x89, 0xed, 0x5f, 0x2f, 0x64, 0xbc, 0x18, 0xb8,
    +	0x54, 0xee, 0x35, 0x53, 0x2a, 0x77, 0x3e, 0x29, 0x95, 0x4b, 0xa9, 0xaa, 0x0c, 0x81, 0x5c, 0xf7,
    +	0x19, 0x25, 0xbb, 0x0e, 0xf0, 0xfc, 0xc3, 0x16, 0x9c, 0x64, 0xba, 0x0f, 0xda, 0xc0, 0x7b, 0xd6,
    +	0x77, 0x30, 0x93, 0xd4, 0xeb, 0xd9, 0xe4, 0x70, 0x5e, 0x3b, 0x76, 0x1d, 0xce, 0x75, 0xba, 0x77,
    +	0x99, 0x85, 0x6f, 0x4d, 0x19, 0x47, 0xc4, 0x16, 0xbe, 0xb5, 0xe5, 0x05, 0xcc, 0x20, 0xdd, 0x86,
    +	0x2f, 0xb4, 0xff, 0x7f, 0x0b, 0x8a, 0x65, 0xbf, 0x76, 0x04, 0x2f, 0xfa, 0x8f, 0x19, 0x2f, 0xfa,
    +	0x47, 0xb2, 0x6f, 0xfc, 0x5a, 0xae, 0xb2, 0x6f, 0x31, 0xa1, 0xec, 0x3b, 0x93, 0x47, 0xa0, 0xbd,
    +	0x6a, 0xef, 0x97, 0x8a, 0x30, 0x54, 0xf6, 0x6b, 0x6a, 0x9f, 0xfd, 0xaf, 0xf7, 0xe3, 0xc8, 0x93,
    +	0x9b, 0x7d, 0x4a, 0xa3, 0xcc, 0x2c, 0x7a, 0x65, 0xdc, 0x89, 0xef, 0x32, 0x7f, 0x9e, 0x5b, 0xc4,
    +	0xdd, 0xdc, 0x8a, 0x48, 0x2d, 0xf9, 0x39, 0x47, 0xe7, 0xcf, 0xf3, 0xed, 0x22, 0x8c, 0x25, 0x5a,
    +	0x47, 0x75, 0x18, 0xa9, 0xeb, 0xaa, 0x24, 0xb1, 0x4e, 0xef, 0x4b, 0x0b, 0x25, 0xfc, 0x21, 0xb4,
    +	0x22, 0x6c, 0x12, 0x47, 0x33, 0x00, 0x9e, 0x6e, 0x15, 0xae, 0x02, 0x15, 0x6b, 0x16, 0xe1, 0x1a,
    +	0x06, 0x7a, 0x09, 0x86, 0x22, 0xbf, 0xe9, 0xd7, 0xfd, 0xcd, 0xdd, 0x6b, 0x44, 0x46, 0xb6, 0x54,
    +	0x46, 0xc3, 0x6b, 0x31, 0x08, 0xeb, 0x78, 0xe8, 0x2e, 0x4c, 0x28, 0x22, 0x95, 0x07, 0xa0, 0x5e,
    +	0x63, 0x62, 0x93, 0xd5, 0x24, 0x45, 0x9c, 0x6e, 0x04, 0xbd, 0x02, 0xa3, 0xcc, 0x7a, 0x99, 0xd5,
    +	0xbf, 0x46, 0x76, 0x65, 0xc4, 0x63, 0xc6, 0x61, 0xaf, 0x18, 0x10, 0x9c, 0xc0, 0x44, 0xf3, 0x30,
    +	0xd1, 0x70, 0xc3, 0x44, 0xf5, 0x3e, 0x56, 0x9d, 0x75, 0x60, 0x25, 0x09, 0xc4, 0x69, 0x7c, 0xfb,
    +	0x57, 0xc5, 0x1c, 0x7b, 0x91, 0xfb, 0xc1, 0x76, 0x7c, 0x7f, 0x6f, 0xc7, 0x6f, 0x59, 0x30, 0x4e,
    +	0x5b, 0x67, 0x26, 0x99, 0x92, 0x91, 0x52, 0x39, 0x31, 0xac, 0x36, 0x39, 0x31, 0xce, 0xd3, 0x63,
    +	0xbb, 0xe6, 0xb7, 0x22, 0x21, 0x1d, 0xd5, 0xce, 0x65, 0x5a, 0x8a, 0x05, 0x54, 0xe0, 0x91, 0x20,
    +	0x10, 0x7e, 0xef, 0x3a, 0x1e, 0x09, 0x02, 0x2c, 0xa0, 0x32, 0x65, 0x46, 0x4f, 0x76, 0xca, 0x0c,
    +	0x1e, 0xf9, 0x5c, 0x58, 0xc1, 0x09, 0x96, 0x56, 0x8b, 0x7c, 0x2e, 0xcd, 0xe3, 0x62, 0x1c, 0xfb,
    +	0xeb, 0x45, 0x18, 0x2e, 0xfb, 0xb5, 0xd8, 0xb0, 0xe3, 0x45, 0xc3, 0xb0, 0xe3, 0x5c, 0xc2, 0xb0,
    +	0x63, 0x5c, 0xc7, 0xfd, 0xc0, 0x8c, 0xe3, 0x3b, 0x65, 0xc6, 0xf1, 0x87, 0x16, 0x9b, 0xb5, 0x85,
    +	0xd5, 0x0a, 0xb7, 0xf0, 0x45, 0x97, 0x60, 0x88, 0x9d, 0x70, 0x2c, 0xd0, 0x82, 0xb4, 0x76, 0x60,
    +	0x29, 0x2c, 0x57, 0xe3, 0x62, 0xac, 0xe3, 0xa0, 0x0b, 0x30, 0x10, 0x12, 0x27, 0xa8, 0x6e, 0xa9,
    +	0xe3, 0x5d, 0x98, 0x26, 0xf0, 0x32, 0xac, 0xa0, 0xe8, 0xad, 0x38, 0xe8, 0x76, 0x31, 0xdf, 0x5c,
    +	0x58, 0xef, 0x0f, 0xdf, 0x22, 0xf9, 0x91, 0xb6, 0xed, 0x5b, 0x80, 0xd2, 0xf8, 0x5d, 0xf8, 0x5f,
    +	0x95, 0xcc, 0xb0, 0xb0, 0x83, 0xa9, 0x90, 0xb0, 0xff, 0x62, 0xc1, 0x68, 0xd9, 0xaf, 0xd1, 0xad,
    +	0xfb, 0xbd, 0xb4, 0x4f, 0xf5, 0x8c, 0x03, 0x7d, 0x6d, 0x32, 0x0e, 0x3c, 0x06, 0xbd, 0x65, 0xbf,
    +	0xd6, 0x21, 0x74, 0xed, 0x7f, 0x63, 0x41, 0x7f, 0xd9, 0xaf, 0x1d, 0x81, 0xe2, 0xe5, 0x35, 0x53,
    +	0xf1, 0x72, 0x32, 0x67, 0xdd, 0xe4, 0xe8, 0x5a, 0xfe, 0xa4, 0x07, 0x46, 0x68, 0x3f, 0xfd, 0x4d,
    +	0x39, 0x95, 0xc6, 0xb0, 0x59, 0x5d, 0x0c, 0x1b, 0x7d, 0x06, 0xf8, 0xf5, 0xba, 0x7f, 0x27, 0x39,
    +	0xad, 0x4b, 0xac, 0x14, 0x0b, 0x28, 0x7a, 0x16, 0x06, 0x9a, 0x01, 0xd9, 0x71, 0x7d, 0xc1, 0x5f,
    +	0x6b, 0x6a, 0xac, 0xb2, 0x28, 0xc7, 0x0a, 0x83, 0x3e, 0xbc, 0x43, 0xd7, 0xa3, 0xbc, 0x44, 0xd5,
    +	0xf7, 0x6a, 0x5c, 0x37, 0x51, 0x14, 0x69, 0xb1, 0xb4, 0x72, 0x6c, 0x60, 0xa1, 0x5b, 0x30, 0xc8,
    +	0xfe, 0xb3, 0x63, 0xa7, 0xf7, 0xd0, 0xc7, 0x8e, 0x48, 0x14, 0x2c, 0x08, 0xe0, 0x98, 0x16, 0x7a,
    +	0x1e, 0x20, 0x92, 0xa9, 0x65, 0x42, 0x11, 0xc2, 0x54, 0xbd, 0x45, 0x54, 0xd2, 0x99, 0x10, 0x6b,
    +	0x58, 0xe8, 0x19, 0x18, 0x8c, 0x1c, 0xb7, 0x7e, 0xdd, 0xf5, 0x98, 0xfe, 0x9e, 0xf6, 0x5f, 0xe4,
    +	0xeb, 0x15, 0x85, 0x38, 0x86, 0x53, 0x5e, 0x90, 0xc5, 0x84, 0x9a, 0xdb, 0x8d, 0x44, 0x6a, 0xba,
    +	0x22, 0xe7, 0x05, 0xaf, 0xab, 0x52, 0xac, 0x61, 0xa0, 0x2d, 0x38, 0xed, 0x7a, 0x2c, 0x85, 0x14,
    +	0xa9, 0x6c, 0xbb, 0xcd, 0xb5, 0xeb, 0x95, 0x9b, 0x24, 0x70, 0x37, 0x76, 0xe7, 0x9c, 0xea, 0x36,
    +	0xf1, 0x64, 0x42, 0xfc, 0xc7, 0x45, 0x17, 0x4f, 0x2f, 0xb7, 0xc1, 0xc5, 0x6d, 0x29, 0x21, 0x9b,
    +	0x6e, 0xc7, 0x80, 0x38, 0x0d, 0x21, 0x13, 0xe0, 0xe9, 0x67, 0x58, 0x09, 0x16, 0x10, 0xfb, 0x05,
    +	0xb6, 0x27, 0x6e, 0x54, 0xd0, 0xd3, 0xc6, 0xf1, 0x72, 0x42, 0x3f, 0x5e, 0x0e, 0xf6, 0x4a, 0x7d,
    +	0x37, 0x2a, 0x5a, 0x7c, 0xa0, 0xcb, 0x70, 0xbc, 0xec, 0xd7, 0xca, 0x7e, 0x10, 0x2d, 0xf9, 0xc1,
    +	0x1d, 0x27, 0xa8, 0xc9, 0x25, 0x58, 0x92, 0x11, 0x92, 0xe8, 0x19, 0xdb, 0xcb, 0x4f, 0x20, 0x23,
    +	0xfa, 0xd1, 0x0b, 0x8c, 0xab, 0x3b, 0xa4, 0x43, 0x6a, 0x95, 0xf1, 0x17, 0x2a, 0x51, 0xdb, 0x15,
    +	0x27, 0x22, 0xe8, 0x06, 0x8c, 0x54, 0xf5, 0xab, 0x56, 0x54, 0x7f, 0x4a, 0x5e, 0x76, 0xc6, 0x3d,
    +	0x9c, 0x79, 0x37, 0x9b, 0xf5, 0xed, 0x6f, 0x5a, 0xa2, 0x15, 0x2e, 0xad, 0xe0, 0x76, 0xaf, 0x9d,
    +	0xcf, 0xdc, 0x79, 0x98, 0x08, 0xf4, 0x2a, 0x9a, 0xfd, 0xd8, 0x71, 0x9e, 0xf9, 0x26, 0x01, 0xc4,
    +	0x69, 0x7c, 0xf4, 0x49, 0x38, 0x65, 0x14, 0x4a, 0x55, 0xba, 0x96, 0x7f, 0x9a, 0xc9, 0x73, 0x70,
    +	0x1e, 0x12, 0xce, 0xaf, 0x6f, 0xff, 0x20, 0x9c, 0x48, 0x7e, 0x97, 0x90, 0xb0, 0xdc, 0xe7, 0xd7,
    +	0x15, 0x0e, 0xf7, 0x75, 0xf6, 0x4b, 0x30, 0x41, 0x9f, 0xde, 0x8a, 0x8d, 0x64, 0xf3, 0xd7, 0x39,
    +	0x08, 0xd5, 0x6f, 0x0e, 0xb0, 0x6b, 0x30, 0x91, 0x7d, 0x0d, 0x7d, 0x1a, 0x46, 0x43, 0xc2, 0x22,
    +	0xaf, 0x49, 0xc9, 0x5e, 0x1b, 0x6f, 0xf2, 0xca, 0xa2, 0x8e, 0xc9, 0x5f, 0x2f, 0x66, 0x19, 0x4e,
    +	0x50, 0x43, 0x0d, 0x18, 0xbd, 0xe3, 0x7a, 0x35, 0xff, 0x4e, 0x28, 0xe9, 0x0f, 0xe4, 0xab, 0x09,
    +	0x6e, 0x71, 0xcc, 0x44, 0x1f, 0x8d, 0xe6, 0x6e, 0x19, 0xc4, 0x70, 0x82, 0x38, 0x3d, 0x6a, 0x82,
    +	0x96, 0x37, 0x1b, 0xae, 0x87, 0x24, 0x10, 0x71, 0xe1, 0xd8, 0x51, 0x83, 0x65, 0x21, 0x8e, 0xe1,
    +	0xf4, 0xa8, 0x61, 0x7f, 0x98, 0x3b, 0x3a, 0x3b, 0xcb, 0xc4, 0x51, 0x83, 0x55, 0x29, 0xd6, 0x30,
    +	0xe8, 0x51, 0xcc, 0xfe, 0xad, 0xfa, 0x1e, 0xf6, 0xfd, 0x48, 0x1e, 0xde, 0x2c, 0x55, 0xa5, 0x56,
    +	0x8e, 0x0d, 0xac, 0x9c, 0x28, 0x74, 0x3d, 0x87, 0x8d, 0x42, 0x87, 0xa2, 0x36, 0x1e, 0xf8, 0x3c,
    +	0x1a, 0xf2, 0xe5, 0x76, 0x1e, 0xf8, 0x07, 0xf7, 0xe5, 0x9d, 0x4f, 0x79, 0x81, 0x0d, 0x31, 0x40,
    +	0xbd, 0x3c, 0xcc, 0x1e, 0x53, 0x64, 0x56, 0xf8, 0xe8, 0x48, 0x18, 0x5a, 0x84, 0xfe, 0x70, 0x37,
    +	0xac, 0x46, 0xf5, 0xb0, 0x5d, 0x3a, 0xd2, 0x0a, 0x43, 0xd1, 0xb2, 0x61, 0xf3, 0x2a, 0x58, 0xd6,
    +	0x45, 0x55, 0x98, 0x14, 0x14, 0xe7, 0xb7, 0x1c, 0x4f, 0x25, 0x49, 0xe4, 0x16, 0x8b, 0x97, 0xf6,
    +	0xf7, 0x4a, 0x93, 0xa2, 0x65, 0x1d, 0x7c, 0xb0, 0x57, 0xa2, 0x5b, 0x32, 0x03, 0x82, 0xb3, 0xa8,
    +	0xf1, 0x25, 0x5f, 0xad, 0xfa, 0x8d, 0x66, 0x39, 0xf0, 0x37, 0xdc, 0x3a, 0x69, 0xa7, 0x0c, 0xae,
    +	0x18, 0x98, 0x62, 0xc9, 0x1b, 0x65, 0x38, 0x41, 0x0d, 0xdd, 0x86, 0x31, 0xa7, 0xd9, 0x9c, 0x0d,
    +	0x1a, 0x7e, 0x20, 0x1b, 0x18, 0xca, 0xd7, 0x2a, 0xcc, 0x9a, 0xa8, 0x3c, 0x47, 0x62, 0xa2, 0x10,
    +	0x27, 0x09, 0xd2, 0x81, 0x12, 0x1b, 0xcd, 0x18, 0xa8, 0x91, 0x78, 0xa0, 0xc4, 0xbe, 0xcc, 0x18,
    +	0xa8, 0x0c, 0x08, 0xce, 0xa2, 0x66, 0xff, 0x00, 0x63, 0xfc, 0x2b, 0xee, 0xa6, 0xc7, 0x9c, 0xe3,
    +	0x50, 0x03, 0x46, 0x9a, 0xec, 0xd8, 0x17, 0xf9, 0xcb, 0xc4, 0x51, 0xf1, 0x62, 0x97, 0xc2, 0xcb,
    +	0x3b, 0x2c, 0x03, 0xab, 0x61, 0xc4, 0x5a, 0xd6, 0xc9, 0x61, 0x93, 0xba, 0xfd, 0x8b, 0xd3, 0x8c,
    +	0x75, 0xac, 0x70, 0x89, 0x64, 0xbf, 0x70, 0x55, 0x14, 0x32, 0x88, 0xe9, 0x7c, 0xd9, 0x7f, 0xbc,
    +	0xbe, 0x84, 0xbb, 0x23, 0x96, 0x75, 0xd1, 0xa7, 0x60, 0x94, 0x3e, 0xe9, 0x15, 0xfb, 0x16, 0x4e,
    +	0x1d, 0xcb, 0x8f, 0x81, 0xa5, 0xb0, 0xf4, 0xdc, 0x86, 0x7a, 0x65, 0x9c, 0x20, 0x86, 0xde, 0x62,
    +	0x76, 0x9d, 0x92, 0x74, 0xa1, 0x1b, 0xd2, 0xba, 0x09, 0xa7, 0x24, 0xab, 0x11, 0x41, 0x2d, 0x98,
    +	0x4c, 0x67, 0x70, 0x0e, 0xa7, 0xec, 0xfc, 0xb7, 0x51, 0x3a, 0x09, 0x73, 0x9c, 0x84, 0x2e, 0x0d,
    +	0x0b, 0x71, 0x16, 0x7d, 0x74, 0x3d, 0x99, 0x5f, 0xb7, 0x68, 0x68, 0x0d, 0x52, 0x39, 0x76, 0x47,
    +	0xda, 0xa6, 0xd6, 0xdd, 0x84, 0x33, 0x5a, 0x8a, 0xd2, 0x2b, 0x81, 0xc3, 0xec, 0x8a, 0x5c, 0x76,
    +	0x1b, 0x69, 0x4c, 0xed, 0xa3, 0xfb, 0x7b, 0xa5, 0x33, 0x6b, 0xed, 0x10, 0x71, 0x7b, 0x3a, 0xe8,
    +	0x06, 0x1c, 0xe7, 0x11, 0x5c, 0x16, 0x88, 0x53, 0xab, 0xbb, 0x9e, 0xe2, 0x9a, 0xf9, 0xd9, 0x75,
    +	0x6a, 0x7f, 0xaf, 0x74, 0x7c, 0x36, 0x0b, 0x01, 0x67, 0xd7, 0x43, 0xaf, 0xc1, 0x60, 0xcd, 0x93,
    +	0xa7, 0x6c, 0x9f, 0x91, 0x05, 0x76, 0x70, 0x61, 0xb5, 0xa2, 0xbe, 0x3f, 0xfe, 0x83, 0xe3, 0x0a,
    +	0x68, 0x93, 0xab, 0xad, 0x94, 0xac, 0xb1, 0x3f, 0x15, 0xd8, 0x33, 0x29, 0x8e, 0x37, 0x42, 0x22,
    +	0x70, 0x7d, 0xad, 0x72, 0xb9, 0x33, 0xa2, 0x25, 0x18, 0x84, 0xd1, 0x9b, 0x80, 0x44, 0xb6, 0xa1,
    +	0xd9, 0x2a, 0x4b, 0x8e, 0xa7, 0xd9, 0x92, 0x2a, 0x11, 0x42, 0x25, 0x85, 0x81, 0x33, 0x6a, 0xa1,
    +	0xab, 0xf4, 0x78, 0xd4, 0x4b, 0xc5, 0xf1, 0xab, 0x72, 0x8d, 0x2f, 0x90, 0x66, 0x40, 0x98, 0xf9,
    +	0xa3, 0x49, 0x11, 0x27, 0xea, 0xa1, 0x1a, 0x9c, 0x76, 0x5a, 0x91, 0xcf, 0x34, 0x82, 0x26, 0xea,
    +	0x9a, 0xbf, 0x4d, 0x3c, 0xa6, 0x8c, 0x1f, 0x60, 0x01, 0x43, 0x4f, 0xcf, 0xb6, 0xc1, 0xc3, 0x6d,
    +	0xa9, 0xd0, 0xe7, 0x14, 0x1d, 0x0b, 0x4d, 0x59, 0x67, 0x78, 0x77, 0x73, 0x0d, 0xb6, 0xc4, 0x40,
    +	0x2f, 0xc1, 0xd0, 0x96, 0x1f, 0x46, 0xab, 0x24, 0xba, 0xe3, 0x07, 0xdb, 0x22, 0xbd, 0x41, 0x9c,
    +	0x52, 0x26, 0x06, 0x61, 0x1d, 0x0f, 0x3d, 0x05, 0xfd, 0xcc, 0x54, 0x6c, 0x79, 0x81, 0xdd, 0xb5,
    +	0x03, 0xf1, 0x19, 0x73, 0x95, 0x17, 0x63, 0x09, 0x97, 0xa8, 0xcb, 0xe5, 0x79, 0x76, 0x1c, 0x27,
    +	0x50, 0x97, 0xcb, 0xf3, 0x58, 0xc2, 0xe9, 0x72, 0x0d, 0xb7, 0x9c, 0x80, 0x94, 0x03, 0xbf, 0x4a,
    +	0x42, 0x2d, 0x91, 0xd1, 0x23, 0x3c, 0x79, 0x03, 0x5d, 0xae, 0x95, 0x2c, 0x04, 0x9c, 0x5d, 0x0f,
    +	0x91, 0x74, 0x7a, 0xde, 0xd1, 0x7c, 0x55, 0x69, 0x9a, 0x1d, 0xec, 0x32, 0x43, 0xaf, 0x07, 0xe3,
    +	0x2a, 0x31, 0x30, 0x4f, 0xd7, 0x10, 0x4e, 0x8d, 0xb1, 0xb5, 0xdd, 0x7d, 0xae, 0x07, 0xa5, 0x7c,
    +	0x5e, 0x4e, 0x50, 0xc2, 0x29, 0xda, 0x46, 0x44, 0xda, 0xf1, 0x8e, 0x11, 0x69, 0x2f, 0xc2, 0x60,
    +	0xd8, 0xba, 0x5d, 0xf3, 0x1b, 0x8e, 0xeb, 0x31, 0x8b, 0x1b, 0xed, 0xe1, 0x5e, 0x91, 0x00, 0x1c,
    +	0xe3, 0xa0, 0x25, 0x18, 0x70, 0xa4, 0x66, 0x19, 0xe5, 0x07, 0xdb, 0x53, 0xfa, 0x64, 0x1e, 0x7f,
    +	0x4a, 0xea, 0x92, 0x55, 0x5d, 0xf4, 0x2a, 0x8c, 0x88, 0x80, 0x1e, 0x22, 0x97, 0xfe, 0xa4, 0xe9,
    +	0xbe, 0x5c, 0xd1, 0x81, 0xd8, 0xc4, 0x45, 0xeb, 0x30, 0x14, 0xf9, 0x75, 0xe6, 0x83, 0x4b, 0xb9,
    +	0xe4, 0x13, 0xf9, 0x31, 0x71, 0xd7, 0x14, 0x9a, 0xae, 0xf3, 0x50, 0x55, 0xb1, 0x4e, 0x07, 0xad,
    +	0xf1, 0xf5, 0xce, 0xd2, 0x16, 0x91, 0x50, 0x24, 0x63, 0x3f, 0x93, 0x67, 0x2e, 0xc9, 0xd0, 0xcc,
    +	0xed, 0x20, 0x6a, 0x62, 0x9d, 0x0c, 0xba, 0x02, 0x13, 0xcd, 0xc0, 0xf5, 0xd9, 0x9a, 0x50, 0x9a,
    +	0xf2, 0x29, 0x33, 0x49, 0x69, 0x39, 0x89, 0x80, 0xd3, 0x75, 0x58, 0x3c, 0x16, 0x51, 0x38, 0x75,
    +	0x8a, 0x27, 0x5a, 0xe3, 0x72, 0x10, 0x5e, 0x86, 0x15, 0x14, 0xad, 0xb0, 0x93, 0x98, 0x8b, 0xf0,
    +	0xa6, 0xa6, 0xf3, 0xbd, 0xfc, 0x75, 0x51, 0x1f, 0xe7, 0xfd, 0xd5, 0x5f, 0x1c, 0x53, 0x40, 0x35,
    +	0x2d, 0xbf, 0x39, 0x7d, 0x41, 0x85, 0x53, 0xa7, 0xdb, 0xd8, 0xeb, 0x26, 0x9e, 0xcb, 0x31, 0x43,
    +	0x60, 0x14, 0x87, 0x38, 0x41, 0x13, 0xbd, 0x01, 0xe3, 0x22, 0x58, 0x41, 0x3c, 0x4c, 0x67, 0x62,
    +	0x9f, 0x26, 0x9c, 0x80, 0xe1, 0x14, 0x36, 0x4f, 0x74, 0xe6, 0xdc, 0xae, 0x13, 0x71, 0xf4, 0x5d,
    +	0x77, 0xbd, 0xed, 0x70, 0xea, 0x2c, 0x3b, 0x1f, 0x44, 0xa2, 0xb3, 0x24, 0x14, 0x67, 0xd4, 0x40,
    +	0x6b, 0x30, 0xde, 0x0c, 0x08, 0x69, 0xb0, 0x77, 0x92, 0xb8, 0xcf, 0x4a, 0x3c, 0x1c, 0x11, 0xed,
    +	0x49, 0x39, 0x01, 0x3b, 0xc8, 0x28, 0xc3, 0x29, 0x0a, 0xe8, 0x0e, 0x0c, 0xf8, 0x3b, 0x24, 0xd8,
    +	0x22, 0x4e, 0x6d, 0xea, 0x5c, 0x1b, 0x4f, 0x3b, 0x71, 0xb9, 0xdd, 0x10, 0xb8, 0x09, 0x43, 0x24,
    +	0x59, 0xdc, 0xd9, 0x10, 0x49, 0x36, 0x86, 0xfe, 0x0b, 0x0b, 0x4e, 0x49, 0xd5, 0x5e, 0xa5, 0x49,
    +	0x47, 0x7d, 0xde, 0xf7, 0xc2, 0x28, 0xe0, 0x01, 0x74, 0x1e, 0xcd, 0x0f, 0x2a, 0xb3, 0x96, 0x53,
    +	0x49, 0x69, 0x11, 0x4e, 0xe5, 0x61, 0x84, 0x38, 0xbf, 0x45, 0xfa, 0xb2, 0x0f, 0x49, 0x24, 0x0f,
    +	0xa3, 0xd9, 0x70, 0xe9, 0xad, 0x85, 0xd5, 0xa9, 0xc7, 0x78, 0xf4, 0x1f, 0xba, 0x19, 0x2a, 0x49,
    +	0x20, 0x4e, 0xe3, 0xa3, 0x4b, 0x50, 0xf0, 0xc3, 0xa9, 0xc7, 0xdb, 0xa4, 0xc4, 0xf7, 0x6b, 0x37,
    +	0x2a, 0xdc, 0x20, 0xf5, 0x46, 0x05, 0x17, 0xfc, 0x50, 0x26, 0x1b, 0xa3, 0xcf, 0xd9, 0x70, 0xea,
    +	0x09, 0x2e, 0x73, 0x96, 0xc9, 0xc6, 0x58, 0x21, 0x8e, 0xe1, 0x68, 0x0b, 0xc6, 0x42, 0x43, 0x6c,
    +	0x10, 0x4e, 0x9d, 0x67, 0x23, 0xf5, 0x44, 0xde, 0xa4, 0x19, 0xd8, 0x5a, 0x16, 0x20, 0x93, 0x0a,
    +	0x4e, 0x92, 0xe5, 0xbb, 0x4b, 0x13, 0x5c, 0x84, 0x53, 0x4f, 0x76, 0xd8, 0x5d, 0x1a, 0xb2, 0xbe,
    +	0xbb, 0x74, 0x1a, 0x38, 0x41, 0x13, 0xad, 0xeb, 0x6e, 0x8c, 0x17, 0xf2, 0x8d, 0x1b, 0x33, 0x1d,
    +	0x18, 0x47, 0xf2, 0x9c, 0x17, 0xa7, 0xbf, 0x0f, 0x26, 0x52, 0x5c, 0xd8, 0x61, 0x7c, 0x3a, 0xa6,
    +	0xb7, 0x61, 0xc4, 0x58, 0xe9, 0x0f, 0xd5, 0xe4, 0xe7, 0xcf, 0x06, 0x61, 0x50, 0x99, 0x62, 0xa0,
    +	0x8b, 0xa6, 0x95, 0xcf, 0xa9, 0xa4, 0x95, 0xcf, 0x40, 0xd9, 0xaf, 0x19, 0x86, 0x3d, 0x6b, 0x19,
    +	0xb1, 0x72, 0xf3, 0xce, 0xd5, 0xee, 0x1d, 0xcf, 0x34, 0xf5, 0x52, 0xb1, 0x6b, 0x73, 0xa1, 0x9e,
    +	0xb6, 0x1a, 0xab, 0x2b, 0x30, 0xe1, 0xf9, 0x8c, 0xf5, 0x27, 0x35, 0xc9, 0xd7, 0x31, 0xf6, 0x6d,
    +	0x50, 0x8f, 0xe5, 0x96, 0x40, 0xc0, 0xe9, 0x3a, 0xb4, 0x41, 0xce, 0x7f, 0x25, 0x55, 0x64, 0x9c,
    +	0x3d, 0xc3, 0x02, 0x4a, 0x9f, 0x9c, 0xfc, 0x57, 0x38, 0x35, 0x9e, 0xff, 0xe4, 0xe4, 0x95, 0x92,
    +	0x3c, 0x5e, 0x28, 0x79, 0x3c, 0xa6, 0x11, 0x6a, 0xfa, 0xb5, 0xe5, 0xb2, 0x78, 0x3d, 0x68, 0x51,
    +	0xec, 0x6b, 0xcb, 0x65, 0xcc, 0x61, 0x68, 0x16, 0xfa, 0xd8, 0x0f, 0x19, 0x23, 0x27, 0x6f, 0xf7,
    +	0x2f, 0x97, 0xb5, 0x1c, 0xaa, 0xac, 0x02, 0x16, 0x15, 0x99, 0xc4, 0x9f, 0x3e, 0xb9, 0x98, 0xc4,
    +	0xbf, 0xff, 0x3e, 0x25, 0xfe, 0x92, 0x00, 0x8e, 0x69, 0xa1, 0xbb, 0x70, 0xdc, 0x78, 0xe6, 0x2a,
    +	0x4f, 0x3c, 0xc8, 0x37, 0x06, 0x48, 0x20, 0xcf, 0x9d, 0x11, 0x9d, 0x3e, 0xbe, 0x9c, 0x45, 0x09,
    +	0x67, 0x37, 0x80, 0xea, 0x30, 0x51, 0x4d, 0xb5, 0x3a, 0xd0, 0x7d, 0xab, 0x6a, 0x5d, 0xa4, 0x5b,
    +	0x4c, 0x13, 0x46, 0xaf, 0xc2, 0xc0, 0xbb, 0x3e, 0x37, 0xdc, 0x13, 0x2f, 0x1e, 0x19, 0x05, 0x66,
    +	0xe0, 0xad, 0x1b, 0x15, 0x56, 0x7e, 0xb0, 0x57, 0x1a, 0x2a, 0xfb, 0x35, 0xf9, 0x17, 0xab, 0x0a,
    +	0xe8, 0xc7, 0x2c, 0x98, 0x4e, 0xbf, 0xa3, 0x55, 0xa7, 0x47, 0xba, 0xef, 0xb4, 0x2d, 0x1a, 0x9d,
    +	0x5e, 0xcc, 0x25, 0x87, 0xdb, 0x34, 0x85, 0x3e, 0x4a, 0xf7, 0x53, 0xe8, 0xde, 0x23, 0x22, 0x01,
    +	0xfd, 0xa3, 0xf1, 0x7e, 0xa2, 0xa5, 0x07, 0x7b, 0xa5, 0x31, 0x7e, 0xe0, 0xba, 0xf7, 0x54, 0xbc,
    +	0x7d, 0x5e, 0x01, 0xfd, 0x20, 0x1c, 0x0f, 0xd2, 0x72, 0x6d, 0x22, 0x79, 0xfb, 0xa7, 0xbb, 0x39,
    +	0xbc, 0x93, 0x13, 0x8e, 0xb3, 0x08, 0xe2, 0xec, 0x76, 0xec, 0xdf, 0xb3, 0x98, 0x3e, 0x43, 0x74,
    +	0x8b, 0x84, 0xad, 0x7a, 0x74, 0x04, 0xc6, 0x72, 0x8b, 0x86, 0x3d, 0xc1, 0x7d, 0x5b, 0xbb, 0xfd,
    +	0x2f, 0x16, 0xb3, 0x76, 0x3b, 0x42, 0xbf, 0xbd, 0xb7, 0x60, 0x20, 0x12, 0xad, 0x89, 0xae, 0xe7,
    +	0x59, 0xe6, 0xc8, 0x4e, 0x31, 0x8b, 0x3f, 0xf5, 0x76, 0x92, 0xa5, 0x58, 0x91, 0xb1, 0xff, 0x47,
    +	0x3e, 0x03, 0x12, 0x72, 0x04, 0x6a, 0xdb, 0x05, 0x53, 0x6d, 0x5b, 0xea, 0xf0, 0x05, 0x39, 0xea,
    +	0xdb, 0xff, 0xc1, 0xec, 0x37, 0x93, 0x19, 0xbe, 0xdf, 0xcd, 0x2c, 0xed, 0x2f, 0x5a, 0x00, 0x71,
    +	0x82, 0x93, 0x2e, 0x12, 0x4e, 0x5f, 0xa6, 0xaf, 0x25, 0x3f, 0xf2, 0xab, 0x7e, 0x5d, 0xa8, 0x8d,
    +	0x4e, 0xc7, 0x9a, 0x63, 0x5e, 0x7e, 0xa0, 0xfd, 0xc6, 0x0a, 0x1b, 0x95, 0x64, 0xc4, 0xe1, 0x62,
    +	0x6c, 0xcb, 0x60, 0x44, 0x1b, 0xfe, 0x8a, 0x05, 0xc7, 0xb2, 0x9c, 0x40, 0xe8, 0xdb, 0x9b, 0x4b,
    +	0x4f, 0x95, 0x09, 0xac, 0x9a, 0xcd, 0x9b, 0xa2, 0x1c, 0x2b, 0x8c, 0xae, 0x33, 0x79, 0x1f, 0x2e,
    +	0xf9, 0xc6, 0x0d, 0x18, 0x29, 0x07, 0x44, 0xe3, 0x2f, 0x5e, 0x8f, 0xf3, 0x02, 0x0d, 0xce, 0x3d,
    +	0x7b, 0xe8, 0xc8, 0x4a, 0xf6, 0x57, 0x0b, 0x70, 0x8c, 0x1b, 0x72, 0xcd, 0xee, 0xf8, 0x6e, 0xad,
    +	0xec, 0xd7, 0x84, 0xeb, 0xee, 0xdb, 0x30, 0xdc, 0xd4, 0x44, 0xde, 0xed, 0x02, 0xc9, 0xeb, 0xa2,
    +	0xf1, 0x58, 0x48, 0xa7, 0x97, 0x62, 0x83, 0x16, 0xaa, 0xc1, 0x30, 0xd9, 0x71, 0xab, 0xca, 0x1a,
    +	0xa8, 0x70, 0xe8, 0x4b, 0x5a, 0xb5, 0xb2, 0xa8, 0xd1, 0xc1, 0x06, 0xd5, 0xae, 0xcd, 0xaf, 0x35,
    +	0x16, 0xad, 0xa7, 0x83, 0x05, 0xd0, 0xcf, 0x5a, 0x70, 0x32, 0x27, 0xec, 0x3c, 0x6d, 0xee, 0x0e,
    +	0x33, 0x99, 0x13, 0xcb, 0x56, 0x35, 0xc7, 0x0d, 0xe9, 0xb0, 0x80, 0xa2, 0x8f, 0x03, 0x34, 0xe3,
    +	0x94, 0x9b, 0x1d, 0xe2, 0x73, 0x1b, 0x91, 0x7a, 0xb5, 0xa0, 0xab, 0x2a, 0x33, 0xa7, 0x46, 0xcb,
    +	0xfe, 0x4a, 0x0f, 0xf4, 0x32, 0xc3, 0x2b, 0x54, 0x86, 0xfe, 0x2d, 0x1e, 0x13, 0xb0, 0xed, 0xbc,
    +	0x51, 0x5c, 0x19, 0x64, 0x30, 0x9e, 0x37, 0xad, 0x14, 0x4b, 0x32, 0x68, 0x05, 0x26, 0x79, 0x3a,
    +	0xd1, 0xfa, 0x02, 0xa9, 0x3b, 0xbb, 0x52, 0x9a, 0x5c, 0x60, 0x9f, 0xaa, 0xa4, 0xea, 0xcb, 0x69,
    +	0x14, 0x9c, 0x55, 0x0f, 0xbd, 0x0e, 0xa3, 0xf4, 0x75, 0xef, 0xb7, 0x22, 0x49, 0x89, 0xe7, 0xef,
    +	0x54, 0x0f, 0x9e, 0x35, 0x03, 0x8a, 0x13, 0xd8, 0xe8, 0x55, 0x18, 0x69, 0xa6, 0xe4, 0xe6, 0xbd,
    +	0xb1, 0x80, 0xc9, 0x94, 0x95, 0x9b, 0xb8, 0xcc, 0x0f, 0xa4, 0xc5, 0xbc, 0x5e, 0xd6, 0xb6, 0x02,
    +	0x12, 0x6e, 0xf9, 0xf5, 0x1a, 0xe3, 0x80, 0x7b, 0x35, 0x3f, 0x90, 0x04, 0x1c, 0xa7, 0x6a, 0x50,
    +	0x2a, 0x1b, 0x8e, 0x5b, 0x6f, 0x05, 0x24, 0xa6, 0xd2, 0x67, 0x52, 0x59, 0x4a, 0xc0, 0x71, 0xaa,
    +	0x46, 0x67, 0x85, 0x40, 0xff, 0x83, 0x51, 0x08, 0xd8, 0xbf, 0x5c, 0x00, 0x63, 0x6a, 0xbf, 0x87,
    +	0xf3, 0x8a, 0xbe, 0x06, 0x3d, 0x9b, 0x41, 0xb3, 0x2a, 0x8c, 0x0c, 0x33, 0xbf, 0xec, 0x0a, 0x2e,
    +	0xcf, 0xeb, 0x5f, 0x46, 0xff, 0x63, 0x56, 0x8b, 0xee, 0xf1, 0xe3, 0xe5, 0xc0, 0xa7, 0x97, 0x9c,
    +	0x0c, 0x1b, 0xaa, 0xdc, 0xad, 0xfa, 0xe5, 0x1b, 0xbb, 0x4d, 0x80, 0x6d, 0xe1, 0x33, 0xc2, 0x29,
    +	0x18, 0xf6, 0x78, 0x15, 0xf1, 0xc2, 0x96, 0x54, 0xd0, 0x25, 0x18, 0x12, 0xa9, 0x1e, 0x99, 0x57,
    +	0x10, 0xdf, 0x4c, 0xcc, 0x7e, 0x70, 0x21, 0x2e, 0xc6, 0x3a, 0x8e, 0xfd, 0xe3, 0x05, 0x98, 0xcc,
    +	0x70, 0xeb, 0xe4, 0xd7, 0xc8, 0xa6, 0x1b, 0x46, 0xc1, 0x6e, 0xf2, 0x72, 0xc2, 0xa2, 0x1c, 0x2b,
    +	0x0c, 0x7a, 0x56, 0xf1, 0x8b, 0x2a, 0x79, 0x39, 0x09, 0xb7, 0x29, 0x01, 0x3d, 0xdc, 0xe5, 0x44,
    +	0xaf, 0xed, 0x56, 0x48, 0x64, 0x2c, 0x7f, 0x75, 0x6d, 0x33, 0x63, 0x03, 0x06, 0xa1, 0x4f, 0xc0,
    +	0x4d, 0xa5, 0x41, 0xd7, 0x9e, 0x80, 0x5c, 0x87, 0xce, 0x61, 0xb4, 0x73, 0x11, 0xf1, 0x1c, 0x2f,
    +	0x12, 0x0f, 0xc5, 0x38, 0xc6, 0x33, 0x2b, 0xc5, 0x02, 0x6a, 0x7f, 0xb9, 0x08, 0xa7, 0x72, 0x1d,
    +	0xbd, 0x69, 0xd7, 0x1b, 0xbe, 0xe7, 0x46, 0xbe, 0x32, 0xcc, 0xe4, 0x71, 0x9d, 0x49, 0x73, 0x6b,
    +	0x45, 0x94, 0x63, 0x85, 0x81, 0xce, 0x43, 0x2f, 0x93, 0xb5, 0x27, 0xd3, 0xbc, 0xe1, 0xb9, 0x05,
    +	0x1e, 0x31, 0x93, 0x83, 0xb5, 0x5b, 0xbd, 0xd8, 0xf6, 0x56, 0x7f, 0x8c, 0x72, 0x30, 0x7e, 0x3d,
    +	0x79, 0xa1, 0xd0, 0xee, 0xfa, 0x7e, 0x1d, 0x33, 0x20, 0x7a, 0x42, 0x8c, 0x57, 0xc2, 0x12, 0x11,
    +	0x3b, 0x35, 0x3f, 0xd4, 0x06, 0xed, 0x29, 0xe8, 0xdf, 0x26, 0xbb, 0x81, 0xeb, 0x6d, 0x26, 0x2d,
    +	0x54, 0xaf, 0xf1, 0x62, 0x2c, 0xe1, 0x66, 0x56, 0xf3, 0xfe, 0x07, 0x91, 0xd5, 0x5c, 0x5f, 0x01,
    +	0x03, 0x1d, 0xd9, 0x93, 0x9f, 0x28, 0xc2, 0x18, 0x9e, 0x5b, 0xf8, 0x60, 0x22, 0xd6, 0xd3, 0x13,
    +	0xf1, 0x20, 0x92, 0x7f, 0x1f, 0x6e, 0x36, 0x7e, 0xdb, 0x82, 0x31, 0x96, 0x70, 0x52, 0x44, 0x69,
    +	0x71, 0x7d, 0xef, 0x08, 0x9e, 0x02, 0x8f, 0x41, 0x6f, 0x40, 0x1b, 0x15, 0x33, 0xa8, 0xf6, 0x38,
    +	0xeb, 0x09, 0xe6, 0x30, 0x74, 0x1a, 0x7a, 0x58, 0x17, 0xe8, 0xe4, 0x0d, 0xf3, 0x23, 0x78, 0xc1,
    +	0x89, 0x1c, 0xcc, 0x4a, 0x59, 0xbc, 0x48, 0x4c, 0x9a, 0x75, 0x97, 0x77, 0x3a, 0xb6, 0x84, 0x78,
    +	0x7f, 0x84, 0x80, 0xc9, 0xec, 0xda, 0x7b, 0x8b, 0x17, 0x99, 0x4d, 0xb2, 0xfd, 0x33, 0xfb, 0x1f,
    +	0x0a, 0x70, 0x36, 0xb3, 0x5e, 0xd7, 0xf1, 0x22, 0xdb, 0xd7, 0x7e, 0x98, 0xe9, 0xe9, 0x8a, 0x47,
    +	0x68, 0xff, 0xdf, 0xd3, 0x2d, 0xf7, 0xdf, 0xdb, 0x45, 0x18, 0xc7, 0xcc, 0x21, 0x7b, 0x9f, 0x84,
    +	0x71, 0xcc, 0xec, 0x5b, 0x8e, 0x98, 0xe0, 0x5f, 0x0b, 0x39, 0xdf, 0xc2, 0x04, 0x06, 0x17, 0xe8,
    +	0x39, 0xc3, 0x80, 0xa1, 0x7c, 0x84, 0xf3, 0x33, 0x86, 0x97, 0x61, 0x05, 0x45, 0xb3, 0x30, 0xd6,
    +	0x70, 0x3d, 0x7a, 0xf8, 0xec, 0x9a, 0xac, 0xb8, 0x52, 0x91, 0xac, 0x98, 0x60, 0x9c, 0xc4, 0x47,
    +	0xae, 0x16, 0xe2, 0x91, 0x7f, 0xdd, 0xab, 0x87, 0xda, 0x75, 0x33, 0xa6, 0x95, 0x88, 0x1a, 0xc5,
    +	0x8c, 0x70, 0x8f, 0x2b, 0x9a, 0x9c, 0xa8, 0xd8, 0xbd, 0x9c, 0x68, 0x38, 0x5b, 0x46, 0x34, 0xfd,
    +	0x2a, 0x8c, 0xdc, 0xb7, 0x6e, 0xc4, 0xfe, 0x56, 0x11, 0x1e, 0x69, 0xb3, 0xed, 0xf9, 0x59, 0x6f,
    +	0xcc, 0x81, 0x76, 0xd6, 0xa7, 0xe6, 0xa1, 0x0c, 0xc7, 0x36, 0x5a, 0xf5, 0xfa, 0x2e, 0x73, 0x74,
    +	0x23, 0x35, 0x89, 0x21, 0x78, 0x4a, 0x29, 0x1c, 0x39, 0xb6, 0x94, 0x81, 0x83, 0x33, 0x6b, 0xd2,
    +	0x27, 0x16, 0xbd, 0x49, 0x76, 0x15, 0xa9, 0xc4, 0x13, 0x0b, 0xeb, 0x40, 0x6c, 0xe2, 0xa2, 0x2b,
    +	0x30, 0xe1, 0xec, 0x38, 0x2e, 0x4f, 0xef, 0x21, 0x09, 0xf0, 0x37, 0x96, 0x92, 0x45, 0xcf, 0x26,
    +	0x11, 0x70, 0xba, 0x0e, 0x7a, 0x13, 0x90, 0x7f, 0x9b, 0x39, 0xcf, 0xd4, 0xae, 0x10, 0x4f, 0x28,
    +	0xf3, 0xd9, 0xdc, 0x15, 0xe3, 0x23, 0xe1, 0x46, 0x0a, 0x03, 0x67, 0xd4, 0x4a, 0x04, 0x1b, 0xec,
    +	0xcb, 0x0f, 0x36, 0xd8, 0xfe, 0x5c, 0xec, 0x98, 0x19, 0xf1, 0x1d, 0x18, 0x39, 0xac, 0xb5, 0xf7,
    +	0x53, 0xd0, 0x1f, 0x88, 0x9c, 0xf3, 0x09, 0xaf, 0x72, 0x99, 0x91, 0x5b, 0xc2, 0xed, 0xff, 0xc7,
    +	0x02, 0x25, 0x4b, 0x36, 0xe3, 0x8a, 0xbf, 0xca, 0x4c, 0xd7, 0xb9, 0x14, 0x5c, 0x0b, 0x25, 0x76,
    +	0x5c, 0x33, 0x5d, 0x8f, 0x81, 0xd8, 0xc4, 0xe5, 0xcb, 0x2d, 0x8c, 0x23, 0x58, 0x18, 0x0f, 0x08,
    +	0xa1, 0x35, 0x54, 0x18, 0xe8, 0x13, 0xd0, 0x5f, 0x73, 0x77, 0xdc, 0x50, 0xc8, 0xd1, 0x0e, 0xad,
    +	0xb7, 0x8b, 0xbf, 0x6f, 0x81, 0x93, 0xc1, 0x92, 0x9e, 0xfd, 0x53, 0x16, 0x28, 0x75, 0xe7, 0x55,
    +	0xe2, 0xd4, 0xa3, 0x2d, 0xf4, 0x06, 0x80, 0xa4, 0xa0, 0x64, 0x6f, 0xd2, 0x08, 0x0b, 0xb0, 0x82,
    +	0x1c, 0x18, 0xff, 0xb0, 0x56, 0x07, 0xbd, 0x0e, 0x7d, 0x5b, 0x8c, 0x96, 0xf8, 0xb6, 0xf3, 0x4a,
    +	0xd5, 0xc5, 0x4a, 0x0f, 0xf6, 0x4a, 0xc7, 0xcc, 0x36, 0xe5, 0x2d, 0xc6, 0x6b, 0xd9, 0x3f, 0x51,
    +	0x88, 0xe7, 0xf4, 0xad, 0x96, 0x1f, 0x39, 0x47, 0xc0, 0x89, 0x5c, 0x31, 0x38, 0x91, 0x27, 0xda,
    +	0xe9, 0x73, 0x59, 0x97, 0x72, 0x39, 0x90, 0x1b, 0x09, 0x0e, 0xe4, 0xc9, 0xce, 0xa4, 0xda, 0x73,
    +	0x1e, 0xff, 0x93, 0x05, 0x13, 0x06, 0xfe, 0x11, 0x5c, 0x80, 0x4b, 0xe6, 0x05, 0xf8, 0x68, 0xc7,
    +	0x6f, 0xc8, 0xb9, 0xf8, 0x7e, 0xb4, 0x98, 0xe8, 0x3b, 0xbb, 0xf0, 0xde, 0x85, 0x9e, 0x2d, 0x27,
    +	0xa8, 0x89, 0x77, 0xfd, 0xc5, 0xae, 0xc6, 0x7a, 0xe6, 0xaa, 0x13, 0x08, 0x03, 0x8e, 0x67, 0xe5,
    +	0xa8, 0xd3, 0xa2, 0x8e, 0xc6, 0x1b, 0xac, 0x29, 0x74, 0x19, 0xfa, 0xc2, 0xaa, 0xdf, 0x54, 0x7e,
    +	0x80, 0x2c, 0x5d, 0x78, 0x85, 0x95, 0x1c, 0xec, 0x95, 0x90, 0xd9, 0x1c, 0x2d, 0xc6, 0x02, 0x1f,
    +	0xbd, 0x0d, 0x23, 0xec, 0x97, 0xb2, 0xa6, 0x2c, 0xe6, 0x4b, 0x60, 0x2a, 0x3a, 0x22, 0x37, 0x35,
    +	0x36, 0x8a, 0xb0, 0x49, 0x6a, 0x7a, 0x13, 0x06, 0xd5, 0x67, 0x3d, 0x54, 0x6d, 0xfd, 0xff, 0x59,
    +	0x84, 0xc9, 0x8c, 0x35, 0x87, 0x42, 0x63, 0x26, 0x2e, 0x75, 0xb9, 0x54, 0xdf, 0xe3, 0x5c, 0x84,
    +	0xec, 0x01, 0x58, 0x13, 0x6b, 0xab, 0xeb, 0x46, 0xd7, 0x43, 0x92, 0x6c, 0x94, 0x16, 0x75, 0x6e,
    +	0x94, 0x36, 0x76, 0x64, 0x43, 0x4d, 0x1b, 0x52, 0x3d, 0x7d, 0xa8, 0x73, 0xfa, 0x87, 0x3d, 0x70,
    +	0x2c, 0xcb, 0xc4, 0x04, 0x7d, 0x0e, 0xfa, 0x98, 0xa3, 0x9a, 0x14, 0x9c, 0xbd, 0xd8, 0xad, 0x71,
    +	0xca, 0x0c, 0xf3, 0x75, 0x13, 0xa1, 0x69, 0x67, 0xe4, 0x71, 0xc4, 0x0b, 0x3b, 0x0e, 0xb3, 0x68,
    +	0x93, 0x85, 0x8c, 0x12, 0xb7, 0xa7, 0x3c, 0x3e, 0x3e, 0xd2, 0x75, 0x07, 0xc4, 0xfd, 0x1b, 0x26,
    +	0x2c, 0xb5, 0x64, 0x71, 0x67, 0x4b, 0x2d, 0xd9, 0x32, 0x5a, 0x86, 0xbe, 0x2a, 0x37, 0x01, 0x2a,
    +	0x76, 0x3e, 0xc2, 0xb8, 0xfd, 0x8f, 0x3a, 0x80, 0x85, 0xdd, 0x8f, 0x20, 0x30, 0xed, 0xc2, 0x90,
    +	0x36, 0x30, 0x0f, 0x75, 0xf1, 0x6c, 0xd3, 0x8b, 0x4f, 0x1b, 0x82, 0x87, 0xba, 0x80, 0x7e, 0x46,
    +	0xbb, 0xfb, 0xc5, 0x79, 0xf0, 0x61, 0x83, 0x77, 0x3a, 0x9d, 0x70, 0x1f, 0x4c, 0xec, 0x2b, 0xc6,
    +	0x4b, 0x55, 0xcc, 0x98, 0xee, 0xb9, 0xa9, 0xa1, 0xcc, 0x0b, 0xbf, 0x7d, 0x1c, 0x77, 0xfb, 0x67,
    +	0x2d, 0x48, 0x38, 0x78, 0x29, 0x71, 0xa7, 0x95, 0x2b, 0xee, 0x3c, 0x07, 0x3d, 0x81, 0x5f, 0x27,
    +	0xc9, 0xd4, 0xfb, 0xd8, 0xaf, 0x13, 0xcc, 0x20, 0x14, 0x23, 0x8a, 0x85, 0x58, 0xc3, 0xfa, 0x03,
    +	0x5d, 0x3c, 0xbd, 0x1f, 0x83, 0xde, 0x3a, 0xd9, 0x21, 0xf5, 0x64, 0x86, 0xd4, 0xeb, 0xb4, 0x10,
    +	0x73, 0x98, 0xfd, 0xdb, 0x3d, 0x70, 0xa6, 0x6d, 0x64, 0x39, 0xca, 0x60, 0x6e, 0x3a, 0x11, 0xb9,
    +	0xe3, 0xec, 0x26, 0x33, 0x03, 0x5e, 0xe1, 0xc5, 0x58, 0xc2, 0x99, 0xb3, 0x35, 0xcf, 0x94, 0x93,
    +	0x10, 0x0e, 0x8b, 0x04, 0x39, 0x02, 0x6a, 0x0a, 0x1b, 0x8b, 0x0f, 0x42, 0xd8, 0xf8, 0x3c, 0x40,
    +	0x18, 0xd6, 0xb9, 0x1d, 0x67, 0x4d, 0x78, 0x71, 0xc7, 0x19, 0x95, 0x2a, 0xd7, 0x05, 0x04, 0x6b,
    +	0x58, 0x68, 0x01, 0xc6, 0x9b, 0x81, 0x1f, 0x71, 0x59, 0xfb, 0x02, 0x37, 0x75, 0xee, 0x35, 0x83,
    +	0x7a, 0x95, 0x13, 0x70, 0x9c, 0xaa, 0x81, 0x5e, 0x82, 0x21, 0x11, 0xe8, 0xab, 0xec, 0xfb, 0x75,
    +	0x21, 0xde, 0x53, 0xd6, 0xbf, 0x95, 0x18, 0x84, 0x75, 0x3c, 0xad, 0x1a, 0x13, 0xe0, 0xf7, 0x67,
    +	0x56, 0xe3, 0x42, 0x7c, 0x0d, 0x2f, 0x91, 0x14, 0x60, 0xa0, 0xab, 0xa4, 0x00, 0xb1, 0xc0, 0x73,
    +	0xb0, 0x6b, 0x7d, 0x32, 0x74, 0x14, 0x11, 0x7e, 0xad, 0x07, 0x26, 0xc5, 0xc2, 0x79, 0xd8, 0xcb,
    +	0x65, 0x3d, 0xbd, 0x5c, 0x1e, 0x84, 0x48, 0xf4, 0x83, 0x35, 0x73, 0xd4, 0x6b, 0xe6, 0x27, 0x2d,
    +	0x30, 0x79, 0x48, 0xf4, 0x9f, 0xe5, 0xa6, 0x56, 0x7d, 0x29, 0x97, 0x27, 0x8d, 0x23, 0x86, 0xbf,
    +	0xb7, 0x24, 0xab, 0xf6, 0xff, 0x65, 0xc1, 0xa3, 0x1d, 0x29, 0xa2, 0x45, 0x18, 0x64, 0x8c, 0xae,
    +	0xf6, 0x2e, 0x7e, 0x52, 0xb9, 0x42, 0x48, 0x40, 0x0e, 0xdf, 0x1d, 0xd7, 0x44, 0x8b, 0xa9, 0x1c,
    +	0xb6, 0x4f, 0x65, 0xe4, 0xb0, 0x3d, 0x6e, 0x0c, 0xcf, 0x7d, 0x26, 0xb1, 0xfd, 0x12, 0xbd, 0x71,
    +	0x4c, 0x7f, 0xca, 0x8f, 0x18, 0xe2, 0x5c, 0x3b, 0x21, 0xce, 0x45, 0x26, 0xb6, 0x76, 0x87, 0xbc,
    +	0x01, 0xe3, 0x2c, 0x02, 0x28, 0x73, 0xcc, 0x11, 0x8e, 0x98, 0x85, 0xd8, 0xf8, 0xfe, 0x7a, 0x02,
    +	0x86, 0x53, 0xd8, 0xf6, 0xdf, 0x15, 0xa1, 0x8f, 0x6f, 0xbf, 0x23, 0x78, 0xf8, 0x3e, 0x03, 0x83,
    +	0x6e, 0xa3, 0xd1, 0xe2, 0x69, 0x49, 0x7b, 0x63, 0x53, 0xee, 0x65, 0x59, 0x88, 0x63, 0x38, 0x5a,
    +	0x12, 0x9a, 0x84, 0x36, 0x41, 0xc6, 0x79, 0xc7, 0x67, 0x16, 0x9c, 0xc8, 0xe1, 0x5c, 0x9c, 0xba,
    +	0x67, 0x63, 0x9d, 0x03, 0xfa, 0x34, 0x40, 0x18, 0x05, 0xae, 0xb7, 0x49, 0xcb, 0x44, 0x26, 0x8a,
    +	0xa7, 0xdb, 0x50, 0xab, 0x28, 0x64, 0x4e, 0x33, 0x3e, 0x73, 0x14, 0x00, 0x6b, 0x14, 0xd1, 0x8c,
    +	0x71, 0xd3, 0x4f, 0x27, 0xe6, 0x0e, 0x38, 0xd5, 0x78, 0xce, 0xa6, 0x5f, 0x86, 0x41, 0x45, 0xbc,
    +	0x93, 0x5c, 0x71, 0x58, 0x67, 0xd8, 0x3e, 0x06, 0x63, 0x89, 0xbe, 0x1d, 0x4a, 0x2c, 0xf9, 0x3b,
    +	0x16, 0x8c, 0xf1, 0xce, 0x2c, 0x7a, 0x3b, 0xe2, 0x36, 0xb8, 0x07, 0xc7, 0xea, 0x19, 0xa7, 0xb2,
    +	0x98, 0xfe, 0xee, 0x4f, 0x71, 0x25, 0x86, 0xcc, 0x82, 0xe2, 0xcc, 0x36, 0xd0, 0x05, 0xba, 0xe3,
    +	0xe8, 0xa9, 0xeb, 0xd4, 0x45, 0x34, 0x91, 0x61, 0xbe, 0xdb, 0x78, 0x19, 0x56, 0x50, 0xfb, 0xaf,
    +	0x2c, 0x98, 0xe0, 0x3d, 0xbf, 0x46, 0x76, 0xd5, 0xd9, 0xf4, 0x9d, 0xec, 0xbb, 0x48, 0x88, 0x5d,
    +	0xc8, 0x49, 0x88, 0xad, 0x7f, 0x5a, 0xb1, 0xed, 0xa7, 0x7d, 0xd5, 0x02, 0xb1, 0x42, 0x8e, 0x40,
    +	0xd2, 0xf2, 0x7d, 0xa6, 0xa4, 0x65, 0x3a, 0x7f, 0x13, 0xe4, 0x88, 0x58, 0xfe, 0xc5, 0x82, 0x71,
    +	0x8e, 0x10, 0x5b, 0x41, 0x7c, 0x47, 0xe7, 0x61, 0xce, 0xfc, 0xa2, 0x4c, 0xb3, 0xd6, 0x6b, 0x64,
    +	0x77, 0xcd, 0x2f, 0x3b, 0xd1, 0x56, 0xf6, 0x47, 0x19, 0x93, 0xd5, 0xd3, 0x76, 0xb2, 0x6a, 0x72,
    +	0x03, 0x19, 0x89, 0x17, 0x3b, 0x08, 0x80, 0x0f, 0x9b, 0x78, 0xd1, 0xfe, 0x7b, 0x0b, 0x10, 0x6f,
    +	0xc6, 0x60, 0xdc, 0x28, 0x3b, 0xc4, 0x4a, 0xb5, 0x8b, 0x2e, 0x3e, 0x9a, 0x14, 0x04, 0x6b, 0x58,
    +	0x0f, 0x64, 0x78, 0x12, 0xa6, 0x2c, 0xc5, 0xce, 0xa6, 0x2c, 0x87, 0x18, 0xd1, 0xaf, 0xf6, 0x43,
    +	0xd2, 0x15, 0x13, 0xdd, 0x84, 0xe1, 0xaa, 0xd3, 0x74, 0x6e, 0xbb, 0x75, 0x37, 0x72, 0x49, 0xd8,
    +	0xce, 0xce, 0x6d, 0x5e, 0xc3, 0x13, 0xc6, 0x07, 0x5a, 0x09, 0x36, 0xe8, 0xa0, 0x19, 0x80, 0x66,
    +	0xe0, 0xee, 0xb8, 0x75, 0xb2, 0xc9, 0x04, 0x42, 0x2c, 0x7e, 0x11, 0x37, 0xba, 0x93, 0xa5, 0x58,
    +	0xc3, 0xc8, 0x08, 0x1b, 0x52, 0x7c, 0xc8, 0x61, 0x43, 0xe0, 0xc8, 0xc2, 0x86, 0xf4, 0x1c, 0x2a,
    +	0x6c, 0xc8, 0xc0, 0xa1, 0xc3, 0x86, 0xf4, 0x76, 0x15, 0x36, 0x04, 0xc3, 0x09, 0xc9, 0x7b, 0xd2,
    +	0xff, 0x4b, 0x6e, 0x9d, 0x88, 0x07, 0x07, 0x0f, 0xba, 0x34, 0xbd, 0xbf, 0x57, 0x3a, 0x81, 0x33,
    +	0x31, 0x70, 0x4e, 0x4d, 0xf4, 0x71, 0x98, 0x72, 0xea, 0x75, 0xff, 0x8e, 0x9a, 0xd4, 0xc5, 0xb0,
    +	0xea, 0xd4, 0xb9, 0x72, 0xa9, 0x9f, 0x51, 0x3d, 0xbd, 0xbf, 0x57, 0x9a, 0x9a, 0xcd, 0xc1, 0xc1,
    +	0xb9, 0xb5, 0xd1, 0x6b, 0x30, 0xd8, 0x0c, 0xfc, 0xea, 0x8a, 0xe6, 0x2f, 0x7e, 0x96, 0x0e, 0x60,
    +	0x59, 0x16, 0x1e, 0xec, 0x95, 0x46, 0xd4, 0x1f, 0x76, 0xe1, 0xc7, 0x15, 0x32, 0x22, 0x72, 0x0c,
    +	0x3d, 0xec, 0x88, 0x1c, 0xc3, 0x0f, 0x38, 0x22, 0x87, 0xbd, 0x0d, 0x93, 0x15, 0x12, 0xb8, 0x4e,
    +	0xdd, 0xbd, 0x47, 0x79, 0x72, 0x79, 0x06, 0xae, 0xc1, 0x60, 0x90, 0x38, 0xf5, 0xbb, 0x0a, 0x2e,
    +	0xae, 0xc9, 0x65, 0xe4, 0x29, 0x1f, 0x13, 0xb2, 0xff, 0xbd, 0x05, 0xfd, 0xc2, 0xbd, 0xf3, 0x08,
    +	0x38, 0xd3, 0x59, 0x43, 0x25, 0x53, 0xca, 0x9e, 0x14, 0xd6, 0x99, 0x5c, 0x65, 0xcc, 0x72, 0x42,
    +	0x19, 0xf3, 0x68, 0x3b, 0x22, 0xed, 0xd5, 0x30, 0xff, 0x75, 0x91, 0xbe, 0x10, 0x8c, 0x40, 0x03,
    +	0x0f, 0x7f, 0x08, 0x56, 0xa1, 0x3f, 0x14, 0x8e, 0xee, 0x85, 0x7c, 0x5f, 0x9e, 0xe4, 0x24, 0xc6,
    +	0x36, 0x90, 0xc2, 0xb5, 0x5d, 0x12, 0xc9, 0xf4, 0xa0, 0x2f, 0x3e, 0x44, 0x0f, 0xfa, 0x4e, 0xa1,
    +	0x18, 0x7a, 0x1e, 0x44, 0x28, 0x06, 0xfb, 0x1b, 0xec, 0x76, 0xd6, 0xcb, 0x8f, 0x80, 0x71, 0xbb,
    +	0x62, 0xde, 0xe3, 0x76, 0x9b, 0x95, 0x25, 0x3a, 0x95, 0xc3, 0xc0, 0xfd, 0x96, 0x05, 0x67, 0x32,
    +	0xbe, 0x4a, 0xe3, 0xe6, 0x9e, 0x85, 0x01, 0xa7, 0x55, 0x73, 0xd5, 0x5e, 0xd6, 0xb4, 0xc5, 0xb3,
    +	0xa2, 0x1c, 0x2b, 0x0c, 0x34, 0x0f, 0x13, 0xe4, 0x6e, 0xd3, 0xe5, 0x6a, 0x78, 0xdd, 0x74, 0xbc,
    +	0xc8, 0x7d, 0x82, 0x17, 0x93, 0x40, 0x9c, 0xc6, 0x57, 0xe1, 0xdc, 0x8a, 0xb9, 0xe1, 0xdc, 0x7e,
    +	0xdd, 0x82, 0x21, 0xe5, 0xea, 0xfd, 0xd0, 0x47, 0xfb, 0x0d, 0x73, 0xb4, 0x1f, 0x69, 0x33, 0xda,
    +	0x39, 0xc3, 0xfc, 0x97, 0x05, 0xd5, 0xdf, 0xb2, 0x1f, 0x44, 0x5d, 0x70, 0x89, 0xf7, 0xef, 0xf6,
    +	0x72, 0x09, 0x86, 0x9c, 0x66, 0x53, 0x02, 0xa4, 0xfd, 0x22, 0x4b, 0x15, 0x11, 0x17, 0x63, 0x1d,
    +	0x47, 0x79, 0xe1, 0x14, 0x73, 0xbd, 0x70, 0x6a, 0x00, 0x91, 0x13, 0x6c, 0x92, 0x88, 0x96, 0x09,
    +	0x73, 0xeb, 0xfc, 0xf3, 0xa6, 0x15, 0xb9, 0xf5, 0x19, 0xd7, 0x8b, 0xc2, 0x28, 0x98, 0x59, 0xf6,
    +	0xa2, 0x1b, 0x01, 0x7f, 0xa6, 0x6a, 0x41, 0x13, 0x15, 0x2d, 0xac, 0xd1, 0x95, 0x61, 0x4d, 0x58,
    +	0x1b, 0xbd, 0xa6, 0x21, 0xcc, 0xaa, 0x28, 0xc7, 0x0a, 0xc3, 0x7e, 0x99, 0xdd, 0x3e, 0x6c, 0x4c,
    +	0x0f, 0x17, 0x0c, 0xf0, 0x1f, 0x86, 0xd5, 0x6c, 0x30, 0x95, 0xf0, 0x82, 0x1e, 0x72, 0xb0, 0xfd,
    +	0x61, 0x4f, 0x1b, 0xd6, 0xfd, 0x59, 0xe3, 0xb8, 0x84, 0xe8, 0x93, 0x29, 0xe3, 0xa6, 0xe7, 0x3a,
    +	0xdc, 0x1a, 0x87, 0x30, 0x67, 0x62, 0x79, 0xe3, 0x58, 0x56, 0xad, 0xe5, 0xb2, 0xd8, 0x17, 0x5a,
    +	0xde, 0x38, 0x01, 0xc0, 0x31, 0x0e, 0x65, 0xd8, 0xd4, 0x9f, 0x70, 0x0a, 0xc5, 0xe1, 0xc5, 0x15,
    +	0x76, 0x88, 0x35, 0x0c, 0x74, 0x51, 0x08, 0x2d, 0xb8, 0xee, 0xe1, 0x91, 0x84, 0xd0, 0x42, 0x0e,
    +	0x97, 0x26, 0x69, 0xba, 0x04, 0x43, 0xe4, 0x6e, 0x44, 0x02, 0xcf, 0xa9, 0xd3, 0x16, 0x7a, 0xe3,
    +	0x88, 0xb8, 0x8b, 0x71, 0x31, 0xd6, 0x71, 0xd0, 0x1a, 0x8c, 0x85, 0x5c, 0x96, 0xa7, 0x92, 0x5a,
    +	0x70, 0x99, 0xe8, 0xd3, 0xca, 0xc9, 0xde, 0x04, 0x1f, 0xb0, 0x22, 0x7e, 0x3a, 0xc9, 0xd0, 0x23,
    +	0x49, 0x12, 0xe8, 0x75, 0x18, 0xad, 0xfb, 0x4e, 0x6d, 0xce, 0xa9, 0x3b, 0x5e, 0x95, 0x8d, 0xcf,
    +	0x80, 0x11, 0x7f, 0x72, 0xf4, 0xba, 0x01, 0xc5, 0x09, 0x6c, 0xca, 0x20, 0xea, 0x25, 0x22, 0x11,
    +	0x8b, 0xe3, 0x6d, 0x92, 0x70, 0x6a, 0x90, 0x7d, 0x15, 0x63, 0x10, 0xaf, 0xe7, 0xe0, 0xe0, 0xdc,
    +	0xda, 0xe8, 0x32, 0x0c, 0xcb, 0xcf, 0xd7, 0x22, 0xf5, 0xc4, 0x0e, 0x4d, 0x1a, 0x0c, 0x1b, 0x98,
    +	0x28, 0x84, 0xe3, 0xf2, 0xff, 0x5a, 0xe0, 0x6c, 0x6c, 0xb8, 0x55, 0x11, 0xbe, 0x82, 0x3b, 0x7f,
    +	0x7f, 0x4c, 0x7a, 0x9a, 0x2e, 0x66, 0x21, 0x1d, 0xec, 0x95, 0x4e, 0x8b, 0x51, 0xcb, 0x84, 0xe3,
    +	0x6c, 0xda, 0x68, 0x05, 0x26, 0xb9, 0x0d, 0xcc, 0xfc, 0x16, 0xa9, 0x6e, 0xcb, 0x0d, 0xc7, 0xb8,
    +	0x46, 0xcd, 0xf1, 0xe7, 0x6a, 0x1a, 0x05, 0x67, 0xd5, 0x43, 0xef, 0xc0, 0x54, 0xb3, 0x75, 0xbb,
    +	0xee, 0x86, 0x5b, 0xab, 0x7e, 0xc4, 0x4c, 0xc8, 0x66, 0x6b, 0xb5, 0x80, 0x84, 0xdc, 0x37, 0x98,
    +	0x5d, 0xbd, 0x32, 0xba, 0x52, 0x39, 0x07, 0x0f, 0xe7, 0x52, 0x40, 0xf7, 0xe0, 0x78, 0x62, 0x21,
    +	0x88, 0x30, 0x29, 0xa3, 0xf9, 0x29, 0xad, 0x2a, 0x59, 0x15, 0x44, 0xc4, 0xa1, 0x2c, 0x10, 0xce,
    +	0x6e, 0x02, 0xbd, 0x02, 0xe0, 0x36, 0x97, 0x9c, 0x86, 0x5b, 0xa7, 0xcf, 0xd1, 0x49, 0xb6, 0x46,
    +	0xe8, 0xd3, 0x04, 0x96, 0xcb, 0xb2, 0x94, 0x9e, 0xcd, 0xe2, 0xdf, 0x2e, 0xd6, 0xb0, 0xd1, 0x75,
    +	0x18, 0x15, 0xff, 0x76, 0xc5, 0x94, 0x4e, 0xa8, 0xec, 0xa7, 0xa3, 0xb2, 0x86, 0x9a, 0xc7, 0x44,
    +	0x09, 0x4e, 0xd4, 0x45, 0x9b, 0x70, 0x46, 0xa6, 0x5e, 0xd5, 0xd7, 0xa7, 0x9c, 0x83, 0x90, 0xe5,
    +	0x91, 0x1a, 0xe0, 0x3e, 0x45, 0xb3, 0xed, 0x10, 0x71, 0x7b, 0x3a, 0xf4, 0x5e, 0xd7, 0x97, 0x39,
    +	0xf7, 0x18, 0x3f, 0x1e, 0x47, 0xf1, 0xbc, 0x9e, 0x04, 0xe2, 0x34, 0x3e, 0xf2, 0xe1, 0xb8, 0xeb,
    +	0x65, 0xad, 0xea, 0x13, 0x8c, 0xd0, 0x47, 0xb9, 0xb3, 0x7c, 0xfb, 0x15, 0x9d, 0x09, 0xc7, 0xd9,
    +	0x74, 0xd1, 0x32, 0x4c, 0x46, 0xbc, 0x60, 0xc1, 0x0d, 0x79, 0x9a, 0x1a, 0xfa, 0xec, 0x3b, 0xc9,
    +	0x9a, 0x3b, 0x49, 0x57, 0xf3, 0x5a, 0x1a, 0x8c, 0xb3, 0xea, 0xbc, 0x37, 0x03, 0xd0, 0x6f, 0x5a,
    +	0xb4, 0xb6, 0xc6, 0xe8, 0xa3, 0xcf, 0xc0, 0xb0, 0x3e, 0x3e, 0x82, 0x69, 0x39, 0x9f, 0xcd, 0x07,
    +	0x6b, 0xc7, 0x0b, 0x7f, 0x26, 0xa8, 0x23, 0x44, 0x87, 0x61, 0x83, 0x22, 0xaa, 0x66, 0x04, 0xb9,
    +	0xb8, 0xd8, 0x1d, 0x53, 0xd4, 0xbd, 0xfd, 0x23, 0x81, 0xec, 0x9d, 0x83, 0xae, 0xc3, 0x40, 0xb5,
    +	0xee, 0x12, 0x2f, 0x5a, 0x2e, 0xb7, 0x0b, 0xae, 0x3a, 0x2f, 0x70, 0xc4, 0x56, 0x14, 0xd9, 0xa5,
    +	0x78, 0x19, 0x56, 0x14, 0xec, 0xcb, 0x30, 0x54, 0xa9, 0x13, 0xd2, 0xe4, 0x7e, 0x5c, 0xe8, 0x29,
    +	0xf6, 0x30, 0x61, 0xac, 0xa5, 0xc5, 0x58, 0x4b, 0xfd, 0xcd, 0xc1, 0x98, 0x4a, 0x09, 0xb7, 0xff,
    +	0xb8, 0x00, 0xa5, 0x0e, 0x49, 0xce, 0x12, 0xfa, 0x36, 0xab, 0x2b, 0x7d, 0xdb, 0x2c, 0x8c, 0xc5,
    +	0xff, 0x74, 0x51, 0x9e, 0x32, 0x86, 0xbe, 0x69, 0x82, 0x71, 0x12, 0xbf, 0x6b, 0xbf, 0x16, 0x5d,
    +	0x65, 0xd7, 0xd3, 0xd1, 0x33, 0xcb, 0x50, 0xd5, 0xf7, 0x76, 0xff, 0xf6, 0xce, 0x55, 0xbb, 0xda,
    +	0xdf, 0x28, 0xc0, 0x71, 0x35, 0x84, 0xdf, 0xbb, 0x03, 0xb7, 0x9e, 0x1e, 0xb8, 0x07, 0xa0, 0xb4,
    +	0xb6, 0x6f, 0x40, 0x1f, 0x8f, 0xf8, 0xda, 0x05, 0xcf, 0xff, 0x98, 0x19, 0x7c, 0x5f, 0xb1, 0x99,
    +	0x46, 0x00, 0xfe, 0x1f, 0xb3, 0x60, 0x2c, 0xe1, 0x20, 0x89, 0xb0, 0xe6, 0x45, 0x7f, 0x3f, 0x7c,
    +	0x79, 0x16, 0xc7, 0x7f, 0x0e, 0x7a, 0xb6, 0x7c, 0x65, 0xa4, 0xac, 0x30, 0xae, 0xfa, 0x61, 0x84,
    +	0x19, 0xc4, 0xfe, 0x6b, 0x0b, 0x7a, 0xd7, 0x1c, 0xd7, 0x8b, 0xa4, 0xf6, 0xc3, 0xca, 0xd1, 0x7e,
    +	0x74, 0xf3, 0x5d, 0xe8, 0x25, 0xe8, 0x23, 0x1b, 0x1b, 0xa4, 0x1a, 0x89, 0x59, 0x95, 0xd1, 0x34,
    +	0xfa, 0x16, 0x59, 0x29, 0x65, 0x42, 0x59, 0x63, 0xfc, 0x2f, 0x16, 0xc8, 0xe8, 0x16, 0x0c, 0x46,
    +	0x6e, 0x83, 0xcc, 0xd6, 0x6a, 0xc2, 0x26, 0xe0, 0x3e, 0x42, 0xc0, 0xac, 0x49, 0x02, 0x38, 0xa6,
    +	0x65, 0x7f, 0xb9, 0x00, 0x10, 0x47, 0x98, 0xeb, 0xf4, 0x89, 0x73, 0x29, 0x6d, 0xf1, 0xf9, 0x0c,
    +	0x6d, 0x31, 0x8a, 0x09, 0x66, 0xa8, 0x8a, 0xd5, 0x30, 0x15, 0xbb, 0x1a, 0xa6, 0x9e, 0xc3, 0x0c,
    +	0xd3, 0x3c, 0x4c, 0xc4, 0x11, 0xf2, 0xcc, 0x00, 0xa1, 0xec, 0xfe, 0x5e, 0x4b, 0x02, 0x71, 0x1a,
    +	0xdf, 0x26, 0x70, 0x4e, 0x05, 0x0a, 0x13, 0x77, 0x21, 0x73, 0x25, 0xd0, 0xb5, 0xef, 0x1d, 0xc6,
    +	0x29, 0x56, 0x87, 0x17, 0x72, 0xd5, 0xe1, 0xbf, 0x60, 0xc1, 0xb1, 0x64, 0x3b, 0xcc, 0xef, 0xfe,
    +	0x8b, 0x16, 0x1c, 0x8f, 0x73, 0xfc, 0xa4, 0x4d, 0x10, 0x5e, 0x6c, 0x1b, 0xfc, 0x2c, 0xa7, 0xc7,
    +	0x71, 0xd8, 0x96, 0x95, 0x2c, 0xd2, 0x38, 0xbb, 0x45, 0xfb, 0xdf, 0xf5, 0xc0, 0x54, 0x5e, 0xd4,
    +	0x34, 0xe6, 0x69, 0xe4, 0xdc, 0xad, 0x6c, 0x93, 0x3b, 0xc2, 0x9f, 0x23, 0xf6, 0x34, 0xe2, 0xc5,
    +	0x58, 0xc2, 0x93, 0x69, 0x9d, 0x0a, 0x5d, 0xa6, 0x75, 0xda, 0x82, 0x89, 0x3b, 0x5b, 0xc4, 0x5b,
    +	0xf7, 0x42, 0x27, 0x72, 0xc3, 0x0d, 0x97, 0x29, 0xd0, 0xf9, 0xba, 0x79, 0x45, 0x7a, 0x5d, 0xdc,
    +	0x4a, 0x22, 0x1c, 0xec, 0x95, 0xce, 0x18, 0x05, 0x71, 0x97, 0xf9, 0x41, 0x82, 0xd3, 0x44, 0xd3,
    +	0x59, 0xb1, 0x7a, 0x1e, 0x72, 0x56, 0xac, 0x86, 0x2b, 0xcc, 0x6e, 0xa4, 0x1b, 0x09, 0x7b, 0xb6,
    +	0xae, 0xa8, 0x52, 0xac, 0x61, 0xa0, 0x4f, 0x01, 0xd2, 0xd3, 0x1a, 0x1a, 0x41, 0x6b, 0x9f, 0xdb,
    +	0xdf, 0x2b, 0xa1, 0xd5, 0x14, 0xf4, 0x60, 0xaf, 0x34, 0x49, 0x4b, 0x97, 0x3d, 0xfa, 0xfc, 0x8d,
    +	0x23, 0xfd, 0x65, 0x10, 0x42, 0xb7, 0x60, 0x9c, 0x96, 0xb2, 0x1d, 0x25, 0x23, 0xe2, 0xf2, 0x27,
    +	0xeb, 0x33, 0xfb, 0x7b, 0xa5, 0xf1, 0xd5, 0x04, 0x2c, 0x8f, 0x74, 0x8a, 0x48, 0x46, 0x72, 0xac,
    +	0x81, 0x6e, 0x93, 0x63, 0xd9, 0x5f, 0xb4, 0xe0, 0x14, 0xbd, 0xe0, 0x6a, 0xd7, 0x73, 0xb4, 0xe8,
    +	0x4e, 0xd3, 0xe5, 0x7a, 0x1a, 0x71, 0xd5, 0x30, 0x59, 0x5d, 0x79, 0x99, 0x6b, 0x69, 0x14, 0x94,
    +	0x9e, 0xf0, 0xdb, 0xae, 0x57, 0x4b, 0x9e, 0xf0, 0xd7, 0x5c, 0xaf, 0x86, 0x19, 0x44, 0x5d, 0x59,
    +	0xc5, 0xdc, 0x08, 0xfb, 0x5f, 0xa3, 0x7b, 0x95, 0xf6, 0xe5, 0x3b, 0xda, 0x0d, 0xf4, 0x8c, 0xae,
    +	0x53, 0x15, 0xe6, 0x93, 0xb9, 0xfa, 0xd4, 0x2f, 0x58, 0x20, 0xbc, 0xdf, 0xbb, 0xb8, 0x93, 0xdf,
    +	0x86, 0xe1, 0x9d, 0x74, 0xca, 0xd7, 0x73, 0xf9, 0xe1, 0x00, 0x44, 0xa2, 0x57, 0xc5, 0xa2, 0x1b,
    +	0xe9, 0x5d, 0x0d, 0x5a, 0x76, 0x0d, 0x04, 0x74, 0x81, 0x30, 0xad, 0x46, 0xe7, 0xde, 0x3c, 0x0f,
    +	0x50, 0x63, 0xb8, 0x2c, 0x0f, 0x7c, 0xc1, 0xe4, 0xb8, 0x16, 0x14, 0x04, 0x6b, 0x58, 0xf6, 0xaf,
    +	0x16, 0x61, 0x48, 0xa6, 0x18, 0x6d, 0x79, 0xdd, 0xc8, 0x1e, 0x75, 0xc6, 0xa9, 0xd0, 0x91, 0x71,
    +	0x7a, 0x07, 0x26, 0x02, 0x52, 0x6d, 0x05, 0xa1, 0xbb, 0x43, 0x24, 0x58, 0x6c, 0x92, 0x19, 0x9e,
    +	0xe0, 0x21, 0x01, 0x3c, 0x60, 0x21, 0xb2, 0x12, 0x85, 0x4c, 0x69, 0x9c, 0x26, 0x84, 0x2e, 0xc2,
    +	0x20, 0x13, 0xbd, 0x97, 0x63, 0x81, 0xb0, 0x12, 0x7c, 0xad, 0x48, 0x00, 0x8e, 0x71, 0xd8, 0xe3,
    +	0xa0, 0x75, 0x9b, 0xa1, 0x27, 0x3c, 0xc1, 0x2b, 0xbc, 0x18, 0x4b, 0x38, 0xfa, 0x38, 0x8c, 0xf3,
    +	0x7a, 0x81, 0xdf, 0x74, 0x36, 0xb9, 0x4a, 0xb0, 0x57, 0x85, 0xd7, 0x19, 0x5f, 0x49, 0xc0, 0x0e,
    +	0xf6, 0x4a, 0xc7, 0x92, 0x65, 0xac, 0xdb, 0x29, 0x2a, 0xcc, 0xf2, 0x8f, 0x37, 0x42, 0xef, 0x8c,
    +	0x94, 0xc1, 0x60, 0x0c, 0xc2, 0x3a, 0x9e, 0xfd, 0xcf, 0x16, 0x4c, 0x68, 0x53, 0xd5, 0x75, 0x8e,
    +	0x0d, 0x63, 0x90, 0x0a, 0x5d, 0x0c, 0xd2, 0xe1, 0xa2, 0x3d, 0x64, 0xce, 0x70, 0xcf, 0x03, 0x9a,
    +	0x61, 0xfb, 0x33, 0x80, 0xd2, 0xf9, 0x6b, 0xd1, 0x9b, 0xdc, 0x90, 0xdf, 0x0d, 0x48, 0xad, 0x9d,
    +	0xc2, 0x5f, 0x8f, 0x9c, 0x23, 0x3d, 0x57, 0x79, 0x2d, 0xac, 0xea, 0xdb, 0x3f, 0xde, 0x03, 0xe3,
    +	0xc9, 0x58, 0x1d, 0xe8, 0x2a, 0xf4, 0x71, 0x2e, 0x5d, 0x90, 0x6f, 0x63, 0x4f, 0xa6, 0x45, 0xf8,
    +	0xe0, 0xf9, 0x6f, 0x38, 0x77, 0x2f, 0xea, 0xa3, 0x77, 0x60, 0xa8, 0xe6, 0xdf, 0xf1, 0xee, 0x38,
    +	0x41, 0x6d, 0xb6, 0xbc, 0x2c, 0x4e, 0x88, 0x4c, 0x01, 0xd4, 0x42, 0x8c, 0xa6, 0x47, 0x0d, 0x61,
    +	0xb6, 0x13, 0x31, 0x08, 0xeb, 0xe4, 0xd0, 0x1a, 0x4b, 0xc9, 0xb4, 0xe1, 0x6e, 0xae, 0x38, 0xcd,
    +	0x76, 0x5e, 0x5d, 0xf3, 0x12, 0x49, 0xa3, 0x3c, 0x22, 0xf2, 0x36, 0x71, 0x00, 0x8e, 0x09, 0xa1,
    +	0xcf, 0xc1, 0x64, 0x98, 0xa3, 0x12, 0xcb, 0x4b, 0x67, 0xde, 0x4e, 0x4b, 0xc4, 0x85, 0x29, 0x59,
    +	0xca, 0xb3, 0xac, 0x66, 0xd0, 0x5d, 0x40, 0x42, 0xf4, 0xbc, 0x16, 0xb4, 0xc2, 0x68, 0xae, 0xe5,
    +	0xd5, 0xea, 0x32, 0x65, 0xd3, 0x87, 0xb3, 0xe5, 0x04, 0x49, 0x6c, 0xad, 0x6d, 0x16, 0x12, 0x38,
    +	0x8d, 0x81, 0x33, 0xda, 0xb0, 0xbf, 0xd0, 0x03, 0xd3, 0x32, 0x61, 0x74, 0x86, 0xf7, 0xca, 0xe7,
    +	0xad, 0x84, 0xfb, 0xca, 0x2b, 0xf9, 0x07, 0xfd, 0x43, 0x73, 0x62, 0xf9, 0x52, 0xda, 0x89, 0xe5,
    +	0xb5, 0x43, 0x76, 0xe3, 0x81, 0xb9, 0xb2, 0x7c, 0xcf, 0xfa, 0x9f, 0xec, 0x1f, 0x03, 0xe3, 0x6a,
    +	0x46, 0x98, 0xc7, 0x5b, 0x2f, 0x4b, 0xd5, 0x51, 0xce, 0xf3, 0xff, 0xaa, 0xc0, 0x31, 0x2e, 0xfb,
    +	0x61, 0x19, 0x95, 0x9d, 0x9d, 0xb3, 0x8a, 0x0e, 0xa5, 0x49, 0x1a, 0xcd, 0x68, 0x77, 0xc1, 0x0d,
    +	0x44, 0x8f, 0x33, 0x69, 0x2e, 0x0a, 0x9c, 0x34, 0x4d, 0x09, 0xc1, 0x8a, 0x0e, 0xda, 0x81, 0x89,
    +	0x4d, 0x16, 0xf1, 0x49, 0xcb, 0xdd, 0x2c, 0xce, 0x85, 0xcc, 0x7d, 0x7b, 0x65, 0x7e, 0x31, 0x3f,
    +	0xd1, 0x33, 0x7f, 0xfc, 0xa5, 0x50, 0x70, 0xba, 0x09, 0xba, 0x35, 0x8e, 0x39, 0x77, 0xc2, 0xc5,
    +	0xba, 0x13, 0x46, 0x6e, 0x75, 0xae, 0xee, 0x57, 0xb7, 0x2b, 0x91, 0x1f, 0xc8, 0x04, 0x8f, 0x99,
    +	0x6f, 0xaf, 0xd9, 0x5b, 0x95, 0x14, 0xbe, 0xd1, 0xfc, 0xd4, 0xfe, 0x5e, 0xe9, 0x58, 0x16, 0x16,
    +	0xce, 0x6c, 0x0b, 0xad, 0x42, 0xff, 0xa6, 0x1b, 0x61, 0xd2, 0xf4, 0xc5, 0x69, 0x91, 0x79, 0x14,
    +	0x5e, 0xe1, 0x28, 0x46, 0x4b, 0x2c, 0x22, 0x95, 0x00, 0x60, 0x49, 0x04, 0xbd, 0xa9, 0x2e, 0x81,
    +	0xbe, 0x7c, 0x01, 0x6c, 0xda, 0xf6, 0x2e, 0xf3, 0x1a, 0x78, 0x1d, 0x8a, 0xde, 0x46, 0xd8, 0x2e,
    +	0x16, 0xcf, 0xea, 0x92, 0x21, 0x3f, 0x9b, 0xeb, 0xa7, 0x4f, 0xe3, 0xd5, 0xa5, 0x0a, 0xa6, 0x15,
    +	0x99, 0xdb, 0x6b, 0x58, 0x0d, 0x5d, 0x91, 0x2c, 0x2a, 0xd3, 0x0b, 0x78, 0xb9, 0x32, 0x5f, 0x59,
    +	0x36, 0x68, 0xb0, 0xa8, 0x86, 0xac, 0x18, 0xf3, 0xea, 0xe8, 0x26, 0x0c, 0x6e, 0xf2, 0x83, 0x6f,
    +	0x23, 0x14, 0x49, 0xe3, 0x33, 0x2f, 0xa3, 0x2b, 0x12, 0xc9, 0xa0, 0xc7, 0xae, 0x0c, 0x05, 0xc2,
    +	0x31, 0x29, 0xf4, 0x05, 0x0b, 0x8e, 0x27, 0xb3, 0xee, 0x33, 0x67, 0x35, 0x61, 0xa6, 0x96, 0xe9,
    +	0x00, 0x50, 0xce, 0xaa, 0x60, 0x34, 0xc8, 0xd4, 0x2f, 0x99, 0x68, 0x38, 0xbb, 0x39, 0x3a, 0xd0,
    +	0xc1, 0xed, 0x5a, 0xbb, 0xfc, 0x42, 0x89, 0xc0, 0x44, 0x7c, 0xa0, 0xf1, 0xdc, 0x02, 0xa6, 0x15,
    +	0xd1, 0x1a, 0xc0, 0x46, 0x9d, 0x88, 0x88, 0x8f, 0xc2, 0x28, 0x2a, 0xf3, 0xf6, 0x5f, 0x52, 0x58,
    +	0x82, 0x0e, 0x7b, 0x89, 0xc6, 0xa5, 0x58, 0xa3, 0x43, 0x97, 0x52, 0xd5, 0xf5, 0x6a, 0x24, 0x60,
    +	0xca, 0xad, 0x9c, 0xa5, 0x34, 0xcf, 0x30, 0xd2, 0x4b, 0x89, 0x97, 0x63, 0x41, 0x81, 0xd1, 0x22,
    +	0xcd, 0xad, 0x8d, 0xb0, 0x5d, 0x26, 0x8b, 0x79, 0xd2, 0xdc, 0x4a, 0x2c, 0x28, 0x4e, 0x8b, 0x95,
    +	0x63, 0x41, 0x81, 0x6e, 0x99, 0x0d, 0xba, 0x81, 0x48, 0x30, 0x35, 0x96, 0xbf, 0x65, 0x96, 0x38,
    +	0x4a, 0x7a, 0xcb, 0x08, 0x00, 0x96, 0x44, 0xd0, 0xa7, 0x4d, 0x6e, 0x67, 0x9c, 0xd1, 0x7c, 0xa6,
    +	0x03, 0xb7, 0x63, 0xd0, 0x6d, 0xcf, 0xef, 0xbc, 0x02, 0x85, 0x8d, 0x2a, 0x53, 0x8a, 0xe5, 0xe8,
    +	0x0c, 0x96, 0xe6, 0x0d, 0x6a, 0x2c, 0x32, 0xfc, 0xd2, 0x3c, 0x2e, 0x6c, 0x54, 0xe9, 0xd2, 0x77,
    +	0xee, 0xb5, 0x02, 0xb2, 0xe4, 0xd6, 0x89, 0xc8, 0x6a, 0x91, 0xb9, 0xf4, 0x67, 0x25, 0x52, 0x7a,
    +	0xe9, 0x2b, 0x10, 0x8e, 0x49, 0x51, 0xba, 0x31, 0x0f, 0x36, 0x99, 0x4f, 0x57, 0xb1, 0x5a, 0x69,
    +	0xba, 0x99, 0x5c, 0xd8, 0x36, 0x8c, 0xec, 0x84, 0xcd, 0x2d, 0x22, 0x4f, 0x45, 0xa6, 0xae, 0xcb,
    +	0x89, 0x54, 0x71, 0x53, 0x20, 0xba, 0x41, 0xd4, 0x72, 0xea, 0xa9, 0x83, 0x9c, 0x89, 0x56, 0x6e,
    +	0xea, 0xc4, 0xb0, 0x49, 0x9b, 0x2e, 0x84, 0x77, 0x79, 0x38, 0x39, 0xa6, 0xb8, 0xcb, 0x59, 0x08,
    +	0x19, 0x11, 0xe7, 0xf8, 0x42, 0x10, 0x00, 0x2c, 0x89, 0xa8, 0xc1, 0x66, 0x17, 0xd0, 0x89, 0x0e,
    +	0x83, 0x9d, 0xea, 0x6f, 0x3c, 0xd8, 0xec, 0xc2, 0x89, 0x49, 0xb1, 0x8b, 0xa6, 0xb9, 0xe5, 0x47,
    +	0xbe, 0x97, 0xb8, 0xe4, 0x4e, 0xe6, 0x5f, 0x34, 0xe5, 0x0c, 0xfc, 0xf4, 0x45, 0x93, 0x85, 0x85,
    +	0x33, 0xdb, 0xa2, 0x1f, 0xd7, 0x94, 0x91, 0x01, 0x45, 0xe6, 0x8d, 0xa7, 0x72, 0x02, 0x6b, 0xa6,
    +	0xc3, 0x07, 0xf2, 0x8f, 0x53, 0x20, 0x1c, 0x93, 0x42, 0x35, 0x18, 0x6d, 0x1a, 0x11, 0x67, 0x59,
    +	0x06, 0x91, 0x1c, 0xbe, 0x20, 0x2b, 0x36, 0x2d, 0x97, 0x10, 0x99, 0x10, 0x9c, 0xa0, 0xc9, 0x2c,
    +	0xf7, 0xb8, 0xab, 0x1f, 0x4b, 0x30, 0x92, 0x33, 0xd5, 0x19, 0xde, 0x80, 0x7c, 0xaa, 0x05, 0x00,
    +	0x4b, 0x22, 0x74, 0x34, 0x84, 0x83, 0x9a, 0x1f, 0xb2, 0x3c, 0x3d, 0x79, 0x0a, 0xf6, 0x2c, 0x35,
    +	0x91, 0x0c, 0xb3, 0x2e, 0x40, 0x38, 0x26, 0x45, 0x4f, 0x72, 0x7a, 0xe1, 0x9d, 0xce, 0x3f, 0xc9,
    +	0x93, 0xd7, 0x1d, 0x3b, 0xc9, 0xe9, 0x65, 0x57, 0x14, 0x57, 0x9d, 0x8a, 0x0a, 0xce, 0x72, 0x8c,
    +	0xe4, 0xf4, 0x4b, 0x85, 0x15, 0x4f, 0xf7, 0x4b, 0x81, 0x70, 0x4c, 0x8a, 0x5d, 0xc5, 0x2c, 0x34,
    +	0xdd, 0xd9, 0x36, 0x57, 0x31, 0x45, 0xc8, 0xb8, 0x8a, 0xb5, 0xd0, 0x75, 0xf6, 0x8f, 0x17, 0xe0,
    +	0x6c, 0xfb, 0x7d, 0x1b, 0xeb, 0xd0, 0xca, 0xb1, 0xcd, 0x52, 0x42, 0x87, 0xc6, 0x25, 0x3a, 0x31,
    +	0x56, 0xd7, 0x01, 0x87, 0xaf, 0xc0, 0x84, 0x72, 0x47, 0xac, 0xbb, 0xd5, 0x5d, 0x2d, 0xb1, 0xa8,
    +	0x0a, 0xcd, 0x53, 0x49, 0x22, 0xe0, 0x74, 0x1d, 0x34, 0x0b, 0x63, 0x46, 0xe1, 0xf2, 0x82, 0x78,
    +	0xfe, 0xc7, 0xd9, 0x31, 0x4c, 0x30, 0x4e, 0xe2, 0xdb, 0xbf, 0x66, 0xc1, 0xc9, 0x9c, 0x3c, 0xf3,
    +	0x5d, 0xc7, 0xd3, 0xdd, 0x80, 0xb1, 0xa6, 0x59, 0xb5, 0x43, 0x08, 0x70, 0x23, 0x9b, 0xbd, 0xea,
    +	0x6b, 0x02, 0x80, 0x93, 0x44, 0xed, 0x5f, 0x29, 0xc0, 0x99, 0xb6, 0xf6, 0xf5, 0x08, 0xc3, 0x89,
    +	0xcd, 0x46, 0xe8, 0xcc, 0x07, 0xa4, 0x46, 0xbc, 0xc8, 0x75, 0xea, 0x95, 0x26, 0xa9, 0x6a, 0x5a,
    +	0x50, 0x66, 0xa8, 0x7e, 0x65, 0xa5, 0x32, 0x9b, 0xc6, 0xc0, 0x39, 0x35, 0xd1, 0x12, 0xa0, 0x34,
    +	0x44, 0xcc, 0x30, 0x7b, 0xe2, 0xa6, 0xe9, 0xe1, 0x8c, 0x1a, 0xe8, 0x65, 0x18, 0x51, 0x76, 0xfb,
    +	0xda, 0x8c, 0xb3, 0x0b, 0x02, 0xeb, 0x00, 0x6c, 0xe2, 0xa1, 0x4b, 0x3c, 0x6d, 0x92, 0x48, 0xb0,
    +	0x25, 0x54, 0xa6, 0x63, 0x32, 0x27, 0x92, 0x28, 0xc6, 0x3a, 0xce, 0xdc, 0xe5, 0x3f, 0xfd, 0xf6,
    +	0xd9, 0x0f, 0xfd, 0xc5, 0xb7, 0xcf, 0x7e, 0xe8, 0xaf, 0xbe, 0x7d, 0xf6, 0x43, 0x3f, 0xb4, 0x7f,
    +	0xd6, 0xfa, 0xd3, 0xfd, 0xb3, 0xd6, 0x5f, 0xec, 0x9f, 0xb5, 0xfe, 0x6a, 0xff, 0xac, 0xf5, 0xff,
    +	0xee, 0x9f, 0xb5, 0xbe, 0xfc, 0xb7, 0x67, 0x3f, 0xf4, 0x36, 0x8a, 0x23, 0x54, 0x5f, 0xa4, 0xb3,
    +	0x73, 0x71, 0xe7, 0xd2, 0x7f, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x60, 0x45, 0x7a, 0xd6, 0xa3, 0x24,
    +	0x01, 0x00,
     }
     
     func (m *AWSElasticBlockStoreVolumeSource) Marshal() (dAtA []byte, err error) {
    @@ -7600,6 +7872,41 @@ func (m *Affinity) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *AppArmorProfile) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *AppArmorProfile) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *AppArmorProfile) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.LocalhostProfile != nil {
    +		i -= len(*m.LocalhostProfile)
    +		copy(dAtA[i:], *m.LocalhostProfile)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.LocalhostProfile)))
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.Type)
    +	copy(dAtA[i:], m.Type)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *AttachedVolume) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -8358,43 +8665,6 @@ func (m *CinderVolumeSource) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    -func (m *ClaimSource) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ClaimSource) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ClaimSource) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if m.ResourceClaimTemplateName != nil {
    -		i -= len(*m.ResourceClaimTemplateName)
    -		copy(dAtA[i:], *m.ResourceClaimTemplateName)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ResourceClaimTemplateName)))
    -		i--
    -		dAtA[i] = 0x12
    -	}
    -	if m.ResourceClaimName != nil {
    -		i -= len(*m.ResourceClaimName)
    -		copy(dAtA[i:], *m.ResourceClaimName)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ResourceClaimName)))
    -		i--
    -		dAtA[i] = 0xa
    -	}
    -	return len(dAtA) - i, nil
    -}
    -
     func (m *ClientIPConfig) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -9617,6 +9887,46 @@ func (m *ContainerStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if len(m.AllocatedResourcesStatus) > 0 {
    +		for iNdEx := len(m.AllocatedResourcesStatus) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.AllocatedResourcesStatus[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x72
    +		}
    +	}
    +	if m.User != nil {
    +		{
    +			size, err := m.User.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x6a
    +	}
    +	if len(m.VolumeMounts) > 0 {
    +		for iNdEx := len(m.VolumeMounts) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.VolumeMounts[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x62
    +		}
    +	}
     	if m.Resources != nil {
     		{
     			size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
    @@ -9722,6 +10032,41 @@ func (m *ContainerStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *ContainerUser) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ContainerUser) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ContainerUser) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.Linux != nil {
    +		{
    +			size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *DaemonEndpoint) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -11822,6 +12167,39 @@ func (m *ISCSIVolumeSource) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *ImageVolumeSource) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ImageVolumeSource) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ImageVolumeSource) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.PullPolicy)
    +	copy(dAtA[i:], m.PullPolicy)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.PullPolicy)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Reference)
    +	copy(dAtA[i:], m.Reference)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reference)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *KeyToPath) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -12278,6 +12656,42 @@ func (m *LimitRangeSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *LinuxContainerUser) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *LinuxContainerUser) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *LinuxContainerUser) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.SupplementalGroups) > 0 {
    +		for iNdEx := len(m.SupplementalGroups) - 1; iNdEx >= 0; iNdEx-- {
    +			i = encodeVarintGenerated(dAtA, i, uint64(m.SupplementalGroups[iNdEx]))
    +			i--
    +			dAtA[i] = 0x18
    +		}
    +	}
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.GID))
    +	i--
    +	dAtA[i] = 0x10
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.UID))
    +	i--
    +	dAtA[i] = 0x8
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *List) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -13110,6 +13524,39 @@ func (m *NodeDaemonEndpoints) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *NodeFeatures) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *NodeFeatures) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *NodeFeatures) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.SupplementalGroupsPolicy != nil {
    +		i--
    +		if *m.SupplementalGroupsPolicy {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x8
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *NodeList) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -13185,7 +13632,7 @@ func (m *NodeProxyOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    -func (m *NodeResources) Marshal() (dAtA []byte, err error) {
    +func (m *NodeRuntimeHandler) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -13195,44 +13642,75 @@ func (m *NodeResources) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *NodeResources) MarshalTo(dAtA []byte) (int, error) {
    +func (m *NodeRuntimeHandler) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *NodeResources) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *NodeRuntimeHandler) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.Capacity) > 0 {
    -		keysForCapacity := make([]string, 0, len(m.Capacity))
    -		for k := range m.Capacity {
    -			keysForCapacity = append(keysForCapacity, string(k))
    -		}
    -		github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity)
    -		for iNdEx := len(keysForCapacity) - 1; iNdEx >= 0; iNdEx-- {
    -			v := m.Capacity[ResourceName(keysForCapacity[iNdEx])]
    -			baseI := i
    -			{
    -				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	if m.Features != nil {
    +		{
    +			size, err := m.Features.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
     			}
    -			i--
    -			dAtA[i] = 0x12
    -			i -= len(keysForCapacity[iNdEx])
    -			copy(dAtA[i:], keysForCapacity[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForCapacity[iNdEx])))
    -			i--
    -			dAtA[i] = 0xa
    -			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    -			i--
    -			dAtA[i] = 0xa
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *NodeRuntimeHandlerFeatures) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *NodeRuntimeHandlerFeatures) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *NodeRuntimeHandlerFeatures) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.UserNamespaces != nil {
    +		i--
    +		if *m.UserNamespaces {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
     		}
    +		i--
    +		dAtA[i] = 0x10
    +	}
    +	if m.RecursiveReadOnlyMounts != nil {
    +		i--
    +		if *m.RecursiveReadOnlyMounts {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x8
     	}
     	return len(dAtA) - i, nil
     }
    @@ -13468,6 +13946,32 @@ func (m *NodeStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.Features != nil {
    +		{
    +			size, err := m.Features.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x6a
    +	}
    +	if len(m.RuntimeHandlers) > 0 {
    +		for iNdEx := len(m.RuntimeHandlers) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.RuntimeHandlers[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x62
    +		}
    +	}
     	if m.Config != nil {
     		{
     			size, err := m.Config.MarshalToSizedBuffer(dAtA[:i])
    @@ -15516,6 +16020,13 @@ func (m *PodLogOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.Stream != nil {
    +		i -= len(*m.Stream)
    +		copy(dAtA[i:], *m.Stream)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Stream)))
    +		i--
    +		dAtA[i] = 0x52
    +	}
     	i--
     	if m.InsecureSkipTLSVerifyBackend {
     		dAtA[i] = 1
    @@ -15717,16 +16228,20 @@ func (m *PodResourceClaim) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    -	{
    -		size, err := m.Source.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	if m.ResourceClaimTemplateName != nil {
    +		i -= len(*m.ResourceClaimTemplateName)
    +		copy(dAtA[i:], *m.ResourceClaimTemplateName)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ResourceClaimTemplateName)))
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if m.ResourceClaimName != nil {
    +		i -= len(*m.ResourceClaimName)
    +		copy(dAtA[i:], *m.ResourceClaimName)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ResourceClaimName)))
    +		i--
    +		dAtA[i] = 0x1a
     	}
    -	i--
    -	dAtA[i] = 0x12
     	i -= len(m.Name)
     	copy(dAtA[i:], m.Name)
     	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    @@ -15818,6 +16333,32 @@ func (m *PodSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.SELinuxChangePolicy != nil {
    +		i -= len(*m.SELinuxChangePolicy)
    +		copy(dAtA[i:], *m.SELinuxChangePolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SELinuxChangePolicy)))
    +		i--
    +		dAtA[i] = 0x6a
    +	}
    +	if m.SupplementalGroupsPolicy != nil {
    +		i -= len(*m.SupplementalGroupsPolicy)
    +		copy(dAtA[i:], *m.SupplementalGroupsPolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SupplementalGroupsPolicy)))
    +		i--
    +		dAtA[i] = 0x62
    +	}
    +	if m.AppArmorProfile != nil {
    +		{
    +			size, err := m.AppArmorProfile.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x5a
    +	}
     	if m.SeccompProfile != nil {
     		{
     			size, err := m.SeccompProfile.MarshalToSizedBuffer(dAtA[:i])
    @@ -15965,6 +16506,20 @@ func (m *PodSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.Resources != nil {
    +		{
    +			size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x2
    +		i--
    +		dAtA[i] = 0xc2
    +	}
     	if len(m.ResourceClaims) > 0 {
     		for iNdEx := len(m.ResourceClaims) - 1; iNdEx >= 0; iNdEx-- {
     			{
    @@ -17681,6 +18236,11 @@ func (m *ResourceClaim) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	i -= len(m.Request)
    +	copy(dAtA[i:], m.Request)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Request)))
    +	i--
    +	dAtA[i] = 0x12
     	i -= len(m.Name)
     	copy(dAtA[i:], m.Name)
     	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    @@ -17732,6 +18292,39 @@ func (m *ResourceFieldSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *ResourceHealth) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceHealth) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceHealth) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Health)
    +	copy(dAtA[i:], m.Health)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Health)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.ResourceID)
    +	copy(dAtA[i:], m.ResourceID)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceID)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *ResourceQuota) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -18081,6 +18674,48 @@ func (m *ResourceRequirements) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *ResourceStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Resources) > 0 {
    +		for iNdEx := len(m.Resources) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Resources[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *SELinuxOptions) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -18813,6 +19448,18 @@ func (m *SecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.AppArmorProfile != nil {
    +		{
    +			size, err := m.AppArmorProfile.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x62
    +	}
     	if m.SeccompProfile != nil {
     		{
     			size, err := m.SeccompProfile.MarshalToSizedBuffer(dAtA[:i])
    @@ -19314,6 +19961,15 @@ func (m *ServiceSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.TrafficDistribution != nil {
    +		i -= len(*m.TrafficDistribution)
    +		copy(dAtA[i:], *m.TrafficDistribution)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.TrafficDistribution)))
    +		i--
    +		dAtA[i] = 0x1
    +		i--
    +		dAtA[i] = 0xba
    +	}
     	if m.InternalTrafficPolicy != nil {
     		i -= len(*m.InternalTrafficPolicy)
     		copy(dAtA[i:], *m.InternalTrafficPolicy)
    @@ -20208,6 +20864,13 @@ func (m *VolumeMount) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.RecursiveReadOnly != nil {
    +		i -= len(*m.RecursiveReadOnly)
    +		copy(dAtA[i:], *m.RecursiveReadOnly)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.RecursiveReadOnly)))
    +		i--
    +		dAtA[i] = 0x3a
    +	}
     	i -= len(m.SubPathExpr)
     	copy(dAtA[i:], m.SubPathExpr)
     	i = encodeVarintGenerated(dAtA, i, uint64(len(m.SubPathExpr)))
    @@ -20246,6 +20909,54 @@ func (m *VolumeMount) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *VolumeMountStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *VolumeMountStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *VolumeMountStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.RecursiveReadOnly != nil {
    +		i -= len(*m.RecursiveReadOnly)
    +		copy(dAtA[i:], *m.RecursiveReadOnly)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.RecursiveReadOnly)))
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	i--
    +	if m.ReadOnly {
    +		dAtA[i] = 1
    +	} else {
    +		dAtA[i] = 0
    +	}
    +	i--
    +	dAtA[i] = 0x18
    +	i -= len(m.MountPath)
    +	copy(dAtA[i:], m.MountPath)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.MountPath)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *VolumeNodeAffinity) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -20465,6 +21176,20 @@ func (m *VolumeSource) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.Image != nil {
    +		{
    +			size, err := m.Image.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1
    +		i--
    +		dAtA[i] = 0xf2
    +	}
     	if m.Ephemeral != nil {
     		{
     			size, err := m.Ephemeral.MarshalToSizedBuffer(dAtA[:i])
    @@ -21024,6 +21749,21 @@ func (m *Affinity) Size() (n int) {
     	return n
     }
     
    +func (m *AppArmorProfile) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Type)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.LocalhostProfile != nil {
    +		l = len(*m.LocalhostProfile)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
     func (m *AttachedVolume) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -21308,23 +22048,6 @@ func (m *CinderVolumeSource) Size() (n int) {
     	return n
     }
     
    -func (m *ClaimSource) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	if m.ResourceClaimName != nil {
    -		l = len(*m.ResourceClaimName)
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if m.ResourceClaimTemplateName != nil {
    -		l = len(*m.ResourceClaimTemplateName)
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	return n
    -}
    -
     func (m *ClientIPConfig) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -21803,6 +22526,35 @@ func (m *ContainerStatus) Size() (n int) {
     		l = m.Resources.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if len(m.VolumeMounts) > 0 {
    +		for _, e := range m.VolumeMounts {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.User != nil {
    +		l = m.User.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.AllocatedResourcesStatus) > 0 {
    +		for _, e := range m.AllocatedResourcesStatus {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ContainerUser) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Linux != nil {
    +		l = m.Linux.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -22587,6 +23339,19 @@ func (m *ISCSIVolumeSource) Size() (n int) {
     	return n
     }
     
    +func (m *ImageVolumeSource) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Reference)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.PullPolicy)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
     func (m *KeyToPath) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -22746,6 +23511,22 @@ func (m *LimitRangeSpec) Size() (n int) {
     	return n
     }
     
    +func (m *LinuxContainerUser) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	n += 1 + sovGenerated(uint64(m.UID))
    +	n += 1 + sovGenerated(uint64(m.GID))
    +	if len(m.SupplementalGroups) > 0 {
    +		for _, e := range m.SupplementalGroups {
    +			n += 1 + sovGenerated(uint64(e))
    +		}
    +	}
    +	return n
    +}
    +
     func (m *List) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -23052,6 +23833,18 @@ func (m *NodeDaemonEndpoints) Size() (n int) {
     	return n
     }
     
    +func (m *NodeFeatures) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.SupplementalGroupsPolicy != nil {
    +		n += 2
    +	}
    +	return n
    +}
    +
     func (m *NodeList) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -23080,20 +23873,32 @@ func (m *NodeProxyOptions) Size() (n int) {
     	return n
     }
     
    -func (m *NodeResources) Size() (n int) {
    +func (m *NodeRuntimeHandler) Size() (n int) {
     	if m == nil {
     		return 0
     	}
     	var l int
     	_ = l
    -	if len(m.Capacity) > 0 {
    -		for k, v := range m.Capacity {
    -			_ = k
    -			_ = v
    -			l = v.Size()
    -			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    -			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    -		}
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Features != nil {
    +		l = m.Features.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *NodeRuntimeHandlerFeatures) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.RecursiveReadOnlyMounts != nil {
    +		n += 2
    +	}
    +	if m.UserNamespaces != nil {
    +		n += 2
     	}
     	return n
     }
    @@ -23249,6 +24054,16 @@ func (m *NodeStatus) Size() (n int) {
     		l = m.Config.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if len(m.RuntimeHandlers) > 0 {
    +		for _, e := range m.RuntimeHandlers {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.Features != nil {
    +		l = m.Features.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -23954,6 +24769,10 @@ func (m *PodLogOptions) Size() (n int) {
     		n += 1 + sovGenerated(uint64(*m.LimitBytes))
     	}
     	n += 2
    +	if m.Stream != nil {
    +		l = len(*m.Stream)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -24012,8 +24831,14 @@ func (m *PodResourceClaim) Size() (n int) {
     	_ = l
     	l = len(m.Name)
     	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Source.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    +	if m.ResourceClaimName != nil {
    +		l = len(*m.ResourceClaimName)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.ResourceClaimTemplateName != nil {
    +		l = len(*m.ResourceClaimTemplateName)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -24088,6 +24913,18 @@ func (m *PodSecurityContext) Size() (n int) {
     		l = m.SeccompProfile.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if m.AppArmorProfile != nil {
    +		l = m.AppArmorProfile.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.SupplementalGroupsPolicy != nil {
    +		l = len(*m.SupplementalGroupsPolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.SELinuxChangePolicy != nil {
    +		l = len(*m.SELinuxChangePolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -24262,6 +25099,10 @@ func (m *PodSpec) Size() (n int) {
     			n += 2 + l + sovGenerated(uint64(l))
     		}
     	}
    +	if m.Resources != nil {
    +		l = m.Resources.Size()
    +		n += 2 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -24727,6 +25568,8 @@ func (m *ResourceClaim) Size() (n int) {
     	_ = l
     	l = len(m.Name)
     	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Request)
    +	n += 1 + l + sovGenerated(uint64(l))
     	return n
     }
     
    @@ -24745,6 +25588,19 @@ func (m *ResourceFieldSelector) Size() (n int) {
     	return n
     }
     
    +func (m *ResourceHealth) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.ResourceID)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Health)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
     func (m *ResourceQuota) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -24865,6 +25721,23 @@ func (m *ResourceRequirements) Size() (n int) {
     	return n
     }
     
    +func (m *ResourceStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Resources) > 0 {
    +		for _, e := range m.Resources {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
     func (m *SELinuxOptions) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -25172,6 +26045,10 @@ func (m *SecurityContext) Size() (n int) {
     		l = m.SeccompProfile.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if m.AppArmorProfile != nil {
    +		l = m.AppArmorProfile.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -25386,6 +26263,10 @@ func (m *ServiceSpec) Size() (n int) {
     		l = len(*m.InternalTrafficPolicy)
     		n += 2 + l + sovGenerated(uint64(l))
     	}
    +	if m.TrafficDistribution != nil {
    +		l = len(*m.TrafficDistribution)
    +		n += 2 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -25684,6 +26565,28 @@ func (m *VolumeMount) Size() (n int) {
     	}
     	l = len(m.SubPathExpr)
     	n += 1 + l + sovGenerated(uint64(l))
    +	if m.RecursiveReadOnly != nil {
    +		l = len(*m.RecursiveReadOnly)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *VolumeMountStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.MountPath)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	n += 2
    +	if m.RecursiveReadOnly != nil {
    +		l = len(*m.RecursiveReadOnly)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -25878,6 +26781,10 @@ func (m *VolumeSource) Size() (n int) {
     		l = m.Ephemeral.Size()
     		n += 2 + l + sovGenerated(uint64(l))
     	}
    +	if m.Image != nil {
    +		l = m.Image.Size()
    +		n += 2 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -25965,6 +26872,17 @@ func (this *Affinity) String() string {
     	}, "")
     	return s
     }
    +func (this *AppArmorProfile) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&AppArmorProfile{`,
    +		`Type:` + fmt.Sprintf("%v", this.Type) + `,`,
    +		`LocalhostProfile:` + valueToStringGenerated(this.LocalhostProfile) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *AttachedVolume) String() string {
     	if this == nil {
     		return "nil"
    @@ -26162,17 +27080,6 @@ func (this *CinderVolumeSource) String() string {
     	}, "")
     	return s
     }
    -func (this *ClaimSource) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ClaimSource{`,
    -		`ResourceClaimName:` + valueToStringGenerated(this.ResourceClaimName) + `,`,
    -		`ResourceClaimTemplateName:` + valueToStringGenerated(this.ResourceClaimTemplateName) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
     func (this *ClientIPConfig) String() string {
     	if this == nil {
     		return "nil"
    @@ -26515,6 +27422,16 @@ func (this *ContainerStatus) String() string {
     	if this == nil {
     		return "nil"
     	}
    +	repeatedStringForVolumeMounts := "[]VolumeMountStatus{"
    +	for _, f := range this.VolumeMounts {
    +		repeatedStringForVolumeMounts += strings.Replace(strings.Replace(f.String(), "VolumeMountStatus", "VolumeMountStatus", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForVolumeMounts += "}"
    +	repeatedStringForAllocatedResourcesStatus := "[]ResourceStatus{"
    +	for _, f := range this.AllocatedResourcesStatus {
    +		repeatedStringForAllocatedResourcesStatus += strings.Replace(strings.Replace(f.String(), "ResourceStatus", "ResourceStatus", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForAllocatedResourcesStatus += "}"
     	keysForAllocatedResources := make([]string, 0, len(this.AllocatedResources))
     	for k := range this.AllocatedResources {
     		keysForAllocatedResources = append(keysForAllocatedResources, string(k))
    @@ -26537,6 +27454,19 @@ func (this *ContainerStatus) String() string {
     		`Started:` + valueToStringGenerated(this.Started) + `,`,
     		`AllocatedResources:` + mapStringForAllocatedResources + `,`,
     		`Resources:` + strings.Replace(this.Resources.String(), "ResourceRequirements", "ResourceRequirements", 1) + `,`,
    +		`VolumeMounts:` + repeatedStringForVolumeMounts + `,`,
    +		`User:` + strings.Replace(this.User.String(), "ContainerUser", "ContainerUser", 1) + `,`,
    +		`AllocatedResourcesStatus:` + repeatedStringForAllocatedResourcesStatus + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ContainerUser) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ContainerUser{`,
    +		`Linux:` + strings.Replace(this.Linux.String(), "LinuxContainerUser", "LinuxContainerUser", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -27120,6 +28050,17 @@ func (this *ISCSIVolumeSource) String() string {
     	}, "")
     	return s
     }
    +func (this *ImageVolumeSource) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ImageVolumeSource{`,
    +		`Reference:` + fmt.Sprintf("%v", this.Reference) + `,`,
    +		`PullPolicy:` + fmt.Sprintf("%v", this.PullPolicy) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *KeyToPath) String() string {
     	if this == nil {
     		return "nil"
    @@ -27263,6 +28204,18 @@ func (this *LimitRangeSpec) String() string {
     	}, "")
     	return s
     }
    +func (this *LinuxContainerUser) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&LinuxContainerUser{`,
    +		`UID:` + fmt.Sprintf("%v", this.UID) + `,`,
    +		`GID:` + fmt.Sprintf("%v", this.GID) + `,`,
    +		`SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *List) String() string {
     	if this == nil {
     		return "nil"
    @@ -27511,6 +28464,16 @@ func (this *NodeDaemonEndpoints) String() string {
     	}, "")
     	return s
     }
    +func (this *NodeFeatures) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&NodeFeatures{`,
    +		`SupplementalGroupsPolicy:` + valueToStringGenerated(this.SupplementalGroupsPolicy) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *NodeList) String() string {
     	if this == nil {
     		return "nil"
    @@ -27537,22 +28500,24 @@ func (this *NodeProxyOptions) String() string {
     	}, "")
     	return s
     }
    -func (this *NodeResources) String() string {
    +func (this *NodeRuntimeHandler) String() string {
     	if this == nil {
     		return "nil"
     	}
    -	keysForCapacity := make([]string, 0, len(this.Capacity))
    -	for k := range this.Capacity {
    -		keysForCapacity = append(keysForCapacity, string(k))
    -	}
    -	github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity)
    -	mapStringForCapacity := "ResourceList{"
    -	for _, k := range keysForCapacity {
    -		mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[ResourceName(k)])
    +	s := strings.Join([]string{`&NodeRuntimeHandler{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Features:` + strings.Replace(this.Features.String(), "NodeRuntimeHandlerFeatures", "NodeRuntimeHandlerFeatures", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *NodeRuntimeHandlerFeatures) String() string {
    +	if this == nil {
    +		return "nil"
     	}
    -	mapStringForCapacity += "}"
    -	s := strings.Join([]string{`&NodeResources{`,
    -		`Capacity:` + mapStringForCapacity + `,`,
    +	s := strings.Join([]string{`&NodeRuntimeHandlerFeatures{`,
    +		`RecursiveReadOnlyMounts:` + valueToStringGenerated(this.RecursiveReadOnlyMounts) + `,`,
    +		`UserNamespaces:` + valueToStringGenerated(this.UserNamespaces) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -27650,6 +28615,11 @@ func (this *NodeStatus) String() string {
     		repeatedStringForVolumesAttached += strings.Replace(strings.Replace(f.String(), "AttachedVolume", "AttachedVolume", 1), `&`, ``, 1) + ","
     	}
     	repeatedStringForVolumesAttached += "}"
    +	repeatedStringForRuntimeHandlers := "[]NodeRuntimeHandler{"
    +	for _, f := range this.RuntimeHandlers {
    +		repeatedStringForRuntimeHandlers += strings.Replace(strings.Replace(f.String(), "NodeRuntimeHandler", "NodeRuntimeHandler", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForRuntimeHandlers += "}"
     	keysForCapacity := make([]string, 0, len(this.Capacity))
     	for k := range this.Capacity {
     		keysForCapacity = append(keysForCapacity, string(k))
    @@ -27682,6 +28652,8 @@ func (this *NodeStatus) String() string {
     		`VolumesInUse:` + fmt.Sprintf("%v", this.VolumesInUse) + `,`,
     		`VolumesAttached:` + repeatedStringForVolumesAttached + `,`,
     		`Config:` + strings.Replace(this.Config.String(), "NodeConfigStatus", "NodeConfigStatus", 1) + `,`,
    +		`RuntimeHandlers:` + repeatedStringForRuntimeHandlers + `,`,
    +		`Features:` + strings.Replace(this.Features.String(), "NodeFeatures", "NodeFeatures", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -28160,6 +29132,7 @@ func (this *PodLogOptions) String() string {
     		`TailLines:` + valueToStringGenerated(this.TailLines) + `,`,
     		`LimitBytes:` + valueToStringGenerated(this.LimitBytes) + `,`,
     		`InsecureSkipTLSVerifyBackend:` + fmt.Sprintf("%v", this.InsecureSkipTLSVerifyBackend) + `,`,
    +		`Stream:` + valueToStringGenerated(this.Stream) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -28210,7 +29183,8 @@ func (this *PodResourceClaim) String() string {
     	}
     	s := strings.Join([]string{`&PodResourceClaim{`,
     		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Source:` + strings.Replace(strings.Replace(this.Source.String(), "ClaimSource", "ClaimSource", 1), `&`, ``, 1) + `,`,
    +		`ResourceClaimName:` + valueToStringGenerated(this.ResourceClaimName) + `,`,
    +		`ResourceClaimTemplateName:` + valueToStringGenerated(this.ResourceClaimTemplateName) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -28256,6 +29230,9 @@ func (this *PodSecurityContext) String() string {
     		`WindowsOptions:` + strings.Replace(this.WindowsOptions.String(), "WindowsSecurityContextOptions", "WindowsSecurityContextOptions", 1) + `,`,
     		`FSGroupChangePolicy:` + valueToStringGenerated(this.FSGroupChangePolicy) + `,`,
     		`SeccompProfile:` + strings.Replace(this.SeccompProfile.String(), "SeccompProfile", "SeccompProfile", 1) + `,`,
    +		`AppArmorProfile:` + strings.Replace(this.AppArmorProfile.String(), "AppArmorProfile", "AppArmorProfile", 1) + `,`,
    +		`SupplementalGroupsPolicy:` + valueToStringGenerated(this.SupplementalGroupsPolicy) + `,`,
    +		`SELinuxChangePolicy:` + valueToStringGenerated(this.SELinuxChangePolicy) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -28389,6 +29366,7 @@ func (this *PodSpec) String() string {
     		`HostUsers:` + valueToStringGenerated(this.HostUsers) + `,`,
     		`SchedulingGates:` + repeatedStringForSchedulingGates + `,`,
     		`ResourceClaims:` + repeatedStringForResourceClaims + `,`,
    +		`Resources:` + strings.Replace(this.Resources.String(), "ResourceRequirements", "ResourceRequirements", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -28757,6 +29735,7 @@ func (this *ResourceClaim) String() string {
     	}
     	s := strings.Join([]string{`&ResourceClaim{`,
     		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Request:` + fmt.Sprintf("%v", this.Request) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -28773,6 +29752,17 @@ func (this *ResourceFieldSelector) String() string {
     	}, "")
     	return s
     }
    +func (this *ResourceHealth) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceHealth{`,
    +		`ResourceID:` + fmt.Sprintf("%v", this.ResourceID) + `,`,
    +		`Health:` + fmt.Sprintf("%v", this.Health) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *ResourceQuota) String() string {
     	if this == nil {
     		return "nil"
    @@ -28891,6 +29881,22 @@ func (this *ResourceRequirements) String() string {
     	}, "")
     	return s
     }
    +func (this *ResourceStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForResources := "[]ResourceHealth{"
    +	for _, f := range this.Resources {
    +		repeatedStringForResources += strings.Replace(strings.Replace(f.String(), "ResourceHealth", "ResourceHealth", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForResources += "}"
    +	s := strings.Join([]string{`&ResourceStatus{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Resources:` + repeatedStringForResources + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *SELinuxOptions) String() string {
     	if this == nil {
     		return "nil"
    @@ -29115,6 +30121,7 @@ func (this *SecurityContext) String() string {
     		`ProcMount:` + valueToStringGenerated(this.ProcMount) + `,`,
     		`WindowsOptions:` + strings.Replace(this.WindowsOptions.String(), "WindowsSecurityContextOptions", "WindowsSecurityContextOptions", 1) + `,`,
     		`SeccompProfile:` + strings.Replace(this.SeccompProfile.String(), "SeccompProfile", "SeccompProfile", 1) + `,`,
    +		`AppArmorProfile:` + strings.Replace(this.AppArmorProfile.String(), "AppArmorProfile", "AppArmorProfile", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -29272,6 +30279,7 @@ func (this *ServiceSpec) String() string {
     		`AllocateLoadBalancerNodePorts:` + valueToStringGenerated(this.AllocateLoadBalancerNodePorts) + `,`,
     		`LoadBalancerClass:` + valueToStringGenerated(this.LoadBalancerClass) + `,`,
     		`InternalTrafficPolicy:` + valueToStringGenerated(this.InternalTrafficPolicy) + `,`,
    +		`TrafficDistribution:` + valueToStringGenerated(this.TrafficDistribution) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -29490,6 +30498,20 @@ func (this *VolumeMount) String() string {
     		`SubPath:` + fmt.Sprintf("%v", this.SubPath) + `,`,
     		`MountPropagation:` + valueToStringGenerated(this.MountPropagation) + `,`,
     		`SubPathExpr:` + fmt.Sprintf("%v", this.SubPathExpr) + `,`,
    +		`RecursiveReadOnly:` + valueToStringGenerated(this.RecursiveReadOnly) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *VolumeMountStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&VolumeMountStatus{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`MountPath:` + fmt.Sprintf("%v", this.MountPath) + `,`,
    +		`ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`,
    +		`RecursiveReadOnly:` + valueToStringGenerated(this.RecursiveReadOnly) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -29583,6 +30605,7 @@ func (this *VolumeSource) String() string {
     		`StorageOS:` + strings.Replace(this.StorageOS.String(), "StorageOSVolumeSource", "StorageOSVolumeSource", 1) + `,`,
     		`CSI:` + strings.Replace(this.CSI.String(), "CSIVolumeSource", "CSIVolumeSource", 1) + `,`,
     		`Ephemeral:` + strings.Replace(this.Ephemeral.String(), "EphemeralVolumeSource", "EphemeralVolumeSource", 1) + `,`,
    +		`Image:` + strings.Replace(this.Image.String(), "ImageVolumeSource", "ImageVolumeSource", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -29943,7 +30966,7 @@ func (m *Affinity) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *AttachedVolume) Unmarshal(dAtA []byte) error {
    +func (m *AppArmorProfile) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -29966,15 +30989,15 @@ func (m *AttachedVolume) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: AttachedVolume: wiretype end group for non-group")
    +			return fmt.Errorf("proto: AppArmorProfile: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: AttachedVolume: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: AppArmorProfile: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -30002,11 +31025,11 @@ func (m *AttachedVolume) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = UniqueVolumeName(dAtA[iNdEx:postIndex])
    +			m.Type = AppArmorProfileType(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field DevicePath", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field LocalhostProfile", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -30034,91 +31057,8 @@ func (m *AttachedVolume) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.DevicePath = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *AvoidPods) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: AvoidPods: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: AvoidPods: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field PreferAvoidPods", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.PreferAvoidPods = append(m.PreferAvoidPods, PreferAvoidPodsEntry{})
    -			if err := m.PreferAvoidPods[len(m.PreferAvoidPods)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.LocalhostProfile = &s
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -30141,7 +31081,7 @@ func (m *AvoidPods) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *AzureDiskVolumeSource) Unmarshal(dAtA []byte) error {
    +func (m *AttachedVolume) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -30164,15 +31104,213 @@ func (m *AzureDiskVolumeSource) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: AzureDiskVolumeSource: wiretype end group for non-group")
    +			return fmt.Errorf("proto: AttachedVolume: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: AzureDiskVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: AttachedVolume: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field DiskName", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = UniqueVolumeName(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DevicePath", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.DevicePath = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *AvoidPods) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AvoidPods: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AvoidPods: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PreferAvoidPods", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.PreferAvoidPods = append(m.PreferAvoidPods, PreferAvoidPodsEntry{})
    +			if err := m.PreferAvoidPods[len(m.PreferAvoidPods)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *AzureDiskVolumeSource) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AzureDiskVolumeSource: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AzureDiskVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DiskName", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -32486,7 +33624,7 @@ func (m *CinderVolumeSource) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *ClaimSource) Unmarshal(dAtA []byte) error {
    +func (m *ClientIPConfig) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -32509,50 +33647,17 @@ func (m *ClaimSource) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: ClaimSource: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ClientIPConfig: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ClaimSource: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ClientIPConfig: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ResourceClaimName", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			s := string(dAtA[iNdEx:postIndex])
    -			m.ResourceClaimName = &s
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ResourceClaimTemplateName", wireType)
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType)
     			}
    -			var stringLen uint64
    +			var v int32
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -32562,95 +33667,12 @@ func (m *ClaimSource) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				v |= int32(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			s := string(dAtA[iNdEx:postIndex])
    -			m.ResourceClaimTemplateName = &s
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ClientIPConfig) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ClientIPConfig: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ClientIPConfig: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType)
    -			}
    -			var v int32
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int32(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			m.TimeoutSeconds = &v
    +			m.TimeoutSeconds = &v
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -36779,6 +37801,110 @@ func (m *ContainerStatus) Unmarshal(dAtA []byte) error {
     				return err
     			}
     			iNdEx = postIndex
    +		case 12:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field VolumeMounts", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.VolumeMounts = append(m.VolumeMounts, VolumeMountStatus{})
    +			if err := m.VolumeMounts[len(m.VolumeMounts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 13:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field User", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.User == nil {
    +				m.User = &ContainerUser{}
    +			}
    +			if err := m.User.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 14:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllocatedResourcesStatus", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.AllocatedResourcesStatus = append(m.AllocatedResourcesStatus, ResourceStatus{})
    +			if err := m.AllocatedResourcesStatus[len(m.AllocatedResourcesStatus)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -36800,7 +37926,7 @@ func (m *ContainerStatus) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *DaemonEndpoint) Unmarshal(dAtA []byte) error {
    +func (m *ContainerUser) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -36823,17 +37949,17 @@ func (m *DaemonEndpoint) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: DaemonEndpoint: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ContainerUser: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: DaemonEndpoint: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ContainerUser: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType)
     			}
    -			m.Port = 0
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -36843,11 +37969,28 @@ func (m *DaemonEndpoint) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				m.Port |= int32(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Linux == nil {
    +				m.Linux = &LinuxContainerUser{}
    +			}
    +			if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -36869,7 +38012,7 @@ func (m *DaemonEndpoint) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *DownwardAPIProjection) Unmarshal(dAtA []byte) error {
    +func (m *DaemonEndpoint) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -36892,17 +38035,17 @@ func (m *DownwardAPIProjection) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: DownwardAPIProjection: wiretype end group for non-group")
    +			return fmt.Errorf("proto: DaemonEndpoint: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: DownwardAPIProjection: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: DaemonEndpoint: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
     			}
    -			var msglen int
    +			m.Port = 0
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -36912,26 +38055,11 @@ func (m *DownwardAPIProjection) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				m.Port |= int32(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Items = append(m.Items, DownwardAPIVolumeFile{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -36953,7 +38081,7 @@ func (m *DownwardAPIProjection) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *DownwardAPIVolumeFile) Unmarshal(dAtA []byte) error {
    +func (m *DownwardAPIProjection) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -36976,47 +38104,131 @@ func (m *DownwardAPIVolumeFile) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: DownwardAPIVolumeFile: wiretype end group for non-group")
    +			return fmt.Errorf("proto: DownwardAPIProjection: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: DownwardAPIVolumeFile: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: DownwardAPIProjection: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Path = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, DownwardAPIVolumeFile{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DownwardAPIVolumeFile) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DownwardAPIVolumeFile: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DownwardAPIVolumeFile: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Path = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -43495,7 +44707,7 @@ func (m *ISCSIVolumeSource) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *KeyToPath) Unmarshal(dAtA []byte) error {
    +func (m *ImageVolumeSource) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -43518,15 +44730,15 @@ func (m *KeyToPath) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: KeyToPath: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ImageVolumeSource: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: KeyToPath: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ImageVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Reference", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -43554,11 +44766,11 @@ func (m *KeyToPath) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Key = string(dAtA[iNdEx:postIndex])
    +			m.Reference = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field PullPolicy", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -43586,149 +44798,263 @@ func (m *KeyToPath) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Path = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType)
    -			}
    -			var v int32
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int32(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			m.Mode = &v
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *Lifecycle) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: Lifecycle: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: Lifecycle: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field PostStart", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if m.PostStart == nil {
    -				m.PostStart = &LifecycleHandler{}
    -			}
    -			if err := m.PostStart.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field PreStop", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if m.PreStop == nil {
    -				m.PreStop = &LifecycleHandler{}
    -			}
    -			if err := m.PreStop.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.PullPolicy = PullPolicy(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *KeyToPath) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: KeyToPath: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: KeyToPath: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Key = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Path = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType)
    +			}
    +			var v int32
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int32(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.Mode = &v
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *Lifecycle) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: Lifecycle: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: Lifecycle: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PostStart", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.PostStart == nil {
    +				m.PostStart = &LifecycleHandler{}
    +			}
    +			if err := m.PostStart.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PreStop", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.PreStop == nil {
    +				m.PreStop = &LifecycleHandler{}
    +			}
    +			if err := m.PreStop.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -44989,7 +46315,171 @@ func (m *LimitRangeSpec) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *List) Unmarshal(dAtA []byte) error {
    +func (m *LinuxContainerUser) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: LinuxContainerUser: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: LinuxContainerUser: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType)
    +			}
    +			m.UID = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.UID |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field GID", wireType)
    +			}
    +			m.GID = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.GID |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 3:
    +			if wireType == 0 {
    +				var v int64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					v |= int64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				m.SupplementalGroups = append(m.SupplementalGroups, v)
    +			} else if wireType == 2 {
    +				var packedLen int
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					packedLen |= int(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				if packedLen < 0 {
    +					return ErrInvalidLengthGenerated
    +				}
    +				postIndex := iNdEx + packedLen
    +				if postIndex < 0 {
    +					return ErrInvalidLengthGenerated
    +				}
    +				if postIndex > l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				var elementCount int
    +				var count int
    +				for _, integer := range dAtA[iNdEx:postIndex] {
    +					if integer < 128 {
    +						count++
    +					}
    +				}
    +				elementCount = count
    +				if elementCount != 0 && len(m.SupplementalGroups) == 0 {
    +					m.SupplementalGroups = make([]int64, 0, elementCount)
    +				}
    +				for iNdEx < postIndex {
    +					var v int64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						v |= int64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					m.SupplementalGroups = append(m.SupplementalGroups, v)
    +				}
    +			} else {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType)
    +			}
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *List) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -47477,7 +48967,7 @@ func (m *NodeDaemonEndpoints) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *NodeList) Unmarshal(dAtA []byte) error {
    +func (m *NodeFeatures) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -47500,50 +48990,17 @@ func (m *NodeList) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: NodeList: wiretype end group for non-group")
    +			return fmt.Errorf("proto: NodeFeatures: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: NodeList: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: NodeFeatures: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroupsPolicy", wireType)
     			}
    -			var msglen int
    +			var v int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -47553,26 +49010,13 @@ func (m *NodeList) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				v |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Items = append(m.Items, Node{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    +			b := bool(v != 0)
    +			m.SupplementalGroupsPolicy = &b
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -47594,7 +49038,7 @@ func (m *NodeList) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *NodeProxyOptions) Unmarshal(dAtA []byte) error {
    +func (m *NodeList) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -47617,17 +49061,17 @@ func (m *NodeProxyOptions) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: NodeProxyOptions: wiretype end group for non-group")
    +			return fmt.Errorf("proto: NodeList: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: NodeProxyOptions: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: NodeList: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -47637,23 +49081,58 @@ func (m *NodeProxyOptions) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Path = string(dAtA[iNdEx:postIndex])
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, Node{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -47676,7 +49155,7 @@ func (m *NodeProxyOptions) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *NodeResources) Unmarshal(dAtA []byte) error {
    +func (m *NodeProxyOptions) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -47699,15 +49178,129 @@ func (m *NodeResources) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: NodeResources: wiretype end group for non-group")
    +			return fmt.Errorf("proto: NodeProxyOptions: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: NodeResources: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: NodeProxyOptions: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Path = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *NodeRuntimeHandler) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: NodeRuntimeHandler: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: NodeRuntimeHandler: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Features", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -47734,106 +49327,105 @@ func (m *NodeResources) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.Capacity == nil {
    -				m.Capacity = make(ResourceList)
    +			if m.Features == nil {
    +				m.Features = &NodeRuntimeHandlerFeatures{}
     			}
    -			var mapkey ResourceName
    -			mapvalue := &resource.Quantity{}
    -			for iNdEx < postIndex {
    -				entryPreIndex := iNdEx
    -				var wire uint64
    -				for shift := uint(0); ; shift += 7 {
    -					if shift >= 64 {
    -						return ErrIntOverflowGenerated
    -					}
    -					if iNdEx >= l {
    -						return io.ErrUnexpectedEOF
    -					}
    -					b := dAtA[iNdEx]
    -					iNdEx++
    -					wire |= uint64(b&0x7F) << shift
    -					if b < 0x80 {
    -						break
    -					}
    +			if err := m.Features.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *NodeRuntimeHandlerFeatures) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: NodeRuntimeHandlerFeatures: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: NodeRuntimeHandlerFeatures: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field RecursiveReadOnlyMounts", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
     				}
    -				fieldNum := int32(wire >> 3)
    -				if fieldNum == 1 {
    -					var stringLenmapkey uint64
    -					for shift := uint(0); ; shift += 7 {
    -						if shift >= 64 {
    -							return ErrIntOverflowGenerated
    -						}
    -						if iNdEx >= l {
    -							return io.ErrUnexpectedEOF
    -						}
    -						b := dAtA[iNdEx]
    -						iNdEx++
    -						stringLenmapkey |= uint64(b&0x7F) << shift
    -						if b < 0x80 {
    -							break
    -						}
    -					}
    -					intStringLenmapkey := int(stringLenmapkey)
    -					if intStringLenmapkey < 0 {
    -						return ErrInvalidLengthGenerated
    -					}
    -					postStringIndexmapkey := iNdEx + intStringLenmapkey
    -					if postStringIndexmapkey < 0 {
    -						return ErrInvalidLengthGenerated
    -					}
    -					if postStringIndexmapkey > l {
    -						return io.ErrUnexpectedEOF
    -					}
    -					mapkey = ResourceName(dAtA[iNdEx:postStringIndexmapkey])
    -					iNdEx = postStringIndexmapkey
    -				} else if fieldNum == 2 {
    -					var mapmsglen int
    -					for shift := uint(0); ; shift += 7 {
    -						if shift >= 64 {
    -							return ErrIntOverflowGenerated
    -						}
    -						if iNdEx >= l {
    -							return io.ErrUnexpectedEOF
    -						}
    -						b := dAtA[iNdEx]
    -						iNdEx++
    -						mapmsglen |= int(b&0x7F) << shift
    -						if b < 0x80 {
    -							break
    -						}
    -					}
    -					if mapmsglen < 0 {
    -						return ErrInvalidLengthGenerated
    -					}
    -					postmsgIndex := iNdEx + mapmsglen
    -					if postmsgIndex < 0 {
    -						return ErrInvalidLengthGenerated
    -					}
    -					if postmsgIndex > l {
    -						return io.ErrUnexpectedEOF
    -					}
    -					mapvalue = &resource.Quantity{}
    -					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    -						return err
    -					}
    -					iNdEx = postmsgIndex
    -				} else {
    -					iNdEx = entryPreIndex
    -					skippy, err := skipGenerated(dAtA[iNdEx:])
    -					if err != nil {
    -						return err
    -					}
    -					if (skippy < 0) || (iNdEx+skippy) < 0 {
    -						return ErrInvalidLengthGenerated
    -					}
    -					if (iNdEx + skippy) > postIndex {
    -						return io.ErrUnexpectedEOF
    -					}
    -					iNdEx += skippy
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
     				}
     			}
    -			m.Capacity[ResourceName(mapkey)] = *mapvalue
    -			iNdEx = postIndex
    +			b := bool(v != 0)
    +			m.RecursiveReadOnlyMounts = &b
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field UserNamespaces", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.UserNamespaces = &b
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -49060,6 +50652,76 @@ func (m *NodeStatus) Unmarshal(dAtA []byte) error {
     				return err
     			}
     			iNdEx = postIndex
    +		case 12:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field RuntimeHandlers", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.RuntimeHandlers = append(m.RuntimeHandlers, NodeRuntimeHandler{})
    +			if err := m.RuntimeHandlers[len(m.RuntimeHandlers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 13:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Features", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Features == nil {
    +				m.Features = &NodeFeatures{}
    +			}
    +			if err := m.Features.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -55339,6 +57001,39 @@ func (m *PodLogOptions) Unmarshal(dAtA []byte) error {
     				}
     			}
     			m.InsecureSkipTLSVerifyBackend = bool(v != 0)
    +		case 10:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Stream", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.Stream = &s
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -55793,11 +57488,11 @@ func (m *PodResourceClaim) Unmarshal(dAtA []byte) error {
     			}
     			m.Name = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    -		case 2:
    +		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceClaimName", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -55807,24 +57502,57 @@ func (m *PodResourceClaim) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.Source.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.ResourceClaimName = &s
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceClaimTemplateName", wireType)
     			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.ResourceClaimTemplateName = &s
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -56405,61 +58133,47 @@ func (m *PodSecurityContext) Unmarshal(dAtA []byte) error {
     				return err
     			}
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    +		case 11:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AppArmorProfile", wireType)
     			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
     			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
     			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *PodSignature) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
     			}
    -			if iNdEx >= l {
    +			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    +			if m.AppArmorProfile == nil {
    +				m.AppArmorProfile = &AppArmorProfile{}
     			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: PodSignature: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: PodSignature: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    +			if err := m.AppArmorProfile.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 12:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field PodController", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroupsPolicy", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -56469,27 +58183,57 @@ func (m *PodSignature) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.PodController == nil {
    -				m.PodController = &v1.OwnerReference{}
    +			s := SupplementalGroupsPolicy(dAtA[iNdEx:postIndex])
    +			m.SupplementalGroupsPolicy = &s
    +			iNdEx = postIndex
    +		case 13:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SELinuxChangePolicy", wireType)
     			}
    -			if err := m.PodController.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
     			}
    +			s := PodSELinuxChangePolicy(dAtA[iNdEx:postIndex])
    +			m.SELinuxChangePolicy = &s
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -56512,7 +58256,93 @@ func (m *PodSignature) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *PodSpec) Unmarshal(dAtA []byte) error {
    +func (m *PodSignature) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: PodSignature: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: PodSignature: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PodController", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.PodController == nil {
    +				m.PodController = &v1.OwnerReference{}
    +			}
    +			if err := m.PodController.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *PodSpec) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -57894,6 +59724,42 @@ func (m *PodSpec) Unmarshal(dAtA []byte) error {
     				return err
     			}
     			iNdEx = postIndex
    +		case 40:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Resources == nil {
    +				m.Resources = &ResourceRequirements{}
    +			}
    +			if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -62033,6 +63899,38 @@ func (m *ResourceClaim) Unmarshal(dAtA []byte) error {
     			}
     			m.Name = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Request = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -62201,6 +64099,120 @@ func (m *ResourceFieldSelector) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *ResourceHealth) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceHealth: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceHealth: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceID", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ResourceID = ResourceID(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Health", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Health = ResourceHealthStatus(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func (m *ResourceQuota) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
    @@ -63364,6 +65376,122 @@ func (m *ResourceRequirements) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *ResourceStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = ResourceName(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Resources = append(m.Resources, ResourceHealth{})
    +			if err := m.Resources[len(m.Resources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func (m *SELinuxOptions) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
    @@ -66074,59 +68202,9 @@ func (m *SecurityContext) Unmarshal(dAtA []byte) error {
     				return err
     			}
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *SerializedReference) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: SerializedReference: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: SerializedReference: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    +		case 12:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Reference", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field AppArmorProfile", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -66153,7 +68231,10 @@ func (m *SerializedReference) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.Reference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if m.AppArmorProfile == nil {
    +				m.AppArmorProfile = &AppArmorProfile{}
    +			}
    +			if err := m.AppArmorProfile.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -66178,7 +68259,7 @@ func (m *SerializedReference) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *Service) Unmarshal(dAtA []byte) error {
    +func (m *SerializedReference) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -66201,81 +68282,15 @@ func (m *Service) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: Service: wiretype end group for non-group")
    +			return fmt.Errorf("proto: SerializedReference: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: Service: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: SerializedReference: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Reference", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -66302,7 +68317,7 @@ func (m *Service) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.Reference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -66327,7 +68342,7 @@ func (m *Service) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *ServiceAccount) Unmarshal(dAtA []byte) error {
    +func (m *Service) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -66350,10 +68365,10 @@ func (m *ServiceAccount) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: ServiceAccount: wiretype end group for non-group")
    +			return fmt.Errorf("proto: Service: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ServiceAccount: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: Service: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    @@ -66391,7 +68406,7 @@ func (m *ServiceAccount) Unmarshal(dAtA []byte) error {
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -66418,14 +68433,13 @@ func (m *ServiceAccount) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Secrets = append(m.Secrets, ObjectReference{})
    -			if err := m.Secrets[len(m.Secrets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ImagePullSecrets", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -66452,32 +68466,182 @@ func (m *ServiceAccount) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.ImagePullSecrets = append(m.ImagePullSecrets, LocalObjectReference{})
    -			if err := m.ImagePullSecrets[len(m.ImagePullSecrets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 4:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field AutomountServiceAccountToken", wireType)
    -			}
    -			var v int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			b := bool(v != 0)
    -			m.AutomountServiceAccountToken = &b
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ServiceAccount) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ServiceAccount: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ServiceAccount: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Secrets = append(m.Secrets, ObjectReference{})
    +			if err := m.Secrets[len(m.Secrets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ImagePullSecrets", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ImagePullSecrets = append(m.ImagePullSecrets, LocalObjectReference{})
    +			if err := m.ImagePullSecrets[len(m.ImagePullSecrets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AutomountServiceAccountToken", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.AutomountServiceAccountToken = &b
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -67872,94 +70036,11 @@ func (m *ServiceSpec) Unmarshal(dAtA []byte) error {
     			s := ServiceInternalTrafficPolicy(dAtA[iNdEx:postIndex])
     			m.InternalTrafficPolicy = &s
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ServiceStatus) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ServiceStatus: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ServiceStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancer", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.LoadBalancer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    +		case 23:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field TrafficDistribution", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -67969,25 +70050,141 @@ func (m *ServiceStatus) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Conditions = append(m.Conditions, v1.Condition{})
    -			if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.TrafficDistribution = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ServiceStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ServiceStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ServiceStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancer", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.LoadBalancer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Conditions = append(m.Conditions, v1.Condition{})
    +			if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -70049,40 +72246,418 @@ func (m *Volume) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field VolumeSource", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.VolumeSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field VolumeSource", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.VolumeSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *VolumeDevice) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: VolumeDevice: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: VolumeDevice: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DevicePath", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.DevicePath = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *VolumeMount) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: VolumeMount: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: VolumeMount: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.ReadOnly = bool(v != 0)
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MountPath", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.MountPath = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SubPath", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.SubPath = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MountPropagation", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := MountPropagationMode(dAtA[iNdEx:postIndex])
    +			m.MountPropagation = &s
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SubPathExpr", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.SubPathExpr = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field RecursiveReadOnly", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := RecursiveReadOnlyMode(dAtA[iNdEx:postIndex])
    +			m.RecursiveReadOnly = &s
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -70105,7 +72680,7 @@ func (m *Volume) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *VolumeDevice) Unmarshal(dAtA []byte) error {
    +func (m *VolumeMountStatus) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -70128,10 +72703,10 @@ func (m *VolumeDevice) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: VolumeDevice: wiretype end group for non-group")
    +			return fmt.Errorf("proto: VolumeMountStatus: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: VolumeDevice: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: VolumeMountStatus: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    @@ -70168,89 +72743,7 @@ func (m *VolumeDevice) Unmarshal(dAtA []byte) error {
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field DevicePath", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.DevicePath = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *VolumeMount) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: VolumeMount: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: VolumeMount: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field MountPath", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -70278,9 +72771,9 @@ func (m *VolumeMount) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    +			m.MountPath = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    -		case 2:
    +		case 3:
     			if wireType != 0 {
     				return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType)
     			}
    @@ -70300,106 +72793,9 @@ func (m *VolumeMount) Unmarshal(dAtA []byte) error {
     				}
     			}
     			m.ReadOnly = bool(v != 0)
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field MountPath", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.MountPath = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
     		case 4:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field SubPath", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.SubPath = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 5:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field MountPropagation", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			s := MountPropagationMode(dAtA[iNdEx:postIndex])
    -			m.MountPropagation = &s
    -			iNdEx = postIndex
    -		case 6:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field SubPathExpr", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field RecursiveReadOnly", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -70427,7 +72823,8 @@ func (m *VolumeMount) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.SubPathExpr = string(dAtA[iNdEx:postIndex])
    +			s := RecursiveReadOnlyMode(dAtA[iNdEx:postIndex])
    +			m.RecursiveReadOnly = &s
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -72147,6 +74544,42 @@ func (m *VolumeSource) Unmarshal(dAtA []byte) error {
     				return err
     			}
     			iNdEx = postIndex
    +		case 30:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Image == nil {
    +				m.Image = &ImageVolumeSource{}
    +			}
    +			if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    diff --git a/vendor/k8s.io/api/core/v1/generated.proto b/vendor/k8s.io/api/core/v1/generated.proto
    index d099238cdf60..08706987c5e3 100644
    --- a/vendor/k8s.io/api/core/v1/generated.proto
    +++ b/vendor/k8s.io/api/core/v1/generated.proto
    @@ -77,6 +77,25 @@ message Affinity {
       optional PodAntiAffinity podAntiAffinity = 3;
     }
     
    +// AppArmorProfile defines a pod or container's AppArmor settings.
    +// +union
    +message AppArmorProfile {
    +  // type indicates which kind of AppArmor profile will be applied.
    +  // Valid options are:
    +  //   Localhost - a profile pre-loaded on the node.
    +  //   RuntimeDefault - the container runtime's default profile.
    +  //   Unconfined - no AppArmor enforcement.
    +  // +unionDiscriminator
    +  optional string type = 1;
    +
    +  // localhostProfile indicates a profile loaded on the node that should be used.
    +  // The profile must be preconfigured on the node to work.
    +  // Must match the loaded name of the profile.
    +  // Must be set if and only if type is "Localhost".
    +  // +optional
    +  optional string localhostProfile = 2;
    +}
    +
     // AttachedVolume describes a volume attached to a node
     message AttachedVolume {
       // Name of the attached volume
    @@ -93,6 +112,7 @@ message AvoidPods {
       // Bounded-sized list of signatures of pods that should avoid this node, sorted
       // in timestamp order from oldest to newest. Size of the slice is unspecified.
       // +optional
    +  // +listType=atomic
       repeated PreferAvoidPodsEntry preferAvoidPods = 1;
     }
     
    @@ -106,20 +126,24 @@ message AzureDiskVolumeSource {
     
       // cachingMode is the Host Caching mode: None, Read Only, Read Write.
       // +optional
    +  // +default=ref(AzureDataDiskCachingReadWrite)
       optional string cachingMode = 3;
     
       // fsType is Filesystem type to mount.
       // Must be a filesystem type supported by the host operating system.
       // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       // +optional
    +  // +default="ext4"
       optional string fsType = 4;
     
       // readOnly Defaults to false (read/write). ReadOnly here will force
       // the ReadOnly setting in VolumeMounts.
       // +optional
    +  // +default=false
       optional bool readOnly = 5;
     
       // kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
    +  // +default=ref(AzureSharedBlobDisk)
       optional string kind = 6;
     }
     
    @@ -157,18 +181,17 @@ message AzureFileVolumeSource {
     }
     
     // Binding ties one object to another; for example, a pod is bound to a node by a scheduler.
    -// Deprecated in 1.7, please use the bindings subresource of pods instead.
     message Binding {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // The target object that you want to bind to the standard object.
       optional ObjectReference target = 2;
     }
     
    -// Represents storage that is managed by an external CSI volume driver (Beta feature)
    +// Represents storage that is managed by an external CSI volume driver
     message CSIPersistentVolumeSource {
       // driver is the name of the driver to use for this volume.
       // Required.
    @@ -269,10 +292,12 @@ message CSIVolumeSource {
     message Capabilities {
       // Added capabilities
       // +optional
    +  // +listType=atomic
       repeated string add = 1;
     
       // Removed capabilities
       // +optional
    +  // +listType=atomic
       repeated string drop = 2;
     }
     
    @@ -281,6 +306,7 @@ message Capabilities {
     message CephFSPersistentVolumeSource {
       // monitors is Required: Monitors is a collection of Ceph monitors
       // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
    +  // +listType=atomic
       repeated string monitors = 1;
     
       // path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
    @@ -314,6 +340,7 @@ message CephFSPersistentVolumeSource {
     message CephFSVolumeSource {
       // monitors is Required: Monitors is a collection of Ceph monitors
       // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
    +  // +listType=atomic
       repeated string monitors = 1;
     
       // path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
    @@ -398,30 +425,6 @@ message CinderVolumeSource {
       optional LocalObjectReference secretRef = 4;
     }
     
    -// ClaimSource describes a reference to a ResourceClaim.
    -//
    -// Exactly one of these fields should be set.  Consumers of this type must
    -// treat an empty object as if it has an unknown value.
    -message ClaimSource {
    -  // ResourceClaimName is the name of a ResourceClaim object in the same
    -  // namespace as this pod.
    -  optional string resourceClaimName = 1;
    -
    -  // ResourceClaimTemplateName is the name of a ResourceClaimTemplate
    -  // object in the same namespace as this pod.
    -  //
    -  // The template will be used to create a new ResourceClaim, which will
    -  // be bound to this pod. When this pod is deleted, the ResourceClaim
    -  // will also be deleted. The pod name and resource name, along with a
    -  // generated component, will be used to form a unique name for the
    -  // ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
    -  //
    -  // This field is immutable and no changes will be made to the
    -  // corresponding ResourceClaim by the control plane after creating the
    -  // ResourceClaim.
    -  optional string resourceClaimTemplateName = 2;
    -}
    -
     // ClientIPConfig represents the configurations of Client IP based session affinity.
     message ClientIPConfig {
       // timeoutSeconds specifies the seconds of ClientIP type session sticky time.
    @@ -451,7 +454,7 @@ message ClusterTrustBundleProjection {
       // interpreted as "match nothing".  If set but empty, interpreted as "match
       // everything".
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;
     
       // If true, don't block pod startup if the referenced ClusterTrustBundle(s)
       // aren't available.  If using name, then the named ClusterTrustBundle is
    @@ -492,12 +495,14 @@ message ComponentStatus {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // List of component conditions observed
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated ComponentCondition conditions = 2;
     }
     
    @@ -507,7 +512,7 @@ message ComponentStatusList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of ComponentStatus objects.
       repeated ComponentStatus items = 2;
    @@ -518,7 +523,7 @@ message ConfigMap {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Immutable, if set to true, ensures that data stored in the ConfigMap cannot
       // be updated (only object metadata can be modified).
    @@ -578,7 +583,7 @@ message ConfigMapKeySelector {
     message ConfigMapList {
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of ConfigMaps.
       repeated ConfigMap items = 2;
    @@ -628,6 +633,7 @@ message ConfigMapProjection {
       // the volume setup will error unless it is marked optional. Paths must be
       // relative and may not contain the '..' path or start with '..'.
       // +optional
    +  // +listType=atomic
       repeated KeyToPath items = 2;
     
       // optional specify whether the ConfigMap or its keys must be defined
    @@ -652,6 +658,7 @@ message ConfigMapVolumeSource {
       // the volume setup will error unless it is marked optional. Paths must be
       // relative and may not contain the '..' path or start with '..'.
       // +optional
    +  // +listType=atomic
       repeated KeyToPath items = 2;
     
       // defaultMode is optional: mode bits used to set permissions on created files by default.
    @@ -692,6 +699,7 @@ message Container {
       // of whether the variable exists or not. Cannot be updated.
       // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       // +optional
    +  // +listType=atomic
       repeated string command = 3;
     
       // Arguments to the entrypoint.
    @@ -703,6 +711,7 @@ message Container {
       // of whether the variable exists or not. Cannot be updated.
       // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       // +optional
    +  // +listType=atomic
       repeated string args = 4;
     
       // Container's working directory.
    @@ -734,6 +743,7 @@ message Container {
       // Values defined by an Env with a duplicate key will take precedence.
       // Cannot be updated.
       // +optional
    +  // +listType=atomic
       repeated EnvFromSource envFrom = 19;
     
       // List of environment variables to set in the container.
    @@ -741,6 +751,8 @@ message Container {
       // +optional
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated EnvVar env = 7;
     
       // Compute Resources required by this container.
    @@ -779,11 +791,15 @@ message Container {
       // +optional
       // +patchMergeKey=mountPath
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=mountPath
       repeated VolumeMount volumeMounts = 9;
     
       // volumeDevices is the list of block devices to be used by the container.
       // +patchMergeKey=devicePath
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=devicePath
       // +optional
       repeated VolumeDevice volumeDevices = 21;
     
    @@ -877,6 +893,7 @@ message ContainerImage {
       // Names by which this image is known.
       // e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
       // +optional
    +  // +listType=atomic
       repeated string names = 1;
     
       // The size of the image in bytes.
    @@ -946,7 +963,7 @@ message ContainerState {
     message ContainerStateRunning {
       // Time at which the container was last (re-)started
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;
     }
     
     // ContainerStateTerminated is a terminated state of a container.
    @@ -968,11 +985,11 @@ message ContainerStateTerminated {
     
       // Time at which previous execution of the container started
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;
     
       // Time at which the container last terminated
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;
     
       // Container's ID in the format '://'
       // +optional
    @@ -1053,15 +1070,47 @@ message ContainerStatus {
       // AllocatedResources represents the compute resources allocated for this container by the
       // node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
       // and after successfully admitting desired pod resize.
    -  // +featureGate=InPlacePodVerticalScaling
    +  // +featureGate=InPlacePodVerticalScalingAllocatedStatus
       // +optional
    -  map allocatedResources = 10;
    +  map allocatedResources = 10;
     
       // Resources represents the compute resource requests and limits that have been successfully
       // enacted on the running container after it has been started or has been successfully resized.
       // +featureGate=InPlacePodVerticalScaling
       // +optional
       optional ResourceRequirements resources = 11;
    +
    +  // Status of volume mounts.
    +  // +optional
    +  // +patchMergeKey=mountPath
    +  // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=mountPath
    +  // +featureGate=RecursiveReadOnlyMounts
    +  repeated VolumeMountStatus volumeMounts = 12;
    +
    +  // User represents user identity information initially attached to the first process of the container
    +  // +featureGate=SupplementalGroupsPolicy
    +  // +optional
    +  optional ContainerUser user = 13;
    +
    +  // AllocatedResourcesStatus represents the status of various resources
    +  // allocated for this Pod.
    +  // +featureGate=ResourceHealthStatus
    +  // +optional
    +  // +patchMergeKey=name
    +  // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
    +  repeated ResourceStatus allocatedResourcesStatus = 14;
    +}
    +
    +// ContainerUser represents user identity information
    +message ContainerUser {
    +  // Linux holds user identity information initially attached to the first process of the containers in Linux.
    +  // Note that the actual running identity can be changed if the process has enough privilege to do so.
    +  // +optional
    +  optional LinuxContainerUser linux = 1;
     }
     
     // DaemonEndpoint contains information about a single Daemon endpoint.
    @@ -1076,6 +1125,7 @@ message DaemonEndpoint {
     message DownwardAPIProjection {
       // Items is a list of DownwardAPIVolume file
       // +optional
    +  // +listType=atomic
       repeated DownwardAPIVolumeFile items = 1;
     }
     
    @@ -1084,7 +1134,7 @@ message DownwardAPIVolumeFile {
       // Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
       optional string path = 1;
     
    -  // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
    +  // Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
       // +optional
       optional ObjectFieldSelector fieldRef = 2;
     
    @@ -1108,6 +1158,7 @@ message DownwardAPIVolumeFile {
     message DownwardAPIVolumeSource {
       // Items is a list of downward API volume file
       // +optional
    +  // +listType=atomic
       repeated DownwardAPIVolumeFile items = 1;
     
       // Optional: mode bits to use on created files by default. Must be a
    @@ -1139,7 +1190,7 @@ message EmptyDirVolumeSource {
       // The default is nil which means that the limit is undefined.
       // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;
     }
     
     // EndpointAddress is a tuple that describes single IP address.
    @@ -1218,16 +1269,19 @@ message EndpointSubset {
       // IP addresses which offer the related ports that are marked as ready. These endpoints
       // should be considered safe for load balancers and clients to utilize.
       // +optional
    +  // +listType=atomic
       repeated EndpointAddress addresses = 1;
     
       // IP addresses which offer the related ports but are not currently marked as ready
       // because they have not yet finished starting, have recently failed a readiness check,
       // or have recently failed a liveness check.
       // +optional
    +  // +listType=atomic
       repeated EndpointAddress notReadyAddresses = 2;
     
       // Port numbers available on the related IP addresses.
       // +optional
    +  // +listType=atomic
       repeated EndpointPort ports = 3;
     }
     
    @@ -1248,7 +1302,7 @@ message Endpoints {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // The set of all endpoints is the union of all subsets. Addresses are placed into
       // subsets according to the IPs they share. A single address with multiple ports,
    @@ -1258,6 +1312,7 @@ message Endpoints {
       // NotReadyAddresses in the same subset.
       // Sets of addresses and ports that comprise a service.
       // +optional
    +  // +listType=atomic
       repeated EndpointSubset subsets = 2;
     }
     
    @@ -1266,7 +1321,7 @@ message EndpointsList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of endpoints.
       repeated Endpoints items = 2;
    @@ -1377,6 +1432,7 @@ message EphemeralContainerCommon {
       // of whether the variable exists or not. Cannot be updated.
       // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       // +optional
    +  // +listType=atomic
       repeated string command = 3;
     
       // Arguments to the entrypoint.
    @@ -1388,6 +1444,7 @@ message EphemeralContainerCommon {
       // of whether the variable exists or not. Cannot be updated.
       // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       // +optional
    +  // +listType=atomic
       repeated string args = 4;
     
       // Container's working directory.
    @@ -1413,6 +1470,7 @@ message EphemeralContainerCommon {
       // Values defined by an Env with a duplicate key will take precedence.
       // Cannot be updated.
       // +optional
    +  // +listType=atomic
       repeated EnvFromSource envFrom = 19;
     
       // List of environment variables to set in the container.
    @@ -1420,6 +1478,8 @@ message EphemeralContainerCommon {
       // +optional
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated EnvVar env = 7;
     
       // Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
    @@ -1446,11 +1506,15 @@ message EphemeralContainerCommon {
       // +optional
       // +patchMergeKey=mountPath
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=mountPath
       repeated VolumeMount volumeMounts = 9;
     
       // volumeDevices is the list of block devices to be used by the container.
       // +patchMergeKey=devicePath
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=devicePath
       // +optional
       repeated VolumeDevice volumeDevices = 21;
     
    @@ -1560,7 +1624,7 @@ message EphemeralVolumeSource {
     message Event {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // The object that this event is about.
       optional ObjectReference involvedObject = 2;
    @@ -1582,11 +1646,11 @@ message Event {
     
       // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;
     
       // The time at which the most recent occurrence of this event was recorded.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;
     
       // The number of times this event has occurred.
       // +optional
    @@ -1598,7 +1662,7 @@ message Event {
     
       // Time when this Event was first observed.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;
     
       // Data about the Event series this event represents or nil if it's a singleton Event.
       // +optional
    @@ -1626,7 +1690,7 @@ message EventList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of events
       repeated Event items = 2;
    @@ -1639,7 +1703,7 @@ message EventSeries {
       optional int32 count = 1;
     
       // Time of the last occurrence observed
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;
     }
     
     // EventSource contains information for an event.
    @@ -1661,6 +1725,7 @@ message ExecAction {
       // a shell, you need to explicitly call out to that shell.
       // Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
       // +optional
    +  // +listType=atomic
       repeated string command = 1;
     }
     
    @@ -1670,6 +1735,7 @@ message ExecAction {
     message FCVolumeSource {
       // targetWWNs is Optional: FC target worldwide names (WWNs)
       // +optional
    +  // +listType=atomic
       repeated string targetWWNs = 1;
     
       // lun is Optional: FC target lun number
    @@ -1691,6 +1757,7 @@ message FCVolumeSource {
       // wwids Optional: FC volume world wide identifiers (wwids)
       // Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
       // +optional
    +  // +listType=atomic
       repeated string wwids = 5;
     }
     
    @@ -1802,6 +1869,7 @@ message GCEPersistentDiskVolumeSource {
       optional bool readOnly = 4;
     }
     
    +// GRPCAction specifies an action involving a GRPC service.
     message GRPCAction {
       // Port number of the gRPC service. Number must be in the range 1 to 65535.
       optional int32 port = 1;
    @@ -1889,7 +1957,7 @@ message HTTPGetAction {
       // Name or number of the port to access on the container.
       // Number must be in the range 1 to 65535.
       // Name must be an IANA_SVC_NAME.
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;
     
       // Host name to connect to, defaults to the pod IP. You probably want to set
       // "Host" in httpHeaders instead.
    @@ -1903,6 +1971,7 @@ message HTTPGetAction {
     
       // Custom headers to set in the request. HTTP allows repeated headers.
       // +optional
    +  // +listType=atomic
       repeated HTTPHeader httpHeaders = 5;
     }
     
    @@ -1920,15 +1989,18 @@ message HTTPHeader {
     // pod's hosts file.
     message HostAlias {
       // IP address of the host file entry.
    +  // +required
       optional string ip = 1;
     
       // Hostnames for the above IP address.
    +  // +listType=atomic
       repeated string hostnames = 2;
     }
     
     // HostIP represents a single IP address allocated to the host.
     message HostIP {
       // IP is the IP address assigned to the host
    +  // +required
       optional string ip = 1;
     }
     
    @@ -1964,6 +2036,7 @@ message ISCSIPersistentVolumeSource {
       // iscsiInterface is the interface Name that uses an iSCSI transport.
       // Defaults to 'default' (tcp).
       // +optional
    +  // +default="default"
       optional string iscsiInterface = 4;
     
       // fsType is the filesystem type of the volume that you want to mount.
    @@ -1982,6 +2055,7 @@ message ISCSIPersistentVolumeSource {
       // portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
       // is other than default (typically TCP ports 860 and 3260).
       // +optional
    +  // +listType=atomic
       repeated string portals = 7;
     
       // chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
    @@ -2020,6 +2094,7 @@ message ISCSIVolumeSource {
       // iscsiInterface is the interface Name that uses an iSCSI transport.
       // Defaults to 'default' (tcp).
       // +optional
    +  // +default="default"
       optional string iscsiInterface = 4;
     
       // fsType is the filesystem type of the volume that you want to mount.
    @@ -2038,6 +2113,7 @@ message ISCSIVolumeSource {
       // portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
       // is other than default (typically TCP ports 860 and 3260).
       // +optional
    +  // +listType=atomic
       repeated string portals = 7;
     
       // chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
    @@ -2059,6 +2135,26 @@ message ISCSIVolumeSource {
       optional string initiatorName = 12;
     }
     
    +// ImageVolumeSource represents a image volume resource.
    +message ImageVolumeSource {
    +  // Required: Image or artifact reference to be used.
    +  // Behaves in the same way as pod.spec.containers[*].image.
    +  // Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.
    +  // More info: https://kubernetes.io/docs/concepts/containers/images
    +  // This field is optional to allow higher level config management to default or override
    +  // container images in workload controllers like Deployments and StatefulSets.
    +  // +optional
    +  optional string reference = 1;
    +
    +  // Policy for pulling OCI objects. Possible values are:
    +  // Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
    +  // Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
    +  // IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
    +  // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
    +  // +optional
    +  optional string pullPolicy = 2;
    +}
    +
     // Maps a string key to a path within a volume.
     message KeyToPath {
       // key is the key to project.
    @@ -2107,21 +2203,21 @@ message Lifecycle {
     // LifecycleHandler defines a specific action that should be taken in a lifecycle
     // hook. One and only one of the fields, except TCPSocket must be specified.
     message LifecycleHandler {
    -  // Exec specifies the action to take.
    +  // Exec specifies a command to execute in the container.
       // +optional
       optional ExecAction exec = 1;
     
    -  // HTTPGet specifies the http request to perform.
    +  // HTTPGet specifies an HTTP GET request to perform.
       // +optional
       optional HTTPGetAction httpGet = 2;
     
       // Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
    -  // for the backward compatibility. There are no validation of this field and
    -  // lifecycle hooks will fail in runtime when tcp handler is specified.
    +  // for backward compatibility. There is no validation of this field and
    +  // lifecycle hooks will fail at runtime when it is specified.
       // +optional
       optional TCPSocketAction tcpSocket = 3;
     
    -  // Sleep represents the duration that the container should sleep before being terminated.
    +  // Sleep represents a duration that the container should sleep.
       // +featureGate=PodLifecycleSleepAction
       // +optional
       optional SleepAction sleep = 4;
    @@ -2132,7 +2228,7 @@ message LimitRange {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the limits enforced.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -2147,23 +2243,23 @@ message LimitRangeItem {
     
       // Max usage constraints on this kind by resource name.
       // +optional
    -  map max = 2;
    +  map max = 2;
     
       // Min usage constraints on this kind by resource name.
       // +optional
    -  map min = 3;
    +  map min = 3;
     
       // Default resource requirement limit value by resource name if resource limit is omitted.
       // +optional
    -  map default = 4;
    +  map default = 4;
     
       // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
       // +optional
    -  map defaultRequest = 5;
    +  map defaultRequest = 5;
     
       // MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
       // +optional
    -  map maxLimitRequestRatio = 6;
    +  map maxLimitRequestRatio = 6;
     }
     
     // LimitRangeList is a list of LimitRange items.
    @@ -2171,7 +2267,7 @@ message LimitRangeList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of LimitRange objects.
       // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
    @@ -2181,18 +2277,33 @@ message LimitRangeList {
     // LimitRangeSpec defines a min/max usage limit for resources that match on kind.
     message LimitRangeSpec {
       // Limits is the list of LimitRangeItem objects that are enforced.
    +  // +listType=atomic
       repeated LimitRangeItem limits = 1;
     }
     
    +// LinuxContainerUser represents user identity information in Linux containers
    +message LinuxContainerUser {
    +  // UID is the primary uid initially attached to the first process in the container
    +  optional int64 uid = 1;
    +
    +  // GID is the primary gid initially attached to the first process in the container
    +  optional int64 gid = 2;
    +
    +  // SupplementalGroups are the supplemental groups initially attached to the first process in the container
    +  // +optional
    +  // +listType=atomic
    +  repeated int64 supplementalGroups = 3;
    +}
    +
     // List holds a list of objects, which may not be known by the server.
     message List {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of objects
    -  repeated k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;
    +  repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;
     }
     
     // LoadBalancerIngress represents the status of a load-balancer ingress point:
    @@ -2229,21 +2340,38 @@ message LoadBalancerStatus {
       // Ingress is a list containing ingress points for the load-balancer.
       // Traffic intended for the service should be sent to these ingress points.
       // +optional
    +  // +listType=atomic
       repeated LoadBalancerIngress ingress = 1;
     }
     
     // LocalObjectReference contains enough information to let you locate the
     // referenced object inside the same namespace.
    +// ---
    +// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
    +//  1. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
    +//     restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
    +//     Those cannot be well described when embedded.
    +//  2. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
    +//  3. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
    +//     will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.
    +//
    +// Instead of using this type, create a locally provided and used type that is well-focused on your reference.
    +// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
     // +structType=atomic
     message LocalObjectReference {
       // Name of the referent.
    +  // This field is effectively required, but due to backwards compatibility is
    +  // allowed to be empty. Instances of this type with an empty value here are
    +  // almost certainly wrong.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
    -  // TODO: Add other useful fields. apiVersion, kind, uid?
       // +optional
    +  // +default=""
    +  // +kubebuilder:default=""
    +  // TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
       optional string name = 1;
     }
     
    -// Local represents directly-attached storage with node affinity (Beta feature)
    +// Local represents directly-attached storage with node affinity
     message LocalVolumeSource {
       // path of the full path to the volume on the node.
       // It can be either a directory or block device (disk, partition, ...).
    @@ -2299,7 +2427,7 @@ message Namespace {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the behavior of the Namespace.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -2320,12 +2448,15 @@ message NamespaceCondition {
       // Status of the condition, one of True, False, Unknown.
       optional string status = 2;
     
    +  // Last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
     
    +  // Unique, one-word, CamelCase reason for the condition's last transition.
       // +optional
       optional string reason = 5;
     
    +  // Human-readable message indicating details about last transition.
       // +optional
       optional string message = 6;
     }
    @@ -2335,7 +2466,7 @@ message NamespaceList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of Namespace objects in the list.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
    @@ -2347,6 +2478,7 @@ message NamespaceSpec {
       // Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
       // More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       // +optional
    +  // +listType=atomic
       repeated string finalizers = 1;
     }
     
    @@ -2361,6 +2493,8 @@ message NamespaceStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated NamespaceCondition conditions = 2;
     }
     
    @@ -2370,7 +2504,7 @@ message Node {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the behavior of a node.
       // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -2414,6 +2548,7 @@ message NodeAffinity {
       // "weight" to the sum if the node matches the corresponding matchExpressions; the
       // node(s) with the highest sum are the most preferred.
       // +optional
    +  // +listType=atomic
       repeated PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;
     }
     
    @@ -2427,11 +2562,11 @@ message NodeCondition {
     
       // Last time we got an update on a given condition.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;
     
       // Last time the condition transit from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
     
       // (brief) reason for the condition's last transition.
       // +optional
    @@ -2506,12 +2641,21 @@ message NodeDaemonEndpoints {
       optional DaemonEndpoint kubeletEndpoint = 1;
     }
     
    +// NodeFeatures describes the set of features implemented by the CRI implementation.
    +// The features contained in the NodeFeatures should depend only on the cri implementation
    +// independent of runtime handlers.
    +message NodeFeatures {
    +  // SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser.
    +  // +optional
    +  optional bool supplementalGroupsPolicy = 1;
    +}
    +
     // NodeList is the whole list of all Nodes which have been registered with master.
     message NodeList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of nodes
       repeated Node items = 2;
    @@ -2524,11 +2668,29 @@ message NodeProxyOptions {
       optional string path = 1;
     }
     
    -// NodeResources is an object for conveying resource information about a node.
    -// see https://kubernetes.io/docs/concepts/architecture/nodes/#capacity for more details.
    -message NodeResources {
    -  // Capacity represents the available resources of a node
    -  map capacity = 1;
    +// NodeRuntimeHandler is a set of runtime handler information.
    +message NodeRuntimeHandler {
    +  // Runtime handler name.
    +  // Empty for the default runtime handler.
    +  // +optional
    +  optional string name = 1;
    +
    +  // Supported features.
    +  // +optional
    +  optional NodeRuntimeHandlerFeatures features = 2;
    +}
    +
    +// NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler.
    +message NodeRuntimeHandlerFeatures {
    +  // RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.
    +  // +featureGate=RecursiveReadOnlyMounts
    +  // +optional
    +  optional bool recursiveReadOnlyMounts = 1;
    +
    +  // UserNamespaces is set to true if the runtime handler supports UserNamespaces, including for volumes.
    +  // +featureGate=UserNamespacesSupport
    +  // +optional
    +  optional bool userNamespaces = 2;
     }
     
     // A node selector represents the union of the results of one or more label queries
    @@ -2537,6 +2699,7 @@ message NodeResources {
     // +structType=atomic
     message NodeSelector {
       // Required. A list of node selector terms. The terms are ORed.
    +  // +listType=atomic
       repeated NodeSelectorTerm nodeSelectorTerms = 1;
     }
     
    @@ -2556,6 +2719,7 @@ message NodeSelectorRequirement {
       // array must have a single element, which will be interpreted as an integer.
       // This array is replaced during a strategic merge patch.
       // +optional
    +  // +listType=atomic
       repeated string values = 3;
     }
     
    @@ -2566,10 +2730,12 @@ message NodeSelectorRequirement {
     message NodeSelectorTerm {
       // A list of node selector requirements by node's labels.
       // +optional
    +  // +listType=atomic
       repeated NodeSelectorRequirement matchExpressions = 1;
     
       // A list of node selector requirements by node's fields.
       // +optional
    +  // +listType=atomic
       repeated NodeSelectorRequirement matchFields = 2;
     }
     
    @@ -2584,6 +2750,7 @@ message NodeSpec {
       // each of IPv4 and IPv6.
       // +optional
       // +patchStrategy=merge
    +  // +listType=set
       repeated string podCIDRs = 7;
     
       // ID of the node assigned by the cloud provider in the format: ://
    @@ -2597,6 +2764,7 @@ message NodeSpec {
     
       // If specified, the node's taints.
       // +optional
    +  // +listType=atomic
       repeated Taint taints = 5;
     
       // Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
    @@ -2612,14 +2780,14 @@ message NodeSpec {
     // NodeStatus is information about the current status of a node.
     message NodeStatus {
       // Capacity represents the total resources of a node.
    -  // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
    +  // More info: https://kubernetes.io/docs/reference/node/node-status/#capacity
       // +optional
    -  map capacity = 1;
    +  map capacity = 1;
     
       // Allocatable represents the resources of a node that are available for scheduling.
       // Defaults to Capacity.
       // +optional
    -  map allocatable = 2;
    +  map allocatable = 2;
     
       // NodePhase is the recently observed lifecycle phase of the node.
       // More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
    @@ -2628,15 +2796,17 @@ message NodeStatus {
       optional string phase = 3;
     
       // Conditions is an array of current observed node conditions.
    -  // More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
    +  // More info: https://kubernetes.io/docs/reference/node/node-status/#condition
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated NodeCondition conditions = 4;
     
       // List of addresses reachable to the node.
       // Queried from cloud provider, if available.
    -  // More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
    +  // More info: https://kubernetes.io/docs/reference/node/node-status/#addresses
       // Note: This field is declared as mergeable, but the merge key is not sufficiently
       // unique, which can cause data corruption when it is merged. Callers should instead
       // use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
    @@ -2647,6 +2817,8 @@ message NodeStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated NodeAddress addresses = 5;
     
       // Endpoints of daemons running on the Node.
    @@ -2654,25 +2826,40 @@ message NodeStatus {
       optional NodeDaemonEndpoints daemonEndpoints = 6;
     
       // Set of ids/uuids to uniquely identify the node.
    -  // More info: https://kubernetes.io/docs/concepts/nodes/node/#info
    +  // More info: https://kubernetes.io/docs/reference/node/node-status/#info
       // +optional
       optional NodeSystemInfo nodeInfo = 7;
     
       // List of container images on this node
       // +optional
    +  // +listType=atomic
       repeated ContainerImage images = 8;
     
       // List of attachable volumes in use (mounted) by the node.
       // +optional
    +  // +listType=atomic
       repeated string volumesInUse = 9;
     
       // List of volumes that are attached to the node.
       // +optional
    +  // +listType=atomic
       repeated AttachedVolume volumesAttached = 10;
     
       // Status of the config assigned to the node via the dynamic Kubelet config feature.
       // +optional
       optional NodeConfigStatus config = 11;
    +
    +  // The available runtime handlers.
    +  // +featureGate=RecursiveReadOnlyMounts
    +  // +featureGate=UserNamespacesSupport
    +  // +optional
    +  // +listType=atomic
    +  repeated NodeRuntimeHandler runtimeHandlers = 12;
    +
    +  // Features describes the set of features implemented by the CRI implementation.
    +  // +featureGate=SupplementalGroupsPolicy
    +  // +optional
    +  optional NodeFeatures features = 13;
     }
     
     // NodeSystemInfo is a set of ids/uuids to uniquely identify the node.
    @@ -2702,7 +2889,7 @@ message NodeSystemInfo {
       // Kubelet Version reported by the node.
       optional string kubeletVersion = 7;
     
    -  // KubeProxy Version reported by the node.
    +  // Deprecated: KubeProxy Version reported by the node.
       optional string kubeProxyVersion = 8;
     
       // The Operating System reported by the node
    @@ -2790,7 +2977,7 @@ message PersistentVolume {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec defines a specification of a persistent volume owned by the cluster.
       // Provisioned by an administrator.
    @@ -2811,7 +2998,7 @@ message PersistentVolumeClaim {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec defines the desired characteristics of a volume requested by a pod author.
       // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
    @@ -2827,20 +3014,25 @@ message PersistentVolumeClaim {
     
     // PersistentVolumeClaimCondition contains details about state of pvc
     message PersistentVolumeClaimCondition {
    +  // Type is the type of the condition.
    +  // More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=set%20to%20%27ResizeStarted%27.-,PersistentVolumeClaimCondition,-contains%20details%20about
       optional string type = 1;
     
    +  // Status is the status of the condition.
    +  // Can be True, False, Unknown.
    +  // More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=state%20of%20pvc-,conditions.status,-(string)%2C%20required
       optional string status = 2;
     
       // lastProbeTime is the time we probed the condition.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;
     
       // lastTransitionTime is the time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
     
       // reason is a unique, this should be a short, machine understandable string that gives the reason
    -  // for condition's last transition. If it reports "ResizeStarted" that means the underlying
    +  // for condition's last transition. If it reports "Resizing" that means the underlying
       // persistent volume is being resized.
       // +optional
       optional string reason = 5;
    @@ -2855,7 +3047,7 @@ message PersistentVolumeClaimList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a list of persistent volume claims.
       // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
    @@ -2868,11 +3060,12 @@ message PersistentVolumeClaimSpec {
       // accessModes contains the desired access modes the volume should have.
       // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       // +optional
    +  // +listType=atomic
       repeated string accessModes = 1;
     
       // selector is a label query over volumes to consider for binding.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
     
       // resources represents the minimum resources the volume should have.
       // If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
    @@ -2943,8 +3136,8 @@ message PersistentVolumeClaimSpec {
       // If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
       // set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
       // exists.
    -  // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
    -  // (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
    +  // More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
    +  // (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
       // +featureGate=VolumeAttributesClass
       // +optional
       optional string volumeAttributesClassName = 9;
    @@ -2959,17 +3152,20 @@ message PersistentVolumeClaimStatus {
       // accessModes contains the actual access modes the volume backing the PVC has.
       // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       // +optional
    +  // +listType=atomic
       repeated string accessModes = 2;
     
       // capacity represents the actual resources of the underlying volume.
       // +optional
    -  map capacity = 3;
    +  map capacity = 3;
     
       // conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
    -  // resized then the Condition will be set to 'ResizeStarted'.
    +  // resized then the Condition will be set to 'Resizing'.
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated PersistentVolumeClaimCondition conditions = 4;
     
       // allocatedResources tracks the resources allocated to a PVC including its capacity.
    @@ -2996,7 +3192,7 @@ message PersistentVolumeClaimStatus {
       // This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       // +featureGate=RecoverVolumeExpansionFailure
       // +optional
    -  map allocatedResources = 5;
    +  map allocatedResources = 5;
     
       // allocatedResourceStatuses stores status of resource being resized for the given PVC.
       // Key names follow standard Kubernetes label syntax. Valid values are either:
    @@ -3040,14 +3236,14 @@ message PersistentVolumeClaimStatus {
     
       // currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
       // When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
    -  // This is an alpha field and requires enabling VolumeAttributesClass feature.
    +  // This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
       // +featureGate=VolumeAttributesClass
       // +optional
       optional string currentVolumeAttributesClassName = 8;
     
       // ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       // When this is unset, there is no ModifyVolume operation being attempted.
    -  // This is an alpha field and requires enabling VolumeAttributesClass feature.
    +  // This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
       // +featureGate=VolumeAttributesClass
       // +optional
       optional ModifyVolumeStatus modifyVolumeStatus = 9;
    @@ -3061,7 +3257,7 @@ message PersistentVolumeClaimTemplate {
       // validation.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // The specification for the PersistentVolumeClaim. The entire content is
       // copied unchanged into the PVC that gets created from this
    @@ -3090,7 +3286,7 @@ message PersistentVolumeList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a list of persistent volumes.
       // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
    @@ -3102,12 +3298,16 @@ message PersistentVolumeList {
     message PersistentVolumeSource {
       // gcePersistentDisk represents a GCE Disk resource that is attached to a
       // kubelet's host machine and then exposed to the pod. Provisioned by an admin.
    +  // Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
    +  // gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
       // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       // +optional
       optional GCEPersistentDiskVolumeSource gcePersistentDisk = 1;
     
       // awsElasticBlockStore represents an AWS Disk resource that is attached to a
       // kubelet's host machine and then exposed to the pod.
    +  // Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
    +  // awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
       // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       // +optional
       optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;
    @@ -3122,6 +3322,7 @@ message PersistentVolumeSource {
     
       // glusterfs represents a Glusterfs volume that is attached to a host and
       // exposed to the pod. Provisioned by an admin.
    +  // Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.
       // More info: https://examples.k8s.io/volumes/glusterfs/README.md
       // +optional
       optional GlusterfsPersistentVolumeSource glusterfs = 4;
    @@ -3132,6 +3333,7 @@ message PersistentVolumeSource {
       optional NFSVolumeSource nfs = 5;
     
       // rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
    +  // Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
       // More info: https://examples.k8s.io/volumes/rbd/README.md
       // +optional
       optional RBDPersistentVolumeSource rbd = 6;
    @@ -3142,11 +3344,14 @@ message PersistentVolumeSource {
       optional ISCSIPersistentVolumeSource iscsi = 7;
     
       // cinder represents a cinder volume attached and mounted on kubelets host machine.
    +  // Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
    +  // are redirected to the cinder.csi.openstack.org CSI driver.
       // More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       // +optional
       optional CinderPersistentVolumeSource cinder = 8;
     
    -  // cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
    +  // cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
    +  // Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
       // +optional
       optional CephFSPersistentVolumeSource cephfs = 9;
     
    @@ -3154,39 +3359,53 @@ message PersistentVolumeSource {
       // +optional
       optional FCVolumeSource fc = 10;
     
    -  // flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
    +  // flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running.
    +  // Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
       // +optional
       optional FlockerVolumeSource flocker = 11;
     
       // flexVolume represents a generic volume resource that is
       // provisioned/attached using an exec based plugin.
    +  // Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
       // +optional
       optional FlexPersistentVolumeSource flexVolume = 12;
     
       // azureFile represents an Azure File Service mount on the host and bind mount to the pod.
    +  // Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
    +  // are redirected to the file.csi.azure.com CSI driver.
       // +optional
       optional AzureFilePersistentVolumeSource azureFile = 13;
     
    -  // vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
    +  // vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
    +  // Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
    +  // are redirected to the csi.vsphere.vmware.com CSI driver.
       // +optional
       optional VsphereVirtualDiskVolumeSource vsphereVolume = 14;
     
    -  // quobyte represents a Quobyte mount on the host that shares a pod's lifetime
    +  // quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
    +  // Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
       // +optional
       optional QuobyteVolumeSource quobyte = 15;
     
       // azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
    +  // Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
    +  // are redirected to the disk.csi.azure.com CSI driver.
       // +optional
       optional AzureDiskVolumeSource azureDisk = 16;
     
    -  // photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
    +  // photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
    +  // Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
       optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;
     
    -  // portworxVolume represents a portworx volume attached and mounted on kubelets host machine
    +  // portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
    +  // Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
    +  // are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
    +  // is on.
       // +optional
       optional PortworxVolumeSource portworxVolume = 18;
     
       // scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
    +  // Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
       // +optional
       optional ScaleIOPersistentVolumeSource scaleIO = 19;
     
    @@ -3194,12 +3413,13 @@ message PersistentVolumeSource {
       // +optional
       optional LocalVolumeSource local = 20;
     
    -  // storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
    +  // storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod.
    +  // Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
       // More info: https://examples.k8s.io/volumes/storageos/README.md
       // +optional
       optional StorageOSPersistentVolumeSource storageos = 21;
     
    -  // csi represents storage that is handled by an external CSI driver (Beta feature).
    +  // csi represents storage that is handled by an external CSI driver.
       // +optional
       optional CSIPersistentVolumeSource csi = 22;
     }
    @@ -3209,7 +3429,7 @@ message PersistentVolumeSpec {
       // capacity is the description of the persistent volume's resources and capacity.
       // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       // +optional
    -  map capacity = 1;
    +  map capacity = 1;
     
       // persistentVolumeSource is the actual volume backing the persistent volume.
       optional PersistentVolumeSource persistentVolumeSource = 2;
    @@ -3217,6 +3437,7 @@ message PersistentVolumeSpec {
       // accessModes contains all ways the volume can be mounted.
       // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
       // +optional
    +  // +listType=atomic
       repeated string accessModes = 3;
     
       // claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
    @@ -3244,6 +3465,7 @@ message PersistentVolumeSpec {
       // simply fail if one is invalid.
       // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
       // +optional
    +  // +listType=atomic
       repeated string mountOptions = 7;
     
       // volumeMode defines if a volume is intended to be used with a formatted filesystem
    @@ -3262,7 +3484,7 @@ message PersistentVolumeSpec {
       // after a volume has been updated successfully to a new class.
       // For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
       // PersistentVolumeClaims during the binding process.
    -  // This is an alpha field and requires enabling VolumeAttributesClass feature.
    +  // This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
       // +featureGate=VolumeAttributesClass
       // +optional
       optional string volumeAttributesClassName = 10;
    @@ -3286,10 +3508,8 @@ message PersistentVolumeStatus {
     
       // lastPhaseTransitionTime is the time the phase transitioned from one to another
       // and automatically resets to current time everytime a volume phase transitions.
    -  // This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
    -  // +featureGate=PersistentVolumeLastPhaseTransitionTime
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;
     }
     
     // Represents a Photon Controller persistent disk resource.
    @@ -3309,7 +3529,7 @@ message Pod {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the pod.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -3335,6 +3555,7 @@ message PodAffinity {
       // When there are multiple elements, the lists of nodes corresponding to each
       // podAffinityTerm are intersected, i.e. all terms must be satisfied.
       // +optional
    +  // +listType=atomic
       repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;
     
       // The scheduler will prefer to schedule pods to nodes that satisfy
    @@ -3347,6 +3568,7 @@ message PodAffinity {
       // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       // node(s) with the highest sum are the most preferred.
       // +optional
    +  // +listType=atomic
       repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;
     }
     
    @@ -3360,13 +3582,14 @@ message PodAffinityTerm {
       // A label query over a set of resources, in this case pods.
       // If it's null, this PodAffinityTerm matches with no Pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;
     
       // namespaces specifies a static list of namespace names that the term applies to.
       // The term is applied to the union of the namespaces listed in this field
       // and the ones selected by namespaceSelector.
       // null or empty namespaces list and null namespaceSelector means "this pod's namespace".
       // +optional
    +  // +listType=atomic
       repeated string namespaces = 2;
     
       // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
    @@ -3382,30 +3605,32 @@ message PodAffinityTerm {
       // null selector and null or empty namespaces list means "this pod's namespace".
       // An empty selector ({}) matches all namespaces.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;
     
       // MatchLabelKeys is a set of pod label keys to select which pods will
       // be taken into consideration. The keys are used to lookup values from the
    -  // incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`
    +  // incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
       // to select the group of existing pods which pods will be taken into consideration
       // for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       // pod labels will be ignored. The default value is empty.
    -  // The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
    -  // Also, MatchLabelKeys cannot be set when LabelSelector isn't set.
    -  // This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
    +  // The same key is forbidden to exist in both matchLabelKeys and labelSelector.
    +  // Also, matchLabelKeys cannot be set when labelSelector isn't set.
    +  // This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
    +  //
       // +listType=atomic
       // +optional
       repeated string matchLabelKeys = 5;
     
       // MismatchLabelKeys is a set of pod label keys to select which pods will
       // be taken into consideration. The keys are used to lookup values from the
    -  // incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`
    +  // incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
       // to select the group of existing pods which pods will be taken into consideration
       // for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       // pod labels will be ignored. The default value is empty.
    -  // The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.
    -  // Also, MismatchLabelKeys cannot be set when LabelSelector isn't set.
    -  // This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
    +  // The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
    +  // Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
    +  // This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
    +  //
       // +listType=atomic
       // +optional
       repeated string mismatchLabelKeys = 6;
    @@ -3421,6 +3646,7 @@ message PodAntiAffinity {
       // When there are multiple elements, the lists of nodes corresponding to each
       // podAffinityTerm are intersected, i.e. all terms must be satisfied.
       // +optional
    +  // +listType=atomic
       repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;
     
       // The scheduler will prefer to schedule pods to nodes that satisfy
    @@ -3433,6 +3659,7 @@ message PodAntiAffinity {
       // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       // node(s) with the highest sum are the most preferred.
       // +optional
    +  // +listType=atomic
       repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;
     }
     
    @@ -3482,11 +3709,11 @@ message PodCondition {
     
       // Last time we probed the condition.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;
     
       // Last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
     
       // Unique, one-word, CamelCase reason for the condition's last transition.
       // +optional
    @@ -3504,12 +3731,14 @@ message PodDNSConfig {
       // This will be appended to the base nameservers generated from DNSPolicy.
       // Duplicated nameservers will be removed.
       // +optional
    +  // +listType=atomic
       repeated string nameservers = 1;
     
       // A list of DNS search domains for host-name lookup.
       // This will be appended to the base search paths generated from DNSPolicy.
       // Duplicated search paths will be removed.
       // +optional
    +  // +listType=atomic
       repeated string searches = 2;
     
       // A list of DNS resolver options.
    @@ -3517,14 +3746,17 @@ message PodDNSConfig {
       // Duplicated entries will be removed. Resolution options given in Options
       // will override those that appear in the base DNSPolicy.
       // +optional
    +  // +listType=atomic
       repeated PodDNSConfigOption options = 3;
     }
     
     // PodDNSConfigOption defines DNS resolver options of a pod.
     message PodDNSConfigOption {
    +  // Name is this DNS resolver option's name.
       // Required.
       optional string name = 1;
     
    +  // Value is this DNS resolver option's value.
       // +optional
       optional string value = 2;
     }
    @@ -3558,12 +3790,14 @@ message PodExecOptions {
       optional string container = 5;
     
       // Command is the remote command to execute. argv array. Not executed within a shell.
    +  // +listType=atomic
       repeated string command = 6;
     }
     
     // PodIP represents a single IP address allocated to the pod.
     message PodIP {
       // IP is the IP address assigned to the pod
    +  // +required
       optional string ip = 1;
     }
     
    @@ -3572,7 +3806,7 @@ message PodList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of pods.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
    @@ -3605,7 +3839,7 @@ message PodLogOptions {
       // If this value is in the future, no logs will be returned.
       // Only one of sinceSeconds or sinceTime may be specified.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;
     
       // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
       // of log output. Defaults to false.
    @@ -3613,7 +3847,8 @@ message PodLogOptions {
       optional bool timestamps = 6;
     
       // If set, the number of lines from the end of the logs to show. If not specified,
    -  // logs are shown from the creation of the container or sinceSeconds or sinceTime
    +  // logs are shown from the creation of the container or sinceSeconds or sinceTime.
    +  // Note that when "TailLines" is specified, "Stream" can only be set to nil or "All".
       // +optional
       optional int64 tailLines = 7;
     
    @@ -3631,6 +3866,14 @@ message PodLogOptions {
       // the actual log data coming from the real kubelet).
       // +optional
       optional bool insecureSkipTLSVerifyBackend = 9;
    +
    +  // Specify which container log stream to return to the client.
    +  // Acceptable values are "All", "Stdout" and "Stderr". If not specified, "All" is used, and both stdout and stderr
    +  // are returned interleaved.
    +  // Note that when "TailLines" is specified, "Stream" can only be set to nil or "All".
    +  // +featureGate=PodLogsQuerySplitStreams
    +  // +optional
    +  optional string stream = 10;
     }
     
     // PodOS defines the OS parameters of a pod.
    @@ -3652,6 +3895,7 @@ message PodPortForwardOptions {
       // List of ports to forward
       // Required when using WebSockets
       // +optional
    +  // +listType=atomic
       repeated int32 ports = 1;
     }
     
    @@ -3668,7 +3912,10 @@ message PodReadinessGate {
       optional string conditionType = 1;
     }
     
    -// PodResourceClaim references exactly one ResourceClaim through a ClaimSource.
    +// PodResourceClaim references exactly one ResourceClaim, either directly
    +// or by naming a ResourceClaimTemplate which is then turned into a ResourceClaim
    +// for the pod.
    +//
     // It adds a name to it that uniquely identifies the ResourceClaim inside the Pod.
     // Containers that need access to the ResourceClaim reference it with this name.
     message PodResourceClaim {
    @@ -3676,8 +3923,29 @@ message PodResourceClaim {
       // This must be a DNS_LABEL.
       optional string name = 1;
     
    -  // Source describes where to find the ResourceClaim.
    -  optional ClaimSource source = 2;
    +  // ResourceClaimName is the name of a ResourceClaim object in the same
    +  // namespace as this pod.
    +  //
    +  // Exactly one of ResourceClaimName and ResourceClaimTemplateName must
    +  // be set.
    +  optional string resourceClaimName = 3;
    +
    +  // ResourceClaimTemplateName is the name of a ResourceClaimTemplate
    +  // object in the same namespace as this pod.
    +  //
    +  // The template will be used to create a new ResourceClaim, which will
    +  // be bound to this pod. When this pod is deleted, the ResourceClaim
    +  // will also be deleted. The pod name and resource name, along with a
    +  // generated component, will be used to form a unique name for the
    +  // ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
    +  //
    +  // This field is immutable and no changes will be made to the
    +  // corresponding ResourceClaim by the control plane after creating the
    +  // ResourceClaim.
    +  //
    +  // Exactly one of ResourceClaimName and ResourceClaimTemplateName must
    +  // be set.
    +  optional string resourceClaimTemplateName = 4;
     }
     
     // PodResourceClaimStatus is stored in the PodStatus for each PodResourceClaim
    @@ -3690,7 +3958,7 @@ message PodResourceClaimStatus {
       optional string name = 1;
     
       // ResourceClaimName is the name of the ResourceClaim that was
    -  // generated for the Pod in the namespace of the Pod. It this is
    +  // generated for the Pod in the namespace of the Pod. If this is
       // unset, then generating a ResourceClaim was not necessary. The
       // pod.spec.resourceClaims entry can be ignored in this case.
       //
    @@ -3752,16 +4020,29 @@ message PodSecurityContext {
       // +optional
       optional bool runAsNonRoot = 3;
     
    -  // A list of groups applied to the first process run in each container, in addition
    -  // to the container's primary GID, the fsGroup (if specified), and group memberships
    -  // defined in the container image for the uid of the container process. If unspecified,
    -  // no additional groups are added to any container. Note that group memberships
    -  // defined in the container image for the uid of the container process are still effective,
    -  // even if they are not included in this list.
    +  // A list of groups applied to the first process run in each container, in
    +  // addition to the container's primary GID and fsGroup (if specified).  If
    +  // the SupplementalGroupsPolicy feature is enabled, the
    +  // supplementalGroupsPolicy field determines whether these are in addition
    +  // to or instead of any group memberships defined in the container image.
    +  // If unspecified, no additional groups are added, though group memberships
    +  // defined in the container image may still be used, depending on the
    +  // supplementalGroupsPolicy field.
       // Note that this field cannot be set when spec.os.name is windows.
       // +optional
    +  // +listType=atomic
       repeated int64 supplementalGroups = 4;
     
    +  // Defines how supplemental groups of the first container processes are calculated.
    +  // Valid values are "Merge" and "Strict". If not specified, "Merge" is used.
    +  // (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled
    +  // and the container runtime must implement support for this feature.
    +  // Note that this field cannot be set when spec.os.name is windows.
    +  // TODO: update the default value to "Merge" when spec.os.name is not windows in v1.34
    +  // +featureGate=SupplementalGroupsPolicy
    +  // +optional
    +  optional string supplementalGroupsPolicy = 12;
    +
       // A special supplemental group that applies to all containers in a pod.
       // Some volume types allow the Kubelet to change the ownership of that volume
       // to be owned by the pod:
    @@ -3779,6 +4060,7 @@ message PodSecurityContext {
       // sysctls (by the container runtime) might fail to launch.
       // Note that this field cannot be set when spec.os.name is windows.
       // +optional
    +  // +listType=atomic
       repeated Sysctl sysctls = 7;
     
       // fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
    @@ -3795,6 +4077,38 @@ message PodSecurityContext {
       // Note that this field cannot be set when spec.os.name is windows.
       // +optional
       optional SeccompProfile seccompProfile = 10;
    +
    +  // appArmorProfile is the AppArmor options to use by the containers in this pod.
    +  // Note that this field cannot be set when spec.os.name is windows.
    +  // +optional
    +  optional AppArmorProfile appArmorProfile = 11;
    +
    +  // seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod.
    +  // It has no effect on nodes that do not support SELinux or to volumes does not support SELinux.
    +  // Valid values are "MountOption" and "Recursive".
    +  //
    +  // "Recursive" means relabeling of all files on all Pod volumes by the container runtime.
    +  // This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node.
    +  //
    +  // "MountOption" mounts all eligible Pod volumes with `-o context` mount option.
    +  // This requires all Pods that share the same volume to use the same SELinux label.
    +  // It is not possible to share the same volume among privileged and unprivileged Pods.
    +  // Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes
    +  // whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their
    +  // CSIDriver instance. Other volumes are always re-labelled recursively.
    +  // "MountOption" value is allowed only when SELinuxMount feature gate is enabled.
    +  //
    +  // If not specified and SELinuxMount feature gate is enabled, "MountOption" is used.
    +  // If not specified and SELinuxMount feature gate is disabled, "MountOption" is used for ReadWriteOncePod volumes
    +  // and "Recursive" for all other volumes.
    +  //
    +  // This field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers.
    +  //
    +  // All Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state.
    +  // Note that this field cannot be set when spec.os.name is windows.
    +  // +featureGate=SELinuxChangePolicy
    +  // +optional
    +  optional string seLinuxChangePolicy = 13;
     }
     
     // Describes the class of pods that should avoid this node.
    @@ -3802,7 +4116,7 @@ message PodSecurityContext {
     message PodSignature {
       // Reference to controller whose pods should avoid this node.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;
     }
     
     // PodSpec is a description of a pod.
    @@ -3812,6 +4126,8 @@ message PodSpec {
       // +optional
       // +patchMergeKey=name
       // +patchStrategy=merge,retainKeys
    +  // +listType=map
    +  // +listMapKey=name
       repeated Volume volumes = 1;
     
       // List of initialization containers belonging to the pod.
    @@ -3829,6 +4145,8 @@ message PodSpec {
       // More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated Container initContainers = 20;
     
       // List of containers belonging to the pod.
    @@ -3837,6 +4155,8 @@ message PodSpec {
       // Cannot be updated.
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated Container containers = 2;
     
       // List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
    @@ -3846,6 +4166,8 @@ message PodSpec {
       // +optional
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated EphemeralContainer ephemeralContainers = 34;
     
       // Restart policy for all containers within the pod.
    @@ -3893,7 +4215,7 @@ message PodSpec {
       // +optional
       optional string serviceAccountName = 8;
     
    -  // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.
    +  // DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
       // Deprecated: Use serviceAccountName instead.
       // +k8s:conversion-gen=false
       // +optional
    @@ -3903,9 +4225,11 @@ message PodSpec {
       // +optional
       optional bool automountServiceAccountToken = 21;
     
    -  // NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
    -  // the scheduler simply schedules this pod onto that node, assuming that it fits resource
    -  // requirements.
    +  // NodeName indicates in which node this pod is scheduled.
    +  // If empty, this pod is a candidate for scheduling by the scheduler defined in schedulerName.
    +  // Once this field is set, the kubelet for this node becomes responsible for the lifecycle of this pod.
    +  // This field should not be used to express a desire for the pod to be scheduled on a specific node.
    +  // https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename
       // +optional
       optional string nodeName = 10;
     
    @@ -3948,6 +4272,8 @@ message PodSpec {
       // +optional
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated LocalObjectReference imagePullSecrets = 15;
     
       // Specifies the hostname of the Pod
    @@ -3971,13 +4297,16 @@ message PodSpec {
     
       // If specified, the pod's tolerations.
       // +optional
    +  // +listType=atomic
       repeated Toleration tolerations = 22;
     
       // HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
    -  // file if specified. This is only valid for non-hostNetwork pods.
    +  // file if specified.
       // +optional
       // +patchMergeKey=ip
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=ip
       repeated HostAlias hostAliases = 23;
     
       // If specified, indicates the pod's priority. "system-node-critical" and
    @@ -4008,6 +4337,7 @@ message PodSpec {
       // all conditions specified in the readiness gates have status equal to "True"
       // More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       // +optional
    +  // +listType=atomic
       repeated PodReadinessGate readinessGates = 28;
     
       // RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
    @@ -4038,7 +4368,7 @@ message PodSpec {
       // defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
       // More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
       // +optional
    -  map overhead = 32;
    +  map overhead = 32;
     
       // TopologySpreadConstraints describes how a group of pods ought to spread across topology
       // domains. Scheduler will schedule pods in a way which abides by the constraints.
    @@ -4069,6 +4399,7 @@ message PodSpec {
       // - spec.hostPID
       // - spec.hostIPC
       // - spec.hostUsers
    +  // - spec.securityContext.appArmorProfile
       // - spec.securityContext.seLinuxOptions
       // - spec.securityContext.seccompProfile
       // - spec.securityContext.fsGroup
    @@ -4078,6 +4409,8 @@ message PodSpec {
       // - spec.securityContext.runAsUser
       // - spec.securityContext.runAsGroup
       // - spec.securityContext.supplementalGroups
    +  // - spec.securityContext.supplementalGroupsPolicy
    +  // - spec.containers[*].securityContext.appArmorProfile
       // - spec.containers[*].securityContext.seLinuxOptions
       // - spec.containers[*].securityContext.seccompProfile
       // - spec.containers[*].securityContext.capabilities
    @@ -4109,13 +4442,10 @@ message PodSpec {
       //
       // SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       //
    -  // This is a beta feature enabled by the PodSchedulingReadiness feature gate.
    -  //
       // +patchMergeKey=name
       // +patchStrategy=merge
       // +listType=map
       // +listMapKey=name
    -  // +featureGate=PodSchedulingReadiness
       // +optional
       repeated PodSchedulingGate schedulingGates = 38;
     
    @@ -4136,6 +4466,21 @@ message PodSpec {
       // +featureGate=DynamicResourceAllocation
       // +optional
       repeated PodResourceClaim resourceClaims = 39;
    +
    +  // Resources is the total amount of CPU and Memory resources required by all
    +  // containers in the pod. It supports specifying Requests and Limits for
    +  // "cpu" and "memory" resource names only. ResourceClaims are not supported.
    +  //
    +  // This field enables fine-grained control over resource allocation for the
    +  // entire pod, allowing resource sharing among containers in a pod.
    +  // TODO: For beta graduation, expand this comment with a detailed explanation.
    +  //
    +  // This is an alpha field and requires enabling the PodLevelResources feature
    +  // gate.
    +  //
    +  // +featureGate=PodLevelResources
    +  // +optional
    +  optional ResourceRequirements resources = 40;
     }
     
     // PodStatus represents information about the status of a pod. Status may trail the actual
    @@ -4168,6 +4513,8 @@ message PodStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated PodCondition conditions = 2;
     
       // A human readable message indicating details about why the pod is in this condition.
    @@ -4216,22 +4563,38 @@ message PodStatus {
       // +optional
       // +patchStrategy=merge
       // +patchMergeKey=ip
    +  // +listType=map
    +  // +listMapKey=ip
       repeated PodIP podIPs = 12;
     
       // RFC 3339 date and time at which the object was acknowledged by the Kubelet.
       // This is before the Kubelet pulled the container image(s) for the pod.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;
     
    -  // The list has one entry per init container in the manifest. The most recent successful
    +  // Statuses of init containers in this pod. The most recent successful non-restartable
       // init container will have ready = true, the most recently started container will have
       // startTime set.
    -  // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
    +  // Each init container in the pod should have at most one status in this list,
    +  // and all statuses should be for containers in the pod.
    +  // However this is not enforced.
    +  // If a status for a non-existent container is present in the list, or the list has duplicate names,
    +  // the behavior of various Kubernetes components is not defined and those statuses might be
    +  // ignored.
    +  // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-and-container-status
    +  // +listType=atomic
       repeated ContainerStatus initContainerStatuses = 10;
     
    -  // The list has one entry per container in the manifest.
    +  // Statuses of containers in this pod.
    +  // Each container in the pod should have at most one status in this list,
    +  // and all statuses should be for containers in the pod.
    +  // However this is not enforced.
    +  // If a status for a non-existent container is present in the list, or the list has duplicate names,
    +  // the behavior of various Kubernetes components is not defined and those statuses might be
    +  // ignored.
       // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       // +optional
    +  // +listType=atomic
       repeated ContainerStatus containerStatuses = 8;
     
       // The Quality of Service (QOS) classification assigned to the pod based on resource requirements
    @@ -4240,8 +4603,16 @@ message PodStatus {
       // +optional
       optional string qosClass = 9;
     
    -  // Status for any ephemeral containers that have run in this pod.
    +  // Statuses for any ephemeral containers that have run in this pod.
    +  // Each ephemeral container in the pod should have at most one status in this list,
    +  // and all statuses should be for containers in the pod.
    +  // However this is not enforced.
    +  // If a status for a non-existent container is present in the list, or the list has duplicate names,
    +  // the behavior of various Kubernetes components is not defined and those statuses might be
    +  // ignored.
    +  // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       // +optional
    +  // +listType=atomic
       repeated ContainerStatus ephemeralContainerStatuses = 13;
     
       // Status of resources resize desired for pod's containers.
    @@ -4266,7 +4637,7 @@ message PodStatusResult {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Most recently observed status of the pod.
       // This data may not be up to date.
    @@ -4282,7 +4653,7 @@ message PodTemplate {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Template defines the pods that will be created from this pod template.
       // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -4295,7 +4666,7 @@ message PodTemplateList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of pod templates
       repeated PodTemplate items = 2;
    @@ -4306,7 +4677,7 @@ message PodTemplateSpec {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the pod.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -4314,6 +4685,7 @@ message PodTemplateSpec {
       optional PodSpec spec = 2;
     }
     
    +// PortStatus represents the error condition of a service port
     message PortStatus {
       // Port is the port number of the service port of which status is recorded here
       optional int32 port = 1;
    @@ -4368,7 +4740,7 @@ message PreferAvoidPodsEntry {
     
       // Time at which this entry was added to the list.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;
     
       // (brief) reason why this entry was added to the list.
       // +optional
    @@ -4438,27 +4810,29 @@ message Probe {
     // ProbeHandler defines a specific action that should be taken in a probe.
     // One and only one of the fields must be specified.
     message ProbeHandler {
    -  // Exec specifies the action to take.
    +  // Exec specifies a command to execute in the container.
       // +optional
       optional ExecAction exec = 1;
     
    -  // HTTPGet specifies the http request to perform.
    +  // HTTPGet specifies an HTTP GET request to perform.
       // +optional
       optional HTTPGetAction httpGet = 2;
     
    -  // TCPSocket specifies an action involving a TCP port.
    +  // TCPSocket specifies a connection to a TCP port.
       // +optional
       optional TCPSocketAction tcpSocket = 3;
     
    -  // GRPC specifies an action involving a GRPC port.
    +  // GRPC specifies a GRPC HealthCheckRequest.
       // +optional
       optional GRPCAction grpc = 4;
     }
     
     // Represents a projected volume source
     message ProjectedVolumeSource {
    -  // sources is the list of volume projections
    +  // sources is the list of volume projections. Each entry in this list
    +  // handles one source.
       // +optional
    +  // +listType=atomic
       repeated VolumeProjection sources = 1;
     
       // defaultMode are the mode bits used to set permissions on created files by default.
    @@ -4508,6 +4882,7 @@ message QuobyteVolumeSource {
     message RBDPersistentVolumeSource {
       // monitors is a collection of Ceph monitors.
       // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
    +  // +listType=atomic
       repeated string monitors = 1;
     
       // image is the rados image name.
    @@ -4526,18 +4901,21 @@ message RBDPersistentVolumeSource {
       // Default is rbd.
       // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       // +optional
    +  // +default="rbd"
       optional string pool = 4;
     
       // user is the rados user name.
       // Default is admin.
       // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       // +optional
    +  // +default="admin"
       optional string user = 5;
     
       // keyring is the path to key ring for RBDUser.
       // Default is /etc/ceph/keyring.
       // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       // +optional
    +  // +default="/etc/ceph/keyring"
       optional string keyring = 6;
     
       // secretRef is name of the authentication secret for RBDUser. If provided
    @@ -4559,6 +4937,7 @@ message RBDPersistentVolumeSource {
     message RBDVolumeSource {
       // monitors is a collection of Ceph monitors.
       // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
    +  // +listType=atomic
       repeated string monitors = 1;
     
       // image is the rados image name.
    @@ -4577,18 +4956,21 @@ message RBDVolumeSource {
       // Default is rbd.
       // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       // +optional
    +  // +default="rbd"
       optional string pool = 4;
     
       // user is the rados user name.
       // Default is admin.
       // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       // +optional
    +  // +default="admin"
       optional string user = 5;
     
       // keyring is the path to key ring for RBDUser.
       // Default is /etc/ceph/keyring.
       // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       // +optional
    +  // +default="/etc/ceph/keyring"
       optional string keyring = 6;
     
       // secretRef is name of the authentication secret for RBDUser. If provided
    @@ -4610,7 +4992,7 @@ message RangeAllocation {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Range is string that identifies the range represented by 'data'.
       optional string range = 2;
    @@ -4625,7 +5007,7 @@ message ReplicationController {
       // be the same as the Pod(s) that the replication controller manages.
       // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the specification of the desired behavior of the replication controller.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -4651,7 +5033,7 @@ message ReplicationControllerCondition {
     
       // The last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // The reason for the condition's last transition.
       // +optional
    @@ -4667,7 +5049,7 @@ message ReplicationControllerList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of replication controllers.
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
    @@ -4733,6 +5115,8 @@ message ReplicationControllerStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated ReplicationControllerCondition conditions = 6;
     }
     
    @@ -4742,6 +5126,13 @@ message ResourceClaim {
       // the Pod where this field is used. It makes that resource available
       // inside a container.
       optional string name = 1;
    +
    +  // Request is the name chosen for a request in the referenced claim.
    +  // If empty, everything from the claim is made available, otherwise
    +  // only the result of this request.
    +  //
    +  // +optional
    +  optional string request = 2;
     }
     
     // ResourceFieldSelector represents container resources (cpu, memory) and their output format
    @@ -4756,7 +5147,26 @@ message ResourceFieldSelector {
     
       // Specifies the output format of the exposed resources, defaults to "1"
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;
    +}
    +
    +// ResourceHealth represents the health of a resource. It has the latest device health information.
    +// This is a part of KEP https://kep.k8s.io/4680.
    +message ResourceHealth {
    +  // ResourceID is the unique identifier of the resource. See the ResourceID type for more information.
    +  optional string resourceID = 1;
    +
    +  // Health of the resource.
    +  // can be one of:
    +  //  - Healthy: operates as normal
    +  //  - Unhealthy: reported unhealthy. We consider this a temporary health issue
    +  //               since we do not have a mechanism today to distinguish
    +  //               temporary and permanent issues.
    +  //  - Unknown: The status cannot be determined.
    +  //             For example, Device Plugin got unregistered and hasn't been re-registered since.
    +  //
    +  // In future we may want to introduce the PermanentlyUnhealthy Status.
    +  optional string health = 2;
     }
     
     // ResourceQuota sets aggregate quota restrictions enforced per namespace
    @@ -4764,7 +5174,7 @@ message ResourceQuota {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the desired quota.
       // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -4782,7 +5192,7 @@ message ResourceQuotaList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of ResourceQuota objects.
       // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
    @@ -4794,11 +5204,12 @@ message ResourceQuotaSpec {
       // hard is the set of desired hard limits for each named resource.
       // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       // +optional
    -  map hard = 1;
    +  map hard = 1;
     
       // A collection of filters that must match each object tracked by a quota.
       // If not specified, the quota matches all objects.
       // +optional
    +  // +listType=atomic
       repeated string scopes = 2;
     
       // scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
    @@ -4813,11 +5224,11 @@ message ResourceQuotaStatus {
       // Hard is the set of enforced hard limits for each named resource.
       // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       // +optional
    -  map hard = 1;
    +  map hard = 1;
     
       // Used is the current observed total usage of the resource in the namespace.
       // +optional
    -  map used = 2;
    +  map used = 2;
     }
     
     // ResourceRequirements describes the compute resource requirements.
    @@ -4825,14 +5236,14 @@ message ResourceRequirements {
       // Limits describes the maximum amount of compute resources allowed.
       // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       // +optional
    -  map limits = 1;
    +  map limits = 1;
     
       // Requests describes the minimum amount of compute resources required.
       // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       // otherwise to an implementation-defined value. Requests cannot exceed Limits.
       // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       // +optional
    -  map requests = 2;
    +  map requests = 2;
     
       // Claims lists the names of resources, defined in spec.resourceClaims,
       // that are used by this container.
    @@ -4849,6 +5260,23 @@ message ResourceRequirements {
       repeated ResourceClaim claims = 3;
     }
     
    +// ResourceStatus represents the status of a single resource allocated to a Pod.
    +message ResourceStatus {
    +  // Name of the resource. Must be unique within the pod and in case of non-DRA resource, match one of the resources from the pod spec.
    +  // For DRA resources, the value must be "claim:/".
    +  // When this status is reported about a container, the "claim_name" and "request" must match one of the claims of this container.
    +  // +required
    +  optional string name = 1;
    +
    +  // List of unique resources health. Each element in the list contains an unique resource ID and its health.
    +  // At a minimum, for the lifetime of a Pod, resource ID must uniquely identify the resource allocated to the Pod on the Node.
    +  // If other Pod on the same Node reports the status with the same resource ID, it must be the same resource they share.
    +  // See ResourceID type definition for a specific format it has in various use cases.
    +  // +listType=map
    +  // +listMapKey=resourceID
    +  repeated ResourceHealth resources = 2;
    +}
    +
     // SELinuxOptions are the labels to be applied to the container
     message SELinuxOptions {
       // User is a SELinux user label that applies to the container.
    @@ -4895,6 +5323,7 @@ message ScaleIOPersistentVolumeSource {
       // storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       // Default is ThinProvisioned.
       // +optional
    +  // +default="ThinProvisioned"
       optional string storageMode = 7;
     
       // volumeName is the name of a volume already created in the ScaleIO system
    @@ -4906,6 +5335,7 @@ message ScaleIOPersistentVolumeSource {
       // Ex. "ext4", "xfs", "ntfs".
       // Default is "xfs"
       // +optional
    +  // +default="xfs"
       optional string fsType = 9;
     
       // readOnly defaults to false (read/write). ReadOnly here will force
    @@ -4941,6 +5371,7 @@ message ScaleIOVolumeSource {
       // storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       // Default is ThinProvisioned.
       // +optional
    +  // +default="ThinProvisioned"
       optional string storageMode = 7;
     
       // volumeName is the name of a volume already created in the ScaleIO system
    @@ -4952,6 +5383,7 @@ message ScaleIOVolumeSource {
       // Ex. "ext4", "xfs", "ntfs".
       // Default is "xfs".
       // +optional
    +  // +default="xfs"
       optional string fsType = 9;
     
       // readOnly Defaults to false (read/write). ReadOnly here will force
    @@ -4966,6 +5398,7 @@ message ScaleIOVolumeSource {
     message ScopeSelector {
       // A list of scope selector requirements by scope of the resources.
       // +optional
    +  // +listType=atomic
       repeated ScopedResourceSelectorRequirement matchExpressions = 1;
     }
     
    @@ -4984,6 +5417,7 @@ message ScopedResourceSelectorRequirement {
       // the values array must be empty.
       // This array is replaced during a strategic merge patch.
       // +optional
    +  // +listType=atomic
       repeated string values = 3;
     }
     
    @@ -5014,7 +5448,7 @@ message Secret {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Immutable, if set to true, ensures that data stored in the Secret cannot
       // be updated (only object metadata can be modified).
    @@ -5077,7 +5511,7 @@ message SecretList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of secret objects.
       // More info: https://kubernetes.io/docs/concepts/configuration/secret
    @@ -5101,6 +5535,7 @@ message SecretProjection {
       // the volume setup will error unless it is marked optional. Paths must be
       // relative and may not contain the '..' path or start with '..'.
       // +optional
    +  // +listType=atomic
       repeated KeyToPath items = 2;
     
       // optional field specify whether the Secret or its key must be defined
    @@ -5140,6 +5575,7 @@ message SecretVolumeSource {
       // the volume setup will error unless it is marked optional. Paths must be
       // relative and may not contain the '..' path or start with '..'.
       // +optional
    +  // +listType=atomic
       repeated KeyToPath items = 2;
     
       // defaultMode is Optional: mode bits used to set permissions on created files by default.
    @@ -5231,7 +5667,7 @@ message SecurityContext {
       optional bool allowPrivilegeEscalation = 7;
     
       // procMount denotes the type of proc mount to use for the containers.
    -  // The default is DefaultProcMount which uses the container runtime defaults for
    +  // The default value is Default which uses the container runtime defaults for
       // readonly paths and masked paths.
       // This requires the ProcMountType feature flag to be enabled.
       // Note that this field cannot be set when spec.os.name is windows.
    @@ -5244,6 +5680,12 @@ message SecurityContext {
       // Note that this field cannot be set when spec.os.name is windows.
       // +optional
       optional SeccompProfile seccompProfile = 11;
    +
    +  // appArmorProfile is the AppArmor options to use by this container. If set, this profile
    +  // overrides the pod's appArmorProfile.
    +  // Note that this field cannot be set when spec.os.name is windows.
    +  // +optional
    +  optional AppArmorProfile appArmorProfile = 12;
     }
     
     // SerializedReference is a reference to serialized object.
    @@ -5260,7 +5702,7 @@ message Service {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the behavior of a service.
       // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -5283,16 +5725,20 @@ message ServiceAccount {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       // Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
    +  // The "kubernetes.io/enforce-mountable-secrets" annotation is deprecated since v1.32.
    +  // Prefer separate namespaces to isolate access to mounted secrets.
       // This field should not be used to find auto-generated service account token secrets for use outside of pods.
       // Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       // More info: https://kubernetes.io/docs/concepts/configuration/secret
       // +optional
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated ObjectReference secrets = 2;
     
       // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
    @@ -5300,6 +5746,7 @@ message ServiceAccount {
       // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       // More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       // +optional
    +  // +listType=atomic
       repeated LocalObjectReference imagePullSecrets = 3;
     
       // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
    @@ -5313,7 +5760,7 @@ message ServiceAccountList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of ServiceAccounts.
       // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
    @@ -5351,7 +5798,7 @@ message ServiceList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of services
       repeated Service items = 2;
    @@ -5403,7 +5850,7 @@ message ServicePort {
       // omitted or set equal to the 'port' field.
       // More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;
     
       // The port on each node on which this service is exposed when type is
       // NodePort or LoadBalancer.  Usually assigned by the system. If a value is
    @@ -5520,6 +5967,7 @@ message ServiceSpec {
       // at a node with this IP.  A common example is external load-balancers
       // that are not part of the Kubernetes system.
       // +optional
    +  // +listType=atomic
       repeated string externalIPs = 5;
     
       // Supports "ClientIP" and "None". Used to maintain session affinity.
    @@ -5545,6 +5993,7 @@ message ServiceSpec {
       // cloud-provider does not support the feature."
       // More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
       // +optional
    +  // +listType=atomic
       repeated string loadBalancerSourceRanges = 9;
     
       // externalName is the external reference that discovery mechanisms will
    @@ -5660,6 +6109,17 @@ message ServiceSpec {
       // (possibly modified by topology and other features).
       // +optional
       optional string internalTrafficPolicy = 22;
    +
    +  // TrafficDistribution offers a way to express preferences for how traffic is
    +  // distributed to Service endpoints. Implementations can use this field as a
    +  // hint, but are not required to guarantee strict adherence. If the field is
    +  // not set, the implementation will apply its default routing strategy. If set
    +  // to "PreferClose", implementations should prioritize endpoints that are
    +  // topologically close (e.g., same zone).
    +  // This is a beta field and requires enabling ServiceTrafficDistribution feature.
    +  // +featureGate=ServiceTrafficDistribution
    +  // +optional
    +  optional string trafficDistribution = 23;
     }
     
     // ServiceStatus represents the current status of a service.
    @@ -5675,7 +6135,7 @@ message ServiceStatus {
       // +patchStrategy=merge
       // +listType=map
       // +listMapKey=type
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;
     }
     
     // SessionAffinityConfig represents the configurations of session affinity.
    @@ -5769,7 +6229,7 @@ message TCPSocketAction {
       // Number or name of the port to access on the container.
       // Number must be in the range 1 to 65535.
       // Name must be an IANA_SVC_NAME.
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;
     
       // Optional: Host name to connect to, defaults to the pod IP.
       // +optional
    @@ -5794,7 +6254,7 @@ message Taint {
       // TimeAdded represents the time at which the taint was added.
       // It is only written for NoExecute taints.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;
     }
     
     // The pod this Toleration is attached to tolerates any taint that matches
    @@ -5838,6 +6298,7 @@ message TopologySelectorLabelRequirement {
     
       // An array of string values. One value must match the label to be selected.
       // Each entry in Values is ORed.
    +  // +listType=atomic
       repeated string values = 2;
     }
     
    @@ -5850,6 +6311,7 @@ message TopologySelectorLabelRequirement {
     message TopologySelectorTerm {
       // A list of topology selector requirements by labels.
       // +optional
    +  // +listType=atomic
       repeated TopologySelectorLabelRequirement matchLabelExpressions = 1;
     }
     
    @@ -5916,7 +6378,7 @@ message TopologySpreadConstraint {
       // Pods that match this label selector are counted to determine the number of pods
       // in their corresponding topology domain.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
     
       // MinDomains indicates a minimum number of eligible domains.
       // When the number of eligible domains with matching topology keys is less than minDomains,
    @@ -5940,8 +6402,6 @@ message TopologySpreadConstraint {
       // In this situation, new pod with the same labelSelector cannot be scheduled,
       // because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
       // it will violate MaxSkew.
    -  //
    -  // This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).
       // +optional
       optional int32 minDomains = 5;
     
    @@ -5983,6 +6443,20 @@ message TopologySpreadConstraint {
     
     // TypedLocalObjectReference contains enough information to let you locate the
     // typed referenced object inside the same namespace.
    +// ---
    +// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
    +//  1. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
    +//     restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
    +//     Those cannot be well described when embedded.
    +//  2. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
    +//  3. The fields are both imprecise and overly precise.  Kind is not a precise mapping to a URL. This can produce ambiguity
    +//     during interpretation and require a REST mapping.  In most cases, the dependency is on the group,resource tuple
    +//     and the version of the actual struct is irrelevant.
    +//  4. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
    +//     will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.
    +//
    +// Instead of using this type, create a locally provided and used type that is well-focused on your reference.
    +// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
     // +structType=atomic
     message TypedLocalObjectReference {
       // APIGroup is the group for the resource being referenced.
    @@ -5998,6 +6472,7 @@ message TypedLocalObjectReference {
       optional string name = 3;
     }
     
    +// TypedObjectReference contains enough information to let you locate the typed referenced object
     message TypedObjectReference {
       // APIGroup is the group for the resource being referenced.
       // If APIGroup is not specified, the specified Kind must be in the core API group.
    @@ -6051,6 +6526,27 @@ message VolumeMount {
       // +optional
       optional bool readOnly = 2;
     
    +  // RecursiveReadOnly specifies whether read-only mounts should be handled
    +  // recursively.
    +  //
    +  // If ReadOnly is false, this field has no meaning and must be unspecified.
    +  //
    +  // If ReadOnly is true, and this field is set to Disabled, the mount is not made
    +  // recursively read-only.  If this field is set to IfPossible, the mount is made
    +  // recursively read-only, if it is supported by the container runtime.  If this
    +  // field is set to Enabled, the mount is made recursively read-only if it is
    +  // supported by the container runtime, otherwise the pod will not be started and
    +  // an error will be generated to indicate the reason.
    +  //
    +  // If this field is set to IfPossible or Enabled, MountPropagation must be set to
    +  // None (or be unspecified, which defaults to None).
    +  //
    +  // If this field is not specified, it is treated as an equivalent of Disabled.
    +  //
    +  // +featureGate=RecursiveReadOnlyMounts
    +  // +optional
    +  optional string recursiveReadOnly = 7;
    +
       // Path within the container at which the volume should be mounted.  Must
       // not contain ':'.
       optional string mountPath = 3;
    @@ -6064,6 +6560,8 @@ message VolumeMount {
       // to container and the other way around.
       // When not set, MountPropagationNone is used.
       // This field is beta in 1.10.
    +  // When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
    +  // (which defaults to None).
       // +optional
       optional string mountPropagation = 5;
     
    @@ -6075,13 +6573,34 @@ message VolumeMount {
       optional string subPathExpr = 6;
     }
     
    +// VolumeMountStatus shows status of volume mounts.
    +message VolumeMountStatus {
    +  // Name corresponds to the name of the original VolumeMount.
    +  optional string name = 1;
    +
    +  // MountPath corresponds to the original VolumeMount.
    +  optional string mountPath = 2;
    +
    +  // ReadOnly corresponds to the original VolumeMount.
    +  // +optional
    +  optional bool readOnly = 3;
    +
    +  // RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
    +  // An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
    +  // depending on the mount result.
    +  // +featureGate=RecursiveReadOnlyMounts
    +  // +optional
    +  optional string recursiveReadOnly = 4;
    +}
    +
     // VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.
     message VolumeNodeAffinity {
       // required specifies hard node constraints that must be met.
       optional NodeSelector required = 1;
     }
     
    -// Projection that may be projected along with other supported volume types
    +// Projection that may be projected along with other supported volume types.
    +// Exactly one of these fields must be set.
     message VolumeProjection {
       // secret information about the secret data to project
       // +optional
    @@ -6123,14 +6642,14 @@ message VolumeResourceRequirements {
       // Limits describes the maximum amount of compute resources allowed.
       // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       // +optional
    -  map limits = 1;
    +  map limits = 1;
     
       // Requests describes the minimum amount of compute resources required.
       // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       // otherwise to an implementation-defined value. Requests cannot exceed Limits.
       // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       // +optional
    -  map requests = 2;
    +  map requests = 2;
     }
     
     // Represents the source of a volume to mount.
    @@ -6154,18 +6673,22 @@ message VolumeSource {
     
       // gcePersistentDisk represents a GCE Disk resource that is attached to a
       // kubelet's host machine and then exposed to the pod.
    +  // Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
    +  // gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
       // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       // +optional
       optional GCEPersistentDiskVolumeSource gcePersistentDisk = 3;
     
       // awsElasticBlockStore represents an AWS Disk resource that is attached to a
       // kubelet's host machine and then exposed to the pod.
    +  // Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
    +  // awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
       // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       // +optional
       optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;
     
       // gitRepo represents a git repository at a particular revision.
    -  // DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
    +  // Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an
       // EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
       // into the Pod's container.
       // +optional
    @@ -6188,6 +6711,7 @@ message VolumeSource {
       optional ISCSIVolumeSource iscsi = 8;
     
       // glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
    +  // Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.
       // More info: https://examples.k8s.io/volumes/glusterfs/README.md
       // +optional
       optional GlusterfsVolumeSource glusterfs = 9;
    @@ -6199,25 +6723,31 @@ message VolumeSource {
       optional PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;
     
       // rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
    +  // Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
       // More info: https://examples.k8s.io/volumes/rbd/README.md
       // +optional
       optional RBDVolumeSource rbd = 11;
     
       // flexVolume represents a generic volume resource that is
       // provisioned/attached using an exec based plugin.
    +  // Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
       // +optional
       optional FlexVolumeSource flexVolume = 12;
     
       // cinder represents a cinder volume attached and mounted on kubelets host machine.
    +  // Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
    +  // are redirected to the cinder.csi.openstack.org CSI driver.
       // More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       // +optional
       optional CinderVolumeSource cinder = 13;
     
    -  // cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
    +  // cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
    +  // Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
       // +optional
       optional CephFSVolumeSource cephfs = 14;
     
    -  // flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
    +  // flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.
    +  // Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
       // +optional
       optional FlockerVolumeSource flocker = 15;
     
    @@ -6230,6 +6760,8 @@ message VolumeSource {
       optional FCVolumeSource fc = 17;
     
       // azureFile represents an Azure File Service mount on the host and bind mount to the pod.
    +  // Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
    +  // are redirected to the file.csi.azure.com CSI driver.
       // +optional
       optional AzureFileVolumeSource azureFile = 18;
     
    @@ -6237,37 +6769,48 @@ message VolumeSource {
       // +optional
       optional ConfigMapVolumeSource configMap = 19;
     
    -  // vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
    +  // vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
    +  // Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
    +  // are redirected to the csi.vsphere.vmware.com CSI driver.
       // +optional
       optional VsphereVirtualDiskVolumeSource vsphereVolume = 20;
     
    -  // quobyte represents a Quobyte mount on the host that shares a pod's lifetime
    +  // quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
    +  // Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
       // +optional
       optional QuobyteVolumeSource quobyte = 21;
     
       // azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
    +  // Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
    +  // are redirected to the disk.csi.azure.com CSI driver.
       // +optional
       optional AzureDiskVolumeSource azureDisk = 22;
     
    -  // photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
    +  // photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
    +  // Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
       optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;
     
       // projected items for all in one resources secrets, configmaps, and downward API
       optional ProjectedVolumeSource projected = 26;
     
    -  // portworxVolume represents a portworx volume attached and mounted on kubelets host machine
    +  // portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
    +  // Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
    +  // are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
    +  // is on.
       // +optional
       optional PortworxVolumeSource portworxVolume = 24;
     
       // scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
    +  // Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
       // +optional
       optional ScaleIOVolumeSource scaleIO = 25;
     
       // storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
    +  // Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
       // +optional
       optional StorageOSVolumeSource storageos = 27;
     
    -  // csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
    +  // csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers.
       // +optional
       optional CSIVolumeSource csi = 28;
     
    @@ -6298,6 +6841,24 @@ message VolumeSource {
       //
       // +optional
       optional EphemeralVolumeSource ephemeral = 29;
    +
    +  // image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.
    +  // The volume is resolved at pod startup depending on which PullPolicy value is provided:
    +  //
    +  // - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
    +  // - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
    +  // - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
    +  //
    +  // The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.
    +  // A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.
    +  // The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.
    +  // The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.
    +  // The volume will be mounted read-only (ro) and non-executable files (noexec).
    +  // Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath).
    +  // The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.
    +  // +featureGate=ImageVolume
    +  // +optional
    +  optional ImageVolumeSource image = 30;
     }
     
     // Represents a vSphere volume resource.
    diff --git a/vendor/k8s.io/api/core/v1/objectreference.go b/vendor/k8s.io/api/core/v1/objectreference.go
    index ee5335ee875f..609cadc7aa87 100644
    --- a/vendor/k8s.io/api/core/v1/objectreference.go
    +++ b/vendor/k8s.io/api/core/v1/objectreference.go
    @@ -20,7 +20,7 @@ import (
     	"k8s.io/apimachinery/pkg/runtime/schema"
     )
     
    -// IsAnAPIObject allows clients to preemptively get a reference to an API object and pass it to places that
    +// SetGroupVersionKind allows clients to preemptively get a reference to an API object and pass it to places that
     // intend only to get a reference to that object. This simplifies the event recording interface.
     func (obj *ObjectReference) SetGroupVersionKind(gvk schema.GroupVersionKind) {
     	obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind()
    diff --git a/vendor/k8s.io/api/core/v1/types.go b/vendor/k8s.io/api/core/v1/types.go
    index 61ba21bcad4e..fb2c1c7453ef 100644
    --- a/vendor/k8s.io/api/core/v1/types.go
    +++ b/vendor/k8s.io/api/core/v1/types.go
    @@ -63,16 +63,20 @@ type VolumeSource struct {
     	EmptyDir *EmptyDirVolumeSource `json:"emptyDir,omitempty" protobuf:"bytes,2,opt,name=emptyDir"`
     	// gcePersistentDisk represents a GCE Disk resource that is attached to a
     	// kubelet's host machine and then exposed to the pod.
    +	// Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
    +	// gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
     	// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     	// +optional
     	GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" protobuf:"bytes,3,opt,name=gcePersistentDisk"`
     	// awsElasticBlockStore represents an AWS Disk resource that is attached to a
     	// kubelet's host machine and then exposed to the pod.
    +	// Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
    +	// awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
     	// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     	// +optional
     	AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" protobuf:"bytes,4,opt,name=awsElasticBlockStore"`
     	// gitRepo represents a git repository at a particular revision.
    -	// DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
    +	// Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an
     	// EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
     	// into the Pod's container.
     	// +optional
    @@ -91,6 +95,7 @@ type VolumeSource struct {
     	// +optional
     	ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty" protobuf:"bytes,8,opt,name=iscsi"`
     	// glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
    +	// Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.
     	// More info: https://examples.k8s.io/volumes/glusterfs/README.md
     	// +optional
     	Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" protobuf:"bytes,9,opt,name=glusterfs"`
    @@ -100,21 +105,27 @@ type VolumeSource struct {
     	// +optional
     	PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaim"`
     	// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
    +	// Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md
     	// +optional
     	RBD *RBDVolumeSource `json:"rbd,omitempty" protobuf:"bytes,11,opt,name=rbd"`
     	// flexVolume represents a generic volume resource that is
     	// provisioned/attached using an exec based plugin.
    +	// Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
     	// +optional
     	FlexVolume *FlexVolumeSource `json:"flexVolume,omitempty" protobuf:"bytes,12,opt,name=flexVolume"`
     	// cinder represents a cinder volume attached and mounted on kubelets host machine.
    +	// Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
    +	// are redirected to the cinder.csi.openstack.org CSI driver.
     	// More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     	// +optional
     	Cinder *CinderVolumeSource `json:"cinder,omitempty" protobuf:"bytes,13,opt,name=cinder"`
    -	// cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
    +	// cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
    +	// Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
     	// +optional
     	CephFS *CephFSVolumeSource `json:"cephfs,omitempty" protobuf:"bytes,14,opt,name=cephfs"`
    -	// flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
    +	// flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.
    +	// Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
     	// +optional
     	Flocker *FlockerVolumeSource `json:"flocker,omitempty" protobuf:"bytes,15,opt,name=flocker"`
     	// downwardAPI represents downward API about the pod that should populate this volume
    @@ -124,34 +135,47 @@ type VolumeSource struct {
     	// +optional
     	FC *FCVolumeSource `json:"fc,omitempty" protobuf:"bytes,17,opt,name=fc"`
     	// azureFile represents an Azure File Service mount on the host and bind mount to the pod.
    +	// Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
    +	// are redirected to the file.csi.azure.com CSI driver.
     	// +optional
     	AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty" protobuf:"bytes,18,opt,name=azureFile"`
     	// configMap represents a configMap that should populate this volume
     	// +optional
     	ConfigMap *ConfigMapVolumeSource `json:"configMap,omitempty" protobuf:"bytes,19,opt,name=configMap"`
    -	// vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
    +	// vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
    +	// Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
    +	// are redirected to the csi.vsphere.vmware.com CSI driver.
     	// +optional
     	VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty" protobuf:"bytes,20,opt,name=vsphereVolume"`
    -	// quobyte represents a Quobyte mount on the host that shares a pod's lifetime
    +	// quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
    +	// Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
     	// +optional
     	Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,21,opt,name=quobyte"`
     	// azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
    +	// Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
    +	// are redirected to the disk.csi.azure.com CSI driver.
     	// +optional
     	AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,22,opt,name=azureDisk"`
    -	// photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
    +	// photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
    +	// Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
     	PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,23,opt,name=photonPersistentDisk"`
     	// projected items for all in one resources secrets, configmaps, and downward API
     	Projected *ProjectedVolumeSource `json:"projected,omitempty" protobuf:"bytes,26,opt,name=projected"`
    -	// portworxVolume represents a portworx volume attached and mounted on kubelets host machine
    +	// portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
    +	// Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
    +	// are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
    +	// is on.
     	// +optional
     	PortworxVolume *PortworxVolumeSource `json:"portworxVolume,omitempty" protobuf:"bytes,24,opt,name=portworxVolume"`
     	// scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
    +	// Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
     	// +optional
     	ScaleIO *ScaleIOVolumeSource `json:"scaleIO,omitempty" protobuf:"bytes,25,opt,name=scaleIO"`
     	// storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
    +	// Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
     	// +optional
     	StorageOS *StorageOSVolumeSource `json:"storageos,omitempty" protobuf:"bytes,27,opt,name=storageos"`
    -	// csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
    +	// csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers.
     	// +optional
     	CSI *CSIVolumeSource `json:"csi,omitempty" protobuf:"bytes,28,opt,name=csi"`
     	// ephemeral represents a volume that is handled by a cluster storage driver.
    @@ -181,6 +205,23 @@ type VolumeSource struct {
     	//
     	// +optional
     	Ephemeral *EphemeralVolumeSource `json:"ephemeral,omitempty" protobuf:"bytes,29,opt,name=ephemeral"`
    +	// image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.
    +	// The volume is resolved at pod startup depending on which PullPolicy value is provided:
    +	//
    +	// - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
    +	// - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
    +	// - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
    +	//
    +	// The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.
    +	// A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.
    +	// The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.
    +	// The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.
    +	// The volume will be mounted read-only (ro) and non-executable files (noexec).
    +	// Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath).
    +	// The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.
    +	// +featureGate=ImageVolume
    +	// +optional
    +	Image *ImageVolumeSource `json:"image,omitempty" protobuf:"bytes,30,opt,name=image"`
     }
     
     // PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace.
    @@ -202,11 +243,15 @@ type PersistentVolumeClaimVolumeSource struct {
     type PersistentVolumeSource struct {
     	// gcePersistentDisk represents a GCE Disk resource that is attached to a
     	// kubelet's host machine and then exposed to the pod. Provisioned by an admin.
    +	// Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
    +	// gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
     	// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     	// +optional
     	GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" protobuf:"bytes,1,opt,name=gcePersistentDisk"`
     	// awsElasticBlockStore represents an AWS Disk resource that is attached to a
     	// kubelet's host machine and then exposed to the pod.
    +	// Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
    +	// awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
     	// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     	// +optional
     	AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" protobuf:"bytes,2,opt,name=awsElasticBlockStore"`
    @@ -219,6 +264,7 @@ type PersistentVolumeSource struct {
     	HostPath *HostPathVolumeSource `json:"hostPath,omitempty" protobuf:"bytes,3,opt,name=hostPath"`
     	// glusterfs represents a Glusterfs volume that is attached to a host and
     	// exposed to the pod. Provisioned by an admin.
    +	// Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.
     	// More info: https://examples.k8s.io/volumes/glusterfs/README.md
     	// +optional
     	Glusterfs *GlusterfsPersistentVolumeSource `json:"glusterfs,omitempty" protobuf:"bytes,4,opt,name=glusterfs"`
    @@ -227,6 +273,7 @@ type PersistentVolumeSource struct {
     	// +optional
     	NFS *NFSVolumeSource `json:"nfs,omitempty" protobuf:"bytes,5,opt,name=nfs"`
     	// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
    +	// Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md
     	// +optional
     	RBD *RBDPersistentVolumeSource `json:"rbd,omitempty" protobuf:"bytes,6,opt,name=rbd"`
    @@ -235,50 +282,68 @@ type PersistentVolumeSource struct {
     	// +optional
     	ISCSI *ISCSIPersistentVolumeSource `json:"iscsi,omitempty" protobuf:"bytes,7,opt,name=iscsi"`
     	// cinder represents a cinder volume attached and mounted on kubelets host machine.
    +	// Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
    +	// are redirected to the cinder.csi.openstack.org CSI driver.
     	// More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     	// +optional
     	Cinder *CinderPersistentVolumeSource `json:"cinder,omitempty" protobuf:"bytes,8,opt,name=cinder"`
    -	// cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
    +	// cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
    +	// Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
     	// +optional
     	CephFS *CephFSPersistentVolumeSource `json:"cephfs,omitempty" protobuf:"bytes,9,opt,name=cephfs"`
     	// fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     	// +optional
     	FC *FCVolumeSource `json:"fc,omitempty" protobuf:"bytes,10,opt,name=fc"`
    -	// flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
    +	// flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running.
    +	// Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
     	// +optional
     	Flocker *FlockerVolumeSource `json:"flocker,omitempty" protobuf:"bytes,11,opt,name=flocker"`
     	// flexVolume represents a generic volume resource that is
     	// provisioned/attached using an exec based plugin.
    +	// Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
     	// +optional
     	FlexVolume *FlexPersistentVolumeSource `json:"flexVolume,omitempty" protobuf:"bytes,12,opt,name=flexVolume"`
     	// azureFile represents an Azure File Service mount on the host and bind mount to the pod.
    +	// Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
    +	// are redirected to the file.csi.azure.com CSI driver.
     	// +optional
     	AzureFile *AzureFilePersistentVolumeSource `json:"azureFile,omitempty" protobuf:"bytes,13,opt,name=azureFile"`
    -	// vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
    +	// vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
    +	// Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
    +	// are redirected to the csi.vsphere.vmware.com CSI driver.
     	// +optional
     	VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty" protobuf:"bytes,14,opt,name=vsphereVolume"`
    -	// quobyte represents a Quobyte mount on the host that shares a pod's lifetime
    +	// quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
    +	// Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
     	// +optional
     	Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,15,opt,name=quobyte"`
     	// azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
    +	// Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
    +	// are redirected to the disk.csi.azure.com CSI driver.
     	// +optional
     	AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,16,opt,name=azureDisk"`
    -	// photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
    +	// photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
    +	// Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
     	PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,17,opt,name=photonPersistentDisk"`
    -	// portworxVolume represents a portworx volume attached and mounted on kubelets host machine
    +	// portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
    +	// Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
    +	// are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
    +	// is on.
     	// +optional
     	PortworxVolume *PortworxVolumeSource `json:"portworxVolume,omitempty" protobuf:"bytes,18,opt,name=portworxVolume"`
     	// scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
    +	// Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
     	// +optional
     	ScaleIO *ScaleIOPersistentVolumeSource `json:"scaleIO,omitempty" protobuf:"bytes,19,opt,name=scaleIO"`
     	// local represents directly-attached storage with node affinity
     	// +optional
     	Local *LocalVolumeSource `json:"local,omitempty" protobuf:"bytes,20,opt,name=local"`
    -	// storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
    +	// storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod.
    +	// Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
     	// More info: https://examples.k8s.io/volumes/storageos/README.md
     	// +optional
     	StorageOS *StorageOSPersistentVolumeSource `json:"storageos,omitempty" protobuf:"bytes,21,opt,name=storageos"`
    -	// csi represents storage that is handled by an external CSI driver (Beta feature).
    +	// csi represents storage that is handled by an external CSI driver.
     	// +optional
     	CSI *CSIPersistentVolumeSource `json:"csi,omitempty" protobuf:"bytes,22,opt,name=csi"`
     }
    @@ -295,6 +360,7 @@ const (
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PersistentVolume (PV) is a storage resource provisioned by an administrator.
     // It is analogous to a node.
    @@ -331,6 +397,7 @@ type PersistentVolumeSpec struct {
     	// accessModes contains all ways the volume can be mounted.
     	// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
     	// +optional
    +	// +listType=atomic
     	AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,3,rep,name=accessModes,casttype=PersistentVolumeAccessMode"`
     	// claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
     	// Expected to be non-nil when bound.
    @@ -354,6 +421,7 @@ type PersistentVolumeSpec struct {
     	// simply fail if one is invalid.
     	// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
     	// +optional
    +	// +listType=atomic
     	MountOptions []string `json:"mountOptions,omitempty" protobuf:"bytes,7,opt,name=mountOptions"`
     	// volumeMode defines if a volume is intended to be used with a formatted filesystem
     	// or to remain in raw block state. Value of Filesystem is implied when not included in spec.
    @@ -369,7 +437,7 @@ type PersistentVolumeSpec struct {
     	// after a volume has been updated successfully to a new class.
     	// For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
     	// PersistentVolumeClaims during the binding process.
    -	// This is an alpha field and requires enabling VolumeAttributesClass feature.
    +	// This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
     	// +featureGate=VolumeAttributesClass
     	// +optional
     	VolumeAttributesClassName *string `json:"volumeAttributesClassName,omitempty" protobuf:"bytes,10,opt,name=volumeAttributesClassName"`
    @@ -423,13 +491,12 @@ type PersistentVolumeStatus struct {
     	Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"`
     	// lastPhaseTransitionTime is the time the phase transitioned from one to another
     	// and automatically resets to current time everytime a volume phase transitions.
    -	// This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
    -	// +featureGate=PersistentVolumeLastPhaseTransitionTime
     	// +optional
     	LastPhaseTransitionTime *metav1.Time `json:"lastPhaseTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastPhaseTransitionTime"`
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PersistentVolumeList is a list of PersistentVolume items.
     type PersistentVolumeList struct {
    @@ -445,6 +512,7 @@ type PersistentVolumeList struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PersistentVolumeClaim is a user's request for and claim to a persistent volume
     type PersistentVolumeClaim struct {
    @@ -467,6 +535,7 @@ type PersistentVolumeClaim struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PersistentVolumeClaimList is a list of PersistentVolumeClaim items.
     type PersistentVolumeClaimList struct {
    @@ -486,6 +555,7 @@ type PersistentVolumeClaimSpec struct {
     	// accessModes contains the desired access modes the volume should have.
     	// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     	// +optional
    +	// +listType=atomic
     	AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,1,rep,name=accessModes,casttype=PersistentVolumeAccessMode"`
     	// selector is a label query over volumes to consider for binding.
     	// +optional
    @@ -553,13 +623,14 @@ type PersistentVolumeClaimSpec struct {
     	// If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
     	// set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
     	// exists.
    -	// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
    -	// (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
    +	// More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
    +	// (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
     	// +featureGate=VolumeAttributesClass
     	// +optional
     	VolumeAttributesClassName *string `json:"volumeAttributesClassName,omitempty" protobuf:"bytes,9,opt,name=volumeAttributesClassName"`
     }
     
    +// TypedObjectReference contains enough information to let you locate the typed referenced object
     type TypedObjectReference struct {
     	// APIGroup is the group for the resource being referenced.
     	// If APIGroup is not specified, the specified Kind must be in the core API group.
    @@ -578,15 +649,29 @@ type TypedObjectReference struct {
     	Namespace *string `json:"namespace,omitempty" protobuf:"bytes,4,opt,name=namespace"`
     }
     
    -// PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type
    +// PersistentVolumeClaimConditionType defines the condition of PV claim.
    +// Valid values are:
    +//   - "Resizing", "FileSystemResizePending"
    +//
    +// If RecoverVolumeExpansionFailure feature gate is enabled, then following additional values can be expected:
    +//   - "ControllerResizeError", "NodeResizeError"
    +//
    +// If VolumeAttributesClass feature gate is enabled, then following additional values can be expected:
    +//   - "ModifyVolumeError", "ModifyingVolume"
     type PersistentVolumeClaimConditionType string
     
    +// These are valid conditions of PVC
     const (
     	// PersistentVolumeClaimResizing - a user trigger resize of pvc has been started
     	PersistentVolumeClaimResizing PersistentVolumeClaimConditionType = "Resizing"
     	// PersistentVolumeClaimFileSystemResizePending - controller resize is finished and a file system resize is pending on node
     	PersistentVolumeClaimFileSystemResizePending PersistentVolumeClaimConditionType = "FileSystemResizePending"
     
    +	// PersistentVolumeClaimControllerResizeError indicates an error while resizing volume for size in the controller
    +	PersistentVolumeClaimControllerResizeError PersistentVolumeClaimConditionType = "ControllerResizeError"
    +	// PersistentVolumeClaimNodeResizeError indicates an error while resizing volume for size in the node.
    +	PersistentVolumeClaimNodeResizeError PersistentVolumeClaimConditionType = "NodeResizeError"
    +
     	// Applying the target VolumeAttributesClass encountered an error
     	PersistentVolumeClaimVolumeModifyVolumeError PersistentVolumeClaimConditionType = "ModifyVolumeError"
     	// Volume is being modified
    @@ -603,18 +688,19 @@ const (
     	// State set when resize controller starts resizing the volume in control-plane.
     	PersistentVolumeClaimControllerResizeInProgress ClaimResourceStatus = "ControllerResizeInProgress"
     
    -	// State set when resize has failed in resize controller with a terminal error.
    +	// State set when resize has failed in resize controller with a terminal unrecoverable error.
     	// Transient errors such as timeout should not set this status and should leave allocatedResourceStatus
     	// unmodified, so as resize controller can resume the volume expansion.
    -	PersistentVolumeClaimControllerResizeFailed ClaimResourceStatus = "ControllerResizeFailed"
    +	PersistentVolumeClaimControllerResizeInfeasible ClaimResourceStatus = "ControllerResizeInfeasible"
     
     	// State set when resize controller has finished resizing the volume but further resizing of volume
     	// is needed on the node.
     	PersistentVolumeClaimNodeResizePending ClaimResourceStatus = "NodeResizePending"
     	// State set when kubelet starts resizing the volume.
     	PersistentVolumeClaimNodeResizeInProgress ClaimResourceStatus = "NodeResizeInProgress"
    -	// State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed
    -	PersistentVolumeClaimNodeResizeFailed ClaimResourceStatus = "NodeResizeFailed"
    +	// State set when resizing has failed in kubelet with a terminal unrecoverable error. Transient errors
    +	// shouldn't set this status
    +	PersistentVolumeClaimNodeResizeInfeasible ClaimResourceStatus = "NodeResizeInfeasible"
     )
     
     // +enum
    @@ -651,8 +737,13 @@ type ModifyVolumeStatus struct {
     
     // PersistentVolumeClaimCondition contains details about state of pvc
     type PersistentVolumeClaimCondition struct {
    -	Type   PersistentVolumeClaimConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=PersistentVolumeClaimConditionType"`
    -	Status ConditionStatus                    `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"`
    +	// Type is the type of the condition.
    +	// More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=set%20to%20%27ResizeStarted%27.-,PersistentVolumeClaimCondition,-contains%20details%20about
    +	Type PersistentVolumeClaimConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=PersistentVolumeClaimConditionType"`
    +	// Status is the status of the condition.
    +	// Can be True, False, Unknown.
    +	// More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=state%20of%20pvc-,conditions.status,-(string)%2C%20required
    +	Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"`
     	// lastProbeTime is the time we probed the condition.
     	// +optional
     	LastProbeTime metav1.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"`
    @@ -660,7 +751,7 @@ type PersistentVolumeClaimCondition struct {
     	// +optional
     	LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"`
     	// reason is a unique, this should be a short, machine understandable string that gives the reason
    -	// for condition's last transition. If it reports "ResizeStarted" that means the underlying
    +	// for condition's last transition. If it reports "Resizing" that means the underlying
     	// persistent volume is being resized.
     	// +optional
     	Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"`
    @@ -677,15 +768,18 @@ type PersistentVolumeClaimStatus struct {
     	// accessModes contains the actual access modes the volume backing the PVC has.
     	// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     	// +optional
    +	// +listType=atomic
     	AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,2,rep,name=accessModes,casttype=PersistentVolumeAccessMode"`
     	// capacity represents the actual resources of the underlying volume.
     	// +optional
     	Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,3,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"`
     	// conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
    -	// resized then the Condition will be set to 'ResizeStarted'.
    +	// resized then the Condition will be set to 'Resizing'.
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []PersistentVolumeClaimCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,4,rep,name=conditions"`
     	// allocatedResources tracks the resources allocated to a PVC including its capacity.
     	// Key names follow standard Kubernetes label syntax. Valid values are either:
    @@ -757,13 +851,13 @@ type PersistentVolumeClaimStatus struct {
     	AllocatedResourceStatuses map[ResourceName]ClaimResourceStatus `json:"allocatedResourceStatuses,omitempty" protobuf:"bytes,7,rep,name=allocatedResourceStatuses"`
     	// currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
     	// When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
    -	// This is an alpha field and requires enabling VolumeAttributesClass feature.
    +	// This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
     	// +featureGate=VolumeAttributesClass
     	// +optional
     	CurrentVolumeAttributesClassName *string `json:"currentVolumeAttributesClassName,omitempty" protobuf:"bytes,8,opt,name=currentVolumeAttributesClassName"`
     	// ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
     	// When this is unset, there is no ModifyVolume operation being attempted.
    -	// This is an alpha field and requires enabling VolumeAttributesClass feature.
    +	// This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
     	// +featureGate=VolumeAttributesClass
     	// +optional
     	ModifyVolumeStatus *ModifyVolumeStatus `json:"modifyVolumeStatus,omitempty" protobuf:"bytes,9,opt,name=modifyVolumeStatus"`
    @@ -921,6 +1015,7 @@ type GlusterfsPersistentVolumeSource struct {
     type RBDVolumeSource struct {
     	// monitors is a collection of Ceph monitors.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
    +	// +listType=atomic
     	CephMonitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"`
     	// image is the rados image name.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
    @@ -936,16 +1031,19 @@ type RBDVolumeSource struct {
     	// Default is rbd.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     	// +optional
    +	// +default="rbd"
     	RBDPool string `json:"pool,omitempty" protobuf:"bytes,4,opt,name=pool"`
     	// user is the rados user name.
     	// Default is admin.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     	// +optional
    +	// +default="admin"
     	RadosUser string `json:"user,omitempty" protobuf:"bytes,5,opt,name=user"`
     	// keyring is the path to key ring for RBDUser.
     	// Default is /etc/ceph/keyring.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     	// +optional
    +	// +default="/etc/ceph/keyring"
     	Keyring string `json:"keyring,omitempty" protobuf:"bytes,6,opt,name=keyring"`
     	// secretRef is name of the authentication secret for RBDUser. If provided
     	// overrides keyring.
    @@ -965,6 +1063,7 @@ type RBDVolumeSource struct {
     type RBDPersistentVolumeSource struct {
     	// monitors is a collection of Ceph monitors.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
    +	// +listType=atomic
     	CephMonitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"`
     	// image is the rados image name.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
    @@ -980,16 +1079,19 @@ type RBDPersistentVolumeSource struct {
     	// Default is rbd.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     	// +optional
    +	// +default="rbd"
     	RBDPool string `json:"pool,omitempty" protobuf:"bytes,4,opt,name=pool"`
     	// user is the rados user name.
     	// Default is admin.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     	// +optional
    +	// +default="admin"
     	RadosUser string `json:"user,omitempty" protobuf:"bytes,5,opt,name=user"`
     	// keyring is the path to key ring for RBDUser.
     	// Default is /etc/ceph/keyring.
     	// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     	// +optional
    +	// +default="/etc/ceph/keyring"
     	Keyring string `json:"keyring,omitempty" protobuf:"bytes,6,opt,name=keyring"`
     	// secretRef is name of the authentication secret for RBDUser. If provided
     	// overrides keyring.
    @@ -1059,6 +1161,7 @@ type CinderPersistentVolumeSource struct {
     type CephFSVolumeSource struct {
     	// monitors is Required: Monitors is a collection of Ceph monitors
     	// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
    +	// +listType=atomic
     	Monitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"`
     	// path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     	// +optional
    @@ -1099,6 +1202,7 @@ type SecretReference struct {
     type CephFSPersistentVolumeSource struct {
     	// monitors is Required: Monitors is a collection of Ceph monitors
     	// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
    +	// +listType=atomic
     	Monitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"`
     	// path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     	// +optional
    @@ -1341,6 +1445,7 @@ type SecretVolumeSource struct {
     	// the volume setup will error unless it is marked optional. Paths must be
     	// relative and may not contain the '..' path or start with '..'.
     	// +optional
    +	// +listType=atomic
     	Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"`
     	// defaultMode is Optional: mode bits used to set permissions on created files by default.
     	// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
    @@ -1376,6 +1481,7 @@ type SecretProjection struct {
     	// the volume setup will error unless it is marked optional. Paths must be
     	// relative and may not contain the '..' path or start with '..'.
     	// +optional
    +	// +listType=atomic
     	Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"`
     	// optional field specify whether the Secret or its key must be defined
     	// +optional
    @@ -1414,6 +1520,7 @@ type ISCSIVolumeSource struct {
     	// iscsiInterface is the interface Name that uses an iSCSI transport.
     	// Defaults to 'default' (tcp).
     	// +optional
    +	// +default="default"
     	ISCSIInterface string `json:"iscsiInterface,omitempty" protobuf:"bytes,4,opt,name=iscsiInterface"`
     	// fsType is the filesystem type of the volume that you want to mount.
     	// Tip: Ensure that the filesystem type is supported by the host operating system.
    @@ -1429,6 +1536,7 @@ type ISCSIVolumeSource struct {
     	// portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
     	// is other than default (typically TCP ports 860 and 3260).
     	// +optional
    +	// +listType=atomic
     	Portals []string `json:"portals,omitempty" protobuf:"bytes,7,opt,name=portals"`
     	// chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
     	// +optional
    @@ -1460,6 +1568,7 @@ type ISCSIPersistentVolumeSource struct {
     	// iscsiInterface is the interface Name that uses an iSCSI transport.
     	// Defaults to 'default' (tcp).
     	// +optional
    +	// +default="default"
     	ISCSIInterface string `json:"iscsiInterface,omitempty" protobuf:"bytes,4,opt,name=iscsiInterface"`
     	// fsType is the filesystem type of the volume that you want to mount.
     	// Tip: Ensure that the filesystem type is supported by the host operating system.
    @@ -1475,6 +1584,7 @@ type ISCSIPersistentVolumeSource struct {
     	// portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
     	// is other than default (typically TCP ports 860 and 3260).
     	// +optional
    +	// +listType=atomic
     	Portals []string `json:"portals,omitempty" protobuf:"bytes,7,opt,name=portals"`
     	// chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
     	// +optional
    @@ -1498,6 +1608,7 @@ type ISCSIPersistentVolumeSource struct {
     type FCVolumeSource struct {
     	// targetWWNs is Optional: FC target worldwide names (WWNs)
     	// +optional
    +	// +listType=atomic
     	TargetWWNs []string `json:"targetWWNs,omitempty" protobuf:"bytes,1,rep,name=targetWWNs"`
     	// lun is Optional: FC target lun number
     	// +optional
    @@ -1515,6 +1626,7 @@ type FCVolumeSource struct {
     	// wwids Optional: FC volume world wide identifiers (wwids)
     	// Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
     	// +optional
    +	// +listType=atomic
     	WWIDs []string `json:"wwids,omitempty" protobuf:"bytes,5,rep,name=wwids"`
     }
     
    @@ -1597,17 +1709,21 @@ type AzureDiskVolumeSource struct {
     	DataDiskURI string `json:"diskURI" protobuf:"bytes,2,opt,name=diskURI"`
     	// cachingMode is the Host Caching mode: None, Read Only, Read Write.
     	// +optional
    +	// +default=ref(AzureDataDiskCachingReadWrite)
     	CachingMode *AzureDataDiskCachingMode `json:"cachingMode,omitempty" protobuf:"bytes,3,opt,name=cachingMode,casttype=AzureDataDiskCachingMode"`
     	// fsType is Filesystem type to mount.
     	// Must be a filesystem type supported by the host operating system.
     	// Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     	// +optional
    +	// +default="ext4"
     	FSType *string `json:"fsType,omitempty" protobuf:"bytes,4,opt,name=fsType"`
     	// readOnly Defaults to false (read/write). ReadOnly here will force
     	// the ReadOnly setting in VolumeMounts.
     	// +optional
    +	// +default=false
     	ReadOnly *bool `json:"readOnly,omitempty" protobuf:"varint,5,opt,name=readOnly"`
     	// kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
    +	// +default=ref(AzureSharedBlobDisk)
     	Kind *AzureDataDiskKind `json:"kind,omitempty" protobuf:"bytes,6,opt,name=kind,casttype=AzureDataDiskKind"`
     }
     
    @@ -1646,6 +1762,7 @@ type ScaleIOVolumeSource struct {
     	// storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     	// Default is ThinProvisioned.
     	// +optional
    +	// +default="ThinProvisioned"
     	StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"`
     	// volumeName is the name of a volume already created in the ScaleIO system
     	// that is associated with this volume source.
    @@ -1655,6 +1772,7 @@ type ScaleIOVolumeSource struct {
     	// Ex. "ext4", "xfs", "ntfs".
     	// Default is "xfs".
     	// +optional
    +	// +default="xfs"
     	FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"`
     	// readOnly Defaults to false (read/write). ReadOnly here will force
     	// the ReadOnly setting in VolumeMounts.
    @@ -1683,6 +1801,7 @@ type ScaleIOPersistentVolumeSource struct {
     	// storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     	// Default is ThinProvisioned.
     	// +optional
    +	// +default="ThinProvisioned"
     	StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"`
     	// volumeName is the name of a volume already created in the ScaleIO system
     	// that is associated with this volume source.
    @@ -1692,6 +1811,7 @@ type ScaleIOPersistentVolumeSource struct {
     	// Ex. "ext4", "xfs", "ntfs".
     	// Default is "xfs"
     	// +optional
    +	// +default="xfs"
     	FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"`
     	// readOnly defaults to false (read/write). ReadOnly here will force
     	// the ReadOnly setting in VolumeMounts.
    @@ -1771,6 +1891,7 @@ type ConfigMapVolumeSource struct {
     	// the volume setup will error unless it is marked optional. Paths must be
     	// relative and may not contain the '..' path or start with '..'.
     	// +optional
    +	// +listType=atomic
     	Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"`
     	// defaultMode is optional: mode bits used to set permissions on created files by default.
     	// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
    @@ -1807,6 +1928,7 @@ type ConfigMapProjection struct {
     	// the volume setup will error unless it is marked optional. Paths must be
     	// relative and may not contain the '..' path or start with '..'.
     	// +optional
    +	// +listType=atomic
     	Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"`
     	// optional specify whether the ConfigMap or its keys must be defined
     	// +optional
    @@ -1873,8 +1995,10 @@ type ClusterTrustBundleProjection struct {
     
     // Represents a projected volume source
     type ProjectedVolumeSource struct {
    -	// sources is the list of volume projections
    +	// sources is the list of volume projections. Each entry in this list
    +	// handles one source.
     	// +optional
    +	// +listType=atomic
     	Sources []VolumeProjection `json:"sources" protobuf:"bytes,1,rep,name=sources"`
     	// defaultMode are the mode bits used to set permissions on created files by default.
     	// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
    @@ -1886,10 +2010,9 @@ type ProjectedVolumeSource struct {
     	DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"varint,2,opt,name=defaultMode"`
     }
     
    -// Projection that may be projected along with other supported volume types
    +// Projection that may be projected along with other supported volume types.
    +// Exactly one of these fields must be set.
     type VolumeProjection struct {
    -	// all types below are the supported types for projection into the same volume
    -
     	// secret information about the secret data to project
     	// +optional
     	Secret *SecretProjection `json:"secret,omitempty" protobuf:"bytes,1,opt,name=secret"`
    @@ -1946,7 +2069,7 @@ type KeyToPath struct {
     	Mode *int32 `json:"mode,omitempty" protobuf:"varint,3,opt,name=mode"`
     }
     
    -// Local represents directly-attached storage with node affinity (Beta feature)
    +// Local represents directly-attached storage with node affinity
     type LocalVolumeSource struct {
     	// path of the full path to the volume on the node.
     	// It can be either a directory or block device (disk, partition, ...).
    @@ -1960,7 +2083,7 @@ type LocalVolumeSource struct {
     	FSType *string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"`
     }
     
    -// Represents storage that is managed by an external CSI volume driver (Beta feature)
    +// Represents storage that is managed by an external CSI volume driver
     type CSIPersistentVolumeSource struct {
     	// driver is the name of the driver to use for this volume.
     	// Required.
    @@ -2137,6 +2260,26 @@ type VolumeMount struct {
     	// Defaults to false.
     	// +optional
     	ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,2,opt,name=readOnly"`
    +	// RecursiveReadOnly specifies whether read-only mounts should be handled
    +	// recursively.
    +	//
    +	// If ReadOnly is false, this field has no meaning and must be unspecified.
    +	//
    +	// If ReadOnly is true, and this field is set to Disabled, the mount is not made
    +	// recursively read-only.  If this field is set to IfPossible, the mount is made
    +	// recursively read-only, if it is supported by the container runtime.  If this
    +	// field is set to Enabled, the mount is made recursively read-only if it is
    +	// supported by the container runtime, otherwise the pod will not be started and
    +	// an error will be generated to indicate the reason.
    +	//
    +	// If this field is set to IfPossible or Enabled, MountPropagation must be set to
    +	// None (or be unspecified, which defaults to None).
    +	//
    +	// If this field is not specified, it is treated as an equivalent of Disabled.
    +	//
    +	// +featureGate=RecursiveReadOnlyMounts
    +	// +optional
    +	RecursiveReadOnly *RecursiveReadOnlyMode `json:"recursiveReadOnly,omitempty" protobuf:"bytes,7,opt,name=recursiveReadOnly,casttype=RecursiveReadOnlyMode"`
     	// Path within the container at which the volume should be mounted.  Must
     	// not contain ':'.
     	MountPath string `json:"mountPath" protobuf:"bytes,3,opt,name=mountPath"`
    @@ -2148,6 +2291,8 @@ type VolumeMount struct {
     	// to container and the other way around.
     	// When not set, MountPropagationNone is used.
     	// This field is beta in 1.10.
    +	// When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
    +	// (which defaults to None).
     	// +optional
     	MountPropagation *MountPropagationMode `json:"mountPropagation,omitempty" protobuf:"bytes,5,opt,name=mountPropagation,casttype=MountPropagationMode"`
     	// Expanded path within the volume from which the container's volume should be mounted.
    @@ -2184,6 +2329,18 @@ const (
     	MountPropagationBidirectional MountPropagationMode = "Bidirectional"
     )
     
    +// RecursiveReadOnlyMode describes recursive-readonly mode.
    +type RecursiveReadOnlyMode string
    +
    +const (
    +	// RecursiveReadOnlyDisabled disables recursive-readonly mode.
    +	RecursiveReadOnlyDisabled RecursiveReadOnlyMode = "Disabled"
    +	// RecursiveReadOnlyIfPossible enables recursive-readonly mode if possible.
    +	RecursiveReadOnlyIfPossible RecursiveReadOnlyMode = "IfPossible"
    +	// RecursiveReadOnlyEnabled enables recursive-readonly mode, or raise an error.
    +	RecursiveReadOnlyEnabled RecursiveReadOnlyMode = "Enabled"
    +)
    +
     // volumeDevice describes a mapping of a raw block device within a container.
     type VolumeDevice struct {
     	// name must match the name of a persistentVolumeClaim in the pod
    @@ -2347,6 +2504,7 @@ type HTTPGetAction struct {
     	Scheme URIScheme `json:"scheme,omitempty" protobuf:"bytes,4,opt,name=scheme,casttype=URIScheme"`
     	// Custom headers to set in the request. HTTP allows repeated headers.
     	// +optional
    +	// +listType=atomic
     	HTTPHeaders []HTTPHeader `json:"httpHeaders,omitempty" protobuf:"bytes,5,rep,name=httpHeaders"`
     }
     
    @@ -2372,6 +2530,7 @@ type TCPSocketAction struct {
     	Host string `json:"host,omitempty" protobuf:"bytes,2,opt,name=host"`
     }
     
    +// GRPCAction specifies an action involving a GRPC service.
     type GRPCAction struct {
     	// Port number of the gRPC service. Number must be in the range 1 to 65535.
     	Port int32 `json:"port" protobuf:"bytes,1,opt,name=port"`
    @@ -2393,6 +2552,7 @@ type ExecAction struct {
     	// a shell, you need to explicitly call out to that shell.
     	// Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
     	// +optional
    +	// +listType=atomic
     	Command []string `json:"command,omitempty" protobuf:"bytes,1,rep,name=command"`
     }
     
    @@ -2514,9 +2674,11 @@ type Capability string
     type Capabilities struct {
     	// Added capabilities
     	// +optional
    +	// +listType=atomic
     	Add []Capability `json:"add,omitempty" protobuf:"bytes,1,rep,name=add,casttype=Capability"`
     	// Removed capabilities
     	// +optional
    +	// +listType=atomic
     	Drop []Capability `json:"drop,omitempty" protobuf:"bytes,2,rep,name=drop,casttype=Capability"`
     }
     
    @@ -2574,6 +2736,13 @@ type ResourceClaim struct {
     	// the Pod where this field is used. It makes that resource available
     	// inside a container.
     	Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
    +
    +	// Request is the name chosen for a request in the referenced claim.
    +	// If empty, everything from the claim is made available, otherwise
    +	// only the result of this request.
    +	//
    +	// +optional
    +	Request string `json:"request,omitempty" protobuf:"bytes,2,opt,name=request"`
     }
     
     const (
    @@ -2602,6 +2771,7 @@ type Container struct {
     	// of whether the variable exists or not. Cannot be updated.
     	// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     	// +optional
    +	// +listType=atomic
     	Command []string `json:"command,omitempty" protobuf:"bytes,3,rep,name=command"`
     	// Arguments to the entrypoint.
     	// The container image's CMD is used if this is not provided.
    @@ -2612,6 +2782,7 @@ type Container struct {
     	// of whether the variable exists or not. Cannot be updated.
     	// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     	// +optional
    +	// +listType=atomic
     	Args []string `json:"args,omitempty" protobuf:"bytes,4,rep,name=args"`
     	// Container's working directory.
     	// If not specified, the container runtime's default will be used, which
    @@ -2640,12 +2811,15 @@ type Container struct {
     	// Values defined by an Env with a duplicate key will take precedence.
     	// Cannot be updated.
     	// +optional
    +	// +listType=atomic
     	EnvFrom []EnvFromSource `json:"envFrom,omitempty" protobuf:"bytes,19,rep,name=envFrom"`
     	// List of environment variables to set in the container.
     	// Cannot be updated.
     	// +optional
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	Env []EnvVar `json:"env,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,7,rep,name=env"`
     	// Compute Resources required by this container.
     	// Cannot be updated.
    @@ -2680,10 +2854,14 @@ type Container struct {
     	// +optional
     	// +patchMergeKey=mountPath
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=mountPath
     	VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" patchStrategy:"merge" patchMergeKey:"mountPath" protobuf:"bytes,9,rep,name=volumeMounts"`
     	// volumeDevices is the list of block devices to be used by the container.
     	// +patchMergeKey=devicePath
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=devicePath
     	// +optional
     	VolumeDevices []VolumeDevice `json:"volumeDevices,omitempty" patchStrategy:"merge" patchMergeKey:"devicePath" protobuf:"bytes,21,rep,name=volumeDevices"`
     	// Periodic probe of container liveness.
    @@ -2768,17 +2946,16 @@ type Container struct {
     // ProbeHandler defines a specific action that should be taken in a probe.
     // One and only one of the fields must be specified.
     type ProbeHandler struct {
    -	// Exec specifies the action to take.
    +	// Exec specifies a command to execute in the container.
     	// +optional
     	Exec *ExecAction `json:"exec,omitempty" protobuf:"bytes,1,opt,name=exec"`
    -	// HTTPGet specifies the http request to perform.
    +	// HTTPGet specifies an HTTP GET request to perform.
     	// +optional
     	HTTPGet *HTTPGetAction `json:"httpGet,omitempty" protobuf:"bytes,2,opt,name=httpGet"`
    -	// TCPSocket specifies an action involving a TCP port.
    +	// TCPSocket specifies a connection to a TCP port.
     	// +optional
     	TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty" protobuf:"bytes,3,opt,name=tcpSocket"`
    -
    -	// GRPC specifies an action involving a GRPC port.
    +	// GRPC specifies a GRPC HealthCheckRequest.
     	// +optional
     	GRPC *GRPCAction `json:"grpc,omitempty" protobuf:"bytes,4,opt,name=grpc"`
     }
    @@ -2786,18 +2963,18 @@ type ProbeHandler struct {
     // LifecycleHandler defines a specific action that should be taken in a lifecycle
     // hook. One and only one of the fields, except TCPSocket must be specified.
     type LifecycleHandler struct {
    -	// Exec specifies the action to take.
    +	// Exec specifies a command to execute in the container.
     	// +optional
     	Exec *ExecAction `json:"exec,omitempty" protobuf:"bytes,1,opt,name=exec"`
    -	// HTTPGet specifies the http request to perform.
    +	// HTTPGet specifies an HTTP GET request to perform.
     	// +optional
     	HTTPGet *HTTPGetAction `json:"httpGet,omitempty" protobuf:"bytes,2,opt,name=httpGet"`
     	// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
    -	// for the backward compatibility. There are no validation of this field and
    -	// lifecycle hooks will fail in runtime when tcp handler is specified.
    +	// for backward compatibility. There is no validation of this field and
    +	// lifecycle hooks will fail at runtime when it is specified.
     	// +optional
     	TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty" protobuf:"bytes,3,opt,name=tcpSocket"`
    -	// Sleep represents the duration that the container should sleep before being terminated.
    +	// Sleep represents a duration that the container should sleep.
     	// +featureGate=PodLifecycleSleepAction
     	// +optional
     	Sleep *SleepAction `json:"sleep,omitempty" protobuf:"bytes,4,opt,name=sleep"`
    @@ -2948,7 +3125,7 @@ type ContainerStatus struct {
     	// AllocatedResources represents the compute resources allocated for this container by the
     	// node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
     	// and after successfully admitting desired pod resize.
    -	// +featureGate=InPlacePodVerticalScaling
    +	// +featureGate=InPlacePodVerticalScalingAllocatedStatus
     	// +optional
     	AllocatedResources ResourceList `json:"allocatedResources,omitempty" protobuf:"bytes,10,rep,name=allocatedResources,casttype=ResourceList,castkey=ResourceName"`
     	// Resources represents the compute resource requests and limits that have been successfully
    @@ -2956,6 +3133,104 @@ type ContainerStatus struct {
     	// +featureGate=InPlacePodVerticalScaling
     	// +optional
     	Resources *ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,11,opt,name=resources"`
    +	// Status of volume mounts.
    +	// +optional
    +	// +patchMergeKey=mountPath
    +	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=mountPath
    +	// +featureGate=RecursiveReadOnlyMounts
    +	VolumeMounts []VolumeMountStatus `json:"volumeMounts,omitempty" patchStrategy:"merge" patchMergeKey:"mountPath" protobuf:"bytes,12,rep,name=volumeMounts"`
    +	// User represents user identity information initially attached to the first process of the container
    +	// +featureGate=SupplementalGroupsPolicy
    +	// +optional
    +	User *ContainerUser `json:"user,omitempty" protobuf:"bytes,13,opt,name=user,casttype=ContainerUser"`
    +	// AllocatedResourcesStatus represents the status of various resources
    +	// allocated for this Pod.
    +	// +featureGate=ResourceHealthStatus
    +	// +optional
    +	// +patchMergeKey=name
    +	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
    +	AllocatedResourcesStatus []ResourceStatus `json:"allocatedResourcesStatus,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,14,rep,name=allocatedResourcesStatus"`
    +}
    +
    +// ResourceStatus represents the status of a single resource allocated to a Pod.
    +type ResourceStatus struct {
    +	// Name of the resource. Must be unique within the pod and in case of non-DRA resource, match one of the resources from the pod spec.
    +	// For DRA resources, the value must be "claim:/".
    +	// When this status is reported about a container, the "claim_name" and "request" must match one of the claims of this container.
    +	// +required
    +	Name ResourceName `json:"name" protobuf:"bytes,1,opt,name=name"`
    +	// List of unique resources health. Each element in the list contains an unique resource ID and its health.
    +	// At a minimum, for the lifetime of a Pod, resource ID must uniquely identify the resource allocated to the Pod on the Node.
    +	// If other Pod on the same Node reports the status with the same resource ID, it must be the same resource they share.
    +	// See ResourceID type definition for a specific format it has in various use cases.
    +	// +listType=map
    +	// +listMapKey=resourceID
    +	Resources []ResourceHealth `json:"resources,omitempty" protobuf:"bytes,2,rep,name=resources"`
    +}
    +
    +type ResourceHealthStatus string
    +
    +const (
    +	ResourceHealthStatusHealthy   ResourceHealthStatus = "Healthy"
    +	ResourceHealthStatusUnhealthy ResourceHealthStatus = "Unhealthy"
    +	ResourceHealthStatusUnknown   ResourceHealthStatus = "Unknown"
    +)
    +
    +// ResourceID is calculated based on the source of this resource health information.
    +// For DevicePlugin:
    +//
    +//	DeviceID, where DeviceID is from the Device structure of DevicePlugin's ListAndWatchResponse type: https://github.com/kubernetes/kubernetes/blob/eda1c780543a27c078450e2f17d674471e00f494/staging/src/k8s.io/kubelet/pkg/apis/deviceplugin/v1alpha/api.proto#L61-L73
    +//
    +// DevicePlugin ID is usually a constant for the lifetime of a Node and typically can be used to uniquely identify the device on the node.
    +// For DRA:
    +//
    +//	//: such a device can be looked up in the information published by that DRA driver to learn more about it. It is designed to be globally unique in a cluster.
    +type ResourceID string
    +
    +// ResourceHealth represents the health of a resource. It has the latest device health information.
    +// This is a part of KEP https://kep.k8s.io/4680.
    +type ResourceHealth struct {
    +	// ResourceID is the unique identifier of the resource. See the ResourceID type for more information.
    +	ResourceID ResourceID `json:"resourceID" protobuf:"bytes,1,opt,name=resourceID"`
    +	// Health of the resource.
    +	// can be one of:
    +	//  - Healthy: operates as normal
    +	//  - Unhealthy: reported unhealthy. We consider this a temporary health issue
    +	//               since we do not have a mechanism today to distinguish
    +	//               temporary and permanent issues.
    +	//  - Unknown: The status cannot be determined.
    +	//             For example, Device Plugin got unregistered and hasn't been re-registered since.
    +	//
    +	// In future we may want to introduce the PermanentlyUnhealthy Status.
    +	Health ResourceHealthStatus `json:"health,omitempty" protobuf:"bytes,2,name=health"`
    +}
    +
    +// ContainerUser represents user identity information
    +type ContainerUser struct {
    +	// Linux holds user identity information initially attached to the first process of the containers in Linux.
    +	// Note that the actual running identity can be changed if the process has enough privilege to do so.
    +	// +optional
    +	Linux *LinuxContainerUser `json:"linux,omitempty" protobuf:"bytes,1,opt,name=linux,casttype=LinuxContainerUser"`
    +
    +	// Windows holds user identity information initially attached to the first process of the containers in Windows
    +	// This is just reserved for future use.
    +	// Windows *WindowsContainerUser
    +}
    +
    +// LinuxContainerUser represents user identity information in Linux containers
    +type LinuxContainerUser struct {
    +	// UID is the primary uid initially attached to the first process in the container
    +	UID int64 `json:"uid" protobuf:"varint,1,name=uid"`
    +	// GID is the primary gid initially attached to the first process in the container
    +	GID int64 `json:"gid" protobuf:"varint,2,name=gid"`
    +	// SupplementalGroups are the supplemental groups initially attached to the first process in the container
    +	// +optional
    +	// +listType=atomic
    +	SupplementalGroups []int64 `json:"supplementalGroups,omitempty" protobuf:"varint,3,rep,name=supplementalGroups"`
     }
     
     // PodPhase is a label for the condition of a pod at the current time.
    @@ -3019,7 +3294,7 @@ const (
     	// during scheduling, for example due to nodeAffinity parsing errors.
     	PodReasonSchedulerError = "SchedulerError"
     
    -	// TerminationByKubelet reason in DisruptionTarget pod condition indicates that the termination
    +	// PodReasonTerminationByKubelet reason in DisruptionTarget pod condition indicates that the termination
     	// is initiated by kubelet
     	PodReasonTerminationByKubelet = "TerminationByKubelet"
     
    @@ -3065,6 +3340,23 @@ const (
     	PodResizeStatusInfeasible PodResizeStatus = "Infeasible"
     )
     
    +// VolumeMountStatus shows status of volume mounts.
    +type VolumeMountStatus struct {
    +	// Name corresponds to the name of the original VolumeMount.
    +	Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
    +	// MountPath corresponds to the original VolumeMount.
    +	MountPath string `json:"mountPath" protobuf:"bytes,2,opt,name=mountPath"`
    +	// ReadOnly corresponds to the original VolumeMount.
    +	// +optional
    +	ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"`
    +	// RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
    +	// An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
    +	// depending on the mount result.
    +	// +featureGate=RecursiveReadOnlyMounts
    +	// +optional
    +	RecursiveReadOnly *RecursiveReadOnlyMode `json:"recursiveReadOnly,omitempty" protobuf:"bytes,4,opt,name=recursiveReadOnly,casttype=RecursiveReadOnlyMode"`
    +}
    +
     // RestartPolicy describes how the container should be restarted.
     // Only one of the following restart policies may be specified.
     // If none of the following policies is specified, the default one
    @@ -3123,6 +3415,7 @@ const (
     // +structType=atomic
     type NodeSelector struct {
     	// Required. A list of node selector terms. The terms are ORed.
    +	// +listType=atomic
     	NodeSelectorTerms []NodeSelectorTerm `json:"nodeSelectorTerms" protobuf:"bytes,1,rep,name=nodeSelectorTerms"`
     }
     
    @@ -3133,9 +3426,11 @@ type NodeSelector struct {
     type NodeSelectorTerm struct {
     	// A list of node selector requirements by node's labels.
     	// +optional
    +	// +listType=atomic
     	MatchExpressions []NodeSelectorRequirement `json:"matchExpressions,omitempty" protobuf:"bytes,1,rep,name=matchExpressions"`
     	// A list of node selector requirements by node's fields.
     	// +optional
    +	// +listType=atomic
     	MatchFields []NodeSelectorRequirement `json:"matchFields,omitempty" protobuf:"bytes,2,rep,name=matchFields"`
     }
     
    @@ -3153,6 +3448,7 @@ type NodeSelectorRequirement struct {
     	// array must have a single element, which will be interpreted as an integer.
     	// This array is replaced during a strategic merge patch.
     	// +optional
    +	// +listType=atomic
     	Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"`
     }
     
    @@ -3181,6 +3477,7 @@ type TopologySelectorTerm struct {
     
     	// A list of topology selector requirements by labels.
     	// +optional
    +	// +listType=atomic
     	MatchLabelExpressions []TopologySelectorLabelRequirement `json:"matchLabelExpressions,omitempty" protobuf:"bytes,1,rep,name=matchLabelExpressions"`
     }
     
    @@ -3191,6 +3488,7 @@ type TopologySelectorLabelRequirement struct {
     	Key string `json:"key" protobuf:"bytes,1,opt,name=key"`
     	// An array of string values. One value must match the label to be selected.
     	// Each entry in Values is ORed.
    +	// +listType=atomic
     	Values []string `json:"values" protobuf:"bytes,2,rep,name=values"`
     }
     
    @@ -3228,6 +3526,7 @@ type PodAffinity struct {
     	// When there are multiple elements, the lists of nodes corresponding to each
     	// podAffinityTerm are intersected, i.e. all terms must be satisfied.
     	// +optional
    +	// +listType=atomic
     	RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,1,rep,name=requiredDuringSchedulingIgnoredDuringExecution"`
     	// The scheduler will prefer to schedule pods to nodes that satisfy
     	// the affinity expressions specified by this field, but it may choose
    @@ -3239,6 +3538,7 @@ type PodAffinity struct {
     	// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     	// node(s) with the highest sum are the most preferred.
     	// +optional
    +	// +listType=atomic
     	PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,2,rep,name=preferredDuringSchedulingIgnoredDuringExecution"`
     }
     
    @@ -3263,6 +3563,7 @@ type PodAntiAffinity struct {
     	// When there are multiple elements, the lists of nodes corresponding to each
     	// podAffinityTerm are intersected, i.e. all terms must be satisfied.
     	// +optional
    +	// +listType=atomic
     	RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,1,rep,name=requiredDuringSchedulingIgnoredDuringExecution"`
     	// The scheduler will prefer to schedule pods to nodes that satisfy
     	// the anti-affinity expressions specified by this field, but it may choose
    @@ -3274,6 +3575,7 @@ type PodAntiAffinity struct {
     	// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     	// node(s) with the highest sum are the most preferred.
     	// +optional
    +	// +listType=atomic
     	PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,2,rep,name=preferredDuringSchedulingIgnoredDuringExecution"`
     }
     
    @@ -3302,6 +3604,7 @@ type PodAffinityTerm struct {
     	// and the ones selected by namespaceSelector.
     	// null or empty namespaces list and null namespaceSelector means "this pod's namespace".
     	// +optional
    +	// +listType=atomic
     	Namespaces []string `json:"namespaces,omitempty" protobuf:"bytes,2,rep,name=namespaces"`
     	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
     	// the labelSelector in the specified namespaces, where co-located is defined as running on a node
    @@ -3318,25 +3621,27 @@ type PodAffinityTerm struct {
     	NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,4,opt,name=namespaceSelector"`
     	// MatchLabelKeys is a set of pod label keys to select which pods will
     	// be taken into consideration. The keys are used to lookup values from the
    -	// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`
    +	// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
     	// to select the group of existing pods which pods will be taken into consideration
     	// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     	// pod labels will be ignored. The default value is empty.
    -	// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
    -	// Also, MatchLabelKeys cannot be set when LabelSelector isn't set.
    -	// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
    +	// The same key is forbidden to exist in both matchLabelKeys and labelSelector.
    +	// Also, matchLabelKeys cannot be set when labelSelector isn't set.
    +	// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
    +	//
     	// +listType=atomic
     	// +optional
     	MatchLabelKeys []string `json:"matchLabelKeys,omitempty" protobuf:"bytes,5,opt,name=matchLabelKeys"`
     	// MismatchLabelKeys is a set of pod label keys to select which pods will
     	// be taken into consideration. The keys are used to lookup values from the
    -	// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`
    +	// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
     	// to select the group of existing pods which pods will be taken into consideration
     	// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     	// pod labels will be ignored. The default value is empty.
    -	// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.
    -	// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set.
    -	// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
    +	// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
    +	// Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
    +	// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
    +	//
     	// +listType=atomic
     	// +optional
     	MismatchLabelKeys []string `json:"mismatchLabelKeys,omitempty" protobuf:"bytes,6,opt,name=mismatchLabelKeys"`
    @@ -3370,6 +3675,7 @@ type NodeAffinity struct {
     	// "weight" to the sum if the node matches the corresponding matchExpressions; the
     	// node(s) with the highest sum are the most preferred.
     	// +optional
    +	// +listType=atomic
     	PreferredDuringSchedulingIgnoredDuringExecution []PreferredSchedulingTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,2,rep,name=preferredDuringSchedulingIgnoredDuringExecution"`
     }
     
    @@ -3475,6 +3781,8 @@ type PodSpec struct {
     	// +optional
     	// +patchMergeKey=name
     	// +patchStrategy=merge,retainKeys
    +	// +listType=map
    +	// +listMapKey=name
     	Volumes []Volume `json:"volumes,omitempty" patchStrategy:"merge,retainKeys" patchMergeKey:"name" protobuf:"bytes,1,rep,name=volumes"`
     	// List of initialization containers belonging to the pod.
     	// Init containers are executed in order prior to containers being started. If any
    @@ -3491,6 +3799,8 @@ type PodSpec struct {
     	// More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	InitContainers []Container `json:"initContainers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,20,rep,name=initContainers"`
     	// List of containers belonging to the pod.
     	// Containers cannot currently be added or removed.
    @@ -3498,6 +3808,8 @@ type PodSpec struct {
     	// Cannot be updated.
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	Containers []Container `json:"containers" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=containers"`
     	// List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     	// pod to perform user-initiated actions such as debugging. This list cannot be specified when
    @@ -3506,6 +3818,8 @@ type PodSpec struct {
     	// +optional
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	EphemeralContainers []EphemeralContainer `json:"ephemeralContainers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,34,rep,name=ephemeralContainers"`
     	// Restart policy for all containers within the pod.
     	// One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
    @@ -3547,7 +3861,7 @@ type PodSpec struct {
     	// More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     	// +optional
     	ServiceAccountName string `json:"serviceAccountName,omitempty" protobuf:"bytes,8,opt,name=serviceAccountName"`
    -	// DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.
    +	// DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
     	// Deprecated: Use serviceAccountName instead.
     	// +k8s:conversion-gen=false
     	// +optional
    @@ -3556,9 +3870,11 @@ type PodSpec struct {
     	// +optional
     	AutomountServiceAccountToken *bool `json:"automountServiceAccountToken,omitempty" protobuf:"varint,21,opt,name=automountServiceAccountToken"`
     
    -	// NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
    -	// the scheduler simply schedules this pod onto that node, assuming that it fits resource
    -	// requirements.
    +	// NodeName indicates in which node this pod is scheduled.
    +	// If empty, this pod is a candidate for scheduling by the scheduler defined in schedulerName.
    +	// Once this field is set, the kubelet for this node becomes responsible for the lifecycle of this pod.
    +	// This field should not be used to express a desire for the pod to be scheduled on a specific node.
    +	// https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename
     	// +optional
     	NodeName string `json:"nodeName,omitempty" protobuf:"bytes,10,opt,name=nodeName"`
     	// Host networking requested for this pod. Use the host's network namespace.
    @@ -3595,6 +3911,8 @@ type PodSpec struct {
     	// +optional
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,15,rep,name=imagePullSecrets"`
     	// Specifies the hostname of the Pod
     	// If not specified, the pod's hostname will be set to a system-defined value.
    @@ -3613,12 +3931,15 @@ type PodSpec struct {
     	SchedulerName string `json:"schedulerName,omitempty" protobuf:"bytes,19,opt,name=schedulerName"`
     	// If specified, the pod's tolerations.
     	// +optional
    +	// +listType=atomic
     	Tolerations []Toleration `json:"tolerations,omitempty" protobuf:"bytes,22,opt,name=tolerations"`
     	// HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
    -	// file if specified. This is only valid for non-hostNetwork pods.
    +	// file if specified.
     	// +optional
     	// +patchMergeKey=ip
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=ip
     	HostAliases []HostAlias `json:"hostAliases,omitempty" patchStrategy:"merge" patchMergeKey:"ip" protobuf:"bytes,23,rep,name=hostAliases"`
     	// If specified, indicates the pod's priority. "system-node-critical" and
     	// "system-cluster-critical" are two special keywords which indicate the
    @@ -3645,6 +3966,7 @@ type PodSpec struct {
     	// all conditions specified in the readiness gates have status equal to "True"
     	// More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     	// +optional
    +	// +listType=atomic
     	ReadinessGates []PodReadinessGate `json:"readinessGates,omitempty" protobuf:"bytes,28,opt,name=readinessGates"`
     	// RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
     	// to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
    @@ -3699,6 +4021,7 @@ type PodSpec struct {
     	// - spec.hostPID
     	// - spec.hostIPC
     	// - spec.hostUsers
    +	// - spec.securityContext.appArmorProfile
     	// - spec.securityContext.seLinuxOptions
     	// - spec.securityContext.seccompProfile
     	// - spec.securityContext.fsGroup
    @@ -3708,6 +4031,8 @@ type PodSpec struct {
     	// - spec.securityContext.runAsUser
     	// - spec.securityContext.runAsGroup
     	// - spec.securityContext.supplementalGroups
    +	// - spec.securityContext.supplementalGroupsPolicy
    +	// - spec.containers[*].securityContext.appArmorProfile
     	// - spec.containers[*].securityContext.seLinuxOptions
     	// - spec.containers[*].securityContext.seccompProfile
     	// - spec.containers[*].securityContext.capabilities
    @@ -3739,13 +4064,10 @@ type PodSpec struct {
     	//
     	// SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     	//
    -	// This is a beta feature enabled by the PodSchedulingReadiness feature gate.
    -	//
     	// +patchMergeKey=name
     	// +patchStrategy=merge
     	// +listType=map
     	// +listMapKey=name
    -	// +featureGate=PodSchedulingReadiness
     	// +optional
     	SchedulingGates []PodSchedulingGate `json:"schedulingGates,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,38,opt,name=schedulingGates"`
     	// ResourceClaims defines which ResourceClaims must be allocated
    @@ -3765,9 +4087,26 @@ type PodSpec struct {
     	// +featureGate=DynamicResourceAllocation
     	// +optional
     	ResourceClaims []PodResourceClaim `json:"resourceClaims,omitempty" patchStrategy:"merge,retainKeys" patchMergeKey:"name" protobuf:"bytes,39,rep,name=resourceClaims"`
    +	// Resources is the total amount of CPU and Memory resources required by all
    +	// containers in the pod. It supports specifying Requests and Limits for
    +	// "cpu" and "memory" resource names only. ResourceClaims are not supported.
    +	//
    +	// This field enables fine-grained control over resource allocation for the
    +	// entire pod, allowing resource sharing among containers in a pod.
    +	// TODO: For beta graduation, expand this comment with a detailed explanation.
    +	//
    +	// This is an alpha field and requires enabling the PodLevelResources feature
    +	// gate.
    +	//
    +	// +featureGate=PodLevelResources
    +	// +optional
    +	Resources *ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,40,opt,name=resources"`
     }
     
    -// PodResourceClaim references exactly one ResourceClaim through a ClaimSource.
    +// PodResourceClaim references exactly one ResourceClaim, either directly
    +// or by naming a ResourceClaimTemplate which is then turned into a ResourceClaim
    +// for the pod.
    +//
     // It adds a name to it that uniquely identifies the ResourceClaim inside the Pod.
     // Containers that need access to the ResourceClaim reference it with this name.
     type PodResourceClaim struct {
    @@ -3775,18 +4114,17 @@ type PodResourceClaim struct {
     	// This must be a DNS_LABEL.
     	Name string `json:"name" protobuf:"bytes,1,name=name"`
     
    -	// Source describes where to find the ResourceClaim.
    -	Source ClaimSource `json:"source,omitempty" protobuf:"bytes,2,name=source"`
    -}
    +	// Source is tombstoned since Kubernetes 1.31 where it got replaced with
    +	// the inlined fields below.
    +	//
    +	// Source ClaimSource `json:"source,omitempty" protobuf:"bytes,2,name=source"`
     
    -// ClaimSource describes a reference to a ResourceClaim.
    -//
    -// Exactly one of these fields should be set.  Consumers of this type must
    -// treat an empty object as if it has an unknown value.
    -type ClaimSource struct {
     	// ResourceClaimName is the name of a ResourceClaim object in the same
     	// namespace as this pod.
    -	ResourceClaimName *string `json:"resourceClaimName,omitempty" protobuf:"bytes,1,opt,name=resourceClaimName"`
    +	//
    +	// Exactly one of ResourceClaimName and ResourceClaimTemplateName must
    +	// be set.
    +	ResourceClaimName *string `json:"resourceClaimName,omitempty" protobuf:"bytes,3,opt,name=resourceClaimName"`
     
     	// ResourceClaimTemplateName is the name of a ResourceClaimTemplate
     	// object in the same namespace as this pod.
    @@ -3800,7 +4138,10 @@ type ClaimSource struct {
     	// This field is immutable and no changes will be made to the
     	// corresponding ResourceClaim by the control plane after creating the
     	// ResourceClaim.
    -	ResourceClaimTemplateName *string `json:"resourceClaimTemplateName,omitempty" protobuf:"bytes,2,opt,name=resourceClaimTemplateName"`
    +	//
    +	// Exactly one of ResourceClaimName and ResourceClaimTemplateName must
    +	// be set.
    +	ResourceClaimTemplateName *string `json:"resourceClaimTemplateName,omitempty" protobuf:"bytes,4,opt,name=resourceClaimTemplateName"`
     }
     
     // PodResourceClaimStatus is stored in the PodStatus for each PodResourceClaim
    @@ -3813,7 +4154,7 @@ type PodResourceClaimStatus struct {
     	Name string `json:"name" protobuf:"bytes,1,name=name"`
     
     	// ResourceClaimName is the name of the ResourceClaim that was
    -	// generated for the Pod in the namespace of the Pod. It this is
    +	// generated for the Pod in the namespace of the Pod. If this is
     	// unset, then generating a ResourceClaim was not necessary. The
     	// pod.spec.resourceClaims entry can be ignored in this case.
     	//
    @@ -3952,8 +4293,6 @@ type TopologySpreadConstraint struct {
     	// In this situation, new pod with the same labelSelector cannot be scheduled,
     	// because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
     	// it will violate MaxSkew.
    -	//
    -	// This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).
     	// +optional
     	MinDomains *int32 `json:"minDomains,omitempty" protobuf:"varint,5,opt,name=minDomains"`
     	// NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
    @@ -3999,8 +4338,10 @@ const (
     // pod's hosts file.
     type HostAlias struct {
     	// IP address of the host file entry.
    -	IP string `json:"ip,omitempty" protobuf:"bytes,1,opt,name=ip"`
    +	// +required
    +	IP string `json:"ip" protobuf:"bytes,1,opt,name=ip"`
     	// Hostnames for the above IP address.
    +	// +listType=atomic
     	Hostnames []string `json:"hostnames,omitempty" protobuf:"bytes,2,rep,name=hostnames"`
     }
     
    @@ -4021,6 +4362,39 @@ const (
     	FSGroupChangeAlways PodFSGroupChangePolicy = "Always"
     )
     
    +// SupplementalGroupsPolicy defines how supplemental groups
    +// of the first container processes are calculated.
    +// +enum
    +type SupplementalGroupsPolicy string
    +
    +const (
    +	// SupplementalGroupsPolicyMerge means that the container's provided
    +	// SupplementalGroups and FsGroup (specified in SecurityContext) will be
    +	// merged with the primary user's groups as defined in the container image
    +	// (in /etc/group).
    +	SupplementalGroupsPolicyMerge SupplementalGroupsPolicy = "Merge"
    +	// SupplementalGroupsPolicyStrict means that the container's provided
    +	// SupplementalGroups and FsGroup (specified in SecurityContext) will be
    +	// used instead of any groups defined in the container image.
    +	SupplementalGroupsPolicyStrict SupplementalGroupsPolicy = "Strict"
    +)
    +
    +// PodSELinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod.
    +type PodSELinuxChangePolicy string
    +
    +const (
    +	// Recursive relabeling of all Pod volumes by the container runtime.
    +	// This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node.
    +	SELinuxChangePolicyRecursive PodSELinuxChangePolicy = "Recursive"
    +	// MountOption mounts all eligible Pod volumes with `-o context` mount option.
    +	// This requires all Pods that share the same volume to use the same SELinux label.
    +	// It is not possible to share the same volume among privileged and unprivileged Pods.
    +	// Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes
    +	// whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their
    +	// CSIDriver instance. Other volumes are always re-labelled recursively.
    +	SELinuxChangePolicyMountOption PodSELinuxChangePolicy = "MountOption"
    +)
    +
     // PodSecurityContext holds pod-level security attributes and common container settings.
     // Some fields are also present in container.securityContext.  Field values of
     // container.securityContext take precedence over field values of PodSecurityContext.
    @@ -4063,15 +4437,27 @@ type PodSecurityContext struct {
     	// PodSecurityContext, the value specified in SecurityContext takes precedence.
     	// +optional
     	RunAsNonRoot *bool `json:"runAsNonRoot,omitempty" protobuf:"varint,3,opt,name=runAsNonRoot"`
    -	// A list of groups applied to the first process run in each container, in addition
    -	// to the container's primary GID, the fsGroup (if specified), and group memberships
    -	// defined in the container image for the uid of the container process. If unspecified,
    -	// no additional groups are added to any container. Note that group memberships
    -	// defined in the container image for the uid of the container process are still effective,
    -	// even if they are not included in this list.
    +	// A list of groups applied to the first process run in each container, in
    +	// addition to the container's primary GID and fsGroup (if specified).  If
    +	// the SupplementalGroupsPolicy feature is enabled, the
    +	// supplementalGroupsPolicy field determines whether these are in addition
    +	// to or instead of any group memberships defined in the container image.
    +	// If unspecified, no additional groups are added, though group memberships
    +	// defined in the container image may still be used, depending on the
    +	// supplementalGroupsPolicy field.
     	// Note that this field cannot be set when spec.os.name is windows.
     	// +optional
    +	// +listType=atomic
     	SupplementalGroups []int64 `json:"supplementalGroups,omitempty" protobuf:"varint,4,rep,name=supplementalGroups"`
    +	// Defines how supplemental groups of the first container processes are calculated.
    +	// Valid values are "Merge" and "Strict". If not specified, "Merge" is used.
    +	// (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled
    +	// and the container runtime must implement support for this feature.
    +	// Note that this field cannot be set when spec.os.name is windows.
    +	// TODO: update the default value to "Merge" when spec.os.name is not windows in v1.34
    +	// +featureGate=SupplementalGroupsPolicy
    +	// +optional
    +	SupplementalGroupsPolicy *SupplementalGroupsPolicy `json:"supplementalGroupsPolicy,omitempty" protobuf:"bytes,12,opt,name=supplementalGroupsPolicy"`
     	// A special supplemental group that applies to all containers in a pod.
     	// Some volume types allow the Kubelet to change the ownership of that volume
     	// to be owned by the pod:
    @@ -4088,6 +4474,7 @@ type PodSecurityContext struct {
     	// sysctls (by the container runtime) might fail to launch.
     	// Note that this field cannot be set when spec.os.name is windows.
     	// +optional
    +	// +listType=atomic
     	Sysctls []Sysctl `json:"sysctls,omitempty" protobuf:"bytes,7,rep,name=sysctls"`
     	// fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
     	// before being exposed inside Pod. This field will only apply to
    @@ -4102,6 +4489,36 @@ type PodSecurityContext struct {
     	// Note that this field cannot be set when spec.os.name is windows.
     	// +optional
     	SeccompProfile *SeccompProfile `json:"seccompProfile,omitempty" protobuf:"bytes,10,opt,name=seccompProfile"`
    +	// appArmorProfile is the AppArmor options to use by the containers in this pod.
    +	// Note that this field cannot be set when spec.os.name is windows.
    +	// +optional
    +	AppArmorProfile *AppArmorProfile `json:"appArmorProfile,omitempty" protobuf:"bytes,11,opt,name=appArmorProfile"`
    +	// seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod.
    +	// It has no effect on nodes that do not support SELinux or to volumes does not support SELinux.
    +	// Valid values are "MountOption" and "Recursive".
    +	//
    +	// "Recursive" means relabeling of all files on all Pod volumes by the container runtime.
    +	// This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node.
    +	//
    +	// "MountOption" mounts all eligible Pod volumes with `-o context` mount option.
    +	// This requires all Pods that share the same volume to use the same SELinux label.
    +	// It is not possible to share the same volume among privileged and unprivileged Pods.
    +	// Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes
    +	// whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their
    +	// CSIDriver instance. Other volumes are always re-labelled recursively.
    +	// "MountOption" value is allowed only when SELinuxMount feature gate is enabled.
    +	//
    +	// If not specified and SELinuxMount feature gate is enabled, "MountOption" is used.
    +	// If not specified and SELinuxMount feature gate is disabled, "MountOption" is used for ReadWriteOncePod volumes
    +	// and "Recursive" for all other volumes.
    +	//
    +	// This field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers.
    +	//
    +	// All Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state.
    +	// Note that this field cannot be set when spec.os.name is windows.
    +	// +featureGate=SELinuxChangePolicy
    +	// +optional
    +	SELinuxChangePolicy *PodSELinuxChangePolicy `json:"seLinuxChangePolicy,omitempty" protobuf:"bytes,13,opt,name=seLinuxChangePolicy"`
     }
     
     // SeccompProfile defines a pod/container's seccomp profile settings.
    @@ -4138,6 +4555,38 @@ const (
     	SeccompProfileTypeLocalhost SeccompProfileType = "Localhost"
     )
     
    +// AppArmorProfile defines a pod or container's AppArmor settings.
    +// +union
    +type AppArmorProfile struct {
    +	// type indicates which kind of AppArmor profile will be applied.
    +	// Valid options are:
    +	//   Localhost - a profile pre-loaded on the node.
    +	//   RuntimeDefault - the container runtime's default profile.
    +	//   Unconfined - no AppArmor enforcement.
    +	// +unionDiscriminator
    +	Type AppArmorProfileType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=AppArmorProfileType"`
    +
    +	// localhostProfile indicates a profile loaded on the node that should be used.
    +	// The profile must be preconfigured on the node to work.
    +	// Must match the loaded name of the profile.
    +	// Must be set if and only if type is "Localhost".
    +	// +optional
    +	LocalhostProfile *string `json:"localhostProfile,omitempty" protobuf:"bytes,2,opt,name=localhostProfile"`
    +}
    +
    +// +enum
    +type AppArmorProfileType string
    +
    +const (
    +	// AppArmorProfileTypeUnconfined indicates that no AppArmor profile should be enforced.
    +	AppArmorProfileTypeUnconfined AppArmorProfileType = "Unconfined"
    +	// AppArmorProfileTypeRuntimeDefault indicates that the container runtime's default AppArmor
    +	// profile should be used.
    +	AppArmorProfileTypeRuntimeDefault AppArmorProfileType = "RuntimeDefault"
    +	// AppArmorProfileTypeLocalhost indicates that a profile pre-loaded on the node should be used.
    +	AppArmorProfileTypeLocalhost AppArmorProfileType = "Localhost"
    +)
    +
     // PodQOSClass defines the supported qos classes of Pods.
     // +enum
     type PodQOSClass string
    @@ -4158,24 +4607,29 @@ type PodDNSConfig struct {
     	// This will be appended to the base nameservers generated from DNSPolicy.
     	// Duplicated nameservers will be removed.
     	// +optional
    +	// +listType=atomic
     	Nameservers []string `json:"nameservers,omitempty" protobuf:"bytes,1,rep,name=nameservers"`
     	// A list of DNS search domains for host-name lookup.
     	// This will be appended to the base search paths generated from DNSPolicy.
     	// Duplicated search paths will be removed.
     	// +optional
    +	// +listType=atomic
     	Searches []string `json:"searches,omitempty" protobuf:"bytes,2,rep,name=searches"`
     	// A list of DNS resolver options.
     	// This will be merged with the base options generated from DNSPolicy.
     	// Duplicated entries will be removed. Resolution options given in Options
     	// will override those that appear in the base DNSPolicy.
     	// +optional
    +	// +listType=atomic
     	Options []PodDNSConfigOption `json:"options,omitempty" protobuf:"bytes,3,rep,name=options"`
     }
     
     // PodDNSConfigOption defines DNS resolver options of a pod.
     type PodDNSConfigOption struct {
    +	// Name is this DNS resolver option's name.
     	// Required.
     	Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`
    +	// Value is this DNS resolver option's value.
     	// +optional
     	Value *string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"`
     }
    @@ -4183,13 +4637,15 @@ type PodDNSConfigOption struct {
     // PodIP represents a single IP address allocated to the pod.
     type PodIP struct {
     	// IP is the IP address assigned to the pod
    -	IP string `json:"ip,omitempty" protobuf:"bytes,1,opt,name=ip"`
    +	// +required
    +	IP string `json:"ip" protobuf:"bytes,1,opt,name=ip"`
     }
     
     // HostIP represents a single IP address allocated to the host.
     type HostIP struct {
     	// IP is the IP address assigned to the host
    -	IP string `json:"ip,omitempty" protobuf:"bytes,1,opt,name=ip"`
    +	// +required
    +	IP string `json:"ip" protobuf:"bytes,1,opt,name=ip"`
     }
     
     // EphemeralContainerCommon is a copy of all fields in Container to be inlined in
    @@ -4212,6 +4668,7 @@ type EphemeralContainerCommon struct {
     	// of whether the variable exists or not. Cannot be updated.
     	// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     	// +optional
    +	// +listType=atomic
     	Command []string `json:"command,omitempty" protobuf:"bytes,3,rep,name=command"`
     	// Arguments to the entrypoint.
     	// The image's CMD is used if this is not provided.
    @@ -4222,6 +4679,7 @@ type EphemeralContainerCommon struct {
     	// of whether the variable exists or not. Cannot be updated.
     	// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     	// +optional
    +	// +listType=atomic
     	Args []string `json:"args,omitempty" protobuf:"bytes,4,rep,name=args"`
     	// Container's working directory.
     	// If not specified, the container runtime's default will be used, which
    @@ -4244,12 +4702,15 @@ type EphemeralContainerCommon struct {
     	// Values defined by an Env with a duplicate key will take precedence.
     	// Cannot be updated.
     	// +optional
    +	// +listType=atomic
     	EnvFrom []EnvFromSource `json:"envFrom,omitempty" protobuf:"bytes,19,rep,name=envFrom"`
     	// List of environment variables to set in the container.
     	// Cannot be updated.
     	// +optional
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	Env []EnvVar `json:"env,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,7,rep,name=env"`
     	// Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
     	// already allocated to the pod.
    @@ -4272,10 +4733,14 @@ type EphemeralContainerCommon struct {
     	// +optional
     	// +patchMergeKey=mountPath
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=mountPath
     	VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" patchStrategy:"merge" patchMergeKey:"mountPath" protobuf:"bytes,9,rep,name=volumeMounts"`
     	// volumeDevices is the list of block devices to be used by the container.
     	// +patchMergeKey=devicePath
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=devicePath
     	// +optional
     	VolumeDevices []VolumeDevice `json:"volumeDevices,omitempty" patchStrategy:"merge" patchMergeKey:"devicePath" protobuf:"bytes,21,rep,name=volumeDevices"`
     	// Probes are not allowed for ephemeral containers.
    @@ -4401,6 +4866,8 @@ type PodStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []PodCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"`
     	// A human readable message indicating details about why the pod is in this condition.
     	// +optional
    @@ -4446,6 +4913,8 @@ type PodStatus struct {
     	// +optional
     	// +patchStrategy=merge
     	// +patchMergeKey=ip
    +	// +listType=map
    +	// +listMapKey=ip
     	PodIPs []PodIP `json:"podIPs,omitempty" protobuf:"bytes,12,rep,name=podIPs" patchStrategy:"merge" patchMergeKey:"ip"`
     
     	// RFC 3339 date and time at which the object was acknowledged by the Kubelet.
    @@ -4453,23 +4922,47 @@ type PodStatus struct {
     	// +optional
     	StartTime *metav1.Time `json:"startTime,omitempty" protobuf:"bytes,7,opt,name=startTime"`
     
    -	// The list has one entry per init container in the manifest. The most recent successful
    +	// Statuses of init containers in this pod. The most recent successful non-restartable
     	// init container will have ready = true, the most recently started container will have
     	// startTime set.
    -	// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
    +	// Each init container in the pod should have at most one status in this list,
    +	// and all statuses should be for containers in the pod.
    +	// However this is not enforced.
    +	// If a status for a non-existent container is present in the list, or the list has duplicate names,
    +	// the behavior of various Kubernetes components is not defined and those statuses might be
    +	// ignored.
    +	// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-and-container-status
    +	// +listType=atomic
     	InitContainerStatuses []ContainerStatus `json:"initContainerStatuses,omitempty" protobuf:"bytes,10,rep,name=initContainerStatuses"`
     
    -	// The list has one entry per container in the manifest.
    +	// Statuses of containers in this pod.
    +	// Each container in the pod should have at most one status in this list,
    +	// and all statuses should be for containers in the pod.
    +	// However this is not enforced.
    +	// If a status for a non-existent container is present in the list, or the list has duplicate names,
    +	// the behavior of various Kubernetes components is not defined and those statuses might be
    +	// ignored.
     	// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     	// +optional
    +	// +listType=atomic
     	ContainerStatuses []ContainerStatus `json:"containerStatuses,omitempty" protobuf:"bytes,8,rep,name=containerStatuses"`
    +
     	// The Quality of Service (QOS) classification assigned to the pod based on resource requirements
     	// See PodQOSClass type for available QOS classes
     	// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
     	// +optional
     	QOSClass PodQOSClass `json:"qosClass,omitempty" protobuf:"bytes,9,rep,name=qosClass"`
    -	// Status for any ephemeral containers that have run in this pod.
    +
    +	// Statuses for any ephemeral containers that have run in this pod.
    +	// Each ephemeral container in the pod should have at most one status in this list,
    +	// and all statuses should be for containers in the pod.
    +	// However this is not enforced.
    +	// If a status for a non-existent container is present in the list, or the list has duplicate names,
    +	// the behavior of various Kubernetes components is not defined and those statuses might be
    +	// ignored.
    +	// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     	// +optional
    +	// +listType=atomic
     	EphemeralContainerStatuses []ContainerStatus `json:"ephemeralContainerStatuses,omitempty" protobuf:"bytes,13,rep,name=ephemeralContainerStatuses"`
     
     	// Status of resources resize desired for pod's containers.
    @@ -4490,6 +4983,7 @@ type PodStatus struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
     type PodStatusResult struct {
    @@ -4509,7 +5003,9 @@ type PodStatusResult struct {
     
     // +genclient
     // +genclient:method=UpdateEphemeralContainers,verb=update,subresource=ephemeralcontainers
    +// +genclient:method=UpdateResize,verb=update,subresource=resize
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // Pod is a collection of containers that can run on a host. This resource is created
     // by clients and scheduled onto hosts.
    @@ -4535,6 +5031,7 @@ type Pod struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PodList is a list of Pods.
     type PodList struct {
    @@ -4564,6 +5061,7 @@ type PodTemplateSpec struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PodTemplate describes a template for creating copies of a predefined pod.
     type PodTemplate struct {
    @@ -4580,6 +5078,7 @@ type PodTemplate struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PodTemplateList is a list of PodTemplates.
     type PodTemplateList struct {
    @@ -4658,6 +5157,8 @@ type ReplicationControllerStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []ReplicationControllerCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`
     }
     
    @@ -4692,6 +5193,7 @@ type ReplicationControllerCondition struct {
     // +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/api/autoscaling/v1.Scale
     // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // ReplicationController represents the configuration of a replication controller.
     type ReplicationController struct {
    @@ -4718,6 +5220,7 @@ type ReplicationController struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // ReplicationControllerList is a collection of replication controllers.
     type ReplicationControllerList struct {
    @@ -4829,6 +5332,18 @@ const (
     	ServiceExternalTrafficPolicyTypeCluster = ServiceExternalTrafficPolicyCluster
     )
     
    +// These are valid values for the TrafficDistribution field of a Service.
    +const (
    +	// Indicates a preference for routing traffic to endpoints that are
    +	// topologically proximate to the client. The interpretation of "topologically
    +	// proximate" may vary across implementations and could encompass endpoints
    +	// within the same node, rack, zone, or even region. Setting this value gives
    +	// implementations permission to make different tradeoffs, e.g. optimizing for
    +	// proximity rather than equal distribution of load. Users should not set this
    +	// value if such tradeoffs are not acceptable.
    +	ServiceTrafficDistributionPreferClose = "PreferClose"
    +)
    +
     // These are the valid conditions of a service.
     const (
     	// LoadBalancerPortsError represents the condition of the requested ports
    @@ -4859,6 +5374,7 @@ type LoadBalancerStatus struct {
     	// Ingress is a list containing ingress points for the load-balancer.
     	// Traffic intended for the service should be sent to these ingress points.
     	// +optional
    +	// +listType=atomic
     	Ingress []LoadBalancerIngress `json:"ingress,omitempty" protobuf:"bytes,1,rep,name=ingress"`
     }
     
    @@ -5024,6 +5540,7 @@ type ServiceSpec struct {
     	// at a node with this IP.  A common example is external load-balancers
     	// that are not part of the Kubernetes system.
     	// +optional
    +	// +listType=atomic
     	ExternalIPs []string `json:"externalIPs,omitempty" protobuf:"bytes,5,rep,name=externalIPs"`
     
     	// Supports "ClientIP" and "None". Used to maintain session affinity.
    @@ -5049,6 +5566,7 @@ type ServiceSpec struct {
     	// cloud-provider does not support the feature."
     	// More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
     	// +optional
    +	// +listType=atomic
     	LoadBalancerSourceRanges []string `json:"loadBalancerSourceRanges,omitempty" protobuf:"bytes,9,opt,name=loadBalancerSourceRanges"`
     
     	// externalName is the external reference that discovery mechanisms will
    @@ -5170,6 +5688,17 @@ type ServiceSpec struct {
     	// (possibly modified by topology and other features).
     	// +optional
     	InternalTrafficPolicy *ServiceInternalTrafficPolicy `json:"internalTrafficPolicy,omitempty" protobuf:"bytes,22,opt,name=internalTrafficPolicy"`
    +
    +	// TrafficDistribution offers a way to express preferences for how traffic is
    +	// distributed to Service endpoints. Implementations can use this field as a
    +	// hint, but are not required to guarantee strict adherence. If the field is
    +	// not set, the implementation will apply its default routing strategy. If set
    +	// to "PreferClose", implementations should prioritize endpoints that are
    +	// topologically close (e.g., same zone).
    +	// This is a beta field and requires enabling ServiceTrafficDistribution feature.
    +	// +featureGate=ServiceTrafficDistribution
    +	// +optional
    +	TrafficDistribution *string `json:"trafficDistribution,omitempty" protobuf:"bytes,23,opt,name=trafficDistribution"`
     }
     
     // ServicePort contains information on service's port.
    @@ -5236,6 +5765,7 @@ type ServicePort struct {
     // +genclient
     // +genclient:skipVerbs=deleteCollection
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // Service is a named abstraction of software service (for example, mysql) consisting of local port
     // (for example 3306) that the proxy listens on, and the selector that determines which pods
    @@ -5267,6 +5797,7 @@ const (
     )
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // ServiceList holds a list of services.
     type ServiceList struct {
    @@ -5283,6 +5814,7 @@ type ServiceList struct {
     // +genclient
     // +genclient:method=CreateToken,verb=create,subresource=token,input=k8s.io/api/authentication/v1.TokenRequest,result=k8s.io/api/authentication/v1.TokenRequest
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // ServiceAccount binds together:
     // * a name, understood by users, and perhaps by peripheral systems, for an identity
    @@ -5297,12 +5829,16 @@ type ServiceAccount struct {
     
     	// Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     	// Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
    +	// The "kubernetes.io/enforce-mountable-secrets" annotation is deprecated since v1.32.
    +	// Prefer separate namespaces to isolate access to mounted secrets.
     	// This field should not be used to find auto-generated service account token secrets for use outside of pods.
     	// Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     	// More info: https://kubernetes.io/docs/concepts/configuration/secret
     	// +optional
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	Secrets []ObjectReference `json:"secrets,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=secrets"`
     
     	// ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
    @@ -5310,6 +5846,7 @@ type ServiceAccount struct {
     	// can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     	// More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     	// +optional
    +	// +listType=atomic
     	ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty" protobuf:"bytes,3,rep,name=imagePullSecrets"`
     
     	// AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
    @@ -5319,6 +5856,7 @@ type ServiceAccount struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // ServiceAccountList is a list of ServiceAccount objects
     type ServiceAccountList struct {
    @@ -5335,6 +5873,7 @@ type ServiceAccountList struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // Endpoints is a collection of endpoints that implement the actual service. Example:
     //
    @@ -5364,6 +5903,7 @@ type Endpoints struct {
     	// NotReadyAddresses in the same subset.
     	// Sets of addresses and ports that comprise a service.
     	// +optional
    +	// +listType=atomic
     	Subsets []EndpointSubset `json:"subsets,omitempty" protobuf:"bytes,2,rep,name=subsets"`
     }
     
    @@ -5384,14 +5924,17 @@ type EndpointSubset struct {
     	// IP addresses which offer the related ports that are marked as ready. These endpoints
     	// should be considered safe for load balancers and clients to utilize.
     	// +optional
    +	// +listType=atomic
     	Addresses []EndpointAddress `json:"addresses,omitempty" protobuf:"bytes,1,rep,name=addresses"`
     	// IP addresses which offer the related ports but are not currently marked as ready
     	// because they have not yet finished starting, have recently failed a readiness check,
     	// or have recently failed a liveness check.
     	// +optional
    +	// +listType=atomic
     	NotReadyAddresses []EndpointAddress `json:"notReadyAddresses,omitempty" protobuf:"bytes,2,rep,name=notReadyAddresses"`
     	// Port numbers available on the related IP addresses.
     	// +optional
    +	// +listType=atomic
     	Ports []EndpointPort `json:"ports,omitempty" protobuf:"bytes,3,rep,name=ports"`
     }
     
    @@ -5452,6 +5995,7 @@ type EndpointPort struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // EndpointsList is a list of endpoints.
     type EndpointsList struct {
    @@ -5476,6 +6020,7 @@ type NodeSpec struct {
     	// each of IPv4 and IPv6.
     	// +optional
     	// +patchStrategy=merge
    +	// +listType=set
     	PodCIDRs []string `json:"podCIDRs,omitempty" protobuf:"bytes,7,opt,name=podCIDRs" patchStrategy:"merge"`
     
     	// ID of the node assigned by the cloud provider in the format: ://
    @@ -5487,6 +6032,7 @@ type NodeSpec struct {
     	Unschedulable bool `json:"unschedulable,omitempty" protobuf:"varint,4,opt,name=unschedulable"`
     	// If specified, the node's taints.
     	// +optional
    +	// +listType=atomic
     	Taints []Taint `json:"taints,omitempty" protobuf:"bytes,5,opt,name=taints"`
     
     	// Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
    @@ -5562,6 +6108,38 @@ type NodeDaemonEndpoints struct {
     	KubeletEndpoint DaemonEndpoint `json:"kubeletEndpoint,omitempty" protobuf:"bytes,1,opt,name=kubeletEndpoint"`
     }
     
    +// NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler.
    +type NodeRuntimeHandlerFeatures struct {
    +	// RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.
    +	// +featureGate=RecursiveReadOnlyMounts
    +	// +optional
    +	RecursiveReadOnlyMounts *bool `json:"recursiveReadOnlyMounts,omitempty" protobuf:"varint,1,opt,name=recursiveReadOnlyMounts"`
    +	// UserNamespaces is set to true if the runtime handler supports UserNamespaces, including for volumes.
    +	// +featureGate=UserNamespacesSupport
    +	// +optional
    +	UserNamespaces *bool `json:"userNamespaces,omitempty" protobuf:"varint,2,opt,name=userNamespaces"`
    +}
    +
    +// NodeRuntimeHandler is a set of runtime handler information.
    +type NodeRuntimeHandler struct {
    +	// Runtime handler name.
    +	// Empty for the default runtime handler.
    +	// +optional
    +	Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
    +	// Supported features.
    +	// +optional
    +	Features *NodeRuntimeHandlerFeatures `json:"features,omitempty" protobuf:"bytes,2,opt,name=features"`
    +}
    +
    +// NodeFeatures describes the set of features implemented by the CRI implementation.
    +// The features contained in the NodeFeatures should depend only on the cri implementation
    +// independent of runtime handlers.
    +type NodeFeatures struct {
    +	// SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser.
    +	// +optional
    +	SupplementalGroupsPolicy *bool `json:"supplementalGroupsPolicy,omitempty" protobuf:"varint,1,opt,name=supplementalGroupsPolicy"`
    +}
    +
     // NodeSystemInfo is a set of ids/uuids to uniquely identify the node.
     type NodeSystemInfo struct {
     	// MachineID reported by the node. For unique machine identification
    @@ -5582,7 +6160,7 @@ type NodeSystemInfo struct {
     	ContainerRuntimeVersion string `json:"containerRuntimeVersion" protobuf:"bytes,6,opt,name=containerRuntimeVersion"`
     	// Kubelet Version reported by the node.
     	KubeletVersion string `json:"kubeletVersion" protobuf:"bytes,7,opt,name=kubeletVersion"`
    -	// KubeProxy Version reported by the node.
    +	// Deprecated: KubeProxy Version reported by the node.
     	KubeProxyVersion string `json:"kubeProxyVersion" protobuf:"bytes,8,opt,name=kubeProxyVersion"`
     	// The Operating System reported by the node
     	OperatingSystem string `json:"operatingSystem" protobuf:"bytes,9,opt,name=operatingSystem"`
    @@ -5640,7 +6218,7 @@ type NodeConfigStatus struct {
     // NodeStatus is information about the current status of a node.
     type NodeStatus struct {
     	// Capacity represents the total resources of a node.
    -	// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
    +	// More info: https://kubernetes.io/docs/reference/node/node-status/#capacity
     	// +optional
     	Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,1,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"`
     	// Allocatable represents the resources of a node that are available for scheduling.
    @@ -5653,14 +6231,16 @@ type NodeStatus struct {
     	// +optional
     	Phase NodePhase `json:"phase,omitempty" protobuf:"bytes,3,opt,name=phase,casttype=NodePhase"`
     	// Conditions is an array of current observed node conditions.
    -	// More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
    +	// More info: https://kubernetes.io/docs/reference/node/node-status/#condition
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []NodeCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,4,rep,name=conditions"`
     	// List of addresses reachable to the node.
     	// Queried from cloud provider, if available.
    -	// More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
    +	// More info: https://kubernetes.io/docs/reference/node/node-status/#addresses
     	// Note: This field is declared as mergeable, but the merge key is not sufficiently
     	// unique, which can cause data corruption when it is merged. Callers should instead
     	// use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
    @@ -5671,26 +6251,41 @@ type NodeStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Addresses []NodeAddress `json:"addresses,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,5,rep,name=addresses"`
     	// Endpoints of daemons running on the Node.
     	// +optional
     	DaemonEndpoints NodeDaemonEndpoints `json:"daemonEndpoints,omitempty" protobuf:"bytes,6,opt,name=daemonEndpoints"`
     	// Set of ids/uuids to uniquely identify the node.
    -	// More info: https://kubernetes.io/docs/concepts/nodes/node/#info
    +	// More info: https://kubernetes.io/docs/reference/node/node-status/#info
     	// +optional
     	NodeInfo NodeSystemInfo `json:"nodeInfo,omitempty" protobuf:"bytes,7,opt,name=nodeInfo"`
     	// List of container images on this node
     	// +optional
    +	// +listType=atomic
     	Images []ContainerImage `json:"images,omitempty" protobuf:"bytes,8,rep,name=images"`
     	// List of attachable volumes in use (mounted) by the node.
     	// +optional
    +	// +listType=atomic
     	VolumesInUse []UniqueVolumeName `json:"volumesInUse,omitempty" protobuf:"bytes,9,rep,name=volumesInUse"`
     	// List of volumes that are attached to the node.
     	// +optional
    +	// +listType=atomic
     	VolumesAttached []AttachedVolume `json:"volumesAttached,omitempty" protobuf:"bytes,10,rep,name=volumesAttached"`
     	// Status of the config assigned to the node via the dynamic Kubelet config feature.
     	// +optional
     	Config *NodeConfigStatus `json:"config,omitempty" protobuf:"bytes,11,opt,name=config"`
    +	// The available runtime handlers.
    +	// +featureGate=RecursiveReadOnlyMounts
    +	// +featureGate=UserNamespacesSupport
    +	// +optional
    +	// +listType=atomic
    +	RuntimeHandlers []NodeRuntimeHandler `json:"runtimeHandlers,omitempty" protobuf:"bytes,12,rep,name=runtimeHandlers"`
    +	// Features describes the set of features implemented by the CRI implementation.
    +	// +featureGate=SupplementalGroupsPolicy
    +	// +optional
    +	Features *NodeFeatures `json:"features,omitempty" protobuf:"bytes,13,rep,name=features"`
     }
     
     type UniqueVolumeName string
    @@ -5711,6 +6306,7 @@ type AvoidPods struct {
     	// Bounded-sized list of signatures of pods that should avoid this node, sorted
     	// in timestamp order from oldest to newest. Size of the slice is unspecified.
     	// +optional
    +	// +listType=atomic
     	PreferAvoidPods []PreferAvoidPodsEntry `json:"preferAvoidPods,omitempty" protobuf:"bytes,1,rep,name=preferAvoidPods"`
     }
     
    @@ -5742,6 +6338,7 @@ type ContainerImage struct {
     	// Names by which this image is known.
     	// e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
     	// +optional
    +	// +listType=atomic
     	Names []string `json:"names" protobuf:"bytes,1,rep,name=names"`
     	// The size of the image in bytes.
     	// +optional
    @@ -5764,8 +6361,7 @@ const (
     type NodeConditionType string
     
     // These are valid but not exhaustive conditions of node. A cloud provider may set a condition not listed here.
    -// The built-in set of conditions are:
    -// NodeReachable, NodeLive, NodeReady, NodeSchedulable, NodeRunnable.
    +// Relevant events contain "NodeReady", "NodeNotReady", "NodeSchedulable", and "NodeNotSchedulable".
     const (
     	// NodeReady means kubelet is healthy and ready to accept pods.
     	NodeReady NodeConditionType = "Ready"
    @@ -5867,7 +6463,6 @@ const (
     	// Volume size, in bytes (e,g. 5Gi = 5GiB = 5 * 1024 * 1024 * 1024)
     	ResourceStorage ResourceName = "storage"
     	// Local ephemeral storage, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
    -	// The resource name for ResourceEphemeralStorage is alpha and it can change across releases.
     	ResourceEphemeralStorage ResourceName = "ephemeral-storage"
     )
     
    @@ -5886,6 +6481,7 @@ type ResourceList map[ResourceName]resource.Quantity
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // Node is a worker node in Kubernetes.
     // Each node will have a unique identifier in the cache (i.e. in etcd).
    @@ -5910,6 +6506,7 @@ type Node struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // NodeList is the whole list of all Nodes which have been registered with master.
     type NodeList struct {
    @@ -5937,6 +6534,7 @@ type NamespaceSpec struct {
     	// Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
     	// More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     	// +optional
    +	// +listType=atomic
     	Finalizers []FinalizerName `json:"finalizers,omitempty" protobuf:"bytes,1,rep,name=finalizers,casttype=FinalizerName"`
     }
     
    @@ -5951,6 +6549,8 @@ type NamespaceStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []NamespaceCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"`
     }
     
    @@ -5993,10 +6593,13 @@ type NamespaceCondition struct {
     	Type NamespaceConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=NamespaceConditionType"`
     	// Status of the condition, one of True, False, Unknown.
     	Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"`
    +	// Last time the condition transitioned from one status to another.
     	// +optional
     	LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"`
    +	// Unique, one-word, CamelCase reason for the condition's last transition.
     	// +optional
     	Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"`
    +	// Human-readable message indicating details about last transition.
     	// +optional
     	Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"`
     }
    @@ -6005,6 +6608,7 @@ type NamespaceCondition struct {
     // +genclient:nonNamespaced
     // +genclient:skipVerbs=deleteCollection
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // Namespace provides a scope for Names.
     // Use of multiple namespaces is optional.
    @@ -6027,6 +6631,7 @@ type Namespace struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // NamespaceList is a list of Namespaces.
     type NamespaceList struct {
    @@ -6042,9 +6647,9 @@ type NamespaceList struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // Binding ties one object to another; for example, a pod is bound to a node by a scheduler.
    -// Deprecated in 1.7, please use the bindings subresource of pods instead.
     type Binding struct {
     	metav1.TypeMeta `json:",inline"`
     	// Standard object's metadata.
    @@ -6064,8 +6669,18 @@ type Preconditions struct {
     	UID *types.UID `json:"uid,omitempty" protobuf:"bytes,1,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"`
     }
     
    +const (
    +	// LogStreamStdout is the stream type for stdout.
    +	LogStreamStdout = "Stdout"
    +	// LogStreamStderr is the stream type for stderr.
    +	LogStreamStderr = "Stderr"
    +	// LogStreamAll represents the combined stdout and stderr.
    +	LogStreamAll = "All"
    +)
    +
     // +k8s:conversion-gen:explicit-from=net/url.Values
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PodLogOptions is the query options for a Pod's logs REST call.
     type PodLogOptions struct {
    @@ -6097,7 +6712,8 @@ type PodLogOptions struct {
     	// +optional
     	Timestamps bool `json:"timestamps,omitempty" protobuf:"varint,6,opt,name=timestamps"`
     	// If set, the number of lines from the end of the logs to show. If not specified,
    -	// logs are shown from the creation of the container or sinceSeconds or sinceTime
    +	// logs are shown from the creation of the container or sinceSeconds or sinceTime.
    +	// Note that when "TailLines" is specified, "Stream" can only be set to nil or "All".
     	// +optional
     	TailLines *int64 `json:"tailLines,omitempty" protobuf:"varint,7,opt,name=tailLines"`
     	// If set, the number of bytes to read from the server before terminating the
    @@ -6114,10 +6730,19 @@ type PodLogOptions struct {
     	// the actual log data coming from the real kubelet).
     	// +optional
     	InsecureSkipTLSVerifyBackend bool `json:"insecureSkipTLSVerifyBackend,omitempty" protobuf:"varint,9,opt,name=insecureSkipTLSVerifyBackend"`
    +
    +	// Specify which container log stream to return to the client.
    +	// Acceptable values are "All", "Stdout" and "Stderr". If not specified, "All" is used, and both stdout and stderr
    +	// are returned interleaved.
    +	// Note that when "TailLines" is specified, "Stream" can only be set to nil or "All".
    +	// +featureGate=PodLogsQuerySplitStreams
    +	// +optional
    +	Stream *string `json:"stream,omitempty" protobuf:"varint,10,opt,name=stream"`
     }
     
     // +k8s:conversion-gen:explicit-from=net/url.Values
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.1
     
     // PodAttachOptions is the query options to a Pod's remote attach call.
     // ---
    @@ -6156,6 +6781,7 @@ type PodAttachOptions struct {
     
     // +k8s:conversion-gen:explicit-from=net/url.Values
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PodExecOptions is the query options to a Pod's remote exec call.
     // ---
    @@ -6188,11 +6814,13 @@ type PodExecOptions struct {
     	Container string `json:"container,omitempty" protobuf:"bytes,5,opt,name=container"`
     
     	// Command is the remote command to execute. argv array. Not executed within a shell.
    +	// +listType=atomic
     	Command []string `json:"command" protobuf:"bytes,6,rep,name=command"`
     }
     
     // +k8s:conversion-gen:explicit-from=net/url.Values
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.6
     
     // PodPortForwardOptions is the query options to a Pod's port forward call
     // when using WebSockets.
    @@ -6206,11 +6834,13 @@ type PodPortForwardOptions struct {
     	// List of ports to forward
     	// Required when using WebSockets
     	// +optional
    +	// +listType=atomic
     	Ports []int32 `json:"ports,omitempty" protobuf:"varint,1,rep,name=ports"`
     }
     
     // +k8s:conversion-gen:explicit-from=net/url.Values
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // PodProxyOptions is the query options to a Pod's proxy call.
     type PodProxyOptions struct {
    @@ -6223,6 +6853,7 @@ type PodProxyOptions struct {
     
     // +k8s:conversion-gen:explicit-from=net/url.Values
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.2
     
     // NodeProxyOptions is the query options to a Node's proxy call.
     type NodeProxyOptions struct {
    @@ -6235,6 +6866,7 @@ type NodeProxyOptions struct {
     
     // +k8s:conversion-gen:explicit-from=net/url.Values
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.2
     
     // ServiceProxyOptions is the query options to a Service's proxy call.
     type ServiceProxyOptions struct {
    @@ -6306,17 +6938,47 @@ type ObjectReference struct {
     
     // LocalObjectReference contains enough information to let you locate the
     // referenced object inside the same namespace.
    +// ---
    +// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
    +//  1. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
    +//     restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
    +//     Those cannot be well described when embedded.
    +//  2. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
    +//  3. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
    +//     will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.
    +//
    +// Instead of using this type, create a locally provided and used type that is well-focused on your reference.
    +// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
     // +structType=atomic
     type LocalObjectReference struct {
     	// Name of the referent.
    +	// This field is effectively required, but due to backwards compatibility is
    +	// allowed to be empty. Instances of this type with an empty value here are
    +	// almost certainly wrong.
     	// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
    -	// TODO: Add other useful fields. apiVersion, kind, uid?
     	// +optional
    +	// +default=""
    +	// +kubebuilder:default=""
    +	// TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
     	Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`
     }
     
     // TypedLocalObjectReference contains enough information to let you locate the
     // typed referenced object inside the same namespace.
    +// ---
    +// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
    +//  1. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
    +//     restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
    +//     Those cannot be well described when embedded.
    +//  2. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
    +//  3. The fields are both imprecise and overly precise.  Kind is not a precise mapping to a URL. This can produce ambiguity
    +//     during interpretation and require a REST mapping.  In most cases, the dependency is on the group,resource tuple
    +//     and the version of the actual struct is irrelevant.
    +//  4. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
    +//     will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.
    +//
    +// Instead of using this type, create a locally provided and used type that is well-focused on your reference.
    +// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
     // +structType=atomic
     type TypedLocalObjectReference struct {
     	// APIGroup is the group for the resource being referenced.
    @@ -6331,6 +6993,7 @@ type TypedLocalObjectReference struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // SerializedReference is a reference to serialized object.
     type SerializedReference struct {
    @@ -6360,6 +7023,7 @@ const (
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // Event is a report of an event somewhere in the cluster.  Events
     // have a limited retention time and triggers and messages may evolve
    @@ -6444,6 +7108,7 @@ type EventSeries struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // EventList is a list of events.
     type EventList struct {
    @@ -6458,6 +7123,7 @@ type EventList struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // List holds a list of objects, which may not be known by the server.
     type List metav1.List
    @@ -6499,11 +7165,13 @@ type LimitRangeItem struct {
     // LimitRangeSpec defines a min/max usage limit for resources that match on kind.
     type LimitRangeSpec struct {
     	// Limits is the list of LimitRangeItem objects that are enforced.
    +	// +listType=atomic
     	Limits []LimitRangeItem `json:"limits" protobuf:"bytes,1,rep,name=limits"`
     }
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // LimitRange sets resource usage limits for each kind of resource in a Namespace.
     type LimitRange struct {
    @@ -6520,6 +7188,7 @@ type LimitRange struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // LimitRangeList is a list of LimitRange items.
     type LimitRangeList struct {
    @@ -6568,6 +7237,8 @@ const (
     	ResourceLimitsMemory ResourceName = "limits.memory"
     	// Local ephemeral storage limit, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
     	ResourceLimitsEphemeralStorage ResourceName = "limits.ephemeral-storage"
    +	// resource.k8s.io devices requested with a certain DeviceClass, number
    +	ResourceClaimsPerClass string = ".deviceclass.resource.k8s.io/devices"
     )
     
     // The following identify resource prefix for Kubernetes object types
    @@ -6607,6 +7278,7 @@ type ResourceQuotaSpec struct {
     	// A collection of filters that must match each object tracked by a quota.
     	// If not specified, the quota matches all objects.
     	// +optional
    +	// +listType=atomic
     	Scopes []ResourceQuotaScope `json:"scopes,omitempty" protobuf:"bytes,2,rep,name=scopes,casttype=ResourceQuotaScope"`
     	// scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
     	// but expressed using ScopeSelectorOperator in combination with possible values.
    @@ -6621,6 +7293,7 @@ type ResourceQuotaSpec struct {
     type ScopeSelector struct {
     	// A list of scope selector requirements by scope of the resources.
     	// +optional
    +	// +listType=atomic
     	MatchExpressions []ScopedResourceSelectorRequirement `json:"matchExpressions,omitempty" protobuf:"bytes,1,rep,name=matchExpressions"`
     }
     
    @@ -6637,6 +7310,7 @@ type ScopedResourceSelectorRequirement struct {
     	// the values array must be empty.
     	// This array is replaced during a strategic merge patch.
     	// +optional
    +	// +listType=atomic
     	Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"`
     }
     
    @@ -6665,6 +7339,7 @@ type ResourceQuotaStatus struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // ResourceQuota sets aggregate quota restrictions enforced per namespace
     type ResourceQuota struct {
    @@ -6686,6 +7361,7 @@ type ResourceQuota struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // ResourceQuotaList is a list of ResourceQuota items.
     type ResourceQuotaList struct {
    @@ -6702,6 +7378,7 @@ type ResourceQuotaList struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // Secret holds secret data of a certain type. The total bytes of the values in
     // the Data field must be less than MaxSecretSize bytes.
    @@ -6828,6 +7505,7 @@ const (
     )
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // SecretList is a list of Secret.
     type SecretList struct {
    @@ -6844,6 +7522,7 @@ type SecretList struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.2
     
     // ConfigMap holds configuration data for pods to consume.
     type ConfigMap struct {
    @@ -6880,6 +7559,7 @@ type ConfigMap struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.2
     
     // ConfigMapList is a resource containing a list of ConfigMap objects.
     type ConfigMapList struct {
    @@ -6922,6 +7602,7 @@ type ComponentCondition struct {
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // ComponentStatus (and ComponentStatusList) holds the cluster validation info.
     // Deprecated: This API is deprecated in v1.19+
    @@ -6936,10 +7617,13 @@ type ComponentStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []ComponentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"`
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // Status of all the conditions for the component as a list of ComponentStatus objects.
     // Deprecated: This API is deprecated in v1.19+
    @@ -6959,6 +7643,7 @@ type ComponentStatusList struct {
     type DownwardAPIVolumeSource struct {
     	// Items is a list of downward API volume file
     	// +optional
    +	// +listType=atomic
     	Items []DownwardAPIVolumeFile `json:"items,omitempty" protobuf:"bytes,1,rep,name=items"`
     	// Optional: mode bits to use on created files by default. Must be a
     	// Optional: mode bits used to set permissions on created files by default.
    @@ -6980,7 +7665,7 @@ const (
     type DownwardAPIVolumeFile struct {
     	// Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
     	Path string `json:"path" protobuf:"bytes,1,opt,name=path"`
    -	// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
    +	// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
     	// +optional
     	FieldRef *ObjectFieldSelector `json:"fieldRef,omitempty" protobuf:"bytes,2,opt,name=fieldRef"`
     	// Selects a resource of the container: only resources limits and requests
    @@ -7003,6 +7688,7 @@ type DownwardAPIVolumeFile struct {
     type DownwardAPIProjection struct {
     	// Items is a list of DownwardAPIVolume file
     	// +optional
    +	// +listType=atomic
     	Items []DownwardAPIVolumeFile `json:"items,omitempty" protobuf:"bytes,1,rep,name=items"`
     }
     
    @@ -7071,7 +7757,7 @@ type SecurityContext struct {
     	// +optional
     	AllowPrivilegeEscalation *bool `json:"allowPrivilegeEscalation,omitempty" protobuf:"varint,7,opt,name=allowPrivilegeEscalation"`
     	// procMount denotes the type of proc mount to use for the containers.
    -	// The default is DefaultProcMount which uses the container runtime defaults for
    +	// The default value is Default which uses the container runtime defaults for
     	// readonly paths and masked paths.
     	// This requires the ProcMountType feature flag to be enabled.
     	// Note that this field cannot be set when spec.os.name is windows.
    @@ -7083,6 +7769,11 @@ type SecurityContext struct {
     	// Note that this field cannot be set when spec.os.name is windows.
     	// +optional
     	SeccompProfile *SeccompProfile `json:"seccompProfile,omitempty" protobuf:"bytes,11,opt,name=seccompProfile"`
    +	// appArmorProfile is the AppArmor options to use by this container. If set, this profile
    +	// overrides the pod's appArmorProfile.
    +	// Note that this field cannot be set when spec.os.name is windows.
    +	// +optional
    +	AppArmorProfile *AppArmorProfile `json:"appArmorProfile,omitempty" protobuf:"bytes,12,opt,name=appArmorProfile"`
     }
     
     // +enum
    @@ -7144,6 +7835,7 @@ type WindowsSecurityContextOptions struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.0
     
     // RangeAllocation is not a public type.
     type RangeAllocation struct {
    @@ -7178,13 +7870,6 @@ type Sysctl struct {
     	Value string `json:"value" protobuf:"bytes,2,opt,name=value"`
     }
     
    -// NodeResources is an object for conveying resource information about a node.
    -// see https://kubernetes.io/docs/concepts/architecture/nodes/#capacity for more details.
    -type NodeResources struct {
    -	// Capacity represents the available resources of a node
    -	Capacity ResourceList `protobuf:"bytes,1,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"`
    -}
    -
     const (
     	// Enable stdin for remote command execution
     	ExecStdinParam = "input"
    @@ -7227,7 +7912,6 @@ const (
     )
     
     // PortStatus represents the error condition of a service port
    -
     type PortStatus struct {
     	// Port is the port number of the service port of which status is recorded here
     	Port int32 `json:"port" protobuf:"varint,1,opt,name=port"`
    @@ -7260,3 +7944,23 @@ const (
     	// the destination set to the node's IP and port or the pod's IP and port.
     	LoadBalancerIPModeProxy LoadBalancerIPMode = "Proxy"
     )
    +
    +// ImageVolumeSource represents a image volume resource.
    +type ImageVolumeSource struct {
    +	// Required: Image or artifact reference to be used.
    +	// Behaves in the same way as pod.spec.containers[*].image.
    +	// Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.
    +	// More info: https://kubernetes.io/docs/concepts/containers/images
    +	// This field is optional to allow higher level config management to default or override
    +	// container images in workload controllers like Deployments and StatefulSets.
    +	// +optional
    +	Reference string `json:"reference,omitempty" protobuf:"bytes,1,opt,name=reference"`
    +
    +	// Policy for pulling OCI objects. Possible values are:
    +	// Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
    +	// Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
    +	// IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
    +	// Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
    +	// +optional
    +	PullPolicy PullPolicy `json:"pullPolicy,omitempty" protobuf:"bytes,2,opt,name=pullPolicy,casttype=PullPolicy"`
    +}
    diff --git a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
    index fd6f7dc61b90..89ce3d2303bd 100644
    --- a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
    @@ -50,6 +50,16 @@ func (Affinity) SwaggerDoc() map[string]string {
     	return map_Affinity
     }
     
    +var map_AppArmorProfile = map[string]string{
    +	"":                 "AppArmorProfile defines a pod or container's AppArmor settings.",
    +	"type":             "type indicates which kind of AppArmor profile will be applied. Valid options are:\n  Localhost - a profile pre-loaded on the node.\n  RuntimeDefault - the container runtime's default profile.\n  Unconfined - no AppArmor enforcement.",
    +	"localhostProfile": "localhostProfile indicates a profile loaded on the node that should be used. The profile must be preconfigured on the node to work. Must match the loaded name of the profile. Must be set if and only if type is \"Localhost\".",
    +}
    +
    +func (AppArmorProfile) SwaggerDoc() map[string]string {
    +	return map_AppArmorProfile
    +}
    +
     var map_AttachedVolume = map[string]string{
     	"":           "AttachedVolume describes a volume attached to a node",
     	"name":       "Name of the attached volume",
    @@ -107,7 +117,7 @@ func (AzureFileVolumeSource) SwaggerDoc() map[string]string {
     }
     
     var map_Binding = map[string]string{
    -	"":         "Binding ties one object to another; for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead.",
    +	"":         "Binding ties one object to another; for example, a pod is bound to a node by a scheduler.",
     	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
     	"target":   "The target object that you want to bind to the standard object.",
     }
    @@ -117,7 +127,7 @@ func (Binding) SwaggerDoc() map[string]string {
     }
     
     var map_CSIPersistentVolumeSource = map[string]string{
    -	"":                           "Represents storage that is managed by an external CSI volume driver (Beta feature)",
    +	"":                           "Represents storage that is managed by an external CSI volume driver",
     	"driver":                     "driver is the name of the driver to use for this volume. Required.",
     	"volumeHandle":               "volumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.",
     	"readOnly":                   "readOnly value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).",
    @@ -209,16 +219,6 @@ func (CinderVolumeSource) SwaggerDoc() map[string]string {
     	return map_CinderVolumeSource
     }
     
    -var map_ClaimSource = map[string]string{
    -	"":                          "ClaimSource describes a reference to a ResourceClaim.\n\nExactly one of these fields should be set.  Consumers of this type must treat an empty object as if it has an unknown value.",
    -	"resourceClaimName":         "ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod.",
    -	"resourceClaimTemplateName": "ResourceClaimTemplateName is the name of a ResourceClaimTemplate object in the same namespace as this pod.\n\nThe template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The pod name and resource name, along with a generated component, will be used to form a unique name for the ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\n\nThis field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim.",
    -}
    -
    -func (ClaimSource) SwaggerDoc() map[string]string {
    -	return map_ClaimSource
    -}
    -
     var map_ClientIPConfig = map[string]string{
     	"":               "ClientIPConfig represents the configurations of Client IP based session affinity.",
     	"timeoutSeconds": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).",
    @@ -459,24 +459,36 @@ func (ContainerStateWaiting) SwaggerDoc() map[string]string {
     }
     
     var map_ContainerStatus = map[string]string{
    -	"":                   "ContainerStatus contains details for the current status of this container.",
    -	"name":               "Name is a DNS_LABEL representing the unique name of the container. Each container in a pod must have a unique name across all container types. Cannot be updated.",
    -	"state":              "State holds details about the container's current condition.",
    -	"lastState":          "LastTerminationState holds the last termination state of the container to help debug container crashes and restarts. This field is not populated if the container is still running and RestartCount is 0.",
    -	"ready":              "Ready specifies whether the container is currently passing its readiness check. The value will change as readiness probes keep executing. If no readiness probes are specified, this field defaults to true once the container is fully started (see Started field).\n\nThe value is typically used to determine whether a container is ready to accept traffic.",
    -	"restartCount":       "RestartCount holds the number of times the container has been restarted. Kubelet makes an effort to always increment the value, but there are cases when the state may be lost due to node restarts and then the value may be reset to 0. The value is never negative.",
    -	"image":              "Image is the name of container image that the container is running. The container image may not match the image used in the PodSpec, as it may have been resolved by the runtime. More info: https://kubernetes.io/docs/concepts/containers/images.",
    -	"imageID":            "ImageID is the image ID of the container's image. The image ID may not match the image ID of the image used in the PodSpec, as it may have been resolved by the runtime.",
    -	"containerID":        "ContainerID is the ID of the container in the format '://'. Where type is a container runtime identifier, returned from Version call of CRI API (for example \"containerd\").",
    -	"started":            "Started indicates whether the container has finished its postStart lifecycle hook and passed its startup probe. Initialized as false, becomes true after startupProbe is considered successful. Resets to false when the container is restarted, or if kubelet loses state temporarily. In both cases, startup probes will run again. Is always true when no startupProbe is defined and container is running and has passed the postStart lifecycle hook. The null value must be treated the same as false.",
    -	"allocatedResources": "AllocatedResources represents the compute resources allocated for this container by the node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission and after successfully admitting desired pod resize.",
    -	"resources":          "Resources represents the compute resource requests and limits that have been successfully enacted on the running container after it has been started or has been successfully resized.",
    +	"":                         "ContainerStatus contains details for the current status of this container.",
    +	"name":                     "Name is a DNS_LABEL representing the unique name of the container. Each container in a pod must have a unique name across all container types. Cannot be updated.",
    +	"state":                    "State holds details about the container's current condition.",
    +	"lastState":                "LastTerminationState holds the last termination state of the container to help debug container crashes and restarts. This field is not populated if the container is still running and RestartCount is 0.",
    +	"ready":                    "Ready specifies whether the container is currently passing its readiness check. The value will change as readiness probes keep executing. If no readiness probes are specified, this field defaults to true once the container is fully started (see Started field).\n\nThe value is typically used to determine whether a container is ready to accept traffic.",
    +	"restartCount":             "RestartCount holds the number of times the container has been restarted. Kubelet makes an effort to always increment the value, but there are cases when the state may be lost due to node restarts and then the value may be reset to 0. The value is never negative.",
    +	"image":                    "Image is the name of container image that the container is running. The container image may not match the image used in the PodSpec, as it may have been resolved by the runtime. More info: https://kubernetes.io/docs/concepts/containers/images.",
    +	"imageID":                  "ImageID is the image ID of the container's image. The image ID may not match the image ID of the image used in the PodSpec, as it may have been resolved by the runtime.",
    +	"containerID":              "ContainerID is the ID of the container in the format '://'. Where type is a container runtime identifier, returned from Version call of CRI API (for example \"containerd\").",
    +	"started":                  "Started indicates whether the container has finished its postStart lifecycle hook and passed its startup probe. Initialized as false, becomes true after startupProbe is considered successful. Resets to false when the container is restarted, or if kubelet loses state temporarily. In both cases, startup probes will run again. Is always true when no startupProbe is defined and container is running and has passed the postStart lifecycle hook. The null value must be treated the same as false.",
    +	"allocatedResources":       "AllocatedResources represents the compute resources allocated for this container by the node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission and after successfully admitting desired pod resize.",
    +	"resources":                "Resources represents the compute resource requests and limits that have been successfully enacted on the running container after it has been started or has been successfully resized.",
    +	"volumeMounts":             "Status of volume mounts.",
    +	"user":                     "User represents user identity information initially attached to the first process of the container",
    +	"allocatedResourcesStatus": "AllocatedResourcesStatus represents the status of various resources allocated for this Pod.",
     }
     
     func (ContainerStatus) SwaggerDoc() map[string]string {
     	return map_ContainerStatus
     }
     
    +var map_ContainerUser = map[string]string{
    +	"":      "ContainerUser represents user identity information",
    +	"linux": "Linux holds user identity information initially attached to the first process of the containers in Linux. Note that the actual running identity can be changed if the process has enough privilege to do so.",
    +}
    +
    +func (ContainerUser) SwaggerDoc() map[string]string {
    +	return map_ContainerUser
    +}
    +
     var map_DaemonEndpoint = map[string]string{
     	"":     "DaemonEndpoint contains information about a single Daemon endpoint.",
     	"Port": "Port number of the given endpoint.",
    @@ -498,7 +510,7 @@ func (DownwardAPIProjection) SwaggerDoc() map[string]string {
     var map_DownwardAPIVolumeFile = map[string]string{
     	"":                 "DownwardAPIVolumeFile represents information to create the file containing the pod field",
     	"path":             "Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'",
    -	"fieldRef":         "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.",
    +	"fieldRef":         "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.",
     	"resourceFieldRef": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.",
     	"mode":             "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.",
     }
    @@ -790,6 +802,7 @@ func (GCEPersistentDiskVolumeSource) SwaggerDoc() map[string]string {
     }
     
     var map_GRPCAction = map[string]string{
    +	"":        "GRPCAction specifies an action involving a GRPC service.",
     	"port":    "Port number of the gRPC service. Number must be in the range 1 to 65535.",
     	"service": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC.",
     }
    @@ -922,6 +935,16 @@ func (ISCSIVolumeSource) SwaggerDoc() map[string]string {
     	return map_ISCSIVolumeSource
     }
     
    +var map_ImageVolumeSource = map[string]string{
    +	"":           "ImageVolumeSource represents a image volume resource.",
    +	"reference":  "Required: Image or artifact reference to be used. Behaves in the same way as pod.spec.containers[*].image. Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.",
    +	"pullPolicy": "Policy for pulling OCI objects. Possible values are: Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.",
    +}
    +
    +func (ImageVolumeSource) SwaggerDoc() map[string]string {
    +	return map_ImageVolumeSource
    +}
    +
     var map_KeyToPath = map[string]string{
     	"":     "Maps a string key to a path within a volume.",
     	"key":  "key is the key to project.",
    @@ -945,10 +968,10 @@ func (Lifecycle) SwaggerDoc() map[string]string {
     
     var map_LifecycleHandler = map[string]string{
     	"":          "LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified.",
    -	"exec":      "Exec specifies the action to take.",
    -	"httpGet":   "HTTPGet specifies the http request to perform.",
    -	"tcpSocket": "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.",
    -	"sleep":     "Sleep represents the duration that the container should sleep before being terminated.",
    +	"exec":      "Exec specifies a command to execute in the container.",
    +	"httpGet":   "HTTPGet specifies an HTTP GET request to perform.",
    +	"tcpSocket": "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for backward compatibility. There is no validation of this field and lifecycle hooks will fail at runtime when it is specified.",
    +	"sleep":     "Sleep represents a duration that the container should sleep.",
     }
     
     func (LifecycleHandler) SwaggerDoc() map[string]string {
    @@ -998,6 +1021,17 @@ func (LimitRangeSpec) SwaggerDoc() map[string]string {
     	return map_LimitRangeSpec
     }
     
    +var map_LinuxContainerUser = map[string]string{
    +	"":                   "LinuxContainerUser represents user identity information in Linux containers",
    +	"uid":                "UID is the primary uid initially attached to the first process in the container",
    +	"gid":                "GID is the primary gid initially attached to the first process in the container",
    +	"supplementalGroups": "SupplementalGroups are the supplemental groups initially attached to the first process in the container",
    +}
    +
    +func (LinuxContainerUser) SwaggerDoc() map[string]string {
    +	return map_LinuxContainerUser
    +}
    +
     var map_LoadBalancerIngress = map[string]string{
     	"":         "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.",
     	"ip":       "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)",
    @@ -1021,7 +1055,7 @@ func (LoadBalancerStatus) SwaggerDoc() map[string]string {
     
     var map_LocalObjectReference = map[string]string{
     	"":     "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.",
    -	"name": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
    +	"name": "Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
     }
     
     func (LocalObjectReference) SwaggerDoc() map[string]string {
    @@ -1029,7 +1063,7 @@ func (LocalObjectReference) SwaggerDoc() map[string]string {
     }
     
     var map_LocalVolumeSource = map[string]string{
    -	"":       "Local represents directly-attached storage with node affinity (Beta feature)",
    +	"":       "Local represents directly-attached storage with node affinity",
     	"path":   "path of the full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).",
     	"fsType": "fsType is the filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default value is to auto-select a filesystem if unspecified.",
     }
    @@ -1071,9 +1105,12 @@ func (Namespace) SwaggerDoc() map[string]string {
     }
     
     var map_NamespaceCondition = map[string]string{
    -	"":       "NamespaceCondition contains details about state of namespace.",
    -	"type":   "Type of namespace controller condition.",
    -	"status": "Status of the condition, one of True, False, Unknown.",
    +	"":                   "NamespaceCondition contains details about state of namespace.",
    +	"type":               "Type of namespace controller condition.",
    +	"status":             "Status of the condition, one of True, False, Unknown.",
    +	"lastTransitionTime": "Last time the condition transitioned from one status to another.",
    +	"reason":             "Unique, one-word, CamelCase reason for the condition's last transition.",
    +	"message":            "Human-readable message indicating details about last transition.",
     }
     
     func (NamespaceCondition) SwaggerDoc() map[string]string {
    @@ -1184,6 +1221,15 @@ func (NodeDaemonEndpoints) SwaggerDoc() map[string]string {
     	return map_NodeDaemonEndpoints
     }
     
    +var map_NodeFeatures = map[string]string{
    +	"":                         "NodeFeatures describes the set of features implemented by the CRI implementation. The features contained in the NodeFeatures should depend only on the cri implementation independent of runtime handlers.",
    +	"supplementalGroupsPolicy": "SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser.",
    +}
    +
    +func (NodeFeatures) SwaggerDoc() map[string]string {
    +	return map_NodeFeatures
    +}
    +
     var map_NodeList = map[string]string{
     	"":         "NodeList is the whole list of all Nodes which have been registered with master.",
     	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
    @@ -1203,13 +1249,24 @@ func (NodeProxyOptions) SwaggerDoc() map[string]string {
     	return map_NodeProxyOptions
     }
     
    -var map_NodeResources = map[string]string{
    -	"":         "NodeResources is an object for conveying resource information about a node. see https://kubernetes.io/docs/concepts/architecture/nodes/#capacity for more details.",
    -	"Capacity": "Capacity represents the available resources of a node",
    +var map_NodeRuntimeHandler = map[string]string{
    +	"":         "NodeRuntimeHandler is a set of runtime handler information.",
    +	"name":     "Runtime handler name. Empty for the default runtime handler.",
    +	"features": "Supported features.",
     }
     
    -func (NodeResources) SwaggerDoc() map[string]string {
    -	return map_NodeResources
    +func (NodeRuntimeHandler) SwaggerDoc() map[string]string {
    +	return map_NodeRuntimeHandler
    +}
    +
    +var map_NodeRuntimeHandlerFeatures = map[string]string{
    +	"":                        "NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler.",
    +	"recursiveReadOnlyMounts": "RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.",
    +	"userNamespaces":          "UserNamespaces is set to true if the runtime handler supports UserNamespaces, including for volumes.",
    +}
    +
    +func (NodeRuntimeHandlerFeatures) SwaggerDoc() map[string]string {
    +	return map_NodeRuntimeHandlerFeatures
     }
     
     var map_NodeSelector = map[string]string{
    @@ -1259,17 +1316,19 @@ func (NodeSpec) SwaggerDoc() map[string]string {
     
     var map_NodeStatus = map[string]string{
     	"":                "NodeStatus is information about the current status of a node.",
    -	"capacity":        "Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity",
    +	"capacity":        "Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/reference/node/node-status/#capacity",
     	"allocatable":     "Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.",
     	"phase":           "NodePhase is the recently observed lifecycle phase of the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#phase The field is never populated, and now is deprecated.",
    -	"conditions":      "Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition",
    -	"addresses":       "List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses Note: This field is declared as mergeable, but the merge key is not sufficiently unique, which can cause data corruption when it is merged. Callers should instead use a full-replacement patch. See https://pr.k8s.io/79391 for an example. Consumers should assume that addresses can change during the lifetime of a Node. However, there are some exceptions where this may not be possible, such as Pods that inherit a Node's address in its own status or consumers of the downward API (status.hostIP).",
    +	"conditions":      "Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/reference/node/node-status/#condition",
    +	"addresses":       "List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/reference/node/node-status/#addresses Note: This field is declared as mergeable, but the merge key is not sufficiently unique, which can cause data corruption when it is merged. Callers should instead use a full-replacement patch. See https://pr.k8s.io/79391 for an example. Consumers should assume that addresses can change during the lifetime of a Node. However, there are some exceptions where this may not be possible, such as Pods that inherit a Node's address in its own status or consumers of the downward API (status.hostIP).",
     	"daemonEndpoints": "Endpoints of daemons running on the Node.",
    -	"nodeInfo":        "Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info",
    +	"nodeInfo":        "Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/reference/node/node-status/#info",
     	"images":          "List of container images on this node",
     	"volumesInUse":    "List of attachable volumes in use (mounted) by the node.",
     	"volumesAttached": "List of volumes that are attached to the node.",
     	"config":          "Status of the config assigned to the node via the dynamic Kubelet config feature.",
    +	"runtimeHandlers": "The available runtime handlers.",
    +	"features":        "Features describes the set of features implemented by the CRI implementation.",
     }
     
     func (NodeStatus) SwaggerDoc() map[string]string {
    @@ -1285,7 +1344,7 @@ var map_NodeSystemInfo = map[string]string{
     	"osImage":                 "OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).",
     	"containerRuntimeVersion": "ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).",
     	"kubeletVersion":          "Kubelet Version reported by the node.",
    -	"kubeProxyVersion":        "KubeProxy Version reported by the node.",
    +	"kubeProxyVersion":        "Deprecated: KubeProxy Version reported by the node.",
     	"operatingSystem":         "The Operating System reported by the node",
     	"architecture":            "The Architecture reported by the node",
     }
    @@ -1343,9 +1402,11 @@ func (PersistentVolumeClaim) SwaggerDoc() map[string]string {
     
     var map_PersistentVolumeClaimCondition = map[string]string{
     	"":                   "PersistentVolumeClaimCondition contains details about state of pvc",
    +	"type":               "Type is the type of the condition. More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=set%20to%20%27ResizeStarted%27.-,PersistentVolumeClaimCondition,-contains%20details%20about",
    +	"status":             "Status is the status of the condition. Can be True, False, Unknown. More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=state%20of%20pvc-,conditions.status,-(string)%2C%20required",
     	"lastProbeTime":      "lastProbeTime is the time we probed the condition.",
     	"lastTransitionTime": "lastTransitionTime is the time the condition transitioned from one status to another.",
    -	"reason":             "reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized.",
    +	"reason":             "reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"Resizing\" that means the underlying persistent volume is being resized.",
     	"message":            "message is the human-readable message indicating details about last transition.",
     }
     
    @@ -1373,7 +1434,7 @@ var map_PersistentVolumeClaimSpec = map[string]string{
     	"volumeMode":                "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.",
     	"dataSource":                "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.",
     	"dataSourceRef":             "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef\n  allows any non-core object, as well as PersistentVolumeClaim objects.\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\n  preserves all values, and generates an error if a disallowed value is\n  specified.\n* While dataSource only allows local objects, dataSourceRef allows objects\n  in any namespaces.\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.",
    -	"volumeAttributesClassName": "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.",
    +	"volumeAttributesClassName": "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).",
     }
     
     func (PersistentVolumeClaimSpec) SwaggerDoc() map[string]string {
    @@ -1385,11 +1446,11 @@ var map_PersistentVolumeClaimStatus = map[string]string{
     	"phase":                            "phase represents the current phase of PersistentVolumeClaim.",
     	"accessModes":                      "accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1",
     	"capacity":                         "capacity represents the actual resources of the underlying volume.",
    -	"conditions":                       "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.",
    +	"conditions":                       "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'Resizing'.",
     	"allocatedResources":               "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either:\n\t* Un-prefixed keys:\n\t\t- storage - the capacity of the volume.\n\t* Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\"\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used.\n\nCapacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity.\n\nA controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC.\n\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.",
     	"allocatedResourceStatuses":        "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either:\n\t* Un-prefixed keys:\n\t\t- storage - the capacity of the volume.\n\t* Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\"\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used.\n\nClaimResourceStatus can be in any of following states:\n\t- ControllerResizeInProgress:\n\t\tState set when resize controller starts resizing the volume in control-plane.\n\t- ControllerResizeFailed:\n\t\tState set when resize has failed in resize controller with a terminal error.\n\t- NodeResizePending:\n\t\tState set when resize controller has finished resizing the volume but further resizing of\n\t\tvolume is needed on the node.\n\t- NodeResizeInProgress:\n\t\tState set when kubelet starts resizing the volume.\n\t- NodeResizeFailed:\n\t\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\n\t\tNodeResizeFailed.\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\n\t- pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\"\n     - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\"\n     - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\"\n     - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\"\n     - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\"\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\n\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC.\n\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.",
    -	"currentVolumeAttributesClassName": "currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using. When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim This is an alpha field and requires enabling VolumeAttributesClass feature.",
    -	"modifyVolumeStatus":               "ModifyVolumeStatus represents the status object of ControllerModifyVolume operation. When this is unset, there is no ModifyVolume operation being attempted. This is an alpha field and requires enabling VolumeAttributesClass feature.",
    +	"currentVolumeAttributesClassName": "currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using. When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim This is a beta field and requires enabling VolumeAttributesClass feature (off by default).",
    +	"modifyVolumeStatus":               "ModifyVolumeStatus represents the status object of ControllerModifyVolume operation. When this is unset, there is no ModifyVolume operation being attempted. This is a beta field and requires enabling VolumeAttributesClass feature (off by default).",
     }
     
     func (PersistentVolumeClaimStatus) SwaggerDoc() map[string]string {
    @@ -1428,28 +1489,28 @@ func (PersistentVolumeList) SwaggerDoc() map[string]string {
     
     var map_PersistentVolumeSource = map[string]string{
     	"":                     "PersistentVolumeSource is similar to VolumeSource but meant for the administrator who creates PVs. Exactly one of its members must be set.",
    -	"gcePersistentDisk":    "gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk",
    -	"awsElasticBlockStore": "awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore",
    +	"gcePersistentDisk":    "gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin. Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk",
    +	"awsElasticBlockStore": "awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore",
     	"hostPath":             "hostPath represents a directory on the host. Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath",
    -	"glusterfs":            "glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: https://examples.k8s.io/volumes/glusterfs/README.md",
    +	"glusterfs":            "glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. More info: https://examples.k8s.io/volumes/glusterfs/README.md",
     	"nfs":                  "nfs represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs",
    -	"rbd":                  "rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md",
    +	"rbd":                  "rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported. More info: https://examples.k8s.io/volumes/rbd/README.md",
     	"iscsi":                "iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin.",
    -	"cinder":               "cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md",
    -	"cephfs":               "cephFS represents a Ceph FS mount on the host that shares a pod's lifetime",
    +	"cinder":               "cinder represents a cinder volume attached and mounted on kubelets host machine. Deprecated: Cinder is deprecated. All operations for the in-tree cinder type are redirected to the cinder.csi.openstack.org CSI driver. More info: https://examples.k8s.io/mysql-cinder-pd/README.md",
    +	"cephfs":               "cephFS represents a Ceph FS mount on the host that shares a pod's lifetime. Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.",
     	"fc":                   "fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.",
    -	"flocker":              "flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running",
    -	"flexVolume":           "flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.",
    -	"azureFile":            "azureFile represents an Azure File Service mount on the host and bind mount to the pod.",
    -	"vsphereVolume":        "vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine",
    -	"quobyte":              "quobyte represents a Quobyte mount on the host that shares a pod's lifetime",
    -	"azureDisk":            "azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.",
    -	"photonPersistentDisk": "photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine",
    -	"portworxVolume":       "portworxVolume represents a portworx volume attached and mounted on kubelets host machine",
    -	"scaleIO":              "scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.",
    +	"flocker":              "flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running. Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.",
    +	"flexVolume":           "flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.",
    +	"azureFile":            "azureFile represents an Azure File Service mount on the host and bind mount to the pod. Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type are redirected to the file.csi.azure.com CSI driver.",
    +	"vsphereVolume":        "vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine. Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type are redirected to the csi.vsphere.vmware.com CSI driver.",
    +	"quobyte":              "quobyte represents a Quobyte mount on the host that shares a pod's lifetime. Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.",
    +	"azureDisk":            "azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type are redirected to the disk.csi.azure.com CSI driver.",
    +	"photonPersistentDisk": "photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine. Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.",
    +	"portworxVolume":       "portworxVolume represents a portworx volume attached and mounted on kubelets host machine. Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate is on.",
    +	"scaleIO":              "scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.",
     	"local":                "local represents directly-attached storage with node affinity",
    -	"storageos":            "storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://examples.k8s.io/volumes/storageos/README.md",
    -	"csi":                  "csi represents storage that is handled by an external CSI driver (Beta feature).",
    +	"storageos":            "storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod. Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported. More info: https://examples.k8s.io/volumes/storageos/README.md",
    +	"csi":                  "csi represents storage that is handled by an external CSI driver.",
     }
     
     func (PersistentVolumeSource) SwaggerDoc() map[string]string {
    @@ -1466,7 +1527,7 @@ var map_PersistentVolumeSpec = map[string]string{
     	"mountOptions":                  "mountOptions is the list of mount options, e.g. [\"ro\", \"soft\"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options",
     	"volumeMode":                    "volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.",
     	"nodeAffinity":                  "nodeAffinity defines constraints that limit what nodes this volume can be accessed from. This field influences the scheduling of pods that use this volume.",
    -	"volumeAttributesClassName":     "Name of VolumeAttributesClass to which this persistent volume belongs. Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process. This is an alpha field and requires enabling VolumeAttributesClass feature.",
    +	"volumeAttributesClassName":     "Name of VolumeAttributesClass to which this persistent volume belongs. Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process. This is a beta field and requires enabling VolumeAttributesClass feature (off by default).",
     }
     
     func (PersistentVolumeSpec) SwaggerDoc() map[string]string {
    @@ -1478,7 +1539,7 @@ var map_PersistentVolumeStatus = map[string]string{
     	"phase":                   "phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase",
     	"message":                 "message is a human-readable message indicating details about why the volume is in this state.",
     	"reason":                  "reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.",
    -	"lastPhaseTransitionTime": "lastPhaseTransitionTime is the time the phase transitioned from one to another and automatically resets to current time everytime a volume phase transitions. This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).",
    +	"lastPhaseTransitionTime": "lastPhaseTransitionTime is the time the phase transitioned from one to another and automatically resets to current time everytime a volume phase transitions.",
     }
     
     func (PersistentVolumeStatus) SwaggerDoc() map[string]string {
    @@ -1522,8 +1583,8 @@ var map_PodAffinityTerm = map[string]string{
     	"namespaces":        "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".",
     	"topologyKey":       "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.",
     	"namespaceSelector": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.",
    -	"matchLabelKeys":    "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.",
    -	"mismatchLabelKeys": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.",
    +	"matchLabelKeys":    "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
    +	"mismatchLabelKeys": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
     }
     
     func (PodAffinityTerm) SwaggerDoc() map[string]string {
    @@ -1579,8 +1640,9 @@ func (PodDNSConfig) SwaggerDoc() map[string]string {
     }
     
     var map_PodDNSConfigOption = map[string]string{
    -	"":     "PodDNSConfigOption defines DNS resolver options of a pod.",
    -	"name": "Required.",
    +	"":      "PodDNSConfigOption defines DNS resolver options of a pod.",
    +	"name":  "Name is this DNS resolver option's name. Required.",
    +	"value": "Value is this DNS resolver option's value.",
     }
     
     func (PodDNSConfigOption) SwaggerDoc() map[string]string {
    @@ -1628,9 +1690,10 @@ var map_PodLogOptions = map[string]string{
     	"sinceSeconds":                 "A relative time in seconds before the current time from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.",
     	"sinceTime":                    "An RFC3339 timestamp from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.",
     	"timestamps":                   "If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.",
    -	"tailLines":                    "If set, the number of lines from the end of the logs to show. If not specified, logs are shown from the creation of the container or sinceSeconds or sinceTime",
    +	"tailLines":                    "If set, the number of lines from the end of the logs to show. If not specified, logs are shown from the creation of the container or sinceSeconds or sinceTime. Note that when \"TailLines\" is specified, \"Stream\" can only be set to nil or \"All\".",
     	"limitBytes":                   "If set, the number of bytes to read from the server before terminating the log output. This may not display a complete final line of logging, and may return slightly more or slightly less than the specified limit.",
     	"insecureSkipTLSVerifyBackend": "insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the serving certificate of the backend it is connecting to.  This will make the HTTPS connection between the apiserver and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real kubelet.  If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept the actual log data coming from the real kubelet).",
    +	"stream":                       "Specify which container log stream to return to the client. Acceptable values are \"All\", \"Stdout\" and \"Stderr\". If not specified, \"All\" is used, and both stdout and stderr are returned interleaved. Note that when \"TailLines\" is specified, \"Stream\" can only be set to nil or \"All\".",
     }
     
     func (PodLogOptions) SwaggerDoc() map[string]string {
    @@ -1674,9 +1737,10 @@ func (PodReadinessGate) SwaggerDoc() map[string]string {
     }
     
     var map_PodResourceClaim = map[string]string{
    -	"":       "PodResourceClaim references exactly one ResourceClaim through a ClaimSource. It adds a name to it that uniquely identifies the ResourceClaim inside the Pod. Containers that need access to the ResourceClaim reference it with this name.",
    -	"name":   "Name uniquely identifies this resource claim inside the pod. This must be a DNS_LABEL.",
    -	"source": "Source describes where to find the ResourceClaim.",
    +	"":                          "PodResourceClaim references exactly one ResourceClaim, either directly or by naming a ResourceClaimTemplate which is then turned into a ResourceClaim for the pod.\n\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod. Containers that need access to the ResourceClaim reference it with this name.",
    +	"name":                      "Name uniquely identifies this resource claim inside the pod. This must be a DNS_LABEL.",
    +	"resourceClaimName":         "ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod.\n\nExactly one of ResourceClaimName and ResourceClaimTemplateName must be set.",
    +	"resourceClaimTemplateName": "ResourceClaimTemplateName is the name of a ResourceClaimTemplate object in the same namespace as this pod.\n\nThe template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The pod name and resource name, along with a generated component, will be used to form a unique name for the ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\n\nThis field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim.\n\nExactly one of ResourceClaimName and ResourceClaimTemplateName must be set.",
     }
     
     func (PodResourceClaim) SwaggerDoc() map[string]string {
    @@ -1686,7 +1750,7 @@ func (PodResourceClaim) SwaggerDoc() map[string]string {
     var map_PodResourceClaimStatus = map[string]string{
     	"":                  "PodResourceClaimStatus is stored in the PodStatus for each PodResourceClaim which references a ResourceClaimTemplate. It stores the generated name for the corresponding ResourceClaim.",
     	"name":              "Name uniquely identifies this resource claim inside the pod. This must match the name of an entry in pod.spec.resourceClaims, which implies that the string must be a DNS_LABEL.",
    -	"resourceClaimName": "ResourceClaimName is the name of the ResourceClaim that was generated for the Pod in the namespace of the Pod. It this is unset, then generating a ResourceClaim was not necessary. The pod.spec.resourceClaims entry can be ignored in this case.",
    +	"resourceClaimName": "ResourceClaimName is the name of the ResourceClaim that was generated for the Pod in the namespace of the Pod. If this is unset, then generating a ResourceClaim was not necessary. The pod.spec.resourceClaims entry can be ignored in this case.",
     }
     
     func (PodResourceClaimStatus) SwaggerDoc() map[string]string {
    @@ -1703,17 +1767,20 @@ func (PodSchedulingGate) SwaggerDoc() map[string]string {
     }
     
     var map_PodSecurityContext = map[string]string{
    -	"":                    "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext.  Field values of container.securityContext take precedence over field values of PodSecurityContext.",
    -	"seLinuxOptions":      "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.",
    -	"windowsOptions":      "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.",
    -	"runAsUser":           "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.",
    -	"runAsGroup":          "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.",
    -	"runAsNonRoot":        "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.",
    -	"supplementalGroups":  "A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.",
    -	"fsGroup":             "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw ",
    -	"sysctls":             "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.",
    -	"fsGroupChangePolicy": "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.",
    -	"seccompProfile":      "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.",
    +	"":                         "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext.  Field values of container.securityContext take precedence over field values of PodSecurityContext.",
    +	"seLinuxOptions":           "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.",
    +	"windowsOptions":           "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.",
    +	"runAsUser":                "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.",
    +	"runAsGroup":               "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.",
    +	"runAsNonRoot":             "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.",
    +	"supplementalGroups":       "A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified).  If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows.",
    +	"supplementalGroupsPolicy": "Defines how supplemental groups of the first container processes are calculated. Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows.",
    +	"fsGroup":                  "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw ",
    +	"sysctls":                  "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.",
    +	"fsGroupChangePolicy":      "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.",
    +	"seccompProfile":           "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.",
    +	"appArmorProfile":          "appArmorProfile is the AppArmor options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.",
    +	"seLinuxChangePolicy":      "seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod. It has no effect on nodes that do not support SELinux or to volumes does not support SELinux. Valid values are \"MountOption\" and \"Recursive\".\n\n\"Recursive\" means relabeling of all files on all Pod volumes by the container runtime. This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node.\n\n\"MountOption\" mounts all eligible Pod volumes with `-o context` mount option. This requires all Pods that share the same volume to use the same SELinux label. It is not possible to share the same volume among privileged and unprivileged Pods. Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their CSIDriver instance. Other volumes are always re-labelled recursively. \"MountOption\" value is allowed only when SELinuxMount feature gate is enabled.\n\nIf not specified and SELinuxMount feature gate is enabled, \"MountOption\" is used. If not specified and SELinuxMount feature gate is disabled, \"MountOption\" is used for ReadWriteOncePod volumes and \"Recursive\" for all other volumes.\n\nThis field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers.\n\nAll Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state. Note that this field cannot be set when spec.os.name is windows.",
     }
     
     func (PodSecurityContext) SwaggerDoc() map[string]string {
    @@ -1741,9 +1808,9 @@ var map_PodSpec = map[string]string{
     	"dnsPolicy":                     "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.",
     	"nodeSelector":                  "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/",
     	"serviceAccountName":            "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/",
    -	"serviceAccount":                "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.",
    +	"serviceAccount":                "DeprecatedServiceAccount is a deprecated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.",
     	"automountServiceAccountToken":  "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.",
    -	"nodeName":                      "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.",
    +	"nodeName":                      "NodeName indicates in which node this pod is scheduled. If empty, this pod is a candidate for scheduling by the scheduler defined in schedulerName. Once this field is set, the kubelet for this node becomes responsible for the lifecycle of this pod. This field should not be used to express a desire for the pod to be scheduled on a specific node. https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename",
     	"hostNetwork":                   "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.",
     	"hostPID":                       "Use the host's pid namespace. Optional: Default to false.",
     	"hostIPC":                       "Use the host's ipc namespace. Optional: Default to false.",
    @@ -1755,7 +1822,7 @@ var map_PodSpec = map[string]string{
     	"affinity":                      "If specified, the pod's scheduling constraints",
     	"schedulerName":                 "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.",
     	"tolerations":                   "If specified, the pod's tolerations.",
    -	"hostAliases":                   "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.",
    +	"hostAliases":                   "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified.",
     	"priorityClassName":             "If specified, indicates the pod's priority. \"system-node-critical\" and \"system-cluster-critical\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.",
     	"priority":                      "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.",
     	"dnsConfig":                     "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.",
    @@ -1766,10 +1833,11 @@ var map_PodSpec = map[string]string{
     	"overhead":                      "Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md",
     	"topologySpreadConstraints":     "TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.",
     	"setHostnameAsFQDN":             "If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.",
    -	"os":                            "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup",
    +	"os":                            "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup",
     	"hostUsers":                     "Use the host's user namespace. Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.",
    -	"schedulingGates":               "SchedulingGates is an opaque list of values that if specified will block scheduling the pod. If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the scheduler will not attempt to schedule the pod.\n\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\n\nThis is a beta feature enabled by the PodSchedulingReadiness feature gate.",
    +	"schedulingGates":               "SchedulingGates is an opaque list of values that if specified will block scheduling the pod. If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the scheduler will not attempt to schedule the pod.\n\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.",
     	"resourceClaims":                "ResourceClaims defines which ResourceClaims must be allocated and reserved before the Pod is allowed to start. The resources will be made available to those containers which consume them by name.\n\nThis is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\n\nThis field is immutable.",
    +	"resources":                     "Resources is the total amount of CPU and Memory resources required by all containers in the pod. It supports specifying Requests and Limits for \"cpu\" and \"memory\" resource names only. ResourceClaims are not supported.\n\nThis field enables fine-grained control over resource allocation for the entire pod, allowing resource sharing among containers in a pod.\n\nThis is an alpha field and requires enabling the PodLevelResources feature gate.",
     }
     
     func (PodSpec) SwaggerDoc() map[string]string {
    @@ -1788,10 +1856,10 @@ var map_PodStatus = map[string]string{
     	"podIP":                      "podIP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.",
     	"podIPs":                     "podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list is empty if no IPs have been allocated yet.",
     	"startTime":                  "RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod.",
    -	"initContainerStatuses":      "The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status",
    -	"containerStatuses":          "The list has one entry per container in the manifest. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status",
    +	"initContainerStatuses":      "Statuses of init containers in this pod. The most recent successful non-restartable init container will have ready = true, the most recently started container will have startTime set. Each init container in the pod should have at most one status in this list, and all statuses should be for containers in the pod. However this is not enforced. If a status for a non-existent container is present in the list, or the list has duplicate names, the behavior of various Kubernetes components is not defined and those statuses might be ignored. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-and-container-status",
    +	"containerStatuses":          "Statuses of containers in this pod. Each container in the pod should have at most one status in this list, and all statuses should be for containers in the pod. However this is not enforced. If a status for a non-existent container is present in the list, or the list has duplicate names, the behavior of various Kubernetes components is not defined and those statuses might be ignored. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status",
     	"qosClass":                   "The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes",
    -	"ephemeralContainerStatuses": "Status for any ephemeral containers that have run in this pod.",
    +	"ephemeralContainerStatuses": "Statuses for any ephemeral containers that have run in this pod. Each ephemeral container in the pod should have at most one status in this list, and all statuses should be for containers in the pod. However this is not enforced. If a status for a non-existent container is present in the list, or the list has duplicate names, the behavior of various Kubernetes components is not defined and those statuses might be ignored. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status",
     	"resize":                     "Status of resources resize desired for pod's containers. It is empty if no resources resize is pending. Any changes to container resources will automatically set this to \"Proposed\"",
     	"resourceClaimStatuses":      "Status of resource claims.",
     }
    @@ -1841,6 +1909,7 @@ func (PodTemplateSpec) SwaggerDoc() map[string]string {
     }
     
     var map_PortStatus = map[string]string{
    +	"":         "PortStatus represents the error condition of a service port",
     	"port":     "Port is the port number of the service port of which status is recorded here",
     	"protocol": "Protocol is the protocol of the service port of which status is recorded here The supported values are: \"TCP\", \"UDP\", \"SCTP\"",
     	"error":    "Error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use\n  CamelCase names\n- cloud provider specific error values must have names that comply with the\n  format foo.example.com/CamelCase.",
    @@ -1908,10 +1977,10 @@ func (Probe) SwaggerDoc() map[string]string {
     
     var map_ProbeHandler = map[string]string{
     	"":          "ProbeHandler defines a specific action that should be taken in a probe. One and only one of the fields must be specified.",
    -	"exec":      "Exec specifies the action to take.",
    -	"httpGet":   "HTTPGet specifies the http request to perform.",
    -	"tcpSocket": "TCPSocket specifies an action involving a TCP port.",
    -	"grpc":      "GRPC specifies an action involving a GRPC port.",
    +	"exec":      "Exec specifies a command to execute in the container.",
    +	"httpGet":   "HTTPGet specifies an HTTP GET request to perform.",
    +	"tcpSocket": "TCPSocket specifies a connection to a TCP port.",
    +	"grpc":      "GRPC specifies a GRPC HealthCheckRequest.",
     }
     
     func (ProbeHandler) SwaggerDoc() map[string]string {
    @@ -1920,7 +1989,7 @@ func (ProbeHandler) SwaggerDoc() map[string]string {
     
     var map_ProjectedVolumeSource = map[string]string{
     	"":            "Represents a projected volume source",
    -	"sources":     "sources is the list of volume projections",
    +	"sources":     "sources is the list of volume projections. Each entry in this list handles one source.",
     	"defaultMode": "defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.",
     }
     
    @@ -2046,8 +2115,9 @@ func (ReplicationControllerStatus) SwaggerDoc() map[string]string {
     }
     
     var map_ResourceClaim = map[string]string{
    -	"":     "ResourceClaim references one entry in PodSpec.ResourceClaims.",
    -	"name": "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.",
    +	"":        "ResourceClaim references one entry in PodSpec.ResourceClaims.",
    +	"name":    "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.",
    +	"request": "Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.",
     }
     
     func (ResourceClaim) SwaggerDoc() map[string]string {
    @@ -2065,6 +2135,16 @@ func (ResourceFieldSelector) SwaggerDoc() map[string]string {
     	return map_ResourceFieldSelector
     }
     
    +var map_ResourceHealth = map[string]string{
    +	"":           "ResourceHealth represents the health of a resource. It has the latest device health information. This is a part of KEP https://kep.k8s.io/4680.",
    +	"resourceID": "ResourceID is the unique identifier of the resource. See the ResourceID type for more information.",
    +	"health":     "Health of the resource. can be one of:\n - Healthy: operates as normal\n - Unhealthy: reported unhealthy. We consider this a temporary health issue\n              since we do not have a mechanism today to distinguish\n              temporary and permanent issues.\n - Unknown: The status cannot be determined.\n            For example, Device Plugin got unregistered and hasn't been re-registered since.\n\nIn future we may want to introduce the PermanentlyUnhealthy Status.",
    +}
    +
    +func (ResourceHealth) SwaggerDoc() map[string]string {
    +	return map_ResourceHealth
    +}
    +
     var map_ResourceQuota = map[string]string{
     	"":         "ResourceQuota sets aggregate quota restrictions enforced per namespace",
     	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    @@ -2118,6 +2198,16 @@ func (ResourceRequirements) SwaggerDoc() map[string]string {
     	return map_ResourceRequirements
     }
     
    +var map_ResourceStatus = map[string]string{
    +	"":          "ResourceStatus represents the status of a single resource allocated to a Pod.",
    +	"name":      "Name of the resource. Must be unique within the pod and in case of non-DRA resource, match one of the resources from the pod spec. For DRA resources, the value must be \"claim:/\". When this status is reported about a container, the \"claim_name\" and \"request\" must match one of the claims of this container.",
    +	"resources": "List of unique resources health. Each element in the list contains an unique resource ID and its health. At a minimum, for the lifetime of a Pod, resource ID must uniquely identify the resource allocated to the Pod on the Node. If other Pod on the same Node reports the status with the same resource ID, it must be the same resource they share. See ResourceID type definition for a specific format it has in various use cases.",
    +}
    +
    +func (ResourceStatus) SwaggerDoc() map[string]string {
    +	return map_ResourceStatus
    +}
    +
     var map_SELinuxOptions = map[string]string{
     	"":      "SELinuxOptions are the labels to be applied to the container",
     	"user":  "User is a SELinux user label that applies to the container.",
    @@ -2281,8 +2371,9 @@ var map_SecurityContext = map[string]string{
     	"runAsNonRoot":             "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.",
     	"readOnlyRootFilesystem":   "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.",
     	"allowPrivilegeEscalation": "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.",
    -	"procMount":                "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.",
    +	"procMount":                "procMount denotes the type of proc mount to use for the containers. The default value is Default which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.",
     	"seccompProfile":           "The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.",
    +	"appArmorProfile":          "appArmorProfile is the AppArmor options to use by this container. If set, this profile overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.",
     }
     
     func (SecurityContext) SwaggerDoc() map[string]string {
    @@ -2312,7 +2403,7 @@ func (Service) SwaggerDoc() map[string]string {
     var map_ServiceAccount = map[string]string{
     	"":                             "ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets",
     	"metadata":                     "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    -	"secrets":                      "Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use. Pods are only limited to this list if this service account has a \"kubernetes.io/enforce-mountable-secrets\" annotation set to \"true\". This field should not be used to find auto-generated service account token secrets for use outside of pods. Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created. More info: https://kubernetes.io/docs/concepts/configuration/secret",
    +	"secrets":                      "Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use. Pods are only limited to this list if this service account has a \"kubernetes.io/enforce-mountable-secrets\" annotation set to \"true\". The \"kubernetes.io/enforce-mountable-secrets\" annotation is deprecated since v1.32. Prefer separate namespaces to isolate access to mounted secrets. This field should not be used to find auto-generated service account token secrets for use outside of pods. Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created. More info: https://kubernetes.io/docs/concepts/configuration/secret",
     	"imagePullSecrets":             "ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod",
     	"automountServiceAccountToken": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.",
     }
    @@ -2396,6 +2487,7 @@ var map_ServiceSpec = map[string]string{
     	"allocateLoadBalancerNodePorts": "allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer.  Default is \"true\". It may be set to \"false\" if the cluster load-balancer does not rely on NodePorts.  If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type.",
     	"loadBalancerClass":             "loadBalancerClass is the class of the load balancer implementation this Service belongs to. If specified, the value of this field must be a label-style identifier, with an optional prefix, e.g. \"internal-vip\" or \"example.com/internal-vip\". Unprefixed names are reserved for end-users. This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load balancer implementation is used, today this is typically done through the cloud provider integration, but should apply for any default implementation. If set, it is assumed that a load balancer implementation is watching for Services with a matching class. Any default load balancer implementation (e.g. cloud providers) should ignore Services that set this field. This field can only be set when creating or updating a Service to type 'LoadBalancer'. Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.",
     	"internalTrafficPolicy":         "InternalTrafficPolicy describes how nodes distribute service traffic they receive on the ClusterIP. If set to \"Local\", the proxy will assume that pods only want to talk to endpoints of the service on the same node as the pod, dropping the traffic if there are no local endpoints. The default value, \"Cluster\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features).",
    +	"trafficDistribution":           "TrafficDistribution offers a way to express preferences for how traffic is distributed to Service endpoints. Implementations can use this field as a hint, but are not required to guarantee strict adherence. If the field is not set, the implementation will apply its default routing strategy. If set to \"PreferClose\", implementations should prioritize endpoints that are topologically close (e.g., same zone). This is a beta field and requires enabling ServiceTrafficDistribution feature.",
     }
     
     func (ServiceSpec) SwaggerDoc() map[string]string {
    @@ -2548,6 +2640,7 @@ func (TypedLocalObjectReference) SwaggerDoc() map[string]string {
     }
     
     var map_TypedObjectReference = map[string]string{
    +	"":          "TypedObjectReference contains enough information to let you locate the typed referenced object",
     	"apiGroup":  "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.",
     	"kind":      "Kind is the type of resource being referenced",
     	"name":      "Name is the name of resource being referenced",
    @@ -2578,19 +2671,32 @@ func (VolumeDevice) SwaggerDoc() map[string]string {
     }
     
     var map_VolumeMount = map[string]string{
    -	"":                 "VolumeMount describes a mounting of a Volume within a container.",
    -	"name":             "This must match the Name of a Volume.",
    -	"readOnly":         "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.",
    -	"mountPath":        "Path within the container at which the volume should be mounted.  Must not contain ':'.",
    -	"subPath":          "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).",
    -	"mountPropagation": "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.",
    -	"subPathExpr":      "Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.",
    +	"":                  "VolumeMount describes a mounting of a Volume within a container.",
    +	"name":              "This must match the Name of a Volume.",
    +	"readOnly":          "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.",
    +	"recursiveReadOnly": "RecursiveReadOnly specifies whether read-only mounts should be handled recursively.\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made recursively read-only.  If this field is set to IfPossible, the mount is made recursively read-only, if it is supported by the container runtime.  If this field is set to Enabled, the mount is made recursively read-only if it is supported by the container runtime, otherwise the pod will not be started and an error will be generated to indicate the reason.\n\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to None (or be unspecified, which defaults to None).\n\nIf this field is not specified, it is treated as an equivalent of Disabled.",
    +	"mountPath":         "Path within the container at which the volume should be mounted.  Must not contain ':'.",
    +	"subPath":           "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).",
    +	"mountPropagation":  "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified (which defaults to None).",
    +	"subPathExpr":       "Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.",
     }
     
     func (VolumeMount) SwaggerDoc() map[string]string {
     	return map_VolumeMount
     }
     
    +var map_VolumeMountStatus = map[string]string{
    +	"":                  "VolumeMountStatus shows status of volume mounts.",
    +	"name":              "Name corresponds to the name of the original VolumeMount.",
    +	"mountPath":         "MountPath corresponds to the original VolumeMount.",
    +	"readOnly":          "ReadOnly corresponds to the original VolumeMount.",
    +	"recursiveReadOnly": "RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts). An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled, depending on the mount result.",
    +}
    +
    +func (VolumeMountStatus) SwaggerDoc() map[string]string {
    +	return map_VolumeMountStatus
    +}
    +
     var map_VolumeNodeAffinity = map[string]string{
     	"":         "VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.",
     	"required": "required specifies hard node constraints that must be met.",
    @@ -2601,7 +2707,7 @@ func (VolumeNodeAffinity) SwaggerDoc() map[string]string {
     }
     
     var map_VolumeProjection = map[string]string{
    -	"":                    "Projection that may be projected along with other supported volume types",
    +	"":                    "Projection that may be projected along with other supported volume types. Exactly one of these fields must be set.",
     	"secret":              "secret information about the secret data to project",
     	"downwardAPI":         "downwardAPI information about the downwardAPI data to project",
     	"configMap":           "configMap information about the configMap data to project",
    @@ -2627,33 +2733,34 @@ var map_VolumeSource = map[string]string{
     	"":                      "Represents the source of a volume to mount. Only one of its members may be specified.",
     	"hostPath":              "hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath",
     	"emptyDir":              "emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir",
    -	"gcePersistentDisk":     "gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk",
    -	"awsElasticBlockStore":  "awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore",
    -	"gitRepo":               "gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.",
    +	"gcePersistentDisk":     "gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk",
    +	"awsElasticBlockStore":  "awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore",
    +	"gitRepo":               "gitRepo represents a git repository at a particular revision. Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.",
     	"secret":                "secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret",
     	"nfs":                   "nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs",
     	"iscsi":                 "iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md",
    -	"glusterfs":             "glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md",
    +	"glusterfs":             "glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. More info: https://examples.k8s.io/volumes/glusterfs/README.md",
     	"persistentVolumeClaim": "persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims",
    -	"rbd":                   "rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md",
    -	"flexVolume":            "flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.",
    -	"cinder":                "cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md",
    -	"cephfs":                "cephFS represents a Ceph FS mount on the host that shares a pod's lifetime",
    -	"flocker":               "flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running",
    +	"rbd":                   "rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported. More info: https://examples.k8s.io/volumes/rbd/README.md",
    +	"flexVolume":            "flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.",
    +	"cinder":                "cinder represents a cinder volume attached and mounted on kubelets host machine. Deprecated: Cinder is deprecated. All operations for the in-tree cinder type are redirected to the cinder.csi.openstack.org CSI driver. More info: https://examples.k8s.io/mysql-cinder-pd/README.md",
    +	"cephfs":                "cephFS represents a Ceph FS mount on the host that shares a pod's lifetime. Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.",
    +	"flocker":               "flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running. Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.",
     	"downwardAPI":           "downwardAPI represents downward API about the pod that should populate this volume",
     	"fc":                    "fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.",
    -	"azureFile":             "azureFile represents an Azure File Service mount on the host and bind mount to the pod.",
    +	"azureFile":             "azureFile represents an Azure File Service mount on the host and bind mount to the pod. Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type are redirected to the file.csi.azure.com CSI driver.",
     	"configMap":             "configMap represents a configMap that should populate this volume",
    -	"vsphereVolume":         "vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine",
    -	"quobyte":               "quobyte represents a Quobyte mount on the host that shares a pod's lifetime",
    -	"azureDisk":             "azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.",
    -	"photonPersistentDisk":  "photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine",
    +	"vsphereVolume":         "vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine. Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type are redirected to the csi.vsphere.vmware.com CSI driver.",
    +	"quobyte":               "quobyte represents a Quobyte mount on the host that shares a pod's lifetime. Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.",
    +	"azureDisk":             "azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type are redirected to the disk.csi.azure.com CSI driver.",
    +	"photonPersistentDisk":  "photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine. Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.",
     	"projected":             "projected items for all in one resources secrets, configmaps, and downward API",
    -	"portworxVolume":        "portworxVolume represents a portworx volume attached and mounted on kubelets host machine",
    -	"scaleIO":               "scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.",
    -	"storageos":             "storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.",
    -	"csi":                   "csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).",
    +	"portworxVolume":        "portworxVolume represents a portworx volume attached and mounted on kubelets host machine. Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate is on.",
    +	"scaleIO":               "scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.",
    +	"storageos":             "storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.",
    +	"csi":                   "csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers.",
     	"ephemeral":             "ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.\n\nUse this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity\n   tracking are needed,\nc) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through\n   a PersistentVolumeClaim (see EphemeralVolumeSource for more\n   information on the connection between this volume type\n   and PersistentVolumeClaim).\n\nUse PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod.\n\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information.\n\nA pod can use both types of ephemeral volumes and persistent volumes at the same time.",
    +	"image":                 "image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. The volume is resolved at pod startup depending on which PullPolicy value is provided:\n\n- Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n\nThe volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. The volume will be mounted read-only (ro) and non-executable files (noexec). Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath). The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.",
     }
     
     func (VolumeSource) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go
    index 45172e0e2332..3f669092ef9e 100644
    --- a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go
    @@ -74,6 +74,27 @@ func (in *Affinity) DeepCopy() *Affinity {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *AppArmorProfile) DeepCopyInto(out *AppArmorProfile) {
    +	*out = *in
    +	if in.LocalhostProfile != nil {
    +		in, out := &in.LocalhostProfile, &out.LocalhostProfile
    +		*out = new(string)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppArmorProfile.
    +func (in *AppArmorProfile) DeepCopy() *AppArmorProfile {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(AppArmorProfile)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *AttachedVolume) DeepCopyInto(out *AttachedVolume) {
     	*out = *in
    @@ -419,32 +440,6 @@ func (in *CinderVolumeSource) DeepCopy() *CinderVolumeSource {
     	return out
     }
     
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ClaimSource) DeepCopyInto(out *ClaimSource) {
    -	*out = *in
    -	if in.ResourceClaimName != nil {
    -		in, out := &in.ResourceClaimName, &out.ResourceClaimName
    -		*out = new(string)
    -		**out = **in
    -	}
    -	if in.ResourceClaimTemplateName != nil {
    -		in, out := &in.ResourceClaimTemplateName, &out.ResourceClaimTemplateName
    -		*out = new(string)
    -		**out = **in
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClaimSource.
    -func (in *ClaimSource) DeepCopy() *ClaimSource {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ClaimSource)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *ClientIPConfig) DeepCopyInto(out *ClientIPConfig) {
     	*out = *in
    @@ -1041,6 +1036,25 @@ func (in *ContainerStatus) DeepCopyInto(out *ContainerStatus) {
     		*out = new(ResourceRequirements)
     		(*in).DeepCopyInto(*out)
     	}
    +	if in.VolumeMounts != nil {
    +		in, out := &in.VolumeMounts, &out.VolumeMounts
    +		*out = make([]VolumeMountStatus, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.User != nil {
    +		in, out := &in.User, &out.User
    +		*out = new(ContainerUser)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.AllocatedResourcesStatus != nil {
    +		in, out := &in.AllocatedResourcesStatus, &out.AllocatedResourcesStatus
    +		*out = make([]ResourceStatus, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
     	return
     }
     
    @@ -1054,6 +1068,27 @@ func (in *ContainerStatus) DeepCopy() *ContainerStatus {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ContainerUser) DeepCopyInto(out *ContainerUser) {
    +	*out = *in
    +	if in.Linux != nil {
    +		in, out := &in.Linux, &out.Linux
    +		*out = new(LinuxContainerUser)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerUser.
    +func (in *ContainerUser) DeepCopy() *ContainerUser {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ContainerUser)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *DaemonEndpoint) DeepCopyInto(out *DaemonEndpoint) {
     	*out = *in
    @@ -2016,6 +2051,22 @@ func (in *ISCSIVolumeSource) DeepCopy() *ISCSIVolumeSource {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ImageVolumeSource) DeepCopyInto(out *ImageVolumeSource) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageVolumeSource.
    +func (in *ImageVolumeSource) DeepCopy() *ImageVolumeSource {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ImageVolumeSource)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *KeyToPath) DeepCopyInto(out *KeyToPath) {
     	*out = *in
    @@ -2233,6 +2284,27 @@ func (in *LimitRangeSpec) DeepCopy() *LimitRangeSpec {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *LinuxContainerUser) DeepCopyInto(out *LinuxContainerUser) {
    +	*out = *in
    +	if in.SupplementalGroups != nil {
    +		in, out := &in.SupplementalGroups, &out.SupplementalGroups
    +		*out = make([]int64, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinuxContainerUser.
    +func (in *LinuxContainerUser) DeepCopy() *LinuxContainerUser {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(LinuxContainerUser)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *List) DeepCopyInto(out *List) {
     	*out = *in
    @@ -2667,6 +2739,27 @@ func (in *NodeDaemonEndpoints) DeepCopy() *NodeDaemonEndpoints {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *NodeFeatures) DeepCopyInto(out *NodeFeatures) {
    +	*out = *in
    +	if in.SupplementalGroupsPolicy != nil {
    +		in, out := &in.SupplementalGroupsPolicy, &out.SupplementalGroupsPolicy
    +		*out = new(bool)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeFeatures.
    +func (in *NodeFeatures) DeepCopy() *NodeFeatures {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(NodeFeatures)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *NodeList) DeepCopyInto(out *NodeList) {
     	*out = *in
    @@ -2726,24 +2819,48 @@ func (in *NodeProxyOptions) DeepCopyObject() runtime.Object {
     }
     
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *NodeResources) DeepCopyInto(out *NodeResources) {
    +func (in *NodeRuntimeHandler) DeepCopyInto(out *NodeRuntimeHandler) {
     	*out = *in
    -	if in.Capacity != nil {
    -		in, out := &in.Capacity, &out.Capacity
    -		*out = make(ResourceList, len(*in))
    -		for key, val := range *in {
    -			(*out)[key] = val.DeepCopy()
    -		}
    +	if in.Features != nil {
    +		in, out := &in.Features, &out.Features
    +		*out = new(NodeRuntimeHandlerFeatures)
    +		(*in).DeepCopyInto(*out)
     	}
     	return
     }
     
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeResources.
    -func (in *NodeResources) DeepCopy() *NodeResources {
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeRuntimeHandler.
    +func (in *NodeRuntimeHandler) DeepCopy() *NodeRuntimeHandler {
     	if in == nil {
     		return nil
     	}
    -	out := new(NodeResources)
    +	out := new(NodeRuntimeHandler)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *NodeRuntimeHandlerFeatures) DeepCopyInto(out *NodeRuntimeHandlerFeatures) {
    +	*out = *in
    +	if in.RecursiveReadOnlyMounts != nil {
    +		in, out := &in.RecursiveReadOnlyMounts, &out.RecursiveReadOnlyMounts
    +		*out = new(bool)
    +		**out = **in
    +	}
    +	if in.UserNamespaces != nil {
    +		in, out := &in.UserNamespaces, &out.UserNamespaces
    +		*out = new(bool)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeRuntimeHandlerFeatures.
    +func (in *NodeRuntimeHandlerFeatures) DeepCopy() *NodeRuntimeHandlerFeatures {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(NodeRuntimeHandlerFeatures)
     	in.DeepCopyInto(out)
     	return out
     }
    @@ -2908,6 +3025,18 @@ func (in *NodeStatus) DeepCopyInto(out *NodeStatus) {
     		*out = new(NodeConfigStatus)
     		(*in).DeepCopyInto(*out)
     	}
    +	if in.RuntimeHandlers != nil {
    +		in, out := &in.RuntimeHandlers, &out.RuntimeHandlers
    +		*out = make([]NodeRuntimeHandler, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.Features != nil {
    +		in, out := &in.Features, &out.Features
    +		*out = new(NodeFeatures)
    +		(*in).DeepCopyInto(*out)
    +	}
     	return
     }
     
    @@ -3806,6 +3935,11 @@ func (in *PodLogOptions) DeepCopyInto(out *PodLogOptions) {
     		*out = new(int64)
     		**out = **in
     	}
    +	if in.Stream != nil {
    +		in, out := &in.Stream, &out.Stream
    +		*out = new(string)
    +		**out = **in
    +	}
     	return
     }
     
    @@ -3917,7 +4051,16 @@ func (in *PodReadinessGate) DeepCopy() *PodReadinessGate {
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *PodResourceClaim) DeepCopyInto(out *PodResourceClaim) {
     	*out = *in
    -	in.Source.DeepCopyInto(&out.Source)
    +	if in.ResourceClaimName != nil {
    +		in, out := &in.ResourceClaimName, &out.ResourceClaimName
    +		*out = new(string)
    +		**out = **in
    +	}
    +	if in.ResourceClaimTemplateName != nil {
    +		in, out := &in.ResourceClaimTemplateName, &out.ResourceClaimTemplateName
    +		*out = new(string)
    +		**out = **in
    +	}
     	return
     }
     
    @@ -4001,6 +4144,11 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) {
     		*out = make([]int64, len(*in))
     		copy(*out, *in)
     	}
    +	if in.SupplementalGroupsPolicy != nil {
    +		in, out := &in.SupplementalGroupsPolicy, &out.SupplementalGroupsPolicy
    +		*out = new(SupplementalGroupsPolicy)
    +		**out = **in
    +	}
     	if in.FSGroup != nil {
     		in, out := &in.FSGroup, &out.FSGroup
     		*out = new(int64)
    @@ -4021,6 +4169,16 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) {
     		*out = new(SeccompProfile)
     		(*in).DeepCopyInto(*out)
     	}
    +	if in.AppArmorProfile != nil {
    +		in, out := &in.AppArmorProfile, &out.AppArmorProfile
    +		*out = new(AppArmorProfile)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.SELinuxChangePolicy != nil {
    +		in, out := &in.SELinuxChangePolicy, &out.SELinuxChangePolicy
    +		*out = new(PodSELinuxChangePolicy)
    +		**out = **in
    +	}
     	return
     }
     
    @@ -4213,6 +4371,11 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) {
     			(*in)[i].DeepCopyInto(&(*out)[i])
     		}
     	}
    +	if in.Resources != nil {
    +		in, out := &in.Resources, &out.Resources
    +		*out = new(ResourceRequirements)
    +		(*in).DeepCopyInto(*out)
    +	}
     	return
     }
     
    @@ -4841,6 +5004,22 @@ func (in *ResourceFieldSelector) DeepCopy() *ResourceFieldSelector {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceHealth) DeepCopyInto(out *ResourceHealth) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceHealth.
    +func (in *ResourceHealth) DeepCopy() *ResourceHealth {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceHealth)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in ResourceList) DeepCopyInto(out *ResourceList) {
     	{
    @@ -5022,6 +5201,27 @@ func (in *ResourceRequirements) DeepCopy() *ResourceRequirements {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceStatus) DeepCopyInto(out *ResourceStatus) {
    +	*out = *in
    +	if in.Resources != nil {
    +		in, out := &in.Resources, &out.Resources
    +		*out = make([]ResourceHealth, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceStatus.
    +func (in *ResourceStatus) DeepCopy() *ResourceStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *SELinuxOptions) DeepCopyInto(out *SELinuxOptions) {
     	*out = *in
    @@ -5411,6 +5611,11 @@ func (in *SecurityContext) DeepCopyInto(out *SecurityContext) {
     		*out = new(SeccompProfile)
     		(*in).DeepCopyInto(*out)
     	}
    +	if in.AppArmorProfile != nil {
    +		in, out := &in.AppArmorProfile, &out.AppArmorProfile
    +		*out = new(AppArmorProfile)
    +		(*in).DeepCopyInto(*out)
    +	}
     	return
     }
     
    @@ -5715,6 +5920,11 @@ func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) {
     		*out = new(ServiceInternalTrafficPolicy)
     		**out = **in
     	}
    +	if in.TrafficDistribution != nil {
    +		in, out := &in.TrafficDistribution, &out.TrafficDistribution
    +		*out = new(string)
    +		**out = **in
    +	}
     	return
     }
     
    @@ -6073,6 +6283,11 @@ func (in *VolumeDevice) DeepCopy() *VolumeDevice {
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *VolumeMount) DeepCopyInto(out *VolumeMount) {
     	*out = *in
    +	if in.RecursiveReadOnly != nil {
    +		in, out := &in.RecursiveReadOnly, &out.RecursiveReadOnly
    +		*out = new(RecursiveReadOnlyMode)
    +		**out = **in
    +	}
     	if in.MountPropagation != nil {
     		in, out := &in.MountPropagation, &out.MountPropagation
     		*out = new(MountPropagationMode)
    @@ -6091,6 +6306,27 @@ func (in *VolumeMount) DeepCopy() *VolumeMount {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *VolumeMountStatus) DeepCopyInto(out *VolumeMountStatus) {
    +	*out = *in
    +	if in.RecursiveReadOnly != nil {
    +		in, out := &in.RecursiveReadOnly, &out.RecursiveReadOnly
    +		*out = new(RecursiveReadOnlyMode)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeMountStatus.
    +func (in *VolumeMountStatus) DeepCopy() *VolumeMountStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(VolumeMountStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *VolumeNodeAffinity) DeepCopyInto(out *VolumeNodeAffinity) {
     	*out = *in
    @@ -6331,6 +6567,11 @@ func (in *VolumeSource) DeepCopyInto(out *VolumeSource) {
     		*out = new(EphemeralVolumeSource)
     		(*in).DeepCopyInto(*out)
     	}
    +	if in.Image != nil {
    +		in, out := &in.Image, &out.Image
    +		*out = new(ImageVolumeSource)
    +		**out = **in
    +	}
     	return
     }
     
    diff --git a/vendor/k8s.io/api/core/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/core/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..6710a96d1c04
    --- /dev/null
    +++ b/vendor/k8s.io/api/core/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,274 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Binding) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ConfigMap) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 2
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ConfigMapList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 2
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Endpoints) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *EndpointsList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Event) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *EventList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *LimitRange) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *LimitRangeList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *List) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Namespace) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *NamespaceList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Node) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *NodeList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *NodeProxyOptions) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 2
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PersistentVolume) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PersistentVolumeClaim) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PersistentVolumeClaimList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PersistentVolumeList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Pod) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodAttachOptions) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 1
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodExecOptions) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodLogOptions) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodPortForwardOptions) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 6
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodProxyOptions) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodStatusResult) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodTemplate) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodTemplateList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *RangeAllocation) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ReplicationController) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ReplicationControllerList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceQuota) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceQuotaList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Secret) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *SecretList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *SerializedReference) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Service) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ServiceAccount) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ServiceAccountList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ServiceList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 0
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ServiceProxyOptions) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 2
    +}
    diff --git a/vendor/k8s.io/api/discovery/v1/doc.go b/vendor/k8s.io/api/discovery/v1/doc.go
    index 96ae531ce711..01913669ffff 100644
    --- a/vendor/k8s.io/api/discovery/v1/doc.go
    +++ b/vendor/k8s.io/api/discovery/v1/doc.go
    @@ -17,6 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=discovery.k8s.io
     
     package v1 // import "k8s.io/api/discovery/v1"
    diff --git a/vendor/k8s.io/api/discovery/v1/generated.pb.go b/vendor/k8s.io/api/discovery/v1/generated.pb.go
    index 79f2cc09d8d9..5792481dc184 100644
    --- a/vendor/k8s.io/api/discovery/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/discovery/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/discovery/v1/generated.proto
    +// source: k8s.io/api/discovery/v1/generated.proto
     
     package v1
     
    @@ -49,7 +49,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Endpoint) Reset()      { *m = Endpoint{} }
     func (*Endpoint) ProtoMessage() {}
     func (*Endpoint) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3a5d310fb1396ddf, []int{0}
    +	return fileDescriptor_2237b452324cf77e, []int{0}
     }
     func (m *Endpoint) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -77,7 +77,7 @@ var xxx_messageInfo_Endpoint proto.InternalMessageInfo
     func (m *EndpointConditions) Reset()      { *m = EndpointConditions{} }
     func (*EndpointConditions) ProtoMessage() {}
     func (*EndpointConditions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3a5d310fb1396ddf, []int{1}
    +	return fileDescriptor_2237b452324cf77e, []int{1}
     }
     func (m *EndpointConditions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -105,7 +105,7 @@ var xxx_messageInfo_EndpointConditions proto.InternalMessageInfo
     func (m *EndpointHints) Reset()      { *m = EndpointHints{} }
     func (*EndpointHints) ProtoMessage() {}
     func (*EndpointHints) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3a5d310fb1396ddf, []int{2}
    +	return fileDescriptor_2237b452324cf77e, []int{2}
     }
     func (m *EndpointHints) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -133,7 +133,7 @@ var xxx_messageInfo_EndpointHints proto.InternalMessageInfo
     func (m *EndpointPort) Reset()      { *m = EndpointPort{} }
     func (*EndpointPort) ProtoMessage() {}
     func (*EndpointPort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3a5d310fb1396ddf, []int{3}
    +	return fileDescriptor_2237b452324cf77e, []int{3}
     }
     func (m *EndpointPort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -161,7 +161,7 @@ var xxx_messageInfo_EndpointPort proto.InternalMessageInfo
     func (m *EndpointSlice) Reset()      { *m = EndpointSlice{} }
     func (*EndpointSlice) ProtoMessage() {}
     func (*EndpointSlice) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3a5d310fb1396ddf, []int{4}
    +	return fileDescriptor_2237b452324cf77e, []int{4}
     }
     func (m *EndpointSlice) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -189,7 +189,7 @@ var xxx_messageInfo_EndpointSlice proto.InternalMessageInfo
     func (m *EndpointSliceList) Reset()      { *m = EndpointSliceList{} }
     func (*EndpointSliceList) ProtoMessage() {}
     func (*EndpointSliceList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3a5d310fb1396ddf, []int{5}
    +	return fileDescriptor_2237b452324cf77e, []int{5}
     }
     func (m *EndpointSliceList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -217,7 +217,7 @@ var xxx_messageInfo_EndpointSliceList proto.InternalMessageInfo
     func (m *ForZone) Reset()      { *m = ForZone{} }
     func (*ForZone) ProtoMessage() {}
     func (*ForZone) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3a5d310fb1396ddf, []int{6}
    +	return fileDescriptor_2237b452324cf77e, []int{6}
     }
     func (m *ForZone) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -254,67 +254,66 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/discovery/v1/generated.proto", fileDescriptor_3a5d310fb1396ddf)
    -}
    -
    -var fileDescriptor_3a5d310fb1396ddf = []byte{
    -	// 893 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0x4d, 0x6f, 0xe3, 0x44,
    -	0x18, 0x8e, 0x9b, 0x86, 0xda, 0x93, 0x56, 0xec, 0x8e, 0x90, 0x1a, 0x05, 0x14, 0x87, 0xa0, 0x45,
    -	0x91, 0x2a, 0x6c, 0x5a, 0x21, 0xb4, 0x20, 0x21, 0x51, 0xb3, 0x65, 0x97, 0xaf, 0x52, 0xcd, 0xf6,
    -	0xb4, 0x42, 0x5a, 0x5c, 0xfb, 0xad, 0x63, 0xd2, 0xcc, 0x58, 0x33, 0x93, 0x48, 0xe1, 0xc4, 0x85,
    -	0x33, 0xfc, 0x22, 0x8e, 0xa8, 0xc7, 0xbd, 0xb1, 0x27, 0x8b, 0x9a, 0xbf, 0xc0, 0x69, 0x4f, 0x68,
    -	0xc6, 0x9f, 0x25, 0x8d, 0xb2, 0x37, 0xcf, 0x33, 0xcf, 0xf3, 0x7e, 0x3c, 0x33, 0xf3, 0x1a, 0x7d,
    -	0x3e, 0x7d, 0x28, 0x9c, 0x98, 0xb9, 0xd3, 0xf9, 0x05, 0x70, 0x0a, 0x12, 0x84, 0xbb, 0x00, 0x1a,
    -	0x32, 0xee, 0x16, 0x1b, 0x7e, 0x12, 0xbb, 0x61, 0x2c, 0x02, 0xb6, 0x00, 0xbe, 0x74, 0x17, 0x87,
    -	0x6e, 0x04, 0x14, 0xb8, 0x2f, 0x21, 0x74, 0x12, 0xce, 0x24, 0xc3, 0xfb, 0x39, 0xd1, 0xf1, 0x93,
    -	0xd8, 0xa9, 0x88, 0xce, 0xe2, 0xb0, 0xff, 0x41, 0x14, 0xcb, 0xc9, 0xfc, 0xc2, 0x09, 0xd8, 0xcc,
    -	0x8d, 0x58, 0xc4, 0x5c, 0xcd, 0xbf, 0x98, 0x5f, 0xea, 0x95, 0x5e, 0xe8, 0xaf, 0x3c, 0x4e, 0x7f,
    -	0xd4, 0x48, 0x18, 0x30, 0x0e, 0x77, 0xe4, 0xea, 0x7f, 0x54, 0x73, 0x66, 0x7e, 0x30, 0x89, 0xa9,
    -	0xaa, 0x29, 0x99, 0x46, 0x0a, 0x10, 0xee, 0x0c, 0xa4, 0x7f, 0x97, 0xca, 0x5d, 0xa7, 0xe2, 0x73,
    -	0x2a, 0xe3, 0x19, 0xac, 0x08, 0x3e, 0xde, 0x24, 0x10, 0xc1, 0x04, 0x66, 0xfe, 0xff, 0x75, 0xa3,
    -	0x7f, 0xb7, 0x91, 0x79, 0x42, 0xc3, 0x84, 0xc5, 0x54, 0xe2, 0x03, 0x64, 0xf9, 0x61, 0xc8, 0x41,
    -	0x08, 0x10, 0x3d, 0x63, 0xd8, 0x1e, 0x5b, 0xde, 0x5e, 0x96, 0xda, 0xd6, 0x71, 0x09, 0x92, 0x7a,
    -	0x1f, 0x3f, 0x47, 0x28, 0x60, 0x34, 0x8c, 0x65, 0xcc, 0xa8, 0xe8, 0x6d, 0x0d, 0x8d, 0x71, 0xf7,
    -	0xe8, 0xc0, 0x59, 0xe3, 0xac, 0x53, 0xe6, 0xf8, 0xa2, 0x92, 0x78, 0xf8, 0x3a, 0xb5, 0x5b, 0x59,
    -	0x6a, 0xa3, 0x1a, 0x23, 0x8d, 0x90, 0x78, 0x8c, 0xcc, 0x09, 0x13, 0x92, 0xfa, 0x33, 0xe8, 0xb5,
    -	0x87, 0xc6, 0xd8, 0xf2, 0x76, 0xb3, 0xd4, 0x36, 0x9f, 0x14, 0x18, 0xa9, 0x76, 0xf1, 0x19, 0xb2,
    -	0xa4, 0xcf, 0x23, 0x90, 0x04, 0x2e, 0x7b, 0xdb, 0xba, 0x92, 0xf7, 0x9a, 0x95, 0xa8, 0xb3, 0x51,
    -	0x45, 0x7c, 0x7f, 0xf1, 0x13, 0x04, 0x8a, 0x04, 0x1c, 0x68, 0x00, 0x79, 0x73, 0xe7, 0xa5, 0x92,
    -	0xd4, 0x41, 0xf0, 0xaf, 0x06, 0xc2, 0x21, 0x24, 0x1c, 0x02, 0xe5, 0xd5, 0x39, 0x4b, 0xd8, 0x15,
    -	0x8b, 0x96, 0xbd, 0xce, 0xb0, 0x3d, 0xee, 0x1e, 0x7d, 0xb2, 0xb1, 0x4b, 0xe7, 0xd1, 0x8a, 0xf6,
    -	0x84, 0x4a, 0xbe, 0xf4, 0xfa, 0x45, 0xcf, 0x78, 0x95, 0x40, 0xee, 0x48, 0xa8, 0x3c, 0xa0, 0x2c,
    -	0x84, 0x53, 0xe5, 0xc1, 0x1b, 0xb5, 0x07, 0xa7, 0x05, 0x46, 0xaa, 0x5d, 0xfc, 0x0e, 0xda, 0xfe,
    -	0x99, 0x51, 0xe8, 0xed, 0x68, 0x96, 0x99, 0xa5, 0xf6, 0xf6, 0x33, 0x46, 0x81, 0x68, 0x14, 0x3f,
    -	0x46, 0x9d, 0x49, 0x4c, 0xa5, 0xe8, 0x99, 0xda, 0x9d, 0xf7, 0x37, 0x76, 0xf0, 0x44, 0xb1, 0x3d,
    -	0x2b, 0x4b, 0xed, 0x8e, 0xfe, 0x24, 0xb9, 0xbe, 0x7f, 0x82, 0xf6, 0xd7, 0xf4, 0x86, 0xef, 0xa1,
    -	0xf6, 0x14, 0x96, 0x3d, 0x43, 0x15, 0x40, 0xd4, 0x27, 0x7e, 0x0b, 0x75, 0x16, 0xfe, 0xd5, 0x1c,
    -	0xf4, 0xed, 0xb0, 0x48, 0xbe, 0xf8, 0x74, 0xeb, 0xa1, 0x31, 0xfa, 0xcd, 0x40, 0x78, 0xf5, 0x4a,
    -	0x60, 0x1b, 0x75, 0x38, 0xf8, 0x61, 0x1e, 0xc4, 0xcc, 0xd3, 0x13, 0x05, 0x90, 0x1c, 0xc7, 0x0f,
    -	0xd0, 0x8e, 0x00, 0xbe, 0x88, 0x69, 0xa4, 0x63, 0x9a, 0x5e, 0x37, 0x4b, 0xed, 0x9d, 0xa7, 0x39,
    -	0x44, 0xca, 0x3d, 0x7c, 0x88, 0xba, 0x12, 0xf8, 0x2c, 0xa6, 0xbe, 0x54, 0xd4, 0xb6, 0xa6, 0xbe,
    -	0x99, 0xa5, 0x76, 0xf7, 0xbc, 0x86, 0x49, 0x93, 0x33, 0x7a, 0x8e, 0xf6, 0x6e, 0xf5, 0x8e, 0x4f,
    -	0x91, 0x79, 0xc9, 0xb8, 0xf2, 0x30, 0x7f, 0x0b, 0xdd, 0xa3, 0xe1, 0x5a, 0xd7, 0xbe, 0xcc, 0x89,
    -	0xde, 0xbd, 0xe2, 0x78, 0xcd, 0x02, 0x10, 0xa4, 0x8a, 0x31, 0xfa, 0xd3, 0x40, 0xbb, 0x65, 0x86,
    -	0x33, 0xc6, 0xa5, 0x3a, 0x31, 0x7d, 0xb7, 0x8d, 0xfa, 0xc4, 0xf4, 0x99, 0x6a, 0x14, 0x3f, 0x46,
    -	0xa6, 0x7e, 0xa1, 0x01, 0xbb, 0xca, 0xed, 0xf3, 0x0e, 0x54, 0xe0, 0xb3, 0x02, 0x7b, 0x95, 0xda,
    -	0x6f, 0xaf, 0x4e, 0x1f, 0xa7, 0xdc, 0x26, 0x95, 0x58, 0xa5, 0x49, 0x18, 0x97, 0xda, 0x84, 0x4e,
    -	0x9e, 0x46, 0xa5, 0x27, 0x1a, 0x55, 0x4e, 0xf9, 0x49, 0x52, 0xca, 0xf4, 0xe3, 0xb1, 0x72, 0xa7,
    -	0x8e, 0x6b, 0x98, 0x34, 0x39, 0xa3, 0xbf, 0xb6, 0x6a, 0xab, 0x9e, 0x5e, 0xc5, 0x01, 0xe0, 0x1f,
    -	0x91, 0xa9, 0x06, 0x59, 0xe8, 0x4b, 0x5f, 0x77, 0xd3, 0x3d, 0xfa, 0xb0, 0x61, 0x55, 0x35, 0x8f,
    -	0x9c, 0x64, 0x1a, 0x29, 0x40, 0x38, 0x8a, 0x5d, 0x3f, 0xc8, 0xef, 0x40, 0xfa, 0xf5, 0x34, 0xa8,
    -	0x31, 0x52, 0x45, 0xc5, 0x8f, 0x50, 0xb7, 0x98, 0x3c, 0xe7, 0xcb, 0x04, 0x8a, 0x32, 0x47, 0x85,
    -	0xa4, 0x7b, 0x5c, 0x6f, 0xbd, 0xba, 0xbd, 0x24, 0x4d, 0x19, 0x26, 0xc8, 0x82, 0xa2, 0x70, 0x35,
    -	0xb1, 0xd4, 0x99, 0xbe, 0xbb, 0xf1, 0x25, 0x78, 0xf7, 0x8b, 0x34, 0x56, 0x89, 0x08, 0x52, 0x87,
    -	0xc1, 0x5f, 0xa3, 0x8e, 0x32, 0x52, 0xf4, 0xda, 0x3a, 0xde, 0x83, 0x8d, 0xf1, 0x94, 0xf9, 0xde,
    -	0x5e, 0x11, 0xb3, 0xa3, 0x56, 0x82, 0xe4, 0x21, 0x46, 0x7f, 0x18, 0xe8, 0xfe, 0x2d, 0x67, 0xbf,
    -	0x8d, 0x85, 0xc4, 0x3f, 0xac, 0xb8, 0xeb, 0xbc, 0x9e, 0xbb, 0x4a, 0xad, 0xbd, 0xad, 0xae, 0x65,
    -	0x89, 0x34, 0x9c, 0xfd, 0x06, 0x75, 0x62, 0x09, 0xb3, 0xd2, 0x8f, 0xcd, 0x93, 0x41, 0x17, 0x56,
    -	0x37, 0xf0, 0x95, 0x12, 0x93, 0x3c, 0xc6, 0xe8, 0x00, 0xed, 0x14, 0x37, 0x1f, 0x0f, 0x6f, 0xdd,
    -	0xee, 0xdd, 0x82, 0xde, 0xb8, 0xe1, 0xde, 0x67, 0xd7, 0x37, 0x83, 0xd6, 0x8b, 0x9b, 0x41, 0xeb,
    -	0xe5, 0xcd, 0xa0, 0xf5, 0x4b, 0x36, 0x30, 0xae, 0xb3, 0x81, 0xf1, 0x22, 0x1b, 0x18, 0x2f, 0xb3,
    -	0x81, 0xf1, 0x77, 0x36, 0x30, 0x7e, 0xff, 0x67, 0xd0, 0x7a, 0xb6, 0xbf, 0xe6, 0xa7, 0xfe, 0x5f,
    -	0x00, 0x00, 0x00, 0xff, 0xff, 0x2e, 0xd0, 0xcc, 0x2e, 0x07, 0x08, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/discovery/v1/generated.proto", fileDescriptor_2237b452324cf77e)
    +}
    +
    +var fileDescriptor_2237b452324cf77e = []byte{
    +	// 877 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0x4d, 0x6f, 0xdc, 0x44,
    +	0x18, 0x5e, 0x67, 0x63, 0x62, 0x8f, 0x13, 0xd1, 0x8e, 0x90, 0x62, 0x2d, 0xc8, 0x5e, 0x8c, 0x0a,
    +	0x2b, 0x45, 0x78, 0x49, 0x84, 0x50, 0x41, 0xe2, 0x10, 0xd3, 0xd0, 0xf2, 0x15, 0xa2, 0x69, 0x4e,
    +	0x15, 0x52, 0x71, 0xec, 0x37, 0x5e, 0x93, 0xd8, 0x63, 0x79, 0x26, 0x2b, 0x2d, 0x27, 0x2e, 0x9c,
    +	0xe1, 0x17, 0x71, 0x44, 0x39, 0xf6, 0x46, 0x4f, 0x16, 0x31, 0x7f, 0x81, 0x53, 0x4f, 0x68, 0xc6,
    +	0x9f, 0x61, 0xb3, 0xda, 0xde, 0x3c, 0xcf, 0x3c, 0xcf, 0xfb, 0xf1, 0xcc, 0xcc, 0x6b, 0xf4, 0xc1,
    +	0xc5, 0x43, 0xe6, 0xc6, 0x74, 0xea, 0x67, 0xf1, 0x34, 0x8c, 0x59, 0x40, 0xe7, 0x90, 0x2f, 0xa6,
    +	0xf3, 0xfd, 0x69, 0x04, 0x29, 0xe4, 0x3e, 0x87, 0xd0, 0xcd, 0x72, 0xca, 0x29, 0xde, 0xad, 0x88,
    +	0xae, 0x9f, 0xc5, 0x6e, 0x4b, 0x74, 0xe7, 0xfb, 0xa3, 0x0f, 0xa3, 0x98, 0xcf, 0xae, 0xce, 0xdc,
    +	0x80, 0x26, 0xd3, 0x88, 0x46, 0x74, 0x2a, 0xf9, 0x67, 0x57, 0xe7, 0x72, 0x25, 0x17, 0xf2, 0xab,
    +	0x8a, 0x33, 0x72, 0x7a, 0x09, 0x03, 0x9a, 0xc3, 0x1d, 0xb9, 0x46, 0x1f, 0x77, 0x9c, 0xc4, 0x0f,
    +	0x66, 0x71, 0x2a, 0x6a, 0xca, 0x2e, 0x22, 0x01, 0xb0, 0x69, 0x02, 0xdc, 0xbf, 0x4b, 0x35, 0x5d,
    +	0xa5, 0xca, 0xaf, 0x52, 0x1e, 0x27, 0xb0, 0x24, 0xf8, 0x64, 0x9d, 0x80, 0x05, 0x33, 0x48, 0xfc,
    +	0xff, 0xeb, 0x9c, 0x7f, 0x37, 0x91, 0x76, 0x94, 0x86, 0x19, 0x8d, 0x53, 0x8e, 0xf7, 0x90, 0xee,
    +	0x87, 0x61, 0x0e, 0x8c, 0x01, 0x33, 0x95, 0xf1, 0x70, 0xa2, 0x7b, 0x3b, 0x65, 0x61, 0xeb, 0x87,
    +	0x0d, 0x48, 0xba, 0x7d, 0xfc, 0x1c, 0xa1, 0x80, 0xa6, 0x61, 0xcc, 0x63, 0x9a, 0x32, 0x73, 0x63,
    +	0xac, 0x4c, 0x8c, 0x83, 0x3d, 0x77, 0x85, 0xb3, 0x6e, 0x93, 0xe3, 0x8b, 0x56, 0xe2, 0xe1, 0xeb,
    +	0xc2, 0x1e, 0x94, 0x85, 0x8d, 0x3a, 0x8c, 0xf4, 0x42, 0xe2, 0x09, 0xd2, 0x66, 0x94, 0xf1, 0xd4,
    +	0x4f, 0xc0, 0x1c, 0x8e, 0x95, 0x89, 0xee, 0x6d, 0x97, 0x85, 0xad, 0x3d, 0xa9, 0x31, 0xd2, 0xee,
    +	0xe2, 0x13, 0xa4, 0x73, 0x3f, 0x8f, 0x80, 0x13, 0x38, 0x37, 0x37, 0x65, 0x25, 0xef, 0xf5, 0x2b,
    +	0x11, 0x67, 0x23, 0x8a, 0xf8, 0xfe, 0xec, 0x27, 0x08, 0x04, 0x09, 0x72, 0x48, 0x03, 0xa8, 0x9a,
    +	0x3b, 0x6d, 0x94, 0xa4, 0x0b, 0x82, 0x7f, 0x55, 0x10, 0x0e, 0x21, 0xcb, 0x21, 0x10, 0x5e, 0x9d,
    +	0xd2, 0x8c, 0x5e, 0xd2, 0x68, 0x61, 0xaa, 0xe3, 0xe1, 0xc4, 0x38, 0xf8, 0x74, 0x6d, 0x97, 0xee,
    +	0xa3, 0x25, 0xed, 0x51, 0xca, 0xf3, 0x85, 0x37, 0xaa, 0x7b, 0xc6, 0xcb, 0x04, 0x72, 0x47, 0x42,
    +	0xe1, 0x41, 0x4a, 0x43, 0x38, 0x16, 0x1e, 0xbc, 0xd1, 0x79, 0x70, 0x5c, 0x63, 0xa4, 0xdd, 0xc5,
    +	0xef, 0xa0, 0xcd, 0x9f, 0x69, 0x0a, 0xe6, 0x96, 0x64, 0x69, 0x65, 0x61, 0x6f, 0x3e, 0xa3, 0x29,
    +	0x10, 0x89, 0xe2, 0xc7, 0x48, 0x9d, 0xc5, 0x29, 0x67, 0xa6, 0x26, 0xdd, 0x79, 0x7f, 0x6d, 0x07,
    +	0x4f, 0x04, 0xdb, 0xd3, 0xcb, 0xc2, 0x56, 0xe5, 0x27, 0xa9, 0xf4, 0xa3, 0x23, 0xb4, 0xbb, 0xa2,
    +	0x37, 0x7c, 0x0f, 0x0d, 0x2f, 0x60, 0x61, 0x2a, 0xa2, 0x00, 0x22, 0x3e, 0xf1, 0x5b, 0x48, 0x9d,
    +	0xfb, 0x97, 0x57, 0x20, 0x6f, 0x87, 0x4e, 0xaa, 0xc5, 0x67, 0x1b, 0x0f, 0x15, 0xe7, 0x37, 0x05,
    +	0xe1, 0xe5, 0x2b, 0x81, 0x6d, 0xa4, 0xe6, 0xe0, 0x87, 0x55, 0x10, 0xad, 0x4a, 0x4f, 0x04, 0x40,
    +	0x2a, 0x1c, 0x3f, 0x40, 0x5b, 0x0c, 0xf2, 0x79, 0x9c, 0x46, 0x32, 0xa6, 0xe6, 0x19, 0x65, 0x61,
    +	0x6f, 0x3d, 0xad, 0x20, 0xd2, 0xec, 0xe1, 0x7d, 0x64, 0x70, 0xc8, 0x93, 0x38, 0xf5, 0xb9, 0xa0,
    +	0x0e, 0x25, 0xf5, 0xcd, 0xb2, 0xb0, 0x8d, 0xd3, 0x0e, 0x26, 0x7d, 0x8e, 0xf3, 0x1c, 0xed, 0xdc,
    +	0xea, 0x1d, 0x1f, 0x23, 0xed, 0x9c, 0xe6, 0xc2, 0xc3, 0xea, 0x2d, 0x18, 0x07, 0xe3, 0x95, 0xae,
    +	0x7d, 0x59, 0x11, 0xbd, 0x7b, 0xf5, 0xf1, 0x6a, 0x35, 0xc0, 0x48, 0x1b, 0xc3, 0xf9, 0x53, 0x41,
    +	0xdb, 0x4d, 0x86, 0x13, 0x9a, 0x73, 0x71, 0x62, 0xf2, 0x6e, 0x2b, 0xdd, 0x89, 0xc9, 0x33, 0x95,
    +	0x28, 0x7e, 0x8c, 0x34, 0xf9, 0x42, 0x03, 0x7a, 0x59, 0xd9, 0xe7, 0xed, 0x89, 0xc0, 0x27, 0x35,
    +	0xf6, 0xaa, 0xb0, 0xdf, 0x5e, 0x9e, 0x3e, 0x6e, 0xb3, 0x4d, 0x5a, 0xb1, 0x48, 0x93, 0xd1, 0x9c,
    +	0x4b, 0x13, 0xd4, 0x2a, 0x8d, 0x48, 0x4f, 0x24, 0x2a, 0x9c, 0xf2, 0xb3, 0xac, 0x91, 0xc9, 0xc7,
    +	0xa3, 0x57, 0x4e, 0x1d, 0x76, 0x30, 0xe9, 0x73, 0x9c, 0xbf, 0x36, 0x3a, 0xab, 0x9e, 0x5e, 0xc6,
    +	0x01, 0xe0, 0x1f, 0x91, 0x26, 0x06, 0x59, 0xe8, 0x73, 0x5f, 0x76, 0x63, 0x1c, 0x7c, 0xd4, 0xb3,
    +	0xaa, 0x9d, 0x47, 0x6e, 0x76, 0x11, 0x09, 0x80, 0xb9, 0x82, 0xdd, 0x3d, 0xc8, 0xef, 0x80, 0xfb,
    +	0xdd, 0x34, 0xe8, 0x30, 0xd2, 0x46, 0xc5, 0x8f, 0x90, 0x51, 0x4f, 0x9e, 0xd3, 0x45, 0x06, 0x75,
    +	0x99, 0x4e, 0x2d, 0x31, 0x0e, 0xbb, 0xad, 0x57, 0xb7, 0x97, 0xa4, 0x2f, 0xc3, 0x04, 0xe9, 0x50,
    +	0x17, 0x2e, 0x26, 0x96, 0x38, 0xd3, 0x77, 0xd7, 0xbe, 0x04, 0xef, 0x7e, 0x9d, 0x46, 0x6f, 0x10,
    +	0x46, 0xba, 0x30, 0xf8, 0x6b, 0xa4, 0x0a, 0x23, 0x99, 0x39, 0x94, 0xf1, 0x1e, 0xac, 0x8d, 0x27,
    +	0xcc, 0xf7, 0x76, 0xea, 0x98, 0xaa, 0x58, 0x31, 0x52, 0x85, 0x70, 0xfe, 0x50, 0xd0, 0xfd, 0x5b,
    +	0xce, 0x7e, 0x1b, 0x33, 0x8e, 0x7f, 0x58, 0x72, 0xd7, 0x7d, 0x3d, 0x77, 0x85, 0x5a, 0x7a, 0xdb,
    +	0x5e, 0xcb, 0x06, 0xe9, 0x39, 0xfb, 0x0d, 0x52, 0x63, 0x0e, 0x49, 0xe3, 0xc7, 0xfa, 0xc9, 0x20,
    +	0x0b, 0xeb, 0x1a, 0xf8, 0x4a, 0x88, 0x49, 0x15, 0xc3, 0xd9, 0x43, 0x5b, 0xf5, 0xcd, 0xc7, 0xe3,
    +	0x5b, 0xb7, 0x7b, 0xbb, 0xa6, 0xf7, 0x6e, 0xb8, 0xf7, 0xf9, 0xf5, 0x8d, 0x35, 0x78, 0x71, 0x63,
    +	0x0d, 0x5e, 0xde, 0x58, 0x83, 0x5f, 0x4a, 0x4b, 0xb9, 0x2e, 0x2d, 0xe5, 0x45, 0x69, 0x29, 0x2f,
    +	0x4b, 0x4b, 0xf9, 0xbb, 0xb4, 0x94, 0xdf, 0xff, 0xb1, 0x06, 0xcf, 0x76, 0x57, 0xfc, 0xd4, 0xff,
    +	0x0b, 0x00, 0x00, 0xff, 0xff, 0x76, 0x4b, 0x26, 0xe3, 0xee, 0x07, 0x00, 0x00,
     }
     
     func (m *Endpoint) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/discovery/v1/generated.proto b/vendor/k8s.io/api/discovery/v1/generated.proto
    index 6d234017b72f..8ddf0dc5d3ef 100644
    --- a/vendor/k8s.io/api/discovery/v1/generated.proto
    +++ b/vendor/k8s.io/api/discovery/v1/generated.proto
    @@ -54,7 +54,7 @@ message Endpoint {
       // targetRef is a reference to a Kubernetes object that represents this
       // endpoint.
       // +optional
    -  optional k8s.io.api.core.v1.ObjectReference targetRef = 4;
    +  optional .k8s.io.api.core.v1.ObjectReference targetRef = 4;
     
       // deprecatedTopology contains topology information part of the v1beta1
       // API. This field is deprecated, and will be removed when the v1beta1
    @@ -161,7 +161,7 @@ message EndpointPort {
     message EndpointSlice {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // addressType specifies the type of address carried by this EndpointSlice.
       // All addresses in this slice must be the same type. This field is
    @@ -191,7 +191,7 @@ message EndpointSlice {
     message EndpointSliceList {
       // Standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of endpoint slices
       repeated EndpointSlice items = 2;
    diff --git a/vendor/k8s.io/api/discovery/v1/types.go b/vendor/k8s.io/api/discovery/v1/types.go
    index 7ebb07ca3592..d6a9d0fcedb7 100644
    --- a/vendor/k8s.io/api/discovery/v1/types.go
    +++ b/vendor/k8s.io/api/discovery/v1/types.go
    @@ -23,6 +23,7 @@ import (
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.21
     
     // EndpointSlice represents a subset of the endpoints that implement a service.
     // For a given service there may be multiple EndpointSlice objects, selected by
    @@ -206,6 +207,7 @@ type EndpointPort struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.21
     
     // EndpointSliceList represents a list of endpoint slices
     type EndpointSliceList struct {
    diff --git a/vendor/k8s.io/api/discovery/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/discovery/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..362867c5b90f
    --- /dev/null
    +++ b/vendor/k8s.io/api/discovery/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,34 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *EndpointSlice) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 21
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *EndpointSliceList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 21
    +}
    diff --git a/vendor/k8s.io/api/discovery/v1beta1/generated.pb.go b/vendor/k8s.io/api/discovery/v1beta1/generated.pb.go
    index fcb9136e7429..46935574bf63 100644
    --- a/vendor/k8s.io/api/discovery/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/discovery/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/discovery/v1beta1/generated.proto
    +// source: k8s.io/api/discovery/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -49,7 +49,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Endpoint) Reset()      { *m = Endpoint{} }
     func (*Endpoint) ProtoMessage() {}
     func (*Endpoint) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ece80bbc872d519b, []int{0}
    +	return fileDescriptor_6555bad15de200e0, []int{0}
     }
     func (m *Endpoint) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -77,7 +77,7 @@ var xxx_messageInfo_Endpoint proto.InternalMessageInfo
     func (m *EndpointConditions) Reset()      { *m = EndpointConditions{} }
     func (*EndpointConditions) ProtoMessage() {}
     func (*EndpointConditions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ece80bbc872d519b, []int{1}
    +	return fileDescriptor_6555bad15de200e0, []int{1}
     }
     func (m *EndpointConditions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -105,7 +105,7 @@ var xxx_messageInfo_EndpointConditions proto.InternalMessageInfo
     func (m *EndpointHints) Reset()      { *m = EndpointHints{} }
     func (*EndpointHints) ProtoMessage() {}
     func (*EndpointHints) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ece80bbc872d519b, []int{2}
    +	return fileDescriptor_6555bad15de200e0, []int{2}
     }
     func (m *EndpointHints) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -133,7 +133,7 @@ var xxx_messageInfo_EndpointHints proto.InternalMessageInfo
     func (m *EndpointPort) Reset()      { *m = EndpointPort{} }
     func (*EndpointPort) ProtoMessage() {}
     func (*EndpointPort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ece80bbc872d519b, []int{3}
    +	return fileDescriptor_6555bad15de200e0, []int{3}
     }
     func (m *EndpointPort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -161,7 +161,7 @@ var xxx_messageInfo_EndpointPort proto.InternalMessageInfo
     func (m *EndpointSlice) Reset()      { *m = EndpointSlice{} }
     func (*EndpointSlice) ProtoMessage() {}
     func (*EndpointSlice) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ece80bbc872d519b, []int{4}
    +	return fileDescriptor_6555bad15de200e0, []int{4}
     }
     func (m *EndpointSlice) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -189,7 +189,7 @@ var xxx_messageInfo_EndpointSlice proto.InternalMessageInfo
     func (m *EndpointSliceList) Reset()      { *m = EndpointSliceList{} }
     func (*EndpointSliceList) ProtoMessage() {}
     func (*EndpointSliceList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ece80bbc872d519b, []int{5}
    +	return fileDescriptor_6555bad15de200e0, []int{5}
     }
     func (m *EndpointSliceList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -217,7 +217,7 @@ var xxx_messageInfo_EndpointSliceList proto.InternalMessageInfo
     func (m *ForZone) Reset()      { *m = ForZone{} }
     func (*ForZone) ProtoMessage() {}
     func (*ForZone) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ece80bbc872d519b, []int{6}
    +	return fileDescriptor_6555bad15de200e0, []int{6}
     }
     func (m *ForZone) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -254,66 +254,65 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/discovery/v1beta1/generated.proto", fileDescriptor_ece80bbc872d519b)
    -}
    -
    -var fileDescriptor_ece80bbc872d519b = []byte{
    -	// 871 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0x41, 0x6f, 0xe3, 0x44,
    -	0x14, 0x8e, 0x9b, 0x86, 0xda, 0x93, 0x56, 0xec, 0x8e, 0x38, 0x44, 0xa5, 0xb2, 0x23, 0xa3, 0x45,
    -	0x11, 0x15, 0x36, 0xad, 0x56, 0x68, 0x05, 0xa7, 0x1a, 0x0a, 0x8b, 0xb4, 0xec, 0x56, 0xd3, 0x4a,
    -	0x48, 0x2b, 0x0e, 0x4c, 0xec, 0xa9, 0x63, 0xd2, 0xcc, 0x58, 0x33, 0x93, 0x48, 0xb9, 0xf1, 0x0f,
    -	0xe0, 0xb7, 0xf0, 0x17, 0x90, 0x50, 0x8f, 0x7b, 0xdc, 0x93, 0x45, 0xcd, 0xbf, 0xe8, 0x09, 0xcd,
    -	0x78, 0x6c, 0x27, 0x04, 0xba, 0xb9, 0x79, 0xbe, 0x79, 0xdf, 0xf7, 0xde, 0xfb, 0xde, 0xcc, 0x18,
    -	0x9c, 0x4f, 0x9f, 0x89, 0x20, 0x63, 0xe1, 0x74, 0x3e, 0x26, 0x9c, 0x12, 0x49, 0x44, 0xb8, 0x20,
    -	0x34, 0x61, 0x3c, 0x34, 0x1b, 0x38, 0xcf, 0xc2, 0x24, 0x13, 0x31, 0x5b, 0x10, 0xbe, 0x0c, 0x17,
    -	0x27, 0x63, 0x22, 0xf1, 0x49, 0x98, 0x12, 0x4a, 0x38, 0x96, 0x24, 0x09, 0x72, 0xce, 0x24, 0x83,
    -	0x47, 0x55, 0x74, 0x80, 0xf3, 0x2c, 0x68, 0xa2, 0x03, 0x13, 0x7d, 0xf8, 0x69, 0x9a, 0xc9, 0xc9,
    -	0x7c, 0x1c, 0xc4, 0x6c, 0x16, 0xa6, 0x2c, 0x65, 0xa1, 0x26, 0x8d, 0xe7, 0xd7, 0x7a, 0xa5, 0x17,
    -	0xfa, 0xab, 0x12, 0x3b, 0xf4, 0x57, 0x52, 0xc7, 0x8c, 0x93, 0x70, 0xb1, 0x91, 0xf0, 0xf0, 0x69,
    -	0x1b, 0x33, 0xc3, 0xf1, 0x24, 0xa3, 0xaa, 0xba, 0x7c, 0x9a, 0x2a, 0x40, 0x84, 0x33, 0x22, 0xf1,
    -	0x7f, 0xb1, 0xc2, 0xff, 0x63, 0xf1, 0x39, 0x95, 0xd9, 0x8c, 0x6c, 0x10, 0x3e, 0x7f, 0x17, 0x41,
    -	0xc4, 0x13, 0x32, 0xc3, 0xff, 0xe6, 0xf9, 0xbf, 0xef, 0x02, 0xfb, 0x9c, 0x26, 0x39, 0xcb, 0xa8,
    -	0x84, 0xc7, 0xc0, 0xc1, 0x49, 0xc2, 0x89, 0x10, 0x44, 0x0c, 0xac, 0x61, 0x77, 0xe4, 0x44, 0x07,
    -	0x65, 0xe1, 0x39, 0x67, 0x35, 0x88, 0xda, 0x7d, 0x98, 0x00, 0x10, 0x33, 0x9a, 0x64, 0x32, 0x63,
    -	0x54, 0x0c, 0x76, 0x86, 0xd6, 0xa8, 0x7f, 0xfa, 0x59, 0xf0, 0x90, 0xbd, 0x41, 0x9d, 0xe8, 0xab,
    -	0x86, 0x17, 0xc1, 0xdb, 0xc2, 0xeb, 0x94, 0x85, 0x07, 0x5a, 0x0c, 0xad, 0xe8, 0xc2, 0x11, 0xb0,
    -	0x27, 0x4c, 0x48, 0x8a, 0x67, 0x64, 0xd0, 0x1d, 0x5a, 0x23, 0x27, 0xda, 0x2f, 0x0b, 0xcf, 0x7e,
    -	0x6e, 0x30, 0xd4, 0xec, 0xc2, 0x0b, 0xe0, 0x48, 0xcc, 0x53, 0x22, 0x11, 0xb9, 0x1e, 0xec, 0xea,
    -	0x72, 0x3e, 0x5a, 0x2d, 0x47, 0x0d, 0x28, 0x58, 0x9c, 0x04, 0xaf, 0xc6, 0x3f, 0x93, 0x58, 0x05,
    -	0x11, 0x4e, 0x68, 0x4c, 0xaa, 0x0e, 0xaf, 0x6a, 0x26, 0x6a, 0x45, 0xe0, 0x18, 0xd8, 0x92, 0xe5,
    -	0xec, 0x86, 0xa5, 0xcb, 0x41, 0x6f, 0xd8, 0x1d, 0xf5, 0x4f, 0x9f, 0x6e, 0xd7, 0x5f, 0x70, 0x65,
    -	0x68, 0xe7, 0x54, 0xf2, 0x65, 0xf4, 0xc8, 0xf4, 0x68, 0xd7, 0x30, 0x6a, 0x74, 0x55, 0x7f, 0x94,
    -	0x25, 0xe4, 0xa5, 0xea, 0xef, 0xbd, 0xb6, 0xbf, 0x97, 0x06, 0x43, 0xcd, 0x2e, 0x7c, 0x01, 0x7a,
    -	0x93, 0x8c, 0x4a, 0x31, 0xd8, 0xd3, 0xbd, 0x1d, 0x6f, 0x57, 0xca, 0x73, 0x45, 0x89, 0x9c, 0xb2,
    -	0xf0, 0x7a, 0xfa, 0x13, 0x55, 0x22, 0x87, 0x5f, 0x82, 0x83, 0xb5, 0x22, 0xe1, 0x23, 0xd0, 0x9d,
    -	0x92, 0xe5, 0xc0, 0x52, 0x35, 0x20, 0xf5, 0x09, 0x3f, 0x00, 0xbd, 0x05, 0xbe, 0x99, 0x13, 0x3d,
    -	0x5b, 0x07, 0x55, 0x8b, 0x2f, 0x76, 0x9e, 0x59, 0xfe, 0xaf, 0x16, 0x80, 0x9b, 0xb3, 0x84, 0x1e,
    -	0xe8, 0x71, 0x82, 0x93, 0x4a, 0xc4, 0xae, 0x92, 0x22, 0x05, 0xa0, 0x0a, 0x87, 0x4f, 0xc0, 0x9e,
    -	0x20, 0x7c, 0x91, 0xd1, 0x54, 0x6b, 0xda, 0x51, 0xbf, 0x2c, 0xbc, 0xbd, 0xcb, 0x0a, 0x42, 0xf5,
    -	0x1e, 0x3c, 0x01, 0x7d, 0x49, 0xf8, 0x2c, 0xa3, 0x58, 0xaa, 0xd0, 0xae, 0x0e, 0x7d, 0xbf, 0x2c,
    -	0xbc, 0xfe, 0x55, 0x0b, 0xa3, 0xd5, 0x18, 0x3f, 0x01, 0x07, 0x6b, 0x1d, 0xc3, 0x4b, 0x60, 0x5f,
    -	0x33, 0xfe, 0x9a, 0x51, 0x73, 0x92, 0xfb, 0xa7, 0x4f, 0x1e, 0x36, 0xec, 0x9b, 0x2a, 0xba, 0x1d,
    -	0x96, 0x01, 0x04, 0x6a, 0x84, 0xfc, 0x3f, 0x2d, 0xb0, 0x5f, 0xa7, 0xb9, 0x60, 0x5c, 0xc2, 0x23,
    -	0xb0, 0xab, 0x4f, 0xa6, 0x76, 0x2d, 0xb2, 0xcb, 0xc2, 0xdb, 0xd5, 0x53, 0xd3, 0x28, 0xfc, 0x16,
    -	0xd8, 0xfa, 0x92, 0xc5, 0xec, 0xa6, 0xf2, 0x30, 0x3a, 0x56, 0xc2, 0x17, 0x06, 0xbb, 0x2f, 0xbc,
    -	0x0f, 0x37, 0x1f, 0x90, 0xa0, 0xde, 0x46, 0x0d, 0x59, 0xa5, 0xc9, 0x19, 0x97, 0xda, 0x89, 0x5e,
    -	0x95, 0x46, 0xa5, 0x47, 0x1a, 0x55, 0x76, 0xe1, 0x3c, 0xaf, 0x69, 0xfa, 0xe8, 0x3b, 0x95, 0x5d,
    -	0x67, 0x2d, 0x8c, 0x56, 0x63, 0xfc, 0xbb, 0x9d, 0xd6, 0xaf, 0xcb, 0x9b, 0x2c, 0x26, 0xf0, 0x27,
    -	0x60, 0xab, 0xb7, 0x28, 0xc1, 0x12, 0xeb, 0x6e, 0xd6, 0xef, 0x72, 0xf3, 0xa4, 0x04, 0xf9, 0x34,
    -	0x55, 0x80, 0x08, 0x54, 0x74, 0x7b, 0x9d, 0xbe, 0x27, 0x12, 0xb7, 0x77, 0xb9, 0xc5, 0x50, 0xa3,
    -	0x0a, 0xbf, 0x06, 0x7d, 0xf3, 0x78, 0x5c, 0x2d, 0x73, 0x62, 0xca, 0xf4, 0x0d, 0xa5, 0x7f, 0xd6,
    -	0x6e, 0xdd, 0xaf, 0x2f, 0xd1, 0x2a, 0x0d, 0xfe, 0x00, 0x1c, 0x62, 0x0a, 0x57, 0x8f, 0x8e, 0x1a,
    -	0xec, 0xc7, 0xdb, 0xdd, 0x84, 0xe8, 0xb1, 0xc9, 0xe5, 0xd4, 0x88, 0x40, 0xad, 0x16, 0x7c, 0x05,
    -	0x7a, 0xca, 0x4d, 0x31, 0xe8, 0x6a, 0xd1, 0x4f, 0xb6, 0x13, 0x55, 0x63, 0x88, 0x0e, 0x8c, 0x70,
    -	0x4f, 0xad, 0x04, 0xaa, 0x74, 0xfc, 0x3f, 0x2c, 0xf0, 0x78, 0xcd, 0xe3, 0x17, 0x99, 0x90, 0xf0,
    -	0xc7, 0x0d, 0x9f, 0x83, 0xed, 0x7c, 0x56, 0x6c, 0xed, 0x72, 0x73, 0x40, 0x6b, 0x64, 0xc5, 0xe3,
    -	0x0b, 0xd0, 0xcb, 0x24, 0x99, 0xd5, 0xce, 0x6c, 0xf9, 0x46, 0xe8, 0xea, 0xda, 0x2e, 0xbe, 0x53,
    -	0x0a, 0xa8, 0x12, 0xf2, 0x8f, 0xc1, 0x9e, 0xb9, 0x08, 0x70, 0xb8, 0x76, 0xd8, 0xf7, 0x4d, 0xf8,
    -	0xca, 0x81, 0x8f, 0xa2, 0xdb, 0x3b, 0xb7, 0xf3, 0xe6, 0xce, 0xed, 0xbc, 0xbd, 0x73, 0x3b, 0xbf,
    -	0x94, 0xae, 0x75, 0x5b, 0xba, 0xd6, 0x9b, 0xd2, 0xb5, 0xde, 0x96, 0xae, 0xf5, 0x57, 0xe9, 0x5a,
    -	0xbf, 0xfd, 0xed, 0x76, 0x5e, 0x1f, 0x3d, 0xf4, 0xc3, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0xd2,
    -	0xeb, 0x52, 0x19, 0xe8, 0x07, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/discovery/v1beta1/generated.proto", fileDescriptor_6555bad15de200e0)
    +}
    +
    +var fileDescriptor_6555bad15de200e0 = []byte{
    +	// 857 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0x4f, 0x6f, 0xe4, 0x34,
    +	0x14, 0x9f, 0x74, 0x1a, 0x9a, 0x78, 0x5a, 0xb1, 0x6b, 0x71, 0x18, 0x95, 0x2a, 0x19, 0x05, 0x2d,
    +	0x1a, 0x51, 0x48, 0x68, 0xb5, 0x42, 0x2b, 0x38, 0x35, 0xb0, 0xb0, 0x48, 0xcb, 0x6e, 0xe5, 0x56,
    +	0x42, 0x5a, 0x71, 0xc0, 0x93, 0xb8, 0x19, 0xd3, 0x26, 0x8e, 0x62, 0x77, 0xa4, 0xb9, 0xf1, 0x0d,
    +	0xe0, 0xb3, 0xf0, 0x15, 0x90, 0x50, 0x8f, 0x7b, 0xdc, 0x53, 0xc4, 0x84, 0x6f, 0xb1, 0x27, 0x64,
    +	0xc7, 0xf9, 0x33, 0x0c, 0x94, 0xb9, 0xc5, 0x3f, 0xbf, 0xdf, 0xef, 0xbd, 0xf7, 0x7b, 0xb6, 0x03,
    +	0x3e, 0xbe, 0x7e, 0xc2, 0x7d, 0xca, 0x02, 0x9c, 0xd3, 0x20, 0xa6, 0x3c, 0x62, 0x0b, 0x52, 0x2c,
    +	0x83, 0xc5, 0xc9, 0x8c, 0x08, 0x7c, 0x12, 0x24, 0x24, 0x23, 0x05, 0x16, 0x24, 0xf6, 0xf3, 0x82,
    +	0x09, 0x06, 0x8f, 0xea, 0x68, 0x1f, 0xe7, 0xd4, 0x6f, 0xa3, 0x7d, 0x1d, 0x7d, 0xf8, 0x49, 0x42,
    +	0xc5, 0xfc, 0x76, 0xe6, 0x47, 0x2c, 0x0d, 0x12, 0x96, 0xb0, 0x40, 0x91, 0x66, 0xb7, 0x57, 0x6a,
    +	0xa5, 0x16, 0xea, 0xab, 0x16, 0x3b, 0xf4, 0x7a, 0xa9, 0x23, 0x56, 0x90, 0x60, 0xb1, 0x91, 0xf0,
    +	0xf0, 0x71, 0x17, 0x93, 0xe2, 0x68, 0x4e, 0x33, 0x59, 0x5d, 0x7e, 0x9d, 0x48, 0x80, 0x07, 0x29,
    +	0x11, 0xf8, 0xdf, 0x58, 0xc1, 0x7f, 0xb1, 0x8a, 0xdb, 0x4c, 0xd0, 0x94, 0x6c, 0x10, 0x3e, 0xfb,
    +	0x3f, 0x02, 0x8f, 0xe6, 0x24, 0xc5, 0xff, 0xe4, 0x79, 0xbf, 0xed, 0x02, 0xeb, 0x69, 0x16, 0xe7,
    +	0x8c, 0x66, 0x02, 0x1e, 0x03, 0x1b, 0xc7, 0x71, 0x41, 0x38, 0x27, 0x7c, 0x6c, 0x4c, 0x86, 0x53,
    +	0x3b, 0x3c, 0xa8, 0x4a, 0xd7, 0x3e, 0x6b, 0x40, 0xd4, 0xed, 0xc3, 0x18, 0x80, 0x88, 0x65, 0x31,
    +	0x15, 0x94, 0x65, 0x7c, 0xbc, 0x33, 0x31, 0xa6, 0xa3, 0xd3, 0x4f, 0xfd, 0xfb, 0xec, 0xf5, 0x9b,
    +	0x44, 0x5f, 0xb6, 0xbc, 0x10, 0xde, 0x95, 0xee, 0xa0, 0x2a, 0x5d, 0xd0, 0x61, 0xa8, 0xa7, 0x0b,
    +	0xa7, 0xc0, 0x9a, 0x33, 0x2e, 0x32, 0x9c, 0x92, 0xf1, 0x70, 0x62, 0x4c, 0xed, 0x70, 0xbf, 0x2a,
    +	0x5d, 0xeb, 0x99, 0xc6, 0x50, 0xbb, 0x0b, 0xcf, 0x81, 0x2d, 0x70, 0x91, 0x10, 0x81, 0xc8, 0xd5,
    +	0x78, 0x57, 0x95, 0xf3, 0x41, 0xbf, 0x1c, 0x39, 0x20, 0x7f, 0x71, 0xe2, 0xbf, 0x9c, 0xfd, 0x44,
    +	0x22, 0x19, 0x44, 0x0a, 0x92, 0x45, 0xa4, 0xee, 0xf0, 0xb2, 0x61, 0xa2, 0x4e, 0x04, 0xce, 0x80,
    +	0x25, 0x58, 0xce, 0x6e, 0x58, 0xb2, 0x1c, 0x9b, 0x93, 0xe1, 0x74, 0x74, 0xfa, 0x78, 0xbb, 0xfe,
    +	0xfc, 0x4b, 0x4d, 0x7b, 0x9a, 0x89, 0x62, 0x19, 0x3e, 0xd0, 0x3d, 0x5a, 0x0d, 0x8c, 0x5a, 0x5d,
    +	0xd9, 0x5f, 0xc6, 0x62, 0xf2, 0x42, 0xf6, 0xf7, 0x4e, 0xd7, 0xdf, 0x0b, 0x8d, 0xa1, 0x76, 0x17,
    +	0x3e, 0x07, 0xe6, 0x9c, 0x66, 0x82, 0x8f, 0xf7, 0x54, 0x6f, 0xc7, 0xdb, 0x95, 0xf2, 0x4c, 0x52,
    +	0x42, 0xbb, 0x2a, 0x5d, 0x53, 0x7d, 0xa2, 0x5a, 0xe4, 0xf0, 0x0b, 0x70, 0xb0, 0x56, 0x24, 0x7c,
    +	0x00, 0x86, 0xd7, 0x64, 0x39, 0x36, 0x64, 0x0d, 0x48, 0x7e, 0xc2, 0xf7, 0x80, 0xb9, 0xc0, 0x37,
    +	0xb7, 0x44, 0xcd, 0xd6, 0x46, 0xf5, 0xe2, 0xf3, 0x9d, 0x27, 0x86, 0xf7, 0x8b, 0x01, 0xe0, 0xe6,
    +	0x2c, 0xa1, 0x0b, 0xcc, 0x82, 0xe0, 0xb8, 0x16, 0xb1, 0xea, 0xa4, 0x48, 0x02, 0xa8, 0xc6, 0xe1,
    +	0x23, 0xb0, 0xc7, 0x49, 0xb1, 0xa0, 0x59, 0xa2, 0x34, 0xad, 0x70, 0x54, 0x95, 0xee, 0xde, 0x45,
    +	0x0d, 0xa1, 0x66, 0x0f, 0x9e, 0x80, 0x91, 0x20, 0x45, 0x4a, 0x33, 0x2c, 0x64, 0xe8, 0x50, 0x85,
    +	0xbe, 0x5b, 0x95, 0xee, 0xe8, 0xb2, 0x83, 0x51, 0x3f, 0xc6, 0x8b, 0xc1, 0xc1, 0x5a, 0xc7, 0xf0,
    +	0x02, 0x58, 0x57, 0xac, 0x78, 0xc5, 0x32, 0x7d, 0x92, 0x47, 0xa7, 0x8f, 0xee, 0x37, 0xec, 0xeb,
    +	0x3a, 0xba, 0x1b, 0x96, 0x06, 0x38, 0x6a, 0x85, 0xbc, 0x3f, 0x0c, 0xb0, 0xdf, 0xa4, 0x39, 0x67,
    +	0x85, 0x80, 0x47, 0x60, 0x57, 0x9d, 0x4c, 0xe5, 0x5a, 0x68, 0x55, 0xa5, 0xbb, 0xab, 0xa6, 0xa6,
    +	0x50, 0xf8, 0x0d, 0xb0, 0xd4, 0x25, 0x8b, 0xd8, 0x4d, 0xed, 0x61, 0x78, 0x2c, 0x85, 0xcf, 0x35,
    +	0xf6, 0xb6, 0x74, 0xdf, 0xdf, 0x7c, 0x40, 0xfc, 0x66, 0x1b, 0xb5, 0x64, 0x99, 0x26, 0x67, 0x85,
    +	0x50, 0x4e, 0x98, 0x75, 0x1a, 0x99, 0x1e, 0x29, 0x54, 0xda, 0x85, 0xf3, 0xbc, 0xa1, 0xa9, 0xa3,
    +	0x6f, 0xd7, 0x76, 0x9d, 0x75, 0x30, 0xea, 0xc7, 0x78, 0xab, 0x9d, 0xce, 0xaf, 0x8b, 0x1b, 0x1a,
    +	0x11, 0xf8, 0x23, 0xb0, 0xe4, 0x5b, 0x14, 0x63, 0x81, 0x55, 0x37, 0xeb, 0x77, 0xb9, 0x7d, 0x52,
    +	0xfc, 0xfc, 0x3a, 0x91, 0x00, 0xf7, 0x65, 0x74, 0x77, 0x9d, 0xbe, 0x23, 0x02, 0x77, 0x77, 0xb9,
    +	0xc3, 0x50, 0xab, 0x0a, 0xbf, 0x02, 0x23, 0xfd, 0x78, 0x5c, 0x2e, 0x73, 0xa2, 0xcb, 0xf4, 0x34,
    +	0x65, 0x74, 0xd6, 0x6d, 0xbd, 0x5d, 0x5f, 0xa2, 0x3e, 0x0d, 0x7e, 0x0f, 0x6c, 0xa2, 0x0b, 0x97,
    +	0x8f, 0x8e, 0x1c, 0xec, 0x87, 0xdb, 0xdd, 0x84, 0xf0, 0xa1, 0xce, 0x65, 0x37, 0x08, 0x47, 0x9d,
    +	0x16, 0x7c, 0x09, 0x4c, 0xe9, 0x26, 0x1f, 0x0f, 0x95, 0xe8, 0x47, 0xdb, 0x89, 0xca, 0x31, 0x84,
    +	0x07, 0x5a, 0xd8, 0x94, 0x2b, 0x8e, 0x6a, 0x1d, 0xef, 0x77, 0x03, 0x3c, 0x5c, 0xf3, 0xf8, 0x39,
    +	0xe5, 0x02, 0xfe, 0xb0, 0xe1, 0xb3, 0xbf, 0x9d, 0xcf, 0x92, 0xad, 0x5c, 0x6e, 0x0f, 0x68, 0x83,
    +	0xf4, 0x3c, 0x3e, 0x07, 0x26, 0x15, 0x24, 0x6d, 0x9c, 0xd9, 0xf2, 0x8d, 0x50, 0xd5, 0x75, 0x5d,
    +	0x7c, 0x2b, 0x15, 0x50, 0x2d, 0xe4, 0x1d, 0x83, 0x3d, 0x7d, 0x11, 0xe0, 0x64, 0xed, 0xb0, 0xef,
    +	0xeb, 0xf0, 0xde, 0x81, 0x0f, 0xc3, 0xbb, 0x95, 0x33, 0x78, 0xbd, 0x72, 0x06, 0x6f, 0x56, 0xce,
    +	0xe0, 0xe7, 0xca, 0x31, 0xee, 0x2a, 0xc7, 0x78, 0x5d, 0x39, 0xc6, 0x9b, 0xca, 0x31, 0xfe, 0xac,
    +	0x1c, 0xe3, 0xd7, 0xbf, 0x9c, 0xc1, 0xab, 0xa3, 0xfb, 0x7e, 0xd8, 0x7f, 0x07, 0x00, 0x00, 0xff,
    +	0xff, 0x1c, 0xe6, 0x20, 0x06, 0xcf, 0x07, 0x00, 0x00,
     }
     
     func (m *Endpoint) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/discovery/v1beta1/generated.proto b/vendor/k8s.io/api/discovery/v1beta1/generated.proto
    index ec555a40b3ac..55828dd97d23 100644
    --- a/vendor/k8s.io/api/discovery/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/discovery/v1beta1/generated.proto
    @@ -54,7 +54,7 @@ message Endpoint {
       // targetRef is a reference to a Kubernetes object that represents this
       // endpoint.
       // +optional
    -  optional k8s.io.api.core.v1.ObjectReference targetRef = 4;
    +  optional .k8s.io.api.core.v1.ObjectReference targetRef = 4;
     
       // topology contains arbitrary topology information associated with the
       // endpoint. These key/value pairs must conform with the label format.
    @@ -153,7 +153,7 @@ message EndpointPort {
     message EndpointSlice {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // addressType specifies the type of address carried by this EndpointSlice.
       // All addresses in this slice must be the same type. This field is
    @@ -183,7 +183,7 @@ message EndpointSlice {
     message EndpointSliceList {
       // Standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of endpoint slices
       repeated EndpointSlice items = 2;
    diff --git a/vendor/k8s.io/api/events/v1/doc.go b/vendor/k8s.io/api/events/v1/doc.go
    index 6e320e06340c..5fe700ffcf85 100644
    --- a/vendor/k8s.io/api/events/v1/doc.go
    +++ b/vendor/k8s.io/api/events/v1/doc.go
    @@ -17,7 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    -
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=events.k8s.io
     
     package v1 // import "k8s.io/api/events/v1"
    diff --git a/vendor/k8s.io/api/events/v1/generated.pb.go b/vendor/k8s.io/api/events/v1/generated.pb.go
    index 2ec919a95aa8..96a6047e8602 100644
    --- a/vendor/k8s.io/api/events/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/events/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/events/v1/generated.proto
    +// source: k8s.io/api/events/v1/generated.proto
     
     package v1
     
    @@ -47,7 +47,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Event) Reset()      { *m = Event{} }
     func (*Event) ProtoMessage() {}
     func (*Event) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ee2600587b650fac, []int{0}
    +	return fileDescriptor_d3a3e1495c224e47, []int{0}
     }
     func (m *Event) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +75,7 @@ var xxx_messageInfo_Event proto.InternalMessageInfo
     func (m *EventList) Reset()      { *m = EventList{} }
     func (*EventList) ProtoMessage() {}
     func (*EventList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ee2600587b650fac, []int{1}
    +	return fileDescriptor_d3a3e1495c224e47, []int{1}
     }
     func (m *EventList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +103,7 @@ var xxx_messageInfo_EventList proto.InternalMessageInfo
     func (m *EventSeries) Reset()      { *m = EventSeries{} }
     func (*EventSeries) ProtoMessage() {}
     func (*EventSeries) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ee2600587b650fac, []int{2}
    +	return fileDescriptor_d3a3e1495c224e47, []int{2}
     }
     func (m *EventSeries) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,60 +135,59 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/events/v1/generated.proto", fileDescriptor_ee2600587b650fac)
    +	proto.RegisterFile("k8s.io/api/events/v1/generated.proto", fileDescriptor_d3a3e1495c224e47)
     }
     
    -var fileDescriptor_ee2600587b650fac = []byte{
    -	// 775 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x4f, 0x6f, 0xe3, 0x44,
    -	0x14, 0x8f, 0x77, 0x9b, 0xb4, 0x99, 0xec, 0x6e, 0xd3, 0xd9, 0x95, 0x3a, 0x74, 0x25, 0x27, 0x64,
    -	0x25, 0x14, 0x21, 0x61, 0xd3, 0x0a, 0x21, 0x84, 0x84, 0x44, 0xdd, 0x14, 0x54, 0xd4, 0x52, 0x69,
    -	0xda, 0x13, 0xe2, 0xd0, 0x89, 0xf3, 0xea, 0x9a, 0xc4, 0x33, 0xd6, 0xcc, 0x24, 0x52, 0x6f, 0x5c,
    -	0x90, 0x38, 0xf2, 0x05, 0xf8, 0x00, 0x88, 0x2f, 0xd2, 0x63, 0x8f, 0x3d, 0x45, 0xd4, 0x7c, 0x11,
    -	0xe4, 0xb1, 0x13, 0xa7, 0xf9, 0x03, 0x41, 0x7b, 0xf3, 0xbc, 0xf7, 0xfb, 0xf3, 0xde, 0xcc, 0xcb,
    -	0x0b, 0xfa, 0xaa, 0xff, 0x85, 0x72, 0x42, 0xe1, 0xf6, 0x87, 0x5d, 0x90, 0x1c, 0x34, 0x28, 0x77,
    -	0x04, 0xbc, 0x27, 0xa4, 0x9b, 0x27, 0x58, 0x1c, 0xba, 0x30, 0x02, 0xae, 0x95, 0x3b, 0xda, 0x77,
    -	0x03, 0xe0, 0x20, 0x99, 0x86, 0x9e, 0x13, 0x4b, 0xa1, 0x05, 0x7e, 0x93, 0xa1, 0x1c, 0x16, 0x87,
    -	0x4e, 0x86, 0x72, 0x46, 0xfb, 0x7b, 0x9f, 0x04, 0xa1, 0xbe, 0x19, 0x76, 0x1d, 0x5f, 0x44, 0x6e,
    -	0x20, 0x02, 0xe1, 0x1a, 0x70, 0x77, 0x78, 0x6d, 0x4e, 0xe6, 0x60, 0xbe, 0x32, 0x91, 0xbd, 0xd6,
    -	0x8c, 0x95, 0x2f, 0x24, 0x2c, 0x31, 0xda, 0xfb, 0xac, 0xc0, 0x44, 0xcc, 0xbf, 0x09, 0x39, 0xc8,
    -	0x5b, 0x37, 0xee, 0x07, 0x69, 0x40, 0xb9, 0x11, 0x68, 0xb6, 0x8c, 0xe5, 0xae, 0x62, 0xc9, 0x21,
    -	0xd7, 0x61, 0x04, 0x0b, 0x84, 0xcf, 0xff, 0x8b, 0xa0, 0xfc, 0x1b, 0x88, 0xd8, 0x3c, 0xaf, 0xf5,
    -	0x7b, 0x15, 0x95, 0x8f, 0xd3, 0xfe, 0xf1, 0x15, 0xda, 0x4a, 0xab, 0xe9, 0x31, 0xcd, 0x88, 0xd5,
    -	0xb4, 0xda, 0xb5, 0x83, 0x4f, 0x9d, 0xe2, 0x92, 0xa6, 0xa2, 0x4e, 0xdc, 0x0f, 0xd2, 0x80, 0x72,
    -	0x52, 0xb4, 0x33, 0xda, 0x77, 0xce, 0xbb, 0x3f, 0x81, 0xaf, 0xcf, 0x40, 0x33, 0x0f, 0xdf, 0x8d,
    -	0x1b, 0xa5, 0x64, 0xdc, 0x40, 0x45, 0x8c, 0x4e, 0x55, 0xf1, 0x15, 0xaa, 0x9a, 0xab, 0xbe, 0x0c,
    -	0x23, 0x20, 0xcf, 0x8c, 0x85, 0xbb, 0x9e, 0xc5, 0x59, 0xe8, 0x4b, 0x91, 0xd2, 0xbc, 0x9d, 0xdc,
    -	0xa1, 0x7a, 0x3c, 0x51, 0xa2, 0x85, 0x28, 0x3e, 0x46, 0x15, 0x05, 0x32, 0x04, 0x45, 0x9e, 0x1b,
    -	0xf9, 0x0f, 0x9d, 0x65, 0xcf, 0xec, 0x18, 0xee, 0x85, 0x01, 0x7a, 0x28, 0x19, 0x37, 0x2a, 0xd9,
    -	0x37, 0xcd, 0xc9, 0xf8, 0x0c, 0xbd, 0x96, 0x10, 0x0b, 0xa9, 0x43, 0x1e, 0x1c, 0x09, 0xae, 0xa5,
    -	0x18, 0x0c, 0x40, 0x92, 0x8d, 0xa6, 0xd5, 0xae, 0x7a, 0x6f, 0xf3, 0x0a, 0x5e, 0xd3, 0x45, 0x08,
    -	0x5d, 0xc6, 0xc3, 0xdf, 0xa2, 0x9d, 0x69, 0xf8, 0x84, 0x2b, 0xcd, 0xb8, 0x0f, 0xa4, 0x6c, 0xc4,
    -	0x3e, 0xc8, 0xc5, 0x76, 0xe8, 0x3c, 0x80, 0x2e, 0x72, 0xf0, 0x47, 0xa8, 0xc2, 0x7c, 0x1d, 0x0a,
    -	0x4e, 0x2a, 0x86, 0xfd, 0x2a, 0x67, 0x57, 0x0e, 0x4d, 0x94, 0xe6, 0xd9, 0x14, 0x27, 0x81, 0x29,
    -	0xc1, 0xc9, 0xe6, 0x53, 0x1c, 0x35, 0x51, 0x9a, 0x67, 0xf1, 0x25, 0xaa, 0x4a, 0x08, 0x98, 0xec,
    -	0x85, 0x3c, 0x20, 0x5b, 0xe6, 0xc6, 0xde, 0xcd, 0xde, 0x58, 0x3a, 0xd3, 0xc5, 0x0b, 0x53, 0xb8,
    -	0x06, 0x09, 0xdc, 0x9f, 0x79, 0x04, 0x3a, 0x61, 0xd3, 0x42, 0x08, 0x7f, 0x87, 0x36, 0x25, 0x0c,
    -	0xd2, 0x19, 0x23, 0xd5, 0xf5, 0x35, 0x6b, 0xc9, 0xb8, 0xb1, 0x49, 0x33, 0x1e, 0x9d, 0x08, 0xe0,
    -	0x26, 0xda, 0xe0, 0x42, 0x03, 0x41, 0xa6, 0x8f, 0x17, 0xb9, 0xef, 0xc6, 0xf7, 0x42, 0x03, 0x35,
    -	0x99, 0x14, 0xa1, 0x6f, 0x63, 0x20, 0xb5, 0xa7, 0x88, 0xcb, 0xdb, 0x18, 0xa8, 0xc9, 0x60, 0x40,
    -	0xf5, 0x1e, 0xc4, 0x12, 0xfc, 0x54, 0xf1, 0x42, 0x0c, 0xa5, 0x0f, 0xe4, 0x85, 0x29, 0xac, 0xb1,
    -	0xac, 0xb0, 0x6c, 0x38, 0x0c, 0xcc, 0x23, 0xb9, 0x5c, 0xbd, 0x33, 0x27, 0x40, 0x17, 0x24, 0xf1,
    -	0xaf, 0x16, 0x22, 0x45, 0xf0, 0x9b, 0x50, 0x2a, 0x33, 0x93, 0x4a, 0xb3, 0x28, 0x26, 0x2f, 0x8d,
    -	0xdf, 0xc7, 0xeb, 0x4d, 0xbb, 0x19, 0xf4, 0x66, 0x6e, 0x4d, 0x3a, 0x2b, 0x34, 0xe9, 0x4a, 0x37,
    -	0xfc, 0x8b, 0x85, 0x76, 0x8b, 0xe4, 0x29, 0x9b, 0xad, 0xe4, 0xd5, 0xff, 0xae, 0xa4, 0x91, 0x57,
    -	0xb2, 0xdb, 0x59, 0x2e, 0x49, 0x57, 0x79, 0xe1, 0x43, 0xb4, 0x5d, 0xa4, 0x8e, 0xc4, 0x90, 0x6b,
    -	0xb2, 0xdd, 0xb4, 0xda, 0x65, 0x6f, 0x37, 0x97, 0xdc, 0xee, 0x3c, 0x4d, 0xd3, 0x79, 0x7c, 0xeb,
    -	0x4f, 0x0b, 0x65, 0x3f, 0xf5, 0xd3, 0x50, 0x69, 0xfc, 0xe3, 0xc2, 0x8e, 0x72, 0xd6, 0x6b, 0x24,
    -	0x65, 0x9b, 0x0d, 0x55, 0xcf, 0x9d, 0xb7, 0x26, 0x91, 0x99, 0xfd, 0xf4, 0x35, 0x2a, 0x87, 0x1a,
    -	0x22, 0x45, 0x9e, 0x35, 0x9f, 0xb7, 0x6b, 0x07, 0x6f, 0xff, 0x65, 0x79, 0x78, 0x2f, 0x73, 0x9d,
    -	0xf2, 0x49, 0xca, 0xa0, 0x19, 0xb1, 0xf5, 0x87, 0x85, 0x6a, 0x33, 0xcb, 0x05, 0xbf, 0x43, 0x65,
    -	0xdf, 0xb4, 0x6d, 0x99, 0xb6, 0xa7, 0xa4, 0xac, 0xd9, 0x2c, 0x87, 0x87, 0xa8, 0x3e, 0x60, 0x4a,
    -	0x9f, 0x77, 0x15, 0xc8, 0x11, 0xf4, 0xde, 0x67, 0x3b, 0x4e, 0xe7, 0xf5, 0x74, 0x4e, 0x90, 0x2e,
    -	0x58, 0x78, 0x5f, 0xde, 0x3d, 0xda, 0xa5, 0xfb, 0x47, 0xbb, 0xf4, 0xf0, 0x68, 0x97, 0x7e, 0x4e,
    -	0x6c, 0xeb, 0x2e, 0xb1, 0xad, 0xfb, 0xc4, 0xb6, 0x1e, 0x12, 0xdb, 0xfa, 0x2b, 0xb1, 0xad, 0xdf,
    -	0xfe, 0xb6, 0x4b, 0x3f, 0xbc, 0x59, 0xf6, 0x6f, 0xfa, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe0,
    -	0xc8, 0x73, 0x3d, 0x7d, 0x07, 0x00, 0x00,
    +var fileDescriptor_d3a3e1495c224e47 = []byte{
    +	// 759 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x4f, 0x4f, 0xdb, 0x48,
    +	0x14, 0x8f, 0x81, 0x04, 0x32, 0xe1, 0x4f, 0x18, 0x90, 0x98, 0x05, 0xc9, 0xc9, 0x86, 0xd5, 0x2a,
    +	0x5a, 0x69, 0xed, 0x05, 0xad, 0x56, 0xab, 0x3d, 0x2d, 0x26, 0xec, 0x8a, 0x0a, 0x8a, 0x34, 0x70,
    +	0xaa, 0x7a, 0x60, 0xe2, 0x3c, 0x8c, 0x4b, 0xec, 0xb1, 0xc6, 0x93, 0x48, 0xdc, 0x7a, 0xa9, 0xd4,
    +	0x63, 0xbf, 0x40, 0x3f, 0x40, 0xd5, 0x2f, 0xc2, 0x91, 0x23, 0xa7, 0xa8, 0xb8, 0x5f, 0xa4, 0xf2,
    +	0xd8, 0x89, 0x43, 0xfe, 0xb4, 0xa9, 0x7a, 0xf3, 0xbc, 0xf7, 0xfb, 0xf3, 0xde, 0xcc, 0xcb, 0x0b,
    +	0xfa, 0xe5, 0xe6, 0xef, 0xd0, 0x70, 0xb9, 0xc9, 0x02, 0xd7, 0x84, 0x2e, 0xf8, 0x32, 0x34, 0xbb,
    +	0x7b, 0xa6, 0x03, 0x3e, 0x08, 0x26, 0xa1, 0x65, 0x04, 0x82, 0x4b, 0x8e, 0x37, 0x13, 0x94, 0xc1,
    +	0x02, 0xd7, 0x48, 0x50, 0x46, 0x77, 0x6f, 0xfb, 0x77, 0xc7, 0x95, 0xd7, 0x9d, 0xa6, 0x61, 0x73,
    +	0xcf, 0x74, 0xb8, 0xc3, 0x4d, 0x05, 0x6e, 0x76, 0xae, 0xd4, 0x49, 0x1d, 0xd4, 0x57, 0x22, 0xb2,
    +	0x5d, 0x1b, 0xb2, 0xb2, 0xb9, 0x80, 0x09, 0x46, 0xdb, 0x7f, 0x66, 0x18, 0x8f, 0xd9, 0xd7, 0xae,
    +	0x0f, 0xe2, 0xd6, 0x0c, 0x6e, 0x9c, 0x38, 0x10, 0x9a, 0x1e, 0x48, 0x36, 0x89, 0x65, 0x4e, 0x63,
    +	0x89, 0x8e, 0x2f, 0x5d, 0x0f, 0xc6, 0x08, 0x7f, 0x7d, 0x8b, 0x10, 0xda, 0xd7, 0xe0, 0xb1, 0x51,
    +	0x5e, 0xed, 0x7d, 0x11, 0xe5, 0x8f, 0xe2, 0xfe, 0xf1, 0x25, 0x5a, 0x8a, 0xab, 0x69, 0x31, 0xc9,
    +	0x88, 0x56, 0xd5, 0xea, 0xa5, 0xfd, 0x3f, 0x8c, 0xec, 0x92, 0x06, 0xa2, 0x46, 0x70, 0xe3, 0xc4,
    +	0x81, 0xd0, 0x88, 0xd1, 0x46, 0x77, 0xcf, 0x38, 0x6b, 0xbe, 0x02, 0x5b, 0x9e, 0x82, 0x64, 0x16,
    +	0xbe, 0xeb, 0x55, 0x72, 0x51, 0xaf, 0x82, 0xb2, 0x18, 0x1d, 0xa8, 0xe2, 0x4b, 0x54, 0x54, 0x57,
    +	0x7d, 0xe1, 0x7a, 0x40, 0xe6, 0x94, 0x85, 0x39, 0x9b, 0xc5, 0xa9, 0x6b, 0x0b, 0x1e, 0xd3, 0xac,
    +	0xf5, 0xd4, 0xa1, 0x78, 0xd4, 0x57, 0xa2, 0x99, 0x28, 0x3e, 0x42, 0x85, 0x10, 0x84, 0x0b, 0x21,
    +	0x99, 0x57, 0xf2, 0x3f, 0x1b, 0x93, 0x9e, 0xd9, 0x50, 0xdc, 0x73, 0x05, 0xb4, 0x50, 0xd4, 0xab,
    +	0x14, 0x92, 0x6f, 0x9a, 0x92, 0xf1, 0x29, 0xda, 0x10, 0x10, 0x70, 0x21, 0x5d, 0xdf, 0x39, 0xe4,
    +	0xbe, 0x14, 0xbc, 0xdd, 0x06, 0x41, 0x16, 0xaa, 0x5a, 0xbd, 0x68, 0xed, 0xa4, 0x15, 0x6c, 0xd0,
    +	0x71, 0x08, 0x9d, 0xc4, 0xc3, 0xff, 0xa3, 0xf5, 0x41, 0xf8, 0xd8, 0x0f, 0x25, 0xf3, 0x6d, 0x20,
    +	0x79, 0x25, 0xf6, 0x53, 0x2a, 0xb6, 0x4e, 0x47, 0x01, 0x74, 0x9c, 0x83, 0x7f, 0x45, 0x05, 0x66,
    +	0x4b, 0x97, 0xfb, 0xa4, 0xa0, 0xd8, 0xab, 0x29, 0xbb, 0x70, 0xa0, 0xa2, 0x34, 0xcd, 0xc6, 0x38,
    +	0x01, 0x2c, 0xe4, 0x3e, 0x59, 0x7c, 0x8a, 0xa3, 0x2a, 0x4a, 0xd3, 0x2c, 0xbe, 0x40, 0x45, 0x01,
    +	0x0e, 0x13, 0x2d, 0xd7, 0x77, 0xc8, 0x92, 0xba, 0xb1, 0xdd, 0xe1, 0x1b, 0x8b, 0x67, 0x3a, 0x7b,
    +	0x61, 0x0a, 0x57, 0x20, 0xc0, 0xb7, 0x87, 0x1e, 0x81, 0xf6, 0xd9, 0x34, 0x13, 0xc2, 0xcf, 0xd0,
    +	0xa2, 0x80, 0x76, 0x3c, 0x63, 0xa4, 0x38, 0xbb, 0x66, 0x29, 0xea, 0x55, 0x16, 0x69, 0xc2, 0xa3,
    +	0x7d, 0x01, 0x5c, 0x45, 0x0b, 0x3e, 0x97, 0x40, 0x90, 0xea, 0x63, 0x39, 0xf5, 0x5d, 0x78, 0xce,
    +	0x25, 0x50, 0x95, 0x89, 0x11, 0xf2, 0x36, 0x00, 0x52, 0x7a, 0x8a, 0xb8, 0xb8, 0x0d, 0x80, 0xaa,
    +	0x0c, 0x06, 0x54, 0x6e, 0x41, 0x20, 0xc0, 0x8e, 0x15, 0xcf, 0x79, 0x47, 0xd8, 0x40, 0x96, 0x55,
    +	0x61, 0x95, 0x49, 0x85, 0x25, 0xc3, 0xa1, 0x60, 0x16, 0x49, 0xe5, 0xca, 0x8d, 0x11, 0x01, 0x3a,
    +	0x26, 0x89, 0xdf, 0x6a, 0x88, 0x64, 0xc1, 0xff, 0x5c, 0x11, 0xaa, 0x99, 0x0c, 0x25, 0xf3, 0x02,
    +	0xb2, 0xa2, 0xfc, 0x7e, 0x9b, 0x6d, 0xda, 0xd5, 0xa0, 0x57, 0x53, 0x6b, 0xd2, 0x98, 0xa2, 0x49,
    +	0xa7, 0xba, 0xe1, 0x37, 0x1a, 0xda, 0xca, 0x92, 0x27, 0x6c, 0xb8, 0x92, 0xd5, 0xef, 0xae, 0xa4,
    +	0x92, 0x56, 0xb2, 0xd5, 0x98, 0x2c, 0x49, 0xa7, 0x79, 0xe1, 0x03, 0xb4, 0x96, 0xa5, 0x0e, 0x79,
    +	0xc7, 0x97, 0x64, 0xad, 0xaa, 0xd5, 0xf3, 0xd6, 0x56, 0x2a, 0xb9, 0xd6, 0x78, 0x9a, 0xa6, 0xa3,
    +	0xf8, 0xda, 0x47, 0x0d, 0x25, 0x3f, 0xf5, 0x13, 0x37, 0x94, 0xf8, 0xe5, 0xd8, 0x8e, 0x32, 0x66,
    +	0x6b, 0x24, 0x66, 0xab, 0x0d, 0x55, 0x4e, 0x9d, 0x97, 0xfa, 0x91, 0xa1, 0xfd, 0xf4, 0x2f, 0xca,
    +	0xbb, 0x12, 0xbc, 0x90, 0xcc, 0x55, 0xe7, 0xeb, 0xa5, 0xfd, 0x9d, 0xaf, 0x2c, 0x0f, 0x6b, 0x25,
    +	0xd5, 0xc9, 0x1f, 0xc7, 0x0c, 0x9a, 0x10, 0x6b, 0x1f, 0x34, 0x54, 0x1a, 0x5a, 0x2e, 0x78, 0x17,
    +	0xe5, 0x6d, 0xd5, 0xb6, 0xa6, 0xda, 0x1e, 0x90, 0x92, 0x66, 0x93, 0x1c, 0xee, 0xa0, 0x72, 0x9b,
    +	0x85, 0xf2, 0xac, 0x19, 0x82, 0xe8, 0x42, 0xeb, 0x47, 0xb6, 0xe3, 0x60, 0x5e, 0x4f, 0x46, 0x04,
    +	0xe9, 0x98, 0x85, 0xf5, 0xcf, 0xdd, 0xa3, 0x9e, 0xbb, 0x7f, 0xd4, 0x73, 0x0f, 0x8f, 0x7a, 0xee,
    +	0x75, 0xa4, 0x6b, 0x77, 0x91, 0xae, 0xdd, 0x47, 0xba, 0xf6, 0x10, 0xe9, 0xda, 0xa7, 0x48, 0xd7,
    +	0xde, 0x7d, 0xd6, 0x73, 0x2f, 0x36, 0x27, 0xfd, 0x9b, 0x7e, 0x09, 0x00, 0x00, 0xff, 0xff, 0x6f,
    +	0x4f, 0x7a, 0xe4, 0x64, 0x07, 0x00, 0x00,
     }
     
     func (m *Event) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/events/v1/generated.proto b/vendor/k8s.io/api/events/v1/generated.proto
    index cfa16b021b64..6c7e4cca1954 100644
    --- a/vendor/k8s.io/api/events/v1/generated.proto
    +++ b/vendor/k8s.io/api/events/v1/generated.proto
    @@ -39,10 +39,10 @@ message Event {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // eventTime is the time when this Event was first observed. It is required.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 2;
     
       // series is data about the Event series this event represents or nil if it's a singleton Event.
       // +optional
    @@ -68,12 +68,12 @@ message Event {
       // implements, e.g. ReplicaSetController implements ReplicaSets and this event is emitted because
       // it acts on some changes in a ReplicaSet object.
       // +optional
    -  optional k8s.io.api.core.v1.ObjectReference regarding = 8;
    +  optional .k8s.io.api.core.v1.ObjectReference regarding = 8;
     
       // related is the optional secondary object for more complex actions. E.g. when regarding object triggers
       // a creation or deletion of related object.
       // +optional
    -  optional k8s.io.api.core.v1.ObjectReference related = 9;
    +  optional .k8s.io.api.core.v1.ObjectReference related = 9;
     
       // note is a human-readable description of the status of this operation.
       // Maximal length of the note is 1kB, but libraries should be prepared to
    @@ -88,15 +88,15 @@ message Event {
     
       // deprecatedSource is the deprecated field assuring backward compatibility with core.v1 Event type.
       // +optional
    -  optional k8s.io.api.core.v1.EventSource deprecatedSource = 12;
    +  optional .k8s.io.api.core.v1.EventSource deprecatedSource = 12;
     
       // deprecatedFirstTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time deprecatedFirstTimestamp = 13;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time deprecatedFirstTimestamp = 13;
     
       // deprecatedLastTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time deprecatedLastTimestamp = 14;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time deprecatedLastTimestamp = 14;
     
       // deprecatedCount is the deprecated field assuring backward compatibility with core.v1 Event type.
       // +optional
    @@ -108,7 +108,7 @@ message EventList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a list of schema objects.
       repeated Event items = 2;
    @@ -123,6 +123,6 @@ message EventSeries {
       optional int32 count = 1;
     
       // lastObservedTime is the time when last Event from the series was seen before last heartbeat.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;
     }
     
    diff --git a/vendor/k8s.io/api/events/v1/types.go b/vendor/k8s.io/api/events/v1/types.go
    index e01a2b21e73a..86b12eee15d7 100644
    --- a/vendor/k8s.io/api/events/v1/types.go
    +++ b/vendor/k8s.io/api/events/v1/types.go
    @@ -23,6 +23,7 @@ import (
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // Event is a report of an event somewhere in the cluster. It generally denotes some state change in the system.
     // Events have a limited retention time and triggers and messages may evolve
    @@ -109,6 +110,7 @@ type EventSeries struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // EventList is a list of Event objects.
     type EventList struct {
    diff --git a/vendor/k8s.io/api/events/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/events/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..5217d1ac6903
    --- /dev/null
    +++ b/vendor/k8s.io/api/events/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,34 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Event) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *EventList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    diff --git a/vendor/k8s.io/api/events/v1beta1/generated.pb.go b/vendor/k8s.io/api/events/v1beta1/generated.pb.go
    index 701127ff9454..5d7881e8c090 100644
    --- a/vendor/k8s.io/api/events/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/events/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/events/v1beta1/generated.proto
    +// source: k8s.io/api/events/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -47,7 +47,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Event) Reset()      { *m = Event{} }
     func (*Event) ProtoMessage() {}
     func (*Event) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_4f97f691c32a5ac8, []int{0}
    +	return fileDescriptor_99027a32dee7673b, []int{0}
     }
     func (m *Event) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +75,7 @@ var xxx_messageInfo_Event proto.InternalMessageInfo
     func (m *EventList) Reset()      { *m = EventList{} }
     func (*EventList) ProtoMessage() {}
     func (*EventList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_4f97f691c32a5ac8, []int{1}
    +	return fileDescriptor_99027a32dee7673b, []int{1}
     }
     func (m *EventList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +103,7 @@ var xxx_messageInfo_EventList proto.InternalMessageInfo
     func (m *EventSeries) Reset()      { *m = EventSeries{} }
     func (*EventSeries) ProtoMessage() {}
     func (*EventSeries) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_4f97f691c32a5ac8, []int{2}
    +	return fileDescriptor_99027a32dee7673b, []int{2}
     }
     func (m *EventSeries) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,60 +135,59 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/events/v1beta1/generated.proto", fileDescriptor_4f97f691c32a5ac8)
    +	proto.RegisterFile("k8s.io/api/events/v1beta1/generated.proto", fileDescriptor_99027a32dee7673b)
     }
     
    -var fileDescriptor_4f97f691c32a5ac8 = []byte{
    -	// 779 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x95, 0xcf, 0x6e, 0xdb, 0x46,
    -	0x10, 0xc6, 0xc5, 0xc4, 0x92, 0xad, 0x55, 0x12, 0xcb, 0x9b, 0x83, 0xd7, 0x2e, 0x40, 0x09, 0x0a,
    -	0x10, 0x08, 0x05, 0x4a, 0xd6, 0x41, 0x51, 0xf4, 0x56, 0x84, 0x91, 0x5b, 0x24, 0xb0, 0x1b, 0x60,
    -	0xe3, 0x53, 0xd1, 0x43, 0x56, 0xd4, 0x84, 0x66, 0x25, 0xee, 0x12, 0xbb, 0x2b, 0x01, 0xbe, 0xf5,
    -	0x52, 0xa0, 0xc7, 0x3e, 0x43, 0x6f, 0xbd, 0xf5, 0x31, 0x7c, 0xf4, 0xd1, 0x27, 0xa1, 0x66, 0x5f,
    -	0xa4, 0xe0, 0x72, 0x25, 0xca, 0xfa, 0x03, 0xab, 0xe8, 0x8d, 0x9c, 0xf9, 0xbe, 0xdf, 0xcc, 0x2e,
    -	0x47, 0x23, 0x14, 0x0c, 0xbf, 0x51, 0x5e, 0x2c, 0xfc, 0xe1, 0xb8, 0x0f, 0x92, 0x83, 0x06, 0xe5,
    -	0x4f, 0x80, 0x0f, 0x84, 0xf4, 0x6d, 0x82, 0xa5, 0xb1, 0x0f, 0x13, 0xe0, 0x5a, 0xf9, 0x93, 0x93,
    -	0x3e, 0x68, 0x76, 0xe2, 0x47, 0xc0, 0x41, 0x32, 0x0d, 0x03, 0x2f, 0x95, 0x42, 0x0b, 0x7c, 0x54,
    -	0x48, 0x3d, 0x96, 0xc6, 0x5e, 0x21, 0xf5, 0xac, 0xf4, 0xf8, 0x8b, 0x28, 0xd6, 0x97, 0xe3, 0xbe,
    -	0x17, 0x8a, 0xc4, 0x8f, 0x44, 0x24, 0x7c, 0xe3, 0xe8, 0x8f, 0x3f, 0x99, 0x37, 0xf3, 0x62, 0x9e,
    -	0x0a, 0xd2, 0x71, 0x67, 0xa1, 0x68, 0x28, 0x24, 0xf8, 0x93, 0x95, 0x6a, 0xc7, 0x5f, 0x95, 0x9a,
    -	0x84, 0x85, 0x97, 0x31, 0x07, 0x79, 0xe5, 0xa7, 0xc3, 0x28, 0x0f, 0x28, 0x3f, 0x01, 0xcd, 0xd6,
    -	0xb9, 0xfc, 0x4d, 0x2e, 0x39, 0xe6, 0x3a, 0x4e, 0x60, 0xc5, 0xf0, 0xf5, 0x43, 0x06, 0x15, 0x5e,
    -	0x42, 0xc2, 0x96, 0x7d, 0x9d, 0x3f, 0xea, 0xa8, 0x7a, 0x9a, 0x5f, 0x02, 0xfe, 0x88, 0xf6, 0xf2,
    -	0x6e, 0x06, 0x4c, 0x33, 0xe2, 0xb4, 0x9d, 0x6e, 0xe3, 0xd5, 0x97, 0x5e, 0x79, 0x53, 0x73, 0xa8,
    -	0x97, 0x0e, 0xa3, 0x3c, 0xa0, 0xbc, 0x5c, 0xed, 0x4d, 0x4e, 0xbc, 0xf7, 0xfd, 0x9f, 0x21, 0xd4,
    -	0xe7, 0xa0, 0x59, 0x80, 0xaf, 0xa7, 0xad, 0x4a, 0x36, 0x6d, 0xa1, 0x32, 0x46, 0xe7, 0x54, 0xfc,
    -	0x11, 0xd5, 0xcd, 0x7d, 0x5f, 0xc4, 0x09, 0x90, 0x47, 0xa6, 0x84, 0xbf, 0x5d, 0x89, 0xf3, 0x38,
    -	0x94, 0x22, 0xb7, 0x05, 0x07, 0xb6, 0x42, 0xfd, 0x74, 0x46, 0xa2, 0x25, 0x14, 0xbf, 0x43, 0x35,
    -	0x05, 0x32, 0x06, 0x45, 0x1e, 0x1b, 0xfc, 0x4b, 0x6f, 0xe3, 0xb7, 0xf6, 0x0c, 0xe0, 0x83, 0x51,
    -	0x07, 0x28, 0x9b, 0xb6, 0x6a, 0xc5, 0x33, 0xb5, 0x04, 0x7c, 0x8e, 0x9e, 0x4b, 0x48, 0x85, 0xd4,
    -	0x31, 0x8f, 0xde, 0x08, 0xae, 0xa5, 0x18, 0x8d, 0x40, 0x92, 0x9d, 0xb6, 0xd3, 0xad, 0x07, 0x9f,
    -	0xd9, 0x36, 0x9e, 0xd3, 0x55, 0x09, 0x5d, 0xe7, 0xc3, 0xdf, 0xa3, 0x83, 0x79, 0xf8, 0x2d, 0x57,
    -	0x9a, 0xf1, 0x10, 0x48, 0xd5, 0xc0, 0x8e, 0x2c, 0xec, 0x80, 0x2e, 0x0b, 0xe8, 0xaa, 0x07, 0xbf,
    -	0x44, 0x35, 0x16, 0xea, 0x58, 0x70, 0x52, 0x33, 0xee, 0x67, 0xd6, 0x5d, 0x7b, 0x6d, 0xa2, 0xd4,
    -	0x66, 0x73, 0x9d, 0x04, 0xa6, 0x04, 0x27, 0xbb, 0xf7, 0x75, 0xd4, 0x44, 0xa9, 0xcd, 0xe2, 0x0b,
    -	0x54, 0x97, 0x10, 0x31, 0x39, 0x88, 0x79, 0x44, 0xf6, 0xcc, 0xb5, 0xbd, 0x58, 0xbc, 0xb6, 0x7c,
    -	0xb0, 0xcb, 0xcf, 0x4c, 0xe1, 0x13, 0x48, 0xe0, 0xe1, 0xc2, 0x97, 0xa0, 0x33, 0x37, 0x2d, 0x41,
    -	0xf8, 0x1d, 0xda, 0x95, 0x30, 0xca, 0x07, 0x8d, 0xd4, 0xb7, 0x67, 0x36, 0xb2, 0x69, 0x6b, 0x97,
    -	0x16, 0x3e, 0x3a, 0x03, 0xe0, 0x36, 0xda, 0xe1, 0x42, 0x03, 0x41, 0xe6, 0x1c, 0x4f, 0x6c, 0xdd,
    -	0x9d, 0x1f, 0x84, 0x06, 0x6a, 0x32, 0xb9, 0x42, 0x5f, 0xa5, 0x40, 0x1a, 0xf7, 0x15, 0x17, 0x57,
    -	0x29, 0x50, 0x93, 0xc1, 0x80, 0x9a, 0x03, 0x48, 0x25, 0x84, 0x39, 0xf1, 0x83, 0x18, 0xcb, 0x10,
    -	0xc8, 0x13, 0xd3, 0x58, 0x6b, 0x5d, 0x63, 0xc5, 0x70, 0x18, 0x59, 0x40, 0x2c, 0xae, 0xd9, 0x5b,
    -	0x02, 0xd0, 0x15, 0x24, 0xfe, 0xcd, 0x41, 0xa4, 0x0c, 0x7e, 0x17, 0x4b, 0x65, 0x06, 0x53, 0x69,
    -	0x96, 0xa4, 0xe4, 0xa9, 0xa9, 0xf7, 0xf9, 0x76, 0x23, 0x6f, 0xa6, 0xbd, 0x6d, 0x4b, 0x93, 0xde,
    -	0x06, 0x26, 0xdd, 0x58, 0x0d, 0xff, 0xea, 0xa0, 0xc3, 0x32, 0x79, 0xc6, 0x16, 0x3b, 0x79, 0xf6,
    -	0x9f, 0x3b, 0x69, 0xd9, 0x4e, 0x0e, 0x7b, 0xeb, 0x91, 0x74, 0x53, 0x2d, 0xfc, 0x1a, 0xed, 0x97,
    -	0xa9, 0x37, 0x62, 0xcc, 0x35, 0xd9, 0x6f, 0x3b, 0xdd, 0x6a, 0x70, 0x68, 0x91, 0xfb, 0xbd, 0xfb,
    -	0x69, 0xba, 0xac, 0xef, 0xfc, 0xe5, 0xa0, 0xe2, 0xf7, 0x7e, 0x16, 0x2b, 0x8d, 0x7f, 0x5a, 0x59,
    -	0x54, 0xde, 0x76, 0x07, 0xc9, 0xdd, 0x66, 0x4d, 0x35, 0x6d, 0xe5, 0xbd, 0x59, 0x64, 0x61, 0x49,
    -	0x9d, 0xa2, 0x6a, 0xac, 0x21, 0x51, 0xe4, 0x51, 0xfb, 0x71, 0xb7, 0xf1, 0xaa, 0xfd, 0xd0, 0x06,
    -	0x09, 0x9e, 0x5a, 0x58, 0xf5, 0x6d, 0x6e, 0xa3, 0x85, 0xbb, 0xf3, 0xa7, 0x83, 0x1a, 0x0b, 0x1b,
    -	0x06, 0xbf, 0x40, 0xd5, 0xd0, 0x9c, 0xdd, 0x31, 0x67, 0x9f, 0x9b, 0x8a, 0x13, 0x17, 0x39, 0x3c,
    -	0x46, 0xcd, 0x11, 0x53, 0xfa, 0x7d, 0x5f, 0x81, 0x9c, 0xc0, 0xe0, 0xff, 0xec, 0xc9, 0xf9, 0xd0,
    -	0x9e, 0x2d, 0x01, 0xe9, 0x4a, 0x89, 0xe0, 0xdb, 0xeb, 0x3b, 0xb7, 0x72, 0x73, 0xe7, 0x56, 0x6e,
    -	0xef, 0xdc, 0xca, 0x2f, 0x99, 0xeb, 0x5c, 0x67, 0xae, 0x73, 0x93, 0xb9, 0xce, 0x6d, 0xe6, 0x3a,
    -	0x7f, 0x67, 0xae, 0xf3, 0xfb, 0x3f, 0x6e, 0xe5, 0xc7, 0xa3, 0x8d, 0xff, 0xb0, 0xff, 0x06, 0x00,
    -	0x00, 0xff, 0xff, 0xae, 0x19, 0x45, 0xf5, 0x96, 0x07, 0x00, 0x00,
    +var fileDescriptor_99027a32dee7673b = []byte{
    +	// 764 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x95, 0xcf, 0x4f, 0xdb, 0x48,
    +	0x14, 0xc7, 0x63, 0x20, 0x81, 0x4c, 0xf8, 0x11, 0x86, 0x03, 0x03, 0x2b, 0x39, 0x51, 0x90, 0x50,
    +	0x76, 0xa5, 0xb5, 0x17, 0xb4, 0x5a, 0xed, 0x6d, 0x85, 0x09, 0x5b, 0x81, 0xa0, 0x48, 0x03, 0xa7,
    +	0xaa, 0x07, 0x26, 0xce, 0xc3, 0xb8, 0xc4, 0x1e, 0x6b, 0x3c, 0x89, 0xc4, 0xad, 0x97, 0x4a, 0x3d,
    +	0xf6, 0x6f, 0xe8, 0xad, 0xb7, 0xfe, 0x19, 0x1c, 0x39, 0x72, 0x8a, 0x8a, 0xfb, 0x8f, 0x54, 0x1e,
    +	0x3b, 0x71, 0xc8, 0x0f, 0x91, 0xaa, 0x37, 0xfb, 0xbd, 0xef, 0xf7, 0xf3, 0xde, 0x8c, 0x5f, 0x5e,
    +	0xd0, 0xef, 0xb7, 0xff, 0x86, 0x86, 0xcb, 0x4d, 0x16, 0xb8, 0x26, 0x74, 0xc1, 0x97, 0xa1, 0xd9,
    +	0xdd, 0x6b, 0x82, 0x64, 0x7b, 0xa6, 0x03, 0x3e, 0x08, 0x26, 0xa1, 0x65, 0x04, 0x82, 0x4b, 0x8e,
    +	0xb7, 0x12, 0xa9, 0xc1, 0x02, 0xd7, 0x48, 0xa4, 0x46, 0x2a, 0xdd, 0xfe, 0xd3, 0x71, 0xe5, 0x4d,
    +	0xa7, 0x69, 0xd8, 0xdc, 0x33, 0x1d, 0xee, 0x70, 0x53, 0x39, 0x9a, 0x9d, 0x6b, 0xf5, 0xa6, 0x5e,
    +	0xd4, 0x53, 0x42, 0xda, 0xae, 0x0d, 0x15, 0xb5, 0xb9, 0x00, 0xb3, 0x3b, 0x56, 0x6d, 0xfb, 0xef,
    +	0x4c, 0xe3, 0x31, 0xfb, 0xc6, 0xf5, 0x41, 0xdc, 0x99, 0xc1, 0xad, 0x13, 0x07, 0x42, 0xd3, 0x03,
    +	0xc9, 0x26, 0xb9, 0xcc, 0x69, 0x2e, 0xd1, 0xf1, 0xa5, 0xeb, 0xc1, 0x98, 0xe1, 0x9f, 0x97, 0x0c,
    +	0xa1, 0x7d, 0x03, 0x1e, 0x1b, 0xf5, 0xd5, 0x3e, 0x17, 0x51, 0xfe, 0x28, 0xbe, 0x04, 0x7c, 0x85,
    +	0x96, 0xe2, 0x6e, 0x5a, 0x4c, 0x32, 0xa2, 0x55, 0xb5, 0x7a, 0x69, 0xff, 0x2f, 0x23, 0xbb, 0xa9,
    +	0x01, 0xd4, 0x08, 0x6e, 0x9d, 0x38, 0x10, 0x1a, 0xb1, 0xda, 0xe8, 0xee, 0x19, 0xe7, 0xcd, 0x77,
    +	0x60, 0xcb, 0x33, 0x90, 0xcc, 0xc2, 0xf7, 0xbd, 0x4a, 0x2e, 0xea, 0x55, 0x50, 0x16, 0xa3, 0x03,
    +	0x2a, 0xbe, 0x42, 0x45, 0x75, 0xdf, 0x97, 0xae, 0x07, 0x64, 0x4e, 0x95, 0x30, 0x67, 0x2b, 0x71,
    +	0xe6, 0xda, 0x82, 0xc7, 0x36, 0x6b, 0x3d, 0xad, 0x50, 0x3c, 0xea, 0x93, 0x68, 0x06, 0xc5, 0x27,
    +	0xa8, 0x10, 0x82, 0x70, 0x21, 0x24, 0xf3, 0x0a, 0xbf, 0x6b, 0x4c, 0xfd, 0xd6, 0x86, 0x02, 0x5c,
    +	0x28, 0xb5, 0x85, 0xa2, 0x5e, 0xa5, 0x90, 0x3c, 0xd3, 0x94, 0x80, 0xcf, 0xd0, 0x86, 0x80, 0x80,
    +	0x0b, 0xe9, 0xfa, 0xce, 0x21, 0xf7, 0xa5, 0xe0, 0xed, 0x36, 0x08, 0xb2, 0x50, 0xd5, 0xea, 0x45,
    +	0xeb, 0xb7, 0xb4, 0x8d, 0x0d, 0x3a, 0x2e, 0xa1, 0x93, 0x7c, 0xf8, 0x15, 0x5a, 0x1f, 0x84, 0x8f,
    +	0xfd, 0x50, 0x32, 0xdf, 0x06, 0x92, 0x57, 0xb0, 0xad, 0x14, 0xb6, 0x4e, 0x47, 0x05, 0x74, 0xdc,
    +	0x83, 0x77, 0x51, 0x81, 0xd9, 0xd2, 0xe5, 0x3e, 0x29, 0x28, 0xf7, 0x6a, 0xea, 0x2e, 0x1c, 0xa8,
    +	0x28, 0x4d, 0xb3, 0xb1, 0x4e, 0x00, 0x0b, 0xb9, 0x4f, 0x16, 0x9f, 0xeb, 0xa8, 0x8a, 0xd2, 0x34,
    +	0x8b, 0x2f, 0x51, 0x51, 0x80, 0xc3, 0x44, 0xcb, 0xf5, 0x1d, 0xb2, 0xa4, 0xae, 0x6d, 0x67, 0xf8,
    +	0xda, 0xe2, 0xc1, 0xce, 0x3e, 0x33, 0x85, 0x6b, 0x10, 0xe0, 0xdb, 0x43, 0x5f, 0x82, 0xf6, 0xdd,
    +	0x34, 0x03, 0xe1, 0x13, 0xb4, 0x28, 0xa0, 0x1d, 0x0f, 0x1a, 0x29, 0xce, 0xce, 0x2c, 0x45, 0xbd,
    +	0xca, 0x22, 0x4d, 0x7c, 0xb4, 0x0f, 0xc0, 0x55, 0xb4, 0xe0, 0x73, 0x09, 0x04, 0xa9, 0x73, 0x2c,
    +	0xa7, 0x75, 0x17, 0x5e, 0x73, 0x09, 0x54, 0x65, 0x62, 0x85, 0xbc, 0x0b, 0x80, 0x94, 0x9e, 0x2b,
    +	0x2e, 0xef, 0x02, 0xa0, 0x2a, 0x83, 0x01, 0x95, 0x5b, 0x10, 0x08, 0xb0, 0x63, 0xe2, 0x05, 0xef,
    +	0x08, 0x1b, 0xc8, 0xb2, 0x6a, 0xac, 0x32, 0xa9, 0xb1, 0x64, 0x38, 0x94, 0xcc, 0x22, 0x29, 0xae,
    +	0xdc, 0x18, 0x01, 0xd0, 0x31, 0x24, 0xfe, 0xa8, 0x21, 0x92, 0x05, 0xff, 0x77, 0x45, 0xa8, 0x06,
    +	0x33, 0x94, 0xcc, 0x0b, 0xc8, 0x8a, 0xaa, 0xf7, 0xc7, 0x6c, 0x23, 0xaf, 0xa6, 0xbd, 0x9a, 0x96,
    +	0x26, 0x8d, 0x29, 0x4c, 0x3a, 0xb5, 0x1a, 0xfe, 0xa0, 0xa1, 0xcd, 0x2c, 0x79, 0xca, 0x86, 0x3b,
    +	0x59, 0xfd, 0xe9, 0x4e, 0x2a, 0x69, 0x27, 0x9b, 0x8d, 0xc9, 0x48, 0x3a, 0xad, 0x16, 0x3e, 0x40,
    +	0x6b, 0x59, 0xea, 0x90, 0x77, 0x7c, 0x49, 0xd6, 0xaa, 0x5a, 0x3d, 0x6f, 0x6d, 0xa6, 0xc8, 0xb5,
    +	0xc6, 0xf3, 0x34, 0x1d, 0xd5, 0xd7, 0xbe, 0x6a, 0x28, 0xf9, 0xbd, 0x9f, 0xba, 0xa1, 0xc4, 0x6f,
    +	0xc7, 0x16, 0x95, 0x31, 0xdb, 0x41, 0x62, 0xb7, 0x5a, 0x53, 0xe5, 0xb4, 0xf2, 0x52, 0x3f, 0x32,
    +	0xb4, 0xa4, 0x8e, 0x50, 0xde, 0x95, 0xe0, 0x85, 0x64, 0xae, 0x3a, 0x5f, 0x2f, 0xed, 0x57, 0x5f,
    +	0xda, 0x20, 0xd6, 0x4a, 0x0a, 0xcb, 0x1f, 0xc7, 0x36, 0x9a, 0xb8, 0x6b, 0x5f, 0x34, 0x54, 0x1a,
    +	0xda, 0x30, 0x78, 0x07, 0xe5, 0x6d, 0x75, 0x76, 0x4d, 0x9d, 0x7d, 0x60, 0x4a, 0x4e, 0x9c, 0xe4,
    +	0x70, 0x07, 0x95, 0xdb, 0x2c, 0x94, 0xe7, 0xcd, 0x10, 0x44, 0x17, 0x5a, 0xbf, 0xb2, 0x27, 0x07,
    +	0x43, 0x7b, 0x3a, 0x02, 0xa4, 0x63, 0x25, 0xac, 0xff, 0xee, 0x9f, 0xf4, 0xdc, 0xc3, 0x93, 0x9e,
    +	0x7b, 0x7c, 0xd2, 0x73, 0xef, 0x23, 0x5d, 0xbb, 0x8f, 0x74, 0xed, 0x21, 0xd2, 0xb5, 0xc7, 0x48,
    +	0xd7, 0xbe, 0x45, 0xba, 0xf6, 0xe9, 0xbb, 0x9e, 0x7b, 0xb3, 0x35, 0xf5, 0x1f, 0xf6, 0x47, 0x00,
    +	0x00, 0x00, 0xff, 0xff, 0x2b, 0xc1, 0x64, 0x36, 0x7d, 0x07, 0x00, 0x00,
     }
     
     func (m *Event) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/events/v1beta1/generated.proto b/vendor/k8s.io/api/events/v1beta1/generated.proto
    index de60bdc3e8c2..fbdb3097017f 100644
    --- a/vendor/k8s.io/api/events/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/events/v1beta1/generated.proto
    @@ -39,10 +39,10 @@ message Event {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // eventTime is the time when this Event was first observed. It is required.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 2;
     
       // series is data about the Event series this event represents or nil if it's a singleton Event.
       // +optional
    @@ -72,12 +72,12 @@ message Event {
       // implements, e.g. ReplicaSetController implements ReplicaSets and this event is emitted because
       // it acts on some changes in a ReplicaSet object.
       // +optional
    -  optional k8s.io.api.core.v1.ObjectReference regarding = 8;
    +  optional .k8s.io.api.core.v1.ObjectReference regarding = 8;
     
       // related is the optional secondary object for more complex actions. E.g. when regarding object triggers
       // a creation or deletion of related object.
       // +optional
    -  optional k8s.io.api.core.v1.ObjectReference related = 9;
    +  optional .k8s.io.api.core.v1.ObjectReference related = 9;
     
       // note is a human-readable description of the status of this operation.
       // Maximal length of the note is 1kB, but libraries should be prepared to
    @@ -92,15 +92,15 @@ message Event {
     
       // deprecatedSource is the deprecated field assuring backward compatibility with core.v1 Event type.
       // +optional
    -  optional k8s.io.api.core.v1.EventSource deprecatedSource = 12;
    +  optional .k8s.io.api.core.v1.EventSource deprecatedSource = 12;
     
       // deprecatedFirstTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time deprecatedFirstTimestamp = 13;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time deprecatedFirstTimestamp = 13;
     
       // deprecatedLastTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time deprecatedLastTimestamp = 14;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time deprecatedLastTimestamp = 14;
     
       // deprecatedCount is the deprecated field assuring backward compatibility with core.v1 Event type.
       // +optional
    @@ -112,7 +112,7 @@ message EventList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a list of schema objects.
       repeated Event items = 2;
    @@ -125,6 +125,6 @@ message EventSeries {
       optional int32 count = 1;
     
       // lastObservedTime is the time when last Event from the series was seen before last heartbeat.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;
     }
     
    diff --git a/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go b/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go
    index d967e3810683..818486f39d60 100644
    --- a/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/extensions/v1beta1/generated.proto
    +// source: k8s.io/api/extensions/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -52,7 +52,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *DaemonSet) Reset()      { *m = DaemonSet{} }
     func (*DaemonSet) ProtoMessage() {}
     func (*DaemonSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{0}
    +	return fileDescriptor_90a532284de28347, []int{0}
     }
     func (m *DaemonSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -80,7 +80,7 @@ var xxx_messageInfo_DaemonSet proto.InternalMessageInfo
     func (m *DaemonSetCondition) Reset()      { *m = DaemonSetCondition{} }
     func (*DaemonSetCondition) ProtoMessage() {}
     func (*DaemonSetCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{1}
    +	return fileDescriptor_90a532284de28347, []int{1}
     }
     func (m *DaemonSetCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -108,7 +108,7 @@ var xxx_messageInfo_DaemonSetCondition proto.InternalMessageInfo
     func (m *DaemonSetList) Reset()      { *m = DaemonSetList{} }
     func (*DaemonSetList) ProtoMessage() {}
     func (*DaemonSetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{2}
    +	return fileDescriptor_90a532284de28347, []int{2}
     }
     func (m *DaemonSetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -136,7 +136,7 @@ var xxx_messageInfo_DaemonSetList proto.InternalMessageInfo
     func (m *DaemonSetSpec) Reset()      { *m = DaemonSetSpec{} }
     func (*DaemonSetSpec) ProtoMessage() {}
     func (*DaemonSetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{3}
    +	return fileDescriptor_90a532284de28347, []int{3}
     }
     func (m *DaemonSetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -164,7 +164,7 @@ var xxx_messageInfo_DaemonSetSpec proto.InternalMessageInfo
     func (m *DaemonSetStatus) Reset()      { *m = DaemonSetStatus{} }
     func (*DaemonSetStatus) ProtoMessage() {}
     func (*DaemonSetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{4}
    +	return fileDescriptor_90a532284de28347, []int{4}
     }
     func (m *DaemonSetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -192,7 +192,7 @@ var xxx_messageInfo_DaemonSetStatus proto.InternalMessageInfo
     func (m *DaemonSetUpdateStrategy) Reset()      { *m = DaemonSetUpdateStrategy{} }
     func (*DaemonSetUpdateStrategy) ProtoMessage() {}
     func (*DaemonSetUpdateStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{5}
    +	return fileDescriptor_90a532284de28347, []int{5}
     }
     func (m *DaemonSetUpdateStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -220,7 +220,7 @@ var xxx_messageInfo_DaemonSetUpdateStrategy proto.InternalMessageInfo
     func (m *Deployment) Reset()      { *m = Deployment{} }
     func (*Deployment) ProtoMessage() {}
     func (*Deployment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{6}
    +	return fileDescriptor_90a532284de28347, []int{6}
     }
     func (m *Deployment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -248,7 +248,7 @@ var xxx_messageInfo_Deployment proto.InternalMessageInfo
     func (m *DeploymentCondition) Reset()      { *m = DeploymentCondition{} }
     func (*DeploymentCondition) ProtoMessage() {}
     func (*DeploymentCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{7}
    +	return fileDescriptor_90a532284de28347, []int{7}
     }
     func (m *DeploymentCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -276,7 +276,7 @@ var xxx_messageInfo_DeploymentCondition proto.InternalMessageInfo
     func (m *DeploymentList) Reset()      { *m = DeploymentList{} }
     func (*DeploymentList) ProtoMessage() {}
     func (*DeploymentList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{8}
    +	return fileDescriptor_90a532284de28347, []int{8}
     }
     func (m *DeploymentList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -304,7 +304,7 @@ var xxx_messageInfo_DeploymentList proto.InternalMessageInfo
     func (m *DeploymentRollback) Reset()      { *m = DeploymentRollback{} }
     func (*DeploymentRollback) ProtoMessage() {}
     func (*DeploymentRollback) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{9}
    +	return fileDescriptor_90a532284de28347, []int{9}
     }
     func (m *DeploymentRollback) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -332,7 +332,7 @@ var xxx_messageInfo_DeploymentRollback proto.InternalMessageInfo
     func (m *DeploymentSpec) Reset()      { *m = DeploymentSpec{} }
     func (*DeploymentSpec) ProtoMessage() {}
     func (*DeploymentSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{10}
    +	return fileDescriptor_90a532284de28347, []int{10}
     }
     func (m *DeploymentSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -360,7 +360,7 @@ var xxx_messageInfo_DeploymentSpec proto.InternalMessageInfo
     func (m *DeploymentStatus) Reset()      { *m = DeploymentStatus{} }
     func (*DeploymentStatus) ProtoMessage() {}
     func (*DeploymentStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{11}
    +	return fileDescriptor_90a532284de28347, []int{11}
     }
     func (m *DeploymentStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -388,7 +388,7 @@ var xxx_messageInfo_DeploymentStatus proto.InternalMessageInfo
     func (m *DeploymentStrategy) Reset()      { *m = DeploymentStrategy{} }
     func (*DeploymentStrategy) ProtoMessage() {}
     func (*DeploymentStrategy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{12}
    +	return fileDescriptor_90a532284de28347, []int{12}
     }
     func (m *DeploymentStrategy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -416,7 +416,7 @@ var xxx_messageInfo_DeploymentStrategy proto.InternalMessageInfo
     func (m *HTTPIngressPath) Reset()      { *m = HTTPIngressPath{} }
     func (*HTTPIngressPath) ProtoMessage() {}
     func (*HTTPIngressPath) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{13}
    +	return fileDescriptor_90a532284de28347, []int{13}
     }
     func (m *HTTPIngressPath) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -444,7 +444,7 @@ var xxx_messageInfo_HTTPIngressPath proto.InternalMessageInfo
     func (m *HTTPIngressRuleValue) Reset()      { *m = HTTPIngressRuleValue{} }
     func (*HTTPIngressRuleValue) ProtoMessage() {}
     func (*HTTPIngressRuleValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{14}
    +	return fileDescriptor_90a532284de28347, []int{14}
     }
     func (m *HTTPIngressRuleValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -472,7 +472,7 @@ var xxx_messageInfo_HTTPIngressRuleValue proto.InternalMessageInfo
     func (m *IPBlock) Reset()      { *m = IPBlock{} }
     func (*IPBlock) ProtoMessage() {}
     func (*IPBlock) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{15}
    +	return fileDescriptor_90a532284de28347, []int{15}
     }
     func (m *IPBlock) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -500,7 +500,7 @@ var xxx_messageInfo_IPBlock proto.InternalMessageInfo
     func (m *Ingress) Reset()      { *m = Ingress{} }
     func (*Ingress) ProtoMessage() {}
     func (*Ingress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{16}
    +	return fileDescriptor_90a532284de28347, []int{16}
     }
     func (m *Ingress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -528,7 +528,7 @@ var xxx_messageInfo_Ingress proto.InternalMessageInfo
     func (m *IngressBackend) Reset()      { *m = IngressBackend{} }
     func (*IngressBackend) ProtoMessage() {}
     func (*IngressBackend) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{17}
    +	return fileDescriptor_90a532284de28347, []int{17}
     }
     func (m *IngressBackend) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -556,7 +556,7 @@ var xxx_messageInfo_IngressBackend proto.InternalMessageInfo
     func (m *IngressList) Reset()      { *m = IngressList{} }
     func (*IngressList) ProtoMessage() {}
     func (*IngressList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{18}
    +	return fileDescriptor_90a532284de28347, []int{18}
     }
     func (m *IngressList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -584,7 +584,7 @@ var xxx_messageInfo_IngressList proto.InternalMessageInfo
     func (m *IngressLoadBalancerIngress) Reset()      { *m = IngressLoadBalancerIngress{} }
     func (*IngressLoadBalancerIngress) ProtoMessage() {}
     func (*IngressLoadBalancerIngress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{19}
    +	return fileDescriptor_90a532284de28347, []int{19}
     }
     func (m *IngressLoadBalancerIngress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -612,7 +612,7 @@ var xxx_messageInfo_IngressLoadBalancerIngress proto.InternalMessageInfo
     func (m *IngressLoadBalancerStatus) Reset()      { *m = IngressLoadBalancerStatus{} }
     func (*IngressLoadBalancerStatus) ProtoMessage() {}
     func (*IngressLoadBalancerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{20}
    +	return fileDescriptor_90a532284de28347, []int{20}
     }
     func (m *IngressLoadBalancerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -640,7 +640,7 @@ var xxx_messageInfo_IngressLoadBalancerStatus proto.InternalMessageInfo
     func (m *IngressPortStatus) Reset()      { *m = IngressPortStatus{} }
     func (*IngressPortStatus) ProtoMessage() {}
     func (*IngressPortStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{21}
    +	return fileDescriptor_90a532284de28347, []int{21}
     }
     func (m *IngressPortStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -668,7 +668,7 @@ var xxx_messageInfo_IngressPortStatus proto.InternalMessageInfo
     func (m *IngressRule) Reset()      { *m = IngressRule{} }
     func (*IngressRule) ProtoMessage() {}
     func (*IngressRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{22}
    +	return fileDescriptor_90a532284de28347, []int{22}
     }
     func (m *IngressRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -696,7 +696,7 @@ var xxx_messageInfo_IngressRule proto.InternalMessageInfo
     func (m *IngressRuleValue) Reset()      { *m = IngressRuleValue{} }
     func (*IngressRuleValue) ProtoMessage() {}
     func (*IngressRuleValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{23}
    +	return fileDescriptor_90a532284de28347, []int{23}
     }
     func (m *IngressRuleValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -724,7 +724,7 @@ var xxx_messageInfo_IngressRuleValue proto.InternalMessageInfo
     func (m *IngressSpec) Reset()      { *m = IngressSpec{} }
     func (*IngressSpec) ProtoMessage() {}
     func (*IngressSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{24}
    +	return fileDescriptor_90a532284de28347, []int{24}
     }
     func (m *IngressSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -752,7 +752,7 @@ var xxx_messageInfo_IngressSpec proto.InternalMessageInfo
     func (m *IngressStatus) Reset()      { *m = IngressStatus{} }
     func (*IngressStatus) ProtoMessage() {}
     func (*IngressStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{25}
    +	return fileDescriptor_90a532284de28347, []int{25}
     }
     func (m *IngressStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -780,7 +780,7 @@ var xxx_messageInfo_IngressStatus proto.InternalMessageInfo
     func (m *IngressTLS) Reset()      { *m = IngressTLS{} }
     func (*IngressTLS) ProtoMessage() {}
     func (*IngressTLS) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{26}
    +	return fileDescriptor_90a532284de28347, []int{26}
     }
     func (m *IngressTLS) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -808,7 +808,7 @@ var xxx_messageInfo_IngressTLS proto.InternalMessageInfo
     func (m *NetworkPolicy) Reset()      { *m = NetworkPolicy{} }
     func (*NetworkPolicy) ProtoMessage() {}
     func (*NetworkPolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{27}
    +	return fileDescriptor_90a532284de28347, []int{27}
     }
     func (m *NetworkPolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -836,7 +836,7 @@ var xxx_messageInfo_NetworkPolicy proto.InternalMessageInfo
     func (m *NetworkPolicyEgressRule) Reset()      { *m = NetworkPolicyEgressRule{} }
     func (*NetworkPolicyEgressRule) ProtoMessage() {}
     func (*NetworkPolicyEgressRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{28}
    +	return fileDescriptor_90a532284de28347, []int{28}
     }
     func (m *NetworkPolicyEgressRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -864,7 +864,7 @@ var xxx_messageInfo_NetworkPolicyEgressRule proto.InternalMessageInfo
     func (m *NetworkPolicyIngressRule) Reset()      { *m = NetworkPolicyIngressRule{} }
     func (*NetworkPolicyIngressRule) ProtoMessage() {}
     func (*NetworkPolicyIngressRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{29}
    +	return fileDescriptor_90a532284de28347, []int{29}
     }
     func (m *NetworkPolicyIngressRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -892,7 +892,7 @@ var xxx_messageInfo_NetworkPolicyIngressRule proto.InternalMessageInfo
     func (m *NetworkPolicyList) Reset()      { *m = NetworkPolicyList{} }
     func (*NetworkPolicyList) ProtoMessage() {}
     func (*NetworkPolicyList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{30}
    +	return fileDescriptor_90a532284de28347, []int{30}
     }
     func (m *NetworkPolicyList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -920,7 +920,7 @@ var xxx_messageInfo_NetworkPolicyList proto.InternalMessageInfo
     func (m *NetworkPolicyPeer) Reset()      { *m = NetworkPolicyPeer{} }
     func (*NetworkPolicyPeer) ProtoMessage() {}
     func (*NetworkPolicyPeer) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{31}
    +	return fileDescriptor_90a532284de28347, []int{31}
     }
     func (m *NetworkPolicyPeer) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -948,7 +948,7 @@ var xxx_messageInfo_NetworkPolicyPeer proto.InternalMessageInfo
     func (m *NetworkPolicyPort) Reset()      { *m = NetworkPolicyPort{} }
     func (*NetworkPolicyPort) ProtoMessage() {}
     func (*NetworkPolicyPort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{32}
    +	return fileDescriptor_90a532284de28347, []int{32}
     }
     func (m *NetworkPolicyPort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -976,7 +976,7 @@ var xxx_messageInfo_NetworkPolicyPort proto.InternalMessageInfo
     func (m *NetworkPolicySpec) Reset()      { *m = NetworkPolicySpec{} }
     func (*NetworkPolicySpec) ProtoMessage() {}
     func (*NetworkPolicySpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{33}
    +	return fileDescriptor_90a532284de28347, []int{33}
     }
     func (m *NetworkPolicySpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1004,7 +1004,7 @@ var xxx_messageInfo_NetworkPolicySpec proto.InternalMessageInfo
     func (m *ReplicaSet) Reset()      { *m = ReplicaSet{} }
     func (*ReplicaSet) ProtoMessage() {}
     func (*ReplicaSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{34}
    +	return fileDescriptor_90a532284de28347, []int{34}
     }
     func (m *ReplicaSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1032,7 +1032,7 @@ var xxx_messageInfo_ReplicaSet proto.InternalMessageInfo
     func (m *ReplicaSetCondition) Reset()      { *m = ReplicaSetCondition{} }
     func (*ReplicaSetCondition) ProtoMessage() {}
     func (*ReplicaSetCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{35}
    +	return fileDescriptor_90a532284de28347, []int{35}
     }
     func (m *ReplicaSetCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1060,7 +1060,7 @@ var xxx_messageInfo_ReplicaSetCondition proto.InternalMessageInfo
     func (m *ReplicaSetList) Reset()      { *m = ReplicaSetList{} }
     func (*ReplicaSetList) ProtoMessage() {}
     func (*ReplicaSetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{36}
    +	return fileDescriptor_90a532284de28347, []int{36}
     }
     func (m *ReplicaSetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1088,7 +1088,7 @@ var xxx_messageInfo_ReplicaSetList proto.InternalMessageInfo
     func (m *ReplicaSetSpec) Reset()      { *m = ReplicaSetSpec{} }
     func (*ReplicaSetSpec) ProtoMessage() {}
     func (*ReplicaSetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{37}
    +	return fileDescriptor_90a532284de28347, []int{37}
     }
     func (m *ReplicaSetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1116,7 +1116,7 @@ var xxx_messageInfo_ReplicaSetSpec proto.InternalMessageInfo
     func (m *ReplicaSetStatus) Reset()      { *m = ReplicaSetStatus{} }
     func (*ReplicaSetStatus) ProtoMessage() {}
     func (*ReplicaSetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{38}
    +	return fileDescriptor_90a532284de28347, []int{38}
     }
     func (m *ReplicaSetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1144,7 +1144,7 @@ var xxx_messageInfo_ReplicaSetStatus proto.InternalMessageInfo
     func (m *RollbackConfig) Reset()      { *m = RollbackConfig{} }
     func (*RollbackConfig) ProtoMessage() {}
     func (*RollbackConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{39}
    +	return fileDescriptor_90a532284de28347, []int{39}
     }
     func (m *RollbackConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1172,7 +1172,7 @@ var xxx_messageInfo_RollbackConfig proto.InternalMessageInfo
     func (m *RollingUpdateDaemonSet) Reset()      { *m = RollingUpdateDaemonSet{} }
     func (*RollingUpdateDaemonSet) ProtoMessage() {}
     func (*RollingUpdateDaemonSet) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{40}
    +	return fileDescriptor_90a532284de28347, []int{40}
     }
     func (m *RollingUpdateDaemonSet) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1200,7 +1200,7 @@ var xxx_messageInfo_RollingUpdateDaemonSet proto.InternalMessageInfo
     func (m *RollingUpdateDeployment) Reset()      { *m = RollingUpdateDeployment{} }
     func (*RollingUpdateDeployment) ProtoMessage() {}
     func (*RollingUpdateDeployment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{41}
    +	return fileDescriptor_90a532284de28347, []int{41}
     }
     func (m *RollingUpdateDeployment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1228,7 +1228,7 @@ var xxx_messageInfo_RollingUpdateDeployment proto.InternalMessageInfo
     func (m *Scale) Reset()      { *m = Scale{} }
     func (*Scale) ProtoMessage() {}
     func (*Scale) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{42}
    +	return fileDescriptor_90a532284de28347, []int{42}
     }
     func (m *Scale) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1256,7 +1256,7 @@ var xxx_messageInfo_Scale proto.InternalMessageInfo
     func (m *ScaleSpec) Reset()      { *m = ScaleSpec{} }
     func (*ScaleSpec) ProtoMessage() {}
     func (*ScaleSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{43}
    +	return fileDescriptor_90a532284de28347, []int{43}
     }
     func (m *ScaleSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1284,7 +1284,7 @@ var xxx_messageInfo_ScaleSpec proto.InternalMessageInfo
     func (m *ScaleStatus) Reset()      { *m = ScaleStatus{} }
     func (*ScaleStatus) ProtoMessage() {}
     func (*ScaleStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cdc93917efc28165, []int{44}
    +	return fileDescriptor_90a532284de28347, []int{44}
     }
     func (m *ScaleStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1360,190 +1360,189 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/extensions/v1beta1/generated.proto", fileDescriptor_cdc93917efc28165)
    +	proto.RegisterFile("k8s.io/api/extensions/v1beta1/generated.proto", fileDescriptor_90a532284de28347)
     }
     
    -var fileDescriptor_cdc93917efc28165 = []byte{
    -	// 2858 bytes of a gzipped FileDescriptorProto
    +var fileDescriptor_90a532284de28347 = []byte{
    +	// 2842 bytes of a gzipped FileDescriptorProto
     	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcd, 0x6f, 0x24, 0x47,
     	0x15, 0xdf, 0x9e, 0xf1, 0xd8, 0xe3, 0xe7, 0xb5, 0xbd, 0x5b, 0xeb, 0xac, 0x1d, 0x2f, 0xb1, 0xa3,
    -	0x46, 0x84, 0x4d, 0xd8, 0xcc, 0xb0, 0x9b, 0x64, 0xc9, 0x87, 0x94, 0xb0, 0xe3, 0xdd, 0x64, 0x9d,
    -	0xd8, 0xe3, 0x49, 0xcd, 0x38, 0x41, 0x11, 0x01, 0xda, 0x3d, 0xe5, 0x71, 0xc7, 0x3d, 0xdd, 0xa3,
    -	0xee, 0x1a, 0xb3, 0xbe, 0x81, 0xe0, 0x92, 0x13, 0x5c, 0x02, 0x1c, 0x91, 0x90, 0xb8, 0x72, 0xe5,
    -	0x10, 0x22, 0x10, 0x41, 0x5a, 0x21, 0x0e, 0x91, 0x38, 0x90, 0x93, 0x45, 0x9c, 0x13, 0xe2, 0x1f,
    -	0x40, 0x7b, 0x42, 0xf5, 0xd1, 0xd5, 0xdf, 0x76, 0x8f, 0xf1, 0x5a, 0x04, 0x71, 0x5a, 0x4f, 0xbd,
    -	0xf7, 0x7e, 0xf5, 0xaa, 0xea, 0xd5, 0x7b, 0xbf, 0xaa, 0xea, 0x85, 0x57, 0x77, 0x9f, 0xf7, 0x6b,
    -	0x96, 0x5b, 0xdf, 0x1d, 0x6e, 0x11, 0xcf, 0x21, 0x94, 0xf8, 0xf5, 0x3d, 0xe2, 0x74, 0x5d, 0xaf,
    -	0x2e, 0x05, 0xc6, 0xc0, 0xaa, 0x93, 0x7b, 0x94, 0x38, 0xbe, 0xe5, 0x3a, 0x7e, 0x7d, 0xef, 0xfa,
    -	0x16, 0xa1, 0xc6, 0xf5, 0x7a, 0x8f, 0x38, 0xc4, 0x33, 0x28, 0xe9, 0xd6, 0x06, 0x9e, 0x4b, 0x5d,
    -	0xf4, 0x98, 0x50, 0xaf, 0x19, 0x03, 0xab, 0x16, 0xaa, 0xd7, 0xa4, 0xfa, 0xe2, 0xd3, 0x3d, 0x8b,
    -	0xee, 0x0c, 0xb7, 0x6a, 0xa6, 0xdb, 0xaf, 0xf7, 0xdc, 0x9e, 0x5b, 0xe7, 0x56, 0x5b, 0xc3, 0x6d,
    -	0xfe, 0x8b, 0xff, 0xe0, 0x7f, 0x09, 0xb4, 0x45, 0x3d, 0xd2, 0xb9, 0xe9, 0x7a, 0xa4, 0xbe, 0x97,
    -	0xea, 0x71, 0xf1, 0xd9, 0x50, 0xa7, 0x6f, 0x98, 0x3b, 0x96, 0x43, 0xbc, 0xfd, 0xfa, 0x60, 0xb7,
    -	0xc7, 0x1a, 0xfc, 0x7a, 0x9f, 0x50, 0x23, 0xcb, 0xaa, 0x9e, 0x67, 0xe5, 0x0d, 0x1d, 0x6a, 0xf5,
    -	0x49, 0xca, 0xe0, 0xe6, 0x71, 0x06, 0xbe, 0xb9, 0x43, 0xfa, 0x46, 0xca, 0xee, 0x99, 0x3c, 0xbb,
    -	0x21, 0xb5, 0xec, 0xba, 0xe5, 0x50, 0x9f, 0x7a, 0x49, 0x23, 0xfd, 0x83, 0x12, 0x4c, 0xde, 0x36,
    -	0x48, 0xdf, 0x75, 0xda, 0x84, 0xa2, 0xef, 0x41, 0x95, 0x0d, 0xa3, 0x6b, 0x50, 0x63, 0x41, 0x7b,
    -	0x5c, 0xbb, 0x3a, 0x75, 0xe3, 0xeb, 0xb5, 0x70, 0x9a, 0x15, 0x6a, 0x6d, 0xb0, 0xdb, 0x63, 0x0d,
    -	0x7e, 0x8d, 0x69, 0xd7, 0xf6, 0xae, 0xd7, 0x36, 0xb6, 0xde, 0x23, 0x26, 0x5d, 0x27, 0xd4, 0x68,
    -	0xa0, 0xfb, 0x07, 0xcb, 0xe7, 0x0e, 0x0f, 0x96, 0x21, 0x6c, 0xc3, 0x0a, 0x15, 0x35, 0x61, 0xcc,
    -	0x1f, 0x10, 0x73, 0xa1, 0xc4, 0xd1, 0xaf, 0xd5, 0x8e, 0x5c, 0xc4, 0x9a, 0xf2, 0xac, 0x3d, 0x20,
    -	0x66, 0xe3, 0xbc, 0x44, 0x1e, 0x63, 0xbf, 0x30, 0xc7, 0x41, 0x6f, 0xc1, 0xb8, 0x4f, 0x0d, 0x3a,
    -	0xf4, 0x17, 0xca, 0x1c, 0xb1, 0x56, 0x18, 0x91, 0x5b, 0x35, 0x66, 0x24, 0xe6, 0xb8, 0xf8, 0x8d,
    -	0x25, 0x9a, 0xfe, 0x8f, 0x12, 0x20, 0xa5, 0xbb, 0xe2, 0x3a, 0x5d, 0x8b, 0x5a, 0xae, 0x83, 0x5e,
    -	0x84, 0x31, 0xba, 0x3f, 0x20, 0x7c, 0x72, 0x26, 0x1b, 0x4f, 0x04, 0x0e, 0x75, 0xf6, 0x07, 0xe4,
    -	0xc1, 0xc1, 0xf2, 0xe5, 0xb4, 0x05, 0x93, 0x60, 0x6e, 0x83, 0xd6, 0x94, 0xab, 0x25, 0x6e, 0xfd,
    -	0x6c, 0xbc, 0xeb, 0x07, 0x07, 0xcb, 0x19, 0x41, 0x58, 0x53, 0x48, 0x71, 0x07, 0xd1, 0x1e, 0x20,
    -	0xdb, 0xf0, 0x69, 0xc7, 0x33, 0x1c, 0x5f, 0xf4, 0x64, 0xf5, 0x89, 0x9c, 0x84, 0xa7, 0x8a, 0x2d,
    -	0x1a, 0xb3, 0x68, 0x2c, 0x4a, 0x2f, 0xd0, 0x5a, 0x0a, 0x0d, 0x67, 0xf4, 0x80, 0x9e, 0x80, 0x71,
    -	0x8f, 0x18, 0xbe, 0xeb, 0x2c, 0x8c, 0xf1, 0x51, 0xa8, 0x09, 0xc4, 0xbc, 0x15, 0x4b, 0x29, 0x7a,
    -	0x12, 0x26, 0xfa, 0xc4, 0xf7, 0x8d, 0x1e, 0x59, 0xa8, 0x70, 0xc5, 0x59, 0xa9, 0x38, 0xb1, 0x2e,
    -	0x9a, 0x71, 0x20, 0xd7, 0x3f, 0xd4, 0x60, 0x5a, 0xcd, 0xdc, 0x9a, 0xe5, 0x53, 0xf4, 0xed, 0x54,
    -	0x1c, 0xd6, 0x8a, 0x0d, 0x89, 0x59, 0xf3, 0x28, 0xbc, 0x20, 0x7b, 0xab, 0x06, 0x2d, 0x91, 0x18,
    -	0x5c, 0x87, 0x8a, 0x45, 0x49, 0x9f, 0xad, 0x43, 0xf9, 0xea, 0xd4, 0x8d, 0xab, 0x45, 0x43, 0xa6,
    -	0x31, 0x2d, 0x41, 0x2b, 0xab, 0xcc, 0x1c, 0x0b, 0x14, 0xfd, 0x67, 0x63, 0x11, 0xf7, 0x59, 0x68,
    -	0xa2, 0x77, 0xa1, 0xea, 0x13, 0x9b, 0x98, 0xd4, 0xf5, 0xa4, 0xfb, 0xcf, 0x14, 0x74, 0xdf, 0xd8,
    -	0x22, 0x76, 0x5b, 0x9a, 0x36, 0xce, 0x33, 0xff, 0x83, 0x5f, 0x58, 0x41, 0xa2, 0x37, 0xa1, 0x4a,
    -	0x49, 0x7f, 0x60, 0x1b, 0x94, 0xc8, 0x7d, 0xf4, 0xe5, 0xe8, 0x10, 0x58, 0xe4, 0x30, 0xb0, 0x96,
    -	0xdb, 0xed, 0x48, 0x35, 0xbe, 0x7d, 0xd4, 0x94, 0x04, 0xad, 0x58, 0xc1, 0xa0, 0x3d, 0x98, 0x19,
    -	0x0e, 0xba, 0x4c, 0x93, 0xb2, 0xec, 0xd0, 0xdb, 0x97, 0x91, 0x74, 0xb3, 0xe8, 0xdc, 0x6c, 0xc6,
    -	0xac, 0x1b, 0x97, 0x65, 0x5f, 0x33, 0xf1, 0x76, 0x9c, 0xe8, 0x05, 0xdd, 0x82, 0xd9, 0xbe, 0xe5,
    -	0x60, 0x62, 0x74, 0xf7, 0xdb, 0xc4, 0x74, 0x9d, 0xae, 0xcf, 0xc3, 0xaa, 0xd2, 0x98, 0x97, 0x00,
    -	0xb3, 0xeb, 0x71, 0x31, 0x4e, 0xea, 0xa3, 0xd7, 0x01, 0x05, 0xc3, 0x78, 0x4d, 0x24, 0x37, 0xcb,
    -	0x75, 0x78, 0xcc, 0x95, 0xc3, 0xe0, 0xee, 0xa4, 0x34, 0x70, 0x86, 0x15, 0x5a, 0x83, 0x39, 0x8f,
    -	0xec, 0x59, 0x6c, 0x8c, 0x77, 0x2d, 0x9f, 0xba, 0xde, 0xfe, 0x9a, 0xd5, 0xb7, 0xe8, 0xc2, 0x38,
    -	0xf7, 0x69, 0xe1, 0xf0, 0x60, 0x79, 0x0e, 0x67, 0xc8, 0x71, 0xa6, 0x95, 0xfe, 0xf3, 0x71, 0x98,
    -	0x4d, 0xe4, 0x1b, 0xf4, 0x16, 0x5c, 0x36, 0x87, 0x9e, 0x47, 0x1c, 0xda, 0x1c, 0xf6, 0xb7, 0x88,
    -	0xd7, 0x36, 0x77, 0x48, 0x77, 0x68, 0x93, 0x2e, 0x0f, 0x94, 0x4a, 0x63, 0x49, 0x7a, 0x7c, 0x79,
    -	0x25, 0x53, 0x0b, 0xe7, 0x58, 0xb3, 0x59, 0x70, 0x78, 0xd3, 0xba, 0xe5, 0xfb, 0x0a, 0xb3, 0xc4,
    -	0x31, 0xd5, 0x2c, 0x34, 0x53, 0x1a, 0x38, 0xc3, 0x8a, 0xf9, 0xd8, 0x25, 0xbe, 0xe5, 0x91, 0x6e,
    -	0xd2, 0xc7, 0x72, 0xdc, 0xc7, 0xdb, 0x99, 0x5a, 0x38, 0xc7, 0x1a, 0x3d, 0x07, 0x53, 0xa2, 0x37,
    -	0xbe, 0x7e, 0x72, 0xa1, 0x2f, 0x49, 0xb0, 0xa9, 0x66, 0x28, 0xc2, 0x51, 0x3d, 0x36, 0x34, 0x77,
    -	0xcb, 0x27, 0xde, 0x1e, 0xe9, 0xe6, 0x2f, 0xf0, 0x46, 0x4a, 0x03, 0x67, 0x58, 0xb1, 0xa1, 0x89,
    -	0x08, 0x4c, 0x0d, 0x6d, 0x3c, 0x3e, 0xb4, 0xcd, 0x4c, 0x2d, 0x9c, 0x63, 0xcd, 0xe2, 0x58, 0xb8,
    -	0x7c, 0x6b, 0xcf, 0xb0, 0x6c, 0x63, 0xcb, 0x26, 0x0b, 0x13, 0xf1, 0x38, 0x6e, 0xc6, 0xc5, 0x38,
    -	0xa9, 0x8f, 0x5e, 0x83, 0x8b, 0xa2, 0x69, 0xd3, 0x31, 0x14, 0x48, 0x95, 0x83, 0x3c, 0x2a, 0x41,
    -	0x2e, 0x36, 0x93, 0x0a, 0x38, 0x6d, 0x83, 0x5e, 0x84, 0x19, 0xd3, 0xb5, 0x6d, 0x1e, 0x8f, 0x2b,
    -	0xee, 0xd0, 0xa1, 0x0b, 0x93, 0x1c, 0x05, 0xb1, 0xfd, 0xb8, 0x12, 0x93, 0xe0, 0x84, 0x26, 0x22,
    -	0x00, 0x66, 0x50, 0x70, 0xfc, 0x05, 0xe0, 0xf9, 0xf1, 0x7a, 0xd1, 0x1c, 0xa0, 0x4a, 0x55, 0xc8,
    -	0x01, 0x54, 0x93, 0x8f, 0x23, 0xc0, 0xfa, 0x9f, 0x35, 0x98, 0xcf, 0x49, 0x1d, 0xe8, 0x95, 0x58,
    -	0x89, 0xfd, 0x5a, 0xa2, 0xc4, 0x5e, 0xc9, 0x31, 0x8b, 0xd4, 0x59, 0x07, 0xa6, 0x3d, 0x36, 0x2a,
    -	0xa7, 0x27, 0x54, 0x64, 0x8e, 0x7c, 0xee, 0x98, 0x61, 0xe0, 0xa8, 0x4d, 0x98, 0xf3, 0x2f, 0x1e,
    -	0x1e, 0x2c, 0x4f, 0xc7, 0x64, 0x38, 0x0e, 0xaf, 0xff, 0xa2, 0x04, 0x70, 0x9b, 0x0c, 0x6c, 0x77,
    -	0xbf, 0x4f, 0x9c, 0xb3, 0xe0, 0x50, 0x1b, 0x31, 0x0e, 0xf5, 0xf4, 0x71, 0xcb, 0xa3, 0x5c, 0xcb,
    -	0x25, 0x51, 0x6f, 0x27, 0x48, 0x54, 0xbd, 0x38, 0xe4, 0xd1, 0x2c, 0xea, 0x6f, 0x65, 0xb8, 0x14,
    -	0x2a, 0x87, 0x34, 0xea, 0xa5, 0xd8, 0x1a, 0x7f, 0x35, 0xb1, 0xc6, 0xf3, 0x19, 0x26, 0x0f, 0x8d,
    -	0x47, 0xbd, 0x07, 0x33, 0x8c, 0xe5, 0x88, 0xb5, 0xe4, 0x1c, 0x6a, 0x7c, 0x64, 0x0e, 0xa5, 0xaa,
    -	0xdd, 0x5a, 0x0c, 0x09, 0x27, 0x90, 0x73, 0x38, 0xdb, 0xc4, 0x17, 0x91, 0xb3, 0x7d, 0xa4, 0xc1,
    -	0x4c, 0xb8, 0x4c, 0x67, 0x40, 0xda, 0x9a, 0x71, 0xd2, 0xf6, 0x64, 0xe1, 0x10, 0xcd, 0x61, 0x6d,
    -	0xff, 0x62, 0x04, 0x5f, 0x29, 0xb1, 0x0d, 0xbe, 0x65, 0x98, 0xbb, 0xe8, 0x71, 0x18, 0x73, 0x8c,
    -	0x7e, 0x10, 0x99, 0x6a, 0xb3, 0x34, 0x8d, 0x3e, 0xc1, 0x5c, 0x82, 0x3e, 0xd0, 0x00, 0xc9, 0x2a,
    -	0x70, 0xcb, 0x71, 0x5c, 0x6a, 0x88, 0x5c, 0x29, 0xdc, 0x5a, 0x2d, 0xec, 0x56, 0xd0, 0x63, 0x6d,
    -	0x33, 0x85, 0x75, 0xc7, 0xa1, 0xde, 0x7e, 0xb8, 0xc8, 0x69, 0x05, 0x9c, 0xe1, 0x00, 0x32, 0x00,
    -	0x3c, 0x89, 0xd9, 0x71, 0xe5, 0x46, 0x7e, 0xba, 0x40, 0xce, 0x63, 0x06, 0x2b, 0xae, 0xb3, 0x6d,
    -	0xf5, 0xc2, 0xb4, 0x83, 0x15, 0x10, 0x8e, 0x80, 0x2e, 0xde, 0x81, 0xf9, 0x1c, 0x6f, 0xd1, 0x05,
    +	0x46, 0x84, 0x4d, 0xd8, 0x9d, 0x61, 0x37, 0xc9, 0x92, 0x0f, 0x29, 0x61, 0xc7, 0xbb, 0xc9, 0x3a,
    +	0xb1, 0xc7, 0x93, 0x9a, 0x71, 0x82, 0x22, 0x02, 0xb4, 0x7b, 0xca, 0xe3, 0x8e, 0x7b, 0xba, 0x47,
    +	0xdd, 0x35, 0x66, 0x7d, 0x03, 0xc1, 0x25, 0x27, 0xb8, 0x04, 0x38, 0x22, 0x21, 0x71, 0xe5, 0xca,
    +	0x21, 0x44, 0x20, 0x82, 0xb4, 0x42, 0x1c, 0x22, 0x71, 0x20, 0x27, 0x8b, 0x38, 0x27, 0xc4, 0x3f,
    +	0x80, 0xf6, 0x84, 0xea, 0xa3, 0xab, 0xbf, 0xed, 0x1e, 0xe3, 0x58, 0x04, 0x71, 0x5a, 0x4f, 0xbd,
    +	0xf7, 0x7e, 0xf5, 0xaa, 0xea, 0xd5, 0x7b, 0xbf, 0xaa, 0xea, 0x85, 0xeb, 0xbb, 0xcf, 0xf9, 0x35,
    +	0xcb, 0xad, 0x1b, 0x03, 0xab, 0x4e, 0xee, 0x53, 0xe2, 0xf8, 0x96, 0xeb, 0xf8, 0xf5, 0xbd, 0x1b,
    +	0x5b, 0x84, 0x1a, 0x37, 0xea, 0x3d, 0xe2, 0x10, 0xcf, 0xa0, 0xa4, 0x5b, 0x1b, 0x78, 0x2e, 0x75,
    +	0xd1, 0x63, 0x42, 0xbd, 0x66, 0x0c, 0xac, 0x5a, 0xa8, 0x5e, 0x93, 0xea, 0x8b, 0xd7, 0x7b, 0x16,
    +	0xdd, 0x19, 0x6e, 0xd5, 0x4c, 0xb7, 0x5f, 0xef, 0xb9, 0x3d, 0xb7, 0xce, 0xad, 0xb6, 0x86, 0xdb,
    +	0xfc, 0x17, 0xff, 0xc1, 0xff, 0x12, 0x68, 0x8b, 0x7a, 0xa4, 0x73, 0xd3, 0xf5, 0x48, 0x7d, 0x2f,
    +	0xd5, 0xe3, 0xe2, 0x33, 0xa1, 0x4e, 0xdf, 0x30, 0x77, 0x2c, 0x87, 0x78, 0xfb, 0xf5, 0xc1, 0x6e,
    +	0x8f, 0x35, 0xf8, 0xf5, 0x3e, 0xa1, 0x46, 0x96, 0x55, 0x3d, 0xcf, 0xca, 0x1b, 0x3a, 0xd4, 0xea,
    +	0x93, 0x94, 0xc1, 0xad, 0xe3, 0x0c, 0x7c, 0x73, 0x87, 0xf4, 0x8d, 0x94, 0xdd, 0xd3, 0x79, 0x76,
    +	0x43, 0x6a, 0xd9, 0x75, 0xcb, 0xa1, 0x3e, 0xf5, 0x92, 0x46, 0xfa, 0xfb, 0x25, 0x98, 0xbc, 0x63,
    +	0x90, 0xbe, 0xeb, 0xb4, 0x09, 0x45, 0xdf, 0x83, 0x2a, 0x1b, 0x46, 0xd7, 0xa0, 0xc6, 0x82, 0xf6,
    +	0xb8, 0x76, 0x75, 0xea, 0xe6, 0xd7, 0x6b, 0xe1, 0x34, 0x2b, 0xd4, 0xda, 0x60, 0xb7, 0xc7, 0x1a,
    +	0xfc, 0x1a, 0xd3, 0xae, 0xed, 0xdd, 0xa8, 0x6d, 0x6c, 0xbd, 0x4b, 0x4c, 0xba, 0x4e, 0xa8, 0xd1,
    +	0x40, 0x0f, 0x0e, 0x96, 0xcf, 0x1d, 0x1e, 0x2c, 0x43, 0xd8, 0x86, 0x15, 0x2a, 0x6a, 0xc2, 0x98,
    +	0x3f, 0x20, 0xe6, 0x42, 0x89, 0xa3, 0x5f, 0xab, 0x1d, 0xb9, 0x88, 0x35, 0xe5, 0x59, 0x7b, 0x40,
    +	0xcc, 0xc6, 0x79, 0x89, 0x3c, 0xc6, 0x7e, 0x61, 0x8e, 0x83, 0xde, 0x84, 0x71, 0x9f, 0x1a, 0x74,
    +	0xe8, 0x2f, 0x94, 0x39, 0x62, 0xad, 0x30, 0x22, 0xb7, 0x6a, 0xcc, 0x48, 0xcc, 0x71, 0xf1, 0x1b,
    +	0x4b, 0x34, 0xfd, 0x1f, 0x25, 0x40, 0x4a, 0x77, 0xc5, 0x75, 0xba, 0x16, 0xb5, 0x5c, 0x07, 0xbd,
    +	0x00, 0x63, 0x74, 0x7f, 0x40, 0xf8, 0xe4, 0x4c, 0x36, 0x9e, 0x08, 0x1c, 0xea, 0xec, 0x0f, 0xc8,
    +	0xc3, 0x83, 0xe5, 0xcb, 0x69, 0x0b, 0x26, 0xc1, 0xdc, 0x06, 0xad, 0x29, 0x57, 0x4b, 0xdc, 0xfa,
    +	0x99, 0x78, 0xd7, 0x0f, 0x0f, 0x96, 0x33, 0x82, 0xb0, 0xa6, 0x90, 0xe2, 0x0e, 0xa2, 0x3d, 0x40,
    +	0xb6, 0xe1, 0xd3, 0x8e, 0x67, 0x38, 0xbe, 0xe8, 0xc9, 0xea, 0x13, 0x39, 0x09, 0x4f, 0x15, 0x5b,
    +	0x34, 0x66, 0xd1, 0x58, 0x94, 0x5e, 0xa0, 0xb5, 0x14, 0x1a, 0xce, 0xe8, 0x01, 0x3d, 0x01, 0xe3,
    +	0x1e, 0x31, 0x7c, 0xd7, 0x59, 0x18, 0xe3, 0xa3, 0x50, 0x13, 0x88, 0x79, 0x2b, 0x96, 0x52, 0xf4,
    +	0x24, 0x4c, 0xf4, 0x89, 0xef, 0x1b, 0x3d, 0xb2, 0x50, 0xe1, 0x8a, 0xb3, 0x52, 0x71, 0x62, 0x5d,
    +	0x34, 0xe3, 0x40, 0xae, 0x7f, 0xa0, 0xc1, 0xb4, 0x9a, 0xb9, 0x35, 0xcb, 0xa7, 0xe8, 0xdb, 0xa9,
    +	0x38, 0xac, 0x15, 0x1b, 0x12, 0xb3, 0xe6, 0x51, 0x78, 0x41, 0xf6, 0x56, 0x0d, 0x5a, 0x22, 0x31,
    +	0xb8, 0x0e, 0x15, 0x8b, 0x92, 0x3e, 0x5b, 0x87, 0xf2, 0xd5, 0xa9, 0x9b, 0x57, 0x8b, 0x86, 0x4c,
    +	0x63, 0x5a, 0x82, 0x56, 0x56, 0x99, 0x39, 0x16, 0x28, 0xfa, 0xcf, 0xc6, 0x22, 0xee, 0xb3, 0xd0,
    +	0x44, 0xef, 0x40, 0xd5, 0x27, 0x36, 0x31, 0xa9, 0xeb, 0x49, 0xf7, 0x9f, 0x2e, 0xe8, 0xbe, 0xb1,
    +	0x45, 0xec, 0xb6, 0x34, 0x6d, 0x9c, 0x67, 0xfe, 0x07, 0xbf, 0xb0, 0x82, 0x44, 0x6f, 0x40, 0x95,
    +	0x92, 0xfe, 0xc0, 0x36, 0x28, 0x91, 0xfb, 0xe8, 0xcb, 0xd1, 0x21, 0xb0, 0xc8, 0x61, 0x60, 0x2d,
    +	0xb7, 0xdb, 0x91, 0x6a, 0x7c, 0xfb, 0xa8, 0x29, 0x09, 0x5a, 0xb1, 0x82, 0x41, 0x7b, 0x30, 0x33,
    +	0x1c, 0x74, 0x99, 0x26, 0x65, 0xd9, 0xa1, 0xb7, 0x2f, 0x23, 0xe9, 0x56, 0xd1, 0xb9, 0xd9, 0x8c,
    +	0x59, 0x37, 0x2e, 0xcb, 0xbe, 0x66, 0xe2, 0xed, 0x38, 0xd1, 0x0b, 0xba, 0x0d, 0xb3, 0x7d, 0xcb,
    +	0xc1, 0xc4, 0xe8, 0xee, 0xb7, 0x89, 0xe9, 0x3a, 0x5d, 0x9f, 0x87, 0x55, 0xa5, 0x31, 0x2f, 0x01,
    +	0x66, 0xd7, 0xe3, 0x62, 0x9c, 0xd4, 0x47, 0xaf, 0x01, 0x0a, 0x86, 0xf1, 0xaa, 0x48, 0x6e, 0x96,
    +	0xeb, 0xf0, 0x98, 0x2b, 0x87, 0xc1, 0xdd, 0x49, 0x69, 0xe0, 0x0c, 0x2b, 0xb4, 0x06, 0x73, 0x1e,
    +	0xd9, 0xb3, 0xd8, 0x18, 0xef, 0x59, 0x3e, 0x75, 0xbd, 0xfd, 0x35, 0xab, 0x6f, 0xd1, 0x85, 0x71,
    +	0xee, 0xd3, 0xc2, 0xe1, 0xc1, 0xf2, 0x1c, 0xce, 0x90, 0xe3, 0x4c, 0x2b, 0xfd, 0xe7, 0xe3, 0x30,
    +	0x9b, 0xc8, 0x37, 0xe8, 0x4d, 0xb8, 0x6c, 0x0e, 0x3d, 0x8f, 0x38, 0xb4, 0x39, 0xec, 0x6f, 0x11,
    +	0xaf, 0x6d, 0xee, 0x90, 0xee, 0xd0, 0x26, 0x5d, 0x1e, 0x28, 0x95, 0xc6, 0x92, 0xf4, 0xf8, 0xf2,
    +	0x4a, 0xa6, 0x16, 0xce, 0xb1, 0x66, 0xb3, 0xe0, 0xf0, 0xa6, 0x75, 0xcb, 0xf7, 0x15, 0x66, 0x89,
    +	0x63, 0xaa, 0x59, 0x68, 0xa6, 0x34, 0x70, 0x86, 0x15, 0xf3, 0xb1, 0x4b, 0x7c, 0xcb, 0x23, 0xdd,
    +	0xa4, 0x8f, 0xe5, 0xb8, 0x8f, 0x77, 0x32, 0xb5, 0x70, 0x8e, 0x35, 0x7a, 0x16, 0xa6, 0x44, 0x6f,
    +	0x7c, 0xfd, 0xe4, 0x42, 0x5f, 0x92, 0x60, 0x53, 0xcd, 0x50, 0x84, 0xa3, 0x7a, 0x6c, 0x68, 0xee,
    +	0x96, 0x4f, 0xbc, 0x3d, 0xd2, 0xcd, 0x5f, 0xe0, 0x8d, 0x94, 0x06, 0xce, 0xb0, 0x62, 0x43, 0x13,
    +	0x11, 0x98, 0x1a, 0xda, 0x78, 0x7c, 0x68, 0x9b, 0x99, 0x5a, 0x38, 0xc7, 0x9a, 0xc5, 0xb1, 0x70,
    +	0xf9, 0xf6, 0x9e, 0x61, 0xd9, 0xc6, 0x96, 0x4d, 0x16, 0x26, 0xe2, 0x71, 0xdc, 0x8c, 0x8b, 0x71,
    +	0x52, 0x1f, 0xbd, 0x0a, 0x17, 0x45, 0xd3, 0xa6, 0x63, 0x28, 0x90, 0x2a, 0x07, 0x79, 0x54, 0x82,
    +	0x5c, 0x6c, 0x26, 0x15, 0x70, 0xda, 0x06, 0xbd, 0x00, 0x33, 0xa6, 0x6b, 0xdb, 0x3c, 0x1e, 0x57,
    +	0xdc, 0xa1, 0x43, 0x17, 0x26, 0x39, 0x0a, 0x62, 0xfb, 0x71, 0x25, 0x26, 0xc1, 0x09, 0x4d, 0x44,
    +	0x00, 0xcc, 0xa0, 0xe0, 0xf8, 0x0b, 0xc0, 0xf3, 0xe3, 0x8d, 0xa2, 0x39, 0x40, 0x95, 0xaa, 0x90,
    +	0x03, 0xa8, 0x26, 0x1f, 0x47, 0x80, 0xf5, 0x3f, 0x6b, 0x30, 0x9f, 0x93, 0x3a, 0xd0, 0xcb, 0xb1,
    +	0x12, 0xfb, 0xb5, 0x44, 0x89, 0xbd, 0x92, 0x63, 0x16, 0xa9, 0xb3, 0x0e, 0x4c, 0x7b, 0x6c, 0x54,
    +	0x4e, 0x4f, 0xa8, 0xc8, 0x1c, 0xf9, 0xec, 0x31, 0xc3, 0xc0, 0x51, 0x9b, 0x30, 0xe7, 0x5f, 0x3c,
    +	0x3c, 0x58, 0x9e, 0x8e, 0xc9, 0x70, 0x1c, 0x5e, 0xff, 0x45, 0x09, 0xe0, 0x0e, 0x19, 0xd8, 0xee,
    +	0x7e, 0x9f, 0x38, 0x67, 0xc1, 0xa1, 0x36, 0x62, 0x1c, 0xea, 0xfa, 0x71, 0xcb, 0xa3, 0x5c, 0xcb,
    +	0x25, 0x51, 0x6f, 0x25, 0x48, 0x54, 0xbd, 0x38, 0xe4, 0xd1, 0x2c, 0xea, 0x6f, 0x65, 0xb8, 0x14,
    +	0x2a, 0x87, 0x34, 0xea, 0xc5, 0xd8, 0x1a, 0x7f, 0x35, 0xb1, 0xc6, 0xf3, 0x19, 0x26, 0x9f, 0x1b,
    +	0x8f, 0x7a, 0x17, 0x66, 0x18, 0xcb, 0x11, 0x6b, 0xc9, 0x39, 0xd4, 0xf8, 0xc8, 0x1c, 0x4a, 0x55,
    +	0xbb, 0xb5, 0x18, 0x12, 0x4e, 0x20, 0xe7, 0x70, 0xb6, 0x89, 0x2f, 0x22, 0x67, 0xfb, 0x50, 0x83,
    +	0x99, 0x70, 0x99, 0xce, 0x80, 0xb4, 0x35, 0xe3, 0xa4, 0xed, 0xc9, 0xc2, 0x21, 0x9a, 0xc3, 0xda,
    +	0xfe, 0xc5, 0x08, 0xbe, 0x52, 0x62, 0x1b, 0x7c, 0xcb, 0x30, 0x77, 0xd1, 0xe3, 0x30, 0xe6, 0x18,
    +	0xfd, 0x20, 0x32, 0xd5, 0x66, 0x69, 0x1a, 0x7d, 0x82, 0xb9, 0x04, 0xbd, 0xaf, 0x01, 0x92, 0x55,
    +	0xe0, 0xb6, 0xe3, 0xb8, 0xd4, 0x10, 0xb9, 0x52, 0xb8, 0xb5, 0x5a, 0xd8, 0xad, 0xa0, 0xc7, 0xda,
    +	0x66, 0x0a, 0xeb, 0xae, 0x43, 0xbd, 0xfd, 0x70, 0x91, 0xd3, 0x0a, 0x38, 0xc3, 0x01, 0x64, 0x00,
    +	0x78, 0x12, 0xb3, 0xe3, 0xca, 0x8d, 0x7c, 0xbd, 0x40, 0xce, 0x63, 0x06, 0x2b, 0xae, 0xb3, 0x6d,
    +	0xf5, 0xc2, 0xb4, 0x83, 0x15, 0x10, 0x8e, 0x80, 0x2e, 0xde, 0x85, 0xf9, 0x1c, 0x6f, 0xd1, 0x05,
     	0x28, 0xef, 0x92, 0x7d, 0x31, 0x6d, 0x98, 0xfd, 0x89, 0xe6, 0xa0, 0xb2, 0x67, 0xd8, 0x43, 0x91,
    -	0x7e, 0x27, 0xb1, 0xf8, 0xf1, 0x62, 0xe9, 0x79, 0x4d, 0xff, 0xb0, 0x12, 0x8d, 0x1d, 0xce, 0x98,
    +	0x7e, 0x27, 0xb1, 0xf8, 0xf1, 0x42, 0xe9, 0x39, 0x4d, 0xff, 0xa0, 0x12, 0x8d, 0x1d, 0xce, 0x98,
     	0xaf, 0x42, 0xd5, 0x23, 0x03, 0xdb, 0x32, 0x0d, 0x5f, 0x12, 0x21, 0x4e, 0x7e, 0xb1, 0x6c, 0xc3,
    -	0x4a, 0x1a, 0xe3, 0xd6, 0xa5, 0x87, 0xcb, 0xad, 0xcb, 0xa7, 0xc3, 0xad, 0xbf, 0x0b, 0x55, 0x3f,
    -	0x60, 0xd5, 0x63, 0x1c, 0xf2, 0xfa, 0x08, 0xf9, 0x55, 0x12, 0x6a, 0xd5, 0x81, 0xa2, 0xd2, 0x0a,
    -	0x34, 0x8b, 0x44, 0x57, 0x46, 0x24, 0xd1, 0xa7, 0x4a, 0x7c, 0x59, 0xbe, 0x19, 0x18, 0x43, 0x9f,
    -	0x74, 0x79, 0x6e, 0xab, 0x86, 0xf9, 0xa6, 0xc5, 0x5b, 0xb1, 0x94, 0xa2, 0x77, 0x63, 0x21, 0x5b,
    -	0x3d, 0x49, 0xc8, 0xce, 0xe4, 0x87, 0x2b, 0xda, 0x84, 0xf9, 0x81, 0xe7, 0xf6, 0x3c, 0xe2, 0xfb,
    -	0xb7, 0x89, 0xd1, 0xb5, 0x2d, 0x87, 0x04, 0xf3, 0x23, 0x18, 0xd1, 0x95, 0xc3, 0x83, 0xe5, 0xf9,
    -	0x56, 0xb6, 0x0a, 0xce, 0xb3, 0xd5, 0xef, 0x8f, 0xc1, 0x85, 0x64, 0x05, 0xcc, 0x21, 0xa9, 0xda,
    -	0x89, 0x48, 0xea, 0xb5, 0xc8, 0x66, 0x10, 0x0c, 0x5e, 0xad, 0x7e, 0xc6, 0x86, 0xb8, 0x05, 0xb3,
    -	0x32, 0x1b, 0x04, 0x42, 0x49, 0xd3, 0xd5, 0xea, 0x6f, 0xc6, 0xc5, 0x38, 0xa9, 0x8f, 0x5e, 0x82,
    -	0x69, 0x8f, 0xf3, 0xee, 0x00, 0x40, 0x70, 0xd7, 0x47, 0x24, 0xc0, 0x34, 0x8e, 0x0a, 0x71, 0x5c,
    -	0x97, 0xf1, 0xd6, 0x90, 0x8e, 0x06, 0x00, 0x63, 0x71, 0xde, 0x7a, 0x2b, 0xa9, 0x80, 0xd3, 0x36,
    -	0x68, 0x1d, 0x2e, 0x0d, 0x9d, 0x34, 0x94, 0x08, 0xe5, 0x2b, 0x12, 0xea, 0xd2, 0x66, 0x5a, 0x05,
    -	0x67, 0xd9, 0xa1, 0xed, 0x18, 0x95, 0x1d, 0xe7, 0xe9, 0xf9, 0x46, 0xe1, 0x8d, 0x57, 0x98, 0xcb,
    -	0x66, 0xd0, 0xed, 0x6a, 0x51, 0xba, 0xad, 0xff, 0x41, 0x8b, 0x16, 0x21, 0x45, 0x81, 0x8f, 0xbb,
    -	0x65, 0x4a, 0x59, 0x44, 0xd8, 0x91, 0x9b, 0xcd, 0x7e, 0x6f, 0x8e, 0xc4, 0x7e, 0xc3, 0xe2, 0x79,
    -	0x3c, 0xfd, 0xfd, 0xa3, 0x06, 0xb3, 0x77, 0x3b, 0x9d, 0xd6, 0xaa, 0xc3, 0x77, 0x4b, 0xcb, 0xa0,
    -	0x3b, 0xac, 0x8a, 0x0e, 0x0c, 0xba, 0x93, 0xac, 0xa2, 0x4c, 0x86, 0xb9, 0x04, 0x3d, 0x0b, 0x55,
    -	0xf6, 0x2f, 0x73, 0x9c, 0x87, 0xeb, 0x24, 0x4f, 0x32, 0xd5, 0x96, 0x6c, 0x7b, 0x10, 0xf9, 0x1b,
    -	0x2b, 0x4d, 0xf4, 0x2d, 0x98, 0x60, 0x7b, 0x9b, 0x38, 0xdd, 0x82, 0xe4, 0x57, 0x3a, 0xd5, 0x10,
    -	0x46, 0x21, 0x9f, 0x91, 0x0d, 0x38, 0x80, 0xd3, 0x77, 0x61, 0x2e, 0x32, 0x08, 0x3c, 0xb4, 0xc9,
    -	0x5b, 0xac, 0x5e, 0xa1, 0x36, 0x54, 0x58, 0xef, 0xac, 0x2a, 0x95, 0x0b, 0x5c, 0x2f, 0x26, 0x26,
    -	0x22, 0xe4, 0x1e, 0xec, 0x97, 0x8f, 0x05, 0x96, 0xbe, 0x01, 0x13, 0xab, 0xad, 0x86, 0xed, 0x0a,
    -	0xbe, 0x61, 0x5a, 0x5d, 0x2f, 0x39, 0x53, 0x2b, 0xab, 0xb7, 0x31, 0xe6, 0x12, 0xa4, 0xc3, 0x38,
    -	0xb9, 0x67, 0x92, 0x01, 0xe5, 0x14, 0x63, 0xb2, 0x01, 0x2c, 0x91, 0xde, 0xe1, 0x2d, 0x58, 0x4a,
    -	0xf4, 0x9f, 0x94, 0x60, 0x42, 0x76, 0x7b, 0x06, 0xe7, 0x8f, 0xb5, 0xd8, 0xf9, 0xe3, 0xa9, 0x62,
    -	0x4b, 0x90, 0x7b, 0xf8, 0xe8, 0x24, 0x0e, 0x1f, 0xd7, 0x0a, 0xe2, 0x1d, 0x7d, 0xf2, 0x78, 0xbf,
    -	0x04, 0x33, 0xf1, 0xc5, 0x47, 0xcf, 0xc1, 0x14, 0x4b, 0xb5, 0x96, 0x49, 0x9a, 0x21, 0xc3, 0x53,
    -	0xd7, 0x0f, 0xed, 0x50, 0x84, 0xa3, 0x7a, 0xa8, 0xa7, 0xcc, 0x5a, 0xae, 0x47, 0xe5, 0xa0, 0xf3,
    -	0xa7, 0x74, 0x48, 0x2d, 0xbb, 0x26, 0x2e, 0xdb, 0x6b, 0xab, 0x0e, 0xdd, 0xf0, 0xda, 0xd4, 0xb3,
    -	0x9c, 0x5e, 0xaa, 0x23, 0x06, 0x86, 0xa3, 0xc8, 0xe8, 0x6d, 0x96, 0xf6, 0x7d, 0x77, 0xe8, 0x99,
    -	0x24, 0x8b, 0xbe, 0x05, 0xd4, 0x83, 0x6d, 0x84, 0xee, 0x9a, 0x6b, 0x1a, 0xb6, 0x58, 0x1c, 0x4c,
    -	0xb6, 0x89, 0x47, 0x1c, 0x93, 0x04, 0x94, 0x49, 0x40, 0x60, 0x05, 0xa6, 0xff, 0x56, 0x83, 0x29,
    -	0x39, 0x17, 0x67, 0x40, 0xd4, 0xdf, 0x88, 0x13, 0xf5, 0x27, 0x0a, 0xee, 0xd0, 0x6c, 0x96, 0xfe,
    -	0x3b, 0x0d, 0x16, 0x03, 0xd7, 0x5d, 0xa3, 0xdb, 0x30, 0x6c, 0xc3, 0x31, 0x89, 0x17, 0xc4, 0xfa,
    -	0x22, 0x94, 0xac, 0x81, 0x5c, 0x49, 0x90, 0x00, 0xa5, 0xd5, 0x16, 0x2e, 0x59, 0x03, 0x56, 0x45,
    -	0x77, 0x5c, 0x9f, 0x72, 0x36, 0x2f, 0x0e, 0x8a, 0xca, 0xeb, 0xbb, 0xb2, 0x1d, 0x2b, 0x0d, 0xb4,
    -	0x09, 0x95, 0x81, 0xeb, 0x51, 0x56, 0xb9, 0xca, 0x89, 0xf5, 0x3d, 0xc2, 0x6b, 0xb6, 0x6e, 0x32,
    -	0x10, 0xc3, 0x9d, 0xce, 0x60, 0xb0, 0x40, 0xd3, 0x7f, 0xa8, 0xc1, 0xa3, 0x19, 0xfe, 0x4b, 0xd2,
    -	0xd0, 0x85, 0x09, 0x4b, 0x08, 0x65, 0x7a, 0x79, 0xa1, 0x58, 0xb7, 0x19, 0x53, 0x11, 0xa6, 0xb6,
    -	0x20, 0x85, 0x05, 0xd0, 0xfa, 0xaf, 0x34, 0xb8, 0x98, 0xf2, 0x97, 0xa7, 0x68, 0x16, 0xcf, 0x92,
    -	0x6d, 0xab, 0x14, 0xcd, 0xc2, 0x92, 0x4b, 0xd0, 0x1b, 0x50, 0xe5, 0x6f, 0x44, 0xa6, 0x6b, 0xcb,
    -	0x09, 0xac, 0x07, 0x13, 0xd8, 0x92, 0xed, 0x0f, 0x0e, 0x96, 0xaf, 0x64, 0x9c, 0xb5, 0x03, 0x31,
    -	0x56, 0x00, 0x68, 0x19, 0x2a, 0xc4, 0xf3, 0x5c, 0x4f, 0x26, 0xfb, 0x49, 0x36, 0x53, 0x77, 0x58,
    -	0x03, 0x16, 0xed, 0xfa, 0xaf, 0xc3, 0x20, 0x65, 0xd9, 0x97, 0xf9, 0xc7, 0x16, 0x27, 0x99, 0x18,
    -	0xd9, 0xd2, 0x61, 0x2e, 0x41, 0x43, 0xb8, 0x60, 0x25, 0xd2, 0xb5, 0xdc, 0x9d, 0xf5, 0x62, 0xd3,
    -	0xa8, 0xcc, 0x1a, 0x0b, 0x12, 0xfe, 0x42, 0x52, 0x82, 0x53, 0x5d, 0xe8, 0x04, 0x52, 0x5a, 0xe8,
    -	0x4d, 0x18, 0xdb, 0xa1, 0x74, 0x90, 0x71, 0xd9, 0x7f, 0x4c, 0x91, 0x08, 0x5d, 0xa8, 0xf2, 0xd1,
    -	0x75, 0x3a, 0x2d, 0xcc, 0xa1, 0xf4, 0xdf, 0x97, 0xd4, 0x7c, 0xf0, 0x13, 0xd2, 0x37, 0xd5, 0x68,
    -	0x57, 0x6c, 0xc3, 0xf7, 0x79, 0x0a, 0x13, 0xa7, 0xf9, 0xb9, 0x88, 0xe3, 0x4a, 0x86, 0x53, 0xda,
    -	0xa8, 0x13, 0x16, 0x4f, 0xed, 0x24, 0xc5, 0x73, 0x2a, 0xab, 0x70, 0xa2, 0xbb, 0x50, 0xa6, 0x76,
    -	0xd1, 0x53, 0xb9, 0x44, 0xec, 0xac, 0xb5, 0x1b, 0x53, 0x72, 0xca, 0xcb, 0x9d, 0xb5, 0x36, 0x66,
    -	0x10, 0x68, 0x03, 0x2a, 0xde, 0xd0, 0x26, 0xac, 0x0e, 0x94, 0x8b, 0xd7, 0x15, 0x36, 0x83, 0xe1,
    -	0xe6, 0x63, 0xbf, 0x7c, 0x2c, 0x70, 0xf4, 0x1f, 0x69, 0x30, 0x1d, 0xab, 0x16, 0xc8, 0x83, 0xf3,
    -	0x76, 0x64, 0xef, 0xc8, 0x79, 0x78, 0x7e, 0xf4, 0x5d, 0x27, 0x37, 0xfd, 0x9c, 0xec, 0xf7, 0x7c,
    -	0x54, 0x86, 0x63, 0x7d, 0xe8, 0x06, 0x40, 0x38, 0x6c, 0xb6, 0x0f, 0x58, 0xf0, 0x8a, 0x0d, 0x2f,
    -	0xf7, 0x01, 0x8b, 0x69, 0x1f, 0x8b, 0x76, 0x74, 0x03, 0xc0, 0x27, 0xa6, 0x47, 0x68, 0x33, 0x4c,
    -	0x5c, 0xaa, 0x1c, 0xb7, 0x95, 0x04, 0x47, 0xb4, 0xf4, 0x3f, 0x69, 0x30, 0xdd, 0x24, 0xf4, 0xfb,
    -	0xae, 0xb7, 0xdb, 0x72, 0x6d, 0xcb, 0xdc, 0x3f, 0x03, 0x12, 0x80, 0x63, 0x24, 0xe0, 0xb8, 0x7c,
    -	0x19, 0xf3, 0x2e, 0x8f, 0x0a, 0xe8, 0x1f, 0x69, 0x30, 0x1f, 0xd3, 0xbc, 0x13, 0xe6, 0x03, 0x95,
    -	0xa0, 0xb5, 0x42, 0x09, 0x3a, 0x06, 0xc3, 0x92, 0x5a, 0x76, 0x82, 0x46, 0x6b, 0x50, 0xa2, 0xae,
    -	0x8c, 0xde, 0xd1, 0x30, 0x09, 0xf1, 0xc2, 0x9a, 0xd3, 0x71, 0x71, 0x89, 0xba, 0x6c, 0x21, 0x16,
    -	0x62, 0x5a, 0xd1, 0x8c, 0xf6, 0x90, 0x46, 0x80, 0x61, 0x6c, 0xdb, 0x73, 0xfb, 0x27, 0x1e, 0x83,
    -	0x5a, 0x88, 0x57, 0x3d, 0xb7, 0x8f, 0x39, 0x96, 0xfe, 0xb1, 0x06, 0x17, 0x63, 0x9a, 0x67, 0xc0,
    -	0x1b, 0xde, 0x8c, 0xf3, 0x86, 0x6b, 0xa3, 0x0c, 0x24, 0x87, 0x3d, 0x7c, 0x5c, 0x4a, 0x0c, 0x83,
    -	0x0d, 0x18, 0x6d, 0xc3, 0xd4, 0xc0, 0xed, 0xb6, 0x4f, 0xe1, 0x81, 0x76, 0x96, 0xf1, 0xb9, 0x56,
    -	0x88, 0x85, 0xa3, 0xc0, 0xe8, 0x1e, 0x5c, 0x64, 0xd4, 0xc2, 0x1f, 0x18, 0x26, 0x69, 0x9f, 0xc2,
    -	0x95, 0xd5, 0x23, 0xfc, 0x05, 0x28, 0x89, 0x88, 0xd3, 0x9d, 0xa0, 0x75, 0x98, 0xb0, 0x06, 0xfc,
    -	0x7c, 0x21, 0x89, 0xe4, 0xb1, 0x24, 0x4c, 0x9c, 0x46, 0x44, 0x8a, 0x97, 0x3f, 0x70, 0x80, 0xa1,
    -	0xff, 0x35, 0x19, 0x0d, 0x9c, 0xae, 0xbe, 0x16, 0xa1, 0x07, 0xf2, 0xad, 0xe6, 0x64, 0xd4, 0xa0,
    -	0x29, 0x99, 0xc8, 0x49, 0x99, 0x75, 0x35, 0xc1, 0x5b, 0xbe, 0x02, 0x13, 0xc4, 0xe9, 0x72, 0xb2,
    -	0x2e, 0x2e, 0x42, 0xf8, 0xa8, 0xee, 0x88, 0x26, 0x1c, 0xc8, 0xf4, 0x1f, 0x97, 0x13, 0xa3, 0xe2,
    -	0x65, 0xf6, 0xbd, 0x53, 0x0b, 0x0e, 0x45, 0xf8, 0x73, 0x03, 0x64, 0x2b, 0xa4, 0x7f, 0x22, 0xe6,
    -	0xbf, 0x31, 0x4a, 0xcc, 0x47, 0xeb, 0x5f, 0x2e, 0xf9, 0x43, 0xdf, 0x81, 0x71, 0x22, 0xba, 0x10,
    -	0x55, 0xf5, 0xe6, 0x28, 0x5d, 0x84, 0xe9, 0x37, 0x3c, 0x67, 0xc9, 0x36, 0x89, 0x8a, 0x5e, 0x61,
    -	0xf3, 0xc5, 0x74, 0xd9, 0xb1, 0x44, 0xb0, 0xe7, 0xc9, 0xc6, 0x63, 0x62, 0xd8, 0xaa, 0xf9, 0xc1,
    -	0xc1, 0x32, 0x84, 0x3f, 0x71, 0xd4, 0x82, 0xbf, 0x9e, 0xc9, 0x3b, 0x9b, 0xb3, 0xf9, 0x02, 0x69,
    -	0xb4, 0xd7, 0xb3, 0xd0, 0xb5, 0x53, 0x7b, 0x3d, 0x8b, 0x40, 0x1e, 0x7d, 0x86, 0xfd, 0x67, 0x09,
    -	0x2e, 0x85, 0xca, 0x85, 0x5f, 0xcf, 0x32, 0x4c, 0xfe, 0xff, 0x15, 0x52, 0xb1, 0x17, 0xad, 0x70,
    -	0xea, 0xfe, 0xfb, 0x5e, 0xb4, 0x42, 0xdf, 0x72, 0xaa, 0xdd, 0x6f, 0x4a, 0xd1, 0x01, 0x8c, 0xf8,
    -	0xac, 0x72, 0x0a, 0x1f, 0xe2, 0x7c, 0xe1, 0x5e, 0x66, 0xf4, 0xbf, 0x94, 0xe1, 0x42, 0x72, 0x37,
    -	0xc6, 0x6e, 0xdf, 0xb5, 0x63, 0x6f, 0xdf, 0x5b, 0x30, 0xb7, 0x3d, 0xb4, 0xed, 0x7d, 0x3e, 0x86,
    -	0xc8, 0x15, 0xbc, 0xb8, 0xb7, 0xff, 0x92, 0xb4, 0x9c, 0x7b, 0x35, 0x43, 0x07, 0x67, 0x5a, 0xa6,
    -	0x2f, 0xe3, 0xc7, 0xfe, 0xd3, 0xcb, 0xf8, 0xca, 0x09, 0x2e, 0xe3, 0xb3, 0xdf, 0x33, 0xca, 0x27,
    -	0x7a, 0xcf, 0x38, 0xc9, 0x4d, 0x7c, 0x46, 0x12, 0x3b, 0xf6, 0xab, 0x92, 0x97, 0x61, 0x26, 0xfe,
    -	0x3a, 0x24, 0xd6, 0x52, 0x3c, 0x50, 0xc9, 0xb7, 0x98, 0xc8, 0x5a, 0x8a, 0x76, 0xac, 0x34, 0xf4,
    -	0x43, 0x0d, 0x2e, 0x67, 0x7f, 0x05, 0x82, 0x6c, 0x98, 0xe9, 0x1b, 0xf7, 0xa2, 0x5f, 0xe6, 0x68,
    -	0x27, 0x64, 0x2b, 0xfc, 0x59, 0x60, 0x3d, 0x86, 0x85, 0x13, 0xd8, 0xe8, 0x1d, 0xa8, 0xf6, 0x8d,
    -	0x7b, 0xed, 0xa1, 0xd7, 0x23, 0x27, 0x66, 0x45, 0x7c, 0x1b, 0xad, 0x4b, 0x14, 0xac, 0xf0, 0xf4,
    -	0xcf, 0x35, 0x98, 0xcf, 0xb9, 0xec, 0xff, 0x1f, 0x1a, 0xe5, 0xfb, 0x25, 0xa8, 0xb4, 0x4d, 0xc3,
    -	0x26, 0x67, 0x40, 0x28, 0x5e, 0x8f, 0x11, 0x8a, 0xe3, 0xbe, 0x26, 0xe5, 0x5e, 0xe5, 0x72, 0x09,
    -	0x9c, 0xe0, 0x12, 0x4f, 0x15, 0x42, 0x3b, 0x9a, 0x46, 0xbc, 0x00, 0x93, 0xaa, 0xd3, 0xd1, 0xb2,
    -	0x9b, 0xfe, 0xcb, 0x12, 0x4c, 0x45, 0xba, 0x18, 0x31, 0x37, 0x6e, 0xc7, 0x0a, 0x42, 0xb9, 0xc0,
    -	0x4d, 0x4b, 0xa4, 0xaf, 0x5a, 0x50, 0x02, 0xc4, 0xd7, 0x10, 0xe1, 0xfb, 0x77, 0xba, 0x32, 0xbc,
    -	0x0c, 0x33, 0xd4, 0xf0, 0x7a, 0x84, 0x2a, 0xda, 0x2e, 0x2e, 0x19, 0xd5, 0x67, 0x39, 0x9d, 0x98,
    -	0x14, 0x27, 0xb4, 0x17, 0x5f, 0x82, 0xe9, 0x58, 0x67, 0xa3, 0x7c, 0xcc, 0xd0, 0x58, 0xb9, 0xff,
    -	0xd9, 0xd2, 0xb9, 0x4f, 0x3e, 0x5b, 0x3a, 0xf7, 0xe9, 0x67, 0x4b, 0xe7, 0x7e, 0x70, 0xb8, 0xa4,
    -	0xdd, 0x3f, 0x5c, 0xd2, 0x3e, 0x39, 0x5c, 0xd2, 0x3e, 0x3d, 0x5c, 0xd2, 0xfe, 0x7e, 0xb8, 0xa4,
    -	0xfd, 0xf4, 0xf3, 0xa5, 0x73, 0xef, 0x3c, 0x76, 0xe4, 0xff, 0x6d, 0xf8, 0x77, 0x00, 0x00, 0x00,
    -	0xff, 0xff, 0xf3, 0x1c, 0xa0, 0x16, 0x14, 0x31, 0x00, 0x00,
    +	0x4a, 0x1a, 0xe3, 0xd6, 0xa5, 0xcf, 0x97, 0x5b, 0x97, 0x4f, 0x87, 0x5b, 0x7f, 0x17, 0xaa, 0x7e,
    +	0xc0, 0xaa, 0xc7, 0x38, 0xe4, 0x8d, 0x11, 0xf2, 0xab, 0x24, 0xd4, 0xaa, 0x03, 0x45, 0xa5, 0x15,
    +	0x68, 0x16, 0x89, 0xae, 0x8c, 0x48, 0xa2, 0x4f, 0x95, 0xf8, 0xb2, 0x7c, 0x33, 0x30, 0x86, 0x3e,
    +	0xe9, 0xf2, 0xdc, 0x56, 0x0d, 0xf3, 0x4d, 0x8b, 0xb7, 0x62, 0x29, 0x45, 0xef, 0xc4, 0x42, 0xb6,
    +	0x7a, 0x92, 0x90, 0x9d, 0xc9, 0x0f, 0x57, 0xb4, 0x09, 0xf3, 0x03, 0xcf, 0xed, 0x79, 0xc4, 0xf7,
    +	0xef, 0x10, 0xa3, 0x6b, 0x5b, 0x0e, 0x09, 0xe6, 0x47, 0x30, 0xa2, 0x2b, 0x87, 0x07, 0xcb, 0xf3,
    +	0xad, 0x6c, 0x15, 0x9c, 0x67, 0xab, 0x3f, 0x18, 0x83, 0x0b, 0xc9, 0x0a, 0x98, 0x43, 0x52, 0xb5,
    +	0x13, 0x91, 0xd4, 0x6b, 0x91, 0xcd, 0x20, 0x18, 0xbc, 0x5a, 0xfd, 0x8c, 0x0d, 0x71, 0x1b, 0x66,
    +	0x65, 0x36, 0x08, 0x84, 0x92, 0xa6, 0xab, 0xd5, 0xdf, 0x8c, 0x8b, 0x71, 0x52, 0x1f, 0xbd, 0x08,
    +	0xd3, 0x1e, 0xe7, 0xdd, 0x01, 0x80, 0xe0, 0xae, 0x8f, 0x48, 0x80, 0x69, 0x1c, 0x15, 0xe2, 0xb8,
    +	0x2e, 0xe3, 0xad, 0x21, 0x1d, 0x0d, 0x00, 0xc6, 0xe2, 0xbc, 0xf5, 0x76, 0x52, 0x01, 0xa7, 0x6d,
    +	0xd0, 0x3a, 0x5c, 0x1a, 0x3a, 0x69, 0x28, 0x11, 0xca, 0x57, 0x24, 0xd4, 0xa5, 0xcd, 0xb4, 0x0a,
    +	0xce, 0xb2, 0x43, 0xdb, 0x31, 0x2a, 0x3b, 0xce, 0xd3, 0xf3, 0xcd, 0xc2, 0x1b, 0xaf, 0x30, 0x97,
    +	0xcd, 0xa0, 0xdb, 0xd5, 0xa2, 0x74, 0x5b, 0xff, 0x83, 0x16, 0x2d, 0x42, 0x8a, 0x02, 0x1f, 0x77,
    +	0xcb, 0x94, 0xb2, 0x88, 0xb0, 0x23, 0x37, 0x9b, 0xfd, 0xde, 0x1a, 0x89, 0xfd, 0x86, 0xc5, 0xf3,
    +	0x78, 0xfa, 0xfb, 0x47, 0x0d, 0x66, 0xef, 0x75, 0x3a, 0xad, 0x55, 0x87, 0xef, 0x96, 0x96, 0x41,
    +	0x77, 0x58, 0x15, 0x1d, 0x18, 0x74, 0x27, 0x59, 0x45, 0x99, 0x0c, 0x73, 0x09, 0x7a, 0x06, 0xaa,
    +	0xec, 0x5f, 0xe6, 0x38, 0x0f, 0xd7, 0x49, 0x9e, 0x64, 0xaa, 0x2d, 0xd9, 0xf6, 0x30, 0xf2, 0x37,
    +	0x56, 0x9a, 0xe8, 0x5b, 0x30, 0xc1, 0xf6, 0x36, 0x71, 0xba, 0x05, 0xc9, 0xaf, 0x74, 0xaa, 0x21,
    +	0x8c, 0x42, 0x3e, 0x23, 0x1b, 0x70, 0x00, 0xa7, 0xef, 0xc2, 0x5c, 0x64, 0x10, 0x78, 0x68, 0x93,
    +	0x37, 0x59, 0xbd, 0x42, 0x6d, 0xa8, 0xb0, 0xde, 0x59, 0x55, 0x2a, 0x17, 0xb8, 0x5e, 0x4c, 0x4c,
    +	0x44, 0xc8, 0x3d, 0xd8, 0x2f, 0x1f, 0x0b, 0x2c, 0x7d, 0x03, 0x26, 0x56, 0x5b, 0x0d, 0xdb, 0x15,
    +	0x7c, 0xc3, 0xb4, 0xba, 0x5e, 0x72, 0xa6, 0x56, 0x56, 0xef, 0x60, 0xcc, 0x25, 0x48, 0x87, 0x71,
    +	0x72, 0xdf, 0x24, 0x03, 0xca, 0x29, 0xc6, 0x64, 0x03, 0x58, 0x22, 0xbd, 0xcb, 0x5b, 0xb0, 0x94,
    +	0xe8, 0x3f, 0x29, 0xc1, 0x84, 0xec, 0xf6, 0x0c, 0xce, 0x1f, 0x6b, 0xb1, 0xf3, 0xc7, 0x53, 0xc5,
    +	0x96, 0x20, 0xf7, 0xf0, 0xd1, 0x49, 0x1c, 0x3e, 0xae, 0x15, 0xc4, 0x3b, 0xfa, 0xe4, 0xf1, 0x5e,
    +	0x09, 0x66, 0xe2, 0x8b, 0x8f, 0x9e, 0x85, 0x29, 0x96, 0x6a, 0x2d, 0x93, 0x34, 0x43, 0x86, 0xa7,
    +	0xae, 0x1f, 0xda, 0xa1, 0x08, 0x47, 0xf5, 0x50, 0x4f, 0x99, 0xb5, 0x5c, 0x8f, 0xca, 0x41, 0xe7,
    +	0x4f, 0xe9, 0x90, 0x5a, 0x76, 0x4d, 0x5c, 0xb6, 0xd7, 0x56, 0x1d, 0xba, 0xe1, 0xb5, 0xa9, 0x67,
    +	0x39, 0xbd, 0x54, 0x47, 0x0c, 0x0c, 0x47, 0x91, 0xd1, 0x5b, 0x2c, 0xed, 0xfb, 0xee, 0xd0, 0x33,
    +	0x49, 0x16, 0x7d, 0x0b, 0xa8, 0x07, 0xdb, 0x08, 0xdd, 0x35, 0xd7, 0x34, 0x6c, 0xb1, 0x38, 0x98,
    +	0x6c, 0x13, 0x8f, 0x38, 0x26, 0x09, 0x28, 0x93, 0x80, 0xc0, 0x0a, 0x4c, 0xff, 0xad, 0x06, 0x53,
    +	0x72, 0x2e, 0xce, 0x80, 0xa8, 0xbf, 0x1e, 0x27, 0xea, 0x4f, 0x14, 0xdc, 0xa1, 0xd9, 0x2c, 0xfd,
    +	0x77, 0x1a, 0x2c, 0x06, 0xae, 0xbb, 0x46, 0xb7, 0x61, 0xd8, 0x86, 0x63, 0x12, 0x2f, 0x88, 0xf5,
    +	0x45, 0x28, 0x59, 0x03, 0xb9, 0x92, 0x20, 0x01, 0x4a, 0xab, 0x2d, 0x5c, 0xb2, 0x06, 0xac, 0x8a,
    +	0xee, 0xb8, 0x3e, 0xe5, 0x6c, 0x5e, 0x1c, 0x14, 0x95, 0xd7, 0xf7, 0x64, 0x3b, 0x56, 0x1a, 0x68,
    +	0x13, 0x2a, 0x03, 0xd7, 0xa3, 0xac, 0x72, 0x95, 0x13, 0xeb, 0x7b, 0x84, 0xd7, 0x6c, 0xdd, 0x64,
    +	0x20, 0x86, 0x3b, 0x9d, 0xc1, 0x60, 0x81, 0xa6, 0xff, 0x50, 0x83, 0x47, 0x33, 0xfc, 0x97, 0xa4,
    +	0xa1, 0x0b, 0x13, 0x96, 0x10, 0xca, 0xf4, 0xf2, 0x7c, 0xb1, 0x6e, 0x33, 0xa6, 0x22, 0x4c, 0x6d,
    +	0x41, 0x0a, 0x0b, 0xa0, 0xf5, 0x5f, 0x69, 0x70, 0x31, 0xe5, 0x2f, 0x4f, 0xd1, 0x2c, 0x9e, 0x25,
    +	0xdb, 0x56, 0x29, 0x9a, 0x85, 0x25, 0x97, 0xa0, 0xd7, 0xa1, 0xca, 0xdf, 0x88, 0x4c, 0xd7, 0x96,
    +	0x13, 0x58, 0x0f, 0x26, 0xb0, 0x25, 0xdb, 0x1f, 0x1e, 0x2c, 0x5f, 0xc9, 0x38, 0x6b, 0x07, 0x62,
    +	0xac, 0x00, 0xd0, 0x32, 0x54, 0x88, 0xe7, 0xb9, 0x9e, 0x4c, 0xf6, 0x93, 0x6c, 0xa6, 0xee, 0xb2,
    +	0x06, 0x2c, 0xda, 0xf5, 0x5f, 0x87, 0x41, 0xca, 0xb2, 0x2f, 0xf3, 0x8f, 0x2d, 0x4e, 0x32, 0x31,
    +	0xb2, 0xa5, 0xc3, 0x5c, 0x82, 0x86, 0x70, 0xc1, 0x4a, 0xa4, 0x6b, 0xb9, 0x3b, 0xeb, 0xc5, 0xa6,
    +	0x51, 0x99, 0x35, 0x16, 0x24, 0xfc, 0x85, 0xa4, 0x04, 0xa7, 0xba, 0xd0, 0x09, 0xa4, 0xb4, 0xd0,
    +	0x1b, 0x30, 0xb6, 0x43, 0xe9, 0x20, 0xe3, 0xb2, 0xff, 0x98, 0x22, 0x11, 0xba, 0x50, 0xe5, 0xa3,
    +	0xeb, 0x74, 0x5a, 0x98, 0x43, 0xe9, 0xbf, 0x2f, 0xa9, 0xf9, 0xe0, 0x27, 0xa4, 0x6f, 0xaa, 0xd1,
    +	0xae, 0xd8, 0x86, 0xef, 0xf3, 0x14, 0x26, 0x4e, 0xf3, 0x73, 0x11, 0xc7, 0x95, 0x0c, 0xa7, 0xb4,
    +	0x51, 0x27, 0x2c, 0x9e, 0xda, 0x49, 0x8a, 0xe7, 0x54, 0x56, 0xe1, 0x44, 0xf7, 0xa0, 0x4c, 0xed,
    +	0xa2, 0xa7, 0x72, 0x89, 0xd8, 0x59, 0x6b, 0x37, 0xa6, 0xe4, 0x94, 0x97, 0x3b, 0x6b, 0x6d, 0xcc,
    +	0x20, 0xd0, 0x06, 0x54, 0xbc, 0xa1, 0x4d, 0x58, 0x1d, 0x28, 0x17, 0xaf, 0x2b, 0x6c, 0x06, 0xc3,
    +	0xcd, 0xc7, 0x7e, 0xf9, 0x58, 0xe0, 0xe8, 0x3f, 0xd2, 0x60, 0x3a, 0x56, 0x2d, 0x90, 0x07, 0xe7,
    +	0xed, 0xc8, 0xde, 0x91, 0xf3, 0xf0, 0xdc, 0xe8, 0xbb, 0x4e, 0x6e, 0xfa, 0x39, 0xd9, 0xef, 0xf9,
    +	0xa8, 0x0c, 0xc7, 0xfa, 0xd0, 0x0d, 0x80, 0x70, 0xd8, 0x6c, 0x1f, 0xb0, 0xe0, 0x15, 0x1b, 0x5e,
    +	0xee, 0x03, 0x16, 0xd3, 0x3e, 0x16, 0xed, 0xe8, 0x26, 0x80, 0x4f, 0x4c, 0x8f, 0xd0, 0x66, 0x98,
    +	0xb8, 0x54, 0x39, 0x6e, 0x2b, 0x09, 0x8e, 0x68, 0xe9, 0x7f, 0xd2, 0x60, 0xba, 0x49, 0xe8, 0xf7,
    +	0x5d, 0x6f, 0xb7, 0xe5, 0xda, 0x96, 0xb9, 0x7f, 0x06, 0x24, 0x00, 0xc7, 0x48, 0xc0, 0x71, 0xf9,
    +	0x32, 0xe6, 0x5d, 0x1e, 0x15, 0xd0, 0x3f, 0xd4, 0x60, 0x3e, 0xa6, 0x79, 0x37, 0xcc, 0x07, 0x2a,
    +	0x41, 0x6b, 0x85, 0x12, 0x74, 0x0c, 0x86, 0x25, 0xb5, 0xec, 0x04, 0x8d, 0xd6, 0xa0, 0x44, 0x5d,
    +	0x19, 0xbd, 0xa3, 0x61, 0x12, 0xe2, 0x85, 0x35, 0xa7, 0xe3, 0xe2, 0x12, 0x75, 0xd9, 0x42, 0x2c,
    +	0xc4, 0xb4, 0xa2, 0x19, 0xed, 0x73, 0x1a, 0x01, 0x86, 0xb1, 0x6d, 0xcf, 0xed, 0x9f, 0x78, 0x0c,
    +	0x6a, 0x21, 0x5e, 0xf1, 0xdc, 0x3e, 0xe6, 0x58, 0xfa, 0x47, 0x1a, 0x5c, 0x8c, 0x69, 0x9e, 0x01,
    +	0x6f, 0x78, 0x23, 0xce, 0x1b, 0xae, 0x8d, 0x32, 0x90, 0x1c, 0xf6, 0xf0, 0x51, 0x29, 0x31, 0x0c,
    +	0x36, 0x60, 0xb4, 0x0d, 0x53, 0x03, 0xb7, 0xdb, 0x3e, 0x85, 0x07, 0xda, 0x59, 0xc6, 0xe7, 0x5a,
    +	0x21, 0x16, 0x8e, 0x02, 0xa3, 0xfb, 0x70, 0x91, 0x51, 0x0b, 0x7f, 0x60, 0x98, 0xa4, 0x7d, 0x0a,
    +	0x57, 0x56, 0x8f, 0xf0, 0x17, 0xa0, 0x24, 0x22, 0x4e, 0x77, 0x82, 0xd6, 0x61, 0xc2, 0x1a, 0xf0,
    +	0xf3, 0x85, 0x24, 0x92, 0xc7, 0x92, 0x30, 0x71, 0x1a, 0x11, 0x29, 0x5e, 0xfe, 0xc0, 0x01, 0x86,
    +	0xfe, 0xd7, 0x64, 0x34, 0x70, 0xba, 0xfa, 0x6a, 0x84, 0x1e, 0xc8, 0xb7, 0x9a, 0x93, 0x51, 0x83,
    +	0xa6, 0x64, 0x22, 0x27, 0x65, 0xd6, 0xd5, 0x04, 0x6f, 0xf9, 0x0a, 0x4c, 0x10, 0xa7, 0xcb, 0xc9,
    +	0xba, 0xb8, 0x08, 0xe1, 0xa3, 0xba, 0x2b, 0x9a, 0x70, 0x20, 0xd3, 0x7f, 0x5c, 0x4e, 0x8c, 0x8a,
    +	0x97, 0xd9, 0x77, 0x4f, 0x2d, 0x38, 0x14, 0xe1, 0xcf, 0x0d, 0x90, 0xad, 0x90, 0xfe, 0x89, 0x98,
    +	0xff, 0xc6, 0x28, 0x31, 0x1f, 0xad, 0x7f, 0xb9, 0xe4, 0x0f, 0x7d, 0x07, 0xc6, 0x89, 0xe8, 0x42,
    +	0x54, 0xd5, 0x5b, 0xa3, 0x74, 0x11, 0xa6, 0xdf, 0xf0, 0x9c, 0x25, 0xdb, 0x24, 0x2a, 0x7a, 0x99,
    +	0xcd, 0x17, 0xd3, 0x65, 0xc7, 0x12, 0xc1, 0x9e, 0x27, 0x1b, 0x8f, 0x89, 0x61, 0xab, 0xe6, 0x87,
    +	0x07, 0xcb, 0x10, 0xfe, 0xc4, 0x51, 0x0b, 0xfe, 0x7a, 0x26, 0xef, 0x6c, 0xce, 0xe6, 0x0b, 0xa4,
    +	0xd1, 0x5e, 0xcf, 0x42, 0xd7, 0x4e, 0xed, 0xf5, 0x2c, 0x02, 0x79, 0xf4, 0x19, 0xf6, 0x9f, 0x25,
    +	0xb8, 0x14, 0x2a, 0x17, 0x7e, 0x3d, 0xcb, 0x30, 0xf9, 0xff, 0x57, 0x48, 0xc5, 0x5e, 0xb4, 0xc2,
    +	0xa9, 0xfb, 0xef, 0x7b, 0xd1, 0x0a, 0x7d, 0xcb, 0xa9, 0x76, 0xbf, 0x29, 0x45, 0x07, 0x30, 0xe2,
    +	0xb3, 0xca, 0x29, 0x7c, 0x88, 0xf3, 0x85, 0x7b, 0x99, 0xd1, 0xff, 0x52, 0x86, 0x0b, 0xc9, 0xdd,
    +	0x18, 0xbb, 0x7d, 0xd7, 0x8e, 0xbd, 0x7d, 0x6f, 0xc1, 0xdc, 0xf6, 0xd0, 0xb6, 0xf7, 0xf9, 0x18,
    +	0x22, 0x57, 0xf0, 0xe2, 0xde, 0xfe, 0x4b, 0xd2, 0x72, 0xee, 0x95, 0x0c, 0x1d, 0x9c, 0x69, 0x99,
    +	0xbe, 0x8c, 0x1f, 0xfb, 0x4f, 0x2f, 0xe3, 0x2b, 0x27, 0xb8, 0x8c, 0xcf, 0x7e, 0xcf, 0x28, 0x9f,
    +	0xe8, 0x3d, 0xe3, 0x24, 0x37, 0xf1, 0x19, 0x49, 0xec, 0xd8, 0xaf, 0x4a, 0x5e, 0x82, 0x99, 0xf8,
    +	0xeb, 0x90, 0x58, 0x4b, 0xf1, 0x40, 0x25, 0xdf, 0x62, 0x22, 0x6b, 0x29, 0xda, 0xb1, 0xd2, 0xd0,
    +	0x0f, 0x35, 0xb8, 0x9c, 0xfd, 0x15, 0x08, 0xb2, 0x61, 0xa6, 0x6f, 0xdc, 0x8f, 0x7e, 0x99, 0xa3,
    +	0x9d, 0x90, 0xad, 0xf0, 0x67, 0x81, 0xf5, 0x18, 0x16, 0x4e, 0x60, 0xa3, 0xb7, 0xa1, 0xda, 0x37,
    +	0xee, 0xb7, 0x87, 0x5e, 0x8f, 0x9c, 0x98, 0x15, 0xf1, 0x6d, 0xb4, 0x2e, 0x51, 0xb0, 0xc2, 0xd3,
    +	0x3f, 0xd3, 0x60, 0x3e, 0xe7, 0xb2, 0xff, 0x7f, 0x68, 0x94, 0xef, 0x95, 0xa0, 0xd2, 0x36, 0x0d,
    +	0x9b, 0x9c, 0x01, 0xa1, 0x78, 0x2d, 0x46, 0x28, 0x8e, 0xfb, 0x9a, 0x94, 0x7b, 0x95, 0xcb, 0x25,
    +	0x70, 0x82, 0x4b, 0x3c, 0x55, 0x08, 0xed, 0x68, 0x1a, 0xf1, 0x3c, 0x4c, 0xaa, 0x4e, 0x47, 0xcb,
    +	0x6e, 0xfa, 0x2f, 0x4b, 0x30, 0x15, 0xe9, 0x62, 0xc4, 0xdc, 0xb8, 0x1d, 0x2b, 0x08, 0xe5, 0x02,
    +	0x37, 0x2d, 0x91, 0xbe, 0x6a, 0x41, 0x09, 0x10, 0x5f, 0x43, 0x84, 0xef, 0xdf, 0xe9, 0xca, 0xf0,
    +	0x12, 0xcc, 0x50, 0xc3, 0xeb, 0x11, 0xaa, 0x68, 0xbb, 0xb8, 0x64, 0x54, 0x9f, 0xe5, 0x74, 0x62,
    +	0x52, 0x9c, 0xd0, 0x5e, 0x7c, 0x11, 0xa6, 0x63, 0x9d, 0x8d, 0xf2, 0x31, 0x43, 0x63, 0xe5, 0xc1,
    +	0xa7, 0x4b, 0xe7, 0x3e, 0xfe, 0x74, 0xe9, 0xdc, 0x27, 0x9f, 0x2e, 0x9d, 0xfb, 0xc1, 0xe1, 0x92,
    +	0xf6, 0xe0, 0x70, 0x49, 0xfb, 0xf8, 0x70, 0x49, 0xfb, 0xe4, 0x70, 0x49, 0xfb, 0xfb, 0xe1, 0x92,
    +	0xf6, 0xd3, 0xcf, 0x96, 0xce, 0xbd, 0xfd, 0xd8, 0x91, 0xff, 0xb7, 0xe1, 0xdf, 0x01, 0x00, 0x00,
    +	0xff, 0xff, 0x5f, 0xd8, 0x14, 0x50, 0xfb, 0x30, 0x00, 0x00,
     }
     
     func (m *DaemonSet) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/extensions/v1beta1/generated.proto b/vendor/k8s.io/api/extensions/v1beta1/generated.proto
    index 3f2549681ecb..9bbcaa0e2618 100644
    --- a/vendor/k8s.io/api/extensions/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/extensions/v1beta1/generated.proto
    @@ -37,7 +37,7 @@ message DaemonSet {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // The desired behavior of this daemon set.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -63,7 +63,7 @@ message DaemonSetCondition {
     
       // Last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // The reason for the condition's last transition.
       // +optional
    @@ -79,7 +79,7 @@ message DaemonSetList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // A list of daemon sets.
       repeated DaemonSet items = 2;
    @@ -92,14 +92,14 @@ message DaemonSetSpec {
       // If empty, defaulted to labels on Pod template.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1;
     
       // An object that describes the pod that will be created.
       // The DaemonSet will create exactly one copy of this pod on every node
       // that matches the template's node selector (or on every node if no node
       // selector is specified).
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 2;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;
     
       // An update strategy to replace existing DaemonSet pods with new pods.
       // +optional
    @@ -176,6 +176,8 @@ message DaemonSetStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated DaemonSetCondition conditions = 10;
     }
     
    @@ -203,7 +205,7 @@ message DaemonSetUpdateStrategy {
     message Deployment {
       // Standard object metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the Deployment.
       // +optional
    @@ -223,10 +225,10 @@ message DeploymentCondition {
       optional string status = 2;
     
       // The last time this condition was updated.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6;
     
       // Last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7;
     
       // The reason for the condition's last transition.
       optional string reason = 4;
    @@ -239,7 +241,7 @@ message DeploymentCondition {
     message DeploymentList {
       // Standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of Deployments.
       repeated Deployment items = 2;
    @@ -269,10 +271,10 @@ message DeploymentSpec {
       // Label selector for pods. Existing ReplicaSets whose pods are
       // selected by this will be the ones affected by this deployment.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // Template describes the pods that will be created.
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 3;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;
     
       // The deployment strategy to use to replace existing pods with new ones.
       // +optional
    @@ -343,6 +345,8 @@ message DeploymentStatus {
       // Represents the latest available observations of a deployment's current state.
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated DeploymentCondition conditions = 6;
     
       // Count of hash collisions for the Deployment. The Deployment controller uses this
    @@ -406,6 +410,7 @@ message HTTPIngressPath {
     // or '#'.
     message HTTPIngressRuleValue {
       // A collection of paths that map requests to backends.
    +  // +listType=atomic
       repeated HTTPIngressPath paths = 1;
     }
     
    @@ -422,6 +427,7 @@ message IPBlock {
       // Valid examples are "192.168.1.0/24" or "2001:db8::/64"
       // Except values will be rejected if they are outside the CIDR range
       // +optional
    +  // +listType=atomic
       repeated string except = 2;
     }
     
    @@ -434,7 +440,7 @@ message Ingress {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec is the desired state of the Ingress.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -455,13 +461,13 @@ message IngressBackend {
     
       // Specifies the port of the referenced service.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString servicePort = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString servicePort = 2;
     
       // Resource is an ObjectRef to another Kubernetes resource in the namespace
       // of the Ingress object. If resource is specified, serviceName and servicePort
       // must not be specified.
       // +optional
    -  optional k8s.io.api.core.v1.TypedLocalObjectReference resource = 3;
    +  optional .k8s.io.api.core.v1.TypedLocalObjectReference resource = 3;
     }
     
     // IngressList is a collection of Ingress.
    @@ -469,7 +475,7 @@ message IngressList {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is the list of Ingress.
       repeated Ingress items = 2;
    @@ -495,6 +501,7 @@ message IngressLoadBalancerIngress {
     message IngressLoadBalancerStatus {
       // Ingress is a list containing ingress points for the load-balancer.
       // +optional
    +  // +listType=atomic
       repeated IngressLoadBalancerIngress ingress = 1;
     }
     
    @@ -602,11 +609,13 @@ message IngressSpec {
       // through the SNI TLS extension, if the ingress controller fulfilling the
       // ingress supports SNI.
       // +optional
    +  // +listType=atomic
       repeated IngressTLS tls = 2;
     
       // A list of host rules used to configure the Ingress. If unspecified, or
       // no rule matches, all traffic is sent to the default backend.
       // +optional
    +  // +listType=atomic
       repeated IngressRule rules = 3;
     }
     
    @@ -624,6 +633,7 @@ message IngressTLS {
       // wildcard host setting for the loadbalancer controller fulfilling this
       // Ingress, if left unspecified.
       // +optional
    +  // +listType=atomic
       repeated string hosts = 1;
     
       // SecretName is the name of the secret used to terminate SSL traffic on 443.
    @@ -641,7 +651,7 @@ message NetworkPolicy {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior for this NetworkPolicy.
       // +optional
    @@ -659,6 +669,7 @@ message NetworkPolicyEgressRule {
       // If this field is present and contains at least one item, then this rule allows
       // traffic only if the traffic matches at least one port in the list.
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyPort ports = 1;
     
       // List of destinations for outgoing traffic of pods selected for this rule.
    @@ -667,6 +678,7 @@ message NetworkPolicyEgressRule {
       // destination). If this field is present and contains at least one item, this rule
       // allows traffic only if the traffic matches at least one item in the to list.
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyPeer to = 2;
     }
     
    @@ -679,6 +691,7 @@ message NetworkPolicyIngressRule {
       // If this field is present and contains at least one item, then this rule allows traffic
       // only if the traffic matches at least one port in the list.
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyPort ports = 1;
     
       // List of sources which should be able to access the pods selected for this rule.
    @@ -687,6 +700,7 @@ message NetworkPolicyIngressRule {
       // If this field is present and contains at least one item, this rule allows traffic only if the
       // traffic matches at least one item in the from list.
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyPeer from = 2;
     }
     
    @@ -696,7 +710,7 @@ message NetworkPolicyList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of schema objects.
       repeated NetworkPolicy items = 2;
    @@ -711,7 +725,7 @@ message NetworkPolicyPeer {
       // the Pods matching PodSelector in the Namespaces selected by NamespaceSelector.
       // Otherwise it selects the Pods matching PodSelector in the policy's own Namespace.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1;
     
       // Selects Namespaces using cluster-scoped labels. This field follows standard label
       // selector semantics; if present but empty, it selects all namespaces.
    @@ -720,7 +734,7 @@ message NetworkPolicyPeer {
       // the Pods matching PodSelector in the Namespaces selected by NamespaceSelector.
       // Otherwise it selects all Pods in the Namespaces selected by NamespaceSelector.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 2;
     
       // IPBlock defines policy on a particular IPBlock. If this field is set then
       // neither of the other fields can be.
    @@ -740,7 +754,7 @@ message NetworkPolicyPort {
       // numbers.
       // If present, only traffic on the specified protocol AND port will be matched.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;
     
       // If set, indicates that the range of ports from port to endPort, inclusive,
       // should be allowed by the policy. This field cannot be defined if the port field
    @@ -757,7 +771,7 @@ message NetworkPolicySpec {
       // same set of pods.  In this case, the ingress rules for each are combined additively.
       // This field is NOT optional and follows standard label selector semantics.
       // An empty podSelector matches all pods in this namespace.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1;
     
       // List of ingress rules to be applied to the selected pods.
       // Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod
    @@ -767,6 +781,7 @@ message NetworkPolicySpec {
       // If this field is empty then this NetworkPolicy does not allow any traffic
       // (and serves solely to ensure that the pods it selects are isolated by default).
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyIngressRule ingress = 2;
     
       // List of egress rules to be applied to the selected pods. Outgoing traffic is
    @@ -777,6 +792,7 @@ message NetworkPolicySpec {
       // solely to ensure that the pods it selects are isolated by default).
       // This field is beta-level in 1.8
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyEgressRule egress = 3;
     
       // List of rule types that the NetworkPolicy relates to.
    @@ -790,6 +806,7 @@ message NetworkPolicySpec {
       // an Egress section and would otherwise default to just [ "Ingress" ]).
       // This field is beta-level in 1.8
       // +optional
    +  // +listType=atomic
       repeated string policyTypes = 4;
     }
     
    @@ -801,7 +818,7 @@ message ReplicaSet {
       // be the same as the Pod(s) that the ReplicaSet manages.
       // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Spec defines the specification of the desired behavior of the ReplicaSet.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -827,7 +844,7 @@ message ReplicaSetCondition {
     
       // The last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // The reason for the condition's last transition.
       // +optional
    @@ -843,7 +860,7 @@ message ReplicaSetList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // List of ReplicaSets.
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
    @@ -870,13 +887,13 @@ message ReplicaSetSpec {
       // Label keys and values that must match in order to be controlled by this replica set.
       // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // Template is the object that describes the pod that will be created if
       // insufficient replicas are detected.
       // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       // +optional
    -  optional k8s.io.api.core.v1.PodTemplateSpec template = 3;
    +  optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;
     }
     
     // ReplicaSetStatus represents the current status of a ReplicaSet.
    @@ -905,6 +922,8 @@ message ReplicaSetStatus {
       // +optional
       // +patchMergeKey=type
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
       repeated ReplicaSetCondition conditions = 6;
     }
     
    @@ -932,7 +951,7 @@ message RollingUpdateDaemonSet {
       // 70% of original number of DaemonSet pods are available at all times during
       // the update.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
     
       // The maximum number of nodes with an existing available DaemonSet pod that
       // can have an updated DaemonSet pod during during an update.
    @@ -954,7 +973,7 @@ message RollingUpdateDaemonSet {
       // cause evictions during disruption.
       // This is an alpha field and requires enabling DaemonSetUpdateSurge feature gate.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
     }
     
     // Spec to control the desired behavior of rolling update.
    @@ -970,7 +989,7 @@ message RollingUpdateDeployment {
       // that the total number of pods available at all times during the update is at
       // least 70% of desired pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1;
     
       // The maximum number of pods that can be scheduled above the desired number of
       // pods.
    @@ -984,14 +1003,14 @@ message RollingUpdateDeployment {
       // new RC can be scaled up further, ensuring that total number of pods running
       // at any time during the update is at most 130% of desired pods.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
     }
     
     // represents a scaling request for a resource.
     message Scale {
       // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
       // +optional
    diff --git a/vendor/k8s.io/api/extensions/v1beta1/types.go b/vendor/k8s.io/api/extensions/v1beta1/types.go
    index 70b349f654b3..09f58692f48e 100644
    --- a/vendor/k8s.io/api/extensions/v1beta1/types.go
    +++ b/vendor/k8s.io/api/extensions/v1beta1/types.go
    @@ -270,6 +270,8 @@ type DeploymentStatus struct {
     	// Represents the latest available observations of a deployment's current state.
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []DeploymentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`
     
     	// Count of hash collisions for the Deployment. The Deployment controller uses this
    @@ -490,6 +492,8 @@ type DaemonSetStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []DaemonSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"`
     }
     
    @@ -652,11 +656,13 @@ type IngressSpec struct {
     	// through the SNI TLS extension, if the ingress controller fulfilling the
     	// ingress supports SNI.
     	// +optional
    +	// +listType=atomic
     	TLS []IngressTLS `json:"tls,omitempty" protobuf:"bytes,2,rep,name=tls"`
     
     	// A list of host rules used to configure the Ingress. If unspecified, or
     	// no rule matches, all traffic is sent to the default backend.
     	// +optional
    +	// +listType=atomic
     	Rules []IngressRule `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"`
     	// TODO: Add the ability to specify load-balancer IP through claims
     }
    @@ -668,6 +674,7 @@ type IngressTLS struct {
     	// wildcard host setting for the loadbalancer controller fulfilling this
     	// Ingress, if left unspecified.
     	// +optional
    +	// +listType=atomic
     	Hosts []string `json:"hosts,omitempty" protobuf:"bytes,1,rep,name=hosts"`
     	// SecretName is the name of the secret used to terminate SSL traffic on 443.
     	// Field is left optional to allow SSL routing based on SNI hostname alone.
    @@ -690,6 +697,7 @@ type IngressStatus struct {
     type IngressLoadBalancerStatus struct {
     	// Ingress is a list containing ingress points for the load-balancer.
     	// +optional
    +	// +listType=atomic
     	Ingress []IngressLoadBalancerIngress `json:"ingress,omitempty" protobuf:"bytes,1,rep,name=ingress"`
     }
     
    @@ -767,7 +775,7 @@ type IngressRule struct {
     	// default backend, is left to the controller fulfilling the Ingress. Http is
     	// currently the only supported IngressRuleValue.
     	// +optional
    -	IngressRuleValue `json:",inline,omitempty" protobuf:"bytes,2,opt,name=ingressRuleValue"`
    +	IngressRuleValue `json:",inline" protobuf:"bytes,2,opt,name=ingressRuleValue"`
     }
     
     // IngressRuleValue represents a rule to apply against incoming requests. If the
    @@ -797,6 +805,7 @@ type IngressRuleValue struct {
     // or '#'.
     type HTTPIngressRuleValue struct {
     	// A collection of paths that map requests to backends.
    +	// +listType=atomic
     	Paths []HTTPIngressPath `json:"paths" protobuf:"bytes,1,rep,name=paths"`
     	// TODO: Consider adding fields for ingress-type specific global
     	// options usable by a loadbalancer, like http keep-alive.
    @@ -991,6 +1000,8 @@ type ReplicaSetStatus struct {
     	// +optional
     	// +patchMergeKey=type
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
     	Conditions []ReplicaSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`
     }
     
    @@ -1076,6 +1087,7 @@ type NetworkPolicySpec struct {
     	// If this field is empty then this NetworkPolicy does not allow any traffic
     	// (and serves solely to ensure that the pods it selects are isolated by default).
     	// +optional
    +	// +listType=atomic
     	Ingress []NetworkPolicyIngressRule `json:"ingress,omitempty" protobuf:"bytes,2,rep,name=ingress"`
     
     	// List of egress rules to be applied to the selected pods. Outgoing traffic is
    @@ -1086,6 +1098,7 @@ type NetworkPolicySpec struct {
     	// solely to ensure that the pods it selects are isolated by default).
     	// This field is beta-level in 1.8
     	// +optional
    +	// +listType=atomic
     	Egress []NetworkPolicyEgressRule `json:"egress,omitempty" protobuf:"bytes,3,rep,name=egress"`
     
     	// List of rule types that the NetworkPolicy relates to.
    @@ -1099,6 +1112,7 @@ type NetworkPolicySpec struct {
     	// an Egress section and would otherwise default to just [ "Ingress" ]).
     	// This field is beta-level in 1.8
     	// +optional
    +	// +listType=atomic
     	PolicyTypes []PolicyType `json:"policyTypes,omitempty" protobuf:"bytes,4,rep,name=policyTypes,casttype=PolicyType"`
     }
     
    @@ -1111,6 +1125,7 @@ type NetworkPolicyIngressRule struct {
     	// If this field is present and contains at least one item, then this rule allows traffic
     	// only if the traffic matches at least one port in the list.
     	// +optional
    +	// +listType=atomic
     	Ports []NetworkPolicyPort `json:"ports,omitempty" protobuf:"bytes,1,rep,name=ports"`
     
     	// List of sources which should be able to access the pods selected for this rule.
    @@ -1119,6 +1134,7 @@ type NetworkPolicyIngressRule struct {
     	// If this field is present and contains at least one item, this rule allows traffic only if the
     	// traffic matches at least one item in the from list.
     	// +optional
    +	// +listType=atomic
     	From []NetworkPolicyPeer `json:"from,omitempty" protobuf:"bytes,2,rep,name=from"`
     }
     
    @@ -1133,6 +1149,7 @@ type NetworkPolicyEgressRule struct {
     	// If this field is present and contains at least one item, then this rule allows
     	// traffic only if the traffic matches at least one port in the list.
     	// +optional
    +	// +listType=atomic
     	Ports []NetworkPolicyPort `json:"ports,omitempty" protobuf:"bytes,1,rep,name=ports"`
     
     	// List of destinations for outgoing traffic of pods selected for this rule.
    @@ -1141,6 +1158,7 @@ type NetworkPolicyEgressRule struct {
     	// destination). If this field is present and contains at least one item, this rule
     	// allows traffic only if the traffic matches at least one item in the to list.
     	// +optional
    +	// +listType=atomic
     	To []NetworkPolicyPeer `json:"to,omitempty" protobuf:"bytes,2,rep,name=to"`
     }
     
    @@ -1178,6 +1196,7 @@ type IPBlock struct {
     	// Valid examples are "192.168.1.0/24" or "2001:db8::/64"
     	// Except values will be rejected if they are outside the CIDR range
     	// +optional
    +	// +listType=atomic
     	Except []string `json:"except,omitempty" protobuf:"bytes,2,rep,name=except"`
     }
     
    diff --git a/vendor/k8s.io/api/flowcontrol/v1/doc.go b/vendor/k8s.io/api/flowcontrol/v1/doc.go
    index 1bc51d406658..c9e7db158937 100644
    --- a/vendor/k8s.io/api/flowcontrol/v1/doc.go
    +++ b/vendor/k8s.io/api/flowcontrol/v1/doc.go
    @@ -17,6 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     
     // +groupName=flowcontrol.apiserver.k8s.io
     
    diff --git a/vendor/k8s.io/api/flowcontrol/v1/generated.pb.go b/vendor/k8s.io/api/flowcontrol/v1/generated.pb.go
    index c235ba10dee8..b342445f71bd 100644
    --- a/vendor/k8s.io/api/flowcontrol/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/flowcontrol/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/flowcontrol/v1/generated.proto
    +// source: k8s.io/api/flowcontrol/v1/generated.proto
     
     package v1
     
    @@ -46,7 +46,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ExemptPriorityLevelConfiguration) Reset()      { *m = ExemptPriorityLevelConfiguration{} }
     func (*ExemptPriorityLevelConfiguration) ProtoMessage() {}
     func (*ExemptPriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{0}
    +	return fileDescriptor_5d08a1401821035d, []int{0}
     }
     func (m *ExemptPriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -74,7 +74,7 @@ var xxx_messageInfo_ExemptPriorityLevelConfiguration proto.InternalMessageInfo
     func (m *FlowDistinguisherMethod) Reset()      { *m = FlowDistinguisherMethod{} }
     func (*FlowDistinguisherMethod) ProtoMessage() {}
     func (*FlowDistinguisherMethod) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{1}
    +	return fileDescriptor_5d08a1401821035d, []int{1}
     }
     func (m *FlowDistinguisherMethod) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -102,7 +102,7 @@ var xxx_messageInfo_FlowDistinguisherMethod proto.InternalMessageInfo
     func (m *FlowSchema) Reset()      { *m = FlowSchema{} }
     func (*FlowSchema) ProtoMessage() {}
     func (*FlowSchema) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{2}
    +	return fileDescriptor_5d08a1401821035d, []int{2}
     }
     func (m *FlowSchema) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -130,7 +130,7 @@ var xxx_messageInfo_FlowSchema proto.InternalMessageInfo
     func (m *FlowSchemaCondition) Reset()      { *m = FlowSchemaCondition{} }
     func (*FlowSchemaCondition) ProtoMessage() {}
     func (*FlowSchemaCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{3}
    +	return fileDescriptor_5d08a1401821035d, []int{3}
     }
     func (m *FlowSchemaCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -158,7 +158,7 @@ var xxx_messageInfo_FlowSchemaCondition proto.InternalMessageInfo
     func (m *FlowSchemaList) Reset()      { *m = FlowSchemaList{} }
     func (*FlowSchemaList) ProtoMessage() {}
     func (*FlowSchemaList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{4}
    +	return fileDescriptor_5d08a1401821035d, []int{4}
     }
     func (m *FlowSchemaList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -186,7 +186,7 @@ var xxx_messageInfo_FlowSchemaList proto.InternalMessageInfo
     func (m *FlowSchemaSpec) Reset()      { *m = FlowSchemaSpec{} }
     func (*FlowSchemaSpec) ProtoMessage() {}
     func (*FlowSchemaSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{5}
    +	return fileDescriptor_5d08a1401821035d, []int{5}
     }
     func (m *FlowSchemaSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -214,7 +214,7 @@ var xxx_messageInfo_FlowSchemaSpec proto.InternalMessageInfo
     func (m *FlowSchemaStatus) Reset()      { *m = FlowSchemaStatus{} }
     func (*FlowSchemaStatus) ProtoMessage() {}
     func (*FlowSchemaStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{6}
    +	return fileDescriptor_5d08a1401821035d, []int{6}
     }
     func (m *FlowSchemaStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -242,7 +242,7 @@ var xxx_messageInfo_FlowSchemaStatus proto.InternalMessageInfo
     func (m *GroupSubject) Reset()      { *m = GroupSubject{} }
     func (*GroupSubject) ProtoMessage() {}
     func (*GroupSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{7}
    +	return fileDescriptor_5d08a1401821035d, []int{7}
     }
     func (m *GroupSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -270,7 +270,7 @@ var xxx_messageInfo_GroupSubject proto.InternalMessageInfo
     func (m *LimitResponse) Reset()      { *m = LimitResponse{} }
     func (*LimitResponse) ProtoMessage() {}
     func (*LimitResponse) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{8}
    +	return fileDescriptor_5d08a1401821035d, []int{8}
     }
     func (m *LimitResponse) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -298,7 +298,7 @@ var xxx_messageInfo_LimitResponse proto.InternalMessageInfo
     func (m *LimitedPriorityLevelConfiguration) Reset()      { *m = LimitedPriorityLevelConfiguration{} }
     func (*LimitedPriorityLevelConfiguration) ProtoMessage() {}
     func (*LimitedPriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{9}
    +	return fileDescriptor_5d08a1401821035d, []int{9}
     }
     func (m *LimitedPriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -326,7 +326,7 @@ var xxx_messageInfo_LimitedPriorityLevelConfiguration proto.InternalMessageInfo
     func (m *NonResourcePolicyRule) Reset()      { *m = NonResourcePolicyRule{} }
     func (*NonResourcePolicyRule) ProtoMessage() {}
     func (*NonResourcePolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{10}
    +	return fileDescriptor_5d08a1401821035d, []int{10}
     }
     func (m *NonResourcePolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -354,7 +354,7 @@ var xxx_messageInfo_NonResourcePolicyRule proto.InternalMessageInfo
     func (m *PolicyRulesWithSubjects) Reset()      { *m = PolicyRulesWithSubjects{} }
     func (*PolicyRulesWithSubjects) ProtoMessage() {}
     func (*PolicyRulesWithSubjects) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{11}
    +	return fileDescriptor_5d08a1401821035d, []int{11}
     }
     func (m *PolicyRulesWithSubjects) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -382,7 +382,7 @@ var xxx_messageInfo_PolicyRulesWithSubjects proto.InternalMessageInfo
     func (m *PriorityLevelConfiguration) Reset()      { *m = PriorityLevelConfiguration{} }
     func (*PriorityLevelConfiguration) ProtoMessage() {}
     func (*PriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{12}
    +	return fileDescriptor_5d08a1401821035d, []int{12}
     }
     func (m *PriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -410,7 +410,7 @@ var xxx_messageInfo_PriorityLevelConfiguration proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationCondition) Reset()      { *m = PriorityLevelConfigurationCondition{} }
     func (*PriorityLevelConfigurationCondition) ProtoMessage() {}
     func (*PriorityLevelConfigurationCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{13}
    +	return fileDescriptor_5d08a1401821035d, []int{13}
     }
     func (m *PriorityLevelConfigurationCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -438,7 +438,7 @@ var xxx_messageInfo_PriorityLevelConfigurationCondition proto.InternalMessageInf
     func (m *PriorityLevelConfigurationList) Reset()      { *m = PriorityLevelConfigurationList{} }
     func (*PriorityLevelConfigurationList) ProtoMessage() {}
     func (*PriorityLevelConfigurationList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{14}
    +	return fileDescriptor_5d08a1401821035d, []int{14}
     }
     func (m *PriorityLevelConfigurationList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -466,7 +466,7 @@ var xxx_messageInfo_PriorityLevelConfigurationList proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationReference) Reset()      { *m = PriorityLevelConfigurationReference{} }
     func (*PriorityLevelConfigurationReference) ProtoMessage() {}
     func (*PriorityLevelConfigurationReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{15}
    +	return fileDescriptor_5d08a1401821035d, []int{15}
     }
     func (m *PriorityLevelConfigurationReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -494,7 +494,7 @@ var xxx_messageInfo_PriorityLevelConfigurationReference proto.InternalMessageInf
     func (m *PriorityLevelConfigurationSpec) Reset()      { *m = PriorityLevelConfigurationSpec{} }
     func (*PriorityLevelConfigurationSpec) ProtoMessage() {}
     func (*PriorityLevelConfigurationSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{16}
    +	return fileDescriptor_5d08a1401821035d, []int{16}
     }
     func (m *PriorityLevelConfigurationSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -522,7 +522,7 @@ var xxx_messageInfo_PriorityLevelConfigurationSpec proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationStatus) Reset()      { *m = PriorityLevelConfigurationStatus{} }
     func (*PriorityLevelConfigurationStatus) ProtoMessage() {}
     func (*PriorityLevelConfigurationStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{17}
    +	return fileDescriptor_5d08a1401821035d, []int{17}
     }
     func (m *PriorityLevelConfigurationStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -550,7 +550,7 @@ var xxx_messageInfo_PriorityLevelConfigurationStatus proto.InternalMessageInfo
     func (m *QueuingConfiguration) Reset()      { *m = QueuingConfiguration{} }
     func (*QueuingConfiguration) ProtoMessage() {}
     func (*QueuingConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{18}
    +	return fileDescriptor_5d08a1401821035d, []int{18}
     }
     func (m *QueuingConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -578,7 +578,7 @@ var xxx_messageInfo_QueuingConfiguration proto.InternalMessageInfo
     func (m *ResourcePolicyRule) Reset()      { *m = ResourcePolicyRule{} }
     func (*ResourcePolicyRule) ProtoMessage() {}
     func (*ResourcePolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{19}
    +	return fileDescriptor_5d08a1401821035d, []int{19}
     }
     func (m *ResourcePolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -606,7 +606,7 @@ var xxx_messageInfo_ResourcePolicyRule proto.InternalMessageInfo
     func (m *ServiceAccountSubject) Reset()      { *m = ServiceAccountSubject{} }
     func (*ServiceAccountSubject) ProtoMessage() {}
     func (*ServiceAccountSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{20}
    +	return fileDescriptor_5d08a1401821035d, []int{20}
     }
     func (m *ServiceAccountSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -634,7 +634,7 @@ var xxx_messageInfo_ServiceAccountSubject proto.InternalMessageInfo
     func (m *Subject) Reset()      { *m = Subject{} }
     func (*Subject) ProtoMessage() {}
     func (*Subject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{21}
    +	return fileDescriptor_5d08a1401821035d, []int{21}
     }
     func (m *Subject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -662,7 +662,7 @@ var xxx_messageInfo_Subject proto.InternalMessageInfo
     func (m *UserSubject) Reset()      { *m = UserSubject{} }
     func (*UserSubject) ProtoMessage() {}
     func (*UserSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f8a25df358697d27, []int{22}
    +	return fileDescriptor_5d08a1401821035d, []int{22}
     }
     func (m *UserSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -714,111 +714,110 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/flowcontrol/v1/generated.proto", fileDescriptor_f8a25df358697d27)
    -}
    -
    -var fileDescriptor_f8a25df358697d27 = []byte{
    -	// 1588 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x4b, 0x73, 0x1b, 0xc5,
    -	0x16, 0xb6, 0x64, 0xc9, 0xb6, 0x8e, 0x9f, 0x69, 0xc7, 0x65, 0xc5, 0xb9, 0x25, 0x39, 0x73, 0xeb,
    -	0xe6, 0x71, 0x43, 0xa4, 0xc4, 0x45, 0x20, 0xa9, 0x00, 0xa9, 0x4c, 0x12, 0xf2, 0xb2, 0x1d, 0xa7,
    -	0x95, 0x07, 0x15, 0xa8, 0x82, 0xd1, 0xa8, 0x2d, 0x4d, 0x2c, 0xcd, 0x0c, 0xdd, 0x33, 0x32, 0xa6,
    -	0x8a, 0x2a, 0x7e, 0x42, 0x56, 0x2c, 0x59, 0xc0, 0x3f, 0x60, 0x45, 0xc1, 0x86, 0x65, 0x76, 0x64,
    -	0x19, 0x58, 0xa8, 0x88, 0xf8, 0x0b, 0x2c, 0x20, 0x2b, 0xaa, 0x7b, 0x7a, 0x66, 0x34, 0x92, 0x66,
    -	0xac, 0xf2, 0x22, 0x6c, 0xd8, 0x79, 0xce, 0xf9, 0xce, 0x77, 0xba, 0x4f, 0x9f, 0x97, 0x0c, 0xea,
    -	0xce, 0x05, 0x56, 0x32, 0xac, 0xf2, 0x8e, 0x5b, 0x25, 0xd4, 0x24, 0x0e, 0x61, 0xe5, 0x36, 0x31,
    -	0x6b, 0x16, 0x2d, 0x4b, 0x85, 0x66, 0x1b, 0xe5, 0xed, 0xa6, 0xb5, 0xab, 0x5b, 0xa6, 0x43, 0xad,
    -	0x66, 0xb9, 0x7d, 0xae, 0x5c, 0x27, 0x26, 0xa1, 0x9a, 0x43, 0x6a, 0x25, 0x9b, 0x5a, 0x8e, 0x85,
    -	0x8e, 0x78, 0xd0, 0x92, 0x66, 0x1b, 0xa5, 0x1e, 0x68, 0xa9, 0x7d, 0x6e, 0xe5, 0x4c, 0xdd, 0x70,
    -	0x1a, 0x6e, 0xb5, 0xa4, 0x5b, 0xad, 0x72, 0xdd, 0xaa, 0x5b, 0x65, 0x61, 0x51, 0x75, 0xb7, 0xc5,
    -	0x97, 0xf8, 0x10, 0x7f, 0x79, 0x4c, 0x2b, 0x6f, 0x86, 0x4e, 0x5b, 0x9a, 0xde, 0x30, 0x4c, 0x42,
    -	0xf7, 0xca, 0xf6, 0x4e, 0x9d, 0x0b, 0x58, 0xb9, 0x45, 0x1c, 0x6d, 0x88, 0xff, 0x95, 0x72, 0x9c,
    -	0x15, 0x75, 0x4d, 0xc7, 0x68, 0x91, 0x01, 0x83, 0xb7, 0xf6, 0x33, 0x60, 0x7a, 0x83, 0xb4, 0xb4,
    -	0x7e, 0x3b, 0xe5, 0xc7, 0x14, 0xac, 0x5e, 0xff, 0x8c, 0xb4, 0x6c, 0x67, 0x8b, 0x1a, 0x16, 0x35,
    -	0x9c, 0xbd, 0x75, 0xd2, 0x26, 0xcd, 0xab, 0x96, 0xb9, 0x6d, 0xd4, 0x5d, 0xaa, 0x39, 0x86, 0x65,
    -	0xa2, 0x0f, 0x20, 0x6f, 0x5a, 0x2d, 0xc3, 0xd4, 0xb8, 0x5c, 0x77, 0x29, 0x25, 0xa6, 0xbe, 0x57,
    -	0x69, 0x68, 0x94, 0xb0, 0x7c, 0x6a, 0x35, 0x75, 0x32, 0xab, 0xfe, 0xa7, 0xdb, 0x29, 0xe6, 0x37,
    -	0x63, 0x30, 0x38, 0xd6, 0x1a, 0xbd, 0x0b, 0xf3, 0x4d, 0x62, 0xd6, 0xb4, 0x6a, 0x93, 0x6c, 0x11,
    -	0xaa, 0x13, 0xd3, 0xc9, 0xa7, 0x05, 0xe1, 0x62, 0xb7, 0x53, 0x9c, 0x5f, 0x8f, 0xaa, 0x70, 0x3f,
    -	0x56, 0x79, 0x0c, 0xcb, 0xef, 0x37, 0xad, 0xdd, 0x6b, 0x06, 0x73, 0x0c, 0xb3, 0xee, 0x1a, 0xac,
    -	0x41, 0xe8, 0x06, 0x71, 0x1a, 0x56, 0x0d, 0x5d, 0x86, 0x8c, 0xb3, 0x67, 0x13, 0x71, 0xbe, 0x9c,
    -	0x7a, 0xfa, 0x59, 0xa7, 0x38, 0xd6, 0xed, 0x14, 0x33, 0xf7, 0xf7, 0x6c, 0xf2, 0xaa, 0x53, 0x3c,
    -	0x1a, 0x63, 0xc6, 0xd5, 0x58, 0x18, 0x2a, 0x4f, 0xd3, 0x00, 0x1c, 0x55, 0x11, 0x81, 0x43, 0x9f,
    -	0xc0, 0x14, 0x7f, 0xac, 0x9a, 0xe6, 0x68, 0x82, 0x73, 0x7a, 0xed, 0x6c, 0x29, 0x4c, 0x92, 0x20,
    -	0xe6, 0x25, 0x7b, 0xa7, 0xce, 0x05, 0xac, 0xc4, 0xd1, 0xa5, 0xf6, 0xb9, 0xd2, 0xdd, 0xea, 0x13,
    -	0xa2, 0x3b, 0x1b, 0xc4, 0xd1, 0x54, 0x24, 0x4f, 0x01, 0xa1, 0x0c, 0x07, 0xac, 0xe8, 0x0e, 0x64,
    -	0x98, 0x4d, 0x74, 0x11, 0x80, 0xe9, 0xb5, 0x53, 0xa5, 0xd8, 0x14, 0x2c, 0x85, 0xc7, 0xaa, 0xd8,
    -	0x44, 0x57, 0x67, 0xfc, 0xcb, 0xf1, 0x2f, 0x2c, 0x48, 0x50, 0x05, 0x26, 0x98, 0xa3, 0x39, 0x2e,
    -	0xcb, 0x8f, 0x0b, 0xba, 0xd3, 0xa3, 0xd1, 0x09, 0x13, 0x75, 0x4e, 0x12, 0x4e, 0x78, 0xdf, 0x58,
    -	0x52, 0x29, 0x2f, 0xd2, 0xb0, 0x18, 0x82, 0xaf, 0x5a, 0x66, 0xcd, 0x10, 0xf9, 0x71, 0x29, 0x12,
    -	0xeb, 0x13, 0x7d, 0xb1, 0x5e, 0x1e, 0x62, 0x12, 0xc6, 0x19, 0x5d, 0x0c, 0x4e, 0x9a, 0x16, 0xe6,
    -	0xc7, 0xa2, 0xce, 0x5f, 0x75, 0x8a, 0xf3, 0x81, 0x59, 0xf4, 0x3c, 0xa8, 0x0d, 0xa8, 0xa9, 0x31,
    -	0xe7, 0x3e, 0xd5, 0x4c, 0xe6, 0xd1, 0x1a, 0x2d, 0x22, 0x2f, 0xfc, 0xff, 0xd1, 0x5e, 0x87, 0x5b,
    -	0xa8, 0x2b, 0xd2, 0x25, 0x5a, 0x1f, 0x60, 0xc3, 0x43, 0x3c, 0xa0, 0xe3, 0x30, 0x41, 0x89, 0xc6,
    -	0x2c, 0x33, 0x9f, 0x11, 0x47, 0x0e, 0xe2, 0x85, 0x85, 0x14, 0x4b, 0x2d, 0x3a, 0x05, 0x93, 0x2d,
    -	0xc2, 0x98, 0x56, 0x27, 0xf9, 0xac, 0x00, 0xce, 0x4b, 0xe0, 0xe4, 0x86, 0x27, 0xc6, 0xbe, 0x5e,
    -	0xf9, 0x21, 0x05, 0x73, 0x61, 0x9c, 0xd6, 0x0d, 0xe6, 0xa0, 0x8f, 0x06, 0x32, 0xae, 0x34, 0xda,
    -	0x9d, 0xb8, 0xb5, 0xc8, 0xb7, 0x05, 0xe9, 0x6e, 0xca, 0x97, 0xf4, 0x64, 0xdb, 0x6d, 0xc8, 0x1a,
    -	0x0e, 0x69, 0xf1, 0xa8, 0x8f, 0x9f, 0x9c, 0x5e, 0xfb, 0xdf, 0x48, 0xf9, 0xa1, 0xce, 0x4a, 0xc6,
    -	0xec, 0x2d, 0x6e, 0x8b, 0x3d, 0x0a, 0xe5, 0x97, 0xf1, 0xde, 0xc3, 0xf3, 0x2c, 0x44, 0xdf, 0xa4,
    -	0x60, 0xc5, 0x8e, 0xed, 0x28, 0xf2, 0x3e, 0xef, 0x25, 0x38, 0x8d, 0x6f, 0x47, 0x98, 0x6c, 0x13,
    -	0xde, 0x43, 0x88, 0xaa, 0xc8, 0xd3, 0xac, 0x24, 0x80, 0x13, 0x4e, 0x81, 0x6e, 0x03, 0x6a, 0x69,
    -	0x0e, 0x8f, 0x63, 0x7d, 0x8b, 0x12, 0x9d, 0xd4, 0x38, 0xab, 0x6c, 0x40, 0x41, 0x4e, 0x6c, 0x0c,
    -	0x20, 0xf0, 0x10, 0x2b, 0xf4, 0x05, 0x2c, 0xd6, 0x06, 0xfb, 0x89, 0x4c, 0xc6, 0xb5, 0x7d, 0xa2,
    -	0x3b, 0xa4, 0x13, 0xa9, 0xcb, 0xdd, 0x4e, 0x71, 0x71, 0x88, 0x02, 0x0f, 0xf3, 0x83, 0x1e, 0x41,
    -	0x96, 0xba, 0x4d, 0xc2, 0xf2, 0x19, 0xf1, 0x9c, 0x49, 0x0e, 0xb7, 0xac, 0xa6, 0xa1, 0xef, 0x61,
    -	0x8e, 0x7e, 0x64, 0x38, 0x8d, 0x8a, 0x2b, 0x9a, 0x11, 0x0b, 0xdf, 0x56, 0xa8, 0xb0, 0xc7, 0xa7,
    -	0xb4, 0x61, 0xa1, 0xbf, 0x3f, 0xa0, 0x2a, 0x80, 0xee, 0x97, 0x24, 0x9f, 0x00, 0xe3, 0x7d, 0xb9,
    -	0x19, 0x9f, 0x40, 0x41, 0x25, 0x87, 0xbd, 0x30, 0x10, 0x31, 0xdc, 0xc3, 0xaa, 0x9c, 0x85, 0x99,
    -	0x1b, 0xd4, 0x72, 0x6d, 0x79, 0x3c, 0xb4, 0x0a, 0x19, 0x53, 0x6b, 0xf9, 0x3d, 0x26, 0x68, 0x79,
    -	0x9b, 0x5a, 0x8b, 0x60, 0xa1, 0x51, 0xbe, 0x4e, 0xc1, 0xec, 0xba, 0xd1, 0x32, 0x1c, 0x4c, 0x98,
    -	0x6d, 0x99, 0x8c, 0xa0, 0xf3, 0x91, 0xbe, 0x74, 0xac, 0xaf, 0x2f, 0x1d, 0x8a, 0x80, 0x7b, 0x3a,
    -	0xd2, 0x43, 0x98, 0xfc, 0xd4, 0x25, 0xae, 0x61, 0xd6, 0x65, 0x2f, 0x2e, 0x27, 0xdc, 0xed, 0x9e,
    -	0x87, 0x8c, 0x24, 0x96, 0x3a, 0xcd, 0x6b, 0x5c, 0x6a, 0xb0, 0x4f, 0xa6, 0xfc, 0x91, 0x86, 0x63,
    -	0xc2, 0x27, 0xa9, 0xfd, 0x23, 0xc3, 0x96, 0xc0, 0x6c, 0xb3, 0xf7, 0xca, 0xf2, 0x76, 0x27, 0x13,
    -	0x6e, 0x17, 0x09, 0x91, 0xba, 0x24, 0x23, 0x18, 0x0d, 0x33, 0x8e, 0xb2, 0x0e, 0x9b, 0xe9, 0xe3,
    -	0xa3, 0xcf, 0x74, 0x74, 0x17, 0x96, 0xaa, 0x16, 0xa5, 0xd6, 0xae, 0x61, 0xd6, 0x85, 0x1f, 0x9f,
    -	0x24, 0x23, 0x48, 0x8e, 0x74, 0x3b, 0xc5, 0x25, 0x75, 0x18, 0x00, 0x0f, 0xb7, 0x53, 0x76, 0x61,
    -	0x69, 0x93, 0x77, 0x0d, 0x66, 0xb9, 0x54, 0x27, 0x61, 0xf6, 0xa3, 0x22, 0x64, 0xdb, 0x84, 0x56,
    -	0xbd, 0x0c, 0xce, 0xa9, 0x39, 0x9e, 0xfb, 0x0f, 0xb9, 0x00, 0x7b, 0x72, 0x7e, 0x13, 0x33, 0xb4,
    -	0x7c, 0x80, 0xd7, 0x59, 0x7e, 0x42, 0x40, 0xc5, 0x4d, 0x36, 0xa3, 0x2a, 0xdc, 0x8f, 0x55, 0x7e,
    -	0x4e, 0xc3, 0x72, 0x4c, 0xb1, 0xa1, 0x2d, 0x98, 0x62, 0xf2, 0x6f, 0x59, 0x40, 0x4a, 0xc2, 0x33,
    -	0x48, 0xb3, 0xb0, 0xa1, 0xfb, 0x3c, 0x38, 0x60, 0x41, 0x4f, 0x60, 0x96, 0x4a, 0xef, 0xc2, 0x9d,
    -	0x6c, 0xec, 0x67, 0x12, 0x68, 0x07, 0x63, 0x12, 0x3e, 0x31, 0xee, 0xe5, 0xc2, 0x51, 0x6a, 0xd4,
    -	0x86, 0x85, 0x9e, 0xcb, 0x7a, 0xee, 0xc6, 0x85, 0xbb, 0xb3, 0x09, 0xee, 0x86, 0xbe, 0x82, 0x9a,
    -	0x97, 0x1e, 0x17, 0x36, 0xfb, 0x18, 0xf1, 0x80, 0x0f, 0xe5, 0xa7, 0x34, 0x24, 0xf4, 0xfa, 0xd7,
    -	0xb0, 0xa3, 0x7d, 0x18, 0xd9, 0xd1, 0x2e, 0x1e, 0x68, 0x7e, 0xc5, 0xee, 0x6c, 0x7a, 0xdf, 0xce,
    -	0x76, 0xe9, 0x60, 0xf4, 0xc9, 0x3b, 0xdc, 0x9f, 0x69, 0xf8, 0x6f, 0xbc, 0x71, 0xb8, 0xd3, 0xdd,
    -	0x89, 0xf4, 0xce, 0xb7, 0xfb, 0x7a, 0xe7, 0x89, 0x11, 0x28, 0xfe, 0xdd, 0xf1, 0xfa, 0x76, 0xbc,
    -	0x5f, 0x53, 0x50, 0x88, 0x8f, 0xdb, 0x6b, 0xd8, 0xf9, 0x1e, 0x47, 0x77, 0xbe, 0xf3, 0x07, 0xca,
    -	0xaf, 0x98, 0x1d, 0xf0, 0x46, 0x52, 0x5a, 0x05, 0x2b, 0xdb, 0x08, 0x63, 0xfc, 0xdb, 0x74, 0x52,
    -	0x94, 0xc4, 0x72, 0xb9, 0xcf, 0xef, 0x8d, 0x88, 0xf5, 0x75, 0x93, 0x0f, 0x97, 0x16, 0x9f, 0x0f,
    -	0x5e, 0x2e, 0xea, 0x30, 0xd9, 0xf4, 0x86, 0xb0, 0xac, 0xe2, 0x77, 0xf6, 0x9b, 0x7f, 0x49, 0xe3,
    -	0xda, 0x1b, 0xf5, 0x12, 0x86, 0x7d, 0x66, 0xf4, 0x31, 0x4c, 0x10, 0xf1, 0xab, 0x7a, 0x84, 0x52,
    -	0xde, 0xef, 0xe7, 0xb7, 0x0a, 0x3c, 0xed, 0x3c, 0x14, 0x96, 0xb4, 0xca, 0x57, 0x29, 0x58, 0xdd,
    -	0xaf, 0x07, 0x20, 0x3a, 0x64, 0x4f, 0x3b, 0xd8, 0xce, 0x3d, 0xfa, 0xde, 0xf6, 0x5d, 0x0a, 0x0e,
    -	0x0f, 0xdb, 0x89, 0x78, 0x41, 0xf1, 0x45, 0x28, 0xd8, 0x62, 0x82, 0x82, 0xba, 0x27, 0xa4, 0x58,
    -	0x6a, 0xd1, 0x1b, 0x30, 0xd5, 0xd0, 0xcc, 0x5a, 0xc5, 0xf8, 0xdc, 0x5f, 0xc5, 0x83, 0x94, 0xbe,
    -	0x29, 0xe5, 0x38, 0x40, 0xa0, 0x6b, 0xb0, 0x20, 0xec, 0xd6, 0x89, 0x59, 0x77, 0x1a, 0xe2, 0x1d,
    -	0xe4, 0xb6, 0x11, 0xcc, 0x95, 0x7b, 0x7d, 0x7a, 0x3c, 0x60, 0xa1, 0xfc, 0x95, 0x02, 0x74, 0x90,
    -	0x05, 0xe1, 0x34, 0xe4, 0x34, 0xdb, 0x10, 0x7b, 0xaa, 0x57, 0x54, 0x39, 0x75, 0xb6, 0xdb, 0x29,
    -	0xe6, 0xae, 0x6c, 0xdd, 0xf2, 0x84, 0x38, 0xd4, 0x73, 0xb0, 0x3f, 0x45, 0xbd, 0x69, 0x29, 0xc1,
    -	0xbe, 0x63, 0x86, 0x43, 0x3d, 0xba, 0x00, 0x33, 0x7a, 0xd3, 0x65, 0x0e, 0xa1, 0x15, 0xdd, 0xb2,
    -	0x89, 0x68, 0x42, 0x53, 0xea, 0x61, 0x79, 0xa7, 0x99, 0xab, 0x3d, 0x3a, 0x1c, 0x41, 0xa2, 0x12,
    -	0x00, 0xaf, 0x23, 0x66, 0x6b, 0xdc, 0x4f, 0x56, 0xf8, 0x99, 0xe3, 0x0f, 0xb6, 0x19, 0x48, 0x71,
    -	0x0f, 0x42, 0x79, 0x02, 0x4b, 0x15, 0x42, 0xdb, 0x86, 0x4e, 0xae, 0xe8, 0xba, 0xe5, 0x9a, 0x8e,
    -	0xbf, 0x71, 0x97, 0x21, 0x17, 0xc0, 0x64, 0xa9, 0x1d, 0x92, 0xfe, 0x73, 0x01, 0x17, 0x0e, 0x31,
    -	0x41, 0x6d, 0xa7, 0x63, 0x6b, 0xfb, 0xfb, 0x34, 0x4c, 0x86, 0xf4, 0x99, 0x1d, 0xc3, 0xac, 0x49,
    -	0xe6, 0xa3, 0x3e, 0xfa, 0x8e, 0x61, 0xd6, 0x5e, 0x75, 0x8a, 0xd3, 0x12, 0xc6, 0x3f, 0xb1, 0x00,
    -	0xa2, 0x6b, 0x90, 0x71, 0x19, 0xa1, 0xb2, 0x6a, 0x8f, 0x27, 0xe4, 0xf1, 0x03, 0x46, 0xa8, 0xbf,
    -	0x32, 0x4d, 0x71, 0x52, 0x2e, 0xc0, 0xc2, 0x1a, 0xdd, 0x84, 0x6c, 0x9d, 0xbf, 0x87, 0x2c, 0xcc,
    -	0x13, 0x09, 0x34, 0xbd, 0xbf, 0x3f, 0xbc, 0xc7, 0x17, 0x12, 0xec, 0x11, 0xa0, 0x26, 0xcc, 0xb1,
    -	0x48, 0xe0, 0xc4, 0x23, 0x25, 0xaf, 0x40, 0x43, 0x23, 0xad, 0xa2, 0x6e, 0xa7, 0x38, 0x17, 0x55,
    -	0xe1, 0x3e, 0x6e, 0xa5, 0x0c, 0xd3, 0x3d, 0xd7, 0xda, 0xbf, 0x8f, 0xaa, 0x97, 0x9f, 0xbd, 0x2c,
    -	0x8c, 0x3d, 0x7f, 0x59, 0x18, 0x7b, 0xf1, 0xb2, 0x30, 0xf6, 0x65, 0xb7, 0x90, 0x7a, 0xd6, 0x2d,
    -	0xa4, 0x9e, 0x77, 0x0b, 0xa9, 0x17, 0xdd, 0x42, 0xea, 0xb7, 0x6e, 0x21, 0xf5, 0xf4, 0xf7, 0xc2,
    -	0xd8, 0xe3, 0x23, 0xb1, 0xff, 0x13, 0xfd, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x0a, 0x3e, 0x83,
    -	0x48, 0x15, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/flowcontrol/v1/generated.proto", fileDescriptor_5d08a1401821035d)
    +}
    +
    +var fileDescriptor_5d08a1401821035d = []byte{
    +	// 1575 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x4b, 0x6f, 0xdb, 0x56,
    +	0x16, 0x36, 0x65, 0xc9, 0xb6, 0x8e, 0x9f, 0xb9, 0x8e, 0x61, 0xc5, 0x19, 0x48, 0x0e, 0x07, 0x93,
    +	0xc7, 0x64, 0x42, 0x25, 0xc6, 0x64, 0x26, 0x41, 0x66, 0x26, 0x08, 0x93, 0x4c, 0x5e, 0xb6, 0xe3,
    +	0x5c, 0xe5, 0x51, 0xa4, 0x05, 0x5a, 0x9a, 0xba, 0x96, 0x18, 0x8b, 0x8f, 0xf2, 0x92, 0x72, 0x5d,
    +	0xa0, 0x40, 0x7f, 0x42, 0x56, 0x5d, 0x76, 0xd1, 0xfe, 0x83, 0xae, 0x8a, 0x76, 0xd3, 0x65, 0x76,
    +	0xcd, 0x32, 0xed, 0x42, 0x68, 0xd4, 0xbf, 0xd0, 0x45, 0x9b, 0x55, 0x71, 0x2f, 0x2f, 0x49, 0x51,
    +	0x12, 0x69, 0xc1, 0x8b, 0x74, 0xd3, 0x9d, 0x79, 0xce, 0x77, 0xbe, 0x73, 0xef, 0xb9, 0xe7, 0x25,
    +	0xc3, 0x99, 0xdd, 0x4b, 0x54, 0x31, 0xec, 0xaa, 0xe6, 0x18, 0xd5, 0x9d, 0x96, 0xbd, 0xa7, 0xdb,
    +	0x96, 0xe7, 0xda, 0xad, 0x6a, 0xfb, 0x42, 0xb5, 0x41, 0x2c, 0xe2, 0x6a, 0x1e, 0xa9, 0x2b, 0x8e,
    +	0x6b, 0x7b, 0x36, 0x3a, 0x16, 0x40, 0x15, 0xcd, 0x31, 0x94, 0x1e, 0xa8, 0xd2, 0xbe, 0xb0, 0x72,
    +	0xae, 0x61, 0x78, 0x4d, 0x7f, 0x5b, 0xd1, 0x6d, 0xb3, 0xda, 0xb0, 0x1b, 0x76, 0x95, 0x5b, 0x6c,
    +	0xfb, 0x3b, 0xfc, 0x8b, 0x7f, 0xf0, 0xbf, 0x02, 0xa6, 0x95, 0x7f, 0xc6, 0x4e, 0x4d, 0x4d, 0x6f,
    +	0x1a, 0x16, 0x71, 0xf7, 0xab, 0xce, 0x6e, 0x83, 0x09, 0x68, 0xd5, 0x24, 0x9e, 0x36, 0xc4, 0xff,
    +	0x4a, 0x35, 0xcd, 0xca, 0xf5, 0x2d, 0xcf, 0x30, 0xc9, 0x80, 0xc1, 0xbf, 0x0e, 0x32, 0xa0, 0x7a,
    +	0x93, 0x98, 0x5a, 0xbf, 0x9d, 0xfc, 0xad, 0x04, 0xab, 0x37, 0x3f, 0x22, 0xa6, 0xe3, 0x6d, 0xb9,
    +	0x86, 0xed, 0x1a, 0xde, 0xfe, 0x3a, 0x69, 0x93, 0xd6, 0x75, 0xdb, 0xda, 0x31, 0x1a, 0xbe, 0xab,
    +	0x79, 0x86, 0x6d, 0xa1, 0x77, 0xa0, 0x64, 0xd9, 0xa6, 0x61, 0x69, 0x4c, 0xae, 0xfb, 0xae, 0x4b,
    +	0x2c, 0x7d, 0xbf, 0xd6, 0xd4, 0x5c, 0x42, 0x4b, 0xd2, 0xaa, 0x74, 0xba, 0xa0, 0xfe, 0xa5, 0xdb,
    +	0xa9, 0x94, 0x36, 0x53, 0x30, 0x38, 0xd5, 0x1a, 0xfd, 0x17, 0xe6, 0x5b, 0xc4, 0xaa, 0x6b, 0xdb,
    +	0x2d, 0xb2, 0x45, 0x5c, 0x9d, 0x58, 0x5e, 0x29, 0xc7, 0x09, 0x17, 0xbb, 0x9d, 0xca, 0xfc, 0x7a,
    +	0x52, 0x85, 0xfb, 0xb1, 0xf2, 0x53, 0x58, 0xfe, 0x7f, 0xcb, 0xde, 0xbb, 0x61, 0x50, 0xcf, 0xb0,
    +	0x1a, 0xbe, 0x41, 0x9b, 0xc4, 0xdd, 0x20, 0x5e, 0xd3, 0xae, 0xa3, 0xab, 0x90, 0xf7, 0xf6, 0x1d,
    +	0xc2, 0xcf, 0x57, 0x54, 0xcf, 0xbe, 0xe8, 0x54, 0xc6, 0xba, 0x9d, 0x4a, 0xfe, 0xe1, 0xbe, 0x43,
    +	0xde, 0x74, 0x2a, 0xc7, 0x53, 0xcc, 0x98, 0x1a, 0x73, 0x43, 0xf9, 0x79, 0x0e, 0x80, 0xa1, 0x6a,
    +	0x3c, 0x70, 0xe8, 0x03, 0x98, 0x62, 0x8f, 0x55, 0xd7, 0x3c, 0x8d, 0x73, 0x4e, 0xaf, 0x9d, 0x57,
    +	0xe2, 0x24, 0x89, 0x62, 0xae, 0x38, 0xbb, 0x0d, 0x26, 0xa0, 0x0a, 0x43, 0x2b, 0xed, 0x0b, 0xca,
    +	0xfd, 0xed, 0x67, 0x44, 0xf7, 0x36, 0x88, 0xa7, 0xa9, 0x48, 0x9c, 0x02, 0x62, 0x19, 0x8e, 0x58,
    +	0xd1, 0x3d, 0xc8, 0x53, 0x87, 0xe8, 0x3c, 0x00, 0xd3, 0x6b, 0x67, 0x94, 0xd4, 0x14, 0x54, 0xe2,
    +	0x63, 0xd5, 0x1c, 0xa2, 0xab, 0x33, 0xe1, 0xe5, 0xd8, 0x17, 0xe6, 0x24, 0xa8, 0x06, 0x13, 0xd4,
    +	0xd3, 0x3c, 0x9f, 0x96, 0xc6, 0x39, 0xdd, 0xd9, 0xd1, 0xe8, 0xb8, 0x89, 0x3a, 0x27, 0x08, 0x27,
    +	0x82, 0x6f, 0x2c, 0xa8, 0xe4, 0x57, 0x39, 0x58, 0x8c, 0xc1, 0xd7, 0x6d, 0xab, 0x6e, 0xf0, 0xfc,
    +	0xb8, 0x92, 0x88, 0xf5, 0xa9, 0xbe, 0x58, 0x2f, 0x0f, 0x31, 0x89, 0xe3, 0x8c, 0x2e, 0x47, 0x27,
    +	0xcd, 0x71, 0xf3, 0x13, 0x49, 0xe7, 0x6f, 0x3a, 0x95, 0xf9, 0xc8, 0x2c, 0x79, 0x1e, 0xd4, 0x06,
    +	0xd4, 0xd2, 0xa8, 0xf7, 0xd0, 0xd5, 0x2c, 0x1a, 0xd0, 0x1a, 0x26, 0x11, 0x17, 0xfe, 0xfb, 0x68,
    +	0xaf, 0xc3, 0x2c, 0xd4, 0x15, 0xe1, 0x12, 0xad, 0x0f, 0xb0, 0xe1, 0x21, 0x1e, 0xd0, 0x49, 0x98,
    +	0x70, 0x89, 0x46, 0x6d, 0xab, 0x94, 0xe7, 0x47, 0x8e, 0xe2, 0x85, 0xb9, 0x14, 0x0b, 0x2d, 0x3a,
    +	0x03, 0x93, 0x26, 0xa1, 0x54, 0x6b, 0x90, 0x52, 0x81, 0x03, 0xe7, 0x05, 0x70, 0x72, 0x23, 0x10,
    +	0xe3, 0x50, 0x2f, 0x7f, 0x23, 0xc1, 0x5c, 0x1c, 0xa7, 0x75, 0x83, 0x7a, 0xe8, 0xbd, 0x81, 0x8c,
    +	0x53, 0x46, 0xbb, 0x13, 0xb3, 0xe6, 0xf9, 0xb6, 0x20, 0xdc, 0x4d, 0x85, 0x92, 0x9e, 0x6c, 0xbb,
    +	0x0b, 0x05, 0xc3, 0x23, 0x26, 0x8b, 0xfa, 0xf8, 0xe9, 0xe9, 0xb5, 0xbf, 0x8d, 0x94, 0x1f, 0xea,
    +	0xac, 0x60, 0x2c, 0xdc, 0x61, 0xb6, 0x38, 0xa0, 0x90, 0x7f, 0x18, 0xef, 0x3d, 0x3c, 0xcb, 0x42,
    +	0xf4, 0x85, 0x04, 0x2b, 0x4e, 0x6a, 0x47, 0x11, 0xf7, 0xf9, 0x5f, 0x86, 0xd3, 0xf4, 0x76, 0x84,
    +	0xc9, 0x0e, 0x61, 0x3d, 0x84, 0xa8, 0xb2, 0x38, 0xcd, 0x4a, 0x06, 0x38, 0xe3, 0x14, 0xe8, 0x2e,
    +	0x20, 0x53, 0xf3, 0x58, 0x1c, 0x1b, 0x5b, 0x2e, 0xd1, 0x49, 0x9d, 0xb1, 0x8a, 0x06, 0x14, 0xe5,
    +	0xc4, 0xc6, 0x00, 0x02, 0x0f, 0xb1, 0x42, 0x9f, 0xc0, 0x62, 0x7d, 0xb0, 0x9f, 0x88, 0x64, 0x5c,
    +	0x3b, 0x20, 0xba, 0x43, 0x3a, 0x91, 0xba, 0xdc, 0xed, 0x54, 0x16, 0x87, 0x28, 0xf0, 0x30, 0x3f,
    +	0xe8, 0x09, 0x14, 0x5c, 0xbf, 0x45, 0x68, 0x29, 0xcf, 0x9f, 0x33, 0xcb, 0xe1, 0x96, 0xdd, 0x32,
    +	0xf4, 0x7d, 0xcc, 0xd0, 0x4f, 0x0c, 0xaf, 0x59, 0xf3, 0x79, 0x33, 0xa2, 0xf1, 0xdb, 0x72, 0x15,
    +	0x0e, 0xf8, 0xe4, 0x36, 0x2c, 0xf4, 0xf7, 0x07, 0xb4, 0x0d, 0xa0, 0x87, 0x25, 0xc9, 0x26, 0xc0,
    +	0x78, 0x5f, 0x6e, 0xa6, 0x27, 0x50, 0x54, 0xc9, 0x71, 0x2f, 0x8c, 0x44, 0x14, 0xf7, 0xb0, 0xca,
    +	0xe7, 0x61, 0xe6, 0x96, 0x6b, 0xfb, 0x8e, 0x38, 0x1e, 0x5a, 0x85, 0xbc, 0xa5, 0x99, 0x61, 0x8f,
    +	0x89, 0x5a, 0xde, 0xa6, 0x66, 0x12, 0xcc, 0x35, 0xf2, 0xe7, 0x12, 0xcc, 0xae, 0x1b, 0xa6, 0xe1,
    +	0x61, 0x42, 0x1d, 0xdb, 0xa2, 0x04, 0x5d, 0x4c, 0xf4, 0xa5, 0x13, 0x7d, 0x7d, 0xe9, 0x48, 0x02,
    +	0xdc, 0xd3, 0x91, 0x1e, 0xc3, 0xe4, 0x87, 0x3e, 0xf1, 0x0d, 0xab, 0x21, 0x7a, 0x71, 0x35, 0xe3,
    +	0x6e, 0x0f, 0x02, 0x64, 0x22, 0xb1, 0xd4, 0x69, 0x56, 0xe3, 0x42, 0x83, 0x43, 0x32, 0xf9, 0x97,
    +	0x1c, 0x9c, 0xe0, 0x3e, 0x49, 0xfd, 0x0f, 0x19, 0xb6, 0x04, 0x66, 0x5b, 0xbd, 0x57, 0x16, 0xb7,
    +	0x3b, 0x9d, 0x71, 0xbb, 0x44, 0x88, 0xd4, 0x25, 0x11, 0xc1, 0x64, 0x98, 0x71, 0x92, 0x75, 0xd8,
    +	0x4c, 0x1f, 0x1f, 0x7d, 0xa6, 0xa3, 0xfb, 0xb0, 0xb4, 0x6d, 0xbb, 0xae, 0xbd, 0x67, 0x58, 0x0d,
    +	0xee, 0x27, 0x24, 0xc9, 0x73, 0x92, 0x63, 0xdd, 0x4e, 0x65, 0x49, 0x1d, 0x06, 0xc0, 0xc3, 0xed,
    +	0xe4, 0x3d, 0x58, 0xda, 0x64, 0x5d, 0x83, 0xda, 0xbe, 0xab, 0x93, 0x38, 0xfb, 0x51, 0x05, 0x0a,
    +	0x6d, 0xe2, 0x6e, 0x07, 0x19, 0x5c, 0x54, 0x8b, 0x2c, 0xf7, 0x1f, 0x33, 0x01, 0x0e, 0xe4, 0xec,
    +	0x26, 0x56, 0x6c, 0xf9, 0x08, 0xaf, 0xd3, 0xd2, 0x04, 0x87, 0xf2, 0x9b, 0x6c, 0x26, 0x55, 0xb8,
    +	0x1f, 0x2b, 0x7f, 0x9f, 0x83, 0xe5, 0x94, 0x62, 0x43, 0x5b, 0x30, 0x45, 0xc5, 0xdf, 0xa2, 0x80,
    +	0xe4, 0x8c, 0x67, 0x10, 0x66, 0x71, 0x43, 0x0f, 0x79, 0x70, 0xc4, 0x82, 0x9e, 0xc1, 0xac, 0x2b,
    +	0xbc, 0x73, 0x77, 0xa2, 0xb1, 0x9f, 0xcb, 0xa0, 0x1d, 0x8c, 0x49, 0xfc, 0xc4, 0xb8, 0x97, 0x0b,
    +	0x27, 0xa9, 0x51, 0x1b, 0x16, 0x7a, 0x2e, 0x1b, 0xb8, 0x1b, 0xe7, 0xee, 0xce, 0x67, 0xb8, 0x1b,
    +	0xfa, 0x0a, 0x6a, 0x49, 0x78, 0x5c, 0xd8, 0xec, 0x63, 0xc4, 0x03, 0x3e, 0xe4, 0xef, 0x72, 0x90,
    +	0xd1, 0xeb, 0xdf, 0xc2, 0x8e, 0xf6, 0x6e, 0x62, 0x47, 0xbb, 0x7c, 0xa8, 0xf9, 0x95, 0xba, 0xb3,
    +	0xe9, 0x7d, 0x3b, 0xdb, 0x95, 0xc3, 0xd1, 0x67, 0xef, 0x70, 0xbf, 0xe6, 0xe0, 0xaf, 0xe9, 0xc6,
    +	0xf1, 0x4e, 0x77, 0x2f, 0xd1, 0x3b, 0xff, 0xdd, 0xd7, 0x3b, 0x4f, 0x8d, 0x40, 0xf1, 0xe7, 0x8e,
    +	0xd7, 0xb7, 0xe3, 0xfd, 0x28, 0x41, 0x39, 0x3d, 0x6e, 0x6f, 0x61, 0xe7, 0x7b, 0x9a, 0xdc, 0xf9,
    +	0x2e, 0x1e, 0x2a, 0xbf, 0x52, 0x76, 0xc0, 0x5b, 0x59, 0x69, 0x15, 0xad, 0x6c, 0x23, 0x8c, 0xf1,
    +	0x2f, 0x73, 0x59, 0x51, 0xe2, 0xcb, 0xe5, 0x01, 0xbf, 0x37, 0x12, 0xd6, 0x37, 0x2d, 0x36, 0x5c,
    +	0x4c, 0x36, 0x1f, 0x82, 0x5c, 0xd4, 0x61, 0xb2, 0x15, 0x0c, 0x61, 0x51, 0xc5, 0xff, 0x39, 0x68,
    +	0xfe, 0x65, 0x8d, 0xeb, 0x60, 0xd4, 0x0b, 0x18, 0x0e, 0x99, 0xd1, 0xfb, 0x30, 0x41, 0xf8, 0xaf,
    +	0xea, 0x11, 0x4a, 0xf9, 0xa0, 0x9f, 0xdf, 0x2a, 0xb0, 0xb4, 0x0b, 0x50, 0x58, 0xd0, 0xca, 0x9f,
    +	0x49, 0xb0, 0x7a, 0x50, 0x0f, 0x40, 0xee, 0x90, 0x3d, 0xed, 0x70, 0x3b, 0xf7, 0xe8, 0x7b, 0xdb,
    +	0x57, 0x12, 0x1c, 0x1d, 0xb6, 0x13, 0xb1, 0x82, 0x62, 0x8b, 0x50, 0xb4, 0xc5, 0x44, 0x05, 0xf5,
    +	0x80, 0x4b, 0xb1, 0xd0, 0xa2, 0x7f, 0xc0, 0x54, 0x53, 0xb3, 0xea, 0x35, 0xe3, 0xe3, 0x70, 0x15,
    +	0x8f, 0x52, 0xfa, 0xb6, 0x90, 0xe3, 0x08, 0x81, 0x6e, 0xc0, 0x02, 0xb7, 0x5b, 0x27, 0x56, 0xc3,
    +	0x6b, 0xf2, 0x77, 0x10, 0xdb, 0x46, 0x34, 0x57, 0x1e, 0xf4, 0xe9, 0xf1, 0x80, 0x85, 0xfc, 0x9b,
    +	0x04, 0xe8, 0x30, 0x0b, 0xc2, 0x59, 0x28, 0x6a, 0x8e, 0xc1, 0xf7, 0xd4, 0xa0, 0xa8, 0x8a, 0xea,
    +	0x6c, 0xb7, 0x53, 0x29, 0x5e, 0xdb, 0xba, 0x13, 0x08, 0x71, 0xac, 0x67, 0xe0, 0x70, 0x8a, 0x06,
    +	0xd3, 0x52, 0x80, 0x43, 0xc7, 0x14, 0xc7, 0x7a, 0x74, 0x09, 0x66, 0xf4, 0x96, 0x4f, 0x3d, 0xe2,
    +	0xd6, 0x74, 0xdb, 0x21, 0xbc, 0x09, 0x4d, 0xa9, 0x47, 0xc5, 0x9d, 0x66, 0xae, 0xf7, 0xe8, 0x70,
    +	0x02, 0x89, 0x14, 0x00, 0x56, 0x47, 0xd4, 0xd1, 0x98, 0x9f, 0x02, 0xf7, 0x33, 0xc7, 0x1e, 0x6c,
    +	0x33, 0x92, 0xe2, 0x1e, 0x84, 0xfc, 0x0c, 0x96, 0x6a, 0xc4, 0x6d, 0x1b, 0x3a, 0xb9, 0xa6, 0xeb,
    +	0xb6, 0x6f, 0x79, 0xe1, 0xc6, 0x5d, 0x85, 0x62, 0x04, 0x13, 0xa5, 0x76, 0x44, 0xf8, 0x2f, 0x46,
    +	0x5c, 0x38, 0xc6, 0x44, 0xb5, 0x9d, 0x4b, 0xad, 0xed, 0xaf, 0x73, 0x30, 0x19, 0xd3, 0xe7, 0x77,
    +	0x0d, 0xab, 0x2e, 0x98, 0x8f, 0x87, 0xe8, 0x7b, 0x86, 0x55, 0x7f, 0xd3, 0xa9, 0x4c, 0x0b, 0x18,
    +	0xfb, 0xc4, 0x1c, 0x88, 0x6e, 0x40, 0xde, 0xa7, 0xc4, 0x15, 0x55, 0x7b, 0x32, 0x23, 0x8f, 0x1f,
    +	0x51, 0xe2, 0x86, 0x2b, 0xd3, 0x14, 0x23, 0x65, 0x02, 0xcc, 0xad, 0xd1, 0x6d, 0x28, 0x34, 0xd8,
    +	0x7b, 0x88, 0xc2, 0x3c, 0x95, 0x41, 0xd3, 0xfb, 0xfb, 0x23, 0x78, 0x7c, 0x2e, 0xc1, 0x01, 0x01,
    +	0x6a, 0xc1, 0x1c, 0x4d, 0x04, 0x8e, 0x3f, 0x52, 0xf6, 0x0a, 0x34, 0x34, 0xd2, 0x2a, 0xea, 0x76,
    +	0x2a, 0x73, 0x49, 0x15, 0xee, 0xe3, 0x96, 0xab, 0x30, 0xdd, 0x73, 0xad, 0x83, 0xfb, 0xa8, 0x7a,
    +	0xf5, 0xc5, 0xeb, 0xf2, 0xd8, 0xcb, 0xd7, 0xe5, 0xb1, 0x57, 0xaf, 0xcb, 0x63, 0x9f, 0x76, 0xcb,
    +	0xd2, 0x8b, 0x6e, 0x59, 0x7a, 0xd9, 0x2d, 0x4b, 0xaf, 0xba, 0x65, 0xe9, 0xa7, 0x6e, 0x59, 0x7a,
    +	0xfe, 0x73, 0x79, 0xec, 0xe9, 0xb1, 0xd4, 0xff, 0x89, 0xfe, 0x1e, 0x00, 0x00, 0xff, 0xff, 0x16,
    +	0x4e, 0x14, 0xcf, 0x2f, 0x15, 0x00, 0x00,
     }
     
     func (m *ExemptPriorityLevelConfiguration) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/flowcontrol/v1/generated.proto b/vendor/k8s.io/api/flowcontrol/v1/generated.proto
    index a5c6f4fc4f39..33a135889e51 100644
    --- a/vendor/k8s.io/api/flowcontrol/v1/generated.proto
    +++ b/vendor/k8s.io/api/flowcontrol/v1/generated.proto
    @@ -76,7 +76,7 @@ message FlowSchema {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // `spec` is the specification of the desired behavior of a FlowSchema.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -101,7 +101,7 @@ message FlowSchemaCondition {
       optional string status = 2;
     
       // `lastTransitionTime` is the last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // `reason` is a unique, one-word, CamelCase reason for the condition's last transition.
       optional string reason = 4;
    @@ -115,7 +115,7 @@ message FlowSchemaList {
       // `metadata` is the standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // `items` is a list of FlowSchemas.
       repeated FlowSchema items = 2;
    @@ -302,7 +302,7 @@ message PriorityLevelConfiguration {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // `spec` is the specification of the desired behavior of a "request-priority".
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -327,7 +327,7 @@ message PriorityLevelConfigurationCondition {
       optional string status = 2;
     
       // `lastTransitionTime` is the last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // `reason` is a unique, one-word, CamelCase reason for the condition's last transition.
       optional string reason = 4;
    @@ -341,7 +341,7 @@ message PriorityLevelConfigurationList {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // `items` is a list of request-priorities.
       repeated PriorityLevelConfiguration items = 2;
    diff --git a/vendor/k8s.io/api/flowcontrol/v1/types.go b/vendor/k8s.io/api/flowcontrol/v1/types.go
    index e62d23280e58..ad72bcee2285 100644
    --- a/vendor/k8s.io/api/flowcontrol/v1/types.go
    +++ b/vendor/k8s.io/api/flowcontrol/v1/types.go
    @@ -106,6 +106,7 @@ const (
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.29
     
     // FlowSchema defines the schema of a group of flows. Note that a flow is made up of a set of inbound API requests with
     // similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher".
    @@ -126,6 +127,7 @@ type FlowSchema struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.29
     
     // FlowSchemaList is a list of FlowSchema objects.
     type FlowSchemaList struct {
    @@ -381,6 +383,7 @@ type FlowSchemaConditionType string
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.29
     
     // PriorityLevelConfiguration represents the configuration of a priority level.
     type PriorityLevelConfiguration struct {
    @@ -400,6 +403,7 @@ type PriorityLevelConfiguration struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.29
     
     // PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects.
     type PriorityLevelConfigurationList struct {
    diff --git a/vendor/k8s.io/api/flowcontrol/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/flowcontrol/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..fbab9868c707
    --- /dev/null
    +++ b/vendor/k8s.io/api/flowcontrol/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,46 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *FlowSchema) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 29
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *FlowSchemaList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 29
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PriorityLevelConfiguration) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 29
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PriorityLevelConfigurationList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 29
    +}
    diff --git a/vendor/k8s.io/api/flowcontrol/v1beta1/generated.pb.go b/vendor/k8s.io/api/flowcontrol/v1beta1/generated.pb.go
    index 33f4b97e391d..96e368f6fdb9 100644
    --- a/vendor/k8s.io/api/flowcontrol/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/flowcontrol/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto
    +// source: k8s.io/api/flowcontrol/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -46,7 +46,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ExemptPriorityLevelConfiguration) Reset()      { *m = ExemptPriorityLevelConfiguration{} }
     func (*ExemptPriorityLevelConfiguration) ProtoMessage() {}
     func (*ExemptPriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{0}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{0}
     }
     func (m *ExemptPriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -74,7 +74,7 @@ var xxx_messageInfo_ExemptPriorityLevelConfiguration proto.InternalMessageInfo
     func (m *FlowDistinguisherMethod) Reset()      { *m = FlowDistinguisherMethod{} }
     func (*FlowDistinguisherMethod) ProtoMessage() {}
     func (*FlowDistinguisherMethod) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{1}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{1}
     }
     func (m *FlowDistinguisherMethod) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -102,7 +102,7 @@ var xxx_messageInfo_FlowDistinguisherMethod proto.InternalMessageInfo
     func (m *FlowSchema) Reset()      { *m = FlowSchema{} }
     func (*FlowSchema) ProtoMessage() {}
     func (*FlowSchema) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{2}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{2}
     }
     func (m *FlowSchema) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -130,7 +130,7 @@ var xxx_messageInfo_FlowSchema proto.InternalMessageInfo
     func (m *FlowSchemaCondition) Reset()      { *m = FlowSchemaCondition{} }
     func (*FlowSchemaCondition) ProtoMessage() {}
     func (*FlowSchemaCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{3}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{3}
     }
     func (m *FlowSchemaCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -158,7 +158,7 @@ var xxx_messageInfo_FlowSchemaCondition proto.InternalMessageInfo
     func (m *FlowSchemaList) Reset()      { *m = FlowSchemaList{} }
     func (*FlowSchemaList) ProtoMessage() {}
     func (*FlowSchemaList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{4}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{4}
     }
     func (m *FlowSchemaList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -186,7 +186,7 @@ var xxx_messageInfo_FlowSchemaList proto.InternalMessageInfo
     func (m *FlowSchemaSpec) Reset()      { *m = FlowSchemaSpec{} }
     func (*FlowSchemaSpec) ProtoMessage() {}
     func (*FlowSchemaSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{5}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{5}
     }
     func (m *FlowSchemaSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -214,7 +214,7 @@ var xxx_messageInfo_FlowSchemaSpec proto.InternalMessageInfo
     func (m *FlowSchemaStatus) Reset()      { *m = FlowSchemaStatus{} }
     func (*FlowSchemaStatus) ProtoMessage() {}
     func (*FlowSchemaStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{6}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{6}
     }
     func (m *FlowSchemaStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -242,7 +242,7 @@ var xxx_messageInfo_FlowSchemaStatus proto.InternalMessageInfo
     func (m *GroupSubject) Reset()      { *m = GroupSubject{} }
     func (*GroupSubject) ProtoMessage() {}
     func (*GroupSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{7}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{7}
     }
     func (m *GroupSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -270,7 +270,7 @@ var xxx_messageInfo_GroupSubject proto.InternalMessageInfo
     func (m *LimitResponse) Reset()      { *m = LimitResponse{} }
     func (*LimitResponse) ProtoMessage() {}
     func (*LimitResponse) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{8}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{8}
     }
     func (m *LimitResponse) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -298,7 +298,7 @@ var xxx_messageInfo_LimitResponse proto.InternalMessageInfo
     func (m *LimitedPriorityLevelConfiguration) Reset()      { *m = LimitedPriorityLevelConfiguration{} }
     func (*LimitedPriorityLevelConfiguration) ProtoMessage() {}
     func (*LimitedPriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{9}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{9}
     }
     func (m *LimitedPriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -326,7 +326,7 @@ var xxx_messageInfo_LimitedPriorityLevelConfiguration proto.InternalMessageInfo
     func (m *NonResourcePolicyRule) Reset()      { *m = NonResourcePolicyRule{} }
     func (*NonResourcePolicyRule) ProtoMessage() {}
     func (*NonResourcePolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{10}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{10}
     }
     func (m *NonResourcePolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -354,7 +354,7 @@ var xxx_messageInfo_NonResourcePolicyRule proto.InternalMessageInfo
     func (m *PolicyRulesWithSubjects) Reset()      { *m = PolicyRulesWithSubjects{} }
     func (*PolicyRulesWithSubjects) ProtoMessage() {}
     func (*PolicyRulesWithSubjects) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{11}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{11}
     }
     func (m *PolicyRulesWithSubjects) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -382,7 +382,7 @@ var xxx_messageInfo_PolicyRulesWithSubjects proto.InternalMessageInfo
     func (m *PriorityLevelConfiguration) Reset()      { *m = PriorityLevelConfiguration{} }
     func (*PriorityLevelConfiguration) ProtoMessage() {}
     func (*PriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{12}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{12}
     }
     func (m *PriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -410,7 +410,7 @@ var xxx_messageInfo_PriorityLevelConfiguration proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationCondition) Reset()      { *m = PriorityLevelConfigurationCondition{} }
     func (*PriorityLevelConfigurationCondition) ProtoMessage() {}
     func (*PriorityLevelConfigurationCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{13}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{13}
     }
     func (m *PriorityLevelConfigurationCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -438,7 +438,7 @@ var xxx_messageInfo_PriorityLevelConfigurationCondition proto.InternalMessageInf
     func (m *PriorityLevelConfigurationList) Reset()      { *m = PriorityLevelConfigurationList{} }
     func (*PriorityLevelConfigurationList) ProtoMessage() {}
     func (*PriorityLevelConfigurationList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{14}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{14}
     }
     func (m *PriorityLevelConfigurationList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -466,7 +466,7 @@ var xxx_messageInfo_PriorityLevelConfigurationList proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationReference) Reset()      { *m = PriorityLevelConfigurationReference{} }
     func (*PriorityLevelConfigurationReference) ProtoMessage() {}
     func (*PriorityLevelConfigurationReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{15}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{15}
     }
     func (m *PriorityLevelConfigurationReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -494,7 +494,7 @@ var xxx_messageInfo_PriorityLevelConfigurationReference proto.InternalMessageInf
     func (m *PriorityLevelConfigurationSpec) Reset()      { *m = PriorityLevelConfigurationSpec{} }
     func (*PriorityLevelConfigurationSpec) ProtoMessage() {}
     func (*PriorityLevelConfigurationSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{16}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{16}
     }
     func (m *PriorityLevelConfigurationSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -522,7 +522,7 @@ var xxx_messageInfo_PriorityLevelConfigurationSpec proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationStatus) Reset()      { *m = PriorityLevelConfigurationStatus{} }
     func (*PriorityLevelConfigurationStatus) ProtoMessage() {}
     func (*PriorityLevelConfigurationStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{17}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{17}
     }
     func (m *PriorityLevelConfigurationStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -550,7 +550,7 @@ var xxx_messageInfo_PriorityLevelConfigurationStatus proto.InternalMessageInfo
     func (m *QueuingConfiguration) Reset()      { *m = QueuingConfiguration{} }
     func (*QueuingConfiguration) ProtoMessage() {}
     func (*QueuingConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{18}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{18}
     }
     func (m *QueuingConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -578,7 +578,7 @@ var xxx_messageInfo_QueuingConfiguration proto.InternalMessageInfo
     func (m *ResourcePolicyRule) Reset()      { *m = ResourcePolicyRule{} }
     func (*ResourcePolicyRule) ProtoMessage() {}
     func (*ResourcePolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{19}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{19}
     }
     func (m *ResourcePolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -606,7 +606,7 @@ var xxx_messageInfo_ResourcePolicyRule proto.InternalMessageInfo
     func (m *ServiceAccountSubject) Reset()      { *m = ServiceAccountSubject{} }
     func (*ServiceAccountSubject) ProtoMessage() {}
     func (*ServiceAccountSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{20}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{20}
     }
     func (m *ServiceAccountSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -634,7 +634,7 @@ var xxx_messageInfo_ServiceAccountSubject proto.InternalMessageInfo
     func (m *Subject) Reset()      { *m = Subject{} }
     func (*Subject) ProtoMessage() {}
     func (*Subject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{21}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{21}
     }
     func (m *Subject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -662,7 +662,7 @@ var xxx_messageInfo_Subject proto.InternalMessageInfo
     func (m *UserSubject) Reset()      { *m = UserSubject{} }
     func (*UserSubject) ProtoMessage() {}
     func (*UserSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_80171c2a4e3669de, []int{22}
    +	return fileDescriptor_3a5cb22a034fcb2a, []int{22}
     }
     func (m *UserSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -714,112 +714,111 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto", fileDescriptor_80171c2a4e3669de)
    +	proto.RegisterFile("k8s.io/api/flowcontrol/v1beta1/generated.proto", fileDescriptor_3a5cb22a034fcb2a)
     }
     
    -var fileDescriptor_80171c2a4e3669de = []byte{
    -	// 1614 bytes of a gzipped FileDescriptorProto
    +var fileDescriptor_3a5cb22a034fcb2a = []byte{
    +	// 1599 bytes of a gzipped FileDescriptorProto
     	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0xcf, 0x73, 0xdb, 0xc4,
     	0x17, 0x8f, 0x1c, 0x3b, 0x89, 0x5f, 0x7e, 0x76, 0xd3, 0x4c, 0xfc, 0x4d, 0xbf, 0x63, 0xa7, 0x62,
     	0x86, 0x02, 0x6d, 0xe5, 0xb6, 0xb4, 0xb4, 0xc0, 0xf0, 0x23, 0x4a, 0x4b, 0x29, 0x4d, 0xd2, 0x74,
    -	0xd3, 0x42, 0xa7, 0x74, 0x86, 0xca, 0xf2, 0xc6, 0x56, 0x63, 0x4b, 0xea, 0xae, 0xe4, 0x10, 0x7a,
    -	0x61, 0xf8, 0x0b, 0x38, 0xc3, 0x91, 0x03, 0x27, 0x2e, 0x5c, 0x39, 0x70, 0xa4, 0xc3, 0xa9, 0xc7,
    -	0x9e, 0x0c, 0x35, 0x27, 0xfe, 0x03, 0xe8, 0x0c, 0x33, 0xcc, 0xae, 0xd6, 0x92, 0xe5, 0x5f, 0xf2,
    -	0xb4, 0x33, 0x3d, 0x71, 0x8b, 0xde, 0xfb, 0xbc, 0xcf, 0xdb, 0x7d, 0xfb, 0x7e, 0x39, 0x70, 0x79,
    -	0xef, 0x02, 0xd3, 0x2c, 0xa7, 0xb8, 0xe7, 0x97, 0x08, 0xb5, 0x89, 0x47, 0x58, 0xb1, 0x41, 0xec,
    -	0xb2, 0x43, 0x8b, 0x52, 0x61, 0xb8, 0x56, 0x71, 0xb7, 0xe6, 0xec, 0x9b, 0x8e, 0xed, 0x51, 0xa7,
    -	0x56, 0x6c, 0x9c, 0x2e, 0x11, 0xcf, 0x38, 0x5d, 0xac, 0x10, 0x9b, 0x50, 0xc3, 0x23, 0x65, 0xcd,
    -	0xa5, 0x8e, 0xe7, 0xa0, 0x7c, 0x80, 0xd7, 0x0c, 0xd7, 0xd2, 0x3a, 0xf0, 0x9a, 0xc4, 0xaf, 0x9c,
    -	0xac, 0x58, 0x5e, 0xd5, 0x2f, 0x69, 0xa6, 0x53, 0x2f, 0x56, 0x9c, 0x8a, 0x53, 0x14, 0x66, 0x25,
    -	0x7f, 0x57, 0x7c, 0x89, 0x0f, 0xf1, 0x57, 0x40, 0xb7, 0x72, 0x36, 0x72, 0x5f, 0x37, 0xcc, 0xaa,
    -	0x65, 0x13, 0x7a, 0x50, 0x74, 0xf7, 0x2a, 0x5c, 0xc0, 0x8a, 0x75, 0xe2, 0x19, 0xc5, 0x46, 0xcf,
    -	0x21, 0x56, 0x8a, 0x83, 0xac, 0xa8, 0x6f, 0x7b, 0x56, 0x9d, 0xf4, 0x18, 0xbc, 0x91, 0x64, 0xc0,
    -	0xcc, 0x2a, 0xa9, 0x1b, 0xdd, 0x76, 0xea, 0x4f, 0x0a, 0xac, 0x5e, 0xfa, 0x9c, 0xd4, 0x5d, 0x6f,
    -	0x9b, 0x5a, 0x0e, 0xb5, 0xbc, 0x83, 0x0d, 0xd2, 0x20, 0xb5, 0x75, 0xc7, 0xde, 0xb5, 0x2a, 0x3e,
    -	0x35, 0x3c, 0xcb, 0xb1, 0xd1, 0x2d, 0xc8, 0xd9, 0x4e, 0xdd, 0xb2, 0x0d, 0x2e, 0x37, 0x7d, 0x4a,
    -	0x89, 0x6d, 0x1e, 0xec, 0x54, 0x0d, 0x4a, 0x58, 0x4e, 0x59, 0x55, 0x5e, 0xc9, 0xe8, 0xff, 0x6f,
    -	0x35, 0x0b, 0xb9, 0xad, 0x01, 0x18, 0x3c, 0xd0, 0x1a, 0xbd, 0x03, 0xf3, 0x35, 0x62, 0x97, 0x8d,
    -	0x52, 0x8d, 0x6c, 0x13, 0x6a, 0x12, 0xdb, 0xcb, 0xa5, 0x04, 0xe1, 0x62, 0xab, 0x59, 0x98, 0xdf,
    -	0x88, 0xab, 0x70, 0x37, 0x56, 0xbd, 0x0d, 0xcb, 0x1f, 0xd4, 0x9c, 0xfd, 0x8b, 0x16, 0xf3, 0x2c,
    -	0xbb, 0xe2, 0x5b, 0xac, 0x4a, 0xe8, 0x26, 0xf1, 0xaa, 0x4e, 0x19, 0xbd, 0x07, 0x69, 0xef, 0xc0,
    -	0x25, 0xe2, 0x7c, 0x59, 0xfd, 0xf8, 0xc3, 0x66, 0x61, 0xac, 0xd5, 0x2c, 0xa4, 0x6f, 0x1c, 0xb8,
    -	0xe4, 0x69, 0xb3, 0x70, 0x64, 0x80, 0x19, 0x57, 0x63, 0x61, 0xa8, 0x7e, 0x93, 0x02, 0xe0, 0xa8,
    -	0x1d, 0x11, 0x38, 0x74, 0x17, 0xa6, 0xf8, 0x63, 0x95, 0x0d, 0xcf, 0x10, 0x9c, 0xd3, 0x67, 0x4e,
    -	0x69, 0x51, 0xa6, 0x84, 0x31, 0xd7, 0xdc, 0xbd, 0x0a, 0x17, 0x30, 0x8d, 0xa3, 0xb5, 0xc6, 0x69,
    -	0xed, 0x5a, 0xe9, 0x1e, 0x31, 0xbd, 0x4d, 0xe2, 0x19, 0x3a, 0x92, 0xa7, 0x80, 0x48, 0x86, 0x43,
    -	0x56, 0xb4, 0x0d, 0x69, 0xe6, 0x12, 0x53, 0x04, 0x60, 0xfa, 0x8c, 0xa6, 0x0d, 0xcf, 0x43, 0x2d,
    -	0x3a, 0xdb, 0x8e, 0x4b, 0x4c, 0x7d, 0xa6, 0x7d, 0x43, 0xfe, 0x85, 0x05, 0x13, 0xba, 0x05, 0x13,
    -	0xcc, 0x33, 0x3c, 0x9f, 0xe5, 0xc6, 0x7b, 0x4e, 0x9c, 0xc4, 0x29, 0xec, 0xf4, 0x39, 0xc9, 0x3a,
    -	0x11, 0x7c, 0x63, 0xc9, 0xa7, 0x3e, 0x4e, 0xc1, 0x62, 0x04, 0x5e, 0x77, 0xec, 0xb2, 0x25, 0x32,
    -	0xe5, 0xed, 0x58, 0xd4, 0x8f, 0x75, 0x45, 0x7d, 0xb9, 0x8f, 0x49, 0x14, 0x71, 0xf4, 0x66, 0x78,
    -	0xdc, 0x94, 0x30, 0x3f, 0x1a, 0x77, 0xfe, 0xb4, 0x59, 0x98, 0x0f, 0xcd, 0xe2, 0xe7, 0x41, 0x0d,
    -	0x40, 0x35, 0x83, 0x79, 0x37, 0xa8, 0x61, 0xb3, 0x80, 0xd6, 0xaa, 0x13, 0x79, 0xeb, 0xd7, 0x46,
    -	0x7b, 0x27, 0x6e, 0xa1, 0xaf, 0x48, 0x97, 0x68, 0xa3, 0x87, 0x0d, 0xf7, 0xf1, 0x80, 0x5e, 0x86,
    -	0x09, 0x4a, 0x0c, 0xe6, 0xd8, 0xb9, 0xb4, 0x38, 0x72, 0x18, 0x2f, 0x2c, 0xa4, 0x58, 0x6a, 0xd1,
    -	0xab, 0x30, 0x59, 0x27, 0x8c, 0x19, 0x15, 0x92, 0xcb, 0x08, 0xe0, 0xbc, 0x04, 0x4e, 0x6e, 0x06,
    -	0x62, 0xdc, 0xd6, 0xab, 0x3f, 0x2b, 0x30, 0x17, 0xc5, 0x69, 0xc3, 0x62, 0x1e, 0xba, 0xd3, 0x93,
    -	0x7b, 0xda, 0x68, 0x77, 0xe2, 0xd6, 0x22, 0xf3, 0x16, 0xa4, 0xbb, 0xa9, 0xb6, 0xa4, 0x23, 0xef,
    -	0xae, 0x41, 0xc6, 0xf2, 0x48, 0x9d, 0x47, 0x7d, 0xbc, 0x2b, 0x5c, 0x09, 0x49, 0xa2, 0xcf, 0x4a,
    -	0xda, 0xcc, 0x15, 0x4e, 0x80, 0x03, 0x1e, 0xf5, 0xcf, 0xf1, 0xce, 0x1b, 0xf0, 0x7c, 0x44, 0xdf,
    -	0x2b, 0xb0, 0xe2, 0x0e, 0x6c, 0x30, 0xf2, 0x52, 0xeb, 0x49, 0x9e, 0x07, 0xb7, 0x28, 0x4c, 0x76,
    -	0x09, 0xef, 0x2b, 0x44, 0x57, 0xe5, 0x91, 0x56, 0x86, 0x80, 0x87, 0x1c, 0x05, 0x7d, 0x04, 0xa8,
    -	0x6e, 0x78, 0x3c, 0xa2, 0x95, 0x6d, 0x4a, 0x4c, 0x52, 0xe6, 0xac, 0xb2, 0x29, 0x85, 0xd9, 0xb1,
    -	0xd9, 0x83, 0xc0, 0x7d, 0xac, 0xd0, 0x57, 0x0a, 0x2c, 0x96, 0x7b, 0x9b, 0x8c, 0xcc, 0xcb, 0xf3,
    -	0xa3, 0x04, 0xba, 0x4f, 0x8f, 0xd2, 0x97, 0x5b, 0xcd, 0xc2, 0x62, 0x1f, 0x05, 0xee, 0xe7, 0x0c,
    -	0xdd, 0x81, 0x0c, 0xf5, 0x6b, 0x84, 0xe5, 0xd2, 0xe2, 0x79, 0x13, 0xbd, 0x6e, 0x3b, 0x35, 0xcb,
    -	0x3c, 0xc0, 0xdc, 0xe4, 0x13, 0xcb, 0xab, 0xee, 0xf8, 0xa2, 0x57, 0xb1, 0xe8, 0xad, 0x85, 0x0a,
    -	0x07, 0xa4, 0xea, 0x03, 0x58, 0xe8, 0x6e, 0x1a, 0xa8, 0x02, 0x60, 0xb6, 0xeb, 0x94, 0x0f, 0x08,
    -	0xee, 0xf6, 0xf5, 0xd1, 0xb3, 0x2a, 0xac, 0xf1, 0xa8, 0x5f, 0x86, 0x22, 0x86, 0x3b, 0xa8, 0xd5,
    -	0x53, 0x30, 0x73, 0x99, 0x3a, 0xbe, 0x2b, 0xcf, 0x88, 0x56, 0x21, 0x6d, 0x1b, 0xf5, 0x76, 0xf7,
    -	0x09, 0x3b, 0xe2, 0x96, 0x51, 0x27, 0x58, 0x68, 0xd4, 0xef, 0x14, 0x98, 0xdd, 0xb0, 0xea, 0x96,
    -	0x87, 0x09, 0x73, 0x1d, 0x9b, 0x11, 0x74, 0x2e, 0xd6, 0xb1, 0x8e, 0x76, 0x75, 0xac, 0x43, 0x31,
    -	0x70, 0x47, 0xaf, 0xfa, 0x14, 0x26, 0xef, 0xfb, 0xc4, 0xb7, 0xec, 0x8a, 0xec, 0xd7, 0x67, 0x93,
    -	0x2e, 0x78, 0x3d, 0x80, 0xc7, 0xb2, 0x4d, 0x9f, 0xe6, 0x2d, 0x40, 0x6a, 0x70, 0x9b, 0x51, 0xfd,
    -	0x27, 0x05, 0x47, 0x85, 0x63, 0x52, 0x1e, 0x32, 0x95, 0xef, 0x40, 0xce, 0x60, 0xcc, 0xa7, 0xa4,
    -	0x3c, 0x68, 0x2a, 0xaf, 0xca, 0xdb, 0xe4, 0xd6, 0x06, 0xe0, 0xf0, 0x40, 0x06, 0x74, 0x0f, 0x66,
    -	0x6b, 0x9d, 0x77, 0x97, 0xd7, 0x3c, 0x99, 0x74, 0xcd, 0x58, 0xc0, 0xf4, 0x25, 0x79, 0x82, 0x78,
    -	0xd0, 0x71, 0x9c, 0xba, 0xdf, 0x16, 0x30, 0x3e, 0xfa, 0x16, 0x80, 0xae, 0xc1, 0x52, 0xc9, 0xa1,
    -	0xd4, 0xd9, 0xb7, 0xec, 0x8a, 0xf0, 0xd3, 0x26, 0x49, 0x0b, 0x92, 0xff, 0xb5, 0x9a, 0x85, 0x25,
    -	0xbd, 0x1f, 0x00, 0xf7, 0xb7, 0x53, 0xf7, 0x61, 0x69, 0x8b, 0xf7, 0x14, 0xe6, 0xf8, 0xd4, 0x24,
    -	0x51, 0x41, 0xa0, 0x02, 0x64, 0x1a, 0x84, 0x96, 0x82, 0xa4, 0xce, 0xea, 0x59, 0x5e, 0x0e, 0x1f,
    -	0x73, 0x01, 0x0e, 0xe4, 0xfc, 0x26, 0x76, 0x64, 0x79, 0x13, 0x6f, 0xb0, 0xdc, 0x84, 0x80, 0x8a,
    -	0x9b, 0x6c, 0xc5, 0x55, 0xb8, 0x1b, 0xab, 0x36, 0x53, 0xb0, 0x3c, 0xa0, 0xfe, 0xd0, 0x4d, 0x98,
    -	0x62, 0xf2, 0x6f, 0x59, 0x53, 0xc7, 0x92, 0xde, 0x42, 0xda, 0x46, 0xdd, 0xbf, 0x4d, 0x86, 0x43,
    -	0x2a, 0xe4, 0xc0, 0x2c, 0x95, 0x47, 0x10, 0x3e, 0xe5, 0x14, 0x38, 0x93, 0xc4, 0xdd, 0x1b, 0x9d,
    -	0xe8, 0xb1, 0x71, 0x27, 0x21, 0x8e, 0xf3, 0xa3, 0x07, 0xb0, 0xd0, 0x71, 0xed, 0xc0, 0xe7, 0xb8,
    -	0xf0, 0x79, 0x2e, 0xc9, 0x67, 0xdf, 0x47, 0xd1, 0x73, 0xd2, 0xed, 0xc2, 0x56, 0x17, 0x2d, 0xee,
    -	0x71, 0xa4, 0xfe, 0x9a, 0x82, 0x21, 0x83, 0xe1, 0x05, 0x2c, 0x79, 0x77, 0x63, 0x4b, 0xde, 0xbb,
    -	0xcf, 0x3e, 0xf1, 0x06, 0x2e, 0x7d, 0xd5, 0xae, 0xa5, 0xef, 0xfd, 0xe7, 0xf0, 0x31, 0x7c, 0x09,
    -	0xfc, 0x2b, 0x05, 0x2f, 0x0d, 0x36, 0x8e, 0x96, 0xc2, 0xab, 0xb1, 0x16, 0x7b, 0xbe, 0xab, 0xc5,
    -	0x1e, 0x1b, 0x81, 0xe2, 0xbf, 0x25, 0xb1, 0x6b, 0x49, 0xfc, 0x4d, 0x81, 0xfc, 0xe0, 0xb8, 0xbd,
    -	0x80, 0xa5, 0xf1, 0xb3, 0xf8, 0xd2, 0xf8, 0xd6, 0xb3, 0x27, 0xd9, 0x80, 0x25, 0xf2, 0xf2, 0xb0,
    -	0xdc, 0x0a, 0xd7, 0xbd, 0x11, 0x46, 0xfe, 0x0f, 0xa9, 0x61, 0xa1, 0x12, 0xdb, 0x69, 0xc2, 0xaf,
    -	0x96, 0x98, 0xf5, 0x25, 0x9b, 0x8f, 0x9e, 0x3a, 0x9f, 0x1e, 0x41, 0x42, 0x56, 0x61, 0xb2, 0x16,
    -	0xcc, 0x6a, 0x59, 0xd4, 0x6b, 0x23, 0x8d, 0xc8, 0x61, 0xa3, 0x3d, 0x58, 0x0b, 0x24, 0x0c, 0xb7,
    -	0xe9, 0x51, 0x19, 0x26, 0x88, 0xf8, 0xa9, 0x3e, 0x6a, 0x65, 0x27, 0xfd, 0xb0, 0xd7, 0x81, 0x67,
    -	0x61, 0x80, 0xc2, 0x92, 0x5b, 0xfd, 0x56, 0x81, 0xd5, 0xa4, 0x96, 0x80, 0xf6, 0xfb, 0xac, 0x78,
    -	0xcf, 0xb1, 0xbe, 0x8f, 0xbe, 0xf2, 0xfd, 0xa8, 0xc0, 0xe1, 0x7e, 0x9b, 0x14, 0x2f, 0x32, 0xbe,
    -	0x3e, 0x85, 0xbb, 0x4f, 0x58, 0x64, 0xd7, 0x85, 0x14, 0x4b, 0x2d, 0x3a, 0x01, 0x53, 0x55, 0xc3,
    -	0x2e, 0xef, 0x58, 0x5f, 0xb4, 0xb7, 0xfa, 0x30, 0xcd, 0x3f, 0x94, 0x72, 0x1c, 0x22, 0xd0, 0x45,
    -	0x58, 0x10, 0x76, 0x1b, 0xc4, 0xae, 0x78, 0x55, 0xf1, 0x22, 0x72, 0x35, 0x09, 0xa7, 0xce, 0xf5,
    -	0x2e, 0x3d, 0xee, 0xb1, 0x50, 0xff, 0x56, 0x00, 0x3d, 0xcb, 0x36, 0x71, 0x1c, 0xb2, 0x86, 0x6b,
    -	0x89, 0x15, 0x37, 0x28, 0xb4, 0xac, 0x3e, 0xdb, 0x6a, 0x16, 0xb2, 0x6b, 0xdb, 0x57, 0x02, 0x21,
    -	0x8e, 0xf4, 0x1c, 0xdc, 0x1e, 0xb4, 0xc1, 0x40, 0x95, 0xe0, 0xb6, 0x63, 0x86, 0x23, 0x3d, 0xba,
    -	0x00, 0x33, 0x66, 0xcd, 0x67, 0x1e, 0xa1, 0x3b, 0xa6, 0xe3, 0x12, 0xd1, 0x98, 0xa6, 0xf4, 0xc3,
    -	0xf2, 0x4e, 0x33, 0xeb, 0x1d, 0x3a, 0x1c, 0x43, 0x22, 0x0d, 0x80, 0x97, 0x15, 0x73, 0x0d, 0xee,
    -	0x27, 0x23, 0xfc, 0xcc, 0xf1, 0x07, 0xdb, 0x0a, 0xa5, 0xb8, 0x03, 0xa1, 0xde, 0x83, 0xa5, 0x1d,
    -	0x42, 0x1b, 0x96, 0x49, 0xd6, 0x4c, 0xd3, 0xf1, 0x6d, 0xaf, 0xbd, 0xac, 0x17, 0x21, 0x1b, 0xc2,
    -	0x64, 0xe5, 0x1d, 0x92, 0xfe, 0xb3, 0x21, 0x17, 0x8e, 0x30, 0x61, 0xa9, 0xa7, 0x06, 0x96, 0xfa,
    -	0x2f, 0x29, 0x98, 0x8c, 0xe8, 0xd3, 0x7b, 0x96, 0x5d, 0x96, 0xcc, 0x47, 0xda, 0xe8, 0xab, 0x96,
    -	0x5d, 0x7e, 0xda, 0x2c, 0x4c, 0x4b, 0x18, 0xff, 0xc4, 0x02, 0x88, 0xae, 0x40, 0xda, 0x67, 0x84,
    -	0xca, 0x22, 0x3e, 0x9e, 0x94, 0xcc, 0x37, 0x19, 0xa1, 0xed, 0xfd, 0x6a, 0x8a, 0x33, 0x73, 0x01,
    -	0x16, 0x14, 0x68, 0x13, 0x32, 0x15, 0xfe, 0x28, 0xb2, 0x4e, 0x4f, 0x24, 0x71, 0x75, 0xfe, 0x88,
    -	0x09, 0xd2, 0x40, 0x48, 0x70, 0xc0, 0x82, 0xee, 0xc3, 0x1c, 0x8b, 0x85, 0x50, 0x3c, 0xd7, 0x08,
    -	0xfb, 0x52, 0xdf, 0xc0, 0xeb, 0xa8, 0xd5, 0x2c, 0xcc, 0xc5, 0x55, 0xb8, 0xcb, 0x81, 0x5a, 0x84,
    -	0xe9, 0x8e, 0x0b, 0x26, 0x77, 0x59, 0xfd, 0xe2, 0xc3, 0x27, 0xf9, 0xb1, 0x47, 0x4f, 0xf2, 0x63,
    -	0x8f, 0x9f, 0xe4, 0xc7, 0xbe, 0x6c, 0xe5, 0x95, 0x87, 0xad, 0xbc, 0xf2, 0xa8, 0x95, 0x57, 0x1e,
    -	0xb7, 0xf2, 0xca, 0xef, 0xad, 0xbc, 0xf2, 0xf5, 0x1f, 0xf9, 0xb1, 0xdb, 0xf9, 0xe1, 0xff, 0x8b,
    -	0xfd, 0x37, 0x00, 0x00, 0xff, 0xff, 0x3a, 0xda, 0x82, 0x48, 0xc5, 0x15, 0x00, 0x00,
    +	0xd3, 0x42, 0xa7, 0x74, 0x86, 0x2a, 0xf2, 0xc6, 0x56, 0x63, 0xfd, 0xa8, 0x56, 0x4a, 0x08, 0xbd,
    +	0x30, 0xfc, 0x05, 0x9c, 0xe1, 0xc8, 0x81, 0x13, 0x17, 0xae, 0x1c, 0x38, 0xd2, 0xe1, 0xd4, 0x63,
    +	0x4f, 0x86, 0x9a, 0x13, 0xff, 0x01, 0x74, 0x86, 0x19, 0x66, 0x57, 0x2b, 0xc9, 0xb2, 0x2d, 0xcb,
    +	0xd3, 0xce, 0xf4, 0xc4, 0x2d, 0x7a, 0xfb, 0x79, 0x9f, 0xb7, 0xef, 0xed, 0xfb, 0xe5, 0x80, 0xb2,
    +	0x7b, 0x81, 0x2a, 0x86, 0x5d, 0xd5, 0x1c, 0xa3, 0xba, 0xd3, 0xb4, 0xf7, 0x75, 0xdb, 0xf2, 0x5c,
    +	0xbb, 0x59, 0xdd, 0x3b, 0xbd, 0x4d, 0x3c, 0xed, 0x74, 0xb5, 0x4e, 0x2c, 0xe2, 0x6a, 0x1e, 0xa9,
    +	0x29, 0x8e, 0x6b, 0x7b, 0x36, 0x2a, 0x07, 0x78, 0x45, 0x73, 0x0c, 0xa5, 0x03, 0xaf, 0x08, 0xfc,
    +	0xd2, 0xc9, 0xba, 0xe1, 0x35, 0xfc, 0x6d, 0x45, 0xb7, 0xcd, 0x6a, 0xdd, 0xae, 0xdb, 0x55, 0xae,
    +	0xb6, 0xed, 0xef, 0xf0, 0x2f, 0xfe, 0xc1, 0xff, 0x0a, 0xe8, 0x96, 0xce, 0xc6, 0xe6, 0x4d, 0x4d,
    +	0x6f, 0x18, 0x16, 0x71, 0x0f, 0xaa, 0xce, 0x6e, 0x9d, 0x09, 0x68, 0xd5, 0x24, 0x9e, 0x56, 0xdd,
    +	0xeb, 0xb9, 0xc4, 0x52, 0x35, 0x4d, 0xcb, 0xf5, 0x2d, 0xcf, 0x30, 0x49, 0x8f, 0xc2, 0x1b, 0x59,
    +	0x0a, 0x54, 0x6f, 0x10, 0x53, 0xeb, 0xd6, 0x93, 0x7f, 0x92, 0x60, 0xf9, 0xd2, 0xe7, 0xc4, 0x74,
    +	0xbc, 0x4d, 0xd7, 0xb0, 0x5d, 0xc3, 0x3b, 0x58, 0x23, 0x7b, 0xa4, 0xb9, 0x6a, 0x5b, 0x3b, 0x46,
    +	0xdd, 0x77, 0x35, 0xcf, 0xb0, 0x2d, 0x74, 0x0b, 0x4a, 0x96, 0x6d, 0x1a, 0x96, 0xc6, 0xe4, 0xba,
    +	0xef, 0xba, 0xc4, 0xd2, 0x0f, 0xb6, 0x1a, 0x9a, 0x4b, 0x68, 0x49, 0x5a, 0x96, 0x5e, 0x29, 0xa8,
    +	0xff, 0x6f, 0xb7, 0x2a, 0xa5, 0x8d, 0x14, 0x0c, 0x4e, 0xd5, 0x46, 0xef, 0xc0, 0x6c, 0x93, 0x58,
    +	0x35, 0x6d, 0xbb, 0x49, 0x36, 0x89, 0xab, 0x13, 0xcb, 0x2b, 0xe5, 0x38, 0xe1, 0x7c, 0xbb, 0x55,
    +	0x99, 0x5d, 0x4b, 0x1e, 0xe1, 0x6e, 0xac, 0x7c, 0x1b, 0x16, 0x3f, 0x68, 0xda, 0xfb, 0x17, 0x0d,
    +	0xea, 0x19, 0x56, 0xdd, 0x37, 0x68, 0x83, 0xb8, 0xeb, 0xc4, 0x6b, 0xd8, 0x35, 0xf4, 0x1e, 0xe4,
    +	0xbd, 0x03, 0x87, 0xf0, 0xfb, 0x15, 0xd5, 0xe3, 0x0f, 0x5b, 0x95, 0x91, 0x76, 0xab, 0x92, 0xbf,
    +	0x71, 0xe0, 0x90, 0xa7, 0xad, 0xca, 0x91, 0x14, 0x35, 0x76, 0x8c, 0xb9, 0xa2, 0xfc, 0x4d, 0x0e,
    +	0x80, 0xa1, 0xb6, 0x78, 0xe0, 0xd0, 0x5d, 0x98, 0x60, 0x8f, 0x55, 0xd3, 0x3c, 0x8d, 0x73, 0x4e,
    +	0x9e, 0x39, 0xa5, 0xc4, 0x99, 0x12, 0xc5, 0x5c, 0x71, 0x76, 0xeb, 0x4c, 0x40, 0x15, 0x86, 0x56,
    +	0xf6, 0x4e, 0x2b, 0xd7, 0xb6, 0xef, 0x11, 0xdd, 0x5b, 0x27, 0x9e, 0xa6, 0x22, 0x71, 0x0b, 0x88,
    +	0x65, 0x38, 0x62, 0x45, 0x9b, 0x90, 0xa7, 0x0e, 0xd1, 0x79, 0x00, 0x26, 0xcf, 0x28, 0xca, 0xe0,
    +	0x3c, 0x54, 0xe2, 0xbb, 0x6d, 0x39, 0x44, 0x57, 0xa7, 0x42, 0x0f, 0xd9, 0x17, 0xe6, 0x4c, 0xe8,
    +	0x16, 0x8c, 0x51, 0x4f, 0xf3, 0x7c, 0x5a, 0x1a, 0xed, 0xb9, 0x71, 0x16, 0x27, 0xd7, 0x53, 0x67,
    +	0x04, 0xeb, 0x58, 0xf0, 0x8d, 0x05, 0x9f, 0xfc, 0x38, 0x07, 0xf3, 0x31, 0x78, 0xd5, 0xb6, 0x6a,
    +	0x06, 0xcf, 0x94, 0xb7, 0x13, 0x51, 0x3f, 0xd6, 0x15, 0xf5, 0xc5, 0x3e, 0x2a, 0x71, 0xc4, 0xd1,
    +	0x9b, 0xd1, 0x75, 0x73, 0x5c, 0xfd, 0x68, 0xd2, 0xf8, 0xd3, 0x56, 0x65, 0x36, 0x52, 0x4b, 0xde,
    +	0x07, 0xed, 0x01, 0x6a, 0x6a, 0xd4, 0xbb, 0xe1, 0x6a, 0x16, 0x0d, 0x68, 0x0d, 0x93, 0x08, 0xaf,
    +	0x5f, 0x1b, 0xee, 0x9d, 0x98, 0x86, 0xba, 0x24, 0x4c, 0xa2, 0xb5, 0x1e, 0x36, 0xdc, 0xc7, 0x02,
    +	0x7a, 0x19, 0xc6, 0x5c, 0xa2, 0x51, 0xdb, 0x2a, 0xe5, 0xf9, 0x95, 0xa3, 0x78, 0x61, 0x2e, 0xc5,
    +	0xe2, 0x14, 0xbd, 0x0a, 0xe3, 0x26, 0xa1, 0x54, 0xab, 0x93, 0x52, 0x81, 0x03, 0x67, 0x05, 0x70,
    +	0x7c, 0x3d, 0x10, 0xe3, 0xf0, 0x5c, 0xfe, 0x59, 0x82, 0x99, 0x38, 0x4e, 0x6b, 0x06, 0xf5, 0xd0,
    +	0x9d, 0x9e, 0xdc, 0x53, 0x86, 0xf3, 0x89, 0x69, 0xf3, 0xcc, 0x9b, 0x13, 0xe6, 0x26, 0x42, 0x49,
    +	0x47, 0xde, 0x5d, 0x83, 0x82, 0xe1, 0x11, 0x93, 0x45, 0x7d, 0xb4, 0x2b, 0x5c, 0x19, 0x49, 0xa2,
    +	0x4e, 0x0b, 0xda, 0xc2, 0x15, 0x46, 0x80, 0x03, 0x1e, 0xf9, 0xcf, 0xd1, 0x4e, 0x0f, 0x58, 0x3e,
    +	0xa2, 0xef, 0x25, 0x58, 0x72, 0x52, 0x1b, 0x8c, 0x70, 0x6a, 0x35, 0xcb, 0x72, 0x7a, 0x8b, 0xc2,
    +	0x64, 0x87, 0xb0, 0xbe, 0x42, 0x54, 0x59, 0x5c, 0x69, 0x69, 0x00, 0x78, 0xc0, 0x55, 0xd0, 0x47,
    +	0x80, 0x4c, 0xcd, 0x63, 0x11, 0xad, 0x6f, 0xba, 0x44, 0x27, 0x35, 0xc6, 0x2a, 0x9a, 0x52, 0x94,
    +	0x1d, 0xeb, 0x3d, 0x08, 0xdc, 0x47, 0x0b, 0x7d, 0x25, 0xc1, 0x7c, 0xad, 0xb7, 0xc9, 0x88, 0xbc,
    +	0x3c, 0x3f, 0x4c, 0xa0, 0xfb, 0xf4, 0x28, 0x75, 0xb1, 0xdd, 0xaa, 0xcc, 0xf7, 0x39, 0xc0, 0xfd,
    +	0x8c, 0xa1, 0x3b, 0x50, 0x70, 0xfd, 0x26, 0xa1, 0xa5, 0x3c, 0x7f, 0xde, 0x4c, 0xab, 0x9b, 0x76,
    +	0xd3, 0xd0, 0x0f, 0x30, 0x53, 0xf9, 0xc4, 0xf0, 0x1a, 0x5b, 0x3e, 0xef, 0x55, 0x34, 0x7e, 0x6b,
    +	0x7e, 0x84, 0x03, 0x52, 0xf9, 0x01, 0xcc, 0x75, 0x37, 0x0d, 0x54, 0x07, 0xd0, 0xc3, 0x3a, 0x65,
    +	0x03, 0x82, 0x99, 0x7d, 0x7d, 0xf8, 0xac, 0x8a, 0x6a, 0x3c, 0xee, 0x97, 0x91, 0x88, 0xe2, 0x0e,
    +	0x6a, 0xf9, 0x14, 0x4c, 0x5d, 0x76, 0x6d, 0xdf, 0x11, 0x77, 0x44, 0xcb, 0x90, 0xb7, 0x34, 0x33,
    +	0xec, 0x3e, 0x51, 0x47, 0xdc, 0xd0, 0x4c, 0x82, 0xf9, 0x89, 0xfc, 0x9d, 0x04, 0xd3, 0x6b, 0x86,
    +	0x69, 0x78, 0x98, 0x50, 0xc7, 0xb6, 0x28, 0x41, 0xe7, 0x12, 0x1d, 0xeb, 0x68, 0x57, 0xc7, 0x3a,
    +	0x94, 0x00, 0x77, 0xf4, 0xaa, 0x4f, 0x61, 0xfc, 0xbe, 0x4f, 0x7c, 0xc3, 0xaa, 0x8b, 0x7e, 0x7d,
    +	0x36, 0xcb, 0xc1, 0xeb, 0x01, 0x3c, 0x91, 0x6d, 0xea, 0x24, 0x6b, 0x01, 0xe2, 0x04, 0x87, 0x8c,
    +	0xf2, 0x3f, 0x39, 0x38, 0xca, 0x0d, 0x93, 0xda, 0x80, 0xa9, 0x7c, 0x07, 0x4a, 0x1a, 0xa5, 0xbe,
    +	0x4b, 0x6a, 0x69, 0x53, 0x79, 0x59, 0x78, 0x53, 0x5a, 0x49, 0xc1, 0xe1, 0x54, 0x06, 0x74, 0x0f,
    +	0xa6, 0x9b, 0x9d, 0xbe, 0x0b, 0x37, 0x4f, 0x66, 0xb9, 0x99, 0x08, 0x98, 0xba, 0x20, 0x6e, 0x90,
    +	0x0c, 0x3a, 0x4e, 0x52, 0xf7, 0xdb, 0x02, 0x46, 0x87, 0xdf, 0x02, 0xd0, 0x35, 0x58, 0xd8, 0xb6,
    +	0x5d, 0xd7, 0xde, 0x37, 0xac, 0x3a, 0xb7, 0x13, 0x92, 0xe4, 0x39, 0xc9, 0xff, 0xda, 0xad, 0xca,
    +	0x82, 0xda, 0x0f, 0x80, 0xfb, 0xeb, 0xc9, 0xfb, 0xb0, 0xb0, 0xc1, 0x7a, 0x0a, 0xb5, 0x7d, 0x57,
    +	0x27, 0x71, 0x41, 0xa0, 0x0a, 0x14, 0xf6, 0x88, 0xbb, 0x1d, 0x24, 0x75, 0x51, 0x2d, 0xb2, 0x72,
    +	0xf8, 0x98, 0x09, 0x70, 0x20, 0x67, 0x9e, 0x58, 0xb1, 0xe6, 0x4d, 0xbc, 0x46, 0x4b, 0x63, 0x1c,
    +	0xca, 0x3d, 0xd9, 0x48, 0x1e, 0xe1, 0x6e, 0xac, 0xdc, 0xca, 0xc1, 0x62, 0x4a, 0xfd, 0xa1, 0x9b,
    +	0x30, 0x41, 0xc5, 0xdf, 0xa2, 0xa6, 0x8e, 0x65, 0xbd, 0x85, 0xd0, 0x8d, 0xbb, 0x7f, 0x48, 0x86,
    +	0x23, 0x2a, 0x64, 0xc3, 0xb4, 0x2b, 0xae, 0xc0, 0x6d, 0x8a, 0x29, 0x70, 0x26, 0x8b, 0xbb, 0x37,
    +	0x3a, 0xf1, 0x63, 0xe3, 0x4e, 0x42, 0x9c, 0xe4, 0x47, 0x0f, 0x60, 0xae, 0xc3, 0xed, 0xc0, 0xe6,
    +	0x28, 0xb7, 0x79, 0x2e, 0xcb, 0x66, 0xdf, 0x47, 0x51, 0x4b, 0xc2, 0xec, 0xdc, 0x46, 0x17, 0x2d,
    +	0xee, 0x31, 0x24, 0xff, 0x9a, 0x83, 0x01, 0x83, 0xe1, 0x05, 0x2c, 0x79, 0x77, 0x13, 0x4b, 0xde,
    +	0xbb, 0xcf, 0x3e, 0xf1, 0x52, 0x97, 0xbe, 0x46, 0xd7, 0xd2, 0xf7, 0xfe, 0x73, 0xd8, 0x18, 0xbc,
    +	0x04, 0xfe, 0x95, 0x83, 0x97, 0xd2, 0x95, 0xe3, 0xa5, 0xf0, 0x6a, 0xa2, 0xc5, 0x9e, 0xef, 0x6a,
    +	0xb1, 0xc7, 0x86, 0xa0, 0xf8, 0x6f, 0x49, 0xec, 0x5a, 0x12, 0x7f, 0x93, 0xa0, 0x9c, 0x1e, 0xb7,
    +	0x17, 0xb0, 0x34, 0x7e, 0x96, 0x5c, 0x1a, 0xdf, 0x7a, 0xf6, 0x24, 0x4b, 0x59, 0x22, 0x2f, 0x0f,
    +	0xca, 0xad, 0x68, 0xdd, 0x1b, 0x62, 0xe4, 0xff, 0x90, 0x1b, 0x14, 0x2a, 0xbe, 0x9d, 0x66, 0xfc,
    +	0x6a, 0x49, 0x68, 0x5f, 0xb2, 0xd8, 0xe8, 0x31, 0xd9, 0xf4, 0x08, 0x12, 0xb2, 0x01, 0xe3, 0xcd,
    +	0x60, 0x56, 0x8b, 0xa2, 0x5e, 0x19, 0x6a, 0x44, 0x0e, 0x1a, 0xed, 0xc1, 0x5a, 0x20, 0x60, 0x38,
    +	0xa4, 0x47, 0x35, 0x18, 0x23, 0xfc, 0xa7, 0xfa, 0xb0, 0x95, 0x9d, 0xf5, 0xc3, 0x5e, 0x05, 0x96,
    +	0x85, 0x01, 0x0a, 0x0b, 0x6e, 0xf9, 0x5b, 0x09, 0x96, 0xb3, 0x5a, 0x02, 0xda, 0xef, 0xb3, 0xe2,
    +	0x3d, 0xc7, 0xfa, 0x3e, 0xfc, 0xca, 0xf7, 0xa3, 0x04, 0x87, 0xfb, 0x6d, 0x52, 0xac, 0xc8, 0xd8,
    +	0xfa, 0x14, 0xed, 0x3e, 0x51, 0x91, 0x5d, 0xe7, 0x52, 0x2c, 0x4e, 0xd1, 0x09, 0x98, 0x68, 0x68,
    +	0x56, 0x6d, 0xcb, 0xf8, 0x22, 0xdc, 0xea, 0xa3, 0x34, 0xff, 0x50, 0xc8, 0x71, 0x84, 0x40, 0x17,
    +	0x61, 0x8e, 0xeb, 0xad, 0x11, 0xab, 0xee, 0x35, 0xf8, 0x8b, 0x88, 0xd5, 0x24, 0x9a, 0x3a, 0xd7,
    +	0xbb, 0xce, 0x71, 0x8f, 0x86, 0xfc, 0xb7, 0x04, 0xe8, 0x59, 0xb6, 0x89, 0xe3, 0x50, 0xd4, 0x1c,
    +	0x83, 0xaf, 0xb8, 0x41, 0xa1, 0x15, 0xd5, 0xe9, 0x76, 0xab, 0x52, 0x5c, 0xd9, 0xbc, 0x12, 0x08,
    +	0x71, 0x7c, 0xce, 0xc0, 0xe1, 0xa0, 0x0d, 0x06, 0xaa, 0x00, 0x87, 0x86, 0x29, 0x8e, 0xcf, 0xd1,
    +	0x05, 0x98, 0xd2, 0x9b, 0x3e, 0xf5, 0x88, 0xbb, 0xa5, 0xdb, 0x0e, 0xe1, 0x8d, 0x69, 0x42, 0x3d,
    +	0x2c, 0x7c, 0x9a, 0x5a, 0xed, 0x38, 0xc3, 0x09, 0x24, 0x52, 0x00, 0x58, 0x59, 0x51, 0x47, 0x63,
    +	0x76, 0x0a, 0xdc, 0xce, 0x0c, 0x7b, 0xb0, 0x8d, 0x48, 0x8a, 0x3b, 0x10, 0xf2, 0x3d, 0x58, 0xd8,
    +	0x22, 0xee, 0x9e, 0xa1, 0x93, 0x15, 0x5d, 0xb7, 0x7d, 0xcb, 0x0b, 0x97, 0xf5, 0x2a, 0x14, 0x23,
    +	0x98, 0xa8, 0xbc, 0x43, 0xc2, 0x7e, 0x31, 0xe2, 0xc2, 0x31, 0x26, 0x2a, 0xf5, 0x5c, 0x6a, 0xa9,
    +	0xff, 0x92, 0x83, 0xf1, 0x98, 0x3e, 0xbf, 0x6b, 0x58, 0x35, 0xc1, 0x7c, 0x24, 0x44, 0x5f, 0x35,
    +	0xac, 0xda, 0xd3, 0x56, 0x65, 0x52, 0xc0, 0xd8, 0x27, 0xe6, 0x40, 0x74, 0x05, 0xf2, 0x3e, 0x25,
    +	0xae, 0x28, 0xe2, 0xe3, 0x59, 0xc9, 0x7c, 0x93, 0x12, 0x37, 0xdc, 0xaf, 0x26, 0x18, 0x33, 0x13,
    +	0x60, 0x4e, 0x81, 0xd6, 0xa1, 0x50, 0x67, 0x8f, 0x22, 0xea, 0xf4, 0x44, 0x16, 0x57, 0xe7, 0x8f,
    +	0x98, 0x20, 0x0d, 0xb8, 0x04, 0x07, 0x2c, 0xe8, 0x3e, 0xcc, 0xd0, 0x44, 0x08, 0xf9, 0x73, 0x0d,
    +	0xb1, 0x2f, 0xf5, 0x0d, 0xbc, 0x8a, 0xda, 0xad, 0xca, 0x4c, 0xf2, 0x08, 0x77, 0x19, 0x90, 0xab,
    +	0x30, 0xd9, 0xe1, 0x60, 0x76, 0x97, 0x55, 0x2f, 0x3e, 0x7c, 0x52, 0x1e, 0x79, 0xf4, 0xa4, 0x3c,
    +	0xf2, 0xf8, 0x49, 0x79, 0xe4, 0xcb, 0x76, 0x59, 0x7a, 0xd8, 0x2e, 0x4b, 0x8f, 0xda, 0x65, 0xe9,
    +	0x71, 0xbb, 0x2c, 0xfd, 0xde, 0x2e, 0x4b, 0x5f, 0xff, 0x51, 0x1e, 0xb9, 0x5d, 0x1e, 0xfc, 0xbf,
    +	0xd8, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x24, 0x42, 0x4c, 0x0f, 0xac, 0x15, 0x00, 0x00,
     }
     
     func (m *ExemptPriorityLevelConfiguration) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto b/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto
    index 04b54820c73f..61ed3833aeec 100644
    --- a/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto
    @@ -76,7 +76,7 @@ message FlowSchema {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // `spec` is the specification of the desired behavior of a FlowSchema.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -101,7 +101,7 @@ message FlowSchemaCondition {
       optional string status = 2;
     
       // `lastTransitionTime` is the last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // `reason` is a unique, one-word, CamelCase reason for the condition's last transition.
       optional string reason = 4;
    @@ -115,7 +115,7 @@ message FlowSchemaList {
       // `metadata` is the standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // `items` is a list of FlowSchemas.
       repeated FlowSchema items = 2;
    @@ -295,7 +295,7 @@ message PriorityLevelConfiguration {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // `spec` is the specification of the desired behavior of a "request-priority".
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -320,7 +320,7 @@ message PriorityLevelConfigurationCondition {
       optional string status = 2;
     
       // `lastTransitionTime` is the last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // `reason` is a unique, one-word, CamelCase reason for the condition's last transition.
       optional string reason = 4;
    @@ -334,7 +334,7 @@ message PriorityLevelConfigurationList {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // `items` is a list of request-priorities.
       repeated PriorityLevelConfiguration items = 2;
    diff --git a/vendor/k8s.io/api/flowcontrol/v1beta2/generated.pb.go b/vendor/k8s.io/api/flowcontrol/v1beta2/generated.pb.go
    index 7f8ee0850636..f646446df9d4 100644
    --- a/vendor/k8s.io/api/flowcontrol/v1beta2/generated.pb.go
    +++ b/vendor/k8s.io/api/flowcontrol/v1beta2/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/flowcontrol/v1beta2/generated.proto
    +// source: k8s.io/api/flowcontrol/v1beta2/generated.proto
     
     package v1beta2
     
    @@ -46,7 +46,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ExemptPriorityLevelConfiguration) Reset()      { *m = ExemptPriorityLevelConfiguration{} }
     func (*ExemptPriorityLevelConfiguration) ProtoMessage() {}
     func (*ExemptPriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{0}
    +	return fileDescriptor_2e620af2eea53237, []int{0}
     }
     func (m *ExemptPriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -74,7 +74,7 @@ var xxx_messageInfo_ExemptPriorityLevelConfiguration proto.InternalMessageInfo
     func (m *FlowDistinguisherMethod) Reset()      { *m = FlowDistinguisherMethod{} }
     func (*FlowDistinguisherMethod) ProtoMessage() {}
     func (*FlowDistinguisherMethod) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{1}
    +	return fileDescriptor_2e620af2eea53237, []int{1}
     }
     func (m *FlowDistinguisherMethod) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -102,7 +102,7 @@ var xxx_messageInfo_FlowDistinguisherMethod proto.InternalMessageInfo
     func (m *FlowSchema) Reset()      { *m = FlowSchema{} }
     func (*FlowSchema) ProtoMessage() {}
     func (*FlowSchema) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{2}
    +	return fileDescriptor_2e620af2eea53237, []int{2}
     }
     func (m *FlowSchema) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -130,7 +130,7 @@ var xxx_messageInfo_FlowSchema proto.InternalMessageInfo
     func (m *FlowSchemaCondition) Reset()      { *m = FlowSchemaCondition{} }
     func (*FlowSchemaCondition) ProtoMessage() {}
     func (*FlowSchemaCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{3}
    +	return fileDescriptor_2e620af2eea53237, []int{3}
     }
     func (m *FlowSchemaCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -158,7 +158,7 @@ var xxx_messageInfo_FlowSchemaCondition proto.InternalMessageInfo
     func (m *FlowSchemaList) Reset()      { *m = FlowSchemaList{} }
     func (*FlowSchemaList) ProtoMessage() {}
     func (*FlowSchemaList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{4}
    +	return fileDescriptor_2e620af2eea53237, []int{4}
     }
     func (m *FlowSchemaList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -186,7 +186,7 @@ var xxx_messageInfo_FlowSchemaList proto.InternalMessageInfo
     func (m *FlowSchemaSpec) Reset()      { *m = FlowSchemaSpec{} }
     func (*FlowSchemaSpec) ProtoMessage() {}
     func (*FlowSchemaSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{5}
    +	return fileDescriptor_2e620af2eea53237, []int{5}
     }
     func (m *FlowSchemaSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -214,7 +214,7 @@ var xxx_messageInfo_FlowSchemaSpec proto.InternalMessageInfo
     func (m *FlowSchemaStatus) Reset()      { *m = FlowSchemaStatus{} }
     func (*FlowSchemaStatus) ProtoMessage() {}
     func (*FlowSchemaStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{6}
    +	return fileDescriptor_2e620af2eea53237, []int{6}
     }
     func (m *FlowSchemaStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -242,7 +242,7 @@ var xxx_messageInfo_FlowSchemaStatus proto.InternalMessageInfo
     func (m *GroupSubject) Reset()      { *m = GroupSubject{} }
     func (*GroupSubject) ProtoMessage() {}
     func (*GroupSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{7}
    +	return fileDescriptor_2e620af2eea53237, []int{7}
     }
     func (m *GroupSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -270,7 +270,7 @@ var xxx_messageInfo_GroupSubject proto.InternalMessageInfo
     func (m *LimitResponse) Reset()      { *m = LimitResponse{} }
     func (*LimitResponse) ProtoMessage() {}
     func (*LimitResponse) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{8}
    +	return fileDescriptor_2e620af2eea53237, []int{8}
     }
     func (m *LimitResponse) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -298,7 +298,7 @@ var xxx_messageInfo_LimitResponse proto.InternalMessageInfo
     func (m *LimitedPriorityLevelConfiguration) Reset()      { *m = LimitedPriorityLevelConfiguration{} }
     func (*LimitedPriorityLevelConfiguration) ProtoMessage() {}
     func (*LimitedPriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{9}
    +	return fileDescriptor_2e620af2eea53237, []int{9}
     }
     func (m *LimitedPriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -326,7 +326,7 @@ var xxx_messageInfo_LimitedPriorityLevelConfiguration proto.InternalMessageInfo
     func (m *NonResourcePolicyRule) Reset()      { *m = NonResourcePolicyRule{} }
     func (*NonResourcePolicyRule) ProtoMessage() {}
     func (*NonResourcePolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{10}
    +	return fileDescriptor_2e620af2eea53237, []int{10}
     }
     func (m *NonResourcePolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -354,7 +354,7 @@ var xxx_messageInfo_NonResourcePolicyRule proto.InternalMessageInfo
     func (m *PolicyRulesWithSubjects) Reset()      { *m = PolicyRulesWithSubjects{} }
     func (*PolicyRulesWithSubjects) ProtoMessage() {}
     func (*PolicyRulesWithSubjects) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{11}
    +	return fileDescriptor_2e620af2eea53237, []int{11}
     }
     func (m *PolicyRulesWithSubjects) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -382,7 +382,7 @@ var xxx_messageInfo_PolicyRulesWithSubjects proto.InternalMessageInfo
     func (m *PriorityLevelConfiguration) Reset()      { *m = PriorityLevelConfiguration{} }
     func (*PriorityLevelConfiguration) ProtoMessage() {}
     func (*PriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{12}
    +	return fileDescriptor_2e620af2eea53237, []int{12}
     }
     func (m *PriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -410,7 +410,7 @@ var xxx_messageInfo_PriorityLevelConfiguration proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationCondition) Reset()      { *m = PriorityLevelConfigurationCondition{} }
     func (*PriorityLevelConfigurationCondition) ProtoMessage() {}
     func (*PriorityLevelConfigurationCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{13}
    +	return fileDescriptor_2e620af2eea53237, []int{13}
     }
     func (m *PriorityLevelConfigurationCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -438,7 +438,7 @@ var xxx_messageInfo_PriorityLevelConfigurationCondition proto.InternalMessageInf
     func (m *PriorityLevelConfigurationList) Reset()      { *m = PriorityLevelConfigurationList{} }
     func (*PriorityLevelConfigurationList) ProtoMessage() {}
     func (*PriorityLevelConfigurationList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{14}
    +	return fileDescriptor_2e620af2eea53237, []int{14}
     }
     func (m *PriorityLevelConfigurationList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -466,7 +466,7 @@ var xxx_messageInfo_PriorityLevelConfigurationList proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationReference) Reset()      { *m = PriorityLevelConfigurationReference{} }
     func (*PriorityLevelConfigurationReference) ProtoMessage() {}
     func (*PriorityLevelConfigurationReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{15}
    +	return fileDescriptor_2e620af2eea53237, []int{15}
     }
     func (m *PriorityLevelConfigurationReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -494,7 +494,7 @@ var xxx_messageInfo_PriorityLevelConfigurationReference proto.InternalMessageInf
     func (m *PriorityLevelConfigurationSpec) Reset()      { *m = PriorityLevelConfigurationSpec{} }
     func (*PriorityLevelConfigurationSpec) ProtoMessage() {}
     func (*PriorityLevelConfigurationSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{16}
    +	return fileDescriptor_2e620af2eea53237, []int{16}
     }
     func (m *PriorityLevelConfigurationSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -522,7 +522,7 @@ var xxx_messageInfo_PriorityLevelConfigurationSpec proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationStatus) Reset()      { *m = PriorityLevelConfigurationStatus{} }
     func (*PriorityLevelConfigurationStatus) ProtoMessage() {}
     func (*PriorityLevelConfigurationStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{17}
    +	return fileDescriptor_2e620af2eea53237, []int{17}
     }
     func (m *PriorityLevelConfigurationStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -550,7 +550,7 @@ var xxx_messageInfo_PriorityLevelConfigurationStatus proto.InternalMessageInfo
     func (m *QueuingConfiguration) Reset()      { *m = QueuingConfiguration{} }
     func (*QueuingConfiguration) ProtoMessage() {}
     func (*QueuingConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{18}
    +	return fileDescriptor_2e620af2eea53237, []int{18}
     }
     func (m *QueuingConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -578,7 +578,7 @@ var xxx_messageInfo_QueuingConfiguration proto.InternalMessageInfo
     func (m *ResourcePolicyRule) Reset()      { *m = ResourcePolicyRule{} }
     func (*ResourcePolicyRule) ProtoMessage() {}
     func (*ResourcePolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{19}
    +	return fileDescriptor_2e620af2eea53237, []int{19}
     }
     func (m *ResourcePolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -606,7 +606,7 @@ var xxx_messageInfo_ResourcePolicyRule proto.InternalMessageInfo
     func (m *ServiceAccountSubject) Reset()      { *m = ServiceAccountSubject{} }
     func (*ServiceAccountSubject) ProtoMessage() {}
     func (*ServiceAccountSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{20}
    +	return fileDescriptor_2e620af2eea53237, []int{20}
     }
     func (m *ServiceAccountSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -634,7 +634,7 @@ var xxx_messageInfo_ServiceAccountSubject proto.InternalMessageInfo
     func (m *Subject) Reset()      { *m = Subject{} }
     func (*Subject) ProtoMessage() {}
     func (*Subject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{21}
    +	return fileDescriptor_2e620af2eea53237, []int{21}
     }
     func (m *Subject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -662,7 +662,7 @@ var xxx_messageInfo_Subject proto.InternalMessageInfo
     func (m *UserSubject) Reset()      { *m = UserSubject{} }
     func (*UserSubject) ProtoMessage() {}
     func (*UserSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_ed300aa8e672704e, []int{22}
    +	return fileDescriptor_2e620af2eea53237, []int{22}
     }
     func (m *UserSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -714,113 +714,112 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/flowcontrol/v1beta2/generated.proto", fileDescriptor_ed300aa8e672704e)
    -}
    -
    -var fileDescriptor_ed300aa8e672704e = []byte{
    -	// 1617 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x4b, 0x73, 0x1b, 0xc5,
    -	0x16, 0xf6, 0xc8, 0x92, 0x6d, 0x1d, 0x3f, 0xd3, 0x8e, 0xcb, 0xba, 0xce, 0x2d, 0xc9, 0x99, 0x5b,
    -	0x75, 0x73, 0x2f, 0x49, 0x46, 0x89, 0x49, 0x48, 0x80, 0xe2, 0xe1, 0x71, 0x42, 0x08, 0xb1, 0x1d,
    -	0xa7, 0x9d, 0x40, 0x2a, 0xa4, 0x8a, 0x8c, 0x46, 0x6d, 0x69, 0x62, 0x69, 0x66, 0xd2, 0x3d, 0x23,
    -	0x63, 0xb2, 0xa1, 0xf8, 0x05, 0xac, 0x61, 0xc9, 0x82, 0x15, 0x1b, 0xb6, 0x2c, 0x58, 0x92, 0x62,
    -	0x95, 0x65, 0x56, 0x82, 0x88, 0x15, 0xff, 0x00, 0x52, 0x45, 0x15, 0xd5, 0x3d, 0xad, 0x19, 0x8d,
    -	0x5e, 0xa3, 0x4a, 0xaa, 0xb2, 0x62, 0xe7, 0x39, 0xe7, 0x3b, 0xdf, 0xe9, 0x3e, 0x7d, 0x5e, 0x32,
    -	0x5c, 0xd9, 0xbf, 0xc8, 0x34, 0xcb, 0x29, 0xee, 0xfb, 0x25, 0x42, 0x6d, 0xe2, 0x11, 0x56, 0x6c,
    -	0x10, 0xbb, 0xec, 0xd0, 0xa2, 0x54, 0x18, 0xae, 0x55, 0xdc, 0xab, 0x39, 0x07, 0xa6, 0x63, 0x7b,
    -	0xd4, 0xa9, 0x15, 0x1b, 0x67, 0x4b, 0xc4, 0x33, 0xd6, 0x8a, 0x15, 0x62, 0x13, 0x6a, 0x78, 0xa4,
    -	0xac, 0xb9, 0xd4, 0xf1, 0x1c, 0x94, 0x0f, 0xf0, 0x9a, 0xe1, 0x5a, 0x5a, 0x07, 0x5e, 0x93, 0xf8,
    -	0x95, 0xd3, 0x15, 0xcb, 0xab, 0xfa, 0x25, 0xcd, 0x74, 0xea, 0xc5, 0x8a, 0x53, 0x71, 0x8a, 0xc2,
    -	0xac, 0xe4, 0xef, 0x89, 0x2f, 0xf1, 0x21, 0xfe, 0x0a, 0xe8, 0x56, 0xce, 0x45, 0xee, 0xeb, 0x86,
    -	0x59, 0xb5, 0x6c, 0x42, 0x0f, 0x8b, 0xee, 0x7e, 0x85, 0x0b, 0x58, 0xb1, 0x4e, 0x3c, 0xa3, 0xd8,
    -	0x38, 0xdb, 0x7d, 0x88, 0x95, 0xe2, 0x20, 0x2b, 0xea, 0xdb, 0x9e, 0x55, 0x27, 0x3d, 0x06, 0xaf,
    -	0x25, 0x19, 0x30, 0xb3, 0x4a, 0xea, 0x46, 0xb7, 0x9d, 0xfa, 0x83, 0x02, 0xab, 0x97, 0x3f, 0x25,
    -	0x75, 0xd7, 0xdb, 0xa1, 0x96, 0x43, 0x2d, 0xef, 0x70, 0x93, 0x34, 0x48, 0x6d, 0xc3, 0xb1, 0xf7,
    -	0xac, 0x8a, 0x4f, 0x0d, 0xcf, 0x72, 0x6c, 0x74, 0x1b, 0x72, 0xb6, 0x53, 0xb7, 0x6c, 0x83, 0xcb,
    -	0x4d, 0x9f, 0x52, 0x62, 0x9b, 0x87, 0xbb, 0x55, 0x83, 0x12, 0x96, 0x53, 0x56, 0x95, 0xff, 0x65,
    -	0xf4, 0x7f, 0xb7, 0x9a, 0x85, 0xdc, 0xf6, 0x00, 0x0c, 0x1e, 0x68, 0x8d, 0xde, 0x82, 0xf9, 0x1a,
    -	0xb1, 0xcb, 0x46, 0xa9, 0x46, 0x76, 0x08, 0x35, 0x89, 0xed, 0xe5, 0x52, 0x82, 0x70, 0xb1, 0xd5,
    -	0x2c, 0xcc, 0x6f, 0xc6, 0x55, 0xb8, 0x1b, 0xab, 0xde, 0x81, 0xe5, 0xf7, 0x6a, 0xce, 0xc1, 0x25,
    -	0x8b, 0x79, 0x96, 0x5d, 0xf1, 0x2d, 0x56, 0x25, 0x74, 0x8b, 0x78, 0x55, 0xa7, 0x8c, 0xde, 0x81,
    -	0xb4, 0x77, 0xe8, 0x12, 0x71, 0xbe, 0xac, 0x7e, 0xf2, 0x51, 0xb3, 0x30, 0xd6, 0x6a, 0x16, 0xd2,
    -	0x37, 0x0f, 0x5d, 0xf2, 0xac, 0x59, 0x38, 0x36, 0xc0, 0x8c, 0xab, 0xb1, 0x30, 0x54, 0xbf, 0x4a,
    -	0x01, 0x70, 0xd4, 0xae, 0x08, 0x1c, 0xba, 0x07, 0x53, 0xfc, 0xb1, 0xca, 0x86, 0x67, 0x08, 0xce,
    -	0xe9, 0xb5, 0x33, 0x5a, 0x94, 0x29, 0x61, 0xcc, 0x35, 0x77, 0xbf, 0xc2, 0x05, 0x4c, 0xe3, 0x68,
    -	0xad, 0x71, 0x56, 0xbb, 0x5e, 0xba, 0x4f, 0x4c, 0x6f, 0x8b, 0x78, 0x86, 0x8e, 0xe4, 0x29, 0x20,
    -	0x92, 0xe1, 0x90, 0x15, 0xed, 0x40, 0x9a, 0xb9, 0xc4, 0x14, 0x01, 0x98, 0x5e, 0xd3, 0xb4, 0xe1,
    -	0x79, 0xa8, 0x45, 0x67, 0xdb, 0x75, 0x89, 0xa9, 0xcf, 0xb4, 0x6f, 0xc8, 0xbf, 0xb0, 0x60, 0x42,
    -	0xb7, 0x61, 0x82, 0x79, 0x86, 0xe7, 0xb3, 0xdc, 0x78, 0xcf, 0x89, 0x93, 0x38, 0x85, 0x9d, 0x3e,
    -	0x27, 0x59, 0x27, 0x82, 0x6f, 0x2c, 0xf9, 0xd4, 0x27, 0x29, 0x58, 0x8c, 0xc0, 0x1b, 0x8e, 0x5d,
    -	0xb6, 0x44, 0xa6, 0xbc, 0x19, 0x8b, 0xfa, 0x89, 0xae, 0xa8, 0x2f, 0xf7, 0x31, 0x89, 0x22, 0x8e,
    -	0x5e, 0x0f, 0x8f, 0x9b, 0x12, 0xe6, 0xc7, 0xe3, 0xce, 0x9f, 0x35, 0x0b, 0xf3, 0xa1, 0x59, 0xfc,
    -	0x3c, 0xa8, 0x01, 0xa8, 0x66, 0x30, 0xef, 0x26, 0x35, 0x6c, 0x16, 0xd0, 0x5a, 0x75, 0x22, 0x6f,
    -	0xfd, 0xca, 0x68, 0xef, 0xc4, 0x2d, 0xf4, 0x15, 0xe9, 0x12, 0x6d, 0xf6, 0xb0, 0xe1, 0x3e, 0x1e,
    -	0xd0, 0x7f, 0x61, 0x82, 0x12, 0x83, 0x39, 0x76, 0x2e, 0x2d, 0x8e, 0x1c, 0xc6, 0x0b, 0x0b, 0x29,
    -	0x96, 0x5a, 0xf4, 0x7f, 0x98, 0xac, 0x13, 0xc6, 0x8c, 0x0a, 0xc9, 0x65, 0x04, 0x70, 0x5e, 0x02,
    -	0x27, 0xb7, 0x02, 0x31, 0x6e, 0xeb, 0xd5, 0x1f, 0x15, 0x98, 0x8b, 0xe2, 0xb4, 0x69, 0x31, 0x0f,
    -	0xdd, 0xed, 0xc9, 0x3d, 0x6d, 0xb4, 0x3b, 0x71, 0x6b, 0x91, 0x79, 0x0b, 0xd2, 0xdd, 0x54, 0x5b,
    -	0xd2, 0x91, 0x77, 0xd7, 0x21, 0x63, 0x79, 0xa4, 0xce, 0xa3, 0x3e, 0xde, 0x15, 0xae, 0x84, 0x24,
    -	0xd1, 0x67, 0x25, 0x6d, 0xe6, 0x2a, 0x27, 0xc0, 0x01, 0x8f, 0xfa, 0xfb, 0x78, 0xe7, 0x0d, 0x78,
    -	0x3e, 0xa2, 0x6f, 0x15, 0x58, 0x71, 0x07, 0x36, 0x18, 0x79, 0xa9, 0x8d, 0x24, 0xcf, 0x83, 0x5b,
    -	0x14, 0x26, 0x7b, 0x84, 0xf7, 0x15, 0xa2, 0xab, 0xf2, 0x48, 0x2b, 0x43, 0xc0, 0x43, 0x8e, 0x82,
    -	0x3e, 0x00, 0x54, 0x37, 0x3c, 0x1e, 0xd1, 0xca, 0x0e, 0x25, 0x26, 0x29, 0x73, 0x56, 0xd9, 0x94,
    -	0xc2, 0xec, 0xd8, 0xea, 0x41, 0xe0, 0x3e, 0x56, 0xe8, 0x0b, 0x05, 0x16, 0xcb, 0xbd, 0x4d, 0x46,
    -	0xe6, 0xe5, 0x85, 0x51, 0x02, 0xdd, 0xa7, 0x47, 0xe9, 0xcb, 0xad, 0x66, 0x61, 0xb1, 0x8f, 0x02,
    -	0xf7, 0x73, 0x86, 0xee, 0x42, 0x86, 0xfa, 0x35, 0xc2, 0x72, 0x69, 0xf1, 0xbc, 0x89, 0x5e, 0x77,
    -	0x9c, 0x9a, 0x65, 0x1e, 0x62, 0x6e, 0xf2, 0x91, 0xe5, 0x55, 0x77, 0x7d, 0xd1, 0xab, 0x58, 0xf4,
    -	0xd6, 0x42, 0x85, 0x03, 0x52, 0xf5, 0x21, 0x2c, 0x74, 0x37, 0x0d, 0x54, 0x01, 0x30, 0xdb, 0x75,
    -	0xca, 0x07, 0x04, 0x77, 0xfb, 0xea, 0xe8, 0x59, 0x15, 0xd6, 0x78, 0xd4, 0x2f, 0x43, 0x11, 0xc3,
    -	0x1d, 0xd4, 0xea, 0x19, 0x98, 0xb9, 0x42, 0x1d, 0xdf, 0x95, 0x67, 0x44, 0xab, 0x90, 0xb6, 0x8d,
    -	0x7a, 0xbb, 0xfb, 0x84, 0x1d, 0x71, 0xdb, 0xa8, 0x13, 0x2c, 0x34, 0xea, 0x37, 0x0a, 0xcc, 0x6e,
    -	0x5a, 0x75, 0xcb, 0xc3, 0x84, 0xb9, 0x8e, 0xcd, 0x08, 0x3a, 0x1f, 0xeb, 0x58, 0xc7, 0xbb, 0x3a,
    -	0xd6, 0x91, 0x18, 0xb8, 0xa3, 0x57, 0x7d, 0x0c, 0x93, 0x0f, 0x7c, 0xe2, 0x5b, 0x76, 0x45, 0xf6,
    -	0xeb, 0x73, 0x49, 0x17, 0xbc, 0x11, 0xc0, 0x63, 0xd9, 0xa6, 0x4f, 0xf3, 0x16, 0x20, 0x35, 0xb8,
    -	0xcd, 0xa8, 0xfe, 0x95, 0x82, 0xe3, 0xc2, 0x31, 0x29, 0x0f, 0x99, 0xca, 0x77, 0x21, 0x67, 0x30,
    -	0xe6, 0x53, 0x52, 0x1e, 0x34, 0x95, 0x57, 0xe5, 0x6d, 0x72, 0xeb, 0x03, 0x70, 0x78, 0x20, 0x03,
    -	0xba, 0x0f, 0xb3, 0xb5, 0xce, 0xbb, 0xcb, 0x6b, 0x9e, 0x4e, 0xba, 0x66, 0x2c, 0x60, 0xfa, 0x92,
    -	0x3c, 0x41, 0x3c, 0xe8, 0x38, 0x4e, 0xdd, 0x6f, 0x0b, 0x18, 0x1f, 0x7d, 0x0b, 0x40, 0xd7, 0x61,
    -	0xa9, 0xe4, 0x50, 0xea, 0x1c, 0x58, 0x76, 0x45, 0xf8, 0x69, 0x93, 0xa4, 0x05, 0xc9, 0xbf, 0x5a,
    -	0xcd, 0xc2, 0x92, 0xde, 0x0f, 0x80, 0xfb, 0xdb, 0xa9, 0x07, 0xb0, 0xb4, 0xcd, 0x7b, 0x0a, 0x73,
    -	0x7c, 0x6a, 0x92, 0xa8, 0x20, 0x50, 0x01, 0x32, 0x0d, 0x42, 0x4b, 0x41, 0x52, 0x67, 0xf5, 0x2c,
    -	0x2f, 0x87, 0x0f, 0xb9, 0x00, 0x07, 0x72, 0x7e, 0x13, 0x3b, 0xb2, 0xbc, 0x85, 0x37, 0x59, 0x6e,
    -	0x42, 0x40, 0xc5, 0x4d, 0xb6, 0xe3, 0x2a, 0xdc, 0x8d, 0x55, 0x9b, 0x29, 0x58, 0x1e, 0x50, 0x7f,
    -	0xe8, 0x16, 0x4c, 0x31, 0xf9, 0xb7, 0xac, 0xa9, 0x13, 0x49, 0x6f, 0x21, 0x6d, 0xa3, 0xee, 0xdf,
    -	0x26, 0xc3, 0x21, 0x15, 0x72, 0x60, 0x96, 0xca, 0x23, 0x08, 0x9f, 0x72, 0x0a, 0xac, 0x25, 0x71,
    -	0xf7, 0x46, 0x27, 0x7a, 0x6c, 0xdc, 0x49, 0x88, 0xe3, 0xfc, 0xe8, 0x21, 0x2c, 0x74, 0x5c, 0x3b,
    -	0xf0, 0x39, 0x2e, 0x7c, 0x9e, 0x4f, 0xf2, 0xd9, 0xf7, 0x51, 0xf4, 0x9c, 0x74, 0xbb, 0xb0, 0xdd,
    -	0x45, 0x8b, 0x7b, 0x1c, 0xa9, 0x3f, 0xa7, 0x60, 0xc8, 0x60, 0x78, 0x09, 0x4b, 0xde, 0xbd, 0xd8,
    -	0x92, 0xf7, 0xf6, 0xf3, 0x4f, 0xbc, 0x81, 0x4b, 0x5f, 0xb5, 0x6b, 0xe9, 0x7b, 0xf7, 0x05, 0x7c,
    -	0x0c, 0x5f, 0x02, 0xff, 0x48, 0xc1, 0x7f, 0x06, 0x1b, 0x47, 0x4b, 0xe1, 0xb5, 0x58, 0x8b, 0xbd,
    -	0xd0, 0xd5, 0x62, 0x4f, 0x8c, 0x40, 0xf1, 0xcf, 0x92, 0xd8, 0xb5, 0x24, 0xfe, 0xa2, 0x40, 0x7e,
    -	0x70, 0xdc, 0x5e, 0xc2, 0xd2, 0xf8, 0x49, 0x7c, 0x69, 0x7c, 0xe3, 0xf9, 0x93, 0x6c, 0xc0, 0x12,
    -	0x79, 0x65, 0x58, 0x6e, 0x85, 0xeb, 0xde, 0x08, 0x23, 0xff, 0xbb, 0xd4, 0xb0, 0x50, 0x89, 0xed,
    -	0x34, 0xe1, 0x57, 0x4b, 0xcc, 0xfa, 0xb2, 0xcd, 0x47, 0x4f, 0x9d, 0x4f, 0x8f, 0x20, 0x21, 0xab,
    -	0x30, 0x59, 0x0b, 0x66, 0xb5, 0x2c, 0xea, 0xf5, 0x91, 0x46, 0xe4, 0xb0, 0xd1, 0x1e, 0xac, 0x05,
    -	0x12, 0x86, 0xdb, 0xf4, 0xa8, 0x0c, 0x13, 0x44, 0xfc, 0x54, 0x1f, 0xb5, 0xb2, 0x93, 0x7e, 0xd8,
    -	0xeb, 0xc0, 0xb3, 0x30, 0x40, 0x61, 0xc9, 0xad, 0x7e, 0xad, 0xc0, 0x6a, 0x52, 0x4b, 0x40, 0x07,
    -	0x7d, 0x56, 0xbc, 0x17, 0x58, 0xdf, 0x47, 0x5f, 0xf9, 0xbe, 0x57, 0xe0, 0x68, 0xbf, 0x4d, 0x8a,
    -	0x17, 0x19, 0x5f, 0x9f, 0xc2, 0xdd, 0x27, 0x2c, 0xb2, 0x1b, 0x42, 0x8a, 0xa5, 0x16, 0x9d, 0x82,
    -	0xa9, 0xaa, 0x61, 0x97, 0x77, 0xad, 0xcf, 0xda, 0x5b, 0x7d, 0x98, 0xe6, 0xef, 0x4b, 0x39, 0x0e,
    -	0x11, 0xe8, 0x12, 0x2c, 0x08, 0xbb, 0x4d, 0x62, 0x57, 0xbc, 0xaa, 0x78, 0x11, 0xb9, 0x9a, 0x84,
    -	0x53, 0xe7, 0x46, 0x97, 0x1e, 0xf7, 0x58, 0xa8, 0x7f, 0x2a, 0x80, 0x9e, 0x67, 0x9b, 0x38, 0x09,
    -	0x59, 0xc3, 0xb5, 0xc4, 0x8a, 0x1b, 0x14, 0x5a, 0x56, 0x9f, 0x6d, 0x35, 0x0b, 0xd9, 0xf5, 0x9d,
    -	0xab, 0x81, 0x10, 0x47, 0x7a, 0x0e, 0x6e, 0x0f, 0xda, 0x60, 0xa0, 0x4a, 0x70, 0xdb, 0x31, 0xc3,
    -	0x91, 0x1e, 0x5d, 0x84, 0x19, 0xb3, 0xe6, 0x33, 0x8f, 0xd0, 0x5d, 0xd3, 0x71, 0x89, 0x68, 0x4c,
    -	0x53, 0xfa, 0x51, 0x79, 0xa7, 0x99, 0x8d, 0x0e, 0x1d, 0x8e, 0x21, 0x91, 0x06, 0xc0, 0xcb, 0x8a,
    -	0xb9, 0x06, 0xf7, 0x93, 0x11, 0x7e, 0xe6, 0xf8, 0x83, 0x6d, 0x87, 0x52, 0xdc, 0x81, 0x50, 0xef,
    -	0xc3, 0xd2, 0x2e, 0xa1, 0x0d, 0xcb, 0x24, 0xeb, 0xa6, 0xe9, 0xf8, 0xb6, 0xd7, 0x5e, 0xd6, 0x8b,
    -	0x90, 0x0d, 0x61, 0xb2, 0xf2, 0x8e, 0x48, 0xff, 0xd9, 0x90, 0x0b, 0x47, 0x98, 0xb0, 0xd4, 0x53,
    -	0x03, 0x4b, 0xfd, 0xa7, 0x14, 0x4c, 0x46, 0xf4, 0xe9, 0x7d, 0xcb, 0x2e, 0x4b, 0xe6, 0x63, 0x6d,
    -	0xf4, 0x35, 0xcb, 0x2e, 0x3f, 0x6b, 0x16, 0xa6, 0x25, 0x8c, 0x7f, 0x62, 0x01, 0x44, 0x57, 0x21,
    -	0xed, 0x33, 0x42, 0x65, 0x11, 0x9f, 0x4c, 0x4a, 0xe6, 0x5b, 0x8c, 0xd0, 0xf6, 0x7e, 0x35, 0xc5,
    -	0x99, 0xb9, 0x00, 0x0b, 0x0a, 0xb4, 0x05, 0x99, 0x0a, 0x7f, 0x14, 0x59, 0xa7, 0xa7, 0x92, 0xb8,
    -	0x3a, 0x7f, 0xc4, 0x04, 0x69, 0x20, 0x24, 0x38, 0x60, 0x41, 0x0f, 0x60, 0x8e, 0xc5, 0x42, 0x28,
    -	0x9e, 0x6b, 0x84, 0x7d, 0xa9, 0x6f, 0xe0, 0x75, 0xd4, 0x6a, 0x16, 0xe6, 0xe2, 0x2a, 0xdc, 0xe5,
    -	0x40, 0x2d, 0xc2, 0x74, 0xc7, 0x05, 0x93, 0xbb, 0xac, 0x7e, 0xe9, 0xd1, 0xd3, 0xfc, 0xd8, 0xe3,
    -	0xa7, 0xf9, 0xb1, 0x27, 0x4f, 0xf3, 0x63, 0x9f, 0xb7, 0xf2, 0xca, 0xa3, 0x56, 0x5e, 0x79, 0xdc,
    -	0xca, 0x2b, 0x4f, 0x5a, 0x79, 0xe5, 0xd7, 0x56, 0x5e, 0xf9, 0xf2, 0xb7, 0xfc, 0xd8, 0x9d, 0xfc,
    -	0xf0, 0xff, 0xc5, 0xfe, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x4d, 0x1e, 0x25, 0xc5, 0x15, 0x00,
    -	0x00,
    +	proto.RegisterFile("k8s.io/api/flowcontrol/v1beta2/generated.proto", fileDescriptor_2e620af2eea53237)
    +}
    +
    +var fileDescriptor_2e620af2eea53237 = []byte{
    +	// 1602 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0xcd, 0x73, 0xdb, 0xd4,
    +	0x16, 0x8f, 0x1c, 0x3b, 0x89, 0x4f, 0x3e, 0x7b, 0xd3, 0x4c, 0xfc, 0xd2, 0x37, 0x76, 0xaa, 0x37,
    +	0xf3, 0xfa, 0x1e, 0x6d, 0xe5, 0x36, 0xb4, 0xb4, 0xc0, 0xf0, 0x11, 0xa5, 0xa5, 0x94, 0x26, 0x69,
    +	0x7a, 0xd3, 0x42, 0xa7, 0x74, 0x86, 0x2a, 0xf2, 0x8d, 0xad, 0xc6, 0xfa, 0xa8, 0xae, 0x94, 0x10,
    +	0xba, 0x61, 0xf8, 0x0b, 0x58, 0xc3, 0x92, 0x05, 0x2b, 0x36, 0x6c, 0x59, 0xb0, 0xa4, 0xc3, 0xaa,
    +	0xcb, 0xae, 0x0c, 0x35, 0x2b, 0xfe, 0x03, 0xe8, 0x0c, 0x33, 0xcc, 0xbd, 0xba, 0x92, 0x2c, 0xdb,
    +	0xb2, 0x3c, 0xed, 0x4c, 0x57, 0xec, 0xa2, 0x73, 0x7f, 0xe7, 0x77, 0xee, 0x39, 0xf7, 0x7c, 0x39,
    +	0xa0, 0xec, 0x5d, 0xa4, 0x8a, 0x61, 0x57, 0x35, 0xc7, 0xa8, 0xee, 0x36, 0xed, 0x03, 0xdd, 0xb6,
    +	0x3c, 0xd7, 0x6e, 0x56, 0xf7, 0xcf, 0xee, 0x10, 0x4f, 0x5b, 0xa9, 0xd6, 0x89, 0x45, 0x5c, 0xcd,
    +	0x23, 0x35, 0xc5, 0x71, 0x6d, 0xcf, 0x46, 0xe5, 0x00, 0xaf, 0x68, 0x8e, 0xa1, 0x74, 0xe0, 0x15,
    +	0x81, 0x5f, 0x3a, 0x5d, 0x37, 0xbc, 0x86, 0xbf, 0xa3, 0xe8, 0xb6, 0x59, 0xad, 0xdb, 0x75, 0xbb,
    +	0xca, 0xd5, 0x76, 0xfc, 0x5d, 0xfe, 0xc5, 0x3f, 0xf8, 0x5f, 0x01, 0xdd, 0xd2, 0xb9, 0xd8, 0xbc,
    +	0xa9, 0xe9, 0x0d, 0xc3, 0x22, 0xee, 0x61, 0xd5, 0xd9, 0xab, 0x33, 0x01, 0xad, 0x9a, 0xc4, 0xd3,
    +	0xaa, 0xfb, 0x67, 0xbb, 0x2f, 0xb1, 0x54, 0x4d, 0xd3, 0x72, 0x7d, 0xcb, 0x33, 0x4c, 0xd2, 0xa3,
    +	0xf0, 0x5a, 0x96, 0x02, 0xd5, 0x1b, 0xc4, 0xd4, 0xba, 0xf5, 0xe4, 0x1f, 0x24, 0x58, 0xbe, 0xfc,
    +	0x29, 0x31, 0x1d, 0x6f, 0xcb, 0x35, 0x6c, 0xd7, 0xf0, 0x0e, 0xd7, 0xc9, 0x3e, 0x69, 0xae, 0xd9,
    +	0xd6, 0xae, 0x51, 0xf7, 0x5d, 0xcd, 0x33, 0x6c, 0x0b, 0xdd, 0x86, 0x92, 0x65, 0x9b, 0x86, 0xa5,
    +	0x31, 0xb9, 0xee, 0xbb, 0x2e, 0xb1, 0xf4, 0xc3, 0xed, 0x86, 0xe6, 0x12, 0x5a, 0x92, 0x96, 0xa5,
    +	0xff, 0x15, 0xd4, 0x7f, 0xb7, 0x5b, 0x95, 0xd2, 0x66, 0x0a, 0x06, 0xa7, 0x6a, 0xa3, 0xb7, 0x60,
    +	0xb6, 0x49, 0xac, 0x9a, 0xb6, 0xd3, 0x24, 0x5b, 0xc4, 0xd5, 0x89, 0xe5, 0x95, 0x72, 0x9c, 0x70,
    +	0xbe, 0xdd, 0xaa, 0xcc, 0xae, 0x27, 0x8f, 0x70, 0x37, 0x56, 0xbe, 0x03, 0x8b, 0xef, 0x35, 0xed,
    +	0x83, 0x4b, 0x06, 0xf5, 0x0c, 0xab, 0xee, 0x1b, 0xb4, 0x41, 0xdc, 0x0d, 0xe2, 0x35, 0xec, 0x1a,
    +	0x7a, 0x07, 0xf2, 0xde, 0xa1, 0x43, 0xf8, 0xfd, 0x8a, 0xea, 0xc9, 0x47, 0xad, 0xca, 0x48, 0xbb,
    +	0x55, 0xc9, 0xdf, 0x3c, 0x74, 0xc8, 0xb3, 0x56, 0xe5, 0x58, 0x8a, 0x1a, 0x3b, 0xc6, 0x5c, 0x51,
    +	0xfe, 0x2a, 0x07, 0xc0, 0x50, 0xdb, 0x3c, 0x70, 0xe8, 0x1e, 0x4c, 0xb0, 0xc7, 0xaa, 0x69, 0x9e,
    +	0xc6, 0x39, 0x27, 0x57, 0xce, 0x28, 0x71, 0xa6, 0x44, 0x31, 0x57, 0x9c, 0xbd, 0x3a, 0x13, 0x50,
    +	0x85, 0xa1, 0x95, 0xfd, 0xb3, 0xca, 0xf5, 0x9d, 0xfb, 0x44, 0xf7, 0x36, 0x88, 0xa7, 0xa9, 0x48,
    +	0xdc, 0x02, 0x62, 0x19, 0x8e, 0x58, 0xd1, 0x16, 0xe4, 0xa9, 0x43, 0x74, 0x1e, 0x80, 0xc9, 0x15,
    +	0x45, 0x19, 0x9c, 0x87, 0x4a, 0x7c, 0xb7, 0x6d, 0x87, 0xe8, 0xea, 0x54, 0xe8, 0x21, 0xfb, 0xc2,
    +	0x9c, 0x09, 0xdd, 0x86, 0x31, 0xea, 0x69, 0x9e, 0x4f, 0x4b, 0xa3, 0x3d, 0x37, 0xce, 0xe2, 0xe4,
    +	0x7a, 0xea, 0x8c, 0x60, 0x1d, 0x0b, 0xbe, 0xb1, 0xe0, 0x93, 0x9f, 0xe4, 0x60, 0x3e, 0x06, 0xaf,
    +	0xd9, 0x56, 0xcd, 0xe0, 0x99, 0xf2, 0x66, 0x22, 0xea, 0x27, 0xba, 0xa2, 0xbe, 0xd8, 0x47, 0x25,
    +	0x8e, 0x38, 0x7a, 0x3d, 0xba, 0x6e, 0x8e, 0xab, 0x1f, 0x4f, 0x1a, 0x7f, 0xd6, 0xaa, 0xcc, 0x46,
    +	0x6a, 0xc9, 0xfb, 0xa0, 0x7d, 0x40, 0x4d, 0x8d, 0x7a, 0x37, 0x5d, 0xcd, 0xa2, 0x01, 0xad, 0x61,
    +	0x12, 0xe1, 0xf5, 0x2b, 0xc3, 0xbd, 0x13, 0xd3, 0x50, 0x97, 0x84, 0x49, 0xb4, 0xde, 0xc3, 0x86,
    +	0xfb, 0x58, 0x40, 0xff, 0x85, 0x31, 0x97, 0x68, 0xd4, 0xb6, 0x4a, 0x79, 0x7e, 0xe5, 0x28, 0x5e,
    +	0x98, 0x4b, 0xb1, 0x38, 0x45, 0xff, 0x87, 0x71, 0x93, 0x50, 0xaa, 0xd5, 0x49, 0xa9, 0xc0, 0x81,
    +	0xb3, 0x02, 0x38, 0xbe, 0x11, 0x88, 0x71, 0x78, 0x2e, 0xff, 0x28, 0xc1, 0x4c, 0x1c, 0xa7, 0x75,
    +	0x83, 0x7a, 0xe8, 0x6e, 0x4f, 0xee, 0x29, 0xc3, 0xf9, 0xc4, 0xb4, 0x79, 0xe6, 0xcd, 0x09, 0x73,
    +	0x13, 0xa1, 0xa4, 0x23, 0xef, 0xae, 0x43, 0xc1, 0xf0, 0x88, 0xc9, 0xa2, 0x3e, 0xda, 0x15, 0xae,
    +	0x8c, 0x24, 0x51, 0xa7, 0x05, 0x6d, 0xe1, 0x2a, 0x23, 0xc0, 0x01, 0x8f, 0xfc, 0xfb, 0x68, 0xa7,
    +	0x07, 0x2c, 0x1f, 0xd1, 0xb7, 0x12, 0x2c, 0x39, 0xa9, 0x0d, 0x46, 0x38, 0xb5, 0x96, 0x65, 0x39,
    +	0xbd, 0x45, 0x61, 0xb2, 0x4b, 0x58, 0x5f, 0x21, 0xaa, 0x2c, 0xae, 0xb4, 0x34, 0x00, 0x3c, 0xe0,
    +	0x2a, 0xe8, 0x03, 0x40, 0xa6, 0xe6, 0xb1, 0x88, 0xd6, 0xb7, 0x5c, 0xa2, 0x93, 0x1a, 0x63, 0x15,
    +	0x4d, 0x29, 0xca, 0x8e, 0x8d, 0x1e, 0x04, 0xee, 0xa3, 0x85, 0xbe, 0x90, 0x60, 0xbe, 0xd6, 0xdb,
    +	0x64, 0x44, 0x5e, 0x5e, 0x18, 0x26, 0xd0, 0x7d, 0x7a, 0x94, 0xba, 0xd8, 0x6e, 0x55, 0xe6, 0xfb,
    +	0x1c, 0xe0, 0x7e, 0xc6, 0xd0, 0x5d, 0x28, 0xb8, 0x7e, 0x93, 0xd0, 0x52, 0x9e, 0x3f, 0x6f, 0xa6,
    +	0xd5, 0x2d, 0xbb, 0x69, 0xe8, 0x87, 0x98, 0xa9, 0x7c, 0x64, 0x78, 0x8d, 0x6d, 0x9f, 0xf7, 0x2a,
    +	0x1a, 0xbf, 0x35, 0x3f, 0xc2, 0x01, 0xa9, 0xfc, 0x10, 0xe6, 0xba, 0x9b, 0x06, 0xaa, 0x03, 0xe8,
    +	0x61, 0x9d, 0xb2, 0x01, 0xc1, 0xcc, 0xbe, 0x3a, 0x7c, 0x56, 0x45, 0x35, 0x1e, 0xf7, 0xcb, 0x48,
    +	0x44, 0x71, 0x07, 0xb5, 0x7c, 0x06, 0xa6, 0xae, 0xb8, 0xb6, 0xef, 0x88, 0x3b, 0xa2, 0x65, 0xc8,
    +	0x5b, 0x9a, 0x19, 0x76, 0x9f, 0xa8, 0x23, 0x6e, 0x6a, 0x26, 0xc1, 0xfc, 0x44, 0xfe, 0x46, 0x82,
    +	0xe9, 0x75, 0xc3, 0x34, 0x3c, 0x4c, 0xa8, 0x63, 0x5b, 0x94, 0xa0, 0xf3, 0x89, 0x8e, 0x75, 0xbc,
    +	0xab, 0x63, 0x1d, 0x49, 0x80, 0x3b, 0x7a, 0xd5, 0xc7, 0x30, 0xfe, 0xc0, 0x27, 0xbe, 0x61, 0xd5,
    +	0x45, 0xbf, 0x3e, 0x97, 0xe5, 0xe0, 0x8d, 0x00, 0x9e, 0xc8, 0x36, 0x75, 0x92, 0xb5, 0x00, 0x71,
    +	0x82, 0x43, 0x46, 0xf9, 0xaf, 0x1c, 0x1c, 0xe7, 0x86, 0x49, 0x6d, 0xc0, 0x54, 0xbe, 0x0b, 0x25,
    +	0x8d, 0x52, 0xdf, 0x25, 0xb5, 0xb4, 0xa9, 0xbc, 0x2c, 0xbc, 0x29, 0xad, 0xa6, 0xe0, 0x70, 0x2a,
    +	0x03, 0xba, 0x0f, 0xd3, 0xcd, 0x4e, 0xdf, 0x85, 0x9b, 0xa7, 0xb3, 0xdc, 0x4c, 0x04, 0x4c, 0x5d,
    +	0x10, 0x37, 0x48, 0x06, 0x1d, 0x27, 0xa9, 0xfb, 0x6d, 0x01, 0xa3, 0xc3, 0x6f, 0x01, 0xe8, 0x3a,
    +	0x2c, 0xec, 0xd8, 0xae, 0x6b, 0x1f, 0x18, 0x56, 0x9d, 0xdb, 0x09, 0x49, 0xf2, 0x9c, 0xe4, 0x5f,
    +	0xed, 0x56, 0x65, 0x41, 0xed, 0x07, 0xc0, 0xfd, 0xf5, 0xe4, 0x03, 0x58, 0xd8, 0x64, 0x3d, 0x85,
    +	0xda, 0xbe, 0xab, 0x93, 0xb8, 0x20, 0x50, 0x05, 0x0a, 0xfb, 0xc4, 0xdd, 0x09, 0x92, 0xba, 0xa8,
    +	0x16, 0x59, 0x39, 0x7c, 0xc8, 0x04, 0x38, 0x90, 0x33, 0x4f, 0xac, 0x58, 0xf3, 0x16, 0x5e, 0xa7,
    +	0xa5, 0x31, 0x0e, 0xe5, 0x9e, 0x6c, 0x26, 0x8f, 0x70, 0x37, 0x56, 0x6e, 0xe5, 0x60, 0x31, 0xa5,
    +	0xfe, 0xd0, 0x2d, 0x98, 0xa0, 0xe2, 0x6f, 0x51, 0x53, 0x27, 0xb2, 0xde, 0x42, 0xe8, 0xc6, 0xdd,
    +	0x3f, 0x24, 0xc3, 0x11, 0x15, 0xb2, 0x61, 0xda, 0x15, 0x57, 0xe0, 0x36, 0xc5, 0x14, 0x58, 0xc9,
    +	0xe2, 0xee, 0x8d, 0x4e, 0xfc, 0xd8, 0xb8, 0x93, 0x10, 0x27, 0xf9, 0xd1, 0x43, 0x98, 0xeb, 0x70,
    +	0x3b, 0xb0, 0x39, 0xca, 0x6d, 0x9e, 0xcf, 0xb2, 0xd9, 0xf7, 0x51, 0xd4, 0x92, 0x30, 0x3b, 0xb7,
    +	0xd9, 0x45, 0x8b, 0x7b, 0x0c, 0xc9, 0x3f, 0xe7, 0x60, 0xc0, 0x60, 0x78, 0x09, 0x4b, 0xde, 0xbd,
    +	0xc4, 0x92, 0xf7, 0xf6, 0xf3, 0x4f, 0xbc, 0xd4, 0xa5, 0xaf, 0xd1, 0xb5, 0xf4, 0xbd, 0xfb, 0x02,
    +	0x36, 0x06, 0x2f, 0x81, 0x7f, 0xe4, 0xe0, 0x3f, 0xe9, 0xca, 0xf1, 0x52, 0x78, 0x2d, 0xd1, 0x62,
    +	0x2f, 0x74, 0xb5, 0xd8, 0x13, 0x43, 0x50, 0xfc, 0xb3, 0x24, 0x76, 0x2d, 0x89, 0xbf, 0x48, 0x50,
    +	0x4e, 0x8f, 0xdb, 0x4b, 0x58, 0x1a, 0x3f, 0x49, 0x2e, 0x8d, 0x6f, 0x3c, 0x7f, 0x92, 0xa5, 0x2c,
    +	0x91, 0x57, 0x06, 0xe5, 0x56, 0xb4, 0xee, 0x0d, 0x31, 0xf2, 0xbf, 0xcb, 0x0d, 0x0a, 0x15, 0xdf,
    +	0x4e, 0x33, 0x7e, 0xb5, 0x24, 0xb4, 0x2f, 0x5b, 0x6c, 0xf4, 0x98, 0x6c, 0x7a, 0x04, 0x09, 0xd9,
    +	0x80, 0xf1, 0x66, 0x30, 0xab, 0x45, 0x51, 0xaf, 0x0e, 0x35, 0x22, 0x07, 0x8d, 0xf6, 0x60, 0x2d,
    +	0x10, 0x30, 0x1c, 0xd2, 0xa3, 0x1a, 0x8c, 0x11, 0xfe, 0x53, 0x7d, 0xd8, 0xca, 0xce, 0xfa, 0x61,
    +	0xaf, 0x02, 0xcb, 0xc2, 0x00, 0x85, 0x05, 0xb7, 0xfc, 0xb5, 0x04, 0xcb, 0x59, 0x2d, 0x01, 0x1d,
    +	0xf4, 0x59, 0xf1, 0x5e, 0x60, 0x7d, 0x1f, 0x7e, 0xe5, 0xfb, 0x5e, 0x82, 0xa3, 0xfd, 0x36, 0x29,
    +	0x56, 0x64, 0x6c, 0x7d, 0x8a, 0x76, 0x9f, 0xa8, 0xc8, 0x6e, 0x70, 0x29, 0x16, 0xa7, 0xe8, 0x14,
    +	0x4c, 0x34, 0x34, 0xab, 0xb6, 0x6d, 0x7c, 0x16, 0x6e, 0xf5, 0x51, 0x9a, 0xbf, 0x2f, 0xe4, 0x38,
    +	0x42, 0xa0, 0x4b, 0x30, 0xc7, 0xf5, 0xd6, 0x89, 0x55, 0xf7, 0x1a, 0xfc, 0x45, 0xc4, 0x6a, 0x12,
    +	0x4d, 0x9d, 0x1b, 0x5d, 0xe7, 0xb8, 0x47, 0x43, 0xfe, 0x53, 0x02, 0xf4, 0x3c, 0xdb, 0xc4, 0x49,
    +	0x28, 0x6a, 0x8e, 0xc1, 0x57, 0xdc, 0xa0, 0xd0, 0x8a, 0xea, 0x74, 0xbb, 0x55, 0x29, 0xae, 0x6e,
    +	0x5d, 0x0d, 0x84, 0x38, 0x3e, 0x67, 0xe0, 0x70, 0xd0, 0x06, 0x03, 0x55, 0x80, 0x43, 0xc3, 0x14,
    +	0xc7, 0xe7, 0xe8, 0x22, 0x4c, 0xe9, 0x4d, 0x9f, 0x7a, 0xc4, 0xdd, 0xd6, 0x6d, 0x87, 0xf0, 0xc6,
    +	0x34, 0xa1, 0x1e, 0x15, 0x3e, 0x4d, 0xad, 0x75, 0x9c, 0xe1, 0x04, 0x12, 0x29, 0x00, 0xac, 0xac,
    +	0xa8, 0xa3, 0x31, 0x3b, 0x05, 0x6e, 0x67, 0x86, 0x3d, 0xd8, 0x66, 0x24, 0xc5, 0x1d, 0x08, 0xf9,
    +	0x3e, 0x2c, 0x6c, 0x13, 0x77, 0xdf, 0xd0, 0xc9, 0xaa, 0xae, 0xdb, 0xbe, 0xe5, 0x85, 0xcb, 0x7a,
    +	0x15, 0x8a, 0x11, 0x4c, 0x54, 0xde, 0x11, 0x61, 0xbf, 0x18, 0x71, 0xe1, 0x18, 0x13, 0x95, 0x7a,
    +	0x2e, 0xb5, 0xd4, 0x7f, 0xca, 0xc1, 0x78, 0x4c, 0x9f, 0xdf, 0x33, 0xac, 0x9a, 0x60, 0x3e, 0x16,
    +	0xa2, 0xaf, 0x19, 0x56, 0xed, 0x59, 0xab, 0x32, 0x29, 0x60, 0xec, 0x13, 0x73, 0x20, 0xba, 0x0a,
    +	0x79, 0x9f, 0x12, 0x57, 0x14, 0xf1, 0xc9, 0xac, 0x64, 0xbe, 0x45, 0x89, 0x1b, 0xee, 0x57, 0x13,
    +	0x8c, 0x99, 0x09, 0x30, 0xa7, 0x40, 0x1b, 0x50, 0xa8, 0xb3, 0x47, 0x11, 0x75, 0x7a, 0x2a, 0x8b,
    +	0xab, 0xf3, 0x47, 0x4c, 0x90, 0x06, 0x5c, 0x82, 0x03, 0x16, 0xf4, 0x00, 0x66, 0x68, 0x22, 0x84,
    +	0xfc, 0xb9, 0x86, 0xd8, 0x97, 0xfa, 0x06, 0x5e, 0x45, 0xed, 0x56, 0x65, 0x26, 0x79, 0x84, 0xbb,
    +	0x0c, 0xc8, 0x55, 0x98, 0xec, 0x70, 0x30, 0xbb, 0xcb, 0xaa, 0x97, 0x1e, 0x3d, 0x2d, 0x8f, 0x3c,
    +	0x7e, 0x5a, 0x1e, 0x79, 0xf2, 0xb4, 0x3c, 0xf2, 0x79, 0xbb, 0x2c, 0x3d, 0x6a, 0x97, 0xa5, 0xc7,
    +	0xed, 0xb2, 0xf4, 0xa4, 0x5d, 0x96, 0x7e, 0x6d, 0x97, 0xa5, 0x2f, 0x7f, 0x2b, 0x8f, 0xdc, 0x29,
    +	0x0f, 0xfe, 0x5f, 0xec, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe3, 0xd5, 0xd0, 0x62, 0xac, 0x15,
    +	0x00, 0x00,
     }
     
     func (m *ExemptPriorityLevelConfiguration) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/flowcontrol/v1beta2/generated.proto b/vendor/k8s.io/api/flowcontrol/v1beta2/generated.proto
    index a832114afea3..d6073fc9259c 100644
    --- a/vendor/k8s.io/api/flowcontrol/v1beta2/generated.proto
    +++ b/vendor/k8s.io/api/flowcontrol/v1beta2/generated.proto
    @@ -76,7 +76,7 @@ message FlowSchema {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // `spec` is the specification of the desired behavior of a FlowSchema.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -101,7 +101,7 @@ message FlowSchemaCondition {
       optional string status = 2;
     
       // `lastTransitionTime` is the last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // `reason` is a unique, one-word, CamelCase reason for the condition's last transition.
       optional string reason = 4;
    @@ -115,7 +115,7 @@ message FlowSchemaList {
       // `metadata` is the standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // `items` is a list of FlowSchemas.
       repeated FlowSchema items = 2;
    @@ -295,7 +295,7 @@ message PriorityLevelConfiguration {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // `spec` is the specification of the desired behavior of a "request-priority".
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -320,7 +320,7 @@ message PriorityLevelConfigurationCondition {
       optional string status = 2;
     
       // `lastTransitionTime` is the last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // `reason` is a unique, one-word, CamelCase reason for the condition's last transition.
       optional string reason = 4;
    @@ -334,7 +334,7 @@ message PriorityLevelConfigurationList {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // `items` is a list of request-priorities.
       repeated PriorityLevelConfiguration items = 2;
    diff --git a/vendor/k8s.io/api/flowcontrol/v1beta3/generated.pb.go b/vendor/k8s.io/api/flowcontrol/v1beta3/generated.pb.go
    index c6598306d99d..e0a3fc1e180d 100644
    --- a/vendor/k8s.io/api/flowcontrol/v1beta3/generated.pb.go
    +++ b/vendor/k8s.io/api/flowcontrol/v1beta3/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/flowcontrol/v1beta3/generated.proto
    +// source: k8s.io/api/flowcontrol/v1beta3/generated.proto
     
     package v1beta3
     
    @@ -46,7 +46,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ExemptPriorityLevelConfiguration) Reset()      { *m = ExemptPriorityLevelConfiguration{} }
     func (*ExemptPriorityLevelConfiguration) ProtoMessage() {}
     func (*ExemptPriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{0}
    +	return fileDescriptor_52ab6629c083d251, []int{0}
     }
     func (m *ExemptPriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -74,7 +74,7 @@ var xxx_messageInfo_ExemptPriorityLevelConfiguration proto.InternalMessageInfo
     func (m *FlowDistinguisherMethod) Reset()      { *m = FlowDistinguisherMethod{} }
     func (*FlowDistinguisherMethod) ProtoMessage() {}
     func (*FlowDistinguisherMethod) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{1}
    +	return fileDescriptor_52ab6629c083d251, []int{1}
     }
     func (m *FlowDistinguisherMethod) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -102,7 +102,7 @@ var xxx_messageInfo_FlowDistinguisherMethod proto.InternalMessageInfo
     func (m *FlowSchema) Reset()      { *m = FlowSchema{} }
     func (*FlowSchema) ProtoMessage() {}
     func (*FlowSchema) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{2}
    +	return fileDescriptor_52ab6629c083d251, []int{2}
     }
     func (m *FlowSchema) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -130,7 +130,7 @@ var xxx_messageInfo_FlowSchema proto.InternalMessageInfo
     func (m *FlowSchemaCondition) Reset()      { *m = FlowSchemaCondition{} }
     func (*FlowSchemaCondition) ProtoMessage() {}
     func (*FlowSchemaCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{3}
    +	return fileDescriptor_52ab6629c083d251, []int{3}
     }
     func (m *FlowSchemaCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -158,7 +158,7 @@ var xxx_messageInfo_FlowSchemaCondition proto.InternalMessageInfo
     func (m *FlowSchemaList) Reset()      { *m = FlowSchemaList{} }
     func (*FlowSchemaList) ProtoMessage() {}
     func (*FlowSchemaList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{4}
    +	return fileDescriptor_52ab6629c083d251, []int{4}
     }
     func (m *FlowSchemaList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -186,7 +186,7 @@ var xxx_messageInfo_FlowSchemaList proto.InternalMessageInfo
     func (m *FlowSchemaSpec) Reset()      { *m = FlowSchemaSpec{} }
     func (*FlowSchemaSpec) ProtoMessage() {}
     func (*FlowSchemaSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{5}
    +	return fileDescriptor_52ab6629c083d251, []int{5}
     }
     func (m *FlowSchemaSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -214,7 +214,7 @@ var xxx_messageInfo_FlowSchemaSpec proto.InternalMessageInfo
     func (m *FlowSchemaStatus) Reset()      { *m = FlowSchemaStatus{} }
     func (*FlowSchemaStatus) ProtoMessage() {}
     func (*FlowSchemaStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{6}
    +	return fileDescriptor_52ab6629c083d251, []int{6}
     }
     func (m *FlowSchemaStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -242,7 +242,7 @@ var xxx_messageInfo_FlowSchemaStatus proto.InternalMessageInfo
     func (m *GroupSubject) Reset()      { *m = GroupSubject{} }
     func (*GroupSubject) ProtoMessage() {}
     func (*GroupSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{7}
    +	return fileDescriptor_52ab6629c083d251, []int{7}
     }
     func (m *GroupSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -270,7 +270,7 @@ var xxx_messageInfo_GroupSubject proto.InternalMessageInfo
     func (m *LimitResponse) Reset()      { *m = LimitResponse{} }
     func (*LimitResponse) ProtoMessage() {}
     func (*LimitResponse) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{8}
    +	return fileDescriptor_52ab6629c083d251, []int{8}
     }
     func (m *LimitResponse) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -298,7 +298,7 @@ var xxx_messageInfo_LimitResponse proto.InternalMessageInfo
     func (m *LimitedPriorityLevelConfiguration) Reset()      { *m = LimitedPriorityLevelConfiguration{} }
     func (*LimitedPriorityLevelConfiguration) ProtoMessage() {}
     func (*LimitedPriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{9}
    +	return fileDescriptor_52ab6629c083d251, []int{9}
     }
     func (m *LimitedPriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -326,7 +326,7 @@ var xxx_messageInfo_LimitedPriorityLevelConfiguration proto.InternalMessageInfo
     func (m *NonResourcePolicyRule) Reset()      { *m = NonResourcePolicyRule{} }
     func (*NonResourcePolicyRule) ProtoMessage() {}
     func (*NonResourcePolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{10}
    +	return fileDescriptor_52ab6629c083d251, []int{10}
     }
     func (m *NonResourcePolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -354,7 +354,7 @@ var xxx_messageInfo_NonResourcePolicyRule proto.InternalMessageInfo
     func (m *PolicyRulesWithSubjects) Reset()      { *m = PolicyRulesWithSubjects{} }
     func (*PolicyRulesWithSubjects) ProtoMessage() {}
     func (*PolicyRulesWithSubjects) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{11}
    +	return fileDescriptor_52ab6629c083d251, []int{11}
     }
     func (m *PolicyRulesWithSubjects) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -382,7 +382,7 @@ var xxx_messageInfo_PolicyRulesWithSubjects proto.InternalMessageInfo
     func (m *PriorityLevelConfiguration) Reset()      { *m = PriorityLevelConfiguration{} }
     func (*PriorityLevelConfiguration) ProtoMessage() {}
     func (*PriorityLevelConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{12}
    +	return fileDescriptor_52ab6629c083d251, []int{12}
     }
     func (m *PriorityLevelConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -410,7 +410,7 @@ var xxx_messageInfo_PriorityLevelConfiguration proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationCondition) Reset()      { *m = PriorityLevelConfigurationCondition{} }
     func (*PriorityLevelConfigurationCondition) ProtoMessage() {}
     func (*PriorityLevelConfigurationCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{13}
    +	return fileDescriptor_52ab6629c083d251, []int{13}
     }
     func (m *PriorityLevelConfigurationCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -438,7 +438,7 @@ var xxx_messageInfo_PriorityLevelConfigurationCondition proto.InternalMessageInf
     func (m *PriorityLevelConfigurationList) Reset()      { *m = PriorityLevelConfigurationList{} }
     func (*PriorityLevelConfigurationList) ProtoMessage() {}
     func (*PriorityLevelConfigurationList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{14}
    +	return fileDescriptor_52ab6629c083d251, []int{14}
     }
     func (m *PriorityLevelConfigurationList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -466,7 +466,7 @@ var xxx_messageInfo_PriorityLevelConfigurationList proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationReference) Reset()      { *m = PriorityLevelConfigurationReference{} }
     func (*PriorityLevelConfigurationReference) ProtoMessage() {}
     func (*PriorityLevelConfigurationReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{15}
    +	return fileDescriptor_52ab6629c083d251, []int{15}
     }
     func (m *PriorityLevelConfigurationReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -494,7 +494,7 @@ var xxx_messageInfo_PriorityLevelConfigurationReference proto.InternalMessageInf
     func (m *PriorityLevelConfigurationSpec) Reset()      { *m = PriorityLevelConfigurationSpec{} }
     func (*PriorityLevelConfigurationSpec) ProtoMessage() {}
     func (*PriorityLevelConfigurationSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{16}
    +	return fileDescriptor_52ab6629c083d251, []int{16}
     }
     func (m *PriorityLevelConfigurationSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -522,7 +522,7 @@ var xxx_messageInfo_PriorityLevelConfigurationSpec proto.InternalMessageInfo
     func (m *PriorityLevelConfigurationStatus) Reset()      { *m = PriorityLevelConfigurationStatus{} }
     func (*PriorityLevelConfigurationStatus) ProtoMessage() {}
     func (*PriorityLevelConfigurationStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{17}
    +	return fileDescriptor_52ab6629c083d251, []int{17}
     }
     func (m *PriorityLevelConfigurationStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -550,7 +550,7 @@ var xxx_messageInfo_PriorityLevelConfigurationStatus proto.InternalMessageInfo
     func (m *QueuingConfiguration) Reset()      { *m = QueuingConfiguration{} }
     func (*QueuingConfiguration) ProtoMessage() {}
     func (*QueuingConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{18}
    +	return fileDescriptor_52ab6629c083d251, []int{18}
     }
     func (m *QueuingConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -578,7 +578,7 @@ var xxx_messageInfo_QueuingConfiguration proto.InternalMessageInfo
     func (m *ResourcePolicyRule) Reset()      { *m = ResourcePolicyRule{} }
     func (*ResourcePolicyRule) ProtoMessage() {}
     func (*ResourcePolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{19}
    +	return fileDescriptor_52ab6629c083d251, []int{19}
     }
     func (m *ResourcePolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -606,7 +606,7 @@ var xxx_messageInfo_ResourcePolicyRule proto.InternalMessageInfo
     func (m *ServiceAccountSubject) Reset()      { *m = ServiceAccountSubject{} }
     func (*ServiceAccountSubject) ProtoMessage() {}
     func (*ServiceAccountSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{20}
    +	return fileDescriptor_52ab6629c083d251, []int{20}
     }
     func (m *ServiceAccountSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -634,7 +634,7 @@ var xxx_messageInfo_ServiceAccountSubject proto.InternalMessageInfo
     func (m *Subject) Reset()      { *m = Subject{} }
     func (*Subject) ProtoMessage() {}
     func (*Subject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{21}
    +	return fileDescriptor_52ab6629c083d251, []int{21}
     }
     func (m *Subject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -662,7 +662,7 @@ var xxx_messageInfo_Subject proto.InternalMessageInfo
     func (m *UserSubject) Reset()      { *m = UserSubject{} }
     func (*UserSubject) ProtoMessage() {}
     func (*UserSubject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_803504887082f044, []int{22}
    +	return fileDescriptor_52ab6629c083d251, []int{22}
     }
     func (m *UserSubject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -714,112 +714,111 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/flowcontrol/v1beta3/generated.proto", fileDescriptor_803504887082f044)
    -}
    -
    -var fileDescriptor_803504887082f044 = []byte{
    -	// 1604 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0xcb, 0x73, 0xdb, 0x54,
    -	0x17, 0x8f, 0x1c, 0x3b, 0x89, 0x4f, 0x9e, 0xbd, 0x69, 0x26, 0xfe, 0xd2, 0x6f, 0xec, 0x54, 0xdf,
    -	0xcc, 0x57, 0xa0, 0xad, 0xdc, 0x27, 0x2d, 0x30, 0x3c, 0xaa, 0xb4, 0x94, 0xd2, 0x24, 0x4d, 0x6f,
    -	0x5a, 0xe8, 0x94, 0xce, 0x50, 0x59, 0xbe, 0xb1, 0xd5, 0x58, 0x8f, 0xea, 0x4a, 0x0e, 0xa1, 0x1b,
    -	0x86, 0xbf, 0x80, 0x35, 0x2c, 0x59, 0xb0, 0x62, 0xc3, 0x96, 0x05, 0x4b, 0x3a, 0xac, 0xba, 0xec,
    -	0xca, 0x50, 0xb3, 0xe2, 0x3f, 0x80, 0xce, 0x30, 0xc3, 0xdc, 0xab, 0x2b, 0xc9, 0xf2, 0x4b, 0x9e,
    -	0x74, 0xa6, 0x2b, 0x76, 0xd1, 0x79, 0xfc, 0xce, 0xbd, 0xe7, 0x9e, 0xc7, 0xcf, 0x81, 0xab, 0xbb,
    -	0x17, 0xa9, 0x62, 0xd8, 0xe5, 0x5d, 0xbf, 0x42, 0x5c, 0x8b, 0x78, 0x84, 0x96, 0x9b, 0xc4, 0xaa,
    -	0xda, 0x6e, 0x59, 0x28, 0x34, 0xc7, 0x28, 0xef, 0x34, 0xec, 0x3d, 0xdd, 0xb6, 0x3c, 0xd7, 0x6e,
    -	0x94, 0x9b, 0xa7, 0x2b, 0xc4, 0xd3, 0xce, 0x96, 0x6b, 0xc4, 0x22, 0xae, 0xe6, 0x91, 0xaa, 0xe2,
    -	0xb8, 0xb6, 0x67, 0xa3, 0x62, 0x60, 0xaf, 0x68, 0x8e, 0xa1, 0x74, 0xd8, 0x2b, 0xc2, 0x7e, 0xe5,
    -	0x64, 0xcd, 0xf0, 0xea, 0x7e, 0x45, 0xd1, 0x6d, 0xb3, 0x5c, 0xb3, 0x6b, 0x76, 0x99, 0xbb, 0x55,
    -	0xfc, 0x1d, 0xfe, 0xc5, 0x3f, 0xf8, 0x5f, 0x01, 0xdc, 0xca, 0xb9, 0x38, 0xbc, 0xa9, 0xe9, 0x75,
    -	0xc3, 0x22, 0xee, 0x7e, 0xd9, 0xd9, 0xad, 0x31, 0x01, 0x2d, 0x9b, 0xc4, 0xd3, 0xca, 0xcd, 0xd3,
    -	0xdd, 0x87, 0x58, 0x29, 0x0f, 0xf2, 0x72, 0x7d, 0xcb, 0x33, 0x4c, 0xd2, 0xe3, 0xf0, 0x7a, 0x9a,
    -	0x03, 0xd5, 0xeb, 0xc4, 0xd4, 0xba, 0xfd, 0xe4, 0x1f, 0x25, 0x58, 0xbd, 0xf2, 0x19, 0x31, 0x1d,
    -	0x6f, 0xcb, 0x35, 0x6c, 0xd7, 0xf0, 0xf6, 0xd7, 0x49, 0x93, 0x34, 0xd6, 0x6c, 0x6b, 0xc7, 0xa8,
    -	0xf9, 0xae, 0xe6, 0x19, 0xb6, 0x85, 0xee, 0x40, 0xc1, 0xb2, 0x4d, 0xc3, 0xd2, 0x98, 0x5c, 0xf7,
    -	0x5d, 0x97, 0x58, 0xfa, 0xfe, 0x76, 0x5d, 0x73, 0x09, 0x2d, 0x48, 0xab, 0xd2, 0x2b, 0x39, 0xf5,
    -	0xbf, 0xed, 0x56, 0xa9, 0xb0, 0x39, 0xc0, 0x06, 0x0f, 0xf4, 0x46, 0x6f, 0xc3, 0x7c, 0x83, 0x58,
    -	0x55, 0xad, 0xd2, 0x20, 0x5b, 0xc4, 0xd5, 0x89, 0xe5, 0x15, 0x32, 0x1c, 0x70, 0xb1, 0xdd, 0x2a,
    -	0xcd, 0xaf, 0x27, 0x55, 0xb8, 0xdb, 0x56, 0xbe, 0x0b, 0xcb, 0xef, 0x37, 0xec, 0xbd, 0xcb, 0x06,
    -	0xf5, 0x0c, 0xab, 0xe6, 0x1b, 0xb4, 0x4e, 0xdc, 0x0d, 0xe2, 0xd5, 0xed, 0x2a, 0x7a, 0x17, 0xb2,
    -	0xde, 0xbe, 0x43, 0xf8, 0xf9, 0xf2, 0xea, 0xf1, 0xc7, 0xad, 0xd2, 0x58, 0xbb, 0x55, 0xca, 0xde,
    -	0xda, 0x77, 0xc8, 0xf3, 0x56, 0xe9, 0xc8, 0x00, 0x37, 0xa6, 0xc6, 0xdc, 0x51, 0xfe, 0x3a, 0x03,
    -	0xc0, 0xac, 0xb6, 0x79, 0xe2, 0xd0, 0x7d, 0x98, 0x62, 0x8f, 0x55, 0xd5, 0x3c, 0x8d, 0x63, 0x4e,
    -	0x9f, 0x39, 0xa5, 0xc4, 0x95, 0x12, 0xe5, 0x5c, 0x71, 0x76, 0x6b, 0x4c, 0x40, 0x15, 0x66, 0xad,
    -	0x34, 0x4f, 0x2b, 0x37, 0x2a, 0x0f, 0x88, 0xee, 0x6d, 0x10, 0x4f, 0x53, 0x91, 0x38, 0x05, 0xc4,
    -	0x32, 0x1c, 0xa1, 0xa2, 0x2d, 0xc8, 0x52, 0x87, 0xe8, 0x3c, 0x01, 0xd3, 0x67, 0x14, 0x65, 0x78,
    -	0x1d, 0x2a, 0xf1, 0xd9, 0xb6, 0x1d, 0xa2, 0xab, 0x33, 0xe1, 0x0d, 0xd9, 0x17, 0xe6, 0x48, 0xe8,
    -	0x0e, 0x4c, 0x50, 0x4f, 0xf3, 0x7c, 0x5a, 0x18, 0xef, 0x39, 0x71, 0x1a, 0x26, 0xf7, 0x53, 0xe7,
    -	0x04, 0xea, 0x44, 0xf0, 0x8d, 0x05, 0x9e, 0xfc, 0x34, 0x03, 0x8b, 0xb1, 0xf1, 0x9a, 0x6d, 0x55,
    -	0x0d, 0x5e, 0x29, 0x6f, 0x25, 0xb2, 0x7e, 0xac, 0x2b, 0xeb, 0xcb, 0x7d, 0x5c, 0xe2, 0x8c, 0xa3,
    -	0x37, 0xa2, 0xe3, 0x66, 0xb8, 0xfb, 0xd1, 0x64, 0xf0, 0xe7, 0xad, 0xd2, 0x7c, 0xe4, 0x96, 0x3c,
    -	0x0f, 0x6a, 0x02, 0x6a, 0x68, 0xd4, 0xbb, 0xe5, 0x6a, 0x16, 0x0d, 0x60, 0x0d, 0x93, 0x88, 0x5b,
    -	0xbf, 0x36, 0xda, 0x3b, 0x31, 0x0f, 0x75, 0x45, 0x84, 0x44, 0xeb, 0x3d, 0x68, 0xb8, 0x4f, 0x04,
    -	0xf4, 0x7f, 0x98, 0x70, 0x89, 0x46, 0x6d, 0xab, 0x90, 0xe5, 0x47, 0x8e, 0xf2, 0x85, 0xb9, 0x14,
    -	0x0b, 0x2d, 0x7a, 0x15, 0x26, 0x4d, 0x42, 0xa9, 0x56, 0x23, 0x85, 0x1c, 0x37, 0x9c, 0x17, 0x86,
    -	0x93, 0x1b, 0x81, 0x18, 0x87, 0x7a, 0xf9, 0x27, 0x09, 0xe6, 0xe2, 0x3c, 0xad, 0x1b, 0xd4, 0x43,
    -	0xf7, 0x7a, 0x6a, 0x4f, 0x19, 0xed, 0x4e, 0xcc, 0x9b, 0x57, 0xde, 0x82, 0x08, 0x37, 0x15, 0x4a,
    -	0x3a, 0xea, 0xee, 0x06, 0xe4, 0x0c, 0x8f, 0x98, 0x2c, 0xeb, 0xe3, 0x5d, 0xe9, 0x4a, 0x29, 0x12,
    -	0x75, 0x56, 0xc0, 0xe6, 0xae, 0x31, 0x00, 0x1c, 0xe0, 0xc8, 0x7f, 0x8c, 0x77, 0xde, 0x80, 0xd5,
    -	0x23, 0xfa, 0x4e, 0x82, 0x15, 0x67, 0xe0, 0x80, 0x11, 0x97, 0x5a, 0x4b, 0x8b, 0x3c, 0x78, 0x44,
    -	0x61, 0xb2, 0x43, 0xd8, 0x5c, 0x21, 0xaa, 0x2c, 0x8e, 0xb4, 0x32, 0xc4, 0x78, 0xc8, 0x51, 0xd0,
    -	0x87, 0x80, 0x4c, 0xcd, 0x63, 0x19, 0xad, 0x6d, 0xb9, 0x44, 0x27, 0x55, 0x86, 0x2a, 0x86, 0x52,
    -	0x54, 0x1d, 0x1b, 0x3d, 0x16, 0xb8, 0x8f, 0x17, 0xfa, 0x52, 0x82, 0xc5, 0x6a, 0xef, 0x90, 0x11,
    -	0x75, 0x79, 0x61, 0x94, 0x44, 0xf7, 0x99, 0x51, 0xea, 0x72, 0xbb, 0x55, 0x5a, 0xec, 0xa3, 0xc0,
    -	0xfd, 0x82, 0xa1, 0x7b, 0x90, 0x73, 0xfd, 0x06, 0xa1, 0x85, 0x2c, 0x7f, 0xde, 0xd4, 0xa8, 0x5b,
    -	0x76, 0xc3, 0xd0, 0xf7, 0x31, 0x73, 0xf9, 0xd8, 0xf0, 0xea, 0xdb, 0x3e, 0x9f, 0x55, 0x34, 0x7e,
    -	0x6b, 0xae, 0xc2, 0x01, 0xa8, 0xfc, 0x08, 0x16, 0xba, 0x87, 0x06, 0xaa, 0x01, 0xe8, 0x61, 0x9f,
    -	0xb2, 0x05, 0xc1, 0xc2, 0x9e, 0x1d, 0xbd, 0xaa, 0xa2, 0x1e, 0x8f, 0xe7, 0x65, 0x24, 0xa2, 0xb8,
    -	0x03, 0x5a, 0x3e, 0x05, 0x33, 0x57, 0x5d, 0xdb, 0x77, 0xc4, 0x19, 0xd1, 0x2a, 0x64, 0x2d, 0xcd,
    -	0x0c, 0xa7, 0x4f, 0x34, 0x11, 0x37, 0x35, 0x93, 0x60, 0xae, 0x91, 0xbf, 0x95, 0x60, 0x76, 0xdd,
    -	0x30, 0x0d, 0x0f, 0x13, 0xea, 0xd8, 0x16, 0x25, 0xe8, 0x7c, 0x62, 0x62, 0x1d, 0xed, 0x9a, 0x58,
    -	0x87, 0x12, 0xc6, 0x1d, 0xb3, 0xea, 0x13, 0x98, 0x7c, 0xe8, 0x13, 0xdf, 0xb0, 0x6a, 0x62, 0x5e,
    -	0x9f, 0x4b, 0xbb, 0xe0, 0xcd, 0xc0, 0x3c, 0x51, 0x6d, 0xea, 0x34, 0x1b, 0x01, 0x42, 0x83, 0x43,
    -	0x44, 0xf9, 0xef, 0x0c, 0x1c, 0xe5, 0x81, 0x49, 0x75, 0xc8, 0x56, 0xbe, 0x97, 0xba, 0x95, 0x57,
    -	0xc5, 0x6d, 0x0e, 0xb2, 0x99, 0x1f, 0xc0, 0x6c, 0xa3, 0xf3, 0xee, 0xe2, 0x9a, 0x27, 0xd3, 0xae,
    -	0x99, 0x48, 0x98, 0xba, 0x24, 0x4e, 0x90, 0x4c, 0x3a, 0x4e, 0x42, 0xf7, 0x63, 0x01, 0xe3, 0xa3,
    -	0xb3, 0x00, 0x74, 0x03, 0x96, 0x2a, 0xb6, 0xeb, 0xda, 0x7b, 0x86, 0x55, 0xe3, 0x71, 0x42, 0x90,
    -	0x2c, 0x07, 0xf9, 0x4f, 0xbb, 0x55, 0x5a, 0x52, 0xfb, 0x19, 0xe0, 0xfe, 0x7e, 0xf2, 0x1e, 0x2c,
    -	0x6d, 0xb2, 0x99, 0x42, 0x6d, 0xdf, 0xd5, 0x49, 0xdc, 0x10, 0xa8, 0x04, 0xb9, 0x26, 0x71, 0x2b,
    -	0x41, 0x51, 0xe7, 0xd5, 0x3c, 0x6b, 0x87, 0x8f, 0x98, 0x00, 0x07, 0x72, 0x76, 0x13, 0x2b, 0xf6,
    -	0xbc, 0x8d, 0xd7, 0x69, 0x61, 0x82, 0x9b, 0xf2, 0x9b, 0x6c, 0x26, 0x55, 0xb8, 0xdb, 0x56, 0x6e,
    -	0x65, 0x60, 0x79, 0x40, 0xff, 0xa1, 0xdb, 0x30, 0x45, 0xc5, 0xdf, 0xa2, 0xa7, 0x8e, 0xa5, 0xbd,
    -	0x85, 0xf0, 0x8d, 0xa7, 0x7f, 0x08, 0x86, 0x23, 0x28, 0x64, 0xc3, 0xac, 0x2b, 0x8e, 0xc0, 0x63,
    -	0x8a, 0x2d, 0x70, 0x26, 0x0d, 0xbb, 0x37, 0x3b, 0xf1, 0x63, 0xe3, 0x4e, 0x40, 0x9c, 0xc4, 0x47,
    -	0x8f, 0x60, 0xa1, 0xe3, 0xda, 0x41, 0xcc, 0x71, 0x1e, 0xf3, 0x7c, 0x5a, 0xcc, 0xbe, 0x8f, 0xa2,
    -	0x16, 0x44, 0xd8, 0x85, 0xcd, 0x2e, 0x58, 0xdc, 0x13, 0x48, 0xfe, 0x25, 0x03, 0x43, 0x16, 0xc3,
    -	0x4b, 0x20, 0x79, 0xf7, 0x13, 0x24, 0xef, 0x9d, 0x83, 0x6f, 0xbc, 0x81, 0xa4, 0xaf, 0xde, 0x45,
    -	0xfa, 0xde, 0x7b, 0x81, 0x18, 0xc3, 0x49, 0xe0, 0x9f, 0x19, 0xf8, 0xdf, 0x60, 0xe7, 0x98, 0x14,
    -	0x5e, 0x4f, 0x8c, 0xd8, 0x0b, 0x5d, 0x23, 0xf6, 0xd8, 0x08, 0x10, 0xff, 0x92, 0xc4, 0x2e, 0x92,
    -	0xf8, 0xab, 0x04, 0xc5, 0xc1, 0x79, 0x7b, 0x09, 0xa4, 0xf1, 0xd3, 0x24, 0x69, 0x7c, 0xf3, 0xe0,
    -	0x45, 0x36, 0x80, 0x44, 0x5e, 0x1d, 0x56, 0x5b, 0x11, 0xdd, 0x1b, 0x61, 0xe5, 0x7f, 0x9f, 0x19,
    -	0x96, 0x2a, 0xce, 0x4e, 0x53, 0x7e, 0xb5, 0x24, 0xbc, 0xaf, 0x58, 0x6c, 0xf5, 0x98, 0x6c, 0x7b,
    -	0x04, 0x05, 0x59, 0x87, 0xc9, 0x46, 0xb0, 0xab, 0x45, 0x53, 0x5f, 0x1a, 0x69, 0x45, 0x0e, 0x5b,
    -	0xed, 0x01, 0x2d, 0x10, 0x66, 0x38, 0x84, 0x47, 0x55, 0x98, 0x20, 0xfc, 0xa7, 0xfa, 0xa8, 0x9d,
    -	0x9d, 0xf6, 0xc3, 0x5e, 0x05, 0x56, 0x85, 0x81, 0x15, 0x16, 0xd8, 0xf2, 0x37, 0x12, 0xac, 0xa6,
    -	0x8d, 0x04, 0xb4, 0xd7, 0x87, 0xe2, 0xbd, 0x00, 0x7d, 0x1f, 0x9d, 0xf2, 0xfd, 0x20, 0xc1, 0xe1,
    -	0x7e, 0x4c, 0x8a, 0x35, 0x19, 0xa3, 0x4f, 0x11, 0xf7, 0x89, 0x9a, 0xec, 0x26, 0x97, 0x62, 0xa1,
    -	0x45, 0x27, 0x60, 0xaa, 0xae, 0x59, 0xd5, 0x6d, 0xe3, 0xf3, 0x90, 0xd5, 0x47, 0x65, 0xfe, 0x81,
    -	0x90, 0xe3, 0xc8, 0x02, 0x5d, 0x86, 0x05, 0xee, 0xb7, 0x4e, 0xac, 0x9a, 0x57, 0xe7, 0x2f, 0x22,
    -	0xa8, 0x49, 0xb4, 0x75, 0x6e, 0x76, 0xe9, 0x71, 0x8f, 0x87, 0xfc, 0x97, 0x04, 0xe8, 0x20, 0x6c,
    -	0xe2, 0x38, 0xe4, 0x35, 0xc7, 0xe0, 0x14, 0x37, 0x68, 0xb4, 0xbc, 0x3a, 0xdb, 0x6e, 0x95, 0xf2,
    -	0x97, 0xb6, 0xae, 0x05, 0x42, 0x1c, 0xeb, 0x99, 0x71, 0xb8, 0x68, 0x83, 0x85, 0x2a, 0x8c, 0xc3,
    -	0xc0, 0x14, 0xc7, 0x7a, 0x74, 0x11, 0x66, 0xf4, 0x86, 0x4f, 0x3d, 0xe2, 0x6e, 0xeb, 0xb6, 0x43,
    -	0xf8, 0x60, 0x9a, 0x52, 0x0f, 0x8b, 0x3b, 0xcd, 0xac, 0x75, 0xe8, 0x70, 0xc2, 0x12, 0x29, 0x00,
    -	0xac, 0xad, 0xa8, 0xa3, 0xb1, 0x38, 0x39, 0x1e, 0x67, 0x8e, 0x3d, 0xd8, 0x66, 0x24, 0xc5, 0x1d,
    -	0x16, 0xf2, 0x03, 0x58, 0xda, 0x26, 0x6e, 0xd3, 0xd0, 0xc9, 0x25, 0x5d, 0xb7, 0x7d, 0xcb, 0x0b,
    -	0xc9, 0x7a, 0x19, 0xf2, 0x91, 0x99, 0xe8, 0xbc, 0x43, 0x22, 0x7e, 0x3e, 0xc2, 0xc2, 0xb1, 0x4d,
    -	0xd4, 0xea, 0x99, 0x81, 0xad, 0xfe, 0x73, 0x06, 0x26, 0x63, 0xf8, 0xec, 0xae, 0x61, 0x55, 0x05,
    -	0xf2, 0x91, 0xd0, 0xfa, 0xba, 0x61, 0x55, 0x9f, 0xb7, 0x4a, 0xd3, 0xc2, 0x8c, 0x7d, 0x62, 0x6e,
    -	0x88, 0xae, 0x41, 0xd6, 0xa7, 0xc4, 0x15, 0x4d, 0x7c, 0x3c, 0xad, 0x98, 0x6f, 0x53, 0xe2, 0x86,
    -	0xfc, 0x6a, 0x8a, 0x21, 0x33, 0x01, 0xe6, 0x10, 0x68, 0x03, 0x72, 0x35, 0xf6, 0x28, 0xa2, 0x4f,
    -	0x4f, 0xa4, 0x61, 0x75, 0xfe, 0x88, 0x09, 0xca, 0x80, 0x4b, 0x70, 0x80, 0x82, 0x1e, 0xc2, 0x1c,
    -	0x4d, 0xa4, 0x90, 0x3f, 0xd7, 0x08, 0x7c, 0xa9, 0x6f, 0xe2, 0x55, 0xd4, 0x6e, 0x95, 0xe6, 0x92,
    -	0x2a, 0xdc, 0x15, 0x40, 0x2e, 0xc3, 0x74, 0xc7, 0x05, 0xd3, 0xa7, 0xac, 0x7a, 0xf9, 0xf1, 0xb3,
    -	0xe2, 0xd8, 0x93, 0x67, 0xc5, 0xb1, 0xa7, 0xcf, 0x8a, 0x63, 0x5f, 0xb4, 0x8b, 0xd2, 0xe3, 0x76,
    -	0x51, 0x7a, 0xd2, 0x2e, 0x4a, 0x4f, 0xdb, 0x45, 0xe9, 0xb7, 0x76, 0x51, 0xfa, 0xea, 0xf7, 0xe2,
    -	0xd8, 0xdd, 0xe2, 0xf0, 0xff, 0xc5, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x1d, 0xc5, 0x22, 0x46,
    -	0xc5, 0x15, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/flowcontrol/v1beta3/generated.proto", fileDescriptor_52ab6629c083d251)
    +}
    +
    +var fileDescriptor_52ab6629c083d251 = []byte{
    +	// 1589 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0xcb, 0x6f, 0xdc, 0x54,
    +	0x17, 0x8f, 0x27, 0x33, 0x49, 0xe6, 0xe4, 0xd9, 0x9b, 0x46, 0x99, 0x2f, 0xfd, 0x34, 0x93, 0xfa,
    +	0x93, 0xbe, 0x02, 0x6d, 0x3d, 0x7d, 0xd2, 0x02, 0xe2, 0x51, 0xa7, 0xa5, 0x94, 0x26, 0x69, 0x7a,
    +	0xd3, 0x42, 0x55, 0x2a, 0x51, 0xc7, 0x73, 0xe3, 0x71, 0x33, 0x7e, 0xd4, 0xd7, 0x4e, 0x08, 0xdd,
    +	0x20, 0xfe, 0x02, 0xd6, 0xb0, 0x64, 0xc1, 0x8a, 0x0d, 0x5b, 0x16, 0x2c, 0xa9, 0x58, 0x75, 0xd9,
    +	0xd5, 0x40, 0x87, 0x15, 0xff, 0x01, 0x54, 0x42, 0x42, 0xf7, 0xfa, 0xda, 0x1e, 0xcf, 0xcb, 0xa3,
    +	0x54, 0xea, 0x8a, 0x5d, 0x7c, 0xee, 0x39, 0xbf, 0x73, 0xcf, 0xb9, 0xe7, 0xf1, 0x9b, 0x80, 0xb2,
    +	0x73, 0x91, 0x2a, 0xa6, 0x53, 0xd5, 0x5c, 0xb3, 0xba, 0xdd, 0x70, 0xf6, 0x74, 0xc7, 0xf6, 0x3d,
    +	0xa7, 0x51, 0xdd, 0x3d, 0xbd, 0x45, 0x7c, 0xed, 0x6c, 0xd5, 0x20, 0x36, 0xf1, 0x34, 0x9f, 0xd4,
    +	0x14, 0xd7, 0x73, 0x7c, 0x07, 0x95, 0x43, 0x7d, 0x45, 0x73, 0x4d, 0xa5, 0x4d, 0x5f, 0x11, 0xfa,
    +	0x4b, 0x27, 0x0d, 0xd3, 0xaf, 0x07, 0x5b, 0x8a, 0xee, 0x58, 0x55, 0xc3, 0x31, 0x9c, 0x2a, 0x37,
    +	0xdb, 0x0a, 0xb6, 0xf9, 0x17, 0xff, 0xe0, 0x7f, 0x85, 0x70, 0x4b, 0xe7, 0x12, 0xf7, 0x96, 0xa6,
    +	0xd7, 0x4d, 0x9b, 0x78, 0xfb, 0x55, 0x77, 0xc7, 0x60, 0x02, 0x5a, 0xb5, 0x88, 0xaf, 0x55, 0x77,
    +	0x4f, 0x77, 0x5e, 0x62, 0xa9, 0xda, 0xcf, 0xca, 0x0b, 0x6c, 0xdf, 0xb4, 0x48, 0x97, 0xc1, 0xeb,
    +	0x59, 0x06, 0x54, 0xaf, 0x13, 0x4b, 0xeb, 0xb4, 0x93, 0x7f, 0x94, 0x60, 0xf9, 0xca, 0x67, 0xc4,
    +	0x72, 0xfd, 0x0d, 0xcf, 0x74, 0x3c, 0xd3, 0xdf, 0x5f, 0x25, 0xbb, 0xa4, 0xb1, 0xe2, 0xd8, 0xdb,
    +	0xa6, 0x11, 0x78, 0x9a, 0x6f, 0x3a, 0x36, 0xba, 0x03, 0x25, 0xdb, 0xb1, 0x4c, 0x5b, 0x63, 0x72,
    +	0x3d, 0xf0, 0x3c, 0x62, 0xeb, 0xfb, 0x9b, 0x75, 0xcd, 0x23, 0xb4, 0x24, 0x2d, 0x4b, 0xaf, 0x14,
    +	0xd4, 0xff, 0xb6, 0x9a, 0x95, 0xd2, 0x7a, 0x1f, 0x1d, 0xdc, 0xd7, 0x1a, 0xbd, 0x0d, 0xb3, 0x0d,
    +	0x62, 0xd7, 0xb4, 0xad, 0x06, 0xd9, 0x20, 0x9e, 0x4e, 0x6c, 0xbf, 0x94, 0xe3, 0x80, 0xf3, 0xad,
    +	0x66, 0x65, 0x76, 0x35, 0x7d, 0x84, 0x3b, 0x75, 0xe5, 0xbb, 0xb0, 0xf8, 0x7e, 0xc3, 0xd9, 0xbb,
    +	0x6c, 0x52, 0xdf, 0xb4, 0x8d, 0xc0, 0xa4, 0x75, 0xe2, 0xad, 0x11, 0xbf, 0xee, 0xd4, 0xd0, 0xbb,
    +	0x90, 0xf7, 0xf7, 0x5d, 0xc2, 0xef, 0x57, 0x54, 0x8f, 0x3f, 0x6e, 0x56, 0x46, 0x5a, 0xcd, 0x4a,
    +	0xfe, 0xd6, 0xbe, 0x4b, 0x9e, 0x37, 0x2b, 0x47, 0xfa, 0x98, 0xb1, 0x63, 0xcc, 0x0d, 0xe5, 0xaf,
    +	0x73, 0x00, 0x4c, 0x6b, 0x93, 0x27, 0x0e, 0xdd, 0x87, 0x09, 0xf6, 0x58, 0x35, 0xcd, 0xd7, 0x38,
    +	0xe6, 0xe4, 0x99, 0x53, 0x4a, 0x52, 0x29, 0x71, 0xce, 0x15, 0x77, 0xc7, 0x60, 0x02, 0xaa, 0x30,
    +	0x6d, 0x65, 0xf7, 0xb4, 0x72, 0x63, 0xeb, 0x01, 0xd1, 0xfd, 0x35, 0xe2, 0x6b, 0x2a, 0x12, 0xb7,
    +	0x80, 0x44, 0x86, 0x63, 0x54, 0xb4, 0x01, 0x79, 0xea, 0x12, 0x9d, 0x27, 0x60, 0xf2, 0x8c, 0xa2,
    +	0x0c, 0xae, 0x43, 0x25, 0xb9, 0xdb, 0xa6, 0x4b, 0x74, 0x75, 0x2a, 0x8a, 0x90, 0x7d, 0x61, 0x8e,
    +	0x84, 0xee, 0xc0, 0x18, 0xf5, 0x35, 0x3f, 0xa0, 0xa5, 0xd1, 0xae, 0x1b, 0x67, 0x61, 0x72, 0x3b,
    +	0x75, 0x46, 0xa0, 0x8e, 0x85, 0xdf, 0x58, 0xe0, 0xc9, 0x4f, 0x73, 0x30, 0x9f, 0x28, 0xaf, 0x38,
    +	0x76, 0xcd, 0xe4, 0x95, 0xf2, 0x56, 0x2a, 0xeb, 0xc7, 0x3a, 0xb2, 0xbe, 0xd8, 0xc3, 0x24, 0xc9,
    +	0x38, 0x7a, 0x23, 0xbe, 0x6e, 0x8e, 0x9b, 0x1f, 0x4d, 0x3b, 0x7f, 0xde, 0xac, 0xcc, 0xc6, 0x66,
    +	0xe9, 0xfb, 0xa0, 0x5d, 0x40, 0x0d, 0x8d, 0xfa, 0xb7, 0x3c, 0xcd, 0xa6, 0x21, 0xac, 0x69, 0x11,
    +	0x11, 0xf5, 0x6b, 0xc3, 0xbd, 0x13, 0xb3, 0x50, 0x97, 0x84, 0x4b, 0xb4, 0xda, 0x85, 0x86, 0x7b,
    +	0x78, 0x40, 0xff, 0x87, 0x31, 0x8f, 0x68, 0xd4, 0xb1, 0x4b, 0x79, 0x7e, 0xe5, 0x38, 0x5f, 0x98,
    +	0x4b, 0xb1, 0x38, 0x45, 0xaf, 0xc2, 0xb8, 0x45, 0x28, 0xd5, 0x0c, 0x52, 0x2a, 0x70, 0xc5, 0x59,
    +	0xa1, 0x38, 0xbe, 0x16, 0x8a, 0x71, 0x74, 0x2e, 0xff, 0x24, 0xc1, 0x4c, 0x92, 0xa7, 0x55, 0x93,
    +	0xfa, 0xe8, 0x5e, 0x57, 0xed, 0x29, 0xc3, 0xc5, 0xc4, 0xac, 0x79, 0xe5, 0xcd, 0x09, 0x77, 0x13,
    +	0x91, 0xa4, 0xad, 0xee, 0x6e, 0x40, 0xc1, 0xf4, 0x89, 0xc5, 0xb2, 0x3e, 0xda, 0x91, 0xae, 0x8c,
    +	0x22, 0x51, 0xa7, 0x05, 0x6c, 0xe1, 0x1a, 0x03, 0xc0, 0x21, 0x8e, 0xfc, 0xc7, 0x68, 0x7b, 0x04,
    +	0xac, 0x1e, 0xd1, 0x77, 0x12, 0x2c, 0xb9, 0x7d, 0x07, 0x8c, 0x08, 0x6a, 0x25, 0xcb, 0x73, 0xff,
    +	0x11, 0x85, 0xc9, 0x36, 0x61, 0x73, 0x85, 0xa8, 0xb2, 0xb8, 0xd2, 0xd2, 0x00, 0xe5, 0x01, 0x57,
    +	0x41, 0x1f, 0x02, 0xb2, 0x34, 0x9f, 0x65, 0xd4, 0xd8, 0xf0, 0x88, 0x4e, 0x6a, 0x0c, 0x55, 0x0c,
    +	0xa5, 0xb8, 0x3a, 0xd6, 0xba, 0x34, 0x70, 0x0f, 0x2b, 0xf4, 0xa5, 0x04, 0xf3, 0xb5, 0xee, 0x21,
    +	0x23, 0xea, 0xf2, 0xc2, 0x30, 0x89, 0xee, 0x31, 0xa3, 0xd4, 0xc5, 0x56, 0xb3, 0x32, 0xdf, 0xe3,
    +	0x00, 0xf7, 0x72, 0x86, 0xee, 0x41, 0xc1, 0x0b, 0x1a, 0x84, 0x96, 0xf2, 0xfc, 0x79, 0x33, 0xbd,
    +	0x6e, 0x38, 0x0d, 0x53, 0xdf, 0xc7, 0xcc, 0xe4, 0x63, 0xd3, 0xaf, 0x6f, 0x06, 0x7c, 0x56, 0xd1,
    +	0xe4, 0xad, 0xf9, 0x11, 0x0e, 0x41, 0xe5, 0x47, 0x30, 0xd7, 0x39, 0x34, 0x90, 0x01, 0xa0, 0x47,
    +	0x7d, 0xca, 0x16, 0x04, 0x73, 0x7b, 0x76, 0xf8, 0xaa, 0x8a, 0x7b, 0x3c, 0x99, 0x97, 0xb1, 0x88,
    +	0xe2, 0x36, 0x68, 0xf9, 0x14, 0x4c, 0x5d, 0xf5, 0x9c, 0xc0, 0x15, 0x77, 0x44, 0xcb, 0x90, 0xb7,
    +	0x35, 0x2b, 0x9a, 0x3e, 0xf1, 0x44, 0x5c, 0xd7, 0x2c, 0x82, 0xf9, 0x89, 0xfc, 0xad, 0x04, 0xd3,
    +	0xab, 0xa6, 0x65, 0xfa, 0x98, 0x50, 0xd7, 0xb1, 0x29, 0x41, 0xe7, 0x53, 0x13, 0xeb, 0x68, 0xc7,
    +	0xc4, 0x3a, 0x94, 0x52, 0x6e, 0x9b, 0x55, 0x9f, 0xc0, 0xf8, 0xc3, 0x80, 0x04, 0xa6, 0x6d, 0x88,
    +	0x79, 0x7d, 0x2e, 0x2b, 0xc0, 0x9b, 0xa1, 0x7a, 0xaa, 0xda, 0xd4, 0x49, 0x36, 0x02, 0xc4, 0x09,
    +	0x8e, 0x10, 0xe5, 0xbf, 0x73, 0x70, 0x94, 0x3b, 0x26, 0xb5, 0x01, 0x5b, 0xf9, 0x5e, 0xe6, 0x56,
    +	0x5e, 0x16, 0xd1, 0x1c, 0x64, 0x33, 0x3f, 0x80, 0xe9, 0x46, 0x7b, 0xec, 0x22, 0xcc, 0x93, 0x59,
    +	0x61, 0xa6, 0x12, 0xa6, 0x2e, 0x88, 0x1b, 0xa4, 0x93, 0x8e, 0xd3, 0xd0, 0xbd, 0x58, 0xc0, 0xe8,
    +	0xf0, 0x2c, 0x00, 0xdd, 0x80, 0x85, 0x2d, 0xc7, 0xf3, 0x9c, 0x3d, 0xd3, 0x36, 0xb8, 0x9f, 0x08,
    +	0x24, 0xcf, 0x41, 0xfe, 0xd3, 0x6a, 0x56, 0x16, 0xd4, 0x5e, 0x0a, 0xb8, 0xb7, 0x9d, 0xbc, 0x07,
    +	0x0b, 0xeb, 0x6c, 0xa6, 0x50, 0x27, 0xf0, 0x74, 0x92, 0x34, 0x04, 0xaa, 0x40, 0x61, 0x97, 0x78,
    +	0x5b, 0x61, 0x51, 0x17, 0xd5, 0x22, 0x6b, 0x87, 0x8f, 0x98, 0x00, 0x87, 0x72, 0x16, 0x89, 0x9d,
    +	0x58, 0xde, 0xc6, 0xab, 0xb4, 0x34, 0xc6, 0x55, 0x79, 0x24, 0xeb, 0xe9, 0x23, 0xdc, 0xa9, 0x2b,
    +	0x37, 0x73, 0xb0, 0xd8, 0xa7, 0xff, 0xd0, 0x6d, 0x98, 0xa0, 0xe2, 0x6f, 0xd1, 0x53, 0xc7, 0xb2,
    +	0xde, 0x42, 0xd8, 0x26, 0xd3, 0x3f, 0x02, 0xc3, 0x31, 0x14, 0x72, 0x60, 0xda, 0x13, 0x57, 0xe0,
    +	0x3e, 0xc5, 0x16, 0x38, 0x93, 0x85, 0xdd, 0x9d, 0x9d, 0xe4, 0xb1, 0x71, 0x3b, 0x20, 0x4e, 0xe3,
    +	0xa3, 0x47, 0x30, 0xd7, 0x16, 0x76, 0xe8, 0x73, 0x94, 0xfb, 0x3c, 0x9f, 0xe5, 0xb3, 0xe7, 0xa3,
    +	0xa8, 0x25, 0xe1, 0x76, 0x6e, 0xbd, 0x03, 0x16, 0x77, 0x39, 0x92, 0x7f, 0xc9, 0xc1, 0x80, 0xc5,
    +	0xf0, 0x12, 0x48, 0xde, 0xfd, 0x14, 0xc9, 0x7b, 0xe7, 0xe0, 0x1b, 0xaf, 0x2f, 0xe9, 0xab, 0x77,
    +	0x90, 0xbe, 0xf7, 0x5e, 0xc0, 0xc7, 0x60, 0x12, 0xf8, 0x67, 0x0e, 0xfe, 0xd7, 0xdf, 0x38, 0x21,
    +	0x85, 0xd7, 0x53, 0x23, 0xf6, 0x42, 0xc7, 0x88, 0x3d, 0x36, 0x04, 0xc4, 0xbf, 0x24, 0xb1, 0x83,
    +	0x24, 0xfe, 0x2a, 0x41, 0xb9, 0x7f, 0xde, 0x5e, 0x02, 0x69, 0xfc, 0x34, 0x4d, 0x1a, 0xdf, 0x3c,
    +	0x78, 0x91, 0xf5, 0x21, 0x91, 0x57, 0x07, 0xd5, 0x56, 0x4c, 0xf7, 0x86, 0x58, 0xf9, 0xdf, 0xe7,
    +	0x06, 0xa5, 0x8a, 0xb3, 0xd3, 0x8c, 0x5f, 0x2d, 0x29, 0xeb, 0x2b, 0x36, 0x5b, 0x3d, 0x16, 0xdb,
    +	0x1e, 0x61, 0x41, 0xd6, 0x61, 0xbc, 0x11, 0xee, 0x6a, 0xd1, 0xd4, 0x97, 0x86, 0x5a, 0x91, 0x83,
    +	0x56, 0x7b, 0x48, 0x0b, 0x84, 0x1a, 0x8e, 0xe0, 0x51, 0x0d, 0xc6, 0x08, 0xff, 0xa9, 0x3e, 0x6c,
    +	0x67, 0x67, 0xfd, 0xb0, 0x57, 0x81, 0x55, 0x61, 0xa8, 0x85, 0x05, 0xb6, 0xfc, 0x8d, 0x04, 0xcb,
    +	0x59, 0x23, 0x01, 0xed, 0xf5, 0xa0, 0x78, 0x2f, 0x40, 0xdf, 0x87, 0xa7, 0x7c, 0x3f, 0x48, 0x70,
    +	0xb8, 0x17, 0x93, 0x62, 0x4d, 0xc6, 0xe8, 0x53, 0xcc, 0x7d, 0xe2, 0x26, 0xbb, 0xc9, 0xa5, 0x58,
    +	0x9c, 0xa2, 0x13, 0x30, 0x51, 0xd7, 0xec, 0xda, 0xa6, 0xf9, 0x79, 0xc4, 0xea, 0xe3, 0x32, 0xff,
    +	0x40, 0xc8, 0x71, 0xac, 0x81, 0x2e, 0xc3, 0x1c, 0xb7, 0x5b, 0x25, 0xb6, 0xe1, 0xd7, 0xf9, 0x8b,
    +	0x08, 0x6a, 0x12, 0x6f, 0x9d, 0x9b, 0x1d, 0xe7, 0xb8, 0xcb, 0x42, 0xfe, 0x4b, 0x02, 0x74, 0x10,
    +	0x36, 0x71, 0x1c, 0x8a, 0x9a, 0x6b, 0x72, 0x8a, 0x1b, 0x36, 0x5a, 0x51, 0x9d, 0x6e, 0x35, 0x2b,
    +	0xc5, 0x4b, 0x1b, 0xd7, 0x42, 0x21, 0x4e, 0xce, 0x99, 0x72, 0xb4, 0x68, 0xc3, 0x85, 0x2a, 0x94,
    +	0x23, 0xc7, 0x14, 0x27, 0xe7, 0xe8, 0x22, 0x4c, 0xe9, 0x8d, 0x80, 0xfa, 0xc4, 0xdb, 0xd4, 0x1d,
    +	0x97, 0xf0, 0xc1, 0x34, 0xa1, 0x1e, 0x16, 0x31, 0x4d, 0xad, 0xb4, 0x9d, 0xe1, 0x94, 0x26, 0x52,
    +	0x00, 0x58, 0x5b, 0x51, 0x57, 0x63, 0x7e, 0x0a, 0xdc, 0xcf, 0x0c, 0x7b, 0xb0, 0xf5, 0x58, 0x8a,
    +	0xdb, 0x34, 0xe4, 0x07, 0xb0, 0xb0, 0x49, 0xbc, 0x5d, 0x53, 0x27, 0x97, 0x74, 0xdd, 0x09, 0x6c,
    +	0x3f, 0x22, 0xeb, 0x55, 0x28, 0xc6, 0x6a, 0xa2, 0xf3, 0x0e, 0x09, 0xff, 0xc5, 0x18, 0x0b, 0x27,
    +	0x3a, 0x71, 0xab, 0xe7, 0xfa, 0xb6, 0xfa, 0xcf, 0x39, 0x18, 0x4f, 0xe0, 0xf3, 0x3b, 0xa6, 0x5d,
    +	0x13, 0xc8, 0x47, 0x22, 0xed, 0xeb, 0xa6, 0x5d, 0x7b, 0xde, 0xac, 0x4c, 0x0a, 0x35, 0xf6, 0x89,
    +	0xb9, 0x22, 0xba, 0x06, 0xf9, 0x80, 0x12, 0x4f, 0x34, 0xf1, 0xf1, 0xac, 0x62, 0xbe, 0x4d, 0x89,
    +	0x17, 0xf1, 0xab, 0x09, 0x86, 0xcc, 0x04, 0x98, 0x43, 0xa0, 0x35, 0x28, 0x18, 0xec, 0x51, 0x44,
    +	0x9f, 0x9e, 0xc8, 0xc2, 0x6a, 0xff, 0x11, 0x13, 0x96, 0x01, 0x97, 0xe0, 0x10, 0x05, 0x3d, 0x84,
    +	0x19, 0x9a, 0x4a, 0x21, 0x7f, 0xae, 0x21, 0xf8, 0x52, 0xcf, 0xc4, 0xab, 0xa8, 0xd5, 0xac, 0xcc,
    +	0xa4, 0x8f, 0x70, 0x87, 0x03, 0xb9, 0x0a, 0x93, 0x6d, 0x01, 0x66, 0x4f, 0x59, 0xf5, 0xf2, 0xe3,
    +	0x67, 0xe5, 0x91, 0x27, 0xcf, 0xca, 0x23, 0x4f, 0x9f, 0x95, 0x47, 0xbe, 0x68, 0x95, 0xa5, 0xc7,
    +	0xad, 0xb2, 0xf4, 0xa4, 0x55, 0x96, 0x9e, 0xb6, 0xca, 0xd2, 0x6f, 0xad, 0xb2, 0xf4, 0xd5, 0xef,
    +	0xe5, 0x91, 0xbb, 0xe5, 0xc1, 0xff, 0x8b, 0xfd, 0x27, 0x00, 0x00, 0xff, 0xff, 0x03, 0x5d, 0xec,
    +	0x01, 0xac, 0x15, 0x00, 0x00,
     }
     
     func (m *ExemptPriorityLevelConfiguration) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/flowcontrol/v1beta3/generated.proto b/vendor/k8s.io/api/flowcontrol/v1beta3/generated.proto
    index eda0f7829e78..c6504d4353f0 100644
    --- a/vendor/k8s.io/api/flowcontrol/v1beta3/generated.proto
    +++ b/vendor/k8s.io/api/flowcontrol/v1beta3/generated.proto
    @@ -76,7 +76,7 @@ message FlowSchema {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // `spec` is the specification of the desired behavior of a FlowSchema.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -101,7 +101,7 @@ message FlowSchemaCondition {
       optional string status = 2;
     
       // `lastTransitionTime` is the last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // `reason` is a unique, one-word, CamelCase reason for the condition's last transition.
       optional string reason = 4;
    @@ -115,7 +115,7 @@ message FlowSchemaList {
       // `metadata` is the standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // `items` is a list of FlowSchemas.
       repeated FlowSchema items = 2;
    @@ -297,7 +297,7 @@ message PriorityLevelConfiguration {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // `spec` is the specification of the desired behavior of a "request-priority".
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -322,7 +322,7 @@ message PriorityLevelConfigurationCondition {
       optional string status = 2;
     
       // `lastTransitionTime` is the last time the condition transitioned from one status to another.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // `reason` is a unique, one-word, CamelCase reason for the condition's last transition.
       optional string reason = 4;
    @@ -336,7 +336,7 @@ message PriorityLevelConfigurationList {
       // `metadata` is the standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // `items` is a list of request-priorities.
       repeated PriorityLevelConfiguration items = 2;
    diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/doc.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/doc.go
    new file mode 100644
    index 000000000000..5db6d52d473c
    --- /dev/null
    +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/doc.go
    @@ -0,0 +1,23 @@
    +/*
    +Copyright 2016 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// +k8s:deepcopy-gen=package
    +// +k8s:protobuf-gen=package
    +// +k8s:openapi-gen=true
    +
    +// +groupName=imagepolicy.k8s.io
    +
    +package v1alpha1 // import "k8s.io/api/imagepolicy/v1alpha1"
    diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.pb.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.pb.go
    new file mode 100644
    index 000000000000..57732a51648e
    --- /dev/null
    +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.pb.go
    @@ -0,0 +1,1374 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by protoc-gen-gogo. DO NOT EDIT.
    +// source: k8s.io/api/imagepolicy/v1alpha1/generated.proto
    +
    +package v1alpha1
    +
    +import (
    +	fmt "fmt"
    +
    +	io "io"
    +
    +	proto "github.com/gogo/protobuf/proto"
    +	github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
    +
    +	math "math"
    +	math_bits "math/bits"
    +	reflect "reflect"
    +	strings "strings"
    +)
    +
    +// Reference imports to suppress errors if they are not otherwise used.
    +var _ = proto.Marshal
    +var _ = fmt.Errorf
    +var _ = math.Inf
    +
    +// This is a compile-time assertion to ensure that this generated file
    +// is compatible with the proto package it is being compiled against.
    +// A compilation error at this line likely means your copy of the
    +// proto package needs to be updated.
    +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    +
    +func (m *ImageReview) Reset()      { *m = ImageReview{} }
    +func (*ImageReview) ProtoMessage() {}
    +func (*ImageReview) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7620d1538838ac6f, []int{0}
    +}
    +func (m *ImageReview) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ImageReview) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ImageReview) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ImageReview.Merge(m, src)
    +}
    +func (m *ImageReview) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ImageReview) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ImageReview.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ImageReview proto.InternalMessageInfo
    +
    +func (m *ImageReviewContainerSpec) Reset()      { *m = ImageReviewContainerSpec{} }
    +func (*ImageReviewContainerSpec) ProtoMessage() {}
    +func (*ImageReviewContainerSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7620d1538838ac6f, []int{1}
    +}
    +func (m *ImageReviewContainerSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ImageReviewContainerSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ImageReviewContainerSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ImageReviewContainerSpec.Merge(m, src)
    +}
    +func (m *ImageReviewContainerSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ImageReviewContainerSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ImageReviewContainerSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ImageReviewContainerSpec proto.InternalMessageInfo
    +
    +func (m *ImageReviewSpec) Reset()      { *m = ImageReviewSpec{} }
    +func (*ImageReviewSpec) ProtoMessage() {}
    +func (*ImageReviewSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7620d1538838ac6f, []int{2}
    +}
    +func (m *ImageReviewSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ImageReviewSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ImageReviewSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ImageReviewSpec.Merge(m, src)
    +}
    +func (m *ImageReviewSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ImageReviewSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ImageReviewSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ImageReviewSpec proto.InternalMessageInfo
    +
    +func (m *ImageReviewStatus) Reset()      { *m = ImageReviewStatus{} }
    +func (*ImageReviewStatus) ProtoMessage() {}
    +func (*ImageReviewStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7620d1538838ac6f, []int{3}
    +}
    +func (m *ImageReviewStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ImageReviewStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ImageReviewStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ImageReviewStatus.Merge(m, src)
    +}
    +func (m *ImageReviewStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ImageReviewStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ImageReviewStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ImageReviewStatus proto.InternalMessageInfo
    +
    +func init() {
    +	proto.RegisterType((*ImageReview)(nil), "k8s.io.api.imagepolicy.v1alpha1.ImageReview")
    +	proto.RegisterType((*ImageReviewContainerSpec)(nil), "k8s.io.api.imagepolicy.v1alpha1.ImageReviewContainerSpec")
    +	proto.RegisterType((*ImageReviewSpec)(nil), "k8s.io.api.imagepolicy.v1alpha1.ImageReviewSpec")
    +	proto.RegisterMapType((map[string]string)(nil), "k8s.io.api.imagepolicy.v1alpha1.ImageReviewSpec.AnnotationsEntry")
    +	proto.RegisterType((*ImageReviewStatus)(nil), "k8s.io.api.imagepolicy.v1alpha1.ImageReviewStatus")
    +	proto.RegisterMapType((map[string]string)(nil), "k8s.io.api.imagepolicy.v1alpha1.ImageReviewStatus.AuditAnnotationsEntry")
    +}
    +
    +func init() {
    +	proto.RegisterFile("k8s.io/api/imagepolicy/v1alpha1/generated.proto", fileDescriptor_7620d1538838ac6f)
    +}
    +
    +var fileDescriptor_7620d1538838ac6f = []byte{
    +	// 593 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0x4f, 0x6f, 0xd3, 0x30,
    +	0x18, 0xc6, 0x9b, 0x74, 0xff, 0xea, 0x02, 0xeb, 0x0c, 0x48, 0x51, 0x0f, 0xe9, 0x54, 0x24, 0x34,
    +	0x0e, 0xd8, 0xb4, 0x42, 0x68, 0x70, 0x00, 0x35, 0xd3, 0x24, 0x38, 0x00, 0x92, 0xb9, 0xed, 0x84,
    +	0x9b, 0x9a, 0xd4, 0xb4, 0x89, 0xa3, 0xd8, 0xe9, 0xe8, 0x8d, 0x4f, 0x80, 0xf8, 0x06, 0x7c, 0x11,
    +	0x3e, 0x40, 0x8f, 0x3b, 0xee, 0x34, 0xd1, 0x70, 0xe4, 0x4b, 0xa0, 0x38, 0x69, 0x13, 0xda, 0xa1,
    +	0xa9, 0xb7, 0xbc, 0xef, 0xeb, 0xe7, 0xf7, 0x3e, 0x79, 0x62, 0x05, 0xe0, 0xd1, 0xb1, 0x44, 0x5c,
    +	0x60, 0x1a, 0x72, 0xcc, 0x7d, 0xea, 0xb1, 0x50, 0x8c, 0xb9, 0x3b, 0xc5, 0x93, 0x0e, 0x1d, 0x87,
    +	0x43, 0xda, 0xc1, 0x1e, 0x0b, 0x58, 0x44, 0x15, 0x1b, 0xa0, 0x30, 0x12, 0x4a, 0xc0, 0x56, 0x26,
    +	0x40, 0x34, 0xe4, 0xa8, 0x24, 0x40, 0x0b, 0x41, 0xf3, 0xb1, 0xc7, 0xd5, 0x30, 0xee, 0x23, 0x57,
    +	0xf8, 0xd8, 0x13, 0x9e, 0xc0, 0x5a, 0xd7, 0x8f, 0x3f, 0xe9, 0x4a, 0x17, 0xfa, 0x29, 0xe3, 0x35,
    +	0x9f, 0x16, 0x06, 0x7c, 0xea, 0x0e, 0x79, 0xc0, 0xa2, 0x29, 0x0e, 0x47, 0x5e, 0xda, 0x90, 0xd8,
    +	0x67, 0x8a, 0xe2, 0xc9, 0x9a, 0x8b, 0x26, 0xfe, 0x9f, 0x2a, 0x8a, 0x03, 0xc5, 0x7d, 0xb6, 0x26,
    +	0x78, 0x76, 0x93, 0x40, 0xba, 0x43, 0xe6, 0xd3, 0x55, 0x5d, 0xfb, 0x87, 0x09, 0xea, 0x6f, 0xd2,
    +	0xd7, 0x24, 0x6c, 0xc2, 0xd9, 0x39, 0xfc, 0x08, 0xf6, 0x52, 0x4f, 0x03, 0xaa, 0xa8, 0x65, 0x1c,
    +	0x1a, 0x47, 0xf5, 0xee, 0x13, 0x54, 0x24, 0xb2, 0x44, 0xa3, 0x70, 0xe4, 0xa5, 0x0d, 0x89, 0xd2,
    +	0xd3, 0x68, 0xd2, 0x41, 0xef, 0xfb, 0x9f, 0x99, 0xab, 0xde, 0x32, 0x45, 0x1d, 0x38, 0xbb, 0x6a,
    +	0x55, 0x92, 0xab, 0x16, 0x28, 0x7a, 0x64, 0x49, 0x85, 0x04, 0x6c, 0xc9, 0x90, 0xb9, 0x96, 0xb9,
    +	0x46, 0xbf, 0x36, 0x6f, 0x54, 0x72, 0xf7, 0x21, 0x64, 0xae, 0x73, 0x2b, 0xa7, 0x6f, 0xa5, 0x15,
    +	0xd1, 0x2c, 0x78, 0x06, 0x76, 0xa4, 0xa2, 0x2a, 0x96, 0x56, 0x55, 0x53, 0xbb, 0x1b, 0x51, 0xb5,
    +	0xd2, 0xb9, 0x93, 0x73, 0x77, 0xb2, 0x9a, 0xe4, 0xc4, 0xf6, 0x2b, 0x60, 0x95, 0x0e, 0x9f, 0x88,
    +	0x40, 0xd1, 0x34, 0x82, 0x74, 0x3b, 0x7c, 0x00, 0xb6, 0x35, 0x5d, 0x47, 0x55, 0x73, 0x6e, 0xe7,
    +	0x88, 0xed, 0x4c, 0x90, 0xcd, 0xda, 0x7f, 0x4c, 0xb0, 0xbf, 0xf2, 0x12, 0xd0, 0x07, 0xc0, 0x5d,
    +	0x90, 0xa4, 0x65, 0x1c, 0x56, 0x8f, 0xea, 0xdd, 0xe7, 0x9b, 0x98, 0xfe, 0xc7, 0x47, 0x91, 0xf8,
    +	0xb2, 0x2d, 0x49, 0x69, 0x01, 0xfc, 0x02, 0xea, 0x34, 0x08, 0x84, 0xa2, 0x8a, 0x8b, 0x40, 0x5a,
    +	0xa6, 0xde, 0xd7, 0xdb, 0x34, 0x7a, 0xd4, 0x2b, 0x18, 0xa7, 0x81, 0x8a, 0xa6, 0xce, 0xdd, 0x7c,
    +	0x6f, 0xbd, 0x34, 0x21, 0xe5, 0x55, 0x10, 0x83, 0x5a, 0x40, 0x7d, 0x26, 0x43, 0xea, 0x32, 0xfd,
    +	0x71, 0x6a, 0xce, 0x41, 0x2e, 0xaa, 0xbd, 0x5b, 0x0c, 0x48, 0x71, 0xa6, 0xf9, 0x12, 0x34, 0x56,
    +	0xd7, 0xc0, 0x06, 0xa8, 0x8e, 0xd8, 0x34, 0x0b, 0x99, 0xa4, 0x8f, 0xf0, 0x1e, 0xd8, 0x9e, 0xd0,
    +	0x71, 0xcc, 0xf4, 0x2d, 0xaa, 0x91, 0xac, 0x78, 0x61, 0x1e, 0x1b, 0xed, 0x9f, 0x26, 0x38, 0x58,
    +	0xfb, 0xb8, 0xf0, 0x11, 0xd8, 0xa5, 0xe3, 0xb1, 0x38, 0x67, 0x03, 0x4d, 0xd9, 0x73, 0xf6, 0x73,
    +	0x13, 0xbb, 0xbd, 0xac, 0x4d, 0x16, 0x73, 0xf8, 0x10, 0xec, 0x44, 0x8c, 0x4a, 0x11, 0x64, 0xec,
    +	0xe2, 0x5e, 0x10, 0xdd, 0x25, 0xf9, 0x14, 0x7e, 0x33, 0x40, 0x83, 0xc6, 0x03, 0xae, 0x4a, 0x76,
    +	0xad, 0xaa, 0x4e, 0xf6, 0xf5, 0xe6, 0xd7, 0x0f, 0xf5, 0x56, 0x50, 0x59, 0xc0, 0x56, 0xbe, 0xbc,
    +	0xb1, 0x3a, 0x26, 0x6b, 0xbb, 0x9b, 0x27, 0xe0, 0xfe, 0xb5, 0x90, 0x4d, 0xe2, 0x73, 0x4e, 0x67,
    +	0x73, 0xbb, 0x72, 0x31, 0xb7, 0x2b, 0x97, 0x73, 0xbb, 0xf2, 0x35, 0xb1, 0x8d, 0x59, 0x62, 0x1b,
    +	0x17, 0x89, 0x6d, 0x5c, 0x26, 0xb6, 0xf1, 0x2b, 0xb1, 0x8d, 0xef, 0xbf, 0xed, 0xca, 0x59, 0xeb,
    +	0x86, 0xbf, 0xea, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x59, 0x86, 0x92, 0x15, 0x77, 0x05, 0x00,
    +	0x00,
    +}
    +
    +func (m *ImageReview) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ImageReview) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ImageReview) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ImageReviewContainerSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ImageReviewContainerSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ImageReviewContainerSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Image)
    +	copy(dAtA[i:], m.Image)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Image)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ImageReviewSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ImageReviewSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ImageReviewSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Namespace)
    +	copy(dAtA[i:], m.Namespace)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
    +	i--
    +	dAtA[i] = 0x1a
    +	if len(m.Annotations) > 0 {
    +		keysForAnnotations := make([]string, 0, len(m.Annotations))
    +		for k := range m.Annotations {
    +			keysForAnnotations = append(keysForAnnotations, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
    +		for iNdEx := len(keysForAnnotations) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Annotations[string(keysForAnnotations[iNdEx])]
    +			baseI := i
    +			i -= len(v)
    +			copy(dAtA[i:], v)
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(v)))
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForAnnotations[iNdEx])
    +			copy(dAtA[i:], keysForAnnotations[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForAnnotations[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Containers) > 0 {
    +		for iNdEx := len(m.Containers) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Containers[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ImageReviewStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ImageReviewStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ImageReviewStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.AuditAnnotations) > 0 {
    +		keysForAuditAnnotations := make([]string, 0, len(m.AuditAnnotations))
    +		for k := range m.AuditAnnotations {
    +			keysForAuditAnnotations = append(keysForAuditAnnotations, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForAuditAnnotations)
    +		for iNdEx := len(keysForAuditAnnotations) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.AuditAnnotations[string(keysForAuditAnnotations[iNdEx])]
    +			baseI := i
    +			i -= len(v)
    +			copy(dAtA[i:], v)
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(v)))
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForAuditAnnotations[iNdEx])
    +			copy(dAtA[i:], keysForAuditAnnotations[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForAuditAnnotations[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	i -= len(m.Reason)
    +	copy(dAtA[i:], m.Reason)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason)))
    +	i--
    +	dAtA[i] = 0x12
    +	i--
    +	if m.Allowed {
    +		dAtA[i] = 1
    +	} else {
    +		dAtA[i] = 0
    +	}
    +	i--
    +	dAtA[i] = 0x8
    +	return len(dAtA) - i, nil
    +}
    +
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
    +	}
    +	dAtA[offset] = uint8(v)
    +	return base
    +}
    +func (m *ImageReview) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Status.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ImageReviewContainerSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Image)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ImageReviewSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Containers) > 0 {
    +		for _, e := range m.Containers {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Annotations) > 0 {
    +		for k, v := range m.Annotations {
    +			_ = k
    +			_ = v
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v)))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	l = len(m.Namespace)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ImageReviewStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	n += 2
    +	l = len(m.Reason)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.AuditAnnotations) > 0 {
    +		for k, v := range m.AuditAnnotations {
    +			_ = k
    +			_ = v
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v)))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *ImageReview) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ImageReview{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ImageReviewSpec", "ImageReviewSpec", 1), `&`, ``, 1) + `,`,
    +		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ImageReviewStatus", "ImageReviewStatus", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ImageReviewContainerSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ImageReviewContainerSpec{`,
    +		`Image:` + fmt.Sprintf("%v", this.Image) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ImageReviewSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForContainers := "[]ImageReviewContainerSpec{"
    +	for _, f := range this.Containers {
    +		repeatedStringForContainers += strings.Replace(strings.Replace(f.String(), "ImageReviewContainerSpec", "ImageReviewContainerSpec", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForContainers += "}"
    +	keysForAnnotations := make([]string, 0, len(this.Annotations))
    +	for k := range this.Annotations {
    +		keysForAnnotations = append(keysForAnnotations, k)
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
    +	mapStringForAnnotations := "map[string]string{"
    +	for _, k := range keysForAnnotations {
    +		mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
    +	}
    +	mapStringForAnnotations += "}"
    +	s := strings.Join([]string{`&ImageReviewSpec{`,
    +		`Containers:` + repeatedStringForContainers + `,`,
    +		`Annotations:` + mapStringForAnnotations + `,`,
    +		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ImageReviewStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	keysForAuditAnnotations := make([]string, 0, len(this.AuditAnnotations))
    +	for k := range this.AuditAnnotations {
    +		keysForAuditAnnotations = append(keysForAuditAnnotations, k)
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForAuditAnnotations)
    +	mapStringForAuditAnnotations := "map[string]string{"
    +	for _, k := range keysForAuditAnnotations {
    +		mapStringForAuditAnnotations += fmt.Sprintf("%v: %v,", k, this.AuditAnnotations[k])
    +	}
    +	mapStringForAuditAnnotations += "}"
    +	s := strings.Join([]string{`&ImageReviewStatus{`,
    +		`Allowed:` + fmt.Sprintf("%v", this.Allowed) + `,`,
    +		`Reason:` + fmt.Sprintf("%v", this.Reason) + `,`,
    +		`AuditAnnotations:` + mapStringForAuditAnnotations + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *ImageReview) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ImageReview: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ImageReview: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ImageReviewContainerSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ImageReviewContainerSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ImageReviewContainerSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Image = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ImageReviewSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ImageReviewSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ImageReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Containers", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Containers = append(m.Containers, ImageReviewContainerSpec{})
    +			if err := m.Containers[len(m.Containers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Annotations == nil {
    +				m.Annotations = make(map[string]string)
    +			}
    +			var mapkey string
    +			var mapvalue string
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var stringLenmapvalue uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapvalue |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapvalue := int(stringLenmapvalue)
    +					if intStringLenmapvalue < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
    +					if postStringIndexmapvalue < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapvalue > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
    +					iNdEx = postStringIndexmapvalue
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Annotations[mapkey] = mapvalue
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Namespace = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ImageReviewStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ImageReviewStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ImageReviewStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Allowed", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.Allowed = bool(v != 0)
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Reason = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AuditAnnotations", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.AuditAnnotations == nil {
    +				m.AuditAnnotations = make(map[string]string)
    +			}
    +			var mapkey string
    +			var mapvalue string
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var stringLenmapvalue uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapvalue |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapvalue := int(stringLenmapvalue)
    +					if intStringLenmapvalue < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
    +					if postStringIndexmapvalue < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapvalue > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
    +					iNdEx = postStringIndexmapvalue
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.AuditAnnotations[mapkey] = mapvalue
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func skipGenerated(dAtA []byte) (n int, err error) {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	depth := 0
    +	for iNdEx < l {
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return 0, ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return 0, io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= (uint64(b) & 0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		wireType := int(wire & 0x7)
    +		switch wireType {
    +		case 0:
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				iNdEx++
    +				if dAtA[iNdEx-1] < 0x80 {
    +					break
    +				}
    +			}
    +		case 1:
    +			iNdEx += 8
    +		case 2:
    +			var length int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				length |= (int(b) & 0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if length < 0 {
    +				return 0, ErrInvalidLengthGenerated
    +			}
    +			iNdEx += length
    +		case 3:
    +			depth++
    +		case 4:
    +			if depth == 0 {
    +				return 0, ErrUnexpectedEndOfGroupGenerated
    +			}
    +			depth--
    +		case 5:
    +			iNdEx += 4
    +		default:
    +			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
    +		}
    +		if iNdEx < 0 {
    +			return 0, ErrInvalidLengthGenerated
    +		}
    +		if depth == 0 {
    +			return iNdEx, nil
    +		}
    +	}
    +	return 0, io.ErrUnexpectedEOF
    +}
    +
    +var (
    +	ErrInvalidLengthGenerated        = fmt.Errorf("proto: negative length found during unmarshaling")
    +	ErrIntOverflowGenerated          = fmt.Errorf("proto: integer overflow")
    +	ErrUnexpectedEndOfGroupGenerated = fmt.Errorf("proto: unexpected end of group")
    +)
    diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.proto b/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.proto
    new file mode 100644
    index 000000000000..5ea5c0ec8e8a
    --- /dev/null
    +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.proto
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +
    +// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    +
    +syntax = "proto2";
    +
    +package k8s.io.api.imagepolicy.v1alpha1;
    +
    +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    +
    +// Package-wide variables from generator "generated".
    +option go_package = "k8s.io/api/imagepolicy/v1alpha1";
    +
    +// ImageReview checks if the set of images in a pod are allowed.
    +message ImageReview {
    +  // Standard object's metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Spec holds information about the pod being evaluated
    +  optional ImageReviewSpec spec = 2;
    +
    +  // Status is filled in by the backend and indicates whether the pod should be allowed.
    +  // +optional
    +  optional ImageReviewStatus status = 3;
    +}
    +
    +// ImageReviewContainerSpec is a description of a container within the pod creation request.
    +message ImageReviewContainerSpec {
    +  // This can be in the form image:tag or image@SHA:012345679abcdef.
    +  // +optional
    +  optional string image = 1;
    +}
    +
    +// ImageReviewSpec is a description of the pod creation request.
    +message ImageReviewSpec {
    +  // Containers is a list of a subset of the information in each container of the Pod being created.
    +  // +optional
    +  // +listType=atomic
    +  repeated ImageReviewContainerSpec containers = 1;
    +
    +  // Annotations is a list of key-value pairs extracted from the Pod's annotations.
    +  // It only includes keys which match the pattern `*.image-policy.k8s.io/*`.
    +  // It is up to each webhook backend to determine how to interpret these annotations, if at all.
    +  // +optional
    +  map annotations = 2;
    +
    +  // Namespace is the namespace the pod is being created in.
    +  // +optional
    +  optional string namespace = 3;
    +}
    +
    +// ImageReviewStatus is the result of the review for the pod creation request.
    +message ImageReviewStatus {
    +  // Allowed indicates that all images were allowed to be run.
    +  optional bool allowed = 1;
    +
    +  // Reason should be empty unless Allowed is false in which case it
    +  // may contain a short description of what is wrong.  Kubernetes
    +  // may truncate excessively long errors when displaying to the user.
    +  // +optional
    +  optional string reason = 2;
    +
    +  // AuditAnnotations will be added to the attributes object of the
    +  // admission controller request using 'AddAnnotation'.  The keys should
    +  // be prefix-less (i.e., the admission controller will add an
    +  // appropriate prefix).
    +  // +optional
    +  map auditAnnotations = 3;
    +}
    +
    diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/register.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/register.go
    new file mode 100644
    index 000000000000..477571bbb270
    --- /dev/null
    +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/register.go
    @@ -0,0 +1,51 @@
    +/*
    +Copyright 2016 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha1
    +
    +import (
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/runtime/schema"
    +)
    +
    +// GroupName is the group name for this API.
    +const GroupName = "imagepolicy.k8s.io"
    +
    +// SchemeGroupVersion is group version used to register these objects
    +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
    +
    +// Resource takes an unqualified resource and returns a Group qualified GroupResource
    +func Resource(resource string) schema.GroupResource {
    +	return SchemeGroupVersion.WithResource(resource).GroupResource()
    +}
    +
    +var (
    +	// TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api.
    +	// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
    +	SchemeBuilder      = runtime.NewSchemeBuilder(addKnownTypes)
    +	localSchemeBuilder = &SchemeBuilder
    +	AddToScheme        = localSchemeBuilder.AddToScheme
    +)
    +
    +// Adds the list of known types to the given scheme.
    +func addKnownTypes(scheme *runtime.Scheme) error {
    +	scheme.AddKnownTypes(SchemeGroupVersion,
    +		&ImageReview{},
    +	)
    +	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
    +	return nil
    +}
    diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/types.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/types.go
    new file mode 100644
    index 000000000000..19ac2b536f94
    --- /dev/null
    +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/types.go
    @@ -0,0 +1,83 @@
    +/*
    +Copyright 2016 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha1
    +
    +import (
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +)
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +genclient:noVerbs
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +
    +// ImageReview checks if the set of images in a pod are allowed.
    +type ImageReview struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object's metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Spec holds information about the pod being evaluated
    +	Spec ImageReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"`
    +
    +	// Status is filled in by the backend and indicates whether the pod should be allowed.
    +	// +optional
    +	Status ImageReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
    +}
    +
    +// ImageReviewSpec is a description of the pod creation request.
    +type ImageReviewSpec struct {
    +	// Containers is a list of a subset of the information in each container of the Pod being created.
    +	// +optional
    +	// +listType=atomic
    +	Containers []ImageReviewContainerSpec `json:"containers,omitempty" protobuf:"bytes,1,rep,name=containers"`
    +	// Annotations is a list of key-value pairs extracted from the Pod's annotations.
    +	// It only includes keys which match the pattern `*.image-policy.k8s.io/*`.
    +	// It is up to each webhook backend to determine how to interpret these annotations, if at all.
    +	// +optional
    +	Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,2,rep,name=annotations"`
    +	// Namespace is the namespace the pod is being created in.
    +	// +optional
    +	Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"`
    +}
    +
    +// ImageReviewContainerSpec is a description of a container within the pod creation request.
    +type ImageReviewContainerSpec struct {
    +	// This can be in the form image:tag or image@SHA:012345679abcdef.
    +	// +optional
    +	Image string `json:"image,omitempty" protobuf:"bytes,1,opt,name=image"`
    +	// In future, we may add command line overrides, exec health check command lines, and so on.
    +}
    +
    +// ImageReviewStatus is the result of the review for the pod creation request.
    +type ImageReviewStatus struct {
    +	// Allowed indicates that all images were allowed to be run.
    +	Allowed bool `json:"allowed" protobuf:"varint,1,opt,name=allowed"`
    +	// Reason should be empty unless Allowed is false in which case it
    +	// may contain a short description of what is wrong.  Kubernetes
    +	// may truncate excessively long errors when displaying to the user.
    +	// +optional
    +	Reason string `json:"reason,omitempty" protobuf:"bytes,2,opt,name=reason"`
    +	// AuditAnnotations will be added to the attributes object of the
    +	// admission controller request using 'AddAnnotation'.  The keys should
    +	// be prefix-less (i.e., the admission controller will add an
    +	// appropriate prefix).
    +	// +optional
    +	AuditAnnotations map[string]string `json:"auditAnnotations,omitempty" protobuf:"bytes,3,rep,name=auditAnnotations"`
    +}
    diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/types_swagger_doc_generated.go
    new file mode 100644
    index 000000000000..dadf95e1d574
    --- /dev/null
    +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/types_swagger_doc_generated.go
    @@ -0,0 +1,72 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha1
    +
    +// This file contains a collection of methods that can be used from go-restful to
    +// generate Swagger API documentation for its models. Please read this PR for more
    +// information on the implementation: https://github.com/emicklei/go-restful/pull/215
    +//
    +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if
    +// they are on one line! For multiple line or blocks that you want to ignore use ---.
    +// Any context after a --- is ignored.
    +//
    +// Those methods can be generated by using hack/update-codegen.sh
    +
    +// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    +var map_ImageReview = map[string]string{
    +	"":         "ImageReview checks if the set of images in a pod are allowed.",
    +	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"spec":     "Spec holds information about the pod being evaluated",
    +	"status":   "Status is filled in by the backend and indicates whether the pod should be allowed.",
    +}
    +
    +func (ImageReview) SwaggerDoc() map[string]string {
    +	return map_ImageReview
    +}
    +
    +var map_ImageReviewContainerSpec = map[string]string{
    +	"":      "ImageReviewContainerSpec is a description of a container within the pod creation request.",
    +	"image": "This can be in the form image:tag or image@SHA:012345679abcdef.",
    +}
    +
    +func (ImageReviewContainerSpec) SwaggerDoc() map[string]string {
    +	return map_ImageReviewContainerSpec
    +}
    +
    +var map_ImageReviewSpec = map[string]string{
    +	"":            "ImageReviewSpec is a description of the pod creation request.",
    +	"containers":  "Containers is a list of a subset of the information in each container of the Pod being created.",
    +	"annotations": "Annotations is a list of key-value pairs extracted from the Pod's annotations. It only includes keys which match the pattern `*.image-policy.k8s.io/*`. It is up to each webhook backend to determine how to interpret these annotations, if at all.",
    +	"namespace":   "Namespace is the namespace the pod is being created in.",
    +}
    +
    +func (ImageReviewSpec) SwaggerDoc() map[string]string {
    +	return map_ImageReviewSpec
    +}
    +
    +var map_ImageReviewStatus = map[string]string{
    +	"":                 "ImageReviewStatus is the result of the review for the pod creation request.",
    +	"allowed":          "Allowed indicates that all images were allowed to be run.",
    +	"reason":           "Reason should be empty unless Allowed is false in which case it may contain a short description of what is wrong.  Kubernetes may truncate excessively long errors when displaying to the user.",
    +	"auditAnnotations": "AuditAnnotations will be added to the attributes object of the admission controller request using 'AddAnnotation'.  The keys should be prefix-less (i.e., the admission controller will add an appropriate prefix).",
    +}
    +
    +func (ImageReviewStatus) SwaggerDoc() map[string]string {
    +	return map_ImageReviewStatus
    +}
    +
    +// AUTO-GENERATED FUNCTIONS END HERE
    diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/zz_generated.deepcopy.go
    new file mode 100644
    index 000000000000..f230656f3fe1
    --- /dev/null
    +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/zz_generated.deepcopy.go
    @@ -0,0 +1,121 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by deepcopy-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	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 *ImageReview) DeepCopyInto(out *ImageReview) {
    +	*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 ImageReview.
    +func (in *ImageReview) DeepCopy() *ImageReview {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ImageReview)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ImageReview) 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 *ImageReviewContainerSpec) DeepCopyInto(out *ImageReviewContainerSpec) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageReviewContainerSpec.
    +func (in *ImageReviewContainerSpec) DeepCopy() *ImageReviewContainerSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ImageReviewContainerSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ImageReviewSpec) DeepCopyInto(out *ImageReviewSpec) {
    +	*out = *in
    +	if in.Containers != nil {
    +		in, out := &in.Containers, &out.Containers
    +		*out = make([]ImageReviewContainerSpec, len(*in))
    +		copy(*out, *in)
    +	}
    +	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 ImageReviewSpec.
    +func (in *ImageReviewSpec) DeepCopy() *ImageReviewSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ImageReviewSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ImageReviewStatus) DeepCopyInto(out *ImageReviewStatus) {
    +	*out = *in
    +	if in.AuditAnnotations != nil {
    +		in, out := &in.AuditAnnotations, &out.AuditAnnotations
    +		*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 ImageReviewStatus.
    +func (in *ImageReviewStatus) DeepCopy() *ImageReviewStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ImageReviewStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    diff --git a/vendor/k8s.io/api/networking/v1/doc.go b/vendor/k8s.io/api/networking/v1/doc.go
    index d3ffd5ed1783..1d13e7bab316 100644
    --- a/vendor/k8s.io/api/networking/v1/doc.go
    +++ b/vendor/k8s.io/api/networking/v1/doc.go
    @@ -17,6 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=networking.k8s.io
     
     package v1 // import "k8s.io/api/networking/v1"
    diff --git a/vendor/k8s.io/api/networking/v1/generated.pb.go b/vendor/k8s.io/api/networking/v1/generated.pb.go
    index daeaea5dce7c..7c023e6903f9 100644
    --- a/vendor/k8s.io/api/networking/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/networking/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/networking/v1/generated.proto
    +// source: k8s.io/api/networking/v1/generated.proto
     
     package v1
     
    @@ -51,7 +51,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *HTTPIngressPath) Reset()      { *m = HTTPIngressPath{} }
     func (*HTTPIngressPath) ProtoMessage() {}
     func (*HTTPIngressPath) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{0}
    +	return fileDescriptor_2c41434372fec1d7, []int{0}
     }
     func (m *HTTPIngressPath) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -79,7 +79,7 @@ var xxx_messageInfo_HTTPIngressPath proto.InternalMessageInfo
     func (m *HTTPIngressRuleValue) Reset()      { *m = HTTPIngressRuleValue{} }
     func (*HTTPIngressRuleValue) ProtoMessage() {}
     func (*HTTPIngressRuleValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{1}
    +	return fileDescriptor_2c41434372fec1d7, []int{1}
     }
     func (m *HTTPIngressRuleValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,7 +107,7 @@ var xxx_messageInfo_HTTPIngressRuleValue proto.InternalMessageInfo
     func (m *IPBlock) Reset()      { *m = IPBlock{} }
     func (*IPBlock) ProtoMessage() {}
     func (*IPBlock) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{2}
    +	return fileDescriptor_2c41434372fec1d7, []int{2}
     }
     func (m *IPBlock) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,7 +135,7 @@ var xxx_messageInfo_IPBlock proto.InternalMessageInfo
     func (m *Ingress) Reset()      { *m = Ingress{} }
     func (*Ingress) ProtoMessage() {}
     func (*Ingress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{3}
    +	return fileDescriptor_2c41434372fec1d7, []int{3}
     }
     func (m *Ingress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -163,7 +163,7 @@ var xxx_messageInfo_Ingress proto.InternalMessageInfo
     func (m *IngressBackend) Reset()      { *m = IngressBackend{} }
     func (*IngressBackend) ProtoMessage() {}
     func (*IngressBackend) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{4}
    +	return fileDescriptor_2c41434372fec1d7, []int{4}
     }
     func (m *IngressBackend) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -191,7 +191,7 @@ var xxx_messageInfo_IngressBackend proto.InternalMessageInfo
     func (m *IngressClass) Reset()      { *m = IngressClass{} }
     func (*IngressClass) ProtoMessage() {}
     func (*IngressClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{5}
    +	return fileDescriptor_2c41434372fec1d7, []int{5}
     }
     func (m *IngressClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -219,7 +219,7 @@ var xxx_messageInfo_IngressClass proto.InternalMessageInfo
     func (m *IngressClassList) Reset()      { *m = IngressClassList{} }
     func (*IngressClassList) ProtoMessage() {}
     func (*IngressClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{6}
    +	return fileDescriptor_2c41434372fec1d7, []int{6}
     }
     func (m *IngressClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -247,7 +247,7 @@ var xxx_messageInfo_IngressClassList proto.InternalMessageInfo
     func (m *IngressClassParametersReference) Reset()      { *m = IngressClassParametersReference{} }
     func (*IngressClassParametersReference) ProtoMessage() {}
     func (*IngressClassParametersReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{7}
    +	return fileDescriptor_2c41434372fec1d7, []int{7}
     }
     func (m *IngressClassParametersReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -275,7 +275,7 @@ var xxx_messageInfo_IngressClassParametersReference proto.InternalMessageInfo
     func (m *IngressClassSpec) Reset()      { *m = IngressClassSpec{} }
     func (*IngressClassSpec) ProtoMessage() {}
     func (*IngressClassSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{8}
    +	return fileDescriptor_2c41434372fec1d7, []int{8}
     }
     func (m *IngressClassSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -303,7 +303,7 @@ var xxx_messageInfo_IngressClassSpec proto.InternalMessageInfo
     func (m *IngressList) Reset()      { *m = IngressList{} }
     func (*IngressList) ProtoMessage() {}
     func (*IngressList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{9}
    +	return fileDescriptor_2c41434372fec1d7, []int{9}
     }
     func (m *IngressList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -331,7 +331,7 @@ var xxx_messageInfo_IngressList proto.InternalMessageInfo
     func (m *IngressLoadBalancerIngress) Reset()      { *m = IngressLoadBalancerIngress{} }
     func (*IngressLoadBalancerIngress) ProtoMessage() {}
     func (*IngressLoadBalancerIngress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{10}
    +	return fileDescriptor_2c41434372fec1d7, []int{10}
     }
     func (m *IngressLoadBalancerIngress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -359,7 +359,7 @@ var xxx_messageInfo_IngressLoadBalancerIngress proto.InternalMessageInfo
     func (m *IngressLoadBalancerStatus) Reset()      { *m = IngressLoadBalancerStatus{} }
     func (*IngressLoadBalancerStatus) ProtoMessage() {}
     func (*IngressLoadBalancerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{11}
    +	return fileDescriptor_2c41434372fec1d7, []int{11}
     }
     func (m *IngressLoadBalancerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -387,7 +387,7 @@ var xxx_messageInfo_IngressLoadBalancerStatus proto.InternalMessageInfo
     func (m *IngressPortStatus) Reset()      { *m = IngressPortStatus{} }
     func (*IngressPortStatus) ProtoMessage() {}
     func (*IngressPortStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{12}
    +	return fileDescriptor_2c41434372fec1d7, []int{12}
     }
     func (m *IngressPortStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -415,7 +415,7 @@ var xxx_messageInfo_IngressPortStatus proto.InternalMessageInfo
     func (m *IngressRule) Reset()      { *m = IngressRule{} }
     func (*IngressRule) ProtoMessage() {}
     func (*IngressRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{13}
    +	return fileDescriptor_2c41434372fec1d7, []int{13}
     }
     func (m *IngressRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -443,7 +443,7 @@ var xxx_messageInfo_IngressRule proto.InternalMessageInfo
     func (m *IngressRuleValue) Reset()      { *m = IngressRuleValue{} }
     func (*IngressRuleValue) ProtoMessage() {}
     func (*IngressRuleValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{14}
    +	return fileDescriptor_2c41434372fec1d7, []int{14}
     }
     func (m *IngressRuleValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -471,7 +471,7 @@ var xxx_messageInfo_IngressRuleValue proto.InternalMessageInfo
     func (m *IngressServiceBackend) Reset()      { *m = IngressServiceBackend{} }
     func (*IngressServiceBackend) ProtoMessage() {}
     func (*IngressServiceBackend) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{15}
    +	return fileDescriptor_2c41434372fec1d7, []int{15}
     }
     func (m *IngressServiceBackend) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -499,7 +499,7 @@ var xxx_messageInfo_IngressServiceBackend proto.InternalMessageInfo
     func (m *IngressSpec) Reset()      { *m = IngressSpec{} }
     func (*IngressSpec) ProtoMessage() {}
     func (*IngressSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{16}
    +	return fileDescriptor_2c41434372fec1d7, []int{16}
     }
     func (m *IngressSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -527,7 +527,7 @@ var xxx_messageInfo_IngressSpec proto.InternalMessageInfo
     func (m *IngressStatus) Reset()      { *m = IngressStatus{} }
     func (*IngressStatus) ProtoMessage() {}
     func (*IngressStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{17}
    +	return fileDescriptor_2c41434372fec1d7, []int{17}
     }
     func (m *IngressStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -555,7 +555,7 @@ var xxx_messageInfo_IngressStatus proto.InternalMessageInfo
     func (m *IngressTLS) Reset()      { *m = IngressTLS{} }
     func (*IngressTLS) ProtoMessage() {}
     func (*IngressTLS) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{18}
    +	return fileDescriptor_2c41434372fec1d7, []int{18}
     }
     func (m *IngressTLS) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -583,7 +583,7 @@ var xxx_messageInfo_IngressTLS proto.InternalMessageInfo
     func (m *NetworkPolicy) Reset()      { *m = NetworkPolicy{} }
     func (*NetworkPolicy) ProtoMessage() {}
     func (*NetworkPolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{19}
    +	return fileDescriptor_2c41434372fec1d7, []int{19}
     }
     func (m *NetworkPolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -611,7 +611,7 @@ var xxx_messageInfo_NetworkPolicy proto.InternalMessageInfo
     func (m *NetworkPolicyEgressRule) Reset()      { *m = NetworkPolicyEgressRule{} }
     func (*NetworkPolicyEgressRule) ProtoMessage() {}
     func (*NetworkPolicyEgressRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{20}
    +	return fileDescriptor_2c41434372fec1d7, []int{20}
     }
     func (m *NetworkPolicyEgressRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -639,7 +639,7 @@ var xxx_messageInfo_NetworkPolicyEgressRule proto.InternalMessageInfo
     func (m *NetworkPolicyIngressRule) Reset()      { *m = NetworkPolicyIngressRule{} }
     func (*NetworkPolicyIngressRule) ProtoMessage() {}
     func (*NetworkPolicyIngressRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{21}
    +	return fileDescriptor_2c41434372fec1d7, []int{21}
     }
     func (m *NetworkPolicyIngressRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -667,7 +667,7 @@ var xxx_messageInfo_NetworkPolicyIngressRule proto.InternalMessageInfo
     func (m *NetworkPolicyList) Reset()      { *m = NetworkPolicyList{} }
     func (*NetworkPolicyList) ProtoMessage() {}
     func (*NetworkPolicyList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{22}
    +	return fileDescriptor_2c41434372fec1d7, []int{22}
     }
     func (m *NetworkPolicyList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -695,7 +695,7 @@ var xxx_messageInfo_NetworkPolicyList proto.InternalMessageInfo
     func (m *NetworkPolicyPeer) Reset()      { *m = NetworkPolicyPeer{} }
     func (*NetworkPolicyPeer) ProtoMessage() {}
     func (*NetworkPolicyPeer) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{23}
    +	return fileDescriptor_2c41434372fec1d7, []int{23}
     }
     func (m *NetworkPolicyPeer) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -723,7 +723,7 @@ var xxx_messageInfo_NetworkPolicyPeer proto.InternalMessageInfo
     func (m *NetworkPolicyPort) Reset()      { *m = NetworkPolicyPort{} }
     func (*NetworkPolicyPort) ProtoMessage() {}
     func (*NetworkPolicyPort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{24}
    +	return fileDescriptor_2c41434372fec1d7, []int{24}
     }
     func (m *NetworkPolicyPort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -751,7 +751,7 @@ var xxx_messageInfo_NetworkPolicyPort proto.InternalMessageInfo
     func (m *NetworkPolicySpec) Reset()      { *m = NetworkPolicySpec{} }
     func (*NetworkPolicySpec) ProtoMessage() {}
     func (*NetworkPolicySpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{25}
    +	return fileDescriptor_2c41434372fec1d7, []int{25}
     }
     func (m *NetworkPolicySpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -779,7 +779,7 @@ var xxx_messageInfo_NetworkPolicySpec proto.InternalMessageInfo
     func (m *ServiceBackendPort) Reset()      { *m = ServiceBackendPort{} }
     func (*ServiceBackendPort) ProtoMessage() {}
     func (*ServiceBackendPort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_1c72867a70a7cc90, []int{26}
    +	return fileDescriptor_2c41434372fec1d7, []int{26}
     }
     func (m *ServiceBackendPort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -835,116 +835,115 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/networking/v1/generated.proto", fileDescriptor_1c72867a70a7cc90)
    -}
    -
    -var fileDescriptor_1c72867a70a7cc90 = []byte{
    -	// 1671 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcb, 0x6f, 0x1b, 0xd5,
    -	0x1a, 0xcf, 0x38, 0x71, 0xec, 0x1c, 0x27, 0x69, 0x72, 0x6e, 0xab, 0xeb, 0x9b, 0xab, 0x6b, 0xe7,
    -	0x8e, 0x68, 0x1b, 0x68, 0x6b, 0xd3, 0xb4, 0x42, 0xb0, 0x01, 0x3a, 0x69, 0x9a, 0x86, 0xa6, 0x8e,
    -	0x75, 0x6c, 0x15, 0x81, 0x78, 0x74, 0x32, 0x3e, 0xb1, 0xa7, 0x1e, 0xcf, 0x19, 0x9d, 0x39, 0x0e,
    -	0xad, 0x84, 0x10, 0x1b, 0x16, 0xec, 0xf8, 0x17, 0x10, 0x7f, 0x01, 0x82, 0x05, 0x12, 0x82, 0xc2,
    -	0x06, 0x75, 0x59, 0x89, 0x4d, 0x37, 0x58, 0xd4, 0xfc, 0x17, 0x59, 0xa1, 0xf3, 0x98, 0x97, 0x1f,
    -	0xb5, 0xa9, 0xaa, 0xac, 0x92, 0xf3, 0x7d, 0xdf, 0xf9, 0x7d, 0x8f, 0xf3, 0xbd, 0xc6, 0xe0, 0x5a,
    -	0xfb, 0x75, 0xbf, 0x64, 0x93, 0x72, 0xbb, 0x7b, 0x80, 0xa9, 0x8b, 0x19, 0xf6, 0xcb, 0x47, 0xd8,
    -	0x6d, 0x10, 0x5a, 0x56, 0x0c, 0xd3, 0xb3, 0xcb, 0x2e, 0x66, 0x9f, 0x10, 0xda, 0xb6, 0xdd, 0x66,
    -	0xf9, 0xe8, 0x72, 0xb9, 0x89, 0x5d, 0x4c, 0x4d, 0x86, 0x1b, 0x25, 0x8f, 0x12, 0x46, 0x60, 0x5e,
    -	0x4a, 0x96, 0x4c, 0xcf, 0x2e, 0x45, 0x92, 0xa5, 0xa3, 0xcb, 0x6b, 0x97, 0x9a, 0x36, 0x6b, 0x75,
    -	0x0f, 0x4a, 0x16, 0xe9, 0x94, 0x9b, 0xa4, 0x49, 0xca, 0xe2, 0xc2, 0x41, 0xf7, 0x50, 0x9c, 0xc4,
    -	0x41, 0xfc, 0x27, 0x81, 0xd6, 0xf4, 0x98, 0x4a, 0x8b, 0x50, 0x3c, 0x42, 0xd9, 0xda, 0xd5, 0x48,
    -	0xa6, 0x63, 0x5a, 0x2d, 0xdb, 0xc5, 0xf4, 0x41, 0xd9, 0x6b, 0x37, 0x39, 0xc1, 0x2f, 0x77, 0x30,
    -	0x33, 0x47, 0xdd, 0x2a, 0x8f, 0xbb, 0x45, 0xbb, 0x2e, 0xb3, 0x3b, 0x78, 0xe8, 0xc2, 0x6b, 0x93,
    -	0x2e, 0xf8, 0x56, 0x0b, 0x77, 0xcc, 0xa1, 0x7b, 0x57, 0xc6, 0xdd, 0xeb, 0x32, 0xdb, 0x29, 0xdb,
    -	0x2e, 0xf3, 0x19, 0x1d, 0xbc, 0xa4, 0xff, 0xac, 0x81, 0x53, 0x37, 0xeb, 0xf5, 0xea, 0xae, 0xdb,
    -	0xa4, 0xd8, 0xf7, 0xab, 0x26, 0x6b, 0xc1, 0x75, 0x30, 0xe7, 0x99, 0xac, 0x95, 0xd7, 0xd6, 0xb5,
    -	0x8d, 0x05, 0x63, 0xf1, 0x51, 0xaf, 0x38, 0xd3, 0xef, 0x15, 0xe7, 0x38, 0x0f, 0x09, 0x0e, 0xbc,
    -	0x0a, 0xb2, 0xfc, 0x6f, 0xfd, 0x81, 0x87, 0xf3, 0xb3, 0x42, 0x2a, 0xdf, 0xef, 0x15, 0xb3, 0x55,
    -	0x45, 0x3b, 0x8e, 0xfd, 0x8f, 0x42, 0x49, 0x58, 0x03, 0x99, 0x03, 0xd3, 0x6a, 0x63, 0xb7, 0x91,
    -	0x4f, 0xad, 0x6b, 0x1b, 0xb9, 0xcd, 0x8d, 0xd2, 0xb8, 0xe7, 0x2b, 0x29, 0x7b, 0x0c, 0x29, 0x6f,
    -	0x9c, 0x52, 0x46, 0x64, 0x14, 0x01, 0x05, 0x48, 0xfa, 0x21, 0x38, 0x1d, 0xb3, 0x1f, 0x75, 0x1d,
    -	0x7c, 0xc7, 0x74, 0xba, 0x18, 0x56, 0x40, 0x9a, 0x2b, 0xf6, 0xf3, 0xda, 0xfa, 0xec, 0x46, 0x6e,
    -	0xf3, 0xe5, 0xf1, 0xaa, 0x06, 0xdc, 0x37, 0x96, 0x94, 0xae, 0x34, 0x3f, 0xf9, 0x48, 0xc2, 0xe8,
    -	0xfb, 0x20, 0xb3, 0x5b, 0x35, 0x1c, 0x62, 0xb5, 0x79, 0x7c, 0x2c, 0xbb, 0x41, 0x07, 0xe3, 0xb3,
    -	0xb5, 0x7b, 0x1d, 0x21, 0xc1, 0x81, 0x3a, 0x98, 0xc7, 0xf7, 0x2d, 0xec, 0xb1, 0x7c, 0x6a, 0x7d,
    -	0x76, 0x63, 0xc1, 0x00, 0xfd, 0x5e, 0x71, 0x7e, 0x5b, 0x50, 0x90, 0xe2, 0xe8, 0x5f, 0xa4, 0x40,
    -	0x46, 0xa9, 0x85, 0x77, 0x41, 0x96, 0xa7, 0x4f, 0xc3, 0x64, 0xa6, 0x40, 0xcd, 0x6d, 0xbe, 0x1a,
    -	0xb3, 0x37, 0x7c, 0xcd, 0x92, 0xd7, 0x6e, 0x72, 0x82, 0x5f, 0xe2, 0xd2, 0xdc, 0xf6, 0xfd, 0x83,
    -	0x7b, 0xd8, 0x62, 0xb7, 0x31, 0x33, 0x0d, 0xa8, 0xec, 0x00, 0x11, 0x0d, 0x85, 0xa8, 0x70, 0x07,
    -	0xcc, 0xf9, 0x1e, 0xb6, 0x54, 0xe0, 0xcf, 0x4e, 0x0c, 0x7c, 0xcd, 0xc3, 0x56, 0xe4, 0x1a, 0x3f,
    -	0x21, 0x01, 0x00, 0xf7, 0xc1, 0xbc, 0xcf, 0x4c, 0xd6, 0xf5, 0xc5, 0xc3, 0xe7, 0x36, 0xcf, 0x4f,
    -	0x86, 0x12, 0xe2, 0xc6, 0xb2, 0x02, 0x9b, 0x97, 0x67, 0xa4, 0x60, 0xf4, 0x5f, 0x35, 0xb0, 0x9c,
    -	0x7c, 0x6d, 0x78, 0x07, 0x64, 0x7c, 0x4c, 0x8f, 0x6c, 0x0b, 0xe7, 0xe7, 0x84, 0x92, 0xf2, 0x64,
    -	0x25, 0x52, 0x3e, 0xc8, 0x97, 0x1c, 0xcf, 0x15, 0x45, 0x43, 0x01, 0x18, 0x7c, 0x17, 0x64, 0x29,
    -	0xf6, 0x49, 0x97, 0x5a, 0x58, 0x59, 0x7f, 0x29, 0x0e, 0xcc, 0xeb, 0x9e, 0x43, 0xf2, 0x64, 0x6d,
    -	0xec, 0x11, 0xcb, 0x74, 0x64, 0x28, 0x11, 0x3e, 0xc4, 0x14, 0xbb, 0x16, 0x36, 0x16, 0x79, 0x96,
    -	0x23, 0x05, 0x81, 0x42, 0x30, 0x5e, 0x45, 0x8b, 0xca, 0x90, 0x2d, 0xc7, 0x3c, 0x91, 0x07, 0xdd,
    -	0x4b, 0x3c, 0xe8, 0x2b, 0x13, 0x03, 0x24, 0xec, 0x1a, 0xf7, 0xaa, 0xfa, 0x4f, 0x1a, 0x58, 0x89,
    -	0x0b, 0xee, 0xd9, 0x3e, 0x83, 0x1f, 0x0c, 0x39, 0x51, 0x9a, 0xce, 0x09, 0x7e, 0x5b, 0xb8, 0xb0,
    -	0xa2, 0x54, 0x65, 0x03, 0x4a, 0xcc, 0x81, 0x5b, 0x20, 0x6d, 0x33, 0xdc, 0xf1, 0x45, 0x89, 0xe4,
    -	0x36, 0xcf, 0x4d, 0xe7, 0x41, 0x54, 0x9d, 0xbb, 0xfc, 0x32, 0x92, 0x18, 0xfa, 0x1f, 0x1a, 0x28,
    -	0xc6, 0xc5, 0xaa, 0x26, 0x35, 0x3b, 0x98, 0x61, 0xea, 0x87, 0x8f, 0x07, 0x37, 0x40, 0xd6, 0xac,
    -	0xee, 0xee, 0x50, 0xd2, 0xf5, 0x82, 0xd2, 0xe5, 0xa6, 0x5d, 0x53, 0x34, 0x14, 0x72, 0x79, 0x81,
    -	0xb7, 0x6d, 0xd5, 0xa5, 0x62, 0x05, 0x7e, 0xcb, 0x76, 0x1b, 0x48, 0x70, 0xb8, 0x84, 0x6b, 0x76,
    -	0x82, 0xe6, 0x17, 0x4a, 0x54, 0xcc, 0x0e, 0x46, 0x82, 0x03, 0x8b, 0x20, 0xed, 0x5b, 0xc4, 0x93,
    -	0x19, 0xbc, 0x60, 0x2c, 0x70, 0x93, 0x6b, 0x9c, 0x80, 0x24, 0x1d, 0x5e, 0x00, 0x0b, 0x5c, 0xd0,
    -	0xf7, 0x4c, 0x0b, 0xe7, 0xd3, 0x42, 0x68, 0xa9, 0xdf, 0x2b, 0x2e, 0x54, 0x02, 0x22, 0x8a, 0xf8,
    -	0xfa, 0xb7, 0x03, 0xef, 0xc3, 0x9f, 0x0e, 0x6e, 0x02, 0x60, 0x11, 0x97, 0x51, 0xe2, 0x38, 0x38,
    -	0xe8, 0x46, 0x61, 0xd2, 0x6c, 0x85, 0x1c, 0x14, 0x93, 0x82, 0x36, 0x00, 0x5e, 0x18, 0x1b, 0x95,
    -	0x3c, 0x6f, 0x4c, 0x17, 0xfa, 0x11, 0x31, 0x35, 0x96, 0xb9, 0xaa, 0x18, 0x23, 0x06, 0xae, 0x7f,
    -	0xa7, 0x81, 0x9c, 0xba, 0x7f, 0x02, 0xe9, 0x74, 0x23, 0x99, 0x4e, 0xff, 0x9f, 0x3c, 0x5a, 0x46,
    -	0x67, 0xd2, 0x0f, 0x1a, 0x58, 0x0b, 0xac, 0x26, 0x66, 0xc3, 0x30, 0x1d, 0xd3, 0xb5, 0x30, 0x0d,
    -	0x3a, 0xf5, 0x1a, 0x48, 0xd9, 0x41, 0xfa, 0x00, 0x05, 0x90, 0xda, 0xad, 0xa2, 0x94, 0xed, 0xc1,
    -	0x8b, 0x20, 0xdb, 0x22, 0x3e, 0x13, 0x89, 0x21, 0x53, 0x27, 0x34, 0xf8, 0xa6, 0xa2, 0xa3, 0x50,
    -	0x02, 0x56, 0x41, 0xda, 0x23, 0x94, 0xf9, 0xf9, 0x39, 0x61, 0xf0, 0x85, 0x89, 0x06, 0x57, 0x09,
    -	0x65, 0xaa, 0x97, 0x46, 0x23, 0x8a, 0x23, 0x20, 0x09, 0xa4, 0x7f, 0x0a, 0xfe, 0x33, 0xc2, 0x72,
    -	0x79, 0x05, 0x7e, 0x0c, 0x32, 0xb6, 0x64, 0xaa, 0x89, 0x78, 0x75, 0xa2, 0xc2, 0x11, 0xfe, 0x47,
    -	0x83, 0x38, 0x18, 0xb8, 0x01, 0xaa, 0xfe, 0x8d, 0x06, 0x56, 0x87, 0x2c, 0x15, 0xbb, 0x04, 0xa1,
    -	0x4c, 0x44, 0x2c, 0x1d, 0xdb, 0x25, 0x08, 0x65, 0x48, 0x70, 0xe0, 0x2d, 0x90, 0x15, 0xab, 0x88,
    -	0x45, 0x1c, 0x15, 0xb5, 0x72, 0x10, 0xb5, 0xaa, 0xa2, 0x1f, 0xf7, 0x8a, 0xff, 0x1d, 0xde, 0xcf,
    -	0x4a, 0x01, 0x1b, 0x85, 0x00, 0xbc, 0xea, 0x30, 0xa5, 0x84, 0xaa, 0xc2, 0x14, 0x55, 0xb7, 0xcd,
    -	0x09, 0x48, 0xd2, 0xf5, 0xaf, 0xa3, 0xa4, 0xe4, 0xbb, 0x02, 0xb7, 0x8f, 0xbf, 0xc8, 0xe0, 0x2c,
    -	0xe7, 0xef, 0x85, 0x04, 0x07, 0x7a, 0x60, 0xc5, 0x1e, 0x58, 0x2e, 0xa6, 0x6e, 0xba, 0xe1, 0x0d,
    -	0x23, 0xaf, 0x90, 0x57, 0x06, 0x39, 0x68, 0x08, 0x5d, 0xbf, 0x0b, 0x86, 0xa4, 0x78, 0xbb, 0x6f,
    -	0x31, 0xe6, 0x8d, 0x28, 0x9c, 0xf1, 0xdb, 0x4c, 0xa4, 0x3d, 0x2b, 0x7c, 0xaa, 0xd7, 0xab, 0x48,
    -	0xa0, 0xe8, 0x5f, 0x6a, 0xe0, 0xcc, 0xc8, 0xc1, 0x19, 0x36, 0x36, 0x6d, 0x6c, 0x63, 0xab, 0xa8,
    -	0x17, 0x95, 0x31, 0xb8, 0x38, 0xde, 0x92, 0x24, 0x32, 0x7f, 0xf1, 0x51, 0xef, 0xaf, 0xff, 0x96,
    -	0x0a, 0x5f, 0x44, 0x74, 0xb5, 0xb7, 0xc3, 0x78, 0x8b, 0xae, 0xc3, 0x35, 0xab, 0x1e, 0x7a, 0x3a,
    -	0x16, 0xbf, 0x90, 0x87, 0x86, 0xa4, 0x61, 0x03, 0x2c, 0x37, 0xf0, 0xa1, 0xd9, 0x75, 0x98, 0xd2,
    -	0xad, 0xa2, 0x36, 0xfd, 0xba, 0x09, 0xfb, 0xbd, 0xe2, 0xf2, 0xf5, 0x04, 0x06, 0x1a, 0xc0, 0x84,
    -	0x5b, 0x60, 0x96, 0x39, 0x41, 0xbb, 0x79, 0x69, 0x22, 0x74, 0x7d, 0xaf, 0x66, 0xe4, 0x94, 0xfb,
    -	0xb3, 0xf5, 0xbd, 0x1a, 0xe2, 0xb7, 0xe1, 0x3b, 0x20, 0x4d, 0xbb, 0x0e, 0xe6, 0xcb, 0xd4, 0xec,
    -	0x54, 0x7b, 0x19, 0x7f, 0xd3, 0xa8, 0xfc, 0xf9, 0xc9, 0x47, 0x12, 0x42, 0xff, 0x0c, 0x2c, 0x25,
    -	0x36, 0x2e, 0xd8, 0x01, 0x8b, 0x4e, 0xac, 0x84, 0x55, 0x14, 0xae, 0xfc, 0xa3, 0xba, 0x57, 0x0d,
    -	0xe7, 0xb4, 0xd2, 0xb8, 0x18, 0xe7, 0xa1, 0x04, 0xbc, 0x6e, 0x02, 0x10, 0xf9, 0xca, 0x2b, 0x91,
    -	0x97, 0x8f, 0xec, 0x36, 0xaa, 0x12, 0x79, 0x55, 0xf9, 0x48, 0xd2, 0xf9, 0xf4, 0xf2, 0xb1, 0x45,
    -	0x31, 0xab, 0x44, 0xfd, 0x32, 0x9c, 0x5e, 0xb5, 0x90, 0x83, 0x62, 0x52, 0xfa, 0x2f, 0x1a, 0x58,
    -	0xaa, 0x48, 0x93, 0xab, 0xc4, 0xb1, 0xad, 0x07, 0x27, 0xb0, 0x68, 0xdd, 0x4e, 0x2c, 0x5a, 0xcf,
    -	0x68, 0xd3, 0x09, 0xc3, 0xc6, 0x6e, 0x5a, 0xdf, 0x6b, 0xe0, 0xdf, 0x09, 0xc9, 0xed, 0xa8, 0x19,
    -	0x85, 0x23, 0x41, 0x9b, 0x34, 0x12, 0x12, 0x08, 0xa2, 0xb4, 0x46, 0x8e, 0x04, 0xb8, 0x03, 0x52,
    -	0x8c, 0xa8, 0x1c, 0x9d, 0x1a, 0x0e, 0x63, 0x1a, 0xcd, 0xb6, 0x3a, 0x41, 0x29, 0x46, 0xf4, 0x1f,
    -	0x35, 0x90, 0x4f, 0x48, 0xc5, 0x9b, 0xe8, 0x8b, 0xb7, 0xfb, 0x36, 0x98, 0x3b, 0xa4, 0xa4, 0xf3,
    -	0x3c, 0x96, 0x87, 0x41, 0xbf, 0x41, 0x49, 0x07, 0x09, 0x18, 0xfd, 0xa1, 0x06, 0x56, 0x13, 0x92,
    -	0x27, 0xb0, 0x90, 0xec, 0x25, 0x17, 0x92, 0xf3, 0x53, 0xfa, 0x30, 0x66, 0x2d, 0x79, 0x98, 0x1a,
    -	0xf0, 0x80, 0xfb, 0x0a, 0x0f, 0x41, 0xce, 0x23, 0x8d, 0x1a, 0x76, 0xb0, 0xc5, 0xc8, 0xa8, 0x02,
    -	0x7f, 0x96, 0x13, 0xe6, 0x01, 0x76, 0x82, 0xab, 0xc6, 0xa9, 0x7e, 0xaf, 0x98, 0xab, 0x46, 0x58,
    -	0x28, 0x0e, 0x0c, 0xef, 0x83, 0xd5, 0x70, 0x17, 0x0d, 0xb5, 0xa5, 0x9e, 0x5f, 0xdb, 0x99, 0x7e,
    -	0xaf, 0xb8, 0x5a, 0x19, 0x44, 0x44, 0xc3, 0x4a, 0xe0, 0x4d, 0x90, 0xb1, 0x3d, 0xf1, 0xd9, 0xad,
    -	0xbe, 0xd8, 0x9e, 0xb5, 0xd8, 0xc9, 0xef, 0x73, 0xf9, 0xf1, 0xa7, 0x0e, 0x28, 0xb8, 0xae, 0xff,
    -	0x3e, 0x98, 0x03, 0x3c, 0xe1, 0xe0, 0x4e, 0x6c, 0xfb, 0x90, 0x33, 0xef, 0xc2, 0xf3, 0x6d, 0x1e,
    -	0xc9, 0xb1, 0x38, 0xbe, 0x09, 0x75, 0x99, 0xed, 0x94, 0xe4, 0x8f, 0x31, 0xa5, 0x5d, 0x97, 0xed,
    -	0xd3, 0x1a, 0xa3, 0xb6, 0xdb, 0x94, 0x23, 0x3a, 0xb6, 0x16, 0x9d, 0x05, 0x19, 0x35, 0x35, 0x85,
    -	0xe3, 0x69, 0xe9, 0xd5, 0xb6, 0x24, 0xa1, 0x80, 0xa7, 0x1f, 0x0f, 0xe6, 0x85, 0x98, 0xa1, 0xf7,
    -	0x5e, 0x58, 0x5e, 0xfc, 0x4b, 0x65, 0xe3, 0xf8, 0xdc, 0xf8, 0x30, 0x5a, 0x2c, 0x65, 0xa6, 0x6f,
    -	0x4e, 0x99, 0xe9, 0xf1, 0x89, 0x36, 0x76, 0xad, 0x84, 0xef, 0x81, 0x79, 0x2c, 0xd1, 0xe5, 0x88,
    -	0xbc, 0x3c, 0x25, 0x7a, 0xd4, 0x56, 0xa3, 0x5f, 0x1e, 0x14, 0x4d, 0x01, 0xc2, 0xb7, 0x78, 0x94,
    -	0xb8, 0x2c, 0xff, 0xe0, 0x97, 0x7b, 0xf8, 0x82, 0xf1, 0x3f, 0xe9, 0x6c, 0x48, 0x3e, 0xe6, 0x1f,
    -	0x38, 0xe1, 0x11, 0xc5, 0x6f, 0xe8, 0x1f, 0x01, 0x38, 0xbc, 0xe4, 0x4c, 0xb1, 0x42, 0x9d, 0x03,
    -	0xf3, 0x6e, 0xb7, 0x73, 0x80, 0x65, 0x0d, 0xa5, 0x23, 0x03, 0x2b, 0x82, 0x8a, 0x14, 0xd7, 0x78,
    -	0xf3, 0xd1, 0xd3, 0xc2, 0xcc, 0xe3, 0xa7, 0x85, 0x99, 0x27, 0x4f, 0x0b, 0x33, 0x9f, 0xf7, 0x0b,
    -	0xda, 0xa3, 0x7e, 0x41, 0x7b, 0xdc, 0x2f, 0x68, 0x4f, 0xfa, 0x05, 0xed, 0xcf, 0x7e, 0x41, 0xfb,
    -	0xea, 0xaf, 0xc2, 0xcc, 0xfb, 0xf9, 0x71, 0xbf, 0x96, 0xfe, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xd4,
    -	0x46, 0x40, 0xf2, 0x61, 0x15, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/networking/v1/generated.proto", fileDescriptor_2c41434372fec1d7)
    +}
    +
    +var fileDescriptor_2c41434372fec1d7 = []byte{
    +	// 1652 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4b, 0x6f, 0x1b, 0x55,
    +	0x14, 0xce, 0x38, 0x71, 0xec, 0x1c, 0x27, 0x69, 0x72, 0x69, 0x85, 0x09, 0xc2, 0x0e, 0x23, 0xda,
    +	0x06, 0xda, 0xda, 0x34, 0xad, 0x10, 0x6c, 0x78, 0x4c, 0x9a, 0xa6, 0xa1, 0xa9, 0x63, 0x5d, 0x5b,
    +	0x45, 0x20, 0x1e, 0x9d, 0x8c, 0x6f, 0x9c, 0x69, 0xc6, 0x33, 0xa3, 0x3b, 0xd7, 0xa5, 0x95, 0x10,
    +	0x62, 0xc3, 0x82, 0x1d, 0x7f, 0x01, 0xf1, 0x0b, 0x10, 0x2c, 0x90, 0x10, 0x14, 0x36, 0xa8, 0xcb,
    +	0x4a, 0x6c, 0xba, 0xc1, 0xa2, 0xe6, 0x5f, 0x64, 0x85, 0xee, 0x63, 0x1e, 0x7e, 0xd5, 0xa6, 0xaa,
    +	0xb2, 0x4a, 0xee, 0x39, 0xe7, 0x7e, 0xe7, 0x71, 0xcf, 0x6b, 0x0c, 0x6b, 0x87, 0x6f, 0x06, 0x25,
    +	0xdb, 0x2b, 0x9b, 0xbe, 0x5d, 0x76, 0x09, 0xfb, 0xdc, 0xa3, 0x87, 0xb6, 0xdb, 0x2c, 0xdf, 0xb9,
    +	0x58, 0x6e, 0x12, 0x97, 0x50, 0x93, 0x91, 0x46, 0xc9, 0xa7, 0x1e, 0xf3, 0x50, 0x5e, 0x4a, 0x96,
    +	0x4c, 0xdf, 0x2e, 0xc5, 0x92, 0xa5, 0x3b, 0x17, 0x57, 0x2e, 0x34, 0x6d, 0x76, 0xd0, 0xde, 0x2b,
    +	0x59, 0x5e, 0xab, 0xdc, 0xf4, 0x9a, 0x5e, 0x59, 0x5c, 0xd8, 0x6b, 0xef, 0x8b, 0x93, 0x38, 0x88,
    +	0xff, 0x24, 0xd0, 0x8a, 0x9e, 0x50, 0x69, 0x79, 0x94, 0x0c, 0x51, 0xb6, 0x72, 0x39, 0x96, 0x69,
    +	0x99, 0xd6, 0x81, 0xed, 0x12, 0x7a, 0xaf, 0xec, 0x1f, 0x36, 0x39, 0x21, 0x28, 0xb7, 0x08, 0x33,
    +	0x87, 0xdd, 0x2a, 0x8f, 0xba, 0x45, 0xdb, 0x2e, 0xb3, 0x5b, 0x64, 0xe0, 0xc2, 0x1b, 0xe3, 0x2e,
    +	0x04, 0xd6, 0x01, 0x69, 0x99, 0x03, 0xf7, 0x2e, 0x8d, 0xba, 0xd7, 0x66, 0xb6, 0x53, 0xb6, 0x5d,
    +	0x16, 0x30, 0xda, 0x7f, 0x49, 0xff, 0x4d, 0x83, 0x13, 0xd7, 0xea, 0xf5, 0xea, 0xb6, 0xdb, 0xa4,
    +	0x24, 0x08, 0xaa, 0x26, 0x3b, 0x40, 0xab, 0x30, 0xe3, 0x9b, 0xec, 0x20, 0xaf, 0xad, 0x6a, 0x6b,
    +	0x73, 0xc6, 0xfc, 0x83, 0x4e, 0x71, 0xaa, 0xdb, 0x29, 0xce, 0x70, 0x1e, 0x16, 0x1c, 0x74, 0x19,
    +	0xb2, 0xfc, 0x6f, 0xfd, 0x9e, 0x4f, 0xf2, 0xd3, 0x42, 0x2a, 0xdf, 0xed, 0x14, 0xb3, 0x55, 0x45,
    +	0x3b, 0x4a, 0xfc, 0x8f, 0x23, 0x49, 0x54, 0x83, 0xcc, 0x9e, 0x69, 0x1d, 0x12, 0xb7, 0x91, 0x4f,
    +	0xad, 0x6a, 0x6b, 0xb9, 0xf5, 0xb5, 0xd2, 0xa8, 0xe7, 0x2b, 0x29, 0x7b, 0x0c, 0x29, 0x6f, 0x9c,
    +	0x50, 0x46, 0x64, 0x14, 0x01, 0x87, 0x48, 0xfa, 0x3e, 0x9c, 0x4c, 0xd8, 0x8f, 0xdb, 0x0e, 0xb9,
    +	0x69, 0x3a, 0x6d, 0x82, 0x2a, 0x90, 0xe6, 0x8a, 0x83, 0xbc, 0xb6, 0x3a, 0xbd, 0x96, 0x5b, 0x7f,
    +	0x75, 0xb4, 0xaa, 0x3e, 0xf7, 0x8d, 0x05, 0xa5, 0x2b, 0xcd, 0x4f, 0x01, 0x96, 0x30, 0xfa, 0x2e,
    +	0x64, 0xb6, 0xab, 0x86, 0xe3, 0x59, 0x87, 0x3c, 0x3e, 0x96, 0xdd, 0xa0, 0xfd, 0xf1, 0xd9, 0xd8,
    +	0xbe, 0x82, 0xb1, 0xe0, 0x20, 0x1d, 0x66, 0xc9, 0x5d, 0x8b, 0xf8, 0x2c, 0x9f, 0x5a, 0x9d, 0x5e,
    +	0x9b, 0x33, 0xa0, 0xdb, 0x29, 0xce, 0x6e, 0x0a, 0x0a, 0x56, 0x1c, 0xfd, 0xeb, 0x14, 0x64, 0x94,
    +	0x5a, 0x74, 0x0b, 0xb2, 0x3c, 0x7d, 0x1a, 0x26, 0x33, 0x05, 0x6a, 0x6e, 0xfd, 0xf5, 0x84, 0xbd,
    +	0xd1, 0x6b, 0x96, 0xfc, 0xc3, 0x26, 0x27, 0x04, 0x25, 0x2e, 0xcd, 0x6d, 0xdf, 0xdd, 0xbb, 0x4d,
    +	0x2c, 0x76, 0x83, 0x30, 0xd3, 0x40, 0xca, 0x0e, 0x88, 0x69, 0x38, 0x42, 0x45, 0x5b, 0x30, 0x13,
    +	0xf8, 0xc4, 0x52, 0x81, 0x3f, 0x3d, 0x36, 0xf0, 0x35, 0x9f, 0x58, 0xb1, 0x6b, 0xfc, 0x84, 0x05,
    +	0x00, 0xda, 0x85, 0xd9, 0x80, 0x99, 0xac, 0x1d, 0x88, 0x87, 0xcf, 0xad, 0x9f, 0x1d, 0x0f, 0x25,
    +	0xc4, 0x8d, 0x45, 0x05, 0x36, 0x2b, 0xcf, 0x58, 0xc1, 0xe8, 0x7f, 0x68, 0xb0, 0xd8, 0xfb, 0xda,
    +	0xe8, 0x26, 0x64, 0x02, 0x42, 0xef, 0xd8, 0x16, 0xc9, 0xcf, 0x08, 0x25, 0xe5, 0xf1, 0x4a, 0xa4,
    +	0x7c, 0x98, 0x2f, 0x39, 0x9e, 0x2b, 0x8a, 0x86, 0x43, 0x30, 0xf4, 0x01, 0x64, 0x29, 0x09, 0xbc,
    +	0x36, 0xb5, 0x88, 0xb2, 0xfe, 0x42, 0x12, 0x98, 0xd7, 0x3d, 0x87, 0xe4, 0xc9, 0xda, 0xd8, 0xf1,
    +	0x2c, 0xd3, 0x91, 0xa1, 0xc4, 0x64, 0x9f, 0x50, 0xe2, 0x5a, 0xc4, 0x98, 0xe7, 0x59, 0x8e, 0x15,
    +	0x04, 0x8e, 0xc0, 0x78, 0x15, 0xcd, 0x2b, 0x43, 0x36, 0x1c, 0xf3, 0x58, 0x1e, 0x74, 0xa7, 0xe7,
    +	0x41, 0x5f, 0x1b, 0x1b, 0x20, 0x61, 0xd7, 0xa8, 0x57, 0xd5, 0x7f, 0xd5, 0x60, 0x29, 0x29, 0xb8,
    +	0x63, 0x07, 0x0c, 0x7d, 0x3c, 0xe0, 0x44, 0x69, 0x32, 0x27, 0xf8, 0x6d, 0xe1, 0xc2, 0x92, 0x52,
    +	0x95, 0x0d, 0x29, 0x09, 0x07, 0xae, 0x43, 0xda, 0x66, 0xa4, 0x15, 0x88, 0x12, 0xc9, 0xad, 0x9f,
    +	0x99, 0xcc, 0x83, 0xb8, 0x3a, 0xb7, 0xf9, 0x65, 0x2c, 0x31, 0xf4, 0xbf, 0x35, 0x28, 0x26, 0xc5,
    +	0xaa, 0x26, 0x35, 0x5b, 0x84, 0x11, 0x1a, 0x44, 0x8f, 0x87, 0xd6, 0x20, 0x6b, 0x56, 0xb7, 0xb7,
    +	0xa8, 0xd7, 0xf6, 0xc3, 0xd2, 0xe5, 0xa6, 0xbd, 0xa7, 0x68, 0x38, 0xe2, 0xf2, 0x02, 0x3f, 0xb4,
    +	0x55, 0x97, 0x4a, 0x14, 0xf8, 0x75, 0xdb, 0x6d, 0x60, 0xc1, 0xe1, 0x12, 0xae, 0xd9, 0x0a, 0x9b,
    +	0x5f, 0x24, 0x51, 0x31, 0x5b, 0x04, 0x0b, 0x0e, 0x2a, 0x42, 0x3a, 0xb0, 0x3c, 0x5f, 0x66, 0xf0,
    +	0x9c, 0x31, 0xc7, 0x4d, 0xae, 0x71, 0x02, 0x96, 0x74, 0x74, 0x0e, 0xe6, 0xb8, 0x60, 0xe0, 0x9b,
    +	0x16, 0xc9, 0xa7, 0x85, 0xd0, 0x42, 0xb7, 0x53, 0x9c, 0xab, 0x84, 0x44, 0x1c, 0xf3, 0xf5, 0x1f,
    +	0xfa, 0xde, 0x87, 0x3f, 0x1d, 0x5a, 0x07, 0xb0, 0x3c, 0x97, 0x51, 0xcf, 0x71, 0x48, 0xd8, 0x8d,
    +	0xa2, 0xa4, 0xd9, 0x88, 0x38, 0x38, 0x21, 0x85, 0x6c, 0x00, 0x3f, 0x8a, 0x8d, 0x4a, 0x9e, 0xb7,
    +	0x26, 0x0b, 0xfd, 0x90, 0x98, 0x1a, 0x8b, 0x5c, 0x55, 0x82, 0x91, 0x00, 0xd7, 0x7f, 0xd4, 0x20,
    +	0xa7, 0xee, 0x1f, 0x43, 0x3a, 0x5d, 0xed, 0x4d, 0xa7, 0x97, 0xc7, 0x8f, 0x96, 0xe1, 0x99, 0xf4,
    +	0xb3, 0x06, 0x2b, 0xa1, 0xd5, 0x9e, 0xd9, 0x30, 0x4c, 0xc7, 0x74, 0x2d, 0x42, 0xc3, 0x4e, 0xbd,
    +	0x02, 0x29, 0x3b, 0x4c, 0x1f, 0x50, 0x00, 0xa9, 0xed, 0x2a, 0x4e, 0xd9, 0x3e, 0x3a, 0x0f, 0xd9,
    +	0x03, 0x2f, 0x60, 0x22, 0x31, 0x64, 0xea, 0x44, 0x06, 0x5f, 0x53, 0x74, 0x1c, 0x49, 0xa0, 0x2a,
    +	0xa4, 0x7d, 0x8f, 0xb2, 0x20, 0x3f, 0x23, 0x0c, 0x3e, 0x37, 0xd6, 0xe0, 0xaa, 0x47, 0x99, 0xea,
    +	0xa5, 0xf1, 0x88, 0xe2, 0x08, 0x58, 0x02, 0xe9, 0x5f, 0xc0, 0x0b, 0x43, 0x2c, 0x97, 0x57, 0xd0,
    +	0x67, 0x90, 0xb1, 0x25, 0x53, 0x4d, 0xc4, 0xcb, 0x63, 0x15, 0x0e, 0xf1, 0x3f, 0x1e, 0xc4, 0xe1,
    +	0xc0, 0x0d, 0x51, 0xf5, 0xef, 0x35, 0x58, 0x1e, 0xb0, 0x54, 0xec, 0x12, 0x1e, 0x65, 0x22, 0x62,
    +	0xe9, 0xc4, 0x2e, 0xe1, 0x51, 0x86, 0x05, 0x07, 0x5d, 0x87, 0xac, 0x58, 0x45, 0x2c, 0xcf, 0x51,
    +	0x51, 0x2b, 0x87, 0x51, 0xab, 0x2a, 0xfa, 0x51, 0xa7, 0xf8, 0xe2, 0xe0, 0x7e, 0x56, 0x0a, 0xd9,
    +	0x38, 0x02, 0xe0, 0x55, 0x47, 0x28, 0xf5, 0xa8, 0x2a, 0x4c, 0x51, 0x75, 0x9b, 0x9c, 0x80, 0x25,
    +	0x5d, 0xff, 0x2e, 0x4e, 0x4a, 0xbe, 0x2b, 0x70, 0xfb, 0xf8, 0x8b, 0xf4, 0xcf, 0x72, 0xfe, 0x5e,
    +	0x58, 0x70, 0x90, 0x0f, 0x4b, 0x76, 0xdf, 0x72, 0x31, 0x71, 0xd3, 0x8d, 0x6e, 0x18, 0x79, 0x85,
    +	0xbc, 0xd4, 0xcf, 0xc1, 0x03, 0xe8, 0xfa, 0x2d, 0x18, 0x90, 0xe2, 0xed, 0xfe, 0x80, 0x31, 0x7f,
    +	0x48, 0xe1, 0x8c, 0xde, 0x66, 0x62, 0xed, 0x59, 0xe1, 0x53, 0xbd, 0x5e, 0xc5, 0x02, 0x45, 0xff,
    +	0x46, 0x83, 0x53, 0x43, 0x07, 0x67, 0xd4, 0xd8, 0xb4, 0x91, 0x8d, 0xad, 0xa2, 0x5e, 0x54, 0xc6,
    +	0xe0, 0xfc, 0x68, 0x4b, 0x7a, 0x91, 0xf9, 0x8b, 0x0f, 0x7b, 0x7f, 0xfd, 0xcf, 0x54, 0xf4, 0x22,
    +	0xa2, 0xab, 0xbd, 0x1b, 0xc5, 0x5b, 0x74, 0x1d, 0xae, 0x59, 0xf5, 0xd0, 0x93, 0x89, 0xf8, 0x45,
    +	0x3c, 0x3c, 0x20, 0x8d, 0x1a, 0xb0, 0xd8, 0x20, 0xfb, 0x66, 0xdb, 0x61, 0x4a, 0xb7, 0x8a, 0xda,
    +	0xe4, 0xeb, 0x26, 0xea, 0x76, 0x8a, 0x8b, 0x57, 0x7a, 0x30, 0x70, 0x1f, 0x26, 0xda, 0x80, 0x69,
    +	0xe6, 0x84, 0xed, 0xe6, 0x95, 0xb1, 0xd0, 0xf5, 0x9d, 0x9a, 0x91, 0x53, 0xee, 0x4f, 0xd7, 0x77,
    +	0x6a, 0x98, 0xdf, 0x46, 0xef, 0x43, 0x9a, 0xb6, 0x1d, 0xc2, 0x97, 0xa9, 0xe9, 0x89, 0xf6, 0x32,
    +	0xfe, 0xa6, 0x71, 0xf9, 0xf3, 0x53, 0x80, 0x25, 0x84, 0xfe, 0x25, 0x2c, 0xf4, 0x6c, 0x5c, 0xa8,
    +	0x05, 0xf3, 0x4e, 0xa2, 0x84, 0x55, 0x14, 0x2e, 0xfd, 0xaf, 0xba, 0x57, 0x0d, 0xe7, 0xa4, 0xd2,
    +	0x38, 0x9f, 0xe4, 0xe1, 0x1e, 0x78, 0xdd, 0x04, 0x88, 0x7d, 0xe5, 0x95, 0xc8, 0xcb, 0x47, 0x76,
    +	0x1b, 0x55, 0x89, 0xbc, 0xaa, 0x02, 0x2c, 0xe9, 0x7c, 0x7a, 0x05, 0xc4, 0xa2, 0x84, 0x55, 0xe2,
    +	0x7e, 0x19, 0x4d, 0xaf, 0x5a, 0xc4, 0xc1, 0x09, 0x29, 0xfd, 0x77, 0x0d, 0x16, 0x2a, 0xd2, 0xe4,
    +	0xaa, 0xe7, 0xd8, 0xd6, 0xbd, 0x63, 0x58, 0xb4, 0x6e, 0xf4, 0x2c, 0x5a, 0x4f, 0x68, 0xd3, 0x3d,
    +	0x86, 0x8d, 0xdc, 0xb4, 0x7e, 0xd2, 0xe0, 0xf9, 0x1e, 0xc9, 0xcd, 0xb8, 0x19, 0x45, 0x23, 0x41,
    +	0x1b, 0x37, 0x12, 0x7a, 0x10, 0x44, 0x69, 0x0d, 0x1d, 0x09, 0x68, 0x0b, 0x52, 0xcc, 0x53, 0x39,
    +	0x3a, 0x31, 0x1c, 0x21, 0x34, 0x9e, 0x6d, 0x75, 0x0f, 0xa7, 0x98, 0xa7, 0xff, 0xa2, 0x41, 0xbe,
    +	0x47, 0x2a, 0xd9, 0x44, 0x9f, 0xbd, 0xdd, 0x37, 0x60, 0x66, 0x9f, 0x7a, 0xad, 0xa7, 0xb1, 0x3c,
    +	0x0a, 0xfa, 0x55, 0xea, 0xb5, 0xb0, 0x80, 0xd1, 0xef, 0x6b, 0xb0, 0xdc, 0x23, 0x79, 0x0c, 0x0b,
    +	0xc9, 0x4e, 0xef, 0x42, 0x72, 0x76, 0x42, 0x1f, 0x46, 0xac, 0x25, 0xf7, 0x53, 0x7d, 0x1e, 0x70,
    +	0x5f, 0xd1, 0x3e, 0xe4, 0x7c, 0xaf, 0x51, 0x23, 0x0e, 0xb1, 0x98, 0x37, 0xac, 0xc0, 0x9f, 0xe4,
    +	0x84, 0xb9, 0x47, 0x9c, 0xf0, 0xaa, 0x71, 0xa2, 0xdb, 0x29, 0xe6, 0xaa, 0x31, 0x16, 0x4e, 0x02,
    +	0xa3, 0xbb, 0xb0, 0x1c, 0xed, 0xa2, 0x91, 0xb6, 0xd4, 0xd3, 0x6b, 0x3b, 0xd5, 0xed, 0x14, 0x97,
    +	0x2b, 0xfd, 0x88, 0x78, 0x50, 0x09, 0xba, 0x06, 0x19, 0xdb, 0x17, 0x9f, 0xdd, 0xea, 0x8b, 0xed,
    +	0x49, 0x8b, 0x9d, 0xfc, 0x3e, 0x97, 0x1f, 0x7f, 0xea, 0x80, 0xc3, 0xeb, 0xfa, 0x5f, 0xfd, 0x39,
    +	0xc0, 0x13, 0x0e, 0x6d, 0x25, 0xb6, 0x0f, 0x39, 0xf3, 0xce, 0x3d, 0xdd, 0xe6, 0xd1, 0x3b, 0x16,
    +	0x47, 0x37, 0xa1, 0x36, 0xb3, 0x9d, 0x92, 0xfc, 0x31, 0xa6, 0xb4, 0xed, 0xb2, 0x5d, 0x5a, 0x63,
    +	0xd4, 0x76, 0x9b, 0x72, 0x44, 0x27, 0xd6, 0xa2, 0xd3, 0x90, 0x51, 0x53, 0x53, 0x38, 0x9e, 0x96,
    +	0x5e, 0x6d, 0x4a, 0x12, 0x0e, 0x79, 0xfa, 0x51, 0x7f, 0x5e, 0x88, 0x19, 0x7a, 0xfb, 0x99, 0xe5,
    +	0xc5, 0x73, 0x2a, 0x1b, 0x47, 0xe7, 0xc6, 0x27, 0xf1, 0x62, 0x29, 0x33, 0x7d, 0x7d, 0xc2, 0x4c,
    +	0x4f, 0x4e, 0xb4, 0x91, 0x6b, 0x25, 0xfa, 0x10, 0x66, 0x89, 0x44, 0x97, 0x23, 0xf2, 0xe2, 0x84,
    +	0xe8, 0x71, 0x5b, 0x8d, 0x7f, 0x79, 0x50, 0x34, 0x05, 0x88, 0xde, 0xe1, 0x51, 0xe2, 0xb2, 0xfc,
    +	0x83, 0x5f, 0xee, 0xe1, 0x73, 0xc6, 0x4b, 0xd2, 0xd9, 0x88, 0x7c, 0xc4, 0x3f, 0x70, 0xa2, 0x23,
    +	0x4e, 0xde, 0xd0, 0x3f, 0x05, 0x34, 0xb8, 0xe4, 0x4c, 0xb0, 0x42, 0x9d, 0x81, 0x59, 0xb7, 0xdd,
    +	0xda, 0x23, 0xb2, 0x86, 0xd2, 0xb1, 0x81, 0x15, 0x41, 0xc5, 0x8a, 0x6b, 0xbc, 0xfd, 0xe0, 0x71,
    +	0x61, 0xea, 0xe1, 0xe3, 0xc2, 0xd4, 0xa3, 0xc7, 0x85, 0xa9, 0xaf, 0xba, 0x05, 0xed, 0x41, 0xb7,
    +	0xa0, 0x3d, 0xec, 0x16, 0xb4, 0x47, 0xdd, 0x82, 0xf6, 0x4f, 0xb7, 0xa0, 0x7d, 0xfb, 0x6f, 0x61,
    +	0xea, 0xa3, 0xfc, 0xa8, 0x5f, 0x4b, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x24, 0x03, 0xec, 0x04,
    +	0x48, 0x15, 0x00, 0x00,
     }
     
     func (m *HTTPIngressPath) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/networking/v1/generated.proto b/vendor/k8s.io/api/networking/v1/generated.proto
    index b50dd491e0fa..c72fdc8f3795 100644
    --- a/vendor/k8s.io/api/networking/v1/generated.proto
    +++ b/vendor/k8s.io/api/networking/v1/generated.proto
    @@ -84,6 +84,7 @@ message IPBlock {
       // Valid examples are "192.168.1.0/24" or "2001:db8::/64"
       // Except values will be rejected if they are outside the cidr range
       // +optional
    +  // +listType=atomic
       repeated string except = 2;
     }
     
    @@ -95,7 +96,7 @@ message Ingress {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the desired state of the Ingress.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -120,7 +121,7 @@ message IngressBackend {
       // service.Port must not be specified.
       // This is a mutually exclusive setting with "Service".
       // +optional
    -  optional k8s.io.api.core.v1.TypedLocalObjectReference resource = 3;
    +  optional .k8s.io.api.core.v1.TypedLocalObjectReference resource = 3;
     }
     
     // IngressClass represents the class of the Ingress, referenced by the Ingress
    @@ -132,7 +133,7 @@ message IngressClass {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the desired state of the IngressClass.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -144,7 +145,7 @@ message IngressClass {
     message IngressClassList {
       // Standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of IngressClasses.
       repeated IngressClass items = 2;
    @@ -199,7 +200,7 @@ message IngressList {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of Ingress.
       repeated Ingress items = 2;
    @@ -225,6 +226,7 @@ message IngressLoadBalancerIngress {
     message IngressLoadBalancerStatus {
       // ingress is a list containing ingress points for the load-balancer.
       // +optional
    +  // +listType=atomic
       repeated IngressLoadBalancerIngress ingress = 1;
     }
     
    @@ -379,7 +381,7 @@ message NetworkPolicy {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec represents the specification of the desired behavior for this NetworkPolicy.
       // +optional
    @@ -396,6 +398,7 @@ message NetworkPolicyEgressRule {
       // If this field is present and contains at least one item, then this rule allows
       // traffic only if the traffic matches at least one port in the list.
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyPort ports = 1;
     
       // to is a list of destinations for outgoing traffic of pods selected for this rule.
    @@ -404,6 +407,7 @@ message NetworkPolicyEgressRule {
       // destination). If this field is present and contains at least one item, this rule
       // allows traffic only if the traffic matches at least one item in the to list.
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyPeer to = 2;
     }
     
    @@ -416,6 +420,7 @@ message NetworkPolicyIngressRule {
       // If this field is present and contains at least one item, then this rule allows
       // traffic only if the traffic matches at least one port in the list.
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyPort ports = 1;
     
       // from is a list of sources which should be able to access the pods selected for this rule.
    @@ -424,6 +429,7 @@ message NetworkPolicyIngressRule {
       // source). If this field is present and contains at least one item, this rule
       // allows traffic only if the traffic matches at least one item in the from list.
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyPeer from = 2;
     }
     
    @@ -432,7 +438,7 @@ message NetworkPolicyList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a list of schema objects.
       repeated NetworkPolicy items = 2;
    @@ -448,7 +454,7 @@ message NetworkPolicyPeer {
       // the pods matching podSelector in the Namespaces selected by NamespaceSelector.
       // Otherwise it selects the pods matching podSelector in the policy's own namespace.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1;
     
       // namespaceSelector selects namespaces using cluster-scoped labels. This field follows
       // standard label selector semantics; if present but empty, it selects all namespaces.
    @@ -457,7 +463,7 @@ message NetworkPolicyPeer {
       // the pods matching podSelector in the namespaces selected by namespaceSelector.
       // Otherwise it selects all pods in the namespaces selected by namespaceSelector.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 2;
     
       // ipBlock defines policy on a particular IPBlock. If this field is set then
       // neither of the other fields can be.
    @@ -477,7 +483,7 @@ message NetworkPolicyPort {
       // numbers.
       // If present, only traffic on the specified protocol AND port will be matched.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;
     
       // endPort indicates that the range of ports from port to endPort if set, inclusive,
       // should be allowed by the policy. This field cannot be defined if the port field
    @@ -495,7 +501,7 @@ message NetworkPolicySpec {
       // the ingress rules for each are combined additively.
       // This field is NOT optional and follows standard label selector semantics.
       // An empty podSelector matches all pods in this namespace.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1;
     
       // ingress is a list of ingress rules to be applied to the selected pods.
       // Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod
    @@ -505,6 +511,7 @@ message NetworkPolicySpec {
       // this field is empty then this NetworkPolicy does not allow any traffic (and serves
       // solely to ensure that the pods it selects are isolated by default)
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyIngressRule ingress = 2;
     
       // egress is a list of egress rules to be applied to the selected pods. Outgoing traffic
    @@ -515,6 +522,7 @@ message NetworkPolicySpec {
       // solely to ensure that the pods it selects are isolated by default).
       // This field is beta-level in 1.8
       // +optional
    +  // +listType=atomic
       repeated NetworkPolicyEgressRule egress = 3;
     
       // policyTypes is a list of rule types that the NetworkPolicy relates to.
    @@ -528,10 +536,12 @@ message NetworkPolicySpec {
       // an egress section and would otherwise default to just [ "Ingress" ]).
       // This field is beta-level in 1.8
       // +optional
    +  // +listType=atomic
       repeated string policyTypes = 4;
     }
     
     // ServiceBackendPort is the service port being referenced.
    +// +structType=atomic
     message ServiceBackendPort {
       // name is the name of the port on the Service.
       // This is a mutually exclusive setting with "Number".
    diff --git a/vendor/k8s.io/api/networking/v1/types.go b/vendor/k8s.io/api/networking/v1/types.go
    index a17e2cb5b393..d75e27558da7 100644
    --- a/vendor/k8s.io/api/networking/v1/types.go
    +++ b/vendor/k8s.io/api/networking/v1/types.go
    @@ -24,6 +24,7 @@ import (
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.7
     
     // NetworkPolicy describes what network traffic is allowed for a set of Pods
     type NetworkPolicy struct {
    @@ -74,6 +75,7 @@ type NetworkPolicySpec struct {
     	// this field is empty then this NetworkPolicy does not allow any traffic (and serves
     	// solely to ensure that the pods it selects are isolated by default)
     	// +optional
    +	// +listType=atomic
     	Ingress []NetworkPolicyIngressRule `json:"ingress,omitempty" protobuf:"bytes,2,rep,name=ingress"`
     
     	// egress is a list of egress rules to be applied to the selected pods. Outgoing traffic
    @@ -84,6 +86,7 @@ type NetworkPolicySpec struct {
     	// solely to ensure that the pods it selects are isolated by default).
     	// This field is beta-level in 1.8
     	// +optional
    +	// +listType=atomic
     	Egress []NetworkPolicyEgressRule `json:"egress,omitempty" protobuf:"bytes,3,rep,name=egress"`
     
     	// policyTypes is a list of rule types that the NetworkPolicy relates to.
    @@ -97,6 +100,7 @@ type NetworkPolicySpec struct {
     	// an egress section and would otherwise default to just [ "Ingress" ]).
     	// This field is beta-level in 1.8
     	// +optional
    +	// +listType=atomic
     	PolicyTypes []PolicyType `json:"policyTypes,omitempty" protobuf:"bytes,4,rep,name=policyTypes,casttype=PolicyType"`
     }
     
    @@ -109,6 +113,7 @@ type NetworkPolicyIngressRule struct {
     	// If this field is present and contains at least one item, then this rule allows
     	// traffic only if the traffic matches at least one port in the list.
     	// +optional
    +	// +listType=atomic
     	Ports []NetworkPolicyPort `json:"ports,omitempty" protobuf:"bytes,1,rep,name=ports"`
     
     	// from is a list of sources which should be able to access the pods selected for this rule.
    @@ -117,6 +122,7 @@ type NetworkPolicyIngressRule struct {
     	// source). If this field is present and contains at least one item, this rule
     	// allows traffic only if the traffic matches at least one item in the from list.
     	// +optional
    +	// +listType=atomic
     	From []NetworkPolicyPeer `json:"from,omitempty" protobuf:"bytes,2,rep,name=from"`
     }
     
    @@ -130,6 +136,7 @@ type NetworkPolicyEgressRule struct {
     	// If this field is present and contains at least one item, then this rule allows
     	// traffic only if the traffic matches at least one port in the list.
     	// +optional
    +	// +listType=atomic
     	Ports []NetworkPolicyPort `json:"ports,omitempty" protobuf:"bytes,1,rep,name=ports"`
     
     	// to is a list of destinations for outgoing traffic of pods selected for this rule.
    @@ -138,6 +145,7 @@ type NetworkPolicyEgressRule struct {
     	// destination). If this field is present and contains at least one item, this rule
     	// allows traffic only if the traffic matches at least one item in the to list.
     	// +optional
    +	// +listType=atomic
     	To []NetworkPolicyPeer `json:"to,omitempty" protobuf:"bytes,2,rep,name=to"`
     }
     
    @@ -175,6 +183,7 @@ type IPBlock struct {
     	// Valid examples are "192.168.1.0/24" or "2001:db8::/64"
     	// Except values will be rejected if they are outside the cidr range
     	// +optional
    +	// +listType=atomic
     	Except []string `json:"except,omitempty" protobuf:"bytes,2,rep,name=except"`
     }
     
    @@ -206,6 +215,7 @@ type NetworkPolicyPeer struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // NetworkPolicyList is a list of NetworkPolicy objects.
     type NetworkPolicyList struct {
    @@ -222,6 +232,7 @@ type NetworkPolicyList struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // Ingress is a collection of rules that allow inbound connections to reach the
     // endpoints defined by a backend. An Ingress can be configured to give services
    @@ -247,6 +258,7 @@ type Ingress struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // IngressList is a collection of Ingress.
     type IngressList struct {
    @@ -329,6 +341,7 @@ type IngressStatus struct {
     type IngressLoadBalancerStatus struct {
     	// ingress is a list containing ingress points for the load-balancer.
     	// +optional
    +	// +listType=atomic
     	Ingress []IngressLoadBalancerIngress `json:"ingress,omitempty" protobuf:"bytes,1,rep,name=ingress"`
     }
     
    @@ -406,7 +419,7 @@ type IngressRule struct {
     	// default backend, is left to the controller fulfilling the Ingress. Http is
     	// currently the only supported IngressRuleValue.
     	// +optional
    -	IngressRuleValue `json:",inline,omitempty" protobuf:"bytes,2,opt,name=ingressRuleValue"`
    +	IngressRuleValue `json:",inline" protobuf:"bytes,2,opt,name=ingressRuleValue"`
     }
     
     // IngressRuleValue represents a rule to apply against incoming requests. If the
    @@ -518,6 +531,7 @@ type IngressServiceBackend struct {
     }
     
     // ServiceBackendPort is the service port being referenced.
    +// +structType=atomic
     type ServiceBackendPort struct {
     	// name is the name of the port on the Service.
     	// This is a mutually exclusive setting with "Number".
    @@ -533,6 +547,7 @@ type ServiceBackendPort struct {
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // IngressClass represents the class of the Ingress, referenced by the Ingress
     // Spec. The `ingressclass.kubernetes.io/is-default-class` annotation can be
    @@ -607,6 +622,7 @@ type IngressClassParametersReference struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.19
     
     // IngressClassList is a collection of IngressClasses.
     type IngressClassList struct {
    diff --git a/vendor/k8s.io/api/networking/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/networking/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..21e8c671a56f
    --- /dev/null
    +++ b/vendor/k8s.io/api/networking/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,58 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Ingress) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *IngressClass) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *IngressClassList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *IngressList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *NetworkPolicy) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 7
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *NetworkPolicyList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 19
    +}
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/generated.pb.go b/vendor/k8s.io/api/networking/v1alpha1/generated.pb.go
    index 949ea513fe52..0d42034837f4 100644
    --- a/vendor/k8s.io/api/networking/v1alpha1/generated.pb.go
    +++ b/vendor/k8s.io/api/networking/v1alpha1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/networking/v1alpha1/generated.proto
    +// source: k8s.io/api/networking/v1alpha1/generated.proto
     
     package v1alpha1
     
    @@ -47,7 +47,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *IPAddress) Reset()      { *m = IPAddress{} }
     func (*IPAddress) ProtoMessage() {}
     func (*IPAddress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1b7ac8d7d97acec, []int{0}
    +	return fileDescriptor_c1cb39e7b48ce50d, []int{0}
     }
     func (m *IPAddress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +75,7 @@ var xxx_messageInfo_IPAddress proto.InternalMessageInfo
     func (m *IPAddressList) Reset()      { *m = IPAddressList{} }
     func (*IPAddressList) ProtoMessage() {}
     func (*IPAddressList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1b7ac8d7d97acec, []int{1}
    +	return fileDescriptor_c1cb39e7b48ce50d, []int{1}
     }
     func (m *IPAddressList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +103,7 @@ var xxx_messageInfo_IPAddressList proto.InternalMessageInfo
     func (m *IPAddressSpec) Reset()      { *m = IPAddressSpec{} }
     func (*IPAddressSpec) ProtoMessage() {}
     func (*IPAddressSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1b7ac8d7d97acec, []int{2}
    +	return fileDescriptor_c1cb39e7b48ce50d, []int{2}
     }
     func (m *IPAddressSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -131,7 +131,7 @@ var xxx_messageInfo_IPAddressSpec proto.InternalMessageInfo
     func (m *ParentReference) Reset()      { *m = ParentReference{} }
     func (*ParentReference) ProtoMessage() {}
     func (*ParentReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1b7ac8d7d97acec, []int{3}
    +	return fileDescriptor_c1cb39e7b48ce50d, []int{3}
     }
     func (m *ParentReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -159,7 +159,7 @@ var xxx_messageInfo_ParentReference proto.InternalMessageInfo
     func (m *ServiceCIDR) Reset()      { *m = ServiceCIDR{} }
     func (*ServiceCIDR) ProtoMessage() {}
     func (*ServiceCIDR) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1b7ac8d7d97acec, []int{4}
    +	return fileDescriptor_c1cb39e7b48ce50d, []int{4}
     }
     func (m *ServiceCIDR) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -187,7 +187,7 @@ var xxx_messageInfo_ServiceCIDR proto.InternalMessageInfo
     func (m *ServiceCIDRList) Reset()      { *m = ServiceCIDRList{} }
     func (*ServiceCIDRList) ProtoMessage() {}
     func (*ServiceCIDRList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1b7ac8d7d97acec, []int{5}
    +	return fileDescriptor_c1cb39e7b48ce50d, []int{5}
     }
     func (m *ServiceCIDRList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -215,7 +215,7 @@ var xxx_messageInfo_ServiceCIDRList proto.InternalMessageInfo
     func (m *ServiceCIDRSpec) Reset()      { *m = ServiceCIDRSpec{} }
     func (*ServiceCIDRSpec) ProtoMessage() {}
     func (*ServiceCIDRSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1b7ac8d7d97acec, []int{6}
    +	return fileDescriptor_c1cb39e7b48ce50d, []int{6}
     }
     func (m *ServiceCIDRSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -243,7 +243,7 @@ var xxx_messageInfo_ServiceCIDRSpec proto.InternalMessageInfo
     func (m *ServiceCIDRStatus) Reset()      { *m = ServiceCIDRStatus{} }
     func (*ServiceCIDRStatus) ProtoMessage() {}
     func (*ServiceCIDRStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1b7ac8d7d97acec, []int{7}
    +	return fileDescriptor_c1cb39e7b48ce50d, []int{7}
     }
     func (m *ServiceCIDRStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -280,52 +280,51 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/networking/v1alpha1/generated.proto", fileDescriptor_c1b7ac8d7d97acec)
    -}
    -
    -var fileDescriptor_c1b7ac8d7d97acec = []byte{
    -	// 648 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcd, 0x6e, 0xd3, 0x4c,
    -	0x14, 0x8d, 0xdb, 0xa4, 0xaa, 0x27, 0x5f, 0xbf, 0x52, 0xaf, 0xa2, 0x2e, 0x9c, 0x28, 0x6c, 0x8a,
    -	0xa0, 0x33, 0x24, 0x42, 0x88, 0x2d, 0x6e, 0xa5, 0xaa, 0x12, 0xb4, 0x65, 0xba, 0x02, 0x75, 0xc1,
    -	0xc4, 0xbe, 0x75, 0x4c, 0xf0, 0x8f, 0x66, 0xc6, 0x01, 0x76, 0x3c, 0x02, 0x2f, 0xc0, 0x73, 0xb0,
    -	0x02, 0x89, 0x5d, 0x97, 0x5d, 0x76, 0x55, 0x51, 0xf3, 0x22, 0x68, 0xc6, 0x8e, 0x9d, 0x34, 0xea,
    -	0xdf, 0xa6, 0x3b, 0xcf, 0xb9, 0xe7, 0x9c, 0xb9, 0xe7, 0xce, 0x8c, 0x8c, 0x76, 0x46, 0x2f, 0x04,
    -	0x0e, 0x62, 0x32, 0x4a, 0x07, 0xc0, 0x23, 0x90, 0x20, 0xc8, 0x18, 0x22, 0x2f, 0xe6, 0xa4, 0x28,
    -	0xb0, 0x24, 0x20, 0x11, 0xc8, 0x4f, 0x31, 0x1f, 0x05, 0x91, 0x4f, 0xc6, 0x3d, 0xf6, 0x31, 0x19,
    -	0xb2, 0x1e, 0xf1, 0x21, 0x02, 0xce, 0x24, 0x78, 0x38, 0xe1, 0xb1, 0x8c, 0x2d, 0x3b, 0xe7, 0x63,
    -	0x96, 0x04, 0xb8, 0xe2, 0xe3, 0x09, 0x7f, 0x7d, 0xd3, 0x0f, 0xe4, 0x30, 0x1d, 0x60, 0x37, 0x0e,
    -	0x89, 0x1f, 0xfb, 0x31, 0xd1, 0xb2, 0x41, 0x7a, 0xac, 0x57, 0x7a, 0xa1, 0xbf, 0x72, 0xbb, 0xf5,
    -	0x67, 0xd5, 0xf6, 0x21, 0x73, 0x87, 0x41, 0x04, 0xfc, 0x0b, 0x49, 0x46, 0xbe, 0x02, 0x04, 0x09,
    -	0x41, 0x32, 0x32, 0x9e, 0x6b, 0x62, 0x9d, 0x5c, 0xa5, 0xe2, 0x69, 0x24, 0x83, 0x10, 0xe6, 0x04,
    -	0xcf, 0x6f, 0x12, 0x08, 0x77, 0x08, 0x21, 0xbb, 0xac, 0xeb, 0xfe, 0x32, 0x90, 0xb9, 0x7b, 0xf0,
    -	0xd2, 0xf3, 0x38, 0x08, 0x61, 0xbd, 0x47, 0xcb, 0xaa, 0x23, 0x8f, 0x49, 0xd6, 0x32, 0x3a, 0xc6,
    -	0x46, 0xb3, 0xff, 0x14, 0x57, 0xe3, 0x28, 0x8d, 0x71, 0x32, 0xf2, 0x15, 0x20, 0xb0, 0x62, 0xe3,
    -	0x71, 0x0f, 0xef, 0x0f, 0x3e, 0x80, 0x2b, 0x5f, 0x83, 0x64, 0x8e, 0x75, 0x72, 0xde, 0xae, 0x65,
    -	0xe7, 0x6d, 0x54, 0x61, 0xb4, 0x74, 0xb5, 0xf6, 0x51, 0x5d, 0x24, 0xe0, 0xb6, 0x16, 0xb4, 0xfb,
    -	0x26, 0xbe, 0x7e, 0xd8, 0xb8, 0x6c, 0xed, 0x30, 0x01, 0xd7, 0xf9, 0xaf, 0xb0, 0xae, 0xab, 0x15,
    -	0xd5, 0x46, 0xdd, 0x9f, 0x06, 0x5a, 0x29, 0x59, 0xaf, 0x02, 0x21, 0xad, 0xa3, 0xb9, 0x10, 0xf8,
    -	0x76, 0x21, 0x94, 0x5a, 0x47, 0x78, 0x50, 0xec, 0xb3, 0x3c, 0x41, 0xa6, 0x02, 0xec, 0xa1, 0x46,
    -	0x20, 0x21, 0x14, 0xad, 0x85, 0xce, 0xe2, 0x46, 0xb3, 0xff, 0xe8, 0xd6, 0x09, 0x9c, 0x95, 0xc2,
    -	0xb5, 0xb1, 0xab, 0xf4, 0x34, 0xb7, 0xe9, 0x86, 0x53, 0xed, 0xab, 0x58, 0xd6, 0x11, 0x32, 0x13,
    -	0xc6, 0x21, 0x92, 0x14, 0x8e, 0x8b, 0xfe, 0xc9, 0x4d, 0x9b, 0x1c, 0x4c, 0x04, 0xc0, 0x21, 0x72,
    -	0xc1, 0x59, 0xc9, 0xce, 0xdb, 0x66, 0x09, 0xd2, 0xca, 0xb0, 0xfb, 0xc3, 0x40, 0xab, 0x97, 0xd8,
    -	0xd6, 0x43, 0xd4, 0xf0, 0x79, 0x9c, 0x26, 0x7a, 0x37, 0xb3, 0xea, 0x73, 0x47, 0x81, 0x34, 0xaf,
    -	0x59, 0x4f, 0xd0, 0x32, 0x07, 0x11, 0xa7, 0xdc, 0x05, 0x7d, 0x78, 0x66, 0x35, 0x25, 0x5a, 0xe0,
    -	0xb4, 0x64, 0x58, 0x04, 0x99, 0x11, 0x0b, 0x41, 0x24, 0xcc, 0x85, 0xd6, 0xa2, 0xa6, 0xaf, 0x15,
    -	0x74, 0x73, 0x6f, 0x52, 0xa0, 0x15, 0xc7, 0xea, 0xa0, 0xba, 0x5a, 0xb4, 0xea, 0x9a, 0x5b, 0x1e,
    -	0xb4, 0xe2, 0x52, 0x5d, 0xe9, 0x7e, 0x5f, 0x40, 0xcd, 0x43, 0xe0, 0xe3, 0xc0, 0x85, 0xad, 0xdd,
    -	0x6d, 0x7a, 0x0f, 0x77, 0xf5, 0xcd, 0xcc, 0x5d, 0xbd, 0xf1, 0x10, 0xa6, 0x9a, 0xbb, 0xea, 0xb6,
    -	0x5a, 0x6f, 0xd1, 0x92, 0x90, 0x4c, 0xa6, 0x42, 0x0f, 0xa5, 0xd9, 0xef, 0xdd, 0xc5, 0x54, 0x0b,
    -	0x9d, 0xff, 0x0b, 0xdb, 0xa5, 0x7c, 0x4d, 0x0b, 0xc3, 0xee, 0x6f, 0x03, 0xad, 0x4e, 0xb1, 0xef,
    -	0xe1, 0x29, 0x1c, 0xcc, 0x3e, 0x85, 0xc7, 0x77, 0xc8, 0x72, 0xc5, 0x63, 0xe8, 0xcf, 0x44, 0xd0,
    -	0xcf, 0xa1, 0x8d, 0x1a, 0x6e, 0xe0, 0x71, 0xd1, 0x32, 0x3a, 0x8b, 0x1b, 0xa6, 0x63, 0x2a, 0x8d,
    -	0x2a, 0x0a, 0x9a, 0xe3, 0xdd, 0xcf, 0x68, 0x6d, 0x6e, 0x48, 0x96, 0x8b, 0x90, 0x1b, 0x47, 0x5e,
    -	0x20, 0x83, 0x38, 0xca, 0xa5, 0xb3, 0x07, 0x78, 0x4d, 0xf4, 0xad, 0x89, 0xae, 0xba, 0x1d, 0x25,
    -	0x24, 0xe8, 0x94, 0xad, 0xb3, 0x7d, 0x72, 0x61, 0xd7, 0x4e, 0x2f, 0xec, 0xda, 0xd9, 0x85, 0x5d,
    -	0xfb, 0x9a, 0xd9, 0xc6, 0x49, 0x66, 0x1b, 0xa7, 0x99, 0x6d, 0x9c, 0x65, 0xb6, 0xf1, 0x27, 0xb3,
    -	0x8d, 0x6f, 0x7f, 0xed, 0xda, 0x3b, 0xfb, 0xfa, 0xff, 0xcf, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff,
    -	0x29, 0x82, 0x11, 0x57, 0xb9, 0x06, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/networking/v1alpha1/generated.proto", fileDescriptor_c1cb39e7b48ce50d)
    +}
    +
    +var fileDescriptor_c1cb39e7b48ce50d = []byte{
    +	// 634 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcd, 0x6e, 0xd3, 0x4a,
    +	0x18, 0x8d, 0xdb, 0xa4, 0xaa, 0x27, 0xb7, 0xb7, 0xb7, 0x5e, 0x45, 0x5d, 0x38, 0x91, 0xef, 0xa6,
    +	0x08, 0x3a, 0x26, 0x11, 0x42, 0x6c, 0x71, 0x2b, 0xa1, 0x4a, 0xd0, 0x96, 0xe9, 0x0a, 0xd4, 0x05,
    +	0xd3, 0xc9, 0x57, 0x67, 0x08, 0xfe, 0xd1, 0xcc, 0x24, 0xc0, 0x8e, 0x47, 0xe0, 0x05, 0x78, 0x0e,
    +	0x56, 0x20, 0xb1, 0xeb, 0xb2, 0xcb, 0xae, 0x2a, 0x6a, 0x5e, 0x04, 0xcd, 0xd8, 0xb1, 0x93, 0x46,
    +	0xfd, 0xdb, 0x74, 0xe7, 0xef, 0xcc, 0x39, 0x67, 0xbe, 0xf3, 0xcd, 0x8c, 0x8c, 0xf0, 0xf0, 0x99,
    +	0xc4, 0x3c, 0xf1, 0x69, 0xca, 0xfd, 0x18, 0xd4, 0xc7, 0x44, 0x0c, 0x79, 0x1c, 0xfa, 0xe3, 0x2e,
    +	0xfd, 0x90, 0x0e, 0x68, 0xd7, 0x0f, 0x21, 0x06, 0x41, 0x15, 0xf4, 0x71, 0x2a, 0x12, 0x95, 0x38,
    +	0x6e, 0xce, 0xc7, 0x34, 0xe5, 0xb8, 0xe2, 0xe3, 0x09, 0x7f, 0x7d, 0x33, 0xe4, 0x6a, 0x30, 0x3a,
    +	0xc2, 0x2c, 0x89, 0xfc, 0x30, 0x09, 0x13, 0xdf, 0xc8, 0x8e, 0x46, 0xc7, 0xa6, 0x32, 0x85, 0xf9,
    +	0xca, 0xed, 0xd6, 0x9f, 0x54, 0xdb, 0x47, 0x94, 0x0d, 0x78, 0x0c, 0xe2, 0xb3, 0x9f, 0x0e, 0x43,
    +	0x0d, 0x48, 0x3f, 0x02, 0x45, 0xfd, 0xf1, 0x5c, 0x13, 0xeb, 0xfe, 0x55, 0x2a, 0x31, 0x8a, 0x15,
    +	0x8f, 0x60, 0x4e, 0xf0, 0xf4, 0x26, 0x81, 0x64, 0x03, 0x88, 0xe8, 0x65, 0x9d, 0xf7, 0xd3, 0x42,
    +	0xf6, 0xce, 0xfe, 0xf3, 0x7e, 0x5f, 0x80, 0x94, 0xce, 0x3b, 0xb4, 0xac, 0x3b, 0xea, 0x53, 0x45,
    +	0x5b, 0x56, 0xc7, 0xda, 0x68, 0xf6, 0x1e, 0xe3, 0x6a, 0x1c, 0xa5, 0x31, 0x4e, 0x87, 0xa1, 0x06,
    +	0x24, 0xd6, 0x6c, 0x3c, 0xee, 0xe2, 0xbd, 0xa3, 0xf7, 0xc0, 0xd4, 0x2b, 0x50, 0x34, 0x70, 0x4e,
    +	0xce, 0xdb, 0xb5, 0xec, 0xbc, 0x8d, 0x2a, 0x8c, 0x94, 0xae, 0xce, 0x1e, 0xaa, 0xcb, 0x14, 0x58,
    +	0x6b, 0xc1, 0xb8, 0x6f, 0xe2, 0xeb, 0x87, 0x8d, 0xcb, 0xd6, 0x0e, 0x52, 0x60, 0xc1, 0x3f, 0x85,
    +	0x75, 0x5d, 0x57, 0xc4, 0x18, 0x79, 0x3f, 0x2c, 0xb4, 0x52, 0xb2, 0x5e, 0x72, 0xa9, 0x9c, 0xc3,
    +	0xb9, 0x10, 0xf8, 0x76, 0x21, 0xb4, 0xda, 0x44, 0xf8, 0xaf, 0xd8, 0x67, 0x79, 0x82, 0x4c, 0x05,
    +	0xd8, 0x45, 0x0d, 0xae, 0x20, 0x92, 0xad, 0x85, 0xce, 0xe2, 0x46, 0xb3, 0xf7, 0xe0, 0xd6, 0x09,
    +	0x82, 0x95, 0xc2, 0xb5, 0xb1, 0xa3, 0xf5, 0x24, 0xb7, 0xf1, 0xa2, 0xa9, 0xf6, 0x75, 0x2c, 0xe7,
    +	0x10, 0xd9, 0x29, 0x15, 0x10, 0x2b, 0x02, 0xc7, 0x45, 0xff, 0xfe, 0x4d, 0x9b, 0xec, 0x4f, 0x04,
    +	0x20, 0x20, 0x66, 0x10, 0xac, 0x64, 0xe7, 0x6d, 0xbb, 0x04, 0x49, 0x65, 0xe8, 0x7d, 0xb7, 0xd0,
    +	0xea, 0x25, 0xb6, 0xf3, 0x3f, 0x6a, 0x84, 0x22, 0x19, 0xa5, 0x66, 0x37, 0xbb, 0xea, 0xf3, 0x85,
    +	0x06, 0x49, 0xbe, 0xe6, 0x3c, 0x42, 0xcb, 0x02, 0x64, 0x32, 0x12, 0x0c, 0xcc, 0xe1, 0xd9, 0xd5,
    +	0x94, 0x48, 0x81, 0x93, 0x92, 0xe1, 0xf8, 0xc8, 0x8e, 0x69, 0x04, 0x32, 0xa5, 0x0c, 0x5a, 0x8b,
    +	0x86, 0xbe, 0x56, 0xd0, 0xed, 0xdd, 0xc9, 0x02, 0xa9, 0x38, 0x4e, 0x07, 0xd5, 0x75, 0xd1, 0xaa,
    +	0x1b, 0x6e, 0x79, 0xd0, 0x9a, 0x4b, 0xcc, 0x8a, 0xf7, 0x6d, 0x01, 0x35, 0x0f, 0x40, 0x8c, 0x39,
    +	0x83, 0xad, 0x9d, 0x6d, 0x72, 0x0f, 0x77, 0xf5, 0xf5, 0xcc, 0x5d, 0xbd, 0xf1, 0x10, 0xa6, 0x9a,
    +	0xbb, 0xea, 0xb6, 0x3a, 0x6f, 0xd0, 0x92, 0x54, 0x54, 0x8d, 0xa4, 0x19, 0x4a, 0xb3, 0xd7, 0xbd,
    +	0x8b, 0xa9, 0x11, 0x06, 0xff, 0x16, 0xb6, 0x4b, 0x79, 0x4d, 0x0a, 0x43, 0xef, 0x97, 0x85, 0x56,
    +	0xa7, 0xd8, 0xf7, 0xf0, 0x14, 0xf6, 0x67, 0x9f, 0xc2, 0xc3, 0x3b, 0x64, 0xb9, 0xe2, 0x31, 0xf4,
    +	0x66, 0x22, 0x98, 0xe7, 0xd0, 0x46, 0x0d, 0xc6, 0xfb, 0x42, 0xb6, 0xac, 0xce, 0xe2, 0x86, 0x1d,
    +	0xd8, 0x5a, 0xa3, 0x17, 0x25, 0xc9, 0x71, 0xef, 0x13, 0x5a, 0x9b, 0x1b, 0x92, 0xc3, 0x10, 0x62,
    +	0x49, 0xdc, 0xe7, 0x8a, 0x27, 0x71, 0x2e, 0x9d, 0x3d, 0xc0, 0x6b, 0xa2, 0x6f, 0x4d, 0x74, 0xd5,
    +	0xed, 0x28, 0x21, 0x49, 0xa6, 0x6c, 0x83, 0xed, 0x93, 0x0b, 0xb7, 0x76, 0x7a, 0xe1, 0xd6, 0xce,
    +	0x2e, 0xdc, 0xda, 0x97, 0xcc, 0xb5, 0x4e, 0x32, 0xd7, 0x3a, 0xcd, 0x5c, 0xeb, 0x2c, 0x73, 0xad,
    +	0xdf, 0x99, 0x6b, 0x7d, 0xfd, 0xe3, 0xd6, 0xde, 0xba, 0xd7, 0xff, 0x7f, 0xfe, 0x06, 0x00, 0x00,
    +	0xff, 0xff, 0xb1, 0xd0, 0x33, 0x02, 0xa0, 0x06, 0x00, 0x00,
     }
     
     func (m *IPAddress) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/generated.proto b/vendor/k8s.io/api/networking/v1alpha1/generated.proto
    index fb7971745d4e..80ec6af735ef 100644
    --- a/vendor/k8s.io/api/networking/v1alpha1/generated.proto
    +++ b/vendor/k8s.io/api/networking/v1alpha1/generated.proto
    @@ -39,7 +39,7 @@ message IPAddress {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the desired state of the IPAddress.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -52,7 +52,7 @@ message IPAddressList {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of IPAddresses.
       repeated IPAddress items = 2;
    @@ -91,7 +91,7 @@ message ServiceCIDR {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the desired state of the ServiceCIDR.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -109,7 +109,7 @@ message ServiceCIDRList {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of ServiceCIDRs.
       repeated ServiceCIDR items = 2;
    @@ -119,8 +119,12 @@ message ServiceCIDRList {
     message ServiceCIDRSpec {
       // CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64")
       // from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family.
    +  // The network address of each CIDR, the address that identifies the subnet of a host, is reserved
    +  // and will not be allocated. The broadcast address for IPv4 CIDRs is also reserved and will not be
    +  // allocated.
       // This field is immutable.
       // +optional
    +  // +listType=atomic
       repeated string cidrs = 1;
     }
     
    @@ -133,6 +137,6 @@ message ServiceCIDRStatus {
       // +patchStrategy=merge
       // +listType=map
       // +listMapKey=type
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1;
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1;
     }
     
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/types.go b/vendor/k8s.io/api/networking/v1alpha1/types.go
    index 9d56ca193e60..0e454f02635f 100644
    --- a/vendor/k8s.io/api/networking/v1alpha1/types.go
    +++ b/vendor/k8s.io/api/networking/v1alpha1/types.go
    @@ -109,8 +109,12 @@ type ServiceCIDR struct {
     type ServiceCIDRSpec struct {
     	// CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64")
     	// from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family.
    +	// The network address of each CIDR, the address that identifies the subnet of a host, is reserved
    +	// and will not be allocated. The broadcast address for IPv4 CIDRs is also reserved and will not be
    +	// allocated.
     	// This field is immutable.
     	// +optional
    +	// +listType=atomic
     	CIDRs []string `json:"cidrs,omitempty" protobuf:"bytes,1,opt,name=cidrs"`
     }
     
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go
    index 481ec06030b7..4c8eb57a7a5e 100644
    --- a/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go
    @@ -91,7 +91,7 @@ func (ServiceCIDRList) SwaggerDoc() map[string]string {
     
     var map_ServiceCIDRSpec = map[string]string{
     	"":      "ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services.",
    -	"cidrs": "CIDRs defines the IP blocks in CIDR notation (e.g. \"192.168.0.0/24\" or \"2001:db8::/64\") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. This field is immutable.",
    +	"cidrs": "CIDRs defines the IP blocks in CIDR notation (e.g. \"192.168.0.0/24\" or \"2001:db8::/64\") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. The network address of each CIDR, the address that identifies the subnet of a host, is reserved and will not be allocated. The broadcast address for IPv4 CIDRs is also reserved and will not be allocated. This field is immutable.",
     }
     
     func (ServiceCIDRSpec) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/networking/v1beta1/generated.pb.go b/vendor/k8s.io/api/networking/v1beta1/generated.pb.go
    index 6f298cd7811e..a924725f2844 100644
    --- a/vendor/k8s.io/api/networking/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/networking/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/networking/v1beta1/generated.proto
    +// source: k8s.io/api/networking/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -27,6 +27,7 @@ import (
     	proto "github.com/gogo/protobuf/proto"
     	k8s_io_api_core_v1 "k8s.io/api/core/v1"
     	v11 "k8s.io/api/core/v1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     
     	math "math"
     	math_bits "math/bits"
    @@ -48,7 +49,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *HTTPIngressPath) Reset()      { *m = HTTPIngressPath{} }
     func (*HTTPIngressPath) ProtoMessage() {}
     func (*HTTPIngressPath) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{0}
    +	return fileDescriptor_9497719c79c89d2d, []int{0}
     }
     func (m *HTTPIngressPath) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -76,7 +77,7 @@ var xxx_messageInfo_HTTPIngressPath proto.InternalMessageInfo
     func (m *HTTPIngressRuleValue) Reset()      { *m = HTTPIngressRuleValue{} }
     func (*HTTPIngressRuleValue) ProtoMessage() {}
     func (*HTTPIngressRuleValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{1}
    +	return fileDescriptor_9497719c79c89d2d, []int{1}
     }
     func (m *HTTPIngressRuleValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -101,10 +102,94 @@ func (m *HTTPIngressRuleValue) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_HTTPIngressRuleValue proto.InternalMessageInfo
     
    +func (m *IPAddress) Reset()      { *m = IPAddress{} }
    +func (*IPAddress) ProtoMessage() {}
    +func (*IPAddress) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_9497719c79c89d2d, []int{2}
    +}
    +func (m *IPAddress) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *IPAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *IPAddress) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_IPAddress.Merge(m, src)
    +}
    +func (m *IPAddress) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *IPAddress) XXX_DiscardUnknown() {
    +	xxx_messageInfo_IPAddress.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_IPAddress proto.InternalMessageInfo
    +
    +func (m *IPAddressList) Reset()      { *m = IPAddressList{} }
    +func (*IPAddressList) ProtoMessage() {}
    +func (*IPAddressList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_9497719c79c89d2d, []int{3}
    +}
    +func (m *IPAddressList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *IPAddressList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *IPAddressList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_IPAddressList.Merge(m, src)
    +}
    +func (m *IPAddressList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *IPAddressList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_IPAddressList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_IPAddressList proto.InternalMessageInfo
    +
    +func (m *IPAddressSpec) Reset()      { *m = IPAddressSpec{} }
    +func (*IPAddressSpec) ProtoMessage() {}
    +func (*IPAddressSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_9497719c79c89d2d, []int{4}
    +}
    +func (m *IPAddressSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *IPAddressSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *IPAddressSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_IPAddressSpec.Merge(m, src)
    +}
    +func (m *IPAddressSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *IPAddressSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_IPAddressSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_IPAddressSpec proto.InternalMessageInfo
    +
     func (m *Ingress) Reset()      { *m = Ingress{} }
     func (*Ingress) ProtoMessage() {}
     func (*Ingress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{2}
    +	return fileDescriptor_9497719c79c89d2d, []int{5}
     }
     func (m *Ingress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -132,7 +217,7 @@ var xxx_messageInfo_Ingress proto.InternalMessageInfo
     func (m *IngressBackend) Reset()      { *m = IngressBackend{} }
     func (*IngressBackend) ProtoMessage() {}
     func (*IngressBackend) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{3}
    +	return fileDescriptor_9497719c79c89d2d, []int{6}
     }
     func (m *IngressBackend) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -160,7 +245,7 @@ var xxx_messageInfo_IngressBackend proto.InternalMessageInfo
     func (m *IngressClass) Reset()      { *m = IngressClass{} }
     func (*IngressClass) ProtoMessage() {}
     func (*IngressClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{4}
    +	return fileDescriptor_9497719c79c89d2d, []int{7}
     }
     func (m *IngressClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -188,7 +273,7 @@ var xxx_messageInfo_IngressClass proto.InternalMessageInfo
     func (m *IngressClassList) Reset()      { *m = IngressClassList{} }
     func (*IngressClassList) ProtoMessage() {}
     func (*IngressClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{5}
    +	return fileDescriptor_9497719c79c89d2d, []int{8}
     }
     func (m *IngressClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -216,7 +301,7 @@ var xxx_messageInfo_IngressClassList proto.InternalMessageInfo
     func (m *IngressClassParametersReference) Reset()      { *m = IngressClassParametersReference{} }
     func (*IngressClassParametersReference) ProtoMessage() {}
     func (*IngressClassParametersReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{6}
    +	return fileDescriptor_9497719c79c89d2d, []int{9}
     }
     func (m *IngressClassParametersReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -244,7 +329,7 @@ var xxx_messageInfo_IngressClassParametersReference proto.InternalMessageInfo
     func (m *IngressClassSpec) Reset()      { *m = IngressClassSpec{} }
     func (*IngressClassSpec) ProtoMessage() {}
     func (*IngressClassSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{7}
    +	return fileDescriptor_9497719c79c89d2d, []int{10}
     }
     func (m *IngressClassSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -272,7 +357,7 @@ var xxx_messageInfo_IngressClassSpec proto.InternalMessageInfo
     func (m *IngressList) Reset()      { *m = IngressList{} }
     func (*IngressList) ProtoMessage() {}
     func (*IngressList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{8}
    +	return fileDescriptor_9497719c79c89d2d, []int{11}
     }
     func (m *IngressList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -300,7 +385,7 @@ var xxx_messageInfo_IngressList proto.InternalMessageInfo
     func (m *IngressLoadBalancerIngress) Reset()      { *m = IngressLoadBalancerIngress{} }
     func (*IngressLoadBalancerIngress) ProtoMessage() {}
     func (*IngressLoadBalancerIngress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{9}
    +	return fileDescriptor_9497719c79c89d2d, []int{12}
     }
     func (m *IngressLoadBalancerIngress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -328,7 +413,7 @@ var xxx_messageInfo_IngressLoadBalancerIngress proto.InternalMessageInfo
     func (m *IngressLoadBalancerStatus) Reset()      { *m = IngressLoadBalancerStatus{} }
     func (*IngressLoadBalancerStatus) ProtoMessage() {}
     func (*IngressLoadBalancerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{10}
    +	return fileDescriptor_9497719c79c89d2d, []int{13}
     }
     func (m *IngressLoadBalancerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -356,7 +441,7 @@ var xxx_messageInfo_IngressLoadBalancerStatus proto.InternalMessageInfo
     func (m *IngressPortStatus) Reset()      { *m = IngressPortStatus{} }
     func (*IngressPortStatus) ProtoMessage() {}
     func (*IngressPortStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{11}
    +	return fileDescriptor_9497719c79c89d2d, []int{14}
     }
     func (m *IngressPortStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -384,7 +469,7 @@ var xxx_messageInfo_IngressPortStatus proto.InternalMessageInfo
     func (m *IngressRule) Reset()      { *m = IngressRule{} }
     func (*IngressRule) ProtoMessage() {}
     func (*IngressRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{12}
    +	return fileDescriptor_9497719c79c89d2d, []int{15}
     }
     func (m *IngressRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -412,7 +497,7 @@ var xxx_messageInfo_IngressRule proto.InternalMessageInfo
     func (m *IngressRuleValue) Reset()      { *m = IngressRuleValue{} }
     func (*IngressRuleValue) ProtoMessage() {}
     func (*IngressRuleValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{13}
    +	return fileDescriptor_9497719c79c89d2d, []int{16}
     }
     func (m *IngressRuleValue) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -440,7 +525,7 @@ var xxx_messageInfo_IngressRuleValue proto.InternalMessageInfo
     func (m *IngressSpec) Reset()      { *m = IngressSpec{} }
     func (*IngressSpec) ProtoMessage() {}
     func (*IngressSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{14}
    +	return fileDescriptor_9497719c79c89d2d, []int{17}
     }
     func (m *IngressSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -468,7 +553,7 @@ var xxx_messageInfo_IngressSpec proto.InternalMessageInfo
     func (m *IngressStatus) Reset()      { *m = IngressStatus{} }
     func (*IngressStatus) ProtoMessage() {}
     func (*IngressStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{15}
    +	return fileDescriptor_9497719c79c89d2d, []int{18}
     }
     func (m *IngressStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -496,7 +581,7 @@ var xxx_messageInfo_IngressStatus proto.InternalMessageInfo
     func (m *IngressTLS) Reset()      { *m = IngressTLS{} }
     func (*IngressTLS) ProtoMessage() {}
     func (*IngressTLS) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_5bea11de0ceb8f53, []int{16}
    +	return fileDescriptor_9497719c79c89d2d, []int{19}
     }
     func (m *IngressTLS) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -521,9 +606,152 @@ func (m *IngressTLS) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_IngressTLS proto.InternalMessageInfo
     
    +func (m *ParentReference) Reset()      { *m = ParentReference{} }
    +func (*ParentReference) ProtoMessage() {}
    +func (*ParentReference) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_9497719c79c89d2d, []int{20}
    +}
    +func (m *ParentReference) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ParentReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ParentReference) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ParentReference.Merge(m, src)
    +}
    +func (m *ParentReference) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ParentReference) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ParentReference.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ParentReference proto.InternalMessageInfo
    +
    +func (m *ServiceCIDR) Reset()      { *m = ServiceCIDR{} }
    +func (*ServiceCIDR) ProtoMessage() {}
    +func (*ServiceCIDR) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_9497719c79c89d2d, []int{21}
    +}
    +func (m *ServiceCIDR) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ServiceCIDR) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ServiceCIDR) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ServiceCIDR.Merge(m, src)
    +}
    +func (m *ServiceCIDR) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ServiceCIDR) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ServiceCIDR.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ServiceCIDR proto.InternalMessageInfo
    +
    +func (m *ServiceCIDRList) Reset()      { *m = ServiceCIDRList{} }
    +func (*ServiceCIDRList) ProtoMessage() {}
    +func (*ServiceCIDRList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_9497719c79c89d2d, []int{22}
    +}
    +func (m *ServiceCIDRList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ServiceCIDRList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ServiceCIDRList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ServiceCIDRList.Merge(m, src)
    +}
    +func (m *ServiceCIDRList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ServiceCIDRList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ServiceCIDRList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ServiceCIDRList proto.InternalMessageInfo
    +
    +func (m *ServiceCIDRSpec) Reset()      { *m = ServiceCIDRSpec{} }
    +func (*ServiceCIDRSpec) ProtoMessage() {}
    +func (*ServiceCIDRSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_9497719c79c89d2d, []int{23}
    +}
    +func (m *ServiceCIDRSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ServiceCIDRSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ServiceCIDRSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ServiceCIDRSpec.Merge(m, src)
    +}
    +func (m *ServiceCIDRSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ServiceCIDRSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ServiceCIDRSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ServiceCIDRSpec proto.InternalMessageInfo
    +
    +func (m *ServiceCIDRStatus) Reset()      { *m = ServiceCIDRStatus{} }
    +func (*ServiceCIDRStatus) ProtoMessage() {}
    +func (*ServiceCIDRStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_9497719c79c89d2d, []int{24}
    +}
    +func (m *ServiceCIDRStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ServiceCIDRStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ServiceCIDRStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ServiceCIDRStatus.Merge(m, src)
    +}
    +func (m *ServiceCIDRStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ServiceCIDRStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ServiceCIDRStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ServiceCIDRStatus proto.InternalMessageInfo
    +
     func init() {
     	proto.RegisterType((*HTTPIngressPath)(nil), "k8s.io.api.networking.v1beta1.HTTPIngressPath")
     	proto.RegisterType((*HTTPIngressRuleValue)(nil), "k8s.io.api.networking.v1beta1.HTTPIngressRuleValue")
    +	proto.RegisterType((*IPAddress)(nil), "k8s.io.api.networking.v1beta1.IPAddress")
    +	proto.RegisterType((*IPAddressList)(nil), "k8s.io.api.networking.v1beta1.IPAddressList")
    +	proto.RegisterType((*IPAddressSpec)(nil), "k8s.io.api.networking.v1beta1.IPAddressSpec")
     	proto.RegisterType((*Ingress)(nil), "k8s.io.api.networking.v1beta1.Ingress")
     	proto.RegisterType((*IngressBackend)(nil), "k8s.io.api.networking.v1beta1.IngressBackend")
     	proto.RegisterType((*IngressClass)(nil), "k8s.io.api.networking.v1beta1.IngressClass")
    @@ -539,92 +767,111 @@ func init() {
     	proto.RegisterType((*IngressSpec)(nil), "k8s.io.api.networking.v1beta1.IngressSpec")
     	proto.RegisterType((*IngressStatus)(nil), "k8s.io.api.networking.v1beta1.IngressStatus")
     	proto.RegisterType((*IngressTLS)(nil), "k8s.io.api.networking.v1beta1.IngressTLS")
    +	proto.RegisterType((*ParentReference)(nil), "k8s.io.api.networking.v1beta1.ParentReference")
    +	proto.RegisterType((*ServiceCIDR)(nil), "k8s.io.api.networking.v1beta1.ServiceCIDR")
    +	proto.RegisterType((*ServiceCIDRList)(nil), "k8s.io.api.networking.v1beta1.ServiceCIDRList")
    +	proto.RegisterType((*ServiceCIDRSpec)(nil), "k8s.io.api.networking.v1beta1.ServiceCIDRSpec")
    +	proto.RegisterType((*ServiceCIDRStatus)(nil), "k8s.io.api.networking.v1beta1.ServiceCIDRStatus")
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/networking/v1beta1/generated.proto", fileDescriptor_5bea11de0ceb8f53)
    -}
    -
    -var fileDescriptor_5bea11de0ceb8f53 = []byte{
    -	// 1247 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcb, 0x6f, 0x1b, 0x45,
    -	0x18, 0xcf, 0xda, 0x71, 0xe3, 0x8c, 0xd3, 0x36, 0x0c, 0x3d, 0x98, 0xa0, 0xda, 0xd1, 0x1e, 0x50,
    -	0xa0, 0xed, 0x6e, 0x93, 0x16, 0x54, 0x2e, 0x08, 0x36, 0x02, 0x12, 0x25, 0x24, 0x66, 0x6c, 0x1e,
    -	0x42, 0x1c, 0x18, 0xaf, 0xa7, 0xf6, 0xe2, 0xf5, 0xee, 0x6a, 0x66, 0x36, 0xa8, 0x37, 0x10, 0x27,
    -	0x4e, 0xf0, 0x3f, 0x20, 0xf1, 0x27, 0x20, 0x2e, 0x48, 0x08, 0x2e, 0x39, 0xf6, 0xd8, 0x0b, 0x11,
    -	0x31, 0xff, 0x45, 0x4f, 0xe8, 0x9b, 0x9d, 0x7d, 0xf8, 0x91, 0xd6, 0xe1, 0xd0, 0x53, 0xbc, 0xdf,
    -	0xe3, 0xf7, 0xbd, 0xbf, 0xf9, 0x82, 0x3e, 0x18, 0x3e, 0x10, 0x96, 0x17, 0xda, 0xc3, 0xb8, 0xcb,
    -	0x78, 0xc0, 0x24, 0x13, 0xf6, 0x09, 0x0b, 0x7a, 0x21, 0xb7, 0x35, 0x83, 0x46, 0x9e, 0x1d, 0x30,
    -	0xf9, 0x4d, 0xc8, 0x87, 0x5e, 0xd0, 0xb7, 0x4f, 0xb6, 0xbb, 0x4c, 0xd2, 0x6d, 0xbb, 0xcf, 0x02,
    -	0xc6, 0xa9, 0x64, 0x3d, 0x2b, 0xe2, 0xa1, 0x0c, 0xf1, 0xcd, 0x44, 0xdc, 0xa2, 0x91, 0x67, 0xe5,
    -	0xe2, 0x96, 0x16, 0xdf, 0xb8, 0xd3, 0xf7, 0xe4, 0x20, 0xee, 0x5a, 0x6e, 0x38, 0xb2, 0xfb, 0x61,
    -	0x3f, 0xb4, 0x95, 0x56, 0x37, 0x7e, 0xa8, 0xbe, 0xd4, 0x87, 0xfa, 0x95, 0xa0, 0x6d, 0x98, 0x05,
    -	0xe3, 0x6e, 0xc8, 0x99, 0x7d, 0x32, 0x63, 0x71, 0xe3, 0x7e, 0x2e, 0x33, 0xa2, 0xee, 0xc0, 0x0b,
    -	0x18, 0x7f, 0x64, 0x47, 0xc3, 0x3e, 0x10, 0x84, 0x3d, 0x62, 0x92, 0xce, 0xd3, 0xb2, 0x2f, 0xd2,
    -	0xe2, 0x71, 0x20, 0xbd, 0x11, 0x9b, 0x51, 0x78, 0xeb, 0x79, 0x0a, 0xc2, 0x1d, 0xb0, 0x11, 0x9d,
    -	0xd1, 0xbb, 0x77, 0x91, 0x5e, 0x2c, 0x3d, 0xdf, 0xf6, 0x02, 0x29, 0x24, 0x9f, 0x56, 0x32, 0xff,
    -	0x32, 0xd0, 0xf5, 0xbd, 0x4e, 0xa7, 0xb5, 0x1f, 0xf4, 0x39, 0x13, 0xa2, 0x45, 0xe5, 0x00, 0x6f,
    -	0xa2, 0xe5, 0x88, 0xca, 0x41, 0xdd, 0xd8, 0x34, 0xb6, 0x56, 0x9d, 0xb5, 0xd3, 0xb3, 0xe6, 0xd2,
    -	0xf8, 0xac, 0xb9, 0x0c, 0x3c, 0xa2, 0x38, 0xf8, 0x3e, 0xaa, 0xc2, 0xdf, 0xce, 0xa3, 0x88, 0xd5,
    -	0xcb, 0x4a, 0xaa, 0x3e, 0x3e, 0x6b, 0x56, 0x5b, 0x9a, 0xf6, 0xb4, 0xf0, 0x9b, 0x64, 0x92, 0xf8,
    -	0x73, 0xb4, 0xd2, 0xa5, 0xee, 0x90, 0x05, 0xbd, 0x7a, 0x69, 0xd3, 0xd8, 0xaa, 0xed, 0xdc, 0xb1,
    -	0x9e, 0x59, 0x43, 0x4b, 0x3b, 0xe5, 0x24, 0x4a, 0xce, 0x75, 0xed, 0xc9, 0x8a, 0x26, 0x90, 0x14,
    -	0xce, 0x1c, 0xa2, 0x1b, 0x85, 0x20, 0x48, 0xec, 0xb3, 0x4f, 0xa9, 0x1f, 0x33, 0xdc, 0x46, 0x15,
    -	0xb0, 0x2e, 0xea, 0xc6, 0x66, 0x79, 0xab, 0xb6, 0x63, 0x3d, 0xc7, 0xde, 0x54, 0x22, 0x9c, 0xab,
    -	0xda, 0x60, 0x05, 0xbe, 0x04, 0x49, 0xb0, 0xcc, 0x1f, 0x4b, 0x68, 0x45, 0x4b, 0xe1, 0xaf, 0x50,
    -	0x15, 0xea, 0xde, 0xa3, 0x92, 0xaa, 0x74, 0xd5, 0x76, 0xee, 0x16, 0x6c, 0x64, 0x65, 0xb0, 0xa2,
    -	0x61, 0x1f, 0x08, 0xc2, 0x02, 0x69, 0xeb, 0x64, 0xdb, 0x3a, 0xee, 0x7e, 0xcd, 0x5c, 0xf9, 0x11,
    -	0x93, 0xd4, 0xc1, 0xda, 0x0a, 0xca, 0x69, 0x24, 0x43, 0xc5, 0x87, 0x68, 0x59, 0x44, 0xcc, 0xd5,
    -	0x19, 0x7b, 0x63, 0xb1, 0x8c, 0xb5, 0x23, 0xe6, 0xe6, 0x85, 0x83, 0x2f, 0xa2, 0x50, 0x70, 0x07,
    -	0x5d, 0x11, 0x92, 0xca, 0x58, 0xa8, 0xb2, 0xd5, 0x76, 0x6e, 0x2f, 0x88, 0xa7, 0x74, 0x9c, 0x6b,
    -	0x1a, 0xf1, 0x4a, 0xf2, 0x4d, 0x34, 0x96, 0xf9, 0x43, 0x09, 0x5d, 0x9b, 0xac, 0x15, 0x7e, 0x13,
    -	0xd5, 0x04, 0xe3, 0x27, 0x9e, 0xcb, 0x8e, 0xe8, 0x88, 0xe9, 0x56, 0x7a, 0x59, 0xeb, 0xd7, 0xda,
    -	0x39, 0x8b, 0x14, 0xe5, 0x70, 0x3f, 0x53, 0x6b, 0x85, 0x5c, 0xea, 0xa0, 0x2f, 0x4e, 0x29, 0x74,
    -	0xb6, 0x95, 0x74, 0xb6, 0xb5, 0x1f, 0xc8, 0x63, 0xde, 0x96, 0xdc, 0x0b, 0xfa, 0x33, 0x86, 0x00,
    -	0x8c, 0x14, 0x91, 0xf1, 0x67, 0xa8, 0xca, 0x99, 0x08, 0x63, 0xee, 0x32, 0x9d, 0x8a, 0x89, 0x66,
    -	0x84, 0x15, 0x00, 0x65, 0x82, 0xbe, 0xed, 0x1d, 0x86, 0x2e, 0xf5, 0x93, 0xe2, 0x10, 0xf6, 0x90,
    -	0x71, 0x16, 0xb8, 0xcc, 0x59, 0x83, 0x86, 0x27, 0x1a, 0x82, 0x64, 0x60, 0x30, 0x50, 0x6b, 0x3a,
    -	0x17, 0xbb, 0x3e, 0x7d, 0x21, 0x2d, 0xf2, 0xf1, 0x44, 0x8b, 0xd8, 0x8b, 0x95, 0x54, 0x39, 0x77,
    -	0x51, 0x9f, 0x98, 0x7f, 0x1a, 0x68, 0xbd, 0x28, 0x78, 0xe8, 0x09, 0x89, 0xbf, 0x9c, 0x89, 0xc4,
    -	0x5a, 0x2c, 0x12, 0xd0, 0x56, 0x71, 0xac, 0x6b, 0x53, 0xd5, 0x94, 0x52, 0x88, 0xa2, 0x85, 0x2a,
    -	0x9e, 0x64, 0x23, 0x51, 0x2f, 0xa9, 0x59, 0xbd, 0x75, 0x89, 0x30, 0xf2, 0x41, 0xdd, 0x07, 0x04,
    -	0x92, 0x00, 0x99, 0x7f, 0x1b, 0xa8, 0x59, 0x14, 0x6b, 0x51, 0x4e, 0x47, 0x4c, 0x32, 0x2e, 0xb2,
    -	0x32, 0xe2, 0x2d, 0x54, 0xa5, 0xad, 0xfd, 0x0f, 0x79, 0x18, 0x47, 0xe9, 0xbe, 0x03, 0xff, 0xde,
    -	0xd3, 0x34, 0x92, 0x71, 0x61, 0x2b, 0x0e, 0x3d, 0xbd, 0xba, 0x0a, 0x5b, 0xf1, 0xc0, 0x0b, 0x7a,
    -	0x44, 0x71, 0x40, 0x22, 0x80, 0x66, 0x2f, 0x4f, 0x4a, 0xa8, 0x2e, 0x57, 0x1c, 0xdc, 0x44, 0x15,
    -	0xe1, 0x86, 0x11, 0xab, 0x2f, 0x2b, 0x91, 0x55, 0x70, 0xb9, 0x0d, 0x04, 0x92, 0xd0, 0xf1, 0x2d,
    -	0xb4, 0x0a, 0x82, 0x22, 0xa2, 0x2e, 0xab, 0x57, 0x94, 0xd0, 0xd5, 0xf1, 0x59, 0x73, 0xf5, 0x28,
    -	0x25, 0x92, 0x9c, 0x6f, 0xfe, 0x3a, 0x55, 0x24, 0xa8, 0x1f, 0xde, 0x41, 0xc8, 0x0d, 0x03, 0xc9,
    -	0x43, 0xdf, 0x67, 0x5c, 0x87, 0x94, 0xb5, 0xcf, 0x6e, 0xc6, 0x21, 0x05, 0x29, 0x1c, 0x20, 0x14,
    -	0x65, 0xb9, 0xd1, 0x6d, 0xf4, 0xce, 0x25, 0xf2, 0x3f, 0x27, 0xb1, 0xce, 0x35, 0xb0, 0x57, 0x60,
    -	0x14, 0x2c, 0x98, 0xbf, 0x19, 0xa8, 0xa6, 0xf5, 0x5f, 0x40, 0x63, 0x1d, 0x4c, 0x36, 0xd6, 0x6b,
    -	0x0b, 0x3e, 0x3a, 0xf3, 0x7b, 0xea, 0x77, 0x03, 0x6d, 0xa4, 0xae, 0x87, 0xb4, 0xe7, 0x50, 0x9f,
    -	0x06, 0x2e, 0xe3, 0xe9, 0x7b, 0xb0, 0x81, 0x4a, 0x5e, 0xda, 0x48, 0x48, 0x03, 0x94, 0xf6, 0x5b,
    -	0xa4, 0xe4, 0x45, 0xf8, 0x36, 0xaa, 0x0e, 0x42, 0x21, 0x55, 0x8b, 0x24, 0x4d, 0x94, 0x79, 0xbd,
    -	0xa7, 0xe9, 0x24, 0x93, 0xc0, 0x9f, 0xa0, 0x4a, 0x14, 0x72, 0x29, 0xea, 0xcb, 0xca, 0xeb, 0xbb,
    -	0x8b, 0x79, 0x0d, 0xbb, 0x4d, 0x2f, 0xeb, 0xfc, 0xf1, 0x02, 0x18, 0x92, 0xa0, 0x99, 0xdf, 0x19,
    -	0xe8, 0x95, 0x39, 0xfe, 0x27, 0x3a, 0xb8, 0x87, 0x56, 0xbc, 0x84, 0xa9, 0x5f, 0xcc, 0xb7, 0x17,
    -	0x33, 0x3b, 0x27, 0x15, 0xf9, 0x6b, 0x9d, 0xbe, 0xca, 0x29, 0xb4, 0xf9, 0xb3, 0x81, 0x5e, 0x9a,
    -	0xf1, 0x57, 0x5d, 0x1d, 0xb0, 0xf3, 0x21, 0x79, 0x95, 0xc2, 0xd5, 0x01, 0xab, 0x5b, 0x71, 0xf0,
    -	0x01, 0xaa, 0xaa, 0xa3, 0xc5, 0x0d, 0x7d, 0x9d, 0x40, 0x3b, 0x4d, 0x60, 0x4b, 0xd3, 0x9f, 0x9e,
    -	0x35, 0x5f, 0x9d, 0xbd, 0xe4, 0xac, 0x94, 0x4d, 0x32, 0x00, 0x18, 0x45, 0xc6, 0x79, 0xc8, 0xf5,
    -	0xb4, 0xaa, 0x51, 0x7c, 0x1f, 0x08, 0x24, 0xa1, 0x9b, 0xbf, 0xe4, 0x4d, 0x0a, 0x07, 0x05, 0xf8,
    -	0x07, 0xc5, 0x99, 0xbe, 0x8a, 0xa0, 0x74, 0x44, 0x71, 0x70, 0x8c, 0xd6, 0xbd, 0xa9, 0x0b, 0xe4,
    -	0x72, 0x3b, 0x39, 0x53, 0x73, 0xea, 0x1a, 0x7e, 0x7d, 0x9a, 0x43, 0x66, 0x4c, 0x98, 0x0c, 0xcd,
    -	0x48, 0xc1, 0x93, 0x30, 0x90, 0x32, 0xd2, 0xd3, 0x74, 0x6f, 0xf1, 0xbb, 0x27, 0x77, 0xa1, 0xaa,
    -	0xa2, 0xeb, 0x74, 0x5a, 0x44, 0x41, 0x99, 0x7f, 0x94, 0xb2, 0x7c, 0xa8, 0x45, 0xf3, 0x6e, 0x16,
    -	0xad, 0xda, 0x01, 0xea, 0x99, 0x4f, 0xd6, 0xda, 0x8d, 0x82, 0xe3, 0x19, 0x8f, 0xcc, 0x48, 0xe3,
    -	0x4e, 0x7e, 0x0f, 0x1a, 0xff, 0xe7, 0x1e, 0xac, 0xcd, 0xbb, 0x05, 0xf1, 0x1e, 0x2a, 0x4b, 0x3f,
    -	0x1d, 0xf6, 0xd7, 0x17, 0x43, 0xec, 0x1c, 0xb6, 0x9d, 0x9a, 0x4e, 0x79, 0xb9, 0x73, 0xd8, 0x26,
    -	0x00, 0x81, 0x8f, 0x51, 0x85, 0xc7, 0x3e, 0x83, 0x5b, 0xa9, 0xbc, 0xf8, 0xed, 0x05, 0x19, 0xcc,
    -	0x87, 0x0f, 0xbe, 0x04, 0x49, 0x70, 0xcc, 0xef, 0x0d, 0x74, 0x75, 0xe2, 0xa2, 0xc2, 0x1c, 0xad,
    -	0xf9, 0x85, 0xd9, 0xd1, 0x79, 0x78, 0x70, 0xf9, 0xa9, 0xd3, 0x43, 0x7f, 0x43, 0xdb, 0x5d, 0x2b,
    -	0xf2, 0xc8, 0x84, 0x0d, 0x93, 0x22, 0x94, 0x87, 0x0d, 0x73, 0x00, 0xcd, 0x9b, 0x0c, 0xbc, 0x9e,
    -	0x03, 0xe8, 0x69, 0x41, 0x12, 0x3a, 0x3c, 0x28, 0x82, 0xb9, 0x9c, 0xc9, 0xa3, 0x7c, 0x71, 0x65,
    -	0x0f, 0x4a, 0x3b, 0xe3, 0x90, 0x82, 0x94, 0xb3, 0x7b, 0x7a, 0xde, 0x58, 0x7a, 0x7c, 0xde, 0x58,
    -	0x7a, 0x72, 0xde, 0x58, 0xfa, 0x76, 0xdc, 0x30, 0x4e, 0xc7, 0x0d, 0xe3, 0xf1, 0xb8, 0x61, 0x3c,
    -	0x19, 0x37, 0x8c, 0x7f, 0xc6, 0x0d, 0xe3, 0xa7, 0x7f, 0x1b, 0x4b, 0x5f, 0xdc, 0x7c, 0xe6, 0x3f,
    -	0x7c, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x08, 0x04, 0x22, 0x31, 0x29, 0x0e, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/networking/v1beta1/generated.proto", fileDescriptor_9497719c79c89d2d)
    +}
    +
    +var fileDescriptor_9497719c79c89d2d = []byte{
    +	// 1457 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcb, 0x6f, 0x1b, 0xc5,
    +	0x1f, 0xcf, 0x3a, 0x71, 0xe3, 0x8c, 0xd3, 0x26, 0x9d, 0x5f, 0x0f, 0xfe, 0x05, 0xd5, 0x8e, 0x16,
    +	0x09, 0x85, 0x3e, 0x76, 0xdb, 0xb4, 0xa0, 0x72, 0x41, 0xd4, 0x01, 0x51, 0xab, 0x69, 0xb2, 0x8c,
    +	0x0d, 0x54, 0xc0, 0x81, 0xc9, 0x7a, 0x6a, 0x2f, 0x5e, 0xef, 0xae, 0x66, 0xc7, 0x81, 0xde, 0x40,
    +	0x9c, 0x38, 0xc1, 0x9d, 0x23, 0x12, 0x7f, 0x02, 0x70, 0xa0, 0x52, 0x05, 0x97, 0x1e, 0x7b, 0xec,
    +	0x85, 0x88, 0x9a, 0xff, 0xa2, 0x27, 0xf4, 0x9d, 0x9d, 0x7d, 0xf9, 0xd1, 0x6c, 0x38, 0xe4, 0x54,
    +	0xef, 0xf7, 0x3d, 0xdf, 0xe7, 0xa7, 0x41, 0x57, 0x07, 0xb7, 0x42, 0xc3, 0xf1, 0x4d, 0x1a, 0x38,
    +	0xa6, 0xc7, 0xc4, 0x97, 0x3e, 0x1f, 0x38, 0x5e, 0xcf, 0x3c, 0xbc, 0x7e, 0xc0, 0x04, 0xbd, 0x6e,
    +	0xf6, 0x98, 0xc7, 0x38, 0x15, 0xac, 0x6b, 0x04, 0xdc, 0x17, 0x3e, 0xbe, 0x18, 0x89, 0x1b, 0x34,
    +	0x70, 0x8c, 0x54, 0xdc, 0x50, 0xe2, 0x1b, 0x57, 0x7b, 0x8e, 0xe8, 0x8f, 0x0e, 0x0c, 0xdb, 0x1f,
    +	0x9a, 0x3d, 0xbf, 0xe7, 0x9b, 0x52, 0xeb, 0x60, 0xf4, 0x40, 0x7e, 0xc9, 0x0f, 0xf9, 0x2b, 0xb2,
    +	0xb6, 0xa1, 0x67, 0x9c, 0xdb, 0x3e, 0x67, 0xe6, 0xe1, 0x94, 0xc7, 0x8d, 0x9b, 0xa9, 0xcc, 0x90,
    +	0xda, 0x7d, 0xc7, 0x63, 0xfc, 0xa1, 0x19, 0x0c, 0x7a, 0x40, 0x08, 0xcd, 0x21, 0x13, 0x74, 0x96,
    +	0x96, 0x39, 0x4f, 0x8b, 0x8f, 0x3c, 0xe1, 0x0c, 0xd9, 0x94, 0xc2, 0x9b, 0xc7, 0x29, 0x84, 0x76,
    +	0x9f, 0x0d, 0xe9, 0x94, 0xde, 0x8d, 0x79, 0x7a, 0x23, 0xe1, 0xb8, 0xa6, 0xe3, 0x89, 0x50, 0xf0,
    +	0x49, 0x25, 0xfd, 0x4f, 0x0d, 0xad, 0xdd, 0xe9, 0x74, 0xac, 0x96, 0xd7, 0xe3, 0x2c, 0x0c, 0x2d,
    +	0x2a, 0xfa, 0x78, 0x13, 0x2d, 0x05, 0x54, 0xf4, 0x6b, 0xda, 0xa6, 0xb6, 0xb5, 0xd2, 0x5c, 0x7d,
    +	0x72, 0xd4, 0x58, 0x18, 0x1f, 0x35, 0x96, 0x80, 0x47, 0x24, 0x07, 0xdf, 0x44, 0x15, 0xf8, 0xb7,
    +	0xf3, 0x30, 0x60, 0xb5, 0x45, 0x29, 0x55, 0x1b, 0x1f, 0x35, 0x2a, 0x96, 0xa2, 0xbd, 0xc8, 0xfc,
    +	0x26, 0x89, 0x24, 0xbe, 0x8f, 0x96, 0x0f, 0xa8, 0x3d, 0x60, 0x5e, 0xb7, 0x56, 0xda, 0xd4, 0xb6,
    +	0xaa, 0xdb, 0x57, 0x8d, 0x97, 0xd6, 0xd0, 0x50, 0x41, 0x35, 0x23, 0xa5, 0xe6, 0x9a, 0x8a, 0x64,
    +	0x59, 0x11, 0x48, 0x6c, 0x4e, 0x1f, 0xa0, 0x0b, 0x99, 0x47, 0x90, 0x91, 0xcb, 0x3e, 0xa2, 0xee,
    +	0x88, 0xe1, 0x36, 0x2a, 0x83, 0xf7, 0xb0, 0xa6, 0x6d, 0x2e, 0x6e, 0x55, 0xb7, 0x8d, 0x63, 0xfc,
    +	0x4d, 0x24, 0xa2, 0x79, 0x56, 0x39, 0x2c, 0xc3, 0x57, 0x48, 0x22, 0x5b, 0xfa, 0x23, 0x0d, 0xad,
    +	0xb4, 0xac, 0xdb, 0xdd, 0x2e, 0xc8, 0xe1, 0xcf, 0x51, 0x05, 0x2a, 0xdf, 0xa5, 0x82, 0xca, 0x84,
    +	0x55, 0xb7, 0xaf, 0x65, 0xbc, 0x24, 0x85, 0x30, 0x82, 0x41, 0x0f, 0x08, 0xa1, 0x01, 0xd2, 0xc6,
    +	0xe1, 0x75, 0x63, 0xff, 0xe0, 0x0b, 0x66, 0x8b, 0x7b, 0x4c, 0xd0, 0x26, 0x56, 0x7e, 0x50, 0x4a,
    +	0x23, 0x89, 0x55, 0xbc, 0x87, 0x96, 0xc2, 0x80, 0xd9, 0x2a, 0x67, 0x57, 0x8e, 0xcb, 0x59, 0x1c,
    +	0x59, 0x3b, 0x60, 0x76, 0x5a, 0x3c, 0xf8, 0x22, 0xd2, 0x8e, 0xfe, 0xbb, 0x86, 0xce, 0x26, 0x52,
    +	0xbb, 0x4e, 0x28, 0xf0, 0x67, 0x53, 0x6f, 0x30, 0x8a, 0xbd, 0x01, 0xb4, 0xe5, 0x0b, 0xd6, 0x95,
    +	0x9f, 0x4a, 0x4c, 0xc9, 0xc4, 0x7f, 0x0f, 0x95, 0x1d, 0xc1, 0x86, 0x61, 0xad, 0x24, 0x8b, 0xb0,
    +	0x55, 0xf4, 0x01, 0x69, 0xfa, 0x5b, 0xa0, 0x4e, 0x22, 0x2b, 0xba, 0x9b, 0x89, 0x1e, 0x5e, 0x85,
    +	0x3f, 0x45, 0x2b, 0x01, 0xe5, 0xcc, 0x13, 0x84, 0x3d, 0x98, 0x11, 0xfe, 0x2c, 0x1f, 0x56, 0x2c,
    +	0xcf, 0x38, 0xf3, 0x6c, 0xd6, 0x3c, 0x3b, 0x3e, 0x6a, 0xac, 0x24, 0x44, 0x92, 0xda, 0xd3, 0xbf,
    +	0x2f, 0xa1, 0x65, 0xd5, 0x12, 0xa7, 0x50, 0xea, 0xdd, 0x5c, 0xa9, 0x2f, 0x15, 0x1b, 0x8f, 0x79,
    +	0x85, 0xc6, 0x1d, 0x74, 0x26, 0x14, 0x54, 0x8c, 0x42, 0x39, 0xa3, 0x05, 0x5a, 0x47, 0xd9, 0x93,
    +	0x3a, 0xcd, 0x73, 0xca, 0xe2, 0x99, 0xe8, 0x9b, 0x28, 0x5b, 0xfa, 0x77, 0x25, 0x74, 0x2e, 0x3f,
    +	0x98, 0xf8, 0x0d, 0x54, 0x0d, 0x19, 0x3f, 0x74, 0x6c, 0xb6, 0x47, 0x87, 0x4c, 0xed, 0x8d, 0xff,
    +	0x29, 0xfd, 0x6a, 0x3b, 0x65, 0x91, 0xac, 0x1c, 0xee, 0x25, 0x6a, 0x96, 0xcf, 0x85, 0x7a, 0xf4,
    +	0xfc, 0x94, 0xc2, 0x1a, 0x33, 0xa2, 0x35, 0x66, 0xb4, 0x3c, 0xb1, 0xcf, 0xdb, 0x82, 0x3b, 0x5e,
    +	0x6f, 0xca, 0x11, 0x18, 0x23, 0x59, 0xcb, 0xf8, 0x63, 0x54, 0xe1, 0x2c, 0xf4, 0x47, 0xdc, 0x66,
    +	0x2a, 0x15, 0xb9, 0xcd, 0x03, 0xfb, 0x1e, 0xca, 0x04, 0x4b, 0xaa, 0xbb, 0xeb, 0xdb, 0xd4, 0x8d,
    +	0x8a, 0x93, 0xf6, 0xc7, 0x2a, 0xb4, 0x36, 0x51, 0x26, 0x48, 0x62, 0x0c, 0xb6, 0xe7, 0xaa, 0xca,
    +	0xc5, 0x8e, 0x4b, 0x4f, 0xa5, 0x45, 0x3e, 0xc8, 0xb5, 0x88, 0x59, 0xac, 0xa4, 0x32, 0xb8, 0xb9,
    +	0x0b, 0xe1, 0x0f, 0x0d, 0xad, 0x67, 0x05, 0x4f, 0x61, 0x27, 0x58, 0xf9, 0x9d, 0x70, 0xf9, 0x04,
    +	0xcf, 0x98, 0xb3, 0x16, 0xfe, 0xd2, 0x50, 0x23, 0x2b, 0x66, 0x51, 0x4e, 0x87, 0x4c, 0x30, 0x1e,
    +	0x26, 0x65, 0xc4, 0x5b, 0xa8, 0x42, 0xad, 0xd6, 0xfb, 0xdc, 0x1f, 0x05, 0xf1, 0x71, 0x83, 0xf8,
    +	0x6e, 0x2b, 0x1a, 0x49, 0xb8, 0x70, 0x02, 0x07, 0x8e, 0xba, 0x53, 0x99, 0x13, 0x78, 0xd7, 0xf1,
    +	0xba, 0x44, 0x72, 0x40, 0xc2, 0x83, 0x66, 0x5f, 0xcc, 0x4b, 0xc8, 0x2e, 0x97, 0x1c, 0xdc, 0x40,
    +	0xe5, 0xd0, 0xf6, 0x03, 0x56, 0x5b, 0x92, 0x22, 0x2b, 0x10, 0x72, 0x1b, 0x08, 0x24, 0xa2, 0xe3,
    +	0xcb, 0x68, 0x05, 0x04, 0xc3, 0x80, 0xda, 0xac, 0x56, 0x96, 0x42, 0x72, 0x11, 0xed, 0xc5, 0x44,
    +	0x92, 0xf2, 0xf5, 0x5f, 0x26, 0x8a, 0x24, 0x57, 0xdf, 0x36, 0x42, 0xb6, 0xef, 0x09, 0xee, 0xbb,
    +	0x2e, 0xe3, 0xea, 0x49, 0x49, 0xfb, 0xec, 0x24, 0x1c, 0x92, 0x91, 0xc2, 0x1e, 0x42, 0x41, 0x92,
    +	0x1b, 0xd5, 0x46, 0x6f, 0x9f, 0x20, 0xff, 0x33, 0x12, 0xdb, 0x3c, 0x07, 0xfe, 0x32, 0x8c, 0x8c,
    +	0x07, 0xfd, 0x37, 0x0d, 0x55, 0x95, 0xfe, 0x29, 0x34, 0xd6, 0xdd, 0x7c, 0x63, 0xbd, 0x56, 0x10,
    +	0x61, 0xcc, 0xee, 0xa9, 0x47, 0x1a, 0xda, 0x88, 0x43, 0xf7, 0x69, 0xb7, 0x49, 0x5d, 0xea, 0xd9,
    +	0x8c, 0xc7, 0xf7, 0x60, 0x03, 0x95, 0x9c, 0xb8, 0x91, 0x90, 0x32, 0x50, 0x6a, 0x59, 0xa4, 0xe4,
    +	0x04, 0xf8, 0x0a, 0xaa, 0xf4, 0xfd, 0x50, 0xc8, 0x16, 0x89, 0x9a, 0x28, 0x89, 0xfa, 0x8e, 0xa2,
    +	0x93, 0x44, 0x02, 0x7f, 0x88, 0xca, 0x81, 0xcf, 0x45, 0x58, 0x5b, 0x92, 0x51, 0x5f, 0x2b, 0x16,
    +	0x35, 0xec, 0x36, 0xb5, 0xac, 0x53, 0xa4, 0x02, 0x66, 0x48, 0x64, 0x4d, 0xff, 0x46, 0x43, 0xff,
    +	0x9f, 0x11, 0x7f, 0xa4, 0x83, 0xbb, 0x68, 0xd9, 0x89, 0x98, 0x0a, 0x1e, 0xbd, 0x55, 0xcc, 0xed,
    +	0x8c, 0x54, 0xa4, 0xd0, 0x2c, 0x86, 0x60, 0xb1, 0x69, 0xfd, 0x27, 0x0d, 0x9d, 0x9f, 0x8a, 0x57,
    +	0x42, 0x4c, 0xd8, 0xf9, 0x90, 0xbc, 0x72, 0x06, 0x62, 0xc2, 0xea, 0x96, 0x1c, 0x7c, 0x17, 0x55,
    +	0x24, 0x42, 0xb5, 0x7d, 0x57, 0x25, 0xd0, 0x8c, 0x13, 0x68, 0x29, 0xfa, 0x8b, 0xa3, 0xc6, 0x2b,
    +	0xd3, 0xb0, 0xdd, 0x88, 0xd9, 0x24, 0x31, 0x00, 0xa3, 0xc8, 0x38, 0xf7, 0xb9, 0x9a, 0x56, 0x39,
    +	0x8a, 0xef, 0x01, 0x81, 0x44, 0x74, 0xfd, 0xe7, 0xb4, 0x49, 0x01, 0x3d, 0x42, 0x7c, 0x50, 0x9c,
    +	0x49, 0x08, 0x0c, 0xa5, 0x23, 0x92, 0x83, 0x47, 0x68, 0xdd, 0x99, 0x80, 0x9b, 0x27, 0xdb, 0xc9,
    +	0x89, 0x5a, 0xb3, 0xa6, 0xcc, 0xaf, 0x4f, 0x72, 0xc8, 0x94, 0x0b, 0x9d, 0xa1, 0x29, 0x29, 0x38,
    +	0x09, 0x7d, 0x21, 0x02, 0x35, 0x4d, 0x37, 0x8a, 0x83, 0xdc, 0x34, 0x84, 0x8a, 0x7c, 0x5d, 0xa7,
    +	0x63, 0x11, 0x69, 0x4a, 0x7f, 0x5c, 0x4a, 0xf2, 0x21, 0x17, 0xcd, 0x3b, 0xc9, 0x6b, 0xe5, 0x0e,
    +	0x90, 0x67, 0x3e, 0x5a, 0x6b, 0x17, 0x32, 0x81, 0x27, 0x3c, 0x32, 0x25, 0x8d, 0x3b, 0x29, 0xf8,
    +	0xd7, 0xfe, 0x0b, 0xf8, 0xaf, 0xce, 0x02, 0xfe, 0xf8, 0x0e, 0x5a, 0x14, 0x6e, 0x3c, 0xec, 0xaf,
    +	0x17, 0xb3, 0xd8, 0xd9, 0x6d, 0x37, 0xab, 0x2a, 0xe5, 0x8b, 0x9d, 0xdd, 0x36, 0x01, 0x13, 0x78,
    +	0x1f, 0x95, 0xf9, 0xc8, 0x65, 0x80, 0x95, 0x16, 0x8b, 0x63, 0x2f, 0xc8, 0x60, 0x3a, 0x7c, 0xf0,
    +	0x15, 0x92, 0xc8, 0x8e, 0xfe, 0x2d, 0xc0, 0xec, 0x2c, 0xa2, 0xc2, 0x1c, 0xad, 0xba, 0x99, 0xd9,
    +	0x51, 0x79, 0xb8, 0x75, 0xf2, 0xa9, 0x53, 0x43, 0x7f, 0x41, 0xf9, 0x5d, 0xcd, 0xf2, 0x48, 0xce,
    +	0x87, 0x4e, 0x11, 0x4a, 0x9f, 0x0d, 0x73, 0x00, 0xcd, 0x1b, 0x0d, 0xbc, 0x9a, 0x03, 0xe8, 0xe9,
    +	0x90, 0x44, 0x74, 0x38, 0x28, 0x21, 0xb3, 0x39, 0x13, 0x7b, 0xe9, 0xe2, 0x4a, 0x0e, 0x4a, 0x3b,
    +	0xe1, 0x90, 0x8c, 0x94, 0xfe, 0xab, 0x86, 0xd6, 0x26, 0x00, 0x35, 0x7e, 0x15, 0x95, 0x7b, 0x99,
    +	0x33, 0x9b, 0x64, 0x28, 0xba, 0xb3, 0x11, 0x0f, 0x76, 0x64, 0x02, 0xcb, 0x26, 0x76, 0xe4, 0x34,
    +	0xd6, 0xc2, 0x66, 0xf6, 0x5a, 0x46, 0x73, 0x7c, 0x5e, 0x89, 0xcf, 0xbc, 0x98, 0xc9, 0x85, 0x5e,
    +	0x9a, 0x77, 0xa1, 0xf5, 0x1f, 0x4b, 0x28, 0x06, 0x8d, 0x3b, 0xad, 0x77, 0xc9, 0x29, 0xa0, 0x37,
    +	0x2b, 0x87, 0xde, 0x8e, 0xfb, 0x6f, 0x4a, 0x26, 0xb6, 0xb9, 0x20, 0xff, 0xfe, 0x04, 0xc8, 0xbf,
    +	0x76, 0x02, 0x9b, 0x2f, 0x07, 0xfa, 0x8f, 0x35, 0xb4, 0x96, 0x91, 0x3e, 0x85, 0xe3, 0xbd, 0x9f,
    +	0x3f, 0xde, 0x97, 0x8a, 0x3f, 0x65, 0xce, 0x01, 0xdf, 0xce, 0xbd, 0x40, 0x6e, 0xb2, 0x06, 0x2a,
    +	0xdb, 0x4e, 0x97, 0xe7, 0x46, 0x00, 0x98, 0x21, 0x89, 0xe8, 0xfa, 0x57, 0xe8, 0xfc, 0x54, 0x8e,
    +	0xb0, 0x2d, 0x81, 0x56, 0xd7, 0x11, 0x8e, 0xef, 0xc5, 0xe7, 0xd2, 0x2c, 0xf6, 0xf2, 0x9d, 0x58,
    +	0x2f, 0x87, 0xcc, 0x94, 0x29, 0x92, 0x31, 0xdb, 0xdc, 0x79, 0xf2, 0xbc, 0xbe, 0xf0, 0xf4, 0x79,
    +	0x7d, 0xe1, 0xd9, 0xf3, 0xfa, 0xc2, 0xd7, 0xe3, 0xba, 0xf6, 0x64, 0x5c, 0xd7, 0x9e, 0x8e, 0xeb,
    +	0xda, 0xb3, 0x71, 0x5d, 0xfb, 0x7b, 0x5c, 0xd7, 0x7e, 0xf8, 0xa7, 0xbe, 0xf0, 0xc9, 0xc5, 0x97,
    +	0xfe, 0x99, 0xec, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb7, 0xc2, 0xa4, 0xff, 0x46, 0x13, 0x00,
    +	0x00,
     }
     
     func (m *HTTPIngressPath) Marshal() (dAtA []byte, err error) {
    @@ -709,6 +956,131 @@ func (m *HTTPIngressRuleValue) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *IPAddress) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *IPAddress) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *IPAddress) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *IPAddressList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *IPAddressList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *IPAddressList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *IPAddressSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *IPAddressSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *IPAddressSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.ParentRef != nil {
    +		{
    +			size, err := m.ParentRef.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *Ingress) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -1378,16 +1750,228 @@ func (m *IngressTLS) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    -func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    -	offset -= sovGenerated(v)
    -	base := offset
    -	for v >= 1<<7 {
    -		dAtA[offset] = uint8(v&0x7f | 0x80)
    -		v >>= 7
    -		offset++
    +func (m *ParentReference) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	dAtA[offset] = uint8(v)
    -	return base
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ParentReference) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ParentReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0x22
    +	i -= len(m.Namespace)
    +	copy(dAtA[i:], m.Namespace)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Resource)
    +	copy(dAtA[i:], m.Resource)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Group)
    +	copy(dAtA[i:], m.Group)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ServiceCIDR) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ServiceCIDR) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ServiceCIDR) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ServiceCIDRList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ServiceCIDRList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ServiceCIDRList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ServiceCIDRSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ServiceCIDRSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ServiceCIDRSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.CIDRs) > 0 {
    +		for iNdEx := len(m.CIDRs) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.CIDRs[iNdEx])
    +			copy(dAtA[i:], m.CIDRs[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.CIDRs[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ServiceCIDRStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ServiceCIDRStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ServiceCIDRStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Conditions) > 0 {
    +		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
    +	}
    +	dAtA[offset] = uint8(v)
    +	return base
     }
     func (m *HTTPIngressPath) Size() (n int) {
     	if m == nil {
    @@ -1421,6 +2005,49 @@ func (m *HTTPIngressRuleValue) Size() (n int) {
     	return n
     }
     
    +func (m *IPAddress) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *IPAddressList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *IPAddressSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.ParentRef != nil {
    +		l = m.ParentRef.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
     func (m *Ingress) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -1673,31 +2300,110 @@ func (m *IngressTLS) Size() (n int) {
     	return n
     }
     
    -func sovGenerated(x uint64) (n int) {
    -	return (math_bits.Len64(x|1) + 6) / 7
    -}
    -func sozGenerated(x uint64) (n int) {
    -	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    -}
    -func (this *HTTPIngressPath) String() string {
    -	if this == nil {
    -		return "nil"
    +func (m *ParentReference) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&HTTPIngressPath{`,
    -		`Path:` + fmt.Sprintf("%v", this.Path) + `,`,
    -		`Backend:` + strings.Replace(strings.Replace(this.Backend.String(), "IngressBackend", "IngressBackend", 1), `&`, ``, 1) + `,`,
    -		`PathType:` + valueToStringGenerated(this.PathType) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = len(m.Group)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Resource)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Namespace)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *HTTPIngressRuleValue) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ServiceCIDR) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForPaths := "[]HTTPIngressPath{"
    -	for _, f := range this.Paths {
    -		repeatedStringForPaths += strings.Replace(strings.Replace(f.String(), "HTTPIngressPath", "HTTPIngressPath", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Status.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ServiceCIDRList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ServiceCIDRSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.CIDRs) > 0 {
    +		for _, s := range m.CIDRs {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ServiceCIDRStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Conditions) > 0 {
    +		for _, e := range m.Conditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *HTTPIngressPath) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&HTTPIngressPath{`,
    +		`Path:` + fmt.Sprintf("%v", this.Path) + `,`,
    +		`Backend:` + strings.Replace(strings.Replace(this.Backend.String(), "IngressBackend", "IngressBackend", 1), `&`, ``, 1) + `,`,
    +		`PathType:` + valueToStringGenerated(this.PathType) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *HTTPIngressRuleValue) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForPaths := "[]HTTPIngressPath{"
    +	for _, f := range this.Paths {
    +		repeatedStringForPaths += strings.Replace(strings.Replace(f.String(), "HTTPIngressPath", "HTTPIngressPath", 1), `&`, ``, 1) + ","
     	}
     	repeatedStringForPaths += "}"
     	s := strings.Join([]string{`&HTTPIngressRuleValue{`,
    @@ -1706,6 +2412,43 @@ func (this *HTTPIngressRuleValue) String() string {
     	}, "")
     	return s
     }
    +func (this *IPAddress) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&IPAddress{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "IPAddressSpec", "IPAddressSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *IPAddressList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]IPAddress{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "IPAddress", "IPAddress", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&IPAddressList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *IPAddressSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&IPAddressSpec{`,
    +		`ParentRef:` + strings.Replace(this.ParentRef.String(), "ParentReference", "ParentReference", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *Ingress) String() string {
     	if this == nil {
     		return "nil"
    @@ -1900,22 +2643,1172 @@ func (this *IngressTLS) String() string {
     	if this == nil {
     		return "nil"
     	}
    -	s := strings.Join([]string{`&IngressTLS{`,
    -		`Hosts:` + fmt.Sprintf("%v", this.Hosts) + `,`,
    -		`SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func valueToStringGenerated(v interface{}) string {
    -	rv := reflect.ValueOf(v)
    -	if rv.IsNil() {
    -		return "nil"
    +	s := strings.Join([]string{`&IngressTLS{`,
    +		`Hosts:` + fmt.Sprintf("%v", this.Hosts) + `,`,
    +		`SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ParentReference) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ParentReference{`,
    +		`Group:` + fmt.Sprintf("%v", this.Group) + `,`,
    +		`Resource:` + fmt.Sprintf("%v", this.Resource) + `,`,
    +		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ServiceCIDR) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ServiceCIDR{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ServiceCIDRSpec", "ServiceCIDRSpec", 1), `&`, ``, 1) + `,`,
    +		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ServiceCIDRStatus", "ServiceCIDRStatus", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ServiceCIDRList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ServiceCIDR{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ServiceCIDR", "ServiceCIDR", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ServiceCIDRList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ServiceCIDRSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ServiceCIDRSpec{`,
    +		`CIDRs:` + fmt.Sprintf("%v", this.CIDRs) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ServiceCIDRStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForConditions := "[]Condition{"
    +	for _, f := range this.Conditions {
    +		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForConditions += "}"
    +	s := strings.Join([]string{`&ServiceCIDRStatus{`,
    +		`Conditions:` + repeatedStringForConditions + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *HTTPIngressPath) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: HTTPIngressPath: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: HTTPIngressPath: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Path = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PathType", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := PathType(dAtA[iNdEx:postIndex])
    +			m.PathType = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *HTTPIngressRuleValue) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: HTTPIngressRuleValue: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: HTTPIngressRuleValue: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Paths", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Paths = append(m.Paths, HTTPIngressPath{})
    +			if err := m.Paths[len(m.Paths)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *IPAddress) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: IPAddress: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: IPAddress: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *IPAddressList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: IPAddressList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: IPAddressList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, IPAddress{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *IPAddressSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: IPAddressSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: IPAddressSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ParentRef", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ParentRef == nil {
    +				m.ParentRef = &ParentReference{}
    +			}
    +			if err := m.ParentRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *Ingress) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: Ingress: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: Ingress: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *IngressBackend) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: IngressBackend: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: IngressBackend: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ServiceName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ServiceName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ServicePort", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ServicePort.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Resource == nil {
    +				m.Resource = &v11.TypedLocalObjectReference{}
    +			}
    +			if err := m.Resource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *IngressClass) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: IngressClass: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: IngressClass: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *IngressClassList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: IngressClassList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: IngressClassList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, IngressClass{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
     	}
    -	pv := reflect.Indirect(rv).Interface()
    -	return fmt.Sprintf("*%v", pv)
    +	return nil
     }
    -func (m *HTTPIngressPath) Unmarshal(dAtA []byte) error {
    +func (m *IngressClassParametersReference) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -1938,15 +3831,15 @@ func (m *HTTPIngressPath) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: HTTPIngressPath: wiretype end group for non-group")
    +			return fmt.Errorf("proto: IngressClassParametersReference: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: HTTPIngressPath: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: IngressClassParametersReference: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -1974,13 +3867,14 @@ func (m *HTTPIngressPath) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Path = string(dAtA[iNdEx:postIndex])
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.APIGroup = &s
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -1990,28 +3884,27 @@ func (m *HTTPIngressPath) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.Kind = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field PathType", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -2039,64 +3932,46 @@ func (m *HTTPIngressPath) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := PathType(dAtA[iNdEx:postIndex])
    -			m.PathType = &s
    +			m.Name = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType)
     			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
     			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
     			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *HTTPIngressRuleValue) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
     			}
    -			if iNdEx >= l {
    +			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: HTTPIngressRuleValue: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: HTTPIngressRuleValue: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.Scope = &s
    +			iNdEx = postIndex
    +		case 5:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Paths", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2106,25 +3981,24 @@ func (m *HTTPIngressRuleValue) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Paths = append(m.Paths, HTTPIngressPath{})
    -			if err := m.Paths[len(m.Paths)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.Namespace = &s
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -2147,7 +4021,7 @@ func (m *HTTPIngressRuleValue) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *Ingress) Unmarshal(dAtA []byte) error {
    +func (m *IngressClassSpec) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2170,17 +4044,17 @@ func (m *Ingress) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: Ingress: wiretype end group for non-group")
    +			return fmt.Errorf("proto: IngressClassSpec: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: Ingress: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: IngressClassSpec: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2190,28 +4064,27 @@ func (m *Ingress) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.Controller = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2238,40 +4111,10 @@ func (m *Ingress) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    +			if m.Parameters == nil {
    +				m.Parameters = &IngressClassParametersReference{}
     			}
    -			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.Parameters.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -2296,7 +4139,7 @@ func (m *Ingress) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressBackend) Unmarshal(dAtA []byte) error {
    +func (m *IngressList) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2319,47 +4162,15 @@ func (m *IngressBackend) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressBackend: wiretype end group for non-group")
    +			return fmt.Errorf("proto: IngressList: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressBackend: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: IngressList: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ServiceName", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.ServiceName = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ServicePort", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2386,13 +4197,13 @@ func (m *IngressBackend) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.ServicePort.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 3:
    +		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2419,10 +4230,8 @@ func (m *IngressBackend) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.Resource == nil {
    -				m.Resource = &v11.TypedLocalObjectReference{}
    -			}
    -			if err := m.Resource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Items = append(m.Items, Ingress{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -2447,7 +4256,7 @@ func (m *IngressBackend) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressClass) Unmarshal(dAtA []byte) error {
    +func (m *IngressLoadBalancerIngress) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2470,17 +4279,17 @@ func (m *IngressClass) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressClass: wiretype end group for non-group")
    +			return fmt.Errorf("proto: IngressLoadBalancerIngress: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressClass: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: IngressLoadBalancerIngress: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field IP", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2490,28 +4299,59 @@ func (m *IngressClass) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.IP = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Hostname = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2538,7 +4378,8 @@ func (m *IngressClass) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Ports = append(m.Ports, IngressPortStatus{})
    +			if err := m.Ports[len(m.Ports)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -2563,7 +4404,7 @@ func (m *IngressClass) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressClassList) Unmarshal(dAtA []byte) error {
    +func (m *IngressLoadBalancerStatus) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2586,48 +4427,15 @@ func (m *IngressClassList) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressClassList: wiretype end group for non-group")
    +			return fmt.Errorf("proto: IngressLoadBalancerStatus: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressClassList: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: IngressLoadBalancerStatus: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Ingress", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2654,8 +4462,8 @@ func (m *IngressClassList) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Items = append(m.Items, IngressClass{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Ingress = append(m.Ingress, IngressLoadBalancerIngress{})
    +			if err := m.Ingress[len(m.Ingress)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -2680,7 +4488,7 @@ func (m *IngressClassList) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressClassParametersReference) Unmarshal(dAtA []byte) error {
    +func (m *IngressPortStatus) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2703,17 +4511,17 @@ func (m *IngressClassParametersReference) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressClassParametersReference: wiretype end group for non-group")
    +			return fmt.Errorf("proto: IngressPortStatus: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressClassParametersReference: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: IngressPortStatus: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType)
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
     			}
    -			var stringLen uint64
    +			m.Port = 0
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2723,28 +4531,14 @@ func (m *IngressClassParametersReference) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				m.Port |= int32(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			s := string(dAtA[iNdEx:postIndex])
    -			m.APIGroup = &s
    -			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -2772,11 +4566,11 @@ func (m *IngressClassParametersReference) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Kind = string(dAtA[iNdEx:postIndex])
    +			m.Protocol = k8s_io_api_core_v1.Protocol(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -2804,11 +4598,62 @@ func (m *IngressClassParametersReference) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.Error = &s
     			iNdEx = postIndex
    -		case 4:
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *IngressRule) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: IngressRule: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: IngressRule: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -2836,14 +4681,13 @@ func (m *IngressClassParametersReference) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := string(dAtA[iNdEx:postIndex])
    -			m.Scope = &s
    +			m.Host = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    -		case 5:
    +		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field IngressRuleValue", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -2853,24 +4697,24 @@ func (m *IngressClassParametersReference) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := string(dAtA[iNdEx:postIndex])
    -			m.Namespace = &s
    +			if err := m.IngressRuleValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -2893,7 +4737,7 @@ func (m *IngressClassParametersReference) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressClassSpec) Unmarshal(dAtA []byte) error {
    +func (m *IngressRuleValue) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -2912,51 +4756,19 @@ func (m *IngressClassSpec) Unmarshal(dAtA []byte) error {
     			if b < 0x80 {
     				break
     			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressClassSpec: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressClassSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Controller = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: IngressRuleValue: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: IngressRuleValue: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field HTTP", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -2983,10 +4795,10 @@ func (m *IngressClassSpec) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.Parameters == nil {
    -				m.Parameters = &IngressClassParametersReference{}
    +			if m.HTTP == nil {
    +				m.HTTP = &HTTPIngressRuleValue{}
     			}
    -			if err := m.Parameters.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.HTTP.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -3011,7 +4823,7 @@ func (m *IngressClassSpec) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressList) Unmarshal(dAtA []byte) error {
    +func (m *IngressSpec) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3034,15 +4846,15 @@ func (m *IngressList) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressList: wiretype end group for non-group")
    +			return fmt.Errorf("proto: IngressSpec: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressList: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: IngressSpec: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3069,13 +4881,16 @@ func (m *IngressList) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if m.Backend == nil {
    +				m.Backend = &IngressBackend{}
    +			}
    +			if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field TLS", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3102,66 +4917,16 @@ func (m *IngressList) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Items = append(m.Items, Ingress{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.TLS = append(m.TLS, IngressTLS{})
    +			if err := m.TLS[len(m.TLS)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *IngressLoadBalancerIngress) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressLoadBalancerIngress: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressLoadBalancerIngress: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    +		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field IP", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3171,27 +4936,29 @@ func (m *IngressLoadBalancerIngress) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.IP = string(dAtA[iNdEx:postIndex])
    +			m.Rules = append(m.Rules, IngressRule{})
    +			if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
    -		case 2:
    +		case 4:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field IngressClassName", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -3219,11 +4986,62 @@ func (m *IngressLoadBalancerIngress) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Hostname = string(dAtA[iNdEx:postIndex])
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.IngressClassName = &s
     			iNdEx = postIndex
    -		case 4:
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *IngressStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: IngressStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: IngressStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancer", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3250,8 +5068,7 @@ func (m *IngressLoadBalancerIngress) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Ports = append(m.Ports, IngressPortStatus{})
    -			if err := m.Ports[len(m.Ports)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.LoadBalancer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -3276,7 +5093,7 @@ func (m *IngressLoadBalancerIngress) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressLoadBalancerStatus) Unmarshal(dAtA []byte) error {
    +func (m *IngressTLS) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3299,17 +5116,17 @@ func (m *IngressLoadBalancerStatus) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressLoadBalancerStatus: wiretype end group for non-group")
    +			return fmt.Errorf("proto: IngressTLS: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressLoadBalancerStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: IngressTLS: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Ingress", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Hosts", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3319,25 +5136,55 @@ func (m *IngressLoadBalancerStatus) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Ingress = append(m.Ingress, IngressLoadBalancerIngress{})
    -			if err := m.Ingress[len(m.Ingress)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    +			m.Hosts = append(m.Hosts, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SecretName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
     			}
    +			m.SecretName = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -3360,7 +5207,7 @@ func (m *IngressLoadBalancerStatus) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressPortStatus) Unmarshal(dAtA []byte) error {
    +func (m *ParentReference) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3383,17 +5230,49 @@ func (m *IngressPortStatus) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressPortStatus: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ParentReference: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressPortStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ParentReference: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Group = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
     			}
    -			m.Port = 0
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3403,14 +5282,27 @@ func (m *IngressPortStatus) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				m.Port |= int32(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -		case 2:
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Resource = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -3438,11 +5330,11 @@ func (m *IngressPortStatus) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Protocol = k8s_io_api_core_v1.Protocol(dAtA[iNdEx:postIndex])
    +			m.Namespace = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    -		case 3:
    +		case 4:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -3470,8 +5362,7 @@ func (m *IngressPortStatus) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := string(dAtA[iNdEx:postIndex])
    -			m.Error = &s
    +			m.Name = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -3494,7 +5385,7 @@ func (m *IngressPortStatus) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressRule) Unmarshal(dAtA []byte) error {
    +func (m *ServiceCIDR) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3517,17 +5408,17 @@ func (m *IngressRule) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressRule: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ServiceCIDR: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressRule: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ServiceCIDR: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3537,27 +5428,28 @@ func (m *IngressRule) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Host = string(dAtA[iNdEx:postIndex])
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field IngressRuleValue", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3584,63 +5476,13 @@ func (m *IngressRule) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.IngressRuleValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *IngressRuleValue) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressRuleValue: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressRuleValue: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    +		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field HTTP", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3667,10 +5509,7 @@ func (m *IngressRuleValue) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.HTTP == nil {
    -				m.HTTP = &HTTPIngressRuleValue{}
    -			}
    -			if err := m.HTTP.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -3695,7 +5534,7 @@ func (m *IngressRuleValue) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressSpec) Unmarshal(dAtA []byte) error {
    +func (m *ServiceCIDRList) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3718,15 +5557,15 @@ func (m *IngressSpec) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressSpec: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ServiceCIDRList: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ServiceCIDRList: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3753,50 +5592,13 @@ func (m *IngressSpec) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.Backend == nil {
    -				m.Backend = &IngressBackend{}
    -			}
    -			if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field TLS", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.TLS = append(m.TLS, IngressTLS{})
    -			if err := m.TLS[len(m.TLS)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3823,44 +5625,11 @@ func (m *IngressSpec) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Rules = append(m.Rules, IngressRule{})
    -			if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Items = append(m.Items, ServiceCIDR{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 4:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field IngressClassName", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			s := string(dAtA[iNdEx:postIndex])
    -			m.IngressClassName = &s
    -			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -3882,7 +5651,7 @@ func (m *IngressSpec) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressStatus) Unmarshal(dAtA []byte) error {
    +func (m *ServiceCIDRSpec) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3905,17 +5674,17 @@ func (m *IngressStatus) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressStatus: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ServiceCIDRSpec: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ServiceCIDRSpec: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancer", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field CIDRs", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3925,24 +5694,23 @@ func (m *IngressStatus) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.LoadBalancer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.CIDRs = append(m.CIDRs, string(dAtA[iNdEx:postIndex]))
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -3965,7 +5733,7 @@ func (m *IngressStatus) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *IngressTLS) Unmarshal(dAtA []byte) error {
    +func (m *ServiceCIDRStatus) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3988,17 +5756,17 @@ func (m *IngressTLS) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: IngressTLS: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ServiceCIDRStatus: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IngressTLS: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ServiceCIDRStatus: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Hosts", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -4008,55 +5776,25 @@ func (m *IngressTLS) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Hosts = append(m.Hosts, string(dAtA[iNdEx:postIndex]))
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field SecretName", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    +			m.Conditions = append(m.Conditions, v1.Condition{})
    +			if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
     			}
    -			m.SecretName = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    diff --git a/vendor/k8s.io/api/networking/v1beta1/generated.proto b/vendor/k8s.io/api/networking/v1beta1/generated.proto
    index 46bb7f66f22f..3368dcaec3f5 100644
    --- a/vendor/k8s.io/api/networking/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/networking/v1beta1/generated.proto
    @@ -69,9 +69,48 @@ message HTTPIngressPath {
     // or '#'.
     message HTTPIngressRuleValue {
       // paths is a collection of paths that map requests to backends.
    +  // +listType=atomic
       repeated HTTPIngressPath paths = 1;
     }
     
    +// IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs
    +// that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses.
    +// An IP address can be represented in different formats, to guarantee the uniqueness of the IP,
    +// the name of the object is the IP address in canonical format, four decimal digits separated
    +// by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6.
    +// Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1
    +// Invalid: 10.01.2.3 or 2001:db8:0:0:0::1
    +message IPAddress {
    +  // Standard object's metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // spec is the desired state of the IPAddress.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    +  // +optional
    +  optional IPAddressSpec spec = 2;
    +}
    +
    +// IPAddressList contains a list of IPAddress.
    +message IPAddressList {
    +  // Standard object's metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // items is the list of IPAddresses.
    +  repeated IPAddress items = 2;
    +}
    +
    +// IPAddressSpec describe the attributes in an IP Address.
    +message IPAddressSpec {
    +  // ParentRef references the resource that an IPAddress is attached to.
    +  // An IPAddress must reference a parent object.
    +  // +required
    +  optional ParentReference parentRef = 1;
    +}
    +
     // Ingress is a collection of rules that allow inbound connections to reach the
     // endpoints defined by a backend. An Ingress can be configured to give services
     // externally-reachable urls, load balance traffic, terminate SSL, offer name
    @@ -80,7 +119,7 @@ message Ingress {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the desired state of the Ingress.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -101,13 +140,13 @@ message IngressBackend {
     
       // servicePort Specifies the port of the referenced service.
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString servicePort = 2;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString servicePort = 2;
     
       // resource is an ObjectRef to another Kubernetes resource in the namespace
       // of the Ingress object. If resource is specified, serviceName and servicePort
       // must not be specified.
       // +optional
    -  optional k8s.io.api.core.v1.TypedLocalObjectReference resource = 3;
    +  optional .k8s.io.api.core.v1.TypedLocalObjectReference resource = 3;
     }
     
     // IngressClass represents the class of the Ingress, referenced by the Ingress
    @@ -119,7 +158,7 @@ message IngressClass {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the desired state of the IngressClass.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -131,7 +170,7 @@ message IngressClass {
     message IngressClassList {
       // Standard list metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of IngressClasses.
       repeated IngressClass items = 2;
    @@ -185,7 +224,7 @@ message IngressList {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of Ingress.
       repeated Ingress items = 2;
    @@ -211,6 +250,7 @@ message IngressLoadBalancerIngress {
     message IngressLoadBalancerStatus {
       // ingress is a list containing ingress points for the load-balancer.
       // +optional
    +  // +listType=atomic
       repeated IngressLoadBalancerIngress ingress = 1;
     }
     
    @@ -313,11 +353,13 @@ message IngressSpec {
       // through the SNI TLS extension, if the ingress controller fulfilling the
       // ingress supports SNI.
       // +optional
    +  // +listType=atomic
       repeated IngressTLS tls = 2;
     
       // rules is a list of host rules used to configure the Ingress. If unspecified, or
       // no rule matches, all traffic is sent to the default backend.
       // +optional
    +  // +listType=atomic
       repeated IngressRule rules = 3;
     }
     
    @@ -335,6 +377,7 @@ message IngressTLS {
       // wildcard host setting for the loadbalancer controller fulfilling this
       // Ingress, if left unspecified.
       // +optional
    +  // +listType=atomic
       repeated string hosts = 1;
     
       // secretName is the name of the secret used to terminate TLS traffic on
    @@ -346,3 +389,74 @@ message IngressTLS {
       optional string secretName = 2;
     }
     
    +// ParentReference describes a reference to a parent object.
    +message ParentReference {
    +  // Group is the group of the object being referenced.
    +  // +optional
    +  optional string group = 1;
    +
    +  // Resource is the resource of the object being referenced.
    +  // +required
    +  optional string resource = 2;
    +
    +  // Namespace is the namespace of the object being referenced.
    +  // +optional
    +  optional string namespace = 3;
    +
    +  // Name is the name of the object being referenced.
    +  // +required
    +  optional string name = 4;
    +}
    +
    +// ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64).
    +// This range is used to allocate ClusterIPs to Service objects.
    +message ServiceCIDR {
    +  // Standard object's metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // spec is the desired state of the ServiceCIDR.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    +  // +optional
    +  optional ServiceCIDRSpec spec = 2;
    +
    +  // status represents the current state of the ServiceCIDR.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    +  // +optional
    +  optional ServiceCIDRStatus status = 3;
    +}
    +
    +// ServiceCIDRList contains a list of ServiceCIDR objects.
    +message ServiceCIDRList {
    +  // Standard object's metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // items is the list of ServiceCIDRs.
    +  repeated ServiceCIDR items = 2;
    +}
    +
    +// ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services.
    +message ServiceCIDRSpec {
    +  // CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64")
    +  // from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family.
    +  // This field is immutable.
    +  // +optional
    +  // +listType=atomic
    +  repeated string cidrs = 1;
    +}
    +
    +// ServiceCIDRStatus describes the current state of the ServiceCIDR.
    +message ServiceCIDRStatus {
    +  // conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR.
    +  // Current service state
    +  // +optional
    +  // +patchMergeKey=type
    +  // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1;
    +}
    +
    diff --git a/vendor/k8s.io/api/networking/v1beta1/register.go b/vendor/k8s.io/api/networking/v1beta1/register.go
    index 04234953e615..9d2a13cc6837 100644
    --- a/vendor/k8s.io/api/networking/v1beta1/register.go
    +++ b/vendor/k8s.io/api/networking/v1beta1/register.go
    @@ -51,6 +51,10 @@ func addKnownTypes(scheme *runtime.Scheme) error {
     		&IngressList{},
     		&IngressClass{},
     		&IngressClassList{},
    +		&IPAddress{},
    +		&IPAddressList{},
    +		&ServiceCIDR{},
    +		&ServiceCIDRList{},
     	)
     	// Add the watch version that applies
     	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
    diff --git a/vendor/k8s.io/api/networking/v1beta1/types.go b/vendor/k8s.io/api/networking/v1beta1/types.go
    index 87cc91654b83..cd7126a5a8e8 100644
    --- a/vendor/k8s.io/api/networking/v1beta1/types.go
    +++ b/vendor/k8s.io/api/networking/v1beta1/types.go
    @@ -97,11 +97,13 @@ type IngressSpec struct {
     	// through the SNI TLS extension, if the ingress controller fulfilling the
     	// ingress supports SNI.
     	// +optional
    +	// +listType=atomic
     	TLS []IngressTLS `json:"tls,omitempty" protobuf:"bytes,2,rep,name=tls"`
     
     	// rules is a list of host rules used to configure the Ingress. If unspecified, or
     	// no rule matches, all traffic is sent to the default backend.
     	// +optional
    +	// +listType=atomic
     	Rules []IngressRule `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"`
     	// TODO: Add the ability to specify load-balancer IP through claims
     }
    @@ -113,6 +115,7 @@ type IngressTLS struct {
     	// wildcard host setting for the loadbalancer controller fulfilling this
     	// Ingress, if left unspecified.
     	// +optional
    +	// +listType=atomic
     	Hosts []string `json:"hosts,omitempty" protobuf:"bytes,1,rep,name=hosts"`
     
     	// secretName is the name of the secret used to terminate TLS traffic on
    @@ -136,6 +139,7 @@ type IngressStatus struct {
     type IngressLoadBalancerStatus struct {
     	// ingress is a list containing ingress points for the load-balancer.
     	// +optional
    +	// +listType=atomic
     	Ingress []IngressLoadBalancerIngress `json:"ingress,omitempty" protobuf:"bytes,1,rep,name=ingress"`
     }
     
    @@ -214,7 +218,7 @@ type IngressRule struct {
     	// default backend, is left to the controller fulfilling the Ingress. Http is
     	// currently the only supported IngressRuleValue.
     	// +optional
    -	IngressRuleValue `json:",inline,omitempty" protobuf:"bytes,2,opt,name=ingressRuleValue"`
    +	IngressRuleValue `json:",inline" protobuf:"bytes,2,opt,name=ingressRuleValue"`
     }
     
     // IngressRuleValue represents a rule to apply against incoming requests. If the
    @@ -239,6 +243,7 @@ type IngressRuleValue struct {
     // or '#'.
     type HTTPIngressRuleValue struct {
     	// paths is a collection of paths that map requests to backends.
    +	// +listType=atomic
     	Paths []HTTPIngressPath `json:"paths" protobuf:"bytes,1,rep,name=paths"`
     	// TODO: Consider adding fields for ingress-type specific global
     	// options usable by a loadbalancer, like http keep-alive.
    @@ -416,3 +421,133 @@ type IngressClassList struct {
     	// items is the list of IngressClasses.
     	Items []IngressClass `json:"items" protobuf:"bytes,2,rep,name=items"`
     }
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +
    +// IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs
    +// that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses.
    +// An IP address can be represented in different formats, to guarantee the uniqueness of the IP,
    +// the name of the object is the IP address in canonical format, four decimal digits separated
    +// by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6.
    +// Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1
    +// Invalid: 10.01.2.3 or 2001:db8:0:0:0::1
    +type IPAddress struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object's metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// spec is the desired state of the IPAddress.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    +	// +optional
    +	Spec IPAddressSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    +}
    +
    +// IPAddressSpec describe the attributes in an IP Address.
    +type IPAddressSpec struct {
    +	// ParentRef references the resource that an IPAddress is attached to.
    +	// An IPAddress must reference a parent object.
    +	// +required
    +	ParentRef *ParentReference `json:"parentRef,omitempty" protobuf:"bytes,1,opt,name=parentRef"`
    +}
    +
    +// ParentReference describes a reference to a parent object.
    +type ParentReference struct {
    +	// Group is the group of the object being referenced.
    +	// +optional
    +	Group string `json:"group,omitempty" protobuf:"bytes,1,opt,name=group"`
    +	// Resource is the resource of the object being referenced.
    +	// +required
    +	Resource string `json:"resource,omitempty" protobuf:"bytes,2,opt,name=resource"`
    +	// Namespace is the namespace of the object being referenced.
    +	// +optional
    +	Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"`
    +	// Name is the name of the object being referenced.
    +	// +required
    +	Name string `json:"name,omitempty" protobuf:"bytes,4,opt,name=name"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +
    +// IPAddressList contains a list of IPAddress.
    +type IPAddressList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object's metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// items is the list of IPAddresses.
    +	Items []IPAddress `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +
    +// ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64).
    +// This range is used to allocate ClusterIPs to Service objects.
    +type ServiceCIDR struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object's metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// spec is the desired state of the ServiceCIDR.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    +	// +optional
    +	Spec ServiceCIDRSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    +	// status represents the current state of the ServiceCIDR.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    +	// +optional
    +	Status ServiceCIDRStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
    +}
    +
    +// ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services.
    +type ServiceCIDRSpec struct {
    +	// CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64")
    +	// from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family.
    +	// This field is immutable.
    +	// +optional
    +	// +listType=atomic
    +	CIDRs []string `json:"cidrs,omitempty" protobuf:"bytes,1,opt,name=cidrs"`
    +}
    +
    +const (
    +	// ServiceCIDRConditionReady represents status of a ServiceCIDR that is ready to be used by the
    +	// apiserver to allocate ClusterIPs for Services.
    +	ServiceCIDRConditionReady = "Ready"
    +	// ServiceCIDRReasonTerminating represents a reason where a ServiceCIDR is not ready because it is
    +	// being deleted.
    +	ServiceCIDRReasonTerminating = "Terminating"
    +)
    +
    +// ServiceCIDRStatus describes the current state of the ServiceCIDR.
    +type ServiceCIDRStatus struct {
    +	// conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR.
    +	// Current service state
    +	// +optional
    +	// +patchMergeKey=type
    +	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
    +	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +
    +// ServiceCIDRList contains a list of ServiceCIDR objects.
    +type ServiceCIDRList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object's metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// items is the list of ServiceCIDRs.
    +	Items []ServiceCIDR `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    diff --git a/vendor/k8s.io/api/networking/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/networking/v1beta1/types_swagger_doc_generated.go
    index b2373669fecb..9d27517f3b11 100644
    --- a/vendor/k8s.io/api/networking/v1beta1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/networking/v1beta1/types_swagger_doc_generated.go
    @@ -47,6 +47,35 @@ func (HTTPIngressRuleValue) SwaggerDoc() map[string]string {
     	return map_HTTPIngressRuleValue
     }
     
    +var map_IPAddress = map[string]string{
    +	"":         "IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1",
    +	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"spec":     "spec is the desired state of the IPAddress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
    +}
    +
    +func (IPAddress) SwaggerDoc() map[string]string {
    +	return map_IPAddress
    +}
    +
    +var map_IPAddressList = map[string]string{
    +	"":         "IPAddressList contains a list of IPAddress.",
    +	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"items":    "items is the list of IPAddresses.",
    +}
    +
    +func (IPAddressList) SwaggerDoc() map[string]string {
    +	return map_IPAddressList
    +}
    +
    +var map_IPAddressSpec = map[string]string{
    +	"":          "IPAddressSpec describe the attributes in an IP Address.",
    +	"parentRef": "ParentRef references the resource that an IPAddress is attached to. An IPAddress must reference a parent object.",
    +}
    +
    +func (IPAddressSpec) SwaggerDoc() map[string]string {
    +	return map_IPAddressSpec
    +}
    +
     var map_Ingress = map[string]string{
     	"":         "Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.",
     	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    @@ -201,4 +230,55 @@ func (IngressTLS) SwaggerDoc() map[string]string {
     	return map_IngressTLS
     }
     
    +var map_ParentReference = map[string]string{
    +	"":          "ParentReference describes a reference to a parent object.",
    +	"group":     "Group is the group of the object being referenced.",
    +	"resource":  "Resource is the resource of the object being referenced.",
    +	"namespace": "Namespace is the namespace of the object being referenced.",
    +	"name":      "Name is the name of the object being referenced.",
    +}
    +
    +func (ParentReference) SwaggerDoc() map[string]string {
    +	return map_ParentReference
    +}
    +
    +var map_ServiceCIDR = map[string]string{
    +	"":         "ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects.",
    +	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"spec":     "spec is the desired state of the ServiceCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
    +	"status":   "status represents the current state of the ServiceCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
    +}
    +
    +func (ServiceCIDR) SwaggerDoc() map[string]string {
    +	return map_ServiceCIDR
    +}
    +
    +var map_ServiceCIDRList = map[string]string{
    +	"":         "ServiceCIDRList contains a list of ServiceCIDR objects.",
    +	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"items":    "items is the list of ServiceCIDRs.",
    +}
    +
    +func (ServiceCIDRList) SwaggerDoc() map[string]string {
    +	return map_ServiceCIDRList
    +}
    +
    +var map_ServiceCIDRSpec = map[string]string{
    +	"":      "ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services.",
    +	"cidrs": "CIDRs defines the IP blocks in CIDR notation (e.g. \"192.168.0.0/24\" or \"2001:db8::/64\") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. This field is immutable.",
    +}
    +
    +func (ServiceCIDRSpec) SwaggerDoc() map[string]string {
    +	return map_ServiceCIDRSpec
    +}
    +
    +var map_ServiceCIDRStatus = map[string]string{
    +	"":           "ServiceCIDRStatus describes the current state of the ServiceCIDR.",
    +	"conditions": "conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR. Current service state",
    +}
    +
    +func (ServiceCIDRStatus) SwaggerDoc() map[string]string {
    +	return map_ServiceCIDRStatus
    +}
    +
     // AUTO-GENERATED FUNCTIONS END HERE
    diff --git a/vendor/k8s.io/api/networking/v1beta1/well_known_labels.go b/vendor/k8s.io/api/networking/v1beta1/well_known_labels.go
    new file mode 100644
    index 000000000000..bc2207766fd0
    --- /dev/null
    +++ b/vendor/k8s.io/api/networking/v1beta1/well_known_labels.go
    @@ -0,0 +1,33 @@
    +/*
    +Copyright 2023 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1beta1
    +
    +const (
    +
    +	// TODO: Use IPFamily as field with a field selector,And the value is set based on
    +	// the name at create time and immutable.
    +	// LabelIPAddressFamily is used to indicate the IP family of a Kubernetes IPAddress.
    +	// This label simplify dual-stack client operations allowing to obtain the list of
    +	// IP addresses filtered by family.
    +	LabelIPAddressFamily = "ipaddress.kubernetes.io/ip-family"
    +	// LabelManagedBy is used to indicate the controller or entity that manages
    +	// an IPAddress. This label aims to enable different IPAddress
    +	// objects to be managed by different controllers or entities within the
    +	// same cluster. It is highly recommended to configure this label for all
    +	// IPAddress objects.
    +	LabelManagedBy = "ipaddress.kubernetes.io/managed-by"
    +)
    diff --git a/vendor/k8s.io/api/networking/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/networking/v1beta1/zz_generated.deepcopy.go
    index 005d64e7fd4a..1a6869cd6db8 100644
    --- a/vendor/k8s.io/api/networking/v1beta1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/networking/v1beta1/zz_generated.deepcopy.go
    @@ -23,6 +23,7 @@ package v1beta1
     
     import (
     	v1 "k8s.io/api/core/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     )
     
    @@ -71,6 +72,87 @@ func (in *HTTPIngressRuleValue) DeepCopy() *HTTPIngressRuleValue {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *IPAddress) DeepCopyInto(out *IPAddress) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAddress.
    +func (in *IPAddress) DeepCopy() *IPAddress {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(IPAddress)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *IPAddress) 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 *IPAddressList) DeepCopyInto(out *IPAddressList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]IPAddress, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAddressList.
    +func (in *IPAddressList) DeepCopy() *IPAddressList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(IPAddressList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *IPAddressList) 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 *IPAddressSpec) DeepCopyInto(out *IPAddressSpec) {
    +	*out = *in
    +	if in.ParentRef != nil {
    +		in, out := &in.ParentRef, &out.ParentRef
    +		*out = new(ParentReference)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAddressSpec.
    +func (in *IPAddressSpec) DeepCopy() *IPAddressSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(IPAddressSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *Ingress) DeepCopyInto(out *Ingress) {
     	*out = *in
    @@ -448,3 +530,124 @@ func (in *IngressTLS) DeepCopy() *IngressTLS {
     	in.DeepCopyInto(out)
     	return out
     }
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ParentReference) DeepCopyInto(out *ParentReference) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParentReference.
    +func (in *ParentReference) DeepCopy() *ParentReference {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ParentReference)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ServiceCIDR) DeepCopyInto(out *ServiceCIDR) {
    +	*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 ServiceCIDR.
    +func (in *ServiceCIDR) DeepCopy() *ServiceCIDR {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ServiceCIDR)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ServiceCIDR) 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 *ServiceCIDRList) DeepCopyInto(out *ServiceCIDRList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]ServiceCIDR, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceCIDRList.
    +func (in *ServiceCIDRList) DeepCopy() *ServiceCIDRList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ServiceCIDRList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ServiceCIDRList) 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 *ServiceCIDRSpec) DeepCopyInto(out *ServiceCIDRSpec) {
    +	*out = *in
    +	if in.CIDRs != nil {
    +		in, out := &in.CIDRs, &out.CIDRs
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceCIDRSpec.
    +func (in *ServiceCIDRSpec) DeepCopy() *ServiceCIDRSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ServiceCIDRSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ServiceCIDRStatus) DeepCopyInto(out *ServiceCIDRStatus) {
    +	*out = *in
    +	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])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceCIDRStatus.
    +func (in *ServiceCIDRStatus) DeepCopy() *ServiceCIDRStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ServiceCIDRStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    diff --git a/vendor/k8s.io/api/networking/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/networking/v1beta1/zz_generated.prerelease-lifecycle.go
    index e8b4c7ec7ff4..a876fd5fe08c 100644
    --- a/vendor/k8s.io/api/networking/v1beta1/zz_generated.prerelease-lifecycle.go
    +++ b/vendor/k8s.io/api/networking/v1beta1/zz_generated.prerelease-lifecycle.go
    @@ -25,6 +25,42 @@ import (
     	schema "k8s.io/apimachinery/pkg/runtime/schema"
     )
     
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *IPAddress) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *IPAddress) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *IPAddress) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *IPAddressList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *IPAddressList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *IPAddressList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
     // APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
     // It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
     func (in *Ingress) APILifecycleIntroduced() (major, minor int) {
    @@ -120,3 +156,39 @@ func (in *IngressList) APILifecycleReplacement() schema.GroupVersionKind {
     func (in *IngressList) APILifecycleRemoved() (major, minor int) {
     	return 1, 22
     }
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ServiceCIDR) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ServiceCIDR) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ServiceCIDR) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ServiceCIDRList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ServiceCIDRList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ServiceCIDRList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    diff --git a/vendor/k8s.io/api/node/v1/doc.go b/vendor/k8s.io/api/node/v1/doc.go
    index 12cbcb8a0ef1..57ca52445bde 100644
    --- a/vendor/k8s.io/api/node/v1/doc.go
    +++ b/vendor/k8s.io/api/node/v1/doc.go
    @@ -17,7 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    -
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=node.k8s.io
     
     package v1 // import "k8s.io/api/node/v1"
    diff --git a/vendor/k8s.io/api/node/v1/generated.pb.go b/vendor/k8s.io/api/node/v1/generated.pb.go
    index 5355cbae7d10..4c304f55f9c2 100644
    --- a/vendor/k8s.io/api/node/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/node/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/node/v1/generated.proto
    +// source: k8s.io/api/node/v1/generated.proto
     
     package v1
     
    @@ -51,7 +51,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Overhead) Reset()      { *m = Overhead{} }
     func (*Overhead) ProtoMessage() {}
     func (*Overhead) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6ac9be560e26ae98, []int{0}
    +	return fileDescriptor_9007436710e7565b, []int{0}
     }
     func (m *Overhead) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -79,7 +79,7 @@ var xxx_messageInfo_Overhead proto.InternalMessageInfo
     func (m *RuntimeClass) Reset()      { *m = RuntimeClass{} }
     func (*RuntimeClass) ProtoMessage() {}
     func (*RuntimeClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6ac9be560e26ae98, []int{1}
    +	return fileDescriptor_9007436710e7565b, []int{1}
     }
     func (m *RuntimeClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,7 +107,7 @@ var xxx_messageInfo_RuntimeClass proto.InternalMessageInfo
     func (m *RuntimeClassList) Reset()      { *m = RuntimeClassList{} }
     func (*RuntimeClassList) ProtoMessage() {}
     func (*RuntimeClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6ac9be560e26ae98, []int{2}
    +	return fileDescriptor_9007436710e7565b, []int{2}
     }
     func (m *RuntimeClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,7 +135,7 @@ var xxx_messageInfo_RuntimeClassList proto.InternalMessageInfo
     func (m *Scheduling) Reset()      { *m = Scheduling{} }
     func (*Scheduling) ProtoMessage() {}
     func (*Scheduling) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6ac9be560e26ae98, []int{3}
    +	return fileDescriptor_9007436710e7565b, []int{3}
     }
     func (m *Scheduling) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -170,53 +170,52 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/node/v1/generated.proto", fileDescriptor_6ac9be560e26ae98)
    +	proto.RegisterFile("k8s.io/api/node/v1/generated.proto", fileDescriptor_9007436710e7565b)
     }
     
    -var fileDescriptor_6ac9be560e26ae98 = []byte{
    -	// 660 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0x41, 0x6f, 0xd3, 0x4a,
    -	0x10, 0xce, 0xa6, 0xaf, 0x6a, 0xba, 0x49, 0xdf, 0xeb, 0x5b, 0x7a, 0x88, 0x22, 0xe4, 0x44, 0x39,
    -	0x15, 0xa4, 0xae, 0xdb, 0x0a, 0xa1, 0x0a, 0x0e, 0x48, 0x86, 0x56, 0x20, 0x41, 0x01, 0x17, 0x2e,
    -	0x88, 0x03, 0x1b, 0x7b, 0x70, 0xdc, 0xc4, 0xde, 0x68, 0xbd, 0x8e, 0xc8, 0x0d, 0x71, 0x41, 0xe2,
    -	0xd4, 0xff, 0xc2, 0x81, 0xbf, 0x50, 0x71, 0xea, 0xb1, 0xa7, 0x96, 0x86, 0x7f, 0xc1, 0x09, 0xed,
    -	0xda, 0x4e, 0x5c, 0x1c, 0x42, 0xb9, 0x79, 0x67, 0xbf, 0xef, 0x9b, 0x99, 0x6f, 0x76, 0x8c, 0xef,
    -	0xf6, 0x76, 0x22, 0xea, 0x73, 0xb3, 0x17, 0x77, 0x40, 0x84, 0x20, 0x21, 0x32, 0x87, 0x10, 0xba,
    -	0x5c, 0x98, 0xe9, 0x05, 0x1b, 0xf8, 0x66, 0xc8, 0x5d, 0x30, 0x87, 0x5b, 0xa6, 0x07, 0x21, 0x08,
    -	0x26, 0xc1, 0xa5, 0x03, 0xc1, 0x25, 0x27, 0x24, 0xc1, 0x50, 0x36, 0xf0, 0xa9, 0xc2, 0xd0, 0xe1,
    -	0x56, 0x63, 0xc3, 0xf3, 0x65, 0x37, 0xee, 0x50, 0x87, 0x07, 0xa6, 0xc7, 0x3d, 0x6e, 0x6a, 0x68,
    -	0x27, 0x7e, 0xab, 0x4f, 0xfa, 0xa0, 0xbf, 0x12, 0x89, 0x46, 0x3b, 0x97, 0xc6, 0xe1, 0x62, 0x56,
    -	0x9a, 0xc6, 0xad, 0x29, 0x26, 0x60, 0x4e, 0xd7, 0x0f, 0x41, 0x8c, 0xcc, 0x41, 0xcf, 0xd3, 0x24,
    -	0x01, 0x11, 0x8f, 0x85, 0x03, 0x7f, 0xc5, 0x8a, 0xcc, 0x00, 0x24, 0x9b, 0x95, 0xcb, 0xfc, 0x1d,
    -	0x4b, 0xc4, 0xa1, 0xf4, 0x83, 0x62, 0x9a, 0xdb, 0x7f, 0x22, 0x44, 0x4e, 0x17, 0x02, 0xf6, 0x2b,
    -	0xaf, 0xfd, 0xb5, 0x8c, 0x2b, 0x4f, 0x87, 0x20, 0xba, 0xc0, 0x5c, 0x72, 0x82, 0x70, 0x65, 0xc0,
    -	0xdd, 0x3d, 0xff, 0x1d, 0xb8, 0x75, 0xd4, 0x5a, 0x58, 0xaf, 0x6e, 0xdf, 0xa4, 0x45, 0x73, 0x69,
    -	0x46, 0xa0, 0xcf, 0x52, 0xf0, 0x6e, 0x28, 0xc5, 0xc8, 0xfa, 0x88, 0x8e, 0xcf, 0x9a, 0xa5, 0xf1,
    -	0x59, 0xb3, 0x92, 0xc5, 0x7f, 0x9c, 0x35, 0x9b, 0x45, 0x67, 0xa9, 0x9d, 0x9a, 0xf5, 0xd8, 0x8f,
    -	0xe4, 0x87, 0xf3, 0xb9, 0x90, 0x7d, 0x16, 0xc0, 0xa7, 0xf3, 0xe6, 0xc6, 0x55, 0xbc, 0xa7, 0xcf,
    -	0x63, 0x16, 0x4a, 0x5f, 0x8e, 0xec, 0x49, 0x17, 0x8d, 0x1e, 0x5e, 0xb9, 0x54, 0x24, 0x59, 0xc5,
    -	0x0b, 0x3d, 0x18, 0xd5, 0x51, 0x0b, 0xad, 0x2f, 0xdb, 0xea, 0x93, 0x3c, 0xc0, 0x8b, 0x43, 0xd6,
    -	0x8f, 0xa1, 0x5e, 0x6e, 0xa1, 0xf5, 0xea, 0x36, 0xcd, 0x75, 0x3c, 0xc9, 0x45, 0x07, 0x3d, 0x4f,
    -	0x5b, 0x50, 0xcc, 0x95, 0x90, 0xef, 0x94, 0x77, 0x50, 0xfb, 0x73, 0x19, 0xd7, 0xec, 0xc4, 0xef,
    -	0xfb, 0x7d, 0x16, 0x45, 0xe4, 0x0d, 0xae, 0xa8, 0x09, 0xbb, 0x4c, 0x32, 0x9d, 0xb1, 0xba, 0xbd,
    -	0x39, 0x4f, 0x3d, 0xa2, 0x0a, 0xad, 0x1d, 0xee, 0x1c, 0x82, 0x23, 0x9f, 0x80, 0x64, 0x16, 0x49,
    -	0x4d, 0xc5, 0xd3, 0x98, 0x3d, 0x51, 0x25, 0x37, 0xf0, 0x52, 0x97, 0x85, 0x6e, 0x1f, 0x84, 0x2e,
    -	0x7f, 0xd9, 0xfa, 0x2f, 0x85, 0x2f, 0x3d, 0x4c, 0xc2, 0x76, 0x76, 0x4f, 0xf6, 0x70, 0x85, 0xa7,
    -	0x83, 0xab, 0x2f, 0xe8, 0x62, 0xae, 0xcf, 0x1b, 0xae, 0x55, 0x53, 0x93, 0xcc, 0x4e, 0xf6, 0x84,
    -	0x4b, 0xf6, 0x31, 0x56, 0x8f, 0xc9, 0x8d, 0xfb, 0x7e, 0xe8, 0xd5, 0xff, 0xd1, 0x4a, 0xc6, 0x2c,
    -	0xa5, 0x83, 0x09, 0xca, 0xfa, 0x57, 0x35, 0x30, 0x3d, 0xdb, 0x39, 0x85, 0xf6, 0x17, 0x84, 0x57,
    -	0xf3, 0xae, 0xa9, 0x57, 0x41, 0x5e, 0x17, 0x9c, 0xa3, 0x57, 0x73, 0x4e, 0xb1, 0xb5, 0x6f, 0xab,
    -	0xd9, 0x63, 0xcc, 0x22, 0x39, 0xd7, 0x76, 0xf1, 0xa2, 0x2f, 0x21, 0x88, 0xea, 0x65, 0xfd, 0xc8,
    -	0x5b, 0xb3, 0xaa, 0xcf, 0x97, 0x64, 0xad, 0xa4, 0x62, 0x8b, 0x8f, 0x14, 0xcd, 0x4e, 0xd8, 0xed,
    -	0xa3, 0x32, 0xce, 0x35, 0x45, 0x0e, 0x71, 0x4d, 0x91, 0x0f, 0xa0, 0x0f, 0x8e, 0xe4, 0x22, 0xdd,
    -	0xa0, 0xcd, 0xf9, 0xd6, 0xd0, 0xfd, 0x1c, 0x25, 0xd9, 0xa3, 0xb5, 0x34, 0x59, 0x2d, 0x7f, 0x65,
    -	0x5f, 0xd2, 0x26, 0x2f, 0x71, 0x55, 0xf2, 0xbe, 0x5a, 0x65, 0x9f, 0x87, 0x59, 0x1f, 0x97, 0xa6,
    -	0xa0, 0x36, 0x49, 0xa5, 0x7a, 0x31, 0x81, 0x59, 0xd7, 0x52, 0xe1, 0xea, 0x34, 0x16, 0xd9, 0x79,
    -	0x9d, 0xc6, 0x3d, 0xfc, 0x7f, 0xa1, 0x9e, 0x19, 0x2b, 0xb3, 0x96, 0x5f, 0x99, 0xe5, 0xdc, 0x0a,
    -	0x58, 0x3b, 0xc7, 0x17, 0x46, 0xe9, 0xe4, 0xc2, 0x28, 0x9d, 0x5e, 0x18, 0xa5, 0xf7, 0x63, 0x03,
    -	0x1d, 0x8f, 0x0d, 0x74, 0x32, 0x36, 0xd0, 0xe9, 0xd8, 0x40, 0xdf, 0xc6, 0x06, 0x3a, 0xfa, 0x6e,
    -	0x94, 0x5e, 0x91, 0xe2, 0x5f, 0xfd, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x46, 0x77, 0x65, 0x3b,
    -	0x03, 0x06, 0x00, 0x00,
    +var fileDescriptor_9007436710e7565b = []byte{
    +	// 643 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0x4f, 0x6f, 0xd3, 0x4e,
    +	0x10, 0xcd, 0xa6, 0xbf, 0xaa, 0xe9, 0x26, 0xfd, 0x51, 0x96, 0x1e, 0xa2, 0x08, 0x39, 0x51, 0x4e,
    +	0x05, 0xa9, 0xeb, 0xb6, 0x42, 0xa8, 0xe2, 0x82, 0x64, 0x68, 0x05, 0x12, 0x14, 0x70, 0xe1, 0x82,
    +	0x38, 0xb0, 0xb5, 0x17, 0x67, 0x9b, 0xd8, 0x1b, 0xd9, 0xeb, 0x88, 0xdc, 0x10, 0x17, 0x24, 0x4e,
    +	0xfd, 0x2e, 0x1c, 0xf8, 0x0a, 0x15, 0xa7, 0x1e, 0x7b, 0x6a, 0xa9, 0xf9, 0x16, 0x9c, 0xd0, 0xae,
    +	0xff, 0x64, 0x83, 0x43, 0x28, 0x37, 0xef, 0xec, 0x7b, 0x6f, 0x66, 0xde, 0xec, 0x18, 0x76, 0xfb,
    +	0x3b, 0x11, 0x66, 0xdc, 0x24, 0x43, 0x66, 0x06, 0xdc, 0xa5, 0xe6, 0x68, 0xcb, 0xf4, 0x68, 0x40,
    +	0x43, 0x22, 0xa8, 0x8b, 0x87, 0x21, 0x17, 0x1c, 0xa1, 0x14, 0x83, 0xc9, 0x90, 0x61, 0x89, 0xc1,
    +	0xa3, 0xad, 0xd6, 0x86, 0xc7, 0x44, 0x2f, 0x3e, 0xc4, 0x0e, 0xf7, 0x4d, 0x8f, 0x7b, 0xdc, 0x54,
    +	0xd0, 0xc3, 0xf8, 0x9d, 0x3a, 0xa9, 0x83, 0xfa, 0x4a, 0x25, 0x5a, 0x7a, 0x1a, 0x87, 0x87, 0xb3,
    +	0xd2, 0xb4, 0xee, 0x4c, 0x30, 0x3e, 0x71, 0x7a, 0x2c, 0xa0, 0xe1, 0xd8, 0x1c, 0xf6, 0x3d, 0x45,
    +	0x0a, 0x69, 0xc4, 0xe3, 0xd0, 0xa1, 0xff, 0xc4, 0x8a, 0x4c, 0x9f, 0x0a, 0x32, 0x2b, 0x97, 0xf9,
    +	0x27, 0x56, 0x18, 0x07, 0x82, 0xf9, 0xe5, 0x34, 0x77, 0xff, 0x46, 0x88, 0x9c, 0x1e, 0xf5, 0xc9,
    +	0xef, 0xbc, 0xee, 0xb7, 0x2a, 0xac, 0x3d, 0x1b, 0xd1, 0xb0, 0x47, 0x89, 0x8b, 0x4e, 0x01, 0xac,
    +	0x0d, 0xb9, 0xbb, 0xc7, 0xde, 0x53, 0xb7, 0x09, 0x3a, 0x0b, 0xeb, 0xf5, 0xed, 0xdb, 0xb8, 0x6c,
    +	0x2e, 0xce, 0x09, 0xf8, 0x79, 0x06, 0xde, 0x0d, 0x44, 0x38, 0xb6, 0x3e, 0x81, 0x93, 0xf3, 0x76,
    +	0x25, 0x39, 0x6f, 0xd7, 0xf2, 0xf8, 0xcf, 0xf3, 0x76, 0xbb, 0xec, 0x2c, 0xb6, 0x33, 0xb3, 0x9e,
    +	0xb0, 0x48, 0x7c, 0xbc, 0x98, 0x0b, 0xd9, 0x27, 0x3e, 0xfd, 0x7c, 0xd1, 0xde, 0xb8, 0x8a, 0xf7,
    +	0xf8, 0x45, 0x4c, 0x02, 0xc1, 0xc4, 0xd8, 0x2e, 0xba, 0x68, 0xf5, 0xe1, 0xca, 0x54, 0x91, 0x68,
    +	0x15, 0x2e, 0xf4, 0xe9, 0xb8, 0x09, 0x3a, 0x60, 0x7d, 0xd9, 0x96, 0x9f, 0xe8, 0x21, 0x5c, 0x1c,
    +	0x91, 0x41, 0x4c, 0x9b, 0xd5, 0x0e, 0x58, 0xaf, 0x6f, 0x63, 0xad, 0xe3, 0x22, 0x17, 0x1e, 0xf6,
    +	0x3d, 0x65, 0x41, 0x39, 0x57, 0x4a, 0xbe, 0x57, 0xdd, 0x01, 0xdd, 0x2f, 0x55, 0xd8, 0xb0, 0x53,
    +	0xbf, 0x1f, 0x0c, 0x48, 0x14, 0xa1, 0xb7, 0xb0, 0x26, 0x27, 0xec, 0x12, 0x41, 0x54, 0xc6, 0xfa,
    +	0xf6, 0xe6, 0x3c, 0xf5, 0x08, 0x4b, 0xb4, 0x72, 0xf8, 0xf0, 0x88, 0x3a, 0xe2, 0x29, 0x15, 0xc4,
    +	0x42, 0x99, 0xa9, 0x70, 0x12, 0xb3, 0x0b, 0x55, 0x74, 0x0b, 0x2e, 0xf5, 0x48, 0xe0, 0x0e, 0x68,
    +	0xa8, 0xca, 0x5f, 0xb6, 0xae, 0x65, 0xf0, 0xa5, 0x47, 0x69, 0xd8, 0xce, 0xef, 0xd1, 0x1e, 0xac,
    +	0xf1, 0x6c, 0x70, 0xcd, 0x05, 0x55, 0xcc, 0xcd, 0x79, 0xc3, 0xb5, 0x1a, 0x72, 0x92, 0xf9, 0xc9,
    +	0x2e, 0xb8, 0x68, 0x1f, 0x42, 0xf9, 0x98, 0xdc, 0x78, 0xc0, 0x02, 0xaf, 0xf9, 0x9f, 0x52, 0x32,
    +	0x66, 0x29, 0x1d, 0x14, 0x28, 0xeb, 0x7f, 0xd9, 0xc0, 0xe4, 0x6c, 0x6b, 0x0a, 0xdd, 0xaf, 0x00,
    +	0xae, 0xea, 0xae, 0xc9, 0x57, 0x81, 0xde, 0x94, 0x9c, 0xc3, 0x57, 0x73, 0x4e, 0xb2, 0x95, 0x6f,
    +	0xab, 0xf9, 0x63, 0xcc, 0x23, 0x9a, 0x6b, 0xbb, 0x70, 0x91, 0x09, 0xea, 0x47, 0xcd, 0xaa, 0x7a,
    +	0xe4, 0x9d, 0x59, 0xd5, 0xeb, 0x25, 0x59, 0x2b, 0x99, 0xd8, 0xe2, 0x63, 0x49, 0xb3, 0x53, 0x76,
    +	0xf7, 0xb8, 0x0a, 0xb5, 0xa6, 0xd0, 0x11, 0x6c, 0x48, 0xf2, 0x01, 0x1d, 0x50, 0x47, 0xf0, 0x30,
    +	0xdb, 0xa0, 0xcd, 0xf9, 0xd6, 0xe0, 0x7d, 0x8d, 0x92, 0xee, 0xd1, 0x5a, 0x96, 0xac, 0xa1, 0x5f,
    +	0xd9, 0x53, 0xda, 0xe8, 0x15, 0xac, 0x0b, 0x3e, 0x90, 0xab, 0xcc, 0x78, 0x90, 0xf7, 0x31, 0x35,
    +	0x05, 0xb9, 0x49, 0x32, 0xd5, 0xcb, 0x02, 0x66, 0xdd, 0xc8, 0x84, 0xeb, 0x93, 0x58, 0x64, 0xeb,
    +	0x3a, 0xad, 0xfb, 0xf0, 0x7a, 0xa9, 0x9e, 0x19, 0x2b, 0xb3, 0xa6, 0xaf, 0xcc, 0xb2, 0xb6, 0x02,
    +	0xd6, 0xce, 0xc9, 0xa5, 0x51, 0x39, 0xbd, 0x34, 0x2a, 0x67, 0x97, 0x46, 0xe5, 0x43, 0x62, 0x80,
    +	0x93, 0xc4, 0x00, 0xa7, 0x89, 0x01, 0xce, 0x12, 0x03, 0x7c, 0x4f, 0x0c, 0x70, 0xfc, 0xc3, 0xa8,
    +	0xbc, 0x46, 0xe5, 0xbf, 0xfa, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd3, 0x3f, 0x9c, 0xd0, 0xea,
    +	0x05, 0x00, 0x00,
     }
     
     func (m *Overhead) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/node/v1/generated.proto b/vendor/k8s.io/api/node/v1/generated.proto
    index 0152d5e3aba1..e6b8852ec104 100644
    --- a/vendor/k8s.io/api/node/v1/generated.proto
    +++ b/vendor/k8s.io/api/node/v1/generated.proto
    @@ -34,7 +34,7 @@ option go_package = "k8s.io/api/node/v1";
     message Overhead {
       // podFixed represents the fixed resource overhead associated with running a pod.
       // +optional
    -  map podFixed = 1;
    +  map podFixed = 1;
     }
     
     // RuntimeClass defines a class of container runtime supported in the cluster.
    @@ -47,7 +47,7 @@ message Overhead {
     message RuntimeClass {
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // handler specifies the underlying runtime and configuration that the CRI
       // implementation will use to handle pods of this class. The possible values
    @@ -80,7 +80,7 @@ message RuntimeClassList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a list of schema objects.
       repeated RuntimeClass items = 2;
    @@ -103,6 +103,6 @@ message Scheduling {
       // tolerated by the pod and the RuntimeClass.
       // +optional
       // +listType=atomic
    -  repeated k8s.io.api.core.v1.Toleration tolerations = 2;
    +  repeated .k8s.io.api.core.v1.Toleration tolerations = 2;
     }
     
    diff --git a/vendor/k8s.io/api/node/v1/types.go b/vendor/k8s.io/api/node/v1/types.go
    index b00f58772cdd..169862ea9408 100644
    --- a/vendor/k8s.io/api/node/v1/types.go
    +++ b/vendor/k8s.io/api/node/v1/types.go
    @@ -24,6 +24,7 @@ import (
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.20
     
     // RuntimeClass defines a class of container runtime supported in the cluster.
     // The RuntimeClass is used to determine which container runtime is used to run
    @@ -93,6 +94,7 @@ type Scheduling struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.20
     
     // RuntimeClassList is a list of RuntimeClass objects.
     type RuntimeClassList struct {
    diff --git a/vendor/k8s.io/api/node/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/node/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..749795568808
    --- /dev/null
    +++ b/vendor/k8s.io/api/node/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,34 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *RuntimeClass) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 20
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *RuntimeClassList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 20
    +}
    diff --git a/vendor/k8s.io/api/node/v1alpha1/generated.pb.go b/vendor/k8s.io/api/node/v1alpha1/generated.pb.go
    index 9f876d4b44d2..16ac696433f1 100644
    --- a/vendor/k8s.io/api/node/v1alpha1/generated.pb.go
    +++ b/vendor/k8s.io/api/node/v1alpha1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/node/v1alpha1/generated.proto
    +// source: k8s.io/api/node/v1alpha1/generated.proto
     
     package v1alpha1
     
    @@ -51,7 +51,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Overhead) Reset()      { *m = Overhead{} }
     func (*Overhead) ProtoMessage() {}
     func (*Overhead) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_82a78945ab308218, []int{0}
    +	return fileDescriptor_a8fee97bf5273e47, []int{0}
     }
     func (m *Overhead) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -79,7 +79,7 @@ var xxx_messageInfo_Overhead proto.InternalMessageInfo
     func (m *RuntimeClass) Reset()      { *m = RuntimeClass{} }
     func (*RuntimeClass) ProtoMessage() {}
     func (*RuntimeClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_82a78945ab308218, []int{1}
    +	return fileDescriptor_a8fee97bf5273e47, []int{1}
     }
     func (m *RuntimeClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,7 +107,7 @@ var xxx_messageInfo_RuntimeClass proto.InternalMessageInfo
     func (m *RuntimeClassList) Reset()      { *m = RuntimeClassList{} }
     func (*RuntimeClassList) ProtoMessage() {}
     func (*RuntimeClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_82a78945ab308218, []int{2}
    +	return fileDescriptor_a8fee97bf5273e47, []int{2}
     }
     func (m *RuntimeClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,7 +135,7 @@ var xxx_messageInfo_RuntimeClassList proto.InternalMessageInfo
     func (m *RuntimeClassSpec) Reset()      { *m = RuntimeClassSpec{} }
     func (*RuntimeClassSpec) ProtoMessage() {}
     func (*RuntimeClassSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_82a78945ab308218, []int{3}
    +	return fileDescriptor_a8fee97bf5273e47, []int{3}
     }
     func (m *RuntimeClassSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -163,7 +163,7 @@ var xxx_messageInfo_RuntimeClassSpec proto.InternalMessageInfo
     func (m *Scheduling) Reset()      { *m = Scheduling{} }
     func (*Scheduling) ProtoMessage() {}
     func (*Scheduling) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_82a78945ab308218, []int{4}
    +	return fileDescriptor_a8fee97bf5273e47, []int{4}
     }
     func (m *Scheduling) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -199,55 +199,54 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/node/v1alpha1/generated.proto", fileDescriptor_82a78945ab308218)
    +	proto.RegisterFile("k8s.io/api/node/v1alpha1/generated.proto", fileDescriptor_a8fee97bf5273e47)
     }
     
    -var fileDescriptor_82a78945ab308218 = []byte{
    -	// 699 bytes of a gzipped FileDescriptorProto
    +var fileDescriptor_a8fee97bf5273e47 = []byte{
    +	// 683 bytes of a gzipped FileDescriptorProto
     	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0x3d, 0x6f, 0xd3, 0x4c,
    -	0x1c, 0xcf, 0xa5, 0xad, 0x94, 0x5e, 0xd2, 0xaa, 0x8f, 0x9f, 0xea, 0x51, 0x94, 0xc1, 0xa9, 0xac,
    -	0x47, 0xa8, 0x42, 0xea, 0x99, 0x56, 0xa8, 0xaa, 0x18, 0x8a, 0x30, 0x2f, 0x02, 0x51, 0x5a, 0x70,
    -	0xcb, 0x82, 0x18, 0xb8, 0xd8, 0x7f, 0x1c, 0x13, 0xdb, 0x67, 0xd9, 0xe7, 0x88, 0x6c, 0x88, 0x05,
    -	0x89, 0x89, 0x89, 0x6f, 0x03, 0x73, 0xc7, 0x4e, 0xa8, 0x53, 0x4b, 0xc3, 0x77, 0x60, 0x60, 0x42,
    -	0x67, 0x9f, 0x13, 0x27, 0x69, 0x68, 0xd8, 0x7c, 0x77, 0xbf, 0x97, 0xff, 0x6b, 0x82, 0xef, 0x74,
    -	0x76, 0x62, 0xe2, 0x32, 0xbd, 0x93, 0xb4, 0x20, 0x0a, 0x80, 0x43, 0xac, 0x77, 0x21, 0xb0, 0x59,
    -	0xa4, 0xcb, 0x07, 0x1a, 0xba, 0x7a, 0xc0, 0x6c, 0xd0, 0xbb, 0x9b, 0xd4, 0x0b, 0xdb, 0x74, 0x53,
    -	0x77, 0x20, 0x80, 0x88, 0x72, 0xb0, 0x49, 0x18, 0x31, 0xce, 0x94, 0x7a, 0x86, 0x24, 0x34, 0x74,
    -	0x89, 0x40, 0x92, 0x1c, 0xd9, 0xd8, 0x70, 0x5c, 0xde, 0x4e, 0x5a, 0xc4, 0x62, 0xbe, 0xee, 0x30,
    -	0x87, 0xe9, 0x29, 0xa1, 0x95, 0xbc, 0x4e, 0x4f, 0xe9, 0x21, 0xfd, 0xca, 0x84, 0x1a, 0x5a, 0xc1,
    -	0xd2, 0x62, 0x91, 0xb0, 0x1c, 0x37, 0x6b, 0xdc, 0x1c, 0x62, 0x7c, 0x6a, 0xb5, 0xdd, 0x00, 0xa2,
    -	0x9e, 0x1e, 0x76, 0x9c, 0x94, 0x14, 0x41, 0xcc, 0x92, 0xc8, 0x82, 0xbf, 0x62, 0xc5, 0xba, 0x0f,
    -	0x9c, 0x5e, 0xe6, 0xa5, 0x4f, 0x63, 0x45, 0x49, 0xc0, 0x5d, 0x7f, 0xd2, 0x66, 0xfb, 0x2a, 0x42,
    -	0x6c, 0xb5, 0xc1, 0xa7, 0xe3, 0x3c, 0xed, 0xa4, 0x8c, 0x2b, 0x07, 0x5d, 0x88, 0xda, 0x40, 0x6d,
    -	0xe5, 0x1b, 0xc2, 0x95, 0x90, 0xd9, 0x0f, 0xdc, 0xb7, 0x60, 0xd7, 0xd1, 0xda, 0xdc, 0x7a, 0x75,
    -	0xeb, 0x06, 0x99, 0x56, 0x62, 0x92, 0xd3, 0xc8, 0x53, 0x49, 0xb9, 0x1f, 0xf0, 0xa8, 0x67, 0x7c,
    -	0x40, 0xc7, 0x67, 0xcd, 0x52, 0xff, 0xac, 0x59, 0xc9, 0xef, 0x7f, 0x9d, 0x35, 0x9b, 0x93, 0xf5,
    -	0x25, 0xa6, 0x2c, 0xd9, 0x9e, 0x1b, 0xf3, 0xf7, 0xe7, 0x7f, 0x84, 0xec, 0x53, 0x1f, 0x3e, 0x9e,
    -	0x37, 0x37, 0x66, 0xe9, 0x00, 0x79, 0x96, 0xd0, 0x80, 0xbb, 0xbc, 0x67, 0x0e, 0x72, 0x69, 0x74,
    -	0xf0, 0xd2, 0x48, 0x90, 0xca, 0x0a, 0x9e, 0xeb, 0x40, 0xaf, 0x8e, 0xd6, 0xd0, 0xfa, 0xa2, 0x29,
    -	0x3e, 0x95, 0x7b, 0x78, 0xa1, 0x4b, 0xbd, 0x04, 0xea, 0xe5, 0x35, 0xb4, 0x5e, 0xdd, 0x22, 0x85,
    -	0xbc, 0x07, 0x5e, 0x24, 0xec, 0x38, 0x69, 0x21, 0x26, 0xbd, 0x32, 0xf2, 0xad, 0xf2, 0x0e, 0xd2,
    -	0xbe, 0x22, 0x5c, 0x33, 0xb3, 0xaa, 0xdf, 0xf5, 0x68, 0x1c, 0x2b, 0xaf, 0x70, 0x45, 0xf4, 0xd9,
    -	0xa6, 0x9c, 0xa6, 0x8e, 0xa3, 0x55, 0x9d, 0x50, 0x8f, 0x89, 0x40, 0x93, 0xee, 0x26, 0x39, 0x68,
    -	0xbd, 0x01, 0x8b, 0x3f, 0x01, 0x4e, 0x0d, 0x45, 0x16, 0x15, 0x0f, 0xef, 0xcc, 0x81, 0xaa, 0xb2,
    -	0x87, 0xe7, 0xe3, 0x10, 0x2c, 0x19, 0xfb, 0xf5, 0xe9, 0x3d, 0x2b, 0xc6, 0x75, 0x18, 0x82, 0x65,
    -	0xd4, 0xa4, 0xee, 0xbc, 0x38, 0x99, 0xa9, 0x8a, 0xf6, 0x05, 0xe1, 0x95, 0x22, 0x50, 0x34, 0x48,
    -	0x79, 0x39, 0x91, 0x04, 0x99, 0x2d, 0x09, 0xc1, 0x4e, 0x53, 0x58, 0xc9, 0xe7, 0x22, 0xbf, 0x29,
    -	0x24, 0xf0, 0x18, 0x2f, 0xb8, 0x1c, 0xfc, 0xb8, 0x5e, 0x4e, 0xa7, 0xee, 0xda, 0x6c, 0x19, 0x18,
    -	0x4b, 0x52, 0x72, 0xe1, 0x91, 0x20, 0x9b, 0x99, 0x86, 0xf6, 0x73, 0x2c, 0x7e, 0x91, 0x9a, 0xb2,
    -	0x8b, 0x97, 0xe5, 0x2a, 0x3c, 0xa4, 0x81, 0xed, 0x41, 0x94, 0x35, 0xdf, 0xf8, 0x4f, 0x4a, 0x2c,
    -	0x9b, 0x23, 0xaf, 0xe6, 0x18, 0x5a, 0xd9, 0xc3, 0x15, 0x26, 0x07, 0x5e, 0x96, 0x59, 0xbb, 0x7a,
    -	0x35, 0x8c, 0x9a, 0xc8, 0x37, 0x3f, 0x99, 0x03, 0x05, 0xe5, 0x08, 0x63, 0xb1, 0x90, 0x76, 0xe2,
    -	0xb9, 0x81, 0x53, 0x9f, 0x4b, 0xf5, 0xfe, 0x9f, 0xae, 0x77, 0x38, 0xc0, 0x1a, 0xcb, 0x62, 0x08,
    -	0x86, 0x67, 0xb3, 0xa0, 0xa3, 0x7d, 0x2e, 0xe3, 0xc2, 0x93, 0x12, 0xe2, 0x9a, 0x90, 0x39, 0x04,
    -	0x0f, 0x2c, 0xce, 0x22, 0xb9, 0xd1, 0xdb, 0xb3, 0xd8, 0x90, 0xfd, 0x02, 0x31, 0xdb, 0xeb, 0x55,
    -	0x59, 0xa8, 0x5a, 0xf1, 0xc9, 0x1c, 0x71, 0x50, 0x9e, 0xe3, 0x2a, 0x67, 0x9e, 0xf8, 0x81, 0x71,
    -	0x59, 0x90, 0x37, 0x53, 0x2d, 0x1a, 0x8a, 0xcd, 0x16, 0x53, 0x71, 0x34, 0x80, 0x19, 0xff, 0x4a,
    -	0xe1, 0xea, 0xf0, 0x2e, 0x36, 0x8b, 0x3a, 0x8d, 0xdb, 0xf8, 0x9f, 0x89, 0x78, 0x2e, 0x59, 0xe1,
    -	0xd5, 0xe2, 0x0a, 0x2f, 0x16, 0x56, 0xd2, 0xd8, 0x3d, 0xbe, 0x50, 0x4b, 0x27, 0x17, 0x6a, 0xe9,
    -	0xf4, 0x42, 0x2d, 0xbd, 0xeb, 0xab, 0xe8, 0xb8, 0xaf, 0xa2, 0x93, 0xbe, 0x8a, 0x4e, 0xfb, 0x2a,
    -	0xfa, 0xde, 0x57, 0xd1, 0xa7, 0x1f, 0x6a, 0xe9, 0x45, 0x7d, 0xda, 0xff, 0xce, 0xef, 0x00, 0x00,
    -	0x00, 0xff, 0xff, 0x92, 0x0d, 0xef, 0xbe, 0xab, 0x06, 0x00, 0x00,
    +	0x1c, 0xcf, 0xa5, 0xad, 0x94, 0x5e, 0xd2, 0xaa, 0x8f, 0x9f, 0x0a, 0x45, 0x19, 0x9c, 0xca, 0x42,
    +	0x28, 0x42, 0xea, 0x99, 0x56, 0xa8, 0xaa, 0x18, 0x8a, 0x64, 0x5e, 0x04, 0xa2, 0xb4, 0x70, 0x2d,
    +	0x0b, 0x62, 0xe0, 0x6a, 0x1f, 0x8e, 0x89, 0xed, 0xb3, 0xec, 0x73, 0x44, 0x36, 0xc4, 0x82, 0xc4,
    +	0xc4, 0xc4, 0xb7, 0x81, 0xb9, 0x63, 0x27, 0xd4, 0xa9, 0xa5, 0xe1, 0x3b, 0x30, 0x30, 0xa1, 0xb3,
    +	0xcf, 0xc9, 0x25, 0x69, 0x68, 0xd8, 0x7c, 0x77, 0xbf, 0x97, 0xff, 0x6b, 0x02, 0x5b, 0x9d, 0xed,
    +	0x04, 0x79, 0xcc, 0x24, 0x91, 0x67, 0x86, 0xcc, 0xa1, 0x66, 0x77, 0x83, 0xf8, 0x51, 0x9b, 0x6c,
    +	0x98, 0x2e, 0x0d, 0x69, 0x4c, 0x38, 0x75, 0x50, 0x14, 0x33, 0xce, 0xb4, 0x7a, 0x8e, 0x44, 0x24,
    +	0xf2, 0x90, 0x40, 0xa2, 0x02, 0xd9, 0x58, 0x77, 0x3d, 0xde, 0x4e, 0x8f, 0x90, 0xcd, 0x02, 0xd3,
    +	0x65, 0x2e, 0x33, 0x33, 0xc2, 0x51, 0xfa, 0x26, 0x3b, 0x65, 0x87, 0xec, 0x2b, 0x17, 0x6a, 0x18,
    +	0x8a, 0xa5, 0xcd, 0x62, 0x61, 0x39, 0x6e, 0xd6, 0xb8, 0x3d, 0xc4, 0x04, 0xc4, 0x6e, 0x7b, 0x21,
    +	0x8d, 0x7b, 0x66, 0xd4, 0x71, 0x33, 0x52, 0x4c, 0x13, 0x96, 0xc6, 0x36, 0xfd, 0x27, 0x56, 0x62,
    +	0x06, 0x94, 0x93, 0xcb, 0xbc, 0xcc, 0x69, 0xac, 0x38, 0x0d, 0xb9, 0x17, 0x4c, 0xda, 0x6c, 0x5d,
    +	0x45, 0x48, 0xec, 0x36, 0x0d, 0xc8, 0x38, 0xcf, 0x38, 0x29, 0xc3, 0xca, 0x7e, 0x97, 0xc6, 0x6d,
    +	0x4a, 0x1c, 0xed, 0x3b, 0x80, 0x95, 0x88, 0x39, 0x0f, 0xbd, 0x77, 0xd4, 0xa9, 0x83, 0xb5, 0xb9,
    +	0x56, 0x75, 0xf3, 0x16, 0x9a, 0x56, 0x62, 0x54, 0xd0, 0xd0, 0x33, 0x49, 0x79, 0x10, 0xf2, 0xb8,
    +	0x67, 0x7d, 0x04, 0xc7, 0x67, 0xcd, 0x52, 0xff, 0xac, 0x59, 0x29, 0xee, 0x7f, 0x9f, 0x35, 0x9b,
    +	0x93, 0xf5, 0x45, 0x58, 0x96, 0x6c, 0xd7, 0x4b, 0xf8, 0x87, 0xf3, 0xbf, 0x42, 0xf6, 0x48, 0x40,
    +	0x3f, 0x9d, 0x37, 0xd7, 0x67, 0xe9, 0x00, 0x7a, 0x9e, 0x92, 0x90, 0x7b, 0xbc, 0x87, 0x07, 0xb9,
    +	0x34, 0x3a, 0x70, 0x69, 0x24, 0x48, 0x6d, 0x05, 0xce, 0x75, 0x68, 0xaf, 0x0e, 0xd6, 0x40, 0x6b,
    +	0x11, 0x8b, 0x4f, 0xed, 0x3e, 0x5c, 0xe8, 0x12, 0x3f, 0xa5, 0xf5, 0xf2, 0x1a, 0x68, 0x55, 0x37,
    +	0x91, 0x92, 0xf7, 0xc0, 0x0b, 0x45, 0x1d, 0x37, 0x2b, 0xc4, 0xa4, 0x57, 0x4e, 0xbe, 0x53, 0xde,
    +	0x06, 0xc6, 0x37, 0x00, 0x6b, 0x38, 0xaf, 0xfa, 0x3d, 0x9f, 0x24, 0x89, 0xf6, 0x1a, 0x56, 0x44,
    +	0x9f, 0x1d, 0xc2, 0x49, 0xe6, 0x38, 0x5a, 0xd5, 0x09, 0xf5, 0x04, 0x09, 0x34, 0xea, 0x6e, 0xa0,
    +	0xfd, 0xa3, 0xb7, 0xd4, 0xe6, 0x4f, 0x29, 0x27, 0x96, 0x26, 0x8b, 0x0a, 0x87, 0x77, 0x78, 0xa0,
    +	0xaa, 0xed, 0xc2, 0xf9, 0x24, 0xa2, 0xb6, 0x8c, 0xfd, 0xe6, 0xf4, 0x9e, 0xa9, 0x71, 0x1d, 0x44,
    +	0xd4, 0xb6, 0x6a, 0x52, 0x77, 0x5e, 0x9c, 0x70, 0xa6, 0x62, 0x7c, 0x05, 0x70, 0x45, 0x05, 0x8a,
    +	0x06, 0x69, 0xaf, 0x26, 0x92, 0x40, 0xb3, 0x25, 0x21, 0xd8, 0x59, 0x0a, 0x2b, 0xc5, 0x5c, 0x14,
    +	0x37, 0x4a, 0x02, 0x4f, 0xe0, 0x82, 0xc7, 0x69, 0x90, 0xd4, 0xcb, 0xd9, 0xd4, 0xdd, 0x98, 0x2d,
    +	0x03, 0x6b, 0x49, 0x4a, 0x2e, 0x3c, 0x16, 0x64, 0x9c, 0x6b, 0x18, 0xbf, 0xc6, 0xe2, 0x17, 0xa9,
    +	0x69, 0x3b, 0x70, 0x59, 0xae, 0xc2, 0x23, 0x12, 0x3a, 0x3e, 0x8d, 0xf3, 0xe6, 0x5b, 0xd7, 0xa4,
    +	0xc4, 0x32, 0x1e, 0x79, 0xc5, 0x63, 0x68, 0x6d, 0x17, 0x56, 0x98, 0x1c, 0x78, 0x59, 0x66, 0xe3,
    +	0xea, 0xd5, 0xb0, 0x6a, 0x22, 0xdf, 0xe2, 0x84, 0x07, 0x0a, 0xda, 0x21, 0x84, 0x62, 0x21, 0x9d,
    +	0xd4, 0xf7, 0x42, 0xb7, 0x3e, 0x97, 0xe9, 0x5d, 0x9f, 0xae, 0x77, 0x30, 0xc0, 0x5a, 0xcb, 0x62,
    +	0x08, 0x86, 0x67, 0xac, 0xe8, 0x18, 0x5f, 0xca, 0x50, 0x79, 0xd2, 0x22, 0x58, 0x13, 0x32, 0x07,
    +	0xd4, 0xa7, 0x36, 0x67, 0xb1, 0xdc, 0xe8, 0xad, 0x59, 0x6c, 0xd0, 0x9e, 0x42, 0xcc, 0xf7, 0x7a,
    +	0x55, 0x16, 0xaa, 0xa6, 0x3e, 0xe1, 0x11, 0x07, 0xed, 0x05, 0xac, 0x72, 0xe6, 0x8b, 0x1f, 0x18,
    +	0x8f, 0x85, 0x45, 0x33, 0x75, 0xd5, 0x50, 0x6c, 0xb6, 0x98, 0x8a, 0xc3, 0x01, 0xcc, 0xfa, 0x5f,
    +	0x0a, 0x57, 0x87, 0x77, 0x09, 0x56, 0x75, 0x1a, 0x77, 0xe1, 0x7f, 0x13, 0xf1, 0x5c, 0xb2, 0xc2,
    +	0xab, 0xea, 0x0a, 0x2f, 0x2a, 0x2b, 0x69, 0xed, 0x1c, 0x5f, 0xe8, 0xa5, 0x93, 0x0b, 0xbd, 0x74,
    +	0x7a, 0xa1, 0x97, 0xde, 0xf7, 0x75, 0x70, 0xdc, 0xd7, 0xc1, 0x49, 0x5f, 0x07, 0xa7, 0x7d, 0x1d,
    +	0xfc, 0xe8, 0xeb, 0xe0, 0xf3, 0x4f, 0xbd, 0xf4, 0xb2, 0x3e, 0xed, 0x7f, 0xe7, 0x4f, 0x00, 0x00,
    +	0x00, 0xff, 0xff, 0xa7, 0x9b, 0x7f, 0x45, 0x92, 0x06, 0x00, 0x00,
     }
     
     func (m *Overhead) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/node/v1alpha1/generated.proto b/vendor/k8s.io/api/node/v1alpha1/generated.proto
    index 4673e9261d8d..bc68718d90c5 100644
    --- a/vendor/k8s.io/api/node/v1alpha1/generated.proto
    +++ b/vendor/k8s.io/api/node/v1alpha1/generated.proto
    @@ -34,7 +34,7 @@ option go_package = "k8s.io/api/node/v1alpha1";
     message Overhead {
       // podFixed represents the fixed resource overhead associated with running a pod.
       // +optional
    -  map podFixed = 1;
    +  map podFixed = 1;
     }
     
     // RuntimeClass defines a class of container runtime supported in the cluster.
    @@ -47,7 +47,7 @@ message Overhead {
     message RuntimeClass {
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec represents specification of the RuntimeClass
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    @@ -59,7 +59,7 @@ message RuntimeClassList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a list of schema objects.
       repeated RuntimeClass items = 2;
    @@ -113,6 +113,6 @@ message Scheduling {
       // tolerated by the pod and the RuntimeClass.
       // +optional
       // +listType=atomic
    -  repeated k8s.io.api.core.v1.Toleration tolerations = 2;
    +  repeated .k8s.io.api.core.v1.Toleration tolerations = 2;
     }
     
    diff --git a/vendor/k8s.io/api/node/v1beta1/generated.pb.go b/vendor/k8s.io/api/node/v1beta1/generated.pb.go
    index 8cd5a4cc3593..537961c259a9 100644
    --- a/vendor/k8s.io/api/node/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/node/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/node/v1beta1/generated.proto
    +// source: k8s.io/api/node/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -51,7 +51,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Overhead) Reset()      { *m = Overhead{} }
     func (*Overhead) ProtoMessage() {}
     func (*Overhead) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f977b0dddc93b4ec, []int{0}
    +	return fileDescriptor_73bb62abe8438af4, []int{0}
     }
     func (m *Overhead) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -79,7 +79,7 @@ var xxx_messageInfo_Overhead proto.InternalMessageInfo
     func (m *RuntimeClass) Reset()      { *m = RuntimeClass{} }
     func (*RuntimeClass) ProtoMessage() {}
     func (*RuntimeClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f977b0dddc93b4ec, []int{1}
    +	return fileDescriptor_73bb62abe8438af4, []int{1}
     }
     func (m *RuntimeClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,7 +107,7 @@ var xxx_messageInfo_RuntimeClass proto.InternalMessageInfo
     func (m *RuntimeClassList) Reset()      { *m = RuntimeClassList{} }
     func (*RuntimeClassList) ProtoMessage() {}
     func (*RuntimeClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f977b0dddc93b4ec, []int{2}
    +	return fileDescriptor_73bb62abe8438af4, []int{2}
     }
     func (m *RuntimeClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,7 +135,7 @@ var xxx_messageInfo_RuntimeClassList proto.InternalMessageInfo
     func (m *Scheduling) Reset()      { *m = Scheduling{} }
     func (*Scheduling) ProtoMessage() {}
     func (*Scheduling) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f977b0dddc93b4ec, []int{3}
    +	return fileDescriptor_73bb62abe8438af4, []int{3}
     }
     func (m *Scheduling) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -170,53 +170,52 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/node/v1beta1/generated.proto", fileDescriptor_f977b0dddc93b4ec)
    +	proto.RegisterFile("k8s.io/api/node/v1beta1/generated.proto", fileDescriptor_73bb62abe8438af4)
     }
     
    -var fileDescriptor_f977b0dddc93b4ec = []byte{
    -	// 668 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xbb, 0x6f, 0xd3, 0x40,
    -	0x18, 0xcf, 0xa5, 0x54, 0x4d, 0x2f, 0x29, 0x14, 0x53, 0xa9, 0x51, 0x06, 0xa7, 0x04, 0x21, 0x95,
    -	0xa1, 0x67, 0x5a, 0x01, 0xaa, 0x90, 0x10, 0xc8, 0x3c, 0xc4, 0xb3, 0x05, 0x17, 0x16, 0xc4, 0xc0,
    -	0xc5, 0xfe, 0x70, 0x4c, 0x62, 0x5f, 0x74, 0x3e, 0x47, 0x64, 0x43, 0x2c, 0x48, 0x4c, 0x2c, 0xfc,
    -	0x37, 0xb0, 0x77, 0xa3, 0x0b, 0x52, 0xa7, 0x96, 0x86, 0xff, 0x82, 0x09, 0x9d, 0x5f, 0xb9, 0x36,
    -	0x4d, 0x1b, 0x36, 0xdf, 0xdd, 0xef, 0x71, 0xdf, 0xef, 0xbb, 0xcf, 0xf8, 0x4e, 0x7b, 0x3d, 0x24,
    -	0x1e, 0x33, 0xda, 0x51, 0x13, 0x78, 0x00, 0x02, 0x42, 0xa3, 0x07, 0x81, 0xc3, 0xb8, 0x91, 0x1e,
    -	0xd0, 0xae, 0x67, 0x04, 0xcc, 0x01, 0xa3, 0xb7, 0xda, 0x04, 0x41, 0x57, 0x0d, 0x17, 0x02, 0xe0,
    -	0x54, 0x80, 0x43, 0xba, 0x9c, 0x09, 0xa6, 0x2d, 0x26, 0x40, 0x42, 0xbb, 0x1e, 0x91, 0x40, 0x92,
    -	0x02, 0x6b, 0x2b, 0xae, 0x27, 0x5a, 0x51, 0x93, 0xd8, 0xcc, 0x37, 0x5c, 0xe6, 0x32, 0x23, 0xc6,
    -	0x37, 0xa3, 0x77, 0xf1, 0x2a, 0x5e, 0xc4, 0x5f, 0x89, 0x4e, 0xad, 0xa1, 0x18, 0xda, 0x8c, 0x4b,
    -	0xc3, 0xa3, 0x5e, 0xb5, 0x6b, 0x43, 0x8c, 0x4f, 0xed, 0x96, 0x17, 0x00, 0xef, 0x1b, 0xdd, 0xb6,
    -	0x1b, 0x93, 0x38, 0x84, 0x2c, 0xe2, 0x36, 0xfc, 0x17, 0x2b, 0x34, 0x7c, 0x10, 0xf4, 0x38, 0x2f,
    -	0x63, 0x1c, 0x8b, 0x47, 0x81, 0xf0, 0xfc, 0x51, 0x9b, 0x1b, 0xa7, 0x11, 0x42, 0xbb, 0x05, 0x3e,
    -	0x3d, 0xca, 0x6b, 0xfc, 0x2c, 0xe2, 0xd2, 0x66, 0x0f, 0x78, 0x0b, 0xa8, 0xa3, 0xfd, 0x42, 0xb8,
    -	0xd4, 0x65, 0xce, 0x03, 0xef, 0x03, 0x38, 0x55, 0xb4, 0x34, 0xb5, 0x5c, 0x5e, 0x33, 0xc8, 0x98,
    -	0x84, 0x49, 0xc6, 0x22, 0xcf, 0x53, 0xc6, 0xfd, 0x40, 0xf0, 0xbe, 0xf9, 0x19, 0x6d, 0xef, 0xd5,
    -	0x0b, 0x83, 0xbd, 0x7a, 0x29, 0xdb, 0xff, 0xbb, 0x57, 0xaf, 0x8f, 0xc6, 0x4b, 0xac, 0x34, 0xb1,
    -	0xa7, 0x5e, 0x28, 0x3e, 0xed, 0x9f, 0x08, 0xd9, 0xa0, 0x3e, 0x7c, 0xd9, 0xaf, 0xaf, 0x4c, 0xd2,
    -	0x00, 0xf2, 0x22, 0xa2, 0x81, 0xf0, 0x44, 0xdf, 0xca, 0x4b, 0xa9, 0xb5, 0xf1, 0xdc, 0xa1, 0x4b,
    -	0x6a, 0xf3, 0x78, 0xaa, 0x0d, 0xfd, 0x2a, 0x5a, 0x42, 0xcb, 0xb3, 0x96, 0xfc, 0xd4, 0xee, 0xe1,
    -	0xe9, 0x1e, 0xed, 0x44, 0x50, 0x2d, 0x2e, 0xa1, 0xe5, 0xf2, 0x1a, 0x51, 0xca, 0xce, 0xbd, 0x48,
    -	0xb7, 0xed, 0xc6, 0x39, 0x8c, 0x7a, 0x25, 0xe4, 0x9b, 0xc5, 0x75, 0xd4, 0xf8, 0x51, 0xc4, 0x15,
    -	0x2b, 0x09, 0xfd, 0x6e, 0x87, 0x86, 0xa1, 0xf6, 0x16, 0x97, 0x64, 0x9b, 0x1d, 0x2a, 0x68, 0xec,
    -	0x58, 0x5e, 0xbb, 0x7a, 0x92, 0x7a, 0x48, 0x24, 0x9a, 0xf4, 0x56, 0xc9, 0x66, 0xf3, 0x3d, 0xd8,
    -	0xe2, 0x19, 0x08, 0x6a, 0x6a, 0x69, 0xa8, 0x78, 0xb8, 0x67, 0xe5, 0xaa, 0xda, 0x15, 0x3c, 0xd3,
    -	0xa2, 0x81, 0xd3, 0x01, 0x1e, 0x5f, 0x7f, 0xd6, 0x3c, 0x97, 0xc2, 0x67, 0x1e, 0x26, 0xdb, 0x56,
    -	0x76, 0xae, 0x3d, 0xc1, 0x25, 0x96, 0x36, 0xae, 0x3a, 0x15, 0x5f, 0xe6, 0xe2, 0xa9, 0x1d, 0x36,
    -	0x2b, 0xb2, 0x9d, 0xd9, 0xca, 0xca, 0x05, 0xb4, 0x2d, 0x8c, 0xe5, 0xb3, 0x72, 0xa2, 0x8e, 0x17,
    -	0xb8, 0xd5, 0x33, 0xb1, 0xdc, 0xa5, 0xb1, 0x72, 0x5b, 0x39, 0xd4, 0x3c, 0x2b, 0x4b, 0x19, 0xae,
    -	0x2d, 0x45, 0xa6, 0xf1, 0x1d, 0xe1, 0x79, 0x35, 0x3f, 0xf9, 0x3e, 0xb4, 0x37, 0x23, 0x19, 0x92,
    -	0xc9, 0x32, 0x94, 0xec, 0x38, 0xc1, 0xf9, 0xec, 0x59, 0x66, 0x3b, 0x4a, 0x7e, 0x8f, 0xf1, 0xb4,
    -	0x27, 0xc0, 0x0f, 0xab, 0xc5, 0xf8, 0xcd, 0x5f, 0x1e, 0x5b, 0x82, 0x7a, 0x2f, 0x73, 0x2e, 0x55,
    -	0x9c, 0x7e, 0x24, 0xb9, 0x56, 0x22, 0xd1, 0xf8, 0x56, 0xc4, 0x4a, 0x65, 0x1a, 0xc3, 0x15, 0xa9,
    -	0xb0, 0x05, 0x1d, 0xb0, 0x05, 0xe3, 0xe9, 0x54, 0x5d, 0x9f, 0x20, 0x24, 0xb2, 0xa1, 0xf0, 0x92,
    -	0xd9, 0x5a, 0x48, 0x1d, 0x2b, 0xea, 0x91, 0x75, 0xc8, 0x40, 0x7b, 0x85, 0xcb, 0x82, 0x75, 0xe4,
    -	0x8c, 0x7b, 0x2c, 0xc8, 0x2a, 0xd2, 0x55, 0x3f, 0x39, 0x5d, 0x32, 0x9a, 0x97, 0x39, 0xcc, 0xbc,
    -	0x90, 0x0a, 0x97, 0x87, 0x7b, 0xa1, 0xa5, 0xea, 0xd4, 0x6e, 0xe3, 0xf3, 0x23, 0xf7, 0x39, 0x66,
    -	0x8c, 0x16, 0xd4, 0x31, 0x9a, 0x55, 0xc6, 0xc2, 0xbc, 0xb5, 0x7d, 0xa0, 0x17, 0x76, 0x0e, 0xf4,
    -	0xc2, 0xee, 0x81, 0x5e, 0xf8, 0x38, 0xd0, 0xd1, 0xf6, 0x40, 0x47, 0x3b, 0x03, 0x1d, 0xed, 0x0e,
    -	0x74, 0xf4, 0x7b, 0xa0, 0xa3, 0xaf, 0x7f, 0xf4, 0xc2, 0xeb, 0xc5, 0x31, 0x3f, 0xfe, 0x7f, 0x01,
    -	0x00, 0x00, 0xff, 0xff, 0x7a, 0xca, 0xe1, 0x7d, 0x2b, 0x06, 0x00, 0x00,
    +var fileDescriptor_73bb62abe8438af4 = []byte{
    +	// 654 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xbb, 0x6f, 0x13, 0x31,
    +	0x18, 0x8f, 0x53, 0xaa, 0xa6, 0x4e, 0x0a, 0xc5, 0x54, 0x6a, 0x94, 0xe1, 0x52, 0x82, 0x10, 0x65,
    +	0xa8, 0x8f, 0x56, 0x80, 0x2a, 0x24, 0x84, 0x74, 0x3c, 0xc4, 0xb3, 0x85, 0x2b, 0x2c, 0x88, 0x01,
    +	0xe7, 0xce, 0x5c, 0x4c, 0x72, 0xe7, 0xe8, 0xce, 0x17, 0x91, 0x0d, 0xb1, 0x20, 0x31, 0xb1, 0xf0,
    +	0xdf, 0xc0, 0xde, 0x8d, 0x2e, 0x48, 0x9d, 0x5a, 0x1a, 0xfe, 0x0b, 0x26, 0x64, 0xdf, 0x23, 0x6e,
    +	0xd3, 0xb4, 0x61, 0x8b, 0x7d, 0xbf, 0xc7, 0xf7, 0xfd, 0x3e, 0x7f, 0x81, 0x57, 0xda, 0xeb, 0x11,
    +	0x66, 0xdc, 0x24, 0x5d, 0x66, 0x06, 0xdc, 0xa5, 0x66, 0x6f, 0xb5, 0x49, 0x05, 0x59, 0x35, 0x3d,
    +	0x1a, 0xd0, 0x90, 0x08, 0xea, 0xe2, 0x6e, 0xc8, 0x05, 0x47, 0x8b, 0x09, 0x10, 0x93, 0x2e, 0xc3,
    +	0x12, 0x88, 0x53, 0x60, 0x6d, 0xc5, 0x63, 0xa2, 0x15, 0x37, 0xb1, 0xc3, 0x7d, 0xd3, 0xe3, 0x1e,
    +	0x37, 0x15, 0xbe, 0x19, 0xbf, 0x53, 0x27, 0x75, 0x50, 0xbf, 0x12, 0x9d, 0x5a, 0x43, 0x33, 0x74,
    +	0x78, 0x28, 0x0d, 0x8f, 0x7a, 0xd5, 0xae, 0x0f, 0x31, 0x3e, 0x71, 0x5a, 0x2c, 0xa0, 0x61, 0xdf,
    +	0xec, 0xb6, 0x3d, 0x45, 0x0a, 0x69, 0xc4, 0xe3, 0xd0, 0xa1, 0xff, 0xc5, 0x8a, 0x4c, 0x9f, 0x0a,
    +	0x72, 0x9c, 0x97, 0x39, 0x8e, 0x15, 0xc6, 0x81, 0x60, 0xfe, 0xa8, 0xcd, 0xcd, 0xd3, 0x08, 0x91,
    +	0xd3, 0xa2, 0x3e, 0x39, 0xca, 0x6b, 0xfc, 0x2c, 0xc2, 0xd2, 0x66, 0x8f, 0x86, 0x2d, 0x4a, 0x5c,
    +	0xf4, 0x0b, 0xc0, 0x52, 0x97, 0xbb, 0x0f, 0xd8, 0x07, 0xea, 0x56, 0xc1, 0xd2, 0xd4, 0x72, 0x79,
    +	0xcd, 0xc4, 0x63, 0x12, 0xc6, 0x19, 0x0b, 0x3f, 0x4f, 0x19, 0xf7, 0x03, 0x11, 0xf6, 0xad, 0xcf,
    +	0x60, 0x7b, 0xaf, 0x5e, 0x18, 0xec, 0xd5, 0x4b, 0xd9, 0xfd, 0xdf, 0xbd, 0x7a, 0x7d, 0x34, 0x5e,
    +	0x6c, 0xa7, 0x89, 0x3d, 0x65, 0x91, 0xf8, 0xb4, 0x7f, 0x22, 0x64, 0x83, 0xf8, 0xf4, 0xcb, 0x7e,
    +	0x7d, 0x65, 0x92, 0x01, 0xe0, 0x17, 0x31, 0x09, 0x04, 0x13, 0x7d, 0x3b, 0x6f, 0xa5, 0xd6, 0x86,
    +	0x73, 0x87, 0x8a, 0x44, 0xf3, 0x70, 0xaa, 0x4d, 0xfb, 0x55, 0xb0, 0x04, 0x96, 0x67, 0x6d, 0xf9,
    +	0x13, 0xdd, 0x83, 0xd3, 0x3d, 0xd2, 0x89, 0x69, 0xb5, 0xb8, 0x04, 0x96, 0xcb, 0x6b, 0x58, 0x6b,
    +	0x3b, 0xf7, 0xc2, 0xdd, 0xb6, 0xa7, 0x72, 0x18, 0xf5, 0x4a, 0xc8, 0xb7, 0x8a, 0xeb, 0xa0, 0xf1,
    +	0xa3, 0x08, 0x2b, 0x76, 0x12, 0xfa, 0xdd, 0x0e, 0x89, 0x22, 0xf4, 0x16, 0x96, 0xe4, 0x98, 0x5d,
    +	0x22, 0x88, 0x72, 0x2c, 0xaf, 0x5d, 0x3b, 0x49, 0x3d, 0xc2, 0x12, 0x8d, 0x7b, 0xab, 0x78, 0xb3,
    +	0xf9, 0x9e, 0x3a, 0xe2, 0x19, 0x15, 0xc4, 0x42, 0x69, 0xa8, 0x70, 0x78, 0x67, 0xe7, 0xaa, 0xe8,
    +	0x2a, 0x9c, 0x69, 0x91, 0xc0, 0xed, 0xd0, 0x50, 0x95, 0x3f, 0x6b, 0x9d, 0x4b, 0xe1, 0x33, 0x0f,
    +	0x93, 0x6b, 0x3b, 0xfb, 0x8e, 0x9e, 0xc0, 0x12, 0x4f, 0x07, 0x57, 0x9d, 0x52, 0xc5, 0x5c, 0x3c,
    +	0x75, 0xc2, 0x56, 0x45, 0x8e, 0x33, 0x3b, 0xd9, 0xb9, 0x00, 0xda, 0x82, 0x50, 0x3e, 0x2b, 0x37,
    +	0xee, 0xb0, 0xc0, 0xab, 0x9e, 0x51, 0x72, 0x97, 0xc6, 0xca, 0x6d, 0xe5, 0x50, 0xeb, 0xac, 0x6c,
    +	0x65, 0x78, 0xb6, 0x35, 0x99, 0xc6, 0x77, 0x00, 0xe7, 0xf5, 0xfc, 0xe4, 0xfb, 0x40, 0x6f, 0x46,
    +	0x32, 0xc4, 0x93, 0x65, 0x28, 0xd9, 0x2a, 0xc1, 0xf9, 0xec, 0x59, 0x66, 0x37, 0x5a, 0x7e, 0x8f,
    +	0xe1, 0x34, 0x13, 0xd4, 0x8f, 0xaa, 0x45, 0xf5, 0xe6, 0x2f, 0x8f, 0x6d, 0x41, 0xaf, 0xcb, 0x9a,
    +	0x4b, 0x15, 0xa7, 0x1f, 0x49, 0xae, 0x9d, 0x48, 0x34, 0xbe, 0x15, 0xa1, 0xd6, 0x19, 0xe2, 0xb0,
    +	0x22, 0x15, 0xb6, 0x68, 0x87, 0x3a, 0x82, 0x87, 0xe9, 0x56, 0xdd, 0x98, 0x20, 0x24, 0xbc, 0xa1,
    +	0xf1, 0x92, 0xdd, 0x5a, 0x48, 0x1d, 0x2b, 0xfa, 0x27, 0xfb, 0x90, 0x01, 0x7a, 0x05, 0xcb, 0x82,
    +	0x77, 0xe4, 0x8e, 0x33, 0x1e, 0x64, 0x1d, 0x19, 0xba, 0x9f, 0xdc, 0x2e, 0x19, 0xcd, 0xcb, 0x1c,
    +	0x66, 0x5d, 0x48, 0x85, 0xcb, 0xc3, 0xbb, 0xc8, 0xd6, 0x75, 0x6a, 0x77, 0xe0, 0xf9, 0x91, 0x7a,
    +	0x8e, 0x59, 0xa3, 0x05, 0x7d, 0x8d, 0x66, 0xb5, 0xb5, 0xb0, 0x6e, 0x6f, 0x1f, 0x18, 0x85, 0x9d,
    +	0x03, 0xa3, 0xb0, 0x7b, 0x60, 0x14, 0x3e, 0x0e, 0x0c, 0xb0, 0x3d, 0x30, 0xc0, 0xce, 0xc0, 0x00,
    +	0xbb, 0x03, 0x03, 0xfc, 0x1e, 0x18, 0xe0, 0xeb, 0x1f, 0xa3, 0xf0, 0x7a, 0x71, 0xcc, 0x1f, 0xff,
    +	0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7c, 0x67, 0x22, 0x03, 0x12, 0x06, 0x00, 0x00,
     }
     
     func (m *Overhead) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/node/v1beta1/generated.proto b/vendor/k8s.io/api/node/v1beta1/generated.proto
    index 54dbc0995ac4..497027e033af 100644
    --- a/vendor/k8s.io/api/node/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/node/v1beta1/generated.proto
    @@ -34,7 +34,7 @@ option go_package = "k8s.io/api/node/v1beta1";
     message Overhead {
       // podFixed represents the fixed resource overhead associated with running a pod.
       // +optional
    -  map podFixed = 1;
    +  map podFixed = 1;
     }
     
     // RuntimeClass defines a class of container runtime supported in the cluster.
    @@ -47,7 +47,7 @@ message Overhead {
     message RuntimeClass {
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // handler specifies the underlying runtime and configuration that the CRI
       // implementation will use to handle pods of this class. The possible values
    @@ -80,7 +80,7 @@ message RuntimeClassList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is a list of schema objects.
       repeated RuntimeClass items = 2;
    @@ -103,6 +103,6 @@ message Scheduling {
       // tolerated by the pod and the RuntimeClass.
       // +optional
       // +listType=atomic
    -  repeated k8s.io.api.core.v1.Toleration tolerations = 2;
    +  repeated .k8s.io.api.core.v1.Toleration tolerations = 2;
     }
     
    diff --git a/vendor/k8s.io/api/policy/v1/doc.go b/vendor/k8s.io/api/policy/v1/doc.go
    index 177cdf523687..c51e02685ab9 100644
    --- a/vendor/k8s.io/api/policy/v1/doc.go
    +++ b/vendor/k8s.io/api/policy/v1/doc.go
    @@ -17,6 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     
     // Package policy is for any kind of policy object.  Suitable examples, even if
     // they aren't all here, are PodDisruptionBudget,
    diff --git a/vendor/k8s.io/api/policy/v1/generated.pb.go b/vendor/k8s.io/api/policy/v1/generated.pb.go
    index d7e467a92156..dd61b7266c47 100644
    --- a/vendor/k8s.io/api/policy/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/policy/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/policy/v1/generated.proto
    +// source: k8s.io/api/policy/v1/generated.proto
     
     package v1
     
    @@ -50,7 +50,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Eviction) Reset()      { *m = Eviction{} }
     func (*Eviction) ProtoMessage() {}
     func (*Eviction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2d50488813b2d18e, []int{0}
    +	return fileDescriptor_204bc6fa48ff56f7, []int{0}
     }
     func (m *Eviction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -78,7 +78,7 @@ var xxx_messageInfo_Eviction proto.InternalMessageInfo
     func (m *PodDisruptionBudget) Reset()      { *m = PodDisruptionBudget{} }
     func (*PodDisruptionBudget) ProtoMessage() {}
     func (*PodDisruptionBudget) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2d50488813b2d18e, []int{1}
    +	return fileDescriptor_204bc6fa48ff56f7, []int{1}
     }
     func (m *PodDisruptionBudget) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -106,7 +106,7 @@ var xxx_messageInfo_PodDisruptionBudget proto.InternalMessageInfo
     func (m *PodDisruptionBudgetList) Reset()      { *m = PodDisruptionBudgetList{} }
     func (*PodDisruptionBudgetList) ProtoMessage() {}
     func (*PodDisruptionBudgetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2d50488813b2d18e, []int{2}
    +	return fileDescriptor_204bc6fa48ff56f7, []int{2}
     }
     func (m *PodDisruptionBudgetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -134,7 +134,7 @@ var xxx_messageInfo_PodDisruptionBudgetList proto.InternalMessageInfo
     func (m *PodDisruptionBudgetSpec) Reset()      { *m = PodDisruptionBudgetSpec{} }
     func (*PodDisruptionBudgetSpec) ProtoMessage() {}
     func (*PodDisruptionBudgetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2d50488813b2d18e, []int{3}
    +	return fileDescriptor_204bc6fa48ff56f7, []int{3}
     }
     func (m *PodDisruptionBudgetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -162,7 +162,7 @@ var xxx_messageInfo_PodDisruptionBudgetSpec proto.InternalMessageInfo
     func (m *PodDisruptionBudgetStatus) Reset()      { *m = PodDisruptionBudgetStatus{} }
     func (*PodDisruptionBudgetStatus) ProtoMessage() {}
     func (*PodDisruptionBudgetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_2d50488813b2d18e, []int{4}
    +	return fileDescriptor_204bc6fa48ff56f7, []int{4}
     }
     func (m *PodDisruptionBudgetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -197,65 +197,64 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/policy/v1/generated.proto", fileDescriptor_2d50488813b2d18e)
    +	proto.RegisterFile("k8s.io/api/policy/v1/generated.proto", fileDescriptor_204bc6fa48ff56f7)
     }
     
    -var fileDescriptor_2d50488813b2d18e = []byte{
    -	// 854 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0xcf, 0x8f, 0xdb, 0x44,
    -	0x14, 0xc7, 0xe3, 0xcd, 0x66, 0xd9, 0x4e, 0x93, 0x68, 0x19, 0x16, 0x58, 0x72, 0x70, 0xaa, 0x9c,
    -	0x16, 0xa4, 0x8e, 0xd9, 0x16, 0xa1, 0x55, 0x25, 0x50, 0xeb, 0x66, 0x05, 0x45, 0x5d, 0xb2, 0x9a,
    -	0x6d, 0x85, 0x84, 0x40, 0x62, 0x62, 0xbf, 0x26, 0x43, 0x6c, 0x8f, 0xe5, 0x19, 0x87, 0xe6, 0x44,
    -	0xff, 0x04, 0xfe, 0x05, 0xfe, 0x14, 0x4e, 0xec, 0xb1, 0xdc, 0x2a, 0x0e, 0x11, 0x6b, 0xfe, 0x0b,
    -	0x4e, 0xc8, 0x63, 0xe7, 0x87, 0x37, 0x0e, 0xcd, 0x72, 0xe8, 0xcd, 0xf3, 0xde, 0xfb, 0x7e, 0x9e,
    -	0xdf, 0x8f, 0x71, 0x82, 0x3e, 0x1b, 0x1d, 0x4b, 0xc2, 0x85, 0x35, 0x8a, 0xfb, 0x10, 0x05, 0xa0,
    -	0x40, 0x5a, 0x63, 0x08, 0x5c, 0x11, 0x59, 0xb9, 0x83, 0x85, 0xdc, 0x0a, 0x85, 0xc7, 0x9d, 0x89,
    -	0x35, 0x3e, 0xb2, 0x06, 0x10, 0x40, 0xc4, 0x14, 0xb8, 0x24, 0x8c, 0x84, 0x12, 0x78, 0x3f, 0x8b,
    -	0x22, 0x2c, 0xe4, 0x24, 0x8b, 0x22, 0xe3, 0xa3, 0xd6, 0xed, 0x01, 0x57, 0xc3, 0xb8, 0x4f, 0x1c,
    -	0xe1, 0x5b, 0x03, 0x31, 0x10, 0x96, 0x0e, 0xee, 0xc7, 0xcf, 0xf4, 0x49, 0x1f, 0xf4, 0x53, 0x06,
    -	0x69, 0x7d, 0xb2, 0x48, 0xe5, 0x33, 0x67, 0xc8, 0x03, 0x88, 0x26, 0x56, 0x38, 0x1a, 0xa4, 0x06,
    -	0x69, 0xf9, 0xa0, 0x58, 0x49, 0xea, 0x96, 0xb5, 0x4e, 0x15, 0xc5, 0x81, 0xe2, 0x3e, 0xac, 0x08,
    -	0x3e, 0x7d, 0x9d, 0x40, 0x3a, 0x43, 0xf0, 0xd9, 0x8a, 0xee, 0xee, 0x3a, 0x5d, 0xac, 0xb8, 0x67,
    -	0xf1, 0x40, 0x49, 0x15, 0x5d, 0x15, 0x75, 0xfe, 0x34, 0xd0, 0xee, 0xc9, 0x98, 0x3b, 0x8a, 0x8b,
    -	0x00, 0xff, 0x80, 0x76, 0xd3, 0x2a, 0x5c, 0xa6, 0xd8, 0x81, 0x71, 0xcb, 0x38, 0xbc, 0x79, 0xe7,
    -	0x63, 0xb2, 0x68, 0xdc, 0x1c, 0x4a, 0xc2, 0xd1, 0x20, 0x35, 0x48, 0x92, 0x46, 0x93, 0xf1, 0x11,
    -	0xe9, 0xf5, 0x7f, 0x04, 0x47, 0x9d, 0x82, 0x62, 0x36, 0xbe, 0x98, 0xb6, 0x2b, 0xc9, 0xb4, 0x8d,
    -	0x16, 0x36, 0x3a, 0xa7, 0x62, 0x0f, 0x35, 0x5c, 0xf0, 0x40, 0x41, 0x2f, 0x4c, 0x33, 0xca, 0x83,
    -	0x2d, 0x9d, 0xe6, 0xee, 0x66, 0x69, 0xba, 0xcb, 0x52, 0xfb, 0xed, 0x64, 0xda, 0x6e, 0x14, 0x4c,
    -	0xb4, 0x08, 0xef, 0xfc, 0xba, 0x85, 0xde, 0x39, 0x13, 0x6e, 0x97, 0xcb, 0x28, 0xd6, 0x26, 0x3b,
    -	0x76, 0x07, 0xa0, 0xde, 0x40, 0x9d, 0x3d, 0xb4, 0x2d, 0x43, 0x70, 0xf2, 0xf2, 0x6e, 0x93, 0xb2,
    -	0xf5, 0x23, 0x25, 0xaf, 0x76, 0x1e, 0x82, 0x63, 0xd7, 0x73, 0xf4, 0x76, 0x7a, 0xa2, 0x1a, 0x84,
    -	0xbf, 0x41, 0x3b, 0x52, 0x31, 0x15, 0xcb, 0x83, 0xaa, 0x46, 0x5a, 0x9b, 0x23, 0xb5, 0xcc, 0x6e,
    -	0xe6, 0xd0, 0x9d, 0xec, 0x4c, 0x73, 0x5c, 0xe7, 0x77, 0x03, 0xbd, 0x5f, 0xa2, 0x7a, 0xcc, 0xa5,
    -	0xc2, 0xdf, 0xad, 0xf4, 0x89, 0x6c, 0xd6, 0xa7, 0x54, 0xad, 0xbb, 0xb4, 0x97, 0x67, 0xdd, 0x9d,
    -	0x59, 0x96, 0x7a, 0xf4, 0x35, 0xaa, 0x71, 0x05, 0x7e, 0xba, 0x03, 0xd5, 0xc3, 0x9b, 0x77, 0x3e,
    -	0xdc, 0xb8, 0x22, 0xbb, 0x91, 0x53, 0x6b, 0x8f, 0x52, 0x3d, 0xcd, 0x30, 0x9d, 0x3f, 0xaa, 0xa5,
    -	0x95, 0xa4, 0x4d, 0xc4, 0xcf, 0x50, 0xdd, 0xe7, 0xc1, 0x83, 0x31, 0xe3, 0x1e, 0xeb, 0x7b, 0xf0,
    -	0xda, 0xa9, 0xa7, 0x57, 0x86, 0x64, 0x57, 0x86, 0x3c, 0x0a, 0x54, 0x2f, 0x3a, 0x57, 0x11, 0x0f,
    -	0x06, 0xf6, 0x5e, 0x32, 0x6d, 0xd7, 0x4f, 0x97, 0x48, 0xb4, 0xc0, 0xc5, 0xdf, 0xa3, 0x5d, 0x09,
    -	0x1e, 0x38, 0x4a, 0x44, 0xd7, 0x5b, 0xed, 0xc7, 0xac, 0x0f, 0xde, 0x79, 0x2e, 0xb5, 0xeb, 0x69,
    -	0xcb, 0x66, 0x27, 0x3a, 0x47, 0x62, 0x0f, 0x35, 0x7d, 0xf6, 0xfc, 0x69, 0xc0, 0xe6, 0x85, 0x54,
    -	0xff, 0x67, 0x21, 0x38, 0x99, 0xb6, 0x9b, 0xa7, 0x05, 0x16, 0xbd, 0xc2, 0xc6, 0x2f, 0x0c, 0xd4,
    -	0x8a, 0x83, 0x21, 0x30, 0x4f, 0x0d, 0x27, 0x67, 0xc2, 0x9d, 0x7d, 0x27, 0xce, 0xf4, 0x70, 0x0e,
    -	0xb6, 0x6f, 0x19, 0x87, 0x37, 0xec, 0xfb, 0xc9, 0xb4, 0xdd, 0x7a, 0xba, 0x36, 0xea, 0x9f, 0x69,
    -	0xdb, 0x5c, 0xef, 0x7d, 0x32, 0x09, 0x81, 0xfe, 0x47, 0x8e, 0xce, 0x6f, 0x35, 0xf4, 0xc1, 0xda,
    -	0x9d, 0xc6, 0x5f, 0x21, 0x2c, 0xfa, 0x12, 0xa2, 0x31, 0xb8, 0x5f, 0x64, 0xdf, 0x35, 0x2e, 0x02,
    -	0x3d, 0xdb, 0xaa, 0xdd, 0xca, 0x77, 0x04, 0xf7, 0x56, 0x22, 0x68, 0x89, 0x0a, 0xff, 0x8c, 0x1a,
    -	0x6e, 0x96, 0x05, 0xdc, 0x33, 0xe1, 0xce, 0xb6, 0xd2, 0xbe, 0xe6, 0x3d, 0x23, 0xdd, 0x65, 0xc8,
    -	0x49, 0xa0, 0xa2, 0x89, 0xfd, 0x6e, 0xfe, 0x2a, 0x8d, 0x82, 0x8f, 0x16, 0xf3, 0xa5, 0xc5, 0xb8,
    -	0x73, 0xa4, 0x7c, 0xe0, 0x79, 0xe2, 0x27, 0x70, 0xf5, 0x7c, 0x6b, 0x8b, 0x62, 0xba, 0x2b, 0x11,
    -	0xb4, 0x44, 0x85, 0x3f, 0x47, 0x4d, 0x27, 0x8e, 0x22, 0x08, 0xd4, 0x97, 0x59, 0x67, 0xf5, 0xb0,
    -	0x6a, 0xf6, 0x7b, 0x39, 0xa7, 0xf9, 0xb0, 0xe0, 0xa5, 0x57, 0xa2, 0x53, 0xbd, 0x0b, 0x92, 0x47,
    -	0xe0, 0xce, 0xf4, 0xb5, 0xa2, 0xbe, 0x5b, 0xf0, 0xd2, 0x2b, 0xd1, 0xf8, 0x18, 0xd5, 0xe1, 0x79,
    -	0x08, 0xce, 0xac, 0x97, 0x3b, 0x5a, 0xbd, 0x9f, 0xab, 0xeb, 0x27, 0x4b, 0x3e, 0x5a, 0x88, 0xc4,
    -	0x0e, 0x42, 0x8e, 0x08, 0x5c, 0x9e, 0xfd, 0x3a, 0xbc, 0xa5, 0x67, 0x60, 0x6d, 0x76, 0x85, 0x1e,
    -	0xce, 0x74, 0x8b, 0x6f, 0xf3, 0xdc, 0x24, 0xe9, 0x12, 0xb6, 0xe5, 0x21, 0xbc, 0x3a, 0x26, 0xbc,
    -	0x87, 0xaa, 0x23, 0x98, 0xe8, 0xf5, 0xb9, 0x41, 0xd3, 0x47, 0x7c, 0x1f, 0xd5, 0xc6, 0xcc, 0x8b,
    -	0x21, 0xbf, 0xca, 0x1f, 0x6d, 0xf6, 0x1e, 0x4f, 0xb8, 0x0f, 0x34, 0x13, 0xde, 0xdb, 0x3a, 0x36,
    -	0xec, 0x7b, 0x17, 0x97, 0x66, 0xe5, 0xe5, 0xa5, 0x59, 0x79, 0x75, 0x69, 0x56, 0x5e, 0x24, 0xa6,
    -	0x71, 0x91, 0x98, 0xc6, 0xcb, 0xc4, 0x34, 0x5e, 0x25, 0xa6, 0xf1, 0x57, 0x62, 0x1a, 0xbf, 0xfc,
    -	0x6d, 0x56, 0xbe, 0xdd, 0x2f, 0xfb, 0x1f, 0xf3, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x79, 0xd7,
    -	0x99, 0xdb, 0xf7, 0x08, 0x00, 0x00,
    +var fileDescriptor_204bc6fa48ff56f7 = []byte{
    +	// 840 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0x4d, 0x8f, 0xdb, 0x44,
    +	0x18, 0xc7, 0xe3, 0xcd, 0x66, 0xd9, 0x4e, 0x93, 0x68, 0x19, 0x16, 0x58, 0x72, 0x70, 0xaa, 0x88,
    +	0xc3, 0x82, 0xd4, 0x31, 0xdb, 0x22, 0xb4, 0xea, 0x01, 0xb5, 0x6e, 0x56, 0x50, 0xd4, 0x25, 0xab,
    +	0xd9, 0x56, 0x48, 0x08, 0x24, 0x26, 0xf6, 0xd3, 0x64, 0x58, 0xdb, 0x63, 0x79, 0xc6, 0xa1, 0x39,
    +	0xd1, 0x8f, 0xc0, 0x57, 0xe0, 0xa3, 0x70, 0x62, 0x8f, 0xe5, 0x56, 0x71, 0x88, 0x58, 0xf3, 0x2d,
    +	0x38, 0x21, 0x8f, 0x9d, 0x17, 0x27, 0x0e, 0xcd, 0x72, 0xe8, 0xcd, 0xf3, 0xcc, 0xf3, 0xff, 0x3d,
    +	0xf3, 0xbc, 0xcc, 0x24, 0xe8, 0xc3, 0x8b, 0x63, 0x49, 0xb8, 0xb0, 0x58, 0xc8, 0xad, 0x50, 0x78,
    +	0xdc, 0x19, 0x5b, 0xa3, 0x23, 0x6b, 0x00, 0x01, 0x44, 0x4c, 0x81, 0x4b, 0xc2, 0x48, 0x28, 0x81,
    +	0xf7, 0x33, 0x2f, 0xc2, 0x42, 0x4e, 0x32, 0x2f, 0x32, 0x3a, 0x6a, 0xdd, 0x1e, 0x70, 0x35, 0x8c,
    +	0xfb, 0xc4, 0x11, 0xbe, 0x35, 0x10, 0x03, 0x61, 0x69, 0xe7, 0x7e, 0xfc, 0x4c, 0xaf, 0xf4, 0x42,
    +	0x7f, 0x65, 0x90, 0xd6, 0xa7, 0xf3, 0x50, 0x3e, 0x73, 0x86, 0x3c, 0x80, 0x68, 0x6c, 0x85, 0x17,
    +	0x83, 0xd4, 0x20, 0x2d, 0x1f, 0x14, 0x2b, 0x09, 0xdd, 0xb2, 0xd6, 0xa9, 0xa2, 0x38, 0x50, 0xdc,
    +	0x87, 0x15, 0xc1, 0x67, 0xaf, 0x13, 0x48, 0x67, 0x08, 0x3e, 0x5b, 0xd1, 0xdd, 0x5d, 0xa7, 0x8b,
    +	0x15, 0xf7, 0x2c, 0x1e, 0x28, 0xa9, 0xa2, 0x65, 0x51, 0xe7, 0x4f, 0x03, 0xed, 0x9e, 0x8c, 0xb8,
    +	0xa3, 0xb8, 0x08, 0xf0, 0x0f, 0x68, 0x37, 0xcd, 0xc2, 0x65, 0x8a, 0x1d, 0x18, 0xb7, 0x8c, 0xc3,
    +	0x9b, 0x77, 0x3e, 0x21, 0xf3, 0xc2, 0xcd, 0xa0, 0x24, 0xbc, 0x18, 0xa4, 0x06, 0x49, 0x52, 0x6f,
    +	0x32, 0x3a, 0x22, 0xbd, 0xfe, 0x8f, 0xe0, 0xa8, 0x53, 0x50, 0xcc, 0xc6, 0x97, 0x93, 0x76, 0x25,
    +	0x99, 0xb4, 0xd1, 0xdc, 0x46, 0x67, 0x54, 0xec, 0xa1, 0x86, 0x0b, 0x1e, 0x28, 0xe8, 0x85, 0x69,
    +	0x44, 0x79, 0xb0, 0xa5, 0xc3, 0xdc, 0xdd, 0x2c, 0x4c, 0x77, 0x51, 0x6a, 0xbf, 0x9d, 0x4c, 0xda,
    +	0x8d, 0x82, 0x89, 0x16, 0xe1, 0x9d, 0x5f, 0xb7, 0xd0, 0x3b, 0x67, 0xc2, 0xed, 0x72, 0x19, 0xc5,
    +	0xda, 0x64, 0xc7, 0xee, 0x00, 0xd4, 0x1b, 0xc8, 0xb3, 0x87, 0xb6, 0x65, 0x08, 0x4e, 0x9e, 0xde,
    +	0x6d, 0x52, 0x36, 0x7e, 0xa4, 0xe4, 0x68, 0xe7, 0x21, 0x38, 0x76, 0x3d, 0x47, 0x6f, 0xa7, 0x2b,
    +	0xaa, 0x41, 0xf8, 0x1b, 0xb4, 0x23, 0x15, 0x53, 0xb1, 0x3c, 0xa8, 0x6a, 0xa4, 0xb5, 0x39, 0x52,
    +	0xcb, 0xec, 0x66, 0x0e, 0xdd, 0xc9, 0xd6, 0x34, 0xc7, 0x75, 0x7e, 0x37, 0xd0, 0xfb, 0x25, 0xaa,
    +	0xc7, 0x5c, 0x2a, 0xfc, 0xdd, 0x4a, 0x9d, 0xc8, 0x66, 0x75, 0x4a, 0xd5, 0xba, 0x4a, 0x7b, 0x79,
    +	0xd4, 0xdd, 0xa9, 0x65, 0xa1, 0x46, 0x5f, 0xa3, 0x1a, 0x57, 0xe0, 0xa7, 0x33, 0x50, 0x3d, 0xbc,
    +	0x79, 0xe7, 0xa3, 0x8d, 0x33, 0xb2, 0x1b, 0x39, 0xb5, 0xf6, 0x28, 0xd5, 0xd3, 0x0c, 0xd3, 0xf9,
    +	0xa3, 0x5a, 0x9a, 0x49, 0x5a, 0x44, 0xfc, 0x0c, 0xd5, 0x7d, 0x1e, 0x3c, 0x18, 0x31, 0xee, 0xb1,
    +	0xbe, 0x07, 0xaf, 0xed, 0x7a, 0x7a, 0x65, 0x48, 0x76, 0x65, 0xc8, 0xa3, 0x40, 0xf5, 0xa2, 0x73,
    +	0x15, 0xf1, 0x60, 0x60, 0xef, 0x25, 0x93, 0x76, 0xfd, 0x74, 0x81, 0x44, 0x0b, 0x5c, 0xfc, 0x3d,
    +	0xda, 0x95, 0xe0, 0x81, 0xa3, 0x44, 0x74, 0xbd, 0xd1, 0x7e, 0xcc, 0xfa, 0xe0, 0x9d, 0xe7, 0x52,
    +	0xbb, 0x9e, 0x96, 0x6c, 0xba, 0xa2, 0x33, 0x24, 0xf6, 0x50, 0xd3, 0x67, 0xcf, 0x9f, 0x06, 0x6c,
    +	0x96, 0x48, 0xf5, 0x7f, 0x26, 0x82, 0x93, 0x49, 0xbb, 0x79, 0x5a, 0x60, 0xd1, 0x25, 0x36, 0x7e,
    +	0x61, 0xa0, 0x56, 0x1c, 0x0c, 0x81, 0x79, 0x6a, 0x38, 0x3e, 0x13, 0xee, 0xf4, 0x9d, 0x38, 0xd3,
    +	0xcd, 0x39, 0xd8, 0xbe, 0x65, 0x1c, 0xde, 0xb0, 0xef, 0x27, 0x93, 0x76, 0xeb, 0xe9, 0x5a, 0xaf,
    +	0x7f, 0x26, 0x6d, 0x73, 0xfd, 0xee, 0x93, 0x71, 0x08, 0xf4, 0x3f, 0x62, 0x74, 0x7e, 0xab, 0xa1,
    +	0x0f, 0xd6, 0xce, 0x34, 0xfe, 0x0a, 0x61, 0xd1, 0x97, 0x10, 0x8d, 0xc0, 0xfd, 0x22, 0x7b, 0xd7,
    +	0xb8, 0x08, 0x74, 0x6f, 0xab, 0x76, 0x2b, 0x9f, 0x11, 0xdc, 0x5b, 0xf1, 0xa0, 0x25, 0x2a, 0xfc,
    +	0x33, 0x6a, 0xb8, 0x59, 0x14, 0x70, 0xcf, 0x84, 0x3b, 0x9d, 0x4a, 0xfb, 0x9a, 0xf7, 0x8c, 0x74,
    +	0x17, 0x21, 0x27, 0x81, 0x8a, 0xc6, 0xf6, 0xbb, 0xf9, 0x51, 0x1a, 0x85, 0x3d, 0x5a, 0x8c, 0x97,
    +	0x26, 0xe3, 0xce, 0x90, 0xf2, 0x81, 0xe7, 0x89, 0x9f, 0xc0, 0xd5, 0xfd, 0xad, 0xcd, 0x93, 0xe9,
    +	0xae, 0x78, 0xd0, 0x12, 0x15, 0xfe, 0x1c, 0x35, 0x9d, 0x38, 0x8a, 0x20, 0x50, 0x5f, 0x66, 0x95,
    +	0xd5, 0xcd, 0xaa, 0xd9, 0xef, 0xe5, 0x9c, 0xe6, 0xc3, 0xc2, 0x2e, 0x5d, 0xf2, 0x4e, 0xf5, 0x2e,
    +	0x48, 0x1e, 0x81, 0x3b, 0xd5, 0xd7, 0x8a, 0xfa, 0x6e, 0x61, 0x97, 0x2e, 0x79, 0xe3, 0x63, 0x54,
    +	0x87, 0xe7, 0x21, 0x38, 0xd3, 0x5a, 0xee, 0x68, 0xf5, 0x7e, 0xae, 0xae, 0x9f, 0x2c, 0xec, 0xd1,
    +	0x82, 0x27, 0x76, 0x10, 0x72, 0x44, 0xe0, 0xf2, 0xec, 0xd7, 0xe1, 0x2d, 0xdd, 0x03, 0x6b, 0xb3,
    +	0x2b, 0xf4, 0x70, 0xaa, 0x9b, 0xbf, 0xcd, 0x33, 0x93, 0xa4, 0x0b, 0xd8, 0x96, 0x87, 0xf0, 0x6a,
    +	0x9b, 0xf0, 0x1e, 0xaa, 0x5e, 0xc0, 0x58, 0x8f, 0xcf, 0x0d, 0x9a, 0x7e, 0xe2, 0xfb, 0xa8, 0x36,
    +	0x62, 0x5e, 0x0c, 0xf9, 0x55, 0xfe, 0x78, 0xb3, 0x73, 0x3c, 0xe1, 0x3e, 0xd0, 0x4c, 0x78, 0x6f,
    +	0xeb, 0xd8, 0xb0, 0xef, 0x5d, 0x5e, 0x99, 0x95, 0x97, 0x57, 0x66, 0xe5, 0xd5, 0x95, 0x59, 0x79,
    +	0x91, 0x98, 0xc6, 0x65, 0x62, 0x1a, 0x2f, 0x13, 0xd3, 0x78, 0x95, 0x98, 0xc6, 0x5f, 0x89, 0x69,
    +	0xfc, 0xf2, 0xb7, 0x59, 0xf9, 0x76, 0xbf, 0xec, 0x7f, 0xcc, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff,
    +	0x0f, 0x42, 0xd2, 0x33, 0xde, 0x08, 0x00, 0x00,
     }
     
     func (m *Eviction) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/policy/v1/generated.proto b/vendor/k8s.io/api/policy/v1/generated.proto
    index a79e7102841c..57128e8112b2 100644
    --- a/vendor/k8s.io/api/policy/v1/generated.proto
    +++ b/vendor/k8s.io/api/policy/v1/generated.proto
    @@ -35,11 +35,11 @@ option go_package = "k8s.io/api/policy/v1";
     message Eviction {
       // ObjectMeta describes the pod that is being evicted.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // DeleteOptions may be provided
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.DeleteOptions deleteOptions = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.DeleteOptions deleteOptions = 2;
     }
     
     // PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods
    @@ -47,7 +47,7 @@ message PodDisruptionBudget {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the PodDisruptionBudget.
       // +optional
    @@ -63,7 +63,7 @@ message PodDisruptionBudgetList {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of PodDisruptionBudgets
       repeated PodDisruptionBudget items = 2;
    @@ -76,7 +76,7 @@ message PodDisruptionBudgetSpec {
       // absence of the evicted pod.  So for example you can prevent all voluntary
       // evictions by specifying "100%".
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString minAvailable = 1;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString minAvailable = 1;
     
       // Label query over pods whose evictions are managed by the disruption
       // budget.
    @@ -84,14 +84,14 @@ message PodDisruptionBudgetSpec {
       // all pods within the namespace.
       // +patchStrategy=replace
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // An eviction is allowed if at most "maxUnavailable" pods selected by
       // "selector" are unavailable after the eviction, i.e. even in absence of
       // the evicted pod. For example, one can prevent all voluntary evictions
       // by specifying 0. This is a mutually exclusive setting with "minAvailable".
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 3;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 3;
     
       // UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods
       // should be considered for eviction. Current implementation considers healthy pods,
    @@ -142,7 +142,7 @@ message PodDisruptionBudgetStatus {
       // If everything goes smooth this map should be empty for the most of the time.
       // Large number of entries in the map may indicate problems with pod deletions.
       // +optional
    -  map disruptedPods = 2;
    +  map disruptedPods = 2;
     
       // Number of pod disruptions that are currently allowed.
       optional int32 disruptionsAllowed = 3;
    @@ -174,6 +174,6 @@ message PodDisruptionBudgetStatus {
       // +patchStrategy=merge
       // +listType=map
       // +listMapKey=type
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 7;
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 7;
     }
     
    diff --git a/vendor/k8s.io/api/policy/v1/types.go b/vendor/k8s.io/api/policy/v1/types.go
    index 45b9550f4a7d..f05367ebe424 100644
    --- a/vendor/k8s.io/api/policy/v1/types.go
    +++ b/vendor/k8s.io/api/policy/v1/types.go
    @@ -170,6 +170,7 @@ const (
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.21
     
     // PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods
     type PodDisruptionBudget struct {
    @@ -188,6 +189,7 @@ type PodDisruptionBudget struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.21
     
     // PodDisruptionBudgetList is a collection of PodDisruptionBudgets.
     type PodDisruptionBudgetList struct {
    @@ -203,6 +205,7 @@ type PodDisruptionBudgetList struct {
     // +genclient
     // +genclient:noVerbs
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.22
     
     // Eviction evicts a pod from its node subject to certain policies and safety constraints.
     // This is a subresource of Pod.  A request to cause such an eviction is
    diff --git a/vendor/k8s.io/api/policy/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/policy/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..d6663b92346d
    --- /dev/null
    +++ b/vendor/k8s.io/api/policy/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,40 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Eviction) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 22
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodDisruptionBudget) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 21
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodDisruptionBudgetList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 21
    +}
    diff --git a/vendor/k8s.io/api/policy/v1beta1/generated.pb.go b/vendor/k8s.io/api/policy/v1beta1/generated.pb.go
    index efba41b3fdad..c3845e994e50 100644
    --- a/vendor/k8s.io/api/policy/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/policy/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/policy/v1beta1/generated.proto
    +// source: k8s.io/api/policy/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -50,7 +50,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Eviction) Reset()      { *m = Eviction{} }
     func (*Eviction) ProtoMessage() {}
     func (*Eviction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_014060e454a820dc, []int{0}
    +	return fileDescriptor_68b366237812cc96, []int{0}
     }
     func (m *Eviction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -78,7 +78,7 @@ var xxx_messageInfo_Eviction proto.InternalMessageInfo
     func (m *PodDisruptionBudget) Reset()      { *m = PodDisruptionBudget{} }
     func (*PodDisruptionBudget) ProtoMessage() {}
     func (*PodDisruptionBudget) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_014060e454a820dc, []int{1}
    +	return fileDescriptor_68b366237812cc96, []int{1}
     }
     func (m *PodDisruptionBudget) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -106,7 +106,7 @@ var xxx_messageInfo_PodDisruptionBudget proto.InternalMessageInfo
     func (m *PodDisruptionBudgetList) Reset()      { *m = PodDisruptionBudgetList{} }
     func (*PodDisruptionBudgetList) ProtoMessage() {}
     func (*PodDisruptionBudgetList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_014060e454a820dc, []int{2}
    +	return fileDescriptor_68b366237812cc96, []int{2}
     }
     func (m *PodDisruptionBudgetList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -134,7 +134,7 @@ var xxx_messageInfo_PodDisruptionBudgetList proto.InternalMessageInfo
     func (m *PodDisruptionBudgetSpec) Reset()      { *m = PodDisruptionBudgetSpec{} }
     func (*PodDisruptionBudgetSpec) ProtoMessage() {}
     func (*PodDisruptionBudgetSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_014060e454a820dc, []int{3}
    +	return fileDescriptor_68b366237812cc96, []int{3}
     }
     func (m *PodDisruptionBudgetSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -162,7 +162,7 @@ var xxx_messageInfo_PodDisruptionBudgetSpec proto.InternalMessageInfo
     func (m *PodDisruptionBudgetStatus) Reset()      { *m = PodDisruptionBudgetStatus{} }
     func (*PodDisruptionBudgetStatus) ProtoMessage() {}
     func (*PodDisruptionBudgetStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_014060e454a820dc, []int{4}
    +	return fileDescriptor_68b366237812cc96, []int{4}
     }
     func (m *PodDisruptionBudgetStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -197,65 +197,64 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/policy/v1beta1/generated.proto", fileDescriptor_014060e454a820dc)
    +	proto.RegisterFile("k8s.io/api/policy/v1beta1/generated.proto", fileDescriptor_68b366237812cc96)
     }
     
    -var fileDescriptor_014060e454a820dc = []byte{
    -	// 857 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0xcd, 0x6e, 0xdb, 0x46,
    -	0x10, 0xc7, 0x45, 0xcb, 0x72, 0x9d, 0xad, 0x24, 0xb8, 0xdb, 0x2f, 0x5b, 0x07, 0x2a, 0xd0, 0x29,
    -	0x28, 0xd0, 0x65, 0x9d, 0x04, 0x85, 0xd1, 0x43, 0x9b, 0x30, 0x32, 0xd2, 0x14, 0x31, 0x6c, 0xac,
    -	0x9c, 0x4b, 0x91, 0x02, 0x5d, 0x91, 0x13, 0x69, 0x2b, 0x92, 0x4b, 0x70, 0x97, 0x6c, 0x74, 0xcb,
    -	0xa1, 0x0f, 0xd0, 0xf7, 0xe8, 0x83, 0xd4, 0x87, 0x1e, 0xd2, 0x5b, 0xd0, 0x83, 0x50, 0xb3, 0x6f,
    -	0xd1, 0x53, 0xc1, 0x25, 0xf5, 0x41, 0x7d, 0x34, 0x4a, 0x0e, 0xb9, 0x71, 0x67, 0xe6, 0xff, 0x1b,
    -	0xce, 0xc7, 0x52, 0x42, 0xf6, 0xe8, 0x44, 0x12, 0x2e, 0xac, 0x51, 0xdc, 0x87, 0x28, 0x00, 0x05,
    -	0xd2, 0x4a, 0x20, 0x70, 0x45, 0x64, 0x15, 0x0e, 0x16, 0x72, 0x2b, 0x14, 0x1e, 0x77, 0xc6, 0x56,
    -	0x72, 0xdc, 0x07, 0xc5, 0x8e, 0xad, 0x01, 0x04, 0x10, 0x31, 0x05, 0x2e, 0x09, 0x23, 0xa1, 0x04,
    -	0x3e, 0xca, 0x43, 0x09, 0x0b, 0x39, 0xc9, 0x43, 0x49, 0x11, 0xda, 0xfa, 0x7c, 0xc0, 0xd5, 0x30,
    -	0xee, 0x13, 0x47, 0xf8, 0xd6, 0x40, 0x0c, 0x84, 0xa5, 0x15, 0xfd, 0xf8, 0x99, 0x3e, 0xe9, 0x83,
    -	0x7e, 0xca, 0x49, 0xad, 0xbb, 0xf3, 0xa4, 0x3e, 0x73, 0x86, 0x3c, 0x80, 0x68, 0x6c, 0x85, 0xa3,
    -	0x41, 0x66, 0x90, 0x96, 0x0f, 0x8a, 0x59, 0xc9, 0x4a, 0xfe, 0x96, 0xb5, 0x49, 0x15, 0xc5, 0x81,
    -	0xe2, 0x3e, 0xac, 0x08, 0xbe, 0x7c, 0x9d, 0x40, 0x3a, 0x43, 0xf0, 0xd9, 0x8a, 0xee, 0xce, 0x26,
    -	0x5d, 0xac, 0xb8, 0x67, 0xf1, 0x40, 0x49, 0x15, 0x2d, 0x8b, 0x3a, 0x7f, 0x19, 0x68, 0xff, 0x34,
    -	0xe1, 0x8e, 0xe2, 0x22, 0xc0, 0x3f, 0xa2, 0xfd, 0xac, 0x0a, 0x97, 0x29, 0x76, 0x68, 0xdc, 0x34,
    -	0x6e, 0xbd, 0x7f, 0xfb, 0x0b, 0x32, 0xef, 0xde, 0x0c, 0x4a, 0xc2, 0xd1, 0x20, 0x33, 0x48, 0x92,
    -	0x45, 0x93, 0xe4, 0x98, 0x9c, 0xf7, 0x7f, 0x02, 0x47, 0x9d, 0x81, 0x62, 0x36, 0xbe, 0x9a, 0xb4,
    -	0x2b, 0xe9, 0xa4, 0x8d, 0xe6, 0x36, 0x3a, 0xa3, 0x62, 0x0f, 0x35, 0x5c, 0xf0, 0x40, 0xc1, 0x79,
    -	0x98, 0x65, 0x94, 0x87, 0x3b, 0x3a, 0xcd, 0x9d, 0xed, 0xd2, 0x74, 0x17, 0xa5, 0xf6, 0x07, 0xe9,
    -	0xa4, 0xdd, 0x28, 0x99, 0x68, 0x19, 0xde, 0xf9, 0x6d, 0x07, 0x7d, 0x78, 0x21, 0xdc, 0x2e, 0x97,
    -	0x51, 0xac, 0x4d, 0x76, 0xec, 0x0e, 0x40, 0xbd, 0x83, 0x3a, 0x2f, 0xd1, 0xae, 0x0c, 0xc1, 0x29,
    -	0xca, 0xbb, 0x4d, 0x36, 0xee, 0x20, 0x59, 0xf3, 0x7e, 0xbd, 0x10, 0x1c, 0xbb, 0x5e, 0xf0, 0x77,
    -	0xb3, 0x13, 0xd5, 0x34, 0xfc, 0x14, 0xed, 0x49, 0xc5, 0x54, 0x2c, 0x0f, 0xab, 0x9a, 0x7b, 0xf7,
    -	0x0d, 0xb9, 0x5a, 0x6b, 0x37, 0x0b, 0xf2, 0x5e, 0x7e, 0xa6, 0x05, 0xb3, 0xf3, 0x87, 0x81, 0x3e,
    -	0x5d, 0xa3, 0x7a, 0xcc, 0xa5, 0xc2, 0x4f, 0x57, 0x3a, 0x46, 0xb6, 0xeb, 0x58, 0xa6, 0xd6, 0xfd,
    -	0x3a, 0x28, 0xb2, 0xee, 0x4f, 0x2d, 0x0b, 0xdd, 0xea, 0xa1, 0x1a, 0x57, 0xe0, 0x67, 0xdb, 0x50,
    -	0x5d, 0x42, 0x6f, 0x51, 0x96, 0xdd, 0x28, 0xd0, 0xb5, 0x47, 0x19, 0x84, 0xe6, 0xac, 0xce, 0x9f,
    -	0xd5, 0xb5, 0xe5, 0x64, 0xed, 0xc4, 0xcf, 0x50, 0xdd, 0xe7, 0xc1, 0xfd, 0x84, 0x71, 0x8f, 0xf5,
    -	0x3d, 0x78, 0xed, 0x12, 0x64, 0x37, 0x88, 0xe4, 0x37, 0x88, 0x3c, 0x0a, 0xd4, 0x79, 0xd4, 0x53,
    -	0x11, 0x0f, 0x06, 0xf6, 0x41, 0x3a, 0x69, 0xd7, 0xcf, 0x16, 0x48, 0xb4, 0xc4, 0xc5, 0x3f, 0xa0,
    -	0x7d, 0x09, 0x1e, 0x38, 0x4a, 0x44, 0x6f, 0xb6, 0xe9, 0x8f, 0x59, 0x1f, 0xbc, 0x5e, 0x21, 0xb5,
    -	0xeb, 0x59, 0xdf, 0xa6, 0x27, 0x3a, 0x43, 0x62, 0x0f, 0x35, 0x7d, 0xf6, 0xfc, 0x49, 0xc0, 0x66,
    -	0x85, 0x54, 0xdf, 0xb2, 0x10, 0x9c, 0x4e, 0xda, 0xcd, 0xb3, 0x12, 0x8b, 0x2e, 0xb1, 0xf1, 0x0b,
    -	0x03, 0xb5, 0xe2, 0x60, 0x08, 0xcc, 0x53, 0xc3, 0xf1, 0x85, 0x70, 0xa7, 0x9f, 0x8d, 0x0b, 0x3d,
    -	0xa1, 0xc3, 0xdd, 0x9b, 0xc6, 0xad, 0x1b, 0xf6, 0xbd, 0x74, 0xd2, 0x6e, 0x3d, 0xd9, 0x18, 0xf5,
    -	0xef, 0xa4, 0x6d, 0x6e, 0xf6, 0x5e, 0x8e, 0x43, 0xa0, 0xff, 0x93, 0xa3, 0xf3, 0x7b, 0x0d, 0x1d,
    -	0x6d, 0x5c, 0x6c, 0xfc, 0x1d, 0xc2, 0xa2, 0x2f, 0x21, 0x4a, 0xc0, 0x7d, 0x98, 0x7f, 0xe6, 0xb8,
    -	0x08, 0xf4, 0x6c, 0xab, 0x76, 0xab, 0xd8, 0x11, 0x7c, 0xbe, 0x12, 0x41, 0xd7, 0xa8, 0xf0, 0x2f,
    -	0x06, 0x6a, 0xb8, 0x79, 0x1a, 0x70, 0x2f, 0x84, 0x3b, 0xdd, 0xcd, 0x87, 0x6f, 0x73, 0xe5, 0x48,
    -	0x77, 0x91, 0x74, 0x1a, 0xa8, 0x68, 0x6c, 0x7f, 0x5c, 0xbc, 0x50, 0xa3, 0xe4, 0xa3, 0xe5, 0xa4,
    -	0x59, 0x49, 0xee, 0x0c, 0x29, 0xef, 0x7b, 0x9e, 0xf8, 0x19, 0x5c, 0x3d, 0xe5, 0xda, 0xbc, 0xa4,
    -	0xee, 0x4a, 0x04, 0x5d, 0xa3, 0xc2, 0x5f, 0xa3, 0xa6, 0x13, 0x47, 0x11, 0x04, 0xea, 0xdb, 0xbc,
    -	0xbf, 0x7a, 0x64, 0x35, 0xfb, 0x93, 0x82, 0xd3, 0x7c, 0x50, 0xf2, 0xd2, 0xa5, 0xe8, 0x4c, 0xef,
    -	0x82, 0xe4, 0x11, 0xb8, 0x53, 0x7d, 0xad, 0xac, 0xef, 0x96, 0xbc, 0x74, 0x29, 0x1a, 0x9f, 0xa0,
    -	0x3a, 0x3c, 0x0f, 0xc1, 0x99, 0x36, 0x74, 0x4f, 0xab, 0x3f, 0x2a, 0xd4, 0xf5, 0xd3, 0x05, 0x1f,
    -	0x2d, 0x45, 0x62, 0x07, 0x21, 0x47, 0x04, 0x2e, 0xcf, 0x7f, 0x32, 0xde, 0xd3, 0x83, 0xb0, 0xb6,
    -	0xbb, 0x48, 0x0f, 0xa6, 0xba, 0xf9, 0x07, 0x7b, 0x66, 0x92, 0x74, 0x01, 0xdb, 0xf2, 0x10, 0x5e,
    -	0x1d, 0x13, 0x3e, 0x40, 0xd5, 0x11, 0x8c, 0xf5, 0x12, 0xdd, 0xa0, 0xd9, 0x23, 0xbe, 0x87, 0x6a,
    -	0x09, 0xf3, 0x62, 0x28, 0x2e, 0xf4, 0x67, 0xdb, 0xbd, 0xc7, 0x25, 0xf7, 0x81, 0xe6, 0xc2, 0xaf,
    -	0x76, 0x4e, 0x0c, 0xfb, 0x9b, 0xab, 0x6b, 0xb3, 0xf2, 0xf2, 0xda, 0xac, 0xbc, 0xba, 0x36, 0x2b,
    -	0x2f, 0x52, 0xd3, 0xb8, 0x4a, 0x4d, 0xe3, 0x65, 0x6a, 0x1a, 0xaf, 0x52, 0xd3, 0xf8, 0x3b, 0x35,
    -	0x8d, 0x5f, 0xff, 0x31, 0x2b, 0xdf, 0x1f, 0x6d, 0xfc, 0x9b, 0xf3, 0x5f, 0x00, 0x00, 0x00, 0xff,
    -	0xff, 0x96, 0x9a, 0x3a, 0xb5, 0x1b, 0x09, 0x00, 0x00,
    +var fileDescriptor_68b366237812cc96 = []byte{
    +	// 843 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0x4d, 0x8f, 0xdb, 0x44,
    +	0x18, 0xc7, 0xe3, 0xcd, 0x66, 0xd9, 0x0e, 0x49, 0xb4, 0x0c, 0x6f, 0xbb, 0x39, 0x38, 0x55, 0x4e,
    +	0x05, 0x89, 0x31, 0xdb, 0x56, 0x68, 0xc5, 0x01, 0x5a, 0x37, 0xab, 0x52, 0xd4, 0xd5, 0xae, 0x26,
    +	0xdb, 0x0b, 0x2a, 0x12, 0x13, 0xfb, 0xa9, 0x33, 0xc4, 0xf6, 0x58, 0x9e, 0x71, 0x68, 0x6e, 0x3d,
    +	0xf0, 0x01, 0xf8, 0x1e, 0x7c, 0x10, 0xf6, 0xc0, 0xa1, 0xdc, 0x2a, 0x0e, 0x11, 0x6b, 0xbe, 0x05,
    +	0x27, 0xe4, 0xb1, 0xf3, 0xe2, 0xbc, 0xd0, 0xb4, 0x07, 0x6e, 0x9e, 0x67, 0x9e, 0xff, 0xef, 0x99,
    +	0xe7, 0x65, 0x26, 0x41, 0x9f, 0x0c, 0x4f, 0x24, 0xe1, 0xc2, 0x62, 0x11, 0xb7, 0x22, 0xe1, 0x73,
    +	0x67, 0x6c, 0x8d, 0x8e, 0xfb, 0xa0, 0xd8, 0xb1, 0xe5, 0x41, 0x08, 0x31, 0x53, 0xe0, 0x92, 0x28,
    +	0x16, 0x4a, 0xe0, 0xa3, 0xdc, 0x95, 0xb0, 0x88, 0x93, 0xdc, 0x95, 0x14, 0xae, 0xad, 0xcf, 0x3c,
    +	0xae, 0x06, 0x49, 0x9f, 0x38, 0x22, 0xb0, 0x3c, 0xe1, 0x09, 0x4b, 0x2b, 0xfa, 0xc9, 0x33, 0xbd,
    +	0xd2, 0x0b, 0xfd, 0x95, 0x93, 0x5a, 0x77, 0xe7, 0x41, 0x03, 0xe6, 0x0c, 0x78, 0x08, 0xf1, 0xd8,
    +	0x8a, 0x86, 0x5e, 0x66, 0x90, 0x56, 0x00, 0x8a, 0x59, 0xa3, 0x95, 0xf8, 0x2d, 0x6b, 0x93, 0x2a,
    +	0x4e, 0x42, 0xc5, 0x03, 0x58, 0x11, 0x7c, 0xf1, 0x3a, 0x81, 0x74, 0x06, 0x10, 0xb0, 0x15, 0xdd,
    +	0x9d, 0x4d, 0xba, 0x44, 0x71, 0xdf, 0xe2, 0xa1, 0x92, 0x2a, 0x5e, 0x16, 0x75, 0xfe, 0x34, 0xd0,
    +	0xfe, 0xe9, 0x88, 0x3b, 0x8a, 0x8b, 0x10, 0xff, 0x80, 0xf6, 0xb3, 0x2c, 0x5c, 0xa6, 0xd8, 0xa1,
    +	0x71, 0xd3, 0xb8, 0xf5, 0xee, 0xed, 0xcf, 0xc9, 0xbc, 0x7a, 0x33, 0x28, 0x89, 0x86, 0x5e, 0x66,
    +	0x90, 0x24, 0xf3, 0x26, 0xa3, 0x63, 0x72, 0xde, 0xff, 0x11, 0x1c, 0x75, 0x06, 0x8a, 0xd9, 0xf8,
    +	0x6a, 0xd2, 0xae, 0xa4, 0x93, 0x36, 0x9a, 0xdb, 0xe8, 0x8c, 0x8a, 0x7d, 0xd4, 0x70, 0xc1, 0x07,
    +	0x05, 0xe7, 0x51, 0x16, 0x51, 0x1e, 0xee, 0xe8, 0x30, 0x77, 0xb6, 0x0b, 0xd3, 0x5d, 0x94, 0xda,
    +	0xef, 0xa5, 0x93, 0x76, 0xa3, 0x64, 0xa2, 0x65, 0x78, 0xe7, 0xd7, 0x1d, 0xf4, 0xfe, 0x85, 0x70,
    +	0xbb, 0x5c, 0xc6, 0x89, 0x36, 0xd9, 0x89, 0xeb, 0x81, 0xfa, 0x1f, 0xf2, 0xbc, 0x44, 0xbb, 0x32,
    +	0x02, 0xa7, 0x48, 0xef, 0x36, 0xd9, 0x38, 0x83, 0x64, 0xcd, 0xf9, 0x7a, 0x11, 0x38, 0x76, 0xbd,
    +	0xe0, 0xef, 0x66, 0x2b, 0xaa, 0x69, 0xf8, 0x29, 0xda, 0x93, 0x8a, 0xa9, 0x44, 0x1e, 0x56, 0x35,
    +	0xf7, 0xee, 0x1b, 0x72, 0xb5, 0xd6, 0x6e, 0x16, 0xe4, 0xbd, 0x7c, 0x4d, 0x0b, 0x66, 0xe7, 0x77,
    +	0x03, 0x7d, 0xbc, 0x46, 0xf5, 0x98, 0x4b, 0x85, 0x9f, 0xae, 0x54, 0x8c, 0x6c, 0x57, 0xb1, 0x4c,
    +	0xad, 0xeb, 0x75, 0x50, 0x44, 0xdd, 0x9f, 0x5a, 0x16, 0xaa, 0xd5, 0x43, 0x35, 0xae, 0x20, 0xc8,
    +	0xa6, 0xa1, 0xba, 0x84, 0xde, 0x22, 0x2d, 0xbb, 0x51, 0xa0, 0x6b, 0x8f, 0x32, 0x08, 0xcd, 0x59,
    +	0x9d, 0x3f, 0xaa, 0x6b, 0xd3, 0xc9, 0xca, 0x89, 0x9f, 0xa1, 0x7a, 0xc0, 0xc3, 0xfb, 0x23, 0xc6,
    +	0x7d, 0xd6, 0xf7, 0xe1, 0xb5, 0x43, 0x90, 0xdd, 0x20, 0x92, 0xdf, 0x20, 0xf2, 0x28, 0x54, 0xe7,
    +	0x71, 0x4f, 0xc5, 0x3c, 0xf4, 0xec, 0x83, 0x74, 0xd2, 0xae, 0x9f, 0x2d, 0x90, 0x68, 0x89, 0x8b,
    +	0xbf, 0x47, 0xfb, 0x12, 0x7c, 0x70, 0x94, 0x88, 0xdf, 0x6c, 0xd2, 0x1f, 0xb3, 0x3e, 0xf8, 0xbd,
    +	0x42, 0x6a, 0xd7, 0xb3, 0xba, 0x4d, 0x57, 0x74, 0x86, 0xc4, 0x3e, 0x6a, 0x06, 0xec, 0xf9, 0x93,
    +	0x90, 0xcd, 0x12, 0xa9, 0xbe, 0x65, 0x22, 0x38, 0x9d, 0xb4, 0x9b, 0x67, 0x25, 0x16, 0x5d, 0x62,
    +	0xe3, 0x17, 0x06, 0x6a, 0x25, 0xe1, 0x00, 0x98, 0xaf, 0x06, 0xe3, 0x0b, 0xe1, 0x4e, 0x9f, 0x8d,
    +	0x0b, 0xdd, 0xa1, 0xc3, 0xdd, 0x9b, 0xc6, 0xad, 0x1b, 0xf6, 0xbd, 0x74, 0xd2, 0x6e, 0x3d, 0xd9,
    +	0xe8, 0xf5, 0xcf, 0xa4, 0x6d, 0x6e, 0xde, 0xbd, 0x1c, 0x47, 0x40, 0xff, 0x23, 0x46, 0xe7, 0xb7,
    +	0x1a, 0x3a, 0xda, 0x38, 0xd8, 0xf8, 0x5b, 0x84, 0x45, 0x5f, 0x42, 0x3c, 0x02, 0xf7, 0x61, 0xfe,
    +	0xcc, 0x71, 0x11, 0xea, 0xde, 0x56, 0xed, 0x56, 0x31, 0x23, 0xf8, 0x7c, 0xc5, 0x83, 0xae, 0x51,
    +	0xe1, 0x9f, 0x0d, 0xd4, 0x70, 0xf3, 0x30, 0xe0, 0x5e, 0x08, 0x77, 0x3a, 0x9b, 0x0f, 0xdf, 0xe6,
    +	0xca, 0x91, 0xee, 0x22, 0xe9, 0x34, 0x54, 0xf1, 0xd8, 0xfe, 0xb0, 0x38, 0x50, 0xa3, 0xb4, 0x47,
    +	0xcb, 0x41, 0xb3, 0x94, 0xdc, 0x19, 0x52, 0xde, 0xf7, 0x7d, 0xf1, 0x13, 0xb8, 0xba, 0xcb, 0xb5,
    +	0x79, 0x4a, 0xdd, 0x15, 0x0f, 0xba, 0x46, 0x85, 0xbf, 0x42, 0x4d, 0x27, 0x89, 0x63, 0x08, 0xd5,
    +	0x37, 0x79, 0x7d, 0x75, 0xcb, 0x6a, 0xf6, 0x47, 0x05, 0xa7, 0xf9, 0xa0, 0xb4, 0x4b, 0x97, 0xbc,
    +	0x33, 0xbd, 0x0b, 0x92, 0xc7, 0xe0, 0x4e, 0xf5, 0xb5, 0xb2, 0xbe, 0x5b, 0xda, 0xa5, 0x4b, 0xde,
    +	0xf8, 0x04, 0xd5, 0xe1, 0x79, 0x04, 0xce, 0xb4, 0xa0, 0x7b, 0x5a, 0xfd, 0x41, 0xa1, 0xae, 0x9f,
    +	0x2e, 0xec, 0xd1, 0x92, 0x27, 0x76, 0x10, 0x72, 0x44, 0xe8, 0xf2, 0xfc, 0x27, 0xe3, 0x1d, 0xdd,
    +	0x08, 0x6b, 0xbb, 0x8b, 0xf4, 0x60, 0xaa, 0x9b, 0x3f, 0xd8, 0x33, 0x93, 0xa4, 0x0b, 0xd8, 0x96,
    +	0x8f, 0xf0, 0x6a, 0x9b, 0xf0, 0x01, 0xaa, 0x0e, 0x61, 0xac, 0x87, 0xe8, 0x06, 0xcd, 0x3e, 0xf1,
    +	0x3d, 0x54, 0x1b, 0x31, 0x3f, 0x81, 0xe2, 0x42, 0x7f, 0xba, 0xdd, 0x39, 0x2e, 0x79, 0x00, 0x34,
    +	0x17, 0x7e, 0xb9, 0x73, 0x62, 0xd8, 0x5f, 0x5f, 0x5d, 0x9b, 0x95, 0x97, 0xd7, 0x66, 0xe5, 0xd5,
    +	0xb5, 0x59, 0x79, 0x91, 0x9a, 0xc6, 0x55, 0x6a, 0x1a, 0x2f, 0x53, 0xd3, 0x78, 0x95, 0x9a, 0xc6,
    +	0x5f, 0xa9, 0x69, 0xfc, 0xf2, 0xb7, 0x59, 0xf9, 0xee, 0x68, 0xe3, 0xdf, 0x9c, 0x7f, 0x03, 0x00,
    +	0x00, 0xff, 0xff, 0x3c, 0xbe, 0x15, 0xfb, 0x02, 0x09, 0x00, 0x00,
     }
     
     func (m *Eviction) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/policy/v1beta1/generated.proto b/vendor/k8s.io/api/policy/v1beta1/generated.proto
    index d1409913f1e2..91e33f2332b4 100644
    --- a/vendor/k8s.io/api/policy/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/policy/v1beta1/generated.proto
    @@ -35,11 +35,11 @@ option go_package = "k8s.io/api/policy/v1beta1";
     message Eviction {
       // ObjectMeta describes the pod that is being evicted.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // DeleteOptions may be provided
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.DeleteOptions deleteOptions = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.DeleteOptions deleteOptions = 2;
     }
     
     // PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods
    @@ -47,7 +47,7 @@ message PodDisruptionBudget {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Specification of the desired behavior of the PodDisruptionBudget.
       // +optional
    @@ -63,7 +63,7 @@ message PodDisruptionBudgetList {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items list individual PodDisruptionBudget objects
       repeated PodDisruptionBudget items = 2;
    @@ -76,7 +76,7 @@ message PodDisruptionBudgetSpec {
       // absence of the evicted pod.  So for example you can prevent all voluntary
       // evictions by specifying "100%".
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString minAvailable = 1;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString minAvailable = 1;
     
       // Label query over pods whose evictions are managed by the disruption
       // budget.
    @@ -84,14 +84,14 @@ message PodDisruptionBudgetSpec {
       // An empty selector ({}) also selects no pods, which differs from standard behavior of selecting all pods.
       // In policy/v1, an empty selector will select all pods in the namespace.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
     
       // An eviction is allowed if at most "maxUnavailable" pods selected by
       // "selector" are unavailable after the eviction, i.e. even in absence of
       // the evicted pod. For example, one can prevent all voluntary evictions
       // by specifying 0. This is a mutually exclusive setting with "minAvailable".
       // +optional
    -  optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 3;
    +  optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 3;
     
       // UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods
       // should be considered for eviction. Current implementation considers healthy pods,
    @@ -142,7 +142,7 @@ message PodDisruptionBudgetStatus {
       // If everything goes smooth this map should be empty for the most of the time.
       // Large number of entries in the map may indicate problems with pod deletions.
       // +optional
    -  map disruptedPods = 2;
    +  map disruptedPods = 2;
     
       // Number of pod disruptions that are currently allowed.
       optional int32 disruptionsAllowed = 3;
    @@ -174,6 +174,6 @@ message PodDisruptionBudgetStatus {
       // +patchStrategy=merge
       // +listType=map
       // +listMapKey=type
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 7;
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 7;
     }
     
    diff --git a/vendor/k8s.io/api/rbac/v1/doc.go b/vendor/k8s.io/api/rbac/v1/doc.go
    index 80f43ce92246..b0e4e5b5b586 100644
    --- a/vendor/k8s.io/api/rbac/v1/doc.go
    +++ b/vendor/k8s.io/api/rbac/v1/doc.go
    @@ -17,7 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    -
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=rbac.authorization.k8s.io
     
     package v1 // import "k8s.io/api/rbac/v1"
    diff --git a/vendor/k8s.io/api/rbac/v1/generated.pb.go b/vendor/k8s.io/api/rbac/v1/generated.pb.go
    index 4e466eb285a7..112d18fb0651 100644
    --- a/vendor/k8s.io/api/rbac/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/rbac/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1/generated.proto
    +// source: k8s.io/api/rbac/v1/generated.proto
     
     package v1
     
    @@ -47,7 +47,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *AggregationRule) Reset()      { *m = AggregationRule{} }
     func (*AggregationRule) ProtoMessage() {}
     func (*AggregationRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{0}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{0}
     }
     func (m *AggregationRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +75,7 @@ var xxx_messageInfo_AggregationRule proto.InternalMessageInfo
     func (m *ClusterRole) Reset()      { *m = ClusterRole{} }
     func (*ClusterRole) ProtoMessage() {}
     func (*ClusterRole) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{1}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{1}
     }
     func (m *ClusterRole) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +103,7 @@ var xxx_messageInfo_ClusterRole proto.InternalMessageInfo
     func (m *ClusterRoleBinding) Reset()      { *m = ClusterRoleBinding{} }
     func (*ClusterRoleBinding) ProtoMessage() {}
     func (*ClusterRoleBinding) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{2}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{2}
     }
     func (m *ClusterRoleBinding) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -131,7 +131,7 @@ var xxx_messageInfo_ClusterRoleBinding proto.InternalMessageInfo
     func (m *ClusterRoleBindingList) Reset()      { *m = ClusterRoleBindingList{} }
     func (*ClusterRoleBindingList) ProtoMessage() {}
     func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{3}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{3}
     }
     func (m *ClusterRoleBindingList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -159,7 +159,7 @@ var xxx_messageInfo_ClusterRoleBindingList proto.InternalMessageInfo
     func (m *ClusterRoleList) Reset()      { *m = ClusterRoleList{} }
     func (*ClusterRoleList) ProtoMessage() {}
     func (*ClusterRoleList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{4}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{4}
     }
     func (m *ClusterRoleList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -187,7 +187,7 @@ var xxx_messageInfo_ClusterRoleList proto.InternalMessageInfo
     func (m *PolicyRule) Reset()      { *m = PolicyRule{} }
     func (*PolicyRule) ProtoMessage() {}
     func (*PolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{5}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{5}
     }
     func (m *PolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -215,7 +215,7 @@ var xxx_messageInfo_PolicyRule proto.InternalMessageInfo
     func (m *Role) Reset()      { *m = Role{} }
     func (*Role) ProtoMessage() {}
     func (*Role) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{6}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{6}
     }
     func (m *Role) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -243,7 +243,7 @@ var xxx_messageInfo_Role proto.InternalMessageInfo
     func (m *RoleBinding) Reset()      { *m = RoleBinding{} }
     func (*RoleBinding) ProtoMessage() {}
     func (*RoleBinding) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{7}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{7}
     }
     func (m *RoleBinding) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -271,7 +271,7 @@ var xxx_messageInfo_RoleBinding proto.InternalMessageInfo
     func (m *RoleBindingList) Reset()      { *m = RoleBindingList{} }
     func (*RoleBindingList) ProtoMessage() {}
     func (*RoleBindingList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{8}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{8}
     }
     func (m *RoleBindingList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -299,7 +299,7 @@ var xxx_messageInfo_RoleBindingList proto.InternalMessageInfo
     func (m *RoleList) Reset()      { *m = RoleList{} }
     func (*RoleList) ProtoMessage() {}
     func (*RoleList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{9}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{9}
     }
     func (m *RoleList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -327,7 +327,7 @@ var xxx_messageInfo_RoleList proto.InternalMessageInfo
     func (m *RoleRef) Reset()      { *m = RoleRef{} }
     func (*RoleRef) ProtoMessage() {}
     func (*RoleRef) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{10}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{10}
     }
     func (m *RoleRef) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -355,7 +355,7 @@ var xxx_messageInfo_RoleRef proto.InternalMessageInfo
     func (m *Subject) Reset()      { *m = Subject{} }
     func (*Subject) ProtoMessage() {}
     func (*Subject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_979ffd7b30c07419, []int{11}
    +	return fileDescriptor_c8ba2e7dd472de66, []int{11}
     }
     func (m *Subject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -396,62 +396,61 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1/generated.proto", fileDescriptor_979ffd7b30c07419)
    -}
    -
    -var fileDescriptor_979ffd7b30c07419 = []byte{
    -	// 809 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x56, 0xcf, 0x6b, 0xe3, 0x46,
    -	0x14, 0xf6, 0x38, 0x36, 0xb1, 0xc6, 0x35, 0x6e, 0xa6, 0xa1, 0x88, 0xb4, 0xc8, 0x41, 0x85, 0x12,
    -	0x68, 0x2b, 0x35, 0x69, 0x69, 0x03, 0x25, 0x87, 0x28, 0xa5, 0x25, 0x24, 0x4d, 0xc3, 0x84, 0xf6,
    -	0x50, 0x7a, 0xe8, 0x48, 0x9e, 0x28, 0x53, 0xeb, 0x17, 0x33, 0x92, 0x21, 0xf4, 0x52, 0x0a, 0x3d,
    -	0xec, 0x6d, 0x8f, 0xbb, 0x7f, 0xc1, 0x5e, 0x76, 0x8f, 0xfb, 0x17, 0xec, 0x25, 0xc7, 0x1c, 0x73,
    -	0x32, 0x1b, 0xed, 0x1f, 0xb2, 0x8b, 0x7e, 0x59, 0xfe, 0xa1, 0x6c, 0x7c, 0x32, 0x2c, 0x7b, 0xb2,
    -	0xe7, 0xbd, 0xef, 0x7d, 0xef, 0x9b, 0x4f, 0x7a, 0xcf, 0x86, 0x3f, 0x0c, 0x76, 0x85, 0xc6, 0x7c,
    -	0x7d, 0x10, 0x99, 0x94, 0x7b, 0x34, 0xa4, 0x42, 0x1f, 0x52, 0xaf, 0xef, 0x73, 0x3d, 0x4f, 0x90,
    -	0x80, 0xe9, 0xdc, 0x24, 0x96, 0x3e, 0xdc, 0xd6, 0x6d, 0xea, 0x51, 0x4e, 0x42, 0xda, 0xd7, 0x02,
    -	0xee, 0x87, 0x3e, 0x42, 0x19, 0x46, 0x23, 0x01, 0xd3, 0x12, 0x8c, 0x36, 0xdc, 0xde, 0xf8, 0xca,
    -	0x66, 0xe1, 0x45, 0x64, 0x6a, 0x96, 0xef, 0xea, 0xb6, 0x6f, 0xfb, 0x7a, 0x0a, 0x35, 0xa3, 0xf3,
    -	0xf4, 0x94, 0x1e, 0xd2, 0x6f, 0x19, 0xc5, 0xc6, 0xb7, 0x65, 0x1b, 0x97, 0x58, 0x17, 0xcc, 0xa3,
    -	0xfc, 0x52, 0x0f, 0x06, 0x76, 0x12, 0x10, 0xba, 0x4b, 0x43, 0x52, 0xd1, 0x78, 0x43, 0xbf, 0xab,
    -	0x8a, 0x47, 0x5e, 0xc8, 0x5c, 0x3a, 0x57, 0xf0, 0xdd, 0x7d, 0x05, 0xc2, 0xba, 0xa0, 0x2e, 0x99,
    -	0xad, 0x53, 0x1f, 0x03, 0xd8, 0xdd, 0xb7, 0x6d, 0x4e, 0x6d, 0x12, 0x32, 0xdf, 0xc3, 0x91, 0x43,
    -	0xd1, 0xff, 0x00, 0xae, 0x5b, 0x4e, 0x24, 0x42, 0xca, 0xb1, 0xef, 0xd0, 0x33, 0xea, 0x50, 0x2b,
    -	0xf4, 0xb9, 0x90, 0xc1, 0xe6, 0xca, 0x56, 0x7b, 0xe7, 0x1b, 0xad, 0x74, 0x65, 0xdc, 0x4b, 0x0b,
    -	0x06, 0x76, 0x12, 0x10, 0x5a, 0x72, 0x25, 0x6d, 0xb8, 0xad, 0x1d, 0x13, 0x93, 0x3a, 0x45, 0xad,
    -	0xf1, 0xe9, 0xd5, 0xa8, 0x57, 0x8b, 0x47, 0xbd, 0xf5, 0x83, 0x0a, 0x62, 0x5c, 0xd9, 0x4e, 0x7d,
    -	0x54, 0x87, 0xed, 0x09, 0x38, 0xfa, 0x0b, 0xb6, 0x12, 0xf2, 0x3e, 0x09, 0x89, 0x0c, 0x36, 0xc1,
    -	0x56, 0x7b, 0xe7, 0xeb, 0xc5, 0xa4, 0xfc, 0x6a, 0xfe, 0x4d, 0xad, 0xf0, 0x17, 0x1a, 0x12, 0x03,
    -	0xe5, 0x3a, 0x60, 0x19, 0xc3, 0x63, 0x56, 0x74, 0x00, 0x9b, 0x3c, 0x72, 0xa8, 0x90, 0xeb, 0xe9,
    -	0x4d, 0x15, 0x6d, 0xfe, 0xf9, 0x6b, 0xa7, 0xbe, 0xc3, 0xac, 0xcb, 0xc4, 0x28, 0xa3, 0x93, 0x93,
    -	0x35, 0x93, 0x93, 0xc0, 0x59, 0x2d, 0x32, 0x61, 0x97, 0x4c, 0x3b, 0x2a, 0xaf, 0xa4, 0x6a, 0x3f,
    -	0xab, 0xa2, 0x9b, 0x31, 0xdf, 0xf8, 0x28, 0x1e, 0xf5, 0x66, 0x9f, 0x08, 0x9e, 0x25, 0x54, 0x1f,
    -	0xd4, 0x21, 0x9a, 0xb0, 0xc6, 0x60, 0x5e, 0x9f, 0x79, 0xf6, 0x12, 0x1c, 0x3a, 0x84, 0x2d, 0x11,
    -	0xa5, 0x89, 0xc2, 0xa4, 0x4f, 0xaa, 0x6e, 0x75, 0x96, 0x61, 0x8c, 0x0f, 0x73, 0xb2, 0x56, 0x1e,
    -	0x10, 0x78, 0x5c, 0x8e, 0x7e, 0x82, 0xab, 0xdc, 0x77, 0x28, 0xa6, 0xe7, 0xb9, 0x3f, 0x95, 0x4c,
    -	0x38, 0x83, 0x18, 0xdd, 0x9c, 0x69, 0x35, 0x0f, 0xe0, 0xa2, 0x58, 0x7d, 0x01, 0xe0, 0xc7, 0xf3,
    -	0x5e, 0x1c, 0x33, 0x11, 0xa2, 0x3f, 0xe7, 0xfc, 0xd0, 0x16, 0x7c, 0x79, 0x99, 0xc8, 0xdc, 0x18,
    -	0x5f, 0xa0, 0x88, 0x4c, 0x78, 0x71, 0x04, 0x9b, 0x2c, 0xa4, 0x6e, 0x61, 0xc4, 0xe7, 0x55, 0xf2,
    -	0xe7, 0x85, 0x95, 0x6f, 0xcd, 0x61, 0x52, 0x8c, 0x33, 0x0e, 0xf5, 0x39, 0x80, 0xdd, 0x09, 0xf0,
    -	0x12, 0xe4, 0xff, 0x38, 0x2d, 0xbf, 0x77, 0x9f, 0xfc, 0x6a, 0xdd, 0xaf, 0x01, 0x84, 0xe5, 0x48,
    -	0xa0, 0x1e, 0x6c, 0x0e, 0x29, 0x37, 0xb3, 0x5d, 0x21, 0x19, 0x52, 0x82, 0xff, 0x3d, 0x09, 0xe0,
    -	0x2c, 0x8e, 0xbe, 0x80, 0x12, 0x09, 0xd8, 0xcf, 0xdc, 0x8f, 0x82, 0xac, 0xb3, 0x64, 0x74, 0xe2,
    -	0x51, 0x4f, 0xda, 0x3f, 0x3d, 0xcc, 0x82, 0xb8, 0xcc, 0x27, 0x60, 0x4e, 0x85, 0x1f, 0x71, 0x8b,
    -	0x0a, 0x79, 0xa5, 0x04, 0xe3, 0x22, 0x88, 0xcb, 0x3c, 0xfa, 0x1e, 0x76, 0x8a, 0xc3, 0x09, 0x71,
    -	0xa9, 0x90, 0x1b, 0x69, 0xc1, 0x5a, 0x3c, 0xea, 0x75, 0xf0, 0x64, 0x02, 0x4f, 0xe3, 0xd0, 0x1e,
    -	0xec, 0x7a, 0xbe, 0x57, 0x40, 0x7e, 0xc3, 0xc7, 0x42, 0x6e, 0xa6, 0xa5, 0xe9, 0x2c, 0x9e, 0x4c,
    -	0xa7, 0xf0, 0x2c, 0x56, 0x7d, 0x06, 0x60, 0xe3, 0x1d, 0xda, 0x4f, 0xea, 0x7f, 0x75, 0xd8, 0x7e,
    -	0xef, 0x97, 0x46, 0x32, 0x6e, 0xcb, 0xdd, 0x16, 0x8b, 0x8c, 0xdb, 0xfd, 0x6b, 0xe2, 0x09, 0x80,
    -	0xad, 0x25, 0xed, 0x87, 0xbd, 0x69, 0xc1, 0xf2, 0x9d, 0x82, 0xab, 0x95, 0xfe, 0x03, 0x0b, 0xd7,
    -	0xd1, 0x97, 0xb0, 0x55, 0xcc, 0x74, 0xaa, 0x53, 0x2a, 0xfb, 0x16, 0x63, 0x8f, 0xc7, 0x08, 0xb4,
    -	0x09, 0x1b, 0x03, 0xe6, 0xf5, 0xe5, 0x7a, 0x8a, 0xfc, 0x20, 0x47, 0x36, 0x8e, 0x98, 0xd7, 0xc7,
    -	0x69, 0x26, 0x41, 0x78, 0xc4, 0xcd, 0x7e, 0x56, 0x27, 0x10, 0xc9, 0x34, 0xe3, 0x34, 0xa3, 0x3e,
    -	0x05, 0x70, 0x35, 0x7f, 0x7b, 0xc6, 0x7c, 0xe0, 0x4e, 0xbe, 0x49, 0x7d, 0xf5, 0x45, 0xf4, 0xbd,
    -	0xbd, 0x3b, 0xd2, 0xa1, 0x94, 0x7c, 0x8a, 0x80, 0x58, 0x54, 0x6e, 0xa4, 0xb0, 0xb5, 0x1c, 0x26,
    -	0x9d, 0x14, 0x09, 0x5c, 0x62, 0x8c, 0xdd, 0xab, 0x5b, 0xa5, 0x76, 0x7d, 0xab, 0xd4, 0x6e, 0x6e,
    -	0x95, 0xda, 0xbf, 0xb1, 0x02, 0xae, 0x62, 0x05, 0x5c, 0xc7, 0x0a, 0xb8, 0x89, 0x15, 0xf0, 0x32,
    -	0x56, 0xc0, 0xc3, 0x57, 0x4a, 0xed, 0x0f, 0x34, 0xff, 0x8f, 0xf5, 0x4d, 0x00, 0x00, 0x00, 0xff,
    -	0xff, 0xec, 0x4f, 0xa6, 0x29, 0xdf, 0x0a, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/rbac/v1/generated.proto", fileDescriptor_c8ba2e7dd472de66)
    +}
    +
    +var fileDescriptor_c8ba2e7dd472de66 = []byte{
    +	// 790 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x56, 0x4d, 0x6f, 0xd3, 0x4a,
    +	0x14, 0xcd, 0xa4, 0x89, 0x1a, 0x4f, 0x5e, 0x94, 0xd7, 0x79, 0xd5, 0x93, 0xd5, 0xf7, 0xe4, 0x54,
    +	0x46, 0x42, 0x95, 0x00, 0x9b, 0x16, 0x04, 0xdd, 0x74, 0x51, 0x17, 0x81, 0xaa, 0x96, 0x52, 0x4d,
    +	0x05, 0x0b, 0xc4, 0x82, 0x89, 0x33, 0x75, 0x87, 0xf8, 0x4b, 0x1e, 0x3b, 0x52, 0xc5, 0x06, 0x21,
    +	0xb1, 0x60, 0xc7, 0x12, 0x7e, 0x01, 0x1b, 0x58, 0xf2, 0x0b, 0xd8, 0x74, 0xd9, 0x65, 0x57, 0x11,
    +	0x35, 0x3f, 0x04, 0xe4, 0xaf, 0x38, 0x1f, 0x2e, 0xcd, 0x2a, 0x12, 0x62, 0x95, 0xcc, 0xbd, 0xe7,
    +	0x9e, 0x7b, 0xe6, 0xd8, 0xf7, 0x26, 0x50, 0xee, 0xae, 0x73, 0x85, 0x39, 0x2a, 0x71, 0x99, 0xea,
    +	0xb5, 0x89, 0xae, 0xf6, 0x56, 0x55, 0x83, 0xda, 0xd4, 0x23, 0x3e, 0xed, 0x28, 0xae, 0xe7, 0xf8,
    +	0x0e, 0x42, 0x09, 0x46, 0x21, 0x2e, 0x53, 0x22, 0x8c, 0xd2, 0x5b, 0x5d, 0xba, 0x61, 0x30, 0xff,
    +	0x28, 0x68, 0x2b, 0xba, 0x63, 0xa9, 0x86, 0x63, 0x38, 0x6a, 0x0c, 0x6d, 0x07, 0x87, 0xf1, 0x29,
    +	0x3e, 0xc4, 0xdf, 0x12, 0x8a, 0xa5, 0xdb, 0x79, 0x1b, 0x8b, 0xe8, 0x47, 0xcc, 0xa6, 0xde, 0xb1,
    +	0xea, 0x76, 0x8d, 0x28, 0xc0, 0x55, 0x8b, 0xfa, 0xa4, 0xa0, 0xf1, 0x92, 0x7a, 0x51, 0x95, 0x17,
    +	0xd8, 0x3e, 0xb3, 0xe8, 0x44, 0xc1, 0x9d, 0xcb, 0x0a, 0xb8, 0x7e, 0x44, 0x2d, 0x32, 0x5e, 0x27,
    +	0x7f, 0x00, 0xb0, 0xb9, 0x69, 0x18, 0x1e, 0x35, 0x88, 0xcf, 0x1c, 0x1b, 0x07, 0x26, 0x45, 0x6f,
    +	0x00, 0x5c, 0xd4, 0xcd, 0x80, 0xfb, 0xd4, 0xc3, 0x8e, 0x49, 0x0f, 0xa8, 0x49, 0x75, 0xdf, 0xf1,
    +	0xb8, 0x08, 0x96, 0xe7, 0x56, 0xea, 0x6b, 0xb7, 0x94, 0xdc, 0x95, 0x41, 0x2f, 0xc5, 0xed, 0x1a,
    +	0x51, 0x80, 0x2b, 0xd1, 0x95, 0x94, 0xde, 0xaa, 0xb2, 0x4b, 0xda, 0xd4, 0xcc, 0x6a, 0xb5, 0xff,
    +	0x4f, 0xfa, 0xad, 0x52, 0xd8, 0x6f, 0x2d, 0x6e, 0x15, 0x10, 0xe3, 0xc2, 0x76, 0xf2, 0xfb, 0x32,
    +	0xac, 0x0f, 0xc1, 0xd1, 0x73, 0x58, 0x8b, 0xc8, 0x3b, 0xc4, 0x27, 0x22, 0x58, 0x06, 0x2b, 0xf5,
    +	0xb5, 0x9b, 0xd3, 0x49, 0x79, 0xd4, 0x7e, 0x41, 0x75, 0xff, 0x21, 0xf5, 0x89, 0x86, 0x52, 0x1d,
    +	0x30, 0x8f, 0xe1, 0x01, 0x2b, 0xda, 0x82, 0x55, 0x2f, 0x30, 0x29, 0x17, 0xcb, 0xf1, 0x4d, 0x25,
    +	0x65, 0xf2, 0xf9, 0x2b, 0xfb, 0x8e, 0xc9, 0xf4, 0xe3, 0xc8, 0x28, 0xad, 0x91, 0x92, 0x55, 0xa3,
    +	0x13, 0xc7, 0x49, 0x2d, 0x6a, 0xc3, 0x26, 0x19, 0x75, 0x54, 0x9c, 0x8b, 0xd5, 0x5e, 0x29, 0xa2,
    +	0x1b, 0x33, 0x5f, 0xfb, 0x27, 0xec, 0xb7, 0xc6, 0x9f, 0x08, 0x1e, 0x27, 0x94, 0xdf, 0x96, 0x21,
    +	0x1a, 0xb2, 0x46, 0x63, 0x76, 0x87, 0xd9, 0xc6, 0x0c, 0x1c, 0xda, 0x86, 0x35, 0x1e, 0xc4, 0x89,
    +	0xcc, 0xa4, 0xff, 0x8a, 0x6e, 0x75, 0x90, 0x60, 0xb4, 0xbf, 0x53, 0xb2, 0x5a, 0x1a, 0xe0, 0x78,
    +	0x50, 0x8e, 0xee, 0xc3, 0x79, 0xcf, 0x31, 0x29, 0xa6, 0x87, 0xa9, 0x3f, 0x85, 0x4c, 0x38, 0x81,
    +	0x68, 0xcd, 0x94, 0x69, 0x3e, 0x0d, 0xe0, 0xac, 0x58, 0xfe, 0x0a, 0xe0, 0xbf, 0x93, 0x5e, 0xec,
    +	0x32, 0xee, 0xa3, 0x67, 0x13, 0x7e, 0x28, 0x53, 0xbe, 0xbc, 0x8c, 0x27, 0x6e, 0x0c, 0x2e, 0x90,
    +	0x45, 0x86, 0xbc, 0xd8, 0x81, 0x55, 0xe6, 0x53, 0x2b, 0x33, 0xe2, 0x6a, 0x91, 0xfc, 0x49, 0x61,
    +	0xf9, 0x5b, 0xb3, 0x1d, 0x15, 0xe3, 0x84, 0x43, 0xfe, 0x02, 0x60, 0x73, 0x08, 0x3c, 0x03, 0xf9,
    +	0xf7, 0x46, 0xe5, 0xb7, 0x2e, 0x93, 0x5f, 0xac, 0xfb, 0x07, 0x80, 0x30, 0x1f, 0x09, 0xd4, 0x82,
    +	0xd5, 0x1e, 0xf5, 0xda, 0xc9, 0xae, 0x10, 0x34, 0x21, 0xc2, 0x3f, 0x89, 0x02, 0x38, 0x89, 0xa3,
    +	0x6b, 0x50, 0x20, 0x2e, 0x7b, 0xe0, 0x39, 0x81, 0x9b, 0x74, 0x16, 0xb4, 0x46, 0xd8, 0x6f, 0x09,
    +	0x9b, 0xfb, 0xdb, 0x49, 0x10, 0xe7, 0xf9, 0x08, 0xec, 0x51, 0xee, 0x04, 0x9e, 0x4e, 0xb9, 0x38,
    +	0x97, 0x83, 0x71, 0x16, 0xc4, 0x79, 0x1e, 0xdd, 0x85, 0x8d, 0xec, 0xb0, 0x47, 0x2c, 0xca, 0xc5,
    +	0x4a, 0x5c, 0xb0, 0x10, 0xf6, 0x5b, 0x0d, 0x3c, 0x9c, 0xc0, 0xa3, 0x38, 0xb4, 0x01, 0x9b, 0xb6,
    +	0x63, 0x67, 0x90, 0xc7, 0x78, 0x97, 0x8b, 0xd5, 0xb8, 0x34, 0x9e, 0xc5, 0xbd, 0xd1, 0x14, 0x1e,
    +	0xc7, 0xca, 0x9f, 0x01, 0xac, 0xfc, 0x46, 0xfb, 0x49, 0x7e, 0x5d, 0x86, 0xf5, 0x3f, 0x7e, 0x69,
    +	0x44, 0xe3, 0x36, 0xdb, 0x6d, 0x31, 0xcd, 0xb8, 0x5d, 0xbe, 0x26, 0x3e, 0x02, 0x58, 0x9b, 0xd1,
    +	0x7e, 0xd8, 0x18, 0x15, 0x2c, 0x5e, 0x28, 0xb8, 0x58, 0xe9, 0x4b, 0x98, 0xb9, 0x8e, 0xae, 0xc3,
    +	0x5a, 0x36, 0xd3, 0xb1, 0x4e, 0x21, 0xef, 0x9b, 0x8d, 0x3d, 0x1e, 0x20, 0xd0, 0x32, 0xac, 0x74,
    +	0x99, 0xdd, 0x11, 0xcb, 0x31, 0xf2, 0xaf, 0x14, 0x59, 0xd9, 0x61, 0x76, 0x07, 0xc7, 0x99, 0x08,
    +	0x61, 0x13, 0x2b, 0xf9, 0x59, 0x1d, 0x42, 0x44, 0xd3, 0x8c, 0xe3, 0x8c, 0xfc, 0x09, 0xc0, 0xf9,
    +	0xf4, 0xed, 0x19, 0xf0, 0x81, 0x0b, 0xf9, 0x86, 0xf5, 0x95, 0xa7, 0xd1, 0xf7, 0xeb, 0xee, 0x48,
    +	0x85, 0x42, 0xf4, 0xc9, 0x5d, 0xa2, 0x53, 0xb1, 0x12, 0xc3, 0x16, 0x52, 0x98, 0xb0, 0x97, 0x25,
    +	0x70, 0x8e, 0xd1, 0xd6, 0x4f, 0xce, 0xa5, 0xd2, 0xe9, 0xb9, 0x54, 0x3a, 0x3b, 0x97, 0x4a, 0xaf,
    +	0x42, 0x09, 0x9c, 0x84, 0x12, 0x38, 0x0d, 0x25, 0x70, 0x16, 0x4a, 0xe0, 0x5b, 0x28, 0x81, 0x77,
    +	0xdf, 0xa5, 0xd2, 0x53, 0x34, 0xf9, 0x8f, 0xf5, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x67, 0xff,
    +	0x5a, 0x4f, 0xc6, 0x0a, 0x00, 0x00,
     }
     
     func (m *AggregationRule) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/rbac/v1/generated.proto b/vendor/k8s.io/api/rbac/v1/generated.proto
    index 13ff60ea718c..87b8f832d334 100644
    --- a/vendor/k8s.io/api/rbac/v1/generated.proto
    +++ b/vendor/k8s.io/api/rbac/v1/generated.proto
    @@ -33,17 +33,19 @@ message AggregationRule {
       // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
       // If any of the selectors match, then the ClusterRole's permissions will be added
       // +optional
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector clusterRoleSelectors = 1;
    +  // +listType=atomic
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector clusterRoleSelectors = 1;
     }
     
     // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
     message ClusterRole {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Rules holds all the PolicyRules for this ClusterRole
       // +optional
    +  // +listType=atomic
       repeated PolicyRule rules = 2;
     
       // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
    @@ -58,10 +60,11 @@ message ClusterRole {
     message ClusterRoleBinding {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Subjects holds references to the objects the role applies to.
       // +optional
    +  // +listType=atomic
       repeated Subject subjects = 2;
     
       // RoleRef can only reference a ClusterRole in the global namespace.
    @@ -74,7 +77,7 @@ message ClusterRoleBinding {
     message ClusterRoleBindingList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of ClusterRoleBindings
       repeated ClusterRoleBinding items = 2;
    @@ -84,7 +87,7 @@ message ClusterRoleBindingList {
     message ClusterRoleList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of ClusterRoles
       repeated ClusterRole items = 2;
    @@ -94,25 +97,30 @@ message ClusterRoleList {
     // about who the rule applies to or which namespace the rule applies to.
     message PolicyRule {
       // Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs.
    +  // +listType=atomic
       repeated string verbs = 1;
     
       // APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       // the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
       // +optional
    +  // +listType=atomic
       repeated string apiGroups = 2;
     
       // Resources is a list of resources this rule applies to. '*' represents all resources.
       // +optional
    +  // +listType=atomic
       repeated string resources = 3;
     
       // ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       // +optional
    +  // +listType=atomic
       repeated string resourceNames = 4;
     
       // NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       // +optional
    +  // +listType=atomic
       repeated string nonResourceURLs = 5;
     }
     
    @@ -120,10 +128,11 @@ message PolicyRule {
     message Role {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Rules holds all the PolicyRules for this Role
       // +optional
    +  // +listType=atomic
       repeated PolicyRule rules = 2;
     }
     
    @@ -133,10 +142,11 @@ message Role {
     message RoleBinding {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Subjects holds references to the objects the role applies to.
       // +optional
    +  // +listType=atomic
       repeated Subject subjects = 2;
     
       // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
    @@ -149,7 +159,7 @@ message RoleBinding {
     message RoleBindingList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of RoleBindings
       repeated RoleBinding items = 2;
    @@ -159,7 +169,7 @@ message RoleBindingList {
     message RoleList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of Roles
       repeated Role items = 2;
    diff --git a/vendor/k8s.io/api/rbac/v1/types.go b/vendor/k8s.io/api/rbac/v1/types.go
    index ce845d69b426..f9628b8536a4 100644
    --- a/vendor/k8s.io/api/rbac/v1/types.go
    +++ b/vendor/k8s.io/api/rbac/v1/types.go
    @@ -48,23 +48,28 @@ const (
     // about who the rule applies to or which namespace the rule applies to.
     type PolicyRule struct {
     	// Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs.
    +	// +listType=atomic
     	Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"`
     
     	// APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     	// the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
     	// +optional
    +	// +listType=atomic
     	APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,2,rep,name=apiGroups"`
     	// Resources is a list of resources this rule applies to. '*' represents all resources.
     	// +optional
    +	// +listType=atomic
     	Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"`
     	// ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     	// +optional
    +	// +listType=atomic
     	ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,4,rep,name=resourceNames"`
     
     	// NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     	// Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     	// Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     	// +optional
    +	// +listType=atomic
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,5,rep,name=nonResourceURLs"`
     }
     
    @@ -79,7 +84,7 @@ type Subject struct {
     	// Defaults to "" for ServiceAccount subjects.
     	// Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
     	// +optional
    -	APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,2,opt.name=apiGroup"`
    +	APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,2,opt,name=apiGroup"`
     	// Name of the object being referenced.
     	Name string `json:"name" protobuf:"bytes,3,opt,name=name"`
     	// Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
    @@ -101,6 +106,7 @@ type RoleRef struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.8
     
     // Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.
     type Role struct {
    @@ -111,11 +117,13 @@ type Role struct {
     
     	// Rules holds all the PolicyRules for this Role
     	// +optional
    +	// +listType=atomic
     	Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"`
     }
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.8
     
     // RoleBinding references a role, but does not contain it.  It can reference a Role in the same namespace or a ClusterRole in the global namespace.
     // It adds who information via Subjects and namespace information by which namespace it exists in.  RoleBindings in a given
    @@ -128,6 +136,7 @@ type RoleBinding struct {
     
     	// Subjects holds references to the objects the role applies to.
     	// +optional
    +	// +listType=atomic
     	Subjects []Subject `json:"subjects,omitempty" protobuf:"bytes,2,rep,name=subjects"`
     
     	// RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
    @@ -137,6 +146,7 @@ type RoleBinding struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.8
     
     // RoleBindingList is a collection of RoleBindings
     type RoleBindingList struct {
    @@ -150,6 +160,7 @@ type RoleBindingList struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.8
     
     // RoleList is a collection of Roles
     type RoleList struct {
    @@ -165,6 +176,7 @@ type RoleList struct {
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.8
     
     // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
     type ClusterRole struct {
    @@ -175,6 +187,7 @@ type ClusterRole struct {
     
     	// Rules holds all the PolicyRules for this ClusterRole
     	// +optional
    +	// +listType=atomic
     	Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"`
     
     	// AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
    @@ -189,12 +202,14 @@ type AggregationRule struct {
     	// ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
     	// If any of the selectors match, then the ClusterRole's permissions will be added
     	// +optional
    +	// +listType=atomic
     	ClusterRoleSelectors []metav1.LabelSelector `json:"clusterRoleSelectors,omitempty" protobuf:"bytes,1,rep,name=clusterRoleSelectors"`
     }
     
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.8
     
     // ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference a ClusterRole in the global namespace,
     // and adds who information via Subject.
    @@ -206,6 +221,7 @@ type ClusterRoleBinding struct {
     
     	// Subjects holds references to the objects the role applies to.
     	// +optional
    +	// +listType=atomic
     	Subjects []Subject `json:"subjects,omitempty" protobuf:"bytes,2,rep,name=subjects"`
     
     	// RoleRef can only reference a ClusterRole in the global namespace.
    @@ -215,6 +231,7 @@ type ClusterRoleBinding struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.8
     
     // ClusterRoleBindingList is a collection of ClusterRoleBindings
     type ClusterRoleBindingList struct {
    @@ -228,6 +245,7 @@ type ClusterRoleBindingList struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.8
     
     // ClusterRoleList is a collection of ClusterRoles
     type ClusterRoleList struct {
    diff --git a/vendor/k8s.io/api/rbac/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/rbac/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..f6f74413b8c8
    --- /dev/null
    +++ b/vendor/k8s.io/api/rbac/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,70 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ClusterRole) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 8
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ClusterRoleBinding) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 8
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ClusterRoleBindingList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 8
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ClusterRoleList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 8
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *Role) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 8
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *RoleBinding) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 8
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *RoleBindingList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 8
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *RoleList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 8
    +}
    diff --git a/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go b/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go
    index 5cce23ea1246..ee3c7bfcc0cf 100644
    --- a/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go
    +++ b/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1alpha1/generated.proto
    +// source: k8s.io/api/rbac/v1alpha1/generated.proto
     
     package v1alpha1
     
    @@ -47,7 +47,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *AggregationRule) Reset()      { *m = AggregationRule{} }
     func (*AggregationRule) ProtoMessage() {}
     func (*AggregationRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{0}
    +	return fileDescriptor_758889dfd9a88fa6, []int{0}
     }
     func (m *AggregationRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +75,7 @@ var xxx_messageInfo_AggregationRule proto.InternalMessageInfo
     func (m *ClusterRole) Reset()      { *m = ClusterRole{} }
     func (*ClusterRole) ProtoMessage() {}
     func (*ClusterRole) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{1}
    +	return fileDescriptor_758889dfd9a88fa6, []int{1}
     }
     func (m *ClusterRole) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +103,7 @@ var xxx_messageInfo_ClusterRole proto.InternalMessageInfo
     func (m *ClusterRoleBinding) Reset()      { *m = ClusterRoleBinding{} }
     func (*ClusterRoleBinding) ProtoMessage() {}
     func (*ClusterRoleBinding) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{2}
    +	return fileDescriptor_758889dfd9a88fa6, []int{2}
     }
     func (m *ClusterRoleBinding) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -131,7 +131,7 @@ var xxx_messageInfo_ClusterRoleBinding proto.InternalMessageInfo
     func (m *ClusterRoleBindingList) Reset()      { *m = ClusterRoleBindingList{} }
     func (*ClusterRoleBindingList) ProtoMessage() {}
     func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{3}
    +	return fileDescriptor_758889dfd9a88fa6, []int{3}
     }
     func (m *ClusterRoleBindingList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -159,7 +159,7 @@ var xxx_messageInfo_ClusterRoleBindingList proto.InternalMessageInfo
     func (m *ClusterRoleList) Reset()      { *m = ClusterRoleList{} }
     func (*ClusterRoleList) ProtoMessage() {}
     func (*ClusterRoleList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{4}
    +	return fileDescriptor_758889dfd9a88fa6, []int{4}
     }
     func (m *ClusterRoleList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -187,7 +187,7 @@ var xxx_messageInfo_ClusterRoleList proto.InternalMessageInfo
     func (m *PolicyRule) Reset()      { *m = PolicyRule{} }
     func (*PolicyRule) ProtoMessage() {}
     func (*PolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{5}
    +	return fileDescriptor_758889dfd9a88fa6, []int{5}
     }
     func (m *PolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -215,7 +215,7 @@ var xxx_messageInfo_PolicyRule proto.InternalMessageInfo
     func (m *Role) Reset()      { *m = Role{} }
     func (*Role) ProtoMessage() {}
     func (*Role) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{6}
    +	return fileDescriptor_758889dfd9a88fa6, []int{6}
     }
     func (m *Role) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -243,7 +243,7 @@ var xxx_messageInfo_Role proto.InternalMessageInfo
     func (m *RoleBinding) Reset()      { *m = RoleBinding{} }
     func (*RoleBinding) ProtoMessage() {}
     func (*RoleBinding) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{7}
    +	return fileDescriptor_758889dfd9a88fa6, []int{7}
     }
     func (m *RoleBinding) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -271,7 +271,7 @@ var xxx_messageInfo_RoleBinding proto.InternalMessageInfo
     func (m *RoleBindingList) Reset()      { *m = RoleBindingList{} }
     func (*RoleBindingList) ProtoMessage() {}
     func (*RoleBindingList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{8}
    +	return fileDescriptor_758889dfd9a88fa6, []int{8}
     }
     func (m *RoleBindingList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -299,7 +299,7 @@ var xxx_messageInfo_RoleBindingList proto.InternalMessageInfo
     func (m *RoleList) Reset()      { *m = RoleList{} }
     func (*RoleList) ProtoMessage() {}
     func (*RoleList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{9}
    +	return fileDescriptor_758889dfd9a88fa6, []int{9}
     }
     func (m *RoleList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -327,7 +327,7 @@ var xxx_messageInfo_RoleList proto.InternalMessageInfo
     func (m *RoleRef) Reset()      { *m = RoleRef{} }
     func (*RoleRef) ProtoMessage() {}
     func (*RoleRef) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{10}
    +	return fileDescriptor_758889dfd9a88fa6, []int{10}
     }
     func (m *RoleRef) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -355,7 +355,7 @@ var xxx_messageInfo_RoleRef proto.InternalMessageInfo
     func (m *Subject) Reset()      { *m = Subject{} }
     func (*Subject) ProtoMessage() {}
     func (*Subject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_b59b0bd5e7cb9590, []int{11}
    +	return fileDescriptor_758889dfd9a88fa6, []int{11}
     }
     func (m *Subject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -396,64 +396,63 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1alpha1/generated.proto", fileDescriptor_b59b0bd5e7cb9590)
    -}
    -
    -var fileDescriptor_b59b0bd5e7cb9590 = []byte{
    -	// 833 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xbf, 0x8f, 0xe3, 0x44,
    -	0x14, 0xce, 0x64, 0x13, 0x36, 0x99, 0x25, 0x0a, 0x37, 0x9c, 0x90, 0xb5, 0x42, 0xce, 0x62, 0x81,
    -	0x74, 0x88, 0xc3, 0x66, 0x17, 0x04, 0x34, 0x20, 0xc5, 0x57, 0xa0, 0x40, 0xd8, 0x5b, 0xe6, 0xc4,
    -	0x15, 0x88, 0x82, 0x89, 0x33, 0xe7, 0x0c, 0xb1, 0x3d, 0xd6, 0x8c, 0x1d, 0xe9, 0x44, 0x43, 0x43,
    -	0x8b, 0x68, 0x28, 0xe8, 0x69, 0x69, 0xa0, 0xe4, 0x1f, 0x58, 0xba, 0x2b, 0xb7, 0x8a, 0x58, 0xf3,
    -	0x87, 0x80, 0x3c, 0xb6, 0x63, 0xe7, 0x17, 0x49, 0x15, 0x09, 0x89, 0x2a, 0x99, 0xf7, 0xbe, 0xf7,
    -	0xbd, 0xf7, 0xbe, 0x99, 0xf7, 0x12, 0xd8, 0x9f, 0xbe, 0x2f, 0x4d, 0xc6, 0xad, 0x69, 0x3c, 0xa2,
    -	0x22, 0xa0, 0x11, 0x95, 0xd6, 0x8c, 0x06, 0x63, 0x2e, 0xac, 0xdc, 0x41, 0x42, 0x66, 0x89, 0x11,
    -	0x71, 0xac, 0xd9, 0x39, 0xf1, 0xc2, 0x09, 0x39, 0xb7, 0x5c, 0x1a, 0x50, 0x41, 0x22, 0x3a, 0x36,
    -	0x43, 0xc1, 0x23, 0x8e, 0xb4, 0x0c, 0x69, 0x92, 0x90, 0x99, 0x29, 0xd2, 0x2c, 0x90, 0xa7, 0x6f,
    -	0xba, 0x2c, 0x9a, 0xc4, 0x23, 0xd3, 0xe1, 0xbe, 0xe5, 0x72, 0x97, 0x5b, 0x2a, 0x60, 0x14, 0x3f,
    -	0x51, 0x27, 0x75, 0x50, 0xdf, 0x32, 0xa2, 0xd3, 0x77, 0xca, 0x94, 0x3e, 0x71, 0x26, 0x2c, 0xa0,
    -	0xe2, 0xa9, 0x15, 0x4e, 0xdd, 0xd4, 0x20, 0x2d, 0x9f, 0x46, 0xc4, 0x9a, 0xad, 0xa5, 0x3f, 0xb5,
    -	0xb6, 0x45, 0x89, 0x38, 0x88, 0x98, 0x4f, 0xd7, 0x02, 0xde, 0xdd, 0x15, 0x20, 0x9d, 0x09, 0xf5,
    -	0xc9, 0x6a, 0x9c, 0xf1, 0x13, 0x80, 0xdd, 0xbe, 0xeb, 0x0a, 0xea, 0x92, 0x88, 0xf1, 0x00, 0xc7,
    -	0x1e, 0x45, 0xdf, 0x01, 0x78, 0xd7, 0xf1, 0x62, 0x19, 0x51, 0x81, 0xb9, 0x47, 0x1f, 0x51, 0x8f,
    -	0x3a, 0x11, 0x17, 0x52, 0x03, 0x67, 0x47, 0xf7, 0x4e, 0x2e, 0xde, 0x36, 0x4b, 0x6d, 0x16, 0xb9,
    -	0xcc, 0x70, 0xea, 0xa6, 0x06, 0x69, 0xa6, 0x2d, 0x99, 0xb3, 0x73, 0x73, 0x48, 0x46, 0xd4, 0x2b,
    -	0x62, 0xed, 0x97, 0xaf, 0xe7, 0xbd, 0x5a, 0x32, 0xef, 0xdd, 0x7d, 0xb0, 0x81, 0x18, 0x6f, 0x4c,
    -	0x67, 0xfc, 0x5c, 0x87, 0x27, 0x15, 0x38, 0xfa, 0x0a, 0xb6, 0x52, 0xf2, 0x31, 0x89, 0x88, 0x06,
    -	0xce, 0xc0, 0xbd, 0x93, 0x8b, 0xb7, 0xf6, 0x2b, 0xe5, 0xe1, 0xe8, 0x6b, 0xea, 0x44, 0x9f, 0xd2,
    -	0x88, 0xd8, 0x28, 0xaf, 0x03, 0x96, 0x36, 0xbc, 0x60, 0x45, 0x03, 0xd8, 0x14, 0xb1, 0x47, 0xa5,
    -	0x56, 0x57, 0x9d, 0xbe, 0x6a, 0x6e, 0x7b, 0x05, 0xe6, 0x15, 0xf7, 0x98, 0xf3, 0x34, 0x95, 0xcb,
    -	0xee, 0xe4, 0x94, 0xcd, 0xf4, 0x24, 0x71, 0xc6, 0x80, 0x26, 0xb0, 0x4b, 0x96, 0x75, 0xd5, 0x8e,
    -	0x54, 0xcd, 0xaf, 0x6f, 0x27, 0x5d, 0xb9, 0x08, 0xfb, 0xc5, 0x64, 0xde, 0x5b, 0xbd, 0x1d, 0xbc,
    -	0x4a, 0x6b, 0xfc, 0x58, 0x87, 0xa8, 0x22, 0x93, 0xcd, 0x82, 0x31, 0x0b, 0xdc, 0x03, 0xa8, 0xf5,
    -	0x10, 0xb6, 0x64, 0xac, 0x1c, 0x85, 0x60, 0xaf, 0x6c, 0xef, 0xed, 0x51, 0x86, 0xb4, 0x5f, 0xc8,
    -	0x29, 0x5b, 0xb9, 0x41, 0xe2, 0x05, 0x09, 0x1a, 0xc2, 0x63, 0xc1, 0x3d, 0x8a, 0xe9, 0x93, 0x5c,
    -	0xab, 0x7f, 0xe1, 0xc3, 0x19, 0xd0, 0xee, 0xe6, 0x7c, 0xc7, 0xb9, 0x01, 0x17, 0x14, 0xc6, 0x1f,
    -	0x00, 0xbe, 0xb4, 0xae, 0xcb, 0x90, 0xc9, 0x08, 0x7d, 0xb9, 0xa6, 0x8d, 0xb9, 0xe7, 0xa3, 0x66,
    -	0x32, 0x53, 0x66, 0xd1, 0x46, 0x61, 0xa9, 0xe8, 0xf2, 0x19, 0x6c, 0xb2, 0x88, 0xfa, 0x85, 0x28,
    -	0xf7, 0xb7, 0x37, 0xb1, 0x5e, 0x5e, 0xf9, 0x9a, 0x06, 0x29, 0x05, 0xce, 0x98, 0x8c, 0xdf, 0x01,
    -	0xec, 0x56, 0xc0, 0x07, 0x68, 0xe2, 0xe3, 0xe5, 0x26, 0x5e, 0xdb, 0xaf, 0x89, 0xcd, 0xd5, 0xff,
    -	0x0d, 0x20, 0x2c, 0x07, 0x06, 0xf5, 0x60, 0x73, 0x46, 0xc5, 0x28, 0xdb, 0x27, 0x6d, 0xbb, 0x9d,
    -	0xe2, 0x1f, 0xa7, 0x06, 0x9c, 0xd9, 0xd1, 0x1b, 0xb0, 0x4d, 0x42, 0xf6, 0x91, 0xe0, 0x71, 0x28,
    -	0xb5, 0x23, 0x05, 0xea, 0x24, 0xf3, 0x5e, 0xbb, 0x7f, 0x35, 0xc8, 0x8c, 0xb8, 0xf4, 0xa7, 0x60,
    -	0x41, 0x25, 0x8f, 0x85, 0x43, 0xa5, 0xd6, 0x28, 0xc1, 0xb8, 0x30, 0xe2, 0xd2, 0x8f, 0xde, 0x83,
    -	0x9d, 0xe2, 0x70, 0x49, 0x7c, 0x2a, 0xb5, 0xa6, 0x0a, 0xb8, 0x93, 0xcc, 0x7b, 0x1d, 0x5c, 0x75,
    -	0xe0, 0x65, 0x1c, 0xfa, 0x00, 0x76, 0x03, 0x1e, 0x14, 0x90, 0xcf, 0xf1, 0x50, 0x6a, 0xcf, 0xa9,
    -	0x50, 0x35, 0xa3, 0x97, 0xcb, 0x2e, 0xbc, 0x8a, 0x35, 0x7e, 0x03, 0xb0, 0xf1, 0x9f, 0xdb, 0x61,
    -	0xc6, 0xf7, 0x75, 0x78, 0xf2, 0xff, 0x4a, 0xa9, 0xac, 0x94, 0x74, 0x0c, 0x0f, 0xbb, 0x4b, 0xf6,
    -	0x1f, 0xc3, 0xdd, 0x4b, 0xe4, 0x17, 0x00, 0x5b, 0x07, 0xda, 0x1e, 0x0f, 0x96, 0xcb, 0xd6, 0x77,
    -	0x94, 0xbd, 0xb9, 0xde, 0x6f, 0x60, 0x71, 0x03, 0xe8, 0x3e, 0x6c, 0x15, 0x13, 0xaf, 0xaa, 0x6d,
    -	0x97, 0xd9, 0x8b, 0xa5, 0x80, 0x17, 0x08, 0x74, 0x06, 0x1b, 0x53, 0x16, 0x8c, 0xb5, 0xba, 0x42,
    -	0x3e, 0x9f, 0x23, 0x1b, 0x9f, 0xb0, 0x60, 0x8c, 0x95, 0x27, 0x45, 0x04, 0xc4, 0xcf, 0x7e, 0x92,
    -	0x2b, 0x88, 0x74, 0xd6, 0xb1, 0xf2, 0x18, 0xbf, 0x02, 0x78, 0x9c, 0xbf, 0xa7, 0x05, 0x1f, 0xd8,
    -	0xca, 0x77, 0x01, 0x21, 0x09, 0xd9, 0x63, 0x2a, 0x24, 0xe3, 0x41, 0x9e, 0x77, 0xf1, 0xd2, 0xfb,
    -	0x57, 0x83, 0xdc, 0x83, 0x2b, 0xa8, 0xdd, 0x35, 0x20, 0x0b, 0xb6, 0xd3, 0x4f, 0x19, 0x12, 0x87,
    -	0x6a, 0x0d, 0x05, 0xbb, 0x93, 0xc3, 0xda, 0x97, 0x85, 0x03, 0x97, 0x18, 0xfb, 0xc3, 0xeb, 0x5b,
    -	0xbd, 0xf6, 0xec, 0x56, 0xaf, 0xdd, 0xdc, 0xea, 0xb5, 0x6f, 0x13, 0x1d, 0x5c, 0x27, 0x3a, 0x78,
    -	0x96, 0xe8, 0xe0, 0x26, 0xd1, 0xc1, 0x9f, 0x89, 0x0e, 0x7e, 0xf8, 0x4b, 0xaf, 0x7d, 0xa1, 0x6d,
    -	0xfb, 0x17, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x0e, 0xba, 0xc2, 0x39, 0x0b, 0x00,
    -	0x00,
    +	proto.RegisterFile("k8s.io/api/rbac/v1alpha1/generated.proto", fileDescriptor_758889dfd9a88fa6)
    +}
    +
    +var fileDescriptor_758889dfd9a88fa6 = []byte{
    +	// 819 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcf, 0x6f, 0xe3, 0x44,
    +	0x14, 0xce, 0xa4, 0x09, 0x4d, 0x26, 0x44, 0xa1, 0x43, 0x85, 0xac, 0x0a, 0x39, 0xc5, 0x02, 0xa9,
    +	0x88, 0x62, 0xd3, 0x82, 0x80, 0x0b, 0x48, 0x75, 0x0f, 0x28, 0x10, 0xda, 0x32, 0x15, 0x3d, 0x20,
    +	0x0e, 0x4c, 0x9c, 0xa9, 0x33, 0xc4, 0xbf, 0xe4, 0xb1, 0x23, 0x55, 0x5c, 0xb8, 0x70, 0x45, 0x5c,
    +	0x38, 0x70, 0xe7, 0xca, 0x85, 0x3d, 0xee, 0x3f, 0xd0, 0xbd, 0xf5, 0xd8, 0x53, 0xb4, 0xf5, 0xfe,
    +	0x21, 0xbb, 0xf2, 0xd8, 0x8e, 0x9d, 0x5f, 0x9b, 0x9c, 0x22, 0xad, 0xb4, 0xa7, 0x64, 0xde, 0xfb,
    +	0xde, 0xf7, 0xde, 0xfb, 0x66, 0xde, 0x4b, 0xe0, 0xc1, 0xf0, 0x4b, 0xae, 0x32, 0x57, 0x23, 0x1e,
    +	0xd3, 0xfc, 0x1e, 0x31, 0xb4, 0xd1, 0x11, 0xb1, 0xbc, 0x01, 0x39, 0xd2, 0x4c, 0xea, 0x50, 0x9f,
    +	0x04, 0xb4, 0xaf, 0x7a, 0xbe, 0x1b, 0xb8, 0x48, 0x4a, 0x90, 0x2a, 0xf1, 0x98, 0x1a, 0x23, 0xd5,
    +	0x0c, 0xb9, 0xf7, 0xb1, 0xc9, 0x82, 0x41, 0xd8, 0x53, 0x0d, 0xd7, 0xd6, 0x4c, 0xd7, 0x74, 0x35,
    +	0x11, 0xd0, 0x0b, 0xaf, 0xc5, 0x49, 0x1c, 0xc4, 0xb7, 0x84, 0x68, 0xef, 0xb3, 0x3c, 0xa5, 0x4d,
    +	0x8c, 0x01, 0x73, 0xa8, 0x7f, 0xa3, 0x79, 0x43, 0x33, 0x36, 0x70, 0xcd, 0xa6, 0x01, 0xd1, 0x46,
    +	0x73, 0xe9, 0xf7, 0xb4, 0x65, 0x51, 0x7e, 0xe8, 0x04, 0xcc, 0xa6, 0x73, 0x01, 0x9f, 0xaf, 0x0a,
    +	0xe0, 0xc6, 0x80, 0xda, 0x64, 0x36, 0x4e, 0xf9, 0x07, 0xc0, 0xd6, 0x89, 0x69, 0xfa, 0xd4, 0x24,
    +	0x01, 0x73, 0x1d, 0x1c, 0x5a, 0x14, 0xfd, 0x01, 0xe0, 0xae, 0x61, 0x85, 0x3c, 0xa0, 0x3e, 0x76,
    +	0x2d, 0x7a, 0x49, 0x2d, 0x6a, 0x04, 0xae, 0xcf, 0x25, 0xb0, 0xbf, 0x75, 0xd0, 0x38, 0xfe, 0x54,
    +	0xcd, 0xb5, 0x99, 0xe4, 0x52, 0xbd, 0xa1, 0x19, 0x1b, 0xb8, 0x1a, 0xb7, 0xa4, 0x8e, 0x8e, 0xd4,
    +	0x2e, 0xe9, 0x51, 0x2b, 0x8b, 0xd5, 0xdf, 0xbd, 0x1d, 0xb7, 0x4b, 0xd1, 0xb8, 0xbd, 0x7b, 0xba,
    +	0x80, 0x18, 0x2f, 0x4c, 0xa7, 0xfc, 0x5b, 0x86, 0x8d, 0x02, 0x1c, 0xfd, 0x02, 0x6b, 0x31, 0x79,
    +	0x9f, 0x04, 0x44, 0x02, 0xfb, 0xe0, 0xa0, 0x71, 0xfc, 0xc9, 0x7a, 0xa5, 0x9c, 0xf7, 0x7e, 0xa5,
    +	0x46, 0xf0, 0x3d, 0x0d, 0x88, 0x8e, 0xd2, 0x3a, 0x60, 0x6e, 0xc3, 0x13, 0x56, 0xd4, 0x81, 0x55,
    +	0x3f, 0xb4, 0x28, 0x97, 0xca, 0xa2, 0xd3, 0xf7, 0xd5, 0x65, 0xaf, 0x40, 0xbd, 0x70, 0x2d, 0x66,
    +	0xdc, 0xc4, 0x72, 0xe9, 0xcd, 0x94, 0xb2, 0x1a, 0x9f, 0x38, 0x4e, 0x18, 0xd0, 0x00, 0xb6, 0xc8,
    +	0xb4, 0xae, 0xd2, 0x96, 0xa8, 0xf9, 0xc3, 0xe5, 0xa4, 0x33, 0x17, 0xa1, 0xbf, 0x1d, 0x8d, 0xdb,
    +	0xb3, 0xb7, 0x83, 0x67, 0x69, 0x95, 0xbf, 0xcb, 0x10, 0x15, 0x64, 0xd2, 0x99, 0xd3, 0x67, 0x8e,
    +	0xb9, 0x01, 0xb5, 0xce, 0x61, 0x8d, 0x87, 0xc2, 0x91, 0x09, 0xf6, 0xde, 0xf2, 0xde, 0x2e, 0x13,
    +	0xa4, 0xfe, 0x56, 0x4a, 0x59, 0x4b, 0x0d, 0x1c, 0x4f, 0x48, 0x50, 0x17, 0x6e, 0xfb, 0xae, 0x45,
    +	0x31, 0xbd, 0x4e, 0xb5, 0x7a, 0x09, 0x1f, 0x4e, 0x80, 0x7a, 0x2b, 0xe5, 0xdb, 0x4e, 0x0d, 0x38,
    +	0xa3, 0x50, 0x9e, 0x00, 0xf8, 0xce, 0xbc, 0x2e, 0x5d, 0xc6, 0x03, 0xf4, 0xf3, 0x9c, 0x36, 0xea,
    +	0x9a, 0x8f, 0x9a, 0xf1, 0x44, 0x99, 0x49, 0x1b, 0x99, 0xa5, 0xa0, 0xcb, 0x0f, 0xb0, 0xca, 0x02,
    +	0x6a, 0x67, 0xa2, 0x1c, 0x2e, 0x6f, 0x62, 0xbe, 0xbc, 0xfc, 0x35, 0x75, 0x62, 0x0a, 0x9c, 0x30,
    +	0x29, 0x8f, 0x01, 0x6c, 0x15, 0xc0, 0x1b, 0x68, 0xe2, 0xdb, 0xe9, 0x26, 0x3e, 0x58, 0xaf, 0x89,
    +	0xc5, 0xd5, 0x3f, 0x07, 0x10, 0xe6, 0x03, 0x83, 0xda, 0xb0, 0x3a, 0xa2, 0x7e, 0x2f, 0xd9, 0x27,
    +	0x75, 0xbd, 0x1e, 0xe3, 0xaf, 0x62, 0x03, 0x4e, 0xec, 0xe8, 0x23, 0x58, 0x27, 0x1e, 0xfb, 0xc6,
    +	0x77, 0x43, 0x8f, 0x4b, 0x5b, 0x02, 0xd4, 0x8c, 0xc6, 0xed, 0xfa, 0xc9, 0x45, 0x27, 0x31, 0xe2,
    +	0xdc, 0x1f, 0x83, 0x7d, 0xca, 0xdd, 0xd0, 0x37, 0x28, 0x97, 0x2a, 0x39, 0x18, 0x67, 0x46, 0x9c,
    +	0xfb, 0xd1, 0x17, 0xb0, 0x99, 0x1d, 0xce, 0x88, 0x4d, 0xb9, 0x54, 0x15, 0x01, 0x3b, 0xd1, 0xb8,
    +	0xdd, 0xc4, 0x45, 0x07, 0x9e, 0xc6, 0xa1, 0xaf, 0x60, 0xcb, 0x71, 0x9d, 0x0c, 0xf2, 0x23, 0xee,
    +	0x72, 0xe9, 0x0d, 0x11, 0x2a, 0x66, 0xf4, 0x6c, 0xda, 0x85, 0x67, 0xb1, 0xca, 0x23, 0x00, 0x2b,
    +	0xaf, 0xdc, 0x0e, 0x53, 0xfe, 0x2c, 0xc3, 0xc6, 0xeb, 0x95, 0x52, 0x58, 0x29, 0xf1, 0x18, 0x6e,
    +	0x76, 0x97, 0xac, 0x3f, 0x86, 0xab, 0x97, 0xc8, 0x7f, 0x00, 0xd6, 0x36, 0xb4, 0x3d, 0x4e, 0xa7,
    +	0xcb, 0x96, 0x57, 0x94, 0xbd, 0xb8, 0xde, 0xdf, 0x60, 0x76, 0x03, 0xe8, 0x10, 0xd6, 0xb2, 0x89,
    +	0x17, 0xd5, 0xd6, 0xf3, 0xec, 0xd9, 0x52, 0xc0, 0x13, 0x04, 0xda, 0x87, 0x95, 0x21, 0x73, 0xfa,
    +	0x52, 0x59, 0x20, 0xdf, 0x4c, 0x91, 0x95, 0xef, 0x98, 0xd3, 0xc7, 0xc2, 0x13, 0x23, 0x1c, 0x62,
    +	0x27, 0x3f, 0xc9, 0x05, 0x44, 0x3c, 0xeb, 0x58, 0x78, 0x94, 0xff, 0x01, 0xdc, 0x4e, 0xdf, 0xd3,
    +	0x84, 0x0f, 0x2c, 0xe5, 0x3b, 0x86, 0x90, 0x78, 0xec, 0x8a, 0xfa, 0x9c, 0xb9, 0x4e, 0x9a, 0x77,
    +	0xf2, 0xd2, 0x4f, 0x2e, 0x3a, 0xa9, 0x07, 0x17, 0x50, 0xab, 0x6b, 0x40, 0x1a, 0xac, 0xc7, 0x9f,
    +	0xdc, 0x23, 0x06, 0x95, 0x2a, 0x02, 0xb6, 0x93, 0xc2, 0xea, 0x67, 0x99, 0x03, 0xe7, 0x18, 0xfd,
    +	0xeb, 0xdb, 0x07, 0xb9, 0x74, 0xf7, 0x20, 0x97, 0xee, 0x1f, 0xe4, 0xd2, 0xef, 0x91, 0x0c, 0x6e,
    +	0x23, 0x19, 0xdc, 0x45, 0x32, 0xb8, 0x8f, 0x64, 0xf0, 0x34, 0x92, 0xc1, 0x5f, 0xcf, 0xe4, 0xd2,
    +	0x4f, 0xd2, 0xb2, 0x7f, 0xc1, 0x2f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xf1, 0x02, 0x55, 0xe5, 0x20,
    +	0x0b, 0x00, 0x00,
     }
     
     func (m *AggregationRule) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/rbac/v1alpha1/generated.proto b/vendor/k8s.io/api/rbac/v1alpha1/generated.proto
    index d5ceaa0e8241..19d43cdee58b 100644
    --- a/vendor/k8s.io/api/rbac/v1alpha1/generated.proto
    +++ b/vendor/k8s.io/api/rbac/v1alpha1/generated.proto
    @@ -33,7 +33,8 @@ message AggregationRule {
       // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
       // If any of the selectors match, then the ClusterRole's permissions will be added
       // +optional
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector clusterRoleSelectors = 1;
    +  // +listType=atomic
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector clusterRoleSelectors = 1;
     }
     
     // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
    @@ -41,10 +42,11 @@ message AggregationRule {
     message ClusterRole {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Rules holds all the PolicyRules for this ClusterRole
       // +optional
    +  // +listType=atomic
       repeated PolicyRule rules = 2;
     
       // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
    @@ -60,10 +62,11 @@ message ClusterRole {
     message ClusterRoleBinding {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Subjects holds references to the objects the role applies to.
       // +optional
    +  // +listType=atomic
       repeated Subject subjects = 2;
     
       // RoleRef can only reference a ClusterRole in the global namespace.
    @@ -76,7 +79,7 @@ message ClusterRoleBinding {
     message ClusterRoleBindingList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of ClusterRoleBindings
       repeated ClusterRoleBinding items = 2;
    @@ -87,7 +90,7 @@ message ClusterRoleBindingList {
     message ClusterRoleList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of ClusterRoles
       repeated ClusterRole items = 2;
    @@ -97,25 +100,30 @@ message ClusterRoleList {
     // about who the rule applies to or which namespace the rule applies to.
     message PolicyRule {
       // Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs.
    +  // +listType=atomic
       repeated string verbs = 1;
     
       // APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       // the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
       // +optional
    +  // +listType=atomic
       repeated string apiGroups = 3;
     
       // Resources is a list of resources this rule applies to. '*' represents all resources.
       // +optional
    +  // +listType=atomic
       repeated string resources = 4;
     
       // ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       // +optional
    +  // +listType=atomic
       repeated string resourceNames = 5;
     
       // NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       // +optional
    +  // +listType=atomic
       repeated string nonResourceURLs = 6;
     }
     
    @@ -124,10 +132,11 @@ message PolicyRule {
     message Role {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Rules holds all the PolicyRules for this Role
       // +optional
    +  // +listType=atomic
       repeated PolicyRule rules = 2;
     }
     
    @@ -138,10 +147,11 @@ message Role {
     message RoleBinding {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Subjects holds references to the objects the role applies to.
       // +optional
    +  // +listType=atomic
       repeated Subject subjects = 2;
     
       // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
    @@ -154,7 +164,7 @@ message RoleBinding {
     message RoleBindingList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of RoleBindings
       repeated RoleBinding items = 2;
    @@ -165,7 +175,7 @@ message RoleBindingList {
     message RoleList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of Roles
       repeated Role items = 2;
    diff --git a/vendor/k8s.io/api/rbac/v1alpha1/types.go b/vendor/k8s.io/api/rbac/v1alpha1/types.go
    index e0e75b1503bf..2146b4ce39f0 100644
    --- a/vendor/k8s.io/api/rbac/v1alpha1/types.go
    +++ b/vendor/k8s.io/api/rbac/v1alpha1/types.go
    @@ -48,23 +48,28 @@ const (
     // about who the rule applies to or which namespace the rule applies to.
     type PolicyRule struct {
     	// Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs.
    +	// +listType=atomic
     	Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"`
     
     	// APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     	// the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
     	// +optional
    +	// +listType=atomic
     	APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,3,rep,name=apiGroups"`
     	// Resources is a list of resources this rule applies to. '*' represents all resources.
     	// +optional
    +	// +listType=atomic
     	Resources []string `json:"resources,omitempty" protobuf:"bytes,4,rep,name=resources"`
     	// ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     	// +optional
    +	// +listType=atomic
     	ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,5,rep,name=resourceNames"`
     
     	// NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     	// Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     	// Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     	// +optional
    +	// +listType=atomic
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,6,rep,name=nonResourceURLs"`
     }
     
    @@ -79,7 +84,7 @@ type Subject struct {
     	// Defaults to "rbac.authorization.k8s.io/v1alpha1" for User and Group subjects.
     	// +k8s:conversion-gen=false
     	// +optional
    -	APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,2,opt.name=apiVersion"`
    +	APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,2,opt,name=apiVersion"`
     	// Name of the object being referenced.
     	Name string `json:"name" protobuf:"bytes,3,opt,name=name"`
     	// Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
    @@ -111,6 +116,7 @@ type Role struct {
     
     	// Rules holds all the PolicyRules for this Role
     	// +optional
    +	// +listType=atomic
     	Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"`
     }
     
    @@ -129,6 +135,7 @@ type RoleBinding struct {
     
     	// Subjects holds references to the objects the role applies to.
     	// +optional
    +	// +listType=atomic
     	Subjects []Subject `json:"subjects,omitempty" protobuf:"bytes,2,rep,name=subjects"`
     
     	// RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
    @@ -178,6 +185,7 @@ type ClusterRole struct {
     
     	// Rules holds all the PolicyRules for this ClusterRole
     	// +optional
    +	// +listType=atomic
     	Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"`
     
     	// AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
    @@ -192,6 +200,7 @@ type AggregationRule struct {
     	// ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
     	// If any of the selectors match, then the ClusterRole's permissions will be added
     	// +optional
    +	// +listType=atomic
     	ClusterRoleSelectors []metav1.LabelSelector `json:"clusterRoleSelectors,omitempty" protobuf:"bytes,1,rep,name=clusterRoleSelectors"`
     }
     
    @@ -210,6 +219,7 @@ type ClusterRoleBinding struct {
     
     	// Subjects holds references to the objects the role applies to.
     	// +optional
    +	// +listType=atomic
     	Subjects []Subject `json:"subjects,omitempty" protobuf:"bytes,2,rep,name=subjects"`
     
     	// RoleRef can only reference a ClusterRole in the global namespace.
    diff --git a/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go b/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go
    index ad6685591eb3..9052d7e8dbbc 100644
    --- a/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1beta1/generated.proto
    +// source: k8s.io/api/rbac/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -47,7 +47,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *AggregationRule) Reset()      { *m = AggregationRule{} }
     func (*AggregationRule) ProtoMessage() {}
     func (*AggregationRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{0}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{0}
     }
     func (m *AggregationRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -75,7 +75,7 @@ var xxx_messageInfo_AggregationRule proto.InternalMessageInfo
     func (m *ClusterRole) Reset()      { *m = ClusterRole{} }
     func (*ClusterRole) ProtoMessage() {}
     func (*ClusterRole) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{1}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{1}
     }
     func (m *ClusterRole) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -103,7 +103,7 @@ var xxx_messageInfo_ClusterRole proto.InternalMessageInfo
     func (m *ClusterRoleBinding) Reset()      { *m = ClusterRoleBinding{} }
     func (*ClusterRoleBinding) ProtoMessage() {}
     func (*ClusterRoleBinding) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{2}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{2}
     }
     func (m *ClusterRoleBinding) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -131,7 +131,7 @@ var xxx_messageInfo_ClusterRoleBinding proto.InternalMessageInfo
     func (m *ClusterRoleBindingList) Reset()      { *m = ClusterRoleBindingList{} }
     func (*ClusterRoleBindingList) ProtoMessage() {}
     func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{3}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{3}
     }
     func (m *ClusterRoleBindingList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -159,7 +159,7 @@ var xxx_messageInfo_ClusterRoleBindingList proto.InternalMessageInfo
     func (m *ClusterRoleList) Reset()      { *m = ClusterRoleList{} }
     func (*ClusterRoleList) ProtoMessage() {}
     func (*ClusterRoleList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{4}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{4}
     }
     func (m *ClusterRoleList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -187,7 +187,7 @@ var xxx_messageInfo_ClusterRoleList proto.InternalMessageInfo
     func (m *PolicyRule) Reset()      { *m = PolicyRule{} }
     func (*PolicyRule) ProtoMessage() {}
     func (*PolicyRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{5}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{5}
     }
     func (m *PolicyRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -215,7 +215,7 @@ var xxx_messageInfo_PolicyRule proto.InternalMessageInfo
     func (m *Role) Reset()      { *m = Role{} }
     func (*Role) ProtoMessage() {}
     func (*Role) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{6}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{6}
     }
     func (m *Role) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -243,7 +243,7 @@ var xxx_messageInfo_Role proto.InternalMessageInfo
     func (m *RoleBinding) Reset()      { *m = RoleBinding{} }
     func (*RoleBinding) ProtoMessage() {}
     func (*RoleBinding) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{7}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{7}
     }
     func (m *RoleBinding) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -271,7 +271,7 @@ var xxx_messageInfo_RoleBinding proto.InternalMessageInfo
     func (m *RoleBindingList) Reset()      { *m = RoleBindingList{} }
     func (*RoleBindingList) ProtoMessage() {}
     func (*RoleBindingList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{8}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{8}
     }
     func (m *RoleBindingList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -299,7 +299,7 @@ var xxx_messageInfo_RoleBindingList proto.InternalMessageInfo
     func (m *RoleList) Reset()      { *m = RoleList{} }
     func (*RoleList) ProtoMessage() {}
     func (*RoleList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{9}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{9}
     }
     func (m *RoleList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -327,7 +327,7 @@ var xxx_messageInfo_RoleList proto.InternalMessageInfo
     func (m *RoleRef) Reset()      { *m = RoleRef{} }
     func (*RoleRef) ProtoMessage() {}
     func (*RoleRef) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{10}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{10}
     }
     func (m *RoleRef) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -355,7 +355,7 @@ var xxx_messageInfo_RoleRef proto.InternalMessageInfo
     func (m *Subject) Reset()      { *m = Subject{} }
     func (*Subject) ProtoMessage() {}
     func (*Subject) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_99f6bec96facc83d, []int{11}
    +	return fileDescriptor_c5bc2d145acd4e45, []int{11}
     }
     func (m *Subject) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -396,62 +396,61 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1beta1/generated.proto", fileDescriptor_99f6bec96facc83d)
    -}
    -
    -var fileDescriptor_99f6bec96facc83d = []byte{
    -	// 812 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xbd, 0x6f, 0x2b, 0x45,
    -	0x10, 0xf7, 0x3a, 0xb6, 0xe2, 0x5b, 0x63, 0x99, 0xb7, 0x3c, 0xf1, 0x4e, 0x11, 0x9c, 0x2d, 0x43,
    -	0x11, 0xe9, 0xc1, 0x1d, 0x79, 0x20, 0xa0, 0x89, 0x44, 0x8e, 0x02, 0xa2, 0x04, 0x13, 0x6d, 0x04,
    -	0x05, 0xa2, 0x60, 0xef, 0xbc, 0xb9, 0x2c, 0xbe, 0x2f, 0xed, 0xde, 0x59, 0x8a, 0x68, 0x68, 0xe8,
    -	0x28, 0x90, 0xa8, 0x68, 0xa9, 0xa9, 0x28, 0xf9, 0x0b, 0x5c, 0xa6, 0x4c, 0x65, 0x91, 0xe3, 0x0f,
    -	0x01, 0xed, 0x7d, 0xf8, 0xfc, 0x75, 0x89, 0x2b, 0x4b, 0x48, 0xaf, 0xb2, 0x77, 0xe6, 0x37, 0xbf,
    -	0x99, 0xf9, 0xed, 0xce, 0xd8, 0xf0, 0x93, 0xf1, 0xc7, 0x42, 0x67, 0x81, 0x31, 0x8e, 0x2d, 0xca,
    -	0x7d, 0x1a, 0x51, 0x61, 0x4c, 0xa8, 0x3f, 0x0a, 0xb8, 0x91, 0x3b, 0x48, 0xc8, 0x0c, 0x6e, 0x11,
    -	0xdb, 0x98, 0x1c, 0x59, 0x34, 0x22, 0x47, 0x86, 0x43, 0x7d, 0xca, 0x49, 0x44, 0x47, 0x7a, 0xc8,
    -	0x83, 0x28, 0x40, 0xcf, 0x32, 0xa0, 0x4e, 0x42, 0xa6, 0x4b, 0xa0, 0x9e, 0x03, 0x0f, 0xde, 0x75,
    -	0x58, 0x74, 0x1d, 0x5b, 0xba, 0x1d, 0x78, 0x86, 0x13, 0x38, 0x81, 0x91, 0xe2, 0xad, 0xf8, 0x2a,
    -	0x3d, 0xa5, 0x87, 0xf4, 0x5b, 0xc6, 0x73, 0xf0, 0x41, 0x99, 0xd0, 0x23, 0xf6, 0x35, 0xf3, 0x29,
    -	0xbf, 0x31, 0xc2, 0xb1, 0x23, 0x0d, 0xc2, 0xf0, 0x68, 0x44, 0x8c, 0xc9, 0x5a, 0xf6, 0x03, 0xa3,
    -	0x2a, 0x8a, 0xc7, 0x7e, 0xc4, 0x3c, 0xba, 0x16, 0xf0, 0xe1, 0x63, 0x01, 0xc2, 0xbe, 0xa6, 0x1e,
    -	0x59, 0x8d, 0x1b, 0xfc, 0x06, 0x60, 0xf7, 0xc4, 0x71, 0x38, 0x75, 0x48, 0xc4, 0x02, 0x1f, 0xc7,
    -	0x2e, 0x45, 0x3f, 0x01, 0xf8, 0xd4, 0x76, 0x63, 0x11, 0x51, 0x8e, 0x03, 0x97, 0x5e, 0x52, 0x97,
    -	0xda, 0x51, 0xc0, 0x85, 0x0a, 0xfa, 0x7b, 0x87, 0xed, 0x17, 0xef, 0xeb, 0xa5, 0x34, 0xf3, 0x5c,
    -	0x7a, 0x38, 0x76, 0xa4, 0x41, 0xe8, 0xb2, 0x25, 0x7d, 0x72, 0xa4, 0x9f, 0x13, 0x8b, 0xba, 0x45,
    -	0xac, 0xf9, 0xc6, 0x74, 0xd6, 0xab, 0x25, 0xb3, 0xde, 0xd3, 0x4f, 0x37, 0x10, 0xe3, 0x8d, 0xe9,
    -	0x06, 0xbf, 0xd7, 0x61, 0x7b, 0x01, 0x8e, 0xbe, 0x83, 0x2d, 0x49, 0x3e, 0x22, 0x11, 0x51, 0x41,
    -	0x1f, 0x1c, 0xb6, 0x5f, 0xbc, 0xb7, 0x5d, 0x29, 0x5f, 0x5a, 0xdf, 0x53, 0x3b, 0xfa, 0x82, 0x46,
    -	0xc4, 0x44, 0x79, 0x1d, 0xb0, 0xb4, 0xe1, 0x39, 0x2b, 0xfa, 0x1c, 0x36, 0x79, 0xec, 0x52, 0xa1,
    -	0xd6, 0xd3, 0x4e, 0xdf, 0xd2, 0x2b, 0x1e, 0x81, 0x7e, 0x11, 0xb8, 0xcc, 0xbe, 0x91, 0x6a, 0x99,
    -	0x9d, 0x9c, 0xb1, 0x29, 0x4f, 0x02, 0x67, 0x04, 0xc8, 0x81, 0x5d, 0xb2, 0x2c, 0xab, 0xba, 0x97,
    -	0x96, 0x7c, 0x58, 0xc9, 0xb9, 0x72, 0x0d, 0xe6, 0x6b, 0xc9, 0xac, 0xb7, 0x7a, 0x37, 0x78, 0x95,
    -	0x75, 0xf0, 0x6b, 0x1d, 0xa2, 0x05, 0x91, 0x4c, 0xe6, 0x8f, 0x98, 0xef, 0xec, 0x40, 0xab, 0x21,
    -	0x6c, 0x89, 0x38, 0x75, 0x14, 0x72, 0xf5, 0x2b, 0x5b, 0xbb, 0xcc, 0x80, 0xe6, 0xab, 0x39, 0x63,
    -	0x2b, 0x37, 0x08, 0x3c, 0xe7, 0x40, 0x67, 0x70, 0x9f, 0x07, 0x2e, 0xc5, 0xf4, 0x2a, 0x57, 0xaa,
    -	0x9a, 0x0e, 0x67, 0x38, 0xb3, 0x9b, 0xd3, 0xed, 0xe7, 0x06, 0x5c, 0x30, 0x0c, 0xa6, 0x00, 0xbe,
    -	0xbe, 0xae, 0xca, 0x39, 0x13, 0x11, 0xfa, 0x76, 0x4d, 0x19, 0x7d, 0xcb, 0x07, 0xcd, 0x44, 0xa6,
    -	0xcb, 0xbc, 0x8b, 0xc2, 0xb2, 0xa0, 0xca, 0x05, 0x6c, 0xb2, 0x88, 0x7a, 0x85, 0x24, 0xcf, 0x2b,
    -	0x7b, 0x58, 0xaf, 0xae, 0x7c, 0x49, 0xa7, 0x92, 0x01, 0x67, 0x44, 0x83, 0xbf, 0x00, 0xec, 0x2e,
    -	0x80, 0x77, 0xd0, 0xc3, 0xe9, 0x72, 0x0f, 0x6f, 0x6f, 0xd5, 0xc3, 0xe6, 0xe2, 0xff, 0x05, 0x10,
    -	0x96, 0xb3, 0x82, 0x7a, 0xb0, 0x39, 0xa1, 0xdc, 0xca, 0x36, 0x89, 0x62, 0x2a, 0x12, 0xff, 0xb5,
    -	0x34, 0xe0, 0xcc, 0x8e, 0x9e, 0x43, 0x85, 0x84, 0xec, 0x33, 0x1e, 0xc4, 0x61, 0x96, 0x5e, 0x31,
    -	0x3b, 0xc9, 0xac, 0xa7, 0x9c, 0x5c, 0x9c, 0x66, 0x46, 0x5c, 0xfa, 0x25, 0x98, 0x53, 0x11, 0xc4,
    -	0xdc, 0xa6, 0x42, 0xdd, 0x2b, 0xc1, 0xb8, 0x30, 0xe2, 0xd2, 0x8f, 0x3e, 0x82, 0x9d, 0xe2, 0x30,
    -	0x24, 0x1e, 0x15, 0x6a, 0x23, 0x0d, 0x78, 0x92, 0xcc, 0x7a, 0x1d, 0xbc, 0xe8, 0xc0, 0xcb, 0x38,
    -	0x74, 0x0c, 0xbb, 0x7e, 0xe0, 0x17, 0x90, 0xaf, 0xf0, 0xb9, 0x50, 0x9b, 0x69, 0x68, 0x3a, 0x9f,
    -	0xc3, 0x65, 0x17, 0x5e, 0xc5, 0x0e, 0xfe, 0x04, 0xb0, 0xf1, 0x7f, 0xdb, 0x5e, 0x83, 0x9f, 0xeb,
    -	0xb0, 0xfd, 0x72, 0x9b, 0xcc, 0xb7, 0x89, 0x1c, 0xc1, 0xdd, 0xae, 0x91, 0xad, 0x47, 0xf0, 0xf1,
    -	0xfd, 0xf1, 0x07, 0x80, 0xad, 0x1d, 0x2d, 0x0e, 0x73, 0xb9, 0xea, 0x37, 0x1f, 0xae, 0x7a, 0x73,
    -	0xb9, 0x3f, 0xc0, 0x42, 0x7f, 0xf4, 0x0e, 0x6c, 0x15, 0xc3, 0x9e, 0x16, 0xab, 0x94, 0xc9, 0x8b,
    -	0x7d, 0x80, 0xe7, 0x08, 0xd4, 0x87, 0x8d, 0x31, 0xf3, 0x47, 0x6a, 0x3d, 0x45, 0xbe, 0x92, 0x23,
    -	0x1b, 0x67, 0xcc, 0x1f, 0xe1, 0xd4, 0x23, 0x11, 0x3e, 0xf1, 0xb2, 0x1f, 0xe2, 0x05, 0x84, 0x1c,
    -	0x73, 0x9c, 0x7a, 0xa4, 0x56, 0xfb, 0xf9, 0x63, 0x9a, 0xf3, 0x81, 0x4a, 0xbe, 0xc5, 0xfa, 0xea,
    -	0xdb, 0xd4, 0xf7, 0x70, 0x76, 0x64, 0x40, 0x45, 0x7e, 0x8a, 0x90, 0xd8, 0x54, 0x6d, 0xa4, 0xb0,
    -	0x27, 0x39, 0x4c, 0x19, 0x16, 0x0e, 0x5c, 0x62, 0xcc, 0xe3, 0xe9, 0xbd, 0x56, 0xbb, 0xbd, 0xd7,
    -	0x6a, 0x77, 0xf7, 0x5a, 0xed, 0xc7, 0x44, 0x03, 0xd3, 0x44, 0x03, 0xb7, 0x89, 0x06, 0xee, 0x12,
    -	0x0d, 0xfc, 0x9d, 0x68, 0xe0, 0x97, 0x7f, 0xb4, 0xda, 0x37, 0xcf, 0x2a, 0xfe, 0xf2, 0xfe, 0x17,
    -	0x00, 0x00, 0xff, 0xff, 0xf7, 0xdd, 0xcc, 0x2b, 0x25, 0x0b, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/rbac/v1beta1/generated.proto", fileDescriptor_c5bc2d145acd4e45)
    +}
    +
    +var fileDescriptor_c5bc2d145acd4e45 = []byte{
    +	// 800 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x3b, 0x6f, 0xe3, 0x46,
    +	0x10, 0xd6, 0xca, 0x12, 0x2c, 0xae, 0x22, 0x28, 0xde, 0x18, 0x31, 0x61, 0x24, 0x94, 0xa0, 0x04,
    +	0x88, 0x01, 0x27, 0x64, 0xec, 0x04, 0x49, 0x1a, 0x17, 0x66, 0x8a, 0xc4, 0xb0, 0xa3, 0x18, 0x6b,
    +	0x24, 0x45, 0x90, 0x22, 0x2b, 0x6a, 0x4d, 0x6f, 0xc4, 0x17, 0xb8, 0xa4, 0x00, 0x23, 0x4d, 0x9a,
    +	0xeb, 0xae, 0x38, 0xe0, 0xaa, 0x6b, 0xaf, 0xbe, 0xea, 0xca, 0xfb, 0x05, 0x2a, 0x5d, 0xba, 0x12,
    +	0xce, 0xbc, 0x1f, 0x72, 0x87, 0xe5, 0x43, 0xd4, 0x8b, 0xb6, 0x2a, 0x01, 0x07, 0x5c, 0x25, 0xed,
    +	0xcc, 0x37, 0xdf, 0xcc, 0x7c, 0xbb, 0x33, 0x12, 0xfc, 0x6a, 0xf0, 0x13, 0x57, 0x99, 0xab, 0x11,
    +	0x8f, 0x69, 0x7e, 0x8f, 0x18, 0xda, 0xf0, 0xa0, 0x47, 0x03, 0x72, 0xa0, 0x99, 0xd4, 0xa1, 0x3e,
    +	0x09, 0x68, 0x5f, 0xf5, 0x7c, 0x37, 0x70, 0xd1, 0x4e, 0x02, 0x54, 0x89, 0xc7, 0x54, 0x01, 0x54,
    +	0x53, 0xe0, 0xee, 0x37, 0x26, 0x0b, 0xae, 0xc2, 0x9e, 0x6a, 0xb8, 0xb6, 0x66, 0xba, 0xa6, 0xab,
    +	0xc5, 0xf8, 0x5e, 0x78, 0x19, 0x9f, 0xe2, 0x43, 0xfc, 0x2d, 0xe1, 0xd9, 0xfd, 0x3e, 0x4f, 0x68,
    +	0x13, 0xe3, 0x8a, 0x39, 0xd4, 0xbf, 0xd6, 0xbc, 0x81, 0x29, 0x0c, 0x5c, 0xb3, 0x69, 0x40, 0xb4,
    +	0xe1, 0x42, 0xf6, 0x5d, 0xad, 0x28, 0xca, 0x0f, 0x9d, 0x80, 0xd9, 0x74, 0x21, 0xe0, 0x87, 0x87,
    +	0x02, 0xb8, 0x71, 0x45, 0x6d, 0x32, 0x1f, 0xd7, 0x79, 0x06, 0x60, 0xf3, 0xd8, 0x34, 0x7d, 0x6a,
    +	0x92, 0x80, 0xb9, 0x0e, 0x0e, 0x2d, 0x8a, 0x1e, 0x01, 0xb8, 0x6d, 0x58, 0x21, 0x0f, 0xa8, 0x8f,
    +	0x5d, 0x8b, 0x5e, 0x50, 0x8b, 0x1a, 0x81, 0xeb, 0x73, 0x19, 0xb4, 0x37, 0xf6, 0xea, 0x87, 0xdf,
    +	0xa9, 0xb9, 0x34, 0x93, 0x5c, 0xaa, 0x37, 0x30, 0x85, 0x81, 0xab, 0xa2, 0x25, 0x75, 0x78, 0xa0,
    +	0x9e, 0x91, 0x1e, 0xb5, 0xb2, 0x58, 0xfd, 0xb3, 0xd1, 0xb8, 0x55, 0x8a, 0xc6, 0xad, 0xed, 0x9f,
    +	0x97, 0x10, 0xe3, 0xa5, 0xe9, 0x3a, 0xcf, 0xcb, 0xb0, 0x3e, 0x05, 0x47, 0xff, 0xc0, 0x9a, 0x20,
    +	0xef, 0x93, 0x80, 0xc8, 0xa0, 0x0d, 0xf6, 0xea, 0x87, 0xdf, 0xae, 0x56, 0xca, 0xef, 0xbd, 0x7f,
    +	0xa9, 0x11, 0xfc, 0x46, 0x03, 0xa2, 0xa3, 0xb4, 0x0e, 0x98, 0xdb, 0xf0, 0x84, 0x15, 0xfd, 0x0a,
    +	0xab, 0x7e, 0x68, 0x51, 0x2e, 0x97, 0xe3, 0x4e, 0xbf, 0x50, 0x0b, 0x1e, 0x81, 0x7a, 0xee, 0x5a,
    +	0xcc, 0xb8, 0x16, 0x6a, 0xe9, 0x8d, 0x94, 0xb1, 0x2a, 0x4e, 0x1c, 0x27, 0x04, 0xc8, 0x84, 0x4d,
    +	0x32, 0x2b, 0xab, 0xbc, 0x11, 0x97, 0xbc, 0x57, 0xc8, 0x39, 0x77, 0x0d, 0xfa, 0x27, 0xd1, 0xb8,
    +	0x35, 0x7f, 0x37, 0x78, 0x9e, 0xb5, 0xf3, 0xb4, 0x0c, 0xd1, 0x94, 0x48, 0x3a, 0x73, 0xfa, 0xcc,
    +	0x31, 0xd7, 0xa0, 0x55, 0x17, 0xd6, 0x78, 0x18, 0x3b, 0x32, 0xb9, 0xda, 0x85, 0xad, 0x5d, 0x24,
    +	0x40, 0xfd, 0xe3, 0x94, 0xb1, 0x96, 0x1a, 0x38, 0x9e, 0x70, 0xa0, 0x53, 0xb8, 0xe9, 0xbb, 0x16,
    +	0xc5, 0xf4, 0x32, 0x55, 0xaa, 0x98, 0x0e, 0x27, 0x38, 0xbd, 0x99, 0xd2, 0x6d, 0xa6, 0x06, 0x9c,
    +	0x31, 0x74, 0x46, 0x00, 0x7e, 0xba, 0xa8, 0xca, 0x19, 0xe3, 0x01, 0xfa, 0x7b, 0x41, 0x19, 0x75,
    +	0xc5, 0x07, 0xcd, 0x78, 0xa2, 0xcb, 0xa4, 0x8b, 0xcc, 0x32, 0xa5, 0xca, 0x39, 0xac, 0xb2, 0x80,
    +	0xda, 0x99, 0x24, 0xfb, 0x85, 0x3d, 0x2c, 0x56, 0x97, 0xbf, 0xa4, 0x13, 0xc1, 0x80, 0x13, 0xa2,
    +	0xce, 0x2b, 0x00, 0x9b, 0x53, 0xe0, 0x35, 0xf4, 0x70, 0x32, 0xdb, 0xc3, 0x97, 0x2b, 0xf5, 0xb0,
    +	0xbc, 0xf8, 0xb7, 0x00, 0xc2, 0x7c, 0x56, 0x50, 0x0b, 0x56, 0x87, 0xd4, 0xef, 0x25, 0x9b, 0x44,
    +	0xd2, 0x25, 0x81, 0xff, 0x53, 0x18, 0x70, 0x62, 0x47, 0xfb, 0x50, 0x22, 0x1e, 0xfb, 0xc5, 0x77,
    +	0x43, 0x2f, 0x49, 0x2f, 0xe9, 0x8d, 0x68, 0xdc, 0x92, 0x8e, 0xcf, 0x4f, 0x12, 0x23, 0xce, 0xfd,
    +	0x02, 0xec, 0x53, 0xee, 0x86, 0xbe, 0x41, 0xb9, 0xbc, 0x91, 0x83, 0x71, 0x66, 0xc4, 0xb9, 0x1f,
    +	0xfd, 0x08, 0x1b, 0xd9, 0xa1, 0x4b, 0x6c, 0xca, 0xe5, 0x4a, 0x1c, 0xb0, 0x15, 0x8d, 0x5b, 0x0d,
    +	0x3c, 0xed, 0xc0, 0xb3, 0x38, 0x74, 0x04, 0x9b, 0x8e, 0xeb, 0x64, 0x90, 0x3f, 0xf0, 0x19, 0x97,
    +	0xab, 0x71, 0x68, 0x3c, 0x9f, 0xdd, 0x59, 0x17, 0x9e, 0xc7, 0x76, 0x5e, 0x02, 0x58, 0x79, 0xdf,
    +	0xb6, 0x57, 0xe7, 0x71, 0x19, 0xd6, 0x3f, 0x6c, 0x93, 0xc9, 0x36, 0x11, 0x23, 0xb8, 0xde, 0x35,
    +	0xb2, 0xf2, 0x08, 0x3e, 0xbc, 0x3f, 0x5e, 0x00, 0x58, 0x5b, 0xd3, 0xe2, 0xd0, 0x67, 0xab, 0xfe,
    +	0xfc, 0xfe, 0xaa, 0x97, 0x97, 0xfb, 0x1f, 0xcc, 0xf4, 0x47, 0x5f, 0xc3, 0x5a, 0x36, 0xec, 0x71,
    +	0xb1, 0x52, 0x9e, 0x3c, 0xdb, 0x07, 0x78, 0x82, 0x40, 0x6d, 0x58, 0x19, 0x30, 0xa7, 0x2f, 0x97,
    +	0x63, 0xe4, 0x47, 0x29, 0xb2, 0x72, 0xca, 0x9c, 0x3e, 0x8e, 0x3d, 0x02, 0xe1, 0x10, 0x3b, 0xf9,
    +	0x21, 0x9e, 0x42, 0x88, 0x31, 0xc7, 0xb1, 0x47, 0x68, 0xb5, 0x99, 0x3e, 0xa6, 0x09, 0x1f, 0x28,
    +	0xe4, 0x9b, 0xae, 0xaf, 0xbc, 0x4a, 0x7d, 0xf7, 0x67, 0x47, 0x1a, 0x94, 0xc4, 0x27, 0xf7, 0x88,
    +	0x41, 0xe5, 0x4a, 0x0c, 0xdb, 0x4a, 0x61, 0x52, 0x37, 0x73, 0xe0, 0x1c, 0xa3, 0x1f, 0x8d, 0xee,
    +	0x94, 0xd2, 0xcd, 0x9d, 0x52, 0xba, 0xbd, 0x53, 0x4a, 0xff, 0x47, 0x0a, 0x18, 0x45, 0x0a, 0xb8,
    +	0x89, 0x14, 0x70, 0x1b, 0x29, 0xe0, 0x75, 0xa4, 0x80, 0x27, 0x6f, 0x94, 0xd2, 0x5f, 0x3b, 0x05,
    +	0x7f, 0x79, 0xdf, 0x05, 0x00, 0x00, 0xff, 0xff, 0x75, 0xfb, 0x5a, 0x79, 0x0c, 0x0b, 0x00, 0x00,
     }
     
     func (m *AggregationRule) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/rbac/v1beta1/generated.proto b/vendor/k8s.io/api/rbac/v1beta1/generated.proto
    index f6b2f0dde1a7..8bfbd0c8ac63 100644
    --- a/vendor/k8s.io/api/rbac/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/rbac/v1beta1/generated.proto
    @@ -33,7 +33,8 @@ message AggregationRule {
       // ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
       // If any of the selectors match, then the ClusterRole's permissions will be added
       // +optional
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector clusterRoleSelectors = 1;
    +  // +listType=atomic
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector clusterRoleSelectors = 1;
     }
     
     // ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
    @@ -41,10 +42,11 @@ message AggregationRule {
     message ClusterRole {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Rules holds all the PolicyRules for this ClusterRole
       // +optional
    +  // +listType=atomic
       repeated PolicyRule rules = 2;
     
       // AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
    @@ -60,10 +62,11 @@ message ClusterRole {
     message ClusterRoleBinding {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Subjects holds references to the objects the role applies to.
       // +optional
    +  // +listType=atomic
       repeated Subject subjects = 2;
     
       // RoleRef can only reference a ClusterRole in the global namespace.
    @@ -76,7 +79,7 @@ message ClusterRoleBinding {
     message ClusterRoleBindingList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of ClusterRoleBindings
       repeated ClusterRoleBinding items = 2;
    @@ -87,7 +90,7 @@ message ClusterRoleBindingList {
     message ClusterRoleList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of ClusterRoles
       repeated ClusterRole items = 2;
    @@ -97,26 +100,31 @@ message ClusterRoleList {
     // about who the rule applies to or which namespace the rule applies to.
     message PolicyRule {
       // Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs.
    +  // +listType=atomic
       repeated string verbs = 1;
     
       // APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       // the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
       // +optional
    +  // +listType=atomic
       repeated string apiGroups = 2;
     
       // Resources is a list of resources this rule applies to.  '*' represents all resources in the specified apiGroups.
       // '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.
       // +optional
    +  // +listType=atomic
       repeated string resources = 3;
     
       // ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       // +optional
    +  // +listType=atomic
       repeated string resourceNames = 4;
     
       // NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       // +optional
    +  // +listType=atomic
       repeated string nonResourceURLs = 5;
     }
     
    @@ -125,10 +133,11 @@ message PolicyRule {
     message Role {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Rules holds all the PolicyRules for this Role
       // +optional
    +  // +listType=atomic
       repeated PolicyRule rules = 2;
     }
     
    @@ -139,10 +148,11 @@ message Role {
     message RoleBinding {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Subjects holds references to the objects the role applies to.
       // +optional
    +  // +listType=atomic
       repeated Subject subjects = 2;
     
       // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
    @@ -155,7 +165,7 @@ message RoleBinding {
     message RoleBindingList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of RoleBindings
       repeated RoleBinding items = 2;
    @@ -166,7 +176,7 @@ message RoleBindingList {
     message RoleList {
       // Standard object's metadata.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // Items is a list of Roles
       repeated Role items = 2;
    diff --git a/vendor/k8s.io/api/rbac/v1beta1/types.go b/vendor/k8s.io/api/rbac/v1beta1/types.go
    index 4941cd2abce8..9cfaaceb92c6 100644
    --- a/vendor/k8s.io/api/rbac/v1beta1/types.go
    +++ b/vendor/k8s.io/api/rbac/v1beta1/types.go
    @@ -48,24 +48,29 @@ const (
     // about who the rule applies to or which namespace the rule applies to.
     type PolicyRule struct {
     	// Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs.
    +	// +listType=atomic
     	Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"`
     
     	// APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     	// the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
     	// +optional
    +	// +listType=atomic
     	APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,2,rep,name=apiGroups"`
     	// Resources is a list of resources this rule applies to.  '*' represents all resources in the specified apiGroups.
     	// '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.
     	// +optional
    +	// +listType=atomic
     	Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"`
     	// ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     	// +optional
    +	// +listType=atomic
     	ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,4,rep,name=resourceNames"`
     
     	// NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     	// Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     	// Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     	// +optional
    +	// +listType=atomic
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,5,rep,name=nonResourceURLs"`
     }
     
    @@ -79,7 +84,7 @@ type Subject struct {
     	// Defaults to "" for ServiceAccount subjects.
     	// Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
     	// +optional
    -	APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,2,opt.name=apiGroup"`
    +	APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,2,opt,name=apiGroup"`
     	// Name of the object being referenced.
     	Name string `json:"name" protobuf:"bytes,3,opt,name=name"`
     	// Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
    @@ -115,6 +120,7 @@ type Role struct {
     
     	// Rules holds all the PolicyRules for this Role
     	// +optional
    +	// +listType=atomic
     	Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"`
     }
     
    @@ -137,6 +143,7 @@ type RoleBinding struct {
     
     	// Subjects holds references to the objects the role applies to.
     	// +optional
    +	// +listType=atomic
     	Subjects []Subject `json:"subjects,omitempty" protobuf:"bytes,2,rep,name=subjects"`
     
     	// RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
    @@ -198,6 +205,7 @@ type ClusterRole struct {
     
     	// Rules holds all the PolicyRules for this ClusterRole
     	// +optional
    +	// +listType=atomic
     	Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"`
     	// AggregationRule is an optional field that describes how to build the Rules for this ClusterRole.
     	// If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be
    @@ -211,6 +219,7 @@ type AggregationRule struct {
     	// ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules.
     	// If any of the selectors match, then the ClusterRole's permissions will be added
     	// +optional
    +	// +listType=atomic
     	ClusterRoleSelectors []metav1.LabelSelector `json:"clusterRoleSelectors,omitempty" protobuf:"bytes,1,rep,name=clusterRoleSelectors"`
     }
     
    @@ -233,6 +242,7 @@ type ClusterRoleBinding struct {
     
     	// Subjects holds references to the objects the role applies to.
     	// +optional
    +	// +listType=atomic
     	Subjects []Subject `json:"subjects,omitempty" protobuf:"bytes,2,rep,name=subjects"`
     
     	// RoleRef can only reference a ClusterRole in the global namespace.
    diff --git a/vendor/k8s.io/api/resource/v1alpha2/generated.pb.go b/vendor/k8s.io/api/resource/v1alpha2/generated.pb.go
    deleted file mode 100644
    index 2e8f9c724a54..000000000000
    --- a/vendor/k8s.io/api/resource/v1alpha2/generated.pb.go
    +++ /dev/null
    @@ -1,4817 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/resource/v1alpha2/generated.proto
    -
    -package v1alpha2
    -
    -import (
    -	fmt "fmt"
    -
    -	io "io"
    -
    -	proto "github.com/gogo/protobuf/proto"
    -	v1 "k8s.io/api/core/v1"
    -
    -	math "math"
    -	math_bits "math/bits"
    -	reflect "reflect"
    -	strings "strings"
    -
    -	k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
    -)
    -
    -// Reference imports to suppress errors if they are not otherwise used.
    -var _ = proto.Marshal
    -var _ = fmt.Errorf
    -var _ = math.Inf
    -
    -// This is a compile-time assertion to ensure that this generated file
    -// is compatible with the proto package it is being compiled against.
    -// A compilation error at this line likely means your copy of the
    -// proto package needs to be updated.
    -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    -
    -func (m *AllocationResult) Reset()      { *m = AllocationResult{} }
    -func (*AllocationResult) ProtoMessage() {}
    -func (*AllocationResult) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{0}
    -}
    -func (m *AllocationResult) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *AllocationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *AllocationResult) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_AllocationResult.Merge(m, src)
    -}
    -func (m *AllocationResult) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *AllocationResult) XXX_DiscardUnknown() {
    -	xxx_messageInfo_AllocationResult.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_AllocationResult proto.InternalMessageInfo
    -
    -func (m *PodSchedulingContext) Reset()      { *m = PodSchedulingContext{} }
    -func (*PodSchedulingContext) ProtoMessage() {}
    -func (*PodSchedulingContext) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{1}
    -}
    -func (m *PodSchedulingContext) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *PodSchedulingContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *PodSchedulingContext) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_PodSchedulingContext.Merge(m, src)
    -}
    -func (m *PodSchedulingContext) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *PodSchedulingContext) XXX_DiscardUnknown() {
    -	xxx_messageInfo_PodSchedulingContext.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_PodSchedulingContext proto.InternalMessageInfo
    -
    -func (m *PodSchedulingContextList) Reset()      { *m = PodSchedulingContextList{} }
    -func (*PodSchedulingContextList) ProtoMessage() {}
    -func (*PodSchedulingContextList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{2}
    -}
    -func (m *PodSchedulingContextList) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *PodSchedulingContextList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *PodSchedulingContextList) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_PodSchedulingContextList.Merge(m, src)
    -}
    -func (m *PodSchedulingContextList) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *PodSchedulingContextList) XXX_DiscardUnknown() {
    -	xxx_messageInfo_PodSchedulingContextList.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_PodSchedulingContextList proto.InternalMessageInfo
    -
    -func (m *PodSchedulingContextSpec) Reset()      { *m = PodSchedulingContextSpec{} }
    -func (*PodSchedulingContextSpec) ProtoMessage() {}
    -func (*PodSchedulingContextSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{3}
    -}
    -func (m *PodSchedulingContextSpec) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *PodSchedulingContextSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *PodSchedulingContextSpec) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_PodSchedulingContextSpec.Merge(m, src)
    -}
    -func (m *PodSchedulingContextSpec) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *PodSchedulingContextSpec) XXX_DiscardUnknown() {
    -	xxx_messageInfo_PodSchedulingContextSpec.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_PodSchedulingContextSpec proto.InternalMessageInfo
    -
    -func (m *PodSchedulingContextStatus) Reset()      { *m = PodSchedulingContextStatus{} }
    -func (*PodSchedulingContextStatus) ProtoMessage() {}
    -func (*PodSchedulingContextStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{4}
    -}
    -func (m *PodSchedulingContextStatus) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *PodSchedulingContextStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *PodSchedulingContextStatus) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_PodSchedulingContextStatus.Merge(m, src)
    -}
    -func (m *PodSchedulingContextStatus) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *PodSchedulingContextStatus) XXX_DiscardUnknown() {
    -	xxx_messageInfo_PodSchedulingContextStatus.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_PodSchedulingContextStatus proto.InternalMessageInfo
    -
    -func (m *ResourceClaim) Reset()      { *m = ResourceClaim{} }
    -func (*ResourceClaim) ProtoMessage() {}
    -func (*ResourceClaim) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{5}
    -}
    -func (m *ResourceClaim) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClaim) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClaim) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClaim.Merge(m, src)
    -}
    -func (m *ResourceClaim) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClaim) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClaim.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClaim proto.InternalMessageInfo
    -
    -func (m *ResourceClaimConsumerReference) Reset()      { *m = ResourceClaimConsumerReference{} }
    -func (*ResourceClaimConsumerReference) ProtoMessage() {}
    -func (*ResourceClaimConsumerReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{6}
    -}
    -func (m *ResourceClaimConsumerReference) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClaimConsumerReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClaimConsumerReference) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClaimConsumerReference.Merge(m, src)
    -}
    -func (m *ResourceClaimConsumerReference) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClaimConsumerReference) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClaimConsumerReference.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClaimConsumerReference proto.InternalMessageInfo
    -
    -func (m *ResourceClaimList) Reset()      { *m = ResourceClaimList{} }
    -func (*ResourceClaimList) ProtoMessage() {}
    -func (*ResourceClaimList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{7}
    -}
    -func (m *ResourceClaimList) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClaimList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClaimList) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClaimList.Merge(m, src)
    -}
    -func (m *ResourceClaimList) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClaimList) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClaimList.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClaimList proto.InternalMessageInfo
    -
    -func (m *ResourceClaimParametersReference) Reset()      { *m = ResourceClaimParametersReference{} }
    -func (*ResourceClaimParametersReference) ProtoMessage() {}
    -func (*ResourceClaimParametersReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{8}
    -}
    -func (m *ResourceClaimParametersReference) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClaimParametersReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClaimParametersReference) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClaimParametersReference.Merge(m, src)
    -}
    -func (m *ResourceClaimParametersReference) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClaimParametersReference) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClaimParametersReference.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClaimParametersReference proto.InternalMessageInfo
    -
    -func (m *ResourceClaimSchedulingStatus) Reset()      { *m = ResourceClaimSchedulingStatus{} }
    -func (*ResourceClaimSchedulingStatus) ProtoMessage() {}
    -func (*ResourceClaimSchedulingStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{9}
    -}
    -func (m *ResourceClaimSchedulingStatus) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClaimSchedulingStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClaimSchedulingStatus) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClaimSchedulingStatus.Merge(m, src)
    -}
    -func (m *ResourceClaimSchedulingStatus) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClaimSchedulingStatus) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClaimSchedulingStatus.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClaimSchedulingStatus proto.InternalMessageInfo
    -
    -func (m *ResourceClaimSpec) Reset()      { *m = ResourceClaimSpec{} }
    -func (*ResourceClaimSpec) ProtoMessage() {}
    -func (*ResourceClaimSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{10}
    -}
    -func (m *ResourceClaimSpec) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClaimSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClaimSpec) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClaimSpec.Merge(m, src)
    -}
    -func (m *ResourceClaimSpec) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClaimSpec) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClaimSpec.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClaimSpec proto.InternalMessageInfo
    -
    -func (m *ResourceClaimStatus) Reset()      { *m = ResourceClaimStatus{} }
    -func (*ResourceClaimStatus) ProtoMessage() {}
    -func (*ResourceClaimStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{11}
    -}
    -func (m *ResourceClaimStatus) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClaimStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClaimStatus) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClaimStatus.Merge(m, src)
    -}
    -func (m *ResourceClaimStatus) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClaimStatus) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClaimStatus.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClaimStatus proto.InternalMessageInfo
    -
    -func (m *ResourceClaimTemplate) Reset()      { *m = ResourceClaimTemplate{} }
    -func (*ResourceClaimTemplate) ProtoMessage() {}
    -func (*ResourceClaimTemplate) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{12}
    -}
    -func (m *ResourceClaimTemplate) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClaimTemplate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClaimTemplate) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClaimTemplate.Merge(m, src)
    -}
    -func (m *ResourceClaimTemplate) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClaimTemplate) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClaimTemplate.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClaimTemplate proto.InternalMessageInfo
    -
    -func (m *ResourceClaimTemplateList) Reset()      { *m = ResourceClaimTemplateList{} }
    -func (*ResourceClaimTemplateList) ProtoMessage() {}
    -func (*ResourceClaimTemplateList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{13}
    -}
    -func (m *ResourceClaimTemplateList) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClaimTemplateList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClaimTemplateList) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClaimTemplateList.Merge(m, src)
    -}
    -func (m *ResourceClaimTemplateList) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClaimTemplateList) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClaimTemplateList.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClaimTemplateList proto.InternalMessageInfo
    -
    -func (m *ResourceClaimTemplateSpec) Reset()      { *m = ResourceClaimTemplateSpec{} }
    -func (*ResourceClaimTemplateSpec) ProtoMessage() {}
    -func (*ResourceClaimTemplateSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{14}
    -}
    -func (m *ResourceClaimTemplateSpec) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClaimTemplateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClaimTemplateSpec) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClaimTemplateSpec.Merge(m, src)
    -}
    -func (m *ResourceClaimTemplateSpec) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClaimTemplateSpec) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClaimTemplateSpec.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClaimTemplateSpec proto.InternalMessageInfo
    -
    -func (m *ResourceClass) Reset()      { *m = ResourceClass{} }
    -func (*ResourceClass) ProtoMessage() {}
    -func (*ResourceClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{15}
    -}
    -func (m *ResourceClass) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClass) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClass) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClass.Merge(m, src)
    -}
    -func (m *ResourceClass) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClass) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClass.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClass proto.InternalMessageInfo
    -
    -func (m *ResourceClassList) Reset()      { *m = ResourceClassList{} }
    -func (*ResourceClassList) ProtoMessage() {}
    -func (*ResourceClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{16}
    -}
    -func (m *ResourceClassList) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClassList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClassList) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClassList.Merge(m, src)
    -}
    -func (m *ResourceClassList) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClassList) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClassList.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClassList proto.InternalMessageInfo
    -
    -func (m *ResourceClassParametersReference) Reset()      { *m = ResourceClassParametersReference{} }
    -func (*ResourceClassParametersReference) ProtoMessage() {}
    -func (*ResourceClassParametersReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{17}
    -}
    -func (m *ResourceClassParametersReference) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceClassParametersReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceClassParametersReference) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceClassParametersReference.Merge(m, src)
    -}
    -func (m *ResourceClassParametersReference) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceClassParametersReference) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceClassParametersReference.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceClassParametersReference proto.InternalMessageInfo
    -
    -func (m *ResourceHandle) Reset()      { *m = ResourceHandle{} }
    -func (*ResourceHandle) ProtoMessage() {}
    -func (*ResourceHandle) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3add37bbd52889e0, []int{18}
    -}
    -func (m *ResourceHandle) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ResourceHandle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ResourceHandle) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ResourceHandle.Merge(m, src)
    -}
    -func (m *ResourceHandle) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ResourceHandle) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ResourceHandle.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ResourceHandle proto.InternalMessageInfo
    -
    -func init() {
    -	proto.RegisterType((*AllocationResult)(nil), "k8s.io.api.resource.v1alpha2.AllocationResult")
    -	proto.RegisterType((*PodSchedulingContext)(nil), "k8s.io.api.resource.v1alpha2.PodSchedulingContext")
    -	proto.RegisterType((*PodSchedulingContextList)(nil), "k8s.io.api.resource.v1alpha2.PodSchedulingContextList")
    -	proto.RegisterType((*PodSchedulingContextSpec)(nil), "k8s.io.api.resource.v1alpha2.PodSchedulingContextSpec")
    -	proto.RegisterType((*PodSchedulingContextStatus)(nil), "k8s.io.api.resource.v1alpha2.PodSchedulingContextStatus")
    -	proto.RegisterType((*ResourceClaim)(nil), "k8s.io.api.resource.v1alpha2.ResourceClaim")
    -	proto.RegisterType((*ResourceClaimConsumerReference)(nil), "k8s.io.api.resource.v1alpha2.ResourceClaimConsumerReference")
    -	proto.RegisterType((*ResourceClaimList)(nil), "k8s.io.api.resource.v1alpha2.ResourceClaimList")
    -	proto.RegisterType((*ResourceClaimParametersReference)(nil), "k8s.io.api.resource.v1alpha2.ResourceClaimParametersReference")
    -	proto.RegisterType((*ResourceClaimSchedulingStatus)(nil), "k8s.io.api.resource.v1alpha2.ResourceClaimSchedulingStatus")
    -	proto.RegisterType((*ResourceClaimSpec)(nil), "k8s.io.api.resource.v1alpha2.ResourceClaimSpec")
    -	proto.RegisterType((*ResourceClaimStatus)(nil), "k8s.io.api.resource.v1alpha2.ResourceClaimStatus")
    -	proto.RegisterType((*ResourceClaimTemplate)(nil), "k8s.io.api.resource.v1alpha2.ResourceClaimTemplate")
    -	proto.RegisterType((*ResourceClaimTemplateList)(nil), "k8s.io.api.resource.v1alpha2.ResourceClaimTemplateList")
    -	proto.RegisterType((*ResourceClaimTemplateSpec)(nil), "k8s.io.api.resource.v1alpha2.ResourceClaimTemplateSpec")
    -	proto.RegisterType((*ResourceClass)(nil), "k8s.io.api.resource.v1alpha2.ResourceClass")
    -	proto.RegisterType((*ResourceClassList)(nil), "k8s.io.api.resource.v1alpha2.ResourceClassList")
    -	proto.RegisterType((*ResourceClassParametersReference)(nil), "k8s.io.api.resource.v1alpha2.ResourceClassParametersReference")
    -	proto.RegisterType((*ResourceHandle)(nil), "k8s.io.api.resource.v1alpha2.ResourceHandle")
    -}
    -
    -func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/resource/v1alpha2/generated.proto", fileDescriptor_3add37bbd52889e0)
    -}
    -
    -var fileDescriptor_3add37bbd52889e0 = []byte{
    -	// 1233 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4f, 0x6f, 0x1b, 0x45,
    -	0x14, 0xcf, 0xda, 0x6e, 0x95, 0x4c, 0x1a, 0x37, 0xd9, 0xb6, 0xe0, 0x46, 0xad, 0x63, 0xf6, 0x14,
    -	0x89, 0xb2, 0xdb, 0x06, 0x54, 0x2a, 0xfe, 0x49, 0xd9, 0x06, 0x4a, 0x04, 0x4d, 0xc3, 0x98, 0x8a,
    -	0x16, 0x21, 0xd4, 0xc9, 0xee, 0xab, 0xbd, 0x64, 0xff, 0xb1, 0x33, 0x6b, 0xa8, 0xb8, 0xf4, 0x23,
    -	0xf4, 0xc0, 0x01, 0x4e, 0x1c, 0xf9, 0x02, 0x7c, 0x03, 0x84, 0xd4, 0x63, 0x11, 0x1c, 0x7a, 0xb2,
    -	0xa8, 0xf9, 0x08, 0x9c, 0xe8, 0x09, 0xcd, 0x78, 0x77, 0xbd, 0xb3, 0xf6, 0x9a, 0x38, 0x07, 0x0b,
    -	0x4e, 0xc9, 0xcc, 0xfb, 0xbd, 0xdf, 0xfb, 0x37, 0xef, 0xcd, 0xac, 0xd1, 0xbb, 0x87, 0xd7, 0xa8,
    -	0xee, 0x04, 0xc6, 0x61, 0x7c, 0x00, 0x91, 0x0f, 0x0c, 0xa8, 0xd1, 0x03, 0xdf, 0x0e, 0x22, 0x23,
    -	0x11, 0x90, 0xd0, 0x31, 0x22, 0xa0, 0x41, 0x1c, 0x59, 0x60, 0xf4, 0xae, 0x10, 0x37, 0xec, 0x92,
    -	0x2d, 0xa3, 0x03, 0x3e, 0x44, 0x84, 0x81, 0xad, 0x87, 0x51, 0xc0, 0x02, 0xf5, 0xc2, 0x10, 0xad,
    -	0x93, 0xd0, 0xd1, 0x53, 0xb4, 0x9e, 0xa2, 0xd7, 0x5f, 0xe9, 0x38, 0xac, 0x1b, 0x1f, 0xe8, 0x56,
    -	0xe0, 0x19, 0x9d, 0xa0, 0x13, 0x18, 0x42, 0xe9, 0x20, 0xbe, 0x2f, 0x56, 0x62, 0x21, 0xfe, 0x1b,
    -	0x92, 0xad, 0x6b, 0x39, 0xd3, 0x56, 0x10, 0x71, 0xb3, 0x45, 0x83, 0xeb, 0xaf, 0x8d, 0x30, 0x1e,
    -	0xb1, 0xba, 0x8e, 0x0f, 0xd1, 0x03, 0x23, 0x3c, 0xec, 0xf0, 0x0d, 0x6a, 0x78, 0xc0, 0xc8, 0x24,
    -	0x2d, 0xa3, 0x4c, 0x2b, 0x8a, 0x7d, 0xe6, 0x78, 0x30, 0xa6, 0x70, 0xf5, 0xdf, 0x14, 0xa8, 0xd5,
    -	0x05, 0x8f, 0x14, 0xf5, 0xb4, 0xef, 0x2a, 0x68, 0x75, 0xdb, 0x75, 0x03, 0x8b, 0x30, 0x27, 0xf0,
    -	0x31, 0xd0, 0xd8, 0x65, 0x6a, 0x80, 0x4e, 0xa7, 0xb9, 0x79, 0x9f, 0xf8, 0xb6, 0x0b, 0xb4, 0xa1,
    -	0xb4, 0xaa, 0x9b, 0xcb, 0x5b, 0x97, 0xf4, 0x69, 0xe9, 0xd3, 0xb1, 0xa4, 0x64, 0xbe, 0xf8, 0xb8,
    -	0xbf, 0xb1, 0x30, 0xe8, 0x6f, 0x9c, 0x96, 0xf7, 0x29, 0x2e, 0xb2, 0xab, 0x07, 0x68, 0x95, 0xf4,
    -	0x88, 0xe3, 0x92, 0x03, 0x17, 0x6e, 0xf9, 0x7b, 0x81, 0x0d, 0xb4, 0x51, 0x69, 0x29, 0x9b, 0xcb,
    -	0x5b, 0xad, 0xbc, 0x45, 0x9e, 0x63, 0xbd, 0x77, 0x45, 0xe7, 0x80, 0x36, 0xb8, 0x60, 0xb1, 0x20,
    -	0x32, 0xcf, 0x0e, 0xfa, 0x1b, 0xab, 0xdb, 0x05, 0x6d, 0x3c, 0xc6, 0xa7, 0x1a, 0x68, 0x89, 0x76,
    -	0x49, 0x04, 0x7c, 0xaf, 0x51, 0x6d, 0x29, 0x9b, 0x8b, 0xe6, 0x5a, 0xe2, 0xe0, 0x52, 0x3b, 0x15,
    -	0xe0, 0x11, 0x46, 0xfb, 0xa9, 0x82, 0xce, 0xee, 0x07, 0x76, 0xdb, 0xea, 0x82, 0x1d, 0xbb, 0x8e,
    -	0xdf, 0xb9, 0x1e, 0xf8, 0x0c, 0xbe, 0x66, 0xea, 0x3d, 0xb4, 0xc8, 0xeb, 0x66, 0x13, 0x46, 0x1a,
    -	0x8a, 0xf0, 0xf2, 0x72, 0xce, 0xcb, 0x2c, 0xfd, 0x7a, 0x78, 0xd8, 0xe1, 0x1b, 0x54, 0xe7, 0x68,
    -	0xee, 0xf7, 0xad, 0x83, 0x2f, 0xc0, 0x62, 0x37, 0x81, 0x11, 0x53, 0x4d, 0x4c, 0xa3, 0xd1, 0x1e,
    -	0xce, 0x58, 0xd5, 0x3b, 0xa8, 0x46, 0x43, 0xb0, 0x92, 0x1c, 0x5c, 0x9d, 0x9e, 0xf5, 0x49, 0x3e,
    -	0xb6, 0x43, 0xb0, 0xcc, 0x53, 0x89, 0x8d, 0x1a, 0x5f, 0x61, 0xc1, 0xa8, 0xde, 0x43, 0x27, 0x29,
    -	0x23, 0x2c, 0xa6, 0x22, 0x05, 0xcb, 0x5b, 0xd7, 0x8e, 0xc1, 0x2d, 0xf4, 0xcd, 0x7a, 0xc2, 0x7e,
    -	0x72, 0xb8, 0xc6, 0x09, 0xaf, 0xf6, 0xab, 0x82, 0x1a, 0x93, 0xd4, 0x3e, 0x74, 0x28, 0x53, 0x3f,
    -	0x1b, 0x4b, 0x9d, 0x7e, 0xb4, 0xd4, 0x71, 0x6d, 0x91, 0xb8, 0xd5, 0xc4, 0xec, 0x62, 0xba, 0x93,
    -	0x4b, 0xdb, 0x27, 0xe8, 0x84, 0xc3, 0xc0, 0xe3, 0x67, 0x87, 0x9f, 0xd6, 0xad, 0xd9, 0x63, 0x33,
    -	0x57, 0x12, 0xfa, 0x13, 0xbb, 0x9c, 0x08, 0x0f, 0xf9, 0xb4, 0x47, 0x25, 0x31, 0xf1, 0xc4, 0xaa,
    -	0xd7, 0xd0, 0x29, 0x2a, 0x0e, 0x23, 0xd8, 0xfc, 0xa4, 0x89, 0xb8, 0x96, 0xcc, 0xb3, 0x09, 0xd1,
    -	0xa9, 0x76, 0x4e, 0x86, 0x25, 0xa4, 0xfa, 0x06, 0xaa, 0x87, 0x01, 0x03, 0x9f, 0x39, 0xc4, 0x4d,
    -	0x0f, 0x7d, 0x75, 0x73, 0xc9, 0x54, 0x07, 0xfd, 0x8d, 0xfa, 0xbe, 0x24, 0xc1, 0x05, 0xa4, 0xf6,
    -	0xbd, 0x82, 0xd6, 0xcb, 0xab, 0xa3, 0x7e, 0x83, 0xea, 0x69, 0xc4, 0xd7, 0x5d, 0xe2, 0x78, 0x69,
    -	0x07, 0xbf, 0x79, 0xb4, 0x0e, 0x16, 0x3a, 0x23, 0xee, 0xa4, 0xe4, 0x2f, 0x24, 0x31, 0xd5, 0x25,
    -	0x18, 0xc5, 0x05, 0x53, 0xda, 0x0f, 0x15, 0xb4, 0x22, 0x41, 0xe6, 0xd0, 0x32, 0x1f, 0x49, 0x2d,
    -	0x63, 0xcc, 0x12, 0x66, 0x59, 0xaf, 0xdc, 0x2d, 0xf4, 0xca, 0x95, 0x59, 0x48, 0xa7, 0x37, 0xc9,
    -	0x40, 0x41, 0x4d, 0x09, 0x7f, 0x3d, 0xf0, 0x69, 0xec, 0x41, 0x84, 0xe1, 0x3e, 0x44, 0xe0, 0x5b,
    -	0xa0, 0x5e, 0x42, 0x8b, 0x24, 0x74, 0x6e, 0x44, 0x41, 0x1c, 0x26, 0x47, 0x2a, 0x3b, 0xfa, 0xdb,
    -	0xfb, 0xbb, 0x62, 0x1f, 0x67, 0x08, 0x8e, 0x4e, 0x3d, 0x12, 0xde, 0xe6, 0xd0, 0xa9, 0x1d, 0x9c,
    -	0x21, 0xd4, 0x16, 0xaa, 0xf9, 0xc4, 0x83, 0x46, 0x4d, 0x20, 0xb3, 0xd8, 0xf7, 0x88, 0x07, 0x58,
    -	0x48, 0x54, 0x13, 0x55, 0x63, 0xc7, 0x6e, 0x9c, 0x10, 0x80, 0xcb, 0x09, 0xa0, 0x7a, 0x7b, 0x77,
    -	0xe7, 0x79, 0x7f, 0xe3, 0xa5, 0xb2, 0xbb, 0x86, 0x3d, 0x08, 0x81, 0xea, 0xb7, 0x77, 0x77, 0x30,
    -	0x57, 0xd6, 0x7e, 0x56, 0xd0, 0x9a, 0x14, 0xe4, 0x1c, 0x46, 0xc0, 0xbe, 0x3c, 0x02, 0x5e, 0x9e,
    -	0xa1, 0x64, 0x25, 0xbd, 0xff, 0xad, 0x82, 0x5a, 0x12, 0x6e, 0x9f, 0x44, 0xc4, 0x03, 0x06, 0x11,
    -	0x3d, 0x6e, 0xb1, 0x5a, 0xa8, 0x76, 0xe8, 0xf8, 0xb6, 0x38, 0xab, 0xb9, 0xf4, 0x7f, 0xe0, 0xf8,
    -	0x36, 0x16, 0x92, 0xac, 0x40, 0xd5, 0xb2, 0x02, 0x69, 0x0f, 0x15, 0x74, 0x71, 0x6a, 0xb7, 0x66,
    -	0x1c, 0x4a, 0x69, 0x91, 0xdf, 0x46, 0xa7, 0x63, 0x9f, 0xc6, 0x0e, 0xe3, 0xf7, 0x5d, 0x7e, 0x00,
    -	0x9d, 0xe1, 0xb7, 0xf6, 0x6d, 0x59, 0x84, 0x8b, 0x58, 0xed, 0xc7, 0x4a, 0xa1, 0xbe, 0x62, 0x1c,
    -	0xde, 0x40, 0x6b, 0xb9, 0x71, 0x40, 0xe9, 0xde, 0xc8, 0x87, 0xf3, 0x89, 0x0f, 0x79, 0xad, 0x21,
    -	0x00, 0x8f, 0xeb, 0xa8, 0x5f, 0xa1, 0x95, 0x30, 0x9f, 0xea, 0xa4, 0xb5, 0xdf, 0x99, 0xa1, 0xa4,
    -	0x13, 0x4a, 0x65, 0xae, 0x0d, 0xfa, 0x1b, 0x2b, 0x92, 0x00, 0xcb, 0x76, 0xd4, 0x7d, 0x54, 0x27,
    -	0xd9, 0x93, 0xe8, 0x26, 0x1f, 0xe9, 0xc3, 0x32, 0x6c, 0xa6, 0xe3, 0x6f, 0x5b, 0x92, 0x3e, 0x1f,
    -	0xdb, 0xc1, 0x05, 0x7d, 0xed, 0xaf, 0x0a, 0x3a, 0x33, 0x61, 0x3c, 0xa8, 0x5b, 0x08, 0xd9, 0x91,
    -	0xd3, 0x83, 0x28, 0x97, 0xa4, 0x6c, 0xcc, 0xed, 0x64, 0x12, 0x9c, 0x43, 0xa9, 0x9f, 0x23, 0x34,
    -	0x62, 0x4f, 0x72, 0xa2, 0x4f, 0xcf, 0x49, 0xf1, 0x81, 0x67, 0xd6, 0x39, 0x7f, 0x6e, 0x37, 0xc7,
    -	0xa8, 0x52, 0xb4, 0x1c, 0x01, 0x85, 0xa8, 0x07, 0xf6, 0x7b, 0x41, 0xd4, 0xa8, 0x8a, 0x3e, 0x7a,
    -	0x6b, 0x86, 0xa4, 0x8f, 0x8d, 0x32, 0xf3, 0x4c, 0x12, 0xd2, 0x32, 0x1e, 0x11, 0xe3, 0xbc, 0x15,
    -	0xb5, 0x8d, 0xce, 0xd9, 0x40, 0x72, 0x6e, 0x7e, 0x19, 0x03, 0x65, 0x60, 0x8b, 0x09, 0xb5, 0x68,
    -	0x5e, 0x4c, 0x08, 0xce, 0xed, 0x4c, 0x02, 0xe1, 0xc9, 0xba, 0xda, 0xef, 0x0a, 0x3a, 0x27, 0x79,
    -	0xf6, 0x31, 0x78, 0xa1, 0x4b, 0x18, 0xcc, 0xe1, 0x3a, 0xba, 0x2b, 0x5d, 0x47, 0xaf, 0xcf, 0x90,
    -	0xbe, 0xd4, 0xc9, 0xb2, 0x6b, 0x49, 0xfb, 0x4d, 0x41, 0xe7, 0x27, 0x6a, 0xcc, 0x61, 0xbc, 0xde,
    -	0x91, 0xc7, 0xeb, 0xab, 0xc7, 0x88, 0xab, 0x64, 0xcc, 0x3e, 0x29, 0x8b, 0xaa, 0x3d, 0x7c, 0xb6,
    -	0xfe, 0xff, 0xde, 0x0f, 0xda, 0xdf, 0xf2, 0x33, 0x88, 0xd2, 0x39, 0x84, 0x21, 0x4f, 0x94, 0xca,
    -	0x91, 0x26, 0xca, 0xd8, 0xa0, 0xad, 0xce, 0x38, 0x68, 0x29, 0x3d, 0xde, 0xa0, 0xbd, 0x8b, 0x56,
    -	0xe4, 0xdb, 0xa7, 0x76, 0xc4, 0x6f, 0x3e, 0x41, 0xdd, 0x96, 0x6e, 0x27, 0x99, 0xa9, 0xf8, 0xf6,
    -	0xa0, 0xf4, 0xbf, 0xfc, 0xf6, 0xa0, 0xb4, 0xa4, 0x29, 0x7e, 0x91, 0xdf, 0x1e, 0x13, 0xf3, 0x3c,
    -	0xff, 0xb7, 0x07, 0xff, 0x94, 0xe6, 0x7f, 0x69, 0x48, 0xac, 0xf4, 0x0d, 0x99, 0x7d, 0x4a, 0xef,
    -	0xa5, 0x02, 0x3c, 0xc2, 0x68, 0xf7, 0x51, 0x5d, 0xfe, 0x0d, 0xe0, 0x58, 0x37, 0x5f, 0x0b, 0xd5,
    -	0x44, 0xe5, 0x0a, 0xae, 0xef, 0x10, 0x46, 0xb0, 0x90, 0x98, 0xe6, 0xe3, 0x67, 0xcd, 0x85, 0x27,
    -	0xcf, 0x9a, 0x0b, 0x4f, 0x9f, 0x35, 0x17, 0x1e, 0x0e, 0x9a, 0xca, 0xe3, 0x41, 0x53, 0x79, 0x32,
    -	0x68, 0x2a, 0x4f, 0x07, 0x4d, 0xe5, 0x8f, 0x41, 0x53, 0x79, 0xf4, 0x67, 0x73, 0xe1, 0xd3, 0x0b,
    -	0xd3, 0x7e, 0x31, 0xfa, 0x27, 0x00, 0x00, 0xff, 0xff, 0x67, 0xe4, 0xf6, 0x18, 0x69, 0x12, 0x00,
    -	0x00,
    -}
    -
    -func (m *AllocationResult) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *AllocationResult) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *AllocationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	i--
    -	if m.Shareable {
    -		dAtA[i] = 1
    -	} else {
    -		dAtA[i] = 0
    -	}
    -	i--
    -	dAtA[i] = 0x18
    -	if m.AvailableOnNodes != nil {
    -		{
    -			size, err := m.AvailableOnNodes.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0x12
    -	}
    -	if len(m.ResourceHandles) > 0 {
    -		for iNdEx := len(m.ResourceHandles) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.ResourceHandles[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0xa
    -		}
    -	}
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *PodSchedulingContext) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *PodSchedulingContext) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *PodSchedulingContext) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	{
    -		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x1a
    -	{
    -		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x12
    -	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *PodSchedulingContextList) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *PodSchedulingContextList) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *PodSchedulingContextList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.Items) > 0 {
    -		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x12
    -		}
    -	}
    -	{
    -		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *PodSchedulingContextSpec) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *PodSchedulingContextSpec) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *PodSchedulingContextSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.PotentialNodes) > 0 {
    -		for iNdEx := len(m.PotentialNodes) - 1; iNdEx >= 0; iNdEx-- {
    -			i -= len(m.PotentialNodes[iNdEx])
    -			copy(dAtA[i:], m.PotentialNodes[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(m.PotentialNodes[iNdEx])))
    -			i--
    -			dAtA[i] = 0x12
    -		}
    -	}
    -	i -= len(m.SelectedNode)
    -	copy(dAtA[i:], m.SelectedNode)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.SelectedNode)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *PodSchedulingContextStatus) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *PodSchedulingContextStatus) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *PodSchedulingContextStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.ResourceClaims) > 0 {
    -		for iNdEx := len(m.ResourceClaims) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.ResourceClaims[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0xa
    -		}
    -	}
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClaim) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClaim) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClaim) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	{
    -		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x1a
    -	{
    -		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x12
    -	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClaimConsumerReference) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClaimConsumerReference) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClaimConsumerReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	i -= len(m.UID)
    -	copy(dAtA[i:], m.UID)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID)))
    -	i--
    -	dAtA[i] = 0x2a
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    -	i--
    -	dAtA[i] = 0x22
    -	i -= len(m.Resource)
    -	copy(dAtA[i:], m.Resource)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource)))
    -	i--
    -	dAtA[i] = 0x1a
    -	i -= len(m.APIGroup)
    -	copy(dAtA[i:], m.APIGroup)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIGroup)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClaimList) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClaimList) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClaimList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.Items) > 0 {
    -		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x12
    -		}
    -	}
    -	{
    -		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClaimParametersReference) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClaimParametersReference) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClaimParametersReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    -	i--
    -	dAtA[i] = 0x1a
    -	i -= len(m.Kind)
    -	copy(dAtA[i:], m.Kind)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind)))
    -	i--
    -	dAtA[i] = 0x12
    -	i -= len(m.APIGroup)
    -	copy(dAtA[i:], m.APIGroup)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIGroup)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClaimSchedulingStatus) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClaimSchedulingStatus) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClaimSchedulingStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.UnsuitableNodes) > 0 {
    -		for iNdEx := len(m.UnsuitableNodes) - 1; iNdEx >= 0; iNdEx-- {
    -			i -= len(m.UnsuitableNodes[iNdEx])
    -			copy(dAtA[i:], m.UnsuitableNodes[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(m.UnsuitableNodes[iNdEx])))
    -			i--
    -			dAtA[i] = 0x12
    -		}
    -	}
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClaimSpec) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClaimSpec) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClaimSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	i -= len(m.AllocationMode)
    -	copy(dAtA[i:], m.AllocationMode)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.AllocationMode)))
    -	i--
    -	dAtA[i] = 0x1a
    -	if m.ParametersRef != nil {
    -		{
    -			size, err := m.ParametersRef.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0x12
    -	}
    -	i -= len(m.ResourceClassName)
    -	copy(dAtA[i:], m.ResourceClassName)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceClassName)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClaimStatus) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClaimStatus) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClaimStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	i--
    -	if m.DeallocationRequested {
    -		dAtA[i] = 1
    -	} else {
    -		dAtA[i] = 0
    -	}
    -	i--
    -	dAtA[i] = 0x20
    -	if len(m.ReservedFor) > 0 {
    -		for iNdEx := len(m.ReservedFor) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.ReservedFor[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x1a
    -		}
    -	}
    -	if m.Allocation != nil {
    -		{
    -			size, err := m.Allocation.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0x12
    -	}
    -	i -= len(m.DriverName)
    -	copy(dAtA[i:], m.DriverName)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.DriverName)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClaimTemplate) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClaimTemplate) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClaimTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	{
    -		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x12
    -	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClaimTemplateList) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClaimTemplateList) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClaimTemplateList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.Items) > 0 {
    -		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x12
    -		}
    -	}
    -	{
    -		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClaimTemplateSpec) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClaimTemplateSpec) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClaimTemplateSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	{
    -		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x12
    -	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClass) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClass) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClass) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if m.SuitableNodes != nil {
    -		{
    -			size, err := m.SuitableNodes.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0x22
    -	}
    -	if m.ParametersRef != nil {
    -		{
    -			size, err := m.ParametersRef.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0x1a
    -	}
    -	i -= len(m.DriverName)
    -	copy(dAtA[i:], m.DriverName)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.DriverName)))
    -	i--
    -	dAtA[i] = 0x12
    -	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClassList) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClassList) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClassList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.Items) > 0 {
    -		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x12
    -		}
    -	}
    -	{
    -		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceClassParametersReference) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceClassParametersReference) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceClassParametersReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	i -= len(m.Namespace)
    -	copy(dAtA[i:], m.Namespace)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
    -	i--
    -	dAtA[i] = 0x22
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    -	i--
    -	dAtA[i] = 0x1a
    -	i -= len(m.Kind)
    -	copy(dAtA[i:], m.Kind)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind)))
    -	i--
    -	dAtA[i] = 0x12
    -	i -= len(m.APIGroup)
    -	copy(dAtA[i:], m.APIGroup)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIGroup)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ResourceHandle) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ResourceHandle) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ResourceHandle) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	i -= len(m.Data)
    -	copy(dAtA[i:], m.Data)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Data)))
    -	i--
    -	dAtA[i] = 0x12
    -	i -= len(m.DriverName)
    -	copy(dAtA[i:], m.DriverName)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.DriverName)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    -	offset -= sovGenerated(v)
    -	base := offset
    -	for v >= 1<<7 {
    -		dAtA[offset] = uint8(v&0x7f | 0x80)
    -		v >>= 7
    -		offset++
    -	}
    -	dAtA[offset] = uint8(v)
    -	return base
    -}
    -func (m *AllocationResult) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	if len(m.ResourceHandles) > 0 {
    -		for _, e := range m.ResourceHandles {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	if m.AvailableOnNodes != nil {
    -		l = m.AvailableOnNodes.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	n += 2
    -	return n
    -}
    -
    -func (m *PodSchedulingContext) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Spec.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Status.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *PodSchedulingContextList) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ListMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.Items) > 0 {
    -		for _, e := range m.Items {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *PodSchedulingContextSpec) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.SelectedNode)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.PotentialNodes) > 0 {
    -		for _, s := range m.PotentialNodes {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *PodSchedulingContextStatus) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	if len(m.ResourceClaims) > 0 {
    -		for _, e := range m.ResourceClaims {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *ResourceClaim) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Spec.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Status.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *ResourceClaimConsumerReference) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.APIGroup)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Resource)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.UID)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *ResourceClaimList) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ListMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.Items) > 0 {
    -		for _, e := range m.Items {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *ResourceClaimParametersReference) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.APIGroup)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Kind)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *ResourceClaimSchedulingStatus) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.UnsuitableNodes) > 0 {
    -		for _, s := range m.UnsuitableNodes {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *ResourceClaimSpec) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.ResourceClassName)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if m.ParametersRef != nil {
    -		l = m.ParametersRef.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	l = len(m.AllocationMode)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *ResourceClaimStatus) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.DriverName)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if m.Allocation != nil {
    -		l = m.Allocation.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if len(m.ReservedFor) > 0 {
    -		for _, e := range m.ReservedFor {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	n += 2
    -	return n
    -}
    -
    -func (m *ResourceClaimTemplate) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Spec.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *ResourceClaimTemplateList) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ListMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.Items) > 0 {
    -		for _, e := range m.Items {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *ResourceClaimTemplateSpec) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Spec.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *ResourceClass) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.DriverName)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if m.ParametersRef != nil {
    -		l = m.ParametersRef.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if m.SuitableNodes != nil {
    -		l = m.SuitableNodes.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	return n
    -}
    -
    -func (m *ResourceClassList) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ListMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.Items) > 0 {
    -		for _, e := range m.Items {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *ResourceClassParametersReference) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.APIGroup)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Kind)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Namespace)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *ResourceHandle) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.DriverName)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Data)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func sovGenerated(x uint64) (n int) {
    -	return (math_bits.Len64(x|1) + 6) / 7
    -}
    -func sozGenerated(x uint64) (n int) {
    -	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    -}
    -func (this *AllocationResult) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForResourceHandles := "[]ResourceHandle{"
    -	for _, f := range this.ResourceHandles {
    -		repeatedStringForResourceHandles += strings.Replace(strings.Replace(f.String(), "ResourceHandle", "ResourceHandle", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForResourceHandles += "}"
    -	s := strings.Join([]string{`&AllocationResult{`,
    -		`ResourceHandles:` + repeatedStringForResourceHandles + `,`,
    -		`AvailableOnNodes:` + strings.Replace(fmt.Sprintf("%v", this.AvailableOnNodes), "NodeSelector", "v1.NodeSelector", 1) + `,`,
    -		`Shareable:` + fmt.Sprintf("%v", this.Shareable) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *PodSchedulingContext) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&PodSchedulingContext{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v11.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodSchedulingContextSpec", "PodSchedulingContextSpec", 1), `&`, ``, 1) + `,`,
    -		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "PodSchedulingContextStatus", "PodSchedulingContextStatus", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *PodSchedulingContextList) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForItems := "[]PodSchedulingContext{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "PodSchedulingContext", "PodSchedulingContext", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&PodSchedulingContextList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v11.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *PodSchedulingContextSpec) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&PodSchedulingContextSpec{`,
    -		`SelectedNode:` + fmt.Sprintf("%v", this.SelectedNode) + `,`,
    -		`PotentialNodes:` + fmt.Sprintf("%v", this.PotentialNodes) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *PodSchedulingContextStatus) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForResourceClaims := "[]ResourceClaimSchedulingStatus{"
    -	for _, f := range this.ResourceClaims {
    -		repeatedStringForResourceClaims += strings.Replace(strings.Replace(f.String(), "ResourceClaimSchedulingStatus", "ResourceClaimSchedulingStatus", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForResourceClaims += "}"
    -	s := strings.Join([]string{`&PodSchedulingContextStatus{`,
    -		`ResourceClaims:` + repeatedStringForResourceClaims + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClaim) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ResourceClaim{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v11.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimSpec", "ResourceClaimSpec", 1), `&`, ``, 1) + `,`,
    -		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ResourceClaimStatus", "ResourceClaimStatus", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClaimConsumerReference) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ResourceClaimConsumerReference{`,
    -		`APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`,
    -		`Resource:` + fmt.Sprintf("%v", this.Resource) + `,`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`UID:` + fmt.Sprintf("%v", this.UID) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClaimList) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForItems := "[]ResourceClaim{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceClaim", "ResourceClaim", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&ResourceClaimList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v11.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClaimParametersReference) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ResourceClaimParametersReference{`,
    -		`APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`,
    -		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClaimSchedulingStatus) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ResourceClaimSchedulingStatus{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`UnsuitableNodes:` + fmt.Sprintf("%v", this.UnsuitableNodes) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClaimSpec) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ResourceClaimSpec{`,
    -		`ResourceClassName:` + fmt.Sprintf("%v", this.ResourceClassName) + `,`,
    -		`ParametersRef:` + strings.Replace(this.ParametersRef.String(), "ResourceClaimParametersReference", "ResourceClaimParametersReference", 1) + `,`,
    -		`AllocationMode:` + fmt.Sprintf("%v", this.AllocationMode) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClaimStatus) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForReservedFor := "[]ResourceClaimConsumerReference{"
    -	for _, f := range this.ReservedFor {
    -		repeatedStringForReservedFor += strings.Replace(strings.Replace(f.String(), "ResourceClaimConsumerReference", "ResourceClaimConsumerReference", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForReservedFor += "}"
    -	s := strings.Join([]string{`&ResourceClaimStatus{`,
    -		`DriverName:` + fmt.Sprintf("%v", this.DriverName) + `,`,
    -		`Allocation:` + strings.Replace(this.Allocation.String(), "AllocationResult", "AllocationResult", 1) + `,`,
    -		`ReservedFor:` + repeatedStringForReservedFor + `,`,
    -		`DeallocationRequested:` + fmt.Sprintf("%v", this.DeallocationRequested) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClaimTemplate) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ResourceClaimTemplate{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v11.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimTemplateSpec", "ResourceClaimTemplateSpec", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClaimTemplateList) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForItems := "[]ResourceClaimTemplate{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceClaimTemplate", "ResourceClaimTemplate", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&ResourceClaimTemplateList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v11.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClaimTemplateSpec) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ResourceClaimTemplateSpec{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v11.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimSpec", "ResourceClaimSpec", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClass) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ResourceClass{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v11.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`DriverName:` + fmt.Sprintf("%v", this.DriverName) + `,`,
    -		`ParametersRef:` + strings.Replace(this.ParametersRef.String(), "ResourceClassParametersReference", "ResourceClassParametersReference", 1) + `,`,
    -		`SuitableNodes:` + strings.Replace(fmt.Sprintf("%v", this.SuitableNodes), "NodeSelector", "v1.NodeSelector", 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClassList) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForItems := "[]ResourceClass{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceClass", "ResourceClass", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&ResourceClassList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v11.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceClassParametersReference) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ResourceClassParametersReference{`,
    -		`APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`,
    -		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ResourceHandle) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ResourceHandle{`,
    -		`DriverName:` + fmt.Sprintf("%v", this.DriverName) + `,`,
    -		`Data:` + fmt.Sprintf("%v", this.Data) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func valueToStringGenerated(v interface{}) string {
    -	rv := reflect.ValueOf(v)
    -	if rv.IsNil() {
    -		return "nil"
    -	}
    -	pv := reflect.Indirect(rv).Interface()
    -	return fmt.Sprintf("*%v", pv)
    -}
    -func (m *AllocationResult) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: AllocationResult: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: AllocationResult: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ResourceHandles", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.ResourceHandles = append(m.ResourceHandles, ResourceHandle{})
    -			if err := m.ResourceHandles[len(m.ResourceHandles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field AvailableOnNodes", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if m.AvailableOnNodes == nil {
    -				m.AvailableOnNodes = &v1.NodeSelector{}
    -			}
    -			if err := m.AvailableOnNodes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Shareable", wireType)
    -			}
    -			var v int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			m.Shareable = bool(v != 0)
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *PodSchedulingContext) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: PodSchedulingContext: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: PodSchedulingContext: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *PodSchedulingContextList) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: PodSchedulingContextList: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: PodSchedulingContextList: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Items = append(m.Items, PodSchedulingContext{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *PodSchedulingContextSpec) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: PodSchedulingContextSpec: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: PodSchedulingContextSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field SelectedNode", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.SelectedNode = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field PotentialNodes", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.PotentialNodes = append(m.PotentialNodes, string(dAtA[iNdEx:postIndex]))
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *PodSchedulingContextStatus) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: PodSchedulingContextStatus: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: PodSchedulingContextStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ResourceClaims", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.ResourceClaims = append(m.ResourceClaims, ResourceClaimSchedulingStatus{})
    -			if err := m.ResourceClaims[len(m.ResourceClaims)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClaim) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClaim: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClaim: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClaimConsumerReference) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClaimConsumerReference: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClaimConsumerReference: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.APIGroup = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Resource = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 4:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 5:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.UID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClaimList) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClaimList: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClaimList: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Items = append(m.Items, ResourceClaim{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClaimParametersReference) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClaimParametersReference: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClaimParametersReference: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.APIGroup = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Kind = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClaimSchedulingStatus) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClaimSchedulingStatus: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClaimSchedulingStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field UnsuitableNodes", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.UnsuitableNodes = append(m.UnsuitableNodes, string(dAtA[iNdEx:postIndex]))
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClaimSpec) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClaimSpec: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClaimSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ResourceClassName", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.ResourceClassName = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ParametersRef", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if m.ParametersRef == nil {
    -				m.ParametersRef = &ResourceClaimParametersReference{}
    -			}
    -			if err := m.ParametersRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field AllocationMode", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.AllocationMode = AllocationMode(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClaimStatus) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClaimStatus: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClaimStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field DriverName", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.DriverName = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Allocation", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if m.Allocation == nil {
    -				m.Allocation = &AllocationResult{}
    -			}
    -			if err := m.Allocation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ReservedFor", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.ReservedFor = append(m.ReservedFor, ResourceClaimConsumerReference{})
    -			if err := m.ReservedFor[len(m.ReservedFor)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 4:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field DeallocationRequested", wireType)
    -			}
    -			var v int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			m.DeallocationRequested = bool(v != 0)
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClaimTemplate) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClaimTemplate: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClaimTemplate: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClaimTemplateList) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClaimTemplateList: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClaimTemplateList: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Items = append(m.Items, ResourceClaimTemplate{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClaimTemplateSpec) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClaimTemplateSpec: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClaimTemplateSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClass) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClass: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClass: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field DriverName", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.DriverName = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ParametersRef", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if m.ParametersRef == nil {
    -				m.ParametersRef = &ResourceClassParametersReference{}
    -			}
    -			if err := m.ParametersRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 4:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field SuitableNodes", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if m.SuitableNodes == nil {
    -				m.SuitableNodes = &v1.NodeSelector{}
    -			}
    -			if err := m.SuitableNodes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClassList) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClassList: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClassList: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Items = append(m.Items, ResourceClass{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceClassParametersReference) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceClassParametersReference: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceClassParametersReference: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.APIGroup = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Kind = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 4:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Namespace = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ResourceHandle) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ResourceHandle: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ResourceHandle: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field DriverName", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.DriverName = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Data = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func skipGenerated(dAtA []byte) (n int, err error) {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	depth := 0
    -	for iNdEx < l {
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return 0, ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return 0, io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= (uint64(b) & 0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		wireType := int(wire & 0x7)
    -		switch wireType {
    -		case 0:
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return 0, ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return 0, io.ErrUnexpectedEOF
    -				}
    -				iNdEx++
    -				if dAtA[iNdEx-1] < 0x80 {
    -					break
    -				}
    -			}
    -		case 1:
    -			iNdEx += 8
    -		case 2:
    -			var length int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return 0, ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return 0, io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				length |= (int(b) & 0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if length < 0 {
    -				return 0, ErrInvalidLengthGenerated
    -			}
    -			iNdEx += length
    -		case 3:
    -			depth++
    -		case 4:
    -			if depth == 0 {
    -				return 0, ErrUnexpectedEndOfGroupGenerated
    -			}
    -			depth--
    -		case 5:
    -			iNdEx += 4
    -		default:
    -			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
    -		}
    -		if iNdEx < 0 {
    -			return 0, ErrInvalidLengthGenerated
    -		}
    -		if depth == 0 {
    -			return iNdEx, nil
    -		}
    -	}
    -	return 0, io.ErrUnexpectedEOF
    -}
    -
    -var (
    -	ErrInvalidLengthGenerated        = fmt.Errorf("proto: negative length found during unmarshaling")
    -	ErrIntOverflowGenerated          = fmt.Errorf("proto: integer overflow")
    -	ErrUnexpectedEndOfGroupGenerated = fmt.Errorf("proto: unexpected end of group")
    -)
    diff --git a/vendor/k8s.io/api/resource/v1alpha2/generated.proto b/vendor/k8s.io/api/resource/v1alpha2/generated.proto
    deleted file mode 100644
    index f7748f9a1a2c..000000000000
    --- a/vendor/k8s.io/api/resource/v1alpha2/generated.proto
    +++ /dev/null
    @@ -1,400 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -
    -// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    -
    -syntax = "proto2";
    -
    -package k8s.io.api.resource.v1alpha2;
    -
    -import "k8s.io/api/core/v1/generated.proto";
    -import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    -import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    -import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    -
    -// Package-wide variables from generator "generated".
    -option go_package = "k8s.io/api/resource/v1alpha2";
    -
    -// AllocationResult contains attributes of an allocated resource.
    -message AllocationResult {
    -  // ResourceHandles contain the state associated with an allocation that
    -  // should be maintained throughout the lifetime of a claim. Each
    -  // ResourceHandle contains data that should be passed to a specific kubelet
    -  // plugin once it lands on a node. This data is returned by the driver
    -  // after a successful allocation and is opaque to Kubernetes. Driver
    -  // documentation may explain to users how to interpret this data if needed.
    -  //
    -  // Setting this field is optional. It has a maximum size of 32 entries.
    -  // If null (or empty), it is assumed this allocation will be processed by a
    -  // single kubelet plugin with no ResourceHandle data attached. The name of
    -  // the kubelet plugin invoked will match the DriverName set in the
    -  // ResourceClaimStatus this AllocationResult is embedded in.
    -  //
    -  // +listType=atomic
    -  // +optional
    -  repeated ResourceHandle resourceHandles = 1;
    -
    -  // This field will get set by the resource driver after it has allocated
    -  // the resource to inform the scheduler where it can schedule Pods using
    -  // the ResourceClaim.
    -  //
    -  // Setting this field is optional. If null, the resource is available
    -  // everywhere.
    -  // +optional
    -  optional k8s.io.api.core.v1.NodeSelector availableOnNodes = 2;
    -
    -  // Shareable determines whether the resource supports more
    -  // than one consumer at a time.
    -  // +optional
    -  optional bool shareable = 3;
    -}
    -
    -// PodSchedulingContext objects hold information that is needed to schedule
    -// a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation
    -// mode.
    -//
    -// This is an alpha type and requires enabling the DynamicResourceAllocation
    -// feature gate.
    -message PodSchedulingContext {
    -  // Standard object metadata
    -  // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    -
    -  // Spec describes where resources for the Pod are needed.
    -  optional PodSchedulingContextSpec spec = 2;
    -
    -  // Status describes where resources for the Pod can be allocated.
    -  // +optional
    -  optional PodSchedulingContextStatus status = 3;
    -}
    -
    -// PodSchedulingContextList is a collection of Pod scheduling objects.
    -message PodSchedulingContextList {
    -  // Standard list metadata
    -  // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    -
    -  // Items is the list of PodSchedulingContext objects.
    -  repeated PodSchedulingContext items = 2;
    -}
    -
    -// PodSchedulingContextSpec describes where resources for the Pod are needed.
    -message PodSchedulingContextSpec {
    -  // SelectedNode is the node for which allocation of ResourceClaims that
    -  // are referenced by the Pod and that use "WaitForFirstConsumer"
    -  // allocation is to be attempted.
    -  // +optional
    -  optional string selectedNode = 1;
    -
    -  // PotentialNodes lists nodes where the Pod might be able to run.
    -  //
    -  // The size of this field is limited to 128. This is large enough for
    -  // many clusters. Larger clusters may need more attempts to find a node
    -  // that suits all pending resources. This may get increased in the
    -  // future, but not reduced.
    -  //
    -  // +listType=atomic
    -  // +optional
    -  repeated string potentialNodes = 2;
    -}
    -
    -// PodSchedulingContextStatus describes where resources for the Pod can be allocated.
    -message PodSchedulingContextStatus {
    -  // ResourceClaims describes resource availability for each
    -  // pod.spec.resourceClaim entry where the corresponding ResourceClaim
    -  // uses "WaitForFirstConsumer" allocation mode.
    -  //
    -  // +listType=map
    -  // +listMapKey=name
    -  // +optional
    -  repeated ResourceClaimSchedulingStatus resourceClaims = 1;
    -}
    -
    -// ResourceClaim describes which resources are needed by a resource consumer.
    -// Its status tracks whether the resource has been allocated and what the
    -// resulting attributes are.
    -//
    -// This is an alpha type and requires enabling the DynamicResourceAllocation
    -// feature gate.
    -message ResourceClaim {
    -  // Standard object metadata
    -  // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    -
    -  // Spec describes the desired attributes of a resource that then needs
    -  // to be allocated. It can only be set once when creating the
    -  // ResourceClaim.
    -  optional ResourceClaimSpec spec = 2;
    -
    -  // Status describes whether the resource is available and with which
    -  // attributes.
    -  // +optional
    -  optional ResourceClaimStatus status = 3;
    -}
    -
    -// ResourceClaimConsumerReference contains enough information to let you
    -// locate the consumer of a ResourceClaim. The user must be a resource in the same
    -// namespace as the ResourceClaim.
    -message ResourceClaimConsumerReference {
    -  // APIGroup is the group for the resource being referenced. It is
    -  // empty for the core API. This matches the group in the APIVersion
    -  // that is used when creating the resources.
    -  // +optional
    -  optional string apiGroup = 1;
    -
    -  // Resource is the type of resource being referenced, for example "pods".
    -  optional string resource = 3;
    -
    -  // Name is the name of resource being referenced.
    -  optional string name = 4;
    -
    -  // UID identifies exactly one incarnation of the resource.
    -  optional string uid = 5;
    -}
    -
    -// ResourceClaimList is a collection of claims.
    -message ResourceClaimList {
    -  // Standard list metadata
    -  // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    -
    -  // Items is the list of resource claims.
    -  repeated ResourceClaim items = 2;
    -}
    -
    -// ResourceClaimParametersReference contains enough information to let you
    -// locate the parameters for a ResourceClaim. The object must be in the same
    -// namespace as the ResourceClaim.
    -message ResourceClaimParametersReference {
    -  // APIGroup is the group for the resource being referenced. It is
    -  // empty for the core API. This matches the group in the APIVersion
    -  // that is used when creating the resources.
    -  // +optional
    -  optional string apiGroup = 1;
    -
    -  // Kind is the type of resource being referenced. This is the same
    -  // value as in the parameter object's metadata, for example "ConfigMap".
    -  optional string kind = 2;
    -
    -  // Name is the name of resource being referenced.
    -  optional string name = 3;
    -}
    -
    -// ResourceClaimSchedulingStatus contains information about one particular
    -// ResourceClaim with "WaitForFirstConsumer" allocation mode.
    -message ResourceClaimSchedulingStatus {
    -  // Name matches the pod.spec.resourceClaims[*].Name field.
    -  // +optional
    -  optional string name = 1;
    -
    -  // UnsuitableNodes lists nodes that the ResourceClaim cannot be
    -  // allocated for.
    -  //
    -  // The size of this field is limited to 128, the same as for
    -  // PodSchedulingSpec.PotentialNodes. This may get increased in the
    -  // future, but not reduced.
    -  //
    -  // +listType=atomic
    -  // +optional
    -  repeated string unsuitableNodes = 2;
    -}
    -
    -// ResourceClaimSpec defines how a resource is to be allocated.
    -message ResourceClaimSpec {
    -  // ResourceClassName references the driver and additional parameters
    -  // via the name of a ResourceClass that was created as part of the
    -  // driver deployment.
    -  optional string resourceClassName = 1;
    -
    -  // ParametersRef references a separate object with arbitrary parameters
    -  // that will be used by the driver when allocating a resource for the
    -  // claim.
    -  //
    -  // The object must be in the same namespace as the ResourceClaim.
    -  // +optional
    -  optional ResourceClaimParametersReference parametersRef = 2;
    -
    -  // Allocation can start immediately or when a Pod wants to use the
    -  // resource. "WaitForFirstConsumer" is the default.
    -  // +optional
    -  optional string allocationMode = 3;
    -}
    -
    -// ResourceClaimStatus tracks whether the resource has been allocated and what
    -// the resulting attributes are.
    -message ResourceClaimStatus {
    -  // DriverName is a copy of the driver name from the ResourceClass at
    -  // the time when allocation started.
    -  // +optional
    -  optional string driverName = 1;
    -
    -  // Allocation is set by the resource driver once a resource or set of
    -  // resources has been allocated successfully. If this is not specified, the
    -  // resources have not been allocated yet.
    -  // +optional
    -  optional AllocationResult allocation = 2;
    -
    -  // ReservedFor indicates which entities are currently allowed to use
    -  // the claim. A Pod which references a ResourceClaim which is not
    -  // reserved for that Pod will not be started.
    -  //
    -  // There can be at most 32 such reservations. This may get increased in
    -  // the future, but not reduced.
    -  //
    -  // +listType=map
    -  // +listMapKey=uid
    -  // +optional
    -  repeated ResourceClaimConsumerReference reservedFor = 3;
    -
    -  // DeallocationRequested indicates that a ResourceClaim is to be
    -  // deallocated.
    -  //
    -  // The driver then must deallocate this claim and reset the field
    -  // together with clearing the Allocation field.
    -  //
    -  // While DeallocationRequested is set, no new consumers may be added to
    -  // ReservedFor.
    -  // +optional
    -  optional bool deallocationRequested = 4;
    -}
    -
    -// ResourceClaimTemplate is used to produce ResourceClaim objects.
    -message ResourceClaimTemplate {
    -  // Standard object metadata
    -  // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    -
    -  // Describes the ResourceClaim that is to be generated.
    -  //
    -  // This field is immutable. A ResourceClaim will get created by the
    -  // control plane for a Pod when needed and then not get updated
    -  // anymore.
    -  optional ResourceClaimTemplateSpec spec = 2;
    -}
    -
    -// ResourceClaimTemplateList is a collection of claim templates.
    -message ResourceClaimTemplateList {
    -  // Standard list metadata
    -  // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    -
    -  // Items is the list of resource claim templates.
    -  repeated ResourceClaimTemplate items = 2;
    -}
    -
    -// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
    -message ResourceClaimTemplateSpec {
    -  // ObjectMeta may contain labels and annotations that will be copied into the PVC
    -  // when creating it. No other fields are allowed and will be rejected during
    -  // validation.
    -  // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    -
    -  // Spec for the ResourceClaim. The entire content is copied unchanged
    -  // into the ResourceClaim that gets created from this template. The
    -  // same fields as in a ResourceClaim are also valid here.
    -  optional ResourceClaimSpec spec = 2;
    -}
    -
    -// ResourceClass is used by administrators to influence how resources
    -// are allocated.
    -//
    -// This is an alpha type and requires enabling the DynamicResourceAllocation
    -// feature gate.
    -message ResourceClass {
    -  // Standard object metadata
    -  // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    -
    -  // DriverName defines the name of the dynamic resource driver that is
    -  // used for allocation of a ResourceClaim that uses this class.
    -  //
    -  // Resource drivers have a unique name in forward domain order
    -  // (acme.example.com).
    -  optional string driverName = 2;
    -
    -  // ParametersRef references an arbitrary separate object that may hold
    -  // parameters that will be used by the driver when allocating a
    -  // resource that uses this class. A dynamic resource driver can
    -  // distinguish between parameters stored here and and those stored in
    -  // ResourceClaimSpec.
    -  // +optional
    -  optional ResourceClassParametersReference parametersRef = 3;
    -
    -  // Only nodes matching the selector will be considered by the scheduler
    -  // when trying to find a Node that fits a Pod when that Pod uses
    -  // a ResourceClaim that has not been allocated yet.
    -  //
    -  // Setting this field is optional. If null, all nodes are candidates.
    -  // +optional
    -  optional k8s.io.api.core.v1.NodeSelector suitableNodes = 4;
    -}
    -
    -// ResourceClassList is a collection of classes.
    -message ResourceClassList {
    -  // Standard list metadata
    -  // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    -
    -  // Items is the list of resource classes.
    -  repeated ResourceClass items = 2;
    -}
    -
    -// ResourceClassParametersReference contains enough information to let you
    -// locate the parameters for a ResourceClass.
    -message ResourceClassParametersReference {
    -  // APIGroup is the group for the resource being referenced. It is
    -  // empty for the core API. This matches the group in the APIVersion
    -  // that is used when creating the resources.
    -  // +optional
    -  optional string apiGroup = 1;
    -
    -  // Kind is the type of resource being referenced. This is the same
    -  // value as in the parameter object's metadata.
    -  optional string kind = 2;
    -
    -  // Name is the name of resource being referenced.
    -  optional string name = 3;
    -
    -  // Namespace that contains the referenced resource. Must be empty
    -  // for cluster-scoped resources and non-empty for namespaced
    -  // resources.
    -  // +optional
    -  optional string namespace = 4;
    -}
    -
    -// ResourceHandle holds opaque resource data for processing by a specific kubelet plugin.
    -message ResourceHandle {
    -  // DriverName specifies the name of the resource driver whose kubelet
    -  // plugin should be invoked to process this ResourceHandle's data once it
    -  // lands on a node. This may differ from the DriverName set in
    -  // ResourceClaimStatus this ResourceHandle is embedded in.
    -  optional string driverName = 1;
    -
    -  // Data contains the opaque data associated with this ResourceHandle. It is
    -  // set by the controller component of the resource driver whose name
    -  // matches the DriverName set in the ResourceClaimStatus this
    -  // ResourceHandle is embedded in. It is set at allocation time and is
    -  // intended for processing by the kubelet plugin whose name matches
    -  // the DriverName set in this ResourceHandle.
    -  //
    -  // The maximum size of this field is 16KiB. This may get increased in the
    -  // future, but not reduced.
    -  // +optional
    -  optional string data = 2;
    -}
    -
    diff --git a/vendor/k8s.io/api/resource/v1alpha2/types.go b/vendor/k8s.io/api/resource/v1alpha2/types.go
    deleted file mode 100644
    index a614ff9dc1bd..000000000000
    --- a/vendor/k8s.io/api/resource/v1alpha2/types.go
    +++ /dev/null
    @@ -1,462 +0,0 @@
    -/*
    -Copyright 2022 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -package v1alpha2
    -
    -import (
    -	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	"k8s.io/apimachinery/pkg/types"
    -)
    -
    -// +genclient
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.26
    -
    -// ResourceClaim describes which resources are needed by a resource consumer.
    -// Its status tracks whether the resource has been allocated and what the
    -// resulting attributes are.
    -//
    -// This is an alpha type and requires enabling the DynamicResourceAllocation
    -// feature gate.
    -type ResourceClaim struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard object metadata
    -	// +optional
    -	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -
    -	// Spec describes the desired attributes of a resource that then needs
    -	// to be allocated. It can only be set once when creating the
    -	// ResourceClaim.
    -	Spec ResourceClaimSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    -
    -	// Status describes whether the resource is available and with which
    -	// attributes.
    -	// +optional
    -	Status ResourceClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
    -}
    -
    -// ResourceClaimSpec defines how a resource is to be allocated.
    -type ResourceClaimSpec struct {
    -	// ResourceClassName references the driver and additional parameters
    -	// via the name of a ResourceClass that was created as part of the
    -	// driver deployment.
    -	ResourceClassName string `json:"resourceClassName" protobuf:"bytes,1,name=resourceClassName"`
    -
    -	// ParametersRef references a separate object with arbitrary parameters
    -	// that will be used by the driver when allocating a resource for the
    -	// claim.
    -	//
    -	// The object must be in the same namespace as the ResourceClaim.
    -	// +optional
    -	ParametersRef *ResourceClaimParametersReference `json:"parametersRef,omitempty" protobuf:"bytes,2,opt,name=parametersRef"`
    -
    -	// Allocation can start immediately or when a Pod wants to use the
    -	// resource. "WaitForFirstConsumer" is the default.
    -	// +optional
    -	AllocationMode AllocationMode `json:"allocationMode,omitempty" protobuf:"bytes,3,opt,name=allocationMode"`
    -}
    -
    -// AllocationMode describes whether a ResourceClaim gets allocated immediately
    -// when it gets created (AllocationModeImmediate) or whether allocation is
    -// delayed until it is needed for a Pod
    -// (AllocationModeWaitForFirstConsumer). Other modes might get added in the
    -// future.
    -type AllocationMode string
    -
    -const (
    -	// When a ResourceClaim has AllocationModeWaitForFirstConsumer, allocation is
    -	// delayed until a Pod gets scheduled that needs the ResourceClaim. The
    -	// scheduler will consider all resource requirements of that Pod and
    -	// trigger allocation for a node that fits the Pod.
    -	AllocationModeWaitForFirstConsumer AllocationMode = "WaitForFirstConsumer"
    -
    -	// When a ResourceClaim has AllocationModeImmediate, allocation starts
    -	// as soon as the ResourceClaim gets created. This is done without
    -	// considering the needs of Pods that will use the ResourceClaim
    -	// because those Pods are not known yet.
    -	AllocationModeImmediate AllocationMode = "Immediate"
    -)
    -
    -// ResourceClaimStatus tracks whether the resource has been allocated and what
    -// the resulting attributes are.
    -type ResourceClaimStatus struct {
    -	// DriverName is a copy of the driver name from the ResourceClass at
    -	// the time when allocation started.
    -	// +optional
    -	DriverName string `json:"driverName,omitempty" protobuf:"bytes,1,opt,name=driverName"`
    -
    -	// Allocation is set by the resource driver once a resource or set of
    -	// resources has been allocated successfully. If this is not specified, the
    -	// resources have not been allocated yet.
    -	// +optional
    -	Allocation *AllocationResult `json:"allocation,omitempty" protobuf:"bytes,2,opt,name=allocation"`
    -
    -	// ReservedFor indicates which entities are currently allowed to use
    -	// the claim. A Pod which references a ResourceClaim which is not
    -	// reserved for that Pod will not be started.
    -	//
    -	// There can be at most 32 such reservations. This may get increased in
    -	// the future, but not reduced.
    -	//
    -	// +listType=map
    -	// +listMapKey=uid
    -	// +optional
    -	ReservedFor []ResourceClaimConsumerReference `json:"reservedFor,omitempty" protobuf:"bytes,3,opt,name=reservedFor"`
    -
    -	// DeallocationRequested indicates that a ResourceClaim is to be
    -	// deallocated.
    -	//
    -	// The driver then must deallocate this claim and reset the field
    -	// together with clearing the Allocation field.
    -	//
    -	// While DeallocationRequested is set, no new consumers may be added to
    -	// ReservedFor.
    -	// +optional
    -	DeallocationRequested bool `json:"deallocationRequested,omitempty" protobuf:"varint,4,opt,name=deallocationRequested"`
    -}
    -
    -// ReservedForMaxSize is the maximum number of entries in
    -// claim.status.reservedFor.
    -const ResourceClaimReservedForMaxSize = 32
    -
    -// AllocationResult contains attributes of an allocated resource.
    -type AllocationResult struct {
    -	// ResourceHandles contain the state associated with an allocation that
    -	// should be maintained throughout the lifetime of a claim. Each
    -	// ResourceHandle contains data that should be passed to a specific kubelet
    -	// plugin once it lands on a node. This data is returned by the driver
    -	// after a successful allocation and is opaque to Kubernetes. Driver
    -	// documentation may explain to users how to interpret this data if needed.
    -	//
    -	// Setting this field is optional. It has a maximum size of 32 entries.
    -	// If null (or empty), it is assumed this allocation will be processed by a
    -	// single kubelet plugin with no ResourceHandle data attached. The name of
    -	// the kubelet plugin invoked will match the DriverName set in the
    -	// ResourceClaimStatus this AllocationResult is embedded in.
    -	//
    -	// +listType=atomic
    -	// +optional
    -	ResourceHandles []ResourceHandle `json:"resourceHandles,omitempty" protobuf:"bytes,1,opt,name=resourceHandles"`
    -
    -	// This field will get set by the resource driver after it has allocated
    -	// the resource to inform the scheduler where it can schedule Pods using
    -	// the ResourceClaim.
    -	//
    -	// Setting this field is optional. If null, the resource is available
    -	// everywhere.
    -	// +optional
    -	AvailableOnNodes *v1.NodeSelector `json:"availableOnNodes,omitempty" protobuf:"bytes,2,opt,name=availableOnNodes"`
    -
    -	// Shareable determines whether the resource supports more
    -	// than one consumer at a time.
    -	// +optional
    -	Shareable bool `json:"shareable,omitempty" protobuf:"varint,3,opt,name=shareable"`
    -}
    -
    -// AllocationResultResourceHandlesMaxSize represents the maximum number of
    -// entries in allocation.resourceHandles.
    -const AllocationResultResourceHandlesMaxSize = 32
    -
    -// ResourceHandle holds opaque resource data for processing by a specific kubelet plugin.
    -type ResourceHandle struct {
    -	// DriverName specifies the name of the resource driver whose kubelet
    -	// plugin should be invoked to process this ResourceHandle's data once it
    -	// lands on a node. This may differ from the DriverName set in
    -	// ResourceClaimStatus this ResourceHandle is embedded in.
    -	DriverName string `json:"driverName,omitempty" protobuf:"bytes,1,opt,name=driverName"`
    -
    -	// Data contains the opaque data associated with this ResourceHandle. It is
    -	// set by the controller component of the resource driver whose name
    -	// matches the DriverName set in the ResourceClaimStatus this
    -	// ResourceHandle is embedded in. It is set at allocation time and is
    -	// intended for processing by the kubelet plugin whose name matches
    -	// the DriverName set in this ResourceHandle.
    -	//
    -	// The maximum size of this field is 16KiB. This may get increased in the
    -	// future, but not reduced.
    -	// +optional
    -	Data string `json:"data,omitempty" protobuf:"bytes,2,opt,name=data"`
    -}
    -
    -// ResourceHandleDataMaxSize represents the maximum size of resourceHandle.data.
    -const ResourceHandleDataMaxSize = 16 * 1024
    -
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.26
    -
    -// ResourceClaimList is a collection of claims.
    -type ResourceClaimList struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard list metadata
    -	// +optional
    -	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -
    -	// Items is the list of resource claims.
    -	Items []ResourceClaim `json:"items" protobuf:"bytes,2,rep,name=items"`
    -}
    -
    -// +genclient
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.26
    -
    -// PodSchedulingContext objects hold information that is needed to schedule
    -// a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation
    -// mode.
    -//
    -// This is an alpha type and requires enabling the DynamicResourceAllocation
    -// feature gate.
    -type PodSchedulingContext struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard object metadata
    -	// +optional
    -	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -
    -	// Spec describes where resources for the Pod are needed.
    -	Spec PodSchedulingContextSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    -
    -	// Status describes where resources for the Pod can be allocated.
    -	// +optional
    -	Status PodSchedulingContextStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
    -}
    -
    -// PodSchedulingContextSpec describes where resources for the Pod are needed.
    -type PodSchedulingContextSpec struct {
    -	// SelectedNode is the node for which allocation of ResourceClaims that
    -	// are referenced by the Pod and that use "WaitForFirstConsumer"
    -	// allocation is to be attempted.
    -	// +optional
    -	SelectedNode string `json:"selectedNode,omitempty" protobuf:"bytes,1,opt,name=selectedNode"`
    -
    -	// PotentialNodes lists nodes where the Pod might be able to run.
    -	//
    -	// The size of this field is limited to 128. This is large enough for
    -	// many clusters. Larger clusters may need more attempts to find a node
    -	// that suits all pending resources. This may get increased in the
    -	// future, but not reduced.
    -	//
    -	// +listType=atomic
    -	// +optional
    -	PotentialNodes []string `json:"potentialNodes,omitempty" protobuf:"bytes,2,opt,name=potentialNodes"`
    -}
    -
    -// PodSchedulingContextStatus describes where resources for the Pod can be allocated.
    -type PodSchedulingContextStatus struct {
    -	// ResourceClaims describes resource availability for each
    -	// pod.spec.resourceClaim entry where the corresponding ResourceClaim
    -	// uses "WaitForFirstConsumer" allocation mode.
    -	//
    -	// +listType=map
    -	// +listMapKey=name
    -	// +optional
    -	ResourceClaims []ResourceClaimSchedulingStatus `json:"resourceClaims,omitempty" protobuf:"bytes,1,opt,name=resourceClaims"`
    -
    -	// If there ever is a need to support other kinds of resources
    -	// than ResourceClaim, then new fields could get added here
    -	// for those other resources.
    -}
    -
    -// ResourceClaimSchedulingStatus contains information about one particular
    -// ResourceClaim with "WaitForFirstConsumer" allocation mode.
    -type ResourceClaimSchedulingStatus struct {
    -	// Name matches the pod.spec.resourceClaims[*].Name field.
    -	// +optional
    -	Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`
    -
    -	// UnsuitableNodes lists nodes that the ResourceClaim cannot be
    -	// allocated for.
    -	//
    -	// The size of this field is limited to 128, the same as for
    -	// PodSchedulingSpec.PotentialNodes. This may get increased in the
    -	// future, but not reduced.
    -	//
    -	// +listType=atomic
    -	// +optional
    -	UnsuitableNodes []string `json:"unsuitableNodes,omitempty" protobuf:"bytes,2,opt,name=unsuitableNodes"`
    -}
    -
    -// PodSchedulingNodeListMaxSize defines the maximum number of entries in the
    -// node lists that are stored in PodSchedulingContext objects. This limit is part
    -// of the API.
    -const PodSchedulingNodeListMaxSize = 128
    -
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.26
    -
    -// PodSchedulingContextList is a collection of Pod scheduling objects.
    -type PodSchedulingContextList struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard list metadata
    -	// +optional
    -	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -
    -	// Items is the list of PodSchedulingContext objects.
    -	Items []PodSchedulingContext `json:"items" protobuf:"bytes,2,rep,name=items"`
    -}
    -
    -// +genclient
    -// +genclient:nonNamespaced
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.26
    -
    -// ResourceClass is used by administrators to influence how resources
    -// are allocated.
    -//
    -// This is an alpha type and requires enabling the DynamicResourceAllocation
    -// feature gate.
    -type ResourceClass struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard object metadata
    -	// +optional
    -	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -
    -	// DriverName defines the name of the dynamic resource driver that is
    -	// used for allocation of a ResourceClaim that uses this class.
    -	//
    -	// Resource drivers have a unique name in forward domain order
    -	// (acme.example.com).
    -	DriverName string `json:"driverName" protobuf:"bytes,2,name=driverName"`
    -
    -	// ParametersRef references an arbitrary separate object that may hold
    -	// parameters that will be used by the driver when allocating a
    -	// resource that uses this class. A dynamic resource driver can
    -	// distinguish between parameters stored here and and those stored in
    -	// ResourceClaimSpec.
    -	// +optional
    -	ParametersRef *ResourceClassParametersReference `json:"parametersRef,omitempty" protobuf:"bytes,3,opt,name=parametersRef"`
    -
    -	// Only nodes matching the selector will be considered by the scheduler
    -	// when trying to find a Node that fits a Pod when that Pod uses
    -	// a ResourceClaim that has not been allocated yet.
    -	//
    -	// Setting this field is optional. If null, all nodes are candidates.
    -	// +optional
    -	SuitableNodes *v1.NodeSelector `json:"suitableNodes,omitempty" protobuf:"bytes,4,opt,name=suitableNodes"`
    -}
    -
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.26
    -
    -// ResourceClassList is a collection of classes.
    -type ResourceClassList struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard list metadata
    -	// +optional
    -	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -
    -	// Items is the list of resource classes.
    -	Items []ResourceClass `json:"items" protobuf:"bytes,2,rep,name=items"`
    -}
    -
    -// ResourceClassParametersReference contains enough information to let you
    -// locate the parameters for a ResourceClass.
    -type ResourceClassParametersReference struct {
    -	// APIGroup is the group for the resource being referenced. It is
    -	// empty for the core API. This matches the group in the APIVersion
    -	// that is used when creating the resources.
    -	// +optional
    -	APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,1,opt,name=apiGroup"`
    -	// Kind is the type of resource being referenced. This is the same
    -	// value as in the parameter object's metadata.
    -	Kind string `json:"kind" protobuf:"bytes,2,name=kind"`
    -	// Name is the name of resource being referenced.
    -	Name string `json:"name" protobuf:"bytes,3,name=name"`
    -	// Namespace that contains the referenced resource. Must be empty
    -	// for cluster-scoped resources and non-empty for namespaced
    -	// resources.
    -	// +optional
    -	Namespace string `json:"namespace,omitempty" protobuf:"bytes,4,opt,name=namespace"`
    -}
    -
    -// ResourceClaimParametersReference contains enough information to let you
    -// locate the parameters for a ResourceClaim. The object must be in the same
    -// namespace as the ResourceClaim.
    -type ResourceClaimParametersReference struct {
    -	// APIGroup is the group for the resource being referenced. It is
    -	// empty for the core API. This matches the group in the APIVersion
    -	// that is used when creating the resources.
    -	// +optional
    -	APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,1,opt,name=apiGroup"`
    -	// Kind is the type of resource being referenced. This is the same
    -	// value as in the parameter object's metadata, for example "ConfigMap".
    -	Kind string `json:"kind" protobuf:"bytes,2,name=kind"`
    -	// Name is the name of resource being referenced.
    -	Name string `json:"name" protobuf:"bytes,3,name=name"`
    -}
    -
    -// ResourceClaimConsumerReference contains enough information to let you
    -// locate the consumer of a ResourceClaim. The user must be a resource in the same
    -// namespace as the ResourceClaim.
    -type ResourceClaimConsumerReference struct {
    -	// APIGroup is the group for the resource being referenced. It is
    -	// empty for the core API. This matches the group in the APIVersion
    -	// that is used when creating the resources.
    -	// +optional
    -	APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,1,opt,name=apiGroup"`
    -	// Resource is the type of resource being referenced, for example "pods".
    -	Resource string `json:"resource" protobuf:"bytes,3,name=resource"`
    -	// Name is the name of resource being referenced.
    -	Name string `json:"name" protobuf:"bytes,4,name=name"`
    -	// UID identifies exactly one incarnation of the resource.
    -	UID types.UID `json:"uid" protobuf:"bytes,5,name=uid"`
    -}
    -
    -// +genclient
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.26
    -
    -// ResourceClaimTemplate is used to produce ResourceClaim objects.
    -type ResourceClaimTemplate struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard object metadata
    -	// +optional
    -	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -
    -	// Describes the ResourceClaim that is to be generated.
    -	//
    -	// This field is immutable. A ResourceClaim will get created by the
    -	// control plane for a Pod when needed and then not get updated
    -	// anymore.
    -	Spec ResourceClaimTemplateSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    -}
    -
    -// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
    -type ResourceClaimTemplateSpec struct {
    -	// ObjectMeta may contain labels and annotations that will be copied into the PVC
    -	// when creating it. No other fields are allowed and will be rejected during
    -	// validation.
    -	// +optional
    -	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -
    -	// Spec for the ResourceClaim. The entire content is copied unchanged
    -	// into the ResourceClaim that gets created from this template. The
    -	// same fields as in a ResourceClaim are also valid here.
    -	Spec ResourceClaimSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    -}
    -
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.26
    -
    -// ResourceClaimTemplateList is a collection of claim templates.
    -type ResourceClaimTemplateList struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard list metadata
    -	// +optional
    -	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -
    -	// Items is the list of resource claim templates.
    -	Items []ResourceClaimTemplate `json:"items" protobuf:"bytes,2,rep,name=items"`
    -}
    diff --git a/vendor/k8s.io/api/resource/v1alpha2/types_swagger_doc_generated.go b/vendor/k8s.io/api/resource/v1alpha2/types_swagger_doc_generated.go
    deleted file mode 100644
    index 474be8c85cee..000000000000
    --- a/vendor/k8s.io/api/resource/v1alpha2/types_swagger_doc_generated.go
    +++ /dev/null
    @@ -1,232 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -package v1alpha2
    -
    -// This file contains a collection of methods that can be used from go-restful to
    -// generate Swagger API documentation for its models. Please read this PR for more
    -// information on the implementation: https://github.com/emicklei/go-restful/pull/215
    -//
    -// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if
    -// they are on one line! For multiple line or blocks that you want to ignore use ---.
    -// Any context after a --- is ignored.
    -//
    -// Those methods can be generated by using hack/update-codegen.sh
    -
    -// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    -var map_AllocationResult = map[string]string{
    -	"":                 "AllocationResult contains attributes of an allocated resource.",
    -	"resourceHandles":  "ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed.\n\nSetting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in.",
    -	"availableOnNodes": "This field will get set by the resource driver after it has allocated the resource to inform the scheduler where it can schedule Pods using the ResourceClaim.\n\nSetting this field is optional. If null, the resource is available everywhere.",
    -	"shareable":        "Shareable determines whether the resource supports more than one consumer at a time.",
    -}
    -
    -func (AllocationResult) SwaggerDoc() map[string]string {
    -	return map_AllocationResult
    -}
    -
    -var map_PodSchedulingContext = map[string]string{
    -	"":         "PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use \"WaitForFirstConsumer\" allocation mode.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    -	"metadata": "Standard object metadata",
    -	"spec":     "Spec describes where resources for the Pod are needed.",
    -	"status":   "Status describes where resources for the Pod can be allocated.",
    -}
    -
    -func (PodSchedulingContext) SwaggerDoc() map[string]string {
    -	return map_PodSchedulingContext
    -}
    -
    -var map_PodSchedulingContextList = map[string]string{
    -	"":         "PodSchedulingContextList is a collection of Pod scheduling objects.",
    -	"metadata": "Standard list metadata",
    -	"items":    "Items is the list of PodSchedulingContext objects.",
    -}
    -
    -func (PodSchedulingContextList) SwaggerDoc() map[string]string {
    -	return map_PodSchedulingContextList
    -}
    -
    -var map_PodSchedulingContextSpec = map[string]string{
    -	"":               "PodSchedulingContextSpec describes where resources for the Pod are needed.",
    -	"selectedNode":   "SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use \"WaitForFirstConsumer\" allocation is to be attempted.",
    -	"potentialNodes": "PotentialNodes lists nodes where the Pod might be able to run.\n\nThe size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.",
    -}
    -
    -func (PodSchedulingContextSpec) SwaggerDoc() map[string]string {
    -	return map_PodSchedulingContextSpec
    -}
    -
    -var map_PodSchedulingContextStatus = map[string]string{
    -	"":               "PodSchedulingContextStatus describes where resources for the Pod can be allocated.",
    -	"resourceClaims": "ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses \"WaitForFirstConsumer\" allocation mode.",
    -}
    -
    -func (PodSchedulingContextStatus) SwaggerDoc() map[string]string {
    -	return map_PodSchedulingContextStatus
    -}
    -
    -var map_ResourceClaim = map[string]string{
    -	"":         "ResourceClaim describes which resources are needed by a resource consumer. Its status tracks whether the resource has been allocated and what the resulting attributes are.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    -	"metadata": "Standard object metadata",
    -	"spec":     "Spec describes the desired attributes of a resource that then needs to be allocated. It can only be set once when creating the ResourceClaim.",
    -	"status":   "Status describes whether the resource is available and with which attributes.",
    -}
    -
    -func (ResourceClaim) SwaggerDoc() map[string]string {
    -	return map_ResourceClaim
    -}
    -
    -var map_ResourceClaimConsumerReference = map[string]string{
    -	"":         "ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.",
    -	"apiGroup": "APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.",
    -	"resource": "Resource is the type of resource being referenced, for example \"pods\".",
    -	"name":     "Name is the name of resource being referenced.",
    -	"uid":      "UID identifies exactly one incarnation of the resource.",
    -}
    -
    -func (ResourceClaimConsumerReference) SwaggerDoc() map[string]string {
    -	return map_ResourceClaimConsumerReference
    -}
    -
    -var map_ResourceClaimList = map[string]string{
    -	"":         "ResourceClaimList is a collection of claims.",
    -	"metadata": "Standard list metadata",
    -	"items":    "Items is the list of resource claims.",
    -}
    -
    -func (ResourceClaimList) SwaggerDoc() map[string]string {
    -	return map_ResourceClaimList
    -}
    -
    -var map_ResourceClaimParametersReference = map[string]string{
    -	"":         "ResourceClaimParametersReference contains enough information to let you locate the parameters for a ResourceClaim. The object must be in the same namespace as the ResourceClaim.",
    -	"apiGroup": "APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.",
    -	"kind":     "Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example \"ConfigMap\".",
    -	"name":     "Name is the name of resource being referenced.",
    -}
    -
    -func (ResourceClaimParametersReference) SwaggerDoc() map[string]string {
    -	return map_ResourceClaimParametersReference
    -}
    -
    -var map_ResourceClaimSchedulingStatus = map[string]string{
    -	"":                "ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with \"WaitForFirstConsumer\" allocation mode.",
    -	"name":            "Name matches the pod.spec.resourceClaims[*].Name field.",
    -	"unsuitableNodes": "UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.\n\nThe size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.",
    -}
    -
    -func (ResourceClaimSchedulingStatus) SwaggerDoc() map[string]string {
    -	return map_ResourceClaimSchedulingStatus
    -}
    -
    -var map_ResourceClaimSpec = map[string]string{
    -	"":                  "ResourceClaimSpec defines how a resource is to be allocated.",
    -	"resourceClassName": "ResourceClassName references the driver and additional parameters via the name of a ResourceClass that was created as part of the driver deployment.",
    -	"parametersRef":     "ParametersRef references a separate object with arbitrary parameters that will be used by the driver when allocating a resource for the claim.\n\nThe object must be in the same namespace as the ResourceClaim.",
    -	"allocationMode":    "Allocation can start immediately or when a Pod wants to use the resource. \"WaitForFirstConsumer\" is the default.",
    -}
    -
    -func (ResourceClaimSpec) SwaggerDoc() map[string]string {
    -	return map_ResourceClaimSpec
    -}
    -
    -var map_ResourceClaimStatus = map[string]string{
    -	"":                      "ResourceClaimStatus tracks whether the resource has been allocated and what the resulting attributes are.",
    -	"driverName":            "DriverName is a copy of the driver name from the ResourceClass at the time when allocation started.",
    -	"allocation":            "Allocation is set by the resource driver once a resource or set of resources has been allocated successfully. If this is not specified, the resources have not been allocated yet.",
    -	"reservedFor":           "ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started.\n\nThere can be at most 32 such reservations. This may get increased in the future, but not reduced.",
    -	"deallocationRequested": "DeallocationRequested indicates that a ResourceClaim is to be deallocated.\n\nThe driver then must deallocate this claim and reset the field together with clearing the Allocation field.\n\nWhile DeallocationRequested is set, no new consumers may be added to ReservedFor.",
    -}
    -
    -func (ResourceClaimStatus) SwaggerDoc() map[string]string {
    -	return map_ResourceClaimStatus
    -}
    -
    -var map_ResourceClaimTemplate = map[string]string{
    -	"":         "ResourceClaimTemplate is used to produce ResourceClaim objects.",
    -	"metadata": "Standard object metadata",
    -	"spec":     "Describes the ResourceClaim that is to be generated.\n\nThis field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore.",
    -}
    -
    -func (ResourceClaimTemplate) SwaggerDoc() map[string]string {
    -	return map_ResourceClaimTemplate
    -}
    -
    -var map_ResourceClaimTemplateList = map[string]string{
    -	"":         "ResourceClaimTemplateList is a collection of claim templates.",
    -	"metadata": "Standard list metadata",
    -	"items":    "Items is the list of resource claim templates.",
    -}
    -
    -func (ResourceClaimTemplateList) SwaggerDoc() map[string]string {
    -	return map_ResourceClaimTemplateList
    -}
    -
    -var map_ResourceClaimTemplateSpec = map[string]string{
    -	"":         "ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.",
    -	"metadata": "ObjectMeta may contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.",
    -	"spec":     "Spec for the ResourceClaim. The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here.",
    -}
    -
    -func (ResourceClaimTemplateSpec) SwaggerDoc() map[string]string {
    -	return map_ResourceClaimTemplateSpec
    -}
    -
    -var map_ResourceClass = map[string]string{
    -	"":              "ResourceClass is used by administrators to influence how resources are allocated.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    -	"metadata":      "Standard object metadata",
    -	"driverName":    "DriverName defines the name of the dynamic resource driver that is used for allocation of a ResourceClaim that uses this class.\n\nResource drivers have a unique name in forward domain order (acme.example.com).",
    -	"parametersRef": "ParametersRef references an arbitrary separate object that may hold parameters that will be used by the driver when allocating a resource that uses this class. A dynamic resource driver can distinguish between parameters stored here and and those stored in ResourceClaimSpec.",
    -	"suitableNodes": "Only nodes matching the selector will be considered by the scheduler when trying to find a Node that fits a Pod when that Pod uses a ResourceClaim that has not been allocated yet.\n\nSetting this field is optional. If null, all nodes are candidates.",
    -}
    -
    -func (ResourceClass) SwaggerDoc() map[string]string {
    -	return map_ResourceClass
    -}
    -
    -var map_ResourceClassList = map[string]string{
    -	"":         "ResourceClassList is a collection of classes.",
    -	"metadata": "Standard list metadata",
    -	"items":    "Items is the list of resource classes.",
    -}
    -
    -func (ResourceClassList) SwaggerDoc() map[string]string {
    -	return map_ResourceClassList
    -}
    -
    -var map_ResourceClassParametersReference = map[string]string{
    -	"":          "ResourceClassParametersReference contains enough information to let you locate the parameters for a ResourceClass.",
    -	"apiGroup":  "APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.",
    -	"kind":      "Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata.",
    -	"name":      "Name is the name of resource being referenced.",
    -	"namespace": "Namespace that contains the referenced resource. Must be empty for cluster-scoped resources and non-empty for namespaced resources.",
    -}
    -
    -func (ResourceClassParametersReference) SwaggerDoc() map[string]string {
    -	return map_ResourceClassParametersReference
    -}
    -
    -var map_ResourceHandle = map[string]string{
    -	"":           "ResourceHandle holds opaque resource data for processing by a specific kubelet plugin.",
    -	"driverName": "DriverName specifies the name of the resource driver whose kubelet plugin should be invoked to process this ResourceHandle's data once it lands on a node. This may differ from the DriverName set in ResourceClaimStatus this ResourceHandle is embedded in.",
    -	"data":       "Data contains the opaque data associated with this ResourceHandle. It is set by the controller component of the resource driver whose name matches the DriverName set in the ResourceClaimStatus this ResourceHandle is embedded in. It is set at allocation time and is intended for processing by the kubelet plugin whose name matches the DriverName set in this ResourceHandle.\n\nThe maximum size of this field is 16KiB. This may get increased in the future, but not reduced.",
    -}
    -
    -func (ResourceHandle) SwaggerDoc() map[string]string {
    -	return map_ResourceHandle
    -}
    -
    -// AUTO-GENERATED FUNCTIONS END HERE
    diff --git a/vendor/k8s.io/api/resource/v1alpha2/zz_generated.deepcopy.go b/vendor/k8s.io/api/resource/v1alpha2/zz_generated.deepcopy.go
    deleted file mode 100644
    index 89d521bf05aa..000000000000
    --- a/vendor/k8s.io/api/resource/v1alpha2/zz_generated.deepcopy.go
    +++ /dev/null
    @@ -1,498 +0,0 @@
    -//go:build !ignore_autogenerated
    -// +build !ignore_autogenerated
    -
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by deepcopy-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -import (
    -	v1 "k8s.io/api/core/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 *AllocationResult) DeepCopyInto(out *AllocationResult) {
    -	*out = *in
    -	if in.ResourceHandles != nil {
    -		in, out := &in.ResourceHandles, &out.ResourceHandles
    -		*out = make([]ResourceHandle, len(*in))
    -		copy(*out, *in)
    -	}
    -	if in.AvailableOnNodes != nil {
    -		in, out := &in.AvailableOnNodes, &out.AvailableOnNodes
    -		*out = new(v1.NodeSelector)
    -		(*in).DeepCopyInto(*out)
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocationResult.
    -func (in *AllocationResult) DeepCopy() *AllocationResult {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(AllocationResult)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *PodSchedulingContext) DeepCopyInto(out *PodSchedulingContext) {
    -	*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 PodSchedulingContext.
    -func (in *PodSchedulingContext) DeepCopy() *PodSchedulingContext {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(PodSchedulingContext)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *PodSchedulingContext) 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 *PodSchedulingContextList) DeepCopyInto(out *PodSchedulingContextList) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ListMeta.DeepCopyInto(&out.ListMeta)
    -	if in.Items != nil {
    -		in, out := &in.Items, &out.Items
    -		*out = make([]PodSchedulingContext, len(*in))
    -		for i := range *in {
    -			(*in)[i].DeepCopyInto(&(*out)[i])
    -		}
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSchedulingContextList.
    -func (in *PodSchedulingContextList) DeepCopy() *PodSchedulingContextList {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(PodSchedulingContextList)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *PodSchedulingContextList) 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 *PodSchedulingContextSpec) DeepCopyInto(out *PodSchedulingContextSpec) {
    -	*out = *in
    -	if in.PotentialNodes != nil {
    -		in, out := &in.PotentialNodes, &out.PotentialNodes
    -		*out = make([]string, len(*in))
    -		copy(*out, *in)
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSchedulingContextSpec.
    -func (in *PodSchedulingContextSpec) DeepCopy() *PodSchedulingContextSpec {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(PodSchedulingContextSpec)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *PodSchedulingContextStatus) DeepCopyInto(out *PodSchedulingContextStatus) {
    -	*out = *in
    -	if in.ResourceClaims != nil {
    -		in, out := &in.ResourceClaims, &out.ResourceClaims
    -		*out = make([]ResourceClaimSchedulingStatus, len(*in))
    -		for i := range *in {
    -			(*in)[i].DeepCopyInto(&(*out)[i])
    -		}
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSchedulingContextStatus.
    -func (in *PodSchedulingContextStatus) DeepCopy() *PodSchedulingContextStatus {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(PodSchedulingContextStatus)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ResourceClaim) DeepCopyInto(out *ResourceClaim) {
    -	*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 ResourceClaim.
    -func (in *ResourceClaim) DeepCopy() *ResourceClaim {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClaim)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *ResourceClaim) 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 *ResourceClaimConsumerReference) DeepCopyInto(out *ResourceClaimConsumerReference) {
    -	*out = *in
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimConsumerReference.
    -func (in *ResourceClaimConsumerReference) DeepCopy() *ResourceClaimConsumerReference {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClaimConsumerReference)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ResourceClaimList) DeepCopyInto(out *ResourceClaimList) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ListMeta.DeepCopyInto(&out.ListMeta)
    -	if in.Items != nil {
    -		in, out := &in.Items, &out.Items
    -		*out = make([]ResourceClaim, len(*in))
    -		for i := range *in {
    -			(*in)[i].DeepCopyInto(&(*out)[i])
    -		}
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimList.
    -func (in *ResourceClaimList) DeepCopy() *ResourceClaimList {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClaimList)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *ResourceClaimList) 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 *ResourceClaimParametersReference) DeepCopyInto(out *ResourceClaimParametersReference) {
    -	*out = *in
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimParametersReference.
    -func (in *ResourceClaimParametersReference) DeepCopy() *ResourceClaimParametersReference {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClaimParametersReference)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ResourceClaimSchedulingStatus) DeepCopyInto(out *ResourceClaimSchedulingStatus) {
    -	*out = *in
    -	if in.UnsuitableNodes != nil {
    -		in, out := &in.UnsuitableNodes, &out.UnsuitableNodes
    -		*out = make([]string, len(*in))
    -		copy(*out, *in)
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimSchedulingStatus.
    -func (in *ResourceClaimSchedulingStatus) DeepCopy() *ResourceClaimSchedulingStatus {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClaimSchedulingStatus)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ResourceClaimSpec) DeepCopyInto(out *ResourceClaimSpec) {
    -	*out = *in
    -	if in.ParametersRef != nil {
    -		in, out := &in.ParametersRef, &out.ParametersRef
    -		*out = new(ResourceClaimParametersReference)
    -		**out = **in
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimSpec.
    -func (in *ResourceClaimSpec) DeepCopy() *ResourceClaimSpec {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClaimSpec)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ResourceClaimStatus) DeepCopyInto(out *ResourceClaimStatus) {
    -	*out = *in
    -	if in.Allocation != nil {
    -		in, out := &in.Allocation, &out.Allocation
    -		*out = new(AllocationResult)
    -		(*in).DeepCopyInto(*out)
    -	}
    -	if in.ReservedFor != nil {
    -		in, out := &in.ReservedFor, &out.ReservedFor
    -		*out = make([]ResourceClaimConsumerReference, len(*in))
    -		copy(*out, *in)
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimStatus.
    -func (in *ResourceClaimStatus) DeepCopy() *ResourceClaimStatus {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClaimStatus)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ResourceClaimTemplate) DeepCopyInto(out *ResourceClaimTemplate) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    -	in.Spec.DeepCopyInto(&out.Spec)
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimTemplate.
    -func (in *ResourceClaimTemplate) DeepCopy() *ResourceClaimTemplate {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClaimTemplate)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *ResourceClaimTemplate) 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 *ResourceClaimTemplateList) DeepCopyInto(out *ResourceClaimTemplateList) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ListMeta.DeepCopyInto(&out.ListMeta)
    -	if in.Items != nil {
    -		in, out := &in.Items, &out.Items
    -		*out = make([]ResourceClaimTemplate, len(*in))
    -		for i := range *in {
    -			(*in)[i].DeepCopyInto(&(*out)[i])
    -		}
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimTemplateList.
    -func (in *ResourceClaimTemplateList) DeepCopy() *ResourceClaimTemplateList {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClaimTemplateList)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *ResourceClaimTemplateList) 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 *ResourceClaimTemplateSpec) DeepCopyInto(out *ResourceClaimTemplateSpec) {
    -	*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 ResourceClaimTemplateSpec.
    -func (in *ResourceClaimTemplateSpec) DeepCopy() *ResourceClaimTemplateSpec {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClaimTemplateSpec)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ResourceClass) DeepCopyInto(out *ResourceClass) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    -	if in.ParametersRef != nil {
    -		in, out := &in.ParametersRef, &out.ParametersRef
    -		*out = new(ResourceClassParametersReference)
    -		**out = **in
    -	}
    -	if in.SuitableNodes != nil {
    -		in, out := &in.SuitableNodes, &out.SuitableNodes
    -		*out = new(v1.NodeSelector)
    -		(*in).DeepCopyInto(*out)
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClass.
    -func (in *ResourceClass) DeepCopy() *ResourceClass {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClass)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *ResourceClass) 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 *ResourceClassList) DeepCopyInto(out *ResourceClassList) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ListMeta.DeepCopyInto(&out.ListMeta)
    -	if in.Items != nil {
    -		in, out := &in.Items, &out.Items
    -		*out = make([]ResourceClass, len(*in))
    -		for i := range *in {
    -			(*in)[i].DeepCopyInto(&(*out)[i])
    -		}
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClassList.
    -func (in *ResourceClassList) DeepCopy() *ResourceClassList {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClassList)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *ResourceClassList) 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 *ResourceClassParametersReference) DeepCopyInto(out *ResourceClassParametersReference) {
    -	*out = *in
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClassParametersReference.
    -func (in *ResourceClassParametersReference) DeepCopy() *ResourceClassParametersReference {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceClassParametersReference)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ResourceHandle) DeepCopyInto(out *ResourceHandle) {
    -	*out = *in
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceHandle.
    -func (in *ResourceHandle) DeepCopy() *ResourceHandle {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ResourceHandle)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    diff --git a/vendor/k8s.io/api/resource/v1alpha3/doc.go b/vendor/k8s.io/api/resource/v1alpha3/doc.go
    new file mode 100644
    index 000000000000..ffc21307d0ff
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1alpha3/doc.go
    @@ -0,0 +1,24 @@
    +/*
    +Copyright 2022 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// +k8s:openapi-gen=true
    +// +k8s:deepcopy-gen=package
    +// +k8s:protobuf-gen=package
    +// +k8s:prerelease-lifecycle-gen=true
    +// +groupName=resource.k8s.io
    +
    +// Package v1alpha3 is the v1alpha3 version of the resource API.
    +package v1alpha3 // import "k8s.io/api/resource/v1alpha3"
    diff --git a/vendor/k8s.io/api/resource/v1alpha3/generated.pb.go b/vendor/k8s.io/api/resource/v1alpha3/generated.pb.go
    new file mode 100644
    index 000000000000..540f7b8184ab
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1alpha3/generated.pb.go
    @@ -0,0 +1,8488 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by protoc-gen-gogo. DO NOT EDIT.
    +// source: k8s.io/api/resource/v1alpha3/generated.proto
    +
    +package v1alpha3
    +
    +import (
    +	fmt "fmt"
    +
    +	io "io"
    +
    +	proto "github.com/gogo/protobuf/proto"
    +	github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
    +	v11 "k8s.io/api/core/v1"
    +	resource "k8s.io/apimachinery/pkg/api/resource"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +
    +	math "math"
    +	math_bits "math/bits"
    +	reflect "reflect"
    +	strings "strings"
    +
    +	k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
    +)
    +
    +// Reference imports to suppress errors if they are not otherwise used.
    +var _ = proto.Marshal
    +var _ = fmt.Errorf
    +var _ = math.Inf
    +
    +// This is a compile-time assertion to ensure that this generated file
    +// is compatible with the proto package it is being compiled against.
    +// A compilation error at this line likely means your copy of the
    +// proto package needs to be updated.
    +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    +
    +func (m *AllocatedDeviceStatus) Reset()      { *m = AllocatedDeviceStatus{} }
    +func (*AllocatedDeviceStatus) ProtoMessage() {}
    +func (*AllocatedDeviceStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{0}
    +}
    +func (m *AllocatedDeviceStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *AllocatedDeviceStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *AllocatedDeviceStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_AllocatedDeviceStatus.Merge(m, src)
    +}
    +func (m *AllocatedDeviceStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *AllocatedDeviceStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_AllocatedDeviceStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_AllocatedDeviceStatus proto.InternalMessageInfo
    +
    +func (m *AllocationResult) Reset()      { *m = AllocationResult{} }
    +func (*AllocationResult) ProtoMessage() {}
    +func (*AllocationResult) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{1}
    +}
    +func (m *AllocationResult) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *AllocationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *AllocationResult) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_AllocationResult.Merge(m, src)
    +}
    +func (m *AllocationResult) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *AllocationResult) XXX_DiscardUnknown() {
    +	xxx_messageInfo_AllocationResult.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_AllocationResult proto.InternalMessageInfo
    +
    +func (m *BasicDevice) Reset()      { *m = BasicDevice{} }
    +func (*BasicDevice) ProtoMessage() {}
    +func (*BasicDevice) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{2}
    +}
    +func (m *BasicDevice) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *BasicDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *BasicDevice) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_BasicDevice.Merge(m, src)
    +}
    +func (m *BasicDevice) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *BasicDevice) XXX_DiscardUnknown() {
    +	xxx_messageInfo_BasicDevice.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_BasicDevice proto.InternalMessageInfo
    +
    +func (m *CELDeviceSelector) Reset()      { *m = CELDeviceSelector{} }
    +func (*CELDeviceSelector) ProtoMessage() {}
    +func (*CELDeviceSelector) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{3}
    +}
    +func (m *CELDeviceSelector) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *CELDeviceSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *CELDeviceSelector) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_CELDeviceSelector.Merge(m, src)
    +}
    +func (m *CELDeviceSelector) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *CELDeviceSelector) XXX_DiscardUnknown() {
    +	xxx_messageInfo_CELDeviceSelector.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_CELDeviceSelector proto.InternalMessageInfo
    +
    +func (m *Device) Reset()      { *m = Device{} }
    +func (*Device) ProtoMessage() {}
    +func (*Device) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{4}
    +}
    +func (m *Device) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *Device) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *Device) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_Device.Merge(m, src)
    +}
    +func (m *Device) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *Device) XXX_DiscardUnknown() {
    +	xxx_messageInfo_Device.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_Device proto.InternalMessageInfo
    +
    +func (m *DeviceAllocationConfiguration) Reset()      { *m = DeviceAllocationConfiguration{} }
    +func (*DeviceAllocationConfiguration) ProtoMessage() {}
    +func (*DeviceAllocationConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{5}
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceAllocationConfiguration.Merge(m, src)
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceAllocationConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceAllocationConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceAllocationConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceAllocationResult) Reset()      { *m = DeviceAllocationResult{} }
    +func (*DeviceAllocationResult) ProtoMessage() {}
    +func (*DeviceAllocationResult) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{6}
    +}
    +func (m *DeviceAllocationResult) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceAllocationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceAllocationResult) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceAllocationResult.Merge(m, src)
    +}
    +func (m *DeviceAllocationResult) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceAllocationResult) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceAllocationResult.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceAllocationResult proto.InternalMessageInfo
    +
    +func (m *DeviceAttribute) Reset()      { *m = DeviceAttribute{} }
    +func (*DeviceAttribute) ProtoMessage() {}
    +func (*DeviceAttribute) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{7}
    +}
    +func (m *DeviceAttribute) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceAttribute) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceAttribute) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceAttribute.Merge(m, src)
    +}
    +func (m *DeviceAttribute) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceAttribute) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceAttribute.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceAttribute proto.InternalMessageInfo
    +
    +func (m *DeviceClaim) Reset()      { *m = DeviceClaim{} }
    +func (*DeviceClaim) ProtoMessage() {}
    +func (*DeviceClaim) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{8}
    +}
    +func (m *DeviceClaim) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClaim) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClaim) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClaim.Merge(m, src)
    +}
    +func (m *DeviceClaim) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClaim) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClaim.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClaim proto.InternalMessageInfo
    +
    +func (m *DeviceClaimConfiguration) Reset()      { *m = DeviceClaimConfiguration{} }
    +func (*DeviceClaimConfiguration) ProtoMessage() {}
    +func (*DeviceClaimConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{9}
    +}
    +func (m *DeviceClaimConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClaimConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClaimConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClaimConfiguration.Merge(m, src)
    +}
    +func (m *DeviceClaimConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClaimConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClaimConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClaimConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceClass) Reset()      { *m = DeviceClass{} }
    +func (*DeviceClass) ProtoMessage() {}
    +func (*DeviceClass) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{10}
    +}
    +func (m *DeviceClass) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClass) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClass) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClass.Merge(m, src)
    +}
    +func (m *DeviceClass) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClass) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClass.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClass proto.InternalMessageInfo
    +
    +func (m *DeviceClassConfiguration) Reset()      { *m = DeviceClassConfiguration{} }
    +func (*DeviceClassConfiguration) ProtoMessage() {}
    +func (*DeviceClassConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{11}
    +}
    +func (m *DeviceClassConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClassConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClassConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClassConfiguration.Merge(m, src)
    +}
    +func (m *DeviceClassConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClassConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClassConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClassConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceClassList) Reset()      { *m = DeviceClassList{} }
    +func (*DeviceClassList) ProtoMessage() {}
    +func (*DeviceClassList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{12}
    +}
    +func (m *DeviceClassList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClassList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClassList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClassList.Merge(m, src)
    +}
    +func (m *DeviceClassList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClassList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClassList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClassList proto.InternalMessageInfo
    +
    +func (m *DeviceClassSpec) Reset()      { *m = DeviceClassSpec{} }
    +func (*DeviceClassSpec) ProtoMessage() {}
    +func (*DeviceClassSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{13}
    +}
    +func (m *DeviceClassSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClassSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClassSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClassSpec.Merge(m, src)
    +}
    +func (m *DeviceClassSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClassSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClassSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClassSpec proto.InternalMessageInfo
    +
    +func (m *DeviceConfiguration) Reset()      { *m = DeviceConfiguration{} }
    +func (*DeviceConfiguration) ProtoMessage() {}
    +func (*DeviceConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{14}
    +}
    +func (m *DeviceConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceConfiguration.Merge(m, src)
    +}
    +func (m *DeviceConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceConstraint) Reset()      { *m = DeviceConstraint{} }
    +func (*DeviceConstraint) ProtoMessage() {}
    +func (*DeviceConstraint) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{15}
    +}
    +func (m *DeviceConstraint) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceConstraint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceConstraint) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceConstraint.Merge(m, src)
    +}
    +func (m *DeviceConstraint) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceConstraint) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceConstraint.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceConstraint proto.InternalMessageInfo
    +
    +func (m *DeviceRequest) Reset()      { *m = DeviceRequest{} }
    +func (*DeviceRequest) ProtoMessage() {}
    +func (*DeviceRequest) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{16}
    +}
    +func (m *DeviceRequest) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceRequest) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceRequest.Merge(m, src)
    +}
    +func (m *DeviceRequest) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceRequest) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceRequest.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceRequest proto.InternalMessageInfo
    +
    +func (m *DeviceRequestAllocationResult) Reset()      { *m = DeviceRequestAllocationResult{} }
    +func (*DeviceRequestAllocationResult) ProtoMessage() {}
    +func (*DeviceRequestAllocationResult) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{17}
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceRequestAllocationResult.Merge(m, src)
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceRequestAllocationResult) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceRequestAllocationResult.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceRequestAllocationResult proto.InternalMessageInfo
    +
    +func (m *DeviceSelector) Reset()      { *m = DeviceSelector{} }
    +func (*DeviceSelector) ProtoMessage() {}
    +func (*DeviceSelector) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{18}
    +}
    +func (m *DeviceSelector) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceSelector) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceSelector.Merge(m, src)
    +}
    +func (m *DeviceSelector) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceSelector) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceSelector.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceSelector proto.InternalMessageInfo
    +
    +func (m *NetworkDeviceData) Reset()      { *m = NetworkDeviceData{} }
    +func (*NetworkDeviceData) ProtoMessage() {}
    +func (*NetworkDeviceData) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{19}
    +}
    +func (m *NetworkDeviceData) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *NetworkDeviceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *NetworkDeviceData) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_NetworkDeviceData.Merge(m, src)
    +}
    +func (m *NetworkDeviceData) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *NetworkDeviceData) XXX_DiscardUnknown() {
    +	xxx_messageInfo_NetworkDeviceData.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_NetworkDeviceData proto.InternalMessageInfo
    +
    +func (m *OpaqueDeviceConfiguration) Reset()      { *m = OpaqueDeviceConfiguration{} }
    +func (*OpaqueDeviceConfiguration) ProtoMessage() {}
    +func (*OpaqueDeviceConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{20}
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_OpaqueDeviceConfiguration.Merge(m, src)
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_OpaqueDeviceConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_OpaqueDeviceConfiguration proto.InternalMessageInfo
    +
    +func (m *ResourceClaim) Reset()      { *m = ResourceClaim{} }
    +func (*ResourceClaim) ProtoMessage() {}
    +func (*ResourceClaim) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{21}
    +}
    +func (m *ResourceClaim) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaim) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaim) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaim.Merge(m, src)
    +}
    +func (m *ResourceClaim) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaim) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaim.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaim proto.InternalMessageInfo
    +
    +func (m *ResourceClaimConsumerReference) Reset()      { *m = ResourceClaimConsumerReference{} }
    +func (*ResourceClaimConsumerReference) ProtoMessage() {}
    +func (*ResourceClaimConsumerReference) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{22}
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimConsumerReference.Merge(m, src)
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimConsumerReference) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimConsumerReference.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimConsumerReference proto.InternalMessageInfo
    +
    +func (m *ResourceClaimList) Reset()      { *m = ResourceClaimList{} }
    +func (*ResourceClaimList) ProtoMessage() {}
    +func (*ResourceClaimList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{23}
    +}
    +func (m *ResourceClaimList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimList.Merge(m, src)
    +}
    +func (m *ResourceClaimList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimList proto.InternalMessageInfo
    +
    +func (m *ResourceClaimSpec) Reset()      { *m = ResourceClaimSpec{} }
    +func (*ResourceClaimSpec) ProtoMessage() {}
    +func (*ResourceClaimSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{24}
    +}
    +func (m *ResourceClaimSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimSpec.Merge(m, src)
    +}
    +func (m *ResourceClaimSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimSpec proto.InternalMessageInfo
    +
    +func (m *ResourceClaimStatus) Reset()      { *m = ResourceClaimStatus{} }
    +func (*ResourceClaimStatus) ProtoMessage() {}
    +func (*ResourceClaimStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{25}
    +}
    +func (m *ResourceClaimStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimStatus.Merge(m, src)
    +}
    +func (m *ResourceClaimStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimStatus proto.InternalMessageInfo
    +
    +func (m *ResourceClaimTemplate) Reset()      { *m = ResourceClaimTemplate{} }
    +func (*ResourceClaimTemplate) ProtoMessage() {}
    +func (*ResourceClaimTemplate) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{26}
    +}
    +func (m *ResourceClaimTemplate) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimTemplate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimTemplate) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimTemplate.Merge(m, src)
    +}
    +func (m *ResourceClaimTemplate) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimTemplate) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimTemplate.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimTemplate proto.InternalMessageInfo
    +
    +func (m *ResourceClaimTemplateList) Reset()      { *m = ResourceClaimTemplateList{} }
    +func (*ResourceClaimTemplateList) ProtoMessage() {}
    +func (*ResourceClaimTemplateList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{27}
    +}
    +func (m *ResourceClaimTemplateList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimTemplateList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimTemplateList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimTemplateList.Merge(m, src)
    +}
    +func (m *ResourceClaimTemplateList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimTemplateList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimTemplateList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimTemplateList proto.InternalMessageInfo
    +
    +func (m *ResourceClaimTemplateSpec) Reset()      { *m = ResourceClaimTemplateSpec{} }
    +func (*ResourceClaimTemplateSpec) ProtoMessage() {}
    +func (*ResourceClaimTemplateSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{28}
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimTemplateSpec.Merge(m, src)
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimTemplateSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimTemplateSpec proto.InternalMessageInfo
    +
    +func (m *ResourcePool) Reset()      { *m = ResourcePool{} }
    +func (*ResourcePool) ProtoMessage() {}
    +func (*ResourcePool) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{29}
    +}
    +func (m *ResourcePool) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourcePool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourcePool) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourcePool.Merge(m, src)
    +}
    +func (m *ResourcePool) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourcePool) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourcePool.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourcePool proto.InternalMessageInfo
    +
    +func (m *ResourceSlice) Reset()      { *m = ResourceSlice{} }
    +func (*ResourceSlice) ProtoMessage() {}
    +func (*ResourceSlice) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{30}
    +}
    +func (m *ResourceSlice) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceSlice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceSlice) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceSlice.Merge(m, src)
    +}
    +func (m *ResourceSlice) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceSlice) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceSlice.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceSlice proto.InternalMessageInfo
    +
    +func (m *ResourceSliceList) Reset()      { *m = ResourceSliceList{} }
    +func (*ResourceSliceList) ProtoMessage() {}
    +func (*ResourceSliceList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{31}
    +}
    +func (m *ResourceSliceList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceSliceList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceSliceList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceSliceList.Merge(m, src)
    +}
    +func (m *ResourceSliceList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceSliceList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceSliceList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceSliceList proto.InternalMessageInfo
    +
    +func (m *ResourceSliceSpec) Reset()      { *m = ResourceSliceSpec{} }
    +func (*ResourceSliceSpec) ProtoMessage() {}
    +func (*ResourceSliceSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_66649ee9bbcd89d2, []int{32}
    +}
    +func (m *ResourceSliceSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceSliceSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceSliceSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceSliceSpec.Merge(m, src)
    +}
    +func (m *ResourceSliceSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceSliceSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceSliceSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceSliceSpec proto.InternalMessageInfo
    +
    +func init() {
    +	proto.RegisterType((*AllocatedDeviceStatus)(nil), "k8s.io.api.resource.v1alpha3.AllocatedDeviceStatus")
    +	proto.RegisterType((*AllocationResult)(nil), "k8s.io.api.resource.v1alpha3.AllocationResult")
    +	proto.RegisterType((*BasicDevice)(nil), "k8s.io.api.resource.v1alpha3.BasicDevice")
    +	proto.RegisterMapType((map[QualifiedName]DeviceAttribute)(nil), "k8s.io.api.resource.v1alpha3.BasicDevice.AttributesEntry")
    +	proto.RegisterMapType((map[QualifiedName]resource.Quantity)(nil), "k8s.io.api.resource.v1alpha3.BasicDevice.CapacityEntry")
    +	proto.RegisterType((*CELDeviceSelector)(nil), "k8s.io.api.resource.v1alpha3.CELDeviceSelector")
    +	proto.RegisterType((*Device)(nil), "k8s.io.api.resource.v1alpha3.Device")
    +	proto.RegisterType((*DeviceAllocationConfiguration)(nil), "k8s.io.api.resource.v1alpha3.DeviceAllocationConfiguration")
    +	proto.RegisterType((*DeviceAllocationResult)(nil), "k8s.io.api.resource.v1alpha3.DeviceAllocationResult")
    +	proto.RegisterType((*DeviceAttribute)(nil), "k8s.io.api.resource.v1alpha3.DeviceAttribute")
    +	proto.RegisterType((*DeviceClaim)(nil), "k8s.io.api.resource.v1alpha3.DeviceClaim")
    +	proto.RegisterType((*DeviceClaimConfiguration)(nil), "k8s.io.api.resource.v1alpha3.DeviceClaimConfiguration")
    +	proto.RegisterType((*DeviceClass)(nil), "k8s.io.api.resource.v1alpha3.DeviceClass")
    +	proto.RegisterType((*DeviceClassConfiguration)(nil), "k8s.io.api.resource.v1alpha3.DeviceClassConfiguration")
    +	proto.RegisterType((*DeviceClassList)(nil), "k8s.io.api.resource.v1alpha3.DeviceClassList")
    +	proto.RegisterType((*DeviceClassSpec)(nil), "k8s.io.api.resource.v1alpha3.DeviceClassSpec")
    +	proto.RegisterType((*DeviceConfiguration)(nil), "k8s.io.api.resource.v1alpha3.DeviceConfiguration")
    +	proto.RegisterType((*DeviceConstraint)(nil), "k8s.io.api.resource.v1alpha3.DeviceConstraint")
    +	proto.RegisterType((*DeviceRequest)(nil), "k8s.io.api.resource.v1alpha3.DeviceRequest")
    +	proto.RegisterType((*DeviceRequestAllocationResult)(nil), "k8s.io.api.resource.v1alpha3.DeviceRequestAllocationResult")
    +	proto.RegisterType((*DeviceSelector)(nil), "k8s.io.api.resource.v1alpha3.DeviceSelector")
    +	proto.RegisterType((*NetworkDeviceData)(nil), "k8s.io.api.resource.v1alpha3.NetworkDeviceData")
    +	proto.RegisterType((*OpaqueDeviceConfiguration)(nil), "k8s.io.api.resource.v1alpha3.OpaqueDeviceConfiguration")
    +	proto.RegisterType((*ResourceClaim)(nil), "k8s.io.api.resource.v1alpha3.ResourceClaim")
    +	proto.RegisterType((*ResourceClaimConsumerReference)(nil), "k8s.io.api.resource.v1alpha3.ResourceClaimConsumerReference")
    +	proto.RegisterType((*ResourceClaimList)(nil), "k8s.io.api.resource.v1alpha3.ResourceClaimList")
    +	proto.RegisterType((*ResourceClaimSpec)(nil), "k8s.io.api.resource.v1alpha3.ResourceClaimSpec")
    +	proto.RegisterType((*ResourceClaimStatus)(nil), "k8s.io.api.resource.v1alpha3.ResourceClaimStatus")
    +	proto.RegisterType((*ResourceClaimTemplate)(nil), "k8s.io.api.resource.v1alpha3.ResourceClaimTemplate")
    +	proto.RegisterType((*ResourceClaimTemplateList)(nil), "k8s.io.api.resource.v1alpha3.ResourceClaimTemplateList")
    +	proto.RegisterType((*ResourceClaimTemplateSpec)(nil), "k8s.io.api.resource.v1alpha3.ResourceClaimTemplateSpec")
    +	proto.RegisterType((*ResourcePool)(nil), "k8s.io.api.resource.v1alpha3.ResourcePool")
    +	proto.RegisterType((*ResourceSlice)(nil), "k8s.io.api.resource.v1alpha3.ResourceSlice")
    +	proto.RegisterType((*ResourceSliceList)(nil), "k8s.io.api.resource.v1alpha3.ResourceSliceList")
    +	proto.RegisterType((*ResourceSliceSpec)(nil), "k8s.io.api.resource.v1alpha3.ResourceSliceSpec")
    +}
    +
    +func init() {
    +	proto.RegisterFile("k8s.io/api/resource/v1alpha3/generated.proto", fileDescriptor_66649ee9bbcd89d2)
    +}
    +
    +var fileDescriptor_66649ee9bbcd89d2 = []byte{
    +	// 2030 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x19, 0xcd, 0x6f, 0x1c, 0x57,
    +	0xdd, 0xb3, 0xe3, 0xcf, 0xdf, 0xfa, 0x2b, 0x2f, 0xa4, 0x38, 0xa6, 0xec, 0x3a, 0x53, 0x04, 0x4e,
    +	0x9b, 0xee, 0x36, 0x4e, 0xd5, 0x16, 0xc2, 0x01, 0x8f, 0xed, 0x06, 0x47, 0x89, 0xe3, 0x3c, 0xb7,
    +	0x11, 0x81, 0x12, 0x78, 0x9e, 0x7d, 0xb6, 0x07, 0xcf, 0xce, 0x4c, 0xe7, 0xbd, 0x71, 0xea, 0x0b,
    +	0xaa, 0xe0, 0x1e, 0xf1, 0x0f, 0x20, 0x0e, 0x48, 0x48, 0x5c, 0x80, 0xff, 0x00, 0x24, 0x90, 0x88,
    +	0xe0, 0x12, 0x09, 0x0e, 0x3d, 0x2d, 0xcd, 0x22, 0xce, 0xdc, 0x73, 0x42, 0xef, 0xcd, 0x9b, 0xcf,
    +	0xdd, 0x71, 0xc6, 0x55, 0xb1, 0xd2, 0xdb, 0xce, 0xef, 0xfb, 0xfd, 0xbe, 0xdf, 0x5b, 0xb8, 0x72,
    +	0xf8, 0x0e, 0x6b, 0xd9, 0x5e, 0x9b, 0xf8, 0x76, 0x3b, 0xa0, 0xcc, 0x0b, 0x03, 0x8b, 0xb6, 0x8f,
    +	0xae, 0x12, 0xc7, 0x3f, 0x20, 0xd7, 0xda, 0xfb, 0xd4, 0xa5, 0x01, 0xe1, 0xb4, 0xd3, 0xf2, 0x03,
    +	0x8f, 0x7b, 0xe8, 0xe5, 0x88, 0xba, 0x45, 0x7c, 0xbb, 0x15, 0x53, 0xb7, 0x62, 0xea, 0xc5, 0xd7,
    +	0xf7, 0x6d, 0x7e, 0x10, 0xee, 0xb6, 0x2c, 0xaf, 0xdb, 0xde, 0xf7, 0xf6, 0xbd, 0xb6, 0x64, 0xda,
    +	0x0d, 0xf7, 0xe4, 0x97, 0xfc, 0x90, 0xbf, 0x22, 0x61, 0x8b, 0x46, 0x46, 0xb5, 0xe5, 0x05, 0x42,
    +	0x6d, 0x51, 0xe1, 0xe2, 0x9b, 0x29, 0x4d, 0x97, 0x58, 0x07, 0xb6, 0x4b, 0x83, 0xe3, 0xb6, 0x7f,
    +	0xb8, 0x9f, 0xb7, 0xf7, 0x34, 0x5c, 0xac, 0xdd, 0xa5, 0x9c, 0x0c, 0xd3, 0xd5, 0x2e, 0xe3, 0x0a,
    +	0x42, 0x97, 0xdb, 0xdd, 0x41, 0x35, 0x6f, 0x3d, 0x8f, 0x81, 0x59, 0x07, 0xb4, 0x4b, 0x8a, 0x7c,
    +	0xc6, 0xaf, 0x75, 0xb8, 0xb0, 0xea, 0x38, 0x9e, 0x25, 0x60, 0xeb, 0xf4, 0xc8, 0xb6, 0xe8, 0x0e,
    +	0x27, 0x3c, 0x64, 0xe8, 0xeb, 0x30, 0xde, 0x09, 0xec, 0x23, 0x1a, 0x2c, 0x68, 0x4b, 0xda, 0xf2,
    +	0x94, 0x39, 0xfb, 0xb8, 0xd7, 0x1c, 0xe9, 0xf7, 0x9a, 0xe3, 0xeb, 0x12, 0x8a, 0x15, 0x16, 0x2d,
    +	0xc1, 0xa8, 0xef, 0x79, 0xce, 0x42, 0x4d, 0x52, 0x4d, 0x2b, 0xaa, 0xd1, 0x6d, 0xcf, 0x73, 0xb0,
    +	0xc4, 0x48, 0x49, 0x52, 0xf2, 0x82, 0x5e, 0x90, 0x24, 0xa1, 0x58, 0x61, 0x91, 0x05, 0x60, 0x79,
    +	0x6e, 0xc7, 0xe6, 0xb6, 0xe7, 0xb2, 0x85, 0xd1, 0x25, 0x7d, 0xb9, 0xbe, 0xd2, 0x6e, 0xa5, 0x61,
    +	0x4e, 0x0e, 0xd6, 0xf2, 0x0f, 0xf7, 0x05, 0x80, 0xb5, 0x84, 0xff, 0x5a, 0x47, 0x57, 0x5b, 0x6b,
    +	0x31, 0x9f, 0x89, 0x94, 0x70, 0x48, 0x40, 0x0c, 0x67, 0xc4, 0xa2, 0x3b, 0x30, 0xda, 0x21, 0x9c,
    +	0x2c, 0x8c, 0x2d, 0x69, 0xcb, 0xf5, 0x95, 0xd7, 0x4b, 0xc5, 0x2b, 0xbf, 0xb5, 0x30, 0x79, 0xb8,
    +	0xf1, 0x11, 0xa7, 0x2e, 0x13, 0xc2, 0x93, 0xd3, 0xad, 0x13, 0x4e, 0xb0, 0x14, 0x84, 0x76, 0xa1,
    +	0xee, 0x52, 0xfe, 0xd0, 0x0b, 0x0e, 0x05, 0x70, 0x61, 0x5c, 0xca, 0xcd, 0x9a, 0x3d, 0x98, 0x9d,
    +	0xad, 0x2d, 0xc5, 0x20, 0xcf, 0x2d, 0xd8, 0xcc, 0xb9, 0x7e, 0xaf, 0x59, 0xdf, 0x4a, 0xe5, 0xe0,
    +	0xac, 0x50, 0xe3, 0xef, 0x1a, 0xcc, 0xab, 0x28, 0xd9, 0x9e, 0x8b, 0x29, 0x0b, 0x1d, 0x8e, 0x7e,
    +	0x04, 0x13, 0x91, 0xe3, 0x98, 0x8c, 0x50, 0x7d, 0xe5, 0xcd, 0x93, 0x95, 0x46, 0xda, 0x8a, 0x62,
    +	0xcc, 0x39, 0x75, 0xa6, 0x89, 0x08, 0xcf, 0x70, 0x2c, 0x15, 0xdd, 0x83, 0x69, 0xd7, 0xeb, 0xd0,
    +	0x1d, 0xea, 0x50, 0x8b, 0x7b, 0x81, 0x8c, 0x5e, 0x7d, 0x65, 0x29, 0xab, 0x45, 0xd4, 0x8a, 0xf0,
    +	0xff, 0x56, 0x86, 0xce, 0x9c, 0xef, 0xf7, 0x9a, 0xd3, 0x59, 0x08, 0xce, 0xc9, 0x31, 0x3e, 0xd5,
    +	0xa1, 0x6e, 0x12, 0x66, 0x5b, 0x91, 0x46, 0xf4, 0x53, 0x00, 0xc2, 0x79, 0x60, 0xef, 0x86, 0x5c,
    +	0x9e, 0x45, 0xc4, 0xfd, 0x9b, 0x27, 0x9f, 0x25, 0xc3, 0xde, 0x5a, 0x4d, 0x78, 0x37, 0x5c, 0x1e,
    +	0x1c, 0x9b, 0xaf, 0xc4, 0x19, 0x90, 0x22, 0x7e, 0xf6, 0xaf, 0xe6, 0xcc, 0xdd, 0x90, 0x38, 0xf6,
    +	0x9e, 0x4d, 0x3b, 0x5b, 0xa4, 0x4b, 0x71, 0x46, 0x23, 0x3a, 0x82, 0x49, 0x8b, 0xf8, 0xc4, 0xb2,
    +	0xf9, 0xf1, 0x42, 0x4d, 0x6a, 0x7f, 0xbb, 0xba, 0xf6, 0x35, 0xc5, 0x19, 0xe9, 0xbe, 0xa4, 0x74,
    +	0x4f, 0xc6, 0xe0, 0x41, 0xcd, 0x89, 0xae, 0x45, 0x07, 0xe6, 0x0a, 0xb6, 0xa3, 0x79, 0xd0, 0x0f,
    +	0xe9, 0x71, 0x54, 0x71, 0x58, 0xfc, 0x44, 0x6b, 0x30, 0x76, 0x44, 0x9c, 0x90, 0xca, 0xfa, 0xca,
    +	0x27, 0x6c, 0x79, 0x8c, 0x63, 0xa9, 0x38, 0xe2, 0xfd, 0x56, 0xed, 0x1d, 0x6d, 0xf1, 0x10, 0x66,
    +	0x72, 0xb6, 0x0e, 0xd1, 0xb5, 0x9e, 0xd7, 0xd5, 0x3a, 0xa9, 0xf6, 0x52, 0xe5, 0x77, 0x43, 0xe2,
    +	0x72, 0x9b, 0x1f, 0x67, 0x94, 0x19, 0x37, 0xe0, 0xdc, 0xda, 0xc6, 0x2d, 0xd5, 0x4f, 0x54, 0xdc,
    +	0xd1, 0x0a, 0x00, 0xfd, 0xc8, 0x0f, 0x28, 0x13, 0xb5, 0xa4, 0xba, 0x4a, 0x52, 0xae, 0x1b, 0x09,
    +	0x06, 0x67, 0xa8, 0x8c, 0x23, 0x50, 0x5d, 0x42, 0xf4, 0x19, 0x97, 0x74, 0xa9, 0xe2, 0x4b, 0x2a,
    +	0x51, 0xfa, 0x54, 0x62, 0xd0, 0x4d, 0x18, 0xdb, 0x15, 0x91, 0x51, 0xe6, 0x5f, 0xae, 0x1c, 0x44,
    +	0x73, 0xaa, 0xdf, 0x6b, 0x8e, 0x49, 0x00, 0x8e, 0x44, 0x18, 0x8f, 0x6a, 0xf0, 0xd5, 0x62, 0xc1,
    +	0xac, 0x79, 0xee, 0x9e, 0xbd, 0x1f, 0x06, 0xf2, 0x03, 0x7d, 0x07, 0xc6, 0x23, 0x91, 0xca, 0xa2,
    +	0xe5, 0xb8, 0xab, 0xed, 0x48, 0xe8, 0xb3, 0x5e, 0xf3, 0xa5, 0x22, 0x6b, 0x84, 0xc1, 0x8a, 0x0f,
    +	0x2d, 0xc3, 0x64, 0x40, 0x3f, 0x0c, 0x29, 0xe3, 0x4c, 0xe6, 0xdd, 0x94, 0x39, 0x2d, 0x52, 0x07,
    +	0x2b, 0x18, 0x4e, 0xb0, 0xe8, 0x63, 0x0d, 0xce, 0x47, 0x55, 0x99, 0xb3, 0x41, 0x55, 0xe4, 0xd5,
    +	0x2a, 0x39, 0x91, 0x63, 0x34, 0xbf, 0xa2, 0x8c, 0x3d, 0x3f, 0x04, 0x89, 0x87, 0xa9, 0x32, 0xfe,
    +	0xa3, 0xc1, 0x4b, 0xc3, 0x3b, 0x08, 0xda, 0x83, 0x89, 0x40, 0xfe, 0x8a, 0x8b, 0xf7, 0x7a, 0x15,
    +	0x83, 0xd4, 0x31, 0xcb, 0xfb, 0x51, 0xf4, 0xcd, 0x70, 0x2c, 0x1c, 0x59, 0x30, 0x6e, 0x49, 0x9b,
    +	0x54, 0x95, 0x5e, 0x3f, 0x5d, 0xbf, 0xcb, 0x7b, 0x20, 0x19, 0x42, 0x11, 0x18, 0x2b, 0xd1, 0xc6,
    +	0x6f, 0x35, 0x98, 0x2b, 0x54, 0x11, 0x6a, 0x80, 0x6e, 0xbb, 0x5c, 0xa6, 0x95, 0x1e, 0xc5, 0x68,
    +	0xd3, 0xe5, 0xf7, 0x44, 0xb2, 0x63, 0x81, 0x40, 0x97, 0x60, 0x74, 0x57, 0x8c, 0x40, 0x11, 0x8e,
    +	0x49, 0x73, 0xa6, 0xdf, 0x6b, 0x4e, 0x99, 0x9e, 0xe7, 0x44, 0x14, 0x12, 0x85, 0xbe, 0x01, 0xe3,
    +	0x8c, 0x07, 0xb6, 0xbb, 0xbf, 0x30, 0x2a, 0xb3, 0x45, 0xf6, 0xfb, 0x1d, 0x09, 0x89, 0xc8, 0x14,
    +	0x1a, 0xbd, 0x0a, 0x13, 0x47, 0x34, 0x90, 0x15, 0x32, 0x26, 0x29, 0x65, 0x37, 0xbd, 0x17, 0x81,
    +	0x22, 0xd2, 0x98, 0xc0, 0xf8, 0x7d, 0x0d, 0xea, 0x2a, 0x80, 0x0e, 0xb1, 0xbb, 0xe8, 0x7e, 0x26,
    +	0xa1, 0xa2, 0x48, 0xbc, 0x76, 0x8a, 0x48, 0x98, 0xf3, 0x71, 0xf3, 0x1a, 0x92, 0x81, 0x14, 0xea,
    +	0x96, 0xe7, 0x32, 0x1e, 0x10, 0xdb, 0x55, 0xe9, 0x9a, 0x6f, 0x10, 0x27, 0x25, 0x9e, 0x62, 0x33,
    +	0xcf, 0x2b, 0x05, 0xf5, 0x14, 0xc6, 0x70, 0x56, 0x2e, 0x7a, 0x90, 0x84, 0x58, 0x97, 0x1a, 0xde,
    +	0xaa, 0xa4, 0x41, 0x1c, 0xbe, 0x5a, 0x74, 0xff, 0xaa, 0xc1, 0x42, 0x19, 0x53, 0xae, 0x1e, 0xb5,
    +	0xcf, 0x54, 0x8f, 0xb5, 0xb3, 0xab, 0xc7, 0x3f, 0x69, 0x99, 0xd8, 0x33, 0x86, 0x7e, 0x0c, 0x93,
    +	0x62, 0x19, 0x92, 0xbb, 0x4d, 0xb4, 0x0e, 0xbc, 0x51, 0x6d, 0x75, 0xba, 0xb3, 0xfb, 0x13, 0x6a,
    +	0xf1, 0xdb, 0x94, 0x93, 0xb4, 0x19, 0xa7, 0x30, 0x9c, 0x48, 0x15, 0x9b, 0x13, 0xf3, 0xa9, 0x75,
    +	0x9a, 0x41, 0x24, 0x4d, 0xdb, 0xf1, 0xa9, 0x95, 0xf6, 0x6b, 0xf1, 0x85, 0xa5, 0x20, 0xe3, 0x97,
    +	0xd9, 0x60, 0x30, 0x96, 0x0f, 0x46, 0x99, 0x8b, 0xb5, 0xb3, 0x73, 0xf1, 0x1f, 0x93, 0x56, 0x20,
    +	0xed, 0xbb, 0x65, 0x33, 0x8e, 0x3e, 0x18, 0x70, 0x73, 0xab, 0x9a, 0x9b, 0x05, 0xb7, 0x74, 0x72,
    +	0x52, 0x65, 0x31, 0x24, 0xe3, 0xe2, 0x2d, 0x18, 0xb3, 0x39, 0xed, 0xc6, 0xf5, 0x75, 0xb9, 0xb2,
    +	0x8f, 0xcd, 0x19, 0x25, 0x75, 0x6c, 0x53, 0xf0, 0xe3, 0x48, 0x8c, 0xf1, 0x24, 0x7f, 0x02, 0xe1,
    +	0x7b, 0xf4, 0x43, 0x98, 0x62, 0x6a, 0x22, 0xc7, 0x5d, 0xe2, 0x4a, 0x15, 0x3d, 0xc9, 0x7a, 0x77,
    +	0x4e, 0xa9, 0x9a, 0x8a, 0x21, 0x0c, 0xa7, 0x12, 0x33, 0x15, 0x5c, 0x3b, 0x55, 0x05, 0x17, 0xe2,
    +	0x5f, 0x5a, 0xc1, 0x01, 0x0c, 0x0b, 0x20, 0xfa, 0x01, 0x8c, 0x7b, 0x3e, 0xf9, 0x30, 0xa4, 0x2a,
    +	0x2a, 0xcf, 0xd9, 0xe0, 0xee, 0x48, 0xda, 0x61, 0x69, 0x02, 0x42, 0x67, 0x84, 0xc6, 0x4a, 0xa4,
    +	0xf1, 0x48, 0x83, 0xf9, 0x62, 0x33, 0x3b, 0x45, 0xb7, 0xd8, 0x86, 0xd9, 0x2e, 0xe1, 0xd6, 0x41,
    +	0x32, 0x50, 0xd4, 0x5d, 0x69, 0xb9, 0xdf, 0x6b, 0xce, 0xde, 0xce, 0x61, 0x9e, 0xf5, 0x9a, 0xe8,
    +	0xdd, 0xd0, 0x71, 0x8e, 0xf3, 0x3b, 0x63, 0x81, 0xdf, 0xf8, 0xb9, 0x0e, 0x33, 0xb9, 0xde, 0x5d,
    +	0x61, 0x3b, 0x5a, 0x85, 0xb9, 0x4e, 0xea, 0x6c, 0x81, 0x50, 0x66, 0x7c, 0x59, 0x11, 0x67, 0x33,
    +	0x45, 0xf2, 0x15, 0xe9, 0xf3, 0xa9, 0xa3, 0x7f, 0xee, 0xa9, 0x73, 0x0f, 0x66, 0x49, 0x32, 0xad,
    +	0x6f, 0x7b, 0x1d, 0xaa, 0x66, 0x65, 0x4b, 0x71, 0xcd, 0xae, 0xe6, 0xb0, 0xcf, 0x7a, 0xcd, 0x2f,
    +	0x15, 0x67, 0xbc, 0x80, 0xe3, 0x82, 0x14, 0xf4, 0x0a, 0x8c, 0x59, 0x5e, 0xe8, 0x72, 0x39, 0x50,
    +	0xf5, 0xb4, 0x54, 0xd6, 0x04, 0x10, 0x47, 0x38, 0x74, 0x15, 0xea, 0xa4, 0xd3, 0xb5, 0xdd, 0x55,
    +	0xcb, 0xa2, 0x8c, 0xc9, 0x6b, 0xdc, 0x64, 0x34, 0xa5, 0x57, 0x53, 0x30, 0xce, 0xd2, 0x18, 0xff,
    +	0xd5, 0xe2, 0x1d, 0xb1, 0x64, 0x97, 0x41, 0x97, 0xc5, 0x66, 0x24, 0x51, 0x2a, 0x30, 0x99, 0xe5,
    +	0x46, 0x82, 0x71, 0x8c, 0xcf, 0x5c, 0xb7, 0x6b, 0x95, 0xae, 0xdb, 0x7a, 0x85, 0xeb, 0xf6, 0xe8,
    +	0x89, 0xd7, 0xed, 0xc2, 0x89, 0xc7, 0x2a, 0x9c, 0xf8, 0x03, 0x98, 0x2d, 0xec, 0xf4, 0x37, 0x41,
    +	0xb7, 0xa8, 0xa3, 0x8a, 0xee, 0x39, 0xb7, 0xde, 0x81, 0x1b, 0x81, 0x39, 0xd1, 0xef, 0x35, 0xf5,
    +	0xb5, 0x8d, 0x5b, 0x58, 0x08, 0x31, 0x7e, 0xa7, 0xc1, 0xb9, 0x81, 0x9b, 0x31, 0xba, 0x0e, 0x33,
    +	0xb6, 0xcb, 0x69, 0xb0, 0x47, 0x2c, 0xba, 0x95, 0xa6, 0xf8, 0x05, 0x75, 0xaa, 0x99, 0xcd, 0x2c,
    +	0x12, 0xe7, 0x69, 0xd1, 0x45, 0xd0, 0x6d, 0x3f, 0xde, 0xae, 0xa5, 0xb6, 0xcd, 0x6d, 0x86, 0x05,
    +	0x4c, 0xd4, 0xc3, 0x01, 0x09, 0x3a, 0x0f, 0x49, 0x40, 0x57, 0x3b, 0x1d, 0x71, 0xdf, 0x50, 0x3e,
    +	0x4d, 0xea, 0xe1, 0xbb, 0x79, 0x34, 0x2e, 0xd2, 0x1b, 0xbf, 0xd1, 0xe0, 0x62, 0x69, 0x27, 0xa9,
    +	0xfc, 0x80, 0x42, 0x00, 0x7c, 0x12, 0x90, 0x2e, 0xe5, 0x34, 0x60, 0x43, 0xa6, 0x6b, 0x85, 0x77,
    +	0x89, 0x64, 0x70, 0x6f, 0x27, 0x82, 0x70, 0x46, 0xa8, 0xf1, 0xab, 0x1a, 0xcc, 0x60, 0x15, 0x8f,
    +	0x68, 0x55, 0xfc, 0xff, 0xaf, 0x0b, 0x77, 0x73, 0xeb, 0xc2, 0x73, 0x52, 0x23, 0x67, 0x5c, 0xd9,
    +	0xc2, 0x80, 0xee, 0x8b, 0x25, 0x9a, 0xf0, 0x90, 0x55, 0xbb, 0xf8, 0xe4, 0x85, 0x4a, 0xc6, 0x34,
    +	0x08, 0xd1, 0x37, 0x56, 0x02, 0x8d, 0xbe, 0x06, 0x8d, 0x1c, 0xbd, 0xe8, 0xf4, 0x61, 0x97, 0x06,
    +	0x98, 0xee, 0xd1, 0x80, 0xba, 0x16, 0x45, 0x57, 0x60, 0x92, 0xf8, 0xf6, 0x8d, 0xc0, 0x0b, 0x7d,
    +	0x15, 0xd1, 0x64, 0x94, 0xaf, 0x6e, 0x6f, 0x4a, 0x38, 0x4e, 0x28, 0x04, 0x75, 0x6c, 0x91, 0xca,
    +	0xab, 0xcc, 0x7a, 0x1d, 0xc1, 0x71, 0x42, 0x91, 0xb4, 0xef, 0xd1, 0xd2, 0xf6, 0x6d, 0x82, 0x1e,
    +	0xda, 0x1d, 0x75, 0x27, 0x78, 0x43, 0x11, 0xe8, 0xef, 0x6f, 0xae, 0x3f, 0xeb, 0x35, 0x2f, 0x95,
    +	0x3d, 0xfe, 0xf1, 0x63, 0x9f, 0xb2, 0xd6, 0xfb, 0x9b, 0xeb, 0x58, 0x30, 0x1b, 0x7f, 0xd6, 0xe0,
    +	0x5c, 0xee, 0x90, 0x67, 0xb0, 0xd2, 0x6c, 0xe7, 0x57, 0x9a, 0xd7, 0x4e, 0x11, 0xb2, 0x92, 0xa5,
    +	0xc6, 0x2e, 0x1c, 0x42, 0x6e, 0x35, 0xef, 0x15, 0x1f, 0xc3, 0x2e, 0x57, 0xbe, 0x39, 0x94, 0xbf,
    +	0x80, 0x19, 0x7f, 0xab, 0xc1, 0xf9, 0x21, 0x59, 0x84, 0x1e, 0x00, 0xa4, 0x33, 0x66, 0x88, 0xd3,
    +	0x86, 0x28, 0x1c, 0xb8, 0xe7, 0xce, 0xca, 0x27, 0xaa, 0x14, 0x9a, 0x91, 0x88, 0x18, 0xd4, 0x03,
    +	0xca, 0x68, 0x70, 0x44, 0x3b, 0xef, 0x7a, 0x81, 0x72, 0xdd, 0xb7, 0x4f, 0xe1, 0xba, 0x81, 0xec,
    +	0x4d, 0xef, 0x5e, 0x38, 0x15, 0x8c, 0xb3, 0x5a, 0xd0, 0x83, 0xd4, 0x85, 0xd1, 0xdb, 0xeb, 0xb5,
    +	0x4a, 0x27, 0xca, 0x3f, 0x1b, 0x9f, 0xe0, 0xcc, 0x7f, 0x6a, 0x70, 0x21, 0x67, 0xe4, 0x7b, 0xb4,
    +	0xeb, 0x3b, 0x84, 0xd3, 0x33, 0x68, 0x46, 0xf7, 0x73, 0xcd, 0xe8, 0xed, 0x53, 0x78, 0x32, 0x36,
    +	0xb2, 0xf4, 0x16, 0xf3, 0x0f, 0x0d, 0x2e, 0x0e, 0xe5, 0x38, 0x83, 0xe2, 0xfa, 0x5e, 0xbe, 0xb8,
    +	0xae, 0x7d, 0x86, 0x73, 0x95, 0xdf, 0x1c, 0x2e, 0x96, 0xfa, 0xe1, 0x0b, 0x39, 0x3d, 0x8c, 0x3f,
    +	0x68, 0x30, 0x1d, 0x53, 0x8a, 0x75, 0xa9, 0xc2, 0xce, 0xbc, 0x02, 0xa0, 0xfe, 0x30, 0x89, 0x6f,
    +	0xf7, 0x7a, 0x6a, 0xf7, 0x8d, 0x04, 0x83, 0x33, 0x54, 0xe8, 0x26, 0xa0, 0xd8, 0xc2, 0x1d, 0x47,
    +	0x2e, 0x05, 0x62, 0xf5, 0xd4, 0x25, 0xef, 0xa2, 0xe2, 0x45, 0x78, 0x80, 0x02, 0x0f, 0xe1, 0x32,
    +	0xfe, 0xa2, 0xa5, 0x73, 0x5b, 0x82, 0x5f, 0x54, 0xcf, 0x4b, 0xe3, 0x4a, 0x3d, 0x9f, 0x9d, 0x3b,
    +	0x92, 0xf2, 0x85, 0x9d, 0x3b, 0xd2, 0xba, 0x92, 0x92, 0x78, 0xa4, 0x17, 0x4e, 0x21, 0x4b, 0xa1,
    +	0xea, 0x96, 0x77, 0x2b, 0xf3, 0x37, 0x59, 0x7d, 0xe5, 0xd5, 0x6a, 0xe6, 0x88, 0x34, 0x1d, 0xba,
    +	0xe3, 0x5f, 0x81, 0x49, 0xd7, 0xeb, 0x44, 0xfb, 0x70, 0x61, 0xbb, 0xd8, 0x52, 0x70, 0x9c, 0x50,
    +	0x0c, 0xfc, 0x91, 0x33, 0xfa, 0xf9, 0xfc, 0x91, 0x23, 0x37, 0x22, 0xc7, 0x11, 0x04, 0xf1, 0xf5,
    +	0x21, 0xdd, 0x88, 0x14, 0x1c, 0x27, 0x14, 0xe8, 0x4e, 0x3a, 0x5f, 0xc6, 0x65, 0x4c, 0xbe, 0x56,
    +	0x65, 0x44, 0x97, 0x0f, 0x14, 0xd3, 0x7c, 0xfc, 0xb4, 0x31, 0xf2, 0xe4, 0x69, 0x63, 0xe4, 0x93,
    +	0xa7, 0x8d, 0x91, 0x8f, 0xfb, 0x0d, 0xed, 0x71, 0xbf, 0xa1, 0x3d, 0xe9, 0x37, 0xb4, 0x4f, 0xfa,
    +	0x0d, 0xed, 0xd3, 0x7e, 0x43, 0xfb, 0xc5, 0xbf, 0x1b, 0x23, 0xdf, 0x7f, 0xf9, 0xa4, 0x7f, 0x95,
    +	0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0xbd, 0x60, 0x85, 0x64, 0x74, 0x1e, 0x00, 0x00,
    +}
    +
    +func (m *AllocatedDeviceStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *AllocatedDeviceStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *AllocatedDeviceStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.NetworkData != nil {
    +		{
    +			size, err := m.NetworkData.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x32
    +	}
    +	{
    +		size, err := m.Data.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x2a
    +	if len(m.Conditions) > 0 {
    +		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	i -= len(m.Device)
    +	copy(dAtA[i:], m.Device)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Device)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Pool)
    +	copy(dAtA[i:], m.Pool)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Pool)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *AllocationResult) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *AllocationResult) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *AllocationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.NodeSelector != nil {
    +		{
    +			size, err := m.NodeSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	{
    +		size, err := m.Devices.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *BasicDevice) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *BasicDevice) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *BasicDevice) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Capacity) > 0 {
    +		keysForCapacity := make([]string, 0, len(m.Capacity))
    +		for k := range m.Capacity {
    +			keysForCapacity = append(keysForCapacity, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity)
    +		for iNdEx := len(keysForCapacity) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Capacity[QualifiedName(keysForCapacity[iNdEx])]
    +			baseI := i
    +			{
    +				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForCapacity[iNdEx])
    +			copy(dAtA[i:], keysForCapacity[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForCapacity[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Attributes) > 0 {
    +		keysForAttributes := make([]string, 0, len(m.Attributes))
    +		for k := range m.Attributes {
    +			keysForAttributes = append(keysForAttributes, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForAttributes)
    +		for iNdEx := len(keysForAttributes) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Attributes[QualifiedName(keysForAttributes[iNdEx])]
    +			baseI := i
    +			{
    +				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForAttributes[iNdEx])
    +			copy(dAtA[i:], keysForAttributes[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForAttributes[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *CELDeviceSelector) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *CELDeviceSelector) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *CELDeviceSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *Device) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *Device) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *Device) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.Basic != nil {
    +		{
    +			size, err := m.Basic.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceAllocationConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceAllocationConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceAllocationConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.DeviceConfiguration.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Requests[iNdEx])
    +			copy(dAtA[i:], m.Requests[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Requests[iNdEx])))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.Source)
    +	copy(dAtA[i:], m.Source)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Source)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceAllocationResult) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceAllocationResult) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceAllocationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Config) > 0 {
    +		for iNdEx := len(m.Config) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Config[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Results) > 0 {
    +		for iNdEx := len(m.Results) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Results[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceAttribute) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceAttribute) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceAttribute) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.VersionValue != nil {
    +		i -= len(*m.VersionValue)
    +		copy(dAtA[i:], *m.VersionValue)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.VersionValue)))
    +		i--
    +		dAtA[i] = 0x2a
    +	}
    +	if m.StringValue != nil {
    +		i -= len(*m.StringValue)
    +		copy(dAtA[i:], *m.StringValue)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.StringValue)))
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if m.BoolValue != nil {
    +		i--
    +		if *m.BoolValue {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x18
    +	}
    +	if m.IntValue != nil {
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.IntValue))
    +		i--
    +		dAtA[i] = 0x10
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClaim) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClaim) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClaim) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Config) > 0 {
    +		for iNdEx := len(m.Config) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Config[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if len(m.Constraints) > 0 {
    +		for iNdEx := len(m.Constraints) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Constraints[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Requests[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClaimConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClaimConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClaimConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.DeviceConfiguration.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Requests[iNdEx])
    +			copy(dAtA[i:], m.Requests[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Requests[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClass) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClass) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClass) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClassConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClassConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClassConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.DeviceConfiguration.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClassList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClassList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClassList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClassSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClassSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClassSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Config) > 0 {
    +		for iNdEx := len(m.Config) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Config[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Selectors) > 0 {
    +		for iNdEx := len(m.Selectors) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Selectors[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.Opaque != nil {
    +		{
    +			size, err := m.Opaque.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceConstraint) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceConstraint) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceConstraint) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.MatchAttribute != nil {
    +		i -= len(*m.MatchAttribute)
    +		copy(dAtA[i:], *m.MatchAttribute)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MatchAttribute)))
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Requests[iNdEx])
    +			copy(dAtA[i:], m.Requests[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Requests[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceRequest) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceRequest) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.AdminAccess != nil {
    +		i--
    +		if *m.AdminAccess {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x30
    +	}
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.Count))
    +	i--
    +	dAtA[i] = 0x28
    +	i -= len(m.AllocationMode)
    +	copy(dAtA[i:], m.AllocationMode)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.AllocationMode)))
    +	i--
    +	dAtA[i] = 0x22
    +	if len(m.Selectors) > 0 {
    +		for iNdEx := len(m.Selectors) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Selectors[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	i -= len(m.DeviceClassName)
    +	copy(dAtA[i:], m.DeviceClassName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.DeviceClassName)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceRequestAllocationResult) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceRequestAllocationResult) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceRequestAllocationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.AdminAccess != nil {
    +		i--
    +		if *m.AdminAccess {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x28
    +	}
    +	i -= len(m.Device)
    +	copy(dAtA[i:], m.Device)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Device)))
    +	i--
    +	dAtA[i] = 0x22
    +	i -= len(m.Pool)
    +	copy(dAtA[i:], m.Pool)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Pool)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Request)
    +	copy(dAtA[i:], m.Request)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Request)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceSelector) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceSelector) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.CEL != nil {
    +		{
    +			size, err := m.CEL.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *NetworkDeviceData) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *NetworkDeviceData) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *NetworkDeviceData) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.HardwareAddress)
    +	copy(dAtA[i:], m.HardwareAddress)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.HardwareAddress)))
    +	i--
    +	dAtA[i] = 0x1a
    +	if len(m.IPs) > 0 {
    +		for iNdEx := len(m.IPs) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.IPs[iNdEx])
    +			copy(dAtA[i:], m.IPs[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.IPs[iNdEx])))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.InterfaceName)
    +	copy(dAtA[i:], m.InterfaceName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.InterfaceName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *OpaqueDeviceConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *OpaqueDeviceConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *OpaqueDeviceConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Parameters.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaim) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaim) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaim) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimConsumerReference) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimConsumerReference) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimConsumerReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.UID)
    +	copy(dAtA[i:], m.UID)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID)))
    +	i--
    +	dAtA[i] = 0x2a
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0x22
    +	i -= len(m.Resource)
    +	copy(dAtA[i:], m.Resource)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.APIGroup)
    +	copy(dAtA[i:], m.APIGroup)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIGroup)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Devices.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Devices) > 0 {
    +		for iNdEx := len(m.Devices) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Devices[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	if len(m.ReservedFor) > 0 {
    +		for iNdEx := len(m.ReservedFor) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.ReservedFor[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if m.Allocation != nil {
    +		{
    +			size, err := m.Allocation.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimTemplate) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimTemplate) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimTemplateList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimTemplateList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimTemplateList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimTemplateSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimTemplateSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimTemplateSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourcePool) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourcePool) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourcePool) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceSliceCount))
    +	i--
    +	dAtA[i] = 0x18
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.Generation))
    +	i--
    +	dAtA[i] = 0x10
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceSlice) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceSlice) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceSlice) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceSliceList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceSliceList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceSliceList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceSliceSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceSliceSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceSliceSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Devices) > 0 {
    +		for iNdEx := len(m.Devices) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Devices[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x32
    +		}
    +	}
    +	i--
    +	if m.AllNodes {
    +		dAtA[i] = 1
    +	} else {
    +		dAtA[i] = 0
    +	}
    +	i--
    +	dAtA[i] = 0x28
    +	if m.NodeSelector != nil {
    +		{
    +			size, err := m.NodeSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	i -= len(m.NodeName)
    +	copy(dAtA[i:], m.NodeName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.NodeName)))
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Pool.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
    +	}
    +	dAtA[offset] = uint8(v)
    +	return base
    +}
    +func (m *AllocatedDeviceStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Pool)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Device)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Conditions) > 0 {
    +		for _, e := range m.Conditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = m.Data.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.NetworkData != nil {
    +		l = m.NetworkData.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *AllocationResult) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.Devices.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.NodeSelector != nil {
    +		l = m.NodeSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *BasicDevice) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Attributes) > 0 {
    +		for k, v := range m.Attributes {
    +			_ = k
    +			_ = v
    +			l = v.Size()
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	if len(m.Capacity) > 0 {
    +		for k, v := range m.Capacity {
    +			_ = k
    +			_ = v
    +			l = v.Size()
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *CELDeviceSelector) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *Device) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Basic != nil {
    +		l = m.Basic.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceAllocationConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Source)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Requests) > 0 {
    +		for _, s := range m.Requests {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = m.DeviceConfiguration.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceAllocationResult) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Results) > 0 {
    +		for _, e := range m.Results {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Config) > 0 {
    +		for _, e := range m.Config {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceAttribute) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.IntValue != nil {
    +		n += 1 + sovGenerated(uint64(*m.IntValue))
    +	}
    +	if m.BoolValue != nil {
    +		n += 2
    +	}
    +	if m.StringValue != nil {
    +		l = len(*m.StringValue)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.VersionValue != nil {
    +		l = len(*m.VersionValue)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceClaim) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		for _, e := range m.Requests {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Constraints) > 0 {
    +		for _, e := range m.Constraints {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Config) > 0 {
    +		for _, e := range m.Config {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceClaimConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		for _, s := range m.Requests {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = m.DeviceConfiguration.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceClass) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceClassConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.DeviceConfiguration.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceClassList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceClassSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Selectors) > 0 {
    +		for _, e := range m.Selectors {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Config) > 0 {
    +		for _, e := range m.Config {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Opaque != nil {
    +		l = m.Opaque.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceConstraint) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		for _, s := range m.Requests {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.MatchAttribute != nil {
    +		l = len(*m.MatchAttribute)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceRequest) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.DeviceClassName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Selectors) > 0 {
    +		for _, e := range m.Selectors {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.AllocationMode)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	n += 1 + sovGenerated(uint64(m.Count))
    +	if m.AdminAccess != nil {
    +		n += 2
    +	}
    +	return n
    +}
    +
    +func (m *DeviceRequestAllocationResult) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Request)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Pool)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Device)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.AdminAccess != nil {
    +		n += 2
    +	}
    +	return n
    +}
    +
    +func (m *DeviceSelector) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.CEL != nil {
    +		l = m.CEL.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *NetworkDeviceData) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.InterfaceName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.IPs) > 0 {
    +		for _, s := range m.IPs {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.HardwareAddress)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *OpaqueDeviceConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Parameters.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaim) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Status.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimConsumerReference) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.APIGroup)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Resource)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.UID)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceClaimSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.Devices.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Allocation != nil {
    +		l = m.Allocation.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.ReservedFor) > 0 {
    +		for _, e := range m.ReservedFor {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Devices) > 0 {
    +		for _, e := range m.Devices {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceClaimTemplate) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimTemplateList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceClaimTemplateSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourcePool) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	n += 1 + sovGenerated(uint64(m.Generation))
    +	n += 1 + sovGenerated(uint64(m.ResourceSliceCount))
    +	return n
    +}
    +
    +func (m *ResourceSlice) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceSliceList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceSliceSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Pool.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.NodeName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.NodeSelector != nil {
    +		l = m.NodeSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	n += 2
    +	if len(m.Devices) > 0 {
    +		for _, e := range m.Devices {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *AllocatedDeviceStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForConditions := "[]Condition{"
    +	for _, f := range this.Conditions {
    +		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForConditions += "}"
    +	s := strings.Join([]string{`&AllocatedDeviceStatus{`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Pool:` + fmt.Sprintf("%v", this.Pool) + `,`,
    +		`Device:` + fmt.Sprintf("%v", this.Device) + `,`,
    +		`Conditions:` + repeatedStringForConditions + `,`,
    +		`Data:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Data), "RawExtension", "runtime.RawExtension", 1), `&`, ``, 1) + `,`,
    +		`NetworkData:` + strings.Replace(this.NetworkData.String(), "NetworkDeviceData", "NetworkDeviceData", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *AllocationResult) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&AllocationResult{`,
    +		`Devices:` + strings.Replace(strings.Replace(this.Devices.String(), "DeviceAllocationResult", "DeviceAllocationResult", 1), `&`, ``, 1) + `,`,
    +		`NodeSelector:` + strings.Replace(fmt.Sprintf("%v", this.NodeSelector), "NodeSelector", "v11.NodeSelector", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *BasicDevice) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	keysForAttributes := make([]string, 0, len(this.Attributes))
    +	for k := range this.Attributes {
    +		keysForAttributes = append(keysForAttributes, string(k))
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForAttributes)
    +	mapStringForAttributes := "map[QualifiedName]DeviceAttribute{"
    +	for _, k := range keysForAttributes {
    +		mapStringForAttributes += fmt.Sprintf("%v: %v,", k, this.Attributes[QualifiedName(k)])
    +	}
    +	mapStringForAttributes += "}"
    +	keysForCapacity := make([]string, 0, len(this.Capacity))
    +	for k := range this.Capacity {
    +		keysForCapacity = append(keysForCapacity, string(k))
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity)
    +	mapStringForCapacity := "map[QualifiedName]resource.Quantity{"
    +	for _, k := range keysForCapacity {
    +		mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[QualifiedName(k)])
    +	}
    +	mapStringForCapacity += "}"
    +	s := strings.Join([]string{`&BasicDevice{`,
    +		`Attributes:` + mapStringForAttributes + `,`,
    +		`Capacity:` + mapStringForCapacity + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *CELDeviceSelector) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&CELDeviceSelector{`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Device) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Device{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Basic:` + strings.Replace(this.Basic.String(), "BasicDevice", "BasicDevice", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceAllocationConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceAllocationConfiguration{`,
    +		`Source:` + fmt.Sprintf("%v", this.Source) + `,`,
    +		`Requests:` + fmt.Sprintf("%v", this.Requests) + `,`,
    +		`DeviceConfiguration:` + strings.Replace(strings.Replace(this.DeviceConfiguration.String(), "DeviceConfiguration", "DeviceConfiguration", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceAllocationResult) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForResults := "[]DeviceRequestAllocationResult{"
    +	for _, f := range this.Results {
    +		repeatedStringForResults += strings.Replace(strings.Replace(f.String(), "DeviceRequestAllocationResult", "DeviceRequestAllocationResult", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForResults += "}"
    +	repeatedStringForConfig := "[]DeviceAllocationConfiguration{"
    +	for _, f := range this.Config {
    +		repeatedStringForConfig += strings.Replace(strings.Replace(f.String(), "DeviceAllocationConfiguration", "DeviceAllocationConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConfig += "}"
    +	s := strings.Join([]string{`&DeviceAllocationResult{`,
    +		`Results:` + repeatedStringForResults + `,`,
    +		`Config:` + repeatedStringForConfig + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceAttribute) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceAttribute{`,
    +		`IntValue:` + valueToStringGenerated(this.IntValue) + `,`,
    +		`BoolValue:` + valueToStringGenerated(this.BoolValue) + `,`,
    +		`StringValue:` + valueToStringGenerated(this.StringValue) + `,`,
    +		`VersionValue:` + valueToStringGenerated(this.VersionValue) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClaim) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForRequests := "[]DeviceRequest{"
    +	for _, f := range this.Requests {
    +		repeatedStringForRequests += strings.Replace(strings.Replace(f.String(), "DeviceRequest", "DeviceRequest", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForRequests += "}"
    +	repeatedStringForConstraints := "[]DeviceConstraint{"
    +	for _, f := range this.Constraints {
    +		repeatedStringForConstraints += strings.Replace(strings.Replace(f.String(), "DeviceConstraint", "DeviceConstraint", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConstraints += "}"
    +	repeatedStringForConfig := "[]DeviceClaimConfiguration{"
    +	for _, f := range this.Config {
    +		repeatedStringForConfig += strings.Replace(strings.Replace(f.String(), "DeviceClaimConfiguration", "DeviceClaimConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConfig += "}"
    +	s := strings.Join([]string{`&DeviceClaim{`,
    +		`Requests:` + repeatedStringForRequests + `,`,
    +		`Constraints:` + repeatedStringForConstraints + `,`,
    +		`Config:` + repeatedStringForConfig + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClaimConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceClaimConfiguration{`,
    +		`Requests:` + fmt.Sprintf("%v", this.Requests) + `,`,
    +		`DeviceConfiguration:` + strings.Replace(strings.Replace(this.DeviceConfiguration.String(), "DeviceConfiguration", "DeviceConfiguration", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClass) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceClass{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "DeviceClassSpec", "DeviceClassSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClassConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceClassConfiguration{`,
    +		`DeviceConfiguration:` + strings.Replace(strings.Replace(this.DeviceConfiguration.String(), "DeviceConfiguration", "DeviceConfiguration", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClassList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]DeviceClass{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "DeviceClass", "DeviceClass", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&DeviceClassList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClassSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForSelectors := "[]DeviceSelector{"
    +	for _, f := range this.Selectors {
    +		repeatedStringForSelectors += strings.Replace(strings.Replace(f.String(), "DeviceSelector", "DeviceSelector", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSelectors += "}"
    +	repeatedStringForConfig := "[]DeviceClassConfiguration{"
    +	for _, f := range this.Config {
    +		repeatedStringForConfig += strings.Replace(strings.Replace(f.String(), "DeviceClassConfiguration", "DeviceClassConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConfig += "}"
    +	s := strings.Join([]string{`&DeviceClassSpec{`,
    +		`Selectors:` + repeatedStringForSelectors + `,`,
    +		`Config:` + repeatedStringForConfig + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceConfiguration{`,
    +		`Opaque:` + strings.Replace(this.Opaque.String(), "OpaqueDeviceConfiguration", "OpaqueDeviceConfiguration", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceConstraint) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceConstraint{`,
    +		`Requests:` + fmt.Sprintf("%v", this.Requests) + `,`,
    +		`MatchAttribute:` + valueToStringGenerated(this.MatchAttribute) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceRequest) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForSelectors := "[]DeviceSelector{"
    +	for _, f := range this.Selectors {
    +		repeatedStringForSelectors += strings.Replace(strings.Replace(f.String(), "DeviceSelector", "DeviceSelector", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSelectors += "}"
    +	s := strings.Join([]string{`&DeviceRequest{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`DeviceClassName:` + fmt.Sprintf("%v", this.DeviceClassName) + `,`,
    +		`Selectors:` + repeatedStringForSelectors + `,`,
    +		`AllocationMode:` + fmt.Sprintf("%v", this.AllocationMode) + `,`,
    +		`Count:` + fmt.Sprintf("%v", this.Count) + `,`,
    +		`AdminAccess:` + valueToStringGenerated(this.AdminAccess) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceRequestAllocationResult) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceRequestAllocationResult{`,
    +		`Request:` + fmt.Sprintf("%v", this.Request) + `,`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Pool:` + fmt.Sprintf("%v", this.Pool) + `,`,
    +		`Device:` + fmt.Sprintf("%v", this.Device) + `,`,
    +		`AdminAccess:` + valueToStringGenerated(this.AdminAccess) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceSelector) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceSelector{`,
    +		`CEL:` + strings.Replace(this.CEL.String(), "CELDeviceSelector", "CELDeviceSelector", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *NetworkDeviceData) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&NetworkDeviceData{`,
    +		`InterfaceName:` + fmt.Sprintf("%v", this.InterfaceName) + `,`,
    +		`IPs:` + fmt.Sprintf("%v", this.IPs) + `,`,
    +		`HardwareAddress:` + fmt.Sprintf("%v", this.HardwareAddress) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *OpaqueDeviceConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&OpaqueDeviceConfiguration{`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Parameters:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Parameters), "RawExtension", "runtime.RawExtension", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaim) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaim{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimSpec", "ResourceClaimSpec", 1), `&`, ``, 1) + `,`,
    +		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ResourceClaimStatus", "ResourceClaimStatus", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimConsumerReference) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimConsumerReference{`,
    +		`APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`,
    +		`Resource:` + fmt.Sprintf("%v", this.Resource) + `,`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`UID:` + fmt.Sprintf("%v", this.UID) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ResourceClaim{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceClaim", "ResourceClaim", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ResourceClaimList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimSpec{`,
    +		`Devices:` + strings.Replace(strings.Replace(this.Devices.String(), "DeviceClaim", "DeviceClaim", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForReservedFor := "[]ResourceClaimConsumerReference{"
    +	for _, f := range this.ReservedFor {
    +		repeatedStringForReservedFor += strings.Replace(strings.Replace(f.String(), "ResourceClaimConsumerReference", "ResourceClaimConsumerReference", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForReservedFor += "}"
    +	repeatedStringForDevices := "[]AllocatedDeviceStatus{"
    +	for _, f := range this.Devices {
    +		repeatedStringForDevices += strings.Replace(strings.Replace(f.String(), "AllocatedDeviceStatus", "AllocatedDeviceStatus", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForDevices += "}"
    +	s := strings.Join([]string{`&ResourceClaimStatus{`,
    +		`Allocation:` + strings.Replace(this.Allocation.String(), "AllocationResult", "AllocationResult", 1) + `,`,
    +		`ReservedFor:` + repeatedStringForReservedFor + `,`,
    +		`Devices:` + repeatedStringForDevices + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimTemplate) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimTemplate{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimTemplateSpec", "ResourceClaimTemplateSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimTemplateList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ResourceClaimTemplate{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceClaimTemplate", "ResourceClaimTemplate", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ResourceClaimTemplateList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimTemplateSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimTemplateSpec{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimSpec", "ResourceClaimSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourcePool) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourcePool{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Generation:` + fmt.Sprintf("%v", this.Generation) + `,`,
    +		`ResourceSliceCount:` + fmt.Sprintf("%v", this.ResourceSliceCount) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceSlice) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceSlice{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceSliceSpec", "ResourceSliceSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceSliceList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ResourceSlice{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceSlice", "ResourceSlice", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ResourceSliceList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceSliceSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForDevices := "[]Device{"
    +	for _, f := range this.Devices {
    +		repeatedStringForDevices += strings.Replace(strings.Replace(f.String(), "Device", "Device", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForDevices += "}"
    +	s := strings.Join([]string{`&ResourceSliceSpec{`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Pool:` + strings.Replace(strings.Replace(this.Pool.String(), "ResourcePool", "ResourcePool", 1), `&`, ``, 1) + `,`,
    +		`NodeName:` + fmt.Sprintf("%v", this.NodeName) + `,`,
    +		`NodeSelector:` + strings.Replace(fmt.Sprintf("%v", this.NodeSelector), "NodeSelector", "v11.NodeSelector", 1) + `,`,
    +		`AllNodes:` + fmt.Sprintf("%v", this.AllNodes) + `,`,
    +		`Devices:` + repeatedStringForDevices + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *AllocatedDeviceStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AllocatedDeviceStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AllocatedDeviceStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Pool = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Device", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Device = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Conditions = append(m.Conditions, v1.Condition{})
    +			if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NetworkData", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NetworkData == nil {
    +				m.NetworkData = &NetworkDeviceData{}
    +			}
    +			if err := m.NetworkData.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *AllocationResult) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AllocationResult: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AllocationResult: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Devices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NodeSelector == nil {
    +				m.NodeSelector = &v11.NodeSelector{}
    +			}
    +			if err := m.NodeSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *BasicDevice) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: BasicDevice: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: BasicDevice: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Attributes == nil {
    +				m.Attributes = make(map[QualifiedName]DeviceAttribute)
    +			}
    +			var mapkey QualifiedName
    +			mapvalue := &DeviceAttribute{}
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = QualifiedName(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var mapmsglen int
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						mapmsglen |= int(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					if mapmsglen < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postmsgIndex := iNdEx + mapmsglen
    +					if postmsgIndex < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postmsgIndex > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = &DeviceAttribute{}
    +					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    +						return err
    +					}
    +					iNdEx = postmsgIndex
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Attributes[QualifiedName(mapkey)] = *mapvalue
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Capacity == nil {
    +				m.Capacity = make(map[QualifiedName]resource.Quantity)
    +			}
    +			var mapkey QualifiedName
    +			mapvalue := &resource.Quantity{}
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = QualifiedName(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var mapmsglen int
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						mapmsglen |= int(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					if mapmsglen < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postmsgIndex := iNdEx + mapmsglen
    +					if postmsgIndex < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postmsgIndex > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = &resource.Quantity{}
    +					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    +						return err
    +					}
    +					iNdEx = postmsgIndex
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Capacity[QualifiedName(mapkey)] = *mapvalue
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *CELDeviceSelector) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: CELDeviceSelector: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: CELDeviceSelector: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *Device) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: Device: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: Device: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Basic", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Basic == nil {
    +				m.Basic = &BasicDevice{}
    +			}
    +			if err := m.Basic.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceAllocationConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceAllocationConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceAllocationConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Source = AllocationConfigSource(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceConfiguration", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.DeviceConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceAllocationResult) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceAllocationResult: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceAllocationResult: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Results = append(m.Results, DeviceRequestAllocationResult{})
    +			if err := m.Results[len(m.Results)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Config = append(m.Config, DeviceAllocationConfiguration{})
    +			if err := m.Config[len(m.Config)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceAttribute) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceAttribute: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceAttribute: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field IntValue", wireType)
    +			}
    +			var v int64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.IntValue = &v
    +		case 3:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field BoolValue", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.BoolValue = &b
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field StringValue", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.StringValue = &s
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field VersionValue", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.VersionValue = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClaim) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClaim: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClaim: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, DeviceRequest{})
    +			if err := m.Requests[len(m.Requests)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Constraints", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Constraints = append(m.Constraints, DeviceConstraint{})
    +			if err := m.Constraints[len(m.Constraints)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Config = append(m.Config, DeviceClaimConfiguration{})
    +			if err := m.Config[len(m.Config)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClaimConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClaimConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClaimConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceConfiguration", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.DeviceConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClass) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClass: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClass: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClassConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClassConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClassConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceConfiguration", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.DeviceConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClassList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClassList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClassList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, DeviceClass{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClassSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClassSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClassSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Selectors", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Selectors = append(m.Selectors, DeviceSelector{})
    +			if err := m.Selectors[len(m.Selectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Config = append(m.Config, DeviceClassConfiguration{})
    +			if err := m.Config[len(m.Config)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Opaque", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Opaque == nil {
    +				m.Opaque = &OpaqueDeviceConfiguration{}
    +			}
    +			if err := m.Opaque.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceConstraint) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceConstraint: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceConstraint: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchAttribute", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := FullyQualifiedName(dAtA[iNdEx:postIndex])
    +			m.MatchAttribute = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceRequest) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceRequest: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceRequest: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceClassName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.DeviceClassName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Selectors", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Selectors = append(m.Selectors, DeviceSelector{})
    +			if err := m.Selectors[len(m.Selectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllocationMode", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.AllocationMode = DeviceAllocationMode(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Count", wireType)
    +			}
    +			m.Count = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.Count |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 6:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AdminAccess", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.AdminAccess = &b
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceRequestAllocationResult) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceRequestAllocationResult: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceRequestAllocationResult: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Request = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Pool = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Device", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Device = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AdminAccess", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.AdminAccess = &b
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceSelector) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceSelector: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceSelector: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field CEL", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.CEL == nil {
    +				m.CEL = &CELDeviceSelector{}
    +			}
    +			if err := m.CEL.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *NetworkDeviceData) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: NetworkDeviceData: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: NetworkDeviceData: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field InterfaceName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.InterfaceName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field IPs", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.IPs = append(m.IPs, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field HardwareAddress", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.HardwareAddress = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *OpaqueDeviceConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: OpaqueDeviceConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: OpaqueDeviceConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Parameters.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaim) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaim: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaim: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimConsumerReference) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimConsumerReference: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimConsumerReference: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.APIGroup = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Resource = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.UID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, ResourceClaim{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Devices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Allocation", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Allocation == nil {
    +				m.Allocation = &AllocationResult{}
    +			}
    +			if err := m.Allocation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ReservedFor", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ReservedFor = append(m.ReservedFor, ResourceClaimConsumerReference{})
    +			if err := m.ReservedFor[len(m.ReservedFor)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Devices = append(m.Devices, AllocatedDeviceStatus{})
    +			if err := m.Devices[len(m.Devices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimTemplate) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimTemplate: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimTemplate: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimTemplateList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, ResourceClaimTemplate{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimTemplateSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourcePool) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourcePool: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourcePool: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Generation", wireType)
    +			}
    +			m.Generation = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.Generation |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 3:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceSliceCount", wireType)
    +			}
    +			m.ResourceSliceCount = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.ResourceSliceCount |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceSlice) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceSlice: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceSlice: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceSliceList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceSliceList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceSliceList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, ResourceSlice{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceSliceSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceSliceSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceSliceSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Pool.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.NodeName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NodeSelector == nil {
    +				m.NodeSelector = &v11.NodeSelector{}
    +			}
    +			if err := m.NodeSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllNodes", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.AllNodes = bool(v != 0)
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Devices = append(m.Devices, Device{})
    +			if err := m.Devices[len(m.Devices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func skipGenerated(dAtA []byte) (n int, err error) {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	depth := 0
    +	for iNdEx < l {
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return 0, ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return 0, io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= (uint64(b) & 0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		wireType := int(wire & 0x7)
    +		switch wireType {
    +		case 0:
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				iNdEx++
    +				if dAtA[iNdEx-1] < 0x80 {
    +					break
    +				}
    +			}
    +		case 1:
    +			iNdEx += 8
    +		case 2:
    +			var length int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				length |= (int(b) & 0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if length < 0 {
    +				return 0, ErrInvalidLengthGenerated
    +			}
    +			iNdEx += length
    +		case 3:
    +			depth++
    +		case 4:
    +			if depth == 0 {
    +				return 0, ErrUnexpectedEndOfGroupGenerated
    +			}
    +			depth--
    +		case 5:
    +			iNdEx += 4
    +		default:
    +			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
    +		}
    +		if iNdEx < 0 {
    +			return 0, ErrInvalidLengthGenerated
    +		}
    +		if depth == 0 {
    +			return iNdEx, nil
    +		}
    +	}
    +	return 0, io.ErrUnexpectedEOF
    +}
    +
    +var (
    +	ErrInvalidLengthGenerated        = fmt.Errorf("proto: negative length found during unmarshaling")
    +	ErrIntOverflowGenerated          = fmt.Errorf("proto: integer overflow")
    +	ErrUnexpectedEndOfGroupGenerated = fmt.Errorf("proto: unexpected end of group")
    +)
    diff --git a/vendor/k8s.io/api/resource/v1alpha3/generated.proto b/vendor/k8s.io/api/resource/v1alpha3/generated.proto
    new file mode 100644
    index 000000000000..13be7cbd8ea6
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1alpha3/generated.proto
    @@ -0,0 +1,884 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +
    +// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    +
    +syntax = "proto2";
    +
    +package k8s.io.api.resource.v1alpha3;
    +
    +import "k8s.io/api/core/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
    +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    +
    +// Package-wide variables from generator "generated".
    +option go_package = "k8s.io/api/resource/v1alpha3";
    +
    +// AllocatedDeviceStatus contains the status of an allocated device, if the
    +// driver chooses to report it. This may include driver-specific information.
    +message AllocatedDeviceStatus {
    +  // Driver specifies the name of the DRA driver whose kubelet
    +  // plugin should be invoked to process the allocation once the claim is
    +  // needed on a node.
    +  //
    +  // Must be a DNS subdomain and should end with a DNS domain owned by the
    +  // vendor of the driver.
    +  //
    +  // +required
    +  optional string driver = 1;
    +
    +  // This name together with the driver name and the device name field
    +  // identify which device was allocated (`//`).
    +  //
    +  // Must not be longer than 253 characters and may contain one or more
    +  // DNS sub-domains separated by slashes.
    +  //
    +  // +required
    +  optional string pool = 2;
    +
    +  // Device references one device instance via its name in the driver's
    +  // resource pool. It must be a DNS label.
    +  //
    +  // +required
    +  optional string device = 3;
    +
    +  // Conditions contains the latest observation of the device's state.
    +  // If the device has been configured according to the class and claim
    +  // config references, the `Ready` condition should be True.
    +  //
    +  // +optional
    +  // +listType=map
    +  // +listMapKey=type
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 4;
    +
    +  // Data contains arbitrary driver-specific data.
    +  //
    +  // The length of the raw data must be smaller or equal to 10 Ki.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension data = 5;
    +
    +  // NetworkData contains network-related information specific to the device.
    +  //
    +  // +optional
    +  optional NetworkDeviceData networkData = 6;
    +}
    +
    +// AllocationResult contains attributes of an allocated resource.
    +message AllocationResult {
    +  // Devices is the result of allocating devices.
    +  //
    +  // +optional
    +  optional DeviceAllocationResult devices = 1;
    +
    +  // NodeSelector defines where the allocated resources are available. If
    +  // unset, they are available everywhere.
    +  //
    +  // +optional
    +  optional .k8s.io.api.core.v1.NodeSelector nodeSelector = 3;
    +}
    +
    +// BasicDevice defines one device instance.
    +message BasicDevice {
    +  // Attributes defines the set of attributes for this device.
    +  // The name of each attribute must be unique in that set.
    +  //
    +  // The maximum number of attributes and capacities combined is 32.
    +  //
    +  // +optional
    +  map attributes = 1;
    +
    +  // Capacity defines the set of capacities for this device.
    +  // The name of each capacity must be unique in that set.
    +  //
    +  // The maximum number of attributes and capacities combined is 32.
    +  //
    +  // +optional
    +  map capacity = 2;
    +}
    +
    +// CELDeviceSelector contains a CEL expression for selecting a device.
    +message CELDeviceSelector {
    +  // Expression is a CEL expression which evaluates a single device. It
    +  // must evaluate to true when the device under consideration satisfies
    +  // the desired criteria, and false when it does not. Any other result
    +  // is an error and causes allocation of devices to abort.
    +  //
    +  // The expression's input is an object named "device", which carries
    +  // the following properties:
    +  //  - driver (string): the name of the driver which defines this device.
    +  //  - attributes (map[string]object): the device's attributes, grouped by prefix
    +  //    (e.g. device.attributes["dra.example.com"] evaluates to an object with all
    +  //    of the attributes which were prefixed by "dra.example.com".
    +  //  - capacity (map[string]object): the device's capacities, grouped by prefix.
    +  //
    +  // Example: Consider a device with driver="dra.example.com", which exposes
    +  // two attributes named "model" and "ext.example.com/family" and which
    +  // exposes one capacity named "modules". This input to this expression
    +  // would have the following fields:
    +  //
    +  //     device.driver
    +  //     device.attributes["dra.example.com"].model
    +  //     device.attributes["ext.example.com"].family
    +  //     device.capacity["dra.example.com"].modules
    +  //
    +  // The device.driver field can be used to check for a specific driver,
    +  // either as a high-level precondition (i.e. you only want to consider
    +  // devices from this driver) or as part of a multi-clause expression
    +  // that is meant to consider devices from different drivers.
    +  //
    +  // The value type of each attribute is defined by the device
    +  // definition, and users who write these expressions must consult the
    +  // documentation for their specific drivers. The value type of each
    +  // capacity is Quantity.
    +  //
    +  // If an unknown prefix is used as a lookup in either device.attributes
    +  // or device.capacity, an empty map will be returned. Any reference to
    +  // an unknown field will cause an evaluation error and allocation to
    +  // abort.
    +  //
    +  // A robust expression should check for the existence of attributes
    +  // before referencing them.
    +  //
    +  // For ease of use, the cel.bind() function is enabled, and can be used
    +  // to simplify expressions that access multiple attributes with the
    +  // same domain. For example:
    +  //
    +  //     cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
    +  //
    +  // The length of the expression must be smaller or equal to 10 Ki. The
    +  // cost of evaluating it is also limited based on the estimated number
    +  // of logical steps.
    +  //
    +  // +required
    +  optional string expression = 1;
    +}
    +
    +// Device represents one individual hardware instance that can be selected based
    +// on its attributes. Besides the name, exactly one field must be set.
    +message Device {
    +  // Name is unique identifier among all devices managed by
    +  // the driver in the pool. It must be a DNS label.
    +  //
    +  // +required
    +  optional string name = 1;
    +
    +  // Basic defines one device instance.
    +  //
    +  // +optional
    +  // +oneOf=deviceType
    +  optional BasicDevice basic = 2;
    +}
    +
    +// DeviceAllocationConfiguration gets embedded in an AllocationResult.
    +message DeviceAllocationConfiguration {
    +  // Source records whether the configuration comes from a class and thus
    +  // is not something that a normal user would have been able to set
    +  // or from a claim.
    +  //
    +  // +required
    +  optional string source = 1;
    +
    +  // Requests lists the names of requests where the configuration applies.
    +  // If empty, its applies to all requests.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated string requests = 2;
    +
    +  optional DeviceConfiguration deviceConfiguration = 3;
    +}
    +
    +// DeviceAllocationResult is the result of allocating devices.
    +message DeviceAllocationResult {
    +  // Results lists all allocated devices.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceRequestAllocationResult results = 1;
    +
    +  // This field is a combination of all the claim and class configuration parameters.
    +  // Drivers can distinguish between those based on a flag.
    +  //
    +  // This includes configuration parameters for drivers which have no allocated
    +  // devices in the result because it is up to the drivers which configuration
    +  // parameters they support. They can silently ignore unknown configuration
    +  // parameters.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceAllocationConfiguration config = 2;
    +}
    +
    +// DeviceAttribute must have exactly one field set.
    +message DeviceAttribute {
    +  // IntValue is a number.
    +  //
    +  // +optional
    +  // +oneOf=ValueType
    +  optional int64 int = 2;
    +
    +  // BoolValue is a true/false value.
    +  //
    +  // +optional
    +  // +oneOf=ValueType
    +  optional bool bool = 3;
    +
    +  // StringValue is a string. Must not be longer than 64 characters.
    +  //
    +  // +optional
    +  // +oneOf=ValueType
    +  optional string string = 4;
    +
    +  // VersionValue is a semantic version according to semver.org spec 2.0.0.
    +  // Must not be longer than 64 characters.
    +  //
    +  // +optional
    +  // +oneOf=ValueType
    +  optional string version = 5;
    +}
    +
    +// DeviceClaim defines how to request devices with a ResourceClaim.
    +message DeviceClaim {
    +  // Requests represent individual requests for distinct devices which
    +  // must all be satisfied. If empty, nothing needs to be allocated.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceRequest requests = 1;
    +
    +  // These constraints must be satisfied by the set of devices that get
    +  // allocated for the claim.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceConstraint constraints = 2;
    +
    +  // This field holds configuration for multiple potential drivers which
    +  // could satisfy requests in this claim. It is ignored while allocating
    +  // the claim.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceClaimConfiguration config = 3;
    +}
    +
    +// DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.
    +message DeviceClaimConfiguration {
    +  // Requests lists the names of requests where the configuration applies.
    +  // If empty, it applies to all requests.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated string requests = 1;
    +
    +  optional DeviceConfiguration deviceConfiguration = 2;
    +}
    +
    +// DeviceClass is a vendor- or admin-provided resource that contains
    +// device configuration and selectors. It can be referenced in
    +// the device requests of a claim to apply these presets.
    +// Cluster scoped.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +message DeviceClass {
    +  // Standard object metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Spec defines what can be allocated and how to configure it.
    +  //
    +  // This is mutable. Consumers have to be prepared for classes changing
    +  // at any time, either because they get updated or replaced. Claim
    +  // allocations are done once based on whatever was set in classes at
    +  // the time of allocation.
    +  //
    +  // Changing the spec automatically increments the metadata.generation number.
    +  optional DeviceClassSpec spec = 2;
    +}
    +
    +// DeviceClassConfiguration is used in DeviceClass.
    +message DeviceClassConfiguration {
    +  optional DeviceConfiguration deviceConfiguration = 1;
    +}
    +
    +// DeviceClassList is a collection of classes.
    +message DeviceClassList {
    +  // Standard list metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // Items is the list of resource classes.
    +  repeated DeviceClass items = 2;
    +}
    +
    +// DeviceClassSpec is used in a [DeviceClass] to define what can be allocated
    +// and how to configure it.
    +message DeviceClassSpec {
    +  // Each selector must be satisfied by a device which is claimed via this class.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceSelector selectors = 1;
    +
    +  // Config defines configuration parameters that apply to each device that is claimed via this class.
    +  // Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor
    +  // configuration applies to exactly one driver.
    +  //
    +  // They are passed to the driver, but are not considered while allocating the claim.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceClassConfiguration config = 2;
    +}
    +
    +// DeviceConfiguration must have exactly one field set. It gets embedded
    +// inline in some other structs which have other fields, so field names must
    +// not conflict with those.
    +message DeviceConfiguration {
    +  // Opaque provides driver-specific configuration parameters.
    +  //
    +  // +optional
    +  // +oneOf=ConfigurationType
    +  optional OpaqueDeviceConfiguration opaque = 1;
    +}
    +
    +// DeviceConstraint must have exactly one field set besides Requests.
    +message DeviceConstraint {
    +  // Requests is a list of the one or more requests in this claim which
    +  // must co-satisfy this constraint. If a request is fulfilled by
    +  // multiple devices, then all of the devices must satisfy the
    +  // constraint. If this is not specified, this constraint applies to all
    +  // requests in this claim.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated string requests = 1;
    +
    +  // MatchAttribute requires that all devices in question have this
    +  // attribute and that its type and value are the same across those
    +  // devices.
    +  //
    +  // For example, if you specified "dra.example.com/numa" (a hypothetical example!),
    +  // then only devices in the same NUMA node will be chosen. A device which
    +  // does not have that attribute will not be chosen. All devices should
    +  // use a value of the same type for this attribute because that is part of
    +  // its specification, but if one device doesn't, then it also will not be
    +  // chosen.
    +  //
    +  // Must include the domain qualifier.
    +  //
    +  // +optional
    +  // +oneOf=ConstraintType
    +  optional string matchAttribute = 2;
    +}
    +
    +// DeviceRequest is a request for devices required for a claim.
    +// This is typically a request for a single resource like a device, but can
    +// also ask for several identical devices.
    +//
    +// A DeviceClassName is currently required. Clients must check that it is
    +// indeed set. It's absence indicates that something changed in a way that
    +// is not supported by the client yet, in which case it must refuse to
    +// handle the request.
    +message DeviceRequest {
    +  // Name can be used to reference this request in a pod.spec.containers[].resources.claims
    +  // entry and in a constraint of the claim.
    +  //
    +  // Must be a DNS label.
    +  //
    +  // +required
    +  optional string name = 1;
    +
    +  // DeviceClassName references a specific DeviceClass, which can define
    +  // additional configuration and selectors to be inherited by this
    +  // request.
    +  //
    +  // A class is required. Which classes are available depends on the cluster.
    +  //
    +  // Administrators may use this to restrict which devices may get
    +  // requested by only installing classes with selectors for permitted
    +  // devices. If users are free to request anything without restrictions,
    +  // then administrators can create an empty DeviceClass for users
    +  // to reference.
    +  //
    +  // +required
    +  optional string deviceClassName = 2;
    +
    +  // Selectors define criteria which must be satisfied by a specific
    +  // device in order for that device to be considered for this
    +  // request. All selectors must be satisfied for a device to be
    +  // considered.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceSelector selectors = 3;
    +
    +  // AllocationMode and its related fields define how devices are allocated
    +  // to satisfy this request. Supported values are:
    +  //
    +  // - ExactCount: This request is for a specific number of devices.
    +  //   This is the default. The exact number is provided in the
    +  //   count field.
    +  //
    +  // - All: This request is for all of the matching devices in a pool.
    +  //   Allocation will fail if some devices are already allocated,
    +  //   unless adminAccess is requested.
    +  //
    +  // If AlloctionMode is not specified, the default mode is ExactCount. If
    +  // the mode is ExactCount and count is not specified, the default count is
    +  // one. Any other requests must specify this field.
    +  //
    +  // More modes may get added in the future. Clients must refuse to handle
    +  // requests with unknown modes.
    +  //
    +  // +optional
    +  optional string allocationMode = 4;
    +
    +  // Count is used only when the count mode is "ExactCount". Must be greater than zero.
    +  // If AllocationMode is ExactCount and this field is not specified, the default is one.
    +  //
    +  // +optional
    +  // +oneOf=AllocationMode
    +  optional int64 count = 5;
    +
    +  // AdminAccess indicates that this is a claim for administrative access
    +  // to the device(s). Claims with AdminAccess are expected to be used for
    +  // monitoring or other management services for a device.  They ignore
    +  // all ordinary claims to the device with respect to access modes and
    +  // any resource allocations.
    +  //
    +  // This is an alpha field and requires enabling the DRAAdminAccess
    +  // feature gate. Admin access is disabled if this field is unset or
    +  // set to false, otherwise it is enabled.
    +  //
    +  // +optional
    +  // +featureGate=DRAAdminAccess
    +  optional bool adminAccess = 6;
    +}
    +
    +// DeviceRequestAllocationResult contains the allocation result for one request.
    +message DeviceRequestAllocationResult {
    +  // Request is the name of the request in the claim which caused this
    +  // device to be allocated. Multiple devices may have been allocated
    +  // per request.
    +  //
    +  // +required
    +  optional string request = 1;
    +
    +  // Driver specifies the name of the DRA driver whose kubelet
    +  // plugin should be invoked to process the allocation once the claim is
    +  // needed on a node.
    +  //
    +  // Must be a DNS subdomain and should end with a DNS domain owned by the
    +  // vendor of the driver.
    +  //
    +  // +required
    +  optional string driver = 2;
    +
    +  // This name together with the driver name and the device name field
    +  // identify which device was allocated (`//`).
    +  //
    +  // Must not be longer than 253 characters and may contain one or more
    +  // DNS sub-domains separated by slashes.
    +  //
    +  // +required
    +  optional string pool = 3;
    +
    +  // Device references one device instance via its name in the driver's
    +  // resource pool. It must be a DNS label.
    +  //
    +  // +required
    +  optional string device = 4;
    +
    +  // AdminAccess indicates that this device was allocated for
    +  // administrative access. See the corresponding request field
    +  // for a definition of mode.
    +  //
    +  // This is an alpha field and requires enabling the DRAAdminAccess
    +  // feature gate. Admin access is disabled if this field is unset or
    +  // set to false, otherwise it is enabled.
    +  //
    +  // +optional
    +  // +featureGate=DRAAdminAccess
    +  optional bool adminAccess = 5;
    +}
    +
    +// DeviceSelector must have exactly one field set.
    +message DeviceSelector {
    +  // CEL contains a CEL expression for selecting a device.
    +  //
    +  // +optional
    +  // +oneOf=SelectorType
    +  optional CELDeviceSelector cel = 1;
    +}
    +
    +// NetworkDeviceData provides network-related details for the allocated device.
    +// This information may be filled by drivers or other components to configure
    +// or identify the device within a network context.
    +message NetworkDeviceData {
    +  // InterfaceName specifies the name of the network interface associated with
    +  // the allocated device. This might be the name of a physical or virtual
    +  // network interface being configured in the pod.
    +  //
    +  // Must not be longer than 256 characters.
    +  //
    +  // +optional
    +  optional string interfaceName = 1;
    +
    +  // IPs lists the network addresses assigned to the device's network interface.
    +  // This can include both IPv4 and IPv6 addresses.
    +  // The IPs are in the CIDR notation, which includes both the address and the
    +  // associated subnet mask.
    +  // e.g.: "192.0.2.5/24" for IPv4 and "2001:db8::5/64" for IPv6.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated string ips = 2;
    +
    +  // HardwareAddress represents the hardware address (e.g. MAC Address) of the device's network interface.
    +  //
    +  // Must not be longer than 128 characters.
    +  //
    +  // +optional
    +  optional string hardwareAddress = 3;
    +}
    +
    +// OpaqueDeviceConfiguration contains configuration parameters for a driver
    +// in a format defined by the driver vendor.
    +message OpaqueDeviceConfiguration {
    +  // Driver is used to determine which kubelet plugin needs
    +  // to be passed these configuration parameters.
    +  //
    +  // An admission policy provided by the driver developer could use this
    +  // to decide whether it needs to validate them.
    +  //
    +  // Must be a DNS subdomain and should end with a DNS domain owned by the
    +  // vendor of the driver.
    +  //
    +  // +required
    +  optional string driver = 1;
    +
    +  // Parameters can contain arbitrary data. It is the responsibility of
    +  // the driver developer to handle validation and versioning. Typically this
    +  // includes self-identification and a version ("kind" + "apiVersion" for
    +  // Kubernetes types), with conversion between different versions.
    +  //
    +  // The length of the raw data must be smaller or equal to 10 Ki.
    +  //
    +  // +required
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension parameters = 2;
    +}
    +
    +// ResourceClaim describes a request for access to resources in the cluster,
    +// for use by workloads. For example, if a workload needs an accelerator device
    +// with specific properties, this is how that request is expressed. The status
    +// stanza tracks whether this claim has been satisfied and what specific
    +// resources have been allocated.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +message ResourceClaim {
    +  // Standard object metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Spec describes what is being requested and how to configure it.
    +  // The spec is immutable.
    +  optional ResourceClaimSpec spec = 2;
    +
    +  // Status describes whether the claim is ready to use and what has been allocated.
    +  // +optional
    +  optional ResourceClaimStatus status = 3;
    +}
    +
    +// ResourceClaimConsumerReference contains enough information to let you
    +// locate the consumer of a ResourceClaim. The user must be a resource in the same
    +// namespace as the ResourceClaim.
    +message ResourceClaimConsumerReference {
    +  // APIGroup is the group for the resource being referenced. It is
    +  // empty for the core API. This matches the group in the APIVersion
    +  // that is used when creating the resources.
    +  // +optional
    +  optional string apiGroup = 1;
    +
    +  // Resource is the type of resource being referenced, for example "pods".
    +  // +required
    +  optional string resource = 3;
    +
    +  // Name is the name of resource being referenced.
    +  // +required
    +  optional string name = 4;
    +
    +  // UID identifies exactly one incarnation of the resource.
    +  // +required
    +  optional string uid = 5;
    +}
    +
    +// ResourceClaimList is a collection of claims.
    +message ResourceClaimList {
    +  // Standard list metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // Items is the list of resource claims.
    +  repeated ResourceClaim items = 2;
    +}
    +
    +// ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.
    +message ResourceClaimSpec {
    +  // Devices defines how to request devices.
    +  //
    +  // +optional
    +  optional DeviceClaim devices = 1;
    +}
    +
    +// ResourceClaimStatus tracks whether the resource has been allocated and what
    +// the result of that was.
    +message ResourceClaimStatus {
    +  // Allocation is set once the claim has been allocated successfully.
    +  //
    +  // +optional
    +  optional AllocationResult allocation = 1;
    +
    +  // ReservedFor indicates which entities are currently allowed to use
    +  // the claim. A Pod which references a ResourceClaim which is not
    +  // reserved for that Pod will not be started. A claim that is in
    +  // use or might be in use because it has been reserved must not get
    +  // deallocated.
    +  //
    +  // In a cluster with multiple scheduler instances, two pods might get
    +  // scheduled concurrently by different schedulers. When they reference
    +  // the same ResourceClaim which already has reached its maximum number
    +  // of consumers, only one pod can be scheduled.
    +  //
    +  // Both schedulers try to add their pod to the claim.status.reservedFor
    +  // field, but only the update that reaches the API server first gets
    +  // stored. The other one fails with an error and the scheduler
    +  // which issued it knows that it must put the pod back into the queue,
    +  // waiting for the ResourceClaim to become usable again.
    +  //
    +  // There can be at most 32 such reservations. This may get increased in
    +  // the future, but not reduced.
    +  //
    +  // +optional
    +  // +listType=map
    +  // +listMapKey=uid
    +  // +patchStrategy=merge
    +  // +patchMergeKey=uid
    +  repeated ResourceClaimConsumerReference reservedFor = 2;
    +
    +  // Devices contains the status of each device allocated for this
    +  // claim, as reported by the driver. This can include driver-specific
    +  // information. Entries are owned by their respective drivers.
    +  //
    +  // +optional
    +  // +listType=map
    +  // +listMapKey=driver
    +  // +listMapKey=device
    +  // +listMapKey=pool
    +  // +featureGate=DRAResourceClaimDeviceStatus
    +  repeated AllocatedDeviceStatus devices = 4;
    +}
    +
    +// ResourceClaimTemplate is used to produce ResourceClaim objects.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +message ResourceClaimTemplate {
    +  // Standard object metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Describes the ResourceClaim that is to be generated.
    +  //
    +  // This field is immutable. A ResourceClaim will get created by the
    +  // control plane for a Pod when needed and then not get updated
    +  // anymore.
    +  optional ResourceClaimTemplateSpec spec = 2;
    +}
    +
    +// ResourceClaimTemplateList is a collection of claim templates.
    +message ResourceClaimTemplateList {
    +  // Standard list metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // Items is the list of resource claim templates.
    +  repeated ResourceClaimTemplate items = 2;
    +}
    +
    +// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
    +message ResourceClaimTemplateSpec {
    +  // ObjectMeta may contain labels and annotations that will be copied into the ResourceClaim
    +  // when creating it. No other fields are allowed and will be rejected during
    +  // validation.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Spec for the ResourceClaim. The entire content is copied unchanged
    +  // into the ResourceClaim that gets created from this template. The
    +  // same fields as in a ResourceClaim are also valid here.
    +  optional ResourceClaimSpec spec = 2;
    +}
    +
    +// ResourcePool describes the pool that ResourceSlices belong to.
    +message ResourcePool {
    +  // Name is used to identify the pool. For node-local devices, this
    +  // is often the node name, but this is not required.
    +  //
    +  // It must not be longer than 253 characters and must consist of one or more DNS sub-domains
    +  // separated by slashes. This field is immutable.
    +  //
    +  // +required
    +  optional string name = 1;
    +
    +  // Generation tracks the change in a pool over time. Whenever a driver
    +  // changes something about one or more of the resources in a pool, it
    +  // must change the generation in all ResourceSlices which are part of
    +  // that pool. Consumers of ResourceSlices should only consider
    +  // resources from the pool with the highest generation number. The
    +  // generation may be reset by drivers, which should be fine for
    +  // consumers, assuming that all ResourceSlices in a pool are updated to
    +  // match or deleted.
    +  //
    +  // Combined with ResourceSliceCount, this mechanism enables consumers to
    +  // detect pools which are comprised of multiple ResourceSlices and are
    +  // in an incomplete state.
    +  //
    +  // +required
    +  optional int64 generation = 2;
    +
    +  // ResourceSliceCount is the total number of ResourceSlices in the pool at this
    +  // generation number. Must be greater than zero.
    +  //
    +  // Consumers can use this to check whether they have seen all ResourceSlices
    +  // belonging to the same pool.
    +  //
    +  // +required
    +  optional int64 resourceSliceCount = 3;
    +}
    +
    +// ResourceSlice represents one or more resources in a pool of similar resources,
    +// managed by a common driver. A pool may span more than one ResourceSlice, and exactly how many
    +// ResourceSlices comprise a pool is determined by the driver.
    +//
    +// At the moment, the only supported resources are devices with attributes and capacities.
    +// Each device in a given pool, regardless of how many ResourceSlices, must have a unique name.
    +// The ResourceSlice in which a device gets published may change over time. The unique identifier
    +// for a device is the tuple , , .
    +//
    +// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number
    +// and updates all ResourceSlices with that new number and new resource definitions. A consumer
    +// must only use ResourceSlices with the highest generation number and ignore all others.
    +//
    +// When allocating all resources in a pool matching certain criteria or when
    +// looking for the best solution among several different alternatives, a
    +// consumer should check the number of ResourceSlices in a pool (included in
    +// each ResourceSlice) to determine whether its view of a pool is complete and
    +// if not, should wait until the driver has completed updating the pool.
    +//
    +// For resources that are not local to a node, the node name is not set. Instead,
    +// the driver may use a node selector to specify where the devices are available.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +message ResourceSlice {
    +  // Standard object metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Contains the information published by the driver.
    +  //
    +  // Changing the spec automatically increments the metadata.generation number.
    +  optional ResourceSliceSpec spec = 2;
    +}
    +
    +// ResourceSliceList is a collection of ResourceSlices.
    +message ResourceSliceList {
    +  // Standard list metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // Items is the list of resource ResourceSlices.
    +  repeated ResourceSlice items = 2;
    +}
    +
    +// ResourceSliceSpec contains the information published by the driver in one ResourceSlice.
    +message ResourceSliceSpec {
    +  // Driver identifies the DRA driver providing the capacity information.
    +  // A field selector can be used to list only ResourceSlice
    +  // objects with a certain driver name.
    +  //
    +  // Must be a DNS subdomain and should end with a DNS domain owned by the
    +  // vendor of the driver. This field is immutable.
    +  //
    +  // +required
    +  optional string driver = 1;
    +
    +  // Pool describes the pool that this ResourceSlice belongs to.
    +  //
    +  // +required
    +  optional ResourcePool pool = 2;
    +
    +  // NodeName identifies the node which provides the resources in this pool.
    +  // A field selector can be used to list only ResourceSlice
    +  // objects belonging to a certain node.
    +  //
    +  // This field can be used to limit access from nodes to ResourceSlices with
    +  // the same node name. It also indicates to autoscalers that adding
    +  // new nodes of the same type as some old node might also make new
    +  // resources available.
    +  //
    +  // Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +  // This field is immutable.
    +  //
    +  // +optional
    +  // +oneOf=NodeSelection
    +  optional string nodeName = 3;
    +
    +  // NodeSelector defines which nodes have access to the resources in the pool,
    +  // when that pool is not limited to a single node.
    +  //
    +  // Must use exactly one term.
    +  //
    +  // Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +  //
    +  // +optional
    +  // +oneOf=NodeSelection
    +  optional .k8s.io.api.core.v1.NodeSelector nodeSelector = 4;
    +
    +  // AllNodes indicates that all nodes have access to the resources in the pool.
    +  //
    +  // Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +  //
    +  // +optional
    +  // +oneOf=NodeSelection
    +  optional bool allNodes = 5;
    +
    +  // Devices lists some or all of the devices in this pool.
    +  //
    +  // Must not have more than 128 entries.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated Device devices = 6;
    +}
    +
    diff --git a/vendor/k8s.io/api/resource/v1alpha2/register.go b/vendor/k8s.io/api/resource/v1alpha3/register.go
    similarity index 89%
    rename from vendor/k8s.io/api/resource/v1alpha2/register.go
    rename to vendor/k8s.io/api/resource/v1alpha3/register.go
    index 6e0d7ceb988c..8573758e3191 100644
    --- a/vendor/k8s.io/api/resource/v1alpha2/register.go
    +++ b/vendor/k8s.io/api/resource/v1alpha3/register.go
    @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -package v1alpha2
    +package v1alpha3
     
     import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    @@ -26,7 +26,7 @@ import (
     const GroupName = "resource.k8s.io"
     
     // SchemeGroupVersion is group version used to register these objects
    -var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha2"}
    +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha3"}
     
     // Resource takes an unqualified resource and returns a Group qualified GroupResource
     func Resource(resource string) schema.GroupResource {
    @@ -44,19 +44,16 @@ var (
     // Adds the list of known types to the given scheme.
     func addKnownTypes(scheme *runtime.Scheme) error {
     	scheme.AddKnownTypes(SchemeGroupVersion,
    -		&ResourceClass{},
    -		&ResourceClassList{},
    +		&DeviceClass{},
    +		&DeviceClassList{},
     		&ResourceClaim{},
     		&ResourceClaimList{},
     		&ResourceClaimTemplate{},
     		&ResourceClaimTemplateList{},
    -		&PodSchedulingContext{},
    -		&PodSchedulingContextList{},
    +		&ResourceSlice{},
    +		&ResourceSliceList{},
     	)
     
    -	// Add common types
    -	scheme.AddKnownTypes(SchemeGroupVersion, &metav1.Status{})
    -
     	// Add the watch version that applies
     	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
     	return nil
    diff --git a/vendor/k8s.io/api/resource/v1alpha3/types.go b/vendor/k8s.io/api/resource/v1alpha3/types.go
    new file mode 100644
    index 000000000000..e3d7fd8945be
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1alpha3/types.go
    @@ -0,0 +1,1081 @@
    +/*
    +Copyright 2022 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha3
    +
    +import (
    +	v1 "k8s.io/api/core/v1"
    +	"k8s.io/apimachinery/pkg/api/resource"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/types"
    +	"k8s.io/apimachinery/pkg/util/validation"
    +)
    +
    +const (
    +	// Finalizer is the finalizer that gets set for claims
    +	// which were allocated through a builtin controller.
    +	// Reserved for use by Kubernetes, DRA driver controllers must
    +	// use their own finalizer.
    +	Finalizer = "resource.kubernetes.io/delete-protection"
    +)
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +// +k8s:prerelease-lifecycle-gen:replacement=resource.k8s.io,v1beta1,ResourceSlice
    +
    +// ResourceSlice represents one or more resources in a pool of similar resources,
    +// managed by a common driver. A pool may span more than one ResourceSlice, and exactly how many
    +// ResourceSlices comprise a pool is determined by the driver.
    +//
    +// At the moment, the only supported resources are devices with attributes and capacities.
    +// Each device in a given pool, regardless of how many ResourceSlices, must have a unique name.
    +// The ResourceSlice in which a device gets published may change over time. The unique identifier
    +// for a device is the tuple , , .
    +//
    +// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number
    +// and updates all ResourceSlices with that new number and new resource definitions. A consumer
    +// must only use ResourceSlices with the highest generation number and ignore all others.
    +//
    +// When allocating all resources in a pool matching certain criteria or when
    +// looking for the best solution among several different alternatives, a
    +// consumer should check the number of ResourceSlices in a pool (included in
    +// each ResourceSlice) to determine whether its view of a pool is complete and
    +// if not, should wait until the driver has completed updating the pool.
    +//
    +// For resources that are not local to a node, the node name is not set. Instead,
    +// the driver may use a node selector to specify where the devices are available.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +type ResourceSlice struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Contains the information published by the driver.
    +	//
    +	// Changing the spec automatically increments the metadata.generation number.
    +	Spec ResourceSliceSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    +}
    +
    +const (
    +	// ResourceSliceSelectorNodeName can be used in a [metav1.ListOptions]
    +	// field selector to filter based on [ResourceSliceSpec.NodeName].
    +	ResourceSliceSelectorNodeName = "spec.nodeName"
    +	// ResourceSliceSelectorDriver can be used in a [metav1.ListOptions]
    +	// field selector to filter based on [ResourceSliceSpec.Driver].
    +	ResourceSliceSelectorDriver = "spec.driver"
    +)
    +
    +// ResourceSliceSpec contains the information published by the driver in one ResourceSlice.
    +type ResourceSliceSpec struct {
    +	// Driver identifies the DRA driver providing the capacity information.
    +	// A field selector can be used to list only ResourceSlice
    +	// objects with a certain driver name.
    +	//
    +	// Must be a DNS subdomain and should end with a DNS domain owned by the
    +	// vendor of the driver. This field is immutable.
    +	//
    +	// +required
    +	Driver string `json:"driver" protobuf:"bytes,1,name=driver"`
    +
    +	// Pool describes the pool that this ResourceSlice belongs to.
    +	//
    +	// +required
    +	Pool ResourcePool `json:"pool" protobuf:"bytes,2,name=pool"`
    +
    +	// NodeName identifies the node which provides the resources in this pool.
    +	// A field selector can be used to list only ResourceSlice
    +	// objects belonging to a certain node.
    +	//
    +	// This field can be used to limit access from nodes to ResourceSlices with
    +	// the same node name. It also indicates to autoscalers that adding
    +	// new nodes of the same type as some old node might also make new
    +	// resources available.
    +	//
    +	// Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +	// This field is immutable.
    +	//
    +	// +optional
    +	// +oneOf=NodeSelection
    +	NodeName string `json:"nodeName,omitempty" protobuf:"bytes,3,opt,name=nodeName"`
    +
    +	// NodeSelector defines which nodes have access to the resources in the pool,
    +	// when that pool is not limited to a single node.
    +	//
    +	// Must use exactly one term.
    +	//
    +	// Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +	//
    +	// +optional
    +	// +oneOf=NodeSelection
    +	NodeSelector *v1.NodeSelector `json:"nodeSelector,omitempty" protobuf:"bytes,4,opt,name=nodeSelector"`
    +
    +	// AllNodes indicates that all nodes have access to the resources in the pool.
    +	//
    +	// Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +	//
    +	// +optional
    +	// +oneOf=NodeSelection
    +	AllNodes bool `json:"allNodes,omitempty" protobuf:"bytes,5,opt,name=allNodes"`
    +
    +	// Devices lists some or all of the devices in this pool.
    +	//
    +	// Must not have more than 128 entries.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Devices []Device `json:"devices" protobuf:"bytes,6,name=devices"`
    +}
    +
    +// ResourcePool describes the pool that ResourceSlices belong to.
    +type ResourcePool struct {
    +	// Name is used to identify the pool. For node-local devices, this
    +	// is often the node name, but this is not required.
    +	//
    +	// It must not be longer than 253 characters and must consist of one or more DNS sub-domains
    +	// separated by slashes. This field is immutable.
    +	//
    +	// +required
    +	Name string `json:"name" protobuf:"bytes,1,name=name"`
    +
    +	// Generation tracks the change in a pool over time. Whenever a driver
    +	// changes something about one or more of the resources in a pool, it
    +	// must change the generation in all ResourceSlices which are part of
    +	// that pool. Consumers of ResourceSlices should only consider
    +	// resources from the pool with the highest generation number. The
    +	// generation may be reset by drivers, which should be fine for
    +	// consumers, assuming that all ResourceSlices in a pool are updated to
    +	// match or deleted.
    +	//
    +	// Combined with ResourceSliceCount, this mechanism enables consumers to
    +	// detect pools which are comprised of multiple ResourceSlices and are
    +	// in an incomplete state.
    +	//
    +	// +required
    +	Generation int64 `json:"generation" protobuf:"bytes,2,name=generation"`
    +
    +	// ResourceSliceCount is the total number of ResourceSlices in the pool at this
    +	// generation number. Must be greater than zero.
    +	//
    +	// Consumers can use this to check whether they have seen all ResourceSlices
    +	// belonging to the same pool.
    +	//
    +	// +required
    +	ResourceSliceCount int64 `json:"resourceSliceCount" protobuf:"bytes,3,name=resourceSliceCount"`
    +}
    +
    +const ResourceSliceMaxSharedCapacity = 128
    +const ResourceSliceMaxDevices = 128
    +const PoolNameMaxLength = validation.DNS1123SubdomainMaxLength // Same as for a single node name.
    +
    +// Device represents one individual hardware instance that can be selected based
    +// on its attributes. Besides the name, exactly one field must be set.
    +type Device struct {
    +	// Name is unique identifier among all devices managed by
    +	// the driver in the pool. It must be a DNS label.
    +	//
    +	// +required
    +	Name string `json:"name" protobuf:"bytes,1,name=name"`
    +
    +	// Basic defines one device instance.
    +	//
    +	// +optional
    +	// +oneOf=deviceType
    +	Basic *BasicDevice `json:"basic,omitempty" protobuf:"bytes,2,opt,name=basic"`
    +}
    +
    +// BasicDevice defines one device instance.
    +type BasicDevice struct {
    +	// Attributes defines the set of attributes for this device.
    +	// The name of each attribute must be unique in that set.
    +	//
    +	// The maximum number of attributes and capacities combined is 32.
    +	//
    +	// +optional
    +	Attributes map[QualifiedName]DeviceAttribute `json:"attributes,omitempty" protobuf:"bytes,1,rep,name=attributes"`
    +
    +	// Capacity defines the set of capacities for this device.
    +	// The name of each capacity must be unique in that set.
    +	//
    +	// The maximum number of attributes and capacities combined is 32.
    +	//
    +	// +optional
    +	Capacity map[QualifiedName]resource.Quantity `json:"capacity,omitempty" protobuf:"bytes,2,rep,name=capacity"`
    +}
    +
    +// Limit for the sum of the number of entries in both attributes and capacity.
    +const ResourceSliceMaxAttributesAndCapacitiesPerDevice = 32
    +
    +// QualifiedName is the name of a device attribute or capacity.
    +//
    +// Attributes and capacities are defined either by the owner of the specific
    +// driver (usually the vendor) or by some 3rd party (e.g. the Kubernetes
    +// project). Because they are sometimes compared across devices, a given name
    +// is expected to mean the same thing and have the same type on all devices.
    +//
    +// Names must be either a C identifier (e.g. "theName") or a DNS subdomain
    +// followed by a slash ("/") followed by a C identifier
    +// (e.g. "dra.example.com/theName"). Names which do not include the
    +// domain prefix are assumed to be part of the driver's domain. Attributes
    +// or capacities defined by 3rd parties must include the domain prefix.
    +//
    +// The maximum length for the DNS subdomain is 63 characters (same as
    +// for driver names) and the maximum length of the C identifier
    +// is 32.
    +type QualifiedName string
    +
    +// FullyQualifiedName is a QualifiedName where the domain is set.
    +type FullyQualifiedName string
    +
    +// DeviceMaxDomainLength is the maximum length of the domain prefix in a fully-qualified name.
    +const DeviceMaxDomainLength = 63
    +
    +// DeviceMaxIDLength is the maximum length of the identifier in a device attribute or capacity name (`/`).
    +const DeviceMaxIDLength = 32
    +
    +// DeviceAttribute must have exactly one field set.
    +type DeviceAttribute struct {
    +	// The Go field names below have a Value suffix to avoid a conflict between the
    +	// field "String" and the corresponding method. That method is required.
    +	// The Kubernetes API is defined without that suffix to keep it more natural.
    +
    +	// IntValue is a number.
    +	//
    +	// +optional
    +	// +oneOf=ValueType
    +	IntValue *int64 `json:"int,omitempty" protobuf:"varint,2,opt,name=int"`
    +
    +	// BoolValue is a true/false value.
    +	//
    +	// +optional
    +	// +oneOf=ValueType
    +	BoolValue *bool `json:"bool,omitempty" protobuf:"varint,3,opt,name=bool"`
    +
    +	// StringValue is a string. Must not be longer than 64 characters.
    +	//
    +	// +optional
    +	// +oneOf=ValueType
    +	StringValue *string `json:"string,omitempty" protobuf:"bytes,4,opt,name=string"`
    +
    +	// VersionValue is a semantic version according to semver.org spec 2.0.0.
    +	// Must not be longer than 64 characters.
    +	//
    +	// +optional
    +	// +oneOf=ValueType
    +	VersionValue *string `json:"version,omitempty" protobuf:"bytes,5,opt,name=version"`
    +}
    +
    +// DeviceAttributeMaxValueLength is the maximum length of a string or version attribute value.
    +const DeviceAttributeMaxValueLength = 64
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +// +k8s:prerelease-lifecycle-gen:replacement=resource.k8s.io,v1beta1,ResourceSliceList
    +
    +// ResourceSliceList is a collection of ResourceSlices.
    +type ResourceSliceList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Items is the list of resource ResourceSlices.
    +	Items []ResourceSlice `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// +genclient
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +// +k8s:prerelease-lifecycle-gen:replacement=resource.k8s.io,v1beta1,ResourceClaim
    +
    +// ResourceClaim describes a request for access to resources in the cluster,
    +// for use by workloads. For example, if a workload needs an accelerator device
    +// with specific properties, this is how that request is expressed. The status
    +// stanza tracks whether this claim has been satisfied and what specific
    +// resources have been allocated.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +type ResourceClaim struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Spec describes what is being requested and how to configure it.
    +	// The spec is immutable.
    +	Spec ResourceClaimSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    +
    +	// Status describes whether the claim is ready to use and what has been allocated.
    +	// +optional
    +	Status ResourceClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
    +}
    +
    +// ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.
    +type ResourceClaimSpec struct {
    +	// Devices defines how to request devices.
    +	//
    +	// +optional
    +	Devices DeviceClaim `json:"devices" protobuf:"bytes,1,name=devices"`
    +
    +	// Controller is tombstoned since Kubernetes 1.32 where
    +	// it got removed. May be reused once decoding v1alpha3 is no longer
    +	// supported.
    +	// Controller string `json:"controller,omitempty" protobuf:"bytes,2,opt,name=controller"`
    +}
    +
    +// DeviceClaim defines how to request devices with a ResourceClaim.
    +type DeviceClaim struct {
    +	// Requests represent individual requests for distinct devices which
    +	// must all be satisfied. If empty, nothing needs to be allocated.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Requests []DeviceRequest `json:"requests" protobuf:"bytes,1,name=requests"`
    +
    +	// These constraints must be satisfied by the set of devices that get
    +	// allocated for the claim.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Constraints []DeviceConstraint `json:"constraints,omitempty" protobuf:"bytes,2,opt,name=constraints"`
    +
    +	// This field holds configuration for multiple potential drivers which
    +	// could satisfy requests in this claim. It is ignored while allocating
    +	// the claim.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Config []DeviceClaimConfiguration `json:"config,omitempty" protobuf:"bytes,3,opt,name=config"`
    +
    +	// Potential future extension, ignored by older schedulers. This is
    +	// fine because scoring allows users to define a preference, without
    +	// making it a hard requirement.
    +	//
    +	// Score *SomeScoringStruct
    +}
    +
    +const (
    +	DeviceRequestsMaxSize    = AllocationResultsMaxSize
    +	DeviceConstraintsMaxSize = 32
    +	DeviceConfigMaxSize      = 32
    +)
    +
    +// DeviceRequest is a request for devices required for a claim.
    +// This is typically a request for a single resource like a device, but can
    +// also ask for several identical devices.
    +//
    +// A DeviceClassName is currently required. Clients must check that it is
    +// indeed set. It's absence indicates that something changed in a way that
    +// is not supported by the client yet, in which case it must refuse to
    +// handle the request.
    +type DeviceRequest struct {
    +	// Name can be used to reference this request in a pod.spec.containers[].resources.claims
    +	// entry and in a constraint of the claim.
    +	//
    +	// Must be a DNS label.
    +	//
    +	// +required
    +	Name string `json:"name" protobuf:"bytes,1,name=name"`
    +
    +	// DeviceClassName references a specific DeviceClass, which can define
    +	// additional configuration and selectors to be inherited by this
    +	// request.
    +	//
    +	// A class is required. Which classes are available depends on the cluster.
    +	//
    +	// Administrators may use this to restrict which devices may get
    +	// requested by only installing classes with selectors for permitted
    +	// devices. If users are free to request anything without restrictions,
    +	// then administrators can create an empty DeviceClass for users
    +	// to reference.
    +	//
    +	// +required
    +	DeviceClassName string `json:"deviceClassName" protobuf:"bytes,2,name=deviceClassName"`
    +
    +	// Selectors define criteria which must be satisfied by a specific
    +	// device in order for that device to be considered for this
    +	// request. All selectors must be satisfied for a device to be
    +	// considered.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Selectors []DeviceSelector `json:"selectors,omitempty" protobuf:"bytes,3,name=selectors"`
    +
    +	// AllocationMode and its related fields define how devices are allocated
    +	// to satisfy this request. Supported values are:
    +	//
    +	// - ExactCount: This request is for a specific number of devices.
    +	//   This is the default. The exact number is provided in the
    +	//   count field.
    +	//
    +	// - All: This request is for all of the matching devices in a pool.
    +	//   Allocation will fail if some devices are already allocated,
    +	//   unless adminAccess is requested.
    +	//
    +	// If AlloctionMode is not specified, the default mode is ExactCount. If
    +	// the mode is ExactCount and count is not specified, the default count is
    +	// one. Any other requests must specify this field.
    +	//
    +	// More modes may get added in the future. Clients must refuse to handle
    +	// requests with unknown modes.
    +	//
    +	// +optional
    +	AllocationMode DeviceAllocationMode `json:"allocationMode,omitempty" protobuf:"bytes,4,opt,name=allocationMode"`
    +
    +	// Count is used only when the count mode is "ExactCount". Must be greater than zero.
    +	// If AllocationMode is ExactCount and this field is not specified, the default is one.
    +	//
    +	// +optional
    +	// +oneOf=AllocationMode
    +	Count int64 `json:"count,omitempty" protobuf:"bytes,5,opt,name=count"`
    +
    +	// AdminAccess indicates that this is a claim for administrative access
    +	// to the device(s). Claims with AdminAccess are expected to be used for
    +	// monitoring or other management services for a device.  They ignore
    +	// all ordinary claims to the device with respect to access modes and
    +	// any resource allocations.
    +	//
    +	// This is an alpha field and requires enabling the DRAAdminAccess
    +	// feature gate. Admin access is disabled if this field is unset or
    +	// set to false, otherwise it is enabled.
    +	//
    +	// +optional
    +	// +featureGate=DRAAdminAccess
    +	AdminAccess *bool `json:"adminAccess,omitempty" protobuf:"bytes,6,opt,name=adminAccess"`
    +}
    +
    +const (
    +	DeviceSelectorsMaxSize = 32
    +)
    +
    +type DeviceAllocationMode string
    +
    +// Valid [DeviceRequest.CountMode] values.
    +const (
    +	DeviceAllocationModeExactCount = DeviceAllocationMode("ExactCount")
    +	DeviceAllocationModeAll        = DeviceAllocationMode("All")
    +)
    +
    +// DeviceSelector must have exactly one field set.
    +type DeviceSelector struct {
    +	// CEL contains a CEL expression for selecting a device.
    +	//
    +	// +optional
    +	// +oneOf=SelectorType
    +	CEL *CELDeviceSelector `json:"cel,omitempty" protobuf:"bytes,1,opt,name=cel"`
    +}
    +
    +// CELDeviceSelector contains a CEL expression for selecting a device.
    +type CELDeviceSelector struct {
    +	// Expression is a CEL expression which evaluates a single device. It
    +	// must evaluate to true when the device under consideration satisfies
    +	// the desired criteria, and false when it does not. Any other result
    +	// is an error and causes allocation of devices to abort.
    +	//
    +	// The expression's input is an object named "device", which carries
    +	// the following properties:
    +	//  - driver (string): the name of the driver which defines this device.
    +	//  - attributes (map[string]object): the device's attributes, grouped by prefix
    +	//    (e.g. device.attributes["dra.example.com"] evaluates to an object with all
    +	//    of the attributes which were prefixed by "dra.example.com".
    +	//  - capacity (map[string]object): the device's capacities, grouped by prefix.
    +	//
    +	// Example: Consider a device with driver="dra.example.com", which exposes
    +	// two attributes named "model" and "ext.example.com/family" and which
    +	// exposes one capacity named "modules". This input to this expression
    +	// would have the following fields:
    +	//
    +	//     device.driver
    +	//     device.attributes["dra.example.com"].model
    +	//     device.attributes["ext.example.com"].family
    +	//     device.capacity["dra.example.com"].modules
    +	//
    +	// The device.driver field can be used to check for a specific driver,
    +	// either as a high-level precondition (i.e. you only want to consider
    +	// devices from this driver) or as part of a multi-clause expression
    +	// that is meant to consider devices from different drivers.
    +	//
    +	// The value type of each attribute is defined by the device
    +	// definition, and users who write these expressions must consult the
    +	// documentation for their specific drivers. The value type of each
    +	// capacity is Quantity.
    +	//
    +	// If an unknown prefix is used as a lookup in either device.attributes
    +	// or device.capacity, an empty map will be returned. Any reference to
    +	// an unknown field will cause an evaluation error and allocation to
    +	// abort.
    +	//
    +	// A robust expression should check for the existence of attributes
    +	// before referencing them.
    +	//
    +	// For ease of use, the cel.bind() function is enabled, and can be used
    +	// to simplify expressions that access multiple attributes with the
    +	// same domain. For example:
    +	//
    +	//     cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
    +	//
    +	// The length of the expression must be smaller or equal to 10 Ki. The
    +	// cost of evaluating it is also limited based on the estimated number
    +	// of logical steps.
    +	//
    +	// +required
    +	Expression string `json:"expression" protobuf:"bytes,1,name=expression"`
    +}
    +
    +// CELSelectorExpressionMaxCost specifies the cost limit for a single CEL selector
    +// evaluation.
    +//
    +// There is no overall budget for selecting a device, so the actual time
    +// required for that is proportional to the number of CEL selectors and how
    +// often they need to be evaluated, which can vary depending on several factors
    +// (number of devices, cluster utilization, additional constraints).
    +//
    +// Validation against this limit and [CELSelectorExpressionMaxLength] happens
    +// only when setting an expression for the first time or when changing it. If
    +// the limits are changed in a future Kubernetes release, existing users are
    +// guaranteed that existing expressions will continue to be valid.
    +//
    +// However, the kube-scheduler also applies this cost limit at runtime, so it
    +// could happen that a valid expression fails at runtime after an up- or
    +// downgrade. This can also happen without version skew when the cost estimate
    +// underestimated the actual cost. That this might happen is the reason why
    +// kube-scheduler enforces the runtime limit instead of relying on validation.
    +//
    +// According to
    +// https://github.com/kubernetes/kubernetes/blob/4aeaf1e99e82da8334c0d6dddd848a194cd44b4f/staging/src/k8s.io/apiserver/pkg/apis/cel/config.go#L20-L22,
    +// this gives roughly 0.1 second for each expression evaluation.
    +// However, this depends on how fast the machine is.
    +const CELSelectorExpressionMaxCost = 1000000
    +
    +// CELSelectorExpressionMaxLength is the maximum length of a CEL selector expression string.
    +const CELSelectorExpressionMaxLength = 10 * 1024
    +
    +// DeviceConstraint must have exactly one field set besides Requests.
    +type DeviceConstraint struct {
    +	// Requests is a list of the one or more requests in this claim which
    +	// must co-satisfy this constraint. If a request is fulfilled by
    +	// multiple devices, then all of the devices must satisfy the
    +	// constraint. If this is not specified, this constraint applies to all
    +	// requests in this claim.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Requests []string `json:"requests,omitempty" protobuf:"bytes,1,opt,name=requests"`
    +
    +	// MatchAttribute requires that all devices in question have this
    +	// attribute and that its type and value are the same across those
    +	// devices.
    +	//
    +	// For example, if you specified "dra.example.com/numa" (a hypothetical example!),
    +	// then only devices in the same NUMA node will be chosen. A device which
    +	// does not have that attribute will not be chosen. All devices should
    +	// use a value of the same type for this attribute because that is part of
    +	// its specification, but if one device doesn't, then it also will not be
    +	// chosen.
    +	//
    +	// Must include the domain qualifier.
    +	//
    +	// +optional
    +	// +oneOf=ConstraintType
    +	MatchAttribute *FullyQualifiedName `json:"matchAttribute,omitempty" protobuf:"bytes,2,opt,name=matchAttribute"`
    +
    +	// Potential future extension, not part of the current design:
    +	// A CEL expression which compares different devices and returns
    +	// true if they match.
    +	//
    +	// Because it would be part of a one-of, old schedulers will not
    +	// accidentally ignore this additional, for them unknown match
    +	// criteria.
    +	//
    +	// MatchExpression string
    +}
    +
    +// DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.
    +type DeviceClaimConfiguration struct {
    +	// Requests lists the names of requests where the configuration applies.
    +	// If empty, it applies to all requests.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Requests []string `json:"requests,omitempty" protobuf:"bytes,1,opt,name=requests"`
    +
    +	DeviceConfiguration `json:",inline" protobuf:"bytes,2,name=deviceConfiguration"`
    +}
    +
    +// DeviceConfiguration must have exactly one field set. It gets embedded
    +// inline in some other structs which have other fields, so field names must
    +// not conflict with those.
    +type DeviceConfiguration struct {
    +	// Opaque provides driver-specific configuration parameters.
    +	//
    +	// +optional
    +	// +oneOf=ConfigurationType
    +	Opaque *OpaqueDeviceConfiguration `json:"opaque,omitempty" protobuf:"bytes,1,opt,name=opaque"`
    +}
    +
    +// OpaqueDeviceConfiguration contains configuration parameters for a driver
    +// in a format defined by the driver vendor.
    +type OpaqueDeviceConfiguration struct {
    +	// Driver is used to determine which kubelet plugin needs
    +	// to be passed these configuration parameters.
    +	//
    +	// An admission policy provided by the driver developer could use this
    +	// to decide whether it needs to validate them.
    +	//
    +	// Must be a DNS subdomain and should end with a DNS domain owned by the
    +	// vendor of the driver.
    +	//
    +	// +required
    +	Driver string `json:"driver" protobuf:"bytes,1,name=driver"`
    +
    +	// Parameters can contain arbitrary data. It is the responsibility of
    +	// the driver developer to handle validation and versioning. Typically this
    +	// includes self-identification and a version ("kind" + "apiVersion" for
    +	// Kubernetes types), with conversion between different versions.
    +	//
    +	// The length of the raw data must be smaller or equal to 10 Ki.
    +	//
    +	// +required
    +	Parameters runtime.RawExtension `json:"parameters" protobuf:"bytes,2,name=parameters"`
    +}
    +
    +// OpaqueParametersMaxLength is the maximum length of the raw data in an
    +// [OpaqueDeviceConfiguration.Parameters] field.
    +const OpaqueParametersMaxLength = 10 * 1024
    +
    +// ResourceClaimStatus tracks whether the resource has been allocated and what
    +// the result of that was.
    +type ResourceClaimStatus struct {
    +	// Allocation is set once the claim has been allocated successfully.
    +	//
    +	// +optional
    +	Allocation *AllocationResult `json:"allocation,omitempty" protobuf:"bytes,1,opt,name=allocation"`
    +
    +	// ReservedFor indicates which entities are currently allowed to use
    +	// the claim. A Pod which references a ResourceClaim which is not
    +	// reserved for that Pod will not be started. A claim that is in
    +	// use or might be in use because it has been reserved must not get
    +	// deallocated.
    +	//
    +	// In a cluster with multiple scheduler instances, two pods might get
    +	// scheduled concurrently by different schedulers. When they reference
    +	// the same ResourceClaim which already has reached its maximum number
    +	// of consumers, only one pod can be scheduled.
    +	//
    +	// Both schedulers try to add their pod to the claim.status.reservedFor
    +	// field, but only the update that reaches the API server first gets
    +	// stored. The other one fails with an error and the scheduler
    +	// which issued it knows that it must put the pod back into the queue,
    +	// waiting for the ResourceClaim to become usable again.
    +	//
    +	// There can be at most 32 such reservations. This may get increased in
    +	// the future, but not reduced.
    +	//
    +	// +optional
    +	// +listType=map
    +	// +listMapKey=uid
    +	// +patchStrategy=merge
    +	// +patchMergeKey=uid
    +	ReservedFor []ResourceClaimConsumerReference `json:"reservedFor,omitempty" protobuf:"bytes,2,opt,name=reservedFor" patchStrategy:"merge" patchMergeKey:"uid"`
    +
    +	// DeallocationRequested is tombstoned since Kubernetes 1.32 where
    +	// it got removed. May be reused once decoding v1alpha3 is no longer
    +	// supported.
    +	// DeallocationRequested bool `json:"deallocationRequested,omitempty" protobuf:"bytes,3,opt,name=deallocationRequested"`
    +
    +	// Devices contains the status of each device allocated for this
    +	// claim, as reported by the driver. This can include driver-specific
    +	// information. Entries are owned by their respective drivers.
    +	//
    +	// +optional
    +	// +listType=map
    +	// +listMapKey=driver
    +	// +listMapKey=device
    +	// +listMapKey=pool
    +	// +featureGate=DRAResourceClaimDeviceStatus
    +	Devices []AllocatedDeviceStatus `json:"devices,omitempty" protobuf:"bytes,4,opt,name=devices"`
    +}
    +
    +// ReservedForMaxSize is the maximum number of entries in
    +// claim.status.reservedFor.
    +const ResourceClaimReservedForMaxSize = 32
    +
    +// ResourceClaimConsumerReference contains enough information to let you
    +// locate the consumer of a ResourceClaim. The user must be a resource in the same
    +// namespace as the ResourceClaim.
    +type ResourceClaimConsumerReference struct {
    +	// APIGroup is the group for the resource being referenced. It is
    +	// empty for the core API. This matches the group in the APIVersion
    +	// that is used when creating the resources.
    +	// +optional
    +	APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,1,opt,name=apiGroup"`
    +	// Resource is the type of resource being referenced, for example "pods".
    +	// +required
    +	Resource string `json:"resource" protobuf:"bytes,3,name=resource"`
    +	// Name is the name of resource being referenced.
    +	// +required
    +	Name string `json:"name" protobuf:"bytes,4,name=name"`
    +	// UID identifies exactly one incarnation of the resource.
    +	// +required
    +	UID types.UID `json:"uid" protobuf:"bytes,5,name=uid"`
    +}
    +
    +// AllocationResult contains attributes of an allocated resource.
    +type AllocationResult struct {
    +	// Devices is the result of allocating devices.
    +	//
    +	// +optional
    +	Devices DeviceAllocationResult `json:"devices,omitempty" protobuf:"bytes,1,opt,name=devices"`
    +
    +	// NodeSelector defines where the allocated resources are available. If
    +	// unset, they are available everywhere.
    +	//
    +	// +optional
    +	NodeSelector *v1.NodeSelector `json:"nodeSelector,omitempty" protobuf:"bytes,3,opt,name=nodeSelector"`
    +
    +	// Controller is tombstoned since Kubernetes 1.32 where
    +	// it got removed. May be reused once decoding v1alpha3 is no longer
    +	// supported.
    +	// Controller string `json:"controller,omitempty" protobuf:"bytes,4,opt,name=controller"`
    +}
    +
    +// DeviceAllocationResult is the result of allocating devices.
    +type DeviceAllocationResult struct {
    +	// Results lists all allocated devices.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Results []DeviceRequestAllocationResult `json:"results,omitempty" protobuf:"bytes,1,opt,name=results"`
    +
    +	// This field is a combination of all the claim and class configuration parameters.
    +	// Drivers can distinguish between those based on a flag.
    +	//
    +	// This includes configuration parameters for drivers which have no allocated
    +	// devices in the result because it is up to the drivers which configuration
    +	// parameters they support. They can silently ignore unknown configuration
    +	// parameters.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Config []DeviceAllocationConfiguration `json:"config,omitempty" protobuf:"bytes,2,opt,name=config"`
    +}
    +
    +// AllocationResultsMaxSize represents the maximum number of
    +// entries in allocation.devices.results.
    +const AllocationResultsMaxSize = 32
    +
    +// DeviceRequestAllocationResult contains the allocation result for one request.
    +type DeviceRequestAllocationResult struct {
    +	// Request is the name of the request in the claim which caused this
    +	// device to be allocated. Multiple devices may have been allocated
    +	// per request.
    +	//
    +	// +required
    +	Request string `json:"request" protobuf:"bytes,1,name=request"`
    +
    +	// Driver specifies the name of the DRA driver whose kubelet
    +	// plugin should be invoked to process the allocation once the claim is
    +	// needed on a node.
    +	//
    +	// Must be a DNS subdomain and should end with a DNS domain owned by the
    +	// vendor of the driver.
    +	//
    +	// +required
    +	Driver string `json:"driver" protobuf:"bytes,2,name=driver"`
    +
    +	// This name together with the driver name and the device name field
    +	// identify which device was allocated (`//`).
    +	//
    +	// Must not be longer than 253 characters and may contain one or more
    +	// DNS sub-domains separated by slashes.
    +	//
    +	// +required
    +	Pool string `json:"pool" protobuf:"bytes,3,name=pool"`
    +
    +	// Device references one device instance via its name in the driver's
    +	// resource pool. It must be a DNS label.
    +	//
    +	// +required
    +	Device string `json:"device" protobuf:"bytes,4,name=device"`
    +
    +	// AdminAccess indicates that this device was allocated for
    +	// administrative access. See the corresponding request field
    +	// for a definition of mode.
    +	//
    +	// This is an alpha field and requires enabling the DRAAdminAccess
    +	// feature gate. Admin access is disabled if this field is unset or
    +	// set to false, otherwise it is enabled.
    +	//
    +	// +optional
    +	// +featureGate=DRAAdminAccess
    +	AdminAccess *bool `json:"adminAccess" protobuf:"bytes,5,name=adminAccess"`
    +}
    +
    +// DeviceAllocationConfiguration gets embedded in an AllocationResult.
    +type DeviceAllocationConfiguration struct {
    +	// Source records whether the configuration comes from a class and thus
    +	// is not something that a normal user would have been able to set
    +	// or from a claim.
    +	//
    +	// +required
    +	Source AllocationConfigSource `json:"source" protobuf:"bytes,1,name=source"`
    +
    +	// Requests lists the names of requests where the configuration applies.
    +	// If empty, its applies to all requests.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Requests []string `json:"requests,omitempty" protobuf:"bytes,2,opt,name=requests"`
    +
    +	DeviceConfiguration `json:",inline" protobuf:"bytes,3,name=deviceConfiguration"`
    +}
    +
    +type AllocationConfigSource string
    +
    +// Valid [DeviceAllocationConfiguration.Source] values.
    +const (
    +	AllocationConfigSourceClass = "FromClass"
    +	AllocationConfigSourceClaim = "FromClaim"
    +)
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +// +k8s:prerelease-lifecycle-gen:replacement=resource.k8s.io,v1beta1,ResourceClaimList
    +
    +// ResourceClaimList is a collection of claims.
    +type ResourceClaimList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Items is the list of resource claims.
    +	Items []ResourceClaim `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +// +k8s:prerelease-lifecycle-gen:replacement=resource.k8s.io,v1beta1,DeviceClass
    +
    +// DeviceClass is a vendor- or admin-provided resource that contains
    +// device configuration and selectors. It can be referenced in
    +// the device requests of a claim to apply these presets.
    +// Cluster scoped.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +type DeviceClass struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Spec defines what can be allocated and how to configure it.
    +	//
    +	// This is mutable. Consumers have to be prepared for classes changing
    +	// at any time, either because they get updated or replaced. Claim
    +	// allocations are done once based on whatever was set in classes at
    +	// the time of allocation.
    +	//
    +	// Changing the spec automatically increments the metadata.generation number.
    +	Spec DeviceClassSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    +}
    +
    +// DeviceClassSpec is used in a [DeviceClass] to define what can be allocated
    +// and how to configure it.
    +type DeviceClassSpec struct {
    +	// Each selector must be satisfied by a device which is claimed via this class.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Selectors []DeviceSelector `json:"selectors,omitempty" protobuf:"bytes,1,opt,name=selectors"`
    +
    +	// Config defines configuration parameters that apply to each device that is claimed via this class.
    +	// Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor
    +	// configuration applies to exactly one driver.
    +	//
    +	// They are passed to the driver, but are not considered while allocating the claim.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Config []DeviceClassConfiguration `json:"config,omitempty" protobuf:"bytes,2,opt,name=config"`
    +
    +	// SuitableNodes is tombstoned since Kubernetes 1.32 where
    +	// it got removed. May be reused once decoding v1alpha3 is no longer
    +	// supported.
    +	// SuitableNodes *v1.NodeSelector `json:"suitableNodes,omitempty" protobuf:"bytes,3,opt,name=suitableNodes"`
    +}
    +
    +// DeviceClassConfiguration is used in DeviceClass.
    +type DeviceClassConfiguration struct {
    +	DeviceConfiguration `json:",inline" protobuf:"bytes,1,opt,name=deviceConfiguration"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +// +k8s:prerelease-lifecycle-gen:replacement=resource.k8s.io,v1beta1,DeviceClassList
    +
    +// DeviceClassList is a collection of classes.
    +type DeviceClassList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Items is the list of resource classes.
    +	Items []DeviceClass `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// +genclient
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +// +k8s:prerelease-lifecycle-gen:replacement=resource.k8s.io,v1beta1,ResourceClaimTemplate
    +
    +// ResourceClaimTemplate is used to produce ResourceClaim objects.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +type ResourceClaimTemplate struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Describes the ResourceClaim that is to be generated.
    +	//
    +	// This field is immutable. A ResourceClaim will get created by the
    +	// control plane for a Pod when needed and then not get updated
    +	// anymore.
    +	Spec ResourceClaimTemplateSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    +}
    +
    +// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
    +type ResourceClaimTemplateSpec struct {
    +	// ObjectMeta may contain labels and annotations that will be copied into the ResourceClaim
    +	// when creating it. No other fields are allowed and will be rejected during
    +	// validation.
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Spec for the ResourceClaim. The entire content is copied unchanged
    +	// into the ResourceClaim that gets created from this template. The
    +	// same fields as in a ResourceClaim are also valid here.
    +	Spec ResourceClaimSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +// +k8s:prerelease-lifecycle-gen:replacement=resource.k8s.io,v1beta1,ResourceClaimTemplateList
    +
    +// ResourceClaimTemplateList is a collection of claim templates.
    +type ResourceClaimTemplateList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Items is the list of resource claim templates.
    +	Items []ResourceClaimTemplate `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// AllocatedDeviceStatus contains the status of an allocated device, if the
    +// driver chooses to report it. This may include driver-specific information.
    +type AllocatedDeviceStatus struct {
    +	// Driver specifies the name of the DRA driver whose kubelet
    +	// plugin should be invoked to process the allocation once the claim is
    +	// needed on a node.
    +	//
    +	// Must be a DNS subdomain and should end with a DNS domain owned by the
    +	// vendor of the driver.
    +	//
    +	// +required
    +	Driver string `json:"driver" protobuf:"bytes,1,rep,name=driver"`
    +
    +	// This name together with the driver name and the device name field
    +	// identify which device was allocated (`//`).
    +	//
    +	// Must not be longer than 253 characters and may contain one or more
    +	// DNS sub-domains separated by slashes.
    +	//
    +	// +required
    +	Pool string `json:"pool" protobuf:"bytes,2,rep,name=pool"`
    +
    +	// Device references one device instance via its name in the driver's
    +	// resource pool. It must be a DNS label.
    +	//
    +	// +required
    +	Device string `json:"device" protobuf:"bytes,3,rep,name=device"`
    +
    +	// Conditions contains the latest observation of the device's state.
    +	// If the device has been configured according to the class and claim
    +	// config references, the `Ready` condition should be True.
    +	//
    +	// +optional
    +	// +listType=map
    +	// +listMapKey=type
    +	Conditions []metav1.Condition `json:"conditions" protobuf:"bytes,4,opt,name=conditions"`
    +
    +	// Data contains arbitrary driver-specific data.
    +	//
    +	// The length of the raw data must be smaller or equal to 10 Ki.
    +	//
    +	// +optional
    +	Data runtime.RawExtension `json:"data,omitempty" protobuf:"bytes,5,opt,name=data"`
    +
    +	// NetworkData contains network-related information specific to the device.
    +	//
    +	// +optional
    +	NetworkData *NetworkDeviceData `json:"networkData,omitempty" protobuf:"bytes,6,opt,name=networkData"`
    +}
    +
    +// NetworkDeviceData provides network-related details for the allocated device.
    +// This information may be filled by drivers or other components to configure
    +// or identify the device within a network context.
    +type NetworkDeviceData struct {
    +	// InterfaceName specifies the name of the network interface associated with
    +	// the allocated device. This might be the name of a physical or virtual
    +	// network interface being configured in the pod.
    +	//
    +	// Must not be longer than 256 characters.
    +	//
    +	// +optional
    +	InterfaceName string `json:"interfaceName,omitempty" protobuf:"bytes,1,opt,name=interfaceName"`
    +
    +	// IPs lists the network addresses assigned to the device's network interface.
    +	// This can include both IPv4 and IPv6 addresses.
    +	// The IPs are in the CIDR notation, which includes both the address and the
    +	// associated subnet mask.
    +	// e.g.: "192.0.2.5/24" for IPv4 and "2001:db8::5/64" for IPv6.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	IPs []string `json:"ips,omitempty" protobuf:"bytes,2,opt,name=ips"`
    +
    +	// HardwareAddress represents the hardware address (e.g. MAC Address) of the device's network interface.
    +	//
    +	// Must not be longer than 128 characters.
    +	//
    +	// +optional
    +	HardwareAddress string `json:"hardwareAddress,omitempty" protobuf:"bytes,3,opt,name=hardwareAddress"`
    +}
    diff --git a/vendor/k8s.io/api/resource/v1alpha3/types_swagger_doc_generated.go b/vendor/k8s.io/api/resource/v1alpha3/types_swagger_doc_generated.go
    new file mode 100644
    index 000000000000..1a71d64c10d6
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1alpha3/types_swagger_doc_generated.go
    @@ -0,0 +1,377 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha3
    +
    +// This file contains a collection of methods that can be used from go-restful to
    +// generate Swagger API documentation for its models. Please read this PR for more
    +// information on the implementation: https://github.com/emicklei/go-restful/pull/215
    +//
    +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if
    +// they are on one line! For multiple line or blocks that you want to ignore use ---.
    +// Any context after a --- is ignored.
    +//
    +// Those methods can be generated by using hack/update-codegen.sh
    +
    +// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    +var map_AllocatedDeviceStatus = map[string]string{
    +	"":            "AllocatedDeviceStatus contains the status of an allocated device, if the driver chooses to report it. This may include driver-specific information.",
    +	"driver":      "Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.",
    +	"pool":        "This name together with the driver name and the device name field identify which device was allocated (`//`).\n\nMust not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.",
    +	"device":      "Device references one device instance via its name in the driver's resource pool. It must be a DNS label.",
    +	"conditions":  "Conditions contains the latest observation of the device's state. If the device has been configured according to the class and claim config references, the `Ready` condition should be True.",
    +	"data":        "Data contains arbitrary driver-specific data.\n\nThe length of the raw data must be smaller or equal to 10 Ki.",
    +	"networkData": "NetworkData contains network-related information specific to the device.",
    +}
    +
    +func (AllocatedDeviceStatus) SwaggerDoc() map[string]string {
    +	return map_AllocatedDeviceStatus
    +}
    +
    +var map_AllocationResult = map[string]string{
    +	"":             "AllocationResult contains attributes of an allocated resource.",
    +	"devices":      "Devices is the result of allocating devices.",
    +	"nodeSelector": "NodeSelector defines where the allocated resources are available. If unset, they are available everywhere.",
    +}
    +
    +func (AllocationResult) SwaggerDoc() map[string]string {
    +	return map_AllocationResult
    +}
    +
    +var map_BasicDevice = map[string]string{
    +	"":           "BasicDevice defines one device instance.",
    +	"attributes": "Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set.\n\nThe maximum number of attributes and capacities combined is 32.",
    +	"capacity":   "Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.\n\nThe maximum number of attributes and capacities combined is 32.",
    +}
    +
    +func (BasicDevice) SwaggerDoc() map[string]string {
    +	return map_BasicDevice
    +}
    +
    +var map_CELDeviceSelector = map[string]string{
    +	"":           "CELDeviceSelector contains a CEL expression for selecting a device.",
    +	"expression": "Expression is a CEL expression which evaluates a single device. It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort.\n\nThe expression's input is an object named \"device\", which carries the following properties:\n - driver (string): the name of the driver which defines this device.\n - attributes (map[string]object): the device's attributes, grouped by prefix\n   (e.g. device.attributes[\"dra.example.com\"] evaluates to an object with all\n   of the attributes which were prefixed by \"dra.example.com\".\n - capacity (map[string]object): the device's capacities, grouped by prefix.\n\nExample: Consider a device with driver=\"dra.example.com\", which exposes two attributes named \"model\" and \"ext.example.com/family\" and which exposes one capacity named \"modules\". This input to this expression would have the following fields:\n\n    device.driver\n    device.attributes[\"dra.example.com\"].model\n    device.attributes[\"ext.example.com\"].family\n    device.capacity[\"dra.example.com\"].modules\n\nThe device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers.\n\nThe value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity.\n\nIf an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort.\n\nA robust expression should check for the existence of attributes before referencing them.\n\nFor ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example:\n\n    cel.bind(dra, device.attributes[\"dra.example.com\"], dra.someBool && dra.anotherBool)\n\nThe length of the expression must be smaller or equal to 10 Ki. The cost of evaluating it is also limited based on the estimated number of logical steps.",
    +}
    +
    +func (CELDeviceSelector) SwaggerDoc() map[string]string {
    +	return map_CELDeviceSelector
    +}
    +
    +var map_Device = map[string]string{
    +	"":      "Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.",
    +	"name":  "Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.",
    +	"basic": "Basic defines one device instance.",
    +}
    +
    +func (Device) SwaggerDoc() map[string]string {
    +	return map_Device
    +}
    +
    +var map_DeviceAllocationConfiguration = map[string]string{
    +	"":         "DeviceAllocationConfiguration gets embedded in an AllocationResult.",
    +	"source":   "Source records whether the configuration comes from a class and thus is not something that a normal user would have been able to set or from a claim.",
    +	"requests": "Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.",
    +}
    +
    +func (DeviceAllocationConfiguration) SwaggerDoc() map[string]string {
    +	return map_DeviceAllocationConfiguration
    +}
    +
    +var map_DeviceAllocationResult = map[string]string{
    +	"":        "DeviceAllocationResult is the result of allocating devices.",
    +	"results": "Results lists all allocated devices.",
    +	"config":  "This field is a combination of all the claim and class configuration parameters. Drivers can distinguish between those based on a flag.\n\nThis includes configuration parameters for drivers which have no allocated devices in the result because it is up to the drivers which configuration parameters they support. They can silently ignore unknown configuration parameters.",
    +}
    +
    +func (DeviceAllocationResult) SwaggerDoc() map[string]string {
    +	return map_DeviceAllocationResult
    +}
    +
    +var map_DeviceAttribute = map[string]string{
    +	"":        "DeviceAttribute must have exactly one field set.",
    +	"int":     "IntValue is a number.",
    +	"bool":    "BoolValue is a true/false value.",
    +	"string":  "StringValue is a string. Must not be longer than 64 characters.",
    +	"version": "VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters.",
    +}
    +
    +func (DeviceAttribute) SwaggerDoc() map[string]string {
    +	return map_DeviceAttribute
    +}
    +
    +var map_DeviceClaim = map[string]string{
    +	"":            "DeviceClaim defines how to request devices with a ResourceClaim.",
    +	"requests":    "Requests represent individual requests for distinct devices which must all be satisfied. If empty, nothing needs to be allocated.",
    +	"constraints": "These constraints must be satisfied by the set of devices that get allocated for the claim.",
    +	"config":      "This field holds configuration for multiple potential drivers which could satisfy requests in this claim. It is ignored while allocating the claim.",
    +}
    +
    +func (DeviceClaim) SwaggerDoc() map[string]string {
    +	return map_DeviceClaim
    +}
    +
    +var map_DeviceClaimConfiguration = map[string]string{
    +	"":         "DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.",
    +	"requests": "Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.",
    +}
    +
    +func (DeviceClaimConfiguration) SwaggerDoc() map[string]string {
    +	return map_DeviceClaimConfiguration
    +}
    +
    +var map_DeviceClass = map[string]string{
    +	"":         "DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. It can be referenced in the device requests of a claim to apply these presets. Cluster scoped.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    +	"metadata": "Standard object metadata",
    +	"spec":     "Spec defines what can be allocated and how to configure it.\n\nThis is mutable. Consumers have to be prepared for classes changing at any time, either because they get updated or replaced. Claim allocations are done once based on whatever was set in classes at the time of allocation.\n\nChanging the spec automatically increments the metadata.generation number.",
    +}
    +
    +func (DeviceClass) SwaggerDoc() map[string]string {
    +	return map_DeviceClass
    +}
    +
    +var map_DeviceClassConfiguration = map[string]string{
    +	"": "DeviceClassConfiguration is used in DeviceClass.",
    +}
    +
    +func (DeviceClassConfiguration) SwaggerDoc() map[string]string {
    +	return map_DeviceClassConfiguration
    +}
    +
    +var map_DeviceClassList = map[string]string{
    +	"":         "DeviceClassList is a collection of classes.",
    +	"metadata": "Standard list metadata",
    +	"items":    "Items is the list of resource classes.",
    +}
    +
    +func (DeviceClassList) SwaggerDoc() map[string]string {
    +	return map_DeviceClassList
    +}
    +
    +var map_DeviceClassSpec = map[string]string{
    +	"":          "DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it.",
    +	"selectors": "Each selector must be satisfied by a device which is claimed via this class.",
    +	"config":    "Config defines configuration parameters that apply to each device that is claimed via this class. Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver.\n\nThey are passed to the driver, but are not considered while allocating the claim.",
    +}
    +
    +func (DeviceClassSpec) SwaggerDoc() map[string]string {
    +	return map_DeviceClassSpec
    +}
    +
    +var map_DeviceConfiguration = map[string]string{
    +	"":       "DeviceConfiguration must have exactly one field set. It gets embedded inline in some other structs which have other fields, so field names must not conflict with those.",
    +	"opaque": "Opaque provides driver-specific configuration parameters.",
    +}
    +
    +func (DeviceConfiguration) SwaggerDoc() map[string]string {
    +	return map_DeviceConfiguration
    +}
    +
    +var map_DeviceConstraint = map[string]string{
    +	"":               "DeviceConstraint must have exactly one field set besides Requests.",
    +	"requests":       "Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.",
    +	"matchAttribute": "MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.\n\nFor example, if you specified \"dra.example.com/numa\" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.\n\nMust include the domain qualifier.",
    +}
    +
    +func (DeviceConstraint) SwaggerDoc() map[string]string {
    +	return map_DeviceConstraint
    +}
    +
    +var map_DeviceRequest = map[string]string{
    +	"":                "DeviceRequest is a request for devices required for a claim. This is typically a request for a single resource like a device, but can also ask for several identical devices.\n\nA DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request.",
    +	"name":            "Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim.\n\nMust be a DNS label.",
    +	"deviceClassName": "DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.\n\nA class is required. Which classes are available depends on the cluster.\n\nAdministrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference.",
    +	"selectors":       "Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. All selectors must be satisfied for a device to be considered.",
    +	"allocationMode":  "AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:\n\n- ExactCount: This request is for a specific number of devices.\n  This is the default. The exact number is provided in the\n  count field.\n\n- All: This request is for all of the matching devices in a pool.\n  Allocation will fail if some devices are already allocated,\n  unless adminAccess is requested.\n\nIf AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field.\n\nMore modes may get added in the future. Clients must refuse to handle requests with unknown modes.",
    +	"count":           "Count is used only when the count mode is \"ExactCount\". Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one.",
    +	"adminAccess":     "AdminAccess indicates that this is a claim for administrative access to the device(s). Claims with AdminAccess are expected to be used for monitoring or other management services for a device.  They ignore all ordinary claims to the device with respect to access modes and any resource allocations.\n\nThis is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.",
    +}
    +
    +func (DeviceRequest) SwaggerDoc() map[string]string {
    +	return map_DeviceRequest
    +}
    +
    +var map_DeviceRequestAllocationResult = map[string]string{
    +	"":            "DeviceRequestAllocationResult contains the allocation result for one request.",
    +	"request":     "Request is the name of the request in the claim which caused this device to be allocated. Multiple devices may have been allocated per request.",
    +	"driver":      "Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.",
    +	"pool":        "This name together with the driver name and the device name field identify which device was allocated (`//`).\n\nMust not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.",
    +	"device":      "Device references one device instance via its name in the driver's resource pool. It must be a DNS label.",
    +	"adminAccess": "AdminAccess indicates that this device was allocated for administrative access. See the corresponding request field for a definition of mode.\n\nThis is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.",
    +}
    +
    +func (DeviceRequestAllocationResult) SwaggerDoc() map[string]string {
    +	return map_DeviceRequestAllocationResult
    +}
    +
    +var map_DeviceSelector = map[string]string{
    +	"":    "DeviceSelector must have exactly one field set.",
    +	"cel": "CEL contains a CEL expression for selecting a device.",
    +}
    +
    +func (DeviceSelector) SwaggerDoc() map[string]string {
    +	return map_DeviceSelector
    +}
    +
    +var map_NetworkDeviceData = map[string]string{
    +	"":                "NetworkDeviceData provides network-related details for the allocated device. This information may be filled by drivers or other components to configure or identify the device within a network context.",
    +	"interfaceName":   "InterfaceName specifies the name of the network interface associated with the allocated device. This might be the name of a physical or virtual network interface being configured in the pod.\n\nMust not be longer than 256 characters.",
    +	"ips":             "IPs lists the network addresses assigned to the device's network interface. This can include both IPv4 and IPv6 addresses. The IPs are in the CIDR notation, which includes both the address and the associated subnet mask. e.g.: \"192.0.2.5/24\" for IPv4 and \"2001:db8::5/64\" for IPv6.",
    +	"hardwareAddress": "HardwareAddress represents the hardware address (e.g. MAC Address) of the device's network interface.\n\nMust not be longer than 128 characters.",
    +}
    +
    +func (NetworkDeviceData) SwaggerDoc() map[string]string {
    +	return map_NetworkDeviceData
    +}
    +
    +var map_OpaqueDeviceConfiguration = map[string]string{
    +	"":           "OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.",
    +	"driver":     "Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.\n\nAn admission policy provided by the driver developer could use this to decide whether it needs to validate them.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.",
    +	"parameters": "Parameters can contain arbitrary data. It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version (\"kind\" + \"apiVersion\" for Kubernetes types), with conversion between different versions.\n\nThe length of the raw data must be smaller or equal to 10 Ki.",
    +}
    +
    +func (OpaqueDeviceConfiguration) SwaggerDoc() map[string]string {
    +	return map_OpaqueDeviceConfiguration
    +}
    +
    +var map_ResourceClaim = map[string]string{
    +	"":         "ResourceClaim describes a request for access to resources in the cluster, for use by workloads. For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    +	"metadata": "Standard object metadata",
    +	"spec":     "Spec describes what is being requested and how to configure it. The spec is immutable.",
    +	"status":   "Status describes whether the claim is ready to use and what has been allocated.",
    +}
    +
    +func (ResourceClaim) SwaggerDoc() map[string]string {
    +	return map_ResourceClaim
    +}
    +
    +var map_ResourceClaimConsumerReference = map[string]string{
    +	"":         "ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.",
    +	"apiGroup": "APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.",
    +	"resource": "Resource is the type of resource being referenced, for example \"pods\".",
    +	"name":     "Name is the name of resource being referenced.",
    +	"uid":      "UID identifies exactly one incarnation of the resource.",
    +}
    +
    +func (ResourceClaimConsumerReference) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimConsumerReference
    +}
    +
    +var map_ResourceClaimList = map[string]string{
    +	"":         "ResourceClaimList is a collection of claims.",
    +	"metadata": "Standard list metadata",
    +	"items":    "Items is the list of resource claims.",
    +}
    +
    +func (ResourceClaimList) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimList
    +}
    +
    +var map_ResourceClaimSpec = map[string]string{
    +	"":        "ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.",
    +	"devices": "Devices defines how to request devices.",
    +}
    +
    +func (ResourceClaimSpec) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimSpec
    +}
    +
    +var map_ResourceClaimStatus = map[string]string{
    +	"":            "ResourceClaimStatus tracks whether the resource has been allocated and what the result of that was.",
    +	"allocation":  "Allocation is set once the claim has been allocated successfully.",
    +	"reservedFor": "ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started. A claim that is in use or might be in use because it has been reserved must not get deallocated.\n\nIn a cluster with multiple scheduler instances, two pods might get scheduled concurrently by different schedulers. When they reference the same ResourceClaim which already has reached its maximum number of consumers, only one pod can be scheduled.\n\nBoth schedulers try to add their pod to the claim.status.reservedFor field, but only the update that reaches the API server first gets stored. The other one fails with an error and the scheduler which issued it knows that it must put the pod back into the queue, waiting for the ResourceClaim to become usable again.\n\nThere can be at most 32 such reservations. This may get increased in the future, but not reduced.",
    +	"devices":     "Devices contains the status of each device allocated for this claim, as reported by the driver. This can include driver-specific information. Entries are owned by their respective drivers.",
    +}
    +
    +func (ResourceClaimStatus) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimStatus
    +}
    +
    +var map_ResourceClaimTemplate = map[string]string{
    +	"":         "ResourceClaimTemplate is used to produce ResourceClaim objects.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    +	"metadata": "Standard object metadata",
    +	"spec":     "Describes the ResourceClaim that is to be generated.\n\nThis field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore.",
    +}
    +
    +func (ResourceClaimTemplate) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimTemplate
    +}
    +
    +var map_ResourceClaimTemplateList = map[string]string{
    +	"":         "ResourceClaimTemplateList is a collection of claim templates.",
    +	"metadata": "Standard list metadata",
    +	"items":    "Items is the list of resource claim templates.",
    +}
    +
    +func (ResourceClaimTemplateList) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimTemplateList
    +}
    +
    +var map_ResourceClaimTemplateSpec = map[string]string{
    +	"":         "ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.",
    +	"metadata": "ObjectMeta may contain labels and annotations that will be copied into the ResourceClaim when creating it. No other fields are allowed and will be rejected during validation.",
    +	"spec":     "Spec for the ResourceClaim. The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here.",
    +}
    +
    +func (ResourceClaimTemplateSpec) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimTemplateSpec
    +}
    +
    +var map_ResourcePool = map[string]string{
    +	"":                   "ResourcePool describes the pool that ResourceSlices belong to.",
    +	"name":               "Name is used to identify the pool. For node-local devices, this is often the node name, but this is not required.\n\nIt must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable.",
    +	"generation":         "Generation tracks the change in a pool over time. Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted.\n\nCombined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state.",
    +	"resourceSliceCount": "ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero.\n\nConsumers can use this to check whether they have seen all ResourceSlices belonging to the same pool.",
    +}
    +
    +func (ResourcePool) SwaggerDoc() map[string]string {
    +	return map_ResourcePool
    +}
    +
    +var map_ResourceSlice = map[string]string{
    +	"":         "ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver.\n\nAt the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple , , .\n\nWhenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others.\n\nWhen allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool.\n\nFor resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    +	"metadata": "Standard object metadata",
    +	"spec":     "Contains the information published by the driver.\n\nChanging the spec automatically increments the metadata.generation number.",
    +}
    +
    +func (ResourceSlice) SwaggerDoc() map[string]string {
    +	return map_ResourceSlice
    +}
    +
    +var map_ResourceSliceList = map[string]string{
    +	"":         "ResourceSliceList is a collection of ResourceSlices.",
    +	"metadata": "Standard list metadata",
    +	"items":    "Items is the list of resource ResourceSlices.",
    +}
    +
    +func (ResourceSliceList) SwaggerDoc() map[string]string {
    +	return map_ResourceSliceList
    +}
    +
    +var map_ResourceSliceSpec = map[string]string{
    +	"":             "ResourceSliceSpec contains the information published by the driver in one ResourceSlice.",
    +	"driver":       "Driver identifies the DRA driver providing the capacity information. A field selector can be used to list only ResourceSlice objects with a certain driver name.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable.",
    +	"pool":         "Pool describes the pool that this ResourceSlice belongs to.",
    +	"nodeName":     "NodeName identifies the node which provides the resources in this pool. A field selector can be used to list only ResourceSlice objects belonging to a certain node.\n\nThis field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available.\n\nExactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable.",
    +	"nodeSelector": "NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node.\n\nMust use exactly one term.\n\nExactly one of NodeName, NodeSelector and AllNodes must be set.",
    +	"allNodes":     "AllNodes indicates that all nodes have access to the resources in the pool.\n\nExactly one of NodeName, NodeSelector and AllNodes must be set.",
    +	"devices":      "Devices lists some or all of the devices in this pool.\n\nMust not have more than 128 entries.",
    +}
    +
    +func (ResourceSliceSpec) SwaggerDoc() map[string]string {
    +	return map_ResourceSliceSpec
    +}
    +
    +// AUTO-GENERATED FUNCTIONS END HERE
    diff --git a/vendor/k8s.io/api/resource/v1alpha3/zz_generated.deepcopy.go b/vendor/k8s.io/api/resource/v1alpha3/zz_generated.deepcopy.go
    new file mode 100644
    index 000000000000..07ba47b59bd0
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1alpha3/zz_generated.deepcopy.go
    @@ -0,0 +1,866 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by deepcopy-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	corev1 "k8s.io/api/core/v1"
    +	resource "k8s.io/apimachinery/pkg/api/resource"
    +	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 *AllocatedDeviceStatus) DeepCopyInto(out *AllocatedDeviceStatus) {
    +	*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])
    +		}
    +	}
    +	in.Data.DeepCopyInto(&out.Data)
    +	if in.NetworkData != nil {
    +		in, out := &in.NetworkData, &out.NetworkData
    +		*out = new(NetworkDeviceData)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocatedDeviceStatus.
    +func (in *AllocatedDeviceStatus) DeepCopy() *AllocatedDeviceStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(AllocatedDeviceStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *AllocationResult) DeepCopyInto(out *AllocationResult) {
    +	*out = *in
    +	in.Devices.DeepCopyInto(&out.Devices)
    +	if in.NodeSelector != nil {
    +		in, out := &in.NodeSelector, &out.NodeSelector
    +		*out = new(corev1.NodeSelector)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocationResult.
    +func (in *AllocationResult) DeepCopy() *AllocationResult {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(AllocationResult)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *BasicDevice) DeepCopyInto(out *BasicDevice) {
    +	*out = *in
    +	if in.Attributes != nil {
    +		in, out := &in.Attributes, &out.Attributes
    +		*out = make(map[QualifiedName]DeviceAttribute, len(*in))
    +		for key, val := range *in {
    +			(*out)[key] = *val.DeepCopy()
    +		}
    +	}
    +	if in.Capacity != nil {
    +		in, out := &in.Capacity, &out.Capacity
    +		*out = make(map[QualifiedName]resource.Quantity, len(*in))
    +		for key, val := range *in {
    +			(*out)[key] = val.DeepCopy()
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BasicDevice.
    +func (in *BasicDevice) DeepCopy() *BasicDevice {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(BasicDevice)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *CELDeviceSelector) DeepCopyInto(out *CELDeviceSelector) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CELDeviceSelector.
    +func (in *CELDeviceSelector) DeepCopy() *CELDeviceSelector {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(CELDeviceSelector)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *Device) DeepCopyInto(out *Device) {
    +	*out = *in
    +	if in.Basic != nil {
    +		in, out := &in.Basic, &out.Basic
    +		*out = new(BasicDevice)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Device.
    +func (in *Device) DeepCopy() *Device {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(Device)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceAllocationConfiguration) DeepCopyInto(out *DeviceAllocationConfiguration) {
    +	*out = *in
    +	if in.Requests != nil {
    +		in, out := &in.Requests, &out.Requests
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	in.DeviceConfiguration.DeepCopyInto(&out.DeviceConfiguration)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceAllocationConfiguration.
    +func (in *DeviceAllocationConfiguration) DeepCopy() *DeviceAllocationConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceAllocationConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceAllocationResult) DeepCopyInto(out *DeviceAllocationResult) {
    +	*out = *in
    +	if in.Results != nil {
    +		in, out := &in.Results, &out.Results
    +		*out = make([]DeviceRequestAllocationResult, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.Config != nil {
    +		in, out := &in.Config, &out.Config
    +		*out = make([]DeviceAllocationConfiguration, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceAllocationResult.
    +func (in *DeviceAllocationResult) DeepCopy() *DeviceAllocationResult {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceAllocationResult)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceAttribute) DeepCopyInto(out *DeviceAttribute) {
    +	*out = *in
    +	if in.IntValue != nil {
    +		in, out := &in.IntValue, &out.IntValue
    +		*out = new(int64)
    +		**out = **in
    +	}
    +	if in.BoolValue != nil {
    +		in, out := &in.BoolValue, &out.BoolValue
    +		*out = new(bool)
    +		**out = **in
    +	}
    +	if in.StringValue != nil {
    +		in, out := &in.StringValue, &out.StringValue
    +		*out = new(string)
    +		**out = **in
    +	}
    +	if in.VersionValue != nil {
    +		in, out := &in.VersionValue, &out.VersionValue
    +		*out = new(string)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceAttribute.
    +func (in *DeviceAttribute) DeepCopy() *DeviceAttribute {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceAttribute)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceClaim) DeepCopyInto(out *DeviceClaim) {
    +	*out = *in
    +	if in.Requests != nil {
    +		in, out := &in.Requests, &out.Requests
    +		*out = make([]DeviceRequest, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.Constraints != nil {
    +		in, out := &in.Constraints, &out.Constraints
    +		*out = make([]DeviceConstraint, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.Config != nil {
    +		in, out := &in.Config, &out.Config
    +		*out = make([]DeviceClaimConfiguration, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClaim.
    +func (in *DeviceClaim) DeepCopy() *DeviceClaim {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClaim)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceClaimConfiguration) DeepCopyInto(out *DeviceClaimConfiguration) {
    +	*out = *in
    +	if in.Requests != nil {
    +		in, out := &in.Requests, &out.Requests
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	in.DeviceConfiguration.DeepCopyInto(&out.DeviceConfiguration)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClaimConfiguration.
    +func (in *DeviceClaimConfiguration) DeepCopy() *DeviceClaimConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClaimConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceClass) DeepCopyInto(out *DeviceClass) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClass.
    +func (in *DeviceClass) DeepCopy() *DeviceClass {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClass)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *DeviceClass) 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 *DeviceClassConfiguration) DeepCopyInto(out *DeviceClassConfiguration) {
    +	*out = *in
    +	in.DeviceConfiguration.DeepCopyInto(&out.DeviceConfiguration)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClassConfiguration.
    +func (in *DeviceClassConfiguration) DeepCopy() *DeviceClassConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClassConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceClassList) DeepCopyInto(out *DeviceClassList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]DeviceClass, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClassList.
    +func (in *DeviceClassList) DeepCopy() *DeviceClassList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClassList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *DeviceClassList) 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 *DeviceClassSpec) DeepCopyInto(out *DeviceClassSpec) {
    +	*out = *in
    +	if in.Selectors != nil {
    +		in, out := &in.Selectors, &out.Selectors
    +		*out = make([]DeviceSelector, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.Config != nil {
    +		in, out := &in.Config, &out.Config
    +		*out = make([]DeviceClassConfiguration, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClassSpec.
    +func (in *DeviceClassSpec) DeepCopy() *DeviceClassSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClassSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceConfiguration) DeepCopyInto(out *DeviceConfiguration) {
    +	*out = *in
    +	if in.Opaque != nil {
    +		in, out := &in.Opaque, &out.Opaque
    +		*out = new(OpaqueDeviceConfiguration)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceConfiguration.
    +func (in *DeviceConfiguration) DeepCopy() *DeviceConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceConstraint) DeepCopyInto(out *DeviceConstraint) {
    +	*out = *in
    +	if in.Requests != nil {
    +		in, out := &in.Requests, &out.Requests
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.MatchAttribute != nil {
    +		in, out := &in.MatchAttribute, &out.MatchAttribute
    +		*out = new(FullyQualifiedName)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceConstraint.
    +func (in *DeviceConstraint) DeepCopy() *DeviceConstraint {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceConstraint)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceRequest) DeepCopyInto(out *DeviceRequest) {
    +	*out = *in
    +	if in.Selectors != nil {
    +		in, out := &in.Selectors, &out.Selectors
    +		*out = make([]DeviceSelector, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.AdminAccess != nil {
    +		in, out := &in.AdminAccess, &out.AdminAccess
    +		*out = new(bool)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceRequest.
    +func (in *DeviceRequest) DeepCopy() *DeviceRequest {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceRequest)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceRequestAllocationResult) DeepCopyInto(out *DeviceRequestAllocationResult) {
    +	*out = *in
    +	if in.AdminAccess != nil {
    +		in, out := &in.AdminAccess, &out.AdminAccess
    +		*out = new(bool)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceRequestAllocationResult.
    +func (in *DeviceRequestAllocationResult) DeepCopy() *DeviceRequestAllocationResult {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceRequestAllocationResult)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceSelector) DeepCopyInto(out *DeviceSelector) {
    +	*out = *in
    +	if in.CEL != nil {
    +		in, out := &in.CEL, &out.CEL
    +		*out = new(CELDeviceSelector)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceSelector.
    +func (in *DeviceSelector) DeepCopy() *DeviceSelector {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceSelector)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *NetworkDeviceData) DeepCopyInto(out *NetworkDeviceData) {
    +	*out = *in
    +	if in.IPs != nil {
    +		in, out := &in.IPs, &out.IPs
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDeviceData.
    +func (in *NetworkDeviceData) DeepCopy() *NetworkDeviceData {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(NetworkDeviceData)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *OpaqueDeviceConfiguration) DeepCopyInto(out *OpaqueDeviceConfiguration) {
    +	*out = *in
    +	in.Parameters.DeepCopyInto(&out.Parameters)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpaqueDeviceConfiguration.
    +func (in *OpaqueDeviceConfiguration) DeepCopy() *OpaqueDeviceConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(OpaqueDeviceConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceClaim) DeepCopyInto(out *ResourceClaim) {
    +	*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 ResourceClaim.
    +func (in *ResourceClaim) DeepCopy() *ResourceClaim {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaim)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceClaim) 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 *ResourceClaimConsumerReference) DeepCopyInto(out *ResourceClaimConsumerReference) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimConsumerReference.
    +func (in *ResourceClaimConsumerReference) DeepCopy() *ResourceClaimConsumerReference {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimConsumerReference)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceClaimList) DeepCopyInto(out *ResourceClaimList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]ResourceClaim, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimList.
    +func (in *ResourceClaimList) DeepCopy() *ResourceClaimList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceClaimList) 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 *ResourceClaimSpec) DeepCopyInto(out *ResourceClaimSpec) {
    +	*out = *in
    +	in.Devices.DeepCopyInto(&out.Devices)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimSpec.
    +func (in *ResourceClaimSpec) DeepCopy() *ResourceClaimSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceClaimStatus) DeepCopyInto(out *ResourceClaimStatus) {
    +	*out = *in
    +	if in.Allocation != nil {
    +		in, out := &in.Allocation, &out.Allocation
    +		*out = new(AllocationResult)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.ReservedFor != nil {
    +		in, out := &in.ReservedFor, &out.ReservedFor
    +		*out = make([]ResourceClaimConsumerReference, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.Devices != nil {
    +		in, out := &in.Devices, &out.Devices
    +		*out = make([]AllocatedDeviceStatus, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimStatus.
    +func (in *ResourceClaimStatus) DeepCopy() *ResourceClaimStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceClaimTemplate) DeepCopyInto(out *ResourceClaimTemplate) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimTemplate.
    +func (in *ResourceClaimTemplate) DeepCopy() *ResourceClaimTemplate {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimTemplate)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceClaimTemplate) 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 *ResourceClaimTemplateList) DeepCopyInto(out *ResourceClaimTemplateList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]ResourceClaimTemplate, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimTemplateList.
    +func (in *ResourceClaimTemplateList) DeepCopy() *ResourceClaimTemplateList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimTemplateList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceClaimTemplateList) 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 *ResourceClaimTemplateSpec) DeepCopyInto(out *ResourceClaimTemplateSpec) {
    +	*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 ResourceClaimTemplateSpec.
    +func (in *ResourceClaimTemplateSpec) DeepCopy() *ResourceClaimTemplateSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimTemplateSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourcePool) DeepCopyInto(out *ResourcePool) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourcePool.
    +func (in *ResourcePool) DeepCopy() *ResourcePool {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourcePool)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceSlice) DeepCopyInto(out *ResourceSlice) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSlice.
    +func (in *ResourceSlice) DeepCopy() *ResourceSlice {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceSlice)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceSlice) 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 *ResourceSliceList) DeepCopyInto(out *ResourceSliceList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]ResourceSlice, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSliceList.
    +func (in *ResourceSliceList) DeepCopy() *ResourceSliceList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceSliceList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceSliceList) 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 *ResourceSliceSpec) DeepCopyInto(out *ResourceSliceSpec) {
    +	*out = *in
    +	out.Pool = in.Pool
    +	if in.NodeSelector != nil {
    +		in, out := &in.NodeSelector, &out.NodeSelector
    +		*out = new(corev1.NodeSelector)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.Devices != nil {
    +		in, out := &in.Devices, &out.Devices
    +		*out = make([]Device, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSliceSpec.
    +func (in *ResourceSliceSpec) DeepCopy() *ResourceSliceSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceSliceSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    diff --git a/vendor/k8s.io/api/resource/v1alpha3/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/resource/v1alpha3/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..9f57ab67042f
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1alpha3/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,218 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	schema "k8s.io/apimachinery/pkg/runtime/schema"
    +)
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *DeviceClass) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *DeviceClass) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleReplacement is an autogenerated function, returning the group, version, and kind that should be used instead of this deprecated type.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:replacement=,," tags in types.go.
    +func (in *DeviceClass) APILifecycleReplacement() schema.GroupVersionKind {
    +	return schema.GroupVersionKind{Group: "resource.k8s.io", Version: "v1beta1", Kind: "DeviceClass"}
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *DeviceClass) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *DeviceClassList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *DeviceClassList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleReplacement is an autogenerated function, returning the group, version, and kind that should be used instead of this deprecated type.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:replacement=,," tags in types.go.
    +func (in *DeviceClassList) APILifecycleReplacement() schema.GroupVersionKind {
    +	return schema.GroupVersionKind{Group: "resource.k8s.io", Version: "v1beta1", Kind: "DeviceClassList"}
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *DeviceClassList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceClaim) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceClaim) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleReplacement is an autogenerated function, returning the group, version, and kind that should be used instead of this deprecated type.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:replacement=,," tags in types.go.
    +func (in *ResourceClaim) APILifecycleReplacement() schema.GroupVersionKind {
    +	return schema.GroupVersionKind{Group: "resource.k8s.io", Version: "v1beta1", Kind: "ResourceClaim"}
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceClaim) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceClaimList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceClaimList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleReplacement is an autogenerated function, returning the group, version, and kind that should be used instead of this deprecated type.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:replacement=,," tags in types.go.
    +func (in *ResourceClaimList) APILifecycleReplacement() schema.GroupVersionKind {
    +	return schema.GroupVersionKind{Group: "resource.k8s.io", Version: "v1beta1", Kind: "ResourceClaimList"}
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceClaimList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceClaimTemplate) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceClaimTemplate) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleReplacement is an autogenerated function, returning the group, version, and kind that should be used instead of this deprecated type.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:replacement=,," tags in types.go.
    +func (in *ResourceClaimTemplate) APILifecycleReplacement() schema.GroupVersionKind {
    +	return schema.GroupVersionKind{Group: "resource.k8s.io", Version: "v1beta1", Kind: "ResourceClaimTemplate"}
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceClaimTemplate) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceClaimTemplateList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceClaimTemplateList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleReplacement is an autogenerated function, returning the group, version, and kind that should be used instead of this deprecated type.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:replacement=,," tags in types.go.
    +func (in *ResourceClaimTemplateList) APILifecycleReplacement() schema.GroupVersionKind {
    +	return schema.GroupVersionKind{Group: "resource.k8s.io", Version: "v1beta1", Kind: "ResourceClaimTemplateList"}
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceClaimTemplateList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceSlice) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceSlice) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleReplacement is an autogenerated function, returning the group, version, and kind that should be used instead of this deprecated type.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:replacement=,," tags in types.go.
    +func (in *ResourceSlice) APILifecycleReplacement() schema.GroupVersionKind {
    +	return schema.GroupVersionKind{Group: "resource.k8s.io", Version: "v1beta1", Kind: "ResourceSlice"}
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceSlice) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceSliceList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceSliceList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleReplacement is an autogenerated function, returning the group, version, and kind that should be used instead of this deprecated type.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:replacement=,," tags in types.go.
    +func (in *ResourceSliceList) APILifecycleReplacement() schema.GroupVersionKind {
    +	return schema.GroupVersionKind{Group: "resource.k8s.io", Version: "v1beta1", Kind: "ResourceSliceList"}
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceSliceList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    diff --git a/vendor/k8s.io/api/resource/v1alpha2/doc.go b/vendor/k8s.io/api/resource/v1beta1/doc.go
    similarity index 81%
    rename from vendor/k8s.io/api/resource/v1alpha2/doc.go
    rename to vendor/k8s.io/api/resource/v1beta1/doc.go
    index d9c20e089d97..88c35c6ca746 100644
    --- a/vendor/k8s.io/api/resource/v1alpha2/doc.go
    +++ b/vendor/k8s.io/api/resource/v1beta1/doc.go
    @@ -17,8 +17,8 @@ limitations under the License.
     // +k8s:openapi-gen=true
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
    -
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=resource.k8s.io
     
    -// Package v1alpha2 is the v1alpha2 version of the resource API.
    -package v1alpha2 // import "k8s.io/api/resource/v1alpha2"
    +// Package v1beta1 is the v1beta1 version of the resource API.
    +package v1beta1 // import "k8s.io/api/resource/v1beta1"
    diff --git a/vendor/k8s.io/api/resource/v1beta1/generated.pb.go b/vendor/k8s.io/api/resource/v1beta1/generated.pb.go
    new file mode 100644
    index 000000000000..df4e68f306bd
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1beta1/generated.pb.go
    @@ -0,0 +1,8655 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by protoc-gen-gogo. DO NOT EDIT.
    +// source: k8s.io/api/resource/v1beta1/generated.proto
    +
    +package v1beta1
    +
    +import (
    +	fmt "fmt"
    +
    +	io "io"
    +
    +	proto "github.com/gogo/protobuf/proto"
    +	github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
    +	v11 "k8s.io/api/core/v1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +
    +	math "math"
    +	math_bits "math/bits"
    +	reflect "reflect"
    +	strings "strings"
    +
    +	k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
    +)
    +
    +// Reference imports to suppress errors if they are not otherwise used.
    +var _ = proto.Marshal
    +var _ = fmt.Errorf
    +var _ = math.Inf
    +
    +// This is a compile-time assertion to ensure that this generated file
    +// is compatible with the proto package it is being compiled against.
    +// A compilation error at this line likely means your copy of the
    +// proto package needs to be updated.
    +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    +
    +func (m *AllocatedDeviceStatus) Reset()      { *m = AllocatedDeviceStatus{} }
    +func (*AllocatedDeviceStatus) ProtoMessage() {}
    +func (*AllocatedDeviceStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{0}
    +}
    +func (m *AllocatedDeviceStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *AllocatedDeviceStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *AllocatedDeviceStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_AllocatedDeviceStatus.Merge(m, src)
    +}
    +func (m *AllocatedDeviceStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *AllocatedDeviceStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_AllocatedDeviceStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_AllocatedDeviceStatus proto.InternalMessageInfo
    +
    +func (m *AllocationResult) Reset()      { *m = AllocationResult{} }
    +func (*AllocationResult) ProtoMessage() {}
    +func (*AllocationResult) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{1}
    +}
    +func (m *AllocationResult) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *AllocationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *AllocationResult) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_AllocationResult.Merge(m, src)
    +}
    +func (m *AllocationResult) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *AllocationResult) XXX_DiscardUnknown() {
    +	xxx_messageInfo_AllocationResult.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_AllocationResult proto.InternalMessageInfo
    +
    +func (m *BasicDevice) Reset()      { *m = BasicDevice{} }
    +func (*BasicDevice) ProtoMessage() {}
    +func (*BasicDevice) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{2}
    +}
    +func (m *BasicDevice) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *BasicDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *BasicDevice) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_BasicDevice.Merge(m, src)
    +}
    +func (m *BasicDevice) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *BasicDevice) XXX_DiscardUnknown() {
    +	xxx_messageInfo_BasicDevice.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_BasicDevice proto.InternalMessageInfo
    +
    +func (m *CELDeviceSelector) Reset()      { *m = CELDeviceSelector{} }
    +func (*CELDeviceSelector) ProtoMessage() {}
    +func (*CELDeviceSelector) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{3}
    +}
    +func (m *CELDeviceSelector) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *CELDeviceSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *CELDeviceSelector) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_CELDeviceSelector.Merge(m, src)
    +}
    +func (m *CELDeviceSelector) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *CELDeviceSelector) XXX_DiscardUnknown() {
    +	xxx_messageInfo_CELDeviceSelector.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_CELDeviceSelector proto.InternalMessageInfo
    +
    +func (m *Device) Reset()      { *m = Device{} }
    +func (*Device) ProtoMessage() {}
    +func (*Device) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{4}
    +}
    +func (m *Device) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *Device) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *Device) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_Device.Merge(m, src)
    +}
    +func (m *Device) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *Device) XXX_DiscardUnknown() {
    +	xxx_messageInfo_Device.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_Device proto.InternalMessageInfo
    +
    +func (m *DeviceAllocationConfiguration) Reset()      { *m = DeviceAllocationConfiguration{} }
    +func (*DeviceAllocationConfiguration) ProtoMessage() {}
    +func (*DeviceAllocationConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{5}
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceAllocationConfiguration.Merge(m, src)
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceAllocationConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceAllocationConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceAllocationConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceAllocationResult) Reset()      { *m = DeviceAllocationResult{} }
    +func (*DeviceAllocationResult) ProtoMessage() {}
    +func (*DeviceAllocationResult) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{6}
    +}
    +func (m *DeviceAllocationResult) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceAllocationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceAllocationResult) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceAllocationResult.Merge(m, src)
    +}
    +func (m *DeviceAllocationResult) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceAllocationResult) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceAllocationResult.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceAllocationResult proto.InternalMessageInfo
    +
    +func (m *DeviceAttribute) Reset()      { *m = DeviceAttribute{} }
    +func (*DeviceAttribute) ProtoMessage() {}
    +func (*DeviceAttribute) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{7}
    +}
    +func (m *DeviceAttribute) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceAttribute) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceAttribute) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceAttribute.Merge(m, src)
    +}
    +func (m *DeviceAttribute) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceAttribute) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceAttribute.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceAttribute proto.InternalMessageInfo
    +
    +func (m *DeviceCapacity) Reset()      { *m = DeviceCapacity{} }
    +func (*DeviceCapacity) ProtoMessage() {}
    +func (*DeviceCapacity) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{8}
    +}
    +func (m *DeviceCapacity) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceCapacity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceCapacity) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceCapacity.Merge(m, src)
    +}
    +func (m *DeviceCapacity) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceCapacity) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceCapacity.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceCapacity proto.InternalMessageInfo
    +
    +func (m *DeviceClaim) Reset()      { *m = DeviceClaim{} }
    +func (*DeviceClaim) ProtoMessage() {}
    +func (*DeviceClaim) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{9}
    +}
    +func (m *DeviceClaim) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClaim) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClaim) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClaim.Merge(m, src)
    +}
    +func (m *DeviceClaim) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClaim) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClaim.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClaim proto.InternalMessageInfo
    +
    +func (m *DeviceClaimConfiguration) Reset()      { *m = DeviceClaimConfiguration{} }
    +func (*DeviceClaimConfiguration) ProtoMessage() {}
    +func (*DeviceClaimConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{10}
    +}
    +func (m *DeviceClaimConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClaimConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClaimConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClaimConfiguration.Merge(m, src)
    +}
    +func (m *DeviceClaimConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClaimConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClaimConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClaimConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceClass) Reset()      { *m = DeviceClass{} }
    +func (*DeviceClass) ProtoMessage() {}
    +func (*DeviceClass) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{11}
    +}
    +func (m *DeviceClass) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClass) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClass) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClass.Merge(m, src)
    +}
    +func (m *DeviceClass) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClass) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClass.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClass proto.InternalMessageInfo
    +
    +func (m *DeviceClassConfiguration) Reset()      { *m = DeviceClassConfiguration{} }
    +func (*DeviceClassConfiguration) ProtoMessage() {}
    +func (*DeviceClassConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{12}
    +}
    +func (m *DeviceClassConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClassConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClassConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClassConfiguration.Merge(m, src)
    +}
    +func (m *DeviceClassConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClassConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClassConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClassConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceClassList) Reset()      { *m = DeviceClassList{} }
    +func (*DeviceClassList) ProtoMessage() {}
    +func (*DeviceClassList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{13}
    +}
    +func (m *DeviceClassList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClassList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClassList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClassList.Merge(m, src)
    +}
    +func (m *DeviceClassList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClassList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClassList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClassList proto.InternalMessageInfo
    +
    +func (m *DeviceClassSpec) Reset()      { *m = DeviceClassSpec{} }
    +func (*DeviceClassSpec) ProtoMessage() {}
    +func (*DeviceClassSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{14}
    +}
    +func (m *DeviceClassSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClassSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClassSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClassSpec.Merge(m, src)
    +}
    +func (m *DeviceClassSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClassSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClassSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClassSpec proto.InternalMessageInfo
    +
    +func (m *DeviceConfiguration) Reset()      { *m = DeviceConfiguration{} }
    +func (*DeviceConfiguration) ProtoMessage() {}
    +func (*DeviceConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{15}
    +}
    +func (m *DeviceConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceConfiguration.Merge(m, src)
    +}
    +func (m *DeviceConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceConstraint) Reset()      { *m = DeviceConstraint{} }
    +func (*DeviceConstraint) ProtoMessage() {}
    +func (*DeviceConstraint) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{16}
    +}
    +func (m *DeviceConstraint) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceConstraint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceConstraint) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceConstraint.Merge(m, src)
    +}
    +func (m *DeviceConstraint) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceConstraint) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceConstraint.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceConstraint proto.InternalMessageInfo
    +
    +func (m *DeviceRequest) Reset()      { *m = DeviceRequest{} }
    +func (*DeviceRequest) ProtoMessage() {}
    +func (*DeviceRequest) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{17}
    +}
    +func (m *DeviceRequest) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceRequest) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceRequest.Merge(m, src)
    +}
    +func (m *DeviceRequest) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceRequest) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceRequest.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceRequest proto.InternalMessageInfo
    +
    +func (m *DeviceRequestAllocationResult) Reset()      { *m = DeviceRequestAllocationResult{} }
    +func (*DeviceRequestAllocationResult) ProtoMessage() {}
    +func (*DeviceRequestAllocationResult) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{18}
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceRequestAllocationResult.Merge(m, src)
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceRequestAllocationResult) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceRequestAllocationResult.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceRequestAllocationResult proto.InternalMessageInfo
    +
    +func (m *DeviceSelector) Reset()      { *m = DeviceSelector{} }
    +func (*DeviceSelector) ProtoMessage() {}
    +func (*DeviceSelector) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{19}
    +}
    +func (m *DeviceSelector) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceSelector) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceSelector.Merge(m, src)
    +}
    +func (m *DeviceSelector) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceSelector) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceSelector.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceSelector proto.InternalMessageInfo
    +
    +func (m *NetworkDeviceData) Reset()      { *m = NetworkDeviceData{} }
    +func (*NetworkDeviceData) ProtoMessage() {}
    +func (*NetworkDeviceData) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{20}
    +}
    +func (m *NetworkDeviceData) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *NetworkDeviceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *NetworkDeviceData) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_NetworkDeviceData.Merge(m, src)
    +}
    +func (m *NetworkDeviceData) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *NetworkDeviceData) XXX_DiscardUnknown() {
    +	xxx_messageInfo_NetworkDeviceData.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_NetworkDeviceData proto.InternalMessageInfo
    +
    +func (m *OpaqueDeviceConfiguration) Reset()      { *m = OpaqueDeviceConfiguration{} }
    +func (*OpaqueDeviceConfiguration) ProtoMessage() {}
    +func (*OpaqueDeviceConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{21}
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_OpaqueDeviceConfiguration.Merge(m, src)
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_OpaqueDeviceConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_OpaqueDeviceConfiguration proto.InternalMessageInfo
    +
    +func (m *ResourceClaim) Reset()      { *m = ResourceClaim{} }
    +func (*ResourceClaim) ProtoMessage() {}
    +func (*ResourceClaim) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{22}
    +}
    +func (m *ResourceClaim) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaim) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaim) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaim.Merge(m, src)
    +}
    +func (m *ResourceClaim) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaim) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaim.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaim proto.InternalMessageInfo
    +
    +func (m *ResourceClaimConsumerReference) Reset()      { *m = ResourceClaimConsumerReference{} }
    +func (*ResourceClaimConsumerReference) ProtoMessage() {}
    +func (*ResourceClaimConsumerReference) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{23}
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimConsumerReference.Merge(m, src)
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimConsumerReference) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimConsumerReference.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimConsumerReference proto.InternalMessageInfo
    +
    +func (m *ResourceClaimList) Reset()      { *m = ResourceClaimList{} }
    +func (*ResourceClaimList) ProtoMessage() {}
    +func (*ResourceClaimList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{24}
    +}
    +func (m *ResourceClaimList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimList.Merge(m, src)
    +}
    +func (m *ResourceClaimList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimList proto.InternalMessageInfo
    +
    +func (m *ResourceClaimSpec) Reset()      { *m = ResourceClaimSpec{} }
    +func (*ResourceClaimSpec) ProtoMessage() {}
    +func (*ResourceClaimSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{25}
    +}
    +func (m *ResourceClaimSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimSpec.Merge(m, src)
    +}
    +func (m *ResourceClaimSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimSpec proto.InternalMessageInfo
    +
    +func (m *ResourceClaimStatus) Reset()      { *m = ResourceClaimStatus{} }
    +func (*ResourceClaimStatus) ProtoMessage() {}
    +func (*ResourceClaimStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{26}
    +}
    +func (m *ResourceClaimStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimStatus.Merge(m, src)
    +}
    +func (m *ResourceClaimStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimStatus proto.InternalMessageInfo
    +
    +func (m *ResourceClaimTemplate) Reset()      { *m = ResourceClaimTemplate{} }
    +func (*ResourceClaimTemplate) ProtoMessage() {}
    +func (*ResourceClaimTemplate) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{27}
    +}
    +func (m *ResourceClaimTemplate) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimTemplate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimTemplate) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimTemplate.Merge(m, src)
    +}
    +func (m *ResourceClaimTemplate) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimTemplate) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimTemplate.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimTemplate proto.InternalMessageInfo
    +
    +func (m *ResourceClaimTemplateList) Reset()      { *m = ResourceClaimTemplateList{} }
    +func (*ResourceClaimTemplateList) ProtoMessage() {}
    +func (*ResourceClaimTemplateList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{28}
    +}
    +func (m *ResourceClaimTemplateList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimTemplateList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimTemplateList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimTemplateList.Merge(m, src)
    +}
    +func (m *ResourceClaimTemplateList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimTemplateList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimTemplateList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimTemplateList proto.InternalMessageInfo
    +
    +func (m *ResourceClaimTemplateSpec) Reset()      { *m = ResourceClaimTemplateSpec{} }
    +func (*ResourceClaimTemplateSpec) ProtoMessage() {}
    +func (*ResourceClaimTemplateSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{29}
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimTemplateSpec.Merge(m, src)
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimTemplateSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimTemplateSpec proto.InternalMessageInfo
    +
    +func (m *ResourcePool) Reset()      { *m = ResourcePool{} }
    +func (*ResourcePool) ProtoMessage() {}
    +func (*ResourcePool) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{30}
    +}
    +func (m *ResourcePool) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourcePool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourcePool) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourcePool.Merge(m, src)
    +}
    +func (m *ResourcePool) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourcePool) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourcePool.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourcePool proto.InternalMessageInfo
    +
    +func (m *ResourceSlice) Reset()      { *m = ResourceSlice{} }
    +func (*ResourceSlice) ProtoMessage() {}
    +func (*ResourceSlice) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{31}
    +}
    +func (m *ResourceSlice) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceSlice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceSlice) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceSlice.Merge(m, src)
    +}
    +func (m *ResourceSlice) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceSlice) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceSlice.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceSlice proto.InternalMessageInfo
    +
    +func (m *ResourceSliceList) Reset()      { *m = ResourceSliceList{} }
    +func (*ResourceSliceList) ProtoMessage() {}
    +func (*ResourceSliceList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{32}
    +}
    +func (m *ResourceSliceList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceSliceList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceSliceList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceSliceList.Merge(m, src)
    +}
    +func (m *ResourceSliceList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceSliceList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceSliceList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceSliceList proto.InternalMessageInfo
    +
    +func (m *ResourceSliceSpec) Reset()      { *m = ResourceSliceSpec{} }
    +func (*ResourceSliceSpec) ProtoMessage() {}
    +func (*ResourceSliceSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_ba331e3ec6484c27, []int{33}
    +}
    +func (m *ResourceSliceSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceSliceSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceSliceSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceSliceSpec.Merge(m, src)
    +}
    +func (m *ResourceSliceSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceSliceSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceSliceSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceSliceSpec proto.InternalMessageInfo
    +
    +func init() {
    +	proto.RegisterType((*AllocatedDeviceStatus)(nil), "k8s.io.api.resource.v1beta1.AllocatedDeviceStatus")
    +	proto.RegisterType((*AllocationResult)(nil), "k8s.io.api.resource.v1beta1.AllocationResult")
    +	proto.RegisterType((*BasicDevice)(nil), "k8s.io.api.resource.v1beta1.BasicDevice")
    +	proto.RegisterMapType((map[QualifiedName]DeviceAttribute)(nil), "k8s.io.api.resource.v1beta1.BasicDevice.AttributesEntry")
    +	proto.RegisterMapType((map[QualifiedName]DeviceCapacity)(nil), "k8s.io.api.resource.v1beta1.BasicDevice.CapacityEntry")
    +	proto.RegisterType((*CELDeviceSelector)(nil), "k8s.io.api.resource.v1beta1.CELDeviceSelector")
    +	proto.RegisterType((*Device)(nil), "k8s.io.api.resource.v1beta1.Device")
    +	proto.RegisterType((*DeviceAllocationConfiguration)(nil), "k8s.io.api.resource.v1beta1.DeviceAllocationConfiguration")
    +	proto.RegisterType((*DeviceAllocationResult)(nil), "k8s.io.api.resource.v1beta1.DeviceAllocationResult")
    +	proto.RegisterType((*DeviceAttribute)(nil), "k8s.io.api.resource.v1beta1.DeviceAttribute")
    +	proto.RegisterType((*DeviceCapacity)(nil), "k8s.io.api.resource.v1beta1.DeviceCapacity")
    +	proto.RegisterType((*DeviceClaim)(nil), "k8s.io.api.resource.v1beta1.DeviceClaim")
    +	proto.RegisterType((*DeviceClaimConfiguration)(nil), "k8s.io.api.resource.v1beta1.DeviceClaimConfiguration")
    +	proto.RegisterType((*DeviceClass)(nil), "k8s.io.api.resource.v1beta1.DeviceClass")
    +	proto.RegisterType((*DeviceClassConfiguration)(nil), "k8s.io.api.resource.v1beta1.DeviceClassConfiguration")
    +	proto.RegisterType((*DeviceClassList)(nil), "k8s.io.api.resource.v1beta1.DeviceClassList")
    +	proto.RegisterType((*DeviceClassSpec)(nil), "k8s.io.api.resource.v1beta1.DeviceClassSpec")
    +	proto.RegisterType((*DeviceConfiguration)(nil), "k8s.io.api.resource.v1beta1.DeviceConfiguration")
    +	proto.RegisterType((*DeviceConstraint)(nil), "k8s.io.api.resource.v1beta1.DeviceConstraint")
    +	proto.RegisterType((*DeviceRequest)(nil), "k8s.io.api.resource.v1beta1.DeviceRequest")
    +	proto.RegisterType((*DeviceRequestAllocationResult)(nil), "k8s.io.api.resource.v1beta1.DeviceRequestAllocationResult")
    +	proto.RegisterType((*DeviceSelector)(nil), "k8s.io.api.resource.v1beta1.DeviceSelector")
    +	proto.RegisterType((*NetworkDeviceData)(nil), "k8s.io.api.resource.v1beta1.NetworkDeviceData")
    +	proto.RegisterType((*OpaqueDeviceConfiguration)(nil), "k8s.io.api.resource.v1beta1.OpaqueDeviceConfiguration")
    +	proto.RegisterType((*ResourceClaim)(nil), "k8s.io.api.resource.v1beta1.ResourceClaim")
    +	proto.RegisterType((*ResourceClaimConsumerReference)(nil), "k8s.io.api.resource.v1beta1.ResourceClaimConsumerReference")
    +	proto.RegisterType((*ResourceClaimList)(nil), "k8s.io.api.resource.v1beta1.ResourceClaimList")
    +	proto.RegisterType((*ResourceClaimSpec)(nil), "k8s.io.api.resource.v1beta1.ResourceClaimSpec")
    +	proto.RegisterType((*ResourceClaimStatus)(nil), "k8s.io.api.resource.v1beta1.ResourceClaimStatus")
    +	proto.RegisterType((*ResourceClaimTemplate)(nil), "k8s.io.api.resource.v1beta1.ResourceClaimTemplate")
    +	proto.RegisterType((*ResourceClaimTemplateList)(nil), "k8s.io.api.resource.v1beta1.ResourceClaimTemplateList")
    +	proto.RegisterType((*ResourceClaimTemplateSpec)(nil), "k8s.io.api.resource.v1beta1.ResourceClaimTemplateSpec")
    +	proto.RegisterType((*ResourcePool)(nil), "k8s.io.api.resource.v1beta1.ResourcePool")
    +	proto.RegisterType((*ResourceSlice)(nil), "k8s.io.api.resource.v1beta1.ResourceSlice")
    +	proto.RegisterType((*ResourceSliceList)(nil), "k8s.io.api.resource.v1beta1.ResourceSliceList")
    +	proto.RegisterType((*ResourceSliceSpec)(nil), "k8s.io.api.resource.v1beta1.ResourceSliceSpec")
    +}
    +
    +func init() {
    +	proto.RegisterFile("k8s.io/api/resource/v1beta1/generated.proto", fileDescriptor_ba331e3ec6484c27)
    +}
    +
    +var fileDescriptor_ba331e3ec6484c27 = []byte{
    +	// 2051 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x19, 0x4b, 0x8f, 0x1b, 0x49,
    +	0x79, 0xda, 0xed, 0x79, 0x7d, 0x9e, 0x57, 0x2a, 0x64, 0x71, 0x26, 0xc2, 0x9e, 0x74, 0x24, 0xf0,
    +	0x66, 0xb3, 0xed, 0x8d, 0x81, 0x28, 0xca, 0x5e, 0x70, 0xcf, 0xcc, 0x06, 0x43, 0x32, 0x99, 0xad,
    +	0x61, 0x43, 0xb4, 0x6c, 0x10, 0x35, 0xed, 0x9a, 0x99, 0x66, 0xec, 0x6e, 0xa7, 0xbb, 0x7a, 0xb2,
    +	0x73, 0x40, 0xa0, 0x3d, 0xaf, 0x10, 0x77, 0xc4, 0x85, 0x03, 0x12, 0x12, 0x42, 0xfc, 0x02, 0x90,
    +	0x40, 0x88, 0x88, 0x03, 0xac, 0xe0, 0xb2, 0xe2, 0x60, 0x88, 0xf7, 0x07, 0x70, 0xcf, 0x09, 0x55,
    +	0x75, 0xf5, 0xd3, 0x6e, 0xd3, 0x83, 0x96, 0x51, 0xf6, 0xe6, 0xfe, 0xde, 0xf5, 0xbd, 0xab, 0x0c,
    +	0xaf, 0x1d, 0xdf, 0xf6, 0x74, 0xcb, 0x69, 0x92, 0x81, 0xd5, 0x74, 0xa9, 0xe7, 0xf8, 0xae, 0x49,
    +	0x9b, 0x27, 0x37, 0xf7, 0x29, 0x23, 0x37, 0x9b, 0x87, 0xd4, 0xa6, 0x2e, 0x61, 0xb4, 0xab, 0x0f,
    +	0x5c, 0x87, 0x39, 0xe8, 0x4a, 0x40, 0xac, 0x93, 0x81, 0xa5, 0x87, 0xc4, 0xba, 0x24, 0x5e, 0x7f,
    +	0xfd, 0xd0, 0x62, 0x47, 0xfe, 0xbe, 0x6e, 0x3a, 0xfd, 0xe6, 0xa1, 0x73, 0xe8, 0x34, 0x05, 0xcf,
    +	0xbe, 0x7f, 0x20, 0xbe, 0xc4, 0x87, 0xf8, 0x15, 0xc8, 0x5a, 0xd7, 0x12, 0x8a, 0x4d, 0xc7, 0xe5,
    +	0x4a, 0xb3, 0xfa, 0xd6, 0xbf, 0x12, 0xd3, 0xf4, 0x89, 0x79, 0x64, 0xd9, 0xd4, 0x3d, 0x6d, 0x0e,
    +	0x8e, 0x0f, 0xd3, 0xd6, 0x9e, 0x85, 0xcb, 0x6b, 0xf6, 0x29, 0x23, 0x93, 0x74, 0x35, 0xf3, 0xb8,
    +	0x5c, 0xdf, 0x66, 0x56, 0x7f, 0x5c, 0xcd, 0xad, 0xff, 0xc6, 0xe0, 0x99, 0x47, 0xb4, 0x4f, 0xb2,
    +	0x7c, 0xda, 0xcf, 0x55, 0xb8, 0xd4, 0xee, 0xf5, 0x1c, 0x93, 0xc3, 0xb6, 0xe8, 0x89, 0x65, 0xd2,
    +	0x3d, 0x46, 0x98, 0xef, 0xa1, 0x2f, 0xc2, 0x5c, 0xd7, 0xb5, 0x4e, 0xa8, 0x5b, 0x55, 0x36, 0x94,
    +	0xc6, 0xa2, 0xb1, 0xf2, 0x6c, 0x58, 0x9f, 0x19, 0x0d, 0xeb, 0x73, 0x5b, 0x02, 0x8a, 0x25, 0x16,
    +	0x6d, 0x40, 0x79, 0xe0, 0x38, 0xbd, 0x6a, 0x49, 0x50, 0x2d, 0x49, 0xaa, 0xf2, 0xae, 0xe3, 0xf4,
    +	0xb0, 0xc0, 0x08, 0x49, 0x42, 0x72, 0x55, 0xcd, 0x48, 0x12, 0x50, 0x2c, 0xb1, 0xc8, 0x04, 0x30,
    +	0x1d, 0xbb, 0x6b, 0x31, 0xcb, 0xb1, 0xbd, 0x6a, 0x79, 0x43, 0x6d, 0x54, 0x5a, 0x4d, 0x3d, 0x8e,
    +	0x72, 0x74, 0x30, 0x7d, 0x70, 0x7c, 0xc8, 0x01, 0x9e, 0xce, 0xfd, 0xa7, 0x9f, 0xdc, 0xd4, 0x37,
    +	0x43, 0x3e, 0x03, 0x49, 0xe1, 0x10, 0x81, 0x3c, 0x9c, 0x10, 0x8b, 0x1e, 0x40, 0xb9, 0x4b, 0x18,
    +	0xa9, 0xce, 0x6e, 0x28, 0x8d, 0x4a, 0xeb, 0xf5, 0x5c, 0xf1, 0xd2, 0x6f, 0x3a, 0x26, 0x4f, 0xb7,
    +	0xdf, 0x67, 0xd4, 0xf6, 0xb8, 0xf0, 0xe8, 0x74, 0x5b, 0x84, 0x11, 0x2c, 0x04, 0x21, 0x02, 0x15,
    +	0x9b, 0xb2, 0xa7, 0x8e, 0x7b, 0xcc, 0x81, 0xd5, 0x39, 0x21, 0x57, 0xd7, 0xa7, 0x24, 0xa7, 0xbe,
    +	0x23, 0xe9, 0xc5, 0xb1, 0x39, 0x97, 0xb1, 0x3a, 0x1a, 0xd6, 0x2b, 0x3b, 0xb1, 0x18, 0x9c, 0x94,
    +	0xa9, 0xfd, 0x59, 0x81, 0x35, 0x19, 0x24, 0xcb, 0xb1, 0x31, 0xf5, 0xfc, 0x1e, 0x43, 0xdf, 0x85,
    +	0xf9, 0xc0, 0x6f, 0x9e, 0x08, 0x50, 0xa5, 0xf5, 0xe5, 0xa9, 0x3a, 0x03, 0x65, 0x59, 0x29, 0xc6,
    +	0xaa, 0x3c, 0xd1, 0x7c, 0x80, 0xf7, 0x70, 0x28, 0x14, 0x3d, 0x84, 0x25, 0xdb, 0xe9, 0xd2, 0x3d,
    +	0xda, 0xa3, 0x26, 0x73, 0x5c, 0x11, 0xbb, 0x4a, 0x6b, 0x23, 0xa9, 0x84, 0x57, 0x0a, 0xf7, 0xfe,
    +	0x4e, 0x82, 0xce, 0x58, 0x1b, 0x0d, 0xeb, 0x4b, 0x49, 0x08, 0x4e, 0xc9, 0xd1, 0xfe, 0xa1, 0x42,
    +	0xc5, 0x20, 0x9e, 0x65, 0x06, 0x1a, 0xd1, 0x0f, 0x00, 0x08, 0x63, 0xae, 0xb5, 0xef, 0x33, 0x71,
    +	0x14, 0x1e, 0xf5, 0xdb, 0x53, 0x8f, 0x92, 0xe0, 0xd6, 0xdb, 0x11, 0xeb, 0xb6, 0xcd, 0xdc, 0x53,
    +	0xe3, 0x5a, 0x18, 0xfe, 0x18, 0xf1, 0xc1, 0x3f, 0xeb, 0xcb, 0x6f, 0xfb, 0xa4, 0x67, 0x1d, 0x58,
    +	0xb4, 0xbb, 0x43, 0xfa, 0x14, 0x27, 0x14, 0x22, 0x1f, 0x16, 0x4c, 0x32, 0x20, 0xa6, 0xc5, 0x4e,
    +	0xab, 0x25, 0xa1, 0xfc, 0x56, 0x61, 0xe5, 0x9b, 0x92, 0x31, 0x50, 0x7d, 0x55, 0xaa, 0x5e, 0x08,
    +	0xc1, 0xe3, 0x8a, 0x23, 0x55, 0xeb, 0xc7, 0xb0, 0x9a, 0x31, 0x1d, 0xad, 0x81, 0x7a, 0x4c, 0x4f,
    +	0x83, 0x6a, 0xc3, 0xfc, 0x27, 0x32, 0x60, 0xf6, 0x84, 0xf4, 0x7c, 0x2a, 0x6a, 0xab, 0xd2, 0xba,
    +	0x51, 0x24, 0xc0, 0xa1, 0x50, 0x1c, 0xb0, 0xde, 0x29, 0xdd, 0x56, 0xd6, 0x8f, 0x60, 0x39, 0x65,
    +	0xea, 0x04, 0x55, 0xed, 0xb4, 0xaa, 0xd7, 0x0a, 0xa8, 0x0a, 0x45, 0x26, 0x34, 0x69, 0x77, 0xe1,
    +	0xc2, 0xe6, 0xf6, 0x3d, 0xd9, 0x47, 0x64, 0xc4, 0x51, 0x0b, 0x80, 0xbe, 0x3f, 0x70, 0xa9, 0xc7,
    +	0x6b, 0x48, 0x76, 0x93, 0xa8, 0x4c, 0xb7, 0x23, 0x0c, 0x4e, 0x50, 0x69, 0x3e, 0xc8, 0xee, 0xc0,
    +	0xfb, 0x8b, 0x4d, 0xfa, 0x54, 0xf2, 0x45, 0x15, 0x28, 0xfc, 0x29, 0x30, 0xa8, 0x03, 0xb3, 0xfb,
    +	0x3c, 0x2a, 0xd2, 0xf6, 0x46, 0xd1, 0xf8, 0x19, 0x8b, 0xa3, 0x61, 0x7d, 0x56, 0x00, 0x70, 0x20,
    +	0x41, 0xfb, 0xb0, 0x04, 0x5f, 0xc8, 0x56, 0xca, 0xa6, 0x63, 0x1f, 0x58, 0x87, 0xbe, 0x2b, 0x3e,
    +	0xd0, 0xd7, 0x60, 0x2e, 0x90, 0x28, 0x0d, 0x6a, 0x84, 0xcd, 0x6c, 0x4f, 0x40, 0x5f, 0x0c, 0xeb,
    +	0xaf, 0x64, 0x59, 0x03, 0x0c, 0x96, 0x7c, 0xa8, 0x01, 0x0b, 0x2e, 0x7d, 0xe2, 0x53, 0x8f, 0x79,
    +	0x22, 0xe3, 0x16, 0x8d, 0x25, 0x9e, 0x35, 0x58, 0xc2, 0x70, 0x84, 0x45, 0x3f, 0x84, 0x8b, 0x41,
    +	0x35, 0xa6, 0x4c, 0x90, 0x95, 0xf8, 0x46, 0x91, 0x10, 0x25, 0xf9, 0x8c, 0x2b, 0xd2, 0xd4, 0x8b,
    +	0x13, 0x90, 0x78, 0x92, 0x26, 0xed, 0x13, 0x05, 0x5e, 0x99, 0xdc, 0x38, 0x10, 0x85, 0x79, 0x57,
    +	0xfc, 0x0a, 0x6b, 0xf6, 0x4e, 0x01, 0x7b, 0xe4, 0x19, 0xf3, 0xbb, 0x50, 0xf0, 0xed, 0xe1, 0x50,
    +	0x36, 0xda, 0x87, 0x39, 0x53, 0x98, 0x24, 0x8b, 0xf3, 0xce, 0x99, 0x9a, 0x5c, 0xfa, 0xfc, 0xd1,
    +	0xdc, 0x09, 0xc0, 0x58, 0x4a, 0xd6, 0x7e, 0xa9, 0xc0, 0x6a, 0xa6, 0x7a, 0x50, 0x0d, 0x54, 0xcb,
    +	0x66, 0x22, 0xa3, 0xd4, 0x20, 0x3e, 0x1d, 0x9b, 0x3d, 0xe4, 0x79, 0x8e, 0x39, 0x02, 0x5d, 0x85,
    +	0xf2, 0x3e, 0x9f, 0x7a, 0x3c, 0x16, 0x0b, 0xc6, 0xf2, 0x68, 0x58, 0x5f, 0x34, 0x1c, 0xa7, 0x17,
    +	0x50, 0x08, 0x14, 0xfa, 0x12, 0xcc, 0x79, 0xcc, 0xb5, 0xec, 0xc3, 0x6a, 0x59, 0x64, 0x8a, 0xe8,
    +	0xf1, 0x7b, 0x02, 0x12, 0x90, 0x49, 0x34, 0xba, 0x0e, 0xf3, 0x27, 0xd4, 0x15, 0xc5, 0x31, 0x2b,
    +	0x28, 0x45, 0x0b, 0x7d, 0x18, 0x80, 0x02, 0xd2, 0x90, 0x40, 0xa3, 0xb0, 0x92, 0xae, 0x3e, 0xb4,
    +	0x17, 0x56, 0xae, 0x32, 0x36, 0x79, 0xc6, 0x06, 0x66, 0xec, 0xb1, 0xb7, 0x7d, 0x62, 0x33, 0x8b,
    +	0x9d, 0x1a, 0xcb, 0xd2, 0x29, 0xb3, 0x81, 0xa2, 0x40, 0x96, 0xf6, 0xab, 0x12, 0x54, 0xa4, 0x9e,
    +	0x1e, 0xb1, 0xfa, 0xe8, 0x51, 0x22, 0x67, 0x83, 0x70, 0x5f, 0x2f, 0x1e, 0x6e, 0x63, 0x2d, 0xec,
    +	0x8c, 0x13, 0x72, 0xbc, 0x0b, 0x15, 0xd3, 0xb1, 0x3d, 0xe6, 0x12, 0xcb, 0x96, 0x05, 0x91, 0x1e,
    +	0xcb, 0x53, 0x72, 0x5b, 0x72, 0x19, 0x17, 0xa5, 0xfc, 0x4a, 0x0c, 0xf3, 0x70, 0x52, 0x2c, 0x7a,
    +	0x1c, 0xa5, 0x91, 0x2a, 0x14, 0x7c, 0xb5, 0x88, 0x02, 0x7e, 0xf2, 0x62, 0x19, 0xf4, 0x47, 0x05,
    +	0xaa, 0x79, 0x4c, 0xa9, 0x7a, 0x57, 0xfe, 0x97, 0x7a, 0x2f, 0x9d, 0x5b, 0xbd, 0xff, 0x4e, 0x49,
    +	0x84, 0xdd, 0xf3, 0xd0, 0xf7, 0x60, 0x81, 0x6f, 0x58, 0x62, 0x61, 0x52, 0xc6, 0xac, 0x98, 0xb2,
    +	0x8f, 0x3d, 0xd8, 0xff, 0x3e, 0x35, 0xd9, 0x7d, 0xca, 0x48, 0xdc, 0xe9, 0x63, 0x18, 0x8e, 0xa4,
    +	0xa2, 0x1d, 0x28, 0x7b, 0x03, 0x6a, 0x9e, 0x61, 0xc2, 0x09, 0xcb, 0xf6, 0x06, 0xd4, 0x8c, 0x67,
    +	0x01, 0xff, 0xc2, 0x42, 0x8e, 0xf6, 0xd3, 0x64, 0x24, 0x3c, 0x2f, 0x1d, 0x89, 0x1c, 0xff, 0x2a,
    +	0xe7, 0xe6, 0xdf, 0xdf, 0x46, 0x9d, 0x46, 0x58, 0x77, 0xcf, 0xf2, 0x18, 0x7a, 0x6f, 0xcc, 0xc7,
    +	0x7a, 0x31, 0x1f, 0x73, 0x6e, 0xe1, 0xe1, 0xa8, 0xbc, 0x42, 0x48, 0xc2, 0xbf, 0xf7, 0x61, 0xd6,
    +	0x62, 0xb4, 0x1f, 0x16, 0x56, 0xa3, 0xa8, 0x83, 0xe3, 0xbe, 0xd0, 0xe1, 0xec, 0x38, 0x90, 0xa2,
    +	0xfd, 0x25, 0x7d, 0x00, 0xee, 0x78, 0xf4, 0x1e, 0x2c, 0x7a, 0x72, 0xd4, 0x87, 0xcd, 0xa1, 0xc8,
    +	0xfa, 0x10, 0x2d, 0x8c, 0x17, 0xa4, 0xa6, 0xc5, 0x10, 0xe2, 0xe1, 0x58, 0x60, 0xa2, 0x72, 0x4b,
    +	0x67, 0xa9, 0xdc, 0x4c, 0xe8, 0x73, 0x2b, 0xf7, 0x09, 0x4c, 0x8a, 0x1e, 0x7a, 0x17, 0xe6, 0x9c,
    +	0x01, 0x79, 0x12, 0x75, 0xd5, 0xe9, 0x3b, 0xe1, 0x03, 0x41, 0x3a, 0x29, 0x45, 0x80, 0xab, 0x0c,
    +	0xd0, 0x58, 0x4a, 0xd4, 0x7e, 0xac, 0xc0, 0x5a, 0xb6, 0x85, 0x9d, 0xa1, 0x49, 0xec, 0xc2, 0x4a,
    +	0x9f, 0x30, 0xf3, 0x28, 0x9a, 0x55, 0xf2, 0xe6, 0xd5, 0x18, 0x0d, 0xeb, 0x2b, 0xf7, 0x53, 0x98,
    +	0x17, 0xc3, 0x3a, 0x7a, 0xcb, 0xef, 0xf5, 0x4e, 0xd3, 0x5b, 0x68, 0x86, 0x5f, 0xfb, 0x40, 0x85,
    +	0xe5, 0x54, 0xc3, 0x2e, 0xb0, 0x73, 0xb5, 0x61, 0xb5, 0x1b, 0xfb, 0x9a, 0x23, 0xa4, 0x19, 0x9f,
    +	0x97, 0xc4, 0xc9, 0x34, 0x11, 0x7c, 0x59, 0xfa, 0x74, 0xde, 0xa8, 0x9f, 0x76, 0xde, 0x3c, 0x84,
    +	0x15, 0x12, 0xed, 0x01, 0xf7, 0x9d, 0x2e, 0x95, 0x53, 0x58, 0x97, 0x5c, 0x2b, 0xed, 0x14, 0xf6,
    +	0xc5, 0xb0, 0xfe, 0xb9, 0xec, 0xf6, 0xc0, 0xe1, 0x38, 0x23, 0x05, 0x5d, 0x83, 0x59, 0xd3, 0xf1,
    +	0x6d, 0x26, 0x46, 0xb5, 0x1a, 0x97, 0xc9, 0x26, 0x07, 0xe2, 0x00, 0x87, 0x6e, 0x42, 0x85, 0x74,
    +	0xfb, 0x96, 0xdd, 0x36, 0x4d, 0xea, 0x79, 0xe2, 0x4e, 0xb8, 0x10, 0xcc, 0xff, 0x76, 0x0c, 0xc6,
    +	0x49, 0x1a, 0xed, 0xdf, 0x4a, 0xb8, 0x79, 0xe6, 0x2c, 0x49, 0xe8, 0x55, 0xbe, 0x71, 0x09, 0x94,
    +	0x8c, 0x4b, 0x62, 0x6b, 0x12, 0x60, 0x1c, 0xe2, 0x13, 0x77, 0xf7, 0x52, 0xa1, 0xbb, 0xbb, 0x5a,
    +	0xe0, 0xee, 0x5e, 0x9e, 0x7a, 0x77, 0xcf, 0x9c, 0x78, 0xb6, 0xc0, 0x89, 0xbf, 0x13, 0xae, 0x32,
    +	0xd1, 0x45, 0xa1, 0x03, 0xaa, 0x49, 0x7b, 0x13, 0xba, 0xe0, 0x78, 0x2e, 0x8c, 0xdd, 0x32, 0x8c,
    +	0xf9, 0xd1, 0xb0, 0xae, 0x6e, 0x6e, 0xdf, 0xc3, 0x5c, 0x86, 0xf6, 0x6b, 0x05, 0x2e, 0x8c, 0x5d,
    +	0xb3, 0xd1, 0x9b, 0xb0, 0x6c, 0xd9, 0x8c, 0xba, 0x07, 0xc4, 0xa4, 0x3b, 0x71, 0x82, 0x5f, 0x92,
    +	0x87, 0x5a, 0xee, 0x24, 0x91, 0x38, 0x4d, 0x8b, 0x2e, 0x83, 0x6a, 0x0d, 0xc2, 0x95, 0x5d, 0x68,
    +	0xeb, 0xec, 0x7a, 0x98, 0xc3, 0x78, 0x35, 0x1c, 0x11, 0xb7, 0xfb, 0x94, 0xb8, 0xb4, 0xdd, 0xed,
    +	0xf2, 0x3b, 0x8c, 0x74, 0x69, 0x54, 0x0d, 0x5f, 0x4f, 0xa3, 0x71, 0x96, 0x5e, 0xfb, 0x85, 0x02,
    +	0x97, 0x73, 0xfb, 0x48, 0xe1, 0xc7, 0x18, 0x02, 0x30, 0x20, 0x2e, 0xe9, 0x53, 0x46, 0x5d, 0x4f,
    +	0x0e, 0xd5, 0x33, 0xbe, 0x71, 0x44, 0xf3, 0x7a, 0x37, 0x12, 0x84, 0x13, 0x42, 0xb5, 0x9f, 0x95,
    +	0x60, 0x19, 0xcb, 0x70, 0x04, 0xcb, 0xe1, 0xff, 0x7f, 0x4b, 0xd8, 0x4d, 0x6d, 0x09, 0xd3, 0x33,
    +	0x23, 0x65, 0x5b, 0xde, 0x9e, 0x80, 0x1e, 0xf1, 0xe5, 0x9c, 0x30, 0xdf, 0x2b, 0x74, 0x9b, 0x4a,
    +	0xcb, 0x14, 0x7c, 0x71, 0x08, 0x82, 0x6f, 0x2c, 0xe5, 0x69, 0x23, 0x05, 0x6a, 0x29, 0x7a, 0xde,
    +	0xe5, 0xfd, 0x3e, 0x75, 0x31, 0x3d, 0xa0, 0x2e, 0xb5, 0x4d, 0x8a, 0x6e, 0xc0, 0x02, 0x19, 0x58,
    +	0x77, 0x5d, 0xc7, 0x1f, 0xc8, 0x78, 0x46, 0x23, 0xbc, 0xbd, 0xdb, 0x11, 0x70, 0x1c, 0x51, 0x70,
    +	0xea, 0xd0, 0x20, 0x99, 0x55, 0x89, 0x7d, 0x3a, 0x80, 0xe3, 0x88, 0x22, 0x6a, 0xdd, 0xe5, 0xdc,
    +	0xd6, 0x6d, 0x80, 0xea, 0x5b, 0x5d, 0x79, 0xd5, 0x78, 0x43, 0x12, 0xa8, 0xef, 0x74, 0xb6, 0x5e,
    +	0x0c, 0xeb, 0x57, 0xf3, 0x9e, 0x11, 0xd9, 0xe9, 0x80, 0x7a, 0xfa, 0x3b, 0x9d, 0x2d, 0xcc, 0x99,
    +	0xb5, 0xdf, 0x2b, 0x70, 0x21, 0x75, 0xc8, 0x73, 0x58, 0x65, 0x1e, 0xa4, 0x57, 0x99, 0xeb, 0xc5,
    +	0x23, 0x96, 0xb3, 0xcc, 0x1c, 0x65, 0xce, 0x20, 0xb6, 0x99, 0xbd, 0xec, 0xb3, 0x5a, 0xa3, 0xe8,
    +	0x55, 0x21, 0xff, 0x2d, 0x4d, 0xfb, 0x53, 0x09, 0x2e, 0x4e, 0xc8, 0x21, 0xf4, 0x18, 0x20, 0x1e,
    +	0x2f, 0x52, 0xdf, 0xf4, 0xbb, 0xcf, 0xd8, 0xd5, 0x79, 0x45, 0x3c, 0x76, 0xc5, 0xd0, 0x84, 0x40,
    +	0xe4, 0x42, 0xc5, 0xa5, 0x1e, 0x75, 0x4f, 0x68, 0xf7, 0x2d, 0xc7, 0x95, 0x7e, 0x7b, 0xb3, 0xb8,
    +	0xdf, 0xc6, 0x32, 0x37, 0xbe, 0x69, 0xe1, 0x58, 0x2e, 0x4e, 0x2a, 0x41, 0x8f, 0x63, 0xff, 0x05,
    +	0x2f, 0xb8, 0xad, 0x22, 0xe7, 0x49, 0xbf, 0x3d, 0x4f, 0xf1, 0xe4, 0xdf, 0x15, 0xb8, 0x94, 0xb2,
    +	0xf1, 0x5b, 0xb4, 0x3f, 0xe8, 0x11, 0x46, 0xcf, 0xa1, 0x0b, 0x3d, 0x4a, 0x75, 0xa1, 0x5b, 0xc5,
    +	0xfd, 0x18, 0xda, 0x98, 0x7b, 0x6b, 0xf9, 0x9b, 0x02, 0x97, 0x27, 0x72, 0x9c, 0x43, 0x59, 0x7d,
    +	0x3b, 0x5d, 0x56, 0xad, 0xb3, 0x1f, 0x2b, 0xa7, 0xbc, 0xfe, 0x9a, 0x77, 0x28, 0x51, 0x67, 0x9f,
    +	0xc1, 0xa1, 0xa1, 0xfd, 0x46, 0x81, 0xa5, 0x90, 0x92, 0xef, 0x48, 0x05, 0xf6, 0xe4, 0x16, 0x80,
    +	0xfc, 0xcb, 0x25, 0xbc, 0xc9, 0xab, 0xb1, 0xd9, 0x77, 0x23, 0x0c, 0x4e, 0x50, 0xa1, 0x6f, 0x00,
    +	0x0a, 0x0d, 0xdc, 0xeb, 0x89, 0x55, 0x80, 0xef, 0x9b, 0xaa, 0xe0, 0x5d, 0x97, 0xbc, 0x08, 0x8f,
    +	0x51, 0xe0, 0x09, 0x5c, 0xda, 0x1f, 0x94, 0x78, 0x5a, 0x0b, 0xf0, 0x4b, 0xea, 0x78, 0x61, 0x5b,
    +	0xae, 0xe3, 0x93, 0xe3, 0x46, 0x50, 0xbe, 0xac, 0xe3, 0x46, 0x18, 0x97, 0x53, 0x0f, 0x1f, 0xaa,
    +	0x99, 0x43, 0x88, 0x3a, 0x28, 0xba, 0xd9, 0x7d, 0x33, 0xf1, 0x37, 0x5b, 0xa5, 0xf5, 0x6a, 0x21,
    +	0x6b, 0x78, 0x8e, 0x4e, 0xdc, 0xea, 0x6f, 0xc0, 0x82, 0xed, 0x74, 0x83, 0x15, 0x38, 0xb3, 0x52,
    +	0xec, 0x48, 0x38, 0x8e, 0x28, 0xc6, 0xfe, 0x09, 0x2a, 0x7f, 0x3a, 0xff, 0x04, 0x89, 0x35, 0xa8,
    +	0xd7, 0xe3, 0x04, 0xe1, 0x85, 0x21, 0x5e, 0x83, 0x24, 0x1c, 0x47, 0x14, 0x68, 0x27, 0x1e, 0x2c,
    +	0x73, 0x22, 0x22, 0xd7, 0x0a, 0x0c, 0xe6, 0xfc, 0x49, 0x62, 0xb4, 0x9f, 0x3d, 0xaf, 0xcd, 0x7c,
    +	0xf4, 0xbc, 0x36, 0xf3, 0xf1, 0xf3, 0xda, 0xcc, 0x8f, 0x46, 0x35, 0xe5, 0xd9, 0xa8, 0xa6, 0x7c,
    +	0x34, 0xaa, 0x29, 0x1f, 0x8f, 0x6a, 0xca, 0xbf, 0x46, 0x35, 0xe5, 0x27, 0x9f, 0xd4, 0x66, 0xde,
    +	0xbd, 0x32, 0xe5, 0x1f, 0xe9, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x26, 0xe2, 0x5c, 0xf8, 0xaf,
    +	0x1e, 0x00, 0x00,
    +}
    +
    +func (m *AllocatedDeviceStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *AllocatedDeviceStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *AllocatedDeviceStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.NetworkData != nil {
    +		{
    +			size, err := m.NetworkData.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x32
    +	}
    +	{
    +		size, err := m.Data.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x2a
    +	if len(m.Conditions) > 0 {
    +		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	i -= len(m.Device)
    +	copy(dAtA[i:], m.Device)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Device)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Pool)
    +	copy(dAtA[i:], m.Pool)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Pool)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *AllocationResult) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *AllocationResult) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *AllocationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.NodeSelector != nil {
    +		{
    +			size, err := m.NodeSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	{
    +		size, err := m.Devices.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *BasicDevice) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *BasicDevice) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *BasicDevice) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Capacity) > 0 {
    +		keysForCapacity := make([]string, 0, len(m.Capacity))
    +		for k := range m.Capacity {
    +			keysForCapacity = append(keysForCapacity, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity)
    +		for iNdEx := len(keysForCapacity) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Capacity[QualifiedName(keysForCapacity[iNdEx])]
    +			baseI := i
    +			{
    +				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForCapacity[iNdEx])
    +			copy(dAtA[i:], keysForCapacity[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForCapacity[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Attributes) > 0 {
    +		keysForAttributes := make([]string, 0, len(m.Attributes))
    +		for k := range m.Attributes {
    +			keysForAttributes = append(keysForAttributes, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForAttributes)
    +		for iNdEx := len(keysForAttributes) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Attributes[QualifiedName(keysForAttributes[iNdEx])]
    +			baseI := i
    +			{
    +				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForAttributes[iNdEx])
    +			copy(dAtA[i:], keysForAttributes[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForAttributes[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *CELDeviceSelector) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *CELDeviceSelector) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *CELDeviceSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *Device) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *Device) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *Device) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.Basic != nil {
    +		{
    +			size, err := m.Basic.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceAllocationConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceAllocationConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceAllocationConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.DeviceConfiguration.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Requests[iNdEx])
    +			copy(dAtA[i:], m.Requests[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Requests[iNdEx])))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.Source)
    +	copy(dAtA[i:], m.Source)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Source)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceAllocationResult) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceAllocationResult) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceAllocationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Config) > 0 {
    +		for iNdEx := len(m.Config) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Config[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Results) > 0 {
    +		for iNdEx := len(m.Results) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Results[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceAttribute) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceAttribute) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceAttribute) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.VersionValue != nil {
    +		i -= len(*m.VersionValue)
    +		copy(dAtA[i:], *m.VersionValue)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.VersionValue)))
    +		i--
    +		dAtA[i] = 0x2a
    +	}
    +	if m.StringValue != nil {
    +		i -= len(*m.StringValue)
    +		copy(dAtA[i:], *m.StringValue)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.StringValue)))
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if m.BoolValue != nil {
    +		i--
    +		if *m.BoolValue {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x18
    +	}
    +	if m.IntValue != nil {
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.IntValue))
    +		i--
    +		dAtA[i] = 0x10
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceCapacity) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceCapacity) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceCapacity) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Value.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClaim) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClaim) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClaim) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Config) > 0 {
    +		for iNdEx := len(m.Config) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Config[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if len(m.Constraints) > 0 {
    +		for iNdEx := len(m.Constraints) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Constraints[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Requests[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClaimConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClaimConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClaimConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.DeviceConfiguration.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Requests[iNdEx])
    +			copy(dAtA[i:], m.Requests[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Requests[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClass) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClass) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClass) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClassConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClassConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClassConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.DeviceConfiguration.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClassList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClassList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClassList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClassSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClassSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClassSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Config) > 0 {
    +		for iNdEx := len(m.Config) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Config[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Selectors) > 0 {
    +		for iNdEx := len(m.Selectors) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Selectors[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.Opaque != nil {
    +		{
    +			size, err := m.Opaque.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceConstraint) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceConstraint) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceConstraint) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.MatchAttribute != nil {
    +		i -= len(*m.MatchAttribute)
    +		copy(dAtA[i:], *m.MatchAttribute)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MatchAttribute)))
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Requests[iNdEx])
    +			copy(dAtA[i:], m.Requests[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Requests[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceRequest) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceRequest) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.AdminAccess != nil {
    +		i--
    +		if *m.AdminAccess {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x30
    +	}
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.Count))
    +	i--
    +	dAtA[i] = 0x28
    +	i -= len(m.AllocationMode)
    +	copy(dAtA[i:], m.AllocationMode)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.AllocationMode)))
    +	i--
    +	dAtA[i] = 0x22
    +	if len(m.Selectors) > 0 {
    +		for iNdEx := len(m.Selectors) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Selectors[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	i -= len(m.DeviceClassName)
    +	copy(dAtA[i:], m.DeviceClassName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.DeviceClassName)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceRequestAllocationResult) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceRequestAllocationResult) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceRequestAllocationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.AdminAccess != nil {
    +		i--
    +		if *m.AdminAccess {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x28
    +	}
    +	i -= len(m.Device)
    +	copy(dAtA[i:], m.Device)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Device)))
    +	i--
    +	dAtA[i] = 0x22
    +	i -= len(m.Pool)
    +	copy(dAtA[i:], m.Pool)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Pool)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Request)
    +	copy(dAtA[i:], m.Request)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Request)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceSelector) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceSelector) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.CEL != nil {
    +		{
    +			size, err := m.CEL.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *NetworkDeviceData) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *NetworkDeviceData) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *NetworkDeviceData) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.HardwareAddress)
    +	copy(dAtA[i:], m.HardwareAddress)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.HardwareAddress)))
    +	i--
    +	dAtA[i] = 0x1a
    +	if len(m.IPs) > 0 {
    +		for iNdEx := len(m.IPs) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.IPs[iNdEx])
    +			copy(dAtA[i:], m.IPs[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.IPs[iNdEx])))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.InterfaceName)
    +	copy(dAtA[i:], m.InterfaceName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.InterfaceName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *OpaqueDeviceConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *OpaqueDeviceConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *OpaqueDeviceConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Parameters.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaim) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaim) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaim) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimConsumerReference) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimConsumerReference) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimConsumerReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.UID)
    +	copy(dAtA[i:], m.UID)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID)))
    +	i--
    +	dAtA[i] = 0x2a
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0x22
    +	i -= len(m.Resource)
    +	copy(dAtA[i:], m.Resource)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.APIGroup)
    +	copy(dAtA[i:], m.APIGroup)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIGroup)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Devices.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Devices) > 0 {
    +		for iNdEx := len(m.Devices) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Devices[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	if len(m.ReservedFor) > 0 {
    +		for iNdEx := len(m.ReservedFor) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.ReservedFor[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if m.Allocation != nil {
    +		{
    +			size, err := m.Allocation.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimTemplate) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimTemplate) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimTemplateList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimTemplateList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimTemplateList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimTemplateSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimTemplateSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimTemplateSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourcePool) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourcePool) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourcePool) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceSliceCount))
    +	i--
    +	dAtA[i] = 0x18
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.Generation))
    +	i--
    +	dAtA[i] = 0x10
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceSlice) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceSlice) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceSlice) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceSliceList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceSliceList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceSliceList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceSliceSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceSliceSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceSliceSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Devices) > 0 {
    +		for iNdEx := len(m.Devices) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Devices[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x32
    +		}
    +	}
    +	i--
    +	if m.AllNodes {
    +		dAtA[i] = 1
    +	} else {
    +		dAtA[i] = 0
    +	}
    +	i--
    +	dAtA[i] = 0x28
    +	if m.NodeSelector != nil {
    +		{
    +			size, err := m.NodeSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	i -= len(m.NodeName)
    +	copy(dAtA[i:], m.NodeName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.NodeName)))
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Pool.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
    +	}
    +	dAtA[offset] = uint8(v)
    +	return base
    +}
    +func (m *AllocatedDeviceStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Pool)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Device)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Conditions) > 0 {
    +		for _, e := range m.Conditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = m.Data.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.NetworkData != nil {
    +		l = m.NetworkData.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *AllocationResult) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.Devices.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.NodeSelector != nil {
    +		l = m.NodeSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *BasicDevice) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Attributes) > 0 {
    +		for k, v := range m.Attributes {
    +			_ = k
    +			_ = v
    +			l = v.Size()
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	if len(m.Capacity) > 0 {
    +		for k, v := range m.Capacity {
    +			_ = k
    +			_ = v
    +			l = v.Size()
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *CELDeviceSelector) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *Device) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Basic != nil {
    +		l = m.Basic.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceAllocationConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Source)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Requests) > 0 {
    +		for _, s := range m.Requests {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = m.DeviceConfiguration.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceAllocationResult) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Results) > 0 {
    +		for _, e := range m.Results {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Config) > 0 {
    +		for _, e := range m.Config {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceAttribute) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.IntValue != nil {
    +		n += 1 + sovGenerated(uint64(*m.IntValue))
    +	}
    +	if m.BoolValue != nil {
    +		n += 2
    +	}
    +	if m.StringValue != nil {
    +		l = len(*m.StringValue)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.VersionValue != nil {
    +		l = len(*m.VersionValue)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceCapacity) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.Value.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceClaim) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		for _, e := range m.Requests {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Constraints) > 0 {
    +		for _, e := range m.Constraints {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Config) > 0 {
    +		for _, e := range m.Config {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceClaimConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		for _, s := range m.Requests {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = m.DeviceConfiguration.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceClass) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceClassConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.DeviceConfiguration.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceClassList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceClassSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Selectors) > 0 {
    +		for _, e := range m.Selectors {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Config) > 0 {
    +		for _, e := range m.Config {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Opaque != nil {
    +		l = m.Opaque.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceConstraint) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		for _, s := range m.Requests {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.MatchAttribute != nil {
    +		l = len(*m.MatchAttribute)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceRequest) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.DeviceClassName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Selectors) > 0 {
    +		for _, e := range m.Selectors {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.AllocationMode)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	n += 1 + sovGenerated(uint64(m.Count))
    +	if m.AdminAccess != nil {
    +		n += 2
    +	}
    +	return n
    +}
    +
    +func (m *DeviceRequestAllocationResult) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Request)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Pool)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Device)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.AdminAccess != nil {
    +		n += 2
    +	}
    +	return n
    +}
    +
    +func (m *DeviceSelector) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.CEL != nil {
    +		l = m.CEL.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *NetworkDeviceData) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.InterfaceName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.IPs) > 0 {
    +		for _, s := range m.IPs {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.HardwareAddress)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *OpaqueDeviceConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Parameters.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaim) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Status.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimConsumerReference) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.APIGroup)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Resource)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.UID)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceClaimSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.Devices.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Allocation != nil {
    +		l = m.Allocation.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.ReservedFor) > 0 {
    +		for _, e := range m.ReservedFor {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Devices) > 0 {
    +		for _, e := range m.Devices {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceClaimTemplate) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimTemplateList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceClaimTemplateSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourcePool) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	n += 1 + sovGenerated(uint64(m.Generation))
    +	n += 1 + sovGenerated(uint64(m.ResourceSliceCount))
    +	return n
    +}
    +
    +func (m *ResourceSlice) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceSliceList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceSliceSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Pool.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.NodeName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.NodeSelector != nil {
    +		l = m.NodeSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	n += 2
    +	if len(m.Devices) > 0 {
    +		for _, e := range m.Devices {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *AllocatedDeviceStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForConditions := "[]Condition{"
    +	for _, f := range this.Conditions {
    +		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForConditions += "}"
    +	s := strings.Join([]string{`&AllocatedDeviceStatus{`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Pool:` + fmt.Sprintf("%v", this.Pool) + `,`,
    +		`Device:` + fmt.Sprintf("%v", this.Device) + `,`,
    +		`Conditions:` + repeatedStringForConditions + `,`,
    +		`Data:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Data), "RawExtension", "runtime.RawExtension", 1), `&`, ``, 1) + `,`,
    +		`NetworkData:` + strings.Replace(this.NetworkData.String(), "NetworkDeviceData", "NetworkDeviceData", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *AllocationResult) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&AllocationResult{`,
    +		`Devices:` + strings.Replace(strings.Replace(this.Devices.String(), "DeviceAllocationResult", "DeviceAllocationResult", 1), `&`, ``, 1) + `,`,
    +		`NodeSelector:` + strings.Replace(fmt.Sprintf("%v", this.NodeSelector), "NodeSelector", "v11.NodeSelector", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *BasicDevice) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	keysForAttributes := make([]string, 0, len(this.Attributes))
    +	for k := range this.Attributes {
    +		keysForAttributes = append(keysForAttributes, string(k))
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForAttributes)
    +	mapStringForAttributes := "map[QualifiedName]DeviceAttribute{"
    +	for _, k := range keysForAttributes {
    +		mapStringForAttributes += fmt.Sprintf("%v: %v,", k, this.Attributes[QualifiedName(k)])
    +	}
    +	mapStringForAttributes += "}"
    +	keysForCapacity := make([]string, 0, len(this.Capacity))
    +	for k := range this.Capacity {
    +		keysForCapacity = append(keysForCapacity, string(k))
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity)
    +	mapStringForCapacity := "map[QualifiedName]DeviceCapacity{"
    +	for _, k := range keysForCapacity {
    +		mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[QualifiedName(k)])
    +	}
    +	mapStringForCapacity += "}"
    +	s := strings.Join([]string{`&BasicDevice{`,
    +		`Attributes:` + mapStringForAttributes + `,`,
    +		`Capacity:` + mapStringForCapacity + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *CELDeviceSelector) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&CELDeviceSelector{`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Device) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Device{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Basic:` + strings.Replace(this.Basic.String(), "BasicDevice", "BasicDevice", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceAllocationConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceAllocationConfiguration{`,
    +		`Source:` + fmt.Sprintf("%v", this.Source) + `,`,
    +		`Requests:` + fmt.Sprintf("%v", this.Requests) + `,`,
    +		`DeviceConfiguration:` + strings.Replace(strings.Replace(this.DeviceConfiguration.String(), "DeviceConfiguration", "DeviceConfiguration", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceAllocationResult) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForResults := "[]DeviceRequestAllocationResult{"
    +	for _, f := range this.Results {
    +		repeatedStringForResults += strings.Replace(strings.Replace(f.String(), "DeviceRequestAllocationResult", "DeviceRequestAllocationResult", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForResults += "}"
    +	repeatedStringForConfig := "[]DeviceAllocationConfiguration{"
    +	for _, f := range this.Config {
    +		repeatedStringForConfig += strings.Replace(strings.Replace(f.String(), "DeviceAllocationConfiguration", "DeviceAllocationConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConfig += "}"
    +	s := strings.Join([]string{`&DeviceAllocationResult{`,
    +		`Results:` + repeatedStringForResults + `,`,
    +		`Config:` + repeatedStringForConfig + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceAttribute) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceAttribute{`,
    +		`IntValue:` + valueToStringGenerated(this.IntValue) + `,`,
    +		`BoolValue:` + valueToStringGenerated(this.BoolValue) + `,`,
    +		`StringValue:` + valueToStringGenerated(this.StringValue) + `,`,
    +		`VersionValue:` + valueToStringGenerated(this.VersionValue) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceCapacity) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceCapacity{`,
    +		`Value:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Value), "Quantity", "resource.Quantity", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClaim) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForRequests := "[]DeviceRequest{"
    +	for _, f := range this.Requests {
    +		repeatedStringForRequests += strings.Replace(strings.Replace(f.String(), "DeviceRequest", "DeviceRequest", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForRequests += "}"
    +	repeatedStringForConstraints := "[]DeviceConstraint{"
    +	for _, f := range this.Constraints {
    +		repeatedStringForConstraints += strings.Replace(strings.Replace(f.String(), "DeviceConstraint", "DeviceConstraint", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConstraints += "}"
    +	repeatedStringForConfig := "[]DeviceClaimConfiguration{"
    +	for _, f := range this.Config {
    +		repeatedStringForConfig += strings.Replace(strings.Replace(f.String(), "DeviceClaimConfiguration", "DeviceClaimConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConfig += "}"
    +	s := strings.Join([]string{`&DeviceClaim{`,
    +		`Requests:` + repeatedStringForRequests + `,`,
    +		`Constraints:` + repeatedStringForConstraints + `,`,
    +		`Config:` + repeatedStringForConfig + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClaimConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceClaimConfiguration{`,
    +		`Requests:` + fmt.Sprintf("%v", this.Requests) + `,`,
    +		`DeviceConfiguration:` + strings.Replace(strings.Replace(this.DeviceConfiguration.String(), "DeviceConfiguration", "DeviceConfiguration", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClass) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceClass{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "DeviceClassSpec", "DeviceClassSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClassConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceClassConfiguration{`,
    +		`DeviceConfiguration:` + strings.Replace(strings.Replace(this.DeviceConfiguration.String(), "DeviceConfiguration", "DeviceConfiguration", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClassList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]DeviceClass{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "DeviceClass", "DeviceClass", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&DeviceClassList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClassSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForSelectors := "[]DeviceSelector{"
    +	for _, f := range this.Selectors {
    +		repeatedStringForSelectors += strings.Replace(strings.Replace(f.String(), "DeviceSelector", "DeviceSelector", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSelectors += "}"
    +	repeatedStringForConfig := "[]DeviceClassConfiguration{"
    +	for _, f := range this.Config {
    +		repeatedStringForConfig += strings.Replace(strings.Replace(f.String(), "DeviceClassConfiguration", "DeviceClassConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConfig += "}"
    +	s := strings.Join([]string{`&DeviceClassSpec{`,
    +		`Selectors:` + repeatedStringForSelectors + `,`,
    +		`Config:` + repeatedStringForConfig + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceConfiguration{`,
    +		`Opaque:` + strings.Replace(this.Opaque.String(), "OpaqueDeviceConfiguration", "OpaqueDeviceConfiguration", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceConstraint) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceConstraint{`,
    +		`Requests:` + fmt.Sprintf("%v", this.Requests) + `,`,
    +		`MatchAttribute:` + valueToStringGenerated(this.MatchAttribute) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceRequest) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForSelectors := "[]DeviceSelector{"
    +	for _, f := range this.Selectors {
    +		repeatedStringForSelectors += strings.Replace(strings.Replace(f.String(), "DeviceSelector", "DeviceSelector", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSelectors += "}"
    +	s := strings.Join([]string{`&DeviceRequest{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`DeviceClassName:` + fmt.Sprintf("%v", this.DeviceClassName) + `,`,
    +		`Selectors:` + repeatedStringForSelectors + `,`,
    +		`AllocationMode:` + fmt.Sprintf("%v", this.AllocationMode) + `,`,
    +		`Count:` + fmt.Sprintf("%v", this.Count) + `,`,
    +		`AdminAccess:` + valueToStringGenerated(this.AdminAccess) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceRequestAllocationResult) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceRequestAllocationResult{`,
    +		`Request:` + fmt.Sprintf("%v", this.Request) + `,`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Pool:` + fmt.Sprintf("%v", this.Pool) + `,`,
    +		`Device:` + fmt.Sprintf("%v", this.Device) + `,`,
    +		`AdminAccess:` + valueToStringGenerated(this.AdminAccess) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceSelector) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceSelector{`,
    +		`CEL:` + strings.Replace(this.CEL.String(), "CELDeviceSelector", "CELDeviceSelector", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *NetworkDeviceData) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&NetworkDeviceData{`,
    +		`InterfaceName:` + fmt.Sprintf("%v", this.InterfaceName) + `,`,
    +		`IPs:` + fmt.Sprintf("%v", this.IPs) + `,`,
    +		`HardwareAddress:` + fmt.Sprintf("%v", this.HardwareAddress) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *OpaqueDeviceConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&OpaqueDeviceConfiguration{`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Parameters:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Parameters), "RawExtension", "runtime.RawExtension", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaim) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaim{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimSpec", "ResourceClaimSpec", 1), `&`, ``, 1) + `,`,
    +		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ResourceClaimStatus", "ResourceClaimStatus", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimConsumerReference) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimConsumerReference{`,
    +		`APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`,
    +		`Resource:` + fmt.Sprintf("%v", this.Resource) + `,`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`UID:` + fmt.Sprintf("%v", this.UID) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ResourceClaim{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceClaim", "ResourceClaim", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ResourceClaimList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimSpec{`,
    +		`Devices:` + strings.Replace(strings.Replace(this.Devices.String(), "DeviceClaim", "DeviceClaim", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForReservedFor := "[]ResourceClaimConsumerReference{"
    +	for _, f := range this.ReservedFor {
    +		repeatedStringForReservedFor += strings.Replace(strings.Replace(f.String(), "ResourceClaimConsumerReference", "ResourceClaimConsumerReference", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForReservedFor += "}"
    +	repeatedStringForDevices := "[]AllocatedDeviceStatus{"
    +	for _, f := range this.Devices {
    +		repeatedStringForDevices += strings.Replace(strings.Replace(f.String(), "AllocatedDeviceStatus", "AllocatedDeviceStatus", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForDevices += "}"
    +	s := strings.Join([]string{`&ResourceClaimStatus{`,
    +		`Allocation:` + strings.Replace(this.Allocation.String(), "AllocationResult", "AllocationResult", 1) + `,`,
    +		`ReservedFor:` + repeatedStringForReservedFor + `,`,
    +		`Devices:` + repeatedStringForDevices + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimTemplate) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimTemplate{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimTemplateSpec", "ResourceClaimTemplateSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimTemplateList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ResourceClaimTemplate{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceClaimTemplate", "ResourceClaimTemplate", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ResourceClaimTemplateList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimTemplateSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimTemplateSpec{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimSpec", "ResourceClaimSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourcePool) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourcePool{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Generation:` + fmt.Sprintf("%v", this.Generation) + `,`,
    +		`ResourceSliceCount:` + fmt.Sprintf("%v", this.ResourceSliceCount) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceSlice) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceSlice{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceSliceSpec", "ResourceSliceSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceSliceList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ResourceSlice{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceSlice", "ResourceSlice", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ResourceSliceList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceSliceSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForDevices := "[]Device{"
    +	for _, f := range this.Devices {
    +		repeatedStringForDevices += strings.Replace(strings.Replace(f.String(), "Device", "Device", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForDevices += "}"
    +	s := strings.Join([]string{`&ResourceSliceSpec{`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Pool:` + strings.Replace(strings.Replace(this.Pool.String(), "ResourcePool", "ResourcePool", 1), `&`, ``, 1) + `,`,
    +		`NodeName:` + fmt.Sprintf("%v", this.NodeName) + `,`,
    +		`NodeSelector:` + strings.Replace(fmt.Sprintf("%v", this.NodeSelector), "NodeSelector", "v11.NodeSelector", 1) + `,`,
    +		`AllNodes:` + fmt.Sprintf("%v", this.AllNodes) + `,`,
    +		`Devices:` + repeatedStringForDevices + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *AllocatedDeviceStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AllocatedDeviceStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AllocatedDeviceStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Pool = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Device", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Device = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Conditions = append(m.Conditions, v1.Condition{})
    +			if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NetworkData", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NetworkData == nil {
    +				m.NetworkData = &NetworkDeviceData{}
    +			}
    +			if err := m.NetworkData.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *AllocationResult) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AllocationResult: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AllocationResult: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Devices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NodeSelector == nil {
    +				m.NodeSelector = &v11.NodeSelector{}
    +			}
    +			if err := m.NodeSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *BasicDevice) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: BasicDevice: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: BasicDevice: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Attributes == nil {
    +				m.Attributes = make(map[QualifiedName]DeviceAttribute)
    +			}
    +			var mapkey QualifiedName
    +			mapvalue := &DeviceAttribute{}
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = QualifiedName(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var mapmsglen int
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						mapmsglen |= int(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					if mapmsglen < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postmsgIndex := iNdEx + mapmsglen
    +					if postmsgIndex < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postmsgIndex > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = &DeviceAttribute{}
    +					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    +						return err
    +					}
    +					iNdEx = postmsgIndex
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Attributes[QualifiedName(mapkey)] = *mapvalue
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Capacity == nil {
    +				m.Capacity = make(map[QualifiedName]DeviceCapacity)
    +			}
    +			var mapkey QualifiedName
    +			mapvalue := &DeviceCapacity{}
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = QualifiedName(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var mapmsglen int
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						mapmsglen |= int(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					if mapmsglen < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postmsgIndex := iNdEx + mapmsglen
    +					if postmsgIndex < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postmsgIndex > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = &DeviceCapacity{}
    +					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    +						return err
    +					}
    +					iNdEx = postmsgIndex
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Capacity[QualifiedName(mapkey)] = *mapvalue
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *CELDeviceSelector) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: CELDeviceSelector: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: CELDeviceSelector: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *Device) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: Device: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: Device: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Basic", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Basic == nil {
    +				m.Basic = &BasicDevice{}
    +			}
    +			if err := m.Basic.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceAllocationConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceAllocationConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceAllocationConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Source = AllocationConfigSource(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceConfiguration", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.DeviceConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceAllocationResult) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceAllocationResult: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceAllocationResult: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Results = append(m.Results, DeviceRequestAllocationResult{})
    +			if err := m.Results[len(m.Results)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Config = append(m.Config, DeviceAllocationConfiguration{})
    +			if err := m.Config[len(m.Config)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceAttribute) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceAttribute: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceAttribute: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field IntValue", wireType)
    +			}
    +			var v int64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.IntValue = &v
    +		case 3:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field BoolValue", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.BoolValue = &b
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field StringValue", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.StringValue = &s
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field VersionValue", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.VersionValue = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceCapacity) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceCapacity: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceCapacity: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClaim) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClaim: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClaim: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, DeviceRequest{})
    +			if err := m.Requests[len(m.Requests)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Constraints", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Constraints = append(m.Constraints, DeviceConstraint{})
    +			if err := m.Constraints[len(m.Constraints)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Config = append(m.Config, DeviceClaimConfiguration{})
    +			if err := m.Config[len(m.Config)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClaimConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClaimConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClaimConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceConfiguration", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.DeviceConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClass) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClass: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClass: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClassConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClassConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClassConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceConfiguration", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.DeviceConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClassList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClassList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClassList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, DeviceClass{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClassSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClassSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClassSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Selectors", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Selectors = append(m.Selectors, DeviceSelector{})
    +			if err := m.Selectors[len(m.Selectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Config = append(m.Config, DeviceClassConfiguration{})
    +			if err := m.Config[len(m.Config)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Opaque", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Opaque == nil {
    +				m.Opaque = &OpaqueDeviceConfiguration{}
    +			}
    +			if err := m.Opaque.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceConstraint) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceConstraint: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceConstraint: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchAttribute", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := FullyQualifiedName(dAtA[iNdEx:postIndex])
    +			m.MatchAttribute = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceRequest) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceRequest: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceRequest: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceClassName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.DeviceClassName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Selectors", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Selectors = append(m.Selectors, DeviceSelector{})
    +			if err := m.Selectors[len(m.Selectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllocationMode", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.AllocationMode = DeviceAllocationMode(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Count", wireType)
    +			}
    +			m.Count = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.Count |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 6:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AdminAccess", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.AdminAccess = &b
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceRequestAllocationResult) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceRequestAllocationResult: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceRequestAllocationResult: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Request = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Pool = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Device", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Device = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AdminAccess", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.AdminAccess = &b
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceSelector) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceSelector: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceSelector: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field CEL", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.CEL == nil {
    +				m.CEL = &CELDeviceSelector{}
    +			}
    +			if err := m.CEL.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *NetworkDeviceData) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: NetworkDeviceData: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: NetworkDeviceData: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field InterfaceName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.InterfaceName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field IPs", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.IPs = append(m.IPs, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field HardwareAddress", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.HardwareAddress = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *OpaqueDeviceConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: OpaqueDeviceConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: OpaqueDeviceConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Parameters.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaim) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaim: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaim: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimConsumerReference) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimConsumerReference: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimConsumerReference: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.APIGroup = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Resource = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.UID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, ResourceClaim{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Devices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Allocation", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Allocation == nil {
    +				m.Allocation = &AllocationResult{}
    +			}
    +			if err := m.Allocation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ReservedFor", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ReservedFor = append(m.ReservedFor, ResourceClaimConsumerReference{})
    +			if err := m.ReservedFor[len(m.ReservedFor)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Devices = append(m.Devices, AllocatedDeviceStatus{})
    +			if err := m.Devices[len(m.Devices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimTemplate) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimTemplate: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimTemplate: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimTemplateList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, ResourceClaimTemplate{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimTemplateSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourcePool) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourcePool: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourcePool: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Generation", wireType)
    +			}
    +			m.Generation = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.Generation |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 3:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceSliceCount", wireType)
    +			}
    +			m.ResourceSliceCount = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.ResourceSliceCount |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceSlice) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceSlice: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceSlice: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceSliceList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceSliceList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceSliceList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, ResourceSlice{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceSliceSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceSliceSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceSliceSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Pool.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.NodeName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NodeSelector == nil {
    +				m.NodeSelector = &v11.NodeSelector{}
    +			}
    +			if err := m.NodeSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllNodes", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.AllNodes = bool(v != 0)
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Devices = append(m.Devices, Device{})
    +			if err := m.Devices[len(m.Devices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func skipGenerated(dAtA []byte) (n int, err error) {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	depth := 0
    +	for iNdEx < l {
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return 0, ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return 0, io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= (uint64(b) & 0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		wireType := int(wire & 0x7)
    +		switch wireType {
    +		case 0:
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				iNdEx++
    +				if dAtA[iNdEx-1] < 0x80 {
    +					break
    +				}
    +			}
    +		case 1:
    +			iNdEx += 8
    +		case 2:
    +			var length int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				length |= (int(b) & 0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if length < 0 {
    +				return 0, ErrInvalidLengthGenerated
    +			}
    +			iNdEx += length
    +		case 3:
    +			depth++
    +		case 4:
    +			if depth == 0 {
    +				return 0, ErrUnexpectedEndOfGroupGenerated
    +			}
    +			depth--
    +		case 5:
    +			iNdEx += 4
    +		default:
    +			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
    +		}
    +		if iNdEx < 0 {
    +			return 0, ErrInvalidLengthGenerated
    +		}
    +		if depth == 0 {
    +			return iNdEx, nil
    +		}
    +	}
    +	return 0, io.ErrUnexpectedEOF
    +}
    +
    +var (
    +	ErrInvalidLengthGenerated        = fmt.Errorf("proto: negative length found during unmarshaling")
    +	ErrIntOverflowGenerated          = fmt.Errorf("proto: integer overflow")
    +	ErrUnexpectedEndOfGroupGenerated = fmt.Errorf("proto: unexpected end of group")
    +)
    diff --git a/vendor/k8s.io/api/resource/v1beta1/generated.proto b/vendor/k8s.io/api/resource/v1beta1/generated.proto
    new file mode 100644
    index 000000000000..6d525d5b8562
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1beta1/generated.proto
    @@ -0,0 +1,892 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +
    +// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    +
    +syntax = "proto2";
    +
    +package k8s.io.api.resource.v1beta1;
    +
    +import "k8s.io/api/core/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
    +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    +
    +// Package-wide variables from generator "generated".
    +option go_package = "k8s.io/api/resource/v1beta1";
    +
    +// AllocatedDeviceStatus contains the status of an allocated device, if the
    +// driver chooses to report it. This may include driver-specific information.
    +message AllocatedDeviceStatus {
    +  // Driver specifies the name of the DRA driver whose kubelet
    +  // plugin should be invoked to process the allocation once the claim is
    +  // needed on a node.
    +  //
    +  // Must be a DNS subdomain and should end with a DNS domain owned by the
    +  // vendor of the driver.
    +  //
    +  // +required
    +  optional string driver = 1;
    +
    +  // This name together with the driver name and the device name field
    +  // identify which device was allocated (`//`).
    +  //
    +  // Must not be longer than 253 characters and may contain one or more
    +  // DNS sub-domains separated by slashes.
    +  //
    +  // +required
    +  optional string pool = 2;
    +
    +  // Device references one device instance via its name in the driver's
    +  // resource pool. It must be a DNS label.
    +  //
    +  // +required
    +  optional string device = 3;
    +
    +  // Conditions contains the latest observation of the device's state.
    +  // If the device has been configured according to the class and claim
    +  // config references, the `Ready` condition should be True.
    +  //
    +  // +optional
    +  // +listType=map
    +  // +listMapKey=type
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 4;
    +
    +  // Data contains arbitrary driver-specific data.
    +  //
    +  // The length of the raw data must be smaller or equal to 10 Ki.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension data = 5;
    +
    +  // NetworkData contains network-related information specific to the device.
    +  //
    +  // +optional
    +  optional NetworkDeviceData networkData = 6;
    +}
    +
    +// AllocationResult contains attributes of an allocated resource.
    +message AllocationResult {
    +  // Devices is the result of allocating devices.
    +  //
    +  // +optional
    +  optional DeviceAllocationResult devices = 1;
    +
    +  // NodeSelector defines where the allocated resources are available. If
    +  // unset, they are available everywhere.
    +  //
    +  // +optional
    +  optional .k8s.io.api.core.v1.NodeSelector nodeSelector = 3;
    +}
    +
    +// BasicDevice defines one device instance.
    +message BasicDevice {
    +  // Attributes defines the set of attributes for this device.
    +  // The name of each attribute must be unique in that set.
    +  //
    +  // The maximum number of attributes and capacities combined is 32.
    +  //
    +  // +optional
    +  map attributes = 1;
    +
    +  // Capacity defines the set of capacities for this device.
    +  // The name of each capacity must be unique in that set.
    +  //
    +  // The maximum number of attributes and capacities combined is 32.
    +  //
    +  // +optional
    +  map capacity = 2;
    +}
    +
    +// CELDeviceSelector contains a CEL expression for selecting a device.
    +message CELDeviceSelector {
    +  // Expression is a CEL expression which evaluates a single device. It
    +  // must evaluate to true when the device under consideration satisfies
    +  // the desired criteria, and false when it does not. Any other result
    +  // is an error and causes allocation of devices to abort.
    +  //
    +  // The expression's input is an object named "device", which carries
    +  // the following properties:
    +  //  - driver (string): the name of the driver which defines this device.
    +  //  - attributes (map[string]object): the device's attributes, grouped by prefix
    +  //    (e.g. device.attributes["dra.example.com"] evaluates to an object with all
    +  //    of the attributes which were prefixed by "dra.example.com".
    +  //  - capacity (map[string]object): the device's capacities, grouped by prefix.
    +  //
    +  // Example: Consider a device with driver="dra.example.com", which exposes
    +  // two attributes named "model" and "ext.example.com/family" and which
    +  // exposes one capacity named "modules". This input to this expression
    +  // would have the following fields:
    +  //
    +  //     device.driver
    +  //     device.attributes["dra.example.com"].model
    +  //     device.attributes["ext.example.com"].family
    +  //     device.capacity["dra.example.com"].modules
    +  //
    +  // The device.driver field can be used to check for a specific driver,
    +  // either as a high-level precondition (i.e. you only want to consider
    +  // devices from this driver) or as part of a multi-clause expression
    +  // that is meant to consider devices from different drivers.
    +  //
    +  // The value type of each attribute is defined by the device
    +  // definition, and users who write these expressions must consult the
    +  // documentation for their specific drivers. The value type of each
    +  // capacity is Quantity.
    +  //
    +  // If an unknown prefix is used as a lookup in either device.attributes
    +  // or device.capacity, an empty map will be returned. Any reference to
    +  // an unknown field will cause an evaluation error and allocation to
    +  // abort.
    +  //
    +  // A robust expression should check for the existence of attributes
    +  // before referencing them.
    +  //
    +  // For ease of use, the cel.bind() function is enabled, and can be used
    +  // to simplify expressions that access multiple attributes with the
    +  // same domain. For example:
    +  //
    +  //     cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
    +  //
    +  // The length of the expression must be smaller or equal to 10 Ki. The
    +  // cost of evaluating it is also limited based on the estimated number
    +  // of logical steps.
    +  //
    +  // +required
    +  optional string expression = 1;
    +}
    +
    +// Device represents one individual hardware instance that can be selected based
    +// on its attributes. Besides the name, exactly one field must be set.
    +message Device {
    +  // Name is unique identifier among all devices managed by
    +  // the driver in the pool. It must be a DNS label.
    +  //
    +  // +required
    +  optional string name = 1;
    +
    +  // Basic defines one device instance.
    +  //
    +  // +optional
    +  // +oneOf=deviceType
    +  optional BasicDevice basic = 2;
    +}
    +
    +// DeviceAllocationConfiguration gets embedded in an AllocationResult.
    +message DeviceAllocationConfiguration {
    +  // Source records whether the configuration comes from a class and thus
    +  // is not something that a normal user would have been able to set
    +  // or from a claim.
    +  //
    +  // +required
    +  optional string source = 1;
    +
    +  // Requests lists the names of requests where the configuration applies.
    +  // If empty, its applies to all requests.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated string requests = 2;
    +
    +  optional DeviceConfiguration deviceConfiguration = 3;
    +}
    +
    +// DeviceAllocationResult is the result of allocating devices.
    +message DeviceAllocationResult {
    +  // Results lists all allocated devices.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceRequestAllocationResult results = 1;
    +
    +  // This field is a combination of all the claim and class configuration parameters.
    +  // Drivers can distinguish between those based on a flag.
    +  //
    +  // This includes configuration parameters for drivers which have no allocated
    +  // devices in the result because it is up to the drivers which configuration
    +  // parameters they support. They can silently ignore unknown configuration
    +  // parameters.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceAllocationConfiguration config = 2;
    +}
    +
    +// DeviceAttribute must have exactly one field set.
    +message DeviceAttribute {
    +  // IntValue is a number.
    +  //
    +  // +optional
    +  // +oneOf=ValueType
    +  optional int64 int = 2;
    +
    +  // BoolValue is a true/false value.
    +  //
    +  // +optional
    +  // +oneOf=ValueType
    +  optional bool bool = 3;
    +
    +  // StringValue is a string. Must not be longer than 64 characters.
    +  //
    +  // +optional
    +  // +oneOf=ValueType
    +  optional string string = 4;
    +
    +  // VersionValue is a semantic version according to semver.org spec 2.0.0.
    +  // Must not be longer than 64 characters.
    +  //
    +  // +optional
    +  // +oneOf=ValueType
    +  optional string version = 5;
    +}
    +
    +// DeviceCapacity describes a quantity associated with a device.
    +message DeviceCapacity {
    +  // Value defines how much of a certain device capacity is available.
    +  //
    +  // +required
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity value = 1;
    +}
    +
    +// DeviceClaim defines how to request devices with a ResourceClaim.
    +message DeviceClaim {
    +  // Requests represent individual requests for distinct devices which
    +  // must all be satisfied. If empty, nothing needs to be allocated.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceRequest requests = 1;
    +
    +  // These constraints must be satisfied by the set of devices that get
    +  // allocated for the claim.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceConstraint constraints = 2;
    +
    +  // This field holds configuration for multiple potential drivers which
    +  // could satisfy requests in this claim. It is ignored while allocating
    +  // the claim.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceClaimConfiguration config = 3;
    +}
    +
    +// DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.
    +message DeviceClaimConfiguration {
    +  // Requests lists the names of requests where the configuration applies.
    +  // If empty, it applies to all requests.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated string requests = 1;
    +
    +  optional DeviceConfiguration deviceConfiguration = 2;
    +}
    +
    +// DeviceClass is a vendor- or admin-provided resource that contains
    +// device configuration and selectors. It can be referenced in
    +// the device requests of a claim to apply these presets.
    +// Cluster scoped.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +message DeviceClass {
    +  // Standard object metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Spec defines what can be allocated and how to configure it.
    +  //
    +  // This is mutable. Consumers have to be prepared for classes changing
    +  // at any time, either because they get updated or replaced. Claim
    +  // allocations are done once based on whatever was set in classes at
    +  // the time of allocation.
    +  //
    +  // Changing the spec automatically increments the metadata.generation number.
    +  optional DeviceClassSpec spec = 2;
    +}
    +
    +// DeviceClassConfiguration is used in DeviceClass.
    +message DeviceClassConfiguration {
    +  optional DeviceConfiguration deviceConfiguration = 1;
    +}
    +
    +// DeviceClassList is a collection of classes.
    +message DeviceClassList {
    +  // Standard list metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // Items is the list of resource classes.
    +  repeated DeviceClass items = 2;
    +}
    +
    +// DeviceClassSpec is used in a [DeviceClass] to define what can be allocated
    +// and how to configure it.
    +message DeviceClassSpec {
    +  // Each selector must be satisfied by a device which is claimed via this class.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceSelector selectors = 1;
    +
    +  // Config defines configuration parameters that apply to each device that is claimed via this class.
    +  // Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor
    +  // configuration applies to exactly one driver.
    +  //
    +  // They are passed to the driver, but are not considered while allocating the claim.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceClassConfiguration config = 2;
    +}
    +
    +// DeviceConfiguration must have exactly one field set. It gets embedded
    +// inline in some other structs which have other fields, so field names must
    +// not conflict with those.
    +message DeviceConfiguration {
    +  // Opaque provides driver-specific configuration parameters.
    +  //
    +  // +optional
    +  // +oneOf=ConfigurationType
    +  optional OpaqueDeviceConfiguration opaque = 1;
    +}
    +
    +// DeviceConstraint must have exactly one field set besides Requests.
    +message DeviceConstraint {
    +  // Requests is a list of the one or more requests in this claim which
    +  // must co-satisfy this constraint. If a request is fulfilled by
    +  // multiple devices, then all of the devices must satisfy the
    +  // constraint. If this is not specified, this constraint applies to all
    +  // requests in this claim.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated string requests = 1;
    +
    +  // MatchAttribute requires that all devices in question have this
    +  // attribute and that its type and value are the same across those
    +  // devices.
    +  //
    +  // For example, if you specified "dra.example.com/numa" (a hypothetical example!),
    +  // then only devices in the same NUMA node will be chosen. A device which
    +  // does not have that attribute will not be chosen. All devices should
    +  // use a value of the same type for this attribute because that is part of
    +  // its specification, but if one device doesn't, then it also will not be
    +  // chosen.
    +  //
    +  // Must include the domain qualifier.
    +  //
    +  // +optional
    +  // +oneOf=ConstraintType
    +  optional string matchAttribute = 2;
    +}
    +
    +// DeviceRequest is a request for devices required for a claim.
    +// This is typically a request for a single resource like a device, but can
    +// also ask for several identical devices.
    +//
    +// A DeviceClassName is currently required. Clients must check that it is
    +// indeed set. It's absence indicates that something changed in a way that
    +// is not supported by the client yet, in which case it must refuse to
    +// handle the request.
    +message DeviceRequest {
    +  // Name can be used to reference this request in a pod.spec.containers[].resources.claims
    +  // entry and in a constraint of the claim.
    +  //
    +  // Must be a DNS label.
    +  //
    +  // +required
    +  optional string name = 1;
    +
    +  // DeviceClassName references a specific DeviceClass, which can define
    +  // additional configuration and selectors to be inherited by this
    +  // request.
    +  //
    +  // A class is required. Which classes are available depends on the cluster.
    +  //
    +  // Administrators may use this to restrict which devices may get
    +  // requested by only installing classes with selectors for permitted
    +  // devices. If users are free to request anything without restrictions,
    +  // then administrators can create an empty DeviceClass for users
    +  // to reference.
    +  //
    +  // +required
    +  optional string deviceClassName = 2;
    +
    +  // Selectors define criteria which must be satisfied by a specific
    +  // device in order for that device to be considered for this
    +  // request. All selectors must be satisfied for a device to be
    +  // considered.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated DeviceSelector selectors = 3;
    +
    +  // AllocationMode and its related fields define how devices are allocated
    +  // to satisfy this request. Supported values are:
    +  //
    +  // - ExactCount: This request is for a specific number of devices.
    +  //   This is the default. The exact number is provided in the
    +  //   count field.
    +  //
    +  // - All: This request is for all of the matching devices in a pool.
    +  //   Allocation will fail if some devices are already allocated,
    +  //   unless adminAccess is requested.
    +  //
    +  // If AlloctionMode is not specified, the default mode is ExactCount. If
    +  // the mode is ExactCount and count is not specified, the default count is
    +  // one. Any other requests must specify this field.
    +  //
    +  // More modes may get added in the future. Clients must refuse to handle
    +  // requests with unknown modes.
    +  //
    +  // +optional
    +  optional string allocationMode = 4;
    +
    +  // Count is used only when the count mode is "ExactCount". Must be greater than zero.
    +  // If AllocationMode is ExactCount and this field is not specified, the default is one.
    +  //
    +  // +optional
    +  // +oneOf=AllocationMode
    +  optional int64 count = 5;
    +
    +  // AdminAccess indicates that this is a claim for administrative access
    +  // to the device(s). Claims with AdminAccess are expected to be used for
    +  // monitoring or other management services for a device.  They ignore
    +  // all ordinary claims to the device with respect to access modes and
    +  // any resource allocations.
    +  //
    +  // This is an alpha field and requires enabling the DRAAdminAccess
    +  // feature gate. Admin access is disabled if this field is unset or
    +  // set to false, otherwise it is enabled.
    +  //
    +  // +optional
    +  // +featureGate=DRAAdminAccess
    +  optional bool adminAccess = 6;
    +}
    +
    +// DeviceRequestAllocationResult contains the allocation result for one request.
    +message DeviceRequestAllocationResult {
    +  // Request is the name of the request in the claim which caused this
    +  // device to be allocated. Multiple devices may have been allocated
    +  // per request.
    +  //
    +  // +required
    +  optional string request = 1;
    +
    +  // Driver specifies the name of the DRA driver whose kubelet
    +  // plugin should be invoked to process the allocation once the claim is
    +  // needed on a node.
    +  //
    +  // Must be a DNS subdomain and should end with a DNS domain owned by the
    +  // vendor of the driver.
    +  //
    +  // +required
    +  optional string driver = 2;
    +
    +  // This name together with the driver name and the device name field
    +  // identify which device was allocated (`//`).
    +  //
    +  // Must not be longer than 253 characters and may contain one or more
    +  // DNS sub-domains separated by slashes.
    +  //
    +  // +required
    +  optional string pool = 3;
    +
    +  // Device references one device instance via its name in the driver's
    +  // resource pool. It must be a DNS label.
    +  //
    +  // +required
    +  optional string device = 4;
    +
    +  // AdminAccess indicates that this device was allocated for
    +  // administrative access. See the corresponding request field
    +  // for a definition of mode.
    +  //
    +  // This is an alpha field and requires enabling the DRAAdminAccess
    +  // feature gate. Admin access is disabled if this field is unset or
    +  // set to false, otherwise it is enabled.
    +  //
    +  // +optional
    +  // +featureGate=DRAAdminAccess
    +  optional bool adminAccess = 5;
    +}
    +
    +// DeviceSelector must have exactly one field set.
    +message DeviceSelector {
    +  // CEL contains a CEL expression for selecting a device.
    +  //
    +  // +optional
    +  // +oneOf=SelectorType
    +  optional CELDeviceSelector cel = 1;
    +}
    +
    +// NetworkDeviceData provides network-related details for the allocated device.
    +// This information may be filled by drivers or other components to configure
    +// or identify the device within a network context.
    +message NetworkDeviceData {
    +  // InterfaceName specifies the name of the network interface associated with
    +  // the allocated device. This might be the name of a physical or virtual
    +  // network interface being configured in the pod.
    +  //
    +  // Must not be longer than 256 characters.
    +  //
    +  // +optional
    +  optional string interfaceName = 1;
    +
    +  // IPs lists the network addresses assigned to the device's network interface.
    +  // This can include both IPv4 and IPv6 addresses.
    +  // The IPs are in the CIDR notation, which includes both the address and the
    +  // associated subnet mask.
    +  // e.g.: "192.0.2.5/24" for IPv4 and "2001:db8::5/64" for IPv6.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated string ips = 2;
    +
    +  // HardwareAddress represents the hardware address (e.g. MAC Address) of the device's network interface.
    +  //
    +  // Must not be longer than 128 characters.
    +  //
    +  // +optional
    +  optional string hardwareAddress = 3;
    +}
    +
    +// OpaqueDeviceConfiguration contains configuration parameters for a driver
    +// in a format defined by the driver vendor.
    +message OpaqueDeviceConfiguration {
    +  // Driver is used to determine which kubelet plugin needs
    +  // to be passed these configuration parameters.
    +  //
    +  // An admission policy provided by the driver developer could use this
    +  // to decide whether it needs to validate them.
    +  //
    +  // Must be a DNS subdomain and should end with a DNS domain owned by the
    +  // vendor of the driver.
    +  //
    +  // +required
    +  optional string driver = 1;
    +
    +  // Parameters can contain arbitrary data. It is the responsibility of
    +  // the driver developer to handle validation and versioning. Typically this
    +  // includes self-identification and a version ("kind" + "apiVersion" for
    +  // Kubernetes types), with conversion between different versions.
    +  //
    +  // The length of the raw data must be smaller or equal to 10 Ki.
    +  //
    +  // +required
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension parameters = 2;
    +}
    +
    +// ResourceClaim describes a request for access to resources in the cluster,
    +// for use by workloads. For example, if a workload needs an accelerator device
    +// with specific properties, this is how that request is expressed. The status
    +// stanza tracks whether this claim has been satisfied and what specific
    +// resources have been allocated.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +message ResourceClaim {
    +  // Standard object metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Spec describes what is being requested and how to configure it.
    +  // The spec is immutable.
    +  optional ResourceClaimSpec spec = 2;
    +
    +  // Status describes whether the claim is ready to use and what has been allocated.
    +  // +optional
    +  optional ResourceClaimStatus status = 3;
    +}
    +
    +// ResourceClaimConsumerReference contains enough information to let you
    +// locate the consumer of a ResourceClaim. The user must be a resource in the same
    +// namespace as the ResourceClaim.
    +message ResourceClaimConsumerReference {
    +  // APIGroup is the group for the resource being referenced. It is
    +  // empty for the core API. This matches the group in the APIVersion
    +  // that is used when creating the resources.
    +  // +optional
    +  optional string apiGroup = 1;
    +
    +  // Resource is the type of resource being referenced, for example "pods".
    +  // +required
    +  optional string resource = 3;
    +
    +  // Name is the name of resource being referenced.
    +  // +required
    +  optional string name = 4;
    +
    +  // UID identifies exactly one incarnation of the resource.
    +  // +required
    +  optional string uid = 5;
    +}
    +
    +// ResourceClaimList is a collection of claims.
    +message ResourceClaimList {
    +  // Standard list metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // Items is the list of resource claims.
    +  repeated ResourceClaim items = 2;
    +}
    +
    +// ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.
    +message ResourceClaimSpec {
    +  // Devices defines how to request devices.
    +  //
    +  // +optional
    +  optional DeviceClaim devices = 1;
    +}
    +
    +// ResourceClaimStatus tracks whether the resource has been allocated and what
    +// the result of that was.
    +message ResourceClaimStatus {
    +  // Allocation is set once the claim has been allocated successfully.
    +  //
    +  // +optional
    +  optional AllocationResult allocation = 1;
    +
    +  // ReservedFor indicates which entities are currently allowed to use
    +  // the claim. A Pod which references a ResourceClaim which is not
    +  // reserved for that Pod will not be started. A claim that is in
    +  // use or might be in use because it has been reserved must not get
    +  // deallocated.
    +  //
    +  // In a cluster with multiple scheduler instances, two pods might get
    +  // scheduled concurrently by different schedulers. When they reference
    +  // the same ResourceClaim which already has reached its maximum number
    +  // of consumers, only one pod can be scheduled.
    +  //
    +  // Both schedulers try to add their pod to the claim.status.reservedFor
    +  // field, but only the update that reaches the API server first gets
    +  // stored. The other one fails with an error and the scheduler
    +  // which issued it knows that it must put the pod back into the queue,
    +  // waiting for the ResourceClaim to become usable again.
    +  //
    +  // There can be at most 32 such reservations. This may get increased in
    +  // the future, but not reduced.
    +  //
    +  // +optional
    +  // +listType=map
    +  // +listMapKey=uid
    +  // +patchStrategy=merge
    +  // +patchMergeKey=uid
    +  repeated ResourceClaimConsumerReference reservedFor = 2;
    +
    +  // Devices contains the status of each device allocated for this
    +  // claim, as reported by the driver. This can include driver-specific
    +  // information. Entries are owned by their respective drivers.
    +  //
    +  // +optional
    +  // +listType=map
    +  // +listMapKey=driver
    +  // +listMapKey=device
    +  // +listMapKey=pool
    +  // +featureGate=DRAResourceClaimDeviceStatus
    +  repeated AllocatedDeviceStatus devices = 4;
    +}
    +
    +// ResourceClaimTemplate is used to produce ResourceClaim objects.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +message ResourceClaimTemplate {
    +  // Standard object metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Describes the ResourceClaim that is to be generated.
    +  //
    +  // This field is immutable. A ResourceClaim will get created by the
    +  // control plane for a Pod when needed and then not get updated
    +  // anymore.
    +  optional ResourceClaimTemplateSpec spec = 2;
    +}
    +
    +// ResourceClaimTemplateList is a collection of claim templates.
    +message ResourceClaimTemplateList {
    +  // Standard list metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // Items is the list of resource claim templates.
    +  repeated ResourceClaimTemplate items = 2;
    +}
    +
    +// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
    +message ResourceClaimTemplateSpec {
    +  // ObjectMeta may contain labels and annotations that will be copied into the ResourceClaim
    +  // when creating it. No other fields are allowed and will be rejected during
    +  // validation.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Spec for the ResourceClaim. The entire content is copied unchanged
    +  // into the ResourceClaim that gets created from this template. The
    +  // same fields as in a ResourceClaim are also valid here.
    +  optional ResourceClaimSpec spec = 2;
    +}
    +
    +// ResourcePool describes the pool that ResourceSlices belong to.
    +message ResourcePool {
    +  // Name is used to identify the pool. For node-local devices, this
    +  // is often the node name, but this is not required.
    +  //
    +  // It must not be longer than 253 characters and must consist of one or more DNS sub-domains
    +  // separated by slashes. This field is immutable.
    +  //
    +  // +required
    +  optional string name = 1;
    +
    +  // Generation tracks the change in a pool over time. Whenever a driver
    +  // changes something about one or more of the resources in a pool, it
    +  // must change the generation in all ResourceSlices which are part of
    +  // that pool. Consumers of ResourceSlices should only consider
    +  // resources from the pool with the highest generation number. The
    +  // generation may be reset by drivers, which should be fine for
    +  // consumers, assuming that all ResourceSlices in a pool are updated to
    +  // match or deleted.
    +  //
    +  // Combined with ResourceSliceCount, this mechanism enables consumers to
    +  // detect pools which are comprised of multiple ResourceSlices and are
    +  // in an incomplete state.
    +  //
    +  // +required
    +  optional int64 generation = 2;
    +
    +  // ResourceSliceCount is the total number of ResourceSlices in the pool at this
    +  // generation number. Must be greater than zero.
    +  //
    +  // Consumers can use this to check whether they have seen all ResourceSlices
    +  // belonging to the same pool.
    +  //
    +  // +required
    +  optional int64 resourceSliceCount = 3;
    +}
    +
    +// ResourceSlice represents one or more resources in a pool of similar resources,
    +// managed by a common driver. A pool may span more than one ResourceSlice, and exactly how many
    +// ResourceSlices comprise a pool is determined by the driver.
    +//
    +// At the moment, the only supported resources are devices with attributes and capacities.
    +// Each device in a given pool, regardless of how many ResourceSlices, must have a unique name.
    +// The ResourceSlice in which a device gets published may change over time. The unique identifier
    +// for a device is the tuple , , .
    +//
    +// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number
    +// and updates all ResourceSlices with that new number and new resource definitions. A consumer
    +// must only use ResourceSlices with the highest generation number and ignore all others.
    +//
    +// When allocating all resources in a pool matching certain criteria or when
    +// looking for the best solution among several different alternatives, a
    +// consumer should check the number of ResourceSlices in a pool (included in
    +// each ResourceSlice) to determine whether its view of a pool is complete and
    +// if not, should wait until the driver has completed updating the pool.
    +//
    +// For resources that are not local to a node, the node name is not set. Instead,
    +// the driver may use a node selector to specify where the devices are available.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +message ResourceSlice {
    +  // Standard object metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Contains the information published by the driver.
    +  //
    +  // Changing the spec automatically increments the metadata.generation number.
    +  optional ResourceSliceSpec spec = 2;
    +}
    +
    +// ResourceSliceList is a collection of ResourceSlices.
    +message ResourceSliceList {
    +  // Standard list metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // Items is the list of resource ResourceSlices.
    +  repeated ResourceSlice items = 2;
    +}
    +
    +// ResourceSliceSpec contains the information published by the driver in one ResourceSlice.
    +message ResourceSliceSpec {
    +  // Driver identifies the DRA driver providing the capacity information.
    +  // A field selector can be used to list only ResourceSlice
    +  // objects with a certain driver name.
    +  //
    +  // Must be a DNS subdomain and should end with a DNS domain owned by the
    +  // vendor of the driver. This field is immutable.
    +  //
    +  // +required
    +  optional string driver = 1;
    +
    +  // Pool describes the pool that this ResourceSlice belongs to.
    +  //
    +  // +required
    +  optional ResourcePool pool = 2;
    +
    +  // NodeName identifies the node which provides the resources in this pool.
    +  // A field selector can be used to list only ResourceSlice
    +  // objects belonging to a certain node.
    +  //
    +  // This field can be used to limit access from nodes to ResourceSlices with
    +  // the same node name. It also indicates to autoscalers that adding
    +  // new nodes of the same type as some old node might also make new
    +  // resources available.
    +  //
    +  // Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +  // This field is immutable.
    +  //
    +  // +optional
    +  // +oneOf=NodeSelection
    +  optional string nodeName = 3;
    +
    +  // NodeSelector defines which nodes have access to the resources in the pool,
    +  // when that pool is not limited to a single node.
    +  //
    +  // Must use exactly one term.
    +  //
    +  // Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +  //
    +  // +optional
    +  // +oneOf=NodeSelection
    +  optional .k8s.io.api.core.v1.NodeSelector nodeSelector = 4;
    +
    +  // AllNodes indicates that all nodes have access to the resources in the pool.
    +  //
    +  // Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +  //
    +  // +optional
    +  // +oneOf=NodeSelection
    +  optional bool allNodes = 5;
    +
    +  // Devices lists some or all of the devices in this pool.
    +  //
    +  // Must not have more than 128 entries.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  repeated Device devices = 6;
    +}
    +
    diff --git a/vendor/k8s.io/api/resource/v1beta1/register.go b/vendor/k8s.io/api/resource/v1beta1/register.go
    new file mode 100644
    index 000000000000..ce0a1d930586
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1beta1/register.go
    @@ -0,0 +1,60 @@
    +/*
    +Copyright 2022 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1beta1
    +
    +import (
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/runtime/schema"
    +)
    +
    +// GroupName is the group name use in this package
    +const GroupName = "resource.k8s.io"
    +
    +// SchemeGroupVersion is group version used to register these objects
    +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"}
    +
    +// Resource takes an unqualified resource and returns a Group qualified GroupResource
    +func Resource(resource string) schema.GroupResource {
    +	return SchemeGroupVersion.WithResource(resource).GroupResource()
    +}
    +
    +var (
    +	// We only register manually written functions here. The registration of the
    +	// generated functions takes place in the generated files. The separation
    +	// makes the code compile even when the generated files are missing.
    +	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
    +	AddToScheme   = SchemeBuilder.AddToScheme
    +)
    +
    +// Adds the list of known types to the given scheme.
    +func addKnownTypes(scheme *runtime.Scheme) error {
    +	scheme.AddKnownTypes(SchemeGroupVersion,
    +		&DeviceClass{},
    +		&DeviceClassList{},
    +		&ResourceClaim{},
    +		&ResourceClaimList{},
    +		&ResourceClaimTemplate{},
    +		&ResourceClaimTemplateList{},
    +		&ResourceSlice{},
    +		&ResourceSliceList{},
    +	)
    +
    +	// Add the watch version that applies
    +	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
    +	return nil
    +}
    diff --git a/vendor/k8s.io/api/resource/v1beta1/types.go b/vendor/k8s.io/api/resource/v1beta1/types.go
    new file mode 100644
    index 000000000000..a7f1ee7b54ff
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1beta1/types.go
    @@ -0,0 +1,1084 @@
    +/*
    +Copyright 2022 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1beta1
    +
    +import (
    +	v1 "k8s.io/api/core/v1"
    +	"k8s.io/apimachinery/pkg/api/resource"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/types"
    +	"k8s.io/apimachinery/pkg/util/validation"
    +)
    +
    +const (
    +	// Finalizer is the finalizer that gets set for claims
    +	// which were allocated through a builtin controller.
    +	// Reserved for use by Kubernetes, DRA driver controllers must
    +	// use their own finalizer.
    +	Finalizer = "resource.kubernetes.io/delete-protection"
    +)
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// ResourceSlice represents one or more resources in a pool of similar resources,
    +// managed by a common driver. A pool may span more than one ResourceSlice, and exactly how many
    +// ResourceSlices comprise a pool is determined by the driver.
    +//
    +// At the moment, the only supported resources are devices with attributes and capacities.
    +// Each device in a given pool, regardless of how many ResourceSlices, must have a unique name.
    +// The ResourceSlice in which a device gets published may change over time. The unique identifier
    +// for a device is the tuple , , .
    +//
    +// Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number
    +// and updates all ResourceSlices with that new number and new resource definitions. A consumer
    +// must only use ResourceSlices with the highest generation number and ignore all others.
    +//
    +// When allocating all resources in a pool matching certain criteria or when
    +// looking for the best solution among several different alternatives, a
    +// consumer should check the number of ResourceSlices in a pool (included in
    +// each ResourceSlice) to determine whether its view of a pool is complete and
    +// if not, should wait until the driver has completed updating the pool.
    +//
    +// For resources that are not local to a node, the node name is not set. Instead,
    +// the driver may use a node selector to specify where the devices are available.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +type ResourceSlice struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Contains the information published by the driver.
    +	//
    +	// Changing the spec automatically increments the metadata.generation number.
    +	Spec ResourceSliceSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    +}
    +
    +const (
    +	// ResourceSliceSelectorNodeName can be used in a [metav1.ListOptions]
    +	// field selector to filter based on [ResourceSliceSpec.NodeName].
    +	ResourceSliceSelectorNodeName = "spec.nodeName"
    +	// ResourceSliceSelectorDriver can be used in a [metav1.ListOptions]
    +	// field selector to filter based on [ResourceSliceSpec.Driver].
    +	ResourceSliceSelectorDriver = "spec.driver"
    +)
    +
    +// ResourceSliceSpec contains the information published by the driver in one ResourceSlice.
    +type ResourceSliceSpec struct {
    +	// Driver identifies the DRA driver providing the capacity information.
    +	// A field selector can be used to list only ResourceSlice
    +	// objects with a certain driver name.
    +	//
    +	// Must be a DNS subdomain and should end with a DNS domain owned by the
    +	// vendor of the driver. This field is immutable.
    +	//
    +	// +required
    +	Driver string `json:"driver" protobuf:"bytes,1,name=driver"`
    +
    +	// Pool describes the pool that this ResourceSlice belongs to.
    +	//
    +	// +required
    +	Pool ResourcePool `json:"pool" protobuf:"bytes,2,name=pool"`
    +
    +	// NodeName identifies the node which provides the resources in this pool.
    +	// A field selector can be used to list only ResourceSlice
    +	// objects belonging to a certain node.
    +	//
    +	// This field can be used to limit access from nodes to ResourceSlices with
    +	// the same node name. It also indicates to autoscalers that adding
    +	// new nodes of the same type as some old node might also make new
    +	// resources available.
    +	//
    +	// Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +	// This field is immutable.
    +	//
    +	// +optional
    +	// +oneOf=NodeSelection
    +	NodeName string `json:"nodeName,omitempty" protobuf:"bytes,3,opt,name=nodeName"`
    +
    +	// NodeSelector defines which nodes have access to the resources in the pool,
    +	// when that pool is not limited to a single node.
    +	//
    +	// Must use exactly one term.
    +	//
    +	// Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +	//
    +	// +optional
    +	// +oneOf=NodeSelection
    +	NodeSelector *v1.NodeSelector `json:"nodeSelector,omitempty" protobuf:"bytes,4,opt,name=nodeSelector"`
    +
    +	// AllNodes indicates that all nodes have access to the resources in the pool.
    +	//
    +	// Exactly one of NodeName, NodeSelector and AllNodes must be set.
    +	//
    +	// +optional
    +	// +oneOf=NodeSelection
    +	AllNodes bool `json:"allNodes,omitempty" protobuf:"bytes,5,opt,name=allNodes"`
    +
    +	// Devices lists some or all of the devices in this pool.
    +	//
    +	// Must not have more than 128 entries.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Devices []Device `json:"devices" protobuf:"bytes,6,name=devices"`
    +}
    +
    +// ResourcePool describes the pool that ResourceSlices belong to.
    +type ResourcePool struct {
    +	// Name is used to identify the pool. For node-local devices, this
    +	// is often the node name, but this is not required.
    +	//
    +	// It must not be longer than 253 characters and must consist of one or more DNS sub-domains
    +	// separated by slashes. This field is immutable.
    +	//
    +	// +required
    +	Name string `json:"name" protobuf:"bytes,1,name=name"`
    +
    +	// Generation tracks the change in a pool over time. Whenever a driver
    +	// changes something about one or more of the resources in a pool, it
    +	// must change the generation in all ResourceSlices which are part of
    +	// that pool. Consumers of ResourceSlices should only consider
    +	// resources from the pool with the highest generation number. The
    +	// generation may be reset by drivers, which should be fine for
    +	// consumers, assuming that all ResourceSlices in a pool are updated to
    +	// match or deleted.
    +	//
    +	// Combined with ResourceSliceCount, this mechanism enables consumers to
    +	// detect pools which are comprised of multiple ResourceSlices and are
    +	// in an incomplete state.
    +	//
    +	// +required
    +	Generation int64 `json:"generation" protobuf:"bytes,2,name=generation"`
    +
    +	// ResourceSliceCount is the total number of ResourceSlices in the pool at this
    +	// generation number. Must be greater than zero.
    +	//
    +	// Consumers can use this to check whether they have seen all ResourceSlices
    +	// belonging to the same pool.
    +	//
    +	// +required
    +	ResourceSliceCount int64 `json:"resourceSliceCount" protobuf:"bytes,3,name=resourceSliceCount"`
    +}
    +
    +const ResourceSliceMaxSharedCapacity = 128
    +const ResourceSliceMaxDevices = 128
    +const PoolNameMaxLength = validation.DNS1123SubdomainMaxLength // Same as for a single node name.
    +
    +// Device represents one individual hardware instance that can be selected based
    +// on its attributes. Besides the name, exactly one field must be set.
    +type Device struct {
    +	// Name is unique identifier among all devices managed by
    +	// the driver in the pool. It must be a DNS label.
    +	//
    +	// +required
    +	Name string `json:"name" protobuf:"bytes,1,name=name"`
    +
    +	// Basic defines one device instance.
    +	//
    +	// +optional
    +	// +oneOf=deviceType
    +	Basic *BasicDevice `json:"basic,omitempty" protobuf:"bytes,2,opt,name=basic"`
    +}
    +
    +// BasicDevice defines one device instance.
    +type BasicDevice struct {
    +	// Attributes defines the set of attributes for this device.
    +	// The name of each attribute must be unique in that set.
    +	//
    +	// The maximum number of attributes and capacities combined is 32.
    +	//
    +	// +optional
    +	Attributes map[QualifiedName]DeviceAttribute `json:"attributes,omitempty" protobuf:"bytes,1,rep,name=attributes"`
    +
    +	// Capacity defines the set of capacities for this device.
    +	// The name of each capacity must be unique in that set.
    +	//
    +	// The maximum number of attributes and capacities combined is 32.
    +	//
    +	// +optional
    +	Capacity map[QualifiedName]DeviceCapacity `json:"capacity,omitempty" protobuf:"bytes,2,rep,name=capacity"`
    +}
    +
    +// DeviceCapacity describes a quantity associated with a device.
    +type DeviceCapacity struct {
    +	// Value defines how much of a certain device capacity is available.
    +	//
    +	// +required
    +	Value resource.Quantity `json:"value" protobuf:"bytes,1,rep,name=value"`
    +
    +	// potential future addition: fields which define how to "consume"
    +	// capacity (= share a single device between different consumers).
    +}
    +
    +// Limit for the sum of the number of entries in both attributes and capacity.
    +const ResourceSliceMaxAttributesAndCapacitiesPerDevice = 32
    +
    +// QualifiedName is the name of a device attribute or capacity.
    +//
    +// Attributes and capacities are defined either by the owner of the specific
    +// driver (usually the vendor) or by some 3rd party (e.g. the Kubernetes
    +// project). Because they are sometimes compared across devices, a given name
    +// is expected to mean the same thing and have the same type on all devices.
    +//
    +// Names must be either a C identifier (e.g. "theName") or a DNS subdomain
    +// followed by a slash ("/") followed by a C identifier
    +// (e.g. "dra.example.com/theName"). Names which do not include the
    +// domain prefix are assumed to be part of the driver's domain. Attributes
    +// or capacities defined by 3rd parties must include the domain prefix.
    +//
    +// The maximum length for the DNS subdomain is 63 characters (same as
    +// for driver names) and the maximum length of the C identifier
    +// is 32.
    +type QualifiedName string
    +
    +// FullyQualifiedName is a QualifiedName where the domain is set.
    +type FullyQualifiedName string
    +
    +// DeviceMaxDomainLength is the maximum length of the domain prefix in a fully-qualified name.
    +const DeviceMaxDomainLength = 63
    +
    +// DeviceMaxIDLength is the maximum length of the identifier in a device attribute or capacity name (`/`).
    +const DeviceMaxIDLength = 32
    +
    +// DeviceAttribute must have exactly one field set.
    +type DeviceAttribute struct {
    +	// The Go field names below have a Value suffix to avoid a conflict between the
    +	// field "String" and the corresponding method. That method is required.
    +	// The Kubernetes API is defined without that suffix to keep it more natural.
    +
    +	// IntValue is a number.
    +	//
    +	// +optional
    +	// +oneOf=ValueType
    +	IntValue *int64 `json:"int,omitempty" protobuf:"varint,2,opt,name=int"`
    +
    +	// BoolValue is a true/false value.
    +	//
    +	// +optional
    +	// +oneOf=ValueType
    +	BoolValue *bool `json:"bool,omitempty" protobuf:"varint,3,opt,name=bool"`
    +
    +	// StringValue is a string. Must not be longer than 64 characters.
    +	//
    +	// +optional
    +	// +oneOf=ValueType
    +	StringValue *string `json:"string,omitempty" protobuf:"bytes,4,opt,name=string"`
    +
    +	// VersionValue is a semantic version according to semver.org spec 2.0.0.
    +	// Must not be longer than 64 characters.
    +	//
    +	// +optional
    +	// +oneOf=ValueType
    +	VersionValue *string `json:"version,omitempty" protobuf:"bytes,5,opt,name=version"`
    +}
    +
    +// DeviceAttributeMaxValueLength is the maximum length of a string or version attribute value.
    +const DeviceAttributeMaxValueLength = 64
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// ResourceSliceList is a collection of ResourceSlices.
    +type ResourceSliceList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Items is the list of resource ResourceSlices.
    +	Items []ResourceSlice `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// +genclient
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// ResourceClaim describes a request for access to resources in the cluster,
    +// for use by workloads. For example, if a workload needs an accelerator device
    +// with specific properties, this is how that request is expressed. The status
    +// stanza tracks whether this claim has been satisfied and what specific
    +// resources have been allocated.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +type ResourceClaim struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Spec describes what is being requested and how to configure it.
    +	// The spec is immutable.
    +	Spec ResourceClaimSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    +
    +	// Status describes whether the claim is ready to use and what has been allocated.
    +	// +optional
    +	Status ResourceClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
    +}
    +
    +// ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.
    +type ResourceClaimSpec struct {
    +	// Devices defines how to request devices.
    +	//
    +	// +optional
    +	Devices DeviceClaim `json:"devices" protobuf:"bytes,1,name=devices"`
    +
    +	// Controller is tombstoned since Kubernetes 1.32 where
    +	// it got removed. May be reused once decoding v1alpha3 is no longer
    +	// supported.
    +	// Controller string `json:"controller,omitempty" protobuf:"bytes,2,opt,name=controller"`
    +}
    +
    +// DeviceClaim defines how to request devices with a ResourceClaim.
    +type DeviceClaim struct {
    +	// Requests represent individual requests for distinct devices which
    +	// must all be satisfied. If empty, nothing needs to be allocated.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Requests []DeviceRequest `json:"requests" protobuf:"bytes,1,name=requests"`
    +
    +	// These constraints must be satisfied by the set of devices that get
    +	// allocated for the claim.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Constraints []DeviceConstraint `json:"constraints,omitempty" protobuf:"bytes,2,opt,name=constraints"`
    +
    +	// This field holds configuration for multiple potential drivers which
    +	// could satisfy requests in this claim. It is ignored while allocating
    +	// the claim.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Config []DeviceClaimConfiguration `json:"config,omitempty" protobuf:"bytes,3,opt,name=config"`
    +
    +	// Potential future extension, ignored by older schedulers. This is
    +	// fine because scoring allows users to define a preference, without
    +	// making it a hard requirement.
    +	//
    +	// Score *SomeScoringStruct
    +}
    +
    +const (
    +	DeviceRequestsMaxSize    = AllocationResultsMaxSize
    +	DeviceConstraintsMaxSize = 32
    +	DeviceConfigMaxSize      = 32
    +)
    +
    +// DeviceRequest is a request for devices required for a claim.
    +// This is typically a request for a single resource like a device, but can
    +// also ask for several identical devices.
    +//
    +// A DeviceClassName is currently required. Clients must check that it is
    +// indeed set. It's absence indicates that something changed in a way that
    +// is not supported by the client yet, in which case it must refuse to
    +// handle the request.
    +type DeviceRequest struct {
    +	// Name can be used to reference this request in a pod.spec.containers[].resources.claims
    +	// entry and in a constraint of the claim.
    +	//
    +	// Must be a DNS label.
    +	//
    +	// +required
    +	Name string `json:"name" protobuf:"bytes,1,name=name"`
    +
    +	// DeviceClassName references a specific DeviceClass, which can define
    +	// additional configuration and selectors to be inherited by this
    +	// request.
    +	//
    +	// A class is required. Which classes are available depends on the cluster.
    +	//
    +	// Administrators may use this to restrict which devices may get
    +	// requested by only installing classes with selectors for permitted
    +	// devices. If users are free to request anything without restrictions,
    +	// then administrators can create an empty DeviceClass for users
    +	// to reference.
    +	//
    +	// +required
    +	DeviceClassName string `json:"deviceClassName" protobuf:"bytes,2,name=deviceClassName"`
    +
    +	// Selectors define criteria which must be satisfied by a specific
    +	// device in order for that device to be considered for this
    +	// request. All selectors must be satisfied for a device to be
    +	// considered.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Selectors []DeviceSelector `json:"selectors,omitempty" protobuf:"bytes,3,name=selectors"`
    +
    +	// AllocationMode and its related fields define how devices are allocated
    +	// to satisfy this request. Supported values are:
    +	//
    +	// - ExactCount: This request is for a specific number of devices.
    +	//   This is the default. The exact number is provided in the
    +	//   count field.
    +	//
    +	// - All: This request is for all of the matching devices in a pool.
    +	//   Allocation will fail if some devices are already allocated,
    +	//   unless adminAccess is requested.
    +	//
    +	// If AlloctionMode is not specified, the default mode is ExactCount. If
    +	// the mode is ExactCount and count is not specified, the default count is
    +	// one. Any other requests must specify this field.
    +	//
    +	// More modes may get added in the future. Clients must refuse to handle
    +	// requests with unknown modes.
    +	//
    +	// +optional
    +	AllocationMode DeviceAllocationMode `json:"allocationMode,omitempty" protobuf:"bytes,4,opt,name=allocationMode"`
    +
    +	// Count is used only when the count mode is "ExactCount". Must be greater than zero.
    +	// If AllocationMode is ExactCount and this field is not specified, the default is one.
    +	//
    +	// +optional
    +	// +oneOf=AllocationMode
    +	Count int64 `json:"count,omitempty" protobuf:"bytes,5,opt,name=count"`
    +
    +	// AdminAccess indicates that this is a claim for administrative access
    +	// to the device(s). Claims with AdminAccess are expected to be used for
    +	// monitoring or other management services for a device.  They ignore
    +	// all ordinary claims to the device with respect to access modes and
    +	// any resource allocations.
    +	//
    +	// This is an alpha field and requires enabling the DRAAdminAccess
    +	// feature gate. Admin access is disabled if this field is unset or
    +	// set to false, otherwise it is enabled.
    +	//
    +	// +optional
    +	// +featureGate=DRAAdminAccess
    +	AdminAccess *bool `json:"adminAccess,omitempty" protobuf:"bytes,6,opt,name=adminAccess"`
    +}
    +
    +const (
    +	DeviceSelectorsMaxSize = 32
    +)
    +
    +type DeviceAllocationMode string
    +
    +// Valid [DeviceRequest.CountMode] values.
    +const (
    +	DeviceAllocationModeExactCount = DeviceAllocationMode("ExactCount")
    +	DeviceAllocationModeAll        = DeviceAllocationMode("All")
    +)
    +
    +// DeviceSelector must have exactly one field set.
    +type DeviceSelector struct {
    +	// CEL contains a CEL expression for selecting a device.
    +	//
    +	// +optional
    +	// +oneOf=SelectorType
    +	CEL *CELDeviceSelector `json:"cel,omitempty" protobuf:"bytes,1,opt,name=cel"`
    +}
    +
    +// CELDeviceSelector contains a CEL expression for selecting a device.
    +type CELDeviceSelector struct {
    +	// Expression is a CEL expression which evaluates a single device. It
    +	// must evaluate to true when the device under consideration satisfies
    +	// the desired criteria, and false when it does not. Any other result
    +	// is an error and causes allocation of devices to abort.
    +	//
    +	// The expression's input is an object named "device", which carries
    +	// the following properties:
    +	//  - driver (string): the name of the driver which defines this device.
    +	//  - attributes (map[string]object): the device's attributes, grouped by prefix
    +	//    (e.g. device.attributes["dra.example.com"] evaluates to an object with all
    +	//    of the attributes which were prefixed by "dra.example.com".
    +	//  - capacity (map[string]object): the device's capacities, grouped by prefix.
    +	//
    +	// Example: Consider a device with driver="dra.example.com", which exposes
    +	// two attributes named "model" and "ext.example.com/family" and which
    +	// exposes one capacity named "modules". This input to this expression
    +	// would have the following fields:
    +	//
    +	//     device.driver
    +	//     device.attributes["dra.example.com"].model
    +	//     device.attributes["ext.example.com"].family
    +	//     device.capacity["dra.example.com"].modules
    +	//
    +	// The device.driver field can be used to check for a specific driver,
    +	// either as a high-level precondition (i.e. you only want to consider
    +	// devices from this driver) or as part of a multi-clause expression
    +	// that is meant to consider devices from different drivers.
    +	//
    +	// The value type of each attribute is defined by the device
    +	// definition, and users who write these expressions must consult the
    +	// documentation for their specific drivers. The value type of each
    +	// capacity is Quantity.
    +	//
    +	// If an unknown prefix is used as a lookup in either device.attributes
    +	// or device.capacity, an empty map will be returned. Any reference to
    +	// an unknown field will cause an evaluation error and allocation to
    +	// abort.
    +	//
    +	// A robust expression should check for the existence of attributes
    +	// before referencing them.
    +	//
    +	// For ease of use, the cel.bind() function is enabled, and can be used
    +	// to simplify expressions that access multiple attributes with the
    +	// same domain. For example:
    +	//
    +	//     cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
    +	//
    +	// The length of the expression must be smaller or equal to 10 Ki. The
    +	// cost of evaluating it is also limited based on the estimated number
    +	// of logical steps.
    +	//
    +	// +required
    +	Expression string `json:"expression" protobuf:"bytes,1,name=expression"`
    +}
    +
    +// CELSelectorExpressionMaxCost specifies the cost limit for a single CEL selector
    +// evaluation.
    +//
    +// There is no overall budget for selecting a device, so the actual time
    +// required for that is proportional to the number of CEL selectors and how
    +// often they need to be evaluated, which can vary depending on several factors
    +// (number of devices, cluster utilization, additional constraints).
    +//
    +// Validation against this limit and [CELSelectorExpressionMaxLength] happens
    +// only when setting an expression for the first time or when changing it. If
    +// the limits are changed in a future Kubernetes release, existing users are
    +// guaranteed that existing expressions will continue to be valid.
    +//
    +// However, the kube-scheduler also applies this cost limit at runtime, so it
    +// could happen that a valid expression fails at runtime after an up- or
    +// downgrade. This can also happen without version skew when the cost estimate
    +// underestimated the actual cost. That this might happen is the reason why
    +// kube-scheduler enforces the runtime limit instead of relying on validation.
    +//
    +// According to
    +// https://github.com/kubernetes/kubernetes/blob/4aeaf1e99e82da8334c0d6dddd848a194cd44b4f/staging/src/k8s.io/apiserver/pkg/apis/cel/config.go#L20-L22,
    +// this gives roughly 0.1 second for each expression evaluation.
    +// However, this depends on how fast the machine is.
    +const CELSelectorExpressionMaxCost = 1000000
    +
    +// CELSelectorExpressionMaxLength is the maximum length of a CEL selector expression string.
    +const CELSelectorExpressionMaxLength = 10 * 1024
    +
    +// DeviceConstraint must have exactly one field set besides Requests.
    +type DeviceConstraint struct {
    +	// Requests is a list of the one or more requests in this claim which
    +	// must co-satisfy this constraint. If a request is fulfilled by
    +	// multiple devices, then all of the devices must satisfy the
    +	// constraint. If this is not specified, this constraint applies to all
    +	// requests in this claim.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Requests []string `json:"requests,omitempty" protobuf:"bytes,1,opt,name=requests"`
    +
    +	// MatchAttribute requires that all devices in question have this
    +	// attribute and that its type and value are the same across those
    +	// devices.
    +	//
    +	// For example, if you specified "dra.example.com/numa" (a hypothetical example!),
    +	// then only devices in the same NUMA node will be chosen. A device which
    +	// does not have that attribute will not be chosen. All devices should
    +	// use a value of the same type for this attribute because that is part of
    +	// its specification, but if one device doesn't, then it also will not be
    +	// chosen.
    +	//
    +	// Must include the domain qualifier.
    +	//
    +	// +optional
    +	// +oneOf=ConstraintType
    +	MatchAttribute *FullyQualifiedName `json:"matchAttribute,omitempty" protobuf:"bytes,2,opt,name=matchAttribute"`
    +
    +	// Potential future extension, not part of the current design:
    +	// A CEL expression which compares different devices and returns
    +	// true if they match.
    +	//
    +	// Because it would be part of a one-of, old schedulers will not
    +	// accidentally ignore this additional, for them unknown match
    +	// criteria.
    +	//
    +	// MatchExpression string
    +}
    +
    +// DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.
    +type DeviceClaimConfiguration struct {
    +	// Requests lists the names of requests where the configuration applies.
    +	// If empty, it applies to all requests.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Requests []string `json:"requests,omitempty" protobuf:"bytes,1,opt,name=requests"`
    +
    +	DeviceConfiguration `json:",inline" protobuf:"bytes,2,name=deviceConfiguration"`
    +}
    +
    +// DeviceConfiguration must have exactly one field set. It gets embedded
    +// inline in some other structs which have other fields, so field names must
    +// not conflict with those.
    +type DeviceConfiguration struct {
    +	// Opaque provides driver-specific configuration parameters.
    +	//
    +	// +optional
    +	// +oneOf=ConfigurationType
    +	Opaque *OpaqueDeviceConfiguration `json:"opaque,omitempty" protobuf:"bytes,1,opt,name=opaque"`
    +}
    +
    +// OpaqueDeviceConfiguration contains configuration parameters for a driver
    +// in a format defined by the driver vendor.
    +type OpaqueDeviceConfiguration struct {
    +	// Driver is used to determine which kubelet plugin needs
    +	// to be passed these configuration parameters.
    +	//
    +	// An admission policy provided by the driver developer could use this
    +	// to decide whether it needs to validate them.
    +	//
    +	// Must be a DNS subdomain and should end with a DNS domain owned by the
    +	// vendor of the driver.
    +	//
    +	// +required
    +	Driver string `json:"driver" protobuf:"bytes,1,name=driver"`
    +
    +	// Parameters can contain arbitrary data. It is the responsibility of
    +	// the driver developer to handle validation and versioning. Typically this
    +	// includes self-identification and a version ("kind" + "apiVersion" for
    +	// Kubernetes types), with conversion between different versions.
    +	//
    +	// The length of the raw data must be smaller or equal to 10 Ki.
    +	//
    +	// +required
    +	Parameters runtime.RawExtension `json:"parameters" protobuf:"bytes,2,name=parameters"`
    +}
    +
    +// OpaqueParametersMaxLength is the maximum length of the raw data in an
    +// [OpaqueDeviceConfiguration.Parameters] field.
    +const OpaqueParametersMaxLength = 10 * 1024
    +
    +// ResourceClaimStatus tracks whether the resource has been allocated and what
    +// the result of that was.
    +type ResourceClaimStatus struct {
    +	// Allocation is set once the claim has been allocated successfully.
    +	//
    +	// +optional
    +	Allocation *AllocationResult `json:"allocation,omitempty" protobuf:"bytes,1,opt,name=allocation"`
    +
    +	// ReservedFor indicates which entities are currently allowed to use
    +	// the claim. A Pod which references a ResourceClaim which is not
    +	// reserved for that Pod will not be started. A claim that is in
    +	// use or might be in use because it has been reserved must not get
    +	// deallocated.
    +	//
    +	// In a cluster with multiple scheduler instances, two pods might get
    +	// scheduled concurrently by different schedulers. When they reference
    +	// the same ResourceClaim which already has reached its maximum number
    +	// of consumers, only one pod can be scheduled.
    +	//
    +	// Both schedulers try to add their pod to the claim.status.reservedFor
    +	// field, but only the update that reaches the API server first gets
    +	// stored. The other one fails with an error and the scheduler
    +	// which issued it knows that it must put the pod back into the queue,
    +	// waiting for the ResourceClaim to become usable again.
    +	//
    +	// There can be at most 32 such reservations. This may get increased in
    +	// the future, but not reduced.
    +	//
    +	// +optional
    +	// +listType=map
    +	// +listMapKey=uid
    +	// +patchStrategy=merge
    +	// +patchMergeKey=uid
    +	ReservedFor []ResourceClaimConsumerReference `json:"reservedFor,omitempty" protobuf:"bytes,2,opt,name=reservedFor" patchStrategy:"merge" patchMergeKey:"uid"`
    +
    +	// DeallocationRequested is tombstoned since Kubernetes 1.32 where
    +	// it got removed. May be reused once decoding v1alpha3 is no longer
    +	// supported.
    +	// DeallocationRequested bool `json:"deallocationRequested,omitempty" protobuf:"bytes,3,opt,name=deallocationRequested"`
    +
    +	// Devices contains the status of each device allocated for this
    +	// claim, as reported by the driver. This can include driver-specific
    +	// information. Entries are owned by their respective drivers.
    +	//
    +	// +optional
    +	// +listType=map
    +	// +listMapKey=driver
    +	// +listMapKey=device
    +	// +listMapKey=pool
    +	// +featureGate=DRAResourceClaimDeviceStatus
    +	Devices []AllocatedDeviceStatus `json:"devices,omitempty" protobuf:"bytes,4,opt,name=devices"`
    +}
    +
    +// ReservedForMaxSize is the maximum number of entries in
    +// claim.status.reservedFor.
    +const ResourceClaimReservedForMaxSize = 32
    +
    +// ResourceClaimConsumerReference contains enough information to let you
    +// locate the consumer of a ResourceClaim. The user must be a resource in the same
    +// namespace as the ResourceClaim.
    +type ResourceClaimConsumerReference struct {
    +	// APIGroup is the group for the resource being referenced. It is
    +	// empty for the core API. This matches the group in the APIVersion
    +	// that is used when creating the resources.
    +	// +optional
    +	APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,1,opt,name=apiGroup"`
    +	// Resource is the type of resource being referenced, for example "pods".
    +	// +required
    +	Resource string `json:"resource" protobuf:"bytes,3,name=resource"`
    +	// Name is the name of resource being referenced.
    +	// +required
    +	Name string `json:"name" protobuf:"bytes,4,name=name"`
    +	// UID identifies exactly one incarnation of the resource.
    +	// +required
    +	UID types.UID `json:"uid" protobuf:"bytes,5,name=uid"`
    +}
    +
    +// AllocationResult contains attributes of an allocated resource.
    +type AllocationResult struct {
    +	// Devices is the result of allocating devices.
    +	//
    +	// +optional
    +	Devices DeviceAllocationResult `json:"devices,omitempty" protobuf:"bytes,1,opt,name=devices"`
    +
    +	// NodeSelector defines where the allocated resources are available. If
    +	// unset, they are available everywhere.
    +	//
    +	// +optional
    +	NodeSelector *v1.NodeSelector `json:"nodeSelector,omitempty" protobuf:"bytes,3,opt,name=nodeSelector"`
    +
    +	// Controller is tombstoned since Kubernetes 1.32 where
    +	// it got removed. May be reused once decoding v1alpha3 is no longer
    +	// supported.
    +	// Controller string `json:"controller,omitempty" protobuf:"bytes,4,opt,name=controller"`
    +}
    +
    +// DeviceAllocationResult is the result of allocating devices.
    +type DeviceAllocationResult struct {
    +	// Results lists all allocated devices.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Results []DeviceRequestAllocationResult `json:"results,omitempty" protobuf:"bytes,1,opt,name=results"`
    +
    +	// This field is a combination of all the claim and class configuration parameters.
    +	// Drivers can distinguish between those based on a flag.
    +	//
    +	// This includes configuration parameters for drivers which have no allocated
    +	// devices in the result because it is up to the drivers which configuration
    +	// parameters they support. They can silently ignore unknown configuration
    +	// parameters.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Config []DeviceAllocationConfiguration `json:"config,omitempty" protobuf:"bytes,2,opt,name=config"`
    +}
    +
    +// AllocationResultsMaxSize represents the maximum number of
    +// entries in allocation.devices.results.
    +const AllocationResultsMaxSize = 32
    +
    +// DeviceRequestAllocationResult contains the allocation result for one request.
    +type DeviceRequestAllocationResult struct {
    +	// Request is the name of the request in the claim which caused this
    +	// device to be allocated. Multiple devices may have been allocated
    +	// per request.
    +	//
    +	// +required
    +	Request string `json:"request" protobuf:"bytes,1,name=request"`
    +
    +	// Driver specifies the name of the DRA driver whose kubelet
    +	// plugin should be invoked to process the allocation once the claim is
    +	// needed on a node.
    +	//
    +	// Must be a DNS subdomain and should end with a DNS domain owned by the
    +	// vendor of the driver.
    +	//
    +	// +required
    +	Driver string `json:"driver" protobuf:"bytes,2,name=driver"`
    +
    +	// This name together with the driver name and the device name field
    +	// identify which device was allocated (`//`).
    +	//
    +	// Must not be longer than 253 characters and may contain one or more
    +	// DNS sub-domains separated by slashes.
    +	//
    +	// +required
    +	Pool string `json:"pool" protobuf:"bytes,3,name=pool"`
    +
    +	// Device references one device instance via its name in the driver's
    +	// resource pool. It must be a DNS label.
    +	//
    +	// +required
    +	Device string `json:"device" protobuf:"bytes,4,name=device"`
    +
    +	// AdminAccess indicates that this device was allocated for
    +	// administrative access. See the corresponding request field
    +	// for a definition of mode.
    +	//
    +	// This is an alpha field and requires enabling the DRAAdminAccess
    +	// feature gate. Admin access is disabled if this field is unset or
    +	// set to false, otherwise it is enabled.
    +	//
    +	// +optional
    +	// +featureGate=DRAAdminAccess
    +	AdminAccess *bool `json:"adminAccess" protobuf:"bytes,5,name=adminAccess"`
    +}
    +
    +// DeviceAllocationConfiguration gets embedded in an AllocationResult.
    +type DeviceAllocationConfiguration struct {
    +	// Source records whether the configuration comes from a class and thus
    +	// is not something that a normal user would have been able to set
    +	// or from a claim.
    +	//
    +	// +required
    +	Source AllocationConfigSource `json:"source" protobuf:"bytes,1,name=source"`
    +
    +	// Requests lists the names of requests where the configuration applies.
    +	// If empty, its applies to all requests.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Requests []string `json:"requests,omitempty" protobuf:"bytes,2,opt,name=requests"`
    +
    +	DeviceConfiguration `json:",inline" protobuf:"bytes,3,name=deviceConfiguration"`
    +}
    +
    +type AllocationConfigSource string
    +
    +// Valid [DeviceAllocationConfiguration.Source] values.
    +const (
    +	AllocationConfigSourceClass = "FromClass"
    +	AllocationConfigSourceClaim = "FromClaim"
    +)
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// ResourceClaimList is a collection of claims.
    +type ResourceClaimList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Items is the list of resource claims.
    +	Items []ResourceClaim `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// DeviceClass is a vendor- or admin-provided resource that contains
    +// device configuration and selectors. It can be referenced in
    +// the device requests of a claim to apply these presets.
    +// Cluster scoped.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +type DeviceClass struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Spec defines what can be allocated and how to configure it.
    +	//
    +	// This is mutable. Consumers have to be prepared for classes changing
    +	// at any time, either because they get updated or replaced. Claim
    +	// allocations are done once based on whatever was set in classes at
    +	// the time of allocation.
    +	//
    +	// Changing the spec automatically increments the metadata.generation number.
    +	Spec DeviceClassSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    +}
    +
    +// DeviceClassSpec is used in a [DeviceClass] to define what can be allocated
    +// and how to configure it.
    +type DeviceClassSpec struct {
    +	// Each selector must be satisfied by a device which is claimed via this class.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Selectors []DeviceSelector `json:"selectors,omitempty" protobuf:"bytes,1,opt,name=selectors"`
    +
    +	// Config defines configuration parameters that apply to each device that is claimed via this class.
    +	// Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor
    +	// configuration applies to exactly one driver.
    +	//
    +	// They are passed to the driver, but are not considered while allocating the claim.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	Config []DeviceClassConfiguration `json:"config,omitempty" protobuf:"bytes,2,opt,name=config"`
    +
    +	// SuitableNodes is tombstoned since Kubernetes 1.32 where
    +	// it got removed. May be reused once decoding v1alpha3 is no longer
    +	// supported.
    +	// SuitableNodes *v1.NodeSelector `json:"suitableNodes,omitempty" protobuf:"bytes,3,opt,name=suitableNodes"`
    +}
    +
    +// DeviceClassConfiguration is used in DeviceClass.
    +type DeviceClassConfiguration struct {
    +	DeviceConfiguration `json:",inline" protobuf:"bytes,1,opt,name=deviceConfiguration"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// DeviceClassList is a collection of classes.
    +type DeviceClassList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Items is the list of resource classes.
    +	Items []DeviceClass `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// +genclient
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// ResourceClaimTemplate is used to produce ResourceClaim objects.
    +//
    +// This is an alpha type and requires enabling the DynamicResourceAllocation
    +// feature gate.
    +type ResourceClaimTemplate struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Describes the ResourceClaim that is to be generated.
    +	//
    +	// This field is immutable. A ResourceClaim will get created by the
    +	// control plane for a Pod when needed and then not get updated
    +	// anymore.
    +	Spec ResourceClaimTemplateSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    +}
    +
    +// ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.
    +type ResourceClaimTemplateSpec struct {
    +	// ObjectMeta may contain labels and annotations that will be copied into the ResourceClaim
    +	// when creating it. No other fields are allowed and will be rejected during
    +	// validation.
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Spec for the ResourceClaim. The entire content is copied unchanged
    +	// into the ResourceClaim that gets created from this template. The
    +	// same fields as in a ResourceClaim are also valid here.
    +	Spec ResourceClaimSpec `json:"spec" protobuf:"bytes,2,name=spec"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.32
    +
    +// ResourceClaimTemplateList is a collection of claim templates.
    +type ResourceClaimTemplateList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Items is the list of resource claim templates.
    +	Items []ResourceClaimTemplate `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// AllocatedDeviceStatus contains the status of an allocated device, if the
    +// driver chooses to report it. This may include driver-specific information.
    +type AllocatedDeviceStatus struct {
    +	// Driver specifies the name of the DRA driver whose kubelet
    +	// plugin should be invoked to process the allocation once the claim is
    +	// needed on a node.
    +	//
    +	// Must be a DNS subdomain and should end with a DNS domain owned by the
    +	// vendor of the driver.
    +	//
    +	// +required
    +	Driver string `json:"driver" protobuf:"bytes,1,rep,name=driver"`
    +
    +	// This name together with the driver name and the device name field
    +	// identify which device was allocated (`//`).
    +	//
    +	// Must not be longer than 253 characters and may contain one or more
    +	// DNS sub-domains separated by slashes.
    +	//
    +	// +required
    +	Pool string `json:"pool" protobuf:"bytes,2,rep,name=pool"`
    +
    +	// Device references one device instance via its name in the driver's
    +	// resource pool. It must be a DNS label.
    +	//
    +	// +required
    +	Device string `json:"device" protobuf:"bytes,3,rep,name=device"`
    +
    +	// Conditions contains the latest observation of the device's state.
    +	// If the device has been configured according to the class and claim
    +	// config references, the `Ready` condition should be True.
    +	//
    +	// +optional
    +	// +listType=map
    +	// +listMapKey=type
    +	Conditions []metav1.Condition `json:"conditions" protobuf:"bytes,4,opt,name=conditions"`
    +
    +	// Data contains arbitrary driver-specific data.
    +	//
    +	// The length of the raw data must be smaller or equal to 10 Ki.
    +	//
    +	// +optional
    +	Data runtime.RawExtension `json:"data,omitempty" protobuf:"bytes,5,opt,name=data"`
    +
    +	// NetworkData contains network-related information specific to the device.
    +	//
    +	// +optional
    +	NetworkData *NetworkDeviceData `json:"networkData,omitempty" protobuf:"bytes,6,opt,name=networkData"`
    +}
    +
    +// NetworkDeviceData provides network-related details for the allocated device.
    +// This information may be filled by drivers or other components to configure
    +// or identify the device within a network context.
    +type NetworkDeviceData struct {
    +	// InterfaceName specifies the name of the network interface associated with
    +	// the allocated device. This might be the name of a physical or virtual
    +	// network interface being configured in the pod.
    +	//
    +	// Must not be longer than 256 characters.
    +	//
    +	// +optional
    +	InterfaceName string `json:"interfaceName,omitempty" protobuf:"bytes,1,opt,name=interfaceName"`
    +
    +	// IPs lists the network addresses assigned to the device's network interface.
    +	// This can include both IPv4 and IPv6 addresses.
    +	// The IPs are in the CIDR notation, which includes both the address and the
    +	// associated subnet mask.
    +	// e.g.: "192.0.2.5/24" for IPv4 and "2001:db8::5/64" for IPv6.
    +	//
    +	// +optional
    +	// +listType=atomic
    +	IPs []string `json:"ips,omitempty" protobuf:"bytes,2,opt,name=ips"`
    +
    +	// HardwareAddress represents the hardware address (e.g. MAC Address) of the device's network interface.
    +	//
    +	// Must not be longer than 128 characters.
    +	//
    +	// +optional
    +	HardwareAddress string `json:"hardwareAddress,omitempty" protobuf:"bytes,3,opt,name=hardwareAddress"`
    +}
    diff --git a/vendor/k8s.io/api/resource/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/resource/v1beta1/types_swagger_doc_generated.go
    new file mode 100644
    index 000000000000..1d0176cbcae7
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1beta1/types_swagger_doc_generated.go
    @@ -0,0 +1,386 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1beta1
    +
    +// This file contains a collection of methods that can be used from go-restful to
    +// generate Swagger API documentation for its models. Please read this PR for more
    +// information on the implementation: https://github.com/emicklei/go-restful/pull/215
    +//
    +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if
    +// they are on one line! For multiple line or blocks that you want to ignore use ---.
    +// Any context after a --- is ignored.
    +//
    +// Those methods can be generated by using hack/update-codegen.sh
    +
    +// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    +var map_AllocatedDeviceStatus = map[string]string{
    +	"":            "AllocatedDeviceStatus contains the status of an allocated device, if the driver chooses to report it. This may include driver-specific information.",
    +	"driver":      "Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.",
    +	"pool":        "This name together with the driver name and the device name field identify which device was allocated (`//`).\n\nMust not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.",
    +	"device":      "Device references one device instance via its name in the driver's resource pool. It must be a DNS label.",
    +	"conditions":  "Conditions contains the latest observation of the device's state. If the device has been configured according to the class and claim config references, the `Ready` condition should be True.",
    +	"data":        "Data contains arbitrary driver-specific data.\n\nThe length of the raw data must be smaller or equal to 10 Ki.",
    +	"networkData": "NetworkData contains network-related information specific to the device.",
    +}
    +
    +func (AllocatedDeviceStatus) SwaggerDoc() map[string]string {
    +	return map_AllocatedDeviceStatus
    +}
    +
    +var map_AllocationResult = map[string]string{
    +	"":             "AllocationResult contains attributes of an allocated resource.",
    +	"devices":      "Devices is the result of allocating devices.",
    +	"nodeSelector": "NodeSelector defines where the allocated resources are available. If unset, they are available everywhere.",
    +}
    +
    +func (AllocationResult) SwaggerDoc() map[string]string {
    +	return map_AllocationResult
    +}
    +
    +var map_BasicDevice = map[string]string{
    +	"":           "BasicDevice defines one device instance.",
    +	"attributes": "Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set.\n\nThe maximum number of attributes and capacities combined is 32.",
    +	"capacity":   "Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.\n\nThe maximum number of attributes and capacities combined is 32.",
    +}
    +
    +func (BasicDevice) SwaggerDoc() map[string]string {
    +	return map_BasicDevice
    +}
    +
    +var map_CELDeviceSelector = map[string]string{
    +	"":           "CELDeviceSelector contains a CEL expression for selecting a device.",
    +	"expression": "Expression is a CEL expression which evaluates a single device. It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort.\n\nThe expression's input is an object named \"device\", which carries the following properties:\n - driver (string): the name of the driver which defines this device.\n - attributes (map[string]object): the device's attributes, grouped by prefix\n   (e.g. device.attributes[\"dra.example.com\"] evaluates to an object with all\n   of the attributes which were prefixed by \"dra.example.com\".\n - capacity (map[string]object): the device's capacities, grouped by prefix.\n\nExample: Consider a device with driver=\"dra.example.com\", which exposes two attributes named \"model\" and \"ext.example.com/family\" and which exposes one capacity named \"modules\". This input to this expression would have the following fields:\n\n    device.driver\n    device.attributes[\"dra.example.com\"].model\n    device.attributes[\"ext.example.com\"].family\n    device.capacity[\"dra.example.com\"].modules\n\nThe device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers.\n\nThe value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity.\n\nIf an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort.\n\nA robust expression should check for the existence of attributes before referencing them.\n\nFor ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example:\n\n    cel.bind(dra, device.attributes[\"dra.example.com\"], dra.someBool && dra.anotherBool)\n\nThe length of the expression must be smaller or equal to 10 Ki. The cost of evaluating it is also limited based on the estimated number of logical steps.",
    +}
    +
    +func (CELDeviceSelector) SwaggerDoc() map[string]string {
    +	return map_CELDeviceSelector
    +}
    +
    +var map_Device = map[string]string{
    +	"":      "Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.",
    +	"name":  "Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.",
    +	"basic": "Basic defines one device instance.",
    +}
    +
    +func (Device) SwaggerDoc() map[string]string {
    +	return map_Device
    +}
    +
    +var map_DeviceAllocationConfiguration = map[string]string{
    +	"":         "DeviceAllocationConfiguration gets embedded in an AllocationResult.",
    +	"source":   "Source records whether the configuration comes from a class and thus is not something that a normal user would have been able to set or from a claim.",
    +	"requests": "Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.",
    +}
    +
    +func (DeviceAllocationConfiguration) SwaggerDoc() map[string]string {
    +	return map_DeviceAllocationConfiguration
    +}
    +
    +var map_DeviceAllocationResult = map[string]string{
    +	"":        "DeviceAllocationResult is the result of allocating devices.",
    +	"results": "Results lists all allocated devices.",
    +	"config":  "This field is a combination of all the claim and class configuration parameters. Drivers can distinguish between those based on a flag.\n\nThis includes configuration parameters for drivers which have no allocated devices in the result because it is up to the drivers which configuration parameters they support. They can silently ignore unknown configuration parameters.",
    +}
    +
    +func (DeviceAllocationResult) SwaggerDoc() map[string]string {
    +	return map_DeviceAllocationResult
    +}
    +
    +var map_DeviceAttribute = map[string]string{
    +	"":        "DeviceAttribute must have exactly one field set.",
    +	"int":     "IntValue is a number.",
    +	"bool":    "BoolValue is a true/false value.",
    +	"string":  "StringValue is a string. Must not be longer than 64 characters.",
    +	"version": "VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters.",
    +}
    +
    +func (DeviceAttribute) SwaggerDoc() map[string]string {
    +	return map_DeviceAttribute
    +}
    +
    +var map_DeviceCapacity = map[string]string{
    +	"":      "DeviceCapacity describes a quantity associated with a device.",
    +	"value": "Value defines how much of a certain device capacity is available.",
    +}
    +
    +func (DeviceCapacity) SwaggerDoc() map[string]string {
    +	return map_DeviceCapacity
    +}
    +
    +var map_DeviceClaim = map[string]string{
    +	"":            "DeviceClaim defines how to request devices with a ResourceClaim.",
    +	"requests":    "Requests represent individual requests for distinct devices which must all be satisfied. If empty, nothing needs to be allocated.",
    +	"constraints": "These constraints must be satisfied by the set of devices that get allocated for the claim.",
    +	"config":      "This field holds configuration for multiple potential drivers which could satisfy requests in this claim. It is ignored while allocating the claim.",
    +}
    +
    +func (DeviceClaim) SwaggerDoc() map[string]string {
    +	return map_DeviceClaim
    +}
    +
    +var map_DeviceClaimConfiguration = map[string]string{
    +	"":         "DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.",
    +	"requests": "Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.",
    +}
    +
    +func (DeviceClaimConfiguration) SwaggerDoc() map[string]string {
    +	return map_DeviceClaimConfiguration
    +}
    +
    +var map_DeviceClass = map[string]string{
    +	"":         "DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. It can be referenced in the device requests of a claim to apply these presets. Cluster scoped.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    +	"metadata": "Standard object metadata",
    +	"spec":     "Spec defines what can be allocated and how to configure it.\n\nThis is mutable. Consumers have to be prepared for classes changing at any time, either because they get updated or replaced. Claim allocations are done once based on whatever was set in classes at the time of allocation.\n\nChanging the spec automatically increments the metadata.generation number.",
    +}
    +
    +func (DeviceClass) SwaggerDoc() map[string]string {
    +	return map_DeviceClass
    +}
    +
    +var map_DeviceClassConfiguration = map[string]string{
    +	"": "DeviceClassConfiguration is used in DeviceClass.",
    +}
    +
    +func (DeviceClassConfiguration) SwaggerDoc() map[string]string {
    +	return map_DeviceClassConfiguration
    +}
    +
    +var map_DeviceClassList = map[string]string{
    +	"":         "DeviceClassList is a collection of classes.",
    +	"metadata": "Standard list metadata",
    +	"items":    "Items is the list of resource classes.",
    +}
    +
    +func (DeviceClassList) SwaggerDoc() map[string]string {
    +	return map_DeviceClassList
    +}
    +
    +var map_DeviceClassSpec = map[string]string{
    +	"":          "DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it.",
    +	"selectors": "Each selector must be satisfied by a device which is claimed via this class.",
    +	"config":    "Config defines configuration parameters that apply to each device that is claimed via this class. Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver.\n\nThey are passed to the driver, but are not considered while allocating the claim.",
    +}
    +
    +func (DeviceClassSpec) SwaggerDoc() map[string]string {
    +	return map_DeviceClassSpec
    +}
    +
    +var map_DeviceConfiguration = map[string]string{
    +	"":       "DeviceConfiguration must have exactly one field set. It gets embedded inline in some other structs which have other fields, so field names must not conflict with those.",
    +	"opaque": "Opaque provides driver-specific configuration parameters.",
    +}
    +
    +func (DeviceConfiguration) SwaggerDoc() map[string]string {
    +	return map_DeviceConfiguration
    +}
    +
    +var map_DeviceConstraint = map[string]string{
    +	"":               "DeviceConstraint must have exactly one field set besides Requests.",
    +	"requests":       "Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.",
    +	"matchAttribute": "MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.\n\nFor example, if you specified \"dra.example.com/numa\" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.\n\nMust include the domain qualifier.",
    +}
    +
    +func (DeviceConstraint) SwaggerDoc() map[string]string {
    +	return map_DeviceConstraint
    +}
    +
    +var map_DeviceRequest = map[string]string{
    +	"":                "DeviceRequest is a request for devices required for a claim. This is typically a request for a single resource like a device, but can also ask for several identical devices.\n\nA DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request.",
    +	"name":            "Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim.\n\nMust be a DNS label.",
    +	"deviceClassName": "DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.\n\nA class is required. Which classes are available depends on the cluster.\n\nAdministrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference.",
    +	"selectors":       "Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. All selectors must be satisfied for a device to be considered.",
    +	"allocationMode":  "AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:\n\n- ExactCount: This request is for a specific number of devices.\n  This is the default. The exact number is provided in the\n  count field.\n\n- All: This request is for all of the matching devices in a pool.\n  Allocation will fail if some devices are already allocated,\n  unless adminAccess is requested.\n\nIf AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field.\n\nMore modes may get added in the future. Clients must refuse to handle requests with unknown modes.",
    +	"count":           "Count is used only when the count mode is \"ExactCount\". Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one.",
    +	"adminAccess":     "AdminAccess indicates that this is a claim for administrative access to the device(s). Claims with AdminAccess are expected to be used for monitoring or other management services for a device.  They ignore all ordinary claims to the device with respect to access modes and any resource allocations.\n\nThis is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.",
    +}
    +
    +func (DeviceRequest) SwaggerDoc() map[string]string {
    +	return map_DeviceRequest
    +}
    +
    +var map_DeviceRequestAllocationResult = map[string]string{
    +	"":            "DeviceRequestAllocationResult contains the allocation result for one request.",
    +	"request":     "Request is the name of the request in the claim which caused this device to be allocated. Multiple devices may have been allocated per request.",
    +	"driver":      "Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.",
    +	"pool":        "This name together with the driver name and the device name field identify which device was allocated (`//`).\n\nMust not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.",
    +	"device":      "Device references one device instance via its name in the driver's resource pool. It must be a DNS label.",
    +	"adminAccess": "AdminAccess indicates that this device was allocated for administrative access. See the corresponding request field for a definition of mode.\n\nThis is an alpha field and requires enabling the DRAAdminAccess feature gate. Admin access is disabled if this field is unset or set to false, otherwise it is enabled.",
    +}
    +
    +func (DeviceRequestAllocationResult) SwaggerDoc() map[string]string {
    +	return map_DeviceRequestAllocationResult
    +}
    +
    +var map_DeviceSelector = map[string]string{
    +	"":    "DeviceSelector must have exactly one field set.",
    +	"cel": "CEL contains a CEL expression for selecting a device.",
    +}
    +
    +func (DeviceSelector) SwaggerDoc() map[string]string {
    +	return map_DeviceSelector
    +}
    +
    +var map_NetworkDeviceData = map[string]string{
    +	"":                "NetworkDeviceData provides network-related details for the allocated device. This information may be filled by drivers or other components to configure or identify the device within a network context.",
    +	"interfaceName":   "InterfaceName specifies the name of the network interface associated with the allocated device. This might be the name of a physical or virtual network interface being configured in the pod.\n\nMust not be longer than 256 characters.",
    +	"ips":             "IPs lists the network addresses assigned to the device's network interface. This can include both IPv4 and IPv6 addresses. The IPs are in the CIDR notation, which includes both the address and the associated subnet mask. e.g.: \"192.0.2.5/24\" for IPv4 and \"2001:db8::5/64\" for IPv6.",
    +	"hardwareAddress": "HardwareAddress represents the hardware address (e.g. MAC Address) of the device's network interface.\n\nMust not be longer than 128 characters.",
    +}
    +
    +func (NetworkDeviceData) SwaggerDoc() map[string]string {
    +	return map_NetworkDeviceData
    +}
    +
    +var map_OpaqueDeviceConfiguration = map[string]string{
    +	"":           "OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.",
    +	"driver":     "Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.\n\nAn admission policy provided by the driver developer could use this to decide whether it needs to validate them.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.",
    +	"parameters": "Parameters can contain arbitrary data. It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version (\"kind\" + \"apiVersion\" for Kubernetes types), with conversion between different versions.\n\nThe length of the raw data must be smaller or equal to 10 Ki.",
    +}
    +
    +func (OpaqueDeviceConfiguration) SwaggerDoc() map[string]string {
    +	return map_OpaqueDeviceConfiguration
    +}
    +
    +var map_ResourceClaim = map[string]string{
    +	"":         "ResourceClaim describes a request for access to resources in the cluster, for use by workloads. For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    +	"metadata": "Standard object metadata",
    +	"spec":     "Spec describes what is being requested and how to configure it. The spec is immutable.",
    +	"status":   "Status describes whether the claim is ready to use and what has been allocated.",
    +}
    +
    +func (ResourceClaim) SwaggerDoc() map[string]string {
    +	return map_ResourceClaim
    +}
    +
    +var map_ResourceClaimConsumerReference = map[string]string{
    +	"":         "ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.",
    +	"apiGroup": "APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.",
    +	"resource": "Resource is the type of resource being referenced, for example \"pods\".",
    +	"name":     "Name is the name of resource being referenced.",
    +	"uid":      "UID identifies exactly one incarnation of the resource.",
    +}
    +
    +func (ResourceClaimConsumerReference) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimConsumerReference
    +}
    +
    +var map_ResourceClaimList = map[string]string{
    +	"":         "ResourceClaimList is a collection of claims.",
    +	"metadata": "Standard list metadata",
    +	"items":    "Items is the list of resource claims.",
    +}
    +
    +func (ResourceClaimList) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimList
    +}
    +
    +var map_ResourceClaimSpec = map[string]string{
    +	"":        "ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.",
    +	"devices": "Devices defines how to request devices.",
    +}
    +
    +func (ResourceClaimSpec) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimSpec
    +}
    +
    +var map_ResourceClaimStatus = map[string]string{
    +	"":            "ResourceClaimStatus tracks whether the resource has been allocated and what the result of that was.",
    +	"allocation":  "Allocation is set once the claim has been allocated successfully.",
    +	"reservedFor": "ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started. A claim that is in use or might be in use because it has been reserved must not get deallocated.\n\nIn a cluster with multiple scheduler instances, two pods might get scheduled concurrently by different schedulers. When they reference the same ResourceClaim which already has reached its maximum number of consumers, only one pod can be scheduled.\n\nBoth schedulers try to add their pod to the claim.status.reservedFor field, but only the update that reaches the API server first gets stored. The other one fails with an error and the scheduler which issued it knows that it must put the pod back into the queue, waiting for the ResourceClaim to become usable again.\n\nThere can be at most 32 such reservations. This may get increased in the future, but not reduced.",
    +	"devices":     "Devices contains the status of each device allocated for this claim, as reported by the driver. This can include driver-specific information. Entries are owned by their respective drivers.",
    +}
    +
    +func (ResourceClaimStatus) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimStatus
    +}
    +
    +var map_ResourceClaimTemplate = map[string]string{
    +	"":         "ResourceClaimTemplate is used to produce ResourceClaim objects.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    +	"metadata": "Standard object metadata",
    +	"spec":     "Describes the ResourceClaim that is to be generated.\n\nThis field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore.",
    +}
    +
    +func (ResourceClaimTemplate) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimTemplate
    +}
    +
    +var map_ResourceClaimTemplateList = map[string]string{
    +	"":         "ResourceClaimTemplateList is a collection of claim templates.",
    +	"metadata": "Standard list metadata",
    +	"items":    "Items is the list of resource claim templates.",
    +}
    +
    +func (ResourceClaimTemplateList) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimTemplateList
    +}
    +
    +var map_ResourceClaimTemplateSpec = map[string]string{
    +	"":         "ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.",
    +	"metadata": "ObjectMeta may contain labels and annotations that will be copied into the ResourceClaim when creating it. No other fields are allowed and will be rejected during validation.",
    +	"spec":     "Spec for the ResourceClaim. The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here.",
    +}
    +
    +func (ResourceClaimTemplateSpec) SwaggerDoc() map[string]string {
    +	return map_ResourceClaimTemplateSpec
    +}
    +
    +var map_ResourcePool = map[string]string{
    +	"":                   "ResourcePool describes the pool that ResourceSlices belong to.",
    +	"name":               "Name is used to identify the pool. For node-local devices, this is often the node name, but this is not required.\n\nIt must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable.",
    +	"generation":         "Generation tracks the change in a pool over time. Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted.\n\nCombined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state.",
    +	"resourceSliceCount": "ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero.\n\nConsumers can use this to check whether they have seen all ResourceSlices belonging to the same pool.",
    +}
    +
    +func (ResourcePool) SwaggerDoc() map[string]string {
    +	return map_ResourcePool
    +}
    +
    +var map_ResourceSlice = map[string]string{
    +	"":         "ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver.\n\nAt the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple , , .\n\nWhenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others.\n\nWhen allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool.\n\nFor resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available.\n\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.",
    +	"metadata": "Standard object metadata",
    +	"spec":     "Contains the information published by the driver.\n\nChanging the spec automatically increments the metadata.generation number.",
    +}
    +
    +func (ResourceSlice) SwaggerDoc() map[string]string {
    +	return map_ResourceSlice
    +}
    +
    +var map_ResourceSliceList = map[string]string{
    +	"":         "ResourceSliceList is a collection of ResourceSlices.",
    +	"metadata": "Standard list metadata",
    +	"items":    "Items is the list of resource ResourceSlices.",
    +}
    +
    +func (ResourceSliceList) SwaggerDoc() map[string]string {
    +	return map_ResourceSliceList
    +}
    +
    +var map_ResourceSliceSpec = map[string]string{
    +	"":             "ResourceSliceSpec contains the information published by the driver in one ResourceSlice.",
    +	"driver":       "Driver identifies the DRA driver providing the capacity information. A field selector can be used to list only ResourceSlice objects with a certain driver name.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable.",
    +	"pool":         "Pool describes the pool that this ResourceSlice belongs to.",
    +	"nodeName":     "NodeName identifies the node which provides the resources in this pool. A field selector can be used to list only ResourceSlice objects belonging to a certain node.\n\nThis field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available.\n\nExactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable.",
    +	"nodeSelector": "NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node.\n\nMust use exactly one term.\n\nExactly one of NodeName, NodeSelector and AllNodes must be set.",
    +	"allNodes":     "AllNodes indicates that all nodes have access to the resources in the pool.\n\nExactly one of NodeName, NodeSelector and AllNodes must be set.",
    +	"devices":      "Devices lists some or all of the devices in this pool.\n\nMust not have more than 128 entries.",
    +}
    +
    +func (ResourceSliceSpec) SwaggerDoc() map[string]string {
    +	return map_ResourceSliceSpec
    +}
    +
    +// AUTO-GENERATED FUNCTIONS END HERE
    diff --git a/vendor/k8s.io/api/resource/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/resource/v1beta1/zz_generated.deepcopy.go
    new file mode 100644
    index 000000000000..3be61333fffc
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1beta1/zz_generated.deepcopy.go
    @@ -0,0 +1,882 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by deepcopy-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +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 *AllocatedDeviceStatus) DeepCopyInto(out *AllocatedDeviceStatus) {
    +	*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])
    +		}
    +	}
    +	in.Data.DeepCopyInto(&out.Data)
    +	if in.NetworkData != nil {
    +		in, out := &in.NetworkData, &out.NetworkData
    +		*out = new(NetworkDeviceData)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocatedDeviceStatus.
    +func (in *AllocatedDeviceStatus) DeepCopy() *AllocatedDeviceStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(AllocatedDeviceStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *AllocationResult) DeepCopyInto(out *AllocationResult) {
    +	*out = *in
    +	in.Devices.DeepCopyInto(&out.Devices)
    +	if in.NodeSelector != nil {
    +		in, out := &in.NodeSelector, &out.NodeSelector
    +		*out = new(corev1.NodeSelector)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocationResult.
    +func (in *AllocationResult) DeepCopy() *AllocationResult {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(AllocationResult)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *BasicDevice) DeepCopyInto(out *BasicDevice) {
    +	*out = *in
    +	if in.Attributes != nil {
    +		in, out := &in.Attributes, &out.Attributes
    +		*out = make(map[QualifiedName]DeviceAttribute, len(*in))
    +		for key, val := range *in {
    +			(*out)[key] = *val.DeepCopy()
    +		}
    +	}
    +	if in.Capacity != nil {
    +		in, out := &in.Capacity, &out.Capacity
    +		*out = make(map[QualifiedName]DeviceCapacity, len(*in))
    +		for key, val := range *in {
    +			(*out)[key] = *val.DeepCopy()
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BasicDevice.
    +func (in *BasicDevice) DeepCopy() *BasicDevice {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(BasicDevice)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *CELDeviceSelector) DeepCopyInto(out *CELDeviceSelector) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CELDeviceSelector.
    +func (in *CELDeviceSelector) DeepCopy() *CELDeviceSelector {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(CELDeviceSelector)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *Device) DeepCopyInto(out *Device) {
    +	*out = *in
    +	if in.Basic != nil {
    +		in, out := &in.Basic, &out.Basic
    +		*out = new(BasicDevice)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Device.
    +func (in *Device) DeepCopy() *Device {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(Device)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceAllocationConfiguration) DeepCopyInto(out *DeviceAllocationConfiguration) {
    +	*out = *in
    +	if in.Requests != nil {
    +		in, out := &in.Requests, &out.Requests
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	in.DeviceConfiguration.DeepCopyInto(&out.DeviceConfiguration)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceAllocationConfiguration.
    +func (in *DeviceAllocationConfiguration) DeepCopy() *DeviceAllocationConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceAllocationConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceAllocationResult) DeepCopyInto(out *DeviceAllocationResult) {
    +	*out = *in
    +	if in.Results != nil {
    +		in, out := &in.Results, &out.Results
    +		*out = make([]DeviceRequestAllocationResult, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.Config != nil {
    +		in, out := &in.Config, &out.Config
    +		*out = make([]DeviceAllocationConfiguration, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceAllocationResult.
    +func (in *DeviceAllocationResult) DeepCopy() *DeviceAllocationResult {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceAllocationResult)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceAttribute) DeepCopyInto(out *DeviceAttribute) {
    +	*out = *in
    +	if in.IntValue != nil {
    +		in, out := &in.IntValue, &out.IntValue
    +		*out = new(int64)
    +		**out = **in
    +	}
    +	if in.BoolValue != nil {
    +		in, out := &in.BoolValue, &out.BoolValue
    +		*out = new(bool)
    +		**out = **in
    +	}
    +	if in.StringValue != nil {
    +		in, out := &in.StringValue, &out.StringValue
    +		*out = new(string)
    +		**out = **in
    +	}
    +	if in.VersionValue != nil {
    +		in, out := &in.VersionValue, &out.VersionValue
    +		*out = new(string)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceAttribute.
    +func (in *DeviceAttribute) DeepCopy() *DeviceAttribute {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceAttribute)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceCapacity) DeepCopyInto(out *DeviceCapacity) {
    +	*out = *in
    +	out.Value = in.Value.DeepCopy()
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceCapacity.
    +func (in *DeviceCapacity) DeepCopy() *DeviceCapacity {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceCapacity)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceClaim) DeepCopyInto(out *DeviceClaim) {
    +	*out = *in
    +	if in.Requests != nil {
    +		in, out := &in.Requests, &out.Requests
    +		*out = make([]DeviceRequest, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.Constraints != nil {
    +		in, out := &in.Constraints, &out.Constraints
    +		*out = make([]DeviceConstraint, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.Config != nil {
    +		in, out := &in.Config, &out.Config
    +		*out = make([]DeviceClaimConfiguration, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClaim.
    +func (in *DeviceClaim) DeepCopy() *DeviceClaim {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClaim)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceClaimConfiguration) DeepCopyInto(out *DeviceClaimConfiguration) {
    +	*out = *in
    +	if in.Requests != nil {
    +		in, out := &in.Requests, &out.Requests
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	in.DeviceConfiguration.DeepCopyInto(&out.DeviceConfiguration)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClaimConfiguration.
    +func (in *DeviceClaimConfiguration) DeepCopy() *DeviceClaimConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClaimConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceClass) DeepCopyInto(out *DeviceClass) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClass.
    +func (in *DeviceClass) DeepCopy() *DeviceClass {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClass)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *DeviceClass) 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 *DeviceClassConfiguration) DeepCopyInto(out *DeviceClassConfiguration) {
    +	*out = *in
    +	in.DeviceConfiguration.DeepCopyInto(&out.DeviceConfiguration)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClassConfiguration.
    +func (in *DeviceClassConfiguration) DeepCopy() *DeviceClassConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClassConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceClassList) DeepCopyInto(out *DeviceClassList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]DeviceClass, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClassList.
    +func (in *DeviceClassList) DeepCopy() *DeviceClassList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClassList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *DeviceClassList) 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 *DeviceClassSpec) DeepCopyInto(out *DeviceClassSpec) {
    +	*out = *in
    +	if in.Selectors != nil {
    +		in, out := &in.Selectors, &out.Selectors
    +		*out = make([]DeviceSelector, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.Config != nil {
    +		in, out := &in.Config, &out.Config
    +		*out = make([]DeviceClassConfiguration, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceClassSpec.
    +func (in *DeviceClassSpec) DeepCopy() *DeviceClassSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceClassSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceConfiguration) DeepCopyInto(out *DeviceConfiguration) {
    +	*out = *in
    +	if in.Opaque != nil {
    +		in, out := &in.Opaque, &out.Opaque
    +		*out = new(OpaqueDeviceConfiguration)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceConfiguration.
    +func (in *DeviceConfiguration) DeepCopy() *DeviceConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceConstraint) DeepCopyInto(out *DeviceConstraint) {
    +	*out = *in
    +	if in.Requests != nil {
    +		in, out := &in.Requests, &out.Requests
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.MatchAttribute != nil {
    +		in, out := &in.MatchAttribute, &out.MatchAttribute
    +		*out = new(FullyQualifiedName)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceConstraint.
    +func (in *DeviceConstraint) DeepCopy() *DeviceConstraint {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceConstraint)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceRequest) DeepCopyInto(out *DeviceRequest) {
    +	*out = *in
    +	if in.Selectors != nil {
    +		in, out := &in.Selectors, &out.Selectors
    +		*out = make([]DeviceSelector, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.AdminAccess != nil {
    +		in, out := &in.AdminAccess, &out.AdminAccess
    +		*out = new(bool)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceRequest.
    +func (in *DeviceRequest) DeepCopy() *DeviceRequest {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceRequest)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceRequestAllocationResult) DeepCopyInto(out *DeviceRequestAllocationResult) {
    +	*out = *in
    +	if in.AdminAccess != nil {
    +		in, out := &in.AdminAccess, &out.AdminAccess
    +		*out = new(bool)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceRequestAllocationResult.
    +func (in *DeviceRequestAllocationResult) DeepCopy() *DeviceRequestAllocationResult {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceRequestAllocationResult)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *DeviceSelector) DeepCopyInto(out *DeviceSelector) {
    +	*out = *in
    +	if in.CEL != nil {
    +		in, out := &in.CEL, &out.CEL
    +		*out = new(CELDeviceSelector)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeviceSelector.
    +func (in *DeviceSelector) DeepCopy() *DeviceSelector {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(DeviceSelector)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *NetworkDeviceData) DeepCopyInto(out *NetworkDeviceData) {
    +	*out = *in
    +	if in.IPs != nil {
    +		in, out := &in.IPs, &out.IPs
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDeviceData.
    +func (in *NetworkDeviceData) DeepCopy() *NetworkDeviceData {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(NetworkDeviceData)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *OpaqueDeviceConfiguration) DeepCopyInto(out *OpaqueDeviceConfiguration) {
    +	*out = *in
    +	in.Parameters.DeepCopyInto(&out.Parameters)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpaqueDeviceConfiguration.
    +func (in *OpaqueDeviceConfiguration) DeepCopy() *OpaqueDeviceConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(OpaqueDeviceConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceClaim) DeepCopyInto(out *ResourceClaim) {
    +	*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 ResourceClaim.
    +func (in *ResourceClaim) DeepCopy() *ResourceClaim {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaim)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceClaim) 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 *ResourceClaimConsumerReference) DeepCopyInto(out *ResourceClaimConsumerReference) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimConsumerReference.
    +func (in *ResourceClaimConsumerReference) DeepCopy() *ResourceClaimConsumerReference {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimConsumerReference)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceClaimList) DeepCopyInto(out *ResourceClaimList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]ResourceClaim, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimList.
    +func (in *ResourceClaimList) DeepCopy() *ResourceClaimList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceClaimList) 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 *ResourceClaimSpec) DeepCopyInto(out *ResourceClaimSpec) {
    +	*out = *in
    +	in.Devices.DeepCopyInto(&out.Devices)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimSpec.
    +func (in *ResourceClaimSpec) DeepCopy() *ResourceClaimSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceClaimStatus) DeepCopyInto(out *ResourceClaimStatus) {
    +	*out = *in
    +	if in.Allocation != nil {
    +		in, out := &in.Allocation, &out.Allocation
    +		*out = new(AllocationResult)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.ReservedFor != nil {
    +		in, out := &in.ReservedFor, &out.ReservedFor
    +		*out = make([]ResourceClaimConsumerReference, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.Devices != nil {
    +		in, out := &in.Devices, &out.Devices
    +		*out = make([]AllocatedDeviceStatus, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimStatus.
    +func (in *ResourceClaimStatus) DeepCopy() *ResourceClaimStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceClaimTemplate) DeepCopyInto(out *ResourceClaimTemplate) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimTemplate.
    +func (in *ResourceClaimTemplate) DeepCopy() *ResourceClaimTemplate {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimTemplate)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceClaimTemplate) 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 *ResourceClaimTemplateList) DeepCopyInto(out *ResourceClaimTemplateList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]ResourceClaimTemplate, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceClaimTemplateList.
    +func (in *ResourceClaimTemplateList) DeepCopy() *ResourceClaimTemplateList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimTemplateList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceClaimTemplateList) 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 *ResourceClaimTemplateSpec) DeepCopyInto(out *ResourceClaimTemplateSpec) {
    +	*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 ResourceClaimTemplateSpec.
    +func (in *ResourceClaimTemplateSpec) DeepCopy() *ResourceClaimTemplateSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceClaimTemplateSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourcePool) DeepCopyInto(out *ResourcePool) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourcePool.
    +func (in *ResourcePool) DeepCopy() *ResourcePool {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourcePool)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ResourceSlice) DeepCopyInto(out *ResourceSlice) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSlice.
    +func (in *ResourceSlice) DeepCopy() *ResourceSlice {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceSlice)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceSlice) 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 *ResourceSliceList) DeepCopyInto(out *ResourceSliceList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]ResourceSlice, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSliceList.
    +func (in *ResourceSliceList) DeepCopy() *ResourceSliceList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceSliceList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *ResourceSliceList) 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 *ResourceSliceSpec) DeepCopyInto(out *ResourceSliceSpec) {
    +	*out = *in
    +	out.Pool = in.Pool
    +	if in.NodeSelector != nil {
    +		in, out := &in.NodeSelector, &out.NodeSelector
    +		*out = new(corev1.NodeSelector)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.Devices != nil {
    +		in, out := &in.Devices, &out.Devices
    +		*out = make([]Device, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSliceSpec.
    +func (in *ResourceSliceSpec) DeepCopy() *ResourceSliceSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ResourceSliceSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    diff --git a/vendor/k8s.io/api/resource/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/resource/v1beta1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..b79111b81e22
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1beta1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,166 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *DeviceClass) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *DeviceClass) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *DeviceClass) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *DeviceClassList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *DeviceClassList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *DeviceClassList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceClaim) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceClaim) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceClaim) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceClaimList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceClaimList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceClaimList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceClaimTemplate) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceClaimTemplate) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceClaimTemplate) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceClaimTemplateList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceClaimTemplateList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceClaimTemplateList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceSlice) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceSlice) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceSlice) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ResourceSliceList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 32
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *ResourceSliceList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 35
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *ResourceSliceList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 38
    +}
    diff --git a/vendor/k8s.io/api/scheduling/v1/doc.go b/vendor/k8s.io/api/scheduling/v1/doc.go
    index 76c4da002efc..ee3c66847185 100644
    --- a/vendor/k8s.io/api/scheduling/v1/doc.go
    +++ b/vendor/k8s.io/api/scheduling/v1/doc.go
    @@ -17,7 +17,7 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
    -
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=scheduling.k8s.io
     
     package v1 // import "k8s.io/api/scheduling/v1"
    diff --git a/vendor/k8s.io/api/scheduling/v1/generated.pb.go b/vendor/k8s.io/api/scheduling/v1/generated.pb.go
    index 373c901e6b69..6fef1a9379ab 100644
    --- a/vendor/k8s.io/api/scheduling/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/scheduling/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1/generated.proto
    +// source: k8s.io/api/scheduling/v1/generated.proto
     
     package v1
     
    @@ -48,7 +48,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *PriorityClass) Reset()      { *m = PriorityClass{} }
     func (*PriorityClass) ProtoMessage() {}
     func (*PriorityClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_277b2f43b72fffd5, []int{0}
    +	return fileDescriptor_3f12bd05064e996e, []int{0}
     }
     func (m *PriorityClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -76,7 +76,7 @@ var xxx_messageInfo_PriorityClass proto.InternalMessageInfo
     func (m *PriorityClassList) Reset()      { *m = PriorityClassList{} }
     func (*PriorityClassList) ProtoMessage() {}
     func (*PriorityClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_277b2f43b72fffd5, []int{1}
    +	return fileDescriptor_3f12bd05064e996e, []int{1}
     }
     func (m *PriorityClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,42 +107,41 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1/generated.proto", fileDescriptor_277b2f43b72fffd5)
    +	proto.RegisterFile("k8s.io/api/scheduling/v1/generated.proto", fileDescriptor_3f12bd05064e996e)
     }
     
    -var fileDescriptor_277b2f43b72fffd5 = []byte{
    -	// 492 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x4f, 0x8b, 0xd3, 0x4e,
    -	0x18, 0xc7, 0x3b, 0xdd, 0x5f, 0xa1, 0xbf, 0x29, 0x85, 0x1a, 0x11, 0x42, 0x0f, 0x69, 0xe9, 0x1e,
    -	0xec, 0xc5, 0x19, 0xbb, 0xa8, 0x08, 0x0b, 0x82, 0x71, 0x41, 0x84, 0x15, 0x4b, 0x0e, 0x1e, 0xc4,
    -	0x83, 0x93, 0xe4, 0xd9, 0x74, 0x6c, 0x92, 0x09, 0x33, 0x93, 0x40, 0x6f, 0xbe, 0x04, 0xdf, 0x91,
    -	0xd7, 0x1e, 0xf7, 0xb8, 0xa7, 0x62, 0xe3, 0x4b, 0xf0, 0xe6, 0x49, 0x92, 0xc6, 0x4d, 0xff, 0x6c,
    -	0xd1, 0x5b, 0x9e, 0xe7, 0xf9, 0x7e, 0xbe, 0x33, 0xf3, 0xcd, 0x0c, 0x7e, 0x39, 0x7f, 0xae, 0x08,
    -	0x17, 0x74, 0x9e, 0xba, 0x20, 0x63, 0xd0, 0xa0, 0x68, 0x06, 0xb1, 0x2f, 0x24, 0xad, 0x06, 0x2c,
    -	0xe1, 0x54, 0x79, 0x33, 0xf0, 0xd3, 0x90, 0xc7, 0x01, 0xcd, 0x26, 0x34, 0x80, 0x18, 0x24, 0xd3,
    -	0xe0, 0x93, 0x44, 0x0a, 0x2d, 0x0c, 0x73, 0xa3, 0x24, 0x2c, 0xe1, 0xa4, 0x56, 0x92, 0x6c, 0xd2,
    -	0x7f, 0x14, 0x70, 0x3d, 0x4b, 0x5d, 0xe2, 0x89, 0x88, 0x06, 0x22, 0x10, 0xb4, 0x04, 0xdc, 0xf4,
    -	0xaa, 0xac, 0xca, 0xa2, 0xfc, 0xda, 0x18, 0xf5, 0x47, 0x5b, 0x4b, 0x7a, 0x42, 0xc2, 0x1d, 0x8b,
    -	0xf5, 0x9f, 0xd4, 0x9a, 0x88, 0x79, 0x33, 0x1e, 0x83, 0x5c, 0xd0, 0x64, 0x1e, 0x14, 0x0d, 0x45,
    -	0x23, 0xd0, 0xec, 0x2e, 0x8a, 0x1e, 0xa3, 0x64, 0x1a, 0x6b, 0x1e, 0xc1, 0x01, 0xf0, 0xec, 0x6f,
    -	0x40, 0x71, 0xd0, 0x88, 0xed, 0x73, 0xa3, 0x9f, 0x4d, 0xdc, 0x9d, 0x4a, 0x2e, 0x24, 0xd7, 0x8b,
    -	0x57, 0x21, 0x53, 0xca, 0xf8, 0x84, 0xdb, 0xc5, 0xae, 0x7c, 0xa6, 0x99, 0x89, 0x86, 0x68, 0xdc,
    -	0x39, 0x7b, 0x4c, 0xea, 0xc0, 0x6e, 0xcd, 0x49, 0x32, 0x0f, 0x8a, 0x86, 0x22, 0x85, 0x9a, 0x64,
    -	0x13, 0xf2, 0xce, 0xfd, 0x0c, 0x9e, 0x7e, 0x0b, 0x9a, 0xd9, 0xc6, 0x72, 0x35, 0x68, 0xe4, 0xab,
    -	0x01, 0xae, 0x7b, 0xce, 0xad, 0xab, 0x71, 0x8a, 0x5b, 0x19, 0x0b, 0x53, 0x30, 0x9b, 0x43, 0x34,
    -	0x6e, 0xd9, 0xdd, 0x4a, 0xdc, 0x7a, 0x5f, 0x34, 0x9d, 0xcd, 0xcc, 0x38, 0xc7, 0xdd, 0x20, 0x14,
    -	0x2e, 0x0b, 0x2f, 0xe0, 0x8a, 0xa5, 0xa1, 0x36, 0x4f, 0x86, 0x68, 0xdc, 0xb6, 0x1f, 0x54, 0xe2,
    -	0xee, 0xeb, 0xed, 0xa1, 0xb3, 0xab, 0x35, 0x9e, 0xe2, 0x8e, 0x0f, 0xca, 0x93, 0x3c, 0xd1, 0x5c,
    -	0xc4, 0xe6, 0x7f, 0x43, 0x34, 0xfe, 0xdf, 0xbe, 0x5f, 0xa1, 0x9d, 0x8b, 0x7a, 0xe4, 0x6c, 0xeb,
    -	0x8c, 0x00, 0xf7, 0x12, 0x09, 0x10, 0x95, 0xd5, 0x54, 0x84, 0xdc, 0x5b, 0x98, 0xad, 0x92, 0x3d,
    -	0xcf, 0x57, 0x83, 0xde, 0x74, 0x6f, 0xf6, 0x6b, 0x35, 0x38, 0x3d, 0xbc, 0x01, 0x64, 0x5f, 0xe6,
    -	0x1c, 0x98, 0x8e, 0xbe, 0x21, 0x7c, 0x6f, 0x27, 0xf5, 0x4b, 0xae, 0xb4, 0xf1, 0xf1, 0x20, 0x79,
    -	0xf2, 0x6f, 0xc9, 0x17, 0x74, 0x99, 0x7b, 0xaf, 0x3a, 0x62, 0xfb, 0x4f, 0x67, 0x2b, 0xf5, 0x4b,
    -	0xdc, 0xe2, 0x1a, 0x22, 0x65, 0x36, 0x87, 0x27, 0xe3, 0xce, 0xd9, 0x43, 0x72, 0xec, 0x15, 0x90,
    -	0x9d, 0x9d, 0xd5, 0xbf, 0xe7, 0x4d, 0x41, 0x3b, 0x1b, 0x13, 0xfb, 0xc5, 0x72, 0x6d, 0x35, 0xae,
    -	0xd7, 0x56, 0xe3, 0x66, 0x6d, 0x35, 0xbe, 0xe4, 0x16, 0x5a, 0xe6, 0x16, 0xba, 0xce, 0x2d, 0x74,
    -	0x93, 0x5b, 0xe8, 0x7b, 0x6e, 0xa1, 0xaf, 0x3f, 0xac, 0xc6, 0x07, 0xf3, 0xd8, 0x9b, 0xfc, 0x1d,
    -	0x00, 0x00, 0xff, 0xff, 0xa9, 0x88, 0x2b, 0xa0, 0xc7, 0x03, 0x00, 0x00,
    +var fileDescriptor_3f12bd05064e996e = []byte{
    +	// 476 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x3f, 0x8f, 0xd3, 0x30,
    +	0x18, 0xc6, 0xe3, 0x1e, 0x91, 0x8a, 0xab, 0x4a, 0x25, 0x08, 0x29, 0xea, 0xe0, 0x46, 0xbd, 0x81,
    +	0x2c, 0xd8, 0xf4, 0x04, 0x08, 0xe9, 0x24, 0x86, 0x70, 0x12, 0x42, 0x3a, 0x44, 0x95, 0x81, 0x01,
    +	0x31, 0xe0, 0xa6, 0x3e, 0xd7, 0x34, 0x89, 0x23, 0xdb, 0xa9, 0xd4, 0x8d, 0x8f, 0xc0, 0x37, 0x62,
    +	0xed, 0x78, 0xe3, 0x4d, 0x15, 0x0d, 0x1f, 0x81, 0x8d, 0x09, 0x25, 0x2d, 0x97, 0xfe, 0xb9, 0x0a,
    +	0xb6, 0xbc, 0xef, 0xfb, 0xfc, 0x1e, 0xdb, 0x4f, 0x6c, 0xe8, 0x4f, 0x5f, 0x6a, 0x2c, 0x24, 0xa1,
    +	0x99, 0x20, 0x3a, 0x9a, 0xb0, 0x71, 0x1e, 0x8b, 0x94, 0x93, 0xd9, 0x80, 0x70, 0x96, 0x32, 0x45,
    +	0x0d, 0x1b, 0xe3, 0x4c, 0x49, 0x23, 0x1d, 0x77, 0xad, 0xc4, 0x34, 0x13, 0xb8, 0x56, 0xe2, 0xd9,
    +	0xa0, 0xfb, 0x84, 0x0b, 0x33, 0xc9, 0x47, 0x38, 0x92, 0x09, 0xe1, 0x92, 0x4b, 0x52, 0x01, 0xa3,
    +	0xfc, 0xaa, 0xaa, 0xaa, 0xa2, 0xfa, 0x5a, 0x1b, 0x75, 0xfb, 0x5b, 0x4b, 0x46, 0x52, 0xb1, 0x3b,
    +	0x16, 0xeb, 0x3e, 0xab, 0x35, 0x09, 0x8d, 0x26, 0x22, 0x65, 0x6a, 0x4e, 0xb2, 0x29, 0x2f, 0x1b,
    +	0x9a, 0x24, 0xcc, 0xd0, 0xbb, 0x28, 0x72, 0x8c, 0x52, 0x79, 0x6a, 0x44, 0xc2, 0x0e, 0x80, 0x17,
    +	0xff, 0x02, 0xca, 0x83, 0x26, 0x74, 0x9f, 0xeb, 0xff, 0x6a, 0xc0, 0xf6, 0x50, 0x09, 0xa9, 0x84,
    +	0x99, 0xbf, 0x8e, 0xa9, 0xd6, 0xce, 0x67, 0xd8, 0x2c, 0x77, 0x35, 0xa6, 0x86, 0xba, 0xc0, 0x03,
    +	0x7e, 0xeb, 0xec, 0x29, 0xae, 0x03, 0xbb, 0x35, 0xc7, 0xd9, 0x94, 0x97, 0x0d, 0x8d, 0x4b, 0x35,
    +	0x9e, 0x0d, 0xf0, 0xfb, 0xd1, 0x17, 0x16, 0x99, 0x77, 0xcc, 0xd0, 0xc0, 0x59, 0x2c, 0x7b, 0x56,
    +	0xb1, 0xec, 0xc1, 0xba, 0x17, 0xde, 0xba, 0x3a, 0xa7, 0xd0, 0x9e, 0xd1, 0x38, 0x67, 0x6e, 0xc3,
    +	0x03, 0xbe, 0x1d, 0xb4, 0x37, 0x62, 0xfb, 0x43, 0xd9, 0x0c, 0xd7, 0x33, 0xe7, 0x1c, 0xb6, 0x79,
    +	0x2c, 0x47, 0x34, 0xbe, 0x60, 0x57, 0x34, 0x8f, 0x8d, 0x7b, 0xe2, 0x01, 0xbf, 0x19, 0x3c, 0xda,
    +	0x88, 0xdb, 0x6f, 0xb6, 0x87, 0xe1, 0xae, 0xd6, 0x79, 0x0e, 0x5b, 0x63, 0xa6, 0x23, 0x25, 0x32,
    +	0x23, 0x64, 0xea, 0xde, 0xf3, 0x80, 0x7f, 0x3f, 0x78, 0xb8, 0x41, 0x5b, 0x17, 0xf5, 0x28, 0xdc,
    +	0xd6, 0x39, 0x1c, 0x76, 0x32, 0xc5, 0x58, 0x52, 0x55, 0x43, 0x19, 0x8b, 0x68, 0xee, 0xda, 0x15,
    +	0x7b, 0x5e, 0x2c, 0x7b, 0x9d, 0xe1, 0xde, 0xec, 0xf7, 0xb2, 0x77, 0x7a, 0x78, 0x03, 0xf0, 0xbe,
    +	0x2c, 0x3c, 0x30, 0xed, 0x7f, 0x07, 0xf0, 0xc1, 0x4e, 0xea, 0x97, 0x42, 0x1b, 0xe7, 0xd3, 0x41,
    +	0xf2, 0xf8, 0xff, 0x92, 0x2f, 0xe9, 0x2a, 0xf7, 0xce, 0xe6, 0x88, 0xcd, 0xbf, 0x9d, 0xad, 0xd4,
    +	0x2f, 0xa1, 0x2d, 0x0c, 0x4b, 0xb4, 0xdb, 0xf0, 0x4e, 0xfc, 0xd6, 0xd9, 0x63, 0x7c, 0xec, 0x15,
    +	0xe0, 0x9d, 0x9d, 0xd5, 0xbf, 0xe7, 0x6d, 0x49, 0x87, 0x6b, 0x93, 0xe0, 0xd5, 0x62, 0x85, 0xac,
    +	0xeb, 0x15, 0xb2, 0x6e, 0x56, 0xc8, 0xfa, 0x5a, 0x20, 0xb0, 0x28, 0x10, 0xb8, 0x2e, 0x10, 0xb8,
    +	0x29, 0x10, 0xf8, 0x51, 0x20, 0xf0, 0xed, 0x27, 0xb2, 0x3e, 0xba, 0xc7, 0xde, 0xe4, 0x9f, 0x00,
    +	0x00, 0x00, 0xff, 0xff, 0x9a, 0x3d, 0x5f, 0x2e, 0xae, 0x03, 0x00, 0x00,
     }
     
     func (m *PriorityClass) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/scheduling/v1/generated.proto b/vendor/k8s.io/api/scheduling/v1/generated.proto
    index c1a27e8baa8b..374e68238b5e 100644
    --- a/vendor/k8s.io/api/scheduling/v1/generated.proto
    +++ b/vendor/k8s.io/api/scheduling/v1/generated.proto
    @@ -35,7 +35,7 @@ message PriorityClass {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // value represents the integer value of this priority class. This is the actual priority that pods
       // receive when they have the name of this class in their pod spec.
    @@ -66,7 +66,7 @@ message PriorityClassList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of PriorityClasses
       repeated PriorityClass items = 2;
    diff --git a/vendor/k8s.io/api/scheduling/v1/types.go b/vendor/k8s.io/api/scheduling/v1/types.go
    index 146bae40d3be..019dbcd00e17 100644
    --- a/vendor/k8s.io/api/scheduling/v1/types.go
    +++ b/vendor/k8s.io/api/scheduling/v1/types.go
    @@ -24,6 +24,7 @@ import (
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.14
     
     // PriorityClass defines mapping from a priority class name to the priority
     // integer value. The value can be any valid integer.
    @@ -59,6 +60,7 @@ type PriorityClass struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.14
     
     // PriorityClassList is a collection of priority classes.
     type PriorityClassList struct {
    diff --git a/vendor/k8s.io/api/scheduling/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/scheduling/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..a4a432a64f3b
    --- /dev/null
    +++ b/vendor/k8s.io/api/scheduling/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,34 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PriorityClass) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 14
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PriorityClassList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 14
    +}
    diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go b/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go
    index d2c5d2f33f9a..83e504b5a33a 100644
    --- a/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go
    +++ b/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto
    +// source: k8s.io/api/scheduling/v1alpha1/generated.proto
     
     package v1alpha1
     
    @@ -48,7 +48,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *PriorityClass) Reset()      { *m = PriorityClass{} }
     func (*PriorityClass) ProtoMessage() {}
     func (*PriorityClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f033641dd0b95dce, []int{0}
    +	return fileDescriptor_260442fbb28d876a, []int{0}
     }
     func (m *PriorityClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -76,7 +76,7 @@ var xxx_messageInfo_PriorityClass proto.InternalMessageInfo
     func (m *PriorityClassList) Reset()      { *m = PriorityClassList{} }
     func (*PriorityClassList) ProtoMessage() {}
     func (*PriorityClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f033641dd0b95dce, []int{1}
    +	return fileDescriptor_260442fbb28d876a, []int{1}
     }
     func (m *PriorityClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,42 +107,41 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto", fileDescriptor_f033641dd0b95dce)
    +	proto.RegisterFile("k8s.io/api/scheduling/v1alpha1/generated.proto", fileDescriptor_260442fbb28d876a)
     }
     
    -var fileDescriptor_f033641dd0b95dce = []byte{
    -	// 495 bytes of a gzipped FileDescriptorProto
    +var fileDescriptor_260442fbb28d876a = []byte{
    +	// 480 bytes of a gzipped FileDescriptorProto
     	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x31, 0x8f, 0xd3, 0x30,
    -	0x14, 0xc7, 0xeb, 0x1e, 0x95, 0x8a, 0xab, 0x4a, 0x25, 0x08, 0x29, 0xea, 0xe0, 0x56, 0xbd, 0xa5,
    -	0xcb, 0xd9, 0xf4, 0x04, 0x08, 0xe9, 0xb6, 0x52, 0xe9, 0x84, 0x04, 0xa2, 0xca, 0xc0, 0x80, 0x18,
    -	0x70, 0xd3, 0x77, 0xa9, 0x69, 0x12, 0x47, 0xb6, 0x13, 0xa9, 0x1b, 0x1f, 0x81, 0x2f, 0x85, 0xd4,
    -	0xf1, 0xc6, 0x9b, 0x2a, 0x1a, 0x3e, 0x02, 0x1b, 0x13, 0x4a, 0x9a, 0xbb, 0xb4, 0x0d, 0x1c, 0x6c,
    -	0x79, 0xef, 0xfd, 0xfe, 0x7f, 0xdb, 0xff, 0xd8, 0xf8, 0x72, 0xf9, 0x52, 0x53, 0x21, 0xd9, 0x32,
    -	0x9e, 0x81, 0x0a, 0xc1, 0x80, 0x66, 0x09, 0x84, 0x73, 0xa9, 0x58, 0x31, 0xe0, 0x91, 0x60, 0xda,
    -	0x5d, 0xc0, 0x3c, 0xf6, 0x45, 0xe8, 0xb1, 0x64, 0xc4, 0xfd, 0x68, 0xc1, 0x47, 0xcc, 0x83, 0x10,
    -	0x14, 0x37, 0x30, 0xa7, 0x91, 0x92, 0x46, 0x5a, 0x64, 0xc7, 0x53, 0x1e, 0x09, 0x5a, 0xf2, 0xf4,
    -	0x96, 0xef, 0x9e, 0x79, 0xc2, 0x2c, 0xe2, 0x19, 0x75, 0x65, 0xc0, 0x3c, 0xe9, 0x49, 0x96, 0xcb,
    -	0x66, 0xf1, 0x55, 0x5e, 0xe5, 0x45, 0xfe, 0xb5, 0xb3, 0xeb, 0x0e, 0xf6, 0x96, 0x77, 0xa5, 0x02,
    -	0x96, 0x54, 0x96, 0xec, 0x3e, 0x2b, 0x99, 0x80, 0xbb, 0x0b, 0x11, 0x82, 0x5a, 0xb1, 0x68, 0xe9,
    -	0x65, 0x0d, 0xcd, 0x02, 0x30, 0xfc, 0x4f, 0x2a, 0xf6, 0x37, 0x95, 0x8a, 0x43, 0x23, 0x02, 0xa8,
    -	0x08, 0x5e, 0xfc, 0x4b, 0x90, 0x1d, 0x37, 0xe0, 0xc7, 0xba, 0xc1, 0xcf, 0x3a, 0x6e, 0x4f, 0x95,
    -	0x90, 0x4a, 0x98, 0xd5, 0x2b, 0x9f, 0x6b, 0x6d, 0x7d, 0xc2, 0xcd, 0x6c, 0x57, 0x73, 0x6e, 0xb8,
    -	0x8d, 0xfa, 0x68, 0xd8, 0x3a, 0x7f, 0x4a, 0xcb, 0xd8, 0xee, 0xcc, 0x69, 0xb4, 0xf4, 0xb2, 0x86,
    -	0xa6, 0x19, 0x4d, 0x93, 0x11, 0x7d, 0x37, 0xfb, 0x0c, 0xae, 0x79, 0x0b, 0x86, 0x8f, 0xad, 0xf5,
    -	0xa6, 0x57, 0x4b, 0x37, 0x3d, 0x5c, 0xf6, 0x9c, 0x3b, 0x57, 0xeb, 0x14, 0x37, 0x12, 0xee, 0xc7,
    -	0x60, 0xd7, 0xfb, 0x68, 0xd8, 0x18, 0xb7, 0x0b, 0xb8, 0xf1, 0x3e, 0x6b, 0x3a, 0xbb, 0x99, 0x75,
    -	0x81, 0xdb, 0x9e, 0x2f, 0x67, 0xdc, 0x9f, 0xc0, 0x15, 0x8f, 0x7d, 0x63, 0x9f, 0xf4, 0xd1, 0xb0,
    -	0x39, 0x7e, 0x52, 0xc0, 0xed, 0xcb, 0xfd, 0xa1, 0x73, 0xc8, 0x5a, 0xcf, 0x71, 0x6b, 0x0e, 0xda,
    -	0x55, 0x22, 0x32, 0x42, 0x86, 0xf6, 0x83, 0x3e, 0x1a, 0x3e, 0x1c, 0x3f, 0x2e, 0xa4, 0xad, 0x49,
    -	0x39, 0x72, 0xf6, 0x39, 0xcb, 0xc3, 0x9d, 0x48, 0x01, 0x04, 0x79, 0x35, 0x95, 0xbe, 0x70, 0x57,
    -	0x76, 0x23, 0xd7, 0x5e, 0xa4, 0x9b, 0x5e, 0x67, 0x7a, 0x34, 0xfb, 0xb5, 0xe9, 0x9d, 0x56, 0x6f,
    -	0x00, 0x3d, 0xc6, 0x9c, 0x8a, 0xe9, 0xe0, 0x1b, 0xc2, 0x8f, 0x0e, 0x52, 0x7f, 0x23, 0xb4, 0xb1,
    -	0x3e, 0x56, 0x92, 0xa7, 0xff, 0x97, 0x7c, 0xa6, 0xce, 0x73, 0xef, 0x14, 0x47, 0x6c, 0xde, 0x76,
    -	0xf6, 0x52, 0x77, 0x70, 0x43, 0x18, 0x08, 0xb4, 0x5d, 0xef, 0x9f, 0x0c, 0x5b, 0xe7, 0x67, 0xf4,
    -	0xfe, 0xb7, 0x40, 0x0f, 0xf6, 0x57, 0xfe, 0xa4, 0xd7, 0x99, 0x87, 0xb3, 0xb3, 0x1a, 0x4f, 0xd6,
    -	0x5b, 0x52, 0xbb, 0xde, 0x92, 0xda, 0xcd, 0x96, 0xd4, 0xbe, 0xa4, 0x04, 0xad, 0x53, 0x82, 0xae,
    -	0x53, 0x82, 0x6e, 0x52, 0x82, 0xbe, 0xa7, 0x04, 0x7d, 0xfd, 0x41, 0x6a, 0x1f, 0xc8, 0xfd, 0xaf,
    -	0xf4, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbd, 0xf8, 0x5a, 0x80, 0xdf, 0x03, 0x00, 0x00,
    +	0x18, 0x86, 0xeb, 0x1e, 0x91, 0x8a, 0xab, 0x4a, 0x25, 0x08, 0x29, 0xea, 0xe0, 0x46, 0xbd, 0x25,
    +	0xcb, 0xd9, 0xf4, 0x04, 0x08, 0xe9, 0xb6, 0x50, 0x09, 0x21, 0x81, 0xa8, 0x32, 0x30, 0x20, 0x06,
    +	0xdc, 0xd4, 0xe7, 0x9a, 0x26, 0x71, 0x64, 0x3b, 0x95, 0xba, 0xf1, 0x13, 0xf8, 0x53, 0x48, 0x1d,
    +	0x6f, 0xbc, 0xa9, 0xa2, 0xe1, 0x27, 0xb0, 0x31, 0xa1, 0xa4, 0xbd, 0x4b, 0xdb, 0xc0, 0x71, 0x5b,
    +	0xbe, 0xef, 0x7b, 0xde, 0xd7, 0xf6, 0x1b, 0x1b, 0xe2, 0xf9, 0x4b, 0x8d, 0x85, 0x24, 0x34, 0x15,
    +	0x44, 0x87, 0x33, 0x36, 0xcd, 0x22, 0x91, 0x70, 0xb2, 0x18, 0xd2, 0x28, 0x9d, 0xd1, 0x21, 0xe1,
    +	0x2c, 0x61, 0x8a, 0x1a, 0x36, 0xc5, 0xa9, 0x92, 0x46, 0xda, 0x68, 0xcb, 0x63, 0x9a, 0x0a, 0x5c,
    +	0xf1, 0xf8, 0x86, 0xef, 0x9d, 0x71, 0x61, 0x66, 0xd9, 0x04, 0x87, 0x32, 0x26, 0x5c, 0x72, 0x49,
    +	0x4a, 0xd9, 0x24, 0xbb, 0x2c, 0xab, 0xb2, 0x28, 0xbf, 0xb6, 0x76, 0xbd, 0xc1, 0xde, 0xf2, 0xa1,
    +	0x54, 0x8c, 0x2c, 0x6a, 0x4b, 0xf6, 0x9e, 0x55, 0x4c, 0x4c, 0xc3, 0x99, 0x48, 0x98, 0x5a, 0x92,
    +	0x74, 0xce, 0x8b, 0x86, 0x26, 0x31, 0x33, 0xf4, 0x6f, 0x2a, 0xf2, 0x2f, 0x95, 0xca, 0x12, 0x23,
    +	0x62, 0x56, 0x13, 0xbc, 0xf8, 0x9f, 0xa0, 0x38, 0x6e, 0x4c, 0x8f, 0x75, 0x83, 0x5f, 0x4d, 0xd8,
    +	0x19, 0x2b, 0x21, 0x95, 0x30, 0xcb, 0x57, 0x11, 0xd5, 0xda, 0xfe, 0x0c, 0x5b, 0xc5, 0xae, 0xa6,
    +	0xd4, 0x50, 0x07, 0xb8, 0xc0, 0x6b, 0x9f, 0x3f, 0xc5, 0x55, 0x6c, 0xb7, 0xe6, 0x38, 0x9d, 0xf3,
    +	0xa2, 0xa1, 0x71, 0x41, 0xe3, 0xc5, 0x10, 0xbf, 0x9f, 0x7c, 0x61, 0xa1, 0x79, 0xc7, 0x0c, 0xf5,
    +	0xed, 0xd5, 0xba, 0xdf, 0xc8, 0xd7, 0x7d, 0x58, 0xf5, 0x82, 0x5b, 0x57, 0xfb, 0x14, 0x5a, 0x0b,
    +	0x1a, 0x65, 0xcc, 0x69, 0xba, 0xc0, 0xb3, 0xfc, 0xce, 0x0e, 0xb6, 0x3e, 0x14, 0xcd, 0x60, 0x3b,
    +	0xb3, 0x2f, 0x60, 0x87, 0x47, 0x72, 0x42, 0xa3, 0x11, 0xbb, 0xa4, 0x59, 0x64, 0x9c, 0x13, 0x17,
    +	0x78, 0x2d, 0xff, 0xc9, 0x0e, 0xee, 0xbc, 0xde, 0x1f, 0x06, 0x87, 0xac, 0xfd, 0x1c, 0xb6, 0xa7,
    +	0x4c, 0x87, 0x4a, 0xa4, 0x46, 0xc8, 0xc4, 0x79, 0xe0, 0x02, 0xef, 0xa1, 0xff, 0x78, 0x27, 0x6d,
    +	0x8f, 0xaa, 0x51, 0xb0, 0xcf, 0xd9, 0x1c, 0x76, 0x53, 0xc5, 0x58, 0x5c, 0x56, 0x63, 0x19, 0x89,
    +	0x70, 0xe9, 0x58, 0xa5, 0xf6, 0x22, 0x5f, 0xf7, 0xbb, 0xe3, 0xa3, 0xd9, 0xef, 0x75, 0xff, 0xb4,
    +	0x7e, 0x03, 0xf0, 0x31, 0x16, 0xd4, 0x4c, 0x07, 0xdf, 0x01, 0x7c, 0x74, 0x90, 0xfa, 0x5b, 0xa1,
    +	0x8d, 0xfd, 0xa9, 0x96, 0x3c, 0xbe, 0x5f, 0xf2, 0x85, 0xba, 0xcc, 0xbd, 0xbb, 0x3b, 0x62, 0xeb,
    +	0xa6, 0xb3, 0x97, 0x7a, 0x00, 0x2d, 0x61, 0x58, 0xac, 0x9d, 0xa6, 0x7b, 0xe2, 0xb5, 0xcf, 0xcf,
    +	0xf0, 0xdd, 0x6f, 0x01, 0x1f, 0xec, 0xaf, 0xfa, 0x49, 0x6f, 0x0a, 0x8f, 0x60, 0x6b, 0xe5, 0x8f,
    +	0x56, 0x1b, 0xd4, 0xb8, 0xda, 0xa0, 0xc6, 0xf5, 0x06, 0x35, 0xbe, 0xe6, 0x08, 0xac, 0x72, 0x04,
    +	0xae, 0x72, 0x04, 0xae, 0x73, 0x04, 0x7e, 0xe4, 0x08, 0x7c, 0xfb, 0x89, 0x1a, 0x1f, 0xd1, 0xdd,
    +	0xaf, 0xf4, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8e, 0xfe, 0x45, 0x7e, 0xc6, 0x03, 0x00, 0x00,
     }
     
     func (m *PriorityClass) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto b/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto
    index f0878fb16e0a..e42dccc688bd 100644
    --- a/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto
    +++ b/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto
    @@ -36,7 +36,7 @@ message PriorityClass {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // value represents the integer value of this priority class. This is the actual priority that pods
       // receive when they have the name of this class in their pod spec.
    @@ -67,7 +67,7 @@ message PriorityClassList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of PriorityClasses
       repeated PriorityClass items = 2;
    diff --git a/vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go b/vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go
    index 262caf7f1d60..68e8e90d1d92 100644
    --- a/vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1beta1/generated.proto
    +// source: k8s.io/api/scheduling/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -48,7 +48,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *PriorityClass) Reset()      { *m = PriorityClass{} }
     func (*PriorityClass) ProtoMessage() {}
     func (*PriorityClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6cd406dede2d3f42, []int{0}
    +	return fileDescriptor_9edc3acf997efcf2, []int{0}
     }
     func (m *PriorityClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -76,7 +76,7 @@ var xxx_messageInfo_PriorityClass proto.InternalMessageInfo
     func (m *PriorityClassList) Reset()      { *m = PriorityClassList{} }
     func (*PriorityClassList) ProtoMessage() {}
     func (*PriorityClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6cd406dede2d3f42, []int{1}
    +	return fileDescriptor_9edc3acf997efcf2, []int{1}
     }
     func (m *PriorityClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,42 +107,41 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1beta1/generated.proto", fileDescriptor_6cd406dede2d3f42)
    +	proto.RegisterFile("k8s.io/api/scheduling/v1beta1/generated.proto", fileDescriptor_9edc3acf997efcf2)
     }
     
    -var fileDescriptor_6cd406dede2d3f42 = []byte{
    -	// 497 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x31, 0x8f, 0xd3, 0x3e,
    -	0x18, 0xc6, 0xeb, 0xde, 0xbf, 0x52, 0xff, 0xae, 0x2a, 0x95, 0x20, 0xa4, 0xa8, 0xd2, 0xa5, 0x55,
    -	0x6f, 0xe9, 0x00, 0x36, 0x3d, 0x01, 0x42, 0xba, 0xad, 0x77, 0x02, 0x21, 0x81, 0x28, 0x19, 0x18,
    -	0x10, 0x03, 0x4e, 0xf2, 0x5e, 0x6a, 0x9a, 0xc4, 0x91, 0xed, 0x44, 0xea, 0xc6, 0x47, 0xe0, 0x43,
    -	0x31, 0x74, 0xbc, 0xf1, 0xa6, 0x8a, 0x86, 0x8f, 0xc0, 0xc6, 0x84, 0x92, 0x86, 0x4b, 0xdb, 0xc0,
    -	0xc1, 0x96, 0xf7, 0x7d, 0x7f, 0xcf, 0x63, 0xfb, 0x89, 0x8d, 0x9f, 0x2d, 0x9e, 0x2a, 0xc2, 0x05,
    -	0x5d, 0x24, 0x0e, 0xc8, 0x08, 0x34, 0x28, 0x9a, 0x42, 0xe4, 0x09, 0x49, 0xcb, 0x01, 0x8b, 0x39,
    -	0x55, 0xee, 0x1c, 0xbc, 0x24, 0xe0, 0x91, 0x4f, 0xd3, 0x89, 0x03, 0x9a, 0x4d, 0xa8, 0x0f, 0x11,
    -	0x48, 0xa6, 0xc1, 0x23, 0xb1, 0x14, 0x5a, 0x18, 0xc7, 0x5b, 0x9c, 0xb0, 0x98, 0x93, 0x0a, 0x27,
    -	0x25, 0xde, 0x7f, 0xe0, 0x73, 0x3d, 0x4f, 0x1c, 0xe2, 0x8a, 0x90, 0xfa, 0xc2, 0x17, 0xb4, 0x50,
    -	0x39, 0xc9, 0x65, 0x51, 0x15, 0x45, 0xf1, 0xb5, 0x75, 0xeb, 0x8f, 0x76, 0x16, 0x77, 0x85, 0x04,
    -	0x9a, 0xd6, 0x56, 0xec, 0x3f, 0xaa, 0x98, 0x90, 0xb9, 0x73, 0x1e, 0x81, 0x5c, 0xd2, 0x78, 0xe1,
    -	0xe7, 0x0d, 0x45, 0x43, 0xd0, 0xec, 0x77, 0x2a, 0xfa, 0x27, 0x95, 0x4c, 0x22, 0xcd, 0x43, 0xa8,
    -	0x09, 0x9e, 0xfc, 0x4d, 0x90, 0x9f, 0x36, 0x64, 0x87, 0xba, 0xd1, 0xf7, 0x26, 0xee, 0xce, 0x24,
    -	0x17, 0x92, 0xeb, 0xe5, 0x79, 0xc0, 0x94, 0x32, 0x3e, 0xe0, 0x76, 0xbe, 0x2b, 0x8f, 0x69, 0x66,
    -	0xa2, 0x21, 0x1a, 0x77, 0x4e, 0x1f, 0x92, 0x2a, 0xb5, 0x1b, 0x73, 0x12, 0x2f, 0xfc, 0xbc, 0xa1,
    -	0x48, 0x4e, 0x93, 0x74, 0x42, 0x5e, 0x3b, 0x1f, 0xc1, 0xd5, 0xaf, 0x40, 0xb3, 0xa9, 0xb1, 0x5a,
    -	0x0f, 0x1a, 0xd9, 0x7a, 0x80, 0xab, 0x9e, 0x7d, 0xe3, 0x6a, 0x9c, 0xe0, 0x56, 0xca, 0x82, 0x04,
    -	0xcc, 0xe6, 0x10, 0x8d, 0x5b, 0xd3, 0x6e, 0x09, 0xb7, 0xde, 0xe6, 0x4d, 0x7b, 0x3b, 0x33, 0xce,
    -	0x70, 0xd7, 0x0f, 0x84, 0xc3, 0x82, 0x0b, 0xb8, 0x64, 0x49, 0xa0, 0xcd, 0xa3, 0x21, 0x1a, 0xb7,
    -	0xa7, 0xf7, 0x4a, 0xb8, 0xfb, 0x7c, 0x77, 0x68, 0xef, 0xb3, 0xc6, 0x63, 0xdc, 0xf1, 0x40, 0xb9,
    -	0x92, 0xc7, 0x9a, 0x8b, 0xc8, 0xfc, 0x6f, 0x88, 0xc6, 0xff, 0x4f, 0xef, 0x96, 0xd2, 0xce, 0x45,
    -	0x35, 0xb2, 0x77, 0x39, 0xc3, 0xc7, 0xbd, 0x58, 0x02, 0x84, 0x45, 0x35, 0x13, 0x01, 0x77, 0x97,
    -	0x66, 0xab, 0xd0, 0x9e, 0x65, 0xeb, 0x41, 0x6f, 0x76, 0x30, 0xfb, 0xb1, 0x1e, 0x9c, 0xd4, 0x6f,
    -	0x00, 0x39, 0xc4, 0xec, 0x9a, 0xe9, 0xe8, 0x0b, 0xc2, 0x77, 0xf6, 0x52, 0x7f, 0xc9, 0x95, 0x36,
    -	0xde, 0xd7, 0x92, 0x27, 0xff, 0x96, 0x7c, 0xae, 0x2e, 0x72, 0xef, 0x95, 0x47, 0x6c, 0xff, 0xea,
    -	0xec, 0xa4, 0xfe, 0x06, 0xb7, 0xb8, 0x86, 0x50, 0x99, 0xcd, 0xe1, 0xd1, 0xb8, 0x73, 0x7a, 0x9f,
    -	0xdc, 0xfa, 0x14, 0xc8, 0xde, 0xf6, 0xaa, 0x7f, 0xf4, 0x22, 0xb7, 0xb0, 0xb7, 0x4e, 0xd3, 0xf3,
    -	0xd5, 0xc6, 0x6a, 0x5c, 0x6d, 0xac, 0xc6, 0xf5, 0xc6, 0x6a, 0x7c, 0xca, 0x2c, 0xb4, 0xca, 0x2c,
    -	0x74, 0x95, 0x59, 0xe8, 0x3a, 0xb3, 0xd0, 0xd7, 0xcc, 0x42, 0x9f, 0xbf, 0x59, 0x8d, 0x77, 0xc7,
    -	0xb7, 0x3e, 0xd1, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc5, 0x6c, 0x56, 0x80, 0xdb, 0x03, 0x00,
    +var fileDescriptor_9edc3acf997efcf2 = []byte{
    +	// 481 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x31, 0x8f, 0xd3, 0x30,
    +	0x18, 0x86, 0xe3, 0x1e, 0x91, 0x8a, 0xab, 0x4a, 0x25, 0x08, 0x29, 0xaa, 0x74, 0x69, 0xd4, 0x5b,
    +	0x32, 0x70, 0x36, 0x3d, 0x01, 0x42, 0xba, 0x2d, 0x77, 0x12, 0x42, 0x02, 0x51, 0x32, 0x30, 0x20,
    +	0x06, 0x9c, 0xd4, 0x97, 0x9a, 0x26, 0x71, 0x64, 0x3b, 0x95, 0xba, 0xf1, 0x13, 0xf8, 0x51, 0x0c,
    +	0x1d, 0x6f, 0xbc, 0xa9, 0xa2, 0xe1, 0x27, 0xb0, 0x31, 0xa1, 0xa4, 0xe1, 0xd2, 0x36, 0x50, 0x6e,
    +	0xcb, 0xf7, 0x7d, 0xcf, 0xfb, 0xda, 0x7e, 0x63, 0xc3, 0xd3, 0xd9, 0x0b, 0x89, 0x18, 0xc7, 0x24,
    +	0x65, 0x58, 0x06, 0x53, 0x3a, 0xc9, 0x22, 0x96, 0x84, 0x78, 0x3e, 0xf2, 0xa9, 0x22, 0x23, 0x1c,
    +	0xd2, 0x84, 0x0a, 0xa2, 0xe8, 0x04, 0xa5, 0x82, 0x2b, 0x6e, 0x1c, 0x6f, 0x70, 0x44, 0x52, 0x86,
    +	0x6a, 0x1c, 0x55, 0x78, 0xff, 0x34, 0x64, 0x6a, 0x9a, 0xf9, 0x28, 0xe0, 0x31, 0x0e, 0x79, 0xc8,
    +	0x71, 0xa9, 0xf2, 0xb3, 0xab, 0xb2, 0x2a, 0x8b, 0xf2, 0x6b, 0xe3, 0xd6, 0x1f, 0x6e, 0x2d, 0x1e,
    +	0x70, 0x41, 0xf1, 0xbc, 0xb1, 0x62, 0xff, 0x69, 0xcd, 0xc4, 0x24, 0x98, 0xb2, 0x84, 0x8a, 0x05,
    +	0x4e, 0x67, 0x61, 0xd1, 0x90, 0x38, 0xa6, 0x8a, 0xfc, 0x4d, 0x85, 0xff, 0xa5, 0x12, 0x59, 0xa2,
    +	0x58, 0x4c, 0x1b, 0x82, 0xe7, 0xff, 0x13, 0x14, 0xa7, 0x8d, 0xc9, 0xbe, 0x6e, 0xf8, 0xb3, 0x05,
    +	0xbb, 0x63, 0xc1, 0xb8, 0x60, 0x6a, 0x71, 0x11, 0x11, 0x29, 0x8d, 0x4f, 0xb0, 0x5d, 0xec, 0x6a,
    +	0x42, 0x14, 0x31, 0x81, 0x0d, 0x9c, 0xce, 0xd9, 0x13, 0x54, 0xa7, 0x76, 0x6b, 0x8e, 0xd2, 0x59,
    +	0x58, 0x34, 0x24, 0x2a, 0x68, 0x34, 0x1f, 0xa1, 0xb7, 0xfe, 0x67, 0x1a, 0xa8, 0x37, 0x54, 0x11,
    +	0xd7, 0x58, 0xae, 0x06, 0x5a, 0xbe, 0x1a, 0xc0, 0xba, 0xe7, 0xdd, 0xba, 0x1a, 0x27, 0x50, 0x9f,
    +	0x93, 0x28, 0xa3, 0x66, 0xcb, 0x06, 0x8e, 0xee, 0x76, 0x2b, 0x58, 0x7f, 0x5f, 0x34, 0xbd, 0xcd,
    +	0xcc, 0x38, 0x87, 0xdd, 0x30, 0xe2, 0x3e, 0x89, 0x2e, 0xe9, 0x15, 0xc9, 0x22, 0x65, 0x1e, 0xd9,
    +	0xc0, 0x69, 0xbb, 0x8f, 0x2a, 0xb8, 0xfb, 0x72, 0x7b, 0xe8, 0xed, 0xb2, 0xc6, 0x33, 0xd8, 0x99,
    +	0x50, 0x19, 0x08, 0x96, 0x2a, 0xc6, 0x13, 0xf3, 0x9e, 0x0d, 0x9c, 0xfb, 0xee, 0xc3, 0x4a, 0xda,
    +	0xb9, 0xac, 0x47, 0xde, 0x36, 0x67, 0x84, 0xb0, 0x97, 0x0a, 0x4a, 0xe3, 0xb2, 0x1a, 0xf3, 0x88,
    +	0x05, 0x0b, 0x53, 0x2f, 0xb5, 0xe7, 0xf9, 0x6a, 0xd0, 0x1b, 0xef, 0xcd, 0x7e, 0xad, 0x06, 0x27,
    +	0xcd, 0x1b, 0x80, 0xf6, 0x31, 0xaf, 0x61, 0x3a, 0xfc, 0x06, 0xe0, 0x83, 0x9d, 0xd4, 0x5f, 0x33,
    +	0xa9, 0x8c, 0x8f, 0x8d, 0xe4, 0xd1, 0xdd, 0x92, 0x2f, 0xd4, 0x65, 0xee, 0xbd, 0xea, 0x88, 0xed,
    +	0x3f, 0x9d, 0xad, 0xd4, 0xdf, 0x41, 0x9d, 0x29, 0x1a, 0x4b, 0xb3, 0x65, 0x1f, 0x39, 0x9d, 0xb3,
    +	0xc7, 0xe8, 0xe0, 0x53, 0x40, 0x3b, 0xdb, 0xab, 0xff, 0xd1, 0xab, 0xc2, 0xc2, 0xdb, 0x38, 0xb9,
    +	0x17, 0xcb, 0xb5, 0xa5, 0x5d, 0xaf, 0x2d, 0xed, 0x66, 0x6d, 0x69, 0x5f, 0x72, 0x0b, 0x2c, 0x73,
    +	0x0b, 0x5c, 0xe7, 0x16, 0xb8, 0xc9, 0x2d, 0xf0, 0x3d, 0xb7, 0xc0, 0xd7, 0x1f, 0x96, 0xf6, 0xe1,
    +	0xf8, 0xe0, 0x13, 0xfd, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x04, 0x2e, 0xb0, 0xce, 0xc2, 0x03, 0x00,
     	0x00,
     }
     
    diff --git a/vendor/k8s.io/api/scheduling/v1beta1/generated.proto b/vendor/k8s.io/api/scheduling/v1beta1/generated.proto
    index 43878184d6e5..7f77b01753f5 100644
    --- a/vendor/k8s.io/api/scheduling/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/scheduling/v1beta1/generated.proto
    @@ -36,7 +36,7 @@ message PriorityClass {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // value represents the integer value of this priority class. This is the actual priority that pods
       // receive when they have the name of this class in their pod spec.
    @@ -67,7 +67,7 @@ message PriorityClassList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of PriorityClasses
       repeated PriorityClass items = 2;
    diff --git a/vendor/k8s.io/api/storage/v1/doc.go b/vendor/k8s.io/api/storage/v1/doc.go
    index 75a6489da2ce..e2310dac23a3 100644
    --- a/vendor/k8s.io/api/storage/v1/doc.go
    +++ b/vendor/k8s.io/api/storage/v1/doc.go
    @@ -18,5 +18,6 @@ limitations under the License.
     // +k8s:protobuf-gen=package
     // +groupName=storage.k8s.io
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     
     package v1 // import "k8s.io/api/storage/v1"
    diff --git a/vendor/k8s.io/api/storage/v1/generated.pb.go b/vendor/k8s.io/api/storage/v1/generated.pb.go
    index d36497432deb..11c8c97c241e 100644
    --- a/vendor/k8s.io/api/storage/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/storage/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/storage/v1/generated.proto
    +// source: k8s.io/api/storage/v1/generated.proto
     
     package v1
     
    @@ -51,7 +51,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *CSIDriver) Reset()      { *m = CSIDriver{} }
     func (*CSIDriver) ProtoMessage() {}
     func (*CSIDriver) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{0}
    +	return fileDescriptor_662262cc70094b41, []int{0}
     }
     func (m *CSIDriver) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -79,7 +79,7 @@ var xxx_messageInfo_CSIDriver proto.InternalMessageInfo
     func (m *CSIDriverList) Reset()      { *m = CSIDriverList{} }
     func (*CSIDriverList) ProtoMessage() {}
     func (*CSIDriverList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{1}
    +	return fileDescriptor_662262cc70094b41, []int{1}
     }
     func (m *CSIDriverList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,7 +107,7 @@ var xxx_messageInfo_CSIDriverList proto.InternalMessageInfo
     func (m *CSIDriverSpec) Reset()      { *m = CSIDriverSpec{} }
     func (*CSIDriverSpec) ProtoMessage() {}
     func (*CSIDriverSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{2}
    +	return fileDescriptor_662262cc70094b41, []int{2}
     }
     func (m *CSIDriverSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,7 +135,7 @@ var xxx_messageInfo_CSIDriverSpec proto.InternalMessageInfo
     func (m *CSINode) Reset()      { *m = CSINode{} }
     func (*CSINode) ProtoMessage() {}
     func (*CSINode) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{3}
    +	return fileDescriptor_662262cc70094b41, []int{3}
     }
     func (m *CSINode) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -163,7 +163,7 @@ var xxx_messageInfo_CSINode proto.InternalMessageInfo
     func (m *CSINodeDriver) Reset()      { *m = CSINodeDriver{} }
     func (*CSINodeDriver) ProtoMessage() {}
     func (*CSINodeDriver) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{4}
    +	return fileDescriptor_662262cc70094b41, []int{4}
     }
     func (m *CSINodeDriver) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -191,7 +191,7 @@ var xxx_messageInfo_CSINodeDriver proto.InternalMessageInfo
     func (m *CSINodeList) Reset()      { *m = CSINodeList{} }
     func (*CSINodeList) ProtoMessage() {}
     func (*CSINodeList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{5}
    +	return fileDescriptor_662262cc70094b41, []int{5}
     }
     func (m *CSINodeList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -219,7 +219,7 @@ var xxx_messageInfo_CSINodeList proto.InternalMessageInfo
     func (m *CSINodeSpec) Reset()      { *m = CSINodeSpec{} }
     func (*CSINodeSpec) ProtoMessage() {}
     func (*CSINodeSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{6}
    +	return fileDescriptor_662262cc70094b41, []int{6}
     }
     func (m *CSINodeSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -247,7 +247,7 @@ var xxx_messageInfo_CSINodeSpec proto.InternalMessageInfo
     func (m *CSIStorageCapacity) Reset()      { *m = CSIStorageCapacity{} }
     func (*CSIStorageCapacity) ProtoMessage() {}
     func (*CSIStorageCapacity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{7}
    +	return fileDescriptor_662262cc70094b41, []int{7}
     }
     func (m *CSIStorageCapacity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -275,7 +275,7 @@ var xxx_messageInfo_CSIStorageCapacity proto.InternalMessageInfo
     func (m *CSIStorageCapacityList) Reset()      { *m = CSIStorageCapacityList{} }
     func (*CSIStorageCapacityList) ProtoMessage() {}
     func (*CSIStorageCapacityList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{8}
    +	return fileDescriptor_662262cc70094b41, []int{8}
     }
     func (m *CSIStorageCapacityList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -303,7 +303,7 @@ var xxx_messageInfo_CSIStorageCapacityList proto.InternalMessageInfo
     func (m *StorageClass) Reset()      { *m = StorageClass{} }
     func (*StorageClass) ProtoMessage() {}
     func (*StorageClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{9}
    +	return fileDescriptor_662262cc70094b41, []int{9}
     }
     func (m *StorageClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -331,7 +331,7 @@ var xxx_messageInfo_StorageClass proto.InternalMessageInfo
     func (m *StorageClassList) Reset()      { *m = StorageClassList{} }
     func (*StorageClassList) ProtoMessage() {}
     func (*StorageClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{10}
    +	return fileDescriptor_662262cc70094b41, []int{10}
     }
     func (m *StorageClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -359,7 +359,7 @@ var xxx_messageInfo_StorageClassList proto.InternalMessageInfo
     func (m *TokenRequest) Reset()      { *m = TokenRequest{} }
     func (*TokenRequest) ProtoMessage() {}
     func (*TokenRequest) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{11}
    +	return fileDescriptor_662262cc70094b41, []int{11}
     }
     func (m *TokenRequest) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -387,7 +387,7 @@ var xxx_messageInfo_TokenRequest proto.InternalMessageInfo
     func (m *VolumeAttachment) Reset()      { *m = VolumeAttachment{} }
     func (*VolumeAttachment) ProtoMessage() {}
     func (*VolumeAttachment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{12}
    +	return fileDescriptor_662262cc70094b41, []int{12}
     }
     func (m *VolumeAttachment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -415,7 +415,7 @@ var xxx_messageInfo_VolumeAttachment proto.InternalMessageInfo
     func (m *VolumeAttachmentList) Reset()      { *m = VolumeAttachmentList{} }
     func (*VolumeAttachmentList) ProtoMessage() {}
     func (*VolumeAttachmentList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{13}
    +	return fileDescriptor_662262cc70094b41, []int{13}
     }
     func (m *VolumeAttachmentList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -443,7 +443,7 @@ var xxx_messageInfo_VolumeAttachmentList proto.InternalMessageInfo
     func (m *VolumeAttachmentSource) Reset()      { *m = VolumeAttachmentSource{} }
     func (*VolumeAttachmentSource) ProtoMessage() {}
     func (*VolumeAttachmentSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{14}
    +	return fileDescriptor_662262cc70094b41, []int{14}
     }
     func (m *VolumeAttachmentSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -471,7 +471,7 @@ var xxx_messageInfo_VolumeAttachmentSource proto.InternalMessageInfo
     func (m *VolumeAttachmentSpec) Reset()      { *m = VolumeAttachmentSpec{} }
     func (*VolumeAttachmentSpec) ProtoMessage() {}
     func (*VolumeAttachmentSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{15}
    +	return fileDescriptor_662262cc70094b41, []int{15}
     }
     func (m *VolumeAttachmentSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -499,7 +499,7 @@ var xxx_messageInfo_VolumeAttachmentSpec proto.InternalMessageInfo
     func (m *VolumeAttachmentStatus) Reset()      { *m = VolumeAttachmentStatus{} }
     func (*VolumeAttachmentStatus) ProtoMessage() {}
     func (*VolumeAttachmentStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{16}
    +	return fileDescriptor_662262cc70094b41, []int{16}
     }
     func (m *VolumeAttachmentStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -527,7 +527,7 @@ var xxx_messageInfo_VolumeAttachmentStatus proto.InternalMessageInfo
     func (m *VolumeError) Reset()      { *m = VolumeError{} }
     func (*VolumeError) ProtoMessage() {}
     func (*VolumeError) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{17}
    +	return fileDescriptor_662262cc70094b41, []int{17}
     }
     func (m *VolumeError) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -555,7 +555,7 @@ var xxx_messageInfo_VolumeError proto.InternalMessageInfo
     func (m *VolumeNodeResources) Reset()      { *m = VolumeNodeResources{} }
     func (*VolumeNodeResources) ProtoMessage() {}
     func (*VolumeNodeResources) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_3b530c1983504d8d, []int{18}
    +	return fileDescriptor_662262cc70094b41, []int{18}
     }
     func (m *VolumeNodeResources) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -605,116 +605,115 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/storage/v1/generated.proto", fileDescriptor_3b530c1983504d8d)
    -}
    -
    -var fileDescriptor_3b530c1983504d8d = []byte{
    -	// 1670 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x73, 0x1b, 0x4b,
    -	0x11, 0xf7, 0x5a, 0xf2, 0xd7, 0xc8, 0x8e, 0xed, 0xb1, 0xfd, 0x10, 0x3e, 0x48, 0xae, 0x7d, 0xaf,
    -	0xc0, 0xef, 0xc1, 0x5b, 0xbd, 0x38, 0x21, 0x95, 0x0a, 0x15, 0xaa, 0xbc, 0xb6, 0x42, 0x5c, 0x58,
    -	0xb6, 0x19, 0x99, 0x54, 0x8a, 0x02, 0x2a, 0xe3, 0xdd, 0xb1, 0x3c, 0xb1, 0xf6, 0x23, 0x3b, 0xb3,
    -	0xc2, 0xe2, 0x04, 0x17, 0x6e, 0x54, 0xc1, 0x95, 0xbf, 0x02, 0xaa, 0xe0, 0xc2, 0x91, 0x03, 0x15,
    -	0x6e, 0x29, 0x4e, 0x39, 0xa9, 0x88, 0x38, 0xc3, 0x91, 0x83, 0x4f, 0xaf, 0x66, 0x76, 0xa4, 0xfd,
    -	0xd0, 0xca, 0xb1, 0x2f, 0xba, 0x69, 0xa6, 0xbb, 0x7f, 0xdd, 0x33, 0xdd, 0xfd, 0x9b, 0x5e, 0x81,
    -	0x1f, 0x5c, 0x3e, 0x66, 0x06, 0xf5, 0x6a, 0x97, 0xe1, 0x19, 0x09, 0x5c, 0xc2, 0x09, 0xab, 0x75,
    -	0x88, 0x6b, 0x7b, 0x41, 0x4d, 0x09, 0xb0, 0x4f, 0x6b, 0x8c, 0x7b, 0x01, 0x6e, 0x91, 0x5a, 0xe7,
    -	0x7e, 0xad, 0x45, 0x5c, 0x12, 0x60, 0x4e, 0x6c, 0xc3, 0x0f, 0x3c, 0xee, 0xc1, 0x8d, 0x48, 0xcd,
    -	0xc0, 0x3e, 0x35, 0x94, 0x9a, 0xd1, 0xb9, 0xbf, 0xf9, 0x65, 0x8b, 0xf2, 0x8b, 0xf0, 0xcc, 0xb0,
    -	0x3c, 0xa7, 0xd6, 0xf2, 0x5a, 0x5e, 0x4d, 0x6a, 0x9f, 0x85, 0xe7, 0x72, 0x25, 0x17, 0xf2, 0x57,
    -	0x84, 0xb2, 0xa9, 0x27, 0x9c, 0x59, 0x5e, 0x90, 0xe7, 0x69, 0xf3, 0x61, 0xac, 0xe3, 0x60, 0xeb,
    -	0x82, 0xba, 0x24, 0xe8, 0xd6, 0xfc, 0xcb, 0x96, 0x34, 0x0a, 0x08, 0xf3, 0xc2, 0xc0, 0x22, 0x77,
    -	0xb2, 0x62, 0x35, 0x87, 0x70, 0x9c, 0xe7, 0xab, 0x36, 0xce, 0x2a, 0x08, 0x5d, 0x4e, 0x9d, 0x51,
    -	0x37, 0x8f, 0x3e, 0x66, 0xc0, 0xac, 0x0b, 0xe2, 0xe0, 0xac, 0x9d, 0xfe, 0x57, 0x0d, 0x2c, 0xec,
    -	0x35, 0x0f, 0xf6, 0x03, 0xda, 0x21, 0x01, 0x7c, 0x05, 0xe6, 0x45, 0x44, 0x36, 0xe6, 0xb8, 0xac,
    -	0x6d, 0x69, 0xdb, 0xa5, 0x9d, 0xaf, 0x8c, 0xf8, 0x7e, 0x87, 0xc0, 0x86, 0x7f, 0xd9, 0x12, 0x1b,
    -	0xcc, 0x10, 0xda, 0x46, 0xe7, 0xbe, 0x71, 0x7c, 0xf6, 0x9a, 0x58, 0xbc, 0x41, 0x38, 0x36, 0xe1,
    -	0xdb, 0x5e, 0x75, 0xaa, 0xdf, 0xab, 0x82, 0x78, 0x0f, 0x0d, 0x51, 0xe1, 0x33, 0x50, 0x64, 0x3e,
    -	0xb1, 0xca, 0xd3, 0x12, 0xfd, 0x33, 0x23, 0x37, 0x7b, 0xc6, 0x30, 0xa2, 0xa6, 0x4f, 0x2c, 0x73,
    -	0x51, 0x21, 0x16, 0xc5, 0x0a, 0x49, 0x7b, 0xfd, 0x2f, 0x1a, 0x58, 0x1a, 0x6a, 0x1d, 0x52, 0xc6,
    -	0xe1, 0xcf, 0x46, 0x62, 0x37, 0x6e, 0x17, 0xbb, 0xb0, 0x96, 0x91, 0xaf, 0x28, 0x3f, 0xf3, 0x83,
    -	0x9d, 0x44, 0xdc, 0x75, 0x30, 0x43, 0x39, 0x71, 0x58, 0x79, 0x7a, 0xab, 0xb0, 0x5d, 0xda, 0xd9,
    -	0xfa, 0x58, 0xe0, 0xe6, 0x92, 0x02, 0x9b, 0x39, 0x10, 0x66, 0x28, 0xb2, 0xd6, 0xff, 0x55, 0x4c,
    -	0x84, 0x2d, 0x8e, 0x03, 0x9f, 0x80, 0x7b, 0x98, 0x73, 0x6c, 0x5d, 0x20, 0xf2, 0x26, 0xa4, 0x01,
    -	0xb1, 0x65, 0xf0, 0xf3, 0x26, 0xec, 0xf7, 0xaa, 0xf7, 0x76, 0x53, 0x12, 0x94, 0xd1, 0x14, 0xb6,
    -	0xbe, 0x67, 0x1f, 0xb8, 0xe7, 0xde, 0xb1, 0xdb, 0xf0, 0x42, 0x97, 0xcb, 0x6b, 0x55, 0xb6, 0x27,
    -	0x29, 0x09, 0xca, 0x68, 0x42, 0x0b, 0xac, 0x77, 0xbc, 0x76, 0xe8, 0x90, 0x43, 0x7a, 0x4e, 0xac,
    -	0xae, 0xd5, 0x26, 0x0d, 0xcf, 0x26, 0xac, 0x5c, 0xd8, 0x2a, 0x6c, 0x2f, 0x98, 0xb5, 0x7e, 0xaf,
    -	0xba, 0xfe, 0x22, 0x47, 0x7e, 0xdd, 0xab, 0xae, 0xe5, 0xec, 0xa3, 0x5c, 0x30, 0xf8, 0x14, 0x2c,
    -	0xab, 0xcb, 0xd9, 0xc3, 0x3e, 0xb6, 0x28, 0xef, 0x96, 0x8b, 0x32, 0xc2, 0xb5, 0x7e, 0xaf, 0xba,
    -	0xdc, 0x4c, 0x8b, 0x50, 0x56, 0x17, 0x3e, 0x07, 0x4b, 0xe7, 0xec, 0x87, 0x81, 0x17, 0xfa, 0x27,
    -	0x5e, 0x9b, 0x5a, 0xdd, 0xf2, 0xcc, 0x96, 0xb6, 0xbd, 0x60, 0xea, 0xfd, 0x5e, 0x75, 0xe9, 0x59,
    -	0x33, 0x21, 0xb8, 0xce, 0x6e, 0xa0, 0xb4, 0x21, 0x7c, 0x05, 0x96, 0xb8, 0x77, 0x49, 0x5c, 0x71,
    -	0x75, 0x84, 0x71, 0x56, 0x9e, 0x95, 0x69, 0xfc, 0x74, 0x4c, 0x1a, 0x4f, 0x13, 0xba, 0xe6, 0x86,
    -	0xca, 0xe4, 0x52, 0x72, 0x97, 0xa1, 0x34, 0x20, 0xdc, 0x03, 0xab, 0x41, 0x94, 0x17, 0x86, 0x88,
    -	0x1f, 0x9e, 0xb5, 0x29, 0xbb, 0x28, 0xcf, 0xc9, 0xc3, 0x6e, 0xf4, 0x7b, 0xd5, 0x55, 0x94, 0x15,
    -	0xa2, 0x51, 0x7d, 0xf8, 0x10, 0x2c, 0x32, 0x72, 0x48, 0xdd, 0xf0, 0x2a, 0x4a, 0xe7, 0xbc, 0xb4,
    -	0x5f, 0xe9, 0xf7, 0xaa, 0x8b, 0xcd, 0x7a, 0xbc, 0x8f, 0x52, 0x5a, 0xfa, 0x9f, 0x35, 0x30, 0xb7,
    -	0xd7, 0x3c, 0x38, 0xf2, 0x6c, 0x32, 0x81, 0x0e, 0xde, 0x4f, 0x75, 0xb0, 0x3e, 0xbe, 0x11, 0x44,
    -	0x3c, 0x63, 0xfb, 0xf7, 0x7f, 0x51, 0xff, 0x0a, 0x1d, 0xc5, 0x3d, 0x5b, 0xa0, 0xe8, 0x62, 0x87,
    -	0xc8, 0xa8, 0x17, 0x62, 0x9b, 0x23, 0xec, 0x10, 0x24, 0x25, 0xf0, 0x5b, 0x60, 0xd6, 0xf5, 0x6c,
    -	0x72, 0xb0, 0x2f, 0x7d, 0x2f, 0x98, 0xf7, 0x94, 0xce, 0xec, 0x91, 0xdc, 0x45, 0x4a, 0x2a, 0x6e,
    -	0x91, 0x7b, 0xbe, 0xd7, 0xf6, 0x5a, 0xdd, 0x1f, 0x91, 0xee, 0xa0, 0xa4, 0xe5, 0x2d, 0x9e, 0x26,
    -	0xf6, 0x51, 0x4a, 0x0b, 0xfe, 0x1c, 0x94, 0x70, 0xbb, 0xed, 0x59, 0x98, 0xe3, 0xb3, 0x36, 0x91,
    -	0x75, 0x5a, 0xda, 0xf9, 0x62, 0xcc, 0xf1, 0xa2, 0x16, 0x10, 0x7e, 0x91, 0x22, 0x7e, 0x66, 0x2e,
    -	0xf7, 0x7b, 0xd5, 0xd2, 0x6e, 0x0c, 0x81, 0x92, 0x78, 0xfa, 0x9f, 0x34, 0x50, 0x52, 0x07, 0x9e,
    -	0x00, 0x5d, 0xed, 0xa5, 0xe9, 0xaa, 0x72, 0x73, 0x96, 0xc6, 0x90, 0xd5, 0x2f, 0x86, 0x11, 0x4b,
    -	0xa6, 0x3a, 0x06, 0x73, 0xb6, 0x4c, 0x15, 0x2b, 0x6b, 0x12, 0xf5, 0xb3, 0x9b, 0x51, 0x15, 0x11,
    -	0x2e, 0x2b, 0xec, 0xb9, 0x68, 0xcd, 0xd0, 0x00, 0x45, 0xff, 0x7f, 0x01, 0xc0, 0xbd, 0xe6, 0x41,
    -	0x86, 0x06, 0x26, 0x50, 0xc2, 0x14, 0x2c, 0x8a, 0x52, 0x19, 0x14, 0x83, 0x2a, 0xe5, 0x07, 0xb7,
    -	0xbc, 0x7f, 0x7c, 0x46, 0xda, 0x4d, 0xd2, 0x26, 0x16, 0xf7, 0x82, 0xa8, 0xaa, 0x8e, 0x12, 0x60,
    -	0x28, 0x05, 0x0d, 0xf7, 0xc1, 0xca, 0x80, 0xd5, 0xda, 0x98, 0x31, 0x51, 0xcd, 0xe5, 0x82, 0xac,
    -	0xde, 0xb2, 0x0a, 0x71, 0xa5, 0x99, 0x91, 0xa3, 0x11, 0x0b, 0xf8, 0x12, 0xcc, 0x5b, 0x49, 0x02,
    -	0xfd, 0x48, 0xb1, 0x18, 0x83, 0x69, 0xc4, 0xf8, 0x71, 0x88, 0x5d, 0x4e, 0x79, 0xd7, 0x5c, 0x14,
    -	0x85, 0x32, 0x64, 0xda, 0x21, 0x1a, 0x64, 0x60, 0xd5, 0xc1, 0x57, 0xd4, 0x09, 0x9d, 0xa8, 0xa4,
    -	0x9b, 0xf4, 0x57, 0x44, 0xd2, 0xec, 0xdd, 0x5d, 0x48, 0x9a, 0x6b, 0x64, 0xc1, 0xd0, 0x28, 0xbe,
    -	0xfe, 0x0f, 0x0d, 0x7c, 0x32, 0x9a, 0xf8, 0x09, 0xb4, 0xc5, 0x51, 0xba, 0x2d, 0x3e, 0x1f, 0x5f,
    -	0xc0, 0x99, 0xd8, 0xc6, 0x74, 0xc8, 0xef, 0x66, 0xc1, 0x62, 0x32, 0x7d, 0x13, 0xa8, 0xdd, 0xef,
    -	0x81, 0x92, 0x1f, 0x78, 0x1d, 0xca, 0xa8, 0xe7, 0x92, 0x40, 0x31, 0xe1, 0x9a, 0x32, 0x29, 0x9d,
    -	0xc4, 0x22, 0x94, 0xd4, 0x83, 0x2d, 0x00, 0x7c, 0x1c, 0x60, 0x87, 0x70, 0xd1, 0xbf, 0x05, 0x79,
    -	0xfc, 0x07, 0x63, 0x8e, 0x9f, 0x3c, 0x91, 0x71, 0x32, 0xb4, 0xaa, 0xbb, 0x3c, 0xe8, 0xc6, 0xd1,
    -	0xc5, 0x02, 0x94, 0x80, 0x86, 0x97, 0x60, 0x29, 0x20, 0x56, 0x1b, 0x53, 0x47, 0xbd, 0xd9, 0x45,
    -	0x19, 0x61, 0x5d, 0x3c, 0xa0, 0x28, 0x29, 0xb8, 0xee, 0x55, 0xbf, 0x1a, 0x9d, 0xba, 0x8d, 0x13,
    -	0x12, 0x30, 0xca, 0x38, 0x71, 0x79, 0x54, 0x30, 0x29, 0x1b, 0x94, 0xc6, 0x16, 0x4c, 0xef, 0x88,
    -	0x27, 0xf0, 0xd8, 0xe7, 0xd4, 0x73, 0x59, 0x79, 0x26, 0x66, 0xfa, 0x46, 0x62, 0x1f, 0xa5, 0xb4,
    -	0xe0, 0x21, 0x58, 0x17, 0xcc, 0xfc, 0xcb, 0xc8, 0x41, 0xfd, 0xca, 0xc7, 0xae, 0xb8, 0xa5, 0xf2,
    -	0xac, 0x7c, 0x6d, 0xcb, 0x62, 0xf4, 0xd9, 0xcd, 0x91, 0xa3, 0x5c, 0x2b, 0xf8, 0x12, 0xac, 0x46,
    -	0xb3, 0x8f, 0x49, 0x5d, 0x9b, 0xba, 0x2d, 0x31, 0xf9, 0xc8, 0x87, 0x7f, 0xc1, 0xfc, 0x42, 0x74,
    -	0xc4, 0x8b, 0xac, 0xf0, 0x3a, 0x6f, 0x13, 0x8d, 0x82, 0xc0, 0x37, 0x60, 0x55, 0x7a, 0x24, 0xb6,
    -	0xa2, 0x13, 0x4a, 0x58, 0x79, 0x5e, 0xa6, 0x6e, 0x3b, 0x99, 0x3a, 0x71, 0x75, 0xd1, 0xd4, 0x12,
    -	0x91, 0xce, 0x80, 0x9c, 0x4e, 0x49, 0xe0, 0x98, 0xdf, 0x54, 0xf9, 0x5a, 0xdd, 0xcd, 0x42, 0xa1,
    -	0x51, 0xf4, 0xcd, 0xa7, 0x60, 0x39, 0x93, 0x70, 0xb8, 0x02, 0x0a, 0x97, 0xa4, 0x1b, 0x3d, 0xcb,
    -	0x48, 0xfc, 0x84, 0xeb, 0x60, 0xa6, 0x83, 0xdb, 0x21, 0x89, 0x8a, 0x0f, 0x45, 0x8b, 0x27, 0xd3,
    -	0x8f, 0x35, 0xfd, 0x6f, 0x1a, 0x48, 0xd1, 0xd9, 0x04, 0x5a, 0xfa, 0x79, 0xba, 0xa5, 0x3f, 0xbd,
    -	0x45, 0x4d, 0x8f, 0x69, 0xe6, 0xdf, 0x68, 0x60, 0x31, 0x39, 0xe2, 0xc1, 0xef, 0x82, 0x79, 0x1c,
    -	0xda, 0x94, 0xb8, 0xd6, 0x60, 0x2a, 0x19, 0x06, 0xb2, 0xab, 0xf6, 0xd1, 0x50, 0x43, 0x0c, 0x80,
    -	0xe4, 0xca, 0xa7, 0x01, 0x16, 0x45, 0xd6, 0x24, 0x96, 0xe7, 0xda, 0x4c, 0xde, 0x50, 0x21, 0x62,
    -	0xc6, 0x7a, 0x56, 0x88, 0x46, 0xf5, 0xf5, 0x3f, 0x4e, 0x83, 0x95, 0xa8, 0x36, 0xa2, 0xd1, 0xdf,
    -	0x21, 0x2e, 0x9f, 0x00, 0xa9, 0x34, 0x52, 0x33, 0xdd, 0x77, 0x6e, 0x1c, 0x7a, 0xe2, 0xc0, 0xc6,
    -	0x0d, 0x77, 0xf0, 0x27, 0x60, 0x96, 0x71, 0xcc, 0x43, 0x26, 0x9f, 0xba, 0xd2, 0xce, 0x97, 0xb7,
    -	0x05, 0x94, 0x46, 0xf1, 0x5c, 0x17, 0xad, 0x91, 0x02, 0xd3, 0xff, 0xae, 0x81, 0xf5, 0xac, 0xc9,
    -	0x04, 0x2a, 0xec, 0x30, 0x5d, 0x61, 0xdf, 0xbe, 0xe5, 0x61, 0xc6, 0x7d, 0x01, 0x6a, 0xe0, 0x93,
    -	0x91, 0x73, 0xcb, 0x97, 0x54, 0xf0, 0x92, 0x9f, 0x61, 0xbf, 0xa3, 0x78, 0x22, 0x96, 0xbc, 0x74,
    -	0x92, 0x23, 0x47, 0xb9, 0x56, 0xf0, 0x35, 0x58, 0xa1, 0x6e, 0x9b, 0xba, 0x44, 0x3d, 0xbc, 0x71,
    -	0x7e, 0x73, 0xc9, 0x23, 0x8b, 0x2c, 0x93, 0xbb, 0x2e, 0xe6, 0x93, 0x83, 0x0c, 0x0a, 0x1a, 0xc1,
    -	0xd5, 0xff, 0x99, 0x93, 0x19, 0x39, 0x33, 0x8a, 0x16, 0x92, 0x3b, 0x24, 0x18, 0x69, 0x21, 0xb5,
    -	0x8f, 0x86, 0x1a, 0xb2, 0x6e, 0xe4, 0x55, 0xa8, 0x40, 0x6f, 0x5d, 0x37, 0xd2, 0x28, 0x51, 0x37,
    -	0x72, 0x8d, 0x14, 0x98, 0x08, 0x42, 0xcc, 0x64, 0x89, 0xd9, 0x6b, 0x18, 0xc4, 0x91, 0xda, 0x47,
    -	0x43, 0x0d, 0xfd, 0xbf, 0x85, 0x9c, 0x04, 0xc9, 0x02, 0x4c, 0x9c, 0x66, 0xf0, 0x95, 0x9e, 0x3d,
    -	0x8d, 0x3d, 0x3c, 0x8d, 0x0d, 0xff, 0xa0, 0x01, 0x88, 0x87, 0x10, 0x8d, 0x41, 0x81, 0x46, 0x55,
    -	0x54, 0xbf, 0x53, 0x4b, 0x18, 0xbb, 0x23, 0x38, 0xd1, 0x6b, 0xbc, 0xa9, 0xfc, 0xc3, 0x51, 0x05,
    -	0x94, 0xe3, 0x1c, 0xda, 0xa0, 0x14, 0xed, 0xd6, 0x83, 0xc0, 0x0b, 0x54, 0x7b, 0xea, 0x37, 0xc6,
    -	0x22, 0x35, 0xcd, 0x8a, 0xfc, 0xb8, 0x89, 0x4d, 0xaf, 0x7b, 0xd5, 0x52, 0x42, 0x8e, 0x92, 0xb0,
    -	0xc2, 0x8b, 0x4d, 0x62, 0x2f, 0xc5, 0xbb, 0x79, 0xd9, 0x27, 0xe3, 0xbd, 0x24, 0x60, 0x37, 0xeb,
    -	0xe0, 0x1b, 0x63, 0xae, 0xe5, 0x4e, 0x6f, 0xd6, 0x6f, 0x35, 0x90, 0xf4, 0x01, 0x0f, 0x41, 0x91,
    -	0x53, 0xd5, 0x75, 0xe9, 0x0f, 0xc0, 0x1b, 0x88, 0xe4, 0x94, 0x3a, 0x24, 0xa6, 0x42, 0xb1, 0x42,
    -	0x12, 0x05, 0x7e, 0x0e, 0xe6, 0x1c, 0xc2, 0x18, 0x6e, 0x29, 0xcf, 0xf1, 0xe7, 0x50, 0x23, 0xda,
    -	0x46, 0x03, 0xb9, 0xfe, 0x08, 0xac, 0xe5, 0x7c, 0x56, 0xc2, 0x2a, 0x98, 0xb1, 0xe4, 0x9f, 0x01,
    -	0x22, 0xa0, 0x19, 0x73, 0x41, 0x30, 0xca, 0x9e, 0xfc, 0x17, 0x20, 0xda, 0x37, 0xbf, 0xff, 0xf6,
    -	0x43, 0x65, 0xea, 0xdd, 0x87, 0xca, 0xd4, 0xfb, 0x0f, 0x95, 0xa9, 0x5f, 0xf7, 0x2b, 0xda, 0xdb,
    -	0x7e, 0x45, 0x7b, 0xd7, 0xaf, 0x68, 0xef, 0xfb, 0x15, 0xed, 0xdf, 0xfd, 0x8a, 0xf6, 0xfb, 0xff,
    -	0x54, 0xa6, 0x7e, 0xba, 0x91, 0xfb, 0x77, 0xea, 0xd7, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0d, 0xf9,
    -	0xe3, 0xd5, 0x7f, 0x15, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/storage/v1/generated.proto", fileDescriptor_662262cc70094b41)
    +}
    +
    +var fileDescriptor_662262cc70094b41 = []byte{
    +	// 1655 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xbd, 0x6f, 0x1b, 0xc9,
    +	0x15, 0xd7, 0x8a, 0xd4, 0xd7, 0x50, 0xb2, 0xa4, 0x91, 0xe4, 0x30, 0x2a, 0x48, 0x61, 0xed, 0x24,
    +	0xb2, 0x13, 0x2f, 0x6d, 0xd9, 0x31, 0x0c, 0x07, 0x2e, 0xb4, 0x12, 0x1d, 0x0b, 0x11, 0x25, 0x65,
    +	0xa8, 0x18, 0x46, 0x90, 0x04, 0x1e, 0xed, 0x8e, 0xa8, 0xb1, 0xb8, 0x1f, 0xde, 0x19, 0x2a, 0x62,
    +	0xaa, 0xa4, 0x49, 0x17, 0x20, 0x69, 0xf3, 0x57, 0x24, 0x40, 0xd2, 0x5c, 0x79, 0xc5, 0xc1, 0xd7,
    +	0x19, 0x57, 0xb9, 0x22, 0xce, 0xbc, 0xfa, 0xae, 0xbc, 0x42, 0xd5, 0x61, 0x66, 0x87, 0xdc, 0x0f,
    +	0x2e, 0x65, 0xa9, 0x61, 0xc7, 0x99, 0xf7, 0xde, 0xef, 0xbd, 0x99, 0xf7, 0xde, 0x6f, 0xde, 0x12,
    +	0xfc, 0xe4, 0xf4, 0x09, 0x33, 0xa8, 0x57, 0xc1, 0x3e, 0xad, 0x30, 0xee, 0x05, 0xb8, 0x41, 0x2a,
    +	0x67, 0x0f, 0x2a, 0x0d, 0xe2, 0x92, 0x00, 0x73, 0x62, 0x1b, 0x7e, 0xe0, 0x71, 0x0f, 0xae, 0x84,
    +	0x6a, 0x06, 0xf6, 0xa9, 0xa1, 0xd4, 0x8c, 0xb3, 0x07, 0xab, 0xf7, 0x1a, 0x94, 0x9f, 0xb4, 0x8e,
    +	0x0c, 0xcb, 0x73, 0x2a, 0x0d, 0xaf, 0xe1, 0x55, 0xa4, 0xf6, 0x51, 0xeb, 0x58, 0xae, 0xe4, 0x42,
    +	0xfe, 0x0a, 0x51, 0x56, 0xf5, 0x98, 0x33, 0xcb, 0x0b, 0xb2, 0x3c, 0xad, 0x3e, 0x8a, 0x74, 0x1c,
    +	0x6c, 0x9d, 0x50, 0x97, 0x04, 0xed, 0x8a, 0x7f, 0xda, 0x90, 0x46, 0x01, 0x61, 0x5e, 0x2b, 0xb0,
    +	0xc8, 0xb5, 0xac, 0x58, 0xc5, 0x21, 0x1c, 0x67, 0xf9, 0xaa, 0x0c, 0xb3, 0x0a, 0x5a, 0x2e, 0xa7,
    +	0xce, 0xa0, 0x9b, 0xc7, 0x9f, 0x32, 0x60, 0xd6, 0x09, 0x71, 0x70, 0xda, 0x4e, 0xff, 0xbf, 0x06,
    +	0x66, 0xb6, 0xea, 0x3b, 0xdb, 0x01, 0x3d, 0x23, 0x01, 0x7c, 0x0d, 0xa6, 0x45, 0x44, 0x36, 0xe6,
    +	0xb8, 0xa8, 0xad, 0x69, 0xeb, 0x85, 0x8d, 0xfb, 0x46, 0x74, 0xbf, 0x7d, 0x60, 0xc3, 0x3f, 0x6d,
    +	0x88, 0x0d, 0x66, 0x08, 0x6d, 0xe3, 0xec, 0x81, 0xb1, 0x7f, 0xf4, 0x86, 0x58, 0xbc, 0x46, 0x38,
    +	0x36, 0xe1, 0xbb, 0x4e, 0x79, 0xac, 0xdb, 0x29, 0x83, 0x68, 0x0f, 0xf5, 0x51, 0xe1, 0x73, 0x90,
    +	0x67, 0x3e, 0xb1, 0x8a, 0xe3, 0x12, 0xfd, 0xb6, 0x91, 0x99, 0x3d, 0xa3, 0x1f, 0x51, 0xdd, 0x27,
    +	0x96, 0x39, 0xab, 0x10, 0xf3, 0x62, 0x85, 0xa4, 0xbd, 0xfe, 0x3f, 0x0d, 0xcc, 0xf5, 0xb5, 0x76,
    +	0x29, 0xe3, 0xf0, 0x0f, 0x03, 0xb1, 0x1b, 0x57, 0x8b, 0x5d, 0x58, 0xcb, 0xc8, 0x17, 0x94, 0x9f,
    +	0xe9, 0xde, 0x4e, 0x2c, 0xee, 0x2a, 0x98, 0xa0, 0x9c, 0x38, 0xac, 0x38, 0xbe, 0x96, 0x5b, 0x2f,
    +	0x6c, 0xac, 0x7d, 0x2a, 0x70, 0x73, 0x4e, 0x81, 0x4d, 0xec, 0x08, 0x33, 0x14, 0x5a, 0xeb, 0x5f,
    +	0xe5, 0x63, 0x61, 0x8b, 0xe3, 0xc0, 0xa7, 0xe0, 0x06, 0xe6, 0x1c, 0x5b, 0x27, 0x88, 0xbc, 0x6d,
    +	0xd1, 0x80, 0xd8, 0x32, 0xf8, 0x69, 0x13, 0x76, 0x3b, 0xe5, 0x1b, 0x9b, 0x09, 0x09, 0x4a, 0x69,
    +	0x0a, 0x5b, 0xdf, 0xb3, 0x77, 0xdc, 0x63, 0x6f, 0xdf, 0xad, 0x79, 0x2d, 0x97, 0xcb, 0x6b, 0x55,
    +	0xb6, 0x07, 0x09, 0x09, 0x4a, 0x69, 0x42, 0x0b, 0x2c, 0x9f, 0x79, 0xcd, 0x96, 0x43, 0x76, 0xe9,
    +	0x31, 0xb1, 0xda, 0x56, 0x93, 0xd4, 0x3c, 0x9b, 0xb0, 0x62, 0x6e, 0x2d, 0xb7, 0x3e, 0x63, 0x56,
    +	0xba, 0x9d, 0xf2, 0xf2, 0xcb, 0x0c, 0xf9, 0x45, 0xa7, 0xbc, 0x94, 0xb1, 0x8f, 0x32, 0xc1, 0xe0,
    +	0x33, 0x30, 0xaf, 0x2e, 0x67, 0x0b, 0xfb, 0xd8, 0xa2, 0xbc, 0x5d, 0xcc, 0xcb, 0x08, 0x97, 0xba,
    +	0x9d, 0xf2, 0x7c, 0x3d, 0x29, 0x42, 0x69, 0x5d, 0xf8, 0x02, 0xcc, 0x1d, 0xb3, 0x5f, 0x07, 0x5e,
    +	0xcb, 0x3f, 0xf0, 0x9a, 0xd4, 0x6a, 0x17, 0x27, 0xd6, 0xb4, 0xf5, 0x19, 0x53, 0xef, 0x76, 0xca,
    +	0x73, 0xcf, 0xeb, 0x31, 0xc1, 0x45, 0x7a, 0x03, 0x25, 0x0d, 0xe1, 0x6b, 0x30, 0xc7, 0xbd, 0x53,
    +	0xe2, 0x8a, 0xab, 0x23, 0x8c, 0xb3, 0xe2, 0xa4, 0x4c, 0xe3, 0xad, 0x21, 0x69, 0x3c, 0x8c, 0xe9,
    +	0x9a, 0x2b, 0x2a, 0x93, 0x73, 0xf1, 0x5d, 0x86, 0x92, 0x80, 0x70, 0x0b, 0x2c, 0x06, 0x61, 0x5e,
    +	0x18, 0x22, 0x7e, 0xeb, 0xa8, 0x49, 0xd9, 0x49, 0x71, 0x4a, 0x1e, 0x76, 0xa5, 0xdb, 0x29, 0x2f,
    +	0xa2, 0xb4, 0x10, 0x0d, 0xea, 0xc3, 0x47, 0x60, 0x96, 0x91, 0x5d, 0xea, 0xb6, 0xce, 0xc3, 0x74,
    +	0x4e, 0x4b, 0xfb, 0x85, 0x6e, 0xa7, 0x3c, 0x5b, 0xaf, 0x46, 0xfb, 0x28, 0xa1, 0xa5, 0xff, 0x57,
    +	0x03, 0x53, 0x5b, 0xf5, 0x9d, 0x3d, 0xcf, 0x26, 0x23, 0xe8, 0xe0, 0xed, 0x44, 0x07, 0xeb, 0xc3,
    +	0x1b, 0x41, 0xc4, 0x33, 0xb4, 0x7f, 0xbf, 0x0b, 0xfb, 0x57, 0xe8, 0x28, 0xee, 0x59, 0x03, 0x79,
    +	0x17, 0x3b, 0x44, 0x46, 0x3d, 0x13, 0xd9, 0xec, 0x61, 0x87, 0x20, 0x29, 0x81, 0x3f, 0x05, 0x93,
    +	0xae, 0x67, 0x93, 0x9d, 0x6d, 0xe9, 0x7b, 0xc6, 0xbc, 0xa1, 0x74, 0x26, 0xf7, 0xe4, 0x2e, 0x52,
    +	0x52, 0x71, 0x8b, 0xdc, 0xf3, 0xbd, 0xa6, 0xd7, 0x68, 0xff, 0x86, 0xb4, 0x7b, 0x25, 0x2d, 0x6f,
    +	0xf1, 0x30, 0xb6, 0x8f, 0x12, 0x5a, 0xf0, 0x8f, 0xa0, 0x80, 0x9b, 0x4d, 0xcf, 0xc2, 0x1c, 0x1f,
    +	0x35, 0x89, 0xac, 0xd3, 0xc2, 0xc6, 0xdd, 0x21, 0xc7, 0x0b, 0x5b, 0x40, 0xf8, 0x45, 0x8a, 0xf8,
    +	0x99, 0x39, 0xdf, 0xed, 0x94, 0x0b, 0x9b, 0x11, 0x04, 0x8a, 0xe3, 0xe9, 0xff, 0xd1, 0x40, 0x41,
    +	0x1d, 0x78, 0x04, 0x74, 0xb5, 0x95, 0xa4, 0xab, 0xd2, 0xe5, 0x59, 0x1a, 0x42, 0x56, 0x7f, 0xea,
    +	0x47, 0x2c, 0x99, 0x6a, 0x1f, 0x4c, 0xd9, 0x32, 0x55, 0xac, 0xa8, 0x49, 0xd4, 0xdb, 0x97, 0xa3,
    +	0x2a, 0x22, 0x9c, 0x57, 0xd8, 0x53, 0xe1, 0x9a, 0xa1, 0x1e, 0x8a, 0xfe, 0x7d, 0x0e, 0xc0, 0xad,
    +	0xfa, 0x4e, 0x8a, 0x06, 0x46, 0x50, 0xc2, 0x14, 0xcc, 0x8a, 0x52, 0xe9, 0x15, 0x83, 0x2a, 0xe5,
    +	0x87, 0x57, 0xbc, 0x7f, 0x7c, 0x44, 0x9a, 0x75, 0xd2, 0x24, 0x16, 0xf7, 0x82, 0xb0, 0xaa, 0xf6,
    +	0x62, 0x60, 0x28, 0x01, 0x0d, 0xb7, 0xc1, 0x42, 0x8f, 0xd5, 0x9a, 0x98, 0x31, 0x51, 0xcd, 0xc5,
    +	0x9c, 0xac, 0xde, 0xa2, 0x0a, 0x71, 0xa1, 0x9e, 0x92, 0xa3, 0x01, 0x0b, 0xf8, 0x0a, 0x4c, 0x5b,
    +	0x71, 0x02, 0xfd, 0x44, 0xb1, 0x18, 0xbd, 0x69, 0xc4, 0xf8, 0x6d, 0x0b, 0xbb, 0x9c, 0xf2, 0xb6,
    +	0x39, 0x2b, 0x0a, 0xa5, 0xcf, 0xb4, 0x7d, 0x34, 0xc8, 0xc0, 0xa2, 0x83, 0xcf, 0xa9, 0xd3, 0x72,
    +	0xc2, 0x92, 0xae, 0xd3, 0xbf, 0x10, 0x49, 0xb3, 0xd7, 0x77, 0x21, 0x69, 0xae, 0x96, 0x06, 0x43,
    +	0x83, 0xf8, 0xfa, 0x17, 0x1a, 0xb8, 0x39, 0x98, 0xf8, 0x11, 0xb4, 0xc5, 0x5e, 0xb2, 0x2d, 0xee,
    +	0x0c, 0x2f, 0xe0, 0x54, 0x6c, 0x43, 0x3a, 0xe4, 0x1f, 0x93, 0x60, 0x36, 0x9e, 0xbe, 0x11, 0xd4,
    +	0xee, 0x2f, 0x41, 0xc1, 0x0f, 0xbc, 0x33, 0xca, 0xa8, 0xe7, 0x92, 0x40, 0x31, 0xe1, 0x92, 0x32,
    +	0x29, 0x1c, 0x44, 0x22, 0x14, 0xd7, 0x83, 0x0d, 0x00, 0x7c, 0x1c, 0x60, 0x87, 0x70, 0xd1, 0xbf,
    +	0x39, 0x79, 0xfc, 0x87, 0x43, 0x8e, 0x1f, 0x3f, 0x91, 0x71, 0xd0, 0xb7, 0xaa, 0xba, 0x3c, 0x68,
    +	0x47, 0xd1, 0x45, 0x02, 0x14, 0x83, 0x86, 0xa7, 0x60, 0x2e, 0x20, 0x56, 0x13, 0x53, 0x47, 0xbd,
    +	0xd9, 0x79, 0x19, 0x61, 0x55, 0x3c, 0xa0, 0x28, 0x2e, 0xb8, 0xe8, 0x94, 0xef, 0x0f, 0x4e, 0xdd,
    +	0xc6, 0x01, 0x09, 0x18, 0x65, 0x9c, 0xb8, 0x3c, 0x2c, 0x98, 0x84, 0x0d, 0x4a, 0x62, 0x0b, 0xa6,
    +	0x77, 0xc4, 0x13, 0xb8, 0xef, 0x73, 0xea, 0xb9, 0xac, 0x38, 0x11, 0x31, 0x7d, 0x2d, 0xb6, 0x8f,
    +	0x12, 0x5a, 0x70, 0x17, 0x2c, 0x0b, 0x66, 0xfe, 0x73, 0xe8, 0xa0, 0x7a, 0xee, 0x63, 0x57, 0xdc,
    +	0x52, 0x71, 0x52, 0xbe, 0xb6, 0x45, 0x31, 0xfa, 0x6c, 0x66, 0xc8, 0x51, 0xa6, 0x15, 0x7c, 0x05,
    +	0x16, 0xc3, 0xd9, 0xc7, 0xa4, 0xae, 0x4d, 0xdd, 0x86, 0x98, 0x7c, 0xe4, 0xc3, 0x3f, 0x63, 0xde,
    +	0x15, 0x1d, 0xf1, 0x32, 0x2d, 0xbc, 0xc8, 0xda, 0x44, 0x83, 0x20, 0xf0, 0x2d, 0x58, 0x94, 0x1e,
    +	0x89, 0xad, 0xe8, 0x84, 0x12, 0x56, 0x9c, 0x96, 0xa9, 0x5b, 0x8f, 0xa7, 0x4e, 0x5c, 0x5d, 0x38,
    +	0xb5, 0x84, 0xa4, 0xd3, 0x23, 0xa7, 0x43, 0x12, 0x38, 0xe6, 0x8f, 0x55, 0xbe, 0x16, 0x37, 0xd3,
    +	0x50, 0x68, 0x10, 0x7d, 0xf5, 0x19, 0x98, 0x4f, 0x25, 0x1c, 0x2e, 0x80, 0xdc, 0x29, 0x69, 0x87,
    +	0xcf, 0x32, 0x12, 0x3f, 0xe1, 0x32, 0x98, 0x38, 0xc3, 0xcd, 0x16, 0x09, 0x8b, 0x0f, 0x85, 0x8b,
    +	0xa7, 0xe3, 0x4f, 0x34, 0xfd, 0x33, 0x0d, 0x24, 0xe8, 0x6c, 0x04, 0x2d, 0xfd, 0x22, 0xd9, 0xd2,
    +	0xb7, 0xae, 0x50, 0xd3, 0x43, 0x9a, 0xf9, 0x6f, 0x1a, 0x98, 0x8d, 0x8f, 0x78, 0xf0, 0x17, 0x60,
    +	0x1a, 0xb7, 0x6c, 0x4a, 0x5c, 0xab, 0x37, 0x95, 0xf4, 0x03, 0xd9, 0x54, 0xfb, 0xa8, 0xaf, 0x21,
    +	0x06, 0x40, 0x72, 0xee, 0xd3, 0x00, 0x8b, 0x22, 0xab, 0x13, 0xcb, 0x73, 0x6d, 0x26, 0x6f, 0x28,
    +	0x17, 0x32, 0x63, 0x35, 0x2d, 0x44, 0x83, 0xfa, 0xfa, 0xbf, 0xc7, 0xc1, 0x42, 0x58, 0x1b, 0xe1,
    +	0xe8, 0xef, 0x10, 0x97, 0x8f, 0x80, 0x54, 0x6a, 0x89, 0x99, 0xee, 0xe7, 0x97, 0x0e, 0x3d, 0x51,
    +	0x60, 0xc3, 0x86, 0x3b, 0xf8, 0x3b, 0x30, 0xc9, 0x38, 0xe6, 0x2d, 0x26, 0x9f, 0xba, 0xc2, 0xc6,
    +	0xbd, 0xab, 0x02, 0x4a, 0xa3, 0x68, 0xae, 0x0b, 0xd7, 0x48, 0x81, 0xe9, 0x9f, 0x6b, 0x60, 0x39,
    +	0x6d, 0x32, 0x82, 0x0a, 0xdb, 0x4d, 0x56, 0xd8, 0xcf, 0xae, 0x78, 0x98, 0x61, 0x5f, 0x80, 0x1a,
    +	0xb8, 0x39, 0x70, 0x6e, 0xf9, 0x92, 0x0a, 0x5e, 0xf2, 0x53, 0xec, 0xb7, 0x17, 0x4d, 0xc4, 0x92,
    +	0x97, 0x0e, 0x32, 0xe4, 0x28, 0xd3, 0x0a, 0xbe, 0x01, 0x0b, 0xd4, 0x6d, 0x52, 0x97, 0xa8, 0x87,
    +	0x37, 0xca, 0x6f, 0x26, 0x79, 0xa4, 0x91, 0x65, 0x72, 0x97, 0xc5, 0x7c, 0xb2, 0x93, 0x42, 0x41,
    +	0x03, 0xb8, 0xfa, 0x97, 0x19, 0x99, 0x91, 0x33, 0xa3, 0x68, 0x21, 0xb9, 0x43, 0x82, 0x81, 0x16,
    +	0x52, 0xfb, 0xa8, 0xaf, 0x21, 0xeb, 0x46, 0x5e, 0x85, 0x0a, 0xf4, 0xca, 0x75, 0x23, 0x8d, 0x62,
    +	0x75, 0x23, 0xd7, 0x48, 0x81, 0x89, 0x20, 0xc4, 0x4c, 0x16, 0x9b, 0xbd, 0xfa, 0x41, 0xec, 0xa9,
    +	0x7d, 0xd4, 0xd7, 0xd0, 0xbf, 0xcd, 0x65, 0x24, 0x48, 0x16, 0x60, 0xec, 0x34, 0xbd, 0xaf, 0xf4,
    +	0xf4, 0x69, 0xec, 0xfe, 0x69, 0x6c, 0xf8, 0x2f, 0x0d, 0x40, 0xdc, 0x87, 0xa8, 0xf5, 0x0a, 0x34,
    +	0xac, 0xa2, 0xea, 0xb5, 0x5a, 0xc2, 0xd8, 0x1c, 0xc0, 0x09, 0x5f, 0xe3, 0x55, 0xe5, 0x1f, 0x0e,
    +	0x2a, 0xa0, 0x0c, 0xe7, 0xd0, 0x06, 0x85, 0x70, 0xb7, 0x1a, 0x04, 0x5e, 0xa0, 0xda, 0x53, 0xbf,
    +	0x34, 0x16, 0xa9, 0x69, 0x96, 0xe4, 0xc7, 0x4d, 0x64, 0x7a, 0xd1, 0x29, 0x17, 0x62, 0x72, 0x14,
    +	0x87, 0x15, 0x5e, 0x6c, 0x12, 0x79, 0xc9, 0x5f, 0xcf, 0xcb, 0x36, 0x19, 0xee, 0x25, 0x06, 0xbb,
    +	0x5a, 0x05, 0x3f, 0x1a, 0x72, 0x2d, 0xd7, 0x7a, 0xb3, 0xfe, 0xae, 0x81, 0xb8, 0x0f, 0xb8, 0x0b,
    +	0xf2, 0x9c, 0xaa, 0xae, 0x4b, 0x7e, 0x00, 0x5e, 0x42, 0x24, 0x87, 0xd4, 0x21, 0x11, 0x15, 0x8a,
    +	0x15, 0x92, 0x28, 0xf0, 0x0e, 0x98, 0x72, 0x08, 0x63, 0xb8, 0xa1, 0x3c, 0x47, 0x9f, 0x43, 0xb5,
    +	0x70, 0x1b, 0xf5, 0xe4, 0xfa, 0x63, 0xb0, 0x94, 0xf1, 0x59, 0x09, 0xcb, 0x60, 0xc2, 0x92, 0x7f,
    +	0x06, 0x88, 0x80, 0x26, 0xcc, 0x19, 0xc1, 0x28, 0x5b, 0xf2, 0x5f, 0x80, 0x70, 0xdf, 0xfc, 0xd5,
    +	0xbb, 0x8f, 0xa5, 0xb1, 0xf7, 0x1f, 0x4b, 0x63, 0x1f, 0x3e, 0x96, 0xc6, 0xfe, 0xda, 0x2d, 0x69,
    +	0xef, 0xba, 0x25, 0xed, 0x7d, 0xb7, 0xa4, 0x7d, 0xe8, 0x96, 0xb4, 0xaf, 0xbb, 0x25, 0xed, 0x9f,
    +	0xdf, 0x94, 0xc6, 0x7e, 0xbf, 0x92, 0xf9, 0x77, 0xea, 0x0f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x7a,
    +	0x55, 0x95, 0x9f, 0x66, 0x15, 0x00, 0x00,
     }
     
     func (m *CSIDriver) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/storage/v1/generated.proto b/vendor/k8s.io/api/storage/v1/generated.proto
    index b35f708c6639..dfc309bb4208 100644
    --- a/vendor/k8s.io/api/storage/v1/generated.proto
    +++ b/vendor/k8s.io/api/storage/v1/generated.proto
    @@ -44,7 +44,7 @@ message CSIDriver {
       // an alphanumeric character ([a-z0-9A-Z]) with dashes (-), dots (.), and
       // alphanumerics between.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec represents the specification of the CSI Driver.
       optional CSIDriverSpec spec = 2;
    @@ -55,7 +55,7 @@ message CSIDriverList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of CSIDriver
       repeated CSIDriver items = 2;
    @@ -103,7 +103,7 @@ message CSIDriverSpec {
       // deployed on such a cluster and the deployment determines which mode that is, for example
       // via a command line parameter of the driver.
       //
    -  // This field is immutable.
    +  // This field was immutable in Kubernetes < 1.29 and now is mutable.
       //
       // +optional
       optional bool podInfoOnMount = 2;
    @@ -150,7 +150,7 @@ message CSIDriverSpec {
       // permission of the volume before being mounted.
       // Refer to the specific FSGroupPolicy values for additional details.
       //
    -  // This field is immutable.
    +  // This field was immutable in Kubernetes < 1.29 and now is mutable.
       //
       // Defaults to ReadWriteOnceWithFSType, which will examine each volume
       // to determine if Kubernetes should modify ownership and permissions of the volume.
    @@ -226,7 +226,7 @@ message CSIDriverSpec {
     message CSINode {
       // Standard object's metadata.
       // metadata.name must be the Kubernetes node name.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the specification of CSINode
       optional CSINodeSpec spec = 2;
    @@ -261,6 +261,7 @@ message CSINodeDriver {
       // It is possible for different nodes to use different topology keys.
       // This can be empty if driver does not support topology.
       // +optional
    +  // +listType=atomic
       repeated string topologyKeys = 3;
     
       // allocatable represents the volume resources of a node that are available for scheduling.
    @@ -274,7 +275,7 @@ message CSINodeList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of CSINode
       repeated CSINode items = 2;
    @@ -286,6 +287,8 @@ message CSINodeSpec {
       // If all drivers in the list are uninstalled, this can become empty.
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated CSINodeDriver drivers = 1;
     }
     
    @@ -324,7 +327,7 @@ message CSIStorageCapacity {
       //
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // nodeTopology defines which nodes have access to the storage
       // for which capacity was reported. If not set, the storage is
    @@ -333,7 +336,7 @@ message CSIStorageCapacity {
       // immutable.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector nodeTopology = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector nodeTopology = 2;
     
       // storageClassName represents the name of the StorageClass that the reported capacity applies to.
       // It must meet the same requirements as the name of a StorageClass
    @@ -353,7 +356,7 @@ message CSIStorageCapacity {
       // unavailable.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity capacity = 4;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity capacity = 4;
     
       // maximumVolumeSize is the value reported by the CSI driver in its GetCapacityResponse
       // for a GetCapacityRequest with topology and parameters that match the
    @@ -367,7 +370,7 @@ message CSIStorageCapacity {
       // API is ResourceRequirements.Requests in a volume claim.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity maximumVolumeSize = 5;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity maximumVolumeSize = 5;
     }
     
     // CSIStorageCapacityList is a collection of CSIStorageCapacity objects.
    @@ -375,11 +378,9 @@ message CSIStorageCapacityList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of CSIStorageCapacity objects.
    -  // +listType=map
    -  // +listMapKey=name
       repeated CSIStorageCapacity items = 2;
     }
     
    @@ -392,7 +393,7 @@ message StorageClass {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // provisioner indicates the type of the provisioner.
       optional string provisioner = 2;
    @@ -411,6 +412,7 @@ message StorageClass {
       // e.g. ["ro", "soft"]. Not validated -
       // mount of the PVs will simply fail if one is invalid.
       // +optional
    +  // +listType=atomic
       repeated string mountOptions = 5;
     
       // allowVolumeExpansion shows whether the storage class allow volume expand.
    @@ -429,7 +431,7 @@ message StorageClass {
       // This field is only honored by servers that enable the VolumeScheduling feature.
       // +optional
       // +listType=atomic
    -  repeated k8s.io.api.core.v1.TopologySelectorTerm allowedTopologies = 8;
    +  repeated .k8s.io.api.core.v1.TopologySelectorTerm allowedTopologies = 8;
     }
     
     // StorageClassList is a collection of storage classes.
    @@ -437,7 +439,7 @@ message StorageClassList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of StorageClasses
       repeated StorageClass items = 2;
    @@ -464,7 +466,7 @@ message VolumeAttachment {
       // Standard object metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec represents specification of the desired attach/detach volume behavior.
       // Populated by the Kubernetes system.
    @@ -482,15 +484,15 @@ message VolumeAttachmentList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of VolumeAttachments
       repeated VolumeAttachment items = 2;
     }
     
     // VolumeAttachmentSource represents a volume that should be attached.
    -// Right now only PersistenVolumes can be attached via external attacher,
    -// in future we may allow also inline volumes in pods.
    +// Right now only PersistentVolumes can be attached via external attacher,
    +// in the future we may allow also inline volumes in pods.
     // Exactly one member can be set.
     message VolumeAttachmentSource {
       // persistentVolumeName represents the name of the persistent volume to attach.
    @@ -504,7 +506,7 @@ message VolumeAttachmentSource {
       // PersistentVolumeSpec. This field is beta-level and is only
       // honored by servers that enabled the CSIMigration feature.
       // +optional
    -  optional k8s.io.api.core.v1.PersistentVolumeSpec inlineVolumeSpec = 2;
    +  optional .k8s.io.api.core.v1.PersistentVolumeSpec inlineVolumeSpec = 2;
     }
     
     // VolumeAttachmentSpec is the specification of a VolumeAttachment request.
    @@ -552,7 +554,7 @@ message VolumeAttachmentStatus {
     message VolumeError {
       // time represents the time the error was encountered.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time time = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time time = 1;
     
       // message represents the error encountered during Attach or Detach operation.
       // This string may be logged, so it should not contain sensitive
    diff --git a/vendor/k8s.io/api/storage/v1/types.go b/vendor/k8s.io/api/storage/v1/types.go
    index 7d7b7664b89c..3936dc83bc8e 100644
    --- a/vendor/k8s.io/api/storage/v1/types.go
    +++ b/vendor/k8s.io/api/storage/v1/types.go
    @@ -25,6 +25,7 @@ import (
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.6
     
     // StorageClass describes the parameters for a class of storage for
     // which PersistentVolumes can be dynamically provisioned.
    @@ -56,6 +57,7 @@ type StorageClass struct {
     	// e.g. ["ro", "soft"]. Not validated -
     	// mount of the PVs will simply fail if one is invalid.
     	// +optional
    +	// +listType=atomic
     	MountOptions []string `json:"mountOptions,omitempty" protobuf:"bytes,5,opt,name=mountOptions"`
     
     	// allowVolumeExpansion shows whether the storage class allow volume expand.
    @@ -78,6 +80,7 @@ type StorageClass struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.6
     
     // StorageClassList is a collection of storage classes.
     type StorageClassList struct {
    @@ -111,6 +114,7 @@ const (
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.13
     
     // VolumeAttachment captures the intent to attach or detach the specified volume
     // to/from the specified node.
    @@ -136,6 +140,7 @@ type VolumeAttachment struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.13
     
     // VolumeAttachmentList is a collection of VolumeAttachment objects.
     type VolumeAttachmentList struct {
    @@ -164,8 +169,8 @@ type VolumeAttachmentSpec struct {
     }
     
     // VolumeAttachmentSource represents a volume that should be attached.
    -// Right now only PersistenVolumes can be attached via external attacher,
    -// in future we may allow also inline volumes in pods.
    +// Right now only PersistentVolumes can be attached via external attacher,
    +// in the future we may allow also inline volumes in pods.
     // Exactly one member can be set.
     type VolumeAttachmentSource struct {
     	// persistentVolumeName represents the name of the persistent volume to attach.
    @@ -226,6 +231,7 @@ type VolumeError struct {
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.18
     
     // CSIDriver captures information about a Container Storage Interface (CSI)
     // volume driver deployed on the cluster.
    @@ -250,6 +256,7 @@ type CSIDriver struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.18
     
     // CSIDriverList is a collection of CSIDriver objects.
     type CSIDriverList struct {
    @@ -306,7 +313,7 @@ type CSIDriverSpec struct {
     	// deployed on such a cluster and the deployment determines which mode that is, for example
     	// via a command line parameter of the driver.
     	//
    -	// This field is immutable.
    +	// This field was immutable in Kubernetes < 1.29 and now is mutable.
     	//
     	// +optional
     	PodInfoOnMount *bool `json:"podInfoOnMount,omitempty" protobuf:"bytes,2,opt,name=podInfoOnMount"`
    @@ -353,7 +360,7 @@ type CSIDriverSpec struct {
     	// permission of the volume before being mounted.
     	// Refer to the specific FSGroupPolicy values for additional details.
     	//
    -	// This field is immutable.
    +	// This field was immutable in Kubernetes < 1.29 and now is mutable.
     	//
     	// Defaults to ReadWriteOnceWithFSType, which will examine each volume
     	// to determine if Kubernetes should modify ownership and permissions of the volume.
    @@ -426,7 +433,7 @@ const (
     	// ReadWriteOnceWithFSTypeFSGroupPolicy indicates that each volume will be examined
     	// to determine if the volume ownership and permissions
     	// should be modified. If a fstype is defined and the volume's access mode
    -	// contains ReadWriteOnce, then the defined fsGroup will be applied.
    +	// contains ReadWriteOnce or ReadWriteOncePod, then the defined fsGroup will be applied.
     	// This mode should be defined if it's expected that the
     	// fsGroup may need to be modified depending on the pod's SecurityPolicy.
     	// This is the default behavior if no other FSGroupPolicy is defined.
    @@ -490,6 +497,7 @@ const (
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.17
     
     // CSINode holds information about all CSI drivers installed on a node.
     // CSI drivers do not need to create the CSINode object directly. As long as
    @@ -517,6 +525,8 @@ type CSINodeSpec struct {
     	// If all drivers in the list are uninstalled, this can become empty.
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	Drivers []CSINodeDriver `json:"drivers" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,1,rep,name=drivers"`
     }
     
    @@ -549,6 +559,7 @@ type CSINodeDriver struct {
     	// It is possible for different nodes to use different topology keys.
     	// This can be empty if driver does not support topology.
     	// +optional
    +	// +listType=atomic
     	TopologyKeys []string `json:"topologyKeys" protobuf:"bytes,3,rep,name=topologyKeys"`
     
     	// allocatable represents the volume resources of a node that are available for scheduling.
    @@ -568,6 +579,7 @@ type VolumeNodeResources struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.17
     
     // CSINodeList is a collection of CSINode objects.
     type CSINodeList struct {
    @@ -584,6 +596,7 @@ type CSINodeList struct {
     
     // +genclient
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.24
     
     // CSIStorageCapacity stores the result of one CSI GetCapacity call.
     // For a given StorageClass, this describes the available capacity in a
    @@ -669,6 +682,7 @@ type CSIStorageCapacity struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.24
     
     // CSIStorageCapacityList is a collection of CSIStorageCapacity objects.
     type CSIStorageCapacityList struct {
    @@ -680,7 +694,5 @@ type CSIStorageCapacityList struct {
     	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
     
     	// items is the list of CSIStorageCapacity objects.
    -	// +listType=map
    -	// +listMapKey=name
     	Items []CSIStorageCapacity `json:"items" protobuf:"bytes,2,rep,name=items"`
     }
    diff --git a/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go
    index 69ee68361073..eee18bd182c7 100644
    --- a/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go
    @@ -50,10 +50,10 @@ func (CSIDriverList) SwaggerDoc() map[string]string {
     var map_CSIDriverSpec = map[string]string{
     	"":                     "CSIDriverSpec is the specification of a CSIDriver.",
     	"attachRequired":       "attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called.\n\nThis field is immutable.",
    -	"podInfoOnMount":       "podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations, if set to true. If set to false, pod information will not be passed on mount. Default is false.\n\nThe CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext.\n\nThe following VolumeContext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. \"csi.storage.k8s.io/pod.name\": pod.Name \"csi.storage.k8s.io/pod.namespace\": pod.Namespace \"csi.storage.k8s.io/pod.uid\": string(pod.UID) \"csi.storage.k8s.io/ephemeral\": \"true\" if the volume is an ephemeral inline volume\n                                defined by a CSIVolumeSource, otherwise \"false\"\n\n\"csi.storage.k8s.io/ephemeral\" is a new feature in Kubernetes 1.16. It is only required for drivers which support both the \"Persistent\" and \"Ephemeral\" VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver.\n\nThis field is immutable.",
    +	"podInfoOnMount":       "podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations, if set to true. If set to false, pod information will not be passed on mount. Default is false.\n\nThe CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext.\n\nThe following VolumeContext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. \"csi.storage.k8s.io/pod.name\": pod.Name \"csi.storage.k8s.io/pod.namespace\": pod.Namespace \"csi.storage.k8s.io/pod.uid\": string(pod.UID) \"csi.storage.k8s.io/ephemeral\": \"true\" if the volume is an ephemeral inline volume\n                                defined by a CSIVolumeSource, otherwise \"false\"\n\n\"csi.storage.k8s.io/ephemeral\" is a new feature in Kubernetes 1.16. It is only required for drivers which support both the \"Persistent\" and \"Ephemeral\" VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver.\n\nThis field was immutable in Kubernetes < 1.29 and now is mutable.",
     	"volumeLifecycleModes": "volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is \"Persistent\", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism.\n\nThe other mode is \"Ephemeral\". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume.\n\nFor more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future.\n\nThis field is beta. This field is immutable.",
     	"storageCapacity":      "storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information, if set to true.\n\nThe check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object.\n\nAlternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published.\n\nThis field was immutable in Kubernetes <= 1.22 and now is mutable.",
    -	"fsGroupPolicy":        "fsGroupPolicy defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details.\n\nThis field is immutable.\n\nDefaults to ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce.",
    +	"fsGroupPolicy":        "fsGroupPolicy defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details.\n\nThis field was immutable in Kubernetes < 1.29 and now is mutable.\n\nDefaults to ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce.",
     	"tokenRequests":        "tokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: \"csi.storage.k8s.io/serviceAccount.tokens\": {\n  \"\": {\n    \"token\": ,\n    \"expirationTimestamp\": ,\n  },\n  ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.",
     	"requiresRepublish":    "requiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false.\n\nNote: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container.",
     	"seLinuxMount":         "seLinuxMount specifies if the CSI driver supports \"-o context\" mount option.\n\nWhen \"true\", the CSI driver must ensure that all volumes provided by this CSI driver can be mounted separately with different `-o context` options. This is typical for storage backends that provide volumes as filesystems on block devices or as independent shared volumes. Kubernetes will call NodeStage / NodePublish with \"-o context=xyz\" mount option when mounting a ReadWriteOncePod volume used in Pod that has explicitly set SELinux context. In the future, it may be expanded to other volume AccessModes. In any case, Kubernetes will ensure that the volume is mounted only with a single SELinux context.\n\nWhen \"false\", Kubernetes won't pass any special SELinux mount options to the driver. This is typical for volumes that represent subdirectories of a bigger shared filesystem.\n\nDefault is \"false\".",
    @@ -185,7 +185,7 @@ func (VolumeAttachmentList) SwaggerDoc() map[string]string {
     }
     
     var map_VolumeAttachmentSource = map[string]string{
    -	"":                     "VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.",
    +	"":                     "VolumeAttachmentSource represents a volume that should be attached. Right now only PersistentVolumes can be attached via external attacher, in the future we may allow also inline volumes in pods. Exactly one member can be set.",
     	"persistentVolumeName": "persistentVolumeName represents the name of the persistent volume to attach.",
     }
     
    diff --git a/vendor/k8s.io/api/storage/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/storage/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..a44c1181ad16
    --- /dev/null
    +++ b/vendor/k8s.io/api/storage/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,82 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CSIDriver) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 18
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CSIDriverList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 18
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CSINode) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 17
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CSINodeList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 17
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CSIStorageCapacity) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 24
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CSIStorageCapacityList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 24
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *StorageClass) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 6
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *StorageClassList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 6
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *VolumeAttachment) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 13
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *VolumeAttachmentList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 13
    +}
    diff --git a/vendor/k8s.io/api/storage/v1alpha1/generated.pb.go b/vendor/k8s.io/api/storage/v1alpha1/generated.pb.go
    index 2b15ec3feb03..86343b170a5c 100644
    --- a/vendor/k8s.io/api/storage/v1alpha1/generated.pb.go
    +++ b/vendor/k8s.io/api/storage/v1alpha1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/storage/v1alpha1/generated.proto
    +// source: k8s.io/api/storage/v1alpha1/generated.proto
     
     package v1alpha1
     
    @@ -50,7 +50,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *CSIStorageCapacity) Reset()      { *m = CSIStorageCapacity{} }
     func (*CSIStorageCapacity) ProtoMessage() {}
     func (*CSIStorageCapacity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_10f856db1e670dc4, []int{0}
    +	return fileDescriptor_02e7952e43280c27, []int{0}
     }
     func (m *CSIStorageCapacity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -78,7 +78,7 @@ var xxx_messageInfo_CSIStorageCapacity proto.InternalMessageInfo
     func (m *CSIStorageCapacityList) Reset()      { *m = CSIStorageCapacityList{} }
     func (*CSIStorageCapacityList) ProtoMessage() {}
     func (*CSIStorageCapacityList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_10f856db1e670dc4, []int{1}
    +	return fileDescriptor_02e7952e43280c27, []int{1}
     }
     func (m *CSIStorageCapacityList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -106,7 +106,7 @@ var xxx_messageInfo_CSIStorageCapacityList proto.InternalMessageInfo
     func (m *VolumeAttachment) Reset()      { *m = VolumeAttachment{} }
     func (*VolumeAttachment) ProtoMessage() {}
     func (*VolumeAttachment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_10f856db1e670dc4, []int{2}
    +	return fileDescriptor_02e7952e43280c27, []int{2}
     }
     func (m *VolumeAttachment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -134,7 +134,7 @@ var xxx_messageInfo_VolumeAttachment proto.InternalMessageInfo
     func (m *VolumeAttachmentList) Reset()      { *m = VolumeAttachmentList{} }
     func (*VolumeAttachmentList) ProtoMessage() {}
     func (*VolumeAttachmentList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_10f856db1e670dc4, []int{3}
    +	return fileDescriptor_02e7952e43280c27, []int{3}
     }
     func (m *VolumeAttachmentList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -162,7 +162,7 @@ var xxx_messageInfo_VolumeAttachmentList proto.InternalMessageInfo
     func (m *VolumeAttachmentSource) Reset()      { *m = VolumeAttachmentSource{} }
     func (*VolumeAttachmentSource) ProtoMessage() {}
     func (*VolumeAttachmentSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_10f856db1e670dc4, []int{4}
    +	return fileDescriptor_02e7952e43280c27, []int{4}
     }
     func (m *VolumeAttachmentSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -190,7 +190,7 @@ var xxx_messageInfo_VolumeAttachmentSource proto.InternalMessageInfo
     func (m *VolumeAttachmentSpec) Reset()      { *m = VolumeAttachmentSpec{} }
     func (*VolumeAttachmentSpec) ProtoMessage() {}
     func (*VolumeAttachmentSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_10f856db1e670dc4, []int{5}
    +	return fileDescriptor_02e7952e43280c27, []int{5}
     }
     func (m *VolumeAttachmentSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -218,7 +218,7 @@ var xxx_messageInfo_VolumeAttachmentSpec proto.InternalMessageInfo
     func (m *VolumeAttachmentStatus) Reset()      { *m = VolumeAttachmentStatus{} }
     func (*VolumeAttachmentStatus) ProtoMessage() {}
     func (*VolumeAttachmentStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_10f856db1e670dc4, []int{6}
    +	return fileDescriptor_02e7952e43280c27, []int{6}
     }
     func (m *VolumeAttachmentStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -246,7 +246,7 @@ var xxx_messageInfo_VolumeAttachmentStatus proto.InternalMessageInfo
     func (m *VolumeAttributesClass) Reset()      { *m = VolumeAttributesClass{} }
     func (*VolumeAttributesClass) ProtoMessage() {}
     func (*VolumeAttributesClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_10f856db1e670dc4, []int{7}
    +	return fileDescriptor_02e7952e43280c27, []int{7}
     }
     func (m *VolumeAttributesClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -274,7 +274,7 @@ var xxx_messageInfo_VolumeAttributesClass proto.InternalMessageInfo
     func (m *VolumeAttributesClassList) Reset()      { *m = VolumeAttributesClassList{} }
     func (*VolumeAttributesClassList) ProtoMessage() {}
     func (*VolumeAttributesClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_10f856db1e670dc4, []int{8}
    +	return fileDescriptor_02e7952e43280c27, []int{8}
     }
     func (m *VolumeAttributesClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -302,7 +302,7 @@ var xxx_messageInfo_VolumeAttributesClassList proto.InternalMessageInfo
     func (m *VolumeError) Reset()      { *m = VolumeError{} }
     func (*VolumeError) ProtoMessage() {}
     func (*VolumeError) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_10f856db1e670dc4, []int{9}
    +	return fileDescriptor_02e7952e43280c27, []int{9}
     }
     func (m *VolumeError) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -343,75 +343,75 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/storage/v1alpha1/generated.proto", fileDescriptor_10f856db1e670dc4)
    -}
    -
    -var fileDescriptor_10f856db1e670dc4 = []byte{
    -	// 1023 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcb, 0x6e, 0x23, 0x45,
    -	0x17, 0x4e, 0xe7, 0x32, 0xe3, 0xa9, 0xe4, 0xff, 0xc7, 0x53, 0xca, 0x0c, 0xc6, 0x23, 0xb5, 0x23,
    -	0xaf, 0x0c, 0x62, 0xba, 0x49, 0x40, 0x68, 0x84, 0xc4, 0xc2, 0x9d, 0x64, 0x11, 0x91, 0x84, 0xa1,
    -	0x1c, 0x01, 0x02, 0x16, 0x94, 0xdb, 0x07, 0xbb, 0x62, 0xf7, 0x45, 0x55, 0xd5, 0x16, 0x66, 0xc5,
    -	0x8a, 0x35, 0x3b, 0xde, 0x80, 0x67, 0xc9, 0x02, 0x89, 0xd1, 0xac, 0x66, 0x65, 0x91, 0x86, 0x67,
    -	0x60, 0xc1, 0x06, 0xd4, 0xd5, 0xe5, 0x76, 0xc7, 0x6d, 0x07, 0x27, 0x8b, 0xec, 0x5c, 0xe7, 0xf2,
    -	0x9d, 0xdb, 0x77, 0x4e, 0x27, 0xe8, 0xa0, 0xff, 0x5c, 0x58, 0x2c, 0xb0, 0xfb, 0x51, 0x1b, 0xb8,
    -	0x0f, 0x12, 0x84, 0x3d, 0x04, 0xbf, 0x13, 0x70, 0x5b, 0x2b, 0x68, 0xc8, 0x6c, 0x21, 0x03, 0x4e,
    -	0xbb, 0x60, 0x0f, 0x77, 0xe9, 0x20, 0xec, 0xd1, 0x5d, 0xbb, 0x0b, 0x3e, 0x70, 0x2a, 0xa1, 0x63,
    -	0x85, 0x3c, 0x90, 0x01, 0x7e, 0x9a, 0x1a, 0x5b, 0x34, 0x64, 0x96, 0x36, 0xb6, 0x26, 0xc6, 0xd5,
    -	0x67, 0x5d, 0x26, 0x7b, 0x51, 0xdb, 0x72, 0x03, 0xcf, 0xee, 0x06, 0xdd, 0xc0, 0x56, 0x3e, 0xed,
    -	0xe8, 0x5b, 0xf5, 0x52, 0x0f, 0xf5, 0x2b, 0xc5, 0xaa, 0xd6, 0x73, 0x81, 0xdd, 0x80, 0x27, 0x51,
    -	0x67, 0xe3, 0x55, 0xdf, 0x9f, 0xda, 0x78, 0xd4, 0xed, 0x31, 0x1f, 0xf8, 0xc8, 0x0e, 0xfb, 0x5d,
    -	0xe5, 0xc4, 0x41, 0x04, 0x11, 0x77, 0xe1, 0x46, 0x5e, 0xc2, 0xf6, 0x40, 0xd2, 0x79, 0xb1, 0xec,
    -	0x45, 0x5e, 0x3c, 0xf2, 0x25, 0xf3, 0x8a, 0x61, 0x3e, 0xf8, 0x2f, 0x07, 0xe1, 0xf6, 0xc0, 0xa3,
    -	0xb3, 0x7e, 0xf5, 0xbf, 0xd6, 0x10, 0xde, 0x6f, 0x1d, 0xb5, 0xd2, 0xfe, 0xed, 0xd3, 0x90, 0xba,
    -	0x4c, 0x8e, 0xf0, 0x37, 0xa8, 0x94, 0xa4, 0xd6, 0xa1, 0x92, 0x56, 0x8c, 0x1d, 0xa3, 0xb1, 0xb9,
    -	0xf7, 0xae, 0x35, 0x6d, 0x77, 0x16, 0xc1, 0x0a, 0xfb, 0xdd, 0x44, 0x20, 0xac, 0xc4, 0xda, 0x1a,
    -	0xee, 0x5a, 0x9f, 0xb4, 0xcf, 0xc1, 0x95, 0x27, 0x20, 0xa9, 0x83, 0x2f, 0xc6, 0xb5, 0x95, 0x78,
    -	0x5c, 0x43, 0x53, 0x19, 0xc9, 0x50, 0x31, 0x43, 0x5b, 0x7e, 0xd0, 0x81, 0xb3, 0x20, 0x0c, 0x06,
    -	0x41, 0x77, 0x54, 0x59, 0x55, 0x51, 0xde, 0x5b, 0x2e, 0xca, 0x31, 0x6d, 0xc3, 0xa0, 0x05, 0x03,
    -	0x70, 0x65, 0xc0, 0x9d, 0x72, 0x3c, 0xae, 0x6d, 0x9d, 0xe6, 0xc0, 0xc8, 0x15, 0x68, 0x7c, 0x80,
    -	0xca, 0x9a, 0x1f, 0xfb, 0x03, 0x2a, 0xc4, 0x29, 0xf5, 0xa0, 0xb2, 0xb6, 0x63, 0x34, 0x1e, 0x38,
    -	0x15, 0x9d, 0x62, 0xb9, 0x35, 0xa3, 0x27, 0x05, 0x0f, 0xfc, 0x05, 0x2a, 0xb9, 0xba, 0x3d, 0x95,
    -	0x75, 0x95, 0xac, 0x75, 0x5d, 0xb2, 0xd6, 0x84, 0x11, 0xd6, 0xa7, 0x11, 0xf5, 0x25, 0x93, 0x23,
    -	0x67, 0x2b, 0x1e, 0xd7, 0x4a, 0x93, 0x16, 0x93, 0x0c, 0x0d, 0x0b, 0xf4, 0xc8, 0xa3, 0xdf, 0x31,
    -	0x2f, 0xf2, 0x3e, 0x0b, 0x06, 0x91, 0x07, 0x2d, 0xf6, 0x3d, 0x54, 0x36, 0x6e, 0x15, 0xe2, 0x71,
    -	0x3c, 0xae, 0x3d, 0x3a, 0x99, 0x05, 0x23, 0x45, 0xfc, 0xfa, 0xaf, 0x06, 0x7a, 0x52, 0x1c, 0xfc,
    -	0x31, 0x13, 0x12, 0x7f, 0x5d, 0x18, 0xbe, 0xb5, 0xe4, 0x58, 0x98, 0x48, 0x47, 0x5f, 0xd6, 0x7d,
    -	0x2d, 0x4d, 0x24, 0xb9, 0xc1, 0x9f, 0xa1, 0x0d, 0x26, 0xc1, 0x13, 0x95, 0xd5, 0x9d, 0xb5, 0xc6,
    -	0xe6, 0x9e, 0x6d, 0x5d, 0xb3, 0xc6, 0x56, 0x31, 0x43, 0xe7, 0x7f, 0x1a, 0x7b, 0xe3, 0x28, 0x41,
    -	0x21, 0x29, 0x58, 0xfd, 0x97, 0x55, 0x54, 0x4e, 0xab, 0x6b, 0x4a, 0x49, 0xdd, 0x9e, 0x07, 0xbe,
    -	0xbc, 0x03, 0x16, 0xb7, 0xd0, 0xba, 0x08, 0xc1, 0xd5, 0xec, 0xdd, 0xbd, 0xb6, 0x96, 0xd9, 0xf4,
    -	0x5a, 0x21, 0xb8, 0xce, 0x96, 0x86, 0x5f, 0x4f, 0x5e, 0x44, 0x81, 0xe1, 0xaf, 0xd0, 0x3d, 0x21,
    -	0xa9, 0x8c, 0x84, 0x62, 0xe9, 0xd5, 0xa5, 0x58, 0x02, 0x56, 0xb9, 0x3a, 0xff, 0xd7, 0xc0, 0xf7,
    -	0xd2, 0x37, 0xd1, 0x90, 0xf5, 0x0b, 0x03, 0x6d, 0xcf, 0xba, 0xdc, 0xc1, 0xd4, 0xc9, 0xd5, 0xa9,
    -	0x3f, 0xbb, 0x51, 0x49, 0x0b, 0x66, 0xfe, 0xca, 0x40, 0x4f, 0x0a, 0xd5, 0xab, 0x85, 0xc0, 0xc7,
    -	0x68, 0x3b, 0x04, 0x2e, 0x98, 0x90, 0xe0, 0xcb, 0xd4, 0x46, 0xad, 0xbd, 0x91, 0xae, 0x7d, 0x3c,
    -	0xae, 0x6d, 0xbf, 0x98, 0xa3, 0x27, 0x73, 0xbd, 0xf0, 0x39, 0x2a, 0x33, 0x7f, 0xc0, 0x7c, 0xd0,
    -	0xfb, 0x33, 0x9d, 0x78, 0x23, 0x5f, 0x47, 0xf2, 0xe1, 0x48, 0x1a, 0x32, 0x8b, 0xac, 0x06, 0xbd,
    -	0x9d, 0x9c, 0x99, 0xa3, 0x19, 0x14, 0x52, 0xc0, 0xad, 0xff, 0x36, 0x67, 0x3e, 0x89, 0x02, 0xbf,
    -	0x83, 0x4a, 0x54, 0x49, 0x80, 0xeb, 0x32, 0xb2, 0x7e, 0x37, 0xb5, 0x9c, 0x64, 0x16, 0x8a, 0x43,
    -	0xaa, 0x15, 0x73, 0x0e, 0xeb, 0x12, 0x1c, 0x52, 0xae, 0x39, 0x0e, 0xa9, 0x37, 0xd1, 0x90, 0x49,
    -	0x2a, 0xc9, 0x81, 0xcd, 0x1d, 0xd2, 0x2c, 0x95, 0x53, 0x2d, 0x27, 0x99, 0x45, 0xfd, 0x9f, 0xb5,
    -	0x39, 0x63, 0x52, 0x64, 0xcc, 0xd5, 0xd4, 0x51, 0x35, 0x95, 0x0a, 0x35, 0x75, 0xb2, 0x9a, 0x3a,
    -	0xf8, 0x67, 0x03, 0x61, 0x9a, 0x41, 0x9c, 0x4c, 0xc8, 0x9a, 0x32, 0xea, 0xe3, 0x5b, 0x2c, 0x89,
    -	0xd5, 0x2c, 0xa0, 0x1d, 0xfa, 0x92, 0x8f, 0x9c, 0xaa, 0xce, 0x02, 0x17, 0x0d, 0xc8, 0x9c, 0x14,
    -	0xf0, 0x39, 0xda, 0x4c, 0xa5, 0x87, 0x9c, 0x07, 0x5c, 0xaf, 0x6d, 0x63, 0x89, 0x8c, 0x94, 0xbd,
    -	0x63, 0xc6, 0xe3, 0xda, 0x66, 0x73, 0x0a, 0xf0, 0xf7, 0xb8, 0xb6, 0x99, 0xd3, 0x93, 0x3c, 0x78,
    -	0x12, 0xab, 0x03, 0xd3, 0x58, 0xeb, 0xb7, 0x89, 0x75, 0x00, 0x8b, 0x63, 0xe5, 0xc0, 0xab, 0x87,
    -	0xe8, 0x8d, 0x05, 0x2d, 0xc2, 0x65, 0xb4, 0xd6, 0x87, 0x51, 0xca, 0x44, 0x92, 0xfc, 0xc4, 0xdb,
    -	0x68, 0x63, 0x48, 0x07, 0x51, 0xca, 0xb8, 0x07, 0x24, 0x7d, 0x7c, 0xb8, 0xfa, 0xdc, 0xa8, 0xff,
    -	0xb9, 0x8a, 0x1e, 0x67, 0x13, 0xe0, 0xac, 0x1d, 0x49, 0x10, 0xea, 0xc3, 0x7a, 0x07, 0x17, 0x7a,
    -	0x0f, 0xa1, 0x0e, 0x67, 0x43, 0xe0, 0x8a, 0xad, 0x2a, 0xb5, 0xa9, 0xc7, 0x41, 0xa6, 0x21, 0x39,
    -	0x2b, 0x3c, 0x44, 0x28, 0xa4, 0x9c, 0x7a, 0x20, 0x81, 0x27, 0x47, 0x38, 0xe1, 0x97, 0xb3, 0x1c,
    -	0xbf, 0xf2, 0xd5, 0x59, 0x2f, 0x32, 0x90, 0x94, 0x56, 0x59, 0xdc, 0xa9, 0x82, 0xe4, 0x22, 0x55,
    -	0x3f, 0x42, 0x0f, 0x67, 0x5c, 0x6e, 0xd4, 0xe6, 0x57, 0x06, 0x7a, 0x73, 0x6e, 0x22, 0x77, 0x70,
    -	0xdf, 0x3f, 0xbf, 0x7a, 0xdf, 0xf7, 0x6e, 0xde, 0xad, 0x05, 0x47, 0xfe, 0x47, 0x03, 0xe5, 0xf9,
    -	0x89, 0x8f, 0xd1, 0x7a, 0xf2, 0xf7, 0xac, 0x2e, 0xe1, 0xed, 0xe5, 0x4a, 0x38, 0x63, 0x1e, 0x4c,
    -	0x3f, 0xb5, 0xc9, 0x8b, 0x28, 0x14, 0xfc, 0x16, 0xba, 0xef, 0x81, 0x10, 0xb4, 0x3b, 0xa1, 0xc6,
    -	0x43, 0x6d, 0x74, 0xff, 0x24, 0x15, 0x93, 0x89, 0xde, 0x69, 0x5e, 0x5c, 0x9a, 0x2b, 0x2f, 0x2f,
    -	0xcd, 0x95, 0xd7, 0x97, 0xe6, 0xca, 0x0f, 0xb1, 0x69, 0x5c, 0xc4, 0xa6, 0xf1, 0x32, 0x36, 0x8d,
    -	0xd7, 0xb1, 0x69, 0xfc, 0x1e, 0x9b, 0xc6, 0x4f, 0x7f, 0x98, 0x2b, 0x5f, 0x3e, 0xbd, 0xe6, 0x3f,
    -	0x98, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x2f, 0x75, 0xee, 0xf8, 0x0c, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/storage/v1alpha1/generated.proto", fileDescriptor_02e7952e43280c27)
    +}
    +
    +var fileDescriptor_02e7952e43280c27 = []byte{
    +	// 1009 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x3d, 0x6f, 0x23, 0x45,
    +	0x18, 0xce, 0xda, 0xce, 0x9d, 0x6f, 0x1c, 0x38, 0xdf, 0xc8, 0x77, 0x18, 0x9f, 0xb4, 0x3e, 0xb9,
    +	0x32, 0x1f, 0x37, 0x4b, 0x02, 0x42, 0x27, 0x24, 0x0a, 0x6f, 0x92, 0x22, 0x22, 0x09, 0xc7, 0x38,
    +	0x02, 0x04, 0x14, 0x8c, 0xd7, 0x83, 0x3d, 0x89, 0xf7, 0x43, 0x33, 0xb3, 0x16, 0xa6, 0xa2, 0xa2,
    +	0xa6, 0xe3, 0x1f, 0xf0, 0x5b, 0x52, 0x20, 0x71, 0xba, 0xea, 0x2a, 0x8b, 0x2c, 0xfc, 0x06, 0x0a,
    +	0x1a, 0xd0, 0xce, 0x8e, 0xd7, 0x1b, 0xaf, 0x1d, 0x9c, 0x14, 0xe9, 0x3c, 0x33, 0xef, 0xfb, 0x3c,
    +	0xef, 0xc7, 0xf3, 0xbe, 0x9b, 0x80, 0x77, 0xce, 0x9e, 0x09, 0xc4, 0x7c, 0x8b, 0x04, 0xcc, 0x12,
    +	0xd2, 0xe7, 0x64, 0x40, 0xad, 0xf1, 0x36, 0x19, 0x05, 0x43, 0xb2, 0x6d, 0x0d, 0xa8, 0x47, 0x39,
    +	0x91, 0xb4, 0x8f, 0x02, 0xee, 0x4b, 0x1f, 0x3e, 0x4e, 0x8c, 0x11, 0x09, 0x18, 0xd2, 0xc6, 0x68,
    +	0x66, 0xdc, 0x78, 0x3a, 0x60, 0x72, 0x18, 0xf6, 0x90, 0xe3, 0xbb, 0xd6, 0xc0, 0x1f, 0xf8, 0x96,
    +	0xf2, 0xe9, 0x85, 0xdf, 0xa9, 0x93, 0x3a, 0xa8, 0x5f, 0x09, 0x56, 0xa3, 0x95, 0x21, 0x76, 0x7c,
    +	0x1e, 0xb3, 0x2e, 0xf2, 0x35, 0x3e, 0x98, 0xdb, 0xb8, 0xc4, 0x19, 0x32, 0x8f, 0xf2, 0x89, 0x15,
    +	0x9c, 0x0d, 0x94, 0x13, 0xa7, 0xc2, 0x0f, 0xb9, 0x43, 0xaf, 0xe5, 0x25, 0x2c, 0x97, 0x4a, 0xb2,
    +	0x8c, 0xcb, 0x5a, 0xe5, 0xc5, 0x43, 0x4f, 0x32, 0x37, 0x4f, 0xf3, 0xe1, 0xff, 0x39, 0x08, 0x67,
    +	0x48, 0x5d, 0xb2, 0xe8, 0xd7, 0xfa, 0xbb, 0x08, 0xe0, 0x6e, 0xf7, 0xa0, 0x9b, 0xd4, 0x6f, 0x97,
    +	0x04, 0xc4, 0x61, 0x72, 0x02, 0xbf, 0x05, 0xe5, 0x38, 0xb4, 0x3e, 0x91, 0xa4, 0x6e, 0x3c, 0x31,
    +	0xda, 0x95, 0x9d, 0xf7, 0xd0, 0xbc, 0xdc, 0x29, 0x03, 0x0a, 0xce, 0x06, 0xf1, 0x85, 0x40, 0xb1,
    +	0x35, 0x1a, 0x6f, 0xa3, 0x4f, 0x7b, 0xa7, 0xd4, 0x91, 0x47, 0x54, 0x12, 0x1b, 0x9e, 0x4f, 0x9b,
    +	0x1b, 0xd1, 0xb4, 0x09, 0xe6, 0x77, 0x38, 0x45, 0x85, 0x0c, 0x6c, 0x79, 0x7e, 0x9f, 0x9e, 0xf8,
    +	0x81, 0x3f, 0xf2, 0x07, 0x93, 0x7a, 0x41, 0xb1, 0xbc, 0xbf, 0x1e, 0xcb, 0x21, 0xe9, 0xd1, 0x51,
    +	0x97, 0x8e, 0xa8, 0x23, 0x7d, 0x6e, 0x57, 0xa3, 0x69, 0x73, 0xeb, 0x38, 0x03, 0x86, 0x2f, 0x41,
    +	0xc3, 0x3d, 0x50, 0xd5, 0xfa, 0xd8, 0x1d, 0x11, 0x21, 0x8e, 0x89, 0x4b, 0xeb, 0xc5, 0x27, 0x46,
    +	0xfb, 0x9e, 0x5d, 0xd7, 0x21, 0x56, 0xbb, 0x0b, 0xef, 0x38, 0xe7, 0x01, 0xbf, 0x04, 0x65, 0x47,
    +	0x97, 0xa7, 0x5e, 0x52, 0xc1, 0xa2, 0xab, 0x82, 0x45, 0x33, 0x45, 0xa0, 0xcf, 0x42, 0xe2, 0x49,
    +	0x26, 0x27, 0xf6, 0x56, 0x34, 0x6d, 0x96, 0x67, 0x25, 0xc6, 0x29, 0x1a, 0x14, 0xe0, 0x81, 0x4b,
    +	0xbe, 0x67, 0x6e, 0xe8, 0x7e, 0xee, 0x8f, 0x42, 0x97, 0x76, 0xd9, 0x0f, 0xb4, 0xbe, 0x79, 0x23,
    +	0x8a, 0x87, 0xd1, 0xb4, 0xf9, 0xe0, 0x68, 0x11, 0x0c, 0xe7, 0xf1, 0x5b, 0xbf, 0x19, 0xe0, 0x51,
    +	0xbe, 0xf1, 0x87, 0x4c, 0x48, 0xf8, 0x4d, 0xae, 0xf9, 0x68, 0xcd, 0xb6, 0x30, 0x91, 0xb4, 0xbe,
    +	0xaa, 0xeb, 0x5a, 0x9e, 0xdd, 0x64, 0x1a, 0x7f, 0x02, 0x36, 0x99, 0xa4, 0xae, 0xa8, 0x17, 0x9e,
    +	0x14, 0xdb, 0x95, 0x1d, 0x0b, 0x5d, 0x31, 0xc6, 0x28, 0x1f, 0xa1, 0xfd, 0x9a, 0xc6, 0xde, 0x3c,
    +	0x88, 0x51, 0x70, 0x02, 0xd6, 0xfa, 0xb5, 0x00, 0xaa, 0x49, 0x76, 0x1d, 0x29, 0x89, 0x33, 0x74,
    +	0xa9, 0x27, 0x6f, 0x41, 0xc5, 0x5d, 0x50, 0x12, 0x01, 0x75, 0xb4, 0x7a, 0xb7, 0xaf, 0xcc, 0x65,
    +	0x31, 0xbc, 0x6e, 0x40, 0x1d, 0x7b, 0x4b, 0xc3, 0x97, 0xe2, 0x13, 0x56, 0x60, 0xf0, 0x6b, 0x70,
    +	0x47, 0x48, 0x22, 0x43, 0xa1, 0x54, 0x7a, 0x79, 0x28, 0xd6, 0x80, 0x55, 0xae, 0xf6, 0xeb, 0x1a,
    +	0xf8, 0x4e, 0x72, 0xc6, 0x1a, 0xb2, 0x75, 0x6e, 0x80, 0xda, 0xa2, 0xcb, 0x2d, 0x74, 0x1d, 0x5f,
    +	0xee, 0xfa, 0xd3, 0x6b, 0xa5, 0xb4, 0xa2, 0xe7, 0x2f, 0x0d, 0xf0, 0x28, 0x97, 0xbd, 0x1a, 0x08,
    +	0x78, 0x08, 0x6a, 0x01, 0xe5, 0x82, 0x09, 0x49, 0x3d, 0x99, 0xd8, 0xa8, 0xb1, 0x37, 0x92, 0xb1,
    +	0x8f, 0xa6, 0xcd, 0xda, 0xf3, 0x25, 0xef, 0x78, 0xa9, 0x17, 0x3c, 0x05, 0x55, 0xe6, 0x8d, 0x98,
    +	0x47, 0xf5, 0xfc, 0xcc, 0x3b, 0xde, 0xce, 0xe6, 0x11, 0x7f, 0x38, 0xe2, 0x82, 0x2c, 0x22, 0xab,
    +	0x46, 0xd7, 0xe2, 0x35, 0x73, 0xb0, 0x80, 0x82, 0x73, 0xb8, 0xad, 0xdf, 0x97, 0xf4, 0x27, 0x7e,
    +	0x80, 0xef, 0x82, 0x32, 0x51, 0x37, 0x94, 0xeb, 0x34, 0xd2, 0x7a, 0x77, 0xf4, 0x3d, 0x4e, 0x2d,
    +	0x94, 0x86, 0x54, 0x29, 0x96, 0x2c, 0xd6, 0x35, 0x34, 0xa4, 0x5c, 0x33, 0x1a, 0x52, 0x67, 0xac,
    +	0x21, 0xe3, 0x50, 0xe2, 0x05, 0x9b, 0x59, 0xa4, 0x69, 0x28, 0xc7, 0xfa, 0x1e, 0xa7, 0x16, 0xad,
    +	0x7f, 0x8b, 0x4b, 0xda, 0xa4, 0xc4, 0x98, 0xc9, 0xa9, 0xaf, 0x72, 0x2a, 0xe7, 0x72, 0xea, 0xa7,
    +	0x39, 0xf5, 0xe1, 0x2f, 0x06, 0x80, 0x24, 0x85, 0x38, 0x9a, 0x89, 0x35, 0x51, 0xd4, 0x27, 0x37,
    +	0x18, 0x12, 0xd4, 0xc9, 0xa1, 0xed, 0x7b, 0x92, 0x4f, 0xec, 0x86, 0x8e, 0x02, 0xe6, 0x0d, 0xf0,
    +	0x92, 0x10, 0xe0, 0x29, 0xa8, 0x24, 0xb7, 0xfb, 0x9c, 0xfb, 0x5c, 0x8f, 0x6d, 0x7b, 0x8d, 0x88,
    +	0x94, 0xbd, 0x6d, 0x46, 0xd3, 0x66, 0xa5, 0x33, 0x07, 0xf8, 0x67, 0xda, 0xac, 0x64, 0xde, 0x71,
    +	0x16, 0x3c, 0xe6, 0xea, 0xd3, 0x39, 0x57, 0xe9, 0x26, 0x5c, 0x7b, 0x74, 0x35, 0x57, 0x06, 0xbc,
    +	0xb1, 0x0f, 0xde, 0x58, 0x51, 0x22, 0x58, 0x05, 0xc5, 0x33, 0x3a, 0x49, 0x94, 0x88, 0xe3, 0x9f,
    +	0xb0, 0x06, 0x36, 0xc7, 0x64, 0x14, 0x26, 0x8a, 0xbb, 0x87, 0x93, 0xc3, 0x47, 0x85, 0x67, 0x46,
    +	0xeb, 0xaf, 0x02, 0x78, 0x98, 0x76, 0x80, 0xb3, 0x5e, 0x28, 0xa9, 0x50, 0x1f, 0xd6, 0x5b, 0xd8,
    +	0xd0, 0x3b, 0x00, 0xf4, 0x39, 0x1b, 0x53, 0xae, 0xd4, 0xaa, 0x42, 0x9b, 0x7b, 0xec, 0xa5, 0x2f,
    +	0x38, 0x63, 0x05, 0xc7, 0x00, 0x04, 0x84, 0x13, 0x97, 0x4a, 0xca, 0xe3, 0x25, 0x1c, 0xeb, 0xcb,
    +	0x5e, 0x4f, 0x5f, 0xd9, 0xec, 0xd0, 0xf3, 0x14, 0x24, 0x91, 0x55, 0xca, 0x3b, 0x7f, 0xc0, 0x19,
    +	0xa6, 0xc6, 0xc7, 0xe0, 0xfe, 0x82, 0xcb, 0xb5, 0xca, 0xfc, 0xd2, 0x00, 0x6f, 0x2e, 0x0d, 0xe4,
    +	0x16, 0xf6, 0xfb, 0x17, 0x97, 0xf7, 0xfb, 0xce, 0xf5, 0xab, 0xb5, 0x62, 0xc9, 0xff, 0x64, 0x80,
    +	0xac, 0x3e, 0xe1, 0x21, 0x28, 0xc5, 0x7f, 0xcf, 0xea, 0x14, 0xde, 0x5e, 0x2f, 0x85, 0x13, 0xe6,
    +	0xd2, 0xf9, 0xa7, 0x36, 0x3e, 0x61, 0x85, 0x02, 0xdf, 0x02, 0x77, 0x5d, 0x2a, 0x04, 0x19, 0xcc,
    +	0xa4, 0x71, 0x5f, 0x1b, 0xdd, 0x3d, 0x4a, 0xae, 0xf1, 0xec, 0xdd, 0xee, 0x9c, 0x5f, 0x98, 0x1b,
    +	0x2f, 0x2e, 0xcc, 0x8d, 0x57, 0x17, 0xe6, 0xc6, 0x8f, 0x91, 0x69, 0x9c, 0x47, 0xa6, 0xf1, 0x22,
    +	0x32, 0x8d, 0x57, 0x91, 0x69, 0xfc, 0x11, 0x99, 0xc6, 0xcf, 0x7f, 0x9a, 0x1b, 0x5f, 0x3d, 0xbe,
    +	0xe2, 0x3f, 0x98, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x19, 0x2c, 0xaa, 0xdf, 0x0c, 0x00,
    +	0x00,
     }
     
     func (m *CSIStorageCapacity) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/api/storage/v1alpha1/generated.proto b/vendor/k8s.io/api/storage/v1alpha1/generated.proto
    index 49e522be53cb..79acbebd8317 100644
    --- a/vendor/k8s.io/api/storage/v1alpha1/generated.proto
    +++ b/vendor/k8s.io/api/storage/v1alpha1/generated.proto
    @@ -65,7 +65,7 @@ message CSIStorageCapacity {
       //
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // nodeTopology defines which nodes have access to the storage
       // for which capacity was reported. If not set, the storage is
    @@ -74,7 +74,7 @@ message CSIStorageCapacity {
       // immutable.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector nodeTopology = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector nodeTopology = 2;
     
       // storageClassName represents the name of the StorageClass that the reported capacity applies to.
       // It must meet the same requirements as the name of a StorageClass
    @@ -94,7 +94,7 @@ message CSIStorageCapacity {
       // unavailable.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity capacity = 4;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity capacity = 4;
     
       // maximumVolumeSize is the value reported by the CSI driver in its GetCapacityResponse
       // for a GetCapacityRequest with topology and parameters that match the
    @@ -108,7 +108,7 @@ message CSIStorageCapacity {
       // API is ResourceRequirements.Requests in a volume claim.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity maximumVolumeSize = 5;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity maximumVolumeSize = 5;
     }
     
     // CSIStorageCapacityList is a collection of CSIStorageCapacity objects.
    @@ -116,11 +116,9 @@ message CSIStorageCapacityList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of CSIStorageCapacity objects.
    -  // +listType=map
    -  // +listMapKey=name
       repeated CSIStorageCapacity items = 2;
     }
     
    @@ -132,7 +130,7 @@ message VolumeAttachment {
       // Standard object metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec represents specification of the desired attach/detach volume behavior.
       // Populated by the Kubernetes system.
    @@ -150,15 +148,15 @@ message VolumeAttachmentList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of VolumeAttachments
       repeated VolumeAttachment items = 2;
     }
     
     // VolumeAttachmentSource represents a volume that should be attached.
    -// Right now only PersistenVolumes can be attached via external attacher,
    -// in future we may allow also inline volumes in pods.
    +// Right now only PersistentVolumes can be attached via external attacher,
    +// in the future we may allow also inline volumes in pods.
     // Exactly one member can be set.
     message VolumeAttachmentSource {
       // persistentVolumeName represents the name of the persistent volume to attach.
    @@ -172,7 +170,7 @@ message VolumeAttachmentSource {
       // PersistentVolumeSpec. This field is alpha-level and is only
       // honored by servers that enabled the CSIMigration feature.
       // +optional
    -  optional k8s.io.api.core.v1.PersistentVolumeSpec inlineVolumeSpec = 2;
    +  optional .k8s.io.api.core.v1.PersistentVolumeSpec inlineVolumeSpec = 2;
     }
     
     // VolumeAttachmentSpec is the specification of a VolumeAttachment request.
    @@ -223,7 +221,7 @@ message VolumeAttributesClass {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // Name of the CSI driver
       // This field is immutable.
    @@ -250,7 +248,7 @@ message VolumeAttributesClassList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of VolumeAttributesClass objects.
       repeated VolumeAttributesClass items = 2;
    @@ -260,7 +258,7 @@ message VolumeAttributesClassList {
     message VolumeError {
       // time represents the time the error was encountered.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time time = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time time = 1;
     
       // message represents the error encountered during Attach or Detach operation.
       // This string maybe logged, so it should not contain sensitive
    diff --git a/vendor/k8s.io/api/storage/v1alpha1/types.go b/vendor/k8s.io/api/storage/v1alpha1/types.go
    index 5957e4807493..7ef7353ebceb 100644
    --- a/vendor/k8s.io/api/storage/v1alpha1/types.go
    +++ b/vendor/k8s.io/api/storage/v1alpha1/types.go
    @@ -84,8 +84,8 @@ type VolumeAttachmentSpec struct {
     }
     
     // VolumeAttachmentSource represents a volume that should be attached.
    -// Right now only PersistenVolumes can be attached via external attacher,
    -// in future we may allow also inline volumes in pods.
    +// Right now only PersistentVolumes can be attached via external attacher,
    +// in the future we may allow also inline volumes in pods.
     // Exactly one member can be set.
     type VolumeAttachmentSource struct {
     	// persistentVolumeName represents the name of the persistent volume to attach.
    @@ -247,8 +247,6 @@ type CSIStorageCapacityList struct {
     	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
     
     	// items is the list of CSIStorageCapacity objects.
    -	// +listType=map
    -	// +listMapKey=name
     	Items []CSIStorageCapacity `json:"items" protobuf:"bytes,2,rep,name=items"`
     }
     
    diff --git a/vendor/k8s.io/api/storage/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/storage/v1alpha1/types_swagger_doc_generated.go
    index ac87dbdca34e..e44f37b2dd19 100644
    --- a/vendor/k8s.io/api/storage/v1alpha1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/storage/v1alpha1/types_swagger_doc_generated.go
    @@ -72,7 +72,7 @@ func (VolumeAttachmentList) SwaggerDoc() map[string]string {
     }
     
     var map_VolumeAttachmentSource = map[string]string{
    -	"":                     "VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.",
    +	"":                     "VolumeAttachmentSource represents a volume that should be attached. Right now only PersistentVolumes can be attached via external attacher, in the future we may allow also inline volumes in pods. Exactly one member can be set.",
     	"persistentVolumeName": "persistentVolumeName represents the name of the persistent volume to attach.",
     }
     
    diff --git a/vendor/k8s.io/api/storage/v1beta1/generated.pb.go b/vendor/k8s.io/api/storage/v1beta1/generated.pb.go
    index 42ef65ca0fa3..446a40c483da 100644
    --- a/vendor/k8s.io/api/storage/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/storage/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/api/storage/v1beta1/generated.proto
    +// source: k8s.io/api/storage/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -51,7 +51,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *CSIDriver) Reset()      { *m = CSIDriver{} }
     func (*CSIDriver) ProtoMessage() {}
     func (*CSIDriver) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{0}
    +	return fileDescriptor_73e4f72503e71065, []int{0}
     }
     func (m *CSIDriver) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -79,7 +79,7 @@ var xxx_messageInfo_CSIDriver proto.InternalMessageInfo
     func (m *CSIDriverList) Reset()      { *m = CSIDriverList{} }
     func (*CSIDriverList) ProtoMessage() {}
     func (*CSIDriverList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{1}
    +	return fileDescriptor_73e4f72503e71065, []int{1}
     }
     func (m *CSIDriverList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,7 +107,7 @@ var xxx_messageInfo_CSIDriverList proto.InternalMessageInfo
     func (m *CSIDriverSpec) Reset()      { *m = CSIDriverSpec{} }
     func (*CSIDriverSpec) ProtoMessage() {}
     func (*CSIDriverSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{2}
    +	return fileDescriptor_73e4f72503e71065, []int{2}
     }
     func (m *CSIDriverSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,7 +135,7 @@ var xxx_messageInfo_CSIDriverSpec proto.InternalMessageInfo
     func (m *CSINode) Reset()      { *m = CSINode{} }
     func (*CSINode) ProtoMessage() {}
     func (*CSINode) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{3}
    +	return fileDescriptor_73e4f72503e71065, []int{3}
     }
     func (m *CSINode) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -163,7 +163,7 @@ var xxx_messageInfo_CSINode proto.InternalMessageInfo
     func (m *CSINodeDriver) Reset()      { *m = CSINodeDriver{} }
     func (*CSINodeDriver) ProtoMessage() {}
     func (*CSINodeDriver) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{4}
    +	return fileDescriptor_73e4f72503e71065, []int{4}
     }
     func (m *CSINodeDriver) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -191,7 +191,7 @@ var xxx_messageInfo_CSINodeDriver proto.InternalMessageInfo
     func (m *CSINodeList) Reset()      { *m = CSINodeList{} }
     func (*CSINodeList) ProtoMessage() {}
     func (*CSINodeList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{5}
    +	return fileDescriptor_73e4f72503e71065, []int{5}
     }
     func (m *CSINodeList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -219,7 +219,7 @@ var xxx_messageInfo_CSINodeList proto.InternalMessageInfo
     func (m *CSINodeSpec) Reset()      { *m = CSINodeSpec{} }
     func (*CSINodeSpec) ProtoMessage() {}
     func (*CSINodeSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{6}
    +	return fileDescriptor_73e4f72503e71065, []int{6}
     }
     func (m *CSINodeSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -247,7 +247,7 @@ var xxx_messageInfo_CSINodeSpec proto.InternalMessageInfo
     func (m *CSIStorageCapacity) Reset()      { *m = CSIStorageCapacity{} }
     func (*CSIStorageCapacity) ProtoMessage() {}
     func (*CSIStorageCapacity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{7}
    +	return fileDescriptor_73e4f72503e71065, []int{7}
     }
     func (m *CSIStorageCapacity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -275,7 +275,7 @@ var xxx_messageInfo_CSIStorageCapacity proto.InternalMessageInfo
     func (m *CSIStorageCapacityList) Reset()      { *m = CSIStorageCapacityList{} }
     func (*CSIStorageCapacityList) ProtoMessage() {}
     func (*CSIStorageCapacityList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{8}
    +	return fileDescriptor_73e4f72503e71065, []int{8}
     }
     func (m *CSIStorageCapacityList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -303,7 +303,7 @@ var xxx_messageInfo_CSIStorageCapacityList proto.InternalMessageInfo
     func (m *StorageClass) Reset()      { *m = StorageClass{} }
     func (*StorageClass) ProtoMessage() {}
     func (*StorageClass) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{9}
    +	return fileDescriptor_73e4f72503e71065, []int{9}
     }
     func (m *StorageClass) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -331,7 +331,7 @@ var xxx_messageInfo_StorageClass proto.InternalMessageInfo
     func (m *StorageClassList) Reset()      { *m = StorageClassList{} }
     func (*StorageClassList) ProtoMessage() {}
     func (*StorageClassList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{10}
    +	return fileDescriptor_73e4f72503e71065, []int{10}
     }
     func (m *StorageClassList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -359,7 +359,7 @@ var xxx_messageInfo_StorageClassList proto.InternalMessageInfo
     func (m *TokenRequest) Reset()      { *m = TokenRequest{} }
     func (*TokenRequest) ProtoMessage() {}
     func (*TokenRequest) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{11}
    +	return fileDescriptor_73e4f72503e71065, []int{11}
     }
     func (m *TokenRequest) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -387,7 +387,7 @@ var xxx_messageInfo_TokenRequest proto.InternalMessageInfo
     func (m *VolumeAttachment) Reset()      { *m = VolumeAttachment{} }
     func (*VolumeAttachment) ProtoMessage() {}
     func (*VolumeAttachment) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{12}
    +	return fileDescriptor_73e4f72503e71065, []int{12}
     }
     func (m *VolumeAttachment) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -415,7 +415,7 @@ var xxx_messageInfo_VolumeAttachment proto.InternalMessageInfo
     func (m *VolumeAttachmentList) Reset()      { *m = VolumeAttachmentList{} }
     func (*VolumeAttachmentList) ProtoMessage() {}
     func (*VolumeAttachmentList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{13}
    +	return fileDescriptor_73e4f72503e71065, []int{13}
     }
     func (m *VolumeAttachmentList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -443,7 +443,7 @@ var xxx_messageInfo_VolumeAttachmentList proto.InternalMessageInfo
     func (m *VolumeAttachmentSource) Reset()      { *m = VolumeAttachmentSource{} }
     func (*VolumeAttachmentSource) ProtoMessage() {}
     func (*VolumeAttachmentSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{14}
    +	return fileDescriptor_73e4f72503e71065, []int{14}
     }
     func (m *VolumeAttachmentSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -471,7 +471,7 @@ var xxx_messageInfo_VolumeAttachmentSource proto.InternalMessageInfo
     func (m *VolumeAttachmentSpec) Reset()      { *m = VolumeAttachmentSpec{} }
     func (*VolumeAttachmentSpec) ProtoMessage() {}
     func (*VolumeAttachmentSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{15}
    +	return fileDescriptor_73e4f72503e71065, []int{15}
     }
     func (m *VolumeAttachmentSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -499,7 +499,7 @@ var xxx_messageInfo_VolumeAttachmentSpec proto.InternalMessageInfo
     func (m *VolumeAttachmentStatus) Reset()      { *m = VolumeAttachmentStatus{} }
     func (*VolumeAttachmentStatus) ProtoMessage() {}
     func (*VolumeAttachmentStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{16}
    +	return fileDescriptor_73e4f72503e71065, []int{16}
     }
     func (m *VolumeAttachmentStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -524,10 +524,66 @@ func (m *VolumeAttachmentStatus) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_VolumeAttachmentStatus proto.InternalMessageInfo
     
    +func (m *VolumeAttributesClass) Reset()      { *m = VolumeAttributesClass{} }
    +func (*VolumeAttributesClass) ProtoMessage() {}
    +func (*VolumeAttributesClass) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_73e4f72503e71065, []int{17}
    +}
    +func (m *VolumeAttributesClass) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *VolumeAttributesClass) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *VolumeAttributesClass) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_VolumeAttributesClass.Merge(m, src)
    +}
    +func (m *VolumeAttributesClass) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *VolumeAttributesClass) XXX_DiscardUnknown() {
    +	xxx_messageInfo_VolumeAttributesClass.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_VolumeAttributesClass proto.InternalMessageInfo
    +
    +func (m *VolumeAttributesClassList) Reset()      { *m = VolumeAttributesClassList{} }
    +func (*VolumeAttributesClassList) ProtoMessage() {}
    +func (*VolumeAttributesClassList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_73e4f72503e71065, []int{18}
    +}
    +func (m *VolumeAttributesClassList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *VolumeAttributesClassList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *VolumeAttributesClassList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_VolumeAttributesClassList.Merge(m, src)
    +}
    +func (m *VolumeAttributesClassList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *VolumeAttributesClassList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_VolumeAttributesClassList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_VolumeAttributesClassList proto.InternalMessageInfo
    +
     func (m *VolumeError) Reset()      { *m = VolumeError{} }
     func (*VolumeError) ProtoMessage() {}
     func (*VolumeError) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{17}
    +	return fileDescriptor_73e4f72503e71065, []int{19}
     }
     func (m *VolumeError) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -555,7 +611,7 @@ var xxx_messageInfo_VolumeError proto.InternalMessageInfo
     func (m *VolumeNodeResources) Reset()      { *m = VolumeNodeResources{} }
     func (*VolumeNodeResources) ProtoMessage() {}
     func (*VolumeNodeResources) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7d2980599fd0de80, []int{18}
    +	return fileDescriptor_73e4f72503e71065, []int{20}
     }
     func (m *VolumeNodeResources) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -600,121 +656,127 @@ func init() {
     	proto.RegisterType((*VolumeAttachmentSpec)(nil), "k8s.io.api.storage.v1beta1.VolumeAttachmentSpec")
     	proto.RegisterType((*VolumeAttachmentStatus)(nil), "k8s.io.api.storage.v1beta1.VolumeAttachmentStatus")
     	proto.RegisterMapType((map[string]string)(nil), "k8s.io.api.storage.v1beta1.VolumeAttachmentStatus.AttachmentMetadataEntry")
    +	proto.RegisterType((*VolumeAttributesClass)(nil), "k8s.io.api.storage.v1beta1.VolumeAttributesClass")
    +	proto.RegisterMapType((map[string]string)(nil), "k8s.io.api.storage.v1beta1.VolumeAttributesClass.ParametersEntry")
    +	proto.RegisterType((*VolumeAttributesClassList)(nil), "k8s.io.api.storage.v1beta1.VolumeAttributesClassList")
     	proto.RegisterType((*VolumeError)(nil), "k8s.io.api.storage.v1beta1.VolumeError")
     	proto.RegisterType((*VolumeNodeResources)(nil), "k8s.io.api.storage.v1beta1.VolumeNodeResources")
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/storage/v1beta1/generated.proto", fileDescriptor_7d2980599fd0de80)
    -}
    -
    -var fileDescriptor_7d2980599fd0de80 = []byte{
    -	// 1672 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x6f, 0x1b, 0x4d,
    -	0x19, 0xcf, 0xc6, 0xce, 0xd7, 0x38, 0x69, 0x92, 0x49, 0x5a, 0x8c, 0x0f, 0x76, 0x64, 0x04, 0x4d,
    -	0xab, 0xb2, 0x6e, 0x43, 0xa9, 0xaa, 0x4a, 0x95, 0xc8, 0x26, 0x81, 0xba, 0x8d, 0xd3, 0x74, 0x1c,
    -	0x55, 0x55, 0xc5, 0x81, 0xf1, 0xee, 0xc4, 0x99, 0xc6, 0xfb, 0xd1, 0x9d, 0xd9, 0x10, 0x73, 0x82,
    -	0x0b, 0x67, 0xc4, 0x81, 0xbf, 0x80, 0x7f, 0x01, 0x24, 0xb8, 0x70, 0xa4, 0x12, 0x12, 0xaa, 0xb8,
    -	0xd0, 0x93, 0x45, 0xcd, 0x9f, 0xf0, 0x4a, 0xef, 0x21, 0x7a, 0x0f, 0xaf, 0x66, 0x76, 0xec, 0xfd,
    -	0xb2, 0x9b, 0xe4, 0x3d, 0xf8, 0xe6, 0x79, 0x3e, 0x7e, 0xcf, 0x33, 0xf3, 0x7c, 0xae, 0xc1, 0xce,
    -	0xe9, 0x63, 0xa6, 0x53, 0xb7, 0x76, 0x1a, 0xb4, 0x88, 0xef, 0x10, 0x4e, 0x58, 0xed, 0x8c, 0x38,
    -	0x96, 0xeb, 0xd7, 0x14, 0x03, 0x7b, 0xb4, 0xc6, 0xb8, 0xeb, 0xe3, 0x36, 0xa9, 0x9d, 0x3d, 0x68,
    -	0x11, 0x8e, 0x1f, 0xd4, 0xda, 0xc4, 0x21, 0x3e, 0xe6, 0xc4, 0xd2, 0x3d, 0xdf, 0xe5, 0x2e, 0x2c,
    -	0x85, 0xb2, 0x3a, 0xf6, 0xa8, 0xae, 0x64, 0x75, 0x25, 0x5b, 0xfa, 0x71, 0x9b, 0xf2, 0x93, 0xa0,
    -	0xa5, 0x9b, 0xae, 0x5d, 0x6b, 0xbb, 0x6d, 0xb7, 0x26, 0x55, 0x5a, 0xc1, 0xb1, 0x3c, 0xc9, 0x83,
    -	0xfc, 0x15, 0x42, 0x95, 0xaa, 0x31, 0xb3, 0xa6, 0xeb, 0x0b, 0x9b, 0x69, 0x73, 0xa5, 0x87, 0x91,
    -	0x8c, 0x8d, 0xcd, 0x13, 0xea, 0x10, 0xbf, 0x5b, 0xf3, 0x4e, 0xdb, 0x52, 0xc9, 0x27, 0xcc, 0x0d,
    -	0x7c, 0x93, 0x5c, 0x4b, 0x8b, 0xd5, 0x6c, 0xc2, 0xf1, 0x28, 0x5b, 0xb5, 0x71, 0x5a, 0x7e, 0xe0,
    -	0x70, 0x6a, 0x67, 0xcd, 0x3c, 0xba, 0x4c, 0x81, 0x99, 0x27, 0xc4, 0xc6, 0x69, 0xbd, 0xea, 0xdf,
    -	0x35, 0xb0, 0xb0, 0xd3, 0xac, 0xef, 0xfa, 0xf4, 0x8c, 0xf8, 0xf0, 0x57, 0x60, 0x5e, 0x78, 0x64,
    -	0x61, 0x8e, 0x8b, 0xda, 0x86, 0xb6, 0x59, 0xd8, 0xba, 0xaf, 0x47, 0x8f, 0x3c, 0x04, 0xd6, 0xbd,
    -	0xd3, 0xb6, 0x20, 0x30, 0x5d, 0x48, 0xeb, 0x67, 0x0f, 0xf4, 0x97, 0xad, 0x77, 0xc4, 0xe4, 0x0d,
    -	0xc2, 0xb1, 0x01, 0x3f, 0xf4, 0x2a, 0x53, 0xfd, 0x5e, 0x05, 0x44, 0x34, 0x34, 0x44, 0x85, 0x2f,
    -	0x40, 0x9e, 0x79, 0xc4, 0x2c, 0x4e, 0x4b, 0xf4, 0x3b, 0xfa, 0xf8, 0x10, 0xea, 0x43, 0xb7, 0x9a,
    -	0x1e, 0x31, 0x8d, 0x45, 0x05, 0x9b, 0x17, 0x27, 0x24, 0x41, 0xaa, 0x7f, 0xd3, 0xc0, 0xd2, 0x50,
    -	0x6a, 0x9f, 0x32, 0x0e, 0x7f, 0x99, 0xb9, 0x80, 0x7e, 0xb5, 0x0b, 0x08, 0x6d, 0xe9, 0xfe, 0x8a,
    -	0xb2, 0x33, 0x3f, 0xa0, 0xc4, 0x9c, 0x7f, 0x0e, 0x66, 0x28, 0x27, 0x36, 0x2b, 0x4e, 0x6f, 0xe4,
    -	0x36, 0x0b, 0x5b, 0x3f, 0xbc, 0x92, 0xf7, 0xc6, 0x92, 0x42, 0x9c, 0xa9, 0x0b, 0x5d, 0x14, 0x42,
    -	0x54, 0xff, 0x9b, 0x8f, 0xf9, 0x2e, 0xee, 0x04, 0x9f, 0x80, 0x1b, 0x98, 0x73, 0x6c, 0x9e, 0x20,
    -	0xf2, 0x3e, 0xa0, 0x3e, 0xb1, 0xe4, 0x0d, 0xe6, 0x0d, 0xd8, 0xef, 0x55, 0x6e, 0x6c, 0x27, 0x38,
    -	0x28, 0x25, 0x29, 0x74, 0x3d, 0xd7, 0xaa, 0x3b, 0xc7, 0xee, 0x4b, 0xa7, 0xe1, 0x06, 0x0e, 0x97,
    -	0x0f, 0xac, 0x74, 0x0f, 0x13, 0x1c, 0x94, 0x92, 0x84, 0x26, 0x58, 0x3f, 0x73, 0x3b, 0x81, 0x4d,
    -	0xf6, 0xe9, 0x31, 0x31, 0xbb, 0x66, 0x87, 0x34, 0x5c, 0x8b, 0xb0, 0x62, 0x6e, 0x23, 0xb7, 0xb9,
    -	0x60, 0xd4, 0xfa, 0xbd, 0xca, 0xfa, 0xeb, 0x11, 0xfc, 0x8b, 0x5e, 0x65, 0x6d, 0x04, 0x1d, 0x8d,
    -	0x04, 0x83, 0x4f, 0xc1, 0xb2, 0x7a, 0xa1, 0x1d, 0xec, 0x61, 0x93, 0xf2, 0x6e, 0x31, 0x2f, 0x3d,
    -	0x5c, 0xeb, 0xf7, 0x2a, 0xcb, 0xcd, 0x24, 0x0b, 0xa5, 0x65, 0xe1, 0x33, 0xb0, 0x74, 0xcc, 0x7e,
    -	0xe1, 0xbb, 0x81, 0x77, 0xe8, 0x76, 0xa8, 0xd9, 0x2d, 0xce, 0x6c, 0x68, 0x9b, 0x0b, 0x46, 0xb5,
    -	0xdf, 0xab, 0x2c, 0xfd, 0xbc, 0x19, 0x63, 0x5c, 0xa4, 0x09, 0x28, 0xa9, 0x08, 0x09, 0x58, 0xe2,
    -	0xee, 0x29, 0x71, 0xc4, 0xd3, 0x11, 0xc6, 0x59, 0x71, 0x56, 0xc6, 0x72, 0xf3, 0x4b, 0xb1, 0x3c,
    -	0x8a, 0x29, 0x18, 0x37, 0x55, 0x38, 0x97, 0xe2, 0x54, 0x86, 0x92, 0xa8, 0x70, 0x07, 0xac, 0xfa,
    -	0x61, 0x70, 0x18, 0x22, 0x5e, 0xd0, 0xea, 0x50, 0x76, 0x52, 0x9c, 0x93, 0x37, 0xbe, 0xd9, 0xef,
    -	0x55, 0x56, 0x51, 0x9a, 0x89, 0xb2, 0xf2, 0xf0, 0x21, 0x58, 0x64, 0x64, 0x9f, 0x3a, 0xc1, 0x79,
    -	0x18, 0xd3, 0x79, 0xa9, 0xbf, 0xd2, 0xef, 0x55, 0x16, 0x9b, 0x7b, 0x11, 0x1d, 0x25, 0xa4, 0xaa,
    -	0x7f, 0xd5, 0xc0, 0xdc, 0x4e, 0xb3, 0x7e, 0xe0, 0x5a, 0x64, 0x02, 0x05, 0x5d, 0x4f, 0x14, 0xf4,
    -	0xed, 0x4b, 0x4a, 0x42, 0x38, 0x35, 0xb6, 0x9c, 0xbf, 0x0a, 0xcb, 0x59, 0xc8, 0xa8, 0x7e, 0xb4,
    -	0x01, 0xf2, 0x0e, 0xb6, 0x89, 0x74, 0x7d, 0x21, 0xd2, 0x39, 0xc0, 0x36, 0x41, 0x92, 0x03, 0x7f,
    -	0x04, 0x66, 0x1d, 0xd7, 0x22, 0xf5, 0x5d, 0xe9, 0xc0, 0x82, 0x71, 0x43, 0xc9, 0xcc, 0x1e, 0x48,
    -	0x2a, 0x52, 0x5c, 0xf1, 0x94, 0xdc, 0xf5, 0xdc, 0x8e, 0xdb, 0xee, 0xbe, 0x20, 0xdd, 0x41, 0x72,
    -	0xcb, 0xa7, 0x3c, 0x8a, 0xd1, 0x51, 0x42, 0x0a, 0xb6, 0x40, 0x01, 0x77, 0x3a, 0xae, 0x89, 0x39,
    -	0x6e, 0x75, 0x88, 0xcc, 0xd8, 0xc2, 0x56, 0xed, 0x4b, 0x77, 0x0c, 0x2b, 0x42, 0x18, 0x47, 0x6a,
    -	0x22, 0x30, 0x63, 0xb9, 0xdf, 0xab, 0x14, 0xb6, 0x23, 0x1c, 0x14, 0x07, 0xad, 0xfe, 0x45, 0x03,
    -	0x05, 0x75, 0xeb, 0x09, 0xb4, 0xb0, 0x67, 0xc9, 0x16, 0xf6, 0x83, 0x2b, 0xc4, 0x6b, 0x4c, 0x03,
    -	0x33, 0x87, 0x6e, 0xcb, 0xee, 0x75, 0x04, 0xe6, 0x2c, 0x19, 0x34, 0x56, 0xd4, 0x24, 0xf4, 0x9d,
    -	0x2b, 0x40, 0xab, 0x0e, 0xb9, 0xac, 0x0c, 0xcc, 0x85, 0x67, 0x86, 0x06, 0x50, 0xd5, 0xaf, 0x73,
    -	0x00, 0xee, 0x34, 0xeb, 0xa9, 0xfe, 0x30, 0x81, 0xb4, 0xa6, 0x60, 0x51, 0x64, 0xce, 0x20, 0x37,
    -	0x54, 0x7a, 0xff, 0xe4, 0x8a, 0x91, 0xc0, 0x2d, 0xd2, 0x69, 0x92, 0x0e, 0x31, 0xb9, 0xeb, 0x87,
    -	0x49, 0x76, 0x10, 0x03, 0x43, 0x09, 0x68, 0xb8, 0x0b, 0x56, 0x06, 0xed, 0xae, 0x83, 0x19, 0x13,
    -	0xc9, 0x5d, 0xcc, 0xc9, 0x64, 0x2e, 0x2a, 0x17, 0x57, 0x9a, 0x29, 0x3e, 0xca, 0x68, 0xc0, 0x37,
    -	0x60, 0xde, 0x8c, 0x77, 0xd6, 0x4b, 0xd2, 0x46, 0x1f, 0x2c, 0x2c, 0xfa, 0xab, 0x00, 0x3b, 0x9c,
    -	0xf2, 0xae, 0xb1, 0x28, 0x52, 0x66, 0xd8, 0x82, 0x87, 0x68, 0x90, 0x81, 0x55, 0x1b, 0x9f, 0x53,
    -	0x3b, 0xb0, 0xc3, 0xe4, 0x6e, 0xd2, 0xdf, 0x10, 0xd9, 0x7f, 0xaf, 0x6f, 0x42, 0xb6, 0xbe, 0x46,
    -	0x1a, 0x0c, 0x65, 0xf1, 0xab, 0xff, 0xd2, 0xc0, 0xad, 0x6c, 0xe0, 0x27, 0x50, 0x20, 0xcd, 0x64,
    -	0x81, 0xe8, 0x97, 0x64, 0x71, 0xca, 0xc1, 0x31, 0xb5, 0xf2, 0xc7, 0x59, 0xb0, 0x18, 0x8f, 0xe1,
    -	0x04, 0x12, 0xf8, 0xa7, 0xa0, 0xe0, 0xf9, 0xee, 0x19, 0x65, 0xd4, 0x75, 0x88, 0xaf, 0xba, 0xe3,
    -	0x9a, 0x52, 0x29, 0x1c, 0x46, 0x2c, 0x14, 0x97, 0x83, 0x1d, 0x00, 0x3c, 0xec, 0x63, 0x9b, 0x70,
    -	0x51, 0xc9, 0x39, 0xf9, 0x06, 0x8f, 0xbf, 0xf4, 0x06, 0xf1, 0x6b, 0xe9, 0x87, 0x43, 0xd5, 0x3d,
    -	0x87, 0xfb, 0xdd, 0xc8, 0xc5, 0x88, 0x81, 0x62, 0xf8, 0xf0, 0x14, 0x2c, 0xf9, 0xc4, 0xec, 0x60,
    -	0x6a, 0xab, 0xb1, 0x9e, 0x97, 0x6e, 0xee, 0x89, 0xf1, 0x8a, 0xe2, 0x8c, 0x8b, 0x5e, 0xe5, 0x7e,
    -	0x76, 0x45, 0xd7, 0x0f, 0x89, 0xcf, 0x28, 0xe3, 0xc4, 0xe1, 0x61, 0xea, 0x24, 0x74, 0x50, 0x12,
    -	0x5b, 0x8c, 0x00, 0x5b, 0x0c, 0xc8, 0x97, 0x1e, 0xa7, 0xae, 0xc3, 0x8a, 0x33, 0xd1, 0x08, 0x68,
    -	0xc4, 0xe8, 0x28, 0x21, 0x05, 0xf7, 0xc1, 0xba, 0xe8, 0xd6, 0xbf, 0x0e, 0x0d, 0xec, 0x9d, 0x7b,
    -	0xd8, 0x11, 0x4f, 0x55, 0x9c, 0x95, 0xb3, 0xb8, 0x28, 0xb6, 0xa3, 0xed, 0x11, 0x7c, 0x34, 0x52,
    -	0x0b, 0xbe, 0x01, 0xab, 0xe1, 0x7a, 0x64, 0x50, 0xc7, 0xa2, 0x4e, 0x5b, 0x2c, 0x47, 0x72, 0x2d,
    -	0x58, 0x30, 0xee, 0x8a, 0xda, 0x78, 0x9d, 0x66, 0x5e, 0x8c, 0x22, 0xa2, 0x2c, 0x08, 0x7c, 0x0f,
    -	0x56, 0xa5, 0x45, 0x62, 0xa9, 0xc6, 0x42, 0x09, 0x2b, 0xce, 0x67, 0x77, 0x1b, 0xf1, 0x74, 0x22,
    -	0x91, 0x06, 0xed, 0x67, 0xd0, 0xa6, 0x8e, 0x88, 0x6f, 0x1b, 0xdf, 0x57, 0xf1, 0x5a, 0xdd, 0x4e,
    -	0x43, 0xa1, 0x2c, 0x7a, 0xe9, 0x29, 0x58, 0x4e, 0x05, 0x1c, 0xae, 0x80, 0xdc, 0x29, 0xe9, 0x86,
    -	0xf3, 0x1a, 0x89, 0x9f, 0x70, 0x1d, 0xcc, 0x9c, 0xe1, 0x4e, 0x40, 0xc2, 0x0c, 0x44, 0xe1, 0xe1,
    -	0xc9, 0xf4, 0x63, 0xad, 0xfa, 0x0f, 0x0d, 0x24, 0x1a, 0xdb, 0x04, 0x8a, 0xbb, 0x91, 0x2c, 0xee,
    -	0xcd, 0xab, 0x26, 0xf6, 0x98, 0xb2, 0xfe, 0x9d, 0x06, 0x16, 0xe3, 0x5b, 0x20, 0xbc, 0x07, 0xe6,
    -	0x71, 0x60, 0x51, 0xe2, 0x98, 0x83, 0x9d, 0x65, 0xe8, 0xcd, 0xb6, 0xa2, 0xa3, 0xa1, 0x84, 0xd8,
    -	0x11, 0xc9, 0xb9, 0x47, 0x7d, 0x2c, 0x32, 0xad, 0x49, 0x4c, 0xd7, 0xb1, 0x98, 0x7c, 0xa6, 0x5c,
    -	0xd8, 0x28, 0xf7, 0xd2, 0x4c, 0x94, 0x95, 0xaf, 0xfe, 0x79, 0x1a, 0xac, 0x84, 0x09, 0x12, 0x7e,
    -	0x22, 0xd8, 0xc4, 0xe1, 0x13, 0x68, 0x2f, 0x28, 0xb1, 0xf6, 0xdd, 0xbf, 0x7c, 0x25, 0x8a, 0xbc,
    -	0x1b, 0xb7, 0xff, 0xc1, 0xb7, 0x60, 0x96, 0x71, 0xcc, 0x03, 0x26, 0xc7, 0x5f, 0x61, 0x6b, 0xeb,
    -	0x5a, 0xa8, 0x52, 0x33, 0xda, 0xff, 0xc2, 0x33, 0x52, 0x88, 0xd5, 0x7f, 0x6a, 0x60, 0x3d, 0xad,
    -	0x32, 0x81, 0x84, 0x7b, 0x95, 0x4c, 0xb8, 0x7b, 0xd7, 0xb9, 0xd1, 0x98, 0xa4, 0xfb, 0x8f, 0x06,
    -	0x6e, 0x65, 0x2e, 0x2f, 0xe7, 0xac, 0xe8, 0x55, 0x5e, 0xaa, 0x23, 0x1e, 0x44, 0xeb, 0xb3, 0xec,
    -	0x55, 0x87, 0x23, 0xf8, 0x68, 0xa4, 0x16, 0x7c, 0x07, 0x56, 0xa8, 0xd3, 0xa1, 0x0e, 0x51, 0x63,
    -	0x39, 0x0a, 0xf7, 0xc8, 0x86, 0x92, 0x46, 0x96, 0x61, 0x5e, 0x17, 0xdb, 0x4b, 0x3d, 0x85, 0x82,
    -	0x32, 0xb8, 0xd5, 0x7f, 0x8f, 0x08, 0x8f, 0x5c, 0x2b, 0x45, 0x45, 0x49, 0x0a, 0xf1, 0x33, 0x15,
    -	0xa5, 0xe8, 0x68, 0x28, 0x21, 0x33, 0x48, 0x3e, 0x85, 0x72, 0xf4, 0x7a, 0x19, 0x24, 0x35, 0x63,
    -	0x19, 0x24, 0xcf, 0x48, 0x21, 0x0a, 0x4f, 0xc4, 0xda, 0x16, 0x5b, 0xcf, 0x86, 0x9e, 0x1c, 0x28,
    -	0x3a, 0x1a, 0x4a, 0x54, 0xbf, 0xc9, 0x8d, 0x88, 0x92, 0x4c, 0xc5, 0xd8, 0x95, 0x06, 0x5f, 0xf8,
    -	0xe9, 0x2b, 0x59, 0xc3, 0x2b, 0x59, 0xf0, 0x4f, 0x1a, 0x80, 0x78, 0x08, 0xd1, 0x18, 0xa4, 0x6a,
    -	0x98, 0x4f, 0xcf, 0xaf, 0x5f, 0x21, 0xfa, 0x76, 0x06, 0x2c, 0x9c, 0xd5, 0x25, 0xe5, 0x04, 0xcc,
    -	0x0a, 0xa0, 0x11, 0x1e, 0x40, 0x0a, 0x0a, 0x21, 0x75, 0xcf, 0xf7, 0x5d, 0x5f, 0x95, 0xec, 0xed,
    -	0xcb, 0x1d, 0x92, 0xe2, 0x46, 0x59, 0x7e, 0x13, 0x45, 0xfa, 0x17, 0xbd, 0x4a, 0x21, 0xc6, 0x47,
    -	0x71, 0x6c, 0x61, 0xca, 0x22, 0x91, 0xa9, 0xfc, 0x77, 0x30, 0xb5, 0x4b, 0xc6, 0x9b, 0x8a, 0x61,
    -	0x97, 0xf6, 0xc0, 0xf7, 0xc6, 0x3c, 0xd0, 0xb5, 0x66, 0xdb, 0xef, 0x35, 0x10, 0xb7, 0x01, 0xf7,
    -	0x41, 0x9e, 0x53, 0x55, 0x89, 0x85, 0xad, 0xbb, 0x57, 0xeb, 0x30, 0x47, 0xd4, 0x26, 0x51, 0xa3,
    -	0x14, 0x27, 0x24, 0x51, 0xe0, 0x1d, 0x30, 0x67, 0x13, 0xc6, 0x70, 0x5b, 0x59, 0x8e, 0x3e, 0xa0,
    -	0x1a, 0x21, 0x19, 0x0d, 0xf8, 0xd5, 0x47, 0x60, 0x6d, 0xc4, 0x27, 0x29, 0xac, 0x80, 0x19, 0x53,
    -	0xfe, 0xa5, 0x20, 0x1c, 0x9a, 0x31, 0x16, 0x44, 0x97, 0xd9, 0x91, 0xff, 0x25, 0x84, 0x74, 0xe3,
    -	0x67, 0x1f, 0x3e, 0x97, 0xa7, 0x3e, 0x7e, 0x2e, 0x4f, 0x7d, 0xfa, 0x5c, 0x9e, 0xfa, 0x6d, 0xbf,
    -	0xac, 0x7d, 0xe8, 0x97, 0xb5, 0x8f, 0xfd, 0xb2, 0xf6, 0xa9, 0x5f, 0xd6, 0xfe, 0xd7, 0x2f, 0x6b,
    -	0x7f, 0xf8, 0x7f, 0x79, 0xea, 0x6d, 0x69, 0xfc, 0xbf, 0xb5, 0xdf, 0x06, 0x00, 0x00, 0xff, 0xff,
    -	0xee, 0x44, 0x0b, 0xed, 0xe3, 0x15, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/api/storage/v1beta1/generated.proto", fileDescriptor_73e4f72503e71065)
    +}
    +
    +var fileDescriptor_73e4f72503e71065 = []byte{
    +	// 1728 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x6f, 0x23, 0x49,
    +	0x15, 0x4f, 0xc7, 0xce, 0x57, 0x39, 0x99, 0x24, 0x35, 0x99, 0xc5, 0xeb, 0x83, 0x1d, 0x19, 0xc1,
    +	0x66, 0x46, 0x4b, 0x7b, 0x12, 0x96, 0xd5, 0x68, 0xa5, 0x95, 0x48, 0x27, 0x81, 0xf5, 0x6e, 0x9c,
    +	0xc9, 0x96, 0xa3, 0xd1, 0x6a, 0xc5, 0x81, 0x72, 0xbb, 0xe2, 0xd4, 0xc6, 0xfd, 0xb1, 0x5d, 0xd5,
    +	0x21, 0xe6, 0x04, 0x17, 0xce, 0x88, 0x03, 0x7f, 0x01, 0xff, 0x02, 0x48, 0x70, 0xe1, 0xc8, 0x48,
    +	0x48, 0x68, 0xe1, 0xc2, 0x9e, 0x2c, 0xc6, 0xf3, 0x27, 0x20, 0x71, 0x88, 0x38, 0xa0, 0xaa, 0x2e,
    +	0xf7, 0xb7, 0x27, 0x36, 0x2b, 0xf9, 0xe6, 0x7a, 0x1f, 0xbf, 0x7a, 0x55, 0xef, 0xf7, 0x5e, 0xbd,
    +	0x36, 0x78, 0x72, 0xfd, 0x8c, 0xe9, 0xd4, 0x69, 0x60, 0x97, 0x36, 0x18, 0x77, 0x3c, 0xdc, 0x23,
    +	0x8d, 0x9b, 0xfd, 0x0e, 0xe1, 0x78, 0xbf, 0xd1, 0x23, 0x36, 0xf1, 0x30, 0x27, 0x5d, 0xdd, 0xf5,
    +	0x1c, 0xee, 0xc0, 0x4a, 0x60, 0xab, 0x63, 0x97, 0xea, 0xca, 0x56, 0x57, 0xb6, 0x95, 0xef, 0xf5,
    +	0x28, 0xbf, 0xf2, 0x3b, 0xba, 0xe9, 0x58, 0x8d, 0x9e, 0xd3, 0x73, 0x1a, 0xd2, 0xa5, 0xe3, 0x5f,
    +	0xca, 0x95, 0x5c, 0xc8, 0x5f, 0x01, 0x54, 0xa5, 0x1e, 0xdb, 0xd6, 0x74, 0x3c, 0xb1, 0x67, 0x7a,
    +	0xbb, 0xca, 0x7b, 0x91, 0x8d, 0x85, 0xcd, 0x2b, 0x6a, 0x13, 0x6f, 0xd0, 0x70, 0xaf, 0x7b, 0xd2,
    +	0xc9, 0x23, 0xcc, 0xf1, 0x3d, 0x93, 0xcc, 0xe4, 0xc5, 0x1a, 0x16, 0xe1, 0x38, 0x6f, 0xaf, 0xc6,
    +	0x24, 0x2f, 0xcf, 0xb7, 0x39, 0xb5, 0xb2, 0xdb, 0xbc, 0x7f, 0x9f, 0x03, 0x33, 0xaf, 0x88, 0x85,
    +	0xd3, 0x7e, 0xf5, 0x3f, 0x69, 0x60, 0xed, 0xa8, 0xdd, 0x3c, 0xf6, 0xe8, 0x0d, 0xf1, 0xe0, 0x4f,
    +	0xc1, 0xaa, 0x88, 0xa8, 0x8b, 0x39, 0x2e, 0x6b, 0xbb, 0xda, 0x5e, 0xe9, 0xe0, 0xa9, 0x1e, 0x5d,
    +	0x72, 0x08, 0xac, 0xbb, 0xd7, 0x3d, 0x21, 0x60, 0xba, 0xb0, 0xd6, 0x6f, 0xf6, 0xf5, 0xe7, 0x9d,
    +	0x2f, 0x88, 0xc9, 0x5b, 0x84, 0x63, 0x03, 0xbe, 0x1c, 0xd6, 0x16, 0x46, 0xc3, 0x1a, 0x88, 0x64,
    +	0x28, 0x44, 0x85, 0x9f, 0x80, 0x22, 0x73, 0x89, 0x59, 0x5e, 0x94, 0xe8, 0x8f, 0xf5, 0xc9, 0x29,
    +	0xd4, 0xc3, 0xb0, 0xda, 0x2e, 0x31, 0x8d, 0x75, 0x05, 0x5b, 0x14, 0x2b, 0x24, 0x41, 0xea, 0x7f,
    +	0xd4, 0xc0, 0x46, 0x68, 0x75, 0x4a, 0x19, 0x87, 0x3f, 0xc9, 0x1c, 0x40, 0x9f, 0xee, 0x00, 0xc2,
    +	0x5b, 0x86, 0xbf, 0xa5, 0xf6, 0x59, 0x1d, 0x4b, 0x62, 0xc1, 0x7f, 0x0c, 0x96, 0x28, 0x27, 0x16,
    +	0x2b, 0x2f, 0xee, 0x16, 0xf6, 0x4a, 0x07, 0xdf, 0x99, 0x2a, 0x7a, 0x63, 0x43, 0x21, 0x2e, 0x35,
    +	0x85, 0x2f, 0x0a, 0x20, 0xea, 0xff, 0x2c, 0xc6, 0x62, 0x17, 0x67, 0x82, 0x1f, 0x80, 0x07, 0x98,
    +	0x73, 0x6c, 0x5e, 0x21, 0xf2, 0xa5, 0x4f, 0x3d, 0xd2, 0x95, 0x27, 0x58, 0x35, 0xe0, 0x68, 0x58,
    +	0x7b, 0x70, 0x98, 0xd0, 0xa0, 0x94, 0xa5, 0xf0, 0x75, 0x9d, 0x6e, 0xd3, 0xbe, 0x74, 0x9e, 0xdb,
    +	0x2d, 0xc7, 0xb7, 0xb9, 0xbc, 0x60, 0xe5, 0x7b, 0x9e, 0xd0, 0xa0, 0x94, 0x25, 0x34, 0xc1, 0xce,
    +	0x8d, 0xd3, 0xf7, 0x2d, 0x72, 0x4a, 0x2f, 0x89, 0x39, 0x30, 0xfb, 0xa4, 0xe5, 0x74, 0x09, 0x2b,
    +	0x17, 0x76, 0x0b, 0x7b, 0x6b, 0x46, 0x63, 0x34, 0xac, 0xed, 0xbc, 0xc8, 0xd1, 0xdf, 0x0d, 0x6b,
    +	0x0f, 0x73, 0xe4, 0x28, 0x17, 0x0c, 0x7e, 0x08, 0x36, 0xd5, 0x0d, 0x1d, 0x61, 0x17, 0x9b, 0x94,
    +	0x0f, 0xca, 0x45, 0x19, 0xe1, 0xc3, 0xd1, 0xb0, 0xb6, 0xd9, 0x4e, 0xaa, 0x50, 0xda, 0x16, 0x7e,
    +	0x04, 0x36, 0x2e, 0xd9, 0x8f, 0x3d, 0xc7, 0x77, 0xcf, 0x9d, 0x3e, 0x35, 0x07, 0xe5, 0xa5, 0x5d,
    +	0x6d, 0x6f, 0xcd, 0xa8, 0x8f, 0x86, 0xb5, 0x8d, 0x1f, 0xb5, 0x63, 0x8a, 0xbb, 0xb4, 0x00, 0x25,
    +	0x1d, 0x21, 0x01, 0x1b, 0xdc, 0xb9, 0x26, 0xb6, 0xb8, 0x3a, 0xc2, 0x38, 0x2b, 0x2f, 0xcb, 0x5c,
    +	0xee, 0xbd, 0x29, 0x97, 0x17, 0x31, 0x07, 0xe3, 0x91, 0x4a, 0xe7, 0x46, 0x5c, 0xca, 0x50, 0x12,
    +	0x15, 0x1e, 0x81, 0x6d, 0x2f, 0x48, 0x0e, 0x43, 0xc4, 0xf5, 0x3b, 0x7d, 0xca, 0xae, 0xca, 0x2b,
    +	0xf2, 0xc4, 0x8f, 0x46, 0xc3, 0xda, 0x36, 0x4a, 0x2b, 0x51, 0xd6, 0x1e, 0xbe, 0x07, 0xd6, 0x19,
    +	0x39, 0xa5, 0xb6, 0x7f, 0x1b, 0xe4, 0x74, 0x55, 0xfa, 0x6f, 0x8d, 0x86, 0xb5, 0xf5, 0xf6, 0x49,
    +	0x24, 0x47, 0x09, 0xab, 0xfa, 0x1f, 0x34, 0xb0, 0x72, 0xd4, 0x6e, 0x9e, 0x39, 0x5d, 0x32, 0x87,
    +	0x82, 0x6e, 0x26, 0x0a, 0xfa, 0x9d, 0x7b, 0x4a, 0x42, 0x04, 0x35, 0xb1, 0x9c, 0xff, 0x1d, 0x94,
    +	0xb3, 0xb0, 0x51, 0xfd, 0x68, 0x17, 0x14, 0x6d, 0x6c, 0x11, 0x19, 0xfa, 0x5a, 0xe4, 0x73, 0x86,
    +	0x2d, 0x82, 0xa4, 0x06, 0x7e, 0x17, 0x2c, 0xdb, 0x4e, 0x97, 0x34, 0x8f, 0x65, 0x00, 0x6b, 0xc6,
    +	0x03, 0x65, 0xb3, 0x7c, 0x26, 0xa5, 0x48, 0x69, 0xc5, 0x55, 0x72, 0xc7, 0x75, 0xfa, 0x4e, 0x6f,
    +	0xf0, 0x09, 0x19, 0x8c, 0xc9, 0x2d, 0xaf, 0xf2, 0x22, 0x26, 0x47, 0x09, 0x2b, 0xd8, 0x01, 0x25,
    +	0xdc, 0xef, 0x3b, 0x26, 0xe6, 0xb8, 0xd3, 0x27, 0x92, 0xb1, 0xa5, 0x83, 0xc6, 0x9b, 0xce, 0x18,
    +	0x54, 0x84, 0xd8, 0x1c, 0xa9, 0x17, 0x81, 0x19, 0x9b, 0xa3, 0x61, 0xad, 0x74, 0x18, 0xe1, 0xa0,
    +	0x38, 0x68, 0xfd, 0xf7, 0x1a, 0x28, 0xa9, 0x53, 0xcf, 0xa1, 0x85, 0x7d, 0x94, 0x6c, 0x61, 0xdf,
    +	0x9e, 0x22, 0x5f, 0x13, 0x1a, 0x98, 0x19, 0x86, 0x2d, 0xbb, 0xd7, 0x05, 0x58, 0xe9, 0xca, 0xa4,
    +	0xb1, 0xb2, 0x26, 0xa1, 0x1f, 0x4f, 0x01, 0xad, 0x3a, 0xe4, 0xa6, 0xda, 0x60, 0x25, 0x58, 0x33,
    +	0x34, 0x86, 0xaa, 0xff, 0xa7, 0x00, 0xe0, 0x51, 0xbb, 0x99, 0xea, 0x0f, 0x73, 0xa0, 0x35, 0x05,
    +	0xeb, 0x82, 0x39, 0x63, 0x6e, 0x28, 0x7a, 0x7f, 0x7f, 0xca, 0x4c, 0xe0, 0x0e, 0xe9, 0xb7, 0x49,
    +	0x9f, 0x98, 0xdc, 0xf1, 0x02, 0x92, 0x9d, 0xc5, 0xc0, 0x50, 0x02, 0x1a, 0x1e, 0x83, 0xad, 0x71,
    +	0xbb, 0xeb, 0x63, 0xc6, 0x04, 0xb9, 0xcb, 0x05, 0x49, 0xe6, 0xb2, 0x0a, 0x71, 0xab, 0x9d, 0xd2,
    +	0xa3, 0x8c, 0x07, 0xfc, 0x0c, 0xac, 0x9a, 0xf1, 0xce, 0x7a, 0x0f, 0x6d, 0xf4, 0xf1, 0xc0, 0xa2,
    +	0x7f, 0xea, 0x63, 0x9b, 0x53, 0x3e, 0x30, 0xd6, 0x05, 0x65, 0xc2, 0x16, 0x1c, 0xa2, 0x41, 0x06,
    +	0xb6, 0x2d, 0x7c, 0x4b, 0x2d, 0xdf, 0x0a, 0xc8, 0xdd, 0xa6, 0x3f, 0x27, 0xb2, 0xff, 0xce, 0xbe,
    +	0x85, 0x6c, 0x7d, 0xad, 0x34, 0x18, 0xca, 0xe2, 0xd7, 0xff, 0xaa, 0x81, 0xb7, 0xb2, 0x89, 0x9f,
    +	0x43, 0x81, 0xb4, 0x93, 0x05, 0xa2, 0xdf, 0xc3, 0xe2, 0x54, 0x80, 0x13, 0x6a, 0xe5, 0x37, 0xcb,
    +	0x60, 0x3d, 0x9e, 0xc3, 0x39, 0x10, 0xf8, 0x07, 0xa0, 0xe4, 0x7a, 0xce, 0x0d, 0x65, 0xd4, 0xb1,
    +	0x89, 0xa7, 0xba, 0xe3, 0x43, 0xe5, 0x52, 0x3a, 0x8f, 0x54, 0x28, 0x6e, 0x07, 0xfb, 0x00, 0xb8,
    +	0xd8, 0xc3, 0x16, 0xe1, 0xa2, 0x92, 0x0b, 0xf2, 0x0e, 0x9e, 0xbd, 0xe9, 0x0e, 0xe2, 0xc7, 0xd2,
    +	0xcf, 0x43, 0xd7, 0x13, 0x9b, 0x7b, 0x83, 0x28, 0xc4, 0x48, 0x81, 0x62, 0xf8, 0xf0, 0x1a, 0x6c,
    +	0x78, 0xc4, 0xec, 0x63, 0x6a, 0xa9, 0x67, 0xbd, 0x28, 0xc3, 0x3c, 0x11, 0xcf, 0x2b, 0x8a, 0x2b,
    +	0xee, 0x86, 0xb5, 0xa7, 0xd9, 0x11, 0x5d, 0x3f, 0x27, 0x1e, 0xa3, 0x8c, 0x13, 0x9b, 0x07, 0xd4,
    +	0x49, 0xf8, 0xa0, 0x24, 0xb6, 0x78, 0x02, 0x2c, 0xf1, 0x40, 0x3e, 0x77, 0x39, 0x75, 0x6c, 0x56,
    +	0x5e, 0x8a, 0x9e, 0x80, 0x56, 0x4c, 0x8e, 0x12, 0x56, 0xf0, 0x14, 0xec, 0x88, 0x6e, 0xfd, 0xb3,
    +	0x60, 0x83, 0x93, 0x5b, 0x17, 0xdb, 0xe2, 0xaa, 0xca, 0xcb, 0xf2, 0x2d, 0x2e, 0x8b, 0xe9, 0xe8,
    +	0x30, 0x47, 0x8f, 0x72, 0xbd, 0xe0, 0x67, 0x60, 0x3b, 0x18, 0x8f, 0x0c, 0x6a, 0x77, 0xa9, 0xdd,
    +	0x13, 0xc3, 0x91, 0x1c, 0x0b, 0xd6, 0x8c, 0x27, 0xa2, 0x36, 0x5e, 0xa4, 0x95, 0x77, 0x79, 0x42,
    +	0x94, 0x05, 0x81, 0x5f, 0x82, 0x6d, 0xb9, 0x23, 0xe9, 0xaa, 0xc6, 0x42, 0x09, 0x2b, 0xaf, 0x66,
    +	0x67, 0x1b, 0x71, 0x75, 0x82, 0x48, 0xe3, 0xf6, 0x33, 0x6e, 0x53, 0x17, 0xc4, 0xb3, 0x8c, 0xb7,
    +	0x55, 0xbe, 0xb6, 0x0f, 0xd3, 0x50, 0x28, 0x8b, 0x5e, 0xf9, 0x10, 0x6c, 0xa6, 0x12, 0x0e, 0xb7,
    +	0x40, 0xe1, 0x9a, 0x0c, 0x82, 0xf7, 0x1a, 0x89, 0x9f, 0x70, 0x07, 0x2c, 0xdd, 0xe0, 0xbe, 0x4f,
    +	0x02, 0x06, 0xa2, 0x60, 0xf1, 0xc1, 0xe2, 0x33, 0xad, 0xfe, 0x67, 0x0d, 0x24, 0x1a, 0xdb, 0x1c,
    +	0x8a, 0xbb, 0x95, 0x2c, 0xee, 0xbd, 0x69, 0x89, 0x3d, 0xa1, 0xac, 0x7f, 0xa9, 0x81, 0xf5, 0xf8,
    +	0x14, 0x08, 0xdf, 0x05, 0xab, 0xd8, 0xef, 0x52, 0x62, 0x9b, 0xe3, 0x99, 0x25, 0x8c, 0xe6, 0x50,
    +	0xc9, 0x51, 0x68, 0x21, 0x66, 0x44, 0x72, 0xeb, 0x52, 0x0f, 0x0b, 0xa6, 0xb5, 0x89, 0xe9, 0xd8,
    +	0x5d, 0x26, 0xaf, 0xa9, 0x10, 0x34, 0xca, 0x93, 0xb4, 0x12, 0x65, 0xed, 0xeb, 0xbf, 0x5b, 0x04,
    +	0x5b, 0x01, 0x41, 0x82, 0x4f, 0x04, 0x8b, 0xd8, 0x7c, 0x0e, 0xed, 0x05, 0x25, 0xc6, 0xbe, 0xa7,
    +	0xf7, 0x8f, 0x44, 0x51, 0x74, 0x93, 0xe6, 0x3f, 0xf8, 0x39, 0x58, 0x66, 0x1c, 0x73, 0x9f, 0xc9,
    +	0xe7, 0xaf, 0x74, 0x70, 0x30, 0x13, 0xaa, 0xf4, 0x8c, 0xe6, 0xbf, 0x60, 0x8d, 0x14, 0x62, 0xfd,
    +	0x2f, 0x1a, 0xd8, 0x49, 0xbb, 0xcc, 0x81, 0x70, 0x9f, 0x26, 0x09, 0xf7, 0xee, 0x2c, 0x27, 0x9a,
    +	0x40, 0xba, 0x7f, 0x68, 0xe0, 0xad, 0xcc, 0xe1, 0xe5, 0x3b, 0x2b, 0x7a, 0x95, 0x9b, 0xea, 0x88,
    +	0x67, 0xd1, 0xf8, 0x2c, 0x7b, 0xd5, 0x79, 0x8e, 0x1e, 0xe5, 0x7a, 0xc1, 0x2f, 0xc0, 0x16, 0xb5,
    +	0xfb, 0xd4, 0x26, 0xea, 0x59, 0x8e, 0xd2, 0x9d, 0xdb, 0x50, 0xd2, 0xc8, 0x32, 0xcd, 0x3b, 0x62,
    +	0x7a, 0x69, 0xa6, 0x50, 0x50, 0x06, 0xb7, 0xfe, 0xb7, 0x9c, 0xf4, 0xc8, 0xb1, 0x52, 0x54, 0x94,
    +	0x94, 0x10, 0x2f, 0x53, 0x51, 0x4a, 0x8e, 0x42, 0x0b, 0xc9, 0x20, 0x79, 0x15, 0x2a, 0xd0, 0xd9,
    +	0x18, 0x24, 0x3d, 0x63, 0x0c, 0x92, 0x6b, 0xa4, 0x10, 0x45, 0x24, 0x62, 0x6c, 0x8b, 0x8d, 0x67,
    +	0x61, 0x24, 0x67, 0x4a, 0x8e, 0x42, 0x8b, 0xfa, 0x7f, 0x0b, 0x39, 0x59, 0x92, 0x54, 0x8c, 0x1d,
    +	0x69, 0xfc, 0x85, 0x9f, 0x3e, 0x52, 0x37, 0x3c, 0x52, 0x17, 0xfe, 0x56, 0x03, 0x10, 0x87, 0x10,
    +	0xad, 0x31, 0x55, 0x03, 0x3e, 0x7d, 0x3c, 0x7b, 0x85, 0xe8, 0x87, 0x19, 0xb0, 0xe0, 0xad, 0xae,
    +	0xa8, 0x20, 0x60, 0xd6, 0x00, 0xe5, 0x44, 0x00, 0x29, 0x28, 0x05, 0xd2, 0x13, 0xcf, 0x73, 0x3c,
    +	0x55, 0xb2, 0xef, 0xdc, 0x1f, 0x90, 0x34, 0x37, 0xaa, 0xf2, 0x9b, 0x28, 0xf2, 0xbf, 0x1b, 0xd6,
    +	0x4a, 0x31, 0x3d, 0x8a, 0x63, 0x8b, 0xad, 0xba, 0x24, 0xda, 0xaa, 0xf8, 0x7f, 0x6c, 0x75, 0x4c,
    +	0x26, 0x6f, 0x15, 0xc3, 0xae, 0x9c, 0x80, 0x6f, 0x4d, 0xb8, 0xa0, 0x99, 0xde, 0xb6, 0xd7, 0x8b,
    +	0xe0, 0x51, 0x78, 0xff, 0x1e, 0xed, 0xf8, 0x9c, 0xb0, 0x79, 0x4d, 0x7e, 0x07, 0x00, 0x04, 0x9f,
    +	0x4f, 0x92, 0xaa, 0xc1, 0xe0, 0x17, 0x7a, 0x1c, 0x87, 0x1a, 0x14, 0xb3, 0x82, 0x7e, 0xce, 0xd8,
    +	0x77, 0x38, 0x15, 0xb9, 0xe2, 0x87, 0x9b, 0x75, 0xfe, 0xfb, 0xa6, 0x13, 0xc4, 0xdf, 0x35, 0xf0,
    +	0x76, 0x6e, 0x20, 0x73, 0xe8, 0xec, 0x2f, 0x92, 0x9d, 0x7d, 0x7f, 0xe6, 0xcb, 0x9a, 0xd0, 0xde,
    +	0x7f, 0xa5, 0x81, 0x38, 0x3b, 0xe1, 0x29, 0x28, 0x72, 0xaa, 0x7a, 0x78, 0xe9, 0xe0, 0xc9, 0x74,
    +	0x27, 0xb8, 0xa0, 0x16, 0x89, 0x9e, 0x58, 0xb1, 0x42, 0x12, 0x05, 0x3e, 0x06, 0x2b, 0x16, 0x61,
    +	0x0c, 0xf7, 0xc6, 0xc4, 0x08, 0x3f, 0xbd, 0x5b, 0x81, 0x18, 0x8d, 0xf5, 0xf5, 0xf7, 0xc1, 0xc3,
    +	0x9c, 0x3f, 0x33, 0x60, 0x0d, 0x2c, 0x99, 0xf2, 0xcf, 0x28, 0x11, 0xd0, 0x92, 0xb1, 0x26, 0x0e,
    +	0x70, 0x24, 0xff, 0x85, 0x0a, 0xe4, 0xc6, 0x0f, 0x5f, 0xbe, 0xaa, 0x2e, 0x7c, 0xf5, 0xaa, 0xba,
    +	0xf0, 0xf5, 0xab, 0xea, 0xc2, 0x2f, 0x46, 0x55, 0xed, 0xe5, 0xa8, 0xaa, 0x7d, 0x35, 0xaa, 0x6a,
    +	0x5f, 0x8f, 0xaa, 0xda, 0xbf, 0x46, 0x55, 0xed, 0xd7, 0xaf, 0xab, 0x0b, 0x9f, 0x57, 0x26, 0xff,
    +	0xcf, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3a, 0x30, 0xdb, 0x24, 0x04, 0x18, 0x00, 0x00,
     }
     
     func (m *CSIDriver) Marshal() (dAtA []byte, err error) {
    @@ -1665,6 +1727,115 @@ func (m *VolumeAttachmentStatus) MarshalToSizedBuffer(dAtA []byte) (int, error)
     	return len(dAtA) - i, nil
     }
     
    +func (m *VolumeAttributesClass) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *VolumeAttributesClass) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *VolumeAttributesClass) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Parameters) > 0 {
    +		keysForParameters := make([]string, 0, len(m.Parameters))
    +		for k := range m.Parameters {
    +			keysForParameters = append(keysForParameters, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForParameters)
    +		for iNdEx := len(keysForParameters) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Parameters[string(keysForParameters[iNdEx])]
    +			baseI := i
    +			i -= len(v)
    +			copy(dAtA[i:], v)
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(v)))
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForParameters[iNdEx])
    +			copy(dAtA[i:], keysForParameters[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForParameters[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	i -= len(m.DriverName)
    +	copy(dAtA[i:], m.DriverName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.DriverName)))
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *VolumeAttributesClassList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *VolumeAttributesClassList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *VolumeAttributesClassList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *VolumeError) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -2087,6 +2258,44 @@ func (m *VolumeAttachmentStatus) Size() (n int) {
     	return n
     }
     
    +func (m *VolumeAttributesClass) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.DriverName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Parameters) > 0 {
    +		for k, v := range m.Parameters {
    +			_ = k
    +			_ = v
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v)))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *VolumeAttributesClassList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
     func (m *VolumeError) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -2385,6 +2594,44 @@ func (this *VolumeAttachmentStatus) String() string {
     	}, "")
     	return s
     }
    +func (this *VolumeAttributesClass) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	keysForParameters := make([]string, 0, len(this.Parameters))
    +	for k := range this.Parameters {
    +		keysForParameters = append(keysForParameters, k)
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForParameters)
    +	mapStringForParameters := "map[string]string{"
    +	for _, k := range keysForParameters {
    +		mapStringForParameters += fmt.Sprintf("%v: %v,", k, this.Parameters[k])
    +	}
    +	mapStringForParameters += "}"
    +	s := strings.Join([]string{`&VolumeAttributesClass{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`DriverName:` + fmt.Sprintf("%v", this.DriverName) + `,`,
    +		`Parameters:` + mapStringForParameters + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *VolumeAttributesClassList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]VolumeAttributesClass{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "VolumeAttributesClass", "VolumeAttributesClass", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&VolumeAttributesClassList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *VolumeError) String() string {
     	if this == nil {
     		return "nil"
    @@ -5155,6 +5402,365 @@ func (m *VolumeAttachmentStatus) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *VolumeAttributesClass) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: VolumeAttributesClass: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: VolumeAttributesClass: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DriverName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.DriverName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Parameters == nil {
    +				m.Parameters = make(map[string]string)
    +			}
    +			var mapkey string
    +			var mapvalue string
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var stringLenmapvalue uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapvalue |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapvalue := int(stringLenmapvalue)
    +					if intStringLenmapvalue < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
    +					if postStringIndexmapvalue < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapvalue > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
    +					iNdEx = postStringIndexmapvalue
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Parameters[mapkey] = mapvalue
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *VolumeAttributesClassList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: VolumeAttributesClassList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: VolumeAttributesClassList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, VolumeAttributesClass{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func (m *VolumeError) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
    diff --git a/vendor/k8s.io/api/storage/v1beta1/generated.proto b/vendor/k8s.io/api/storage/v1beta1/generated.proto
    index b99fd39e48ae..64dcc8262e03 100644
    --- a/vendor/k8s.io/api/storage/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/storage/v1beta1/generated.proto
    @@ -47,7 +47,7 @@ message CSIDriver {
       // an alphanumeric character ([a-z0-9A-Z]) with dashes (-), dots (.), and
       // alphanumerics between.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec represents the specification of the CSI Driver.
       optional CSIDriverSpec spec = 2;
    @@ -58,7 +58,7 @@ message CSIDriverList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of CSIDriver
       repeated CSIDriver items = 2;
    @@ -127,6 +127,7 @@ message CSIDriverSpec {
       // This field is immutable.
       //
       // +optional
    +  // +listType=atomic
       repeated string volumeLifecycleModes = 3;
     
       // storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage
    @@ -228,7 +229,7 @@ message CSIDriverSpec {
     // CSINode has an OwnerReference that points to the corresponding node object.
     message CSINode {
       // metadata.name must be the Kubernetes node name.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec is the specification of CSINode
       optional CSINodeSpec spec = 2;
    @@ -263,6 +264,7 @@ message CSINodeDriver {
       // It is possible for different nodes to use different topology keys.
       // This can be empty if driver does not support topology.
       // +optional
    +  // +listType=atomic
       repeated string topologyKeys = 3;
     
       // allocatable represents the volume resources of a node that are available for scheduling.
    @@ -275,7 +277,7 @@ message CSINodeList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of CSINode
       repeated CSINode items = 2;
    @@ -287,6 +289,8 @@ message CSINodeSpec {
       // If all drivers in the list are uninstalled, this can become empty.
       // +patchMergeKey=name
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
       repeated CSINodeDriver drivers = 1;
     }
     
    @@ -325,7 +329,7 @@ message CSIStorageCapacity {
       //
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // nodeTopology defines which nodes have access to the storage
       // for which capacity was reported. If not set, the storage is
    @@ -334,7 +338,7 @@ message CSIStorageCapacity {
       // immutable.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector nodeTopology = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector nodeTopology = 2;
     
       // storageClassName represents the name of the StorageClass that the reported capacity applies to.
       // It must meet the same requirements as the name of a StorageClass
    @@ -354,7 +358,7 @@ message CSIStorageCapacity {
       // unavailable.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity capacity = 4;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity capacity = 4;
     
       // maximumVolumeSize is the value reported by the CSI driver in its GetCapacityResponse
       // for a GetCapacityRequest with topology and parameters that match the
    @@ -368,7 +372,7 @@ message CSIStorageCapacity {
       // API is ResourceRequirements.Requests in a volume claim.
       //
       // +optional
    -  optional k8s.io.apimachinery.pkg.api.resource.Quantity maximumVolumeSize = 5;
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity maximumVolumeSize = 5;
     }
     
     // CSIStorageCapacityList is a collection of CSIStorageCapacity objects.
    @@ -376,11 +380,9 @@ message CSIStorageCapacityList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of CSIStorageCapacity objects.
    -  // +listType=map
    -  // +listMapKey=name
       repeated CSIStorageCapacity items = 2;
     }
     
    @@ -393,7 +395,7 @@ message StorageClass {
       // Standard object's metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // provisioner indicates the type of the provisioner.
       optional string provisioner = 2;
    @@ -412,6 +414,7 @@ message StorageClass {
       // e.g. ["ro", "soft"]. Not validated -
       // mount of the PVs will simply fail if one is invalid.
       // +optional
    +  // +listType=atomic
       repeated string mountOptions = 5;
     
       // allowVolumeExpansion shows whether the storage class allow volume expand
    @@ -430,7 +433,7 @@ message StorageClass {
       // This field is only honored by servers that enable the VolumeScheduling feature.
       // +optional
       // +listType=atomic
    -  repeated k8s.io.api.core.v1.TopologySelectorTerm allowedTopologies = 8;
    +  repeated .k8s.io.api.core.v1.TopologySelectorTerm allowedTopologies = 8;
     }
     
     // StorageClassList is a collection of storage classes.
    @@ -438,7 +441,7 @@ message StorageClassList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of StorageClasses
       repeated StorageClass items = 2;
    @@ -465,7 +468,7 @@ message VolumeAttachment {
       // Standard object metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec represents specification of the desired attach/detach volume behavior.
       // Populated by the Kubernetes system.
    @@ -483,15 +486,15 @@ message VolumeAttachmentList {
       // Standard list metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items is the list of VolumeAttachments
       repeated VolumeAttachment items = 2;
     }
     
     // VolumeAttachmentSource represents a volume that should be attached.
    -// Right now only PersistenVolumes can be attached via external attacher,
    -// in future we may allow also inline volumes in pods.
    +// Right now only PersistentVolumes can be attached via external attacher,
    +// in the future we may allow also inline volumes in pods.
     // Exactly one member can be set.
     message VolumeAttachmentSource {
       // persistentVolumeName represents the name of the persistent volume to attach.
    @@ -505,7 +508,7 @@ message VolumeAttachmentSource {
       // PersistentVolumeSpec. This field is beta-level and is only
       // honored by servers that enabled the CSIMigration feature.
       // +optional
    -  optional k8s.io.api.core.v1.PersistentVolumeSpec inlineVolumeSpec = 2;
    +  optional .k8s.io.api.core.v1.PersistentVolumeSpec inlineVolumeSpec = 2;
     }
     
     // VolumeAttachmentSpec is the specification of a VolumeAttachment request.
    @@ -549,11 +552,51 @@ message VolumeAttachmentStatus {
       optional VolumeError detachError = 4;
     }
     
    +// VolumeAttributesClass represents a specification of mutable volume attributes
    +// defined by the CSI driver. The class can be specified during dynamic provisioning
    +// of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning.
    +message VolumeAttributesClass {
    +  // Standard object's metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Name of the CSI driver
    +  // This field is immutable.
    +  optional string driverName = 2;
    +
    +  // parameters hold volume attributes defined by the CSI driver. These values
    +  // are opaque to the Kubernetes and are passed directly to the CSI driver.
    +  // The underlying storage provider supports changing these attributes on an
    +  // existing volume, however the parameters field itself is immutable. To
    +  // invoke a volume update, a new VolumeAttributesClass should be created with
    +  // new parameters, and the PersistentVolumeClaim should be updated to reference
    +  // the new VolumeAttributesClass.
    +  //
    +  // This field is required and must contain at least one key/value pair.
    +  // The keys cannot be empty, and the maximum number of parameters is 512, with
    +  // a cumulative max size of 256K. If the CSI driver rejects invalid parameters,
    +  // the target PersistentVolumeClaim will be set to an "Infeasible" state in the
    +  // modifyVolumeStatus field.
    +  map parameters = 3;
    +}
    +
    +// VolumeAttributesClassList is a collection of VolumeAttributesClass objects.
    +message VolumeAttributesClassList {
    +  // Standard list metadata
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // items is the list of VolumeAttributesClass objects.
    +  repeated VolumeAttributesClass items = 2;
    +}
    +
     // VolumeError captures an error encountered during a volume operation.
     message VolumeError {
       // time represents the time the error was encountered.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time time = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time time = 1;
     
       // message represents the error encountered during Attach or Detach operation.
       // This string may be logged, so it should not contain sensitive
    diff --git a/vendor/k8s.io/api/storage/v1beta1/register.go b/vendor/k8s.io/api/storage/v1beta1/register.go
    index a281d0f26ecb..e2214ef2f548 100644
    --- a/vendor/k8s.io/api/storage/v1beta1/register.go
    +++ b/vendor/k8s.io/api/storage/v1beta1/register.go
    @@ -58,6 +58,9 @@ func addKnownTypes(scheme *runtime.Scheme) error {
     
     		&CSIStorageCapacity{},
     		&CSIStorageCapacityList{},
    +
    +		&VolumeAttributesClass{},
    +		&VolumeAttributesClassList{},
     	)
     
     	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
    diff --git a/vendor/k8s.io/api/storage/v1beta1/types.go b/vendor/k8s.io/api/storage/v1beta1/types.go
    index 0f5ade3c1383..d9b6b768533b 100644
    --- a/vendor/k8s.io/api/storage/v1beta1/types.go
    +++ b/vendor/k8s.io/api/storage/v1beta1/types.go
    @@ -59,6 +59,7 @@ type StorageClass struct {
     	// e.g. ["ro", "soft"]. Not validated -
     	// mount of the PVs will simply fail if one is invalid.
     	// +optional
    +	// +listType=atomic
     	MountOptions []string `json:"mountOptions,omitempty" protobuf:"bytes,5,opt,name=mountOptions"`
     
     	// allowVolumeExpansion shows whether the storage class allow volume expand
    @@ -175,8 +176,8 @@ type VolumeAttachmentSpec struct {
     }
     
     // VolumeAttachmentSource represents a volume that should be attached.
    -// Right now only PersistenVolumes can be attached via external attacher,
    -// in future we may allow also inline volumes in pods.
    +// Right now only PersistentVolumes can be attached via external attacher,
    +// in the future we may allow also inline volumes in pods.
     // Exactly one member can be set.
     type VolumeAttachmentSource struct {
     	// persistentVolumeName represents the name of the persistent volume to attach.
    @@ -347,6 +348,7 @@ type CSIDriverSpec struct {
     	// This field is immutable.
     	//
     	// +optional
    +	// +listType=atomic
     	VolumeLifecycleModes []VolumeLifecycleMode `json:"volumeLifecycleModes,omitempty" protobuf:"bytes,3,opt,name=volumeLifecycleModes"`
     
     	// storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage
    @@ -535,6 +537,8 @@ type CSINodeSpec struct {
     	// If all drivers in the list are uninstalled, this can become empty.
     	// +patchMergeKey=name
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
     	Drivers []CSINodeDriver `json:"drivers" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,1,rep,name=drivers"`
     }
     
    @@ -567,6 +571,7 @@ type CSINodeDriver struct {
     	// It is possible for different nodes to use different topology keys.
     	// This can be empty if driver does not support topology.
     	// +optional
    +	// +listType=atomic
     	TopologyKeys []string `json:"topologyKeys" protobuf:"bytes,3,rep,name=topologyKeys"`
     
     	// allocatable represents the volume resources of a node that are available for scheduling.
    @@ -707,7 +712,57 @@ type CSIStorageCapacityList struct {
     	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
     
     	// items is the list of CSIStorageCapacity objects.
    -	// +listType=map
    -	// +listMapKey=name
     	Items []CSIStorageCapacity `json:"items" protobuf:"bytes,2,rep,name=items"`
     }
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +
    +// VolumeAttributesClass represents a specification of mutable volume attributes
    +// defined by the CSI driver. The class can be specified during dynamic provisioning
    +// of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning.
    +type VolumeAttributesClass struct {
    +	metav1.TypeMeta `json:",inline"`
    +
    +	// Standard object's metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// Name of the CSI driver
    +	// This field is immutable.
    +	DriverName string `json:"driverName" protobuf:"bytes,2,opt,name=driverName"`
    +
    +	// parameters hold volume attributes defined by the CSI driver. These values
    +	// are opaque to the Kubernetes and are passed directly to the CSI driver.
    +	// The underlying storage provider supports changing these attributes on an
    +	// existing volume, however the parameters field itself is immutable. To
    +	// invoke a volume update, a new VolumeAttributesClass should be created with
    +	// new parameters, and the PersistentVolumeClaim should be updated to reference
    +	// the new VolumeAttributesClass.
    +	//
    +	// This field is required and must contain at least one key/value pair.
    +	// The keys cannot be empty, and the maximum number of parameters is 512, with
    +	// a cumulative max size of 256K. If the CSI driver rejects invalid parameters,
    +	// the target PersistentVolumeClaim will be set to an "Infeasible" state in the
    +	// modifyVolumeStatus field.
    +	Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"`
    +}
    +
    +// +k8s:prerelease-lifecycle-gen:introduced=1.31
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +
    +// VolumeAttributesClassList is a collection of VolumeAttributesClass objects.
    +type VolumeAttributesClassList struct {
    +	metav1.TypeMeta `json:",inline"`
    +
    +	// Standard list metadata
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// items is the list of VolumeAttributesClass objects.
    +	Items []VolumeAttributesClass `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    diff --git a/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go
    index 6d9d233066a3..58da44fc8482 100644
    --- a/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go
    @@ -185,7 +185,7 @@ func (VolumeAttachmentList) SwaggerDoc() map[string]string {
     }
     
     var map_VolumeAttachmentSource = map[string]string{
    -	"":                     "VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.",
    +	"":                     "VolumeAttachmentSource represents a volume that should be attached. Right now only PersistentVolumes can be attached via external attacher, in the future we may allow also inline volumes in pods. Exactly one member can be set.",
     	"persistentVolumeName": "persistentVolumeName represents the name of the persistent volume to attach.",
     }
     
    @@ -216,6 +216,27 @@ func (VolumeAttachmentStatus) SwaggerDoc() map[string]string {
     	return map_VolumeAttachmentStatus
     }
     
    +var map_VolumeAttributesClass = map[string]string{
    +	"":           "VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning.",
    +	"metadata":   "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"driverName": "Name of the CSI driver This field is immutable.",
    +	"parameters": "parameters hold volume attributes defined by the CSI driver. These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass.\n\nThis field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an \"Infeasible\" state in the modifyVolumeStatus field.",
    +}
    +
    +func (VolumeAttributesClass) SwaggerDoc() map[string]string {
    +	return map_VolumeAttributesClass
    +}
    +
    +var map_VolumeAttributesClassList = map[string]string{
    +	"":         "VolumeAttributesClassList is a collection of VolumeAttributesClass objects.",
    +	"metadata": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"items":    "items is the list of VolumeAttributesClass objects.",
    +}
    +
    +func (VolumeAttributesClassList) SwaggerDoc() map[string]string {
    +	return map_VolumeAttributesClassList
    +}
    +
     var map_VolumeError = map[string]string{
     	"":        "VolumeError captures an error encountered during a volume operation.",
     	"time":    "time represents the time the error was encountered.",
    diff --git a/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go
    index f0450182b279..d87aa6b90be4 100644
    --- a/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go
    @@ -579,6 +579,72 @@ func (in *VolumeAttachmentStatus) DeepCopy() *VolumeAttachmentStatus {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *VolumeAttributesClass) DeepCopyInto(out *VolumeAttributesClass) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	if in.Parameters != nil {
    +		in, out := &in.Parameters, &out.Parameters
    +		*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 VolumeAttributesClass.
    +func (in *VolumeAttributesClass) DeepCopy() *VolumeAttributesClass {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(VolumeAttributesClass)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *VolumeAttributesClass) 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 *VolumeAttributesClassList) DeepCopyInto(out *VolumeAttributesClassList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]VolumeAttributesClass, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeAttributesClassList.
    +func (in *VolumeAttributesClassList) DeepCopy() *VolumeAttributesClassList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(VolumeAttributesClassList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *VolumeAttributesClassList) 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 *VolumeError) DeepCopyInto(out *VolumeError) {
     	*out = *in
    diff --git a/vendor/k8s.io/api/storage/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/storage/v1beta1/zz_generated.prerelease-lifecycle.go
    index c5d23e7d45e1..4be57dc0d460 100644
    --- a/vendor/k8s.io/api/storage/v1beta1/zz_generated.prerelease-lifecycle.go
    +++ b/vendor/k8s.io/api/storage/v1beta1/zz_generated.prerelease-lifecycle.go
    @@ -264,3 +264,39 @@ func (in *VolumeAttachmentList) APILifecycleReplacement() schema.GroupVersionKin
     func (in *VolumeAttachmentList) APILifecycleRemoved() (major, minor int) {
     	return 1, 22
     }
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *VolumeAttributesClass) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *VolumeAttributesClass) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *VolumeAttributesClass) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *VolumeAttributesClassList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 31
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *VolumeAttributesClassList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *VolumeAttributesClassList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 37
    +}
    diff --git a/vendor/k8s.io/api/storagemigration/v1alpha1/doc.go b/vendor/k8s.io/api/storagemigration/v1alpha1/doc.go
    new file mode 100644
    index 000000000000..192f9ff3c3cc
    --- /dev/null
    +++ b/vendor/k8s.io/api/storagemigration/v1alpha1/doc.go
    @@ -0,0 +1,23 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// +k8s:deepcopy-gen=package
    +// +k8s:protobuf-gen=package
    +// +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
    +// +groupName=storagemigration.k8s.io
    +
    +package v1alpha1 // import "k8s.io/api/storagemigration/v1alpha1"
    diff --git a/vendor/k8s.io/api/storagemigration/v1alpha1/generated.pb.go b/vendor/k8s.io/api/storagemigration/v1alpha1/generated.pb.go
    new file mode 100644
    index 000000000000..ed57f34b59eb
    --- /dev/null
    +++ b/vendor/k8s.io/api/storagemigration/v1alpha1/generated.pb.go
    @@ -0,0 +1,1688 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by protoc-gen-gogo. DO NOT EDIT.
    +// source: k8s.io/api/storagemigration/v1alpha1/generated.proto
    +
    +package v1alpha1
    +
    +import (
    +	fmt "fmt"
    +
    +	io "io"
    +
    +	proto "github.com/gogo/protobuf/proto"
    +
    +	k8s_io_api_core_v1 "k8s.io/api/core/v1"
    +
    +	math "math"
    +	math_bits "math/bits"
    +	reflect "reflect"
    +	strings "strings"
    +)
    +
    +// Reference imports to suppress errors if they are not otherwise used.
    +var _ = proto.Marshal
    +var _ = fmt.Errorf
    +var _ = math.Inf
    +
    +// This is a compile-time assertion to ensure that this generated file
    +// is compatible with the proto package it is being compiled against.
    +// A compilation error at this line likely means your copy of the
    +// proto package needs to be updated.
    +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    +
    +func (m *GroupVersionResource) Reset()      { *m = GroupVersionResource{} }
    +func (*GroupVersionResource) ProtoMessage() {}
    +func (*GroupVersionResource) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_0117377a57b172b9, []int{0}
    +}
    +func (m *GroupVersionResource) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *GroupVersionResource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *GroupVersionResource) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_GroupVersionResource.Merge(m, src)
    +}
    +func (m *GroupVersionResource) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *GroupVersionResource) XXX_DiscardUnknown() {
    +	xxx_messageInfo_GroupVersionResource.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_GroupVersionResource proto.InternalMessageInfo
    +
    +func (m *MigrationCondition) Reset()      { *m = MigrationCondition{} }
    +func (*MigrationCondition) ProtoMessage() {}
    +func (*MigrationCondition) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_0117377a57b172b9, []int{1}
    +}
    +func (m *MigrationCondition) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MigrationCondition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MigrationCondition) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MigrationCondition.Merge(m, src)
    +}
    +func (m *MigrationCondition) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MigrationCondition) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MigrationCondition.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MigrationCondition proto.InternalMessageInfo
    +
    +func (m *StorageVersionMigration) Reset()      { *m = StorageVersionMigration{} }
    +func (*StorageVersionMigration) ProtoMessage() {}
    +func (*StorageVersionMigration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_0117377a57b172b9, []int{2}
    +}
    +func (m *StorageVersionMigration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *StorageVersionMigration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *StorageVersionMigration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_StorageVersionMigration.Merge(m, src)
    +}
    +func (m *StorageVersionMigration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *StorageVersionMigration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_StorageVersionMigration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_StorageVersionMigration proto.InternalMessageInfo
    +
    +func (m *StorageVersionMigrationList) Reset()      { *m = StorageVersionMigrationList{} }
    +func (*StorageVersionMigrationList) ProtoMessage() {}
    +func (*StorageVersionMigrationList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_0117377a57b172b9, []int{3}
    +}
    +func (m *StorageVersionMigrationList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *StorageVersionMigrationList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *StorageVersionMigrationList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_StorageVersionMigrationList.Merge(m, src)
    +}
    +func (m *StorageVersionMigrationList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *StorageVersionMigrationList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_StorageVersionMigrationList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_StorageVersionMigrationList proto.InternalMessageInfo
    +
    +func (m *StorageVersionMigrationSpec) Reset()      { *m = StorageVersionMigrationSpec{} }
    +func (*StorageVersionMigrationSpec) ProtoMessage() {}
    +func (*StorageVersionMigrationSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_0117377a57b172b9, []int{4}
    +}
    +func (m *StorageVersionMigrationSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *StorageVersionMigrationSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *StorageVersionMigrationSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_StorageVersionMigrationSpec.Merge(m, src)
    +}
    +func (m *StorageVersionMigrationSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *StorageVersionMigrationSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_StorageVersionMigrationSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_StorageVersionMigrationSpec proto.InternalMessageInfo
    +
    +func (m *StorageVersionMigrationStatus) Reset()      { *m = StorageVersionMigrationStatus{} }
    +func (*StorageVersionMigrationStatus) ProtoMessage() {}
    +func (*StorageVersionMigrationStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_0117377a57b172b9, []int{5}
    +}
    +func (m *StorageVersionMigrationStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *StorageVersionMigrationStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *StorageVersionMigrationStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_StorageVersionMigrationStatus.Merge(m, src)
    +}
    +func (m *StorageVersionMigrationStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *StorageVersionMigrationStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_StorageVersionMigrationStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_StorageVersionMigrationStatus proto.InternalMessageInfo
    +
    +func init() {
    +	proto.RegisterType((*GroupVersionResource)(nil), "k8s.io.api.storagemigration.v1alpha1.GroupVersionResource")
    +	proto.RegisterType((*MigrationCondition)(nil), "k8s.io.api.storagemigration.v1alpha1.MigrationCondition")
    +	proto.RegisterType((*StorageVersionMigration)(nil), "k8s.io.api.storagemigration.v1alpha1.StorageVersionMigration")
    +	proto.RegisterType((*StorageVersionMigrationList)(nil), "k8s.io.api.storagemigration.v1alpha1.StorageVersionMigrationList")
    +	proto.RegisterType((*StorageVersionMigrationSpec)(nil), "k8s.io.api.storagemigration.v1alpha1.StorageVersionMigrationSpec")
    +	proto.RegisterType((*StorageVersionMigrationStatus)(nil), "k8s.io.api.storagemigration.v1alpha1.StorageVersionMigrationStatus")
    +}
    +
    +func init() {
    +	proto.RegisterFile("k8s.io/api/storagemigration/v1alpha1/generated.proto", fileDescriptor_0117377a57b172b9)
    +}
    +
    +var fileDescriptor_0117377a57b172b9 = []byte{
    +	// 719 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0xcf, 0x4f, 0x13, 0x4f,
    +	0x14, 0xef, 0x42, 0x0b, 0x7c, 0xa7, 0x5f, 0xc0, 0x4c, 0x14, 0x1a, 0x8c, 0x5b, 0x53, 0x09, 0x41,
    +	0xa3, 0xb3, 0xd2, 0x10, 0x43, 0x30, 0x1e, 0x28, 0x07, 0xa3, 0x81, 0x98, 0x0c, 0xc8, 0xc1, 0x78,
    +	0x70, 0xba, 0x1d, 0xb7, 0x43, 0xd9, 0x9d, 0xcd, 0xce, 0x6c, 0x13, 0x6e, 0xfe, 0x09, 0x1e, 0xfc,
    +	0x93, 0x3c, 0x70, 0x31, 0xe1, 0xc8, 0xc5, 0x2a, 0xf5, 0xbf, 0xe0, 0x64, 0x66, 0x76, 0x76, 0xfb,
    +	0x8b, 0x62, 0x13, 0x6e, 0x3b, 0xef, 0xbd, 0xcf, 0x67, 0xde, 0x7b, 0x9f, 0x79, 0x6f, 0xc1, 0x66,
    +	0x6b, 0x4b, 0x20, 0xc6, 0x1d, 0x12, 0x32, 0x47, 0x48, 0x1e, 0x11, 0x8f, 0xfa, 0xcc, 0x8b, 0x88,
    +	0x64, 0x3c, 0x70, 0xda, 0x1b, 0xe4, 0x24, 0x6c, 0x92, 0x0d, 0xc7, 0xa3, 0x01, 0x8d, 0x88, 0xa4,
    +	0x0d, 0x14, 0x46, 0x5c, 0x72, 0xb8, 0x9a, 0xa0, 0x10, 0x09, 0x19, 0x1a, 0x46, 0xa1, 0x14, 0xb5,
    +	0xf2, 0xcc, 0x63, 0xb2, 0x19, 0xd7, 0x91, 0xcb, 0x7d, 0xc7, 0xe3, 0x1e, 0x77, 0x34, 0xb8, 0x1e,
    +	0x7f, 0xd6, 0x27, 0x7d, 0xd0, 0x5f, 0x09, 0xe9, 0x4a, 0xa5, 0x2f, 0x15, 0x97, 0x47, 0xd4, 0x69,
    +	0x8f, 0x5c, 0xbc, 0xd2, 0x97, 0xae, 0x4f, 0xdc, 0x26, 0x0b, 0x68, 0x74, 0xea, 0x84, 0x2d, 0x4f,
    +	0x19, 0x84, 0xe3, 0x53, 0x49, 0xae, 0x43, 0x39, 0xe3, 0x50, 0x51, 0x1c, 0x48, 0xe6, 0xd3, 0x11,
    +	0xc0, 0x8b, 0x7f, 0x01, 0x84, 0xdb, 0xa4, 0x3e, 0x19, 0xc6, 0x55, 0xbe, 0x59, 0xe0, 0xee, 0xeb,
    +	0x88, 0xc7, 0xe1, 0x11, 0x8d, 0x04, 0xe3, 0x01, 0xa6, 0x82, 0xc7, 0x91, 0x4b, 0xe1, 0x23, 0x50,
    +	0xf0, 0x94, 0xbd, 0x64, 0x3d, 0xb4, 0xd6, 0xff, 0xab, 0xcd, 0x9f, 0x75, 0xca, 0xb9, 0x6e, 0xa7,
    +	0x5c, 0xd0, 0xc1, 0x38, 0xf1, 0xc1, 0xc7, 0x60, 0xb6, 0x9d, 0xe0, 0x4a, 0x53, 0x3a, 0x6c, 0xd1,
    +	0x84, 0xcd, 0xa6, 0x74, 0xa9, 0x1f, 0x3e, 0x05, 0x73, 0x91, 0xe1, 0x2e, 0x4d, 0xeb, 0xd8, 0x3b,
    +	0x26, 0x76, 0x2e, 0xbd, 0x13, 0x67, 0x11, 0x95, 0x9f, 0x53, 0x00, 0xee, 0xa7, 0xfa, 0xec, 0xf2,
    +	0xa0, 0xc1, 0xd4, 0x07, 0xdc, 0x06, 0x79, 0x79, 0x1a, 0x52, 0x93, 0xd3, 0x9a, 0x21, 0xc8, 0x1f,
    +	0x9e, 0x86, 0xf4, 0xaa, 0x53, 0x5e, 0x1a, 0x45, 0x28, 0x0f, 0xd6, 0x18, 0xb8, 0x07, 0x66, 0x84,
    +	0x24, 0x32, 0x16, 0x26, 0xd5, 0x4d, 0x83, 0x9e, 0x39, 0xd0, 0xd6, 0xab, 0x4e, 0xf9, 0x1a, 0x39,
    +	0x51, 0xc6, 0x94, 0x44, 0x61, 0xc3, 0x01, 0x8f, 0xc1, 0xc2, 0x09, 0x11, 0xf2, 0x7d, 0xd8, 0x20,
    +	0x92, 0x1e, 0x32, 0x3f, 0x29, 0xaa, 0x58, 0x7d, 0x82, 0x7a, 0x0f, 0x2d, 0x13, 0x02, 0x85, 0x2d,
    +	0x4f, 0x19, 0x04, 0x52, 0x7a, 0xa3, 0xf6, 0x06, 0x52, 0x88, 0xda, 0x92, 0xc9, 0x60, 0x61, 0x6f,
    +	0x80, 0x09, 0x0f, 0x31, 0xc3, 0x35, 0x30, 0x13, 0x51, 0x22, 0x78, 0x50, 0xca, 0xeb, 0xcc, 0x17,
    +	0xd2, 0xcc, 0xb1, 0xb6, 0x62, 0xe3, 0x55, 0x6a, 0xf8, 0x54, 0x08, 0xe2, 0xd1, 0x52, 0x61, 0x50,
    +	0x8d, 0xfd, 0xc4, 0x8c, 0x53, 0x7f, 0xe5, 0xc7, 0x14, 0x58, 0x3e, 0x48, 0xc6, 0xc0, 0x28, 0x95,
    +	0xf5, 0x0e, 0x7e, 0x02, 0x73, 0x2a, 0xcd, 0x06, 0x91, 0x44, 0x37, 0xba, 0x58, 0x7d, 0x3e, 0x59,
    +	0x51, 0xef, 0xea, 0xc7, 0xd4, 0x95, 0xfb, 0x54, 0x92, 0x1a, 0x34, 0x37, 0x83, 0x9e, 0x0d, 0x67,
    +	0xac, 0xd0, 0x05, 0x79, 0x11, 0x52, 0x57, 0x0b, 0x51, 0xac, 0xee, 0xa0, 0x49, 0x66, 0x13, 0x8d,
    +	0x49, 0xf7, 0x20, 0xa4, 0x6e, 0xed, 0xff, 0xf4, 0x25, 0xa8, 0x13, 0xd6, 0xe4, 0xb0, 0x95, 0xe9,
    +	0x9d, 0x28, 0xb3, 0x7b, 0xbb, 0x6b, 0x34, 0x55, 0xaf, 0xf5, 0x83, 0xcf, 0xa1, 0xf2, 0xcb, 0x02,
    +	0xf7, 0xc7, 0x20, 0xf7, 0x98, 0x90, 0xf0, 0xe3, 0x48, 0x4f, 0xd1, 0x64, 0x3d, 0x55, 0x68, 0xdd,
    +	0xd1, 0x6c, 0x5a, 0x52, 0x4b, 0x5f, 0x3f, 0xeb, 0xa0, 0xc0, 0x24, 0xf5, 0xd5, 0xcb, 0x9e, 0x5e,
    +	0x2f, 0x56, 0x5f, 0xdd, 0xaa, 0xd2, 0xde, 0xa8, 0xbf, 0x51, 0x9c, 0x38, 0xa1, 0xae, 0x7c, 0x1f,
    +	0x5f, 0xa1, 0x6a, 0x3a, 0x6c, 0xf6, 0xcd, 0x77, 0x52, 0xe1, 0xf6, 0x64, 0x69, 0x5c, 0xb7, 0x7d,
    +	0x6e, 0xda, 0x0d, 0xf0, 0x25, 0x98, 0x77, 0x79, 0x20, 0x59, 0x10, 0xd3, 0x43, 0xde, 0xa2, 0xe9,
    +	0xea, 0xb9, 0x67, 0x20, 0xf3, 0xbb, 0xfd, 0x4e, 0x3c, 0x18, 0x5b, 0x39, 0xb7, 0xc0, 0x83, 0x1b,
    +	0x25, 0x86, 0x27, 0x00, 0xb8, 0xe9, 0xd0, 0x8b, 0x92, 0xa5, 0x3b, 0xba, 0x35, 0x59, 0x29, 0xa3,
    +	0xfb, 0xa7, 0x37, 0x08, 0x99, 0x49, 0xe0, 0x3e, 0x7e, 0xb8, 0x03, 0x16, 0xd3, 0xc2, 0x8e, 0x06,
    +	0x36, 0xe9, 0xb2, 0x01, 0x2e, 0xe2, 0x41, 0x37, 0x1e, 0x8e, 0xaf, 0xbd, 0x3d, 0xbb, 0xb4, 0x73,
    +	0xe7, 0x97, 0x76, 0xee, 0xe2, 0xd2, 0xce, 0x7d, 0xe9, 0xda, 0xd6, 0x59, 0xd7, 0xb6, 0xce, 0xbb,
    +	0xb6, 0x75, 0xd1, 0xb5, 0xad, 0xdf, 0x5d, 0xdb, 0xfa, 0xfa, 0xc7, 0xce, 0x7d, 0x58, 0x9d, 0xe4,
    +	0xb7, 0xf9, 0x37, 0x00, 0x00, 0xff, 0xff, 0x01, 0xc1, 0xb1, 0xd8, 0x5d, 0x07, 0x00, 0x00,
    +}
    +
    +func (m *GroupVersionResource) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *GroupVersionResource) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *GroupVersionResource) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Resource)
    +	copy(dAtA[i:], m.Resource)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Version)
    +	copy(dAtA[i:], m.Version)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Version)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Group)
    +	copy(dAtA[i:], m.Group)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *MigrationCondition) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *MigrationCondition) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *MigrationCondition) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Message)
    +	copy(dAtA[i:], m.Message)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message)))
    +	i--
    +	dAtA[i] = 0x2a
    +	i -= len(m.Reason)
    +	copy(dAtA[i:], m.Reason)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason)))
    +	i--
    +	dAtA[i] = 0x22
    +	{
    +		size, err := m.LastUpdateTime.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Status)
    +	copy(dAtA[i:], m.Status)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Type)
    +	copy(dAtA[i:], m.Type)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *StorageVersionMigration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *StorageVersionMigration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *StorageVersionMigration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *StorageVersionMigrationList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *StorageVersionMigrationList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *StorageVersionMigrationList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *StorageVersionMigrationSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *StorageVersionMigrationSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *StorageVersionMigrationSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.ContinueToken)
    +	copy(dAtA[i:], m.ContinueToken)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ContinueToken)))
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.Resource.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *StorageVersionMigrationStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *StorageVersionMigrationStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *StorageVersionMigrationStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.ResourceVersion)
    +	copy(dAtA[i:], m.ResourceVersion)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceVersion)))
    +	i--
    +	dAtA[i] = 0x12
    +	if len(m.Conditions) > 0 {
    +		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
    +	}
    +	dAtA[offset] = uint8(v)
    +	return base
    +}
    +func (m *GroupVersionResource) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Group)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Version)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Resource)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *MigrationCondition) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Type)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Status)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.LastUpdateTime.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Reason)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Message)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *StorageVersionMigration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Status.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *StorageVersionMigrationList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *StorageVersionMigrationSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.Resource.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.ContinueToken)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *StorageVersionMigrationStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Conditions) > 0 {
    +		for _, e := range m.Conditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.ResourceVersion)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *GroupVersionResource) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&GroupVersionResource{`,
    +		`Group:` + fmt.Sprintf("%v", this.Group) + `,`,
    +		`Version:` + fmt.Sprintf("%v", this.Version) + `,`,
    +		`Resource:` + fmt.Sprintf("%v", this.Resource) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MigrationCondition) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&MigrationCondition{`,
    +		`Type:` + fmt.Sprintf("%v", this.Type) + `,`,
    +		`Status:` + fmt.Sprintf("%v", this.Status) + `,`,
    +		`LastUpdateTime:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.LastUpdateTime), "Time", "v1.Time", 1), `&`, ``, 1) + `,`,
    +		`Reason:` + fmt.Sprintf("%v", this.Reason) + `,`,
    +		`Message:` + fmt.Sprintf("%v", this.Message) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *StorageVersionMigration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&StorageVersionMigration{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "StorageVersionMigrationSpec", "StorageVersionMigrationSpec", 1), `&`, ``, 1) + `,`,
    +		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "StorageVersionMigrationStatus", "StorageVersionMigrationStatus", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *StorageVersionMigrationList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]StorageVersionMigration{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "StorageVersionMigration", "StorageVersionMigration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&StorageVersionMigrationList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *StorageVersionMigrationSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&StorageVersionMigrationSpec{`,
    +		`Resource:` + strings.Replace(strings.Replace(this.Resource.String(), "GroupVersionResource", "GroupVersionResource", 1), `&`, ``, 1) + `,`,
    +		`ContinueToken:` + fmt.Sprintf("%v", this.ContinueToken) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *StorageVersionMigrationStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForConditions := "[]MigrationCondition{"
    +	for _, f := range this.Conditions {
    +		repeatedStringForConditions += strings.Replace(strings.Replace(f.String(), "MigrationCondition", "MigrationCondition", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConditions += "}"
    +	s := strings.Join([]string{`&StorageVersionMigrationStatus{`,
    +		`Conditions:` + repeatedStringForConditions + `,`,
    +		`ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *GroupVersionResource) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: GroupVersionResource: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: GroupVersionResource: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Group = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Version = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Resource = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MigrationCondition) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MigrationCondition: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MigrationCondition: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Type = MigrationConditionType(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Status = k8s_io_api_core_v1.ConditionStatus(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field LastUpdateTime", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.LastUpdateTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Reason = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Message = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *StorageVersionMigration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: StorageVersionMigration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: StorageVersionMigration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *StorageVersionMigrationList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: StorageVersionMigrationList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: StorageVersionMigrationList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, StorageVersionMigration{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *StorageVersionMigrationSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: StorageVersionMigrationSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: StorageVersionMigrationSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Resource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ContinueToken", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ContinueToken = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *StorageVersionMigrationStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: StorageVersionMigrationStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: StorageVersionMigrationStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Conditions = append(m.Conditions, MigrationCondition{})
    +			if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ResourceVersion = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func skipGenerated(dAtA []byte) (n int, err error) {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	depth := 0
    +	for iNdEx < l {
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return 0, ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return 0, io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= (uint64(b) & 0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		wireType := int(wire & 0x7)
    +		switch wireType {
    +		case 0:
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				iNdEx++
    +				if dAtA[iNdEx-1] < 0x80 {
    +					break
    +				}
    +			}
    +		case 1:
    +			iNdEx += 8
    +		case 2:
    +			var length int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				length |= (int(b) & 0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if length < 0 {
    +				return 0, ErrInvalidLengthGenerated
    +			}
    +			iNdEx += length
    +		case 3:
    +			depth++
    +		case 4:
    +			if depth == 0 {
    +				return 0, ErrUnexpectedEndOfGroupGenerated
    +			}
    +			depth--
    +		case 5:
    +			iNdEx += 4
    +		default:
    +			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
    +		}
    +		if iNdEx < 0 {
    +			return 0, ErrInvalidLengthGenerated
    +		}
    +		if depth == 0 {
    +			return iNdEx, nil
    +		}
    +	}
    +	return 0, io.ErrUnexpectedEOF
    +}
    +
    +var (
    +	ErrInvalidLengthGenerated        = fmt.Errorf("proto: negative length found during unmarshaling")
    +	ErrIntOverflowGenerated          = fmt.Errorf("proto: integer overflow")
    +	ErrUnexpectedEndOfGroupGenerated = fmt.Errorf("proto: unexpected end of group")
    +)
    diff --git a/vendor/k8s.io/api/storagemigration/v1alpha1/generated.proto b/vendor/k8s.io/api/storagemigration/v1alpha1/generated.proto
    new file mode 100644
    index 000000000000..341e0bc5cfaf
    --- /dev/null
    +++ b/vendor/k8s.io/api/storagemigration/v1alpha1/generated.proto
    @@ -0,0 +1,127 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +
    +// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    +
    +syntax = "proto2";
    +
    +package k8s.io.api.storagemigration.v1alpha1;
    +
    +import "k8s.io/api/core/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    +
    +// Package-wide variables from generator "generated".
    +option go_package = "k8s.io/api/storagemigration/v1alpha1";
    +
    +// The names of the group, the version, and the resource.
    +message GroupVersionResource {
    +  // The name of the group.
    +  optional string group = 1;
    +
    +  // The name of the version.
    +  optional string version = 2;
    +
    +  // The name of the resource.
    +  optional string resource = 3;
    +}
    +
    +// Describes the state of a migration at a certain point.
    +message MigrationCondition {
    +  // Type of the condition.
    +  optional string type = 1;
    +
    +  // Status of the condition, one of True, False, Unknown.
    +  optional string status = 2;
    +
    +  // The last time this condition was updated.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 3;
    +
    +  // The reason for the condition's last transition.
    +  // +optional
    +  optional string reason = 4;
    +
    +  // A human readable message indicating details about the transition.
    +  // +optional
    +  optional string message = 5;
    +}
    +
    +// StorageVersionMigration represents a migration of stored data to the latest
    +// storage version.
    +message StorageVersionMigration {
    +  // Standard object metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Specification of the migration.
    +  // +optional
    +  optional StorageVersionMigrationSpec spec = 2;
    +
    +  // Status of the migration.
    +  // +optional
    +  optional StorageVersionMigrationStatus status = 3;
    +}
    +
    +// StorageVersionMigrationList is a collection of storage version migrations.
    +message StorageVersionMigrationList {
    +  // Standard list metadata
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // Items is the list of StorageVersionMigration
    +  // +patchMergeKey=type
    +  // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
    +  repeated StorageVersionMigration items = 2;
    +}
    +
    +// Spec of the storage version migration.
    +message StorageVersionMigrationSpec {
    +  // The resource that is being migrated. The migrator sends requests to
    +  // the endpoint serving the resource.
    +  // Immutable.
    +  optional GroupVersionResource resource = 1;
    +
    +  // The token used in the list options to get the next chunk of objects
    +  // to migrate. When the .status.conditions indicates the migration is
    +  // "Running", users can use this token to check the progress of the
    +  // migration.
    +  // +optional
    +  optional string continueToken = 2;
    +}
    +
    +// Status of the storage version migration.
    +message StorageVersionMigrationStatus {
    +  // The latest available observations of the migration's current state.
    +  // +patchMergeKey=type
    +  // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
    +  // +optional
    +  repeated MigrationCondition conditions = 1;
    +
    +  // ResourceVersion to compare with the GC cache for performing the migration.
    +  // This is the current resource version of given group, version and resource when
    +  // kube-controller-manager first observes this StorageVersionMigration resource.
    +  optional string resourceVersion = 2;
    +}
    +
    diff --git a/vendor/k8s.io/api/storagemigration/v1alpha1/register.go b/vendor/k8s.io/api/storagemigration/v1alpha1/register.go
    new file mode 100644
    index 000000000000..c9706050f12e
    --- /dev/null
    +++ b/vendor/k8s.io/api/storagemigration/v1alpha1/register.go
    @@ -0,0 +1,58 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha1
    +
    +import (
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/runtime/schema"
    +
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +)
    +
    +// GroupName is the group name use in this package
    +const GroupName = "storagemigration.k8s.io"
    +
    +// SchemeGroupVersion is group version used to register these objects
    +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
    +
    +// Kind takes an unqualified kind and returns a Group qualified GroupKind
    +func Kind(kind string) schema.GroupKind {
    +	return SchemeGroupVersion.WithKind(kind).GroupKind()
    +}
    +
    +// Resource takes an unqualified resource and returns a Group qualified GroupResource
    +func Resource(resource string) schema.GroupResource {
    +	return SchemeGroupVersion.WithResource(resource).GroupResource()
    +}
    +
    +var (
    +	SchemeBuilder      = runtime.NewSchemeBuilder(addKnownTypes)
    +	localSchemeBuilder = &SchemeBuilder
    +	AddToScheme        = localSchemeBuilder.AddToScheme
    +)
    +
    +// Adds the list of known types to the given scheme.
    +func addKnownTypes(scheme *runtime.Scheme) error {
    +	scheme.AddKnownTypes(SchemeGroupVersion,
    +		&StorageVersionMigration{},
    +		&StorageVersionMigrationList{},
    +	)
    +
    +	// Add the watch version that applies
    +	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
    +	return nil
    +}
    diff --git a/vendor/k8s.io/api/storagemigration/v1alpha1/types.go b/vendor/k8s.io/api/storagemigration/v1alpha1/types.go
    new file mode 100644
    index 000000000000..0f343d1e956e
    --- /dev/null
    +++ b/vendor/k8s.io/api/storagemigration/v1alpha1/types.go
    @@ -0,0 +1,131 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha1
    +
    +import (
    +	corev1 "k8s.io/api/core/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +)
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.30
    +
    +// StorageVersionMigration represents a migration of stored data to the latest
    +// storage version.
    +type StorageVersionMigration struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// Specification of the migration.
    +	// +optional
    +	Spec StorageVersionMigrationSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    +	// Status of the migration.
    +	// +optional
    +	Status StorageVersionMigrationStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
    +}
    +
    +// Spec of the storage version migration.
    +type StorageVersionMigrationSpec struct {
    +	// The resource that is being migrated. The migrator sends requests to
    +	// the endpoint serving the resource.
    +	// Immutable.
    +	Resource GroupVersionResource `json:"resource" protobuf:"bytes,1,opt,name=resource"`
    +	// The token used in the list options to get the next chunk of objects
    +	// to migrate. When the .status.conditions indicates the migration is
    +	// "Running", users can use this token to check the progress of the
    +	// migration.
    +	// +optional
    +	ContinueToken string `json:"continueToken,omitempty" protobuf:"bytes,2,opt,name=continueToken"`
    +	// TODO: consider recording the storage version hash when the migration
    +	// is created. It can avoid races.
    +}
    +
    +// The names of the group, the version, and the resource.
    +type GroupVersionResource struct {
    +	// The name of the group.
    +	Group string `json:"group,omitempty" protobuf:"bytes,1,opt,name=group"`
    +	// The name of the version.
    +	Version string `json:"version,omitempty" protobuf:"bytes,2,opt,name=version"`
    +	// The name of the resource.
    +	Resource string `json:"resource,omitempty" protobuf:"bytes,3,opt,name=resource"`
    +}
    +
    +type MigrationConditionType string
    +
    +const (
    +	// Indicates that the migration is running.
    +	MigrationRunning MigrationConditionType = "Running"
    +	// Indicates that the migration has completed successfully.
    +	MigrationSucceeded MigrationConditionType = "Succeeded"
    +	// Indicates that the migration has failed.
    +	MigrationFailed MigrationConditionType = "Failed"
    +)
    +
    +// Describes the state of a migration at a certain point.
    +type MigrationCondition struct {
    +	// Type of the condition.
    +	Type MigrationConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=MigrationConditionType"`
    +	// Status of the condition, one of True, False, Unknown.
    +	Status corev1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"`
    +	// The last time this condition was updated.
    +	// +optional
    +	LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,3,opt,name=lastUpdateTime"`
    +	// The reason for the condition's last transition.
    +	// +optional
    +	Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"`
    +	// A human readable message indicating details about the transition.
    +	// +optional
    +	Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
    +}
    +
    +// Status of the storage version migration.
    +type StorageVersionMigrationStatus struct {
    +	// The latest available observations of the migration's current state.
    +	// +patchMergeKey=type
    +	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
    +	// +optional
    +	Conditions []MigrationCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
    +	// ResourceVersion to compare with the GC cache for performing the migration.
    +	// This is the current resource version of given group, version and resource when
    +	// kube-controller-manager first observes this StorageVersionMigration resource.
    +	ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,2,opt,name=resourceVersion"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.30
    +
    +// StorageVersionMigrationList is a collection of storage version migrations.
    +type StorageVersionMigrationList struct {
    +	metav1.TypeMeta `json:",inline"`
    +
    +	// Standard list metadata
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// Items is the list of StorageVersionMigration
    +	// +patchMergeKey=type
    +	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
    +	Items []StorageVersionMigration `json:"items" listType:"map" listMapKey:"type" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=items"`
    +}
    diff --git a/vendor/k8s.io/api/storagemigration/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/storagemigration/v1alpha1/types_swagger_doc_generated.go
    new file mode 100644
    index 000000000000..257d72a2363a
    --- /dev/null
    +++ b/vendor/k8s.io/api/storagemigration/v1alpha1/types_swagger_doc_generated.go
    @@ -0,0 +1,95 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1alpha1
    +
    +// This file contains a collection of methods that can be used from go-restful to
    +// generate Swagger API documentation for its models. Please read this PR for more
    +// information on the implementation: https://github.com/emicklei/go-restful/pull/215
    +//
    +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if
    +// they are on one line! For multiple line or blocks that you want to ignore use ---.
    +// Any context after a --- is ignored.
    +//
    +// Those methods can be generated by using hack/update-codegen.sh
    +
    +// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    +var map_GroupVersionResource = map[string]string{
    +	"":         "The names of the group, the version, and the resource.",
    +	"group":    "The name of the group.",
    +	"version":  "The name of the version.",
    +	"resource": "The name of the resource.",
    +}
    +
    +func (GroupVersionResource) SwaggerDoc() map[string]string {
    +	return map_GroupVersionResource
    +}
    +
    +var map_MigrationCondition = map[string]string{
    +	"":               "Describes the state of a migration at a certain point.",
    +	"type":           "Type of the condition.",
    +	"status":         "Status of the condition, one of True, False, Unknown.",
    +	"lastUpdateTime": "The last time this condition was updated.",
    +	"reason":         "The reason for the condition's last transition.",
    +	"message":        "A human readable message indicating details about the transition.",
    +}
    +
    +func (MigrationCondition) SwaggerDoc() map[string]string {
    +	return map_MigrationCondition
    +}
    +
    +var map_StorageVersionMigration = map[string]string{
    +	"":         "StorageVersionMigration represents a migration of stored data to the latest storage version.",
    +	"metadata": "Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"spec":     "Specification of the migration.",
    +	"status":   "Status of the migration.",
    +}
    +
    +func (StorageVersionMigration) SwaggerDoc() map[string]string {
    +	return map_StorageVersionMigration
    +}
    +
    +var map_StorageVersionMigrationList = map[string]string{
    +	"":         "StorageVersionMigrationList is a collection of storage version migrations.",
    +	"metadata": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    +	"items":    "Items is the list of StorageVersionMigration",
    +}
    +
    +func (StorageVersionMigrationList) SwaggerDoc() map[string]string {
    +	return map_StorageVersionMigrationList
    +}
    +
    +var map_StorageVersionMigrationSpec = map[string]string{
    +	"":              "Spec of the storage version migration.",
    +	"resource":      "The resource that is being migrated. The migrator sends requests to the endpoint serving the resource. Immutable.",
    +	"continueToken": "The token used in the list options to get the next chunk of objects to migrate. When the .status.conditions indicates the migration is \"Running\", users can use this token to check the progress of the migration.",
    +}
    +
    +func (StorageVersionMigrationSpec) SwaggerDoc() map[string]string {
    +	return map_StorageVersionMigrationSpec
    +}
    +
    +var map_StorageVersionMigrationStatus = map[string]string{
    +	"":                "Status of the storage version migration.",
    +	"conditions":      "The latest available observations of the migration's current state.",
    +	"resourceVersion": "ResourceVersion to compare with the GC cache for performing the migration. This is the current resource version of given group, version and resource when kube-controller-manager first observes this StorageVersionMigration resource.",
    +}
    +
    +func (StorageVersionMigrationStatus) SwaggerDoc() map[string]string {
    +	return map_StorageVersionMigrationStatus
    +}
    +
    +// AUTO-GENERATED FUNCTIONS END HERE
    diff --git a/vendor/k8s.io/api/storagemigration/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/storagemigration/v1alpha1/zz_generated.deepcopy.go
    new file mode 100644
    index 000000000000..9d35011d59c9
    --- /dev/null
    +++ b/vendor/k8s.io/api/storagemigration/v1alpha1/zz_generated.deepcopy.go
    @@ -0,0 +1,160 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by deepcopy-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	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 *GroupVersionResource) DeepCopyInto(out *GroupVersionResource) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupVersionResource.
    +func (in *GroupVersionResource) DeepCopy() *GroupVersionResource {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GroupVersionResource)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *MigrationCondition) DeepCopyInto(out *MigrationCondition) {
    +	*out = *in
    +	in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MigrationCondition.
    +func (in *MigrationCondition) DeepCopy() *MigrationCondition {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MigrationCondition)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *StorageVersionMigration) DeepCopyInto(out *StorageVersionMigration) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	out.Spec = in.Spec
    +	in.Status.DeepCopyInto(&out.Status)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageVersionMigration.
    +func (in *StorageVersionMigration) DeepCopy() *StorageVersionMigration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(StorageVersionMigration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *StorageVersionMigration) 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 *StorageVersionMigrationList) DeepCopyInto(out *StorageVersionMigrationList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]StorageVersionMigration, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageVersionMigrationList.
    +func (in *StorageVersionMigrationList) DeepCopy() *StorageVersionMigrationList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(StorageVersionMigrationList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *StorageVersionMigrationList) 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 *StorageVersionMigrationSpec) DeepCopyInto(out *StorageVersionMigrationSpec) {
    +	*out = *in
    +	out.Resource = in.Resource
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageVersionMigrationSpec.
    +func (in *StorageVersionMigrationSpec) DeepCopy() *StorageVersionMigrationSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(StorageVersionMigrationSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *StorageVersionMigrationStatus) DeepCopyInto(out *StorageVersionMigrationStatus) {
    +	*out = *in
    +	if in.Conditions != nil {
    +		in, out := &in.Conditions, &out.Conditions
    +		*out = make([]MigrationCondition, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageVersionMigrationStatus.
    +func (in *StorageVersionMigrationStatus) DeepCopy() *StorageVersionMigrationStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(StorageVersionMigrationStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    diff --git a/vendor/k8s.io/api/storagemigration/v1alpha1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/storagemigration/v1alpha1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..acdb5743512e
    --- /dev/null
    +++ b/vendor/k8s.io/api/storagemigration/v1alpha1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,58 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *StorageVersionMigration) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 30
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *StorageVersionMigration) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 33
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *StorageVersionMigration) APILifecycleRemoved() (major, minor int) {
    +	return 1, 36
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *StorageVersionMigrationList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 30
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *StorageVersionMigrationList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 33
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *StorageVersionMigrationList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 36
    +}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go
    index b1c5f6f4c09f..6556eda65d57 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go
    @@ -70,6 +70,12 @@ type CustomResourceDefinitionSpec struct {
     	// Top-level and per-version columns are mutually exclusive.
     	// +optional
     	AdditionalPrinterColumns []CustomResourceColumnDefinition
    +	// selectableFields specifies paths to fields that may be used as field selectors.
    +	// A maximum of 8 selectable fields are allowed.
    +	// See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
    +	// Top-level and per-version columns are mutually exclusive.
    +	// +optional
    +	SelectableFields []SelectableField
     
     	// `conversion` defines conversion settings for the CRD.
     	Conversion *CustomResourceConversion
    @@ -207,6 +213,25 @@ type CustomResourceDefinitionVersion struct {
     	// be explicitly set to null
     	// +optional
     	AdditionalPrinterColumns []CustomResourceColumnDefinition
    +
    +	// selectableFields specifies paths to fields that may be used as field selectors.
    +	// A maximum of 8 selectable fields are allowed.
    +	// See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
    +	// +optional
    +	SelectableFields []SelectableField
    +}
    +
    +// SelectableField specifies the JSON path of a field that may be used with field selectors.
    +type SelectableField struct {
    +	// jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
    +	// field selector value.
    +	// Only JSON paths without the array notation are allowed.
    +	// Must point to a field of type string, boolean or integer. Types with enum values
    +	// and strings with formats are allowed.
    +	// If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
    +	// Must not point to metdata fields.
    +	// Required.
    +	JSONPath string
     }
     
     // CustomResourceColumnDefinition specifies a column for server side printing.
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go
    index 8c4e147f0b90..61efeae69ca7 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go
    @@ -144,7 +144,6 @@ type JSONSchemaProps struct {
     	XMapType *string
     
     	// x-kubernetes-validations -kubernetes-validations describes a list of validation rules written in the CEL expression language.
    -	// This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     	// +patchMergeKey=rule
     	// +patchStrategy=merge
     	// +listType=map
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/conversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/conversion.go
    index 4d29ff8235d8..2ca72bb16b3d 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/conversion.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/conversion.go
    @@ -80,7 +80,7 @@ func Convert_apiextensions_CustomResourceDefinitionSpec_To_v1_CustomResourceDefi
     		out.Versions = []CustomResourceDefinitionVersion{{Name: in.Version, Served: true, Storage: true}}
     	}
     
    -	// If spec.{subresources,validation,additionalPrinterColumns} exists, move to versions
    +	// If spec.{subresources,validation,additionalPrinterColumns,selectableFields} exists, move to versions
     	if in.Subresources != nil {
     		subresources := &CustomResourceSubresources{}
     		if err := Convert_apiextensions_CustomResourceSubresources_To_v1_CustomResourceSubresources(in.Subresources, subresources, s); err != nil {
    @@ -110,6 +110,17 @@ func Convert_apiextensions_CustomResourceDefinitionSpec_To_v1_CustomResourceDefi
     			out.Versions[i].AdditionalPrinterColumns = additionalPrinterColumns
     		}
     	}
    +	if in.SelectableFields != nil {
    +		selectableFields := make([]SelectableField, len(in.SelectableFields))
    +		for i := range in.SelectableFields {
    +			if err := Convert_apiextensions_SelectableField_To_v1_SelectableField(&in.SelectableFields[i], &selectableFields[i], s); err != nil {
    +				return err
    +			}
    +		}
    +		for i := range out.Versions {
    +			out.Versions[i].SelectableFields = selectableFields
    +		}
    +	}
     	return nil
     }
     
    @@ -125,13 +136,15 @@ func Convert_v1_CustomResourceDefinitionSpec_To_apiextensions_CustomResourceDefi
     	// Copy versions[0] to version
     	out.Version = out.Versions[0].Name
     
    -	// If versions[*].{subresources,schema,additionalPrinterColumns} are identical, move to spec
    +	// If versions[*].{subresources,schema,additionalPrinterColumns,selectableFields} are identical, move to spec
     	subresources := out.Versions[0].Subresources
     	subresourcesIdentical := true
     	validation := out.Versions[0].Schema
     	validationIdentical := true
     	additionalPrinterColumns := out.Versions[0].AdditionalPrinterColumns
     	additionalPrinterColumnsIdentical := true
    +	selectableFields := out.Versions[0].SelectableFields
    +	selectableFieldsIdentical := true
     
     	// Detect if per-version fields are identical
     	for _, v := range out.Versions {
    @@ -144,6 +157,9 @@ func Convert_v1_CustomResourceDefinitionSpec_To_apiextensions_CustomResourceDefi
     		if additionalPrinterColumnsIdentical && !apiequality.Semantic.DeepEqual(v.AdditionalPrinterColumns, additionalPrinterColumns) {
     			additionalPrinterColumnsIdentical = false
     		}
    +		if selectableFieldsIdentical && !apiequality.Semantic.DeepEqual(v.SelectableFields, selectableFields) {
    +			selectableFieldsIdentical = false
    +		}
     	}
     
     	// If they are, set the top-level fields and clear the per-version fields
    @@ -156,6 +172,9 @@ func Convert_v1_CustomResourceDefinitionSpec_To_apiextensions_CustomResourceDefi
     	if additionalPrinterColumnsIdentical {
     		out.AdditionalPrinterColumns = additionalPrinterColumns
     	}
    +	if selectableFieldsIdentical {
    +		out.SelectableFields = selectableFields
    +	}
     	for i := range out.Versions {
     		if subresourcesIdentical {
     			out.Versions[i].Subresources = nil
    @@ -166,6 +185,9 @@ func Convert_v1_CustomResourceDefinitionSpec_To_apiextensions_CustomResourceDefi
     		if additionalPrinterColumnsIdentical {
     			out.Versions[i].AdditionalPrinterColumns = nil
     		}
    +		if selectableFieldsIdentical {
    +			out.Versions[i].SelectableFields = nil
    +		}
     	}
     
     	return nil
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/doc.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/doc.go
    index 09d4872f8a47..c7be07a14315 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/doc.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/doc.go
    @@ -19,6 +19,7 @@ limitations under the License.
     // +k8s:conversion-gen=k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
     // +k8s:defaulter-gen=TypeMeta
     // +k8s:openapi-gen=true
    +// +k8s:prerelease-lifecycle-gen=true
     // +groupName=apiextensions.k8s.io
     
     // Package v1 is the v1 version of the API.
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.pb.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.pb.go
    index 6c22a516985c..8e081e4b1c51 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.pb.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto
    +// source: k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto
     
     package v1
     
    @@ -51,7 +51,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ConversionRequest) Reset()      { *m = ConversionRequest{} }
     func (*ConversionRequest) ProtoMessage() {}
     func (*ConversionRequest) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{0}
    +	return fileDescriptor_c5e101a0235c8c62, []int{0}
     }
     func (m *ConversionRequest) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -79,7 +79,7 @@ var xxx_messageInfo_ConversionRequest proto.InternalMessageInfo
     func (m *ConversionResponse) Reset()      { *m = ConversionResponse{} }
     func (*ConversionResponse) ProtoMessage() {}
     func (*ConversionResponse) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{1}
    +	return fileDescriptor_c5e101a0235c8c62, []int{1}
     }
     func (m *ConversionResponse) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,7 +107,7 @@ var xxx_messageInfo_ConversionResponse proto.InternalMessageInfo
     func (m *ConversionReview) Reset()      { *m = ConversionReview{} }
     func (*ConversionReview) ProtoMessage() {}
     func (*ConversionReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{2}
    +	return fileDescriptor_c5e101a0235c8c62, []int{2}
     }
     func (m *ConversionReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,7 +135,7 @@ var xxx_messageInfo_ConversionReview proto.InternalMessageInfo
     func (m *CustomResourceColumnDefinition) Reset()      { *m = CustomResourceColumnDefinition{} }
     func (*CustomResourceColumnDefinition) ProtoMessage() {}
     func (*CustomResourceColumnDefinition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{3}
    +	return fileDescriptor_c5e101a0235c8c62, []int{3}
     }
     func (m *CustomResourceColumnDefinition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -163,7 +163,7 @@ var xxx_messageInfo_CustomResourceColumnDefinition proto.InternalMessageInfo
     func (m *CustomResourceConversion) Reset()      { *m = CustomResourceConversion{} }
     func (*CustomResourceConversion) ProtoMessage() {}
     func (*CustomResourceConversion) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{4}
    +	return fileDescriptor_c5e101a0235c8c62, []int{4}
     }
     func (m *CustomResourceConversion) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -191,7 +191,7 @@ var xxx_messageInfo_CustomResourceConversion proto.InternalMessageInfo
     func (m *CustomResourceDefinition) Reset()      { *m = CustomResourceDefinition{} }
     func (*CustomResourceDefinition) ProtoMessage() {}
     func (*CustomResourceDefinition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{5}
    +	return fileDescriptor_c5e101a0235c8c62, []int{5}
     }
     func (m *CustomResourceDefinition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -219,7 +219,7 @@ var xxx_messageInfo_CustomResourceDefinition proto.InternalMessageInfo
     func (m *CustomResourceDefinitionCondition) Reset()      { *m = CustomResourceDefinitionCondition{} }
     func (*CustomResourceDefinitionCondition) ProtoMessage() {}
     func (*CustomResourceDefinitionCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{6}
    +	return fileDescriptor_c5e101a0235c8c62, []int{6}
     }
     func (m *CustomResourceDefinitionCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -247,7 +247,7 @@ var xxx_messageInfo_CustomResourceDefinitionCondition proto.InternalMessageInfo
     func (m *CustomResourceDefinitionList) Reset()      { *m = CustomResourceDefinitionList{} }
     func (*CustomResourceDefinitionList) ProtoMessage() {}
     func (*CustomResourceDefinitionList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{7}
    +	return fileDescriptor_c5e101a0235c8c62, []int{7}
     }
     func (m *CustomResourceDefinitionList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -275,7 +275,7 @@ var xxx_messageInfo_CustomResourceDefinitionList proto.InternalMessageInfo
     func (m *CustomResourceDefinitionNames) Reset()      { *m = CustomResourceDefinitionNames{} }
     func (*CustomResourceDefinitionNames) ProtoMessage() {}
     func (*CustomResourceDefinitionNames) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{8}
    +	return fileDescriptor_c5e101a0235c8c62, []int{8}
     }
     func (m *CustomResourceDefinitionNames) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -303,7 +303,7 @@ var xxx_messageInfo_CustomResourceDefinitionNames proto.InternalMessageInfo
     func (m *CustomResourceDefinitionSpec) Reset()      { *m = CustomResourceDefinitionSpec{} }
     func (*CustomResourceDefinitionSpec) ProtoMessage() {}
     func (*CustomResourceDefinitionSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{9}
    +	return fileDescriptor_c5e101a0235c8c62, []int{9}
     }
     func (m *CustomResourceDefinitionSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -331,7 +331,7 @@ var xxx_messageInfo_CustomResourceDefinitionSpec proto.InternalMessageInfo
     func (m *CustomResourceDefinitionStatus) Reset()      { *m = CustomResourceDefinitionStatus{} }
     func (*CustomResourceDefinitionStatus) ProtoMessage() {}
     func (*CustomResourceDefinitionStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{10}
    +	return fileDescriptor_c5e101a0235c8c62, []int{10}
     }
     func (m *CustomResourceDefinitionStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -359,7 +359,7 @@ var xxx_messageInfo_CustomResourceDefinitionStatus proto.InternalMessageInfo
     func (m *CustomResourceDefinitionVersion) Reset()      { *m = CustomResourceDefinitionVersion{} }
     func (*CustomResourceDefinitionVersion) ProtoMessage() {}
     func (*CustomResourceDefinitionVersion) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{11}
    +	return fileDescriptor_c5e101a0235c8c62, []int{11}
     }
     func (m *CustomResourceDefinitionVersion) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -387,7 +387,7 @@ var xxx_messageInfo_CustomResourceDefinitionVersion proto.InternalMessageInfo
     func (m *CustomResourceSubresourceScale) Reset()      { *m = CustomResourceSubresourceScale{} }
     func (*CustomResourceSubresourceScale) ProtoMessage() {}
     func (*CustomResourceSubresourceScale) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{12}
    +	return fileDescriptor_c5e101a0235c8c62, []int{12}
     }
     func (m *CustomResourceSubresourceScale) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -415,7 +415,7 @@ var xxx_messageInfo_CustomResourceSubresourceScale proto.InternalMessageInfo
     func (m *CustomResourceSubresourceStatus) Reset()      { *m = CustomResourceSubresourceStatus{} }
     func (*CustomResourceSubresourceStatus) ProtoMessage() {}
     func (*CustomResourceSubresourceStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{13}
    +	return fileDescriptor_c5e101a0235c8c62, []int{13}
     }
     func (m *CustomResourceSubresourceStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -443,7 +443,7 @@ var xxx_messageInfo_CustomResourceSubresourceStatus proto.InternalMessageInfo
     func (m *CustomResourceSubresources) Reset()      { *m = CustomResourceSubresources{} }
     func (*CustomResourceSubresources) ProtoMessage() {}
     func (*CustomResourceSubresources) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{14}
    +	return fileDescriptor_c5e101a0235c8c62, []int{14}
     }
     func (m *CustomResourceSubresources) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -471,7 +471,7 @@ var xxx_messageInfo_CustomResourceSubresources proto.InternalMessageInfo
     func (m *CustomResourceValidation) Reset()      { *m = CustomResourceValidation{} }
     func (*CustomResourceValidation) ProtoMessage() {}
     func (*CustomResourceValidation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{15}
    +	return fileDescriptor_c5e101a0235c8c62, []int{15}
     }
     func (m *CustomResourceValidation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -499,7 +499,7 @@ var xxx_messageInfo_CustomResourceValidation proto.InternalMessageInfo
     func (m *ExternalDocumentation) Reset()      { *m = ExternalDocumentation{} }
     func (*ExternalDocumentation) ProtoMessage() {}
     func (*ExternalDocumentation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{16}
    +	return fileDescriptor_c5e101a0235c8c62, []int{16}
     }
     func (m *ExternalDocumentation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -527,7 +527,7 @@ var xxx_messageInfo_ExternalDocumentation proto.InternalMessageInfo
     func (m *JSON) Reset()      { *m = JSON{} }
     func (*JSON) ProtoMessage() {}
     func (*JSON) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{17}
    +	return fileDescriptor_c5e101a0235c8c62, []int{17}
     }
     func (m *JSON) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -555,7 +555,7 @@ var xxx_messageInfo_JSON proto.InternalMessageInfo
     func (m *JSONSchemaProps) Reset()      { *m = JSONSchemaProps{} }
     func (*JSONSchemaProps) ProtoMessage() {}
     func (*JSONSchemaProps) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{18}
    +	return fileDescriptor_c5e101a0235c8c62, []int{18}
     }
     func (m *JSONSchemaProps) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -583,7 +583,7 @@ var xxx_messageInfo_JSONSchemaProps proto.InternalMessageInfo
     func (m *JSONSchemaPropsOrArray) Reset()      { *m = JSONSchemaPropsOrArray{} }
     func (*JSONSchemaPropsOrArray) ProtoMessage() {}
     func (*JSONSchemaPropsOrArray) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{19}
    +	return fileDescriptor_c5e101a0235c8c62, []int{19}
     }
     func (m *JSONSchemaPropsOrArray) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -611,7 +611,7 @@ var xxx_messageInfo_JSONSchemaPropsOrArray proto.InternalMessageInfo
     func (m *JSONSchemaPropsOrBool) Reset()      { *m = JSONSchemaPropsOrBool{} }
     func (*JSONSchemaPropsOrBool) ProtoMessage() {}
     func (*JSONSchemaPropsOrBool) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{20}
    +	return fileDescriptor_c5e101a0235c8c62, []int{20}
     }
     func (m *JSONSchemaPropsOrBool) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -639,7 +639,7 @@ var xxx_messageInfo_JSONSchemaPropsOrBool proto.InternalMessageInfo
     func (m *JSONSchemaPropsOrStringArray) Reset()      { *m = JSONSchemaPropsOrStringArray{} }
     func (*JSONSchemaPropsOrStringArray) ProtoMessage() {}
     func (*JSONSchemaPropsOrStringArray) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{21}
    +	return fileDescriptor_c5e101a0235c8c62, []int{21}
     }
     func (m *JSONSchemaPropsOrStringArray) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -664,10 +664,38 @@ func (m *JSONSchemaPropsOrStringArray) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_JSONSchemaPropsOrStringArray proto.InternalMessageInfo
     
    +func (m *SelectableField) Reset()      { *m = SelectableField{} }
    +func (*SelectableField) ProtoMessage() {}
    +func (*SelectableField) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_c5e101a0235c8c62, []int{22}
    +}
    +func (m *SelectableField) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *SelectableField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *SelectableField) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_SelectableField.Merge(m, src)
    +}
    +func (m *SelectableField) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *SelectableField) XXX_DiscardUnknown() {
    +	xxx_messageInfo_SelectableField.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_SelectableField proto.InternalMessageInfo
    +
     func (m *ServiceReference) Reset()      { *m = ServiceReference{} }
     func (*ServiceReference) ProtoMessage() {}
     func (*ServiceReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{22}
    +	return fileDescriptor_c5e101a0235c8c62, []int{23}
     }
     func (m *ServiceReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -695,7 +723,7 @@ var xxx_messageInfo_ServiceReference proto.InternalMessageInfo
     func (m *ValidationRule) Reset()      { *m = ValidationRule{} }
     func (*ValidationRule) ProtoMessage() {}
     func (*ValidationRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{23}
    +	return fileDescriptor_c5e101a0235c8c62, []int{24}
     }
     func (m *ValidationRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -723,7 +751,7 @@ var xxx_messageInfo_ValidationRule proto.InternalMessageInfo
     func (m *WebhookClientConfig) Reset()      { *m = WebhookClientConfig{} }
     func (*WebhookClientConfig) ProtoMessage() {}
     func (*WebhookClientConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{24}
    +	return fileDescriptor_c5e101a0235c8c62, []int{25}
     }
     func (m *WebhookClientConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -751,7 +779,7 @@ var xxx_messageInfo_WebhookClientConfig proto.InternalMessageInfo
     func (m *WebhookConversion) Reset()      { *m = WebhookConversion{} }
     func (*WebhookConversion) ProtoMessage() {}
     func (*WebhookConversion) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_f5a35c9667703937, []int{25}
    +	return fileDescriptor_c5e101a0235c8c62, []int{26}
     }
     func (m *WebhookConversion) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -803,6 +831,7 @@ func init() {
     	proto.RegisterType((*JSONSchemaPropsOrArray)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray")
     	proto.RegisterType((*JSONSchemaPropsOrBool)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool")
     	proto.RegisterType((*JSONSchemaPropsOrStringArray)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray")
    +	proto.RegisterType((*SelectableField)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.SelectableField")
     	proto.RegisterType((*ServiceReference)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.ServiceReference")
     	proto.RegisterType((*ValidationRule)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.ValidationRule")
     	proto.RegisterType((*WebhookClientConfig)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig")
    @@ -810,208 +839,209 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto", fileDescriptor_f5a35c9667703937)
    -}
    -
    -var fileDescriptor_f5a35c9667703937 = []byte{
    -	// 3137 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xdf, 0x6f, 0x5c, 0x47,
    -	0xf5, 0xcf, 0x5d, 0x7b, 0xed, 0xf5, 0xd8, 0x89, 0xed, 0x49, 0xec, 0xef, 0x8d, 0x9b, 0x78, 0x9d,
    -	0xcd, 0xb7, 0xc1, 0x6d, 0xd3, 0x75, 0x1b, 0x5a, 0x1a, 0xca, 0x2f, 0x79, 0x6d, 0xa7, 0x75, 0x13,
    -	0xc7, 0xd6, 0x6c, 0x92, 0xba, 0x2d, 0xa2, 0xbd, 0xde, 0x3b, 0xbb, 0xbe, 0xf5, 0xfd, 0x95, 0x99,
    -	0x7b, 0xfd, 0x43, 0x02, 0xa9, 0x02, 0x55, 0x40, 0x25, 0x28, 0x0f, 0xa8, 0x3c, 0x21, 0x84, 0x50,
    -	0x1f, 0xe0, 0x01, 0xde, 0xe0, 0x5f, 0xe8, 0x0b, 0x52, 0x25, 0x24, 0x54, 0x09, 0x69, 0x45, 0x97,
    -	0x7f, 0x00, 0x09, 0x10, 0xc2, 0x0f, 0x08, 0xcd, 0x8f, 0x3b, 0x77, 0xf6, 0xee, 0x6e, 0x12, 0xd9,
    -	0xeb, 0xf6, 0x6d, 0xf7, 0x9c, 0x33, 0xe7, 0x73, 0xe6, 0xcc, 0x99, 0x33, 0x67, 0xce, 0x1d, 0x60,
    -	0xed, 0x5c, 0xa7, 0x65, 0x27, 0x58, 0xd8, 0x89, 0xb7, 0x30, 0xf1, 0x71, 0x84, 0xe9, 0xc2, 0x2e,
    -	0xf6, 0xed, 0x80, 0x2c, 0x48, 0x86, 0x15, 0x3a, 0x78, 0x3f, 0xc2, 0x3e, 0x75, 0x02, 0x9f, 0x3e,
    -	0x6d, 0x85, 0x0e, 0xc5, 0x64, 0x17, 0x93, 0x85, 0x70, 0xa7, 0xc1, 0x78, 0xb4, 0x5d, 0x60, 0x61,
    -	0xf7, 0xd9, 0x85, 0x06, 0xf6, 0x31, 0xb1, 0x22, 0x6c, 0x97, 0x43, 0x12, 0x44, 0x01, 0xbc, 0x2e,
    -	0x34, 0x95, 0xdb, 0x04, 0xdf, 0x54, 0x9a, 0xca, 0xe1, 0x4e, 0x83, 0xf1, 0x68, 0xbb, 0x40, 0x79,
    -	0xf7, 0xd9, 0x99, 0xa7, 0x1b, 0x4e, 0xb4, 0x1d, 0x6f, 0x95, 0x6b, 0x81, 0xb7, 0xd0, 0x08, 0x1a,
    -	0xc1, 0x02, 0x57, 0xb8, 0x15, 0xd7, 0xf9, 0x3f, 0xfe, 0x87, 0xff, 0x12, 0x40, 0x33, 0xcf, 0xa5,
    -	0x26, 0x7b, 0x56, 0x6d, 0xdb, 0xf1, 0x31, 0x39, 0x48, 0xed, 0xf4, 0x70, 0x64, 0x75, 0x31, 0x6f,
    -	0x66, 0xa1, 0xd7, 0x28, 0x12, 0xfb, 0x91, 0xe3, 0xe1, 0x8e, 0x01, 0x5f, 0x7a, 0xd8, 0x00, 0x5a,
    -	0xdb, 0xc6, 0x9e, 0x95, 0x1d, 0x57, 0x3a, 0x34, 0xc0, 0xe4, 0x52, 0xe0, 0xef, 0x62, 0xc2, 0x26,
    -	0x88, 0xf0, 0xfd, 0x18, 0xd3, 0x08, 0x56, 0xc0, 0x40, 0xec, 0xd8, 0xa6, 0x31, 0x67, 0xcc, 0x8f,
    -	0x54, 0x9e, 0xf9, 0xa8, 0x59, 0x3c, 0xd5, 0x6a, 0x16, 0x07, 0xee, 0xae, 0x2e, 0x1f, 0x36, 0x8b,
    -	0x97, 0x7a, 0x21, 0x45, 0x07, 0x21, 0xa6, 0xe5, 0xbb, 0xab, 0xcb, 0x88, 0x0d, 0x86, 0x2f, 0x81,
    -	0x49, 0x1b, 0x53, 0x87, 0x60, 0x7b, 0x71, 0x63, 0xf5, 0x9e, 0xd0, 0x6f, 0xe6, 0xb8, 0xc6, 0xf3,
    -	0x52, 0xe3, 0xe4, 0x72, 0x56, 0x00, 0x75, 0x8e, 0x81, 0x9b, 0x60, 0x38, 0xd8, 0x7a, 0x1b, 0xd7,
    -	0x22, 0x6a, 0x0e, 0xcc, 0x0d, 0xcc, 0x8f, 0x5e, 0x7b, 0xba, 0x9c, 0x2e, 0x9e, 0x32, 0x81, 0xaf,
    -	0x98, 0x9c, 0x6c, 0x19, 0x59, 0x7b, 0x2b, 0xc9, 0xa2, 0x55, 0xc6, 0x25, 0xda, 0xf0, 0xba, 0xd0,
    -	0x82, 0x12, 0x75, 0xa5, 0x5f, 0xe5, 0x00, 0xd4, 0x27, 0x4f, 0xc3, 0xc0, 0xa7, 0xb8, 0x2f, 0xb3,
    -	0xa7, 0x60, 0xa2, 0xc6, 0x35, 0x47, 0xd8, 0x96, 0xb8, 0x66, 0xee, 0x28, 0xd6, 0x9b, 0x12, 0x7f,
    -	0x62, 0x29, 0xa3, 0x0e, 0x75, 0x00, 0xc0, 0x3b, 0x60, 0x88, 0x60, 0x1a, 0xbb, 0x91, 0x39, 0x30,
    -	0x67, 0xcc, 0x8f, 0x5e, 0xbb, 0xda, 0x13, 0x8a, 0x87, 0x36, 0x0b, 0xbe, 0xf2, 0xee, 0xb3, 0xe5,
    -	0x6a, 0x64, 0x45, 0x31, 0xad, 0x9c, 0x91, 0x48, 0x43, 0x88, 0xeb, 0x40, 0x52, 0x57, 0xe9, 0xbf,
    -	0x06, 0x98, 0xd0, 0xbd, 0xb4, 0xeb, 0xe0, 0x3d, 0x48, 0xc0, 0x30, 0x11, 0xc1, 0xc2, 0xfd, 0x34,
    -	0x7a, 0xed, 0x66, 0xf9, 0xa8, 0x3b, 0xaa, 0xdc, 0x11, 0x7f, 0x95, 0x51, 0xb6, 0x5c, 0xf2, 0x0f,
    -	0x4a, 0x80, 0xe0, 0x2e, 0x28, 0x10, 0xb9, 0x46, 0x3c, 0x90, 0x46, 0xaf, 0xdd, 0xea, 0x0f, 0xa8,
    -	0xd0, 0x59, 0x19, 0x6b, 0x35, 0x8b, 0x85, 0xe4, 0x1f, 0x52, 0x58, 0xa5, 0x5f, 0xe4, 0xc0, 0xec,
    -	0x52, 0x4c, 0xa3, 0xc0, 0x43, 0x98, 0x06, 0x31, 0xa9, 0xe1, 0xa5, 0xc0, 0x8d, 0x3d, 0x7f, 0x19,
    -	0xd7, 0x1d, 0xdf, 0x89, 0x58, 0x8c, 0xce, 0x81, 0x41, 0xdf, 0xf2, 0xb0, 0x8c, 0x99, 0x31, 0xe9,
    -	0xc9, 0xc1, 0xdb, 0x96, 0x87, 0x11, 0xe7, 0x30, 0x09, 0x16, 0x22, 0x72, 0x07, 0x28, 0x89, 0x3b,
    -	0x07, 0x21, 0x46, 0x9c, 0x03, 0xaf, 0x80, 0xa1, 0x7a, 0x40, 0x3c, 0x4b, 0xac, 0xde, 0x48, 0xba,
    -	0x1e, 0x37, 0x38, 0x15, 0x49, 0x2e, 0x7c, 0x1e, 0x8c, 0xda, 0x98, 0xd6, 0x88, 0x13, 0x32, 0x68,
    -	0x73, 0x90, 0x0b, 0x9f, 0x95, 0xc2, 0xa3, 0xcb, 0x29, 0x0b, 0xe9, 0x72, 0xf0, 0x2a, 0x28, 0x84,
    -	0xc4, 0x09, 0x88, 0x13, 0x1d, 0x98, 0xf9, 0x39, 0x63, 0x3e, 0x5f, 0x99, 0x90, 0x63, 0x0a, 0x1b,
    -	0x92, 0x8e, 0x94, 0x04, 0x93, 0x7e, 0x9b, 0x06, 0xfe, 0x86, 0x15, 0x6d, 0x9b, 0x43, 0x1c, 0x41,
    -	0x49, 0xbf, 0x52, 0x5d, 0xbf, 0xcd, 0xe8, 0x48, 0x49, 0x94, 0xfe, 0x6c, 0x00, 0x33, 0xeb, 0xa1,
    -	0xc4, 0xbd, 0xf0, 0x06, 0x28, 0xd0, 0x88, 0xe5, 0x9c, 0xc6, 0x81, 0xf4, 0xcf, 0x93, 0x89, 0xaa,
    -	0xaa, 0xa4, 0x1f, 0x36, 0x8b, 0xd3, 0xe9, 0x88, 0x84, 0xca, 0x7d, 0xa3, 0xc6, 0xb2, 0x90, 0xdb,
    -	0xc3, 0x5b, 0xdb, 0x41, 0xb0, 0x23, 0x57, 0xff, 0x18, 0x21, 0xf7, 0xaa, 0x50, 0x94, 0x62, 0x8a,
    -	0x90, 0x93, 0x64, 0x94, 0x00, 0x95, 0xfe, 0x93, 0xcb, 0x4e, 0x4c, 0x5b, 0xf4, 0xb7, 0x40, 0x81,
    -	0x6d, 0x21, 0xdb, 0x8a, 0x2c, 0xb9, 0x09, 0x9e, 0x79, 0xb4, 0x0d, 0x27, 0xf6, 0xeb, 0x1a, 0x8e,
    -	0xac, 0x0a, 0x94, 0xae, 0x00, 0x29, 0x0d, 0x29, 0xad, 0x70, 0x1f, 0x0c, 0xd2, 0x10, 0xd7, 0xe4,
    -	0x7c, 0xef, 0x1d, 0x23, 0xda, 0x7b, 0xcc, 0xa1, 0x1a, 0xe2, 0x5a, 0x1a, 0x8c, 0xec, 0x1f, 0xe2,
    -	0x88, 0xf0, 0x1d, 0x03, 0x0c, 0x51, 0x9e, 0x17, 0x64, 0x2e, 0xd9, 0x3c, 0x01, 0xf0, 0x4c, 0xde,
    -	0x11, 0xff, 0x91, 0xc4, 0x2d, 0xfd, 0x33, 0x07, 0x2e, 0xf5, 0x1a, 0xba, 0x14, 0xf8, 0xb6, 0x58,
    -	0x84, 0x55, 0xb9, 0xaf, 0x44, 0x64, 0x3d, 0xaf, 0xef, 0xab, 0xc3, 0x66, 0xf1, 0xf1, 0x87, 0x2a,
    -	0xd0, 0x36, 0xe0, 0x97, 0xd5, 0x94, 0xc5, 0x26, 0xbd, 0xd4, 0x6e, 0xd8, 0x61, 0xb3, 0x38, 0xae,
    -	0x86, 0xb5, 0xdb, 0x0a, 0x77, 0x01, 0x74, 0x2d, 0x1a, 0xdd, 0x21, 0x96, 0x4f, 0x85, 0x5a, 0xc7,
    -	0xc3, 0xd2, 0x73, 0x4f, 0x3e, 0x5a, 0x50, 0xb0, 0x11, 0x95, 0x19, 0x09, 0x09, 0x6f, 0x75, 0x68,
    -	0x43, 0x5d, 0x10, 0x58, 0xce, 0x20, 0xd8, 0xa2, 0x2a, 0x0d, 0x68, 0x39, 0x9c, 0x51, 0x91, 0xe4,
    -	0xc2, 0x27, 0xc0, 0xb0, 0x87, 0x29, 0xb5, 0x1a, 0x98, 0xef, 0xfd, 0x91, 0xf4, 0x50, 0x5c, 0x13,
    -	0x64, 0x94, 0xf0, 0x4b, 0xff, 0x32, 0xc0, 0x85, 0x5e, 0x5e, 0xbb, 0xe5, 0xd0, 0x08, 0x7e, 0xb3,
    -	0x23, 0xec, 0xcb, 0x8f, 0x36, 0x43, 0x36, 0x9a, 0x07, 0xbd, 0x4a, 0x25, 0x09, 0x45, 0x0b, 0xf9,
    -	0x3d, 0x90, 0x77, 0x22, 0xec, 0x25, 0xa7, 0x25, 0xea, 0x7f, 0xd8, 0x55, 0x4e, 0x4b, 0xf8, 0xfc,
    -	0x2a, 0x03, 0x42, 0x02, 0xaf, 0xf4, 0x61, 0x0e, 0x5c, 0xec, 0x35, 0x84, 0xe5, 0x71, 0xca, 0x9c,
    -	0x1d, 0xba, 0x31, 0xb1, 0x5c, 0x19, 0x6c, 0xca, 0xd9, 0x1b, 0x9c, 0x8a, 0x24, 0x97, 0xe5, 0x4e,
    -	0xea, 0xf8, 0x8d, 0xd8, 0xb5, 0x88, 0x8c, 0x24, 0x35, 0xe1, 0xaa, 0xa4, 0x23, 0x25, 0x01, 0xcb,
    -	0x00, 0xd0, 0xed, 0x80, 0x44, 0x1c, 0x83, 0x57, 0x38, 0x23, 0x95, 0x33, 0x2c, 0x23, 0x54, 0x15,
    -	0x15, 0x69, 0x12, 0xec, 0x20, 0xd9, 0x71, 0x7c, 0x5b, 0x2e, 0xb8, 0xda, 0xbb, 0x37, 0x1d, 0xdf,
    -	0x46, 0x9c, 0xc3, 0xf0, 0x5d, 0x87, 0x46, 0x8c, 0x22, 0x57, 0xbb, 0xcd, 0xe1, 0x5c, 0x52, 0x49,
    -	0x30, 0xfc, 0x1a, 0x4b, 0xb0, 0x01, 0x71, 0x30, 0x35, 0x87, 0x52, 0xfc, 0x25, 0x45, 0x45, 0x9a,
    -	0x44, 0xe9, 0x2f, 0x83, 0xbd, 0xe3, 0x83, 0x25, 0x10, 0x78, 0x19, 0xe4, 0x1b, 0x24, 0x88, 0x43,
    -	0xe9, 0x25, 0xe5, 0xed, 0x97, 0x18, 0x11, 0x09, 0x1e, 0xfc, 0x36, 0xc8, 0xfb, 0x72, 0xc2, 0x2c,
    -	0x82, 0x5e, 0xed, 0xff, 0x32, 0x73, 0x6f, 0xa5, 0xe8, 0xc2, 0x91, 0x02, 0x14, 0x3e, 0x07, 0xf2,
    -	0xb4, 0x16, 0x84, 0x58, 0x3a, 0x71, 0x36, 0x11, 0xaa, 0x32, 0xe2, 0x61, 0xb3, 0x78, 0x3a, 0x51,
    -	0xc7, 0x09, 0x48, 0x08, 0xc3, 0xef, 0x1b, 0xa0, 0x20, 0x8f, 0x0b, 0x6a, 0x0e, 0xf3, 0xf0, 0x7c,
    -	0xad, 0xff, 0x76, 0xcb, 0xb2, 0x37, 0x5d, 0x33, 0x49, 0xa0, 0x48, 0x81, 0xc3, 0xef, 0x1a, 0x00,
    -	0xd4, 0xd4, 0xd9, 0x65, 0x8e, 0x70, 0x1f, 0xf6, 0x6d, 0xab, 0x68, 0xa7, 0xa2, 0x08, 0x84, 0xb4,
    -	0x54, 0xd2, 0x50, 0x61, 0x15, 0x4c, 0x85, 0x04, 0x73, 0xdd, 0x77, 0xfd, 0x1d, 0x3f, 0xd8, 0xf3,
    -	0x6f, 0x38, 0xd8, 0xb5, 0xa9, 0x09, 0xe6, 0x8c, 0xf9, 0x42, 0xe5, 0xa2, 0xb4, 0x7f, 0x6a, 0xa3,
    -	0x9b, 0x10, 0xea, 0x3e, 0xb6, 0xf4, 0xee, 0x40, 0xb6, 0xd6, 0xca, 0x9e, 0x17, 0xf0, 0x7d, 0x31,
    -	0x79, 0x91, 0x87, 0xa9, 0x69, 0xf0, 0x85, 0x78, 0xa3, 0xff, 0x0b, 0xa1, 0x72, 0x7d, 0x7a, 0x48,
    -	0x2b, 0x12, 0x45, 0x9a, 0x09, 0xf0, 0xa7, 0x06, 0x38, 0x6d, 0xd5, 0x6a, 0x38, 0x8c, 0xb0, 0x2d,
    -	0xb6, 0x71, 0xee, 0x64, 0xa3, 0x7a, 0x4a, 0x1a, 0x74, 0x7a, 0x51, 0x47, 0x45, 0xed, 0x46, 0xc0,
    -	0x17, 0xc1, 0x19, 0x1a, 0x05, 0x04, 0xdb, 0x49, 0x04, 0xc9, 0xec, 0x02, 0x5b, 0xcd, 0xe2, 0x99,
    -	0x6a, 0x1b, 0x07, 0x65, 0x24, 0x4b, 0x1f, 0xe7, 0x41, 0xf1, 0x21, 0x11, 0xfa, 0x08, 0x45, 0xef,
    -	0x15, 0x30, 0xc4, 0x67, 0x6a, 0x73, 0x87, 0x14, 0xb4, 0xa3, 0x9e, 0x53, 0x91, 0xe4, 0xb2, 0xe3,
    -	0x89, 0xe1, 0xb3, 0xe3, 0x69, 0x80, 0x0b, 0xaa, 0xe3, 0xa9, 0x2a, 0xc8, 0x28, 0xe1, 0xc3, 0x6b,
    -	0x00, 0xd8, 0x38, 0x24, 0x98, 0x65, 0x24, 0xdb, 0x1c, 0xe6, 0xd2, 0x6a, 0x7d, 0x96, 0x15, 0x07,
    -	0x69, 0x52, 0xf0, 0x06, 0x80, 0xc9, 0x3f, 0x27, 0xf0, 0x5f, 0xb5, 0x88, 0xef, 0xf8, 0x0d, 0xb3,
    -	0xc0, 0xcd, 0x9e, 0x66, 0xa7, 0xed, 0x72, 0x07, 0x17, 0x75, 0x19, 0x01, 0x77, 0xc1, 0x90, 0xb8,
    -	0x46, 0xf3, 0xbc, 0xd1, 0xc7, 0x1d, 0x77, 0xcf, 0x72, 0x1d, 0x9b, 0x43, 0x55, 0x00, 0x77, 0x0f,
    -	0x47, 0x41, 0x12, 0x0d, 0xbe, 0x67, 0x80, 0x31, 0x1a, 0x6f, 0x11, 0x29, 0x4d, 0x79, 0x56, 0x1f,
    -	0xbd, 0x76, 0xa7, 0x5f, 0xf0, 0x55, 0x4d, 0x77, 0x65, 0xa2, 0xd5, 0x2c, 0x8e, 0xe9, 0x14, 0xd4,
    -	0x86, 0x0d, 0x7f, 0x6f, 0x00, 0xd3, 0xb2, 0x45, 0xe8, 0x5b, 0xee, 0x06, 0x71, 0xfc, 0x08, 0x13,
    -	0x71, 0x21, 0x12, 0xc7, 0x47, 0x1f, 0x6b, 0xc5, 0xec, 0x3d, 0xab, 0x32, 0x27, 0x57, 0xda, 0x5c,
    -	0xec, 0x61, 0x01, 0xea, 0x69, 0x5b, 0xe9, 0xdf, 0x46, 0x36, 0xb5, 0x68, 0xb3, 0xac, 0xd6, 0x2c,
    -	0x17, 0xc3, 0x65, 0x30, 0xc1, 0xaa, 0x5f, 0x84, 0x43, 0xd7, 0xa9, 0x59, 0x94, 0xdf, 0x7e, 0x44,
    -	0x74, 0xab, 0x6b, 0x78, 0x35, 0xc3, 0x47, 0x1d, 0x23, 0xe0, 0x2b, 0x00, 0x8a, 0xb2, 0xb0, 0x4d,
    -	0x8f, 0xa8, 0x04, 0x54, 0x81, 0x57, 0xed, 0x90, 0x40, 0x5d, 0x46, 0xc1, 0x25, 0x30, 0xe9, 0x5a,
    -	0x5b, 0xd8, 0xad, 0x62, 0x17, 0xd7, 0xa2, 0x80, 0x70, 0x55, 0xe2, 0x7e, 0x38, 0xd5, 0x6a, 0x16,
    -	0x27, 0x6f, 0x65, 0x99, 0xa8, 0x53, 0xbe, 0x74, 0x29, 0xbb, 0x97, 0xf5, 0x89, 0x8b, 0x62, 0xfb,
    -	0x83, 0x1c, 0x98, 0xe9, 0x1d, 0x14, 0xf0, 0x3b, 0xaa, 0x34, 0x16, 0x15, 0xdf, 0x6b, 0x27, 0x10,
    -	0x7a, 0xf2, 0x3a, 0x00, 0x3a, 0xaf, 0x02, 0xf0, 0x80, 0x9d, 0xd7, 0x96, 0x9b, 0x5c, 0xfb, 0x37,
    -	0x4f, 0x02, 0x9d, 0xe9, 0xaf, 0x8c, 0x88, 0x2a, 0xc0, 0x72, 0xf9, 0xa1, 0x6f, 0xb9, 0xb8, 0xf4,
    -	0x61, 0xc7, 0xd5, 0x36, 0xdd, 0xac, 0xf0, 0x07, 0x06, 0x18, 0x0f, 0x42, 0xec, 0x2f, 0x6e, 0xac,
    -	0xde, 0xfb, 0xa2, 0xd8, 0xb4, 0xd2, 0x41, 0xab, 0x47, 0x37, 0x91, 0xdd, 0xaf, 0x85, 0xae, 0x0d,
    -	0x12, 0x84, 0xb4, 0x72, 0xb6, 0xd5, 0x2c, 0x8e, 0xaf, 0xb7, 0xa3, 0xa0, 0x2c, 0x6c, 0xc9, 0x03,
    -	0x53, 0x2b, 0xfb, 0x11, 0x26, 0xbe, 0xe5, 0x2e, 0x07, 0xb5, 0xd8, 0xc3, 0x7e, 0x24, 0x6c, 0xcc,
    -	0xb4, 0x0b, 0x8c, 0x47, 0x6c, 0x17, 0x5c, 0x04, 0x03, 0x31, 0x71, 0x65, 0xd4, 0x8e, 0xaa, 0x26,
    -	0x18, 0xba, 0x85, 0x18, 0xbd, 0x74, 0x09, 0x0c, 0x32, 0x3b, 0xe1, 0x79, 0x30, 0x40, 0xac, 0x3d,
    -	0xae, 0x75, 0xac, 0x32, 0xcc, 0x44, 0x90, 0xb5, 0x87, 0x18, 0xad, 0xf4, 0xf7, 0x39, 0x30, 0x9e,
    -	0x99, 0x0b, 0x9c, 0x01, 0x39, 0xd5, 0x59, 0x03, 0x52, 0x69, 0x6e, 0x75, 0x19, 0xe5, 0x1c, 0x1b,
    -	0xbe, 0xa0, 0xb2, 0xab, 0x00, 0x2d, 0xaa, 0xc3, 0x82, 0x53, 0x59, 0x59, 0x96, 0xaa, 0x63, 0x86,
    -	0x24, 0xe9, 0x91, 0xd9, 0x80, 0xeb, 0x72, 0x57, 0x08, 0x1b, 0x70, 0x1d, 0x31, 0xda, 0x51, 0x7b,
    -	0x25, 0x49, 0xb3, 0x26, 0xff, 0x08, 0xcd, 0x9a, 0xa1, 0x07, 0x36, 0x6b, 0x2e, 0x83, 0x7c, 0xe4,
    -	0x44, 0x2e, 0xe6, 0x27, 0x95, 0x56, 0x0c, 0xdf, 0x61, 0x44, 0x24, 0x78, 0x10, 0x83, 0x61, 0x1b,
    -	0xd7, 0xad, 0xd8, 0x8d, 0xf8, 0xa1, 0x34, 0x7a, 0xed, 0xeb, 0xc7, 0x8b, 0x1e, 0xd1, 0xcc, 0x58,
    -	0x16, 0x2a, 0x51, 0xa2, 0x1b, 0x3e, 0x0e, 0x86, 0x3d, 0x6b, 0xdf, 0xf1, 0x62, 0x8f, 0x57, 0x8c,
    -	0x86, 0x10, 0x5b, 0x13, 0x24, 0x94, 0xf0, 0x58, 0x12, 0xc4, 0xfb, 0x35, 0x37, 0xa6, 0xce, 0x2e,
    -	0x96, 0x4c, 0x59, 0xd2, 0xa9, 0x24, 0xb8, 0x92, 0xe1, 0xa3, 0x8e, 0x11, 0x1c, 0xcc, 0xf1, 0xf9,
    -	0xe0, 0x51, 0x0d, 0x4c, 0x90, 0x50, 0xc2, 0x6b, 0x07, 0x93, 0xf2, 0x63, 0xbd, 0xc0, 0xe4, 0xe0,
    -	0x8e, 0x11, 0xf0, 0x29, 0x30, 0xe2, 0x59, 0xfb, 0xb7, 0xb0, 0xdf, 0x88, 0xb6, 0xcd, 0xd3, 0x73,
    -	0xc6, 0xfc, 0x40, 0xe5, 0x74, 0xab, 0x59, 0x1c, 0x59, 0x4b, 0x88, 0x28, 0xe5, 0x73, 0x61, 0xc7,
    -	0x97, 0xc2, 0x67, 0x34, 0xe1, 0x84, 0x88, 0x52, 0x3e, 0xab, 0x4c, 0x42, 0x2b, 0x62, 0xfb, 0xca,
    -	0x1c, 0x6f, 0xbf, 0x38, 0x6f, 0x08, 0x32, 0x4a, 0xf8, 0x70, 0x1e, 0x14, 0x3c, 0x6b, 0x9f, 0xdf,
    -	0x29, 0xcd, 0x09, 0xae, 0x96, 0x37, 0x14, 0xd7, 0x24, 0x0d, 0x29, 0x2e, 0x97, 0x74, 0x7c, 0x21,
    -	0x39, 0xa9, 0x49, 0x4a, 0x1a, 0x52, 0x5c, 0x16, 0xbf, 0xb1, 0xef, 0xdc, 0x8f, 0xb1, 0x10, 0x86,
    -	0xdc, 0x33, 0x2a, 0x7e, 0xef, 0xa6, 0x2c, 0xa4, 0xcb, 0xb1, 0x3b, 0x9d, 0x17, 0xbb, 0x91, 0x13,
    -	0xba, 0x78, 0xbd, 0x6e, 0x9e, 0xe5, 0xfe, 0xe7, 0xa5, 0xfc, 0x9a, 0xa2, 0x22, 0x4d, 0x02, 0xbe,
    -	0x05, 0x06, 0xb1, 0x1f, 0x7b, 0xe6, 0x39, 0x7e, 0x7c, 0x1f, 0x37, 0xfa, 0xd4, 0x7e, 0x59, 0xf1,
    -	0x63, 0x0f, 0x71, 0xcd, 0xf0, 0x05, 0x70, 0xda, 0xb3, 0xf6, 0x59, 0x12, 0xc0, 0x24, 0x62, 0x17,
    -	0xcd, 0x29, 0x3e, 0xef, 0x49, 0x56, 0xc4, 0xae, 0xe9, 0x0c, 0xd4, 0x2e, 0xc7, 0x07, 0x3a, 0xbe,
    -	0x36, 0x70, 0x5a, 0x1b, 0xa8, 0x33, 0x50, 0xbb, 0x1c, 0x73, 0x32, 0xc1, 0xf7, 0x63, 0x87, 0x60,
    -	0xdb, 0xfc, 0x3f, 0x5e, 0xf7, 0xca, 0xfe, 0xae, 0xa0, 0x21, 0xc5, 0x85, 0xf7, 0x93, 0x96, 0x83,
    -	0xc9, 0x37, 0xdf, 0x46, 0xdf, 0x52, 0xf7, 0x3a, 0x59, 0x24, 0xc4, 0x3a, 0x10, 0xa7, 0x8a, 0xde,
    -	0x6c, 0x80, 0x3e, 0xc8, 0x5b, 0xae, 0xbb, 0x5e, 0x37, 0xcf, 0x73, 0x8f, 0xf7, 0xf1, 0xb4, 0x50,
    -	0x19, 0x66, 0x91, 0xe9, 0x47, 0x02, 0x86, 0xe1, 0x05, 0x3e, 0x8b, 0x85, 0x99, 0x13, 0xc3, 0x5b,
    -	0x67, 0xfa, 0x91, 0x80, 0xe1, 0xf3, 0xf3, 0x0f, 0xd6, 0xeb, 0xe6, 0x63, 0x27, 0x37, 0x3f, 0xa6,
    -	0x1f, 0x09, 0x18, 0x68, 0x83, 0x01, 0x3f, 0x88, 0xcc, 0x0b, 0xfd, 0x3e, 0x7b, 0xf9, 0x69, 0x72,
    -	0x3b, 0x88, 0x10, 0x53, 0x0f, 0x7f, 0x64, 0x00, 0x10, 0xa6, 0x91, 0x78, 0xf1, 0xb8, 0x2d, 0x80,
    -	0x0c, 0x5a, 0x39, 0x8d, 0xde, 0x15, 0x3f, 0x22, 0x07, 0xe9, 0xbd, 0x46, 0x8b, 0x72, 0xcd, 0x00,
    -	0xf8, 0x73, 0x03, 0x9c, 0xd3, 0xcb, 0x5d, 0x65, 0xd9, 0x2c, 0xf7, 0xc3, 0x7a, 0x1f, 0x03, 0xb9,
    -	0x12, 0x04, 0x6e, 0xc5, 0x6c, 0x35, 0x8b, 0xe7, 0x16, 0xbb, 0x00, 0xa2, 0xae, 0x66, 0xc0, 0x5f,
    -	0x1b, 0x60, 0x52, 0x66, 0x47, 0xcd, 0xb8, 0x22, 0x77, 0xdb, 0x5b, 0x7d, 0x74, 0x5b, 0x16, 0x42,
    -	0x78, 0x4f, 0x7d, 0x65, 0xec, 0xe0, 0xa3, 0x4e, 0xab, 0xe0, 0xef, 0x0c, 0x30, 0x66, 0xe3, 0x10,
    -	0xfb, 0x36, 0xf6, 0x6b, 0xcc, 0xcc, 0xb9, 0xe3, 0xf6, 0x15, 0xb2, 0x66, 0x2e, 0x6b, 0xda, 0x85,
    -	0x85, 0x65, 0x69, 0xe1, 0x98, 0xce, 0x3a, 0x6c, 0x16, 0xa7, 0xd3, 0xa1, 0x3a, 0x07, 0xb5, 0x19,
    -	0x08, 0x7f, 0x6c, 0x80, 0xf1, 0xd4, 0xed, 0xe2, 0x80, 0xb8, 0x74, 0x32, 0x0b, 0xcf, 0x4b, 0xd0,
    -	0xc5, 0x76, 0x2c, 0x94, 0x05, 0x87, 0xbf, 0x31, 0x58, 0xb5, 0x95, 0xdc, 0xd5, 0xa8, 0x59, 0xe2,
    -	0x1e, 0x7c, 0xbd, 0x9f, 0x1e, 0x54, 0xca, 0x85, 0x03, 0xaf, 0xa6, 0x95, 0x9c, 0xe2, 0x1c, 0x36,
    -	0x8b, 0x53, 0xba, 0xff, 0x14, 0x03, 0xe9, 0xc6, 0xc1, 0x77, 0x0d, 0x30, 0x86, 0xd3, 0x82, 0x99,
    -	0x9a, 0x97, 0x8f, 0xeb, 0xba, 0xae, 0xe5, 0xb7, 0xb8, 0x4e, 0x6b, 0x2c, 0x8a, 0xda, 0x60, 0x59,
    -	0xed, 0x87, 0xf7, 0x2d, 0x2f, 0x74, 0xb1, 0xf9, 0xff, 0xfd, 0xab, 0xfd, 0x56, 0x84, 0x4a, 0x94,
    -	0xe8, 0x86, 0x57, 0x41, 0xc1, 0x8f, 0x5d, 0xd7, 0xda, 0x72, 0xb1, 0xf9, 0x38, 0xaf, 0x22, 0x54,
    -	0x7f, 0xf1, 0xb6, 0xa4, 0x23, 0x25, 0x01, 0xeb, 0x60, 0x6e, 0xff, 0xa6, 0x7a, 0x7c, 0xd1, 0xb5,
    -	0x81, 0x67, 0x5e, 0xe1, 0x5a, 0x66, 0x5a, 0xcd, 0xe2, 0xf4, 0x66, 0xf7, 0x16, 0xdf, 0x43, 0x75,
    -	0xc0, 0x37, 0xc0, 0x63, 0x9a, 0xcc, 0x8a, 0xb7, 0x85, 0x6d, 0x1b, 0xdb, 0xc9, 0x45, 0xcb, 0xfc,
    -	0x02, 0x87, 0x50, 0xfb, 0x78, 0x33, 0x2b, 0x80, 0x1e, 0x34, 0x1a, 0xde, 0x02, 0xd3, 0x1a, 0x7b,
    -	0xd5, 0x8f, 0xd6, 0x49, 0x35, 0x22, 0x8e, 0xdf, 0x30, 0xe7, 0xb9, 0xde, 0x73, 0xc9, 0xee, 0xdb,
    -	0xd4, 0x78, 0xa8, 0xc7, 0x18, 0xf8, 0x72, 0x9b, 0x36, 0xfe, 0xe1, 0xc2, 0x0a, 0x6f, 0xe2, 0x03,
    -	0x6a, 0x3e, 0xc1, 0x8b, 0x0b, 0xbe, 0xce, 0x9b, 0x1a, 0x1d, 0xf5, 0x90, 0x87, 0xdf, 0x00, 0x67,
    -	0x33, 0x1c, 0x76, 0xaf, 0x30, 0x9f, 0x14, 0x17, 0x04, 0x56, 0x89, 0x6e, 0x26, 0x44, 0xd4, 0x4d,
    -	0x12, 0x7e, 0x15, 0x40, 0x8d, 0xbc, 0x66, 0x85, 0x7c, 0xfc, 0x53, 0xe2, 0xae, 0xc2, 0x56, 0x74,
    -	0x53, 0xd2, 0x50, 0x17, 0x39, 0xf8, 0x81, 0xd1, 0x36, 0x93, 0xf4, 0x36, 0x4b, 0xcd, 0xab, 0x7c,
    -	0xc3, 0xbe, 0x7c, 0xf4, 0x00, 0x4c, 0x95, 0xa1, 0xd8, 0xc5, 0x9a, 0x87, 0x35, 0x14, 0xd4, 0x03,
    -	0x7d, 0x86, 0x5d, 0xa6, 0x33, 0x39, 0x1c, 0x4e, 0x80, 0x81, 0x1d, 0x2c, 0x3f, 0x1b, 0x23, 0xf6,
    -	0x13, 0xbe, 0x09, 0xf2, 0xbb, 0x96, 0x1b, 0x27, 0xad, 0x80, 0xfe, 0x9d, 0xf5, 0x48, 0xe8, 0x7d,
    -	0x31, 0x77, 0xdd, 0x98, 0x79, 0xdf, 0x00, 0xd3, 0xdd, 0x4f, 0x95, 0xcf, 0xcb, 0xa2, 0x9f, 0x19,
    -	0x60, 0xb2, 0xe3, 0x00, 0xe9, 0x62, 0x8c, 0xdb, 0x6e, 0xcc, 0xbd, 0x3e, 0x9e, 0x04, 0x62, 0x23,
    -	0xf0, 0x8a, 0x56, 0xb7, 0xec, 0x87, 0x06, 0x98, 0xc8, 0x26, 0xe6, 0xcf, 0xc9, 0x4b, 0xa5, 0xf7,
    -	0x72, 0x60, 0xba, 0x7b, 0x0d, 0x0e, 0x3d, 0xd5, 0x5d, 0xe8, 0x7b, 0x83, 0xa6, 0x5b, 0xcb, 0xf6,
    -	0x1d, 0x03, 0x8c, 0xbe, 0xad, 0xe4, 0x92, 0xaf, 0x99, 0xfd, 0xec, 0x0a, 0x25, 0x47, 0x5f, 0xca,
    -	0xa0, 0x48, 0x87, 0x2c, 0xfd, 0xd6, 0x00, 0x53, 0x5d, 0x8f, 0x73, 0x78, 0x05, 0x0c, 0x59, 0xae,
    -	0x1b, 0xec, 0x89, 0x6e, 0x9e, 0xd6, 0x96, 0x5f, 0xe4, 0x54, 0x24, 0xb9, 0x9a, 0xcf, 0x72, 0x9f,
    -	0x81, 0xcf, 0x4a, 0x7f, 0x30, 0xc0, 0x85, 0x07, 0x45, 0xdd, 0x67, 0xbd, 0x86, 0xf3, 0xa0, 0x20,
    -	0x8b, 0xed, 0x03, 0xbe, 0x7e, 0x32, 0xbb, 0xca, 0x8c, 0xc0, 0x5f, 0xcb, 0x88, 0x5f, 0xa5, 0x5f,
    -	0x1a, 0x60, 0xa2, 0x8a, 0xc9, 0xae, 0x53, 0xc3, 0x08, 0xd7, 0x31, 0xc1, 0x7e, 0x0d, 0xc3, 0x05,
    -	0x30, 0xc2, 0xbf, 0x36, 0x86, 0x56, 0x2d, 0xf9, 0x46, 0x32, 0x29, 0x1d, 0x3d, 0x72, 0x3b, 0x61,
    -	0xa0, 0x54, 0x46, 0x7d, 0x4f, 0xc9, 0xf5, 0xfc, 0x9e, 0x72, 0x01, 0x0c, 0x86, 0x69, 0x03, 0xb8,
    -	0xc0, 0xb8, 0xbc, 0xe7, 0xcb, 0xa9, 0x9c, 0x1b, 0x90, 0x88, 0x77, 0xb9, 0xf2, 0x92, 0x1b, 0x90,
    -	0x08, 0x71, 0x6a, 0xe9, 0x4f, 0x39, 0x70, 0xa6, 0x3d, 0x3f, 0x33, 0x40, 0x12, 0xbb, 0x1d, 0x1f,
    -	0x70, 0x18, 0x0f, 0x71, 0x8e, 0xfe, 0x6e, 0x20, 0xf7, 0xe0, 0x77, 0x03, 0xf0, 0x25, 0x30, 0x29,
    -	0x7f, 0xae, 0xec, 0x87, 0x04, 0x53, 0xfe, 0x65, 0x72, 0xa0, 0xfd, 0xbd, 0xdf, 0x5a, 0x56, 0x00,
    -	0x75, 0x8e, 0x81, 0x5f, 0xc9, 0xbc, 0x69, 0xb8, 0x9c, 0xbe, 0x67, 0x60, 0xb5, 0x1d, 0x2f, 0x1d,
    -	0xee, 0xb1, 0x2d, 0xbf, 0x42, 0x48, 0x40, 0x32, 0x0f, 0x1d, 0x16, 0xc0, 0x48, 0x9d, 0x09, 0xf0,
    -	0x3e, 0x79, 0xbe, 0xdd, 0xe9, 0x37, 0x12, 0x06, 0x4a, 0x65, 0xe0, 0xd7, 0xc0, 0x78, 0x10, 0x8a,
    -	0x2a, 0x76, 0xdd, 0xb5, 0xab, 0xd8, 0xad, 0xf3, 0x8e, 0x5e, 0x21, 0x69, 0xbb, 0xb6, 0xb1, 0x50,
    -	0x56, 0xb6, 0xf4, 0x47, 0x03, 0x9c, 0x4d, 0x1e, 0x13, 0xb9, 0x0e, 0xf6, 0xa3, 0xa5, 0xc0, 0xaf,
    -	0x3b, 0x0d, 0x78, 0x5e, 0xb4, 0x4f, 0xb5, 0x9e, 0x64, 0xd2, 0x3a, 0x85, 0xf7, 0xc1, 0x30, 0x15,
    -	0xb1, 0x22, 0xc3, 0xf8, 0x95, 0xa3, 0x87, 0x71, 0x36, 0xe8, 0x44, 0xf5, 0x97, 0x50, 0x13, 0x1c,
    -	0x16, 0xc9, 0x35, 0xab, 0x12, 0xfb, 0xb6, 0x6c, 0xa1, 0x8f, 0x89, 0x48, 0x5e, 0x5a, 0x14, 0x34,
    -	0xa4, 0xb8, 0xa5, 0x7f, 0x18, 0x60, 0xb2, 0xe3, 0x71, 0x14, 0xfc, 0x9e, 0x01, 0xc6, 0x6a, 0xda,
    -	0xf4, 0x64, 0x3e, 0x58, 0x3b, 0xfe, 0x03, 0x2c, 0x4d, 0xa9, 0x28, 0xa1, 0x74, 0x0a, 0x6a, 0x03,
    -	0x85, 0x9b, 0xc0, 0xac, 0x65, 0xde, 0x21, 0x66, 0xbe, 0x6c, 0x5e, 0x68, 0x35, 0x8b, 0xe6, 0x52,
    -	0x0f, 0x19, 0xd4, 0x73, 0x74, 0xe5, 0x5b, 0x1f, 0x7d, 0x3a, 0x7b, 0xea, 0xe3, 0x4f, 0x67, 0x4f,
    -	0x7d, 0xf2, 0xe9, 0xec, 0xa9, 0x77, 0x5a, 0xb3, 0xc6, 0x47, 0xad, 0x59, 0xe3, 0xe3, 0xd6, 0xac,
    -	0xf1, 0x49, 0x6b, 0xd6, 0xf8, 0x6b, 0x6b, 0xd6, 0xf8, 0xc9, 0xdf, 0x66, 0x4f, 0xbd, 0x7e, 0xfd,
    -	0xa8, 0xaf, 0x8f, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x28, 0x77, 0xf5, 0x22, 0xd1, 0x2c, 0x00,
    -	0x00,
    +	proto.RegisterFile("k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto", fileDescriptor_c5e101a0235c8c62)
    +}
    +
    +var fileDescriptor_c5e101a0235c8c62 = []byte{
    +	// 3166 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xdb, 0x6f, 0x1b, 0xc7,
    +	0xd5, 0xf7, 0x52, 0x37, 0x6a, 0x24, 0x59, 0xd2, 0xd8, 0xd2, 0xb7, 0x56, 0x6c, 0x51, 0xa6, 0xbf,
    +	0xf8, 0x53, 0x12, 0x87, 0x4a, 0xf4, 0x25, 0x8d, 0x9b, 0x5e, 0x02, 0x51, 0x92, 0x13, 0xc5, 0x92,
    +	0x25, 0x0c, 0x6d, 0x47, 0x49, 0x8a, 0x26, 0x2b, 0xee, 0x90, 0xda, 0x68, 0xb9, 0xbb, 0x9e, 0xd9,
    +	0xd5, 0x05, 0x68, 0x81, 0xa0, 0x45, 0xd0, 0x36, 0x40, 0x9b, 0x3e, 0x14, 0xe9, 0x53, 0x51, 0x14,
    +	0x45, 0x1e, 0xda, 0x87, 0xf6, 0xad, 0xfd, 0x17, 0xf2, 0x52, 0x20, 0x40, 0x81, 0x22, 0x40, 0x01,
    +	0xa2, 0x61, 0xff, 0x81, 0x02, 0x6d, 0x51, 0x54, 0x0f, 0x45, 0x31, 0x97, 0x9d, 0x9d, 0x5d, 0x92,
    +	0xb6, 0x61, 0x51, 0xc9, 0x1b, 0x79, 0xce, 0x99, 0xf3, 0x3b, 0x73, 0xe6, 0xcc, 0x99, 0x33, 0x67,
    +	0x07, 0xbc, 0xb2, 0x77, 0x9d, 0x96, 0x1c, 0x7f, 0xc1, 0x0a, 0x1c, 0x7c, 0x18, 0x62, 0x8f, 0x3a,
    +	0xbe, 0x47, 0x9f, 0xb6, 0x02, 0x87, 0x62, 0xb2, 0x8f, 0xc9, 0x42, 0xb0, 0x57, 0x67, 0x3c, 0x9a,
    +	0x16, 0x58, 0xd8, 0x7f, 0x76, 0xa1, 0x8e, 0x3d, 0x4c, 0xac, 0x10, 0xdb, 0xa5, 0x80, 0xf8, 0xa1,
    +	0x0f, 0xaf, 0x0b, 0x4d, 0xa5, 0x94, 0xe0, 0x5b, 0x4a, 0x53, 0x29, 0xd8, 0xab, 0x33, 0x1e, 0x4d,
    +	0x0b, 0x94, 0xf6, 0x9f, 0x9d, 0x79, 0xba, 0xee, 0x84, 0xbb, 0xd1, 0x4e, 0xa9, 0xea, 0x37, 0x16,
    +	0xea, 0x7e, 0xdd, 0x5f, 0xe0, 0x0a, 0x77, 0xa2, 0x1a, 0xff, 0xc7, 0xff, 0xf0, 0x5f, 0x02, 0x68,
    +	0xe6, 0xb9, 0xc4, 0xe4, 0x86, 0x55, 0xdd, 0x75, 0x3c, 0x4c, 0x8e, 0x12, 0x3b, 0x1b, 0x38, 0xb4,
    +	0x3a, 0x98, 0x37, 0xb3, 0xd0, 0x6d, 0x14, 0x89, 0xbc, 0xd0, 0x69, 0xe0, 0xb6, 0x01, 0x5f, 0x7a,
    +	0xd0, 0x00, 0x5a, 0xdd, 0xc5, 0x0d, 0x2b, 0x3b, 0xae, 0x78, 0x6c, 0x80, 0xc9, 0x65, 0xdf, 0xdb,
    +	0xc7, 0x84, 0x4d, 0x10, 0xe1, 0x7b, 0x11, 0xa6, 0x21, 0x2c, 0x83, 0xbe, 0xc8, 0xb1, 0x4d, 0x63,
    +	0xce, 0x98, 0x1f, 0x2e, 0x3f, 0xf3, 0x71, 0xb3, 0x70, 0xa6, 0xd5, 0x2c, 0xf4, 0xdd, 0x59, 0x5b,
    +	0x39, 0x6e, 0x16, 0x2e, 0x77, 0x43, 0x0a, 0x8f, 0x02, 0x4c, 0x4b, 0x77, 0xd6, 0x56, 0x10, 0x1b,
    +	0x0c, 0x5f, 0x06, 0x93, 0x36, 0xa6, 0x0e, 0xc1, 0xf6, 0xd2, 0xd6, 0xda, 0x5d, 0xa1, 0xdf, 0xcc,
    +	0x71, 0x8d, 0x17, 0xa4, 0xc6, 0xc9, 0x95, 0xac, 0x00, 0x6a, 0x1f, 0x03, 0xb7, 0xc1, 0x90, 0xbf,
    +	0xf3, 0x0e, 0xae, 0x86, 0xd4, 0xec, 0x9b, 0xeb, 0x9b, 0x1f, 0x59, 0x7c, 0xba, 0x94, 0x2c, 0x9e,
    +	0x32, 0x81, 0xaf, 0x98, 0x9c, 0x6c, 0x09, 0x59, 0x07, 0xab, 0xf1, 0xa2, 0x95, 0xc7, 0x25, 0xda,
    +	0xd0, 0xa6, 0xd0, 0x82, 0x62, 0x75, 0xc5, 0x5f, 0xe6, 0x00, 0xd4, 0x27, 0x4f, 0x03, 0xdf, 0xa3,
    +	0xb8, 0x27, 0xb3, 0xa7, 0x60, 0xa2, 0xca, 0x35, 0x87, 0xd8, 0x96, 0xb8, 0x66, 0xee, 0x51, 0xac,
    +	0x37, 0x25, 0xfe, 0xc4, 0x72, 0x46, 0x1d, 0x6a, 0x03, 0x80, 0xb7, 0xc1, 0x20, 0xc1, 0x34, 0x72,
    +	0x43, 0xb3, 0x6f, 0xce, 0x98, 0x1f, 0x59, 0xbc, 0xd6, 0x15, 0x8a, 0x87, 0x36, 0x0b, 0xbe, 0xd2,
    +	0xfe, 0xb3, 0xa5, 0x4a, 0x68, 0x85, 0x11, 0x2d, 0x9f, 0x95, 0x48, 0x83, 0x88, 0xeb, 0x40, 0x52,
    +	0x57, 0xf1, 0x3f, 0x06, 0x98, 0xd0, 0xbd, 0xb4, 0xef, 0xe0, 0x03, 0x48, 0xc0, 0x10, 0x11, 0xc1,
    +	0xc2, 0xfd, 0x34, 0xb2, 0x78, 0xb3, 0xf4, 0xa8, 0x3b, 0xaa, 0xd4, 0x16, 0x7f, 0xe5, 0x11, 0xb6,
    +	0x5c, 0xf2, 0x0f, 0x8a, 0x81, 0xe0, 0x3e, 0xc8, 0x13, 0xb9, 0x46, 0x3c, 0x90, 0x46, 0x16, 0xd7,
    +	0x7b, 0x03, 0x2a, 0x74, 0x96, 0x47, 0x5b, 0xcd, 0x42, 0x3e, 0xfe, 0x87, 0x14, 0x56, 0xf1, 0xe7,
    +	0x39, 0x30, 0xbb, 0x1c, 0xd1, 0xd0, 0x6f, 0x20, 0x4c, 0xfd, 0x88, 0x54, 0xf1, 0xb2, 0xef, 0x46,
    +	0x0d, 0x6f, 0x05, 0xd7, 0x1c, 0xcf, 0x09, 0x59, 0x8c, 0xce, 0x81, 0x7e, 0xcf, 0x6a, 0x60, 0x19,
    +	0x33, 0xa3, 0xd2, 0x93, 0xfd, 0xb7, 0xac, 0x06, 0x46, 0x9c, 0xc3, 0x24, 0x58, 0x88, 0xc8, 0x1d,
    +	0xa0, 0x24, 0x6e, 0x1f, 0x05, 0x18, 0x71, 0x0e, 0xbc, 0x0a, 0x06, 0x6b, 0x3e, 0x69, 0x58, 0x62,
    +	0xf5, 0x86, 0x93, 0xf5, 0xb8, 0xc1, 0xa9, 0x48, 0x72, 0xe1, 0xf3, 0x60, 0xc4, 0xc6, 0xb4, 0x4a,
    +	0x9c, 0x80, 0x41, 0x9b, 0xfd, 0x5c, 0xf8, 0x9c, 0x14, 0x1e, 0x59, 0x49, 0x58, 0x48, 0x97, 0x83,
    +	0xd7, 0x40, 0x3e, 0x20, 0x8e, 0x4f, 0x9c, 0xf0, 0xc8, 0x1c, 0x98, 0x33, 0xe6, 0x07, 0xca, 0x13,
    +	0x72, 0x4c, 0x7e, 0x4b, 0xd2, 0x91, 0x92, 0x60, 0xd2, 0xef, 0x50, 0xdf, 0xdb, 0xb2, 0xc2, 0x5d,
    +	0x73, 0x90, 0x23, 0x28, 0xe9, 0x57, 0x2b, 0x9b, 0xb7, 0x18, 0x1d, 0x29, 0x89, 0xe2, 0x9f, 0x0c,
    +	0x60, 0x66, 0x3d, 0x14, 0xbb, 0x17, 0xde, 0x00, 0x79, 0x1a, 0xb2, 0x9c, 0x53, 0x3f, 0x92, 0xfe,
    +	0x79, 0x32, 0x56, 0x55, 0x91, 0xf4, 0xe3, 0x66, 0x61, 0x3a, 0x19, 0x11, 0x53, 0xb9, 0x6f, 0xd4,
    +	0x58, 0x16, 0x72, 0x07, 0x78, 0x67, 0xd7, 0xf7, 0xf7, 0xe4, 0xea, 0x9f, 0x20, 0xe4, 0x5e, 0x13,
    +	0x8a, 0x12, 0x4c, 0x11, 0x72, 0x92, 0x8c, 0x62, 0xa0, 0xe2, 0xbf, 0x73, 0xd9, 0x89, 0x69, 0x8b,
    +	0xfe, 0x36, 0xc8, 0xb3, 0x2d, 0x64, 0x5b, 0xa1, 0x25, 0x37, 0xc1, 0x33, 0x0f, 0xb7, 0xe1, 0xc4,
    +	0x7e, 0xdd, 0xc0, 0xa1, 0x55, 0x86, 0xd2, 0x15, 0x20, 0xa1, 0x21, 0xa5, 0x15, 0x1e, 0x82, 0x7e,
    +	0x1a, 0xe0, 0xaa, 0x9c, 0xef, 0xdd, 0x13, 0x44, 0x7b, 0x97, 0x39, 0x54, 0x02, 0x5c, 0x4d, 0x82,
    +	0x91, 0xfd, 0x43, 0x1c, 0x11, 0xbe, 0x6b, 0x80, 0x41, 0xca, 0xf3, 0x82, 0xcc, 0x25, 0xdb, 0xa7,
    +	0x00, 0x9e, 0xc9, 0x3b, 0xe2, 0x3f, 0x92, 0xb8, 0xc5, 0x7f, 0xe4, 0xc0, 0xe5, 0x6e, 0x43, 0x97,
    +	0x7d, 0xcf, 0x16, 0x8b, 0xb0, 0x26, 0xf7, 0x95, 0x88, 0xac, 0xe7, 0xf5, 0x7d, 0x75, 0xdc, 0x2c,
    +	0x3c, 0xfe, 0x40, 0x05, 0xda, 0x06, 0xfc, 0xb2, 0x9a, 0xb2, 0xd8, 0xa4, 0x97, 0xd3, 0x86, 0x1d,
    +	0x37, 0x0b, 0xe3, 0x6a, 0x58, 0xda, 0x56, 0xb8, 0x0f, 0xa0, 0x6b, 0xd1, 0xf0, 0x36, 0xb1, 0x3c,
    +	0x2a, 0xd4, 0x3a, 0x0d, 0x2c, 0x3d, 0xf7, 0xe4, 0xc3, 0x05, 0x05, 0x1b, 0x51, 0x9e, 0x91, 0x90,
    +	0x70, 0xbd, 0x4d, 0x1b, 0xea, 0x80, 0xc0, 0x72, 0x06, 0xc1, 0x16, 0x55, 0x69, 0x40, 0xcb, 0xe1,
    +	0x8c, 0x8a, 0x24, 0x17, 0x3e, 0x01, 0x86, 0x1a, 0x98, 0x52, 0xab, 0x8e, 0xf9, 0xde, 0x1f, 0x4e,
    +	0x0e, 0xc5, 0x0d, 0x41, 0x46, 0x31, 0xbf, 0xf8, 0x4f, 0x03, 0x5c, 0xec, 0xe6, 0xb5, 0x75, 0x87,
    +	0x86, 0xf0, 0x1b, 0x6d, 0x61, 0x5f, 0x7a, 0xb8, 0x19, 0xb2, 0xd1, 0x3c, 0xe8, 0x55, 0x2a, 0x89,
    +	0x29, 0x5a, 0xc8, 0x1f, 0x80, 0x01, 0x27, 0xc4, 0x8d, 0xf8, 0xb4, 0x44, 0xbd, 0x0f, 0xbb, 0xf2,
    +	0x98, 0x84, 0x1f, 0x58, 0x63, 0x40, 0x48, 0xe0, 0x15, 0x3f, 0xca, 0x81, 0x4b, 0xdd, 0x86, 0xb0,
    +	0x3c, 0x4e, 0x99, 0xb3, 0x03, 0x37, 0x22, 0x96, 0x2b, 0x83, 0x4d, 0x39, 0x7b, 0x8b, 0x53, 0x91,
    +	0xe4, 0xb2, 0xdc, 0x49, 0x1d, 0xaf, 0x1e, 0xb9, 0x16, 0x91, 0x91, 0xa4, 0x26, 0x5c, 0x91, 0x74,
    +	0xa4, 0x24, 0x60, 0x09, 0x00, 0xba, 0xeb, 0x93, 0x90, 0x63, 0xf0, 0x0a, 0x67, 0xb8, 0x7c, 0x96,
    +	0x65, 0x84, 0x8a, 0xa2, 0x22, 0x4d, 0x82, 0x1d, 0x24, 0x7b, 0x8e, 0x67, 0xcb, 0x05, 0x57, 0x7b,
    +	0xf7, 0xa6, 0xe3, 0xd9, 0x88, 0x73, 0x18, 0xbe, 0xeb, 0xd0, 0x90, 0x51, 0xe4, 0x6a, 0xa7, 0x1c,
    +	0xce, 0x25, 0x95, 0x04, 0xc3, 0xaf, 0xb2, 0x04, 0xeb, 0x13, 0x07, 0x53, 0x73, 0x30, 0xc1, 0x5f,
    +	0x56, 0x54, 0xa4, 0x49, 0x14, 0xff, 0xdc, 0xdf, 0x3d, 0x3e, 0x58, 0x02, 0x81, 0x57, 0xc0, 0x40,
    +	0x9d, 0xf8, 0x51, 0x20, 0xbd, 0xa4, 0xbc, 0xfd, 0x32, 0x23, 0x22, 0xc1, 0x83, 0xdf, 0x02, 0x03,
    +	0x9e, 0x9c, 0x30, 0x8b, 0xa0, 0xd7, 0x7a, 0xbf, 0xcc, 0xdc, 0x5b, 0x09, 0xba, 0x70, 0xa4, 0x00,
    +	0x85, 0xcf, 0x81, 0x01, 0x5a, 0xf5, 0x03, 0x2c, 0x9d, 0x38, 0x1b, 0x0b, 0x55, 0x18, 0xf1, 0xb8,
    +	0x59, 0x18, 0x8b, 0xd5, 0x71, 0x02, 0x12, 0xc2, 0xf0, 0x7b, 0x06, 0xc8, 0xcb, 0xe3, 0x82, 0x9a,
    +	0x43, 0x3c, 0x3c, 0x5f, 0xef, 0xbd, 0xdd, 0xb2, 0xec, 0x4d, 0xd6, 0x4c, 0x12, 0x28, 0x52, 0xe0,
    +	0xf0, 0x3b, 0x06, 0x00, 0x55, 0x75, 0x76, 0x99, 0xc3, 0xdc, 0x87, 0x3d, 0xdb, 0x2a, 0xda, 0xa9,
    +	0x28, 0x02, 0x21, 0x29, 0x95, 0x34, 0x54, 0x58, 0x01, 0x53, 0x01, 0xc1, 0x5c, 0xf7, 0x1d, 0x6f,
    +	0xcf, 0xf3, 0x0f, 0xbc, 0x1b, 0x0e, 0x76, 0x6d, 0x6a, 0x82, 0x39, 0x63, 0x3e, 0x5f, 0xbe, 0x24,
    +	0xed, 0x9f, 0xda, 0xea, 0x24, 0x84, 0x3a, 0x8f, 0x2d, 0xbe, 0xd7, 0x97, 0xad, 0xb5, 0xb2, 0xe7,
    +	0x05, 0xfc, 0x40, 0x4c, 0x5e, 0xe4, 0x61, 0x6a, 0x1a, 0x7c, 0x21, 0xde, 0xec, 0xfd, 0x42, 0xa8,
    +	0x5c, 0x9f, 0x1c, 0xd2, 0x8a, 0x44, 0x91, 0x66, 0x02, 0xfc, 0x89, 0x01, 0xc6, 0xac, 0x6a, 0x15,
    +	0x07, 0x21, 0xb6, 0xc5, 0x36, 0xce, 0x9d, 0x6e, 0x54, 0x4f, 0x49, 0x83, 0xc6, 0x96, 0x74, 0x54,
    +	0x94, 0x36, 0x02, 0xbe, 0x08, 0xce, 0xd2, 0xd0, 0x27, 0xd8, 0x8e, 0x23, 0x48, 0x66, 0x17, 0xd8,
    +	0x6a, 0x16, 0xce, 0x56, 0x52, 0x1c, 0x94, 0x91, 0x2c, 0xb6, 0x06, 0x41, 0xe1, 0x01, 0x11, 0xfa,
    +	0x10, 0x45, 0xef, 0x55, 0x30, 0xc8, 0x67, 0x6a, 0x73, 0x87, 0xe4, 0xb5, 0xa3, 0x9e, 0x53, 0x91,
    +	0xe4, 0xb2, 0xe3, 0x89, 0xe1, 0xb3, 0xe3, 0xa9, 0x8f, 0x0b, 0xaa, 0xe3, 0xa9, 0x22, 0xc8, 0x28,
    +	0xe6, 0xc3, 0x45, 0x00, 0x6c, 0x1c, 0x10, 0xcc, 0x32, 0x92, 0x6d, 0x0e, 0x71, 0x69, 0xb5, 0x3e,
    +	0x2b, 0x8a, 0x83, 0x34, 0x29, 0x78, 0x03, 0xc0, 0xf8, 0x9f, 0xe3, 0x7b, 0xaf, 0x59, 0xc4, 0x73,
    +	0xbc, 0xba, 0x99, 0xe7, 0x66, 0x4f, 0xb3, 0xd3, 0x76, 0xa5, 0x8d, 0x8b, 0x3a, 0x8c, 0x80, 0xfb,
    +	0x60, 0x50, 0x5c, 0xa3, 0x79, 0xde, 0xe8, 0xe1, 0x8e, 0xbb, 0x6b, 0xb9, 0x8e, 0xcd, 0xa1, 0xca,
    +	0x80, 0xbb, 0x87, 0xa3, 0x20, 0x89, 0x06, 0xdf, 0x37, 0xc0, 0x28, 0x8d, 0x76, 0x88, 0x94, 0xa6,
    +	0x3c, 0xab, 0x8f, 0x2c, 0xde, 0xee, 0x15, 0x7c, 0x45, 0xd3, 0x5d, 0x9e, 0x68, 0x35, 0x0b, 0xa3,
    +	0x3a, 0x05, 0xa5, 0xb0, 0xe1, 0xef, 0x0c, 0x60, 0x5a, 0xb6, 0x08, 0x7d, 0xcb, 0xdd, 0x22, 0x8e,
    +	0x17, 0x62, 0x22, 0x2e, 0x44, 0xe2, 0xf8, 0xe8, 0x61, 0xad, 0x98, 0xbd, 0x67, 0x95, 0xe7, 0xe4,
    +	0x4a, 0x9b, 0x4b, 0x5d, 0x2c, 0x40, 0x5d, 0x6d, 0x63, 0x79, 0x63, 0x82, 0x62, 0x17, 0x57, 0x43,
    +	0x6b, 0xc7, 0xc5, 0x32, 0x57, 0x0d, 0x73, 0x83, 0xd7, 0x1e, 0xdd, 0xe0, 0x4a, 0x5a, 0x63, 0x72,
    +	0x5f, 0xcf, 0x30, 0x28, 0x6a, 0x03, 0x2f, 0xfe, 0xcb, 0xc8, 0x26, 0x3b, 0xcd, 0xef, 0x95, 0xaa,
    +	0xe5, 0x62, 0xb8, 0x02, 0x26, 0x58, 0x3d, 0x8e, 0x70, 0xe0, 0x3a, 0x55, 0x8b, 0xf2, 0xfb, 0x98,
    +	0xd8, 0x6f, 0x09, 0x50, 0x86, 0x8f, 0xda, 0x46, 0xc0, 0x57, 0x01, 0x14, 0x85, 0x6a, 0x4a, 0x8f,
    +	0xa8, 0x4d, 0x54, 0xc9, 0x59, 0x69, 0x93, 0x40, 0x1d, 0x46, 0xc1, 0x65, 0x30, 0xe9, 0x5a, 0x3b,
    +	0xd8, 0x15, 0xf3, 0xf3, 0x09, 0x57, 0x25, 0x6e, 0xac, 0x53, 0xad, 0x66, 0x61, 0x72, 0x3d, 0xcb,
    +	0x44, 0xed, 0xf2, 0xc5, 0xcb, 0xd9, 0xec, 0xa2, 0x4f, 0x5c, 0x94, 0xff, 0x1f, 0xe6, 0xc0, 0x4c,
    +	0xf7, 0x30, 0x85, 0xdf, 0x56, 0xc5, 0xba, 0xa8, 0x41, 0x5f, 0x3f, 0x85, 0xcd, 0x20, 0x2f, 0x28,
    +	0xa0, 0xfd, 0x72, 0x02, 0x8f, 0x58, 0x05, 0x61, 0xb9, 0x71, 0x23, 0x62, 0xfb, 0x34, 0xd0, 0x99,
    +	0xfe, 0xf2, 0xb0, 0xa8, 0x4b, 0x2c, 0x97, 0x97, 0x21, 0x96, 0x8b, 0x8b, 0x1f, 0xb5, 0x5d, 0xb6,
    +	0x93, 0xf4, 0x01, 0xbf, 0x6f, 0x80, 0x71, 0x3f, 0xc0, 0xde, 0xd2, 0xd6, 0xda, 0xdd, 0xff, 0x17,
    +	0x69, 0x44, 0x3a, 0xe8, 0x04, 0x31, 0xce, 0x6e, 0xfc, 0x42, 0xd7, 0x16, 0xf1, 0x03, 0x5a, 0x3e,
    +	0xd7, 0x6a, 0x16, 0xc6, 0x37, 0xd3, 0x28, 0x28, 0x0b, 0x5b, 0x6c, 0x80, 0xa9, 0xd5, 0xc3, 0x10,
    +	0x13, 0xcf, 0x72, 0x57, 0xfc, 0x6a, 0xd4, 0xc0, 0x5e, 0x28, 0x6c, 0xcc, 0x34, 0x30, 0x8c, 0x87,
    +	0x6c, 0x60, 0x5c, 0x02, 0x7d, 0x11, 0x71, 0x65, 0xd4, 0x8e, 0xa8, 0xb6, 0x1c, 0x5a, 0x47, 0x8c,
    +	0x5e, 0xbc, 0x0c, 0xfa, 0x99, 0x9d, 0xf0, 0x02, 0xe8, 0x23, 0xd6, 0x01, 0xd7, 0x3a, 0x5a, 0x1e,
    +	0x62, 0x22, 0xc8, 0x3a, 0x40, 0x8c, 0x56, 0xfc, 0xdb, 0x1c, 0x18, 0xcf, 0xcc, 0x05, 0xce, 0x80,
    +	0x9c, 0xea, 0xf5, 0x01, 0xa9, 0x34, 0xb7, 0xb6, 0x82, 0x72, 0x8e, 0x0d, 0x5f, 0x50, 0xf9, 0x5e,
    +	0x80, 0x16, 0xd4, 0xf1, 0xc5, 0xa9, 0xac, 0x50, 0x4c, 0xd4, 0x31, 0x43, 0xe2, 0x84, 0xcd, 0x6c,
    +	0xc0, 0x35, 0xb9, 0x2b, 0x84, 0x0d, 0xb8, 0x86, 0x18, 0xed, 0x51, 0xbb, 0x37, 0x71, 0xfb, 0x68,
    +	0xe0, 0x21, 0xda, 0x47, 0x83, 0xf7, 0x6d, 0x1f, 0x5d, 0x01, 0x03, 0xa1, 0x13, 0xba, 0x98, 0x9f,
    +	0x9d, 0x5a, 0x79, 0x7e, 0x9b, 0x11, 0x91, 0xe0, 0x41, 0x0c, 0x86, 0x6c, 0x5c, 0xb3, 0x22, 0x37,
    +	0xe4, 0xc7, 0xe4, 0xc8, 0xe2, 0xd7, 0x4f, 0x16, 0x3d, 0xa2, 0xbd, 0xb2, 0x22, 0x54, 0xa2, 0x58,
    +	0x37, 0x7c, 0x1c, 0x0c, 0x35, 0xac, 0x43, 0xa7, 0x11, 0x35, 0x78, 0x0d, 0x6b, 0x08, 0xb1, 0x0d,
    +	0x41, 0x42, 0x31, 0x8f, 0x25, 0x41, 0x7c, 0x58, 0x75, 0x23, 0xea, 0xec, 0x63, 0xc9, 0x94, 0x45,
    +	0xa6, 0x4a, 0x82, 0xab, 0x19, 0x3e, 0x6a, 0x1b, 0xc1, 0xc1, 0x1c, 0x8f, 0x0f, 0x1e, 0xd1, 0xc0,
    +	0x04, 0x09, 0xc5, 0xbc, 0x34, 0x98, 0x94, 0x1f, 0xed, 0x06, 0x26, 0x07, 0xb7, 0x8d, 0x80, 0x4f,
    +	0x81, 0xe1, 0x86, 0x75, 0xb8, 0x8e, 0xbd, 0x7a, 0xb8, 0x6b, 0x8e, 0xcd, 0x19, 0xf3, 0x7d, 0xe5,
    +	0xb1, 0x56, 0xb3, 0x30, 0xbc, 0x11, 0x13, 0x51, 0xc2, 0xe7, 0xc2, 0x8e, 0x27, 0x85, 0xcf, 0x6a,
    +	0xc2, 0x31, 0x11, 0x25, 0x7c, 0x56, 0x2b, 0x05, 0x56, 0xc8, 0xf6, 0x95, 0x39, 0x9e, 0xbe, 0xca,
    +	0x6f, 0x09, 0x32, 0x8a, 0xf9, 0x70, 0x1e, 0xe4, 0x1b, 0xd6, 0x21, 0xbf, 0xe5, 0x9a, 0x13, 0x5c,
    +	0x2d, 0x6f, 0x71, 0x6e, 0x48, 0x1a, 0x52, 0x5c, 0x2e, 0xe9, 0x78, 0x42, 0x72, 0x52, 0x93, 0x94,
    +	0x34, 0xa4, 0xb8, 0x2c, 0x7e, 0x23, 0xcf, 0xb9, 0x17, 0x61, 0x21, 0x0c, 0xb9, 0x67, 0x54, 0xfc,
    +	0xde, 0x49, 0x58, 0x48, 0x97, 0x63, 0xb7, 0xcc, 0x46, 0xe4, 0x86, 0x4e, 0xe0, 0xe2, 0xcd, 0x9a,
    +	0x79, 0x8e, 0xfb, 0x9f, 0x5f, 0x2e, 0x36, 0x14, 0x15, 0x69, 0x12, 0xf0, 0x6d, 0xd0, 0x8f, 0xbd,
    +	0xa8, 0x61, 0x9e, 0xe7, 0xe7, 0xf3, 0x49, 0xa3, 0x4f, 0xed, 0x97, 0x55, 0x2f, 0x6a, 0x20, 0xae,
    +	0x19, 0xbe, 0x00, 0xc6, 0x1a, 0xd6, 0x21, 0x4b, 0x02, 0x98, 0x84, 0xec, 0xea, 0x3b, 0xc5, 0xe7,
    +	0x3d, 0xc9, 0xca, 0xea, 0x0d, 0x9d, 0x81, 0xd2, 0x72, 0x7c, 0xa0, 0xe3, 0x69, 0x03, 0xa7, 0xb5,
    +	0x81, 0x3a, 0x03, 0xa5, 0xe5, 0x98, 0x93, 0x09, 0xbe, 0x17, 0x39, 0x04, 0xdb, 0xe6, 0xff, 0xf0,
    +	0x4a, 0x5c, 0x76, 0x9c, 0x05, 0x0d, 0x29, 0x2e, 0xbc, 0x17, 0x37, 0x41, 0x4c, 0xbe, 0xf9, 0xb6,
    +	0x7a, 0x96, 0xba, 0x37, 0xc9, 0x12, 0x21, 0xd6, 0x91, 0x38, 0x55, 0xf4, 0xf6, 0x07, 0xf4, 0xc0,
    +	0x80, 0xe5, 0xba, 0x9b, 0x35, 0xf3, 0xc2, 0x49, 0x2b, 0xa2, 0xec, 0x69, 0xa1, 0x32, 0xcc, 0x12,
    +	0xd3, 0x8f, 0x04, 0x0c, 0xc3, 0xf3, 0x3d, 0x16, 0x0b, 0x33, 0xa7, 0x86, 0xb7, 0xc9, 0xf4, 0x23,
    +	0x01, 0xc3, 0xe7, 0xe7, 0x1d, 0x6d, 0xd6, 0xcc, 0xc7, 0x4e, 0x6f, 0x7e, 0x4c, 0x3f, 0x12, 0x30,
    +	0xd0, 0x06, 0x7d, 0x9e, 0x1f, 0x9a, 0x17, 0x7b, 0x7d, 0xf6, 0xf2, 0xd3, 0xe4, 0x96, 0x1f, 0x22,
    +	0xa6, 0x1e, 0xfe, 0xd0, 0x00, 0x20, 0x48, 0x22, 0xf1, 0xd2, 0x49, 0x9b, 0x12, 0x19, 0xb4, 0x52,
    +	0x12, 0xbd, 0xab, 0x5e, 0x48, 0x8e, 0x92, 0x9b, 0x96, 0x16, 0xe5, 0x9a, 0x01, 0xf0, 0x67, 0x06,
    +	0x38, 0xaf, 0x17, 0xe0, 0xca, 0xb2, 0x59, 0xee, 0x87, 0xcd, 0x1e, 0x06, 0x72, 0xd9, 0xf7, 0xdd,
    +	0xb2, 0xd9, 0x6a, 0x16, 0xce, 0x2f, 0x75, 0x00, 0x44, 0x1d, 0xcd, 0x80, 0xbf, 0x32, 0xc0, 0xa4,
    +	0xcc, 0x8e, 0x9a, 0x71, 0x05, 0xee, 0xb6, 0xb7, 0x7b, 0xe8, 0xb6, 0x2c, 0x84, 0xf0, 0x9e, 0xfa,
    +	0xee, 0xd9, 0xc6, 0x47, 0xed, 0x56, 0xc1, 0xdf, 0x1a, 0x60, 0xd4, 0xc6, 0x01, 0xf6, 0x6c, 0xec,
    +	0x55, 0x99, 0x99, 0x73, 0x27, 0xed, 0x74, 0x64, 0xcd, 0x5c, 0xd1, 0xb4, 0x0b, 0x0b, 0x4b, 0xd2,
    +	0xc2, 0x51, 0x9d, 0x75, 0xdc, 0x2c, 0x4c, 0x27, 0x43, 0x75, 0x0e, 0x4a, 0x19, 0x08, 0x7f, 0x64,
    +	0x80, 0xf1, 0xc4, 0xed, 0xe2, 0x80, 0xb8, 0x7c, 0x3a, 0x0b, 0xcf, 0x4b, 0xd0, 0xa5, 0x34, 0x16,
    +	0xca, 0x82, 0xc3, 0x5f, 0x1b, 0xac, 0xda, 0x8a, 0x6f, 0x8f, 0xd4, 0x2c, 0x72, 0x0f, 0xbe, 0xd1,
    +	0x4b, 0x0f, 0x2a, 0xe5, 0xc2, 0x81, 0xd7, 0x92, 0x4a, 0x4e, 0x71, 0x8e, 0x9b, 0x85, 0x29, 0xdd,
    +	0x7f, 0x8a, 0x81, 0x74, 0xe3, 0xe0, 0x7b, 0x06, 0x18, 0xc5, 0x49, 0xc1, 0x4c, 0xcd, 0x2b, 0x27,
    +	0x75, 0x5d, 0xc7, 0xf2, 0x5b, 0x5c, 0xf0, 0x35, 0x16, 0x45, 0x29, 0x58, 0x56, 0xfb, 0xe1, 0x43,
    +	0xab, 0x11, 0xb8, 0xd8, 0xfc, 0xdf, 0xde, 0xd5, 0x7e, 0xab, 0x42, 0x25, 0x8a, 0x75, 0xc3, 0x6b,
    +	0x20, 0xef, 0x45, 0xae, 0xcb, 0xae, 0xc3, 0xe6, 0xe3, 0xbc, 0x8a, 0x50, 0x1d, 0xcf, 0x5b, 0x92,
    +	0x8e, 0x94, 0x04, 0xac, 0x81, 0xb9, 0xc3, 0x9b, 0xd1, 0x0e, 0x26, 0x1e, 0x0e, 0x31, 0xed, 0xd8,
    +	0x52, 0x34, 0xaf, 0x72, 0x2d, 0x33, 0xad, 0x66, 0x61, 0x7a, 0xbb, 0x73, 0xd3, 0xf1, 0x81, 0x3a,
    +	0xe0, 0x9b, 0xe0, 0x31, 0x4d, 0x66, 0xb5, 0xb1, 0x83, 0x6d, 0x1b, 0xdb, 0xf1, 0x45, 0xcb, 0xfc,
    +	0x3f, 0x0e, 0xa1, 0xf6, 0xf1, 0x76, 0x56, 0x00, 0xdd, 0x6f, 0x34, 0x5c, 0x07, 0xd3, 0x1a, 0x7b,
    +	0xcd, 0x0b, 0x37, 0x49, 0x25, 0x24, 0x8e, 0x57, 0x37, 0xe7, 0xb9, 0xde, 0xf3, 0xf1, 0xee, 0xdb,
    +	0xd6, 0x78, 0xa8, 0xcb, 0x18, 0xf8, 0x4a, 0x4a, 0x1b, 0xff, 0x94, 0x62, 0x05, 0x37, 0xf1, 0x11,
    +	0x35, 0x9f, 0xe0, 0xc5, 0x05, 0x5f, 0xe7, 0x6d, 0x8d, 0x8e, 0xba, 0xc8, 0xc3, 0x97, 0xc0, 0xb9,
    +	0x0c, 0x87, 0xdd, 0x2b, 0xcc, 0x27, 0xc5, 0x05, 0x81, 0x55, 0xa2, 0xdb, 0x31, 0x11, 0x75, 0x92,
    +	0x84, 0x5f, 0x05, 0x50, 0x23, 0x6f, 0x58, 0x01, 0x1f, 0xff, 0x94, 0xb8, 0xab, 0xb0, 0x15, 0xdd,
    +	0x96, 0x34, 0xd4, 0x41, 0x0e, 0x7e, 0x68, 0xa4, 0x66, 0x92, 0xdc, 0x66, 0xa9, 0x79, 0x8d, 0x6f,
    +	0xd8, 0x57, 0x1e, 0x3d, 0x00, 0x13, 0x65, 0x28, 0x72, 0xb1, 0xe6, 0x61, 0x0d, 0x05, 0x75, 0x41,
    +	0x9f, 0x61, 0x97, 0xe9, 0x4c, 0x0e, 0x87, 0x13, 0xa0, 0x6f, 0x0f, 0xcb, 0x0f, 0xd9, 0x88, 0xfd,
    +	0x84, 0x6f, 0x81, 0x81, 0x7d, 0xcb, 0x8d, 0xe2, 0x56, 0x40, 0xef, 0xce, 0x7a, 0x24, 0xf4, 0xbe,
    +	0x98, 0xbb, 0x6e, 0xcc, 0x7c, 0x60, 0x80, 0xe9, 0xce, 0xa7, 0xca, 0x17, 0x65, 0xd1, 0x4f, 0x0d,
    +	0x30, 0xd9, 0x76, 0x80, 0x74, 0x30, 0xc6, 0x4d, 0x1b, 0x73, 0xb7, 0x87, 0x27, 0x81, 0xd8, 0x08,
    +	0xbc, 0xa2, 0xd5, 0x2d, 0xfb, 0x81, 0x01, 0x26, 0xb2, 0x89, 0xf9, 0x0b, 0xf2, 0x52, 0xf1, 0xfd,
    +	0x1c, 0x98, 0xee, 0x5c, 0x83, 0xc3, 0x86, 0xea, 0x2e, 0xf4, 0xbc, 0x41, 0xd3, 0xa9, 0x89, 0xfc,
    +	0xae, 0x01, 0x46, 0xde, 0x51, 0x72, 0xf1, 0xf7, 0xd5, 0x5e, 0x76, 0x85, 0xe2, 0xa3, 0x2f, 0x61,
    +	0x50, 0xa4, 0x43, 0x16, 0x7f, 0x63, 0x80, 0xa9, 0x8e, 0xc7, 0x39, 0xbc, 0x0a, 0x06, 0x2d, 0xd7,
    +	0xf5, 0x0f, 0x44, 0x37, 0x4f, 0xfb, 0x50, 0xb0, 0xc4, 0xa9, 0x48, 0x72, 0x35, 0x9f, 0xe5, 0x3e,
    +	0x07, 0x9f, 0x15, 0x7f, 0x6f, 0x80, 0x8b, 0xf7, 0x8b, 0xba, 0xcf, 0x7b, 0x0d, 0xe7, 0x41, 0x5e,
    +	0x16, 0xdb, 0x47, 0x7c, 0xfd, 0x64, 0x76, 0x95, 0x19, 0x81, 0xbf, 0xdf, 0x11, 0xbf, 0x8a, 0x2f,
    +	0x81, 0xf1, 0x4c, 0x03, 0x3a, 0xf5, 0xa4, 0xc7, 0x78, 0xe0, 0x93, 0x9e, 0x5f, 0x18, 0x60, 0xa2,
    +	0x82, 0xc9, 0xbe, 0x53, 0xc5, 0x08, 0xd7, 0x30, 0xc1, 0x5e, 0x15, 0xc3, 0x05, 0x30, 0xcc, 0x3f,
    +	0xa0, 0x06, 0x56, 0x35, 0xfe, 0xec, 0x33, 0x29, 0x75, 0x0c, 0xdf, 0x8a, 0x19, 0x28, 0x91, 0x51,
    +	0x9f, 0x88, 0x72, 0x5d, 0x3f, 0x11, 0x5d, 0x04, 0xfd, 0x41, 0xd2, 0x41, 0xce, 0x33, 0x2e, 0xb7,
    +	0x84, 0x53, 0x39, 0xd7, 0x27, 0x21, 0x6f, 0x93, 0x0d, 0x48, 0xae, 0x4f, 0x42, 0xc4, 0xa9, 0xc5,
    +	0x3f, 0xe6, 0xc0, 0xd9, 0x74, 0x82, 0x67, 0x80, 0x24, 0x72, 0xdb, 0xbe, 0x49, 0x31, 0x1e, 0xe2,
    +	0x1c, 0xfd, 0x29, 0x44, 0xee, 0xfe, 0x4f, 0x21, 0xe0, 0xcb, 0x60, 0x52, 0xfe, 0x5c, 0x3d, 0x0c,
    +	0x08, 0xa6, 0xfc, 0x63, 0x6b, 0x5f, 0xfa, 0x09, 0xe3, 0x46, 0x56, 0x00, 0xb5, 0x8f, 0x81, 0x5f,
    +	0xc9, 0x3c, 0xd3, 0xb8, 0x92, 0x3c, 0xd1, 0x60, 0xc5, 0x21, 0x5f, 0x9f, 0xbb, 0x2c, 0x67, 0xac,
    +	0x12, 0xe2, 0x93, 0xcc, 0xdb, 0x8d, 0x05, 0x30, 0x5c, 0x63, 0x02, 0x7c, 0xe1, 0x06, 0xd2, 0x4e,
    +	0xbf, 0x11, 0x33, 0x50, 0x22, 0x03, 0xbf, 0x06, 0xc6, 0xfd, 0x40, 0x94, 0xc1, 0x9b, 0xae, 0x5d,
    +	0xc1, 0x6e, 0x8d, 0xb7, 0x04, 0xf3, 0x71, 0xdf, 0x36, 0xc5, 0x42, 0x59, 0xd9, 0xe2, 0x1f, 0x0c,
    +	0x70, 0x2e, 0x7e, 0x1f, 0xe5, 0x3a, 0xd8, 0x0b, 0x97, 0x7d, 0xaf, 0xe6, 0xd4, 0xe1, 0x05, 0xd1,
    +	0x7f, 0xd5, 0x9a, 0x9a, 0x71, 0xef, 0x15, 0xde, 0x03, 0x43, 0x54, 0xc4, 0x8a, 0xdc, 0x07, 0xaf,
    +	0x9e, 0xe4, 0x83, 0x4a, 0x3a, 0xe8, 0x44, 0xf9, 0x18, 0x53, 0x63, 0x1c, 0xb6, 0x15, 0xaa, 0x56,
    +	0x39, 0xf2, 0x6c, 0xd9, 0x83, 0x1f, 0x15, 0x5b, 0x61, 0x79, 0x49, 0xd0, 0x90, 0xe2, 0x16, 0xff,
    +	0x6e, 0x80, 0xc9, 0xb6, 0xf7, 0x5e, 0xf0, 0xbb, 0x06, 0x18, 0xad, 0x6a, 0xd3, 0x93, 0x09, 0x65,
    +	0xe3, 0xe4, 0x6f, 0xca, 0x34, 0xa5, 0xa2, 0x06, 0xd3, 0x29, 0x28, 0x05, 0x0a, 0xb7, 0x81, 0x59,
    +	0xcd, 0x3c, 0xad, 0xcc, 0x7c, 0xac, 0xbd, 0xd8, 0x6a, 0x16, 0xcc, 0xe5, 0x2e, 0x32, 0xa8, 0xeb,
    +	0xe8, 0xf2, 0x37, 0x3f, 0xfe, 0x6c, 0xf6, 0xcc, 0x27, 0x9f, 0xcd, 0x9e, 0xf9, 0xf4, 0xb3, 0xd9,
    +	0x33, 0xef, 0xb6, 0x66, 0x8d, 0x8f, 0x5b, 0xb3, 0xc6, 0x27, 0xad, 0x59, 0xe3, 0xd3, 0xd6, 0xac,
    +	0xf1, 0x97, 0xd6, 0xac, 0xf1, 0xe3, 0xbf, 0xce, 0x9e, 0x79, 0xe3, 0xfa, 0xa3, 0x3e, 0xa8, 0xfe,
    +	0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x1c, 0x7a, 0x10, 0x8b, 0x2d, 0x00, 0x00,
     }
     
     func (m *ConversionRequest) Marshal() (dAtA []byte, err error) {
    @@ -1618,6 +1648,20 @@ func (m *CustomResourceDefinitionVersion) MarshalToSizedBuffer(dAtA []byte) (int
     	_ = i
     	var l int
     	_ = l
    +	if len(m.SelectableFields) > 0 {
    +		for iNdEx := len(m.SelectableFields) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.SelectableFields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x4a
    +		}
    +	}
     	if m.DeprecationWarning != nil {
     		i -= len(*m.DeprecationWarning)
     		copy(dAtA[i:], *m.DeprecationWarning)
    @@ -2570,6 +2614,34 @@ func (m *JSONSchemaPropsOrStringArray) MarshalToSizedBuffer(dAtA []byte) (int, e
     	return len(dAtA) - i, nil
     }
     
    +func (m *SelectableField) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *SelectableField) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *SelectableField) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.JSONPath)
    +	copy(dAtA[i:], m.JSONPath)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.JSONPath)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *ServiceReference) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -3027,6 +3099,12 @@ func (m *CustomResourceDefinitionVersion) Size() (n int) {
     		l = len(*m.DeprecationWarning)
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if len(m.SelectableFields) > 0 {
    +		for _, e := range m.SelectableFields {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
     	return n
     }
     
    @@ -3341,6 +3419,17 @@ func (m *JSONSchemaPropsOrStringArray) Size() (n int) {
     	return n
     }
     
    +func (m *SelectableField) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.JSONPath)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
     func (m *ServiceReference) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -3605,6 +3694,11 @@ func (this *CustomResourceDefinitionVersion) String() string {
     		repeatedStringForAdditionalPrinterColumns += strings.Replace(strings.Replace(f.String(), "CustomResourceColumnDefinition", "CustomResourceColumnDefinition", 1), `&`, ``, 1) + ","
     	}
     	repeatedStringForAdditionalPrinterColumns += "}"
    +	repeatedStringForSelectableFields := "[]SelectableField{"
    +	for _, f := range this.SelectableFields {
    +		repeatedStringForSelectableFields += strings.Replace(strings.Replace(f.String(), "SelectableField", "SelectableField", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSelectableFields += "}"
     	s := strings.Join([]string{`&CustomResourceDefinitionVersion{`,
     		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
     		`Served:` + fmt.Sprintf("%v", this.Served) + `,`,
    @@ -3614,6 +3708,7 @@ func (this *CustomResourceDefinitionVersion) String() string {
     		`AdditionalPrinterColumns:` + repeatedStringForAdditionalPrinterColumns + `,`,
     		`Deprecated:` + fmt.Sprintf("%v", this.Deprecated) + `,`,
     		`DeprecationWarning:` + valueToStringGenerated(this.DeprecationWarning) + `,`,
    +		`SelectableFields:` + repeatedStringForSelectableFields + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -3837,6 +3932,16 @@ func (this *JSONSchemaPropsOrStringArray) String() string {
     	}, "")
     	return s
     }
    +func (this *SelectableField) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&SelectableField{`,
    +		`JSONPath:` + fmt.Sprintf("%v", this.JSONPath) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *ServiceReference) String() string {
     	if this == nil {
     		return "nil"
    @@ -6027,6 +6132,40 @@ func (m *CustomResourceDefinitionVersion) Unmarshal(dAtA []byte) error {
     			s := string(dAtA[iNdEx:postIndex])
     			m.DeprecationWarning = &s
     			iNdEx = postIndex
    +		case 9:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SelectableFields", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.SelectableFields = append(m.SelectableFields, SelectableField{})
    +			if err := m.SelectableFields[len(m.SelectableFields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -8667,6 +8806,88 @@ func (m *JSONSchemaPropsOrStringArray) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *SelectableField) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: SelectableField: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: SelectableField: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field JSONPath", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.JSONPath = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func (m *ServiceReference) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto
    index 3c39d63a5f20..1bbd0ce13e15 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto
    @@ -40,7 +40,8 @@ message ConversionRequest {
       optional string desiredAPIVersion = 2;
     
       // objects is the list of custom resource objects to be converted.
    -  repeated k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;
    +  // +listType=atomic
    +  repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;
     }
     
     // ConversionResponse describes a conversion response.
    @@ -53,14 +54,15 @@ message ConversionResponse {
       // The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       // must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       // The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
    -  repeated k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;
    +  // +listType=atomic
    +  repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;
     
       // result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       // the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       // conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       // `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       // will be used to construct an error message for the end user.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;
     }
     
     // ConversionReview describes a conversion request/response.
    @@ -123,7 +125,7 @@ message CustomResourceDefinition {
       // Standard object's metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec describes how the user wants the resources to appear
       optional CustomResourceDefinitionSpec spec = 2;
    @@ -144,7 +146,7 @@ message CustomResourceDefinitionCondition {
     
       // lastTransitionTime last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // reason is a unique, one-word, CamelCase reason for the condition's last transition.
       // +optional
    @@ -160,7 +162,7 @@ message CustomResourceDefinitionList {
       // Standard object's metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items list individual CustomResourceDefinition objects
       repeated CustomResourceDefinition items = 2;
    @@ -182,6 +184,7 @@ message CustomResourceDefinitionNames {
       // and used by clients to support invocations like `kubectl get `.
       // It must be all lowercase.
       // +optional
    +  // +listType=atomic
       repeated string shortNames = 3;
     
       // kind is the serialized kind of the resource. It is normally CamelCase and singular.
    @@ -196,6 +199,7 @@ message CustomResourceDefinitionNames {
       // This is published in API discovery documents, and used by clients to support invocations like
       // `kubectl get all`.
       // +optional
    +  // +listType=atomic
       repeated string categories = 6;
     }
     
    @@ -221,6 +225,7 @@ message CustomResourceDefinitionSpec {
       // by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       // major version, then minor version. An example sorted list of versions:
       // v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
    +  // +listType=atomic
       repeated CustomResourceDefinitionVersion versions = 7;
     
       // conversion defines conversion settings for the CRD.
    @@ -256,6 +261,7 @@ message CustomResourceDefinitionStatus {
       // versions from this list.
       // Versions may not be removed from `spec.versions` while they exist in this list.
       // +optional
    +  // +listType=atomic
       repeated string storedVersions = 3;
     }
     
    @@ -297,7 +303,17 @@ message CustomResourceDefinitionVersion {
       // See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       // If no columns are specified, a single column displaying the age of the custom resource is used.
       // +optional
    +  // +listType=atomic
       repeated CustomResourceColumnDefinition additionalPrinterColumns = 6;
    +
    +  // selectableFields specifies paths to fields that may be used as field selectors.
    +  // A maximum of 8 selectable fields are allowed.
    +  // See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
    +  //
    +  // +featureGate=CustomResourceFieldSelectors
    +  // +optional
    +  // +listType=atomic
    +  repeated SelectableField selectableFields = 9;
     }
     
     // CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.
    @@ -439,20 +455,25 @@ message JSONSchemaProps {
     
       optional double multipleOf = 19;
     
    +  // +listType=atomic
       repeated JSON enum = 20;
     
       optional int64 maxProperties = 21;
     
       optional int64 minProperties = 22;
     
    +  // +listType=atomic
       repeated string required = 23;
     
       optional JSONSchemaPropsOrArray items = 24;
     
    +  // +listType=atomic
       repeated JSONSchemaProps allOf = 25;
     
    +  // +listType=atomic
       repeated JSONSchemaProps oneOf = 26;
     
    +  // +listType=atomic
       repeated JSONSchemaProps anyOf = 27;
     
       optional JSONSchemaProps not = 28;
    @@ -518,6 +539,7 @@ message JSONSchemaProps {
       // to ensure those properties are present for all list items.
       //
       // +optional
    +  // +listType=atomic
       repeated string xKubernetesListMapKeys = 41;
     
       // x-kubernetes-list-type annotates an array to further describe its topology.
    @@ -551,7 +573,6 @@ message JSONSchemaProps {
       optional string xKubernetesMapType = 43;
     
       // x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
    -  // This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       // +patchMergeKey=rule
       // +patchStrategy=merge
       // +listType=map
    @@ -564,6 +585,7 @@ message JSONSchemaProps {
     message JSONSchemaPropsOrArray {
       optional JSONSchemaProps schema = 1;
     
    +  // +listType=atomic
       repeated JSONSchemaProps jSONSchemas = 2;
     }
     
    @@ -579,9 +601,23 @@ message JSONSchemaPropsOrBool {
     message JSONSchemaPropsOrStringArray {
       optional JSONSchemaProps schema = 1;
     
    +  // +listType=atomic
       repeated string property = 2;
     }
     
    +// SelectableField specifies the JSON path of a field that may be used with field selectors.
    +message SelectableField {
    +  // jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
    +  // field selector value.
    +  // Only JSON paths without the array notation are allowed.
    +  // Must point to a field of type string, boolean or integer. Types with enum values
    +  // and strings with formats are allowed.
    +  // If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
    +  // Must not point to metdata fields.
    +  // Required.
    +  optional string jsonPath = 1;
    +}
    +
     // ServiceReference holds a reference to Service.legacy.k8s.io
     message ServiceReference {
       // namespace is the namespace of the service.
    @@ -787,6 +823,7 @@ message WebhookConversion {
       // are supported by API server, conversion will fail for the custom resource.
       // If a persisted Webhook configuration specifies allowed versions and does not
       // include any versions known to the API Server, calls to the webhook will fail.
    +  // +listType=atomic
       repeated string conversionReviewVersions = 3;
     }
     
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/marshal.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/marshal.go
    index 12cc2f6f2c92..6ade24a82feb 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/marshal.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/marshal.go
    @@ -20,12 +20,42 @@ import (
     	"bytes"
     	"errors"
     
    +	cbor "k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct"
     	"k8s.io/apimachinery/pkg/util/json"
     )
     
     var jsTrue = []byte("true")
     var jsFalse = []byte("false")
     
    +// The CBOR parsing related constants and functions below are not exported so they can be
    +// easily removed at a future date when the CBOR library provides equivalent functionality.
    +
    +type cborMajorType int
    +
    +const (
    +	// https://www.rfc-editor.org/rfc/rfc8949.html#section-3.1
    +	cborUnsignedInteger cborMajorType = 0
    +	cborNegativeInteger cborMajorType = 1
    +	cborByteString      cborMajorType = 2
    +	cborTextString      cborMajorType = 3
    +	cborArray           cborMajorType = 4
    +	cborMap             cborMajorType = 5
    +	cborTag             cborMajorType = 6
    +	cborOther           cborMajorType = 7
    +)
    +
    +const (
    +	// from https://www.rfc-editor.org/rfc/rfc8949.html#name-jump-table-for-initial-byte.
    +	// additionally, see https://www.rfc-editor.org/rfc/rfc8949.html#section-3.3-5.
    +	cborFalseValue = 0xf4
    +	cborTrueValue  = 0xf5
    +	cborNullValue  = 0xf6
    +)
    +
    +func cborType(b byte) cborMajorType {
    +	return cborMajorType(b >> 5)
    +}
    +
     func (s JSONSchemaPropsOrBool) MarshalJSON() ([]byte, error) {
     	if s.Schema != nil {
     		return json.Marshal(s.Schema)
    @@ -59,6 +89,39 @@ func (s *JSONSchemaPropsOrBool) UnmarshalJSON(data []byte) error {
     	return nil
     }
     
    +func (s JSONSchemaPropsOrBool) MarshalCBOR() ([]byte, error) {
    +	if s.Schema != nil {
    +		return cbor.Marshal(s.Schema)
    +	}
    +	return cbor.Marshal(s.Allows)
    +}
    +
    +func (s *JSONSchemaPropsOrBool) UnmarshalCBOR(data []byte) error {
    +	switch {
    +	case len(data) == 0:
    +		// ideally we would avoid modifying *s here, but we are matching the behavior of UnmarshalJSON
    +		*s = JSONSchemaPropsOrBool{}
    +		return nil
    +	case cborType(data[0]) == cborMap:
    +		var p JSONSchemaProps
    +		if err := cbor.Unmarshal(data, &p); err != nil {
    +			return err
    +		}
    +		*s = JSONSchemaPropsOrBool{Allows: true, Schema: &p}
    +		return nil
    +	case data[0] == cborTrueValue:
    +		*s = JSONSchemaPropsOrBool{Allows: true}
    +		return nil
    +	case data[0] == cborFalseValue:
    +		*s = JSONSchemaPropsOrBool{Allows: false}
    +		return nil
    +	default:
    +		// ideally, this case would not also capture a null input value,
    +		// but we are matching the behavior of the UnmarshalJSON
    +		return errors.New("boolean or JSON schema expected")
    +	}
    +}
    +
     func (s JSONSchemaPropsOrStringArray) MarshalJSON() ([]byte, error) {
     	if len(s.Property) > 0 {
     		return json.Marshal(s.Property)
    @@ -91,6 +154,40 @@ func (s *JSONSchemaPropsOrStringArray) UnmarshalJSON(data []byte) error {
     	return nil
     }
     
    +func (s JSONSchemaPropsOrStringArray) MarshalCBOR() ([]byte, error) {
    +	if len(s.Property) > 0 {
    +		return cbor.Marshal(s.Property)
    +	}
    +	if s.Schema != nil {
    +		return cbor.Marshal(s.Schema)
    +	}
    +	return cbor.Marshal(nil)
    +}
    +
    +func (s *JSONSchemaPropsOrStringArray) UnmarshalCBOR(data []byte) error {
    +	if len(data) > 0 && cborType(data[0]) == cborArray {
    +		var a []string
    +		if err := cbor.Unmarshal(data, &a); err != nil {
    +			return err
    +		}
    +		*s = JSONSchemaPropsOrStringArray{Property: a}
    +		return nil
    +	}
    +	if len(data) > 0 && cborType(data[0]) == cborMap {
    +		var p JSONSchemaProps
    +		if err := cbor.Unmarshal(data, &p); err != nil {
    +			return err
    +		}
    +		*s = JSONSchemaPropsOrStringArray{Schema: &p}
    +		return nil
    +	}
    +	// At this point we either have: empty data, a null value, or an
    +	// unexpected type. In order to match the behavior of the existing
    +	// UnmarshalJSON, no error is returned and *s is overwritten here.
    +	*s = JSONSchemaPropsOrStringArray{}
    +	return nil
    +}
    +
     func (s JSONSchemaPropsOrArray) MarshalJSON() ([]byte, error) {
     	if len(s.JSONSchemas) > 0 {
     		return json.Marshal(s.JSONSchemas)
    @@ -120,6 +217,37 @@ func (s *JSONSchemaPropsOrArray) UnmarshalJSON(data []byte) error {
     	return nil
     }
     
    +func (s JSONSchemaPropsOrArray) MarshalCBOR() ([]byte, error) {
    +	if len(s.JSONSchemas) > 0 {
    +		return cbor.Marshal(s.JSONSchemas)
    +	}
    +	return cbor.Marshal(s.Schema)
    +}
    +
    +func (s *JSONSchemaPropsOrArray) UnmarshalCBOR(data []byte) error {
    +	if len(data) > 0 && cborType(data[0]) == cborMap {
    +		var p JSONSchemaProps
    +		if err := cbor.Unmarshal(data, &p); err != nil {
    +			return err
    +		}
    +		*s = JSONSchemaPropsOrArray{Schema: &p}
    +		return nil
    +	}
    +	if len(data) > 0 && cborType(data[0]) == cborArray {
    +		var a []JSONSchemaProps
    +		if err := cbor.Unmarshal(data, &a); err != nil {
    +			return err
    +		}
    +		*s = JSONSchemaPropsOrArray{JSONSchemas: a}
    +		return nil
    +	}
    +	// At this point we either have: empty data, a null value, or an
    +	// unexpected type. In order to match the behavior of the existing
    +	// UnmarshalJSON, no error is returned and *s is overwritten here.
    +	*s = JSONSchemaPropsOrArray{}
    +	return nil
    +}
    +
     func (s JSON) MarshalJSON() ([]byte, error) {
     	if len(s.Raw) > 0 {
     		return s.Raw, nil
    @@ -130,7 +258,38 @@ func (s JSON) MarshalJSON() ([]byte, error) {
     
     func (s *JSON) UnmarshalJSON(data []byte) error {
     	if len(data) > 0 && !bytes.Equal(data, nullLiteral) {
    -		s.Raw = data
    +		s.Raw = append(s.Raw[0:0], data...)
    +	}
    +	return nil
    +}
    +
    +func (s JSON) MarshalCBOR() ([]byte, error) {
    +	// Note that non-semantic whitespace is lost during the transcoding performed here.
    +	// We do not forsee this to be a problem given the current known uses of this type.
    +	// Other limitations that arise when roundtripping JSON via dynamic clients also apply
    +	// here, for example: insignificant whitespace handling, number handling, and map key ordering.
    +	if len(s.Raw) == 0 {
    +		return []byte{cborNullValue}, nil
    +	}
    +	var u any
    +	if err := json.Unmarshal(s.Raw, &u); err != nil {
    +		return nil, err
    +	}
    +	return cbor.Marshal(u)
    +}
    +
    +func (s *JSON) UnmarshalCBOR(data []byte) error {
    +	if len(data) == 0 || data[0] == cborNullValue {
    +		return nil
    +	}
    +	var u any
    +	if err := cbor.Unmarshal(data, &u); err != nil {
    +		return err
    +	}
    +	raw, err := json.Marshal(u)
    +	if err != nil {
    +		return err
     	}
    +	s.Raw = raw
     	return nil
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types.go
    index 59ec0e372b87..212cea6f6960 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types.go
    @@ -56,6 +56,7 @@ type CustomResourceDefinitionSpec struct {
     	// by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     	// major version, then minor version. An example sorted list of versions:
     	// v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
    +	// +listType=atomic
     	Versions []CustomResourceDefinitionVersion `json:"versions" protobuf:"bytes,7,rep,name=versions"`
     
     	// conversion defines conversion settings for the CRD.
    @@ -96,6 +97,7 @@ type WebhookConversion struct {
     	// are supported by API server, conversion will fail for the custom resource.
     	// If a persisted Webhook configuration specifies allowed versions and does not
     	// include any versions known to the API Server, calls to the webhook will fail.
    +	// +listType=atomic
     	ConversionReviewVersions []string `json:"conversionReviewVersions" protobuf:"bytes,3,rep,name=conversionReviewVersions"`
     }
     
    @@ -195,7 +197,30 @@ type CustomResourceDefinitionVersion struct {
     	// See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     	// If no columns are specified, a single column displaying the age of the custom resource is used.
     	// +optional
    +	// +listType=atomic
     	AdditionalPrinterColumns []CustomResourceColumnDefinition `json:"additionalPrinterColumns,omitempty" protobuf:"bytes,6,rep,name=additionalPrinterColumns"`
    +
    +	// selectableFields specifies paths to fields that may be used as field selectors.
    +	// A maximum of 8 selectable fields are allowed.
    +	// See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
    +	//
    +	// +featureGate=CustomResourceFieldSelectors
    +	// +optional
    +	// +listType=atomic
    +	SelectableFields []SelectableField `json:"selectableFields,omitempty" protobuf:"bytes,9,rep,name=selectableFields"`
    +}
    +
    +// SelectableField specifies the JSON path of a field that may be used with field selectors.
    +type SelectableField struct {
    +	// jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
    +	// field selector value.
    +	// Only JSON paths without the array notation are allowed.
    +	// Must point to a field of type string, boolean or integer. Types with enum values
    +	// and strings with formats are allowed.
    +	// If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
    +	// Must not point to metdata fields.
    +	// Required.
    +	JSONPath string `json:"jsonPath" protobuf:"bytes,1,opt,name=jsonPath"`
     }
     
     // CustomResourceColumnDefinition specifies a column for server side printing.
    @@ -237,6 +262,7 @@ type CustomResourceDefinitionNames struct {
     	// and used by clients to support invocations like `kubectl get `.
     	// It must be all lowercase.
     	// +optional
    +	// +listType=atomic
     	ShortNames []string `json:"shortNames,omitempty" protobuf:"bytes,3,opt,name=shortNames"`
     	// kind is the serialized kind of the resource. It is normally CamelCase and singular.
     	// Custom resource instances will use this value as the `kind` attribute in API calls.
    @@ -248,6 +274,7 @@ type CustomResourceDefinitionNames struct {
     	// This is published in API discovery documents, and used by clients to support invocations like
     	// `kubectl get all`.
     	// +optional
    +	// +listType=atomic
     	Categories []string `json:"categories,omitempty" protobuf:"bytes,6,rep,name=categories"`
     }
     
    @@ -345,6 +372,7 @@ type CustomResourceDefinitionStatus struct {
     	// versions from this list.
     	// Versions may not be removed from `spec.versions` while they exist in this list.
     	// +optional
    +	// +listType=atomic
     	StoredVersions []string `json:"storedVersions" protobuf:"bytes,3,rep,name=storedVersions"`
     }
     
    @@ -355,6 +383,7 @@ const CustomResourceCleanupFinalizer = "customresourcecleanup.apiextensions.k8s.
     // +genclient
     // +genclient:nonNamespaced
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.16
     
     // CustomResourceDefinition represents a resource that should be exposed on the API server.  Its name MUST be in the format
     // <.spec.name>.<.spec.group>.
    @@ -373,6 +402,7 @@ type CustomResourceDefinition struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.16
     
     // CustomResourceDefinitionList is a list of CustomResourceDefinition objects.
     type CustomResourceDefinitionList struct {
    @@ -441,6 +471,7 @@ type CustomResourceSubresourceScale struct {
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.16
     
     // ConversionReview describes a conversion request/response.
     type ConversionReview struct {
    @@ -463,6 +494,7 @@ type ConversionRequest struct {
     	// desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
     	DesiredAPIVersion string `json:"desiredAPIVersion" protobuf:"bytes,2,name=desiredAPIVersion"`
     	// objects is the list of custom resource objects to be converted.
    +	// +listType=atomic
     	Objects []runtime.RawExtension `json:"objects" protobuf:"bytes,3,rep,name=objects"`
     }
     
    @@ -475,6 +507,7 @@ type ConversionResponse struct {
     	// The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     	// must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     	// The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
    +	// +listType=atomic
     	ConvertedObjects []runtime.RawExtension `json:"convertedObjects" protobuf:"bytes,2,rep,name=convertedObjects"`
     	// result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
     	// the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types_jsonschema.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types_jsonschema.go
    index a81451ad6ef7..197bd1b7a882 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types_jsonschema.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types_jsonschema.go
    @@ -76,25 +76,30 @@ type JSONSchemaProps struct {
     	// default is a default value for undefined object fields.
     	// Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
     	// Defaulting requires spec.preserveUnknownFields to be false.
    -	Default              *JSON                      `json:"default,omitempty" protobuf:"bytes,8,opt,name=default"`
    -	Maximum              *float64                   `json:"maximum,omitempty" protobuf:"bytes,9,opt,name=maximum"`
    -	ExclusiveMaximum     bool                       `json:"exclusiveMaximum,omitempty" protobuf:"bytes,10,opt,name=exclusiveMaximum"`
    -	Minimum              *float64                   `json:"minimum,omitempty" protobuf:"bytes,11,opt,name=minimum"`
    -	ExclusiveMinimum     bool                       `json:"exclusiveMinimum,omitempty" protobuf:"bytes,12,opt,name=exclusiveMinimum"`
    -	MaxLength            *int64                     `json:"maxLength,omitempty" protobuf:"bytes,13,opt,name=maxLength"`
    -	MinLength            *int64                     `json:"minLength,omitempty" protobuf:"bytes,14,opt,name=minLength"`
    -	Pattern              string                     `json:"pattern,omitempty" protobuf:"bytes,15,opt,name=pattern"`
    -	MaxItems             *int64                     `json:"maxItems,omitempty" protobuf:"bytes,16,opt,name=maxItems"`
    -	MinItems             *int64                     `json:"minItems,omitempty" protobuf:"bytes,17,opt,name=minItems"`
    -	UniqueItems          bool                       `json:"uniqueItems,omitempty" protobuf:"bytes,18,opt,name=uniqueItems"`
    -	MultipleOf           *float64                   `json:"multipleOf,omitempty" protobuf:"bytes,19,opt,name=multipleOf"`
    -	Enum                 []JSON                     `json:"enum,omitempty" protobuf:"bytes,20,rep,name=enum"`
    -	MaxProperties        *int64                     `json:"maxProperties,omitempty" protobuf:"bytes,21,opt,name=maxProperties"`
    -	MinProperties        *int64                     `json:"minProperties,omitempty" protobuf:"bytes,22,opt,name=minProperties"`
    -	Required             []string                   `json:"required,omitempty" protobuf:"bytes,23,rep,name=required"`
    -	Items                *JSONSchemaPropsOrArray    `json:"items,omitempty" protobuf:"bytes,24,opt,name=items"`
    -	AllOf                []JSONSchemaProps          `json:"allOf,omitempty" protobuf:"bytes,25,rep,name=allOf"`
    -	OneOf                []JSONSchemaProps          `json:"oneOf,omitempty" protobuf:"bytes,26,rep,name=oneOf"`
    +	Default          *JSON    `json:"default,omitempty" protobuf:"bytes,8,opt,name=default"`
    +	Maximum          *float64 `json:"maximum,omitempty" protobuf:"bytes,9,opt,name=maximum"`
    +	ExclusiveMaximum bool     `json:"exclusiveMaximum,omitempty" protobuf:"bytes,10,opt,name=exclusiveMaximum"`
    +	Minimum          *float64 `json:"minimum,omitempty" protobuf:"bytes,11,opt,name=minimum"`
    +	ExclusiveMinimum bool     `json:"exclusiveMinimum,omitempty" protobuf:"bytes,12,opt,name=exclusiveMinimum"`
    +	MaxLength        *int64   `json:"maxLength,omitempty" protobuf:"bytes,13,opt,name=maxLength"`
    +	MinLength        *int64   `json:"minLength,omitempty" protobuf:"bytes,14,opt,name=minLength"`
    +	Pattern          string   `json:"pattern,omitempty" protobuf:"bytes,15,opt,name=pattern"`
    +	MaxItems         *int64   `json:"maxItems,omitempty" protobuf:"bytes,16,opt,name=maxItems"`
    +	MinItems         *int64   `json:"minItems,omitempty" protobuf:"bytes,17,opt,name=minItems"`
    +	UniqueItems      bool     `json:"uniqueItems,omitempty" protobuf:"bytes,18,opt,name=uniqueItems"`
    +	MultipleOf       *float64 `json:"multipleOf,omitempty" protobuf:"bytes,19,opt,name=multipleOf"`
    +	// +listType=atomic
    +	Enum          []JSON `json:"enum,omitempty" protobuf:"bytes,20,rep,name=enum"`
    +	MaxProperties *int64 `json:"maxProperties,omitempty" protobuf:"bytes,21,opt,name=maxProperties"`
    +	MinProperties *int64 `json:"minProperties,omitempty" protobuf:"bytes,22,opt,name=minProperties"`
    +	// +listType=atomic
    +	Required []string                `json:"required,omitempty" protobuf:"bytes,23,rep,name=required"`
    +	Items    *JSONSchemaPropsOrArray `json:"items,omitempty" protobuf:"bytes,24,opt,name=items"`
    +	// +listType=atomic
    +	AllOf []JSONSchemaProps `json:"allOf,omitempty" protobuf:"bytes,25,rep,name=allOf"`
    +	// +listType=atomic
    +	OneOf []JSONSchemaProps `json:"oneOf,omitempty" protobuf:"bytes,26,rep,name=oneOf"`
    +	// +listType=atomic
     	AnyOf                []JSONSchemaProps          `json:"anyOf,omitempty" protobuf:"bytes,27,rep,name=anyOf"`
     	Not                  *JSONSchemaProps           `json:"not,omitempty" protobuf:"bytes,28,opt,name=not"`
     	Properties           map[string]JSONSchemaProps `json:"properties,omitempty" protobuf:"bytes,29,rep,name=properties"`
    @@ -150,6 +155,7 @@ type JSONSchemaProps struct {
     	// to ensure those properties are present for all list items.
     	//
     	// +optional
    +	// +listType=atomic
     	XListMapKeys []string `json:"x-kubernetes-list-map-keys,omitempty" protobuf:"bytes,41,rep,name=xKubernetesListMapKeys"`
     
     	// x-kubernetes-list-type annotates an array to further describe its topology.
    @@ -183,7 +189,6 @@ type JSONSchemaProps struct {
     	XMapType *string `json:"x-kubernetes-map-type,omitempty" protobuf:"bytes,43,opt,name=xKubernetesMapType"`
     
     	// x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
    -	// This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     	// +patchMergeKey=rule
     	// +patchStrategy=merge
     	// +listType=map
    @@ -343,7 +348,8 @@ type JSONSchemaURL string
     // JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps
     // or an array of JSONSchemaProps. Mainly here for serialization purposes.
     type JSONSchemaPropsOrArray struct {
    -	Schema      *JSONSchemaProps  `protobuf:"bytes,1,opt,name=schema"`
    +	Schema *JSONSchemaProps `protobuf:"bytes,1,opt,name=schema"`
    +	// +listType=atomic
     	JSONSchemas []JSONSchemaProps `protobuf:"bytes,2,rep,name=jSONSchemas"`
     }
     
    @@ -385,8 +391,9 @@ type JSONSchemaDependencies map[string]JSONSchemaPropsOrStringArray
     
     // JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.
     type JSONSchemaPropsOrStringArray struct {
    -	Schema   *JSONSchemaProps `protobuf:"bytes,1,opt,name=schema"`
    -	Property []string         `protobuf:"bytes,2,rep,name=property"`
    +	Schema *JSONSchemaProps `protobuf:"bytes,1,opt,name=schema"`
    +	// +listType=atomic
    +	Property []string `protobuf:"bytes,2,rep,name=property"`
     }
     
     // OpenAPISchemaType is used by the kube-openapi generator when constructing
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.conversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.conversion.go
    index 405021bf389e..bb1d7e01429e 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.conversion.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.conversion.go
    @@ -192,6 +192,16 @@ func RegisterConversions(s *runtime.Scheme) error {
     	}); err != nil {
     		return err
     	}
    +	if err := s.AddGeneratedConversionFunc((*SelectableField)(nil), (*apiextensions.SelectableField)(nil), func(a, b interface{}, scope conversion.Scope) error {
    +		return Convert_v1_SelectableField_To_apiextensions_SelectableField(a.(*SelectableField), b.(*apiextensions.SelectableField), scope)
    +	}); err != nil {
    +		return err
    +	}
    +	if err := s.AddGeneratedConversionFunc((*apiextensions.SelectableField)(nil), (*SelectableField)(nil), func(a, b interface{}, scope conversion.Scope) error {
    +		return Convert_apiextensions_SelectableField_To_v1_SelectableField(a.(*apiextensions.SelectableField), b.(*SelectableField), scope)
    +	}); err != nil {
    +		return err
    +	}
     	if err := s.AddGeneratedConversionFunc((*ServiceReference)(nil), (*apiextensions.ServiceReference)(nil), func(a, b interface{}, scope conversion.Scope) error {
     		return Convert_v1_ServiceReference_To_apiextensions_ServiceReference(a.(*ServiceReference), b.(*apiextensions.ServiceReference), scope)
     	}); err != nil {
    @@ -493,6 +503,7 @@ func autoConvert_apiextensions_CustomResourceDefinitionSpec_To_v1_CustomResource
     		out.Versions = nil
     	}
     	// WARNING: in.AdditionalPrinterColumns requires manual conversion: does not exist in peer-type
    +	// WARNING: in.SelectableFields requires manual conversion: does not exist in peer-type
     	if in.Conversion != nil {
     		in, out := &in.Conversion, &out.Conversion
     		*out = new(CustomResourceConversion)
    @@ -553,6 +564,7 @@ func autoConvert_v1_CustomResourceDefinitionVersion_To_apiextensions_CustomResou
     	}
     	out.Subresources = (*apiextensions.CustomResourceSubresources)(unsafe.Pointer(in.Subresources))
     	out.AdditionalPrinterColumns = *(*[]apiextensions.CustomResourceColumnDefinition)(unsafe.Pointer(&in.AdditionalPrinterColumns))
    +	out.SelectableFields = *(*[]apiextensions.SelectableField)(unsafe.Pointer(&in.SelectableFields))
     	return nil
     }
     
    @@ -578,6 +590,7 @@ func autoConvert_apiextensions_CustomResourceDefinitionVersion_To_v1_CustomResou
     	}
     	out.Subresources = (*CustomResourceSubresources)(unsafe.Pointer(in.Subresources))
     	out.AdditionalPrinterColumns = *(*[]CustomResourceColumnDefinition)(unsafe.Pointer(&in.AdditionalPrinterColumns))
    +	out.SelectableFields = *(*[]SelectableField)(unsafe.Pointer(&in.SelectableFields))
     	return nil
     }
     
    @@ -1225,6 +1238,26 @@ func Convert_apiextensions_JSONSchemaPropsOrStringArray_To_v1_JSONSchemaPropsOrS
     	return autoConvert_apiextensions_JSONSchemaPropsOrStringArray_To_v1_JSONSchemaPropsOrStringArray(in, out, s)
     }
     
    +func autoConvert_v1_SelectableField_To_apiextensions_SelectableField(in *SelectableField, out *apiextensions.SelectableField, s conversion.Scope) error {
    +	out.JSONPath = in.JSONPath
    +	return nil
    +}
    +
    +// Convert_v1_SelectableField_To_apiextensions_SelectableField is an autogenerated conversion function.
    +func Convert_v1_SelectableField_To_apiextensions_SelectableField(in *SelectableField, out *apiextensions.SelectableField, s conversion.Scope) error {
    +	return autoConvert_v1_SelectableField_To_apiextensions_SelectableField(in, out, s)
    +}
    +
    +func autoConvert_apiextensions_SelectableField_To_v1_SelectableField(in *apiextensions.SelectableField, out *SelectableField, s conversion.Scope) error {
    +	out.JSONPath = in.JSONPath
    +	return nil
    +}
    +
    +// Convert_apiextensions_SelectableField_To_v1_SelectableField is an autogenerated conversion function.
    +func Convert_apiextensions_SelectableField_To_v1_SelectableField(in *apiextensions.SelectableField, out *SelectableField, s conversion.Scope) error {
    +	return autoConvert_apiextensions_SelectableField_To_v1_SelectableField(in, out, s)
    +}
    +
     func autoConvert_v1_ServiceReference_To_apiextensions_ServiceReference(in *ServiceReference, out *apiextensions.ServiceReference, s conversion.Scope) error {
     	out.Namespace = in.Namespace
     	out.Name = in.Name
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.deepcopy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.deepcopy.go
    index bc23fcd86ff6..f85a0b0677db 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.deepcopy.go
    @@ -329,6 +329,11 @@ func (in *CustomResourceDefinitionVersion) DeepCopyInto(out *CustomResourceDefin
     		*out = make([]CustomResourceColumnDefinition, len(*in))
     		copy(*out, *in)
     	}
    +	if in.SelectableFields != nil {
    +		in, out := &in.SelectableFields, &out.SelectableFields
    +		*out = make([]SelectableField, len(*in))
    +		copy(*out, *in)
    +	}
     	return
     }
     
    @@ -585,6 +590,22 @@ func (in *JSONSchemaPropsOrStringArray) DeepCopy() *JSONSchemaPropsOrStringArray
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *SelectableField) DeepCopyInto(out *SelectableField) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelectableField.
    +func (in *SelectableField) DeepCopy() *SelectableField {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(SelectableField)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *ServiceReference) DeepCopyInto(out *ServiceReference) {
     	*out = *in
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.prerelease-lifecycle.go
    new file mode 100644
    index 000000000000..e3acc247c650
    --- /dev/null
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.prerelease-lifecycle.go
    @@ -0,0 +1,40 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *ConversionReview) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 16
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CustomResourceDefinition) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 16
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *CustomResourceDefinitionList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 16
    +}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go
    index c81fa6bc31be..32e58324071e 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto
    +// source: k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -51,7 +51,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *ConversionRequest) Reset()      { *m = ConversionRequest{} }
     func (*ConversionRequest) ProtoMessage() {}
     func (*ConversionRequest) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{0}
    +	return fileDescriptor_3623d6c0bd238430, []int{0}
     }
     func (m *ConversionRequest) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -79,7 +79,7 @@ var xxx_messageInfo_ConversionRequest proto.InternalMessageInfo
     func (m *ConversionResponse) Reset()      { *m = ConversionResponse{} }
     func (*ConversionResponse) ProtoMessage() {}
     func (*ConversionResponse) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{1}
    +	return fileDescriptor_3623d6c0bd238430, []int{1}
     }
     func (m *ConversionResponse) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -107,7 +107,7 @@ var xxx_messageInfo_ConversionResponse proto.InternalMessageInfo
     func (m *ConversionReview) Reset()      { *m = ConversionReview{} }
     func (*ConversionReview) ProtoMessage() {}
     func (*ConversionReview) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{2}
    +	return fileDescriptor_3623d6c0bd238430, []int{2}
     }
     func (m *ConversionReview) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -135,7 +135,7 @@ var xxx_messageInfo_ConversionReview proto.InternalMessageInfo
     func (m *CustomResourceColumnDefinition) Reset()      { *m = CustomResourceColumnDefinition{} }
     func (*CustomResourceColumnDefinition) ProtoMessage() {}
     func (*CustomResourceColumnDefinition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{3}
    +	return fileDescriptor_3623d6c0bd238430, []int{3}
     }
     func (m *CustomResourceColumnDefinition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -163,7 +163,7 @@ var xxx_messageInfo_CustomResourceColumnDefinition proto.InternalMessageInfo
     func (m *CustomResourceConversion) Reset()      { *m = CustomResourceConversion{} }
     func (*CustomResourceConversion) ProtoMessage() {}
     func (*CustomResourceConversion) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{4}
    +	return fileDescriptor_3623d6c0bd238430, []int{4}
     }
     func (m *CustomResourceConversion) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -191,7 +191,7 @@ var xxx_messageInfo_CustomResourceConversion proto.InternalMessageInfo
     func (m *CustomResourceDefinition) Reset()      { *m = CustomResourceDefinition{} }
     func (*CustomResourceDefinition) ProtoMessage() {}
     func (*CustomResourceDefinition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{5}
    +	return fileDescriptor_3623d6c0bd238430, []int{5}
     }
     func (m *CustomResourceDefinition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -219,7 +219,7 @@ var xxx_messageInfo_CustomResourceDefinition proto.InternalMessageInfo
     func (m *CustomResourceDefinitionCondition) Reset()      { *m = CustomResourceDefinitionCondition{} }
     func (*CustomResourceDefinitionCondition) ProtoMessage() {}
     func (*CustomResourceDefinitionCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{6}
    +	return fileDescriptor_3623d6c0bd238430, []int{6}
     }
     func (m *CustomResourceDefinitionCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -247,7 +247,7 @@ var xxx_messageInfo_CustomResourceDefinitionCondition proto.InternalMessageInfo
     func (m *CustomResourceDefinitionList) Reset()      { *m = CustomResourceDefinitionList{} }
     func (*CustomResourceDefinitionList) ProtoMessage() {}
     func (*CustomResourceDefinitionList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{7}
    +	return fileDescriptor_3623d6c0bd238430, []int{7}
     }
     func (m *CustomResourceDefinitionList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -275,7 +275,7 @@ var xxx_messageInfo_CustomResourceDefinitionList proto.InternalMessageInfo
     func (m *CustomResourceDefinitionNames) Reset()      { *m = CustomResourceDefinitionNames{} }
     func (*CustomResourceDefinitionNames) ProtoMessage() {}
     func (*CustomResourceDefinitionNames) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{8}
    +	return fileDescriptor_3623d6c0bd238430, []int{8}
     }
     func (m *CustomResourceDefinitionNames) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -303,7 +303,7 @@ var xxx_messageInfo_CustomResourceDefinitionNames proto.InternalMessageInfo
     func (m *CustomResourceDefinitionSpec) Reset()      { *m = CustomResourceDefinitionSpec{} }
     func (*CustomResourceDefinitionSpec) ProtoMessage() {}
     func (*CustomResourceDefinitionSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{9}
    +	return fileDescriptor_3623d6c0bd238430, []int{9}
     }
     func (m *CustomResourceDefinitionSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -331,7 +331,7 @@ var xxx_messageInfo_CustomResourceDefinitionSpec proto.InternalMessageInfo
     func (m *CustomResourceDefinitionStatus) Reset()      { *m = CustomResourceDefinitionStatus{} }
     func (*CustomResourceDefinitionStatus) ProtoMessage() {}
     func (*CustomResourceDefinitionStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{10}
    +	return fileDescriptor_3623d6c0bd238430, []int{10}
     }
     func (m *CustomResourceDefinitionStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -359,7 +359,7 @@ var xxx_messageInfo_CustomResourceDefinitionStatus proto.InternalMessageInfo
     func (m *CustomResourceDefinitionVersion) Reset()      { *m = CustomResourceDefinitionVersion{} }
     func (*CustomResourceDefinitionVersion) ProtoMessage() {}
     func (*CustomResourceDefinitionVersion) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{11}
    +	return fileDescriptor_3623d6c0bd238430, []int{11}
     }
     func (m *CustomResourceDefinitionVersion) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -387,7 +387,7 @@ var xxx_messageInfo_CustomResourceDefinitionVersion proto.InternalMessageInfo
     func (m *CustomResourceSubresourceScale) Reset()      { *m = CustomResourceSubresourceScale{} }
     func (*CustomResourceSubresourceScale) ProtoMessage() {}
     func (*CustomResourceSubresourceScale) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{12}
    +	return fileDescriptor_3623d6c0bd238430, []int{12}
     }
     func (m *CustomResourceSubresourceScale) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -415,7 +415,7 @@ var xxx_messageInfo_CustomResourceSubresourceScale proto.InternalMessageInfo
     func (m *CustomResourceSubresourceStatus) Reset()      { *m = CustomResourceSubresourceStatus{} }
     func (*CustomResourceSubresourceStatus) ProtoMessage() {}
     func (*CustomResourceSubresourceStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{13}
    +	return fileDescriptor_3623d6c0bd238430, []int{13}
     }
     func (m *CustomResourceSubresourceStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -443,7 +443,7 @@ var xxx_messageInfo_CustomResourceSubresourceStatus proto.InternalMessageInfo
     func (m *CustomResourceSubresources) Reset()      { *m = CustomResourceSubresources{} }
     func (*CustomResourceSubresources) ProtoMessage() {}
     func (*CustomResourceSubresources) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{14}
    +	return fileDescriptor_3623d6c0bd238430, []int{14}
     }
     func (m *CustomResourceSubresources) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -471,7 +471,7 @@ var xxx_messageInfo_CustomResourceSubresources proto.InternalMessageInfo
     func (m *CustomResourceValidation) Reset()      { *m = CustomResourceValidation{} }
     func (*CustomResourceValidation) ProtoMessage() {}
     func (*CustomResourceValidation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{15}
    +	return fileDescriptor_3623d6c0bd238430, []int{15}
     }
     func (m *CustomResourceValidation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -499,7 +499,7 @@ var xxx_messageInfo_CustomResourceValidation proto.InternalMessageInfo
     func (m *ExternalDocumentation) Reset()      { *m = ExternalDocumentation{} }
     func (*ExternalDocumentation) ProtoMessage() {}
     func (*ExternalDocumentation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{16}
    +	return fileDescriptor_3623d6c0bd238430, []int{16}
     }
     func (m *ExternalDocumentation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -527,7 +527,7 @@ var xxx_messageInfo_ExternalDocumentation proto.InternalMessageInfo
     func (m *JSON) Reset()      { *m = JSON{} }
     func (*JSON) ProtoMessage() {}
     func (*JSON) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{17}
    +	return fileDescriptor_3623d6c0bd238430, []int{17}
     }
     func (m *JSON) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -555,7 +555,7 @@ var xxx_messageInfo_JSON proto.InternalMessageInfo
     func (m *JSONSchemaProps) Reset()      { *m = JSONSchemaProps{} }
     func (*JSONSchemaProps) ProtoMessage() {}
     func (*JSONSchemaProps) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{18}
    +	return fileDescriptor_3623d6c0bd238430, []int{18}
     }
     func (m *JSONSchemaProps) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -583,7 +583,7 @@ var xxx_messageInfo_JSONSchemaProps proto.InternalMessageInfo
     func (m *JSONSchemaPropsOrArray) Reset()      { *m = JSONSchemaPropsOrArray{} }
     func (*JSONSchemaPropsOrArray) ProtoMessage() {}
     func (*JSONSchemaPropsOrArray) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{19}
    +	return fileDescriptor_3623d6c0bd238430, []int{19}
     }
     func (m *JSONSchemaPropsOrArray) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -611,7 +611,7 @@ var xxx_messageInfo_JSONSchemaPropsOrArray proto.InternalMessageInfo
     func (m *JSONSchemaPropsOrBool) Reset()      { *m = JSONSchemaPropsOrBool{} }
     func (*JSONSchemaPropsOrBool) ProtoMessage() {}
     func (*JSONSchemaPropsOrBool) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{20}
    +	return fileDescriptor_3623d6c0bd238430, []int{20}
     }
     func (m *JSONSchemaPropsOrBool) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -639,7 +639,7 @@ var xxx_messageInfo_JSONSchemaPropsOrBool proto.InternalMessageInfo
     func (m *JSONSchemaPropsOrStringArray) Reset()      { *m = JSONSchemaPropsOrStringArray{} }
     func (*JSONSchemaPropsOrStringArray) ProtoMessage() {}
     func (*JSONSchemaPropsOrStringArray) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{21}
    +	return fileDescriptor_3623d6c0bd238430, []int{21}
     }
     func (m *JSONSchemaPropsOrStringArray) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -664,10 +664,38 @@ func (m *JSONSchemaPropsOrStringArray) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_JSONSchemaPropsOrStringArray proto.InternalMessageInfo
     
    +func (m *SelectableField) Reset()      { *m = SelectableField{} }
    +func (*SelectableField) ProtoMessage() {}
    +func (*SelectableField) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_3623d6c0bd238430, []int{22}
    +}
    +func (m *SelectableField) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *SelectableField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *SelectableField) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_SelectableField.Merge(m, src)
    +}
    +func (m *SelectableField) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *SelectableField) XXX_DiscardUnknown() {
    +	xxx_messageInfo_SelectableField.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_SelectableField proto.InternalMessageInfo
    +
     func (m *ServiceReference) Reset()      { *m = ServiceReference{} }
     func (*ServiceReference) ProtoMessage() {}
     func (*ServiceReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{22}
    +	return fileDescriptor_3623d6c0bd238430, []int{23}
     }
     func (m *ServiceReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -695,7 +723,7 @@ var xxx_messageInfo_ServiceReference proto.InternalMessageInfo
     func (m *ValidationRule) Reset()      { *m = ValidationRule{} }
     func (*ValidationRule) ProtoMessage() {}
     func (*ValidationRule) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{23}
    +	return fileDescriptor_3623d6c0bd238430, []int{24}
     }
     func (m *ValidationRule) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -723,7 +751,7 @@ var xxx_messageInfo_ValidationRule proto.InternalMessageInfo
     func (m *WebhookClientConfig) Reset()      { *m = WebhookClientConfig{} }
     func (*WebhookClientConfig) ProtoMessage() {}
     func (*WebhookClientConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_98a4cc6918394e53, []int{24}
    +	return fileDescriptor_3623d6c0bd238430, []int{25}
     }
     func (m *WebhookClientConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -775,216 +803,219 @@ func init() {
     	proto.RegisterType((*JSONSchemaPropsOrArray)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray")
     	proto.RegisterType((*JSONSchemaPropsOrBool)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool")
     	proto.RegisterType((*JSONSchemaPropsOrStringArray)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray")
    +	proto.RegisterType((*SelectableField)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField")
     	proto.RegisterType((*ServiceReference)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference")
     	proto.RegisterType((*ValidationRule)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule")
     	proto.RegisterType((*WebhookClientConfig)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig")
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto", fileDescriptor_98a4cc6918394e53)
    -}
    -
    -var fileDescriptor_98a4cc6918394e53 = []byte{
    -	// 3170 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x73, 0x1c, 0x47,
    -	0xd9, 0xf7, 0xec, 0x6a, 0xa5, 0x55, 0x4b, 0xb6, 0xa4, 0xb6, 0xa5, 0x8c, 0x15, 0x47, 0x2b, 0xaf,
    -	0xdf, 0xf8, 0x55, 0x12, 0x67, 0x95, 0xf8, 0x4d, 0xde, 0xe4, 0xcd, 0x4b, 0x8a, 0xd2, 0x4a, 0x72,
    -	0x50, 0x62, 0x59, 0xa2, 0xd7, 0x76, 0x04, 0xf9, 0x1c, 0xed, 0xf4, 0xae, 0x27, 0x9a, 0x9d, 0x19,
    -	0x77, 0xcf, 0xac, 0xa4, 0x0a, 0x50, 0x7c, 0x54, 0x0a, 0x8a, 0x02, 0x42, 0x91, 0x5c, 0x28, 0xe0,
    -	0x10, 0x28, 0x2e, 0x1c, 0xe0, 0x00, 0x37, 0xf8, 0x03, 0x72, 0x4c, 0x01, 0x87, 0x1c, 0xa8, 0x85,
    -	0x2c, 0x57, 0x8e, 0x54, 0x51, 0xa5, 0x13, 0xd5, 0x1f, 0xd3, 0xd3, 0x3b, 0xbb, 0x6b, 0xbb, 0xa2,
    -	0xdd, 0x98, 0xdb, 0xee, 0xf3, 0xf5, 0x7b, 0xe6, 0xe9, 0xa7, 0x9f, 0x7e, 0xfa, 0x99, 0x01, 0xb5,
    -	0xbd, 0x67, 0x69, 0xc9, 0xf1, 0x97, 0xf7, 0xa2, 0x5d, 0x4c, 0x3c, 0x1c, 0x62, 0xba, 0xdc, 0xc4,
    -	0x9e, 0xed, 0x93, 0x65, 0xc9, 0xb0, 0x02, 0x07, 0x1f, 0x84, 0xd8, 0xa3, 0x8e, 0xef, 0xd1, 0xc7,
    -	0xad, 0xc0, 0xa1, 0x98, 0x34, 0x31, 0x59, 0x0e, 0xf6, 0xea, 0x8c, 0x47, 0x3b, 0x05, 0x96, 0x9b,
    -	0x4f, 0xee, 0xe2, 0xd0, 0x7a, 0x72, 0xb9, 0x8e, 0x3d, 0x4c, 0xac, 0x10, 0xdb, 0xa5, 0x80, 0xf8,
    -	0xa1, 0x0f, 0x9f, 0x17, 0xe6, 0x4a, 0x1d, 0xd2, 0x6f, 0x28, 0x73, 0xa5, 0x60, 0xaf, 0xce, 0x78,
    -	0xb4, 0x53, 0xa0, 0x24, 0xcd, 0xcd, 0x3f, 0x5e, 0x77, 0xc2, 0x5b, 0xd1, 0x6e, 0xa9, 0xea, 0x37,
    -	0x96, 0xeb, 0x7e, 0xdd, 0x5f, 0xe6, 0x56, 0x77, 0xa3, 0x1a, 0xff, 0xc7, 0xff, 0xf0, 0x5f, 0x02,
    -	0x6d, 0xfe, 0xa9, 0xc4, 0xf9, 0x86, 0x55, 0xbd, 0xe5, 0x78, 0x98, 0x1c, 0x26, 0x1e, 0x37, 0x70,
    -	0x68, 0x2d, 0x37, 0xbb, 0x7c, 0x9c, 0x5f, 0xee, 0xa7, 0x45, 0x22, 0x2f, 0x74, 0x1a, 0xb8, 0x4b,
    -	0xe1, 0x7f, 0xef, 0xa6, 0x40, 0xab, 0xb7, 0x70, 0xc3, 0x4a, 0xeb, 0x15, 0x8f, 0x0c, 0x30, 0xb3,
    -	0xea, 0x7b, 0x4d, 0x4c, 0xd8, 0x53, 0x22, 0x7c, 0x3b, 0xc2, 0x34, 0x84, 0x65, 0x90, 0x8d, 0x1c,
    -	0xdb, 0x34, 0x16, 0x8d, 0xa5, 0xf1, 0xf2, 0x13, 0x1f, 0xb6, 0x0a, 0x27, 0xda, 0xad, 0x42, 0xf6,
    -	0xc6, 0xc6, 0xda, 0x51, 0xab, 0x70, 0xbe, 0x1f, 0x52, 0x78, 0x18, 0x60, 0x5a, 0xba, 0xb1, 0xb1,
    -	0x86, 0x98, 0x32, 0x7c, 0x01, 0xcc, 0xd8, 0x98, 0x3a, 0x04, 0xdb, 0x2b, 0xdb, 0x1b, 0x37, 0x85,
    -	0x7d, 0x33, 0xc3, 0x2d, 0x9e, 0x95, 0x16, 0x67, 0xd6, 0xd2, 0x02, 0xa8, 0x5b, 0x07, 0xee, 0x80,
    -	0x31, 0x7f, 0xf7, 0x2d, 0x5c, 0x0d, 0xa9, 0x99, 0x5d, 0xcc, 0x2e, 0x4d, 0x5c, 0x7e, 0xbc, 0x94,
    -	0xac, 0xa0, 0x72, 0x81, 0x2f, 0x9b, 0x7c, 0xd8, 0x12, 0xb2, 0xf6, 0xd7, 0xe3, 0x95, 0x2b, 0x4f,
    -	0x49, 0xb4, 0xb1, 0x2d, 0x61, 0x05, 0xc5, 0xe6, 0x8a, 0xbf, 0xc8, 0x00, 0xa8, 0x3f, 0x3c, 0x0d,
    -	0x7c, 0x8f, 0xe2, 0x81, 0x3c, 0x3d, 0x05, 0xd3, 0x55, 0x6e, 0x39, 0xc4, 0xb6, 0xc4, 0x35, 0x33,
    -	0x9f, 0xc6, 0x7b, 0x53, 0xe2, 0x4f, 0xaf, 0xa6, 0xcc, 0xa1, 0x2e, 0x00, 0x78, 0x1d, 0x8c, 0x12,
    -	0x4c, 0x23, 0x37, 0x34, 0xb3, 0x8b, 0xc6, 0xd2, 0xc4, 0xe5, 0x4b, 0x7d, 0xa1, 0x78, 0x7e, 0xb3,
    -	0xe4, 0x2b, 0x35, 0x9f, 0x2c, 0x55, 0x42, 0x2b, 0x8c, 0x68, 0xf9, 0x94, 0x44, 0x1a, 0x45, 0xdc,
    -	0x06, 0x92, 0xb6, 0x8a, 0xdf, 0xc9, 0x80, 0x69, 0x3d, 0x4a, 0x4d, 0x07, 0xef, 0xc3, 0x7d, 0x30,
    -	0x46, 0x44, 0xb2, 0xf0, 0x38, 0x4d, 0x5c, 0xde, 0x2e, 0x1d, 0x6b, 0x5b, 0x95, 0xba, 0x92, 0xb0,
    -	0x3c, 0xc1, 0xd6, 0x4c, 0xfe, 0x41, 0x31, 0x1a, 0x7c, 0x1b, 0xe4, 0x89, 0x5c, 0x28, 0x9e, 0x4d,
    -	0x13, 0x97, 0xbf, 0x38, 0x40, 0x64, 0x61, 0xb8, 0x3c, 0xd9, 0x6e, 0x15, 0xf2, 0xf1, 0x3f, 0xa4,
    -	0x00, 0x8b, 0xef, 0x65, 0xc0, 0xc2, 0x6a, 0x44, 0x43, 0xbf, 0x81, 0x30, 0xf5, 0x23, 0x52, 0xc5,
    -	0xab, 0xbe, 0x1b, 0x35, 0xbc, 0x35, 0x5c, 0x73, 0x3c, 0x27, 0x64, 0xd9, 0xba, 0x08, 0x46, 0x3c,
    -	0xab, 0x81, 0x65, 0xf6, 0x4c, 0xca, 0x98, 0x8e, 0x5c, 0xb3, 0x1a, 0x18, 0x71, 0x0e, 0x93, 0x60,
    -	0xc9, 0x22, 0xf7, 0x82, 0x92, 0xb8, 0x7e, 0x18, 0x60, 0xc4, 0x39, 0xf0, 0x22, 0x18, 0xad, 0xf9,
    -	0xa4, 0x61, 0x89, 0x75, 0x1c, 0x4f, 0x56, 0xe6, 0x0a, 0xa7, 0x22, 0xc9, 0x85, 0x4f, 0x83, 0x09,
    -	0x1b, 0xd3, 0x2a, 0x71, 0x02, 0x06, 0x6d, 0x8e, 0x70, 0xe1, 0xd3, 0x52, 0x78, 0x62, 0x2d, 0x61,
    -	0x21, 0x5d, 0x0e, 0x5e, 0x02, 0xf9, 0x80, 0x38, 0x3e, 0x71, 0xc2, 0x43, 0x33, 0xb7, 0x68, 0x2c,
    -	0xe5, 0xca, 0xd3, 0x52, 0x27, 0xbf, 0x2d, 0xe9, 0x48, 0x49, 0xc0, 0x45, 0x90, 0x7f, 0xb1, 0xb2,
    -	0x75, 0x6d, 0xdb, 0x0a, 0x6f, 0x99, 0xa3, 0x1c, 0x61, 0x84, 0x49, 0x23, 0x45, 0x2d, 0xfe, 0x25,
    -	0x03, 0xcc, 0x74, 0x54, 0xe2, 0x90, 0xc2, 0x2b, 0x20, 0x4f, 0x43, 0x56, 0x71, 0xea, 0x87, 0x32,
    -	0x26, 0x8f, 0xc6, 0x60, 0x15, 0x49, 0x3f, 0x6a, 0x15, 0xe6, 0x12, 0x8d, 0x98, 0xca, 0xe3, 0xa1,
    -	0x74, 0xe1, 0xcf, 0x0c, 0x70, 0x7a, 0x1f, 0xef, 0xde, 0xf2, 0xfd, 0xbd, 0x55, 0xd7, 0xc1, 0x5e,
    -	0xb8, 0xea, 0x7b, 0x35, 0xa7, 0x2e, 0x73, 0x00, 0x1d, 0x33, 0x07, 0x5e, 0xee, 0xb6, 0x5c, 0x7e,
    -	0xa0, 0xdd, 0x2a, 0x9c, 0xee, 0xc1, 0x40, 0xbd, 0xfc, 0x80, 0x3b, 0xc0, 0xac, 0xa6, 0x36, 0x89,
    -	0x2c, 0x60, 0xa2, 0x6c, 0x8d, 0x97, 0xcf, 0xb5, 0x5b, 0x05, 0x73, 0xb5, 0x8f, 0x0c, 0xea, 0xab,
    -	0x5d, 0xfc, 0x56, 0x36, 0x1d, 0x5e, 0x2d, 0xdd, 0xde, 0x04, 0x79, 0xb6, 0x8d, 0x6d, 0x2b, 0xb4,
    -	0xe4, 0x46, 0x7c, 0xe2, 0xde, 0x36, 0xbd, 0xa8, 0x19, 0x9b, 0x38, 0xb4, 0xca, 0x50, 0x2e, 0x08,
    -	0x48, 0x68, 0x48, 0x59, 0x85, 0x5f, 0x05, 0x23, 0x34, 0xc0, 0x55, 0x19, 0xe8, 0x57, 0x8e, 0xbb,
    -	0xd9, 0xfa, 0x3c, 0x48, 0x25, 0xc0, 0xd5, 0x64, 0x2f, 0xb0, 0x7f, 0x88, 0xc3, 0xc2, 0x77, 0x0c,
    -	0x30, 0x4a, 0x79, 0x81, 0x92, 0x45, 0xed, 0xb5, 0x61, 0x79, 0x90, 0xaa, 0x82, 0xe2, 0x3f, 0x92,
    -	0xe0, 0xc5, 0x7f, 0x66, 0xc0, 0xf9, 0x7e, 0xaa, 0xab, 0xbe, 0x67, 0x8b, 0xe5, 0xd8, 0x90, 0x7b,
    -	0x5b, 0x64, 0xfa, 0xd3, 0xfa, 0xde, 0x3e, 0x6a, 0x15, 0x1e, 0xbe, 0xab, 0x01, 0xad, 0x08, 0xfc,
    -	0x9f, 0x7a, 0x6e, 0x51, 0x28, 0xce, 0x77, 0x3a, 0x76, 0xd4, 0x2a, 0x4c, 0x29, 0xb5, 0x4e, 0x5f,
    -	0x61, 0x13, 0x40, 0xd7, 0xa2, 0xe1, 0x75, 0x62, 0x79, 0x54, 0x98, 0x75, 0x1a, 0x58, 0x86, 0xef,
    -	0xd1, 0x7b, 0x4b, 0x0f, 0xa6, 0x51, 0x9e, 0x97, 0x90, 0xf0, 0x6a, 0x97, 0x35, 0xd4, 0x03, 0x81,
    -	0xd5, 0x2d, 0x82, 0x2d, 0xaa, 0x4a, 0x91, 0x76, 0xa2, 0x30, 0x2a, 0x92, 0x5c, 0xf8, 0x08, 0x18,
    -	0x6b, 0x60, 0x4a, 0xad, 0x3a, 0xe6, 0xf5, 0x67, 0x3c, 0x39, 0xa2, 0x37, 0x05, 0x19, 0xc5, 0x7c,
    -	0xd6, 0x9f, 0x9c, 0xeb, 0x17, 0xb5, 0xab, 0x0e, 0x0d, 0xe1, 0xab, 0x5d, 0x1b, 0xa0, 0x74, 0x6f,
    -	0x4f, 0xc8, 0xb4, 0x79, 0xfa, 0xab, 0xe2, 0x17, 0x53, 0xb4, 0xe4, 0xff, 0x0a, 0xc8, 0x39, 0x21,
    -	0x6e, 0xc4, 0x67, 0xf7, 0xcb, 0x43, 0xca, 0xbd, 0xf2, 0x49, 0xe9, 0x43, 0x6e, 0x83, 0xa1, 0x21,
    -	0x01, 0x5a, 0xfc, 0x65, 0x06, 0x3c, 0xd4, 0x4f, 0x85, 0x1d, 0x28, 0x94, 0x45, 0x3c, 0x70, 0x23,
    -	0x62, 0xb9, 0x32, 0xe3, 0x54, 0xc4, 0xb7, 0x39, 0x15, 0x49, 0x2e, 0x2b, 0xf9, 0xd4, 0xf1, 0xea,
    -	0x91, 0x6b, 0x11, 0x99, 0x4e, 0xea, 0xa9, 0x2b, 0x92, 0x8e, 0x94, 0x04, 0x2c, 0x01, 0x40, 0x6f,
    -	0xf9, 0x24, 0xe4, 0x18, 0xb2, 0x7a, 0x9d, 0x62, 0x05, 0xa2, 0xa2, 0xa8, 0x48, 0x93, 0x60, 0x27,
    -	0xda, 0x9e, 0xe3, 0xd9, 0x72, 0xd5, 0xd5, 0x2e, 0x7e, 0xc9, 0xf1, 0x6c, 0xc4, 0x39, 0x0c, 0xdf,
    -	0x75, 0x68, 0xc8, 0x28, 0x72, 0xc9, 0x3b, 0xa2, 0xce, 0x25, 0x95, 0x04, 0xc3, 0xaf, 0xb2, 0xaa,
    -	0xef, 0x13, 0x07, 0x53, 0x73, 0x34, 0xc1, 0x5f, 0x55, 0x54, 0xa4, 0x49, 0x14, 0xff, 0x91, 0xef,
    -	0x9f, 0x24, 0xac, 0x94, 0xc0, 0x0b, 0x20, 0x57, 0x27, 0x7e, 0x14, 0xc8, 0x28, 0xa9, 0x68, 0xbf,
    -	0xc0, 0x88, 0x48, 0xf0, 0x58, 0x56, 0x36, 0x3b, 0xda, 0x54, 0x95, 0x95, 0x71, 0x73, 0x1a, 0xf3,
    -	0xe1, 0x37, 0x0c, 0x90, 0xf3, 0x64, 0x70, 0x58, 0xca, 0xbd, 0x3a, 0xa4, 0xbc, 0xe0, 0xe1, 0x4d,
    -	0xdc, 0x15, 0x91, 0x17, 0xc8, 0xf0, 0x29, 0x90, 0xa3, 0x55, 0x3f, 0xc0, 0x32, 0xea, 0x0b, 0xb1,
    -	0x50, 0x85, 0x11, 0x8f, 0x5a, 0x85, 0x93, 0xb1, 0x39, 0x4e, 0x40, 0x42, 0x18, 0x7e, 0xdb, 0x00,
    -	0xa0, 0x69, 0xb9, 0x8e, 0x6d, 0xf1, 0x96, 0x21, 0xc7, 0xdd, 0x1f, 0x6c, 0x5a, 0xdf, 0x54, 0xe6,
    -	0xc5, 0xa2, 0x25, 0xff, 0x91, 0x06, 0x0d, 0xdf, 0x35, 0xc0, 0x24, 0x8d, 0x76, 0x89, 0xd4, 0xa2,
    -	0xbc, 0xb9, 0x98, 0xb8, 0xfc, 0xa5, 0x81, 0xfa, 0x52, 0xd1, 0x00, 0xca, 0xd3, 0xed, 0x56, 0x61,
    -	0x52, 0xa7, 0xa0, 0x0e, 0x07, 0xe0, 0xf7, 0x0c, 0x90, 0x6f, 0xc6, 0x67, 0xf6, 0x18, 0xdf, 0xf0,
    -	0xaf, 0x0f, 0x69, 0x61, 0x65, 0x46, 0x25, 0xbb, 0x40, 0xf5, 0x01, 0xca, 0x03, 0xf8, 0x7b, 0x03,
    -	0x98, 0x96, 0x2d, 0x0a, 0xbc, 0xe5, 0x6e, 0x13, 0xc7, 0x0b, 0x31, 0x11, 0xfd, 0x26, 0x35, 0xf3,
    -	0xdc, 0xbd, 0xc1, 0x9e, 0x85, 0xe9, 0x5e, 0xb6, 0xbc, 0x28, 0xbd, 0x33, 0x57, 0xfa, 0xb8, 0x81,
    -	0xfa, 0x3a, 0xc8, 0x13, 0x2d, 0x69, 0x69, 0xcc, 0xf1, 0x21, 0x24, 0x5a, 0xd2, 0x4b, 0xc9, 0xea,
    -	0x90, 0x74, 0x50, 0x1a, 0x34, 0xdc, 0x02, 0xb3, 0x01, 0xc1, 0x1c, 0xe0, 0x86, 0xb7, 0xe7, 0xf9,
    -	0xfb, 0xde, 0x15, 0x07, 0xbb, 0x36, 0x35, 0xc1, 0xa2, 0xb1, 0x94, 0x2f, 0x9f, 0x6d, 0xb7, 0x0a,
    -	0xb3, 0xdb, 0xbd, 0x04, 0x50, 0x6f, 0xbd, 0xe2, 0xbb, 0xd9, 0xf4, 0x2d, 0x20, 0xdd, 0x45, 0xc0,
    -	0xf7, 0xc5, 0xd3, 0x8b, 0xd8, 0x50, 0xd3, 0xe0, 0xab, 0xf5, 0xe6, 0x90, 0x92, 0x49, 0xb5, 0x01,
    -	0x49, 0x27, 0xa7, 0x48, 0x14, 0x69, 0x7e, 0xc0, 0x1f, 0x1b, 0xe0, 0xa4, 0x55, 0xad, 0xe2, 0x20,
    -	0xc4, 0xb6, 0x28, 0xee, 0x99, 0xcf, 0xa0, 0x7e, 0xcd, 0x4a, 0xaf, 0x4e, 0xae, 0xe8, 0xd0, 0xa8,
    -	0xd3, 0x13, 0xf8, 0x1c, 0x38, 0x45, 0x43, 0x9f, 0x60, 0x3b, 0xd5, 0x36, 0xc3, 0x76, 0xab, 0x70,
    -	0xaa, 0xd2, 0xc1, 0x41, 0x29, 0xc9, 0xe2, 0x5f, 0x73, 0xa0, 0x70, 0x97, 0xad, 0x76, 0x0f, 0x17,
    -	0xb3, 0x8b, 0x60, 0x94, 0x3f, 0xae, 0xcd, 0xa3, 0x92, 0xd7, 0x5a, 0x41, 0x4e, 0x45, 0x92, 0xcb,
    -	0x0e, 0x0a, 0x86, 0xcf, 0xda, 0x97, 0x2c, 0x17, 0x54, 0x07, 0x45, 0x45, 0x90, 0x51, 0xcc, 0x87,
    -	0x97, 0x01, 0xb0, 0x71, 0x40, 0x30, 0x3b, 0xac, 0x6c, 0x73, 0x8c, 0x4b, 0xab, 0x45, 0x5a, 0x53,
    -	0x1c, 0xa4, 0x49, 0xc1, 0x2b, 0x00, 0xc6, 0xff, 0x1c, 0xdf, 0x7b, 0xd9, 0x22, 0x9e, 0xe3, 0xd5,
    -	0xcd, 0x3c, 0x77, 0x7b, 0x8e, 0x75, 0x63, 0x6b, 0x5d, 0x5c, 0xd4, 0x43, 0x03, 0xbe, 0x0d, 0x46,
    -	0xc5, 0xd0, 0x87, 0x9f, 0x10, 0x43, 0xac, 0xf2, 0x80, 0xc7, 0x88, 0x43, 0x21, 0x09, 0xd9, 0x5d,
    -	0xdd, 0x73, 0xf7, 0xbb, 0xba, 0xdf, 0xb1, 0x9c, 0x8e, 0xfe, 0x87, 0x97, 0xd3, 0xe2, 0xbf, 0x8c,
    -	0x74, 0xcd, 0xd1, 0x1e, 0xb5, 0x52, 0xb5, 0x5c, 0x0c, 0xd7, 0xc0, 0x34, 0xbb, 0x31, 0x21, 0x1c,
    -	0xb8, 0x4e, 0xd5, 0xa2, 0xfc, 0xc2, 0x2e, 0x92, 0x5d, 0xcd, 0x90, 0x2a, 0x29, 0x3e, 0xea, 0xd2,
    -	0x80, 0x2f, 0x02, 0x28, 0x6e, 0x11, 0x1d, 0x76, 0x44, 0x43, 0xa4, 0xee, 0x03, 0x95, 0x2e, 0x09,
    -	0xd4, 0x43, 0x0b, 0xae, 0x82, 0x19, 0xd7, 0xda, 0xc5, 0x6e, 0x05, 0xbb, 0xb8, 0x1a, 0xfa, 0x84,
    -	0x9b, 0x12, 0x23, 0x8d, 0xd9, 0x76, 0xab, 0x30, 0x73, 0x35, 0xcd, 0x44, 0xdd, 0xf2, 0xc5, 0xf3,
    -	0xe9, 0xad, 0xad, 0x3f, 0xb8, 0xb8, 0x9b, 0x7d, 0x90, 0x01, 0xf3, 0xfd, 0x33, 0x03, 0x7e, 0x33,
    -	0xb9, 0x42, 0x8a, 0x1b, 0xc2, 0xeb, 0xc3, 0xca, 0x42, 0x79, 0x87, 0x04, 0xdd, 0xf7, 0x47, 0xf8,
    -	0x35, 0xd6, 0xae, 0x59, 0x6e, 0x3c, 0xb4, 0x7a, 0x6d, 0x68, 0x2e, 0x30, 0x90, 0xf2, 0xb8, 0xe8,
    -	0x04, 0x2d, 0x97, 0x37, 0x7e, 0x96, 0x8b, 0x8b, 0xbf, 0x32, 0xd2, 0x53, 0x84, 0x64, 0x07, 0xc3,
    -	0xef, 0x1b, 0x60, 0xca, 0x0f, 0xb0, 0xb7, 0xb2, 0xbd, 0x71, 0xf3, 0x7f, 0xc4, 0x4e, 0x96, 0xa1,
    -	0xba, 0x76, 0x4c, 0x3f, 0x5f, 0xac, 0x6c, 0x5d, 0x13, 0x06, 0xb7, 0x89, 0x1f, 0xd0, 0xf2, 0xe9,
    -	0x76, 0xab, 0x30, 0xb5, 0xd5, 0x09, 0x85, 0xd2, 0xd8, 0xc5, 0x06, 0x98, 0x5d, 0x3f, 0x08, 0x31,
    -	0xf1, 0x2c, 0x77, 0xcd, 0xaf, 0x46, 0x0d, 0xec, 0x85, 0xc2, 0xd1, 0xd4, 0xc4, 0xcb, 0xb8, 0xc7,
    -	0x89, 0xd7, 0x43, 0x20, 0x1b, 0x11, 0x57, 0x66, 0xf1, 0x84, 0x9a, 0xe8, 0xa2, 0xab, 0x88, 0xd1,
    -	0x8b, 0xe7, 0xc1, 0x08, 0xf3, 0x13, 0x9e, 0x05, 0x59, 0x62, 0xed, 0x73, 0xab, 0x93, 0xe5, 0x31,
    -	0x26, 0x82, 0xac, 0x7d, 0xc4, 0x68, 0xc5, 0x3f, 0x9f, 0x07, 0x53, 0xa9, 0x67, 0x81, 0xf3, 0x20,
    -	0xa3, 0xc6, 0xc4, 0x40, 0x1a, 0xcd, 0x6c, 0xac, 0xa1, 0x8c, 0x63, 0xc3, 0x67, 0x54, 0xf1, 0x15,
    -	0xa0, 0x05, 0x75, 0x96, 0x70, 0x2a, 0xeb, 0xcf, 0x13, 0x73, 0xcc, 0x91, 0xb8, 0x70, 0x32, 0x1f,
    -	0x70, 0x4d, 0xee, 0x12, 0xe1, 0x03, 0xae, 0x21, 0x46, 0xfb, 0xb4, 0xe3, 0xbe, 0x78, 0xde, 0x98,
    -	0xbb, 0x87, 0x79, 0xe3, 0xe8, 0x1d, 0xe7, 0x8d, 0x17, 0x40, 0x2e, 0x74, 0x42, 0x17, 0xf3, 0x83,
    -	0x4c, 0xbb, 0x46, 0x5d, 0x67, 0x44, 0x24, 0x78, 0xf0, 0x2d, 0x30, 0x66, 0xe3, 0x9a, 0x15, 0xb9,
    -	0x21, 0x3f, 0xb3, 0x26, 0x2e, 0xaf, 0x0e, 0x20, 0x85, 0xc4, 0x30, 0x78, 0x4d, 0xd8, 0x45, 0x31,
    -	0x00, 0x7c, 0x18, 0x8c, 0x35, 0xac, 0x03, 0xa7, 0x11, 0x35, 0x78, 0x83, 0x69, 0x08, 0xb1, 0x4d,
    -	0x41, 0x42, 0x31, 0x8f, 0x55, 0x46, 0x7c, 0x50, 0x75, 0x23, 0xea, 0x34, 0xb1, 0x64, 0xca, 0xe6,
    -	0x4f, 0x55, 0xc6, 0xf5, 0x14, 0x1f, 0x75, 0x69, 0x70, 0x30, 0xc7, 0xe3, 0xca, 0x13, 0x1a, 0x98,
    -	0x20, 0xa1, 0x98, 0xd7, 0x09, 0x26, 0xe5, 0x27, 0xfb, 0x81, 0x49, 0xe5, 0x2e, 0x0d, 0xf8, 0x18,
    -	0x18, 0x6f, 0x58, 0x07, 0x57, 0xb1, 0x57, 0x0f, 0x6f, 0x99, 0x27, 0x17, 0x8d, 0xa5, 0x6c, 0xf9,
    -	0x64, 0xbb, 0x55, 0x18, 0xdf, 0x8c, 0x89, 0x28, 0xe1, 0x73, 0x61, 0xc7, 0x93, 0xc2, 0xa7, 0x34,
    -	0xe1, 0x98, 0x88, 0x12, 0x3e, 0xeb, 0x5e, 0x02, 0x2b, 0x64, 0x9b, 0xcb, 0x9c, 0xea, 0xbc, 0xe6,
    -	0x6e, 0x0b, 0x32, 0x8a, 0xf9, 0x70, 0x09, 0xe4, 0x1b, 0xd6, 0x01, 0x1f, 0x49, 0x98, 0xd3, 0xdc,
    -	0x2c, 0x1f, 0x8c, 0x6f, 0x4a, 0x1a, 0x52, 0x5c, 0x2e, 0xe9, 0x78, 0x42, 0x72, 0x46, 0x93, 0x94,
    -	0x34, 0xa4, 0xb8, 0x2c, 0x89, 0x23, 0xcf, 0xb9, 0x1d, 0x61, 0x21, 0x0c, 0x79, 0x64, 0x54, 0x12,
    -	0xdf, 0x48, 0x58, 0x48, 0x97, 0x83, 0x25, 0x00, 0x1a, 0x91, 0x1b, 0x3a, 0x81, 0x8b, 0xb7, 0x6a,
    -	0xe6, 0x69, 0x1e, 0x7f, 0xde, 0xf4, 0x6f, 0x2a, 0x2a, 0xd2, 0x24, 0x20, 0x06, 0x23, 0xd8, 0x8b,
    -	0x1a, 0xe6, 0x19, 0x7e, 0xb0, 0x0f, 0x24, 0x05, 0xd5, 0xce, 0x59, 0xf7, 0xa2, 0x06, 0xe2, 0xe6,
    -	0xe1, 0x33, 0xe0, 0x64, 0xc3, 0x3a, 0x60, 0xe5, 0x00, 0x93, 0xd0, 0xc1, 0xd4, 0x9c, 0xe5, 0x0f,
    -	0x3f, 0xc3, 0xba, 0xdd, 0x4d, 0x9d, 0x81, 0x3a, 0xe5, 0xb8, 0xa2, 0xe3, 0x69, 0x8a, 0x73, 0x9a,
    -	0xa2, 0xce, 0x40, 0x9d, 0x72, 0x2c, 0xd2, 0x04, 0xdf, 0x8e, 0x1c, 0x82, 0x6d, 0xf3, 0x01, 0xde,
    -	0x20, 0xcb, 0x97, 0x15, 0x82, 0x86, 0x14, 0x17, 0x36, 0xe3, 0xd9, 0x95, 0xc9, 0xb7, 0xe1, 0x8d,
    -	0xc1, 0x56, 0xf2, 0x2d, 0xb2, 0x42, 0x88, 0x75, 0x28, 0x4e, 0x1a, 0x7d, 0x6a, 0x05, 0x29, 0xc8,
    -	0x59, 0xae, 0xbb, 0x55, 0x33, 0xcf, 0xf2, 0xd8, 0x0f, 0xfa, 0x04, 0x51, 0x55, 0x67, 0x85, 0x81,
    -	0x20, 0x81, 0xc5, 0x40, 0x7d, 0x8f, 0xa5, 0xc6, 0xfc, 0x70, 0x41, 0xb7, 0x18, 0x08, 0x12, 0x58,
    -	0xfc, 0x49, 0xbd, 0xc3, 0xad, 0x9a, 0xf9, 0xe0, 0x90, 0x9f, 0x94, 0x81, 0x20, 0x81, 0x05, 0x1d,
    -	0x90, 0xf5, 0xfc, 0xd0, 0x3c, 0x37, 0x94, 0xe3, 0x99, 0x1f, 0x38, 0xd7, 0xfc, 0x10, 0x31, 0x0c,
    -	0xf8, 0x23, 0x03, 0x80, 0x20, 0x49, 0xd1, 0x87, 0x06, 0x32, 0x12, 0x49, 0x41, 0x96, 0x92, 0xdc,
    -	0x5e, 0xf7, 0x42, 0x72, 0x98, 0x5c, 0x8f, 0xb4, 0x3d, 0xa0, 0x79, 0x01, 0x7f, 0x6e, 0x80, 0x33,
    -	0x7a, 0x9b, 0xac, 0xdc, 0x5b, 0xe0, 0x11, 0xb9, 0x3e, 0xe8, 0x34, 0x2f, 0xfb, 0xbe, 0x5b, 0x36,
    -	0xdb, 0xad, 0xc2, 0x99, 0x95, 0x1e, 0xa8, 0xa8, 0xa7, 0x2f, 0xf0, 0xd7, 0x06, 0x98, 0x91, 0x55,
    -	0x54, 0xf3, 0xb0, 0xc0, 0x03, 0x88, 0x07, 0x1d, 0xc0, 0x34, 0x8e, 0x88, 0xa3, 0x7a, 0xc9, 0xde,
    -	0xc5, 0x47, 0xdd, 0xae, 0xc1, 0xdf, 0x19, 0x60, 0xd2, 0xc6, 0x01, 0xf6, 0x6c, 0xec, 0x55, 0x99,
    -	0xaf, 0x8b, 0x03, 0x19, 0x59, 0xa4, 0x7d, 0x5d, 0xd3, 0x20, 0x84, 0x9b, 0x25, 0xe9, 0xe6, 0xa4,
    -	0xce, 0x3a, 0x6a, 0x15, 0xe6, 0x12, 0x55, 0x9d, 0x83, 0x3a, 0xbc, 0x84, 0xef, 0x19, 0x60, 0x2a,
    -	0x59, 0x00, 0x71, 0xa4, 0x9c, 0x1f, 0x62, 0x1e, 0xf0, 0xf6, 0x75, 0xa5, 0x13, 0x10, 0xa5, 0x3d,
    -	0x80, 0xbf, 0x31, 0x58, 0xa7, 0x16, 0xdf, 0xfb, 0xa8, 0x59, 0xe4, 0xb1, 0x7c, 0x63, 0xe0, 0xb1,
    -	0x54, 0x08, 0x22, 0x94, 0x97, 0x92, 0x56, 0x50, 0x71, 0x8e, 0x5a, 0x85, 0x59, 0x3d, 0x92, 0x8a,
    -	0x81, 0x74, 0x0f, 0xe1, 0x77, 0x0d, 0x30, 0x89, 0x93, 0x8e, 0x9b, 0x9a, 0x17, 0x06, 0x12, 0xc4,
    -	0x9e, 0x4d, 0xbc, 0xb8, 0xa9, 0x6b, 0x2c, 0x8a, 0x3a, 0xb0, 0x59, 0x07, 0x89, 0x0f, 0xac, 0x46,
    -	0xe0, 0x62, 0xf3, 0xbf, 0x06, 0xdc, 0x41, 0xae, 0x0b, 0xbb, 0x28, 0x06, 0x80, 0x97, 0x40, 0xde,
    -	0x8b, 0x5c, 0xd7, 0xda, 0x75, 0xb1, 0xf9, 0x30, 0xef, 0x45, 0xd4, 0x48, 0xf6, 0x9a, 0xa4, 0x23,
    -	0x25, 0x01, 0x6b, 0x60, 0xf1, 0xe0, 0x25, 0xf5, 0x79, 0x52, 0xcf, 0xa1, 0xa1, 0x79, 0x91, 0x5b,
    -	0x99, 0x6f, 0xb7, 0x0a, 0x73, 0x3b, 0xbd, 0xc7, 0x8a, 0x77, 0xb5, 0x01, 0x5f, 0x01, 0x0f, 0x6a,
    -	0x32, 0xeb, 0x8d, 0x5d, 0x6c, 0xdb, 0xd8, 0x8e, 0x2f, 0x6e, 0xe6, 0x7f, 0x8b, 0xc1, 0x65, 0xbc,
    -	0xc1, 0x77, 0xd2, 0x02, 0xe8, 0x4e, 0xda, 0xf0, 0x2a, 0x98, 0xd3, 0xd8, 0x1b, 0x5e, 0xb8, 0x45,
    -	0x2a, 0x21, 0x71, 0xbc, 0xba, 0xb9, 0xc4, 0xed, 0x9e, 0x89, 0x77, 0xe4, 0x8e, 0xc6, 0x43, 0x7d,
    -	0x74, 0xe0, 0x17, 0x3a, 0xac, 0xf1, 0x57, 0x68, 0x56, 0xf0, 0x12, 0x3e, 0xa4, 0xe6, 0x23, 0xbc,
    -	0x3b, 0xe1, 0x8b, 0xbd, 0xa3, 0xd1, 0x51, 0x1f, 0x79, 0xf8, 0x79, 0x70, 0x3a, 0xc5, 0x61, 0x57,
    -	0x14, 0xf3, 0x51, 0x71, 0xd7, 0x60, 0xfd, 0xec, 0x4e, 0x4c, 0x44, 0xbd, 0x24, 0xe1, 0xe7, 0x00,
    -	0xd4, 0xc8, 0x9b, 0x56, 0xc0, 0xf5, 0x1f, 0x13, 0xd7, 0x1e, 0xb6, 0xa2, 0x3b, 0x92, 0x86, 0x7a,
    -	0xc8, 0xc1, 0x9f, 0x18, 0x1d, 0x4f, 0x92, 0xdc, 0x8e, 0xa9, 0x79, 0x89, 0xef, 0xdf, 0xcd, 0x63,
    -	0x66, 0xa1, 0xf6, 0x1e, 0x24, 0x72, 0xb1, 0x16, 0x66, 0x0d, 0x0a, 0xf5, 0x71, 0x61, 0x9e, 0xdd,
    -	0xd0, 0x53, 0x15, 0x1e, 0x4e, 0x83, 0xec, 0x1e, 0x96, 0x5f, 0x55, 0x20, 0xf6, 0x13, 0xda, 0x20,
    -	0xd7, 0xb4, 0xdc, 0x28, 0x1e, 0x32, 0x0c, 0xb8, 0x3b, 0x40, 0xc2, 0xf8, 0x73, 0x99, 0x67, 0x8d,
    -	0xf9, 0xf7, 0x0d, 0x30, 0xd7, 0xfb, 0xe0, 0xb9, 0xaf, 0x6e, 0xfd, 0xd4, 0x00, 0x33, 0x5d, 0x67,
    -	0x4c, 0x0f, 0x8f, 0x6e, 0x77, 0x7a, 0xf4, 0xca, 0xa0, 0x0f, 0x0b, 0xb1, 0x39, 0x78, 0x87, 0xac,
    -	0xbb, 0xf7, 0x03, 0x03, 0x4c, 0xa7, 0xcb, 0xf6, 0xfd, 0x8c, 0x57, 0xf1, 0xfd, 0x0c, 0x98, 0xeb,
    -	0xdd, 0xd8, 0x43, 0xa2, 0x26, 0x18, 0xc3, 0x99, 0x04, 0xf5, 0x9a, 0x1a, 0xbf, 0x63, 0x80, 0x89,
    -	0xb7, 0x94, 0x5c, 0xfc, 0xd6, 0x7d, 0xe0, 0x33, 0xa8, 0xf8, 0x9c, 0x4c, 0x18, 0x14, 0xe9, 0xb8,
    -	0xc5, 0xdf, 0x1a, 0x60, 0xb6, 0x67, 0x03, 0x00, 0x2f, 0x82, 0x51, 0xcb, 0x75, 0xfd, 0x7d, 0x31,
    -	0x4a, 0xd4, 0xde, 0x11, 0xac, 0x70, 0x2a, 0x92, 0x5c, 0x2d, 0x7a, 0x99, 0xcf, 0x2a, 0x7a, 0xc5,
    -	0x3f, 0x18, 0xe0, 0xdc, 0x9d, 0x32, 0xf1, 0xbe, 0x2c, 0xe9, 0x12, 0xc8, 0xcb, 0xe6, 0xfd, 0x90,
    -	0x2f, 0xa7, 0x2c, 0xc5, 0xb2, 0x68, 0xf0, 0x0f, 0xcd, 0xc4, 0xaf, 0xe2, 0x07, 0x06, 0x98, 0xae,
    -	0x60, 0xd2, 0x74, 0xaa, 0x18, 0xe1, 0x1a, 0x26, 0xd8, 0xab, 0x62, 0xb8, 0x0c, 0xc6, 0xf9, 0xeb,
    -	0xee, 0xc0, 0xaa, 0xc6, 0xaf, 0x6e, 0x66, 0x64, 0xc8, 0xc7, 0xaf, 0xc5, 0x0c, 0x94, 0xc8, 0xa8,
    -	0xd7, 0x3c, 0x99, 0xbe, 0xaf, 0x79, 0xce, 0x81, 0x91, 0x20, 0x19, 0x44, 0xe7, 0x19, 0x97, 0xcf,
    -	0x9e, 0x39, 0x95, 0x73, 0x7d, 0x12, 0xf2, 0xe9, 0x5a, 0x4e, 0x72, 0x7d, 0x12, 0x22, 0x4e, 0x2d,
    -	0xfe, 0x29, 0x03, 0x4e, 0x75, 0xd6, 0x71, 0x06, 0x48, 0x22, 0xb7, 0xeb, 0xbd, 0x12, 0xe3, 0x21,
    -	0xce, 0xd1, 0x3f, 0x77, 0xc9, 0xdc, 0xf9, 0x73, 0x17, 0xf8, 0x02, 0x98, 0x91, 0x3f, 0xd7, 0x0f,
    -	0x02, 0x82, 0x29, 0x7f, 0x77, 0x9a, 0xed, 0xfc, 0x68, 0x76, 0x33, 0x2d, 0x80, 0xba, 0x75, 0xe0,
    -	0xff, 0xa7, 0x3e, 0xc5, 0xb9, 0x90, 0x7c, 0x86, 0xc3, 0x5a, 0x42, 0xde, 0x67, 0xdc, 0x64, 0x65,
    -	0x60, 0x9d, 0x10, 0x9f, 0xa4, 0xbe, 0xcf, 0x59, 0x06, 0xe3, 0x35, 0x26, 0xc0, 0xe7, 0xf5, 0xb9,
    -	0xce, 0xa0, 0x5f, 0x89, 0x19, 0x28, 0x91, 0x81, 0xcf, 0x83, 0x29, 0x3f, 0x10, 0x1d, 0xf0, 0x96,
    -	0x6b, 0x57, 0xb0, 0x5b, 0xe3, 0x93, 0xc4, 0x7c, 0x3c, 0xee, 0xed, 0x60, 0xa1, 0xb4, 0x6c, 0xf1,
    -	0x8f, 0x06, 0xe8, 0xf5, 0xa1, 0x1d, 0x3c, 0x2b, 0xc6, 0xb6, 0xda, 0x2c, 0x34, 0x1e, 0xd9, 0xc2,
    -	0x26, 0x18, 0xa3, 0x22, 0x57, 0x64, 0x2e, 0x6f, 0x1d, 0x33, 0x97, 0xd3, 0x99, 0x27, 0xfa, 0xc5,
    -	0x98, 0x1a, 0x83, 0xb1, 0x74, 0xae, 0x5a, 0xe5, 0xc8, 0xb3, 0xe5, 0x24, 0x7f, 0x52, 0xa4, 0xf3,
    -	0xea, 0x8a, 0xa0, 0x21, 0xc5, 0x2d, 0x57, 0x3f, 0xfc, 0x64, 0xe1, 0xc4, 0x47, 0x9f, 0x2c, 0x9c,
    -	0xf8, 0xf8, 0x93, 0x85, 0x13, 0x5f, 0x6f, 0x2f, 0x18, 0x1f, 0xb6, 0x17, 0x8c, 0x8f, 0xda, 0x0b,
    -	0xc6, 0xc7, 0xed, 0x05, 0xe3, 0x6f, 0xed, 0x05, 0xe3, 0x87, 0x7f, 0x5f, 0x38, 0xf1, 0xe5, 0xe7,
    -	0x8f, 0xf5, 0x6d, 0xfb, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x16, 0x56, 0x59, 0x35, 0x34, 0x2f,
    -	0x00, 0x00,
    +	proto.RegisterFile("k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto", fileDescriptor_3623d6c0bd238430)
    +}
    +
    +var fileDescriptor_3623d6c0bd238430 = []byte{
    +	// 3214 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5b, 0xcf, 0x73, 0x1c, 0x57,
    +	0xf1, 0xf7, 0xac, 0xb4, 0xd2, 0xaa, 0x25, 0x5b, 0xd2, 0xb3, 0xa5, 0x8c, 0x15, 0x47, 0x2b, 0xaf,
    +	0xbf, 0xf1, 0x57, 0x49, 0x9c, 0x55, 0xe2, 0x6f, 0xf2, 0x4d, 0x08, 0xa4, 0x52, 0x5a, 0x49, 0x0e,
    +	0x4a, 0x2c, 0x4b, 0xbc, 0xb5, 0x1d, 0x41, 0x7e, 0x8e, 0x76, 0x9e, 0xd6, 0x63, 0xcf, 0xce, 0x8c,
    +	0xe7, 0xcd, 0xac, 0xa4, 0x0a, 0x50, 0x40, 0x2a, 0x05, 0x45, 0x01, 0xa1, 0x48, 0x2e, 0x14, 0x70,
    +	0x08, 0x14, 0x17, 0x0e, 0x70, 0x80, 0x1b, 0xfc, 0x01, 0x39, 0xa6, 0x80, 0x43, 0x0e, 0xd4, 0x16,
    +	0x59, 0xfe, 0x05, 0x0a, 0xaa, 0x74, 0xa2, 0xde, 0x8f, 0x99, 0x79, 0x33, 0xbb, 0x6b, 0xbb, 0xa2,
    +	0xdd, 0xb8, 0xb8, 0x69, 0xbb, 0xfb, 0xf5, 0xa7, 0xa7, 0x5f, 0xbf, 0xee, 0x7e, 0x3d, 0x23, 0xd8,
    +	0xb8, 0xf5, 0x2c, 0x2d, 0x5b, 0xee, 0x92, 0xe1, 0x59, 0x64, 0x3f, 0x20, 0x0e, 0xb5, 0x5c, 0x87,
    +	0x3e, 0x6e, 0x78, 0x16, 0x25, 0x7e, 0x93, 0xf8, 0x4b, 0xde, 0xad, 0x3a, 0xe3, 0xd1, 0xb4, 0xc0,
    +	0x52, 0xf3, 0xc9, 0x1d, 0x12, 0x18, 0x4f, 0x2e, 0xd5, 0x89, 0x43, 0x7c, 0x23, 0x20, 0x66, 0xd9,
    +	0xf3, 0xdd, 0xc0, 0x45, 0xcf, 0x0b, 0x75, 0xe5, 0x94, 0xf4, 0x9b, 0xb1, 0xba, 0xb2, 0x77, 0xab,
    +	0xce, 0x78, 0x34, 0x2d, 0x50, 0x96, 0xea, 0xe6, 0x1e, 0xaf, 0x5b, 0xc1, 0x8d, 0x70, 0xa7, 0x5c,
    +	0x73, 0x1b, 0x4b, 0x75, 0xb7, 0xee, 0x2e, 0x71, 0xad, 0x3b, 0xe1, 0x2e, 0xff, 0xc5, 0x7f, 0xf0,
    +	0xbf, 0x04, 0xda, 0xdc, 0x53, 0x89, 0xf1, 0x0d, 0xa3, 0x76, 0xc3, 0x72, 0x88, 0x7f, 0x90, 0x58,
    +	0xdc, 0x20, 0x81, 0xb1, 0xd4, 0xec, 0xb0, 0x71, 0x6e, 0xa9, 0xd7, 0x2a, 0x3f, 0x74, 0x02, 0xab,
    +	0x41, 0x3a, 0x16, 0xfc, 0xff, 0xdd, 0x16, 0xd0, 0xda, 0x0d, 0xd2, 0x30, 0xb2, 0xeb, 0x4a, 0x87,
    +	0x1a, 0x4c, 0xaf, 0xb8, 0x4e, 0x93, 0xf8, 0xec, 0x29, 0x31, 0xb9, 0x1d, 0x12, 0x1a, 0xa0, 0x0a,
    +	0x0c, 0x85, 0x96, 0xa9, 0x6b, 0x0b, 0xda, 0xe2, 0x58, 0xe5, 0x89, 0x8f, 0x5a, 0xc5, 0x63, 0xed,
    +	0x56, 0x71, 0xe8, 0xda, 0xfa, 0xea, 0x61, 0xab, 0x78, 0xb6, 0x17, 0x52, 0x70, 0xe0, 0x11, 0x5a,
    +	0xbe, 0xb6, 0xbe, 0x8a, 0xd9, 0x62, 0xf4, 0x22, 0x4c, 0x9b, 0x84, 0x5a, 0x3e, 0x31, 0x97, 0xb7,
    +	0xd6, 0xaf, 0x0b, 0xfd, 0x7a, 0x8e, 0x6b, 0x3c, 0x2d, 0x35, 0x4e, 0xaf, 0x66, 0x05, 0x70, 0xe7,
    +	0x1a, 0xb4, 0x0d, 0xa3, 0xee, 0xce, 0x4d, 0x52, 0x0b, 0xa8, 0x3e, 0xb4, 0x30, 0xb4, 0x38, 0x7e,
    +	0xf1, 0xf1, 0x72, 0xb2, 0x83, 0xb1, 0x09, 0x7c, 0xdb, 0xe4, 0xc3, 0x96, 0xb1, 0xb1, 0xb7, 0x16,
    +	0xed, 0x5c, 0x65, 0x52, 0xa2, 0x8d, 0x6e, 0x0a, 0x2d, 0x38, 0x52, 0x57, 0xfa, 0x55, 0x0e, 0x90,
    +	0xfa, 0xf0, 0xd4, 0x73, 0x1d, 0x4a, 0xfa, 0xf2, 0xf4, 0x14, 0xa6, 0x6a, 0x5c, 0x73, 0x40, 0x4c,
    +	0x89, 0xab, 0xe7, 0x3e, 0x8b, 0xf5, 0xba, 0xc4, 0x9f, 0x5a, 0xc9, 0xa8, 0xc3, 0x1d, 0x00, 0xe8,
    +	0x2a, 0x8c, 0xf8, 0x84, 0x86, 0x76, 0xa0, 0x0f, 0x2d, 0x68, 0x8b, 0xe3, 0x17, 0x2f, 0xf4, 0x84,
    +	0xe2, 0xf1, 0xcd, 0x82, 0xaf, 0xdc, 0x7c, 0xb2, 0x5c, 0x0d, 0x8c, 0x20, 0xa4, 0x95, 0x13, 0x12,
    +	0x69, 0x04, 0x73, 0x1d, 0x58, 0xea, 0x2a, 0x7d, 0x2f, 0x07, 0x53, 0xaa, 0x97, 0x9a, 0x16, 0xd9,
    +	0x43, 0x7b, 0x30, 0xea, 0x8b, 0x60, 0xe1, 0x7e, 0x1a, 0xbf, 0xb8, 0x55, 0x3e, 0xd2, 0xb1, 0x2a,
    +	0x77, 0x04, 0x61, 0x65, 0x9c, 0xed, 0x99, 0xfc, 0x81, 0x23, 0x34, 0xf4, 0x36, 0x14, 0x7c, 0xb9,
    +	0x51, 0x3c, 0x9a, 0xc6, 0x2f, 0x7e, 0xa5, 0x8f, 0xc8, 0x42, 0x71, 0x65, 0xa2, 0xdd, 0x2a, 0x16,
    +	0xa2, 0x5f, 0x38, 0x06, 0x2c, 0xbd, 0x9f, 0x83, 0xf9, 0x95, 0x90, 0x06, 0x6e, 0x03, 0x13, 0xea,
    +	0x86, 0x7e, 0x8d, 0xac, 0xb8, 0x76, 0xd8, 0x70, 0x56, 0xc9, 0xae, 0xe5, 0x58, 0x01, 0x8b, 0xd6,
    +	0x05, 0x18, 0x76, 0x8c, 0x06, 0x91, 0xd1, 0x33, 0x21, 0x7d, 0x3a, 0x7c, 0xc5, 0x68, 0x10, 0xcc,
    +	0x39, 0x4c, 0x82, 0x05, 0x8b, 0x3c, 0x0b, 0xb1, 0xc4, 0xd5, 0x03, 0x8f, 0x60, 0xce, 0x41, 0xe7,
    +	0x61, 0x64, 0xd7, 0xf5, 0x1b, 0x86, 0xd8, 0xc7, 0xb1, 0x64, 0x67, 0x2e, 0x71, 0x2a, 0x96, 0x5c,
    +	0xf4, 0x34, 0x8c, 0x9b, 0x84, 0xd6, 0x7c, 0xcb, 0x63, 0xd0, 0xfa, 0x30, 0x17, 0x3e, 0x29, 0x85,
    +	0xc7, 0x57, 0x13, 0x16, 0x56, 0xe5, 0xd0, 0x05, 0x28, 0x78, 0xbe, 0xe5, 0xfa, 0x56, 0x70, 0xa0,
    +	0xe7, 0x17, 0xb4, 0xc5, 0x7c, 0x65, 0x4a, 0xae, 0x29, 0x6c, 0x49, 0x3a, 0x8e, 0x25, 0xd0, 0x02,
    +	0x14, 0x5e, 0xaa, 0x6e, 0x5e, 0xd9, 0x32, 0x82, 0x1b, 0xfa, 0x08, 0x47, 0x18, 0x66, 0xd2, 0x38,
    +	0xa6, 0x96, 0xfe, 0x96, 0x03, 0x3d, 0xeb, 0x95, 0xc8, 0xa5, 0xe8, 0x12, 0x14, 0x68, 0xc0, 0x32,
    +	0x4e, 0xfd, 0x40, 0xfa, 0xe4, 0xd1, 0x08, 0xac, 0x2a, 0xe9, 0x87, 0xad, 0xe2, 0x6c, 0xb2, 0x22,
    +	0xa2, 0x72, 0x7f, 0xc4, 0x6b, 0xd1, 0x2f, 0x34, 0x38, 0xb9, 0x47, 0x76, 0x6e, 0xb8, 0xee, 0xad,
    +	0x15, 0xdb, 0x22, 0x4e, 0xb0, 0xe2, 0x3a, 0xbb, 0x56, 0x5d, 0xc6, 0x00, 0x3e, 0x62, 0x0c, 0xbc,
    +	0xd2, 0xa9, 0xb9, 0xf2, 0x40, 0xbb, 0x55, 0x3c, 0xd9, 0x85, 0x81, 0xbb, 0xd9, 0x81, 0xb6, 0x41,
    +	0xaf, 0x65, 0x0e, 0x89, 0x4c, 0x60, 0x22, 0x6d, 0x8d, 0x55, 0xce, 0xb4, 0x5b, 0x45, 0x7d, 0xa5,
    +	0x87, 0x0c, 0xee, 0xb9, 0xba, 0xf4, 0xce, 0x50, 0xd6, 0xbd, 0x4a, 0xb8, 0xbd, 0x05, 0x05, 0x76,
    +	0x8c, 0x4d, 0x23, 0x30, 0xe4, 0x41, 0x7c, 0xe2, 0xde, 0x0e, 0xbd, 0xc8, 0x19, 0x1b, 0x24, 0x30,
    +	0x2a, 0x48, 0x6e, 0x08, 0x24, 0x34, 0x1c, 0x6b, 0x45, 0xdf, 0x80, 0x61, 0xea, 0x91, 0x9a, 0x74,
    +	0xf4, 0xab, 0x47, 0x3d, 0x6c, 0x3d, 0x1e, 0xa4, 0xea, 0x91, 0x5a, 0x72, 0x16, 0xd8, 0x2f, 0xcc,
    +	0x61, 0xd1, 0xbb, 0x1a, 0x8c, 0x50, 0x9e, 0xa0, 0x64, 0x52, 0x7b, 0x7d, 0x50, 0x16, 0x64, 0xb2,
    +	0xa0, 0xf8, 0x8d, 0x25, 0x78, 0xe9, 0x9f, 0x39, 0x38, 0xdb, 0x6b, 0xe9, 0x8a, 0xeb, 0x98, 0x62,
    +	0x3b, 0xd6, 0xe5, 0xd9, 0x16, 0x91, 0xfe, 0xb4, 0x7a, 0xb6, 0x0f, 0x5b, 0xc5, 0x87, 0xef, 0xaa,
    +	0x40, 0x49, 0x02, 0x5f, 0x88, 0x9f, 0x5b, 0x24, 0x8a, 0xb3, 0x69, 0xc3, 0x0e, 0x5b, 0xc5, 0xc9,
    +	0x78, 0x59, 0xda, 0x56, 0xd4, 0x04, 0x64, 0x1b, 0x34, 0xb8, 0xea, 0x1b, 0x0e, 0x15, 0x6a, 0xad,
    +	0x06, 0x91, 0xee, 0x7b, 0xf4, 0xde, 0xc2, 0x83, 0xad, 0xa8, 0xcc, 0x49, 0x48, 0x74, 0xb9, 0x43,
    +	0x1b, 0xee, 0x82, 0xc0, 0xf2, 0x96, 0x4f, 0x0c, 0x1a, 0xa7, 0x22, 0xa5, 0xa2, 0x30, 0x2a, 0x96,
    +	0x5c, 0xf4, 0x08, 0x8c, 0x36, 0x08, 0xa5, 0x46, 0x9d, 0xf0, 0xfc, 0x33, 0x96, 0x94, 0xe8, 0x0d,
    +	0x41, 0xc6, 0x11, 0x9f, 0xf5, 0x27, 0x67, 0x7a, 0x79, 0xed, 0xb2, 0x45, 0x03, 0xf4, 0x5a, 0xc7,
    +	0x01, 0x28, 0xdf, 0xdb, 0x13, 0xb2, 0xd5, 0x3c, 0xfc, 0xe3, 0xe4, 0x17, 0x51, 0x94, 0xe0, 0xff,
    +	0x3a, 0xe4, 0xad, 0x80, 0x34, 0xa2, 0xda, 0xfd, 0xca, 0x80, 0x62, 0xaf, 0x72, 0x5c, 0xda, 0x90,
    +	0x5f, 0x67, 0x68, 0x58, 0x80, 0x96, 0x7e, 0x9d, 0x83, 0x87, 0x7a, 0x2d, 0x61, 0x05, 0x85, 0x32,
    +	0x8f, 0x7b, 0x76, 0xe8, 0x1b, 0xb6, 0x8c, 0xb8, 0xd8, 0xe3, 0x5b, 0x9c, 0x8a, 0x25, 0x97, 0xa5,
    +	0x7c, 0x6a, 0x39, 0xf5, 0xd0, 0x36, 0x7c, 0x19, 0x4e, 0xf1, 0x53, 0x57, 0x25, 0x1d, 0xc7, 0x12,
    +	0xa8, 0x0c, 0x40, 0x6f, 0xb8, 0x7e, 0xc0, 0x31, 0x64, 0xf6, 0x3a, 0xc1, 0x12, 0x44, 0x35, 0xa6,
    +	0x62, 0x45, 0x82, 0x55, 0xb4, 0x5b, 0x96, 0x63, 0xca, 0x5d, 0x8f, 0x4f, 0xf1, 0xcb, 0x96, 0x63,
    +	0x62, 0xce, 0x61, 0xf8, 0xb6, 0x45, 0x03, 0x46, 0x91, 0x5b, 0x9e, 0xf2, 0x3a, 0x97, 0x8c, 0x25,
    +	0x18, 0x7e, 0x8d, 0x65, 0x7d, 0xd7, 0xb7, 0x08, 0xd5, 0x47, 0x12, 0xfc, 0x95, 0x98, 0x8a, 0x15,
    +	0x89, 0xd2, 0x3b, 0xd0, 0x3b, 0x48, 0x58, 0x2a, 0x41, 0xe7, 0x20, 0x5f, 0xf7, 0xdd, 0xd0, 0x93,
    +	0x5e, 0x8a, 0xbd, 0xfd, 0x22, 0x23, 0x62, 0xc1, 0x63, 0x51, 0xd9, 0x4c, 0xb5, 0xa9, 0x71, 0x54,
    +	0x46, 0xcd, 0x69, 0xc4, 0x47, 0xdf, 0xd6, 0x20, 0xef, 0x48, 0xe7, 0xb0, 0x90, 0x7b, 0x6d, 0x40,
    +	0x71, 0xc1, 0xdd, 0x9b, 0x98, 0x2b, 0x3c, 0x2f, 0x90, 0xd1, 0x53, 0x90, 0xa7, 0x35, 0xd7, 0x23,
    +	0xd2, 0xeb, 0xf3, 0x91, 0x50, 0x95, 0x11, 0x0f, 0x5b, 0xc5, 0xe3, 0x91, 0x3a, 0x4e, 0xc0, 0x42,
    +	0x18, 0x7d, 0x57, 0x03, 0x68, 0x1a, 0xb6, 0x65, 0x1a, 0xbc, 0x65, 0xc8, 0x73, 0xf3, 0xfb, 0x1b,
    +	0xd6, 0xd7, 0x63, 0xf5, 0x62, 0xd3, 0x92, 0xdf, 0x58, 0x81, 0x46, 0xef, 0x69, 0x30, 0x41, 0xc3,
    +	0x1d, 0x5f, 0xae, 0xa2, 0xbc, 0xb9, 0x18, 0xbf, 0xf8, 0xd5, 0xbe, 0xda, 0x52, 0x55, 0x00, 0x2a,
    +	0x53, 0xed, 0x56, 0x71, 0x42, 0xa5, 0xe0, 0x94, 0x01, 0xe8, 0x07, 0x1a, 0x14, 0x9a, 0x51, 0xcd,
    +	0x1e, 0xe5, 0x07, 0xfe, 0x8d, 0x01, 0x6d, 0xac, 0x8c, 0xa8, 0xe4, 0x14, 0xc4, 0x7d, 0x40, 0x6c,
    +	0x01, 0xfa, 0xa3, 0x06, 0xba, 0x61, 0x8a, 0x04, 0x6f, 0xd8, 0x5b, 0xbe, 0xe5, 0x04, 0xc4, 0x17,
    +	0xfd, 0x26, 0xd5, 0x0b, 0xdc, 0xbc, 0xfe, 0xd6, 0xc2, 0x6c, 0x2f, 0x5b, 0x59, 0x90, 0xd6, 0xe9,
    +	0xcb, 0x3d, 0xcc, 0xc0, 0x3d, 0x0d, 0x44, 0x1f, 0x68, 0x30, 0x45, 0x89, 0x4d, 0x6a, 0x81, 0xb1,
    +	0x63, 0x93, 0x4b, 0x16, 0xb1, 0x4d, 0xaa, 0x8f, 0x73, 0xab, 0xaf, 0x1c, 0xd1, 0xea, 0x6a, 0x5a,
    +	0x6d, 0x72, 0x45, 0xca, 0x30, 0x28, 0xee, 0xb0, 0x80, 0xc7, 0x7f, 0xd2, 0x69, 0xe9, 0x63, 0x03,
    +	0x88, 0xff, 0xa4, 0xc5, 0x93, 0x49, 0x2b, 0x69, 0xec, 0x14, 0x68, 0xb4, 0x09, 0x33, 0x9e, 0x4f,
    +	0x38, 0xc0, 0x35, 0xe7, 0x96, 0xe3, 0xee, 0x39, 0xd2, 0x49, 0xb0, 0xa0, 0x2d, 0x16, 0x2a, 0xa7,
    +	0xdb, 0xad, 0xe2, 0xcc, 0x56, 0x37, 0x01, 0xdc, 0x7d, 0x5d, 0xe9, 0xbd, 0xa1, 0xec, 0xe5, 0x24,
    +	0xdb, 0xdc, 0xb0, 0x4d, 0x61, 0x26, 0x88, 0x2d, 0xa3, 0xba, 0xc6, 0xb7, 0xe3, 0xad, 0x01, 0xc5,
    +	0x78, 0xdc, 0x9d, 0x24, 0x0d, 0x66, 0x4c, 0xa2, 0x58, 0xb1, 0x03, 0xfd, 0x54, 0x83, 0xe3, 0x46,
    +	0xad, 0x46, 0xbc, 0x80, 0x98, 0xa2, 0xe6, 0xe4, 0x3e, 0x87, 0xb4, 0x3a, 0x23, 0xad, 0x3a, 0xbe,
    +	0xac, 0x42, 0xe3, 0xb4, 0x25, 0xe8, 0x39, 0x38, 0x41, 0x03, 0xd7, 0x27, 0x66, 0xa6, 0x9b, 0x47,
    +	0xed, 0x56, 0xf1, 0x44, 0x35, 0xc5, 0xc1, 0x19, 0xc9, 0xd2, 0xbf, 0x46, 0xa0, 0x78, 0x97, 0x0c,
    +	0x70, 0x0f, 0xf7, 0xc5, 0xf3, 0x30, 0xc2, 0x1f, 0xd7, 0xe4, 0x5e, 0x29, 0x28, 0x1d, 0x2a, 0xa7,
    +	0x62, 0xc9, 0x65, 0xf5, 0x8b, 0xe1, 0xb3, 0xae, 0x6a, 0x88, 0x0b, 0xc6, 0xf5, 0xab, 0x2a, 0xc8,
    +	0x38, 0xe2, 0xa3, 0x8b, 0x00, 0x26, 0xf1, 0x7c, 0xc2, 0x6a, 0xa8, 0xa9, 0x8f, 0x72, 0xe9, 0x78,
    +	0x93, 0x56, 0x63, 0x0e, 0x56, 0xa4, 0xd0, 0x25, 0x40, 0xd1, 0x2f, 0xcb, 0x75, 0x5e, 0x31, 0x7c,
    +	0xc7, 0x72, 0xea, 0x7a, 0x81, 0x9b, 0x3d, 0xcb, 0x9a, 0xc4, 0xd5, 0x0e, 0x2e, 0xee, 0xb2, 0x02,
    +	0xbd, 0x0d, 0x23, 0x62, 0x16, 0xc5, 0x0b, 0xd7, 0x00, 0x8b, 0x0f, 0x70, 0x1f, 0x71, 0x28, 0x2c,
    +	0x21, 0x3b, 0x8b, 0x4e, 0xfe, 0x7e, 0x17, 0x9d, 0x3b, 0x66, 0xf9, 0x91, 0xff, 0xca, 0x2c, 0x3f,
    +	0x76, 0xbf, 0xb3, 0x7c, 0xe9, 0xdf, 0x5a, 0x36, 0x15, 0x2a, 0x3b, 0x50, 0xad, 0x19, 0x36, 0x41,
    +	0xab, 0x30, 0xc5, 0xee, 0x97, 0x98, 0x78, 0xb6, 0x55, 0x33, 0x28, 0x1f, 0x6f, 0x88, 0x33, 0x98,
    +	0x00, 0x65, 0xf8, 0xb8, 0x63, 0x05, 0x7a, 0x09, 0x90, 0xb8, 0x73, 0xa5, 0xf4, 0x88, 0xf6, 0x31,
    +	0xbe, 0x3d, 0x55, 0x3b, 0x24, 0x70, 0x97, 0x55, 0x68, 0x05, 0xa6, 0x6d, 0x63, 0x87, 0xd8, 0xe2,
    +	0xf9, 0x5c, 0x9f, 0xab, 0x12, 0x03, 0xa0, 0x99, 0x76, 0xab, 0x38, 0x7d, 0x39, 0xcb, 0xc4, 0x9d,
    +	0xf2, 0xa5, 0xb3, 0xd9, 0x8c, 0xa3, 0x3e, 0xb8, 0xb8, 0xc9, 0x7e, 0x98, 0x83, 0xb9, 0xde, 0x01,
    +	0x8b, 0xbe, 0x93, 0x5c, 0xb8, 0xc5, 0x7d, 0xea, 0x8d, 0x41, 0x1d, 0x0e, 0x79, 0xe3, 0x86, 0xce,
    +	0xdb, 0x36, 0xfa, 0x26, 0x6b, 0x6e, 0x0d, 0x3b, 0x1a, 0xf1, 0xbd, 0x3e, 0x30, 0x13, 0x18, 0x48,
    +	0x65, 0x4c, 0xf4, 0xcd, 0x86, 0xcd, 0xdb, 0x64, 0xc3, 0x26, 0xa5, 0xdf, 0x68, 0xd9, 0x99, 0x4b,
    +	0x92, 0x58, 0xd0, 0x0f, 0x35, 0x98, 0x74, 0x3d, 0xe2, 0x2c, 0x6f, 0xad, 0x5f, 0xff, 0x3f, 0x91,
    +	0x60, 0xa4, 0xab, 0x8e, 0x1a, 0xf3, 0x2f, 0x55, 0x37, 0xaf, 0x08, 0x85, 0x5b, 0xbe, 0xeb, 0xd1,
    +	0xca, 0xc9, 0x76, 0xab, 0x38, 0xb9, 0x99, 0x86, 0xc2, 0x59, 0xec, 0x52, 0x03, 0x66, 0xd6, 0xf6,
    +	0x03, 0xe2, 0x3b, 0x86, 0xbd, 0xea, 0xd6, 0xc2, 0x06, 0x71, 0x02, 0x61, 0x68, 0x66, 0x3e, 0xa8,
    +	0xdd, 0xe3, 0x7c, 0xf0, 0x21, 0x18, 0x0a, 0x7d, 0x5b, 0x46, 0xf1, 0x78, 0x3c, 0xff, 0xc6, 0x97,
    +	0x31, 0xa3, 0x97, 0xce, 0xc2, 0x30, 0xb3, 0x13, 0x9d, 0x86, 0x21, 0xdf, 0xd8, 0xe3, 0x5a, 0x27,
    +	0x2a, 0xa3, 0x4c, 0x04, 0x1b, 0x7b, 0x98, 0xd1, 0x4a, 0x7f, 0x3d, 0x0b, 0x93, 0x99, 0x67, 0x41,
    +	0x73, 0x90, 0x8b, 0x87, 0xea, 0x20, 0x95, 0xe6, 0xd6, 0x57, 0x71, 0xce, 0x32, 0xd1, 0x33, 0x71,
    +	0x4d, 0x10, 0xa0, 0xc5, 0xb8, 0xc4, 0x71, 0x2a, 0xbb, 0xcd, 0x24, 0xea, 0x98, 0x21, 0x51, 0x3e,
    +	0x67, 0x36, 0x90, 0x5d, 0x79, 0x4a, 0x84, 0x0d, 0x64, 0x17, 0x33, 0xda, 0x67, 0x1d, 0x8e, 0x46,
    +	0xd3, 0xd9, 0xfc, 0x3d, 0x4c, 0x67, 0x47, 0xee, 0x38, 0x9d, 0x3d, 0x07, 0xf9, 0xc0, 0x0a, 0x6c,
    +	0xc2, 0xeb, 0xab, 0x72, 0xe9, 0xbc, 0xca, 0x88, 0x58, 0xf0, 0xd0, 0x4d, 0x18, 0x35, 0xc9, 0xae,
    +	0x11, 0xda, 0x01, 0x2f, 0xa5, 0xe3, 0x17, 0x57, 0xfa, 0x10, 0x42, 0x62, 0x74, 0xbe, 0x2a, 0xf4,
    +	0xe2, 0x08, 0x00, 0x3d, 0x0c, 0xa3, 0x0d, 0x63, 0xdf, 0x6a, 0x84, 0x0d, 0xde, 0xf7, 0x6a, 0x42,
    +	0x6c, 0x43, 0x90, 0x70, 0xc4, 0x63, 0x99, 0x91, 0xec, 0xd7, 0xec, 0x90, 0x5a, 0x4d, 0x22, 0x99,
    +	0xb2, 0x27, 0x8d, 0x33, 0xe3, 0x5a, 0x86, 0x8f, 0x3b, 0x56, 0x70, 0x30, 0xcb, 0xe1, 0x8b, 0xc7,
    +	0x15, 0x30, 0x41, 0xc2, 0x11, 0x2f, 0x0d, 0x26, 0xe5, 0x27, 0x7a, 0x81, 0xc9, 0xc5, 0x1d, 0x2b,
    +	0xd0, 0x63, 0x30, 0xd6, 0x30, 0xf6, 0x2f, 0x13, 0xa7, 0x1e, 0xdc, 0xd0, 0x8f, 0x2f, 0x68, 0x8b,
    +	0x43, 0x95, 0xe3, 0xed, 0x56, 0x71, 0x6c, 0x23, 0x22, 0xe2, 0x84, 0xcf, 0x85, 0x2d, 0x47, 0x0a,
    +	0x9f, 0x50, 0x84, 0x23, 0x22, 0x4e, 0xf8, 0xac, 0xa9, 0xf2, 0x8c, 0x80, 0x1d, 0x2e, 0x7d, 0x32,
    +	0x3d, 0x14, 0xd8, 0x12, 0x64, 0x1c, 0xf1, 0xd1, 0x22, 0x14, 0x1a, 0xc6, 0x3e, 0x1f, 0xe0, 0xe8,
    +	0x53, 0x5c, 0x2d, 0x7f, 0x8d, 0xb0, 0x21, 0x69, 0x38, 0xe6, 0x72, 0x49, 0xcb, 0x11, 0x92, 0xd3,
    +	0x8a, 0xa4, 0xa4, 0xe1, 0x98, 0xcb, 0x82, 0x38, 0x74, 0xac, 0xdb, 0x21, 0x11, 0xc2, 0x88, 0x7b,
    +	0x26, 0x0e, 0xe2, 0x6b, 0x09, 0x0b, 0xab, 0x72, 0xa8, 0x0c, 0xd0, 0x08, 0xed, 0xc0, 0xf2, 0x6c,
    +	0xb2, 0xb9, 0xab, 0x9f, 0xe4, 0xfe, 0xe7, 0x77, 0x91, 0x8d, 0x98, 0x8a, 0x15, 0x09, 0x44, 0x60,
    +	0x98, 0x38, 0x61, 0x43, 0x3f, 0xc5, 0x2b, 0x77, 0x5f, 0x42, 0x30, 0x3e, 0x39, 0x6b, 0x4e, 0xd8,
    +	0xc0, 0x5c, 0x3d, 0x7a, 0x06, 0x8e, 0x37, 0x8c, 0x7d, 0x96, 0x0e, 0x88, 0x1f, 0x58, 0x84, 0xea,
    +	0x33, 0xfc, 0xe1, 0xa7, 0x59, 0x13, 0xbe, 0xa1, 0x32, 0x70, 0x5a, 0x8e, 0x2f, 0xb4, 0x1c, 0x65,
    +	0xe1, 0xac, 0xb2, 0x50, 0x65, 0xe0, 0xb4, 0x1c, 0xf3, 0xb4, 0x4f, 0x6e, 0x87, 0x96, 0x4f, 0x4c,
    +	0xfd, 0x01, 0xde, 0xb7, 0xcb, 0x57, 0x3b, 0x82, 0x86, 0x63, 0x2e, 0x6a, 0x46, 0x93, 0x3e, 0x9d,
    +	0x1f, 0xc3, 0x6b, 0xfd, 0xcd, 0xe4, 0x9b, 0xfe, 0xb2, 0xef, 0x1b, 0x07, 0xa2, 0xd2, 0xa8, 0x33,
    +	0x3e, 0x44, 0x21, 0x6f, 0xd8, 0xf6, 0xe6, 0xae, 0x7e, 0xba, 0x2f, 0x5d, 0x53, 0xb6, 0x82, 0xc4,
    +	0x59, 0x67, 0x99, 0x81, 0x60, 0x81, 0xc5, 0x40, 0x5d, 0x87, 0x85, 0xc6, 0xdc, 0x60, 0x41, 0x37,
    +	0x19, 0x08, 0x16, 0x58, 0xfc, 0x49, 0x9d, 0x83, 0xcd, 0x5d, 0xfd, 0xc1, 0x01, 0x3f, 0x29, 0x03,
    +	0xc1, 0x02, 0x0b, 0x59, 0x30, 0xe4, 0xb8, 0x81, 0x7e, 0x66, 0x20, 0xe5, 0x99, 0x17, 0x9c, 0x2b,
    +	0x6e, 0x80, 0x19, 0x06, 0xfa, 0x89, 0x06, 0xe0, 0x25, 0x21, 0xfa, 0x50, 0x5f, 0x06, 0x48, 0x19,
    +	0xc8, 0x72, 0x12, 0xdb, 0x6b, 0x4e, 0xe0, 0x1f, 0x24, 0xb7, 0x36, 0xe5, 0x0c, 0x28, 0x56, 0xa0,
    +	0x5f, 0x6a, 0x70, 0x4a, 0xed, 0xde, 0x63, 0xf3, 0xe6, 0xb9, 0x47, 0xae, 0xf6, 0x3b, 0xcc, 0x2b,
    +	0xae, 0x6b, 0x57, 0xf4, 0x76, 0xab, 0x78, 0x6a, 0xb9, 0x0b, 0x2a, 0xee, 0x6a, 0x0b, 0xfa, 0xad,
    +	0x06, 0xd3, 0x32, 0x8b, 0x2a, 0x16, 0x16, 0xb9, 0x03, 0x49, 0xbf, 0x1d, 0x98, 0xc5, 0x11, 0x7e,
    +	0x8c, 0x3f, 0x49, 0xe8, 0xe0, 0xe3, 0x4e, 0xd3, 0xd0, 0x1f, 0x34, 0x98, 0x30, 0x89, 0x47, 0x1c,
    +	0x93, 0x38, 0x35, 0x66, 0xeb, 0x42, 0x5f, 0x26, 0x29, 0x59, 0x5b, 0x57, 0x15, 0x08, 0x61, 0x66,
    +	0x59, 0x9a, 0x39, 0xa1, 0xb2, 0x0e, 0x5b, 0xc5, 0xd9, 0x64, 0xa9, 0xca, 0xc1, 0x29, 0x2b, 0xd1,
    +	0xfb, 0x1a, 0x4c, 0x26, 0x1b, 0x20, 0x4a, 0xca, 0xd9, 0x01, 0xc6, 0x01, 0x6f, 0x5f, 0x97, 0xd3,
    +	0x80, 0x38, 0x6b, 0x01, 0xfa, 0x9d, 0xc6, 0x3a, 0xb5, 0xe8, 0x3a, 0x4a, 0xf5, 0x12, 0xf7, 0xe5,
    +	0x9b, 0x7d, 0xf7, 0x65, 0x8c, 0x20, 0x5c, 0x79, 0x21, 0x69, 0x05, 0x63, 0xce, 0x61, 0xab, 0x38,
    +	0xa3, 0x7a, 0x32, 0x66, 0x60, 0xd5, 0x42, 0xf4, 0x7d, 0x0d, 0x26, 0x48, 0xd2, 0x71, 0x53, 0xfd,
    +	0x5c, 0x5f, 0x9c, 0xd8, 0xb5, 0x89, 0x17, 0x03, 0x04, 0x85, 0x45, 0x71, 0x0a, 0x9b, 0x75, 0x90,
    +	0x64, 0xdf, 0x68, 0x78, 0x36, 0xd1, 0xff, 0xa7, 0xcf, 0x1d, 0xe4, 0x9a, 0xd0, 0x8b, 0x23, 0x00,
    +	0x74, 0x01, 0x0a, 0x4e, 0x68, 0xdb, 0xec, 0xa6, 0xad, 0x3f, 0xcc, 0x7b, 0x91, 0x78, 0x80, 0x7d,
    +	0x45, 0xd2, 0x71, 0x2c, 0x81, 0x76, 0x61, 0x61, 0xff, 0xe5, 0x70, 0x87, 0xf8, 0x0e, 0x09, 0x08,
    +	0xed, 0x3a, 0xcb, 0xd4, 0xcf, 0x73, 0x2d, 0x73, 0xed, 0x56, 0x71, 0x76, 0xbb, 0xfb, 0xb4, 0xf3,
    +	0xae, 0x3a, 0xd0, 0xab, 0xf0, 0xa0, 0x22, 0xb3, 0xd6, 0xd8, 0x21, 0xa6, 0x49, 0xcc, 0xe8, 0xe2,
    +	0xa6, 0xff, 0xaf, 0x98, 0xa7, 0x46, 0x07, 0x7c, 0x3b, 0x2b, 0x80, 0xef, 0xb4, 0x1a, 0x5d, 0x86,
    +	0x59, 0x85, 0xbd, 0xee, 0x04, 0x9b, 0x7e, 0x35, 0xf0, 0x2d, 0xa7, 0xae, 0x2f, 0x72, 0xbd, 0xa7,
    +	0xa2, 0x13, 0xb9, 0xad, 0xf0, 0x70, 0x8f, 0x35, 0xe8, 0xcb, 0x29, 0x6d, 0xfc, 0x85, 0xa3, 0xe1,
    +	0xbd, 0x4c, 0x0e, 0xa8, 0xfe, 0x08, 0xef, 0x4e, 0xf8, 0x66, 0x6f, 0x2b, 0x74, 0xdc, 0x43, 0x1e,
    +	0xbd, 0x00, 0x27, 0x33, 0x1c, 0x76, 0x45, 0xd1, 0x1f, 0x15, 0x77, 0x0d, 0xd6, 0xcf, 0x6e, 0x47,
    +	0x44, 0xdc, 0x4d, 0x12, 0x7d, 0x09, 0x90, 0x42, 0xde, 0x30, 0x3c, 0xbe, 0xfe, 0x31, 0x71, 0xed,
    +	0x61, 0x3b, 0xba, 0x2d, 0x69, 0xb8, 0x8b, 0x1c, 0xfa, 0x99, 0x96, 0x7a, 0x92, 0xe4, 0x76, 0x4c,
    +	0xf5, 0x0b, 0xfc, 0xfc, 0x6e, 0x1c, 0x31, 0x0a, 0x95, 0xb7, 0x46, 0xa1, 0x4d, 0x14, 0x37, 0x2b,
    +	0x50, 0xb8, 0x87, 0x09, 0x73, 0xec, 0x86, 0x9e, 0xc9, 0xf0, 0x68, 0x0a, 0x86, 0x6e, 0x11, 0xf9,
    +	0x0d, 0x0a, 0x66, 0x7f, 0x22, 0x13, 0xf2, 0x4d, 0xc3, 0x0e, 0xa3, 0x21, 0x43, 0x9f, 0xbb, 0x03,
    +	0x2c, 0x94, 0x3f, 0x97, 0x7b, 0x56, 0x9b, 0xfb, 0x40, 0x83, 0xd9, 0xee, 0x85, 0xe7, 0xbe, 0x9a,
    +	0xf5, 0x73, 0x0d, 0xa6, 0x3b, 0x6a, 0x4c, 0x17, 0x8b, 0x6e, 0xa7, 0x2d, 0x7a, 0xb5, 0xdf, 0xc5,
    +	0x42, 0x1c, 0x0e, 0xde, 0x21, 0xab, 0xe6, 0xfd, 0x48, 0x83, 0xa9, 0x6c, 0xda, 0xbe, 0x9f, 0xfe,
    +	0x2a, 0x7d, 0x90, 0x83, 0xd9, 0xee, 0x8d, 0x3d, 0xf2, 0xe3, 0x09, 0xc6, 0x60, 0x26, 0x41, 0xdd,
    +	0x86, 0xd9, 0xef, 0x6a, 0x30, 0x7e, 0x33, 0x96, 0x8b, 0xbe, 0x51, 0xe8, 0xfb, 0x0c, 0x2a, 0xaa,
    +	0x93, 0x09, 0x83, 0x62, 0x15, 0xb7, 0xf4, 0x7b, 0x0d, 0x66, 0xba, 0x36, 0x00, 0xe8, 0x3c, 0x8c,
    +	0x18, 0xb6, 0xed, 0xee, 0x89, 0x51, 0xa2, 0xf2, 0xea, 0x62, 0x99, 0x53, 0xb1, 0xe4, 0x2a, 0xde,
    +	0xcb, 0x7d, 0x5e, 0xde, 0x2b, 0xfd, 0x49, 0x83, 0x33, 0x77, 0x8a, 0xc4, 0xfb, 0xb2, 0xa5, 0x8b,
    +	0x50, 0x90, 0xcd, 0xfb, 0x01, 0xdf, 0x4e, 0x99, 0x8a, 0x65, 0xd2, 0xe0, 0x9f, 0xe5, 0x89, 0xbf,
    +	0x4a, 0x2f, 0xc0, 0x64, 0x66, 0x10, 0xce, 0xaa, 0xf3, 0x4d, 0xea, 0x3a, 0xca, 0x28, 0x3b, 0xae,
    +	0xce, 0xd1, 0xb7, 0x7a, 0x38, 0x96, 0x28, 0x7d, 0xa8, 0xc1, 0x54, 0x95, 0xf8, 0x4d, 0xab, 0x46,
    +	0x30, 0xd9, 0x25, 0x3e, 0x71, 0x6a, 0x04, 0x2d, 0xc1, 0x18, 0xff, 0xba, 0xc0, 0x33, 0x6a, 0xd1,
    +	0x2b, 0xa9, 0x69, 0xa9, 0x63, 0xec, 0x4a, 0xc4, 0xc0, 0x89, 0x4c, 0xfc, 0xfa, 0x2a, 0xd7, 0xf3,
    +	0xf5, 0xd5, 0x19, 0x18, 0xf6, 0x92, 0x49, 0x76, 0x81, 0x71, 0xb9, 0x25, 0x9c, 0xca, 0xb9, 0xae,
    +	0x1f, 0xf0, 0xf1, 0x5c, 0x5e, 0x72, 0x5d, 0x3f, 0xc0, 0x9c, 0x5a, 0xfa, 0x4b, 0x0e, 0x4e, 0xa4,
    +	0x0b, 0x01, 0x03, 0xf4, 0x43, 0xbb, 0xe3, 0x7d, 0x19, 0xe3, 0x61, 0xce, 0x51, 0xbf, 0x2e, 0xca,
    +	0xdd, 0xf9, 0xeb, 0x22, 0xf4, 0x22, 0x4c, 0xcb, 0x3f, 0xd7, 0xf6, 0x3d, 0x9f, 0x50, 0xfe, 0x4e,
    +	0x78, 0x28, 0xfd, 0x8d, 0xf2, 0x46, 0x56, 0x00, 0x77, 0xae, 0x41, 0x5f, 0xcc, 0x7c, 0xf9, 0x74,
    +	0x2e, 0xf9, 0xea, 0x89, 0xf5, 0x94, 0x7c, 0x7f, 0xae, 0xb3, 0x3c, 0xb2, 0xe6, 0xfb, 0xae, 0x9f,
    +	0xf9, 0x1c, 0x6a, 0x09, 0xc6, 0x76, 0x99, 0x00, 0xdf, 0xb8, 0x7c, 0xda, 0xe9, 0x97, 0x22, 0x06,
    +	0x4e, 0x64, 0xd0, 0xf3, 0x30, 0xe9, 0x7a, 0xa2, 0x85, 0xde, 0xb4, 0xcd, 0x2a, 0xb1, 0x77, 0xf9,
    +	0x28, 0xb2, 0x10, 0xcd, 0x8b, 0x53, 0x2c, 0x9c, 0x95, 0x2d, 0xfd, 0x59, 0x83, 0x6e, 0xdf, 0x35,
    +	0xa2, 0xd3, 0x62, 0xee, 0xab, 0x0c, 0x53, 0xa3, 0x99, 0x2f, 0x6a, 0xc2, 0x28, 0x15, 0xb1, 0x22,
    +	0x0f, 0xc3, 0xe6, 0x91, 0xdf, 0xee, 0xa4, 0x23, 0x4f, 0x34, 0x9c, 0x11, 0x35, 0x02, 0x63, 0xe7,
    +	0xa1, 0x66, 0x54, 0x42, 0xc7, 0x94, 0xaf, 0x02, 0x26, 0xc4, 0x79, 0x58, 0x59, 0x16, 0x34, 0x1c,
    +	0x73, 0x2b, 0xb5, 0x8f, 0x3e, 0x9d, 0x3f, 0xf6, 0xf1, 0xa7, 0xf3, 0xc7, 0x3e, 0xf9, 0x74, 0xfe,
    +	0xd8, 0xb7, 0xda, 0xf3, 0xda, 0x47, 0xed, 0x79, 0xed, 0xe3, 0xf6, 0xbc, 0xf6, 0x49, 0x7b, 0x5e,
    +	0xfb, 0x7b, 0x7b, 0x5e, 0xfb, 0xf1, 0x3f, 0xe6, 0x8f, 0x7d, 0xed, 0xf9, 0x23, 0xfd, 0x2b, 0xc1,
    +	0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xe3, 0x03, 0xa1, 0x8a, 0x30, 0x00, 0x00,
     }
     
     func (m *ConversionRequest) Marshal() (dAtA []byte, err error) {
    @@ -1467,6 +1498,20 @@ func (m *CustomResourceDefinitionSpec) MarshalToSizedBuffer(dAtA []byte) (int, e
     	_ = i
     	var l int
     	_ = l
    +	if len(m.SelectableFields) > 0 {
    +		for iNdEx := len(m.SelectableFields) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.SelectableFields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x5a
    +		}
    +	}
     	if m.PreserveUnknownFields != nil {
     		i--
     		if *m.PreserveUnknownFields {
    @@ -1645,6 +1690,20 @@ func (m *CustomResourceDefinitionVersion) MarshalToSizedBuffer(dAtA []byte) (int
     	_ = i
     	var l int
     	_ = l
    +	if len(m.SelectableFields) > 0 {
    +		for iNdEx := len(m.SelectableFields) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.SelectableFields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x4a
    +		}
    +	}
     	if m.DeprecationWarning != nil {
     		i -= len(*m.DeprecationWarning)
     		copy(dAtA[i:], *m.DeprecationWarning)
    @@ -2597,6 +2656,34 @@ func (m *JSONSchemaPropsOrStringArray) MarshalToSizedBuffer(dAtA []byte) (int, e
     	return len(dAtA) - i, nil
     }
     
    +func (m *SelectableField) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *SelectableField) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *SelectableField) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.JSONPath)
    +	copy(dAtA[i:], m.JSONPath)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.JSONPath)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *ServiceReference) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -2979,6 +3066,12 @@ func (m *CustomResourceDefinitionSpec) Size() (n int) {
     	if m.PreserveUnknownFields != nil {
     		n += 2
     	}
    +	if len(m.SelectableFields) > 0 {
    +		for _, e := range m.SelectableFields {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
     	return n
     }
     
    @@ -3034,6 +3127,12 @@ func (m *CustomResourceDefinitionVersion) Size() (n int) {
     		l = len(*m.DeprecationWarning)
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if len(m.SelectableFields) > 0 {
    +		for _, e := range m.SelectableFields {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
     	return n
     }
     
    @@ -3348,6 +3447,17 @@ func (m *JSONSchemaPropsOrStringArray) Size() (n int) {
     	return n
     }
     
    +func (m *SelectableField) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.JSONPath)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
     func (m *ServiceReference) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -3562,6 +3672,11 @@ func (this *CustomResourceDefinitionSpec) String() string {
     		repeatedStringForAdditionalPrinterColumns += strings.Replace(strings.Replace(f.String(), "CustomResourceColumnDefinition", "CustomResourceColumnDefinition", 1), `&`, ``, 1) + ","
     	}
     	repeatedStringForAdditionalPrinterColumns += "}"
    +	repeatedStringForSelectableFields := "[]SelectableField{"
    +	for _, f := range this.SelectableFields {
    +		repeatedStringForSelectableFields += strings.Replace(strings.Replace(f.String(), "SelectableField", "SelectableField", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSelectableFields += "}"
     	s := strings.Join([]string{`&CustomResourceDefinitionSpec{`,
     		`Group:` + fmt.Sprintf("%v", this.Group) + `,`,
     		`Version:` + fmt.Sprintf("%v", this.Version) + `,`,
    @@ -3573,6 +3688,7 @@ func (this *CustomResourceDefinitionSpec) String() string {
     		`AdditionalPrinterColumns:` + repeatedStringForAdditionalPrinterColumns + `,`,
     		`Conversion:` + strings.Replace(this.Conversion.String(), "CustomResourceConversion", "CustomResourceConversion", 1) + `,`,
     		`PreserveUnknownFields:` + valueToStringGenerated(this.PreserveUnknownFields) + `,`,
    +		`SelectableFields:` + repeatedStringForSelectableFields + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -3603,6 +3719,11 @@ func (this *CustomResourceDefinitionVersion) String() string {
     		repeatedStringForAdditionalPrinterColumns += strings.Replace(strings.Replace(f.String(), "CustomResourceColumnDefinition", "CustomResourceColumnDefinition", 1), `&`, ``, 1) + ","
     	}
     	repeatedStringForAdditionalPrinterColumns += "}"
    +	repeatedStringForSelectableFields := "[]SelectableField{"
    +	for _, f := range this.SelectableFields {
    +		repeatedStringForSelectableFields += strings.Replace(strings.Replace(f.String(), "SelectableField", "SelectableField", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSelectableFields += "}"
     	s := strings.Join([]string{`&CustomResourceDefinitionVersion{`,
     		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
     		`Served:` + fmt.Sprintf("%v", this.Served) + `,`,
    @@ -3612,6 +3733,7 @@ func (this *CustomResourceDefinitionVersion) String() string {
     		`AdditionalPrinterColumns:` + repeatedStringForAdditionalPrinterColumns + `,`,
     		`Deprecated:` + fmt.Sprintf("%v", this.Deprecated) + `,`,
     		`DeprecationWarning:` + valueToStringGenerated(this.DeprecationWarning) + `,`,
    +		`SelectableFields:` + repeatedStringForSelectableFields + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -3835,6 +3957,16 @@ func (this *JSONSchemaPropsOrStringArray) String() string {
     	}, "")
     	return s
     }
    +func (this *SelectableField) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&SelectableField{`,
    +		`JSONPath:` + fmt.Sprintf("%v", this.JSONPath) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *ServiceReference) String() string {
     	if this == nil {
     		return "nil"
    @@ -5755,6 +5887,40 @@ func (m *CustomResourceDefinitionSpec) Unmarshal(dAtA []byte) error {
     			}
     			b := bool(v != 0)
     			m.PreserveUnknownFields = &b
    +		case 11:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SelectableFields", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.SelectableFields = append(m.SelectableFields, SelectableField{})
    +			if err := m.SelectableFields[len(m.SelectableFields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -6185,6 +6351,40 @@ func (m *CustomResourceDefinitionVersion) Unmarshal(dAtA []byte) error {
     			s := string(dAtA[iNdEx:postIndex])
     			m.DeprecationWarning = &s
     			iNdEx = postIndex
    +		case 9:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SelectableFields", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.SelectableFields = append(m.SelectableFields, SelectableField{})
    +			if err := m.SelectableFields[len(m.SelectableFields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -8825,6 +9025,88 @@ func (m *JSONSchemaPropsOrStringArray) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *SelectableField) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: SelectableField: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: SelectableField: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field JSONPath", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.JSONPath = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func (m *ServiceReference) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto
    index b8477322b705..f9e5600345ab 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto
    @@ -40,7 +40,8 @@ message ConversionRequest {
       optional string desiredAPIVersion = 2;
     
       // objects is the list of custom resource objects to be converted.
    -  repeated k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;
    +  // +listType=atomic
    +  repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;
     }
     
     // ConversionResponse describes a conversion response.
    @@ -53,14 +54,15 @@ message ConversionResponse {
       // The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       // must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       // The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
    -  repeated k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;
    +  // +listType=atomic
    +  repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;
     
       // result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       // the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       // conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       // `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       // will be used to construct an error message for the end user.
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;
     }
     
     // ConversionReview describes a conversion request/response.
    @@ -125,6 +127,7 @@ message CustomResourceConversion {
       // include any versions known to the API Server, calls to the webhook will fail.
       // Defaults to `["v1beta1"]`.
       // +optional
    +  // +listType=atomic
       repeated string conversionReviewVersions = 3;
     }
     
    @@ -135,7 +138,7 @@ message CustomResourceDefinition {
       // Standard object's metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
     
       // spec describes how the user wants the resources to appear
       optional CustomResourceDefinitionSpec spec = 2;
    @@ -156,7 +159,7 @@ message CustomResourceDefinitionCondition {
     
       // lastTransitionTime last time the condition transitioned from one status to another.
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
     
       // reason is a unique, one-word, CamelCase reason for the condition's last transition.
       // +optional
    @@ -172,7 +175,7 @@ message CustomResourceDefinitionList {
       // Standard object's metadata
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
     
       // items list individual CustomResourceDefinition objects
       repeated CustomResourceDefinition items = 2;
    @@ -194,6 +197,7 @@ message CustomResourceDefinitionNames {
       // and used by clients to support invocations like `kubectl get `.
       // It must be all lowercase.
       // +optional
    +  // +listType=atomic
       repeated string shortNames = 3;
     
       // kind is the serialized kind of the resource. It is normally CamelCase and singular.
    @@ -208,6 +212,7 @@ message CustomResourceDefinitionNames {
       // This is published in API discovery documents, and used by clients to support invocations like
       // `kubectl get all`.
       // +optional
    +  // +listType=atomic
       repeated string categories = 6;
     }
     
    @@ -256,6 +261,7 @@ message CustomResourceDefinitionSpec {
       // major version, then minor version. An example sorted list of versions:
       // v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       // +optional
    +  // +listType=atomic
       repeated CustomResourceDefinitionVersion versions = 7;
     
       // additionalPrinterColumns specifies additional columns returned in Table output.
    @@ -264,8 +270,17 @@ message CustomResourceDefinitionSpec {
       // Top-level and per-version columns are mutually exclusive.
       // If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       // +optional
    +  // +listType=atomic
       repeated CustomResourceColumnDefinition additionalPrinterColumns = 8;
     
    +  // selectableFields specifies paths to fields that may be used as field selectors.
    +  // See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
    +  //
    +  // +featureGate=CustomResourceFieldSelectors
    +  // +optional
    +  // +listType=atomic
    +  repeated SelectableField selectableFields = 11;
    +
       // conversion defines conversion settings for the CRD.
       // +optional
       optional CustomResourceConversion conversion = 9;
    @@ -302,6 +317,7 @@ message CustomResourceDefinitionStatus {
       // versions from this list.
       // Versions may not be removed from `spec.versions` while they exist in this list.
       // +optional
    +  // +listType=atomic
       repeated string storedVersions = 3;
     }
     
    @@ -349,7 +365,16 @@ message CustomResourceDefinitionVersion {
       // Per-version columns must not all be set to identical values (top-level columns should be used instead).
       // If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       // +optional
    +  // +listType=atomic
       repeated CustomResourceColumnDefinition additionalPrinterColumns = 6;
    +
    +  // selectableFields specifies paths to fields that may be used as field selectors.
    +  // See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
    +  //
    +  // +featureGate=CustomResourceFieldSelectors
    +  // +optional
    +  // +listType=atomic
    +  repeated SelectableField selectableFields = 9;
     }
     
     // CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.
    @@ -491,20 +516,25 @@ message JSONSchemaProps {
     
       optional double multipleOf = 19;
     
    +  // +listType=atomic
       repeated JSON enum = 20;
     
       optional int64 maxProperties = 21;
     
       optional int64 minProperties = 22;
     
    +  // +listType=atomic
       repeated string required = 23;
     
       optional JSONSchemaPropsOrArray items = 24;
     
    +  // +listType=atomic
       repeated JSONSchemaProps allOf = 25;
     
    +  // +listType=atomic
       repeated JSONSchemaProps oneOf = 26;
     
    +  // +listType=atomic
       repeated JSONSchemaProps anyOf = 27;
     
       optional JSONSchemaProps not = 28;
    @@ -570,6 +600,7 @@ message JSONSchemaProps {
       // to ensure those properties are present for all list items.
       //
       // +optional
    +  // +listType=atomic
       repeated string xKubernetesListMapKeys = 41;
     
       // x-kubernetes-list-type annotates an array to further describe its topology.
    @@ -603,7 +634,6 @@ message JSONSchemaProps {
       optional string xKubernetesMapType = 43;
     
       // x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
    -  // This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       // +patchMergeKey=rule
       // +patchStrategy=merge
       // +listType=map
    @@ -616,6 +646,7 @@ message JSONSchemaProps {
     message JSONSchemaPropsOrArray {
       optional JSONSchemaProps schema = 1;
     
    +  // +listType=atomic
       repeated JSONSchemaProps jSONSchemas = 2;
     }
     
    @@ -631,9 +662,23 @@ message JSONSchemaPropsOrBool {
     message JSONSchemaPropsOrStringArray {
       optional JSONSchemaProps schema = 1;
     
    +  // +listType=atomic
       repeated string property = 2;
     }
     
    +// SelectableField specifies the JSON path of a field that may be used with field selectors.
    +message SelectableField {
    +  // jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
    +  // field selector value.
    +  // Only JSON paths without the array notation are allowed.
    +  // Must point to a field of type string, boolean or integer. Types with enum values
    +  // and strings with formats are allowed.
    +  // If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
    +  // Must not point to metdata fields.
    +  // Required.
    +  optional string jsonPath = 1;
    +}
    +
     // ServiceReference holds a reference to Service.legacy.k8s.io
     message ServiceReference {
       // namespace is the namespace of the service.
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal.go
    index 44941d82efff..5e6e8253295a 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal.go
    @@ -20,12 +20,40 @@ import (
     	"bytes"
     	"errors"
     
    +	cbor "k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct"
     	"k8s.io/apimachinery/pkg/util/json"
     )
     
     var jsTrue = []byte("true")
     var jsFalse = []byte("false")
     
    +// The CBOR parsing related constants and functions below are not exported so they can be
    +// easily removed at a future date when the CBOR library provides equivalent functionality.
    +
    +type cborMajorType int
    +
    +const (
    +	// https://www.rfc-editor.org/rfc/rfc8949.html#section-3.1
    +	cborUnsignedInteger cborMajorType = 0
    +	cborNegativeInteger cborMajorType = 1
    +	cborByteString      cborMajorType = 2
    +	cborTextString      cborMajorType = 3
    +	cborArray           cborMajorType = 4
    +	cborMap             cborMajorType = 5
    +	cborTag             cborMajorType = 6
    +	cborOther           cborMajorType = 7
    +)
    +
    +const (
    +	cborFalseValue = 0xf4
    +	cborTrueValue  = 0xf5
    +	cborNullValue  = 0xf6
    +)
    +
    +func cborType(b byte) cborMajorType {
    +	return cborMajorType(b >> 5)
    +}
    +
     func (s JSONSchemaPropsOrBool) MarshalJSON() ([]byte, error) {
     	if s.Schema != nil {
     		return json.Marshal(s.Schema)
    @@ -59,6 +87,39 @@ func (s *JSONSchemaPropsOrBool) UnmarshalJSON(data []byte) error {
     	return nil
     }
     
    +func (s JSONSchemaPropsOrBool) MarshalCBOR() ([]byte, error) {
    +	if s.Schema != nil {
    +		return cbor.Marshal(s.Schema)
    +	}
    +	return cbor.Marshal(s.Allows)
    +}
    +
    +func (s *JSONSchemaPropsOrBool) UnmarshalCBOR(data []byte) error {
    +	switch {
    +	case len(data) == 0:
    +		// ideally we would avoid modifying *s here, but we are matching the behavior of UnmarshalJSON
    +		*s = JSONSchemaPropsOrBool{}
    +		return nil
    +	case cborType(data[0]) == cborMap:
    +		var p JSONSchemaProps
    +		if err := cbor.Unmarshal(data, &p); err != nil {
    +			return err
    +		}
    +		*s = JSONSchemaPropsOrBool{Allows: true, Schema: &p}
    +		return nil
    +	case data[0] == cborTrueValue:
    +		*s = JSONSchemaPropsOrBool{Allows: true}
    +		return nil
    +	case data[0] == cborFalseValue:
    +		*s = JSONSchemaPropsOrBool{Allows: false}
    +		return nil
    +	default:
    +		// ideally, this case would not also capture a null input value,
    +		// but we are matching the behavior of the UnmarshalJSON
    +		return errors.New("boolean or JSON schema expected")
    +	}
    +}
    +
     func (s JSONSchemaPropsOrStringArray) MarshalJSON() ([]byte, error) {
     	if len(s.Property) > 0 {
     		return json.Marshal(s.Property)
    @@ -91,6 +152,40 @@ func (s *JSONSchemaPropsOrStringArray) UnmarshalJSON(data []byte) error {
     	return nil
     }
     
    +func (s JSONSchemaPropsOrStringArray) MarshalCBOR() ([]byte, error) {
    +	if len(s.Property) > 0 {
    +		return cbor.Marshal(s.Property)
    +	}
    +	if s.Schema != nil {
    +		return cbor.Marshal(s.Schema)
    +	}
    +	return cbor.Marshal(nil)
    +}
    +
    +func (s *JSONSchemaPropsOrStringArray) UnmarshalCBOR(data []byte) error {
    +	if len(data) > 0 && cborType(data[0]) == cborArray {
    +		var a []string
    +		if err := cbor.Unmarshal(data, &a); err != nil {
    +			return err
    +		}
    +		*s = JSONSchemaPropsOrStringArray{Property: a}
    +		return nil
    +	}
    +	if len(data) > 0 && cborType(data[0]) == cborMap {
    +		var p JSONSchemaProps
    +		if err := cbor.Unmarshal(data, &p); err != nil {
    +			return err
    +		}
    +		*s = JSONSchemaPropsOrStringArray{Schema: &p}
    +		return nil
    +	}
    +	// At this point we either have: empty data, a null value, or an
    +	// unexpected type. In order to match the behavior of the existing
    +	// UnmarshalJSON, no error is returned and *s is overwritten here.
    +	*s = JSONSchemaPropsOrStringArray{}
    +	return nil
    +}
    +
     func (s JSONSchemaPropsOrArray) MarshalJSON() ([]byte, error) {
     	if len(s.JSONSchemas) > 0 {
     		return json.Marshal(s.JSONSchemas)
    @@ -120,6 +215,37 @@ func (s *JSONSchemaPropsOrArray) UnmarshalJSON(data []byte) error {
     	return nil
     }
     
    +func (s JSONSchemaPropsOrArray) MarshalCBOR() ([]byte, error) {
    +	if len(s.JSONSchemas) > 0 {
    +		return cbor.Marshal(s.JSONSchemas)
    +	}
    +	return cbor.Marshal(s.Schema)
    +}
    +
    +func (s *JSONSchemaPropsOrArray) UnmarshalCBOR(data []byte) error {
    +	if len(data) > 0 && cborType(data[0]) == cborMap {
    +		var p JSONSchemaProps
    +		if err := cbor.Unmarshal(data, &p); err != nil {
    +			return err
    +		}
    +		*s = JSONSchemaPropsOrArray{Schema: &p}
    +		return nil
    +	}
    +	if len(data) > 0 && cborType(data[0]) == cborArray {
    +		var a []JSONSchemaProps
    +		if err := cbor.Unmarshal(data, &a); err != nil {
    +			return err
    +		}
    +		*s = JSONSchemaPropsOrArray{JSONSchemas: a}
    +		return nil
    +	}
    +	// At this point we either have: empty data, a null value, or an
    +	// unexpected type. In order to match the behavior of the existing
    +	// UnmarshalJSON, no error is returned and *s is overwritten here.
    +	*s = JSONSchemaPropsOrArray{}
    +	return nil
    +}
    +
     func (s JSON) MarshalJSON() ([]byte, error) {
     	if len(s.Raw) > 0 {
     		return s.Raw, nil
    @@ -130,7 +256,38 @@ func (s JSON) MarshalJSON() ([]byte, error) {
     
     func (s *JSON) UnmarshalJSON(data []byte) error {
     	if len(data) > 0 && !bytes.Equal(data, nullLiteral) {
    -		s.Raw = data
    +		s.Raw = append(s.Raw[0:0], data...)
    +	}
    +	return nil
    +}
    +
    +func (s JSON) MarshalCBOR() ([]byte, error) {
    +	// Note that non-semantic whitespace is lost during the transcoding performed here.
    +	// We do not forsee this to be a problem given the current known uses of this type.
    +	// Other limitations that arise when roundtripping JSON via dynamic clients also apply
    +	// here, for example: insignificant whitespace handling, number handling, and map key ordering.
    +	if len(s.Raw) == 0 {
    +		return []byte{cborNullValue}, nil
    +	}
    +	var u any
    +	if err := json.Unmarshal(s.Raw, &u); err != nil {
    +		return nil, err
    +	}
    +	return cbor.Marshal(u)
    +}
    +
    +func (s *JSON) UnmarshalCBOR(data []byte) error {
    +	if len(data) == 0 || data[0] == cborNullValue {
    +		return nil
    +	}
    +	var u any
    +	if err := cbor.Unmarshal(data, &u); err != nil {
    +		return err
    +	}
    +	raw, err := json.Marshal(u)
    +	if err != nil {
    +		return err
     	}
    +	s.Raw = raw
     	return nil
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go
    index db445b10d2ba..153f72337758 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go
    @@ -76,6 +76,7 @@ type CustomResourceDefinitionSpec struct {
     	// major version, then minor version. An example sorted list of versions:
     	// v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     	// +optional
    +	// +listType=atomic
     	Versions []CustomResourceDefinitionVersion `json:"versions,omitempty" protobuf:"bytes,7,rep,name=versions"`
     	// additionalPrinterColumns specifies additional columns returned in Table output.
     	// See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
    @@ -83,8 +84,17 @@ type CustomResourceDefinitionSpec struct {
     	// Top-level and per-version columns are mutually exclusive.
     	// If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     	// +optional
    +	// +listType=atomic
     	AdditionalPrinterColumns []CustomResourceColumnDefinition `json:"additionalPrinterColumns,omitempty" protobuf:"bytes,8,rep,name=additionalPrinterColumns"`
     
    +	// selectableFields specifies paths to fields that may be used as field selectors.
    +	// See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
    +	//
    +	// +featureGate=CustomResourceFieldSelectors
    +	// +optional
    +	// +listType=atomic
    +	SelectableFields []SelectableField `json:"selectableFields,omitempty" protobuf:"bytes,11,rep,name=selectableFields"`
    +
     	// conversion defines conversion settings for the CRD.
     	// +optional
     	Conversion *CustomResourceConversion `json:"conversion,omitempty" protobuf:"bytes,9,opt,name=conversion"`
    @@ -122,6 +132,7 @@ type CustomResourceConversion struct {
     	// include any versions known to the API Server, calls to the webhook will fail.
     	// Defaults to `["v1beta1"]`.
     	// +optional
    +	// +listType=atomic
     	ConversionReviewVersions []string `json:"conversionReviewVersions,omitempty" protobuf:"bytes,3,rep,name=conversionReviewVersions"`
     }
     
    @@ -227,7 +238,29 @@ type CustomResourceDefinitionVersion struct {
     	// Per-version columns must not all be set to identical values (top-level columns should be used instead).
     	// If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     	// +optional
    +	// +listType=atomic
     	AdditionalPrinterColumns []CustomResourceColumnDefinition `json:"additionalPrinterColumns,omitempty" protobuf:"bytes,6,rep,name=additionalPrinterColumns"`
    +
    +	// selectableFields specifies paths to fields that may be used as field selectors.
    +	// See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
    +	//
    +	// +featureGate=CustomResourceFieldSelectors
    +	// +optional
    +	// +listType=atomic
    +	SelectableFields []SelectableField `json:"selectableFields,omitempty" protobuf:"bytes,9,rep,name=selectableFields"`
    +}
    +
    +// SelectableField specifies the JSON path of a field that may be used with field selectors.
    +type SelectableField struct {
    +	// jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
    +	// field selector value.
    +	// Only JSON paths without the array notation are allowed.
    +	// Must point to a field of type string, boolean or integer. Types with enum values
    +	// and strings with formats are allowed.
    +	// If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
    +	// Must not point to metdata fields.
    +	// Required.
    +	JSONPath string `json:"jsonPath" protobuf:"bytes,1,opt,name=jsonPath"`
     }
     
     // CustomResourceColumnDefinition specifies a column for server side printing.
    @@ -269,6 +302,7 @@ type CustomResourceDefinitionNames struct {
     	// and used by clients to support invocations like `kubectl get `.
     	// It must be all lowercase.
     	// +optional
    +	// +listType=atomic
     	ShortNames []string `json:"shortNames,omitempty" protobuf:"bytes,3,opt,name=shortNames"`
     	// kind is the serialized kind of the resource. It is normally CamelCase and singular.
     	// Custom resource instances will use this value as the `kind` attribute in API calls.
    @@ -280,6 +314,7 @@ type CustomResourceDefinitionNames struct {
     	// This is published in API discovery documents, and used by clients to support invocations like
     	// `kubectl get all`.
     	// +optional
    +	// +listType=atomic
     	Categories []string `json:"categories,omitempty" protobuf:"bytes,6,rep,name=categories"`
     }
     
    @@ -377,6 +412,7 @@ type CustomResourceDefinitionStatus struct {
     	// versions from this list.
     	// Versions may not be removed from `spec.versions` while they exist in this list.
     	// +optional
    +	// +listType=atomic
     	StoredVersions []string `json:"storedVersions" protobuf:"bytes,3,rep,name=storedVersions"`
     }
     
    @@ -509,6 +545,7 @@ type ConversionRequest struct {
     	// desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
     	DesiredAPIVersion string `json:"desiredAPIVersion" protobuf:"bytes,2,name=desiredAPIVersion"`
     	// objects is the list of custom resource objects to be converted.
    +	// +listType=atomic
     	Objects []runtime.RawExtension `json:"objects" protobuf:"bytes,3,rep,name=objects"`
     }
     
    @@ -521,6 +558,7 @@ type ConversionResponse struct {
     	// The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     	// must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     	// The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
    +	// +listType=atomic
     	ConvertedObjects []runtime.RawExtension `json:"convertedObjects" protobuf:"bytes,2,rep,name=convertedObjects"`
     	// result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
     	// the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go
    index 24c45bb04ebd..3ed584dd9dea 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go
    @@ -76,25 +76,30 @@ type JSONSchemaProps struct {
     	// default is a default value for undefined object fields.
     	// Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
     	// CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
    -	Default              *JSON                      `json:"default,omitempty" protobuf:"bytes,8,opt,name=default"`
    -	Maximum              *float64                   `json:"maximum,omitempty" protobuf:"bytes,9,opt,name=maximum"`
    -	ExclusiveMaximum     bool                       `json:"exclusiveMaximum,omitempty" protobuf:"bytes,10,opt,name=exclusiveMaximum"`
    -	Minimum              *float64                   `json:"minimum,omitempty" protobuf:"bytes,11,opt,name=minimum"`
    -	ExclusiveMinimum     bool                       `json:"exclusiveMinimum,omitempty" protobuf:"bytes,12,opt,name=exclusiveMinimum"`
    -	MaxLength            *int64                     `json:"maxLength,omitempty" protobuf:"bytes,13,opt,name=maxLength"`
    -	MinLength            *int64                     `json:"minLength,omitempty" protobuf:"bytes,14,opt,name=minLength"`
    -	Pattern              string                     `json:"pattern,omitempty" protobuf:"bytes,15,opt,name=pattern"`
    -	MaxItems             *int64                     `json:"maxItems,omitempty" protobuf:"bytes,16,opt,name=maxItems"`
    -	MinItems             *int64                     `json:"minItems,omitempty" protobuf:"bytes,17,opt,name=minItems"`
    -	UniqueItems          bool                       `json:"uniqueItems,omitempty" protobuf:"bytes,18,opt,name=uniqueItems"`
    -	MultipleOf           *float64                   `json:"multipleOf,omitempty" protobuf:"bytes,19,opt,name=multipleOf"`
    -	Enum                 []JSON                     `json:"enum,omitempty" protobuf:"bytes,20,rep,name=enum"`
    -	MaxProperties        *int64                     `json:"maxProperties,omitempty" protobuf:"bytes,21,opt,name=maxProperties"`
    -	MinProperties        *int64                     `json:"minProperties,omitempty" protobuf:"bytes,22,opt,name=minProperties"`
    -	Required             []string                   `json:"required,omitempty" protobuf:"bytes,23,rep,name=required"`
    -	Items                *JSONSchemaPropsOrArray    `json:"items,omitempty" protobuf:"bytes,24,opt,name=items"`
    -	AllOf                []JSONSchemaProps          `json:"allOf,omitempty" protobuf:"bytes,25,rep,name=allOf"`
    -	OneOf                []JSONSchemaProps          `json:"oneOf,omitempty" protobuf:"bytes,26,rep,name=oneOf"`
    +	Default          *JSON    `json:"default,omitempty" protobuf:"bytes,8,opt,name=default"`
    +	Maximum          *float64 `json:"maximum,omitempty" protobuf:"bytes,9,opt,name=maximum"`
    +	ExclusiveMaximum bool     `json:"exclusiveMaximum,omitempty" protobuf:"bytes,10,opt,name=exclusiveMaximum"`
    +	Minimum          *float64 `json:"minimum,omitempty" protobuf:"bytes,11,opt,name=minimum"`
    +	ExclusiveMinimum bool     `json:"exclusiveMinimum,omitempty" protobuf:"bytes,12,opt,name=exclusiveMinimum"`
    +	MaxLength        *int64   `json:"maxLength,omitempty" protobuf:"bytes,13,opt,name=maxLength"`
    +	MinLength        *int64   `json:"minLength,omitempty" protobuf:"bytes,14,opt,name=minLength"`
    +	Pattern          string   `json:"pattern,omitempty" protobuf:"bytes,15,opt,name=pattern"`
    +	MaxItems         *int64   `json:"maxItems,omitempty" protobuf:"bytes,16,opt,name=maxItems"`
    +	MinItems         *int64   `json:"minItems,omitempty" protobuf:"bytes,17,opt,name=minItems"`
    +	UniqueItems      bool     `json:"uniqueItems,omitempty" protobuf:"bytes,18,opt,name=uniqueItems"`
    +	MultipleOf       *float64 `json:"multipleOf,omitempty" protobuf:"bytes,19,opt,name=multipleOf"`
    +	// +listType=atomic
    +	Enum          []JSON `json:"enum,omitempty" protobuf:"bytes,20,rep,name=enum"`
    +	MaxProperties *int64 `json:"maxProperties,omitempty" protobuf:"bytes,21,opt,name=maxProperties"`
    +	MinProperties *int64 `json:"minProperties,omitempty" protobuf:"bytes,22,opt,name=minProperties"`
    +	// +listType=atomic
    +	Required []string                `json:"required,omitempty" protobuf:"bytes,23,rep,name=required"`
    +	Items    *JSONSchemaPropsOrArray `json:"items,omitempty" protobuf:"bytes,24,opt,name=items"`
    +	// +listType=atomic
    +	AllOf []JSONSchemaProps `json:"allOf,omitempty" protobuf:"bytes,25,rep,name=allOf"`
    +	// +listType=atomic
    +	OneOf []JSONSchemaProps `json:"oneOf,omitempty" protobuf:"bytes,26,rep,name=oneOf"`
    +	// +listType=atomic
     	AnyOf                []JSONSchemaProps          `json:"anyOf,omitempty" protobuf:"bytes,27,rep,name=anyOf"`
     	Not                  *JSONSchemaProps           `json:"not,omitempty" protobuf:"bytes,28,opt,name=not"`
     	Properties           map[string]JSONSchemaProps `json:"properties,omitempty" protobuf:"bytes,29,rep,name=properties"`
    @@ -150,6 +155,7 @@ type JSONSchemaProps struct {
     	// to ensure those properties are present for all list items.
     	//
     	// +optional
    +	// +listType=atomic
     	XListMapKeys []string `json:"x-kubernetes-list-map-keys,omitempty" protobuf:"bytes,41,rep,name=xKubernetesListMapKeys"`
     
     	// x-kubernetes-list-type annotates an array to further describe its topology.
    @@ -183,7 +189,6 @@ type JSONSchemaProps struct {
     	XMapType *string `json:"x-kubernetes-map-type,omitempty" protobuf:"bytes,43,opt,name=xKubernetesMapType"`
     
     	// x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
    -	// This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     	// +patchMergeKey=rule
     	// +patchStrategy=merge
     	// +listType=map
    @@ -343,7 +348,8 @@ type JSONSchemaURL string
     // JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps
     // or an array of JSONSchemaProps. Mainly here for serialization purposes.
     type JSONSchemaPropsOrArray struct {
    -	Schema      *JSONSchemaProps  `protobuf:"bytes,1,opt,name=schema"`
    +	Schema *JSONSchemaProps `protobuf:"bytes,1,opt,name=schema"`
    +	// +listType=atomic
     	JSONSchemas []JSONSchemaProps `protobuf:"bytes,2,rep,name=jSONSchemas"`
     }
     
    @@ -385,8 +391,9 @@ type JSONSchemaDependencies map[string]JSONSchemaPropsOrStringArray
     
     // JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.
     type JSONSchemaPropsOrStringArray struct {
    -	Schema   *JSONSchemaProps `protobuf:"bytes,1,opt,name=schema"`
    -	Property []string         `protobuf:"bytes,2,rep,name=property"`
    +	Schema *JSONSchemaProps `protobuf:"bytes,1,opt,name=schema"`
    +	// +listType=atomic
    +	Property []string `protobuf:"bytes,2,rep,name=property"`
     }
     
     // OpenAPISchemaType is used by the kube-openapi generator when constructing
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go
    index fa6e0ef24e75..d59274e8da6c 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go
    @@ -212,6 +212,16 @@ func RegisterConversions(s *runtime.Scheme) error {
     	}); err != nil {
     		return err
     	}
    +	if err := s.AddGeneratedConversionFunc((*SelectableField)(nil), (*apiextensions.SelectableField)(nil), func(a, b interface{}, scope conversion.Scope) error {
    +		return Convert_v1beta1_SelectableField_To_apiextensions_SelectableField(a.(*SelectableField), b.(*apiextensions.SelectableField), scope)
    +	}); err != nil {
    +		return err
    +	}
    +	if err := s.AddGeneratedConversionFunc((*apiextensions.SelectableField)(nil), (*SelectableField)(nil), func(a, b interface{}, scope conversion.Scope) error {
    +		return Convert_apiextensions_SelectableField_To_v1beta1_SelectableField(a.(*apiextensions.SelectableField), b.(*SelectableField), scope)
    +	}); err != nil {
    +		return err
    +	}
     	if err := s.AddGeneratedConversionFunc((*ServiceReference)(nil), (*apiextensions.ServiceReference)(nil), func(a, b interface{}, scope conversion.Scope) error {
     		return Convert_v1beta1_ServiceReference_To_apiextensions_ServiceReference(a.(*ServiceReference), b.(*apiextensions.ServiceReference), scope)
     	}); err != nil {
    @@ -491,6 +501,7 @@ func autoConvert_v1beta1_CustomResourceDefinitionSpec_To_apiextensions_CustomRes
     		out.Versions = nil
     	}
     	out.AdditionalPrinterColumns = *(*[]apiextensions.CustomResourceColumnDefinition)(unsafe.Pointer(&in.AdditionalPrinterColumns))
    +	out.SelectableFields = *(*[]apiextensions.SelectableField)(unsafe.Pointer(&in.SelectableFields))
     	if in.Conversion != nil {
     		in, out := &in.Conversion, &out.Conversion
     		*out = new(apiextensions.CustomResourceConversion)
    @@ -538,6 +549,7 @@ func autoConvert_apiextensions_CustomResourceDefinitionSpec_To_v1beta1_CustomRes
     		out.Versions = nil
     	}
     	out.AdditionalPrinterColumns = *(*[]CustomResourceColumnDefinition)(unsafe.Pointer(&in.AdditionalPrinterColumns))
    +	out.SelectableFields = *(*[]SelectableField)(unsafe.Pointer(&in.SelectableFields))
     	if in.Conversion != nil {
     		in, out := &in.Conversion, &out.Conversion
     		*out = new(CustomResourceConversion)
    @@ -601,6 +613,7 @@ func autoConvert_v1beta1_CustomResourceDefinitionVersion_To_apiextensions_Custom
     	}
     	out.Subresources = (*apiextensions.CustomResourceSubresources)(unsafe.Pointer(in.Subresources))
     	out.AdditionalPrinterColumns = *(*[]apiextensions.CustomResourceColumnDefinition)(unsafe.Pointer(&in.AdditionalPrinterColumns))
    +	out.SelectableFields = *(*[]apiextensions.SelectableField)(unsafe.Pointer(&in.SelectableFields))
     	return nil
     }
     
    @@ -626,6 +639,7 @@ func autoConvert_apiextensions_CustomResourceDefinitionVersion_To_v1beta1_Custom
     	}
     	out.Subresources = (*CustomResourceSubresources)(unsafe.Pointer(in.Subresources))
     	out.AdditionalPrinterColumns = *(*[]CustomResourceColumnDefinition)(unsafe.Pointer(&in.AdditionalPrinterColumns))
    +	out.SelectableFields = *(*[]SelectableField)(unsafe.Pointer(&in.SelectableFields))
     	return nil
     }
     
    @@ -1273,6 +1287,26 @@ func Convert_apiextensions_JSONSchemaPropsOrStringArray_To_v1beta1_JSONSchemaPro
     	return autoConvert_apiextensions_JSONSchemaPropsOrStringArray_To_v1beta1_JSONSchemaPropsOrStringArray(in, out, s)
     }
     
    +func autoConvert_v1beta1_SelectableField_To_apiextensions_SelectableField(in *SelectableField, out *apiextensions.SelectableField, s conversion.Scope) error {
    +	out.JSONPath = in.JSONPath
    +	return nil
    +}
    +
    +// Convert_v1beta1_SelectableField_To_apiextensions_SelectableField is an autogenerated conversion function.
    +func Convert_v1beta1_SelectableField_To_apiextensions_SelectableField(in *SelectableField, out *apiextensions.SelectableField, s conversion.Scope) error {
    +	return autoConvert_v1beta1_SelectableField_To_apiextensions_SelectableField(in, out, s)
    +}
    +
    +func autoConvert_apiextensions_SelectableField_To_v1beta1_SelectableField(in *apiextensions.SelectableField, out *SelectableField, s conversion.Scope) error {
    +	out.JSONPath = in.JSONPath
    +	return nil
    +}
    +
    +// Convert_apiextensions_SelectableField_To_v1beta1_SelectableField is an autogenerated conversion function.
    +func Convert_apiextensions_SelectableField_To_v1beta1_SelectableField(in *apiextensions.SelectableField, out *SelectableField, s conversion.Scope) error {
    +	return autoConvert_apiextensions_SelectableField_To_v1beta1_SelectableField(in, out, s)
    +}
    +
     func autoConvert_v1beta1_ServiceReference_To_apiextensions_ServiceReference(in *ServiceReference, out *apiextensions.ServiceReference, s conversion.Scope) error {
     	out.Namespace = in.Namespace
     	out.Name = in.Name
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go
    index bb8ab06cb959..18740925c351 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go
    @@ -279,6 +279,11 @@ func (in *CustomResourceDefinitionSpec) DeepCopyInto(out *CustomResourceDefiniti
     		*out = make([]CustomResourceColumnDefinition, len(*in))
     		copy(*out, *in)
     	}
    +	if in.SelectableFields != nil {
    +		in, out := &in.SelectableFields, &out.SelectableFields
    +		*out = make([]SelectableField, len(*in))
    +		copy(*out, *in)
    +	}
     	if in.Conversion != nil {
     		in, out := &in.Conversion, &out.Conversion
     		*out = new(CustomResourceConversion)
    @@ -354,6 +359,11 @@ func (in *CustomResourceDefinitionVersion) DeepCopyInto(out *CustomResourceDefin
     		*out = make([]CustomResourceColumnDefinition, len(*in))
     		copy(*out, *in)
     	}
    +	if in.SelectableFields != nil {
    +		in, out := &in.SelectableFields, &out.SelectableFields
    +		*out = make([]SelectableField, len(*in))
    +		copy(*out, *in)
    +	}
     	return
     }
     
    @@ -610,6 +620,22 @@ func (in *JSONSchemaPropsOrStringArray) DeepCopy() *JSONSchemaPropsOrStringArray
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *SelectableField) DeepCopyInto(out *SelectableField) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelectableField.
    +func (in *SelectableField) DeepCopy() *SelectableField {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(SelectableField)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *ServiceReference) DeepCopyInto(out *ServiceReference) {
     	*out = *in
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go
    index b5e5c35c5506..3be35f308587 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go
    @@ -197,6 +197,11 @@ func (in *CustomResourceDefinitionSpec) DeepCopyInto(out *CustomResourceDefiniti
     		*out = make([]CustomResourceColumnDefinition, len(*in))
     		copy(*out, *in)
     	}
    +	if in.SelectableFields != nil {
    +		in, out := &in.SelectableFields, &out.SelectableFields
    +		*out = make([]SelectableField, len(*in))
    +		copy(*out, *in)
    +	}
     	if in.Conversion != nil {
     		in, out := &in.Conversion, &out.Conversion
     		*out = new(CustomResourceConversion)
    @@ -272,6 +277,11 @@ func (in *CustomResourceDefinitionVersion) DeepCopyInto(out *CustomResourceDefin
     		*out = make([]CustomResourceColumnDefinition, len(*in))
     		copy(*out, *in)
     	}
    +	if in.SelectableFields != nil {
    +		in, out := &in.SelectableFields, &out.SelectableFields
    +		*out = make([]SelectableField, len(*in))
    +		copy(*out, *in)
    +	}
     	return
     }
     
    @@ -507,6 +517,22 @@ func (in *JSONSchemaPropsOrStringArray) DeepCopy() *JSONSchemaPropsOrStringArray
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *SelectableField) DeepCopyInto(out *SelectableField) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelectableField.
    +func (in *SelectableField) DeepCopy() *SelectableField {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(SelectableField)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *ServiceReference) DeepCopyInto(out *ServiceReference) {
     	*out = *in
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcecolumndefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcecolumndefinition.go
    index b83de1c419bc..eb77daba353e 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcecolumndefinition.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcecolumndefinition.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CustomResourceColumnDefinitionApplyConfiguration represents an declarative configuration of the CustomResourceColumnDefinition type for use
    +// CustomResourceColumnDefinitionApplyConfiguration represents a declarative configuration of the CustomResourceColumnDefinition type for use
     // with apply.
     type CustomResourceColumnDefinitionApplyConfiguration struct {
     	Name        *string `json:"name,omitempty"`
    @@ -29,7 +29,7 @@ type CustomResourceColumnDefinitionApplyConfiguration struct {
     	JSONPath    *string `json:"jsonPath,omitempty"`
     }
     
    -// CustomResourceColumnDefinitionApplyConfiguration constructs an declarative configuration of the CustomResourceColumnDefinition type for use with
    +// CustomResourceColumnDefinitionApplyConfiguration constructs a declarative configuration of the CustomResourceColumnDefinition type for use with
     // apply.
     func CustomResourceColumnDefinition() *CustomResourceColumnDefinitionApplyConfiguration {
     	return &CustomResourceColumnDefinitionApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourceconversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourceconversion.go
    index 8705d1a219fd..25e43cc00c3c 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourceconversion.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourceconversion.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    +	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
     )
     
    -// CustomResourceConversionApplyConfiguration represents an declarative configuration of the CustomResourceConversion type for use
    +// CustomResourceConversionApplyConfiguration represents a declarative configuration of the CustomResourceConversion type for use
     // with apply.
     type CustomResourceConversionApplyConfiguration struct {
    -	Strategy *v1.ConversionStrategyType           `json:"strategy,omitempty"`
    -	Webhook  *WebhookConversionApplyConfiguration `json:"webhook,omitempty"`
    +	Strategy *apiextensionsv1.ConversionStrategyType `json:"strategy,omitempty"`
    +	Webhook  *WebhookConversionApplyConfiguration    `json:"webhook,omitempty"`
     }
     
    -// CustomResourceConversionApplyConfiguration constructs an declarative configuration of the CustomResourceConversion type for use with
    +// CustomResourceConversionApplyConfiguration constructs a declarative configuration of the CustomResourceConversion type for use with
     // apply.
     func CustomResourceConversion() *CustomResourceConversionApplyConfiguration {
     	return &CustomResourceConversionApplyConfiguration{}
    @@ -38,7 +38,7 @@ func CustomResourceConversion() *CustomResourceConversionApplyConfiguration {
     // WithStrategy sets the Strategy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Strategy field is set to the value of the last call.
    -func (b *CustomResourceConversionApplyConfiguration) WithStrategy(value v1.ConversionStrategyType) *CustomResourceConversionApplyConfiguration {
    +func (b *CustomResourceConversionApplyConfiguration) WithStrategy(value apiextensionsv1.ConversionStrategyType) *CustomResourceConversionApplyConfiguration {
     	b.Strategy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinition.go
    index f6b6edb7fdb8..110620d6518a 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinition.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CustomResourceDefinitionApplyConfiguration represents an declarative configuration of the CustomResourceDefinition type for use
    +// CustomResourceDefinitionApplyConfiguration represents a declarative configuration of the CustomResourceDefinition type for use
     // with apply.
     type CustomResourceDefinitionApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *CustomResourceDefinitionSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *CustomResourceDefinitionStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *CustomResourceDefinitionSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *CustomResourceDefinitionStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// CustomResourceDefinition constructs an declarative configuration of the CustomResourceDefinition type for use with
    +// CustomResourceDefinition constructs a declarative configuration of the CustomResourceDefinition type for use with
     // apply.
     func CustomResourceDefinition(name string) *CustomResourceDefinitionApplyConfiguration {
     	b := &CustomResourceDefinitionApplyConfiguration{}
    @@ -47,7 +47,7 @@ func CustomResourceDefinition(name string) *CustomResourceDefinitionApplyConfigu
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithKind(value string) *CustomResourceDefinitionApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -55,7 +55,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithKind(value string) *Cus
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithAPIVersion(value string) *CustomResourceDefinitionApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -64,7 +64,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithAPIVersion(value string
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithName(value string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -73,7 +73,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithName(value string) *Cus
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithGenerateName(value string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -82,7 +82,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithGenerateName(value stri
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithNamespace(value string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -91,7 +91,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithNamespace(value string)
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithUID(value types.UID) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -100,7 +100,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithUID(value types.UID) *C
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithResourceVersion(value string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -109,25 +109,25 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithResourceVersion(value s
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithGeneration(value int64) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *CustomResourceDefinitionApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CustomResourceDefinitionApplyConfiguration {
    +func (b *CustomResourceDefinitionApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *CustomResourceDefinitionApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CustomResourceDefinitionApplyConfiguration {
    +func (b *CustomResourceDefinitionApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -136,7 +136,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithDeletionTimestamp(value
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -146,11 +146,11 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithDeletionGracePeriodSeco
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CustomResourceDefinitionApplyConfiguration) WithLabels(entries map[string]string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -161,11 +161,11 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithLabels(entries map[stri
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CustomResourceDefinitionApplyConfiguration) WithAnnotations(entries map[string]string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -173,13 +173,13 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithAnnotations(entries map
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *CustomResourceDefinitionApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *CustomResourceDefinitionApplyConfiguration {
    +func (b *CustomResourceDefinitionApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -190,14 +190,14 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithOwnerReferences(values
     func (b *CustomResourceDefinitionApplyConfiguration) WithFinalizers(values ...string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *CustomResourceDefinitionApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -216,3 +216,9 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithStatus(value *CustomRes
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CustomResourceDefinitionApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitioncondition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitioncondition.go
    index 2cf9dd4e50e3..228120520c59 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitioncondition.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitioncondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    +	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// CustomResourceDefinitionConditionApplyConfiguration represents an declarative configuration of the CustomResourceDefinitionCondition type for use
    +// CustomResourceDefinitionConditionApplyConfiguration represents a declarative configuration of the CustomResourceDefinitionCondition type for use
     // with apply.
     type CustomResourceDefinitionConditionApplyConfiguration struct {
    -	Type               *v1.CustomResourceDefinitionConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus                       `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                              `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                   `json:"reason,omitempty"`
    -	Message            *string                                   `json:"message,omitempty"`
    +	Type               *apiextensionsv1.CustomResourceDefinitionConditionType `json:"type,omitempty"`
    +	Status             *apiextensionsv1.ConditionStatus                       `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                                           `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                                `json:"reason,omitempty"`
    +	Message            *string                                                `json:"message,omitempty"`
     }
     
    -// CustomResourceDefinitionConditionApplyConfiguration constructs an declarative configuration of the CustomResourceDefinitionCondition type for use with
    +// CustomResourceDefinitionConditionApplyConfiguration constructs a declarative configuration of the CustomResourceDefinitionCondition type for use with
     // apply.
     func CustomResourceDefinitionCondition() *CustomResourceDefinitionConditionApplyConfiguration {
     	return &CustomResourceDefinitionConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func CustomResourceDefinitionCondition() *CustomResourceDefinitionConditionApply
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *CustomResourceDefinitionConditionApplyConfiguration) WithType(value v1.CustomResourceDefinitionConditionType) *CustomResourceDefinitionConditionApplyConfiguration {
    +func (b *CustomResourceDefinitionConditionApplyConfiguration) WithType(value apiextensionsv1.CustomResourceDefinitionConditionType) *CustomResourceDefinitionConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *CustomResourceDefinitionConditionApplyConfiguration) WithType(value v1.
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *CustomResourceDefinitionConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *CustomResourceDefinitionConditionApplyConfiguration {
    +func (b *CustomResourceDefinitionConditionApplyConfiguration) WithStatus(value apiextensionsv1.ConditionStatus) *CustomResourceDefinitionConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionnames.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionnames.go
    index 06b7a40428db..ca0c02f0e096 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionnames.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionnames.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CustomResourceDefinitionNamesApplyConfiguration represents an declarative configuration of the CustomResourceDefinitionNames type for use
    +// CustomResourceDefinitionNamesApplyConfiguration represents a declarative configuration of the CustomResourceDefinitionNames type for use
     // with apply.
     type CustomResourceDefinitionNamesApplyConfiguration struct {
     	Plural     *string  `json:"plural,omitempty"`
    @@ -29,7 +29,7 @@ type CustomResourceDefinitionNamesApplyConfiguration struct {
     	Categories []string `json:"categories,omitempty"`
     }
     
    -// CustomResourceDefinitionNamesApplyConfiguration constructs an declarative configuration of the CustomResourceDefinitionNames type for use with
    +// CustomResourceDefinitionNamesApplyConfiguration constructs a declarative configuration of the CustomResourceDefinitionNames type for use with
     // apply.
     func CustomResourceDefinitionNames() *CustomResourceDefinitionNamesApplyConfiguration {
     	return &CustomResourceDefinitionNamesApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionspec.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionspec.go
    index 0f52e4b16b93..9d0573f44be2 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionspec.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionspec.go
    @@ -22,7 +22,7 @@ import (
     	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
     )
     
    -// CustomResourceDefinitionSpecApplyConfiguration represents an declarative configuration of the CustomResourceDefinitionSpec type for use
    +// CustomResourceDefinitionSpecApplyConfiguration represents a declarative configuration of the CustomResourceDefinitionSpec type for use
     // with apply.
     type CustomResourceDefinitionSpecApplyConfiguration struct {
     	Group                 *string                                             `json:"group,omitempty"`
    @@ -33,7 +33,7 @@ type CustomResourceDefinitionSpecApplyConfiguration struct {
     	PreserveUnknownFields *bool                                               `json:"preserveUnknownFields,omitempty"`
     }
     
    -// CustomResourceDefinitionSpecApplyConfiguration constructs an declarative configuration of the CustomResourceDefinitionSpec type for use with
    +// CustomResourceDefinitionSpecApplyConfiguration constructs a declarative configuration of the CustomResourceDefinitionSpec type for use with
     // apply.
     func CustomResourceDefinitionSpec() *CustomResourceDefinitionSpecApplyConfiguration {
     	return &CustomResourceDefinitionSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionstatus.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionstatus.go
    index a30fb726bc8c..4fd09be5a0e1 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionstatus.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CustomResourceDefinitionStatusApplyConfiguration represents an declarative configuration of the CustomResourceDefinitionStatus type for use
    +// CustomResourceDefinitionStatusApplyConfiguration represents a declarative configuration of the CustomResourceDefinitionStatus type for use
     // with apply.
     type CustomResourceDefinitionStatusApplyConfiguration struct {
     	Conditions     []CustomResourceDefinitionConditionApplyConfiguration `json:"conditions,omitempty"`
    @@ -26,7 +26,7 @@ type CustomResourceDefinitionStatusApplyConfiguration struct {
     	StoredVersions []string                                              `json:"storedVersions,omitempty"`
     }
     
    -// CustomResourceDefinitionStatusApplyConfiguration constructs an declarative configuration of the CustomResourceDefinitionStatus type for use with
    +// CustomResourceDefinitionStatusApplyConfiguration constructs a declarative configuration of the CustomResourceDefinitionStatus type for use with
     // apply.
     func CustomResourceDefinitionStatus() *CustomResourceDefinitionStatusApplyConfiguration {
     	return &CustomResourceDefinitionStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionversion.go
    index 1019b03e9dc7..f96ba88f467d 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionversion.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionversion.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CustomResourceDefinitionVersionApplyConfiguration represents an declarative configuration of the CustomResourceDefinitionVersion type for use
    +// CustomResourceDefinitionVersionApplyConfiguration represents a declarative configuration of the CustomResourceDefinitionVersion type for use
     // with apply.
     type CustomResourceDefinitionVersionApplyConfiguration struct {
     	Name                     *string                                            `json:"name,omitempty"`
    @@ -29,9 +29,10 @@ type CustomResourceDefinitionVersionApplyConfiguration struct {
     	Schema                   *CustomResourceValidationApplyConfiguration        `json:"schema,omitempty"`
     	Subresources             *CustomResourceSubresourcesApplyConfiguration      `json:"subresources,omitempty"`
     	AdditionalPrinterColumns []CustomResourceColumnDefinitionApplyConfiguration `json:"additionalPrinterColumns,omitempty"`
    +	SelectableFields         []SelectableFieldApplyConfiguration                `json:"selectableFields,omitempty"`
     }
     
    -// CustomResourceDefinitionVersionApplyConfiguration constructs an declarative configuration of the CustomResourceDefinitionVersion type for use with
    +// CustomResourceDefinitionVersionApplyConfiguration constructs a declarative configuration of the CustomResourceDefinitionVersion type for use with
     // apply.
     func CustomResourceDefinitionVersion() *CustomResourceDefinitionVersionApplyConfiguration {
     	return &CustomResourceDefinitionVersionApplyConfiguration{}
    @@ -105,3 +106,16 @@ func (b *CustomResourceDefinitionVersionApplyConfiguration) WithAdditionalPrinte
     	}
     	return b
     }
    +
    +// WithSelectableFields adds the given value to the SelectableFields field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the SelectableFields field.
    +func (b *CustomResourceDefinitionVersionApplyConfiguration) WithSelectableFields(values ...*SelectableFieldApplyConfiguration) *CustomResourceDefinitionVersionApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithSelectableFields")
    +		}
    +		b.SelectableFields = append(b.SelectableFields, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresources.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresources.go
    index e91ede178278..f8d5be3c7f3e 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresources.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresources.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    +	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
     )
     
    -// CustomResourceSubresourcesApplyConfiguration represents an declarative configuration of the CustomResourceSubresources type for use
    +// CustomResourceSubresourcesApplyConfiguration represents a declarative configuration of the CustomResourceSubresources type for use
     // with apply.
     type CustomResourceSubresourcesApplyConfiguration struct {
    -	Status *v1.CustomResourceSubresourceStatus               `json:"status,omitempty"`
    +	Status *apiextensionsv1.CustomResourceSubresourceStatus  `json:"status,omitempty"`
     	Scale  *CustomResourceSubresourceScaleApplyConfiguration `json:"scale,omitempty"`
     }
     
    -// CustomResourceSubresourcesApplyConfiguration constructs an declarative configuration of the CustomResourceSubresources type for use with
    +// CustomResourceSubresourcesApplyConfiguration constructs a declarative configuration of the CustomResourceSubresources type for use with
     // apply.
     func CustomResourceSubresources() *CustomResourceSubresourcesApplyConfiguration {
     	return &CustomResourceSubresourcesApplyConfiguration{}
    @@ -38,7 +38,7 @@ func CustomResourceSubresources() *CustomResourceSubresourcesApplyConfiguration
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *CustomResourceSubresourcesApplyConfiguration) WithStatus(value v1.CustomResourceSubresourceStatus) *CustomResourceSubresourcesApplyConfiguration {
    +func (b *CustomResourceSubresourcesApplyConfiguration) WithStatus(value apiextensionsv1.CustomResourceSubresourceStatus) *CustomResourceSubresourcesApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresourcescale.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresourcescale.go
    index 8159cec2a742..7859675fdd18 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresourcescale.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresourcescale.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CustomResourceSubresourceScaleApplyConfiguration represents an declarative configuration of the CustomResourceSubresourceScale type for use
    +// CustomResourceSubresourceScaleApplyConfiguration represents a declarative configuration of the CustomResourceSubresourceScale type for use
     // with apply.
     type CustomResourceSubresourceScaleApplyConfiguration struct {
     	SpecReplicasPath   *string `json:"specReplicasPath,omitempty"`
    @@ -26,7 +26,7 @@ type CustomResourceSubresourceScaleApplyConfiguration struct {
     	LabelSelectorPath  *string `json:"labelSelectorPath,omitempty"`
     }
     
    -// CustomResourceSubresourceScaleApplyConfiguration constructs an declarative configuration of the CustomResourceSubresourceScale type for use with
    +// CustomResourceSubresourceScaleApplyConfiguration constructs a declarative configuration of the CustomResourceSubresourceScale type for use with
     // apply.
     func CustomResourceSubresourceScale() *CustomResourceSubresourceScaleApplyConfiguration {
     	return &CustomResourceSubresourceScaleApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcevalidation.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcevalidation.go
    index 2e0bcbcb5f7b..6a8cf17d5510 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcevalidation.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcevalidation.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// CustomResourceValidationApplyConfiguration represents an declarative configuration of the CustomResourceValidation type for use
    +// CustomResourceValidationApplyConfiguration represents a declarative configuration of the CustomResourceValidation type for use
     // with apply.
     type CustomResourceValidationApplyConfiguration struct {
     	OpenAPIV3Schema *JSONSchemaPropsApplyConfiguration `json:"openAPIV3Schema,omitempty"`
     }
     
    -// CustomResourceValidationApplyConfiguration constructs an declarative configuration of the CustomResourceValidation type for use with
    +// CustomResourceValidationApplyConfiguration constructs a declarative configuration of the CustomResourceValidation type for use with
     // apply.
     func CustomResourceValidation() *CustomResourceValidationApplyConfiguration {
     	return &CustomResourceValidationApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/externaldocumentation.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/externaldocumentation.go
    index 61856a15cea1..761a957a0257 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/externaldocumentation.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/externaldocumentation.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ExternalDocumentationApplyConfiguration represents an declarative configuration of the ExternalDocumentation type for use
    +// ExternalDocumentationApplyConfiguration represents a declarative configuration of the ExternalDocumentation type for use
     // with apply.
     type ExternalDocumentationApplyConfiguration struct {
     	Description *string `json:"description,omitempty"`
     	URL         *string `json:"url,omitempty"`
     }
     
    -// ExternalDocumentationApplyConfiguration constructs an declarative configuration of the ExternalDocumentation type for use with
    +// ExternalDocumentationApplyConfiguration constructs a declarative configuration of the ExternalDocumentation type for use with
     // apply.
     func ExternalDocumentation() *ExternalDocumentationApplyConfiguration {
     	return &ExternalDocumentationApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/jsonschemaprops.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/jsonschemaprops.go
    index 730203add1a2..d6595ce1d5e3 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/jsonschemaprops.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/jsonschemaprops.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    +	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
     )
     
    -// JSONSchemaPropsApplyConfiguration represents an declarative configuration of the JSONSchemaProps type for use
    +// JSONSchemaPropsApplyConfiguration represents a declarative configuration of the JSONSchemaProps type for use
     // with apply.
     type JSONSchemaPropsApplyConfiguration struct {
     	ID                     *string                                      `json:"id,omitempty"`
    -	Schema                 *v1.JSONSchemaURL                            `json:"$schema,omitempty"`
    +	Schema                 *apiextensionsv1.JSONSchemaURL               `json:"$schema,omitempty"`
     	Ref                    *string                                      `json:"$ref,omitempty"`
     	Description            *string                                      `json:"description,omitempty"`
     	Type                   *string                                      `json:"type,omitempty"`
     	Format                 *string                                      `json:"format,omitempty"`
     	Title                  *string                                      `json:"title,omitempty"`
    -	Default                *v1.JSON                                     `json:"default,omitempty"`
    +	Default                *apiextensionsv1.JSON                        `json:"default,omitempty"`
     	Maximum                *float64                                     `json:"maximum,omitempty"`
     	ExclusiveMaximum       *bool                                        `json:"exclusiveMaximum,omitempty"`
     	Minimum                *float64                                     `json:"minimum,omitempty"`
    @@ -44,23 +44,23 @@ type JSONSchemaPropsApplyConfiguration struct {
     	MinItems               *int64                                       `json:"minItems,omitempty"`
     	UniqueItems            *bool                                        `json:"uniqueItems,omitempty"`
     	MultipleOf             *float64                                     `json:"multipleOf,omitempty"`
    -	Enum                   []v1.JSON                                    `json:"enum,omitempty"`
    +	Enum                   []apiextensionsv1.JSON                       `json:"enum,omitempty"`
     	MaxProperties          *int64                                       `json:"maxProperties,omitempty"`
     	MinProperties          *int64                                       `json:"minProperties,omitempty"`
     	Required               []string                                     `json:"required,omitempty"`
    -	Items                  *v1.JSONSchemaPropsOrArray                   `json:"items,omitempty"`
    +	Items                  *apiextensionsv1.JSONSchemaPropsOrArray      `json:"items,omitempty"`
     	AllOf                  []JSONSchemaPropsApplyConfiguration          `json:"allOf,omitempty"`
     	OneOf                  []JSONSchemaPropsApplyConfiguration          `json:"oneOf,omitempty"`
     	AnyOf                  []JSONSchemaPropsApplyConfiguration          `json:"anyOf,omitempty"`
     	Not                    *JSONSchemaPropsApplyConfiguration           `json:"not,omitempty"`
     	Properties             map[string]JSONSchemaPropsApplyConfiguration `json:"properties,omitempty"`
    -	AdditionalProperties   *v1.JSONSchemaPropsOrBool                    `json:"additionalProperties,omitempty"`
    +	AdditionalProperties   *apiextensionsv1.JSONSchemaPropsOrBool       `json:"additionalProperties,omitempty"`
     	PatternProperties      map[string]JSONSchemaPropsApplyConfiguration `json:"patternProperties,omitempty"`
    -	Dependencies           *v1.JSONSchemaDependencies                   `json:"dependencies,omitempty"`
    -	AdditionalItems        *v1.JSONSchemaPropsOrBool                    `json:"additionalItems,omitempty"`
    -	Definitions            *v1.JSONSchemaDefinitions                    `json:"definitions,omitempty"`
    +	Dependencies           *apiextensionsv1.JSONSchemaDependencies      `json:"dependencies,omitempty"`
    +	AdditionalItems        *apiextensionsv1.JSONSchemaPropsOrBool       `json:"additionalItems,omitempty"`
    +	Definitions            *apiextensionsv1.JSONSchemaDefinitions       `json:"definitions,omitempty"`
     	ExternalDocs           *ExternalDocumentationApplyConfiguration     `json:"externalDocs,omitempty"`
    -	Example                *v1.JSON                                     `json:"example,omitempty"`
    +	Example                *apiextensionsv1.JSON                        `json:"example,omitempty"`
     	Nullable               *bool                                        `json:"nullable,omitempty"`
     	XPreserveUnknownFields *bool                                        `json:"x-kubernetes-preserve-unknown-fields,omitempty"`
     	XEmbeddedResource      *bool                                        `json:"x-kubernetes-embedded-resource,omitempty"`
    @@ -68,10 +68,10 @@ type JSONSchemaPropsApplyConfiguration struct {
     	XListMapKeys           []string                                     `json:"x-kubernetes-list-map-keys,omitempty"`
     	XListType              *string                                      `json:"x-kubernetes-list-type,omitempty"`
     	XMapType               *string                                      `json:"x-kubernetes-map-type,omitempty"`
    -	XValidations           *v1.ValidationRules                          `json:"x-kubernetes-validations,omitempty"`
    +	XValidations           *apiextensionsv1.ValidationRules             `json:"x-kubernetes-validations,omitempty"`
     }
     
    -// JSONSchemaPropsApplyConfiguration constructs an declarative configuration of the JSONSchemaProps type for use with
    +// JSONSchemaPropsApplyConfiguration constructs a declarative configuration of the JSONSchemaProps type for use with
     // apply.
     func JSONSchemaProps() *JSONSchemaPropsApplyConfiguration {
     	return &JSONSchemaPropsApplyConfiguration{}
    @@ -88,7 +88,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithID(value string) *JSONSchemaProp
     // WithSchema sets the Schema field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Schema field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithSchema(value v1.JSONSchemaURL) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithSchema(value apiextensionsv1.JSONSchemaURL) *JSONSchemaPropsApplyConfiguration {
     	b.Schema = &value
     	return b
     }
    @@ -136,7 +136,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithTitle(value string) *JSONSchemaP
     // WithDefault sets the Default field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Default field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithDefault(value v1.JSON) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithDefault(value apiextensionsv1.JSON) *JSONSchemaPropsApplyConfiguration {
     	b.Default = &value
     	return b
     }
    @@ -232,7 +232,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithMultipleOf(value float64) *JSONS
     // WithEnum adds the given value to the Enum field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Enum field.
    -func (b *JSONSchemaPropsApplyConfiguration) WithEnum(values ...v1.JSON) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithEnum(values ...apiextensionsv1.JSON) *JSONSchemaPropsApplyConfiguration {
     	for i := range values {
     		b.Enum = append(b.Enum, values[i])
     	}
    @@ -268,7 +268,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithRequired(values ...string) *JSON
     // WithItems sets the Items field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Items field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithItems(value v1.JSONSchemaPropsOrArray) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithItems(value apiextensionsv1.JSONSchemaPropsOrArray) *JSONSchemaPropsApplyConfiguration {
     	b.Items = &value
     	return b
     }
    @@ -337,7 +337,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithProperties(entries map[string]JS
     // WithAdditionalProperties sets the AdditionalProperties field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AdditionalProperties field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithAdditionalProperties(value v1.JSONSchemaPropsOrBool) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithAdditionalProperties(value apiextensionsv1.JSONSchemaPropsOrBool) *JSONSchemaPropsApplyConfiguration {
     	b.AdditionalProperties = &value
     	return b
     }
    @@ -359,7 +359,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithPatternProperties(entries map[st
     // WithDependencies sets the Dependencies field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Dependencies field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithDependencies(value v1.JSONSchemaDependencies) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithDependencies(value apiextensionsv1.JSONSchemaDependencies) *JSONSchemaPropsApplyConfiguration {
     	b.Dependencies = &value
     	return b
     }
    @@ -367,7 +367,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithDependencies(value v1.JSONSchema
     // WithAdditionalItems sets the AdditionalItems field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AdditionalItems field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithAdditionalItems(value v1.JSONSchemaPropsOrBool) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithAdditionalItems(value apiextensionsv1.JSONSchemaPropsOrBool) *JSONSchemaPropsApplyConfiguration {
     	b.AdditionalItems = &value
     	return b
     }
    @@ -375,7 +375,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithAdditionalItems(value v1.JSONSch
     // WithDefinitions sets the Definitions field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Definitions field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithDefinitions(value v1.JSONSchemaDefinitions) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithDefinitions(value apiextensionsv1.JSONSchemaDefinitions) *JSONSchemaPropsApplyConfiguration {
     	b.Definitions = &value
     	return b
     }
    @@ -391,7 +391,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithExternalDocs(value *ExternalDocu
     // WithExample sets the Example field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Example field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithExample(value v1.JSON) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithExample(value apiextensionsv1.JSON) *JSONSchemaPropsApplyConfiguration {
     	b.Example = &value
     	return b
     }
    @@ -457,7 +457,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithXMapType(value string) *JSONSche
     // WithXValidations sets the XValidations field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the XValidations field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithXValidations(value v1.ValidationRules) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithXValidations(value apiextensionsv1.ValidationRules) *JSONSchemaPropsApplyConfiguration {
     	b.XValidations = &value
     	return b
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/selectablefield.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/selectablefield.go
    new file mode 100644
    index 000000000000..33f655a76486
    --- /dev/null
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/selectablefield.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// SelectableFieldApplyConfiguration represents a declarative configuration of the SelectableField type for use
    +// with apply.
    +type SelectableFieldApplyConfiguration struct {
    +	JSONPath *string `json:"jsonPath,omitempty"`
    +}
    +
    +// SelectableFieldApplyConfiguration constructs a declarative configuration of the SelectableField type for use with
    +// apply.
    +func SelectableField() *SelectableFieldApplyConfiguration {
    +	return &SelectableFieldApplyConfiguration{}
    +}
    +
    +// WithJSONPath sets the JSONPath field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the JSONPath field is set to the value of the last call.
    +func (b *SelectableFieldApplyConfiguration) WithJSONPath(value string) *SelectableFieldApplyConfiguration {
    +	b.JSONPath = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/servicereference.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/servicereference.go
    index 2cd55d9ea207..239780664df5 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/servicereference.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/servicereference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ServiceReferenceApplyConfiguration represents an declarative configuration of the ServiceReference type for use
    +// ServiceReferenceApplyConfiguration represents a declarative configuration of the ServiceReference type for use
     // with apply.
     type ServiceReferenceApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
    @@ -27,7 +27,7 @@ type ServiceReferenceApplyConfiguration struct {
     	Port      *int32  `json:"port,omitempty"`
     }
     
    -// ServiceReferenceApplyConfiguration constructs an declarative configuration of the ServiceReference type for use with
    +// ServiceReferenceApplyConfiguration constructs a declarative configuration of the ServiceReference type for use with
     // apply.
     func ServiceReference() *ServiceReferenceApplyConfiguration {
     	return &ServiceReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/validationrule.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/validationrule.go
    index c0eb0b51bd85..5ee414928481 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/validationrule.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/validationrule.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    +	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
     )
     
    -// ValidationRuleApplyConfiguration represents an declarative configuration of the ValidationRule type for use
    +// ValidationRuleApplyConfiguration represents a declarative configuration of the ValidationRule type for use
     // with apply.
     type ValidationRuleApplyConfiguration struct {
    -	Rule              *string                   `json:"rule,omitempty"`
    -	Message           *string                   `json:"message,omitempty"`
    -	MessageExpression *string                   `json:"messageExpression,omitempty"`
    -	Reason            *v1.FieldValueErrorReason `json:"reason,omitempty"`
    -	FieldPath         *string                   `json:"fieldPath,omitempty"`
    -	OptionalOldSelf   *bool                     `json:"optionalOldSelf,omitempty"`
    +	Rule              *string                                `json:"rule,omitempty"`
    +	Message           *string                                `json:"message,omitempty"`
    +	MessageExpression *string                                `json:"messageExpression,omitempty"`
    +	Reason            *apiextensionsv1.FieldValueErrorReason `json:"reason,omitempty"`
    +	FieldPath         *string                                `json:"fieldPath,omitempty"`
    +	OptionalOldSelf   *bool                                  `json:"optionalOldSelf,omitempty"`
     }
     
    -// ValidationRuleApplyConfiguration constructs an declarative configuration of the ValidationRule type for use with
    +// ValidationRuleApplyConfiguration constructs a declarative configuration of the ValidationRule type for use with
     // apply.
     func ValidationRule() *ValidationRuleApplyConfiguration {
     	return &ValidationRuleApplyConfiguration{}
    @@ -66,7 +66,7 @@ func (b *ValidationRuleApplyConfiguration) WithMessageExpression(value string) *
     // WithReason sets the Reason field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Reason field is set to the value of the last call.
    -func (b *ValidationRuleApplyConfiguration) WithReason(value v1.FieldValueErrorReason) *ValidationRuleApplyConfiguration {
    +func (b *ValidationRuleApplyConfiguration) WithReason(value apiextensionsv1.FieldValueErrorReason) *ValidationRuleApplyConfiguration {
     	b.Reason = &value
     	return b
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookclientconfig.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookclientconfig.go
    index aa358ae20594..77f2227b95ce 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookclientconfig.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookclientconfig.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// WebhookClientConfigApplyConfiguration represents an declarative configuration of the WebhookClientConfig type for use
    +// WebhookClientConfigApplyConfiguration represents a declarative configuration of the WebhookClientConfig type for use
     // with apply.
     type WebhookClientConfigApplyConfiguration struct {
     	URL      *string                             `json:"url,omitempty"`
    @@ -26,7 +26,7 @@ type WebhookClientConfigApplyConfiguration struct {
     	CABundle []byte                              `json:"caBundle,omitempty"`
     }
     
    -// WebhookClientConfigApplyConfiguration constructs an declarative configuration of the WebhookClientConfig type for use with
    +// WebhookClientConfigApplyConfiguration constructs a declarative configuration of the WebhookClientConfig type for use with
     // apply.
     func WebhookClientConfig() *WebhookClientConfigApplyConfiguration {
     	return &WebhookClientConfigApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookconversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookconversion.go
    index 2af1b70ba497..884fbc5fa859 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookconversion.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookconversion.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// WebhookConversionApplyConfiguration represents an declarative configuration of the WebhookConversion type for use
    +// WebhookConversionApplyConfiguration represents a declarative configuration of the WebhookConversion type for use
     // with apply.
     type WebhookConversionApplyConfiguration struct {
     	ClientConfig             *WebhookClientConfigApplyConfiguration `json:"clientConfig,omitempty"`
     	ConversionReviewVersions []string                               `json:"conversionReviewVersions,omitempty"`
     }
     
    -// WebhookConversionApplyConfiguration constructs an declarative configuration of the WebhookConversion type for use with
    +// WebhookConversionApplyConfiguration constructs a declarative configuration of the WebhookConversion type for use with
     // apply.
     func WebhookConversion() *WebhookConversionApplyConfiguration {
     	return &WebhookConversionApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcecolumndefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcecolumndefinition.go
    index e4731784345d..9ee2318d1a50 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcecolumndefinition.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcecolumndefinition.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// CustomResourceColumnDefinitionApplyConfiguration represents an declarative configuration of the CustomResourceColumnDefinition type for use
    +// CustomResourceColumnDefinitionApplyConfiguration represents a declarative configuration of the CustomResourceColumnDefinition type for use
     // with apply.
     type CustomResourceColumnDefinitionApplyConfiguration struct {
     	Name        *string `json:"name,omitempty"`
    @@ -29,7 +29,7 @@ type CustomResourceColumnDefinitionApplyConfiguration struct {
     	JSONPath    *string `json:"JSONPath,omitempty"`
     }
     
    -// CustomResourceColumnDefinitionApplyConfiguration constructs an declarative configuration of the CustomResourceColumnDefinition type for use with
    +// CustomResourceColumnDefinitionApplyConfiguration constructs a declarative configuration of the CustomResourceColumnDefinition type for use with
     // apply.
     func CustomResourceColumnDefinition() *CustomResourceColumnDefinitionApplyConfiguration {
     	return &CustomResourceColumnDefinitionApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourceconversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourceconversion.go
    index d9825f85a91f..f652c96d5259 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourceconversion.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourceconversion.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
     )
     
    -// CustomResourceConversionApplyConfiguration represents an declarative configuration of the CustomResourceConversion type for use
    +// CustomResourceConversionApplyConfiguration represents a declarative configuration of the CustomResourceConversion type for use
     // with apply.
     type CustomResourceConversionApplyConfiguration struct {
    -	Strategy                 *v1beta1.ConversionStrategyType        `json:"strategy,omitempty"`
    -	WebhookClientConfig      *WebhookClientConfigApplyConfiguration `json:"webhookClientConfig,omitempty"`
    -	ConversionReviewVersions []string                               `json:"conversionReviewVersions,omitempty"`
    +	Strategy                 *apiextensionsv1beta1.ConversionStrategyType `json:"strategy,omitempty"`
    +	WebhookClientConfig      *WebhookClientConfigApplyConfiguration       `json:"webhookClientConfig,omitempty"`
    +	ConversionReviewVersions []string                                     `json:"conversionReviewVersions,omitempty"`
     }
     
    -// CustomResourceConversionApplyConfiguration constructs an declarative configuration of the CustomResourceConversion type for use with
    +// CustomResourceConversionApplyConfiguration constructs a declarative configuration of the CustomResourceConversion type for use with
     // apply.
     func CustomResourceConversion() *CustomResourceConversionApplyConfiguration {
     	return &CustomResourceConversionApplyConfiguration{}
    @@ -39,7 +39,7 @@ func CustomResourceConversion() *CustomResourceConversionApplyConfiguration {
     // WithStrategy sets the Strategy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Strategy field is set to the value of the last call.
    -func (b *CustomResourceConversionApplyConfiguration) WithStrategy(value v1beta1.ConversionStrategyType) *CustomResourceConversionApplyConfiguration {
    +func (b *CustomResourceConversionApplyConfiguration) WithStrategy(value apiextensionsv1beta1.ConversionStrategyType) *CustomResourceConversionApplyConfiguration {
     	b.Strategy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinition.go
    index 9117748c7585..d56cff21fffe 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinition.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinition.go
    @@ -24,7 +24,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CustomResourceDefinitionApplyConfiguration represents an declarative configuration of the CustomResourceDefinition type for use
    +// CustomResourceDefinitionApplyConfiguration represents a declarative configuration of the CustomResourceDefinition type for use
     // with apply.
     type CustomResourceDefinitionApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -33,7 +33,7 @@ type CustomResourceDefinitionApplyConfiguration struct {
     	Status                           *CustomResourceDefinitionStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// CustomResourceDefinition constructs an declarative configuration of the CustomResourceDefinition type for use with
    +// CustomResourceDefinition constructs a declarative configuration of the CustomResourceDefinition type for use with
     // apply.
     func CustomResourceDefinition(name string) *CustomResourceDefinitionApplyConfiguration {
     	b := &CustomResourceDefinitionApplyConfiguration{}
    @@ -47,7 +47,7 @@ func CustomResourceDefinition(name string) *CustomResourceDefinitionApplyConfigu
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithKind(value string) *CustomResourceDefinitionApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -55,7 +55,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithKind(value string) *Cus
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithAPIVersion(value string) *CustomResourceDefinitionApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -64,7 +64,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithAPIVersion(value string
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithName(value string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -73,7 +73,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithName(value string) *Cus
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithGenerateName(value string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -82,7 +82,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithGenerateName(value stri
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithNamespace(value string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -91,7 +91,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithNamespace(value string)
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithUID(value types.UID) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -100,7 +100,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithUID(value types.UID) *C
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithResourceVersion(value string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -109,7 +109,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithResourceVersion(value s
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithGeneration(value int64) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -118,7 +118,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithGeneration(value int64)
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -127,7 +127,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithCreationTimestamp(value
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -136,7 +136,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithDeletionTimestamp(value
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CustomResourceDefinitionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -146,11 +146,11 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithDeletionGracePeriodSeco
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CustomResourceDefinitionApplyConfiguration) WithLabels(entries map[string]string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -161,11 +161,11 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithLabels(entries map[stri
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CustomResourceDefinitionApplyConfiguration) WithAnnotations(entries map[string]string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -179,7 +179,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithOwnerReferences(values
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -190,7 +190,7 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithOwnerReferences(values
     func (b *CustomResourceDefinitionApplyConfiguration) WithFinalizers(values ...string) *CustomResourceDefinitionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -216,3 +216,9 @@ func (b *CustomResourceDefinitionApplyConfiguration) WithStatus(value *CustomRes
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CustomResourceDefinitionApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitioncondition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitioncondition.go
    index cf2400c9c28c..4d19e1b5b6a8 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitioncondition.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitioncondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// CustomResourceDefinitionConditionApplyConfiguration represents an declarative configuration of the CustomResourceDefinitionCondition type for use
    +// CustomResourceDefinitionConditionApplyConfiguration represents a declarative configuration of the CustomResourceDefinitionCondition type for use
     // with apply.
     type CustomResourceDefinitionConditionApplyConfiguration struct {
    -	Type               *v1beta1.CustomResourceDefinitionConditionType `json:"type,omitempty"`
    -	Status             *v1beta1.ConditionStatus                       `json:"status,omitempty"`
    -	LastTransitionTime *v1.Time                                       `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                        `json:"reason,omitempty"`
    -	Message            *string                                        `json:"message,omitempty"`
    +	Type               *apiextensionsv1beta1.CustomResourceDefinitionConditionType `json:"type,omitempty"`
    +	Status             *apiextensionsv1beta1.ConditionStatus                       `json:"status,omitempty"`
    +	LastTransitionTime *v1.Time                                                    `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                                     `json:"reason,omitempty"`
    +	Message            *string                                                     `json:"message,omitempty"`
     }
     
    -// CustomResourceDefinitionConditionApplyConfiguration constructs an declarative configuration of the CustomResourceDefinitionCondition type for use with
    +// CustomResourceDefinitionConditionApplyConfiguration constructs a declarative configuration of the CustomResourceDefinitionCondition type for use with
     // apply.
     func CustomResourceDefinitionCondition() *CustomResourceDefinitionConditionApplyConfiguration {
     	return &CustomResourceDefinitionConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func CustomResourceDefinitionCondition() *CustomResourceDefinitionConditionApply
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *CustomResourceDefinitionConditionApplyConfiguration) WithType(value v1beta1.CustomResourceDefinitionConditionType) *CustomResourceDefinitionConditionApplyConfiguration {
    +func (b *CustomResourceDefinitionConditionApplyConfiguration) WithType(value apiextensionsv1beta1.CustomResourceDefinitionConditionType) *CustomResourceDefinitionConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *CustomResourceDefinitionConditionApplyConfiguration) WithType(value v1b
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *CustomResourceDefinitionConditionApplyConfiguration) WithStatus(value v1beta1.ConditionStatus) *CustomResourceDefinitionConditionApplyConfiguration {
    +func (b *CustomResourceDefinitionConditionApplyConfiguration) WithStatus(value apiextensionsv1beta1.ConditionStatus) *CustomResourceDefinitionConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionnames.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionnames.go
    index a20200723cea..44b49bcbbeb0 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionnames.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionnames.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// CustomResourceDefinitionNamesApplyConfiguration represents an declarative configuration of the CustomResourceDefinitionNames type for use
    +// CustomResourceDefinitionNamesApplyConfiguration represents a declarative configuration of the CustomResourceDefinitionNames type for use
     // with apply.
     type CustomResourceDefinitionNamesApplyConfiguration struct {
     	Plural     *string  `json:"plural,omitempty"`
    @@ -29,7 +29,7 @@ type CustomResourceDefinitionNamesApplyConfiguration struct {
     	Categories []string `json:"categories,omitempty"`
     }
     
    -// CustomResourceDefinitionNamesApplyConfiguration constructs an declarative configuration of the CustomResourceDefinitionNames type for use with
    +// CustomResourceDefinitionNamesApplyConfiguration constructs a declarative configuration of the CustomResourceDefinitionNames type for use with
     // apply.
     func CustomResourceDefinitionNames() *CustomResourceDefinitionNamesApplyConfiguration {
     	return &CustomResourceDefinitionNamesApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionspec.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionspec.go
    index f8c2903757b7..5046882ae10f 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionspec.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionspec.go
    @@ -22,7 +22,7 @@ import (
     	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
     )
     
    -// CustomResourceDefinitionSpecApplyConfiguration represents an declarative configuration of the CustomResourceDefinitionSpec type for use
    +// CustomResourceDefinitionSpecApplyConfiguration represents a declarative configuration of the CustomResourceDefinitionSpec type for use
     // with apply.
     type CustomResourceDefinitionSpecApplyConfiguration struct {
     	Group                    *string                                             `json:"group,omitempty"`
    @@ -33,11 +33,12 @@ type CustomResourceDefinitionSpecApplyConfiguration struct {
     	Subresources             *CustomResourceSubresourcesApplyConfiguration       `json:"subresources,omitempty"`
     	Versions                 []CustomResourceDefinitionVersionApplyConfiguration `json:"versions,omitempty"`
     	AdditionalPrinterColumns []CustomResourceColumnDefinitionApplyConfiguration  `json:"additionalPrinterColumns,omitempty"`
    +	SelectableFields         []SelectableFieldApplyConfiguration                 `json:"selectableFields,omitempty"`
     	Conversion               *CustomResourceConversionApplyConfiguration         `json:"conversion,omitempty"`
     	PreserveUnknownFields    *bool                                               `json:"preserveUnknownFields,omitempty"`
     }
     
    -// CustomResourceDefinitionSpecApplyConfiguration constructs an declarative configuration of the CustomResourceDefinitionSpec type for use with
    +// CustomResourceDefinitionSpecApplyConfiguration constructs a declarative configuration of the CustomResourceDefinitionSpec type for use with
     // apply.
     func CustomResourceDefinitionSpec() *CustomResourceDefinitionSpecApplyConfiguration {
     	return &CustomResourceDefinitionSpecApplyConfiguration{}
    @@ -117,6 +118,19 @@ func (b *CustomResourceDefinitionSpecApplyConfiguration) WithAdditionalPrinterCo
     	return b
     }
     
    +// WithSelectableFields adds the given value to the SelectableFields field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the SelectableFields field.
    +func (b *CustomResourceDefinitionSpecApplyConfiguration) WithSelectableFields(values ...*SelectableFieldApplyConfiguration) *CustomResourceDefinitionSpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithSelectableFields")
    +		}
    +		b.SelectableFields = append(b.SelectableFields, *values[i])
    +	}
    +	return b
    +}
    +
     // WithConversion sets the Conversion field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Conversion field is set to the value of the last call.
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionstatus.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionstatus.go
    index 79b2ebdabba0..2c9c5e23c1a8 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionstatus.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// CustomResourceDefinitionStatusApplyConfiguration represents an declarative configuration of the CustomResourceDefinitionStatus type for use
    +// CustomResourceDefinitionStatusApplyConfiguration represents a declarative configuration of the CustomResourceDefinitionStatus type for use
     // with apply.
     type CustomResourceDefinitionStatusApplyConfiguration struct {
     	Conditions     []CustomResourceDefinitionConditionApplyConfiguration `json:"conditions,omitempty"`
    @@ -26,7 +26,7 @@ type CustomResourceDefinitionStatusApplyConfiguration struct {
     	StoredVersions []string                                              `json:"storedVersions,omitempty"`
     }
     
    -// CustomResourceDefinitionStatusApplyConfiguration constructs an declarative configuration of the CustomResourceDefinitionStatus type for use with
    +// CustomResourceDefinitionStatusApplyConfiguration constructs a declarative configuration of the CustomResourceDefinitionStatus type for use with
     // apply.
     func CustomResourceDefinitionStatus() *CustomResourceDefinitionStatusApplyConfiguration {
     	return &CustomResourceDefinitionStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionversion.go
    index 605a9f0a3fca..19ac26b039ab 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionversion.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionversion.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// CustomResourceDefinitionVersionApplyConfiguration represents an declarative configuration of the CustomResourceDefinitionVersion type for use
    +// CustomResourceDefinitionVersionApplyConfiguration represents a declarative configuration of the CustomResourceDefinitionVersion type for use
     // with apply.
     type CustomResourceDefinitionVersionApplyConfiguration struct {
     	Name                     *string                                            `json:"name,omitempty"`
    @@ -29,9 +29,10 @@ type CustomResourceDefinitionVersionApplyConfiguration struct {
     	Schema                   *CustomResourceValidationApplyConfiguration        `json:"schema,omitempty"`
     	Subresources             *CustomResourceSubresourcesApplyConfiguration      `json:"subresources,omitempty"`
     	AdditionalPrinterColumns []CustomResourceColumnDefinitionApplyConfiguration `json:"additionalPrinterColumns,omitempty"`
    +	SelectableFields         []SelectableFieldApplyConfiguration                `json:"selectableFields,omitempty"`
     }
     
    -// CustomResourceDefinitionVersionApplyConfiguration constructs an declarative configuration of the CustomResourceDefinitionVersion type for use with
    +// CustomResourceDefinitionVersionApplyConfiguration constructs a declarative configuration of the CustomResourceDefinitionVersion type for use with
     // apply.
     func CustomResourceDefinitionVersion() *CustomResourceDefinitionVersionApplyConfiguration {
     	return &CustomResourceDefinitionVersionApplyConfiguration{}
    @@ -105,3 +106,16 @@ func (b *CustomResourceDefinitionVersionApplyConfiguration) WithAdditionalPrinte
     	}
     	return b
     }
    +
    +// WithSelectableFields adds the given value to the SelectableFields field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the SelectableFields field.
    +func (b *CustomResourceDefinitionVersionApplyConfiguration) WithSelectableFields(values ...*SelectableFieldApplyConfiguration) *CustomResourceDefinitionVersionApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithSelectableFields")
    +		}
    +		b.SelectableFields = append(b.SelectableFields, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresources.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresources.go
    index a62f8a205040..3ee82a0377c8 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresources.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresources.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
     )
     
    -// CustomResourceSubresourcesApplyConfiguration represents an declarative configuration of the CustomResourceSubresources type for use
    +// CustomResourceSubresourcesApplyConfiguration represents a declarative configuration of the CustomResourceSubresources type for use
     // with apply.
     type CustomResourceSubresourcesApplyConfiguration struct {
    -	Status *v1beta1.CustomResourceSubresourceStatus          `json:"status,omitempty"`
    -	Scale  *CustomResourceSubresourceScaleApplyConfiguration `json:"scale,omitempty"`
    +	Status *apiextensionsv1beta1.CustomResourceSubresourceStatus `json:"status,omitempty"`
    +	Scale  *CustomResourceSubresourceScaleApplyConfiguration     `json:"scale,omitempty"`
     }
     
    -// CustomResourceSubresourcesApplyConfiguration constructs an declarative configuration of the CustomResourceSubresources type for use with
    +// CustomResourceSubresourcesApplyConfiguration constructs a declarative configuration of the CustomResourceSubresources type for use with
     // apply.
     func CustomResourceSubresources() *CustomResourceSubresourcesApplyConfiguration {
     	return &CustomResourceSubresourcesApplyConfiguration{}
    @@ -38,7 +38,7 @@ func CustomResourceSubresources() *CustomResourceSubresourcesApplyConfiguration
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *CustomResourceSubresourcesApplyConfiguration) WithStatus(value v1beta1.CustomResourceSubresourceStatus) *CustomResourceSubresourcesApplyConfiguration {
    +func (b *CustomResourceSubresourcesApplyConfiguration) WithStatus(value apiextensionsv1beta1.CustomResourceSubresourceStatus) *CustomResourceSubresourcesApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresourcescale.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresourcescale.go
    index 72934ce97e4c..b94d0e6685f7 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresourcescale.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresourcescale.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// CustomResourceSubresourceScaleApplyConfiguration represents an declarative configuration of the CustomResourceSubresourceScale type for use
    +// CustomResourceSubresourceScaleApplyConfiguration represents a declarative configuration of the CustomResourceSubresourceScale type for use
     // with apply.
     type CustomResourceSubresourceScaleApplyConfiguration struct {
     	SpecReplicasPath   *string `json:"specReplicasPath,omitempty"`
    @@ -26,7 +26,7 @@ type CustomResourceSubresourceScaleApplyConfiguration struct {
     	LabelSelectorPath  *string `json:"labelSelectorPath,omitempty"`
     }
     
    -// CustomResourceSubresourceScaleApplyConfiguration constructs an declarative configuration of the CustomResourceSubresourceScale type for use with
    +// CustomResourceSubresourceScaleApplyConfiguration constructs a declarative configuration of the CustomResourceSubresourceScale type for use with
     // apply.
     func CustomResourceSubresourceScale() *CustomResourceSubresourceScaleApplyConfiguration {
     	return &CustomResourceSubresourceScaleApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcevalidation.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcevalidation.go
    index 9f65653da00c..a5cf3c096b65 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcevalidation.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcevalidation.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// CustomResourceValidationApplyConfiguration represents an declarative configuration of the CustomResourceValidation type for use
    +// CustomResourceValidationApplyConfiguration represents a declarative configuration of the CustomResourceValidation type for use
     // with apply.
     type CustomResourceValidationApplyConfiguration struct {
     	OpenAPIV3Schema *JSONSchemaPropsApplyConfiguration `json:"openAPIV3Schema,omitempty"`
     }
     
    -// CustomResourceValidationApplyConfiguration constructs an declarative configuration of the CustomResourceValidation type for use with
    +// CustomResourceValidationApplyConfiguration constructs a declarative configuration of the CustomResourceValidation type for use with
     // apply.
     func CustomResourceValidation() *CustomResourceValidationApplyConfiguration {
     	return &CustomResourceValidationApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/externaldocumentation.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/externaldocumentation.go
    index 360f6d9695b5..5140d66ceb98 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/externaldocumentation.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/externaldocumentation.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// ExternalDocumentationApplyConfiguration represents an declarative configuration of the ExternalDocumentation type for use
    +// ExternalDocumentationApplyConfiguration represents a declarative configuration of the ExternalDocumentation type for use
     // with apply.
     type ExternalDocumentationApplyConfiguration struct {
     	Description *string `json:"description,omitempty"`
     	URL         *string `json:"url,omitempty"`
     }
     
    -// ExternalDocumentationApplyConfiguration constructs an declarative configuration of the ExternalDocumentation type for use with
    +// ExternalDocumentationApplyConfiguration constructs a declarative configuration of the ExternalDocumentation type for use with
     // apply.
     func ExternalDocumentation() *ExternalDocumentationApplyConfiguration {
     	return &ExternalDocumentationApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/jsonschemaprops.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/jsonschemaprops.go
    index 158b5750d0f5..b90b9281c8d4 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/jsonschemaprops.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/jsonschemaprops.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
     )
     
    -// JSONSchemaPropsApplyConfiguration represents an declarative configuration of the JSONSchemaProps type for use
    +// JSONSchemaPropsApplyConfiguration represents a declarative configuration of the JSONSchemaProps type for use
     // with apply.
     type JSONSchemaPropsApplyConfiguration struct {
     	ID                     *string                                      `json:"id,omitempty"`
    -	Schema                 *v1beta1.JSONSchemaURL                       `json:"$schema,omitempty"`
    +	Schema                 *apiextensionsv1beta1.JSONSchemaURL          `json:"$schema,omitempty"`
     	Ref                    *string                                      `json:"$ref,omitempty"`
     	Description            *string                                      `json:"description,omitempty"`
     	Type                   *string                                      `json:"type,omitempty"`
     	Format                 *string                                      `json:"format,omitempty"`
     	Title                  *string                                      `json:"title,omitempty"`
    -	Default                *v1beta1.JSON                                `json:"default,omitempty"`
    +	Default                *apiextensionsv1beta1.JSON                   `json:"default,omitempty"`
     	Maximum                *float64                                     `json:"maximum,omitempty"`
     	ExclusiveMaximum       *bool                                        `json:"exclusiveMaximum,omitempty"`
     	Minimum                *float64                                     `json:"minimum,omitempty"`
    @@ -44,23 +44,23 @@ type JSONSchemaPropsApplyConfiguration struct {
     	MinItems               *int64                                       `json:"minItems,omitempty"`
     	UniqueItems            *bool                                        `json:"uniqueItems,omitempty"`
     	MultipleOf             *float64                                     `json:"multipleOf,omitempty"`
    -	Enum                   []v1beta1.JSON                               `json:"enum,omitempty"`
    +	Enum                   []apiextensionsv1beta1.JSON                  `json:"enum,omitempty"`
     	MaxProperties          *int64                                       `json:"maxProperties,omitempty"`
     	MinProperties          *int64                                       `json:"minProperties,omitempty"`
     	Required               []string                                     `json:"required,omitempty"`
    -	Items                  *v1beta1.JSONSchemaPropsOrArray              `json:"items,omitempty"`
    +	Items                  *apiextensionsv1beta1.JSONSchemaPropsOrArray `json:"items,omitempty"`
     	AllOf                  []JSONSchemaPropsApplyConfiguration          `json:"allOf,omitempty"`
     	OneOf                  []JSONSchemaPropsApplyConfiguration          `json:"oneOf,omitempty"`
     	AnyOf                  []JSONSchemaPropsApplyConfiguration          `json:"anyOf,omitempty"`
     	Not                    *JSONSchemaPropsApplyConfiguration           `json:"not,omitempty"`
     	Properties             map[string]JSONSchemaPropsApplyConfiguration `json:"properties,omitempty"`
    -	AdditionalProperties   *v1beta1.JSONSchemaPropsOrBool               `json:"additionalProperties,omitempty"`
    +	AdditionalProperties   *apiextensionsv1beta1.JSONSchemaPropsOrBool  `json:"additionalProperties,omitempty"`
     	PatternProperties      map[string]JSONSchemaPropsApplyConfiguration `json:"patternProperties,omitempty"`
    -	Dependencies           *v1beta1.JSONSchemaDependencies              `json:"dependencies,omitempty"`
    -	AdditionalItems        *v1beta1.JSONSchemaPropsOrBool               `json:"additionalItems,omitempty"`
    -	Definitions            *v1beta1.JSONSchemaDefinitions               `json:"definitions,omitempty"`
    +	Dependencies           *apiextensionsv1beta1.JSONSchemaDependencies `json:"dependencies,omitempty"`
    +	AdditionalItems        *apiextensionsv1beta1.JSONSchemaPropsOrBool  `json:"additionalItems,omitempty"`
    +	Definitions            *apiextensionsv1beta1.JSONSchemaDefinitions  `json:"definitions,omitempty"`
     	ExternalDocs           *ExternalDocumentationApplyConfiguration     `json:"externalDocs,omitempty"`
    -	Example                *v1beta1.JSON                                `json:"example,omitempty"`
    +	Example                *apiextensionsv1beta1.JSON                   `json:"example,omitempty"`
     	Nullable               *bool                                        `json:"nullable,omitempty"`
     	XPreserveUnknownFields *bool                                        `json:"x-kubernetes-preserve-unknown-fields,omitempty"`
     	XEmbeddedResource      *bool                                        `json:"x-kubernetes-embedded-resource,omitempty"`
    @@ -68,10 +68,10 @@ type JSONSchemaPropsApplyConfiguration struct {
     	XListMapKeys           []string                                     `json:"x-kubernetes-list-map-keys,omitempty"`
     	XListType              *string                                      `json:"x-kubernetes-list-type,omitempty"`
     	XMapType               *string                                      `json:"x-kubernetes-map-type,omitempty"`
    -	XValidations           *v1beta1.ValidationRules                     `json:"x-kubernetes-validations,omitempty"`
    +	XValidations           *apiextensionsv1beta1.ValidationRules        `json:"x-kubernetes-validations,omitempty"`
     }
     
    -// JSONSchemaPropsApplyConfiguration constructs an declarative configuration of the JSONSchemaProps type for use with
    +// JSONSchemaPropsApplyConfiguration constructs a declarative configuration of the JSONSchemaProps type for use with
     // apply.
     func JSONSchemaProps() *JSONSchemaPropsApplyConfiguration {
     	return &JSONSchemaPropsApplyConfiguration{}
    @@ -88,7 +88,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithID(value string) *JSONSchemaProp
     // WithSchema sets the Schema field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Schema field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithSchema(value v1beta1.JSONSchemaURL) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithSchema(value apiextensionsv1beta1.JSONSchemaURL) *JSONSchemaPropsApplyConfiguration {
     	b.Schema = &value
     	return b
     }
    @@ -136,7 +136,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithTitle(value string) *JSONSchemaP
     // WithDefault sets the Default field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Default field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithDefault(value v1beta1.JSON) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithDefault(value apiextensionsv1beta1.JSON) *JSONSchemaPropsApplyConfiguration {
     	b.Default = &value
     	return b
     }
    @@ -232,7 +232,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithMultipleOf(value float64) *JSONS
     // WithEnum adds the given value to the Enum field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Enum field.
    -func (b *JSONSchemaPropsApplyConfiguration) WithEnum(values ...v1beta1.JSON) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithEnum(values ...apiextensionsv1beta1.JSON) *JSONSchemaPropsApplyConfiguration {
     	for i := range values {
     		b.Enum = append(b.Enum, values[i])
     	}
    @@ -268,7 +268,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithRequired(values ...string) *JSON
     // WithItems sets the Items field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Items field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithItems(value v1beta1.JSONSchemaPropsOrArray) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithItems(value apiextensionsv1beta1.JSONSchemaPropsOrArray) *JSONSchemaPropsApplyConfiguration {
     	b.Items = &value
     	return b
     }
    @@ -337,7 +337,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithProperties(entries map[string]JS
     // WithAdditionalProperties sets the AdditionalProperties field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AdditionalProperties field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithAdditionalProperties(value v1beta1.JSONSchemaPropsOrBool) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithAdditionalProperties(value apiextensionsv1beta1.JSONSchemaPropsOrBool) *JSONSchemaPropsApplyConfiguration {
     	b.AdditionalProperties = &value
     	return b
     }
    @@ -359,7 +359,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithPatternProperties(entries map[st
     // WithDependencies sets the Dependencies field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Dependencies field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithDependencies(value v1beta1.JSONSchemaDependencies) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithDependencies(value apiextensionsv1beta1.JSONSchemaDependencies) *JSONSchemaPropsApplyConfiguration {
     	b.Dependencies = &value
     	return b
     }
    @@ -367,7 +367,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithDependencies(value v1beta1.JSONS
     // WithAdditionalItems sets the AdditionalItems field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AdditionalItems field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithAdditionalItems(value v1beta1.JSONSchemaPropsOrBool) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithAdditionalItems(value apiextensionsv1beta1.JSONSchemaPropsOrBool) *JSONSchemaPropsApplyConfiguration {
     	b.AdditionalItems = &value
     	return b
     }
    @@ -375,7 +375,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithAdditionalItems(value v1beta1.JS
     // WithDefinitions sets the Definitions field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Definitions field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithDefinitions(value v1beta1.JSONSchemaDefinitions) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithDefinitions(value apiextensionsv1beta1.JSONSchemaDefinitions) *JSONSchemaPropsApplyConfiguration {
     	b.Definitions = &value
     	return b
     }
    @@ -391,7 +391,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithExternalDocs(value *ExternalDocu
     // WithExample sets the Example field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Example field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithExample(value v1beta1.JSON) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithExample(value apiextensionsv1beta1.JSON) *JSONSchemaPropsApplyConfiguration {
     	b.Example = &value
     	return b
     }
    @@ -457,7 +457,7 @@ func (b *JSONSchemaPropsApplyConfiguration) WithXMapType(value string) *JSONSche
     // WithXValidations sets the XValidations field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the XValidations field is set to the value of the last call.
    -func (b *JSONSchemaPropsApplyConfiguration) WithXValidations(value v1beta1.ValidationRules) *JSONSchemaPropsApplyConfiguration {
    +func (b *JSONSchemaPropsApplyConfiguration) WithXValidations(value apiextensionsv1beta1.ValidationRules) *JSONSchemaPropsApplyConfiguration {
     	b.XValidations = &value
     	return b
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/selectablefield.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/selectablefield.go
    new file mode 100644
    index 000000000000..1a372e6fafdc
    --- /dev/null
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/selectablefield.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// SelectableFieldApplyConfiguration represents a declarative configuration of the SelectableField type for use
    +// with apply.
    +type SelectableFieldApplyConfiguration struct {
    +	JSONPath *string `json:"jsonPath,omitempty"`
    +}
    +
    +// SelectableFieldApplyConfiguration constructs a declarative configuration of the SelectableField type for use with
    +// apply.
    +func SelectableField() *SelectableFieldApplyConfiguration {
    +	return &SelectableFieldApplyConfiguration{}
    +}
    +
    +// WithJSONPath sets the JSONPath field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the JSONPath field is set to the value of the last call.
    +func (b *SelectableFieldApplyConfiguration) WithJSONPath(value string) *SelectableFieldApplyConfiguration {
    +	b.JSONPath = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/servicereference.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/servicereference.go
    index c21b57490853..70cc6b5b2719 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/servicereference.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/servicereference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// ServiceReferenceApplyConfiguration represents an declarative configuration of the ServiceReference type for use
    +// ServiceReferenceApplyConfiguration represents a declarative configuration of the ServiceReference type for use
     // with apply.
     type ServiceReferenceApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
    @@ -27,7 +27,7 @@ type ServiceReferenceApplyConfiguration struct {
     	Port      *int32  `json:"port,omitempty"`
     }
     
    -// ServiceReferenceApplyConfiguration constructs an declarative configuration of the ServiceReference type for use with
    +// ServiceReferenceApplyConfiguration constructs a declarative configuration of the ServiceReference type for use with
     // apply.
     func ServiceReference() *ServiceReferenceApplyConfiguration {
     	return &ServiceReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/validationrule.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/validationrule.go
    index 1b0df078b5b2..c9b3da89ba58 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/validationrule.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/validationrule.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
     )
     
    -// ValidationRuleApplyConfiguration represents an declarative configuration of the ValidationRule type for use
    +// ValidationRuleApplyConfiguration represents a declarative configuration of the ValidationRule type for use
     // with apply.
     type ValidationRuleApplyConfiguration struct {
    -	Rule              *string                        `json:"rule,omitempty"`
    -	Message           *string                        `json:"message,omitempty"`
    -	MessageExpression *string                        `json:"messageExpression,omitempty"`
    -	Reason            *v1beta1.FieldValueErrorReason `json:"reason,omitempty"`
    -	FieldPath         *string                        `json:"fieldPath,omitempty"`
    -	OptionalOldSelf   *bool                          `json:"optionalOldSelf,omitempty"`
    +	Rule              *string                                     `json:"rule,omitempty"`
    +	Message           *string                                     `json:"message,omitempty"`
    +	MessageExpression *string                                     `json:"messageExpression,omitempty"`
    +	Reason            *apiextensionsv1beta1.FieldValueErrorReason `json:"reason,omitempty"`
    +	FieldPath         *string                                     `json:"fieldPath,omitempty"`
    +	OptionalOldSelf   *bool                                       `json:"optionalOldSelf,omitempty"`
     }
     
    -// ValidationRuleApplyConfiguration constructs an declarative configuration of the ValidationRule type for use with
    +// ValidationRuleApplyConfiguration constructs a declarative configuration of the ValidationRule type for use with
     // apply.
     func ValidationRule() *ValidationRuleApplyConfiguration {
     	return &ValidationRuleApplyConfiguration{}
    @@ -66,7 +66,7 @@ func (b *ValidationRuleApplyConfiguration) WithMessageExpression(value string) *
     // WithReason sets the Reason field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Reason field is set to the value of the last call.
    -func (b *ValidationRuleApplyConfiguration) WithReason(value v1beta1.FieldValueErrorReason) *ValidationRuleApplyConfiguration {
    +func (b *ValidationRuleApplyConfiguration) WithReason(value apiextensionsv1beta1.FieldValueErrorReason) *ValidationRuleApplyConfiguration {
     	b.Reason = &value
     	return b
     }
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/webhookclientconfig.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/webhookclientconfig.go
    index 490f9d5f3f8f..76ff71b4aec3 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/webhookclientconfig.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/webhookclientconfig.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// WebhookClientConfigApplyConfiguration represents an declarative configuration of the WebhookClientConfig type for use
    +// WebhookClientConfigApplyConfiguration represents a declarative configuration of the WebhookClientConfig type for use
     // with apply.
     type WebhookClientConfigApplyConfiguration struct {
     	URL      *string                             `json:"url,omitempty"`
    @@ -26,7 +26,7 @@ type WebhookClientConfigApplyConfiguration struct {
     	CABundle []byte                              `json:"caBundle,omitempty"`
     }
     
    -// WebhookClientConfigApplyConfiguration constructs an declarative configuration of the WebhookClientConfig type for use with
    +// WebhookClientConfigApplyConfiguration constructs a declarative configuration of the WebhookClientConfig type for use with
     // apply.
     func WebhookClientConfig() *WebhookClientConfigApplyConfiguration {
     	return &WebhookClientConfigApplyConfiguration{}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go
    index 449285e17960..93dd79d63f5a 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go
    @@ -19,8 +19,8 @@ limitations under the License.
     package clientset
     
     import (
    -	"fmt"
    -	"net/http"
    +	fmt "fmt"
    +	http "net/http"
     
     	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1"
     	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1"
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/apiextensions_client.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/apiextensions_client.go
    index 0bdc44c40874..cd766a2dccad 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/apiextensions_client.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/apiextensions_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    -	"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme"
    +	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    +	scheme "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *ApiextensionsV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := apiextensionsv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/customresourcedefinition.go
    index 3949426cb74f..1197071d0208 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/customresourcedefinition.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/customresourcedefinition.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    -	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1"
    +	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    +	applyconfigurationapiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1"
     	scheme "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rest "k8s.io/client-go/rest"
    +	gentype "k8s.io/client-go/gentype"
     )
     
     // CustomResourceDefinitionsGetter has a method to return a CustomResourceDefinitionInterface.
    @@ -41,203 +38,40 @@ type CustomResourceDefinitionsGetter interface {
     
     // CustomResourceDefinitionInterface has methods to work with CustomResourceDefinition resources.
     type CustomResourceDefinitionInterface interface {
    -	Create(ctx context.Context, customResourceDefinition *v1.CustomResourceDefinition, opts metav1.CreateOptions) (*v1.CustomResourceDefinition, error)
    -	Update(ctx context.Context, customResourceDefinition *v1.CustomResourceDefinition, opts metav1.UpdateOptions) (*v1.CustomResourceDefinition, error)
    -	UpdateStatus(ctx context.Context, customResourceDefinition *v1.CustomResourceDefinition, opts metav1.UpdateOptions) (*v1.CustomResourceDefinition, error)
    +	Create(ctx context.Context, customResourceDefinition *apiextensionsv1.CustomResourceDefinition, opts metav1.CreateOptions) (*apiextensionsv1.CustomResourceDefinition, error)
    +	Update(ctx context.Context, customResourceDefinition *apiextensionsv1.CustomResourceDefinition, opts metav1.UpdateOptions) (*apiextensionsv1.CustomResourceDefinition, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, customResourceDefinition *apiextensionsv1.CustomResourceDefinition, opts metav1.UpdateOptions) (*apiextensionsv1.CustomResourceDefinition, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.CustomResourceDefinition, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.CustomResourceDefinitionList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*apiextensionsv1.CustomResourceDefinition, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*apiextensionsv1.CustomResourceDefinitionList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CustomResourceDefinition, err error)
    -	Apply(ctx context.Context, customResourceDefinition *apiextensionsv1.CustomResourceDefinitionApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CustomResourceDefinition, err error)
    -	ApplyStatus(ctx context.Context, customResourceDefinition *apiextensionsv1.CustomResourceDefinitionApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CustomResourceDefinition, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *apiextensionsv1.CustomResourceDefinition, err error)
    +	Apply(ctx context.Context, customResourceDefinition *applyconfigurationapiextensionsv1.CustomResourceDefinitionApplyConfiguration, opts metav1.ApplyOptions) (result *apiextensionsv1.CustomResourceDefinition, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, customResourceDefinition *applyconfigurationapiextensionsv1.CustomResourceDefinitionApplyConfiguration, opts metav1.ApplyOptions) (result *apiextensionsv1.CustomResourceDefinition, err error)
     	CustomResourceDefinitionExpansion
     }
     
     // customResourceDefinitions implements CustomResourceDefinitionInterface
     type customResourceDefinitions struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*apiextensionsv1.CustomResourceDefinition, *apiextensionsv1.CustomResourceDefinitionList, *applyconfigurationapiextensionsv1.CustomResourceDefinitionApplyConfiguration]
     }
     
     // newCustomResourceDefinitions returns a CustomResourceDefinitions
     func newCustomResourceDefinitions(c *ApiextensionsV1Client) *customResourceDefinitions {
     	return &customResourceDefinitions{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*apiextensionsv1.CustomResourceDefinition, *apiextensionsv1.CustomResourceDefinitionList, *applyconfigurationapiextensionsv1.CustomResourceDefinitionApplyConfiguration](
    +			"customresourcedefinitions",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *apiextensionsv1.CustomResourceDefinition { return &apiextensionsv1.CustomResourceDefinition{} },
    +			func() *apiextensionsv1.CustomResourceDefinitionList {
    +				return &apiextensionsv1.CustomResourceDefinitionList{}
    +			},
    +			gentype.PrefersProtobuf[*apiextensionsv1.CustomResourceDefinition](),
    +		),
     	}
     }
    -
    -// Get takes name of the customResourceDefinition, and returns the corresponding customResourceDefinition object, and an error if there is any.
    -func (c *customResourceDefinitions) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CustomResourceDefinition, err error) {
    -	result = &v1.CustomResourceDefinition{}
    -	err = c.client.Get().
    -		Resource("customresourcedefinitions").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CustomResourceDefinitions that match those selectors.
    -func (c *customResourceDefinitions) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CustomResourceDefinitionList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.CustomResourceDefinitionList{}
    -	err = c.client.Get().
    -		Resource("customresourcedefinitions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested customResourceDefinitions.
    -func (c *customResourceDefinitions) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("customresourcedefinitions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a customResourceDefinition and creates it.  Returns the server's representation of the customResourceDefinition, and an error, if there is any.
    -func (c *customResourceDefinitions) Create(ctx context.Context, customResourceDefinition *v1.CustomResourceDefinition, opts metav1.CreateOptions) (result *v1.CustomResourceDefinition, err error) {
    -	result = &v1.CustomResourceDefinition{}
    -	err = c.client.Post().
    -		Resource("customresourcedefinitions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(customResourceDefinition).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a customResourceDefinition and updates it. Returns the server's representation of the customResourceDefinition, and an error, if there is any.
    -func (c *customResourceDefinitions) Update(ctx context.Context, customResourceDefinition *v1.CustomResourceDefinition, opts metav1.UpdateOptions) (result *v1.CustomResourceDefinition, err error) {
    -	result = &v1.CustomResourceDefinition{}
    -	err = c.client.Put().
    -		Resource("customresourcedefinitions").
    -		Name(customResourceDefinition.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(customResourceDefinition).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *customResourceDefinitions) UpdateStatus(ctx context.Context, customResourceDefinition *v1.CustomResourceDefinition, opts metav1.UpdateOptions) (result *v1.CustomResourceDefinition, err error) {
    -	result = &v1.CustomResourceDefinition{}
    -	err = c.client.Put().
    -		Resource("customresourcedefinitions").
    -		Name(customResourceDefinition.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(customResourceDefinition).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the customResourceDefinition and deletes it. Returns an error if one occurs.
    -func (c *customResourceDefinitions) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("customresourcedefinitions").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *customResourceDefinitions) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("customresourcedefinitions").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched customResourceDefinition.
    -func (c *customResourceDefinitions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CustomResourceDefinition, err error) {
    -	result = &v1.CustomResourceDefinition{}
    -	err = c.client.Patch(pt).
    -		Resource("customresourcedefinitions").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied customResourceDefinition.
    -func (c *customResourceDefinitions) Apply(ctx context.Context, customResourceDefinition *apiextensionsv1.CustomResourceDefinitionApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CustomResourceDefinition, err error) {
    -	if customResourceDefinition == nil {
    -		return nil, fmt.Errorf("customResourceDefinition provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(customResourceDefinition)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := customResourceDefinition.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("customResourceDefinition.Name must be provided to Apply")
    -	}
    -	result = &v1.CustomResourceDefinition{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("customresourcedefinitions").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *customResourceDefinitions) ApplyStatus(ctx context.Context, customResourceDefinition *apiextensionsv1.CustomResourceDefinitionApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CustomResourceDefinition, err error) {
    -	if customResourceDefinition == nil {
    -		return nil, fmt.Errorf("customResourceDefinition provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(customResourceDefinition)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := customResourceDefinition.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("customResourceDefinition.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.CustomResourceDefinition{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("customresourcedefinitions").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/apiextensions_client.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/apiextensions_client.go
    index 657ce2ca8d28..e45f25d586b4 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/apiextensions_client.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/apiextensions_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
    -	"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme"
    +	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
    +	scheme "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *ApiextensionsV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := apiextensionsv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go
    index 0e5b482a30b6..e7ea4e971f2d 100644
    --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go
    +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
    -	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
    +	applyconfigurationapiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1"
     	scheme "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rest "k8s.io/client-go/rest"
    +	gentype "k8s.io/client-go/gentype"
     )
     
     // CustomResourceDefinitionsGetter has a method to return a CustomResourceDefinitionInterface.
    @@ -41,203 +38,42 @@ type CustomResourceDefinitionsGetter interface {
     
     // CustomResourceDefinitionInterface has methods to work with CustomResourceDefinition resources.
     type CustomResourceDefinitionInterface interface {
    -	Create(ctx context.Context, customResourceDefinition *v1beta1.CustomResourceDefinition, opts v1.CreateOptions) (*v1beta1.CustomResourceDefinition, error)
    -	Update(ctx context.Context, customResourceDefinition *v1beta1.CustomResourceDefinition, opts v1.UpdateOptions) (*v1beta1.CustomResourceDefinition, error)
    -	UpdateStatus(ctx context.Context, customResourceDefinition *v1beta1.CustomResourceDefinition, opts v1.UpdateOptions) (*v1beta1.CustomResourceDefinition, error)
    +	Create(ctx context.Context, customResourceDefinition *apiextensionsv1beta1.CustomResourceDefinition, opts v1.CreateOptions) (*apiextensionsv1beta1.CustomResourceDefinition, error)
    +	Update(ctx context.Context, customResourceDefinition *apiextensionsv1beta1.CustomResourceDefinition, opts v1.UpdateOptions) (*apiextensionsv1beta1.CustomResourceDefinition, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, customResourceDefinition *apiextensionsv1beta1.CustomResourceDefinition, opts v1.UpdateOptions) (*apiextensionsv1beta1.CustomResourceDefinition, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.CustomResourceDefinition, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.CustomResourceDefinitionList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*apiextensionsv1beta1.CustomResourceDefinition, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*apiextensionsv1beta1.CustomResourceDefinitionList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CustomResourceDefinition, err error)
    -	Apply(ctx context.Context, customResourceDefinition *apiextensionsv1beta1.CustomResourceDefinitionApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CustomResourceDefinition, err error)
    -	ApplyStatus(ctx context.Context, customResourceDefinition *apiextensionsv1beta1.CustomResourceDefinitionApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CustomResourceDefinition, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *apiextensionsv1beta1.CustomResourceDefinition, err error)
    +	Apply(ctx context.Context, customResourceDefinition *applyconfigurationapiextensionsv1beta1.CustomResourceDefinitionApplyConfiguration, opts v1.ApplyOptions) (result *apiextensionsv1beta1.CustomResourceDefinition, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, customResourceDefinition *applyconfigurationapiextensionsv1beta1.CustomResourceDefinitionApplyConfiguration, opts v1.ApplyOptions) (result *apiextensionsv1beta1.CustomResourceDefinition, err error)
     	CustomResourceDefinitionExpansion
     }
     
     // customResourceDefinitions implements CustomResourceDefinitionInterface
     type customResourceDefinitions struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*apiextensionsv1beta1.CustomResourceDefinition, *apiextensionsv1beta1.CustomResourceDefinitionList, *applyconfigurationapiextensionsv1beta1.CustomResourceDefinitionApplyConfiguration]
     }
     
     // newCustomResourceDefinitions returns a CustomResourceDefinitions
     func newCustomResourceDefinitions(c *ApiextensionsV1beta1Client) *customResourceDefinitions {
     	return &customResourceDefinitions{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*apiextensionsv1beta1.CustomResourceDefinition, *apiextensionsv1beta1.CustomResourceDefinitionList, *applyconfigurationapiextensionsv1beta1.CustomResourceDefinitionApplyConfiguration](
    +			"customresourcedefinitions",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *apiextensionsv1beta1.CustomResourceDefinition {
    +				return &apiextensionsv1beta1.CustomResourceDefinition{}
    +			},
    +			func() *apiextensionsv1beta1.CustomResourceDefinitionList {
    +				return &apiextensionsv1beta1.CustomResourceDefinitionList{}
    +			},
    +			gentype.PrefersProtobuf[*apiextensionsv1beta1.CustomResourceDefinition](),
    +		),
     	}
     }
    -
    -// Get takes name of the customResourceDefinition, and returns the corresponding customResourceDefinition object, and an error if there is any.
    -func (c *customResourceDefinitions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CustomResourceDefinition, err error) {
    -	result = &v1beta1.CustomResourceDefinition{}
    -	err = c.client.Get().
    -		Resource("customresourcedefinitions").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CustomResourceDefinitions that match those selectors.
    -func (c *customResourceDefinitions) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CustomResourceDefinitionList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.CustomResourceDefinitionList{}
    -	err = c.client.Get().
    -		Resource("customresourcedefinitions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested customResourceDefinitions.
    -func (c *customResourceDefinitions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("customresourcedefinitions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a customResourceDefinition and creates it.  Returns the server's representation of the customResourceDefinition, and an error, if there is any.
    -func (c *customResourceDefinitions) Create(ctx context.Context, customResourceDefinition *v1beta1.CustomResourceDefinition, opts v1.CreateOptions) (result *v1beta1.CustomResourceDefinition, err error) {
    -	result = &v1beta1.CustomResourceDefinition{}
    -	err = c.client.Post().
    -		Resource("customresourcedefinitions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(customResourceDefinition).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a customResourceDefinition and updates it. Returns the server's representation of the customResourceDefinition, and an error, if there is any.
    -func (c *customResourceDefinitions) Update(ctx context.Context, customResourceDefinition *v1beta1.CustomResourceDefinition, opts v1.UpdateOptions) (result *v1beta1.CustomResourceDefinition, err error) {
    -	result = &v1beta1.CustomResourceDefinition{}
    -	err = c.client.Put().
    -		Resource("customresourcedefinitions").
    -		Name(customResourceDefinition.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(customResourceDefinition).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *customResourceDefinitions) UpdateStatus(ctx context.Context, customResourceDefinition *v1beta1.CustomResourceDefinition, opts v1.UpdateOptions) (result *v1beta1.CustomResourceDefinition, err error) {
    -	result = &v1beta1.CustomResourceDefinition{}
    -	err = c.client.Put().
    -		Resource("customresourcedefinitions").
    -		Name(customResourceDefinition.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(customResourceDefinition).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the customResourceDefinition and deletes it. Returns an error if one occurs.
    -func (c *customResourceDefinitions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("customresourcedefinitions").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *customResourceDefinitions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("customresourcedefinitions").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched customResourceDefinition.
    -func (c *customResourceDefinitions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CustomResourceDefinition, err error) {
    -	result = &v1beta1.CustomResourceDefinition{}
    -	err = c.client.Patch(pt).
    -		Resource("customresourcedefinitions").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied customResourceDefinition.
    -func (c *customResourceDefinitions) Apply(ctx context.Context, customResourceDefinition *apiextensionsv1beta1.CustomResourceDefinitionApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CustomResourceDefinition, err error) {
    -	if customResourceDefinition == nil {
    -		return nil, fmt.Errorf("customResourceDefinition provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(customResourceDefinition)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := customResourceDefinition.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("customResourceDefinition.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.CustomResourceDefinition{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("customresourcedefinitions").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *customResourceDefinitions) ApplyStatus(ctx context.Context, customResourceDefinition *apiextensionsv1beta1.CustomResourceDefinitionApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CustomResourceDefinition, err error) {
    -	if customResourceDefinition == nil {
    -		return nil, fmt.Errorf("customResourceDefinition provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(customResourceDefinition)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := customResourceDefinition.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("customResourceDefinition.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.CustomResourceDefinition{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("customresourcedefinitions").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/apimachinery/pkg/api/apitesting/fuzzer/fuzzer.go b/vendor/k8s.io/apimachinery/pkg/api/apitesting/fuzzer/fuzzer.go
    index f528e9f92de4..f8539fa998a4 100644
    --- a/vendor/k8s.io/apimachinery/pkg/api/apitesting/fuzzer/fuzzer.go
    +++ b/vendor/k8s.io/apimachinery/pkg/api/apitesting/fuzzer/fuzzer.go
    @@ -17,11 +17,15 @@ limitations under the License.
     package fuzzer
     
     import (
    +	"encoding/json"
    +	"fmt"
     	"math/rand"
     
     	"github.com/google/gofuzz"
     
    +	"k8s.io/apimachinery/pkg/runtime"
     	runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
    +	kjson "k8s.io/apimachinery/pkg/util/json"
     )
     
     // FuzzerFuncs returns a list of func(*SomeType, c fuzz.Continue) functions.
    @@ -50,3 +54,20 @@ func MergeFuzzerFuncs(funcs ...FuzzerFuncs) FuzzerFuncs {
     		return result
     	})
     }
    +
    +func NormalizeJSONRawExtension(ext *runtime.RawExtension) {
    +	if json.Valid(ext.Raw) {
    +		// RawExtension->JSON encodes struct fields in field index order while map[string]interface{}->JSON encodes
    +		// struct fields (i.e. keys in the map) lexicographically. We have to sort the fields here to ensure the
    +		// JSON in the (RawExtension->)JSON->map[string]interface{}->JSON round trip results in identical JSON.
    +		var u any
    +		err := kjson.Unmarshal(ext.Raw, &u)
    +		if err != nil {
    +			panic(fmt.Sprintf("Failed to encode object: %v", err))
    +		}
    +		ext.Raw, err = kjson.Marshal(&u)
    +		if err != nil {
    +			panic(fmt.Sprintf("Failed to encode object: %v", err))
    +		}
    +	}
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/compatibility.go b/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/compatibility.go
    index e80d6d68a15f..76ce9e2426ff 100644
    --- a/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/compatibility.go
    +++ b/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/compatibility.go
    @@ -181,10 +181,10 @@ func (c *CompatibilityTestOptions) Complete(t *testing.T) *CompatibilityTestOpti
     	}
     
     	if c.JSON == nil {
    -		c.JSON = json.NewSerializer(json.DefaultMetaFactory, c.Scheme, c.Scheme, true)
    +		c.JSON = json.NewSerializerWithOptions(json.DefaultMetaFactory, c.Scheme, c.Scheme, json.SerializerOptions{Pretty: true})
     	}
     	if c.YAML == nil {
    -		c.YAML = json.NewYAMLSerializer(json.DefaultMetaFactory, c.Scheme, c.Scheme)
    +		c.YAML = json.NewSerializerWithOptions(json.DefaultMetaFactory, c.Scheme, c.Scheme, json.SerializerOptions{Yaml: true})
     	}
     	if c.Proto == nil {
     		c.Proto = protobuf.NewSerializer(c.Scheme, c.Scheme)
    diff --git a/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/roundtrip.go b/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/roundtrip.go
    index eb6c7cfa81ca..120a68540900 100644
    --- a/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/roundtrip.go
    +++ b/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/roundtrip.go
    @@ -279,7 +279,7 @@ func roundTripOfExternalType(t *testing.T, scheme *runtime.Scheme, codecFactory
     	typeAcc.SetKind(externalGVK.Kind)
     	typeAcc.SetAPIVersion(externalGVK.GroupVersion().String())
     
    -	roundTrip(t, scheme, json.NewSerializer(json.DefaultMetaFactory, scheme, scheme, false), object)
    +	roundTrip(t, scheme, json.NewSerializerWithOptions(json.DefaultMetaFactory, scheme, scheme, json.SerializerOptions{}), object)
     
     	// TODO remove this hack after we're past the intermediate steps
     	if !skipProtobuf {
    @@ -350,14 +350,14 @@ func roundTrip(t *testing.T, scheme *runtime.Scheme, codec runtime.Codec, object
     	// decode (deserialize) the encoded data back into an object
     	obj2, err := runtime.Decode(codec, data)
     	if err != nil {
    -		t.Errorf("%v: %v\nCodec: %#v\nData: %s\nSource: %#v", name, err, codec, dataAsString(data), dump.Pretty(object))
    +		t.Errorf("%v: %v\nCodec: %#v\nData: %s\nSource: %s", name, err, codec, dataAsString(data), dump.Pretty(object))
     		panic("failed")
     	}
     
     	// ensure that the object produced from decoding the encoded data is equal
     	// to the original object
     	if !apiequality.Semantic.DeepEqual(original, obj2) {
    -		t.Errorf("%v: diff: %v\nCodec: %#v\nSource:\n\n%#v\n\nEncoded:\n\n%s\n\nFinal:\n\n%#v", name, cmp.Diff(original, obj2), codec, dump.Pretty(original), dataAsString(data), dump.Pretty(obj2))
    +		t.Errorf("%v: diff: %v\nCodec: %#v\nSource:\n\n%s\n\nEncoded:\n\n%s\n\nFinal:\n\n%s", name, cmp.Diff(original, obj2), codec, dump.Pretty(original), dataAsString(data), dump.Pretty(obj2))
     		return
     	}
     
    diff --git a/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/unstructured.go b/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/unstructured.go
    new file mode 100644
    index 000000000000..de10580f5df3
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/api/apitesting/roundtrip/unstructured.go
    @@ -0,0 +1,247 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package roundtrip
    +
    +import (
    +	"bytes"
    +	"fmt"
    +	"math/rand"
    +	"os"
    +	"strconv"
    +	"testing"
    +	"time"
    +
    +	"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
    +	apiequality "k8s.io/apimachinery/pkg/api/equality"
    +	metafuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer"
    +	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/runtime/schema"
    +	"k8s.io/apimachinery/pkg/runtime/serializer"
    +	cborserializer "k8s.io/apimachinery/pkg/runtime/serializer/cbor"
    +	cbor "k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct"
    +	jsonserializer "k8s.io/apimachinery/pkg/runtime/serializer/json"
    +	"k8s.io/apimachinery/pkg/util/sets"
    +
    +	"github.com/google/go-cmp/cmp"
    +)
    +
    +// RoundtripToUnstructured verifies the roundtrip faithfulness of all external types in a scheme
    +// from native to unstructured and back using both the JSON and CBOR serializers. The intermediate
    +// unstructured objects produced by both encodings must be identical and be themselves
    +// roundtrippable to JSON and CBOR.
    +//
    +// Values for all external types in the scheme are generated by fuzzing the a value of the
    +// corresponding internal type and converting it, except for types whose registered GVK appears in
    +// the "nointernal" set, which are fuzzed directly.
    +func RoundtripToUnstructured(t *testing.T, scheme *runtime.Scheme, funcs fuzzer.FuzzerFuncs, skipped sets.Set[schema.GroupVersionKind], nointernal sets.Set[schema.GroupVersionKind]) {
    +	codecs := serializer.NewCodecFactory(scheme)
    +
    +	seed := int64(time.Now().Nanosecond())
    +	if override := os.Getenv("TEST_RAND_SEED"); len(override) > 0 {
    +		overrideSeed, err := strconv.ParseInt(override, 10, 64)
    +		if err != nil {
    +			t.Fatal(err)
    +		}
    +		seed = overrideSeed
    +		t.Logf("using overridden seed: %d", seed)
    +	} else {
    +		t.Logf("seed (override with TEST_RAND_SEED if desired): %d", seed)
    +	}
    +
    +	var buf bytes.Buffer
    +	for gvk := range scheme.AllKnownTypes() {
    +		if globalNonRoundTrippableTypes.Has(gvk.Kind) {
    +			continue
    +		}
    +
    +		if gvk.Version == runtime.APIVersionInternal {
    +			continue
    +		}
    +
    +		subtestName := fmt.Sprintf("%s.%s/%s", gvk.Version, gvk.Group, gvk.Kind)
    +		if gvk.Group == "" {
    +			subtestName = fmt.Sprintf("%s/%s", gvk.Version, gvk.Kind)
    +		}
    +
    +		t.Run(subtestName, func(t *testing.T) {
    +			if skipped.Has(gvk) {
    +				t.SkipNow()
    +			}
    +
    +			fuzzer := fuzzer.FuzzerFor(fuzzer.MergeFuzzerFuncs(metafuzzer.Funcs, funcs), rand.NewSource(seed), codecs)
    +
    +			for i := 0; i < *FuzzIters; i++ {
    +				item, err := scheme.New(gvk)
    +				if err != nil {
    +					t.Fatalf("couldn't create external object %v: %v", gvk.Kind, err)
    +				}
    +
    +				if nointernal.Has(gvk) {
    +					fuzzer.Fuzz(item)
    +				} else {
    +					internalObj, err := scheme.New(gvk.GroupKind().WithVersion(runtime.APIVersionInternal))
    +					if err != nil {
    +						t.Fatalf("couldn't create internal object %v: %v", gvk.Kind, err)
    +					}
    +					fuzzer.Fuzz(internalObj)
    +
    +					if err := scheme.Convert(internalObj, item, nil); err != nil {
    +						t.Fatalf("conversion for %v failed: %v", gvk.Kind, err)
    +					}
    +				}
    +
    +				// Decoding into Unstructured requires that apiVersion and kind be
    +				// serialized, so populate TypeMeta.
    +				item.GetObjectKind().SetGroupVersionKind(gvk)
    +
    +				jsonSerializer := jsonserializer.NewSerializerWithOptions(jsonserializer.DefaultMetaFactory, scheme, scheme, jsonserializer.SerializerOptions{})
    +				cborSerializer := cborserializer.NewSerializer(scheme, scheme)
    +
    +				// original->JSON->Unstructured
    +				buf.Reset()
    +				if err := jsonSerializer.Encode(item, &buf); err != nil {
    +					t.Fatalf("error encoding native to json: %v", err)
    +				}
    +				var uJSON runtime.Object = &unstructured.Unstructured{}
    +				uJSON, _, err = jsonSerializer.Decode(buf.Bytes(), &gvk, uJSON)
    +				if err != nil {
    +					t.Fatalf("error decoding json to unstructured: %v", err)
    +				}
    +
    +				// original->CBOR->Unstructured
    +				buf.Reset()
    +				if err := cborSerializer.Encode(item, &buf); err != nil {
    +					t.Fatalf("error encoding native to cbor: %v", err)
    +				}
    +				var uCBOR runtime.Object = &unstructured.Unstructured{}
    +				uCBOR, _, err = cborSerializer.Decode(buf.Bytes(), &gvk, uCBOR)
    +				if err != nil {
    +					diag, _ := cbor.Diagnose(buf.Bytes())
    +					t.Fatalf("error decoding cbor to unstructured: %v, diag: %s", err, diag)
    +				}
    +
    +				// original->JSON->Unstructured == original->CBOR->Unstructured
    +				if !apiequality.Semantic.DeepEqual(uJSON, uCBOR) {
    +					t.Fatalf("unstructured via json differed from unstructured via cbor: %v", cmp.Diff(uJSON, uCBOR))
    +				}
    +
    +				// original->CBOR(nondeterministic)->Unstructured
    +				buf.Reset()
    +				if err := cborSerializer.EncodeNondeterministic(item, &buf); err != nil {
    +					t.Fatalf("error encoding native to cbor: %v", err)
    +				}
    +				var uCBORNondeterministic runtime.Object = &unstructured.Unstructured{}
    +				uCBORNondeterministic, _, err = cborSerializer.Decode(buf.Bytes(), &gvk, uCBORNondeterministic)
    +				if err != nil {
    +					diag, _ := cbor.Diagnose(buf.Bytes())
    +					t.Fatalf("error decoding cbor to unstructured: %v, diag: %s", err, diag)
    +				}
    +
    +				// original->CBOR->Unstructured == original->CBOR(nondeterministic)->Unstructured
    +				if !apiequality.Semantic.DeepEqual(uCBOR, uCBORNondeterministic) {
    +					t.Fatalf("unstructured via nondeterministic cbor differed from unstructured via cbor: %v", cmp.Diff(uCBOR, uCBORNondeterministic))
    +				}
    +
    +				// original->JSON/CBOR->Unstructured == original->JSON/CBOR->Unstructured->JSON->Unstructured
    +				buf.Reset()
    +				if err := jsonSerializer.Encode(uJSON, &buf); err != nil {
    +					t.Fatalf("error encoding unstructured to json: %v", err)
    +				}
    +				var uJSON2 runtime.Object = &unstructured.Unstructured{}
    +				uJSON2, _, err = jsonSerializer.Decode(buf.Bytes(), &gvk, uJSON2)
    +				if err != nil {
    +					t.Fatalf("error decoding json to unstructured: %v", err)
    +				}
    +				if !apiequality.Semantic.DeepEqual(uJSON, uJSON2) {
    +					t.Errorf("object changed during native-json-unstructured-json-unstructured roundtrip, diff: %s", cmp.Diff(uJSON, uJSON2))
    +				}
    +
    +				// original->JSON/CBOR->Unstructured == original->JSON/CBOR->Unstructured->CBOR->Unstructured
    +				buf.Reset()
    +				if err := cborSerializer.Encode(uCBOR, &buf); err != nil {
    +					t.Fatalf("error encoding unstructured to cbor: %v", err)
    +				}
    +				var uCBOR2 runtime.Object = &unstructured.Unstructured{}
    +				uCBOR2, _, err = cborSerializer.Decode(buf.Bytes(), &gvk, uCBOR2)
    +				if err != nil {
    +					diag, _ := cbor.Diagnose(buf.Bytes())
    +					t.Fatalf("error decoding cbor to unstructured: %v, diag: %s", err, diag)
    +				}
    +				if !apiequality.Semantic.DeepEqual(uCBOR, uCBOR2) {
    +					t.Errorf("object changed during native-cbor-unstructured-cbor-unstructured roundtrip, diff: %s", cmp.Diff(uCBOR, uCBOR2))
    +				}
    +
    +				// original->JSON/CBOR->Unstructured->CBOR->Unstructured == original->JSON/CBOR->Unstructured->CBOR(nondeterministic)->Unstructured
    +				buf.Reset()
    +				if err := cborSerializer.EncodeNondeterministic(uCBOR, &buf); err != nil {
    +					t.Fatalf("error encoding unstructured to cbor: %v", err)
    +				}
    +				var uCBOR2Nondeterministic runtime.Object = &unstructured.Unstructured{}
    +				uCBOR2Nondeterministic, _, err = cborSerializer.Decode(buf.Bytes(), &gvk, uCBOR2Nondeterministic)
    +				if err != nil {
    +					diag, _ := cbor.Diagnose(buf.Bytes())
    +					t.Fatalf("error decoding cbor to unstructured: %v, diag: %s", err, diag)
    +				}
    +				if !apiequality.Semantic.DeepEqual(uCBOR, uCBOR2Nondeterministic) {
    +					t.Errorf("object changed during native-cbor-unstructured-cbor(nondeterministic)-unstructured roundtrip, diff: %s", cmp.Diff(uCBOR, uCBOR2Nondeterministic))
    +				}
    +
    +				// original->JSON/CBOR->Unstructured->JSON->final == original
    +				buf.Reset()
    +				if err := jsonSerializer.Encode(uJSON, &buf); err != nil {
    +					t.Fatalf("error encoding unstructured to json: %v", err)
    +				}
    +				finalJSON, _, err := jsonSerializer.Decode(buf.Bytes(), &gvk, nil)
    +				if err != nil {
    +					t.Fatalf("error decoding json to native: %v", err)
    +				}
    +				if !apiequality.Semantic.DeepEqual(item, finalJSON) {
    +					t.Errorf("object changed during native-json-unstructured-json-native roundtrip, diff: %s", cmp.Diff(item, finalJSON))
    +				}
    +
    +				// original->JSON/CBOR->Unstructured->CBOR->final == original
    +				buf.Reset()
    +				if err := cborSerializer.Encode(uCBOR, &buf); err != nil {
    +					t.Fatalf("error encoding unstructured to cbor: %v", err)
    +				}
    +				finalCBOR, _, err := cborSerializer.Decode(buf.Bytes(), &gvk, nil)
    +				if err != nil {
    +					diag, _ := cbor.Diagnose(buf.Bytes())
    +					t.Fatalf("error decoding cbor to native: %v, diag: %s", err, diag)
    +				}
    +				if !apiequality.Semantic.DeepEqual(item, finalCBOR) {
    +					t.Errorf("object changed during native-cbor-unstructured-cbor-native roundtrip, diff: %s", cmp.Diff(item, finalCBOR))
    +				}
    +
    +				// original->JSON/CBOR->Unstructured->CBOR(nondeterministic)->final == original
    +				buf.Reset()
    +				if err := cborSerializer.EncodeNondeterministic(uCBOR, &buf); err != nil {
    +					t.Fatalf("error encoding unstructured to cbor: %v", err)
    +				}
    +				finalCBORNondeterministic, _, err := cborSerializer.Decode(buf.Bytes(), &gvk, nil)
    +				if err != nil {
    +					diag, _ := cbor.Diagnose(buf.Bytes())
    +					t.Fatalf("error decoding cbor to native: %v, diag: %s", err, diag)
    +				}
    +				if !apiequality.Semantic.DeepEqual(item, finalCBORNondeterministic) {
    +					t.Errorf("object changed during native-cbor-unstructured-cbor-native roundtrip, diff: %s", cmp.Diff(item, finalCBORNondeterministic))
    +				}
    +			}
    +		})
    +	}
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go b/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go
    index 57e0e71f672b..6a3ab8f24e21 100644
    --- a/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go
    +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go
    @@ -54,6 +54,7 @@ var knownReasons = map[metav1.StatusReason]struct{}{
     	metav1.StatusReasonGone:                  {},
     	metav1.StatusReasonInvalid:               {},
     	metav1.StatusReasonServerTimeout:         {},
    +	metav1.StatusReasonStoreReadError:        {},
     	metav1.StatusReasonTimeout:               {},
     	metav1.StatusReasonTooManyRequests:       {},
     	metav1.StatusReasonBadRequest:            {},
    @@ -775,6 +776,12 @@ func IsUnexpectedObjectError(err error) bool {
     	return err != nil && (ok || errors.As(err, &uoe))
     }
     
    +// IsStoreReadError determines if err is due to either failure to transform the
    +// data from the storage, or failure to decode the object appropriately.
    +func IsStoreReadError(err error) bool {
    +	return ReasonForError(err) == metav1.StatusReasonStoreReadError
    +}
    +
     // SuggestsClientDelay returns true if this error suggests a client delay as well as the
     // suggested seconds to wait, or false if the error does not imply a wait. It does not
     // address whether the error *should* be retried, since some errors (like a 3xx) may
    diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/testrestmapper/test_restmapper.go b/vendor/k8s.io/apimachinery/pkg/api/meta/testrestmapper/test_restmapper.go
    new file mode 100644
    index 000000000000..72c6438cb613
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/testrestmapper/test_restmapper.go
    @@ -0,0 +1,165 @@
    +/*
    +Copyright 2018 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package testrestmapper
    +
    +import (
    +	"k8s.io/apimachinery/pkg/api/meta"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/runtime/schema"
    +	"k8s.io/apimachinery/pkg/util/sets"
    +)
    +
    +// TestOnlyStaticRESTMapper returns a union RESTMapper of all known types with priorities chosen in the following order:
    +//  1. legacy kube group preferred version, extensions preferred version, metrics preferred version, legacy
    +//     kube any version, extensions any version, metrics any version, all other groups alphabetical preferred version,
    +//     all other groups alphabetical.
    +//
    +// TODO callers of this method should be updated to build their own specific restmapper based on their scheme for their tests
    +// TODO the things being tested are related to whether various cases are handled, not tied to the particular types being checked.
    +func TestOnlyStaticRESTMapper(scheme *runtime.Scheme, versionPatterns ...schema.GroupVersion) meta.RESTMapper {
    +	unionMapper := meta.MultiRESTMapper{}
    +	unionedGroups := sets.NewString()
    +	for _, enabledVersion := range scheme.PrioritizedVersionsAllGroups() {
    +		if !unionedGroups.Has(enabledVersion.Group) {
    +			unionedGroups.Insert(enabledVersion.Group)
    +			unionMapper = append(unionMapper, newRESTMapper(enabledVersion.Group, scheme))
    +		}
    +	}
    +
    +	if len(versionPatterns) != 0 {
    +		resourcePriority := []schema.GroupVersionResource{}
    +		kindPriority := []schema.GroupVersionKind{}
    +		for _, versionPriority := range versionPatterns {
    +			resourcePriority = append(resourcePriority, versionPriority.WithResource(meta.AnyResource))
    +			kindPriority = append(kindPriority, versionPriority.WithKind(meta.AnyKind))
    +		}
    +
    +		return meta.PriorityRESTMapper{Delegate: unionMapper, ResourcePriority: resourcePriority, KindPriority: kindPriority}
    +	}
    +
    +	prioritizedGroups := []string{"", "extensions", "metrics"}
    +	resourcePriority, kindPriority := prioritiesForGroups(scheme, prioritizedGroups...)
    +
    +	prioritizedGroupsSet := sets.NewString(prioritizedGroups...)
    +	remainingGroups := sets.String{}
    +	for _, enabledVersion := range scheme.PrioritizedVersionsAllGroups() {
    +		if !prioritizedGroupsSet.Has(enabledVersion.Group) {
    +			remainingGroups.Insert(enabledVersion.Group)
    +		}
    +	}
    +
    +	remainingResourcePriority, remainingKindPriority := prioritiesForGroups(scheme, remainingGroups.List()...)
    +	resourcePriority = append(resourcePriority, remainingResourcePriority...)
    +	kindPriority = append(kindPriority, remainingKindPriority...)
    +
    +	return meta.PriorityRESTMapper{Delegate: unionMapper, ResourcePriority: resourcePriority, KindPriority: kindPriority}
    +}
    +
    +// prioritiesForGroups returns the resource and kind priorities for a PriorityRESTMapper, preferring the preferred version of each group first,
    +// then any non-preferred version of the group second.
    +func prioritiesForGroups(scheme *runtime.Scheme, groups ...string) ([]schema.GroupVersionResource, []schema.GroupVersionKind) {
    +	resourcePriority := []schema.GroupVersionResource{}
    +	kindPriority := []schema.GroupVersionKind{}
    +
    +	for _, group := range groups {
    +		availableVersions := scheme.PrioritizedVersionsForGroup(group)
    +		if len(availableVersions) > 0 {
    +			resourcePriority = append(resourcePriority, availableVersions[0].WithResource(meta.AnyResource))
    +			kindPriority = append(kindPriority, availableVersions[0].WithKind(meta.AnyKind))
    +		}
    +	}
    +	for _, group := range groups {
    +		resourcePriority = append(resourcePriority, schema.GroupVersionResource{Group: group, Version: meta.AnyVersion, Resource: meta.AnyResource})
    +		kindPriority = append(kindPriority, schema.GroupVersionKind{Group: group, Version: meta.AnyVersion, Kind: meta.AnyKind})
    +	}
    +
    +	return resourcePriority, kindPriority
    +}
    +
    +func newRESTMapper(group string, scheme *runtime.Scheme) meta.RESTMapper {
    +	mapper := meta.NewDefaultRESTMapper(scheme.PrioritizedVersionsForGroup(group))
    +	for _, gv := range scheme.PrioritizedVersionsForGroup(group) {
    +		for kind := range scheme.KnownTypes(gv) {
    +			if ignoredKinds.Has(kind) {
    +				continue
    +			}
    +			scope := meta.RESTScopeNamespace
    +			if rootScopedKinds[gv.WithKind(kind).GroupKind()] {
    +				scope = meta.RESTScopeRoot
    +			}
    +			mapper.Add(gv.WithKind(kind), scope)
    +		}
    +	}
    +
    +	return mapper
    +}
    +
    +// hardcoded is good enough for the test we're running
    +var rootScopedKinds = map[schema.GroupKind]bool{
    +	{Group: "admission.k8s.io", Kind: "AdmissionReview"}: true,
    +
    +	{Group: "admissionregistration.k8s.io", Kind: "ValidatingWebhookConfiguration"}: true,
    +	{Group: "admissionregistration.k8s.io", Kind: "MutatingWebhookConfiguration"}:   true,
    +
    +	{Group: "authentication.k8s.io", Kind: "TokenReview"}: true,
    +
    +	{Group: "authorization.k8s.io", Kind: "SubjectAccessReview"}:     true,
    +	{Group: "authorization.k8s.io", Kind: "SelfSubjectAccessReview"}: true,
    +	{Group: "authorization.k8s.io", Kind: "SelfSubjectRulesReview"}:  true,
    +
    +	{Group: "certificates.k8s.io", Kind: "CertificateSigningRequest"}: true,
    +
    +	{Group: "", Kind: "Node"}:             true,
    +	{Group: "", Kind: "Namespace"}:        true,
    +	{Group: "", Kind: "PersistentVolume"}: true,
    +	{Group: "", Kind: "ComponentStatus"}:  true,
    +
    +	{Group: "rbac.authorization.k8s.io", Kind: "ClusterRole"}:        true,
    +	{Group: "rbac.authorization.k8s.io", Kind: "ClusterRoleBinding"}: true,
    +
    +	{Group: "scheduling.k8s.io", Kind: "PriorityClass"}: true,
    +
    +	{Group: "storage.k8s.io", Kind: "StorageClass"}:     true,
    +	{Group: "storage.k8s.io", Kind: "VolumeAttachment"}: true,
    +
    +	{Group: "apiextensions.k8s.io", Kind: "CustomResourceDefinition"}: true,
    +
    +	{Group: "apiserver.k8s.io", Kind: "AdmissionConfiguration"}: true,
    +
    +	{Group: "audit.k8s.io", Kind: "Event"}:  true,
    +	{Group: "audit.k8s.io", Kind: "Policy"}: true,
    +
    +	{Group: "apiregistration.k8s.io", Kind: "APIService"}: true,
    +
    +	{Group: "metrics.k8s.io", Kind: "NodeMetrics"}: true,
    +
    +	{Group: "wardle.example.com", Kind: "Fischer"}: true,
    +}
    +
    +// hardcoded is good enough for the test we're running
    +var ignoredKinds = sets.NewString(
    +	"ListOptions",
    +	"DeleteOptions",
    +	"Status",
    +	"PodLogOptions",
    +	"PodExecOptions",
    +	"PodAttachOptions",
    +	"PodPortForwardOptions",
    +	"PodProxyOptions",
    +	"NodeProxyOptions",
    +	"ServiceProxyOptions",
    +)
    diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go
    index 53a25d34490c..c3a272168e86 100644
    --- a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go
    +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto
    +// source: k8s.io/apimachinery/pkg/api/resource/generated.proto
     
     package resource
     
    @@ -41,7 +41,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *Quantity) Reset()      { *m = Quantity{} }
     func (*Quantity) ProtoMessage() {}
     func (*Quantity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_612bba87bd70906c, []int{0}
    +	return fileDescriptor_7288c78ff45111e9, []int{0}
     }
     func (m *Quantity) XXX_Unmarshal(b []byte) error {
     	return xxx_messageInfo_Quantity.Unmarshal(m, b)
    @@ -64,7 +64,7 @@ var xxx_messageInfo_Quantity proto.InternalMessageInfo
     func (m *QuantityValue) Reset()      { *m = QuantityValue{} }
     func (*QuantityValue) ProtoMessage() {}
     func (*QuantityValue) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_612bba87bd70906c, []int{1}
    +	return fileDescriptor_7288c78ff45111e9, []int{1}
     }
     func (m *QuantityValue) XXX_Unmarshal(b []byte) error {
     	return xxx_messageInfo_QuantityValue.Unmarshal(m, b)
    @@ -90,25 +90,24 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto", fileDescriptor_612bba87bd70906c)
    +	proto.RegisterFile("k8s.io/apimachinery/pkg/api/resource/generated.proto", fileDescriptor_7288c78ff45111e9)
     }
     
    -var fileDescriptor_612bba87bd70906c = []byte{
    -	// 254 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xf2, 0xcd, 0xb6, 0x28, 0xd6,
    -	0xcb, 0xcc, 0xd7, 0xcf, 0x2e, 0x4d, 0x4a, 0x2d, 0xca, 0x4b, 0x2d, 0x49, 0x2d, 0xd6, 0x2f, 0x4b,
    -	0xcd, 0x4b, 0xc9, 0x2f, 0xd2, 0x87, 0x4a, 0x24, 0x16, 0x64, 0xe6, 0x26, 0x26, 0x67, 0x64, 0xe6,
    -	0xa5, 0x16, 0x55, 0xea, 0x17, 0x64, 0xa7, 0x83, 0x04, 0xf4, 0x8b, 0x52, 0x8b, 0xf3, 0x4b, 0x8b,
    -	0x92, 0x53, 0xf5, 0xd3, 0x53, 0xf3, 0x52, 0x8b, 0x12, 0x4b, 0x52, 0x53, 0xf4, 0x0a, 0x8a, 0xf2,
    -	0x4b, 0xf2, 0x85, 0x54, 0x20, 0xba, 0xf4, 0x90, 0x75, 0xe9, 0x15, 0x64, 0xa7, 0x83, 0x04, 0xf4,
    -	0x60, 0xba, 0xa4, 0x74, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0xd3,
    -	0xf3, 0xd3, 0xf3, 0xf5, 0xc1, 0x9a, 0x93, 0x4a, 0xd3, 0xc0, 0x3c, 0x30, 0x07, 0xcc, 0x82, 0x18,
    -	0xaa, 0x64, 0xc1, 0xc5, 0x11, 0x58, 0x9a, 0x98, 0x57, 0x92, 0x59, 0x52, 0x29, 0x24, 0xc6, 0xc5,
    -	0x56, 0x5c, 0x52, 0x94, 0x99, 0x97, 0x2e, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0x04, 0xe5, 0x59,
    -	0x89, 0xcc, 0x58, 0x20, 0xcf, 0xd0, 0xb1, 0x50, 0x9e, 0x61, 0xc2, 0x42, 0x79, 0x86, 0x05, 0x0b,
    -	0xe5, 0x19, 0x1a, 0xee, 0x28, 0x30, 0x28, 0xd9, 0x72, 0xf1, 0xc2, 0x74, 0x86, 0x25, 0xe6, 0x94,
    -	0xa6, 0x92, 0xa6, 0xdd, 0xc9, 0xeb, 0xc4, 0x43, 0x39, 0x86, 0x0b, 0x0f, 0xe5, 0x18, 0x6e, 0x3c,
    -	0x94, 0x63, 0x68, 0x78, 0x24, 0xc7, 0x78, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x37,
    -	0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0x43, 0x94, 0x0a, 0x31, 0x21,
    -	0x05, 0x08, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x70, 0x98, 0xa3, 0x69, 0x01, 0x00, 0x00,
    +var fileDescriptor_7288c78ff45111e9 = []byte{
    +	// 234 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0xc9, 0xb6, 0x28, 0xd6,
    +	0xcb, 0xcc, 0xd7, 0x4f, 0x2c, 0xc8, 0xcc, 0x4d, 0x4c, 0xce, 0xc8, 0xcc, 0x4b, 0x2d, 0xaa, 0xd4,
    +	0x2f, 0xc8, 0x4e, 0x07, 0x09, 0xe8, 0x17, 0xa5, 0x16, 0xe7, 0x97, 0x16, 0x25, 0xa7, 0xea, 0xa7,
    +	0xa7, 0xe6, 0xa5, 0x16, 0x25, 0x96, 0xa4, 0xa6, 0xe8, 0x15, 0x14, 0xe5, 0x97, 0xe4, 0x0b, 0xa9,
    +	0x40, 0x74, 0xe9, 0x21, 0xeb, 0xd2, 0x2b, 0xc8, 0x4e, 0x07, 0x09, 0xe8, 0xc1, 0x74, 0x49, 0xe9,
    +	0xa6, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xa7, 0xe7, 0xeb,
    +	0x83, 0x35, 0x27, 0x95, 0xa6, 0x81, 0x79, 0x60, 0x0e, 0x98, 0x05, 0x31, 0x54, 0xc9, 0x82, 0x8b,
    +	0x23, 0xb0, 0x34, 0x31, 0xaf, 0x24, 0xb3, 0xa4, 0x52, 0x48, 0x8c, 0x8b, 0xad, 0xb8, 0xa4, 0x28,
    +	0x33, 0x2f, 0x5d, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x08, 0xca, 0xb3, 0x12, 0x99, 0xb1, 0x40,
    +	0x9e, 0xa1, 0x63, 0xa1, 0x3c, 0xc3, 0x84, 0x85, 0xf2, 0x0c, 0x0b, 0x16, 0xca, 0x33, 0x34, 0xdc,
    +	0x51, 0x60, 0x50, 0xb2, 0xe5, 0xe2, 0x85, 0xe9, 0x0c, 0x4b, 0xcc, 0x29, 0x4d, 0x25, 0x4d, 0xbb,
    +	0x93, 0xd7, 0x89, 0x87, 0x72, 0x0c, 0x17, 0x1e, 0xca, 0x31, 0xdc, 0x78, 0x28, 0xc7, 0xd0, 0xf0,
    +	0x48, 0x8e, 0xf1, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x6f, 0x3c, 0x92, 0x63, 0x7c,
    +	0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x28, 0x15, 0x62, 0x42, 0x0a, 0x10, 0x00, 0x00,
    +	0xff, 0xff, 0x50, 0x91, 0xd0, 0x9c, 0x50, 0x01, 0x00, 0x00,
     }
    diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go
    index 69f1bc336d36..d0aada9dd753 100644
    --- a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go
    +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go
    @@ -20,11 +20,13 @@ import (
     	"bytes"
     	"errors"
     	"fmt"
    -	"math"
    +	math "math"
     	"math/big"
     	"strconv"
     	"strings"
     
    +	cbor "k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct"
    +
     	inf "gopkg.in/inf.v0"
     )
     
    @@ -458,9 +460,10 @@ func (q *Quantity) CanonicalizeBytes(out []byte) (result, suffix []byte) {
     	}
     }
     
    -// AsApproximateFloat64 returns a float64 representation of the quantity which may
    -// lose precision. If the value of the quantity is outside the range of a float64
    -// +Inf/-Inf will be returned.
    +// AsApproximateFloat64 returns a float64 representation of the quantity which
    +// may lose precision. If precision matter more than performance, see
    +// AsFloat64Slow. If the value of the quantity is outside the range of a
    +// float64 +Inf/-Inf will be returned.
     func (q *Quantity) AsApproximateFloat64() float64 {
     	var base float64
     	var exponent int
    @@ -478,6 +481,36 @@ func (q *Quantity) AsApproximateFloat64() float64 {
     	return base * math.Pow10(exponent)
     }
     
    +// AsFloat64Slow returns a float64 representation of the quantity.  This is
    +// more precise than AsApproximateFloat64 but significantly slower.  If the
    +// value of the quantity is outside the range of a float64 +Inf/-Inf will be
    +// returned.
    +func (q *Quantity) AsFloat64Slow() float64 {
    +	infDec := q.AsDec()
    +
    +	var absScale int64
    +	if infDec.Scale() < 0 {
    +		absScale = int64(-infDec.Scale())
    +	} else {
    +		absScale = int64(infDec.Scale())
    +	}
    +	pow10AbsScale := big.NewInt(10)
    +	pow10AbsScale = pow10AbsScale.Exp(pow10AbsScale, big.NewInt(absScale), nil)
    +
    +	var resultBigFloat *big.Float
    +	if infDec.Scale() < 0 {
    +		resultBigInt := new(big.Int).Mul(infDec.UnscaledBig(), pow10AbsScale)
    +		resultBigFloat = new(big.Float).SetInt(resultBigInt)
    +	} else {
    +		pow10AbsScaleFloat := new(big.Float).SetInt(pow10AbsScale)
    +		resultBigFloat = new(big.Float).SetInt(infDec.UnscaledBig())
    +		resultBigFloat = resultBigFloat.Quo(resultBigFloat, pow10AbsScaleFloat)
    +	}
    +
    +	result, _ := resultBigFloat.Float64()
    +	return result
    +}
    +
     // AsInt64 returns a representation of the current value as an int64 if a fast conversion
     // is possible. If false is returned, callers must use the inf.Dec form of this quantity.
     func (q *Quantity) AsInt64() (int64, bool) {
    @@ -683,6 +716,12 @@ func (q Quantity) MarshalJSON() ([]byte, error) {
     	return result, nil
     }
     
    +func (q Quantity) MarshalCBOR() ([]byte, error) {
    +	// The call to String() should never return the string "" because the receiver's
    +	// address will never be nil.
    +	return cbor.Marshal(q.String())
    +}
    +
     // ToUnstructured implements the value.UnstructuredConverter interface.
     func (q Quantity) ToUnstructured() interface{} {
     	return q.String()
    @@ -711,6 +750,27 @@ func (q *Quantity) UnmarshalJSON(value []byte) error {
     	return nil
     }
     
    +func (q *Quantity) UnmarshalCBOR(value []byte) error {
    +	var s *string
    +	if err := cbor.Unmarshal(value, &s); err != nil {
    +		return err
    +	}
    +
    +	if s == nil {
    +		q.d.Dec = nil
    +		q.i = int64Amount{}
    +		return nil
    +	}
    +
    +	parsed, err := ParseQuantity(strings.TrimSpace(*s))
    +	if err != nil {
    +		return err
    +	}
    +
    +	*q = parsed
    +	return nil
    +}
    +
     // NewDecimalQuantity returns a new Quantity representing the given
     // value in the given format.
     func NewDecimalQuantity(b inf.Dec, format Format) *Quantity {
    diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go b/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go
    index 593d7ba8cf73..54a2883a35dd 100644
    --- a/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go
    +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go
    @@ -50,7 +50,7 @@ func ValidateAnnotations(annotations map[string]string, fldPath *field.Path) fie
     		}
     	}
     	if err := ValidateAnnotationsSize(annotations); err != nil {
    -		allErrs = append(allErrs, field.TooLong(fldPath, "", TotalAnnotationSizeLimitB))
    +		allErrs = append(allErrs, field.TooLong(fldPath, "" /*unused*/, TotalAnnotationSizeLimitB))
     	}
     	return allErrs
     }
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer/fuzzer.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer/fuzzer.go
    index 6bc1356ed46c..b47f0c0ddb2e 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer/fuzzer.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer/fuzzer.go
    @@ -33,6 +33,7 @@ import (
     	"k8s.io/apimachinery/pkg/runtime"
     	runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
     	"k8s.io/apimachinery/pkg/types"
    +	"k8s.io/apimachinery/pkg/util/sets"
     )
     
     func genericFuzzerFuncs(codecs runtimeserializer.CodecFactory) []interface{} {
    @@ -249,8 +250,9 @@ func v1FuzzerFuncs(codecs runtimeserializer.CodecFactory) []interface{} {
     			}
     
     			if j.MatchExpressions != nil {
    -				// NB: the label selector parser code sorts match expressions by key, and sorts the values,
    -				// so we need to make sure ours are sorted as well here to preserve round-trip comparison.
    +				// NB: the label selector parser code sorts match expressions by key, and
    +				// sorts and deduplicates the values, so we need to make sure ours are
    +				// sorted and deduplicated as well here to preserve round-trip comparison.
     				// In practice, not sorting doesn't hurt anything...
     
     				for i := range j.MatchExpressions {
    @@ -266,7 +268,7 @@ func v1FuzzerFuncs(codecs runtimeserializer.CodecFactory) []interface{} {
     						for i := range req.Values {
     							req.Values[i] = randomLabelPart(c, true)
     						}
    -						sort.Strings(req.Values)
    +						req.Values = sets.List(sets.New(req.Values...))
     					} else {
     						req.Values = nil
     					}
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/validation/validation.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/validation/validation.go
    new file mode 100644
    index 000000000000..2734a8f3ba62
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/validation/validation.go
    @@ -0,0 +1,76 @@
    +/*
    +Copyright 2020 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package validation
    +
    +import (
    +	"fmt"
    +
    +	"k8s.io/apimachinery/pkg/apis/meta/internalversion"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/util/validation/field"
    +)
    +
    +// ValidateListOptions returns all validation errors found while validating the ListOptions.
    +func ValidateListOptions(options *internalversion.ListOptions, isWatchListFeatureEnabled bool) field.ErrorList {
    +	if options.Watch {
    +		return validateWatchOptions(options, isWatchListFeatureEnabled)
    +	}
    +	allErrs := field.ErrorList{}
    +	if match := options.ResourceVersionMatch; len(match) > 0 {
    +		if len(options.ResourceVersion) == 0 {
    +			allErrs = append(allErrs, field.Forbidden(field.NewPath("resourceVersionMatch"), "resourceVersionMatch is forbidden unless resourceVersion is provided"))
    +		}
    +		if len(options.Continue) > 0 {
    +			allErrs = append(allErrs, field.Forbidden(field.NewPath("resourceVersionMatch"), "resourceVersionMatch is forbidden when continue is provided"))
    +		}
    +		if match != metav1.ResourceVersionMatchExact && match != metav1.ResourceVersionMatchNotOlderThan {
    +			allErrs = append(allErrs, field.NotSupported(field.NewPath("resourceVersionMatch"), match, []string{string(metav1.ResourceVersionMatchExact), string(metav1.ResourceVersionMatchNotOlderThan), ""}))
    +		}
    +		if match == metav1.ResourceVersionMatchExact && options.ResourceVersion == "0" {
    +			allErrs = append(allErrs, field.Forbidden(field.NewPath("resourceVersionMatch"), "resourceVersionMatch \"exact\" is forbidden for resourceVersion \"0\""))
    +		}
    +	}
    +	if options.SendInitialEvents != nil {
    +		allErrs = append(allErrs, field.Forbidden(field.NewPath("sendInitialEvents"), "sendInitialEvents is forbidden for list"))
    +	}
    +	return allErrs
    +}
    +
    +func validateWatchOptions(options *internalversion.ListOptions, isWatchListFeatureEnabled bool) field.ErrorList {
    +	allErrs := field.ErrorList{}
    +	match := options.ResourceVersionMatch
    +	if options.SendInitialEvents != nil {
    +		if match != metav1.ResourceVersionMatchNotOlderThan {
    +			allErrs = append(allErrs, field.Forbidden(field.NewPath("resourceVersionMatch"), fmt.Sprintf("sendInitialEvents requires setting resourceVersionMatch to %s", metav1.ResourceVersionMatchNotOlderThan)))
    +		}
    +		if !isWatchListFeatureEnabled {
    +			allErrs = append(allErrs, field.Forbidden(field.NewPath("sendInitialEvents"), "sendInitialEvents is forbidden for watch unless the WatchList feature gate is enabled"))
    +		}
    +	}
    +	if len(match) > 0 {
    +		if options.SendInitialEvents == nil {
    +			allErrs = append(allErrs, field.Forbidden(field.NewPath("resourceVersionMatch"), "resourceVersionMatch is forbidden for watch unless sendInitialEvents is provided"))
    +		}
    +		if match != metav1.ResourceVersionMatchNotOlderThan {
    +			allErrs = append(allErrs, field.NotSupported(field.NewPath("resourceVersionMatch"), match, []string{string(metav1.ResourceVersionMatchNotOlderThan)}))
    +		}
    +		if len(options.Continue) > 0 {
    +			allErrs = append(allErrs, field.Forbidden(field.NewPath("resourceVersionMatch"), "resourceVersionMatch is forbidden when continue is provided"))
    +		}
    +	}
    +	return allErrs
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref.go
    index 15b45ffa84b8..5005beb12db2 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref.go
    @@ -18,6 +18,7 @@ package v1
     
     import (
     	"k8s.io/apimachinery/pkg/runtime/schema"
    +	"k8s.io/utils/ptr"
     )
     
     // IsControlledBy checks if the  object has a controllerRef set to the given owner
    @@ -36,10 +37,14 @@ func GetControllerOf(controllee Object) *OwnerReference {
     		return nil
     	}
     	cp := *ref
    +	cp.Controller = ptr.To(*ref.Controller)
    +	if ref.BlockOwnerDeletion != nil {
    +		cp.BlockOwnerDeletion = ptr.To(*ref.BlockOwnerDeletion)
    +	}
     	return &cp
     }
     
    -// GetControllerOf returns a pointer to the controllerRef if controllee has a controller
    +// GetControllerOfNoCopy returns a pointer to the controllerRef if controllee has a controller
     func GetControllerOfNoCopy(controllee Object) *OwnerReference {
     	refs := controllee.GetOwnerReferences()
     	for i := range refs {
    @@ -52,14 +57,12 @@ func GetControllerOfNoCopy(controllee Object) *OwnerReference {
     
     // NewControllerRef creates an OwnerReference pointing to the given owner.
     func NewControllerRef(owner Object, gvk schema.GroupVersionKind) *OwnerReference {
    -	blockOwnerDeletion := true
    -	isController := true
     	return &OwnerReference{
     		APIVersion:         gvk.GroupVersion().String(),
     		Kind:               gvk.Kind,
     		Name:               owner.GetName(),
     		UID:                owner.GetUID(),
    -		BlockOwnerDeletion: &blockOwnerDeletion,
    -		Controller:         &isController,
    +		BlockOwnerDeletion: ptr.To(true),
    +		Controller:         ptr.To(true),
     	}
     }
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go
    index 1a641e7c1229..9ee6c0591853 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto
    +// source: k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto
     
     package v1
     
    @@ -52,7 +52,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *APIGroup) Reset()      { *m = APIGroup{} }
     func (*APIGroup) ProtoMessage() {}
     func (*APIGroup) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{0}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{0}
     }
     func (m *APIGroup) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -80,7 +80,7 @@ var xxx_messageInfo_APIGroup proto.InternalMessageInfo
     func (m *APIGroupList) Reset()      { *m = APIGroupList{} }
     func (*APIGroupList) ProtoMessage() {}
     func (*APIGroupList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{1}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{1}
     }
     func (m *APIGroupList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -108,7 +108,7 @@ var xxx_messageInfo_APIGroupList proto.InternalMessageInfo
     func (m *APIResource) Reset()      { *m = APIResource{} }
     func (*APIResource) ProtoMessage() {}
     func (*APIResource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{2}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{2}
     }
     func (m *APIResource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -136,7 +136,7 @@ var xxx_messageInfo_APIResource proto.InternalMessageInfo
     func (m *APIResourceList) Reset()      { *m = APIResourceList{} }
     func (*APIResourceList) ProtoMessage() {}
     func (*APIResourceList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{3}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{3}
     }
     func (m *APIResourceList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -164,7 +164,7 @@ var xxx_messageInfo_APIResourceList proto.InternalMessageInfo
     func (m *APIVersions) Reset()      { *m = APIVersions{} }
     func (*APIVersions) ProtoMessage() {}
     func (*APIVersions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{4}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{4}
     }
     func (m *APIVersions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -192,7 +192,7 @@ var xxx_messageInfo_APIVersions proto.InternalMessageInfo
     func (m *ApplyOptions) Reset()      { *m = ApplyOptions{} }
     func (*ApplyOptions) ProtoMessage() {}
     func (*ApplyOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{5}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{5}
     }
     func (m *ApplyOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -220,7 +220,7 @@ var xxx_messageInfo_ApplyOptions proto.InternalMessageInfo
     func (m *Condition) Reset()      { *m = Condition{} }
     func (*Condition) ProtoMessage() {}
     func (*Condition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{6}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{6}
     }
     func (m *Condition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -248,7 +248,7 @@ var xxx_messageInfo_Condition proto.InternalMessageInfo
     func (m *CreateOptions) Reset()      { *m = CreateOptions{} }
     func (*CreateOptions) ProtoMessage() {}
     func (*CreateOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{7}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{7}
     }
     func (m *CreateOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -276,7 +276,7 @@ var xxx_messageInfo_CreateOptions proto.InternalMessageInfo
     func (m *DeleteOptions) Reset()      { *m = DeleteOptions{} }
     func (*DeleteOptions) ProtoMessage() {}
     func (*DeleteOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{8}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{8}
     }
     func (m *DeleteOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -304,7 +304,7 @@ var xxx_messageInfo_DeleteOptions proto.InternalMessageInfo
     func (m *Duration) Reset()      { *m = Duration{} }
     func (*Duration) ProtoMessage() {}
     func (*Duration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{9}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{9}
     }
     func (m *Duration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -329,10 +329,38 @@ func (m *Duration) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_Duration proto.InternalMessageInfo
     
    +func (m *FieldSelectorRequirement) Reset()      { *m = FieldSelectorRequirement{} }
    +func (*FieldSelectorRequirement) ProtoMessage() {}
    +func (*FieldSelectorRequirement) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_a8431b6e0aeeb761, []int{10}
    +}
    +func (m *FieldSelectorRequirement) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *FieldSelectorRequirement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *FieldSelectorRequirement) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_FieldSelectorRequirement.Merge(m, src)
    +}
    +func (m *FieldSelectorRequirement) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *FieldSelectorRequirement) XXX_DiscardUnknown() {
    +	xxx_messageInfo_FieldSelectorRequirement.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_FieldSelectorRequirement proto.InternalMessageInfo
    +
     func (m *FieldsV1) Reset()      { *m = FieldsV1{} }
     func (*FieldsV1) ProtoMessage() {}
     func (*FieldsV1) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{10}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{11}
     }
     func (m *FieldsV1) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -360,7 +388,7 @@ var xxx_messageInfo_FieldsV1 proto.InternalMessageInfo
     func (m *GetOptions) Reset()      { *m = GetOptions{} }
     func (*GetOptions) ProtoMessage() {}
     func (*GetOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{11}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{12}
     }
     func (m *GetOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -388,7 +416,7 @@ var xxx_messageInfo_GetOptions proto.InternalMessageInfo
     func (m *GroupKind) Reset()      { *m = GroupKind{} }
     func (*GroupKind) ProtoMessage() {}
     func (*GroupKind) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{12}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{13}
     }
     func (m *GroupKind) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -416,7 +444,7 @@ var xxx_messageInfo_GroupKind proto.InternalMessageInfo
     func (m *GroupResource) Reset()      { *m = GroupResource{} }
     func (*GroupResource) ProtoMessage() {}
     func (*GroupResource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{13}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{14}
     }
     func (m *GroupResource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -444,7 +472,7 @@ var xxx_messageInfo_GroupResource proto.InternalMessageInfo
     func (m *GroupVersion) Reset()      { *m = GroupVersion{} }
     func (*GroupVersion) ProtoMessage() {}
     func (*GroupVersion) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{14}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{15}
     }
     func (m *GroupVersion) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -472,7 +500,7 @@ var xxx_messageInfo_GroupVersion proto.InternalMessageInfo
     func (m *GroupVersionForDiscovery) Reset()      { *m = GroupVersionForDiscovery{} }
     func (*GroupVersionForDiscovery) ProtoMessage() {}
     func (*GroupVersionForDiscovery) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{15}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{16}
     }
     func (m *GroupVersionForDiscovery) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -500,7 +528,7 @@ var xxx_messageInfo_GroupVersionForDiscovery proto.InternalMessageInfo
     func (m *GroupVersionKind) Reset()      { *m = GroupVersionKind{} }
     func (*GroupVersionKind) ProtoMessage() {}
     func (*GroupVersionKind) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{16}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{17}
     }
     func (m *GroupVersionKind) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -528,7 +556,7 @@ var xxx_messageInfo_GroupVersionKind proto.InternalMessageInfo
     func (m *GroupVersionResource) Reset()      { *m = GroupVersionResource{} }
     func (*GroupVersionResource) ProtoMessage() {}
     func (*GroupVersionResource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{17}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{18}
     }
     func (m *GroupVersionResource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -556,7 +584,7 @@ var xxx_messageInfo_GroupVersionResource proto.InternalMessageInfo
     func (m *LabelSelector) Reset()      { *m = LabelSelector{} }
     func (*LabelSelector) ProtoMessage() {}
     func (*LabelSelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{18}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{19}
     }
     func (m *LabelSelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -584,7 +612,7 @@ var xxx_messageInfo_LabelSelector proto.InternalMessageInfo
     func (m *LabelSelectorRequirement) Reset()      { *m = LabelSelectorRequirement{} }
     func (*LabelSelectorRequirement) ProtoMessage() {}
     func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{19}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{20}
     }
     func (m *LabelSelectorRequirement) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -612,7 +640,7 @@ var xxx_messageInfo_LabelSelectorRequirement proto.InternalMessageInfo
     func (m *List) Reset()      { *m = List{} }
     func (*List) ProtoMessage() {}
     func (*List) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{20}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{21}
     }
     func (m *List) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -640,7 +668,7 @@ var xxx_messageInfo_List proto.InternalMessageInfo
     func (m *ListMeta) Reset()      { *m = ListMeta{} }
     func (*ListMeta) ProtoMessage() {}
     func (*ListMeta) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{21}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{22}
     }
     func (m *ListMeta) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -668,7 +696,7 @@ var xxx_messageInfo_ListMeta proto.InternalMessageInfo
     func (m *ListOptions) Reset()      { *m = ListOptions{} }
     func (*ListOptions) ProtoMessage() {}
     func (*ListOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{22}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{23}
     }
     func (m *ListOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -696,7 +724,7 @@ var xxx_messageInfo_ListOptions proto.InternalMessageInfo
     func (m *ManagedFieldsEntry) Reset()      { *m = ManagedFieldsEntry{} }
     func (*ManagedFieldsEntry) ProtoMessage() {}
     func (*ManagedFieldsEntry) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{23}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{24}
     }
     func (m *ManagedFieldsEntry) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -724,7 +752,7 @@ var xxx_messageInfo_ManagedFieldsEntry proto.InternalMessageInfo
     func (m *MicroTime) Reset()      { *m = MicroTime{} }
     func (*MicroTime) ProtoMessage() {}
     func (*MicroTime) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{24}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{25}
     }
     func (m *MicroTime) XXX_Unmarshal(b []byte) error {
     	return xxx_messageInfo_MicroTime.Unmarshal(m, b)
    @@ -747,7 +775,7 @@ var xxx_messageInfo_MicroTime proto.InternalMessageInfo
     func (m *ObjectMeta) Reset()      { *m = ObjectMeta{} }
     func (*ObjectMeta) ProtoMessage() {}
     func (*ObjectMeta) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{25}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{26}
     }
     func (m *ObjectMeta) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -775,7 +803,7 @@ var xxx_messageInfo_ObjectMeta proto.InternalMessageInfo
     func (m *OwnerReference) Reset()      { *m = OwnerReference{} }
     func (*OwnerReference) ProtoMessage() {}
     func (*OwnerReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{26}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{27}
     }
     func (m *OwnerReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -803,7 +831,7 @@ var xxx_messageInfo_OwnerReference proto.InternalMessageInfo
     func (m *PartialObjectMetadata) Reset()      { *m = PartialObjectMetadata{} }
     func (*PartialObjectMetadata) ProtoMessage() {}
     func (*PartialObjectMetadata) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{27}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{28}
     }
     func (m *PartialObjectMetadata) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -831,7 +859,7 @@ var xxx_messageInfo_PartialObjectMetadata proto.InternalMessageInfo
     func (m *PartialObjectMetadataList) Reset()      { *m = PartialObjectMetadataList{} }
     func (*PartialObjectMetadataList) ProtoMessage() {}
     func (*PartialObjectMetadataList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{28}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{29}
     }
     func (m *PartialObjectMetadataList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -859,7 +887,7 @@ var xxx_messageInfo_PartialObjectMetadataList proto.InternalMessageInfo
     func (m *Patch) Reset()      { *m = Patch{} }
     func (*Patch) ProtoMessage() {}
     func (*Patch) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{29}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{30}
     }
     func (m *Patch) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -887,7 +915,7 @@ var xxx_messageInfo_Patch proto.InternalMessageInfo
     func (m *PatchOptions) Reset()      { *m = PatchOptions{} }
     func (*PatchOptions) ProtoMessage() {}
     func (*PatchOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{30}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{31}
     }
     func (m *PatchOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -915,7 +943,7 @@ var xxx_messageInfo_PatchOptions proto.InternalMessageInfo
     func (m *Preconditions) Reset()      { *m = Preconditions{} }
     func (*Preconditions) ProtoMessage() {}
     func (*Preconditions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{31}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{32}
     }
     func (m *Preconditions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -943,7 +971,7 @@ var xxx_messageInfo_Preconditions proto.InternalMessageInfo
     func (m *RootPaths) Reset()      { *m = RootPaths{} }
     func (*RootPaths) ProtoMessage() {}
     func (*RootPaths) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{32}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{33}
     }
     func (m *RootPaths) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -971,7 +999,7 @@ var xxx_messageInfo_RootPaths proto.InternalMessageInfo
     func (m *ServerAddressByClientCIDR) Reset()      { *m = ServerAddressByClientCIDR{} }
     func (*ServerAddressByClientCIDR) ProtoMessage() {}
     func (*ServerAddressByClientCIDR) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{33}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{34}
     }
     func (m *ServerAddressByClientCIDR) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -999,7 +1027,7 @@ var xxx_messageInfo_ServerAddressByClientCIDR proto.InternalMessageInfo
     func (m *Status) Reset()      { *m = Status{} }
     func (*Status) ProtoMessage() {}
     func (*Status) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{34}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{35}
     }
     func (m *Status) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1027,7 +1055,7 @@ var xxx_messageInfo_Status proto.InternalMessageInfo
     func (m *StatusCause) Reset()      { *m = StatusCause{} }
     func (*StatusCause) ProtoMessage() {}
     func (*StatusCause) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{35}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{36}
     }
     func (m *StatusCause) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1055,7 +1083,7 @@ var xxx_messageInfo_StatusCause proto.InternalMessageInfo
     func (m *StatusDetails) Reset()      { *m = StatusDetails{} }
     func (*StatusDetails) ProtoMessage() {}
     func (*StatusDetails) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{36}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{37}
     }
     func (m *StatusDetails) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1083,7 +1111,7 @@ var xxx_messageInfo_StatusDetails proto.InternalMessageInfo
     func (m *TableOptions) Reset()      { *m = TableOptions{} }
     func (*TableOptions) ProtoMessage() {}
     func (*TableOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{37}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{38}
     }
     func (m *TableOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1111,7 +1139,7 @@ var xxx_messageInfo_TableOptions proto.InternalMessageInfo
     func (m *Time) Reset()      { *m = Time{} }
     func (*Time) ProtoMessage() {}
     func (*Time) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{38}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{39}
     }
     func (m *Time) XXX_Unmarshal(b []byte) error {
     	return xxx_messageInfo_Time.Unmarshal(m, b)
    @@ -1134,7 +1162,7 @@ var xxx_messageInfo_Time proto.InternalMessageInfo
     func (m *Timestamp) Reset()      { *m = Timestamp{} }
     func (*Timestamp) ProtoMessage() {}
     func (*Timestamp) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{39}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{40}
     }
     func (m *Timestamp) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1162,7 +1190,7 @@ var xxx_messageInfo_Timestamp proto.InternalMessageInfo
     func (m *TypeMeta) Reset()      { *m = TypeMeta{} }
     func (*TypeMeta) ProtoMessage() {}
     func (*TypeMeta) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{40}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{41}
     }
     func (m *TypeMeta) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1190,7 +1218,7 @@ var xxx_messageInfo_TypeMeta proto.InternalMessageInfo
     func (m *UpdateOptions) Reset()      { *m = UpdateOptions{} }
     func (*UpdateOptions) ProtoMessage() {}
     func (*UpdateOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{41}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{42}
     }
     func (m *UpdateOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1218,7 +1246,7 @@ var xxx_messageInfo_UpdateOptions proto.InternalMessageInfo
     func (m *Verbs) Reset()      { *m = Verbs{} }
     func (*Verbs) ProtoMessage() {}
     func (*Verbs) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{42}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{43}
     }
     func (m *Verbs) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1246,7 +1274,7 @@ var xxx_messageInfo_Verbs proto.InternalMessageInfo
     func (m *WatchEvent) Reset()      { *m = WatchEvent{} }
     func (*WatchEvent) ProtoMessage() {}
     func (*WatchEvent) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_cf52fa777ced5367, []int{43}
    +	return fileDescriptor_a8431b6e0aeeb761, []int{44}
     }
     func (m *WatchEvent) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1282,6 +1310,7 @@ func init() {
     	proto.RegisterType((*CreateOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.CreateOptions")
     	proto.RegisterType((*DeleteOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.DeleteOptions")
     	proto.RegisterType((*Duration)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Duration")
    +	proto.RegisterType((*FieldSelectorRequirement)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.FieldSelectorRequirement")
     	proto.RegisterType((*FieldsV1)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.FieldsV1")
     	proto.RegisterType((*GetOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GetOptions")
     	proto.RegisterType((*GroupKind)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind")
    @@ -1322,191 +1351,194 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto", fileDescriptor_cf52fa777ced5367)
    -}
    -
    -var fileDescriptor_cf52fa777ced5367 = []byte{
    -	// 2867 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x1a, 0x4b, 0x6f, 0x24, 0x47,
    -	0xd9, 0x3d, 0x0f, 0x7b, 0xe6, 0x9b, 0x19, 0x3f, 0x6a, 0xbd, 0x30, 0x6b, 0x84, 0xc7, 0xe9, 0x44,
    -	0xd1, 0x06, 0x92, 0x71, 0x76, 0x09, 0xd1, 0x66, 0x43, 0x02, 0x1e, 0xcf, 0x7a, 0xe3, 0x64, 0x1d,
    -	0x5b, 0xe5, 0xdd, 0x05, 0x42, 0x84, 0xd2, 0x9e, 0x2e, 0x8f, 0x1b, 0xf7, 0x74, 0x4f, 0xaa, 0x7a,
    -	0xbc, 0x19, 0x38, 0x90, 0x03, 0x08, 0x90, 0x50, 0x14, 0x6e, 0x9c, 0x50, 0x22, 0xf8, 0x01, 0x88,
    -	0x13, 0x77, 0x90, 0xc8, 0x31, 0x88, 0x4b, 0x24, 0xd0, 0x28, 0x31, 0x07, 0x8e, 0x88, 0xab, 0x85,
    -	0x04, 0xaa, 0x47, 0x77, 0x57, 0xcf, 0x63, 0xdd, 0x93, 0x5d, 0x22, 0x6e, 0xd3, 0xdf, 0xbb, 0xaa,
    -	0xbe, 0xfa, 0xea, 0x7b, 0x0c, 0xec, 0x1c, 0x5f, 0x63, 0x75, 0xc7, 0x5f, 0x3f, 0xee, 0x1d, 0x10,
    -	0xea, 0x91, 0x80, 0xb0, 0xf5, 0x13, 0xe2, 0xd9, 0x3e, 0x5d, 0x57, 0x08, 0xab, 0xeb, 0x74, 0xac,
    -	0xd6, 0x91, 0xe3, 0x11, 0xda, 0x5f, 0xef, 0x1e, 0xb7, 0x39, 0x80, 0xad, 0x77, 0x48, 0x60, 0xad,
    -	0x9f, 0x5c, 0x59, 0x6f, 0x13, 0x8f, 0x50, 0x2b, 0x20, 0x76, 0xbd, 0x4b, 0xfd, 0xc0, 0x47, 0x8f,
    -	0x49, 0xae, 0xba, 0xce, 0x55, 0xef, 0x1e, 0xb7, 0x39, 0x80, 0xd5, 0x39, 0x57, 0xfd, 0xe4, 0xca,
    -	0xca, 0x53, 0x6d, 0x27, 0x38, 0xea, 0x1d, 0xd4, 0x5b, 0x7e, 0x67, 0xbd, 0xed, 0xb7, 0xfd, 0x75,
    -	0xc1, 0x7c, 0xd0, 0x3b, 0x14, 0x5f, 0xe2, 0x43, 0xfc, 0x92, 0x42, 0x57, 0x26, 0x9a, 0x42, 0x7b,
    -	0x5e, 0xe0, 0x74, 0xc8, 0xb0, 0x15, 0x2b, 0xcf, 0x9e, 0xc7, 0xc0, 0x5a, 0x47, 0xa4, 0x63, 0x0d,
    -	0xf3, 0x99, 0x7f, 0xca, 0x42, 0x61, 0x63, 0x6f, 0xfb, 0x26, 0xf5, 0x7b, 0x5d, 0xb4, 0x06, 0x39,
    -	0xcf, 0xea, 0x90, 0xaa, 0xb1, 0x66, 0x5c, 0x2e, 0x36, 0xca, 0x1f, 0x0c, 0x6a, 0x33, 0xa7, 0x83,
    -	0x5a, 0xee, 0x55, 0xab, 0x43, 0xb0, 0xc0, 0x20, 0x17, 0x0a, 0x27, 0x84, 0x32, 0xc7, 0xf7, 0x58,
    -	0x35, 0xb3, 0x96, 0xbd, 0x5c, 0xba, 0xfa, 0x62, 0x3d, 0xcd, 0xfa, 0xeb, 0x42, 0xc1, 0x5d, 0xc9,
    -	0xba, 0xe5, 0xd3, 0xa6, 0xc3, 0x5a, 0xfe, 0x09, 0xa1, 0xfd, 0xc6, 0xa2, 0xd2, 0x52, 0x50, 0x48,
    -	0x86, 0x23, 0x0d, 0xe8, 0x47, 0x06, 0x2c, 0x76, 0x29, 0x39, 0x24, 0x94, 0x12, 0x5b, 0xe1, 0xab,
    -	0xd9, 0x35, 0xe3, 0x21, 0xa8, 0xad, 0x2a, 0xb5, 0x8b, 0x7b, 0x43, 0xf2, 0xf1, 0x88, 0x46, 0xf4,
    -	0x6b, 0x03, 0x56, 0x18, 0xa1, 0x27, 0x84, 0x6e, 0xd8, 0x36, 0x25, 0x8c, 0x35, 0xfa, 0x9b, 0xae,
    -	0x43, 0xbc, 0x60, 0x73, 0xbb, 0x89, 0x59, 0x35, 0x27, 0xf6, 0xe1, 0xeb, 0xe9, 0x0c, 0xda, 0x9f,
    -	0x24, 0xa7, 0x61, 0x2a, 0x8b, 0x56, 0x26, 0x92, 0x30, 0x7c, 0x1f, 0x33, 0xcc, 0x43, 0x28, 0x87,
    -	0x07, 0x79, 0xcb, 0x61, 0x01, 0xba, 0x0b, 0xb3, 0x6d, 0xfe, 0xc1, 0xaa, 0x86, 0x30, 0xb0, 0x9e,
    -	0xce, 0xc0, 0x50, 0x46, 0x63, 0x5e, 0xd9, 0x33, 0x2b, 0x3e, 0x19, 0x56, 0xd2, 0xcc, 0x9f, 0xe5,
    -	0xa0, 0xb4, 0xb1, 0xb7, 0x8d, 0x09, 0xf3, 0x7b, 0xb4, 0x45, 0x52, 0x38, 0xcd, 0x35, 0x28, 0x33,
    -	0xc7, 0x6b, 0xf7, 0x5c, 0x8b, 0x72, 0x68, 0x75, 0x56, 0x50, 0x2e, 0x2b, 0xca, 0xf2, 0xbe, 0x86,
    -	0xc3, 0x09, 0x4a, 0x74, 0x15, 0x80, 0x4b, 0x60, 0x5d, 0xab, 0x45, 0xec, 0x6a, 0x66, 0xcd, 0xb8,
    -	0x5c, 0x68, 0x20, 0xc5, 0x07, 0xaf, 0x46, 0x18, 0xac, 0x51, 0xa1, 0x47, 0x21, 0x2f, 0x2c, 0xad,
    -	0x16, 0x84, 0x9a, 0x8a, 0x22, 0xcf, 0x8b, 0x65, 0x60, 0x89, 0x43, 0x4f, 0xc0, 0x9c, 0xf2, 0xb2,
    -	0x6a, 0x51, 0x90, 0x2d, 0x28, 0xb2, 0xb9, 0xd0, 0x0d, 0x42, 0x3c, 0x5f, 0xdf, 0xb1, 0xe3, 0xd9,
    -	0xc2, 0xef, 0xb4, 0xf5, 0xbd, 0xe2, 0x78, 0x36, 0x16, 0x18, 0x74, 0x0b, 0xf2, 0x27, 0x84, 0x1e,
    -	0x70, 0x4f, 0xe0, 0xae, 0xf9, 0xe5, 0x74, 0x1b, 0x7d, 0x97, 0xb3, 0x34, 0x8a, 0xdc, 0x34, 0xf1,
    -	0x13, 0x4b, 0x21, 0xa8, 0x0e, 0xc0, 0x8e, 0x7c, 0x1a, 0x88, 0xe5, 0x55, 0xf3, 0x6b, 0xd9, 0xcb,
    -	0xc5, 0xc6, 0x3c, 0x5f, 0xef, 0x7e, 0x04, 0xc5, 0x1a, 0x05, 0xa7, 0x6f, 0x59, 0x01, 0x69, 0xfb,
    -	0xd4, 0x21, 0xac, 0x3a, 0x17, 0xd3, 0x6f, 0x46, 0x50, 0xac, 0x51, 0xa0, 0x97, 0x01, 0xb1, 0xc0,
    -	0xa7, 0x56, 0x9b, 0xa8, 0xa5, 0xbe, 0x64, 0xb1, 0xa3, 0x2a, 0x88, 0xd5, 0xad, 0xa8, 0xd5, 0xa1,
    -	0xfd, 0x11, 0x0a, 0x3c, 0x86, 0xcb, 0xfc, 0x9d, 0x01, 0x0b, 0x9a, 0x2f, 0x08, 0xbf, 0xbb, 0x06,
    -	0xe5, 0xb6, 0x76, 0xeb, 0x94, 0x5f, 0x44, 0xa7, 0xad, 0xdf, 0x48, 0x9c, 0xa0, 0x44, 0x04, 0x8a,
    -	0x54, 0x49, 0x0a, 0xa3, 0xcb, 0x95, 0xd4, 0x4e, 0x1b, 0xda, 0x10, 0x6b, 0xd2, 0x80, 0x0c, 0xc7,
    -	0x92, 0xcd, 0x7f, 0x18, 0xc2, 0x81, 0xc3, 0x78, 0x83, 0x2e, 0x6b, 0x31, 0xcd, 0x10, 0xdb, 0x57,
    -	0x9e, 0x10, 0x8f, 0xce, 0x09, 0x04, 0x99, 0xff, 0x8b, 0x40, 0x70, 0xbd, 0xf0, 0xcb, 0xf7, 0x6a,
    -	0x33, 0x6f, 0xff, 0x6d, 0x6d, 0xc6, 0xfc, 0x85, 0x01, 0xe5, 0x8d, 0x6e, 0xd7, 0xed, 0xef, 0x76,
    -	0x03, 0xb1, 0x00, 0x13, 0x66, 0x6d, 0xda, 0xc7, 0x3d, 0x4f, 0x2d, 0x14, 0xf8, 0xfd, 0x6e, 0x0a,
    -	0x08, 0x56, 0x18, 0x7e, 0x7f, 0x0e, 0x7d, 0xda, 0x22, 0xea, 0xba, 0x45, 0xf7, 0x67, 0x8b, 0x03,
    -	0xb1, 0xc4, 0xf1, 0x43, 0x3e, 0x74, 0x88, 0x6b, 0xef, 0x58, 0x9e, 0xd5, 0x26, 0x54, 0x5d, 0x8e,
    -	0x68, 0xeb, 0xb7, 0x34, 0x1c, 0x4e, 0x50, 0x9a, 0xff, 0xc9, 0x40, 0x71, 0xd3, 0xf7, 0x6c, 0x27,
    -	0x50, 0x97, 0x2b, 0xe8, 0x77, 0x47, 0x82, 0xc7, 0xed, 0x7e, 0x97, 0x60, 0x81, 0x41, 0xcf, 0xc1,
    -	0x2c, 0x0b, 0xac, 0xa0, 0xc7, 0x84, 0x3d, 0xc5, 0xc6, 0x23, 0x61, 0x58, 0xda, 0x17, 0xd0, 0xb3,
    -	0x41, 0x6d, 0x21, 0x12, 0x27, 0x41, 0x58, 0x31, 0x70, 0x4f, 0xf7, 0x0f, 0xc4, 0x46, 0xd9, 0x37,
    -	0xe5, 0xb3, 0x17, 0xbe, 0x1f, 0xd9, 0xd8, 0xd3, 0x77, 0x47, 0x28, 0xf0, 0x18, 0x2e, 0x74, 0x02,
    -	0xc8, 0xb5, 0x58, 0x70, 0x9b, 0x5a, 0x1e, 0x13, 0xba, 0x6e, 0x3b, 0x1d, 0xa2, 0x2e, 0xfc, 0x97,
    -	0xd2, 0x9d, 0x38, 0xe7, 0x88, 0xf5, 0xde, 0x1a, 0x91, 0x86, 0xc7, 0x68, 0x40, 0x8f, 0xc3, 0x2c,
    -	0x25, 0x16, 0xf3, 0xbd, 0x6a, 0x5e, 0x2c, 0x3f, 0x8a, 0xca, 0x58, 0x40, 0xb1, 0xc2, 0xf2, 0x80,
    -	0xd6, 0x21, 0x8c, 0x59, 0xed, 0x30, 0xbc, 0x46, 0x01, 0x6d, 0x47, 0x82, 0x71, 0x88, 0x37, 0x7f,
    -	0x6b, 0x40, 0x65, 0x93, 0x12, 0x2b, 0x20, 0xd3, 0xb8, 0xc5, 0xa7, 0x3e, 0x71, 0xb4, 0x01, 0x0b,
    -	0xe2, 0xfb, 0xae, 0xe5, 0x3a, 0xb6, 0x3c, 0x83, 0x9c, 0x60, 0xfe, 0xbc, 0x62, 0x5e, 0xd8, 0x4a,
    -	0xa2, 0xf1, 0x30, 0xbd, 0xf9, 0x93, 0x2c, 0x54, 0x9a, 0xc4, 0x25, 0xb1, 0xc9, 0x5b, 0x80, 0xda,
    -	0xd4, 0x6a, 0x91, 0x3d, 0x42, 0x1d, 0xdf, 0xde, 0x27, 0x2d, 0xdf, 0xb3, 0x99, 0x70, 0xa3, 0x6c,
    -	0xe3, 0x73, 0x7c, 0x7f, 0x6f, 0x8e, 0x60, 0xf1, 0x18, 0x0e, 0xe4, 0x42, 0xa5, 0x4b, 0xc5, 0x6f,
    -	0xb1, 0xe7, 0xd2, 0xcb, 0x4a, 0x57, 0xbf, 0x92, 0xee, 0x48, 0xf7, 0x74, 0xd6, 0xc6, 0xd2, 0xe9,
    -	0xa0, 0x56, 0x49, 0x80, 0x70, 0x52, 0x38, 0xfa, 0x06, 0x2c, 0xfa, 0xb4, 0x7b, 0x64, 0x79, 0x4d,
    -	0xd2, 0x25, 0x9e, 0x4d, 0xbc, 0x80, 0x89, 0x8d, 0x2c, 0x34, 0x96, 0x79, 0x2e, 0xb2, 0x3b, 0x84,
    -	0xc3, 0x23, 0xd4, 0xe8, 0x35, 0x58, 0xea, 0x52, 0xbf, 0x6b, 0xb5, 0xc5, 0xc6, 0xec, 0xf9, 0xae,
    -	0xd3, 0xea, 0xab, 0xed, 0x7c, 0xf2, 0x74, 0x50, 0x5b, 0xda, 0x1b, 0x46, 0x9e, 0x0d, 0x6a, 0x17,
    -	0xc4, 0xd6, 0x71, 0x48, 0x8c, 0xc4, 0xa3, 0x62, 0x34, 0x37, 0xc8, 0x4f, 0x72, 0x03, 0x73, 0x1b,
    -	0x0a, 0xcd, 0x9e, 0xba, 0x13, 0x2f, 0x40, 0xc1, 0x56, 0xbf, 0xd5, 0xce, 0x87, 0x97, 0x33, 0xa2,
    -	0x39, 0x1b, 0xd4, 0x2a, 0x3c, 0xfd, 0xac, 0x87, 0x00, 0x1c, 0xb1, 0x98, 0x8f, 0x43, 0x41, 0x1c,
    -	0x3c, 0xbb, 0x7b, 0x05, 0x2d, 0x42, 0x16, 0x5b, 0xf7, 0x84, 0x94, 0x32, 0xe6, 0x3f, 0xb5, 0x28,
    -	0xb6, 0x0b, 0x70, 0x93, 0x04, 0xe1, 0xc1, 0x6f, 0xc0, 0x42, 0x18, 0xca, 0x93, 0x2f, 0x4c, 0xe4,
    -	0x4d, 0x38, 0x89, 0xc6, 0xc3, 0xf4, 0xe6, 0xeb, 0x50, 0x14, 0xaf, 0x10, 0x7f, 0xc2, 0xe3, 0x74,
    -	0xc1, 0xb8, 0x4f, 0xba, 0x10, 0xe6, 0x00, 0x99, 0x49, 0x39, 0x80, 0x66, 0xae, 0x0b, 0x15, 0xc9,
    -	0x1b, 0x26, 0x48, 0xa9, 0x34, 0x3c, 0x09, 0x85, 0xd0, 0x4c, 0xa5, 0x25, 0x4a, 0x8c, 0x43, 0x41,
    -	0x38, 0xa2, 0xd0, 0xb4, 0x1d, 0x41, 0xe2, 0x45, 0x4d, 0xa7, 0x4c, 0xcb, 0x7e, 0x32, 0xf7, 0xcf,
    -	0x7e, 0x34, 0x4d, 0x3f, 0x84, 0xea, 0xa4, 0x6c, 0xfa, 0x01, 0xde, 0xfc, 0xf4, 0xa6, 0x98, 0xef,
    -	0x18, 0xb0, 0xa8, 0x4b, 0x4a, 0x7f, 0x7c, 0xe9, 0x95, 0x9c, 0x9f, 0xed, 0x69, 0x3b, 0xf2, 0x2b,
    -	0x03, 0x96, 0x13, 0x4b, 0x9b, 0xea, 0xc4, 0xa7, 0x30, 0x4a, 0x77, 0x8e, 0xec, 0x14, 0xce, 0xf1,
    -	0x97, 0x0c, 0x54, 0x6e, 0x59, 0x07, 0xc4, 0xdd, 0x27, 0x2e, 0x69, 0x05, 0x3e, 0x45, 0x3f, 0x80,
    -	0x52, 0xc7, 0x0a, 0x5a, 0x47, 0x02, 0x1a, 0x56, 0x06, 0xcd, 0x74, 0xc1, 0x2e, 0x21, 0xa9, 0xbe,
    -	0x13, 0x8b, 0xb9, 0xe1, 0x05, 0xb4, 0xdf, 0xb8, 0xa0, 0x4c, 0x2a, 0x69, 0x18, 0xac, 0x6b, 0x13,
    -	0xe5, 0x9c, 0xf8, 0xbe, 0xf1, 0x56, 0x97, 0xa7, 0x2d, 0xd3, 0x57, 0x91, 0x09, 0x13, 0x30, 0x79,
    -	0xb3, 0xe7, 0x50, 0xd2, 0x21, 0x5e, 0x10, 0x97, 0x73, 0x3b, 0x43, 0xf2, 0xf1, 0x88, 0xc6, 0x95,
    -	0x17, 0x61, 0x71, 0xd8, 0x78, 0x1e, 0x7f, 0x8e, 0x49, 0x5f, 0x9e, 0x17, 0xe6, 0x3f, 0xd1, 0x32,
    -	0xe4, 0x4f, 0x2c, 0xb7, 0xa7, 0x6e, 0x23, 0x96, 0x1f, 0xd7, 0x33, 0xd7, 0x0c, 0xf3, 0x37, 0x06,
    -	0x54, 0x27, 0x19, 0x82, 0xbe, 0xa8, 0x09, 0x6a, 0x94, 0x94, 0x55, 0xd9, 0x57, 0x48, 0x5f, 0x4a,
    -	0xbd, 0x01, 0x05, 0xbf, 0xcb, 0x73, 0x0a, 0x9f, 0xaa, 0x53, 0x7f, 0x22, 0x3c, 0xc9, 0x5d, 0x05,
    -	0x3f, 0x1b, 0xd4, 0x2e, 0x26, 0xc4, 0x87, 0x08, 0x1c, 0xb1, 0xf2, 0x48, 0x2d, 0xec, 0xe1, 0xaf,
    -	0x47, 0x14, 0xa9, 0xef, 0x0a, 0x08, 0x56, 0x18, 0xf3, 0xf7, 0x06, 0xe4, 0x44, 0x42, 0xfe, 0x3a,
    -	0x14, 0xf8, 0xfe, 0xd9, 0x56, 0x60, 0x09, 0xbb, 0x52, 0x97, 0x82, 0x9c, 0x7b, 0x87, 0x04, 0x56,
    -	0xec, 0x6d, 0x21, 0x04, 0x47, 0x12, 0x11, 0x86, 0xbc, 0x13, 0x90, 0x4e, 0x78, 0x90, 0x4f, 0x4d,
    -	0x14, 0xad, 0x1a, 0x11, 0x75, 0x6c, 0xdd, 0xbb, 0xf1, 0x56, 0x40, 0x3c, 0x7e, 0x18, 0xf1, 0xd5,
    -	0xd8, 0xe6, 0x32, 0xb0, 0x14, 0x65, 0xfe, 0xcb, 0x80, 0x48, 0x15, 0x77, 0x7e, 0x46, 0xdc, 0xc3,
    -	0x5b, 0x8e, 0x77, 0xac, 0xb6, 0x35, 0x32, 0x67, 0x5f, 0xc1, 0x71, 0x44, 0x31, 0xee, 0x79, 0xc8,
    -	0x4c, 0xf7, 0x3c, 0x70, 0x85, 0x2d, 0xdf, 0x0b, 0x1c, 0xaf, 0x37, 0x72, 0xdb, 0x36, 0x15, 0x1c,
    -	0x47, 0x14, 0x3c, 0x11, 0xa1, 0xa4, 0x63, 0x39, 0x9e, 0xe3, 0xb5, 0xf9, 0x22, 0x36, 0xfd, 0x9e,
    -	0x17, 0x88, 0x17, 0x59, 0x25, 0x22, 0x78, 0x04, 0x8b, 0xc7, 0x70, 0x98, 0xff, 0xce, 0x41, 0x89,
    -	0xaf, 0x39, 0x7c, 0xe7, 0x9e, 0x87, 0x8a, 0xab, 0x7b, 0x81, 0x5a, 0xfb, 0x45, 0x65, 0x4a, 0xf2,
    -	0x5e, 0xe3, 0x24, 0x2d, 0x67, 0x16, 0x29, 0x54, 0xc4, 0x9c, 0x49, 0x32, 0x6f, 0xe9, 0x48, 0x9c,
    -	0xa4, 0xe5, 0xd1, 0xeb, 0x1e, 0xbf, 0x1f, 0x2a, 0x33, 0x89, 0x8e, 0xe8, 0x9b, 0x1c, 0x88, 0x25,
    -	0x0e, 0xed, 0xc0, 0x05, 0xcb, 0x75, 0xfd, 0x7b, 0x02, 0xd8, 0xf0, 0xfd, 0xe3, 0x8e, 0x45, 0x8f,
    -	0x99, 0x28, 0xa6, 0x0b, 0x8d, 0x2f, 0x28, 0x96, 0x0b, 0x1b, 0xa3, 0x24, 0x78, 0x1c, 0xdf, 0xb8,
    -	0x63, 0xcb, 0x4d, 0x79, 0x6c, 0x47, 0xb0, 0x3c, 0x04, 0x12, 0xb7, 0x5c, 0x55, 0xb6, 0xcf, 0x28,
    -	0x39, 0xcb, 0x78, 0x0c, 0xcd, 0xd9, 0x04, 0x38, 0x1e, 0x2b, 0x11, 0x5d, 0x87, 0x79, 0xee, 0xc9,
    -	0x7e, 0x2f, 0x08, 0xf3, 0xce, 0xbc, 0x38, 0x6e, 0x74, 0x3a, 0xa8, 0xcd, 0xdf, 0x4e, 0x60, 0xf0,
    -	0x10, 0x25, 0xdf, 0x5c, 0xd7, 0xe9, 0x38, 0x41, 0x75, 0x4e, 0xb0, 0x44, 0x9b, 0x7b, 0x8b, 0x03,
    -	0xb1, 0xc4, 0x25, 0x3c, 0xb0, 0x70, 0xae, 0x07, 0x6e, 0xc2, 0x12, 0x23, 0x9e, 0xbd, 0xed, 0x39,
    -	0x81, 0x63, 0xb9, 0x37, 0x4e, 0x44, 0x56, 0x59, 0x12, 0x07, 0x71, 0x91, 0xa7, 0x84, 0xfb, 0xc3,
    -	0x48, 0x3c, 0x4a, 0x6f, 0xfe, 0x39, 0x0b, 0x48, 0x26, 0xec, 0xb6, 0x4c, 0xca, 0x64, 0x5c, 0xe4,
    -	0x65, 0x85, 0x4a, 0xf8, 0x8d, 0xa1, 0xb2, 0x42, 0xe5, 0xfa, 0x21, 0x1e, 0xed, 0x40, 0x51, 0xc6,
    -	0xa7, 0xf8, 0xce, 0xad, 0x2b, 0xe2, 0xe2, 0x6e, 0x88, 0x38, 0x1b, 0xd4, 0x56, 0x12, 0x6a, 0x22,
    -	0x8c, 0x28, 0xf9, 0x62, 0x09, 0xe8, 0x2a, 0x80, 0xd5, 0x75, 0xf4, 0xa6, 0x5f, 0x31, 0x6e, 0xfd,
    -	0xc4, 0xe5, 0x3b, 0xd6, 0xa8, 0xd0, 0x4b, 0x90, 0x0b, 0x3e, 0x5d, 0x59, 0x56, 0x10, 0x55, 0x27,
    -	0x2f, 0xc2, 0x84, 0x04, 0xae, 0x5d, 0x5c, 0x0a, 0xc6, 0xcd, 0x52, 0x15, 0x55, 0xa4, 0x7d, 0x2b,
    -	0xc2, 0x60, 0x8d, 0x0a, 0x7d, 0x0b, 0x0a, 0x87, 0x2a, 0x9f, 0x15, 0xa7, 0x9b, 0x3a, 0xce, 0x86,
    -	0x59, 0xb0, 0xec, 0x3b, 0x84, 0x5f, 0x38, 0x92, 0x86, 0xbe, 0x0a, 0x25, 0xd6, 0x3b, 0x88, 0x52,
    -	0x00, 0xe9, 0x12, 0xd1, 0x7b, 0xbb, 0x1f, 0xa3, 0xb0, 0x4e, 0x67, 0xbe, 0x09, 0xc5, 0x1d, 0xa7,
    -	0x45, 0x7d, 0x51, 0x48, 0x3e, 0x01, 0x73, 0x2c, 0x51, 0x25, 0x45, 0x27, 0x19, 0xba, 0x6a, 0x88,
    -	0xe7, 0x3e, 0xea, 0x59, 0x9e, 0x2f, 0x6b, 0xa1, 0x7c, 0xec, 0xa3, 0xaf, 0x72, 0x20, 0x96, 0xb8,
    -	0xeb, 0xcb, 0x3c, 0xcb, 0xf8, 0xe9, 0xfb, 0xb5, 0x99, 0x77, 0xdf, 0xaf, 0xcd, 0xbc, 0xf7, 0xbe,
    -	0xca, 0x38, 0xfe, 0x00, 0x00, 0xbb, 0x07, 0xdf, 0x23, 0x2d, 0x19, 0xbb, 0x53, 0xf5, 0x06, 0xc3,
    -	0x96, 0xb4, 0xe8, 0x0d, 0x66, 0x86, 0x32, 0x47, 0x0d, 0x87, 0x13, 0x94, 0x68, 0x1d, 0x8a, 0x51,
    -	0xd7, 0x4f, 0xf9, 0xc7, 0x52, 0xe8, 0x6f, 0x51, 0x6b, 0x10, 0xc7, 0x34, 0x89, 0x87, 0x24, 0x77,
    -	0xee, 0x43, 0xd2, 0x80, 0x6c, 0xcf, 0xb1, 0x55, 0xd5, 0xfd, 0x74, 0xf8, 0x90, 0xdf, 0xd9, 0x6e,
    -	0x9e, 0x0d, 0x6a, 0x8f, 0x4c, 0x6a, 0xb6, 0x07, 0xfd, 0x2e, 0x61, 0xf5, 0x3b, 0xdb, 0x4d, 0xcc,
    -	0x99, 0xc7, 0x45, 0xb5, 0xd9, 0x29, 0xa3, 0xda, 0x55, 0x80, 0x76, 0xdc, 0xbb, 0x90, 0x41, 0x23,
    -	0x72, 0x44, 0xad, 0x67, 0xa1, 0x51, 0x21, 0x06, 0x4b, 0x2d, 0x5e, 0xdf, 0xab, 0x1e, 0x02, 0x0b,
    -	0xac, 0x8e, 0xec, 0x86, 0x4e, 0x77, 0x27, 0x2e, 0x29, 0x35, 0x4b, 0x9b, 0xc3, 0xc2, 0xf0, 0xa8,
    -	0x7c, 0xe4, 0xc3, 0x92, 0xad, 0xca, 0xcc, 0x58, 0x69, 0x71, 0x6a, 0xa5, 0x22, 0x62, 0x35, 0x87,
    -	0x05, 0xe1, 0x51, 0xd9, 0xe8, 0xbb, 0xb0, 0x12, 0x02, 0x47, 0x6b, 0x7d, 0x11, 0xf5, 0xb3, 0x8d,
    -	0xd5, 0xd3, 0x41, 0x6d, 0xa5, 0x39, 0x91, 0x0a, 0xdf, 0x47, 0x02, 0xb2, 0x61, 0xd6, 0x95, 0x59,
    -	0x72, 0x49, 0x64, 0x36, 0x5f, 0x4b, 0xb7, 0x8a, 0xd8, 0xfb, 0xeb, 0x7a, 0x76, 0x1c, 0xf5, 0x6d,
    -	0x54, 0x62, 0xac, 0x64, 0xa3, 0xb7, 0xa0, 0x64, 0x79, 0x9e, 0x1f, 0x58, 0xb2, 0xfb, 0x50, 0x16,
    -	0xaa, 0x36, 0xa6, 0x56, 0xb5, 0x11, 0xcb, 0x18, 0xca, 0xc6, 0x35, 0x0c, 0xd6, 0x55, 0xa1, 0x7b,
    -	0xb0, 0xe0, 0xdf, 0xf3, 0x08, 0xc5, 0xe4, 0x90, 0x50, 0xe2, 0xb5, 0x08, 0xab, 0x56, 0x84, 0xf6,
    -	0x67, 0x52, 0x6a, 0x4f, 0x30, 0xc7, 0x2e, 0x9d, 0x84, 0x33, 0x3c, 0xac, 0x05, 0xd5, 0x79, 0x6c,
    -	0xf5, 0x2c, 0xd7, 0xf9, 0x3e, 0xa1, 0xac, 0x3a, 0x1f, 0x37, 0xac, 0xb7, 0x22, 0x28, 0xd6, 0x28,
    -	0x50, 0x0f, 0x2a, 0x1d, 0xfd, 0xc9, 0xa8, 0x2e, 0x09, 0x33, 0xaf, 0xa5, 0x33, 0x73, 0xf4, 0x51,
    -	0x8b, 0xd3, 0xa0, 0x04, 0x0e, 0x27, 0xb5, 0xac, 0x3c, 0x07, 0xa5, 0x4f, 0x59, 0x21, 0xf0, 0x0a,
    -	0x63, 0xf8, 0x40, 0xa6, 0xaa, 0x30, 0xfe, 0x98, 0x81, 0xf9, 0xe4, 0x36, 0x0e, 0x3d, 0x87, 0xf9,
    -	0x54, 0xcf, 0x61, 0x58, 0xcb, 0x1a, 0x13, 0x27, 0x17, 0x61, 0x7c, 0xce, 0x4e, 0x8c, 0xcf, 0x2a,
    -	0x0c, 0xe6, 0x1e, 0x24, 0x0c, 0xd6, 0x01, 0x78, 0xb2, 0x42, 0x7d, 0xd7, 0x25, 0x54, 0x44, 0xc0,
    -	0x82, 0x9a, 0x50, 0x44, 0x50, 0xac, 0x51, 0xf0, 0x94, 0xfa, 0xc0, 0xf5, 0x5b, 0xc7, 0x62, 0x0b,
    -	0xc2, 0xdb, 0x2b, 0x62, 0x5f, 0x41, 0xa6, 0xd4, 0x8d, 0x11, 0x2c, 0x1e, 0xc3, 0x61, 0xf6, 0xe1,
    -	0xe2, 0x9e, 0x45, 0x79, 0x92, 0x13, 0xdf, 0x14, 0x51, 0xb3, 0xbc, 0x31, 0x52, 0x11, 0x3d, 0x3d,
    -	0xed, 0x8d, 0x8b, 0x37, 0x3f, 0x86, 0xc5, 0x55, 0x91, 0xf9, 0x57, 0x03, 0x2e, 0x8d, 0xd5, 0xfd,
    -	0x19, 0x54, 0x64, 0x6f, 0x24, 0x2b, 0xb2, 0xe7, 0x53, 0xb6, 0x32, 0xc7, 0x59, 0x3b, 0xa1, 0x3e,
    -	0x9b, 0x83, 0xfc, 0x1e, 0xcf, 0x84, 0xcd, 0x0f, 0x0d, 0x28, 0x8b, 0x5f, 0xd3, 0x74, 0x92, 0x6b,
    -	0xc9, 0x01, 0x43, 0xf1, 0xe1, 0x0d, 0x17, 0x1e, 0x46, 0xab, 0xf9, 0x1d, 0x03, 0x92, 0x3d, 0x5c,
    -	0xf4, 0xa2, 0xbc, 0x02, 0x46, 0xd4, 0x64, 0x9d, 0xd2, 0xfd, 0x5f, 0x98, 0x54, 0x92, 0x5e, 0x48,
    -	0xd5, 0xad, 0x7c, 0x12, 0x8a, 0xd8, 0xf7, 0x83, 0x3d, 0x2b, 0x38, 0x62, 0x7c, 0xef, 0xba, 0xfc,
    -	0x87, 0xda, 0x5e, 0xb1, 0x77, 0x02, 0x83, 0x25, 0xdc, 0xfc, 0xb9, 0x01, 0x97, 0x26, 0xce, 0x8d,
    -	0x78, 0x14, 0x69, 0x45, 0x5f, 0x6a, 0x45, 0x91, 0x23, 0xc7, 0x74, 0x58, 0xa3, 0xe2, 0xb5, 0x64,
    -	0x62, 0xd8, 0x34, 0x5c, 0x4b, 0x26, 0xb4, 0xe1, 0x24, 0xad, 0xf9, 0xcf, 0x0c, 0xa8, 0x41, 0xcd,
    -	0xff, 0xd8, 0xe9, 0x1f, 0x1f, 0x1a, 0x13, 0xcd, 0x27, 0xc7, 0x44, 0xd1, 0x4c, 0x48, 0x9b, 0x93,
    -	0x64, 0xef, 0x3f, 0x27, 0x41, 0xcf, 0x46, 0xa3, 0x17, 0xe9, 0x43, 0xab, 0xc9, 0xd1, 0xcb, 0xd9,
    -	0xa0, 0x56, 0x56, 0xc2, 0x93, 0xa3, 0x98, 0xd7, 0x60, 0xce, 0x26, 0x81, 0xe5, 0xb8, 0xb2, 0x2e,
    -	0x4c, 0x3d, 0x4c, 0x90, 0xc2, 0x9a, 0x92, 0xb5, 0x51, 0xe2, 0x36, 0xa9, 0x0f, 0x1c, 0x0a, 0xe4,
    -	0x01, 0xbb, 0xe5, 0xdb, 0xb2, 0x22, 0xc9, 0xc7, 0x01, 0x7b, 0xd3, 0xb7, 0x09, 0x16, 0x18, 0xf3,
    -	0x5d, 0x03, 0x4a, 0x52, 0xd2, 0xa6, 0xd5, 0x63, 0x04, 0x5d, 0x89, 0x56, 0x21, 0x8f, 0xfb, 0x92,
    -	0x3e, 0x63, 0x3b, 0x1b, 0xd4, 0x8a, 0x82, 0x4c, 0x14, 0x33, 0x63, 0x66, 0x49, 0x99, 0x73, 0xf6,
    -	0xe8, 0x51, 0xc8, 0x8b, 0x0b, 0xa4, 0x36, 0x33, 0x1e, 0x16, 0x72, 0x20, 0x96, 0x38, 0xf3, 0xe3,
    -	0x0c, 0x54, 0x12, 0x8b, 0x4b, 0x51, 0x17, 0x44, 0x2d, 0xd4, 0x4c, 0x8a, 0xb6, 0xfc, 0xe4, 0xd1,
    -	0xbc, 0x7a, 0xbe, 0x66, 0x1f, 0xe4, 0xf9, 0xfa, 0x36, 0xcc, 0xb6, 0xf8, 0x1e, 0x85, 0xff, 0xf4,
    -	0xb8, 0x32, 0xcd, 0x71, 0x8a, 0xdd, 0x8d, 0xbd, 0x51, 0x7c, 0x32, 0xac, 0x04, 0xa2, 0x9b, 0xb0,
    -	0x44, 0x49, 0x40, 0xfb, 0x1b, 0x87, 0x01, 0xa1, 0x7a, 0x33, 0x21, 0x1f, 0x67, 0xdf, 0x78, 0x98,
    -	0x00, 0x8f, 0xf2, 0x98, 0x07, 0x50, 0xbe, 0x6d, 0x1d, 0xb8, 0xd1, 0x78, 0x0c, 0x43, 0xc5, 0xf1,
    -	0x5a, 0x6e, 0xcf, 0x26, 0x32, 0xa0, 0x87, 0xd1, 0x2b, 0xbc, 0xb4, 0xdb, 0x3a, 0xf2, 0x6c, 0x50,
    -	0xbb, 0x90, 0x00, 0xc8, 0x79, 0x10, 0x4e, 0x8a, 0x30, 0x5d, 0xc8, 0x7d, 0x86, 0x95, 0xe4, 0x77,
    -	0xa0, 0x18, 0xe7, 0xfa, 0x0f, 0x59, 0xa5, 0xf9, 0x06, 0x14, 0xb8, 0xc7, 0x87, 0x35, 0xea, 0x39,
    -	0x59, 0x52, 0x32, 0xf7, 0xca, 0xa4, 0xc9, 0xbd, 0xc4, 0x90, 0xf5, 0x4e, 0xd7, 0x7e, 0xc0, 0x21,
    -	0x6b, 0xe6, 0x41, 0x5e, 0xbe, 0xec, 0x94, 0x2f, 0xdf, 0x55, 0x90, 0x7f, 0x44, 0xe1, 0x8f, 0x8c,
    -	0x4c, 0x20, 0xb4, 0x47, 0x46, 0x7f, 0xff, 0xb5, 0x09, 0xc3, 0x8f, 0x0d, 0x00, 0xd1, 0xca, 0x13,
    -	0x6d, 0xa4, 0x14, 0xe3, 0xfc, 0x3b, 0x30, 0xeb, 0x4b, 0x8f, 0x94, 0x83, 0xd6, 0x29, 0xfb, 0xc5,
    -	0xd1, 0x45, 0x92, 0x3e, 0x89, 0x95, 0xb0, 0xc6, 0xcb, 0x1f, 0x7c, 0xb2, 0x3a, 0xf3, 0xe1, 0x27,
    -	0xab, 0x33, 0x1f, 0x7d, 0xb2, 0x3a, 0xf3, 0xf6, 0xe9, 0xaa, 0xf1, 0xc1, 0xe9, 0xaa, 0xf1, 0xe1,
    -	0xe9, 0xaa, 0xf1, 0xd1, 0xe9, 0xaa, 0xf1, 0xf1, 0xe9, 0xaa, 0xf1, 0xee, 0xdf, 0x57, 0x67, 0x5e,
    -	0x7b, 0x2c, 0xcd, 0x1f, 0xfc, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x28, 0x27, 0x65, 0xab, 0x20,
    -	0x28, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto", fileDescriptor_a8431b6e0aeeb761)
    +}
    +
    +var fileDescriptor_a8431b6e0aeeb761 = []byte{
    +	// 2928 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3a, 0x4d, 0x6c, 0x24, 0x47,
    +	0xd5, 0xee, 0xf9, 0xb1, 0x67, 0xde, 0x78, 0xfc, 0x53, 0xeb, 0xfd, 0xbe, 0x59, 0x23, 0x3c, 0x4e,
    +	0x27, 0x8a, 0x36, 0x90, 0x8c, 0x77, 0x97, 0x25, 0xda, 0x6c, 0x48, 0xc0, 0xe3, 0x59, 0x6f, 0x9c,
    +	0xac, 0x63, 0xab, 0xbc, 0xbb, 0x81, 0x10, 0xa1, 0x94, 0xa7, 0xcb, 0xe3, 0xc6, 0x3d, 0xdd, 0x93,
    +	0xaa, 0x1e, 0x6f, 0x06, 0x0e, 0xe4, 0x00, 0x12, 0x48, 0x28, 0x0a, 0x37, 0x4e, 0x28, 0x11, 0x9c,
    +	0x38, 0x21, 0x4e, 0xdc, 0x41, 0x22, 0xc7, 0x20, 0x2e, 0x91, 0x40, 0xa3, 0xac, 0x39, 0x70, 0x44,
    +	0x5c, 0x2d, 0x24, 0x50, 0xfd, 0xf4, 0xdf, 0xfc, 0xac, 0x7b, 0x76, 0x97, 0x88, 0xdb, 0xf4, 0xfb,
    +	0xaf, 0xaa, 0xf7, 0x5e, 0xbd, 0xf7, 0x6a, 0xe0, 0xea, 0xd1, 0x35, 0x5e, 0xb3, 0xbd, 0x35, 0xd2,
    +	0xb1, 0xdb, 0xa4, 0x79, 0x68, 0xbb, 0x94, 0xf5, 0xd6, 0x3a, 0x47, 0x2d, 0x01, 0xe0, 0x6b, 0x6d,
    +	0xea, 0x93, 0xb5, 0xe3, 0xcb, 0x6b, 0x2d, 0xea, 0x52, 0x46, 0x7c, 0x6a, 0xd5, 0x3a, 0xcc, 0xf3,
    +	0x3d, 0xf4, 0x94, 0xe2, 0xaa, 0xc5, 0xb9, 0x6a, 0x9d, 0xa3, 0x96, 0x00, 0xf0, 0x9a, 0xe0, 0xaa,
    +	0x1d, 0x5f, 0x5e, 0x7e, 0xae, 0x65, 0xfb, 0x87, 0xdd, 0xfd, 0x5a, 0xd3, 0x6b, 0xaf, 0xb5, 0xbc,
    +	0x96, 0xb7, 0x26, 0x99, 0xf7, 0xbb, 0x07, 0xf2, 0x4b, 0x7e, 0xc8, 0x5f, 0x4a, 0xe8, 0xf2, 0xda,
    +	0x38, 0x53, 0x58, 0xd7, 0xf5, 0xed, 0x36, 0x1d, 0xb4, 0x62, 0xf9, 0xf9, 0xb3, 0x18, 0x78, 0xf3,
    +	0x90, 0xb6, 0xc9, 0x20, 0x9f, 0xf9, 0xc7, 0x2c, 0x14, 0xd6, 0x77, 0xb7, 0x6e, 0x32, 0xaf, 0xdb,
    +	0x41, 0xab, 0x90, 0x73, 0x49, 0x9b, 0x56, 0x8c, 0x55, 0xe3, 0x62, 0xb1, 0x3e, 0xfb, 0x71, 0xbf,
    +	0x3a, 0x75, 0xd2, 0xaf, 0xe6, 0x5e, 0x27, 0x6d, 0x8a, 0x25, 0x06, 0x39, 0x50, 0x38, 0xa6, 0x8c,
    +	0xdb, 0x9e, 0xcb, 0x2b, 0x99, 0xd5, 0xec, 0xc5, 0xd2, 0x95, 0x97, 0x6b, 0x69, 0xd6, 0x5f, 0x93,
    +	0x0a, 0xee, 0x2a, 0xd6, 0x4d, 0x8f, 0x35, 0x6c, 0xde, 0xf4, 0x8e, 0x29, 0xeb, 0xd5, 0x17, 0xb4,
    +	0x96, 0x82, 0x46, 0x72, 0x1c, 0x6a, 0x40, 0x3f, 0x34, 0x60, 0xa1, 0xc3, 0xe8, 0x01, 0x65, 0x8c,
    +	0x5a, 0x1a, 0x5f, 0xc9, 0xae, 0x1a, 0x8f, 0x41, 0x6d, 0x45, 0xab, 0x5d, 0xd8, 0x1d, 0x90, 0x8f,
    +	0x87, 0x34, 0xa2, 0x5f, 0x1a, 0xb0, 0xcc, 0x29, 0x3b, 0xa6, 0x6c, 0xdd, 0xb2, 0x18, 0xe5, 0xbc,
    +	0xde, 0xdb, 0x70, 0x6c, 0xea, 0xfa, 0x1b, 0x5b, 0x0d, 0xcc, 0x2b, 0x39, 0xb9, 0x0f, 0x5f, 0x4f,
    +	0x67, 0xd0, 0xde, 0x38, 0x39, 0x75, 0x53, 0x5b, 0xb4, 0x3c, 0x96, 0x84, 0xe3, 0x07, 0x98, 0x61,
    +	0x1e, 0xc0, 0x6c, 0x70, 0x90, 0xb7, 0x6c, 0xee, 0xa3, 0xbb, 0x30, 0xdd, 0x12, 0x1f, 0xbc, 0x62,
    +	0x48, 0x03, 0x6b, 0xe9, 0x0c, 0x0c, 0x64, 0xd4, 0xe7, 0xb4, 0x3d, 0xd3, 0xf2, 0x93, 0x63, 0x2d,
    +	0xcd, 0xfc, 0x49, 0x0e, 0x4a, 0xeb, 0xbb, 0x5b, 0x98, 0x72, 0xaf, 0xcb, 0x9a, 0x34, 0x85, 0xd3,
    +	0x5c, 0x83, 0x59, 0x6e, 0xbb, 0xad, 0xae, 0x43, 0x98, 0x80, 0x56, 0xa6, 0x25, 0xe5, 0x92, 0xa6,
    +	0x9c, 0xdd, 0x8b, 0xe1, 0x70, 0x82, 0x12, 0x5d, 0x01, 0x10, 0x12, 0x78, 0x87, 0x34, 0xa9, 0x55,
    +	0xc9, 0xac, 0x1a, 0x17, 0x0b, 0x75, 0xa4, 0xf9, 0xe0, 0xf5, 0x10, 0x83, 0x63, 0x54, 0xe8, 0x49,
    +	0xc8, 0x4b, 0x4b, 0x2b, 0x05, 0xa9, 0xa6, 0xac, 0xc9, 0xf3, 0x72, 0x19, 0x58, 0xe1, 0xd0, 0x33,
    +	0x30, 0xa3, 0xbd, 0xac, 0x52, 0x94, 0x64, 0xf3, 0x9a, 0x6c, 0x26, 0x70, 0x83, 0x00, 0x2f, 0xd6,
    +	0x77, 0x64, 0xbb, 0x96, 0xf4, 0xbb, 0xd8, 0xfa, 0x5e, 0xb3, 0x5d, 0x0b, 0x4b, 0x0c, 0xba, 0x05,
    +	0xf9, 0x63, 0xca, 0xf6, 0x85, 0x27, 0x08, 0xd7, 0xfc, 0x72, 0xba, 0x8d, 0xbe, 0x2b, 0x58, 0xea,
    +	0x45, 0x61, 0x9a, 0xfc, 0x89, 0x95, 0x10, 0x54, 0x03, 0xe0, 0x87, 0x1e, 0xf3, 0xe5, 0xf2, 0x2a,
    +	0xf9, 0xd5, 0xec, 0xc5, 0x62, 0x7d, 0x4e, 0xac, 0x77, 0x2f, 0x84, 0xe2, 0x18, 0x85, 0xa0, 0x6f,
    +	0x12, 0x9f, 0xb6, 0x3c, 0x66, 0x53, 0x5e, 0x99, 0x89, 0xe8, 0x37, 0x42, 0x28, 0x8e, 0x51, 0xa0,
    +	0x57, 0x01, 0x71, 0xdf, 0x63, 0xa4, 0x45, 0xf5, 0x52, 0x5f, 0x21, 0xfc, 0xb0, 0x02, 0x72, 0x75,
    +	0xcb, 0x7a, 0x75, 0x68, 0x6f, 0x88, 0x02, 0x8f, 0xe0, 0x32, 0x7f, 0x6b, 0xc0, 0x7c, 0xcc, 0x17,
    +	0xa4, 0xdf, 0x5d, 0x83, 0xd9, 0x56, 0x2c, 0xea, 0xb4, 0x5f, 0x84, 0xa7, 0x1d, 0x8f, 0x48, 0x9c,
    +	0xa0, 0x44, 0x14, 0x8a, 0x4c, 0x4b, 0x0a, 0xb2, 0xcb, 0xe5, 0xd4, 0x4e, 0x1b, 0xd8, 0x10, 0x69,
    +	0x8a, 0x01, 0x39, 0x8e, 0x24, 0x9b, 0x7f, 0x37, 0xa4, 0x03, 0x07, 0xf9, 0x06, 0x5d, 0x8c, 0xe5,
    +	0x34, 0x43, 0x6e, 0xdf, 0xec, 0x98, 0x7c, 0x74, 0x46, 0x22, 0xc8, 0xfc, 0x4f, 0x24, 0x82, 0xeb,
    +	0x85, 0x9f, 0x7f, 0x58, 0x9d, 0x7a, 0xef, 0xaf, 0xab, 0x53, 0xe6, 0xcf, 0x0c, 0x98, 0x5d, 0xef,
    +	0x74, 0x9c, 0xde, 0x4e, 0xc7, 0x97, 0x0b, 0x30, 0x61, 0xda, 0x62, 0x3d, 0xdc, 0x75, 0xf5, 0x42,
    +	0x41, 0xc4, 0x77, 0x43, 0x42, 0xb0, 0xc6, 0x88, 0xf8, 0x39, 0xf0, 0x58, 0x93, 0xea, 0x70, 0x0b,
    +	0xe3, 0x67, 0x53, 0x00, 0xb1, 0xc2, 0x89, 0x43, 0x3e, 0xb0, 0xa9, 0x63, 0x6d, 0x13, 0x97, 0xb4,
    +	0x28, 0xd3, 0xc1, 0x11, 0x6e, 0xfd, 0x66, 0x0c, 0x87, 0x13, 0x94, 0xe6, 0xbf, 0x33, 0x50, 0xdc,
    +	0xf0, 0x5c, 0xcb, 0xf6, 0x75, 0x70, 0xf9, 0xbd, 0xce, 0x50, 0xf2, 0xb8, 0xdd, 0xeb, 0x50, 0x2c,
    +	0x31, 0xe8, 0x05, 0x98, 0xe6, 0x3e, 0xf1, 0xbb, 0x5c, 0xda, 0x53, 0xac, 0x3f, 0x11, 0xa4, 0xa5,
    +	0x3d, 0x09, 0x3d, 0xed, 0x57, 0xe7, 0x43, 0x71, 0x0a, 0x84, 0x35, 0x83, 0xf0, 0x74, 0x6f, 0x5f,
    +	0x6e, 0x94, 0x75, 0x53, 0x5d, 0x7b, 0xc1, 0xfd, 0x91, 0x8d, 0x3c, 0x7d, 0x67, 0x88, 0x02, 0x8f,
    +	0xe0, 0x42, 0xc7, 0x80, 0x1c, 0xc2, 0xfd, 0xdb, 0x8c, 0xb8, 0x5c, 0xea, 0xba, 0x6d, 0xb7, 0xa9,
    +	0x0e, 0xf8, 0x2f, 0xa5, 0x3b, 0x71, 0xc1, 0x11, 0xe9, 0xbd, 0x35, 0x24, 0x0d, 0x8f, 0xd0, 0x80,
    +	0x9e, 0x86, 0x69, 0x46, 0x09, 0xf7, 0xdc, 0x4a, 0x5e, 0x2e, 0x3f, 0xcc, 0xca, 0x58, 0x42, 0xb1,
    +	0xc6, 0x8a, 0x84, 0xd6, 0xa6, 0x9c, 0x93, 0x56, 0x90, 0x5e, 0xc3, 0x84, 0xb6, 0xad, 0xc0, 0x38,
    +	0xc0, 0x9b, 0xbf, 0x31, 0xa0, 0xbc, 0xc1, 0x28, 0xf1, 0xe9, 0x24, 0x6e, 0xf1, 0xd0, 0x27, 0x8e,
    +	0xd6, 0x61, 0x5e, 0x7e, 0xdf, 0x25, 0x8e, 0x6d, 0xa9, 0x33, 0xc8, 0x49, 0xe6, 0xff, 0xd7, 0xcc,
    +	0xf3, 0x9b, 0x49, 0x34, 0x1e, 0xa4, 0x37, 0x7f, 0x9d, 0x83, 0x72, 0x83, 0x3a, 0x34, 0x32, 0x79,
    +	0x13, 0x50, 0x8b, 0x91, 0x26, 0xdd, 0xa5, 0xcc, 0xf6, 0xac, 0x3d, 0xda, 0xf4, 0x5c, 0x8b, 0x4b,
    +	0x37, 0xca, 0xd6, 0xff, 0x4f, 0xec, 0xef, 0xcd, 0x21, 0x2c, 0x1e, 0xc1, 0x81, 0x1c, 0x28, 0x77,
    +	0x98, 0xfc, 0x2d, 0xf7, 0x5c, 0x79, 0x59, 0xe9, 0xca, 0x57, 0xd2, 0x1d, 0xe9, 0x6e, 0x9c, 0xb5,
    +	0xbe, 0x78, 0xd2, 0xaf, 0x96, 0x13, 0x20, 0x9c, 0x14, 0x8e, 0xbe, 0x01, 0x0b, 0x1e, 0xeb, 0x1c,
    +	0x12, 0xb7, 0x41, 0x3b, 0xd4, 0xb5, 0xa8, 0xeb, 0x73, 0xb9, 0x91, 0x85, 0xfa, 0x92, 0xa8, 0x45,
    +	0x76, 0x06, 0x70, 0x78, 0x88, 0x1a, 0xbd, 0x09, 0x8b, 0x1d, 0xe6, 0x75, 0x48, 0x4b, 0x6e, 0xcc,
    +	0xae, 0xe7, 0xd8, 0xcd, 0x9e, 0xde, 0xce, 0x67, 0x4f, 0xfa, 0xd5, 0xc5, 0xdd, 0x41, 0xe4, 0x69,
    +	0xbf, 0x7a, 0x4e, 0x6e, 0x9d, 0x80, 0x44, 0x48, 0x3c, 0x2c, 0x26, 0xe6, 0x06, 0xf9, 0xb1, 0x6e,
    +	0xf0, 0xa1, 0x01, 0x97, 0xec, 0x96, 0xeb, 0x31, 0x2a, 0xae, 0x08, 0x8a, 0x29, 0xb1, 0x6e, 0x30,
    +	0xe6, 0xb1, 0x37, 0x6c, 0xff, 0x70, 0xc3, 0xe9, 0x72, 0x9f, 0xb2, 0x3a, 0xa3, 0xe4, 0xc8, 0x76,
    +	0x5b, 0xbb, 0x9e, 0x4f, 0x5d, 0xdf, 0x26, 0x8e, 0xf4, 0xc8, 0x42, 0xfd, 0xea, 0x49, 0xbf, 0x7a,
    +	0x69, 0x6b, 0x42, 0x5e, 0x3c, 0xb1, 0x36, 0x73, 0x0b, 0x0a, 0x8d, 0xae, 0x0e, 0xdb, 0x97, 0xa0,
    +	0x60, 0xe9, 0xdf, 0xda, 0x39, 0x82, 0xfc, 0x11, 0xd2, 0x9c, 0xf6, 0xab, 0x65, 0x51, 0x21, 0xd7,
    +	0x02, 0x00, 0x0e, 0x59, 0xcc, 0x5f, 0x19, 0x50, 0x91, 0xce, 0xb9, 0x47, 0x1d, 0xda, 0xf4, 0x3d,
    +	0x86, 0xe9, 0x3b, 0x5d, 0x9b, 0xd1, 0x36, 0x75, 0x7d, 0xf4, 0x45, 0xc8, 0x1e, 0xd1, 0x9e, 0x4e,
    +	0x5d, 0x25, 0x2d, 0x36, 0xfb, 0x1a, 0xed, 0x61, 0x01, 0x47, 0x37, 0xa0, 0xe0, 0x75, 0x44, 0xfa,
    +	0xf0, 0x98, 0x4e, 0x5d, 0xcf, 0x04, 0xaa, 0x77, 0x34, 0xfc, 0xb4, 0x5f, 0x3d, 0x9f, 0x10, 0x1f,
    +	0x20, 0x70, 0xc8, 0x2a, 0x0e, 0xe5, 0x98, 0x38, 0x5d, 0x2a, 0x1c, 0x25, 0x3c, 0x94, 0xbb, 0x12,
    +	0x82, 0x35, 0xc6, 0x7c, 0x1a, 0x0a, 0x52, 0x0c, 0xbf, 0x7b, 0x19, 0x2d, 0x40, 0x16, 0x93, 0x7b,
    +	0xd2, 0xaa, 0x59, 0x2c, 0x7e, 0xc6, 0xee, 0x83, 0x1d, 0x80, 0x9b, 0xd4, 0x0f, 0x42, 0x68, 0x1d,
    +	0xe6, 0x83, 0x4b, 0x31, 0x79, 0x57, 0x87, 0x71, 0x89, 0x93, 0x68, 0x3c, 0x48, 0x6f, 0xbe, 0x05,
    +	0x45, 0x79, 0x9f, 0x8b, 0x62, 0x28, 0x2a, 0xbc, 0x8c, 0x07, 0x14, 0x5e, 0x41, 0x35, 0x95, 0x19,
    +	0x57, 0x4d, 0xc5, 0xcc, 0x75, 0xa0, 0xac, 0x78, 0x83, 0x52, 0x33, 0x95, 0x86, 0x67, 0xa1, 0x10,
    +	0x98, 0xa9, 0xb5, 0x84, 0x2d, 0x46, 0x20, 0x08, 0x87, 0x14, 0x31, 0x6d, 0x87, 0x90, 0xa8, 0x4d,
    +	0xd2, 0x29, 0x8b, 0xd5, 0x91, 0x99, 0x07, 0xd7, 0x91, 0x31, 0x4d, 0x3f, 0x80, 0xca, 0xb8, 0xbe,
    +	0xe4, 0x11, 0xaa, 0xa7, 0xf4, 0xa6, 0x98, 0xef, 0x1b, 0xb0, 0x10, 0x97, 0x94, 0xfe, 0xf8, 0xd2,
    +	0x2b, 0x39, 0xbb, 0x6e, 0x8e, 0xed, 0xc8, 0x2f, 0x0c, 0x58, 0x4a, 0x2c, 0x6d, 0xa2, 0x13, 0x9f,
    +	0xc0, 0xa8, 0xb8, 0x73, 0x64, 0x27, 0x70, 0x8e, 0x3f, 0x67, 0xa0, 0x7c, 0x8b, 0xec, 0x53, 0x27,
    +	0x88, 0x54, 0xf4, 0x7d, 0x28, 0xb5, 0x89, 0xdf, 0x3c, 0x94, 0xd0, 0xa0, 0xc7, 0x6a, 0xa4, 0xbb,
    +	0x36, 0x12, 0x92, 0x6a, 0xdb, 0x91, 0x98, 0x1b, 0xae, 0xcf, 0x7a, 0xf5, 0x73, 0xda, 0xa4, 0x52,
    +	0x0c, 0x83, 0xe3, 0xda, 0x64, 0x63, 0x2c, 0xbf, 0x6f, 0xbc, 0xdb, 0x11, 0x05, 0xe0, 0xe4, 0xfd,
    +	0x78, 0xc2, 0x84, 0x58, 0x56, 0x8b, 0x1a, 0xe3, 0xed, 0x01, 0xf9, 0x78, 0x48, 0xe3, 0xf2, 0xcb,
    +	0xb0, 0x30, 0x68, 0xbc, 0xc8, 0x3f, 0x61, 0x56, 0x54, 0x89, 0x70, 0x09, 0xf2, 0x32, 0x4f, 0xa9,
    +	0xc3, 0xc1, 0xea, 0xe3, 0x7a, 0xe6, 0x9a, 0x21, 0xd3, 0xeb, 0x38, 0x43, 0x1e, 0x53, 0x7a, 0x4d,
    +	0x88, 0x7f, 0xc8, 0xf4, 0xfa, 0x3b, 0x03, 0x72, 0xb2, 0xb5, 0x79, 0x0b, 0x0a, 0x62, 0xff, 0x2c,
    +	0xe2, 0x13, 0x69, 0x57, 0xea, 0xa6, 0x5a, 0x70, 0x6f, 0x53, 0x9f, 0x44, 0xde, 0x16, 0x40, 0x70,
    +	0x28, 0x11, 0x61, 0xc8, 0xdb, 0x3e, 0x6d, 0x07, 0x07, 0xf9, 0xdc, 0x58, 0xd1, 0x7a, 0xa4, 0x53,
    +	0xc3, 0xe4, 0xde, 0x8d, 0x77, 0x7d, 0xea, 0x8a, 0xc3, 0x88, 0x42, 0x63, 0x4b, 0xc8, 0xc0, 0x4a,
    +	0x94, 0xf9, 0x4f, 0x03, 0x42, 0x55, 0xc2, 0xf9, 0x39, 0x75, 0x0e, 0x6e, 0xd9, 0xee, 0x91, 0xde,
    +	0xd6, 0xd0, 0x9c, 0x3d, 0x0d, 0xc7, 0x21, 0xc5, 0xa8, 0xeb, 0x21, 0x33, 0xd9, 0xf5, 0x20, 0x14,
    +	0x36, 0x3d, 0xd7, 0xb7, 0xdd, 0xee, 0x50, 0xb4, 0x6d, 0x68, 0x38, 0x0e, 0x29, 0x44, 0x49, 0xc7,
    +	0x68, 0x9b, 0xd8, 0xae, 0xed, 0xb6, 0xc4, 0x22, 0x36, 0xbc, 0xae, 0xeb, 0xcb, 0xda, 0x46, 0x97,
    +	0x74, 0x78, 0x08, 0x8b, 0x47, 0x70, 0x98, 0xff, 0xca, 0x41, 0x49, 0xac, 0x39, 0xb8, 0xe7, 0x5e,
    +	0x84, 0xb2, 0x13, 0xf7, 0x02, 0xbd, 0xf6, 0xf3, 0xda, 0x94, 0x64, 0x5c, 0xe3, 0x24, 0xad, 0x60,
    +	0x3e, 0x88, 0xdf, 0xd0, 0x7a, 0x0f, 0x42, 0xe6, 0x64, 0x75, 0x90, 0xa4, 0x15, 0xd9, 0xeb, 0x9e,
    +	0x88, 0x0f, 0x5d, 0xe3, 0x85, 0x47, 0xf4, 0x86, 0x00, 0x62, 0x85, 0x43, 0xdb, 0x70, 0x8e, 0x38,
    +	0x8e, 0x77, 0x4f, 0x02, 0xeb, 0x9e, 0x77, 0xd4, 0x26, 0xec, 0x88, 0xcb, 0xb1, 0x44, 0xa1, 0xfe,
    +	0x05, 0xcd, 0x72, 0x6e, 0x7d, 0x98, 0x04, 0x8f, 0xe2, 0x1b, 0x75, 0x6c, 0xb9, 0x09, 0x8f, 0xed,
    +	0x10, 0x96, 0x06, 0x40, 0x32, 0xca, 0xf5, 0x8c, 0xe0, 0xaa, 0x96, 0xb3, 0x84, 0x47, 0xd0, 0x9c,
    +	0x8e, 0x81, 0xe3, 0x91, 0x12, 0xd1, 0x75, 0x98, 0x13, 0x9e, 0xec, 0x75, 0xfd, 0xa0, 0x82, 0xcf,
    +	0xcb, 0xe3, 0x46, 0x27, 0xfd, 0xea, 0xdc, 0xed, 0x04, 0x06, 0x0f, 0x50, 0x8a, 0xcd, 0x75, 0xec,
    +	0xb6, 0xed, 0x57, 0x66, 0x24, 0x4b, 0xb8, 0xb9, 0xb7, 0x04, 0x10, 0x2b, 0x5c, 0xc2, 0x03, 0x0b,
    +	0x67, 0x7a, 0xe0, 0x06, 0x2c, 0x72, 0xea, 0x5a, 0x5b, 0xae, 0x2d, 0x0a, 0xc9, 0x1b, 0xc7, 0xb2,
    +	0x3e, 0x2f, 0xc9, 0x83, 0x38, 0x2f, 0x8a, 0xeb, 0xbd, 0x41, 0x24, 0x1e, 0xa6, 0x37, 0xff, 0x94,
    +	0x05, 0xa4, 0x5a, 0x1f, 0x4b, 0x15, 0x65, 0x2a, 0x2f, 0x8a, 0x06, 0x4d, 0xb7, 0x4e, 0xc6, 0x40,
    +	0x83, 0xa6, 0xbb, 0xa6, 0x00, 0x8f, 0xb6, 0xa1, 0xa8, 0xf2, 0x53, 0x14, 0x73, 0x6b, 0x9a, 0xb8,
    +	0xb8, 0x13, 0x20, 0x4e, 0xfb, 0xd5, 0xe5, 0x84, 0x9a, 0x10, 0x23, 0x9b, 0xe7, 0x48, 0x02, 0xba,
    +	0x02, 0x40, 0x3a, 0x76, 0x7c, 0x7c, 0x5a, 0x8c, 0x86, 0x68, 0xd1, 0x20, 0x04, 0xc7, 0xa8, 0xd0,
    +	0x2b, 0x90, 0xf3, 0x1f, 0xae, 0xc1, 0x2d, 0xc8, 0xfe, 0x5d, 0xb4, 0xb3, 0x52, 0x82, 0xd0, 0x2e,
    +	0x83, 0x82, 0x0b, 0xb3, 0x74, 0x6f, 0x1a, 0x6a, 0xdf, 0x0c, 0x31, 0x38, 0x46, 0x85, 0xbe, 0x09,
    +	0x85, 0x03, 0x5d, 0xcf, 0xca, 0xd3, 0x4d, 0x9d, 0x67, 0x83, 0x2a, 0x58, 0x4d, 0x70, 0x82, 0x2f,
    +	0x1c, 0x4a, 0x43, 0x5f, 0x85, 0x12, 0xef, 0xee, 0x87, 0x25, 0x80, 0x72, 0x89, 0xf0, 0xbe, 0xdd,
    +	0x8b, 0x50, 0x38, 0x4e, 0x67, 0xbe, 0x03, 0xc5, 0x6d, 0xbb, 0xc9, 0x3c, 0xd9, 0x92, 0x3f, 0x03,
    +	0x33, 0x3c, 0xd1, 0x6f, 0x86, 0x27, 0x19, 0xb8, 0x6a, 0x80, 0x17, 0x3e, 0xea, 0x12, 0xd7, 0x53,
    +	0x5d, 0x65, 0x3e, 0xf2, 0xd1, 0xd7, 0x05, 0x10, 0x2b, 0xdc, 0xf5, 0x25, 0x51, 0x65, 0xfc, 0xf8,
    +	0xa3, 0xea, 0xd4, 0x07, 0x1f, 0x55, 0xa7, 0x3e, 0xfc, 0x48, 0x57, 0x1c, 0xbf, 0x07, 0x80, 0x9d,
    +	0xfd, 0xef, 0xd2, 0xa6, 0xca, 0xdd, 0xa9, 0xa6, 0xac, 0xc1, 0x70, 0x5f, 0x4e, 0x59, 0x33, 0x03,
    +	0x95, 0x63, 0x0c, 0x87, 0x13, 0x94, 0x68, 0x0d, 0x8a, 0xe1, 0xfc, 0x54, 0xfb, 0xc7, 0x62, 0xe0,
    +	0x6f, 0xe1, 0x90, 0x15, 0x47, 0x34, 0x89, 0x8b, 0x24, 0x77, 0xe6, 0x45, 0x52, 0x87, 0x6c, 0xd7,
    +	0xb6, 0xf4, 0xfc, 0xe2, 0x52, 0x70, 0x91, 0xdf, 0xd9, 0x6a, 0x9c, 0xf6, 0xab, 0x4f, 0x8c, 0x7b,
    +	0xb6, 0xf0, 0x7b, 0x1d, 0xca, 0x6b, 0x77, 0xb6, 0x1a, 0x58, 0x30, 0x8f, 0xca, 0x6a, 0xd3, 0x13,
    +	0x66, 0xb5, 0x2b, 0x00, 0xad, 0x68, 0x0a, 0xa4, 0x92, 0x46, 0xe8, 0x88, 0xb1, 0xe9, 0x4f, 0x8c,
    +	0x0a, 0x71, 0x58, 0x6c, 0x32, 0x4a, 0x82, 0x69, 0x0c, 0xf7, 0x49, 0x5b, 0xcd, 0x95, 0x27, 0x8b,
    +	0x89, 0x0b, 0x5a, 0xcd, 0xe2, 0xc6, 0xa0, 0x30, 0x3c, 0x2c, 0x1f, 0x79, 0xb0, 0x68, 0xe9, 0x86,
    +	0x3d, 0x52, 0x5a, 0x9c, 0x58, 0xa9, 0xcc, 0x58, 0x8d, 0x41, 0x41, 0x78, 0x58, 0x36, 0xfa, 0x0e,
    +	0x2c, 0x07, 0xc0, 0xe1, 0xa9, 0x89, 0xcc, 0xfa, 0xd9, 0xfa, 0xca, 0x49, 0xbf, 0xba, 0xdc, 0x18,
    +	0x4b, 0x85, 0x1f, 0x20, 0x01, 0x59, 0x30, 0xed, 0xa8, 0x2a, 0xb9, 0x24, 0x2b, 0x9b, 0xaf, 0xa5,
    +	0x5b, 0x45, 0xe4, 0xfd, 0xb5, 0x78, 0x75, 0x1c, 0x4e, 0xc0, 0x74, 0x61, 0xac, 0x65, 0xa3, 0x77,
    +	0xa1, 0x44, 0x5c, 0xd7, 0xf3, 0x89, 0x9a, 0xe3, 0xcc, 0x4a, 0x55, 0xeb, 0x13, 0xab, 0x5a, 0x8f,
    +	0x64, 0x0c, 0x54, 0xe3, 0x31, 0x0c, 0x8e, 0xab, 0x42, 0xf7, 0x60, 0xde, 0xbb, 0xe7, 0x52, 0x86,
    +	0xe9, 0x01, 0x65, 0xd4, 0x6d, 0x52, 0x5e, 0x29, 0x4b, 0xed, 0x57, 0x53, 0x6a, 0x4f, 0x30, 0x47,
    +	0x2e, 0x9d, 0x84, 0x73, 0x3c, 0xa8, 0x05, 0xd5, 0x44, 0x6e, 0x75, 0x89, 0x63, 0x7f, 0x8f, 0x32,
    +	0x5e, 0x99, 0x8b, 0x46, 0xff, 0x9b, 0x21, 0x14, 0xc7, 0x28, 0x50, 0x17, 0xca, 0xed, 0xf8, 0x95,
    +	0x51, 0x59, 0x94, 0x66, 0x5e, 0x4b, 0x67, 0xe6, 0xf0, 0xa5, 0x16, 0x95, 0x41, 0x09, 0x1c, 0x4e,
    +	0x6a, 0x59, 0x7e, 0x01, 0x4a, 0x0f, 0xd9, 0x21, 0x88, 0x0e, 0x63, 0xf0, 0x40, 0x26, 0xea, 0x30,
    +	0xfe, 0x90, 0x81, 0xb9, 0xe4, 0x36, 0x0e, 0x5c, 0x87, 0xf9, 0x54, 0xd7, 0x61, 0xd0, 0xcb, 0x1a,
    +	0x63, 0xdf, 0x80, 0x82, 0xfc, 0x9c, 0x1d, 0x9b, 0x9f, 0x75, 0x1a, 0xcc, 0x3d, 0x4a, 0x1a, 0xac,
    +	0x01, 0x88, 0x62, 0x85, 0x79, 0x8e, 0x43, 0x99, 0x1e, 0xab, 0xa9, 0xb7, 0x9e, 0x10, 0x8a, 0x63,
    +	0x14, 0xa2, 0xa4, 0xde, 0x77, 0xbc, 0xe6, 0x91, 0xdc, 0x82, 0x20, 0x7a, 0x65, 0xee, 0x2b, 0xa8,
    +	0x92, 0xba, 0x3e, 0x84, 0xc5, 0x23, 0x38, 0xcc, 0x1e, 0x9c, 0xdf, 0x25, 0x4c, 0x14, 0x39, 0x51,
    +	0xa4, 0xc8, 0x9e, 0xe5, 0xed, 0xa1, 0x8e, 0xe8, 0xd2, 0xa4, 0x11, 0x17, 0x6d, 0x7e, 0x04, 0x8b,
    +	0xba, 0x22, 0xf3, 0x2f, 0x06, 0x5c, 0x18, 0xa9, 0xfb, 0x73, 0xe8, 0xc8, 0xde, 0x4e, 0x76, 0x64,
    +	0x2f, 0xa6, 0x1c, 0x0a, 0x8f, 0xb2, 0x76, 0x4c, 0x7f, 0x36, 0x03, 0xf9, 0x5d, 0x51, 0x09, 0x9b,
    +	0x9f, 0x18, 0x30, 0x2b, 0x7f, 0x4d, 0x32, 0x93, 0xaf, 0x26, 0x9f, 0x6a, 0x8a, 0x8f, 0xef, 0x99,
    +	0xe6, 0x71, 0x0c, 0xed, 0xdf, 0x37, 0x20, 0x39, 0x0d, 0x47, 0x2f, 0xab, 0x10, 0x30, 0xc2, 0x71,
    +	0xf5, 0x84, 0xee, 0xff, 0xd2, 0xb8, 0x96, 0xf4, 0x5c, 0xaa, 0x69, 0xe5, 0xb3, 0x50, 0xc4, 0x9e,
    +	0xe7, 0xef, 0x12, 0xff, 0x90, 0x8b, 0xbd, 0xeb, 0x88, 0x1f, 0x7a, 0x7b, 0xe5, 0xde, 0x49, 0x0c,
    +	0x56, 0x70, 0xf3, 0xa7, 0x06, 0x5c, 0x18, 0xfb, 0x02, 0x27, 0xb2, 0x48, 0x33, 0xfc, 0xd2, 0x2b,
    +	0x0a, 0x1d, 0x39, 0xa2, 0xc3, 0x31, 0x2a, 0xd1, 0x4b, 0x26, 0x9e, 0xed, 0x06, 0x7b, 0xc9, 0x84,
    +	0x36, 0x9c, 0xa4, 0x35, 0xff, 0x91, 0x01, 0xfd, 0xe4, 0xf5, 0x5f, 0x76, 0xfa, 0xa7, 0x07, 0x1e,
    +	0xdc, 0xe6, 0x92, 0x0f, 0x6e, 0xe1, 0xeb, 0x5a, 0xec, 0xc5, 0x29, 0xfb, 0xe0, 0x17, 0x27, 0xf4,
    +	0x7c, 0xf8, 0x88, 0xa5, 0x7c, 0x68, 0x25, 0xf9, 0x88, 0x75, 0xda, 0xaf, 0xce, 0x6a, 0xe1, 0xc9,
    +	0x47, 0xad, 0x37, 0x61, 0xc6, 0xa2, 0x3e, 0xb1, 0x1d, 0xd5, 0x17, 0xa6, 0x7e, 0x96, 0x51, 0xc2,
    +	0x1a, 0x8a, 0xb5, 0x5e, 0x12, 0x36, 0xe9, 0x0f, 0x1c, 0x08, 0x14, 0x09, 0xbb, 0xe9, 0x59, 0xaa,
    +	0x23, 0xc9, 0x47, 0x09, 0x7b, 0xc3, 0xb3, 0x28, 0x96, 0x18, 0xf3, 0x03, 0x03, 0x4a, 0x4a, 0xd2,
    +	0x06, 0xe9, 0x72, 0x8a, 0x2e, 0x87, 0xab, 0x50, 0xc7, 0x7d, 0x21, 0xfe, 0x5a, 0x79, 0xda, 0xaf,
    +	0x16, 0x25, 0x99, 0x6c, 0x66, 0x46, 0xbc, 0xca, 0x65, 0xce, 0xd8, 0xa3, 0x27, 0x21, 0x2f, 0x03,
    +	0x48, 0x6f, 0x66, 0xf4, 0xec, 0x2a, 0x80, 0x58, 0xe1, 0xcc, 0xcf, 0x32, 0x50, 0x4e, 0x2c, 0x2e,
    +	0x45, 0x5f, 0x10, 0x8e, 0x50, 0x33, 0x29, 0xc6, 0xf2, 0xe3, 0xff, 0xe4, 0xa0, 0xaf, 0xaf, 0xe9,
    +	0x47, 0xb9, 0xbe, 0xbe, 0x05, 0xd3, 0x4d, 0xb1, 0x47, 0xc1, 0x7f, 0x66, 0x2e, 0x4f, 0x72, 0x9c,
    +	0x72, 0x77, 0x23, 0x6f, 0x94, 0x9f, 0x1c, 0x6b, 0x81, 0xe8, 0x26, 0x2c, 0x32, 0xea, 0xb3, 0xde,
    +	0xfa, 0x81, 0x4f, 0x59, 0x7c, 0x98, 0x90, 0x8f, 0xaa, 0x6f, 0x3c, 0x48, 0x80, 0x87, 0x79, 0xcc,
    +	0x7d, 0x98, 0xbd, 0x4d, 0xf6, 0x9d, 0xf0, 0xa1, 0x11, 0x43, 0xd9, 0x76, 0x9b, 0x4e, 0xd7, 0xa2,
    +	0x2a, 0xa1, 0x07, 0xd9, 0x2b, 0x08, 0xda, 0xad, 0x38, 0xf2, 0xb4, 0x5f, 0x3d, 0x97, 0x00, 0xa8,
    +	0x97, 0x35, 0x9c, 0x14, 0x61, 0x3a, 0x90, 0xfb, 0x1c, 0x3b, 0xc9, 0x6f, 0x43, 0x31, 0xaa, 0xf5,
    +	0x1f, 0xb3, 0x4a, 0xf3, 0x6d, 0x28, 0x08, 0x8f, 0x0f, 0x7a, 0xd4, 0x33, 0xaa, 0xa4, 0x64, 0xed,
    +	0x95, 0x49, 0x53, 0x7b, 0xc9, 0xe7, 0xea, 0x3b, 0x1d, 0xeb, 0x11, 0x9f, 0xab, 0x33, 0x8f, 0x72,
    +	0xf3, 0x65, 0x27, 0xbc, 0xf9, 0xae, 0x80, 0xfa, 0x4b, 0x8f, 0xb8, 0x64, 0x54, 0x01, 0x11, 0xbb,
    +	0x64, 0xe2, 0xf7, 0x7f, 0xec, 0x85, 0xe1, 0x47, 0x06, 0x80, 0x1c, 0xe5, 0xc9, 0x31, 0x52, 0x8a,
    +	0x3f, 0x46, 0xdc, 0x81, 0x69, 0x4f, 0x79, 0xa4, 0x7a, 0xb2, 0x9e, 0x70, 0x5e, 0x1c, 0x06, 0x92,
    +	0xf2, 0x49, 0xac, 0x85, 0xd5, 0x5f, 0xfd, 0xf8, 0xfe, 0xca, 0xd4, 0x27, 0xf7, 0x57, 0xa6, 0x3e,
    +	0xbd, 0xbf, 0x32, 0xf5, 0xde, 0xc9, 0x8a, 0xf1, 0xf1, 0xc9, 0x8a, 0xf1, 0xc9, 0xc9, 0x8a, 0xf1,
    +	0xe9, 0xc9, 0x8a, 0xf1, 0xd9, 0xc9, 0x8a, 0xf1, 0xc1, 0xdf, 0x56, 0xa6, 0xde, 0x7c, 0x2a, 0xcd,
    +	0x5f, 0x25, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0xf8, 0xda, 0x63, 0x4c, 0x51, 0x29, 0x00, 0x00,
     }
     
     func (m *APIGroup) Marshal() (dAtA []byte, err error) {
    @@ -1954,6 +1986,16 @@ func (m *DeleteOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.IgnoreStoreReadErrorWithClusterBreakingPotential != nil {
    +		i--
    +		if *m.IgnoreStoreReadErrorWithClusterBreakingPotential {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x30
    +	}
     	if len(m.DryRun) > 0 {
     		for iNdEx := len(m.DryRun) - 1; iNdEx >= 0; iNdEx-- {
     			i -= len(m.DryRun[iNdEx])
    @@ -2026,6 +2068,48 @@ func (m *Duration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *FieldSelectorRequirement) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *FieldSelectorRequirement) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *FieldSelectorRequirement) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Values) > 0 {
    +		for iNdEx := len(m.Values) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Values[iNdEx])
    +			copy(dAtA[i:], m.Values[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Values[iNdEx])))
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	i -= len(m.Operator)
    +	copy(dAtA[i:], m.Operator)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Operator)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Key)
    +	copy(dAtA[i:], m.Key)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *FieldsV1) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -3702,6 +3786,9 @@ func (m *DeleteOptions) Size() (n int) {
     			n += 1 + l + sovGenerated(uint64(l))
     		}
     	}
    +	if m.IgnoreStoreReadErrorWithClusterBreakingPotential != nil {
    +		n += 2
    +	}
     	return n
     }
     
    @@ -3715,6 +3802,25 @@ func (m *Duration) Size() (n int) {
     	return n
     }
     
    +func (m *FieldSelectorRequirement) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Key)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Operator)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Values) > 0 {
    +		for _, s := range m.Values {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
     func (m *FieldsV1) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -4416,6 +4522,7 @@ func (this *DeleteOptions) String() string {
     		`OrphanDependents:` + valueToStringGenerated(this.OrphanDependents) + `,`,
     		`PropagationPolicy:` + valueToStringGenerated(this.PropagationPolicy) + `,`,
     		`DryRun:` + fmt.Sprintf("%v", this.DryRun) + `,`,
    +		`IgnoreStoreReadErrorWithClusterBreakingPotential:` + valueToStringGenerated(this.IgnoreStoreReadErrorWithClusterBreakingPotential) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -4430,6 +4537,18 @@ func (this *Duration) String() string {
     	}, "")
     	return s
     }
    +func (this *FieldSelectorRequirement) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&FieldSelectorRequirement{`,
    +		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
    +		`Operator:` + fmt.Sprintf("%v", this.Operator) + `,`,
    +		`Values:` + fmt.Sprintf("%v", this.Values) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *GetOptions) String() string {
     	if this == nil {
     		return "nil"
    @@ -6354,6 +6473,27 @@ func (m *DeleteOptions) Unmarshal(dAtA []byte) error {
     			}
     			m.DryRun = append(m.DryRun, string(dAtA[iNdEx:postIndex]))
     			iNdEx = postIndex
    +		case 6:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field IgnoreStoreReadErrorWithClusterBreakingPotential", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.IgnoreStoreReadErrorWithClusterBreakingPotential = &b
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -6444,6 +6584,152 @@ func (m *Duration) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *FieldSelectorRequirement) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: FieldSelectorRequirement: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: FieldSelectorRequirement: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Key = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Operator = FieldSelectorOperator(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Values = append(m.Values, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func (m *FieldsV1) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto
    index a2cd8015fb5f..865d3e7caacb 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto
    @@ -34,6 +34,7 @@ message APIGroup {
       optional string name = 1;
     
       // versions are the versions supported in this group.
    +  // +listType=atomic
       repeated GroupVersionForDiscovery versions = 2;
     
       // preferredVersion is the version preferred by the API server, which
    @@ -49,6 +50,7 @@ message APIGroup {
       // For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP.
       // Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.
       // +optional
    +  // +listType=atomic
       repeated ServerAddressByClientCIDR serverAddressByClientCIDRs = 4;
     }
     
    @@ -56,6 +58,7 @@ message APIGroup {
     // /apis.
     message APIGroupList {
       // groups is a list of APIGroup.
    +  // +listType=atomic
       repeated APIGroup groups = 1;
     }
     
    @@ -88,9 +91,11 @@ message APIResource {
       optional Verbs verbs = 4;
     
       // shortNames is a list of suggested short names of the resource.
    +  // +listType=atomic
       repeated string shortNames = 5;
     
       // categories is a list of the grouped resources this resource belongs to (e.g. 'all')
    +  // +listType=atomic
       repeated string categories = 7;
     
       // The hash value of the storage version, the version this resource is
    @@ -112,6 +117,7 @@ message APIResourceList {
       optional string groupVersion = 1;
     
       // resources contains the name of the resources and if they are namespaced.
    +  // +listType=atomic
       repeated APIResource resources = 2;
     }
     
    @@ -122,6 +128,7 @@ message APIResourceList {
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
     message APIVersions {
       // versions are the api versions that are available.
    +  // +listType=atomic
       repeated string versions = 1;
     
       // a map of client CIDR to server address that is serving this group.
    @@ -131,6 +138,7 @@ message APIVersions {
       // The server returns only those CIDRs that it thinks that the client can match.
       // For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP.
       // Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.
    +  // +listType=atomic
       repeated ServerAddressByClientCIDR serverAddressByClientCIDRs = 2;
     }
     
    @@ -145,6 +153,7 @@ message ApplyOptions {
       // request. Valid values are:
       // - All: all dry run stages will be processed
       // +optional
    +  // +listType=atomic
       repeated string dryRun = 1;
     
       // Force is going to "force" Apply requests. It means user will
    @@ -235,6 +244,7 @@ message CreateOptions {
       // request. Valid values are:
       // - All: all dry run stages will be processed
       // +optional
    +  // +listType=atomic
       repeated string dryRun = 1;
     
       // fieldManager is a name associated with the actor or entity
    @@ -303,7 +313,23 @@ message DeleteOptions {
       // request. Valid values are:
       // - All: all dry run stages will be processed
       // +optional
    +  // +listType=atomic
       repeated string dryRun = 5;
    +
    +  // if set to true, it will trigger an unsafe deletion of the resource in
    +  // case the normal deletion flow fails with a corrupt object error.
    +  // A resource is considered corrupt if it can not be retrieved from
    +  // the underlying storage successfully because of a) its data can
    +  // not be transformed e.g. decryption failure, or b) it fails
    +  // to decode into an object.
    +  // NOTE: unsafe deletion ignores finalizer constraints, skips
    +  // precondition checks, and removes the object from the storage.
    +  // WARNING: This may potentially break the cluster if the workload
    +  // associated with the resource being unsafe-deleted relies on normal
    +  // deletion flow. Use only if you REALLY know what you are doing.
    +  // The default value is false, and the user must opt in to enable it
    +  // +optional
    +  optional bool ignoreStoreReadErrorWithClusterBreakingPotential = 6;
     }
     
     // Duration is a wrapper around time.Duration which supports correct
    @@ -313,6 +339,25 @@ message Duration {
       optional int64 duration = 1;
     }
     
    +// FieldSelectorRequirement is a selector that contains values, a key, and an operator that
    +// relates the key and values.
    +message FieldSelectorRequirement {
    +  // key is the field selector key that the requirement applies to.
    +  optional string key = 1;
    +
    +  // operator represents a key's relationship to a set of values.
    +  // Valid operators are In, NotIn, Exists, DoesNotExist.
    +  // The list of operators may grow in the future.
    +  optional string operator = 2;
    +
    +  // values is an array of string values.
    +  // If the operator is In or NotIn, the values array must be non-empty.
    +  // If the operator is Exists or DoesNotExist, the values array must be empty.
    +  // +optional
    +  // +listType=atomic
    +  repeated string values = 3;
    +}
    +
     // FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.
     //
     // Each key is either a '.' representing the field itself, and will always map to an empty set,
    @@ -418,6 +463,7 @@ message LabelSelector {
     
       // matchExpressions is a list of label selector requirements. The requirements are ANDed.
       // +optional
    +  // +listType=atomic
       repeated LabelSelectorRequirement matchExpressions = 2;
     }
     
    @@ -436,6 +482,7 @@ message LabelSelectorRequirement {
       // the values array must be empty. This array is replaced during a strategic
       // merge patch.
       // +optional
    +  // +listType=atomic
       repeated string values = 3;
     }
     
    @@ -447,7 +494,7 @@ message List {
       optional ListMeta metadata = 1;
     
       // List of objects
    -  repeated k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;
    +  repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;
     }
     
     // ListMeta describes metadata that synthetic resources must have, including lists and
    @@ -788,6 +835,8 @@ message ObjectMeta {
       // +optional
       // +patchMergeKey=uid
       // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=uid
       repeated OwnerReference ownerReferences = 13;
     
       // Must be empty before the object is deleted from the registry. Each entry
    @@ -805,6 +854,7 @@ message ObjectMeta {
       // are not vulnerable to ordering changes in the list.
       // +optional
       // +patchStrategy=merge
    +  // +listType=set
       repeated string finalizers = 14;
     
       // ManagedFields maps workflow-id and version to the set of fields
    @@ -816,6 +866,7 @@ message ObjectMeta {
       // workflow used when modifying the object.
       //
       // +optional
    +  // +listType=atomic
       repeated ManagedFieldsEntry managedFields = 17;
     }
     
    @@ -890,6 +941,7 @@ message PatchOptions {
       // request. Valid values are:
       // - All: all dry run stages will be processed
       // +optional
    +  // +listType=atomic
       repeated string dryRun = 1;
     
       // Force is going to "force" Apply requests. It means user will
    @@ -943,6 +995,7 @@ message Preconditions {
     // For example: "/healthz", "/apis".
     message RootPaths {
       // paths are the paths available at root.
    +  // +listType=atomic
       repeated string paths = 1;
     }
     
    @@ -985,6 +1038,7 @@ message Status {
       // is not guaranteed to conform to any schema except that defined by
       // the reason type.
       // +optional
    +  // +listType=atomic
       optional StatusDetails details = 5;
     
       // Suggested HTTP return code for this status, 0 if not set.
    @@ -1049,6 +1103,7 @@ message StatusDetails {
       // The Causes array includes more details associated with the StatusReason
       // failure. Not all StatusReasons may provide detailed causes.
       // +optional
    +  // +listType=atomic
       repeated StatusCause causes = 4;
     
       // If specified, the time in seconds before the operation should be retried. Some errors may indicate
    @@ -1135,6 +1190,7 @@ message UpdateOptions {
       // request. Valid values are:
       // - All: all dry run stages will be processed
       // +optional
    +  // +listType=atomic
       repeated string dryRun = 1;
     
       // fieldManager is a name associated with the actor or entity
    @@ -1187,6 +1243,6 @@ message WatchEvent {
       //  * If Type is Deleted: the state of the object immediately before deletion.
       //  * If Type is Error: *Status is recommended; other types may make sense
       //    depending on context.
    -  optional k8s.io.apimachinery.pkg.runtime.RawExtension object = 2;
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 2;
     }
     
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go
    index 592dcb8a7460..c748071ed7fb 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go
    @@ -24,8 +24,10 @@ import (
     
     	"k8s.io/apimachinery/pkg/fields"
     	"k8s.io/apimachinery/pkg/labels"
    +	cbor "k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct"
     	"k8s.io/apimachinery/pkg/selection"
     	"k8s.io/apimachinery/pkg/types"
    +	utiljson "k8s.io/apimachinery/pkg/util/json"
     )
     
     // LabelSelectorAsSelector converts the LabelSelector api type into a struct that implements
    @@ -280,13 +282,20 @@ func (f FieldsV1) MarshalJSON() ([]byte, error) {
     	if f.Raw == nil {
     		return []byte("null"), nil
     	}
    +	if f.getContentType() == fieldsV1InvalidOrValidCBORObject {
    +		var u map[string]interface{}
    +		if err := cbor.Unmarshal(f.Raw, &u); err != nil {
    +			return nil, fmt.Errorf("metav1.FieldsV1 cbor invalid: %w", err)
    +		}
    +		return utiljson.Marshal(u)
    +	}
     	return f.Raw, nil
     }
     
     // UnmarshalJSON implements json.Unmarshaler
     func (f *FieldsV1) UnmarshalJSON(b []byte) error {
     	if f == nil {
    -		return errors.New("metav1.Fields: UnmarshalJSON on nil pointer")
    +		return errors.New("metav1.FieldsV1: UnmarshalJSON on nil pointer")
     	}
     	if !bytes.Equal(b, []byte("null")) {
     		f.Raw = append(f.Raw[0:0], b...)
    @@ -296,3 +305,75 @@ func (f *FieldsV1) UnmarshalJSON(b []byte) error {
     
     var _ json.Marshaler = FieldsV1{}
     var _ json.Unmarshaler = &FieldsV1{}
    +
    +func (f FieldsV1) MarshalCBOR() ([]byte, error) {
    +	if f.Raw == nil {
    +		return cbor.Marshal(nil)
    +	}
    +	if f.getContentType() == fieldsV1InvalidOrValidJSONObject {
    +		var u map[string]interface{}
    +		if err := utiljson.Unmarshal(f.Raw, &u); err != nil {
    +			return nil, fmt.Errorf("metav1.FieldsV1 json invalid: %w", err)
    +		}
    +		return cbor.Marshal(u)
    +	}
    +	return f.Raw, nil
    +}
    +
    +var cborNull = []byte{0xf6}
    +
    +func (f *FieldsV1) UnmarshalCBOR(b []byte) error {
    +	if f == nil {
    +		return errors.New("metav1.FieldsV1: UnmarshalCBOR on nil pointer")
    +	}
    +	if !bytes.Equal(b, cborNull) {
    +		f.Raw = append(f.Raw[0:0], b...)
    +	}
    +	return nil
    +}
    +
    +const (
    +	// fieldsV1InvalidOrEmpty indicates that a FieldsV1 either contains no raw bytes or its raw
    +	// bytes don't represent an allowable value in any supported encoding.
    +	fieldsV1InvalidOrEmpty = iota
    +
    +	// fieldsV1InvalidOrValidJSONObject indicates that a FieldV1 either contains raw bytes that
    +	// are a valid JSON encoding of an allowable value or don't represent an allowable value in
    +	// any supported encoding.
    +	fieldsV1InvalidOrValidJSONObject
    +
    +	// fieldsV1InvalidOrValidCBORObject indicates that a FieldV1 either contains raw bytes that
    +	// are a valid CBOR encoding of an allowable value or don't represent an allowable value in
    +	// any supported encoding.
    +	fieldsV1InvalidOrValidCBORObject
    +)
    +
    +// getContentType returns one of fieldsV1InvalidOrEmpty, fieldsV1InvalidOrValidJSONObject,
    +// fieldsV1InvalidOrValidCBORObject based on the value of Raw.
    +//
    +// Raw can be encoded in JSON or CBOR and is only valid if it is empty, null, or an object (map)
    +// value. It is invalid if it contains a JSON string, number, boolean, or array. If Raw is nonempty
    +// and represents an allowable value, then the initial byte unambiguously distinguishes a
    +// JSON-encoded value from a CBOR-encoded value.
    +//
    +// A valid JSON-encoded value can begin with any of the four JSON whitespace characters, the first
    +// character 'n' of null, or '{' (0x09, 0x0a, 0x0d, 0x20, 0x6e, or 0x7b, respectively). A valid
    +// CBOR-encoded value can begin with the null simple value, an initial byte with major type "map",
    +// or, if a tag-enclosed map, an initial byte with major type "tag" (0xf6, 0xa0...0xbf, or
    +// 0xc6...0xdb). The two sets of valid initial bytes don't intersect.
    +func (f FieldsV1) getContentType() int {
    +	if len(f.Raw) > 0 {
    +		p := f.Raw[0]
    +		switch p {
    +		case 'n', '{', '\t', '\r', '\n', ' ':
    +			return fieldsV1InvalidOrValidJSONObject
    +		case 0xf6: // null
    +			return fieldsV1InvalidOrValidCBORObject
    +		default:
    +			if p >= 0xa0 && p <= 0xbf /* map */ || p >= 0xc6 && p <= 0xdb /* tag */ {
    +				return fieldsV1InvalidOrValidCBORObject
    +			}
    +		}
    +	}
    +	return fieldsV1InvalidOrEmpty
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go
    index 8eb37f436703..9f302b3f364f 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go
    @@ -19,6 +19,8 @@ package v1
     import (
     	"encoding/json"
     	"time"
    +
    +	cbor "k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct"
     )
     
     const RFC3339Micro = "2006-01-02T15:04:05.000000Z07:00"
    @@ -129,6 +131,25 @@ func (t *MicroTime) UnmarshalJSON(b []byte) error {
     	return nil
     }
     
    +func (t *MicroTime) UnmarshalCBOR(b []byte) error {
    +	var s *string
    +	if err := cbor.Unmarshal(b, &s); err != nil {
    +		return err
    +	}
    +	if s == nil {
    +		t.Time = time.Time{}
    +		return nil
    +	}
    +
    +	parsed, err := time.Parse(RFC3339Micro, *s)
    +	if err != nil {
    +		return err
    +	}
    +
    +	t.Time = parsed.Local()
    +	return nil
    +}
    +
     // UnmarshalQueryParameter converts from a URL query parameter value to an object
     func (t *MicroTime) UnmarshalQueryParameter(str string) error {
     	if len(str) == 0 {
    @@ -160,6 +181,13 @@ func (t MicroTime) MarshalJSON() ([]byte, error) {
     	return json.Marshal(t.UTC().Format(RFC3339Micro))
     }
     
    +func (t MicroTime) MarshalCBOR() ([]byte, error) {
    +	if t.IsZero() {
    +		return cbor.Marshal(nil)
    +	}
    +	return cbor.Marshal(t.UTC().Format(RFC3339Micro))
    +}
    +
     // OpenAPISchemaType is used by the kube-openapi generator when constructing
     // the OpenAPI spec of this type.
     //
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go
    index 421770d43206..0333cfdb3378 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go
    @@ -19,6 +19,8 @@ package v1
     import (
     	"encoding/json"
     	"time"
    +
    +	cbor "k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct"
     )
     
     // Time is a wrapper around time.Time which supports correct
    @@ -116,6 +118,25 @@ func (t *Time) UnmarshalJSON(b []byte) error {
     	return nil
     }
     
    +func (t *Time) UnmarshalCBOR(b []byte) error {
    +	var s *string
    +	if err := cbor.Unmarshal(b, &s); err != nil {
    +		return err
    +	}
    +	if s == nil {
    +		t.Time = time.Time{}
    +		return nil
    +	}
    +
    +	parsed, err := time.Parse(time.RFC3339, *s)
    +	if err != nil {
    +		return err
    +	}
    +
    +	t.Time = parsed.Local()
    +	return nil
    +}
    +
     // UnmarshalQueryParameter converts from a URL query parameter value to an object
     func (t *Time) UnmarshalQueryParameter(str string) error {
     	if len(str) == 0 {
    @@ -151,6 +172,14 @@ func (t Time) MarshalJSON() ([]byte, error) {
     	return buf, nil
     }
     
    +func (t Time) MarshalCBOR() ([]byte, error) {
    +	if t.IsZero() {
    +		return cbor.Marshal(nil)
    +	}
    +
    +	return cbor.Marshal(t.UTC().Format(time.RFC3339))
    +}
    +
     // ToUnstructured implements the value.UnstructuredConverter interface.
     func (t Time) ToUnstructured() interface{} {
     	if t.IsZero() {
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go
    index 8a8ff701899a..4cf3f47956c5 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go
    @@ -236,6 +236,8 @@ type ObjectMeta struct {
     	// +optional
     	// +patchMergeKey=uid
     	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=uid
     	OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" patchStrategy:"merge" patchMergeKey:"uid" protobuf:"bytes,13,rep,name=ownerReferences"`
     
     	// Must be empty before the object is deleted from the registry. Each entry
    @@ -253,6 +255,7 @@ type ObjectMeta struct {
     	// are not vulnerable to ordering changes in the list.
     	// +optional
     	// +patchStrategy=merge
    +	// +listType=set
     	Finalizers []string `json:"finalizers,omitempty" patchStrategy:"merge" protobuf:"bytes,14,rep,name=finalizers"`
     
     	// Tombstone: ClusterName was a legacy field that was always cleared by
    @@ -268,6 +271,7 @@ type ObjectMeta struct {
     	// workflow used when modifying the object.
     	//
     	// +optional
    +	// +listType=atomic
     	ManagedFields []ManagedFieldsEntry `json:"managedFields,omitempty" protobuf:"bytes,17,rep,name=managedFields"`
     }
     
    @@ -428,6 +432,29 @@ type ListOptions struct {
     	SendInitialEvents *bool `json:"sendInitialEvents,omitempty" protobuf:"varint,11,opt,name=sendInitialEvents"`
     }
     
    +const (
    +	// InitialEventsAnnotationKey the name of the key
    +	// under which an annotation marking the end of
    +	// a watchlist stream is stored.
    +	//
    +	// The annotation is added to a "Bookmark" event.
    +	InitialEventsAnnotationKey = "k8s.io/initial-events-end"
    +
    +	// InitialEventsListBlueprintAnnotationKey is the name of the key
    +	// where an empty, versioned list is encoded in the requested format
    +	// (e.g., protobuf, JSON, CBOR), then base64-encoded and stored as a string.
    +	//
    +	// This encoding matches the request encoding format, which may be
    +	// protobuf, JSON, CBOR, or others, depending on what the client requested.
    +	// This ensures that the reconstructed list can be processed through the
    +	// same decoder chain that would handle a standard LIST call response.
    +	//
    +	// The annotation is added to a "Bookmark" event and is used by clients
    +	// to guarantee the format consistency when reconstructing
    +	// the list during WatchList processing.
    +	InitialEventsListBlueprintAnnotationKey = "kubernetes.io/initial-events-list-blueprint"
    +)
    +
     // resourceVersionMatch specifies how the resourceVersion parameter is applied. resourceVersionMatch
     // may only be set if resourceVersion is also set.
     //
    @@ -531,7 +558,23 @@ type DeleteOptions struct {
     	// request. Valid values are:
     	// - All: all dry run stages will be processed
     	// +optional
    +	// +listType=atomic
     	DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,5,rep,name=dryRun"`
    +
    +	// if set to true, it will trigger an unsafe deletion of the resource in
    +	// case the normal deletion flow fails with a corrupt object error.
    +	// A resource is considered corrupt if it can not be retrieved from
    +	// the underlying storage successfully because of a) its data can
    +	// not be transformed e.g. decryption failure, or b) it fails
    +	// to decode into an object.
    +	// NOTE: unsafe deletion ignores finalizer constraints, skips
    +	// precondition checks, and removes the object from the storage.
    +	// WARNING: This may potentially break the cluster if the workload
    +	// associated with the resource being unsafe-deleted relies on normal
    +	// deletion flow. Use only if you REALLY know what you are doing.
    +	// The default value is false, and the user must opt in to enable it
    +	// +optional
    +	IgnoreStoreReadErrorWithClusterBreakingPotential *bool `json:"ignoreStoreReadErrorWithClusterBreakingPotential,omitempty" protobuf:"varint,6,opt,name=ignoreStoreReadErrorWithClusterBreakingPotential"`
     }
     
     const (
    @@ -556,6 +599,7 @@ type CreateOptions struct {
     	// request. Valid values are:
     	// - All: all dry run stages will be processed
     	// +optional
    +	// +listType=atomic
     	DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,1,rep,name=dryRun"`
     	// +k8s:deprecated=includeUninitialized,protobuf=2
     
    @@ -600,6 +644,7 @@ type PatchOptions struct {
     	// request. Valid values are:
     	// - All: all dry run stages will be processed
     	// +optional
    +	// +listType=atomic
     	DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,1,rep,name=dryRun"`
     
     	// Force is going to "force" Apply requests. It means user will
    @@ -651,6 +696,7 @@ type ApplyOptions struct {
     	// request. Valid values are:
     	// - All: all dry run stages will be processed
     	// +optional
    +	// +listType=atomic
     	DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,1,rep,name=dryRun"`
     
     	// Force is going to "force" Apply requests. It means user will
    @@ -683,6 +729,7 @@ type UpdateOptions struct {
     	// request. Valid values are:
     	// - All: all dry run stages will be processed
     	// +optional
    +	// +listType=atomic
     	DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,1,rep,name=dryRun"`
     
     	// fieldManager is a name associated with the actor or entity
    @@ -751,6 +798,7 @@ type Status struct {
     	// is not guaranteed to conform to any schema except that defined by
     	// the reason type.
     	// +optional
    +	// +listType=atomic
     	Details *StatusDetails `json:"details,omitempty" protobuf:"bytes,5,opt,name=details"`
     	// Suggested HTTP return code for this status, 0 if not set.
     	// +optional
    @@ -784,6 +832,7 @@ type StatusDetails struct {
     	// The Causes array includes more details associated with the StatusReason
     	// failure. Not all StatusReasons may provide detailed causes.
     	// +optional
    +	// +listType=atomic
     	Causes []StatusCause `json:"causes,omitempty" protobuf:"bytes,4,rep,name=causes"`
     	// If specified, the time in seconds before the operation should be retried. Some errors may indicate
     	// the client must take an alternate action - for those errors this field may indicate how long to wait
    @@ -882,6 +931,22 @@ const (
     	// Status code 500
     	StatusReasonServerTimeout StatusReason = "ServerTimeout"
     
    +	// StatusReasonStoreReadError means that the server encountered an error while
    +	// retrieving resources from the backend object store.
    +	// This may be due to backend database error, or because processing of the read
    +	// resource failed.
    +	// Details:
    +	//   "kind" string - the kind attribute of the resource being acted on.
    +	//   "name" string - the prefix where the reading error(s) occurred
    +	//   "causes" []StatusCause
    +	//      - (optional):
    +	//        - "type" CauseType - CauseTypeUnexpectedServerResponse
    +	//        - "message" string - the error message from the store backend
    +	//        - "field" string - the full path with the key of the resource that failed reading
    +	//
    +	// Status code 500
    +	StatusReasonStoreReadError StatusReason = "StorageReadError"
    +
     	// StatusReasonTimeout means that the request could not be completed within the given time.
     	// Clients can get this response only when they specified a timeout param in the request,
     	// or if the server cannot complete the operation within a reasonable amount of time.
    @@ -1047,6 +1112,7 @@ type List struct {
     type APIVersions struct {
     	TypeMeta `json:",inline"`
     	// versions are the api versions that are available.
    +	// +listType=atomic
     	Versions []string `json:"versions" protobuf:"bytes,1,rep,name=versions"`
     	// a map of client CIDR to server address that is serving this group.
     	// This is to help clients reach servers in the most network-efficient way possible.
    @@ -1055,6 +1121,7 @@ type APIVersions struct {
     	// The server returns only those CIDRs that it thinks that the client can match.
     	// For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP.
     	// Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.
    +	// +listType=atomic
     	ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" protobuf:"bytes,2,rep,name=serverAddressByClientCIDRs"`
     }
     
    @@ -1065,6 +1132,7 @@ type APIVersions struct {
     type APIGroupList struct {
     	TypeMeta `json:",inline"`
     	// groups is a list of APIGroup.
    +	// +listType=atomic
     	Groups []APIGroup `json:"groups" protobuf:"bytes,1,rep,name=groups"`
     }
     
    @@ -1077,6 +1145,7 @@ type APIGroup struct {
     	// name is the name of the group.
     	Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
     	// versions are the versions supported in this group.
    +	// +listType=atomic
     	Versions []GroupVersionForDiscovery `json:"versions" protobuf:"bytes,2,rep,name=versions"`
     	// preferredVersion is the version preferred by the API server, which
     	// probably is the storage version.
    @@ -1090,6 +1159,7 @@ type APIGroup struct {
     	// For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP.
     	// Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.
     	// +optional
    +	// +listType=atomic
     	ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs,omitempty" protobuf:"bytes,4,rep,name=serverAddressByClientCIDRs"`
     }
     
    @@ -1134,8 +1204,10 @@ type APIResource struct {
     	// update, patch, delete, deletecollection, and proxy)
     	Verbs Verbs `json:"verbs" protobuf:"bytes,4,opt,name=verbs"`
     	// shortNames is a list of suggested short names of the resource.
    +	// +listType=atomic
     	ShortNames []string `json:"shortNames,omitempty" protobuf:"bytes,5,rep,name=shortNames"`
     	// categories is a list of the grouped resources this resource belongs to (e.g. 'all')
    +	// +listType=atomic
     	Categories []string `json:"categories,omitempty" protobuf:"bytes,7,rep,name=categories"`
     	// The hash value of the storage version, the version this resource is
     	// converted to when written to the data store. Value must be treated
    @@ -1168,6 +1240,7 @@ type APIResourceList struct {
     	// groupVersion is the group and version this APIResourceList is for.
     	GroupVersion string `json:"groupVersion" protobuf:"bytes,1,opt,name=groupVersion"`
     	// resources contains the name of the resources and if they are namespaced.
    +	// +listType=atomic
     	APIResources []APIResource `json:"resources" protobuf:"bytes,2,rep,name=resources"`
     }
     
    @@ -1175,6 +1248,7 @@ type APIResourceList struct {
     // For example: "/healthz", "/apis".
     type RootPaths struct {
     	// paths are the paths available at root.
    +	// +listType=atomic
     	Paths []string `json:"paths" protobuf:"bytes,1,rep,name=paths"`
     }
     
    @@ -1218,6 +1292,7 @@ type LabelSelector struct {
     	MatchLabels map[string]string `json:"matchLabels,omitempty" protobuf:"bytes,1,rep,name=matchLabels"`
     	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
     	// +optional
    +	// +listType=atomic
     	MatchExpressions []LabelSelectorRequirement `json:"matchExpressions,omitempty" protobuf:"bytes,2,rep,name=matchExpressions"`
     }
     
    @@ -1234,6 +1309,7 @@ type LabelSelectorRequirement struct {
     	// the values array must be empty. This array is replaced during a strategic
     	// merge patch.
     	// +optional
    +	// +listType=atomic
     	Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"`
     }
     
    @@ -1247,6 +1323,33 @@ const (
     	LabelSelectorOpDoesNotExist LabelSelectorOperator = "DoesNotExist"
     )
     
    +// FieldSelectorRequirement is a selector that contains values, a key, and an operator that
    +// relates the key and values.
    +type FieldSelectorRequirement struct {
    +	// key is the field selector key that the requirement applies to.
    +	Key string `json:"key" protobuf:"bytes,1,opt,name=key"`
    +	// operator represents a key's relationship to a set of values.
    +	// Valid operators are In, NotIn, Exists, DoesNotExist.
    +	// The list of operators may grow in the future.
    +	Operator FieldSelectorOperator `json:"operator" protobuf:"bytes,2,opt,name=operator,casttype=FieldSelectorOperator"`
    +	// values is an array of string values.
    +	// If the operator is In or NotIn, the values array must be non-empty.
    +	// If the operator is Exists or DoesNotExist, the values array must be empty.
    +	// +optional
    +	// +listType=atomic
    +	Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"`
    +}
    +
    +// A field selector operator is the set of operators that can be used in a selector requirement.
    +type FieldSelectorOperator string
    +
    +const (
    +	FieldSelectorOpIn           FieldSelectorOperator = "In"
    +	FieldSelectorOpNotIn        FieldSelectorOperator = "NotIn"
    +	FieldSelectorOpExists       FieldSelectorOperator = "Exists"
    +	FieldSelectorOpDoesNotExist FieldSelectorOperator = "DoesNotExist"
    +)
    +
     // ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource
     // that the fieldset applies to.
     type ManagedFieldsEntry struct {
    @@ -1335,8 +1438,10 @@ type Table struct {
     
     	// columnDefinitions describes each column in the returned items array. The number of cells per row
     	// will always match the number of column definitions.
    +	// +listType=atomic
     	ColumnDefinitions []TableColumnDefinition `json:"columnDefinitions"`
     	// rows is the list of items in the table.
    +	// +listType=atomic
     	Rows []TableRow `json:"rows"`
     }
     
    @@ -1369,12 +1474,14 @@ type TableRow struct {
     	// cells will be as wide as the column definitions array and may contain strings, numbers (float64 or
     	// int64), booleans, simple maps, lists, or null. See the type field of the column definition for a
     	// more detailed description.
    +	// +listType=atomic
     	Cells []interface{} `json:"cells"`
     	// conditions describe additional status of a row that are relevant for a human user. These conditions
     	// apply to the row, not to the object, and will be specific to table output. The only defined
     	// condition type is 'Completed', for a row that indicates a resource that has run to completion and
     	// can be given less visual priority.
     	// +optional
    +	// +listType=atomic
     	Conditions []TableRowCondition `json:"conditions,omitempty"`
     	// This field contains the requested additional information about each object based on the includeObject
     	// policy when requesting the Table. If "None", this field is empty, if "Object" this will be the
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go
    index b736e837126c..405496d3df56 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go
    @@ -129,12 +129,24 @@ var map_DeleteOptions = map[string]string{
     	"orphanDependents":   "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.",
     	"propagationPolicy":  "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.",
     	"dryRun":             "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed",
    +	"ignoreStoreReadErrorWithClusterBreakingPotential": "if set to true, it will trigger an unsafe deletion of the resource in case the normal deletion flow fails with a corrupt object error. A resource is considered corrupt if it can not be retrieved from the underlying storage successfully because of a) its data can not be transformed e.g. decryption failure, or b) it fails to decode into an object. NOTE: unsafe deletion ignores finalizer constraints, skips precondition checks, and removes the object from the storage. WARNING: This may potentially break the cluster if the workload associated with the resource being unsafe-deleted relies on normal deletion flow. Use only if you REALLY know what you are doing. The default value is false, and the user must opt in to enable it",
     }
     
     func (DeleteOptions) SwaggerDoc() map[string]string {
     	return map_DeleteOptions
     }
     
    +var map_FieldSelectorRequirement = map[string]string{
    +	"":         "FieldSelectorRequirement is a selector that contains values, a key, and an operator that relates the key and values.",
    +	"key":      "key is the field selector key that the requirement applies to.",
    +	"operator": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. The list of operators may grow in the future.",
    +	"values":   "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty.",
    +}
    +
    +func (FieldSelectorRequirement) SwaggerDoc() map[string]string {
    +	return map_FieldSelectorRequirement
    +}
    +
     var map_FieldsV1 = map[string]string{
     	"": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where  is the name of a field in a struct, or key in a map 'v:', where  is the exact json formatted value of a list item 'i:', where  is position of a item in a list 'k:', where  is a map of  a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff",
     }
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go
    index 0f58d66c094c..71f7b163a1cb 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go
    @@ -20,6 +20,7 @@ import (
     	gojson "encoding/json"
     	"fmt"
     	"io"
    +	"math/big"
     	"strings"
     
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    @@ -125,6 +126,29 @@ func NestedInt64(obj map[string]interface{}, fields ...string) (int64, bool, err
     	return i, true, nil
     }
     
    +// NestedNumberAsFloat64 returns the float64 value of a nested field. If the field's value is a
    +// float64, it is returned. If the field's value is an int64 that can be losslessly converted to
    +// float64, it will be converted and returned.  Returns false if value is not found and an error if
    +// not a float64 or an int64 that can be accurately represented as a float64.
    +func NestedNumberAsFloat64(obj map[string]interface{}, fields ...string) (float64, bool, error) {
    +	val, found, err := NestedFieldNoCopy(obj, fields...)
    +	if !found || err != nil {
    +		return 0, found, err
    +	}
    +	switch x := val.(type) {
    +	case int64:
    +		f, accuracy := big.NewInt(x).Float64()
    +		if accuracy != big.Exact {
    +			return 0, false, fmt.Errorf("%v accessor error: int64 value %v cannot be losslessly converted to float64", jsonPath(fields), x)
    +		}
    +		return f, true, nil
    +	case float64:
    +		return x, true, nil
    +	default:
    +		return 0, false, fmt.Errorf("%v accessor error: %v is of the type %T, expected float64 or int64", jsonPath(fields), val, val)
    +	}
    +}
    +
     // NestedStringSlice returns a copy of []string value of a nested field.
     // Returns false if value is not found and an error if not a []interface{} or contains non-string items in the slice.
     func NestedStringSlice(obj map[string]interface{}, fields ...string) ([]string, bool, error) {
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go
    index 40d289f3750c..5e36a91ee4ff 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go
    @@ -450,10 +450,14 @@ func (u *Unstructured) SetFinalizers(finalizers []string) {
     }
     
     func (u *Unstructured) GetManagedFields() []metav1.ManagedFieldsEntry {
    -	items, found, err := NestedSlice(u.Object, "metadata", "managedFields")
    +	v, found, err := NestedFieldNoCopy(u.Object, "metadata", "managedFields")
     	if !found || err != nil {
     		return nil
     	}
    +	items, ok := v.([]interface{})
    +	if !ok {
    +		return nil
    +	}
     	managedFields := []metav1.ManagedFieldsEntry{}
     	for _, item := range items {
     		m, ok := item.(map[string]interface{})
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go
    index a0f709ad862f..b1eb1bbfc442 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go
    @@ -26,12 +26,18 @@ import (
     	"k8s.io/apimachinery/pkg/util/sets"
     	"k8s.io/apimachinery/pkg/util/validation"
     	"k8s.io/apimachinery/pkg/util/validation/field"
    +
    +	"k8s.io/utils/ptr"
     )
     
     // LabelSelectorValidationOptions is a struct that can be passed to ValidateLabelSelector to record the validate options
     type LabelSelectorValidationOptions struct {
     	// Allow invalid label value in selector
     	AllowInvalidLabelValueInSelector bool
    +
    +	// Allows an operator that is not interpretable to pass validation.  This is useful for cases where a broader check
    +	// can be performed, as in a *SubjectAccessReview
    +	AllowUnknownOperatorInRequirement bool
     }
     
     // LabelSelectorHasInvalidLabelValue returns true if the given selector contains an invalid label value in a match expression.
    @@ -79,7 +85,9 @@ func ValidateLabelSelectorRequirement(sr metav1.LabelSelectorRequirement, opts L
     			allErrs = append(allErrs, field.Forbidden(fldPath.Child("values"), "may not be specified when `operator` is 'Exists' or 'DoesNotExist'"))
     		}
     	default:
    -		allErrs = append(allErrs, field.Invalid(fldPath.Child("operator"), sr.Operator, "not a valid selector operator"))
    +		if !opts.AllowUnknownOperatorInRequirement {
    +			allErrs = append(allErrs, field.Invalid(fldPath.Child("operator"), sr.Operator, "not a valid selector operator"))
    +		}
     	}
     	allErrs = append(allErrs, ValidateLabelName(sr.Key, fldPath.Child("key"))...)
     	if !opts.AllowInvalidLabelValueInSelector {
    @@ -113,6 +121,39 @@ func ValidateLabels(labels map[string]string, fldPath *field.Path) field.ErrorLi
     	return allErrs
     }
     
    +// FieldSelectorValidationOptions is a struct that can be passed to ValidateFieldSelectorRequirement to record the validate options
    +type FieldSelectorValidationOptions struct {
    +	// Allows an operator that is not interpretable to pass validation.  This is useful for cases where a broader check
    +	// can be performed, as in a *SubjectAccessReview
    +	AllowUnknownOperatorInRequirement bool
    +}
    +
    +// ValidateLabelSelectorRequirement validates the requirement according to the opts and returns any validation errors.
    +func ValidateFieldSelectorRequirement(requirement metav1.FieldSelectorRequirement, opts FieldSelectorValidationOptions, fldPath *field.Path) field.ErrorList {
    +	allErrs := field.ErrorList{}
    +
    +	if len(requirement.Key) == 0 {
    +		allErrs = append(allErrs, field.Required(fldPath.Child("key"), "must be specified"))
    +	}
    +
    +	switch requirement.Operator {
    +	case metav1.FieldSelectorOpIn, metav1.FieldSelectorOpNotIn:
    +		if len(requirement.Values) == 0 {
    +			allErrs = append(allErrs, field.Required(fldPath.Child("values"), "must be specified when `operator` is 'In' or 'NotIn'"))
    +		}
    +	case metav1.FieldSelectorOpExists, metav1.FieldSelectorOpDoesNotExist:
    +		if len(requirement.Values) > 0 {
    +			allErrs = append(allErrs, field.Forbidden(fldPath.Child("values"), "may not be specified when `operator` is 'Exists' or 'DoesNotExist'"))
    +		}
    +	default:
    +		if !opts.AllowUnknownOperatorInRequirement {
    +			allErrs = append(allErrs, field.Invalid(fldPath.Child("operator"), requirement.Operator, "not a valid selector operator"))
    +		}
    +	}
    +
    +	return allErrs
    +}
    +
     func ValidateDeleteOptions(options *metav1.DeleteOptions) field.ErrorList {
     	allErrs := field.ErrorList{}
     	//lint:file-ignore SA1019 Keep validation for deprecated OrphanDependents option until it's being removed
    @@ -126,6 +167,7 @@ func ValidateDeleteOptions(options *metav1.DeleteOptions) field.ErrorList {
     		allErrs = append(allErrs, field.NotSupported(field.NewPath("propagationPolicy"), options.PropagationPolicy, []string{string(metav1.DeletePropagationForeground), string(metav1.DeletePropagationBackground), string(metav1.DeletePropagationOrphan), "nil"}))
     	}
     	allErrs = append(allErrs, ValidateDryRun(field.NewPath("dryRun"), options.DryRun)...)
    +	allErrs = append(allErrs, ValidateIgnoreStoreReadError(field.NewPath("ignoreStoreReadErrorWithClusterBreakingPotential"), options)...)
     	return allErrs
     }
     
    @@ -147,15 +189,16 @@ func ValidateUpdateOptions(options *metav1.UpdateOptions) field.ErrorList {
     
     func ValidatePatchOptions(options *metav1.PatchOptions, patchType types.PatchType) field.ErrorList {
     	allErrs := field.ErrorList{}
    -	if patchType != types.ApplyPatchType {
    -		if options.Force != nil {
    -			allErrs = append(allErrs, field.Forbidden(field.NewPath("force"), "may not be specified for non-apply patch"))
    -		}
    -	} else {
    +	switch patchType {
    +	case types.ApplyYAMLPatchType, types.ApplyCBORPatchType:
     		if options.FieldManager == "" {
     			// This field is defaulted to "kubectl" by kubectl, but HAS TO be explicitly set by controllers.
     			allErrs = append(allErrs, field.Required(field.NewPath("fieldManager"), "is required for apply patch"))
     		}
    +	default:
    +		if options.Force != nil {
    +			allErrs = append(allErrs, field.Forbidden(field.NewPath("force"), "may not be specified for non-apply patch"))
    +		}
     	}
     	allErrs = append(allErrs, ValidateFieldManager(options.FieldManager, field.NewPath("fieldManager"))...)
     	allErrs = append(allErrs, ValidateDryRun(field.NewPath("dryRun"), options.DryRun)...)
    @@ -173,7 +216,7 @@ func ValidateFieldManager(fieldManager string, fldPath *field.Path) field.ErrorL
     	// considered as not set and is defaulted by the rest of the process
     	// (unless apply is used, in which case it is required).
     	if len(fieldManager) > FieldManagerMaxLength {
    -		allErrs = append(allErrs, field.TooLong(fldPath, fieldManager, FieldManagerMaxLength))
    +		allErrs = append(allErrs, field.TooLong(fldPath, "" /*unused*/, FieldManagerMaxLength))
     	}
     	// Verify that all characters are printable.
     	for i, r := range fieldManager {
    @@ -238,7 +281,7 @@ func ValidateManagedFields(fieldsList []metav1.ManagedFieldsEntry, fldPath *fiel
     		allErrs = append(allErrs, ValidateFieldManager(fields.Manager, fldPath.Child("manager"))...)
     
     		if len(fields.Subresource) > MaxSubresourceNameLength {
    -			allErrs = append(allErrs, field.TooLong(fldPath.Child("subresource"), fields.Subresource, MaxSubresourceNameLength))
    +			allErrs = append(allErrs, field.TooLong(fldPath.Child("subresource"), "" /*unused*/, MaxSubresourceNameLength))
     		}
     	}
     	return allErrs
    @@ -295,12 +338,12 @@ func ValidateCondition(condition metav1.Condition, fldPath *field.Path) field.Er
     			allErrs = append(allErrs, field.Invalid(fldPath.Child("reason"), condition.Reason, currErr))
     		}
     		if len(condition.Reason) > maxReasonLen {
    -			allErrs = append(allErrs, field.TooLong(fldPath.Child("reason"), condition.Reason, maxReasonLen))
    +			allErrs = append(allErrs, field.TooLong(fldPath.Child("reason"), "" /*unused*/, maxReasonLen))
     		}
     	}
     
     	if len(condition.Message) > maxMessageLen {
    -		allErrs = append(allErrs, field.TooLong(fldPath.Child("message"), condition.Message, maxMessageLen))
    +		allErrs = append(allErrs, field.TooLong(fldPath.Child("message"), "" /*unused*/, maxMessageLen))
     	}
     
     	return allErrs
    @@ -318,3 +361,31 @@ func isValidConditionReason(value string) []string {
     	}
     	return nil
     }
    +
    +// ValidateIgnoreStoreReadError validates that delete options are valid when
    +// ignoreStoreReadErrorWithClusterBreakingPotential is enabled
    +func ValidateIgnoreStoreReadError(fldPath *field.Path, options *metav1.DeleteOptions) field.ErrorList {
    +	allErrs := field.ErrorList{}
    +	if enabled := ptr.Deref[bool](options.IgnoreStoreReadErrorWithClusterBreakingPotential, false); !enabled {
    +		return allErrs
    +	}
    +
    +	if len(options.DryRun) > 0 {
    +		allErrs = append(allErrs, field.Invalid(fldPath, true, "cannot be set together with .dryRun"))
    +	}
    +	if options.PropagationPolicy != nil {
    +		allErrs = append(allErrs, field.Invalid(fldPath, true, "cannot be set together with .propagationPolicy"))
    +	}
    +	//nolint:staticcheck // Keep validation for deprecated OrphanDependents option until it's being removed
    +	if options.OrphanDependents != nil {
    +		allErrs = append(allErrs, field.Invalid(fldPath, true, "cannot be set together with .orphanDependents"))
    +	}
    +	if options.GracePeriodSeconds != nil {
    +		allErrs = append(allErrs, field.Invalid(fldPath, true, "cannot be set together with .gracePeriodSeconds"))
    +	}
    +	if options.Preconditions != nil {
    +		allErrs = append(allErrs, field.Invalid(fldPath, true, "cannot be set together with .preconditions"))
    +	}
    +
    +	return allErrs
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.conversion.go
    index afe01ed5a44a..82e2722404c5 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.conversion.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.conversion.go
    @@ -339,6 +339,13 @@ func autoConvert_url_Values_To_v1_DeleteOptions(in *url.Values, out *DeleteOptio
     	} else {
     		out.DryRun = nil
     	}
    +	if values, ok := map[string][]string(*in)["ignoreStoreReadErrorWithClusterBreakingPotential"]; ok && len(values) > 0 {
    +		if err := runtime.Convert_Slice_string_To_Pointer_bool(&values, &out.IgnoreStoreReadErrorWithClusterBreakingPotential, s); err != nil {
    +			return err
    +		}
    +	} else {
    +		out.IgnoreStoreReadErrorWithClusterBreakingPotential = nil
    +	}
     	return nil
     }
     
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go
    index 7d29c504ab95..6b0d0dfee960 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go
    @@ -290,6 +290,11 @@ func (in *DeleteOptions) DeepCopyInto(out *DeleteOptions) {
     		*out = make([]string, len(*in))
     		copy(*out, *in)
     	}
    +	if in.IgnoreStoreReadErrorWithClusterBreakingPotential != nil {
    +		in, out := &in.IgnoreStoreReadErrorWithClusterBreakingPotential, &out.IgnoreStoreReadErrorWithClusterBreakingPotential
    +		*out = new(bool)
    +		**out = **in
    +	}
     	return
     }
     
    @@ -327,6 +332,27 @@ func (in *Duration) DeepCopy() *Duration {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *FieldSelectorRequirement) DeepCopyInto(out *FieldSelectorRequirement) {
    +	*out = *in
    +	if in.Values != nil {
    +		in, out := &in.Values, &out.Values
    +		*out = make([]string, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FieldSelectorRequirement.
    +func (in *FieldSelectorRequirement) DeepCopy() *FieldSelectorRequirement {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(FieldSelectorRequirement)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *FieldsV1) DeepCopyInto(out *FieldsV1) {
     	*out = *in
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go
    index a2abc67c151b..819d936fe5bc 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto
    +// source: k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto
     
     package v1beta1
     
    @@ -47,7 +47,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *PartialObjectMetadataList) Reset()      { *m = PartialObjectMetadataList{} }
     func (*PartialObjectMetadataList) ProtoMessage() {}
     func (*PartialObjectMetadataList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_90ec10f86b91f9a8, []int{0}
    +	return fileDescriptor_39237a8d8061b52f, []int{0}
     }
     func (m *PartialObjectMetadataList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -77,31 +77,30 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto", fileDescriptor_90ec10f86b91f9a8)
    +	proto.RegisterFile("k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto", fileDescriptor_39237a8d8061b52f)
     }
     
    -var fileDescriptor_90ec10f86b91f9a8 = []byte{
    -	// 317 bytes of a gzipped FileDescriptorProto
    +var fileDescriptor_39237a8d8061b52f = []byte{
    +	// 303 bytes of a gzipped FileDescriptorProto
     	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x4b, 0xf3, 0x30,
     	0x1c, 0xc6, 0x9b, 0xf7, 0x65, 0x30, 0x3a, 0x04, 0xd9, 0x69, 0xee, 0x90, 0x0d, 0x4f, 0xdb, 0xc1,
    -	0x84, 0x0d, 0x11, 0xc1, 0xdb, 0x6e, 0x82, 0x32, 0xd9, 0x51, 0x3c, 0x98, 0x76, 0x7f, 0xbb, 0x58,
    -	0xd3, 0x94, 0xe4, 0xdf, 0x81, 0x37, 0x3f, 0x82, 0x1f, 0x6b, 0xc7, 0x1d, 0x07, 0xc2, 0x70, 0xf5,
    -	0x8b, 0x48, 0xda, 0x2a, 0x32, 0x14, 0x7a, 0xeb, 0xf3, 0x94, 0xdf, 0x2f, 0x4f, 0x20, 0xfe, 0x2c,
    -	0x3e, 0xb7, 0x4c, 0x6a, 0x1e, 0x67, 0x01, 0x98, 0x04, 0x10, 0x2c, 0x5f, 0x42, 0x32, 0xd7, 0x86,
    -	0x57, 0x3f, 0x44, 0x2a, 0x95, 0x08, 0x17, 0x32, 0x01, 0xf3, 0xcc, 0xd3, 0x38, 0x72, 0x85, 0xe5,
    -	0x0a, 0x50, 0xf0, 0xe5, 0x28, 0x00, 0x14, 0x23, 0x1e, 0x41, 0x02, 0x46, 0x20, 0xcc, 0x59, 0x6a,
    -	0x34, 0xea, 0xf6, 0xb0, 0x44, 0xd9, 0x4f, 0x94, 0xa5, 0x71, 0xe4, 0x0a, 0xcb, 0x1c, 0xca, 0x2a,
    -	0xb4, 0x7b, 0x12, 0x49, 0x5c, 0x64, 0x01, 0x0b, 0xb5, 0xe2, 0x91, 0x8e, 0x34, 0x2f, 0x0c, 0x41,
    -	0xf6, 0x50, 0xa4, 0x22, 0x14, 0x5f, 0xa5, 0xb9, 0x7b, 0x5a, 0x67, 0xd4, 0xfe, 0x9e, 0xee, 0xd9,
    -	0x5f, 0x94, 0xc9, 0x12, 0x94, 0x0a, 0xb8, 0x0d, 0x17, 0xa0, 0xc4, 0x3e, 0x77, 0xfc, 0x46, 0xfc,
    -	0xa3, 0x1b, 0x61, 0x50, 0x8a, 0xa7, 0x69, 0xf0, 0x08, 0x21, 0x5e, 0x03, 0x8a, 0xb9, 0x40, 0x71,
    -	0x25, 0x2d, 0xb6, 0xef, 0xfc, 0xa6, 0xaa, 0x72, 0xe7, 0x5f, 0x9f, 0x0c, 0x5a, 0x63, 0xc6, 0xea,
    -	0x5c, 0x9c, 0x39, 0xda, 0x99, 0x26, 0x87, 0xab, 0x6d, 0xcf, 0xcb, 0xb7, 0xbd, 0xe6, 0x57, 0x33,
    -	0xfb, 0x36, 0xb6, 0xef, 0xfd, 0x86, 0x44, 0x50, 0xb6, 0x43, 0xfa, 0xff, 0x07, 0xad, 0xf1, 0x45,
    -	0x3d, 0xf5, 0xaf, 0x6b, 0x27, 0x07, 0xd5, 0x39, 0x8d, 0x4b, 0x67, 0x9c, 0x95, 0xe2, 0xc9, 0x74,
    -	0xb5, 0xa3, 0xde, 0x7a, 0x47, 0xbd, 0xcd, 0x8e, 0x7a, 0x2f, 0x39, 0x25, 0xab, 0x9c, 0x92, 0x75,
    -	0x4e, 0xc9, 0x26, 0xa7, 0xe4, 0x3d, 0xa7, 0xe4, 0xf5, 0x83, 0x7a, 0xb7, 0xc3, 0xda, 0xcf, 0xe0,
    -	0x33, 0x00, 0x00, 0xff, 0xff, 0x30, 0x97, 0x8b, 0x11, 0x4b, 0x02, 0x00, 0x00,
    +	0x84, 0x0d, 0x11, 0xc5, 0xdb, 0x6e, 0x82, 0x32, 0xd9, 0x51, 0x3c, 0x98, 0x76, 0x31, 0x8b, 0x35,
    +	0x4d, 0x69, 0xfe, 0x15, 0xbc, 0xf9, 0x11, 0xfc, 0x58, 0x3d, 0xee, 0x38, 0x10, 0x86, 0x8d, 0x5f,
    +	0x44, 0xd2, 0x56, 0x91, 0xa1, 0xd0, 0x5b, 0x9e, 0x07, 0x7e, 0xbf, 0x3c, 0x81, 0xf8, 0x67, 0xd1,
    +	0xa9, 0x21, 0x52, 0x53, 0x96, 0x48, 0xc5, 0xc2, 0x95, 0x8c, 0x79, 0xfa, 0x4c, 0x93, 0x48, 0xb8,
    +	0xc2, 0x50, 0xc5, 0x81, 0xd1, 0xa7, 0x49, 0xc0, 0x81, 0x4d, 0xa8, 0xe0, 0x31, 0x4f, 0x19, 0xf0,
    +	0x25, 0x49, 0x52, 0x0d, 0xba, 0x3b, 0xae, 0x50, 0xf2, 0x13, 0x25, 0x49, 0x24, 0x5c, 0x61, 0x88,
    +	0x43, 0x49, 0x8d, 0xf6, 0x8f, 0x84, 0x84, 0x55, 0x16, 0x90, 0x50, 0x2b, 0x2a, 0xb4, 0xd0, 0xb4,
    +	0x34, 0x04, 0xd9, 0x7d, 0x99, 0xca, 0x50, 0x9e, 0x2a, 0x73, 0xff, 0xb8, 0xc9, 0xa8, 0xdd, 0x3d,
    +	0xfd, 0x93, 0xbf, 0xa8, 0x34, 0x8b, 0x41, 0x2a, 0x4e, 0x4d, 0xb8, 0xe2, 0x8a, 0xed, 0x72, 0x87,
    +	0x6f, 0xc8, 0x3f, 0xb8, 0x66, 0x29, 0x48, 0xf6, 0x38, 0x0f, 0x1e, 0x78, 0x08, 0x57, 0x1c, 0xd8,
    +	0x92, 0x01, 0xbb, 0x94, 0x06, 0xba, 0xb7, 0x7e, 0x5b, 0xd5, 0xb9, 0xf7, 0x6f, 0x88, 0x46, 0x9d,
    +	0x29, 0x21, 0x4d, 0x1e, 0x4e, 0x1c, 0xed, 0x4c, 0xb3, 0xfd, 0x7c, 0x3b, 0xf0, 0xec, 0x76, 0xd0,
    +	0xfe, 0x6a, 0x16, 0xdf, 0xc6, 0xee, 0x9d, 0xdf, 0x92, 0xc0, 0x95, 0xe9, 0xa1, 0xe1, 0xff, 0x51,
    +	0x67, 0x7a, 0xde, 0x4c, 0xfd, 0xeb, 0xda, 0xd9, 0x5e, 0x7d, 0x4f, 0xeb, 0xc2, 0x19, 0x17, 0x95,
    +	0x78, 0x36, 0xcf, 0x0b, 0xec, 0xad, 0x0b, 0xec, 0x6d, 0x0a, 0xec, 0xbd, 0x58, 0x8c, 0x72, 0x8b,
    +	0xd1, 0xda, 0x62, 0xb4, 0xb1, 0x18, 0xbd, 0x5b, 0x8c, 0x5e, 0x3f, 0xb0, 0x77, 0x33, 0x6e, 0xfc,
    +	0x0d, 0x3e, 0x03, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x0f, 0xd7, 0x36, 0x32, 0x02, 0x00, 0x00,
     }
     
     func (m *PartialObjectMetadataList) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto
    index d14d42591bba..fcec55354258 100644
    --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto
    +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto
    @@ -33,9 +33,9 @@ message PartialObjectMetadataList {
       // Standard list metadata.
       // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       // +optional
    -  optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 2;
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 2;
     
       // items contains each of the included items.
    -  repeated k8s.io.apimachinery.pkg.apis.meta.v1.PartialObjectMetadata items = 1;
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.PartialObjectMetadata items = 1;
     }
     
    diff --git a/vendor/k8s.io/apimachinery/pkg/labels/selector.go b/vendor/k8s.io/apimachinery/pkg/labels/selector.go
    index 5e601424051e..fafa81a3d2bb 100644
    --- a/vendor/k8s.io/apimachinery/pkg/labels/selector.go
    +++ b/vendor/k8s.io/apimachinery/pkg/labels/selector.go
    @@ -18,6 +18,7 @@ package labels
     
     import (
     	"fmt"
    +	"slices"
     	"sort"
     	"strconv"
     	"strings"
    @@ -27,7 +28,6 @@ import (
     	"k8s.io/apimachinery/pkg/util/validation"
     	"k8s.io/apimachinery/pkg/util/validation/field"
     	"k8s.io/klog/v2"
    -	stringslices "k8s.io/utils/strings/slices"
     )
     
     var (
    @@ -45,6 +45,19 @@ var (
     // Requirements is AND of all requirements.
     type Requirements []Requirement
     
    +func (r Requirements) String() string {
    +	var sb strings.Builder
    +
    +	for i, requirement := range r {
    +		if i > 0 {
    +			sb.WriteString(", ")
    +		}
    +		sb.WriteString(requirement.String())
    +	}
    +
    +	return sb.String()
    +}
    +
     // Selector represents a label selector.
     type Selector interface {
     	// Matches returns true if this selector matches the given set of labels.
    @@ -285,6 +298,13 @@ func (r *Requirement) Values() sets.String {
     	return ret
     }
     
    +// ValuesUnsorted returns a copy of requirement values as passed to NewRequirement without sorting.
    +func (r *Requirement) ValuesUnsorted() []string {
    +	ret := make([]string, 0, len(r.strValues))
    +	ret = append(ret, r.strValues...)
    +	return ret
    +}
    +
     // Equal checks the equality of requirement.
     func (r Requirement) Equal(x Requirement) bool {
     	if r.key != x.key {
    @@ -293,7 +313,7 @@ func (r Requirement) Equal(x Requirement) bool {
     	if r.operator != x.operator {
     		return false
     	}
    -	return stringslices.Equal(r.strValues, x.strValues)
    +	return slices.Equal(r.strValues, x.strValues)
     }
     
     // Empty returns true if the internalSelector doesn't restrict selection space
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/extension.go b/vendor/k8s.io/apimachinery/pkg/runtime/extension.go
    index 9056397fa517..60c000bcb713 100644
    --- a/vendor/k8s.io/apimachinery/pkg/runtime/extension.go
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/extension.go
    @@ -18,16 +18,77 @@ package runtime
     
     import (
     	"bytes"
    -	"encoding/json"
     	"errors"
    +	"fmt"
    +
    +	cbor "k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct"
    +	"k8s.io/apimachinery/pkg/util/json"
     )
     
    +// RawExtension intentionally avoids implementing value.UnstructuredConverter for now because the
    +// signature of ToUnstructured does not allow returning an error value in cases where the conversion
    +// is not possible (content type is unrecognized or bytes don't match content type).
    +func rawToUnstructured(raw []byte, contentType string) (interface{}, error) {
    +	switch contentType {
    +	case ContentTypeJSON:
    +		var u interface{}
    +		if err := json.Unmarshal(raw, &u); err != nil {
    +			return nil, fmt.Errorf("failed to parse RawExtension bytes as JSON: %w", err)
    +		}
    +		return u, nil
    +	case ContentTypeCBOR:
    +		var u interface{}
    +		if err := cbor.Unmarshal(raw, &u); err != nil {
    +			return nil, fmt.Errorf("failed to parse RawExtension bytes as CBOR: %w", err)
    +		}
    +		return u, nil
    +	default:
    +		return nil, fmt.Errorf("cannot convert RawExtension with unrecognized content type to unstructured")
    +	}
    +}
    +
    +func (re RawExtension) guessContentType() string {
    +	switch {
    +	case bytes.HasPrefix(re.Raw, cborSelfDescribed):
    +		return ContentTypeCBOR
    +	case len(re.Raw) > 0:
    +		switch re.Raw[0] {
    +		case '\t', '\r', '\n', ' ', '{', '[', 'n', 't', 'f', '"', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
    +			// Prefixes for the four whitespace characters, objects, arrays, strings, numbers, true, false, and null.
    +			return ContentTypeJSON
    +		}
    +	}
    +	return ""
    +}
    +
     func (re *RawExtension) UnmarshalJSON(in []byte) error {
     	if re == nil {
     		return errors.New("runtime.RawExtension: UnmarshalJSON on nil pointer")
     	}
    -	if !bytes.Equal(in, []byte("null")) {
    -		re.Raw = append(re.Raw[0:0], in...)
    +	if bytes.Equal(in, []byte("null")) {
    +		return nil
    +	}
    +	re.Raw = append(re.Raw[0:0], in...)
    +	return nil
    +}
    +
    +var (
    +	cborNull          = []byte{0xf6}
    +	cborSelfDescribed = []byte{0xd9, 0xd9, 0xf7}
    +)
    +
    +func (re *RawExtension) UnmarshalCBOR(in []byte) error {
    +	if re == nil {
    +		return errors.New("runtime.RawExtension: UnmarshalCBOR on nil pointer")
    +	}
    +	if !bytes.Equal(in, cborNull) {
    +		if !bytes.HasPrefix(in, cborSelfDescribed) {
    +			// The self-described CBOR tag doesn't change the interpretation of the data
    +			// item it encloses, but it is useful as a magic number. Its encoding is
    +			// also what is used to implement the CBOR RecognizingDecoder.
    +			re.Raw = append(re.Raw[:0], cborSelfDescribed...)
    +		}
    +		re.Raw = append(re.Raw, in...)
     	}
     	return nil
     }
    @@ -46,6 +107,35 @@ func (re RawExtension) MarshalJSON() ([]byte, error) {
     		}
     		return []byte("null"), nil
     	}
    -	// TODO: Check whether ContentType is actually JSON before returning it.
    -	return re.Raw, nil
    +
    +	contentType := re.guessContentType()
    +	if contentType == ContentTypeJSON {
    +		return re.Raw, nil
    +	}
    +
    +	u, err := rawToUnstructured(re.Raw, contentType)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return json.Marshal(u)
    +}
    +
    +func (re RawExtension) MarshalCBOR() ([]byte, error) {
    +	if re.Raw == nil {
    +		if re.Object != nil {
    +			return cbor.Marshal(re.Object)
    +		}
    +		return cbor.Marshal(nil)
    +	}
    +
    +	contentType := re.guessContentType()
    +	if contentType == ContentTypeCBOR {
    +		return re.Raw, nil
    +	}
    +
    +	u, err := rawToUnstructured(re.Raw, contentType)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return cbor.Marshal(u)
     }
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go
    index ec677a7d9629..2e40e140aec4 100644
    --- a/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto
    +// source: k8s.io/apimachinery/pkg/runtime/generated.proto
     
     package runtime
     
    @@ -45,7 +45,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *RawExtension) Reset()      { *m = RawExtension{} }
     func (*RawExtension) ProtoMessage() {}
     func (*RawExtension) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_9d3c45d7f546725c, []int{0}
    +	return fileDescriptor_2e0e4b920403a48c, []int{0}
     }
     func (m *RawExtension) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -73,7 +73,7 @@ var xxx_messageInfo_RawExtension proto.InternalMessageInfo
     func (m *TypeMeta) Reset()      { *m = TypeMeta{} }
     func (*TypeMeta) ProtoMessage() {}
     func (*TypeMeta) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_9d3c45d7f546725c, []int{1}
    +	return fileDescriptor_2e0e4b920403a48c, []int{1}
     }
     func (m *TypeMeta) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -101,7 +101,7 @@ var xxx_messageInfo_TypeMeta proto.InternalMessageInfo
     func (m *Unknown) Reset()      { *m = Unknown{} }
     func (*Unknown) ProtoMessage() {}
     func (*Unknown) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_9d3c45d7f546725c, []int{2}
    +	return fileDescriptor_2e0e4b920403a48c, []int{2}
     }
     func (m *Unknown) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -133,35 +133,34 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto", fileDescriptor_9d3c45d7f546725c)
    -}
    -
    -var fileDescriptor_9d3c45d7f546725c = []byte{
    -	// 380 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xcf, 0xaa, 0x13, 0x31,
    -	0x14, 0xc6, 0x27, 0xb7, 0x85, 0x7b, 0x4d, 0x0b, 0x57, 0xe2, 0xc2, 0xd1, 0x45, 0xe6, 0xd2, 0x95,
    -	0x77, 0x61, 0x02, 0x17, 0x04, 0xb7, 0x9d, 0x52, 0x50, 0x44, 0x90, 0xe0, 0x1f, 0x70, 0x65, 0x3a,
    -	0x13, 0xa7, 0x61, 0xe8, 0xc9, 0x90, 0x66, 0x1c, 0xbb, 0xf3, 0x11, 0x7c, 0xac, 0x2e, 0xbb, 0xec,
    -	0xaa, 0xd8, 0xf1, 0x21, 0xdc, 0x4a, 0xd3, 0xb4, 0x56, 0x5d, 0x74, 0x97, 0x73, 0xbe, 0xef, 0xf7,
    -	0x9d, 0x73, 0x20, 0xf8, 0x45, 0xf9, 0x7c, 0xce, 0xb4, 0xe1, 0x65, 0x3d, 0x51, 0x16, 0x94, 0x53,
    -	0x73, 0xfe, 0x45, 0x41, 0x6e, 0x2c, 0x0f, 0x82, 0xac, 0xf4, 0x4c, 0x66, 0x53, 0x0d, 0xca, 0x2e,
    -	0x78, 0x55, 0x16, 0xdc, 0xd6, 0xe0, 0xf4, 0x4c, 0xf1, 0x42, 0x81, 0xb2, 0xd2, 0xa9, 0x9c, 0x55,
    -	0xd6, 0x38, 0x43, 0x92, 0x3d, 0xc0, 0x4e, 0x01, 0x56, 0x95, 0x05, 0x0b, 0xc0, 0xe3, 0xa7, 0x85,
    -	0x76, 0xd3, 0x7a, 0xc2, 0x32, 0x33, 0xe3, 0x85, 0x29, 0x0c, 0xf7, 0xdc, 0xa4, 0xfe, 0xec, 0x2b,
    -	0x5f, 0xf8, 0xd7, 0x3e, 0x6f, 0x70, 0x8b, 0xfb, 0x42, 0x36, 0xe3, 0xaf, 0x4e, 0xc1, 0x5c, 0x1b,
    -	0x20, 0x8f, 0x70, 0xc7, 0xca, 0x26, 0x46, 0x37, 0xe8, 0x49, 0x3f, 0xbd, 0x6c, 0x37, 0x49, 0x47,
    -	0xc8, 0x46, 0xec, 0x7a, 0x83, 0x4f, 0xf8, 0xea, 0xed, 0xa2, 0x52, 0xaf, 0x95, 0x93, 0xe4, 0x0e,
    -	0x63, 0x59, 0xe9, 0xf7, 0xca, 0xee, 0x20, 0xef, 0xbe, 0x97, 0x92, 0xe5, 0x26, 0x89, 0xda, 0x4d,
    -	0x82, 0x87, 0x6f, 0x5e, 0x06, 0x45, 0x9c, 0xb8, 0xc8, 0x0d, 0xee, 0x96, 0x1a, 0xf2, 0xf8, 0xc2,
    -	0xbb, 0xfb, 0xc1, 0xdd, 0x7d, 0xa5, 0x21, 0x17, 0x5e, 0x19, 0xfc, 0x42, 0xf8, 0xf2, 0x1d, 0x94,
    -	0x60, 0x1a, 0x20, 0x1f, 0xf0, 0x95, 0x0b, 0xd3, 0x7c, 0x7e, 0xef, 0xee, 0x96, 0x9d, 0xb9, 0x9d,
    -	0x1d, 0xd6, 0x4b, 0xef, 0x87, 0xf0, 0xe3, 0xc2, 0xe2, 0x18, 0x76, 0xb8, 0xf0, 0xe2, 0xff, 0x0b,
    -	0xc9, 0x10, 0x5f, 0x67, 0x06, 0x9c, 0x02, 0x37, 0x86, 0xcc, 0xe4, 0x1a, 0x8a, 0xb8, 0xe3, 0x97,
    -	0x7d, 0x18, 0xf2, 0xae, 0x47, 0x7f, 0xcb, 0xe2, 0x5f, 0x3f, 0x79, 0x86, 0x7b, 0xa1, 0xb5, 0x1b,
    -	0x1d, 0x77, 0x3d, 0xfe, 0x20, 0xe0, 0xbd, 0xd1, 0x1f, 0x49, 0x9c, 0xfa, 0xd2, 0xf1, 0x72, 0x4b,
    -	0xa3, 0xd5, 0x96, 0x46, 0xeb, 0x2d, 0x8d, 0xbe, 0xb5, 0x14, 0x2d, 0x5b, 0x8a, 0x56, 0x2d, 0x45,
    -	0xeb, 0x96, 0xa2, 0x1f, 0x2d, 0x45, 0xdf, 0x7f, 0xd2, 0xe8, 0x63, 0x72, 0xe6, 0xb7, 0xfc, 0x0e,
    -	0x00, 0x00, 0xff, 0xff, 0x1f, 0x32, 0xd5, 0x68, 0x68, 0x02, 0x00, 0x00,
    +	proto.RegisterFile("k8s.io/apimachinery/pkg/runtime/generated.proto", fileDescriptor_2e0e4b920403a48c)
    +}
    +
    +var fileDescriptor_2e0e4b920403a48c = []byte{
    +	// 365 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x4f, 0x6b, 0x22, 0x31,
    +	0x18, 0xc6, 0x27, 0x2a, 0xe8, 0x46, 0xc1, 0x25, 0x7b, 0xd8, 0xd9, 0x3d, 0x64, 0xc4, 0xd3, 0x7a,
    +	0xd8, 0x0c, 0x08, 0x85, 0x5e, 0x1d, 0xf1, 0x50, 0x4a, 0xa1, 0x84, 0xfe, 0x81, 0x9e, 0x1a, 0x67,
    +	0xd2, 0x31, 0x0c, 0x26, 0xc3, 0x18, 0x99, 0x7a, 0xeb, 0x47, 0xe8, 0xc7, 0xf2, 0xe8, 0xd1, 0x93,
    +	0xd4, 0xe9, 0x87, 0xe8, 0xb5, 0x18, 0xa3, 0xb5, 0xed, 0xc1, 0x5b, 0xde, 0xf7, 0x79, 0x7e, 0xcf,
    +	0xfb, 0xbe, 0x10, 0xe8, 0x27, 0xa7, 0x13, 0x22, 0x94, 0xcf, 0x52, 0x31, 0x66, 0xe1, 0x48, 0x48,
    +	0x9e, 0xcd, 0xfc, 0x34, 0x89, 0xfd, 0x6c, 0x2a, 0xb5, 0x18, 0x73, 0x3f, 0xe6, 0x92, 0x67, 0x4c,
    +	0xf3, 0x88, 0xa4, 0x99, 0xd2, 0x0a, 0x79, 0x5b, 0x80, 0x1c, 0x02, 0x24, 0x4d, 0x62, 0x62, 0x81,
    +	0xbf, 0xff, 0x63, 0xa1, 0x47, 0xd3, 0x21, 0x09, 0xd5, 0xd8, 0x8f, 0x55, 0xac, 0x7c, 0xc3, 0x0d,
    +	0xa7, 0x0f, 0xa6, 0x32, 0x85, 0x79, 0x6d, 0xf3, 0xda, 0x1d, 0xd8, 0xa0, 0x2c, 0x1f, 0x3c, 0x6a,
    +	0x2e, 0x27, 0x42, 0x49, 0xf4, 0x07, 0x96, 0x33, 0x96, 0xbb, 0xa0, 0x05, 0xfe, 0x35, 0x82, 0x6a,
    +	0xb1, 0xf2, 0xca, 0x94, 0xe5, 0x74, 0xd3, 0x6b, 0xdf, 0xc3, 0xda, 0xd5, 0x2c, 0xe5, 0x17, 0x5c,
    +	0x33, 0xd4, 0x85, 0x90, 0xa5, 0xe2, 0x86, 0x67, 0x1b, 0xc8, 0xb8, 0x7f, 0x04, 0x68, 0xbe, 0xf2,
    +	0x9c, 0x62, 0xe5, 0xc1, 0xde, 0xe5, 0x99, 0x55, 0xe8, 0x81, 0x0b, 0xb5, 0x60, 0x25, 0x11, 0x32,
    +	0x72, 0x4b, 0xc6, 0xdd, 0xb0, 0xee, 0xca, 0xb9, 0x90, 0x11, 0x35, 0x4a, 0xfb, 0x0d, 0xc0, 0xea,
    +	0xb5, 0x4c, 0xa4, 0xca, 0x25, 0xba, 0x85, 0x35, 0x6d, 0xa7, 0x99, 0xfc, 0x7a, 0xb7, 0x43, 0x8e,
    +	0xdc, 0x4e, 0x76, 0xeb, 0x05, 0x3f, 0x6d, 0xf8, 0x7e, 0x61, 0xba, 0x0f, 0xdb, 0x5d, 0x58, 0xfa,
    +	0x7e, 0x21, 0xea, 0xc1, 0x66, 0xa8, 0xa4, 0xe6, 0x52, 0x0f, 0x64, 0xa8, 0x22, 0x21, 0x63, 0xb7,
    +	0x6c, 0x96, 0xfd, 0x6d, 0xf3, 0x9a, 0xfd, 0xcf, 0x32, 0xfd, 0xea, 0x47, 0x27, 0xb0, 0x6e, 0x5b,
    +	0x9b, 0xd1, 0x6e, 0xc5, 0xe0, 0xbf, 0x2c, 0x5e, 0xef, 0x7f, 0x48, 0xf4, 0xd0, 0x17, 0x0c, 0xe6,
    +	0x6b, 0xec, 0x2c, 0xd6, 0xd8, 0x59, 0xae, 0xb1, 0xf3, 0x54, 0x60, 0x30, 0x2f, 0x30, 0x58, 0x14,
    +	0x18, 0x2c, 0x0b, 0x0c, 0x5e, 0x0a, 0x0c, 0x9e, 0x5f, 0xb1, 0x73, 0xe7, 0x1d, 0xf9, 0x2d, 0xef,
    +	0x01, 0x00, 0x00, 0xff, 0xff, 0x2a, 0x9b, 0x09, 0xb3, 0x4f, 0x02, 0x00, 0x00,
     }
     
     func (m *RawExtension) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/helper.go b/vendor/k8s.io/apimachinery/pkg/runtime/helper.go
    index f46a24cc6c35..395dfdbd02d5 100644
    --- a/vendor/k8s.io/apimachinery/pkg/runtime/helper.go
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/helper.go
    @@ -236,10 +236,14 @@ func (e WithVersionEncoder) Encode(obj Object, stream io.Writer) error {
     			gvk = preferredGVK
     		}
     	}
    -	kind.SetGroupVersionKind(gvk)
    -	err = e.Encoder.Encode(obj, stream)
    -	kind.SetGroupVersionKind(oldGVK)
    -	return err
    +
    +	// The gvk only needs to be set if not already as desired.
    +	if gvk != oldGVK {
    +		kind.SetGroupVersionKind(gvk)
    +		defer kind.SetGroupVersionKind(oldGVK)
    +	}
    +
    +	return e.Encoder.Encode(obj, stream)
     }
     
     // WithoutVersionDecoder clears the group version kind of a deserialized object.
    @@ -280,3 +284,21 @@ func (e *encoderWithAllocator) Encode(obj Object, w io.Writer) error {
     func (e *encoderWithAllocator) Identifier() Identifier {
     	return e.encoder.Identifier()
     }
    +
    +type nondeterministicEncoderToEncoderAdapter struct {
    +	NondeterministicEncoder
    +}
    +
    +func (e nondeterministicEncoderToEncoderAdapter) Encode(obj Object, w io.Writer) error {
    +	return e.EncodeNondeterministic(obj, w)
    +}
    +
    +// UseNondeterministicEncoding returns an Encoder that encodes objects using the provided Encoder's
    +// EncodeNondeterministic method if it implements NondeterministicEncoder, otherwise it returns the
    +// provided Encoder as-is.
    +func UseNondeterministicEncoding(encoder Encoder) Encoder {
    +	if nondeterministic, ok := encoder.(NondeterministicEncoder); ok {
    +		return nondeterministicEncoderToEncoderAdapter{nondeterministic}
    +	}
    +	return encoder
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go b/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go
    index e89ea8939178..2703300cd5a8 100644
    --- a/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go
    @@ -69,6 +69,19 @@ type Encoder interface {
     	Identifier() Identifier
     }
     
    +// NondeterministicEncoder is implemented by Encoders that can serialize objects more efficiently in
    +// cases where the output does not need to be deterministic.
    +type NondeterministicEncoder interface {
    +	Encoder
    +
    +	// EncodeNondeterministic writes an object to the stream. Unlike the Encode method of
    +	// Encoder, EncodeNondeterministic does not guarantee that any two invocations will write
    +	// the same sequence of bytes to the io.Writer. Any differences will not be significant to a
    +	// generic decoder. For example, map entries and struct fields might be encoded in any
    +	// order.
    +	EncodeNondeterministic(Object, io.Writer) error
    +}
    +
     // MemoryAllocator is responsible for allocating memory.
     // By encapsulating memory allocation into its own interface, we can reuse the memory
     // across many operations in places we know it can significantly improve the performance.
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go
    index 46b1e787bdea..7a26d2798ed7 100644
    --- a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto
    +// source: k8s.io/apimachinery/pkg/runtime/schema/generated.proto
     
     package schema
     
    @@ -39,21 +39,20 @@ var _ = math.Inf
     const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto", fileDescriptor_0462724132518e0d)
    +	proto.RegisterFile("k8s.io/apimachinery/pkg/runtime/schema/generated.proto", fileDescriptor_25f8f0eed21c6089)
     }
     
    -var fileDescriptor_0462724132518e0d = []byte{
    -	// 186 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0xce, 0xad, 0x8e, 0xc3, 0x30,
    -	0x0c, 0xc0, 0xf1, 0x84, 0x1e, 0x3c, 0x78, 0xc0, 0xb0, 0xec, 0x62, 0x7a, 0xf8, 0xf0, 0xa4, 0xf1,
    -	0xb1, 0xb4, 0xf5, 0xd2, 0x28, 0xca, 0x87, 0xd2, 0x64, 0xd2, 0xd8, 0x1e, 0x61, 0x8f, 0x55, 0x58,
    -	0x58, 0xb8, 0x66, 0x2f, 0x32, 0x29, 0x2d, 0x18, 0x1c, 0xf3, 0x5f, 0xd6, 0xcf, 0xf2, 0xd7, 0xd1,
    -	0xfc, 0x8d, 0x42, 0x7b, 0x34, 0xb9, 0xa5, 0xe8, 0x28, 0xd1, 0x88, 0x17, 0x72, 0xbd, 0x8f, 0xb8,
    -	0x2f, 0x64, 0xd0, 0x56, 0x76, 0x83, 0x76, 0x14, 0xaf, 0x18, 0x8c, 0xc2, 0x98, 0x5d, 0xd2, 0x96,
    -	0x70, 0xec, 0x06, 0xb2, 0x12, 0x15, 0x39, 0x8a, 0x32, 0x51, 0x2f, 0x42, 0xf4, 0xc9, 0x7f, 0x37,
    -	0x9b, 0x13, 0xef, 0x4e, 0x04, 0xa3, 0xc4, 0xee, 0xc4, 0xe6, 0x7e, 0x7e, 0x95, 0x4e, 0x43, 0x6e,
    -	0x45, 0xe7, 0x2d, 0x2a, 0xaf, 0x3c, 0x56, 0xde, 0xe6, 0x73, 0xad, 0x1a, 0x75, 0xda, 0xce, 0xfe,
    -	0x1f, 0xa6, 0x15, 0xd8, 0xbc, 0x02, 0x5b, 0x56, 0x60, 0xb7, 0x02, 0x7c, 0x2a, 0xc0, 0xe7, 0x02,
    -	0x7c, 0x29, 0xc0, 0x1f, 0x05, 0xf8, 0xfd, 0x09, 0xec, 0xd4, 0x7c, 0xf6, 0xf4, 0x2b, 0x00, 0x00,
    -	0xff, 0xff, 0x12, 0xb4, 0xae, 0x48, 0xf6, 0x00, 0x00, 0x00,
    +var fileDescriptor_25f8f0eed21c6089 = []byte{
    +	// 170 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0xce, 0xa1, 0x0e, 0xc2, 0x30,
    +	0x10, 0xc6, 0xf1, 0xd6, 0x22, 0x91, 0x88, 0x93, 0x73, 0xdc, 0x39, 0x82, 0x46, 0xf3, 0x04, 0xb8,
    +	0x6e, 0x94, 0xae, 0x59, 0xba, 0x6b, 0xba, 0x4e, 0xe0, 0x78, 0x04, 0x1e, 0x6b, 0x72, 0x72, 0x92,
    +	0x95, 0x17, 0x21, 0x69, 0x11, 0x48, 0xdc, 0xfd, 0xc5, 0xef, 0xf2, 0x6d, 0x0e, 0xdd, 0x71, 0x40,
    +	0xcb, 0xa4, 0xbc, 0x75, 0xaa, 0x69, 0x6d, 0xaf, 0xc3, 0x9d, 0x7c, 0x67, 0x28, 0x8c, 0x7d, 0xb4,
    +	0x4e, 0xd3, 0xd0, 0xb4, 0xda, 0x29, 0x32, 0xba, 0xd7, 0x41, 0x45, 0x7d, 0x45, 0x1f, 0x38, 0xf2,
    +	0xb6, 0x2a, 0x0e, 0x7f, 0x1d, 0xfa, 0xce, 0xe0, 0xd7, 0x61, 0x71, 0xbb, 0xbd, 0xb1, 0xb1, 0x1d,
    +	0x6b, 0x6c, 0xd8, 0x91, 0x61, 0xc3, 0x94, 0x79, 0x3d, 0xde, 0x72, 0xe5, 0xc8, 0x57, 0x79, 0x7b,
    +	0x3a, 0x4f, 0x2b, 0x88, 0x79, 0x05, 0xb1, 0xac, 0x20, 0x1e, 0x09, 0xe4, 0x94, 0x40, 0xce, 0x09,
    +	0xe4, 0x92, 0x40, 0xbe, 0x12, 0xc8, 0xe7, 0x1b, 0xc4, 0xa5, 0xfa, 0x6f, 0xf4, 0x27, 0x00, 0x00,
    +	0xff, 0xff, 0x97, 0xb8, 0x4d, 0x1f, 0xdd, 0x00, 0x00, 0x00,
     }
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/cbor.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/cbor.go
    new file mode 100644
    index 000000000000..4d069a903ae0
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/cbor.go
    @@ -0,0 +1,389 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package cbor
    +
    +import (
    +	"bytes"
    +	"encoding/hex"
    +	"errors"
    +	"fmt"
    +	"io"
    +	"strings"
    +
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/runtime/schema"
    +	"k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes"
    +	"k8s.io/apimachinery/pkg/runtime/serializer/recognizer"
    +	util "k8s.io/apimachinery/pkg/util/runtime"
    +
    +	"github.com/fxamacker/cbor/v2"
    +)
    +
    +type metaFactory interface {
    +	// Interpret should return the version and kind of the wire-format of the object.
    +	Interpret(data []byte) (*schema.GroupVersionKind, error)
    +}
    +
    +type defaultMetaFactory struct{}
    +
    +func (mf *defaultMetaFactory) Interpret(data []byte) (*schema.GroupVersionKind, error) {
    +	var tm metav1.TypeMeta
    +	// The input is expected to include additional map keys besides apiVersion and kind, so use
    +	// lax mode for decoding into TypeMeta.
    +	if err := modes.DecodeLax.Unmarshal(data, &tm); err != nil {
    +		return nil, fmt.Errorf("unable to determine group/version/kind: %w", err)
    +	}
    +	actual := tm.GetObjectKind().GroupVersionKind()
    +	return &actual, nil
    +}
    +
    +type Serializer interface {
    +	runtime.Serializer
    +	runtime.NondeterministicEncoder
    +	recognizer.RecognizingDecoder
    +
    +	// NewSerializer returns a value of this interface type rather than exporting the serializer
    +	// type and returning one of those because the zero value of serializer isn't ready to
    +	// use. Users aren't intended to implement cbor.Serializer themselves, and this unexported
    +	// interface method is here to prevent that (https://go.dev/blog/module-compatibility).
    +	private()
    +}
    +
    +var _ Serializer = &serializer{}
    +
    +type options struct {
    +	strict    bool
    +	transcode bool
    +}
    +
    +type Option func(*options)
    +
    +// Strict configures a serializer to return a strict decoding error when it encounters map keys that
    +// do not correspond to a field in the target object of a decode operation. This option is disabled
    +// by default.
    +func Strict(s bool) Option {
    +	return func(opts *options) {
    +		opts.strict = s
    +	}
    +}
    +
    +// Transcode configures a serializer to transcode the "raw" bytes of a decoded runtime.RawExtension
    +// or metav1.FieldsV1 object to JSON. This is enabled by default to support existing programs that
    +// depend on the assumption that objects of either type contain valid JSON.
    +func Transcode(s bool) Option {
    +	return func(opts *options) {
    +		opts.transcode = s
    +	}
    +}
    +
    +type serializer struct {
    +	metaFactory metaFactory
    +	creater     runtime.ObjectCreater
    +	typer       runtime.ObjectTyper
    +	options     options
    +}
    +
    +func (serializer) private() {}
    +
    +// NewSerializer creates and returns a serializer configured with the provided options. The default
    +// options are equivalent to explicitly passing Strict(false) and Transcode(true).
    +func NewSerializer(creater runtime.ObjectCreater, typer runtime.ObjectTyper, options ...Option) Serializer {
    +	return newSerializer(&defaultMetaFactory{}, creater, typer, options...)
    +}
    +
    +func newSerializer(metaFactory metaFactory, creater runtime.ObjectCreater, typer runtime.ObjectTyper, options ...Option) *serializer {
    +	s := &serializer{
    +		metaFactory: metaFactory,
    +		creater:     creater,
    +		typer:       typer,
    +	}
    +	s.options.transcode = true
    +	for _, o := range options {
    +		o(&s.options)
    +	}
    +	return s
    +}
    +
    +func (s *serializer) Identifier() runtime.Identifier {
    +	return "cbor"
    +}
    +
    +// Encode writes a CBOR representation of the given object.
    +//
    +// Because the CBOR data item written by a call to Encode is always enclosed in the "self-described
    +// CBOR" tag, its encoded form always has the prefix 0xd9d9f7. This prefix is suitable for use as a
    +// "magic number" for distinguishing encoded CBOR from other protocols.
    +//
    +// The default serialization behavior for any given object replicates the behavior of the JSON
    +// serializer as far as it is necessary to allow the CBOR serializer to be used as a drop-in
    +// replacement for the JSON serializer, with limited exceptions. For example, the distinction
    +// between integers and floating-point numbers is preserved in CBOR due to its distinct
    +// representations for each type.
    +//
    +// Objects implementing runtime.Unstructured will have their unstructured content encoded rather
    +// than following the default behavior for their dynamic type.
    +func (s *serializer) Encode(obj runtime.Object, w io.Writer) error {
    +	return s.encode(modes.Encode, obj, w)
    +}
    +
    +func (s *serializer) EncodeNondeterministic(obj runtime.Object, w io.Writer) error {
    +	return s.encode(modes.EncodeNondeterministic, obj, w)
    +}
    +
    +func (s *serializer) encode(mode modes.EncMode, obj runtime.Object, w io.Writer) error {
    +	var v interface{} = obj
    +	if u, ok := obj.(runtime.Unstructured); ok {
    +		v = u.UnstructuredContent()
    +	}
    +
    +	if err := modes.RejectCustomMarshalers(v); err != nil {
    +		return err
    +	}
    +
    +	if _, err := w.Write(selfDescribedCBOR); err != nil {
    +		return err
    +	}
    +
    +	return mode.MarshalTo(v, w)
    +}
    +
    +// gvkWithDefaults returns group kind and version defaulting from provided default
    +func gvkWithDefaults(actual, defaultGVK schema.GroupVersionKind) schema.GroupVersionKind {
    +	if len(actual.Kind) == 0 {
    +		actual.Kind = defaultGVK.Kind
    +	}
    +	if len(actual.Version) == 0 && len(actual.Group) == 0 {
    +		actual.Group = defaultGVK.Group
    +		actual.Version = defaultGVK.Version
    +	}
    +	if len(actual.Version) == 0 && actual.Group == defaultGVK.Group {
    +		actual.Version = defaultGVK.Version
    +	}
    +	return actual
    +}
    +
    +// diagnose returns the diagnostic encoding of a well-formed CBOR data item.
    +func diagnose(data []byte) string {
    +	diag, err := modes.Diagnostic.Diagnose(data)
    +	if err != nil {
    +		// Since the input must already be well-formed CBOR, converting it to diagnostic
    +		// notation should not fail.
    +		util.HandleError(err)
    +
    +		return hex.EncodeToString(data)
    +	}
    +	return diag
    +}
    +
    +// unmarshal unmarshals CBOR data from the provided byte slice into a Go object. If the decoder is
    +// configured to report strict errors, the first error return value may be a non-nil strict decoding
    +// error. If the last error return value is non-nil, then the unmarshal failed entirely and the
    +// state of the destination object should not be relied on.
    +func (s *serializer) unmarshal(data []byte, into interface{}) (strict, lax error) {
    +	if u, ok := into.(runtime.Unstructured); ok {
    +		var content map[string]interface{}
    +		defer func() {
    +			switch u := u.(type) {
    +			case *unstructured.UnstructuredList:
    +				// UnstructuredList's implementation of SetUnstructuredContent
    +				// produces different objects than those produced by a decode using
    +				// UnstructuredJSONScheme:
    +				//
    +				//   1. SetUnstructuredContent retains the "items" key in the list's
    +				//      Object field. It is omitted from Object when decoding with
    +				//      UnstructuredJSONScheme.
    +				//   2. SetUnstructuredContent does not populate "apiVersion" and
    +				//      "kind" on each entry of its Items
    +				//      field. UnstructuredJSONScheme does, inferring the singular
    +				//      Kind from the list Kind.
    +				//   3. SetUnstructuredContent ignores entries of "items" that are
    +				//      not JSON objects or are objects without
    +				//      "kind". UnstructuredJSONScheme returns an error in either
    +				//      case.
    +				//
    +				// UnstructuredJSONScheme's behavior is replicated here.
    +				var items []interface{}
    +				if uncast, present := content["items"]; present {
    +					var cast bool
    +					items, cast = uncast.([]interface{})
    +					if !cast {
    +						strict, lax = nil, fmt.Errorf("items field of UnstructuredList must be encoded as an array or null if present")
    +						return
    +					}
    +				}
    +				apiVersion, _ := content["apiVersion"].(string)
    +				kind, _ := content["kind"].(string)
    +				kind = strings.TrimSuffix(kind, "List")
    +				var unstructureds []unstructured.Unstructured
    +				if len(items) > 0 {
    +					unstructureds = make([]unstructured.Unstructured, len(items))
    +				}
    +				for i := range items {
    +					object, cast := items[i].(map[string]interface{})
    +					if !cast {
    +						strict, lax = nil, fmt.Errorf("elements of the items field of UnstructuredList must be encoded as a map")
    +						return
    +					}
    +
    +					// As in UnstructuredJSONScheme, only set the heuristic
    +					// singular GVK when both "apiVersion" and "kind" are either
    +					// missing, non-string, or empty.
    +					object["apiVersion"], _ = object["apiVersion"].(string)
    +					object["kind"], _ = object["kind"].(string)
    +					if object["apiVersion"] == "" && object["kind"] == "" {
    +						object["apiVersion"] = apiVersion
    +						object["kind"] = kind
    +					}
    +
    +					if object["kind"] == "" {
    +						strict, lax = nil, runtime.NewMissingKindErr(diagnose(data))
    +						return
    +					}
    +					if object["apiVersion"] == "" {
    +						strict, lax = nil, runtime.NewMissingVersionErr(diagnose(data))
    +						return
    +					}
    +
    +					unstructureds[i].Object = object
    +				}
    +				delete(content, "items")
    +				u.Object = content
    +				u.Items = unstructureds
    +			default:
    +				u.SetUnstructuredContent(content)
    +			}
    +		}()
    +		into = &content
    +	} else if err := modes.RejectCustomMarshalers(into); err != nil {
    +		return nil, err
    +	}
    +
    +	if !s.options.strict {
    +		return nil, modes.DecodeLax.Unmarshal(data, into)
    +	}
    +
    +	err := modes.Decode.Unmarshal(data, into)
    +	// TODO: UnknownFieldError is ambiguous. It only provides the index of the first problematic
    +	// map entry encountered and does not indicate which map the index refers to.
    +	var unknownField *cbor.UnknownFieldError
    +	if errors.As(err, &unknownField) {
    +		// Unlike JSON, there are no strict errors in CBOR for duplicate map keys. CBOR maps
    +		// with duplicate keys are considered invalid according to the spec and are rejected
    +		// entirely.
    +		return runtime.NewStrictDecodingError([]error{unknownField}), modes.DecodeLax.Unmarshal(data, into)
    +	}
    +	return nil, err
    +}
    +
    +func (s *serializer) Decode(data []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) {
    +	// A preliminary pass over the input to obtain the actual GVK is redundant on a successful
    +	// decode into Unstructured.
    +	if _, ok := into.(runtime.Unstructured); ok {
    +		if _, unmarshalErr := s.unmarshal(data, into); unmarshalErr != nil {
    +			actual, interpretErr := s.metaFactory.Interpret(data)
    +			if interpretErr != nil {
    +				return nil, nil, interpretErr
    +			}
    +
    +			if gvk != nil {
    +				*actual = gvkWithDefaults(*actual, *gvk)
    +			}
    +
    +			return nil, actual, unmarshalErr
    +		}
    +
    +		actual := into.GetObjectKind().GroupVersionKind()
    +		if len(actual.Kind) == 0 {
    +			return nil, &actual, runtime.NewMissingKindErr(diagnose(data))
    +		}
    +		if len(actual.Version) == 0 {
    +			return nil, &actual, runtime.NewMissingVersionErr(diagnose(data))
    +		}
    +
    +		return into, &actual, nil
    +	}
    +
    +	actual, err := s.metaFactory.Interpret(data)
    +	if err != nil {
    +		return nil, nil, err
    +	}
    +
    +	if gvk != nil {
    +		*actual = gvkWithDefaults(*actual, *gvk)
    +	}
    +
    +	if into != nil {
    +		types, _, err := s.typer.ObjectKinds(into)
    +		if err != nil {
    +			return nil, actual, err
    +		}
    +		*actual = gvkWithDefaults(*actual, types[0])
    +	}
    +
    +	if len(actual.Kind) == 0 {
    +		return nil, actual, runtime.NewMissingKindErr(diagnose(data))
    +	}
    +	if len(actual.Version) == 0 {
    +		return nil, actual, runtime.NewMissingVersionErr(diagnose(data))
    +	}
    +
    +	obj, err := runtime.UseOrCreateObject(s.typer, s.creater, *actual, into)
    +	if err != nil {
    +		return nil, actual, err
    +	}
    +
    +	strict, err := s.unmarshal(data, obj)
    +	if err != nil {
    +		return nil, actual, err
    +	}
    +
    +	if s.options.transcode {
    +		if err := transcodeRawTypes(obj); err != nil {
    +			return nil, actual, err
    +		}
    +	}
    +
    +	return obj, actual, strict
    +}
    +
    +// selfDescribedCBOR is the CBOR encoding of the head of tag number 55799. This tag, specified in
    +// RFC 8949 Section 3.4.6 "Self-Described CBOR", encloses all output from the encoder, has no
    +// special semantics, and is used as a magic number to recognize CBOR-encoded data items.
    +//
    +// See https://www.rfc-editor.org/rfc/rfc8949.html#name-self-described-cbor.
    +var selfDescribedCBOR = []byte{0xd9, 0xd9, 0xf7}
    +
    +func (s *serializer) RecognizesData(data []byte) (ok, unknown bool, err error) {
    +	return bytes.HasPrefix(data, selfDescribedCBOR), false, nil
    +}
    +
    +// NewSerializerInfo returns a default SerializerInfo for CBOR using the given creater and typer.
    +func NewSerializerInfo(creater runtime.ObjectCreater, typer runtime.ObjectTyper) runtime.SerializerInfo {
    +	return runtime.SerializerInfo{
    +		MediaType:        "application/cbor",
    +		MediaTypeType:    "application",
    +		MediaTypeSubType: "cbor",
    +		Serializer:       NewSerializer(creater, typer),
    +		StrictSerializer: NewSerializer(creater, typer, Strict(true)),
    +		StreamSerializer: &runtime.StreamSerializerInfo{
    +			Framer:     NewFramer(),
    +			Serializer: NewSerializer(creater, typer, Transcode(false)),
    +		},
    +	}
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct/direct.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct/direct.go
    new file mode 100644
    index 000000000000..a71a487f9ec7
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct/direct.go
    @@ -0,0 +1,61 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Package direct provides functions for marshaling and unmarshaling between arbitrary Go values and
    +// CBOR data, with behavior that is compatible with that of the CBOR serializer. In particular,
    +// types that implement cbor.Marshaler and cbor.Unmarshaler should use these functions.
    +package direct
    +
    +import (
    +	"k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes"
    +)
    +
    +// Marshal serializes a value to CBOR. If there is more than one way to encode the value, it will
    +// make the same choice as the CBOR implementation of runtime.Serializer.
    +//
    +// Note: Support for CBOR is at an alpha stage. If the value (or, for composite types, any of its
    +// nested values) implement any of the interfaces encoding.TextMarshaler, encoding.TextUnmarshaler,
    +// encoding/json.Marshaler, or encoding/json.Unmarshaler, a non-nil error will be returned unless
    +// the value also implements the corresponding CBOR interfaces. This limitation will ultimately be
    +// removed in favor of automatic transcoding to CBOR.
    +func Marshal(src interface{}) ([]byte, error) {
    +	if err := modes.RejectCustomMarshalers(src); err != nil {
    +		return nil, err
    +	}
    +	return modes.Encode.Marshal(src)
    +}
    +
    +// Unmarshal deserializes from CBOR into an addressable value. If there is more than one way to
    +// unmarshal a value, it will make the same choice as the CBOR implementation of runtime.Serializer.
    +//
    +// Note: Support for CBOR is at an alpha stage. If the value (or, for composite types, any of its
    +// nested values) implement any of the interfaces encoding.TextMarshaler, encoding.TextUnmarshaler,
    +// encoding/json.Marshaler, or encoding/json.Unmarshaler, a non-nil error will be returned unless
    +// the value also implements the corresponding CBOR interfaces. This limitation will ultimately be
    +// removed in favor of automatic transcoding to CBOR.
    +func Unmarshal(src []byte, dst interface{}) error {
    +	if err := modes.RejectCustomMarshalers(dst); err != nil {
    +		return err
    +	}
    +	return modes.Decode.Unmarshal(src, dst)
    +}
    +
    +// Diagnose accepts well-formed CBOR bytes and returns a string representing the same data item in
    +// human-readable diagnostic notation (RFC 8949 Section 8). The diagnostic notation is not meant to
    +// be parsed.
    +func Diagnose(src []byte) (string, error) {
    +	return modes.Diagnostic.Diagnose(src)
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/framer.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/framer.go
    new file mode 100644
    index 000000000000..28a733c67371
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/framer.go
    @@ -0,0 +1,90 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package cbor
    +
    +import (
    +	"io"
    +
    +	"k8s.io/apimachinery/pkg/runtime"
    +
    +	"github.com/fxamacker/cbor/v2"
    +)
    +
    +// NewFramer returns a runtime.Framer based on RFC 8742 CBOR Sequences. Each frame contains exactly
    +// one encoded CBOR data item.
    +func NewFramer() runtime.Framer {
    +	return framer{}
    +}
    +
    +var _ runtime.Framer = framer{}
    +
    +type framer struct{}
    +
    +func (framer) NewFrameReader(rc io.ReadCloser) io.ReadCloser {
    +	return &frameReader{
    +		decoder: cbor.NewDecoder(rc),
    +		closer:  rc,
    +	}
    +}
    +
    +func (framer) NewFrameWriter(w io.Writer) io.Writer {
    +	// Each data item in a CBOR sequence is self-delimiting (like JSON objects).
    +	return w
    +}
    +
    +type frameReader struct {
    +	decoder *cbor.Decoder
    +	closer  io.Closer
    +
    +	overflow []byte
    +}
    +
    +func (fr *frameReader) Read(dst []byte) (int, error) {
    +	if len(fr.overflow) > 0 {
    +		// We read a frame that was too large for the destination slice in a previous call
    +		// to Read and have bytes left over.
    +		n := copy(dst, fr.overflow)
    +		if n < len(fr.overflow) {
    +			fr.overflow = fr.overflow[n:]
    +			return n, io.ErrShortBuffer
    +		}
    +		fr.overflow = nil
    +		return n, nil
    +	}
    +
    +	// The Reader contract allows implementations to use all of dst[0:len(dst)] as scratch
    +	// space, even if n < len(dst), but it does not allow implementations to use
    +	// dst[len(dst):cap(dst)]. Slicing it up-front allows us to append to it without worrying
    +	// about overwriting dst[len(dst):cap(dst)].
    +	m := cbor.RawMessage(dst[0:0:len(dst)])
    +	if err := fr.decoder.Decode(&m); err != nil {
    +		return 0, err
    +	}
    +
    +	if len(m) > len(dst) {
    +		// The frame was too big, m has a newly-allocated underlying array to accommodate
    +		// it.
    +		fr.overflow = m[len(dst):]
    +		return copy(dst, m), io.ErrShortBuffer
    +	}
    +
    +	return len(m), nil
    +}
    +
    +func (fr *frameReader) Close() error {
    +	return fr.closer.Close()
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/buffers.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/buffers.go
    new file mode 100644
    index 000000000000..f14cbd6b5861
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/buffers.go
    @@ -0,0 +1,65 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package modes
    +
    +import (
    +	"bytes"
    +	"sync"
    +)
    +
    +var buffers = BufferProvider{p: new(sync.Pool)}
    +
    +type buffer struct {
    +	bytes.Buffer
    +}
    +
    +type pool interface {
    +	Get() interface{}
    +	Put(interface{})
    +}
    +
    +type BufferProvider struct {
    +	p pool
    +}
    +
    +func (b *BufferProvider) Get() *buffer {
    +	if buf, ok := b.p.Get().(*buffer); ok {
    +		return buf
    +	}
    +	return &buffer{}
    +}
    +
    +func (b *BufferProvider) Put(buf *buffer) {
    +	if buf.Cap() > 3*1024*1024 /* Default MaxRequestBodyBytes */ {
    +		// Objects in a sync.Pool are assumed to be fungible. This is not a good assumption
    +		// for pools of *bytes.Buffer because a *bytes.Buffer's underlying array grows as
    +		// needed to accommodate writes. In Kubernetes, apiservers tend to encode "small"
    +		// objects very frequently and much larger objects (especially large lists) only
    +		// occasionally. Under steady load, pooled buffers tend to be borrowed frequently
    +		// enough to prevent them from being released. Over time, each buffer is used to
    +		// encode a large object and its capacity increases accordingly. The result is that
    +		// practically all buffers in the pool retain much more capacity than needed to
    +		// encode most objects.
    +
    +		// As a basic mitigation for the worst case, buffers with more capacity than the
    +		// default max request body size are never returned to the pool.
    +		// TODO: Optimize for higher buffer utilization.
    +		return
    +	}
    +	buf.Reset()
    +	b.p.Put(buf)
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/custom.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/custom.go
    new file mode 100644
    index 000000000000..858529e958a5
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/custom.go
    @@ -0,0 +1,422 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package modes
    +
    +import (
    +	"encoding"
    +	"encoding/json"
    +	"errors"
    +	"fmt"
    +	"reflect"
    +	"sync"
    +
    +	"github.com/fxamacker/cbor/v2"
    +)
    +
    +// Returns a non-nil error if and only if the argument's type (or one of its component types, for
    +// composite types) implements json.Marshaler or encoding.TextMarshaler without also implementing
    +// cbor.Marshaler and likewise for the respective Unmarshaler interfaces.
    +//
    +// This is a temporary, graduation-blocking restriction and will be removed in favor of automatic
    +// transcoding between CBOR and JSON/text for these types. This restriction allows CBOR to be
    +// exercised for in-tree and unstructured types while mitigating the risk of mangling out-of-tree
    +// types in client programs.
    +func RejectCustomMarshalers(v interface{}) error {
    +	if v == nil {
    +		return nil
    +	}
    +	rv := reflect.ValueOf(v)
    +	if err := marshalerCache.getChecker(rv.Type()).check(rv, maxDepth); err != nil {
    +		return fmt.Errorf("unable to serialize %T: %w", v, err)
    +	}
    +	if err := unmarshalerCache.getChecker(rv.Type()).check(rv, maxDepth); err != nil {
    +		return fmt.Errorf("unable to serialize %T: %w", v, err)
    +	}
    +	return nil
    +}
    +
    +// Recursion depth is limited as a basic mitigation against cyclic objects. Objects created by the
    +// decoder shouldn't be able to contain cycles, but practically any object can be passed to the
    +// encoder.
    +var errMaxDepthExceeded = errors.New("object depth exceeds limit (possible cycle?)")
    +
    +// The JSON encoder begins detecting cycles after depth 1000. Use a generous limit here, knowing
    +// that it can might deeply nested acyclic objects. The limit will be removed along with the rest of
    +// this mechanism.
    +const maxDepth = 2048
    +
    +var marshalerCache = checkers{
    +	cborInterface: reflect.TypeFor[cbor.Marshaler](),
    +	nonCBORInterfaces: []reflect.Type{
    +		reflect.TypeFor[json.Marshaler](),
    +		reflect.TypeFor[encoding.TextMarshaler](),
    +	},
    +}
    +
    +var unmarshalerCache = checkers{
    +	cborInterface: reflect.TypeFor[cbor.Unmarshaler](),
    +	nonCBORInterfaces: []reflect.Type{
    +		reflect.TypeFor[json.Unmarshaler](),
    +		reflect.TypeFor[encoding.TextUnmarshaler](),
    +	},
    +	assumeAddressableValues: true,
    +}
    +
    +// checker wraps a function for dynamically checking a value of a specific type for custom JSON
    +// behaviors not matched by a custom CBOR behavior.
    +type checker struct {
    +	// check returns a non-nil error if the given value might be marshalled to or from CBOR
    +	// using the default behavior for its kind, but marshalled to or from JSON using custom
    +	// behavior.
    +	check func(rv reflect.Value, depth int) error
    +
    +	// safe returns true if all values of this type are safe from mismatched custom marshalers.
    +	safe func() bool
    +}
    +
    +// TODO: stale
    +// Having a single addressable checker for comparisons lets us prune and collapse parts of the
    +// object traversal that are statically known to be safe. Depending on the type, it may be
    +// unnecessary to inspect each value of that type. For example, no value of the built-in type bool
    +// can implement json.Marshaler (a named type whose underlying type is bool could, but it is a
    +// distinct type from bool).
    +var noop = checker{
    +	safe: func() bool {
    +		return true
    +	},
    +	check: func(rv reflect.Value, depth int) error {
    +		return nil
    +	},
    +}
    +
    +type checkers struct {
    +	m sync.Map // reflect.Type => *checker
    +
    +	cborInterface     reflect.Type
    +	nonCBORInterfaces []reflect.Type
    +
    +	assumeAddressableValues bool
    +}
    +
    +func (cache *checkers) getChecker(rt reflect.Type) checker {
    +	if ptr, ok := cache.m.Load(rt); ok {
    +		return *ptr.(*checker)
    +	}
    +
    +	return cache.getCheckerInternal(rt, nil)
    +}
    +
    +// linked list node representing the path from a composite type to an element type
    +type path struct {
    +	Type   reflect.Type
    +	Parent *path
    +}
    +
    +func (p path) cyclic(rt reflect.Type) bool {
    +	for ancestor := &p; ancestor != nil; ancestor = ancestor.Parent {
    +		if ancestor.Type == rt {
    +			return true
    +		}
    +	}
    +	return false
    +}
    +
    +func (cache *checkers) getCheckerInternal(rt reflect.Type, parent *path) (c checker) {
    +	// Store a placeholder cache entry first to handle cyclic types.
    +	var wg sync.WaitGroup
    +	wg.Add(1)
    +	defer wg.Done()
    +	c = checker{
    +		safe: func() bool {
    +			wg.Wait()
    +			return c.safe()
    +		},
    +		check: func(rv reflect.Value, depth int) error {
    +			wg.Wait()
    +			return c.check(rv, depth)
    +		},
    +	}
    +	if actual, loaded := cache.m.LoadOrStore(rt, &c); loaded {
    +		// Someone else stored an entry for this type, use it.
    +		return *actual.(*checker)
    +	}
    +
    +	// Take a nonreflective path for the unstructured container types. They're common and
    +	// usually nested inside one another.
    +	switch rt {
    +	case reflect.TypeFor[map[string]interface{}](), reflect.TypeFor[[]interface{}]():
    +		return checker{
    +			safe: func() bool {
    +				return false
    +			},
    +			check: func(rv reflect.Value, depth int) error {
    +				return checkUnstructuredValue(cache, rv.Interface(), depth)
    +			},
    +		}
    +	}
    +
    +	// It's possible that one of the relevant interfaces is implemented on a type with a pointer
    +	// receiver, but that a particular value of that type is not addressable. For example:
    +	//
    +	//   func (Foo) MarshalText() ([]byte, error) { ... }
    +	//   func (*Foo) MarshalCBOR() ([]byte, error) { ... }
    +	//
    +	// Both methods are in the method set of *Foo, but the method set of Foo contains only
    +	// MarshalText.
    +	//
    +	// Both the unmarshaler and marshaler checks assume that methods implementing a JSON or text
    +	// interface with a pointer receiver are always accessible. Only the unmarshaler check
    +	// assumes that CBOR methods with pointer receivers are accessible.
    +
    +	if rt.Implements(cache.cborInterface) {
    +		return noop
    +	}
    +	for _, unsafe := range cache.nonCBORInterfaces {
    +		if rt.Implements(unsafe) {
    +			err := fmt.Errorf("%v implements %v without corresponding cbor interface", rt, unsafe)
    +			return checker{
    +				safe: func() bool {
    +					return false
    +				},
    +				check: func(reflect.Value, int) error {
    +					return err
    +				},
    +			}
    +		}
    +	}
    +
    +	if cache.assumeAddressableValues && reflect.PointerTo(rt).Implements(cache.cborInterface) {
    +		return noop
    +	}
    +	for _, unsafe := range cache.nonCBORInterfaces {
    +		if reflect.PointerTo(rt).Implements(unsafe) {
    +			err := fmt.Errorf("%v implements %v without corresponding cbor interface", reflect.PointerTo(rt), unsafe)
    +			return checker{
    +				safe: func() bool {
    +					return false
    +				},
    +				check: func(reflect.Value, int) error {
    +					return err
    +				},
    +			}
    +		}
    +	}
    +
    +	self := &path{Type: rt, Parent: parent}
    +
    +	switch rt.Kind() {
    +	case reflect.Array:
    +		ce := cache.getCheckerInternal(rt.Elem(), self)
    +		rtlen := rt.Len()
    +		if rtlen == 0 || (!self.cyclic(rt.Elem()) && ce.safe()) {
    +			return noop
    +		}
    +		return checker{
    +			safe: func() bool {
    +				return false
    +			},
    +			check: func(rv reflect.Value, depth int) error {
    +				if depth <= 0 {
    +					return errMaxDepthExceeded
    +				}
    +				for i := 0; i < rtlen; i++ {
    +					if err := ce.check(rv.Index(i), depth-1); err != nil {
    +						return err
    +					}
    +				}
    +				return nil
    +			},
    +		}
    +
    +	case reflect.Interface:
    +		// All interface values have to be checked because their dynamic type might
    +		// implement one of the interesting interfaces or be composed of another type that
    +		// does.
    +		return checker{
    +			safe: func() bool {
    +				return false
    +			},
    +			check: func(rv reflect.Value, depth int) error {
    +				if rv.IsNil() {
    +					return nil
    +				}
    +				// Unpacking interfaces must count against recursion depth,
    +				// consider this cycle:
    +				// >  var i interface{}
    +				// >  var p *interface{} = &i
    +				// >  i = p
    +				// >  rv := reflect.ValueOf(i)
    +				// >  for {
    +				// >    rv = rv.Elem()
    +				// >  }
    +				if depth <= 0 {
    +					return errMaxDepthExceeded
    +				}
    +				rv = rv.Elem()
    +				return cache.getChecker(rv.Type()).check(rv, depth-1)
    +			},
    +		}
    +
    +	case reflect.Map:
    +		rtk := rt.Key()
    +		ck := cache.getCheckerInternal(rtk, self)
    +		rte := rt.Elem()
    +		ce := cache.getCheckerInternal(rte, self)
    +		if !self.cyclic(rtk) && !self.cyclic(rte) && ck.safe() && ce.safe() {
    +			return noop
    +		}
    +		return checker{
    +			safe: func() bool {
    +				return false
    +			},
    +			check: func(rv reflect.Value, depth int) error {
    +				if depth <= 0 {
    +					return errMaxDepthExceeded
    +				}
    +				iter := rv.MapRange()
    +				rvk := reflect.New(rtk).Elem()
    +				rve := reflect.New(rte).Elem()
    +				for iter.Next() {
    +					rvk.SetIterKey(iter)
    +					if err := ck.check(rvk, depth-1); err != nil {
    +						return err
    +					}
    +					rve.SetIterValue(iter)
    +					if err := ce.check(rve, depth-1); err != nil {
    +						return err
    +					}
    +				}
    +				return nil
    +			},
    +		}
    +
    +	case reflect.Pointer:
    +		ce := cache.getCheckerInternal(rt.Elem(), self)
    +		if !self.cyclic(rt.Elem()) && ce.safe() {
    +			return noop
    +		}
    +		return checker{
    +			safe: func() bool {
    +				return false
    +			},
    +			check: func(rv reflect.Value, depth int) error {
    +				if rv.IsNil() {
    +					return nil
    +				}
    +				if depth <= 0 {
    +					return errMaxDepthExceeded
    +				}
    +				return ce.check(rv.Elem(), depth-1)
    +			},
    +		}
    +
    +	case reflect.Slice:
    +		ce := cache.getCheckerInternal(rt.Elem(), self)
    +		if !self.cyclic(rt.Elem()) && ce.safe() {
    +			return noop
    +		}
    +		return checker{
    +			safe: func() bool {
    +				return false
    +			},
    +			check: func(rv reflect.Value, depth int) error {
    +				if depth <= 0 {
    +					return errMaxDepthExceeded
    +				}
    +				for i := 0; i < rv.Len(); i++ {
    +					if err := ce.check(rv.Index(i), depth-1); err != nil {
    +						return err
    +					}
    +				}
    +				return nil
    +			},
    +		}
    +
    +	case reflect.Struct:
    +		type field struct {
    +			Index   int
    +			Checker checker
    +		}
    +		var fields []field
    +		for i := 0; i < rt.NumField(); i++ {
    +			f := rt.Field(i)
    +			cf := cache.getCheckerInternal(f.Type, self)
    +			if !self.cyclic(f.Type) && cf.safe() {
    +				continue
    +			}
    +			fields = append(fields, field{Index: i, Checker: cf})
    +		}
    +		if len(fields) == 0 {
    +			return noop
    +		}
    +		return checker{
    +			safe: func() bool {
    +				return false
    +			},
    +			check: func(rv reflect.Value, depth int) error {
    +				if depth <= 0 {
    +					return errMaxDepthExceeded
    +				}
    +				for _, fi := range fields {
    +					if err := fi.Checker.check(rv.Field(fi.Index), depth-1); err != nil {
    +						return err
    +					}
    +				}
    +				return nil
    +			},
    +		}
    +
    +	default:
    +		// Not a serializable composite type (funcs and channels are composite types but are
    +		// rejected by JSON and CBOR serialization).
    +		return noop
    +
    +	}
    +}
    +
    +func checkUnstructuredValue(cache *checkers, v interface{}, depth int) error {
    +	switch v := v.(type) {
    +	case nil, bool, int64, float64, string:
    +		return nil
    +	case []interface{}:
    +		if depth <= 0 {
    +			return errMaxDepthExceeded
    +		}
    +		for _, element := range v {
    +			if err := checkUnstructuredValue(cache, element, depth-1); err != nil {
    +				return err
    +			}
    +		}
    +		return nil
    +	case map[string]interface{}:
    +		if depth <= 0 {
    +			return errMaxDepthExceeded
    +		}
    +		for _, element := range v {
    +			if err := checkUnstructuredValue(cache, element, depth-1); err != nil {
    +				return err
    +			}
    +		}
    +		return nil
    +	default:
    +		// Unmarshaling an unstructured doesn't use other dynamic types, but nothing
    +		// prevents inserting values with arbitrary dynamic types into unstructured content,
    +		// as long as they can be marshalled.
    +		rv := reflect.ValueOf(v)
    +		return cache.getChecker(rv.Type()).check(rv, depth)
    +	}
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/decode.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/decode.go
    new file mode 100644
    index 000000000000..895b0deff957
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/decode.go
    @@ -0,0 +1,158 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package modes
    +
    +import (
    +	"reflect"
    +
    +	"github.com/fxamacker/cbor/v2"
    +)
    +
    +var simpleValues *cbor.SimpleValueRegistry = func() *cbor.SimpleValueRegistry {
    +	var opts []func(*cbor.SimpleValueRegistry) error
    +	for sv := 0; sv <= 255; sv++ {
    +		// Reject simple values 0-19, 23, and 32-255. The simple values 24-31 are reserved
    +		// and considered ill-formed by the CBOR specification. We only accept false (20),
    +		// true (21), and null (22).
    +		switch sv {
    +		case 20: // false
    +		case 21: // true
    +		case 22: // null
    +		case 24, 25, 26, 27, 28, 29, 30, 31: // reserved
    +		default:
    +			opts = append(opts, cbor.WithRejectedSimpleValue(cbor.SimpleValue(sv)))
    +		}
    +	}
    +	simpleValues, err := cbor.NewSimpleValueRegistryFromDefaults(opts...)
    +	if err != nil {
    +		panic(err)
    +	}
    +	return simpleValues
    +}()
    +
    +var Decode cbor.DecMode = func() cbor.DecMode {
    +	decode, err := cbor.DecOptions{
    +		// Maps with duplicate keys are well-formed but invalid according to the CBOR spec
    +		// and never acceptable. Unlike the JSON serializer, inputs containing duplicate map
    +		// keys are rejected outright and not surfaced as a strict decoding error.
    +		DupMapKey: cbor.DupMapKeyEnforcedAPF,
    +
    +		// For JSON parity, decoding an RFC3339 string into time.Time needs to be accepted
    +		// with or without tagging. If a tag number is present, it must be valid.
    +		TimeTag: cbor.DecTagOptional,
    +
    +		// Observed depth up to 16 in fuzzed batch/v1 CronJobList. JSON implementation limit
    +		// is 10000.
    +		MaxNestedLevels: 64,
    +
    +		MaxArrayElements: 1024,
    +		MaxMapPairs:      1024,
    +
    +		// Indefinite-length sequences aren't produced by this serializer, but other
    +		// implementations can.
    +		IndefLength: cbor.IndefLengthAllowed,
    +
    +		// Accept inputs that contain CBOR tags.
    +		TagsMd: cbor.TagsAllowed,
    +
    +		// Decode type 0 (unsigned integer) as int64.
    +		// TODO: IntDecConvertSignedOrFail errors on overflow, JSON will try to fall back to float64.
    +		IntDec: cbor.IntDecConvertSignedOrFail,
    +
    +		// Disable producing map[cbor.ByteString]interface{}, which is not acceptable for
    +		// decodes into interface{}.
    +		MapKeyByteString: cbor.MapKeyByteStringForbidden,
    +
    +		// Error on map keys that don't map to a field in the destination struct.
    +		ExtraReturnErrors: cbor.ExtraDecErrorUnknownField,
    +
    +		// Decode maps into concrete type map[string]interface{} when the destination is an
    +		// interface{}.
    +		DefaultMapType: reflect.TypeOf(map[string]interface{}(nil)),
    +
    +		// A CBOR text string whose content is not a valid UTF-8 sequence is well-formed but
    +		// invalid according to the CBOR spec. Reject invalid inputs. Encoders are
    +		// responsible for ensuring that all text strings they produce contain valid UTF-8
    +		// sequences and may use the byte string major type to encode strings that have not
    +		// been validated.
    +		UTF8: cbor.UTF8RejectInvalid,
    +
    +		// Never make a case-insensitive match between a map key and a struct field.
    +		FieldNameMatching: cbor.FieldNameMatchingCaseSensitive,
    +
    +		// Produce string concrete values when decoding a CBOR byte string into interface{}.
    +		DefaultByteStringType: reflect.TypeOf(""),
    +
    +		// Allow CBOR byte strings to be decoded into string destination values. If a byte
    +		// string is enclosed in an "expected later encoding" tag
    +		// (https://www.rfc-editor.org/rfc/rfc8949.html#section-3.4.5.2), then the text
    +		// encoding indicated by that tag (e.g. base64) will be applied to the contents of
    +		// the byte string.
    +		ByteStringToString: cbor.ByteStringToStringAllowedWithExpectedLaterEncoding,
    +
    +		// Allow CBOR byte strings to match struct fields when appearing as a map key.
    +		FieldNameByteString: cbor.FieldNameByteStringAllowed,
    +
    +		// When decoding an unrecognized tag to interface{}, return the decoded tag content
    +		// instead of the default, a cbor.Tag representing a (number, content) pair.
    +		UnrecognizedTagToAny: cbor.UnrecognizedTagContentToAny,
    +
    +		// Decode time tags to interface{} as strings containing RFC 3339 timestamps.
    +		TimeTagToAny: cbor.TimeTagToRFC3339Nano,
    +
    +		// For parity with JSON, strings can be decoded into time.Time if they are RFC 3339
    +		// timestamps.
    +		ByteStringToTime: cbor.ByteStringToTimeAllowed,
    +
    +		// Reject NaN and infinite floating-point values since they don't have a JSON
    +		// representation (RFC 8259 Section 6).
    +		NaN: cbor.NaNDecodeForbidden,
    +		Inf: cbor.InfDecodeForbidden,
    +
    +		// When unmarshaling a byte string into a []byte, assume that the byte string
    +		// contains base64-encoded bytes, unless explicitly counterindicated by an "expected
    +		// later encoding" tag. This is consistent with the because of unmarshaling a JSON
    +		// text into a []byte.
    +		ByteStringExpectedFormat: cbor.ByteStringExpectedBase64,
    +
    +		// Reject the arbitrary-precision integer tags because they can't be faithfully
    +		// roundtripped through the allowable Unstructured types.
    +		BignumTag: cbor.BignumTagForbidden,
    +
    +		// Reject anything other than the simple values true, false, and null.
    +		SimpleValues: simpleValues,
    +
    +		// Disable default recognition of types implementing encoding.BinaryUnmarshaler,
    +		// which is not recognized for JSON decoding.
    +		BinaryUnmarshaler: cbor.BinaryUnmarshalerNone,
    +	}.DecMode()
    +	if err != nil {
    +		panic(err)
    +	}
    +	return decode
    +}()
    +
    +// DecodeLax is derived from Decode, but does not complain about unknown fields in the input.
    +var DecodeLax cbor.DecMode = func() cbor.DecMode {
    +	opts := Decode.DecOptions()
    +	opts.ExtraReturnErrors &^= cbor.ExtraDecErrorUnknownField // clear bit
    +	dm, err := opts.DecMode()
    +	if err != nil {
    +		panic(err)
    +	}
    +	return dm
    +}()
    diff --git a/vendor/k8s.io/gengo/examples/set-gen/generators/tags.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/diagnostic.go
    similarity index 56%
    rename from vendor/k8s.io/gengo/examples/set-gen/generators/tags.go
    rename to vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/diagnostic.go
    index 52e87677183f..61f3f145f55e 100644
    --- a/vendor/k8s.io/gengo/examples/set-gen/generators/tags.go
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/diagnostic.go
    @@ -1,5 +1,5 @@
     /*
    -Copyright 2016 The Kubernetes Authors.
    +Copyright 2024 The Kubernetes Authors.
     
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
    @@ -14,20 +14,23 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -package generators
    +package modes
     
     import (
    -	"k8s.io/gengo/types"
    -	"k8s.io/klog/v2"
    +	"github.com/fxamacker/cbor/v2"
     )
     
    -// extractBoolTagOrDie gets the comment-tags for the key and asserts that, if
    -// it exists, the value is boolean.  If the tag did not exist, it returns
    -// false.
    -func extractBoolTagOrDie(key string, lines []string) bool {
    -	val, err := types.ExtractSingleBoolCommentTag("+", key, false, lines)
    +var Diagnostic cbor.DiagMode = func() cbor.DiagMode {
    +	opts := Decode.DecOptions()
    +	diagnostic, err := cbor.DiagOptions{
    +		ByteStringText: true,
    +
    +		MaxNestedLevels:  opts.MaxNestedLevels,
    +		MaxArrayElements: opts.MaxArrayElements,
    +		MaxMapPairs:      opts.MaxMapPairs,
    +	}.DiagMode()
     	if err != nil {
    -		klog.Fatalf(err.Error())
    +		panic(err)
     	}
    -	return val
    -}
    +	return diagnostic
    +}()
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/encode.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/encode.go
    new file mode 100644
    index 000000000000..5fae141518d0
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/encode.go
    @@ -0,0 +1,155 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package modes
    +
    +import (
    +	"io"
    +
    +	"github.com/fxamacker/cbor/v2"
    +)
    +
    +var Encode = EncMode{
    +	delegate: func() cbor.UserBufferEncMode {
    +		encode, err := cbor.EncOptions{
    +			// Map keys need to be sorted to have deterministic output, and this is the order
    +			// defined in RFC 8949 4.2.1 "Core Deterministic Encoding Requirements".
    +			Sort: cbor.SortBytewiseLexical,
    +
    +			// CBOR supports distinct types for IEEE-754 float16, float32, and float64. Store
    +			// floats in the smallest width that preserves value so that equivalent float32 and
    +			// float64 values encode to identical bytes, as they do in a JSON
    +			// encoding. Satisfies one of the "Core Deterministic Encoding Requirements".
    +			ShortestFloat: cbor.ShortestFloat16,
    +
    +			// Error on attempt to encode NaN and infinite values. This is what the JSON
    +			// serializer does.
    +			NaNConvert: cbor.NaNConvertReject,
    +			InfConvert: cbor.InfConvertReject,
    +
    +			// Error on attempt to encode math/big.Int values, which can't be faithfully
    +			// roundtripped through Unstructured in general (the dynamic numeric types allowed
    +			// in Unstructured are limited to float64 and int64).
    +			BigIntConvert: cbor.BigIntConvertReject,
    +
    +			// MarshalJSON for time.Time writes RFC3339 with nanos.
    +			Time: cbor.TimeRFC3339Nano,
    +
    +			// The decoder must be able to accept RFC3339 strings with or without tag 0 (e.g. by
    +			// the end of time.Time -> JSON -> Unstructured -> CBOR, the CBOR encoder has no
    +			// reliable way of knowing that a particular string originated from serializing a
    +			// time.Time), so producing tag 0 has little use.
    +			TimeTag: cbor.EncTagNone,
    +
    +			// Indefinite-length items have multiple encodings and aren't being used anyway, so
    +			// disable to avoid an opportunity for nondeterminism.
    +			IndefLength: cbor.IndefLengthForbidden,
    +
    +			// Preserve distinction between nil and empty for slices and maps.
    +			NilContainers: cbor.NilContainerAsNull,
    +
    +			// OK to produce tags.
    +			TagsMd: cbor.TagsAllowed,
    +
    +			// Use the same definition of "empty" as encoding/json.
    +			OmitEmpty: cbor.OmitEmptyGoValue,
    +
    +			// The CBOR types text string and byte string are structurally equivalent, with the
    +			// semantic difference that a text string whose content is an invalid UTF-8 sequence
    +			// is itself invalid. We reject all invalid text strings at decode time and do not
    +			// validate or sanitize all Go strings at encode time. Encoding Go strings to the
    +			// byte string type is comparable to the existing Protobuf behavior and cheaply
    +			// ensures that the output is valid CBOR.
    +			String: cbor.StringToByteString,
    +
    +			// Encode struct field names to the byte string type rather than the text string
    +			// type.
    +			FieldName: cbor.FieldNameToByteString,
    +
    +			// Marshal Go byte arrays to CBOR arrays of integers (as in JSON) instead of byte
    +			// strings.
    +			ByteArray: cbor.ByteArrayToArray,
    +
    +			// Marshal []byte to CBOR byte string enclosed in tag 22 (expected later base64
    +			// encoding, https://www.rfc-editor.org/rfc/rfc8949.html#section-3.4.5.2), to
    +			// interoperate with the existing JSON behavior. This indicates to the decoder that,
    +			// when decoding into a string (or unstructured), the resulting value should be the
    +			// base64 encoding of the original bytes. No base64 encoding or decoding needs to be
    +			// performed for []byte-to-CBOR-to-[]byte roundtrips.
    +			ByteSliceLaterFormat: cbor.ByteSliceLaterFormatBase64,
    +
    +			// Disable default recognition of types implementing encoding.BinaryMarshaler, which
    +			// is not recognized for JSON encoding.
    +			BinaryMarshaler: cbor.BinaryMarshalerNone,
    +		}.UserBufferEncMode()
    +		if err != nil {
    +			panic(err)
    +		}
    +		return encode
    +	}(),
    +}
    +
    +var EncodeNondeterministic = EncMode{
    +	delegate: func() cbor.UserBufferEncMode {
    +		opts := Encode.options()
    +		opts.Sort = cbor.SortFastShuffle
    +		em, err := opts.UserBufferEncMode()
    +		if err != nil {
    +			panic(err)
    +		}
    +		return em
    +	}(),
    +}
    +
    +type EncMode struct {
    +	delegate cbor.UserBufferEncMode
    +}
    +
    +func (em EncMode) options() cbor.EncOptions {
    +	return em.delegate.EncOptions()
    +}
    +
    +func (em EncMode) MarshalTo(v interface{}, w io.Writer) error {
    +	if buf, ok := w.(*buffer); ok {
    +		return em.delegate.MarshalToBuffer(v, &buf.Buffer)
    +	}
    +
    +	buf := buffers.Get()
    +	defer buffers.Put(buf)
    +	if err := em.delegate.MarshalToBuffer(v, &buf.Buffer); err != nil {
    +		return err
    +	}
    +
    +	if _, err := io.Copy(w, buf); err != nil {
    +		return err
    +	}
    +
    +	return nil
    +}
    +
    +func (em EncMode) Marshal(v interface{}) ([]byte, error) {
    +	buf := buffers.Get()
    +	defer buffers.Put(buf)
    +
    +	if err := em.MarshalTo(v, &buf.Buffer); err != nil {
    +		return nil, err
    +	}
    +
    +	clone := make([]byte, buf.Len())
    +	copy(clone, buf.Bytes())
    +
    +	return clone, nil
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/raw.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/raw.go
    new file mode 100644
    index 000000000000..09d1340f9324
    --- /dev/null
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/raw.go
    @@ -0,0 +1,236 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package cbor
    +
    +import (
    +	"fmt"
    +	"reflect"
    +	"sync"
    +
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +)
    +
    +var sharedTranscoders transcoders
    +
    +var rawTypeTranscodeFuncs = map[reflect.Type]func(reflect.Value) error{
    +	reflect.TypeFor[runtime.RawExtension](): func(rv reflect.Value) error {
    +		if !rv.CanAddr() {
    +			return nil
    +		}
    +		re := rv.Addr().Interface().(*runtime.RawExtension)
    +		if re.Raw == nil {
    +			// When Raw is nil it encodes to null. Don't change nil Raw values during
    +			// transcoding, they would have unmarshalled from JSON as nil too.
    +			return nil
    +		}
    +		j, err := re.MarshalJSON()
    +		if err != nil {
    +			return fmt.Errorf("failed to transcode RawExtension to JSON: %w", err)
    +		}
    +		re.Raw = j
    +		return nil
    +	},
    +	reflect.TypeFor[metav1.FieldsV1](): func(rv reflect.Value) error {
    +		if !rv.CanAddr() {
    +			return nil
    +		}
    +		fields := rv.Addr().Interface().(*metav1.FieldsV1)
    +		if fields.Raw == nil {
    +			// When Raw is nil it encodes to null. Don't change nil Raw values during
    +			// transcoding, they would have unmarshalled from JSON as nil too.
    +			return nil
    +		}
    +		j, err := fields.MarshalJSON()
    +		if err != nil {
    +			return fmt.Errorf("failed to transcode FieldsV1 to JSON: %w", err)
    +		}
    +		fields.Raw = j
    +		return nil
    +	},
    +}
    +
    +func transcodeRawTypes(v interface{}) error {
    +	if v == nil {
    +		return nil
    +	}
    +
    +	rv := reflect.ValueOf(v)
    +	return sharedTranscoders.getTranscoder(rv.Type()).fn(rv)
    +}
    +
    +type transcoder struct {
    +	fn func(rv reflect.Value) error
    +}
    +
    +var noop = transcoder{
    +	fn: func(reflect.Value) error {
    +		return nil
    +	},
    +}
    +
    +type transcoders struct {
    +	lock sync.RWMutex
    +	m    map[reflect.Type]**transcoder
    +}
    +
    +func (ts *transcoders) getTranscoder(rt reflect.Type) transcoder {
    +	ts.lock.RLock()
    +	tpp, ok := ts.m[rt]
    +	ts.lock.RUnlock()
    +	if ok {
    +		return **tpp
    +	}
    +
    +	ts.lock.Lock()
    +	defer ts.lock.Unlock()
    +	tp := ts.getTranscoderLocked(rt)
    +	return *tp
    +}
    +
    +func (ts *transcoders) getTranscoderLocked(rt reflect.Type) *transcoder {
    +	if tpp, ok := ts.m[rt]; ok {
    +		// A transcoder for this type was cached while waiting to acquire the lock.
    +		return *tpp
    +	}
    +
    +	// Cache the transcoder now, before populating fn, so that circular references between types
    +	// don't overflow the call stack.
    +	t := new(transcoder)
    +	if ts.m == nil {
    +		ts.m = make(map[reflect.Type]**transcoder)
    +	}
    +	ts.m[rt] = &t
    +
    +	for rawType, fn := range rawTypeTranscodeFuncs {
    +		if rt == rawType {
    +			t = &transcoder{fn: fn}
    +			return t
    +		}
    +	}
    +
    +	switch rt.Kind() {
    +	case reflect.Array:
    +		te := ts.getTranscoderLocked(rt.Elem())
    +		rtlen := rt.Len()
    +		if rtlen == 0 || te == &noop {
    +			t = &noop
    +			break
    +		}
    +		t.fn = func(rv reflect.Value) error {
    +			for i := 0; i < rtlen; i++ {
    +				if err := te.fn(rv.Index(i)); err != nil {
    +					return err
    +				}
    +			}
    +			return nil
    +		}
    +	case reflect.Interface:
    +		// Any interface value might have a dynamic type involving RawExtension. It needs to
    +		// be checked.
    +		t.fn = func(rv reflect.Value) error {
    +			if rv.IsNil() {
    +				return nil
    +			}
    +			rv = rv.Elem()
    +			// The interface element's type is dynamic so its transcoder can't be
    +			// determined statically.
    +			return ts.getTranscoder(rv.Type()).fn(rv)
    +		}
    +	case reflect.Map:
    +		rtk := rt.Key()
    +		tk := ts.getTranscoderLocked(rtk)
    +		rte := rt.Elem()
    +		te := ts.getTranscoderLocked(rte)
    +		if tk == &noop && te == &noop {
    +			t = &noop
    +			break
    +		}
    +		t.fn = func(rv reflect.Value) error {
    +			iter := rv.MapRange()
    +			rvk := reflect.New(rtk).Elem()
    +			rve := reflect.New(rte).Elem()
    +			for iter.Next() {
    +				rvk.SetIterKey(iter)
    +				if err := tk.fn(rvk); err != nil {
    +					return err
    +				}
    +				rve.SetIterValue(iter)
    +				if err := te.fn(rve); err != nil {
    +					return err
    +				}
    +			}
    +			return nil
    +		}
    +	case reflect.Pointer:
    +		te := ts.getTranscoderLocked(rt.Elem())
    +		if te == &noop {
    +			t = &noop
    +			break
    +		}
    +		t.fn = func(rv reflect.Value) error {
    +			if rv.IsNil() {
    +				return nil
    +			}
    +			return te.fn(rv.Elem())
    +		}
    +	case reflect.Slice:
    +		te := ts.getTranscoderLocked(rt.Elem())
    +		if te == &noop {
    +			t = &noop
    +			break
    +		}
    +		t.fn = func(rv reflect.Value) error {
    +			for i := 0; i < rv.Len(); i++ {
    +				if err := te.fn(rv.Index(i)); err != nil {
    +					return err
    +				}
    +			}
    +			return nil
    +		}
    +	case reflect.Struct:
    +		type fieldTranscoder struct {
    +			Index      int
    +			Transcoder *transcoder
    +		}
    +		var fieldTranscoders []fieldTranscoder
    +		for i := 0; i < rt.NumField(); i++ {
    +			f := rt.Field(i)
    +			tf := ts.getTranscoderLocked(f.Type)
    +			if tf == &noop {
    +				continue
    +			}
    +			fieldTranscoders = append(fieldTranscoders, fieldTranscoder{Index: i, Transcoder: tf})
    +		}
    +		if len(fieldTranscoders) == 0 {
    +			t = &noop
    +			break
    +		}
    +		t.fn = func(rv reflect.Value) error {
    +			for _, ft := range fieldTranscoders {
    +				if err := ft.Transcoder.fn(rv.Field(ft.Index)); err != nil {
    +					return err
    +				}
    +			}
    +			return nil
    +		}
    +	default:
    +		t = &noop
    +	}
    +
    +	return t
    +}
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go
    index ff9820842046..77bb30745253 100644
    --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go
    @@ -17,9 +17,6 @@ limitations under the License.
     package serializer
     
     import (
    -	"mime"
    -	"strings"
    -
     	"k8s.io/apimachinery/pkg/runtime"
     	"k8s.io/apimachinery/pkg/runtime/schema"
     	"k8s.io/apimachinery/pkg/runtime/serializer/json"
    @@ -28,41 +25,26 @@ import (
     	"k8s.io/apimachinery/pkg/runtime/serializer/versioning"
     )
     
    -// serializerExtensions are for serializers that are conditionally compiled in
    -var serializerExtensions = []func(*runtime.Scheme) (serializerType, bool){}
    -
    -type serializerType struct {
    -	AcceptContentTypes []string
    -	ContentType        string
    -	FileExtensions     []string
    -	// EncodesAsText should be true if this content type can be represented safely in UTF-8
    -	EncodesAsText bool
    -
    -	Serializer       runtime.Serializer
    -	PrettySerializer runtime.Serializer
    -	StrictSerializer runtime.Serializer
    -
    -	AcceptStreamContentTypes []string
    -	StreamContentType        string
    -
    -	Framer           runtime.Framer
    -	StreamSerializer runtime.Serializer
    -}
    -
    -func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory, options CodecFactoryOptions) []serializerType {
    +func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory, options CodecFactoryOptions) []runtime.SerializerInfo {
     	jsonSerializer := json.NewSerializerWithOptions(
     		mf, scheme, scheme,
     		json.SerializerOptions{Yaml: false, Pretty: false, Strict: options.Strict},
     	)
    -	jsonSerializerType := serializerType{
    -		AcceptContentTypes: []string{runtime.ContentTypeJSON},
    -		ContentType:        runtime.ContentTypeJSON,
    -		FileExtensions:     []string{"json"},
    -		EncodesAsText:      true,
    -		Serializer:         jsonSerializer,
    -
    -		Framer:           json.Framer,
    -		StreamSerializer: jsonSerializer,
    +	jsonSerializerType := runtime.SerializerInfo{
    +		MediaType:        runtime.ContentTypeJSON,
    +		MediaTypeType:    "application",
    +		MediaTypeSubType: "json",
    +		EncodesAsText:    true,
    +		Serializer:       jsonSerializer,
    +		StrictSerializer: json.NewSerializerWithOptions(
    +			mf, scheme, scheme,
    +			json.SerializerOptions{Yaml: false, Pretty: false, Strict: true},
    +		),
    +		StreamSerializer: &runtime.StreamSerializerInfo{
    +			EncodesAsText: true,
    +			Serializer:    jsonSerializer,
    +			Framer:        json.Framer,
    +		},
     	}
     	if options.Pretty {
     		jsonSerializerType.PrettySerializer = json.NewSerializerWithOptions(
    @@ -71,12 +53,6 @@ func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory, option
     		)
     	}
     
    -	strictJSONSerializer := json.NewSerializerWithOptions(
    -		mf, scheme, scheme,
    -		json.SerializerOptions{Yaml: false, Pretty: false, Strict: true},
    -	)
    -	jsonSerializerType.StrictSerializer = strictJSONSerializer
    -
     	yamlSerializer := json.NewSerializerWithOptions(
     		mf, scheme, scheme,
     		json.SerializerOptions{Yaml: true, Pretty: false, Strict: options.Strict},
    @@ -88,35 +64,35 @@ func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory, option
     	protoSerializer := protobuf.NewSerializer(scheme, scheme)
     	protoRawSerializer := protobuf.NewRawSerializer(scheme, scheme)
     
    -	serializers := []serializerType{
    +	serializers := []runtime.SerializerInfo{
     		jsonSerializerType,
     		{
    -			AcceptContentTypes: []string{runtime.ContentTypeYAML},
    -			ContentType:        runtime.ContentTypeYAML,
    -			FileExtensions:     []string{"yaml"},
    -			EncodesAsText:      true,
    -			Serializer:         yamlSerializer,
    -			StrictSerializer:   strictYAMLSerializer,
    +			MediaType:        runtime.ContentTypeYAML,
    +			MediaTypeType:    "application",
    +			MediaTypeSubType: "yaml",
    +			EncodesAsText:    true,
    +			Serializer:       yamlSerializer,
    +			StrictSerializer: strictYAMLSerializer,
     		},
     		{
    -			AcceptContentTypes: []string{runtime.ContentTypeProtobuf},
    -			ContentType:        runtime.ContentTypeProtobuf,
    -			FileExtensions:     []string{"pb"},
    -			Serializer:         protoSerializer,
    +			MediaType:        runtime.ContentTypeProtobuf,
    +			MediaTypeType:    "application",
    +			MediaTypeSubType: "vnd.kubernetes.protobuf",
    +			Serializer:       protoSerializer,
     			// note, strict decoding is unsupported for protobuf,
     			// fall back to regular serializing
     			StrictSerializer: protoSerializer,
    -
    -			Framer:           protobuf.LengthDelimitedFramer,
    -			StreamSerializer: protoRawSerializer,
    +			StreamSerializer: &runtime.StreamSerializerInfo{
    +				Serializer: protoRawSerializer,
    +				Framer:     protobuf.LengthDelimitedFramer,
    +			},
     		},
     	}
     
    -	for _, fn := range serializerExtensions {
    -		if serializer, ok := fn(scheme); ok {
    -			serializers = append(serializers, serializer)
    -		}
    +	for _, f := range options.serializers {
    +		serializers = append(serializers, f(scheme, scheme))
     	}
    +
     	return serializers
     }
     
    @@ -136,6 +112,8 @@ type CodecFactoryOptions struct {
     	Strict bool
     	// Pretty includes a pretty serializer along with the non-pretty one
     	Pretty bool
    +
    +	serializers []func(runtime.ObjectCreater, runtime.ObjectTyper) runtime.SerializerInfo
     }
     
     // CodecFactoryOptionsMutator takes a pointer to an options struct and then modifies it.
    @@ -162,6 +140,13 @@ func DisableStrict(options *CodecFactoryOptions) {
     	options.Strict = false
     }
     
    +// WithSerializer configures a serializer to be supported in addition to the default serializers.
    +func WithSerializer(f func(runtime.ObjectCreater, runtime.ObjectTyper) runtime.SerializerInfo) CodecFactoryOptionsMutator {
    +	return func(options *CodecFactoryOptions) {
    +		options.serializers = append(options.serializers, f)
    +	}
    +}
    +
     // NewCodecFactory provides methods for retrieving serializers for the supported wire formats
     // and conversion wrappers to define preferred internal and external versions. In the future,
     // as the internal version is used less, callers may instead use a defaulting serializer and
    @@ -184,7 +169,7 @@ func NewCodecFactory(scheme *runtime.Scheme, mutators ...CodecFactoryOptionsMuta
     }
     
     // newCodecFactory is a helper for testing that allows a different metafactory to be specified.
    -func newCodecFactory(scheme *runtime.Scheme, serializers []serializerType) CodecFactory {
    +func newCodecFactory(scheme *runtime.Scheme, serializers []runtime.SerializerInfo) CodecFactory {
     	decoders := make([]runtime.Decoder, 0, len(serializers))
     	var accepts []runtime.SerializerInfo
     	alreadyAccepted := make(map[string]struct{})
    @@ -192,38 +177,20 @@ func newCodecFactory(scheme *runtime.Scheme, serializers []serializerType) Codec
     	var legacySerializer runtime.Serializer
     	for _, d := range serializers {
     		decoders = append(decoders, d.Serializer)
    -		for _, mediaType := range d.AcceptContentTypes {
    -			if _, ok := alreadyAccepted[mediaType]; ok {
    -				continue
    -			}
    -			alreadyAccepted[mediaType] = struct{}{}
    -			info := runtime.SerializerInfo{
    -				MediaType:        d.ContentType,
    -				EncodesAsText:    d.EncodesAsText,
    -				Serializer:       d.Serializer,
    -				PrettySerializer: d.PrettySerializer,
    -				StrictSerializer: d.StrictSerializer,
    -			}
    -
    -			mediaType, _, err := mime.ParseMediaType(info.MediaType)
    -			if err != nil {
    -				panic(err)
    -			}
    -			parts := strings.SplitN(mediaType, "/", 2)
    -			info.MediaTypeType = parts[0]
    -			info.MediaTypeSubType = parts[1]
    -
    -			if d.StreamSerializer != nil {
    -				info.StreamSerializer = &runtime.StreamSerializerInfo{
    -					Serializer:    d.StreamSerializer,
    -					EncodesAsText: d.EncodesAsText,
    -					Framer:        d.Framer,
    -				}
    -			}
    -			accepts = append(accepts, info)
    -			if mediaType == runtime.ContentTypeJSON {
    -				legacySerializer = d.Serializer
    -			}
    +		if _, ok := alreadyAccepted[d.MediaType]; ok {
    +			continue
    +		}
    +		alreadyAccepted[d.MediaType] = struct{}{}
    +
    +		acceptedSerializerShallowCopy := d
    +		if d.StreamSerializer != nil {
    +			cloned := *d.StreamSerializer
    +			acceptedSerializerShallowCopy.StreamSerializer = &cloned
    +		}
    +		accepts = append(accepts, acceptedSerializerShallowCopy)
    +
    +		if d.MediaType == runtime.ContentTypeJSON {
    +			legacySerializer = d.Serializer
     		}
     	}
     	if legacySerializer == nil {
    diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/types.go b/vendor/k8s.io/apimachinery/pkg/runtime/types.go
    index ce77c7910a90..ca7b7cc2d487 100644
    --- a/vendor/k8s.io/apimachinery/pkg/runtime/types.go
    +++ b/vendor/k8s.io/apimachinery/pkg/runtime/types.go
    @@ -43,9 +43,11 @@ type TypeMeta struct {
     }
     
     const (
    -	ContentTypeJSON     string = "application/json"
    -	ContentTypeYAML     string = "application/yaml"
    -	ContentTypeProtobuf string = "application/vnd.kubernetes.protobuf"
    +	ContentTypeJSON         string = "application/json"
    +	ContentTypeYAML         string = "application/yaml"
    +	ContentTypeProtobuf     string = "application/vnd.kubernetes.protobuf"
    +	ContentTypeCBOR         string = "application/cbor"     // RFC 8949
    +	ContentTypeCBORSequence string = "application/cbor-seq" // RFC 8742
     )
     
     // RawExtension is used to hold extensions in external versions.
    diff --git a/vendor/k8s.io/apimachinery/pkg/types/patch.go b/vendor/k8s.io/apimachinery/pkg/types/patch.go
    index fe8ecaaffa61..d338cf213d4a 100644
    --- a/vendor/k8s.io/apimachinery/pkg/types/patch.go
    +++ b/vendor/k8s.io/apimachinery/pkg/types/patch.go
    @@ -25,5 +25,7 @@ const (
     	JSONPatchType           PatchType = "application/json-patch+json"
     	MergePatchType          PatchType = "application/merge-patch+json"
     	StrategicMergePatchType PatchType = "application/strategic-merge-patch+json"
    -	ApplyPatchType          PatchType = "application/apply-patch+yaml"
    +	ApplyPatchType          PatchType = ApplyYAMLPatchType
    +	ApplyYAMLPatchType      PatchType = "application/apply-patch+yaml"
    +	ApplyCBORPatchType      PatchType = "application/apply-patch+cbor"
     )
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go b/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go
    index 9b3c9c8d5ac4..1ab8fd396ed3 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go
    @@ -147,7 +147,6 @@ func (r *jsonFrameReader) Read(data []byte) (int, error) {
     
     	// RawMessage#Unmarshal appends to data - we reset the slice down to 0 and will either see
     	// data written to data, or be larger than data and a different array.
    -	n := len(data)
     	m := json.RawMessage(data[:0])
     	if err := r.decoder.Decode(&m); err != nil {
     		return 0, err
    @@ -156,12 +155,19 @@ func (r *jsonFrameReader) Read(data []byte) (int, error) {
     	// If capacity of data is less than length of the message, decoder will allocate a new slice
     	// and set m to it, which means we need to copy the partial result back into data and preserve
     	// the remaining result for subsequent reads.
    -	if len(m) > n {
    -		//nolint:staticcheck // SA4006,SA4010 underlying array of data is modified here.
    -		data = append(data[0:0], m[:n]...)
    -		r.remaining = m[n:]
    -		return n, io.ErrShortBuffer
    +	if len(m) > cap(data) {
    +		copy(data, m)
    +		r.remaining = m[len(data):]
    +		return len(data), io.ErrShortBuffer
     	}
    +
    +	if len(m) > len(data) {
    +		// The bytes beyond len(data) were stored in data's underlying array, which we do
    +		// not own after this function returns.
    +		r.remaining = append([]byte(nil), m[len(data):]...)
    +		return len(data), io.ErrShortBuffer
    +	}
    +
     	return len(m), nil
     }
     
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go
    index 8f9ced93fb61..1f2877399fc1 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go
    @@ -15,7 +15,7 @@ limitations under the License.
     */
     
     // Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto
    +// source: k8s.io/apimachinery/pkg/util/intstr/generated.proto
     
     package intstr
     
    @@ -43,7 +43,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     func (m *IntOrString) Reset()      { *m = IntOrString{} }
     func (*IntOrString) ProtoMessage() {}
     func (*IntOrString) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_94e046ae3ce6121c, []int{0}
    +	return fileDescriptor_771bacc35a5ec189, []int{0}
     }
     func (m *IntOrString) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -73,30 +73,29 @@ func init() {
     }
     
     func init() {
    -	proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto", fileDescriptor_94e046ae3ce6121c)
    +	proto.RegisterFile("k8s.io/apimachinery/pkg/util/intstr/generated.proto", fileDescriptor_771bacc35a5ec189)
     }
     
    -var fileDescriptor_94e046ae3ce6121c = []byte{
    -	// 292 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x90, 0xb1, 0x4a, 0x03, 0x31,
    -	0x1c, 0xc6, 0x13, 0x5b, 0x8b, 0x9e, 0xe0, 0x50, 0x1c, 0x8a, 0x43, 0x7a, 0x58, 0x90, 0x5b, 0x4c,
    -	0x56, 0x71, 0xec, 0x56, 0x10, 0x84, 0x56, 0x1c, 0xdc, 0xee, 0xda, 0x98, 0x86, 0x6b, 0x93, 0x90,
    -	0xfb, 0x9f, 0x70, 0x5b, 0x1f, 0x41, 0x37, 0x47, 0x1f, 0xe7, 0xc6, 0x8e, 0x1d, 0xa4, 0x78, 0xf1,
    -	0x2d, 0x9c, 0xe4, 0x72, 0x07, 0x3a, 0x3a, 0x25, 0xdf, 0xf7, 0xfd, 0x7e, 0x19, 0x12, 0xdc, 0xa6,
    -	0xd7, 0x19, 0x95, 0x9a, 0xa5, 0x79, 0xc2, 0xad, 0xe2, 0xc0, 0x33, 0xf6, 0xcc, 0xd5, 0x42, 0x5b,
    -	0xd6, 0x0e, 0xb1, 0x91, 0xeb, 0x78, 0xbe, 0x94, 0x8a, 0xdb, 0x82, 0x99, 0x54, 0xb0, 0x1c, 0xe4,
    -	0x8a, 0x49, 0x05, 0x19, 0x58, 0x26, 0xb8, 0xe2, 0x36, 0x06, 0xbe, 0xa0, 0xc6, 0x6a, 0xd0, 0xfd,
    -	0x51, 0x23, 0xd1, 0xbf, 0x12, 0x35, 0xa9, 0xa0, 0xb5, 0x44, 0x1b, 0xe9, 0xfc, 0x4a, 0x48, 0x58,
    -	0xe6, 0x09, 0x9d, 0xeb, 0x35, 0x13, 0x5a, 0x68, 0xe6, 0xdd, 0x24, 0x7f, 0xf2, 0xc9, 0x07, 0x7f,
    -	0x6b, 0xde, 0xbc, 0x78, 0xc5, 0xc1, 0xc9, 0x44, 0xc1, 0x9d, 0x9d, 0x81, 0x95, 0x4a, 0xf4, 0xa3,
    -	0xa0, 0x0b, 0x85, 0xe1, 0x03, 0x1c, 0xe2, 0xa8, 0x33, 0x3e, 0x2b, 0xf7, 0x43, 0xe4, 0xf6, 0xc3,
    -	0xee, 0x7d, 0x61, 0xf8, 0x77, 0x7b, 0x4e, 0x3d, 0xd1, 0xbf, 0x0c, 0x7a, 0x52, 0xc1, 0x43, 0xbc,
    -	0x1a, 0x1c, 0x84, 0x38, 0x3a, 0x1c, 0x9f, 0xb6, 0x6c, 0x6f, 0xe2, 0xdb, 0x69, 0xbb, 0xd6, 0x5c,
    -	0x06, 0xb6, 0xe6, 0x3a, 0x21, 0x8e, 0x8e, 0x7f, 0xb9, 0x99, 0x6f, 0xa7, 0xed, 0x7a, 0x73, 0xf4,
    -	0xf6, 0x3e, 0x44, 0x9b, 0x8f, 0x10, 0x8d, 0x27, 0x65, 0x45, 0xd0, 0xb6, 0x22, 0x68, 0x57, 0x11,
    -	0xb4, 0x71, 0x04, 0x97, 0x8e, 0xe0, 0xad, 0x23, 0x78, 0xe7, 0x08, 0xfe, 0x74, 0x04, 0xbf, 0x7c,
    -	0x11, 0xf4, 0x38, 0xfa, 0xc7, 0x17, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0xdc, 0xc4, 0xf0, 0xa0,
    -	0x81, 0x01, 0x00, 0x00,
    +var fileDescriptor_771bacc35a5ec189 = []byte{
    +	// 277 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0xce, 0xb6, 0x28, 0xd6,
    +	0xcb, 0xcc, 0xd7, 0x4f, 0x2c, 0xc8, 0xcc, 0x4d, 0x4c, 0xce, 0xc8, 0xcc, 0x4b, 0x2d, 0xaa, 0xd4,
    +	0x2f, 0xc8, 0x4e, 0xd7, 0x2f, 0x2d, 0xc9, 0xcc, 0xd1, 0xcf, 0xcc, 0x2b, 0x29, 0x2e, 0x29, 0xd2,
    +	0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0x4a, 0x2c, 0x49, 0x4d, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17,
    +	0x52, 0x86, 0x68, 0xd2, 0x43, 0xd6, 0xa4, 0x57, 0x90, 0x9d, 0xae, 0x07, 0xd2, 0xa4, 0x07, 0xd1,
    +	0x24, 0xa5, 0x9b, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x9f, 0x9e, 0x9f,
    +	0x9e, 0xaf, 0x0f, 0xd6, 0x9b, 0x54, 0x9a, 0x06, 0xe6, 0x81, 0x39, 0x60, 0x16, 0xc4, 0x4c, 0xa5,
    +	0x89, 0x8c, 0x5c, 0xdc, 0x9e, 0x79, 0x25, 0xfe, 0x45, 0xc1, 0x25, 0x45, 0x99, 0x79, 0xe9, 0x42,
    +	0x1a, 0x5c, 0x2c, 0x25, 0x95, 0x05, 0xa9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0xcc, 0x4e, 0x22, 0x27,
    +	0xee, 0xc9, 0x33, 0x3c, 0xba, 0x27, 0xcf, 0x12, 0x52, 0x59, 0x90, 0xfa, 0x0b, 0x4a, 0x07, 0x81,
    +	0x55, 0x08, 0xa9, 0x71, 0xb1, 0x65, 0xe6, 0x95, 0x84, 0x25, 0xe6, 0x48, 0x30, 0x29, 0x30, 0x6a,
    +	0xb0, 0x3a, 0xf1, 0x41, 0xd5, 0xb2, 0x79, 0x82, 0x45, 0x83, 0xa0, 0xb2, 0x20, 0x75, 0xc5, 0x25,
    +	0x45, 0x20, 0x75, 0xcc, 0x0a, 0x8c, 0x1a, 0x9c, 0x08, 0x75, 0xc1, 0x60, 0xd1, 0x20, 0xa8, 0xac,
    +	0x15, 0xc7, 0x8c, 0x05, 0xf2, 0x0c, 0x0d, 0x77, 0x14, 0x18, 0x9c, 0x3c, 0x4f, 0x3c, 0x94, 0x63,
    +	0xb8, 0xf0, 0x50, 0x8e, 0xe1, 0xc6, 0x43, 0x39, 0x86, 0x86, 0x47, 0x72, 0x8c, 0x27, 0x1e, 0xc9,
    +	0x31, 0x5e, 0x78, 0x24, 0xc7, 0x78, 0xe3, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e,
    +	0xcb, 0x31, 0x44, 0x29, 0x13, 0x11, 0x84, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0xa1, 0x0b,
    +	0x1e, 0x68, 0x01, 0x00, 0x00,
     }
     
     func (m *IntOrString) Marshal() (dAtA []byte, err error) {
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go b/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go
    index f358c794d102..5fd2e16c842f 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go
    @@ -25,6 +25,7 @@ import (
     	"strconv"
     	"strings"
     
    +	cbor "k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct"
     	"k8s.io/klog/v2"
     )
     
    @@ -92,6 +93,20 @@ func (intstr *IntOrString) UnmarshalJSON(value []byte) error {
     	return json.Unmarshal(value, &intstr.IntVal)
     }
     
    +func (intstr *IntOrString) UnmarshalCBOR(value []byte) error {
    +	if err := cbor.Unmarshal(value, &intstr.StrVal); err == nil {
    +		intstr.Type = String
    +		return nil
    +	}
    +
    +	if err := cbor.Unmarshal(value, &intstr.IntVal); err != nil {
    +		return err
    +	}
    +
    +	intstr.Type = Int
    +	return nil
    +}
    +
     // String returns the string value, or the Itoa of the int value.
     func (intstr *IntOrString) String() string {
     	if intstr == nil {
    @@ -126,6 +141,17 @@ func (intstr IntOrString) MarshalJSON() ([]byte, error) {
     	}
     }
     
    +func (intstr IntOrString) MarshalCBOR() ([]byte, error) {
    +	switch intstr.Type {
    +	case Int:
    +		return cbor.Marshal(intstr.IntVal)
    +	case String:
    +		return cbor.Marshal(intstr.StrVal)
    +	default:
    +		return nil, fmt.Errorf("impossible IntOrString.Type")
    +	}
    +}
    +
     // OpenAPISchemaType is used by the kube-openapi generator when constructing
     // the OpenAPI spec of this type.
     //
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/managedfields/fieldmanager.go b/vendor/k8s.io/apimachinery/pkg/util/managedfields/fieldmanager.go
    index 978ffb3c3e62..de540c82ffbd 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/managedfields/fieldmanager.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/managedfields/fieldmanager.go
    @@ -19,11 +19,12 @@ package managedfields
     import (
     	"fmt"
     
    +	"sigs.k8s.io/structured-merge-diff/v4/fieldpath"
    +
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	"k8s.io/apimachinery/pkg/runtime"
     	"k8s.io/apimachinery/pkg/runtime/schema"
     	"k8s.io/apimachinery/pkg/util/managedfields/internal"
    -	"sigs.k8s.io/structured-merge-diff/v4/fieldpath"
     )
     
     // FieldManager updates the managed fields and merges applied
    @@ -32,7 +33,7 @@ type FieldManager = internal.FieldManager
     
     // NewDefaultFieldManager creates a new FieldManager that merges apply requests
     // and update managed fields for other types of requests.
    -func NewDefaultFieldManager(typeConverter TypeConverter, objectConverter runtime.ObjectConvertor, objectDefaulter runtime.ObjectDefaulter, objectCreater runtime.ObjectCreater, kind schema.GroupVersionKind, hub schema.GroupVersion, subresource string, resetFields map[fieldpath.APIVersion]*fieldpath.Set) (*FieldManager, error) {
    +func NewDefaultFieldManager(typeConverter TypeConverter, objectConverter runtime.ObjectConvertor, objectDefaulter runtime.ObjectDefaulter, objectCreater runtime.ObjectCreater, kind schema.GroupVersionKind, hub schema.GroupVersion, subresource string, resetFields map[fieldpath.APIVersion]fieldpath.Filter) (*FieldManager, error) {
     	f, err := internal.NewStructuredMergeManager(typeConverter, objectConverter, objectDefaulter, kind.GroupVersion(), hub, resetFields)
     	if err != nil {
     		return nil, fmt.Errorf("failed to create field manager: %v", err)
    @@ -43,7 +44,7 @@ func NewDefaultFieldManager(typeConverter TypeConverter, objectConverter runtime
     // NewDefaultCRDFieldManager creates a new FieldManager specifically for
     // CRDs. This allows for the possibility of fields which are not defined
     // in models, as well as having no models defined at all.
    -func NewDefaultCRDFieldManager(typeConverter TypeConverter, objectConverter runtime.ObjectConvertor, objectDefaulter runtime.ObjectDefaulter, objectCreater runtime.ObjectCreater, kind schema.GroupVersionKind, hub schema.GroupVersion, subresource string, resetFields map[fieldpath.APIVersion]*fieldpath.Set) (_ *FieldManager, err error) {
    +func NewDefaultCRDFieldManager(typeConverter TypeConverter, objectConverter runtime.ObjectConvertor, objectDefaulter runtime.ObjectDefaulter, objectCreater runtime.ObjectCreater, kind schema.GroupVersionKind, hub schema.GroupVersion, subresource string, resetFields map[fieldpath.APIVersion]fieldpath.Filter) (_ *FieldManager, err error) {
     	f, err := internal.NewCRDStructuredMergeManager(typeConverter, objectConverter, objectDefaulter, kind.GroupVersion(), hub, resetFields)
     	if err != nil {
     		return nil, fmt.Errorf("failed to create field manager: %v", err)
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/managedfields/internal/structuredmerge.go b/vendor/k8s.io/apimachinery/pkg/util/managedfields/internal/structuredmerge.go
    index 786ad991c23f..3fe36edc9d7e 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/managedfields/internal/structuredmerge.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/managedfields/internal/structuredmerge.go
    @@ -19,13 +19,14 @@ package internal
     import (
     	"fmt"
     
    +	"sigs.k8s.io/structured-merge-diff/v4/fieldpath"
    +	"sigs.k8s.io/structured-merge-diff/v4/merge"
    +	"sigs.k8s.io/structured-merge-diff/v4/typed"
    +
     	"k8s.io/apimachinery/pkg/api/errors"
     	"k8s.io/apimachinery/pkg/api/meta"
     	"k8s.io/apimachinery/pkg/runtime"
     	"k8s.io/apimachinery/pkg/runtime/schema"
    -	"sigs.k8s.io/structured-merge-diff/v4/fieldpath"
    -	"sigs.k8s.io/structured-merge-diff/v4/merge"
    -	"sigs.k8s.io/structured-merge-diff/v4/typed"
     )
     
     type structuredMergeManager struct {
    @@ -41,7 +42,7 @@ var _ Manager = &structuredMergeManager{}
     
     // NewStructuredMergeManager creates a new Manager that merges apply requests
     // and update managed fields for other types of requests.
    -func NewStructuredMergeManager(typeConverter TypeConverter, objectConverter runtime.ObjectConvertor, objectDefaulter runtime.ObjectDefaulter, gv schema.GroupVersion, hub schema.GroupVersion, resetFields map[fieldpath.APIVersion]*fieldpath.Set) (Manager, error) {
    +func NewStructuredMergeManager(typeConverter TypeConverter, objectConverter runtime.ObjectConvertor, objectDefaulter runtime.ObjectDefaulter, gv schema.GroupVersion, hub schema.GroupVersion, resetFields map[fieldpath.APIVersion]fieldpath.Filter) (Manager, error) {
     	if typeConverter == nil {
     		return nil, fmt.Errorf("typeconverter must not be nil")
     	}
    @@ -52,8 +53,8 @@ func NewStructuredMergeManager(typeConverter TypeConverter, objectConverter runt
     		groupVersion:    gv,
     		hubVersion:      hub,
     		updater: merge.Updater{
    -			Converter:     newVersionConverter(typeConverter, objectConverter, hub), // This is the converter provided to SMD from k8s
    -			IgnoredFields: resetFields,
    +			Converter:    newVersionConverter(typeConverter, objectConverter, hub), // This is the converter provided to SMD from k8s
    +			IgnoreFilter: resetFields,
     		},
     	}, nil
     }
    @@ -61,7 +62,7 @@ func NewStructuredMergeManager(typeConverter TypeConverter, objectConverter runt
     // NewCRDStructuredMergeManager creates a new Manager specifically for
     // CRDs. This allows for the possibility of fields which are not defined
     // in models, as well as having no models defined at all.
    -func NewCRDStructuredMergeManager(typeConverter TypeConverter, objectConverter runtime.ObjectConvertor, objectDefaulter runtime.ObjectDefaulter, gv schema.GroupVersion, hub schema.GroupVersion, resetFields map[fieldpath.APIVersion]*fieldpath.Set) (_ Manager, err error) {
    +func NewCRDStructuredMergeManager(typeConverter TypeConverter, objectConverter runtime.ObjectConvertor, objectDefaulter runtime.ObjectDefaulter, gv schema.GroupVersion, hub schema.GroupVersion, resetFields map[fieldpath.APIVersion]fieldpath.Filter) (_ Manager, err error) {
     	return &structuredMergeManager{
     		typeConverter:   typeConverter,
     		objectConverter: objectConverter,
    @@ -69,8 +70,8 @@ func NewCRDStructuredMergeManager(typeConverter TypeConverter, objectConverter r
     		groupVersion:    gv,
     		hubVersion:      hub,
     		updater: merge.Updater{
    -			Converter:     newCRDVersionConverter(typeConverter, objectConverter, hub),
    -			IgnoredFields: resetFields,
    +			Converter:    newCRDVersionConverter(typeConverter, objectConverter, hub),
    +			IgnoreFilter: resetFields,
     		},
     	}, nil
     }
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/managedfields/node.yaml b/vendor/k8s.io/apimachinery/pkg/util/managedfields/node.yaml
    index 66e849f23fb9..a7f2d54fdf70 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/managedfields/node.yaml
    +++ b/vendor/k8s.io/apimachinery/pkg/util/managedfields/node.yaml
    @@ -120,7 +120,7 @@ status:
         type: PIDPressure
       - lastHeartbeatTime: "2019-09-20T19:32:50Z"
         lastTransitionTime: "2019-07-09T16:17:49Z"
    -    message: kubelet is posting ready status. AppArmor enabled
    +    message: kubelet is posting ready status
         reason: KubeletReady
         status: "True"
         type: Ready
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go b/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go
    index 3674914f7018..df374949dd5d 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go
    @@ -17,6 +17,7 @@ limitations under the License.
     package runtime
     
     import (
    +	"context"
     	"fmt"
     	"net/http"
     	"runtime"
    @@ -35,7 +36,7 @@ var (
     )
     
     // PanicHandlers is a list of functions which will be invoked when a panic happens.
    -var PanicHandlers = []func(interface{}){logPanic}
    +var PanicHandlers = []func(context.Context, interface{}){logPanic}
     
     // HandleCrash simply catches a crash and logs an error. Meant to be called via
     // defer.  Additional context-specific handlers can be provided, and will be
    @@ -43,23 +44,54 @@ var PanicHandlers = []func(interface{}){logPanic}
     // handlers and logging the panic message.
     //
     // E.g., you can provide one or more additional handlers for something like shutting down go routines gracefully.
    +//
    +// Contextual logging: HandleCrashWithContext should be used instead of HandleCrash in code which supports contextual logging.
     func HandleCrash(additionalHandlers ...func(interface{})) {
     	if r := recover(); r != nil {
    -		for _, fn := range PanicHandlers {
    -			fn(r)
    -		}
    -		for _, fn := range additionalHandlers {
    -			fn(r)
    -		}
    -		if ReallyCrash {
    -			// Actually proceed to panic.
    -			panic(r)
    +		additionalHandlersWithContext := make([]func(context.Context, interface{}), len(additionalHandlers))
    +		for i, handler := range additionalHandlers {
    +			handler := handler // capture loop variable
    +			additionalHandlersWithContext[i] = func(_ context.Context, r interface{}) {
    +				handler(r)
    +			}
     		}
    +
    +		handleCrash(context.Background(), r, additionalHandlersWithContext...)
    +	}
    +}
    +
    +// HandleCrashWithContext simply catches a crash and logs an error. Meant to be called via
    +// defer.  Additional context-specific handlers can be provided, and will be
    +// called in case of panic.  HandleCrash actually crashes, after calling the
    +// handlers and logging the panic message.
    +//
    +// E.g., you can provide one or more additional handlers for something like shutting down go routines gracefully.
    +//
    +// The context is used to determine how to log.
    +func HandleCrashWithContext(ctx context.Context, additionalHandlers ...func(context.Context, interface{})) {
    +	if r := recover(); r != nil {
    +		handleCrash(ctx, r, additionalHandlers...)
    +	}
    +}
    +
    +// handleCrash is the common implementation of HandleCrash and HandleCrash.
    +// Having those call a common implementation ensures that the stack depth
    +// is the same regardless through which path the handlers get invoked.
    +func handleCrash(ctx context.Context, r any, additionalHandlers ...func(context.Context, interface{})) {
    +	for _, fn := range PanicHandlers {
    +		fn(ctx, r)
    +	}
    +	for _, fn := range additionalHandlers {
    +		fn(ctx, r)
    +	}
    +	if ReallyCrash {
    +		// Actually proceed to panic.
    +		panic(r)
     	}
     }
     
     // logPanic logs the caller tree when a panic occurs (except in the special case of http.ErrAbortHandler).
    -func logPanic(r interface{}) {
    +func logPanic(ctx context.Context, r interface{}) {
     	if r == http.ErrAbortHandler {
     		// honor the http.ErrAbortHandler sentinel panic value:
     		//   ErrAbortHandler is a sentinel panic value to abort a handler.
    @@ -73,10 +105,20 @@ func logPanic(r interface{}) {
     	const size = 64 << 10
     	stacktrace := make([]byte, size)
     	stacktrace = stacktrace[:runtime.Stack(stacktrace, false)]
    +
    +	// We don't really know how many call frames to skip because the Go
    +	// panic handler is between us and the code where the panic occurred.
    +	// If it's one function (as in Go 1.21), then skipping four levels
    +	// gets us to the function which called the `defer HandleCrashWithontext(...)`.
    +	logger := klog.FromContext(ctx).WithCallDepth(4)
    +
    +	// For backwards compatibility, conversion to string
    +	// is handled here instead of defering to the logging
    +	// backend.
     	if _, ok := r.(string); ok {
    -		klog.Errorf("Observed a panic: %s\n%s", r, stacktrace)
    +		logger.Error(nil, "Observed a panic", "panic", r, "stacktrace", string(stacktrace))
     	} else {
    -		klog.Errorf("Observed a panic: %#v (%v)\n%s", r, r, stacktrace)
    +		logger.Error(nil, "Observed a panic", "panic", fmt.Sprintf("%v", r), "panicGoValue", fmt.Sprintf("%#v", r), "stacktrace", string(stacktrace))
     	}
     }
     
    @@ -84,35 +126,76 @@ func logPanic(r interface{}) {
     // error occurs.
     // TODO(lavalamp): for testability, this and the below HandleError function
     // should be packaged up into a testable and reusable object.
    -var ErrorHandlers = []func(error){
    +var ErrorHandlers = []ErrorHandler{
     	logError,
    -	(&rudimentaryErrorBackoff{
    -		lastErrorTime: time.Now(),
    -		// 1ms was the number folks were able to stomach as a global rate limit.
    -		// If you need to log errors more than 1000 times a second you
    -		// should probably consider fixing your code instead. :)
    -		minPeriod: time.Millisecond,
    -	}).OnError,
    +	func(_ context.Context, _ error, _ string, _ ...interface{}) {
    +		(&rudimentaryErrorBackoff{
    +			lastErrorTime: time.Now(),
    +			// 1ms was the number folks were able to stomach as a global rate limit.
    +			// If you need to log errors more than 1000 times a second you
    +			// should probably consider fixing your code instead. :)
    +			minPeriod: time.Millisecond,
    +		}).OnError()
    +	},
     }
     
    +type ErrorHandler func(ctx context.Context, err error, msg string, keysAndValues ...interface{})
    +
     // HandlerError is a method to invoke when a non-user facing piece of code cannot
     // return an error and needs to indicate it has been ignored. Invoking this method
     // is preferable to logging the error - the default behavior is to log but the
     // errors may be sent to a remote server for analysis.
    +//
    +// Contextual logging: HandleErrorWithContext should be used instead of HandleError in code which supports contextual logging.
     func HandleError(err error) {
     	// this is sometimes called with a nil error.  We probably shouldn't fail and should do nothing instead
     	if err == nil {
     		return
     	}
     
    +	handleError(context.Background(), err, "Unhandled Error")
    +}
    +
    +// HandlerErrorWithContext is a method to invoke when a non-user facing piece of code cannot
    +// return an error and needs to indicate it has been ignored. Invoking this method
    +// is preferable to logging the error - the default behavior is to log but the
    +// errors may be sent to a remote server for analysis. The context is used to
    +// determine how to log the error.
    +//
    +// If contextual logging is enabled, the default log output is equivalent to
    +//
    +//	logr.FromContext(ctx).WithName("UnhandledError").Error(err, msg, keysAndValues...)
    +//
    +// Without contextual logging, it is equivalent to:
    +//
    +//	klog.ErrorS(err, msg, keysAndValues...)
    +//
    +// In contrast to HandleError, passing nil for the error is still going to
    +// trigger a log entry. Don't construct a new error or wrap an error
    +// with fmt.Errorf. Instead, add additional information via the mssage
    +// and key/value pairs.
    +//
    +// This variant should be used instead of HandleError because it supports
    +// structured, contextual logging.
    +func HandleErrorWithContext(ctx context.Context, err error, msg string, keysAndValues ...interface{}) {
    +	handleError(ctx, err, msg, keysAndValues...)
    +}
    +
    +// handleError is the common implementation of HandleError and HandleErrorWithContext.
    +// Using this common implementation ensures that the stack depth
    +// is the same regardless through which path the handlers get invoked.
    +func handleError(ctx context.Context, err error, msg string, keysAndValues ...interface{}) {
     	for _, fn := range ErrorHandlers {
    -		fn(err)
    +		fn(ctx, err, msg, keysAndValues...)
     	}
     }
     
    -// logError prints an error with the call stack of the location it was reported
    -func logError(err error) {
    -	klog.ErrorDepth(2, err)
    +// logError prints an error with the call stack of the location it was reported.
    +// It expects to be called as  -> HandleError[WithContext] -> handleError -> logError.
    +func logError(ctx context.Context, err error, msg string, keysAndValues ...interface{}) {
    +	logger := klog.FromContext(ctx).WithCallDepth(3)
    +	logger = klog.LoggerWithName(logger, "UnhandledError")
    +	logger.Error(err, msg, keysAndValues...) //nolint:logcheck // logcheck complains about unknown key/value pairs.
     }
     
     type rudimentaryErrorBackoff struct {
    @@ -125,7 +208,7 @@ type rudimentaryErrorBackoff struct {
     
     // OnError will block if it is called more often than the embedded period time.
     // This will prevent overly tight hot error loops.
    -func (r *rudimentaryErrorBackoff) OnError(error) {
    +func (r *rudimentaryErrorBackoff) OnError() {
     	now := time.Now() // start the timer before acquiring the lock
     	r.lastErrorTimeLock.Lock()
     	d := now.Sub(r.lastErrorTime)
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go b/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go
    index 194883390cf2..fd281bdb88c1 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go
    @@ -16,4 +16,4 @@ limitations under the License.
     
     // Package sets has generic set and specified sets. Generic set will
     // replace specified ones over time. And specific ones are deprecated.
    -package sets
    +package sets // import "k8s.io/apimachinery/pkg/util/sets"
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/ordered.go b/vendor/k8s.io/apimachinery/pkg/util/sets/ordered.go
    deleted file mode 100644
    index 443dac62eb35..000000000000
    --- a/vendor/k8s.io/apimachinery/pkg/util/sets/ordered.go
    +++ /dev/null
    @@ -1,53 +0,0 @@
    -/*
    -Copyright 2022 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -package sets
    -
    -// ordered is a constraint that permits any ordered type: any type
    -// that supports the operators < <= >= >.
    -// If future releases of Go add new ordered types,
    -// this constraint will be modified to include them.
    -type ordered interface {
    -	integer | float | ~string
    -}
    -
    -// integer is a constraint that permits any integer type.
    -// If future releases of Go add new predeclared integer types,
    -// this constraint will be modified to include them.
    -type integer interface {
    -	signed | unsigned
    -}
    -
    -// float is a constraint that permits any floating-point type.
    -// If future releases of Go add new predeclared floating-point types,
    -// this constraint will be modified to include them.
    -type float interface {
    -	~float32 | ~float64
    -}
    -
    -// signed is a constraint that permits any signed integer type.
    -// If future releases of Go add new predeclared signed integer types,
    -// this constraint will be modified to include them.
    -type signed interface {
    -	~int | ~int8 | ~int16 | ~int32 | ~int64
    -}
    -
    -// unsigned is a constraint that permits any unsigned integer type.
    -// If future releases of Go add new predeclared unsigned integer types,
    -// this constraint will be modified to include them.
    -type unsigned interface {
    -	~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr
    -}
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/set.go b/vendor/k8s.io/apimachinery/pkg/util/sets/set.go
    index d50526f4262c..cd961c8c5939 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/sets/set.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/set.go
    @@ -17,6 +17,7 @@ limitations under the License.
     package sets
     
     import (
    +	"cmp"
     	"sort"
     )
     
    @@ -37,7 +38,7 @@ func New[T comparable](items ...T) Set[T] {
     // KeySet creates a Set from a keys of a map[comparable](? extends interface{}).
     // If the value passed in is not actually a map, this will panic.
     func KeySet[T comparable, V any](theMap map[T]V) Set[T] {
    -	ret := Set[T]{}
    +	ret := make(Set[T], len(theMap))
     	for keyValue := range theMap {
     		ret.Insert(keyValue)
     	}
    @@ -67,14 +68,8 @@ func (s Set[T]) Delete(items ...T) Set[T] {
     // Clear empties the set.
     // It is preferable to replace the set with a newly constructed set,
     // but not all callers can do that (when there are other references to the map).
    -// In some cases the set *won't* be fully cleared, e.g. a Set[float32] containing NaN
    -// can't be cleared because NaN can't be removed.
    -// For sets containing items of a type that is reflexive for ==,
    -// this is optimized to a single call to runtime.mapclear().
     func (s Set[T]) Clear() Set[T] {
    -	for key := range s {
    -		delete(s, key)
    -	}
    +	clear(s)
     	return s
     }
     
    @@ -193,7 +188,7 @@ func (s1 Set[T]) Equal(s2 Set[T]) bool {
     	return len(s1) == len(s2) && s1.IsSuperset(s2)
     }
     
    -type sortableSliceOfGeneric[T ordered] []T
    +type sortableSliceOfGeneric[T cmp.Ordered] []T
     
     func (g sortableSliceOfGeneric[T]) Len() int           { return len(g) }
     func (g sortableSliceOfGeneric[T]) Less(i, j int) bool { return less[T](g[i], g[j]) }
    @@ -203,7 +198,7 @@ func (g sortableSliceOfGeneric[T]) Swap(i, j int)      { g[i], g[j] = g[j], g[i]
     //
     // This is a separate function and not a method because not all types supported
     // by Generic are ordered and only those can be sorted.
    -func List[T ordered](s Set[T]) []T {
    +func List[T cmp.Ordered](s Set[T]) []T {
     	res := make(sortableSliceOfGeneric[T], 0, len(s))
     	for key := range s {
     		res = append(res, key)
    @@ -236,6 +231,6 @@ func (s Set[T]) Len() int {
     	return len(s)
     }
     
    -func less[T ordered](lhs, rhs T) bool {
    +func less[T cmp.Ordered](lhs, rhs T) bool {
     	return lhs < rhs
     }
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go
    index 920c113bbd73..6825a808e67d 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go
    @@ -1361,6 +1361,10 @@ func mergeMap(original, patch map[string]interface{}, schema LookupPatchMeta, me
     		// original. Otherwise, check if we want to preserve it or skip it.
     		// Preserving the null value is useful when we want to send an explicit
     		// delete to the API server.
    +		// In some cases, this may lead to inconsistent behavior with create.
    +		// ref: https://github.com/kubernetes/kubernetes/issues/123304
    +		// To avoid breaking compatibility,
    +		// we made corresponding changes on the client side to ensure that the create and patch behaviors are idempotent.
     		if patchV == nil {
     			delete(original, k)
     			if mergeOptions.IgnoreUnmatchedNulls {
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go b/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go
    index bc387d011634..f1634bc0df80 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go
    @@ -220,26 +220,24 @@ func Forbidden(field *Path, detail string) *Error {
     	return &Error{ErrorTypeForbidden, field.String(), "", detail}
     }
     
    -// TooLong returns a *Error indicating "too long".  This is used to
    -// report that the given value is too long.  This is similar to
    -// Invalid, but the returned error will not include the too-long
    -// value.
    +// TooLong returns a *Error indicating "too long".  This is used to report that
    +// the given value is too long.  This is similar to Invalid, but the returned
    +// error will not include the too-long value. If maxLength is negative, it will
    +// be included in the message.  The value argument is not used.
     func TooLong(field *Path, value interface{}, maxLength int) *Error {
    -	return &Error{ErrorTypeTooLong, field.String(), value, fmt.Sprintf("must have at most %d bytes", maxLength)}
    -}
    -
    -// TooLongMaxLength returns a *Error indicating "too long".  This is used to
    -// report that the given value is too long.  This is similar to
    -// Invalid, but the returned error will not include the too-long
    -// value. If maxLength is negative, no max length will be included in the message.
    -func TooLongMaxLength(field *Path, value interface{}, maxLength int) *Error {
     	var msg string
     	if maxLength >= 0 {
    -		msg = fmt.Sprintf("may not be longer than %d", maxLength)
    +		msg = fmt.Sprintf("may not be more than %d bytes", maxLength)
     	} else {
     		msg = "value is too long"
     	}
    -	return &Error{ErrorTypeTooLong, field.String(), value, msg}
    +	return &Error{ErrorTypeTooLong, field.String(), "", msg}
    +}
    +
    +// TooLongMaxLength returns a *Error indicating "too long".
    +// Deprecated: Use TooLong instead.
    +func TooLongMaxLength(field *Path, value interface{}, maxLength int) *Error {
    +	return TooLong(field, "", maxLength)
     }
     
     // TooMany returns a *Error indicating "too many". This is used to
    diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/validation.go b/vendor/k8s.io/apimachinery/pkg/util/validation/validation.go
    index 0b8a6cb354ab..9bc393cf586c 100644
    --- a/vendor/k8s.io/apimachinery/pkg/util/validation/validation.go
    +++ b/vendor/k8s.io/apimachinery/pkg/util/validation/validation.go
    @@ -19,10 +19,9 @@ package validation
     import (
     	"fmt"
     	"math"
    -	"net"
     	"regexp"
    -	"strconv"
     	"strings"
    +	"unicode"
     
     	"k8s.io/apimachinery/pkg/util/validation/field"
     	netutils "k8s.io/utils/net"
    @@ -176,6 +175,8 @@ func IsValidLabelValue(value string) []string {
     }
     
     const dns1123LabelFmt string = "[a-z0-9]([-a-z0-9]*[a-z0-9])?"
    +const dns1123LabelFmtWithUnderscore string = "_?[a-z0-9]([-_a-z0-9]*[a-z0-9])?"
    +
     const dns1123LabelErrMsg string = "a lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character"
     
     // DNS1123LabelMaxLength is a label's max length in DNS (RFC 1123)
    @@ -205,10 +206,14 @@ func IsDNS1123Label(value string) []string {
     const dns1123SubdomainFmt string = dns1123LabelFmt + "(\\." + dns1123LabelFmt + ")*"
     const dns1123SubdomainErrorMsg string = "a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character"
     
    +const dns1123SubdomainFmtWithUnderscore string = dns1123LabelFmtWithUnderscore + "(\\." + dns1123LabelFmtWithUnderscore + ")*"
    +const dns1123SubdomainErrorMsgFG string = "a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '_', '-' or '.', and must start and end with an alphanumeric character"
    +
     // DNS1123SubdomainMaxLength is a subdomain's max length in DNS (RFC 1123)
     const DNS1123SubdomainMaxLength int = 253
     
     var dns1123SubdomainRegexp = regexp.MustCompile("^" + dns1123SubdomainFmt + "$")
    +var dns1123SubdomainRegexpWithUnderscore = regexp.MustCompile("^" + dns1123SubdomainFmtWithUnderscore + "$")
     
     // IsDNS1123Subdomain tests for a string that conforms to the definition of a
     // subdomain in DNS (RFC 1123).
    @@ -223,6 +228,19 @@ func IsDNS1123Subdomain(value string) []string {
     	return errs
     }
     
    +// IsDNS1123SubdomainWithUnderscore tests for a string that conforms to the definition of a
    +// subdomain in DNS (RFC 1123), but allows the use of an underscore in the string
    +func IsDNS1123SubdomainWithUnderscore(value string) []string {
    +	var errs []string
    +	if len(value) > DNS1123SubdomainMaxLength {
    +		errs = append(errs, MaxLenError(DNS1123SubdomainMaxLength))
    +	}
    +	if !dns1123SubdomainRegexpWithUnderscore.MatchString(value) {
    +		errs = append(errs, RegexError(dns1123SubdomainErrorMsgFG, dns1123SubdomainFmt, "example.com"))
    +	}
    +	return errs
    +}
    +
     const dns1035LabelFmt string = "[a-z]([-a-z0-9]*[a-z0-9])?"
     const dns1035LabelErrMsg string = "a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character"
     
    @@ -352,11 +370,12 @@ func IsValidPortName(port string) []string {
     }
     
     // IsValidIP tests that the argument is a valid IP address.
    -func IsValidIP(value string) []string {
    +func IsValidIP(fldPath *field.Path, value string) field.ErrorList {
    +	var allErrors field.ErrorList
     	if netutils.ParseIPSloppy(value) == nil {
    -		return []string{"must be a valid IP address, (e.g. 10.9.8.7 or 2001:db8::ffff)"}
    +		allErrors = append(allErrors, field.Invalid(fldPath, value, "must be a valid IP address, (e.g. 10.9.8.7 or 2001:db8::ffff)"))
     	}
    -	return nil
    +	return allErrors
     }
     
     // IsValidIPv4Address tests that the argument is a valid IPv4 address.
    @@ -379,6 +398,16 @@ func IsValidIPv6Address(fldPath *field.Path, value string) field.ErrorList {
     	return allErrors
     }
     
    +// IsValidCIDR tests that the argument is a valid CIDR value.
    +func IsValidCIDR(fldPath *field.Path, value string) field.ErrorList {
    +	var allErrors field.ErrorList
    +	_, _, err := netutils.ParseCIDRSloppy(value)
    +	if err != nil {
    +		allErrors = append(allErrors, field.Invalid(fldPath, value, "must be a valid CIDR value, (e.g. 10.9.8.0/24 or 2001:db8::/64)"))
    +	}
    +	return allErrors
    +}
    +
     const percentFmt string = "[0-9]+%"
     const percentErrMsg string = "a valid percent string must be a numeric string followed by an ending '%'"
     
    @@ -409,6 +438,9 @@ func IsHTTPHeaderName(value string) []string {
     const envVarNameFmt = "[-._a-zA-Z][-._a-zA-Z0-9]*"
     const envVarNameFmtErrMsg string = "a valid environment variable name must consist of alphabetic characters, digits, '_', '-', or '.', and must not start with a digit"
     
    +// TODO(hirazawaui): Rename this when the RelaxedEnvironmentVariableValidation gate is removed.
    +const relaxedEnvVarNameFmtErrMsg string = "a valid environment variable name must consist only of printable ASCII characters other than '='"
    +
     var envVarNameRegexp = regexp.MustCompile("^" + envVarNameFmt + "$")
     
     // IsEnvVarName tests if a string is a valid environment variable name.
    @@ -422,6 +454,24 @@ func IsEnvVarName(value string) []string {
     	return errs
     }
     
    +// IsRelaxedEnvVarName tests if a string is a valid environment variable name.
    +func IsRelaxedEnvVarName(value string) []string {
    +	var errs []string
    +
    +	if len(value) == 0 {
    +		errs = append(errs, "environment variable name "+EmptyError())
    +	}
    +
    +	for _, r := range value {
    +		if r > unicode.MaxASCII || !unicode.IsPrint(r) || r == '=' {
    +			errs = append(errs, relaxedEnvVarNameFmtErrMsg)
    +			break
    +		}
    +	}
    +
    +	return errs
    +}
    +
     const configMapKeyFmt = `[-._a-zA-Z0-9]+`
     const configMapKeyErrMsg string = "a valid config key must consist of alphanumeric characters, '-', '_' or '.'"
     
    @@ -493,18 +543,3 @@ func hasChDirPrefix(value string) []string {
     	}
     	return errs
     }
    -
    -// IsValidSocketAddr checks that string represents a valid socket address
    -// as defined in RFC 789. (e.g 0.0.0.0:10254 or [::]:10254))
    -func IsValidSocketAddr(value string) []string {
    -	var errs []string
    -	ip, port, err := net.SplitHostPort(value)
    -	if err != nil {
    -		errs = append(errs, "must be a valid socket address format, (e.g. 0.0.0.0:10254 or [::]:10254)")
    -		return errs
    -	}
    -	portInt, _ := strconv.Atoi(port)
    -	errs = append(errs, IsValidPortNum(portInt)...)
    -	errs = append(errs, IsValidIP(ip)...)
    -	return errs
    -}
    diff --git a/vendor/k8s.io/apimachinery/pkg/watch/watch.go b/vendor/k8s.io/apimachinery/pkg/watch/watch.go
    index b6c7bbfa8faf..ce37fd8c1834 100644
    --- a/vendor/k8s.io/apimachinery/pkg/watch/watch.go
    +++ b/vendor/k8s.io/apimachinery/pkg/watch/watch.go
    @@ -27,13 +27,25 @@ import (
     
     // Interface can be implemented by anything that knows how to watch and report changes.
     type Interface interface {
    -	// Stop stops watching. Will close the channel returned by ResultChan(). Releases
    -	// any resources used by the watch.
    +	// Stop tells the producer that the consumer is done watching, so the
    +	// producer should stop sending events and close the result channel. The
    +	// consumer should keep watching for events until the result channel is
    +	// closed.
    +	//
    +	// Because some implementations may create channels when constructed, Stop
    +	// must always be called, even if the consumer has not yet called
    +	// ResultChan().
    +	//
    +	// Only the consumer should call Stop(), not the producer. If the producer
    +	// errors and needs to stop the watch prematurely, it should instead send
    +	// an error event and close the result channel.
     	Stop()
     
    -	// ResultChan returns a chan which will receive all the events. If an error occurs
    -	// or Stop() is called, the implementation will close this channel and
    -	// release any resources used by the watch.
    +	// ResultChan returns a channel which will receive events from the event
    +	// producer. If an error occurs or Stop() is called, the producer must
    +	// close this channel and release any resources used by the watch.
    +	// Closing the result channel tells the consumer that no more events will be
    +	// sent.
     	ResultChan() <-chan Event
     }
     
    @@ -322,3 +334,21 @@ func (pw *ProxyWatcher) ResultChan() <-chan Event {
     func (pw *ProxyWatcher) StopChan() <-chan struct{} {
     	return pw.stopCh
     }
    +
    +// MockWatcher implements watch.Interface with mockable functions.
    +type MockWatcher struct {
    +	StopFunc       func()
    +	ResultChanFunc func() <-chan Event
    +}
    +
    +var _ Interface = &MockWatcher{}
    +
    +// Stop calls StopFunc
    +func (mw MockWatcher) Stop() {
    +	mw.StopFunc()
    +}
    +
    +// ResultChan calls ResultChanFunc
    +func (mw MockWatcher) ResultChan() <-chan Event {
    +	return mw.ResultChanFunc()
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/auditannotation.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/auditannotation.go
    new file mode 100644
    index 000000000000..0d50d44ac2ce
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/auditannotation.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// AuditAnnotationApplyConfiguration represents a declarative configuration of the AuditAnnotation type for use
    +// with apply.
    +type AuditAnnotationApplyConfiguration struct {
    +	Key             *string `json:"key,omitempty"`
    +	ValueExpression *string `json:"valueExpression,omitempty"`
    +}
    +
    +// AuditAnnotationApplyConfiguration constructs a declarative configuration of the AuditAnnotation type for use with
    +// apply.
    +func AuditAnnotation() *AuditAnnotationApplyConfiguration {
    +	return &AuditAnnotationApplyConfiguration{}
    +}
    +
    +// WithKey sets the Key field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Key field is set to the value of the last call.
    +func (b *AuditAnnotationApplyConfiguration) WithKey(value string) *AuditAnnotationApplyConfiguration {
    +	b.Key = &value
    +	return b
    +}
    +
    +// WithValueExpression sets the ValueExpression field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ValueExpression field is set to the value of the last call.
    +func (b *AuditAnnotationApplyConfiguration) WithValueExpression(value string) *AuditAnnotationApplyConfiguration {
    +	b.ValueExpression = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/expressionwarning.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/expressionwarning.go
    new file mode 100644
    index 000000000000..1f890bcfcb68
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/expressionwarning.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// ExpressionWarningApplyConfiguration represents a declarative configuration of the ExpressionWarning type for use
    +// with apply.
    +type ExpressionWarningApplyConfiguration struct {
    +	FieldRef *string `json:"fieldRef,omitempty"`
    +	Warning  *string `json:"warning,omitempty"`
    +}
    +
    +// ExpressionWarningApplyConfiguration constructs a declarative configuration of the ExpressionWarning type for use with
    +// apply.
    +func ExpressionWarning() *ExpressionWarningApplyConfiguration {
    +	return &ExpressionWarningApplyConfiguration{}
    +}
    +
    +// WithFieldRef sets the FieldRef field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the FieldRef field is set to the value of the last call.
    +func (b *ExpressionWarningApplyConfiguration) WithFieldRef(value string) *ExpressionWarningApplyConfiguration {
    +	b.FieldRef = &value
    +	return b
    +}
    +
    +// WithWarning sets the Warning field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Warning field is set to the value of the last call.
    +func (b *ExpressionWarningApplyConfiguration) WithWarning(value string) *ExpressionWarningApplyConfiguration {
    +	b.Warning = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/matchcondition.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/matchcondition.go
    index ea1dc377b972..d8a816f1e2fa 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/matchcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/matchcondition.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// MatchConditionApplyConfiguration represents an declarative configuration of the MatchCondition type for use
    +// MatchConditionApplyConfiguration represents a declarative configuration of the MatchCondition type for use
     // with apply.
     type MatchConditionApplyConfiguration struct {
     	Name       *string `json:"name,omitempty"`
     	Expression *string `json:"expression,omitempty"`
     }
     
    -// MatchConditionApplyConfiguration constructs an declarative configuration of the MatchCondition type for use with
    +// MatchConditionApplyConfiguration constructs a declarative configuration of the MatchCondition type for use with
     // apply.
     func MatchCondition() *MatchConditionApplyConfiguration {
     	return &MatchConditionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/matchresources.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/matchresources.go
    new file mode 100644
    index 000000000000..e840fe9ebb1f
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/matchresources.go
    @@ -0,0 +1,90 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// MatchResourcesApplyConfiguration represents a declarative configuration of the MatchResources type for use
    +// with apply.
    +type MatchResourcesApplyConfiguration struct {
    +	NamespaceSelector    *metav1.LabelSelectorApplyConfiguration     `json:"namespaceSelector,omitempty"`
    +	ObjectSelector       *metav1.LabelSelectorApplyConfiguration     `json:"objectSelector,omitempty"`
    +	ResourceRules        []NamedRuleWithOperationsApplyConfiguration `json:"resourceRules,omitempty"`
    +	ExcludeResourceRules []NamedRuleWithOperationsApplyConfiguration `json:"excludeResourceRules,omitempty"`
    +	MatchPolicy          *admissionregistrationv1.MatchPolicyType    `json:"matchPolicy,omitempty"`
    +}
    +
    +// MatchResourcesApplyConfiguration constructs a declarative configuration of the MatchResources type for use with
    +// apply.
    +func MatchResources() *MatchResourcesApplyConfiguration {
    +	return &MatchResourcesApplyConfiguration{}
    +}
    +
    +// WithNamespaceSelector sets the NamespaceSelector field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the NamespaceSelector field is set to the value of the last call.
    +func (b *MatchResourcesApplyConfiguration) WithNamespaceSelector(value *metav1.LabelSelectorApplyConfiguration) *MatchResourcesApplyConfiguration {
    +	b.NamespaceSelector = value
    +	return b
    +}
    +
    +// WithObjectSelector sets the ObjectSelector field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ObjectSelector field is set to the value of the last call.
    +func (b *MatchResourcesApplyConfiguration) WithObjectSelector(value *metav1.LabelSelectorApplyConfiguration) *MatchResourcesApplyConfiguration {
    +	b.ObjectSelector = value
    +	return b
    +}
    +
    +// WithResourceRules adds the given value to the ResourceRules field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the ResourceRules field.
    +func (b *MatchResourcesApplyConfiguration) WithResourceRules(values ...*NamedRuleWithOperationsApplyConfiguration) *MatchResourcesApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithResourceRules")
    +		}
    +		b.ResourceRules = append(b.ResourceRules, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithExcludeResourceRules adds the given value to the ExcludeResourceRules field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the ExcludeResourceRules field.
    +func (b *MatchResourcesApplyConfiguration) WithExcludeResourceRules(values ...*NamedRuleWithOperationsApplyConfiguration) *MatchResourcesApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithExcludeResourceRules")
    +		}
    +		b.ExcludeResourceRules = append(b.ExcludeResourceRules, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithMatchPolicy sets the MatchPolicy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the MatchPolicy field is set to the value of the last call.
    +func (b *MatchResourcesApplyConfiguration) WithMatchPolicy(value admissionregistrationv1.MatchPolicyType) *MatchResourcesApplyConfiguration {
    +	b.MatchPolicy = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/mutatingwebhook.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/mutatingwebhook.go
    index faff51a04156..cd8096f9020c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/mutatingwebhook.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/mutatingwebhook.go
    @@ -23,7 +23,7 @@ import (
     	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// MutatingWebhookApplyConfiguration represents an declarative configuration of the MutatingWebhook type for use
    +// MutatingWebhookApplyConfiguration represents a declarative configuration of the MutatingWebhook type for use
     // with apply.
     type MutatingWebhookApplyConfiguration struct {
     	Name                    *string                                         `json:"name,omitempty"`
    @@ -40,7 +40,7 @@ type MutatingWebhookApplyConfiguration struct {
     	MatchConditions         []MatchConditionApplyConfiguration              `json:"matchConditions,omitempty"`
     }
     
    -// MutatingWebhookApplyConfiguration constructs an declarative configuration of the MutatingWebhook type for use with
    +// MutatingWebhookApplyConfiguration constructs a declarative configuration of the MutatingWebhook type for use with
     // apply.
     func MutatingWebhook() *MutatingWebhookApplyConfiguration {
     	return &MutatingWebhookApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/mutatingwebhookconfiguration.go
    index 61c8f667d20d..4267f5fbfa48 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/mutatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/mutatingwebhookconfiguration.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apiadmissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// MutatingWebhookConfigurationApplyConfiguration represents an declarative configuration of the MutatingWebhookConfiguration type for use
    +// MutatingWebhookConfigurationApplyConfiguration represents a declarative configuration of the MutatingWebhookConfiguration type for use
     // with apply.
     type MutatingWebhookConfigurationApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Webhooks                         []MutatingWebhookApplyConfiguration `json:"webhooks,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Webhooks                             []MutatingWebhookApplyConfiguration `json:"webhooks,omitempty"`
     }
     
    -// MutatingWebhookConfiguration constructs an declarative configuration of the MutatingWebhookConfiguration type for use with
    +// MutatingWebhookConfiguration constructs a declarative configuration of the MutatingWebhookConfiguration type for use with
     // apply.
     func MutatingWebhookConfiguration(name string) *MutatingWebhookConfigurationApplyConfiguration {
     	b := &MutatingWebhookConfigurationApplyConfiguration{}
    @@ -56,18 +56,18 @@ func MutatingWebhookConfiguration(name string) *MutatingWebhookConfigurationAppl
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractMutatingWebhookConfiguration(mutatingWebhookConfiguration *apiadmissionregistrationv1.MutatingWebhookConfiguration, fieldManager string) (*MutatingWebhookConfigurationApplyConfiguration, error) {
    +func ExtractMutatingWebhookConfiguration(mutatingWebhookConfiguration *admissionregistrationv1.MutatingWebhookConfiguration, fieldManager string) (*MutatingWebhookConfigurationApplyConfiguration, error) {
     	return extractMutatingWebhookConfiguration(mutatingWebhookConfiguration, fieldManager, "")
     }
     
     // ExtractMutatingWebhookConfigurationStatus is the same as ExtractMutatingWebhookConfiguration except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractMutatingWebhookConfigurationStatus(mutatingWebhookConfiguration *apiadmissionregistrationv1.MutatingWebhookConfiguration, fieldManager string) (*MutatingWebhookConfigurationApplyConfiguration, error) {
    +func ExtractMutatingWebhookConfigurationStatus(mutatingWebhookConfiguration *admissionregistrationv1.MutatingWebhookConfiguration, fieldManager string) (*MutatingWebhookConfigurationApplyConfiguration, error) {
     	return extractMutatingWebhookConfiguration(mutatingWebhookConfiguration, fieldManager, "status")
     }
     
    -func extractMutatingWebhookConfiguration(mutatingWebhookConfiguration *apiadmissionregistrationv1.MutatingWebhookConfiguration, fieldManager string, subresource string) (*MutatingWebhookConfigurationApplyConfiguration, error) {
    +func extractMutatingWebhookConfiguration(mutatingWebhookConfiguration *admissionregistrationv1.MutatingWebhookConfiguration, fieldManager string, subresource string) (*MutatingWebhookConfigurationApplyConfiguration, error) {
     	b := &MutatingWebhookConfigurationApplyConfiguration{}
     	err := managedfields.ExtractInto(mutatingWebhookConfiguration, internal.Parser().Type("io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration"), fieldManager, b, subresource)
     	if err != nil {
    @@ -84,7 +84,7 @@ func extractMutatingWebhookConfiguration(mutatingWebhookConfiguration *apiadmiss
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithKind(value string) *MutatingWebhookConfigurationApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithKind(value string)
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithAPIVersion(value string) *MutatingWebhookConfigurationApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithAPIVersion(value st
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithName(value string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithName(value string)
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithGenerateName(value string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithGenerateName(value
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithNamespace(value string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithNamespace(value str
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithUID(value types.UID) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithUID(value types.UID
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithResourceVersion(value string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,25 +146,25 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithResourceVersion(val
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithGeneration(value int64) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *MutatingWebhookConfigurationApplyConfiguration) WithCreationTimestamp(value metav1.Time) *MutatingWebhookConfigurationApplyConfiguration {
    +func (b *MutatingWebhookConfigurationApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *MutatingWebhookConfigurationApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *MutatingWebhookConfigurationApplyConfiguration {
    +func (b *MutatingWebhookConfigurationApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithDeletionTimestamp(v
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithDeletionGracePeriod
     // overwriting an existing map entries in Labels field with the same key.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithLabels(entries map[string]string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithLabels(entries map[
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithAnnotations(entries map[string]string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -210,13 +210,13 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithAnnotations(entries
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *MutatingWebhookConfigurationApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *MutatingWebhookConfigurationApplyConfiguration {
    +func (b *MutatingWebhookConfigurationApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,14 +227,14 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithOwnerReferences(val
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithFinalizers(values ...string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *MutatingWebhookConfigurationApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -250,3 +250,9 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithWebhooks(values ...
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *MutatingWebhookConfigurationApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/namedrulewithoperations.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/namedrulewithoperations.go
    new file mode 100644
    index 000000000000..dd31981ad5e4
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/namedrulewithoperations.go
    @@ -0,0 +1,94 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +)
    +
    +// NamedRuleWithOperationsApplyConfiguration represents a declarative configuration of the NamedRuleWithOperations type for use
    +// with apply.
    +type NamedRuleWithOperationsApplyConfiguration struct {
    +	ResourceNames                        []string `json:"resourceNames,omitempty"`
    +	RuleWithOperationsApplyConfiguration `json:",inline"`
    +}
    +
    +// NamedRuleWithOperationsApplyConfiguration constructs a declarative configuration of the NamedRuleWithOperations type for use with
    +// apply.
    +func NamedRuleWithOperations() *NamedRuleWithOperationsApplyConfiguration {
    +	return &NamedRuleWithOperationsApplyConfiguration{}
    +}
    +
    +// WithResourceNames adds the given value to the ResourceNames field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the ResourceNames field.
    +func (b *NamedRuleWithOperationsApplyConfiguration) WithResourceNames(values ...string) *NamedRuleWithOperationsApplyConfiguration {
    +	for i := range values {
    +		b.ResourceNames = append(b.ResourceNames, values[i])
    +	}
    +	return b
    +}
    +
    +// WithOperations adds the given value to the Operations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Operations field.
    +func (b *NamedRuleWithOperationsApplyConfiguration) WithOperations(values ...admissionregistrationv1.OperationType) *NamedRuleWithOperationsApplyConfiguration {
    +	for i := range values {
    +		b.RuleWithOperationsApplyConfiguration.Operations = append(b.RuleWithOperationsApplyConfiguration.Operations, values[i])
    +	}
    +	return b
    +}
    +
    +// WithAPIGroups adds the given value to the APIGroups field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the APIGroups field.
    +func (b *NamedRuleWithOperationsApplyConfiguration) WithAPIGroups(values ...string) *NamedRuleWithOperationsApplyConfiguration {
    +	for i := range values {
    +		b.RuleApplyConfiguration.APIGroups = append(b.RuleApplyConfiguration.APIGroups, values[i])
    +	}
    +	return b
    +}
    +
    +// WithAPIVersions adds the given value to the APIVersions field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the APIVersions field.
    +func (b *NamedRuleWithOperationsApplyConfiguration) WithAPIVersions(values ...string) *NamedRuleWithOperationsApplyConfiguration {
    +	for i := range values {
    +		b.RuleApplyConfiguration.APIVersions = append(b.RuleApplyConfiguration.APIVersions, values[i])
    +	}
    +	return b
    +}
    +
    +// WithResources adds the given value to the Resources field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Resources field.
    +func (b *NamedRuleWithOperationsApplyConfiguration) WithResources(values ...string) *NamedRuleWithOperationsApplyConfiguration {
    +	for i := range values {
    +		b.RuleApplyConfiguration.Resources = append(b.RuleApplyConfiguration.Resources, values[i])
    +	}
    +	return b
    +}
    +
    +// WithScope sets the Scope field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Scope field is set to the value of the last call.
    +func (b *NamedRuleWithOperationsApplyConfiguration) WithScope(value admissionregistrationv1.ScopeType) *NamedRuleWithOperationsApplyConfiguration {
    +	b.RuleApplyConfiguration.Scope = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/paramkind.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/paramkind.go
    new file mode 100644
    index 000000000000..07577929ab31
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/paramkind.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// ParamKindApplyConfiguration represents a declarative configuration of the ParamKind type for use
    +// with apply.
    +type ParamKindApplyConfiguration struct {
    +	APIVersion *string `json:"apiVersion,omitempty"`
    +	Kind       *string `json:"kind,omitempty"`
    +}
    +
    +// ParamKindApplyConfiguration constructs a declarative configuration of the ParamKind type for use with
    +// apply.
    +func ParamKind() *ParamKindApplyConfiguration {
    +	return &ParamKindApplyConfiguration{}
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *ParamKindApplyConfiguration) WithAPIVersion(value string) *ParamKindApplyConfiguration {
    +	b.APIVersion = &value
    +	return b
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *ParamKindApplyConfiguration) WithKind(value string) *ParamKindApplyConfiguration {
    +	b.Kind = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/paramref.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/paramref.go
    new file mode 100644
    index 000000000000..140233f6ba57
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/paramref.go
    @@ -0,0 +1,71 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// ParamRefApplyConfiguration represents a declarative configuration of the ParamRef type for use
    +// with apply.
    +type ParamRefApplyConfiguration struct {
    +	Name                    *string                                              `json:"name,omitempty"`
    +	Namespace               *string                                              `json:"namespace,omitempty"`
    +	Selector                *metav1.LabelSelectorApplyConfiguration              `json:"selector,omitempty"`
    +	ParameterNotFoundAction *admissionregistrationv1.ParameterNotFoundActionType `json:"parameterNotFoundAction,omitempty"`
    +}
    +
    +// ParamRefApplyConfiguration constructs a declarative configuration of the ParamRef type for use with
    +// apply.
    +func ParamRef() *ParamRefApplyConfiguration {
    +	return &ParamRefApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ParamRefApplyConfiguration) WithName(value string) *ParamRefApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *ParamRefApplyConfiguration) WithNamespace(value string) *ParamRefApplyConfiguration {
    +	b.Namespace = &value
    +	return b
    +}
    +
    +// WithSelector sets the Selector field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Selector field is set to the value of the last call.
    +func (b *ParamRefApplyConfiguration) WithSelector(value *metav1.LabelSelectorApplyConfiguration) *ParamRefApplyConfiguration {
    +	b.Selector = value
    +	return b
    +}
    +
    +// WithParameterNotFoundAction sets the ParameterNotFoundAction field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ParameterNotFoundAction field is set to the value of the last call.
    +func (b *ParamRefApplyConfiguration) WithParameterNotFoundAction(value admissionregistrationv1.ParameterNotFoundActionType) *ParamRefApplyConfiguration {
    +	b.ParameterNotFoundAction = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/rule.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/rule.go
    index 41d4179df40a..a8c68136bd9d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/rule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/rule.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/admissionregistration/v1"
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
     )
     
    -// RuleApplyConfiguration represents an declarative configuration of the Rule type for use
    +// RuleApplyConfiguration represents a declarative configuration of the Rule type for use
     // with apply.
     type RuleApplyConfiguration struct {
    -	APIGroups   []string      `json:"apiGroups,omitempty"`
    -	APIVersions []string      `json:"apiVersions,omitempty"`
    -	Resources   []string      `json:"resources,omitempty"`
    -	Scope       *v1.ScopeType `json:"scope,omitempty"`
    +	APIGroups   []string                           `json:"apiGroups,omitempty"`
    +	APIVersions []string                           `json:"apiVersions,omitempty"`
    +	Resources   []string                           `json:"resources,omitempty"`
    +	Scope       *admissionregistrationv1.ScopeType `json:"scope,omitempty"`
     }
     
    -// RuleApplyConfiguration constructs an declarative configuration of the Rule type for use with
    +// RuleApplyConfiguration constructs a declarative configuration of the Rule type for use with
     // apply.
     func Rule() *RuleApplyConfiguration {
     	return &RuleApplyConfiguration{}
    @@ -70,7 +70,7 @@ func (b *RuleApplyConfiguration) WithResources(values ...string) *RuleApplyConfi
     // WithScope sets the Scope field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Scope field is set to the value of the last call.
    -func (b *RuleApplyConfiguration) WithScope(value v1.ScopeType) *RuleApplyConfiguration {
    +func (b *RuleApplyConfiguration) WithScope(value admissionregistrationv1.ScopeType) *RuleApplyConfiguration {
     	b.Scope = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/rulewithoperations.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/rulewithoperations.go
    index 59bbb8fe3d0d..55a985f9983f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/rulewithoperations.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/rulewithoperations.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/admissionregistration/v1"
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
     )
     
    -// RuleWithOperationsApplyConfiguration represents an declarative configuration of the RuleWithOperations type for use
    +// RuleWithOperationsApplyConfiguration represents a declarative configuration of the RuleWithOperations type for use
     // with apply.
     type RuleWithOperationsApplyConfiguration struct {
    -	Operations             []v1.OperationType `json:"operations,omitempty"`
    +	Operations             []admissionregistrationv1.OperationType `json:"operations,omitempty"`
     	RuleApplyConfiguration `json:",inline"`
     }
     
    -// RuleWithOperationsApplyConfiguration constructs an declarative configuration of the RuleWithOperations type for use with
    +// RuleWithOperationsApplyConfiguration constructs a declarative configuration of the RuleWithOperations type for use with
     // apply.
     func RuleWithOperations() *RuleWithOperationsApplyConfiguration {
     	return &RuleWithOperationsApplyConfiguration{}
    @@ -38,7 +38,7 @@ func RuleWithOperations() *RuleWithOperationsApplyConfiguration {
     // WithOperations adds the given value to the Operations field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Operations field.
    -func (b *RuleWithOperationsApplyConfiguration) WithOperations(values ...v1.OperationType) *RuleWithOperationsApplyConfiguration {
    +func (b *RuleWithOperationsApplyConfiguration) WithOperations(values ...admissionregistrationv1.OperationType) *RuleWithOperationsApplyConfiguration {
     	for i := range values {
     		b.Operations = append(b.Operations, values[i])
     	}
    @@ -50,7 +50,7 @@ func (b *RuleWithOperationsApplyConfiguration) WithOperations(values ...v1.Opera
     // If called multiple times, values provided by each call will be appended to the APIGroups field.
     func (b *RuleWithOperationsApplyConfiguration) WithAPIGroups(values ...string) *RuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.APIGroups = append(b.APIGroups, values[i])
    +		b.RuleApplyConfiguration.APIGroups = append(b.RuleApplyConfiguration.APIGroups, values[i])
     	}
     	return b
     }
    @@ -60,7 +60,7 @@ func (b *RuleWithOperationsApplyConfiguration) WithAPIGroups(values ...string) *
     // If called multiple times, values provided by each call will be appended to the APIVersions field.
     func (b *RuleWithOperationsApplyConfiguration) WithAPIVersions(values ...string) *RuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.APIVersions = append(b.APIVersions, values[i])
    +		b.RuleApplyConfiguration.APIVersions = append(b.RuleApplyConfiguration.APIVersions, values[i])
     	}
     	return b
     }
    @@ -70,7 +70,7 @@ func (b *RuleWithOperationsApplyConfiguration) WithAPIVersions(values ...string)
     // If called multiple times, values provided by each call will be appended to the Resources field.
     func (b *RuleWithOperationsApplyConfiguration) WithResources(values ...string) *RuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.Resources = append(b.Resources, values[i])
    +		b.RuleApplyConfiguration.Resources = append(b.RuleApplyConfiguration.Resources, values[i])
     	}
     	return b
     }
    @@ -78,7 +78,7 @@ func (b *RuleWithOperationsApplyConfiguration) WithResources(values ...string) *
     // WithScope sets the Scope field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Scope field is set to the value of the last call.
    -func (b *RuleWithOperationsApplyConfiguration) WithScope(value v1.ScopeType) *RuleWithOperationsApplyConfiguration {
    -	b.Scope = &value
    +func (b *RuleWithOperationsApplyConfiguration) WithScope(value admissionregistrationv1.ScopeType) *RuleWithOperationsApplyConfiguration {
    +	b.RuleApplyConfiguration.Scope = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/servicereference.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/servicereference.go
    index 2cd55d9ea207..239780664df5 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/servicereference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/servicereference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ServiceReferenceApplyConfiguration represents an declarative configuration of the ServiceReference type for use
    +// ServiceReferenceApplyConfiguration represents a declarative configuration of the ServiceReference type for use
     // with apply.
     type ServiceReferenceApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
    @@ -27,7 +27,7 @@ type ServiceReferenceApplyConfiguration struct {
     	Port      *int32  `json:"port,omitempty"`
     }
     
    -// ServiceReferenceApplyConfiguration constructs an declarative configuration of the ServiceReference type for use with
    +// ServiceReferenceApplyConfiguration constructs a declarative configuration of the ServiceReference type for use with
     // apply.
     func ServiceReference() *ServiceReferenceApplyConfiguration {
     	return &ServiceReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/typechecking.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/typechecking.go
    new file mode 100644
    index 000000000000..723d10ecf5ea
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/typechecking.go
    @@ -0,0 +1,44 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// TypeCheckingApplyConfiguration represents a declarative configuration of the TypeChecking type for use
    +// with apply.
    +type TypeCheckingApplyConfiguration struct {
    +	ExpressionWarnings []ExpressionWarningApplyConfiguration `json:"expressionWarnings,omitempty"`
    +}
    +
    +// TypeCheckingApplyConfiguration constructs a declarative configuration of the TypeChecking type for use with
    +// apply.
    +func TypeChecking() *TypeCheckingApplyConfiguration {
    +	return &TypeCheckingApplyConfiguration{}
    +}
    +
    +// WithExpressionWarnings adds the given value to the ExpressionWarnings field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the ExpressionWarnings field.
    +func (b *TypeCheckingApplyConfiguration) WithExpressionWarnings(values ...*ExpressionWarningApplyConfiguration) *TypeCheckingApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithExpressionWarnings")
    +		}
    +		b.ExpressionWarnings = append(b.ExpressionWarnings, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicy.go
    new file mode 100644
    index 000000000000..730de03694fa
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicy.go
    @@ -0,0 +1,262 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// ValidatingAdmissionPolicyApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicy type for use
    +// with apply.
    +type ValidatingAdmissionPolicyApplyConfiguration struct {
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *ValidatingAdmissionPolicySpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *ValidatingAdmissionPolicyStatusApplyConfiguration `json:"status,omitempty"`
    +}
    +
    +// ValidatingAdmissionPolicy constructs a declarative configuration of the ValidatingAdmissionPolicy type for use with
    +// apply.
    +func ValidatingAdmissionPolicy(name string) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b := &ValidatingAdmissionPolicyApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("ValidatingAdmissionPolicy")
    +	b.WithAPIVersion("admissionregistration.k8s.io/v1")
    +	return b
    +}
    +
    +// ExtractValidatingAdmissionPolicy extracts the applied configuration owned by fieldManager from
    +// validatingAdmissionPolicy. If no managedFields are found in validatingAdmissionPolicy for fieldManager, a
    +// ValidatingAdmissionPolicyApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// validatingAdmissionPolicy must be a unmodified ValidatingAdmissionPolicy API object that was retrieved from the Kubernetes API.
    +// ExtractValidatingAdmissionPolicy provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractValidatingAdmissionPolicy(validatingAdmissionPolicy *admissionregistrationv1.ValidatingAdmissionPolicy, fieldManager string) (*ValidatingAdmissionPolicyApplyConfiguration, error) {
    +	return extractValidatingAdmissionPolicy(validatingAdmissionPolicy, fieldManager, "")
    +}
    +
    +// ExtractValidatingAdmissionPolicyStatus is the same as ExtractValidatingAdmissionPolicy except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractValidatingAdmissionPolicyStatus(validatingAdmissionPolicy *admissionregistrationv1.ValidatingAdmissionPolicy, fieldManager string) (*ValidatingAdmissionPolicyApplyConfiguration, error) {
    +	return extractValidatingAdmissionPolicy(validatingAdmissionPolicy, fieldManager, "status")
    +}
    +
    +func extractValidatingAdmissionPolicy(validatingAdmissionPolicy *admissionregistrationv1.ValidatingAdmissionPolicy, fieldManager string, subresource string) (*ValidatingAdmissionPolicyApplyConfiguration, error) {
    +	b := &ValidatingAdmissionPolicyApplyConfiguration{}
    +	err := managedfields.ExtractInto(validatingAdmissionPolicy, internal.Parser().Type("io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(validatingAdmissionPolicy.Name)
    +
    +	b.WithKind("ValidatingAdmissionPolicy")
    +	b.WithAPIVersion("admissionregistration.k8s.io/v1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithKind(value string) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithAPIVersion(value string) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithName(value string) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithGenerateName(value string) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithNamespace(value string) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithUID(value types.UID) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithResourceVersion(value string) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithGeneration(value int64) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithLabels(entries map[string]string) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithAnnotations(entries map[string]string) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithFinalizers(values ...string) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithSpec(value *ValidatingAdmissionPolicySpecApplyConfiguration) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// WithStatus sets the Status field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Status field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) WithStatus(value *ValidatingAdmissionPolicyStatusApplyConfiguration) *ValidatingAdmissionPolicyApplyConfiguration {
    +	b.Status = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicybinding.go
    new file mode 100644
    index 000000000000..2921a711fc8a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicybinding.go
    @@ -0,0 +1,253 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// ValidatingAdmissionPolicyBindingApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicyBinding type for use
    +// with apply.
    +type ValidatingAdmissionPolicyBindingApplyConfiguration struct {
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *ValidatingAdmissionPolicyBindingSpecApplyConfiguration `json:"spec,omitempty"`
    +}
    +
    +// ValidatingAdmissionPolicyBinding constructs a declarative configuration of the ValidatingAdmissionPolicyBinding type for use with
    +// apply.
    +func ValidatingAdmissionPolicyBinding(name string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b := &ValidatingAdmissionPolicyBindingApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("ValidatingAdmissionPolicyBinding")
    +	b.WithAPIVersion("admissionregistration.k8s.io/v1")
    +	return b
    +}
    +
    +// ExtractValidatingAdmissionPolicyBinding extracts the applied configuration owned by fieldManager from
    +// validatingAdmissionPolicyBinding. If no managedFields are found in validatingAdmissionPolicyBinding for fieldManager, a
    +// ValidatingAdmissionPolicyBindingApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// validatingAdmissionPolicyBinding must be a unmodified ValidatingAdmissionPolicyBinding API object that was retrieved from the Kubernetes API.
    +// ExtractValidatingAdmissionPolicyBinding provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractValidatingAdmissionPolicyBinding(validatingAdmissionPolicyBinding *admissionregistrationv1.ValidatingAdmissionPolicyBinding, fieldManager string) (*ValidatingAdmissionPolicyBindingApplyConfiguration, error) {
    +	return extractValidatingAdmissionPolicyBinding(validatingAdmissionPolicyBinding, fieldManager, "")
    +}
    +
    +// ExtractValidatingAdmissionPolicyBindingStatus is the same as ExtractValidatingAdmissionPolicyBinding except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractValidatingAdmissionPolicyBindingStatus(validatingAdmissionPolicyBinding *admissionregistrationv1.ValidatingAdmissionPolicyBinding, fieldManager string) (*ValidatingAdmissionPolicyBindingApplyConfiguration, error) {
    +	return extractValidatingAdmissionPolicyBinding(validatingAdmissionPolicyBinding, fieldManager, "status")
    +}
    +
    +func extractValidatingAdmissionPolicyBinding(validatingAdmissionPolicyBinding *admissionregistrationv1.ValidatingAdmissionPolicyBinding, fieldManager string, subresource string) (*ValidatingAdmissionPolicyBindingApplyConfiguration, error) {
    +	b := &ValidatingAdmissionPolicyBindingApplyConfiguration{}
    +	err := managedfields.ExtractInto(validatingAdmissionPolicyBinding, internal.Parser().Type("io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(validatingAdmissionPolicyBinding.Name)
    +
    +	b.WithKind("ValidatingAdmissionPolicyBinding")
    +	b.WithAPIVersion("admissionregistration.k8s.io/v1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithKind(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithAPIVersion(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithName(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithGenerateName(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithNamespace(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithUID(value types.UID) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithResourceVersion(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithGeneration(value int64) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithLabels(entries map[string]string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithAnnotations(entries map[string]string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithFinalizers(values ...string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithSpec(value *ValidatingAdmissionPolicyBindingSpecApplyConfiguration) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicybindingspec.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicybindingspec.go
    new file mode 100644
    index 000000000000..eb426af42ad9
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicybindingspec.go
    @@ -0,0 +1,72 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +)
    +
    +// ValidatingAdmissionPolicyBindingSpecApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicyBindingSpec type for use
    +// with apply.
    +type ValidatingAdmissionPolicyBindingSpecApplyConfiguration struct {
    +	PolicyName        *string                                    `json:"policyName,omitempty"`
    +	ParamRef          *ParamRefApplyConfiguration                `json:"paramRef,omitempty"`
    +	MatchResources    *MatchResourcesApplyConfiguration          `json:"matchResources,omitempty"`
    +	ValidationActions []admissionregistrationv1.ValidationAction `json:"validationActions,omitempty"`
    +}
    +
    +// ValidatingAdmissionPolicyBindingSpecApplyConfiguration constructs a declarative configuration of the ValidatingAdmissionPolicyBindingSpec type for use with
    +// apply.
    +func ValidatingAdmissionPolicyBindingSpec() *ValidatingAdmissionPolicyBindingSpecApplyConfiguration {
    +	return &ValidatingAdmissionPolicyBindingSpecApplyConfiguration{}
    +}
    +
    +// WithPolicyName sets the PolicyName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the PolicyName field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingSpecApplyConfiguration) WithPolicyName(value string) *ValidatingAdmissionPolicyBindingSpecApplyConfiguration {
    +	b.PolicyName = &value
    +	return b
    +}
    +
    +// WithParamRef sets the ParamRef field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ParamRef field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingSpecApplyConfiguration) WithParamRef(value *ParamRefApplyConfiguration) *ValidatingAdmissionPolicyBindingSpecApplyConfiguration {
    +	b.ParamRef = value
    +	return b
    +}
    +
    +// WithMatchResources sets the MatchResources field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the MatchResources field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyBindingSpecApplyConfiguration) WithMatchResources(value *MatchResourcesApplyConfiguration) *ValidatingAdmissionPolicyBindingSpecApplyConfiguration {
    +	b.MatchResources = value
    +	return b
    +}
    +
    +// WithValidationActions adds the given value to the ValidationActions field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the ValidationActions field.
    +func (b *ValidatingAdmissionPolicyBindingSpecApplyConfiguration) WithValidationActions(values ...admissionregistrationv1.ValidationAction) *ValidatingAdmissionPolicyBindingSpecApplyConfiguration {
    +	for i := range values {
    +		b.ValidationActions = append(b.ValidationActions, values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicyspec.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicyspec.go
    new file mode 100644
    index 000000000000..1635b30a61a5
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicyspec.go
    @@ -0,0 +1,117 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +)
    +
    +// ValidatingAdmissionPolicySpecApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicySpec type for use
    +// with apply.
    +type ValidatingAdmissionPolicySpecApplyConfiguration struct {
    +	ParamKind        *ParamKindApplyConfiguration               `json:"paramKind,omitempty"`
    +	MatchConstraints *MatchResourcesApplyConfiguration          `json:"matchConstraints,omitempty"`
    +	Validations      []ValidationApplyConfiguration             `json:"validations,omitempty"`
    +	FailurePolicy    *admissionregistrationv1.FailurePolicyType `json:"failurePolicy,omitempty"`
    +	AuditAnnotations []AuditAnnotationApplyConfiguration        `json:"auditAnnotations,omitempty"`
    +	MatchConditions  []MatchConditionApplyConfiguration         `json:"matchConditions,omitempty"`
    +	Variables        []VariableApplyConfiguration               `json:"variables,omitempty"`
    +}
    +
    +// ValidatingAdmissionPolicySpecApplyConfiguration constructs a declarative configuration of the ValidatingAdmissionPolicySpec type for use with
    +// apply.
    +func ValidatingAdmissionPolicySpec() *ValidatingAdmissionPolicySpecApplyConfiguration {
    +	return &ValidatingAdmissionPolicySpecApplyConfiguration{}
    +}
    +
    +// WithParamKind sets the ParamKind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ParamKind field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicySpecApplyConfiguration) WithParamKind(value *ParamKindApplyConfiguration) *ValidatingAdmissionPolicySpecApplyConfiguration {
    +	b.ParamKind = value
    +	return b
    +}
    +
    +// WithMatchConstraints sets the MatchConstraints field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the MatchConstraints field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicySpecApplyConfiguration) WithMatchConstraints(value *MatchResourcesApplyConfiguration) *ValidatingAdmissionPolicySpecApplyConfiguration {
    +	b.MatchConstraints = value
    +	return b
    +}
    +
    +// WithValidations adds the given value to the Validations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Validations field.
    +func (b *ValidatingAdmissionPolicySpecApplyConfiguration) WithValidations(values ...*ValidationApplyConfiguration) *ValidatingAdmissionPolicySpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithValidations")
    +		}
    +		b.Validations = append(b.Validations, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFailurePolicy sets the FailurePolicy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the FailurePolicy field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicySpecApplyConfiguration) WithFailurePolicy(value admissionregistrationv1.FailurePolicyType) *ValidatingAdmissionPolicySpecApplyConfiguration {
    +	b.FailurePolicy = &value
    +	return b
    +}
    +
    +// WithAuditAnnotations adds the given value to the AuditAnnotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the AuditAnnotations field.
    +func (b *ValidatingAdmissionPolicySpecApplyConfiguration) WithAuditAnnotations(values ...*AuditAnnotationApplyConfiguration) *ValidatingAdmissionPolicySpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithAuditAnnotations")
    +		}
    +		b.AuditAnnotations = append(b.AuditAnnotations, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithMatchConditions adds the given value to the MatchConditions field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the MatchConditions field.
    +func (b *ValidatingAdmissionPolicySpecApplyConfiguration) WithMatchConditions(values ...*MatchConditionApplyConfiguration) *ValidatingAdmissionPolicySpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithMatchConditions")
    +		}
    +		b.MatchConditions = append(b.MatchConditions, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithVariables adds the given value to the Variables field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Variables field.
    +func (b *ValidatingAdmissionPolicySpecApplyConfiguration) WithVariables(values ...*VariableApplyConfiguration) *ValidatingAdmissionPolicySpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithVariables")
    +		}
    +		b.Variables = append(b.Variables, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicystatus.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicystatus.go
    new file mode 100644
    index 000000000000..e6f4e845915e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicystatus.go
    @@ -0,0 +1,66 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// ValidatingAdmissionPolicyStatusApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicyStatus type for use
    +// with apply.
    +type ValidatingAdmissionPolicyStatusApplyConfiguration struct {
    +	ObservedGeneration *int64                               `json:"observedGeneration,omitempty"`
    +	TypeChecking       *TypeCheckingApplyConfiguration      `json:"typeChecking,omitempty"`
    +	Conditions         []metav1.ConditionApplyConfiguration `json:"conditions,omitempty"`
    +}
    +
    +// ValidatingAdmissionPolicyStatusApplyConfiguration constructs a declarative configuration of the ValidatingAdmissionPolicyStatus type for use with
    +// apply.
    +func ValidatingAdmissionPolicyStatus() *ValidatingAdmissionPolicyStatusApplyConfiguration {
    +	return &ValidatingAdmissionPolicyStatusApplyConfiguration{}
    +}
    +
    +// WithObservedGeneration sets the ObservedGeneration field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ObservedGeneration field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyStatusApplyConfiguration) WithObservedGeneration(value int64) *ValidatingAdmissionPolicyStatusApplyConfiguration {
    +	b.ObservedGeneration = &value
    +	return b
    +}
    +
    +// WithTypeChecking sets the TypeChecking field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the TypeChecking field is set to the value of the last call.
    +func (b *ValidatingAdmissionPolicyStatusApplyConfiguration) WithTypeChecking(value *TypeCheckingApplyConfiguration) *ValidatingAdmissionPolicyStatusApplyConfiguration {
    +	b.TypeChecking = value
    +	return b
    +}
    +
    +// WithConditions adds the given value to the Conditions field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Conditions field.
    +func (b *ValidatingAdmissionPolicyStatusApplyConfiguration) WithConditions(values ...*metav1.ConditionApplyConfiguration) *ValidatingAdmissionPolicyStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConditions")
    +		}
    +		b.Conditions = append(b.Conditions, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingwebhook.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingwebhook.go
    index 613856bac7f0..a2c705eb5c4c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingwebhook.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingwebhook.go
    @@ -23,7 +23,7 @@ import (
     	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ValidatingWebhookApplyConfiguration represents an declarative configuration of the ValidatingWebhook type for use
    +// ValidatingWebhookApplyConfiguration represents a declarative configuration of the ValidatingWebhook type for use
     // with apply.
     type ValidatingWebhookApplyConfiguration struct {
     	Name                    *string                                    `json:"name,omitempty"`
    @@ -39,7 +39,7 @@ type ValidatingWebhookApplyConfiguration struct {
     	MatchConditions         []MatchConditionApplyConfiguration         `json:"matchConditions,omitempty"`
     }
     
    -// ValidatingWebhookApplyConfiguration constructs an declarative configuration of the ValidatingWebhook type for use with
    +// ValidatingWebhookApplyConfiguration constructs a declarative configuration of the ValidatingWebhook type for use with
     // apply.
     func ValidatingWebhook() *ValidatingWebhookApplyConfiguration {
     	return &ValidatingWebhookApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingwebhookconfiguration.go
    index 811bfdf0b64d..a7bebb59f22a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingwebhookconfiguration.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apiadmissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ValidatingWebhookConfigurationApplyConfiguration represents an declarative configuration of the ValidatingWebhookConfiguration type for use
    +// ValidatingWebhookConfigurationApplyConfiguration represents a declarative configuration of the ValidatingWebhookConfiguration type for use
     // with apply.
     type ValidatingWebhookConfigurationApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Webhooks                         []ValidatingWebhookApplyConfiguration `json:"webhooks,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Webhooks                             []ValidatingWebhookApplyConfiguration `json:"webhooks,omitempty"`
     }
     
    -// ValidatingWebhookConfiguration constructs an declarative configuration of the ValidatingWebhookConfiguration type for use with
    +// ValidatingWebhookConfiguration constructs a declarative configuration of the ValidatingWebhookConfiguration type for use with
     // apply.
     func ValidatingWebhookConfiguration(name string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b := &ValidatingWebhookConfigurationApplyConfiguration{}
    @@ -56,18 +56,18 @@ func ValidatingWebhookConfiguration(name string) *ValidatingWebhookConfiguration
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractValidatingWebhookConfiguration(validatingWebhookConfiguration *apiadmissionregistrationv1.ValidatingWebhookConfiguration, fieldManager string) (*ValidatingWebhookConfigurationApplyConfiguration, error) {
    +func ExtractValidatingWebhookConfiguration(validatingWebhookConfiguration *admissionregistrationv1.ValidatingWebhookConfiguration, fieldManager string) (*ValidatingWebhookConfigurationApplyConfiguration, error) {
     	return extractValidatingWebhookConfiguration(validatingWebhookConfiguration, fieldManager, "")
     }
     
     // ExtractValidatingWebhookConfigurationStatus is the same as ExtractValidatingWebhookConfiguration except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractValidatingWebhookConfigurationStatus(validatingWebhookConfiguration *apiadmissionregistrationv1.ValidatingWebhookConfiguration, fieldManager string) (*ValidatingWebhookConfigurationApplyConfiguration, error) {
    +func ExtractValidatingWebhookConfigurationStatus(validatingWebhookConfiguration *admissionregistrationv1.ValidatingWebhookConfiguration, fieldManager string) (*ValidatingWebhookConfigurationApplyConfiguration, error) {
     	return extractValidatingWebhookConfiguration(validatingWebhookConfiguration, fieldManager, "status")
     }
     
    -func extractValidatingWebhookConfiguration(validatingWebhookConfiguration *apiadmissionregistrationv1.ValidatingWebhookConfiguration, fieldManager string, subresource string) (*ValidatingWebhookConfigurationApplyConfiguration, error) {
    +func extractValidatingWebhookConfiguration(validatingWebhookConfiguration *admissionregistrationv1.ValidatingWebhookConfiguration, fieldManager string, subresource string) (*ValidatingWebhookConfigurationApplyConfiguration, error) {
     	b := &ValidatingWebhookConfigurationApplyConfiguration{}
     	err := managedfields.ExtractInto(validatingWebhookConfiguration, internal.Parser().Type("io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration"), fieldManager, b, subresource)
     	if err != nil {
    @@ -84,7 +84,7 @@ func extractValidatingWebhookConfiguration(validatingWebhookConfiguration *apiad
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithKind(value string) *ValidatingWebhookConfigurationApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithKind(value string
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithAPIVersion(value string) *ValidatingWebhookConfigurationApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithAPIVersion(value
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithName(value string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithName(value string
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithGenerateName(value string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithGenerateName(valu
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithNamespace(value string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithNamespace(value s
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithUID(value types.UID) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithUID(value types.U
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithResourceVersion(value string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,25 +146,25 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithResourceVersion(v
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithGeneration(value int64) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ValidatingWebhookConfigurationApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ValidatingWebhookConfigurationApplyConfiguration {
    +func (b *ValidatingWebhookConfigurationApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ValidatingWebhookConfigurationApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ValidatingWebhookConfigurationApplyConfiguration {
    +func (b *ValidatingWebhookConfigurationApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithDeletionTimestamp
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithDeletionGracePeri
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithLabels(entries map[string]string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithLabels(entries ma
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithAnnotations(entries map[string]string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -210,13 +210,13 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithAnnotations(entri
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ValidatingWebhookConfigurationApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ValidatingWebhookConfigurationApplyConfiguration {
    +func (b *ValidatingWebhookConfigurationApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,14 +227,14 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithOwnerReferences(v
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithFinalizers(values ...string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ValidatingWebhookConfigurationApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -250,3 +250,9 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithWebhooks(values .
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ValidatingWebhookConfigurationApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validation.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validation.go
    new file mode 100644
    index 000000000000..9966a7a2860c
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validation.go
    @@ -0,0 +1,70 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +)
    +
    +// ValidationApplyConfiguration represents a declarative configuration of the Validation type for use
    +// with apply.
    +type ValidationApplyConfiguration struct {
    +	Expression        *string              `json:"expression,omitempty"`
    +	Message           *string              `json:"message,omitempty"`
    +	Reason            *metav1.StatusReason `json:"reason,omitempty"`
    +	MessageExpression *string              `json:"messageExpression,omitempty"`
    +}
    +
    +// ValidationApplyConfiguration constructs a declarative configuration of the Validation type for use with
    +// apply.
    +func Validation() *ValidationApplyConfiguration {
    +	return &ValidationApplyConfiguration{}
    +}
    +
    +// WithExpression sets the Expression field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Expression field is set to the value of the last call.
    +func (b *ValidationApplyConfiguration) WithExpression(value string) *ValidationApplyConfiguration {
    +	b.Expression = &value
    +	return b
    +}
    +
    +// WithMessage sets the Message field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Message field is set to the value of the last call.
    +func (b *ValidationApplyConfiguration) WithMessage(value string) *ValidationApplyConfiguration {
    +	b.Message = &value
    +	return b
    +}
    +
    +// WithReason sets the Reason field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Reason field is set to the value of the last call.
    +func (b *ValidationApplyConfiguration) WithReason(value metav1.StatusReason) *ValidationApplyConfiguration {
    +	b.Reason = &value
    +	return b
    +}
    +
    +// WithMessageExpression sets the MessageExpression field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the MessageExpression field is set to the value of the last call.
    +func (b *ValidationApplyConfiguration) WithMessageExpression(value string) *ValidationApplyConfiguration {
    +	b.MessageExpression = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/variable.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/variable.go
    new file mode 100644
    index 000000000000..9dd20afa7209
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/variable.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// VariableApplyConfiguration represents a declarative configuration of the Variable type for use
    +// with apply.
    +type VariableApplyConfiguration struct {
    +	Name       *string `json:"name,omitempty"`
    +	Expression *string `json:"expression,omitempty"`
    +}
    +
    +// VariableApplyConfiguration constructs a declarative configuration of the Variable type for use with
    +// apply.
    +func Variable() *VariableApplyConfiguration {
    +	return &VariableApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *VariableApplyConfiguration) WithName(value string) *VariableApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithExpression sets the Expression field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Expression field is set to the value of the last call.
    +func (b *VariableApplyConfiguration) WithExpression(value string) *VariableApplyConfiguration {
    +	b.Expression = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/webhookclientconfig.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/webhookclientconfig.go
    index aa358ae20594..77f2227b95ce 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/webhookclientconfig.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/webhookclientconfig.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// WebhookClientConfigApplyConfiguration represents an declarative configuration of the WebhookClientConfig type for use
    +// WebhookClientConfigApplyConfiguration represents a declarative configuration of the WebhookClientConfig type for use
     // with apply.
     type WebhookClientConfigApplyConfiguration struct {
     	URL      *string                             `json:"url,omitempty"`
    @@ -26,7 +26,7 @@ type WebhookClientConfigApplyConfiguration struct {
     	CABundle []byte                              `json:"caBundle,omitempty"`
     }
     
    -// WebhookClientConfigApplyConfiguration constructs an declarative configuration of the WebhookClientConfig type for use with
    +// WebhookClientConfigApplyConfiguration constructs a declarative configuration of the WebhookClientConfig type for use with
     // apply.
     func WebhookClientConfig() *WebhookClientConfigApplyConfiguration {
     	return &WebhookClientConfigApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/applyconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/applyconfiguration.go
    new file mode 100644
    index 000000000000..b08ac7224101
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/applyconfiguration.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// ApplyConfigurationApplyConfiguration represents a declarative configuration of the ApplyConfiguration type for use
    +// with apply.
    +type ApplyConfigurationApplyConfiguration struct {
    +	Expression *string `json:"expression,omitempty"`
    +}
    +
    +// ApplyConfigurationApplyConfiguration constructs a declarative configuration of the ApplyConfiguration type for use with
    +// apply.
    +func ApplyConfiguration() *ApplyConfigurationApplyConfiguration {
    +	return &ApplyConfigurationApplyConfiguration{}
    +}
    +
    +// WithExpression sets the Expression field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Expression field is set to the value of the last call.
    +func (b *ApplyConfigurationApplyConfiguration) WithExpression(value string) *ApplyConfigurationApplyConfiguration {
    +	b.Expression = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/auditannotation.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/auditannotation.go
    index 023695139d4e..958a53740630 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/auditannotation.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/auditannotation.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1alpha1
     
    -// AuditAnnotationApplyConfiguration represents an declarative configuration of the AuditAnnotation type for use
    +// AuditAnnotationApplyConfiguration represents a declarative configuration of the AuditAnnotation type for use
     // with apply.
     type AuditAnnotationApplyConfiguration struct {
     	Key             *string `json:"key,omitempty"`
     	ValueExpression *string `json:"valueExpression,omitempty"`
     }
     
    -// AuditAnnotationApplyConfiguration constructs an declarative configuration of the AuditAnnotation type for use with
    +// AuditAnnotationApplyConfiguration constructs a declarative configuration of the AuditAnnotation type for use with
     // apply.
     func AuditAnnotation() *AuditAnnotationApplyConfiguration {
     	return &AuditAnnotationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/expressionwarning.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/expressionwarning.go
    index f8b511f512bf..f36c2f0f5ce3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/expressionwarning.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/expressionwarning.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1alpha1
     
    -// ExpressionWarningApplyConfiguration represents an declarative configuration of the ExpressionWarning type for use
    +// ExpressionWarningApplyConfiguration represents a declarative configuration of the ExpressionWarning type for use
     // with apply.
     type ExpressionWarningApplyConfiguration struct {
     	FieldRef *string `json:"fieldRef,omitempty"`
     	Warning  *string `json:"warning,omitempty"`
     }
     
    -// ExpressionWarningApplyConfiguration constructs an declarative configuration of the ExpressionWarning type for use with
    +// ExpressionWarningApplyConfiguration constructs a declarative configuration of the ExpressionWarning type for use with
     // apply.
     func ExpressionWarning() *ExpressionWarningApplyConfiguration {
     	return &ExpressionWarningApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/jsonpatch.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/jsonpatch.go
    new file mode 100644
    index 000000000000..418d86a2b5ff
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/jsonpatch.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// JSONPatchApplyConfiguration represents a declarative configuration of the JSONPatch type for use
    +// with apply.
    +type JSONPatchApplyConfiguration struct {
    +	Expression *string `json:"expression,omitempty"`
    +}
    +
    +// JSONPatchApplyConfiguration constructs a declarative configuration of the JSONPatch type for use with
    +// apply.
    +func JSONPatch() *JSONPatchApplyConfiguration {
    +	return &JSONPatchApplyConfiguration{}
    +}
    +
    +// WithExpression sets the Expression field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Expression field is set to the value of the last call.
    +func (b *JSONPatchApplyConfiguration) WithExpression(value string) *JSONPatchApplyConfiguration {
    +	b.Expression = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/matchcondition.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/matchcondition.go
    index 186c750f96ea..7f983dcb22ae 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/matchcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/matchcondition.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1alpha1
     
    -// MatchConditionApplyConfiguration represents an declarative configuration of the MatchCondition type for use
    +// MatchConditionApplyConfiguration represents a declarative configuration of the MatchCondition type for use
     // with apply.
     type MatchConditionApplyConfiguration struct {
     	Name       *string `json:"name,omitempty"`
     	Expression *string `json:"expression,omitempty"`
     }
     
    -// MatchConditionApplyConfiguration constructs an declarative configuration of the MatchCondition type for use with
    +// MatchConditionApplyConfiguration constructs a declarative configuration of the MatchCondition type for use with
     // apply.
     func MatchCondition() *MatchConditionApplyConfiguration {
     	return &MatchConditionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/matchresources.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/matchresources.go
    index a6710ac7ed94..e443535b6a61 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/matchresources.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/matchresources.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// MatchResourcesApplyConfiguration represents an declarative configuration of the MatchResources type for use
    +// MatchResourcesApplyConfiguration represents a declarative configuration of the MatchResources type for use
     // with apply.
     type MatchResourcesApplyConfiguration struct {
     	NamespaceSelector    *v1.LabelSelectorApplyConfiguration            `json:"namespaceSelector,omitempty"`
    @@ -33,7 +33,7 @@ type MatchResourcesApplyConfiguration struct {
     	MatchPolicy          *admissionregistrationv1alpha1.MatchPolicyType `json:"matchPolicy,omitempty"`
     }
     
    -// MatchResourcesApplyConfiguration constructs an declarative configuration of the MatchResources type for use with
    +// MatchResourcesApplyConfiguration constructs a declarative configuration of the MatchResources type for use with
     // apply.
     func MatchResources() *MatchResourcesApplyConfiguration {
     	return &MatchResourcesApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicy.go
    new file mode 100644
    index 000000000000..d66071c187bb
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicy.go
    @@ -0,0 +1,253 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// MutatingAdmissionPolicyApplyConfiguration represents a declarative configuration of the MutatingAdmissionPolicy type for use
    +// with apply.
    +type MutatingAdmissionPolicyApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *MutatingAdmissionPolicySpecApplyConfiguration `json:"spec,omitempty"`
    +}
    +
    +// MutatingAdmissionPolicy constructs a declarative configuration of the MutatingAdmissionPolicy type for use with
    +// apply.
    +func MutatingAdmissionPolicy(name string) *MutatingAdmissionPolicyApplyConfiguration {
    +	b := &MutatingAdmissionPolicyApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("MutatingAdmissionPolicy")
    +	b.WithAPIVersion("admissionregistration.k8s.io/v1alpha1")
    +	return b
    +}
    +
    +// ExtractMutatingAdmissionPolicy extracts the applied configuration owned by fieldManager from
    +// mutatingAdmissionPolicy. If no managedFields are found in mutatingAdmissionPolicy for fieldManager, a
    +// MutatingAdmissionPolicyApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// mutatingAdmissionPolicy must be a unmodified MutatingAdmissionPolicy API object that was retrieved from the Kubernetes API.
    +// ExtractMutatingAdmissionPolicy provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractMutatingAdmissionPolicy(mutatingAdmissionPolicy *admissionregistrationv1alpha1.MutatingAdmissionPolicy, fieldManager string) (*MutatingAdmissionPolicyApplyConfiguration, error) {
    +	return extractMutatingAdmissionPolicy(mutatingAdmissionPolicy, fieldManager, "")
    +}
    +
    +// ExtractMutatingAdmissionPolicyStatus is the same as ExtractMutatingAdmissionPolicy except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractMutatingAdmissionPolicyStatus(mutatingAdmissionPolicy *admissionregistrationv1alpha1.MutatingAdmissionPolicy, fieldManager string) (*MutatingAdmissionPolicyApplyConfiguration, error) {
    +	return extractMutatingAdmissionPolicy(mutatingAdmissionPolicy, fieldManager, "status")
    +}
    +
    +func extractMutatingAdmissionPolicy(mutatingAdmissionPolicy *admissionregistrationv1alpha1.MutatingAdmissionPolicy, fieldManager string, subresource string) (*MutatingAdmissionPolicyApplyConfiguration, error) {
    +	b := &MutatingAdmissionPolicyApplyConfiguration{}
    +	err := managedfields.ExtractInto(mutatingAdmissionPolicy, internal.Parser().Type("io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicy"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(mutatingAdmissionPolicy.Name)
    +
    +	b.WithKind("MutatingAdmissionPolicy")
    +	b.WithAPIVersion("admissionregistration.k8s.io/v1alpha1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithKind(value string) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithAPIVersion(value string) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithName(value string) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithGenerateName(value string) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithNamespace(value string) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithUID(value types.UID) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithResourceVersion(value string) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithGeneration(value int64) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithCreationTimestamp(value metav1.Time) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithLabels(entries map[string]string) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithAnnotations(entries map[string]string) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithFinalizers(values ...string) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *MutatingAdmissionPolicyApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) WithSpec(value *MutatingAdmissionPolicySpecApplyConfiguration) *MutatingAdmissionPolicyApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *MutatingAdmissionPolicyApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go
    new file mode 100644
    index 000000000000..7cccd291b37a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go
    @@ -0,0 +1,253 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// MutatingAdmissionPolicyBindingApplyConfiguration represents a declarative configuration of the MutatingAdmissionPolicyBinding type for use
    +// with apply.
    +type MutatingAdmissionPolicyBindingApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *MutatingAdmissionPolicyBindingSpecApplyConfiguration `json:"spec,omitempty"`
    +}
    +
    +// MutatingAdmissionPolicyBinding constructs a declarative configuration of the MutatingAdmissionPolicyBinding type for use with
    +// apply.
    +func MutatingAdmissionPolicyBinding(name string) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b := &MutatingAdmissionPolicyBindingApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("MutatingAdmissionPolicyBinding")
    +	b.WithAPIVersion("admissionregistration.k8s.io/v1alpha1")
    +	return b
    +}
    +
    +// ExtractMutatingAdmissionPolicyBinding extracts the applied configuration owned by fieldManager from
    +// mutatingAdmissionPolicyBinding. If no managedFields are found in mutatingAdmissionPolicyBinding for fieldManager, a
    +// MutatingAdmissionPolicyBindingApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// mutatingAdmissionPolicyBinding must be a unmodified MutatingAdmissionPolicyBinding API object that was retrieved from the Kubernetes API.
    +// ExtractMutatingAdmissionPolicyBinding provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractMutatingAdmissionPolicyBinding(mutatingAdmissionPolicyBinding *admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, fieldManager string) (*MutatingAdmissionPolicyBindingApplyConfiguration, error) {
    +	return extractMutatingAdmissionPolicyBinding(mutatingAdmissionPolicyBinding, fieldManager, "")
    +}
    +
    +// ExtractMutatingAdmissionPolicyBindingStatus is the same as ExtractMutatingAdmissionPolicyBinding except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractMutatingAdmissionPolicyBindingStatus(mutatingAdmissionPolicyBinding *admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, fieldManager string) (*MutatingAdmissionPolicyBindingApplyConfiguration, error) {
    +	return extractMutatingAdmissionPolicyBinding(mutatingAdmissionPolicyBinding, fieldManager, "status")
    +}
    +
    +func extractMutatingAdmissionPolicyBinding(mutatingAdmissionPolicyBinding *admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, fieldManager string, subresource string) (*MutatingAdmissionPolicyBindingApplyConfiguration, error) {
    +	b := &MutatingAdmissionPolicyBindingApplyConfiguration{}
    +	err := managedfields.ExtractInto(mutatingAdmissionPolicyBinding, internal.Parser().Type("io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBinding"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(mutatingAdmissionPolicyBinding.Name)
    +
    +	b.WithKind("MutatingAdmissionPolicyBinding")
    +	b.WithAPIVersion("admissionregistration.k8s.io/v1alpha1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithKind(value string) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithAPIVersion(value string) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithName(value string) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithGenerateName(value string) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithNamespace(value string) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithUID(value types.UID) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithResourceVersion(value string) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithGeneration(value int64) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithLabels(entries map[string]string) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithAnnotations(entries map[string]string) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithFinalizers(values ...string) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) WithSpec(value *MutatingAdmissionPolicyBindingSpecApplyConfiguration) *MutatingAdmissionPolicyBindingApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *MutatingAdmissionPolicyBindingApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicybindingspec.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicybindingspec.go
    new file mode 100644
    index 000000000000..04729f42b1f0
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicybindingspec.go
    @@ -0,0 +1,57 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// MutatingAdmissionPolicyBindingSpecApplyConfiguration represents a declarative configuration of the MutatingAdmissionPolicyBindingSpec type for use
    +// with apply.
    +type MutatingAdmissionPolicyBindingSpecApplyConfiguration struct {
    +	PolicyName     *string                           `json:"policyName,omitempty"`
    +	ParamRef       *ParamRefApplyConfiguration       `json:"paramRef,omitempty"`
    +	MatchResources *MatchResourcesApplyConfiguration `json:"matchResources,omitempty"`
    +}
    +
    +// MutatingAdmissionPolicyBindingSpecApplyConfiguration constructs a declarative configuration of the MutatingAdmissionPolicyBindingSpec type for use with
    +// apply.
    +func MutatingAdmissionPolicyBindingSpec() *MutatingAdmissionPolicyBindingSpecApplyConfiguration {
    +	return &MutatingAdmissionPolicyBindingSpecApplyConfiguration{}
    +}
    +
    +// WithPolicyName sets the PolicyName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the PolicyName field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingSpecApplyConfiguration) WithPolicyName(value string) *MutatingAdmissionPolicyBindingSpecApplyConfiguration {
    +	b.PolicyName = &value
    +	return b
    +}
    +
    +// WithParamRef sets the ParamRef field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ParamRef field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingSpecApplyConfiguration) WithParamRef(value *ParamRefApplyConfiguration) *MutatingAdmissionPolicyBindingSpecApplyConfiguration {
    +	b.ParamRef = value
    +	return b
    +}
    +
    +// WithMatchResources sets the MatchResources field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the MatchResources field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicyBindingSpecApplyConfiguration) WithMatchResources(value *MatchResourcesApplyConfiguration) *MutatingAdmissionPolicyBindingSpecApplyConfiguration {
    +	b.MatchResources = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicyspec.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicyspec.go
    new file mode 100644
    index 000000000000..334056a37243
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutatingadmissionpolicyspec.go
    @@ -0,0 +1,113 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	v1 "k8s.io/api/admissionregistration/v1"
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +)
    +
    +// MutatingAdmissionPolicySpecApplyConfiguration represents a declarative configuration of the MutatingAdmissionPolicySpec type for use
    +// with apply.
    +type MutatingAdmissionPolicySpecApplyConfiguration struct {
    +	ParamKind          *ParamKindApplyConfiguration                     `json:"paramKind,omitempty"`
    +	MatchConstraints   *MatchResourcesApplyConfiguration                `json:"matchConstraints,omitempty"`
    +	Variables          []VariableApplyConfiguration                     `json:"variables,omitempty"`
    +	Mutations          []MutationApplyConfiguration                     `json:"mutations,omitempty"`
    +	FailurePolicy      *admissionregistrationv1alpha1.FailurePolicyType `json:"failurePolicy,omitempty"`
    +	MatchConditions    []MatchConditionApplyConfiguration               `json:"matchConditions,omitempty"`
    +	ReinvocationPolicy *v1.ReinvocationPolicyType                       `json:"reinvocationPolicy,omitempty"`
    +}
    +
    +// MutatingAdmissionPolicySpecApplyConfiguration constructs a declarative configuration of the MutatingAdmissionPolicySpec type for use with
    +// apply.
    +func MutatingAdmissionPolicySpec() *MutatingAdmissionPolicySpecApplyConfiguration {
    +	return &MutatingAdmissionPolicySpecApplyConfiguration{}
    +}
    +
    +// WithParamKind sets the ParamKind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ParamKind field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithParamKind(value *ParamKindApplyConfiguration) *MutatingAdmissionPolicySpecApplyConfiguration {
    +	b.ParamKind = value
    +	return b
    +}
    +
    +// WithMatchConstraints sets the MatchConstraints field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the MatchConstraints field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithMatchConstraints(value *MatchResourcesApplyConfiguration) *MutatingAdmissionPolicySpecApplyConfiguration {
    +	b.MatchConstraints = value
    +	return b
    +}
    +
    +// WithVariables adds the given value to the Variables field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Variables field.
    +func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithVariables(values ...*VariableApplyConfiguration) *MutatingAdmissionPolicySpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithVariables")
    +		}
    +		b.Variables = append(b.Variables, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithMutations adds the given value to the Mutations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Mutations field.
    +func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithMutations(values ...*MutationApplyConfiguration) *MutatingAdmissionPolicySpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithMutations")
    +		}
    +		b.Mutations = append(b.Mutations, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFailurePolicy sets the FailurePolicy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the FailurePolicy field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithFailurePolicy(value admissionregistrationv1alpha1.FailurePolicyType) *MutatingAdmissionPolicySpecApplyConfiguration {
    +	b.FailurePolicy = &value
    +	return b
    +}
    +
    +// WithMatchConditions adds the given value to the MatchConditions field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the MatchConditions field.
    +func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithMatchConditions(values ...*MatchConditionApplyConfiguration) *MutatingAdmissionPolicySpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithMatchConditions")
    +		}
    +		b.MatchConditions = append(b.MatchConditions, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithReinvocationPolicy sets the ReinvocationPolicy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ReinvocationPolicy field is set to the value of the last call.
    +func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithReinvocationPolicy(value v1.ReinvocationPolicyType) *MutatingAdmissionPolicySpecApplyConfiguration {
    +	b.ReinvocationPolicy = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutation.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutation.go
    new file mode 100644
    index 000000000000..4ed9d93fdbb7
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/mutation.go
    @@ -0,0 +1,61 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +)
    +
    +// MutationApplyConfiguration represents a declarative configuration of the Mutation type for use
    +// with apply.
    +type MutationApplyConfiguration struct {
    +	PatchType          *admissionregistrationv1alpha1.PatchType `json:"patchType,omitempty"`
    +	ApplyConfiguration *ApplyConfigurationApplyConfiguration    `json:"applyConfiguration,omitempty"`
    +	JSONPatch          *JSONPatchApplyConfiguration             `json:"jsonPatch,omitempty"`
    +}
    +
    +// MutationApplyConfiguration constructs a declarative configuration of the Mutation type for use with
    +// apply.
    +func Mutation() *MutationApplyConfiguration {
    +	return &MutationApplyConfiguration{}
    +}
    +
    +// WithPatchType sets the PatchType field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the PatchType field is set to the value of the last call.
    +func (b *MutationApplyConfiguration) WithPatchType(value admissionregistrationv1alpha1.PatchType) *MutationApplyConfiguration {
    +	b.PatchType = &value
    +	return b
    +}
    +
    +// WithApplyConfiguration sets the ApplyConfiguration field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ApplyConfiguration field is set to the value of the last call.
    +func (b *MutationApplyConfiguration) WithApplyConfiguration(value *ApplyConfigurationApplyConfiguration) *MutationApplyConfiguration {
    +	b.ApplyConfiguration = value
    +	return b
    +}
    +
    +// WithJSONPatch sets the JSONPatch field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the JSONPatch field is set to the value of the last call.
    +func (b *MutationApplyConfiguration) WithJSONPatch(value *JSONPatchApplyConfiguration) *MutationApplyConfiguration {
    +	b.JSONPatch = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/namedrulewithoperations.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/namedrulewithoperations.go
    index bb2a7ba890f3..f630224ac476 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/namedrulewithoperations.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/namedrulewithoperations.go
    @@ -23,14 +23,14 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
     )
     
    -// NamedRuleWithOperationsApplyConfiguration represents an declarative configuration of the NamedRuleWithOperations type for use
    +// NamedRuleWithOperationsApplyConfiguration represents a declarative configuration of the NamedRuleWithOperations type for use
     // with apply.
     type NamedRuleWithOperationsApplyConfiguration struct {
     	ResourceNames                           []string `json:"resourceNames,omitempty"`
     	v1.RuleWithOperationsApplyConfiguration `json:",inline"`
     }
     
    -// NamedRuleWithOperationsApplyConfiguration constructs an declarative configuration of the NamedRuleWithOperations type for use with
    +// NamedRuleWithOperationsApplyConfiguration constructs a declarative configuration of the NamedRuleWithOperations type for use with
     // apply.
     func NamedRuleWithOperations() *NamedRuleWithOperationsApplyConfiguration {
     	return &NamedRuleWithOperationsApplyConfiguration{}
    @@ -51,7 +51,7 @@ func (b *NamedRuleWithOperationsApplyConfiguration) WithResourceNames(values ...
     // If called multiple times, values provided by each call will be appended to the Operations field.
     func (b *NamedRuleWithOperationsApplyConfiguration) WithOperations(values ...admissionregistrationv1.OperationType) *NamedRuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.Operations = append(b.Operations, values[i])
    +		b.RuleWithOperationsApplyConfiguration.Operations = append(b.RuleWithOperationsApplyConfiguration.Operations, values[i])
     	}
     	return b
     }
    @@ -61,7 +61,7 @@ func (b *NamedRuleWithOperationsApplyConfiguration) WithOperations(values ...adm
     // If called multiple times, values provided by each call will be appended to the APIGroups field.
     func (b *NamedRuleWithOperationsApplyConfiguration) WithAPIGroups(values ...string) *NamedRuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.APIGroups = append(b.APIGroups, values[i])
    +		b.RuleApplyConfiguration.APIGroups = append(b.RuleApplyConfiguration.APIGroups, values[i])
     	}
     	return b
     }
    @@ -71,7 +71,7 @@ func (b *NamedRuleWithOperationsApplyConfiguration) WithAPIGroups(values ...stri
     // If called multiple times, values provided by each call will be appended to the APIVersions field.
     func (b *NamedRuleWithOperationsApplyConfiguration) WithAPIVersions(values ...string) *NamedRuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.APIVersions = append(b.APIVersions, values[i])
    +		b.RuleApplyConfiguration.APIVersions = append(b.RuleApplyConfiguration.APIVersions, values[i])
     	}
     	return b
     }
    @@ -81,7 +81,7 @@ func (b *NamedRuleWithOperationsApplyConfiguration) WithAPIVersions(values ...st
     // If called multiple times, values provided by each call will be appended to the Resources field.
     func (b *NamedRuleWithOperationsApplyConfiguration) WithResources(values ...string) *NamedRuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.Resources = append(b.Resources, values[i])
    +		b.RuleApplyConfiguration.Resources = append(b.RuleApplyConfiguration.Resources, values[i])
     	}
     	return b
     }
    @@ -90,6 +90,6 @@ func (b *NamedRuleWithOperationsApplyConfiguration) WithResources(values ...stri
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Scope field is set to the value of the last call.
     func (b *NamedRuleWithOperationsApplyConfiguration) WithScope(value admissionregistrationv1.ScopeType) *NamedRuleWithOperationsApplyConfiguration {
    -	b.Scope = &value
    +	b.RuleApplyConfiguration.Scope = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/paramkind.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/paramkind.go
    index 350993cea0fa..daf17fb2494e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/paramkind.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/paramkind.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1alpha1
     
    -// ParamKindApplyConfiguration represents an declarative configuration of the ParamKind type for use
    +// ParamKindApplyConfiguration represents a declarative configuration of the ParamKind type for use
     // with apply.
     type ParamKindApplyConfiguration struct {
     	APIVersion *string `json:"apiVersion,omitempty"`
     	Kind       *string `json:"kind,omitempty"`
     }
     
    -// ParamKindApplyConfiguration constructs an declarative configuration of the ParamKind type for use with
    +// ParamKindApplyConfiguration constructs a declarative configuration of the ParamKind type for use with
     // apply.
     func ParamKind() *ParamKindApplyConfiguration {
     	return &ParamKindApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/paramref.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/paramref.go
    index 0951cae8a920..669fadbd40a6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/paramref.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/paramref.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ParamRefApplyConfiguration represents an declarative configuration of the ParamRef type for use
    +// ParamRefApplyConfiguration represents a declarative configuration of the ParamRef type for use
     // with apply.
     type ParamRefApplyConfiguration struct {
    -	Name                    *string                               `json:"name,omitempty"`
    -	Namespace               *string                               `json:"namespace,omitempty"`
    -	Selector                *v1.LabelSelectorApplyConfiguration   `json:"selector,omitempty"`
    -	ParameterNotFoundAction *v1alpha1.ParameterNotFoundActionType `json:"parameterNotFoundAction,omitempty"`
    +	Name                    *string                                                    `json:"name,omitempty"`
    +	Namespace               *string                                                    `json:"namespace,omitempty"`
    +	Selector                *v1.LabelSelectorApplyConfiguration                        `json:"selector,omitempty"`
    +	ParameterNotFoundAction *admissionregistrationv1alpha1.ParameterNotFoundActionType `json:"parameterNotFoundAction,omitempty"`
     }
     
    -// ParamRefApplyConfiguration constructs an declarative configuration of the ParamRef type for use with
    +// ParamRefApplyConfiguration constructs a declarative configuration of the ParamRef type for use with
     // apply.
     func ParamRef() *ParamRefApplyConfiguration {
     	return &ParamRefApplyConfiguration{}
    @@ -65,7 +65,7 @@ func (b *ParamRefApplyConfiguration) WithSelector(value *v1.LabelSelectorApplyCo
     // WithParameterNotFoundAction sets the ParameterNotFoundAction field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ParameterNotFoundAction field is set to the value of the last call.
    -func (b *ParamRefApplyConfiguration) WithParameterNotFoundAction(value v1alpha1.ParameterNotFoundActionType) *ParamRefApplyConfiguration {
    +func (b *ParamRefApplyConfiguration) WithParameterNotFoundAction(value admissionregistrationv1alpha1.ParameterNotFoundActionType) *ParamRefApplyConfiguration {
     	b.ParameterNotFoundAction = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/typechecking.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/typechecking.go
    index 42a917071050..d1a7fff50eed 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/typechecking.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/typechecking.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1alpha1
     
    -// TypeCheckingApplyConfiguration represents an declarative configuration of the TypeChecking type for use
    +// TypeCheckingApplyConfiguration represents a declarative configuration of the TypeChecking type for use
     // with apply.
     type TypeCheckingApplyConfiguration struct {
     	ExpressionWarnings []ExpressionWarningApplyConfiguration `json:"expressionWarnings,omitempty"`
     }
     
    -// TypeCheckingApplyConfiguration constructs an declarative configuration of the TypeChecking type for use with
    +// TypeCheckingApplyConfiguration constructs a declarative configuration of the TypeChecking type for use with
     // apply.
     func TypeChecking() *TypeCheckingApplyConfiguration {
     	return &TypeCheckingApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    index c860b85cf743..7fd1c0651ebb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ValidatingAdmissionPolicyApplyConfiguration represents an declarative configuration of the ValidatingAdmissionPolicy type for use
    +// ValidatingAdmissionPolicyApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicy type for use
     // with apply.
     type ValidatingAdmissionPolicyApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type ValidatingAdmissionPolicyApplyConfiguration struct {
     	Status                           *ValidatingAdmissionPolicyStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// ValidatingAdmissionPolicy constructs an declarative configuration of the ValidatingAdmissionPolicy type for use with
    +// ValidatingAdmissionPolicy constructs a declarative configuration of the ValidatingAdmissionPolicy type for use with
     // apply.
     func ValidatingAdmissionPolicy(name string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b := &ValidatingAdmissionPolicyApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractValidatingAdmissionPolicy(validatingAdmissionPolicy *admissionregist
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithKind(value string) *ValidatingAdmissionPolicyApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithKind(value string) *Va
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithAPIVersion(value string) *ValidatingAdmissionPolicyApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithAPIVersion(value strin
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithName(value string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithName(value string) *Va
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithGenerateName(value string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithGenerateName(value str
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithNamespace(value string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithNamespace(value string
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithUID(value types.UID) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithUID(value types.UID) *
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithResourceVersion(value string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithResourceVersion(value
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithGeneration(value int64) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithGeneration(value int64
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithCreationTimestamp(valu
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithDeletionTimestamp(valu
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithDeletionGracePeriodSec
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithLabels(entries map[string]string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithLabels(entries map[str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithAnnotations(entries map[string]string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithOwnerReferences(values
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithOwnerReferences(values
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithFinalizers(values ...string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithStatus(value *Validati
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    index dc08226404f2..ca8ac7dd0966 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ValidatingAdmissionPolicyBindingApplyConfiguration represents an declarative configuration of the ValidatingAdmissionPolicyBinding type for use
    +// ValidatingAdmissionPolicyBindingApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicyBinding type for use
     // with apply.
     type ValidatingAdmissionPolicyBindingApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type ValidatingAdmissionPolicyBindingApplyConfiguration struct {
     	Spec                             *ValidatingAdmissionPolicyBindingSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// ValidatingAdmissionPolicyBinding constructs an declarative configuration of the ValidatingAdmissionPolicyBinding type for use with
    +// ValidatingAdmissionPolicyBinding constructs a declarative configuration of the ValidatingAdmissionPolicyBinding type for use with
     // apply.
     func ValidatingAdmissionPolicyBinding(name string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b := &ValidatingAdmissionPolicyBindingApplyConfiguration{}
    @@ -84,7 +84,7 @@ func extractValidatingAdmissionPolicyBinding(validatingAdmissionPolicyBinding *a
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithKind(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithKind(value stri
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithAPIVersion(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithAPIVersion(valu
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithName(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithName(value stri
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithGenerateName(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithGenerateName(va
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithNamespace(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithNamespace(value
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithUID(value types.UID) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithUID(value types
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithResourceVersion(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,7 +146,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithResourceVersion
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithGeneration(value int64) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithGeneration(valu
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -164,7 +164,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithCreationTimesta
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithDeletionTimesta
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithDeletionGracePe
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithLabels(entries map[string]string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithLabels(entries
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithAnnotations(entries map[string]string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,7 +216,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithOwnerReferences
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,7 +227,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithOwnerReferences
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithFinalizers(values ...string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -245,3 +245,9 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithSpec(value *Val
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicybindingspec.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicybindingspec.go
    index c9a4ff7ab425..0f8e4e435702 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicybindingspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicybindingspec.go
    @@ -22,7 +22,7 @@ import (
     	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
     )
     
    -// ValidatingAdmissionPolicyBindingSpecApplyConfiguration represents an declarative configuration of the ValidatingAdmissionPolicyBindingSpec type for use
    +// ValidatingAdmissionPolicyBindingSpecApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicyBindingSpec type for use
     // with apply.
     type ValidatingAdmissionPolicyBindingSpecApplyConfiguration struct {
     	PolicyName        *string                                          `json:"policyName,omitempty"`
    @@ -31,7 +31,7 @@ type ValidatingAdmissionPolicyBindingSpecApplyConfiguration struct {
     	ValidationActions []admissionregistrationv1alpha1.ValidationAction `json:"validationActions,omitempty"`
     }
     
    -// ValidatingAdmissionPolicyBindingSpecApplyConfiguration constructs an declarative configuration of the ValidatingAdmissionPolicyBindingSpec type for use with
    +// ValidatingAdmissionPolicyBindingSpecApplyConfiguration constructs a declarative configuration of the ValidatingAdmissionPolicyBindingSpec type for use with
     // apply.
     func ValidatingAdmissionPolicyBindingSpec() *ValidatingAdmissionPolicyBindingSpecApplyConfiguration {
     	return &ValidatingAdmissionPolicyBindingSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicyspec.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicyspec.go
    index 7ee320e42881..d5d3529949e3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicyspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicyspec.go
    @@ -22,7 +22,7 @@ import (
     	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
     )
     
    -// ValidatingAdmissionPolicySpecApplyConfiguration represents an declarative configuration of the ValidatingAdmissionPolicySpec type for use
    +// ValidatingAdmissionPolicySpecApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicySpec type for use
     // with apply.
     type ValidatingAdmissionPolicySpecApplyConfiguration struct {
     	ParamKind        *ParamKindApplyConfiguration                     `json:"paramKind,omitempty"`
    @@ -34,7 +34,7 @@ type ValidatingAdmissionPolicySpecApplyConfiguration struct {
     	Variables        []VariableApplyConfiguration                     `json:"variables,omitempty"`
     }
     
    -// ValidatingAdmissionPolicySpecApplyConfiguration constructs an declarative configuration of the ValidatingAdmissionPolicySpec type for use with
    +// ValidatingAdmissionPolicySpecApplyConfiguration constructs a declarative configuration of the ValidatingAdmissionPolicySpec type for use with
     // apply.
     func ValidatingAdmissionPolicySpec() *ValidatingAdmissionPolicySpecApplyConfiguration {
     	return &ValidatingAdmissionPolicySpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicystatus.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicystatus.go
    index 821184c8a859..2fec5ba477c9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicystatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicystatus.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ValidatingAdmissionPolicyStatusApplyConfiguration represents an declarative configuration of the ValidatingAdmissionPolicyStatus type for use
    +// ValidatingAdmissionPolicyStatusApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicyStatus type for use
     // with apply.
     type ValidatingAdmissionPolicyStatusApplyConfiguration struct {
     	ObservedGeneration *int64                           `json:"observedGeneration,omitempty"`
    @@ -30,7 +30,7 @@ type ValidatingAdmissionPolicyStatusApplyConfiguration struct {
     	Conditions         []v1.ConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// ValidatingAdmissionPolicyStatusApplyConfiguration constructs an declarative configuration of the ValidatingAdmissionPolicyStatus type for use with
    +// ValidatingAdmissionPolicyStatusApplyConfiguration constructs a declarative configuration of the ValidatingAdmissionPolicyStatus type for use with
     // apply.
     func ValidatingAdmissionPolicyStatus() *ValidatingAdmissionPolicyStatusApplyConfiguration {
     	return &ValidatingAdmissionPolicyStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validation.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validation.go
    index 9a5fc8475a70..5f7304373458 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validation.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validation.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// ValidationApplyConfiguration represents an declarative configuration of the Validation type for use
    +// ValidationApplyConfiguration represents a declarative configuration of the Validation type for use
     // with apply.
     type ValidationApplyConfiguration struct {
     	Expression        *string          `json:"expression,omitempty"`
    @@ -31,7 +31,7 @@ type ValidationApplyConfiguration struct {
     	MessageExpression *string          `json:"messageExpression,omitempty"`
     }
     
    -// ValidationApplyConfiguration constructs an declarative configuration of the Validation type for use with
    +// ValidationApplyConfiguration constructs a declarative configuration of the Validation type for use with
     // apply.
     func Validation() *ValidationApplyConfiguration {
     	return &ValidationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/variable.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/variable.go
    index 2c70a8cfb5a0..0459dae655c7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/variable.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/variable.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1alpha1
     
    -// VariableApplyConfiguration represents an declarative configuration of the Variable type for use
    +// VariableApplyConfiguration represents a declarative configuration of the Variable type for use
     // with apply.
     type VariableApplyConfiguration struct {
     	Name       *string `json:"name,omitempty"`
     	Expression *string `json:"expression,omitempty"`
     }
     
    -// VariableApplyConfiguration constructs an declarative configuration of the Variable type for use with
    +// VariableApplyConfiguration constructs a declarative configuration of the Variable type for use with
     // apply.
     func Variable() *VariableApplyConfiguration {
     	return &VariableApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/auditannotation.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/auditannotation.go
    index e92fba0ddbc0..8718db944755 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/auditannotation.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/auditannotation.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// AuditAnnotationApplyConfiguration represents an declarative configuration of the AuditAnnotation type for use
    +// AuditAnnotationApplyConfiguration represents a declarative configuration of the AuditAnnotation type for use
     // with apply.
     type AuditAnnotationApplyConfiguration struct {
     	Key             *string `json:"key,omitempty"`
     	ValueExpression *string `json:"valueExpression,omitempty"`
     }
     
    -// AuditAnnotationApplyConfiguration constructs an declarative configuration of the AuditAnnotation type for use with
    +// AuditAnnotationApplyConfiguration constructs a declarative configuration of the AuditAnnotation type for use with
     // apply.
     func AuditAnnotation() *AuditAnnotationApplyConfiguration {
     	return &AuditAnnotationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/expressionwarning.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/expressionwarning.go
    index 059c1b94ba2e..66cfc8cdc757 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/expressionwarning.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/expressionwarning.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// ExpressionWarningApplyConfiguration represents an declarative configuration of the ExpressionWarning type for use
    +// ExpressionWarningApplyConfiguration represents a declarative configuration of the ExpressionWarning type for use
     // with apply.
     type ExpressionWarningApplyConfiguration struct {
     	FieldRef *string `json:"fieldRef,omitempty"`
     	Warning  *string `json:"warning,omitempty"`
     }
     
    -// ExpressionWarningApplyConfiguration constructs an declarative configuration of the ExpressionWarning type for use with
    +// ExpressionWarningApplyConfiguration constructs a declarative configuration of the ExpressionWarning type for use with
     // apply.
     func ExpressionWarning() *ExpressionWarningApplyConfiguration {
     	return &ExpressionWarningApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/matchcondition.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/matchcondition.go
    index d099b6b6eae5..63db7fc801e3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/matchcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/matchcondition.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// MatchConditionApplyConfiguration represents an declarative configuration of the MatchCondition type for use
    +// MatchConditionApplyConfiguration represents a declarative configuration of the MatchCondition type for use
     // with apply.
     type MatchConditionApplyConfiguration struct {
     	Name       *string `json:"name,omitempty"`
     	Expression *string `json:"expression,omitempty"`
     }
     
    -// MatchConditionApplyConfiguration constructs an declarative configuration of the MatchCondition type for use with
    +// MatchConditionApplyConfiguration constructs a declarative configuration of the MatchCondition type for use with
     // apply.
     func MatchCondition() *MatchConditionApplyConfiguration {
     	return &MatchConditionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/matchresources.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/matchresources.go
    index 25d4139db6a2..4005e55a333f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/matchresources.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/matchresources.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// MatchResourcesApplyConfiguration represents an declarative configuration of the MatchResources type for use
    +// MatchResourcesApplyConfiguration represents a declarative configuration of the MatchResources type for use
     // with apply.
     type MatchResourcesApplyConfiguration struct {
     	NamespaceSelector    *v1.LabelSelectorApplyConfiguration           `json:"namespaceSelector,omitempty"`
    @@ -33,7 +33,7 @@ type MatchResourcesApplyConfiguration struct {
     	MatchPolicy          *admissionregistrationv1beta1.MatchPolicyType `json:"matchPolicy,omitempty"`
     }
     
    -// MatchResourcesApplyConfiguration constructs an declarative configuration of the MatchResources type for use with
    +// MatchResourcesApplyConfiguration constructs a declarative configuration of the MatchResources type for use with
     // apply.
     func MatchResources() *MatchResourcesApplyConfiguration {
     	return &MatchResourcesApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingwebhook.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingwebhook.go
    index 54845341f481..b2ab76aefdb2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingwebhook.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingwebhook.go
    @@ -24,7 +24,7 @@ import (
     	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// MutatingWebhookApplyConfiguration represents an declarative configuration of the MutatingWebhook type for use
    +// MutatingWebhookApplyConfiguration represents a declarative configuration of the MutatingWebhook type for use
     // with apply.
     type MutatingWebhookApplyConfiguration struct {
     	Name                    *string                                              `json:"name,omitempty"`
    @@ -41,7 +41,7 @@ type MutatingWebhookApplyConfiguration struct {
     	MatchConditions         []MatchConditionApplyConfiguration                   `json:"matchConditions,omitempty"`
     }
     
    -// MutatingWebhookApplyConfiguration constructs an declarative configuration of the MutatingWebhook type for use with
    +// MutatingWebhookApplyConfiguration constructs a declarative configuration of the MutatingWebhook type for use with
     // apply.
     func MutatingWebhook() *MutatingWebhookApplyConfiguration {
     	return &MutatingWebhookApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    index 10dd034e2592..15c54c1253eb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// MutatingWebhookConfigurationApplyConfiguration represents an declarative configuration of the MutatingWebhookConfiguration type for use
    +// MutatingWebhookConfigurationApplyConfiguration represents a declarative configuration of the MutatingWebhookConfiguration type for use
     // with apply.
     type MutatingWebhookConfigurationApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type MutatingWebhookConfigurationApplyConfiguration struct {
     	Webhooks                         []MutatingWebhookApplyConfiguration `json:"webhooks,omitempty"`
     }
     
    -// MutatingWebhookConfiguration constructs an declarative configuration of the MutatingWebhookConfiguration type for use with
    +// MutatingWebhookConfiguration constructs a declarative configuration of the MutatingWebhookConfiguration type for use with
     // apply.
     func MutatingWebhookConfiguration(name string) *MutatingWebhookConfigurationApplyConfiguration {
     	b := &MutatingWebhookConfigurationApplyConfiguration{}
    @@ -84,7 +84,7 @@ func extractMutatingWebhookConfiguration(mutatingWebhookConfiguration *admission
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithKind(value string) *MutatingWebhookConfigurationApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithKind(value string)
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithAPIVersion(value string) *MutatingWebhookConfigurationApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithAPIVersion(value st
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithName(value string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithName(value string)
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithGenerateName(value string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithGenerateName(value
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithNamespace(value string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithNamespace(value str
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithUID(value types.UID) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithUID(value types.UID
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithResourceVersion(value string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,7 +146,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithResourceVersion(val
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithGeneration(value int64) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithGeneration(value in
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithCreationTimestamp(value metav1.Time) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -164,7 +164,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithCreationTimestamp(v
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithDeletionTimestamp(v
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithDeletionGracePeriod
     // overwriting an existing map entries in Labels field with the same key.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithLabels(entries map[string]string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithLabels(entries map[
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithAnnotations(entries map[string]string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,7 +216,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithOwnerReferences(val
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,7 +227,7 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithOwnerReferences(val
     func (b *MutatingWebhookConfigurationApplyConfiguration) WithFinalizers(values ...string) *MutatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -250,3 +250,9 @@ func (b *MutatingWebhookConfigurationApplyConfiguration) WithWebhooks(values ...
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *MutatingWebhookConfigurationApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/namedrulewithoperations.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/namedrulewithoperations.go
    index fa346c4a57b0..62c617d2fa05 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/namedrulewithoperations.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/namedrulewithoperations.go
    @@ -23,14 +23,14 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
     )
     
    -// NamedRuleWithOperationsApplyConfiguration represents an declarative configuration of the NamedRuleWithOperations type for use
    +// NamedRuleWithOperationsApplyConfiguration represents a declarative configuration of the NamedRuleWithOperations type for use
     // with apply.
     type NamedRuleWithOperationsApplyConfiguration struct {
     	ResourceNames                           []string `json:"resourceNames,omitempty"`
     	v1.RuleWithOperationsApplyConfiguration `json:",inline"`
     }
     
    -// NamedRuleWithOperationsApplyConfiguration constructs an declarative configuration of the NamedRuleWithOperations type for use with
    +// NamedRuleWithOperationsApplyConfiguration constructs a declarative configuration of the NamedRuleWithOperations type for use with
     // apply.
     func NamedRuleWithOperations() *NamedRuleWithOperationsApplyConfiguration {
     	return &NamedRuleWithOperationsApplyConfiguration{}
    @@ -51,7 +51,7 @@ func (b *NamedRuleWithOperationsApplyConfiguration) WithResourceNames(values ...
     // If called multiple times, values provided by each call will be appended to the Operations field.
     func (b *NamedRuleWithOperationsApplyConfiguration) WithOperations(values ...admissionregistrationv1.OperationType) *NamedRuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.Operations = append(b.Operations, values[i])
    +		b.RuleWithOperationsApplyConfiguration.Operations = append(b.RuleWithOperationsApplyConfiguration.Operations, values[i])
     	}
     	return b
     }
    @@ -61,7 +61,7 @@ func (b *NamedRuleWithOperationsApplyConfiguration) WithOperations(values ...adm
     // If called multiple times, values provided by each call will be appended to the APIGroups field.
     func (b *NamedRuleWithOperationsApplyConfiguration) WithAPIGroups(values ...string) *NamedRuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.APIGroups = append(b.APIGroups, values[i])
    +		b.RuleApplyConfiguration.APIGroups = append(b.RuleApplyConfiguration.APIGroups, values[i])
     	}
     	return b
     }
    @@ -71,7 +71,7 @@ func (b *NamedRuleWithOperationsApplyConfiguration) WithAPIGroups(values ...stri
     // If called multiple times, values provided by each call will be appended to the APIVersions field.
     func (b *NamedRuleWithOperationsApplyConfiguration) WithAPIVersions(values ...string) *NamedRuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.APIVersions = append(b.APIVersions, values[i])
    +		b.RuleApplyConfiguration.APIVersions = append(b.RuleApplyConfiguration.APIVersions, values[i])
     	}
     	return b
     }
    @@ -81,7 +81,7 @@ func (b *NamedRuleWithOperationsApplyConfiguration) WithAPIVersions(values ...st
     // If called multiple times, values provided by each call will be appended to the Resources field.
     func (b *NamedRuleWithOperationsApplyConfiguration) WithResources(values ...string) *NamedRuleWithOperationsApplyConfiguration {
     	for i := range values {
    -		b.Resources = append(b.Resources, values[i])
    +		b.RuleApplyConfiguration.Resources = append(b.RuleApplyConfiguration.Resources, values[i])
     	}
     	return b
     }
    @@ -90,6 +90,6 @@ func (b *NamedRuleWithOperationsApplyConfiguration) WithResources(values ...stri
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Scope field is set to the value of the last call.
     func (b *NamedRuleWithOperationsApplyConfiguration) WithScope(value admissionregistrationv1.ScopeType) *NamedRuleWithOperationsApplyConfiguration {
    -	b.Scope = &value
    +	b.RuleApplyConfiguration.Scope = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/paramkind.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/paramkind.go
    index 6050e6025126..39831252818d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/paramkind.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/paramkind.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// ParamKindApplyConfiguration represents an declarative configuration of the ParamKind type for use
    +// ParamKindApplyConfiguration represents a declarative configuration of the ParamKind type for use
     // with apply.
     type ParamKindApplyConfiguration struct {
     	APIVersion *string `json:"apiVersion,omitempty"`
     	Kind       *string `json:"kind,omitempty"`
     }
     
    -// ParamKindApplyConfiguration constructs an declarative configuration of the ParamKind type for use with
    +// ParamKindApplyConfiguration constructs a declarative configuration of the ParamKind type for use with
     // apply.
     func ParamKind() *ParamKindApplyConfiguration {
     	return &ParamKindApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/paramref.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/paramref.go
    index 2be98dbc5251..5143b0cb90e9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/paramref.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/paramref.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ParamRefApplyConfiguration represents an declarative configuration of the ParamRef type for use
    +// ParamRefApplyConfiguration represents a declarative configuration of the ParamRef type for use
     // with apply.
     type ParamRefApplyConfiguration struct {
    -	Name                    *string                              `json:"name,omitempty"`
    -	Namespace               *string                              `json:"namespace,omitempty"`
    -	Selector                *v1.LabelSelectorApplyConfiguration  `json:"selector,omitempty"`
    -	ParameterNotFoundAction *v1beta1.ParameterNotFoundActionType `json:"parameterNotFoundAction,omitempty"`
    +	Name                    *string                                                   `json:"name,omitempty"`
    +	Namespace               *string                                                   `json:"namespace,omitempty"`
    +	Selector                *v1.LabelSelectorApplyConfiguration                       `json:"selector,omitempty"`
    +	ParameterNotFoundAction *admissionregistrationv1beta1.ParameterNotFoundActionType `json:"parameterNotFoundAction,omitempty"`
     }
     
    -// ParamRefApplyConfiguration constructs an declarative configuration of the ParamRef type for use with
    +// ParamRefApplyConfiguration constructs a declarative configuration of the ParamRef type for use with
     // apply.
     func ParamRef() *ParamRefApplyConfiguration {
     	return &ParamRefApplyConfiguration{}
    @@ -65,7 +65,7 @@ func (b *ParamRefApplyConfiguration) WithSelector(value *v1.LabelSelectorApplyCo
     // WithParameterNotFoundAction sets the ParameterNotFoundAction field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ParameterNotFoundAction field is set to the value of the last call.
    -func (b *ParamRefApplyConfiguration) WithParameterNotFoundAction(value v1beta1.ParameterNotFoundActionType) *ParamRefApplyConfiguration {
    +func (b *ParamRefApplyConfiguration) WithParameterNotFoundAction(value admissionregistrationv1beta1.ParameterNotFoundActionType) *ParamRefApplyConfiguration {
     	b.ParameterNotFoundAction = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/servicereference.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/servicereference.go
    index c21b57490853..70cc6b5b2719 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/servicereference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/servicereference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// ServiceReferenceApplyConfiguration represents an declarative configuration of the ServiceReference type for use
    +// ServiceReferenceApplyConfiguration represents a declarative configuration of the ServiceReference type for use
     // with apply.
     type ServiceReferenceApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
    @@ -27,7 +27,7 @@ type ServiceReferenceApplyConfiguration struct {
     	Port      *int32  `json:"port,omitempty"`
     }
     
    -// ServiceReferenceApplyConfiguration constructs an declarative configuration of the ServiceReference type for use with
    +// ServiceReferenceApplyConfiguration constructs a declarative configuration of the ServiceReference type for use with
     // apply.
     func ServiceReference() *ServiceReferenceApplyConfiguration {
     	return &ServiceReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/typechecking.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/typechecking.go
    index 07baf334cd39..cea6e11deed3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/typechecking.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/typechecking.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// TypeCheckingApplyConfiguration represents an declarative configuration of the TypeChecking type for use
    +// TypeCheckingApplyConfiguration represents a declarative configuration of the TypeChecking type for use
     // with apply.
     type TypeCheckingApplyConfiguration struct {
     	ExpressionWarnings []ExpressionWarningApplyConfiguration `json:"expressionWarnings,omitempty"`
     }
     
    -// TypeCheckingApplyConfiguration constructs an declarative configuration of the TypeChecking type for use with
    +// TypeCheckingApplyConfiguration constructs a declarative configuration of the TypeChecking type for use with
     // apply.
     func TypeChecking() *TypeCheckingApplyConfiguration {
     	return &TypeCheckingApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicy.go
    index e144bc9f701c..35a8adbf73d9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicy.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ValidatingAdmissionPolicyApplyConfiguration represents an declarative configuration of the ValidatingAdmissionPolicy type for use
    +// ValidatingAdmissionPolicyApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicy type for use
     // with apply.
     type ValidatingAdmissionPolicyApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type ValidatingAdmissionPolicyApplyConfiguration struct {
     	Status                           *ValidatingAdmissionPolicyStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// ValidatingAdmissionPolicy constructs an declarative configuration of the ValidatingAdmissionPolicy type for use with
    +// ValidatingAdmissionPolicy constructs a declarative configuration of the ValidatingAdmissionPolicy type for use with
     // apply.
     func ValidatingAdmissionPolicy(name string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b := &ValidatingAdmissionPolicyApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractValidatingAdmissionPolicy(validatingAdmissionPolicy *admissionregist
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithKind(value string) *ValidatingAdmissionPolicyApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithKind(value string) *Va
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithAPIVersion(value string) *ValidatingAdmissionPolicyApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithAPIVersion(value strin
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithName(value string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithName(value string) *Va
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithGenerateName(value string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithGenerateName(value str
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithNamespace(value string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithNamespace(value string
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithUID(value types.UID) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithUID(value types.UID) *
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithResourceVersion(value string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithResourceVersion(value
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithGeneration(value int64) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithGeneration(value int64
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithCreationTimestamp(valu
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithDeletionTimestamp(valu
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithDeletionGracePeriodSec
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithLabels(entries map[string]string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithLabels(entries map[str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithAnnotations(entries map[string]string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithOwnerReferences(values
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithOwnerReferences(values
     func (b *ValidatingAdmissionPolicyApplyConfiguration) WithFinalizers(values ...string) *ValidatingAdmissionPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *ValidatingAdmissionPolicyApplyConfiguration) WithStatus(value *Validati
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ValidatingAdmissionPolicyApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    index 0dc06aedecdd..191d045ef03f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ValidatingAdmissionPolicyBindingApplyConfiguration represents an declarative configuration of the ValidatingAdmissionPolicyBinding type for use
    +// ValidatingAdmissionPolicyBindingApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicyBinding type for use
     // with apply.
     type ValidatingAdmissionPolicyBindingApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type ValidatingAdmissionPolicyBindingApplyConfiguration struct {
     	Spec                             *ValidatingAdmissionPolicyBindingSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// ValidatingAdmissionPolicyBinding constructs an declarative configuration of the ValidatingAdmissionPolicyBinding type for use with
    +// ValidatingAdmissionPolicyBinding constructs a declarative configuration of the ValidatingAdmissionPolicyBinding type for use with
     // apply.
     func ValidatingAdmissionPolicyBinding(name string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b := &ValidatingAdmissionPolicyBindingApplyConfiguration{}
    @@ -84,7 +84,7 @@ func extractValidatingAdmissionPolicyBinding(validatingAdmissionPolicyBinding *a
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithKind(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithKind(value stri
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithAPIVersion(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithAPIVersion(valu
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithName(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithName(value stri
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithGenerateName(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithGenerateName(va
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithNamespace(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithNamespace(value
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithUID(value types.UID) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithUID(value types
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithResourceVersion(value string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,7 +146,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithResourceVersion
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithGeneration(value int64) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithGeneration(valu
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -164,7 +164,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithCreationTimesta
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithDeletionTimesta
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithDeletionGracePe
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithLabels(entries map[string]string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithLabels(entries
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithAnnotations(entries map[string]string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,7 +216,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithOwnerReferences
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,7 +227,7 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithOwnerReferences
     func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithFinalizers(values ...string) *ValidatingAdmissionPolicyBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -245,3 +245,9 @@ func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) WithSpec(value *Val
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ValidatingAdmissionPolicyBindingApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicybindingspec.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicybindingspec.go
    index d20a78efffb0..bddc3a40c77d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicybindingspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicybindingspec.go
    @@ -22,7 +22,7 @@ import (
     	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     )
     
    -// ValidatingAdmissionPolicyBindingSpecApplyConfiguration represents an declarative configuration of the ValidatingAdmissionPolicyBindingSpec type for use
    +// ValidatingAdmissionPolicyBindingSpecApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicyBindingSpec type for use
     // with apply.
     type ValidatingAdmissionPolicyBindingSpecApplyConfiguration struct {
     	PolicyName        *string                                         `json:"policyName,omitempty"`
    @@ -31,7 +31,7 @@ type ValidatingAdmissionPolicyBindingSpecApplyConfiguration struct {
     	ValidationActions []admissionregistrationv1beta1.ValidationAction `json:"validationActions,omitempty"`
     }
     
    -// ValidatingAdmissionPolicyBindingSpecApplyConfiguration constructs an declarative configuration of the ValidatingAdmissionPolicyBindingSpec type for use with
    +// ValidatingAdmissionPolicyBindingSpecApplyConfiguration constructs a declarative configuration of the ValidatingAdmissionPolicyBindingSpec type for use with
     // apply.
     func ValidatingAdmissionPolicyBindingSpec() *ValidatingAdmissionPolicyBindingSpecApplyConfiguration {
     	return &ValidatingAdmissionPolicyBindingSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicyspec.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicyspec.go
    index c6e938910337..8b235337d705 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicyspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicyspec.go
    @@ -22,7 +22,7 @@ import (
     	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     )
     
    -// ValidatingAdmissionPolicySpecApplyConfiguration represents an declarative configuration of the ValidatingAdmissionPolicySpec type for use
    +// ValidatingAdmissionPolicySpecApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicySpec type for use
     // with apply.
     type ValidatingAdmissionPolicySpecApplyConfiguration struct {
     	ParamKind        *ParamKindApplyConfiguration                    `json:"paramKind,omitempty"`
    @@ -34,7 +34,7 @@ type ValidatingAdmissionPolicySpecApplyConfiguration struct {
     	Variables        []VariableApplyConfiguration                    `json:"variables,omitempty"`
     }
     
    -// ValidatingAdmissionPolicySpecApplyConfiguration constructs an declarative configuration of the ValidatingAdmissionPolicySpec type for use with
    +// ValidatingAdmissionPolicySpecApplyConfiguration constructs a declarative configuration of the ValidatingAdmissionPolicySpec type for use with
     // apply.
     func ValidatingAdmissionPolicySpec() *ValidatingAdmissionPolicySpecApplyConfiguration {
     	return &ValidatingAdmissionPolicySpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicystatus.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicystatus.go
    index e3e6d417edd5..4612af0cffa0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicystatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicystatus.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ValidatingAdmissionPolicyStatusApplyConfiguration represents an declarative configuration of the ValidatingAdmissionPolicyStatus type for use
    +// ValidatingAdmissionPolicyStatusApplyConfiguration represents a declarative configuration of the ValidatingAdmissionPolicyStatus type for use
     // with apply.
     type ValidatingAdmissionPolicyStatusApplyConfiguration struct {
     	ObservedGeneration *int64                           `json:"observedGeneration,omitempty"`
    @@ -30,7 +30,7 @@ type ValidatingAdmissionPolicyStatusApplyConfiguration struct {
     	Conditions         []v1.ConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// ValidatingAdmissionPolicyStatusApplyConfiguration constructs an declarative configuration of the ValidatingAdmissionPolicyStatus type for use with
    +// ValidatingAdmissionPolicyStatusApplyConfiguration constructs a declarative configuration of the ValidatingAdmissionPolicyStatus type for use with
     // apply.
     func ValidatingAdmissionPolicyStatus() *ValidatingAdmissionPolicyStatusApplyConfiguration {
     	return &ValidatingAdmissionPolicyStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingwebhook.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingwebhook.go
    index 8c5c341bade2..1e107d68f7bc 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingwebhook.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingwebhook.go
    @@ -24,7 +24,7 @@ import (
     	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ValidatingWebhookApplyConfiguration represents an declarative configuration of the ValidatingWebhook type for use
    +// ValidatingWebhookApplyConfiguration represents a declarative configuration of the ValidatingWebhook type for use
     // with apply.
     type ValidatingWebhookApplyConfiguration struct {
     	Name                    *string                                         `json:"name,omitempty"`
    @@ -40,7 +40,7 @@ type ValidatingWebhookApplyConfiguration struct {
     	MatchConditions         []MatchConditionApplyConfiguration              `json:"matchConditions,omitempty"`
     }
     
    -// ValidatingWebhookApplyConfiguration constructs an declarative configuration of the ValidatingWebhook type for use with
    +// ValidatingWebhookApplyConfiguration constructs a declarative configuration of the ValidatingWebhook type for use with
     // apply.
     func ValidatingWebhook() *ValidatingWebhookApplyConfiguration {
     	return &ValidatingWebhookApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    index 75f1b9d716ad..e775e55a32c7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ValidatingWebhookConfigurationApplyConfiguration represents an declarative configuration of the ValidatingWebhookConfiguration type for use
    +// ValidatingWebhookConfigurationApplyConfiguration represents a declarative configuration of the ValidatingWebhookConfiguration type for use
     // with apply.
     type ValidatingWebhookConfigurationApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type ValidatingWebhookConfigurationApplyConfiguration struct {
     	Webhooks                         []ValidatingWebhookApplyConfiguration `json:"webhooks,omitempty"`
     }
     
    -// ValidatingWebhookConfiguration constructs an declarative configuration of the ValidatingWebhookConfiguration type for use with
    +// ValidatingWebhookConfiguration constructs a declarative configuration of the ValidatingWebhookConfiguration type for use with
     // apply.
     func ValidatingWebhookConfiguration(name string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b := &ValidatingWebhookConfigurationApplyConfiguration{}
    @@ -84,7 +84,7 @@ func extractValidatingWebhookConfiguration(validatingWebhookConfiguration *admis
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithKind(value string) *ValidatingWebhookConfigurationApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithKind(value string
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithAPIVersion(value string) *ValidatingWebhookConfigurationApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithAPIVersion(value
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithName(value string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithName(value string
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithGenerateName(value string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithGenerateName(valu
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithNamespace(value string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithNamespace(value s
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithUID(value types.UID) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithUID(value types.U
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithResourceVersion(value string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,7 +146,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithResourceVersion(v
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithGeneration(value int64) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithGeneration(value
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -164,7 +164,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithCreationTimestamp
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithDeletionTimestamp
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithDeletionGracePeri
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithLabels(entries map[string]string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithLabels(entries ma
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithAnnotations(entries map[string]string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,7 +216,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithOwnerReferences(v
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,7 +227,7 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithOwnerReferences(v
     func (b *ValidatingWebhookConfigurationApplyConfiguration) WithFinalizers(values ...string) *ValidatingWebhookConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -250,3 +250,9 @@ func (b *ValidatingWebhookConfigurationApplyConfiguration) WithWebhooks(values .
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ValidatingWebhookConfigurationApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validation.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validation.go
    index ed9ff1ac0c27..019e8e7aa968 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validation.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validation.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// ValidationApplyConfiguration represents an declarative configuration of the Validation type for use
    +// ValidationApplyConfiguration represents a declarative configuration of the Validation type for use
     // with apply.
     type ValidationApplyConfiguration struct {
     	Expression        *string          `json:"expression,omitempty"`
    @@ -31,7 +31,7 @@ type ValidationApplyConfiguration struct {
     	MessageExpression *string          `json:"messageExpression,omitempty"`
     }
     
    -// ValidationApplyConfiguration constructs an declarative configuration of the Validation type for use with
    +// ValidationApplyConfiguration constructs a declarative configuration of the Validation type for use with
     // apply.
     func Validation() *ValidationApplyConfiguration {
     	return &ValidationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/variable.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/variable.go
    index 0fc294c65d51..0ece197db2a1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/variable.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/variable.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// VariableApplyConfiguration represents an declarative configuration of the Variable type for use
    +// VariableApplyConfiguration represents a declarative configuration of the Variable type for use
     // with apply.
     type VariableApplyConfiguration struct {
     	Name       *string `json:"name,omitempty"`
     	Expression *string `json:"expression,omitempty"`
     }
     
    -// VariableApplyConfiguration constructs an declarative configuration of the Variable type for use with
    +// VariableApplyConfiguration constructs a declarative configuration of the Variable type for use with
     // apply.
     func Variable() *VariableApplyConfiguration {
     	return &VariableApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/webhookclientconfig.go b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/webhookclientconfig.go
    index 490f9d5f3f8f..76ff71b4aec3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/webhookclientconfig.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/webhookclientconfig.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// WebhookClientConfigApplyConfiguration represents an declarative configuration of the WebhookClientConfig type for use
    +// WebhookClientConfigApplyConfiguration represents a declarative configuration of the WebhookClientConfig type for use
     // with apply.
     type WebhookClientConfigApplyConfiguration struct {
     	URL      *string                             `json:"url,omitempty"`
    @@ -26,7 +26,7 @@ type WebhookClientConfigApplyConfiguration struct {
     	CABundle []byte                              `json:"caBundle,omitempty"`
     }
     
    -// WebhookClientConfigApplyConfiguration constructs an declarative configuration of the WebhookClientConfig type for use with
    +// WebhookClientConfigApplyConfiguration constructs a declarative configuration of the WebhookClientConfig type for use with
     // apply.
     func WebhookClientConfig() *WebhookClientConfigApplyConfiguration {
     	return &WebhookClientConfigApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/serverstorageversion.go b/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/serverstorageversion.go
    index 81c56330bb46..8394298b93ed 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/serverstorageversion.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/serverstorageversion.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1alpha1
     
    -// ServerStorageVersionApplyConfiguration represents an declarative configuration of the ServerStorageVersion type for use
    +// ServerStorageVersionApplyConfiguration represents a declarative configuration of the ServerStorageVersion type for use
     // with apply.
     type ServerStorageVersionApplyConfiguration struct {
     	APIServerID       *string  `json:"apiServerID,omitempty"`
    @@ -27,7 +27,7 @@ type ServerStorageVersionApplyConfiguration struct {
     	ServedVersions    []string `json:"servedVersions,omitempty"`
     }
     
    -// ServerStorageVersionApplyConfiguration constructs an declarative configuration of the ServerStorageVersion type for use with
    +// ServerStorageVersionApplyConfiguration constructs a declarative configuration of the ServerStorageVersion type for use with
     // apply.
     func ServerStorageVersion() *ServerStorageVersionApplyConfiguration {
     	return &ServerStorageVersionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversion.go b/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversion.go
    index 6b9f1783902f..0061d8afb050 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversion.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversion.go
    @@ -19,7 +19,7 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
    +	apiserverinternalv1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    @@ -27,16 +27,16 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// StorageVersionApplyConfiguration represents an declarative configuration of the StorageVersion type for use
    +// StorageVersionApplyConfiguration represents a declarative configuration of the StorageVersion type for use
     // with apply.
     type StorageVersionApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
     	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *v1alpha1.StorageVersionSpec            `json:"spec,omitempty"`
    -	Status                           *StorageVersionStatusApplyConfiguration `json:"status,omitempty"`
    +	Spec                             *apiserverinternalv1alpha1.StorageVersionSpec `json:"spec,omitempty"`
    +	Status                           *StorageVersionStatusApplyConfiguration       `json:"status,omitempty"`
     }
     
    -// StorageVersion constructs an declarative configuration of the StorageVersion type for use with
    +// StorageVersion constructs a declarative configuration of the StorageVersion type for use with
     // apply.
     func StorageVersion(name string) *StorageVersionApplyConfiguration {
     	b := &StorageVersionApplyConfiguration{}
    @@ -57,18 +57,18 @@ func StorageVersion(name string) *StorageVersionApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractStorageVersion(storageVersion *v1alpha1.StorageVersion, fieldManager string) (*StorageVersionApplyConfiguration, error) {
    +func ExtractStorageVersion(storageVersion *apiserverinternalv1alpha1.StorageVersion, fieldManager string) (*StorageVersionApplyConfiguration, error) {
     	return extractStorageVersion(storageVersion, fieldManager, "")
     }
     
     // ExtractStorageVersionStatus is the same as ExtractStorageVersion except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractStorageVersionStatus(storageVersion *v1alpha1.StorageVersion, fieldManager string) (*StorageVersionApplyConfiguration, error) {
    +func ExtractStorageVersionStatus(storageVersion *apiserverinternalv1alpha1.StorageVersion, fieldManager string) (*StorageVersionApplyConfiguration, error) {
     	return extractStorageVersion(storageVersion, fieldManager, "status")
     }
     
    -func extractStorageVersion(storageVersion *v1alpha1.StorageVersion, fieldManager string, subresource string) (*StorageVersionApplyConfiguration, error) {
    +func extractStorageVersion(storageVersion *apiserverinternalv1alpha1.StorageVersion, fieldManager string, subresource string) (*StorageVersionApplyConfiguration, error) {
     	b := &StorageVersionApplyConfiguration{}
     	err := managedfields.ExtractInto(storageVersion, internal.Parser().Type("io.k8s.api.apiserverinternal.v1alpha1.StorageVersion"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractStorageVersion(storageVersion *v1alpha1.StorageVersion, fieldManager
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithKind(value string) *StorageVersionApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *StorageVersionApplyConfiguration) WithKind(value string) *StorageVersio
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithAPIVersion(value string) *StorageVersionApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *StorageVersionApplyConfiguration) WithAPIVersion(value string) *Storage
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithName(value string) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *StorageVersionApplyConfiguration) WithName(value string) *StorageVersio
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithGenerateName(value string) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *StorageVersionApplyConfiguration) WithGenerateName(value string) *Stora
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithNamespace(value string) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *StorageVersionApplyConfiguration) WithNamespace(value string) *StorageV
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithUID(value types.UID) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *StorageVersionApplyConfiguration) WithUID(value types.UID) *StorageVers
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithResourceVersion(value string) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *StorageVersionApplyConfiguration) WithResourceVersion(value string) *St
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithGeneration(value int64) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *StorageVersionApplyConfiguration) WithGeneration(value int64) *StorageV
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithCreationTimestamp(value metav1.Time) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *StorageVersionApplyConfiguration) WithCreationTimestamp(value metav1.Ti
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *StorageVersionApplyConfiguration) WithDeletionTimestamp(value metav1.Ti
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *StorageVersionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *StorageVersionApplyConfiguration) WithDeletionGracePeriodSeconds(value
     // overwriting an existing map entries in Labels field with the same key.
     func (b *StorageVersionApplyConfiguration) WithLabels(entries map[string]string) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *StorageVersionApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *StorageVersionApplyConfiguration) WithAnnotations(entries map[string]string) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *StorageVersionApplyConfiguration) WithOwnerReferences(values ...*v1.Own
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *StorageVersionApplyConfiguration) WithOwnerReferences(values ...*v1.Own
     func (b *StorageVersionApplyConfiguration) WithFinalizers(values ...string) *StorageVersionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -242,7 +242,7 @@ func (b *StorageVersionApplyConfiguration) ensureObjectMetaApplyConfigurationExi
     // WithSpec sets the Spec field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Spec field is set to the value of the last call.
    -func (b *StorageVersionApplyConfiguration) WithSpec(value v1alpha1.StorageVersionSpec) *StorageVersionApplyConfiguration {
    +func (b *StorageVersionApplyConfiguration) WithSpec(value apiserverinternalv1alpha1.StorageVersionSpec) *StorageVersionApplyConfiguration {
     	b.Spec = &value
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *StorageVersionApplyConfiguration) WithStatus(value *StorageVersionStatu
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *StorageVersionApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversioncondition.go b/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversioncondition.go
    index 75b625647862..1ed71cf8e938 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversioncondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversioncondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
    +	apiserverinternalv1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// StorageVersionConditionApplyConfiguration represents an declarative configuration of the StorageVersionCondition type for use
    +// StorageVersionConditionApplyConfiguration represents a declarative configuration of the StorageVersionCondition type for use
     // with apply.
     type StorageVersionConditionApplyConfiguration struct {
    -	Type               *v1alpha1.StorageVersionConditionType `json:"type,omitempty"`
    -	Status             *v1alpha1.ConditionStatus             `json:"status,omitempty"`
    -	ObservedGeneration *int64                                `json:"observedGeneration,omitempty"`
    -	LastTransitionTime *v1.Time                              `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                               `json:"reason,omitempty"`
    -	Message            *string                               `json:"message,omitempty"`
    +	Type               *apiserverinternalv1alpha1.StorageVersionConditionType `json:"type,omitempty"`
    +	Status             *apiserverinternalv1alpha1.ConditionStatus             `json:"status,omitempty"`
    +	ObservedGeneration *int64                                                 `json:"observedGeneration,omitempty"`
    +	LastTransitionTime *v1.Time                                               `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                                `json:"reason,omitempty"`
    +	Message            *string                                                `json:"message,omitempty"`
     }
     
    -// StorageVersionConditionApplyConfiguration constructs an declarative configuration of the StorageVersionCondition type for use with
    +// StorageVersionConditionApplyConfiguration constructs a declarative configuration of the StorageVersionCondition type for use with
     // apply.
     func StorageVersionCondition() *StorageVersionConditionApplyConfiguration {
     	return &StorageVersionConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func StorageVersionCondition() *StorageVersionConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *StorageVersionConditionApplyConfiguration) WithType(value v1alpha1.StorageVersionConditionType) *StorageVersionConditionApplyConfiguration {
    +func (b *StorageVersionConditionApplyConfiguration) WithType(value apiserverinternalv1alpha1.StorageVersionConditionType) *StorageVersionConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -51,7 +51,7 @@ func (b *StorageVersionConditionApplyConfiguration) WithType(value v1alpha1.Stor
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *StorageVersionConditionApplyConfiguration) WithStatus(value v1alpha1.ConditionStatus) *StorageVersionConditionApplyConfiguration {
    +func (b *StorageVersionConditionApplyConfiguration) WithStatus(value apiserverinternalv1alpha1.ConditionStatus) *StorageVersionConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversionstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversionstatus.go
    index 43b0bf71b137..2e25d675241b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversionstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversionstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1alpha1
     
    -// StorageVersionStatusApplyConfiguration represents an declarative configuration of the StorageVersionStatus type for use
    +// StorageVersionStatusApplyConfiguration represents a declarative configuration of the StorageVersionStatus type for use
     // with apply.
     type StorageVersionStatusApplyConfiguration struct {
     	StorageVersions       []ServerStorageVersionApplyConfiguration    `json:"storageVersions,omitempty"`
    @@ -26,7 +26,7 @@ type StorageVersionStatusApplyConfiguration struct {
     	Conditions            []StorageVersionConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// StorageVersionStatusApplyConfiguration constructs an declarative configuration of the StorageVersionStatus type for use with
    +// StorageVersionStatusApplyConfiguration constructs a declarative configuration of the StorageVersionStatus type for use with
     // apply.
     func StorageVersionStatus() *StorageVersionStatusApplyConfiguration {
     	return &StorageVersionStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/controllerrevision.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/controllerrevision.go
    index c4e2085078f6..bfdad4a73264 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/controllerrevision.go
    @@ -20,24 +20,24 @@ package v1
     
     import (
     	appsv1 "k8s.io/api/apps/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ControllerRevisionApplyConfiguration represents an declarative configuration of the ControllerRevision type for use
    +// ControllerRevisionApplyConfiguration represents a declarative configuration of the ControllerRevision type for use
     // with apply.
     type ControllerRevisionApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Data                             *runtime.RawExtension `json:"data,omitempty"`
    -	Revision                         *int64                `json:"revision,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Data                                 *runtime.RawExtension `json:"data,omitempty"`
    +	Revision                             *int64                `json:"revision,omitempty"`
     }
     
    -// ControllerRevision constructs an declarative configuration of the ControllerRevision type for use with
    +// ControllerRevision constructs a declarative configuration of the ControllerRevision type for use with
     // apply.
     func ControllerRevision(name, namespace string) *ControllerRevisionApplyConfiguration {
     	b := &ControllerRevisionApplyConfiguration{}
    @@ -88,7 +88,7 @@ func extractControllerRevision(controllerRevision *appsv1.ControllerRevision, fi
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithKind(value string) *ControllerRevisionApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *ControllerRevisionApplyConfiguration) WithKind(value string) *Controlle
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithAPIVersion(value string) *ControllerRevisionApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *ControllerRevisionApplyConfiguration) WithAPIVersion(value string) *Con
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithName(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *ControllerRevisionApplyConfiguration) WithName(value string) *Controlle
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithGenerateName(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *ControllerRevisionApplyConfiguration) WithGenerateName(value string) *C
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithNamespace(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -132,7 +132,7 @@ func (b *ControllerRevisionApplyConfiguration) WithNamespace(value string) *Cont
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithUID(value types.UID) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -141,7 +141,7 @@ func (b *ControllerRevisionApplyConfiguration) WithUID(value types.UID) *Control
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithResourceVersion(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -150,25 +150,25 @@ func (b *ControllerRevisionApplyConfiguration) WithResourceVersion(value string)
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithGeneration(value int64) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ControllerRevisionApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ControllerRevisionApplyConfiguration {
    +func (b *ControllerRevisionApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ControllerRevisionApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ControllerRevisionApplyConfiguration {
    +func (b *ControllerRevisionApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -177,7 +177,7 @@ func (b *ControllerRevisionApplyConfiguration) WithDeletionTimestamp(value metav
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -187,11 +187,11 @@ func (b *ControllerRevisionApplyConfiguration) WithDeletionGracePeriodSeconds(va
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ControllerRevisionApplyConfiguration) WithLabels(entries map[string]string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -202,11 +202,11 @@ func (b *ControllerRevisionApplyConfiguration) WithLabels(entries map[string]str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ControllerRevisionApplyConfiguration) WithAnnotations(entries map[string]string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -214,13 +214,13 @@ func (b *ControllerRevisionApplyConfiguration) WithAnnotations(entries map[strin
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ControllerRevisionApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ControllerRevisionApplyConfiguration {
    +func (b *ControllerRevisionApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -231,14 +231,14 @@ func (b *ControllerRevisionApplyConfiguration) WithOwnerReferences(values ...*v1
     func (b *ControllerRevisionApplyConfiguration) WithFinalizers(values ...string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ControllerRevisionApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -257,3 +257,9 @@ func (b *ControllerRevisionApplyConfiguration) WithRevision(value int64) *Contro
     	b.Revision = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ControllerRevisionApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonset.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonset.go
    index cc9fdcd5dd90..47883d043d24 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonset.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apiappsv1 "k8s.io/api/apps/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	appsv1 "k8s.io/api/apps/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DaemonSetApplyConfiguration represents an declarative configuration of the DaemonSet type for use
    +// DaemonSetApplyConfiguration represents a declarative configuration of the DaemonSet type for use
     // with apply.
     type DaemonSetApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *DaemonSetSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *DaemonSetStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *DaemonSetSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *DaemonSetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// DaemonSet constructs an declarative configuration of the DaemonSet type for use with
    +// DaemonSet constructs a declarative configuration of the DaemonSet type for use with
     // apply.
     func DaemonSet(name, namespace string) *DaemonSetApplyConfiguration {
     	b := &DaemonSetApplyConfiguration{}
    @@ -58,18 +58,18 @@ func DaemonSet(name, namespace string) *DaemonSetApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractDaemonSet(daemonSet *apiappsv1.DaemonSet, fieldManager string) (*DaemonSetApplyConfiguration, error) {
    +func ExtractDaemonSet(daemonSet *appsv1.DaemonSet, fieldManager string) (*DaemonSetApplyConfiguration, error) {
     	return extractDaemonSet(daemonSet, fieldManager, "")
     }
     
     // ExtractDaemonSetStatus is the same as ExtractDaemonSet except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractDaemonSetStatus(daemonSet *apiappsv1.DaemonSet, fieldManager string) (*DaemonSetApplyConfiguration, error) {
    +func ExtractDaemonSetStatus(daemonSet *appsv1.DaemonSet, fieldManager string) (*DaemonSetApplyConfiguration, error) {
     	return extractDaemonSet(daemonSet, fieldManager, "status")
     }
     
    -func extractDaemonSet(daemonSet *apiappsv1.DaemonSet, fieldManager string, subresource string) (*DaemonSetApplyConfiguration, error) {
    +func extractDaemonSet(daemonSet *appsv1.DaemonSet, fieldManager string, subresource string) (*DaemonSetApplyConfiguration, error) {
     	b := &DaemonSetApplyConfiguration{}
     	err := managedfields.ExtractInto(daemonSet, internal.Parser().Type("io.k8s.api.apps.v1.DaemonSet"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractDaemonSet(daemonSet *apiappsv1.DaemonSet, fieldManager string, subre
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithKind(value string) *DaemonSetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *DaemonSetApplyConfiguration) WithKind(value string) *DaemonSetApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithAPIVersion(value string) *DaemonSetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *DaemonSetApplyConfiguration) WithAPIVersion(value string) *DaemonSetApp
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithName(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *DaemonSetApplyConfiguration) WithName(value string) *DaemonSetApplyConf
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithGenerateName(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *DaemonSetApplyConfiguration) WithGenerateName(value string) *DaemonSetA
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithNamespace(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *DaemonSetApplyConfiguration) WithNamespace(value string) *DaemonSetAppl
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithUID(value types.UID) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *DaemonSetApplyConfiguration) WithUID(value types.UID) *DaemonSetApplyCo
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithResourceVersion(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *DaemonSetApplyConfiguration) WithResourceVersion(value string) *DaemonS
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithGeneration(value int64) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *DaemonSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *DaemonSetApplyConfiguration {
    +func (b *DaemonSetApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *DaemonSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *DaemonSetApplyConfiguration {
    +func (b *DaemonSetApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *DaemonSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *DaemonSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64
     // overwriting an existing map entries in Labels field with the same key.
     func (b *DaemonSetApplyConfiguration) WithLabels(entries map[string]string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *DaemonSetApplyConfiguration) WithLabels(entries map[string]string) *Dae
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *DaemonSetApplyConfiguration) WithAnnotations(entries map[string]string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *DaemonSetApplyConfiguration) WithAnnotations(entries map[string]string)
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *DaemonSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *DaemonSetApplyConfiguration {
    +func (b *DaemonSetApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *DaemonSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     func (b *DaemonSetApplyConfiguration) WithFinalizers(values ...string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *DaemonSetApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *DaemonSetApplyConfiguration) WithStatus(value *DaemonSetStatusApplyConf
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *DaemonSetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetcondition.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetcondition.go
    index 283ae10a29f1..8c56e4994bd8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetcondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// DaemonSetConditionApplyConfiguration represents an declarative configuration of the DaemonSetCondition type for use
    +// DaemonSetConditionApplyConfiguration represents a declarative configuration of the DaemonSetCondition type for use
     // with apply.
     type DaemonSetConditionApplyConfiguration struct {
    -	Type               *v1.DaemonSetConditionType `json:"type,omitempty"`
    -	Status             *corev1.ConditionStatus    `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time               `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                    `json:"reason,omitempty"`
    -	Message            *string                    `json:"message,omitempty"`
    +	Type               *appsv1.DaemonSetConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus        `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                   `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                        `json:"reason,omitempty"`
    +	Message            *string                        `json:"message,omitempty"`
     }
     
    -// DaemonSetConditionApplyConfiguration constructs an declarative configuration of the DaemonSetCondition type for use with
    +// DaemonSetConditionApplyConfiguration constructs a declarative configuration of the DaemonSetCondition type for use with
     // apply.
     func DaemonSetCondition() *DaemonSetConditionApplyConfiguration {
     	return &DaemonSetConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func DaemonSetCondition() *DaemonSetConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DaemonSetConditionApplyConfiguration) WithType(value v1.DaemonSetConditionType) *DaemonSetConditionApplyConfiguration {
    +func (b *DaemonSetConditionApplyConfiguration) WithType(value appsv1.DaemonSetConditionType) *DaemonSetConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetspec.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetspec.go
    index 5e808874b7d9..d2382b80e0f9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetspec.go
    @@ -20,20 +20,20 @@ package v1
     
     import (
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DaemonSetSpecApplyConfiguration represents an declarative configuration of the DaemonSetSpec type for use
    +// DaemonSetSpecApplyConfiguration represents a declarative configuration of the DaemonSetSpec type for use
     // with apply.
     type DaemonSetSpecApplyConfiguration struct {
    -	Selector             *v1.LabelSelectorApplyConfiguration        `json:"selector,omitempty"`
    +	Selector             *metav1.LabelSelectorApplyConfiguration    `json:"selector,omitempty"`
     	Template             *corev1.PodTemplateSpecApplyConfiguration  `json:"template,omitempty"`
     	UpdateStrategy       *DaemonSetUpdateStrategyApplyConfiguration `json:"updateStrategy,omitempty"`
     	MinReadySeconds      *int32                                     `json:"minReadySeconds,omitempty"`
     	RevisionHistoryLimit *int32                                     `json:"revisionHistoryLimit,omitempty"`
     }
     
    -// DaemonSetSpecApplyConfiguration constructs an declarative configuration of the DaemonSetSpec type for use with
    +// DaemonSetSpecApplyConfiguration constructs a declarative configuration of the DaemonSetSpec type for use with
     // apply.
     func DaemonSetSpec() *DaemonSetSpecApplyConfiguration {
     	return &DaemonSetSpecApplyConfiguration{}
    @@ -42,7 +42,7 @@ func DaemonSetSpec() *DaemonSetSpecApplyConfiguration {
     // WithSelector sets the Selector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Selector field is set to the value of the last call.
    -func (b *DaemonSetSpecApplyConfiguration) WithSelector(value *v1.LabelSelectorApplyConfiguration) *DaemonSetSpecApplyConfiguration {
    +func (b *DaemonSetSpecApplyConfiguration) WithSelector(value *metav1.LabelSelectorApplyConfiguration) *DaemonSetSpecApplyConfiguration {
     	b.Selector = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetstatus.go
    index d1c4462aa9ee..a40dc16512e3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// DaemonSetStatusApplyConfiguration represents an declarative configuration of the DaemonSetStatus type for use
    +// DaemonSetStatusApplyConfiguration represents a declarative configuration of the DaemonSetStatus type for use
     // with apply.
     type DaemonSetStatusApplyConfiguration struct {
     	CurrentNumberScheduled *int32                                 `json:"currentNumberScheduled,omitempty"`
    @@ -33,7 +33,7 @@ type DaemonSetStatusApplyConfiguration struct {
     	Conditions             []DaemonSetConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// DaemonSetStatusApplyConfiguration constructs an declarative configuration of the DaemonSetStatus type for use with
    +// DaemonSetStatusApplyConfiguration constructs a declarative configuration of the DaemonSetStatus type for use with
     // apply.
     func DaemonSetStatus() *DaemonSetStatusApplyConfiguration {
     	return &DaemonSetStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetupdatestrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetupdatestrategy.go
    index f1ba18226ff3..993e1bd5721e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetupdatestrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetupdatestrategy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     )
     
    -// DaemonSetUpdateStrategyApplyConfiguration represents an declarative configuration of the DaemonSetUpdateStrategy type for use
    +// DaemonSetUpdateStrategyApplyConfiguration represents a declarative configuration of the DaemonSetUpdateStrategy type for use
     // with apply.
     type DaemonSetUpdateStrategyApplyConfiguration struct {
    -	Type          *v1.DaemonSetUpdateStrategyType           `json:"type,omitempty"`
    +	Type          *appsv1.DaemonSetUpdateStrategyType       `json:"type,omitempty"`
     	RollingUpdate *RollingUpdateDaemonSetApplyConfiguration `json:"rollingUpdate,omitempty"`
     }
     
    -// DaemonSetUpdateStrategyApplyConfiguration constructs an declarative configuration of the DaemonSetUpdateStrategy type for use with
    +// DaemonSetUpdateStrategyApplyConfiguration constructs a declarative configuration of the DaemonSetUpdateStrategy type for use with
     // apply.
     func DaemonSetUpdateStrategy() *DaemonSetUpdateStrategyApplyConfiguration {
     	return &DaemonSetUpdateStrategyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func DaemonSetUpdateStrategy() *DaemonSetUpdateStrategyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DaemonSetUpdateStrategyApplyConfiguration) WithType(value v1.DaemonSetUpdateStrategyType) *DaemonSetUpdateStrategyApplyConfiguration {
    +func (b *DaemonSetUpdateStrategyApplyConfiguration) WithType(value appsv1.DaemonSetUpdateStrategyType) *DaemonSetUpdateStrategyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deployment.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deployment.go
    index 13edda7727a1..485357c00734 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deployment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deployment.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apiappsv1 "k8s.io/api/apps/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	appsv1 "k8s.io/api/apps/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DeploymentApplyConfiguration represents an declarative configuration of the Deployment type for use
    +// DeploymentApplyConfiguration represents a declarative configuration of the Deployment type for use
     // with apply.
     type DeploymentApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *DeploymentSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *DeploymentStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *DeploymentSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *DeploymentStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Deployment constructs an declarative configuration of the Deployment type for use with
    +// Deployment constructs a declarative configuration of the Deployment type for use with
     // apply.
     func Deployment(name, namespace string) *DeploymentApplyConfiguration {
     	b := &DeploymentApplyConfiguration{}
    @@ -58,18 +58,18 @@ func Deployment(name, namespace string) *DeploymentApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractDeployment(deployment *apiappsv1.Deployment, fieldManager string) (*DeploymentApplyConfiguration, error) {
    +func ExtractDeployment(deployment *appsv1.Deployment, fieldManager string) (*DeploymentApplyConfiguration, error) {
     	return extractDeployment(deployment, fieldManager, "")
     }
     
     // ExtractDeploymentStatus is the same as ExtractDeployment except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractDeploymentStatus(deployment *apiappsv1.Deployment, fieldManager string) (*DeploymentApplyConfiguration, error) {
    +func ExtractDeploymentStatus(deployment *appsv1.Deployment, fieldManager string) (*DeploymentApplyConfiguration, error) {
     	return extractDeployment(deployment, fieldManager, "status")
     }
     
    -func extractDeployment(deployment *apiappsv1.Deployment, fieldManager string, subresource string) (*DeploymentApplyConfiguration, error) {
    +func extractDeployment(deployment *appsv1.Deployment, fieldManager string, subresource string) (*DeploymentApplyConfiguration, error) {
     	b := &DeploymentApplyConfiguration{}
     	err := managedfields.ExtractInto(deployment, internal.Parser().Type("io.k8s.api.apps.v1.Deployment"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractDeployment(deployment *apiappsv1.Deployment, fieldManager string, su
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithKind(value string) *DeploymentApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *DeploymentApplyConfiguration) WithKind(value string) *DeploymentApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithAPIVersion(value string) *DeploymentApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *DeploymentApplyConfiguration) WithAPIVersion(value string) *DeploymentA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithName(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *DeploymentApplyConfiguration) WithName(value string) *DeploymentApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithGenerateName(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *DeploymentApplyConfiguration) WithGenerateName(value string) *Deploymen
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithNamespace(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *DeploymentApplyConfiguration) WithNamespace(value string) *DeploymentAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithUID(value types.UID) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *DeploymentApplyConfiguration) WithUID(value types.UID) *DeploymentApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithResourceVersion(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *DeploymentApplyConfiguration) WithResourceVersion(value string) *Deploy
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithGeneration(value int64) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *DeploymentApplyConfiguration) WithCreationTimestamp(value metav1.Time) *DeploymentApplyConfiguration {
    +func (b *DeploymentApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *DeploymentApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *DeploymentApplyConfiguration {
    +func (b *DeploymentApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *DeploymentApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *DeploymentApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *DeploymentApplyConfiguration) WithLabels(entries map[string]string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *DeploymentApplyConfiguration) WithLabels(entries map[string]string) *De
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *DeploymentApplyConfiguration) WithAnnotations(entries map[string]string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *DeploymentApplyConfiguration) WithAnnotations(entries map[string]string
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *DeploymentApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *DeploymentApplyConfiguration {
    +func (b *DeploymentApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *DeploymentApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *DeploymentApplyConfiguration) WithFinalizers(values ...string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *DeploymentApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *DeploymentApplyConfiguration) WithStatus(value *DeploymentStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *DeploymentApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentcondition.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentcondition.go
    index 774704413677..3a669363703b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentcondition.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// DeploymentConditionApplyConfiguration represents an declarative configuration of the DeploymentCondition type for use
    +// DeploymentConditionApplyConfiguration represents a declarative configuration of the DeploymentCondition type for use
     // with apply.
     type DeploymentConditionApplyConfiguration struct {
    -	Type               *v1.DeploymentConditionType `json:"type,omitempty"`
    -	Status             *corev1.ConditionStatus     `json:"status,omitempty"`
    -	LastUpdateTime     *metav1.Time                `json:"lastUpdateTime,omitempty"`
    -	LastTransitionTime *metav1.Time                `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                     `json:"reason,omitempty"`
    -	Message            *string                     `json:"message,omitempty"`
    +	Type               *appsv1.DeploymentConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus         `json:"status,omitempty"`
    +	LastUpdateTime     *metav1.Time                    `json:"lastUpdateTime,omitempty"`
    +	LastTransitionTime *metav1.Time                    `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                         `json:"reason,omitempty"`
    +	Message            *string                         `json:"message,omitempty"`
     }
     
    -// DeploymentConditionApplyConfiguration constructs an declarative configuration of the DeploymentCondition type for use with
    +// DeploymentConditionApplyConfiguration constructs a declarative configuration of the DeploymentCondition type for use with
     // apply.
     func DeploymentCondition() *DeploymentConditionApplyConfiguration {
     	return &DeploymentConditionApplyConfiguration{}
    @@ -44,7 +44,7 @@ func DeploymentCondition() *DeploymentConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DeploymentConditionApplyConfiguration) WithType(value v1.DeploymentConditionType) *DeploymentConditionApplyConfiguration {
    +func (b *DeploymentConditionApplyConfiguration) WithType(value appsv1.DeploymentConditionType) *DeploymentConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentspec.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentspec.go
    index 812253dae850..5f34b0582ca6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentspec.go
    @@ -20,14 +20,14 @@ package v1
     
     import (
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DeploymentSpecApplyConfiguration represents an declarative configuration of the DeploymentSpec type for use
    +// DeploymentSpecApplyConfiguration represents a declarative configuration of the DeploymentSpec type for use
     // with apply.
     type DeploymentSpecApplyConfiguration struct {
     	Replicas                *int32                                    `json:"replicas,omitempty"`
    -	Selector                *v1.LabelSelectorApplyConfiguration       `json:"selector,omitempty"`
    +	Selector                *metav1.LabelSelectorApplyConfiguration   `json:"selector,omitempty"`
     	Template                *corev1.PodTemplateSpecApplyConfiguration `json:"template,omitempty"`
     	Strategy                *DeploymentStrategyApplyConfiguration     `json:"strategy,omitempty"`
     	MinReadySeconds         *int32                                    `json:"minReadySeconds,omitempty"`
    @@ -36,7 +36,7 @@ type DeploymentSpecApplyConfiguration struct {
     	ProgressDeadlineSeconds *int32                                    `json:"progressDeadlineSeconds,omitempty"`
     }
     
    -// DeploymentSpecApplyConfiguration constructs an declarative configuration of the DeploymentSpec type for use with
    +// DeploymentSpecApplyConfiguration constructs a declarative configuration of the DeploymentSpec type for use with
     // apply.
     func DeploymentSpec() *DeploymentSpecApplyConfiguration {
     	return &DeploymentSpecApplyConfiguration{}
    @@ -53,7 +53,7 @@ func (b *DeploymentSpecApplyConfiguration) WithReplicas(value int32) *Deployment
     // WithSelector sets the Selector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Selector field is set to the value of the last call.
    -func (b *DeploymentSpecApplyConfiguration) WithSelector(value *v1.LabelSelectorApplyConfiguration) *DeploymentSpecApplyConfiguration {
    +func (b *DeploymentSpecApplyConfiguration) WithSelector(value *metav1.LabelSelectorApplyConfiguration) *DeploymentSpecApplyConfiguration {
     	b.Selector = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentstatus.go
    index 7b48b425575f..747813ade8e2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// DeploymentStatusApplyConfiguration represents an declarative configuration of the DeploymentStatus type for use
    +// DeploymentStatusApplyConfiguration represents a declarative configuration of the DeploymentStatus type for use
     // with apply.
     type DeploymentStatusApplyConfiguration struct {
     	ObservedGeneration  *int64                                  `json:"observedGeneration,omitempty"`
    @@ -31,7 +31,7 @@ type DeploymentStatusApplyConfiguration struct {
     	CollisionCount      *int32                                  `json:"collisionCount,omitempty"`
     }
     
    -// DeploymentStatusApplyConfiguration constructs an declarative configuration of the DeploymentStatus type for use with
    +// DeploymentStatusApplyConfiguration constructs a declarative configuration of the DeploymentStatus type for use with
     // apply.
     func DeploymentStatus() *DeploymentStatusApplyConfiguration {
     	return &DeploymentStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentstrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentstrategy.go
    index e9571edab19e..7bf8a15954d3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentstrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentstrategy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     )
     
    -// DeploymentStrategyApplyConfiguration represents an declarative configuration of the DeploymentStrategy type for use
    +// DeploymentStrategyApplyConfiguration represents a declarative configuration of the DeploymentStrategy type for use
     // with apply.
     type DeploymentStrategyApplyConfiguration struct {
    -	Type          *v1.DeploymentStrategyType                 `json:"type,omitempty"`
    +	Type          *appsv1.DeploymentStrategyType             `json:"type,omitempty"`
     	RollingUpdate *RollingUpdateDeploymentApplyConfiguration `json:"rollingUpdate,omitempty"`
     }
     
    -// DeploymentStrategyApplyConfiguration constructs an declarative configuration of the DeploymentStrategy type for use with
    +// DeploymentStrategyApplyConfiguration constructs a declarative configuration of the DeploymentStrategy type for use with
     // apply.
     func DeploymentStrategy() *DeploymentStrategyApplyConfiguration {
     	return &DeploymentStrategyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func DeploymentStrategy() *DeploymentStrategyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DeploymentStrategyApplyConfiguration) WithType(value v1.DeploymentStrategyType) *DeploymentStrategyApplyConfiguration {
    +func (b *DeploymentStrategyApplyConfiguration) WithType(value appsv1.DeploymentStrategyType) *DeploymentStrategyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicaset.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicaset.go
    index 4e7818e535fc..6e9c0e14f305 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicaset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicaset.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apiappsv1 "k8s.io/api/apps/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	appsv1 "k8s.io/api/apps/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ReplicaSetApplyConfiguration represents an declarative configuration of the ReplicaSet type for use
    +// ReplicaSetApplyConfiguration represents a declarative configuration of the ReplicaSet type for use
     // with apply.
     type ReplicaSetApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *ReplicaSetSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *ReplicaSetStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *ReplicaSetSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *ReplicaSetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// ReplicaSet constructs an declarative configuration of the ReplicaSet type for use with
    +// ReplicaSet constructs a declarative configuration of the ReplicaSet type for use with
     // apply.
     func ReplicaSet(name, namespace string) *ReplicaSetApplyConfiguration {
     	b := &ReplicaSetApplyConfiguration{}
    @@ -58,18 +58,18 @@ func ReplicaSet(name, namespace string) *ReplicaSetApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractReplicaSet(replicaSet *apiappsv1.ReplicaSet, fieldManager string) (*ReplicaSetApplyConfiguration, error) {
    +func ExtractReplicaSet(replicaSet *appsv1.ReplicaSet, fieldManager string) (*ReplicaSetApplyConfiguration, error) {
     	return extractReplicaSet(replicaSet, fieldManager, "")
     }
     
     // ExtractReplicaSetStatus is the same as ExtractReplicaSet except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractReplicaSetStatus(replicaSet *apiappsv1.ReplicaSet, fieldManager string) (*ReplicaSetApplyConfiguration, error) {
    +func ExtractReplicaSetStatus(replicaSet *appsv1.ReplicaSet, fieldManager string) (*ReplicaSetApplyConfiguration, error) {
     	return extractReplicaSet(replicaSet, fieldManager, "status")
     }
     
    -func extractReplicaSet(replicaSet *apiappsv1.ReplicaSet, fieldManager string, subresource string) (*ReplicaSetApplyConfiguration, error) {
    +func extractReplicaSet(replicaSet *appsv1.ReplicaSet, fieldManager string, subresource string) (*ReplicaSetApplyConfiguration, error) {
     	b := &ReplicaSetApplyConfiguration{}
     	err := managedfields.ExtractInto(replicaSet, internal.Parser().Type("io.k8s.api.apps.v1.ReplicaSet"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractReplicaSet(replicaSet *apiappsv1.ReplicaSet, fieldManager string, su
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithKind(value string) *ReplicaSetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *ReplicaSetApplyConfiguration) WithKind(value string) *ReplicaSetApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithAPIVersion(value string) *ReplicaSetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *ReplicaSetApplyConfiguration) WithAPIVersion(value string) *ReplicaSetA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithName(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *ReplicaSetApplyConfiguration) WithName(value string) *ReplicaSetApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithGenerateName(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *ReplicaSetApplyConfiguration) WithGenerateName(value string) *ReplicaSe
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithNamespace(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *ReplicaSetApplyConfiguration) WithNamespace(value string) *ReplicaSetAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithUID(value types.UID) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *ReplicaSetApplyConfiguration) WithUID(value types.UID) *ReplicaSetApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithResourceVersion(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *ReplicaSetApplyConfiguration) WithResourceVersion(value string) *Replic
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithGeneration(value int64) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ReplicaSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ReplicaSetApplyConfiguration {
    +func (b *ReplicaSetApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ReplicaSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ReplicaSetApplyConfiguration {
    +func (b *ReplicaSetApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *ReplicaSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *ReplicaSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ReplicaSetApplyConfiguration) WithLabels(entries map[string]string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *ReplicaSetApplyConfiguration) WithLabels(entries map[string]string) *Re
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ReplicaSetApplyConfiguration) WithAnnotations(entries map[string]string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *ReplicaSetApplyConfiguration) WithAnnotations(entries map[string]string
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ReplicaSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ReplicaSetApplyConfiguration {
    +func (b *ReplicaSetApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *ReplicaSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *ReplicaSetApplyConfiguration) WithFinalizers(values ...string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ReplicaSetApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *ReplicaSetApplyConfiguration) WithStatus(value *ReplicaSetStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ReplicaSetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetcondition.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetcondition.go
    index 19b0355d154e..0325ce058391 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetcondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// ReplicaSetConditionApplyConfiguration represents an declarative configuration of the ReplicaSetCondition type for use
    +// ReplicaSetConditionApplyConfiguration represents a declarative configuration of the ReplicaSetCondition type for use
     // with apply.
     type ReplicaSetConditionApplyConfiguration struct {
    -	Type               *v1.ReplicaSetConditionType `json:"type,omitempty"`
    -	Status             *corev1.ConditionStatus     `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                     `json:"reason,omitempty"`
    -	Message            *string                     `json:"message,omitempty"`
    +	Type               *appsv1.ReplicaSetConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus         `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                    `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                         `json:"reason,omitempty"`
    +	Message            *string                         `json:"message,omitempty"`
     }
     
    -// ReplicaSetConditionApplyConfiguration constructs an declarative configuration of the ReplicaSetCondition type for use with
    +// ReplicaSetConditionApplyConfiguration constructs a declarative configuration of the ReplicaSetCondition type for use with
     // apply.
     func ReplicaSetCondition() *ReplicaSetConditionApplyConfiguration {
     	return &ReplicaSetConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func ReplicaSetCondition() *ReplicaSetConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *ReplicaSetConditionApplyConfiguration) WithType(value v1.ReplicaSetConditionType) *ReplicaSetConditionApplyConfiguration {
    +func (b *ReplicaSetConditionApplyConfiguration) WithType(value appsv1.ReplicaSetConditionType) *ReplicaSetConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetspec.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetspec.go
    index ca32865835b7..714ddcfe3df4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetspec.go
    @@ -20,19 +20,19 @@ package v1
     
     import (
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ReplicaSetSpecApplyConfiguration represents an declarative configuration of the ReplicaSetSpec type for use
    +// ReplicaSetSpecApplyConfiguration represents a declarative configuration of the ReplicaSetSpec type for use
     // with apply.
     type ReplicaSetSpecApplyConfiguration struct {
     	Replicas        *int32                                    `json:"replicas,omitempty"`
     	MinReadySeconds *int32                                    `json:"minReadySeconds,omitempty"`
    -	Selector        *v1.LabelSelectorApplyConfiguration       `json:"selector,omitempty"`
    +	Selector        *metav1.LabelSelectorApplyConfiguration   `json:"selector,omitempty"`
     	Template        *corev1.PodTemplateSpecApplyConfiguration `json:"template,omitempty"`
     }
     
    -// ReplicaSetSpecApplyConfiguration constructs an declarative configuration of the ReplicaSetSpec type for use with
    +// ReplicaSetSpecApplyConfiguration constructs a declarative configuration of the ReplicaSetSpec type for use with
     // apply.
     func ReplicaSetSpec() *ReplicaSetSpecApplyConfiguration {
     	return &ReplicaSetSpecApplyConfiguration{}
    @@ -57,7 +57,7 @@ func (b *ReplicaSetSpecApplyConfiguration) WithMinReadySeconds(value int32) *Rep
     // WithSelector sets the Selector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Selector field is set to the value of the last call.
    -func (b *ReplicaSetSpecApplyConfiguration) WithSelector(value *v1.LabelSelectorApplyConfiguration) *ReplicaSetSpecApplyConfiguration {
    +func (b *ReplicaSetSpecApplyConfiguration) WithSelector(value *metav1.LabelSelectorApplyConfiguration) *ReplicaSetSpecApplyConfiguration {
     	b.Selector = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetstatus.go
    index 12f41490f9a1..a1408ae25ed6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ReplicaSetStatusApplyConfiguration represents an declarative configuration of the ReplicaSetStatus type for use
    +// ReplicaSetStatusApplyConfiguration represents a declarative configuration of the ReplicaSetStatus type for use
     // with apply.
     type ReplicaSetStatusApplyConfiguration struct {
     	Replicas             *int32                                  `json:"replicas,omitempty"`
    @@ -29,7 +29,7 @@ type ReplicaSetStatusApplyConfiguration struct {
     	Conditions           []ReplicaSetConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// ReplicaSetStatusApplyConfiguration constructs an declarative configuration of the ReplicaSetStatus type for use with
    +// ReplicaSetStatusApplyConfiguration constructs a declarative configuration of the ReplicaSetStatus type for use with
     // apply.
     func ReplicaSetStatus() *ReplicaSetStatusApplyConfiguration {
     	return &ReplicaSetStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatedaemonset.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatedaemonset.go
    index ebe8e86d1f58..e898f5081c8c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatedaemonset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatedaemonset.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// RollingUpdateDaemonSetApplyConfiguration represents an declarative configuration of the RollingUpdateDaemonSet type for use
    +// RollingUpdateDaemonSetApplyConfiguration represents a declarative configuration of the RollingUpdateDaemonSet type for use
     // with apply.
     type RollingUpdateDaemonSetApplyConfiguration struct {
     	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
     	MaxSurge       *intstr.IntOrString `json:"maxSurge,omitempty"`
     }
     
    -// RollingUpdateDaemonSetApplyConfiguration constructs an declarative configuration of the RollingUpdateDaemonSet type for use with
    +// RollingUpdateDaemonSetApplyConfiguration constructs a declarative configuration of the RollingUpdateDaemonSet type for use with
     // apply.
     func RollingUpdateDaemonSet() *RollingUpdateDaemonSetApplyConfiguration {
     	return &RollingUpdateDaemonSetApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatedeployment.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatedeployment.go
    index ca9daaf24955..2bc2937241f1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatedeployment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatedeployment.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// RollingUpdateDeploymentApplyConfiguration represents an declarative configuration of the RollingUpdateDeployment type for use
    +// RollingUpdateDeploymentApplyConfiguration represents a declarative configuration of the RollingUpdateDeployment type for use
     // with apply.
     type RollingUpdateDeploymentApplyConfiguration struct {
     	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
     	MaxSurge       *intstr.IntOrString `json:"maxSurge,omitempty"`
     }
     
    -// RollingUpdateDeploymentApplyConfiguration constructs an declarative configuration of the RollingUpdateDeployment type for use with
    +// RollingUpdateDeploymentApplyConfiguration constructs a declarative configuration of the RollingUpdateDeployment type for use with
     // apply.
     func RollingUpdateDeployment() *RollingUpdateDeploymentApplyConfiguration {
     	return &RollingUpdateDeploymentApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatestatefulsetstrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatestatefulsetstrategy.go
    index c1b5dea85523..dd0de81a6cb1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatestatefulsetstrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatestatefulsetstrategy.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// RollingUpdateStatefulSetStrategyApplyConfiguration represents an declarative configuration of the RollingUpdateStatefulSetStrategy type for use
    +// RollingUpdateStatefulSetStrategyApplyConfiguration represents a declarative configuration of the RollingUpdateStatefulSetStrategy type for use
     // with apply.
     type RollingUpdateStatefulSetStrategyApplyConfiguration struct {
     	Partition      *int32              `json:"partition,omitempty"`
     	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
     }
     
    -// RollingUpdateStatefulSetStrategyApplyConfiguration constructs an declarative configuration of the RollingUpdateStatefulSetStrategy type for use with
    +// RollingUpdateStatefulSetStrategyApplyConfiguration constructs a declarative configuration of the RollingUpdateStatefulSetStrategy type for use with
     // apply.
     func RollingUpdateStatefulSetStrategy() *RollingUpdateStatefulSetStrategyApplyConfiguration {
     	return &RollingUpdateStatefulSetStrategyApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulset.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulset.go
    index 24041d99f87d..cb5306935c02 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulset.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apiappsv1 "k8s.io/api/apps/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	appsv1 "k8s.io/api/apps/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// StatefulSetApplyConfiguration represents an declarative configuration of the StatefulSet type for use
    +// StatefulSetApplyConfiguration represents a declarative configuration of the StatefulSet type for use
     // with apply.
     type StatefulSetApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *StatefulSetSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *StatefulSetStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *StatefulSetSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *StatefulSetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// StatefulSet constructs an declarative configuration of the StatefulSet type for use with
    +// StatefulSet constructs a declarative configuration of the StatefulSet type for use with
     // apply.
     func StatefulSet(name, namespace string) *StatefulSetApplyConfiguration {
     	b := &StatefulSetApplyConfiguration{}
    @@ -58,18 +58,18 @@ func StatefulSet(name, namespace string) *StatefulSetApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractStatefulSet(statefulSet *apiappsv1.StatefulSet, fieldManager string) (*StatefulSetApplyConfiguration, error) {
    +func ExtractStatefulSet(statefulSet *appsv1.StatefulSet, fieldManager string) (*StatefulSetApplyConfiguration, error) {
     	return extractStatefulSet(statefulSet, fieldManager, "")
     }
     
     // ExtractStatefulSetStatus is the same as ExtractStatefulSet except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractStatefulSetStatus(statefulSet *apiappsv1.StatefulSet, fieldManager string) (*StatefulSetApplyConfiguration, error) {
    +func ExtractStatefulSetStatus(statefulSet *appsv1.StatefulSet, fieldManager string) (*StatefulSetApplyConfiguration, error) {
     	return extractStatefulSet(statefulSet, fieldManager, "status")
     }
     
    -func extractStatefulSet(statefulSet *apiappsv1.StatefulSet, fieldManager string, subresource string) (*StatefulSetApplyConfiguration, error) {
    +func extractStatefulSet(statefulSet *appsv1.StatefulSet, fieldManager string, subresource string) (*StatefulSetApplyConfiguration, error) {
     	b := &StatefulSetApplyConfiguration{}
     	err := managedfields.ExtractInto(statefulSet, internal.Parser().Type("io.k8s.api.apps.v1.StatefulSet"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractStatefulSet(statefulSet *apiappsv1.StatefulSet, fieldManager string,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithKind(value string) *StatefulSetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *StatefulSetApplyConfiguration) WithKind(value string) *StatefulSetApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithAPIVersion(value string) *StatefulSetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *StatefulSetApplyConfiguration) WithAPIVersion(value string) *StatefulSe
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithName(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *StatefulSetApplyConfiguration) WithName(value string) *StatefulSetApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithGenerateName(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *StatefulSetApplyConfiguration) WithGenerateName(value string) *Stateful
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithNamespace(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *StatefulSetApplyConfiguration) WithNamespace(value string) *StatefulSet
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithUID(value types.UID) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *StatefulSetApplyConfiguration) WithUID(value types.UID) *StatefulSetApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithResourceVersion(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *StatefulSetApplyConfiguration) WithResourceVersion(value string) *State
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithGeneration(value int64) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *StatefulSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *StatefulSetApplyConfiguration {
    +func (b *StatefulSetApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *StatefulSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *StatefulSetApplyConfiguration {
    +func (b *StatefulSetApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *StatefulSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *StatefulSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *StatefulSetApplyConfiguration) WithLabels(entries map[string]string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *StatefulSetApplyConfiguration) WithLabels(entries map[string]string) *S
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *StatefulSetApplyConfiguration) WithAnnotations(entries map[string]string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *StatefulSetApplyConfiguration) WithAnnotations(entries map[string]strin
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *StatefulSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *StatefulSetApplyConfiguration {
    +func (b *StatefulSetApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *StatefulSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *StatefulSetApplyConfiguration) WithFinalizers(values ...string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *StatefulSetApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *StatefulSetApplyConfiguration) WithStatus(value *StatefulSetStatusApply
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *StatefulSetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetcondition.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetcondition.go
    index f9d47850d6c9..45b2ad81f1d0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetcondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// StatefulSetConditionApplyConfiguration represents an declarative configuration of the StatefulSetCondition type for use
    +// StatefulSetConditionApplyConfiguration represents a declarative configuration of the StatefulSetCondition type for use
     // with apply.
     type StatefulSetConditionApplyConfiguration struct {
    -	Type               *v1.StatefulSetConditionType `json:"type,omitempty"`
    -	Status             *corev1.ConditionStatus      `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                 `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                      `json:"reason,omitempty"`
    -	Message            *string                      `json:"message,omitempty"`
    +	Type               *appsv1.StatefulSetConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus          `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                     `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                          `json:"reason,omitempty"`
    +	Message            *string                          `json:"message,omitempty"`
     }
     
    -// StatefulSetConditionApplyConfiguration constructs an declarative configuration of the StatefulSetCondition type for use with
    +// StatefulSetConditionApplyConfiguration constructs a declarative configuration of the StatefulSetCondition type for use with
     // apply.
     func StatefulSetCondition() *StatefulSetConditionApplyConfiguration {
     	return &StatefulSetConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func StatefulSetCondition() *StatefulSetConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *StatefulSetConditionApplyConfiguration) WithType(value v1.StatefulSetConditionType) *StatefulSetConditionApplyConfiguration {
    +func (b *StatefulSetConditionApplyConfiguration) WithType(value appsv1.StatefulSetConditionType) *StatefulSetConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetordinals.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetordinals.go
    index 9778f1c4a049..86f39e16c161 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetordinals.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetordinals.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// StatefulSetOrdinalsApplyConfiguration represents an declarative configuration of the StatefulSetOrdinals type for use
    +// StatefulSetOrdinalsApplyConfiguration represents a declarative configuration of the StatefulSetOrdinals type for use
     // with apply.
     type StatefulSetOrdinalsApplyConfiguration struct {
     	Start *int32 `json:"start,omitempty"`
     }
     
    -// StatefulSetOrdinalsApplyConfiguration constructs an declarative configuration of the StatefulSetOrdinals type for use with
    +// StatefulSetOrdinalsApplyConfiguration constructs a declarative configuration of the StatefulSetOrdinals type for use with
     // apply.
     func StatefulSetOrdinals() *StatefulSetOrdinalsApplyConfiguration {
     	return &StatefulSetOrdinalsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetpersistentvolumeclaimretentionpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetpersistentvolumeclaimretentionpolicy.go
    index ba01d5d3c10a..dff3e2a76bfa 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetpersistentvolumeclaimretentionpolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetpersistentvolumeclaimretentionpolicy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     )
     
    -// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration represents an declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use
    +// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration represents a declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use
     // with apply.
     type StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration struct {
    -	WhenDeleted *v1.PersistentVolumeClaimRetentionPolicyType `json:"whenDeleted,omitempty"`
    -	WhenScaled  *v1.PersistentVolumeClaimRetentionPolicyType `json:"whenScaled,omitempty"`
    +	WhenDeleted *appsv1.PersistentVolumeClaimRetentionPolicyType `json:"whenDeleted,omitempty"`
    +	WhenScaled  *appsv1.PersistentVolumeClaimRetentionPolicyType `json:"whenScaled,omitempty"`
     }
     
    -// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration constructs an declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use with
    +// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration constructs a declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use with
     // apply.
     func StatefulSetPersistentVolumeClaimRetentionPolicy() *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
     	return &StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func StatefulSetPersistentVolumeClaimRetentionPolicy() *StatefulSetPersistentVol
     // WithWhenDeleted sets the WhenDeleted field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the WhenDeleted field is set to the value of the last call.
    -func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenDeleted(value v1.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
    +func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenDeleted(value appsv1.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
     	b.WhenDeleted = &value
     	return b
     }
    @@ -46,7 +46,7 @@ func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) With
     // WithWhenScaled sets the WhenScaled field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the WhenScaled field is set to the value of the last call.
    -func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenScaled(value v1.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
    +func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenScaled(value appsv1.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
     	b.WhenScaled = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetspec.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetspec.go
    index 81afdca59601..c48b64fe39b2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetspec.go
    @@ -21,14 +21,14 @@ package v1
     import (
     	appsv1 "k8s.io/api/apps/v1"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// StatefulSetSpecApplyConfiguration represents an declarative configuration of the StatefulSetSpec type for use
    +// StatefulSetSpecApplyConfiguration represents a declarative configuration of the StatefulSetSpec type for use
     // with apply.
     type StatefulSetSpecApplyConfiguration struct {
     	Replicas                             *int32                                                             `json:"replicas,omitempty"`
    -	Selector                             *v1.LabelSelectorApplyConfiguration                                `json:"selector,omitempty"`
    +	Selector                             *metav1.LabelSelectorApplyConfiguration                            `json:"selector,omitempty"`
     	Template                             *corev1.PodTemplateSpecApplyConfiguration                          `json:"template,omitempty"`
     	VolumeClaimTemplates                 []corev1.PersistentVolumeClaimApplyConfiguration                   `json:"volumeClaimTemplates,omitempty"`
     	ServiceName                          *string                                                            `json:"serviceName,omitempty"`
    @@ -40,7 +40,7 @@ type StatefulSetSpecApplyConfiguration struct {
     	Ordinals                             *StatefulSetOrdinalsApplyConfiguration                             `json:"ordinals,omitempty"`
     }
     
    -// StatefulSetSpecApplyConfiguration constructs an declarative configuration of the StatefulSetSpec type for use with
    +// StatefulSetSpecApplyConfiguration constructs a declarative configuration of the StatefulSetSpec type for use with
     // apply.
     func StatefulSetSpec() *StatefulSetSpecApplyConfiguration {
     	return &StatefulSetSpecApplyConfiguration{}
    @@ -57,7 +57,7 @@ func (b *StatefulSetSpecApplyConfiguration) WithReplicas(value int32) *StatefulS
     // WithSelector sets the Selector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Selector field is set to the value of the last call.
    -func (b *StatefulSetSpecApplyConfiguration) WithSelector(value *v1.LabelSelectorApplyConfiguration) *StatefulSetSpecApplyConfiguration {
    +func (b *StatefulSetSpecApplyConfiguration) WithSelector(value *metav1.LabelSelectorApplyConfiguration) *StatefulSetSpecApplyConfiguration {
     	b.Selector = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetstatus.go
    index d88881b6569b..637a1c649d25 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// StatefulSetStatusApplyConfiguration represents an declarative configuration of the StatefulSetStatus type for use
    +// StatefulSetStatusApplyConfiguration represents a declarative configuration of the StatefulSetStatus type for use
     // with apply.
     type StatefulSetStatusApplyConfiguration struct {
     	ObservedGeneration *int64                                   `json:"observedGeneration,omitempty"`
    @@ -33,7 +33,7 @@ type StatefulSetStatusApplyConfiguration struct {
     	AvailableReplicas  *int32                                   `json:"availableReplicas,omitempty"`
     }
     
    -// StatefulSetStatusApplyConfiguration constructs an declarative configuration of the StatefulSetStatus type for use with
    +// StatefulSetStatusApplyConfiguration constructs a declarative configuration of the StatefulSetStatus type for use with
     // apply.
     func StatefulSetStatus() *StatefulSetStatusApplyConfiguration {
     	return &StatefulSetStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetupdatestrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetupdatestrategy.go
    index 5268a1e06588..ae135d34d3b6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetupdatestrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetupdatestrategy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     )
     
    -// StatefulSetUpdateStrategyApplyConfiguration represents an declarative configuration of the StatefulSetUpdateStrategy type for use
    +// StatefulSetUpdateStrategyApplyConfiguration represents a declarative configuration of the StatefulSetUpdateStrategy type for use
     // with apply.
     type StatefulSetUpdateStrategyApplyConfiguration struct {
    -	Type          *v1.StatefulSetUpdateStrategyType                   `json:"type,omitempty"`
    +	Type          *appsv1.StatefulSetUpdateStrategyType               `json:"type,omitempty"`
     	RollingUpdate *RollingUpdateStatefulSetStrategyApplyConfiguration `json:"rollingUpdate,omitempty"`
     }
     
    -// StatefulSetUpdateStrategyApplyConfiguration constructs an declarative configuration of the StatefulSetUpdateStrategy type for use with
    +// StatefulSetUpdateStrategyApplyConfiguration constructs a declarative configuration of the StatefulSetUpdateStrategy type for use with
     // apply.
     func StatefulSetUpdateStrategy() *StatefulSetUpdateStrategyApplyConfiguration {
     	return &StatefulSetUpdateStrategyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func StatefulSetUpdateStrategy() *StatefulSetUpdateStrategyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *StatefulSetUpdateStrategyApplyConfiguration) WithType(value v1.StatefulSetUpdateStrategyType) *StatefulSetUpdateStrategyApplyConfiguration {
    +func (b *StatefulSetUpdateStrategyApplyConfiguration) WithType(value appsv1.StatefulSetUpdateStrategyType) *StatefulSetUpdateStrategyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/controllerrevision.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/controllerrevision.go
    index 827c06359848..910dd7bece1d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/controllerrevision.go
    @@ -19,7 +19,7 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	types "k8s.io/apimachinery/pkg/types"
    @@ -28,7 +28,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ControllerRevisionApplyConfiguration represents an declarative configuration of the ControllerRevision type for use
    +// ControllerRevisionApplyConfiguration represents a declarative configuration of the ControllerRevision type for use
     // with apply.
     type ControllerRevisionApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -37,7 +37,7 @@ type ControllerRevisionApplyConfiguration struct {
     	Revision                         *int64                `json:"revision,omitempty"`
     }
     
    -// ControllerRevision constructs an declarative configuration of the ControllerRevision type for use with
    +// ControllerRevision constructs a declarative configuration of the ControllerRevision type for use with
     // apply.
     func ControllerRevision(name, namespace string) *ControllerRevisionApplyConfiguration {
     	b := &ControllerRevisionApplyConfiguration{}
    @@ -59,18 +59,18 @@ func ControllerRevision(name, namespace string) *ControllerRevisionApplyConfigur
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractControllerRevision(controllerRevision *v1beta1.ControllerRevision, fieldManager string) (*ControllerRevisionApplyConfiguration, error) {
    +func ExtractControllerRevision(controllerRevision *appsv1beta1.ControllerRevision, fieldManager string) (*ControllerRevisionApplyConfiguration, error) {
     	return extractControllerRevision(controllerRevision, fieldManager, "")
     }
     
     // ExtractControllerRevisionStatus is the same as ExtractControllerRevision except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractControllerRevisionStatus(controllerRevision *v1beta1.ControllerRevision, fieldManager string) (*ControllerRevisionApplyConfiguration, error) {
    +func ExtractControllerRevisionStatus(controllerRevision *appsv1beta1.ControllerRevision, fieldManager string) (*ControllerRevisionApplyConfiguration, error) {
     	return extractControllerRevision(controllerRevision, fieldManager, "status")
     }
     
    -func extractControllerRevision(controllerRevision *v1beta1.ControllerRevision, fieldManager string, subresource string) (*ControllerRevisionApplyConfiguration, error) {
    +func extractControllerRevision(controllerRevision *appsv1beta1.ControllerRevision, fieldManager string, subresource string) (*ControllerRevisionApplyConfiguration, error) {
     	b := &ControllerRevisionApplyConfiguration{}
     	err := managedfields.ExtractInto(controllerRevision, internal.Parser().Type("io.k8s.api.apps.v1beta1.ControllerRevision"), fieldManager, b, subresource)
     	if err != nil {
    @@ -88,7 +88,7 @@ func extractControllerRevision(controllerRevision *v1beta1.ControllerRevision, f
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithKind(value string) *ControllerRevisionApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *ControllerRevisionApplyConfiguration) WithKind(value string) *Controlle
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithAPIVersion(value string) *ControllerRevisionApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *ControllerRevisionApplyConfiguration) WithAPIVersion(value string) *Con
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithName(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *ControllerRevisionApplyConfiguration) WithName(value string) *Controlle
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithGenerateName(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *ControllerRevisionApplyConfiguration) WithGenerateName(value string) *C
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithNamespace(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -132,7 +132,7 @@ func (b *ControllerRevisionApplyConfiguration) WithNamespace(value string) *Cont
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithUID(value types.UID) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -141,7 +141,7 @@ func (b *ControllerRevisionApplyConfiguration) WithUID(value types.UID) *Control
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithResourceVersion(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -150,7 +150,7 @@ func (b *ControllerRevisionApplyConfiguration) WithResourceVersion(value string)
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithGeneration(value int64) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -159,7 +159,7 @@ func (b *ControllerRevisionApplyConfiguration) WithGeneration(value int64) *Cont
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -168,7 +168,7 @@ func (b *ControllerRevisionApplyConfiguration) WithCreationTimestamp(value metav
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -177,7 +177,7 @@ func (b *ControllerRevisionApplyConfiguration) WithDeletionTimestamp(value metav
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -187,11 +187,11 @@ func (b *ControllerRevisionApplyConfiguration) WithDeletionGracePeriodSeconds(va
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ControllerRevisionApplyConfiguration) WithLabels(entries map[string]string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -202,11 +202,11 @@ func (b *ControllerRevisionApplyConfiguration) WithLabels(entries map[string]str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ControllerRevisionApplyConfiguration) WithAnnotations(entries map[string]string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -220,7 +220,7 @@ func (b *ControllerRevisionApplyConfiguration) WithOwnerReferences(values ...*v1
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -231,7 +231,7 @@ func (b *ControllerRevisionApplyConfiguration) WithOwnerReferences(values ...*v1
     func (b *ControllerRevisionApplyConfiguration) WithFinalizers(values ...string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -257,3 +257,9 @@ func (b *ControllerRevisionApplyConfiguration) WithRevision(value int64) *Contro
     	b.Revision = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ControllerRevisionApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deployment.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deployment.go
    index e22f76b6654f..057ea5b6f24a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deployment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deployment.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DeploymentApplyConfiguration represents an declarative configuration of the Deployment type for use
    +// DeploymentApplyConfiguration represents a declarative configuration of the Deployment type for use
     // with apply.
     type DeploymentApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type DeploymentApplyConfiguration struct {
     	Status                           *DeploymentStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Deployment constructs an declarative configuration of the Deployment type for use with
    +// Deployment constructs a declarative configuration of the Deployment type for use with
     // apply.
     func Deployment(name, namespace string) *DeploymentApplyConfiguration {
     	b := &DeploymentApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractDeployment(deployment *appsv1beta1.Deployment, fieldManager string,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithKind(value string) *DeploymentApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *DeploymentApplyConfiguration) WithKind(value string) *DeploymentApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithAPIVersion(value string) *DeploymentApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *DeploymentApplyConfiguration) WithAPIVersion(value string) *DeploymentA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithName(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *DeploymentApplyConfiguration) WithName(value string) *DeploymentApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithGenerateName(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *DeploymentApplyConfiguration) WithGenerateName(value string) *Deploymen
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithNamespace(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *DeploymentApplyConfiguration) WithNamespace(value string) *DeploymentAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithUID(value types.UID) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *DeploymentApplyConfiguration) WithUID(value types.UID) *DeploymentApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithResourceVersion(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *DeploymentApplyConfiguration) WithResourceVersion(value string) *Deploy
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithGeneration(value int64) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *DeploymentApplyConfiguration) WithGeneration(value int64) *DeploymentAp
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithCreationTimestamp(value metav1.Time) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *DeploymentApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *DeploymentApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *DeploymentApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *DeploymentApplyConfiguration) WithLabels(entries map[string]string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *DeploymentApplyConfiguration) WithLabels(entries map[string]string) *De
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *DeploymentApplyConfiguration) WithAnnotations(entries map[string]string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *DeploymentApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *DeploymentApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *DeploymentApplyConfiguration) WithFinalizers(values ...string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *DeploymentApplyConfiguration) WithStatus(value *DeploymentStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *DeploymentApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentcondition.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentcondition.go
    index 9da8ce089964..b0a45b1a6e43 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentcondition.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// DeploymentConditionApplyConfiguration represents an declarative configuration of the DeploymentCondition type for use
    +// DeploymentConditionApplyConfiguration represents a declarative configuration of the DeploymentCondition type for use
     // with apply.
     type DeploymentConditionApplyConfiguration struct {
    -	Type               *v1beta1.DeploymentConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus              `json:"status,omitempty"`
    -	LastUpdateTime     *metav1.Time                     `json:"lastUpdateTime,omitempty"`
    -	LastTransitionTime *metav1.Time                     `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                          `json:"reason,omitempty"`
    -	Message            *string                          `json:"message,omitempty"`
    +	Type               *appsv1beta1.DeploymentConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                  `json:"status,omitempty"`
    +	LastUpdateTime     *metav1.Time                         `json:"lastUpdateTime,omitempty"`
    +	LastTransitionTime *metav1.Time                         `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                              `json:"reason,omitempty"`
    +	Message            *string                              `json:"message,omitempty"`
     }
     
    -// DeploymentConditionApplyConfiguration constructs an declarative configuration of the DeploymentCondition type for use with
    +// DeploymentConditionApplyConfiguration constructs a declarative configuration of the DeploymentCondition type for use with
     // apply.
     func DeploymentCondition() *DeploymentConditionApplyConfiguration {
     	return &DeploymentConditionApplyConfiguration{}
    @@ -44,7 +44,7 @@ func DeploymentCondition() *DeploymentConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DeploymentConditionApplyConfiguration) WithType(value v1beta1.DeploymentConditionType) *DeploymentConditionApplyConfiguration {
    +func (b *DeploymentConditionApplyConfiguration) WithType(value appsv1beta1.DeploymentConditionType) *DeploymentConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentspec.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentspec.go
    index 5e18476bdcab..5531c756f9de 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentspec.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DeploymentSpecApplyConfiguration represents an declarative configuration of the DeploymentSpec type for use
    +// DeploymentSpecApplyConfiguration represents a declarative configuration of the DeploymentSpec type for use
     // with apply.
     type DeploymentSpecApplyConfiguration struct {
     	Replicas                *int32                                    `json:"replicas,omitempty"`
    @@ -37,7 +37,7 @@ type DeploymentSpecApplyConfiguration struct {
     	ProgressDeadlineSeconds *int32                                    `json:"progressDeadlineSeconds,omitempty"`
     }
     
    -// DeploymentSpecApplyConfiguration constructs an declarative configuration of the DeploymentSpec type for use with
    +// DeploymentSpecApplyConfiguration constructs a declarative configuration of the DeploymentSpec type for use with
     // apply.
     func DeploymentSpec() *DeploymentSpecApplyConfiguration {
     	return &DeploymentSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentstatus.go
    index f8d1cf5d2559..adc023a34dbb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// DeploymentStatusApplyConfiguration represents an declarative configuration of the DeploymentStatus type for use
    +// DeploymentStatusApplyConfiguration represents a declarative configuration of the DeploymentStatus type for use
     // with apply.
     type DeploymentStatusApplyConfiguration struct {
     	ObservedGeneration  *int64                                  `json:"observedGeneration,omitempty"`
    @@ -31,7 +31,7 @@ type DeploymentStatusApplyConfiguration struct {
     	CollisionCount      *int32                                  `json:"collisionCount,omitempty"`
     }
     
    -// DeploymentStatusApplyConfiguration constructs an declarative configuration of the DeploymentStatus type for use with
    +// DeploymentStatusApplyConfiguration constructs a declarative configuration of the DeploymentStatus type for use with
     // apply.
     func DeploymentStatus() *DeploymentStatusApplyConfiguration {
     	return &DeploymentStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentstrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentstrategy.go
    index 7279318a8849..03e66555af10 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentstrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentstrategy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
     )
     
    -// DeploymentStrategyApplyConfiguration represents an declarative configuration of the DeploymentStrategy type for use
    +// DeploymentStrategyApplyConfiguration represents a declarative configuration of the DeploymentStrategy type for use
     // with apply.
     type DeploymentStrategyApplyConfiguration struct {
    -	Type          *v1beta1.DeploymentStrategyType            `json:"type,omitempty"`
    +	Type          *appsv1beta1.DeploymentStrategyType        `json:"type,omitempty"`
     	RollingUpdate *RollingUpdateDeploymentApplyConfiguration `json:"rollingUpdate,omitempty"`
     }
     
    -// DeploymentStrategyApplyConfiguration constructs an declarative configuration of the DeploymentStrategy type for use with
    +// DeploymentStrategyApplyConfiguration constructs a declarative configuration of the DeploymentStrategy type for use with
     // apply.
     func DeploymentStrategy() *DeploymentStrategyApplyConfiguration {
     	return &DeploymentStrategyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func DeploymentStrategy() *DeploymentStrategyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DeploymentStrategyApplyConfiguration) WithType(value v1beta1.DeploymentStrategyType) *DeploymentStrategyApplyConfiguration {
    +func (b *DeploymentStrategyApplyConfiguration) WithType(value appsv1beta1.DeploymentStrategyType) *DeploymentStrategyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollbackconfig.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollbackconfig.go
    index 131e57a39df4..775f82eef801 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollbackconfig.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollbackconfig.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// RollbackConfigApplyConfiguration represents an declarative configuration of the RollbackConfig type for use
    +// RollbackConfigApplyConfiguration represents a declarative configuration of the RollbackConfig type for use
     // with apply.
     type RollbackConfigApplyConfiguration struct {
     	Revision *int64 `json:"revision,omitempty"`
     }
     
    -// RollbackConfigApplyConfiguration constructs an declarative configuration of the RollbackConfig type for use with
    +// RollbackConfigApplyConfiguration constructs a declarative configuration of the RollbackConfig type for use with
     // apply.
     func RollbackConfig() *RollbackConfigApplyConfiguration {
     	return &RollbackConfigApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollingupdatedeployment.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollingupdatedeployment.go
    index dde5f064b000..244701a5e015 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollingupdatedeployment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollingupdatedeployment.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// RollingUpdateDeploymentApplyConfiguration represents an declarative configuration of the RollingUpdateDeployment type for use
    +// RollingUpdateDeploymentApplyConfiguration represents a declarative configuration of the RollingUpdateDeployment type for use
     // with apply.
     type RollingUpdateDeploymentApplyConfiguration struct {
     	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
     	MaxSurge       *intstr.IntOrString `json:"maxSurge,omitempty"`
     }
     
    -// RollingUpdateDeploymentApplyConfiguration constructs an declarative configuration of the RollingUpdateDeployment type for use with
    +// RollingUpdateDeploymentApplyConfiguration constructs a declarative configuration of the RollingUpdateDeployment type for use with
     // apply.
     func RollingUpdateDeployment() *RollingUpdateDeploymentApplyConfiguration {
     	return &RollingUpdateDeploymentApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollingupdatestatefulsetstrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollingupdatestatefulsetstrategy.go
    index 8989a08d2c96..94c2971343e7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollingupdatestatefulsetstrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollingupdatestatefulsetstrategy.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// RollingUpdateStatefulSetStrategyApplyConfiguration represents an declarative configuration of the RollingUpdateStatefulSetStrategy type for use
    +// RollingUpdateStatefulSetStrategyApplyConfiguration represents a declarative configuration of the RollingUpdateStatefulSetStrategy type for use
     // with apply.
     type RollingUpdateStatefulSetStrategyApplyConfiguration struct {
     	Partition      *int32              `json:"partition,omitempty"`
     	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
     }
     
    -// RollingUpdateStatefulSetStrategyApplyConfiguration constructs an declarative configuration of the RollingUpdateStatefulSetStrategy type for use with
    +// RollingUpdateStatefulSetStrategyApplyConfiguration constructs a declarative configuration of the RollingUpdateStatefulSetStrategy type for use with
     // apply.
     func RollingUpdateStatefulSetStrategy() *RollingUpdateStatefulSetStrategyApplyConfiguration {
     	return &RollingUpdateStatefulSetStrategyApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulset.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulset.go
    index ed5cfab41c88..ba8aa3a4ca12 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulset.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// StatefulSetApplyConfiguration represents an declarative configuration of the StatefulSet type for use
    +// StatefulSetApplyConfiguration represents a declarative configuration of the StatefulSet type for use
     // with apply.
     type StatefulSetApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type StatefulSetApplyConfiguration struct {
     	Status                           *StatefulSetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// StatefulSet constructs an declarative configuration of the StatefulSet type for use with
    +// StatefulSet constructs a declarative configuration of the StatefulSet type for use with
     // apply.
     func StatefulSet(name, namespace string) *StatefulSetApplyConfiguration {
     	b := &StatefulSetApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractStatefulSet(statefulSet *appsv1beta1.StatefulSet, fieldManager strin
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithKind(value string) *StatefulSetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *StatefulSetApplyConfiguration) WithKind(value string) *StatefulSetApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithAPIVersion(value string) *StatefulSetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *StatefulSetApplyConfiguration) WithAPIVersion(value string) *StatefulSe
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithName(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *StatefulSetApplyConfiguration) WithName(value string) *StatefulSetApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithGenerateName(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *StatefulSetApplyConfiguration) WithGenerateName(value string) *Stateful
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithNamespace(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *StatefulSetApplyConfiguration) WithNamespace(value string) *StatefulSet
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithUID(value types.UID) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *StatefulSetApplyConfiguration) WithUID(value types.UID) *StatefulSetApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithResourceVersion(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *StatefulSetApplyConfiguration) WithResourceVersion(value string) *State
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithGeneration(value int64) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *StatefulSetApplyConfiguration) WithGeneration(value int64) *StatefulSet
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *StatefulSetApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *StatefulSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *StatefulSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *StatefulSetApplyConfiguration) WithLabels(entries map[string]string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *StatefulSetApplyConfiguration) WithLabels(entries map[string]string) *S
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *StatefulSetApplyConfiguration) WithAnnotations(entries map[string]string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *StatefulSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *StatefulSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *StatefulSetApplyConfiguration) WithFinalizers(values ...string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *StatefulSetApplyConfiguration) WithStatus(value *StatefulSetStatusApply
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *StatefulSetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetcondition.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetcondition.go
    index 97e994ab71ee..5a13584bc086 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetcondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// StatefulSetConditionApplyConfiguration represents an declarative configuration of the StatefulSetCondition type for use
    +// StatefulSetConditionApplyConfiguration represents a declarative configuration of the StatefulSetCondition type for use
     // with apply.
     type StatefulSetConditionApplyConfiguration struct {
    -	Type               *v1beta1.StatefulSetConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus               `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                      `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                           `json:"reason,omitempty"`
    -	Message            *string                           `json:"message,omitempty"`
    +	Type               *appsv1beta1.StatefulSetConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                   `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                          `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                               `json:"reason,omitempty"`
    +	Message            *string                               `json:"message,omitempty"`
     }
     
    -// StatefulSetConditionApplyConfiguration constructs an declarative configuration of the StatefulSetCondition type for use with
    +// StatefulSetConditionApplyConfiguration constructs a declarative configuration of the StatefulSetCondition type for use with
     // apply.
     func StatefulSetCondition() *StatefulSetConditionApplyConfiguration {
     	return &StatefulSetConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func StatefulSetCondition() *StatefulSetConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *StatefulSetConditionApplyConfiguration) WithType(value v1beta1.StatefulSetConditionType) *StatefulSetConditionApplyConfiguration {
    +func (b *StatefulSetConditionApplyConfiguration) WithType(value appsv1beta1.StatefulSetConditionType) *StatefulSetConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetordinals.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetordinals.go
    index 8f349a2d27c2..2e3049e5e221 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetordinals.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetordinals.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// StatefulSetOrdinalsApplyConfiguration represents an declarative configuration of the StatefulSetOrdinals type for use
    +// StatefulSetOrdinalsApplyConfiguration represents a declarative configuration of the StatefulSetOrdinals type for use
     // with apply.
     type StatefulSetOrdinalsApplyConfiguration struct {
     	Start *int32 `json:"start,omitempty"`
     }
     
    -// StatefulSetOrdinalsApplyConfiguration constructs an declarative configuration of the StatefulSetOrdinals type for use with
    +// StatefulSetOrdinalsApplyConfiguration constructs a declarative configuration of the StatefulSetOrdinals type for use with
     // apply.
     func StatefulSetOrdinals() *StatefulSetOrdinalsApplyConfiguration {
     	return &StatefulSetOrdinalsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetpersistentvolumeclaimretentionpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetpersistentvolumeclaimretentionpolicy.go
    index 0048724c041c..f9b6fbd88168 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetpersistentvolumeclaimretentionpolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetpersistentvolumeclaimretentionpolicy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
     )
     
    -// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration represents an declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use
    +// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration represents a declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use
     // with apply.
     type StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration struct {
    -	WhenDeleted *v1beta1.PersistentVolumeClaimRetentionPolicyType `json:"whenDeleted,omitempty"`
    -	WhenScaled  *v1beta1.PersistentVolumeClaimRetentionPolicyType `json:"whenScaled,omitempty"`
    +	WhenDeleted *appsv1beta1.PersistentVolumeClaimRetentionPolicyType `json:"whenDeleted,omitempty"`
    +	WhenScaled  *appsv1beta1.PersistentVolumeClaimRetentionPolicyType `json:"whenScaled,omitempty"`
     }
     
    -// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration constructs an declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use with
    +// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration constructs a declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use with
     // apply.
     func StatefulSetPersistentVolumeClaimRetentionPolicy() *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
     	return &StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func StatefulSetPersistentVolumeClaimRetentionPolicy() *StatefulSetPersistentVol
     // WithWhenDeleted sets the WhenDeleted field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the WhenDeleted field is set to the value of the last call.
    -func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenDeleted(value v1beta1.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
    +func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenDeleted(value appsv1beta1.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
     	b.WhenDeleted = &value
     	return b
     }
    @@ -46,7 +46,7 @@ func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) With
     // WithWhenScaled sets the WhenScaled field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the WhenScaled field is set to the value of the last call.
    -func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenScaled(value v1beta1.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
    +func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenScaled(value appsv1beta1.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
     	b.WhenScaled = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetspec.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetspec.go
    index 1eb1ba7b039b..137c7243b8d3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetspec.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// StatefulSetSpecApplyConfiguration represents an declarative configuration of the StatefulSetSpec type for use
    +// StatefulSetSpecApplyConfiguration represents a declarative configuration of the StatefulSetSpec type for use
     // with apply.
     type StatefulSetSpecApplyConfiguration struct {
     	Replicas                             *int32                                                             `json:"replicas,omitempty"`
    @@ -32,7 +32,7 @@ type StatefulSetSpecApplyConfiguration struct {
     	Template                             *corev1.PodTemplateSpecApplyConfiguration                          `json:"template,omitempty"`
     	VolumeClaimTemplates                 []corev1.PersistentVolumeClaimApplyConfiguration                   `json:"volumeClaimTemplates,omitempty"`
     	ServiceName                          *string                                                            `json:"serviceName,omitempty"`
    -	PodManagementPolicy                  *v1beta1.PodManagementPolicyType                                   `json:"podManagementPolicy,omitempty"`
    +	PodManagementPolicy                  *appsv1beta1.PodManagementPolicyType                               `json:"podManagementPolicy,omitempty"`
     	UpdateStrategy                       *StatefulSetUpdateStrategyApplyConfiguration                       `json:"updateStrategy,omitempty"`
     	RevisionHistoryLimit                 *int32                                                             `json:"revisionHistoryLimit,omitempty"`
     	MinReadySeconds                      *int32                                                             `json:"minReadySeconds,omitempty"`
    @@ -40,7 +40,7 @@ type StatefulSetSpecApplyConfiguration struct {
     	Ordinals                             *StatefulSetOrdinalsApplyConfiguration                             `json:"ordinals,omitempty"`
     }
     
    -// StatefulSetSpecApplyConfiguration constructs an declarative configuration of the StatefulSetSpec type for use with
    +// StatefulSetSpecApplyConfiguration constructs a declarative configuration of the StatefulSetSpec type for use with
     // apply.
     func StatefulSetSpec() *StatefulSetSpecApplyConfiguration {
     	return &StatefulSetSpecApplyConfiguration{}
    @@ -94,7 +94,7 @@ func (b *StatefulSetSpecApplyConfiguration) WithServiceName(value string) *State
     // WithPodManagementPolicy sets the PodManagementPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PodManagementPolicy field is set to the value of the last call.
    -func (b *StatefulSetSpecApplyConfiguration) WithPodManagementPolicy(value v1beta1.PodManagementPolicyType) *StatefulSetSpecApplyConfiguration {
    +func (b *StatefulSetSpecApplyConfiguration) WithPodManagementPolicy(value appsv1beta1.PodManagementPolicyType) *StatefulSetSpecApplyConfiguration {
     	b.PodManagementPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetstatus.go
    index f31066b6ff46..27ae7540fd24 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// StatefulSetStatusApplyConfiguration represents an declarative configuration of the StatefulSetStatus type for use
    +// StatefulSetStatusApplyConfiguration represents a declarative configuration of the StatefulSetStatus type for use
     // with apply.
     type StatefulSetStatusApplyConfiguration struct {
     	ObservedGeneration *int64                                   `json:"observedGeneration,omitempty"`
    @@ -33,7 +33,7 @@ type StatefulSetStatusApplyConfiguration struct {
     	AvailableReplicas  *int32                                   `json:"availableReplicas,omitempty"`
     }
     
    -// StatefulSetStatusApplyConfiguration constructs an declarative configuration of the StatefulSetStatus type for use with
    +// StatefulSetStatusApplyConfiguration constructs a declarative configuration of the StatefulSetStatus type for use with
     // apply.
     func StatefulSetStatus() *StatefulSetStatusApplyConfiguration {
     	return &StatefulSetStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetupdatestrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetupdatestrategy.go
    index 895c1e7f8ac0..24154f7af115 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetupdatestrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetupdatestrategy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
     )
     
    -// StatefulSetUpdateStrategyApplyConfiguration represents an declarative configuration of the StatefulSetUpdateStrategy type for use
    +// StatefulSetUpdateStrategyApplyConfiguration represents a declarative configuration of the StatefulSetUpdateStrategy type for use
     // with apply.
     type StatefulSetUpdateStrategyApplyConfiguration struct {
    -	Type          *v1beta1.StatefulSetUpdateStrategyType              `json:"type,omitempty"`
    +	Type          *appsv1beta1.StatefulSetUpdateStrategyType          `json:"type,omitempty"`
     	RollingUpdate *RollingUpdateStatefulSetStrategyApplyConfiguration `json:"rollingUpdate,omitempty"`
     }
     
    -// StatefulSetUpdateStrategyApplyConfiguration constructs an declarative configuration of the StatefulSetUpdateStrategy type for use with
    +// StatefulSetUpdateStrategyApplyConfiguration constructs a declarative configuration of the StatefulSetUpdateStrategy type for use with
     // apply.
     func StatefulSetUpdateStrategy() *StatefulSetUpdateStrategyApplyConfiguration {
     	return &StatefulSetUpdateStrategyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func StatefulSetUpdateStrategy() *StatefulSetUpdateStrategyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *StatefulSetUpdateStrategyApplyConfiguration) WithType(value v1beta1.StatefulSetUpdateStrategyType) *StatefulSetUpdateStrategyApplyConfiguration {
    +func (b *StatefulSetUpdateStrategyApplyConfiguration) WithType(value appsv1beta1.StatefulSetUpdateStrategyType) *StatefulSetUpdateStrategyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/controllerrevision.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/controllerrevision.go
    index 4abab6851ca8..6facd5384a88 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/controllerrevision.go
    @@ -19,7 +19,7 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	types "k8s.io/apimachinery/pkg/types"
    @@ -28,7 +28,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ControllerRevisionApplyConfiguration represents an declarative configuration of the ControllerRevision type for use
    +// ControllerRevisionApplyConfiguration represents a declarative configuration of the ControllerRevision type for use
     // with apply.
     type ControllerRevisionApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -37,7 +37,7 @@ type ControllerRevisionApplyConfiguration struct {
     	Revision                         *int64                `json:"revision,omitempty"`
     }
     
    -// ControllerRevision constructs an declarative configuration of the ControllerRevision type for use with
    +// ControllerRevision constructs a declarative configuration of the ControllerRevision type for use with
     // apply.
     func ControllerRevision(name, namespace string) *ControllerRevisionApplyConfiguration {
     	b := &ControllerRevisionApplyConfiguration{}
    @@ -59,18 +59,18 @@ func ControllerRevision(name, namespace string) *ControllerRevisionApplyConfigur
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractControllerRevision(controllerRevision *v1beta2.ControllerRevision, fieldManager string) (*ControllerRevisionApplyConfiguration, error) {
    +func ExtractControllerRevision(controllerRevision *appsv1beta2.ControllerRevision, fieldManager string) (*ControllerRevisionApplyConfiguration, error) {
     	return extractControllerRevision(controllerRevision, fieldManager, "")
     }
     
     // ExtractControllerRevisionStatus is the same as ExtractControllerRevision except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractControllerRevisionStatus(controllerRevision *v1beta2.ControllerRevision, fieldManager string) (*ControllerRevisionApplyConfiguration, error) {
    +func ExtractControllerRevisionStatus(controllerRevision *appsv1beta2.ControllerRevision, fieldManager string) (*ControllerRevisionApplyConfiguration, error) {
     	return extractControllerRevision(controllerRevision, fieldManager, "status")
     }
     
    -func extractControllerRevision(controllerRevision *v1beta2.ControllerRevision, fieldManager string, subresource string) (*ControllerRevisionApplyConfiguration, error) {
    +func extractControllerRevision(controllerRevision *appsv1beta2.ControllerRevision, fieldManager string, subresource string) (*ControllerRevisionApplyConfiguration, error) {
     	b := &ControllerRevisionApplyConfiguration{}
     	err := managedfields.ExtractInto(controllerRevision, internal.Parser().Type("io.k8s.api.apps.v1beta2.ControllerRevision"), fieldManager, b, subresource)
     	if err != nil {
    @@ -88,7 +88,7 @@ func extractControllerRevision(controllerRevision *v1beta2.ControllerRevision, f
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithKind(value string) *ControllerRevisionApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *ControllerRevisionApplyConfiguration) WithKind(value string) *Controlle
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithAPIVersion(value string) *ControllerRevisionApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *ControllerRevisionApplyConfiguration) WithAPIVersion(value string) *Con
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithName(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *ControllerRevisionApplyConfiguration) WithName(value string) *Controlle
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithGenerateName(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *ControllerRevisionApplyConfiguration) WithGenerateName(value string) *C
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithNamespace(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -132,7 +132,7 @@ func (b *ControllerRevisionApplyConfiguration) WithNamespace(value string) *Cont
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithUID(value types.UID) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -141,7 +141,7 @@ func (b *ControllerRevisionApplyConfiguration) WithUID(value types.UID) *Control
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithResourceVersion(value string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -150,7 +150,7 @@ func (b *ControllerRevisionApplyConfiguration) WithResourceVersion(value string)
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithGeneration(value int64) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -159,7 +159,7 @@ func (b *ControllerRevisionApplyConfiguration) WithGeneration(value int64) *Cont
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -168,7 +168,7 @@ func (b *ControllerRevisionApplyConfiguration) WithCreationTimestamp(value metav
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -177,7 +177,7 @@ func (b *ControllerRevisionApplyConfiguration) WithDeletionTimestamp(value metav
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ControllerRevisionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -187,11 +187,11 @@ func (b *ControllerRevisionApplyConfiguration) WithDeletionGracePeriodSeconds(va
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ControllerRevisionApplyConfiguration) WithLabels(entries map[string]string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -202,11 +202,11 @@ func (b *ControllerRevisionApplyConfiguration) WithLabels(entries map[string]str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ControllerRevisionApplyConfiguration) WithAnnotations(entries map[string]string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -220,7 +220,7 @@ func (b *ControllerRevisionApplyConfiguration) WithOwnerReferences(values ...*v1
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -231,7 +231,7 @@ func (b *ControllerRevisionApplyConfiguration) WithOwnerReferences(values ...*v1
     func (b *ControllerRevisionApplyConfiguration) WithFinalizers(values ...string) *ControllerRevisionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -257,3 +257,9 @@ func (b *ControllerRevisionApplyConfiguration) WithRevision(value int64) *Contro
     	b.Revision = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ControllerRevisionApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonset.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonset.go
    index 906a8ca46e9e..89a2ebd4b23a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonset.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DaemonSetApplyConfiguration represents an declarative configuration of the DaemonSet type for use
    +// DaemonSetApplyConfiguration represents a declarative configuration of the DaemonSet type for use
     // with apply.
     type DaemonSetApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type DaemonSetApplyConfiguration struct {
     	Status                           *DaemonSetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// DaemonSet constructs an declarative configuration of the DaemonSet type for use with
    +// DaemonSet constructs a declarative configuration of the DaemonSet type for use with
     // apply.
     func DaemonSet(name, namespace string) *DaemonSetApplyConfiguration {
     	b := &DaemonSetApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractDaemonSet(daemonSet *appsv1beta2.DaemonSet, fieldManager string, sub
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithKind(value string) *DaemonSetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *DaemonSetApplyConfiguration) WithKind(value string) *DaemonSetApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithAPIVersion(value string) *DaemonSetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *DaemonSetApplyConfiguration) WithAPIVersion(value string) *DaemonSetApp
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithName(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *DaemonSetApplyConfiguration) WithName(value string) *DaemonSetApplyConf
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithGenerateName(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *DaemonSetApplyConfiguration) WithGenerateName(value string) *DaemonSetA
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithNamespace(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *DaemonSetApplyConfiguration) WithNamespace(value string) *DaemonSetAppl
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithUID(value types.UID) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *DaemonSetApplyConfiguration) WithUID(value types.UID) *DaemonSetApplyCo
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithResourceVersion(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *DaemonSetApplyConfiguration) WithResourceVersion(value string) *DaemonS
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithGeneration(value int64) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *DaemonSetApplyConfiguration) WithGeneration(value int64) *DaemonSetAppl
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *DaemonSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *DaemonSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *DaemonSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64
     // overwriting an existing map entries in Labels field with the same key.
     func (b *DaemonSetApplyConfiguration) WithLabels(entries map[string]string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *DaemonSetApplyConfiguration) WithLabels(entries map[string]string) *Dae
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *DaemonSetApplyConfiguration) WithAnnotations(entries map[string]string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *DaemonSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *DaemonSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     func (b *DaemonSetApplyConfiguration) WithFinalizers(values ...string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *DaemonSetApplyConfiguration) WithStatus(value *DaemonSetStatusApplyConf
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *DaemonSetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetcondition.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetcondition.go
    index 55dc1f487799..0aa47cf0afac 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetcondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// DaemonSetConditionApplyConfiguration represents an declarative configuration of the DaemonSetCondition type for use
    +// DaemonSetConditionApplyConfiguration represents a declarative configuration of the DaemonSetCondition type for use
     // with apply.
     type DaemonSetConditionApplyConfiguration struct {
    -	Type               *v1beta2.DaemonSetConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus             `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                    `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                         `json:"reason,omitempty"`
    -	Message            *string                         `json:"message,omitempty"`
    +	Type               *appsv1beta2.DaemonSetConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                 `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                        `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                             `json:"reason,omitempty"`
    +	Message            *string                             `json:"message,omitempty"`
     }
     
    -// DaemonSetConditionApplyConfiguration constructs an declarative configuration of the DaemonSetCondition type for use with
    +// DaemonSetConditionApplyConfiguration constructs a declarative configuration of the DaemonSetCondition type for use with
     // apply.
     func DaemonSetCondition() *DaemonSetConditionApplyConfiguration {
     	return &DaemonSetConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func DaemonSetCondition() *DaemonSetConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DaemonSetConditionApplyConfiguration) WithType(value v1beta2.DaemonSetConditionType) *DaemonSetConditionApplyConfiguration {
    +func (b *DaemonSetConditionApplyConfiguration) WithType(value appsv1beta2.DaemonSetConditionType) *DaemonSetConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetspec.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetspec.go
    index 48137819af02..74d8bf51c627 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetspec.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DaemonSetSpecApplyConfiguration represents an declarative configuration of the DaemonSetSpec type for use
    +// DaemonSetSpecApplyConfiguration represents a declarative configuration of the DaemonSetSpec type for use
     // with apply.
     type DaemonSetSpecApplyConfiguration struct {
     	Selector             *v1.LabelSelectorApplyConfiguration        `json:"selector,omitempty"`
    @@ -33,7 +33,7 @@ type DaemonSetSpecApplyConfiguration struct {
     	RevisionHistoryLimit *int32                                     `json:"revisionHistoryLimit,omitempty"`
     }
     
    -// DaemonSetSpecApplyConfiguration constructs an declarative configuration of the DaemonSetSpec type for use with
    +// DaemonSetSpecApplyConfiguration constructs a declarative configuration of the DaemonSetSpec type for use with
     // apply.
     func DaemonSetSpec() *DaemonSetSpecApplyConfiguration {
     	return &DaemonSetSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetstatus.go
    index 29cda7a90ec7..6b0fda89530b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta2
     
    -// DaemonSetStatusApplyConfiguration represents an declarative configuration of the DaemonSetStatus type for use
    +// DaemonSetStatusApplyConfiguration represents a declarative configuration of the DaemonSetStatus type for use
     // with apply.
     type DaemonSetStatusApplyConfiguration struct {
     	CurrentNumberScheduled *int32                                 `json:"currentNumberScheduled,omitempty"`
    @@ -33,7 +33,7 @@ type DaemonSetStatusApplyConfiguration struct {
     	Conditions             []DaemonSetConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// DaemonSetStatusApplyConfiguration constructs an declarative configuration of the DaemonSetStatus type for use with
    +// DaemonSetStatusApplyConfiguration constructs a declarative configuration of the DaemonSetStatus type for use with
     // apply.
     func DaemonSetStatus() *DaemonSetStatusApplyConfiguration {
     	return &DaemonSetStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetupdatestrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetupdatestrategy.go
    index 07fc07fc6afc..2cee58cf3e68 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetupdatestrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetupdatestrategy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     )
     
    -// DaemonSetUpdateStrategyApplyConfiguration represents an declarative configuration of the DaemonSetUpdateStrategy type for use
    +// DaemonSetUpdateStrategyApplyConfiguration represents a declarative configuration of the DaemonSetUpdateStrategy type for use
     // with apply.
     type DaemonSetUpdateStrategyApplyConfiguration struct {
    -	Type          *v1beta2.DaemonSetUpdateStrategyType      `json:"type,omitempty"`
    +	Type          *appsv1beta2.DaemonSetUpdateStrategyType  `json:"type,omitempty"`
     	RollingUpdate *RollingUpdateDaemonSetApplyConfiguration `json:"rollingUpdate,omitempty"`
     }
     
    -// DaemonSetUpdateStrategyApplyConfiguration constructs an declarative configuration of the DaemonSetUpdateStrategy type for use with
    +// DaemonSetUpdateStrategyApplyConfiguration constructs a declarative configuration of the DaemonSetUpdateStrategy type for use with
     // apply.
     func DaemonSetUpdateStrategy() *DaemonSetUpdateStrategyApplyConfiguration {
     	return &DaemonSetUpdateStrategyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func DaemonSetUpdateStrategy() *DaemonSetUpdateStrategyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DaemonSetUpdateStrategyApplyConfiguration) WithType(value v1beta2.DaemonSetUpdateStrategyType) *DaemonSetUpdateStrategyApplyConfiguration {
    +func (b *DaemonSetUpdateStrategyApplyConfiguration) WithType(value appsv1beta2.DaemonSetUpdateStrategyType) *DaemonSetUpdateStrategyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deployment.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deployment.go
    index 7e39e67510cd..8948cc606679 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deployment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deployment.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DeploymentApplyConfiguration represents an declarative configuration of the Deployment type for use
    +// DeploymentApplyConfiguration represents a declarative configuration of the Deployment type for use
     // with apply.
     type DeploymentApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type DeploymentApplyConfiguration struct {
     	Status                           *DeploymentStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Deployment constructs an declarative configuration of the Deployment type for use with
    +// Deployment constructs a declarative configuration of the Deployment type for use with
     // apply.
     func Deployment(name, namespace string) *DeploymentApplyConfiguration {
     	b := &DeploymentApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractDeployment(deployment *appsv1beta2.Deployment, fieldManager string,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithKind(value string) *DeploymentApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *DeploymentApplyConfiguration) WithKind(value string) *DeploymentApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithAPIVersion(value string) *DeploymentApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *DeploymentApplyConfiguration) WithAPIVersion(value string) *DeploymentA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithName(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *DeploymentApplyConfiguration) WithName(value string) *DeploymentApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithGenerateName(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *DeploymentApplyConfiguration) WithGenerateName(value string) *Deploymen
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithNamespace(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *DeploymentApplyConfiguration) WithNamespace(value string) *DeploymentAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithUID(value types.UID) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *DeploymentApplyConfiguration) WithUID(value types.UID) *DeploymentApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithResourceVersion(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *DeploymentApplyConfiguration) WithResourceVersion(value string) *Deploy
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithGeneration(value int64) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *DeploymentApplyConfiguration) WithGeneration(value int64) *DeploymentAp
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithCreationTimestamp(value metav1.Time) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *DeploymentApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *DeploymentApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *DeploymentApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *DeploymentApplyConfiguration) WithLabels(entries map[string]string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *DeploymentApplyConfiguration) WithLabels(entries map[string]string) *De
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *DeploymentApplyConfiguration) WithAnnotations(entries map[string]string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *DeploymentApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *DeploymentApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *DeploymentApplyConfiguration) WithFinalizers(values ...string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *DeploymentApplyConfiguration) WithStatus(value *DeploymentStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *DeploymentApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentcondition.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentcondition.go
    index 852a2c683224..f404dd9df5d8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentcondition.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// DeploymentConditionApplyConfiguration represents an declarative configuration of the DeploymentCondition type for use
    +// DeploymentConditionApplyConfiguration represents a declarative configuration of the DeploymentCondition type for use
     // with apply.
     type DeploymentConditionApplyConfiguration struct {
    -	Type               *v1beta2.DeploymentConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus              `json:"status,omitempty"`
    -	LastUpdateTime     *metav1.Time                     `json:"lastUpdateTime,omitempty"`
    -	LastTransitionTime *metav1.Time                     `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                          `json:"reason,omitempty"`
    -	Message            *string                          `json:"message,omitempty"`
    +	Type               *appsv1beta2.DeploymentConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                  `json:"status,omitempty"`
    +	LastUpdateTime     *metav1.Time                         `json:"lastUpdateTime,omitempty"`
    +	LastTransitionTime *metav1.Time                         `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                              `json:"reason,omitempty"`
    +	Message            *string                              `json:"message,omitempty"`
     }
     
    -// DeploymentConditionApplyConfiguration constructs an declarative configuration of the DeploymentCondition type for use with
    +// DeploymentConditionApplyConfiguration constructs a declarative configuration of the DeploymentCondition type for use with
     // apply.
     func DeploymentCondition() *DeploymentConditionApplyConfiguration {
     	return &DeploymentConditionApplyConfiguration{}
    @@ -44,7 +44,7 @@ func DeploymentCondition() *DeploymentConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DeploymentConditionApplyConfiguration) WithType(value v1beta2.DeploymentConditionType) *DeploymentConditionApplyConfiguration {
    +func (b *DeploymentConditionApplyConfiguration) WithType(value appsv1beta2.DeploymentConditionType) *DeploymentConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentspec.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentspec.go
    index 6898941ace2d..1b55130c6b66 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentspec.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DeploymentSpecApplyConfiguration represents an declarative configuration of the DeploymentSpec type for use
    +// DeploymentSpecApplyConfiguration represents a declarative configuration of the DeploymentSpec type for use
     // with apply.
     type DeploymentSpecApplyConfiguration struct {
     	Replicas                *int32                                    `json:"replicas,omitempty"`
    @@ -36,7 +36,7 @@ type DeploymentSpecApplyConfiguration struct {
     	ProgressDeadlineSeconds *int32                                    `json:"progressDeadlineSeconds,omitempty"`
     }
     
    -// DeploymentSpecApplyConfiguration constructs an declarative configuration of the DeploymentSpec type for use with
    +// DeploymentSpecApplyConfiguration constructs a declarative configuration of the DeploymentSpec type for use with
     // apply.
     func DeploymentSpec() *DeploymentSpecApplyConfiguration {
     	return &DeploymentSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentstatus.go
    index fe99ca991745..5fa912233232 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta2
     
    -// DeploymentStatusApplyConfiguration represents an declarative configuration of the DeploymentStatus type for use
    +// DeploymentStatusApplyConfiguration represents a declarative configuration of the DeploymentStatus type for use
     // with apply.
     type DeploymentStatusApplyConfiguration struct {
     	ObservedGeneration  *int64                                  `json:"observedGeneration,omitempty"`
    @@ -31,7 +31,7 @@ type DeploymentStatusApplyConfiguration struct {
     	CollisionCount      *int32                                  `json:"collisionCount,omitempty"`
     }
     
    -// DeploymentStatusApplyConfiguration constructs an declarative configuration of the DeploymentStatus type for use with
    +// DeploymentStatusApplyConfiguration constructs a declarative configuration of the DeploymentStatus type for use with
     // apply.
     func DeploymentStatus() *DeploymentStatusApplyConfiguration {
     	return &DeploymentStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentstrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentstrategy.go
    index 8714e153e40b..6347a3a39e75 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentstrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentstrategy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     )
     
    -// DeploymentStrategyApplyConfiguration represents an declarative configuration of the DeploymentStrategy type for use
    +// DeploymentStrategyApplyConfiguration represents a declarative configuration of the DeploymentStrategy type for use
     // with apply.
     type DeploymentStrategyApplyConfiguration struct {
    -	Type          *v1beta2.DeploymentStrategyType            `json:"type,omitempty"`
    +	Type          *appsv1beta2.DeploymentStrategyType        `json:"type,omitempty"`
     	RollingUpdate *RollingUpdateDeploymentApplyConfiguration `json:"rollingUpdate,omitempty"`
     }
     
    -// DeploymentStrategyApplyConfiguration constructs an declarative configuration of the DeploymentStrategy type for use with
    +// DeploymentStrategyApplyConfiguration constructs a declarative configuration of the DeploymentStrategy type for use with
     // apply.
     func DeploymentStrategy() *DeploymentStrategyApplyConfiguration {
     	return &DeploymentStrategyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func DeploymentStrategy() *DeploymentStrategyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DeploymentStrategyApplyConfiguration) WithType(value v1beta2.DeploymentStrategyType) *DeploymentStrategyApplyConfiguration {
    +func (b *DeploymentStrategyApplyConfiguration) WithType(value appsv1beta2.DeploymentStrategyType) *DeploymentStrategyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicaset.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicaset.go
    index d9303e1b22e5..679416b21f50 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicaset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicaset.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ReplicaSetApplyConfiguration represents an declarative configuration of the ReplicaSet type for use
    +// ReplicaSetApplyConfiguration represents a declarative configuration of the ReplicaSet type for use
     // with apply.
     type ReplicaSetApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type ReplicaSetApplyConfiguration struct {
     	Status                           *ReplicaSetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// ReplicaSet constructs an declarative configuration of the ReplicaSet type for use with
    +// ReplicaSet constructs a declarative configuration of the ReplicaSet type for use with
     // apply.
     func ReplicaSet(name, namespace string) *ReplicaSetApplyConfiguration {
     	b := &ReplicaSetApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractReplicaSet(replicaSet *appsv1beta2.ReplicaSet, fieldManager string,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithKind(value string) *ReplicaSetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *ReplicaSetApplyConfiguration) WithKind(value string) *ReplicaSetApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithAPIVersion(value string) *ReplicaSetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *ReplicaSetApplyConfiguration) WithAPIVersion(value string) *ReplicaSetA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithName(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *ReplicaSetApplyConfiguration) WithName(value string) *ReplicaSetApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithGenerateName(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *ReplicaSetApplyConfiguration) WithGenerateName(value string) *ReplicaSe
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithNamespace(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *ReplicaSetApplyConfiguration) WithNamespace(value string) *ReplicaSetAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithUID(value types.UID) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *ReplicaSetApplyConfiguration) WithUID(value types.UID) *ReplicaSetApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithResourceVersion(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *ReplicaSetApplyConfiguration) WithResourceVersion(value string) *Replic
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithGeneration(value int64) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *ReplicaSetApplyConfiguration) WithGeneration(value int64) *ReplicaSetAp
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *ReplicaSetApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *ReplicaSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *ReplicaSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ReplicaSetApplyConfiguration) WithLabels(entries map[string]string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *ReplicaSetApplyConfiguration) WithLabels(entries map[string]string) *Re
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ReplicaSetApplyConfiguration) WithAnnotations(entries map[string]string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *ReplicaSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *ReplicaSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *ReplicaSetApplyConfiguration) WithFinalizers(values ...string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *ReplicaSetApplyConfiguration) WithStatus(value *ReplicaSetStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ReplicaSetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetcondition.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetcondition.go
    index 47776bfa2e6d..3d8cd3632617 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetcondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// ReplicaSetConditionApplyConfiguration represents an declarative configuration of the ReplicaSetCondition type for use
    +// ReplicaSetConditionApplyConfiguration represents a declarative configuration of the ReplicaSetCondition type for use
     // with apply.
     type ReplicaSetConditionApplyConfiguration struct {
    -	Type               *v1beta2.ReplicaSetConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus              `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                     `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                          `json:"reason,omitempty"`
    -	Message            *string                          `json:"message,omitempty"`
    +	Type               *appsv1beta2.ReplicaSetConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                  `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                         `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                              `json:"reason,omitempty"`
    +	Message            *string                              `json:"message,omitempty"`
     }
     
    -// ReplicaSetConditionApplyConfiguration constructs an declarative configuration of the ReplicaSetCondition type for use with
    +// ReplicaSetConditionApplyConfiguration constructs a declarative configuration of the ReplicaSetCondition type for use with
     // apply.
     func ReplicaSetCondition() *ReplicaSetConditionApplyConfiguration {
     	return &ReplicaSetConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func ReplicaSetCondition() *ReplicaSetConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *ReplicaSetConditionApplyConfiguration) WithType(value v1beta2.ReplicaSetConditionType) *ReplicaSetConditionApplyConfiguration {
    +func (b *ReplicaSetConditionApplyConfiguration) WithType(value appsv1beta2.ReplicaSetConditionType) *ReplicaSetConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetspec.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetspec.go
    index 14d548169e54..1d77b9e0fd6b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetspec.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ReplicaSetSpecApplyConfiguration represents an declarative configuration of the ReplicaSetSpec type for use
    +// ReplicaSetSpecApplyConfiguration represents a declarative configuration of the ReplicaSetSpec type for use
     // with apply.
     type ReplicaSetSpecApplyConfiguration struct {
     	Replicas        *int32                                    `json:"replicas,omitempty"`
    @@ -32,7 +32,7 @@ type ReplicaSetSpecApplyConfiguration struct {
     	Template        *corev1.PodTemplateSpecApplyConfiguration `json:"template,omitempty"`
     }
     
    -// ReplicaSetSpecApplyConfiguration constructs an declarative configuration of the ReplicaSetSpec type for use with
    +// ReplicaSetSpecApplyConfiguration constructs a declarative configuration of the ReplicaSetSpec type for use with
     // apply.
     func ReplicaSetSpec() *ReplicaSetSpecApplyConfiguration {
     	return &ReplicaSetSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetstatus.go
    index 7c1b8fb29dd3..d3c92e274d41 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta2
     
    -// ReplicaSetStatusApplyConfiguration represents an declarative configuration of the ReplicaSetStatus type for use
    +// ReplicaSetStatusApplyConfiguration represents a declarative configuration of the ReplicaSetStatus type for use
     // with apply.
     type ReplicaSetStatusApplyConfiguration struct {
     	Replicas             *int32                                  `json:"replicas,omitempty"`
    @@ -29,7 +29,7 @@ type ReplicaSetStatusApplyConfiguration struct {
     	Conditions           []ReplicaSetConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// ReplicaSetStatusApplyConfiguration constructs an declarative configuration of the ReplicaSetStatus type for use with
    +// ReplicaSetStatusApplyConfiguration constructs a declarative configuration of the ReplicaSetStatus type for use with
     // apply.
     func ReplicaSetStatus() *ReplicaSetStatusApplyConfiguration {
     	return &ReplicaSetStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatedaemonset.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatedaemonset.go
    index b586b678d487..ad6021d37a69 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatedaemonset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatedaemonset.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// RollingUpdateDaemonSetApplyConfiguration represents an declarative configuration of the RollingUpdateDaemonSet type for use
    +// RollingUpdateDaemonSetApplyConfiguration represents a declarative configuration of the RollingUpdateDaemonSet type for use
     // with apply.
     type RollingUpdateDaemonSetApplyConfiguration struct {
     	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
     	MaxSurge       *intstr.IntOrString `json:"maxSurge,omitempty"`
     }
     
    -// RollingUpdateDaemonSetApplyConfiguration constructs an declarative configuration of the RollingUpdateDaemonSet type for use with
    +// RollingUpdateDaemonSetApplyConfiguration constructs a declarative configuration of the RollingUpdateDaemonSet type for use with
     // apply.
     func RollingUpdateDaemonSet() *RollingUpdateDaemonSetApplyConfiguration {
     	return &RollingUpdateDaemonSetApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatedeployment.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatedeployment.go
    index 78ef2100816e..b0cc3a4ee40f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatedeployment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatedeployment.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// RollingUpdateDeploymentApplyConfiguration represents an declarative configuration of the RollingUpdateDeployment type for use
    +// RollingUpdateDeploymentApplyConfiguration represents a declarative configuration of the RollingUpdateDeployment type for use
     // with apply.
     type RollingUpdateDeploymentApplyConfiguration struct {
     	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
     	MaxSurge       *intstr.IntOrString `json:"maxSurge,omitempty"`
     }
     
    -// RollingUpdateDeploymentApplyConfiguration constructs an declarative configuration of the RollingUpdateDeployment type for use with
    +// RollingUpdateDeploymentApplyConfiguration constructs a declarative configuration of the RollingUpdateDeployment type for use with
     // apply.
     func RollingUpdateDeployment() *RollingUpdateDeploymentApplyConfiguration {
     	return &RollingUpdateDeploymentApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatestatefulsetstrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatestatefulsetstrategy.go
    index 4a12e51c0a2a..0046c264bbc5 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatestatefulsetstrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatestatefulsetstrategy.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// RollingUpdateStatefulSetStrategyApplyConfiguration represents an declarative configuration of the RollingUpdateStatefulSetStrategy type for use
    +// RollingUpdateStatefulSetStrategyApplyConfiguration represents a declarative configuration of the RollingUpdateStatefulSetStrategy type for use
     // with apply.
     type RollingUpdateStatefulSetStrategyApplyConfiguration struct {
     	Partition      *int32              `json:"partition,omitempty"`
     	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
     }
     
    -// RollingUpdateStatefulSetStrategyApplyConfiguration constructs an declarative configuration of the RollingUpdateStatefulSetStrategy type for use with
    +// RollingUpdateStatefulSetStrategyApplyConfiguration constructs a declarative configuration of the RollingUpdateStatefulSetStrategy type for use with
     // apply.
     func RollingUpdateStatefulSetStrategy() *RollingUpdateStatefulSetStrategyApplyConfiguration {
     	return &RollingUpdateStatefulSetStrategyApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/scale.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/scale.go
    index 0e89668cb3b6..27067b6aa30e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/scale.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/scale.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ScaleApplyConfiguration represents an declarative configuration of the Scale type for use
    +// ScaleApplyConfiguration represents a declarative configuration of the Scale type for use
     // with apply.
     type ScaleApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
     	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *v1beta2.ScaleSpec   `json:"spec,omitempty"`
    -	Status                           *v1beta2.ScaleStatus `json:"status,omitempty"`
    +	Spec                             *appsv1beta2.ScaleSpec   `json:"spec,omitempty"`
    +	Status                           *appsv1beta2.ScaleStatus `json:"status,omitempty"`
     }
     
    -// ScaleApplyConfiguration constructs an declarative configuration of the Scale type for use with
    +// ScaleApplyConfiguration constructs a declarative configuration of the Scale type for use with
     // apply.
     func Scale() *ScaleApplyConfiguration {
     	b := &ScaleApplyConfiguration{}
    @@ -47,7 +47,7 @@ func Scale() *ScaleApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithKind(value string) *ScaleApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -55,7 +55,7 @@ func (b *ScaleApplyConfiguration) WithKind(value string) *ScaleApplyConfiguratio
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithAPIVersion(value string) *ScaleApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -64,7 +64,7 @@ func (b *ScaleApplyConfiguration) WithAPIVersion(value string) *ScaleApplyConfig
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithName(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -73,7 +73,7 @@ func (b *ScaleApplyConfiguration) WithName(value string) *ScaleApplyConfiguratio
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithGenerateName(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -82,7 +82,7 @@ func (b *ScaleApplyConfiguration) WithGenerateName(value string) *ScaleApplyConf
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithNamespace(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -91,7 +91,7 @@ func (b *ScaleApplyConfiguration) WithNamespace(value string) *ScaleApplyConfigu
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithUID(value types.UID) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -100,7 +100,7 @@ func (b *ScaleApplyConfiguration) WithUID(value types.UID) *ScaleApplyConfigurat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithResourceVersion(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -109,7 +109,7 @@ func (b *ScaleApplyConfiguration) WithResourceVersion(value string) *ScaleApplyC
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithGeneration(value int64) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -118,7 +118,7 @@ func (b *ScaleApplyConfiguration) WithGeneration(value int64) *ScaleApplyConfigu
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -127,7 +127,7 @@ func (b *ScaleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *Scal
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -136,7 +136,7 @@ func (b *ScaleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Scal
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -146,11 +146,11 @@ func (b *ScaleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *S
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ScaleApplyConfiguration) WithLabels(entries map[string]string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -161,11 +161,11 @@ func (b *ScaleApplyConfiguration) WithLabels(entries map[string]string) *ScaleAp
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ScaleApplyConfiguration) WithAnnotations(entries map[string]string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -179,7 +179,7 @@ func (b *ScaleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -190,7 +190,7 @@ func (b *ScaleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     func (b *ScaleApplyConfiguration) WithFinalizers(values ...string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -204,7 +204,7 @@ func (b *ScaleApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     // WithSpec sets the Spec field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Spec field is set to the value of the last call.
    -func (b *ScaleApplyConfiguration) WithSpec(value v1beta2.ScaleSpec) *ScaleApplyConfiguration {
    +func (b *ScaleApplyConfiguration) WithSpec(value appsv1beta2.ScaleSpec) *ScaleApplyConfiguration {
     	b.Spec = &value
     	return b
     }
    @@ -212,7 +212,13 @@ func (b *ScaleApplyConfiguration) WithSpec(value v1beta2.ScaleSpec) *ScaleApplyC
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *ScaleApplyConfiguration) WithStatus(value v1beta2.ScaleStatus) *ScaleApplyConfiguration {
    +func (b *ScaleApplyConfiguration) WithStatus(value appsv1beta2.ScaleStatus) *ScaleApplyConfiguration {
     	b.Status = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ScaleApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulset.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulset.go
    index 03d5428b4b6b..933072421c20 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulset.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// StatefulSetApplyConfiguration represents an declarative configuration of the StatefulSet type for use
    +// StatefulSetApplyConfiguration represents a declarative configuration of the StatefulSet type for use
     // with apply.
     type StatefulSetApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type StatefulSetApplyConfiguration struct {
     	Status                           *StatefulSetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// StatefulSet constructs an declarative configuration of the StatefulSet type for use with
    +// StatefulSet constructs a declarative configuration of the StatefulSet type for use with
     // apply.
     func StatefulSet(name, namespace string) *StatefulSetApplyConfiguration {
     	b := &StatefulSetApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractStatefulSet(statefulSet *appsv1beta2.StatefulSet, fieldManager strin
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithKind(value string) *StatefulSetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *StatefulSetApplyConfiguration) WithKind(value string) *StatefulSetApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithAPIVersion(value string) *StatefulSetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *StatefulSetApplyConfiguration) WithAPIVersion(value string) *StatefulSe
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithName(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *StatefulSetApplyConfiguration) WithName(value string) *StatefulSetApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithGenerateName(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *StatefulSetApplyConfiguration) WithGenerateName(value string) *Stateful
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithNamespace(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *StatefulSetApplyConfiguration) WithNamespace(value string) *StatefulSet
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithUID(value types.UID) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *StatefulSetApplyConfiguration) WithUID(value types.UID) *StatefulSetApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithResourceVersion(value string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *StatefulSetApplyConfiguration) WithResourceVersion(value string) *State
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithGeneration(value int64) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *StatefulSetApplyConfiguration) WithGeneration(value int64) *StatefulSet
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *StatefulSetApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *StatefulSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *StatefulSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *StatefulSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *StatefulSetApplyConfiguration) WithLabels(entries map[string]string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *StatefulSetApplyConfiguration) WithLabels(entries map[string]string) *S
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *StatefulSetApplyConfiguration) WithAnnotations(entries map[string]string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *StatefulSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *StatefulSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *StatefulSetApplyConfiguration) WithFinalizers(values ...string) *StatefulSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *StatefulSetApplyConfiguration) WithStatus(value *StatefulSetStatusApply
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *StatefulSetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetcondition.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetcondition.go
    index c33e68b5e28d..50bef2003424 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetcondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// StatefulSetConditionApplyConfiguration represents an declarative configuration of the StatefulSetCondition type for use
    +// StatefulSetConditionApplyConfiguration represents a declarative configuration of the StatefulSetCondition type for use
     // with apply.
     type StatefulSetConditionApplyConfiguration struct {
    -	Type               *v1beta2.StatefulSetConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus               `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                      `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                           `json:"reason,omitempty"`
    -	Message            *string                           `json:"message,omitempty"`
    +	Type               *appsv1beta2.StatefulSetConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                   `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                          `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                               `json:"reason,omitempty"`
    +	Message            *string                               `json:"message,omitempty"`
     }
     
    -// StatefulSetConditionApplyConfiguration constructs an declarative configuration of the StatefulSetCondition type for use with
    +// StatefulSetConditionApplyConfiguration constructs a declarative configuration of the StatefulSetCondition type for use with
     // apply.
     func StatefulSetCondition() *StatefulSetConditionApplyConfiguration {
     	return &StatefulSetConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func StatefulSetCondition() *StatefulSetConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *StatefulSetConditionApplyConfiguration) WithType(value v1beta2.StatefulSetConditionType) *StatefulSetConditionApplyConfiguration {
    +func (b *StatefulSetConditionApplyConfiguration) WithType(value appsv1beta2.StatefulSetConditionType) *StatefulSetConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetordinals.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetordinals.go
    index c586da775ce0..a899243a5a49 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetordinals.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetordinals.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta2
     
    -// StatefulSetOrdinalsApplyConfiguration represents an declarative configuration of the StatefulSetOrdinals type for use
    +// StatefulSetOrdinalsApplyConfiguration represents a declarative configuration of the StatefulSetOrdinals type for use
     // with apply.
     type StatefulSetOrdinalsApplyConfiguration struct {
     	Start *int32 `json:"start,omitempty"`
     }
     
    -// StatefulSetOrdinalsApplyConfiguration constructs an declarative configuration of the StatefulSetOrdinals type for use with
    +// StatefulSetOrdinalsApplyConfiguration constructs a declarative configuration of the StatefulSetOrdinals type for use with
     // apply.
     func StatefulSetOrdinals() *StatefulSetOrdinalsApplyConfiguration {
     	return &StatefulSetOrdinalsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetpersistentvolumeclaimretentionpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetpersistentvolumeclaimretentionpolicy.go
    index aee27803d3b6..d4d139ae3d8f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetpersistentvolumeclaimretentionpolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetpersistentvolumeclaimretentionpolicy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     )
     
    -// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration represents an declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use
    +// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration represents a declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use
     // with apply.
     type StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration struct {
    -	WhenDeleted *v1beta2.PersistentVolumeClaimRetentionPolicyType `json:"whenDeleted,omitempty"`
    -	WhenScaled  *v1beta2.PersistentVolumeClaimRetentionPolicyType `json:"whenScaled,omitempty"`
    +	WhenDeleted *appsv1beta2.PersistentVolumeClaimRetentionPolicyType `json:"whenDeleted,omitempty"`
    +	WhenScaled  *appsv1beta2.PersistentVolumeClaimRetentionPolicyType `json:"whenScaled,omitempty"`
     }
     
    -// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration constructs an declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use with
    +// StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration constructs a declarative configuration of the StatefulSetPersistentVolumeClaimRetentionPolicy type for use with
     // apply.
     func StatefulSetPersistentVolumeClaimRetentionPolicy() *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
     	return &StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func StatefulSetPersistentVolumeClaimRetentionPolicy() *StatefulSetPersistentVol
     // WithWhenDeleted sets the WhenDeleted field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the WhenDeleted field is set to the value of the last call.
    -func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenDeleted(value v1beta2.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
    +func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenDeleted(value appsv1beta2.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
     	b.WhenDeleted = &value
     	return b
     }
    @@ -46,7 +46,7 @@ func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) With
     // WithWhenScaled sets the WhenScaled field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the WhenScaled field is set to the value of the last call.
    -func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenScaled(value v1beta2.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
    +func (b *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration) WithWhenScaled(value appsv1beta2.PersistentVolumeClaimRetentionPolicyType) *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration {
     	b.WhenScaled = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetspec.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetspec.go
    index b6165fbd9a27..952ca0a814c8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetspec.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// StatefulSetSpecApplyConfiguration represents an declarative configuration of the StatefulSetSpec type for use
    +// StatefulSetSpecApplyConfiguration represents a declarative configuration of the StatefulSetSpec type for use
     // with apply.
     type StatefulSetSpecApplyConfiguration struct {
     	Replicas                             *int32                                                             `json:"replicas,omitempty"`
    @@ -32,7 +32,7 @@ type StatefulSetSpecApplyConfiguration struct {
     	Template                             *corev1.PodTemplateSpecApplyConfiguration                          `json:"template,omitempty"`
     	VolumeClaimTemplates                 []corev1.PersistentVolumeClaimApplyConfiguration                   `json:"volumeClaimTemplates,omitempty"`
     	ServiceName                          *string                                                            `json:"serviceName,omitempty"`
    -	PodManagementPolicy                  *v1beta2.PodManagementPolicyType                                   `json:"podManagementPolicy,omitempty"`
    +	PodManagementPolicy                  *appsv1beta2.PodManagementPolicyType                               `json:"podManagementPolicy,omitempty"`
     	UpdateStrategy                       *StatefulSetUpdateStrategyApplyConfiguration                       `json:"updateStrategy,omitempty"`
     	RevisionHistoryLimit                 *int32                                                             `json:"revisionHistoryLimit,omitempty"`
     	MinReadySeconds                      *int32                                                             `json:"minReadySeconds,omitempty"`
    @@ -40,7 +40,7 @@ type StatefulSetSpecApplyConfiguration struct {
     	Ordinals                             *StatefulSetOrdinalsApplyConfiguration                             `json:"ordinals,omitempty"`
     }
     
    -// StatefulSetSpecApplyConfiguration constructs an declarative configuration of the StatefulSetSpec type for use with
    +// StatefulSetSpecApplyConfiguration constructs a declarative configuration of the StatefulSetSpec type for use with
     // apply.
     func StatefulSetSpec() *StatefulSetSpecApplyConfiguration {
     	return &StatefulSetSpecApplyConfiguration{}
    @@ -94,7 +94,7 @@ func (b *StatefulSetSpecApplyConfiguration) WithServiceName(value string) *State
     // WithPodManagementPolicy sets the PodManagementPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PodManagementPolicy field is set to the value of the last call.
    -func (b *StatefulSetSpecApplyConfiguration) WithPodManagementPolicy(value v1beta2.PodManagementPolicyType) *StatefulSetSpecApplyConfiguration {
    +func (b *StatefulSetSpecApplyConfiguration) WithPodManagementPolicy(value appsv1beta2.PodManagementPolicyType) *StatefulSetSpecApplyConfiguration {
     	b.PodManagementPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetstatus.go
    index 63835904c173..a647cd7d2659 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta2
     
    -// StatefulSetStatusApplyConfiguration represents an declarative configuration of the StatefulSetStatus type for use
    +// StatefulSetStatusApplyConfiguration represents a declarative configuration of the StatefulSetStatus type for use
     // with apply.
     type StatefulSetStatusApplyConfiguration struct {
     	ObservedGeneration *int64                                   `json:"observedGeneration,omitempty"`
    @@ -33,7 +33,7 @@ type StatefulSetStatusApplyConfiguration struct {
     	AvailableReplicas  *int32                                   `json:"availableReplicas,omitempty"`
     }
     
    -// StatefulSetStatusApplyConfiguration constructs an declarative configuration of the StatefulSetStatus type for use with
    +// StatefulSetStatusApplyConfiguration constructs a declarative configuration of the StatefulSetStatus type for use with
     // apply.
     func StatefulSetStatus() *StatefulSetStatusApplyConfiguration {
     	return &StatefulSetStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetupdatestrategy.go b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetupdatestrategy.go
    index 03c291491700..f93db4f7985d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetupdatestrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetupdatestrategy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     )
     
    -// StatefulSetUpdateStrategyApplyConfiguration represents an declarative configuration of the StatefulSetUpdateStrategy type for use
    +// StatefulSetUpdateStrategyApplyConfiguration represents a declarative configuration of the StatefulSetUpdateStrategy type for use
     // with apply.
     type StatefulSetUpdateStrategyApplyConfiguration struct {
    -	Type          *v1beta2.StatefulSetUpdateStrategyType              `json:"type,omitempty"`
    +	Type          *appsv1beta2.StatefulSetUpdateStrategyType          `json:"type,omitempty"`
     	RollingUpdate *RollingUpdateStatefulSetStrategyApplyConfiguration `json:"rollingUpdate,omitempty"`
     }
     
    -// StatefulSetUpdateStrategyApplyConfiguration constructs an declarative configuration of the StatefulSetUpdateStrategy type for use with
    +// StatefulSetUpdateStrategyApplyConfiguration constructs a declarative configuration of the StatefulSetUpdateStrategy type for use with
     // apply.
     func StatefulSetUpdateStrategy() *StatefulSetUpdateStrategyApplyConfiguration {
     	return &StatefulSetUpdateStrategyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func StatefulSetUpdateStrategy() *StatefulSetUpdateStrategyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *StatefulSetUpdateStrategyApplyConfiguration) WithType(value v1beta2.StatefulSetUpdateStrategyType) *StatefulSetUpdateStrategyApplyConfiguration {
    +func (b *StatefulSetUpdateStrategyApplyConfiguration) WithType(value appsv1beta2.StatefulSetUpdateStrategyType) *StatefulSetUpdateStrategyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/crossversionobjectreference.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/crossversionobjectreference.go
    index 0eac22692cd7..51ec66501266 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/crossversionobjectreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/crossversionobjectreference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CrossVersionObjectReferenceApplyConfiguration represents an declarative configuration of the CrossVersionObjectReference type for use
    +// CrossVersionObjectReferenceApplyConfiguration represents a declarative configuration of the CrossVersionObjectReference type for use
     // with apply.
     type CrossVersionObjectReferenceApplyConfiguration struct {
     	Kind       *string `json:"kind,omitempty"`
    @@ -26,7 +26,7 @@ type CrossVersionObjectReferenceApplyConfiguration struct {
     	APIVersion *string `json:"apiVersion,omitempty"`
     }
     
    -// CrossVersionObjectReferenceApplyConfiguration constructs an declarative configuration of the CrossVersionObjectReference type for use with
    +// CrossVersionObjectReferenceApplyConfiguration constructs a declarative configuration of the CrossVersionObjectReference type for use with
     // apply.
     func CrossVersionObjectReference() *CrossVersionObjectReferenceApplyConfiguration {
     	return &CrossVersionObjectReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscaler.go
    index 38fa2058412b..8c9f08a7399e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscaler.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apiautoscalingv1 "k8s.io/api/autoscaling/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	autoscalingv1 "k8s.io/api/autoscaling/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// HorizontalPodAutoscalerApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscaler type for use
    +// HorizontalPodAutoscalerApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscaler type for use
     // with apply.
     type HorizontalPodAutoscalerApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *HorizontalPodAutoscalerSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *HorizontalPodAutoscalerStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *HorizontalPodAutoscalerSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *HorizontalPodAutoscalerStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// HorizontalPodAutoscaler constructs an declarative configuration of the HorizontalPodAutoscaler type for use with
    +// HorizontalPodAutoscaler constructs a declarative configuration of the HorizontalPodAutoscaler type for use with
     // apply.
     func HorizontalPodAutoscaler(name, namespace string) *HorizontalPodAutoscalerApplyConfiguration {
     	b := &HorizontalPodAutoscalerApplyConfiguration{}
    @@ -58,18 +58,18 @@ func HorizontalPodAutoscaler(name, namespace string) *HorizontalPodAutoscalerApp
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractHorizontalPodAutoscaler(horizontalPodAutoscaler *apiautoscalingv1.HorizontalPodAutoscaler, fieldManager string) (*HorizontalPodAutoscalerApplyConfiguration, error) {
    +func ExtractHorizontalPodAutoscaler(horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler, fieldManager string) (*HorizontalPodAutoscalerApplyConfiguration, error) {
     	return extractHorizontalPodAutoscaler(horizontalPodAutoscaler, fieldManager, "")
     }
     
     // ExtractHorizontalPodAutoscalerStatus is the same as ExtractHorizontalPodAutoscaler except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractHorizontalPodAutoscalerStatus(horizontalPodAutoscaler *apiautoscalingv1.HorizontalPodAutoscaler, fieldManager string) (*HorizontalPodAutoscalerApplyConfiguration, error) {
    +func ExtractHorizontalPodAutoscalerStatus(horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler, fieldManager string) (*HorizontalPodAutoscalerApplyConfiguration, error) {
     	return extractHorizontalPodAutoscaler(horizontalPodAutoscaler, fieldManager, "status")
     }
     
    -func extractHorizontalPodAutoscaler(horizontalPodAutoscaler *apiautoscalingv1.HorizontalPodAutoscaler, fieldManager string, subresource string) (*HorizontalPodAutoscalerApplyConfiguration, error) {
    +func extractHorizontalPodAutoscaler(horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler, fieldManager string, subresource string) (*HorizontalPodAutoscalerApplyConfiguration, error) {
     	b := &HorizontalPodAutoscalerApplyConfiguration{}
     	err := managedfields.ExtractInto(horizontalPodAutoscaler, internal.Parser().Type("io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractHorizontalPodAutoscaler(horizontalPodAutoscaler *apiautoscalingv1.Ho
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithKind(value string) *HorizontalPodAutoscalerApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithKind(value string) *Hori
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithAPIVersion(value string) *HorizontalPodAutoscalerApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithAPIVersion(value string)
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithName(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithName(value string) *Hori
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithGenerateName(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithGenerateName(value strin
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithNamespace(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithNamespace(value string)
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithUID(value types.UID) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithUID(value types.UID) *Ho
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithResourceVersion(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithResourceVersion(value st
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithGeneration(value int64) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *HorizontalPodAutoscalerApplyConfiguration) WithCreationTimestamp(value metav1.Time) *HorizontalPodAutoscalerApplyConfiguration {
    +func (b *HorizontalPodAutoscalerApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *HorizontalPodAutoscalerApplyConfiguration {
    +func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionTimestamp(value
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionGracePeriodSecon
     // overwriting an existing map entries in Labels field with the same key.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithLabels(entries map[string]string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithLabels(entries map[strin
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithAnnotations(entries map[string]string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithAnnotations(entries map[
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *HorizontalPodAutoscalerApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *HorizontalPodAutoscalerApplyConfiguration {
    +func (b *HorizontalPodAutoscalerApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithOwnerReferences(values .
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithFinalizers(values ...string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *HorizontalPodAutoscalerApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithStatus(value *Horizontal
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *HorizontalPodAutoscalerApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscalerspec.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscalerspec.go
    index 561ac60d35d8..0ca2f84ea915 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscalerspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscalerspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// HorizontalPodAutoscalerSpecApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerSpec type for use
    +// HorizontalPodAutoscalerSpecApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerSpec type for use
     // with apply.
     type HorizontalPodAutoscalerSpecApplyConfiguration struct {
     	ScaleTargetRef                 *CrossVersionObjectReferenceApplyConfiguration `json:"scaleTargetRef,omitempty"`
    @@ -27,7 +27,7 @@ type HorizontalPodAutoscalerSpecApplyConfiguration struct {
     	TargetCPUUtilizationPercentage *int32                                         `json:"targetCPUUtilizationPercentage,omitempty"`
     }
     
    -// HorizontalPodAutoscalerSpecApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerSpec type for use with
    +// HorizontalPodAutoscalerSpecApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerSpec type for use with
     // apply.
     func HorizontalPodAutoscalerSpec() *HorizontalPodAutoscalerSpecApplyConfiguration {
     	return &HorizontalPodAutoscalerSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscalerstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscalerstatus.go
    index abc2e05aa727..8575214e1e9a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscalerstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscalerstatus.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// HorizontalPodAutoscalerStatusApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerStatus type for use
    +// HorizontalPodAutoscalerStatusApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerStatus type for use
     // with apply.
     type HorizontalPodAutoscalerStatusApplyConfiguration struct {
    -	ObservedGeneration              *int64   `json:"observedGeneration,omitempty"`
    -	LastScaleTime                   *v1.Time `json:"lastScaleTime,omitempty"`
    -	CurrentReplicas                 *int32   `json:"currentReplicas,omitempty"`
    -	DesiredReplicas                 *int32   `json:"desiredReplicas,omitempty"`
    -	CurrentCPUUtilizationPercentage *int32   `json:"currentCPUUtilizationPercentage,omitempty"`
    +	ObservedGeneration              *int64       `json:"observedGeneration,omitempty"`
    +	LastScaleTime                   *metav1.Time `json:"lastScaleTime,omitempty"`
    +	CurrentReplicas                 *int32       `json:"currentReplicas,omitempty"`
    +	DesiredReplicas                 *int32       `json:"desiredReplicas,omitempty"`
    +	CurrentCPUUtilizationPercentage *int32       `json:"currentCPUUtilizationPercentage,omitempty"`
     }
     
    -// HorizontalPodAutoscalerStatusApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerStatus type for use with
    +// HorizontalPodAutoscalerStatusApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerStatus type for use with
     // apply.
     func HorizontalPodAutoscalerStatus() *HorizontalPodAutoscalerStatusApplyConfiguration {
     	return &HorizontalPodAutoscalerStatusApplyConfiguration{}
    @@ -49,7 +49,7 @@ func (b *HorizontalPodAutoscalerStatusApplyConfiguration) WithObservedGeneration
     // WithLastScaleTime sets the LastScaleTime field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the LastScaleTime field is set to the value of the last call.
    -func (b *HorizontalPodAutoscalerStatusApplyConfiguration) WithLastScaleTime(value v1.Time) *HorizontalPodAutoscalerStatusApplyConfiguration {
    +func (b *HorizontalPodAutoscalerStatusApplyConfiguration) WithLastScaleTime(value metav1.Time) *HorizontalPodAutoscalerStatusApplyConfiguration {
     	b.LastScaleTime = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scale.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scale.go
    index f770922803c6..13ae8e142d64 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scale.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scale.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ScaleApplyConfiguration represents an declarative configuration of the Scale type for use
    +// ScaleApplyConfiguration represents a declarative configuration of the Scale type for use
     // with apply.
     type ScaleApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *ScaleSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *ScaleStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *ScaleSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *ScaleStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// ScaleApplyConfiguration constructs an declarative configuration of the Scale type for use with
    +// ScaleApplyConfiguration constructs a declarative configuration of the Scale type for use with
     // apply.
     func Scale() *ScaleApplyConfiguration {
     	b := &ScaleApplyConfiguration{}
    @@ -46,7 +46,7 @@ func Scale() *ScaleApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithKind(value string) *ScaleApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -54,7 +54,7 @@ func (b *ScaleApplyConfiguration) WithKind(value string) *ScaleApplyConfiguratio
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithAPIVersion(value string) *ScaleApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -63,7 +63,7 @@ func (b *ScaleApplyConfiguration) WithAPIVersion(value string) *ScaleApplyConfig
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithName(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -72,7 +72,7 @@ func (b *ScaleApplyConfiguration) WithName(value string) *ScaleApplyConfiguratio
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithGenerateName(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -81,7 +81,7 @@ func (b *ScaleApplyConfiguration) WithGenerateName(value string) *ScaleApplyConf
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithNamespace(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -90,7 +90,7 @@ func (b *ScaleApplyConfiguration) WithNamespace(value string) *ScaleApplyConfigu
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithUID(value types.UID) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -99,7 +99,7 @@ func (b *ScaleApplyConfiguration) WithUID(value types.UID) *ScaleApplyConfigurat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithResourceVersion(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -108,25 +108,25 @@ func (b *ScaleApplyConfiguration) WithResourceVersion(value string) *ScaleApplyC
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithGeneration(value int64) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ScaleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ScaleApplyConfiguration {
    +func (b *ScaleApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ScaleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ScaleApplyConfiguration {
    +func (b *ScaleApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -135,7 +135,7 @@ func (b *ScaleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Scal
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -145,11 +145,11 @@ func (b *ScaleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *S
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ScaleApplyConfiguration) WithLabels(entries map[string]string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -160,11 +160,11 @@ func (b *ScaleApplyConfiguration) WithLabels(entries map[string]string) *ScaleAp
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ScaleApplyConfiguration) WithAnnotations(entries map[string]string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -172,13 +172,13 @@ func (b *ScaleApplyConfiguration) WithAnnotations(entries map[string]string) *Sc
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ScaleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ScaleApplyConfiguration {
    +func (b *ScaleApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -189,14 +189,14 @@ func (b *ScaleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     func (b *ScaleApplyConfiguration) WithFinalizers(values ...string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ScaleApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -215,3 +215,9 @@ func (b *ScaleApplyConfiguration) WithStatus(value *ScaleStatusApplyConfiguratio
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ScaleApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scalespec.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scalespec.go
    index 2339a8fef2f6..025004ba5fed 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scalespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scalespec.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// ScaleSpecApplyConfiguration represents an declarative configuration of the ScaleSpec type for use
    +// ScaleSpecApplyConfiguration represents a declarative configuration of the ScaleSpec type for use
     // with apply.
     type ScaleSpecApplyConfiguration struct {
     	Replicas *int32 `json:"replicas,omitempty"`
     }
     
    -// ScaleSpecApplyConfiguration constructs an declarative configuration of the ScaleSpec type for use with
    +// ScaleSpecApplyConfiguration constructs a declarative configuration of the ScaleSpec type for use with
     // apply.
     func ScaleSpec() *ScaleSpecApplyConfiguration {
     	return &ScaleSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scalestatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scalestatus.go
    index 81c8d1b30a10..51f96d2357b2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scalestatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scalestatus.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ScaleStatusApplyConfiguration represents an declarative configuration of the ScaleStatus type for use
    +// ScaleStatusApplyConfiguration represents a declarative configuration of the ScaleStatus type for use
     // with apply.
     type ScaleStatusApplyConfiguration struct {
     	Replicas *int32  `json:"replicas,omitempty"`
     	Selector *string `json:"selector,omitempty"`
     }
     
    -// ScaleStatusApplyConfiguration constructs an declarative configuration of the ScaleStatus type for use with
    +// ScaleStatusApplyConfiguration constructs a declarative configuration of the ScaleStatus type for use with
     // apply.
     func ScaleStatus() *ScaleStatusApplyConfiguration {
     	return &ScaleStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/containerresourcemetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/containerresourcemetricsource.go
    index 15ef216d1bc9..b6e071e8486e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/containerresourcemetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/containerresourcemetricsource.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// ContainerResourceMetricSourceApplyConfiguration represents an declarative configuration of the ContainerResourceMetricSource type for use
    +// ContainerResourceMetricSourceApplyConfiguration represents a declarative configuration of the ContainerResourceMetricSource type for use
     // with apply.
     type ContainerResourceMetricSourceApplyConfiguration struct {
     	Name      *v1.ResourceName                `json:"name,omitempty"`
    @@ -30,7 +30,7 @@ type ContainerResourceMetricSourceApplyConfiguration struct {
     	Container *string                         `json:"container,omitempty"`
     }
     
    -// ContainerResourceMetricSourceApplyConfiguration constructs an declarative configuration of the ContainerResourceMetricSource type for use with
    +// ContainerResourceMetricSourceApplyConfiguration constructs a declarative configuration of the ContainerResourceMetricSource type for use with
     // apply.
     func ContainerResourceMetricSource() *ContainerResourceMetricSourceApplyConfiguration {
     	return &ContainerResourceMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/containerresourcemetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/containerresourcemetricstatus.go
    index 34213bca3f4c..46bd2bac2002 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/containerresourcemetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/containerresourcemetricstatus.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// ContainerResourceMetricStatusApplyConfiguration represents an declarative configuration of the ContainerResourceMetricStatus type for use
    +// ContainerResourceMetricStatusApplyConfiguration represents a declarative configuration of the ContainerResourceMetricStatus type for use
     // with apply.
     type ContainerResourceMetricStatusApplyConfiguration struct {
     	Name      *v1.ResourceName                     `json:"name,omitempty"`
    @@ -30,7 +30,7 @@ type ContainerResourceMetricStatusApplyConfiguration struct {
     	Container *string                              `json:"container,omitempty"`
     }
     
    -// ContainerResourceMetricStatusApplyConfiguration constructs an declarative configuration of the ContainerResourceMetricStatus type for use with
    +// ContainerResourceMetricStatusApplyConfiguration constructs a declarative configuration of the ContainerResourceMetricStatus type for use with
     // apply.
     func ContainerResourceMetricStatus() *ContainerResourceMetricStatusApplyConfiguration {
     	return &ContainerResourceMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/crossversionobjectreference.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/crossversionobjectreference.go
    index 19045706dc8c..645f098577e7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/crossversionobjectreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/crossversionobjectreference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v2
     
    -// CrossVersionObjectReferenceApplyConfiguration represents an declarative configuration of the CrossVersionObjectReference type for use
    +// CrossVersionObjectReferenceApplyConfiguration represents a declarative configuration of the CrossVersionObjectReference type for use
     // with apply.
     type CrossVersionObjectReferenceApplyConfiguration struct {
     	Kind       *string `json:"kind,omitempty"`
    @@ -26,7 +26,7 @@ type CrossVersionObjectReferenceApplyConfiguration struct {
     	APIVersion *string `json:"apiVersion,omitempty"`
     }
     
    -// CrossVersionObjectReferenceApplyConfiguration constructs an declarative configuration of the CrossVersionObjectReference type for use with
    +// CrossVersionObjectReferenceApplyConfiguration constructs a declarative configuration of the CrossVersionObjectReference type for use with
     // apply.
     func CrossVersionObjectReference() *CrossVersionObjectReferenceApplyConfiguration {
     	return &CrossVersionObjectReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/externalmetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/externalmetricsource.go
    index 11a8eff263d5..a9c45b31a043 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/externalmetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/externalmetricsource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v2
     
    -// ExternalMetricSourceApplyConfiguration represents an declarative configuration of the ExternalMetricSource type for use
    +// ExternalMetricSourceApplyConfiguration represents a declarative configuration of the ExternalMetricSource type for use
     // with apply.
     type ExternalMetricSourceApplyConfiguration struct {
     	Metric *MetricIdentifierApplyConfiguration `json:"metric,omitempty"`
     	Target *MetricTargetApplyConfiguration     `json:"target,omitempty"`
     }
     
    -// ExternalMetricSourceApplyConfiguration constructs an declarative configuration of the ExternalMetricSource type for use with
    +// ExternalMetricSourceApplyConfiguration constructs a declarative configuration of the ExternalMetricSource type for use with
     // apply.
     func ExternalMetricSource() *ExternalMetricSourceApplyConfiguration {
     	return &ExternalMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/externalmetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/externalmetricstatus.go
    index 3b1a0329b81a..4280086f5e74 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/externalmetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/externalmetricstatus.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v2
     
    -// ExternalMetricStatusApplyConfiguration represents an declarative configuration of the ExternalMetricStatus type for use
    +// ExternalMetricStatusApplyConfiguration represents a declarative configuration of the ExternalMetricStatus type for use
     // with apply.
     type ExternalMetricStatusApplyConfiguration struct {
     	Metric  *MetricIdentifierApplyConfiguration  `json:"metric,omitempty"`
     	Current *MetricValueStatusApplyConfiguration `json:"current,omitempty"`
     }
     
    -// ExternalMetricStatusApplyConfiguration constructs an declarative configuration of the ExternalMetricStatus type for use with
    +// ExternalMetricStatusApplyConfiguration constructs a declarative configuration of the ExternalMetricStatus type for use with
     // apply.
     func ExternalMetricStatus() *ExternalMetricStatusApplyConfiguration {
     	return &ExternalMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscaler.go
    index 31061de85ef1..99a5cd4bd316 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscaler.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// HorizontalPodAutoscalerApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscaler type for use
    +// HorizontalPodAutoscalerApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscaler type for use
     // with apply.
     type HorizontalPodAutoscalerApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type HorizontalPodAutoscalerApplyConfiguration struct {
     	Status                           *HorizontalPodAutoscalerStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// HorizontalPodAutoscaler constructs an declarative configuration of the HorizontalPodAutoscaler type for use with
    +// HorizontalPodAutoscaler constructs a declarative configuration of the HorizontalPodAutoscaler type for use with
     // apply.
     func HorizontalPodAutoscaler(name, namespace string) *HorizontalPodAutoscalerApplyConfiguration {
     	b := &HorizontalPodAutoscalerApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractHorizontalPodAutoscaler(horizontalPodAutoscaler *autoscalingv2.Horiz
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithKind(value string) *HorizontalPodAutoscalerApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithKind(value string) *Hori
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithAPIVersion(value string) *HorizontalPodAutoscalerApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithAPIVersion(value string)
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithName(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithName(value string) *Hori
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithGenerateName(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithGenerateName(value strin
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithNamespace(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithNamespace(value string)
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithUID(value types.UID) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithUID(value types.UID) *Ho
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithResourceVersion(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithResourceVersion(value st
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithGeneration(value int64) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithGeneration(value int64)
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithCreationTimestamp(value metav1.Time) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithCreationTimestamp(value
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionTimestamp(value
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionGracePeriodSecon
     // overwriting an existing map entries in Labels field with the same key.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithLabels(entries map[string]string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithLabels(entries map[strin
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithAnnotations(entries map[string]string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithOwnerReferences(values .
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithOwnerReferences(values .
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithFinalizers(values ...string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithStatus(value *Horizontal
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *HorizontalPodAutoscalerApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerbehavior.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerbehavior.go
    index e6fdabd7c88b..05750cc21dae 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerbehavior.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerbehavior.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v2
     
    -// HorizontalPodAutoscalerBehaviorApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerBehavior type for use
    +// HorizontalPodAutoscalerBehaviorApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerBehavior type for use
     // with apply.
     type HorizontalPodAutoscalerBehaviorApplyConfiguration struct {
     	ScaleUp   *HPAScalingRulesApplyConfiguration `json:"scaleUp,omitempty"`
     	ScaleDown *HPAScalingRulesApplyConfiguration `json:"scaleDown,omitempty"`
     }
     
    -// HorizontalPodAutoscalerBehaviorApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerBehavior type for use with
    +// HorizontalPodAutoscalerBehaviorApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerBehavior type for use with
     // apply.
     func HorizontalPodAutoscalerBehavior() *HorizontalPodAutoscalerBehaviorApplyConfiguration {
     	return &HorizontalPodAutoscalerBehaviorApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalercondition.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalercondition.go
    index c020eccd3d6d..25ea39039a1b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalercondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalercondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v2
     
     import (
    -	v2 "k8s.io/api/autoscaling/v2"
    +	autoscalingv2 "k8s.io/api/autoscaling/v2"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// HorizontalPodAutoscalerConditionApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerCondition type for use
    +// HorizontalPodAutoscalerConditionApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerCondition type for use
     // with apply.
     type HorizontalPodAutoscalerConditionApplyConfiguration struct {
    -	Type               *v2.HorizontalPodAutoscalerConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus                      `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                             `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                  `json:"reason,omitempty"`
    -	Message            *string                                  `json:"message,omitempty"`
    +	Type               *autoscalingv2.HorizontalPodAutoscalerConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                                 `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                                        `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                             `json:"reason,omitempty"`
    +	Message            *string                                             `json:"message,omitempty"`
     }
     
    -// HorizontalPodAutoscalerConditionApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerCondition type for use with
    +// HorizontalPodAutoscalerConditionApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerCondition type for use with
     // apply.
     func HorizontalPodAutoscalerCondition() *HorizontalPodAutoscalerConditionApplyConfiguration {
     	return &HorizontalPodAutoscalerConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func HorizontalPodAutoscalerCondition() *HorizontalPodAutoscalerConditionApplyCo
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *HorizontalPodAutoscalerConditionApplyConfiguration) WithType(value v2.HorizontalPodAutoscalerConditionType) *HorizontalPodAutoscalerConditionApplyConfiguration {
    +func (b *HorizontalPodAutoscalerConditionApplyConfiguration) WithType(value autoscalingv2.HorizontalPodAutoscalerConditionType) *HorizontalPodAutoscalerConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerspec.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerspec.go
    index c36bc3f225c2..e34ababc5835 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v2
     
    -// HorizontalPodAutoscalerSpecApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerSpec type for use
    +// HorizontalPodAutoscalerSpecApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerSpec type for use
     // with apply.
     type HorizontalPodAutoscalerSpecApplyConfiguration struct {
     	ScaleTargetRef *CrossVersionObjectReferenceApplyConfiguration     `json:"scaleTargetRef,omitempty"`
    @@ -28,7 +28,7 @@ type HorizontalPodAutoscalerSpecApplyConfiguration struct {
     	Behavior       *HorizontalPodAutoscalerBehaviorApplyConfiguration `json:"behavior,omitempty"`
     }
     
    -// HorizontalPodAutoscalerSpecApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerSpec type for use with
    +// HorizontalPodAutoscalerSpecApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerSpec type for use with
     // apply.
     func HorizontalPodAutoscalerSpec() *HorizontalPodAutoscalerSpecApplyConfiguration {
     	return &HorizontalPodAutoscalerSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerstatus.go
    index d4d551df8561..f1a2c3f4e931 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerstatus.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// HorizontalPodAutoscalerStatusApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerStatus type for use
    +// HorizontalPodAutoscalerStatusApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerStatus type for use
     // with apply.
     type HorizontalPodAutoscalerStatusApplyConfiguration struct {
     	ObservedGeneration *int64                                               `json:"observedGeneration,omitempty"`
    @@ -33,7 +33,7 @@ type HorizontalPodAutoscalerStatusApplyConfiguration struct {
     	Conditions         []HorizontalPodAutoscalerConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// HorizontalPodAutoscalerStatusApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerStatus type for use with
    +// HorizontalPodAutoscalerStatusApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerStatus type for use with
     // apply.
     func HorizontalPodAutoscalerStatus() *HorizontalPodAutoscalerStatusApplyConfiguration {
     	return &HorizontalPodAutoscalerStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/hpascalingpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/hpascalingpolicy.go
    index 139f0fb5c75d..f89185c575c6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/hpascalingpolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/hpascalingpolicy.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v2
     
     import (
    -	v2 "k8s.io/api/autoscaling/v2"
    +	autoscalingv2 "k8s.io/api/autoscaling/v2"
     )
     
    -// HPAScalingPolicyApplyConfiguration represents an declarative configuration of the HPAScalingPolicy type for use
    +// HPAScalingPolicyApplyConfiguration represents a declarative configuration of the HPAScalingPolicy type for use
     // with apply.
     type HPAScalingPolicyApplyConfiguration struct {
    -	Type          *v2.HPAScalingPolicyType `json:"type,omitempty"`
    -	Value         *int32                   `json:"value,omitempty"`
    -	PeriodSeconds *int32                   `json:"periodSeconds,omitempty"`
    +	Type          *autoscalingv2.HPAScalingPolicyType `json:"type,omitempty"`
    +	Value         *int32                              `json:"value,omitempty"`
    +	PeriodSeconds *int32                              `json:"periodSeconds,omitempty"`
     }
     
    -// HPAScalingPolicyApplyConfiguration constructs an declarative configuration of the HPAScalingPolicy type for use with
    +// HPAScalingPolicyApplyConfiguration constructs a declarative configuration of the HPAScalingPolicy type for use with
     // apply.
     func HPAScalingPolicy() *HPAScalingPolicyApplyConfiguration {
     	return &HPAScalingPolicyApplyConfiguration{}
    @@ -39,7 +39,7 @@ func HPAScalingPolicy() *HPAScalingPolicyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *HPAScalingPolicyApplyConfiguration) WithType(value v2.HPAScalingPolicyType) *HPAScalingPolicyApplyConfiguration {
    +func (b *HPAScalingPolicyApplyConfiguration) WithType(value autoscalingv2.HPAScalingPolicyType) *HPAScalingPolicyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/hpascalingrules.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/hpascalingrules.go
    index e768076aa4a0..6a6a2655f5e3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/hpascalingrules.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/hpascalingrules.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v2
     
     import (
    -	v2 "k8s.io/api/autoscaling/v2"
    +	autoscalingv2 "k8s.io/api/autoscaling/v2"
     )
     
    -// HPAScalingRulesApplyConfiguration represents an declarative configuration of the HPAScalingRules type for use
    +// HPAScalingRulesApplyConfiguration represents a declarative configuration of the HPAScalingRules type for use
     // with apply.
     type HPAScalingRulesApplyConfiguration struct {
     	StabilizationWindowSeconds *int32                               `json:"stabilizationWindowSeconds,omitempty"`
    -	SelectPolicy               *v2.ScalingPolicySelect              `json:"selectPolicy,omitempty"`
    +	SelectPolicy               *autoscalingv2.ScalingPolicySelect   `json:"selectPolicy,omitempty"`
     	Policies                   []HPAScalingPolicyApplyConfiguration `json:"policies,omitempty"`
     }
     
    -// HPAScalingRulesApplyConfiguration constructs an declarative configuration of the HPAScalingRules type for use with
    +// HPAScalingRulesApplyConfiguration constructs a declarative configuration of the HPAScalingRules type for use with
     // apply.
     func HPAScalingRules() *HPAScalingRulesApplyConfiguration {
     	return &HPAScalingRulesApplyConfiguration{}
    @@ -47,7 +47,7 @@ func (b *HPAScalingRulesApplyConfiguration) WithStabilizationWindowSeconds(value
     // WithSelectPolicy sets the SelectPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the SelectPolicy field is set to the value of the last call.
    -func (b *HPAScalingRulesApplyConfiguration) WithSelectPolicy(value v2.ScalingPolicySelect) *HPAScalingRulesApplyConfiguration {
    +func (b *HPAScalingRulesApplyConfiguration) WithSelectPolicy(value autoscalingv2.ScalingPolicySelect) *HPAScalingRulesApplyConfiguration {
     	b.SelectPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricidentifier.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricidentifier.go
    index 312ad3ddd6a2..2f99f7d0b496 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricidentifier.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricidentifier.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// MetricIdentifierApplyConfiguration represents an declarative configuration of the MetricIdentifier type for use
    +// MetricIdentifierApplyConfiguration represents a declarative configuration of the MetricIdentifier type for use
     // with apply.
     type MetricIdentifierApplyConfiguration struct {
     	Name     *string                             `json:"name,omitempty"`
     	Selector *v1.LabelSelectorApplyConfiguration `json:"selector,omitempty"`
     }
     
    -// MetricIdentifierApplyConfiguration constructs an declarative configuration of the MetricIdentifier type for use with
    +// MetricIdentifierApplyConfiguration constructs a declarative configuration of the MetricIdentifier type for use with
     // apply.
     func MetricIdentifier() *MetricIdentifierApplyConfiguration {
     	return &MetricIdentifierApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricspec.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricspec.go
    index 094ead6c16d6..282b84a44f8b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricspec.go
    @@ -19,13 +19,13 @@ limitations under the License.
     package v2
     
     import (
    -	v2 "k8s.io/api/autoscaling/v2"
    +	autoscalingv2 "k8s.io/api/autoscaling/v2"
     )
     
    -// MetricSpecApplyConfiguration represents an declarative configuration of the MetricSpec type for use
    +// MetricSpecApplyConfiguration represents a declarative configuration of the MetricSpec type for use
     // with apply.
     type MetricSpecApplyConfiguration struct {
    -	Type              *v2.MetricSourceType                             `json:"type,omitempty"`
    +	Type              *autoscalingv2.MetricSourceType                  `json:"type,omitempty"`
     	Object            *ObjectMetricSourceApplyConfiguration            `json:"object,omitempty"`
     	Pods              *PodsMetricSourceApplyConfiguration              `json:"pods,omitempty"`
     	Resource          *ResourceMetricSourceApplyConfiguration          `json:"resource,omitempty"`
    @@ -33,7 +33,7 @@ type MetricSpecApplyConfiguration struct {
     	External          *ExternalMetricSourceApplyConfiguration          `json:"external,omitempty"`
     }
     
    -// MetricSpecApplyConfiguration constructs an declarative configuration of the MetricSpec type for use with
    +// MetricSpecApplyConfiguration constructs a declarative configuration of the MetricSpec type for use with
     // apply.
     func MetricSpec() *MetricSpecApplyConfiguration {
     	return &MetricSpecApplyConfiguration{}
    @@ -42,7 +42,7 @@ func MetricSpec() *MetricSpecApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *MetricSpecApplyConfiguration) WithType(value v2.MetricSourceType) *MetricSpecApplyConfiguration {
    +func (b *MetricSpecApplyConfiguration) WithType(value autoscalingv2.MetricSourceType) *MetricSpecApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricstatus.go
    index c65ad446f0f3..f1204824e55b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricstatus.go
    @@ -19,13 +19,13 @@ limitations under the License.
     package v2
     
     import (
    -	v2 "k8s.io/api/autoscaling/v2"
    +	autoscalingv2 "k8s.io/api/autoscaling/v2"
     )
     
    -// MetricStatusApplyConfiguration represents an declarative configuration of the MetricStatus type for use
    +// MetricStatusApplyConfiguration represents a declarative configuration of the MetricStatus type for use
     // with apply.
     type MetricStatusApplyConfiguration struct {
    -	Type              *v2.MetricSourceType                             `json:"type,omitempty"`
    +	Type              *autoscalingv2.MetricSourceType                  `json:"type,omitempty"`
     	Object            *ObjectMetricStatusApplyConfiguration            `json:"object,omitempty"`
     	Pods              *PodsMetricStatusApplyConfiguration              `json:"pods,omitempty"`
     	Resource          *ResourceMetricStatusApplyConfiguration          `json:"resource,omitempty"`
    @@ -33,7 +33,7 @@ type MetricStatusApplyConfiguration struct {
     	External          *ExternalMetricStatusApplyConfiguration          `json:"external,omitempty"`
     }
     
    -// MetricStatusApplyConfiguration constructs an declarative configuration of the MetricStatus type for use with
    +// MetricStatusApplyConfiguration constructs a declarative configuration of the MetricStatus type for use with
     // apply.
     func MetricStatus() *MetricStatusApplyConfiguration {
     	return &MetricStatusApplyConfiguration{}
    @@ -42,7 +42,7 @@ func MetricStatus() *MetricStatusApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *MetricStatusApplyConfiguration) WithType(value v2.MetricSourceType) *MetricStatusApplyConfiguration {
    +func (b *MetricStatusApplyConfiguration) WithType(value autoscalingv2.MetricSourceType) *MetricStatusApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metrictarget.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metrictarget.go
    index f301e4d2be25..13d2e9365dd6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metrictarget.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metrictarget.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v2
     
     import (
    -	v2 "k8s.io/api/autoscaling/v2"
    +	autoscalingv2 "k8s.io/api/autoscaling/v2"
     	resource "k8s.io/apimachinery/pkg/api/resource"
     )
     
    -// MetricTargetApplyConfiguration represents an declarative configuration of the MetricTarget type for use
    +// MetricTargetApplyConfiguration represents a declarative configuration of the MetricTarget type for use
     // with apply.
     type MetricTargetApplyConfiguration struct {
    -	Type               *v2.MetricTargetType `json:"type,omitempty"`
    -	Value              *resource.Quantity   `json:"value,omitempty"`
    -	AverageValue       *resource.Quantity   `json:"averageValue,omitempty"`
    -	AverageUtilization *int32               `json:"averageUtilization,omitempty"`
    +	Type               *autoscalingv2.MetricTargetType `json:"type,omitempty"`
    +	Value              *resource.Quantity              `json:"value,omitempty"`
    +	AverageValue       *resource.Quantity              `json:"averageValue,omitempty"`
    +	AverageUtilization *int32                          `json:"averageUtilization,omitempty"`
     }
     
    -// MetricTargetApplyConfiguration constructs an declarative configuration of the MetricTarget type for use with
    +// MetricTargetApplyConfiguration constructs a declarative configuration of the MetricTarget type for use with
     // apply.
     func MetricTarget() *MetricTargetApplyConfiguration {
     	return &MetricTargetApplyConfiguration{}
    @@ -41,7 +41,7 @@ func MetricTarget() *MetricTargetApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *MetricTargetApplyConfiguration) WithType(value v2.MetricTargetType) *MetricTargetApplyConfiguration {
    +func (b *MetricTargetApplyConfiguration) WithType(value autoscalingv2.MetricTargetType) *MetricTargetApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricvaluestatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricvaluestatus.go
    index e8474b18905e..59732548b8f7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricvaluestatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricvaluestatus.go
    @@ -22,7 +22,7 @@ import (
     	resource "k8s.io/apimachinery/pkg/api/resource"
     )
     
    -// MetricValueStatusApplyConfiguration represents an declarative configuration of the MetricValueStatus type for use
    +// MetricValueStatusApplyConfiguration represents a declarative configuration of the MetricValueStatus type for use
     // with apply.
     type MetricValueStatusApplyConfiguration struct {
     	Value              *resource.Quantity `json:"value,omitempty"`
    @@ -30,7 +30,7 @@ type MetricValueStatusApplyConfiguration struct {
     	AverageUtilization *int32             `json:"averageUtilization,omitempty"`
     }
     
    -// MetricValueStatusApplyConfiguration constructs an declarative configuration of the MetricValueStatus type for use with
    +// MetricValueStatusApplyConfiguration constructs a declarative configuration of the MetricValueStatus type for use with
     // apply.
     func MetricValueStatus() *MetricValueStatusApplyConfiguration {
     	return &MetricValueStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/objectmetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/objectmetricsource.go
    index a9482565e069..2391fa5c22c3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/objectmetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/objectmetricsource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v2
     
    -// ObjectMetricSourceApplyConfiguration represents an declarative configuration of the ObjectMetricSource type for use
    +// ObjectMetricSourceApplyConfiguration represents a declarative configuration of the ObjectMetricSource type for use
     // with apply.
     type ObjectMetricSourceApplyConfiguration struct {
     	DescribedObject *CrossVersionObjectReferenceApplyConfiguration `json:"describedObject,omitempty"`
    @@ -26,7 +26,7 @@ type ObjectMetricSourceApplyConfiguration struct {
     	Metric          *MetricIdentifierApplyConfiguration            `json:"metric,omitempty"`
     }
     
    -// ObjectMetricSourceApplyConfiguration constructs an declarative configuration of the ObjectMetricSource type for use with
    +// ObjectMetricSourceApplyConfiguration constructs a declarative configuration of the ObjectMetricSource type for use with
     // apply.
     func ObjectMetricSource() *ObjectMetricSourceApplyConfiguration {
     	return &ObjectMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/objectmetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/objectmetricstatus.go
    index 70ba43beddf9..9ffd0c180d15 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/objectmetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/objectmetricstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v2
     
    -// ObjectMetricStatusApplyConfiguration represents an declarative configuration of the ObjectMetricStatus type for use
    +// ObjectMetricStatusApplyConfiguration represents a declarative configuration of the ObjectMetricStatus type for use
     // with apply.
     type ObjectMetricStatusApplyConfiguration struct {
     	Metric          *MetricIdentifierApplyConfiguration            `json:"metric,omitempty"`
    @@ -26,7 +26,7 @@ type ObjectMetricStatusApplyConfiguration struct {
     	DescribedObject *CrossVersionObjectReferenceApplyConfiguration `json:"describedObject,omitempty"`
     }
     
    -// ObjectMetricStatusApplyConfiguration constructs an declarative configuration of the ObjectMetricStatus type for use with
    +// ObjectMetricStatusApplyConfiguration constructs a declarative configuration of the ObjectMetricStatus type for use with
     // apply.
     func ObjectMetricStatus() *ObjectMetricStatusApplyConfiguration {
     	return &ObjectMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/podsmetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/podsmetricsource.go
    index 0a7a5c2595ed..28a35a2ae181 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/podsmetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/podsmetricsource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v2
     
    -// PodsMetricSourceApplyConfiguration represents an declarative configuration of the PodsMetricSource type for use
    +// PodsMetricSourceApplyConfiguration represents a declarative configuration of the PodsMetricSource type for use
     // with apply.
     type PodsMetricSourceApplyConfiguration struct {
     	Metric *MetricIdentifierApplyConfiguration `json:"metric,omitempty"`
     	Target *MetricTargetApplyConfiguration     `json:"target,omitempty"`
     }
     
    -// PodsMetricSourceApplyConfiguration constructs an declarative configuration of the PodsMetricSource type for use with
    +// PodsMetricSourceApplyConfiguration constructs a declarative configuration of the PodsMetricSource type for use with
     // apply.
     func PodsMetricSource() *PodsMetricSourceApplyConfiguration {
     	return &PodsMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/podsmetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/podsmetricstatus.go
    index 865fcc33e30d..4614282ce199 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/podsmetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/podsmetricstatus.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v2
     
    -// PodsMetricStatusApplyConfiguration represents an declarative configuration of the PodsMetricStatus type for use
    +// PodsMetricStatusApplyConfiguration represents a declarative configuration of the PodsMetricStatus type for use
     // with apply.
     type PodsMetricStatusApplyConfiguration struct {
     	Metric  *MetricIdentifierApplyConfiguration  `json:"metric,omitempty"`
     	Current *MetricValueStatusApplyConfiguration `json:"current,omitempty"`
     }
     
    -// PodsMetricStatusApplyConfiguration constructs an declarative configuration of the PodsMetricStatus type for use with
    +// PodsMetricStatusApplyConfiguration constructs a declarative configuration of the PodsMetricStatus type for use with
     // apply.
     func PodsMetricStatus() *PodsMetricStatusApplyConfiguration {
     	return &PodsMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/resourcemetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/resourcemetricsource.go
    index 25a065fef677..ffc9042b9f7a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/resourcemetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/resourcemetricsource.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// ResourceMetricSourceApplyConfiguration represents an declarative configuration of the ResourceMetricSource type for use
    +// ResourceMetricSourceApplyConfiguration represents a declarative configuration of the ResourceMetricSource type for use
     // with apply.
     type ResourceMetricSourceApplyConfiguration struct {
     	Name   *v1.ResourceName                `json:"name,omitempty"`
     	Target *MetricTargetApplyConfiguration `json:"target,omitempty"`
     }
     
    -// ResourceMetricSourceApplyConfiguration constructs an declarative configuration of the ResourceMetricSource type for use with
    +// ResourceMetricSourceApplyConfiguration constructs a declarative configuration of the ResourceMetricSource type for use with
     // apply.
     func ResourceMetricSource() *ResourceMetricSourceApplyConfiguration {
     	return &ResourceMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/resourcemetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/resourcemetricstatus.go
    index fb5625afab35..0fdbfcb5553e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/resourcemetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/resourcemetricstatus.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// ResourceMetricStatusApplyConfiguration represents an declarative configuration of the ResourceMetricStatus type for use
    +// ResourceMetricStatusApplyConfiguration represents a declarative configuration of the ResourceMetricStatus type for use
     // with apply.
     type ResourceMetricStatusApplyConfiguration struct {
     	Name    *v1.ResourceName                     `json:"name,omitempty"`
     	Current *MetricValueStatusApplyConfiguration `json:"current,omitempty"`
     }
     
    -// ResourceMetricStatusApplyConfiguration constructs an declarative configuration of the ResourceMetricStatus type for use with
    +// ResourceMetricStatusApplyConfiguration constructs a declarative configuration of the ResourceMetricStatus type for use with
     // apply.
     func ResourceMetricStatus() *ResourceMetricStatusApplyConfiguration {
     	return &ResourceMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/containerresourcemetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/containerresourcemetricsource.go
    index 2594e8e07281..f41c5af10f9d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/containerresourcemetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/containerresourcemetricsource.go
    @@ -23,7 +23,7 @@ import (
     	resource "k8s.io/apimachinery/pkg/api/resource"
     )
     
    -// ContainerResourceMetricSourceApplyConfiguration represents an declarative configuration of the ContainerResourceMetricSource type for use
    +// ContainerResourceMetricSourceApplyConfiguration represents a declarative configuration of the ContainerResourceMetricSource type for use
     // with apply.
     type ContainerResourceMetricSourceApplyConfiguration struct {
     	Name                     *v1.ResourceName   `json:"name,omitempty"`
    @@ -32,7 +32,7 @@ type ContainerResourceMetricSourceApplyConfiguration struct {
     	Container                *string            `json:"container,omitempty"`
     }
     
    -// ContainerResourceMetricSourceApplyConfiguration constructs an declarative configuration of the ContainerResourceMetricSource type for use with
    +// ContainerResourceMetricSourceApplyConfiguration constructs a declarative configuration of the ContainerResourceMetricSource type for use with
     // apply.
     func ContainerResourceMetricSource() *ContainerResourceMetricSourceApplyConfiguration {
     	return &ContainerResourceMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/containerresourcemetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/containerresourcemetricstatus.go
    index ae897237c479..4cd56eea371c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/containerresourcemetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/containerresourcemetricstatus.go
    @@ -23,7 +23,7 @@ import (
     	resource "k8s.io/apimachinery/pkg/api/resource"
     )
     
    -// ContainerResourceMetricStatusApplyConfiguration represents an declarative configuration of the ContainerResourceMetricStatus type for use
    +// ContainerResourceMetricStatusApplyConfiguration represents a declarative configuration of the ContainerResourceMetricStatus type for use
     // with apply.
     type ContainerResourceMetricStatusApplyConfiguration struct {
     	Name                      *v1.ResourceName   `json:"name,omitempty"`
    @@ -32,7 +32,7 @@ type ContainerResourceMetricStatusApplyConfiguration struct {
     	Container                 *string            `json:"container,omitempty"`
     }
     
    -// ContainerResourceMetricStatusApplyConfiguration constructs an declarative configuration of the ContainerResourceMetricStatus type for use with
    +// ContainerResourceMetricStatusApplyConfiguration constructs a declarative configuration of the ContainerResourceMetricStatus type for use with
     // apply.
     func ContainerResourceMetricStatus() *ContainerResourceMetricStatusApplyConfiguration {
     	return &ContainerResourceMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/crossversionobjectreference.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/crossversionobjectreference.go
    index fe3d15e8664f..f03261612e3c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/crossversionobjectreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/crossversionobjectreference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v2beta1
     
    -// CrossVersionObjectReferenceApplyConfiguration represents an declarative configuration of the CrossVersionObjectReference type for use
    +// CrossVersionObjectReferenceApplyConfiguration represents a declarative configuration of the CrossVersionObjectReference type for use
     // with apply.
     type CrossVersionObjectReferenceApplyConfiguration struct {
     	Kind       *string `json:"kind,omitempty"`
    @@ -26,7 +26,7 @@ type CrossVersionObjectReferenceApplyConfiguration struct {
     	APIVersion *string `json:"apiVersion,omitempty"`
     }
     
    -// CrossVersionObjectReferenceApplyConfiguration constructs an declarative configuration of the CrossVersionObjectReference type for use with
    +// CrossVersionObjectReferenceApplyConfiguration constructs a declarative configuration of the CrossVersionObjectReference type for use with
     // apply.
     func CrossVersionObjectReference() *CrossVersionObjectReferenceApplyConfiguration {
     	return &CrossVersionObjectReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/externalmetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/externalmetricsource.go
    index c118e6ca1eec..8dce4529dd2d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/externalmetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/externalmetricsource.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ExternalMetricSourceApplyConfiguration represents an declarative configuration of the ExternalMetricSource type for use
    +// ExternalMetricSourceApplyConfiguration represents a declarative configuration of the ExternalMetricSource type for use
     // with apply.
     type ExternalMetricSourceApplyConfiguration struct {
     	MetricName         *string                             `json:"metricName,omitempty"`
    @@ -32,7 +32,7 @@ type ExternalMetricSourceApplyConfiguration struct {
     	TargetAverageValue *resource.Quantity                  `json:"targetAverageValue,omitempty"`
     }
     
    -// ExternalMetricSourceApplyConfiguration constructs an declarative configuration of the ExternalMetricSource type for use with
    +// ExternalMetricSourceApplyConfiguration constructs a declarative configuration of the ExternalMetricSource type for use with
     // apply.
     func ExternalMetricSource() *ExternalMetricSourceApplyConfiguration {
     	return &ExternalMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/externalmetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/externalmetricstatus.go
    index ab771214e223..4034d7e55c8e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/externalmetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/externalmetricstatus.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ExternalMetricStatusApplyConfiguration represents an declarative configuration of the ExternalMetricStatus type for use
    +// ExternalMetricStatusApplyConfiguration represents a declarative configuration of the ExternalMetricStatus type for use
     // with apply.
     type ExternalMetricStatusApplyConfiguration struct {
     	MetricName          *string                             `json:"metricName,omitempty"`
    @@ -32,7 +32,7 @@ type ExternalMetricStatusApplyConfiguration struct {
     	CurrentAverageValue *resource.Quantity                  `json:"currentAverageValue,omitempty"`
     }
     
    -// ExternalMetricStatusApplyConfiguration constructs an declarative configuration of the ExternalMetricStatus type for use with
    +// ExternalMetricStatusApplyConfiguration constructs a declarative configuration of the ExternalMetricStatus type for use with
     // apply.
     func ExternalMetricStatus() *ExternalMetricStatusApplyConfiguration {
     	return &ExternalMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscaler.go
    index 66b8d5f738f8..51ae849019eb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscaler.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// HorizontalPodAutoscalerApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscaler type for use
    +// HorizontalPodAutoscalerApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscaler type for use
     // with apply.
     type HorizontalPodAutoscalerApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type HorizontalPodAutoscalerApplyConfiguration struct {
     	Status                           *HorizontalPodAutoscalerStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// HorizontalPodAutoscaler constructs an declarative configuration of the HorizontalPodAutoscaler type for use with
    +// HorizontalPodAutoscaler constructs a declarative configuration of the HorizontalPodAutoscaler type for use with
     // apply.
     func HorizontalPodAutoscaler(name, namespace string) *HorizontalPodAutoscalerApplyConfiguration {
     	b := &HorizontalPodAutoscalerApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractHorizontalPodAutoscaler(horizontalPodAutoscaler *autoscalingv2beta1.
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithKind(value string) *HorizontalPodAutoscalerApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithKind(value string) *Hori
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithAPIVersion(value string) *HorizontalPodAutoscalerApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithAPIVersion(value string)
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithName(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithName(value string) *Hori
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithGenerateName(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithGenerateName(value strin
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithNamespace(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithNamespace(value string)
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithUID(value types.UID) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithUID(value types.UID) *Ho
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithResourceVersion(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithResourceVersion(value st
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithGeneration(value int64) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithGeneration(value int64)
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithCreationTimestamp(value metav1.Time) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithCreationTimestamp(value
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionTimestamp(value
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionGracePeriodSecon
     // overwriting an existing map entries in Labels field with the same key.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithLabels(entries map[string]string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithLabels(entries map[strin
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithAnnotations(entries map[string]string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithOwnerReferences(values .
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithOwnerReferences(values .
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithFinalizers(values ...string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithStatus(value *Horizontal
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *HorizontalPodAutoscalerApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalercondition.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalercondition.go
    index de3e6ea5cde8..445cd55ae683 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalercondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalercondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v2beta1
     
     import (
    -	v2beta1 "k8s.io/api/autoscaling/v2beta1"
    +	autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// HorizontalPodAutoscalerConditionApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerCondition type for use
    +// HorizontalPodAutoscalerConditionApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerCondition type for use
     // with apply.
     type HorizontalPodAutoscalerConditionApplyConfiguration struct {
    -	Type               *v2beta1.HorizontalPodAutoscalerConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus                           `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                                  `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                       `json:"reason,omitempty"`
    -	Message            *string                                       `json:"message,omitempty"`
    +	Type               *autoscalingv2beta1.HorizontalPodAutoscalerConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                                      `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                                             `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                                  `json:"reason,omitempty"`
    +	Message            *string                                                  `json:"message,omitempty"`
     }
     
    -// HorizontalPodAutoscalerConditionApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerCondition type for use with
    +// HorizontalPodAutoscalerConditionApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerCondition type for use with
     // apply.
     func HorizontalPodAutoscalerCondition() *HorizontalPodAutoscalerConditionApplyConfiguration {
     	return &HorizontalPodAutoscalerConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func HorizontalPodAutoscalerCondition() *HorizontalPodAutoscalerConditionApplyCo
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *HorizontalPodAutoscalerConditionApplyConfiguration) WithType(value v2beta1.HorizontalPodAutoscalerConditionType) *HorizontalPodAutoscalerConditionApplyConfiguration {
    +func (b *HorizontalPodAutoscalerConditionApplyConfiguration) WithType(value autoscalingv2beta1.HorizontalPodAutoscalerConditionType) *HorizontalPodAutoscalerConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalerspec.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalerspec.go
    index 761d94a85054..6f111ceafd86 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalerspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalerspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v2beta1
     
    -// HorizontalPodAutoscalerSpecApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerSpec type for use
    +// HorizontalPodAutoscalerSpecApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerSpec type for use
     // with apply.
     type HorizontalPodAutoscalerSpecApplyConfiguration struct {
     	ScaleTargetRef *CrossVersionObjectReferenceApplyConfiguration `json:"scaleTargetRef,omitempty"`
    @@ -27,7 +27,7 @@ type HorizontalPodAutoscalerSpecApplyConfiguration struct {
     	Metrics        []MetricSpecApplyConfiguration                 `json:"metrics,omitempty"`
     }
     
    -// HorizontalPodAutoscalerSpecApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerSpec type for use with
    +// HorizontalPodAutoscalerSpecApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerSpec type for use with
     // apply.
     func HorizontalPodAutoscalerSpec() *HorizontalPodAutoscalerSpecApplyConfiguration {
     	return &HorizontalPodAutoscalerSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalerstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalerstatus.go
    index 95ec5be43b55..391b577258f0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalerstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalerstatus.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// HorizontalPodAutoscalerStatusApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerStatus type for use
    +// HorizontalPodAutoscalerStatusApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerStatus type for use
     // with apply.
     type HorizontalPodAutoscalerStatusApplyConfiguration struct {
     	ObservedGeneration *int64                                               `json:"observedGeneration,omitempty"`
    @@ -33,7 +33,7 @@ type HorizontalPodAutoscalerStatusApplyConfiguration struct {
     	Conditions         []HorizontalPodAutoscalerConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// HorizontalPodAutoscalerStatusApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerStatus type for use with
    +// HorizontalPodAutoscalerStatusApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerStatus type for use with
     // apply.
     func HorizontalPodAutoscalerStatus() *HorizontalPodAutoscalerStatusApplyConfiguration {
     	return &HorizontalPodAutoscalerStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/metricspec.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/metricspec.go
    index 70beec84e022..3a5faa3b2e47 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/metricspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/metricspec.go
    @@ -19,13 +19,13 @@ limitations under the License.
     package v2beta1
     
     import (
    -	v2beta1 "k8s.io/api/autoscaling/v2beta1"
    +	autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
     )
     
    -// MetricSpecApplyConfiguration represents an declarative configuration of the MetricSpec type for use
    +// MetricSpecApplyConfiguration represents a declarative configuration of the MetricSpec type for use
     // with apply.
     type MetricSpecApplyConfiguration struct {
    -	Type              *v2beta1.MetricSourceType                        `json:"type,omitempty"`
    +	Type              *autoscalingv2beta1.MetricSourceType             `json:"type,omitempty"`
     	Object            *ObjectMetricSourceApplyConfiguration            `json:"object,omitempty"`
     	Pods              *PodsMetricSourceApplyConfiguration              `json:"pods,omitempty"`
     	Resource          *ResourceMetricSourceApplyConfiguration          `json:"resource,omitempty"`
    @@ -33,7 +33,7 @@ type MetricSpecApplyConfiguration struct {
     	External          *ExternalMetricSourceApplyConfiguration          `json:"external,omitempty"`
     }
     
    -// MetricSpecApplyConfiguration constructs an declarative configuration of the MetricSpec type for use with
    +// MetricSpecApplyConfiguration constructs a declarative configuration of the MetricSpec type for use with
     // apply.
     func MetricSpec() *MetricSpecApplyConfiguration {
     	return &MetricSpecApplyConfiguration{}
    @@ -42,7 +42,7 @@ func MetricSpec() *MetricSpecApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *MetricSpecApplyConfiguration) WithType(value v2beta1.MetricSourceType) *MetricSpecApplyConfiguration {
    +func (b *MetricSpecApplyConfiguration) WithType(value autoscalingv2beta1.MetricSourceType) *MetricSpecApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/metricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/metricstatus.go
    index b03ea2f9e4b3..f281e182d10b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/metricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/metricstatus.go
    @@ -19,13 +19,13 @@ limitations under the License.
     package v2beta1
     
     import (
    -	v2beta1 "k8s.io/api/autoscaling/v2beta1"
    +	autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
     )
     
    -// MetricStatusApplyConfiguration represents an declarative configuration of the MetricStatus type for use
    +// MetricStatusApplyConfiguration represents a declarative configuration of the MetricStatus type for use
     // with apply.
     type MetricStatusApplyConfiguration struct {
    -	Type              *v2beta1.MetricSourceType                        `json:"type,omitempty"`
    +	Type              *autoscalingv2beta1.MetricSourceType             `json:"type,omitempty"`
     	Object            *ObjectMetricStatusApplyConfiguration            `json:"object,omitempty"`
     	Pods              *PodsMetricStatusApplyConfiguration              `json:"pods,omitempty"`
     	Resource          *ResourceMetricStatusApplyConfiguration          `json:"resource,omitempty"`
    @@ -33,7 +33,7 @@ type MetricStatusApplyConfiguration struct {
     	External          *ExternalMetricStatusApplyConfiguration          `json:"external,omitempty"`
     }
     
    -// MetricStatusApplyConfiguration constructs an declarative configuration of the MetricStatus type for use with
    +// MetricStatusApplyConfiguration constructs a declarative configuration of the MetricStatus type for use with
     // apply.
     func MetricStatus() *MetricStatusApplyConfiguration {
     	return &MetricStatusApplyConfiguration{}
    @@ -42,7 +42,7 @@ func MetricStatus() *MetricStatusApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *MetricStatusApplyConfiguration) WithType(value v2beta1.MetricSourceType) *MetricStatusApplyConfiguration {
    +func (b *MetricStatusApplyConfiguration) WithType(value autoscalingv2beta1.MetricSourceType) *MetricStatusApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/objectmetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/objectmetricsource.go
    index 07d467972eca..a9e2eead4d3d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/objectmetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/objectmetricsource.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ObjectMetricSourceApplyConfiguration represents an declarative configuration of the ObjectMetricSource type for use
    +// ObjectMetricSourceApplyConfiguration represents a declarative configuration of the ObjectMetricSource type for use
     // with apply.
     type ObjectMetricSourceApplyConfiguration struct {
     	Target       *CrossVersionObjectReferenceApplyConfiguration `json:"target,omitempty"`
    @@ -33,7 +33,7 @@ type ObjectMetricSourceApplyConfiguration struct {
     	AverageValue *resource.Quantity                             `json:"averageValue,omitempty"`
     }
     
    -// ObjectMetricSourceApplyConfiguration constructs an declarative configuration of the ObjectMetricSource type for use with
    +// ObjectMetricSourceApplyConfiguration constructs a declarative configuration of the ObjectMetricSource type for use with
     // apply.
     func ObjectMetricSource() *ObjectMetricSourceApplyConfiguration {
     	return &ObjectMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/objectmetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/objectmetricstatus.go
    index b5e0d3e3d22e..4d3be8df6cb5 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/objectmetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/objectmetricstatus.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ObjectMetricStatusApplyConfiguration represents an declarative configuration of the ObjectMetricStatus type for use
    +// ObjectMetricStatusApplyConfiguration represents a declarative configuration of the ObjectMetricStatus type for use
     // with apply.
     type ObjectMetricStatusApplyConfiguration struct {
     	Target       *CrossVersionObjectReferenceApplyConfiguration `json:"target,omitempty"`
    @@ -33,7 +33,7 @@ type ObjectMetricStatusApplyConfiguration struct {
     	AverageValue *resource.Quantity                             `json:"averageValue,omitempty"`
     }
     
    -// ObjectMetricStatusApplyConfiguration constructs an declarative configuration of the ObjectMetricStatus type for use with
    +// ObjectMetricStatusApplyConfiguration constructs a declarative configuration of the ObjectMetricStatus type for use with
     // apply.
     func ObjectMetricStatus() *ObjectMetricStatusApplyConfiguration {
     	return &ObjectMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/podsmetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/podsmetricsource.go
    index a4122b898983..cfcd752e2432 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/podsmetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/podsmetricsource.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodsMetricSourceApplyConfiguration represents an declarative configuration of the PodsMetricSource type for use
    +// PodsMetricSourceApplyConfiguration represents a declarative configuration of the PodsMetricSource type for use
     // with apply.
     type PodsMetricSourceApplyConfiguration struct {
     	MetricName         *string                             `json:"metricName,omitempty"`
    @@ -31,7 +31,7 @@ type PodsMetricSourceApplyConfiguration struct {
     	Selector           *v1.LabelSelectorApplyConfiguration `json:"selector,omitempty"`
     }
     
    -// PodsMetricSourceApplyConfiguration constructs an declarative configuration of the PodsMetricSource type for use with
    +// PodsMetricSourceApplyConfiguration constructs a declarative configuration of the PodsMetricSource type for use with
     // apply.
     func PodsMetricSource() *PodsMetricSourceApplyConfiguration {
     	return &PodsMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/podsmetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/podsmetricstatus.go
    index d6172011b7a2..f7a7777fd4f1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/podsmetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/podsmetricstatus.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodsMetricStatusApplyConfiguration represents an declarative configuration of the PodsMetricStatus type for use
    +// PodsMetricStatusApplyConfiguration represents a declarative configuration of the PodsMetricStatus type for use
     // with apply.
     type PodsMetricStatusApplyConfiguration struct {
     	MetricName          *string                             `json:"metricName,omitempty"`
    @@ -31,7 +31,7 @@ type PodsMetricStatusApplyConfiguration struct {
     	Selector            *v1.LabelSelectorApplyConfiguration `json:"selector,omitempty"`
     }
     
    -// PodsMetricStatusApplyConfiguration constructs an declarative configuration of the PodsMetricStatus type for use with
    +// PodsMetricStatusApplyConfiguration constructs a declarative configuration of the PodsMetricStatus type for use with
     // apply.
     func PodsMetricStatus() *PodsMetricStatusApplyConfiguration {
     	return &PodsMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/resourcemetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/resourcemetricsource.go
    index 804f3f492632..ad97d83c3ccc 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/resourcemetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/resourcemetricsource.go
    @@ -23,7 +23,7 @@ import (
     	resource "k8s.io/apimachinery/pkg/api/resource"
     )
     
    -// ResourceMetricSourceApplyConfiguration represents an declarative configuration of the ResourceMetricSource type for use
    +// ResourceMetricSourceApplyConfiguration represents a declarative configuration of the ResourceMetricSource type for use
     // with apply.
     type ResourceMetricSourceApplyConfiguration struct {
     	Name                     *v1.ResourceName   `json:"name,omitempty"`
    @@ -31,7 +31,7 @@ type ResourceMetricSourceApplyConfiguration struct {
     	TargetAverageValue       *resource.Quantity `json:"targetAverageValue,omitempty"`
     }
     
    -// ResourceMetricSourceApplyConfiguration constructs an declarative configuration of the ResourceMetricSource type for use with
    +// ResourceMetricSourceApplyConfiguration constructs a declarative configuration of the ResourceMetricSource type for use with
     // apply.
     func ResourceMetricSource() *ResourceMetricSourceApplyConfiguration {
     	return &ResourceMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/resourcemetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/resourcemetricstatus.go
    index 5fdc29c1328a..78fbeaad0648 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/resourcemetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/resourcemetricstatus.go
    @@ -23,7 +23,7 @@ import (
     	resource "k8s.io/apimachinery/pkg/api/resource"
     )
     
    -// ResourceMetricStatusApplyConfiguration represents an declarative configuration of the ResourceMetricStatus type for use
    +// ResourceMetricStatusApplyConfiguration represents a declarative configuration of the ResourceMetricStatus type for use
     // with apply.
     type ResourceMetricStatusApplyConfiguration struct {
     	Name                      *v1.ResourceName   `json:"name,omitempty"`
    @@ -31,7 +31,7 @@ type ResourceMetricStatusApplyConfiguration struct {
     	CurrentAverageValue       *resource.Quantity `json:"currentAverageValue,omitempty"`
     }
     
    -// ResourceMetricStatusApplyConfiguration constructs an declarative configuration of the ResourceMetricStatus type for use with
    +// ResourceMetricStatusApplyConfiguration constructs a declarative configuration of the ResourceMetricStatus type for use with
     // apply.
     func ResourceMetricStatus() *ResourceMetricStatusApplyConfiguration {
     	return &ResourceMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/containerresourcemetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/containerresourcemetricsource.go
    index aa334744ea8b..1050165ea36d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/containerresourcemetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/containerresourcemetricsource.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// ContainerResourceMetricSourceApplyConfiguration represents an declarative configuration of the ContainerResourceMetricSource type for use
    +// ContainerResourceMetricSourceApplyConfiguration represents a declarative configuration of the ContainerResourceMetricSource type for use
     // with apply.
     type ContainerResourceMetricSourceApplyConfiguration struct {
     	Name      *v1.ResourceName                `json:"name,omitempty"`
    @@ -30,7 +30,7 @@ type ContainerResourceMetricSourceApplyConfiguration struct {
     	Container *string                         `json:"container,omitempty"`
     }
     
    -// ContainerResourceMetricSourceApplyConfiguration constructs an declarative configuration of the ContainerResourceMetricSource type for use with
    +// ContainerResourceMetricSourceApplyConfiguration constructs a declarative configuration of the ContainerResourceMetricSource type for use with
     // apply.
     func ContainerResourceMetricSource() *ContainerResourceMetricSourceApplyConfiguration {
     	return &ContainerResourceMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/containerresourcemetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/containerresourcemetricstatus.go
    index bf0822a06641..708f68bc6bff 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/containerresourcemetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/containerresourcemetricstatus.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// ContainerResourceMetricStatusApplyConfiguration represents an declarative configuration of the ContainerResourceMetricStatus type for use
    +// ContainerResourceMetricStatusApplyConfiguration represents a declarative configuration of the ContainerResourceMetricStatus type for use
     // with apply.
     type ContainerResourceMetricStatusApplyConfiguration struct {
     	Name      *v1.ResourceName                     `json:"name,omitempty"`
    @@ -30,7 +30,7 @@ type ContainerResourceMetricStatusApplyConfiguration struct {
     	Container *string                              `json:"container,omitempty"`
     }
     
    -// ContainerResourceMetricStatusApplyConfiguration constructs an declarative configuration of the ContainerResourceMetricStatus type for use with
    +// ContainerResourceMetricStatusApplyConfiguration constructs a declarative configuration of the ContainerResourceMetricStatus type for use with
     // apply.
     func ContainerResourceMetricStatus() *ContainerResourceMetricStatusApplyConfiguration {
     	return &ContainerResourceMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/crossversionobjectreference.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/crossversionobjectreference.go
    index 2903629bc80b..c281084b1658 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/crossversionobjectreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/crossversionobjectreference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v2beta2
     
    -// CrossVersionObjectReferenceApplyConfiguration represents an declarative configuration of the CrossVersionObjectReference type for use
    +// CrossVersionObjectReferenceApplyConfiguration represents a declarative configuration of the CrossVersionObjectReference type for use
     // with apply.
     type CrossVersionObjectReferenceApplyConfiguration struct {
     	Kind       *string `json:"kind,omitempty"`
    @@ -26,7 +26,7 @@ type CrossVersionObjectReferenceApplyConfiguration struct {
     	APIVersion *string `json:"apiVersion,omitempty"`
     }
     
    -// CrossVersionObjectReferenceApplyConfiguration constructs an declarative configuration of the CrossVersionObjectReference type for use with
    +// CrossVersionObjectReferenceApplyConfiguration constructs a declarative configuration of the CrossVersionObjectReference type for use with
     // apply.
     func CrossVersionObjectReference() *CrossVersionObjectReferenceApplyConfiguration {
     	return &CrossVersionObjectReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/externalmetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/externalmetricsource.go
    index 80053a6b334c..d34ca114940c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/externalmetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/externalmetricsource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v2beta2
     
    -// ExternalMetricSourceApplyConfiguration represents an declarative configuration of the ExternalMetricSource type for use
    +// ExternalMetricSourceApplyConfiguration represents a declarative configuration of the ExternalMetricSource type for use
     // with apply.
     type ExternalMetricSourceApplyConfiguration struct {
     	Metric *MetricIdentifierApplyConfiguration `json:"metric,omitempty"`
     	Target *MetricTargetApplyConfiguration     `json:"target,omitempty"`
     }
     
    -// ExternalMetricSourceApplyConfiguration constructs an declarative configuration of the ExternalMetricSource type for use with
    +// ExternalMetricSourceApplyConfiguration constructs a declarative configuration of the ExternalMetricSource type for use with
     // apply.
     func ExternalMetricSource() *ExternalMetricSourceApplyConfiguration {
     	return &ExternalMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/externalmetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/externalmetricstatus.go
    index 71ac35adbc32..be29e607fa4b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/externalmetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/externalmetricstatus.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v2beta2
     
    -// ExternalMetricStatusApplyConfiguration represents an declarative configuration of the ExternalMetricStatus type for use
    +// ExternalMetricStatusApplyConfiguration represents a declarative configuration of the ExternalMetricStatus type for use
     // with apply.
     type ExternalMetricStatusApplyConfiguration struct {
     	Metric  *MetricIdentifierApplyConfiguration  `json:"metric,omitempty"`
     	Current *MetricValueStatusApplyConfiguration `json:"current,omitempty"`
     }
     
    -// ExternalMetricStatusApplyConfiguration constructs an declarative configuration of the ExternalMetricStatus type for use with
    +// ExternalMetricStatusApplyConfiguration constructs a declarative configuration of the ExternalMetricStatus type for use with
     // apply.
     func ExternalMetricStatus() *ExternalMetricStatusApplyConfiguration {
     	return &ExternalMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscaler.go
    index 1c750cb1644e..19794ff426ed 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscaler.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// HorizontalPodAutoscalerApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscaler type for use
    +// HorizontalPodAutoscalerApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscaler type for use
     // with apply.
     type HorizontalPodAutoscalerApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type HorizontalPodAutoscalerApplyConfiguration struct {
     	Status                           *HorizontalPodAutoscalerStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// HorizontalPodAutoscaler constructs an declarative configuration of the HorizontalPodAutoscaler type for use with
    +// HorizontalPodAutoscaler constructs a declarative configuration of the HorizontalPodAutoscaler type for use with
     // apply.
     func HorizontalPodAutoscaler(name, namespace string) *HorizontalPodAutoscalerApplyConfiguration {
     	b := &HorizontalPodAutoscalerApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractHorizontalPodAutoscaler(horizontalPodAutoscaler *autoscalingv2beta2.
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithKind(value string) *HorizontalPodAutoscalerApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithKind(value string) *Hori
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithAPIVersion(value string) *HorizontalPodAutoscalerApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithAPIVersion(value string)
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithName(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithName(value string) *Hori
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithGenerateName(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithGenerateName(value strin
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithNamespace(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithNamespace(value string)
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithUID(value types.UID) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithUID(value types.UID) *Ho
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithResourceVersion(value string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithResourceVersion(value st
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithGeneration(value int64) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithGeneration(value int64)
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithCreationTimestamp(value metav1.Time) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithCreationTimestamp(value
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionTimestamp(value
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithDeletionGracePeriodSecon
     // overwriting an existing map entries in Labels field with the same key.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithLabels(entries map[string]string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithLabels(entries map[strin
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithAnnotations(entries map[string]string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithOwnerReferences(values .
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithOwnerReferences(values .
     func (b *HorizontalPodAutoscalerApplyConfiguration) WithFinalizers(values ...string) *HorizontalPodAutoscalerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *HorizontalPodAutoscalerApplyConfiguration) WithStatus(value *Horizontal
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *HorizontalPodAutoscalerApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerbehavior.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerbehavior.go
    index ec41bfadeaa2..e9b1a9fb9e22 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerbehavior.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerbehavior.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v2beta2
     
    -// HorizontalPodAutoscalerBehaviorApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerBehavior type for use
    +// HorizontalPodAutoscalerBehaviorApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerBehavior type for use
     // with apply.
     type HorizontalPodAutoscalerBehaviorApplyConfiguration struct {
     	ScaleUp   *HPAScalingRulesApplyConfiguration `json:"scaleUp,omitempty"`
     	ScaleDown *HPAScalingRulesApplyConfiguration `json:"scaleDown,omitempty"`
     }
     
    -// HorizontalPodAutoscalerBehaviorApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerBehavior type for use with
    +// HorizontalPodAutoscalerBehaviorApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerBehavior type for use with
     // apply.
     func HorizontalPodAutoscalerBehavior() *HorizontalPodAutoscalerBehaviorApplyConfiguration {
     	return &HorizontalPodAutoscalerBehaviorApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalercondition.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalercondition.go
    index 0f0cae75d35b..f888691249f5 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalercondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalercondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v2beta2
     
     import (
    -	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// HorizontalPodAutoscalerConditionApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerCondition type for use
    +// HorizontalPodAutoscalerConditionApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerCondition type for use
     // with apply.
     type HorizontalPodAutoscalerConditionApplyConfiguration struct {
    -	Type               *v2beta2.HorizontalPodAutoscalerConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus                           `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                                  `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                       `json:"reason,omitempty"`
    -	Message            *string                                       `json:"message,omitempty"`
    +	Type               *autoscalingv2beta2.HorizontalPodAutoscalerConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                                      `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                                             `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                                  `json:"reason,omitempty"`
    +	Message            *string                                                  `json:"message,omitempty"`
     }
     
    -// HorizontalPodAutoscalerConditionApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerCondition type for use with
    +// HorizontalPodAutoscalerConditionApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerCondition type for use with
     // apply.
     func HorizontalPodAutoscalerCondition() *HorizontalPodAutoscalerConditionApplyConfiguration {
     	return &HorizontalPodAutoscalerConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func HorizontalPodAutoscalerCondition() *HorizontalPodAutoscalerConditionApplyCo
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *HorizontalPodAutoscalerConditionApplyConfiguration) WithType(value v2beta2.HorizontalPodAutoscalerConditionType) *HorizontalPodAutoscalerConditionApplyConfiguration {
    +func (b *HorizontalPodAutoscalerConditionApplyConfiguration) WithType(value autoscalingv2beta2.HorizontalPodAutoscalerConditionType) *HorizontalPodAutoscalerConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerspec.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerspec.go
    index c60adee581ed..9629e4bd5986 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v2beta2
     
    -// HorizontalPodAutoscalerSpecApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerSpec type for use
    +// HorizontalPodAutoscalerSpecApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerSpec type for use
     // with apply.
     type HorizontalPodAutoscalerSpecApplyConfiguration struct {
     	ScaleTargetRef *CrossVersionObjectReferenceApplyConfiguration     `json:"scaleTargetRef,omitempty"`
    @@ -28,7 +28,7 @@ type HorizontalPodAutoscalerSpecApplyConfiguration struct {
     	Behavior       *HorizontalPodAutoscalerBehaviorApplyConfiguration `json:"behavior,omitempty"`
     }
     
    -// HorizontalPodAutoscalerSpecApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerSpec type for use with
    +// HorizontalPodAutoscalerSpecApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerSpec type for use with
     // apply.
     func HorizontalPodAutoscalerSpec() *HorizontalPodAutoscalerSpecApplyConfiguration {
     	return &HorizontalPodAutoscalerSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerstatus.go
    index 881a874e51d6..1eee645050d7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerstatus.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// HorizontalPodAutoscalerStatusApplyConfiguration represents an declarative configuration of the HorizontalPodAutoscalerStatus type for use
    +// HorizontalPodAutoscalerStatusApplyConfiguration represents a declarative configuration of the HorizontalPodAutoscalerStatus type for use
     // with apply.
     type HorizontalPodAutoscalerStatusApplyConfiguration struct {
     	ObservedGeneration *int64                                               `json:"observedGeneration,omitempty"`
    @@ -33,7 +33,7 @@ type HorizontalPodAutoscalerStatusApplyConfiguration struct {
     	Conditions         []HorizontalPodAutoscalerConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// HorizontalPodAutoscalerStatusApplyConfiguration constructs an declarative configuration of the HorizontalPodAutoscalerStatus type for use with
    +// HorizontalPodAutoscalerStatusApplyConfiguration constructs a declarative configuration of the HorizontalPodAutoscalerStatus type for use with
     // apply.
     func HorizontalPodAutoscalerStatus() *HorizontalPodAutoscalerStatusApplyConfiguration {
     	return &HorizontalPodAutoscalerStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/hpascalingpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/hpascalingpolicy.go
    index 2a535891affb..2bbbbddec4bb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/hpascalingpolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/hpascalingpolicy.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v2beta2
     
     import (
    -	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
     )
     
    -// HPAScalingPolicyApplyConfiguration represents an declarative configuration of the HPAScalingPolicy type for use
    +// HPAScalingPolicyApplyConfiguration represents a declarative configuration of the HPAScalingPolicy type for use
     // with apply.
     type HPAScalingPolicyApplyConfiguration struct {
    -	Type          *v2beta2.HPAScalingPolicyType `json:"type,omitempty"`
    -	Value         *int32                        `json:"value,omitempty"`
    -	PeriodSeconds *int32                        `json:"periodSeconds,omitempty"`
    +	Type          *autoscalingv2beta2.HPAScalingPolicyType `json:"type,omitempty"`
    +	Value         *int32                                   `json:"value,omitempty"`
    +	PeriodSeconds *int32                                   `json:"periodSeconds,omitempty"`
     }
     
    -// HPAScalingPolicyApplyConfiguration constructs an declarative configuration of the HPAScalingPolicy type for use with
    +// HPAScalingPolicyApplyConfiguration constructs a declarative configuration of the HPAScalingPolicy type for use with
     // apply.
     func HPAScalingPolicy() *HPAScalingPolicyApplyConfiguration {
     	return &HPAScalingPolicyApplyConfiguration{}
    @@ -39,7 +39,7 @@ func HPAScalingPolicy() *HPAScalingPolicyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *HPAScalingPolicyApplyConfiguration) WithType(value v2beta2.HPAScalingPolicyType) *HPAScalingPolicyApplyConfiguration {
    +func (b *HPAScalingPolicyApplyConfiguration) WithType(value autoscalingv2beta2.HPAScalingPolicyType) *HPAScalingPolicyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/hpascalingrules.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/hpascalingrules.go
    index 57c917b89486..92aa449aa47a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/hpascalingrules.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/hpascalingrules.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v2beta2
     
     import (
    -	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
     )
     
    -// HPAScalingRulesApplyConfiguration represents an declarative configuration of the HPAScalingRules type for use
    +// HPAScalingRulesApplyConfiguration represents a declarative configuration of the HPAScalingRules type for use
     // with apply.
     type HPAScalingRulesApplyConfiguration struct {
    -	StabilizationWindowSeconds *int32                               `json:"stabilizationWindowSeconds,omitempty"`
    -	SelectPolicy               *v2beta2.ScalingPolicySelect         `json:"selectPolicy,omitempty"`
    -	Policies                   []HPAScalingPolicyApplyConfiguration `json:"policies,omitempty"`
    +	StabilizationWindowSeconds *int32                                  `json:"stabilizationWindowSeconds,omitempty"`
    +	SelectPolicy               *autoscalingv2beta2.ScalingPolicySelect `json:"selectPolicy,omitempty"`
    +	Policies                   []HPAScalingPolicyApplyConfiguration    `json:"policies,omitempty"`
     }
     
    -// HPAScalingRulesApplyConfiguration constructs an declarative configuration of the HPAScalingRules type for use with
    +// HPAScalingRulesApplyConfiguration constructs a declarative configuration of the HPAScalingRules type for use with
     // apply.
     func HPAScalingRules() *HPAScalingRulesApplyConfiguration {
     	return &HPAScalingRulesApplyConfiguration{}
    @@ -47,7 +47,7 @@ func (b *HPAScalingRulesApplyConfiguration) WithStabilizationWindowSeconds(value
     // WithSelectPolicy sets the SelectPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the SelectPolicy field is set to the value of the last call.
    -func (b *HPAScalingRulesApplyConfiguration) WithSelectPolicy(value v2beta2.ScalingPolicySelect) *HPAScalingRulesApplyConfiguration {
    +func (b *HPAScalingRulesApplyConfiguration) WithSelectPolicy(value autoscalingv2beta2.ScalingPolicySelect) *HPAScalingRulesApplyConfiguration {
     	b.SelectPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricidentifier.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricidentifier.go
    index 70cbd4e8154a..e8b2abb0e618 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricidentifier.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricidentifier.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// MetricIdentifierApplyConfiguration represents an declarative configuration of the MetricIdentifier type for use
    +// MetricIdentifierApplyConfiguration represents a declarative configuration of the MetricIdentifier type for use
     // with apply.
     type MetricIdentifierApplyConfiguration struct {
     	Name     *string                             `json:"name,omitempty"`
     	Selector *v1.LabelSelectorApplyConfiguration `json:"selector,omitempty"`
     }
     
    -// MetricIdentifierApplyConfiguration constructs an declarative configuration of the MetricIdentifier type for use with
    +// MetricIdentifierApplyConfiguration constructs a declarative configuration of the MetricIdentifier type for use with
     // apply.
     func MetricIdentifier() *MetricIdentifierApplyConfiguration {
     	return &MetricIdentifierApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricspec.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricspec.go
    index 1e7ee1419de9..3da1617cfb48 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricspec.go
    @@ -19,13 +19,13 @@ limitations under the License.
     package v2beta2
     
     import (
    -	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
     )
     
    -// MetricSpecApplyConfiguration represents an declarative configuration of the MetricSpec type for use
    +// MetricSpecApplyConfiguration represents a declarative configuration of the MetricSpec type for use
     // with apply.
     type MetricSpecApplyConfiguration struct {
    -	Type              *v2beta2.MetricSourceType                        `json:"type,omitempty"`
    +	Type              *autoscalingv2beta2.MetricSourceType             `json:"type,omitempty"`
     	Object            *ObjectMetricSourceApplyConfiguration            `json:"object,omitempty"`
     	Pods              *PodsMetricSourceApplyConfiguration              `json:"pods,omitempty"`
     	Resource          *ResourceMetricSourceApplyConfiguration          `json:"resource,omitempty"`
    @@ -33,7 +33,7 @@ type MetricSpecApplyConfiguration struct {
     	External          *ExternalMetricSourceApplyConfiguration          `json:"external,omitempty"`
     }
     
    -// MetricSpecApplyConfiguration constructs an declarative configuration of the MetricSpec type for use with
    +// MetricSpecApplyConfiguration constructs a declarative configuration of the MetricSpec type for use with
     // apply.
     func MetricSpec() *MetricSpecApplyConfiguration {
     	return &MetricSpecApplyConfiguration{}
    @@ -42,7 +42,7 @@ func MetricSpec() *MetricSpecApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *MetricSpecApplyConfiguration) WithType(value v2beta2.MetricSourceType) *MetricSpecApplyConfiguration {
    +func (b *MetricSpecApplyConfiguration) WithType(value autoscalingv2beta2.MetricSourceType) *MetricSpecApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricstatus.go
    index 353ec6d943e5..b528bd76059f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricstatus.go
    @@ -19,13 +19,13 @@ limitations under the License.
     package v2beta2
     
     import (
    -	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
     )
     
    -// MetricStatusApplyConfiguration represents an declarative configuration of the MetricStatus type for use
    +// MetricStatusApplyConfiguration represents a declarative configuration of the MetricStatus type for use
     // with apply.
     type MetricStatusApplyConfiguration struct {
    -	Type              *v2beta2.MetricSourceType                        `json:"type,omitempty"`
    +	Type              *autoscalingv2beta2.MetricSourceType             `json:"type,omitempty"`
     	Object            *ObjectMetricStatusApplyConfiguration            `json:"object,omitempty"`
     	Pods              *PodsMetricStatusApplyConfiguration              `json:"pods,omitempty"`
     	Resource          *ResourceMetricStatusApplyConfiguration          `json:"resource,omitempty"`
    @@ -33,7 +33,7 @@ type MetricStatusApplyConfiguration struct {
     	External          *ExternalMetricStatusApplyConfiguration          `json:"external,omitempty"`
     }
     
    -// MetricStatusApplyConfiguration constructs an declarative configuration of the MetricStatus type for use with
    +// MetricStatusApplyConfiguration constructs a declarative configuration of the MetricStatus type for use with
     // apply.
     func MetricStatus() *MetricStatusApplyConfiguration {
     	return &MetricStatusApplyConfiguration{}
    @@ -42,7 +42,7 @@ func MetricStatus() *MetricStatusApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *MetricStatusApplyConfiguration) WithType(value v2beta2.MetricSourceType) *MetricStatusApplyConfiguration {
    +func (b *MetricStatusApplyConfiguration) WithType(value autoscalingv2beta2.MetricSourceType) *MetricStatusApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metrictarget.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metrictarget.go
    index fbf006a5a616..286856d82338 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metrictarget.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metrictarget.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v2beta2
     
     import (
    -	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
     	resource "k8s.io/apimachinery/pkg/api/resource"
     )
     
    -// MetricTargetApplyConfiguration represents an declarative configuration of the MetricTarget type for use
    +// MetricTargetApplyConfiguration represents a declarative configuration of the MetricTarget type for use
     // with apply.
     type MetricTargetApplyConfiguration struct {
    -	Type               *v2beta2.MetricTargetType `json:"type,omitempty"`
    -	Value              *resource.Quantity        `json:"value,omitempty"`
    -	AverageValue       *resource.Quantity        `json:"averageValue,omitempty"`
    -	AverageUtilization *int32                    `json:"averageUtilization,omitempty"`
    +	Type               *autoscalingv2beta2.MetricTargetType `json:"type,omitempty"`
    +	Value              *resource.Quantity                   `json:"value,omitempty"`
    +	AverageValue       *resource.Quantity                   `json:"averageValue,omitempty"`
    +	AverageUtilization *int32                               `json:"averageUtilization,omitempty"`
     }
     
    -// MetricTargetApplyConfiguration constructs an declarative configuration of the MetricTarget type for use with
    +// MetricTargetApplyConfiguration constructs a declarative configuration of the MetricTarget type for use with
     // apply.
     func MetricTarget() *MetricTargetApplyConfiguration {
     	return &MetricTargetApplyConfiguration{}
    @@ -41,7 +41,7 @@ func MetricTarget() *MetricTargetApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *MetricTargetApplyConfiguration) WithType(value v2beta2.MetricTargetType) *MetricTargetApplyConfiguration {
    +func (b *MetricTargetApplyConfiguration) WithType(value autoscalingv2beta2.MetricTargetType) *MetricTargetApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricvaluestatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricvaluestatus.go
    index 5796a0b4c17e..cc409fc283b9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricvaluestatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricvaluestatus.go
    @@ -22,7 +22,7 @@ import (
     	resource "k8s.io/apimachinery/pkg/api/resource"
     )
     
    -// MetricValueStatusApplyConfiguration represents an declarative configuration of the MetricValueStatus type for use
    +// MetricValueStatusApplyConfiguration represents a declarative configuration of the MetricValueStatus type for use
     // with apply.
     type MetricValueStatusApplyConfiguration struct {
     	Value              *resource.Quantity `json:"value,omitempty"`
    @@ -30,7 +30,7 @@ type MetricValueStatusApplyConfiguration struct {
     	AverageUtilization *int32             `json:"averageUtilization,omitempty"`
     }
     
    -// MetricValueStatusApplyConfiguration constructs an declarative configuration of the MetricValueStatus type for use with
    +// MetricValueStatusApplyConfiguration constructs a declarative configuration of the MetricValueStatus type for use with
     // apply.
     func MetricValueStatus() *MetricValueStatusApplyConfiguration {
     	return &MetricValueStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/objectmetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/objectmetricsource.go
    index eed31dab6190..17b492fa06ac 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/objectmetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/objectmetricsource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v2beta2
     
    -// ObjectMetricSourceApplyConfiguration represents an declarative configuration of the ObjectMetricSource type for use
    +// ObjectMetricSourceApplyConfiguration represents a declarative configuration of the ObjectMetricSource type for use
     // with apply.
     type ObjectMetricSourceApplyConfiguration struct {
     	DescribedObject *CrossVersionObjectReferenceApplyConfiguration `json:"describedObject,omitempty"`
    @@ -26,7 +26,7 @@ type ObjectMetricSourceApplyConfiguration struct {
     	Metric          *MetricIdentifierApplyConfiguration            `json:"metric,omitempty"`
     }
     
    -// ObjectMetricSourceApplyConfiguration constructs an declarative configuration of the ObjectMetricSource type for use with
    +// ObjectMetricSourceApplyConfiguration constructs a declarative configuration of the ObjectMetricSource type for use with
     // apply.
     func ObjectMetricSource() *ObjectMetricSourceApplyConfiguration {
     	return &ObjectMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/objectmetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/objectmetricstatus.go
    index 175e2120d602..e87417f2e7e4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/objectmetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/objectmetricstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v2beta2
     
    -// ObjectMetricStatusApplyConfiguration represents an declarative configuration of the ObjectMetricStatus type for use
    +// ObjectMetricStatusApplyConfiguration represents a declarative configuration of the ObjectMetricStatus type for use
     // with apply.
     type ObjectMetricStatusApplyConfiguration struct {
     	Metric          *MetricIdentifierApplyConfiguration            `json:"metric,omitempty"`
    @@ -26,7 +26,7 @@ type ObjectMetricStatusApplyConfiguration struct {
     	DescribedObject *CrossVersionObjectReferenceApplyConfiguration `json:"describedObject,omitempty"`
     }
     
    -// ObjectMetricStatusApplyConfiguration constructs an declarative configuration of the ObjectMetricStatus type for use with
    +// ObjectMetricStatusApplyConfiguration constructs a declarative configuration of the ObjectMetricStatus type for use with
     // apply.
     func ObjectMetricStatus() *ObjectMetricStatusApplyConfiguration {
     	return &ObjectMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/podsmetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/podsmetricsource.go
    index 0365880950f3..6ecbb1807198 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/podsmetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/podsmetricsource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v2beta2
     
    -// PodsMetricSourceApplyConfiguration represents an declarative configuration of the PodsMetricSource type for use
    +// PodsMetricSourceApplyConfiguration represents a declarative configuration of the PodsMetricSource type for use
     // with apply.
     type PodsMetricSourceApplyConfiguration struct {
     	Metric *MetricIdentifierApplyConfiguration `json:"metric,omitempty"`
     	Target *MetricTargetApplyConfiguration     `json:"target,omitempty"`
     }
     
    -// PodsMetricSourceApplyConfiguration constructs an declarative configuration of the PodsMetricSource type for use with
    +// PodsMetricSourceApplyConfiguration constructs a declarative configuration of the PodsMetricSource type for use with
     // apply.
     func PodsMetricSource() *PodsMetricSourceApplyConfiguration {
     	return &PodsMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/podsmetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/podsmetricstatus.go
    index e6f98be8c45b..cd1029726118 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/podsmetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/podsmetricstatus.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v2beta2
     
    -// PodsMetricStatusApplyConfiguration represents an declarative configuration of the PodsMetricStatus type for use
    +// PodsMetricStatusApplyConfiguration represents a declarative configuration of the PodsMetricStatus type for use
     // with apply.
     type PodsMetricStatusApplyConfiguration struct {
     	Metric  *MetricIdentifierApplyConfiguration  `json:"metric,omitempty"`
     	Current *MetricValueStatusApplyConfiguration `json:"current,omitempty"`
     }
     
    -// PodsMetricStatusApplyConfiguration constructs an declarative configuration of the PodsMetricStatus type for use with
    +// PodsMetricStatusApplyConfiguration constructs a declarative configuration of the PodsMetricStatus type for use with
     // apply.
     func PodsMetricStatus() *PodsMetricStatusApplyConfiguration {
     	return &PodsMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/resourcemetricsource.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/resourcemetricsource.go
    index cc8118d5e322..c482d75f4b82 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/resourcemetricsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/resourcemetricsource.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// ResourceMetricSourceApplyConfiguration represents an declarative configuration of the ResourceMetricSource type for use
    +// ResourceMetricSourceApplyConfiguration represents a declarative configuration of the ResourceMetricSource type for use
     // with apply.
     type ResourceMetricSourceApplyConfiguration struct {
     	Name   *v1.ResourceName                `json:"name,omitempty"`
     	Target *MetricTargetApplyConfiguration `json:"target,omitempty"`
     }
     
    -// ResourceMetricSourceApplyConfiguration constructs an declarative configuration of the ResourceMetricSource type for use with
    +// ResourceMetricSourceApplyConfiguration constructs a declarative configuration of the ResourceMetricSource type for use with
     // apply.
     func ResourceMetricSource() *ResourceMetricSourceApplyConfiguration {
     	return &ResourceMetricSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/resourcemetricstatus.go b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/resourcemetricstatus.go
    index 0ab56be0f79d..eb13e90b7d3f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/resourcemetricstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/resourcemetricstatus.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// ResourceMetricStatusApplyConfiguration represents an declarative configuration of the ResourceMetricStatus type for use
    +// ResourceMetricStatusApplyConfiguration represents a declarative configuration of the ResourceMetricStatus type for use
     // with apply.
     type ResourceMetricStatusApplyConfiguration struct {
     	Name    *v1.ResourceName                     `json:"name,omitempty"`
     	Current *MetricValueStatusApplyConfiguration `json:"current,omitempty"`
     }
     
    -// ResourceMetricStatusApplyConfiguration constructs an declarative configuration of the ResourceMetricStatus type for use with
    +// ResourceMetricStatusApplyConfiguration constructs a declarative configuration of the ResourceMetricStatus type for use with
     // apply.
     func ResourceMetricStatus() *ResourceMetricStatusApplyConfiguration {
     	return &ResourceMetricStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjob.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjob.go
    index 5225a5a0798a..f96cba1c5c4b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjob.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjob.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apibatchv1 "k8s.io/api/batch/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	batchv1 "k8s.io/api/batch/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CronJobApplyConfiguration represents an declarative configuration of the CronJob type for use
    +// CronJobApplyConfiguration represents a declarative configuration of the CronJob type for use
     // with apply.
     type CronJobApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *CronJobSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *CronJobStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *CronJobSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *CronJobStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// CronJob constructs an declarative configuration of the CronJob type for use with
    +// CronJob constructs a declarative configuration of the CronJob type for use with
     // apply.
     func CronJob(name, namespace string) *CronJobApplyConfiguration {
     	b := &CronJobApplyConfiguration{}
    @@ -58,18 +58,18 @@ func CronJob(name, namespace string) *CronJobApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractCronJob(cronJob *apibatchv1.CronJob, fieldManager string) (*CronJobApplyConfiguration, error) {
    +func ExtractCronJob(cronJob *batchv1.CronJob, fieldManager string) (*CronJobApplyConfiguration, error) {
     	return extractCronJob(cronJob, fieldManager, "")
     }
     
     // ExtractCronJobStatus is the same as ExtractCronJob except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractCronJobStatus(cronJob *apibatchv1.CronJob, fieldManager string) (*CronJobApplyConfiguration, error) {
    +func ExtractCronJobStatus(cronJob *batchv1.CronJob, fieldManager string) (*CronJobApplyConfiguration, error) {
     	return extractCronJob(cronJob, fieldManager, "status")
     }
     
    -func extractCronJob(cronJob *apibatchv1.CronJob, fieldManager string, subresource string) (*CronJobApplyConfiguration, error) {
    +func extractCronJob(cronJob *batchv1.CronJob, fieldManager string, subresource string) (*CronJobApplyConfiguration, error) {
     	b := &CronJobApplyConfiguration{}
     	err := managedfields.ExtractInto(cronJob, internal.Parser().Type("io.k8s.api.batch.v1.CronJob"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractCronJob(cronJob *apibatchv1.CronJob, fieldManager string, subresourc
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithKind(value string) *CronJobApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *CronJobApplyConfiguration) WithKind(value string) *CronJobApplyConfigur
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithAPIVersion(value string) *CronJobApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *CronJobApplyConfiguration) WithAPIVersion(value string) *CronJobApplyCo
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithName(value string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *CronJobApplyConfiguration) WithName(value string) *CronJobApplyConfigur
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithGenerateName(value string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *CronJobApplyConfiguration) WithGenerateName(value string) *CronJobApply
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithNamespace(value string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *CronJobApplyConfiguration) WithNamespace(value string) *CronJobApplyCon
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithUID(value types.UID) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *CronJobApplyConfiguration) WithUID(value types.UID) *CronJobApplyConfig
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithResourceVersion(value string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *CronJobApplyConfiguration) WithResourceVersion(value string) *CronJobAp
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithGeneration(value int64) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *CronJobApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CronJobApplyConfiguration {
    +func (b *CronJobApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *CronJobApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CronJobApplyConfiguration {
    +func (b *CronJobApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *CronJobApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Cr
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *CronJobApplyConfiguration) WithDeletionGracePeriodSeconds(value int64)
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CronJobApplyConfiguration) WithLabels(entries map[string]string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *CronJobApplyConfiguration) WithLabels(entries map[string]string) *CronJ
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CronJobApplyConfiguration) WithAnnotations(entries map[string]string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *CronJobApplyConfiguration) WithAnnotations(entries map[string]string) *
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *CronJobApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *CronJobApplyConfiguration {
    +func (b *CronJobApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *CronJobApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     func (b *CronJobApplyConfiguration) WithFinalizers(values ...string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *CronJobApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *CronJobApplyConfiguration) WithStatus(value *CronJobStatusApplyConfigur
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CronJobApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjobspec.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjobspec.go
    index 22a34dcb6186..f53d140d3bdb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjobspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjobspec.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/batch/v1"
    +	batchv1 "k8s.io/api/batch/v1"
     )
     
    -// CronJobSpecApplyConfiguration represents an declarative configuration of the CronJobSpec type for use
    +// CronJobSpecApplyConfiguration represents a declarative configuration of the CronJobSpec type for use
     // with apply.
     type CronJobSpecApplyConfiguration struct {
     	Schedule                   *string                            `json:"schedule,omitempty"`
     	TimeZone                   *string                            `json:"timeZone,omitempty"`
     	StartingDeadlineSeconds    *int64                             `json:"startingDeadlineSeconds,omitempty"`
    -	ConcurrencyPolicy          *v1.ConcurrencyPolicy              `json:"concurrencyPolicy,omitempty"`
    +	ConcurrencyPolicy          *batchv1.ConcurrencyPolicy         `json:"concurrencyPolicy,omitempty"`
     	Suspend                    *bool                              `json:"suspend,omitempty"`
     	JobTemplate                *JobTemplateSpecApplyConfiguration `json:"jobTemplate,omitempty"`
     	SuccessfulJobsHistoryLimit *int32                             `json:"successfulJobsHistoryLimit,omitempty"`
     	FailedJobsHistoryLimit     *int32                             `json:"failedJobsHistoryLimit,omitempty"`
     }
     
    -// CronJobSpecApplyConfiguration constructs an declarative configuration of the CronJobSpec type for use with
    +// CronJobSpecApplyConfiguration constructs a declarative configuration of the CronJobSpec type for use with
     // apply.
     func CronJobSpec() *CronJobSpecApplyConfiguration {
     	return &CronJobSpecApplyConfiguration{}
    @@ -68,7 +68,7 @@ func (b *CronJobSpecApplyConfiguration) WithStartingDeadlineSeconds(value int64)
     // WithConcurrencyPolicy sets the ConcurrencyPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ConcurrencyPolicy field is set to the value of the last call.
    -func (b *CronJobSpecApplyConfiguration) WithConcurrencyPolicy(value v1.ConcurrencyPolicy) *CronJobSpecApplyConfiguration {
    +func (b *CronJobSpecApplyConfiguration) WithConcurrencyPolicy(value batchv1.ConcurrencyPolicy) *CronJobSpecApplyConfiguration {
     	b.ConcurrencyPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjobstatus.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjobstatus.go
    index b7cc2bdfb570..d29d9e8922fa 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjobstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjobstatus.go
    @@ -20,18 +20,18 @@ package v1
     
     import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	v1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// CronJobStatusApplyConfiguration represents an declarative configuration of the CronJobStatus type for use
    +// CronJobStatusApplyConfiguration represents a declarative configuration of the CronJobStatus type for use
     // with apply.
     type CronJobStatusApplyConfiguration struct {
    -	Active             []v1.ObjectReferenceApplyConfiguration `json:"active,omitempty"`
    -	LastScheduleTime   *metav1.Time                           `json:"lastScheduleTime,omitempty"`
    -	LastSuccessfulTime *metav1.Time                           `json:"lastSuccessfulTime,omitempty"`
    +	Active             []corev1.ObjectReferenceApplyConfiguration `json:"active,omitempty"`
    +	LastScheduleTime   *metav1.Time                               `json:"lastScheduleTime,omitempty"`
    +	LastSuccessfulTime *metav1.Time                               `json:"lastSuccessfulTime,omitempty"`
     }
     
    -// CronJobStatusApplyConfiguration constructs an declarative configuration of the CronJobStatus type for use with
    +// CronJobStatusApplyConfiguration constructs a declarative configuration of the CronJobStatus type for use with
     // apply.
     func CronJobStatus() *CronJobStatusApplyConfiguration {
     	return &CronJobStatusApplyConfiguration{}
    @@ -40,7 +40,7 @@ func CronJobStatus() *CronJobStatusApplyConfiguration {
     // WithActive adds the given value to the Active field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Active field.
    -func (b *CronJobStatusApplyConfiguration) WithActive(values ...*v1.ObjectReferenceApplyConfiguration) *CronJobStatusApplyConfiguration {
    +func (b *CronJobStatusApplyConfiguration) WithActive(values ...*corev1.ObjectReferenceApplyConfiguration) *CronJobStatusApplyConfiguration {
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithActive")
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/job.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/job.go
    index fb10ba3968ab..e508f1441542 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/job.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/job.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apibatchv1 "k8s.io/api/batch/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	batchv1 "k8s.io/api/batch/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// JobApplyConfiguration represents an declarative configuration of the Job type for use
    +// JobApplyConfiguration represents a declarative configuration of the Job type for use
     // with apply.
     type JobApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *JobSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *JobStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *JobSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *JobStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Job constructs an declarative configuration of the Job type for use with
    +// Job constructs a declarative configuration of the Job type for use with
     // apply.
     func Job(name, namespace string) *JobApplyConfiguration {
     	b := &JobApplyConfiguration{}
    @@ -58,18 +58,18 @@ func Job(name, namespace string) *JobApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractJob(job *apibatchv1.Job, fieldManager string) (*JobApplyConfiguration, error) {
    +func ExtractJob(job *batchv1.Job, fieldManager string) (*JobApplyConfiguration, error) {
     	return extractJob(job, fieldManager, "")
     }
     
     // ExtractJobStatus is the same as ExtractJob except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractJobStatus(job *apibatchv1.Job, fieldManager string) (*JobApplyConfiguration, error) {
    +func ExtractJobStatus(job *batchv1.Job, fieldManager string) (*JobApplyConfiguration, error) {
     	return extractJob(job, fieldManager, "status")
     }
     
    -func extractJob(job *apibatchv1.Job, fieldManager string, subresource string) (*JobApplyConfiguration, error) {
    +func extractJob(job *batchv1.Job, fieldManager string, subresource string) (*JobApplyConfiguration, error) {
     	b := &JobApplyConfiguration{}
     	err := managedfields.ExtractInto(job, internal.Parser().Type("io.k8s.api.batch.v1.Job"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractJob(job *apibatchv1.Job, fieldManager string, subresource string) (*
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *JobApplyConfiguration) WithKind(value string) *JobApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *JobApplyConfiguration) WithKind(value string) *JobApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *JobApplyConfiguration) WithAPIVersion(value string) *JobApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *JobApplyConfiguration) WithAPIVersion(value string) *JobApplyConfigurat
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *JobApplyConfiguration) WithName(value string) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *JobApplyConfiguration) WithName(value string) *JobApplyConfiguration {
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *JobApplyConfiguration) WithGenerateName(value string) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *JobApplyConfiguration) WithGenerateName(value string) *JobApplyConfigur
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *JobApplyConfiguration) WithNamespace(value string) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *JobApplyConfiguration) WithNamespace(value string) *JobApplyConfigurati
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *JobApplyConfiguration) WithUID(value types.UID) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *JobApplyConfiguration) WithUID(value types.UID) *JobApplyConfiguration
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *JobApplyConfiguration) WithResourceVersion(value string) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *JobApplyConfiguration) WithResourceVersion(value string) *JobApplyConfi
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *JobApplyConfiguration) WithGeneration(value int64) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *JobApplyConfiguration) WithCreationTimestamp(value metav1.Time) *JobApplyConfiguration {
    +func (b *JobApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *JobApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *JobApplyConfiguration {
    +func (b *JobApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *JobApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *JobApp
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *JobApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *JobApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *Job
     // overwriting an existing map entries in Labels field with the same key.
     func (b *JobApplyConfiguration) WithLabels(entries map[string]string) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *JobApplyConfiguration) WithLabels(entries map[string]string) *JobApplyC
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *JobApplyConfiguration) WithAnnotations(entries map[string]string) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *JobApplyConfiguration) WithAnnotations(entries map[string]string) *JobA
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *JobApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *JobApplyConfiguration {
    +func (b *JobApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *JobApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReference
     func (b *JobApplyConfiguration) WithFinalizers(values ...string) *JobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *JobApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *JobApplyConfiguration) WithStatus(value *JobStatusApplyConfiguration) *
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *JobApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobcondition.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobcondition.go
    index 388ca7a1c08e..fb3c65aba611 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobcondition.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/batch/v1"
    +	batchv1 "k8s.io/api/batch/v1"
     	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// JobConditionApplyConfiguration represents an declarative configuration of the JobCondition type for use
    +// JobConditionApplyConfiguration represents a declarative configuration of the JobCondition type for use
     // with apply.
     type JobConditionApplyConfiguration struct {
    -	Type               *v1.JobConditionType    `json:"type,omitempty"`
    -	Status             *corev1.ConditionStatus `json:"status,omitempty"`
    -	LastProbeTime      *metav1.Time            `json:"lastProbeTime,omitempty"`
    -	LastTransitionTime *metav1.Time            `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                 `json:"reason,omitempty"`
    -	Message            *string                 `json:"message,omitempty"`
    +	Type               *batchv1.JobConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus   `json:"status,omitempty"`
    +	LastProbeTime      *metav1.Time              `json:"lastProbeTime,omitempty"`
    +	LastTransitionTime *metav1.Time              `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                   `json:"reason,omitempty"`
    +	Message            *string                   `json:"message,omitempty"`
     }
     
    -// JobConditionApplyConfiguration constructs an declarative configuration of the JobCondition type for use with
    +// JobConditionApplyConfiguration constructs a declarative configuration of the JobCondition type for use with
     // apply.
     func JobCondition() *JobConditionApplyConfiguration {
     	return &JobConditionApplyConfiguration{}
    @@ -44,7 +44,7 @@ func JobCondition() *JobConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *JobConditionApplyConfiguration) WithType(value v1.JobConditionType) *JobConditionApplyConfiguration {
    +func (b *JobConditionApplyConfiguration) WithType(value batchv1.JobConditionType) *JobConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobspec.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobspec.go
    index 3d46a3ecf9b1..2104fe113d34 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobspec.go
    @@ -24,13 +24,14 @@ import (
     	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// JobSpecApplyConfiguration represents an declarative configuration of the JobSpec type for use
    +// JobSpecApplyConfiguration represents a declarative configuration of the JobSpec type for use
     // with apply.
     type JobSpecApplyConfiguration struct {
     	Parallelism             *int32                                    `json:"parallelism,omitempty"`
     	Completions             *int32                                    `json:"completions,omitempty"`
     	ActiveDeadlineSeconds   *int64                                    `json:"activeDeadlineSeconds,omitempty"`
     	PodFailurePolicy        *PodFailurePolicyApplyConfiguration       `json:"podFailurePolicy,omitempty"`
    +	SuccessPolicy           *SuccessPolicyApplyConfiguration          `json:"successPolicy,omitempty"`
     	BackoffLimit            *int32                                    `json:"backoffLimit,omitempty"`
     	BackoffLimitPerIndex    *int32                                    `json:"backoffLimitPerIndex,omitempty"`
     	MaxFailedIndexes        *int32                                    `json:"maxFailedIndexes,omitempty"`
    @@ -41,9 +42,10 @@ type JobSpecApplyConfiguration struct {
     	CompletionMode          *batchv1.CompletionMode                   `json:"completionMode,omitempty"`
     	Suspend                 *bool                                     `json:"suspend,omitempty"`
     	PodReplacementPolicy    *batchv1.PodReplacementPolicy             `json:"podReplacementPolicy,omitempty"`
    +	ManagedBy               *string                                   `json:"managedBy,omitempty"`
     }
     
    -// JobSpecApplyConfiguration constructs an declarative configuration of the JobSpec type for use with
    +// JobSpecApplyConfiguration constructs a declarative configuration of the JobSpec type for use with
     // apply.
     func JobSpec() *JobSpecApplyConfiguration {
     	return &JobSpecApplyConfiguration{}
    @@ -81,6 +83,14 @@ func (b *JobSpecApplyConfiguration) WithPodFailurePolicy(value *PodFailurePolicy
     	return b
     }
     
    +// WithSuccessPolicy sets the SuccessPolicy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the SuccessPolicy field is set to the value of the last call.
    +func (b *JobSpecApplyConfiguration) WithSuccessPolicy(value *SuccessPolicyApplyConfiguration) *JobSpecApplyConfiguration {
    +	b.SuccessPolicy = value
    +	return b
    +}
    +
     // WithBackoffLimit sets the BackoffLimit field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the BackoffLimit field is set to the value of the last call.
    @@ -160,3 +170,11 @@ func (b *JobSpecApplyConfiguration) WithPodReplacementPolicy(value batchv1.PodRe
     	b.PodReplacementPolicy = &value
     	return b
     }
    +
    +// WithManagedBy sets the ManagedBy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ManagedBy field is set to the value of the last call.
    +func (b *JobSpecApplyConfiguration) WithManagedBy(value string) *JobSpecApplyConfiguration {
    +	b.ManagedBy = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobstatus.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobstatus.go
    index e8e472f8f710..071a0153f54e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobstatus.go
    @@ -22,7 +22,7 @@ import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// JobStatusApplyConfiguration represents an declarative configuration of the JobStatus type for use
    +// JobStatusApplyConfiguration represents a declarative configuration of the JobStatus type for use
     // with apply.
     type JobStatusApplyConfiguration struct {
     	Conditions              []JobConditionApplyConfiguration           `json:"conditions,omitempty"`
    @@ -38,7 +38,7 @@ type JobStatusApplyConfiguration struct {
     	Ready                   *int32                                     `json:"ready,omitempty"`
     }
     
    -// JobStatusApplyConfiguration constructs an declarative configuration of the JobStatus type for use with
    +// JobStatusApplyConfiguration constructs a declarative configuration of the JobStatus type for use with
     // apply.
     func JobStatus() *JobStatusApplyConfiguration {
     	return &JobStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobtemplatespec.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobtemplatespec.go
    index b37a81568087..b9666b03db5f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobtemplatespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobtemplatespec.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// JobTemplateSpecApplyConfiguration represents an declarative configuration of the JobTemplateSpec type for use
    +// JobTemplateSpecApplyConfiguration represents a declarative configuration of the JobTemplateSpec type for use
     // with apply.
     type JobTemplateSpecApplyConfiguration struct {
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *JobSpecApplyConfiguration `json:"spec,omitempty"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *JobSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// JobTemplateSpecApplyConfiguration constructs an declarative configuration of the JobTemplateSpec type for use with
    +// JobTemplateSpecApplyConfiguration constructs a declarative configuration of the JobTemplateSpec type for use with
     // apply.
     func JobTemplateSpec() *JobTemplateSpecApplyConfiguration {
     	return &JobTemplateSpecApplyConfiguration{}
    @@ -42,7 +42,7 @@ func JobTemplateSpec() *JobTemplateSpecApplyConfiguration {
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithName(value string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -51,7 +51,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithName(value string) *JobTemplateS
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithGenerateName(value string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -60,7 +60,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithGenerateName(value string) *JobT
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithNamespace(value string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -69,7 +69,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithNamespace(value string) *JobTemp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithUID(value types.UID) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -78,7 +78,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithUID(value types.UID) *JobTemplat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithResourceVersion(value string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -87,25 +87,25 @@ func (b *JobTemplateSpecApplyConfiguration) WithResourceVersion(value string) *J
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithGeneration(value int64) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *JobTemplateSpecApplyConfiguration) WithCreationTimestamp(value metav1.Time) *JobTemplateSpecApplyConfiguration {
    +func (b *JobTemplateSpecApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *JobTemplateSpecApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *JobTemplateSpecApplyConfiguration {
    +func (b *JobTemplateSpecApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithDeletionTimestamp(value metav1.T
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -124,11 +124,11 @@ func (b *JobTemplateSpecApplyConfiguration) WithDeletionGracePeriodSeconds(value
     // overwriting an existing map entries in Labels field with the same key.
     func (b *JobTemplateSpecApplyConfiguration) WithLabels(entries map[string]string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -139,11 +139,11 @@ func (b *JobTemplateSpecApplyConfiguration) WithLabels(entries map[string]string
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *JobTemplateSpecApplyConfiguration) WithAnnotations(entries map[string]string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -151,13 +151,13 @@ func (b *JobTemplateSpecApplyConfiguration) WithAnnotations(entries map[string]s
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *JobTemplateSpecApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *JobTemplateSpecApplyConfiguration {
    +func (b *JobTemplateSpecApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -168,14 +168,14 @@ func (b *JobTemplateSpecApplyConfiguration) WithOwnerReferences(values ...*v1.Ow
     func (b *JobTemplateSpecApplyConfiguration) WithFinalizers(values ...string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *JobTemplateSpecApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -186,3 +186,9 @@ func (b *JobTemplateSpecApplyConfiguration) WithSpec(value *JobSpecApplyConfigur
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *JobTemplateSpecApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicy.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicy.go
    index 6da98386c9bc..05a68b3c94b6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicy.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// PodFailurePolicyApplyConfiguration represents an declarative configuration of the PodFailurePolicy type for use
    +// PodFailurePolicyApplyConfiguration represents a declarative configuration of the PodFailurePolicy type for use
     // with apply.
     type PodFailurePolicyApplyConfiguration struct {
     	Rules []PodFailurePolicyRuleApplyConfiguration `json:"rules,omitempty"`
     }
     
    -// PodFailurePolicyApplyConfiguration constructs an declarative configuration of the PodFailurePolicy type for use with
    +// PodFailurePolicyApplyConfiguration constructs a declarative configuration of the PodFailurePolicy type for use with
     // apply.
     func PodFailurePolicy() *PodFailurePolicyApplyConfiguration {
     	return &PodFailurePolicyApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonexitcodesrequirement.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonexitcodesrequirement.go
    index 65f6251810e7..aa4dfc4c1423 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonexitcodesrequirement.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonexitcodesrequirement.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/batch/v1"
    +	batchv1 "k8s.io/api/batch/v1"
     )
     
    -// PodFailurePolicyOnExitCodesRequirementApplyConfiguration represents an declarative configuration of the PodFailurePolicyOnExitCodesRequirement type for use
    +// PodFailurePolicyOnExitCodesRequirementApplyConfiguration represents a declarative configuration of the PodFailurePolicyOnExitCodesRequirement type for use
     // with apply.
     type PodFailurePolicyOnExitCodesRequirementApplyConfiguration struct {
    -	ContainerName *string                                 `json:"containerName,omitempty"`
    -	Operator      *v1.PodFailurePolicyOnExitCodesOperator `json:"operator,omitempty"`
    -	Values        []int32                                 `json:"values,omitempty"`
    +	ContainerName *string                                      `json:"containerName,omitempty"`
    +	Operator      *batchv1.PodFailurePolicyOnExitCodesOperator `json:"operator,omitempty"`
    +	Values        []int32                                      `json:"values,omitempty"`
     }
     
    -// PodFailurePolicyOnExitCodesRequirementApplyConfiguration constructs an declarative configuration of the PodFailurePolicyOnExitCodesRequirement type for use with
    +// PodFailurePolicyOnExitCodesRequirementApplyConfiguration constructs a declarative configuration of the PodFailurePolicyOnExitCodesRequirement type for use with
     // apply.
     func PodFailurePolicyOnExitCodesRequirement() *PodFailurePolicyOnExitCodesRequirementApplyConfiguration {
     	return &PodFailurePolicyOnExitCodesRequirementApplyConfiguration{}
    @@ -47,7 +47,7 @@ func (b *PodFailurePolicyOnExitCodesRequirementApplyConfiguration) WithContainer
     // WithOperator sets the Operator field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Operator field is set to the value of the last call.
    -func (b *PodFailurePolicyOnExitCodesRequirementApplyConfiguration) WithOperator(value v1.PodFailurePolicyOnExitCodesOperator) *PodFailurePolicyOnExitCodesRequirementApplyConfiguration {
    +func (b *PodFailurePolicyOnExitCodesRequirementApplyConfiguration) WithOperator(value batchv1.PodFailurePolicyOnExitCodesOperator) *PodFailurePolicyOnExitCodesRequirementApplyConfiguration {
     	b.Operator = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonpodconditionspattern.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonpodconditionspattern.go
    index da1556ff8bf3..6459a6e59433 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonpodconditionspattern.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonpodconditionspattern.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// PodFailurePolicyOnPodConditionsPatternApplyConfiguration represents an declarative configuration of the PodFailurePolicyOnPodConditionsPattern type for use
    +// PodFailurePolicyOnPodConditionsPatternApplyConfiguration represents a declarative configuration of the PodFailurePolicyOnPodConditionsPattern type for use
     // with apply.
     type PodFailurePolicyOnPodConditionsPatternApplyConfiguration struct {
    -	Type   *v1.PodConditionType `json:"type,omitempty"`
    -	Status *v1.ConditionStatus  `json:"status,omitempty"`
    +	Type   *corev1.PodConditionType `json:"type,omitempty"`
    +	Status *corev1.ConditionStatus  `json:"status,omitempty"`
     }
     
    -// PodFailurePolicyOnPodConditionsPatternApplyConfiguration constructs an declarative configuration of the PodFailurePolicyOnPodConditionsPattern type for use with
    +// PodFailurePolicyOnPodConditionsPatternApplyConfiguration constructs a declarative configuration of the PodFailurePolicyOnPodConditionsPattern type for use with
     // apply.
     func PodFailurePolicyOnPodConditionsPattern() *PodFailurePolicyOnPodConditionsPatternApplyConfiguration {
     	return &PodFailurePolicyOnPodConditionsPatternApplyConfiguration{}
    @@ -38,7 +38,7 @@ func PodFailurePolicyOnPodConditionsPattern() *PodFailurePolicyOnPodConditionsPa
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PodFailurePolicyOnPodConditionsPatternApplyConfiguration) WithType(value v1.PodConditionType) *PodFailurePolicyOnPodConditionsPatternApplyConfiguration {
    +func (b *PodFailurePolicyOnPodConditionsPatternApplyConfiguration) WithType(value corev1.PodConditionType) *PodFailurePolicyOnPodConditionsPatternApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -46,7 +46,7 @@ func (b *PodFailurePolicyOnPodConditionsPatternApplyConfiguration) WithType(valu
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *PodFailurePolicyOnPodConditionsPatternApplyConfiguration) WithStatus(value v1.ConditionStatus) *PodFailurePolicyOnPodConditionsPatternApplyConfiguration {
    +func (b *PodFailurePolicyOnPodConditionsPatternApplyConfiguration) WithStatus(value corev1.ConditionStatus) *PodFailurePolicyOnPodConditionsPatternApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyrule.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyrule.go
    index d435243531f9..847ec7c9548b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyrule.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/batch/v1"
    +	batchv1 "k8s.io/api/batch/v1"
     )
     
    -// PodFailurePolicyRuleApplyConfiguration represents an declarative configuration of the PodFailurePolicyRule type for use
    +// PodFailurePolicyRuleApplyConfiguration represents a declarative configuration of the PodFailurePolicyRule type for use
     // with apply.
     type PodFailurePolicyRuleApplyConfiguration struct {
    -	Action          *v1.PodFailurePolicyAction                                 `json:"action,omitempty"`
    +	Action          *batchv1.PodFailurePolicyAction                            `json:"action,omitempty"`
     	OnExitCodes     *PodFailurePolicyOnExitCodesRequirementApplyConfiguration  `json:"onExitCodes,omitempty"`
     	OnPodConditions []PodFailurePolicyOnPodConditionsPatternApplyConfiguration `json:"onPodConditions,omitempty"`
     }
     
    -// PodFailurePolicyRuleApplyConfiguration constructs an declarative configuration of the PodFailurePolicyRule type for use with
    +// PodFailurePolicyRuleApplyConfiguration constructs a declarative configuration of the PodFailurePolicyRule type for use with
     // apply.
     func PodFailurePolicyRule() *PodFailurePolicyRuleApplyConfiguration {
     	return &PodFailurePolicyRuleApplyConfiguration{}
    @@ -39,7 +39,7 @@ func PodFailurePolicyRule() *PodFailurePolicyRuleApplyConfiguration {
     // WithAction sets the Action field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Action field is set to the value of the last call.
    -func (b *PodFailurePolicyRuleApplyConfiguration) WithAction(value v1.PodFailurePolicyAction) *PodFailurePolicyRuleApplyConfiguration {
    +func (b *PodFailurePolicyRuleApplyConfiguration) WithAction(value batchv1.PodFailurePolicyAction) *PodFailurePolicyRuleApplyConfiguration {
     	b.Action = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/successpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/successpolicy.go
    new file mode 100644
    index 000000000000..a3f4f39e2eae
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/successpolicy.go
    @@ -0,0 +1,44 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// SuccessPolicyApplyConfiguration represents a declarative configuration of the SuccessPolicy type for use
    +// with apply.
    +type SuccessPolicyApplyConfiguration struct {
    +	Rules []SuccessPolicyRuleApplyConfiguration `json:"rules,omitempty"`
    +}
    +
    +// SuccessPolicyApplyConfiguration constructs a declarative configuration of the SuccessPolicy type for use with
    +// apply.
    +func SuccessPolicy() *SuccessPolicyApplyConfiguration {
    +	return &SuccessPolicyApplyConfiguration{}
    +}
    +
    +// WithRules adds the given value to the Rules field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Rules field.
    +func (b *SuccessPolicyApplyConfiguration) WithRules(values ...*SuccessPolicyRuleApplyConfiguration) *SuccessPolicyApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithRules")
    +		}
    +		b.Rules = append(b.Rules, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/successpolicyrule.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/successpolicyrule.go
    new file mode 100644
    index 000000000000..2b5e3d91fe62
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/successpolicyrule.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// SuccessPolicyRuleApplyConfiguration represents a declarative configuration of the SuccessPolicyRule type for use
    +// with apply.
    +type SuccessPolicyRuleApplyConfiguration struct {
    +	SucceededIndexes *string `json:"succeededIndexes,omitempty"`
    +	SucceededCount   *int32  `json:"succeededCount,omitempty"`
    +}
    +
    +// SuccessPolicyRuleApplyConfiguration constructs a declarative configuration of the SuccessPolicyRule type for use with
    +// apply.
    +func SuccessPolicyRule() *SuccessPolicyRuleApplyConfiguration {
    +	return &SuccessPolicyRuleApplyConfiguration{}
    +}
    +
    +// WithSucceededIndexes sets the SucceededIndexes field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the SucceededIndexes field is set to the value of the last call.
    +func (b *SuccessPolicyRuleApplyConfiguration) WithSucceededIndexes(value string) *SuccessPolicyRuleApplyConfiguration {
    +	b.SucceededIndexes = &value
    +	return b
    +}
    +
    +// WithSucceededCount sets the SucceededCount field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the SucceededCount field is set to the value of the last call.
    +func (b *SuccessPolicyRuleApplyConfiguration) WithSucceededCount(value int32) *SuccessPolicyRuleApplyConfiguration {
    +	b.SucceededCount = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/uncountedterminatedpods.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/uncountedterminatedpods.go
    index 1409303fff3a..ff6b57b86cbb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1/uncountedterminatedpods.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1/uncountedterminatedpods.go
    @@ -22,14 +22,14 @@ import (
     	types "k8s.io/apimachinery/pkg/types"
     )
     
    -// UncountedTerminatedPodsApplyConfiguration represents an declarative configuration of the UncountedTerminatedPods type for use
    +// UncountedTerminatedPodsApplyConfiguration represents a declarative configuration of the UncountedTerminatedPods type for use
     // with apply.
     type UncountedTerminatedPodsApplyConfiguration struct {
     	Succeeded []types.UID `json:"succeeded,omitempty"`
     	Failed    []types.UID `json:"failed,omitempty"`
     }
     
    -// UncountedTerminatedPodsApplyConfiguration constructs an declarative configuration of the UncountedTerminatedPods type for use with
    +// UncountedTerminatedPodsApplyConfiguration constructs a declarative configuration of the UncountedTerminatedPods type for use with
     // apply.
     func UncountedTerminatedPods() *UncountedTerminatedPodsApplyConfiguration {
     	return &UncountedTerminatedPodsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjob.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjob.go
    index 1d735a8407be..133ed36fa28e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjob.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjob.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CronJobApplyConfiguration represents an declarative configuration of the CronJob type for use
    +// CronJobApplyConfiguration represents a declarative configuration of the CronJob type for use
     // with apply.
     type CronJobApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type CronJobApplyConfiguration struct {
     	Status                           *CronJobStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// CronJob constructs an declarative configuration of the CronJob type for use with
    +// CronJob constructs a declarative configuration of the CronJob type for use with
     // apply.
     func CronJob(name, namespace string) *CronJobApplyConfiguration {
     	b := &CronJobApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractCronJob(cronJob *batchv1beta1.CronJob, fieldManager string, subresou
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithKind(value string) *CronJobApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *CronJobApplyConfiguration) WithKind(value string) *CronJobApplyConfigur
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithAPIVersion(value string) *CronJobApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *CronJobApplyConfiguration) WithAPIVersion(value string) *CronJobApplyCo
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithName(value string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *CronJobApplyConfiguration) WithName(value string) *CronJobApplyConfigur
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithGenerateName(value string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *CronJobApplyConfiguration) WithGenerateName(value string) *CronJobApply
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithNamespace(value string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *CronJobApplyConfiguration) WithNamespace(value string) *CronJobApplyCon
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithUID(value types.UID) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *CronJobApplyConfiguration) WithUID(value types.UID) *CronJobApplyConfig
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithResourceVersion(value string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *CronJobApplyConfiguration) WithResourceVersion(value string) *CronJobAp
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithGeneration(value int64) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *CronJobApplyConfiguration) WithGeneration(value int64) *CronJobApplyCon
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *CronJobApplyConfiguration) WithCreationTimestamp(value metav1.Time) *Cr
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *CronJobApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Cr
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CronJobApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *CronJobApplyConfiguration) WithDeletionGracePeriodSeconds(value int64)
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CronJobApplyConfiguration) WithLabels(entries map[string]string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *CronJobApplyConfiguration) WithLabels(entries map[string]string) *CronJ
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CronJobApplyConfiguration) WithAnnotations(entries map[string]string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *CronJobApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *CronJobApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     func (b *CronJobApplyConfiguration) WithFinalizers(values ...string) *CronJobApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *CronJobApplyConfiguration) WithStatus(value *CronJobStatusApplyConfigur
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CronJobApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjobspec.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjobspec.go
    index 68c0777de01b..30604ac7edb8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjobspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjobspec.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/batch/v1beta1"
    +	batchv1beta1 "k8s.io/api/batch/v1beta1"
     )
     
    -// CronJobSpecApplyConfiguration represents an declarative configuration of the CronJobSpec type for use
    +// CronJobSpecApplyConfiguration represents a declarative configuration of the CronJobSpec type for use
     // with apply.
     type CronJobSpecApplyConfiguration struct {
     	Schedule                   *string                            `json:"schedule,omitempty"`
     	TimeZone                   *string                            `json:"timeZone,omitempty"`
     	StartingDeadlineSeconds    *int64                             `json:"startingDeadlineSeconds,omitempty"`
    -	ConcurrencyPolicy          *v1beta1.ConcurrencyPolicy         `json:"concurrencyPolicy,omitempty"`
    +	ConcurrencyPolicy          *batchv1beta1.ConcurrencyPolicy    `json:"concurrencyPolicy,omitempty"`
     	Suspend                    *bool                              `json:"suspend,omitempty"`
     	JobTemplate                *JobTemplateSpecApplyConfiguration `json:"jobTemplate,omitempty"`
     	SuccessfulJobsHistoryLimit *int32                             `json:"successfulJobsHistoryLimit,omitempty"`
     	FailedJobsHistoryLimit     *int32                             `json:"failedJobsHistoryLimit,omitempty"`
     }
     
    -// CronJobSpecApplyConfiguration constructs an declarative configuration of the CronJobSpec type for use with
    +// CronJobSpecApplyConfiguration constructs a declarative configuration of the CronJobSpec type for use with
     // apply.
     func CronJobSpec() *CronJobSpecApplyConfiguration {
     	return &CronJobSpecApplyConfiguration{}
    @@ -68,7 +68,7 @@ func (b *CronJobSpecApplyConfiguration) WithStartingDeadlineSeconds(value int64)
     // WithConcurrencyPolicy sets the ConcurrencyPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ConcurrencyPolicy field is set to the value of the last call.
    -func (b *CronJobSpecApplyConfiguration) WithConcurrencyPolicy(value v1beta1.ConcurrencyPolicy) *CronJobSpecApplyConfiguration {
    +func (b *CronJobSpecApplyConfiguration) WithConcurrencyPolicy(value batchv1beta1.ConcurrencyPolicy) *CronJobSpecApplyConfiguration {
     	b.ConcurrencyPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjobstatus.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjobstatus.go
    index 8dca14f66303..335f9e0dce83 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjobstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjobstatus.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// CronJobStatusApplyConfiguration represents an declarative configuration of the CronJobStatus type for use
    +// CronJobStatusApplyConfiguration represents a declarative configuration of the CronJobStatus type for use
     // with apply.
     type CronJobStatusApplyConfiguration struct {
     	Active             []v1.ObjectReferenceApplyConfiguration `json:"active,omitempty"`
    @@ -31,7 +31,7 @@ type CronJobStatusApplyConfiguration struct {
     	LastSuccessfulTime *metav1.Time                           `json:"lastSuccessfulTime,omitempty"`
     }
     
    -// CronJobStatusApplyConfiguration constructs an declarative configuration of the CronJobStatus type for use with
    +// CronJobStatusApplyConfiguration constructs a declarative configuration of the CronJobStatus type for use with
     // apply.
     func CronJobStatus() *CronJobStatusApplyConfiguration {
     	return &CronJobStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/jobtemplatespec.go b/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/jobtemplatespec.go
    index f925d65a7e02..4106b8e55374 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/jobtemplatespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/jobtemplatespec.go
    @@ -25,14 +25,14 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// JobTemplateSpecApplyConfiguration represents an declarative configuration of the JobTemplateSpec type for use
    +// JobTemplateSpecApplyConfiguration represents a declarative configuration of the JobTemplateSpec type for use
     // with apply.
     type JobTemplateSpecApplyConfiguration struct {
     	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
     	Spec                             *batchv1.JobSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// JobTemplateSpecApplyConfiguration constructs an declarative configuration of the JobTemplateSpec type for use with
    +// JobTemplateSpecApplyConfiguration constructs a declarative configuration of the JobTemplateSpec type for use with
     // apply.
     func JobTemplateSpec() *JobTemplateSpecApplyConfiguration {
     	return &JobTemplateSpecApplyConfiguration{}
    @@ -43,7 +43,7 @@ func JobTemplateSpec() *JobTemplateSpecApplyConfiguration {
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithName(value string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -52,7 +52,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithName(value string) *JobTemplateS
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithGenerateName(value string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -61,7 +61,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithGenerateName(value string) *JobT
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithNamespace(value string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -70,7 +70,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithNamespace(value string) *JobTemp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithUID(value types.UID) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -79,7 +79,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithUID(value types.UID) *JobTemplat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithResourceVersion(value string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -88,7 +88,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithResourceVersion(value string) *J
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithGeneration(value int64) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -97,7 +97,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithGeneration(value int64) *JobTemp
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithCreationTimestamp(value metav1.Time) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -106,7 +106,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithCreationTimestamp(value metav1.T
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -115,7 +115,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithDeletionTimestamp(value metav1.T
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *JobTemplateSpecApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -125,11 +125,11 @@ func (b *JobTemplateSpecApplyConfiguration) WithDeletionGracePeriodSeconds(value
     // overwriting an existing map entries in Labels field with the same key.
     func (b *JobTemplateSpecApplyConfiguration) WithLabels(entries map[string]string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -140,11 +140,11 @@ func (b *JobTemplateSpecApplyConfiguration) WithLabels(entries map[string]string
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *JobTemplateSpecApplyConfiguration) WithAnnotations(entries map[string]string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -158,7 +158,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithOwnerReferences(values ...*v1.Ow
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -169,7 +169,7 @@ func (b *JobTemplateSpecApplyConfiguration) WithOwnerReferences(values ...*v1.Ow
     func (b *JobTemplateSpecApplyConfiguration) WithFinalizers(values ...string) *JobTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -187,3 +187,9 @@ func (b *JobTemplateSpecApplyConfiguration) WithSpec(value *batchv1.JobSpecApply
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *JobTemplateSpecApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequest.go b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequest.go
    index 3d02c0be808b..998e5723c8d4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequest.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequest.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apicertificatesv1 "k8s.io/api/certificates/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	certificatesv1 "k8s.io/api/certificates/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CertificateSigningRequestApplyConfiguration represents an declarative configuration of the CertificateSigningRequest type for use
    +// CertificateSigningRequestApplyConfiguration represents a declarative configuration of the CertificateSigningRequest type for use
     // with apply.
     type CertificateSigningRequestApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *CertificateSigningRequestSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *CertificateSigningRequestStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *CertificateSigningRequestSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *CertificateSigningRequestStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// CertificateSigningRequest constructs an declarative configuration of the CertificateSigningRequest type for use with
    +// CertificateSigningRequest constructs a declarative configuration of the CertificateSigningRequest type for use with
     // apply.
     func CertificateSigningRequest(name string) *CertificateSigningRequestApplyConfiguration {
     	b := &CertificateSigningRequestApplyConfiguration{}
    @@ -57,18 +57,18 @@ func CertificateSigningRequest(name string) *CertificateSigningRequestApplyConfi
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractCertificateSigningRequest(certificateSigningRequest *apicertificatesv1.CertificateSigningRequest, fieldManager string) (*CertificateSigningRequestApplyConfiguration, error) {
    +func ExtractCertificateSigningRequest(certificateSigningRequest *certificatesv1.CertificateSigningRequest, fieldManager string) (*CertificateSigningRequestApplyConfiguration, error) {
     	return extractCertificateSigningRequest(certificateSigningRequest, fieldManager, "")
     }
     
     // ExtractCertificateSigningRequestStatus is the same as ExtractCertificateSigningRequest except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractCertificateSigningRequestStatus(certificateSigningRequest *apicertificatesv1.CertificateSigningRequest, fieldManager string) (*CertificateSigningRequestApplyConfiguration, error) {
    +func ExtractCertificateSigningRequestStatus(certificateSigningRequest *certificatesv1.CertificateSigningRequest, fieldManager string) (*CertificateSigningRequestApplyConfiguration, error) {
     	return extractCertificateSigningRequest(certificateSigningRequest, fieldManager, "status")
     }
     
    -func extractCertificateSigningRequest(certificateSigningRequest *apicertificatesv1.CertificateSigningRequest, fieldManager string, subresource string) (*CertificateSigningRequestApplyConfiguration, error) {
    +func extractCertificateSigningRequest(certificateSigningRequest *certificatesv1.CertificateSigningRequest, fieldManager string, subresource string) (*CertificateSigningRequestApplyConfiguration, error) {
     	b := &CertificateSigningRequestApplyConfiguration{}
     	err := managedfields.ExtractInto(certificateSigningRequest, internal.Parser().Type("io.k8s.api.certificates.v1.CertificateSigningRequest"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractCertificateSigningRequest(certificateSigningRequest *apicertificates
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithKind(value string) *CertificateSigningRequestApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithKind(value string) *Ce
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithAPIVersion(value string) *CertificateSigningRequestApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithAPIVersion(value strin
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithName(value string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithName(value string) *Ce
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithGenerateName(value string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithGenerateName(value str
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithNamespace(value string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithNamespace(value string
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithUID(value types.UID) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithUID(value types.UID) *
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithResourceVersion(value string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,25 +147,25 @@ func (b *CertificateSigningRequestApplyConfiguration) WithResourceVersion(value
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithGeneration(value int64) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *CertificateSigningRequestApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CertificateSigningRequestApplyConfiguration {
    +func (b *CertificateSigningRequestApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *CertificateSigningRequestApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CertificateSigningRequestApplyConfiguration {
    +func (b *CertificateSigningRequestApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithDeletionTimestamp(valu
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *CertificateSigningRequestApplyConfiguration) WithDeletionGracePeriodSec
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CertificateSigningRequestApplyConfiguration) WithLabels(entries map[string]string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *CertificateSigningRequestApplyConfiguration) WithLabels(entries map[str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CertificateSigningRequestApplyConfiguration) WithAnnotations(entries map[string]string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -211,13 +211,13 @@ func (b *CertificateSigningRequestApplyConfiguration) WithAnnotations(entries ma
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *CertificateSigningRequestApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *CertificateSigningRequestApplyConfiguration {
    +func (b *CertificateSigningRequestApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,14 +228,14 @@ func (b *CertificateSigningRequestApplyConfiguration) WithOwnerReferences(values
     func (b *CertificateSigningRequestApplyConfiguration) WithFinalizers(values ...string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *CertificateSigningRequestApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -254,3 +254,9 @@ func (b *CertificateSigningRequestApplyConfiguration) WithStatus(value *Certific
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CertificateSigningRequestApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequestcondition.go b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequestcondition.go
    index 13d69cfcef2d..a6dedcb595e3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequestcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequestcondition.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/certificates/v1"
    +	certificatesv1 "k8s.io/api/certificates/v1"
     	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// CertificateSigningRequestConditionApplyConfiguration represents an declarative configuration of the CertificateSigningRequestCondition type for use
    +// CertificateSigningRequestConditionApplyConfiguration represents a declarative configuration of the CertificateSigningRequestCondition type for use
     // with apply.
     type CertificateSigningRequestConditionApplyConfiguration struct {
    -	Type               *v1.RequestConditionType `json:"type,omitempty"`
    -	Status             *corev1.ConditionStatus  `json:"status,omitempty"`
    -	Reason             *string                  `json:"reason,omitempty"`
    -	Message            *string                  `json:"message,omitempty"`
    -	LastUpdateTime     *metav1.Time             `json:"lastUpdateTime,omitempty"`
    -	LastTransitionTime *metav1.Time             `json:"lastTransitionTime,omitempty"`
    +	Type               *certificatesv1.RequestConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus              `json:"status,omitempty"`
    +	Reason             *string                              `json:"reason,omitempty"`
    +	Message            *string                              `json:"message,omitempty"`
    +	LastUpdateTime     *metav1.Time                         `json:"lastUpdateTime,omitempty"`
    +	LastTransitionTime *metav1.Time                         `json:"lastTransitionTime,omitempty"`
     }
     
    -// CertificateSigningRequestConditionApplyConfiguration constructs an declarative configuration of the CertificateSigningRequestCondition type for use with
    +// CertificateSigningRequestConditionApplyConfiguration constructs a declarative configuration of the CertificateSigningRequestCondition type for use with
     // apply.
     func CertificateSigningRequestCondition() *CertificateSigningRequestConditionApplyConfiguration {
     	return &CertificateSigningRequestConditionApplyConfiguration{}
    @@ -44,7 +44,7 @@ func CertificateSigningRequestCondition() *CertificateSigningRequestConditionApp
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *CertificateSigningRequestConditionApplyConfiguration) WithType(value v1.RequestConditionType) *CertificateSigningRequestConditionApplyConfiguration {
    +func (b *CertificateSigningRequestConditionApplyConfiguration) WithType(value certificatesv1.RequestConditionType) *CertificateSigningRequestConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequestspec.go b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequestspec.go
    index 81ca214a9dc6..82da53c9e195 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequestspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequestspec.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/certificates/v1"
    +	certificatesv1 "k8s.io/api/certificates/v1"
     )
     
    -// CertificateSigningRequestSpecApplyConfiguration represents an declarative configuration of the CertificateSigningRequestSpec type for use
    +// CertificateSigningRequestSpecApplyConfiguration represents a declarative configuration of the CertificateSigningRequestSpec type for use
     // with apply.
     type CertificateSigningRequestSpecApplyConfiguration struct {
    -	Request           []byte                   `json:"request,omitempty"`
    -	SignerName        *string                  `json:"signerName,omitempty"`
    -	ExpirationSeconds *int32                   `json:"expirationSeconds,omitempty"`
    -	Usages            []v1.KeyUsage            `json:"usages,omitempty"`
    -	Username          *string                  `json:"username,omitempty"`
    -	UID               *string                  `json:"uid,omitempty"`
    -	Groups            []string                 `json:"groups,omitempty"`
    -	Extra             map[string]v1.ExtraValue `json:"extra,omitempty"`
    +	Request           []byte                               `json:"request,omitempty"`
    +	SignerName        *string                              `json:"signerName,omitempty"`
    +	ExpirationSeconds *int32                               `json:"expirationSeconds,omitempty"`
    +	Usages            []certificatesv1.KeyUsage            `json:"usages,omitempty"`
    +	Username          *string                              `json:"username,omitempty"`
    +	UID               *string                              `json:"uid,omitempty"`
    +	Groups            []string                             `json:"groups,omitempty"`
    +	Extra             map[string]certificatesv1.ExtraValue `json:"extra,omitempty"`
     }
     
    -// CertificateSigningRequestSpecApplyConfiguration constructs an declarative configuration of the CertificateSigningRequestSpec type for use with
    +// CertificateSigningRequestSpecApplyConfiguration constructs a declarative configuration of the CertificateSigningRequestSpec type for use with
     // apply.
     func CertificateSigningRequestSpec() *CertificateSigningRequestSpecApplyConfiguration {
     	return &CertificateSigningRequestSpecApplyConfiguration{}
    @@ -70,7 +70,7 @@ func (b *CertificateSigningRequestSpecApplyConfiguration) WithExpirationSeconds(
     // WithUsages adds the given value to the Usages field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Usages field.
    -func (b *CertificateSigningRequestSpecApplyConfiguration) WithUsages(values ...v1.KeyUsage) *CertificateSigningRequestSpecApplyConfiguration {
    +func (b *CertificateSigningRequestSpecApplyConfiguration) WithUsages(values ...certificatesv1.KeyUsage) *CertificateSigningRequestSpecApplyConfiguration {
     	for i := range values {
     		b.Usages = append(b.Usages, values[i])
     	}
    @@ -107,9 +107,9 @@ func (b *CertificateSigningRequestSpecApplyConfiguration) WithGroups(values ...s
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, the entries provided by each call will be put on the Extra field,
     // overwriting an existing map entries in Extra field with the same key.
    -func (b *CertificateSigningRequestSpecApplyConfiguration) WithExtra(entries map[string]v1.ExtraValue) *CertificateSigningRequestSpecApplyConfiguration {
    +func (b *CertificateSigningRequestSpecApplyConfiguration) WithExtra(entries map[string]certificatesv1.ExtraValue) *CertificateSigningRequestSpecApplyConfiguration {
     	if b.Extra == nil && len(entries) > 0 {
    -		b.Extra = make(map[string]v1.ExtraValue, len(entries))
    +		b.Extra = make(map[string]certificatesv1.ExtraValue, len(entries))
     	}
     	for k, v := range entries {
     		b.Extra[k] = v
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequeststatus.go b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequeststatus.go
    index 59d59303310d..897f6d1e982c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequeststatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequeststatus.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// CertificateSigningRequestStatusApplyConfiguration represents an declarative configuration of the CertificateSigningRequestStatus type for use
    +// CertificateSigningRequestStatusApplyConfiguration represents a declarative configuration of the CertificateSigningRequestStatus type for use
     // with apply.
     type CertificateSigningRequestStatusApplyConfiguration struct {
     	Conditions  []CertificateSigningRequestConditionApplyConfiguration `json:"conditions,omitempty"`
     	Certificate []byte                                                 `json:"certificate,omitempty"`
     }
     
    -// CertificateSigningRequestStatusApplyConfiguration constructs an declarative configuration of the CertificateSigningRequestStatus type for use with
    +// CertificateSigningRequestStatusApplyConfiguration constructs a declarative configuration of the CertificateSigningRequestStatus type for use with
     // apply.
     func CertificateSigningRequestStatus() *CertificateSigningRequestStatusApplyConfiguration {
     	return &CertificateSigningRequestStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/clustertrustbundle.go b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/clustertrustbundle.go
    index 788d2a07dcb7..6ae6b269d25f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/clustertrustbundle.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/clustertrustbundle.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ClusterTrustBundleApplyConfiguration represents an declarative configuration of the ClusterTrustBundle type for use
    +// ClusterTrustBundleApplyConfiguration represents a declarative configuration of the ClusterTrustBundle type for use
     // with apply.
     type ClusterTrustBundleApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type ClusterTrustBundleApplyConfiguration struct {
     	Spec                             *ClusterTrustBundleSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// ClusterTrustBundle constructs an declarative configuration of the ClusterTrustBundle type for use with
    +// ClusterTrustBundle constructs a declarative configuration of the ClusterTrustBundle type for use with
     // apply.
     func ClusterTrustBundle(name string) *ClusterTrustBundleApplyConfiguration {
     	b := &ClusterTrustBundleApplyConfiguration{}
    @@ -84,7 +84,7 @@ func extractClusterTrustBundle(clusterTrustBundle *certificatesv1alpha1.ClusterT
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithKind(value string) *ClusterTrustBundleApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithKind(value string) *ClusterTr
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithAPIVersion(value string) *ClusterTrustBundleApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithAPIVersion(value string) *Clu
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithName(value string) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithName(value string) *ClusterTr
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithGenerateName(value string) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithGenerateName(value string) *C
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithNamespace(value string) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithNamespace(value string) *Clus
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithUID(value types.UID) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithUID(value types.UID) *Cluster
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithResourceVersion(value string) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,7 +146,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithResourceVersion(value string)
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithGeneration(value int64) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithGeneration(value int64) *Clus
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -164,7 +164,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithCreationTimestamp(value metav
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithDeletionTimestamp(value metav
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ClusterTrustBundleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *ClusterTrustBundleApplyConfiguration) WithDeletionGracePeriodSeconds(va
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ClusterTrustBundleApplyConfiguration) WithLabels(entries map[string]string) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *ClusterTrustBundleApplyConfiguration) WithLabels(entries map[string]str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ClusterTrustBundleApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,7 +216,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithOwnerReferences(values ...*v1
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,7 +227,7 @@ func (b *ClusterTrustBundleApplyConfiguration) WithOwnerReferences(values ...*v1
     func (b *ClusterTrustBundleApplyConfiguration) WithFinalizers(values ...string) *ClusterTrustBundleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -245,3 +245,9 @@ func (b *ClusterTrustBundleApplyConfiguration) WithSpec(value *ClusterTrustBundl
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ClusterTrustBundleApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/clustertrustbundlespec.go b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/clustertrustbundlespec.go
    index d1aea1d6dc3e..7bb36f7084df 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/clustertrustbundlespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/clustertrustbundlespec.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1alpha1
     
    -// ClusterTrustBundleSpecApplyConfiguration represents an declarative configuration of the ClusterTrustBundleSpec type for use
    +// ClusterTrustBundleSpecApplyConfiguration represents a declarative configuration of the ClusterTrustBundleSpec type for use
     // with apply.
     type ClusterTrustBundleSpecApplyConfiguration struct {
     	SignerName  *string `json:"signerName,omitempty"`
     	TrustBundle *string `json:"trustBundle,omitempty"`
     }
     
    -// ClusterTrustBundleSpecApplyConfiguration constructs an declarative configuration of the ClusterTrustBundleSpec type for use with
    +// ClusterTrustBundleSpecApplyConfiguration constructs a declarative configuration of the ClusterTrustBundleSpec type for use with
     // apply.
     func ClusterTrustBundleSpec() *ClusterTrustBundleSpecApplyConfiguration {
     	return &ClusterTrustBundleSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequest.go b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequest.go
    index 83a0edc18f4d..a1f57f268f67 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequest.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequest.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CertificateSigningRequestApplyConfiguration represents an declarative configuration of the CertificateSigningRequest type for use
    +// CertificateSigningRequestApplyConfiguration represents a declarative configuration of the CertificateSigningRequest type for use
     // with apply.
     type CertificateSigningRequestApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type CertificateSigningRequestApplyConfiguration struct {
     	Status                           *CertificateSigningRequestStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// CertificateSigningRequest constructs an declarative configuration of the CertificateSigningRequest type for use with
    +// CertificateSigningRequest constructs a declarative configuration of the CertificateSigningRequest type for use with
     // apply.
     func CertificateSigningRequest(name string) *CertificateSigningRequestApplyConfiguration {
     	b := &CertificateSigningRequestApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractCertificateSigningRequest(certificateSigningRequest *certificatesv1b
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithKind(value string) *CertificateSigningRequestApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithKind(value string) *Ce
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithAPIVersion(value string) *CertificateSigningRequestApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithAPIVersion(value strin
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithName(value string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithName(value string) *Ce
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithGenerateName(value string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithGenerateName(value str
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithNamespace(value string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithNamespace(value string
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithUID(value types.UID) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithUID(value types.UID) *
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithResourceVersion(value string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithResourceVersion(value
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithGeneration(value int64) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithGeneration(value int64
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithCreationTimestamp(valu
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithDeletionTimestamp(valu
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CertificateSigningRequestApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *CertificateSigningRequestApplyConfiguration) WithDeletionGracePeriodSec
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CertificateSigningRequestApplyConfiguration) WithLabels(entries map[string]string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *CertificateSigningRequestApplyConfiguration) WithLabels(entries map[str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CertificateSigningRequestApplyConfiguration) WithAnnotations(entries map[string]string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithOwnerReferences(values
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *CertificateSigningRequestApplyConfiguration) WithOwnerReferences(values
     func (b *CertificateSigningRequestApplyConfiguration) WithFinalizers(values ...string) *CertificateSigningRequestApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *CertificateSigningRequestApplyConfiguration) WithStatus(value *Certific
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CertificateSigningRequestApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequestcondition.go b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequestcondition.go
    index 2c32a3272c14..a845ec404796 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequestcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequestcondition.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/certificates/v1beta1"
    +	certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// CertificateSigningRequestConditionApplyConfiguration represents an declarative configuration of the CertificateSigningRequestCondition type for use
    +// CertificateSigningRequestConditionApplyConfiguration represents a declarative configuration of the CertificateSigningRequestCondition type for use
     // with apply.
     type CertificateSigningRequestConditionApplyConfiguration struct {
    -	Type               *v1beta1.RequestConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus           `json:"status,omitempty"`
    -	Reason             *string                       `json:"reason,omitempty"`
    -	Message            *string                       `json:"message,omitempty"`
    -	LastUpdateTime     *metav1.Time                  `json:"lastUpdateTime,omitempty"`
    -	LastTransitionTime *metav1.Time                  `json:"lastTransitionTime,omitempty"`
    +	Type               *certificatesv1beta1.RequestConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                       `json:"status,omitempty"`
    +	Reason             *string                                   `json:"reason,omitempty"`
    +	Message            *string                                   `json:"message,omitempty"`
    +	LastUpdateTime     *metav1.Time                              `json:"lastUpdateTime,omitempty"`
    +	LastTransitionTime *metav1.Time                              `json:"lastTransitionTime,omitempty"`
     }
     
    -// CertificateSigningRequestConditionApplyConfiguration constructs an declarative configuration of the CertificateSigningRequestCondition type for use with
    +// CertificateSigningRequestConditionApplyConfiguration constructs a declarative configuration of the CertificateSigningRequestCondition type for use with
     // apply.
     func CertificateSigningRequestCondition() *CertificateSigningRequestConditionApplyConfiguration {
     	return &CertificateSigningRequestConditionApplyConfiguration{}
    @@ -44,7 +44,7 @@ func CertificateSigningRequestCondition() *CertificateSigningRequestConditionApp
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *CertificateSigningRequestConditionApplyConfiguration) WithType(value v1beta1.RequestConditionType) *CertificateSigningRequestConditionApplyConfiguration {
    +func (b *CertificateSigningRequestConditionApplyConfiguration) WithType(value certificatesv1beta1.RequestConditionType) *CertificateSigningRequestConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequestspec.go b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequestspec.go
    index 9554b1f400a6..ee4016c76d94 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequestspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequestspec.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/certificates/v1beta1"
    +	certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
     )
     
    -// CertificateSigningRequestSpecApplyConfiguration represents an declarative configuration of the CertificateSigningRequestSpec type for use
    +// CertificateSigningRequestSpecApplyConfiguration represents a declarative configuration of the CertificateSigningRequestSpec type for use
     // with apply.
     type CertificateSigningRequestSpecApplyConfiguration struct {
    -	Request           []byte                        `json:"request,omitempty"`
    -	SignerName        *string                       `json:"signerName,omitempty"`
    -	ExpirationSeconds *int32                        `json:"expirationSeconds,omitempty"`
    -	Usages            []v1beta1.KeyUsage            `json:"usages,omitempty"`
    -	Username          *string                       `json:"username,omitempty"`
    -	UID               *string                       `json:"uid,omitempty"`
    -	Groups            []string                      `json:"groups,omitempty"`
    -	Extra             map[string]v1beta1.ExtraValue `json:"extra,omitempty"`
    +	Request           []byte                                    `json:"request,omitempty"`
    +	SignerName        *string                                   `json:"signerName,omitempty"`
    +	ExpirationSeconds *int32                                    `json:"expirationSeconds,omitempty"`
    +	Usages            []certificatesv1beta1.KeyUsage            `json:"usages,omitempty"`
    +	Username          *string                                   `json:"username,omitempty"`
    +	UID               *string                                   `json:"uid,omitempty"`
    +	Groups            []string                                  `json:"groups,omitempty"`
    +	Extra             map[string]certificatesv1beta1.ExtraValue `json:"extra,omitempty"`
     }
     
    -// CertificateSigningRequestSpecApplyConfiguration constructs an declarative configuration of the CertificateSigningRequestSpec type for use with
    +// CertificateSigningRequestSpecApplyConfiguration constructs a declarative configuration of the CertificateSigningRequestSpec type for use with
     // apply.
     func CertificateSigningRequestSpec() *CertificateSigningRequestSpecApplyConfiguration {
     	return &CertificateSigningRequestSpecApplyConfiguration{}
    @@ -70,7 +70,7 @@ func (b *CertificateSigningRequestSpecApplyConfiguration) WithExpirationSeconds(
     // WithUsages adds the given value to the Usages field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Usages field.
    -func (b *CertificateSigningRequestSpecApplyConfiguration) WithUsages(values ...v1beta1.KeyUsage) *CertificateSigningRequestSpecApplyConfiguration {
    +func (b *CertificateSigningRequestSpecApplyConfiguration) WithUsages(values ...certificatesv1beta1.KeyUsage) *CertificateSigningRequestSpecApplyConfiguration {
     	for i := range values {
     		b.Usages = append(b.Usages, values[i])
     	}
    @@ -107,9 +107,9 @@ func (b *CertificateSigningRequestSpecApplyConfiguration) WithGroups(values ...s
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, the entries provided by each call will be put on the Extra field,
     // overwriting an existing map entries in Extra field with the same key.
    -func (b *CertificateSigningRequestSpecApplyConfiguration) WithExtra(entries map[string]v1beta1.ExtraValue) *CertificateSigningRequestSpecApplyConfiguration {
    +func (b *CertificateSigningRequestSpecApplyConfiguration) WithExtra(entries map[string]certificatesv1beta1.ExtraValue) *CertificateSigningRequestSpecApplyConfiguration {
     	if b.Extra == nil && len(entries) > 0 {
    -		b.Extra = make(map[string]v1beta1.ExtraValue, len(entries))
    +		b.Extra = make(map[string]certificatesv1beta1.ExtraValue, len(entries))
     	}
     	for k, v := range entries {
     		b.Extra[k] = v
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequeststatus.go b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequeststatus.go
    index 9d8c5d4585c1..f82e8aed3bca 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequeststatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequeststatus.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// CertificateSigningRequestStatusApplyConfiguration represents an declarative configuration of the CertificateSigningRequestStatus type for use
    +// CertificateSigningRequestStatusApplyConfiguration represents a declarative configuration of the CertificateSigningRequestStatus type for use
     // with apply.
     type CertificateSigningRequestStatusApplyConfiguration struct {
     	Conditions  []CertificateSigningRequestConditionApplyConfiguration `json:"conditions,omitempty"`
     	Certificate []byte                                                 `json:"certificate,omitempty"`
     }
     
    -// CertificateSigningRequestStatusApplyConfiguration constructs an declarative configuration of the CertificateSigningRequestStatus type for use with
    +// CertificateSigningRequestStatusApplyConfiguration constructs a declarative configuration of the CertificateSigningRequestStatus type for use with
     // apply.
     func CertificateSigningRequestStatus() *CertificateSigningRequestStatusApplyConfiguration {
     	return &CertificateSigningRequestStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/coordination/v1/lease.go b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1/lease.go
    index 618f12fb21ae..2a69e773cd72 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/coordination/v1/lease.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1/lease.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apicoordinationv1 "k8s.io/api/coordination/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	coordinationv1 "k8s.io/api/coordination/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// LeaseApplyConfiguration represents an declarative configuration of the Lease type for use
    +// LeaseApplyConfiguration represents a declarative configuration of the Lease type for use
     // with apply.
     type LeaseApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *LeaseSpecApplyConfiguration `json:"spec,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *LeaseSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// Lease constructs an declarative configuration of the Lease type for use with
    +// Lease constructs a declarative configuration of the Lease type for use with
     // apply.
     func Lease(name, namespace string) *LeaseApplyConfiguration {
     	b := &LeaseApplyConfiguration{}
    @@ -57,18 +57,18 @@ func Lease(name, namespace string) *LeaseApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractLease(lease *apicoordinationv1.Lease, fieldManager string) (*LeaseApplyConfiguration, error) {
    +func ExtractLease(lease *coordinationv1.Lease, fieldManager string) (*LeaseApplyConfiguration, error) {
     	return extractLease(lease, fieldManager, "")
     }
     
     // ExtractLeaseStatus is the same as ExtractLease except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractLeaseStatus(lease *apicoordinationv1.Lease, fieldManager string) (*LeaseApplyConfiguration, error) {
    +func ExtractLeaseStatus(lease *coordinationv1.Lease, fieldManager string) (*LeaseApplyConfiguration, error) {
     	return extractLease(lease, fieldManager, "status")
     }
     
    -func extractLease(lease *apicoordinationv1.Lease, fieldManager string, subresource string) (*LeaseApplyConfiguration, error) {
    +func extractLease(lease *coordinationv1.Lease, fieldManager string, subresource string) (*LeaseApplyConfiguration, error) {
     	b := &LeaseApplyConfiguration{}
     	err := managedfields.ExtractInto(lease, internal.Parser().Type("io.k8s.api.coordination.v1.Lease"), fieldManager, b, subresource)
     	if err != nil {
    @@ -86,7 +86,7 @@ func extractLease(lease *apicoordinationv1.Lease, fieldManager string, subresour
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithKind(value string) *LeaseApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *LeaseApplyConfiguration) WithKind(value string) *LeaseApplyConfiguratio
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithAPIVersion(value string) *LeaseApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *LeaseApplyConfiguration) WithAPIVersion(value string) *LeaseApplyConfig
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithName(value string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *LeaseApplyConfiguration) WithName(value string) *LeaseApplyConfiguratio
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithGenerateName(value string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *LeaseApplyConfiguration) WithGenerateName(value string) *LeaseApplyConf
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithNamespace(value string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *LeaseApplyConfiguration) WithNamespace(value string) *LeaseApplyConfigu
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithUID(value types.UID) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *LeaseApplyConfiguration) WithUID(value types.UID) *LeaseApplyConfigurat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithResourceVersion(value string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,25 +148,25 @@ func (b *LeaseApplyConfiguration) WithResourceVersion(value string) *LeaseApplyC
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithGeneration(value int64) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *LeaseApplyConfiguration) WithCreationTimestamp(value metav1.Time) *LeaseApplyConfiguration {
    +func (b *LeaseApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *LeaseApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *LeaseApplyConfiguration {
    +func (b *LeaseApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *LeaseApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Leas
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *LeaseApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *L
     // overwriting an existing map entries in Labels field with the same key.
     func (b *LeaseApplyConfiguration) WithLabels(entries map[string]string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *LeaseApplyConfiguration) WithLabels(entries map[string]string) *LeaseAp
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *LeaseApplyConfiguration) WithAnnotations(entries map[string]string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -212,13 +212,13 @@ func (b *LeaseApplyConfiguration) WithAnnotations(entries map[string]string) *Le
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *LeaseApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *LeaseApplyConfiguration {
    +func (b *LeaseApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,14 +229,14 @@ func (b *LeaseApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     func (b *LeaseApplyConfiguration) WithFinalizers(values ...string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *LeaseApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -247,3 +247,9 @@ func (b *LeaseApplyConfiguration) WithSpec(value *LeaseSpecApplyConfiguration) *
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *LeaseApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/coordination/v1/leasespec.go b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1/leasespec.go
    index a5f6a6ebbae7..d0099872c89b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/coordination/v1/leasespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1/leasespec.go
    @@ -19,20 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	coordinationv1 "k8s.io/api/coordination/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// LeaseSpecApplyConfiguration represents an declarative configuration of the LeaseSpec type for use
    +// LeaseSpecApplyConfiguration represents a declarative configuration of the LeaseSpec type for use
     // with apply.
     type LeaseSpecApplyConfiguration struct {
    -	HolderIdentity       *string       `json:"holderIdentity,omitempty"`
    -	LeaseDurationSeconds *int32        `json:"leaseDurationSeconds,omitempty"`
    -	AcquireTime          *v1.MicroTime `json:"acquireTime,omitempty"`
    -	RenewTime            *v1.MicroTime `json:"renewTime,omitempty"`
    -	LeaseTransitions     *int32        `json:"leaseTransitions,omitempty"`
    +	HolderIdentity       *string                                  `json:"holderIdentity,omitempty"`
    +	LeaseDurationSeconds *int32                                   `json:"leaseDurationSeconds,omitempty"`
    +	AcquireTime          *metav1.MicroTime                        `json:"acquireTime,omitempty"`
    +	RenewTime            *metav1.MicroTime                        `json:"renewTime,omitempty"`
    +	LeaseTransitions     *int32                                   `json:"leaseTransitions,omitempty"`
    +	Strategy             *coordinationv1.CoordinatedLeaseStrategy `json:"strategy,omitempty"`
    +	PreferredHolder      *string                                  `json:"preferredHolder,omitempty"`
     }
     
    -// LeaseSpecApplyConfiguration constructs an declarative configuration of the LeaseSpec type for use with
    +// LeaseSpecApplyConfiguration constructs a declarative configuration of the LeaseSpec type for use with
     // apply.
     func LeaseSpec() *LeaseSpecApplyConfiguration {
     	return &LeaseSpecApplyConfiguration{}
    @@ -57,7 +60,7 @@ func (b *LeaseSpecApplyConfiguration) WithLeaseDurationSeconds(value int32) *Lea
     // WithAcquireTime sets the AcquireTime field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AcquireTime field is set to the value of the last call.
    -func (b *LeaseSpecApplyConfiguration) WithAcquireTime(value v1.MicroTime) *LeaseSpecApplyConfiguration {
    +func (b *LeaseSpecApplyConfiguration) WithAcquireTime(value metav1.MicroTime) *LeaseSpecApplyConfiguration {
     	b.AcquireTime = &value
     	return b
     }
    @@ -65,7 +68,7 @@ func (b *LeaseSpecApplyConfiguration) WithAcquireTime(value v1.MicroTime) *Lease
     // WithRenewTime sets the RenewTime field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the RenewTime field is set to the value of the last call.
    -func (b *LeaseSpecApplyConfiguration) WithRenewTime(value v1.MicroTime) *LeaseSpecApplyConfiguration {
    +func (b *LeaseSpecApplyConfiguration) WithRenewTime(value metav1.MicroTime) *LeaseSpecApplyConfiguration {
     	b.RenewTime = &value
     	return b
     }
    @@ -77,3 +80,19 @@ func (b *LeaseSpecApplyConfiguration) WithLeaseTransitions(value int32) *LeaseSp
     	b.LeaseTransitions = &value
     	return b
     }
    +
    +// WithStrategy sets the Strategy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Strategy field is set to the value of the last call.
    +func (b *LeaseSpecApplyConfiguration) WithStrategy(value coordinationv1.CoordinatedLeaseStrategy) *LeaseSpecApplyConfiguration {
    +	b.Strategy = &value
    +	return b
    +}
    +
    +// WithPreferredHolder sets the PreferredHolder field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the PreferredHolder field is set to the value of the last call.
    +func (b *LeaseSpecApplyConfiguration) WithPreferredHolder(value string) *LeaseSpecApplyConfiguration {
    +	b.PreferredHolder = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/coordination/v1alpha2/leasecandidate.go b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1alpha2/leasecandidate.go
    new file mode 100644
    index 000000000000..b2cc2338eac4
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1alpha2/leasecandidate.go
    @@ -0,0 +1,255 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha2
    +
    +import (
    +	coordinationv1alpha2 "k8s.io/api/coordination/v1alpha2"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// LeaseCandidateApplyConfiguration represents a declarative configuration of the LeaseCandidate type for use
    +// with apply.
    +type LeaseCandidateApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *LeaseCandidateSpecApplyConfiguration `json:"spec,omitempty"`
    +}
    +
    +// LeaseCandidate constructs a declarative configuration of the LeaseCandidate type for use with
    +// apply.
    +func LeaseCandidate(name, namespace string) *LeaseCandidateApplyConfiguration {
    +	b := &LeaseCandidateApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithNamespace(namespace)
    +	b.WithKind("LeaseCandidate")
    +	b.WithAPIVersion("coordination.k8s.io/v1alpha2")
    +	return b
    +}
    +
    +// ExtractLeaseCandidate extracts the applied configuration owned by fieldManager from
    +// leaseCandidate. If no managedFields are found in leaseCandidate for fieldManager, a
    +// LeaseCandidateApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// leaseCandidate must be a unmodified LeaseCandidate API object that was retrieved from the Kubernetes API.
    +// ExtractLeaseCandidate provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractLeaseCandidate(leaseCandidate *coordinationv1alpha2.LeaseCandidate, fieldManager string) (*LeaseCandidateApplyConfiguration, error) {
    +	return extractLeaseCandidate(leaseCandidate, fieldManager, "")
    +}
    +
    +// ExtractLeaseCandidateStatus is the same as ExtractLeaseCandidate except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractLeaseCandidateStatus(leaseCandidate *coordinationv1alpha2.LeaseCandidate, fieldManager string) (*LeaseCandidateApplyConfiguration, error) {
    +	return extractLeaseCandidate(leaseCandidate, fieldManager, "status")
    +}
    +
    +func extractLeaseCandidate(leaseCandidate *coordinationv1alpha2.LeaseCandidate, fieldManager string, subresource string) (*LeaseCandidateApplyConfiguration, error) {
    +	b := &LeaseCandidateApplyConfiguration{}
    +	err := managedfields.ExtractInto(leaseCandidate, internal.Parser().Type("io.k8s.api.coordination.v1alpha2.LeaseCandidate"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(leaseCandidate.Name)
    +	b.WithNamespace(leaseCandidate.Namespace)
    +
    +	b.WithKind("LeaseCandidate")
    +	b.WithAPIVersion("coordination.k8s.io/v1alpha2")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithKind(value string) *LeaseCandidateApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithAPIVersion(value string) *LeaseCandidateApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithName(value string) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithGenerateName(value string) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithNamespace(value string) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithUID(value types.UID) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithResourceVersion(value string) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithGeneration(value int64) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithCreationTimestamp(value metav1.Time) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *LeaseCandidateApplyConfiguration) WithLabels(entries map[string]string) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *LeaseCandidateApplyConfiguration) WithAnnotations(entries map[string]string) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *LeaseCandidateApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *LeaseCandidateApplyConfiguration) WithFinalizers(values ...string) *LeaseCandidateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *LeaseCandidateApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *LeaseCandidateApplyConfiguration) WithSpec(value *LeaseCandidateSpecApplyConfiguration) *LeaseCandidateApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *LeaseCandidateApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/coordination/v1alpha2/leasecandidatespec.go b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1alpha2/leasecandidatespec.go
    new file mode 100644
    index 000000000000..f52aaab24beb
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1alpha2/leasecandidatespec.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha2
    +
    +import (
    +	coordinationv1 "k8s.io/api/coordination/v1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +)
    +
    +// LeaseCandidateSpecApplyConfiguration represents a declarative configuration of the LeaseCandidateSpec type for use
    +// with apply.
    +type LeaseCandidateSpecApplyConfiguration struct {
    +	LeaseName        *string                                  `json:"leaseName,omitempty"`
    +	PingTime         *v1.MicroTime                            `json:"pingTime,omitempty"`
    +	RenewTime        *v1.MicroTime                            `json:"renewTime,omitempty"`
    +	BinaryVersion    *string                                  `json:"binaryVersion,omitempty"`
    +	EmulationVersion *string                                  `json:"emulationVersion,omitempty"`
    +	Strategy         *coordinationv1.CoordinatedLeaseStrategy `json:"strategy,omitempty"`
    +}
    +
    +// LeaseCandidateSpecApplyConfiguration constructs a declarative configuration of the LeaseCandidateSpec type for use with
    +// apply.
    +func LeaseCandidateSpec() *LeaseCandidateSpecApplyConfiguration {
    +	return &LeaseCandidateSpecApplyConfiguration{}
    +}
    +
    +// WithLeaseName sets the LeaseName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the LeaseName field is set to the value of the last call.
    +func (b *LeaseCandidateSpecApplyConfiguration) WithLeaseName(value string) *LeaseCandidateSpecApplyConfiguration {
    +	b.LeaseName = &value
    +	return b
    +}
    +
    +// WithPingTime sets the PingTime field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the PingTime field is set to the value of the last call.
    +func (b *LeaseCandidateSpecApplyConfiguration) WithPingTime(value v1.MicroTime) *LeaseCandidateSpecApplyConfiguration {
    +	b.PingTime = &value
    +	return b
    +}
    +
    +// WithRenewTime sets the RenewTime field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the RenewTime field is set to the value of the last call.
    +func (b *LeaseCandidateSpecApplyConfiguration) WithRenewTime(value v1.MicroTime) *LeaseCandidateSpecApplyConfiguration {
    +	b.RenewTime = &value
    +	return b
    +}
    +
    +// WithBinaryVersion sets the BinaryVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the BinaryVersion field is set to the value of the last call.
    +func (b *LeaseCandidateSpecApplyConfiguration) WithBinaryVersion(value string) *LeaseCandidateSpecApplyConfiguration {
    +	b.BinaryVersion = &value
    +	return b
    +}
    +
    +// WithEmulationVersion sets the EmulationVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the EmulationVersion field is set to the value of the last call.
    +func (b *LeaseCandidateSpecApplyConfiguration) WithEmulationVersion(value string) *LeaseCandidateSpecApplyConfiguration {
    +	b.EmulationVersion = &value
    +	return b
    +}
    +
    +// WithStrategy sets the Strategy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Strategy field is set to the value of the last call.
    +func (b *LeaseCandidateSpecApplyConfiguration) WithStrategy(value coordinationv1.CoordinatedLeaseStrategy) *LeaseCandidateSpecApplyConfiguration {
    +	b.Strategy = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/coordination/v1beta1/lease.go b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1beta1/lease.go
    index 867e0f58baca..b321fe6b433c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/coordination/v1beta1/lease.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1beta1/lease.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// LeaseApplyConfiguration represents an declarative configuration of the Lease type for use
    +// LeaseApplyConfiguration represents a declarative configuration of the Lease type for use
     // with apply.
     type LeaseApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type LeaseApplyConfiguration struct {
     	Spec                             *LeaseSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// Lease constructs an declarative configuration of the Lease type for use with
    +// Lease constructs a declarative configuration of the Lease type for use with
     // apply.
     func Lease(name, namespace string) *LeaseApplyConfiguration {
     	b := &LeaseApplyConfiguration{}
    @@ -86,7 +86,7 @@ func extractLease(lease *coordinationv1beta1.Lease, fieldManager string, subreso
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithKind(value string) *LeaseApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *LeaseApplyConfiguration) WithKind(value string) *LeaseApplyConfiguratio
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithAPIVersion(value string) *LeaseApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *LeaseApplyConfiguration) WithAPIVersion(value string) *LeaseApplyConfig
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithName(value string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *LeaseApplyConfiguration) WithName(value string) *LeaseApplyConfiguratio
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithGenerateName(value string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *LeaseApplyConfiguration) WithGenerateName(value string) *LeaseApplyConf
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithNamespace(value string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *LeaseApplyConfiguration) WithNamespace(value string) *LeaseApplyConfigu
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithUID(value types.UID) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *LeaseApplyConfiguration) WithUID(value types.UID) *LeaseApplyConfigurat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithResourceVersion(value string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,7 +148,7 @@ func (b *LeaseApplyConfiguration) WithResourceVersion(value string) *LeaseApplyC
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithGeneration(value int64) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -157,7 +157,7 @@ func (b *LeaseApplyConfiguration) WithGeneration(value int64) *LeaseApplyConfigu
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithCreationTimestamp(value metav1.Time) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -166,7 +166,7 @@ func (b *LeaseApplyConfiguration) WithCreationTimestamp(value metav1.Time) *Leas
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *LeaseApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Leas
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *LeaseApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *LeaseApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *L
     // overwriting an existing map entries in Labels field with the same key.
     func (b *LeaseApplyConfiguration) WithLabels(entries map[string]string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *LeaseApplyConfiguration) WithLabels(entries map[string]string) *LeaseAp
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *LeaseApplyConfiguration) WithAnnotations(entries map[string]string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -218,7 +218,7 @@ func (b *LeaseApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,7 +229,7 @@ func (b *LeaseApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     func (b *LeaseApplyConfiguration) WithFinalizers(values ...string) *LeaseApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -247,3 +247,9 @@ func (b *LeaseApplyConfiguration) WithSpec(value *LeaseSpecApplyConfiguration) *
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *LeaseApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/coordination/v1beta1/leasespec.go b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1beta1/leasespec.go
    index 865eb7645558..8c7fddfc614b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/coordination/v1beta1/leasespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/coordination/v1beta1/leasespec.go
    @@ -19,20 +19,23 @@ limitations under the License.
     package v1beta1
     
     import (
    +	coordinationv1 "k8s.io/api/coordination/v1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// LeaseSpecApplyConfiguration represents an declarative configuration of the LeaseSpec type for use
    +// LeaseSpecApplyConfiguration represents a declarative configuration of the LeaseSpec type for use
     // with apply.
     type LeaseSpecApplyConfiguration struct {
    -	HolderIdentity       *string       `json:"holderIdentity,omitempty"`
    -	LeaseDurationSeconds *int32        `json:"leaseDurationSeconds,omitempty"`
    -	AcquireTime          *v1.MicroTime `json:"acquireTime,omitempty"`
    -	RenewTime            *v1.MicroTime `json:"renewTime,omitempty"`
    -	LeaseTransitions     *int32        `json:"leaseTransitions,omitempty"`
    +	HolderIdentity       *string                                  `json:"holderIdentity,omitempty"`
    +	LeaseDurationSeconds *int32                                   `json:"leaseDurationSeconds,omitempty"`
    +	AcquireTime          *v1.MicroTime                            `json:"acquireTime,omitempty"`
    +	RenewTime            *v1.MicroTime                            `json:"renewTime,omitempty"`
    +	LeaseTransitions     *int32                                   `json:"leaseTransitions,omitempty"`
    +	Strategy             *coordinationv1.CoordinatedLeaseStrategy `json:"strategy,omitempty"`
    +	PreferredHolder      *string                                  `json:"preferredHolder,omitempty"`
     }
     
    -// LeaseSpecApplyConfiguration constructs an declarative configuration of the LeaseSpec type for use with
    +// LeaseSpecApplyConfiguration constructs a declarative configuration of the LeaseSpec type for use with
     // apply.
     func LeaseSpec() *LeaseSpecApplyConfiguration {
     	return &LeaseSpecApplyConfiguration{}
    @@ -77,3 +80,19 @@ func (b *LeaseSpecApplyConfiguration) WithLeaseTransitions(value int32) *LeaseSp
     	b.LeaseTransitions = &value
     	return b
     }
    +
    +// WithStrategy sets the Strategy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Strategy field is set to the value of the last call.
    +func (b *LeaseSpecApplyConfiguration) WithStrategy(value coordinationv1.CoordinatedLeaseStrategy) *LeaseSpecApplyConfiguration {
    +	b.Strategy = &value
    +	return b
    +}
    +
    +// WithPreferredHolder sets the PreferredHolder field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the PreferredHolder field is set to the value of the last call.
    +func (b *LeaseSpecApplyConfiguration) WithPreferredHolder(value string) *LeaseSpecApplyConfiguration {
    +	b.PreferredHolder = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/affinity.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/affinity.go
    index df6d1c64e562..45484f140dc1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/affinity.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/affinity.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// AffinityApplyConfiguration represents an declarative configuration of the Affinity type for use
    +// AffinityApplyConfiguration represents a declarative configuration of the Affinity type for use
     // with apply.
     type AffinityApplyConfiguration struct {
     	NodeAffinity    *NodeAffinityApplyConfiguration    `json:"nodeAffinity,omitempty"`
    @@ -26,7 +26,7 @@ type AffinityApplyConfiguration struct {
     	PodAntiAffinity *PodAntiAffinityApplyConfiguration `json:"podAntiAffinity,omitempty"`
     }
     
    -// AffinityApplyConfiguration constructs an declarative configuration of the Affinity type for use with
    +// AffinityApplyConfiguration constructs a declarative configuration of the Affinity type for use with
     // apply.
     func Affinity() *AffinityApplyConfiguration {
     	return &AffinityApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/apparmorprofile.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/apparmorprofile.go
    new file mode 100644
    index 000000000000..3f7de21b390e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/apparmorprofile.go
    @@ -0,0 +1,52 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	corev1 "k8s.io/api/core/v1"
    +)
    +
    +// AppArmorProfileApplyConfiguration represents a declarative configuration of the AppArmorProfile type for use
    +// with apply.
    +type AppArmorProfileApplyConfiguration struct {
    +	Type             *corev1.AppArmorProfileType `json:"type,omitempty"`
    +	LocalhostProfile *string                     `json:"localhostProfile,omitempty"`
    +}
    +
    +// AppArmorProfileApplyConfiguration constructs a declarative configuration of the AppArmorProfile type for use with
    +// apply.
    +func AppArmorProfile() *AppArmorProfileApplyConfiguration {
    +	return &AppArmorProfileApplyConfiguration{}
    +}
    +
    +// WithType sets the Type field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Type field is set to the value of the last call.
    +func (b *AppArmorProfileApplyConfiguration) WithType(value corev1.AppArmorProfileType) *AppArmorProfileApplyConfiguration {
    +	b.Type = &value
    +	return b
    +}
    +
    +// WithLocalhostProfile sets the LocalhostProfile field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the LocalhostProfile field is set to the value of the last call.
    +func (b *AppArmorProfileApplyConfiguration) WithLocalhostProfile(value string) *AppArmorProfileApplyConfiguration {
    +	b.LocalhostProfile = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/attachedvolume.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/attachedvolume.go
    index 970bf24c45be..2c76161a1030 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/attachedvolume.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/attachedvolume.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// AttachedVolumeApplyConfiguration represents an declarative configuration of the AttachedVolume type for use
    +// AttachedVolumeApplyConfiguration represents a declarative configuration of the AttachedVolume type for use
     // with apply.
     type AttachedVolumeApplyConfiguration struct {
    -	Name       *v1.UniqueVolumeName `json:"name,omitempty"`
    -	DevicePath *string              `json:"devicePath,omitempty"`
    +	Name       *corev1.UniqueVolumeName `json:"name,omitempty"`
    +	DevicePath *string                  `json:"devicePath,omitempty"`
     }
     
    -// AttachedVolumeApplyConfiguration constructs an declarative configuration of the AttachedVolume type for use with
    +// AttachedVolumeApplyConfiguration constructs a declarative configuration of the AttachedVolume type for use with
     // apply.
     func AttachedVolume() *AttachedVolumeApplyConfiguration {
     	return &AttachedVolumeApplyConfiguration{}
    @@ -38,7 +38,7 @@ func AttachedVolume() *AttachedVolumeApplyConfiguration {
     // WithName sets the Name field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
    -func (b *AttachedVolumeApplyConfiguration) WithName(value v1.UniqueVolumeName) *AttachedVolumeApplyConfiguration {
    +func (b *AttachedVolumeApplyConfiguration) WithName(value corev1.UniqueVolumeName) *AttachedVolumeApplyConfiguration {
     	b.Name = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/awselasticblockstorevolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/awselasticblockstorevolumesource.go
    index 6ff335e9d624..d08786965e90 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/awselasticblockstorevolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/awselasticblockstorevolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// AWSElasticBlockStoreVolumeSourceApplyConfiguration represents an declarative configuration of the AWSElasticBlockStoreVolumeSource type for use
    +// AWSElasticBlockStoreVolumeSourceApplyConfiguration represents a declarative configuration of the AWSElasticBlockStoreVolumeSource type for use
     // with apply.
     type AWSElasticBlockStoreVolumeSourceApplyConfiguration struct {
     	VolumeID  *string `json:"volumeID,omitempty"`
    @@ -27,7 +27,7 @@ type AWSElasticBlockStoreVolumeSourceApplyConfiguration struct {
     	ReadOnly  *bool   `json:"readOnly,omitempty"`
     }
     
    -// AWSElasticBlockStoreVolumeSourceApplyConfiguration constructs an declarative configuration of the AWSElasticBlockStoreVolumeSource type for use with
    +// AWSElasticBlockStoreVolumeSourceApplyConfiguration constructs a declarative configuration of the AWSElasticBlockStoreVolumeSource type for use with
     // apply.
     func AWSElasticBlockStoreVolumeSource() *AWSElasticBlockStoreVolumeSourceApplyConfiguration {
     	return &AWSElasticBlockStoreVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurediskvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurediskvolumesource.go
    index b2774735ae44..d4d20dfa91b7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurediskvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurediskvolumesource.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// AzureDiskVolumeSourceApplyConfiguration represents an declarative configuration of the AzureDiskVolumeSource type for use
    +// AzureDiskVolumeSourceApplyConfiguration represents a declarative configuration of the AzureDiskVolumeSource type for use
     // with apply.
     type AzureDiskVolumeSourceApplyConfiguration struct {
    -	DiskName    *string                      `json:"diskName,omitempty"`
    -	DataDiskURI *string                      `json:"diskURI,omitempty"`
    -	CachingMode *v1.AzureDataDiskCachingMode `json:"cachingMode,omitempty"`
    -	FSType      *string                      `json:"fsType,omitempty"`
    -	ReadOnly    *bool                        `json:"readOnly,omitempty"`
    -	Kind        *v1.AzureDataDiskKind        `json:"kind,omitempty"`
    +	DiskName    *string                          `json:"diskName,omitempty"`
    +	DataDiskURI *string                          `json:"diskURI,omitempty"`
    +	CachingMode *corev1.AzureDataDiskCachingMode `json:"cachingMode,omitempty"`
    +	FSType      *string                          `json:"fsType,omitempty"`
    +	ReadOnly    *bool                            `json:"readOnly,omitempty"`
    +	Kind        *corev1.AzureDataDiskKind        `json:"kind,omitempty"`
     }
     
    -// AzureDiskVolumeSourceApplyConfiguration constructs an declarative configuration of the AzureDiskVolumeSource type for use with
    +// AzureDiskVolumeSourceApplyConfiguration constructs a declarative configuration of the AzureDiskVolumeSource type for use with
     // apply.
     func AzureDiskVolumeSource() *AzureDiskVolumeSourceApplyConfiguration {
     	return &AzureDiskVolumeSourceApplyConfiguration{}
    @@ -58,7 +58,7 @@ func (b *AzureDiskVolumeSourceApplyConfiguration) WithDataDiskURI(value string)
     // WithCachingMode sets the CachingMode field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CachingMode field is set to the value of the last call.
    -func (b *AzureDiskVolumeSourceApplyConfiguration) WithCachingMode(value v1.AzureDataDiskCachingMode) *AzureDiskVolumeSourceApplyConfiguration {
    +func (b *AzureDiskVolumeSourceApplyConfiguration) WithCachingMode(value corev1.AzureDataDiskCachingMode) *AzureDiskVolumeSourceApplyConfiguration {
     	b.CachingMode = &value
     	return b
     }
    @@ -82,7 +82,7 @@ func (b *AzureDiskVolumeSourceApplyConfiguration) WithReadOnly(value bool) *Azur
     // WithKind sets the Kind field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
    -func (b *AzureDiskVolumeSourceApplyConfiguration) WithKind(value v1.AzureDataDiskKind) *AzureDiskVolumeSourceApplyConfiguration {
    +func (b *AzureDiskVolumeSourceApplyConfiguration) WithKind(value corev1.AzureDataDiskKind) *AzureDiskVolumeSourceApplyConfiguration {
     	b.Kind = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurefilepersistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurefilepersistentvolumesource.go
    index f17393833459..70a6b17be883 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurefilepersistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurefilepersistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// AzureFilePersistentVolumeSourceApplyConfiguration represents an declarative configuration of the AzureFilePersistentVolumeSource type for use
    +// AzureFilePersistentVolumeSourceApplyConfiguration represents a declarative configuration of the AzureFilePersistentVolumeSource type for use
     // with apply.
     type AzureFilePersistentVolumeSourceApplyConfiguration struct {
     	SecretName      *string `json:"secretName,omitempty"`
    @@ -27,7 +27,7 @@ type AzureFilePersistentVolumeSourceApplyConfiguration struct {
     	SecretNamespace *string `json:"secretNamespace,omitempty"`
     }
     
    -// AzureFilePersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the AzureFilePersistentVolumeSource type for use with
    +// AzureFilePersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the AzureFilePersistentVolumeSource type for use with
     // apply.
     func AzureFilePersistentVolumeSource() *AzureFilePersistentVolumeSourceApplyConfiguration {
     	return &AzureFilePersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurefilevolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurefilevolumesource.go
    index a7f7f33d8895..ff0c867919ec 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurefilevolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurefilevolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// AzureFileVolumeSourceApplyConfiguration represents an declarative configuration of the AzureFileVolumeSource type for use
    +// AzureFileVolumeSourceApplyConfiguration represents a declarative configuration of the AzureFileVolumeSource type for use
     // with apply.
     type AzureFileVolumeSourceApplyConfiguration struct {
     	SecretName *string `json:"secretName,omitempty"`
    @@ -26,7 +26,7 @@ type AzureFileVolumeSourceApplyConfiguration struct {
     	ReadOnly   *bool   `json:"readOnly,omitempty"`
     }
     
    -// AzureFileVolumeSourceApplyConfiguration constructs an declarative configuration of the AzureFileVolumeSource type for use with
    +// AzureFileVolumeSourceApplyConfiguration constructs a declarative configuration of the AzureFileVolumeSource type for use with
     // apply.
     func AzureFileVolumeSource() *AzureFileVolumeSourceApplyConfiguration {
     	return &AzureFileVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/capabilities.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/capabilities.go
    index c3d176c4d8a4..e5c52b3c1372 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/capabilities.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/capabilities.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// CapabilitiesApplyConfiguration represents an declarative configuration of the Capabilities type for use
    +// CapabilitiesApplyConfiguration represents a declarative configuration of the Capabilities type for use
     // with apply.
     type CapabilitiesApplyConfiguration struct {
    -	Add  []v1.Capability `json:"add,omitempty"`
    -	Drop []v1.Capability `json:"drop,omitempty"`
    +	Add  []corev1.Capability `json:"add,omitempty"`
    +	Drop []corev1.Capability `json:"drop,omitempty"`
     }
     
    -// CapabilitiesApplyConfiguration constructs an declarative configuration of the Capabilities type for use with
    +// CapabilitiesApplyConfiguration constructs a declarative configuration of the Capabilities type for use with
     // apply.
     func Capabilities() *CapabilitiesApplyConfiguration {
     	return &CapabilitiesApplyConfiguration{}
    @@ -38,7 +38,7 @@ func Capabilities() *CapabilitiesApplyConfiguration {
     // WithAdd adds the given value to the Add field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Add field.
    -func (b *CapabilitiesApplyConfiguration) WithAdd(values ...v1.Capability) *CapabilitiesApplyConfiguration {
    +func (b *CapabilitiesApplyConfiguration) WithAdd(values ...corev1.Capability) *CapabilitiesApplyConfiguration {
     	for i := range values {
     		b.Add = append(b.Add, values[i])
     	}
    @@ -48,7 +48,7 @@ func (b *CapabilitiesApplyConfiguration) WithAdd(values ...v1.Capability) *Capab
     // WithDrop adds the given value to the Drop field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Drop field.
    -func (b *CapabilitiesApplyConfiguration) WithDrop(values ...v1.Capability) *CapabilitiesApplyConfiguration {
    +func (b *CapabilitiesApplyConfiguration) WithDrop(values ...corev1.Capability) *CapabilitiesApplyConfiguration {
     	for i := range values {
     		b.Drop = append(b.Drop, values[i])
     	}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/cephfspersistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/cephfspersistentvolumesource.go
    index a41936fe3d99..f3ee2d03e9f0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/cephfspersistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/cephfspersistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CephFSPersistentVolumeSourceApplyConfiguration represents an declarative configuration of the CephFSPersistentVolumeSource type for use
    +// CephFSPersistentVolumeSourceApplyConfiguration represents a declarative configuration of the CephFSPersistentVolumeSource type for use
     // with apply.
     type CephFSPersistentVolumeSourceApplyConfiguration struct {
     	Monitors   []string                           `json:"monitors,omitempty"`
    @@ -29,7 +29,7 @@ type CephFSPersistentVolumeSourceApplyConfiguration struct {
     	ReadOnly   *bool                              `json:"readOnly,omitempty"`
     }
     
    -// CephFSPersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the CephFSPersistentVolumeSource type for use with
    +// CephFSPersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the CephFSPersistentVolumeSource type for use with
     // apply.
     func CephFSPersistentVolumeSource() *CephFSPersistentVolumeSourceApplyConfiguration {
     	return &CephFSPersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/cephfsvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/cephfsvolumesource.go
    index 0ea070ba5d78..77d53d6eb044 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/cephfsvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/cephfsvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CephFSVolumeSourceApplyConfiguration represents an declarative configuration of the CephFSVolumeSource type for use
    +// CephFSVolumeSourceApplyConfiguration represents a declarative configuration of the CephFSVolumeSource type for use
     // with apply.
     type CephFSVolumeSourceApplyConfiguration struct {
     	Monitors   []string                                `json:"monitors,omitempty"`
    @@ -29,7 +29,7 @@ type CephFSVolumeSourceApplyConfiguration struct {
     	ReadOnly   *bool                                   `json:"readOnly,omitempty"`
     }
     
    -// CephFSVolumeSourceApplyConfiguration constructs an declarative configuration of the CephFSVolumeSource type for use with
    +// CephFSVolumeSourceApplyConfiguration constructs a declarative configuration of the CephFSVolumeSource type for use with
     // apply.
     func CephFSVolumeSource() *CephFSVolumeSourceApplyConfiguration {
     	return &CephFSVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/cinderpersistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/cinderpersistentvolumesource.go
    index 7754cf92f7f8..b26573488291 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/cinderpersistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/cinderpersistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CinderPersistentVolumeSourceApplyConfiguration represents an declarative configuration of the CinderPersistentVolumeSource type for use
    +// CinderPersistentVolumeSourceApplyConfiguration represents a declarative configuration of the CinderPersistentVolumeSource type for use
     // with apply.
     type CinderPersistentVolumeSourceApplyConfiguration struct {
     	VolumeID  *string                            `json:"volumeID,omitempty"`
    @@ -27,7 +27,7 @@ type CinderPersistentVolumeSourceApplyConfiguration struct {
     	SecretRef *SecretReferenceApplyConfiguration `json:"secretRef,omitempty"`
     }
     
    -// CinderPersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the CinderPersistentVolumeSource type for use with
    +// CinderPersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the CinderPersistentVolumeSource type for use with
     // apply.
     func CinderPersistentVolumeSource() *CinderPersistentVolumeSourceApplyConfiguration {
     	return &CinderPersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/cindervolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/cindervolumesource.go
    index 51271e279d45..131cbf219c6d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/cindervolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/cindervolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CinderVolumeSourceApplyConfiguration represents an declarative configuration of the CinderVolumeSource type for use
    +// CinderVolumeSourceApplyConfiguration represents a declarative configuration of the CinderVolumeSource type for use
     // with apply.
     type CinderVolumeSourceApplyConfiguration struct {
     	VolumeID  *string                                 `json:"volumeID,omitempty"`
    @@ -27,7 +27,7 @@ type CinderVolumeSourceApplyConfiguration struct {
     	SecretRef *LocalObjectReferenceApplyConfiguration `json:"secretRef,omitempty"`
     }
     
    -// CinderVolumeSourceApplyConfiguration constructs an declarative configuration of the CinderVolumeSource type for use with
    +// CinderVolumeSourceApplyConfiguration constructs a declarative configuration of the CinderVolumeSource type for use with
     // apply.
     func CinderVolumeSource() *CinderVolumeSourceApplyConfiguration {
     	return &CinderVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/claimsource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/claimsource.go
    deleted file mode 100644
    index 2153570fc080..000000000000
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/claimsource.go
    +++ /dev/null
    @@ -1,48 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by applyconfiguration-gen. DO NOT EDIT.
    -
    -package v1
    -
    -// ClaimSourceApplyConfiguration represents an declarative configuration of the ClaimSource type for use
    -// with apply.
    -type ClaimSourceApplyConfiguration struct {
    -	ResourceClaimName         *string `json:"resourceClaimName,omitempty"`
    -	ResourceClaimTemplateName *string `json:"resourceClaimTemplateName,omitempty"`
    -}
    -
    -// ClaimSourceApplyConfiguration constructs an declarative configuration of the ClaimSource type for use with
    -// apply.
    -func ClaimSource() *ClaimSourceApplyConfiguration {
    -	return &ClaimSourceApplyConfiguration{}
    -}
    -
    -// WithResourceClaimName sets the ResourceClaimName field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the ResourceClaimName field is set to the value of the last call.
    -func (b *ClaimSourceApplyConfiguration) WithResourceClaimName(value string) *ClaimSourceApplyConfiguration {
    -	b.ResourceClaimName = &value
    -	return b
    -}
    -
    -// WithResourceClaimTemplateName sets the ResourceClaimTemplateName field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the ResourceClaimTemplateName field is set to the value of the last call.
    -func (b *ClaimSourceApplyConfiguration) WithResourceClaimTemplateName(value string) *ClaimSourceApplyConfiguration {
    -	b.ResourceClaimTemplateName = &value
    -	return b
    -}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/clientipconfig.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/clientipconfig.go
    index a666e8faaebf..02c4e55e1383 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/clientipconfig.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/clientipconfig.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// ClientIPConfigApplyConfiguration represents an declarative configuration of the ClientIPConfig type for use
    +// ClientIPConfigApplyConfiguration represents a declarative configuration of the ClientIPConfig type for use
     // with apply.
     type ClientIPConfigApplyConfiguration struct {
     	TimeoutSeconds *int32 `json:"timeoutSeconds,omitempty"`
     }
     
    -// ClientIPConfigApplyConfiguration constructs an declarative configuration of the ClientIPConfig type for use with
    +// ClientIPConfigApplyConfiguration constructs a declarative configuration of the ClientIPConfig type for use with
     // apply.
     func ClientIPConfig() *ClientIPConfigApplyConfiguration {
     	return &ClientIPConfigApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/clustertrustbundleprojection.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/clustertrustbundleprojection.go
    index 5aa686782b44..ab1c578c8586 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/clustertrustbundleprojection.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/clustertrustbundleprojection.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ClusterTrustBundleProjectionApplyConfiguration represents an declarative configuration of the ClusterTrustBundleProjection type for use
    +// ClusterTrustBundleProjectionApplyConfiguration represents a declarative configuration of the ClusterTrustBundleProjection type for use
     // with apply.
     type ClusterTrustBundleProjectionApplyConfiguration struct {
    -	Name          *string                             `json:"name,omitempty"`
    -	SignerName    *string                             `json:"signerName,omitempty"`
    -	LabelSelector *v1.LabelSelectorApplyConfiguration `json:"labelSelector,omitempty"`
    -	Optional      *bool                               `json:"optional,omitempty"`
    -	Path          *string                             `json:"path,omitempty"`
    +	Name          *string                                 `json:"name,omitempty"`
    +	SignerName    *string                                 `json:"signerName,omitempty"`
    +	LabelSelector *metav1.LabelSelectorApplyConfiguration `json:"labelSelector,omitempty"`
    +	Optional      *bool                                   `json:"optional,omitempty"`
    +	Path          *string                                 `json:"path,omitempty"`
     }
     
    -// ClusterTrustBundleProjectionApplyConfiguration constructs an declarative configuration of the ClusterTrustBundleProjection type for use with
    +// ClusterTrustBundleProjectionApplyConfiguration constructs a declarative configuration of the ClusterTrustBundleProjection type for use with
     // apply.
     func ClusterTrustBundleProjection() *ClusterTrustBundleProjectionApplyConfiguration {
     	return &ClusterTrustBundleProjectionApplyConfiguration{}
    @@ -57,7 +57,7 @@ func (b *ClusterTrustBundleProjectionApplyConfiguration) WithSignerName(value st
     // WithLabelSelector sets the LabelSelector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the LabelSelector field is set to the value of the last call.
    -func (b *ClusterTrustBundleProjectionApplyConfiguration) WithLabelSelector(value *v1.LabelSelectorApplyConfiguration) *ClusterTrustBundleProjectionApplyConfiguration {
    +func (b *ClusterTrustBundleProjectionApplyConfiguration) WithLabelSelector(value *metav1.LabelSelectorApplyConfiguration) *ClusterTrustBundleProjectionApplyConfiguration {
     	b.LabelSelector = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/componentcondition.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/componentcondition.go
    index 1ef65f5a0c5d..60be6fe80117 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/componentcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/componentcondition.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// ComponentConditionApplyConfiguration represents an declarative configuration of the ComponentCondition type for use
    +// ComponentConditionApplyConfiguration represents a declarative configuration of the ComponentCondition type for use
     // with apply.
     type ComponentConditionApplyConfiguration struct {
    -	Type    *v1.ComponentConditionType `json:"type,omitempty"`
    -	Status  *v1.ConditionStatus        `json:"status,omitempty"`
    -	Message *string                    `json:"message,omitempty"`
    -	Error   *string                    `json:"error,omitempty"`
    +	Type    *corev1.ComponentConditionType `json:"type,omitempty"`
    +	Status  *corev1.ConditionStatus        `json:"status,omitempty"`
    +	Message *string                        `json:"message,omitempty"`
    +	Error   *string                        `json:"error,omitempty"`
     }
     
    -// ComponentConditionApplyConfiguration constructs an declarative configuration of the ComponentCondition type for use with
    +// ComponentConditionApplyConfiguration constructs a declarative configuration of the ComponentCondition type for use with
     // apply.
     func ComponentCondition() *ComponentConditionApplyConfiguration {
     	return &ComponentConditionApplyConfiguration{}
    @@ -40,7 +40,7 @@ func ComponentCondition() *ComponentConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *ComponentConditionApplyConfiguration) WithType(value v1.ComponentConditionType) *ComponentConditionApplyConfiguration {
    +func (b *ComponentConditionApplyConfiguration) WithType(value corev1.ComponentConditionType) *ComponentConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -48,7 +48,7 @@ func (b *ComponentConditionApplyConfiguration) WithType(value v1.ComponentCondit
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *ComponentConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *ComponentConditionApplyConfiguration {
    +func (b *ComponentConditionApplyConfiguration) WithStatus(value corev1.ConditionStatus) *ComponentConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/componentstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/componentstatus.go
    index 300e526942f8..340a55e2d257 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/componentstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/componentstatus.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ComponentStatusApplyConfiguration represents an declarative configuration of the ComponentStatus type for use
    +// ComponentStatusApplyConfiguration represents a declarative configuration of the ComponentStatus type for use
     // with apply.
     type ComponentStatusApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Conditions                       []ComponentConditionApplyConfiguration `json:"conditions,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Conditions                           []ComponentConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// ComponentStatus constructs an declarative configuration of the ComponentStatus type for use with
    +// ComponentStatus constructs a declarative configuration of the ComponentStatus type for use with
     // apply.
     func ComponentStatus(name string) *ComponentStatusApplyConfiguration {
     	b := &ComponentStatusApplyConfiguration{}
    @@ -56,18 +56,18 @@ func ComponentStatus(name string) *ComponentStatusApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractComponentStatus(componentStatus *apicorev1.ComponentStatus, fieldManager string) (*ComponentStatusApplyConfiguration, error) {
    +func ExtractComponentStatus(componentStatus *corev1.ComponentStatus, fieldManager string) (*ComponentStatusApplyConfiguration, error) {
     	return extractComponentStatus(componentStatus, fieldManager, "")
     }
     
     // ExtractComponentStatusStatus is the same as ExtractComponentStatus except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractComponentStatusStatus(componentStatus *apicorev1.ComponentStatus, fieldManager string) (*ComponentStatusApplyConfiguration, error) {
    +func ExtractComponentStatusStatus(componentStatus *corev1.ComponentStatus, fieldManager string) (*ComponentStatusApplyConfiguration, error) {
     	return extractComponentStatus(componentStatus, fieldManager, "status")
     }
     
    -func extractComponentStatus(componentStatus *apicorev1.ComponentStatus, fieldManager string, subresource string) (*ComponentStatusApplyConfiguration, error) {
    +func extractComponentStatus(componentStatus *corev1.ComponentStatus, fieldManager string, subresource string) (*ComponentStatusApplyConfiguration, error) {
     	b := &ComponentStatusApplyConfiguration{}
     	err := managedfields.ExtractInto(componentStatus, internal.Parser().Type("io.k8s.api.core.v1.ComponentStatus"), fieldManager, b, subresource)
     	if err != nil {
    @@ -84,7 +84,7 @@ func extractComponentStatus(componentStatus *apicorev1.ComponentStatus, fieldMan
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ComponentStatusApplyConfiguration) WithKind(value string) *ComponentStatusApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *ComponentStatusApplyConfiguration) WithKind(value string) *ComponentSta
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ComponentStatusApplyConfiguration) WithAPIVersion(value string) *ComponentStatusApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *ComponentStatusApplyConfiguration) WithAPIVersion(value string) *Compon
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ComponentStatusApplyConfiguration) WithName(value string) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *ComponentStatusApplyConfiguration) WithName(value string) *ComponentSta
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ComponentStatusApplyConfiguration) WithGenerateName(value string) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *ComponentStatusApplyConfiguration) WithGenerateName(value string) *Comp
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ComponentStatusApplyConfiguration) WithNamespace(value string) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *ComponentStatusApplyConfiguration) WithNamespace(value string) *Compone
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ComponentStatusApplyConfiguration) WithUID(value types.UID) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *ComponentStatusApplyConfiguration) WithUID(value types.UID) *ComponentS
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ComponentStatusApplyConfiguration) WithResourceVersion(value string) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,25 +146,25 @@ func (b *ComponentStatusApplyConfiguration) WithResourceVersion(value string) *C
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ComponentStatusApplyConfiguration) WithGeneration(value int64) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ComponentStatusApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ComponentStatusApplyConfiguration {
    +func (b *ComponentStatusApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ComponentStatusApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ComponentStatusApplyConfiguration {
    +func (b *ComponentStatusApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *ComponentStatusApplyConfiguration) WithDeletionTimestamp(value metav1.T
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ComponentStatusApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *ComponentStatusApplyConfiguration) WithDeletionGracePeriodSeconds(value
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ComponentStatusApplyConfiguration) WithLabels(entries map[string]string) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *ComponentStatusApplyConfiguration) WithLabels(entries map[string]string
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ComponentStatusApplyConfiguration) WithAnnotations(entries map[string]string) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -210,13 +210,13 @@ func (b *ComponentStatusApplyConfiguration) WithAnnotations(entries map[string]s
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ComponentStatusApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ComponentStatusApplyConfiguration {
    +func (b *ComponentStatusApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,14 +227,14 @@ func (b *ComponentStatusApplyConfiguration) WithOwnerReferences(values ...*v1.Ow
     func (b *ComponentStatusApplyConfiguration) WithFinalizers(values ...string) *ComponentStatusApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ComponentStatusApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -250,3 +250,9 @@ func (b *ComponentStatusApplyConfiguration) WithConditions(values ...*ComponentC
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ComponentStatusApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmap.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmap.go
    index f4cc7024d216..2ff2c4d20c94 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmap.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmap.go
    @@ -20,24 +20,24 @@ package v1
     
     import (
     	corev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ConfigMapApplyConfiguration represents an declarative configuration of the ConfigMap type for use
    +// ConfigMapApplyConfiguration represents a declarative configuration of the ConfigMap type for use
     // with apply.
     type ConfigMapApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Immutable                        *bool             `json:"immutable,omitempty"`
    -	Data                             map[string]string `json:"data,omitempty"`
    -	BinaryData                       map[string][]byte `json:"binaryData,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Immutable                            *bool             `json:"immutable,omitempty"`
    +	Data                                 map[string]string `json:"data,omitempty"`
    +	BinaryData                           map[string][]byte `json:"binaryData,omitempty"`
     }
     
    -// ConfigMap constructs an declarative configuration of the ConfigMap type for use with
    +// ConfigMap constructs a declarative configuration of the ConfigMap type for use with
     // apply.
     func ConfigMap(name, namespace string) *ConfigMapApplyConfiguration {
     	b := &ConfigMapApplyConfiguration{}
    @@ -88,7 +88,7 @@ func extractConfigMap(configMap *corev1.ConfigMap, fieldManager string, subresou
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ConfigMapApplyConfiguration) WithKind(value string) *ConfigMapApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *ConfigMapApplyConfiguration) WithKind(value string) *ConfigMapApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ConfigMapApplyConfiguration) WithAPIVersion(value string) *ConfigMapApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *ConfigMapApplyConfiguration) WithAPIVersion(value string) *ConfigMapApp
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ConfigMapApplyConfiguration) WithName(value string) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *ConfigMapApplyConfiguration) WithName(value string) *ConfigMapApplyConf
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ConfigMapApplyConfiguration) WithGenerateName(value string) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *ConfigMapApplyConfiguration) WithGenerateName(value string) *ConfigMapA
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ConfigMapApplyConfiguration) WithNamespace(value string) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -132,7 +132,7 @@ func (b *ConfigMapApplyConfiguration) WithNamespace(value string) *ConfigMapAppl
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ConfigMapApplyConfiguration) WithUID(value types.UID) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -141,7 +141,7 @@ func (b *ConfigMapApplyConfiguration) WithUID(value types.UID) *ConfigMapApplyCo
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ConfigMapApplyConfiguration) WithResourceVersion(value string) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -150,25 +150,25 @@ func (b *ConfigMapApplyConfiguration) WithResourceVersion(value string) *ConfigM
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ConfigMapApplyConfiguration) WithGeneration(value int64) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ConfigMapApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ConfigMapApplyConfiguration {
    +func (b *ConfigMapApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ConfigMapApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ConfigMapApplyConfiguration {
    +func (b *ConfigMapApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -177,7 +177,7 @@ func (b *ConfigMapApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ConfigMapApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -187,11 +187,11 @@ func (b *ConfigMapApplyConfiguration) WithDeletionGracePeriodSeconds(value int64
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ConfigMapApplyConfiguration) WithLabels(entries map[string]string) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -202,11 +202,11 @@ func (b *ConfigMapApplyConfiguration) WithLabels(entries map[string]string) *Con
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ConfigMapApplyConfiguration) WithAnnotations(entries map[string]string) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -214,13 +214,13 @@ func (b *ConfigMapApplyConfiguration) WithAnnotations(entries map[string]string)
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ConfigMapApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ConfigMapApplyConfiguration {
    +func (b *ConfigMapApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -231,14 +231,14 @@ func (b *ConfigMapApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     func (b *ConfigMapApplyConfiguration) WithFinalizers(values ...string) *ConfigMapApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ConfigMapApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -277,3 +277,9 @@ func (b *ConfigMapApplyConfiguration) WithBinaryData(entries map[string][]byte)
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ConfigMapApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapenvsource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapenvsource.go
    index 8802fff48fb6..4c0d2cbdd9df 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapenvsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapenvsource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ConfigMapEnvSourceApplyConfiguration represents an declarative configuration of the ConfigMapEnvSource type for use
    +// ConfigMapEnvSourceApplyConfiguration represents a declarative configuration of the ConfigMapEnvSource type for use
     // with apply.
     type ConfigMapEnvSourceApplyConfiguration struct {
     	LocalObjectReferenceApplyConfiguration `json:",inline"`
     	Optional                               *bool `json:"optional,omitempty"`
     }
     
    -// ConfigMapEnvSourceApplyConfiguration constructs an declarative configuration of the ConfigMapEnvSource type for use with
    +// ConfigMapEnvSourceApplyConfiguration constructs a declarative configuration of the ConfigMapEnvSource type for use with
     // apply.
     func ConfigMapEnvSource() *ConfigMapEnvSourceApplyConfiguration {
     	return &ConfigMapEnvSourceApplyConfiguration{}
    @@ -35,7 +35,7 @@ func ConfigMapEnvSource() *ConfigMapEnvSourceApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ConfigMapEnvSourceApplyConfiguration) WithName(value string) *ConfigMapEnvSourceApplyConfiguration {
    -	b.Name = &value
    +	b.LocalObjectReferenceApplyConfiguration.Name = &value
     	return b
     }
     
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapkeyselector.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapkeyselector.go
    index 2a8c800afc7a..97c0e7210aa5 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapkeyselector.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapkeyselector.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ConfigMapKeySelectorApplyConfiguration represents an declarative configuration of the ConfigMapKeySelector type for use
    +// ConfigMapKeySelectorApplyConfiguration represents a declarative configuration of the ConfigMapKeySelector type for use
     // with apply.
     type ConfigMapKeySelectorApplyConfiguration struct {
     	LocalObjectReferenceApplyConfiguration `json:",inline"`
    @@ -26,7 +26,7 @@ type ConfigMapKeySelectorApplyConfiguration struct {
     	Optional                               *bool   `json:"optional,omitempty"`
     }
     
    -// ConfigMapKeySelectorApplyConfiguration constructs an declarative configuration of the ConfigMapKeySelector type for use with
    +// ConfigMapKeySelectorApplyConfiguration constructs a declarative configuration of the ConfigMapKeySelector type for use with
     // apply.
     func ConfigMapKeySelector() *ConfigMapKeySelectorApplyConfiguration {
     	return &ConfigMapKeySelectorApplyConfiguration{}
    @@ -36,7 +36,7 @@ func ConfigMapKeySelector() *ConfigMapKeySelectorApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ConfigMapKeySelectorApplyConfiguration) WithName(value string) *ConfigMapKeySelectorApplyConfiguration {
    -	b.Name = &value
    +	b.LocalObjectReferenceApplyConfiguration.Name = &value
     	return b
     }
     
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapnodeconfigsource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapnodeconfigsource.go
    index da9655a5448a..135bb7d427ea 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapnodeconfigsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapnodeconfigsource.go
    @@ -22,7 +22,7 @@ import (
     	types "k8s.io/apimachinery/pkg/types"
     )
     
    -// ConfigMapNodeConfigSourceApplyConfiguration represents an declarative configuration of the ConfigMapNodeConfigSource type for use
    +// ConfigMapNodeConfigSourceApplyConfiguration represents a declarative configuration of the ConfigMapNodeConfigSource type for use
     // with apply.
     type ConfigMapNodeConfigSourceApplyConfiguration struct {
     	Namespace        *string    `json:"namespace,omitempty"`
    @@ -32,7 +32,7 @@ type ConfigMapNodeConfigSourceApplyConfiguration struct {
     	KubeletConfigKey *string    `json:"kubeletConfigKey,omitempty"`
     }
     
    -// ConfigMapNodeConfigSourceApplyConfiguration constructs an declarative configuration of the ConfigMapNodeConfigSource type for use with
    +// ConfigMapNodeConfigSourceApplyConfiguration constructs a declarative configuration of the ConfigMapNodeConfigSource type for use with
     // apply.
     func ConfigMapNodeConfigSource() *ConfigMapNodeConfigSourceApplyConfiguration {
     	return &ConfigMapNodeConfigSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapprojection.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapprojection.go
    index 7297d3a4379e..d8c5e21d3a5d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapprojection.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapprojection.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ConfigMapProjectionApplyConfiguration represents an declarative configuration of the ConfigMapProjection type for use
    +// ConfigMapProjectionApplyConfiguration represents a declarative configuration of the ConfigMapProjection type for use
     // with apply.
     type ConfigMapProjectionApplyConfiguration struct {
     	LocalObjectReferenceApplyConfiguration `json:",inline"`
    @@ -26,7 +26,7 @@ type ConfigMapProjectionApplyConfiguration struct {
     	Optional                               *bool                         `json:"optional,omitempty"`
     }
     
    -// ConfigMapProjectionApplyConfiguration constructs an declarative configuration of the ConfigMapProjection type for use with
    +// ConfigMapProjectionApplyConfiguration constructs a declarative configuration of the ConfigMapProjection type for use with
     // apply.
     func ConfigMapProjection() *ConfigMapProjectionApplyConfiguration {
     	return &ConfigMapProjectionApplyConfiguration{}
    @@ -36,7 +36,7 @@ func ConfigMapProjection() *ConfigMapProjectionApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ConfigMapProjectionApplyConfiguration) WithName(value string) *ConfigMapProjectionApplyConfiguration {
    -	b.Name = &value
    +	b.LocalObjectReferenceApplyConfiguration.Name = &value
     	return b
     }
     
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapvolumesource.go
    index deaebde31990..b5f410397757 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ConfigMapVolumeSourceApplyConfiguration represents an declarative configuration of the ConfigMapVolumeSource type for use
    +// ConfigMapVolumeSourceApplyConfiguration represents a declarative configuration of the ConfigMapVolumeSource type for use
     // with apply.
     type ConfigMapVolumeSourceApplyConfiguration struct {
     	LocalObjectReferenceApplyConfiguration `json:",inline"`
    @@ -27,7 +27,7 @@ type ConfigMapVolumeSourceApplyConfiguration struct {
     	Optional                               *bool                         `json:"optional,omitempty"`
     }
     
    -// ConfigMapVolumeSourceApplyConfiguration constructs an declarative configuration of the ConfigMapVolumeSource type for use with
    +// ConfigMapVolumeSourceApplyConfiguration constructs a declarative configuration of the ConfigMapVolumeSource type for use with
     // apply.
     func ConfigMapVolumeSource() *ConfigMapVolumeSourceApplyConfiguration {
     	return &ConfigMapVolumeSourceApplyConfiguration{}
    @@ -37,7 +37,7 @@ func ConfigMapVolumeSource() *ConfigMapVolumeSourceApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ConfigMapVolumeSourceApplyConfiguration) WithName(value string) *ConfigMapVolumeSourceApplyConfiguration {
    -	b.Name = &value
    +	b.LocalObjectReferenceApplyConfiguration.Name = &value
     	return b
     }
     
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/container.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/container.go
    index 32d715606314..eed5f7d0273c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/container.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/container.go
    @@ -22,7 +22,7 @@ import (
     	corev1 "k8s.io/api/core/v1"
     )
     
    -// ContainerApplyConfiguration represents an declarative configuration of the Container type for use
    +// ContainerApplyConfiguration represents a declarative configuration of the Container type for use
     // with apply.
     type ContainerApplyConfiguration struct {
     	Name                     *string                                   `json:"name,omitempty"`
    @@ -51,7 +51,7 @@ type ContainerApplyConfiguration struct {
     	TTY                      *bool                                     `json:"tty,omitempty"`
     }
     
    -// ContainerApplyConfiguration constructs an declarative configuration of the Container type for use with
    +// ContainerApplyConfiguration constructs a declarative configuration of the Container type for use with
     // apply.
     func Container() *ContainerApplyConfiguration {
     	return &ContainerApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerimage.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerimage.go
    index d5c874a7cec8..bc9428fd10ed 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerimage.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerimage.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ContainerImageApplyConfiguration represents an declarative configuration of the ContainerImage type for use
    +// ContainerImageApplyConfiguration represents a declarative configuration of the ContainerImage type for use
     // with apply.
     type ContainerImageApplyConfiguration struct {
     	Names     []string `json:"names,omitempty"`
     	SizeBytes *int64   `json:"sizeBytes,omitempty"`
     }
     
    -// ContainerImageApplyConfiguration constructs an declarative configuration of the ContainerImage type for use with
    +// ContainerImageApplyConfiguration constructs a declarative configuration of the ContainerImage type for use with
     // apply.
     func ContainerImage() *ContainerImageApplyConfiguration {
     	return &ContainerImageApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerport.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerport.go
    index a23ad9268a2f..2ad47b3a9610 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerport.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerport.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// ContainerPortApplyConfiguration represents an declarative configuration of the ContainerPort type for use
    +// ContainerPortApplyConfiguration represents a declarative configuration of the ContainerPort type for use
     // with apply.
     type ContainerPortApplyConfiguration struct {
    -	Name          *string      `json:"name,omitempty"`
    -	HostPort      *int32       `json:"hostPort,omitempty"`
    -	ContainerPort *int32       `json:"containerPort,omitempty"`
    -	Protocol      *v1.Protocol `json:"protocol,omitempty"`
    -	HostIP        *string      `json:"hostIP,omitempty"`
    +	Name          *string          `json:"name,omitempty"`
    +	HostPort      *int32           `json:"hostPort,omitempty"`
    +	ContainerPort *int32           `json:"containerPort,omitempty"`
    +	Protocol      *corev1.Protocol `json:"protocol,omitempty"`
    +	HostIP        *string          `json:"hostIP,omitempty"`
     }
     
    -// ContainerPortApplyConfiguration constructs an declarative configuration of the ContainerPort type for use with
    +// ContainerPortApplyConfiguration constructs a declarative configuration of the ContainerPort type for use with
     // apply.
     func ContainerPort() *ContainerPortApplyConfiguration {
     	return &ContainerPortApplyConfiguration{}
    @@ -65,7 +65,7 @@ func (b *ContainerPortApplyConfiguration) WithContainerPort(value int32) *Contai
     // WithProtocol sets the Protocol field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Protocol field is set to the value of the last call.
    -func (b *ContainerPortApplyConfiguration) WithProtocol(value v1.Protocol) *ContainerPortApplyConfiguration {
    +func (b *ContainerPortApplyConfiguration) WithProtocol(value corev1.Protocol) *ContainerPortApplyConfiguration {
     	b.Protocol = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerresizepolicy.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerresizepolicy.go
    index bbbcbc9f1387..d45dbceaf9f0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerresizepolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerresizepolicy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// ContainerResizePolicyApplyConfiguration represents an declarative configuration of the ContainerResizePolicy type for use
    +// ContainerResizePolicyApplyConfiguration represents a declarative configuration of the ContainerResizePolicy type for use
     // with apply.
     type ContainerResizePolicyApplyConfiguration struct {
    -	ResourceName  *v1.ResourceName                `json:"resourceName,omitempty"`
    -	RestartPolicy *v1.ResourceResizeRestartPolicy `json:"restartPolicy,omitempty"`
    +	ResourceName  *corev1.ResourceName                `json:"resourceName,omitempty"`
    +	RestartPolicy *corev1.ResourceResizeRestartPolicy `json:"restartPolicy,omitempty"`
     }
     
    -// ContainerResizePolicyApplyConfiguration constructs an declarative configuration of the ContainerResizePolicy type for use with
    +// ContainerResizePolicyApplyConfiguration constructs a declarative configuration of the ContainerResizePolicy type for use with
     // apply.
     func ContainerResizePolicy() *ContainerResizePolicyApplyConfiguration {
     	return &ContainerResizePolicyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func ContainerResizePolicy() *ContainerResizePolicyApplyConfiguration {
     // WithResourceName sets the ResourceName field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ResourceName field is set to the value of the last call.
    -func (b *ContainerResizePolicyApplyConfiguration) WithResourceName(value v1.ResourceName) *ContainerResizePolicyApplyConfiguration {
    +func (b *ContainerResizePolicyApplyConfiguration) WithResourceName(value corev1.ResourceName) *ContainerResizePolicyApplyConfiguration {
     	b.ResourceName = &value
     	return b
     }
    @@ -46,7 +46,7 @@ func (b *ContainerResizePolicyApplyConfiguration) WithResourceName(value v1.Reso
     // WithRestartPolicy sets the RestartPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the RestartPolicy field is set to the value of the last call.
    -func (b *ContainerResizePolicyApplyConfiguration) WithRestartPolicy(value v1.ResourceResizeRestartPolicy) *ContainerResizePolicyApplyConfiguration {
    +func (b *ContainerResizePolicyApplyConfiguration) WithRestartPolicy(value corev1.ResourceResizeRestartPolicy) *ContainerResizePolicyApplyConfiguration {
     	b.RestartPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstate.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstate.go
    index 6cbfc7fd9bb0..b958e0177421 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstate.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstate.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ContainerStateApplyConfiguration represents an declarative configuration of the ContainerState type for use
    +// ContainerStateApplyConfiguration represents a declarative configuration of the ContainerState type for use
     // with apply.
     type ContainerStateApplyConfiguration struct {
     	Waiting    *ContainerStateWaitingApplyConfiguration    `json:"waiting,omitempty"`
    @@ -26,7 +26,7 @@ type ContainerStateApplyConfiguration struct {
     	Terminated *ContainerStateTerminatedApplyConfiguration `json:"terminated,omitempty"`
     }
     
    -// ContainerStateApplyConfiguration constructs an declarative configuration of the ContainerState type for use with
    +// ContainerStateApplyConfiguration constructs a declarative configuration of the ContainerState type for use with
     // apply.
     func ContainerState() *ContainerStateApplyConfiguration {
     	return &ContainerStateApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstaterunning.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstaterunning.go
    index 6c1d7311e7a2..0ed59c177450 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstaterunning.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstaterunning.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// ContainerStateRunningApplyConfiguration represents an declarative configuration of the ContainerStateRunning type for use
    +// ContainerStateRunningApplyConfiguration represents a declarative configuration of the ContainerStateRunning type for use
     // with apply.
     type ContainerStateRunningApplyConfiguration struct {
    -	StartedAt *v1.Time `json:"startedAt,omitempty"`
    +	StartedAt *metav1.Time `json:"startedAt,omitempty"`
     }
     
    -// ContainerStateRunningApplyConfiguration constructs an declarative configuration of the ContainerStateRunning type for use with
    +// ContainerStateRunningApplyConfiguration constructs a declarative configuration of the ContainerStateRunning type for use with
     // apply.
     func ContainerStateRunning() *ContainerStateRunningApplyConfiguration {
     	return &ContainerStateRunningApplyConfiguration{}
    @@ -37,7 +37,7 @@ func ContainerStateRunning() *ContainerStateRunningApplyConfiguration {
     // WithStartedAt sets the StartedAt field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the StartedAt field is set to the value of the last call.
    -func (b *ContainerStateRunningApplyConfiguration) WithStartedAt(value v1.Time) *ContainerStateRunningApplyConfiguration {
    +func (b *ContainerStateRunningApplyConfiguration) WithStartedAt(value metav1.Time) *ContainerStateRunningApplyConfiguration {
     	b.StartedAt = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstateterminated.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstateterminated.go
    index 0383c9dd9dd0..cfadd93c99f7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstateterminated.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstateterminated.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// ContainerStateTerminatedApplyConfiguration represents an declarative configuration of the ContainerStateTerminated type for use
    +// ContainerStateTerminatedApplyConfiguration represents a declarative configuration of the ContainerStateTerminated type for use
     // with apply.
     type ContainerStateTerminatedApplyConfiguration struct {
    -	ExitCode    *int32   `json:"exitCode,omitempty"`
    -	Signal      *int32   `json:"signal,omitempty"`
    -	Reason      *string  `json:"reason,omitempty"`
    -	Message     *string  `json:"message,omitempty"`
    -	StartedAt   *v1.Time `json:"startedAt,omitempty"`
    -	FinishedAt  *v1.Time `json:"finishedAt,omitempty"`
    -	ContainerID *string  `json:"containerID,omitempty"`
    +	ExitCode    *int32       `json:"exitCode,omitempty"`
    +	Signal      *int32       `json:"signal,omitempty"`
    +	Reason      *string      `json:"reason,omitempty"`
    +	Message     *string      `json:"message,omitempty"`
    +	StartedAt   *metav1.Time `json:"startedAt,omitempty"`
    +	FinishedAt  *metav1.Time `json:"finishedAt,omitempty"`
    +	ContainerID *string      `json:"containerID,omitempty"`
     }
     
    -// ContainerStateTerminatedApplyConfiguration constructs an declarative configuration of the ContainerStateTerminated type for use with
    +// ContainerStateTerminatedApplyConfiguration constructs a declarative configuration of the ContainerStateTerminated type for use with
     // apply.
     func ContainerStateTerminated() *ContainerStateTerminatedApplyConfiguration {
     	return &ContainerStateTerminatedApplyConfiguration{}
    @@ -75,7 +75,7 @@ func (b *ContainerStateTerminatedApplyConfiguration) WithMessage(value string) *
     // WithStartedAt sets the StartedAt field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the StartedAt field is set to the value of the last call.
    -func (b *ContainerStateTerminatedApplyConfiguration) WithStartedAt(value v1.Time) *ContainerStateTerminatedApplyConfiguration {
    +func (b *ContainerStateTerminatedApplyConfiguration) WithStartedAt(value metav1.Time) *ContainerStateTerminatedApplyConfiguration {
     	b.StartedAt = &value
     	return b
     }
    @@ -83,7 +83,7 @@ func (b *ContainerStateTerminatedApplyConfiguration) WithStartedAt(value v1.Time
     // WithFinishedAt sets the FinishedAt field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the FinishedAt field is set to the value of the last call.
    -func (b *ContainerStateTerminatedApplyConfiguration) WithFinishedAt(value v1.Time) *ContainerStateTerminatedApplyConfiguration {
    +func (b *ContainerStateTerminatedApplyConfiguration) WithFinishedAt(value metav1.Time) *ContainerStateTerminatedApplyConfiguration {
     	b.FinishedAt = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstatewaiting.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstatewaiting.go
    index e51b778c0de7..7756c7da03ae 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstatewaiting.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstatewaiting.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ContainerStateWaitingApplyConfiguration represents an declarative configuration of the ContainerStateWaiting type for use
    +// ContainerStateWaitingApplyConfiguration represents a declarative configuration of the ContainerStateWaiting type for use
     // with apply.
     type ContainerStateWaitingApplyConfiguration struct {
     	Reason  *string `json:"reason,omitempty"`
     	Message *string `json:"message,omitempty"`
     }
     
    -// ContainerStateWaitingApplyConfiguration constructs an declarative configuration of the ContainerStateWaiting type for use with
    +// ContainerStateWaitingApplyConfiguration constructs a declarative configuration of the ContainerStateWaiting type for use with
     // apply.
     func ContainerStateWaiting() *ContainerStateWaitingApplyConfiguration {
     	return &ContainerStateWaitingApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstatus.go
    index 2b98c4658f2c..6a28939c2fe0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstatus.go
    @@ -22,23 +22,26 @@ import (
     	corev1 "k8s.io/api/core/v1"
     )
     
    -// ContainerStatusApplyConfiguration represents an declarative configuration of the ContainerStatus type for use
    +// ContainerStatusApplyConfiguration represents a declarative configuration of the ContainerStatus type for use
     // with apply.
     type ContainerStatusApplyConfiguration struct {
    -	Name                 *string                                 `json:"name,omitempty"`
    -	State                *ContainerStateApplyConfiguration       `json:"state,omitempty"`
    -	LastTerminationState *ContainerStateApplyConfiguration       `json:"lastState,omitempty"`
    -	Ready                *bool                                   `json:"ready,omitempty"`
    -	RestartCount         *int32                                  `json:"restartCount,omitempty"`
    -	Image                *string                                 `json:"image,omitempty"`
    -	ImageID              *string                                 `json:"imageID,omitempty"`
    -	ContainerID          *string                                 `json:"containerID,omitempty"`
    -	Started              *bool                                   `json:"started,omitempty"`
    -	AllocatedResources   *corev1.ResourceList                    `json:"allocatedResources,omitempty"`
    -	Resources            *ResourceRequirementsApplyConfiguration `json:"resources,omitempty"`
    -}
    -
    -// ContainerStatusApplyConfiguration constructs an declarative configuration of the ContainerStatus type for use with
    +	Name                     *string                                 `json:"name,omitempty"`
    +	State                    *ContainerStateApplyConfiguration       `json:"state,omitempty"`
    +	LastTerminationState     *ContainerStateApplyConfiguration       `json:"lastState,omitempty"`
    +	Ready                    *bool                                   `json:"ready,omitempty"`
    +	RestartCount             *int32                                  `json:"restartCount,omitempty"`
    +	Image                    *string                                 `json:"image,omitempty"`
    +	ImageID                  *string                                 `json:"imageID,omitempty"`
    +	ContainerID              *string                                 `json:"containerID,omitempty"`
    +	Started                  *bool                                   `json:"started,omitempty"`
    +	AllocatedResources       *corev1.ResourceList                    `json:"allocatedResources,omitempty"`
    +	Resources                *ResourceRequirementsApplyConfiguration `json:"resources,omitempty"`
    +	VolumeMounts             []VolumeMountStatusApplyConfiguration   `json:"volumeMounts,omitempty"`
    +	User                     *ContainerUserApplyConfiguration        `json:"user,omitempty"`
    +	AllocatedResourcesStatus []ResourceStatusApplyConfiguration      `json:"allocatedResourcesStatus,omitempty"`
    +}
    +
    +// ContainerStatusApplyConfiguration constructs a declarative configuration of the ContainerStatus type for use with
     // apply.
     func ContainerStatus() *ContainerStatusApplyConfiguration {
     	return &ContainerStatusApplyConfiguration{}
    @@ -131,3 +134,37 @@ func (b *ContainerStatusApplyConfiguration) WithResources(value *ResourceRequire
     	b.Resources = value
     	return b
     }
    +
    +// WithVolumeMounts adds the given value to the VolumeMounts field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the VolumeMounts field.
    +func (b *ContainerStatusApplyConfiguration) WithVolumeMounts(values ...*VolumeMountStatusApplyConfiguration) *ContainerStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithVolumeMounts")
    +		}
    +		b.VolumeMounts = append(b.VolumeMounts, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithUser sets the User field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the User field is set to the value of the last call.
    +func (b *ContainerStatusApplyConfiguration) WithUser(value *ContainerUserApplyConfiguration) *ContainerStatusApplyConfiguration {
    +	b.User = value
    +	return b
    +}
    +
    +// WithAllocatedResourcesStatus adds the given value to the AllocatedResourcesStatus field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the AllocatedResourcesStatus field.
    +func (b *ContainerStatusApplyConfiguration) WithAllocatedResourcesStatus(values ...*ResourceStatusApplyConfiguration) *ContainerStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithAllocatedResourcesStatus")
    +		}
    +		b.AllocatedResourcesStatus = append(b.AllocatedResourcesStatus, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/containeruser.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containeruser.go
    new file mode 100644
    index 000000000000..34ec8e414652
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/containeruser.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// ContainerUserApplyConfiguration represents a declarative configuration of the ContainerUser type for use
    +// with apply.
    +type ContainerUserApplyConfiguration struct {
    +	Linux *LinuxContainerUserApplyConfiguration `json:"linux,omitempty"`
    +}
    +
    +// ContainerUserApplyConfiguration constructs a declarative configuration of the ContainerUser type for use with
    +// apply.
    +func ContainerUser() *ContainerUserApplyConfiguration {
    +	return &ContainerUserApplyConfiguration{}
    +}
    +
    +// WithLinux sets the Linux field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Linux field is set to the value of the last call.
    +func (b *ContainerUserApplyConfiguration) WithLinux(value *LinuxContainerUserApplyConfiguration) *ContainerUserApplyConfiguration {
    +	b.Linux = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/csipersistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/csipersistentvolumesource.go
    index 2fc681604e21..a614d10805b6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/csipersistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/csipersistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CSIPersistentVolumeSourceApplyConfiguration represents an declarative configuration of the CSIPersistentVolumeSource type for use
    +// CSIPersistentVolumeSourceApplyConfiguration represents a declarative configuration of the CSIPersistentVolumeSource type for use
     // with apply.
     type CSIPersistentVolumeSourceApplyConfiguration struct {
     	Driver                     *string                            `json:"driver,omitempty"`
    @@ -33,7 +33,7 @@ type CSIPersistentVolumeSourceApplyConfiguration struct {
     	NodeExpandSecretRef        *SecretReferenceApplyConfiguration `json:"nodeExpandSecretRef,omitempty"`
     }
     
    -// CSIPersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the CSIPersistentVolumeSource type for use with
    +// CSIPersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the CSIPersistentVolumeSource type for use with
     // apply.
     func CSIPersistentVolumeSource() *CSIPersistentVolumeSourceApplyConfiguration {
     	return &CSIPersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/csivolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/csivolumesource.go
    index c2a32df8d03b..b58d9bbb4b59 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/csivolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/csivolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CSIVolumeSourceApplyConfiguration represents an declarative configuration of the CSIVolumeSource type for use
    +// CSIVolumeSourceApplyConfiguration represents a declarative configuration of the CSIVolumeSource type for use
     // with apply.
     type CSIVolumeSourceApplyConfiguration struct {
     	Driver               *string                                 `json:"driver,omitempty"`
    @@ -28,7 +28,7 @@ type CSIVolumeSourceApplyConfiguration struct {
     	NodePublishSecretRef *LocalObjectReferenceApplyConfiguration `json:"nodePublishSecretRef,omitempty"`
     }
     
    -// CSIVolumeSourceApplyConfiguration constructs an declarative configuration of the CSIVolumeSource type for use with
    +// CSIVolumeSourceApplyConfiguration constructs a declarative configuration of the CSIVolumeSource type for use with
     // apply.
     func CSIVolumeSource() *CSIVolumeSourceApplyConfiguration {
     	return &CSIVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/daemonendpoint.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/daemonendpoint.go
    index 13a2e948f1bc..5be27ec0c572 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/daemonendpoint.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/daemonendpoint.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// DaemonEndpointApplyConfiguration represents an declarative configuration of the DaemonEndpoint type for use
    +// DaemonEndpointApplyConfiguration represents a declarative configuration of the DaemonEndpoint type for use
     // with apply.
     type DaemonEndpointApplyConfiguration struct {
     	Port *int32 `json:"Port,omitempty"`
     }
     
    -// DaemonEndpointApplyConfiguration constructs an declarative configuration of the DaemonEndpoint type for use with
    +// DaemonEndpointApplyConfiguration constructs a declarative configuration of the DaemonEndpoint type for use with
     // apply.
     func DaemonEndpoint() *DaemonEndpointApplyConfiguration {
     	return &DaemonEndpointApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapiprojection.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapiprojection.go
    index f88a87c0b5ab..ed6b8b1bbe40 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapiprojection.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapiprojection.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// DownwardAPIProjectionApplyConfiguration represents an declarative configuration of the DownwardAPIProjection type for use
    +// DownwardAPIProjectionApplyConfiguration represents a declarative configuration of the DownwardAPIProjection type for use
     // with apply.
     type DownwardAPIProjectionApplyConfiguration struct {
     	Items []DownwardAPIVolumeFileApplyConfiguration `json:"items,omitempty"`
     }
     
    -// DownwardAPIProjectionApplyConfiguration constructs an declarative configuration of the DownwardAPIProjection type for use with
    +// DownwardAPIProjectionApplyConfiguration constructs a declarative configuration of the DownwardAPIProjection type for use with
     // apply.
     func DownwardAPIProjection() *DownwardAPIProjectionApplyConfiguration {
     	return &DownwardAPIProjectionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapivolumefile.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapivolumefile.go
    index b25ff25fa99d..ec9d013dd948 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapivolumefile.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapivolumefile.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// DownwardAPIVolumeFileApplyConfiguration represents an declarative configuration of the DownwardAPIVolumeFile type for use
    +// DownwardAPIVolumeFileApplyConfiguration represents a declarative configuration of the DownwardAPIVolumeFile type for use
     // with apply.
     type DownwardAPIVolumeFileApplyConfiguration struct {
     	Path             *string                                  `json:"path,omitempty"`
    @@ -27,7 +27,7 @@ type DownwardAPIVolumeFileApplyConfiguration struct {
     	Mode             *int32                                   `json:"mode,omitempty"`
     }
     
    -// DownwardAPIVolumeFileApplyConfiguration constructs an declarative configuration of the DownwardAPIVolumeFile type for use with
    +// DownwardAPIVolumeFileApplyConfiguration constructs a declarative configuration of the DownwardAPIVolumeFile type for use with
     // apply.
     func DownwardAPIVolumeFile() *DownwardAPIVolumeFileApplyConfiguration {
     	return &DownwardAPIVolumeFileApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapivolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapivolumesource.go
    index 6913bb521821..eef9d7ef8d5c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapivolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapivolumesource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// DownwardAPIVolumeSourceApplyConfiguration represents an declarative configuration of the DownwardAPIVolumeSource type for use
    +// DownwardAPIVolumeSourceApplyConfiguration represents a declarative configuration of the DownwardAPIVolumeSource type for use
     // with apply.
     type DownwardAPIVolumeSourceApplyConfiguration struct {
     	Items       []DownwardAPIVolumeFileApplyConfiguration `json:"items,omitempty"`
     	DefaultMode *int32                                    `json:"defaultMode,omitempty"`
     }
     
    -// DownwardAPIVolumeSourceApplyConfiguration constructs an declarative configuration of the DownwardAPIVolumeSource type for use with
    +// DownwardAPIVolumeSourceApplyConfiguration constructs a declarative configuration of the DownwardAPIVolumeSource type for use with
     // apply.
     func DownwardAPIVolumeSource() *DownwardAPIVolumeSourceApplyConfiguration {
     	return &DownwardAPIVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/emptydirvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/emptydirvolumesource.go
    index 021280daf642..63e9f56ab712 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/emptydirvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/emptydirvolumesource.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	resource "k8s.io/apimachinery/pkg/api/resource"
     )
     
    -// EmptyDirVolumeSourceApplyConfiguration represents an declarative configuration of the EmptyDirVolumeSource type for use
    +// EmptyDirVolumeSourceApplyConfiguration represents a declarative configuration of the EmptyDirVolumeSource type for use
     // with apply.
     type EmptyDirVolumeSourceApplyConfiguration struct {
    -	Medium    *v1.StorageMedium  `json:"medium,omitempty"`
    -	SizeLimit *resource.Quantity `json:"sizeLimit,omitempty"`
    +	Medium    *corev1.StorageMedium `json:"medium,omitempty"`
    +	SizeLimit *resource.Quantity    `json:"sizeLimit,omitempty"`
     }
     
    -// EmptyDirVolumeSourceApplyConfiguration constructs an declarative configuration of the EmptyDirVolumeSource type for use with
    +// EmptyDirVolumeSourceApplyConfiguration constructs a declarative configuration of the EmptyDirVolumeSource type for use with
     // apply.
     func EmptyDirVolumeSource() *EmptyDirVolumeSourceApplyConfiguration {
     	return &EmptyDirVolumeSourceApplyConfiguration{}
    @@ -39,7 +39,7 @@ func EmptyDirVolumeSource() *EmptyDirVolumeSourceApplyConfiguration {
     // WithMedium sets the Medium field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Medium field is set to the value of the last call.
    -func (b *EmptyDirVolumeSourceApplyConfiguration) WithMedium(value v1.StorageMedium) *EmptyDirVolumeSourceApplyConfiguration {
    +func (b *EmptyDirVolumeSourceApplyConfiguration) WithMedium(value corev1.StorageMedium) *EmptyDirVolumeSourceApplyConfiguration {
     	b.Medium = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointaddress.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointaddress.go
    index 52a54b6008ac..536e697a9a64 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointaddress.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointaddress.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// EndpointAddressApplyConfiguration represents an declarative configuration of the EndpointAddress type for use
    +// EndpointAddressApplyConfiguration represents a declarative configuration of the EndpointAddress type for use
     // with apply.
     type EndpointAddressApplyConfiguration struct {
     	IP        *string                            `json:"ip,omitempty"`
    @@ -27,7 +27,7 @@ type EndpointAddressApplyConfiguration struct {
     	TargetRef *ObjectReferenceApplyConfiguration `json:"targetRef,omitempty"`
     }
     
    -// EndpointAddressApplyConfiguration constructs an declarative configuration of the EndpointAddress type for use with
    +// EndpointAddressApplyConfiguration constructs a declarative configuration of the EndpointAddress type for use with
     // apply.
     func EndpointAddress() *EndpointAddressApplyConfiguration {
     	return &EndpointAddressApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointport.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointport.go
    index cc00d0e4917a..05ee64ddca47 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointport.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointport.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// EndpointPortApplyConfiguration represents an declarative configuration of the EndpointPort type for use
    +// EndpointPortApplyConfiguration represents a declarative configuration of the EndpointPort type for use
     // with apply.
     type EndpointPortApplyConfiguration struct {
    -	Name        *string      `json:"name,omitempty"`
    -	Port        *int32       `json:"port,omitempty"`
    -	Protocol    *v1.Protocol `json:"protocol,omitempty"`
    -	AppProtocol *string      `json:"appProtocol,omitempty"`
    +	Name        *string          `json:"name,omitempty"`
    +	Port        *int32           `json:"port,omitempty"`
    +	Protocol    *corev1.Protocol `json:"protocol,omitempty"`
    +	AppProtocol *string          `json:"appProtocol,omitempty"`
     }
     
    -// EndpointPortApplyConfiguration constructs an declarative configuration of the EndpointPort type for use with
    +// EndpointPortApplyConfiguration constructs a declarative configuration of the EndpointPort type for use with
     // apply.
     func EndpointPort() *EndpointPortApplyConfiguration {
     	return &EndpointPortApplyConfiguration{}
    @@ -56,7 +56,7 @@ func (b *EndpointPortApplyConfiguration) WithPort(value int32) *EndpointPortAppl
     // WithProtocol sets the Protocol field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Protocol field is set to the value of the last call.
    -func (b *EndpointPortApplyConfiguration) WithProtocol(value v1.Protocol) *EndpointPortApplyConfiguration {
    +func (b *EndpointPortApplyConfiguration) WithProtocol(value corev1.Protocol) *EndpointPortApplyConfiguration {
     	b.Protocol = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpoints.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpoints.go
    index b98fed085824..d2f910196dec 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpoints.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpoints.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// EndpointsApplyConfiguration represents an declarative configuration of the Endpoints type for use
    +// EndpointsApplyConfiguration represents a declarative configuration of the Endpoints type for use
     // with apply.
     type EndpointsApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Subsets                          []EndpointSubsetApplyConfiguration `json:"subsets,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Subsets                              []EndpointSubsetApplyConfiguration `json:"subsets,omitempty"`
     }
     
    -// Endpoints constructs an declarative configuration of the Endpoints type for use with
    +// Endpoints constructs a declarative configuration of the Endpoints type for use with
     // apply.
     func Endpoints(name, namespace string) *EndpointsApplyConfiguration {
     	b := &EndpointsApplyConfiguration{}
    @@ -57,18 +57,18 @@ func Endpoints(name, namespace string) *EndpointsApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractEndpoints(endpoints *apicorev1.Endpoints, fieldManager string) (*EndpointsApplyConfiguration, error) {
    +func ExtractEndpoints(endpoints *corev1.Endpoints, fieldManager string) (*EndpointsApplyConfiguration, error) {
     	return extractEndpoints(endpoints, fieldManager, "")
     }
     
     // ExtractEndpointsStatus is the same as ExtractEndpoints except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractEndpointsStatus(endpoints *apicorev1.Endpoints, fieldManager string) (*EndpointsApplyConfiguration, error) {
    +func ExtractEndpointsStatus(endpoints *corev1.Endpoints, fieldManager string) (*EndpointsApplyConfiguration, error) {
     	return extractEndpoints(endpoints, fieldManager, "status")
     }
     
    -func extractEndpoints(endpoints *apicorev1.Endpoints, fieldManager string, subresource string) (*EndpointsApplyConfiguration, error) {
    +func extractEndpoints(endpoints *corev1.Endpoints, fieldManager string, subresource string) (*EndpointsApplyConfiguration, error) {
     	b := &EndpointsApplyConfiguration{}
     	err := managedfields.ExtractInto(endpoints, internal.Parser().Type("io.k8s.api.core.v1.Endpoints"), fieldManager, b, subresource)
     	if err != nil {
    @@ -86,7 +86,7 @@ func extractEndpoints(endpoints *apicorev1.Endpoints, fieldManager string, subre
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *EndpointsApplyConfiguration) WithKind(value string) *EndpointsApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *EndpointsApplyConfiguration) WithKind(value string) *EndpointsApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *EndpointsApplyConfiguration) WithAPIVersion(value string) *EndpointsApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *EndpointsApplyConfiguration) WithAPIVersion(value string) *EndpointsApp
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *EndpointsApplyConfiguration) WithName(value string) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *EndpointsApplyConfiguration) WithName(value string) *EndpointsApplyConf
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *EndpointsApplyConfiguration) WithGenerateName(value string) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *EndpointsApplyConfiguration) WithGenerateName(value string) *EndpointsA
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *EndpointsApplyConfiguration) WithNamespace(value string) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *EndpointsApplyConfiguration) WithNamespace(value string) *EndpointsAppl
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *EndpointsApplyConfiguration) WithUID(value types.UID) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *EndpointsApplyConfiguration) WithUID(value types.UID) *EndpointsApplyCo
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *EndpointsApplyConfiguration) WithResourceVersion(value string) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,25 +148,25 @@ func (b *EndpointsApplyConfiguration) WithResourceVersion(value string) *Endpoin
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *EndpointsApplyConfiguration) WithGeneration(value int64) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *EndpointsApplyConfiguration) WithCreationTimestamp(value metav1.Time) *EndpointsApplyConfiguration {
    +func (b *EndpointsApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *EndpointsApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *EndpointsApplyConfiguration {
    +func (b *EndpointsApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *EndpointsApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *EndpointsApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *EndpointsApplyConfiguration) WithDeletionGracePeriodSeconds(value int64
     // overwriting an existing map entries in Labels field with the same key.
     func (b *EndpointsApplyConfiguration) WithLabels(entries map[string]string) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *EndpointsApplyConfiguration) WithLabels(entries map[string]string) *End
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *EndpointsApplyConfiguration) WithAnnotations(entries map[string]string) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -212,13 +212,13 @@ func (b *EndpointsApplyConfiguration) WithAnnotations(entries map[string]string)
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *EndpointsApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *EndpointsApplyConfiguration {
    +func (b *EndpointsApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,14 +229,14 @@ func (b *EndpointsApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     func (b *EndpointsApplyConfiguration) WithFinalizers(values ...string) *EndpointsApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *EndpointsApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -252,3 +252,9 @@ func (b *EndpointsApplyConfiguration) WithSubsets(values ...*EndpointSubsetApply
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *EndpointsApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointsubset.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointsubset.go
    index cd0657a80ce0..33cd8496a733 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointsubset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointsubset.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// EndpointSubsetApplyConfiguration represents an declarative configuration of the EndpointSubset type for use
    +// EndpointSubsetApplyConfiguration represents a declarative configuration of the EndpointSubset type for use
     // with apply.
     type EndpointSubsetApplyConfiguration struct {
     	Addresses         []EndpointAddressApplyConfiguration `json:"addresses,omitempty"`
    @@ -26,7 +26,7 @@ type EndpointSubsetApplyConfiguration struct {
     	Ports             []EndpointPortApplyConfiguration    `json:"ports,omitempty"`
     }
     
    -// EndpointSubsetApplyConfiguration constructs an declarative configuration of the EndpointSubset type for use with
    +// EndpointSubsetApplyConfiguration constructs a declarative configuration of the EndpointSubset type for use with
     // apply.
     func EndpointSubset() *EndpointSubsetApplyConfiguration {
     	return &EndpointSubsetApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/envfromsource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/envfromsource.go
    index 9e46d25ded7f..7aa181cf1a07 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/envfromsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/envfromsource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// EnvFromSourceApplyConfiguration represents an declarative configuration of the EnvFromSource type for use
    +// EnvFromSourceApplyConfiguration represents a declarative configuration of the EnvFromSource type for use
     // with apply.
     type EnvFromSourceApplyConfiguration struct {
     	Prefix       *string                               `json:"prefix,omitempty"`
    @@ -26,7 +26,7 @@ type EnvFromSourceApplyConfiguration struct {
     	SecretRef    *SecretEnvSourceApplyConfiguration    `json:"secretRef,omitempty"`
     }
     
    -// EnvFromSourceApplyConfiguration constructs an declarative configuration of the EnvFromSource type for use with
    +// EnvFromSourceApplyConfiguration constructs a declarative configuration of the EnvFromSource type for use with
     // apply.
     func EnvFromSource() *EnvFromSourceApplyConfiguration {
     	return &EnvFromSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/envvar.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/envvar.go
    index a83528a28e48..5894166ca4b3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/envvar.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/envvar.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// EnvVarApplyConfiguration represents an declarative configuration of the EnvVar type for use
    +// EnvVarApplyConfiguration represents a declarative configuration of the EnvVar type for use
     // with apply.
     type EnvVarApplyConfiguration struct {
     	Name      *string                         `json:"name,omitempty"`
    @@ -26,7 +26,7 @@ type EnvVarApplyConfiguration struct {
     	ValueFrom *EnvVarSourceApplyConfiguration `json:"valueFrom,omitempty"`
     }
     
    -// EnvVarApplyConfiguration constructs an declarative configuration of the EnvVar type for use with
    +// EnvVarApplyConfiguration constructs a declarative configuration of the EnvVar type for use with
     // apply.
     func EnvVar() *EnvVarApplyConfiguration {
     	return &EnvVarApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/envvarsource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/envvarsource.go
    index 70c695bd5bb0..a3a55ea7af47 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/envvarsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/envvarsource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// EnvVarSourceApplyConfiguration represents an declarative configuration of the EnvVarSource type for use
    +// EnvVarSourceApplyConfiguration represents a declarative configuration of the EnvVarSource type for use
     // with apply.
     type EnvVarSourceApplyConfiguration struct {
     	FieldRef         *ObjectFieldSelectorApplyConfiguration   `json:"fieldRef,omitempty"`
    @@ -27,7 +27,7 @@ type EnvVarSourceApplyConfiguration struct {
     	SecretKeyRef     *SecretKeySelectorApplyConfiguration     `json:"secretKeyRef,omitempty"`
     }
     
    -// EnvVarSourceApplyConfiguration constructs an declarative configuration of the EnvVarSource type for use with
    +// EnvVarSourceApplyConfiguration constructs a declarative configuration of the EnvVarSource type for use with
     // apply.
     func EnvVarSource() *EnvVarSourceApplyConfiguration {
     	return &EnvVarSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralcontainer.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralcontainer.go
    index 5fa79a246ec8..4b74439fc10e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralcontainer.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralcontainer.go
    @@ -22,14 +22,14 @@ import (
     	corev1 "k8s.io/api/core/v1"
     )
     
    -// EphemeralContainerApplyConfiguration represents an declarative configuration of the EphemeralContainer type for use
    +// EphemeralContainerApplyConfiguration represents a declarative configuration of the EphemeralContainer type for use
     // with apply.
     type EphemeralContainerApplyConfiguration struct {
     	EphemeralContainerCommonApplyConfiguration `json:",inline"`
     	TargetContainerName                        *string `json:"targetContainerName,omitempty"`
     }
     
    -// EphemeralContainerApplyConfiguration constructs an declarative configuration of the EphemeralContainer type for use with
    +// EphemeralContainerApplyConfiguration constructs a declarative configuration of the EphemeralContainer type for use with
     // apply.
     func EphemeralContainer() *EphemeralContainerApplyConfiguration {
     	return &EphemeralContainerApplyConfiguration{}
    @@ -39,7 +39,7 @@ func EphemeralContainer() *EphemeralContainerApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithName(value string) *EphemeralContainerApplyConfiguration {
    -	b.Name = &value
    +	b.EphemeralContainerCommonApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -47,7 +47,7 @@ func (b *EphemeralContainerApplyConfiguration) WithName(value string) *Ephemeral
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Image field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithImage(value string) *EphemeralContainerApplyConfiguration {
    -	b.Image = &value
    +	b.EphemeralContainerCommonApplyConfiguration.Image = &value
     	return b
     }
     
    @@ -56,7 +56,7 @@ func (b *EphemeralContainerApplyConfiguration) WithImage(value string) *Ephemera
     // If called multiple times, values provided by each call will be appended to the Command field.
     func (b *EphemeralContainerApplyConfiguration) WithCommand(values ...string) *EphemeralContainerApplyConfiguration {
     	for i := range values {
    -		b.Command = append(b.Command, values[i])
    +		b.EphemeralContainerCommonApplyConfiguration.Command = append(b.EphemeralContainerCommonApplyConfiguration.Command, values[i])
     	}
     	return b
     }
    @@ -66,7 +66,7 @@ func (b *EphemeralContainerApplyConfiguration) WithCommand(values ...string) *Ep
     // If called multiple times, values provided by each call will be appended to the Args field.
     func (b *EphemeralContainerApplyConfiguration) WithArgs(values ...string) *EphemeralContainerApplyConfiguration {
     	for i := range values {
    -		b.Args = append(b.Args, values[i])
    +		b.EphemeralContainerCommonApplyConfiguration.Args = append(b.EphemeralContainerCommonApplyConfiguration.Args, values[i])
     	}
     	return b
     }
    @@ -75,7 +75,7 @@ func (b *EphemeralContainerApplyConfiguration) WithArgs(values ...string) *Ephem
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the WorkingDir field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithWorkingDir(value string) *EphemeralContainerApplyConfiguration {
    -	b.WorkingDir = &value
    +	b.EphemeralContainerCommonApplyConfiguration.WorkingDir = &value
     	return b
     }
     
    @@ -87,7 +87,7 @@ func (b *EphemeralContainerApplyConfiguration) WithPorts(values ...*ContainerPor
     		if values[i] == nil {
     			panic("nil value passed to WithPorts")
     		}
    -		b.Ports = append(b.Ports, *values[i])
    +		b.EphemeralContainerCommonApplyConfiguration.Ports = append(b.EphemeralContainerCommonApplyConfiguration.Ports, *values[i])
     	}
     	return b
     }
    @@ -100,7 +100,7 @@ func (b *EphemeralContainerApplyConfiguration) WithEnvFrom(values ...*EnvFromSou
     		if values[i] == nil {
     			panic("nil value passed to WithEnvFrom")
     		}
    -		b.EnvFrom = append(b.EnvFrom, *values[i])
    +		b.EphemeralContainerCommonApplyConfiguration.EnvFrom = append(b.EphemeralContainerCommonApplyConfiguration.EnvFrom, *values[i])
     	}
     	return b
     }
    @@ -113,7 +113,7 @@ func (b *EphemeralContainerApplyConfiguration) WithEnv(values ...*EnvVarApplyCon
     		if values[i] == nil {
     			panic("nil value passed to WithEnv")
     		}
    -		b.Env = append(b.Env, *values[i])
    +		b.EphemeralContainerCommonApplyConfiguration.Env = append(b.EphemeralContainerCommonApplyConfiguration.Env, *values[i])
     	}
     	return b
     }
    @@ -122,7 +122,7 @@ func (b *EphemeralContainerApplyConfiguration) WithEnv(values ...*EnvVarApplyCon
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Resources field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithResources(value *ResourceRequirementsApplyConfiguration) *EphemeralContainerApplyConfiguration {
    -	b.Resources = value
    +	b.EphemeralContainerCommonApplyConfiguration.Resources = value
     	return b
     }
     
    @@ -134,7 +134,7 @@ func (b *EphemeralContainerApplyConfiguration) WithResizePolicy(values ...*Conta
     		if values[i] == nil {
     			panic("nil value passed to WithResizePolicy")
     		}
    -		b.ResizePolicy = append(b.ResizePolicy, *values[i])
    +		b.EphemeralContainerCommonApplyConfiguration.ResizePolicy = append(b.EphemeralContainerCommonApplyConfiguration.ResizePolicy, *values[i])
     	}
     	return b
     }
    @@ -143,7 +143,7 @@ func (b *EphemeralContainerApplyConfiguration) WithResizePolicy(values ...*Conta
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the RestartPolicy field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithRestartPolicy(value corev1.ContainerRestartPolicy) *EphemeralContainerApplyConfiguration {
    -	b.RestartPolicy = &value
    +	b.EphemeralContainerCommonApplyConfiguration.RestartPolicy = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *EphemeralContainerApplyConfiguration) WithVolumeMounts(values ...*Volum
     		if values[i] == nil {
     			panic("nil value passed to WithVolumeMounts")
     		}
    -		b.VolumeMounts = append(b.VolumeMounts, *values[i])
    +		b.EphemeralContainerCommonApplyConfiguration.VolumeMounts = append(b.EphemeralContainerCommonApplyConfiguration.VolumeMounts, *values[i])
     	}
     	return b
     }
    @@ -168,7 +168,7 @@ func (b *EphemeralContainerApplyConfiguration) WithVolumeDevices(values ...*Volu
     		if values[i] == nil {
     			panic("nil value passed to WithVolumeDevices")
     		}
    -		b.VolumeDevices = append(b.VolumeDevices, *values[i])
    +		b.EphemeralContainerCommonApplyConfiguration.VolumeDevices = append(b.EphemeralContainerCommonApplyConfiguration.VolumeDevices, *values[i])
     	}
     	return b
     }
    @@ -177,7 +177,7 @@ func (b *EphemeralContainerApplyConfiguration) WithVolumeDevices(values ...*Volu
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the LivenessProbe field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithLivenessProbe(value *ProbeApplyConfiguration) *EphemeralContainerApplyConfiguration {
    -	b.LivenessProbe = value
    +	b.EphemeralContainerCommonApplyConfiguration.LivenessProbe = value
     	return b
     }
     
    @@ -185,7 +185,7 @@ func (b *EphemeralContainerApplyConfiguration) WithLivenessProbe(value *ProbeApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ReadinessProbe field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithReadinessProbe(value *ProbeApplyConfiguration) *EphemeralContainerApplyConfiguration {
    -	b.ReadinessProbe = value
    +	b.EphemeralContainerCommonApplyConfiguration.ReadinessProbe = value
     	return b
     }
     
    @@ -193,7 +193,7 @@ func (b *EphemeralContainerApplyConfiguration) WithReadinessProbe(value *ProbeAp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the StartupProbe field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithStartupProbe(value *ProbeApplyConfiguration) *EphemeralContainerApplyConfiguration {
    -	b.StartupProbe = value
    +	b.EphemeralContainerCommonApplyConfiguration.StartupProbe = value
     	return b
     }
     
    @@ -201,7 +201,7 @@ func (b *EphemeralContainerApplyConfiguration) WithStartupProbe(value *ProbeAppl
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Lifecycle field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithLifecycle(value *LifecycleApplyConfiguration) *EphemeralContainerApplyConfiguration {
    -	b.Lifecycle = value
    +	b.EphemeralContainerCommonApplyConfiguration.Lifecycle = value
     	return b
     }
     
    @@ -209,7 +209,7 @@ func (b *EphemeralContainerApplyConfiguration) WithLifecycle(value *LifecycleApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the TerminationMessagePath field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithTerminationMessagePath(value string) *EphemeralContainerApplyConfiguration {
    -	b.TerminationMessagePath = &value
    +	b.EphemeralContainerCommonApplyConfiguration.TerminationMessagePath = &value
     	return b
     }
     
    @@ -217,7 +217,7 @@ func (b *EphemeralContainerApplyConfiguration) WithTerminationMessagePath(value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the TerminationMessagePolicy field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithTerminationMessagePolicy(value corev1.TerminationMessagePolicy) *EphemeralContainerApplyConfiguration {
    -	b.TerminationMessagePolicy = &value
    +	b.EphemeralContainerCommonApplyConfiguration.TerminationMessagePolicy = &value
     	return b
     }
     
    @@ -225,7 +225,7 @@ func (b *EphemeralContainerApplyConfiguration) WithTerminationMessagePolicy(valu
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ImagePullPolicy field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithImagePullPolicy(value corev1.PullPolicy) *EphemeralContainerApplyConfiguration {
    -	b.ImagePullPolicy = &value
    +	b.EphemeralContainerCommonApplyConfiguration.ImagePullPolicy = &value
     	return b
     }
     
    @@ -233,7 +233,7 @@ func (b *EphemeralContainerApplyConfiguration) WithImagePullPolicy(value corev1.
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the SecurityContext field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithSecurityContext(value *SecurityContextApplyConfiguration) *EphemeralContainerApplyConfiguration {
    -	b.SecurityContext = value
    +	b.EphemeralContainerCommonApplyConfiguration.SecurityContext = value
     	return b
     }
     
    @@ -241,7 +241,7 @@ func (b *EphemeralContainerApplyConfiguration) WithSecurityContext(value *Securi
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Stdin field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithStdin(value bool) *EphemeralContainerApplyConfiguration {
    -	b.Stdin = &value
    +	b.EphemeralContainerCommonApplyConfiguration.Stdin = &value
     	return b
     }
     
    @@ -249,7 +249,7 @@ func (b *EphemeralContainerApplyConfiguration) WithStdin(value bool) *EphemeralC
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the StdinOnce field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithStdinOnce(value bool) *EphemeralContainerApplyConfiguration {
    -	b.StdinOnce = &value
    +	b.EphemeralContainerCommonApplyConfiguration.StdinOnce = &value
     	return b
     }
     
    @@ -257,7 +257,7 @@ func (b *EphemeralContainerApplyConfiguration) WithStdinOnce(value bool) *Epheme
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the TTY field is set to the value of the last call.
     func (b *EphemeralContainerApplyConfiguration) WithTTY(value bool) *EphemeralContainerApplyConfiguration {
    -	b.TTY = &value
    +	b.EphemeralContainerCommonApplyConfiguration.TTY = &value
     	return b
     }
     
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralcontainercommon.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralcontainercommon.go
    index 8cded29a9ecb..d5d13d27a07a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralcontainercommon.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralcontainercommon.go
    @@ -22,7 +22,7 @@ import (
     	corev1 "k8s.io/api/core/v1"
     )
     
    -// EphemeralContainerCommonApplyConfiguration represents an declarative configuration of the EphemeralContainerCommon type for use
    +// EphemeralContainerCommonApplyConfiguration represents a declarative configuration of the EphemeralContainerCommon type for use
     // with apply.
     type EphemeralContainerCommonApplyConfiguration struct {
     	Name                     *string                                   `json:"name,omitempty"`
    @@ -51,7 +51,7 @@ type EphemeralContainerCommonApplyConfiguration struct {
     	TTY                      *bool                                     `json:"tty,omitempty"`
     }
     
    -// EphemeralContainerCommonApplyConfiguration constructs an declarative configuration of the EphemeralContainerCommon type for use with
    +// EphemeralContainerCommonApplyConfiguration constructs a declarative configuration of the EphemeralContainerCommon type for use with
     // apply.
     func EphemeralContainerCommon() *EphemeralContainerCommonApplyConfiguration {
     	return &EphemeralContainerCommonApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralvolumesource.go
    index 31859404ccff..d2c8c6722e8a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralvolumesource.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// EphemeralVolumeSourceApplyConfiguration represents an declarative configuration of the EphemeralVolumeSource type for use
    +// EphemeralVolumeSourceApplyConfiguration represents a declarative configuration of the EphemeralVolumeSource type for use
     // with apply.
     type EphemeralVolumeSourceApplyConfiguration struct {
     	VolumeClaimTemplate *PersistentVolumeClaimTemplateApplyConfiguration `json:"volumeClaimTemplate,omitempty"`
     }
     
    -// EphemeralVolumeSourceApplyConfiguration constructs an declarative configuration of the EphemeralVolumeSource type for use with
    +// EphemeralVolumeSourceApplyConfiguration constructs a declarative configuration of the EphemeralVolumeSource type for use with
     // apply.
     func EphemeralVolumeSource() *EphemeralVolumeSourceApplyConfiguration {
     	return &EphemeralVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/event.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/event.go
    index 60aff6b5b24f..9496ea77339a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/event.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/event.go
    @@ -19,36 +19,36 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// EventApplyConfiguration represents an declarative configuration of the Event type for use
    +// EventApplyConfiguration represents a declarative configuration of the Event type for use
     // with apply.
     type EventApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	InvolvedObject                   *ObjectReferenceApplyConfiguration `json:"involvedObject,omitempty"`
    -	Reason                           *string                            `json:"reason,omitempty"`
    -	Message                          *string                            `json:"message,omitempty"`
    -	Source                           *EventSourceApplyConfiguration     `json:"source,omitempty"`
    -	FirstTimestamp                   *metav1.Time                       `json:"firstTimestamp,omitempty"`
    -	LastTimestamp                    *metav1.Time                       `json:"lastTimestamp,omitempty"`
    -	Count                            *int32                             `json:"count,omitempty"`
    -	Type                             *string                            `json:"type,omitempty"`
    -	EventTime                        *metav1.MicroTime                  `json:"eventTime,omitempty"`
    -	Series                           *EventSeriesApplyConfiguration     `json:"series,omitempty"`
    -	Action                           *string                            `json:"action,omitempty"`
    -	Related                          *ObjectReferenceApplyConfiguration `json:"related,omitempty"`
    -	ReportingController              *string                            `json:"reportingComponent,omitempty"`
    -	ReportingInstance                *string                            `json:"reportingInstance,omitempty"`
    -}
    -
    -// Event constructs an declarative configuration of the Event type for use with
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	InvolvedObject                       *ObjectReferenceApplyConfiguration `json:"involvedObject,omitempty"`
    +	Reason                               *string                            `json:"reason,omitempty"`
    +	Message                              *string                            `json:"message,omitempty"`
    +	Source                               *EventSourceApplyConfiguration     `json:"source,omitempty"`
    +	FirstTimestamp                       *apismetav1.Time                   `json:"firstTimestamp,omitempty"`
    +	LastTimestamp                        *apismetav1.Time                   `json:"lastTimestamp,omitempty"`
    +	Count                                *int32                             `json:"count,omitempty"`
    +	Type                                 *string                            `json:"type,omitempty"`
    +	EventTime                            *apismetav1.MicroTime              `json:"eventTime,omitempty"`
    +	Series                               *EventSeriesApplyConfiguration     `json:"series,omitempty"`
    +	Action                               *string                            `json:"action,omitempty"`
    +	Related                              *ObjectReferenceApplyConfiguration `json:"related,omitempty"`
    +	ReportingController                  *string                            `json:"reportingComponent,omitempty"`
    +	ReportingInstance                    *string                            `json:"reportingInstance,omitempty"`
    +}
    +
    +// Event constructs a declarative configuration of the Event type for use with
     // apply.
     func Event(name, namespace string) *EventApplyConfiguration {
     	b := &EventApplyConfiguration{}
    @@ -70,18 +70,18 @@ func Event(name, namespace string) *EventApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractEvent(event *apicorev1.Event, fieldManager string) (*EventApplyConfiguration, error) {
    +func ExtractEvent(event *corev1.Event, fieldManager string) (*EventApplyConfiguration, error) {
     	return extractEvent(event, fieldManager, "")
     }
     
     // ExtractEventStatus is the same as ExtractEvent except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractEventStatus(event *apicorev1.Event, fieldManager string) (*EventApplyConfiguration, error) {
    +func ExtractEventStatus(event *corev1.Event, fieldManager string) (*EventApplyConfiguration, error) {
     	return extractEvent(event, fieldManager, "status")
     }
     
    -func extractEvent(event *apicorev1.Event, fieldManager string, subresource string) (*EventApplyConfiguration, error) {
    +func extractEvent(event *corev1.Event, fieldManager string, subresource string) (*EventApplyConfiguration, error) {
     	b := &EventApplyConfiguration{}
     	err := managedfields.ExtractInto(event, internal.Parser().Type("io.k8s.api.core.v1.Event"), fieldManager, b, subresource)
     	if err != nil {
    @@ -99,7 +99,7 @@ func extractEvent(event *apicorev1.Event, fieldManager string, subresource strin
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithKind(value string) *EventApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -107,7 +107,7 @@ func (b *EventApplyConfiguration) WithKind(value string) *EventApplyConfiguratio
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithAPIVersion(value string) *EventApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -116,7 +116,7 @@ func (b *EventApplyConfiguration) WithAPIVersion(value string) *EventApplyConfig
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithName(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -125,7 +125,7 @@ func (b *EventApplyConfiguration) WithName(value string) *EventApplyConfiguratio
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithGenerateName(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -134,7 +134,7 @@ func (b *EventApplyConfiguration) WithGenerateName(value string) *EventApplyConf
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithNamespace(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -143,7 +143,7 @@ func (b *EventApplyConfiguration) WithNamespace(value string) *EventApplyConfigu
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithUID(value types.UID) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -152,7 +152,7 @@ func (b *EventApplyConfiguration) WithUID(value types.UID) *EventApplyConfigurat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithResourceVersion(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -161,25 +161,25 @@ func (b *EventApplyConfiguration) WithResourceVersion(value string) *EventApplyC
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithGeneration(value int64) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *EventApplyConfiguration) WithCreationTimestamp(value metav1.Time) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *EventApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -188,7 +188,7 @@ func (b *EventApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Even
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -198,11 +198,11 @@ func (b *EventApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *E
     // overwriting an existing map entries in Labels field with the same key.
     func (b *EventApplyConfiguration) WithLabels(entries map[string]string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -213,11 +213,11 @@ func (b *EventApplyConfiguration) WithLabels(entries map[string]string) *EventAp
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *EventApplyConfiguration) WithAnnotations(entries map[string]string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -225,13 +225,13 @@ func (b *EventApplyConfiguration) WithAnnotations(entries map[string]string) *Ev
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *EventApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -242,14 +242,14 @@ func (b *EventApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     func (b *EventApplyConfiguration) WithFinalizers(values ...string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *EventApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -288,7 +288,7 @@ func (b *EventApplyConfiguration) WithSource(value *EventSourceApplyConfiguratio
     // WithFirstTimestamp sets the FirstTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the FirstTimestamp field is set to the value of the last call.
    -func (b *EventApplyConfiguration) WithFirstTimestamp(value metav1.Time) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithFirstTimestamp(value apismetav1.Time) *EventApplyConfiguration {
     	b.FirstTimestamp = &value
     	return b
     }
    @@ -296,7 +296,7 @@ func (b *EventApplyConfiguration) WithFirstTimestamp(value metav1.Time) *EventAp
     // WithLastTimestamp sets the LastTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the LastTimestamp field is set to the value of the last call.
    -func (b *EventApplyConfiguration) WithLastTimestamp(value metav1.Time) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithLastTimestamp(value apismetav1.Time) *EventApplyConfiguration {
     	b.LastTimestamp = &value
     	return b
     }
    @@ -320,7 +320,7 @@ func (b *EventApplyConfiguration) WithType(value string) *EventApplyConfiguratio
     // WithEventTime sets the EventTime field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the EventTime field is set to the value of the last call.
    -func (b *EventApplyConfiguration) WithEventTime(value metav1.MicroTime) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithEventTime(value apismetav1.MicroTime) *EventApplyConfiguration {
     	b.EventTime = &value
     	return b
     }
    @@ -364,3 +364,9 @@ func (b *EventApplyConfiguration) WithReportingInstance(value string) *EventAppl
     	b.ReportingInstance = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *EventApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/eventseries.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/eventseries.go
    index e66fb412712b..c90954bccbd8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/eventseries.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/eventseries.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// EventSeriesApplyConfiguration represents an declarative configuration of the EventSeries type for use
    +// EventSeriesApplyConfiguration represents a declarative configuration of the EventSeries type for use
     // with apply.
     type EventSeriesApplyConfiguration struct {
    -	Count            *int32        `json:"count,omitempty"`
    -	LastObservedTime *v1.MicroTime `json:"lastObservedTime,omitempty"`
    +	Count            *int32            `json:"count,omitempty"`
    +	LastObservedTime *metav1.MicroTime `json:"lastObservedTime,omitempty"`
     }
     
    -// EventSeriesApplyConfiguration constructs an declarative configuration of the EventSeries type for use with
    +// EventSeriesApplyConfiguration constructs a declarative configuration of the EventSeries type for use with
     // apply.
     func EventSeries() *EventSeriesApplyConfiguration {
     	return &EventSeriesApplyConfiguration{}
    @@ -46,7 +46,7 @@ func (b *EventSeriesApplyConfiguration) WithCount(value int32) *EventSeriesApply
     // WithLastObservedTime sets the LastObservedTime field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the LastObservedTime field is set to the value of the last call.
    -func (b *EventSeriesApplyConfiguration) WithLastObservedTime(value v1.MicroTime) *EventSeriesApplyConfiguration {
    +func (b *EventSeriesApplyConfiguration) WithLastObservedTime(value metav1.MicroTime) *EventSeriesApplyConfiguration {
     	b.LastObservedTime = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/eventsource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/eventsource.go
    index 2eb4aa8e4491..97edb049310a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/eventsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/eventsource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// EventSourceApplyConfiguration represents an declarative configuration of the EventSource type for use
    +// EventSourceApplyConfiguration represents a declarative configuration of the EventSource type for use
     // with apply.
     type EventSourceApplyConfiguration struct {
     	Component *string `json:"component,omitempty"`
     	Host      *string `json:"host,omitempty"`
     }
     
    -// EventSourceApplyConfiguration constructs an declarative configuration of the EventSource type for use with
    +// EventSourceApplyConfiguration constructs a declarative configuration of the EventSource type for use with
     // apply.
     func EventSource() *EventSourceApplyConfiguration {
     	return &EventSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/execaction.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/execaction.go
    index 1df52144d7a5..b7208a91cfe8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/execaction.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/execaction.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// ExecActionApplyConfiguration represents an declarative configuration of the ExecAction type for use
    +// ExecActionApplyConfiguration represents a declarative configuration of the ExecAction type for use
     // with apply.
     type ExecActionApplyConfiguration struct {
     	Command []string `json:"command,omitempty"`
     }
     
    -// ExecActionApplyConfiguration constructs an declarative configuration of the ExecAction type for use with
    +// ExecActionApplyConfiguration constructs a declarative configuration of the ExecAction type for use with
     // apply.
     func ExecAction() *ExecActionApplyConfiguration {
     	return &ExecActionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/fcvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/fcvolumesource.go
    index 43069de9a612..000ff2cc62d8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/fcvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/fcvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// FCVolumeSourceApplyConfiguration represents an declarative configuration of the FCVolumeSource type for use
    +// FCVolumeSourceApplyConfiguration represents a declarative configuration of the FCVolumeSource type for use
     // with apply.
     type FCVolumeSourceApplyConfiguration struct {
     	TargetWWNs []string `json:"targetWWNs,omitempty"`
    @@ -28,7 +28,7 @@ type FCVolumeSourceApplyConfiguration struct {
     	WWIDs      []string `json:"wwids,omitempty"`
     }
     
    -// FCVolumeSourceApplyConfiguration constructs an declarative configuration of the FCVolumeSource type for use with
    +// FCVolumeSourceApplyConfiguration constructs a declarative configuration of the FCVolumeSource type for use with
     // apply.
     func FCVolumeSource() *FCVolumeSourceApplyConfiguration {
     	return &FCVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/flexpersistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/flexpersistentvolumesource.go
    index 47e7c746eefe..355c2c82d073 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/flexpersistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/flexpersistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// FlexPersistentVolumeSourceApplyConfiguration represents an declarative configuration of the FlexPersistentVolumeSource type for use
    +// FlexPersistentVolumeSourceApplyConfiguration represents a declarative configuration of the FlexPersistentVolumeSource type for use
     // with apply.
     type FlexPersistentVolumeSourceApplyConfiguration struct {
     	Driver    *string                            `json:"driver,omitempty"`
    @@ -28,7 +28,7 @@ type FlexPersistentVolumeSourceApplyConfiguration struct {
     	Options   map[string]string                  `json:"options,omitempty"`
     }
     
    -// FlexPersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the FlexPersistentVolumeSource type for use with
    +// FlexPersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the FlexPersistentVolumeSource type for use with
     // apply.
     func FlexPersistentVolumeSource() *FlexPersistentVolumeSourceApplyConfiguration {
     	return &FlexPersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/flexvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/flexvolumesource.go
    index 7c09516a9899..08ae9e1bead0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/flexvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/flexvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// FlexVolumeSourceApplyConfiguration represents an declarative configuration of the FlexVolumeSource type for use
    +// FlexVolumeSourceApplyConfiguration represents a declarative configuration of the FlexVolumeSource type for use
     // with apply.
     type FlexVolumeSourceApplyConfiguration struct {
     	Driver    *string                                 `json:"driver,omitempty"`
    @@ -28,7 +28,7 @@ type FlexVolumeSourceApplyConfiguration struct {
     	Options   map[string]string                       `json:"options,omitempty"`
     }
     
    -// FlexVolumeSourceApplyConfiguration constructs an declarative configuration of the FlexVolumeSource type for use with
    +// FlexVolumeSourceApplyConfiguration constructs a declarative configuration of the FlexVolumeSource type for use with
     // apply.
     func FlexVolumeSource() *FlexVolumeSourceApplyConfiguration {
     	return &FlexVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/flockervolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/flockervolumesource.go
    index 74896d55ac4a..e4ecbba0e48c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/flockervolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/flockervolumesource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// FlockerVolumeSourceApplyConfiguration represents an declarative configuration of the FlockerVolumeSource type for use
    +// FlockerVolumeSourceApplyConfiguration represents a declarative configuration of the FlockerVolumeSource type for use
     // with apply.
     type FlockerVolumeSourceApplyConfiguration struct {
     	DatasetName *string `json:"datasetName,omitempty"`
     	DatasetUUID *string `json:"datasetUUID,omitempty"`
     }
     
    -// FlockerVolumeSourceApplyConfiguration constructs an declarative configuration of the FlockerVolumeSource type for use with
    +// FlockerVolumeSourceApplyConfiguration constructs a declarative configuration of the FlockerVolumeSource type for use with
     // apply.
     func FlockerVolumeSource() *FlockerVolumeSourceApplyConfiguration {
     	return &FlockerVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/gcepersistentdiskvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/gcepersistentdiskvolumesource.go
    index 0869d3eaa67e..56c4d03fa214 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/gcepersistentdiskvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/gcepersistentdiskvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// GCEPersistentDiskVolumeSourceApplyConfiguration represents an declarative configuration of the GCEPersistentDiskVolumeSource type for use
    +// GCEPersistentDiskVolumeSourceApplyConfiguration represents a declarative configuration of the GCEPersistentDiskVolumeSource type for use
     // with apply.
     type GCEPersistentDiskVolumeSourceApplyConfiguration struct {
     	PDName    *string `json:"pdName,omitempty"`
    @@ -27,7 +27,7 @@ type GCEPersistentDiskVolumeSourceApplyConfiguration struct {
     	ReadOnly  *bool   `json:"readOnly,omitempty"`
     }
     
    -// GCEPersistentDiskVolumeSourceApplyConfiguration constructs an declarative configuration of the GCEPersistentDiskVolumeSource type for use with
    +// GCEPersistentDiskVolumeSourceApplyConfiguration constructs a declarative configuration of the GCEPersistentDiskVolumeSource type for use with
     // apply.
     func GCEPersistentDiskVolumeSource() *GCEPersistentDiskVolumeSourceApplyConfiguration {
     	return &GCEPersistentDiskVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/gitrepovolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/gitrepovolumesource.go
    index 825e02e4e4c0..4ed92317c871 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/gitrepovolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/gitrepovolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// GitRepoVolumeSourceApplyConfiguration represents an declarative configuration of the GitRepoVolumeSource type for use
    +// GitRepoVolumeSourceApplyConfiguration represents a declarative configuration of the GitRepoVolumeSource type for use
     // with apply.
     type GitRepoVolumeSourceApplyConfiguration struct {
     	Repository *string `json:"repository,omitempty"`
    @@ -26,7 +26,7 @@ type GitRepoVolumeSourceApplyConfiguration struct {
     	Directory  *string `json:"directory,omitempty"`
     }
     
    -// GitRepoVolumeSourceApplyConfiguration constructs an declarative configuration of the GitRepoVolumeSource type for use with
    +// GitRepoVolumeSourceApplyConfiguration constructs a declarative configuration of the GitRepoVolumeSource type for use with
     // apply.
     func GitRepoVolumeSource() *GitRepoVolumeSourceApplyConfiguration {
     	return &GitRepoVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/glusterfspersistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/glusterfspersistentvolumesource.go
    index 21a3925e52da..c9a23ca5d740 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/glusterfspersistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/glusterfspersistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// GlusterfsPersistentVolumeSourceApplyConfiguration represents an declarative configuration of the GlusterfsPersistentVolumeSource type for use
    +// GlusterfsPersistentVolumeSourceApplyConfiguration represents a declarative configuration of the GlusterfsPersistentVolumeSource type for use
     // with apply.
     type GlusterfsPersistentVolumeSourceApplyConfiguration struct {
     	EndpointsName      *string `json:"endpoints,omitempty"`
    @@ -27,7 +27,7 @@ type GlusterfsPersistentVolumeSourceApplyConfiguration struct {
     	EndpointsNamespace *string `json:"endpointsNamespace,omitempty"`
     }
     
    -// GlusterfsPersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the GlusterfsPersistentVolumeSource type for use with
    +// GlusterfsPersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the GlusterfsPersistentVolumeSource type for use with
     // apply.
     func GlusterfsPersistentVolumeSource() *GlusterfsPersistentVolumeSourceApplyConfiguration {
     	return &GlusterfsPersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/glusterfsvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/glusterfsvolumesource.go
    index 7ce6f0b399b8..8c27f8c70d1c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/glusterfsvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/glusterfsvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// GlusterfsVolumeSourceApplyConfiguration represents an declarative configuration of the GlusterfsVolumeSource type for use
    +// GlusterfsVolumeSourceApplyConfiguration represents a declarative configuration of the GlusterfsVolumeSource type for use
     // with apply.
     type GlusterfsVolumeSourceApplyConfiguration struct {
     	EndpointsName *string `json:"endpoints,omitempty"`
    @@ -26,7 +26,7 @@ type GlusterfsVolumeSourceApplyConfiguration struct {
     	ReadOnly      *bool   `json:"readOnly,omitempty"`
     }
     
    -// GlusterfsVolumeSourceApplyConfiguration constructs an declarative configuration of the GlusterfsVolumeSource type for use with
    +// GlusterfsVolumeSourceApplyConfiguration constructs a declarative configuration of the GlusterfsVolumeSource type for use with
     // apply.
     func GlusterfsVolumeSource() *GlusterfsVolumeSourceApplyConfiguration {
     	return &GlusterfsVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/grpcaction.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/grpcaction.go
    index f94e55937ab3..0f3a886714db 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/grpcaction.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/grpcaction.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// GRPCActionApplyConfiguration represents an declarative configuration of the GRPCAction type for use
    +// GRPCActionApplyConfiguration represents a declarative configuration of the GRPCAction type for use
     // with apply.
     type GRPCActionApplyConfiguration struct {
     	Port    *int32  `json:"port,omitempty"`
     	Service *string `json:"service,omitempty"`
     }
     
    -// GRPCActionApplyConfiguration constructs an declarative configuration of the GRPCAction type for use with
    +// GRPCActionApplyConfiguration constructs a declarative configuration of the GRPCAction type for use with
     // apply.
     func GRPCAction() *GRPCActionApplyConfiguration {
     	return &GRPCActionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostalias.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostalias.go
    index 861508ef53ab..ec9ea1741376 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostalias.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostalias.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// HostAliasApplyConfiguration represents an declarative configuration of the HostAlias type for use
    +// HostAliasApplyConfiguration represents a declarative configuration of the HostAlias type for use
     // with apply.
     type HostAliasApplyConfiguration struct {
     	IP        *string  `json:"ip,omitempty"`
     	Hostnames []string `json:"hostnames,omitempty"`
     }
     
    -// HostAliasApplyConfiguration constructs an declarative configuration of the HostAlias type for use with
    +// HostAliasApplyConfiguration constructs a declarative configuration of the HostAlias type for use with
     // apply.
     func HostAlias() *HostAliasApplyConfiguration {
     	return &HostAliasApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostip.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostip.go
    index c2a42cf74714..439b5ce2d6b0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostip.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostip.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// HostIPApplyConfiguration represents an declarative configuration of the HostIP type for use
    +// HostIPApplyConfiguration represents a declarative configuration of the HostIP type for use
     // with apply.
     type HostIPApplyConfiguration struct {
     	IP *string `json:"ip,omitempty"`
     }
     
    -// HostIPApplyConfiguration constructs an declarative configuration of the HostIP type for use with
    +// HostIPApplyConfiguration constructs a declarative configuration of the HostIP type for use with
     // apply.
     func HostIP() *HostIPApplyConfiguration {
     	return &HostIPApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostpathvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostpathvolumesource.go
    index 8b15689eef69..6a41d67cd06f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostpathvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostpathvolumesource.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// HostPathVolumeSourceApplyConfiguration represents an declarative configuration of the HostPathVolumeSource type for use
    +// HostPathVolumeSourceApplyConfiguration represents a declarative configuration of the HostPathVolumeSource type for use
     // with apply.
     type HostPathVolumeSourceApplyConfiguration struct {
    -	Path *string          `json:"path,omitempty"`
    -	Type *v1.HostPathType `json:"type,omitempty"`
    +	Path *string              `json:"path,omitempty"`
    +	Type *corev1.HostPathType `json:"type,omitempty"`
     }
     
    -// HostPathVolumeSourceApplyConfiguration constructs an declarative configuration of the HostPathVolumeSource type for use with
    +// HostPathVolumeSourceApplyConfiguration constructs a declarative configuration of the HostPathVolumeSource type for use with
     // apply.
     func HostPathVolumeSource() *HostPathVolumeSourceApplyConfiguration {
     	return &HostPathVolumeSourceApplyConfiguration{}
    @@ -46,7 +46,7 @@ func (b *HostPathVolumeSourceApplyConfiguration) WithPath(value string) *HostPat
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *HostPathVolumeSourceApplyConfiguration) WithType(value v1.HostPathType) *HostPathVolumeSourceApplyConfiguration {
    +func (b *HostPathVolumeSourceApplyConfiguration) WithType(value corev1.HostPathType) *HostPathVolumeSourceApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/httpgetaction.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/httpgetaction.go
    index e4ecdd43032c..ca61c5ae244a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/httpgetaction.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/httpgetaction.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// HTTPGetActionApplyConfiguration represents an declarative configuration of the HTTPGetAction type for use
    +// HTTPGetActionApplyConfiguration represents a declarative configuration of the HTTPGetAction type for use
     // with apply.
     type HTTPGetActionApplyConfiguration struct {
     	Path        *string                        `json:"path,omitempty"`
     	Port        *intstr.IntOrString            `json:"port,omitempty"`
     	Host        *string                        `json:"host,omitempty"`
    -	Scheme      *v1.URIScheme                  `json:"scheme,omitempty"`
    +	Scheme      *corev1.URIScheme              `json:"scheme,omitempty"`
     	HTTPHeaders []HTTPHeaderApplyConfiguration `json:"httpHeaders,omitempty"`
     }
     
    -// HTTPGetActionApplyConfiguration constructs an declarative configuration of the HTTPGetAction type for use with
    +// HTTPGetActionApplyConfiguration constructs a declarative configuration of the HTTPGetAction type for use with
     // apply.
     func HTTPGetAction() *HTTPGetActionApplyConfiguration {
     	return &HTTPGetActionApplyConfiguration{}
    @@ -66,7 +66,7 @@ func (b *HTTPGetActionApplyConfiguration) WithHost(value string) *HTTPGetActionA
     // WithScheme sets the Scheme field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Scheme field is set to the value of the last call.
    -func (b *HTTPGetActionApplyConfiguration) WithScheme(value v1.URIScheme) *HTTPGetActionApplyConfiguration {
    +func (b *HTTPGetActionApplyConfiguration) WithScheme(value corev1.URIScheme) *HTTPGetActionApplyConfiguration {
     	b.Scheme = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/httpheader.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/httpheader.go
    index d55f36bfd212..252637166994 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/httpheader.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/httpheader.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// HTTPHeaderApplyConfiguration represents an declarative configuration of the HTTPHeader type for use
    +// HTTPHeaderApplyConfiguration represents a declarative configuration of the HTTPHeader type for use
     // with apply.
     type HTTPHeaderApplyConfiguration struct {
     	Name  *string `json:"name,omitempty"`
     	Value *string `json:"value,omitempty"`
     }
     
    -// HTTPHeaderApplyConfiguration constructs an declarative configuration of the HTTPHeader type for use with
    +// HTTPHeaderApplyConfiguration constructs a declarative configuration of the HTTPHeader type for use with
     // apply.
     func HTTPHeader() *HTTPHeaderApplyConfiguration {
     	return &HTTPHeaderApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/imagevolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/imagevolumesource.go
    new file mode 100644
    index 000000000000..9a146e68526f
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/imagevolumesource.go
    @@ -0,0 +1,52 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	corev1 "k8s.io/api/core/v1"
    +)
    +
    +// ImageVolumeSourceApplyConfiguration represents a declarative configuration of the ImageVolumeSource type for use
    +// with apply.
    +type ImageVolumeSourceApplyConfiguration struct {
    +	Reference  *string            `json:"reference,omitempty"`
    +	PullPolicy *corev1.PullPolicy `json:"pullPolicy,omitempty"`
    +}
    +
    +// ImageVolumeSourceApplyConfiguration constructs a declarative configuration of the ImageVolumeSource type for use with
    +// apply.
    +func ImageVolumeSource() *ImageVolumeSourceApplyConfiguration {
    +	return &ImageVolumeSourceApplyConfiguration{}
    +}
    +
    +// WithReference sets the Reference field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Reference field is set to the value of the last call.
    +func (b *ImageVolumeSourceApplyConfiguration) WithReference(value string) *ImageVolumeSourceApplyConfiguration {
    +	b.Reference = &value
    +	return b
    +}
    +
    +// WithPullPolicy sets the PullPolicy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the PullPolicy field is set to the value of the last call.
    +func (b *ImageVolumeSourceApplyConfiguration) WithPullPolicy(value corev1.PullPolicy) *ImageVolumeSourceApplyConfiguration {
    +	b.PullPolicy = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/iscsipersistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/iscsipersistentvolumesource.go
    index c7b248181ae9..42f420c56867 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/iscsipersistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/iscsipersistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ISCSIPersistentVolumeSourceApplyConfiguration represents an declarative configuration of the ISCSIPersistentVolumeSource type for use
    +// ISCSIPersistentVolumeSourceApplyConfiguration represents a declarative configuration of the ISCSIPersistentVolumeSource type for use
     // with apply.
     type ISCSIPersistentVolumeSourceApplyConfiguration struct {
     	TargetPortal      *string                            `json:"targetPortal,omitempty"`
    @@ -34,7 +34,7 @@ type ISCSIPersistentVolumeSourceApplyConfiguration struct {
     	InitiatorName     *string                            `json:"initiatorName,omitempty"`
     }
     
    -// ISCSIPersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the ISCSIPersistentVolumeSource type for use with
    +// ISCSIPersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the ISCSIPersistentVolumeSource type for use with
     // apply.
     func ISCSIPersistentVolumeSource() *ISCSIPersistentVolumeSourceApplyConfiguration {
     	return &ISCSIPersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/iscsivolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/iscsivolumesource.go
    index c95941a9c7e8..61055434bce6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/iscsivolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/iscsivolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ISCSIVolumeSourceApplyConfiguration represents an declarative configuration of the ISCSIVolumeSource type for use
    +// ISCSIVolumeSourceApplyConfiguration represents a declarative configuration of the ISCSIVolumeSource type for use
     // with apply.
     type ISCSIVolumeSourceApplyConfiguration struct {
     	TargetPortal      *string                                 `json:"targetPortal,omitempty"`
    @@ -34,7 +34,7 @@ type ISCSIVolumeSourceApplyConfiguration struct {
     	InitiatorName     *string                                 `json:"initiatorName,omitempty"`
     }
     
    -// ISCSIVolumeSourceApplyConfiguration constructs an declarative configuration of the ISCSIVolumeSource type for use with
    +// ISCSIVolumeSourceApplyConfiguration constructs a declarative configuration of the ISCSIVolumeSource type for use with
     // apply.
     func ISCSIVolumeSource() *ISCSIVolumeSourceApplyConfiguration {
     	return &ISCSIVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/keytopath.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/keytopath.go
    index d58676d34cde..c961b07955b0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/keytopath.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/keytopath.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// KeyToPathApplyConfiguration represents an declarative configuration of the KeyToPath type for use
    +// KeyToPathApplyConfiguration represents a declarative configuration of the KeyToPath type for use
     // with apply.
     type KeyToPathApplyConfiguration struct {
     	Key  *string `json:"key,omitempty"`
    @@ -26,7 +26,7 @@ type KeyToPathApplyConfiguration struct {
     	Mode *int32  `json:"mode,omitempty"`
     }
     
    -// KeyToPathApplyConfiguration constructs an declarative configuration of the KeyToPath type for use with
    +// KeyToPathApplyConfiguration constructs a declarative configuration of the KeyToPath type for use with
     // apply.
     func KeyToPath() *KeyToPathApplyConfiguration {
     	return &KeyToPathApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/lifecycle.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/lifecycle.go
    index db9abf8af71c..e37a30f59759 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/lifecycle.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/lifecycle.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// LifecycleApplyConfiguration represents an declarative configuration of the Lifecycle type for use
    +// LifecycleApplyConfiguration represents a declarative configuration of the Lifecycle type for use
     // with apply.
     type LifecycleApplyConfiguration struct {
     	PostStart *LifecycleHandlerApplyConfiguration `json:"postStart,omitempty"`
     	PreStop   *LifecycleHandlerApplyConfiguration `json:"preStop,omitempty"`
     }
     
    -// LifecycleApplyConfiguration constructs an declarative configuration of the Lifecycle type for use with
    +// LifecycleApplyConfiguration constructs a declarative configuration of the Lifecycle type for use with
     // apply.
     func Lifecycle() *LifecycleApplyConfiguration {
     	return &LifecycleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/lifecyclehandler.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/lifecyclehandler.go
    index e4ae9c49f793..b7c706d58dd2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/lifecyclehandler.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/lifecyclehandler.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// LifecycleHandlerApplyConfiguration represents an declarative configuration of the LifecycleHandler type for use
    +// LifecycleHandlerApplyConfiguration represents a declarative configuration of the LifecycleHandler type for use
     // with apply.
     type LifecycleHandlerApplyConfiguration struct {
     	Exec      *ExecActionApplyConfiguration      `json:"exec,omitempty"`
    @@ -27,7 +27,7 @@ type LifecycleHandlerApplyConfiguration struct {
     	Sleep     *SleepActionApplyConfiguration     `json:"sleep,omitempty"`
     }
     
    -// LifecycleHandlerApplyConfiguration constructs an declarative configuration of the LifecycleHandler type for use with
    +// LifecycleHandlerApplyConfiguration constructs a declarative configuration of the LifecycleHandler type for use with
     // apply.
     func LifecycleHandler() *LifecycleHandlerApplyConfiguration {
     	return &LifecycleHandlerApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrange.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrange.go
    index eaf635c76aad..517cc4cd3c68 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrange.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrange.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// LimitRangeApplyConfiguration represents an declarative configuration of the LimitRange type for use
    +// LimitRangeApplyConfiguration represents a declarative configuration of the LimitRange type for use
     // with apply.
     type LimitRangeApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *LimitRangeSpecApplyConfiguration `json:"spec,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *LimitRangeSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// LimitRange constructs an declarative configuration of the LimitRange type for use with
    +// LimitRange constructs a declarative configuration of the LimitRange type for use with
     // apply.
     func LimitRange(name, namespace string) *LimitRangeApplyConfiguration {
     	b := &LimitRangeApplyConfiguration{}
    @@ -57,18 +57,18 @@ func LimitRange(name, namespace string) *LimitRangeApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractLimitRange(limitRange *apicorev1.LimitRange, fieldManager string) (*LimitRangeApplyConfiguration, error) {
    +func ExtractLimitRange(limitRange *corev1.LimitRange, fieldManager string) (*LimitRangeApplyConfiguration, error) {
     	return extractLimitRange(limitRange, fieldManager, "")
     }
     
     // ExtractLimitRangeStatus is the same as ExtractLimitRange except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractLimitRangeStatus(limitRange *apicorev1.LimitRange, fieldManager string) (*LimitRangeApplyConfiguration, error) {
    +func ExtractLimitRangeStatus(limitRange *corev1.LimitRange, fieldManager string) (*LimitRangeApplyConfiguration, error) {
     	return extractLimitRange(limitRange, fieldManager, "status")
     }
     
    -func extractLimitRange(limitRange *apicorev1.LimitRange, fieldManager string, subresource string) (*LimitRangeApplyConfiguration, error) {
    +func extractLimitRange(limitRange *corev1.LimitRange, fieldManager string, subresource string) (*LimitRangeApplyConfiguration, error) {
     	b := &LimitRangeApplyConfiguration{}
     	err := managedfields.ExtractInto(limitRange, internal.Parser().Type("io.k8s.api.core.v1.LimitRange"), fieldManager, b, subresource)
     	if err != nil {
    @@ -86,7 +86,7 @@ func extractLimitRange(limitRange *apicorev1.LimitRange, fieldManager string, su
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *LimitRangeApplyConfiguration) WithKind(value string) *LimitRangeApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *LimitRangeApplyConfiguration) WithKind(value string) *LimitRangeApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *LimitRangeApplyConfiguration) WithAPIVersion(value string) *LimitRangeApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *LimitRangeApplyConfiguration) WithAPIVersion(value string) *LimitRangeA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *LimitRangeApplyConfiguration) WithName(value string) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *LimitRangeApplyConfiguration) WithName(value string) *LimitRangeApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *LimitRangeApplyConfiguration) WithGenerateName(value string) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *LimitRangeApplyConfiguration) WithGenerateName(value string) *LimitRang
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *LimitRangeApplyConfiguration) WithNamespace(value string) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *LimitRangeApplyConfiguration) WithNamespace(value string) *LimitRangeAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *LimitRangeApplyConfiguration) WithUID(value types.UID) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *LimitRangeApplyConfiguration) WithUID(value types.UID) *LimitRangeApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *LimitRangeApplyConfiguration) WithResourceVersion(value string) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,25 +148,25 @@ func (b *LimitRangeApplyConfiguration) WithResourceVersion(value string) *LimitR
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *LimitRangeApplyConfiguration) WithGeneration(value int64) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *LimitRangeApplyConfiguration) WithCreationTimestamp(value metav1.Time) *LimitRangeApplyConfiguration {
    +func (b *LimitRangeApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *LimitRangeApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *LimitRangeApplyConfiguration {
    +func (b *LimitRangeApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *LimitRangeApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *LimitRangeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *LimitRangeApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *LimitRangeApplyConfiguration) WithLabels(entries map[string]string) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *LimitRangeApplyConfiguration) WithLabels(entries map[string]string) *Li
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *LimitRangeApplyConfiguration) WithAnnotations(entries map[string]string) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -212,13 +212,13 @@ func (b *LimitRangeApplyConfiguration) WithAnnotations(entries map[string]string
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *LimitRangeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *LimitRangeApplyConfiguration {
    +func (b *LimitRangeApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,14 +229,14 @@ func (b *LimitRangeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *LimitRangeApplyConfiguration) WithFinalizers(values ...string) *LimitRangeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *LimitRangeApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -247,3 +247,9 @@ func (b *LimitRangeApplyConfiguration) WithSpec(value *LimitRangeSpecApplyConfig
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *LimitRangeApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrangeitem.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrangeitem.go
    index 084650fdaac2..5ad8ac0e6e22 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrangeitem.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrangeitem.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// LimitRangeItemApplyConfiguration represents an declarative configuration of the LimitRangeItem type for use
    +// LimitRangeItemApplyConfiguration represents a declarative configuration of the LimitRangeItem type for use
     // with apply.
     type LimitRangeItemApplyConfiguration struct {
    -	Type                 *v1.LimitType    `json:"type,omitempty"`
    -	Max                  *v1.ResourceList `json:"max,omitempty"`
    -	Min                  *v1.ResourceList `json:"min,omitempty"`
    -	Default              *v1.ResourceList `json:"default,omitempty"`
    -	DefaultRequest       *v1.ResourceList `json:"defaultRequest,omitempty"`
    -	MaxLimitRequestRatio *v1.ResourceList `json:"maxLimitRequestRatio,omitempty"`
    +	Type                 *corev1.LimitType    `json:"type,omitempty"`
    +	Max                  *corev1.ResourceList `json:"max,omitempty"`
    +	Min                  *corev1.ResourceList `json:"min,omitempty"`
    +	Default              *corev1.ResourceList `json:"default,omitempty"`
    +	DefaultRequest       *corev1.ResourceList `json:"defaultRequest,omitempty"`
    +	MaxLimitRequestRatio *corev1.ResourceList `json:"maxLimitRequestRatio,omitempty"`
     }
     
    -// LimitRangeItemApplyConfiguration constructs an declarative configuration of the LimitRangeItem type for use with
    +// LimitRangeItemApplyConfiguration constructs a declarative configuration of the LimitRangeItem type for use with
     // apply.
     func LimitRangeItem() *LimitRangeItemApplyConfiguration {
     	return &LimitRangeItemApplyConfiguration{}
    @@ -42,7 +42,7 @@ func LimitRangeItem() *LimitRangeItemApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *LimitRangeItemApplyConfiguration) WithType(value v1.LimitType) *LimitRangeItemApplyConfiguration {
    +func (b *LimitRangeItemApplyConfiguration) WithType(value corev1.LimitType) *LimitRangeItemApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *LimitRangeItemApplyConfiguration) WithType(value v1.LimitType) *LimitRa
     // WithMax sets the Max field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Max field is set to the value of the last call.
    -func (b *LimitRangeItemApplyConfiguration) WithMax(value v1.ResourceList) *LimitRangeItemApplyConfiguration {
    +func (b *LimitRangeItemApplyConfiguration) WithMax(value corev1.ResourceList) *LimitRangeItemApplyConfiguration {
     	b.Max = &value
     	return b
     }
    @@ -58,7 +58,7 @@ func (b *LimitRangeItemApplyConfiguration) WithMax(value v1.ResourceList) *Limit
     // WithMin sets the Min field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Min field is set to the value of the last call.
    -func (b *LimitRangeItemApplyConfiguration) WithMin(value v1.ResourceList) *LimitRangeItemApplyConfiguration {
    +func (b *LimitRangeItemApplyConfiguration) WithMin(value corev1.ResourceList) *LimitRangeItemApplyConfiguration {
     	b.Min = &value
     	return b
     }
    @@ -66,7 +66,7 @@ func (b *LimitRangeItemApplyConfiguration) WithMin(value v1.ResourceList) *Limit
     // WithDefault sets the Default field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Default field is set to the value of the last call.
    -func (b *LimitRangeItemApplyConfiguration) WithDefault(value v1.ResourceList) *LimitRangeItemApplyConfiguration {
    +func (b *LimitRangeItemApplyConfiguration) WithDefault(value corev1.ResourceList) *LimitRangeItemApplyConfiguration {
     	b.Default = &value
     	return b
     }
    @@ -74,7 +74,7 @@ func (b *LimitRangeItemApplyConfiguration) WithDefault(value v1.ResourceList) *L
     // WithDefaultRequest sets the DefaultRequest field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DefaultRequest field is set to the value of the last call.
    -func (b *LimitRangeItemApplyConfiguration) WithDefaultRequest(value v1.ResourceList) *LimitRangeItemApplyConfiguration {
    +func (b *LimitRangeItemApplyConfiguration) WithDefaultRequest(value corev1.ResourceList) *LimitRangeItemApplyConfiguration {
     	b.DefaultRequest = &value
     	return b
     }
    @@ -82,7 +82,7 @@ func (b *LimitRangeItemApplyConfiguration) WithDefaultRequest(value v1.ResourceL
     // WithMaxLimitRequestRatio sets the MaxLimitRequestRatio field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the MaxLimitRequestRatio field is set to the value of the last call.
    -func (b *LimitRangeItemApplyConfiguration) WithMaxLimitRequestRatio(value v1.ResourceList) *LimitRangeItemApplyConfiguration {
    +func (b *LimitRangeItemApplyConfiguration) WithMaxLimitRequestRatio(value corev1.ResourceList) *LimitRangeItemApplyConfiguration {
     	b.MaxLimitRequestRatio = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrangespec.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrangespec.go
    index 5eee5c498e3a..8d69c1c0cd7e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrangespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrangespec.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// LimitRangeSpecApplyConfiguration represents an declarative configuration of the LimitRangeSpec type for use
    +// LimitRangeSpecApplyConfiguration represents a declarative configuration of the LimitRangeSpec type for use
     // with apply.
     type LimitRangeSpecApplyConfiguration struct {
     	Limits []LimitRangeItemApplyConfiguration `json:"limits,omitempty"`
     }
     
    -// LimitRangeSpecApplyConfiguration constructs an declarative configuration of the LimitRangeSpec type for use with
    +// LimitRangeSpecApplyConfiguration constructs a declarative configuration of the LimitRangeSpec type for use with
     // apply.
     func LimitRangeSpec() *LimitRangeSpecApplyConfiguration {
     	return &LimitRangeSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/linuxcontaineruser.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/linuxcontaineruser.go
    new file mode 100644
    index 000000000000..fbab4815ab89
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/linuxcontaineruser.go
    @@ -0,0 +1,59 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// LinuxContainerUserApplyConfiguration represents a declarative configuration of the LinuxContainerUser type for use
    +// with apply.
    +type LinuxContainerUserApplyConfiguration struct {
    +	UID                *int64  `json:"uid,omitempty"`
    +	GID                *int64  `json:"gid,omitempty"`
    +	SupplementalGroups []int64 `json:"supplementalGroups,omitempty"`
    +}
    +
    +// LinuxContainerUserApplyConfiguration constructs a declarative configuration of the LinuxContainerUser type for use with
    +// apply.
    +func LinuxContainerUser() *LinuxContainerUserApplyConfiguration {
    +	return &LinuxContainerUserApplyConfiguration{}
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *LinuxContainerUserApplyConfiguration) WithUID(value int64) *LinuxContainerUserApplyConfiguration {
    +	b.UID = &value
    +	return b
    +}
    +
    +// WithGID sets the GID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GID field is set to the value of the last call.
    +func (b *LinuxContainerUserApplyConfiguration) WithGID(value int64) *LinuxContainerUserApplyConfiguration {
    +	b.GID = &value
    +	return b
    +}
    +
    +// WithSupplementalGroups adds the given value to the SupplementalGroups field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the SupplementalGroups field.
    +func (b *LinuxContainerUserApplyConfiguration) WithSupplementalGroups(values ...int64) *LinuxContainerUserApplyConfiguration {
    +	for i := range values {
    +		b.SupplementalGroups = append(b.SupplementalGroups, values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/loadbalanceringress.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/loadbalanceringress.go
    index a48dac681074..ae5c410a2439 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/loadbalanceringress.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/loadbalanceringress.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// LoadBalancerIngressApplyConfiguration represents an declarative configuration of the LoadBalancerIngress type for use
    +// LoadBalancerIngressApplyConfiguration represents a declarative configuration of the LoadBalancerIngress type for use
     // with apply.
     type LoadBalancerIngressApplyConfiguration struct {
     	IP       *string                        `json:"ip,omitempty"`
     	Hostname *string                        `json:"hostname,omitempty"`
    -	IPMode   *v1.LoadBalancerIPMode         `json:"ipMode,omitempty"`
    +	IPMode   *corev1.LoadBalancerIPMode     `json:"ipMode,omitempty"`
     	Ports    []PortStatusApplyConfiguration `json:"ports,omitempty"`
     }
     
    -// LoadBalancerIngressApplyConfiguration constructs an declarative configuration of the LoadBalancerIngress type for use with
    +// LoadBalancerIngressApplyConfiguration constructs a declarative configuration of the LoadBalancerIngress type for use with
     // apply.
     func LoadBalancerIngress() *LoadBalancerIngressApplyConfiguration {
     	return &LoadBalancerIngressApplyConfiguration{}
    @@ -56,7 +56,7 @@ func (b *LoadBalancerIngressApplyConfiguration) WithHostname(value string) *Load
     // WithIPMode sets the IPMode field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the IPMode field is set to the value of the last call.
    -func (b *LoadBalancerIngressApplyConfiguration) WithIPMode(value v1.LoadBalancerIPMode) *LoadBalancerIngressApplyConfiguration {
    +func (b *LoadBalancerIngressApplyConfiguration) WithIPMode(value corev1.LoadBalancerIPMode) *LoadBalancerIngressApplyConfiguration {
     	b.IPMode = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/loadbalancerstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/loadbalancerstatus.go
    index 2fcc0cad181b..bb3d616c15f7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/loadbalancerstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/loadbalancerstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// LoadBalancerStatusApplyConfiguration represents an declarative configuration of the LoadBalancerStatus type for use
    +// LoadBalancerStatusApplyConfiguration represents a declarative configuration of the LoadBalancerStatus type for use
     // with apply.
     type LoadBalancerStatusApplyConfiguration struct {
     	Ingress []LoadBalancerIngressApplyConfiguration `json:"ingress,omitempty"`
     }
     
    -// LoadBalancerStatusApplyConfiguration constructs an declarative configuration of the LoadBalancerStatus type for use with
    +// LoadBalancerStatusApplyConfiguration constructs a declarative configuration of the LoadBalancerStatus type for use with
     // apply.
     func LoadBalancerStatus() *LoadBalancerStatusApplyConfiguration {
     	return &LoadBalancerStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/localobjectreference.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/localobjectreference.go
    index 7662e32b319e..c55d6803dc8e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/localobjectreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/localobjectreference.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// LocalObjectReferenceApplyConfiguration represents an declarative configuration of the LocalObjectReference type for use
    +// LocalObjectReferenceApplyConfiguration represents a declarative configuration of the LocalObjectReference type for use
     // with apply.
     type LocalObjectReferenceApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// LocalObjectReferenceApplyConfiguration constructs an declarative configuration of the LocalObjectReference type for use with
    +// LocalObjectReferenceApplyConfiguration constructs a declarative configuration of the LocalObjectReference type for use with
     // apply.
     func LocalObjectReference() *LocalObjectReferenceApplyConfiguration {
     	return &LocalObjectReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/localvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/localvolumesource.go
    index 5d289bd12df1..db711d99349c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/localvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/localvolumesource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// LocalVolumeSourceApplyConfiguration represents an declarative configuration of the LocalVolumeSource type for use
    +// LocalVolumeSourceApplyConfiguration represents a declarative configuration of the LocalVolumeSource type for use
     // with apply.
     type LocalVolumeSourceApplyConfiguration struct {
     	Path   *string `json:"path,omitempty"`
     	FSType *string `json:"fsType,omitempty"`
     }
     
    -// LocalVolumeSourceApplyConfiguration constructs an declarative configuration of the LocalVolumeSource type for use with
    +// LocalVolumeSourceApplyConfiguration constructs a declarative configuration of the LocalVolumeSource type for use with
     // apply.
     func LocalVolumeSource() *LocalVolumeSourceApplyConfiguration {
     	return &LocalVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/modifyvolumestatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/modifyvolumestatus.go
    index 4ff1d040cf36..9a1a6af2a6e0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/modifyvolumestatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/modifyvolumestatus.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// ModifyVolumeStatusApplyConfiguration represents an declarative configuration of the ModifyVolumeStatus type for use
    +// ModifyVolumeStatusApplyConfiguration represents a declarative configuration of the ModifyVolumeStatus type for use
     // with apply.
     type ModifyVolumeStatusApplyConfiguration struct {
    -	TargetVolumeAttributesClassName *string                                     `json:"targetVolumeAttributesClassName,omitempty"`
    -	Status                          *v1.PersistentVolumeClaimModifyVolumeStatus `json:"status,omitempty"`
    +	TargetVolumeAttributesClassName *string                                         `json:"targetVolumeAttributesClassName,omitempty"`
    +	Status                          *corev1.PersistentVolumeClaimModifyVolumeStatus `json:"status,omitempty"`
     }
     
    -// ModifyVolumeStatusApplyConfiguration constructs an declarative configuration of the ModifyVolumeStatus type for use with
    +// ModifyVolumeStatusApplyConfiguration constructs a declarative configuration of the ModifyVolumeStatus type for use with
     // apply.
     func ModifyVolumeStatus() *ModifyVolumeStatusApplyConfiguration {
     	return &ModifyVolumeStatusApplyConfiguration{}
    @@ -46,7 +46,7 @@ func (b *ModifyVolumeStatusApplyConfiguration) WithTargetVolumeAttributesClassNa
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *ModifyVolumeStatusApplyConfiguration) WithStatus(value v1.PersistentVolumeClaimModifyVolumeStatus) *ModifyVolumeStatusApplyConfiguration {
    +func (b *ModifyVolumeStatusApplyConfiguration) WithStatus(value corev1.PersistentVolumeClaimModifyVolumeStatus) *ModifyVolumeStatusApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespace.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespace.go
    index bdc9ef167c3a..0aba283ce55f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespace.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespace.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// NamespaceApplyConfiguration represents an declarative configuration of the Namespace type for use
    +// NamespaceApplyConfiguration represents a declarative configuration of the Namespace type for use
     // with apply.
     type NamespaceApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *NamespaceSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *NamespaceStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *NamespaceSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *NamespaceStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Namespace constructs an declarative configuration of the Namespace type for use with
    +// Namespace constructs a declarative configuration of the Namespace type for use with
     // apply.
     func Namespace(name string) *NamespaceApplyConfiguration {
     	b := &NamespaceApplyConfiguration{}
    @@ -57,18 +57,18 @@ func Namespace(name string) *NamespaceApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractNamespace(namespace *apicorev1.Namespace, fieldManager string) (*NamespaceApplyConfiguration, error) {
    +func ExtractNamespace(namespace *corev1.Namespace, fieldManager string) (*NamespaceApplyConfiguration, error) {
     	return extractNamespace(namespace, fieldManager, "")
     }
     
     // ExtractNamespaceStatus is the same as ExtractNamespace except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractNamespaceStatus(namespace *apicorev1.Namespace, fieldManager string) (*NamespaceApplyConfiguration, error) {
    +func ExtractNamespaceStatus(namespace *corev1.Namespace, fieldManager string) (*NamespaceApplyConfiguration, error) {
     	return extractNamespace(namespace, fieldManager, "status")
     }
     
    -func extractNamespace(namespace *apicorev1.Namespace, fieldManager string, subresource string) (*NamespaceApplyConfiguration, error) {
    +func extractNamespace(namespace *corev1.Namespace, fieldManager string, subresource string) (*NamespaceApplyConfiguration, error) {
     	b := &NamespaceApplyConfiguration{}
     	err := managedfields.ExtractInto(namespace, internal.Parser().Type("io.k8s.api.core.v1.Namespace"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractNamespace(namespace *apicorev1.Namespace, fieldManager string, subre
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *NamespaceApplyConfiguration) WithKind(value string) *NamespaceApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *NamespaceApplyConfiguration) WithKind(value string) *NamespaceApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *NamespaceApplyConfiguration) WithAPIVersion(value string) *NamespaceApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *NamespaceApplyConfiguration) WithAPIVersion(value string) *NamespaceApp
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *NamespaceApplyConfiguration) WithName(value string) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *NamespaceApplyConfiguration) WithName(value string) *NamespaceApplyConf
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *NamespaceApplyConfiguration) WithGenerateName(value string) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *NamespaceApplyConfiguration) WithGenerateName(value string) *NamespaceA
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *NamespaceApplyConfiguration) WithNamespace(value string) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *NamespaceApplyConfiguration) WithNamespace(value string) *NamespaceAppl
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *NamespaceApplyConfiguration) WithUID(value types.UID) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *NamespaceApplyConfiguration) WithUID(value types.UID) *NamespaceApplyCo
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *NamespaceApplyConfiguration) WithResourceVersion(value string) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,25 +147,25 @@ func (b *NamespaceApplyConfiguration) WithResourceVersion(value string) *Namespa
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *NamespaceApplyConfiguration) WithGeneration(value int64) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *NamespaceApplyConfiguration) WithCreationTimestamp(value metav1.Time) *NamespaceApplyConfiguration {
    +func (b *NamespaceApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *NamespaceApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *NamespaceApplyConfiguration {
    +func (b *NamespaceApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *NamespaceApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *NamespaceApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *NamespaceApplyConfiguration) WithDeletionGracePeriodSeconds(value int64
     // overwriting an existing map entries in Labels field with the same key.
     func (b *NamespaceApplyConfiguration) WithLabels(entries map[string]string) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *NamespaceApplyConfiguration) WithLabels(entries map[string]string) *Nam
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *NamespaceApplyConfiguration) WithAnnotations(entries map[string]string) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -211,13 +211,13 @@ func (b *NamespaceApplyConfiguration) WithAnnotations(entries map[string]string)
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *NamespaceApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *NamespaceApplyConfiguration {
    +func (b *NamespaceApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,14 +228,14 @@ func (b *NamespaceApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     func (b *NamespaceApplyConfiguration) WithFinalizers(values ...string) *NamespaceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *NamespaceApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -254,3 +254,9 @@ func (b *NamespaceApplyConfiguration) WithStatus(value *NamespaceStatusApplyConf
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *NamespaceApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacecondition.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacecondition.go
    index 8651978b0fb8..82b4cc1ca3b0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacecondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacecondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// NamespaceConditionApplyConfiguration represents an declarative configuration of the NamespaceCondition type for use
    +// NamespaceConditionApplyConfiguration represents a declarative configuration of the NamespaceCondition type for use
     // with apply.
     type NamespaceConditionApplyConfiguration struct {
    -	Type               *v1.NamespaceConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus        `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time               `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                    `json:"reason,omitempty"`
    -	Message            *string                    `json:"message,omitempty"`
    +	Type               *corev1.NamespaceConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus        `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                   `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                        `json:"reason,omitempty"`
    +	Message            *string                        `json:"message,omitempty"`
     }
     
    -// NamespaceConditionApplyConfiguration constructs an declarative configuration of the NamespaceCondition type for use with
    +// NamespaceConditionApplyConfiguration constructs a declarative configuration of the NamespaceCondition type for use with
     // apply.
     func NamespaceCondition() *NamespaceConditionApplyConfiguration {
     	return &NamespaceConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func NamespaceCondition() *NamespaceConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *NamespaceConditionApplyConfiguration) WithType(value v1.NamespaceConditionType) *NamespaceConditionApplyConfiguration {
    +func (b *NamespaceConditionApplyConfiguration) WithType(value corev1.NamespaceConditionType) *NamespaceConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *NamespaceConditionApplyConfiguration) WithType(value v1.NamespaceCondit
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *NamespaceConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *NamespaceConditionApplyConfiguration {
    +func (b *NamespaceConditionApplyConfiguration) WithStatus(value corev1.ConditionStatus) *NamespaceConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacespec.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacespec.go
    index 9bc02d1fa2aa..1f8fcaf9a126 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacespec.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// NamespaceSpecApplyConfiguration represents an declarative configuration of the NamespaceSpec type for use
    +// NamespaceSpecApplyConfiguration represents a declarative configuration of the NamespaceSpec type for use
     // with apply.
     type NamespaceSpecApplyConfiguration struct {
    -	Finalizers []v1.FinalizerName `json:"finalizers,omitempty"`
    +	Finalizers []corev1.FinalizerName `json:"finalizers,omitempty"`
     }
     
    -// NamespaceSpecApplyConfiguration constructs an declarative configuration of the NamespaceSpec type for use with
    +// NamespaceSpecApplyConfiguration constructs a declarative configuration of the NamespaceSpec type for use with
     // apply.
     func NamespaceSpec() *NamespaceSpecApplyConfiguration {
     	return &NamespaceSpecApplyConfiguration{}
    @@ -37,7 +37,7 @@ func NamespaceSpec() *NamespaceSpecApplyConfiguration {
     // WithFinalizers adds the given value to the Finalizers field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Finalizers field.
    -func (b *NamespaceSpecApplyConfiguration) WithFinalizers(values ...v1.FinalizerName) *NamespaceSpecApplyConfiguration {
    +func (b *NamespaceSpecApplyConfiguration) WithFinalizers(values ...corev1.FinalizerName) *NamespaceSpecApplyConfiguration {
     	for i := range values {
     		b.Finalizers = append(b.Finalizers, values[i])
     	}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacestatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacestatus.go
    index d950fd316169..1484be684292 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacestatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacestatus.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// NamespaceStatusApplyConfiguration represents an declarative configuration of the NamespaceStatus type for use
    +// NamespaceStatusApplyConfiguration represents a declarative configuration of the NamespaceStatus type for use
     // with apply.
     type NamespaceStatusApplyConfiguration struct {
    -	Phase      *v1.NamespacePhase                     `json:"phase,omitempty"`
    +	Phase      *corev1.NamespacePhase                 `json:"phase,omitempty"`
     	Conditions []NamespaceConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// NamespaceStatusApplyConfiguration constructs an declarative configuration of the NamespaceStatus type for use with
    +// NamespaceStatusApplyConfiguration constructs a declarative configuration of the NamespaceStatus type for use with
     // apply.
     func NamespaceStatus() *NamespaceStatusApplyConfiguration {
     	return &NamespaceStatusApplyConfiguration{}
    @@ -38,7 +38,7 @@ func NamespaceStatus() *NamespaceStatusApplyConfiguration {
     // WithPhase sets the Phase field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Phase field is set to the value of the last call.
    -func (b *NamespaceStatusApplyConfiguration) WithPhase(value v1.NamespacePhase) *NamespaceStatusApplyConfiguration {
    +func (b *NamespaceStatusApplyConfiguration) WithPhase(value corev1.NamespacePhase) *NamespaceStatusApplyConfiguration {
     	b.Phase = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nfsvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nfsvolumesource.go
    index cb300ee81eb6..ed49a87a9eb4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nfsvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nfsvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// NFSVolumeSourceApplyConfiguration represents an declarative configuration of the NFSVolumeSource type for use
    +// NFSVolumeSourceApplyConfiguration represents a declarative configuration of the NFSVolumeSource type for use
     // with apply.
     type NFSVolumeSourceApplyConfiguration struct {
     	Server   *string `json:"server,omitempty"`
    @@ -26,7 +26,7 @@ type NFSVolumeSourceApplyConfiguration struct {
     	ReadOnly *bool   `json:"readOnly,omitempty"`
     }
     
    -// NFSVolumeSourceApplyConfiguration constructs an declarative configuration of the NFSVolumeSource type for use with
    +// NFSVolumeSourceApplyConfiguration constructs a declarative configuration of the NFSVolumeSource type for use with
     // apply.
     func NFSVolumeSource() *NFSVolumeSourceApplyConfiguration {
     	return &NFSVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/node.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/node.go
    index 047f4ac1cb3b..d365047b7feb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/node.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/node.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// NodeApplyConfiguration represents an declarative configuration of the Node type for use
    +// NodeApplyConfiguration represents a declarative configuration of the Node type for use
     // with apply.
     type NodeApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *NodeSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *NodeStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *NodeSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *NodeStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Node constructs an declarative configuration of the Node type for use with
    +// Node constructs a declarative configuration of the Node type for use with
     // apply.
     func Node(name string) *NodeApplyConfiguration {
     	b := &NodeApplyConfiguration{}
    @@ -57,18 +57,18 @@ func Node(name string) *NodeApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractNode(node *apicorev1.Node, fieldManager string) (*NodeApplyConfiguration, error) {
    +func ExtractNode(node *corev1.Node, fieldManager string) (*NodeApplyConfiguration, error) {
     	return extractNode(node, fieldManager, "")
     }
     
     // ExtractNodeStatus is the same as ExtractNode except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractNodeStatus(node *apicorev1.Node, fieldManager string) (*NodeApplyConfiguration, error) {
    +func ExtractNodeStatus(node *corev1.Node, fieldManager string) (*NodeApplyConfiguration, error) {
     	return extractNode(node, fieldManager, "status")
     }
     
    -func extractNode(node *apicorev1.Node, fieldManager string, subresource string) (*NodeApplyConfiguration, error) {
    +func extractNode(node *corev1.Node, fieldManager string, subresource string) (*NodeApplyConfiguration, error) {
     	b := &NodeApplyConfiguration{}
     	err := managedfields.ExtractInto(node, internal.Parser().Type("io.k8s.api.core.v1.Node"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractNode(node *apicorev1.Node, fieldManager string, subresource string)
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *NodeApplyConfiguration) WithKind(value string) *NodeApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *NodeApplyConfiguration) WithKind(value string) *NodeApplyConfiguration
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *NodeApplyConfiguration) WithAPIVersion(value string) *NodeApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *NodeApplyConfiguration) WithAPIVersion(value string) *NodeApplyConfigur
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *NodeApplyConfiguration) WithName(value string) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *NodeApplyConfiguration) WithName(value string) *NodeApplyConfiguration
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *NodeApplyConfiguration) WithGenerateName(value string) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *NodeApplyConfiguration) WithGenerateName(value string) *NodeApplyConfig
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *NodeApplyConfiguration) WithNamespace(value string) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *NodeApplyConfiguration) WithNamespace(value string) *NodeApplyConfigura
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *NodeApplyConfiguration) WithUID(value types.UID) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *NodeApplyConfiguration) WithUID(value types.UID) *NodeApplyConfiguratio
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *NodeApplyConfiguration) WithResourceVersion(value string) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,25 +147,25 @@ func (b *NodeApplyConfiguration) WithResourceVersion(value string) *NodeApplyCon
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *NodeApplyConfiguration) WithGeneration(value int64) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *NodeApplyConfiguration) WithCreationTimestamp(value metav1.Time) *NodeApplyConfiguration {
    +func (b *NodeApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *NodeApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *NodeApplyConfiguration {
    +func (b *NodeApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *NodeApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *NodeA
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *NodeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *NodeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *No
     // overwriting an existing map entries in Labels field with the same key.
     func (b *NodeApplyConfiguration) WithLabels(entries map[string]string) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *NodeApplyConfiguration) WithLabels(entries map[string]string) *NodeAppl
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *NodeApplyConfiguration) WithAnnotations(entries map[string]string) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -211,13 +211,13 @@ func (b *NodeApplyConfiguration) WithAnnotations(entries map[string]string) *Nod
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *NodeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *NodeApplyConfiguration {
    +func (b *NodeApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,14 +228,14 @@ func (b *NodeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenc
     func (b *NodeApplyConfiguration) WithFinalizers(values ...string) *NodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *NodeApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -254,3 +254,9 @@ func (b *NodeApplyConfiguration) WithStatus(value *NodeStatusApplyConfiguration)
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *NodeApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeaddress.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeaddress.go
    index a1d4fbe04eec..779fe0e2fdc8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeaddress.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeaddress.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// NodeAddressApplyConfiguration represents an declarative configuration of the NodeAddress type for use
    +// NodeAddressApplyConfiguration represents a declarative configuration of the NodeAddress type for use
     // with apply.
     type NodeAddressApplyConfiguration struct {
    -	Type    *v1.NodeAddressType `json:"type,omitempty"`
    -	Address *string             `json:"address,omitempty"`
    +	Type    *corev1.NodeAddressType `json:"type,omitempty"`
    +	Address *string                 `json:"address,omitempty"`
     }
     
    -// NodeAddressApplyConfiguration constructs an declarative configuration of the NodeAddress type for use with
    +// NodeAddressApplyConfiguration constructs a declarative configuration of the NodeAddress type for use with
     // apply.
     func NodeAddress() *NodeAddressApplyConfiguration {
     	return &NodeAddressApplyConfiguration{}
    @@ -38,7 +38,7 @@ func NodeAddress() *NodeAddressApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *NodeAddressApplyConfiguration) WithType(value v1.NodeAddressType) *NodeAddressApplyConfiguration {
    +func (b *NodeAddressApplyConfiguration) WithType(value corev1.NodeAddressType) *NodeAddressApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeaffinity.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeaffinity.go
    index e28ced6e4638..5d11d746dcdd 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeaffinity.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeaffinity.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// NodeAffinityApplyConfiguration represents an declarative configuration of the NodeAffinity type for use
    +// NodeAffinityApplyConfiguration represents a declarative configuration of the NodeAffinity type for use
     // with apply.
     type NodeAffinityApplyConfiguration struct {
     	RequiredDuringSchedulingIgnoredDuringExecution  *NodeSelectorApplyConfiguration             `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
     	PreferredDuringSchedulingIgnoredDuringExecution []PreferredSchedulingTermApplyConfiguration `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
     }
     
    -// NodeAffinityApplyConfiguration constructs an declarative configuration of the NodeAffinity type for use with
    +// NodeAffinityApplyConfiguration constructs a declarative configuration of the NodeAffinity type for use with
     // apply.
     func NodeAffinity() *NodeAffinityApplyConfiguration {
     	return &NodeAffinityApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodecondition.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodecondition.go
    index eb81ca543faf..e3a2d3bb0634 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodecondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodecondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// NodeConditionApplyConfiguration represents an declarative configuration of the NodeCondition type for use
    +// NodeConditionApplyConfiguration represents a declarative configuration of the NodeCondition type for use
     // with apply.
     type NodeConditionApplyConfiguration struct {
    -	Type               *v1.NodeConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus   `json:"status,omitempty"`
    -	LastHeartbeatTime  *metav1.Time          `json:"lastHeartbeatTime,omitempty"`
    -	LastTransitionTime *metav1.Time          `json:"lastTransitionTime,omitempty"`
    -	Reason             *string               `json:"reason,omitempty"`
    -	Message            *string               `json:"message,omitempty"`
    +	Type               *corev1.NodeConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus   `json:"status,omitempty"`
    +	LastHeartbeatTime  *metav1.Time              `json:"lastHeartbeatTime,omitempty"`
    +	LastTransitionTime *metav1.Time              `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                   `json:"reason,omitempty"`
    +	Message            *string                   `json:"message,omitempty"`
     }
     
    -// NodeConditionApplyConfiguration constructs an declarative configuration of the NodeCondition type for use with
    +// NodeConditionApplyConfiguration constructs a declarative configuration of the NodeCondition type for use with
     // apply.
     func NodeCondition() *NodeConditionApplyConfiguration {
     	return &NodeConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func NodeCondition() *NodeConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *NodeConditionApplyConfiguration) WithType(value v1.NodeConditionType) *NodeConditionApplyConfiguration {
    +func (b *NodeConditionApplyConfiguration) WithType(value corev1.NodeConditionType) *NodeConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -51,7 +51,7 @@ func (b *NodeConditionApplyConfiguration) WithType(value v1.NodeConditionType) *
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *NodeConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *NodeConditionApplyConfiguration {
    +func (b *NodeConditionApplyConfiguration) WithStatus(value corev1.ConditionStatus) *NodeConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeconfigsource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeconfigsource.go
    index 60567aa431c6..00a671fc0c71 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeconfigsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeconfigsource.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// NodeConfigSourceApplyConfiguration represents an declarative configuration of the NodeConfigSource type for use
    +// NodeConfigSourceApplyConfiguration represents a declarative configuration of the NodeConfigSource type for use
     // with apply.
     type NodeConfigSourceApplyConfiguration struct {
     	ConfigMap *ConfigMapNodeConfigSourceApplyConfiguration `json:"configMap,omitempty"`
     }
     
    -// NodeConfigSourceApplyConfiguration constructs an declarative configuration of the NodeConfigSource type for use with
    +// NodeConfigSourceApplyConfiguration constructs a declarative configuration of the NodeConfigSource type for use with
     // apply.
     func NodeConfigSource() *NodeConfigSourceApplyConfiguration {
     	return &NodeConfigSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeconfigstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeconfigstatus.go
    index 71447fe9c0f4..d5ccc45c6a8b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeconfigstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeconfigstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// NodeConfigStatusApplyConfiguration represents an declarative configuration of the NodeConfigStatus type for use
    +// NodeConfigStatusApplyConfiguration represents a declarative configuration of the NodeConfigStatus type for use
     // with apply.
     type NodeConfigStatusApplyConfiguration struct {
     	Assigned      *NodeConfigSourceApplyConfiguration `json:"assigned,omitempty"`
    @@ -27,7 +27,7 @@ type NodeConfigStatusApplyConfiguration struct {
     	Error         *string                             `json:"error,omitempty"`
     }
     
    -// NodeConfigStatusApplyConfiguration constructs an declarative configuration of the NodeConfigStatus type for use with
    +// NodeConfigStatusApplyConfiguration constructs a declarative configuration of the NodeConfigStatus type for use with
     // apply.
     func NodeConfigStatus() *NodeConfigStatusApplyConfiguration {
     	return &NodeConfigStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodedaemonendpoints.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodedaemonendpoints.go
    index 4cabc7f52649..11228b36913f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodedaemonendpoints.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodedaemonendpoints.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// NodeDaemonEndpointsApplyConfiguration represents an declarative configuration of the NodeDaemonEndpoints type for use
    +// NodeDaemonEndpointsApplyConfiguration represents a declarative configuration of the NodeDaemonEndpoints type for use
     // with apply.
     type NodeDaemonEndpointsApplyConfiguration struct {
     	KubeletEndpoint *DaemonEndpointApplyConfiguration `json:"kubeletEndpoint,omitempty"`
     }
     
    -// NodeDaemonEndpointsApplyConfiguration constructs an declarative configuration of the NodeDaemonEndpoints type for use with
    +// NodeDaemonEndpointsApplyConfiguration constructs a declarative configuration of the NodeDaemonEndpoints type for use with
     // apply.
     func NodeDaemonEndpoints() *NodeDaemonEndpointsApplyConfiguration {
     	return &NodeDaemonEndpointsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodefeatures.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodefeatures.go
    new file mode 100644
    index 000000000000..678b0e36d6e3
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodefeatures.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// NodeFeaturesApplyConfiguration represents a declarative configuration of the NodeFeatures type for use
    +// with apply.
    +type NodeFeaturesApplyConfiguration struct {
    +	SupplementalGroupsPolicy *bool `json:"supplementalGroupsPolicy,omitempty"`
    +}
    +
    +// NodeFeaturesApplyConfiguration constructs a declarative configuration of the NodeFeatures type for use with
    +// apply.
    +func NodeFeatures() *NodeFeaturesApplyConfiguration {
    +	return &NodeFeaturesApplyConfiguration{}
    +}
    +
    +// WithSupplementalGroupsPolicy sets the SupplementalGroupsPolicy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the SupplementalGroupsPolicy field is set to the value of the last call.
    +func (b *NodeFeaturesApplyConfiguration) WithSupplementalGroupsPolicy(value bool) *NodeFeaturesApplyConfiguration {
    +	b.SupplementalGroupsPolicy = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/noderuntimehandler.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/noderuntimehandler.go
    new file mode 100644
    index 000000000000..c7c664974e09
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/noderuntimehandler.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// NodeRuntimeHandlerApplyConfiguration represents a declarative configuration of the NodeRuntimeHandler type for use
    +// with apply.
    +type NodeRuntimeHandlerApplyConfiguration struct {
    +	Name     *string                                       `json:"name,omitempty"`
    +	Features *NodeRuntimeHandlerFeaturesApplyConfiguration `json:"features,omitempty"`
    +}
    +
    +// NodeRuntimeHandlerApplyConfiguration constructs a declarative configuration of the NodeRuntimeHandler type for use with
    +// apply.
    +func NodeRuntimeHandler() *NodeRuntimeHandlerApplyConfiguration {
    +	return &NodeRuntimeHandlerApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *NodeRuntimeHandlerApplyConfiguration) WithName(value string) *NodeRuntimeHandlerApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithFeatures sets the Features field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Features field is set to the value of the last call.
    +func (b *NodeRuntimeHandlerApplyConfiguration) WithFeatures(value *NodeRuntimeHandlerFeaturesApplyConfiguration) *NodeRuntimeHandlerApplyConfiguration {
    +	b.Features = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/noderuntimehandlerfeatures.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/noderuntimehandlerfeatures.go
    new file mode 100644
    index 000000000000..a295b609690b
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/noderuntimehandlerfeatures.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +// NodeRuntimeHandlerFeaturesApplyConfiguration represents a declarative configuration of the NodeRuntimeHandlerFeatures type for use
    +// with apply.
    +type NodeRuntimeHandlerFeaturesApplyConfiguration struct {
    +	RecursiveReadOnlyMounts *bool `json:"recursiveReadOnlyMounts,omitempty"`
    +	UserNamespaces          *bool `json:"userNamespaces,omitempty"`
    +}
    +
    +// NodeRuntimeHandlerFeaturesApplyConfiguration constructs a declarative configuration of the NodeRuntimeHandlerFeatures type for use with
    +// apply.
    +func NodeRuntimeHandlerFeatures() *NodeRuntimeHandlerFeaturesApplyConfiguration {
    +	return &NodeRuntimeHandlerFeaturesApplyConfiguration{}
    +}
    +
    +// WithRecursiveReadOnlyMounts sets the RecursiveReadOnlyMounts field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the RecursiveReadOnlyMounts field is set to the value of the last call.
    +func (b *NodeRuntimeHandlerFeaturesApplyConfiguration) WithRecursiveReadOnlyMounts(value bool) *NodeRuntimeHandlerFeaturesApplyConfiguration {
    +	b.RecursiveReadOnlyMounts = &value
    +	return b
    +}
    +
    +// WithUserNamespaces sets the UserNamespaces field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UserNamespaces field is set to the value of the last call.
    +func (b *NodeRuntimeHandlerFeaturesApplyConfiguration) WithUserNamespaces(value bool) *NodeRuntimeHandlerFeaturesApplyConfiguration {
    +	b.UserNamespaces = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselector.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselector.go
    index 5489097f5ae7..6eab109795e2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselector.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselector.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// NodeSelectorApplyConfiguration represents an declarative configuration of the NodeSelector type for use
    +// NodeSelectorApplyConfiguration represents a declarative configuration of the NodeSelector type for use
     // with apply.
     type NodeSelectorApplyConfiguration struct {
     	NodeSelectorTerms []NodeSelectorTermApplyConfiguration `json:"nodeSelectorTerms,omitempty"`
     }
     
    -// NodeSelectorApplyConfiguration constructs an declarative configuration of the NodeSelector type for use with
    +// NodeSelectorApplyConfiguration constructs a declarative configuration of the NodeSelector type for use with
     // apply.
     func NodeSelector() *NodeSelectorApplyConfiguration {
     	return &NodeSelectorApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselectorrequirement.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselectorrequirement.go
    index a6e43e607eff..4dcbc9a2e775 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselectorrequirement.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselectorrequirement.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// NodeSelectorRequirementApplyConfiguration represents an declarative configuration of the NodeSelectorRequirement type for use
    +// NodeSelectorRequirementApplyConfiguration represents a declarative configuration of the NodeSelectorRequirement type for use
     // with apply.
     type NodeSelectorRequirementApplyConfiguration struct {
    -	Key      *string                  `json:"key,omitempty"`
    -	Operator *v1.NodeSelectorOperator `json:"operator,omitempty"`
    -	Values   []string                 `json:"values,omitempty"`
    +	Key      *string                      `json:"key,omitempty"`
    +	Operator *corev1.NodeSelectorOperator `json:"operator,omitempty"`
    +	Values   []string                     `json:"values,omitempty"`
     }
     
    -// NodeSelectorRequirementApplyConfiguration constructs an declarative configuration of the NodeSelectorRequirement type for use with
    +// NodeSelectorRequirementApplyConfiguration constructs a declarative configuration of the NodeSelectorRequirement type for use with
     // apply.
     func NodeSelectorRequirement() *NodeSelectorRequirementApplyConfiguration {
     	return &NodeSelectorRequirementApplyConfiguration{}
    @@ -47,7 +47,7 @@ func (b *NodeSelectorRequirementApplyConfiguration) WithKey(value string) *NodeS
     // WithOperator sets the Operator field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Operator field is set to the value of the last call.
    -func (b *NodeSelectorRequirementApplyConfiguration) WithOperator(value v1.NodeSelectorOperator) *NodeSelectorRequirementApplyConfiguration {
    +func (b *NodeSelectorRequirementApplyConfiguration) WithOperator(value corev1.NodeSelectorOperator) *NodeSelectorRequirementApplyConfiguration {
     	b.Operator = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselectorterm.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselectorterm.go
    index 13b3ddbc1bed..9d0d780f3e04 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselectorterm.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselectorterm.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// NodeSelectorTermApplyConfiguration represents an declarative configuration of the NodeSelectorTerm type for use
    +// NodeSelectorTermApplyConfiguration represents a declarative configuration of the NodeSelectorTerm type for use
     // with apply.
     type NodeSelectorTermApplyConfiguration struct {
     	MatchExpressions []NodeSelectorRequirementApplyConfiguration `json:"matchExpressions,omitempty"`
     	MatchFields      []NodeSelectorRequirementApplyConfiguration `json:"matchFields,omitempty"`
     }
     
    -// NodeSelectorTermApplyConfiguration constructs an declarative configuration of the NodeSelectorTerm type for use with
    +// NodeSelectorTermApplyConfiguration constructs a declarative configuration of the NodeSelectorTerm type for use with
     // apply.
     func NodeSelectorTerm() *NodeSelectorTermApplyConfiguration {
     	return &NodeSelectorTermApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodespec.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodespec.go
    index 63b61078d02e..8ac3497127b2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodespec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// NodeSpecApplyConfiguration represents an declarative configuration of the NodeSpec type for use
    +// NodeSpecApplyConfiguration represents a declarative configuration of the NodeSpec type for use
     // with apply.
     type NodeSpecApplyConfiguration struct {
     	PodCIDR            *string                             `json:"podCIDR,omitempty"`
    @@ -30,7 +30,7 @@ type NodeSpecApplyConfiguration struct {
     	DoNotUseExternalID *string                             `json:"externalID,omitempty"`
     }
     
    -// NodeSpecApplyConfiguration constructs an declarative configuration of the NodeSpec type for use with
    +// NodeSpecApplyConfiguration constructs a declarative configuration of the NodeSpec type for use with
     // apply.
     func NodeSpec() *NodeSpecApplyConfiguration {
     	return &NodeSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodestatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodestatus.go
    index aa3603f4fc08..3859ccd503e8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodestatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodestatus.go
    @@ -19,26 +19,28 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// NodeStatusApplyConfiguration represents an declarative configuration of the NodeStatus type for use
    +// NodeStatusApplyConfiguration represents a declarative configuration of the NodeStatus type for use
     // with apply.
     type NodeStatusApplyConfiguration struct {
    -	Capacity        *v1.ResourceList                       `json:"capacity,omitempty"`
    -	Allocatable     *v1.ResourceList                       `json:"allocatable,omitempty"`
    -	Phase           *v1.NodePhase                          `json:"phase,omitempty"`
    +	Capacity        *corev1.ResourceList                   `json:"capacity,omitempty"`
    +	Allocatable     *corev1.ResourceList                   `json:"allocatable,omitempty"`
    +	Phase           *corev1.NodePhase                      `json:"phase,omitempty"`
     	Conditions      []NodeConditionApplyConfiguration      `json:"conditions,omitempty"`
     	Addresses       []NodeAddressApplyConfiguration        `json:"addresses,omitempty"`
     	DaemonEndpoints *NodeDaemonEndpointsApplyConfiguration `json:"daemonEndpoints,omitempty"`
     	NodeInfo        *NodeSystemInfoApplyConfiguration      `json:"nodeInfo,omitempty"`
     	Images          []ContainerImageApplyConfiguration     `json:"images,omitempty"`
    -	VolumesInUse    []v1.UniqueVolumeName                  `json:"volumesInUse,omitempty"`
    +	VolumesInUse    []corev1.UniqueVolumeName              `json:"volumesInUse,omitempty"`
     	VolumesAttached []AttachedVolumeApplyConfiguration     `json:"volumesAttached,omitempty"`
     	Config          *NodeConfigStatusApplyConfiguration    `json:"config,omitempty"`
    +	RuntimeHandlers []NodeRuntimeHandlerApplyConfiguration `json:"runtimeHandlers,omitempty"`
    +	Features        *NodeFeaturesApplyConfiguration        `json:"features,omitempty"`
     }
     
    -// NodeStatusApplyConfiguration constructs an declarative configuration of the NodeStatus type for use with
    +// NodeStatusApplyConfiguration constructs a declarative configuration of the NodeStatus type for use with
     // apply.
     func NodeStatus() *NodeStatusApplyConfiguration {
     	return &NodeStatusApplyConfiguration{}
    @@ -47,7 +49,7 @@ func NodeStatus() *NodeStatusApplyConfiguration {
     // WithCapacity sets the Capacity field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Capacity field is set to the value of the last call.
    -func (b *NodeStatusApplyConfiguration) WithCapacity(value v1.ResourceList) *NodeStatusApplyConfiguration {
    +func (b *NodeStatusApplyConfiguration) WithCapacity(value corev1.ResourceList) *NodeStatusApplyConfiguration {
     	b.Capacity = &value
     	return b
     }
    @@ -55,7 +57,7 @@ func (b *NodeStatusApplyConfiguration) WithCapacity(value v1.ResourceList) *Node
     // WithAllocatable sets the Allocatable field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Allocatable field is set to the value of the last call.
    -func (b *NodeStatusApplyConfiguration) WithAllocatable(value v1.ResourceList) *NodeStatusApplyConfiguration {
    +func (b *NodeStatusApplyConfiguration) WithAllocatable(value corev1.ResourceList) *NodeStatusApplyConfiguration {
     	b.Allocatable = &value
     	return b
     }
    @@ -63,7 +65,7 @@ func (b *NodeStatusApplyConfiguration) WithAllocatable(value v1.ResourceList) *N
     // WithPhase sets the Phase field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Phase field is set to the value of the last call.
    -func (b *NodeStatusApplyConfiguration) WithPhase(value v1.NodePhase) *NodeStatusApplyConfiguration {
    +func (b *NodeStatusApplyConfiguration) WithPhase(value corev1.NodePhase) *NodeStatusApplyConfiguration {
     	b.Phase = &value
     	return b
     }
    @@ -126,7 +128,7 @@ func (b *NodeStatusApplyConfiguration) WithImages(values ...*ContainerImageApply
     // WithVolumesInUse adds the given value to the VolumesInUse field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the VolumesInUse field.
    -func (b *NodeStatusApplyConfiguration) WithVolumesInUse(values ...v1.UniqueVolumeName) *NodeStatusApplyConfiguration {
    +func (b *NodeStatusApplyConfiguration) WithVolumesInUse(values ...corev1.UniqueVolumeName) *NodeStatusApplyConfiguration {
     	for i := range values {
     		b.VolumesInUse = append(b.VolumesInUse, values[i])
     	}
    @@ -153,3 +155,24 @@ func (b *NodeStatusApplyConfiguration) WithConfig(value *NodeConfigStatusApplyCo
     	b.Config = value
     	return b
     }
    +
    +// WithRuntimeHandlers adds the given value to the RuntimeHandlers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the RuntimeHandlers field.
    +func (b *NodeStatusApplyConfiguration) WithRuntimeHandlers(values ...*NodeRuntimeHandlerApplyConfiguration) *NodeStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithRuntimeHandlers")
    +		}
    +		b.RuntimeHandlers = append(b.RuntimeHandlers, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFeatures sets the Features field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Features field is set to the value of the last call.
    +func (b *NodeStatusApplyConfiguration) WithFeatures(value *NodeFeaturesApplyConfiguration) *NodeStatusApplyConfiguration {
    +	b.Features = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodesysteminfo.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodesysteminfo.go
    index 2634ea984292..11ac50713cbb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodesysteminfo.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodesysteminfo.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// NodeSystemInfoApplyConfiguration represents an declarative configuration of the NodeSystemInfo type for use
    +// NodeSystemInfoApplyConfiguration represents a declarative configuration of the NodeSystemInfo type for use
     // with apply.
     type NodeSystemInfoApplyConfiguration struct {
     	MachineID               *string `json:"machineID,omitempty"`
    @@ -33,7 +33,7 @@ type NodeSystemInfoApplyConfiguration struct {
     	Architecture            *string `json:"architecture,omitempty"`
     }
     
    -// NodeSystemInfoApplyConfiguration constructs an declarative configuration of the NodeSystemInfo type for use with
    +// NodeSystemInfoApplyConfiguration constructs a declarative configuration of the NodeSystemInfo type for use with
     // apply.
     func NodeSystemInfo() *NodeSystemInfoApplyConfiguration {
     	return &NodeSystemInfoApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/objectfieldselector.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/objectfieldselector.go
    index 0c2402b3c74d..c129c998b168 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/objectfieldselector.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/objectfieldselector.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ObjectFieldSelectorApplyConfiguration represents an declarative configuration of the ObjectFieldSelector type for use
    +// ObjectFieldSelectorApplyConfiguration represents a declarative configuration of the ObjectFieldSelector type for use
     // with apply.
     type ObjectFieldSelectorApplyConfiguration struct {
     	APIVersion *string `json:"apiVersion,omitempty"`
     	FieldPath  *string `json:"fieldPath,omitempty"`
     }
     
    -// ObjectFieldSelectorApplyConfiguration constructs an declarative configuration of the ObjectFieldSelector type for use with
    +// ObjectFieldSelectorApplyConfiguration constructs a declarative configuration of the ObjectFieldSelector type for use with
     // apply.
     func ObjectFieldSelector() *ObjectFieldSelectorApplyConfiguration {
     	return &ObjectFieldSelectorApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/objectreference.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/objectreference.go
    index 667fa84a8176..4cd3f226ef31 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/objectreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/objectreference.go
    @@ -22,7 +22,7 @@ import (
     	types "k8s.io/apimachinery/pkg/types"
     )
     
    -// ObjectReferenceApplyConfiguration represents an declarative configuration of the ObjectReference type for use
    +// ObjectReferenceApplyConfiguration represents a declarative configuration of the ObjectReference type for use
     // with apply.
     type ObjectReferenceApplyConfiguration struct {
     	Kind            *string    `json:"kind,omitempty"`
    @@ -34,7 +34,7 @@ type ObjectReferenceApplyConfiguration struct {
     	FieldPath       *string    `json:"fieldPath,omitempty"`
     }
     
    -// ObjectReferenceApplyConfiguration constructs an declarative configuration of the ObjectReference type for use with
    +// ObjectReferenceApplyConfiguration constructs a declarative configuration of the ObjectReference type for use with
     // apply.
     func ObjectReference() *ObjectReferenceApplyConfiguration {
     	return &ObjectReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolume.go
    index 2599c197e8e8..6840c1c88693 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolume.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolume.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PersistentVolumeApplyConfiguration represents an declarative configuration of the PersistentVolume type for use
    +// PersistentVolumeApplyConfiguration represents a declarative configuration of the PersistentVolume type for use
     // with apply.
     type PersistentVolumeApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *PersistentVolumeSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *PersistentVolumeStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *PersistentVolumeSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *PersistentVolumeStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// PersistentVolume constructs an declarative configuration of the PersistentVolume type for use with
    +// PersistentVolume constructs a declarative configuration of the PersistentVolume type for use with
     // apply.
     func PersistentVolume(name string) *PersistentVolumeApplyConfiguration {
     	b := &PersistentVolumeApplyConfiguration{}
    @@ -57,18 +57,18 @@ func PersistentVolume(name string) *PersistentVolumeApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractPersistentVolume(persistentVolume *apicorev1.PersistentVolume, fieldManager string) (*PersistentVolumeApplyConfiguration, error) {
    +func ExtractPersistentVolume(persistentVolume *corev1.PersistentVolume, fieldManager string) (*PersistentVolumeApplyConfiguration, error) {
     	return extractPersistentVolume(persistentVolume, fieldManager, "")
     }
     
     // ExtractPersistentVolumeStatus is the same as ExtractPersistentVolume except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractPersistentVolumeStatus(persistentVolume *apicorev1.PersistentVolume, fieldManager string) (*PersistentVolumeApplyConfiguration, error) {
    +func ExtractPersistentVolumeStatus(persistentVolume *corev1.PersistentVolume, fieldManager string) (*PersistentVolumeApplyConfiguration, error) {
     	return extractPersistentVolume(persistentVolume, fieldManager, "status")
     }
     
    -func extractPersistentVolume(persistentVolume *apicorev1.PersistentVolume, fieldManager string, subresource string) (*PersistentVolumeApplyConfiguration, error) {
    +func extractPersistentVolume(persistentVolume *corev1.PersistentVolume, fieldManager string, subresource string) (*PersistentVolumeApplyConfiguration, error) {
     	b := &PersistentVolumeApplyConfiguration{}
     	err := managedfields.ExtractInto(persistentVolume, internal.Parser().Type("io.k8s.api.core.v1.PersistentVolume"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractPersistentVolume(persistentVolume *apicorev1.PersistentVolume, field
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PersistentVolumeApplyConfiguration) WithKind(value string) *PersistentVolumeApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *PersistentVolumeApplyConfiguration) WithKind(value string) *PersistentV
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PersistentVolumeApplyConfiguration) WithAPIVersion(value string) *PersistentVolumeApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *PersistentVolumeApplyConfiguration) WithAPIVersion(value string) *Persi
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PersistentVolumeApplyConfiguration) WithName(value string) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *PersistentVolumeApplyConfiguration) WithName(value string) *PersistentV
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PersistentVolumeApplyConfiguration) WithGenerateName(value string) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *PersistentVolumeApplyConfiguration) WithGenerateName(value string) *Per
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PersistentVolumeApplyConfiguration) WithNamespace(value string) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *PersistentVolumeApplyConfiguration) WithNamespace(value string) *Persis
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PersistentVolumeApplyConfiguration) WithUID(value types.UID) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *PersistentVolumeApplyConfiguration) WithUID(value types.UID) *Persisten
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PersistentVolumeApplyConfiguration) WithResourceVersion(value string) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,25 +147,25 @@ func (b *PersistentVolumeApplyConfiguration) WithResourceVersion(value string) *
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PersistentVolumeApplyConfiguration) WithGeneration(value int64) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *PersistentVolumeApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PersistentVolumeApplyConfiguration {
    +func (b *PersistentVolumeApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *PersistentVolumeApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PersistentVolumeApplyConfiguration {
    +func (b *PersistentVolumeApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *PersistentVolumeApplyConfiguration) WithDeletionTimestamp(value metav1.
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PersistentVolumeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *PersistentVolumeApplyConfiguration) WithDeletionGracePeriodSeconds(valu
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PersistentVolumeApplyConfiguration) WithLabels(entries map[string]string) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *PersistentVolumeApplyConfiguration) WithLabels(entries map[string]strin
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PersistentVolumeApplyConfiguration) WithAnnotations(entries map[string]string) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -211,13 +211,13 @@ func (b *PersistentVolumeApplyConfiguration) WithAnnotations(entries map[string]
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *PersistentVolumeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *PersistentVolumeApplyConfiguration {
    +func (b *PersistentVolumeApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,14 +228,14 @@ func (b *PersistentVolumeApplyConfiguration) WithOwnerReferences(values ...*v1.O
     func (b *PersistentVolumeApplyConfiguration) WithFinalizers(values ...string) *PersistentVolumeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *PersistentVolumeApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -254,3 +254,9 @@ func (b *PersistentVolumeApplyConfiguration) WithStatus(value *PersistentVolumeS
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PersistentVolumeApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaim.go
    index a0a001701878..93b8b69d4d04 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaim.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaim.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PersistentVolumeClaimApplyConfiguration represents an declarative configuration of the PersistentVolumeClaim type for use
    +// PersistentVolumeClaimApplyConfiguration represents a declarative configuration of the PersistentVolumeClaim type for use
     // with apply.
     type PersistentVolumeClaimApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *PersistentVolumeClaimSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *PersistentVolumeClaimStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *PersistentVolumeClaimSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *PersistentVolumeClaimStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// PersistentVolumeClaim constructs an declarative configuration of the PersistentVolumeClaim type for use with
    +// PersistentVolumeClaim constructs a declarative configuration of the PersistentVolumeClaim type for use with
     // apply.
     func PersistentVolumeClaim(name, namespace string) *PersistentVolumeClaimApplyConfiguration {
     	b := &PersistentVolumeClaimApplyConfiguration{}
    @@ -58,18 +58,18 @@ func PersistentVolumeClaim(name, namespace string) *PersistentVolumeClaimApplyCo
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractPersistentVolumeClaim(persistentVolumeClaim *apicorev1.PersistentVolumeClaim, fieldManager string) (*PersistentVolumeClaimApplyConfiguration, error) {
    +func ExtractPersistentVolumeClaim(persistentVolumeClaim *corev1.PersistentVolumeClaim, fieldManager string) (*PersistentVolumeClaimApplyConfiguration, error) {
     	return extractPersistentVolumeClaim(persistentVolumeClaim, fieldManager, "")
     }
     
     // ExtractPersistentVolumeClaimStatus is the same as ExtractPersistentVolumeClaim except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractPersistentVolumeClaimStatus(persistentVolumeClaim *apicorev1.PersistentVolumeClaim, fieldManager string) (*PersistentVolumeClaimApplyConfiguration, error) {
    +func ExtractPersistentVolumeClaimStatus(persistentVolumeClaim *corev1.PersistentVolumeClaim, fieldManager string) (*PersistentVolumeClaimApplyConfiguration, error) {
     	return extractPersistentVolumeClaim(persistentVolumeClaim, fieldManager, "status")
     }
     
    -func extractPersistentVolumeClaim(persistentVolumeClaim *apicorev1.PersistentVolumeClaim, fieldManager string, subresource string) (*PersistentVolumeClaimApplyConfiguration, error) {
    +func extractPersistentVolumeClaim(persistentVolumeClaim *corev1.PersistentVolumeClaim, fieldManager string, subresource string) (*PersistentVolumeClaimApplyConfiguration, error) {
     	b := &PersistentVolumeClaimApplyConfiguration{}
     	err := managedfields.ExtractInto(persistentVolumeClaim, internal.Parser().Type("io.k8s.api.core.v1.PersistentVolumeClaim"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractPersistentVolumeClaim(persistentVolumeClaim *apicorev1.PersistentVol
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PersistentVolumeClaimApplyConfiguration) WithKind(value string) *PersistentVolumeClaimApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithKind(value string) *Persis
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PersistentVolumeClaimApplyConfiguration) WithAPIVersion(value string) *PersistentVolumeClaimApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithAPIVersion(value string) *
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PersistentVolumeClaimApplyConfiguration) WithName(value string) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithName(value string) *Persis
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PersistentVolumeClaimApplyConfiguration) WithGenerateName(value string) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithGenerateName(value string)
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PersistentVolumeClaimApplyConfiguration) WithNamespace(value string) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithNamespace(value string) *P
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PersistentVolumeClaimApplyConfiguration) WithUID(value types.UID) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithUID(value types.UID) *Pers
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PersistentVolumeClaimApplyConfiguration) WithResourceVersion(value string) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithResourceVersion(value stri
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PersistentVolumeClaimApplyConfiguration) WithGeneration(value int64) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *PersistentVolumeClaimApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PersistentVolumeClaimApplyConfiguration {
    +func (b *PersistentVolumeClaimApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *PersistentVolumeClaimApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PersistentVolumeClaimApplyConfiguration {
    +func (b *PersistentVolumeClaimApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithDeletionTimestamp(value me
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PersistentVolumeClaimApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithDeletionGracePeriodSeconds
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PersistentVolumeClaimApplyConfiguration) WithLabels(entries map[string]string) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithLabels(entries map[string]
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PersistentVolumeClaimApplyConfiguration) WithAnnotations(entries map[string]string) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithAnnotations(entries map[st
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *PersistentVolumeClaimApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *PersistentVolumeClaimApplyConfiguration {
    +func (b *PersistentVolumeClaimApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithOwnerReferences(values ...
     func (b *PersistentVolumeClaimApplyConfiguration) WithFinalizers(values ...string) *PersistentVolumeClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *PersistentVolumeClaimApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *PersistentVolumeClaimApplyConfiguration) WithStatus(value *PersistentVo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PersistentVolumeClaimApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimcondition.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimcondition.go
    index 65449e92eba3..40025d533b23 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimcondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// PersistentVolumeClaimConditionApplyConfiguration represents an declarative configuration of the PersistentVolumeClaimCondition type for use
    +// PersistentVolumeClaimConditionApplyConfiguration represents a declarative configuration of the PersistentVolumeClaimCondition type for use
     // with apply.
     type PersistentVolumeClaimConditionApplyConfiguration struct {
    -	Type               *v1.PersistentVolumeClaimConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus                    `json:"status,omitempty"`
    -	LastProbeTime      *metav1.Time                           `json:"lastProbeTime,omitempty"`
    -	LastTransitionTime *metav1.Time                           `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                `json:"reason,omitempty"`
    -	Message            *string                                `json:"message,omitempty"`
    +	Type               *corev1.PersistentVolumeClaimConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus                    `json:"status,omitempty"`
    +	LastProbeTime      *metav1.Time                               `json:"lastProbeTime,omitempty"`
    +	LastTransitionTime *metav1.Time                               `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                    `json:"reason,omitempty"`
    +	Message            *string                                    `json:"message,omitempty"`
     }
     
    -// PersistentVolumeClaimConditionApplyConfiguration constructs an declarative configuration of the PersistentVolumeClaimCondition type for use with
    +// PersistentVolumeClaimConditionApplyConfiguration constructs a declarative configuration of the PersistentVolumeClaimCondition type for use with
     // apply.
     func PersistentVolumeClaimCondition() *PersistentVolumeClaimConditionApplyConfiguration {
     	return &PersistentVolumeClaimConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func PersistentVolumeClaimCondition() *PersistentVolumeClaimConditionApplyConfig
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PersistentVolumeClaimConditionApplyConfiguration) WithType(value v1.PersistentVolumeClaimConditionType) *PersistentVolumeClaimConditionApplyConfiguration {
    +func (b *PersistentVolumeClaimConditionApplyConfiguration) WithType(value corev1.PersistentVolumeClaimConditionType) *PersistentVolumeClaimConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -51,7 +51,7 @@ func (b *PersistentVolumeClaimConditionApplyConfiguration) WithType(value v1.Per
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *PersistentVolumeClaimConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *PersistentVolumeClaimConditionApplyConfiguration {
    +func (b *PersistentVolumeClaimConditionApplyConfiguration) WithStatus(value corev1.ConditionStatus) *PersistentVolumeClaimConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimspec.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimspec.go
    index 4db12fadb387..2c2be16b37d4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimspec.go
    @@ -19,25 +19,25 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PersistentVolumeClaimSpecApplyConfiguration represents an declarative configuration of the PersistentVolumeClaimSpec type for use
    +// PersistentVolumeClaimSpecApplyConfiguration represents a declarative configuration of the PersistentVolumeClaimSpec type for use
     // with apply.
     type PersistentVolumeClaimSpecApplyConfiguration struct {
    -	AccessModes               []v1.PersistentVolumeAccessMode               `json:"accessModes,omitempty"`
    +	AccessModes               []corev1.PersistentVolumeAccessMode           `json:"accessModes,omitempty"`
     	Selector                  *metav1.LabelSelectorApplyConfiguration       `json:"selector,omitempty"`
     	Resources                 *VolumeResourceRequirementsApplyConfiguration `json:"resources,omitempty"`
     	VolumeName                *string                                       `json:"volumeName,omitempty"`
     	StorageClassName          *string                                       `json:"storageClassName,omitempty"`
    -	VolumeMode                *v1.PersistentVolumeMode                      `json:"volumeMode,omitempty"`
    +	VolumeMode                *corev1.PersistentVolumeMode                  `json:"volumeMode,omitempty"`
     	DataSource                *TypedLocalObjectReferenceApplyConfiguration  `json:"dataSource,omitempty"`
     	DataSourceRef             *TypedObjectReferenceApplyConfiguration       `json:"dataSourceRef,omitempty"`
     	VolumeAttributesClassName *string                                       `json:"volumeAttributesClassName,omitempty"`
     }
     
    -// PersistentVolumeClaimSpecApplyConfiguration constructs an declarative configuration of the PersistentVolumeClaimSpec type for use with
    +// PersistentVolumeClaimSpecApplyConfiguration constructs a declarative configuration of the PersistentVolumeClaimSpec type for use with
     // apply.
     func PersistentVolumeClaimSpec() *PersistentVolumeClaimSpecApplyConfiguration {
     	return &PersistentVolumeClaimSpecApplyConfiguration{}
    @@ -46,7 +46,7 @@ func PersistentVolumeClaimSpec() *PersistentVolumeClaimSpecApplyConfiguration {
     // WithAccessModes adds the given value to the AccessModes field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the AccessModes field.
    -func (b *PersistentVolumeClaimSpecApplyConfiguration) WithAccessModes(values ...v1.PersistentVolumeAccessMode) *PersistentVolumeClaimSpecApplyConfiguration {
    +func (b *PersistentVolumeClaimSpecApplyConfiguration) WithAccessModes(values ...corev1.PersistentVolumeAccessMode) *PersistentVolumeClaimSpecApplyConfiguration {
     	for i := range values {
     		b.AccessModes = append(b.AccessModes, values[i])
     	}
    @@ -88,7 +88,7 @@ func (b *PersistentVolumeClaimSpecApplyConfiguration) WithStorageClassName(value
     // WithVolumeMode sets the VolumeMode field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the VolumeMode field is set to the value of the last call.
    -func (b *PersistentVolumeClaimSpecApplyConfiguration) WithVolumeMode(value v1.PersistentVolumeMode) *PersistentVolumeClaimSpecApplyConfiguration {
    +func (b *PersistentVolumeClaimSpecApplyConfiguration) WithVolumeMode(value corev1.PersistentVolumeMode) *PersistentVolumeClaimSpecApplyConfiguration {
     	b.VolumeMode = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimstatus.go
    index 1f6d5ae32383..6cea23a2ce13 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimstatus.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// PersistentVolumeClaimStatusApplyConfiguration represents an declarative configuration of the PersistentVolumeClaimStatus type for use
    +// PersistentVolumeClaimStatusApplyConfiguration represents a declarative configuration of the PersistentVolumeClaimStatus type for use
     // with apply.
     type PersistentVolumeClaimStatusApplyConfiguration struct {
    -	Phase                            *v1.PersistentVolumeClaimPhase                     `json:"phase,omitempty"`
    -	AccessModes                      []v1.PersistentVolumeAccessMode                    `json:"accessModes,omitempty"`
    -	Capacity                         *v1.ResourceList                                   `json:"capacity,omitempty"`
    +	Phase                            *corev1.PersistentVolumeClaimPhase                 `json:"phase,omitempty"`
    +	AccessModes                      []corev1.PersistentVolumeAccessMode                `json:"accessModes,omitempty"`
    +	Capacity                         *corev1.ResourceList                               `json:"capacity,omitempty"`
     	Conditions                       []PersistentVolumeClaimConditionApplyConfiguration `json:"conditions,omitempty"`
    -	AllocatedResources               *v1.ResourceList                                   `json:"allocatedResources,omitempty"`
    -	AllocatedResourceStatuses        map[v1.ResourceName]v1.ClaimResourceStatus         `json:"allocatedResourceStatuses,omitempty"`
    +	AllocatedResources               *corev1.ResourceList                               `json:"allocatedResources,omitempty"`
    +	AllocatedResourceStatuses        map[corev1.ResourceName]corev1.ClaimResourceStatus `json:"allocatedResourceStatuses,omitempty"`
     	CurrentVolumeAttributesClassName *string                                            `json:"currentVolumeAttributesClassName,omitempty"`
     	ModifyVolumeStatus               *ModifyVolumeStatusApplyConfiguration              `json:"modifyVolumeStatus,omitempty"`
     }
     
    -// PersistentVolumeClaimStatusApplyConfiguration constructs an declarative configuration of the PersistentVolumeClaimStatus type for use with
    +// PersistentVolumeClaimStatusApplyConfiguration constructs a declarative configuration of the PersistentVolumeClaimStatus type for use with
     // apply.
     func PersistentVolumeClaimStatus() *PersistentVolumeClaimStatusApplyConfiguration {
     	return &PersistentVolumeClaimStatusApplyConfiguration{}
    @@ -44,7 +44,7 @@ func PersistentVolumeClaimStatus() *PersistentVolumeClaimStatusApplyConfiguratio
     // WithPhase sets the Phase field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Phase field is set to the value of the last call.
    -func (b *PersistentVolumeClaimStatusApplyConfiguration) WithPhase(value v1.PersistentVolumeClaimPhase) *PersistentVolumeClaimStatusApplyConfiguration {
    +func (b *PersistentVolumeClaimStatusApplyConfiguration) WithPhase(value corev1.PersistentVolumeClaimPhase) *PersistentVolumeClaimStatusApplyConfiguration {
     	b.Phase = &value
     	return b
     }
    @@ -52,7 +52,7 @@ func (b *PersistentVolumeClaimStatusApplyConfiguration) WithPhase(value v1.Persi
     // WithAccessModes adds the given value to the AccessModes field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the AccessModes field.
    -func (b *PersistentVolumeClaimStatusApplyConfiguration) WithAccessModes(values ...v1.PersistentVolumeAccessMode) *PersistentVolumeClaimStatusApplyConfiguration {
    +func (b *PersistentVolumeClaimStatusApplyConfiguration) WithAccessModes(values ...corev1.PersistentVolumeAccessMode) *PersistentVolumeClaimStatusApplyConfiguration {
     	for i := range values {
     		b.AccessModes = append(b.AccessModes, values[i])
     	}
    @@ -62,7 +62,7 @@ func (b *PersistentVolumeClaimStatusApplyConfiguration) WithAccessModes(values .
     // WithCapacity sets the Capacity field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Capacity field is set to the value of the last call.
    -func (b *PersistentVolumeClaimStatusApplyConfiguration) WithCapacity(value v1.ResourceList) *PersistentVolumeClaimStatusApplyConfiguration {
    +func (b *PersistentVolumeClaimStatusApplyConfiguration) WithCapacity(value corev1.ResourceList) *PersistentVolumeClaimStatusApplyConfiguration {
     	b.Capacity = &value
     	return b
     }
    @@ -83,7 +83,7 @@ func (b *PersistentVolumeClaimStatusApplyConfiguration) WithConditions(values ..
     // WithAllocatedResources sets the AllocatedResources field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AllocatedResources field is set to the value of the last call.
    -func (b *PersistentVolumeClaimStatusApplyConfiguration) WithAllocatedResources(value v1.ResourceList) *PersistentVolumeClaimStatusApplyConfiguration {
    +func (b *PersistentVolumeClaimStatusApplyConfiguration) WithAllocatedResources(value corev1.ResourceList) *PersistentVolumeClaimStatusApplyConfiguration {
     	b.AllocatedResources = &value
     	return b
     }
    @@ -92,9 +92,9 @@ func (b *PersistentVolumeClaimStatusApplyConfiguration) WithAllocatedResources(v
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, the entries provided by each call will be put on the AllocatedResourceStatuses field,
     // overwriting an existing map entries in AllocatedResourceStatuses field with the same key.
    -func (b *PersistentVolumeClaimStatusApplyConfiguration) WithAllocatedResourceStatuses(entries map[v1.ResourceName]v1.ClaimResourceStatus) *PersistentVolumeClaimStatusApplyConfiguration {
    +func (b *PersistentVolumeClaimStatusApplyConfiguration) WithAllocatedResourceStatuses(entries map[corev1.ResourceName]corev1.ClaimResourceStatus) *PersistentVolumeClaimStatusApplyConfiguration {
     	if b.AllocatedResourceStatuses == nil && len(entries) > 0 {
    -		b.AllocatedResourceStatuses = make(map[v1.ResourceName]v1.ClaimResourceStatus, len(entries))
    +		b.AllocatedResourceStatuses = make(map[corev1.ResourceName]corev1.ClaimResourceStatus, len(entries))
     	}
     	for k, v := range entries {
     		b.AllocatedResourceStatuses[k] = v
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimtemplate.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimtemplate.go
    index 894d04f0b4e1..4db3cbf12c83 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimtemplate.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimtemplate.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PersistentVolumeClaimTemplateApplyConfiguration represents an declarative configuration of the PersistentVolumeClaimTemplate type for use
    +// PersistentVolumeClaimTemplateApplyConfiguration represents a declarative configuration of the PersistentVolumeClaimTemplate type for use
     // with apply.
     type PersistentVolumeClaimTemplateApplyConfiguration struct {
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *PersistentVolumeClaimSpecApplyConfiguration `json:"spec,omitempty"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *PersistentVolumeClaimSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// PersistentVolumeClaimTemplateApplyConfiguration constructs an declarative configuration of the PersistentVolumeClaimTemplate type for use with
    +// PersistentVolumeClaimTemplateApplyConfiguration constructs a declarative configuration of the PersistentVolumeClaimTemplate type for use with
     // apply.
     func PersistentVolumeClaimTemplate() *PersistentVolumeClaimTemplateApplyConfiguration {
     	return &PersistentVolumeClaimTemplateApplyConfiguration{}
    @@ -42,7 +42,7 @@ func PersistentVolumeClaimTemplate() *PersistentVolumeClaimTemplateApplyConfigur
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithName(value string) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -51,7 +51,7 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithName(value string)
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithGenerateName(value string) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -60,7 +60,7 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithGenerateName(value
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithNamespace(value string) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -69,7 +69,7 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithNamespace(value st
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithUID(value types.UID) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -78,7 +78,7 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithUID(value types.UI
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithResourceVersion(value string) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -87,25 +87,25 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithResourceVersion(va
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithGeneration(value int64) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PersistentVolumeClaimTemplateApplyConfiguration {
    +func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PersistentVolumeClaimTemplateApplyConfiguration {
    +func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithDeletionTimestamp(
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -124,11 +124,11 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithDeletionGracePerio
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithLabels(entries map[string]string) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -139,11 +139,11 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithLabels(entries map
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithAnnotations(entries map[string]string) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -151,13 +151,13 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithAnnotations(entrie
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *PersistentVolumeClaimTemplateApplyConfiguration {
    +func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -168,14 +168,14 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithOwnerReferences(va
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithFinalizers(values ...string) *PersistentVolumeClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *PersistentVolumeClaimTemplateApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -186,3 +186,9 @@ func (b *PersistentVolumeClaimTemplateApplyConfiguration) WithSpec(value *Persis
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PersistentVolumeClaimTemplateApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimvolumesource.go
    index a498fa6a5eb2..ccccdfb49306 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimvolumesource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// PersistentVolumeClaimVolumeSourceApplyConfiguration represents an declarative configuration of the PersistentVolumeClaimVolumeSource type for use
    +// PersistentVolumeClaimVolumeSourceApplyConfiguration represents a declarative configuration of the PersistentVolumeClaimVolumeSource type for use
     // with apply.
     type PersistentVolumeClaimVolumeSourceApplyConfiguration struct {
     	ClaimName *string `json:"claimName,omitempty"`
     	ReadOnly  *bool   `json:"readOnly,omitempty"`
     }
     
    -// PersistentVolumeClaimVolumeSourceApplyConfiguration constructs an declarative configuration of the PersistentVolumeClaimVolumeSource type for use with
    +// PersistentVolumeClaimVolumeSourceApplyConfiguration constructs a declarative configuration of the PersistentVolumeClaimVolumeSource type for use with
     // apply.
     func PersistentVolumeClaimVolumeSource() *PersistentVolumeClaimVolumeSourceApplyConfiguration {
     	return &PersistentVolumeClaimVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumesource.go
    index 0576e7dd31e0..aba01246224e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// PersistentVolumeSourceApplyConfiguration represents an declarative configuration of the PersistentVolumeSource type for use
    +// PersistentVolumeSourceApplyConfiguration represents a declarative configuration of the PersistentVolumeSource type for use
     // with apply.
     type PersistentVolumeSourceApplyConfiguration struct {
     	GCEPersistentDisk    *GCEPersistentDiskVolumeSourceApplyConfiguration    `json:"gcePersistentDisk,omitempty"`
    @@ -45,7 +45,7 @@ type PersistentVolumeSourceApplyConfiguration struct {
     	CSI                  *CSIPersistentVolumeSourceApplyConfiguration        `json:"csi,omitempty"`
     }
     
    -// PersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the PersistentVolumeSource type for use with
    +// PersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the PersistentVolumeSource type for use with
     // apply.
     func PersistentVolumeSource() *PersistentVolumeSourceApplyConfiguration {
     	return &PersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumespec.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumespec.go
    index 8a30dab64952..792e3b94401f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumespec.go
    @@ -19,25 +19,25 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// PersistentVolumeSpecApplyConfiguration represents an declarative configuration of the PersistentVolumeSpec type for use
    +// PersistentVolumeSpecApplyConfiguration represents a declarative configuration of the PersistentVolumeSpec type for use
     // with apply.
     type PersistentVolumeSpecApplyConfiguration struct {
    -	Capacity                                 *v1.ResourceList `json:"capacity,omitempty"`
    +	Capacity                                 *corev1.ResourceList `json:"capacity,omitempty"`
     	PersistentVolumeSourceApplyConfiguration `json:",inline"`
    -	AccessModes                              []v1.PersistentVolumeAccessMode       `json:"accessModes,omitempty"`
    +	AccessModes                              []corev1.PersistentVolumeAccessMode   `json:"accessModes,omitempty"`
     	ClaimRef                                 *ObjectReferenceApplyConfiguration    `json:"claimRef,omitempty"`
    -	PersistentVolumeReclaimPolicy            *v1.PersistentVolumeReclaimPolicy     `json:"persistentVolumeReclaimPolicy,omitempty"`
    +	PersistentVolumeReclaimPolicy            *corev1.PersistentVolumeReclaimPolicy `json:"persistentVolumeReclaimPolicy,omitempty"`
     	StorageClassName                         *string                               `json:"storageClassName,omitempty"`
     	MountOptions                             []string                              `json:"mountOptions,omitempty"`
    -	VolumeMode                               *v1.PersistentVolumeMode              `json:"volumeMode,omitempty"`
    +	VolumeMode                               *corev1.PersistentVolumeMode          `json:"volumeMode,omitempty"`
     	NodeAffinity                             *VolumeNodeAffinityApplyConfiguration `json:"nodeAffinity,omitempty"`
     	VolumeAttributesClassName                *string                               `json:"volumeAttributesClassName,omitempty"`
     }
     
    -// PersistentVolumeSpecApplyConfiguration constructs an declarative configuration of the PersistentVolumeSpec type for use with
    +// PersistentVolumeSpecApplyConfiguration constructs a declarative configuration of the PersistentVolumeSpec type for use with
     // apply.
     func PersistentVolumeSpec() *PersistentVolumeSpecApplyConfiguration {
     	return &PersistentVolumeSpecApplyConfiguration{}
    @@ -46,7 +46,7 @@ func PersistentVolumeSpec() *PersistentVolumeSpecApplyConfiguration {
     // WithCapacity sets the Capacity field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Capacity field is set to the value of the last call.
    -func (b *PersistentVolumeSpecApplyConfiguration) WithCapacity(value v1.ResourceList) *PersistentVolumeSpecApplyConfiguration {
    +func (b *PersistentVolumeSpecApplyConfiguration) WithCapacity(value corev1.ResourceList) *PersistentVolumeSpecApplyConfiguration {
     	b.Capacity = &value
     	return b
     }
    @@ -55,7 +55,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithCapacity(value v1.ResourceL
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the GCEPersistentDisk field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithGCEPersistentDisk(value *GCEPersistentDiskVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.GCEPersistentDisk = value
    +	b.PersistentVolumeSourceApplyConfiguration.GCEPersistentDisk = value
     	return b
     }
     
    @@ -63,7 +63,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithGCEPersistentDisk(value *GC
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AWSElasticBlockStore field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithAWSElasticBlockStore(value *AWSElasticBlockStoreVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.AWSElasticBlockStore = value
    +	b.PersistentVolumeSourceApplyConfiguration.AWSElasticBlockStore = value
     	return b
     }
     
    @@ -71,7 +71,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithAWSElasticBlockStore(value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the HostPath field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithHostPath(value *HostPathVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.HostPath = value
    +	b.PersistentVolumeSourceApplyConfiguration.HostPath = value
     	return b
     }
     
    @@ -79,7 +79,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithHostPath(value *HostPathVol
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Glusterfs field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithGlusterfs(value *GlusterfsPersistentVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.Glusterfs = value
    +	b.PersistentVolumeSourceApplyConfiguration.Glusterfs = value
     	return b
     }
     
    @@ -87,7 +87,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithGlusterfs(value *GlusterfsP
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the NFS field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithNFS(value *NFSVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.NFS = value
    +	b.PersistentVolumeSourceApplyConfiguration.NFS = value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithNFS(value *NFSVolumeSourceA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the RBD field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithRBD(value *RBDPersistentVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.RBD = value
    +	b.PersistentVolumeSourceApplyConfiguration.RBD = value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithRBD(value *RBDPersistentVol
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ISCSI field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithISCSI(value *ISCSIPersistentVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.ISCSI = value
    +	b.PersistentVolumeSourceApplyConfiguration.ISCSI = value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithISCSI(value *ISCSIPersisten
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Cinder field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithCinder(value *CinderPersistentVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.Cinder = value
    +	b.PersistentVolumeSourceApplyConfiguration.Cinder = value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithCinder(value *CinderPersist
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CephFS field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithCephFS(value *CephFSPersistentVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.CephFS = value
    +	b.PersistentVolumeSourceApplyConfiguration.CephFS = value
     	return b
     }
     
    @@ -127,7 +127,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithCephFS(value *CephFSPersist
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the FC field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithFC(value *FCVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.FC = value
    +	b.PersistentVolumeSourceApplyConfiguration.FC = value
     	return b
     }
     
    @@ -135,7 +135,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithFC(value *FCVolumeSourceApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Flocker field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithFlocker(value *FlockerVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.Flocker = value
    +	b.PersistentVolumeSourceApplyConfiguration.Flocker = value
     	return b
     }
     
    @@ -143,7 +143,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithFlocker(value *FlockerVolum
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the FlexVolume field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithFlexVolume(value *FlexPersistentVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.FlexVolume = value
    +	b.PersistentVolumeSourceApplyConfiguration.FlexVolume = value
     	return b
     }
     
    @@ -151,7 +151,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithFlexVolume(value *FlexPersi
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AzureFile field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithAzureFile(value *AzureFilePersistentVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.AzureFile = value
    +	b.PersistentVolumeSourceApplyConfiguration.AzureFile = value
     	return b
     }
     
    @@ -159,7 +159,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithAzureFile(value *AzureFileP
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the VsphereVolume field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithVsphereVolume(value *VsphereVirtualDiskVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.VsphereVolume = value
    +	b.PersistentVolumeSourceApplyConfiguration.VsphereVolume = value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithVsphereVolume(value *Vspher
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Quobyte field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithQuobyte(value *QuobyteVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.Quobyte = value
    +	b.PersistentVolumeSourceApplyConfiguration.Quobyte = value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithQuobyte(value *QuobyteVolum
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AzureDisk field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithAzureDisk(value *AzureDiskVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.AzureDisk = value
    +	b.PersistentVolumeSourceApplyConfiguration.AzureDisk = value
     	return b
     }
     
    @@ -183,7 +183,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithAzureDisk(value *AzureDiskV
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PhotonPersistentDisk field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithPhotonPersistentDisk(value *PhotonPersistentDiskVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.PhotonPersistentDisk = value
    +	b.PersistentVolumeSourceApplyConfiguration.PhotonPersistentDisk = value
     	return b
     }
     
    @@ -191,7 +191,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithPhotonPersistentDisk(value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PortworxVolume field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithPortworxVolume(value *PortworxVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.PortworxVolume = value
    +	b.PersistentVolumeSourceApplyConfiguration.PortworxVolume = value
     	return b
     }
     
    @@ -199,7 +199,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithPortworxVolume(value *Portw
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ScaleIO field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithScaleIO(value *ScaleIOPersistentVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.ScaleIO = value
    +	b.PersistentVolumeSourceApplyConfiguration.ScaleIO = value
     	return b
     }
     
    @@ -207,7 +207,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithScaleIO(value *ScaleIOPersi
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Local field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithLocal(value *LocalVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.Local = value
    +	b.PersistentVolumeSourceApplyConfiguration.Local = value
     	return b
     }
     
    @@ -215,7 +215,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithLocal(value *LocalVolumeSou
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the StorageOS field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithStorageOS(value *StorageOSPersistentVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.StorageOS = value
    +	b.PersistentVolumeSourceApplyConfiguration.StorageOS = value
     	return b
     }
     
    @@ -223,14 +223,14 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithStorageOS(value *StorageOSP
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CSI field is set to the value of the last call.
     func (b *PersistentVolumeSpecApplyConfiguration) WithCSI(value *CSIPersistentVolumeSourceApplyConfiguration) *PersistentVolumeSpecApplyConfiguration {
    -	b.CSI = value
    +	b.PersistentVolumeSourceApplyConfiguration.CSI = value
     	return b
     }
     
     // WithAccessModes adds the given value to the AccessModes field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the AccessModes field.
    -func (b *PersistentVolumeSpecApplyConfiguration) WithAccessModes(values ...v1.PersistentVolumeAccessMode) *PersistentVolumeSpecApplyConfiguration {
    +func (b *PersistentVolumeSpecApplyConfiguration) WithAccessModes(values ...corev1.PersistentVolumeAccessMode) *PersistentVolumeSpecApplyConfiguration {
     	for i := range values {
     		b.AccessModes = append(b.AccessModes, values[i])
     	}
    @@ -248,7 +248,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithClaimRef(value *ObjectRefer
     // WithPersistentVolumeReclaimPolicy sets the PersistentVolumeReclaimPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PersistentVolumeReclaimPolicy field is set to the value of the last call.
    -func (b *PersistentVolumeSpecApplyConfiguration) WithPersistentVolumeReclaimPolicy(value v1.PersistentVolumeReclaimPolicy) *PersistentVolumeSpecApplyConfiguration {
    +func (b *PersistentVolumeSpecApplyConfiguration) WithPersistentVolumeReclaimPolicy(value corev1.PersistentVolumeReclaimPolicy) *PersistentVolumeSpecApplyConfiguration {
     	b.PersistentVolumeReclaimPolicy = &value
     	return b
     }
    @@ -274,7 +274,7 @@ func (b *PersistentVolumeSpecApplyConfiguration) WithMountOptions(values ...stri
     // WithVolumeMode sets the VolumeMode field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the VolumeMode field is set to the value of the last call.
    -func (b *PersistentVolumeSpecApplyConfiguration) WithVolumeMode(value v1.PersistentVolumeMode) *PersistentVolumeSpecApplyConfiguration {
    +func (b *PersistentVolumeSpecApplyConfiguration) WithVolumeMode(value corev1.PersistentVolumeMode) *PersistentVolumeSpecApplyConfiguration {
     	b.VolumeMode = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumestatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumestatus.go
    index a473c0e927f4..0bb077ae0976 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumestatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumestatus.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// PersistentVolumeStatusApplyConfiguration represents an declarative configuration of the PersistentVolumeStatus type for use
    +// PersistentVolumeStatusApplyConfiguration represents a declarative configuration of the PersistentVolumeStatus type for use
     // with apply.
     type PersistentVolumeStatusApplyConfiguration struct {
    -	Phase                   *v1.PersistentVolumePhase `json:"phase,omitempty"`
    -	Message                 *string                   `json:"message,omitempty"`
    -	Reason                  *string                   `json:"reason,omitempty"`
    -	LastPhaseTransitionTime *metav1.Time              `json:"lastPhaseTransitionTime,omitempty"`
    +	Phase                   *corev1.PersistentVolumePhase `json:"phase,omitempty"`
    +	Message                 *string                       `json:"message,omitempty"`
    +	Reason                  *string                       `json:"reason,omitempty"`
    +	LastPhaseTransitionTime *metav1.Time                  `json:"lastPhaseTransitionTime,omitempty"`
     }
     
    -// PersistentVolumeStatusApplyConfiguration constructs an declarative configuration of the PersistentVolumeStatus type for use with
    +// PersistentVolumeStatusApplyConfiguration constructs a declarative configuration of the PersistentVolumeStatus type for use with
     // apply.
     func PersistentVolumeStatus() *PersistentVolumeStatusApplyConfiguration {
     	return &PersistentVolumeStatusApplyConfiguration{}
    @@ -41,7 +41,7 @@ func PersistentVolumeStatus() *PersistentVolumeStatusApplyConfiguration {
     // WithPhase sets the Phase field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Phase field is set to the value of the last call.
    -func (b *PersistentVolumeStatusApplyConfiguration) WithPhase(value v1.PersistentVolumePhase) *PersistentVolumeStatusApplyConfiguration {
    +func (b *PersistentVolumeStatusApplyConfiguration) WithPhase(value corev1.PersistentVolumePhase) *PersistentVolumeStatusApplyConfiguration {
     	b.Phase = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/photonpersistentdiskvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/photonpersistentdiskvolumesource.go
    index 43587d6768d7..d8dc103e2af1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/photonpersistentdiskvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/photonpersistentdiskvolumesource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// PhotonPersistentDiskVolumeSourceApplyConfiguration represents an declarative configuration of the PhotonPersistentDiskVolumeSource type for use
    +// PhotonPersistentDiskVolumeSourceApplyConfiguration represents a declarative configuration of the PhotonPersistentDiskVolumeSource type for use
     // with apply.
     type PhotonPersistentDiskVolumeSourceApplyConfiguration struct {
     	PdID   *string `json:"pdID,omitempty"`
     	FSType *string `json:"fsType,omitempty"`
     }
     
    -// PhotonPersistentDiskVolumeSourceApplyConfiguration constructs an declarative configuration of the PhotonPersistentDiskVolumeSource type for use with
    +// PhotonPersistentDiskVolumeSourceApplyConfiguration constructs a declarative configuration of the PhotonPersistentDiskVolumeSource type for use with
     // apply.
     func PhotonPersistentDiskVolumeSource() *PhotonPersistentDiskVolumeSourceApplyConfiguration {
     	return &PhotonPersistentDiskVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/pod.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/pod.go
    index 7210bd9836e1..29526709f394 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/pod.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/pod.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodApplyConfiguration represents an declarative configuration of the Pod type for use
    +// PodApplyConfiguration represents a declarative configuration of the Pod type for use
     // with apply.
     type PodApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *PodSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *PodStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *PodSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *PodStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Pod constructs an declarative configuration of the Pod type for use with
    +// Pod constructs a declarative configuration of the Pod type for use with
     // apply.
     func Pod(name, namespace string) *PodApplyConfiguration {
     	b := &PodApplyConfiguration{}
    @@ -58,18 +58,18 @@ func Pod(name, namespace string) *PodApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractPod(pod *apicorev1.Pod, fieldManager string) (*PodApplyConfiguration, error) {
    +func ExtractPod(pod *corev1.Pod, fieldManager string) (*PodApplyConfiguration, error) {
     	return extractPod(pod, fieldManager, "")
     }
     
     // ExtractPodStatus is the same as ExtractPod except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractPodStatus(pod *apicorev1.Pod, fieldManager string) (*PodApplyConfiguration, error) {
    +func ExtractPodStatus(pod *corev1.Pod, fieldManager string) (*PodApplyConfiguration, error) {
     	return extractPod(pod, fieldManager, "status")
     }
     
    -func extractPod(pod *apicorev1.Pod, fieldManager string, subresource string) (*PodApplyConfiguration, error) {
    +func extractPod(pod *corev1.Pod, fieldManager string, subresource string) (*PodApplyConfiguration, error) {
     	b := &PodApplyConfiguration{}
     	err := managedfields.ExtractInto(pod, internal.Parser().Type("io.k8s.api.core.v1.Pod"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractPod(pod *apicorev1.Pod, fieldManager string, subresource string) (*P
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PodApplyConfiguration) WithKind(value string) *PodApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *PodApplyConfiguration) WithKind(value string) *PodApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PodApplyConfiguration) WithAPIVersion(value string) *PodApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *PodApplyConfiguration) WithAPIVersion(value string) *PodApplyConfigurat
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PodApplyConfiguration) WithName(value string) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *PodApplyConfiguration) WithName(value string) *PodApplyConfiguration {
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PodApplyConfiguration) WithGenerateName(value string) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *PodApplyConfiguration) WithGenerateName(value string) *PodApplyConfigur
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PodApplyConfiguration) WithNamespace(value string) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *PodApplyConfiguration) WithNamespace(value string) *PodApplyConfigurati
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PodApplyConfiguration) WithUID(value types.UID) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *PodApplyConfiguration) WithUID(value types.UID) *PodApplyConfiguration
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PodApplyConfiguration) WithResourceVersion(value string) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *PodApplyConfiguration) WithResourceVersion(value string) *PodApplyConfi
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PodApplyConfiguration) WithGeneration(value int64) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *PodApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PodApplyConfiguration {
    +func (b *PodApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *PodApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PodApplyConfiguration {
    +func (b *PodApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *PodApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PodApp
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PodApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *PodApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *Pod
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PodApplyConfiguration) WithLabels(entries map[string]string) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *PodApplyConfiguration) WithLabels(entries map[string]string) *PodApplyC
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PodApplyConfiguration) WithAnnotations(entries map[string]string) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *PodApplyConfiguration) WithAnnotations(entries map[string]string) *PodA
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *PodApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *PodApplyConfiguration {
    +func (b *PodApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *PodApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReference
     func (b *PodApplyConfiguration) WithFinalizers(values ...string) *PodApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *PodApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *PodApplyConfiguration) WithStatus(value *PodStatusApplyConfiguration) *
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PodApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podaffinity.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podaffinity.go
    index 7049c62121eb..23fed9546469 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podaffinity.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podaffinity.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// PodAffinityApplyConfiguration represents an declarative configuration of the PodAffinity type for use
    +// PodAffinityApplyConfiguration represents a declarative configuration of the PodAffinity type for use
     // with apply.
     type PodAffinityApplyConfiguration struct {
     	RequiredDuringSchedulingIgnoredDuringExecution  []PodAffinityTermApplyConfiguration         `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
     	PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTermApplyConfiguration `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
     }
     
    -// PodAffinityApplyConfiguration constructs an declarative configuration of the PodAffinity type for use with
    +// PodAffinityApplyConfiguration constructs a declarative configuration of the PodAffinity type for use with
     // apply.
     func PodAffinity() *PodAffinityApplyConfiguration {
     	return &PodAffinityApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podaffinityterm.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podaffinityterm.go
    index ac1eab3d8c72..1cc1ca0d0632 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podaffinityterm.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podaffinityterm.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodAffinityTermApplyConfiguration represents an declarative configuration of the PodAffinityTerm type for use
    +// PodAffinityTermApplyConfiguration represents a declarative configuration of the PodAffinityTerm type for use
     // with apply.
     type PodAffinityTermApplyConfiguration struct {
    -	LabelSelector     *v1.LabelSelectorApplyConfiguration `json:"labelSelector,omitempty"`
    -	Namespaces        []string                            `json:"namespaces,omitempty"`
    -	TopologyKey       *string                             `json:"topologyKey,omitempty"`
    -	NamespaceSelector *v1.LabelSelectorApplyConfiguration `json:"namespaceSelector,omitempty"`
    -	MatchLabelKeys    []string                            `json:"matchLabelKeys,omitempty"`
    -	MismatchLabelKeys []string                            `json:"mismatchLabelKeys,omitempty"`
    +	LabelSelector     *metav1.LabelSelectorApplyConfiguration `json:"labelSelector,omitempty"`
    +	Namespaces        []string                                `json:"namespaces,omitempty"`
    +	TopologyKey       *string                                 `json:"topologyKey,omitempty"`
    +	NamespaceSelector *metav1.LabelSelectorApplyConfiguration `json:"namespaceSelector,omitempty"`
    +	MatchLabelKeys    []string                                `json:"matchLabelKeys,omitempty"`
    +	MismatchLabelKeys []string                                `json:"mismatchLabelKeys,omitempty"`
     }
     
    -// PodAffinityTermApplyConfiguration constructs an declarative configuration of the PodAffinityTerm type for use with
    +// PodAffinityTermApplyConfiguration constructs a declarative configuration of the PodAffinityTerm type for use with
     // apply.
     func PodAffinityTerm() *PodAffinityTermApplyConfiguration {
     	return &PodAffinityTermApplyConfiguration{}
    @@ -42,7 +42,7 @@ func PodAffinityTerm() *PodAffinityTermApplyConfiguration {
     // WithLabelSelector sets the LabelSelector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the LabelSelector field is set to the value of the last call.
    -func (b *PodAffinityTermApplyConfiguration) WithLabelSelector(value *v1.LabelSelectorApplyConfiguration) *PodAffinityTermApplyConfiguration {
    +func (b *PodAffinityTermApplyConfiguration) WithLabelSelector(value *metav1.LabelSelectorApplyConfiguration) *PodAffinityTermApplyConfiguration {
     	b.LabelSelector = value
     	return b
     }
    @@ -68,7 +68,7 @@ func (b *PodAffinityTermApplyConfiguration) WithTopologyKey(value string) *PodAf
     // WithNamespaceSelector sets the NamespaceSelector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the NamespaceSelector field is set to the value of the last call.
    -func (b *PodAffinityTermApplyConfiguration) WithNamespaceSelector(value *v1.LabelSelectorApplyConfiguration) *PodAffinityTermApplyConfiguration {
    +func (b *PodAffinityTermApplyConfiguration) WithNamespaceSelector(value *metav1.LabelSelectorApplyConfiguration) *PodAffinityTermApplyConfiguration {
     	b.NamespaceSelector = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podantiaffinity.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podantiaffinity.go
    index 42681c54c4a0..ae9848963df1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podantiaffinity.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podantiaffinity.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// PodAntiAffinityApplyConfiguration represents an declarative configuration of the PodAntiAffinity type for use
    +// PodAntiAffinityApplyConfiguration represents a declarative configuration of the PodAntiAffinity type for use
     // with apply.
     type PodAntiAffinityApplyConfiguration struct {
     	RequiredDuringSchedulingIgnoredDuringExecution  []PodAffinityTermApplyConfiguration         `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
     	PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTermApplyConfiguration `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
     }
     
    -// PodAntiAffinityApplyConfiguration constructs an declarative configuration of the PodAntiAffinity type for use with
    +// PodAntiAffinityApplyConfiguration constructs a declarative configuration of the PodAntiAffinity type for use with
     // apply.
     func PodAntiAffinity() *PodAntiAffinityApplyConfiguration {
     	return &PodAntiAffinityApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podcondition.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podcondition.go
    index 610209f3c48d..67cd1bd09b27 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podcondition.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// PodConditionApplyConfiguration represents an declarative configuration of the PodCondition type for use
    +// PodConditionApplyConfiguration represents a declarative configuration of the PodCondition type for use
     // with apply.
     type PodConditionApplyConfiguration struct {
    -	Type               *v1.PodConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus  `json:"status,omitempty"`
    -	LastProbeTime      *metav1.Time         `json:"lastProbeTime,omitempty"`
    -	LastTransitionTime *metav1.Time         `json:"lastTransitionTime,omitempty"`
    -	Reason             *string              `json:"reason,omitempty"`
    -	Message            *string              `json:"message,omitempty"`
    +	Type               *corev1.PodConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus  `json:"status,omitempty"`
    +	LastProbeTime      *metav1.Time             `json:"lastProbeTime,omitempty"`
    +	LastTransitionTime *metav1.Time             `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                  `json:"reason,omitempty"`
    +	Message            *string                  `json:"message,omitempty"`
     }
     
    -// PodConditionApplyConfiguration constructs an declarative configuration of the PodCondition type for use with
    +// PodConditionApplyConfiguration constructs a declarative configuration of the PodCondition type for use with
     // apply.
     func PodCondition() *PodConditionApplyConfiguration {
     	return &PodConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func PodCondition() *PodConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PodConditionApplyConfiguration) WithType(value v1.PodConditionType) *PodConditionApplyConfiguration {
    +func (b *PodConditionApplyConfiguration) WithType(value corev1.PodConditionType) *PodConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -51,7 +51,7 @@ func (b *PodConditionApplyConfiguration) WithType(value v1.PodConditionType) *Po
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *PodConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *PodConditionApplyConfiguration {
    +func (b *PodConditionApplyConfiguration) WithStatus(value corev1.ConditionStatus) *PodConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/poddnsconfig.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/poddnsconfig.go
    index 0fe6a0834938..2e0ce9a91e68 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/poddnsconfig.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/poddnsconfig.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// PodDNSConfigApplyConfiguration represents an declarative configuration of the PodDNSConfig type for use
    +// PodDNSConfigApplyConfiguration represents a declarative configuration of the PodDNSConfig type for use
     // with apply.
     type PodDNSConfigApplyConfiguration struct {
     	Nameservers []string                               `json:"nameservers,omitempty"`
    @@ -26,7 +26,7 @@ type PodDNSConfigApplyConfiguration struct {
     	Options     []PodDNSConfigOptionApplyConfiguration `json:"options,omitempty"`
     }
     
    -// PodDNSConfigApplyConfiguration constructs an declarative configuration of the PodDNSConfig type for use with
    +// PodDNSConfigApplyConfiguration constructs a declarative configuration of the PodDNSConfig type for use with
     // apply.
     func PodDNSConfig() *PodDNSConfigApplyConfiguration {
     	return &PodDNSConfigApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/poddnsconfigoption.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/poddnsconfigoption.go
    index 327bf803b3a3..458b333bf23c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/poddnsconfigoption.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/poddnsconfigoption.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// PodDNSConfigOptionApplyConfiguration represents an declarative configuration of the PodDNSConfigOption type for use
    +// PodDNSConfigOptionApplyConfiguration represents a declarative configuration of the PodDNSConfigOption type for use
     // with apply.
     type PodDNSConfigOptionApplyConfiguration struct {
     	Name  *string `json:"name,omitempty"`
     	Value *string `json:"value,omitempty"`
     }
     
    -// PodDNSConfigOptionApplyConfiguration constructs an declarative configuration of the PodDNSConfigOption type for use with
    +// PodDNSConfigOptionApplyConfiguration constructs a declarative configuration of the PodDNSConfigOption type for use with
     // apply.
     func PodDNSConfigOption() *PodDNSConfigOptionApplyConfiguration {
     	return &PodDNSConfigOptionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podip.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podip.go
    index 3c6e6b87ac26..73f089856f70 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podip.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podip.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// PodIPApplyConfiguration represents an declarative configuration of the PodIP type for use
    +// PodIPApplyConfiguration represents a declarative configuration of the PodIP type for use
     // with apply.
     type PodIPApplyConfiguration struct {
     	IP *string `json:"ip,omitempty"`
     }
     
    -// PodIPApplyConfiguration constructs an declarative configuration of the PodIP type for use with
    +// PodIPApplyConfiguration constructs a declarative configuration of the PodIP type for use with
     // apply.
     func PodIP() *PodIPApplyConfiguration {
     	return &PodIPApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podos.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podos.go
    index a5315d636b62..22a74560115e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podos.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podos.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// PodOSApplyConfiguration represents an declarative configuration of the PodOS type for use
    +// PodOSApplyConfiguration represents a declarative configuration of the PodOS type for use
     // with apply.
     type PodOSApplyConfiguration struct {
    -	Name *v1.OSName `json:"name,omitempty"`
    +	Name *corev1.OSName `json:"name,omitempty"`
     }
     
    -// PodOSApplyConfiguration constructs an declarative configuration of the PodOS type for use with
    +// PodOSApplyConfiguration constructs a declarative configuration of the PodOS type for use with
     // apply.
     func PodOS() *PodOSApplyConfiguration {
     	return &PodOSApplyConfiguration{}
    @@ -37,7 +37,7 @@ func PodOS() *PodOSApplyConfiguration {
     // WithName sets the Name field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
    -func (b *PodOSApplyConfiguration) WithName(value v1.OSName) *PodOSApplyConfiguration {
    +func (b *PodOSApplyConfiguration) WithName(value corev1.OSName) *PodOSApplyConfiguration {
     	b.Name = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podreadinessgate.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podreadinessgate.go
    index 9d3ad458ac0a..4298b1ca62a2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podreadinessgate.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podreadinessgate.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// PodReadinessGateApplyConfiguration represents an declarative configuration of the PodReadinessGate type for use
    +// PodReadinessGateApplyConfiguration represents a declarative configuration of the PodReadinessGate type for use
     // with apply.
     type PodReadinessGateApplyConfiguration struct {
    -	ConditionType *v1.PodConditionType `json:"conditionType,omitempty"`
    +	ConditionType *corev1.PodConditionType `json:"conditionType,omitempty"`
     }
     
    -// PodReadinessGateApplyConfiguration constructs an declarative configuration of the PodReadinessGate type for use with
    +// PodReadinessGateApplyConfiguration constructs a declarative configuration of the PodReadinessGate type for use with
     // apply.
     func PodReadinessGate() *PodReadinessGateApplyConfiguration {
     	return &PodReadinessGateApplyConfiguration{}
    @@ -37,7 +37,7 @@ func PodReadinessGate() *PodReadinessGateApplyConfiguration {
     // WithConditionType sets the ConditionType field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ConditionType field is set to the value of the last call.
    -func (b *PodReadinessGateApplyConfiguration) WithConditionType(value v1.PodConditionType) *PodReadinessGateApplyConfiguration {
    +func (b *PodReadinessGateApplyConfiguration) WithConditionType(value corev1.PodConditionType) *PodReadinessGateApplyConfiguration {
     	b.ConditionType = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podresourceclaim.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podresourceclaim.go
    index 69b250d474fa..b0bd67fa1137 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podresourceclaim.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podresourceclaim.go
    @@ -18,14 +18,15 @@ limitations under the License.
     
     package v1
     
    -// PodResourceClaimApplyConfiguration represents an declarative configuration of the PodResourceClaim type for use
    +// PodResourceClaimApplyConfiguration represents a declarative configuration of the PodResourceClaim type for use
     // with apply.
     type PodResourceClaimApplyConfiguration struct {
    -	Name   *string                        `json:"name,omitempty"`
    -	Source *ClaimSourceApplyConfiguration `json:"source,omitempty"`
    +	Name                      *string `json:"name,omitempty"`
    +	ResourceClaimName         *string `json:"resourceClaimName,omitempty"`
    +	ResourceClaimTemplateName *string `json:"resourceClaimTemplateName,omitempty"`
     }
     
    -// PodResourceClaimApplyConfiguration constructs an declarative configuration of the PodResourceClaim type for use with
    +// PodResourceClaimApplyConfiguration constructs a declarative configuration of the PodResourceClaim type for use with
     // apply.
     func PodResourceClaim() *PodResourceClaimApplyConfiguration {
     	return &PodResourceClaimApplyConfiguration{}
    @@ -39,10 +40,18 @@ func (b *PodResourceClaimApplyConfiguration) WithName(value string) *PodResource
     	return b
     }
     
    -// WithSource sets the Source field in the declarative configuration to the given value
    +// WithResourceClaimName sets the ResourceClaimName field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the Source field is set to the value of the last call.
    -func (b *PodResourceClaimApplyConfiguration) WithSource(value *ClaimSourceApplyConfiguration) *PodResourceClaimApplyConfiguration {
    -	b.Source = value
    +// If called multiple times, the ResourceClaimName field is set to the value of the last call.
    +func (b *PodResourceClaimApplyConfiguration) WithResourceClaimName(value string) *PodResourceClaimApplyConfiguration {
    +	b.ResourceClaimName = &value
    +	return b
    +}
    +
    +// WithResourceClaimTemplateName sets the ResourceClaimTemplateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceClaimTemplateName field is set to the value of the last call.
    +func (b *PodResourceClaimApplyConfiguration) WithResourceClaimTemplateName(value string) *PodResourceClaimApplyConfiguration {
    +	b.ResourceClaimTemplateName = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podresourceclaimstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podresourceclaimstatus.go
    index ae79ca01b76a..f60ad4b05295 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podresourceclaimstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podresourceclaimstatus.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// PodResourceClaimStatusApplyConfiguration represents an declarative configuration of the PodResourceClaimStatus type for use
    +// PodResourceClaimStatusApplyConfiguration represents a declarative configuration of the PodResourceClaimStatus type for use
     // with apply.
     type PodResourceClaimStatusApplyConfiguration struct {
     	Name              *string `json:"name,omitempty"`
     	ResourceClaimName *string `json:"resourceClaimName,omitempty"`
     }
     
    -// PodResourceClaimStatusApplyConfiguration constructs an declarative configuration of the PodResourceClaimStatus type for use with
    +// PodResourceClaimStatusApplyConfiguration constructs a declarative configuration of the PodResourceClaimStatus type for use with
     // apply.
     func PodResourceClaimStatus() *PodResourceClaimStatusApplyConfiguration {
     	return &PodResourceClaimStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podschedulinggate.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podschedulinggate.go
    index f7649c2e9211..3d910927765e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podschedulinggate.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podschedulinggate.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// PodSchedulingGateApplyConfiguration represents an declarative configuration of the PodSchedulingGate type for use
    +// PodSchedulingGateApplyConfiguration represents a declarative configuration of the PodSchedulingGate type for use
     // with apply.
     type PodSchedulingGateApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// PodSchedulingGateApplyConfiguration constructs an declarative configuration of the PodSchedulingGate type for use with
    +// PodSchedulingGateApplyConfiguration constructs a declarative configuration of the PodSchedulingGate type for use with
     // apply.
     func PodSchedulingGate() *PodSchedulingGateApplyConfiguration {
     	return &PodSchedulingGateApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podsecuritycontext.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podsecuritycontext.go
    index 6db09aa32f16..f0a3e662c834 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podsecuritycontext.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podsecuritycontext.go
    @@ -22,22 +22,25 @@ import (
     	corev1 "k8s.io/api/core/v1"
     )
     
    -// PodSecurityContextApplyConfiguration represents an declarative configuration of the PodSecurityContext type for use
    +// PodSecurityContextApplyConfiguration represents a declarative configuration of the PodSecurityContext type for use
     // with apply.
     type PodSecurityContextApplyConfiguration struct {
    -	SELinuxOptions      *SELinuxOptionsApplyConfiguration                `json:"seLinuxOptions,omitempty"`
    -	WindowsOptions      *WindowsSecurityContextOptionsApplyConfiguration `json:"windowsOptions,omitempty"`
    -	RunAsUser           *int64                                           `json:"runAsUser,omitempty"`
    -	RunAsGroup          *int64                                           `json:"runAsGroup,omitempty"`
    -	RunAsNonRoot        *bool                                            `json:"runAsNonRoot,omitempty"`
    -	SupplementalGroups  []int64                                          `json:"supplementalGroups,omitempty"`
    -	FSGroup             *int64                                           `json:"fsGroup,omitempty"`
    -	Sysctls             []SysctlApplyConfiguration                       `json:"sysctls,omitempty"`
    -	FSGroupChangePolicy *corev1.PodFSGroupChangePolicy                   `json:"fsGroupChangePolicy,omitempty"`
    -	SeccompProfile      *SeccompProfileApplyConfiguration                `json:"seccompProfile,omitempty"`
    +	SELinuxOptions           *SELinuxOptionsApplyConfiguration                `json:"seLinuxOptions,omitempty"`
    +	WindowsOptions           *WindowsSecurityContextOptionsApplyConfiguration `json:"windowsOptions,omitempty"`
    +	RunAsUser                *int64                                           `json:"runAsUser,omitempty"`
    +	RunAsGroup               *int64                                           `json:"runAsGroup,omitempty"`
    +	RunAsNonRoot             *bool                                            `json:"runAsNonRoot,omitempty"`
    +	SupplementalGroups       []int64                                          `json:"supplementalGroups,omitempty"`
    +	SupplementalGroupsPolicy *corev1.SupplementalGroupsPolicy                 `json:"supplementalGroupsPolicy,omitempty"`
    +	FSGroup                  *int64                                           `json:"fsGroup,omitempty"`
    +	Sysctls                  []SysctlApplyConfiguration                       `json:"sysctls,omitempty"`
    +	FSGroupChangePolicy      *corev1.PodFSGroupChangePolicy                   `json:"fsGroupChangePolicy,omitempty"`
    +	SeccompProfile           *SeccompProfileApplyConfiguration                `json:"seccompProfile,omitempty"`
    +	AppArmorProfile          *AppArmorProfileApplyConfiguration               `json:"appArmorProfile,omitempty"`
    +	SELinuxChangePolicy      *corev1.PodSELinuxChangePolicy                   `json:"seLinuxChangePolicy,omitempty"`
     }
     
    -// PodSecurityContextApplyConfiguration constructs an declarative configuration of the PodSecurityContext type for use with
    +// PodSecurityContextApplyConfiguration constructs a declarative configuration of the PodSecurityContext type for use with
     // apply.
     func PodSecurityContext() *PodSecurityContextApplyConfiguration {
     	return &PodSecurityContextApplyConfiguration{}
    @@ -93,6 +96,14 @@ func (b *PodSecurityContextApplyConfiguration) WithSupplementalGroups(values ...
     	return b
     }
     
    +// WithSupplementalGroupsPolicy sets the SupplementalGroupsPolicy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the SupplementalGroupsPolicy field is set to the value of the last call.
    +func (b *PodSecurityContextApplyConfiguration) WithSupplementalGroupsPolicy(value corev1.SupplementalGroupsPolicy) *PodSecurityContextApplyConfiguration {
    +	b.SupplementalGroupsPolicy = &value
    +	return b
    +}
    +
     // WithFSGroup sets the FSGroup field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the FSGroup field is set to the value of the last call.
    @@ -129,3 +140,19 @@ func (b *PodSecurityContextApplyConfiguration) WithSeccompProfile(value *Seccomp
     	b.SeccompProfile = value
     	return b
     }
    +
    +// WithAppArmorProfile sets the AppArmorProfile field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the AppArmorProfile field is set to the value of the last call.
    +func (b *PodSecurityContextApplyConfiguration) WithAppArmorProfile(value *AppArmorProfileApplyConfiguration) *PodSecurityContextApplyConfiguration {
    +	b.AppArmorProfile = value
    +	return b
    +}
    +
    +// WithSELinuxChangePolicy sets the SELinuxChangePolicy field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the SELinuxChangePolicy field is set to the value of the last call.
    +func (b *PodSecurityContextApplyConfiguration) WithSELinuxChangePolicy(value corev1.PodSELinuxChangePolicy) *PodSecurityContextApplyConfiguration {
    +	b.SELinuxChangePolicy = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podspec.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podspec.go
    index a9acd36fc7c7..96f6eb94b1c0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podspec.go
    @@ -22,7 +22,7 @@ import (
     	corev1 "k8s.io/api/core/v1"
     )
     
    -// PodSpecApplyConfiguration represents an declarative configuration of the PodSpec type for use
    +// PodSpecApplyConfiguration represents a declarative configuration of the PodSpec type for use
     // with apply.
     type PodSpecApplyConfiguration struct {
     	Volumes                       []VolumeApplyConfiguration                   `json:"volumes,omitempty"`
    @@ -64,9 +64,10 @@ type PodSpecApplyConfiguration struct {
     	HostUsers                     *bool                                        `json:"hostUsers,omitempty"`
     	SchedulingGates               []PodSchedulingGateApplyConfiguration        `json:"schedulingGates,omitempty"`
     	ResourceClaims                []PodResourceClaimApplyConfiguration         `json:"resourceClaims,omitempty"`
    +	Resources                     *ResourceRequirementsApplyConfiguration      `json:"resources,omitempty"`
     }
     
    -// PodSpecApplyConfiguration constructs an declarative configuration of the PodSpec type for use with
    +// PodSpecApplyConfiguration constructs a declarative configuration of the PodSpec type for use with
     // apply.
     func PodSpec() *PodSpecApplyConfiguration {
     	return &PodSpecApplyConfiguration{}
    @@ -444,3 +445,11 @@ func (b *PodSpecApplyConfiguration) WithResourceClaims(values ...*PodResourceCla
     	}
     	return b
     }
    +
    +// WithResources sets the Resources field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Resources field is set to the value of the last call.
    +func (b *PodSpecApplyConfiguration) WithResources(value *ResourceRequirementsApplyConfiguration) *PodSpecApplyConfiguration {
    +	b.Resources = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podstatus.go
    index 1a58ab6be2d0..b79e1210a995 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podstatus.go
    @@ -19,14 +19,14 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// PodStatusApplyConfiguration represents an declarative configuration of the PodStatus type for use
    +// PodStatusApplyConfiguration represents a declarative configuration of the PodStatus type for use
     // with apply.
     type PodStatusApplyConfiguration struct {
    -	Phase                      *v1.PodPhase                               `json:"phase,omitempty"`
    +	Phase                      *corev1.PodPhase                           `json:"phase,omitempty"`
     	Conditions                 []PodConditionApplyConfiguration           `json:"conditions,omitempty"`
     	Message                    *string                                    `json:"message,omitempty"`
     	Reason                     *string                                    `json:"reason,omitempty"`
    @@ -38,13 +38,13 @@ type PodStatusApplyConfiguration struct {
     	StartTime                  *metav1.Time                               `json:"startTime,omitempty"`
     	InitContainerStatuses      []ContainerStatusApplyConfiguration        `json:"initContainerStatuses,omitempty"`
     	ContainerStatuses          []ContainerStatusApplyConfiguration        `json:"containerStatuses,omitempty"`
    -	QOSClass                   *v1.PodQOSClass                            `json:"qosClass,omitempty"`
    +	QOSClass                   *corev1.PodQOSClass                        `json:"qosClass,omitempty"`
     	EphemeralContainerStatuses []ContainerStatusApplyConfiguration        `json:"ephemeralContainerStatuses,omitempty"`
    -	Resize                     *v1.PodResizeStatus                        `json:"resize,omitempty"`
    +	Resize                     *corev1.PodResizeStatus                    `json:"resize,omitempty"`
     	ResourceClaimStatuses      []PodResourceClaimStatusApplyConfiguration `json:"resourceClaimStatuses,omitempty"`
     }
     
    -// PodStatusApplyConfiguration constructs an declarative configuration of the PodStatus type for use with
    +// PodStatusApplyConfiguration constructs a declarative configuration of the PodStatus type for use with
     // apply.
     func PodStatus() *PodStatusApplyConfiguration {
     	return &PodStatusApplyConfiguration{}
    @@ -53,7 +53,7 @@ func PodStatus() *PodStatusApplyConfiguration {
     // WithPhase sets the Phase field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Phase field is set to the value of the last call.
    -func (b *PodStatusApplyConfiguration) WithPhase(value v1.PodPhase) *PodStatusApplyConfiguration {
    +func (b *PodStatusApplyConfiguration) WithPhase(value corev1.PodPhase) *PodStatusApplyConfiguration {
     	b.Phase = &value
     	return b
     }
    @@ -174,7 +174,7 @@ func (b *PodStatusApplyConfiguration) WithContainerStatuses(values ...*Container
     // WithQOSClass sets the QOSClass field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the QOSClass field is set to the value of the last call.
    -func (b *PodStatusApplyConfiguration) WithQOSClass(value v1.PodQOSClass) *PodStatusApplyConfiguration {
    +func (b *PodStatusApplyConfiguration) WithQOSClass(value corev1.PodQOSClass) *PodStatusApplyConfiguration {
     	b.QOSClass = &value
     	return b
     }
    @@ -195,7 +195,7 @@ func (b *PodStatusApplyConfiguration) WithEphemeralContainerStatuses(values ...*
     // WithResize sets the Resize field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Resize field is set to the value of the last call.
    -func (b *PodStatusApplyConfiguration) WithResize(value v1.PodResizeStatus) *PodStatusApplyConfiguration {
    +func (b *PodStatusApplyConfiguration) WithResize(value corev1.PodResizeStatus) *PodStatusApplyConfiguration {
     	b.Resize = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podtemplate.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podtemplate.go
    index 7fe51d9e1b35..7886ea2d9b97 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podtemplate.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podtemplate.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodTemplateApplyConfiguration represents an declarative configuration of the PodTemplate type for use
    +// PodTemplateApplyConfiguration represents a declarative configuration of the PodTemplate type for use
     // with apply.
     type PodTemplateApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Template                         *PodTemplateSpecApplyConfiguration `json:"template,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Template                             *PodTemplateSpecApplyConfiguration `json:"template,omitempty"`
     }
     
    -// PodTemplate constructs an declarative configuration of the PodTemplate type for use with
    +// PodTemplate constructs a declarative configuration of the PodTemplate type for use with
     // apply.
     func PodTemplate(name, namespace string) *PodTemplateApplyConfiguration {
     	b := &PodTemplateApplyConfiguration{}
    @@ -57,18 +57,18 @@ func PodTemplate(name, namespace string) *PodTemplateApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractPodTemplate(podTemplate *apicorev1.PodTemplate, fieldManager string) (*PodTemplateApplyConfiguration, error) {
    +func ExtractPodTemplate(podTemplate *corev1.PodTemplate, fieldManager string) (*PodTemplateApplyConfiguration, error) {
     	return extractPodTemplate(podTemplate, fieldManager, "")
     }
     
     // ExtractPodTemplateStatus is the same as ExtractPodTemplate except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractPodTemplateStatus(podTemplate *apicorev1.PodTemplate, fieldManager string) (*PodTemplateApplyConfiguration, error) {
    +func ExtractPodTemplateStatus(podTemplate *corev1.PodTemplate, fieldManager string) (*PodTemplateApplyConfiguration, error) {
     	return extractPodTemplate(podTemplate, fieldManager, "status")
     }
     
    -func extractPodTemplate(podTemplate *apicorev1.PodTemplate, fieldManager string, subresource string) (*PodTemplateApplyConfiguration, error) {
    +func extractPodTemplate(podTemplate *corev1.PodTemplate, fieldManager string, subresource string) (*PodTemplateApplyConfiguration, error) {
     	b := &PodTemplateApplyConfiguration{}
     	err := managedfields.ExtractInto(podTemplate, internal.Parser().Type("io.k8s.api.core.v1.PodTemplate"), fieldManager, b, subresource)
     	if err != nil {
    @@ -86,7 +86,7 @@ func extractPodTemplate(podTemplate *apicorev1.PodTemplate, fieldManager string,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PodTemplateApplyConfiguration) WithKind(value string) *PodTemplateApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *PodTemplateApplyConfiguration) WithKind(value string) *PodTemplateApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PodTemplateApplyConfiguration) WithAPIVersion(value string) *PodTemplateApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *PodTemplateApplyConfiguration) WithAPIVersion(value string) *PodTemplat
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PodTemplateApplyConfiguration) WithName(value string) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *PodTemplateApplyConfiguration) WithName(value string) *PodTemplateApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PodTemplateApplyConfiguration) WithGenerateName(value string) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *PodTemplateApplyConfiguration) WithGenerateName(value string) *PodTempl
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PodTemplateApplyConfiguration) WithNamespace(value string) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *PodTemplateApplyConfiguration) WithNamespace(value string) *PodTemplate
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PodTemplateApplyConfiguration) WithUID(value types.UID) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *PodTemplateApplyConfiguration) WithUID(value types.UID) *PodTemplateApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PodTemplateApplyConfiguration) WithResourceVersion(value string) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,25 +148,25 @@ func (b *PodTemplateApplyConfiguration) WithResourceVersion(value string) *PodTe
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PodTemplateApplyConfiguration) WithGeneration(value int64) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *PodTemplateApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PodTemplateApplyConfiguration {
    +func (b *PodTemplateApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *PodTemplateApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PodTemplateApplyConfiguration {
    +func (b *PodTemplateApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *PodTemplateApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PodTemplateApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *PodTemplateApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PodTemplateApplyConfiguration) WithLabels(entries map[string]string) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *PodTemplateApplyConfiguration) WithLabels(entries map[string]string) *P
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PodTemplateApplyConfiguration) WithAnnotations(entries map[string]string) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -212,13 +212,13 @@ func (b *PodTemplateApplyConfiguration) WithAnnotations(entries map[string]strin
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *PodTemplateApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *PodTemplateApplyConfiguration {
    +func (b *PodTemplateApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,14 +229,14 @@ func (b *PodTemplateApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *PodTemplateApplyConfiguration) WithFinalizers(values ...string) *PodTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *PodTemplateApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -247,3 +247,9 @@ func (b *PodTemplateApplyConfiguration) WithTemplate(value *PodTemplateSpecApply
     	b.Template = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PodTemplateApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podtemplatespec.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podtemplatespec.go
    index 82878a9aceac..2e0904a24243 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/podtemplatespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/podtemplatespec.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodTemplateSpecApplyConfiguration represents an declarative configuration of the PodTemplateSpec type for use
    +// PodTemplateSpecApplyConfiguration represents a declarative configuration of the PodTemplateSpec type for use
     // with apply.
     type PodTemplateSpecApplyConfiguration struct {
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *PodSpecApplyConfiguration `json:"spec,omitempty"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *PodSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// PodTemplateSpecApplyConfiguration constructs an declarative configuration of the PodTemplateSpec type for use with
    +// PodTemplateSpecApplyConfiguration constructs a declarative configuration of the PodTemplateSpec type for use with
     // apply.
     func PodTemplateSpec() *PodTemplateSpecApplyConfiguration {
     	return &PodTemplateSpecApplyConfiguration{}
    @@ -42,7 +42,7 @@ func PodTemplateSpec() *PodTemplateSpecApplyConfiguration {
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PodTemplateSpecApplyConfiguration) WithName(value string) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -51,7 +51,7 @@ func (b *PodTemplateSpecApplyConfiguration) WithName(value string) *PodTemplateS
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PodTemplateSpecApplyConfiguration) WithGenerateName(value string) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -60,7 +60,7 @@ func (b *PodTemplateSpecApplyConfiguration) WithGenerateName(value string) *PodT
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PodTemplateSpecApplyConfiguration) WithNamespace(value string) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -69,7 +69,7 @@ func (b *PodTemplateSpecApplyConfiguration) WithNamespace(value string) *PodTemp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PodTemplateSpecApplyConfiguration) WithUID(value types.UID) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -78,7 +78,7 @@ func (b *PodTemplateSpecApplyConfiguration) WithUID(value types.UID) *PodTemplat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PodTemplateSpecApplyConfiguration) WithResourceVersion(value string) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -87,25 +87,25 @@ func (b *PodTemplateSpecApplyConfiguration) WithResourceVersion(value string) *P
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PodTemplateSpecApplyConfiguration) WithGeneration(value int64) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *PodTemplateSpecApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PodTemplateSpecApplyConfiguration {
    +func (b *PodTemplateSpecApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *PodTemplateSpecApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PodTemplateSpecApplyConfiguration {
    +func (b *PodTemplateSpecApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *PodTemplateSpecApplyConfiguration) WithDeletionTimestamp(value metav1.T
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PodTemplateSpecApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -124,11 +124,11 @@ func (b *PodTemplateSpecApplyConfiguration) WithDeletionGracePeriodSeconds(value
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PodTemplateSpecApplyConfiguration) WithLabels(entries map[string]string) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -139,11 +139,11 @@ func (b *PodTemplateSpecApplyConfiguration) WithLabels(entries map[string]string
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PodTemplateSpecApplyConfiguration) WithAnnotations(entries map[string]string) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -151,13 +151,13 @@ func (b *PodTemplateSpecApplyConfiguration) WithAnnotations(entries map[string]s
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *PodTemplateSpecApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *PodTemplateSpecApplyConfiguration {
    +func (b *PodTemplateSpecApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -168,14 +168,14 @@ func (b *PodTemplateSpecApplyConfiguration) WithOwnerReferences(values ...*v1.Ow
     func (b *PodTemplateSpecApplyConfiguration) WithFinalizers(values ...string) *PodTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *PodTemplateSpecApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -186,3 +186,9 @@ func (b *PodTemplateSpecApplyConfiguration) WithSpec(value *PodSpecApplyConfigur
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PodTemplateSpecApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/portstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/portstatus.go
    index 8c70c8f6cfeb..eff8fc2acb08 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/portstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/portstatus.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// PortStatusApplyConfiguration represents an declarative configuration of the PortStatus type for use
    +// PortStatusApplyConfiguration represents a declarative configuration of the PortStatus type for use
     // with apply.
     type PortStatusApplyConfiguration struct {
    -	Port     *int32       `json:"port,omitempty"`
    -	Protocol *v1.Protocol `json:"protocol,omitempty"`
    -	Error    *string      `json:"error,omitempty"`
    +	Port     *int32           `json:"port,omitempty"`
    +	Protocol *corev1.Protocol `json:"protocol,omitempty"`
    +	Error    *string          `json:"error,omitempty"`
     }
     
    -// PortStatusApplyConfiguration constructs an declarative configuration of the PortStatus type for use with
    +// PortStatusApplyConfiguration constructs a declarative configuration of the PortStatus type for use with
     // apply.
     func PortStatus() *PortStatusApplyConfiguration {
     	return &PortStatusApplyConfiguration{}
    @@ -47,7 +47,7 @@ func (b *PortStatusApplyConfiguration) WithPort(value int32) *PortStatusApplyCon
     // WithProtocol sets the Protocol field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Protocol field is set to the value of the last call.
    -func (b *PortStatusApplyConfiguration) WithProtocol(value v1.Protocol) *PortStatusApplyConfiguration {
    +func (b *PortStatusApplyConfiguration) WithProtocol(value corev1.Protocol) *PortStatusApplyConfiguration {
     	b.Protocol = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/portworxvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/portworxvolumesource.go
    index 19cbb82edb84..29715e021922 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/portworxvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/portworxvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// PortworxVolumeSourceApplyConfiguration represents an declarative configuration of the PortworxVolumeSource type for use
    +// PortworxVolumeSourceApplyConfiguration represents a declarative configuration of the PortworxVolumeSource type for use
     // with apply.
     type PortworxVolumeSourceApplyConfiguration struct {
     	VolumeID *string `json:"volumeID,omitempty"`
    @@ -26,7 +26,7 @@ type PortworxVolumeSourceApplyConfiguration struct {
     	ReadOnly *bool   `json:"readOnly,omitempty"`
     }
     
    -// PortworxVolumeSourceApplyConfiguration constructs an declarative configuration of the PortworxVolumeSource type for use with
    +// PortworxVolumeSourceApplyConfiguration constructs a declarative configuration of the PortworxVolumeSource type for use with
     // apply.
     func PortworxVolumeSource() *PortworxVolumeSourceApplyConfiguration {
     	return &PortworxVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/preferredschedulingterm.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/preferredschedulingterm.go
    index a373e4afe080..b88a3646fc5f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/preferredschedulingterm.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/preferredschedulingterm.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// PreferredSchedulingTermApplyConfiguration represents an declarative configuration of the PreferredSchedulingTerm type for use
    +// PreferredSchedulingTermApplyConfiguration represents a declarative configuration of the PreferredSchedulingTerm type for use
     // with apply.
     type PreferredSchedulingTermApplyConfiguration struct {
     	Weight     *int32                              `json:"weight,omitempty"`
     	Preference *NodeSelectorTermApplyConfiguration `json:"preference,omitempty"`
     }
     
    -// PreferredSchedulingTermApplyConfiguration constructs an declarative configuration of the PreferredSchedulingTerm type for use with
    +// PreferredSchedulingTermApplyConfiguration constructs a declarative configuration of the PreferredSchedulingTerm type for use with
     // apply.
     func PreferredSchedulingTerm() *PreferredSchedulingTermApplyConfiguration {
     	return &PreferredSchedulingTermApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/probe.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/probe.go
    index 10730557a0ee..d6c654689b92 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/probe.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/probe.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ProbeApplyConfiguration represents an declarative configuration of the Probe type for use
    +// ProbeApplyConfiguration represents a declarative configuration of the Probe type for use
     // with apply.
     type ProbeApplyConfiguration struct {
     	ProbeHandlerApplyConfiguration `json:",inline"`
    @@ -30,7 +30,7 @@ type ProbeApplyConfiguration struct {
     	TerminationGracePeriodSeconds  *int64 `json:"terminationGracePeriodSeconds,omitempty"`
     }
     
    -// ProbeApplyConfiguration constructs an declarative configuration of the Probe type for use with
    +// ProbeApplyConfiguration constructs a declarative configuration of the Probe type for use with
     // apply.
     func Probe() *ProbeApplyConfiguration {
     	return &ProbeApplyConfiguration{}
    @@ -40,7 +40,7 @@ func Probe() *ProbeApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Exec field is set to the value of the last call.
     func (b *ProbeApplyConfiguration) WithExec(value *ExecActionApplyConfiguration) *ProbeApplyConfiguration {
    -	b.Exec = value
    +	b.ProbeHandlerApplyConfiguration.Exec = value
     	return b
     }
     
    @@ -48,7 +48,7 @@ func (b *ProbeApplyConfiguration) WithExec(value *ExecActionApplyConfiguration)
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the HTTPGet field is set to the value of the last call.
     func (b *ProbeApplyConfiguration) WithHTTPGet(value *HTTPGetActionApplyConfiguration) *ProbeApplyConfiguration {
    -	b.HTTPGet = value
    +	b.ProbeHandlerApplyConfiguration.HTTPGet = value
     	return b
     }
     
    @@ -56,7 +56,7 @@ func (b *ProbeApplyConfiguration) WithHTTPGet(value *HTTPGetActionApplyConfigura
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the TCPSocket field is set to the value of the last call.
     func (b *ProbeApplyConfiguration) WithTCPSocket(value *TCPSocketActionApplyConfiguration) *ProbeApplyConfiguration {
    -	b.TCPSocket = value
    +	b.ProbeHandlerApplyConfiguration.TCPSocket = value
     	return b
     }
     
    @@ -64,7 +64,7 @@ func (b *ProbeApplyConfiguration) WithTCPSocket(value *TCPSocketActionApplyConfi
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the GRPC field is set to the value of the last call.
     func (b *ProbeApplyConfiguration) WithGRPC(value *GRPCActionApplyConfiguration) *ProbeApplyConfiguration {
    -	b.GRPC = value
    +	b.ProbeHandlerApplyConfiguration.GRPC = value
     	return b
     }
     
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/probehandler.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/probehandler.go
    index 54f3344ac70d..1f88745eabfd 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/probehandler.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/probehandler.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ProbeHandlerApplyConfiguration represents an declarative configuration of the ProbeHandler type for use
    +// ProbeHandlerApplyConfiguration represents a declarative configuration of the ProbeHandler type for use
     // with apply.
     type ProbeHandlerApplyConfiguration struct {
     	Exec      *ExecActionApplyConfiguration      `json:"exec,omitempty"`
    @@ -27,7 +27,7 @@ type ProbeHandlerApplyConfiguration struct {
     	GRPC      *GRPCActionApplyConfiguration      `json:"grpc,omitempty"`
     }
     
    -// ProbeHandlerApplyConfiguration constructs an declarative configuration of the ProbeHandler type for use with
    +// ProbeHandlerApplyConfiguration constructs a declarative configuration of the ProbeHandler type for use with
     // apply.
     func ProbeHandler() *ProbeHandlerApplyConfiguration {
     	return &ProbeHandlerApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/projectedvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/projectedvolumesource.go
    index 0a9d1d88e601..c922ec8cc282 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/projectedvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/projectedvolumesource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ProjectedVolumeSourceApplyConfiguration represents an declarative configuration of the ProjectedVolumeSource type for use
    +// ProjectedVolumeSourceApplyConfiguration represents a declarative configuration of the ProjectedVolumeSource type for use
     // with apply.
     type ProjectedVolumeSourceApplyConfiguration struct {
     	Sources     []VolumeProjectionApplyConfiguration `json:"sources,omitempty"`
     	DefaultMode *int32                               `json:"defaultMode,omitempty"`
     }
     
    -// ProjectedVolumeSourceApplyConfiguration constructs an declarative configuration of the ProjectedVolumeSource type for use with
    +// ProjectedVolumeSourceApplyConfiguration constructs a declarative configuration of the ProjectedVolumeSource type for use with
     // apply.
     func ProjectedVolumeSource() *ProjectedVolumeSourceApplyConfiguration {
     	return &ProjectedVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/quobytevolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/quobytevolumesource.go
    index 646052ea4a77..9a042a0a12dd 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/quobytevolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/quobytevolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// QuobyteVolumeSourceApplyConfiguration represents an declarative configuration of the QuobyteVolumeSource type for use
    +// QuobyteVolumeSourceApplyConfiguration represents a declarative configuration of the QuobyteVolumeSource type for use
     // with apply.
     type QuobyteVolumeSourceApplyConfiguration struct {
     	Registry *string `json:"registry,omitempty"`
    @@ -29,7 +29,7 @@ type QuobyteVolumeSourceApplyConfiguration struct {
     	Tenant   *string `json:"tenant,omitempty"`
     }
     
    -// QuobyteVolumeSourceApplyConfiguration constructs an declarative configuration of the QuobyteVolumeSource type for use with
    +// QuobyteVolumeSourceApplyConfiguration constructs a declarative configuration of the QuobyteVolumeSource type for use with
     // apply.
     func QuobyteVolumeSource() *QuobyteVolumeSourceApplyConfiguration {
     	return &QuobyteVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/rbdpersistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/rbdpersistentvolumesource.go
    index ffcb836eb0cc..64f25724a36e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/rbdpersistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/rbdpersistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// RBDPersistentVolumeSourceApplyConfiguration represents an declarative configuration of the RBDPersistentVolumeSource type for use
    +// RBDPersistentVolumeSourceApplyConfiguration represents a declarative configuration of the RBDPersistentVolumeSource type for use
     // with apply.
     type RBDPersistentVolumeSourceApplyConfiguration struct {
     	CephMonitors []string                           `json:"monitors,omitempty"`
    @@ -31,7 +31,7 @@ type RBDPersistentVolumeSourceApplyConfiguration struct {
     	ReadOnly     *bool                              `json:"readOnly,omitempty"`
     }
     
    -// RBDPersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the RBDPersistentVolumeSource type for use with
    +// RBDPersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the RBDPersistentVolumeSource type for use with
     // apply.
     func RBDPersistentVolumeSource() *RBDPersistentVolumeSourceApplyConfiguration {
     	return &RBDPersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/rbdvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/rbdvolumesource.go
    index 8e7c81732cd4..8dae198c09c4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/rbdvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/rbdvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// RBDVolumeSourceApplyConfiguration represents an declarative configuration of the RBDVolumeSource type for use
    +// RBDVolumeSourceApplyConfiguration represents a declarative configuration of the RBDVolumeSource type for use
     // with apply.
     type RBDVolumeSourceApplyConfiguration struct {
     	CephMonitors []string                                `json:"monitors,omitempty"`
    @@ -31,7 +31,7 @@ type RBDVolumeSourceApplyConfiguration struct {
     	ReadOnly     *bool                                   `json:"readOnly,omitempty"`
     }
     
    -// RBDVolumeSourceApplyConfiguration constructs an declarative configuration of the RBDVolumeSource type for use with
    +// RBDVolumeSourceApplyConfiguration constructs a declarative configuration of the RBDVolumeSource type for use with
     // apply.
     func RBDVolumeSource() *RBDVolumeSourceApplyConfiguration {
     	return &RBDVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontroller.go
    index 7cd71460a9f9..4ef551914c75 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontroller.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontroller.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ReplicationControllerApplyConfiguration represents an declarative configuration of the ReplicationController type for use
    +// ReplicationControllerApplyConfiguration represents a declarative configuration of the ReplicationController type for use
     // with apply.
     type ReplicationControllerApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *ReplicationControllerSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *ReplicationControllerStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *ReplicationControllerSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *ReplicationControllerStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// ReplicationController constructs an declarative configuration of the ReplicationController type for use with
    +// ReplicationController constructs a declarative configuration of the ReplicationController type for use with
     // apply.
     func ReplicationController(name, namespace string) *ReplicationControllerApplyConfiguration {
     	b := &ReplicationControllerApplyConfiguration{}
    @@ -58,18 +58,18 @@ func ReplicationController(name, namespace string) *ReplicationControllerApplyCo
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractReplicationController(replicationController *apicorev1.ReplicationController, fieldManager string) (*ReplicationControllerApplyConfiguration, error) {
    +func ExtractReplicationController(replicationController *corev1.ReplicationController, fieldManager string) (*ReplicationControllerApplyConfiguration, error) {
     	return extractReplicationController(replicationController, fieldManager, "")
     }
     
     // ExtractReplicationControllerStatus is the same as ExtractReplicationController except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractReplicationControllerStatus(replicationController *apicorev1.ReplicationController, fieldManager string) (*ReplicationControllerApplyConfiguration, error) {
    +func ExtractReplicationControllerStatus(replicationController *corev1.ReplicationController, fieldManager string) (*ReplicationControllerApplyConfiguration, error) {
     	return extractReplicationController(replicationController, fieldManager, "status")
     }
     
    -func extractReplicationController(replicationController *apicorev1.ReplicationController, fieldManager string, subresource string) (*ReplicationControllerApplyConfiguration, error) {
    +func extractReplicationController(replicationController *corev1.ReplicationController, fieldManager string, subresource string) (*ReplicationControllerApplyConfiguration, error) {
     	b := &ReplicationControllerApplyConfiguration{}
     	err := managedfields.ExtractInto(replicationController, internal.Parser().Type("io.k8s.api.core.v1.ReplicationController"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractReplicationController(replicationController *apicorev1.ReplicationCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ReplicationControllerApplyConfiguration) WithKind(value string) *ReplicationControllerApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *ReplicationControllerApplyConfiguration) WithKind(value string) *Replic
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ReplicationControllerApplyConfiguration) WithAPIVersion(value string) *ReplicationControllerApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *ReplicationControllerApplyConfiguration) WithAPIVersion(value string) *
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ReplicationControllerApplyConfiguration) WithName(value string) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *ReplicationControllerApplyConfiguration) WithName(value string) *Replic
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ReplicationControllerApplyConfiguration) WithGenerateName(value string) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *ReplicationControllerApplyConfiguration) WithGenerateName(value string)
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ReplicationControllerApplyConfiguration) WithNamespace(value string) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *ReplicationControllerApplyConfiguration) WithNamespace(value string) *R
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ReplicationControllerApplyConfiguration) WithUID(value types.UID) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *ReplicationControllerApplyConfiguration) WithUID(value types.UID) *Repl
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ReplicationControllerApplyConfiguration) WithResourceVersion(value string) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *ReplicationControllerApplyConfiguration) WithResourceVersion(value stri
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ReplicationControllerApplyConfiguration) WithGeneration(value int64) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ReplicationControllerApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ReplicationControllerApplyConfiguration {
    +func (b *ReplicationControllerApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ReplicationControllerApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ReplicationControllerApplyConfiguration {
    +func (b *ReplicationControllerApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *ReplicationControllerApplyConfiguration) WithDeletionTimestamp(value me
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ReplicationControllerApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *ReplicationControllerApplyConfiguration) WithDeletionGracePeriodSeconds
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ReplicationControllerApplyConfiguration) WithLabels(entries map[string]string) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *ReplicationControllerApplyConfiguration) WithLabels(entries map[string]
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ReplicationControllerApplyConfiguration) WithAnnotations(entries map[string]string) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *ReplicationControllerApplyConfiguration) WithAnnotations(entries map[st
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ReplicationControllerApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ReplicationControllerApplyConfiguration {
    +func (b *ReplicationControllerApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *ReplicationControllerApplyConfiguration) WithOwnerReferences(values ...
     func (b *ReplicationControllerApplyConfiguration) WithFinalizers(values ...string) *ReplicationControllerApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ReplicationControllerApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *ReplicationControllerApplyConfiguration) WithStatus(value *ReplicationC
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ReplicationControllerApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollercondition.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollercondition.go
    index c3d56cc697f8..dfcecc053213 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollercondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollercondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// ReplicationControllerConditionApplyConfiguration represents an declarative configuration of the ReplicationControllerCondition type for use
    +// ReplicationControllerConditionApplyConfiguration represents a declarative configuration of the ReplicationControllerCondition type for use
     // with apply.
     type ReplicationControllerConditionApplyConfiguration struct {
    -	Type               *v1.ReplicationControllerConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus                    `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                           `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                `json:"reason,omitempty"`
    -	Message            *string                                `json:"message,omitempty"`
    +	Type               *corev1.ReplicationControllerConditionType `json:"type,omitempty"`
    +	Status             *corev1.ConditionStatus                    `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                               `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                    `json:"reason,omitempty"`
    +	Message            *string                                    `json:"message,omitempty"`
     }
     
    -// ReplicationControllerConditionApplyConfiguration constructs an declarative configuration of the ReplicationControllerCondition type for use with
    +// ReplicationControllerConditionApplyConfiguration constructs a declarative configuration of the ReplicationControllerCondition type for use with
     // apply.
     func ReplicationControllerCondition() *ReplicationControllerConditionApplyConfiguration {
     	return &ReplicationControllerConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func ReplicationControllerCondition() *ReplicationControllerConditionApplyConfig
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *ReplicationControllerConditionApplyConfiguration) WithType(value v1.ReplicationControllerConditionType) *ReplicationControllerConditionApplyConfiguration {
    +func (b *ReplicationControllerConditionApplyConfiguration) WithType(value corev1.ReplicationControllerConditionType) *ReplicationControllerConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *ReplicationControllerConditionApplyConfiguration) WithType(value v1.Rep
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *ReplicationControllerConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *ReplicationControllerConditionApplyConfiguration {
    +func (b *ReplicationControllerConditionApplyConfiguration) WithStatus(value corev1.ConditionStatus) *ReplicationControllerConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollerspec.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollerspec.go
    index dd4e081d9f33..07bac9f4c92d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollerspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollerspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ReplicationControllerSpecApplyConfiguration represents an declarative configuration of the ReplicationControllerSpec type for use
    +// ReplicationControllerSpecApplyConfiguration represents a declarative configuration of the ReplicationControllerSpec type for use
     // with apply.
     type ReplicationControllerSpecApplyConfiguration struct {
     	Replicas        *int32                             `json:"replicas,omitempty"`
    @@ -27,7 +27,7 @@ type ReplicationControllerSpecApplyConfiguration struct {
     	Template        *PodTemplateSpecApplyConfiguration `json:"template,omitempty"`
     }
     
    -// ReplicationControllerSpecApplyConfiguration constructs an declarative configuration of the ReplicationControllerSpec type for use with
    +// ReplicationControllerSpecApplyConfiguration constructs a declarative configuration of the ReplicationControllerSpec type for use with
     // apply.
     func ReplicationControllerSpec() *ReplicationControllerSpecApplyConfiguration {
     	return &ReplicationControllerSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollerstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollerstatus.go
    index 1b994cfb8ce2..c8046aa5a47d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollerstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollerstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ReplicationControllerStatusApplyConfiguration represents an declarative configuration of the ReplicationControllerStatus type for use
    +// ReplicationControllerStatusApplyConfiguration represents a declarative configuration of the ReplicationControllerStatus type for use
     // with apply.
     type ReplicationControllerStatusApplyConfiguration struct {
     	Replicas             *int32                                             `json:"replicas,omitempty"`
    @@ -29,7 +29,7 @@ type ReplicationControllerStatusApplyConfiguration struct {
     	Conditions           []ReplicationControllerConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// ReplicationControllerStatusApplyConfiguration constructs an declarative configuration of the ReplicationControllerStatus type for use with
    +// ReplicationControllerStatusApplyConfiguration constructs a declarative configuration of the ReplicationControllerStatus type for use with
     // apply.
     func ReplicationControllerStatus() *ReplicationControllerStatusApplyConfiguration {
     	return &ReplicationControllerStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourceclaim.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourceclaim.go
    index 064dd4e2e41c..b00c69248578 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourceclaim.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourceclaim.go
    @@ -18,13 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ResourceClaimApplyConfiguration represents an declarative configuration of the ResourceClaim type for use
    +// ResourceClaimApplyConfiguration represents a declarative configuration of the ResourceClaim type for use
     // with apply.
     type ResourceClaimApplyConfiguration struct {
    -	Name *string `json:"name,omitempty"`
    +	Name    *string `json:"name,omitempty"`
    +	Request *string `json:"request,omitempty"`
     }
     
    -// ResourceClaimApplyConfiguration constructs an declarative configuration of the ResourceClaim type for use with
    +// ResourceClaimApplyConfiguration constructs a declarative configuration of the ResourceClaim type for use with
     // apply.
     func ResourceClaim() *ResourceClaimApplyConfiguration {
     	return &ResourceClaimApplyConfiguration{}
    @@ -37,3 +38,11 @@ func (b *ResourceClaimApplyConfiguration) WithName(value string) *ResourceClaimA
     	b.Name = &value
     	return b
     }
    +
    +// WithRequest sets the Request field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Request field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithRequest(value string) *ResourceClaimApplyConfiguration {
    +	b.Request = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcefieldselector.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcefieldselector.go
    index 2741227dd7a8..1b4918a633f8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcefieldselector.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcefieldselector.go
    @@ -22,7 +22,7 @@ import (
     	resource "k8s.io/apimachinery/pkg/api/resource"
     )
     
    -// ResourceFieldSelectorApplyConfiguration represents an declarative configuration of the ResourceFieldSelector type for use
    +// ResourceFieldSelectorApplyConfiguration represents a declarative configuration of the ResourceFieldSelector type for use
     // with apply.
     type ResourceFieldSelectorApplyConfiguration struct {
     	ContainerName *string            `json:"containerName,omitempty"`
    @@ -30,7 +30,7 @@ type ResourceFieldSelectorApplyConfiguration struct {
     	Divisor       *resource.Quantity `json:"divisor,omitempty"`
     }
     
    -// ResourceFieldSelectorApplyConfiguration constructs an declarative configuration of the ResourceFieldSelector type for use with
    +// ResourceFieldSelectorApplyConfiguration constructs a declarative configuration of the ResourceFieldSelector type for use with
     // apply.
     func ResourceFieldSelector() *ResourceFieldSelectorApplyConfiguration {
     	return &ResourceFieldSelectorApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcehealth.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcehealth.go
    new file mode 100644
    index 000000000000..0338780b3e72
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcehealth.go
    @@ -0,0 +1,52 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	corev1 "k8s.io/api/core/v1"
    +)
    +
    +// ResourceHealthApplyConfiguration represents a declarative configuration of the ResourceHealth type for use
    +// with apply.
    +type ResourceHealthApplyConfiguration struct {
    +	ResourceID *corev1.ResourceID           `json:"resourceID,omitempty"`
    +	Health     *corev1.ResourceHealthStatus `json:"health,omitempty"`
    +}
    +
    +// ResourceHealthApplyConfiguration constructs a declarative configuration of the ResourceHealth type for use with
    +// apply.
    +func ResourceHealth() *ResourceHealthApplyConfiguration {
    +	return &ResourceHealthApplyConfiguration{}
    +}
    +
    +// WithResourceID sets the ResourceID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceID field is set to the value of the last call.
    +func (b *ResourceHealthApplyConfiguration) WithResourceID(value corev1.ResourceID) *ResourceHealthApplyConfiguration {
    +	b.ResourceID = &value
    +	return b
    +}
    +
    +// WithHealth sets the Health field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Health field is set to the value of the last call.
    +func (b *ResourceHealthApplyConfiguration) WithHealth(value corev1.ResourceHealthStatus) *ResourceHealthApplyConfiguration {
    +	b.Health = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequota.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequota.go
    index 6b22ebdc59a7..cd67f104c96b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequota.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequota.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ResourceQuotaApplyConfiguration represents an declarative configuration of the ResourceQuota type for use
    +// ResourceQuotaApplyConfiguration represents a declarative configuration of the ResourceQuota type for use
     // with apply.
     type ResourceQuotaApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *ResourceQuotaSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *ResourceQuotaStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *ResourceQuotaSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *ResourceQuotaStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// ResourceQuota constructs an declarative configuration of the ResourceQuota type for use with
    +// ResourceQuota constructs a declarative configuration of the ResourceQuota type for use with
     // apply.
     func ResourceQuota(name, namespace string) *ResourceQuotaApplyConfiguration {
     	b := &ResourceQuotaApplyConfiguration{}
    @@ -58,18 +58,18 @@ func ResourceQuota(name, namespace string) *ResourceQuotaApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractResourceQuota(resourceQuota *apicorev1.ResourceQuota, fieldManager string) (*ResourceQuotaApplyConfiguration, error) {
    +func ExtractResourceQuota(resourceQuota *corev1.ResourceQuota, fieldManager string) (*ResourceQuotaApplyConfiguration, error) {
     	return extractResourceQuota(resourceQuota, fieldManager, "")
     }
     
     // ExtractResourceQuotaStatus is the same as ExtractResourceQuota except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractResourceQuotaStatus(resourceQuota *apicorev1.ResourceQuota, fieldManager string) (*ResourceQuotaApplyConfiguration, error) {
    +func ExtractResourceQuotaStatus(resourceQuota *corev1.ResourceQuota, fieldManager string) (*ResourceQuotaApplyConfiguration, error) {
     	return extractResourceQuota(resourceQuota, fieldManager, "status")
     }
     
    -func extractResourceQuota(resourceQuota *apicorev1.ResourceQuota, fieldManager string, subresource string) (*ResourceQuotaApplyConfiguration, error) {
    +func extractResourceQuota(resourceQuota *corev1.ResourceQuota, fieldManager string, subresource string) (*ResourceQuotaApplyConfiguration, error) {
     	b := &ResourceQuotaApplyConfiguration{}
     	err := managedfields.ExtractInto(resourceQuota, internal.Parser().Type("io.k8s.api.core.v1.ResourceQuota"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractResourceQuota(resourceQuota *apicorev1.ResourceQuota, fieldManager s
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ResourceQuotaApplyConfiguration) WithKind(value string) *ResourceQuotaApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *ResourceQuotaApplyConfiguration) WithKind(value string) *ResourceQuotaA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ResourceQuotaApplyConfiguration) WithAPIVersion(value string) *ResourceQuotaApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *ResourceQuotaApplyConfiguration) WithAPIVersion(value string) *Resource
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ResourceQuotaApplyConfiguration) WithName(value string) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *ResourceQuotaApplyConfiguration) WithName(value string) *ResourceQuotaA
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ResourceQuotaApplyConfiguration) WithGenerateName(value string) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *ResourceQuotaApplyConfiguration) WithGenerateName(value string) *Resour
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ResourceQuotaApplyConfiguration) WithNamespace(value string) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *ResourceQuotaApplyConfiguration) WithNamespace(value string) *ResourceQ
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ResourceQuotaApplyConfiguration) WithUID(value types.UID) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *ResourceQuotaApplyConfiguration) WithUID(value types.UID) *ResourceQuot
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ResourceQuotaApplyConfiguration) WithResourceVersion(value string) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *ResourceQuotaApplyConfiguration) WithResourceVersion(value string) *Res
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ResourceQuotaApplyConfiguration) WithGeneration(value int64) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ResourceQuotaApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ResourceQuotaApplyConfiguration {
    +func (b *ResourceQuotaApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ResourceQuotaApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ResourceQuotaApplyConfiguration {
    +func (b *ResourceQuotaApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *ResourceQuotaApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ResourceQuotaApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *ResourceQuotaApplyConfiguration) WithDeletionGracePeriodSeconds(value i
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ResourceQuotaApplyConfiguration) WithLabels(entries map[string]string) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *ResourceQuotaApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ResourceQuotaApplyConfiguration) WithAnnotations(entries map[string]string) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *ResourceQuotaApplyConfiguration) WithAnnotations(entries map[string]str
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ResourceQuotaApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ResourceQuotaApplyConfiguration {
    +func (b *ResourceQuotaApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *ResourceQuotaApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     func (b *ResourceQuotaApplyConfiguration) WithFinalizers(values ...string) *ResourceQuotaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ResourceQuotaApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *ResourceQuotaApplyConfiguration) WithStatus(value *ResourceQuotaStatusA
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ResourceQuotaApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequotaspec.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequotaspec.go
    index feb454bc4bf3..36d342fcdd46 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequotaspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequotaspec.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// ResourceQuotaSpecApplyConfiguration represents an declarative configuration of the ResourceQuotaSpec type for use
    +// ResourceQuotaSpecApplyConfiguration represents a declarative configuration of the ResourceQuotaSpec type for use
     // with apply.
     type ResourceQuotaSpecApplyConfiguration struct {
    -	Hard          *v1.ResourceList                 `json:"hard,omitempty"`
    -	Scopes        []v1.ResourceQuotaScope          `json:"scopes,omitempty"`
    +	Hard          *corev1.ResourceList             `json:"hard,omitempty"`
    +	Scopes        []corev1.ResourceQuotaScope      `json:"scopes,omitempty"`
     	ScopeSelector *ScopeSelectorApplyConfiguration `json:"scopeSelector,omitempty"`
     }
     
    -// ResourceQuotaSpecApplyConfiguration constructs an declarative configuration of the ResourceQuotaSpec type for use with
    +// ResourceQuotaSpecApplyConfiguration constructs a declarative configuration of the ResourceQuotaSpec type for use with
     // apply.
     func ResourceQuotaSpec() *ResourceQuotaSpecApplyConfiguration {
     	return &ResourceQuotaSpecApplyConfiguration{}
    @@ -39,7 +39,7 @@ func ResourceQuotaSpec() *ResourceQuotaSpecApplyConfiguration {
     // WithHard sets the Hard field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Hard field is set to the value of the last call.
    -func (b *ResourceQuotaSpecApplyConfiguration) WithHard(value v1.ResourceList) *ResourceQuotaSpecApplyConfiguration {
    +func (b *ResourceQuotaSpecApplyConfiguration) WithHard(value corev1.ResourceList) *ResourceQuotaSpecApplyConfiguration {
     	b.Hard = &value
     	return b
     }
    @@ -47,7 +47,7 @@ func (b *ResourceQuotaSpecApplyConfiguration) WithHard(value v1.ResourceList) *R
     // WithScopes adds the given value to the Scopes field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Scopes field.
    -func (b *ResourceQuotaSpecApplyConfiguration) WithScopes(values ...v1.ResourceQuotaScope) *ResourceQuotaSpecApplyConfiguration {
    +func (b *ResourceQuotaSpecApplyConfiguration) WithScopes(values ...corev1.ResourceQuotaScope) *ResourceQuotaSpecApplyConfiguration {
     	for i := range values {
     		b.Scopes = append(b.Scopes, values[i])
     	}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequotastatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequotastatus.go
    index 4dced90f7ab3..6338a130829a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequotastatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequotastatus.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// ResourceQuotaStatusApplyConfiguration represents an declarative configuration of the ResourceQuotaStatus type for use
    +// ResourceQuotaStatusApplyConfiguration represents a declarative configuration of the ResourceQuotaStatus type for use
     // with apply.
     type ResourceQuotaStatusApplyConfiguration struct {
    -	Hard *v1.ResourceList `json:"hard,omitempty"`
    -	Used *v1.ResourceList `json:"used,omitempty"`
    +	Hard *corev1.ResourceList `json:"hard,omitempty"`
    +	Used *corev1.ResourceList `json:"used,omitempty"`
     }
     
    -// ResourceQuotaStatusApplyConfiguration constructs an declarative configuration of the ResourceQuotaStatus type for use with
    +// ResourceQuotaStatusApplyConfiguration constructs a declarative configuration of the ResourceQuotaStatus type for use with
     // apply.
     func ResourceQuotaStatus() *ResourceQuotaStatusApplyConfiguration {
     	return &ResourceQuotaStatusApplyConfiguration{}
    @@ -38,7 +38,7 @@ func ResourceQuotaStatus() *ResourceQuotaStatusApplyConfiguration {
     // WithHard sets the Hard field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Hard field is set to the value of the last call.
    -func (b *ResourceQuotaStatusApplyConfiguration) WithHard(value v1.ResourceList) *ResourceQuotaStatusApplyConfiguration {
    +func (b *ResourceQuotaStatusApplyConfiguration) WithHard(value corev1.ResourceList) *ResourceQuotaStatusApplyConfiguration {
     	b.Hard = &value
     	return b
     }
    @@ -46,7 +46,7 @@ func (b *ResourceQuotaStatusApplyConfiguration) WithHard(value v1.ResourceList)
     // WithUsed sets the Used field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Used field is set to the value of the last call.
    -func (b *ResourceQuotaStatusApplyConfiguration) WithUsed(value v1.ResourceList) *ResourceQuotaStatusApplyConfiguration {
    +func (b *ResourceQuotaStatusApplyConfiguration) WithUsed(value corev1.ResourceList) *ResourceQuotaStatusApplyConfiguration {
     	b.Used = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcerequirements.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcerequirements.go
    index 9482b8d71346..ea77647a91bc 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcerequirements.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcerequirements.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// ResourceRequirementsApplyConfiguration represents an declarative configuration of the ResourceRequirements type for use
    +// ResourceRequirementsApplyConfiguration represents a declarative configuration of the ResourceRequirements type for use
     // with apply.
     type ResourceRequirementsApplyConfiguration struct {
    -	Limits   *v1.ResourceList                  `json:"limits,omitempty"`
    -	Requests *v1.ResourceList                  `json:"requests,omitempty"`
    +	Limits   *corev1.ResourceList              `json:"limits,omitempty"`
    +	Requests *corev1.ResourceList              `json:"requests,omitempty"`
     	Claims   []ResourceClaimApplyConfiguration `json:"claims,omitempty"`
     }
     
    -// ResourceRequirementsApplyConfiguration constructs an declarative configuration of the ResourceRequirements type for use with
    +// ResourceRequirementsApplyConfiguration constructs a declarative configuration of the ResourceRequirements type for use with
     // apply.
     func ResourceRequirements() *ResourceRequirementsApplyConfiguration {
     	return &ResourceRequirementsApplyConfiguration{}
    @@ -39,7 +39,7 @@ func ResourceRequirements() *ResourceRequirementsApplyConfiguration {
     // WithLimits sets the Limits field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Limits field is set to the value of the last call.
    -func (b *ResourceRequirementsApplyConfiguration) WithLimits(value v1.ResourceList) *ResourceRequirementsApplyConfiguration {
    +func (b *ResourceRequirementsApplyConfiguration) WithLimits(value corev1.ResourceList) *ResourceRequirementsApplyConfiguration {
     	b.Limits = &value
     	return b
     }
    @@ -47,7 +47,7 @@ func (b *ResourceRequirementsApplyConfiguration) WithLimits(value v1.ResourceLis
     // WithRequests sets the Requests field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Requests field is set to the value of the last call.
    -func (b *ResourceRequirementsApplyConfiguration) WithRequests(value v1.ResourceList) *ResourceRequirementsApplyConfiguration {
    +func (b *ResourceRequirementsApplyConfiguration) WithRequests(value corev1.ResourceList) *ResourceRequirementsApplyConfiguration {
     	b.Requests = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimschedulingstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcestatus.go
    similarity index 51%
    rename from vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimschedulingstatus.go
    rename to vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcestatus.go
    index e74679aed3a4..e99586659899 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimschedulingstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcestatus.go
    @@ -16,35 +16,42 @@ limitations under the License.
     
     // Code generated by applyconfiguration-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1
     
    -// ResourceClaimSchedulingStatusApplyConfiguration represents an declarative configuration of the ResourceClaimSchedulingStatus type for use
    +import (
    +	corev1 "k8s.io/api/core/v1"
    +)
    +
    +// ResourceStatusApplyConfiguration represents a declarative configuration of the ResourceStatus type for use
     // with apply.
    -type ResourceClaimSchedulingStatusApplyConfiguration struct {
    -	Name            *string  `json:"name,omitempty"`
    -	UnsuitableNodes []string `json:"unsuitableNodes,omitempty"`
    +type ResourceStatusApplyConfiguration struct {
    +	Name      *corev1.ResourceName               `json:"name,omitempty"`
    +	Resources []ResourceHealthApplyConfiguration `json:"resources,omitempty"`
     }
     
    -// ResourceClaimSchedulingStatusApplyConfiguration constructs an declarative configuration of the ResourceClaimSchedulingStatus type for use with
    +// ResourceStatusApplyConfiguration constructs a declarative configuration of the ResourceStatus type for use with
     // apply.
    -func ResourceClaimSchedulingStatus() *ResourceClaimSchedulingStatusApplyConfiguration {
    -	return &ResourceClaimSchedulingStatusApplyConfiguration{}
    +func ResourceStatus() *ResourceStatusApplyConfiguration {
    +	return &ResourceStatusApplyConfiguration{}
     }
     
     // WithName sets the Name field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
    -func (b *ResourceClaimSchedulingStatusApplyConfiguration) WithName(value string) *ResourceClaimSchedulingStatusApplyConfiguration {
    +func (b *ResourceStatusApplyConfiguration) WithName(value corev1.ResourceName) *ResourceStatusApplyConfiguration {
     	b.Name = &value
     	return b
     }
     
    -// WithUnsuitableNodes adds the given value to the UnsuitableNodes field in the declarative configuration
    +// WithResources adds the given value to the Resources field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
    -// If called multiple times, values provided by each call will be appended to the UnsuitableNodes field.
    -func (b *ResourceClaimSchedulingStatusApplyConfiguration) WithUnsuitableNodes(values ...string) *ResourceClaimSchedulingStatusApplyConfiguration {
    +// If called multiple times, values provided by each call will be appended to the Resources field.
    +func (b *ResourceStatusApplyConfiguration) WithResources(values ...*ResourceHealthApplyConfiguration) *ResourceStatusApplyConfiguration {
     	for i := range values {
    -		b.UnsuitableNodes = append(b.UnsuitableNodes, values[i])
    +		if values[i] == nil {
    +			panic("nil value passed to WithResources")
    +		}
    +		b.Resources = append(b.Resources, *values[i])
     	}
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/scaleiopersistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/scaleiopersistentvolumesource.go
    index fffb5b186d94..b07f46de918f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/scaleiopersistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/scaleiopersistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ScaleIOPersistentVolumeSourceApplyConfiguration represents an declarative configuration of the ScaleIOPersistentVolumeSource type for use
    +// ScaleIOPersistentVolumeSourceApplyConfiguration represents a declarative configuration of the ScaleIOPersistentVolumeSource type for use
     // with apply.
     type ScaleIOPersistentVolumeSourceApplyConfiguration struct {
     	Gateway          *string                            `json:"gateway,omitempty"`
    @@ -33,7 +33,7 @@ type ScaleIOPersistentVolumeSourceApplyConfiguration struct {
     	ReadOnly         *bool                              `json:"readOnly,omitempty"`
     }
     
    -// ScaleIOPersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the ScaleIOPersistentVolumeSource type for use with
    +// ScaleIOPersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the ScaleIOPersistentVolumeSource type for use with
     // apply.
     func ScaleIOPersistentVolumeSource() *ScaleIOPersistentVolumeSourceApplyConfiguration {
     	return &ScaleIOPersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/scaleiovolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/scaleiovolumesource.go
    index b54e1161ebf8..740c05ebb7d4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/scaleiovolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/scaleiovolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ScaleIOVolumeSourceApplyConfiguration represents an declarative configuration of the ScaleIOVolumeSource type for use
    +// ScaleIOVolumeSourceApplyConfiguration represents a declarative configuration of the ScaleIOVolumeSource type for use
     // with apply.
     type ScaleIOVolumeSourceApplyConfiguration struct {
     	Gateway          *string                                 `json:"gateway,omitempty"`
    @@ -33,7 +33,7 @@ type ScaleIOVolumeSourceApplyConfiguration struct {
     	ReadOnly         *bool                                   `json:"readOnly,omitempty"`
     }
     
    -// ScaleIOVolumeSourceApplyConfiguration constructs an declarative configuration of the ScaleIOVolumeSource type for use with
    +// ScaleIOVolumeSourceApplyConfiguration constructs a declarative configuration of the ScaleIOVolumeSource type for use with
     // apply.
     func ScaleIOVolumeSource() *ScaleIOVolumeSourceApplyConfiguration {
     	return &ScaleIOVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/scopedresourceselectorrequirement.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/scopedresourceselectorrequirement.go
    index c901a2ae6d21..c2481f490637 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/scopedresourceselectorrequirement.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/scopedresourceselectorrequirement.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// ScopedResourceSelectorRequirementApplyConfiguration represents an declarative configuration of the ScopedResourceSelectorRequirement type for use
    +// ScopedResourceSelectorRequirementApplyConfiguration represents a declarative configuration of the ScopedResourceSelectorRequirement type for use
     // with apply.
     type ScopedResourceSelectorRequirementApplyConfiguration struct {
    -	ScopeName *v1.ResourceQuotaScope    `json:"scopeName,omitempty"`
    -	Operator  *v1.ScopeSelectorOperator `json:"operator,omitempty"`
    -	Values    []string                  `json:"values,omitempty"`
    +	ScopeName *corev1.ResourceQuotaScope    `json:"scopeName,omitempty"`
    +	Operator  *corev1.ScopeSelectorOperator `json:"operator,omitempty"`
    +	Values    []string                      `json:"values,omitempty"`
     }
     
    -// ScopedResourceSelectorRequirementApplyConfiguration constructs an declarative configuration of the ScopedResourceSelectorRequirement type for use with
    +// ScopedResourceSelectorRequirementApplyConfiguration constructs a declarative configuration of the ScopedResourceSelectorRequirement type for use with
     // apply.
     func ScopedResourceSelectorRequirement() *ScopedResourceSelectorRequirementApplyConfiguration {
     	return &ScopedResourceSelectorRequirementApplyConfiguration{}
    @@ -39,7 +39,7 @@ func ScopedResourceSelectorRequirement() *ScopedResourceSelectorRequirementApply
     // WithScopeName sets the ScopeName field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ScopeName field is set to the value of the last call.
    -func (b *ScopedResourceSelectorRequirementApplyConfiguration) WithScopeName(value v1.ResourceQuotaScope) *ScopedResourceSelectorRequirementApplyConfiguration {
    +func (b *ScopedResourceSelectorRequirementApplyConfiguration) WithScopeName(value corev1.ResourceQuotaScope) *ScopedResourceSelectorRequirementApplyConfiguration {
     	b.ScopeName = &value
     	return b
     }
    @@ -47,7 +47,7 @@ func (b *ScopedResourceSelectorRequirementApplyConfiguration) WithScopeName(valu
     // WithOperator sets the Operator field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Operator field is set to the value of the last call.
    -func (b *ScopedResourceSelectorRequirementApplyConfiguration) WithOperator(value v1.ScopeSelectorOperator) *ScopedResourceSelectorRequirementApplyConfiguration {
    +func (b *ScopedResourceSelectorRequirementApplyConfiguration) WithOperator(value corev1.ScopeSelectorOperator) *ScopedResourceSelectorRequirementApplyConfiguration {
     	b.Operator = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/scopeselector.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/scopeselector.go
    index 3251e9dc1845..a9fb9a1b1971 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/scopeselector.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/scopeselector.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// ScopeSelectorApplyConfiguration represents an declarative configuration of the ScopeSelector type for use
    +// ScopeSelectorApplyConfiguration represents a declarative configuration of the ScopeSelector type for use
     // with apply.
     type ScopeSelectorApplyConfiguration struct {
     	MatchExpressions []ScopedResourceSelectorRequirementApplyConfiguration `json:"matchExpressions,omitempty"`
     }
     
    -// ScopeSelectorApplyConfiguration constructs an declarative configuration of the ScopeSelector type for use with
    +// ScopeSelectorApplyConfiguration constructs a declarative configuration of the ScopeSelector type for use with
     // apply.
     func ScopeSelector() *ScopeSelectorApplyConfiguration {
     	return &ScopeSelectorApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/seccompprofile.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/seccompprofile.go
    index 9818a00e7a4c..754bfd1b3e8a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/seccompprofile.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/seccompprofile.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// SeccompProfileApplyConfiguration represents an declarative configuration of the SeccompProfile type for use
    +// SeccompProfileApplyConfiguration represents a declarative configuration of the SeccompProfile type for use
     // with apply.
     type SeccompProfileApplyConfiguration struct {
    -	Type             *v1.SeccompProfileType `json:"type,omitempty"`
    -	LocalhostProfile *string                `json:"localhostProfile,omitempty"`
    +	Type             *corev1.SeccompProfileType `json:"type,omitempty"`
    +	LocalhostProfile *string                    `json:"localhostProfile,omitempty"`
     }
     
    -// SeccompProfileApplyConfiguration constructs an declarative configuration of the SeccompProfile type for use with
    +// SeccompProfileApplyConfiguration constructs a declarative configuration of the SeccompProfile type for use with
     // apply.
     func SeccompProfile() *SeccompProfileApplyConfiguration {
     	return &SeccompProfileApplyConfiguration{}
    @@ -38,7 +38,7 @@ func SeccompProfile() *SeccompProfileApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *SeccompProfileApplyConfiguration) WithType(value v1.SeccompProfileType) *SeccompProfileApplyConfiguration {
    +func (b *SeccompProfileApplyConfiguration) WithType(value corev1.SeccompProfileType) *SeccompProfileApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secret.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secret.go
    index 3f7e1eb03908..9c8532d20cf7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secret.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secret.go
    @@ -20,25 +20,25 @@ package v1
     
     import (
     	corev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// SecretApplyConfiguration represents an declarative configuration of the Secret type for use
    +// SecretApplyConfiguration represents a declarative configuration of the Secret type for use
     // with apply.
     type SecretApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Immutable                        *bool              `json:"immutable,omitempty"`
    -	Data                             map[string][]byte  `json:"data,omitempty"`
    -	StringData                       map[string]string  `json:"stringData,omitempty"`
    -	Type                             *corev1.SecretType `json:"type,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Immutable                            *bool              `json:"immutable,omitempty"`
    +	Data                                 map[string][]byte  `json:"data,omitempty"`
    +	StringData                           map[string]string  `json:"stringData,omitempty"`
    +	Type                                 *corev1.SecretType `json:"type,omitempty"`
     }
     
    -// Secret constructs an declarative configuration of the Secret type for use with
    +// Secret constructs a declarative configuration of the Secret type for use with
     // apply.
     func Secret(name, namespace string) *SecretApplyConfiguration {
     	b := &SecretApplyConfiguration{}
    @@ -89,7 +89,7 @@ func extractSecret(secret *corev1.Secret, fieldManager string, subresource strin
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *SecretApplyConfiguration) WithKind(value string) *SecretApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -97,7 +97,7 @@ func (b *SecretApplyConfiguration) WithKind(value string) *SecretApplyConfigurat
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *SecretApplyConfiguration) WithAPIVersion(value string) *SecretApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -106,7 +106,7 @@ func (b *SecretApplyConfiguration) WithAPIVersion(value string) *SecretApplyConf
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *SecretApplyConfiguration) WithName(value string) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -115,7 +115,7 @@ func (b *SecretApplyConfiguration) WithName(value string) *SecretApplyConfigurat
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *SecretApplyConfiguration) WithGenerateName(value string) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -124,7 +124,7 @@ func (b *SecretApplyConfiguration) WithGenerateName(value string) *SecretApplyCo
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *SecretApplyConfiguration) WithNamespace(value string) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -133,7 +133,7 @@ func (b *SecretApplyConfiguration) WithNamespace(value string) *SecretApplyConfi
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *SecretApplyConfiguration) WithUID(value types.UID) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -142,7 +142,7 @@ func (b *SecretApplyConfiguration) WithUID(value types.UID) *SecretApplyConfigur
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *SecretApplyConfiguration) WithResourceVersion(value string) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -151,25 +151,25 @@ func (b *SecretApplyConfiguration) WithResourceVersion(value string) *SecretAppl
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *SecretApplyConfiguration) WithGeneration(value int64) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *SecretApplyConfiguration) WithCreationTimestamp(value metav1.Time) *SecretApplyConfiguration {
    +func (b *SecretApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *SecretApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *SecretApplyConfiguration {
    +func (b *SecretApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -178,7 +178,7 @@ func (b *SecretApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Sec
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *SecretApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -188,11 +188,11 @@ func (b *SecretApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *
     // overwriting an existing map entries in Labels field with the same key.
     func (b *SecretApplyConfiguration) WithLabels(entries map[string]string) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -203,11 +203,11 @@ func (b *SecretApplyConfiguration) WithLabels(entries map[string]string) *Secret
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *SecretApplyConfiguration) WithAnnotations(entries map[string]string) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -215,13 +215,13 @@ func (b *SecretApplyConfiguration) WithAnnotations(entries map[string]string) *S
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *SecretApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *SecretApplyConfiguration {
    +func (b *SecretApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -232,14 +232,14 @@ func (b *SecretApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefere
     func (b *SecretApplyConfiguration) WithFinalizers(values ...string) *SecretApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *SecretApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -286,3 +286,9 @@ func (b *SecretApplyConfiguration) WithType(value corev1.SecretType) *SecretAppl
     	b.Type = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *SecretApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretenvsource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretenvsource.go
    index 7b22a8d0b285..d3cc9f6a625d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretenvsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretenvsource.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// SecretEnvSourceApplyConfiguration represents an declarative configuration of the SecretEnvSource type for use
    +// SecretEnvSourceApplyConfiguration represents a declarative configuration of the SecretEnvSource type for use
     // with apply.
     type SecretEnvSourceApplyConfiguration struct {
     	LocalObjectReferenceApplyConfiguration `json:",inline"`
     	Optional                               *bool `json:"optional,omitempty"`
     }
     
    -// SecretEnvSourceApplyConfiguration constructs an declarative configuration of the SecretEnvSource type for use with
    +// SecretEnvSourceApplyConfiguration constructs a declarative configuration of the SecretEnvSource type for use with
     // apply.
     func SecretEnvSource() *SecretEnvSourceApplyConfiguration {
     	return &SecretEnvSourceApplyConfiguration{}
    @@ -35,7 +35,7 @@ func SecretEnvSource() *SecretEnvSourceApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *SecretEnvSourceApplyConfiguration) WithName(value string) *SecretEnvSourceApplyConfiguration {
    -	b.Name = &value
    +	b.LocalObjectReferenceApplyConfiguration.Name = &value
     	return b
     }
     
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretkeyselector.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretkeyselector.go
    index b8464a348a92..f1cd8b2d31eb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretkeyselector.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretkeyselector.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// SecretKeySelectorApplyConfiguration represents an declarative configuration of the SecretKeySelector type for use
    +// SecretKeySelectorApplyConfiguration represents a declarative configuration of the SecretKeySelector type for use
     // with apply.
     type SecretKeySelectorApplyConfiguration struct {
     	LocalObjectReferenceApplyConfiguration `json:",inline"`
    @@ -26,7 +26,7 @@ type SecretKeySelectorApplyConfiguration struct {
     	Optional                               *bool   `json:"optional,omitempty"`
     }
     
    -// SecretKeySelectorApplyConfiguration constructs an declarative configuration of the SecretKeySelector type for use with
    +// SecretKeySelectorApplyConfiguration constructs a declarative configuration of the SecretKeySelector type for use with
     // apply.
     func SecretKeySelector() *SecretKeySelectorApplyConfiguration {
     	return &SecretKeySelectorApplyConfiguration{}
    @@ -36,7 +36,7 @@ func SecretKeySelector() *SecretKeySelectorApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *SecretKeySelectorApplyConfiguration) WithName(value string) *SecretKeySelectorApplyConfiguration {
    -	b.Name = &value
    +	b.LocalObjectReferenceApplyConfiguration.Name = &value
     	return b
     }
     
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretprojection.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretprojection.go
    index e8edc61273bb..99fa36ecc0ec 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretprojection.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretprojection.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// SecretProjectionApplyConfiguration represents an declarative configuration of the SecretProjection type for use
    +// SecretProjectionApplyConfiguration represents a declarative configuration of the SecretProjection type for use
     // with apply.
     type SecretProjectionApplyConfiguration struct {
     	LocalObjectReferenceApplyConfiguration `json:",inline"`
    @@ -26,7 +26,7 @@ type SecretProjectionApplyConfiguration struct {
     	Optional                               *bool                         `json:"optional,omitempty"`
     }
     
    -// SecretProjectionApplyConfiguration constructs an declarative configuration of the SecretProjection type for use with
    +// SecretProjectionApplyConfiguration constructs a declarative configuration of the SecretProjection type for use with
     // apply.
     func SecretProjection() *SecretProjectionApplyConfiguration {
     	return &SecretProjectionApplyConfiguration{}
    @@ -36,7 +36,7 @@ func SecretProjection() *SecretProjectionApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *SecretProjectionApplyConfiguration) WithName(value string) *SecretProjectionApplyConfiguration {
    -	b.Name = &value
    +	b.LocalObjectReferenceApplyConfiguration.Name = &value
     	return b
     }
     
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretreference.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretreference.go
    index 95579d003e45..f5e0de23aa6d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretreference.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// SecretReferenceApplyConfiguration represents an declarative configuration of the SecretReference type for use
    +// SecretReferenceApplyConfiguration represents a declarative configuration of the SecretReference type for use
     // with apply.
     type SecretReferenceApplyConfiguration struct {
     	Name      *string `json:"name,omitempty"`
     	Namespace *string `json:"namespace,omitempty"`
     }
     
    -// SecretReferenceApplyConfiguration constructs an declarative configuration of the SecretReference type for use with
    +// SecretReferenceApplyConfiguration constructs a declarative configuration of the SecretReference type for use with
     // apply.
     func SecretReference() *SecretReferenceApplyConfiguration {
     	return &SecretReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretvolumesource.go
    index bcb441e9f301..9f765d354da7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// SecretVolumeSourceApplyConfiguration represents an declarative configuration of the SecretVolumeSource type for use
    +// SecretVolumeSourceApplyConfiguration represents a declarative configuration of the SecretVolumeSource type for use
     // with apply.
     type SecretVolumeSourceApplyConfiguration struct {
     	SecretName  *string                       `json:"secretName,omitempty"`
    @@ -27,7 +27,7 @@ type SecretVolumeSourceApplyConfiguration struct {
     	Optional    *bool                         `json:"optional,omitempty"`
     }
     
    -// SecretVolumeSourceApplyConfiguration constructs an declarative configuration of the SecretVolumeSource type for use with
    +// SecretVolumeSourceApplyConfiguration constructs a declarative configuration of the SecretVolumeSource type for use with
     // apply.
     func SecretVolumeSource() *SecretVolumeSourceApplyConfiguration {
     	return &SecretVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/securitycontext.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/securitycontext.go
    index 8f01537eb37b..99faab72da03 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/securitycontext.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/securitycontext.go
    @@ -22,7 +22,7 @@ import (
     	corev1 "k8s.io/api/core/v1"
     )
     
    -// SecurityContextApplyConfiguration represents an declarative configuration of the SecurityContext type for use
    +// SecurityContextApplyConfiguration represents a declarative configuration of the SecurityContext type for use
     // with apply.
     type SecurityContextApplyConfiguration struct {
     	Capabilities             *CapabilitiesApplyConfiguration                  `json:"capabilities,omitempty"`
    @@ -36,9 +36,10 @@ type SecurityContextApplyConfiguration struct {
     	AllowPrivilegeEscalation *bool                                            `json:"allowPrivilegeEscalation,omitempty"`
     	ProcMount                *corev1.ProcMountType                            `json:"procMount,omitempty"`
     	SeccompProfile           *SeccompProfileApplyConfiguration                `json:"seccompProfile,omitempty"`
    +	AppArmorProfile          *AppArmorProfileApplyConfiguration               `json:"appArmorProfile,omitempty"`
     }
     
    -// SecurityContextApplyConfiguration constructs an declarative configuration of the SecurityContext type for use with
    +// SecurityContextApplyConfiguration constructs a declarative configuration of the SecurityContext type for use with
     // apply.
     func SecurityContext() *SecurityContextApplyConfiguration {
     	return &SecurityContextApplyConfiguration{}
    @@ -131,3 +132,11 @@ func (b *SecurityContextApplyConfiguration) WithSeccompProfile(value *SeccompPro
     	b.SeccompProfile = value
     	return b
     }
    +
    +// WithAppArmorProfile sets the AppArmorProfile field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the AppArmorProfile field is set to the value of the last call.
    +func (b *SecurityContextApplyConfiguration) WithAppArmorProfile(value *AppArmorProfileApplyConfiguration) *SecurityContextApplyConfiguration {
    +	b.AppArmorProfile = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/selinuxoptions.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/selinuxoptions.go
    index 2938faa18ef3..bad01300f04d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/selinuxoptions.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/selinuxoptions.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// SELinuxOptionsApplyConfiguration represents an declarative configuration of the SELinuxOptions type for use
    +// SELinuxOptionsApplyConfiguration represents a declarative configuration of the SELinuxOptions type for use
     // with apply.
     type SELinuxOptionsApplyConfiguration struct {
     	User  *string `json:"user,omitempty"`
    @@ -27,7 +27,7 @@ type SELinuxOptionsApplyConfiguration struct {
     	Level *string `json:"level,omitempty"`
     }
     
    -// SELinuxOptionsApplyConfiguration constructs an declarative configuration of the SELinuxOptions type for use with
    +// SELinuxOptionsApplyConfiguration constructs a declarative configuration of the SELinuxOptions type for use with
     // apply.
     func SELinuxOptions() *SELinuxOptionsApplyConfiguration {
     	return &SELinuxOptionsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/service.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/service.go
    index 3fa11952372d..85f6b25a9100 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/service.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/service.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ServiceApplyConfiguration represents an declarative configuration of the Service type for use
    +// ServiceApplyConfiguration represents a declarative configuration of the Service type for use
     // with apply.
     type ServiceApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *ServiceSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *ServiceStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *ServiceSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *ServiceStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Service constructs an declarative configuration of the Service type for use with
    +// Service constructs a declarative configuration of the Service type for use with
     // apply.
     func Service(name, namespace string) *ServiceApplyConfiguration {
     	b := &ServiceApplyConfiguration{}
    @@ -58,18 +58,18 @@ func Service(name, namespace string) *ServiceApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractService(service *apicorev1.Service, fieldManager string) (*ServiceApplyConfiguration, error) {
    +func ExtractService(service *corev1.Service, fieldManager string) (*ServiceApplyConfiguration, error) {
     	return extractService(service, fieldManager, "")
     }
     
     // ExtractServiceStatus is the same as ExtractService except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractServiceStatus(service *apicorev1.Service, fieldManager string) (*ServiceApplyConfiguration, error) {
    +func ExtractServiceStatus(service *corev1.Service, fieldManager string) (*ServiceApplyConfiguration, error) {
     	return extractService(service, fieldManager, "status")
     }
     
    -func extractService(service *apicorev1.Service, fieldManager string, subresource string) (*ServiceApplyConfiguration, error) {
    +func extractService(service *corev1.Service, fieldManager string, subresource string) (*ServiceApplyConfiguration, error) {
     	b := &ServiceApplyConfiguration{}
     	err := managedfields.ExtractInto(service, internal.Parser().Type("io.k8s.api.core.v1.Service"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractService(service *apicorev1.Service, fieldManager string, subresource
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ServiceApplyConfiguration) WithKind(value string) *ServiceApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *ServiceApplyConfiguration) WithKind(value string) *ServiceApplyConfigur
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ServiceApplyConfiguration) WithAPIVersion(value string) *ServiceApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *ServiceApplyConfiguration) WithAPIVersion(value string) *ServiceApplyCo
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ServiceApplyConfiguration) WithName(value string) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *ServiceApplyConfiguration) WithName(value string) *ServiceApplyConfigur
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ServiceApplyConfiguration) WithGenerateName(value string) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *ServiceApplyConfiguration) WithGenerateName(value string) *ServiceApply
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ServiceApplyConfiguration) WithNamespace(value string) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *ServiceApplyConfiguration) WithNamespace(value string) *ServiceApplyCon
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ServiceApplyConfiguration) WithUID(value types.UID) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *ServiceApplyConfiguration) WithUID(value types.UID) *ServiceApplyConfig
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ServiceApplyConfiguration) WithResourceVersion(value string) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *ServiceApplyConfiguration) WithResourceVersion(value string) *ServiceAp
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ServiceApplyConfiguration) WithGeneration(value int64) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ServiceApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ServiceApplyConfiguration {
    +func (b *ServiceApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ServiceApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ServiceApplyConfiguration {
    +func (b *ServiceApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *ServiceApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Se
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ServiceApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *ServiceApplyConfiguration) WithDeletionGracePeriodSeconds(value int64)
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ServiceApplyConfiguration) WithLabels(entries map[string]string) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *ServiceApplyConfiguration) WithLabels(entries map[string]string) *Servi
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ServiceApplyConfiguration) WithAnnotations(entries map[string]string) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *ServiceApplyConfiguration) WithAnnotations(entries map[string]string) *
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ServiceApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ServiceApplyConfiguration {
    +func (b *ServiceApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *ServiceApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     func (b *ServiceApplyConfiguration) WithFinalizers(values ...string) *ServiceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ServiceApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *ServiceApplyConfiguration) WithStatus(value *ServiceStatusApplyConfigur
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ServiceApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceaccount.go
    index 53a819375054..0d80ded9e7a6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceaccount.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceaccount.go
    @@ -19,25 +19,25 @@ limitations under the License.
     package v1
     
     import (
    -	apicorev1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	corev1 "k8s.io/api/core/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ServiceAccountApplyConfiguration represents an declarative configuration of the ServiceAccount type for use
    +// ServiceAccountApplyConfiguration represents a declarative configuration of the ServiceAccount type for use
     // with apply.
     type ServiceAccountApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Secrets                          []ObjectReferenceApplyConfiguration      `json:"secrets,omitempty"`
    -	ImagePullSecrets                 []LocalObjectReferenceApplyConfiguration `json:"imagePullSecrets,omitempty"`
    -	AutomountServiceAccountToken     *bool                                    `json:"automountServiceAccountToken,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Secrets                              []ObjectReferenceApplyConfiguration      `json:"secrets,omitempty"`
    +	ImagePullSecrets                     []LocalObjectReferenceApplyConfiguration `json:"imagePullSecrets,omitempty"`
    +	AutomountServiceAccountToken         *bool                                    `json:"automountServiceAccountToken,omitempty"`
     }
     
    -// ServiceAccount constructs an declarative configuration of the ServiceAccount type for use with
    +// ServiceAccount constructs a declarative configuration of the ServiceAccount type for use with
     // apply.
     func ServiceAccount(name, namespace string) *ServiceAccountApplyConfiguration {
     	b := &ServiceAccountApplyConfiguration{}
    @@ -59,18 +59,18 @@ func ServiceAccount(name, namespace string) *ServiceAccountApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractServiceAccount(serviceAccount *apicorev1.ServiceAccount, fieldManager string) (*ServiceAccountApplyConfiguration, error) {
    +func ExtractServiceAccount(serviceAccount *corev1.ServiceAccount, fieldManager string) (*ServiceAccountApplyConfiguration, error) {
     	return extractServiceAccount(serviceAccount, fieldManager, "")
     }
     
     // ExtractServiceAccountStatus is the same as ExtractServiceAccount except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractServiceAccountStatus(serviceAccount *apicorev1.ServiceAccount, fieldManager string) (*ServiceAccountApplyConfiguration, error) {
    +func ExtractServiceAccountStatus(serviceAccount *corev1.ServiceAccount, fieldManager string) (*ServiceAccountApplyConfiguration, error) {
     	return extractServiceAccount(serviceAccount, fieldManager, "status")
     }
     
    -func extractServiceAccount(serviceAccount *apicorev1.ServiceAccount, fieldManager string, subresource string) (*ServiceAccountApplyConfiguration, error) {
    +func extractServiceAccount(serviceAccount *corev1.ServiceAccount, fieldManager string, subresource string) (*ServiceAccountApplyConfiguration, error) {
     	b := &ServiceAccountApplyConfiguration{}
     	err := managedfields.ExtractInto(serviceAccount, internal.Parser().Type("io.k8s.api.core.v1.ServiceAccount"), fieldManager, b, subresource)
     	if err != nil {
    @@ -88,7 +88,7 @@ func extractServiceAccount(serviceAccount *apicorev1.ServiceAccount, fieldManage
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ServiceAccountApplyConfiguration) WithKind(value string) *ServiceAccountApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *ServiceAccountApplyConfiguration) WithKind(value string) *ServiceAccoun
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ServiceAccountApplyConfiguration) WithAPIVersion(value string) *ServiceAccountApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *ServiceAccountApplyConfiguration) WithAPIVersion(value string) *Service
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ServiceAccountApplyConfiguration) WithName(value string) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *ServiceAccountApplyConfiguration) WithName(value string) *ServiceAccoun
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ServiceAccountApplyConfiguration) WithGenerateName(value string) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *ServiceAccountApplyConfiguration) WithGenerateName(value string) *Servi
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ServiceAccountApplyConfiguration) WithNamespace(value string) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -132,7 +132,7 @@ func (b *ServiceAccountApplyConfiguration) WithNamespace(value string) *ServiceA
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ServiceAccountApplyConfiguration) WithUID(value types.UID) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -141,7 +141,7 @@ func (b *ServiceAccountApplyConfiguration) WithUID(value types.UID) *ServiceAcco
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ServiceAccountApplyConfiguration) WithResourceVersion(value string) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -150,25 +150,25 @@ func (b *ServiceAccountApplyConfiguration) WithResourceVersion(value string) *Se
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ServiceAccountApplyConfiguration) WithGeneration(value int64) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ServiceAccountApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ServiceAccountApplyConfiguration {
    +func (b *ServiceAccountApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ServiceAccountApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ServiceAccountApplyConfiguration {
    +func (b *ServiceAccountApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -177,7 +177,7 @@ func (b *ServiceAccountApplyConfiguration) WithDeletionTimestamp(value metav1.Ti
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ServiceAccountApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -187,11 +187,11 @@ func (b *ServiceAccountApplyConfiguration) WithDeletionGracePeriodSeconds(value
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ServiceAccountApplyConfiguration) WithLabels(entries map[string]string) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -202,11 +202,11 @@ func (b *ServiceAccountApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ServiceAccountApplyConfiguration) WithAnnotations(entries map[string]string) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -214,13 +214,13 @@ func (b *ServiceAccountApplyConfiguration) WithAnnotations(entries map[string]st
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ServiceAccountApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ServiceAccountApplyConfiguration {
    +func (b *ServiceAccountApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -231,14 +231,14 @@ func (b *ServiceAccountApplyConfiguration) WithOwnerReferences(values ...*v1.Own
     func (b *ServiceAccountApplyConfiguration) WithFinalizers(values ...string) *ServiceAccountApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ServiceAccountApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -275,3 +275,9 @@ func (b *ServiceAccountApplyConfiguration) WithAutomountServiceAccountToken(valu
     	b.AutomountServiceAccountToken = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ServiceAccountApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceaccounttokenprojection.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceaccounttokenprojection.go
    index a52fad7d8dad..fab81bf8a2f8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceaccounttokenprojection.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceaccounttokenprojection.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ServiceAccountTokenProjectionApplyConfiguration represents an declarative configuration of the ServiceAccountTokenProjection type for use
    +// ServiceAccountTokenProjectionApplyConfiguration represents a declarative configuration of the ServiceAccountTokenProjection type for use
     // with apply.
     type ServiceAccountTokenProjectionApplyConfiguration struct {
     	Audience          *string `json:"audience,omitempty"`
    @@ -26,7 +26,7 @@ type ServiceAccountTokenProjectionApplyConfiguration struct {
     	Path              *string `json:"path,omitempty"`
     }
     
    -// ServiceAccountTokenProjectionApplyConfiguration constructs an declarative configuration of the ServiceAccountTokenProjection type for use with
    +// ServiceAccountTokenProjectionApplyConfiguration constructs a declarative configuration of the ServiceAccountTokenProjection type for use with
     // apply.
     func ServiceAccountTokenProjection() *ServiceAccountTokenProjectionApplyConfiguration {
     	return &ServiceAccountTokenProjectionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceport.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceport.go
    index 8bc63bd950a8..4d5774d8d447 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceport.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceport.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// ServicePortApplyConfiguration represents an declarative configuration of the ServicePort type for use
    +// ServicePortApplyConfiguration represents a declarative configuration of the ServicePort type for use
     // with apply.
     type ServicePortApplyConfiguration struct {
     	Name        *string             `json:"name,omitempty"`
    -	Protocol    *v1.Protocol        `json:"protocol,omitempty"`
    +	Protocol    *corev1.Protocol    `json:"protocol,omitempty"`
     	AppProtocol *string             `json:"appProtocol,omitempty"`
     	Port        *int32              `json:"port,omitempty"`
     	TargetPort  *intstr.IntOrString `json:"targetPort,omitempty"`
     	NodePort    *int32              `json:"nodePort,omitempty"`
     }
     
    -// ServicePortApplyConfiguration constructs an declarative configuration of the ServicePort type for use with
    +// ServicePortApplyConfiguration constructs a declarative configuration of the ServicePort type for use with
     // apply.
     func ServicePort() *ServicePortApplyConfiguration {
     	return &ServicePortApplyConfiguration{}
    @@ -51,7 +51,7 @@ func (b *ServicePortApplyConfiguration) WithName(value string) *ServicePortApply
     // WithProtocol sets the Protocol field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Protocol field is set to the value of the last call.
    -func (b *ServicePortApplyConfiguration) WithProtocol(value v1.Protocol) *ServicePortApplyConfiguration {
    +func (b *ServicePortApplyConfiguration) WithProtocol(value corev1.Protocol) *ServicePortApplyConfiguration {
     	b.Protocol = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicespec.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicespec.go
    index 493af6fb3c1e..41367dce4f09 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicespec.go
    @@ -22,7 +22,7 @@ import (
     	corev1 "k8s.io/api/core/v1"
     )
     
    -// ServiceSpecApplyConfiguration represents an declarative configuration of the ServiceSpec type for use
    +// ServiceSpecApplyConfiguration represents a declarative configuration of the ServiceSpec type for use
     // with apply.
     type ServiceSpecApplyConfiguration struct {
     	Ports                         []ServicePortApplyConfiguration          `json:"ports,omitempty"`
    @@ -44,9 +44,10 @@ type ServiceSpecApplyConfiguration struct {
     	AllocateLoadBalancerNodePorts *bool                                    `json:"allocateLoadBalancerNodePorts,omitempty"`
     	LoadBalancerClass             *string                                  `json:"loadBalancerClass,omitempty"`
     	InternalTrafficPolicy         *corev1.ServiceInternalTrafficPolicy     `json:"internalTrafficPolicy,omitempty"`
    +	TrafficDistribution           *string                                  `json:"trafficDistribution,omitempty"`
     }
     
    -// ServiceSpecApplyConfiguration constructs an declarative configuration of the ServiceSpec type for use with
    +// ServiceSpecApplyConfiguration constructs a declarative configuration of the ServiceSpec type for use with
     // apply.
     func ServiceSpec() *ServiceSpecApplyConfiguration {
     	return &ServiceSpecApplyConfiguration{}
    @@ -222,3 +223,11 @@ func (b *ServiceSpecApplyConfiguration) WithInternalTrafficPolicy(value corev1.S
     	b.InternalTrafficPolicy = &value
     	return b
     }
    +
    +// WithTrafficDistribution sets the TrafficDistribution field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the TrafficDistribution field is set to the value of the last call.
    +func (b *ServiceSpecApplyConfiguration) WithTrafficDistribution(value string) *ServiceSpecApplyConfiguration {
    +	b.TrafficDistribution = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicestatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicestatus.go
    index 2347cec678c8..11c3f8a80a82 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicestatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicestatus.go
    @@ -22,14 +22,14 @@ import (
     	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ServiceStatusApplyConfiguration represents an declarative configuration of the ServiceStatus type for use
    +// ServiceStatusApplyConfiguration represents a declarative configuration of the ServiceStatus type for use
     // with apply.
     type ServiceStatusApplyConfiguration struct {
     	LoadBalancer *LoadBalancerStatusApplyConfiguration `json:"loadBalancer,omitempty"`
     	Conditions   []metav1.ConditionApplyConfiguration  `json:"conditions,omitempty"`
     }
     
    -// ServiceStatusApplyConfiguration constructs an declarative configuration of the ServiceStatus type for use with
    +// ServiceStatusApplyConfiguration constructs a declarative configuration of the ServiceStatus type for use with
     // apply.
     func ServiceStatus() *ServiceStatusApplyConfiguration {
     	return &ServiceStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/sessionaffinityconfig.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/sessionaffinityconfig.go
    index 7016f836a1e7..13b045fffc82 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/sessionaffinityconfig.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/sessionaffinityconfig.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// SessionAffinityConfigApplyConfiguration represents an declarative configuration of the SessionAffinityConfig type for use
    +// SessionAffinityConfigApplyConfiguration represents a declarative configuration of the SessionAffinityConfig type for use
     // with apply.
     type SessionAffinityConfigApplyConfiguration struct {
     	ClientIP *ClientIPConfigApplyConfiguration `json:"clientIP,omitempty"`
     }
     
    -// SessionAffinityConfigApplyConfiguration constructs an declarative configuration of the SessionAffinityConfig type for use with
    +// SessionAffinityConfigApplyConfiguration constructs a declarative configuration of the SessionAffinityConfig type for use with
     // apply.
     func SessionAffinityConfig() *SessionAffinityConfigApplyConfiguration {
     	return &SessionAffinityConfigApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/sleepaction.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/sleepaction.go
    index 8b3284536ad4..b4115609b1a1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/sleepaction.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/sleepaction.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// SleepActionApplyConfiguration represents an declarative configuration of the SleepAction type for use
    +// SleepActionApplyConfiguration represents a declarative configuration of the SleepAction type for use
     // with apply.
     type SleepActionApplyConfiguration struct {
     	Seconds *int64 `json:"seconds,omitempty"`
     }
     
    -// SleepActionApplyConfiguration constructs an declarative configuration of the SleepAction type for use with
    +// SleepActionApplyConfiguration constructs a declarative configuration of the SleepAction type for use with
     // apply.
     func SleepAction() *SleepActionApplyConfiguration {
     	return &SleepActionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/storageospersistentvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/storageospersistentvolumesource.go
    index 00ed39ccb0db..7381a498e1f1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/storageospersistentvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/storageospersistentvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// StorageOSPersistentVolumeSourceApplyConfiguration represents an declarative configuration of the StorageOSPersistentVolumeSource type for use
    +// StorageOSPersistentVolumeSourceApplyConfiguration represents a declarative configuration of the StorageOSPersistentVolumeSource type for use
     // with apply.
     type StorageOSPersistentVolumeSourceApplyConfiguration struct {
     	VolumeName      *string                            `json:"volumeName,omitempty"`
    @@ -28,7 +28,7 @@ type StorageOSPersistentVolumeSourceApplyConfiguration struct {
     	SecretRef       *ObjectReferenceApplyConfiguration `json:"secretRef,omitempty"`
     }
     
    -// StorageOSPersistentVolumeSourceApplyConfiguration constructs an declarative configuration of the StorageOSPersistentVolumeSource type for use with
    +// StorageOSPersistentVolumeSourceApplyConfiguration constructs a declarative configuration of the StorageOSPersistentVolumeSource type for use with
     // apply.
     func StorageOSPersistentVolumeSource() *StorageOSPersistentVolumeSourceApplyConfiguration {
     	return &StorageOSPersistentVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/storageosvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/storageosvolumesource.go
    index 7f3b810cf669..81d9373c196f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/storageosvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/storageosvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// StorageOSVolumeSourceApplyConfiguration represents an declarative configuration of the StorageOSVolumeSource type for use
    +// StorageOSVolumeSourceApplyConfiguration represents a declarative configuration of the StorageOSVolumeSource type for use
     // with apply.
     type StorageOSVolumeSourceApplyConfiguration struct {
     	VolumeName      *string                                 `json:"volumeName,omitempty"`
    @@ -28,7 +28,7 @@ type StorageOSVolumeSourceApplyConfiguration struct {
     	SecretRef       *LocalObjectReferenceApplyConfiguration `json:"secretRef,omitempty"`
     }
     
    -// StorageOSVolumeSourceApplyConfiguration constructs an declarative configuration of the StorageOSVolumeSource type for use with
    +// StorageOSVolumeSourceApplyConfiguration constructs a declarative configuration of the StorageOSVolumeSource type for use with
     // apply.
     func StorageOSVolumeSource() *StorageOSVolumeSourceApplyConfiguration {
     	return &StorageOSVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/sysctl.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/sysctl.go
    index deab9e0b38fb..7719eb7d6062 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/sysctl.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/sysctl.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// SysctlApplyConfiguration represents an declarative configuration of the Sysctl type for use
    +// SysctlApplyConfiguration represents a declarative configuration of the Sysctl type for use
     // with apply.
     type SysctlApplyConfiguration struct {
     	Name  *string `json:"name,omitempty"`
     	Value *string `json:"value,omitempty"`
     }
     
    -// SysctlApplyConfiguration constructs an declarative configuration of the Sysctl type for use with
    +// SysctlApplyConfiguration constructs a declarative configuration of the Sysctl type for use with
     // apply.
     func Sysctl() *SysctlApplyConfiguration {
     	return &SysctlApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/taint.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/taint.go
    index 4672b8742716..4b9e43051fc1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/taint.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/taint.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// TaintApplyConfiguration represents an declarative configuration of the Taint type for use
    +// TaintApplyConfiguration represents a declarative configuration of the Taint type for use
     // with apply.
     type TaintApplyConfiguration struct {
    -	Key       *string         `json:"key,omitempty"`
    -	Value     *string         `json:"value,omitempty"`
    -	Effect    *v1.TaintEffect `json:"effect,omitempty"`
    -	TimeAdded *metav1.Time    `json:"timeAdded,omitempty"`
    +	Key       *string             `json:"key,omitempty"`
    +	Value     *string             `json:"value,omitempty"`
    +	Effect    *corev1.TaintEffect `json:"effect,omitempty"`
    +	TimeAdded *metav1.Time        `json:"timeAdded,omitempty"`
     }
     
    -// TaintApplyConfiguration constructs an declarative configuration of the Taint type for use with
    +// TaintApplyConfiguration constructs a declarative configuration of the Taint type for use with
     // apply.
     func Taint() *TaintApplyConfiguration {
     	return &TaintApplyConfiguration{}
    @@ -57,7 +57,7 @@ func (b *TaintApplyConfiguration) WithValue(value string) *TaintApplyConfigurati
     // WithEffect sets the Effect field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Effect field is set to the value of the last call.
    -func (b *TaintApplyConfiguration) WithEffect(value v1.TaintEffect) *TaintApplyConfiguration {
    +func (b *TaintApplyConfiguration) WithEffect(value corev1.TaintEffect) *TaintApplyConfiguration {
     	b.Effect = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/tcpsocketaction.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/tcpsocketaction.go
    index bd038fc3aed9..cba1a7d08161 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/tcpsocketaction.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/tcpsocketaction.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// TCPSocketActionApplyConfiguration represents an declarative configuration of the TCPSocketAction type for use
    +// TCPSocketActionApplyConfiguration represents a declarative configuration of the TCPSocketAction type for use
     // with apply.
     type TCPSocketActionApplyConfiguration struct {
     	Port *intstr.IntOrString `json:"port,omitempty"`
     	Host *string             `json:"host,omitempty"`
     }
     
    -// TCPSocketActionApplyConfiguration constructs an declarative configuration of the TCPSocketAction type for use with
    +// TCPSocketActionApplyConfiguration constructs a declarative configuration of the TCPSocketAction type for use with
     // apply.
     func TCPSocketAction() *TCPSocketActionApplyConfiguration {
     	return &TCPSocketActionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/toleration.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/toleration.go
    index 1a92a8c6683a..a0a0aac0032c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/toleration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/toleration.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// TolerationApplyConfiguration represents an declarative configuration of the Toleration type for use
    +// TolerationApplyConfiguration represents a declarative configuration of the Toleration type for use
     // with apply.
     type TolerationApplyConfiguration struct {
    -	Key               *string                `json:"key,omitempty"`
    -	Operator          *v1.TolerationOperator `json:"operator,omitempty"`
    -	Value             *string                `json:"value,omitempty"`
    -	Effect            *v1.TaintEffect        `json:"effect,omitempty"`
    -	TolerationSeconds *int64                 `json:"tolerationSeconds,omitempty"`
    +	Key               *string                    `json:"key,omitempty"`
    +	Operator          *corev1.TolerationOperator `json:"operator,omitempty"`
    +	Value             *string                    `json:"value,omitempty"`
    +	Effect            *corev1.TaintEffect        `json:"effect,omitempty"`
    +	TolerationSeconds *int64                     `json:"tolerationSeconds,omitempty"`
     }
     
    -// TolerationApplyConfiguration constructs an declarative configuration of the Toleration type for use with
    +// TolerationApplyConfiguration constructs a declarative configuration of the Toleration type for use with
     // apply.
     func Toleration() *TolerationApplyConfiguration {
     	return &TolerationApplyConfiguration{}
    @@ -49,7 +49,7 @@ func (b *TolerationApplyConfiguration) WithKey(value string) *TolerationApplyCon
     // WithOperator sets the Operator field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Operator field is set to the value of the last call.
    -func (b *TolerationApplyConfiguration) WithOperator(value v1.TolerationOperator) *TolerationApplyConfiguration {
    +func (b *TolerationApplyConfiguration) WithOperator(value corev1.TolerationOperator) *TolerationApplyConfiguration {
     	b.Operator = &value
     	return b
     }
    @@ -65,7 +65,7 @@ func (b *TolerationApplyConfiguration) WithValue(value string) *TolerationApplyC
     // WithEffect sets the Effect field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Effect field is set to the value of the last call.
    -func (b *TolerationApplyConfiguration) WithEffect(value v1.TaintEffect) *TolerationApplyConfiguration {
    +func (b *TolerationApplyConfiguration) WithEffect(value corev1.TaintEffect) *TolerationApplyConfiguration {
     	b.Effect = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyselectorlabelrequirement.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyselectorlabelrequirement.go
    index 9581490de2d5..674ddec93ce7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyselectorlabelrequirement.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyselectorlabelrequirement.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// TopologySelectorLabelRequirementApplyConfiguration represents an declarative configuration of the TopologySelectorLabelRequirement type for use
    +// TopologySelectorLabelRequirementApplyConfiguration represents a declarative configuration of the TopologySelectorLabelRequirement type for use
     // with apply.
     type TopologySelectorLabelRequirementApplyConfiguration struct {
     	Key    *string  `json:"key,omitempty"`
     	Values []string `json:"values,omitempty"`
     }
     
    -// TopologySelectorLabelRequirementApplyConfiguration constructs an declarative configuration of the TopologySelectorLabelRequirement type for use with
    +// TopologySelectorLabelRequirementApplyConfiguration constructs a declarative configuration of the TopologySelectorLabelRequirement type for use with
     // apply.
     func TopologySelectorLabelRequirement() *TopologySelectorLabelRequirementApplyConfiguration {
     	return &TopologySelectorLabelRequirementApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyselectorterm.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyselectorterm.go
    index a025b8a2a8e6..7812ae5204d7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyselectorterm.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyselectorterm.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// TopologySelectorTermApplyConfiguration represents an declarative configuration of the TopologySelectorTerm type for use
    +// TopologySelectorTermApplyConfiguration represents a declarative configuration of the TopologySelectorTerm type for use
     // with apply.
     type TopologySelectorTermApplyConfiguration struct {
     	MatchLabelExpressions []TopologySelectorLabelRequirementApplyConfiguration `json:"matchLabelExpressions,omitempty"`
     }
     
    -// TopologySelectorTermApplyConfiguration constructs an declarative configuration of the TopologySelectorTerm type for use with
    +// TopologySelectorTermApplyConfiguration constructs a declarative configuration of the TopologySelectorTerm type for use with
     // apply.
     func TopologySelectorTerm() *TopologySelectorTermApplyConfiguration {
     	return &TopologySelectorTermApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyspreadconstraint.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyspreadconstraint.go
    index fbfa8fa886ca..ab814e8e0908 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyspreadconstraint.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyspreadconstraint.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// TopologySpreadConstraintApplyConfiguration represents an declarative configuration of the TopologySpreadConstraint type for use
    +// TopologySpreadConstraintApplyConfiguration represents a declarative configuration of the TopologySpreadConstraint type for use
     // with apply.
     type TopologySpreadConstraintApplyConfiguration struct {
     	MaxSkew            *int32                                  `json:"maxSkew,omitempty"`
     	TopologyKey        *string                                 `json:"topologyKey,omitempty"`
    -	WhenUnsatisfiable  *v1.UnsatisfiableConstraintAction       `json:"whenUnsatisfiable,omitempty"`
    +	WhenUnsatisfiable  *corev1.UnsatisfiableConstraintAction   `json:"whenUnsatisfiable,omitempty"`
     	LabelSelector      *metav1.LabelSelectorApplyConfiguration `json:"labelSelector,omitempty"`
     	MinDomains         *int32                                  `json:"minDomains,omitempty"`
    -	NodeAffinityPolicy *v1.NodeInclusionPolicy                 `json:"nodeAffinityPolicy,omitempty"`
    -	NodeTaintsPolicy   *v1.NodeInclusionPolicy                 `json:"nodeTaintsPolicy,omitempty"`
    +	NodeAffinityPolicy *corev1.NodeInclusionPolicy             `json:"nodeAffinityPolicy,omitempty"`
    +	NodeTaintsPolicy   *corev1.NodeInclusionPolicy             `json:"nodeTaintsPolicy,omitempty"`
     	MatchLabelKeys     []string                                `json:"matchLabelKeys,omitempty"`
     }
     
    -// TopologySpreadConstraintApplyConfiguration constructs an declarative configuration of the TopologySpreadConstraint type for use with
    +// TopologySpreadConstraintApplyConfiguration constructs a declarative configuration of the TopologySpreadConstraint type for use with
     // apply.
     func TopologySpreadConstraint() *TopologySpreadConstraintApplyConfiguration {
     	return &TopologySpreadConstraintApplyConfiguration{}
    @@ -61,7 +61,7 @@ func (b *TopologySpreadConstraintApplyConfiguration) WithTopologyKey(value strin
     // WithWhenUnsatisfiable sets the WhenUnsatisfiable field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the WhenUnsatisfiable field is set to the value of the last call.
    -func (b *TopologySpreadConstraintApplyConfiguration) WithWhenUnsatisfiable(value v1.UnsatisfiableConstraintAction) *TopologySpreadConstraintApplyConfiguration {
    +func (b *TopologySpreadConstraintApplyConfiguration) WithWhenUnsatisfiable(value corev1.UnsatisfiableConstraintAction) *TopologySpreadConstraintApplyConfiguration {
     	b.WhenUnsatisfiable = &value
     	return b
     }
    @@ -85,7 +85,7 @@ func (b *TopologySpreadConstraintApplyConfiguration) WithMinDomains(value int32)
     // WithNodeAffinityPolicy sets the NodeAffinityPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the NodeAffinityPolicy field is set to the value of the last call.
    -func (b *TopologySpreadConstraintApplyConfiguration) WithNodeAffinityPolicy(value v1.NodeInclusionPolicy) *TopologySpreadConstraintApplyConfiguration {
    +func (b *TopologySpreadConstraintApplyConfiguration) WithNodeAffinityPolicy(value corev1.NodeInclusionPolicy) *TopologySpreadConstraintApplyConfiguration {
     	b.NodeAffinityPolicy = &value
     	return b
     }
    @@ -93,7 +93,7 @@ func (b *TopologySpreadConstraintApplyConfiguration) WithNodeAffinityPolicy(valu
     // WithNodeTaintsPolicy sets the NodeTaintsPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the NodeTaintsPolicy field is set to the value of the last call.
    -func (b *TopologySpreadConstraintApplyConfiguration) WithNodeTaintsPolicy(value v1.NodeInclusionPolicy) *TopologySpreadConstraintApplyConfiguration {
    +func (b *TopologySpreadConstraintApplyConfiguration) WithNodeTaintsPolicy(value corev1.NodeInclusionPolicy) *TopologySpreadConstraintApplyConfiguration {
     	b.NodeTaintsPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/typedlocalobjectreference.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/typedlocalobjectreference.go
    index cdc2eb7d34fc..1e63b79889e5 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/typedlocalobjectreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/typedlocalobjectreference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// TypedLocalObjectReferenceApplyConfiguration represents an declarative configuration of the TypedLocalObjectReference type for use
    +// TypedLocalObjectReferenceApplyConfiguration represents a declarative configuration of the TypedLocalObjectReference type for use
     // with apply.
     type TypedLocalObjectReferenceApplyConfiguration struct {
     	APIGroup *string `json:"apiGroup,omitempty"`
    @@ -26,7 +26,7 @@ type TypedLocalObjectReferenceApplyConfiguration struct {
     	Name     *string `json:"name,omitempty"`
     }
     
    -// TypedLocalObjectReferenceApplyConfiguration constructs an declarative configuration of the TypedLocalObjectReference type for use with
    +// TypedLocalObjectReferenceApplyConfiguration constructs a declarative configuration of the TypedLocalObjectReference type for use with
     // apply.
     func TypedLocalObjectReference() *TypedLocalObjectReferenceApplyConfiguration {
     	return &TypedLocalObjectReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/typedobjectreference.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/typedobjectreference.go
    index d9a01c9c3a05..f07de8902e60 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/typedobjectreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/typedobjectreference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// TypedObjectReferenceApplyConfiguration represents an declarative configuration of the TypedObjectReference type for use
    +// TypedObjectReferenceApplyConfiguration represents a declarative configuration of the TypedObjectReference type for use
     // with apply.
     type TypedObjectReferenceApplyConfiguration struct {
     	APIGroup  *string `json:"apiGroup,omitempty"`
    @@ -27,7 +27,7 @@ type TypedObjectReferenceApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
     }
     
    -// TypedObjectReferenceApplyConfiguration constructs an declarative configuration of the TypedObjectReference type for use with
    +// TypedObjectReferenceApplyConfiguration constructs a declarative configuration of the TypedObjectReference type for use with
     // apply.
     func TypedObjectReference() *TypedObjectReferenceApplyConfiguration {
     	return &TypedObjectReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volume.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volume.go
    index db0686bce703..e47cd031dd3d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volume.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volume.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// VolumeApplyConfiguration represents an declarative configuration of the Volume type for use
    +// VolumeApplyConfiguration represents a declarative configuration of the Volume type for use
     // with apply.
     type VolumeApplyConfiguration struct {
     	Name                           *string `json:"name,omitempty"`
     	VolumeSourceApplyConfiguration `json:",inline"`
     }
     
    -// VolumeApplyConfiguration constructs an declarative configuration of the Volume type for use with
    +// VolumeApplyConfiguration constructs a declarative configuration of the Volume type for use with
     // apply.
     func Volume() *VolumeApplyConfiguration {
     	return &VolumeApplyConfiguration{}
    @@ -43,7 +43,7 @@ func (b *VolumeApplyConfiguration) WithName(value string) *VolumeApplyConfigurat
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the HostPath field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithHostPath(value *HostPathVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.HostPath = value
    +	b.VolumeSourceApplyConfiguration.HostPath = value
     	return b
     }
     
    @@ -51,7 +51,7 @@ func (b *VolumeApplyConfiguration) WithHostPath(value *HostPathVolumeSourceApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the EmptyDir field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithEmptyDir(value *EmptyDirVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.EmptyDir = value
    +	b.VolumeSourceApplyConfiguration.EmptyDir = value
     	return b
     }
     
    @@ -59,7 +59,7 @@ func (b *VolumeApplyConfiguration) WithEmptyDir(value *EmptyDirVolumeSourceApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the GCEPersistentDisk field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithGCEPersistentDisk(value *GCEPersistentDiskVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.GCEPersistentDisk = value
    +	b.VolumeSourceApplyConfiguration.GCEPersistentDisk = value
     	return b
     }
     
    @@ -67,7 +67,7 @@ func (b *VolumeApplyConfiguration) WithGCEPersistentDisk(value *GCEPersistentDis
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AWSElasticBlockStore field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithAWSElasticBlockStore(value *AWSElasticBlockStoreVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.AWSElasticBlockStore = value
    +	b.VolumeSourceApplyConfiguration.AWSElasticBlockStore = value
     	return b
     }
     
    @@ -75,7 +75,7 @@ func (b *VolumeApplyConfiguration) WithAWSElasticBlockStore(value *AWSElasticBlo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the GitRepo field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithGitRepo(value *GitRepoVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.GitRepo = value
    +	b.VolumeSourceApplyConfiguration.GitRepo = value
     	return b
     }
     
    @@ -83,7 +83,7 @@ func (b *VolumeApplyConfiguration) WithGitRepo(value *GitRepoVolumeSourceApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Secret field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithSecret(value *SecretVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.Secret = value
    +	b.VolumeSourceApplyConfiguration.Secret = value
     	return b
     }
     
    @@ -91,7 +91,7 @@ func (b *VolumeApplyConfiguration) WithSecret(value *SecretVolumeSourceApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the NFS field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithNFS(value *NFSVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.NFS = value
    +	b.VolumeSourceApplyConfiguration.NFS = value
     	return b
     }
     
    @@ -99,7 +99,7 @@ func (b *VolumeApplyConfiguration) WithNFS(value *NFSVolumeSourceApplyConfigurat
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ISCSI field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithISCSI(value *ISCSIVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.ISCSI = value
    +	b.VolumeSourceApplyConfiguration.ISCSI = value
     	return b
     }
     
    @@ -107,7 +107,7 @@ func (b *VolumeApplyConfiguration) WithISCSI(value *ISCSIVolumeSourceApplyConfig
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Glusterfs field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithGlusterfs(value *GlusterfsVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.Glusterfs = value
    +	b.VolumeSourceApplyConfiguration.Glusterfs = value
     	return b
     }
     
    @@ -115,7 +115,7 @@ func (b *VolumeApplyConfiguration) WithGlusterfs(value *GlusterfsVolumeSourceApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PersistentVolumeClaim field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithPersistentVolumeClaim(value *PersistentVolumeClaimVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.PersistentVolumeClaim = value
    +	b.VolumeSourceApplyConfiguration.PersistentVolumeClaim = value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *VolumeApplyConfiguration) WithPersistentVolumeClaim(value *PersistentVo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the RBD field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithRBD(value *RBDVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.RBD = value
    +	b.VolumeSourceApplyConfiguration.RBD = value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *VolumeApplyConfiguration) WithRBD(value *RBDVolumeSourceApplyConfigurat
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the FlexVolume field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithFlexVolume(value *FlexVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.FlexVolume = value
    +	b.VolumeSourceApplyConfiguration.FlexVolume = value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *VolumeApplyConfiguration) WithFlexVolume(value *FlexVolumeSourceApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Cinder field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithCinder(value *CinderVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.Cinder = value
    +	b.VolumeSourceApplyConfiguration.Cinder = value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *VolumeApplyConfiguration) WithCinder(value *CinderVolumeSourceApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CephFS field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithCephFS(value *CephFSVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.CephFS = value
    +	b.VolumeSourceApplyConfiguration.CephFS = value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *VolumeApplyConfiguration) WithCephFS(value *CephFSVolumeSourceApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Flocker field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithFlocker(value *FlockerVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.Flocker = value
    +	b.VolumeSourceApplyConfiguration.Flocker = value
     	return b
     }
     
    @@ -163,7 +163,7 @@ func (b *VolumeApplyConfiguration) WithFlocker(value *FlockerVolumeSourceApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DownwardAPI field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithDownwardAPI(value *DownwardAPIVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.DownwardAPI = value
    +	b.VolumeSourceApplyConfiguration.DownwardAPI = value
     	return b
     }
     
    @@ -171,7 +171,7 @@ func (b *VolumeApplyConfiguration) WithDownwardAPI(value *DownwardAPIVolumeSourc
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the FC field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithFC(value *FCVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.FC = value
    +	b.VolumeSourceApplyConfiguration.FC = value
     	return b
     }
     
    @@ -179,7 +179,7 @@ func (b *VolumeApplyConfiguration) WithFC(value *FCVolumeSourceApplyConfiguratio
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AzureFile field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithAzureFile(value *AzureFileVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.AzureFile = value
    +	b.VolumeSourceApplyConfiguration.AzureFile = value
     	return b
     }
     
    @@ -187,7 +187,7 @@ func (b *VolumeApplyConfiguration) WithAzureFile(value *AzureFileVolumeSourceApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ConfigMap field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithConfigMap(value *ConfigMapVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.ConfigMap = value
    +	b.VolumeSourceApplyConfiguration.ConfigMap = value
     	return b
     }
     
    @@ -195,7 +195,7 @@ func (b *VolumeApplyConfiguration) WithConfigMap(value *ConfigMapVolumeSourceApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the VsphereVolume field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithVsphereVolume(value *VsphereVirtualDiskVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.VsphereVolume = value
    +	b.VolumeSourceApplyConfiguration.VsphereVolume = value
     	return b
     }
     
    @@ -203,7 +203,7 @@ func (b *VolumeApplyConfiguration) WithVsphereVolume(value *VsphereVirtualDiskVo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Quobyte field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithQuobyte(value *QuobyteVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.Quobyte = value
    +	b.VolumeSourceApplyConfiguration.Quobyte = value
     	return b
     }
     
    @@ -211,7 +211,7 @@ func (b *VolumeApplyConfiguration) WithQuobyte(value *QuobyteVolumeSourceApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AzureDisk field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithAzureDisk(value *AzureDiskVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.AzureDisk = value
    +	b.VolumeSourceApplyConfiguration.AzureDisk = value
     	return b
     }
     
    @@ -219,7 +219,7 @@ func (b *VolumeApplyConfiguration) WithAzureDisk(value *AzureDiskVolumeSourceApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PhotonPersistentDisk field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithPhotonPersistentDisk(value *PhotonPersistentDiskVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.PhotonPersistentDisk = value
    +	b.VolumeSourceApplyConfiguration.PhotonPersistentDisk = value
     	return b
     }
     
    @@ -227,7 +227,7 @@ func (b *VolumeApplyConfiguration) WithPhotonPersistentDisk(value *PhotonPersist
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Projected field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithProjected(value *ProjectedVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.Projected = value
    +	b.VolumeSourceApplyConfiguration.Projected = value
     	return b
     }
     
    @@ -235,7 +235,7 @@ func (b *VolumeApplyConfiguration) WithProjected(value *ProjectedVolumeSourceApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PortworxVolume field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithPortworxVolume(value *PortworxVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.PortworxVolume = value
    +	b.VolumeSourceApplyConfiguration.PortworxVolume = value
     	return b
     }
     
    @@ -243,7 +243,7 @@ func (b *VolumeApplyConfiguration) WithPortworxVolume(value *PortworxVolumeSourc
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ScaleIO field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithScaleIO(value *ScaleIOVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.ScaleIO = value
    +	b.VolumeSourceApplyConfiguration.ScaleIO = value
     	return b
     }
     
    @@ -251,7 +251,7 @@ func (b *VolumeApplyConfiguration) WithScaleIO(value *ScaleIOVolumeSourceApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the StorageOS field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithStorageOS(value *StorageOSVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.StorageOS = value
    +	b.VolumeSourceApplyConfiguration.StorageOS = value
     	return b
     }
     
    @@ -259,7 +259,7 @@ func (b *VolumeApplyConfiguration) WithStorageOS(value *StorageOSVolumeSourceApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CSI field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithCSI(value *CSIVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.CSI = value
    +	b.VolumeSourceApplyConfiguration.CSI = value
     	return b
     }
     
    @@ -267,6 +267,14 @@ func (b *VolumeApplyConfiguration) WithCSI(value *CSIVolumeSourceApplyConfigurat
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Ephemeral field is set to the value of the last call.
     func (b *VolumeApplyConfiguration) WithEphemeral(value *EphemeralVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    -	b.Ephemeral = value
    +	b.VolumeSourceApplyConfiguration.Ephemeral = value
    +	return b
    +}
    +
    +// WithImage sets the Image field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Image field is set to the value of the last call.
    +func (b *VolumeApplyConfiguration) WithImage(value *ImageVolumeSourceApplyConfiguration) *VolumeApplyConfiguration {
    +	b.VolumeSourceApplyConfiguration.Image = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumedevice.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumedevice.go
    index ea18ca8d9edc..0bc52aad2a1e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumedevice.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumedevice.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// VolumeDeviceApplyConfiguration represents an declarative configuration of the VolumeDevice type for use
    +// VolumeDeviceApplyConfiguration represents a declarative configuration of the VolumeDevice type for use
     // with apply.
     type VolumeDeviceApplyConfiguration struct {
     	Name       *string `json:"name,omitempty"`
     	DevicePath *string `json:"devicePath,omitempty"`
     }
     
    -// VolumeDeviceApplyConfiguration constructs an declarative configuration of the VolumeDevice type for use with
    +// VolumeDeviceApplyConfiguration constructs a declarative configuration of the VolumeDevice type for use with
     // apply.
     func VolumeDevice() *VolumeDeviceApplyConfiguration {
     	return &VolumeDeviceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumemount.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumemount.go
    index b0bec9ffed95..ccd426a0cff9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumemount.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumemount.go
    @@ -19,21 +19,22 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// VolumeMountApplyConfiguration represents an declarative configuration of the VolumeMount type for use
    +// VolumeMountApplyConfiguration represents a declarative configuration of the VolumeMount type for use
     // with apply.
     type VolumeMountApplyConfiguration struct {
    -	Name             *string                  `json:"name,omitempty"`
    -	ReadOnly         *bool                    `json:"readOnly,omitempty"`
    -	MountPath        *string                  `json:"mountPath,omitempty"`
    -	SubPath          *string                  `json:"subPath,omitempty"`
    -	MountPropagation *v1.MountPropagationMode `json:"mountPropagation,omitempty"`
    -	SubPathExpr      *string                  `json:"subPathExpr,omitempty"`
    +	Name              *string                       `json:"name,omitempty"`
    +	ReadOnly          *bool                         `json:"readOnly,omitempty"`
    +	RecursiveReadOnly *corev1.RecursiveReadOnlyMode `json:"recursiveReadOnly,omitempty"`
    +	MountPath         *string                       `json:"mountPath,omitempty"`
    +	SubPath           *string                       `json:"subPath,omitempty"`
    +	MountPropagation  *corev1.MountPropagationMode  `json:"mountPropagation,omitempty"`
    +	SubPathExpr       *string                       `json:"subPathExpr,omitempty"`
     }
     
    -// VolumeMountApplyConfiguration constructs an declarative configuration of the VolumeMount type for use with
    +// VolumeMountApplyConfiguration constructs a declarative configuration of the VolumeMount type for use with
     // apply.
     func VolumeMount() *VolumeMountApplyConfiguration {
     	return &VolumeMountApplyConfiguration{}
    @@ -55,6 +56,14 @@ func (b *VolumeMountApplyConfiguration) WithReadOnly(value bool) *VolumeMountApp
     	return b
     }
     
    +// WithRecursiveReadOnly sets the RecursiveReadOnly field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the RecursiveReadOnly field is set to the value of the last call.
    +func (b *VolumeMountApplyConfiguration) WithRecursiveReadOnly(value corev1.RecursiveReadOnlyMode) *VolumeMountApplyConfiguration {
    +	b.RecursiveReadOnly = &value
    +	return b
    +}
    +
     // WithMountPath sets the MountPath field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the MountPath field is set to the value of the last call.
    @@ -74,7 +83,7 @@ func (b *VolumeMountApplyConfiguration) WithSubPath(value string) *VolumeMountAp
     // WithMountPropagation sets the MountPropagation field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the MountPropagation field is set to the value of the last call.
    -func (b *VolumeMountApplyConfiguration) WithMountPropagation(value v1.MountPropagationMode) *VolumeMountApplyConfiguration {
    +func (b *VolumeMountApplyConfiguration) WithMountPropagation(value corev1.MountPropagationMode) *VolumeMountApplyConfiguration {
     	b.MountPropagation = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumemountstatus.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumemountstatus.go
    new file mode 100644
    index 000000000000..f55c407235e4
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumemountstatus.go
    @@ -0,0 +1,70 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	corev1 "k8s.io/api/core/v1"
    +)
    +
    +// VolumeMountStatusApplyConfiguration represents a declarative configuration of the VolumeMountStatus type for use
    +// with apply.
    +type VolumeMountStatusApplyConfiguration struct {
    +	Name              *string                       `json:"name,omitempty"`
    +	MountPath         *string                       `json:"mountPath,omitempty"`
    +	ReadOnly          *bool                         `json:"readOnly,omitempty"`
    +	RecursiveReadOnly *corev1.RecursiveReadOnlyMode `json:"recursiveReadOnly,omitempty"`
    +}
    +
    +// VolumeMountStatusApplyConfiguration constructs a declarative configuration of the VolumeMountStatus type for use with
    +// apply.
    +func VolumeMountStatus() *VolumeMountStatusApplyConfiguration {
    +	return &VolumeMountStatusApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *VolumeMountStatusApplyConfiguration) WithName(value string) *VolumeMountStatusApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithMountPath sets the MountPath field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the MountPath field is set to the value of the last call.
    +func (b *VolumeMountStatusApplyConfiguration) WithMountPath(value string) *VolumeMountStatusApplyConfiguration {
    +	b.MountPath = &value
    +	return b
    +}
    +
    +// WithReadOnly sets the ReadOnly field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ReadOnly field is set to the value of the last call.
    +func (b *VolumeMountStatusApplyConfiguration) WithReadOnly(value bool) *VolumeMountStatusApplyConfiguration {
    +	b.ReadOnly = &value
    +	return b
    +}
    +
    +// WithRecursiveReadOnly sets the RecursiveReadOnly field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the RecursiveReadOnly field is set to the value of the last call.
    +func (b *VolumeMountStatusApplyConfiguration) WithRecursiveReadOnly(value corev1.RecursiveReadOnlyMode) *VolumeMountStatusApplyConfiguration {
    +	b.RecursiveReadOnly = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumenodeaffinity.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumenodeaffinity.go
    index 32bfd8292852..9198c25dc889 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumenodeaffinity.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumenodeaffinity.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// VolumeNodeAffinityApplyConfiguration represents an declarative configuration of the VolumeNodeAffinity type for use
    +// VolumeNodeAffinityApplyConfiguration represents a declarative configuration of the VolumeNodeAffinity type for use
     // with apply.
     type VolumeNodeAffinityApplyConfiguration struct {
     	Required *NodeSelectorApplyConfiguration `json:"required,omitempty"`
     }
     
    -// VolumeNodeAffinityApplyConfiguration constructs an declarative configuration of the VolumeNodeAffinity type for use with
    +// VolumeNodeAffinityApplyConfiguration constructs a declarative configuration of the VolumeNodeAffinity type for use with
     // apply.
     func VolumeNodeAffinity() *VolumeNodeAffinityApplyConfiguration {
     	return &VolumeNodeAffinityApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeprojection.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeprojection.go
    index a2ef0a9943d4..c14e9fe69701 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeprojection.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeprojection.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// VolumeProjectionApplyConfiguration represents an declarative configuration of the VolumeProjection type for use
    +// VolumeProjectionApplyConfiguration represents a declarative configuration of the VolumeProjection type for use
     // with apply.
     type VolumeProjectionApplyConfiguration struct {
     	Secret              *SecretProjectionApplyConfiguration              `json:"secret,omitempty"`
    @@ -28,7 +28,7 @@ type VolumeProjectionApplyConfiguration struct {
     	ClusterTrustBundle  *ClusterTrustBundleProjectionApplyConfiguration  `json:"clusterTrustBundle,omitempty"`
     }
     
    -// VolumeProjectionApplyConfiguration constructs an declarative configuration of the VolumeProjection type for use with
    +// VolumeProjectionApplyConfiguration constructs a declarative configuration of the VolumeProjection type for use with
     // apply.
     func VolumeProjection() *VolumeProjectionApplyConfiguration {
     	return &VolumeProjectionApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeresourcerequirements.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeresourcerequirements.go
    index 89ad1da8b33a..5c83ae6d45e5 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeresourcerequirements.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeresourcerequirements.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// VolumeResourceRequirementsApplyConfiguration represents an declarative configuration of the VolumeResourceRequirements type for use
    +// VolumeResourceRequirementsApplyConfiguration represents a declarative configuration of the VolumeResourceRequirements type for use
     // with apply.
     type VolumeResourceRequirementsApplyConfiguration struct {
    -	Limits   *v1.ResourceList `json:"limits,omitempty"`
    -	Requests *v1.ResourceList `json:"requests,omitempty"`
    +	Limits   *corev1.ResourceList `json:"limits,omitempty"`
    +	Requests *corev1.ResourceList `json:"requests,omitempty"`
     }
     
    -// VolumeResourceRequirementsApplyConfiguration constructs an declarative configuration of the VolumeResourceRequirements type for use with
    +// VolumeResourceRequirementsApplyConfiguration constructs a declarative configuration of the VolumeResourceRequirements type for use with
     // apply.
     func VolumeResourceRequirements() *VolumeResourceRequirementsApplyConfiguration {
     	return &VolumeResourceRequirementsApplyConfiguration{}
    @@ -38,7 +38,7 @@ func VolumeResourceRequirements() *VolumeResourceRequirementsApplyConfiguration
     // WithLimits sets the Limits field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Limits field is set to the value of the last call.
    -func (b *VolumeResourceRequirementsApplyConfiguration) WithLimits(value v1.ResourceList) *VolumeResourceRequirementsApplyConfiguration {
    +func (b *VolumeResourceRequirementsApplyConfiguration) WithLimits(value corev1.ResourceList) *VolumeResourceRequirementsApplyConfiguration {
     	b.Limits = &value
     	return b
     }
    @@ -46,7 +46,7 @@ func (b *VolumeResourceRequirementsApplyConfiguration) WithLimits(value v1.Resou
     // WithRequests sets the Requests field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Requests field is set to the value of the last call.
    -func (b *VolumeResourceRequirementsApplyConfiguration) WithRequests(value v1.ResourceList) *VolumeResourceRequirementsApplyConfiguration {
    +func (b *VolumeResourceRequirementsApplyConfiguration) WithRequests(value corev1.ResourceList) *VolumeResourceRequirementsApplyConfiguration {
     	b.Requests = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumesource.go
    index 4a8d316dd52e..aeead953cf59 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// VolumeSourceApplyConfiguration represents an declarative configuration of the VolumeSource type for use
    +// VolumeSourceApplyConfiguration represents a declarative configuration of the VolumeSource type for use
     // with apply.
     type VolumeSourceApplyConfiguration struct {
     	HostPath              *HostPathVolumeSourceApplyConfiguration              `json:"hostPath,omitempty"`
    @@ -50,9 +50,10 @@ type VolumeSourceApplyConfiguration struct {
     	StorageOS             *StorageOSVolumeSourceApplyConfiguration             `json:"storageos,omitempty"`
     	CSI                   *CSIVolumeSourceApplyConfiguration                   `json:"csi,omitempty"`
     	Ephemeral             *EphemeralVolumeSourceApplyConfiguration             `json:"ephemeral,omitempty"`
    +	Image                 *ImageVolumeSourceApplyConfiguration                 `json:"image,omitempty"`
     }
     
    -// VolumeSourceApplyConfiguration constructs an declarative configuration of the VolumeSource type for use with
    +// VolumeSourceApplyConfiguration constructs a declarative configuration of the VolumeSource type for use with
     // apply.
     func VolumeSource() *VolumeSourceApplyConfiguration {
     	return &VolumeSourceApplyConfiguration{}
    @@ -289,3 +290,11 @@ func (b *VolumeSourceApplyConfiguration) WithEphemeral(value *EphemeralVolumeSou
     	b.Ephemeral = value
     	return b
     }
    +
    +// WithImage sets the Image field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Image field is set to the value of the last call.
    +func (b *VolumeSourceApplyConfiguration) WithImage(value *ImageVolumeSourceApplyConfiguration) *VolumeSourceApplyConfiguration {
    +	b.Image = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/vspherevirtualdiskvolumesource.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/vspherevirtualdiskvolumesource.go
    index ff3e3e27d90a..ea8fd8d62e37 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/vspherevirtualdiskvolumesource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/vspherevirtualdiskvolumesource.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// VsphereVirtualDiskVolumeSourceApplyConfiguration represents an declarative configuration of the VsphereVirtualDiskVolumeSource type for use
    +// VsphereVirtualDiskVolumeSourceApplyConfiguration represents a declarative configuration of the VsphereVirtualDiskVolumeSource type for use
     // with apply.
     type VsphereVirtualDiskVolumeSourceApplyConfiguration struct {
     	VolumePath        *string `json:"volumePath,omitempty"`
    @@ -27,7 +27,7 @@ type VsphereVirtualDiskVolumeSourceApplyConfiguration struct {
     	StoragePolicyID   *string `json:"storagePolicyID,omitempty"`
     }
     
    -// VsphereVirtualDiskVolumeSourceApplyConfiguration constructs an declarative configuration of the VsphereVirtualDiskVolumeSource type for use with
    +// VsphereVirtualDiskVolumeSourceApplyConfiguration constructs a declarative configuration of the VsphereVirtualDiskVolumeSource type for use with
     // apply.
     func VsphereVirtualDiskVolumeSource() *VsphereVirtualDiskVolumeSourceApplyConfiguration {
     	return &VsphereVirtualDiskVolumeSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/weightedpodaffinityterm.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/weightedpodaffinityterm.go
    index eb99d06ffab2..c49ef93eb4b7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/weightedpodaffinityterm.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/weightedpodaffinityterm.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// WeightedPodAffinityTermApplyConfiguration represents an declarative configuration of the WeightedPodAffinityTerm type for use
    +// WeightedPodAffinityTermApplyConfiguration represents a declarative configuration of the WeightedPodAffinityTerm type for use
     // with apply.
     type WeightedPodAffinityTermApplyConfiguration struct {
     	Weight          *int32                             `json:"weight,omitempty"`
     	PodAffinityTerm *PodAffinityTermApplyConfiguration `json:"podAffinityTerm,omitempty"`
     }
     
    -// WeightedPodAffinityTermApplyConfiguration constructs an declarative configuration of the WeightedPodAffinityTerm type for use with
    +// WeightedPodAffinityTermApplyConfiguration constructs a declarative configuration of the WeightedPodAffinityTerm type for use with
     // apply.
     func WeightedPodAffinityTerm() *WeightedPodAffinityTermApplyConfiguration {
     	return &WeightedPodAffinityTermApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/core/v1/windowssecuritycontextoptions.go b/vendor/k8s.io/client-go/applyconfigurations/core/v1/windowssecuritycontextoptions.go
    index 20692e01466d..bb37a500b48e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/core/v1/windowssecuritycontextoptions.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/core/v1/windowssecuritycontextoptions.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// WindowsSecurityContextOptionsApplyConfiguration represents an declarative configuration of the WindowsSecurityContextOptions type for use
    +// WindowsSecurityContextOptionsApplyConfiguration represents a declarative configuration of the WindowsSecurityContextOptions type for use
     // with apply.
     type WindowsSecurityContextOptionsApplyConfiguration struct {
     	GMSACredentialSpecName *string `json:"gmsaCredentialSpecName,omitempty"`
    @@ -27,7 +27,7 @@ type WindowsSecurityContextOptionsApplyConfiguration struct {
     	HostProcess            *bool   `json:"hostProcess,omitempty"`
     }
     
    -// WindowsSecurityContextOptionsApplyConfiguration constructs an declarative configuration of the WindowsSecurityContextOptions type for use with
    +// WindowsSecurityContextOptionsApplyConfiguration constructs a declarative configuration of the WindowsSecurityContextOptions type for use with
     // apply.
     func WindowsSecurityContextOptions() *WindowsSecurityContextOptionsApplyConfiguration {
     	return &WindowsSecurityContextOptionsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpoint.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpoint.go
    index d8c2359a3b72..df45a6fb8aa3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpoint.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpoint.go
    @@ -22,7 +22,7 @@ import (
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// EndpointApplyConfiguration represents an declarative configuration of the Endpoint type for use
    +// EndpointApplyConfiguration represents a declarative configuration of the Endpoint type for use
     // with apply.
     type EndpointApplyConfiguration struct {
     	Addresses          []string                                  `json:"addresses,omitempty"`
    @@ -35,7 +35,7 @@ type EndpointApplyConfiguration struct {
     	Hints              *EndpointHintsApplyConfiguration          `json:"hints,omitempty"`
     }
     
    -// EndpointApplyConfiguration constructs an declarative configuration of the Endpoint type for use with
    +// EndpointApplyConfiguration constructs a declarative configuration of the Endpoint type for use with
     // apply.
     func Endpoint() *EndpointApplyConfiguration {
     	return &EndpointApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointconditions.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointconditions.go
    index 68c25dd57c13..20f0b97124af 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointconditions.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointconditions.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// EndpointConditionsApplyConfiguration represents an declarative configuration of the EndpointConditions type for use
    +// EndpointConditionsApplyConfiguration represents a declarative configuration of the EndpointConditions type for use
     // with apply.
     type EndpointConditionsApplyConfiguration struct {
     	Ready       *bool `json:"ready,omitempty"`
    @@ -26,7 +26,7 @@ type EndpointConditionsApplyConfiguration struct {
     	Terminating *bool `json:"terminating,omitempty"`
     }
     
    -// EndpointConditionsApplyConfiguration constructs an declarative configuration of the EndpointConditions type for use with
    +// EndpointConditionsApplyConfiguration constructs a declarative configuration of the EndpointConditions type for use with
     // apply.
     func EndpointConditions() *EndpointConditionsApplyConfiguration {
     	return &EndpointConditionsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointhints.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointhints.go
    index 6eb9f21a5130..d2d0f6776982 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointhints.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointhints.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// EndpointHintsApplyConfiguration represents an declarative configuration of the EndpointHints type for use
    +// EndpointHintsApplyConfiguration represents a declarative configuration of the EndpointHints type for use
     // with apply.
     type EndpointHintsApplyConfiguration struct {
     	ForZones []ForZoneApplyConfiguration `json:"forZones,omitempty"`
     }
     
    -// EndpointHintsApplyConfiguration constructs an declarative configuration of the EndpointHints type for use with
    +// EndpointHintsApplyConfiguration constructs a declarative configuration of the EndpointHints type for use with
     // apply.
     func EndpointHints() *EndpointHintsApplyConfiguration {
     	return &EndpointHintsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointport.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointport.go
    index c71295600948..b55c868cb1ab 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointport.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointport.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// EndpointPortApplyConfiguration represents an declarative configuration of the EndpointPort type for use
    +// EndpointPortApplyConfiguration represents a declarative configuration of the EndpointPort type for use
     // with apply.
     type EndpointPortApplyConfiguration struct {
    -	Name        *string      `json:"name,omitempty"`
    -	Protocol    *v1.Protocol `json:"protocol,omitempty"`
    -	Port        *int32       `json:"port,omitempty"`
    -	AppProtocol *string      `json:"appProtocol,omitempty"`
    +	Name        *string          `json:"name,omitempty"`
    +	Protocol    *corev1.Protocol `json:"protocol,omitempty"`
    +	Port        *int32           `json:"port,omitempty"`
    +	AppProtocol *string          `json:"appProtocol,omitempty"`
     }
     
    -// EndpointPortApplyConfiguration constructs an declarative configuration of the EndpointPort type for use with
    +// EndpointPortApplyConfiguration constructs a declarative configuration of the EndpointPort type for use with
     // apply.
     func EndpointPort() *EndpointPortApplyConfiguration {
     	return &EndpointPortApplyConfiguration{}
    @@ -48,7 +48,7 @@ func (b *EndpointPortApplyConfiguration) WithName(value string) *EndpointPortApp
     // WithProtocol sets the Protocol field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Protocol field is set to the value of the last call.
    -func (b *EndpointPortApplyConfiguration) WithProtocol(value v1.Protocol) *EndpointPortApplyConfiguration {
    +func (b *EndpointPortApplyConfiguration) WithProtocol(value corev1.Protocol) *EndpointPortApplyConfiguration {
     	b.Protocol = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointslice.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointslice.go
    index 640613753d9e..a27c0ab1a092 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointslice.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointslice.go
    @@ -20,24 +20,24 @@ package v1
     
     import (
     	discoveryv1 "k8s.io/api/discovery/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// EndpointSliceApplyConfiguration represents an declarative configuration of the EndpointSlice type for use
    +// EndpointSliceApplyConfiguration represents a declarative configuration of the EndpointSlice type for use
     // with apply.
     type EndpointSliceApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	AddressType                      *discoveryv1.AddressType         `json:"addressType,omitempty"`
    -	Endpoints                        []EndpointApplyConfiguration     `json:"endpoints,omitempty"`
    -	Ports                            []EndpointPortApplyConfiguration `json:"ports,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	AddressType                          *discoveryv1.AddressType         `json:"addressType,omitempty"`
    +	Endpoints                            []EndpointApplyConfiguration     `json:"endpoints,omitempty"`
    +	Ports                                []EndpointPortApplyConfiguration `json:"ports,omitempty"`
     }
     
    -// EndpointSlice constructs an declarative configuration of the EndpointSlice type for use with
    +// EndpointSlice constructs a declarative configuration of the EndpointSlice type for use with
     // apply.
     func EndpointSlice(name, namespace string) *EndpointSliceApplyConfiguration {
     	b := &EndpointSliceApplyConfiguration{}
    @@ -88,7 +88,7 @@ func extractEndpointSlice(endpointSlice *discoveryv1.EndpointSlice, fieldManager
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithKind(value string) *EndpointSliceApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *EndpointSliceApplyConfiguration) WithKind(value string) *EndpointSliceA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithAPIVersion(value string) *EndpointSliceApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *EndpointSliceApplyConfiguration) WithAPIVersion(value string) *Endpoint
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithName(value string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *EndpointSliceApplyConfiguration) WithName(value string) *EndpointSliceA
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithGenerateName(value string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *EndpointSliceApplyConfiguration) WithGenerateName(value string) *Endpoi
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithNamespace(value string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -132,7 +132,7 @@ func (b *EndpointSliceApplyConfiguration) WithNamespace(value string) *EndpointS
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithUID(value types.UID) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -141,7 +141,7 @@ func (b *EndpointSliceApplyConfiguration) WithUID(value types.UID) *EndpointSlic
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithResourceVersion(value string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -150,25 +150,25 @@ func (b *EndpointSliceApplyConfiguration) WithResourceVersion(value string) *End
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithGeneration(value int64) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *EndpointSliceApplyConfiguration) WithCreationTimestamp(value metav1.Time) *EndpointSliceApplyConfiguration {
    +func (b *EndpointSliceApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *EndpointSliceApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *EndpointSliceApplyConfiguration {
    +func (b *EndpointSliceApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -177,7 +177,7 @@ func (b *EndpointSliceApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -187,11 +187,11 @@ func (b *EndpointSliceApplyConfiguration) WithDeletionGracePeriodSeconds(value i
     // overwriting an existing map entries in Labels field with the same key.
     func (b *EndpointSliceApplyConfiguration) WithLabels(entries map[string]string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -202,11 +202,11 @@ func (b *EndpointSliceApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *EndpointSliceApplyConfiguration) WithAnnotations(entries map[string]string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -214,13 +214,13 @@ func (b *EndpointSliceApplyConfiguration) WithAnnotations(entries map[string]str
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *EndpointSliceApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *EndpointSliceApplyConfiguration {
    +func (b *EndpointSliceApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -231,14 +231,14 @@ func (b *EndpointSliceApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     func (b *EndpointSliceApplyConfiguration) WithFinalizers(values ...string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *EndpointSliceApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -275,3 +275,9 @@ func (b *EndpointSliceApplyConfiguration) WithPorts(values ...*EndpointPortApply
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *EndpointSliceApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/forzone.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/forzone.go
    index 192a5ad2e8ce..505d11ae2f13 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/forzone.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/forzone.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// ForZoneApplyConfiguration represents an declarative configuration of the ForZone type for use
    +// ForZoneApplyConfiguration represents a declarative configuration of the ForZone type for use
     // with apply.
     type ForZoneApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// ForZoneApplyConfiguration constructs an declarative configuration of the ForZone type for use with
    +// ForZoneApplyConfiguration constructs a declarative configuration of the ForZone type for use with
     // apply.
     func ForZone() *ForZoneApplyConfiguration {
     	return &ForZoneApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpoint.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpoint.go
    index 724c2d007c0b..5d87dae72ef2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpoint.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpoint.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// EndpointApplyConfiguration represents an declarative configuration of the Endpoint type for use
    +// EndpointApplyConfiguration represents a declarative configuration of the Endpoint type for use
     // with apply.
     type EndpointApplyConfiguration struct {
     	Addresses  []string                              `json:"addresses,omitempty"`
    @@ -34,7 +34,7 @@ type EndpointApplyConfiguration struct {
     	Hints      *EndpointHintsApplyConfiguration      `json:"hints,omitempty"`
     }
     
    -// EndpointApplyConfiguration constructs an declarative configuration of the Endpoint type for use with
    +// EndpointApplyConfiguration constructs a declarative configuration of the Endpoint type for use with
     // apply.
     func Endpoint() *EndpointApplyConfiguration {
     	return &EndpointApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointconditions.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointconditions.go
    index bc0438f90b6b..13f5fa557553 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointconditions.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointconditions.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// EndpointConditionsApplyConfiguration represents an declarative configuration of the EndpointConditions type for use
    +// EndpointConditionsApplyConfiguration represents a declarative configuration of the EndpointConditions type for use
     // with apply.
     type EndpointConditionsApplyConfiguration struct {
     	Ready       *bool `json:"ready,omitempty"`
    @@ -26,7 +26,7 @@ type EndpointConditionsApplyConfiguration struct {
     	Terminating *bool `json:"terminating,omitempty"`
     }
     
    -// EndpointConditionsApplyConfiguration constructs an declarative configuration of the EndpointConditions type for use with
    +// EndpointConditionsApplyConfiguration constructs a declarative configuration of the EndpointConditions type for use with
     // apply.
     func EndpointConditions() *EndpointConditionsApplyConfiguration {
     	return &EndpointConditionsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointhints.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointhints.go
    index 41d80206b3b9..99f69027a800 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointhints.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointhints.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// EndpointHintsApplyConfiguration represents an declarative configuration of the EndpointHints type for use
    +// EndpointHintsApplyConfiguration represents a declarative configuration of the EndpointHints type for use
     // with apply.
     type EndpointHintsApplyConfiguration struct {
     	ForZones []ForZoneApplyConfiguration `json:"forZones,omitempty"`
     }
     
    -// EndpointHintsApplyConfiguration constructs an declarative configuration of the EndpointHints type for use with
    +// EndpointHintsApplyConfiguration constructs a declarative configuration of the EndpointHints type for use with
     // apply.
     func EndpointHints() *EndpointHintsApplyConfiguration {
     	return &EndpointHintsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointport.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointport.go
    index 9a3a31b965ac..07cfc684b25e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointport.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointport.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// EndpointPortApplyConfiguration represents an declarative configuration of the EndpointPort type for use
    +// EndpointPortApplyConfiguration represents a declarative configuration of the EndpointPort type for use
     // with apply.
     type EndpointPortApplyConfiguration struct {
     	Name        *string      `json:"name,omitempty"`
    @@ -31,7 +31,7 @@ type EndpointPortApplyConfiguration struct {
     	AppProtocol *string      `json:"appProtocol,omitempty"`
     }
     
    -// EndpointPortApplyConfiguration constructs an declarative configuration of the EndpointPort type for use with
    +// EndpointPortApplyConfiguration constructs a declarative configuration of the EndpointPort type for use with
     // apply.
     func EndpointPort() *EndpointPortApplyConfiguration {
     	return &EndpointPortApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointslice.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointslice.go
    index 74a24773ccd5..46133ea32474 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointslice.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointslice.go
    @@ -19,7 +19,7 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/discovery/v1beta1"
    +	discoveryv1beta1 "k8s.io/api/discovery/v1beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    @@ -27,17 +27,17 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// EndpointSliceApplyConfiguration represents an declarative configuration of the EndpointSlice type for use
    +// EndpointSliceApplyConfiguration represents a declarative configuration of the EndpointSlice type for use
     // with apply.
     type EndpointSliceApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
     	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	AddressType                      *v1beta1.AddressType             `json:"addressType,omitempty"`
    +	AddressType                      *discoveryv1beta1.AddressType    `json:"addressType,omitempty"`
     	Endpoints                        []EndpointApplyConfiguration     `json:"endpoints,omitempty"`
     	Ports                            []EndpointPortApplyConfiguration `json:"ports,omitempty"`
     }
     
    -// EndpointSlice constructs an declarative configuration of the EndpointSlice type for use with
    +// EndpointSlice constructs a declarative configuration of the EndpointSlice type for use with
     // apply.
     func EndpointSlice(name, namespace string) *EndpointSliceApplyConfiguration {
     	b := &EndpointSliceApplyConfiguration{}
    @@ -59,18 +59,18 @@ func EndpointSlice(name, namespace string) *EndpointSliceApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractEndpointSlice(endpointSlice *v1beta1.EndpointSlice, fieldManager string) (*EndpointSliceApplyConfiguration, error) {
    +func ExtractEndpointSlice(endpointSlice *discoveryv1beta1.EndpointSlice, fieldManager string) (*EndpointSliceApplyConfiguration, error) {
     	return extractEndpointSlice(endpointSlice, fieldManager, "")
     }
     
     // ExtractEndpointSliceStatus is the same as ExtractEndpointSlice except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractEndpointSliceStatus(endpointSlice *v1beta1.EndpointSlice, fieldManager string) (*EndpointSliceApplyConfiguration, error) {
    +func ExtractEndpointSliceStatus(endpointSlice *discoveryv1beta1.EndpointSlice, fieldManager string) (*EndpointSliceApplyConfiguration, error) {
     	return extractEndpointSlice(endpointSlice, fieldManager, "status")
     }
     
    -func extractEndpointSlice(endpointSlice *v1beta1.EndpointSlice, fieldManager string, subresource string) (*EndpointSliceApplyConfiguration, error) {
    +func extractEndpointSlice(endpointSlice *discoveryv1beta1.EndpointSlice, fieldManager string, subresource string) (*EndpointSliceApplyConfiguration, error) {
     	b := &EndpointSliceApplyConfiguration{}
     	err := managedfields.ExtractInto(endpointSlice, internal.Parser().Type("io.k8s.api.discovery.v1beta1.EndpointSlice"), fieldManager, b, subresource)
     	if err != nil {
    @@ -88,7 +88,7 @@ func extractEndpointSlice(endpointSlice *v1beta1.EndpointSlice, fieldManager str
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithKind(value string) *EndpointSliceApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *EndpointSliceApplyConfiguration) WithKind(value string) *EndpointSliceA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithAPIVersion(value string) *EndpointSliceApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *EndpointSliceApplyConfiguration) WithAPIVersion(value string) *Endpoint
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithName(value string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *EndpointSliceApplyConfiguration) WithName(value string) *EndpointSliceA
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithGenerateName(value string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *EndpointSliceApplyConfiguration) WithGenerateName(value string) *Endpoi
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithNamespace(value string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -132,7 +132,7 @@ func (b *EndpointSliceApplyConfiguration) WithNamespace(value string) *EndpointS
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithUID(value types.UID) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -141,7 +141,7 @@ func (b *EndpointSliceApplyConfiguration) WithUID(value types.UID) *EndpointSlic
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithResourceVersion(value string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -150,7 +150,7 @@ func (b *EndpointSliceApplyConfiguration) WithResourceVersion(value string) *End
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithGeneration(value int64) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -159,7 +159,7 @@ func (b *EndpointSliceApplyConfiguration) WithGeneration(value int64) *EndpointS
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithCreationTimestamp(value metav1.Time) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -168,7 +168,7 @@ func (b *EndpointSliceApplyConfiguration) WithCreationTimestamp(value metav1.Tim
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -177,7 +177,7 @@ func (b *EndpointSliceApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *EndpointSliceApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -187,11 +187,11 @@ func (b *EndpointSliceApplyConfiguration) WithDeletionGracePeriodSeconds(value i
     // overwriting an existing map entries in Labels field with the same key.
     func (b *EndpointSliceApplyConfiguration) WithLabels(entries map[string]string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -202,11 +202,11 @@ func (b *EndpointSliceApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *EndpointSliceApplyConfiguration) WithAnnotations(entries map[string]string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -220,7 +220,7 @@ func (b *EndpointSliceApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -231,7 +231,7 @@ func (b *EndpointSliceApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     func (b *EndpointSliceApplyConfiguration) WithFinalizers(values ...string) *EndpointSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -245,7 +245,7 @@ func (b *EndpointSliceApplyConfiguration) ensureObjectMetaApplyConfigurationExis
     // WithAddressType sets the AddressType field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the AddressType field is set to the value of the last call.
    -func (b *EndpointSliceApplyConfiguration) WithAddressType(value v1beta1.AddressType) *EndpointSliceApplyConfiguration {
    +func (b *EndpointSliceApplyConfiguration) WithAddressType(value discoveryv1beta1.AddressType) *EndpointSliceApplyConfiguration {
     	b.AddressType = &value
     	return b
     }
    @@ -275,3 +275,9 @@ func (b *EndpointSliceApplyConfiguration) WithPorts(values ...*EndpointPortApply
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *EndpointSliceApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/forzone.go b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/forzone.go
    index 4d1455ed3849..4af09cc49bbf 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/forzone.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/forzone.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// ForZoneApplyConfiguration represents an declarative configuration of the ForZone type for use
    +// ForZoneApplyConfiguration represents a declarative configuration of the ForZone type for use
     // with apply.
     type ForZoneApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// ForZoneApplyConfiguration constructs an declarative configuration of the ForZone type for use with
    +// ForZoneApplyConfiguration constructs a declarative configuration of the ForZone type for use with
     // apply.
     func ForZone() *ForZoneApplyConfiguration {
     	return &ForZoneApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/doc.go b/vendor/k8s.io/client-go/applyconfigurations/doc.go
    new file mode 100644
    index 000000000000..ac426c60754e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/doc.go
    @@ -0,0 +1,151 @@
    +/*
    +Copyright 2021 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +/*
    +Package applyconfigurations provides typesafe go representations of the apply
    +configurations that are used to constructs Server-side Apply requests.
    +
    +# Basics
    +
    +The Apply functions in the typed client (see the k8s.io/client-go/kubernetes/typed packages) offer
    +a direct and typesafe way of calling Server-side Apply. Each Apply function takes an "apply
    +configuration" type as an argument, which is a structured representation of an Apply request. For
    +example:
    +
    +	import (
    +	     ...
    +	     v1ac "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    +	)
    +	hpaApplyConfig := v1ac.HorizontalPodAutoscaler(autoscalerName, ns).
    +	     WithSpec(v1ac.HorizontalPodAutoscalerSpec().
    +	              WithMinReplicas(0)
    +	     )
    +	return hpav1client.Apply(ctx, hpaApplyConfig, metav1.ApplyOptions{FieldManager: "mycontroller", Force: true})
    +
    +Note in this example that HorizontalPodAutoscaler is imported from an "applyconfigurations"
    +package. Each "apply configuration" type represents the same Kubernetes object kind as the
    +corresponding go struct, but where all fields are pointers to make them optional, allowing apply
    +requests to be accurately represented. For example, this when the apply configuration in the above
    +example is marshalled to YAML, it produces:
    +
    +	apiVersion: autoscaling/v1
    +	kind: HorizontalPodAutoscaler
    +	metadata:
    +	    name: myHPA
    +	    namespace: myNamespace
    +	spec:
    +	    minReplicas: 0
    +
    +To understand why this is needed, the above YAML cannot be produced by the
    +v1.HorizontalPodAutoscaler go struct. Take for example:
    +
    +	hpa := v1.HorizontalPodAutoscaler{
    +	     TypeMeta: metav1.TypeMeta{
    +	              APIVersion: "autoscaling/v1",
    +	              Kind:       "HorizontalPodAutoscaler",
    +	     },
    +	     ObjectMeta: ObjectMeta{
    +	              Namespace: ns,
    +	              Name:      autoscalerName,
    +	     },
    +	     Spec: v1.HorizontalPodAutoscalerSpec{
    +	              MinReplicas: pointer.Int32Ptr(0),
    +	     },
    +	}
    +
    +The above code attempts to declare the same apply configuration as shown in the previous examples,
    +but when marshalled to YAML, produces:
    +
    +	kind: HorizontalPodAutoscaler
    +	apiVersion: autoscaling/v1
    +	metadata:
    +	  name: myHPA
    +	  namespace: myNamespace
    +	  creationTimestamp: null
    +	spec:
    +	  scaleTargetRef:
    +	    kind: ""
    +	    name: ""
    +	  minReplicas: 0
    +	  maxReplicas: 0
    +
    +Which, among other things, contains spec.maxReplicas set to 0. This is almost certainly not what
    +the caller intended (the intended apply configuration says nothing about the maxReplicas field),
    +and could have serious consequences on a production system: it directs the autoscaler to downscale
    +to zero pods. The problem here originates from the fact that the go structs contain required fields
    +that are zero valued if not set explicitly. The go structs work as intended for create and update
    +operations, but are fundamentally incompatible with apply, which is why we have introduced the
    +generated "apply configuration" types.
    +
    +The "apply configurations" also have convenience With functions that make it easier to
    +build apply requests. This allows developers to set fields without having to deal with the fact that
    +all the fields in the "apply configuration" types are pointers, and are inconvenient to set using
    +go. For example "MinReplicas: &0" is not legal go code, so without the With functions, developers
    +would work around this problem by using a library, .e.g. "MinReplicas: pointer.Int32Ptr(0)", but
    +string enumerations like corev1.Protocol are still a problem since they cannot be supported by a
    +general purpose library. In addition to the convenience, the With functions also isolate
    +developers from the underlying representation, which makes it safer for the underlying
    +representation to be changed to support additional features in the future.
    +
    +# Controller Support
    +
    +The new client-go support makes it much easier to use Server-side Apply in controllers, by either of
    +two mechanisms.
    +
    +Mechanism 1:
    +
    +When authoring new controllers to use Server-side Apply, a good approach is to have the controller
    +recreate the apply configuration for an object each time it reconciles that object.  This ensures
    +that the controller fully reconciles all the fields that it is responsible for. Controllers
    +typically should unconditionally set all the fields they own by setting "Force: true" in the
    +ApplyOptions. Controllers must also provide a FieldManager name that is unique to the
    +reconciliation loop that apply is called from.
    +
    +When upgrading existing controllers to use Server-side Apply the same approach often works
    +well--migrate the controllers to recreate the apply configuration each time it reconciles any
    +object. For cases where this does not work well, see Mechanism 2.
    +
    +Mechanism 2:
    +
    +When upgrading existing controllers to use Server-side Apply, the controller might have multiple
    +code paths that update different parts of an object depending on various conditions. Migrating a
    +controller like this to Server-side Apply can be risky because if the controller forgets to include
    +any fields in an apply configuration that is included in a previous apply request, a field can be
    +accidentally deleted. For such cases, an alternative to mechanism 1 is to replace any controller
    +reconciliation code that performs a "read/modify-in-place/update" (or patch) workflow with a
    +"extract/modify-in-place/apply" workflow. Here's an example of the new workflow:
    +
    +	    fieldMgr := "my-field-manager"
    +	    deploymentClient := clientset.AppsV1().Deployments("default")
    +	    // read, could also be read from a shared informer
    +	    deployment, err := deploymentClient.Get(ctx, "example-deployment", metav1.GetOptions{})
    +	    if err != nil {
    +	      // handle error
    +	    }
    +	    // extract
    +	    deploymentApplyConfig, err := appsv1ac.ExtractDeployment(deployment, fieldMgr)
    +	    if err != nil {
    +	      // handle error
    +	    }
    +	    // modify-in-place
    +	    deploymentApplyConfig.Spec.Template.Spec.WithContainers(corev1ac.Container().
    +		WithName("modify-slice").
    +		WithImage("nginx:1.14.2"),
    +	    )
    +	    // apply
    +	    applied, err := deploymentClient.Apply(ctx, extractedDeployment, metav1.ApplyOptions{FieldManager: fieldMgr})
    +*/
    +package applyconfigurations // import "k8s.io/client-go/applyconfigurations"
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/events/v1/event.go b/vendor/k8s.io/client-go/applyconfigurations/events/v1/event.go
    index 767e3dfc7315..64896c3d845a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/events/v1/event.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/events/v1/event.go
    @@ -19,37 +19,37 @@ limitations under the License.
     package v1
     
     import (
    -	apieventsv1 "k8s.io/api/events/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	eventsv1 "k8s.io/api/events/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// EventApplyConfiguration represents an declarative configuration of the Event type for use
    +// EventApplyConfiguration represents a declarative configuration of the Event type for use
     // with apply.
     type EventApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	EventTime                        *metav1.MicroTime                         `json:"eventTime,omitempty"`
    -	Series                           *EventSeriesApplyConfiguration            `json:"series,omitempty"`
    -	ReportingController              *string                                   `json:"reportingController,omitempty"`
    -	ReportingInstance                *string                                   `json:"reportingInstance,omitempty"`
    -	Action                           *string                                   `json:"action,omitempty"`
    -	Reason                           *string                                   `json:"reason,omitempty"`
    -	Regarding                        *corev1.ObjectReferenceApplyConfiguration `json:"regarding,omitempty"`
    -	Related                          *corev1.ObjectReferenceApplyConfiguration `json:"related,omitempty"`
    -	Note                             *string                                   `json:"note,omitempty"`
    -	Type                             *string                                   `json:"type,omitempty"`
    -	DeprecatedSource                 *corev1.EventSourceApplyConfiguration     `json:"deprecatedSource,omitempty"`
    -	DeprecatedFirstTimestamp         *metav1.Time                              `json:"deprecatedFirstTimestamp,omitempty"`
    -	DeprecatedLastTimestamp          *metav1.Time                              `json:"deprecatedLastTimestamp,omitempty"`
    -	DeprecatedCount                  *int32                                    `json:"deprecatedCount,omitempty"`
    -}
    -
    -// Event constructs an declarative configuration of the Event type for use with
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	EventTime                            *apismetav1.MicroTime                     `json:"eventTime,omitempty"`
    +	Series                               *EventSeriesApplyConfiguration            `json:"series,omitempty"`
    +	ReportingController                  *string                                   `json:"reportingController,omitempty"`
    +	ReportingInstance                    *string                                   `json:"reportingInstance,omitempty"`
    +	Action                               *string                                   `json:"action,omitempty"`
    +	Reason                               *string                                   `json:"reason,omitempty"`
    +	Regarding                            *corev1.ObjectReferenceApplyConfiguration `json:"regarding,omitempty"`
    +	Related                              *corev1.ObjectReferenceApplyConfiguration `json:"related,omitempty"`
    +	Note                                 *string                                   `json:"note,omitempty"`
    +	Type                                 *string                                   `json:"type,omitempty"`
    +	DeprecatedSource                     *corev1.EventSourceApplyConfiguration     `json:"deprecatedSource,omitempty"`
    +	DeprecatedFirstTimestamp             *apismetav1.Time                          `json:"deprecatedFirstTimestamp,omitempty"`
    +	DeprecatedLastTimestamp              *apismetav1.Time                          `json:"deprecatedLastTimestamp,omitempty"`
    +	DeprecatedCount                      *int32                                    `json:"deprecatedCount,omitempty"`
    +}
    +
    +// Event constructs a declarative configuration of the Event type for use with
     // apply.
     func Event(name, namespace string) *EventApplyConfiguration {
     	b := &EventApplyConfiguration{}
    @@ -71,18 +71,18 @@ func Event(name, namespace string) *EventApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractEvent(event *apieventsv1.Event, fieldManager string) (*EventApplyConfiguration, error) {
    +func ExtractEvent(event *eventsv1.Event, fieldManager string) (*EventApplyConfiguration, error) {
     	return extractEvent(event, fieldManager, "")
     }
     
     // ExtractEventStatus is the same as ExtractEvent except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractEventStatus(event *apieventsv1.Event, fieldManager string) (*EventApplyConfiguration, error) {
    +func ExtractEventStatus(event *eventsv1.Event, fieldManager string) (*EventApplyConfiguration, error) {
     	return extractEvent(event, fieldManager, "status")
     }
     
    -func extractEvent(event *apieventsv1.Event, fieldManager string, subresource string) (*EventApplyConfiguration, error) {
    +func extractEvent(event *eventsv1.Event, fieldManager string, subresource string) (*EventApplyConfiguration, error) {
     	b := &EventApplyConfiguration{}
     	err := managedfields.ExtractInto(event, internal.Parser().Type("io.k8s.api.events.v1.Event"), fieldManager, b, subresource)
     	if err != nil {
    @@ -100,7 +100,7 @@ func extractEvent(event *apieventsv1.Event, fieldManager string, subresource str
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithKind(value string) *EventApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -108,7 +108,7 @@ func (b *EventApplyConfiguration) WithKind(value string) *EventApplyConfiguratio
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithAPIVersion(value string) *EventApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -117,7 +117,7 @@ func (b *EventApplyConfiguration) WithAPIVersion(value string) *EventApplyConfig
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithName(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -126,7 +126,7 @@ func (b *EventApplyConfiguration) WithName(value string) *EventApplyConfiguratio
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithGenerateName(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -135,7 +135,7 @@ func (b *EventApplyConfiguration) WithGenerateName(value string) *EventApplyConf
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithNamespace(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -144,7 +144,7 @@ func (b *EventApplyConfiguration) WithNamespace(value string) *EventApplyConfigu
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithUID(value types.UID) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -153,7 +153,7 @@ func (b *EventApplyConfiguration) WithUID(value types.UID) *EventApplyConfigurat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithResourceVersion(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -162,25 +162,25 @@ func (b *EventApplyConfiguration) WithResourceVersion(value string) *EventApplyC
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithGeneration(value int64) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *EventApplyConfiguration) WithCreationTimestamp(value metav1.Time) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *EventApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -189,7 +189,7 @@ func (b *EventApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Even
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -199,11 +199,11 @@ func (b *EventApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *E
     // overwriting an existing map entries in Labels field with the same key.
     func (b *EventApplyConfiguration) WithLabels(entries map[string]string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -214,11 +214,11 @@ func (b *EventApplyConfiguration) WithLabels(entries map[string]string) *EventAp
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *EventApplyConfiguration) WithAnnotations(entries map[string]string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -226,13 +226,13 @@ func (b *EventApplyConfiguration) WithAnnotations(entries map[string]string) *Ev
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *EventApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -243,21 +243,21 @@ func (b *EventApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     func (b *EventApplyConfiguration) WithFinalizers(values ...string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *EventApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
     // WithEventTime sets the EventTime field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the EventTime field is set to the value of the last call.
    -func (b *EventApplyConfiguration) WithEventTime(value metav1.MicroTime) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithEventTime(value apismetav1.MicroTime) *EventApplyConfiguration {
     	b.EventTime = &value
     	return b
     }
    @@ -345,7 +345,7 @@ func (b *EventApplyConfiguration) WithDeprecatedSource(value *corev1.EventSource
     // WithDeprecatedFirstTimestamp sets the DeprecatedFirstTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeprecatedFirstTimestamp field is set to the value of the last call.
    -func (b *EventApplyConfiguration) WithDeprecatedFirstTimestamp(value metav1.Time) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithDeprecatedFirstTimestamp(value apismetav1.Time) *EventApplyConfiguration {
     	b.DeprecatedFirstTimestamp = &value
     	return b
     }
    @@ -353,7 +353,7 @@ func (b *EventApplyConfiguration) WithDeprecatedFirstTimestamp(value metav1.Time
     // WithDeprecatedLastTimestamp sets the DeprecatedLastTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeprecatedLastTimestamp field is set to the value of the last call.
    -func (b *EventApplyConfiguration) WithDeprecatedLastTimestamp(value metav1.Time) *EventApplyConfiguration {
    +func (b *EventApplyConfiguration) WithDeprecatedLastTimestamp(value apismetav1.Time) *EventApplyConfiguration {
     	b.DeprecatedLastTimestamp = &value
     	return b
     }
    @@ -365,3 +365,9 @@ func (b *EventApplyConfiguration) WithDeprecatedCount(value int32) *EventApplyCo
     	b.DeprecatedCount = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *EventApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/events/v1/eventseries.go b/vendor/k8s.io/client-go/applyconfigurations/events/v1/eventseries.go
    index e66fb412712b..c90954bccbd8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/events/v1/eventseries.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/events/v1/eventseries.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// EventSeriesApplyConfiguration represents an declarative configuration of the EventSeries type for use
    +// EventSeriesApplyConfiguration represents a declarative configuration of the EventSeries type for use
     // with apply.
     type EventSeriesApplyConfiguration struct {
    -	Count            *int32        `json:"count,omitempty"`
    -	LastObservedTime *v1.MicroTime `json:"lastObservedTime,omitempty"`
    +	Count            *int32            `json:"count,omitempty"`
    +	LastObservedTime *metav1.MicroTime `json:"lastObservedTime,omitempty"`
     }
     
    -// EventSeriesApplyConfiguration constructs an declarative configuration of the EventSeries type for use with
    +// EventSeriesApplyConfiguration constructs a declarative configuration of the EventSeries type for use with
     // apply.
     func EventSeries() *EventSeriesApplyConfiguration {
     	return &EventSeriesApplyConfiguration{}
    @@ -46,7 +46,7 @@ func (b *EventSeriesApplyConfiguration) WithCount(value int32) *EventSeriesApply
     // WithLastObservedTime sets the LastObservedTime field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the LastObservedTime field is set to the value of the last call.
    -func (b *EventSeriesApplyConfiguration) WithLastObservedTime(value v1.MicroTime) *EventSeriesApplyConfiguration {
    +func (b *EventSeriesApplyConfiguration) WithLastObservedTime(value metav1.MicroTime) *EventSeriesApplyConfiguration {
     	b.LastObservedTime = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/events/v1beta1/event.go b/vendor/k8s.io/client-go/applyconfigurations/events/v1beta1/event.go
    index cfc4a851f3a8..dc302e395a13 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/events/v1beta1/event.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/events/v1beta1/event.go
    @@ -28,7 +28,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// EventApplyConfiguration represents an declarative configuration of the Event type for use
    +// EventApplyConfiguration represents a declarative configuration of the Event type for use
     // with apply.
     type EventApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -49,7 +49,7 @@ type EventApplyConfiguration struct {
     	DeprecatedCount                  *int32                                    `json:"deprecatedCount,omitempty"`
     }
     
    -// Event constructs an declarative configuration of the Event type for use with
    +// Event constructs a declarative configuration of the Event type for use with
     // apply.
     func Event(name, namespace string) *EventApplyConfiguration {
     	b := &EventApplyConfiguration{}
    @@ -100,7 +100,7 @@ func extractEvent(event *eventsv1beta1.Event, fieldManager string, subresource s
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithKind(value string) *EventApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -108,7 +108,7 @@ func (b *EventApplyConfiguration) WithKind(value string) *EventApplyConfiguratio
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithAPIVersion(value string) *EventApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -117,7 +117,7 @@ func (b *EventApplyConfiguration) WithAPIVersion(value string) *EventApplyConfig
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithName(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -126,7 +126,7 @@ func (b *EventApplyConfiguration) WithName(value string) *EventApplyConfiguratio
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithGenerateName(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -135,7 +135,7 @@ func (b *EventApplyConfiguration) WithGenerateName(value string) *EventApplyConf
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithNamespace(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -144,7 +144,7 @@ func (b *EventApplyConfiguration) WithNamespace(value string) *EventApplyConfigu
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithUID(value types.UID) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -153,7 +153,7 @@ func (b *EventApplyConfiguration) WithUID(value types.UID) *EventApplyConfigurat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithResourceVersion(value string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -162,7 +162,7 @@ func (b *EventApplyConfiguration) WithResourceVersion(value string) *EventApplyC
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithGeneration(value int64) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -171,7 +171,7 @@ func (b *EventApplyConfiguration) WithGeneration(value int64) *EventApplyConfigu
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithCreationTimestamp(value metav1.Time) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -180,7 +180,7 @@ func (b *EventApplyConfiguration) WithCreationTimestamp(value metav1.Time) *Even
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -189,7 +189,7 @@ func (b *EventApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Even
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *EventApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -199,11 +199,11 @@ func (b *EventApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *E
     // overwriting an existing map entries in Labels field with the same key.
     func (b *EventApplyConfiguration) WithLabels(entries map[string]string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -214,11 +214,11 @@ func (b *EventApplyConfiguration) WithLabels(entries map[string]string) *EventAp
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *EventApplyConfiguration) WithAnnotations(entries map[string]string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -232,7 +232,7 @@ func (b *EventApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -243,7 +243,7 @@ func (b *EventApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     func (b *EventApplyConfiguration) WithFinalizers(values ...string) *EventApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -365,3 +365,9 @@ func (b *EventApplyConfiguration) WithDeprecatedCount(value int32) *EventApplyCo
     	b.DeprecatedCount = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *EventApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/events/v1beta1/eventseries.go b/vendor/k8s.io/client-go/applyconfigurations/events/v1beta1/eventseries.go
    index 640a265172bd..75d936e8be85 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/events/v1beta1/eventseries.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/events/v1beta1/eventseries.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// EventSeriesApplyConfiguration represents an declarative configuration of the EventSeries type for use
    +// EventSeriesApplyConfiguration represents a declarative configuration of the EventSeries type for use
     // with apply.
     type EventSeriesApplyConfiguration struct {
     	Count            *int32        `json:"count,omitempty"`
     	LastObservedTime *v1.MicroTime `json:"lastObservedTime,omitempty"`
     }
     
    -// EventSeriesApplyConfiguration constructs an declarative configuration of the EventSeries type for use with
    +// EventSeriesApplyConfiguration constructs a declarative configuration of the EventSeries type for use with
     // apply.
     func EventSeries() *EventSeriesApplyConfiguration {
     	return &EventSeriesApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonset.go
    index eae399d323f4..a75e38bfb730 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonset.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DaemonSetApplyConfiguration represents an declarative configuration of the DaemonSet type for use
    +// DaemonSetApplyConfiguration represents a declarative configuration of the DaemonSet type for use
     // with apply.
     type DaemonSetApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type DaemonSetApplyConfiguration struct {
     	Status                           *DaemonSetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// DaemonSet constructs an declarative configuration of the DaemonSet type for use with
    +// DaemonSet constructs a declarative configuration of the DaemonSet type for use with
     // apply.
     func DaemonSet(name, namespace string) *DaemonSetApplyConfiguration {
     	b := &DaemonSetApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractDaemonSet(daemonSet *extensionsv1beta1.DaemonSet, fieldManager strin
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithKind(value string) *DaemonSetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *DaemonSetApplyConfiguration) WithKind(value string) *DaemonSetApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithAPIVersion(value string) *DaemonSetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *DaemonSetApplyConfiguration) WithAPIVersion(value string) *DaemonSetApp
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithName(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *DaemonSetApplyConfiguration) WithName(value string) *DaemonSetApplyConf
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithGenerateName(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *DaemonSetApplyConfiguration) WithGenerateName(value string) *DaemonSetA
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithNamespace(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *DaemonSetApplyConfiguration) WithNamespace(value string) *DaemonSetAppl
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithUID(value types.UID) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *DaemonSetApplyConfiguration) WithUID(value types.UID) *DaemonSetApplyCo
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithResourceVersion(value string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *DaemonSetApplyConfiguration) WithResourceVersion(value string) *DaemonS
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithGeneration(value int64) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *DaemonSetApplyConfiguration) WithGeneration(value int64) *DaemonSetAppl
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *DaemonSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *DaemonSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *DaemonSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *DaemonSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64
     // overwriting an existing map entries in Labels field with the same key.
     func (b *DaemonSetApplyConfiguration) WithLabels(entries map[string]string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *DaemonSetApplyConfiguration) WithLabels(entries map[string]string) *Dae
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *DaemonSetApplyConfiguration) WithAnnotations(entries map[string]string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *DaemonSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *DaemonSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     func (b *DaemonSetApplyConfiguration) WithFinalizers(values ...string) *DaemonSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *DaemonSetApplyConfiguration) WithStatus(value *DaemonSetStatusApplyConf
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *DaemonSetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetcondition.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetcondition.go
    index bbf718f0f243..0312a3099427 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetcondition.go
    @@ -20,21 +20,21 @@ package v1beta1
     
     import (
     	v1 "k8s.io/api/core/v1"
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// DaemonSetConditionApplyConfiguration represents an declarative configuration of the DaemonSetCondition type for use
    +// DaemonSetConditionApplyConfiguration represents a declarative configuration of the DaemonSetCondition type for use
     // with apply.
     type DaemonSetConditionApplyConfiguration struct {
    -	Type               *v1beta1.DaemonSetConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus             `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                    `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                         `json:"reason,omitempty"`
    -	Message            *string                         `json:"message,omitempty"`
    +	Type               *extensionsv1beta1.DaemonSetConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                       `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                              `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                   `json:"reason,omitempty"`
    +	Message            *string                                   `json:"message,omitempty"`
     }
     
    -// DaemonSetConditionApplyConfiguration constructs an declarative configuration of the DaemonSetCondition type for use with
    +// DaemonSetConditionApplyConfiguration constructs a declarative configuration of the DaemonSetCondition type for use with
     // apply.
     func DaemonSetCondition() *DaemonSetConditionApplyConfiguration {
     	return &DaemonSetConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func DaemonSetCondition() *DaemonSetConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DaemonSetConditionApplyConfiguration) WithType(value v1beta1.DaemonSetConditionType) *DaemonSetConditionApplyConfiguration {
    +func (b *DaemonSetConditionApplyConfiguration) WithType(value extensionsv1beta1.DaemonSetConditionType) *DaemonSetConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetspec.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetspec.go
    index b5d7a0c161d5..d628969187a9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetspec.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DaemonSetSpecApplyConfiguration represents an declarative configuration of the DaemonSetSpec type for use
    +// DaemonSetSpecApplyConfiguration represents a declarative configuration of the DaemonSetSpec type for use
     // with apply.
     type DaemonSetSpecApplyConfiguration struct {
     	Selector             *v1.LabelSelectorApplyConfiguration        `json:"selector,omitempty"`
    @@ -34,7 +34,7 @@ type DaemonSetSpecApplyConfiguration struct {
     	RevisionHistoryLimit *int32                                     `json:"revisionHistoryLimit,omitempty"`
     }
     
    -// DaemonSetSpecApplyConfiguration constructs an declarative configuration of the DaemonSetSpec type for use with
    +// DaemonSetSpecApplyConfiguration constructs a declarative configuration of the DaemonSetSpec type for use with
     // apply.
     func DaemonSetSpec() *DaemonSetSpecApplyConfiguration {
     	return &DaemonSetSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetstatus.go
    index be6b3b285305..373f9ef97a76 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// DaemonSetStatusApplyConfiguration represents an declarative configuration of the DaemonSetStatus type for use
    +// DaemonSetStatusApplyConfiguration represents a declarative configuration of the DaemonSetStatus type for use
     // with apply.
     type DaemonSetStatusApplyConfiguration struct {
     	CurrentNumberScheduled *int32                                 `json:"currentNumberScheduled,omitempty"`
    @@ -33,7 +33,7 @@ type DaemonSetStatusApplyConfiguration struct {
     	Conditions             []DaemonSetConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// DaemonSetStatusApplyConfiguration constructs an declarative configuration of the DaemonSetStatus type for use with
    +// DaemonSetStatusApplyConfiguration constructs a declarative configuration of the DaemonSetStatus type for use with
     // apply.
     func DaemonSetStatus() *DaemonSetStatusApplyConfiguration {
     	return &DaemonSetStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetupdatestrategy.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetupdatestrategy.go
    index 2c827e62d478..d3403605f847 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetupdatestrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetupdatestrategy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     )
     
    -// DaemonSetUpdateStrategyApplyConfiguration represents an declarative configuration of the DaemonSetUpdateStrategy type for use
    +// DaemonSetUpdateStrategyApplyConfiguration represents a declarative configuration of the DaemonSetUpdateStrategy type for use
     // with apply.
     type DaemonSetUpdateStrategyApplyConfiguration struct {
    -	Type          *v1beta1.DaemonSetUpdateStrategyType      `json:"type,omitempty"`
    -	RollingUpdate *RollingUpdateDaemonSetApplyConfiguration `json:"rollingUpdate,omitempty"`
    +	Type          *extensionsv1beta1.DaemonSetUpdateStrategyType `json:"type,omitempty"`
    +	RollingUpdate *RollingUpdateDaemonSetApplyConfiguration      `json:"rollingUpdate,omitempty"`
     }
     
    -// DaemonSetUpdateStrategyApplyConfiguration constructs an declarative configuration of the DaemonSetUpdateStrategy type for use with
    +// DaemonSetUpdateStrategyApplyConfiguration constructs a declarative configuration of the DaemonSetUpdateStrategy type for use with
     // apply.
     func DaemonSetUpdateStrategy() *DaemonSetUpdateStrategyApplyConfiguration {
     	return &DaemonSetUpdateStrategyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func DaemonSetUpdateStrategy() *DaemonSetUpdateStrategyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DaemonSetUpdateStrategyApplyConfiguration) WithType(value v1beta1.DaemonSetUpdateStrategyType) *DaemonSetUpdateStrategyApplyConfiguration {
    +func (b *DaemonSetUpdateStrategyApplyConfiguration) WithType(value extensionsv1beta1.DaemonSetUpdateStrategyType) *DaemonSetUpdateStrategyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deployment.go
    index 878083f82126..94fac18c6887 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deployment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deployment.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DeploymentApplyConfiguration represents an declarative configuration of the Deployment type for use
    +// DeploymentApplyConfiguration represents a declarative configuration of the Deployment type for use
     // with apply.
     type DeploymentApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type DeploymentApplyConfiguration struct {
     	Status                           *DeploymentStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Deployment constructs an declarative configuration of the Deployment type for use with
    +// Deployment constructs a declarative configuration of the Deployment type for use with
     // apply.
     func Deployment(name, namespace string) *DeploymentApplyConfiguration {
     	b := &DeploymentApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractDeployment(deployment *extensionsv1beta1.Deployment, fieldManager st
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithKind(value string) *DeploymentApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *DeploymentApplyConfiguration) WithKind(value string) *DeploymentApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithAPIVersion(value string) *DeploymentApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *DeploymentApplyConfiguration) WithAPIVersion(value string) *DeploymentA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithName(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *DeploymentApplyConfiguration) WithName(value string) *DeploymentApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithGenerateName(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *DeploymentApplyConfiguration) WithGenerateName(value string) *Deploymen
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithNamespace(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *DeploymentApplyConfiguration) WithNamespace(value string) *DeploymentAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithUID(value types.UID) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *DeploymentApplyConfiguration) WithUID(value types.UID) *DeploymentApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithResourceVersion(value string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *DeploymentApplyConfiguration) WithResourceVersion(value string) *Deploy
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithGeneration(value int64) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *DeploymentApplyConfiguration) WithGeneration(value int64) *DeploymentAp
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithCreationTimestamp(value metav1.Time) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *DeploymentApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *DeploymentApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *DeploymentApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *DeploymentApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *DeploymentApplyConfiguration) WithLabels(entries map[string]string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *DeploymentApplyConfiguration) WithLabels(entries map[string]string) *De
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *DeploymentApplyConfiguration) WithAnnotations(entries map[string]string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *DeploymentApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *DeploymentApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *DeploymentApplyConfiguration) WithFinalizers(values ...string) *DeploymentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *DeploymentApplyConfiguration) WithStatus(value *DeploymentStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *DeploymentApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentcondition.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentcondition.go
    index d8a214b7fca2..2b64508d9d25 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentcondition.go
    @@ -20,22 +20,22 @@ package v1beta1
     
     import (
     	v1 "k8s.io/api/core/v1"
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// DeploymentConditionApplyConfiguration represents an declarative configuration of the DeploymentCondition type for use
    +// DeploymentConditionApplyConfiguration represents a declarative configuration of the DeploymentCondition type for use
     // with apply.
     type DeploymentConditionApplyConfiguration struct {
    -	Type               *v1beta1.DeploymentConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus              `json:"status,omitempty"`
    -	LastUpdateTime     *metav1.Time                     `json:"lastUpdateTime,omitempty"`
    -	LastTransitionTime *metav1.Time                     `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                          `json:"reason,omitempty"`
    -	Message            *string                          `json:"message,omitempty"`
    +	Type               *extensionsv1beta1.DeploymentConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                        `json:"status,omitempty"`
    +	LastUpdateTime     *metav1.Time                               `json:"lastUpdateTime,omitempty"`
    +	LastTransitionTime *metav1.Time                               `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                    `json:"reason,omitempty"`
    +	Message            *string                                    `json:"message,omitempty"`
     }
     
    -// DeploymentConditionApplyConfiguration constructs an declarative configuration of the DeploymentCondition type for use with
    +// DeploymentConditionApplyConfiguration constructs a declarative configuration of the DeploymentCondition type for use with
     // apply.
     func DeploymentCondition() *DeploymentConditionApplyConfiguration {
     	return &DeploymentConditionApplyConfiguration{}
    @@ -44,7 +44,7 @@ func DeploymentCondition() *DeploymentConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DeploymentConditionApplyConfiguration) WithType(value v1beta1.DeploymentConditionType) *DeploymentConditionApplyConfiguration {
    +func (b *DeploymentConditionApplyConfiguration) WithType(value extensionsv1beta1.DeploymentConditionType) *DeploymentConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentspec.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentspec.go
    index 5e18476bdcab..5531c756f9de 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentspec.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// DeploymentSpecApplyConfiguration represents an declarative configuration of the DeploymentSpec type for use
    +// DeploymentSpecApplyConfiguration represents a declarative configuration of the DeploymentSpec type for use
     // with apply.
     type DeploymentSpecApplyConfiguration struct {
     	Replicas                *int32                                    `json:"replicas,omitempty"`
    @@ -37,7 +37,7 @@ type DeploymentSpecApplyConfiguration struct {
     	ProgressDeadlineSeconds *int32                                    `json:"progressDeadlineSeconds,omitempty"`
     }
     
    -// DeploymentSpecApplyConfiguration constructs an declarative configuration of the DeploymentSpec type for use with
    +// DeploymentSpecApplyConfiguration constructs a declarative configuration of the DeploymentSpec type for use with
     // apply.
     func DeploymentSpec() *DeploymentSpecApplyConfiguration {
     	return &DeploymentSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentstatus.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentstatus.go
    index f8d1cf5d2559..adc023a34dbb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// DeploymentStatusApplyConfiguration represents an declarative configuration of the DeploymentStatus type for use
    +// DeploymentStatusApplyConfiguration represents a declarative configuration of the DeploymentStatus type for use
     // with apply.
     type DeploymentStatusApplyConfiguration struct {
     	ObservedGeneration  *int64                                  `json:"observedGeneration,omitempty"`
    @@ -31,7 +31,7 @@ type DeploymentStatusApplyConfiguration struct {
     	CollisionCount      *int32                                  `json:"collisionCount,omitempty"`
     }
     
    -// DeploymentStatusApplyConfiguration constructs an declarative configuration of the DeploymentStatus type for use with
    +// DeploymentStatusApplyConfiguration constructs a declarative configuration of the DeploymentStatus type for use with
     // apply.
     func DeploymentStatus() *DeploymentStatusApplyConfiguration {
     	return &DeploymentStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentstrategy.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentstrategy.go
    index 7c17b407229d..b142b0deb07b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentstrategy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentstrategy.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     )
     
    -// DeploymentStrategyApplyConfiguration represents an declarative configuration of the DeploymentStrategy type for use
    +// DeploymentStrategyApplyConfiguration represents a declarative configuration of the DeploymentStrategy type for use
     // with apply.
     type DeploymentStrategyApplyConfiguration struct {
    -	Type          *v1beta1.DeploymentStrategyType            `json:"type,omitempty"`
    +	Type          *extensionsv1beta1.DeploymentStrategyType  `json:"type,omitempty"`
     	RollingUpdate *RollingUpdateDeploymentApplyConfiguration `json:"rollingUpdate,omitempty"`
     }
     
    -// DeploymentStrategyApplyConfiguration constructs an declarative configuration of the DeploymentStrategy type for use with
    +// DeploymentStrategyApplyConfiguration constructs a declarative configuration of the DeploymentStrategy type for use with
     // apply.
     func DeploymentStrategy() *DeploymentStrategyApplyConfiguration {
     	return &DeploymentStrategyApplyConfiguration{}
    @@ -38,7 +38,7 @@ func DeploymentStrategy() *DeploymentStrategyApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *DeploymentStrategyApplyConfiguration) WithType(value v1beta1.DeploymentStrategyType) *DeploymentStrategyApplyConfiguration {
    +func (b *DeploymentStrategyApplyConfiguration) WithType(value extensionsv1beta1.DeploymentStrategyType) *DeploymentStrategyApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/httpingresspath.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/httpingresspath.go
    index 361605d8cd87..32e0c8b1d211 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/httpingresspath.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/httpingresspath.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     )
     
    -// HTTPIngressPathApplyConfiguration represents an declarative configuration of the HTTPIngressPath type for use
    +// HTTPIngressPathApplyConfiguration represents a declarative configuration of the HTTPIngressPath type for use
     // with apply.
     type HTTPIngressPathApplyConfiguration struct {
     	Path     *string                           `json:"path,omitempty"`
    -	PathType *v1beta1.PathType                 `json:"pathType,omitempty"`
    +	PathType *extensionsv1beta1.PathType       `json:"pathType,omitempty"`
     	Backend  *IngressBackendApplyConfiguration `json:"backend,omitempty"`
     }
     
    -// HTTPIngressPathApplyConfiguration constructs an declarative configuration of the HTTPIngressPath type for use with
    +// HTTPIngressPathApplyConfiguration constructs a declarative configuration of the HTTPIngressPath type for use with
     // apply.
     func HTTPIngressPath() *HTTPIngressPathApplyConfiguration {
     	return &HTTPIngressPathApplyConfiguration{}
    @@ -47,7 +47,7 @@ func (b *HTTPIngressPathApplyConfiguration) WithPath(value string) *HTTPIngressP
     // WithPathType sets the PathType field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PathType field is set to the value of the last call.
    -func (b *HTTPIngressPathApplyConfiguration) WithPathType(value v1beta1.PathType) *HTTPIngressPathApplyConfiguration {
    +func (b *HTTPIngressPathApplyConfiguration) WithPathType(value extensionsv1beta1.PathType) *HTTPIngressPathApplyConfiguration {
     	b.PathType = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/httpingressrulevalue.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/httpingressrulevalue.go
    index 3137bc5eb04d..12454522374f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/httpingressrulevalue.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/httpingressrulevalue.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// HTTPIngressRuleValueApplyConfiguration represents an declarative configuration of the HTTPIngressRuleValue type for use
    +// HTTPIngressRuleValueApplyConfiguration represents a declarative configuration of the HTTPIngressRuleValue type for use
     // with apply.
     type HTTPIngressRuleValueApplyConfiguration struct {
     	Paths []HTTPIngressPathApplyConfiguration `json:"paths,omitempty"`
     }
     
    -// HTTPIngressRuleValueApplyConfiguration constructs an declarative configuration of the HTTPIngressRuleValue type for use with
    +// HTTPIngressRuleValueApplyConfiguration constructs a declarative configuration of the HTTPIngressRuleValue type for use with
     // apply.
     func HTTPIngressRuleValue() *HTTPIngressRuleValueApplyConfiguration {
     	return &HTTPIngressRuleValueApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingress.go
    index 46c541048d88..8cc05cc62c43 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingress.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingress.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// IngressApplyConfiguration represents an declarative configuration of the Ingress type for use
    +// IngressApplyConfiguration represents a declarative configuration of the Ingress type for use
     // with apply.
     type IngressApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type IngressApplyConfiguration struct {
     	Status                           *IngressStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Ingress constructs an declarative configuration of the Ingress type for use with
    +// Ingress constructs a declarative configuration of the Ingress type for use with
     // apply.
     func Ingress(name, namespace string) *IngressApplyConfiguration {
     	b := &IngressApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractIngress(ingress *extensionsv1beta1.Ingress, fieldManager string, sub
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithKind(value string) *IngressApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *IngressApplyConfiguration) WithKind(value string) *IngressApplyConfigur
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithAPIVersion(value string) *IngressApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *IngressApplyConfiguration) WithAPIVersion(value string) *IngressApplyCo
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithName(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *IngressApplyConfiguration) WithName(value string) *IngressApplyConfigur
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithGenerateName(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *IngressApplyConfiguration) WithGenerateName(value string) *IngressApply
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithNamespace(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *IngressApplyConfiguration) WithNamespace(value string) *IngressApplyCon
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithUID(value types.UID) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *IngressApplyConfiguration) WithUID(value types.UID) *IngressApplyConfig
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithResourceVersion(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *IngressApplyConfiguration) WithResourceVersion(value string) *IngressAp
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithGeneration(value int64) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *IngressApplyConfiguration) WithGeneration(value int64) *IngressApplyCon
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithCreationTimestamp(value metav1.Time) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *IngressApplyConfiguration) WithCreationTimestamp(value metav1.Time) *In
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *IngressApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *In
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *IngressApplyConfiguration) WithDeletionGracePeriodSeconds(value int64)
     // overwriting an existing map entries in Labels field with the same key.
     func (b *IngressApplyConfiguration) WithLabels(entries map[string]string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *IngressApplyConfiguration) WithLabels(entries map[string]string) *Ingre
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *IngressApplyConfiguration) WithAnnotations(entries map[string]string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *IngressApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *IngressApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     func (b *IngressApplyConfiguration) WithFinalizers(values ...string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *IngressApplyConfiguration) WithStatus(value *IngressStatusApplyConfigur
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *IngressApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressbackend.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressbackend.go
    index f19c2f2ee24a..9d386f160861 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressbackend.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressbackend.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// IngressBackendApplyConfiguration represents an declarative configuration of the IngressBackend type for use
    +// IngressBackendApplyConfiguration represents a declarative configuration of the IngressBackend type for use
     // with apply.
     type IngressBackendApplyConfiguration struct {
     	ServiceName *string                                         `json:"serviceName,omitempty"`
    @@ -31,7 +31,7 @@ type IngressBackendApplyConfiguration struct {
     	Resource    *v1.TypedLocalObjectReferenceApplyConfiguration `json:"resource,omitempty"`
     }
     
    -// IngressBackendApplyConfiguration constructs an declarative configuration of the IngressBackend type for use with
    +// IngressBackendApplyConfiguration constructs a declarative configuration of the IngressBackend type for use with
     // apply.
     func IngressBackend() *IngressBackendApplyConfiguration {
     	return &IngressBackendApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressloadbalanceringress.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressloadbalanceringress.go
    index 20bf63780548..12dbc35969b0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressloadbalanceringress.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressloadbalanceringress.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressLoadBalancerIngressApplyConfiguration represents an declarative configuration of the IngressLoadBalancerIngress type for use
    +// IngressLoadBalancerIngressApplyConfiguration represents a declarative configuration of the IngressLoadBalancerIngress type for use
     // with apply.
     type IngressLoadBalancerIngressApplyConfiguration struct {
     	IP       *string                               `json:"ip,omitempty"`
    @@ -26,7 +26,7 @@ type IngressLoadBalancerIngressApplyConfiguration struct {
     	Ports    []IngressPortStatusApplyConfiguration `json:"ports,omitempty"`
     }
     
    -// IngressLoadBalancerIngressApplyConfiguration constructs an declarative configuration of the IngressLoadBalancerIngress type for use with
    +// IngressLoadBalancerIngressApplyConfiguration constructs a declarative configuration of the IngressLoadBalancerIngress type for use with
     // apply.
     func IngressLoadBalancerIngress() *IngressLoadBalancerIngressApplyConfiguration {
     	return &IngressLoadBalancerIngressApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressloadbalancerstatus.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressloadbalancerstatus.go
    index e16dd2363334..e896ab341559 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressloadbalancerstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressloadbalancerstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressLoadBalancerStatusApplyConfiguration represents an declarative configuration of the IngressLoadBalancerStatus type for use
    +// IngressLoadBalancerStatusApplyConfiguration represents a declarative configuration of the IngressLoadBalancerStatus type for use
     // with apply.
     type IngressLoadBalancerStatusApplyConfiguration struct {
     	Ingress []IngressLoadBalancerIngressApplyConfiguration `json:"ingress,omitempty"`
     }
     
    -// IngressLoadBalancerStatusApplyConfiguration constructs an declarative configuration of the IngressLoadBalancerStatus type for use with
    +// IngressLoadBalancerStatusApplyConfiguration constructs a declarative configuration of the IngressLoadBalancerStatus type for use with
     // apply.
     func IngressLoadBalancerStatus() *IngressLoadBalancerStatusApplyConfiguration {
     	return &IngressLoadBalancerStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressportstatus.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressportstatus.go
    index 0836537979ec..4ee3f01617f9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressportstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressportstatus.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// IngressPortStatusApplyConfiguration represents an declarative configuration of the IngressPortStatus type for use
    +// IngressPortStatusApplyConfiguration represents a declarative configuration of the IngressPortStatus type for use
     // with apply.
     type IngressPortStatusApplyConfiguration struct {
     	Port     *int32       `json:"port,omitempty"`
    @@ -30,7 +30,7 @@ type IngressPortStatusApplyConfiguration struct {
     	Error    *string      `json:"error,omitempty"`
     }
     
    -// IngressPortStatusApplyConfiguration constructs an declarative configuration of the IngressPortStatus type for use with
    +// IngressPortStatusApplyConfiguration constructs a declarative configuration of the IngressPortStatus type for use with
     // apply.
     func IngressPortStatus() *IngressPortStatusApplyConfiguration {
     	return &IngressPortStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressrule.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressrule.go
    index 015541eeb971..809fada928ea 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressRuleApplyConfiguration represents an declarative configuration of the IngressRule type for use
    +// IngressRuleApplyConfiguration represents a declarative configuration of the IngressRule type for use
     // with apply.
     type IngressRuleApplyConfiguration struct {
     	Host                               *string `json:"host,omitempty"`
    -	IngressRuleValueApplyConfiguration `json:",omitempty,inline"`
    +	IngressRuleValueApplyConfiguration `json:",inline"`
     }
     
    -// IngressRuleApplyConfiguration constructs an declarative configuration of the IngressRule type for use with
    +// IngressRuleApplyConfiguration constructs a declarative configuration of the IngressRule type for use with
     // apply.
     func IngressRule() *IngressRuleApplyConfiguration {
     	return &IngressRuleApplyConfiguration{}
    @@ -43,6 +43,6 @@ func (b *IngressRuleApplyConfiguration) WithHost(value string) *IngressRuleApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the HTTP field is set to the value of the last call.
     func (b *IngressRuleApplyConfiguration) WithHTTP(value *HTTPIngressRuleValueApplyConfiguration) *IngressRuleApplyConfiguration {
    -	b.HTTP = value
    +	b.IngressRuleValueApplyConfiguration.HTTP = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressrulevalue.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressrulevalue.go
    index 2d03c7b13220..4a6412475560 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressrulevalue.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressrulevalue.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressRuleValueApplyConfiguration represents an declarative configuration of the IngressRuleValue type for use
    +// IngressRuleValueApplyConfiguration represents a declarative configuration of the IngressRuleValue type for use
     // with apply.
     type IngressRuleValueApplyConfiguration struct {
     	HTTP *HTTPIngressRuleValueApplyConfiguration `json:"http,omitempty"`
     }
     
    -// IngressRuleValueApplyConfiguration constructs an declarative configuration of the IngressRuleValue type for use with
    +// IngressRuleValueApplyConfiguration constructs a declarative configuration of the IngressRuleValue type for use with
     // apply.
     func IngressRuleValue() *IngressRuleValueApplyConfiguration {
     	return &IngressRuleValueApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressspec.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressspec.go
    index 1ab4d8bb73b0..58fbde8b3525 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressSpecApplyConfiguration represents an declarative configuration of the IngressSpec type for use
    +// IngressSpecApplyConfiguration represents a declarative configuration of the IngressSpec type for use
     // with apply.
     type IngressSpecApplyConfiguration struct {
     	IngressClassName *string                           `json:"ingressClassName,omitempty"`
    @@ -27,7 +27,7 @@ type IngressSpecApplyConfiguration struct {
     	Rules            []IngressRuleApplyConfiguration   `json:"rules,omitempty"`
     }
     
    -// IngressSpecApplyConfiguration constructs an declarative configuration of the IngressSpec type for use with
    +// IngressSpecApplyConfiguration constructs a declarative configuration of the IngressSpec type for use with
     // apply.
     func IngressSpec() *IngressSpecApplyConfiguration {
     	return &IngressSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressstatus.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressstatus.go
    index faa7e2446fae..3aed616889c0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressStatusApplyConfiguration represents an declarative configuration of the IngressStatus type for use
    +// IngressStatusApplyConfiguration represents a declarative configuration of the IngressStatus type for use
     // with apply.
     type IngressStatusApplyConfiguration struct {
     	LoadBalancer *IngressLoadBalancerStatusApplyConfiguration `json:"loadBalancer,omitempty"`
     }
     
    -// IngressStatusApplyConfiguration constructs an declarative configuration of the IngressStatus type for use with
    +// IngressStatusApplyConfiguration constructs a declarative configuration of the IngressStatus type for use with
     // apply.
     func IngressStatus() *IngressStatusApplyConfiguration {
     	return &IngressStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingresstls.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingresstls.go
    index 8ca93a0bc2d1..63648cd46495 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingresstls.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingresstls.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressTLSApplyConfiguration represents an declarative configuration of the IngressTLS type for use
    +// IngressTLSApplyConfiguration represents a declarative configuration of the IngressTLS type for use
     // with apply.
     type IngressTLSApplyConfiguration struct {
     	Hosts      []string `json:"hosts,omitempty"`
     	SecretName *string  `json:"secretName,omitempty"`
     }
     
    -// IngressTLSApplyConfiguration constructs an declarative configuration of the IngressTLS type for use with
    +// IngressTLSApplyConfiguration constructs a declarative configuration of the IngressTLS type for use with
     // apply.
     func IngressTLS() *IngressTLSApplyConfiguration {
     	return &IngressTLSApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ipblock.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ipblock.go
    index a90d3b22074d..4a671130b859 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ipblock.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ipblock.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// IPBlockApplyConfiguration represents an declarative configuration of the IPBlock type for use
    +// IPBlockApplyConfiguration represents a declarative configuration of the IPBlock type for use
     // with apply.
     type IPBlockApplyConfiguration struct {
     	CIDR   *string  `json:"cidr,omitempty"`
     	Except []string `json:"except,omitempty"`
     }
     
    -// IPBlockApplyConfiguration constructs an declarative configuration of the IPBlock type for use with
    +// IPBlockApplyConfiguration constructs a declarative configuration of the IPBlock type for use with
     // apply.
     func IPBlock() *IPBlockApplyConfiguration {
     	return &IPBlockApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicy.go
    index 27ea5d9dde94..5ce0eb31f551 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicy.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// NetworkPolicyApplyConfiguration represents an declarative configuration of the NetworkPolicy type for use
    +// NetworkPolicyApplyConfiguration represents a declarative configuration of the NetworkPolicy type for use
     // with apply.
     type NetworkPolicyApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type NetworkPolicyApplyConfiguration struct {
     	Spec                             *NetworkPolicySpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// NetworkPolicy constructs an declarative configuration of the NetworkPolicy type for use with
    +// NetworkPolicy constructs a declarative configuration of the NetworkPolicy type for use with
     // apply.
     func NetworkPolicy(name, namespace string) *NetworkPolicyApplyConfiguration {
     	b := &NetworkPolicyApplyConfiguration{}
    @@ -86,7 +86,7 @@ func extractNetworkPolicy(networkPolicy *extensionsv1beta1.NetworkPolicy, fieldM
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithKind(value string) *NetworkPolicyApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *NetworkPolicyApplyConfiguration) WithKind(value string) *NetworkPolicyA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithAPIVersion(value string) *NetworkPolicyApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *NetworkPolicyApplyConfiguration) WithAPIVersion(value string) *NetworkP
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithName(value string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *NetworkPolicyApplyConfiguration) WithName(value string) *NetworkPolicyA
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithGenerateName(value string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *NetworkPolicyApplyConfiguration) WithGenerateName(value string) *Networ
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithNamespace(value string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *NetworkPolicyApplyConfiguration) WithNamespace(value string) *NetworkPo
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithUID(value types.UID) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *NetworkPolicyApplyConfiguration) WithUID(value types.UID) *NetworkPolic
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithResourceVersion(value string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,7 +148,7 @@ func (b *NetworkPolicyApplyConfiguration) WithResourceVersion(value string) *Net
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithGeneration(value int64) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -157,7 +157,7 @@ func (b *NetworkPolicyApplyConfiguration) WithGeneration(value int64) *NetworkPo
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithCreationTimestamp(value metav1.Time) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -166,7 +166,7 @@ func (b *NetworkPolicyApplyConfiguration) WithCreationTimestamp(value metav1.Tim
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *NetworkPolicyApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *NetworkPolicyApplyConfiguration) WithDeletionGracePeriodSeconds(value i
     // overwriting an existing map entries in Labels field with the same key.
     func (b *NetworkPolicyApplyConfiguration) WithLabels(entries map[string]string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *NetworkPolicyApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *NetworkPolicyApplyConfiguration) WithAnnotations(entries map[string]string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -218,7 +218,7 @@ func (b *NetworkPolicyApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,7 +229,7 @@ func (b *NetworkPolicyApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     func (b *NetworkPolicyApplyConfiguration) WithFinalizers(values ...string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -247,3 +247,9 @@ func (b *NetworkPolicyApplyConfiguration) WithSpec(value *NetworkPolicySpecApply
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *NetworkPolicyApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyegressrule.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyegressrule.go
    index 6335ec375d3e..ca3e174f93c8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyegressrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyegressrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// NetworkPolicyEgressRuleApplyConfiguration represents an declarative configuration of the NetworkPolicyEgressRule type for use
    +// NetworkPolicyEgressRuleApplyConfiguration represents a declarative configuration of the NetworkPolicyEgressRule type for use
     // with apply.
     type NetworkPolicyEgressRuleApplyConfiguration struct {
     	Ports []NetworkPolicyPortApplyConfiguration `json:"ports,omitempty"`
     	To    []NetworkPolicyPeerApplyConfiguration `json:"to,omitempty"`
     }
     
    -// NetworkPolicyEgressRuleApplyConfiguration constructs an declarative configuration of the NetworkPolicyEgressRule type for use with
    +// NetworkPolicyEgressRuleApplyConfiguration constructs a declarative configuration of the NetworkPolicyEgressRule type for use with
     // apply.
     func NetworkPolicyEgressRule() *NetworkPolicyEgressRuleApplyConfiguration {
     	return &NetworkPolicyEgressRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyingressrule.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyingressrule.go
    index 2ecc4c8c6529..16071372047a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyingressrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyingressrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// NetworkPolicyIngressRuleApplyConfiguration represents an declarative configuration of the NetworkPolicyIngressRule type for use
    +// NetworkPolicyIngressRuleApplyConfiguration represents a declarative configuration of the NetworkPolicyIngressRule type for use
     // with apply.
     type NetworkPolicyIngressRuleApplyConfiguration struct {
     	Ports []NetworkPolicyPortApplyConfiguration `json:"ports,omitempty"`
     	From  []NetworkPolicyPeerApplyConfiguration `json:"from,omitempty"`
     }
     
    -// NetworkPolicyIngressRuleApplyConfiguration constructs an declarative configuration of the NetworkPolicyIngressRule type for use with
    +// NetworkPolicyIngressRuleApplyConfiguration constructs a declarative configuration of the NetworkPolicyIngressRule type for use with
     // apply.
     func NetworkPolicyIngressRule() *NetworkPolicyIngressRuleApplyConfiguration {
     	return &NetworkPolicyIngressRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicypeer.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicypeer.go
    index c69b281225f6..8a0fa5741524 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicypeer.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicypeer.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// NetworkPolicyPeerApplyConfiguration represents an declarative configuration of the NetworkPolicyPeer type for use
    +// NetworkPolicyPeerApplyConfiguration represents a declarative configuration of the NetworkPolicyPeer type for use
     // with apply.
     type NetworkPolicyPeerApplyConfiguration struct {
     	PodSelector       *v1.LabelSelectorApplyConfiguration `json:"podSelector,omitempty"`
    @@ -30,7 +30,7 @@ type NetworkPolicyPeerApplyConfiguration struct {
     	IPBlock           *IPBlockApplyConfiguration          `json:"ipBlock,omitempty"`
     }
     
    -// NetworkPolicyPeerApplyConfiguration constructs an declarative configuration of the NetworkPolicyPeer type for use with
    +// NetworkPolicyPeerApplyConfiguration constructs a declarative configuration of the NetworkPolicyPeer type for use with
     // apply.
     func NetworkPolicyPeer() *NetworkPolicyPeerApplyConfiguration {
     	return &NetworkPolicyPeerApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyport.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyport.go
    index 0140d771bf26..6bc1c1977b61 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyport.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyport.go
    @@ -23,7 +23,7 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// NetworkPolicyPortApplyConfiguration represents an declarative configuration of the NetworkPolicyPort type for use
    +// NetworkPolicyPortApplyConfiguration represents a declarative configuration of the NetworkPolicyPort type for use
     // with apply.
     type NetworkPolicyPortApplyConfiguration struct {
     	Protocol *v1.Protocol        `json:"protocol,omitempty"`
    @@ -31,7 +31,7 @@ type NetworkPolicyPortApplyConfiguration struct {
     	EndPort  *int32              `json:"endPort,omitempty"`
     }
     
    -// NetworkPolicyPortApplyConfiguration constructs an declarative configuration of the NetworkPolicyPort type for use with
    +// NetworkPolicyPortApplyConfiguration constructs a declarative configuration of the NetworkPolicyPort type for use with
     // apply.
     func NetworkPolicyPort() *NetworkPolicyPortApplyConfiguration {
     	return &NetworkPolicyPortApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyspec.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyspec.go
    index 179e4bd024e7..4454329c5b5b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyspec.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// NetworkPolicySpecApplyConfiguration represents an declarative configuration of the NetworkPolicySpec type for use
    +// NetworkPolicySpecApplyConfiguration represents a declarative configuration of the NetworkPolicySpec type for use
     // with apply.
     type NetworkPolicySpecApplyConfiguration struct {
     	PodSelector *v1.LabelSelectorApplyConfiguration          `json:"podSelector,omitempty"`
    @@ -32,7 +32,7 @@ type NetworkPolicySpecApplyConfiguration struct {
     	PolicyTypes []extensionsv1beta1.PolicyType               `json:"policyTypes,omitempty"`
     }
     
    -// NetworkPolicySpecApplyConfiguration constructs an declarative configuration of the NetworkPolicySpec type for use with
    +// NetworkPolicySpecApplyConfiguration constructs a declarative configuration of the NetworkPolicySpec type for use with
     // apply.
     func NetworkPolicySpec() *NetworkPolicySpecApplyConfiguration {
     	return &NetworkPolicySpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicaset.go
    index b2afc835d834..97a972f53110 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicaset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicaset.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ReplicaSetApplyConfiguration represents an declarative configuration of the ReplicaSet type for use
    +// ReplicaSetApplyConfiguration represents a declarative configuration of the ReplicaSet type for use
     // with apply.
     type ReplicaSetApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type ReplicaSetApplyConfiguration struct {
     	Status                           *ReplicaSetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// ReplicaSet constructs an declarative configuration of the ReplicaSet type for use with
    +// ReplicaSet constructs a declarative configuration of the ReplicaSet type for use with
     // apply.
     func ReplicaSet(name, namespace string) *ReplicaSetApplyConfiguration {
     	b := &ReplicaSetApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractReplicaSet(replicaSet *extensionsv1beta1.ReplicaSet, fieldManager st
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithKind(value string) *ReplicaSetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *ReplicaSetApplyConfiguration) WithKind(value string) *ReplicaSetApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithAPIVersion(value string) *ReplicaSetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *ReplicaSetApplyConfiguration) WithAPIVersion(value string) *ReplicaSetA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithName(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *ReplicaSetApplyConfiguration) WithName(value string) *ReplicaSetApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithGenerateName(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *ReplicaSetApplyConfiguration) WithGenerateName(value string) *ReplicaSe
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithNamespace(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *ReplicaSetApplyConfiguration) WithNamespace(value string) *ReplicaSetAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithUID(value types.UID) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *ReplicaSetApplyConfiguration) WithUID(value types.UID) *ReplicaSetApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithResourceVersion(value string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *ReplicaSetApplyConfiguration) WithResourceVersion(value string) *Replic
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithGeneration(value int64) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *ReplicaSetApplyConfiguration) WithGeneration(value int64) *ReplicaSetAp
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *ReplicaSetApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *ReplicaSetApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ReplicaSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *ReplicaSetApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ReplicaSetApplyConfiguration) WithLabels(entries map[string]string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *ReplicaSetApplyConfiguration) WithLabels(entries map[string]string) *Re
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ReplicaSetApplyConfiguration) WithAnnotations(entries map[string]string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *ReplicaSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *ReplicaSetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *ReplicaSetApplyConfiguration) WithFinalizers(values ...string) *ReplicaSetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *ReplicaSetApplyConfiguration) WithStatus(value *ReplicaSetStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ReplicaSetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetcondition.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetcondition.go
    index b717365175be..540079fe53da 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetcondition.go
    @@ -20,21 +20,21 @@ package v1beta1
     
     import (
     	v1 "k8s.io/api/core/v1"
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// ReplicaSetConditionApplyConfiguration represents an declarative configuration of the ReplicaSetCondition type for use
    +// ReplicaSetConditionApplyConfiguration represents a declarative configuration of the ReplicaSetCondition type for use
     // with apply.
     type ReplicaSetConditionApplyConfiguration struct {
    -	Type               *v1beta1.ReplicaSetConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus              `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                     `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                          `json:"reason,omitempty"`
    -	Message            *string                          `json:"message,omitempty"`
    +	Type               *extensionsv1beta1.ReplicaSetConditionType `json:"type,omitempty"`
    +	Status             *v1.ConditionStatus                        `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                               `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                    `json:"reason,omitempty"`
    +	Message            *string                                    `json:"message,omitempty"`
     }
     
    -// ReplicaSetConditionApplyConfiguration constructs an declarative configuration of the ReplicaSetCondition type for use with
    +// ReplicaSetConditionApplyConfiguration constructs a declarative configuration of the ReplicaSetCondition type for use with
     // apply.
     func ReplicaSetCondition() *ReplicaSetConditionApplyConfiguration {
     	return &ReplicaSetConditionApplyConfiguration{}
    @@ -43,7 +43,7 @@ func ReplicaSetCondition() *ReplicaSetConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *ReplicaSetConditionApplyConfiguration) WithType(value v1beta1.ReplicaSetConditionType) *ReplicaSetConditionApplyConfiguration {
    +func (b *ReplicaSetConditionApplyConfiguration) WithType(value extensionsv1beta1.ReplicaSetConditionType) *ReplicaSetConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetspec.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetspec.go
    index 5d0c570149ed..27653dd1af83 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetspec.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ReplicaSetSpecApplyConfiguration represents an declarative configuration of the ReplicaSetSpec type for use
    +// ReplicaSetSpecApplyConfiguration represents a declarative configuration of the ReplicaSetSpec type for use
     // with apply.
     type ReplicaSetSpecApplyConfiguration struct {
     	Replicas        *int32                                    `json:"replicas,omitempty"`
    @@ -32,7 +32,7 @@ type ReplicaSetSpecApplyConfiguration struct {
     	Template        *corev1.PodTemplateSpecApplyConfiguration `json:"template,omitempty"`
     }
     
    -// ReplicaSetSpecApplyConfiguration constructs an declarative configuration of the ReplicaSetSpec type for use with
    +// ReplicaSetSpecApplyConfiguration constructs a declarative configuration of the ReplicaSetSpec type for use with
     // apply.
     func ReplicaSetSpec() *ReplicaSetSpecApplyConfiguration {
     	return &ReplicaSetSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetstatus.go
    index 45dc4bf319c1..9a5b468a3f2d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// ReplicaSetStatusApplyConfiguration represents an declarative configuration of the ReplicaSetStatus type for use
    +// ReplicaSetStatusApplyConfiguration represents a declarative configuration of the ReplicaSetStatus type for use
     // with apply.
     type ReplicaSetStatusApplyConfiguration struct {
     	Replicas             *int32                                  `json:"replicas,omitempty"`
    @@ -29,7 +29,7 @@ type ReplicaSetStatusApplyConfiguration struct {
     	Conditions           []ReplicaSetConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// ReplicaSetStatusApplyConfiguration constructs an declarative configuration of the ReplicaSetStatus type for use with
    +// ReplicaSetStatusApplyConfiguration constructs a declarative configuration of the ReplicaSetStatus type for use with
     // apply.
     func ReplicaSetStatus() *ReplicaSetStatusApplyConfiguration {
     	return &ReplicaSetStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollbackconfig.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollbackconfig.go
    index 131e57a39df4..775f82eef801 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollbackconfig.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollbackconfig.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// RollbackConfigApplyConfiguration represents an declarative configuration of the RollbackConfig type for use
    +// RollbackConfigApplyConfiguration represents a declarative configuration of the RollbackConfig type for use
     // with apply.
     type RollbackConfigApplyConfiguration struct {
     	Revision *int64 `json:"revision,omitempty"`
     }
     
    -// RollbackConfigApplyConfiguration constructs an declarative configuration of the RollbackConfig type for use with
    +// RollbackConfigApplyConfiguration constructs a declarative configuration of the RollbackConfig type for use with
     // apply.
     func RollbackConfig() *RollbackConfigApplyConfiguration {
     	return &RollbackConfigApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollingupdatedaemonset.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollingupdatedaemonset.go
    index 3aa5e2f891e6..4352f7fac7f2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollingupdatedaemonset.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollingupdatedaemonset.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// RollingUpdateDaemonSetApplyConfiguration represents an declarative configuration of the RollingUpdateDaemonSet type for use
    +// RollingUpdateDaemonSetApplyConfiguration represents a declarative configuration of the RollingUpdateDaemonSet type for use
     // with apply.
     type RollingUpdateDaemonSetApplyConfiguration struct {
     	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
     	MaxSurge       *intstr.IntOrString `json:"maxSurge,omitempty"`
     }
     
    -// RollingUpdateDaemonSetApplyConfiguration constructs an declarative configuration of the RollingUpdateDaemonSet type for use with
    +// RollingUpdateDaemonSetApplyConfiguration constructs a declarative configuration of the RollingUpdateDaemonSet type for use with
     // apply.
     func RollingUpdateDaemonSet() *RollingUpdateDaemonSetApplyConfiguration {
     	return &RollingUpdateDaemonSetApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollingupdatedeployment.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollingupdatedeployment.go
    index dde5f064b000..244701a5e015 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollingupdatedeployment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollingupdatedeployment.go
    @@ -22,14 +22,14 @@ import (
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// RollingUpdateDeploymentApplyConfiguration represents an declarative configuration of the RollingUpdateDeployment type for use
    +// RollingUpdateDeploymentApplyConfiguration represents a declarative configuration of the RollingUpdateDeployment type for use
     // with apply.
     type RollingUpdateDeploymentApplyConfiguration struct {
     	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
     	MaxSurge       *intstr.IntOrString `json:"maxSurge,omitempty"`
     }
     
    -// RollingUpdateDeploymentApplyConfiguration constructs an declarative configuration of the RollingUpdateDeployment type for use with
    +// RollingUpdateDeploymentApplyConfiguration constructs a declarative configuration of the RollingUpdateDeployment type for use with
     // apply.
     func RollingUpdateDeployment() *RollingUpdateDeploymentApplyConfiguration {
     	return &RollingUpdateDeploymentApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/scale.go b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/scale.go
    index 60a1a8430c1a..53e73439eb6c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/scale.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/scale.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ScaleApplyConfiguration represents an declarative configuration of the Scale type for use
    +// ScaleApplyConfiguration represents a declarative configuration of the Scale type for use
     // with apply.
     type ScaleApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
     	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *v1beta1.ScaleSpec   `json:"spec,omitempty"`
    -	Status                           *v1beta1.ScaleStatus `json:"status,omitempty"`
    +	Spec                             *extensionsv1beta1.ScaleSpec   `json:"spec,omitempty"`
    +	Status                           *extensionsv1beta1.ScaleStatus `json:"status,omitempty"`
     }
     
    -// ScaleApplyConfiguration constructs an declarative configuration of the Scale type for use with
    +// ScaleApplyConfiguration constructs a declarative configuration of the Scale type for use with
     // apply.
     func Scale() *ScaleApplyConfiguration {
     	b := &ScaleApplyConfiguration{}
    @@ -47,7 +47,7 @@ func Scale() *ScaleApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithKind(value string) *ScaleApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -55,7 +55,7 @@ func (b *ScaleApplyConfiguration) WithKind(value string) *ScaleApplyConfiguratio
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithAPIVersion(value string) *ScaleApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -64,7 +64,7 @@ func (b *ScaleApplyConfiguration) WithAPIVersion(value string) *ScaleApplyConfig
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithName(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -73,7 +73,7 @@ func (b *ScaleApplyConfiguration) WithName(value string) *ScaleApplyConfiguratio
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithGenerateName(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -82,7 +82,7 @@ func (b *ScaleApplyConfiguration) WithGenerateName(value string) *ScaleApplyConf
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithNamespace(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -91,7 +91,7 @@ func (b *ScaleApplyConfiguration) WithNamespace(value string) *ScaleApplyConfigu
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithUID(value types.UID) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -100,7 +100,7 @@ func (b *ScaleApplyConfiguration) WithUID(value types.UID) *ScaleApplyConfigurat
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithResourceVersion(value string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -109,7 +109,7 @@ func (b *ScaleApplyConfiguration) WithResourceVersion(value string) *ScaleApplyC
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithGeneration(value int64) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -118,7 +118,7 @@ func (b *ScaleApplyConfiguration) WithGeneration(value int64) *ScaleApplyConfigu
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -127,7 +127,7 @@ func (b *ScaleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *Scal
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -136,7 +136,7 @@ func (b *ScaleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *Scal
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ScaleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -146,11 +146,11 @@ func (b *ScaleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *S
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ScaleApplyConfiguration) WithLabels(entries map[string]string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -161,11 +161,11 @@ func (b *ScaleApplyConfiguration) WithLabels(entries map[string]string) *ScaleAp
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ScaleApplyConfiguration) WithAnnotations(entries map[string]string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -179,7 +179,7 @@ func (b *ScaleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -190,7 +190,7 @@ func (b *ScaleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferen
     func (b *ScaleApplyConfiguration) WithFinalizers(values ...string) *ScaleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -204,7 +204,7 @@ func (b *ScaleApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     // WithSpec sets the Spec field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Spec field is set to the value of the last call.
    -func (b *ScaleApplyConfiguration) WithSpec(value v1beta1.ScaleSpec) *ScaleApplyConfiguration {
    +func (b *ScaleApplyConfiguration) WithSpec(value extensionsv1beta1.ScaleSpec) *ScaleApplyConfiguration {
     	b.Spec = &value
     	return b
     }
    @@ -212,7 +212,13 @@ func (b *ScaleApplyConfiguration) WithSpec(value v1beta1.ScaleSpec) *ScaleApplyC
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *ScaleApplyConfiguration) WithStatus(value v1beta1.ScaleStatus) *ScaleApplyConfiguration {
    +func (b *ScaleApplyConfiguration) WithStatus(value extensionsv1beta1.ScaleStatus) *ScaleApplyConfiguration {
     	b.Status = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ScaleApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/exemptprioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/exemptprioritylevelconfiguration.go
    index cd21214f5ada..4e5805f39454 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/exemptprioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/exemptprioritylevelconfiguration.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ExemptPriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the ExemptPriorityLevelConfiguration type for use
    +// ExemptPriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the ExemptPriorityLevelConfiguration type for use
     // with apply.
     type ExemptPriorityLevelConfigurationApplyConfiguration struct {
     	NominalConcurrencyShares *int32 `json:"nominalConcurrencyShares,omitempty"`
     	LendablePercent          *int32 `json:"lendablePercent,omitempty"`
     }
     
    -// ExemptPriorityLevelConfigurationApplyConfiguration constructs an declarative configuration of the ExemptPriorityLevelConfiguration type for use with
    +// ExemptPriorityLevelConfigurationApplyConfiguration constructs a declarative configuration of the ExemptPriorityLevelConfiguration type for use with
     // apply.
     func ExemptPriorityLevelConfiguration() *ExemptPriorityLevelConfigurationApplyConfiguration {
     	return &ExemptPriorityLevelConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowdistinguishermethod.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowdistinguishermethod.go
    index d9c8a79cc885..f8923ae7b35e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowdistinguishermethod.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowdistinguishermethod.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/flowcontrol/v1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
     )
     
    -// FlowDistinguisherMethodApplyConfiguration represents an declarative configuration of the FlowDistinguisherMethod type for use
    +// FlowDistinguisherMethodApplyConfiguration represents a declarative configuration of the FlowDistinguisherMethod type for use
     // with apply.
     type FlowDistinguisherMethodApplyConfiguration struct {
    -	Type *v1.FlowDistinguisherMethodType `json:"type,omitempty"`
    +	Type *flowcontrolv1.FlowDistinguisherMethodType `json:"type,omitempty"`
     }
     
    -// FlowDistinguisherMethodApplyConfiguration constructs an declarative configuration of the FlowDistinguisherMethod type for use with
    +// FlowDistinguisherMethodApplyConfiguration constructs a declarative configuration of the FlowDistinguisherMethod type for use with
     // apply.
     func FlowDistinguisherMethod() *FlowDistinguisherMethodApplyConfiguration {
     	return &FlowDistinguisherMethodApplyConfiguration{}
    @@ -37,7 +37,7 @@ func FlowDistinguisherMethod() *FlowDistinguisherMethodApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *FlowDistinguisherMethodApplyConfiguration) WithType(value v1.FlowDistinguisherMethodType) *FlowDistinguisherMethodApplyConfiguration {
    +func (b *FlowDistinguisherMethodApplyConfiguration) WithType(value flowcontrolv1.FlowDistinguisherMethodType) *FlowDistinguisherMethodApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschema.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschema.go
    index 8809fafbaeba..3219319aeda1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschema.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschema.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apiflowcontrolv1 "k8s.io/api/flowcontrol/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// FlowSchemaApplyConfiguration represents an declarative configuration of the FlowSchema type for use
    +// FlowSchemaApplyConfiguration represents a declarative configuration of the FlowSchema type for use
     // with apply.
     type FlowSchemaApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *FlowSchemaSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *FlowSchemaStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *FlowSchemaSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *FlowSchemaStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// FlowSchema constructs an declarative configuration of the FlowSchema type for use with
    +// FlowSchema constructs a declarative configuration of the FlowSchema type for use with
     // apply.
     func FlowSchema(name string) *FlowSchemaApplyConfiguration {
     	b := &FlowSchemaApplyConfiguration{}
    @@ -57,18 +57,18 @@ func FlowSchema(name string) *FlowSchemaApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractFlowSchema(flowSchema *apiflowcontrolv1.FlowSchema, fieldManager string) (*FlowSchemaApplyConfiguration, error) {
    +func ExtractFlowSchema(flowSchema *flowcontrolv1.FlowSchema, fieldManager string) (*FlowSchemaApplyConfiguration, error) {
     	return extractFlowSchema(flowSchema, fieldManager, "")
     }
     
     // ExtractFlowSchemaStatus is the same as ExtractFlowSchema except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractFlowSchemaStatus(flowSchema *apiflowcontrolv1.FlowSchema, fieldManager string) (*FlowSchemaApplyConfiguration, error) {
    +func ExtractFlowSchemaStatus(flowSchema *flowcontrolv1.FlowSchema, fieldManager string) (*FlowSchemaApplyConfiguration, error) {
     	return extractFlowSchema(flowSchema, fieldManager, "status")
     }
     
    -func extractFlowSchema(flowSchema *apiflowcontrolv1.FlowSchema, fieldManager string, subresource string) (*FlowSchemaApplyConfiguration, error) {
    +func extractFlowSchema(flowSchema *flowcontrolv1.FlowSchema, fieldManager string, subresource string) (*FlowSchemaApplyConfiguration, error) {
     	b := &FlowSchemaApplyConfiguration{}
     	err := managedfields.ExtractInto(flowSchema, internal.Parser().Type("io.k8s.api.flowcontrol.v1.FlowSchema"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractFlowSchema(flowSchema *apiflowcontrolv1.FlowSchema, fieldManager str
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithKind(value string) *FlowSchemaApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *FlowSchemaApplyConfiguration) WithKind(value string) *FlowSchemaApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithAPIVersion(value string) *FlowSchemaApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *FlowSchemaApplyConfiguration) WithAPIVersion(value string) *FlowSchemaA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithName(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *FlowSchemaApplyConfiguration) WithName(value string) *FlowSchemaApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithGenerateName(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *FlowSchemaApplyConfiguration) WithGenerateName(value string) *FlowSchem
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithNamespace(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *FlowSchemaApplyConfiguration) WithNamespace(value string) *FlowSchemaAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithUID(value types.UID) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *FlowSchemaApplyConfiguration) WithUID(value types.UID) *FlowSchemaApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithResourceVersion(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,25 +147,25 @@ func (b *FlowSchemaApplyConfiguration) WithResourceVersion(value string) *FlowSc
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithGeneration(value int64) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *FlowSchemaApplyConfiguration) WithCreationTimestamp(value metav1.Time) *FlowSchemaApplyConfiguration {
    +func (b *FlowSchemaApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *FlowSchemaApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *FlowSchemaApplyConfiguration {
    +func (b *FlowSchemaApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *FlowSchemaApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *FlowSchemaApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *FlowSchemaApplyConfiguration) WithLabels(entries map[string]string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *FlowSchemaApplyConfiguration) WithLabels(entries map[string]string) *Fl
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *FlowSchemaApplyConfiguration) WithAnnotations(entries map[string]string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -211,13 +211,13 @@ func (b *FlowSchemaApplyConfiguration) WithAnnotations(entries map[string]string
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *FlowSchemaApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *FlowSchemaApplyConfiguration {
    +func (b *FlowSchemaApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,14 +228,14 @@ func (b *FlowSchemaApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *FlowSchemaApplyConfiguration) WithFinalizers(values ...string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *FlowSchemaApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -254,3 +254,9 @@ func (b *FlowSchemaApplyConfiguration) WithStatus(value *FlowSchemaStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *FlowSchemaApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemacondition.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemacondition.go
    index 808ab09a551e..d1c3dfbc6729 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemacondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemacondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/flowcontrol/v1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// FlowSchemaConditionApplyConfiguration represents an declarative configuration of the FlowSchemaCondition type for use
    +// FlowSchemaConditionApplyConfiguration represents a declarative configuration of the FlowSchemaCondition type for use
     // with apply.
     type FlowSchemaConditionApplyConfiguration struct {
    -	Type               *v1.FlowSchemaConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus         `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                     `json:"reason,omitempty"`
    -	Message            *string                     `json:"message,omitempty"`
    +	Type               *flowcontrolv1.FlowSchemaConditionType `json:"type,omitempty"`
    +	Status             *flowcontrolv1.ConditionStatus         `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                           `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                `json:"reason,omitempty"`
    +	Message            *string                                `json:"message,omitempty"`
     }
     
    -// FlowSchemaConditionApplyConfiguration constructs an declarative configuration of the FlowSchemaCondition type for use with
    +// FlowSchemaConditionApplyConfiguration constructs a declarative configuration of the FlowSchemaCondition type for use with
     // apply.
     func FlowSchemaCondition() *FlowSchemaConditionApplyConfiguration {
     	return &FlowSchemaConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func FlowSchemaCondition() *FlowSchemaConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *FlowSchemaConditionApplyConfiguration) WithType(value v1.FlowSchemaConditionType) *FlowSchemaConditionApplyConfiguration {
    +func (b *FlowSchemaConditionApplyConfiguration) WithType(value flowcontrolv1.FlowSchemaConditionType) *FlowSchemaConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *FlowSchemaConditionApplyConfiguration) WithType(value v1.FlowSchemaCond
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *FlowSchemaConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *FlowSchemaConditionApplyConfiguration {
    +func (b *FlowSchemaConditionApplyConfiguration) WithStatus(value flowcontrolv1.ConditionStatus) *FlowSchemaConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemaspec.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemaspec.go
    index 2785f5baf3b8..4efd5d2875ff 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemaspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemaspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// FlowSchemaSpecApplyConfiguration represents an declarative configuration of the FlowSchemaSpec type for use
    +// FlowSchemaSpecApplyConfiguration represents a declarative configuration of the FlowSchemaSpec type for use
     // with apply.
     type FlowSchemaSpecApplyConfiguration struct {
     	PriorityLevelConfiguration *PriorityLevelConfigurationReferenceApplyConfiguration `json:"priorityLevelConfiguration,omitempty"`
    @@ -27,7 +27,7 @@ type FlowSchemaSpecApplyConfiguration struct {
     	Rules                      []PolicyRulesWithSubjectsApplyConfiguration            `json:"rules,omitempty"`
     }
     
    -// FlowSchemaSpecApplyConfiguration constructs an declarative configuration of the FlowSchemaSpec type for use with
    +// FlowSchemaSpecApplyConfiguration constructs a declarative configuration of the FlowSchemaSpec type for use with
     // apply.
     func FlowSchemaSpec() *FlowSchemaSpecApplyConfiguration {
     	return &FlowSchemaSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemastatus.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemastatus.go
    index 7c61360a535c..6f951967e889 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemastatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemastatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// FlowSchemaStatusApplyConfiguration represents an declarative configuration of the FlowSchemaStatus type for use
    +// FlowSchemaStatusApplyConfiguration represents a declarative configuration of the FlowSchemaStatus type for use
     // with apply.
     type FlowSchemaStatusApplyConfiguration struct {
     	Conditions []FlowSchemaConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// FlowSchemaStatusApplyConfiguration constructs an declarative configuration of the FlowSchemaStatus type for use with
    +// FlowSchemaStatusApplyConfiguration constructs a declarative configuration of the FlowSchemaStatus type for use with
     // apply.
     func FlowSchemaStatus() *FlowSchemaStatusApplyConfiguration {
     	return &FlowSchemaStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/groupsubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/groupsubject.go
    index 92a03d86282e..0be9eddfd6f2 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/groupsubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/groupsubject.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// GroupSubjectApplyConfiguration represents an declarative configuration of the GroupSubject type for use
    +// GroupSubjectApplyConfiguration represents a declarative configuration of the GroupSubject type for use
     // with apply.
     type GroupSubjectApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// GroupSubjectApplyConfiguration constructs an declarative configuration of the GroupSubject type for use with
    +// GroupSubjectApplyConfiguration constructs a declarative configuration of the GroupSubject type for use with
     // apply.
     func GroupSubject() *GroupSubjectApplyConfiguration {
     	return &GroupSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/limitedprioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/limitedprioritylevelconfiguration.go
    index c19f0970357a..8e2764298503 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/limitedprioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/limitedprioritylevelconfiguration.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// LimitedPriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the LimitedPriorityLevelConfiguration type for use
    +// LimitedPriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the LimitedPriorityLevelConfiguration type for use
     // with apply.
     type LimitedPriorityLevelConfigurationApplyConfiguration struct {
     	NominalConcurrencyShares *int32                           `json:"nominalConcurrencyShares,omitempty"`
    @@ -27,7 +27,7 @@ type LimitedPriorityLevelConfigurationApplyConfiguration struct {
     	BorrowingLimitPercent    *int32                           `json:"borrowingLimitPercent,omitempty"`
     }
     
    -// LimitedPriorityLevelConfigurationApplyConfiguration constructs an declarative configuration of the LimitedPriorityLevelConfiguration type for use with
    +// LimitedPriorityLevelConfigurationApplyConfiguration constructs a declarative configuration of the LimitedPriorityLevelConfiguration type for use with
     // apply.
     func LimitedPriorityLevelConfiguration() *LimitedPriorityLevelConfigurationApplyConfiguration {
     	return &LimitedPriorityLevelConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/limitresponse.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/limitresponse.go
    index 03ff6d910353..dc2e919d7f44 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/limitresponse.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/limitresponse.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/flowcontrol/v1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
     )
     
    -// LimitResponseApplyConfiguration represents an declarative configuration of the LimitResponse type for use
    +// LimitResponseApplyConfiguration represents a declarative configuration of the LimitResponse type for use
     // with apply.
     type LimitResponseApplyConfiguration struct {
    -	Type    *v1.LimitResponseType                   `json:"type,omitempty"`
    +	Type    *flowcontrolv1.LimitResponseType        `json:"type,omitempty"`
     	Queuing *QueuingConfigurationApplyConfiguration `json:"queuing,omitempty"`
     }
     
    -// LimitResponseApplyConfiguration constructs an declarative configuration of the LimitResponse type for use with
    +// LimitResponseApplyConfiguration constructs a declarative configuration of the LimitResponse type for use with
     // apply.
     func LimitResponse() *LimitResponseApplyConfiguration {
     	return &LimitResponseApplyConfiguration{}
    @@ -38,7 +38,7 @@ func LimitResponse() *LimitResponseApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *LimitResponseApplyConfiguration) WithType(value v1.LimitResponseType) *LimitResponseApplyConfiguration {
    +func (b *LimitResponseApplyConfiguration) WithType(value flowcontrolv1.LimitResponseType) *LimitResponseApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/nonresourcepolicyrule.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/nonresourcepolicyrule.go
    index d9f8c2eccf68..29c26b3406e7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/nonresourcepolicyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/nonresourcepolicyrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// NonResourcePolicyRuleApplyConfiguration represents an declarative configuration of the NonResourcePolicyRule type for use
    +// NonResourcePolicyRuleApplyConfiguration represents a declarative configuration of the NonResourcePolicyRule type for use
     // with apply.
     type NonResourcePolicyRuleApplyConfiguration struct {
     	Verbs           []string `json:"verbs,omitempty"`
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty"`
     }
     
    -// NonResourcePolicyRuleApplyConfiguration constructs an declarative configuration of the NonResourcePolicyRule type for use with
    +// NonResourcePolicyRuleApplyConfiguration constructs a declarative configuration of the NonResourcePolicyRule type for use with
     // apply.
     func NonResourcePolicyRule() *NonResourcePolicyRuleApplyConfiguration {
     	return &NonResourcePolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/policyruleswithsubjects.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/policyruleswithsubjects.go
    index b193efa8bf06..088afdc584b5 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/policyruleswithsubjects.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/policyruleswithsubjects.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// PolicyRulesWithSubjectsApplyConfiguration represents an declarative configuration of the PolicyRulesWithSubjects type for use
    +// PolicyRulesWithSubjectsApplyConfiguration represents a declarative configuration of the PolicyRulesWithSubjects type for use
     // with apply.
     type PolicyRulesWithSubjectsApplyConfiguration struct {
     	Subjects         []SubjectApplyConfiguration               `json:"subjects,omitempty"`
    @@ -26,7 +26,7 @@ type PolicyRulesWithSubjectsApplyConfiguration struct {
     	NonResourceRules []NonResourcePolicyRuleApplyConfiguration `json:"nonResourceRules,omitempty"`
     }
     
    -// PolicyRulesWithSubjectsApplyConfiguration constructs an declarative configuration of the PolicyRulesWithSubjects type for use with
    +// PolicyRulesWithSubjectsApplyConfiguration constructs a declarative configuration of the PolicyRulesWithSubjects type for use with
     // apply.
     func PolicyRulesWithSubjects() *PolicyRulesWithSubjectsApplyConfiguration {
     	return &PolicyRulesWithSubjectsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfiguration.go
    index e8a1b97c9f82..50d5e51326c9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfiguration.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apiflowcontrolv1 "k8s.io/api/flowcontrol/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the PriorityLevelConfiguration type for use
    +// PriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the PriorityLevelConfiguration type for use
     // with apply.
     type PriorityLevelConfigurationApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *PriorityLevelConfigurationSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *PriorityLevelConfigurationStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *PriorityLevelConfigurationSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *PriorityLevelConfigurationStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// PriorityLevelConfiguration constructs an declarative configuration of the PriorityLevelConfiguration type for use with
    +// PriorityLevelConfiguration constructs a declarative configuration of the PriorityLevelConfiguration type for use with
     // apply.
     func PriorityLevelConfiguration(name string) *PriorityLevelConfigurationApplyConfiguration {
     	b := &PriorityLevelConfigurationApplyConfiguration{}
    @@ -57,18 +57,18 @@ func PriorityLevelConfiguration(name string) *PriorityLevelConfigurationApplyCon
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractPriorityLevelConfiguration(priorityLevelConfiguration *apiflowcontrolv1.PriorityLevelConfiguration, fieldManager string) (*PriorityLevelConfigurationApplyConfiguration, error) {
    +func ExtractPriorityLevelConfiguration(priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfiguration, fieldManager string) (*PriorityLevelConfigurationApplyConfiguration, error) {
     	return extractPriorityLevelConfiguration(priorityLevelConfiguration, fieldManager, "")
     }
     
     // ExtractPriorityLevelConfigurationStatus is the same as ExtractPriorityLevelConfiguration except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractPriorityLevelConfigurationStatus(priorityLevelConfiguration *apiflowcontrolv1.PriorityLevelConfiguration, fieldManager string) (*PriorityLevelConfigurationApplyConfiguration, error) {
    +func ExtractPriorityLevelConfigurationStatus(priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfiguration, fieldManager string) (*PriorityLevelConfigurationApplyConfiguration, error) {
     	return extractPriorityLevelConfiguration(priorityLevelConfiguration, fieldManager, "status")
     }
     
    -func extractPriorityLevelConfiguration(priorityLevelConfiguration *apiflowcontrolv1.PriorityLevelConfiguration, fieldManager string, subresource string) (*PriorityLevelConfigurationApplyConfiguration, error) {
    +func extractPriorityLevelConfiguration(priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfiguration, fieldManager string, subresource string) (*PriorityLevelConfigurationApplyConfiguration, error) {
     	b := &PriorityLevelConfigurationApplyConfiguration{}
     	err := managedfields.ExtractInto(priorityLevelConfiguration, internal.Parser().Type("io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractPriorityLevelConfiguration(priorityLevelConfiguration *apiflowcontro
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithKind(value string) *PriorityLevelConfigurationApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithKind(value string) *P
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithAPIVersion(value string) *PriorityLevelConfigurationApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithAPIVersion(value stri
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithName(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithName(value string) *P
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithGenerateName(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithGenerateName(value st
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithNamespace(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithNamespace(value strin
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithUID(value types.UID) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithUID(value types.UID)
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithResourceVersion(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,25 +147,25 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithResourceVersion(value
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithGeneration(value int64) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PriorityLevelConfigurationApplyConfiguration {
    +func (b *PriorityLevelConfigurationApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PriorityLevelConfigurationApplyConfiguration {
    +func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionTimestamp(val
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionGracePeriodSe
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithLabels(entries map[string]string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithLabels(entries map[st
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithAnnotations(entries map[string]string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -211,13 +211,13 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithAnnotations(entries m
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *PriorityLevelConfigurationApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *PriorityLevelConfigurationApplyConfiguration {
    +func (b *PriorityLevelConfigurationApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,14 +228,14 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithOwnerReferences(value
     func (b *PriorityLevelConfigurationApplyConfiguration) WithFinalizers(values ...string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *PriorityLevelConfigurationApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -254,3 +254,9 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithStatus(value *Priorit
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PriorityLevelConfigurationApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationcondition.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationcondition.go
    index 6ce588c8d94f..a7810adfbfaf 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationcondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/flowcontrol/v1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// PriorityLevelConfigurationConditionApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationCondition type for use
    +// PriorityLevelConfigurationConditionApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationCondition type for use
     // with apply.
     type PriorityLevelConfigurationConditionApplyConfiguration struct {
    -	Type               *v1.PriorityLevelConfigurationConditionType `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus                         `json:"status,omitempty"`
    -	LastTransitionTime *metav1.Time                                `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                     `json:"reason,omitempty"`
    -	Message            *string                                     `json:"message,omitempty"`
    +	Type               *flowcontrolv1.PriorityLevelConfigurationConditionType `json:"type,omitempty"`
    +	Status             *flowcontrolv1.ConditionStatus                         `json:"status,omitempty"`
    +	LastTransitionTime *metav1.Time                                           `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                                `json:"reason,omitempty"`
    +	Message            *string                                                `json:"message,omitempty"`
     }
     
    -// PriorityLevelConfigurationConditionApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationCondition type for use with
    +// PriorityLevelConfigurationConditionApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationCondition type for use with
     // apply.
     func PriorityLevelConfigurationCondition() *PriorityLevelConfigurationConditionApplyConfiguration {
     	return &PriorityLevelConfigurationConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func PriorityLevelConfigurationCondition() *PriorityLevelConfigurationConditionA
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value v1.PriorityLevelConfigurationConditionType) *PriorityLevelConfigurationConditionApplyConfiguration {
    +func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value flowcontrolv1.PriorityLevelConfigurationConditionType) *PriorityLevelConfigurationConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value v
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *PriorityLevelConfigurationConditionApplyConfiguration {
    +func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithStatus(value flowcontrolv1.ConditionStatus) *PriorityLevelConfigurationConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationreference.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationreference.go
    index 0638aee8b802..f445713f0cca 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationreference.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// PriorityLevelConfigurationReferenceApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationReference type for use
    +// PriorityLevelConfigurationReferenceApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationReference type for use
     // with apply.
     type PriorityLevelConfigurationReferenceApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// PriorityLevelConfigurationReferenceApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationReference type for use with
    +// PriorityLevelConfigurationReferenceApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationReference type for use with
     // apply.
     func PriorityLevelConfigurationReference() *PriorityLevelConfigurationReferenceApplyConfiguration {
     	return &PriorityLevelConfigurationReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationspec.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationspec.go
    index 5d88749593c4..45e4cdcd8ad0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationspec.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/flowcontrol/v1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
     )
     
    -// PriorityLevelConfigurationSpecApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationSpec type for use
    +// PriorityLevelConfigurationSpecApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationSpec type for use
     // with apply.
     type PriorityLevelConfigurationSpecApplyConfiguration struct {
    -	Type    *v1.PriorityLevelEnablement                          `json:"type,omitempty"`
    +	Type    *flowcontrolv1.PriorityLevelEnablement               `json:"type,omitempty"`
     	Limited *LimitedPriorityLevelConfigurationApplyConfiguration `json:"limited,omitempty"`
     	Exempt  *ExemptPriorityLevelConfigurationApplyConfiguration  `json:"exempt,omitempty"`
     }
     
    -// PriorityLevelConfigurationSpecApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationSpec type for use with
    +// PriorityLevelConfigurationSpecApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationSpec type for use with
     // apply.
     func PriorityLevelConfigurationSpec() *PriorityLevelConfigurationSpecApplyConfiguration {
     	return &PriorityLevelConfigurationSpecApplyConfiguration{}
    @@ -39,7 +39,7 @@ func PriorityLevelConfigurationSpec() *PriorityLevelConfigurationSpecApplyConfig
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationSpecApplyConfiguration) WithType(value v1.PriorityLevelEnablement) *PriorityLevelConfigurationSpecApplyConfiguration {
    +func (b *PriorityLevelConfigurationSpecApplyConfiguration) WithType(value flowcontrolv1.PriorityLevelEnablement) *PriorityLevelConfigurationSpecApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationstatus.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationstatus.go
    index 322871edc690..ff650bc3d58b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/prioritylevelconfigurationstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// PriorityLevelConfigurationStatusApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationStatus type for use
    +// PriorityLevelConfigurationStatusApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationStatus type for use
     // with apply.
     type PriorityLevelConfigurationStatusApplyConfiguration struct {
     	Conditions []PriorityLevelConfigurationConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// PriorityLevelConfigurationStatusApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationStatus type for use with
    +// PriorityLevelConfigurationStatusApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationStatus type for use with
     // apply.
     func PriorityLevelConfigurationStatus() *PriorityLevelConfigurationStatusApplyConfiguration {
     	return &PriorityLevelConfigurationStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/queuingconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/queuingconfiguration.go
    index 69fd2c23ccb4..7488f9bbe2de 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/queuingconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/queuingconfiguration.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// QueuingConfigurationApplyConfiguration represents an declarative configuration of the QueuingConfiguration type for use
    +// QueuingConfigurationApplyConfiguration represents a declarative configuration of the QueuingConfiguration type for use
     // with apply.
     type QueuingConfigurationApplyConfiguration struct {
     	Queues           *int32 `json:"queues,omitempty"`
    @@ -26,7 +26,7 @@ type QueuingConfigurationApplyConfiguration struct {
     	QueueLengthLimit *int32 `json:"queueLengthLimit,omitempty"`
     }
     
    -// QueuingConfigurationApplyConfiguration constructs an declarative configuration of the QueuingConfiguration type for use with
    +// QueuingConfigurationApplyConfiguration constructs a declarative configuration of the QueuingConfiguration type for use with
     // apply.
     func QueuingConfiguration() *QueuingConfigurationApplyConfiguration {
     	return &QueuingConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/resourcepolicyrule.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/resourcepolicyrule.go
    index 0991ce944545..7428582a82eb 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/resourcepolicyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/resourcepolicyrule.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// ResourcePolicyRuleApplyConfiguration represents an declarative configuration of the ResourcePolicyRule type for use
    +// ResourcePolicyRuleApplyConfiguration represents a declarative configuration of the ResourcePolicyRule type for use
     // with apply.
     type ResourcePolicyRuleApplyConfiguration struct {
     	Verbs        []string `json:"verbs,omitempty"`
    @@ -28,7 +28,7 @@ type ResourcePolicyRuleApplyConfiguration struct {
     	Namespaces   []string `json:"namespaces,omitempty"`
     }
     
    -// ResourcePolicyRuleApplyConfiguration constructs an declarative configuration of the ResourcePolicyRule type for use with
    +// ResourcePolicyRuleApplyConfiguration constructs a declarative configuration of the ResourcePolicyRule type for use with
     // apply.
     func ResourcePolicyRule() *ResourcePolicyRuleApplyConfiguration {
     	return &ResourcePolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/serviceaccountsubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/serviceaccountsubject.go
    index 55787ca76736..58ad10764b3d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/serviceaccountsubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/serviceaccountsubject.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ServiceAccountSubjectApplyConfiguration represents an declarative configuration of the ServiceAccountSubject type for use
    +// ServiceAccountSubjectApplyConfiguration represents a declarative configuration of the ServiceAccountSubject type for use
     // with apply.
     type ServiceAccountSubjectApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
     	Name      *string `json:"name,omitempty"`
     }
     
    -// ServiceAccountSubjectApplyConfiguration constructs an declarative configuration of the ServiceAccountSubject type for use with
    +// ServiceAccountSubjectApplyConfiguration constructs a declarative configuration of the ServiceAccountSubject type for use with
     // apply.
     func ServiceAccountSubject() *ServiceAccountSubjectApplyConfiguration {
     	return &ServiceAccountSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/subject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/subject.go
    index f02b03bdc7c3..e2f6f3849b77 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/subject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/subject.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/flowcontrol/v1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
     )
     
    -// SubjectApplyConfiguration represents an declarative configuration of the Subject type for use
    +// SubjectApplyConfiguration represents a declarative configuration of the Subject type for use
     // with apply.
     type SubjectApplyConfiguration struct {
    -	Kind           *v1.SubjectKind                          `json:"kind,omitempty"`
    +	Kind           *flowcontrolv1.SubjectKind               `json:"kind,omitempty"`
     	User           *UserSubjectApplyConfiguration           `json:"user,omitempty"`
     	Group          *GroupSubjectApplyConfiguration          `json:"group,omitempty"`
     	ServiceAccount *ServiceAccountSubjectApplyConfiguration `json:"serviceAccount,omitempty"`
     }
     
    -// SubjectApplyConfiguration constructs an declarative configuration of the Subject type for use with
    +// SubjectApplyConfiguration constructs a declarative configuration of the Subject type for use with
     // apply.
     func Subject() *SubjectApplyConfiguration {
     	return &SubjectApplyConfiguration{}
    @@ -40,7 +40,7 @@ func Subject() *SubjectApplyConfiguration {
     // WithKind sets the Kind field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
    -func (b *SubjectApplyConfiguration) WithKind(value v1.SubjectKind) *SubjectApplyConfiguration {
    +func (b *SubjectApplyConfiguration) WithKind(value flowcontrolv1.SubjectKind) *SubjectApplyConfiguration {
     	b.Kind = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/usersubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/usersubject.go
    index 2d17c111c6ab..fd90067d4dac 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/usersubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/usersubject.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// UserSubjectApplyConfiguration represents an declarative configuration of the UserSubject type for use
    +// UserSubjectApplyConfiguration represents a declarative configuration of the UserSubject type for use
     // with apply.
     type UserSubjectApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// UserSubjectApplyConfiguration constructs an declarative configuration of the UserSubject type for use with
    +// UserSubjectApplyConfiguration constructs a declarative configuration of the UserSubject type for use with
     // apply.
     func UserSubject() *UserSubjectApplyConfiguration {
     	return &UserSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/exemptprioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/exemptprioritylevelconfiguration.go
    index 071048090081..45ccc5cb7593 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/exemptprioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/exemptprioritylevelconfiguration.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// ExemptPriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the ExemptPriorityLevelConfiguration type for use
    +// ExemptPriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the ExemptPriorityLevelConfiguration type for use
     // with apply.
     type ExemptPriorityLevelConfigurationApplyConfiguration struct {
     	NominalConcurrencyShares *int32 `json:"nominalConcurrencyShares,omitempty"`
     	LendablePercent          *int32 `json:"lendablePercent,omitempty"`
     }
     
    -// ExemptPriorityLevelConfigurationApplyConfiguration constructs an declarative configuration of the ExemptPriorityLevelConfiguration type for use with
    +// ExemptPriorityLevelConfigurationApplyConfiguration constructs a declarative configuration of the ExemptPriorityLevelConfiguration type for use with
     // apply.
     func ExemptPriorityLevelConfiguration() *ExemptPriorityLevelConfigurationApplyConfiguration {
     	return &ExemptPriorityLevelConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowdistinguishermethod.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowdistinguishermethod.go
    index 6dc1bb4d683f..11aa62bba200 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowdistinguishermethod.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowdistinguishermethod.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
     )
     
    -// FlowDistinguisherMethodApplyConfiguration represents an declarative configuration of the FlowDistinguisherMethod type for use
    +// FlowDistinguisherMethodApplyConfiguration represents a declarative configuration of the FlowDistinguisherMethod type for use
     // with apply.
     type FlowDistinguisherMethodApplyConfiguration struct {
    -	Type *v1beta1.FlowDistinguisherMethodType `json:"type,omitempty"`
    +	Type *flowcontrolv1beta1.FlowDistinguisherMethodType `json:"type,omitempty"`
     }
     
    -// FlowDistinguisherMethodApplyConfiguration constructs an declarative configuration of the FlowDistinguisherMethod type for use with
    +// FlowDistinguisherMethodApplyConfiguration constructs a declarative configuration of the FlowDistinguisherMethod type for use with
     // apply.
     func FlowDistinguisherMethod() *FlowDistinguisherMethodApplyConfiguration {
     	return &FlowDistinguisherMethodApplyConfiguration{}
    @@ -37,7 +37,7 @@ func FlowDistinguisherMethod() *FlowDistinguisherMethodApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *FlowDistinguisherMethodApplyConfiguration) WithType(value v1beta1.FlowDistinguisherMethodType) *FlowDistinguisherMethodApplyConfiguration {
    +func (b *FlowDistinguisherMethodApplyConfiguration) WithType(value flowcontrolv1beta1.FlowDistinguisherMethodType) *FlowDistinguisherMethodApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschema.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschema.go
    index f44313f54ef1..f5d69b8a50b0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschema.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschema.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// FlowSchemaApplyConfiguration represents an declarative configuration of the FlowSchema type for use
    +// FlowSchemaApplyConfiguration represents a declarative configuration of the FlowSchema type for use
     // with apply.
     type FlowSchemaApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type FlowSchemaApplyConfiguration struct {
     	Status                           *FlowSchemaStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// FlowSchema constructs an declarative configuration of the FlowSchema type for use with
    +// FlowSchema constructs a declarative configuration of the FlowSchema type for use with
     // apply.
     func FlowSchema(name string) *FlowSchemaApplyConfiguration {
     	b := &FlowSchemaApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractFlowSchema(flowSchema *flowcontrolv1beta1.FlowSchema, fieldManager s
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithKind(value string) *FlowSchemaApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *FlowSchemaApplyConfiguration) WithKind(value string) *FlowSchemaApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithAPIVersion(value string) *FlowSchemaApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *FlowSchemaApplyConfiguration) WithAPIVersion(value string) *FlowSchemaA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithName(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *FlowSchemaApplyConfiguration) WithName(value string) *FlowSchemaApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithGenerateName(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *FlowSchemaApplyConfiguration) WithGenerateName(value string) *FlowSchem
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithNamespace(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *FlowSchemaApplyConfiguration) WithNamespace(value string) *FlowSchemaAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithUID(value types.UID) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *FlowSchemaApplyConfiguration) WithUID(value types.UID) *FlowSchemaApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithResourceVersion(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *FlowSchemaApplyConfiguration) WithResourceVersion(value string) *FlowSc
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithGeneration(value int64) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *FlowSchemaApplyConfiguration) WithGeneration(value int64) *FlowSchemaAp
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithCreationTimestamp(value metav1.Time) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *FlowSchemaApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *FlowSchemaApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *FlowSchemaApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *FlowSchemaApplyConfiguration) WithLabels(entries map[string]string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *FlowSchemaApplyConfiguration) WithLabels(entries map[string]string) *Fl
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *FlowSchemaApplyConfiguration) WithAnnotations(entries map[string]string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *FlowSchemaApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *FlowSchemaApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *FlowSchemaApplyConfiguration) WithFinalizers(values ...string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *FlowSchemaApplyConfiguration) WithStatus(value *FlowSchemaStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *FlowSchemaApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemacondition.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemacondition.go
    index b62e9a22ff30..e7dcb4366ac3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemacondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemacondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// FlowSchemaConditionApplyConfiguration represents an declarative configuration of the FlowSchemaCondition type for use
    +// FlowSchemaConditionApplyConfiguration represents a declarative configuration of the FlowSchemaCondition type for use
     // with apply.
     type FlowSchemaConditionApplyConfiguration struct {
    -	Type               *v1beta1.FlowSchemaConditionType `json:"type,omitempty"`
    -	Status             *v1beta1.ConditionStatus         `json:"status,omitempty"`
    -	LastTransitionTime *v1.Time                         `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                          `json:"reason,omitempty"`
    -	Message            *string                          `json:"message,omitempty"`
    +	Type               *flowcontrolv1beta1.FlowSchemaConditionType `json:"type,omitempty"`
    +	Status             *flowcontrolv1beta1.ConditionStatus         `json:"status,omitempty"`
    +	LastTransitionTime *v1.Time                                    `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                     `json:"reason,omitempty"`
    +	Message            *string                                     `json:"message,omitempty"`
     }
     
    -// FlowSchemaConditionApplyConfiguration constructs an declarative configuration of the FlowSchemaCondition type for use with
    +// FlowSchemaConditionApplyConfiguration constructs a declarative configuration of the FlowSchemaCondition type for use with
     // apply.
     func FlowSchemaCondition() *FlowSchemaConditionApplyConfiguration {
     	return &FlowSchemaConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func FlowSchemaCondition() *FlowSchemaConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *FlowSchemaConditionApplyConfiguration) WithType(value v1beta1.FlowSchemaConditionType) *FlowSchemaConditionApplyConfiguration {
    +func (b *FlowSchemaConditionApplyConfiguration) WithType(value flowcontrolv1beta1.FlowSchemaConditionType) *FlowSchemaConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *FlowSchemaConditionApplyConfiguration) WithType(value v1beta1.FlowSchem
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *FlowSchemaConditionApplyConfiguration) WithStatus(value v1beta1.ConditionStatus) *FlowSchemaConditionApplyConfiguration {
    +func (b *FlowSchemaConditionApplyConfiguration) WithStatus(value flowcontrolv1beta1.ConditionStatus) *FlowSchemaConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemaspec.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemaspec.go
    index 8d72c2d0d725..1d6e8fc58e76 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemaspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemaspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// FlowSchemaSpecApplyConfiguration represents an declarative configuration of the FlowSchemaSpec type for use
    +// FlowSchemaSpecApplyConfiguration represents a declarative configuration of the FlowSchemaSpec type for use
     // with apply.
     type FlowSchemaSpecApplyConfiguration struct {
     	PriorityLevelConfiguration *PriorityLevelConfigurationReferenceApplyConfiguration `json:"priorityLevelConfiguration,omitempty"`
    @@ -27,7 +27,7 @@ type FlowSchemaSpecApplyConfiguration struct {
     	Rules                      []PolicyRulesWithSubjectsApplyConfiguration            `json:"rules,omitempty"`
     }
     
    -// FlowSchemaSpecApplyConfiguration constructs an declarative configuration of the FlowSchemaSpec type for use with
    +// FlowSchemaSpecApplyConfiguration constructs a declarative configuration of the FlowSchemaSpec type for use with
     // apply.
     func FlowSchemaSpec() *FlowSchemaSpecApplyConfiguration {
     	return &FlowSchemaSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemastatus.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemastatus.go
    index 6bc6d0543a04..5ad8a432b285 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemastatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/flowschemastatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// FlowSchemaStatusApplyConfiguration represents an declarative configuration of the FlowSchemaStatus type for use
    +// FlowSchemaStatusApplyConfiguration represents a declarative configuration of the FlowSchemaStatus type for use
     // with apply.
     type FlowSchemaStatusApplyConfiguration struct {
     	Conditions []FlowSchemaConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// FlowSchemaStatusApplyConfiguration constructs an declarative configuration of the FlowSchemaStatus type for use with
    +// FlowSchemaStatusApplyConfiguration constructs a declarative configuration of the FlowSchemaStatus type for use with
     // apply.
     func FlowSchemaStatus() *FlowSchemaStatusApplyConfiguration {
     	return &FlowSchemaStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/groupsubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/groupsubject.go
    index 95b416e426c7..cc274fe2f3b8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/groupsubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/groupsubject.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// GroupSubjectApplyConfiguration represents an declarative configuration of the GroupSubject type for use
    +// GroupSubjectApplyConfiguration represents a declarative configuration of the GroupSubject type for use
     // with apply.
     type GroupSubjectApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// GroupSubjectApplyConfiguration constructs an declarative configuration of the GroupSubject type for use with
    +// GroupSubjectApplyConfiguration constructs a declarative configuration of the GroupSubject type for use with
     // apply.
     func GroupSubject() *GroupSubjectApplyConfiguration {
     	return &GroupSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/limitedprioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/limitedprioritylevelconfiguration.go
    index 6f57169e1ff6..0fe5feca12fa 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/limitedprioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/limitedprioritylevelconfiguration.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// LimitedPriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the LimitedPriorityLevelConfiguration type for use
    +// LimitedPriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the LimitedPriorityLevelConfiguration type for use
     // with apply.
     type LimitedPriorityLevelConfigurationApplyConfiguration struct {
     	AssuredConcurrencyShares *int32                           `json:"assuredConcurrencyShares,omitempty"`
    @@ -27,7 +27,7 @@ type LimitedPriorityLevelConfigurationApplyConfiguration struct {
     	BorrowingLimitPercent    *int32                           `json:"borrowingLimitPercent,omitempty"`
     }
     
    -// LimitedPriorityLevelConfigurationApplyConfiguration constructs an declarative configuration of the LimitedPriorityLevelConfiguration type for use with
    +// LimitedPriorityLevelConfigurationApplyConfiguration constructs a declarative configuration of the LimitedPriorityLevelConfiguration type for use with
     // apply.
     func LimitedPriorityLevelConfiguration() *LimitedPriorityLevelConfigurationApplyConfiguration {
     	return &LimitedPriorityLevelConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/limitresponse.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/limitresponse.go
    index 86e1bef6b917..20e1b17bd39a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/limitresponse.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/limitresponse.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
     )
     
    -// LimitResponseApplyConfiguration represents an declarative configuration of the LimitResponse type for use
    +// LimitResponseApplyConfiguration represents a declarative configuration of the LimitResponse type for use
     // with apply.
     type LimitResponseApplyConfiguration struct {
    -	Type    *v1beta1.LimitResponseType              `json:"type,omitempty"`
    +	Type    *flowcontrolv1beta1.LimitResponseType   `json:"type,omitempty"`
     	Queuing *QueuingConfigurationApplyConfiguration `json:"queuing,omitempty"`
     }
     
    -// LimitResponseApplyConfiguration constructs an declarative configuration of the LimitResponse type for use with
    +// LimitResponseApplyConfiguration constructs a declarative configuration of the LimitResponse type for use with
     // apply.
     func LimitResponse() *LimitResponseApplyConfiguration {
     	return &LimitResponseApplyConfiguration{}
    @@ -38,7 +38,7 @@ func LimitResponse() *LimitResponseApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *LimitResponseApplyConfiguration) WithType(value v1beta1.LimitResponseType) *LimitResponseApplyConfiguration {
    +func (b *LimitResponseApplyConfiguration) WithType(value flowcontrolv1beta1.LimitResponseType) *LimitResponseApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/nonresourcepolicyrule.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/nonresourcepolicyrule.go
    index 594ebc9912ea..3c571ccb062c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/nonresourcepolicyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/nonresourcepolicyrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// NonResourcePolicyRuleApplyConfiguration represents an declarative configuration of the NonResourcePolicyRule type for use
    +// NonResourcePolicyRuleApplyConfiguration represents a declarative configuration of the NonResourcePolicyRule type for use
     // with apply.
     type NonResourcePolicyRuleApplyConfiguration struct {
     	Verbs           []string `json:"verbs,omitempty"`
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty"`
     }
     
    -// NonResourcePolicyRuleApplyConfiguration constructs an declarative configuration of the NonResourcePolicyRule type for use with
    +// NonResourcePolicyRuleApplyConfiguration constructs a declarative configuration of the NonResourcePolicyRule type for use with
     // apply.
     func NonResourcePolicyRule() *NonResourcePolicyRuleApplyConfiguration {
     	return &NonResourcePolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/policyruleswithsubjects.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/policyruleswithsubjects.go
    index ea5b266b4c30..32a082dc76da 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/policyruleswithsubjects.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/policyruleswithsubjects.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// PolicyRulesWithSubjectsApplyConfiguration represents an declarative configuration of the PolicyRulesWithSubjects type for use
    +// PolicyRulesWithSubjectsApplyConfiguration represents a declarative configuration of the PolicyRulesWithSubjects type for use
     // with apply.
     type PolicyRulesWithSubjectsApplyConfiguration struct {
     	Subjects         []SubjectApplyConfiguration               `json:"subjects,omitempty"`
    @@ -26,7 +26,7 @@ type PolicyRulesWithSubjectsApplyConfiguration struct {
     	NonResourceRules []NonResourcePolicyRuleApplyConfiguration `json:"nonResourceRules,omitempty"`
     }
     
    -// PolicyRulesWithSubjectsApplyConfiguration constructs an declarative configuration of the PolicyRulesWithSubjects type for use with
    +// PolicyRulesWithSubjectsApplyConfiguration constructs a declarative configuration of the PolicyRulesWithSubjects type for use with
     // apply.
     func PolicyRulesWithSubjects() *PolicyRulesWithSubjectsApplyConfiguration {
     	return &PolicyRulesWithSubjectsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfiguration.go
    index 84324dbfdcee..54030159e31b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfiguration.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the PriorityLevelConfiguration type for use
    +// PriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the PriorityLevelConfiguration type for use
     // with apply.
     type PriorityLevelConfigurationApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type PriorityLevelConfigurationApplyConfiguration struct {
     	Status                           *PriorityLevelConfigurationStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// PriorityLevelConfiguration constructs an declarative configuration of the PriorityLevelConfiguration type for use with
    +// PriorityLevelConfiguration constructs a declarative configuration of the PriorityLevelConfiguration type for use with
     // apply.
     func PriorityLevelConfiguration(name string) *PriorityLevelConfigurationApplyConfiguration {
     	b := &PriorityLevelConfigurationApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractPriorityLevelConfiguration(priorityLevelConfiguration *flowcontrolv1
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithKind(value string) *PriorityLevelConfigurationApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithKind(value string) *P
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithAPIVersion(value string) *PriorityLevelConfigurationApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithAPIVersion(value stri
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithName(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithName(value string) *P
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithGenerateName(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithGenerateName(value st
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithNamespace(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithNamespace(value strin
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithUID(value types.UID) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithUID(value types.UID)
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithResourceVersion(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithResourceVersion(value
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithGeneration(value int64) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithGeneration(value int6
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithCreationTimestamp(val
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionTimestamp(val
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionGracePeriodSe
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithLabels(entries map[string]string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithLabels(entries map[st
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithAnnotations(entries map[string]string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithOwnerReferences(value
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithOwnerReferences(value
     func (b *PriorityLevelConfigurationApplyConfiguration) WithFinalizers(values ...string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithStatus(value *Priorit
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PriorityLevelConfigurationApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationcondition.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationcondition.go
    index 59bc61051072..74eda91700af 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationcondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// PriorityLevelConfigurationConditionApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationCondition type for use
    +// PriorityLevelConfigurationConditionApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationCondition type for use
     // with apply.
     type PriorityLevelConfigurationConditionApplyConfiguration struct {
    -	Type               *v1beta1.PriorityLevelConfigurationConditionType `json:"type,omitempty"`
    -	Status             *v1beta1.ConditionStatus                         `json:"status,omitempty"`
    -	LastTransitionTime *v1.Time                                         `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                          `json:"reason,omitempty"`
    -	Message            *string                                          `json:"message,omitempty"`
    +	Type               *flowcontrolv1beta1.PriorityLevelConfigurationConditionType `json:"type,omitempty"`
    +	Status             *flowcontrolv1beta1.ConditionStatus                         `json:"status,omitempty"`
    +	LastTransitionTime *v1.Time                                                    `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                                     `json:"reason,omitempty"`
    +	Message            *string                                                     `json:"message,omitempty"`
     }
     
    -// PriorityLevelConfigurationConditionApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationCondition type for use with
    +// PriorityLevelConfigurationConditionApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationCondition type for use with
     // apply.
     func PriorityLevelConfigurationCondition() *PriorityLevelConfigurationConditionApplyConfiguration {
     	return &PriorityLevelConfigurationConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func PriorityLevelConfigurationCondition() *PriorityLevelConfigurationConditionA
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value v1beta1.PriorityLevelConfigurationConditionType) *PriorityLevelConfigurationConditionApplyConfiguration {
    +func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value flowcontrolv1beta1.PriorityLevelConfigurationConditionType) *PriorityLevelConfigurationConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value v
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithStatus(value v1beta1.ConditionStatus) *PriorityLevelConfigurationConditionApplyConfiguration {
    +func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithStatus(value flowcontrolv1beta1.ConditionStatus) *PriorityLevelConfigurationConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationreference.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationreference.go
    index c44bcc08b4ce..b5e773e82ac1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationreference.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// PriorityLevelConfigurationReferenceApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationReference type for use
    +// PriorityLevelConfigurationReferenceApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationReference type for use
     // with apply.
     type PriorityLevelConfigurationReferenceApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// PriorityLevelConfigurationReferenceApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationReference type for use with
    +// PriorityLevelConfigurationReferenceApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationReference type for use with
     // apply.
     func PriorityLevelConfigurationReference() *PriorityLevelConfigurationReferenceApplyConfiguration {
     	return &PriorityLevelConfigurationReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationspec.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationspec.go
    index 19146d9f668a..775f476ddd60 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationspec.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
     )
     
    -// PriorityLevelConfigurationSpecApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationSpec type for use
    +// PriorityLevelConfigurationSpecApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationSpec type for use
     // with apply.
     type PriorityLevelConfigurationSpecApplyConfiguration struct {
    -	Type    *v1beta1.PriorityLevelEnablement                     `json:"type,omitempty"`
    +	Type    *flowcontrolv1beta1.PriorityLevelEnablement          `json:"type,omitempty"`
     	Limited *LimitedPriorityLevelConfigurationApplyConfiguration `json:"limited,omitempty"`
     	Exempt  *ExemptPriorityLevelConfigurationApplyConfiguration  `json:"exempt,omitempty"`
     }
     
    -// PriorityLevelConfigurationSpecApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationSpec type for use with
    +// PriorityLevelConfigurationSpecApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationSpec type for use with
     // apply.
     func PriorityLevelConfigurationSpec() *PriorityLevelConfigurationSpecApplyConfiguration {
     	return &PriorityLevelConfigurationSpecApplyConfiguration{}
    @@ -39,7 +39,7 @@ func PriorityLevelConfigurationSpec() *PriorityLevelConfigurationSpecApplyConfig
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationSpecApplyConfiguration) WithType(value v1beta1.PriorityLevelEnablement) *PriorityLevelConfigurationSpecApplyConfiguration {
    +func (b *PriorityLevelConfigurationSpecApplyConfiguration) WithType(value flowcontrolv1beta1.PriorityLevelEnablement) *PriorityLevelConfigurationSpecApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationstatus.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationstatus.go
    index 3c27e6aa62ca..875b01efec9d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/prioritylevelconfigurationstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// PriorityLevelConfigurationStatusApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationStatus type for use
    +// PriorityLevelConfigurationStatusApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationStatus type for use
     // with apply.
     type PriorityLevelConfigurationStatusApplyConfiguration struct {
     	Conditions []PriorityLevelConfigurationConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// PriorityLevelConfigurationStatusApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationStatus type for use with
    +// PriorityLevelConfigurationStatusApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationStatus type for use with
     // apply.
     func PriorityLevelConfigurationStatus() *PriorityLevelConfigurationStatusApplyConfiguration {
     	return &PriorityLevelConfigurationStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/queuingconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/queuingconfiguration.go
    index 5e6e6e7b018a..85a8b88630f6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/queuingconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/queuingconfiguration.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// QueuingConfigurationApplyConfiguration represents an declarative configuration of the QueuingConfiguration type for use
    +// QueuingConfigurationApplyConfiguration represents a declarative configuration of the QueuingConfiguration type for use
     // with apply.
     type QueuingConfigurationApplyConfiguration struct {
     	Queues           *int32 `json:"queues,omitempty"`
    @@ -26,7 +26,7 @@ type QueuingConfigurationApplyConfiguration struct {
     	QueueLengthLimit *int32 `json:"queueLengthLimit,omitempty"`
     }
     
    -// QueuingConfigurationApplyConfiguration constructs an declarative configuration of the QueuingConfiguration type for use with
    +// QueuingConfigurationApplyConfiguration constructs a declarative configuration of the QueuingConfiguration type for use with
     // apply.
     func QueuingConfiguration() *QueuingConfigurationApplyConfiguration {
     	return &QueuingConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/resourcepolicyrule.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/resourcepolicyrule.go
    index 2e12ee1cc000..5c67dad75925 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/resourcepolicyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/resourcepolicyrule.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// ResourcePolicyRuleApplyConfiguration represents an declarative configuration of the ResourcePolicyRule type for use
    +// ResourcePolicyRuleApplyConfiguration represents a declarative configuration of the ResourcePolicyRule type for use
     // with apply.
     type ResourcePolicyRuleApplyConfiguration struct {
     	Verbs        []string `json:"verbs,omitempty"`
    @@ -28,7 +28,7 @@ type ResourcePolicyRuleApplyConfiguration struct {
     	Namespaces   []string `json:"namespaces,omitempty"`
     }
     
    -// ResourcePolicyRuleApplyConfiguration constructs an declarative configuration of the ResourcePolicyRule type for use with
    +// ResourcePolicyRuleApplyConfiguration constructs a declarative configuration of the ResourcePolicyRule type for use with
     // apply.
     func ResourcePolicyRule() *ResourcePolicyRuleApplyConfiguration {
     	return &ResourcePolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/serviceaccountsubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/serviceaccountsubject.go
    index f5a146a9b13e..439e5ff75308 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/serviceaccountsubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/serviceaccountsubject.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// ServiceAccountSubjectApplyConfiguration represents an declarative configuration of the ServiceAccountSubject type for use
    +// ServiceAccountSubjectApplyConfiguration represents a declarative configuration of the ServiceAccountSubject type for use
     // with apply.
     type ServiceAccountSubjectApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
     	Name      *string `json:"name,omitempty"`
     }
     
    -// ServiceAccountSubjectApplyConfiguration constructs an declarative configuration of the ServiceAccountSubject type for use with
    +// ServiceAccountSubjectApplyConfiguration constructs a declarative configuration of the ServiceAccountSubject type for use with
     // apply.
     func ServiceAccountSubject() *ServiceAccountSubjectApplyConfiguration {
     	return &ServiceAccountSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/subject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/subject.go
    index af571029fc71..000508065dac 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/subject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/subject.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
     )
     
    -// SubjectApplyConfiguration represents an declarative configuration of the Subject type for use
    +// SubjectApplyConfiguration represents a declarative configuration of the Subject type for use
     // with apply.
     type SubjectApplyConfiguration struct {
    -	Kind           *v1beta1.SubjectKind                     `json:"kind,omitempty"`
    +	Kind           *flowcontrolv1beta1.SubjectKind          `json:"kind,omitempty"`
     	User           *UserSubjectApplyConfiguration           `json:"user,omitempty"`
     	Group          *GroupSubjectApplyConfiguration          `json:"group,omitempty"`
     	ServiceAccount *ServiceAccountSubjectApplyConfiguration `json:"serviceAccount,omitempty"`
     }
     
    -// SubjectApplyConfiguration constructs an declarative configuration of the Subject type for use with
    +// SubjectApplyConfiguration constructs a declarative configuration of the Subject type for use with
     // apply.
     func Subject() *SubjectApplyConfiguration {
     	return &SubjectApplyConfiguration{}
    @@ -40,7 +40,7 @@ func Subject() *SubjectApplyConfiguration {
     // WithKind sets the Kind field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
    -func (b *SubjectApplyConfiguration) WithKind(value v1beta1.SubjectKind) *SubjectApplyConfiguration {
    +func (b *SubjectApplyConfiguration) WithKind(value flowcontrolv1beta1.SubjectKind) *SubjectApplyConfiguration {
     	b.Kind = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/usersubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/usersubject.go
    index 35bf27a5935e..bc2deae4c2c3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/usersubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1/usersubject.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// UserSubjectApplyConfiguration represents an declarative configuration of the UserSubject type for use
    +// UserSubjectApplyConfiguration represents a declarative configuration of the UserSubject type for use
     // with apply.
     type UserSubjectApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// UserSubjectApplyConfiguration constructs an declarative configuration of the UserSubject type for use with
    +// UserSubjectApplyConfiguration constructs a declarative configuration of the UserSubject type for use with
     // apply.
     func UserSubject() *UserSubjectApplyConfiguration {
     	return &UserSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/exemptprioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/exemptprioritylevelconfiguration.go
    index d6bc330fe7a3..0c02d9b3892f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/exemptprioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/exemptprioritylevelconfiguration.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta2
     
    -// ExemptPriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the ExemptPriorityLevelConfiguration type for use
    +// ExemptPriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the ExemptPriorityLevelConfiguration type for use
     // with apply.
     type ExemptPriorityLevelConfigurationApplyConfiguration struct {
     	NominalConcurrencyShares *int32 `json:"nominalConcurrencyShares,omitempty"`
     	LendablePercent          *int32 `json:"lendablePercent,omitempty"`
     }
     
    -// ExemptPriorityLevelConfigurationApplyConfiguration constructs an declarative configuration of the ExemptPriorityLevelConfiguration type for use with
    +// ExemptPriorityLevelConfigurationApplyConfiguration constructs a declarative configuration of the ExemptPriorityLevelConfiguration type for use with
     // apply.
     func ExemptPriorityLevelConfiguration() *ExemptPriorityLevelConfigurationApplyConfiguration {
     	return &ExemptPriorityLevelConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowdistinguishermethod.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowdistinguishermethod.go
    index 924f966d487a..3922c4729601 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowdistinguishermethod.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowdistinguishermethod.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
     )
     
    -// FlowDistinguisherMethodApplyConfiguration represents an declarative configuration of the FlowDistinguisherMethod type for use
    +// FlowDistinguisherMethodApplyConfiguration represents a declarative configuration of the FlowDistinguisherMethod type for use
     // with apply.
     type FlowDistinguisherMethodApplyConfiguration struct {
    -	Type *v1beta2.FlowDistinguisherMethodType `json:"type,omitempty"`
    +	Type *flowcontrolv1beta2.FlowDistinguisherMethodType `json:"type,omitempty"`
     }
     
    -// FlowDistinguisherMethodApplyConfiguration constructs an declarative configuration of the FlowDistinguisherMethod type for use with
    +// FlowDistinguisherMethodApplyConfiguration constructs a declarative configuration of the FlowDistinguisherMethod type for use with
     // apply.
     func FlowDistinguisherMethod() *FlowDistinguisherMethodApplyConfiguration {
     	return &FlowDistinguisherMethodApplyConfiguration{}
    @@ -37,7 +37,7 @@ func FlowDistinguisherMethod() *FlowDistinguisherMethodApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *FlowDistinguisherMethodApplyConfiguration) WithType(value v1beta2.FlowDistinguisherMethodType) *FlowDistinguisherMethodApplyConfiguration {
    +func (b *FlowDistinguisherMethodApplyConfiguration) WithType(value flowcontrolv1beta2.FlowDistinguisherMethodType) *FlowDistinguisherMethodApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschema.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschema.go
    index 63a5f0aa30c7..fcab6df87fa9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschema.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschema.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// FlowSchemaApplyConfiguration represents an declarative configuration of the FlowSchema type for use
    +// FlowSchemaApplyConfiguration represents a declarative configuration of the FlowSchema type for use
     // with apply.
     type FlowSchemaApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type FlowSchemaApplyConfiguration struct {
     	Status                           *FlowSchemaStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// FlowSchema constructs an declarative configuration of the FlowSchema type for use with
    +// FlowSchema constructs a declarative configuration of the FlowSchema type for use with
     // apply.
     func FlowSchema(name string) *FlowSchemaApplyConfiguration {
     	b := &FlowSchemaApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractFlowSchema(flowSchema *flowcontrolv1beta2.FlowSchema, fieldManager s
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithKind(value string) *FlowSchemaApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *FlowSchemaApplyConfiguration) WithKind(value string) *FlowSchemaApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithAPIVersion(value string) *FlowSchemaApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *FlowSchemaApplyConfiguration) WithAPIVersion(value string) *FlowSchemaA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithName(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *FlowSchemaApplyConfiguration) WithName(value string) *FlowSchemaApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithGenerateName(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *FlowSchemaApplyConfiguration) WithGenerateName(value string) *FlowSchem
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithNamespace(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *FlowSchemaApplyConfiguration) WithNamespace(value string) *FlowSchemaAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithUID(value types.UID) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *FlowSchemaApplyConfiguration) WithUID(value types.UID) *FlowSchemaApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithResourceVersion(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *FlowSchemaApplyConfiguration) WithResourceVersion(value string) *FlowSc
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithGeneration(value int64) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *FlowSchemaApplyConfiguration) WithGeneration(value int64) *FlowSchemaAp
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithCreationTimestamp(value metav1.Time) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *FlowSchemaApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *FlowSchemaApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *FlowSchemaApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *FlowSchemaApplyConfiguration) WithLabels(entries map[string]string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *FlowSchemaApplyConfiguration) WithLabels(entries map[string]string) *Fl
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *FlowSchemaApplyConfiguration) WithAnnotations(entries map[string]string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *FlowSchemaApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *FlowSchemaApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *FlowSchemaApplyConfiguration) WithFinalizers(values ...string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *FlowSchemaApplyConfiguration) WithStatus(value *FlowSchemaStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *FlowSchemaApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemacondition.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemacondition.go
    index 04dfcbf11a90..f47130eeb073 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemacondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemacondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// FlowSchemaConditionApplyConfiguration represents an declarative configuration of the FlowSchemaCondition type for use
    +// FlowSchemaConditionApplyConfiguration represents a declarative configuration of the FlowSchemaCondition type for use
     // with apply.
     type FlowSchemaConditionApplyConfiguration struct {
    -	Type               *v1beta2.FlowSchemaConditionType `json:"type,omitempty"`
    -	Status             *v1beta2.ConditionStatus         `json:"status,omitempty"`
    -	LastTransitionTime *v1.Time                         `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                          `json:"reason,omitempty"`
    -	Message            *string                          `json:"message,omitempty"`
    +	Type               *flowcontrolv1beta2.FlowSchemaConditionType `json:"type,omitempty"`
    +	Status             *flowcontrolv1beta2.ConditionStatus         `json:"status,omitempty"`
    +	LastTransitionTime *v1.Time                                    `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                     `json:"reason,omitempty"`
    +	Message            *string                                     `json:"message,omitempty"`
     }
     
    -// FlowSchemaConditionApplyConfiguration constructs an declarative configuration of the FlowSchemaCondition type for use with
    +// FlowSchemaConditionApplyConfiguration constructs a declarative configuration of the FlowSchemaCondition type for use with
     // apply.
     func FlowSchemaCondition() *FlowSchemaConditionApplyConfiguration {
     	return &FlowSchemaConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func FlowSchemaCondition() *FlowSchemaConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *FlowSchemaConditionApplyConfiguration) WithType(value v1beta2.FlowSchemaConditionType) *FlowSchemaConditionApplyConfiguration {
    +func (b *FlowSchemaConditionApplyConfiguration) WithType(value flowcontrolv1beta2.FlowSchemaConditionType) *FlowSchemaConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *FlowSchemaConditionApplyConfiguration) WithType(value v1beta2.FlowSchem
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *FlowSchemaConditionApplyConfiguration) WithStatus(value v1beta2.ConditionStatus) *FlowSchemaConditionApplyConfiguration {
    +func (b *FlowSchemaConditionApplyConfiguration) WithStatus(value flowcontrolv1beta2.ConditionStatus) *FlowSchemaConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemaspec.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemaspec.go
    index a5477e2768f9..6eab63bfa9f6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemaspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemaspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta2
     
    -// FlowSchemaSpecApplyConfiguration represents an declarative configuration of the FlowSchemaSpec type for use
    +// FlowSchemaSpecApplyConfiguration represents a declarative configuration of the FlowSchemaSpec type for use
     // with apply.
     type FlowSchemaSpecApplyConfiguration struct {
     	PriorityLevelConfiguration *PriorityLevelConfigurationReferenceApplyConfiguration `json:"priorityLevelConfiguration,omitempty"`
    @@ -27,7 +27,7 @@ type FlowSchemaSpecApplyConfiguration struct {
     	Rules                      []PolicyRulesWithSubjectsApplyConfiguration            `json:"rules,omitempty"`
     }
     
    -// FlowSchemaSpecApplyConfiguration constructs an declarative configuration of the FlowSchemaSpec type for use with
    +// FlowSchemaSpecApplyConfiguration constructs a declarative configuration of the FlowSchemaSpec type for use with
     // apply.
     func FlowSchemaSpec() *FlowSchemaSpecApplyConfiguration {
     	return &FlowSchemaSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemastatus.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemastatus.go
    index 67c5be2cbe57..70ac997e4521 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemastatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/flowschemastatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta2
     
    -// FlowSchemaStatusApplyConfiguration represents an declarative configuration of the FlowSchemaStatus type for use
    +// FlowSchemaStatusApplyConfiguration represents a declarative configuration of the FlowSchemaStatus type for use
     // with apply.
     type FlowSchemaStatusApplyConfiguration struct {
     	Conditions []FlowSchemaConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// FlowSchemaStatusApplyConfiguration constructs an declarative configuration of the FlowSchemaStatus type for use with
    +// FlowSchemaStatusApplyConfiguration constructs a declarative configuration of the FlowSchemaStatus type for use with
     // apply.
     func FlowSchemaStatus() *FlowSchemaStatusApplyConfiguration {
     	return &FlowSchemaStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/groupsubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/groupsubject.go
    index b670f2cfd97d..25207d7c1a23 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/groupsubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/groupsubject.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta2
     
    -// GroupSubjectApplyConfiguration represents an declarative configuration of the GroupSubject type for use
    +// GroupSubjectApplyConfiguration represents a declarative configuration of the GroupSubject type for use
     // with apply.
     type GroupSubjectApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// GroupSubjectApplyConfiguration constructs an declarative configuration of the GroupSubject type for use with
    +// GroupSubjectApplyConfiguration constructs a declarative configuration of the GroupSubject type for use with
     // apply.
     func GroupSubject() *GroupSubjectApplyConfiguration {
     	return &GroupSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/limitedprioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/limitedprioritylevelconfiguration.go
    index 563b185c74aa..298dd4637066 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/limitedprioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/limitedprioritylevelconfiguration.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta2
     
    -// LimitedPriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the LimitedPriorityLevelConfiguration type for use
    +// LimitedPriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the LimitedPriorityLevelConfiguration type for use
     // with apply.
     type LimitedPriorityLevelConfigurationApplyConfiguration struct {
     	AssuredConcurrencyShares *int32                           `json:"assuredConcurrencyShares,omitempty"`
    @@ -27,7 +27,7 @@ type LimitedPriorityLevelConfigurationApplyConfiguration struct {
     	BorrowingLimitPercent    *int32                           `json:"borrowingLimitPercent,omitempty"`
     }
     
    -// LimitedPriorityLevelConfigurationApplyConfiguration constructs an declarative configuration of the LimitedPriorityLevelConfiguration type for use with
    +// LimitedPriorityLevelConfigurationApplyConfiguration constructs a declarative configuration of the LimitedPriorityLevelConfiguration type for use with
     // apply.
     func LimitedPriorityLevelConfiguration() *LimitedPriorityLevelConfigurationApplyConfiguration {
     	return &LimitedPriorityLevelConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/limitresponse.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/limitresponse.go
    index a9b7661fb23e..58cd78006bcc 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/limitresponse.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/limitresponse.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
     )
     
    -// LimitResponseApplyConfiguration represents an declarative configuration of the LimitResponse type for use
    +// LimitResponseApplyConfiguration represents a declarative configuration of the LimitResponse type for use
     // with apply.
     type LimitResponseApplyConfiguration struct {
    -	Type    *v1beta2.LimitResponseType              `json:"type,omitempty"`
    +	Type    *flowcontrolv1beta2.LimitResponseType   `json:"type,omitempty"`
     	Queuing *QueuingConfigurationApplyConfiguration `json:"queuing,omitempty"`
     }
     
    -// LimitResponseApplyConfiguration constructs an declarative configuration of the LimitResponse type for use with
    +// LimitResponseApplyConfiguration constructs a declarative configuration of the LimitResponse type for use with
     // apply.
     func LimitResponse() *LimitResponseApplyConfiguration {
     	return &LimitResponseApplyConfiguration{}
    @@ -38,7 +38,7 @@ func LimitResponse() *LimitResponseApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *LimitResponseApplyConfiguration) WithType(value v1beta2.LimitResponseType) *LimitResponseApplyConfiguration {
    +func (b *LimitResponseApplyConfiguration) WithType(value flowcontrolv1beta2.LimitResponseType) *LimitResponseApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/nonresourcepolicyrule.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/nonresourcepolicyrule.go
    index cb8ba0afd65a..5032ee4898bd 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/nonresourcepolicyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/nonresourcepolicyrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta2
     
    -// NonResourcePolicyRuleApplyConfiguration represents an declarative configuration of the NonResourcePolicyRule type for use
    +// NonResourcePolicyRuleApplyConfiguration represents a declarative configuration of the NonResourcePolicyRule type for use
     // with apply.
     type NonResourcePolicyRuleApplyConfiguration struct {
     	Verbs           []string `json:"verbs,omitempty"`
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty"`
     }
     
    -// NonResourcePolicyRuleApplyConfiguration constructs an declarative configuration of the NonResourcePolicyRule type for use with
    +// NonResourcePolicyRuleApplyConfiguration constructs a declarative configuration of the NonResourcePolicyRule type for use with
     // apply.
     func NonResourcePolicyRule() *NonResourcePolicyRuleApplyConfiguration {
     	return &NonResourcePolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/policyruleswithsubjects.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/policyruleswithsubjects.go
    index 179c3979db10..2bb8c871828a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/policyruleswithsubjects.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/policyruleswithsubjects.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta2
     
    -// PolicyRulesWithSubjectsApplyConfiguration represents an declarative configuration of the PolicyRulesWithSubjects type for use
    +// PolicyRulesWithSubjectsApplyConfiguration represents a declarative configuration of the PolicyRulesWithSubjects type for use
     // with apply.
     type PolicyRulesWithSubjectsApplyConfiguration struct {
     	Subjects         []SubjectApplyConfiguration               `json:"subjects,omitempty"`
    @@ -26,7 +26,7 @@ type PolicyRulesWithSubjectsApplyConfiguration struct {
     	NonResourceRules []NonResourcePolicyRuleApplyConfiguration `json:"nonResourceRules,omitempty"`
     }
     
    -// PolicyRulesWithSubjectsApplyConfiguration constructs an declarative configuration of the PolicyRulesWithSubjects type for use with
    +// PolicyRulesWithSubjectsApplyConfiguration constructs a declarative configuration of the PolicyRulesWithSubjects type for use with
     // apply.
     func PolicyRulesWithSubjects() *PolicyRulesWithSubjectsApplyConfiguration {
     	return &PolicyRulesWithSubjectsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfiguration.go
    index 3256b3630064..116bcfd311ba 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfiguration.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the PriorityLevelConfiguration type for use
    +// PriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the PriorityLevelConfiguration type for use
     // with apply.
     type PriorityLevelConfigurationApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type PriorityLevelConfigurationApplyConfiguration struct {
     	Status                           *PriorityLevelConfigurationStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// PriorityLevelConfiguration constructs an declarative configuration of the PriorityLevelConfiguration type for use with
    +// PriorityLevelConfiguration constructs a declarative configuration of the PriorityLevelConfiguration type for use with
     // apply.
     func PriorityLevelConfiguration(name string) *PriorityLevelConfigurationApplyConfiguration {
     	b := &PriorityLevelConfigurationApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractPriorityLevelConfiguration(priorityLevelConfiguration *flowcontrolv1
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithKind(value string) *PriorityLevelConfigurationApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithKind(value string) *P
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithAPIVersion(value string) *PriorityLevelConfigurationApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithAPIVersion(value stri
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithName(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithName(value string) *P
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithGenerateName(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithGenerateName(value st
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithNamespace(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithNamespace(value strin
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithUID(value types.UID) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithUID(value types.UID)
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithResourceVersion(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithResourceVersion(value
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithGeneration(value int64) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithGeneration(value int6
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithCreationTimestamp(val
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionTimestamp(val
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionGracePeriodSe
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithLabels(entries map[string]string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithLabels(entries map[st
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithAnnotations(entries map[string]string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithOwnerReferences(value
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithOwnerReferences(value
     func (b *PriorityLevelConfigurationApplyConfiguration) WithFinalizers(values ...string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithStatus(value *Priorit
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PriorityLevelConfigurationApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationcondition.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationcondition.go
    index f742adeff083..caf517be3b37 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationcondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// PriorityLevelConfigurationConditionApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationCondition type for use
    +// PriorityLevelConfigurationConditionApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationCondition type for use
     // with apply.
     type PriorityLevelConfigurationConditionApplyConfiguration struct {
    -	Type               *v1beta2.PriorityLevelConfigurationConditionType `json:"type,omitempty"`
    -	Status             *v1beta2.ConditionStatus                         `json:"status,omitempty"`
    -	LastTransitionTime *v1.Time                                         `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                          `json:"reason,omitempty"`
    -	Message            *string                                          `json:"message,omitempty"`
    +	Type               *flowcontrolv1beta2.PriorityLevelConfigurationConditionType `json:"type,omitempty"`
    +	Status             *flowcontrolv1beta2.ConditionStatus                         `json:"status,omitempty"`
    +	LastTransitionTime *v1.Time                                                    `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                                     `json:"reason,omitempty"`
    +	Message            *string                                                     `json:"message,omitempty"`
     }
     
    -// PriorityLevelConfigurationConditionApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationCondition type for use with
    +// PriorityLevelConfigurationConditionApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationCondition type for use with
     // apply.
     func PriorityLevelConfigurationCondition() *PriorityLevelConfigurationConditionApplyConfiguration {
     	return &PriorityLevelConfigurationConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func PriorityLevelConfigurationCondition() *PriorityLevelConfigurationConditionA
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value v1beta2.PriorityLevelConfigurationConditionType) *PriorityLevelConfigurationConditionApplyConfiguration {
    +func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value flowcontrolv1beta2.PriorityLevelConfigurationConditionType) *PriorityLevelConfigurationConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value v
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithStatus(value v1beta2.ConditionStatus) *PriorityLevelConfigurationConditionApplyConfiguration {
    +func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithStatus(value flowcontrolv1beta2.ConditionStatus) *PriorityLevelConfigurationConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationreference.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationreference.go
    index 581b451ffd23..bbf718b60f9c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationreference.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta2
     
    -// PriorityLevelConfigurationReferenceApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationReference type for use
    +// PriorityLevelConfigurationReferenceApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationReference type for use
     // with apply.
     type PriorityLevelConfigurationReferenceApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// PriorityLevelConfigurationReferenceApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationReference type for use with
    +// PriorityLevelConfigurationReferenceApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationReference type for use with
     // apply.
     func PriorityLevelConfigurationReference() *PriorityLevelConfigurationReferenceApplyConfiguration {
     	return &PriorityLevelConfigurationReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationspec.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationspec.go
    index 994a8a16a225..c680ea1ef37e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationspec.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
     )
     
    -// PriorityLevelConfigurationSpecApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationSpec type for use
    +// PriorityLevelConfigurationSpecApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationSpec type for use
     // with apply.
     type PriorityLevelConfigurationSpecApplyConfiguration struct {
    -	Type    *v1beta2.PriorityLevelEnablement                     `json:"type,omitempty"`
    +	Type    *flowcontrolv1beta2.PriorityLevelEnablement          `json:"type,omitempty"`
     	Limited *LimitedPriorityLevelConfigurationApplyConfiguration `json:"limited,omitempty"`
     	Exempt  *ExemptPriorityLevelConfigurationApplyConfiguration  `json:"exempt,omitempty"`
     }
     
    -// PriorityLevelConfigurationSpecApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationSpec type for use with
    +// PriorityLevelConfigurationSpecApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationSpec type for use with
     // apply.
     func PriorityLevelConfigurationSpec() *PriorityLevelConfigurationSpecApplyConfiguration {
     	return &PriorityLevelConfigurationSpecApplyConfiguration{}
    @@ -39,7 +39,7 @@ func PriorityLevelConfigurationSpec() *PriorityLevelConfigurationSpecApplyConfig
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationSpecApplyConfiguration) WithType(value v1beta2.PriorityLevelEnablement) *PriorityLevelConfigurationSpecApplyConfiguration {
    +func (b *PriorityLevelConfigurationSpecApplyConfiguration) WithType(value flowcontrolv1beta2.PriorityLevelEnablement) *PriorityLevelConfigurationSpecApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationstatus.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationstatus.go
    index b55e32be0025..7a1f8790b93c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/prioritylevelconfigurationstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta2
     
    -// PriorityLevelConfigurationStatusApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationStatus type for use
    +// PriorityLevelConfigurationStatusApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationStatus type for use
     // with apply.
     type PriorityLevelConfigurationStatusApplyConfiguration struct {
     	Conditions []PriorityLevelConfigurationConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// PriorityLevelConfigurationStatusApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationStatus type for use with
    +// PriorityLevelConfigurationStatusApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationStatus type for use with
     // apply.
     func PriorityLevelConfigurationStatus() *PriorityLevelConfigurationStatusApplyConfiguration {
     	return &PriorityLevelConfigurationStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/queuingconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/queuingconfiguration.go
    index 06246fb27ed0..19c34c5f8317 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/queuingconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/queuingconfiguration.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta2
     
    -// QueuingConfigurationApplyConfiguration represents an declarative configuration of the QueuingConfiguration type for use
    +// QueuingConfigurationApplyConfiguration represents a declarative configuration of the QueuingConfiguration type for use
     // with apply.
     type QueuingConfigurationApplyConfiguration struct {
     	Queues           *int32 `json:"queues,omitempty"`
    @@ -26,7 +26,7 @@ type QueuingConfigurationApplyConfiguration struct {
     	QueueLengthLimit *int32 `json:"queueLengthLimit,omitempty"`
     }
     
    -// QueuingConfigurationApplyConfiguration constructs an declarative configuration of the QueuingConfiguration type for use with
    +// QueuingConfigurationApplyConfiguration constructs a declarative configuration of the QueuingConfiguration type for use with
     // apply.
     func QueuingConfiguration() *QueuingConfigurationApplyConfiguration {
     	return &QueuingConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/resourcepolicyrule.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/resourcepolicyrule.go
    index b67ea1c7f906..070d2ed46514 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/resourcepolicyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/resourcepolicyrule.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta2
     
    -// ResourcePolicyRuleApplyConfiguration represents an declarative configuration of the ResourcePolicyRule type for use
    +// ResourcePolicyRuleApplyConfiguration represents a declarative configuration of the ResourcePolicyRule type for use
     // with apply.
     type ResourcePolicyRuleApplyConfiguration struct {
     	Verbs        []string `json:"verbs,omitempty"`
    @@ -28,7 +28,7 @@ type ResourcePolicyRuleApplyConfiguration struct {
     	Namespaces   []string `json:"namespaces,omitempty"`
     }
     
    -// ResourcePolicyRuleApplyConfiguration constructs an declarative configuration of the ResourcePolicyRule type for use with
    +// ResourcePolicyRuleApplyConfiguration constructs a declarative configuration of the ResourcePolicyRule type for use with
     // apply.
     func ResourcePolicyRule() *ResourcePolicyRuleApplyConfiguration {
     	return &ResourcePolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/serviceaccountsubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/serviceaccountsubject.go
    index b6cfdcad3b55..c0d44721cccc 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/serviceaccountsubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/serviceaccountsubject.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta2
     
    -// ServiceAccountSubjectApplyConfiguration represents an declarative configuration of the ServiceAccountSubject type for use
    +// ServiceAccountSubjectApplyConfiguration represents a declarative configuration of the ServiceAccountSubject type for use
     // with apply.
     type ServiceAccountSubjectApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
     	Name      *string `json:"name,omitempty"`
     }
     
    -// ServiceAccountSubjectApplyConfiguration constructs an declarative configuration of the ServiceAccountSubject type for use with
    +// ServiceAccountSubjectApplyConfiguration constructs a declarative configuration of the ServiceAccountSubject type for use with
     // apply.
     func ServiceAccountSubject() *ServiceAccountSubjectApplyConfiguration {
     	return &ServiceAccountSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/subject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/subject.go
    index 7030785b8c45..2b569a628105 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/subject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/subject.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
     )
     
    -// SubjectApplyConfiguration represents an declarative configuration of the Subject type for use
    +// SubjectApplyConfiguration represents a declarative configuration of the Subject type for use
     // with apply.
     type SubjectApplyConfiguration struct {
    -	Kind           *v1beta2.SubjectKind                     `json:"kind,omitempty"`
    +	Kind           *flowcontrolv1beta2.SubjectKind          `json:"kind,omitempty"`
     	User           *UserSubjectApplyConfiguration           `json:"user,omitempty"`
     	Group          *GroupSubjectApplyConfiguration          `json:"group,omitempty"`
     	ServiceAccount *ServiceAccountSubjectApplyConfiguration `json:"serviceAccount,omitempty"`
     }
     
    -// SubjectApplyConfiguration constructs an declarative configuration of the Subject type for use with
    +// SubjectApplyConfiguration constructs a declarative configuration of the Subject type for use with
     // apply.
     func Subject() *SubjectApplyConfiguration {
     	return &SubjectApplyConfiguration{}
    @@ -40,7 +40,7 @@ func Subject() *SubjectApplyConfiguration {
     // WithKind sets the Kind field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
    -func (b *SubjectApplyConfiguration) WithKind(value v1beta2.SubjectKind) *SubjectApplyConfiguration {
    +func (b *SubjectApplyConfiguration) WithKind(value flowcontrolv1beta2.SubjectKind) *SubjectApplyConfiguration {
     	b.Kind = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/usersubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/usersubject.go
    index 8c77b3e8a210..c249f042dae1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/usersubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2/usersubject.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta2
     
    -// UserSubjectApplyConfiguration represents an declarative configuration of the UserSubject type for use
    +// UserSubjectApplyConfiguration represents a declarative configuration of the UserSubject type for use
     // with apply.
     type UserSubjectApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// UserSubjectApplyConfiguration constructs an declarative configuration of the UserSubject type for use with
    +// UserSubjectApplyConfiguration constructs a declarative configuration of the UserSubject type for use with
     // apply.
     func UserSubject() *UserSubjectApplyConfiguration {
     	return &UserSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/exemptprioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/exemptprioritylevelconfiguration.go
    index b03c11d0d9e6..b9bf6993af38 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/exemptprioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/exemptprioritylevelconfiguration.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta3
     
    -// ExemptPriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the ExemptPriorityLevelConfiguration type for use
    +// ExemptPriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the ExemptPriorityLevelConfiguration type for use
     // with apply.
     type ExemptPriorityLevelConfigurationApplyConfiguration struct {
     	NominalConcurrencyShares *int32 `json:"nominalConcurrencyShares,omitempty"`
     	LendablePercent          *int32 `json:"lendablePercent,omitempty"`
     }
     
    -// ExemptPriorityLevelConfigurationApplyConfiguration constructs an declarative configuration of the ExemptPriorityLevelConfiguration type for use with
    +// ExemptPriorityLevelConfigurationApplyConfiguration constructs a declarative configuration of the ExemptPriorityLevelConfiguration type for use with
     // apply.
     func ExemptPriorityLevelConfiguration() *ExemptPriorityLevelConfigurationApplyConfiguration {
     	return &ExemptPriorityLevelConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowdistinguishermethod.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowdistinguishermethod.go
    index cd45725932d4..cc32fa100553 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowdistinguishermethod.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowdistinguishermethod.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta3
     
     import (
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
     )
     
    -// FlowDistinguisherMethodApplyConfiguration represents an declarative configuration of the FlowDistinguisherMethod type for use
    +// FlowDistinguisherMethodApplyConfiguration represents a declarative configuration of the FlowDistinguisherMethod type for use
     // with apply.
     type FlowDistinguisherMethodApplyConfiguration struct {
    -	Type *v1beta3.FlowDistinguisherMethodType `json:"type,omitempty"`
    +	Type *flowcontrolv1beta3.FlowDistinguisherMethodType `json:"type,omitempty"`
     }
     
    -// FlowDistinguisherMethodApplyConfiguration constructs an declarative configuration of the FlowDistinguisherMethod type for use with
    +// FlowDistinguisherMethodApplyConfiguration constructs a declarative configuration of the FlowDistinguisherMethod type for use with
     // apply.
     func FlowDistinguisherMethod() *FlowDistinguisherMethodApplyConfiguration {
     	return &FlowDistinguisherMethodApplyConfiguration{}
    @@ -37,7 +37,7 @@ func FlowDistinguisherMethod() *FlowDistinguisherMethodApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *FlowDistinguisherMethodApplyConfiguration) WithType(value v1beta3.FlowDistinguisherMethodType) *FlowDistinguisherMethodApplyConfiguration {
    +func (b *FlowDistinguisherMethodApplyConfiguration) WithType(value flowcontrolv1beta3.FlowDistinguisherMethodType) *FlowDistinguisherMethodApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschema.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschema.go
    index c95635360eec..5f6416c7c1c3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschema.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschema.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// FlowSchemaApplyConfiguration represents an declarative configuration of the FlowSchema type for use
    +// FlowSchemaApplyConfiguration represents a declarative configuration of the FlowSchema type for use
     // with apply.
     type FlowSchemaApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type FlowSchemaApplyConfiguration struct {
     	Status                           *FlowSchemaStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// FlowSchema constructs an declarative configuration of the FlowSchema type for use with
    +// FlowSchema constructs a declarative configuration of the FlowSchema type for use with
     // apply.
     func FlowSchema(name string) *FlowSchemaApplyConfiguration {
     	b := &FlowSchemaApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractFlowSchema(flowSchema *flowcontrolv1beta3.FlowSchema, fieldManager s
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithKind(value string) *FlowSchemaApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *FlowSchemaApplyConfiguration) WithKind(value string) *FlowSchemaApplyCo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithAPIVersion(value string) *FlowSchemaApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *FlowSchemaApplyConfiguration) WithAPIVersion(value string) *FlowSchemaA
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithName(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *FlowSchemaApplyConfiguration) WithName(value string) *FlowSchemaApplyCo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithGenerateName(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *FlowSchemaApplyConfiguration) WithGenerateName(value string) *FlowSchem
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithNamespace(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *FlowSchemaApplyConfiguration) WithNamespace(value string) *FlowSchemaAp
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithUID(value types.UID) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *FlowSchemaApplyConfiguration) WithUID(value types.UID) *FlowSchemaApply
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithResourceVersion(value string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *FlowSchemaApplyConfiguration) WithResourceVersion(value string) *FlowSc
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithGeneration(value int64) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *FlowSchemaApplyConfiguration) WithGeneration(value int64) *FlowSchemaAp
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithCreationTimestamp(value metav1.Time) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *FlowSchemaApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *FlowSchemaApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *FlowSchemaApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *FlowSchemaApplyConfiguration) WithDeletionGracePeriodSeconds(value int6
     // overwriting an existing map entries in Labels field with the same key.
     func (b *FlowSchemaApplyConfiguration) WithLabels(entries map[string]string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *FlowSchemaApplyConfiguration) WithLabels(entries map[string]string) *Fl
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *FlowSchemaApplyConfiguration) WithAnnotations(entries map[string]string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *FlowSchemaApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *FlowSchemaApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRe
     func (b *FlowSchemaApplyConfiguration) WithFinalizers(values ...string) *FlowSchemaApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *FlowSchemaApplyConfiguration) WithStatus(value *FlowSchemaStatusApplyCo
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *FlowSchemaApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemacondition.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemacondition.go
    index 0ef3a2c92141..d5ba21f71b0b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemacondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemacondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1beta3
     
     import (
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// FlowSchemaConditionApplyConfiguration represents an declarative configuration of the FlowSchemaCondition type for use
    +// FlowSchemaConditionApplyConfiguration represents a declarative configuration of the FlowSchemaCondition type for use
     // with apply.
     type FlowSchemaConditionApplyConfiguration struct {
    -	Type               *v1beta3.FlowSchemaConditionType `json:"type,omitempty"`
    -	Status             *v1beta3.ConditionStatus         `json:"status,omitempty"`
    -	LastTransitionTime *v1.Time                         `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                          `json:"reason,omitempty"`
    -	Message            *string                          `json:"message,omitempty"`
    +	Type               *flowcontrolv1beta3.FlowSchemaConditionType `json:"type,omitempty"`
    +	Status             *flowcontrolv1beta3.ConditionStatus         `json:"status,omitempty"`
    +	LastTransitionTime *v1.Time                                    `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                     `json:"reason,omitempty"`
    +	Message            *string                                     `json:"message,omitempty"`
     }
     
    -// FlowSchemaConditionApplyConfiguration constructs an declarative configuration of the FlowSchemaCondition type for use with
    +// FlowSchemaConditionApplyConfiguration constructs a declarative configuration of the FlowSchemaCondition type for use with
     // apply.
     func FlowSchemaCondition() *FlowSchemaConditionApplyConfiguration {
     	return &FlowSchemaConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func FlowSchemaCondition() *FlowSchemaConditionApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *FlowSchemaConditionApplyConfiguration) WithType(value v1beta3.FlowSchemaConditionType) *FlowSchemaConditionApplyConfiguration {
    +func (b *FlowSchemaConditionApplyConfiguration) WithType(value flowcontrolv1beta3.FlowSchemaConditionType) *FlowSchemaConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *FlowSchemaConditionApplyConfiguration) WithType(value v1beta3.FlowSchem
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *FlowSchemaConditionApplyConfiguration) WithStatus(value v1beta3.ConditionStatus) *FlowSchemaConditionApplyConfiguration {
    +func (b *FlowSchemaConditionApplyConfiguration) WithStatus(value flowcontrolv1beta3.ConditionStatus) *FlowSchemaConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemaspec.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemaspec.go
    index e077ed3fde57..7141f6a6a11b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemaspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemaspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta3
     
    -// FlowSchemaSpecApplyConfiguration represents an declarative configuration of the FlowSchemaSpec type for use
    +// FlowSchemaSpecApplyConfiguration represents a declarative configuration of the FlowSchemaSpec type for use
     // with apply.
     type FlowSchemaSpecApplyConfiguration struct {
     	PriorityLevelConfiguration *PriorityLevelConfigurationReferenceApplyConfiguration `json:"priorityLevelConfiguration,omitempty"`
    @@ -27,7 +27,7 @@ type FlowSchemaSpecApplyConfiguration struct {
     	Rules                      []PolicyRulesWithSubjectsApplyConfiguration            `json:"rules,omitempty"`
     }
     
    -// FlowSchemaSpecApplyConfiguration constructs an declarative configuration of the FlowSchemaSpec type for use with
    +// FlowSchemaSpecApplyConfiguration constructs a declarative configuration of the FlowSchemaSpec type for use with
     // apply.
     func FlowSchemaSpec() *FlowSchemaSpecApplyConfiguration {
     	return &FlowSchemaSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemastatus.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemastatus.go
    index 18db1c93250b..294ddc9098c6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemastatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/flowschemastatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta3
     
    -// FlowSchemaStatusApplyConfiguration represents an declarative configuration of the FlowSchemaStatus type for use
    +// FlowSchemaStatusApplyConfiguration represents a declarative configuration of the FlowSchemaStatus type for use
     // with apply.
     type FlowSchemaStatusApplyConfiguration struct {
     	Conditions []FlowSchemaConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// FlowSchemaStatusApplyConfiguration constructs an declarative configuration of the FlowSchemaStatus type for use with
    +// FlowSchemaStatusApplyConfiguration constructs a declarative configuration of the FlowSchemaStatus type for use with
     // apply.
     func FlowSchemaStatus() *FlowSchemaStatusApplyConfiguration {
     	return &FlowSchemaStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/groupsubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/groupsubject.go
    index b919b711b34b..6576e716eff9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/groupsubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/groupsubject.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta3
     
    -// GroupSubjectApplyConfiguration represents an declarative configuration of the GroupSubject type for use
    +// GroupSubjectApplyConfiguration represents a declarative configuration of the GroupSubject type for use
     // with apply.
     type GroupSubjectApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// GroupSubjectApplyConfiguration constructs an declarative configuration of the GroupSubject type for use with
    +// GroupSubjectApplyConfiguration constructs a declarative configuration of the GroupSubject type for use with
     // apply.
     func GroupSubject() *GroupSubjectApplyConfiguration {
     	return &GroupSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/limitedprioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/limitedprioritylevelconfiguration.go
    index 269a48721c1d..bd98dd683c53 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/limitedprioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/limitedprioritylevelconfiguration.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta3
     
    -// LimitedPriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the LimitedPriorityLevelConfiguration type for use
    +// LimitedPriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the LimitedPriorityLevelConfiguration type for use
     // with apply.
     type LimitedPriorityLevelConfigurationApplyConfiguration struct {
     	NominalConcurrencyShares *int32                           `json:"nominalConcurrencyShares,omitempty"`
    @@ -27,7 +27,7 @@ type LimitedPriorityLevelConfigurationApplyConfiguration struct {
     	BorrowingLimitPercent    *int32                           `json:"borrowingLimitPercent,omitempty"`
     }
     
    -// LimitedPriorityLevelConfigurationApplyConfiguration constructs an declarative configuration of the LimitedPriorityLevelConfiguration type for use with
    +// LimitedPriorityLevelConfigurationApplyConfiguration constructs a declarative configuration of the LimitedPriorityLevelConfiguration type for use with
     // apply.
     func LimitedPriorityLevelConfiguration() *LimitedPriorityLevelConfigurationApplyConfiguration {
     	return &LimitedPriorityLevelConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/limitresponse.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/limitresponse.go
    index b7a64ebfee2b..2c289c7775c8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/limitresponse.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/limitresponse.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1beta3
     
     import (
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
     )
     
    -// LimitResponseApplyConfiguration represents an declarative configuration of the LimitResponse type for use
    +// LimitResponseApplyConfiguration represents a declarative configuration of the LimitResponse type for use
     // with apply.
     type LimitResponseApplyConfiguration struct {
    -	Type    *v1beta3.LimitResponseType              `json:"type,omitempty"`
    +	Type    *flowcontrolv1beta3.LimitResponseType   `json:"type,omitempty"`
     	Queuing *QueuingConfigurationApplyConfiguration `json:"queuing,omitempty"`
     }
     
    -// LimitResponseApplyConfiguration constructs an declarative configuration of the LimitResponse type for use with
    +// LimitResponseApplyConfiguration constructs a declarative configuration of the LimitResponse type for use with
     // apply.
     func LimitResponse() *LimitResponseApplyConfiguration {
     	return &LimitResponseApplyConfiguration{}
    @@ -38,7 +38,7 @@ func LimitResponse() *LimitResponseApplyConfiguration {
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *LimitResponseApplyConfiguration) WithType(value v1beta3.LimitResponseType) *LimitResponseApplyConfiguration {
    +func (b *LimitResponseApplyConfiguration) WithType(value flowcontrolv1beta3.LimitResponseType) *LimitResponseApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/nonresourcepolicyrule.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/nonresourcepolicyrule.go
    index ecb47f52cf11..2dd0d2b0680b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/nonresourcepolicyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/nonresourcepolicyrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta3
     
    -// NonResourcePolicyRuleApplyConfiguration represents an declarative configuration of the NonResourcePolicyRule type for use
    +// NonResourcePolicyRuleApplyConfiguration represents a declarative configuration of the NonResourcePolicyRule type for use
     // with apply.
     type NonResourcePolicyRuleApplyConfiguration struct {
     	Verbs           []string `json:"verbs,omitempty"`
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty"`
     }
     
    -// NonResourcePolicyRuleApplyConfiguration constructs an declarative configuration of the NonResourcePolicyRule type for use with
    +// NonResourcePolicyRuleApplyConfiguration constructs a declarative configuration of the NonResourcePolicyRule type for use with
     // apply.
     func NonResourcePolicyRule() *NonResourcePolicyRuleApplyConfiguration {
     	return &NonResourcePolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/policyruleswithsubjects.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/policyruleswithsubjects.go
    index e30aace1941f..cc64dc585ba8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/policyruleswithsubjects.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/policyruleswithsubjects.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta3
     
    -// PolicyRulesWithSubjectsApplyConfiguration represents an declarative configuration of the PolicyRulesWithSubjects type for use
    +// PolicyRulesWithSubjectsApplyConfiguration represents a declarative configuration of the PolicyRulesWithSubjects type for use
     // with apply.
     type PolicyRulesWithSubjectsApplyConfiguration struct {
     	Subjects         []SubjectApplyConfiguration               `json:"subjects,omitempty"`
    @@ -26,7 +26,7 @@ type PolicyRulesWithSubjectsApplyConfiguration struct {
     	NonResourceRules []NonResourcePolicyRuleApplyConfiguration `json:"nonResourceRules,omitempty"`
     }
     
    -// PolicyRulesWithSubjectsApplyConfiguration constructs an declarative configuration of the PolicyRulesWithSubjects type for use with
    +// PolicyRulesWithSubjectsApplyConfiguration constructs a declarative configuration of the PolicyRulesWithSubjects type for use with
     // apply.
     func PolicyRulesWithSubjects() *PolicyRulesWithSubjectsApplyConfiguration {
     	return &PolicyRulesWithSubjectsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfiguration.go
    index 6fbbbea8fe97..bb036c466211 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfiguration.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PriorityLevelConfigurationApplyConfiguration represents an declarative configuration of the PriorityLevelConfiguration type for use
    +// PriorityLevelConfigurationApplyConfiguration represents a declarative configuration of the PriorityLevelConfiguration type for use
     // with apply.
     type PriorityLevelConfigurationApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type PriorityLevelConfigurationApplyConfiguration struct {
     	Status                           *PriorityLevelConfigurationStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// PriorityLevelConfiguration constructs an declarative configuration of the PriorityLevelConfiguration type for use with
    +// PriorityLevelConfiguration constructs a declarative configuration of the PriorityLevelConfiguration type for use with
     // apply.
     func PriorityLevelConfiguration(name string) *PriorityLevelConfigurationApplyConfiguration {
     	b := &PriorityLevelConfigurationApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractPriorityLevelConfiguration(priorityLevelConfiguration *flowcontrolv1
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithKind(value string) *PriorityLevelConfigurationApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithKind(value string) *P
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithAPIVersion(value string) *PriorityLevelConfigurationApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithAPIVersion(value stri
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithName(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithName(value string) *P
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithGenerateName(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithGenerateName(value st
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithNamespace(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithNamespace(value strin
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithUID(value types.UID) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithUID(value types.UID)
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithResourceVersion(value string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithResourceVersion(value
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithGeneration(value int64) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithGeneration(value int6
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithCreationTimestamp(val
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionTimestamp(val
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithDeletionGracePeriodSe
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithLabels(entries map[string]string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithLabels(entries map[st
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PriorityLevelConfigurationApplyConfiguration) WithAnnotations(entries map[string]string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithOwnerReferences(value
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithOwnerReferences(value
     func (b *PriorityLevelConfigurationApplyConfiguration) WithFinalizers(values ...string) *PriorityLevelConfigurationApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *PriorityLevelConfigurationApplyConfiguration) WithStatus(value *Priorit
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PriorityLevelConfigurationApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationcondition.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationcondition.go
    index 6e36b6a079f1..01695f14481b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationcondition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationcondition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1beta3
     
     import (
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// PriorityLevelConfigurationConditionApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationCondition type for use
    +// PriorityLevelConfigurationConditionApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationCondition type for use
     // with apply.
     type PriorityLevelConfigurationConditionApplyConfiguration struct {
    -	Type               *v1beta3.PriorityLevelConfigurationConditionType `json:"type,omitempty"`
    -	Status             *v1beta3.ConditionStatus                         `json:"status,omitempty"`
    -	LastTransitionTime *v1.Time                                         `json:"lastTransitionTime,omitempty"`
    -	Reason             *string                                          `json:"reason,omitempty"`
    -	Message            *string                                          `json:"message,omitempty"`
    +	Type               *flowcontrolv1beta3.PriorityLevelConfigurationConditionType `json:"type,omitempty"`
    +	Status             *flowcontrolv1beta3.ConditionStatus                         `json:"status,omitempty"`
    +	LastTransitionTime *v1.Time                                                    `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                                                     `json:"reason,omitempty"`
    +	Message            *string                                                     `json:"message,omitempty"`
     }
     
    -// PriorityLevelConfigurationConditionApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationCondition type for use with
    +// PriorityLevelConfigurationConditionApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationCondition type for use with
     // apply.
     func PriorityLevelConfigurationCondition() *PriorityLevelConfigurationConditionApplyConfiguration {
     	return &PriorityLevelConfigurationConditionApplyConfiguration{}
    @@ -42,7 +42,7 @@ func PriorityLevelConfigurationCondition() *PriorityLevelConfigurationConditionA
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value v1beta3.PriorityLevelConfigurationConditionType) *PriorityLevelConfigurationConditionApplyConfiguration {
    +func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value flowcontrolv1beta3.PriorityLevelConfigurationConditionType) *PriorityLevelConfigurationConditionApplyConfiguration {
     	b.Type = &value
     	return b
     }
    @@ -50,7 +50,7 @@ func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithType(value v
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithStatus(value v1beta3.ConditionStatus) *PriorityLevelConfigurationConditionApplyConfiguration {
    +func (b *PriorityLevelConfigurationConditionApplyConfiguration) WithStatus(value flowcontrolv1beta3.ConditionStatus) *PriorityLevelConfigurationConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationreference.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationreference.go
    index cb827b1e62c8..566aaa916b1e 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationreference.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta3
     
    -// PriorityLevelConfigurationReferenceApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationReference type for use
    +// PriorityLevelConfigurationReferenceApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationReference type for use
     // with apply.
     type PriorityLevelConfigurationReferenceApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// PriorityLevelConfigurationReferenceApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationReference type for use with
    +// PriorityLevelConfigurationReferenceApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationReference type for use with
     // apply.
     func PriorityLevelConfigurationReference() *PriorityLevelConfigurationReferenceApplyConfiguration {
     	return &PriorityLevelConfigurationReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationspec.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationspec.go
    index 5b0680d912b4..c9508547876a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationspec.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1beta3
     
     import (
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
     )
     
    -// PriorityLevelConfigurationSpecApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationSpec type for use
    +// PriorityLevelConfigurationSpecApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationSpec type for use
     // with apply.
     type PriorityLevelConfigurationSpecApplyConfiguration struct {
    -	Type    *v1beta3.PriorityLevelEnablement                     `json:"type,omitempty"`
    +	Type    *flowcontrolv1beta3.PriorityLevelEnablement          `json:"type,omitempty"`
     	Limited *LimitedPriorityLevelConfigurationApplyConfiguration `json:"limited,omitempty"`
     	Exempt  *ExemptPriorityLevelConfigurationApplyConfiguration  `json:"exempt,omitempty"`
     }
     
    -// PriorityLevelConfigurationSpecApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationSpec type for use with
    +// PriorityLevelConfigurationSpecApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationSpec type for use with
     // apply.
     func PriorityLevelConfigurationSpec() *PriorityLevelConfigurationSpecApplyConfiguration {
     	return &PriorityLevelConfigurationSpecApplyConfiguration{}
    @@ -39,7 +39,7 @@ func PriorityLevelConfigurationSpec() *PriorityLevelConfigurationSpecApplyConfig
     // WithType sets the Type field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Type field is set to the value of the last call.
    -func (b *PriorityLevelConfigurationSpecApplyConfiguration) WithType(value v1beta3.PriorityLevelEnablement) *PriorityLevelConfigurationSpecApplyConfiguration {
    +func (b *PriorityLevelConfigurationSpecApplyConfiguration) WithType(value flowcontrolv1beta3.PriorityLevelEnablement) *PriorityLevelConfigurationSpecApplyConfiguration {
     	b.Type = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationstatus.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationstatus.go
    index 0ee9e306ebc0..be2436457eee 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/prioritylevelconfigurationstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta3
     
    -// PriorityLevelConfigurationStatusApplyConfiguration represents an declarative configuration of the PriorityLevelConfigurationStatus type for use
    +// PriorityLevelConfigurationStatusApplyConfiguration represents a declarative configuration of the PriorityLevelConfigurationStatus type for use
     // with apply.
     type PriorityLevelConfigurationStatusApplyConfiguration struct {
     	Conditions []PriorityLevelConfigurationConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// PriorityLevelConfigurationStatusApplyConfiguration constructs an declarative configuration of the PriorityLevelConfigurationStatus type for use with
    +// PriorityLevelConfigurationStatusApplyConfiguration constructs a declarative configuration of the PriorityLevelConfigurationStatus type for use with
     // apply.
     func PriorityLevelConfigurationStatus() *PriorityLevelConfigurationStatusApplyConfiguration {
     	return &PriorityLevelConfigurationStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/queuingconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/queuingconfiguration.go
    index fc86c4443173..f9a3c6d1a6e3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/queuingconfiguration.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/queuingconfiguration.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta3
     
    -// QueuingConfigurationApplyConfiguration represents an declarative configuration of the QueuingConfiguration type for use
    +// QueuingConfigurationApplyConfiguration represents a declarative configuration of the QueuingConfiguration type for use
     // with apply.
     type QueuingConfigurationApplyConfiguration struct {
     	Queues           *int32 `json:"queues,omitempty"`
    @@ -26,7 +26,7 @@ type QueuingConfigurationApplyConfiguration struct {
     	QueueLengthLimit *int32 `json:"queueLengthLimit,omitempty"`
     }
     
    -// QueuingConfigurationApplyConfiguration constructs an declarative configuration of the QueuingConfiguration type for use with
    +// QueuingConfigurationApplyConfiguration constructs a declarative configuration of the QueuingConfiguration type for use with
     // apply.
     func QueuingConfiguration() *QueuingConfigurationApplyConfiguration {
     	return &QueuingConfigurationApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/resourcepolicyrule.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/resourcepolicyrule.go
    index 72623ffe49cf..e38f711db0a6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/resourcepolicyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/resourcepolicyrule.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta3
     
    -// ResourcePolicyRuleApplyConfiguration represents an declarative configuration of the ResourcePolicyRule type for use
    +// ResourcePolicyRuleApplyConfiguration represents a declarative configuration of the ResourcePolicyRule type for use
     // with apply.
     type ResourcePolicyRuleApplyConfiguration struct {
     	Verbs        []string `json:"verbs,omitempty"`
    @@ -28,7 +28,7 @@ type ResourcePolicyRuleApplyConfiguration struct {
     	Namespaces   []string `json:"namespaces,omitempty"`
     }
     
    -// ResourcePolicyRuleApplyConfiguration constructs an declarative configuration of the ResourcePolicyRule type for use with
    +// ResourcePolicyRuleApplyConfiguration constructs a declarative configuration of the ResourcePolicyRule type for use with
     // apply.
     func ResourcePolicyRule() *ResourcePolicyRuleApplyConfiguration {
     	return &ResourcePolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/serviceaccountsubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/serviceaccountsubject.go
    index e2d6b1b213f6..a5ed40c2ae63 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/serviceaccountsubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/serviceaccountsubject.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta3
     
    -// ServiceAccountSubjectApplyConfiguration represents an declarative configuration of the ServiceAccountSubject type for use
    +// ServiceAccountSubjectApplyConfiguration represents a declarative configuration of the ServiceAccountSubject type for use
     // with apply.
     type ServiceAccountSubjectApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
     	Name      *string `json:"name,omitempty"`
     }
     
    -// ServiceAccountSubjectApplyConfiguration constructs an declarative configuration of the ServiceAccountSubject type for use with
    +// ServiceAccountSubjectApplyConfiguration constructs a declarative configuration of the ServiceAccountSubject type for use with
     // apply.
     func ServiceAccountSubject() *ServiceAccountSubjectApplyConfiguration {
     	return &ServiceAccountSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/subject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/subject.go
    index f13b8f3ec5a0..46499f5418cf 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/subject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/subject.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1beta3
     
     import (
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
     )
     
    -// SubjectApplyConfiguration represents an declarative configuration of the Subject type for use
    +// SubjectApplyConfiguration represents a declarative configuration of the Subject type for use
     // with apply.
     type SubjectApplyConfiguration struct {
    -	Kind           *v1beta3.SubjectKind                     `json:"kind,omitempty"`
    +	Kind           *flowcontrolv1beta3.SubjectKind          `json:"kind,omitempty"`
     	User           *UserSubjectApplyConfiguration           `json:"user,omitempty"`
     	Group          *GroupSubjectApplyConfiguration          `json:"group,omitempty"`
     	ServiceAccount *ServiceAccountSubjectApplyConfiguration `json:"serviceAccount,omitempty"`
     }
     
    -// SubjectApplyConfiguration constructs an declarative configuration of the Subject type for use with
    +// SubjectApplyConfiguration constructs a declarative configuration of the Subject type for use with
     // apply.
     func Subject() *SubjectApplyConfiguration {
     	return &SubjectApplyConfiguration{}
    @@ -40,7 +40,7 @@ func Subject() *SubjectApplyConfiguration {
     // WithKind sets the Kind field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
    -func (b *SubjectApplyConfiguration) WithKind(value v1beta3.SubjectKind) *SubjectApplyConfiguration {
    +func (b *SubjectApplyConfiguration) WithKind(value flowcontrolv1beta3.SubjectKind) *SubjectApplyConfiguration {
     	b.Kind = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/usersubject.go b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/usersubject.go
    index 3db3abbc1a11..7b3ec2ba8247 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/usersubject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3/usersubject.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta3
     
    -// UserSubjectApplyConfiguration represents an declarative configuration of the UserSubject type for use
    +// UserSubjectApplyConfiguration represents a declarative configuration of the UserSubject type for use
     // with apply.
     type UserSubjectApplyConfiguration struct {
     	Name *string `json:"name,omitempty"`
     }
     
    -// UserSubjectApplyConfiguration constructs an declarative configuration of the UserSubject type for use with
    +// UserSubjectApplyConfiguration constructs a declarative configuration of the UserSubject type for use with
     // apply.
     func UserSubject() *UserSubjectApplyConfiguration {
     	return &UserSubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereview.go b/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereview.go
    new file mode 100644
    index 000000000000..8a49806759b9
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereview.go
    @@ -0,0 +1,262 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	imagepolicyv1alpha1 "k8s.io/api/imagepolicy/v1alpha1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// ImageReviewApplyConfiguration represents a declarative configuration of the ImageReview type for use
    +// with apply.
    +type ImageReviewApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *ImageReviewSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                           *ImageReviewStatusApplyConfiguration `json:"status,omitempty"`
    +}
    +
    +// ImageReview constructs a declarative configuration of the ImageReview type for use with
    +// apply.
    +func ImageReview(name string) *ImageReviewApplyConfiguration {
    +	b := &ImageReviewApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("ImageReview")
    +	b.WithAPIVersion("imagepolicy.k8s.io/v1alpha1")
    +	return b
    +}
    +
    +// ExtractImageReview extracts the applied configuration owned by fieldManager from
    +// imageReview. If no managedFields are found in imageReview for fieldManager, a
    +// ImageReviewApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// imageReview must be a unmodified ImageReview API object that was retrieved from the Kubernetes API.
    +// ExtractImageReview provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractImageReview(imageReview *imagepolicyv1alpha1.ImageReview, fieldManager string) (*ImageReviewApplyConfiguration, error) {
    +	return extractImageReview(imageReview, fieldManager, "")
    +}
    +
    +// ExtractImageReviewStatus is the same as ExtractImageReview except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractImageReviewStatus(imageReview *imagepolicyv1alpha1.ImageReview, fieldManager string) (*ImageReviewApplyConfiguration, error) {
    +	return extractImageReview(imageReview, fieldManager, "status")
    +}
    +
    +func extractImageReview(imageReview *imagepolicyv1alpha1.ImageReview, fieldManager string, subresource string) (*ImageReviewApplyConfiguration, error) {
    +	b := &ImageReviewApplyConfiguration{}
    +	err := managedfields.ExtractInto(imageReview, internal.Parser().Type("io.k8s.api.imagepolicy.v1alpha1.ImageReview"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(imageReview.Name)
    +
    +	b.WithKind("ImageReview")
    +	b.WithAPIVersion("imagepolicy.k8s.io/v1alpha1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithKind(value string) *ImageReviewApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithAPIVersion(value string) *ImageReviewApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithName(value string) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithGenerateName(value string) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithNamespace(value string) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithUID(value types.UID) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithResourceVersion(value string) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithGeneration(value int64) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *ImageReviewApplyConfiguration) WithLabels(entries map[string]string) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *ImageReviewApplyConfiguration) WithAnnotations(entries map[string]string) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *ImageReviewApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *ImageReviewApplyConfiguration) WithFinalizers(values ...string) *ImageReviewApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *ImageReviewApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithSpec(value *ImageReviewSpecApplyConfiguration) *ImageReviewApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// WithStatus sets the Status field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Status field is set to the value of the last call.
    +func (b *ImageReviewApplyConfiguration) WithStatus(value *ImageReviewStatusApplyConfiguration) *ImageReviewApplyConfiguration {
    +	b.Status = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ImageReviewApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereviewcontainerspec.go b/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereviewcontainerspec.go
    new file mode 100644
    index 000000000000..adfdb3258421
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereviewcontainerspec.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// ImageReviewContainerSpecApplyConfiguration represents a declarative configuration of the ImageReviewContainerSpec type for use
    +// with apply.
    +type ImageReviewContainerSpecApplyConfiguration struct {
    +	Image *string `json:"image,omitempty"`
    +}
    +
    +// ImageReviewContainerSpecApplyConfiguration constructs a declarative configuration of the ImageReviewContainerSpec type for use with
    +// apply.
    +func ImageReviewContainerSpec() *ImageReviewContainerSpecApplyConfiguration {
    +	return &ImageReviewContainerSpecApplyConfiguration{}
    +}
    +
    +// WithImage sets the Image field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Image field is set to the value of the last call.
    +func (b *ImageReviewContainerSpecApplyConfiguration) WithImage(value string) *ImageReviewContainerSpecApplyConfiguration {
    +	b.Image = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereviewspec.go b/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereviewspec.go
    new file mode 100644
    index 000000000000..7efc36a32149
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereviewspec.go
    @@ -0,0 +1,68 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// ImageReviewSpecApplyConfiguration represents a declarative configuration of the ImageReviewSpec type for use
    +// with apply.
    +type ImageReviewSpecApplyConfiguration struct {
    +	Containers  []ImageReviewContainerSpecApplyConfiguration `json:"containers,omitempty"`
    +	Annotations map[string]string                            `json:"annotations,omitempty"`
    +	Namespace   *string                                      `json:"namespace,omitempty"`
    +}
    +
    +// ImageReviewSpecApplyConfiguration constructs a declarative configuration of the ImageReviewSpec type for use with
    +// apply.
    +func ImageReviewSpec() *ImageReviewSpecApplyConfiguration {
    +	return &ImageReviewSpecApplyConfiguration{}
    +}
    +
    +// WithContainers adds the given value to the Containers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Containers field.
    +func (b *ImageReviewSpecApplyConfiguration) WithContainers(values ...*ImageReviewContainerSpecApplyConfiguration) *ImageReviewSpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithContainers")
    +		}
    +		b.Containers = append(b.Containers, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *ImageReviewSpecApplyConfiguration) WithAnnotations(entries map[string]string) *ImageReviewSpecApplyConfiguration {
    +	if b.Annotations == nil && len(entries) > 0 {
    +		b.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *ImageReviewSpecApplyConfiguration) WithNamespace(value string) *ImageReviewSpecApplyConfiguration {
    +	b.Namespace = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereviewstatus.go b/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereviewstatus.go
    new file mode 100644
    index 000000000000..e26a427e69ea
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1/imagereviewstatus.go
    @@ -0,0 +1,63 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// ImageReviewStatusApplyConfiguration represents a declarative configuration of the ImageReviewStatus type for use
    +// with apply.
    +type ImageReviewStatusApplyConfiguration struct {
    +	Allowed          *bool             `json:"allowed,omitempty"`
    +	Reason           *string           `json:"reason,omitempty"`
    +	AuditAnnotations map[string]string `json:"auditAnnotations,omitempty"`
    +}
    +
    +// ImageReviewStatusApplyConfiguration constructs a declarative configuration of the ImageReviewStatus type for use with
    +// apply.
    +func ImageReviewStatus() *ImageReviewStatusApplyConfiguration {
    +	return &ImageReviewStatusApplyConfiguration{}
    +}
    +
    +// WithAllowed sets the Allowed field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Allowed field is set to the value of the last call.
    +func (b *ImageReviewStatusApplyConfiguration) WithAllowed(value bool) *ImageReviewStatusApplyConfiguration {
    +	b.Allowed = &value
    +	return b
    +}
    +
    +// WithReason sets the Reason field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Reason field is set to the value of the last call.
    +func (b *ImageReviewStatusApplyConfiguration) WithReason(value string) *ImageReviewStatusApplyConfiguration {
    +	b.Reason = &value
    +	return b
    +}
    +
    +// WithAuditAnnotations puts the entries into the AuditAnnotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the AuditAnnotations field,
    +// overwriting an existing map entries in AuditAnnotations field with the same key.
    +func (b *ImageReviewStatusApplyConfiguration) WithAuditAnnotations(entries map[string]string) *ImageReviewStatusApplyConfiguration {
    +	if b.AuditAnnotations == nil && len(entries) > 0 {
    +		b.AuditAnnotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.AuditAnnotations[k] = v
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/internal/internal.go b/vendor/k8s.io/client-go/applyconfigurations/internal/internal.go
    index 2ceb262217db..cd9fcd98b7b7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/internal/internal.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/internal/internal.go
    @@ -19,8 +19,8 @@ limitations under the License.
     package internal
     
     import (
    -	"fmt"
    -	"sync"
    +	fmt "fmt"
    +	sync "sync"
     
     	typed "sigs.k8s.io/structured-merge-diff/v4/typed"
     )
    @@ -39,6 +39,28 @@ func Parser() *typed.Parser {
     var parserOnce sync.Once
     var parser *typed.Parser
     var schemaYAML = typed.YAMLObject(`types:
    +- name: io.k8s.api.admissionregistration.v1.AuditAnnotation
    +  map:
    +    fields:
    +    - name: key
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: valueExpression
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.admissionregistration.v1.ExpressionWarning
    +  map:
    +    fields:
    +    - name: fieldRef
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: warning
    +      type:
    +        scalar: string
    +      default: ""
     - name: io.k8s.api.admissionregistration.v1.MatchCondition
       map:
         fields:
    @@ -50,6 +72,31 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    +- name: io.k8s.api.admissionregistration.v1.MatchResources
    +  map:
    +    fields:
    +    - name: excludeResourceRules
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1.NamedRuleWithOperations
    +          elementRelationship: atomic
    +    - name: matchPolicy
    +      type:
    +        scalar: string
    +    - name: namespaceSelector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: objectSelector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: resourceRules
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1.NamedRuleWithOperations
    +          elementRelationship: atomic
    +    elementRelationship: atomic
     - name: io.k8s.api.admissionregistration.v1.MutatingWebhook
       map:
         fields:
    @@ -123,7 +170,7 @@ var schemaYAML = typed.YAMLObject(`types:
               elementRelationship: associative
               keys:
               - name
    -- name: io.k8s.api.admissionregistration.v1.RuleWithOperations
    +- name: io.k8s.api.admissionregistration.v1.NamedRuleWithOperations
       map:
         fields:
         - name: apiGroups
    @@ -144,82 +191,23 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: string
               elementRelationship: atomic
    -    - name: resources
    +    - name: resourceNames
           type:
             list:
               elementType:
                 scalar: string
               elementRelationship: atomic
    -    - name: scope
    -      type:
    -        scalar: string
    -- name: io.k8s.api.admissionregistration.v1.ServiceReference
    -  map:
    -    fields:
    -    - name: name
    -      type:
    -        scalar: string
    -      default: ""
    -    - name: namespace
    -      type:
    -        scalar: string
    -      default: ""
    -    - name: path
    -      type:
    -        scalar: string
    -    - name: port
    -      type:
    -        scalar: numeric
    -- name: io.k8s.api.admissionregistration.v1.ValidatingWebhook
    -  map:
    -    fields:
    -    - name: admissionReviewVersions
    +    - name: resources
           type:
             list:
               elementType:
                 scalar: string
               elementRelationship: atomic
    -    - name: clientConfig
    -      type:
    -        namedType: io.k8s.api.admissionregistration.v1.WebhookClientConfig
    -      default: {}
    -    - name: failurePolicy
    -      type:
    -        scalar: string
    -    - name: matchConditions
    -      type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.admissionregistration.v1.MatchCondition
    -          elementRelationship: associative
    -          keys:
    -          - name
    -    - name: matchPolicy
    -      type:
    -        scalar: string
    -    - name: name
    -      type:
    -        scalar: string
    -      default: ""
    -    - name: namespaceSelector
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: objectSelector
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: rules
    -      type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.admissionregistration.v1.RuleWithOperations
    -          elementRelationship: atomic
    -    - name: sideEffects
    +    - name: scope
           type:
             scalar: string
    -    - name: timeoutSeconds
    -      type:
    -        scalar: numeric
    -- name: io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration
    +    elementRelationship: atomic
    +- name: io.k8s.api.admissionregistration.v1.ParamKind
       map:
         fields:
         - name: apiVersion
    @@ -228,89 +216,24 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: kind
           type:
             scalar: string
    -    - name: metadata
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: webhooks
    -      type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.admissionregistration.v1.ValidatingWebhook
    -          elementRelationship: associative
    -          keys:
    -          - name
    -- name: io.k8s.api.admissionregistration.v1.WebhookClientConfig
    -  map:
    -    fields:
    -    - name: caBundle
    -      type:
    -        scalar: string
    -    - name: service
    -      type:
    -        namedType: io.k8s.api.admissionregistration.v1.ServiceReference
    -    - name: url
    -      type:
    -        scalar: string
    -- name: io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation
    -  map:
    -    fields:
    -    - name: key
    -      type:
    -        scalar: string
    -      default: ""
    -    - name: valueExpression
    -      type:
    -        scalar: string
    -      default: ""
    -- name: io.k8s.api.admissionregistration.v1alpha1.ExpressionWarning
    -  map:
    -    fields:
    -    - name: fieldRef
    -      type:
    -        scalar: string
    -      default: ""
    -    - name: warning
    -      type:
    -        scalar: string
    -      default: ""
    -- name: io.k8s.api.admissionregistration.v1alpha1.MatchCondition
    +    elementRelationship: atomic
    +- name: io.k8s.api.admissionregistration.v1.ParamRef
       map:
         fields:
    -    - name: expression
    -      type:
    -        scalar: string
    -      default: ""
         - name: name
           type:
             scalar: string
    -      default: ""
    -- name: io.k8s.api.admissionregistration.v1alpha1.MatchResources
    -  map:
    -    fields:
    -    - name: excludeResourceRules
    -      type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.admissionregistration.v1alpha1.NamedRuleWithOperations
    -          elementRelationship: atomic
    -    - name: matchPolicy
    +    - name: namespace
           type:
             scalar: string
    -    - name: namespaceSelector
    +    - name: parameterNotFoundAction
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: objectSelector
    +        scalar: string
    +    - name: selector
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: resourceRules
    -      type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.admissionregistration.v1alpha1.NamedRuleWithOperations
    -          elementRelationship: atomic
         elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1alpha1.NamedRuleWithOperations
    +- name: io.k8s.api.admissionregistration.v1.RuleWithOperations
       map:
         fields:
         - name: apiGroups
    @@ -331,12 +254,6 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: string
               elementRelationship: atomic
    -    - name: resourceNames
    -      type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
         - name: resources
           type:
             list:
    @@ -346,43 +263,33 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: scope
           type:
             scalar: string
    -    elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1alpha1.ParamKind
    -  map:
    -    fields:
    -    - name: apiVersion
    -      type:
    -        scalar: string
    -    - name: kind
    -      type:
    -        scalar: string
    -    elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1alpha1.ParamRef
    +- name: io.k8s.api.admissionregistration.v1.ServiceReference
       map:
         fields:
         - name: name
           type:
             scalar: string
    +      default: ""
         - name: namespace
           type:
             scalar: string
    -    - name: parameterNotFoundAction
    +      default: ""
    +    - name: path
           type:
             scalar: string
    -    - name: selector
    +    - name: port
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1alpha1.TypeChecking
    +        scalar: numeric
    +- name: io.k8s.api.admissionregistration.v1.TypeChecking
       map:
         fields:
         - name: expressionWarnings
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1alpha1.ExpressionWarning
    +            namedType: io.k8s.api.admissionregistration.v1.ExpressionWarning
               elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy
    +- name: io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy
       map:
         fields:
         - name: apiVersion
    @@ -397,13 +304,13 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicySpec
    +        namedType: io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicySpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyStatus
    +        namedType: io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyStatus
           default: {}
    -- name: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding
    +- name: io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding
       map:
         fields:
         - name: apiVersion
    @@ -418,17 +325,17 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingSpec
    +        namedType: io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingSpec
           default: {}
    -- name: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingSpec
    +- name: io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingSpec
       map:
         fields:
         - name: matchResources
           type:
    -        namedType: io.k8s.api.admissionregistration.v1alpha1.MatchResources
    +        namedType: io.k8s.api.admissionregistration.v1.MatchResources
         - name: paramRef
           type:
    -        namedType: io.k8s.api.admissionregistration.v1alpha1.ParamRef
    +        namedType: io.k8s.api.admissionregistration.v1.ParamRef
         - name: policyName
           type:
             scalar: string
    @@ -438,14 +345,14 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: string
               elementRelationship: associative
    -- name: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicySpec
    +- name: io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicySpec
       map:
         fields:
         - name: auditAnnotations
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation
    +            namedType: io.k8s.api.admissionregistration.v1.AuditAnnotation
               elementRelationship: atomic
         - name: failurePolicy
           type:
    @@ -454,31 +361,31 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1alpha1.MatchCondition
    +            namedType: io.k8s.api.admissionregistration.v1.MatchCondition
               elementRelationship: associative
               keys:
               - name
         - name: matchConstraints
           type:
    -        namedType: io.k8s.api.admissionregistration.v1alpha1.MatchResources
    +        namedType: io.k8s.api.admissionregistration.v1.MatchResources
         - name: paramKind
           type:
    -        namedType: io.k8s.api.admissionregistration.v1alpha1.ParamKind
    +        namedType: io.k8s.api.admissionregistration.v1.ParamKind
         - name: validations
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1alpha1.Validation
    +            namedType: io.k8s.api.admissionregistration.v1.Validation
               elementRelationship: atomic
         - name: variables
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1alpha1.Variable
    +            namedType: io.k8s.api.admissionregistration.v1.Variable
               elementRelationship: associative
               keys:
               - name
    -- name: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyStatus
    +- name: io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyStatus
       map:
         fields:
         - name: conditions
    @@ -494,24 +401,94 @@ var schemaYAML = typed.YAMLObject(`types:
             scalar: numeric
         - name: typeChecking
           type:
    -        namedType: io.k8s.api.admissionregistration.v1alpha1.TypeChecking
    -- name: io.k8s.api.admissionregistration.v1alpha1.Validation
    +        namedType: io.k8s.api.admissionregistration.v1.TypeChecking
    +- name: io.k8s.api.admissionregistration.v1.ValidatingWebhook
       map:
         fields:
    -    - name: expression
    +    - name: admissionReviewVersions
           type:
    -        scalar: string
    -      default: ""
    -    - name: message
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: clientConfig
           type:
    -        scalar: string
    -    - name: messageExpression
    +        namedType: io.k8s.api.admissionregistration.v1.WebhookClientConfig
    +      default: {}
    +    - name: failurePolicy
           type:
             scalar: string
    -    - name: reason
    +    - name: matchConditions
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1.MatchCondition
    +          elementRelationship: associative
    +          keys:
    +          - name
    +    - name: matchPolicy
           type:
             scalar: string
    -- name: io.k8s.api.admissionregistration.v1alpha1.Variable
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: namespaceSelector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: objectSelector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: rules
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1.RuleWithOperations
    +          elementRelationship: atomic
    +    - name: sideEffects
    +      type:
    +        scalar: string
    +    - name: timeoutSeconds
    +      type:
    +        scalar: numeric
    +- name: io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: webhooks
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1.ValidatingWebhook
    +          elementRelationship: associative
    +          keys:
    +          - name
    +- name: io.k8s.api.admissionregistration.v1.Validation
    +  map:
    +    fields:
    +    - name: expression
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: message
    +      type:
    +        scalar: string
    +    - name: messageExpression
    +      type:
    +        scalar: string
    +    - name: reason
    +      type:
    +        scalar: string
    +- name: io.k8s.api.admissionregistration.v1.Variable
       map:
         fields:
         - name: expression
    @@ -522,7 +499,26 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.admissionregistration.v1beta1.AuditAnnotation
    +    elementRelationship: atomic
    +- name: io.k8s.api.admissionregistration.v1.WebhookClientConfig
    +  map:
    +    fields:
    +    - name: caBundle
    +      type:
    +        scalar: string
    +    - name: service
    +      type:
    +        namedType: io.k8s.api.admissionregistration.v1.ServiceReference
    +    - name: url
    +      type:
    +        scalar: string
    +- name: io.k8s.api.admissionregistration.v1alpha1.ApplyConfiguration
    +  map:
    +    fields:
    +    - name: expression
    +      type:
    +        scalar: string
    +- name: io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation
       map:
         fields:
         - name: key
    @@ -533,7 +529,7 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.admissionregistration.v1beta1.ExpressionWarning
    +- name: io.k8s.api.admissionregistration.v1alpha1.ExpressionWarning
       map:
         fields:
         - name: fieldRef
    @@ -544,7 +540,13 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.admissionregistration.v1beta1.MatchCondition
    +- name: io.k8s.api.admissionregistration.v1alpha1.JSONPatch
    +  map:
    +    fields:
    +    - name: expression
    +      type:
    +        scalar: string
    +- name: io.k8s.api.admissionregistration.v1alpha1.MatchCondition
       map:
         fields:
         - name: expression
    @@ -555,14 +557,14 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.admissionregistration.v1beta1.MatchResources
    +- name: io.k8s.api.admissionregistration.v1alpha1.MatchResources
       map:
         fields:
         - name: excludeResourceRules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations
    +            namedType: io.k8s.api.admissionregistration.v1alpha1.NamedRuleWithOperations
               elementRelationship: atomic
         - name: matchPolicy
           type:
    @@ -577,22 +579,58 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations
    +            namedType: io.k8s.api.admissionregistration.v1alpha1.NamedRuleWithOperations
               elementRelationship: atomic
         elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1beta1.MutatingWebhook
    +- name: io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicy
       map:
         fields:
    -    - name: admissionReviewVersions
    +    - name: apiVersion
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: clientConfig
    +        scalar: string
    +    - name: kind
           type:
    -        namedType: io.k8s.api.admissionregistration.v1beta1.WebhookClientConfig
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicySpec
    +      default: {}
    +- name: io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBinding
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBindingSpec
    +      default: {}
    +- name: io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicyBindingSpec
    +  map:
    +    fields:
    +    - name: matchResources
    +      type:
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.MatchResources
    +    - name: paramRef
    +      type:
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.ParamRef
    +    - name: policyName
    +      type:
    +        scalar: string
    +- name: io.k8s.api.admissionregistration.v1alpha1.MutatingAdmissionPolicySpec
    +  map:
    +    fields:
         - name: failurePolicy
           type:
             scalar: string
    @@ -600,60 +638,45 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1beta1.MatchCondition
    +            namedType: io.k8s.api.admissionregistration.v1alpha1.MatchCondition
               elementRelationship: associative
               keys:
               - name
    -    - name: matchPolicy
    -      type:
    -        scalar: string
    -    - name: name
    +    - name: matchConstraints
           type:
    -        scalar: string
    -      default: ""
    -    - name: namespaceSelector
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.MatchResources
    +    - name: mutations
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: objectSelector
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1alpha1.Mutation
    +          elementRelationship: atomic
    +    - name: paramKind
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.ParamKind
         - name: reinvocationPolicy
           type:
             scalar: string
    -    - name: rules
    +    - name: variables
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1.RuleWithOperations
    +            namedType: io.k8s.api.admissionregistration.v1alpha1.Variable
               elementRelationship: atomic
    -    - name: sideEffects
    -      type:
    -        scalar: string
    -    - name: timeoutSeconds
    -      type:
    -        scalar: numeric
    -- name: io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration
    +- name: io.k8s.api.admissionregistration.v1alpha1.Mutation
       map:
         fields:
    -    - name: apiVersion
    -      type:
    -        scalar: string
    -    - name: kind
    +    - name: applyConfiguration
           type:
    -        scalar: string
    -    - name: metadata
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.ApplyConfiguration
    +    - name: jsonPatch
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: webhooks
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.JSONPatch
    +    - name: patchType
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.admissionregistration.v1beta1.MutatingWebhook
    -          elementRelationship: associative
    -          keys:
    -          - name
    -- name: io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.admissionregistration.v1alpha1.NamedRuleWithOperations
       map:
         fields:
         - name: apiGroups
    @@ -690,7 +713,7 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
         elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1beta1.ParamKind
    +- name: io.k8s.api.admissionregistration.v1alpha1.ParamKind
       map:
         fields:
         - name: apiVersion
    @@ -700,7 +723,7 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
         elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1beta1.ParamRef
    +- name: io.k8s.api.admissionregistration.v1alpha1.ParamRef
       map:
         fields:
         - name: name
    @@ -716,33 +739,16 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
         elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1beta1.ServiceReference
    -  map:
    -    fields:
    -    - name: name
    -      type:
    -        scalar: string
    -      default: ""
    -    - name: namespace
    -      type:
    -        scalar: string
    -      default: ""
    -    - name: path
    -      type:
    -        scalar: string
    -    - name: port
    -      type:
    -        scalar: numeric
    -- name: io.k8s.api.admissionregistration.v1beta1.TypeChecking
    +- name: io.k8s.api.admissionregistration.v1alpha1.TypeChecking
       map:
         fields:
         - name: expressionWarnings
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1beta1.ExpressionWarning
    +            namedType: io.k8s.api.admissionregistration.v1alpha1.ExpressionWarning
               elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy
    +- name: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy
       map:
         fields:
         - name: apiVersion
    @@ -757,13 +763,13 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicySpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyStatus
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyStatus
           default: {}
    -- name: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding
    +- name: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding
       map:
         fields:
         - name: apiVersion
    @@ -778,17 +784,17 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingSpec
           default: {}
    -- name: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec
    +- name: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingSpec
       map:
         fields:
         - name: matchResources
           type:
    -        namedType: io.k8s.api.admissionregistration.v1beta1.MatchResources
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.MatchResources
         - name: paramRef
           type:
    -        namedType: io.k8s.api.admissionregistration.v1beta1.ParamRef
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.ParamRef
         - name: policyName
           type:
             scalar: string
    @@ -798,14 +804,14 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: string
               elementRelationship: associative
    -- name: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec
    +- name: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicySpec
       map:
         fields:
         - name: auditAnnotations
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1beta1.AuditAnnotation
    +            namedType: io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation
               elementRelationship: atomic
         - name: failurePolicy
           type:
    @@ -814,31 +820,31 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1beta1.MatchCondition
    +            namedType: io.k8s.api.admissionregistration.v1alpha1.MatchCondition
               elementRelationship: associative
               keys:
               - name
         - name: matchConstraints
           type:
    -        namedType: io.k8s.api.admissionregistration.v1beta1.MatchResources
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.MatchResources
         - name: paramKind
           type:
    -        namedType: io.k8s.api.admissionregistration.v1beta1.ParamKind
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.ParamKind
         - name: validations
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1beta1.Validation
    +            namedType: io.k8s.api.admissionregistration.v1alpha1.Validation
               elementRelationship: atomic
         - name: variables
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1beta1.Variable
    +            namedType: io.k8s.api.admissionregistration.v1alpha1.Variable
               elementRelationship: associative
               keys:
               - name
    -- name: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyStatus
    +- name: io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyStatus
       map:
         fields:
         - name: conditions
    @@ -854,8 +860,93 @@ var schemaYAML = typed.YAMLObject(`types:
             scalar: numeric
         - name: typeChecking
           type:
    -        namedType: io.k8s.api.admissionregistration.v1beta1.TypeChecking
    -- name: io.k8s.api.admissionregistration.v1beta1.ValidatingWebhook
    +        namedType: io.k8s.api.admissionregistration.v1alpha1.TypeChecking
    +- name: io.k8s.api.admissionregistration.v1alpha1.Validation
    +  map:
    +    fields:
    +    - name: expression
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: message
    +      type:
    +        scalar: string
    +    - name: messageExpression
    +      type:
    +        scalar: string
    +    - name: reason
    +      type:
    +        scalar: string
    +- name: io.k8s.api.admissionregistration.v1alpha1.Variable
    +  map:
    +    fields:
    +    - name: expression
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.admissionregistration.v1beta1.AuditAnnotation
    +  map:
    +    fields:
    +    - name: key
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: valueExpression
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.admissionregistration.v1beta1.ExpressionWarning
    +  map:
    +    fields:
    +    - name: fieldRef
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: warning
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.admissionregistration.v1beta1.MatchCondition
    +  map:
    +    fields:
    +    - name: expression
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.admissionregistration.v1beta1.MatchResources
    +  map:
    +    fields:
    +    - name: excludeResourceRules
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations
    +          elementRelationship: atomic
    +    - name: matchPolicy
    +      type:
    +        scalar: string
    +    - name: namespaceSelector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: objectSelector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: resourceRules
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations
    +          elementRelationship: atomic
    +    elementRelationship: atomic
    +- name: io.k8s.api.admissionregistration.v1beta1.MutatingWebhook
       map:
         fields:
         - name: admissionReviewVersions
    @@ -892,6 +983,9 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: objectSelector
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: reinvocationPolicy
    +      type:
    +        scalar: string
         - name: rules
           type:
             list:
    @@ -904,7 +998,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: timeoutSeconds
           type:
             scalar: numeric
    -- name: io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration
    +- name: io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration
       map:
         fields:
         - name: apiVersion
    @@ -921,72 +1015,100 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.admissionregistration.v1beta1.ValidatingWebhook
    +            namedType: io.k8s.api.admissionregistration.v1beta1.MutatingWebhook
               elementRelationship: associative
               keys:
               - name
    -- name: io.k8s.api.admissionregistration.v1beta1.Validation
    +- name: io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations
       map:
         fields:
    -    - name: expression
    +    - name: apiGroups
           type:
    -        scalar: string
    -      default: ""
    -    - name: message
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: apiVersions
           type:
    -        scalar: string
    -    - name: messageExpression
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: operations
           type:
    -        scalar: string
    -    - name: reason
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: resourceNames
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: resources
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: scope
           type:
             scalar: string
    -- name: io.k8s.api.admissionregistration.v1beta1.Variable
    +    elementRelationship: atomic
    +- name: io.k8s.api.admissionregistration.v1beta1.ParamKind
       map:
         fields:
    -    - name: expression
    +    - name: apiVersion
           type:
             scalar: string
    -      default: ""
    -    - name: name
    +    - name: kind
           type:
             scalar: string
    -      default: ""
         elementRelationship: atomic
    -- name: io.k8s.api.admissionregistration.v1beta1.WebhookClientConfig
    +- name: io.k8s.api.admissionregistration.v1beta1.ParamRef
       map:
         fields:
    -    - name: caBundle
    +    - name: name
           type:
             scalar: string
    -    - name: service
    +    - name: namespace
           type:
    -        namedType: io.k8s.api.admissionregistration.v1beta1.ServiceReference
    -    - name: url
    +        scalar: string
    +    - name: parameterNotFoundAction
           type:
             scalar: string
    -- name: io.k8s.api.apiserverinternal.v1alpha1.ServerStorageVersion
    +    - name: selector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    elementRelationship: atomic
    +- name: io.k8s.api.admissionregistration.v1beta1.ServiceReference
       map:
         fields:
    -    - name: apiServerID
    +    - name: name
           type:
             scalar: string
    -    - name: decodableVersions
    +      default: ""
    +    - name: namespace
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: associative
    -    - name: encodingVersion
    +        scalar: string
    +      default: ""
    +    - name: path
           type:
             scalar: string
    -    - name: servedVersions
    +    - name: port
    +      type:
    +        scalar: numeric
    +- name: io.k8s.api.admissionregistration.v1beta1.TypeChecking
    +  map:
    +    fields:
    +    - name: expressionWarnings
           type:
             list:
               elementType:
    -            scalar: string
    -          elementRelationship: associative
    -- name: io.k8s.api.apiserverinternal.v1alpha1.StorageVersion
    +            namedType: io.k8s.api.admissionregistration.v1beta1.ExpressionWarning
    +          elementRelationship: atomic
    +- name: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy
       map:
         fields:
         - name: apiVersion
    @@ -1001,91 +1123,154 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionSpec
    +        namedType: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionStatus
    +        namedType: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyStatus
           default: {}
    -- name: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionCondition
    +- name: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding
       map:
         fields:
    -    - name: lastTransitionTime
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    -    - name: message
    +    - name: apiVersion
           type:
             scalar: string
    -    - name: observedGeneration
    -      type:
    -        scalar: numeric
    -    - name: reason
    +    - name: kind
           type:
             scalar: string
    -      default: ""
    -    - name: status
    +    - name: metadata
           type:
    -        scalar: string
    -      default: ""
    -    - name: type
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
           type:
    -        scalar: string
    -      default: ""
    -- name: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionSpec
    -  map:
    -    elementType:
    -      scalar: untyped
    -      list:
    -        elementType:
    -          namedType: __untyped_atomic_
    -        elementRelationship: atomic
    -      map:
    -        elementType:
    -          namedType: __untyped_deduced_
    -        elementRelationship: separable
    -- name: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionStatus
    +        namedType: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec
    +      default: {}
    +- name: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec
       map:
         fields:
    -    - name: commonEncodingVersion
    +    - name: matchResources
           type:
    -        scalar: string
    -    - name: conditions
    +        namedType: io.k8s.api.admissionregistration.v1beta1.MatchResources
    +    - name: paramRef
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionCondition
    -          elementRelationship: associative
    -          keys:
    -          - type
    -    - name: storageVersions
    +        namedType: io.k8s.api.admissionregistration.v1beta1.ParamRef
    +    - name: policyName
    +      type:
    +        scalar: string
    +    - name: validationActions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.apiserverinternal.v1alpha1.ServerStorageVersion
    +            scalar: string
               elementRelationship: associative
    -          keys:
    -          - apiServerID
    -- name: io.k8s.api.apps.v1.ControllerRevision
    +- name: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec
       map:
         fields:
    -    - name: apiVersion
    -      type:
    -        scalar: string
    -    - name: data
    +    - name: auditAnnotations
           type:
    -        namedType: __untyped_atomic_
    -    - name: kind
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1beta1.AuditAnnotation
    +          elementRelationship: atomic
    +    - name: failurePolicy
           type:
             scalar: string
    -    - name: metadata
    +    - name: matchConditions
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1beta1.MatchCondition
    +          elementRelationship: associative
    +          keys:
    +          - name
    +    - name: matchConstraints
    +      type:
    +        namedType: io.k8s.api.admissionregistration.v1beta1.MatchResources
    +    - name: paramKind
    +      type:
    +        namedType: io.k8s.api.admissionregistration.v1beta1.ParamKind
    +    - name: validations
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1beta1.Validation
    +          elementRelationship: atomic
    +    - name: variables
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1beta1.Variable
    +          elementRelationship: associative
    +          keys:
    +          - name
    +- name: io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyStatus
    +  map:
    +    fields:
    +    - name: conditions
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Condition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +    - name: observedGeneration
    +      type:
    +        scalar: numeric
    +    - name: typeChecking
    +      type:
    +        namedType: io.k8s.api.admissionregistration.v1beta1.TypeChecking
    +- name: io.k8s.api.admissionregistration.v1beta1.ValidatingWebhook
    +  map:
    +    fields:
    +    - name: admissionReviewVersions
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: clientConfig
    +      type:
    +        namedType: io.k8s.api.admissionregistration.v1beta1.WebhookClientConfig
           default: {}
    -    - name: revision
    +    - name: failurePolicy
    +      type:
    +        scalar: string
    +    - name: matchConditions
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1beta1.MatchCondition
    +          elementRelationship: associative
    +          keys:
    +          - name
    +    - name: matchPolicy
    +      type:
    +        scalar: string
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: namespaceSelector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: objectSelector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: rules
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1.RuleWithOperations
    +          elementRelationship: atomic
    +    - name: sideEffects
    +      type:
    +        scalar: string
    +    - name: timeoutSeconds
           type:
             scalar: numeric
    -      default: 0
    -- name: io.k8s.api.apps.v1.DaemonSet
    +- name: io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration
       map:
         fields:
         - name: apiVersion
    @@ -1098,106 +1283,76 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: spec
    -      type:
    -        namedType: io.k8s.api.apps.v1.DaemonSetSpec
    -      default: {}
    -    - name: status
    +    - name: webhooks
           type:
    -        namedType: io.k8s.api.apps.v1.DaemonSetStatus
    -      default: {}
    -- name: io.k8s.api.apps.v1.DaemonSetCondition
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.admissionregistration.v1beta1.ValidatingWebhook
    +          elementRelationship: associative
    +          keys:
    +          - name
    +- name: io.k8s.api.admissionregistration.v1beta1.Validation
       map:
         fields:
    -    - name: lastTransitionTime
    +    - name: expression
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +        scalar: string
    +      default: ""
         - name: message
           type:
             scalar: string
    +    - name: messageExpression
    +      type:
    +        scalar: string
         - name: reason
           type:
             scalar: string
    -    - name: status
    +- name: io.k8s.api.admissionregistration.v1beta1.Variable
    +  map:
    +    fields:
    +    - name: expression
           type:
             scalar: string
           default: ""
    -    - name: type
    +    - name: name
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.apps.v1.DaemonSetSpec
    +    elementRelationship: atomic
    +- name: io.k8s.api.admissionregistration.v1beta1.WebhookClientConfig
       map:
         fields:
    -    - name: minReadySeconds
    -      type:
    -        scalar: numeric
    -    - name: revisionHistoryLimit
    -      type:
    -        scalar: numeric
    -    - name: selector
    +    - name: caBundle
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: template
    +        scalar: string
    +    - name: service
           type:
    -        namedType: io.k8s.api.core.v1.PodTemplateSpec
    -      default: {}
    -    - name: updateStrategy
    +        namedType: io.k8s.api.admissionregistration.v1beta1.ServiceReference
    +    - name: url
           type:
    -        namedType: io.k8s.api.apps.v1.DaemonSetUpdateStrategy
    -      default: {}
    -- name: io.k8s.api.apps.v1.DaemonSetStatus
    +        scalar: string
    +- name: io.k8s.api.apiserverinternal.v1alpha1.ServerStorageVersion
       map:
         fields:
    -    - name: collisionCount
    +    - name: apiServerID
           type:
    -        scalar: numeric
    -    - name: conditions
    +        scalar: string
    +    - name: decodableVersions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.apps.v1.DaemonSetCondition
    +            scalar: string
               elementRelationship: associative
    -          keys:
    -          - type
    -    - name: currentNumberScheduled
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: desiredNumberScheduled
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: numberAvailable
    -      type:
    -        scalar: numeric
    -    - name: numberMisscheduled
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: numberReady
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: numberUnavailable
    -      type:
    -        scalar: numeric
    -    - name: observedGeneration
    -      type:
    -        scalar: numeric
    -    - name: updatedNumberScheduled
    -      type:
    -        scalar: numeric
    -- name: io.k8s.api.apps.v1.DaemonSetUpdateStrategy
    -  map:
    -    fields:
    -    - name: rollingUpdate
    -      type:
    -        namedType: io.k8s.api.apps.v1.RollingUpdateDaemonSet
    -    - name: type
    +    - name: encodingVersion
           type:
             scalar: string
    -- name: io.k8s.api.apps.v1.Deployment
    +    - name: servedVersions
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: associative
    +- name: io.k8s.api.apiserverinternal.v1alpha1.StorageVersion
       map:
         fields:
         - name: apiVersion
    @@ -1212,27 +1367,28 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.apps.v1.DeploymentSpec
    +        namedType: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.apps.v1.DeploymentStatus
    +        namedType: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionStatus
           default: {}
    -- name: io.k8s.api.apps.v1.DeploymentCondition
    +- name: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionCondition
       map:
         fields:
         - name: lastTransitionTime
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    -    - name: lastUpdateTime
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
         - name: message
           type:
             scalar: string
    +    - name: observedGeneration
    +      type:
    +        scalar: numeric
         - name: reason
           type:
             scalar: string
    +      default: ""
         - name: status
           type:
             scalar: string
    @@ -1241,18 +1397,228 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.apps.v1.DeploymentSpec
    +- name: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionSpec
    +  map:
    +    elementType:
    +      scalar: untyped
    +      list:
    +        elementType:
    +          namedType: __untyped_atomic_
    +        elementRelationship: atomic
    +      map:
    +        elementType:
    +          namedType: __untyped_deduced_
    +        elementRelationship: separable
    +- name: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionStatus
       map:
         fields:
    -    - name: minReadySeconds
    +    - name: commonEncodingVersion
           type:
    -        scalar: numeric
    -    - name: paused
    +        scalar: string
    +    - name: conditions
           type:
    -        scalar: boolean
    -    - name: progressDeadlineSeconds
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.apiserverinternal.v1alpha1.StorageVersionCondition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +    - name: storageVersions
           type:
    -        scalar: numeric
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.apiserverinternal.v1alpha1.ServerStorageVersion
    +          elementRelationship: associative
    +          keys:
    +          - apiServerID
    +- name: io.k8s.api.apps.v1.ControllerRevision
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: data
    +      type:
    +        namedType: __untyped_atomic_
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: revision
    +      type:
    +        scalar: numeric
    +      default: 0
    +- name: io.k8s.api.apps.v1.DaemonSet
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.apps.v1.DaemonSetSpec
    +      default: {}
    +    - name: status
    +      type:
    +        namedType: io.k8s.api.apps.v1.DaemonSetStatus
    +      default: {}
    +- name: io.k8s.api.apps.v1.DaemonSetCondition
    +  map:
    +    fields:
    +    - name: lastTransitionTime
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +    - name: message
    +      type:
    +        scalar: string
    +    - name: reason
    +      type:
    +        scalar: string
    +    - name: status
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: type
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.apps.v1.DaemonSetSpec
    +  map:
    +    fields:
    +    - name: minReadySeconds
    +      type:
    +        scalar: numeric
    +    - name: revisionHistoryLimit
    +      type:
    +        scalar: numeric
    +    - name: selector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: template
    +      type:
    +        namedType: io.k8s.api.core.v1.PodTemplateSpec
    +      default: {}
    +    - name: updateStrategy
    +      type:
    +        namedType: io.k8s.api.apps.v1.DaemonSetUpdateStrategy
    +      default: {}
    +- name: io.k8s.api.apps.v1.DaemonSetStatus
    +  map:
    +    fields:
    +    - name: collisionCount
    +      type:
    +        scalar: numeric
    +    - name: conditions
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.apps.v1.DaemonSetCondition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +    - name: currentNumberScheduled
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: desiredNumberScheduled
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: numberAvailable
    +      type:
    +        scalar: numeric
    +    - name: numberMisscheduled
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: numberReady
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: numberUnavailable
    +      type:
    +        scalar: numeric
    +    - name: observedGeneration
    +      type:
    +        scalar: numeric
    +    - name: updatedNumberScheduled
    +      type:
    +        scalar: numeric
    +- name: io.k8s.api.apps.v1.DaemonSetUpdateStrategy
    +  map:
    +    fields:
    +    - name: rollingUpdate
    +      type:
    +        namedType: io.k8s.api.apps.v1.RollingUpdateDaemonSet
    +    - name: type
    +      type:
    +        scalar: string
    +- name: io.k8s.api.apps.v1.Deployment
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.apps.v1.DeploymentSpec
    +      default: {}
    +    - name: status
    +      type:
    +        namedType: io.k8s.api.apps.v1.DeploymentStatus
    +      default: {}
    +- name: io.k8s.api.apps.v1.DeploymentCondition
    +  map:
    +    fields:
    +    - name: lastTransitionTime
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +    - name: lastUpdateTime
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +    - name: message
    +      type:
    +        scalar: string
    +    - name: reason
    +      type:
    +        scalar: string
    +    - name: status
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: type
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.apps.v1.DeploymentSpec
    +  map:
    +    fields:
    +    - name: minReadySeconds
    +      type:
    +        scalar: numeric
    +    - name: paused
    +      type:
    +        scalar: boolean
    +    - name: progressDeadlineSeconds
    +      type:
    +        scalar: numeric
         - name: replicas
           type:
             scalar: numeric
    @@ -3599,6 +3965,9 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: completions
           type:
             scalar: numeric
    +    - name: managedBy
    +      type:
    +        scalar: string
         - name: manualSelector
           type:
             scalar: boolean
    @@ -3617,6 +3986,9 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: selector
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: successPolicy
    +      type:
    +        namedType: io.k8s.api.batch.v1.SuccessPolicy
         - name: suspend
           type:
             scalar: boolean
    @@ -3729,6 +4101,24 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 namedType: io.k8s.api.batch.v1.PodFailurePolicyOnPodConditionsPattern
               elementRelationship: atomic
    +- name: io.k8s.api.batch.v1.SuccessPolicy
    +  map:
    +    fields:
    +    - name: rules
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.batch.v1.SuccessPolicyRule
    +          elementRelationship: atomic
    +- name: io.k8s.api.batch.v1.SuccessPolicyRule
    +  map:
    +    fields:
    +    - name: succeededCount
    +      type:
    +        scalar: numeric
    +    - name: succeededIndexes
    +      type:
    +        scalar: string
     - name: io.k8s.api.batch.v1.UncountedTerminatedPods
       map:
         fields:
    @@ -4072,9 +4462,55 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: leaseTransitions
           type:
             scalar: numeric
    +    - name: preferredHolder
    +      type:
    +        scalar: string
    +    - name: renewTime
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime
    +    - name: strategy
    +      type:
    +        scalar: string
    +- name: io.k8s.api.coordination.v1alpha2.LeaseCandidate
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.coordination.v1alpha2.LeaseCandidateSpec
    +      default: {}
    +- name: io.k8s.api.coordination.v1alpha2.LeaseCandidateSpec
    +  map:
    +    fields:
    +    - name: binaryVersion
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: emulationVersion
    +      type:
    +        scalar: string
    +    - name: leaseName
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: pingTime
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime
         - name: renewTime
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime
    +    - name: strategy
    +      type:
    +        scalar: string
     - name: io.k8s.api.coordination.v1beta1.Lease
       map:
         fields:
    @@ -4107,9 +4543,15 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: leaseTransitions
           type:
             scalar: numeric
    +    - name: preferredHolder
    +      type:
    +        scalar: string
         - name: renewTime
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime
    +    - name: strategy
    +      type:
    +        scalar: string
     - name: io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource
       map:
         fields:
    @@ -4138,10 +4580,25 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: podAntiAffinity
           type:
             namedType: io.k8s.api.core.v1.PodAntiAffinity
    -- name: io.k8s.api.core.v1.AttachedVolume
    +- name: io.k8s.api.core.v1.AppArmorProfile
       map:
         fields:
    -    - name: devicePath
    +    - name: localhostProfile
    +      type:
    +        scalar: string
    +    - name: type
    +      type:
    +        scalar: string
    +      default: ""
    +    unions:
    +    - discriminator: type
    +      fields:
    +      - fieldName: localhostProfile
    +        discriminatorValue: LocalhostProfile
    +- name: io.k8s.api.core.v1.AttachedVolume
    +  map:
    +    fields:
    +    - name: devicePath
           type:
             scalar: string
           default: ""
    @@ -4155,6 +4612,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: cachingMode
           type:
             scalar: string
    +      default: ReadWrite
         - name: diskName
           type:
             scalar: string
    @@ -4166,12 +4624,15 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: fsType
           type:
             scalar: string
    +      default: ext4
         - name: kind
           type:
             scalar: string
    +      default: Shared
         - name: readOnly
           type:
             scalar: boolean
    +      default: false
     - name: io.k8s.api.core.v1.AzureFilePersistentVolumeSource
       map:
         fields:
    @@ -4356,15 +4817,6 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.core.v1.ClaimSource
    -  map:
    -    fields:
    -    - name: resourceClaimName
    -      type:
    -        scalar: string
    -    - name: resourceClaimTemplateName
    -      type:
    -        scalar: string
     - name: io.k8s.api.core.v1.ClientIPConfig
       map:
         fields:
    @@ -4460,6 +4912,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: name
           type:
             scalar: string
    +      default: ""
         - name: optional
           type:
             scalar: boolean
    @@ -4473,6 +4926,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: name
           type:
             scalar: string
    +      default: ""
         - name: optional
           type:
             scalar: boolean
    @@ -4510,6 +4964,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: name
           type:
             scalar: string
    +      default: ""
         - name: optional
           type:
             scalar: boolean
    @@ -4528,6 +4983,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: name
           type:
             scalar: string
    +      default: ""
         - name: optional
           type:
             scalar: boolean
    @@ -4744,6 +5200,14 @@ var schemaYAML = typed.YAMLObject(`types:
             map:
               elementType:
                 namedType: io.k8s.apimachinery.pkg.api.resource.Quantity
    +    - name: allocatedResourcesStatus
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.core.v1.ResourceStatus
    +          elementRelationship: associative
    +          keys:
    +          - name
         - name: containerID
           type:
             scalar: string
    @@ -4781,6 +5245,23 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.api.core.v1.ContainerState
           default: {}
    +    - name: user
    +      type:
    +        namedType: io.k8s.api.core.v1.ContainerUser
    +    - name: volumeMounts
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.core.v1.VolumeMountStatus
    +          elementRelationship: associative
    +          keys:
    +          - mountPath
    +- name: io.k8s.api.core.v1.ContainerUser
    +  map:
    +    fields:
    +    - name: linux
    +      type:
    +        namedType: io.k8s.api.core.v1.LinuxContainerUser
     - name: io.k8s.api.core.v1.DaemonEndpoint
       map:
         fields:
    @@ -5343,12 +5824,14 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: ip
           type:
             scalar: string
    +      default: ""
     - name: io.k8s.api.core.v1.HostIP
       map:
         fields:
         - name: ip
           type:
             scalar: string
    +      default: ""
     - name: io.k8s.api.core.v1.HostPathVolumeSource
       map:
         fields:
    @@ -5381,6 +5864,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: iscsiInterface
           type:
             scalar: string
    +      default: default
         - name: lun
           type:
             scalar: numeric
    @@ -5423,6 +5907,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: iscsiInterface
           type:
             scalar: string
    +      default: default
         - name: lun
           type:
             scalar: numeric
    @@ -5443,6 +5928,15 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    +- name: io.k8s.api.core.v1.ImageVolumeSource
    +  map:
    +    fields:
    +    - name: pullPolicy
    +      type:
    +        scalar: string
    +    - name: reference
    +      type:
    +        scalar: string
     - name: io.k8s.api.core.v1.KeyToPath
       map:
         fields:
    @@ -5539,6 +6033,23 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 namedType: io.k8s.api.core.v1.LimitRangeItem
               elementRelationship: atomic
    +- name: io.k8s.api.core.v1.LinuxContainerUser
    +  map:
    +    fields:
    +    - name: gid
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: supplementalGroups
    +      type:
    +        list:
    +          elementType:
    +            scalar: numeric
    +          elementRelationship: atomic
    +    - name: uid
    +      type:
    +        scalar: numeric
    +      default: 0
     - name: io.k8s.api.core.v1.LoadBalancerIngress
       map:
         fields:
    @@ -5572,6 +6083,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: name
           type:
             scalar: string
    +      default: ""
         elementRelationship: atomic
     - name: io.k8s.api.core.v1.LocalVolumeSource
       map:
    @@ -5766,6 +6278,31 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.api.core.v1.DaemonEndpoint
           default: {}
    +- name: io.k8s.api.core.v1.NodeFeatures
    +  map:
    +    fields:
    +    - name: supplementalGroupsPolicy
    +      type:
    +        scalar: boolean
    +- name: io.k8s.api.core.v1.NodeRuntimeHandler
    +  map:
    +    fields:
    +    - name: features
    +      type:
    +        namedType: io.k8s.api.core.v1.NodeRuntimeHandlerFeatures
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.core.v1.NodeRuntimeHandlerFeatures
    +  map:
    +    fields:
    +    - name: recursiveReadOnlyMounts
    +      type:
    +        scalar: boolean
    +    - name: userNamespaces
    +      type:
    +        scalar: boolean
     - name: io.k8s.api.core.v1.NodeSelector
       map:
         fields:
    @@ -5875,6 +6412,9 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.api.core.v1.NodeDaemonEndpoints
           default: {}
    +    - name: features
    +      type:
    +        namedType: io.k8s.api.core.v1.NodeFeatures
         - name: images
           type:
             list:
    @@ -5888,6 +6428,12 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: phase
           type:
             scalar: string
    +    - name: runtimeHandlers
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.core.v1.NodeRuntimeHandler
    +          elementRelationship: atomic
         - name: volumesAttached
           type:
             list:
    @@ -6412,6 +6958,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: ip
           type:
             scalar: string
    +      default: ""
     - name: io.k8s.api.core.v1.PodOS
       map:
         fields:
    @@ -6433,10 +6980,12 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -    - name: source
    +    - name: resourceClaimName
           type:
    -        namedType: io.k8s.api.core.v1.ClaimSource
    -      default: {}
    +        scalar: string
    +    - name: resourceClaimTemplateName
    +      type:
    +        scalar: string
     - name: io.k8s.api.core.v1.PodResourceClaimStatus
       map:
         fields:
    @@ -6457,6 +7006,9 @@ var schemaYAML = typed.YAMLObject(`types:
     - name: io.k8s.api.core.v1.PodSecurityContext
       map:
         fields:
    +    - name: appArmorProfile
    +      type:
    +        namedType: io.k8s.api.core.v1.AppArmorProfile
         - name: fsGroup
           type:
             scalar: numeric
    @@ -6472,6 +7024,9 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: runAsUser
           type:
             scalar: numeric
    +    - name: seLinuxChangePolicy
    +      type:
    +        scalar: string
         - name: seLinuxOptions
           type:
             namedType: io.k8s.api.core.v1.SELinuxOptions
    @@ -6484,6 +7039,9 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: numeric
               elementRelationship: atomic
    +    - name: supplementalGroupsPolicy
    +      type:
    +        scalar: string
         - name: sysctls
           type:
             list:
    @@ -6609,6 +7167,9 @@ var schemaYAML = typed.YAMLObject(`types:
               elementRelationship: associative
               keys:
               - name
    +    - name: resources
    +      type:
    +        namedType: io.k8s.api.core.v1.ResourceRequirements
         - name: restartPolicy
           type:
             scalar: string
    @@ -6895,6 +7456,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: keyring
           type:
             scalar: string
    +      default: /etc/ceph/keyring
         - name: monitors
           type:
             list:
    @@ -6904,6 +7466,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: pool
           type:
             scalar: string
    +      default: rbd
         - name: readOnly
           type:
             scalar: boolean
    @@ -6913,6 +7476,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: user
           type:
             scalar: string
    +      default: admin
     - name: io.k8s.api.core.v1.RBDVolumeSource
       map:
         fields:
    @@ -6926,6 +7490,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: keyring
           type:
             scalar: string
    +      default: /etc/ceph/keyring
         - name: monitors
           type:
             list:
    @@ -6935,6 +7500,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: pool
           type:
             scalar: string
    +      default: rbd
         - name: readOnly
           type:
             scalar: boolean
    @@ -6944,6 +7510,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: user
           type:
             scalar: string
    +      default: admin
     - name: io.k8s.api.core.v1.ReplicationController
       map:
         fields:
    @@ -7037,6 +7604,9 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    +    - name: request
    +      type:
    +        scalar: string
     - name: io.k8s.api.core.v1.ResourceFieldSelector
       map:
         fields:
    @@ -7051,6 +7621,16 @@ var schemaYAML = typed.YAMLObject(`types:
             scalar: string
           default: ""
         elementRelationship: atomic
    +- name: io.k8s.api.core.v1.ResourceHealth
    +  map:
    +    fields:
    +    - name: health
    +      type:
    +        scalar: string
    +    - name: resourceID
    +      type:
    +        scalar: string
    +      default: ""
     - name: io.k8s.api.core.v1.ResourceQuota
       map:
         fields:
    @@ -7123,6 +7703,21 @@ var schemaYAML = typed.YAMLObject(`types:
             map:
               elementType:
                 namedType: io.k8s.apimachinery.pkg.api.resource.Quantity
    +- name: io.k8s.api.core.v1.ResourceStatus
    +  map:
    +    fields:
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: resources
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.core.v1.ResourceHealth
    +          elementRelationship: associative
    +          keys:
    +          - resourceID
     - name: io.k8s.api.core.v1.SELinuxOptions
       map:
         fields:
    @@ -7144,6 +7739,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: fsType
           type:
             scalar: string
    +      default: xfs
         - name: gateway
           type:
             scalar: string
    @@ -7163,6 +7759,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: storageMode
           type:
             scalar: string
    +      default: ThinProvisioned
         - name: storagePool
           type:
             scalar: string
    @@ -7179,6 +7776,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: fsType
           type:
             scalar: string
    +      default: xfs
         - name: gateway
           type:
             scalar: string
    @@ -7198,6 +7796,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: storageMode
           type:
             scalar: string
    +      default: ThinProvisioned
         - name: storagePool
           type:
             scalar: string
    @@ -7285,6 +7884,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: name
           type:
             scalar: string
    +      default: ""
         - name: optional
           type:
             scalar: boolean
    @@ -7298,6 +7898,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: name
           type:
             scalar: string
    +      default: ""
         - name: optional
           type:
             scalar: boolean
    @@ -7314,6 +7915,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: name
           type:
             scalar: string
    +      default: ""
         - name: optional
           type:
             scalar: boolean
    @@ -7351,6 +7953,9 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: allowPrivilegeEscalation
           type:
             scalar: boolean
    +    - name: appArmorProfile
    +      type:
    +        namedType: io.k8s.api.core.v1.AppArmorProfile
         - name: capabilities
           type:
             namedType: io.k8s.api.core.v1.Capabilities
    @@ -7546,6 +8151,9 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: sessionAffinityConfig
           type:
             namedType: io.k8s.api.core.v1.SessionAffinityConfig
    +    - name: trafficDistribution
    +      type:
    +        scalar: string
         - name: type
           type:
             scalar: string
    @@ -7810,6 +8418,9 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: hostPath
           type:
             namedType: io.k8s.api.core.v1.HostPathVolumeSource
    +    - name: image
    +      type:
    +        namedType: io.k8s.api.core.v1.ImageVolumeSource
         - name: iscsi
           type:
             namedType: io.k8s.api.core.v1.ISCSIVolumeSource
    @@ -7878,12 +8489,32 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: readOnly
           type:
             scalar: boolean
    +    - name: recursiveReadOnly
    +      type:
    +        scalar: string
         - name: subPath
           type:
             scalar: string
         - name: subPathExpr
           type:
             scalar: string
    +- name: io.k8s.api.core.v1.VolumeMountStatus
    +  map:
    +    fields:
    +    - name: mountPath
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: readOnly
    +      type:
    +        scalar: boolean
    +    - name: recursiveReadOnly
    +      type:
    +        scalar: string
     - name: io.k8s.api.core.v1.VolumeNodeAffinity
       map:
         fields:
    @@ -8282,30 +8913,417 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: related
           type:
    -        namedType: io.k8s.api.core.v1.ObjectReference
    -    - name: reportingController
    +        namedType: io.k8s.api.core.v1.ObjectReference
    +    - name: reportingController
    +      type:
    +        scalar: string
    +    - name: reportingInstance
    +      type:
    +        scalar: string
    +    - name: series
    +      type:
    +        namedType: io.k8s.api.events.v1beta1.EventSeries
    +    - name: type
    +      type:
    +        scalar: string
    +- name: io.k8s.api.events.v1beta1.EventSeries
    +  map:
    +    fields:
    +    - name: count
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: lastObservedTime
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime
    +- name: io.k8s.api.extensions.v1beta1.DaemonSet
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.DaemonSetSpec
    +      default: {}
    +    - name: status
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.DaemonSetStatus
    +      default: {}
    +- name: io.k8s.api.extensions.v1beta1.DaemonSetCondition
    +  map:
    +    fields:
    +    - name: lastTransitionTime
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +    - name: message
    +      type:
    +        scalar: string
    +    - name: reason
    +      type:
    +        scalar: string
    +    - name: status
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: type
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.extensions.v1beta1.DaemonSetSpec
    +  map:
    +    fields:
    +    - name: minReadySeconds
    +      type:
    +        scalar: numeric
    +    - name: revisionHistoryLimit
    +      type:
    +        scalar: numeric
    +    - name: selector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: template
    +      type:
    +        namedType: io.k8s.api.core.v1.PodTemplateSpec
    +      default: {}
    +    - name: templateGeneration
    +      type:
    +        scalar: numeric
    +    - name: updateStrategy
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy
    +      default: {}
    +- name: io.k8s.api.extensions.v1beta1.DaemonSetStatus
    +  map:
    +    fields:
    +    - name: collisionCount
    +      type:
    +        scalar: numeric
    +    - name: conditions
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.DaemonSetCondition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +    - name: currentNumberScheduled
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: desiredNumberScheduled
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: numberAvailable
    +      type:
    +        scalar: numeric
    +    - name: numberMisscheduled
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: numberReady
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: numberUnavailable
    +      type:
    +        scalar: numeric
    +    - name: observedGeneration
    +      type:
    +        scalar: numeric
    +    - name: updatedNumberScheduled
    +      type:
    +        scalar: numeric
    +- name: io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy
    +  map:
    +    fields:
    +    - name: rollingUpdate
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet
    +    - name: type
    +      type:
    +        scalar: string
    +- name: io.k8s.api.extensions.v1beta1.Deployment
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.DeploymentSpec
    +      default: {}
    +    - name: status
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.DeploymentStatus
    +      default: {}
    +- name: io.k8s.api.extensions.v1beta1.DeploymentCondition
    +  map:
    +    fields:
    +    - name: lastTransitionTime
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +    - name: lastUpdateTime
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +    - name: message
    +      type:
    +        scalar: string
    +    - name: reason
    +      type:
    +        scalar: string
    +    - name: status
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: type
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.extensions.v1beta1.DeploymentSpec
    +  map:
    +    fields:
    +    - name: minReadySeconds
    +      type:
    +        scalar: numeric
    +    - name: paused
    +      type:
    +        scalar: boolean
    +    - name: progressDeadlineSeconds
    +      type:
    +        scalar: numeric
    +    - name: replicas
    +      type:
    +        scalar: numeric
    +    - name: revisionHistoryLimit
    +      type:
    +        scalar: numeric
    +    - name: rollbackTo
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.RollbackConfig
    +    - name: selector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: strategy
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.DeploymentStrategy
    +      default: {}
    +    - name: template
    +      type:
    +        namedType: io.k8s.api.core.v1.PodTemplateSpec
    +      default: {}
    +- name: io.k8s.api.extensions.v1beta1.DeploymentStatus
    +  map:
    +    fields:
    +    - name: availableReplicas
    +      type:
    +        scalar: numeric
    +    - name: collisionCount
    +      type:
    +        scalar: numeric
    +    - name: conditions
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.DeploymentCondition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +    - name: observedGeneration
    +      type:
    +        scalar: numeric
    +    - name: readyReplicas
    +      type:
    +        scalar: numeric
    +    - name: replicas
    +      type:
    +        scalar: numeric
    +    - name: unavailableReplicas
    +      type:
    +        scalar: numeric
    +    - name: updatedReplicas
    +      type:
    +        scalar: numeric
    +- name: io.k8s.api.extensions.v1beta1.DeploymentStrategy
    +  map:
    +    fields:
    +    - name: rollingUpdate
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.RollingUpdateDeployment
    +    - name: type
    +      type:
    +        scalar: string
    +- name: io.k8s.api.extensions.v1beta1.HTTPIngressPath
    +  map:
    +    fields:
    +    - name: backend
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.IngressBackend
    +      default: {}
    +    - name: path
    +      type:
    +        scalar: string
    +    - name: pathType
    +      type:
    +        scalar: string
    +- name: io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue
    +  map:
    +    fields:
    +    - name: paths
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.HTTPIngressPath
    +          elementRelationship: atomic
    +- name: io.k8s.api.extensions.v1beta1.IPBlock
    +  map:
    +    fields:
    +    - name: cidr
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: except
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +- name: io.k8s.api.extensions.v1beta1.Ingress
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.IngressSpec
    +      default: {}
    +    - name: status
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.IngressStatus
    +      default: {}
    +- name: io.k8s.api.extensions.v1beta1.IngressBackend
    +  map:
    +    fields:
    +    - name: resource
    +      type:
    +        namedType: io.k8s.api.core.v1.TypedLocalObjectReference
    +    - name: serviceName
    +      type:
    +        scalar: string
    +    - name: servicePort
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +- name: io.k8s.api.extensions.v1beta1.IngressLoadBalancerIngress
    +  map:
    +    fields:
    +    - name: hostname
    +      type:
    +        scalar: string
    +    - name: ip
    +      type:
    +        scalar: string
    +    - name: ports
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.IngressPortStatus
    +          elementRelationship: atomic
    +- name: io.k8s.api.extensions.v1beta1.IngressLoadBalancerStatus
    +  map:
    +    fields:
    +    - name: ingress
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.IngressLoadBalancerIngress
    +          elementRelationship: atomic
    +- name: io.k8s.api.extensions.v1beta1.IngressPortStatus
    +  map:
    +    fields:
    +    - name: error
    +      type:
    +        scalar: string
    +    - name: port
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: protocol
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.extensions.v1beta1.IngressRule
    +  map:
    +    fields:
    +    - name: host
    +      type:
    +        scalar: string
    +    - name: http
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue
    +- name: io.k8s.api.extensions.v1beta1.IngressSpec
    +  map:
    +    fields:
    +    - name: backend
    +      type:
    +        namedType: io.k8s.api.extensions.v1beta1.IngressBackend
    +    - name: ingressClassName
           type:
             scalar: string
    -    - name: reportingInstance
    +    - name: rules
           type:
    -        scalar: string
    -    - name: series
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.IngressRule
    +          elementRelationship: atomic
    +    - name: tls
           type:
    -        namedType: io.k8s.api.events.v1beta1.EventSeries
    -    - name: type
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.IngressTLS
    +          elementRelationship: atomic
    +- name: io.k8s.api.extensions.v1beta1.IngressStatus
    +  map:
    +    fields:
    +    - name: loadBalancer
           type:
    -        scalar: string
    -- name: io.k8s.api.events.v1beta1.EventSeries
    +        namedType: io.k8s.api.extensions.v1beta1.IngressLoadBalancerStatus
    +      default: {}
    +- name: io.k8s.api.extensions.v1beta1.IngressTLS
       map:
         fields:
    -    - name: count
    +    - name: hosts
           type:
    -        scalar: numeric
    -      default: 0
    -    - name: lastObservedTime
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: secretName
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime
    -- name: io.k8s.api.extensions.v1beta1.DaemonSet
    +        scalar: string
    +- name: io.k8s.api.extensions.v1beta1.NetworkPolicy
       map:
         fields:
         - name: apiVersion
    @@ -8320,107 +9338,88 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.DaemonSetSpec
    -      default: {}
    -    - name: status
    -      type:
    -        namedType: io.k8s.api.extensions.v1beta1.DaemonSetStatus
    +        namedType: io.k8s.api.extensions.v1beta1.NetworkPolicySpec
           default: {}
    -- name: io.k8s.api.extensions.v1beta1.DaemonSetCondition
    +- name: io.k8s.api.extensions.v1beta1.NetworkPolicyEgressRule
       map:
         fields:
    -    - name: lastTransitionTime
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    -    - name: message
    +    - name: ports
           type:
    -        scalar: string
    -    - name: reason
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyPort
    +          elementRelationship: atomic
    +    - name: to
           type:
    -        scalar: string
    -    - name: status
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyPeer
    +          elementRelationship: atomic
    +- name: io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule
    +  map:
    +    fields:
    +    - name: from
           type:
    -        scalar: string
    -      default: ""
    -    - name: type
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyPeer
    +          elementRelationship: atomic
    +    - name: ports
           type:
    -        scalar: string
    -      default: ""
    -- name: io.k8s.api.extensions.v1beta1.DaemonSetSpec
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyPort
    +          elementRelationship: atomic
    +- name: io.k8s.api.extensions.v1beta1.NetworkPolicyPeer
       map:
         fields:
    -    - name: minReadySeconds
    -      type:
    -        scalar: numeric
    -    - name: revisionHistoryLimit
    +    - name: ipBlock
           type:
    -        scalar: numeric
    -    - name: selector
    +        namedType: io.k8s.api.extensions.v1beta1.IPBlock
    +    - name: namespaceSelector
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: template
    +    - name: podSelector
           type:
    -        namedType: io.k8s.api.core.v1.PodTemplateSpec
    -      default: {}
    -    - name: templateGeneration
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +- name: io.k8s.api.extensions.v1beta1.NetworkPolicyPort
    +  map:
    +    fields:
    +    - name: endPort
           type:
             scalar: numeric
    -    - name: updateStrategy
    +    - name: port
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy
    -      default: {}
    -- name: io.k8s.api.extensions.v1beta1.DaemonSetStatus
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +    - name: protocol
    +      type:
    +        scalar: string
    +- name: io.k8s.api.extensions.v1beta1.NetworkPolicySpec
       map:
         fields:
    -    - name: collisionCount
    -      type:
    -        scalar: numeric
    -    - name: conditions
    +    - name: egress
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.DaemonSetCondition
    -          elementRelationship: associative
    -          keys:
    -          - type
    -    - name: currentNumberScheduled
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: desiredNumberScheduled
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: numberAvailable
    -      type:
    -        scalar: numeric
    -    - name: numberMisscheduled
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: numberReady
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: numberUnavailable
    -      type:
    -        scalar: numeric
    -    - name: observedGeneration
    -      type:
    -        scalar: numeric
    -    - name: updatedNumberScheduled
    +            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyEgressRule
    +          elementRelationship: atomic
    +    - name: ingress
           type:
    -        scalar: numeric
    -- name: io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy
    -  map:
    -    fields:
    -    - name: rollingUpdate
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule
    +          elementRelationship: atomic
    +    - name: podSelector
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet
    -    - name: type
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +      default: {}
    +    - name: policyTypes
           type:
    -        scalar: string
    -- name: io.k8s.api.extensions.v1beta1.Deployment
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +- name: io.k8s.api.extensions.v1beta1.ReplicaSet
       map:
         fields:
         - name: apiVersion
    @@ -8435,21 +9434,18 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.DeploymentSpec
    +        namedType: io.k8s.api.extensions.v1beta1.ReplicaSetSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.DeploymentStatus
    +        namedType: io.k8s.api.extensions.v1beta1.ReplicaSetStatus
           default: {}
    -- name: io.k8s.api.extensions.v1beta1.DeploymentCondition
    +- name: io.k8s.api.extensions.v1beta1.ReplicaSetCondition
       map:
         fields:
         - name: lastTransitionTime
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    -    - name: lastUpdateTime
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
         - name: message
           type:
             scalar: string
    @@ -8464,55 +9460,39 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.extensions.v1beta1.DeploymentSpec
    +- name: io.k8s.api.extensions.v1beta1.ReplicaSetSpec
       map:
         fields:
         - name: minReadySeconds
           type:
             scalar: numeric
    -    - name: paused
    -      type:
    -        scalar: boolean
    -    - name: progressDeadlineSeconds
    -      type:
    -        scalar: numeric
         - name: replicas
           type:
             scalar: numeric
    -    - name: revisionHistoryLimit
    -      type:
    -        scalar: numeric
    -    - name: rollbackTo
    -      type:
    -        namedType: io.k8s.api.extensions.v1beta1.RollbackConfig
         - name: selector
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: strategy
    -      type:
    -        namedType: io.k8s.api.extensions.v1beta1.DeploymentStrategy
    -      default: {}
         - name: template
           type:
             namedType: io.k8s.api.core.v1.PodTemplateSpec
           default: {}
    -- name: io.k8s.api.extensions.v1beta1.DeploymentStatus
    +- name: io.k8s.api.extensions.v1beta1.ReplicaSetStatus
       map:
         fields:
         - name: availableReplicas
           type:
             scalar: numeric
    -    - name: collisionCount
    -      type:
    -        scalar: numeric
         - name: conditions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.DeploymentCondition
    +            namedType: io.k8s.api.extensions.v1beta1.ReplicaSetCondition
               elementRelationship: associative
               keys:
               - type
    +    - name: fullyLabeledReplicas
    +      type:
    +        scalar: numeric
         - name: observedGeneration
           type:
             scalar: numeric
    @@ -8522,57 +9502,48 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: replicas
           type:
             scalar: numeric
    -    - name: unavailableReplicas
    -      type:
    -        scalar: numeric
    -    - name: updatedReplicas
    +      default: 0
    +- name: io.k8s.api.extensions.v1beta1.RollbackConfig
    +  map:
    +    fields:
    +    - name: revision
           type:
             scalar: numeric
    -- name: io.k8s.api.extensions.v1beta1.DeploymentStrategy
    +- name: io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet
       map:
         fields:
    -    - name: rollingUpdate
    +    - name: maxSurge
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.RollingUpdateDeployment
    -    - name: type
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +    - name: maxUnavailable
           type:
    -        scalar: string
    -- name: io.k8s.api.extensions.v1beta1.HTTPIngressPath
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +- name: io.k8s.api.extensions.v1beta1.RollingUpdateDeployment
       map:
         fields:
    -    - name: backend
    -      type:
    -        namedType: io.k8s.api.extensions.v1beta1.IngressBackend
    -      default: {}
    -    - name: path
    +    - name: maxSurge
           type:
    -        scalar: string
    -    - name: pathType
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +    - name: maxUnavailable
           type:
    -        scalar: string
    -- name: io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +- name: io.k8s.api.flowcontrol.v1.ExemptPriorityLevelConfiguration
       map:
         fields:
    -    - name: paths
    +    - name: lendablePercent
    +      type:
    +        scalar: numeric
    +    - name: nominalConcurrencyShares
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.HTTPIngressPath
    -          elementRelationship: atomic
    -- name: io.k8s.api.extensions.v1beta1.IPBlock
    +        scalar: numeric
    +- name: io.k8s.api.flowcontrol.v1.FlowDistinguisherMethod
       map:
         fields:
    -    - name: cidr
    +    - name: type
           type:
             scalar: string
           default: ""
    -    - name: except
    -      type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -- name: io.k8s.api.extensions.v1beta1.Ingress
    +- name: io.k8s.api.flowcontrol.v1.FlowSchema
       map:
         fields:
         - name: apiVersion
    @@ -8587,208 +9558,136 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.IngressSpec
    +        namedType: io.k8s.api.flowcontrol.v1.FlowSchemaSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.IngressStatus
    +        namedType: io.k8s.api.flowcontrol.v1.FlowSchemaStatus
           default: {}
    -- name: io.k8s.api.extensions.v1beta1.IngressBackend
    +- name: io.k8s.api.flowcontrol.v1.FlowSchemaCondition
       map:
         fields:
    -    - name: resource
    +    - name: lastTransitionTime
           type:
    -        namedType: io.k8s.api.core.v1.TypedLocalObjectReference
    -    - name: serviceName
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +    - name: message
           type:
             scalar: string
    -    - name: servicePort
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -- name: io.k8s.api.extensions.v1beta1.IngressLoadBalancerIngress
    -  map:
    -    fields:
    -    - name: hostname
    +    - name: reason
           type:
             scalar: string
    -    - name: ip
    +    - name: status
           type:
             scalar: string
    -    - name: ports
    -      type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.IngressPortStatus
    -          elementRelationship: atomic
    -- name: io.k8s.api.extensions.v1beta1.IngressLoadBalancerStatus
    -  map:
    -    fields:
    -    - name: ingress
    +    - name: type
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.IngressLoadBalancerIngress
    -          elementRelationship: atomic
    -- name: io.k8s.api.extensions.v1beta1.IngressPortStatus
    +        scalar: string
    +- name: io.k8s.api.flowcontrol.v1.FlowSchemaSpec
       map:
         fields:
    -    - name: error
    +    - name: distinguisherMethod
           type:
    -        scalar: string
    -    - name: port
    +        namedType: io.k8s.api.flowcontrol.v1.FlowDistinguisherMethod
    +    - name: matchingPrecedence
           type:
             scalar: numeric
           default: 0
    -    - name: protocol
    -      type:
    -        scalar: string
    -      default: ""
    -- name: io.k8s.api.extensions.v1beta1.IngressRule
    -  map:
    -    fields:
    -    - name: host
    -      type:
    -        scalar: string
    -    - name: http
    -      type:
    -        namedType: io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue
    -- name: io.k8s.api.extensions.v1beta1.IngressSpec
    -  map:
    -    fields:
    -    - name: backend
    -      type:
    -        namedType: io.k8s.api.extensions.v1beta1.IngressBackend
    -    - name: ingressClassName
    +    - name: priorityLevelConfiguration
           type:
    -        scalar: string
    +        namedType: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationReference
    +      default: {}
         - name: rules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.IngressRule
    +            namedType: io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects
               elementRelationship: atomic
    -    - name: tls
    +- name: io.k8s.api.flowcontrol.v1.FlowSchemaStatus
    +  map:
    +    fields:
    +    - name: conditions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.IngressTLS
    -          elementRelationship: atomic
    -- name: io.k8s.api.extensions.v1beta1.IngressStatus
    +            namedType: io.k8s.api.flowcontrol.v1.FlowSchemaCondition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +- name: io.k8s.api.flowcontrol.v1.GroupSubject
       map:
         fields:
    -    - name: loadBalancer
    +    - name: name
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.IngressLoadBalancerStatus
    -      default: {}
    -- name: io.k8s.api.extensions.v1beta1.IngressTLS
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.flowcontrol.v1.LimitResponse
       map:
         fields:
    -    - name: hosts
    +    - name: queuing
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: secretName
    +        namedType: io.k8s.api.flowcontrol.v1.QueuingConfiguration
    +    - name: type
           type:
             scalar: string
    -- name: io.k8s.api.extensions.v1beta1.NetworkPolicy
    +      default: ""
    +    unions:
    +    - discriminator: type
    +      fields:
    +      - fieldName: queuing
    +        discriminatorValue: Queuing
    +- name: io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration
       map:
         fields:
    -    - name: apiVersion
    -      type:
    -        scalar: string
    -    - name: kind
    +    - name: borrowingLimitPercent
           type:
    -        scalar: string
    -    - name: metadata
    +        scalar: numeric
    +    - name: lendablePercent
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: spec
    +        scalar: numeric
    +    - name: limitResponse
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.NetworkPolicySpec
    +        namedType: io.k8s.api.flowcontrol.v1.LimitResponse
           default: {}
    -- name: io.k8s.api.extensions.v1beta1.NetworkPolicyEgressRule
    -  map:
    -    fields:
    -    - name: ports
    -      type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyPort
    -          elementRelationship: atomic
    -    - name: to
    +    - name: nominalConcurrencyShares
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyPeer
    -          elementRelationship: atomic
    -- name: io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule
    +        scalar: numeric
    +- name: io.k8s.api.flowcontrol.v1.NonResourcePolicyRule
       map:
         fields:
    -    - name: from
    +    - name: nonResourceURLs
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyPeer
    -          elementRelationship: atomic
    -    - name: ports
    +            scalar: string
    +          elementRelationship: associative
    +    - name: verbs
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyPort
    -          elementRelationship: atomic
    -- name: io.k8s.api.extensions.v1beta1.NetworkPolicyPeer
    -  map:
    -    fields:
    -    - name: ipBlock
    -      type:
    -        namedType: io.k8s.api.extensions.v1beta1.IPBlock
    -    - name: namespaceSelector
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: podSelector
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -- name: io.k8s.api.extensions.v1beta1.NetworkPolicyPort
    -  map:
    -    fields:
    -    - name: endPort
    -      type:
    -        scalar: numeric
    -    - name: port
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -    - name: protocol
    -      type:
    -        scalar: string
    -- name: io.k8s.api.extensions.v1beta1.NetworkPolicySpec
    +            scalar: string
    +          elementRelationship: associative
    +- name: io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects
       map:
         fields:
    -    - name: egress
    +    - name: nonResourceRules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyEgressRule
    +            namedType: io.k8s.api.flowcontrol.v1.NonResourcePolicyRule
               elementRelationship: atomic
    -    - name: ingress
    +    - name: resourceRules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule
    +            namedType: io.k8s.api.flowcontrol.v1.ResourcePolicyRule
               elementRelationship: atomic
    -    - name: podSelector
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -      default: {}
    -    - name: policyTypes
    +    - name: subjects
           type:
             list:
               elementType:
    -            scalar: string
    +            namedType: io.k8s.api.flowcontrol.v1.Subject
               elementRelationship: atomic
    -- name: io.k8s.api.extensions.v1beta1.ReplicaSet
    +- name: io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration
       map:
         fields:
         - name: apiVersion
    @@ -8803,13 +9702,13 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.ReplicaSetSpec
    +        namedType: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.extensions.v1beta1.ReplicaSetStatus
    +        namedType: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationStatus
           default: {}
    -- name: io.k8s.api.extensions.v1beta1.ReplicaSetCondition
    +- name: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationCondition
       map:
         fields:
         - name: lastTransitionTime
    @@ -8824,79 +9723,136 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: status
           type:
             scalar: string
    -      default: ""
         - name: type
           type:
             scalar: string
    -      default: ""
    -- name: io.k8s.api.extensions.v1beta1.ReplicaSetSpec
    +- name: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationReference
       map:
         fields:
    -    - name: minReadySeconds
    +    - name: name
           type:
    -        scalar: numeric
    -    - name: replicas
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationSpec
    +  map:
    +    fields:
    +    - name: exempt
           type:
    -        scalar: numeric
    -    - name: selector
    +        namedType: io.k8s.api.flowcontrol.v1.ExemptPriorityLevelConfiguration
    +    - name: limited
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: template
    +        namedType: io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration
    +    - name: type
           type:
    -        namedType: io.k8s.api.core.v1.PodTemplateSpec
    -      default: {}
    -- name: io.k8s.api.extensions.v1beta1.ReplicaSetStatus
    +        scalar: string
    +      default: ""
    +    unions:
    +    - discriminator: type
    +      fields:
    +      - fieldName: exempt
    +        discriminatorValue: Exempt
    +      - fieldName: limited
    +        discriminatorValue: Limited
    +- name: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationStatus
       map:
         fields:
    -    - name: availableReplicas
    -      type:
    -        scalar: numeric
         - name: conditions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.extensions.v1beta1.ReplicaSetCondition
    +            namedType: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationCondition
               elementRelationship: associative
               keys:
               - type
    -    - name: fullyLabeledReplicas
    -      type:
    -        scalar: numeric
    -    - name: observedGeneration
    +- name: io.k8s.api.flowcontrol.v1.QueuingConfiguration
    +  map:
    +    fields:
    +    - name: handSize
           type:
             scalar: numeric
    -    - name: readyReplicas
    +      default: 0
    +    - name: queueLengthLimit
           type:
             scalar: numeric
    -    - name: replicas
    +      default: 0
    +    - name: queues
           type:
             scalar: numeric
           default: 0
    -- name: io.k8s.api.extensions.v1beta1.RollbackConfig
    +- name: io.k8s.api.flowcontrol.v1.ResourcePolicyRule
       map:
         fields:
    -    - name: revision
    +    - name: apiGroups
           type:
    -        scalar: numeric
    -- name: io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: associative
    +    - name: clusterScope
    +      type:
    +        scalar: boolean
    +    - name: namespaces
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: associative
    +    - name: resources
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: associative
    +    - name: verbs
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: associative
    +- name: io.k8s.api.flowcontrol.v1.ServiceAccountSubject
       map:
         fields:
    -    - name: maxSurge
    +    - name: name
           type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -    - name: maxUnavailable
    +        scalar: string
    +      default: ""
    +    - name: namespace
           type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -- name: io.k8s.api.extensions.v1beta1.RollingUpdateDeployment
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.flowcontrol.v1.Subject
       map:
         fields:
    -    - name: maxSurge
    +    - name: group
           type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -    - name: maxUnavailable
    +        namedType: io.k8s.api.flowcontrol.v1.GroupSubject
    +    - name: kind
           type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -- name: io.k8s.api.flowcontrol.v1.ExemptPriorityLevelConfiguration
    +        scalar: string
    +      default: ""
    +    - name: serviceAccount
    +      type:
    +        namedType: io.k8s.api.flowcontrol.v1.ServiceAccountSubject
    +    - name: user
    +      type:
    +        namedType: io.k8s.api.flowcontrol.v1.UserSubject
    +    unions:
    +    - discriminator: kind
    +      fields:
    +      - fieldName: group
    +        discriminatorValue: Group
    +      - fieldName: serviceAccount
    +        discriminatorValue: ServiceAccount
    +      - fieldName: user
    +        discriminatorValue: User
    +- name: io.k8s.api.flowcontrol.v1.UserSubject
    +  map:
    +    fields:
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.flowcontrol.v1beta1.ExemptPriorityLevelConfiguration
       map:
         fields:
         - name: lendablePercent
    @@ -8905,14 +9861,14 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: nominalConcurrencyShares
           type:
             scalar: numeric
    -- name: io.k8s.api.flowcontrol.v1.FlowDistinguisherMethod
    +- name: io.k8s.api.flowcontrol.v1beta1.FlowDistinguisherMethod
       map:
         fields:
         - name: type
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1.FlowSchema
    +- name: io.k8s.api.flowcontrol.v1beta1.FlowSchema
       map:
         fields:
         - name: apiVersion
    @@ -8927,13 +9883,13 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.FlowSchemaSpec
    +        namedType: io.k8s.api.flowcontrol.v1beta1.FlowSchemaSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.FlowSchemaStatus
    +        namedType: io.k8s.api.flowcontrol.v1beta1.FlowSchemaStatus
           default: {}
    -- name: io.k8s.api.flowcontrol.v1.FlowSchemaCondition
    +- name: io.k8s.api.flowcontrol.v1beta1.FlowSchemaCondition
       map:
         fields:
         - name: lastTransitionTime
    @@ -8951,50 +9907,50 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: type
           type:
             scalar: string
    -- name: io.k8s.api.flowcontrol.v1.FlowSchemaSpec
    +- name: io.k8s.api.flowcontrol.v1beta1.FlowSchemaSpec
       map:
         fields:
         - name: distinguisherMethod
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.FlowDistinguisherMethod
    +        namedType: io.k8s.api.flowcontrol.v1beta1.FlowDistinguisherMethod
         - name: matchingPrecedence
           type:
             scalar: numeric
           default: 0
         - name: priorityLevelConfiguration
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationReference
    +        namedType: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationReference
           default: {}
         - name: rules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects
    +            namedType: io.k8s.api.flowcontrol.v1beta1.PolicyRulesWithSubjects
               elementRelationship: atomic
    -- name: io.k8s.api.flowcontrol.v1.FlowSchemaStatus
    +- name: io.k8s.api.flowcontrol.v1beta1.FlowSchemaStatus
       map:
         fields:
         - name: conditions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1.FlowSchemaCondition
    +            namedType: io.k8s.api.flowcontrol.v1beta1.FlowSchemaCondition
               elementRelationship: associative
               keys:
               - type
    -- name: io.k8s.api.flowcontrol.v1.GroupSubject
    +- name: io.k8s.api.flowcontrol.v1beta1.GroupSubject
       map:
         fields:
         - name: name
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1.LimitResponse
    +- name: io.k8s.api.flowcontrol.v1beta1.LimitResponse
       map:
         fields:
         - name: queuing
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.QueuingConfiguration
    +        namedType: io.k8s.api.flowcontrol.v1beta1.QueuingConfiguration
         - name: type
           type:
             scalar: string
    @@ -9004,9 +9960,13 @@ var schemaYAML = typed.YAMLObject(`types:
           fields:
           - fieldName: queuing
             discriminatorValue: Queuing
    -- name: io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta1.LimitedPriorityLevelConfiguration
       map:
         fields:
    +    - name: assuredConcurrencyShares
    +      type:
    +        scalar: numeric
    +      default: 0
         - name: borrowingLimitPercent
           type:
             scalar: numeric
    @@ -9015,12 +9975,9 @@ var schemaYAML = typed.YAMLObject(`types:
             scalar: numeric
         - name: limitResponse
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.LimitResponse
    +        namedType: io.k8s.api.flowcontrol.v1beta1.LimitResponse
           default: {}
    -    - name: nominalConcurrencyShares
    -      type:
    -        scalar: numeric
    -- name: io.k8s.api.flowcontrol.v1.NonResourcePolicyRule
    +- name: io.k8s.api.flowcontrol.v1beta1.NonResourcePolicyRule
       map:
         fields:
         - name: nonResourceURLs
    @@ -9035,28 +9992,28 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: string
               elementRelationship: associative
    -- name: io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects
    +- name: io.k8s.api.flowcontrol.v1beta1.PolicyRulesWithSubjects
       map:
         fields:
         - name: nonResourceRules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1.NonResourcePolicyRule
    +            namedType: io.k8s.api.flowcontrol.v1beta1.NonResourcePolicyRule
               elementRelationship: atomic
         - name: resourceRules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1.ResourcePolicyRule
    +            namedType: io.k8s.api.flowcontrol.v1beta1.ResourcePolicyRule
               elementRelationship: atomic
         - name: subjects
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1.Subject
    +            namedType: io.k8s.api.flowcontrol.v1beta1.Subject
               elementRelationship: atomic
    -- name: io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfiguration
       map:
         fields:
         - name: apiVersion
    @@ -9071,13 +10028,13 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationSpec
    +        namedType: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationStatus
    +        namedType: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationStatus
           default: {}
    -- name: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationCondition
    +- name: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationCondition
       map:
         fields:
         - name: lastTransitionTime
    @@ -9095,22 +10052,22 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: type
           type:
             scalar: string
    -- name: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationReference
    +- name: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationReference
       map:
         fields:
         - name: name
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationSpec
    +- name: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationSpec
       map:
         fields:
         - name: exempt
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.ExemptPriorityLevelConfiguration
    +        namedType: io.k8s.api.flowcontrol.v1beta1.ExemptPriorityLevelConfiguration
         - name: limited
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration
    +        namedType: io.k8s.api.flowcontrol.v1beta1.LimitedPriorityLevelConfiguration
         - name: type
           type:
             scalar: string
    @@ -9122,18 +10079,18 @@ var schemaYAML = typed.YAMLObject(`types:
             discriminatorValue: Exempt
           - fieldName: limited
             discriminatorValue: Limited
    -- name: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationStatus
    +- name: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationStatus
       map:
         fields:
         - name: conditions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationCondition
    +            namedType: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationCondition
               elementRelationship: associative
               keys:
               - type
    -- name: io.k8s.api.flowcontrol.v1.QueuingConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta1.QueuingConfiguration
       map:
         fields:
         - name: handSize
    @@ -9148,7 +10105,7 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: numeric
           default: 0
    -- name: io.k8s.api.flowcontrol.v1.ResourcePolicyRule
    +- name: io.k8s.api.flowcontrol.v1beta1.ResourcePolicyRule
       map:
         fields:
         - name: apiGroups
    @@ -9178,7 +10135,7 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: string
               elementRelationship: associative
    -- name: io.k8s.api.flowcontrol.v1.ServiceAccountSubject
    +- name: io.k8s.api.flowcontrol.v1beta1.ServiceAccountSubject
       map:
         fields:
         - name: name
    @@ -9189,22 +10146,22 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1.Subject
    +- name: io.k8s.api.flowcontrol.v1beta1.Subject
       map:
         fields:
         - name: group
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.GroupSubject
    +        namedType: io.k8s.api.flowcontrol.v1beta1.GroupSubject
         - name: kind
           type:
             scalar: string
           default: ""
         - name: serviceAccount
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.ServiceAccountSubject
    +        namedType: io.k8s.api.flowcontrol.v1beta1.ServiceAccountSubject
         - name: user
           type:
    -        namedType: io.k8s.api.flowcontrol.v1.UserSubject
    +        namedType: io.k8s.api.flowcontrol.v1beta1.UserSubject
         unions:
         - discriminator: kind
           fields:
    @@ -9214,14 +10171,14 @@ var schemaYAML = typed.YAMLObject(`types:
             discriminatorValue: ServiceAccount
           - fieldName: user
             discriminatorValue: User
    -- name: io.k8s.api.flowcontrol.v1.UserSubject
    +- name: io.k8s.api.flowcontrol.v1beta1.UserSubject
       map:
         fields:
         - name: name
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta1.ExemptPriorityLevelConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta2.ExemptPriorityLevelConfiguration
       map:
         fields:
         - name: lendablePercent
    @@ -9230,14 +10187,14 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: nominalConcurrencyShares
           type:
             scalar: numeric
    -- name: io.k8s.api.flowcontrol.v1beta1.FlowDistinguisherMethod
    +- name: io.k8s.api.flowcontrol.v1beta2.FlowDistinguisherMethod
       map:
         fields:
         - name: type
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta1.FlowSchema
    +- name: io.k8s.api.flowcontrol.v1beta2.FlowSchema
       map:
         fields:
         - name: apiVersion
    @@ -9252,13 +10209,13 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.FlowSchemaSpec
    +        namedType: io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.FlowSchemaStatus
    +        namedType: io.k8s.api.flowcontrol.v1beta2.FlowSchemaStatus
           default: {}
    -- name: io.k8s.api.flowcontrol.v1beta1.FlowSchemaCondition
    +- name: io.k8s.api.flowcontrol.v1beta2.FlowSchemaCondition
       map:
         fields:
         - name: lastTransitionTime
    @@ -9276,50 +10233,50 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: type
           type:
             scalar: string
    -- name: io.k8s.api.flowcontrol.v1beta1.FlowSchemaSpec
    +- name: io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec
       map:
         fields:
         - name: distinguisherMethod
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.FlowDistinguisherMethod
    +        namedType: io.k8s.api.flowcontrol.v1beta2.FlowDistinguisherMethod
         - name: matchingPrecedence
           type:
             scalar: numeric
           default: 0
         - name: priorityLevelConfiguration
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationReference
    +        namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationReference
           default: {}
         - name: rules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta1.PolicyRulesWithSubjects
    +            namedType: io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects
               elementRelationship: atomic
    -- name: io.k8s.api.flowcontrol.v1beta1.FlowSchemaStatus
    +- name: io.k8s.api.flowcontrol.v1beta2.FlowSchemaStatus
       map:
         fields:
         - name: conditions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta1.FlowSchemaCondition
    +            namedType: io.k8s.api.flowcontrol.v1beta2.FlowSchemaCondition
               elementRelationship: associative
               keys:
               - type
    -- name: io.k8s.api.flowcontrol.v1beta1.GroupSubject
    +- name: io.k8s.api.flowcontrol.v1beta2.GroupSubject
       map:
         fields:
         - name: name
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta1.LimitResponse
    +- name: io.k8s.api.flowcontrol.v1beta2.LimitResponse
       map:
         fields:
         - name: queuing
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.QueuingConfiguration
    +        namedType: io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration
         - name: type
           type:
             scalar: string
    @@ -9329,7 +10286,7 @@ var schemaYAML = typed.YAMLObject(`types:
           fields:
           - fieldName: queuing
             discriminatorValue: Queuing
    -- name: io.k8s.api.flowcontrol.v1beta1.LimitedPriorityLevelConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration
       map:
         fields:
         - name: assuredConcurrencyShares
    @@ -9344,9 +10301,9 @@ var schemaYAML = typed.YAMLObject(`types:
             scalar: numeric
         - name: limitResponse
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.LimitResponse
    +        namedType: io.k8s.api.flowcontrol.v1beta2.LimitResponse
           default: {}
    -- name: io.k8s.api.flowcontrol.v1beta1.NonResourcePolicyRule
    +- name: io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule
       map:
         fields:
         - name: nonResourceURLs
    @@ -9361,28 +10318,28 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: string
               elementRelationship: associative
    -- name: io.k8s.api.flowcontrol.v1beta1.PolicyRulesWithSubjects
    +- name: io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects
       map:
         fields:
         - name: nonResourceRules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta1.NonResourcePolicyRule
    +            namedType: io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule
               elementRelationship: atomic
         - name: resourceRules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta1.ResourcePolicyRule
    +            namedType: io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule
               elementRelationship: atomic
         - name: subjects
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta1.Subject
    +            namedType: io.k8s.api.flowcontrol.v1beta2.Subject
               elementRelationship: atomic
    -- name: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration
       map:
         fields:
         - name: apiVersion
    @@ -9397,13 +10354,13 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationSpec
    +        namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationStatus
    +        namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationStatus
           default: {}
    -- name: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationCondition
    +- name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationCondition
       map:
         fields:
         - name: lastTransitionTime
    @@ -9421,22 +10378,22 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: type
           type:
             scalar: string
    -- name: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationReference
    +- name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationReference
       map:
         fields:
         - name: name
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationSpec
    +- name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec
       map:
         fields:
         - name: exempt
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.ExemptPriorityLevelConfiguration
    +        namedType: io.k8s.api.flowcontrol.v1beta2.ExemptPriorityLevelConfiguration
         - name: limited
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.LimitedPriorityLevelConfiguration
    +        namedType: io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration
         - name: type
           type:
             scalar: string
    @@ -9448,18 +10405,18 @@ var schemaYAML = typed.YAMLObject(`types:
             discriminatorValue: Exempt
           - fieldName: limited
             discriminatorValue: Limited
    -- name: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationStatus
    +- name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationStatus
       map:
         fields:
         - name: conditions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta1.PriorityLevelConfigurationCondition
    +            namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationCondition
               elementRelationship: associative
               keys:
               - type
    -- name: io.k8s.api.flowcontrol.v1beta1.QueuingConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration
       map:
         fields:
         - name: handSize
    @@ -9474,7 +10431,7 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: numeric
           default: 0
    -- name: io.k8s.api.flowcontrol.v1beta1.ResourcePolicyRule
    +- name: io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule
       map:
         fields:
         - name: apiGroups
    @@ -9504,7 +10461,7 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: string
               elementRelationship: associative
    -- name: io.k8s.api.flowcontrol.v1beta1.ServiceAccountSubject
    +- name: io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject
       map:
         fields:
         - name: name
    @@ -9515,22 +10472,22 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta1.Subject
    +- name: io.k8s.api.flowcontrol.v1beta2.Subject
       map:
         fields:
         - name: group
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.GroupSubject
    +        namedType: io.k8s.api.flowcontrol.v1beta2.GroupSubject
         - name: kind
           type:
             scalar: string
           default: ""
         - name: serviceAccount
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.ServiceAccountSubject
    +        namedType: io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject
         - name: user
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta1.UserSubject
    +        namedType: io.k8s.api.flowcontrol.v1beta2.UserSubject
         unions:
         - discriminator: kind
           fields:
    @@ -9540,14 +10497,14 @@ var schemaYAML = typed.YAMLObject(`types:
             discriminatorValue: ServiceAccount
           - fieldName: user
             discriminatorValue: User
    -- name: io.k8s.api.flowcontrol.v1beta1.UserSubject
    +- name: io.k8s.api.flowcontrol.v1beta2.UserSubject
       map:
         fields:
         - name: name
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta2.ExemptPriorityLevelConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta3.ExemptPriorityLevelConfiguration
       map:
         fields:
         - name: lendablePercent
    @@ -9556,14 +10513,14 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: nominalConcurrencyShares
           type:
             scalar: numeric
    -- name: io.k8s.api.flowcontrol.v1beta2.FlowDistinguisherMethod
    +- name: io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod
       map:
         fields:
         - name: type
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta2.FlowSchema
    +- name: io.k8s.api.flowcontrol.v1beta3.FlowSchema
       map:
         fields:
         - name: apiVersion
    @@ -9578,13 +10535,13 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec
    +        namedType: io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.FlowSchemaStatus
    +        namedType: io.k8s.api.flowcontrol.v1beta3.FlowSchemaStatus
           default: {}
    -- name: io.k8s.api.flowcontrol.v1beta2.FlowSchemaCondition
    +- name: io.k8s.api.flowcontrol.v1beta3.FlowSchemaCondition
       map:
         fields:
         - name: lastTransitionTime
    @@ -9602,50 +10559,50 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: type
           type:
             scalar: string
    -- name: io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec
    +- name: io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec
       map:
         fields:
         - name: distinguisherMethod
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.FlowDistinguisherMethod
    +        namedType: io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod
         - name: matchingPrecedence
           type:
             scalar: numeric
           default: 0
         - name: priorityLevelConfiguration
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationReference
    +        namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference
           default: {}
         - name: rules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects
    +            namedType: io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects
               elementRelationship: atomic
    -- name: io.k8s.api.flowcontrol.v1beta2.FlowSchemaStatus
    +- name: io.k8s.api.flowcontrol.v1beta3.FlowSchemaStatus
       map:
         fields:
         - name: conditions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta2.FlowSchemaCondition
    +            namedType: io.k8s.api.flowcontrol.v1beta3.FlowSchemaCondition
               elementRelationship: associative
               keys:
               - type
    -- name: io.k8s.api.flowcontrol.v1beta2.GroupSubject
    +- name: io.k8s.api.flowcontrol.v1beta3.GroupSubject
       map:
         fields:
         - name: name
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta2.LimitResponse
    +- name: io.k8s.api.flowcontrol.v1beta3.LimitResponse
       map:
         fields:
         - name: queuing
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration
    +        namedType: io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration
         - name: type
           type:
             scalar: string
    @@ -9655,13 +10612,9 @@ var schemaYAML = typed.YAMLObject(`types:
           fields:
           - fieldName: queuing
             discriminatorValue: Queuing
    -- name: io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration
       map:
         fields:
    -    - name: assuredConcurrencyShares
    -      type:
    -        scalar: numeric
    -      default: 0
         - name: borrowingLimitPercent
           type:
             scalar: numeric
    @@ -9670,9 +10623,13 @@ var schemaYAML = typed.YAMLObject(`types:
             scalar: numeric
         - name: limitResponse
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.LimitResponse
    +        namedType: io.k8s.api.flowcontrol.v1beta3.LimitResponse
           default: {}
    -- name: io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule
    +    - name: nominalConcurrencyShares
    +      type:
    +        scalar: numeric
    +      default: 0
    +- name: io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule
       map:
         fields:
         - name: nonResourceURLs
    @@ -9687,28 +10644,28 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: string
               elementRelationship: associative
    -- name: io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects
    +- name: io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects
       map:
         fields:
         - name: nonResourceRules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule
    +            namedType: io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule
               elementRelationship: atomic
         - name: resourceRules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule
    +            namedType: io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule
               elementRelationship: atomic
         - name: subjects
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta2.Subject
    +            namedType: io.k8s.api.flowcontrol.v1beta3.Subject
               elementRelationship: atomic
    -- name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration
       map:
         fields:
         - name: apiVersion
    @@ -9723,13 +10680,13 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec
    +        namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationStatus
    +        namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationStatus
           default: {}
    -- name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationCondition
    +- name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationCondition
       map:
         fields:
         - name: lastTransitionTime
    @@ -9747,22 +10704,22 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: type
           type:
             scalar: string
    -- name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationReference
    +- name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference
       map:
         fields:
         - name: name
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec
    +- name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec
       map:
         fields:
         - name: exempt
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.ExemptPriorityLevelConfiguration
    +        namedType: io.k8s.api.flowcontrol.v1beta3.ExemptPriorityLevelConfiguration
         - name: limited
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration
    +        namedType: io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration
         - name: type
           type:
             scalar: string
    @@ -9774,18 +10731,18 @@ var schemaYAML = typed.YAMLObject(`types:
             discriminatorValue: Exempt
           - fieldName: limited
             discriminatorValue: Limited
    -- name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationStatus
    +- name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationStatus
       map:
         fields:
         - name: conditions
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationCondition
    +            namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationCondition
               elementRelationship: associative
               keys:
               - type
    -- name: io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration
    +- name: io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration
       map:
         fields:
         - name: handSize
    @@ -9800,7 +10757,7 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: numeric
           default: 0
    -- name: io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule
    +- name: io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule
       map:
         fields:
         - name: apiGroups
    @@ -9830,7 +10787,7 @@ var schemaYAML = typed.YAMLObject(`types:
               elementType:
                 scalar: string
               elementRelationship: associative
    -- name: io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject
    +- name: io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject
       map:
         fields:
         - name: name
    @@ -9841,22 +10798,22 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta2.Subject
    +- name: io.k8s.api.flowcontrol.v1beta3.Subject
       map:
         fields:
         - name: group
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.GroupSubject
    +        namedType: io.k8s.api.flowcontrol.v1beta3.GroupSubject
         - name: kind
           type:
             scalar: string
           default: ""
         - name: serviceAccount
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject
    +        namedType: io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject
         - name: user
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta2.UserSubject
    +        namedType: io.k8s.api.flowcontrol.v1beta3.UserSubject
         unions:
         - discriminator: kind
           fields:
    @@ -9866,30 +10823,108 @@ var schemaYAML = typed.YAMLObject(`types:
             discriminatorValue: ServiceAccount
           - fieldName: user
             discriminatorValue: User
    -- name: io.k8s.api.flowcontrol.v1beta2.UserSubject
    +- name: io.k8s.api.flowcontrol.v1beta3.UserSubject
       map:
         fields:
         - name: name
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta3.ExemptPriorityLevelConfiguration
    +- name: io.k8s.api.imagepolicy.v1alpha1.ImageReview
       map:
         fields:
    -    - name: lendablePercent
    +    - name: apiVersion
           type:
    -        scalar: numeric
    -    - name: nominalConcurrencyShares
    +        scalar: string
    +    - name: kind
           type:
    -        scalar: numeric
    -- name: io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.imagepolicy.v1alpha1.ImageReviewSpec
    +      default: {}
    +    - name: status
    +      type:
    +        namedType: io.k8s.api.imagepolicy.v1alpha1.ImageReviewStatus
    +      default: {}
    +- name: io.k8s.api.imagepolicy.v1alpha1.ImageReviewContainerSpec
       map:
         fields:
    -    - name: type
    +    - name: image
    +      type:
    +        scalar: string
    +- name: io.k8s.api.imagepolicy.v1alpha1.ImageReviewSpec
    +  map:
    +    fields:
    +    - name: annotations
    +      type:
    +        map:
    +          elementType:
    +            scalar: string
    +    - name: containers
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.imagepolicy.v1alpha1.ImageReviewContainerSpec
    +          elementRelationship: atomic
    +    - name: namespace
    +      type:
    +        scalar: string
    +- name: io.k8s.api.imagepolicy.v1alpha1.ImageReviewStatus
    +  map:
    +    fields:
    +    - name: allowed
    +      type:
    +        scalar: boolean
    +      default: false
    +    - name: auditAnnotations
    +      type:
    +        map:
    +          elementType:
    +            scalar: string
    +    - name: reason
    +      type:
    +        scalar: string
    +- name: io.k8s.api.networking.v1.HTTPIngressPath
    +  map:
    +    fields:
    +    - name: backend
    +      type:
    +        namedType: io.k8s.api.networking.v1.IngressBackend
    +      default: {}
    +    - name: path
    +      type:
    +        scalar: string
    +    - name: pathType
    +      type:
    +        scalar: string
    +- name: io.k8s.api.networking.v1.HTTPIngressRuleValue
    +  map:
    +    fields:
    +    - name: paths
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.networking.v1.HTTPIngressPath
    +          elementRelationship: atomic
    +- name: io.k8s.api.networking.v1.IPBlock
    +  map:
    +    fields:
    +    - name: cidr
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.flowcontrol.v1beta3.FlowSchema
    +    - name: except
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +- name: io.k8s.api.networking.v1.Ingress
       map:
         fields:
         - name: apiVersion
    @@ -9904,137 +10939,166 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec
    +        namedType: io.k8s.api.networking.v1.IngressSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.FlowSchemaStatus
    +        namedType: io.k8s.api.networking.v1.IngressStatus
           default: {}
    -- name: io.k8s.api.flowcontrol.v1beta3.FlowSchemaCondition
    +- name: io.k8s.api.networking.v1.IngressBackend
       map:
         fields:
    -    - name: lastTransitionTime
    +    - name: resource
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    -    - name: message
    +        namedType: io.k8s.api.core.v1.TypedLocalObjectReference
    +    - name: service
    +      type:
    +        namedType: io.k8s.api.networking.v1.IngressServiceBackend
    +- name: io.k8s.api.networking.v1.IngressClass
    +  map:
    +    fields:
    +    - name: apiVersion
           type:
             scalar: string
    -    - name: reason
    +    - name: kind
           type:
             scalar: string
    -    - name: status
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.networking.v1.IngressClassSpec
    +      default: {}
    +- name: io.k8s.api.networking.v1.IngressClassParametersReference
    +  map:
    +    fields:
    +    - name: apiGroup
           type:
             scalar: string
    -    - name: type
    +    - name: kind
           type:
             scalar: string
    -- name: io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec
    +      default: ""
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: namespace
    +      type:
    +        scalar: string
    +    - name: scope
    +      type:
    +        scalar: string
    +- name: io.k8s.api.networking.v1.IngressClassSpec
       map:
         fields:
    -    - name: distinguisherMethod
    +    - name: controller
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod
    -    - name: matchingPrecedence
    +        scalar: string
    +    - name: parameters
           type:
    -        scalar: numeric
    -      default: 0
    -    - name: priorityLevelConfiguration
    +        namedType: io.k8s.api.networking.v1.IngressClassParametersReference
    +- name: io.k8s.api.networking.v1.IngressLoadBalancerIngress
    +  map:
    +    fields:
    +    - name: hostname
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference
    -      default: {}
    -    - name: rules
    +        scalar: string
    +    - name: ip
    +      type:
    +        scalar: string
    +    - name: ports
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects
    +            namedType: io.k8s.api.networking.v1.IngressPortStatus
               elementRelationship: atomic
    -- name: io.k8s.api.flowcontrol.v1beta3.FlowSchemaStatus
    +- name: io.k8s.api.networking.v1.IngressLoadBalancerStatus
       map:
         fields:
    -    - name: conditions
    +    - name: ingress
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta3.FlowSchemaCondition
    -          elementRelationship: associative
    -          keys:
    -          - type
    -- name: io.k8s.api.flowcontrol.v1beta3.GroupSubject
    +            namedType: io.k8s.api.networking.v1.IngressLoadBalancerIngress
    +          elementRelationship: atomic
    +- name: io.k8s.api.networking.v1.IngressPortStatus
       map:
         fields:
    -    - name: name
    +    - name: error
           type:
             scalar: string
    -      default: ""
    -- name: io.k8s.api.flowcontrol.v1beta3.LimitResponse
    -  map:
    -    fields:
    -    - name: queuing
    +    - name: port
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration
    -    - name: type
    +        scalar: numeric
    +      default: 0
    +    - name: protocol
           type:
             scalar: string
           default: ""
    -    unions:
    -    - discriminator: type
    -      fields:
    -      - fieldName: queuing
    -        discriminatorValue: Queuing
    -- name: io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration
    +- name: io.k8s.api.networking.v1.IngressRule
       map:
         fields:
    -    - name: borrowingLimitPercent
    -      type:
    -        scalar: numeric
    -    - name: lendablePercent
    -      type:
    -        scalar: numeric
    -    - name: limitResponse
    +    - name: host
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.LimitResponse
    -      default: {}
    -    - name: nominalConcurrencyShares
    +        scalar: string
    +    - name: http
           type:
    -        scalar: numeric
    -      default: 0
    -- name: io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule
    +        namedType: io.k8s.api.networking.v1.HTTPIngressRuleValue
    +- name: io.k8s.api.networking.v1.IngressServiceBackend
       map:
         fields:
    -    - name: nonResourceURLs
    +    - name: name
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: associative
    -    - name: verbs
    +        scalar: string
    +      default: ""
    +    - name: port
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: associative
    -- name: io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects
    +        namedType: io.k8s.api.networking.v1.ServiceBackendPort
    +      default: {}
    +- name: io.k8s.api.networking.v1.IngressSpec
       map:
         fields:
    -    - name: nonResourceRules
    +    - name: defaultBackend
    +      type:
    +        namedType: io.k8s.api.networking.v1.IngressBackend
    +    - name: ingressClassName
    +      type:
    +        scalar: string
    +    - name: rules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule
    +            namedType: io.k8s.api.networking.v1.IngressRule
               elementRelationship: atomic
    -    - name: resourceRules
    +    - name: tls
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule
    +            namedType: io.k8s.api.networking.v1.IngressTLS
               elementRelationship: atomic
    -    - name: subjects
    +- name: io.k8s.api.networking.v1.IngressStatus
    +  map:
    +    fields:
    +    - name: loadBalancer
    +      type:
    +        namedType: io.k8s.api.networking.v1.IngressLoadBalancerStatus
    +      default: {}
    +- name: io.k8s.api.networking.v1.IngressTLS
    +  map:
    +    fields:
    +    - name: hosts
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta3.Subject
    +            scalar: string
               elementRelationship: atomic
    -- name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration
    +    - name: secretName
    +      type:
    +        scalar: string
    +- name: io.k8s.api.networking.v1.NetworkPolicy
       map:
         fields:
         - name: apiVersion
    @@ -10049,157 +11113,136 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec
    -      default: {}
    -    - name: status
    -      type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationStatus
    +        namedType: io.k8s.api.networking.v1.NetworkPolicySpec
           default: {}
    -- name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationCondition
    +- name: io.k8s.api.networking.v1.NetworkPolicyEgressRule
       map:
         fields:
    -    - name: lastTransitionTime
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    -    - name: message
    -      type:
    -        scalar: string
    -    - name: reason
    -      type:
    -        scalar: string
    -    - name: status
    +    - name: ports
           type:
    -        scalar: string
    -    - name: type
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.networking.v1.NetworkPolicyPort
    +          elementRelationship: atomic
    +    - name: to
           type:
    -        scalar: string
    -- name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.networking.v1.NetworkPolicyPeer
    +          elementRelationship: atomic
    +- name: io.k8s.api.networking.v1.NetworkPolicyIngressRule
       map:
         fields:
    -    - name: name
    +    - name: from
           type:
    -        scalar: string
    -      default: ""
    -- name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.networking.v1.NetworkPolicyPeer
    +          elementRelationship: atomic
    +    - name: ports
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.networking.v1.NetworkPolicyPort
    +          elementRelationship: atomic
    +- name: io.k8s.api.networking.v1.NetworkPolicyPeer
       map:
         fields:
    -    - name: exempt
    -      type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.ExemptPriorityLevelConfiguration
    -    - name: limited
    +    - name: ipBlock
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration
    -    - name: type
    +        namedType: io.k8s.api.networking.v1.IPBlock
    +    - name: namespaceSelector
           type:
    -        scalar: string
    -      default: ""
    -    unions:
    -    - discriminator: type
    -      fields:
    -      - fieldName: exempt
    -        discriminatorValue: Exempt
    -      - fieldName: limited
    -        discriminatorValue: Limited
    -- name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationStatus
    -  map:
    -    fields:
    -    - name: conditions
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: podSelector
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationCondition
    -          elementRelationship: associative
    -          keys:
    -          - type
    -- name: io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +- name: io.k8s.api.networking.v1.NetworkPolicyPort
       map:
         fields:
    -    - name: handSize
    +    - name: endPort
           type:
             scalar: numeric
    -      default: 0
    -    - name: queueLengthLimit
    +    - name: port
           type:
    -        scalar: numeric
    -      default: 0
    -    - name: queues
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +    - name: protocol
           type:
    -        scalar: numeric
    -      default: 0
    -- name: io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule
    +        scalar: string
    +- name: io.k8s.api.networking.v1.NetworkPolicySpec
       map:
         fields:
    -    - name: apiGroups
    +    - name: egress
           type:
             list:
               elementType:
    -            scalar: string
    -          elementRelationship: associative
    -    - name: clusterScope
    -      type:
    -        scalar: boolean
    -    - name: namespaces
    +            namedType: io.k8s.api.networking.v1.NetworkPolicyEgressRule
    +          elementRelationship: atomic
    +    - name: ingress
           type:
             list:
               elementType:
    -            scalar: string
    -          elementRelationship: associative
    -    - name: resources
    +            namedType: io.k8s.api.networking.v1.NetworkPolicyIngressRule
    +          elementRelationship: atomic
    +    - name: podSelector
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: associative
    -    - name: verbs
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +      default: {}
    +    - name: policyTypes
           type:
             list:
               elementType:
                 scalar: string
    -          elementRelationship: associative
    -- name: io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject
    +          elementRelationship: atomic
    +- name: io.k8s.api.networking.v1.ServiceBackendPort
       map:
         fields:
         - name: name
           type:
             scalar: string
    -      default: ""
    -    - name: namespace
    +    - name: number
    +      type:
    +        scalar: numeric
    +    elementRelationship: atomic
    +- name: io.k8s.api.networking.v1alpha1.IPAddress
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.networking.v1alpha1.IPAddressSpec
    +      default: {}
    +- name: io.k8s.api.networking.v1alpha1.IPAddressSpec
    +  map:
    +    fields:
    +    - name: parentRef
           type:
    -        scalar: string
    -      default: ""
    -- name: io.k8s.api.flowcontrol.v1beta3.Subject
    +        namedType: io.k8s.api.networking.v1alpha1.ParentReference
    +- name: io.k8s.api.networking.v1alpha1.ParentReference
       map:
         fields:
         - name: group
    -      type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.GroupSubject
    -    - name: kind
           type:
             scalar: string
    -      default: ""
    -    - name: serviceAccount
    +    - name: name
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject
    -    - name: user
    +        scalar: string
    +    - name: namespace
           type:
    -        namedType: io.k8s.api.flowcontrol.v1beta3.UserSubject
    -    unions:
    -    - discriminator: kind
    -      fields:
    -      - fieldName: group
    -        discriminatorValue: Group
    -      - fieldName: serviceAccount
    -        discriminatorValue: ServiceAccount
    -      - fieldName: user
    -        discriminatorValue: User
    -- name: io.k8s.api.flowcontrol.v1beta3.UserSubject
    -  map:
    -    fields:
    -    - name: name
    +        scalar: string
    +    - name: resource
           type:
             scalar: string
    -      default: ""
    -- name: io.k8s.api.imagepolicy.v1alpha1.ImageReview
    +- name: io.k8s.api.networking.v1alpha1.ServiceCIDR
       map:
         fields:
         - name: apiVersion
    @@ -10214,56 +11257,38 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.imagepolicy.v1alpha1.ImageReviewSpec
    +        namedType: io.k8s.api.networking.v1alpha1.ServiceCIDRSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.imagepolicy.v1alpha1.ImageReviewStatus
    +        namedType: io.k8s.api.networking.v1alpha1.ServiceCIDRStatus
           default: {}
    -- name: io.k8s.api.imagepolicy.v1alpha1.ImageReviewContainerSpec
    -  map:
    -    fields:
    -    - name: image
    -      type:
    -        scalar: string
    -- name: io.k8s.api.imagepolicy.v1alpha1.ImageReviewSpec
    +- name: io.k8s.api.networking.v1alpha1.ServiceCIDRSpec
       map:
         fields:
    -    - name: annotations
    -      type:
    -        map:
    -          elementType:
    -            scalar: string
    -    - name: containers
    +    - name: cidrs
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.imagepolicy.v1alpha1.ImageReviewContainerSpec
    +            scalar: string
               elementRelationship: atomic
    -    - name: namespace
    -      type:
    -        scalar: string
    -- name: io.k8s.api.imagepolicy.v1alpha1.ImageReviewStatus
    +- name: io.k8s.api.networking.v1alpha1.ServiceCIDRStatus
       map:
         fields:
    -    - name: allowed
    -      type:
    -        scalar: boolean
    -      default: false
    -    - name: auditAnnotations
    +    - name: conditions
           type:
    -        map:
    +        list:
               elementType:
    -            scalar: string
    -    - name: reason
    -      type:
    -        scalar: string
    -- name: io.k8s.api.networking.v1.HTTPIngressPath
    +            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Condition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +- name: io.k8s.api.networking.v1beta1.HTTPIngressPath
       map:
         fields:
         - name: backend
           type:
    -        namedType: io.k8s.api.networking.v1.IngressBackend
    +        namedType: io.k8s.api.networking.v1beta1.IngressBackend
           default: {}
         - name: path
           type:
    @@ -10271,29 +11296,39 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: pathType
           type:
             scalar: string
    -- name: io.k8s.api.networking.v1.HTTPIngressRuleValue
    +- name: io.k8s.api.networking.v1beta1.HTTPIngressRuleValue
       map:
         fields:
         - name: paths
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.networking.v1.HTTPIngressPath
    +            namedType: io.k8s.api.networking.v1beta1.HTTPIngressPath
               elementRelationship: atomic
    -- name: io.k8s.api.networking.v1.IPBlock
    +- name: io.k8s.api.networking.v1beta1.IPAddress
       map:
         fields:
    -    - name: cidr
    +    - name: apiVersion
           type:
             scalar: string
    -      default: ""
    -    - name: except
    +    - name: kind
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -- name: io.k8s.api.networking.v1.Ingress
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.networking.v1beta1.IPAddressSpec
    +      default: {}
    +- name: io.k8s.api.networking.v1beta1.IPAddressSpec
    +  map:
    +    fields:
    +    - name: parentRef
    +      type:
    +        namedType: io.k8s.api.networking.v1beta1.ParentReference
    +- name: io.k8s.api.networking.v1beta1.Ingress
       map:
         fields:
         - name: apiVersion
    @@ -10308,22 +11343,25 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.networking.v1.IngressSpec
    +        namedType: io.k8s.api.networking.v1beta1.IngressSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.networking.v1.IngressStatus
    +        namedType: io.k8s.api.networking.v1beta1.IngressStatus
           default: {}
    -- name: io.k8s.api.networking.v1.IngressBackend
    +- name: io.k8s.api.networking.v1beta1.IngressBackend
       map:
         fields:
         - name: resource
           type:
             namedType: io.k8s.api.core.v1.TypedLocalObjectReference
    -    - name: service
    +    - name: serviceName
           type:
    -        namedType: io.k8s.api.networking.v1.IngressServiceBackend
    -- name: io.k8s.api.networking.v1.IngressClass
    +        scalar: string
    +    - name: servicePort
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +- name: io.k8s.api.networking.v1beta1.IngressClass
       map:
         fields:
         - name: apiVersion
    @@ -10338,9 +11376,9 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.networking.v1.IngressClassSpec
    +        namedType: io.k8s.api.networking.v1beta1.IngressClassSpec
           default: {}
    -- name: io.k8s.api.networking.v1.IngressClassParametersReference
    +- name: io.k8s.api.networking.v1beta1.IngressClassParametersReference
       map:
         fields:
         - name: apiGroup
    @@ -10360,7 +11398,7 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: scope
           type:
             scalar: string
    -- name: io.k8s.api.networking.v1.IngressClassSpec
    +- name: io.k8s.api.networking.v1beta1.IngressClassSpec
       map:
         fields:
         - name: controller
    @@ -10368,8 +11406,8 @@ var schemaYAML = typed.YAMLObject(`types:
             scalar: string
         - name: parameters
           type:
    -        namedType: io.k8s.api.networking.v1.IngressClassParametersReference
    -- name: io.k8s.api.networking.v1.IngressLoadBalancerIngress
    +        namedType: io.k8s.api.networking.v1beta1.IngressClassParametersReference
    +- name: io.k8s.api.networking.v1beta1.IngressLoadBalancerIngress
       map:
         fields:
         - name: hostname
    @@ -10382,92 +11420,191 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.networking.v1.IngressPortStatus
    -          elementRelationship: atomic
    -- name: io.k8s.api.networking.v1.IngressLoadBalancerStatus
    +            namedType: io.k8s.api.networking.v1beta1.IngressPortStatus
    +          elementRelationship: atomic
    +- name: io.k8s.api.networking.v1beta1.IngressLoadBalancerStatus
    +  map:
    +    fields:
    +    - name: ingress
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.networking.v1beta1.IngressLoadBalancerIngress
    +          elementRelationship: atomic
    +- name: io.k8s.api.networking.v1beta1.IngressPortStatus
    +  map:
    +    fields:
    +    - name: error
    +      type:
    +        scalar: string
    +    - name: port
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: protocol
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.networking.v1beta1.IngressRule
    +  map:
    +    fields:
    +    - name: host
    +      type:
    +        scalar: string
    +    - name: http
    +      type:
    +        namedType: io.k8s.api.networking.v1beta1.HTTPIngressRuleValue
    +- name: io.k8s.api.networking.v1beta1.IngressSpec
    +  map:
    +    fields:
    +    - name: backend
    +      type:
    +        namedType: io.k8s.api.networking.v1beta1.IngressBackend
    +    - name: ingressClassName
    +      type:
    +        scalar: string
    +    - name: rules
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.networking.v1beta1.IngressRule
    +          elementRelationship: atomic
    +    - name: tls
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.networking.v1beta1.IngressTLS
    +          elementRelationship: atomic
    +- name: io.k8s.api.networking.v1beta1.IngressStatus
    +  map:
    +    fields:
    +    - name: loadBalancer
    +      type:
    +        namedType: io.k8s.api.networking.v1beta1.IngressLoadBalancerStatus
    +      default: {}
    +- name: io.k8s.api.networking.v1beta1.IngressTLS
    +  map:
    +    fields:
    +    - name: hosts
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: secretName
    +      type:
    +        scalar: string
    +- name: io.k8s.api.networking.v1beta1.ParentReference
    +  map:
    +    fields:
    +    - name: group
    +      type:
    +        scalar: string
    +    - name: name
    +      type:
    +        scalar: string
    +    - name: namespace
    +      type:
    +        scalar: string
    +    - name: resource
    +      type:
    +        scalar: string
    +- name: io.k8s.api.networking.v1beta1.ServiceCIDR
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.networking.v1beta1.ServiceCIDRSpec
    +      default: {}
    +    - name: status
    +      type:
    +        namedType: io.k8s.api.networking.v1beta1.ServiceCIDRStatus
    +      default: {}
    +- name: io.k8s.api.networking.v1beta1.ServiceCIDRSpec
    +  map:
    +    fields:
    +    - name: cidrs
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +- name: io.k8s.api.networking.v1beta1.ServiceCIDRStatus
    +  map:
    +    fields:
    +    - name: conditions
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Condition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +- name: io.k8s.api.node.v1.Overhead
       map:
         fields:
    -    - name: ingress
    +    - name: podFixed
           type:
    -        list:
    +        map:
               elementType:
    -            namedType: io.k8s.api.networking.v1.IngressLoadBalancerIngress
    -          elementRelationship: atomic
    -- name: io.k8s.api.networking.v1.IngressPortStatus
    +            namedType: io.k8s.apimachinery.pkg.api.resource.Quantity
    +- name: io.k8s.api.node.v1.RuntimeClass
       map:
         fields:
    -    - name: error
    +    - name: apiVersion
           type:
             scalar: string
    -    - name: port
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: protocol
    +    - name: handler
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.networking.v1.IngressRule
    -  map:
    -    fields:
    -    - name: host
    +    - name: kind
           type:
             scalar: string
    -    - name: http
    +    - name: metadata
           type:
    -        namedType: io.k8s.api.networking.v1.HTTPIngressRuleValue
    -- name: io.k8s.api.networking.v1.IngressServiceBackend
    -  map:
    -    fields:
    -    - name: name
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: overhead
           type:
    -        scalar: string
    -      default: ""
    -    - name: port
    +        namedType: io.k8s.api.node.v1.Overhead
    +    - name: scheduling
           type:
    -        namedType: io.k8s.api.networking.v1.ServiceBackendPort
    -      default: {}
    -- name: io.k8s.api.networking.v1.IngressSpec
    +        namedType: io.k8s.api.node.v1.Scheduling
    +- name: io.k8s.api.node.v1.Scheduling
       map:
         fields:
    -    - name: defaultBackend
    -      type:
    -        namedType: io.k8s.api.networking.v1.IngressBackend
    -    - name: ingressClassName
    -      type:
    -        scalar: string
    -    - name: rules
    +    - name: nodeSelector
           type:
    -        list:
    +        map:
               elementType:
    -            namedType: io.k8s.api.networking.v1.IngressRule
    +            scalar: string
               elementRelationship: atomic
    -    - name: tls
    +    - name: tolerations
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.networking.v1.IngressTLS
    +            namedType: io.k8s.api.core.v1.Toleration
               elementRelationship: atomic
    -- name: io.k8s.api.networking.v1.IngressStatus
    -  map:
    -    fields:
    -    - name: loadBalancer
    -      type:
    -        namedType: io.k8s.api.networking.v1.IngressLoadBalancerStatus
    -      default: {}
    -- name: io.k8s.api.networking.v1.IngressTLS
    +- name: io.k8s.api.node.v1alpha1.Overhead
       map:
         fields:
    -    - name: hosts
    +    - name: podFixed
           type:
    -        list:
    +        map:
               elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: secretName
    -      type:
    -        scalar: string
    -- name: io.k8s.api.networking.v1.NetworkPolicy
    +            namedType: io.k8s.apimachinery.pkg.api.resource.Quantity
    +- name: io.k8s.api.node.v1alpha1.RuntimeClass
       map:
         fields:
         - name: apiVersion
    @@ -10482,97 +11619,99 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.networking.v1.NetworkPolicySpec
    +        namedType: io.k8s.api.node.v1alpha1.RuntimeClassSpec
           default: {}
    -- name: io.k8s.api.networking.v1.NetworkPolicyEgressRule
    +- name: io.k8s.api.node.v1alpha1.RuntimeClassSpec
       map:
         fields:
    -    - name: ports
    +    - name: overhead
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.networking.v1.NetworkPolicyPort
    -          elementRelationship: atomic
    -    - name: to
    +        namedType: io.k8s.api.node.v1alpha1.Overhead
    +    - name: runtimeHandler
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.networking.v1.NetworkPolicyPeer
    -          elementRelationship: atomic
    -- name: io.k8s.api.networking.v1.NetworkPolicyIngressRule
    +        scalar: string
    +      default: ""
    +    - name: scheduling
    +      type:
    +        namedType: io.k8s.api.node.v1alpha1.Scheduling
    +- name: io.k8s.api.node.v1alpha1.Scheduling
       map:
         fields:
    -    - name: from
    +    - name: nodeSelector
           type:
    -        list:
    +        map:
               elementType:
    -            namedType: io.k8s.api.networking.v1.NetworkPolicyPeer
    +            scalar: string
               elementRelationship: atomic
    -    - name: ports
    +    - name: tolerations
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.networking.v1.NetworkPolicyPort
    +            namedType: io.k8s.api.core.v1.Toleration
               elementRelationship: atomic
    -- name: io.k8s.api.networking.v1.NetworkPolicyPeer
    +- name: io.k8s.api.node.v1beta1.Overhead
       map:
         fields:
    -    - name: ipBlock
    -      type:
    -        namedType: io.k8s.api.networking.v1.IPBlock
    -    - name: namespaceSelector
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: podSelector
    +    - name: podFixed
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -- name: io.k8s.api.networking.v1.NetworkPolicyPort
    +        map:
    +          elementType:
    +            namedType: io.k8s.apimachinery.pkg.api.resource.Quantity
    +- name: io.k8s.api.node.v1beta1.RuntimeClass
       map:
         fields:
    -    - name: endPort
    +    - name: apiVersion
           type:
    -        scalar: numeric
    -    - name: port
    +        scalar: string
    +    - name: handler
           type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -    - name: protocol
    +        scalar: string
    +      default: ""
    +    - name: kind
           type:
             scalar: string
    -- name: io.k8s.api.networking.v1.NetworkPolicySpec
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: overhead
    +      type:
    +        namedType: io.k8s.api.node.v1beta1.Overhead
    +    - name: scheduling
    +      type:
    +        namedType: io.k8s.api.node.v1beta1.Scheduling
    +- name: io.k8s.api.node.v1beta1.Scheduling
       map:
         fields:
    -    - name: egress
    -      type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.networking.v1.NetworkPolicyEgressRule
    -          elementRelationship: atomic
    -    - name: ingress
    +    - name: nodeSelector
           type:
    -        list:
    +        map:
               elementType:
    -            namedType: io.k8s.api.networking.v1.NetworkPolicyIngressRule
    +            scalar: string
               elementRelationship: atomic
    -    - name: podSelector
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -      default: {}
    -    - name: policyTypes
    +    - name: tolerations
           type:
             list:
               elementType:
    -            scalar: string
    +            namedType: io.k8s.api.core.v1.Toleration
               elementRelationship: atomic
    -- name: io.k8s.api.networking.v1.ServiceBackendPort
    +- name: io.k8s.api.policy.v1.Eviction
       map:
         fields:
    -    - name: name
    +    - name: apiVersion
           type:
             scalar: string
    -    - name: number
    +    - name: deleteOptions
           type:
    -        scalar: numeric
    -- name: io.k8s.api.networking.v1alpha1.IPAddress
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +- name: io.k8s.api.policy.v1.PodDisruptionBudget
       map:
         fields:
         - name: apiVersion
    @@ -10587,30 +11726,79 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.networking.v1alpha1.IPAddressSpec
    +        namedType: io.k8s.api.policy.v1.PodDisruptionBudgetSpec
           default: {}
    -- name: io.k8s.api.networking.v1alpha1.IPAddressSpec
    +    - name: status
    +      type:
    +        namedType: io.k8s.api.policy.v1.PodDisruptionBudgetStatus
    +      default: {}
    +- name: io.k8s.api.policy.v1.PodDisruptionBudgetSpec
       map:
         fields:
    -    - name: parentRef
    +    - name: maxUnavailable
           type:
    -        namedType: io.k8s.api.networking.v1alpha1.ParentReference
    -- name: io.k8s.api.networking.v1alpha1.ParentReference
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +    - name: minAvailable
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +    - name: selector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: unhealthyPodEvictionPolicy
    +      type:
    +        scalar: string
    +- name: io.k8s.api.policy.v1.PodDisruptionBudgetStatus
       map:
         fields:
    -    - name: group
    +    - name: conditions
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Condition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +    - name: currentHealthy
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: desiredHealthy
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: disruptedPods
    +      type:
    +        map:
    +          elementType:
    +            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +    - name: disruptionsAllowed
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: expectedPods
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: observedGeneration
    +      type:
    +        scalar: numeric
    +- name: io.k8s.api.policy.v1beta1.Eviction
    +  map:
    +    fields:
    +    - name: apiVersion
           type:
             scalar: string
    -    - name: name
    +    - name: deleteOptions
           type:
    -        scalar: string
    -    - name: namespace
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions
    +    - name: kind
           type:
             scalar: string
    -    - name: resource
    +    - name: metadata
           type:
    -        scalar: string
    -- name: io.k8s.api.networking.v1alpha1.ServiceCIDR
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +- name: io.k8s.api.policy.v1beta1.PodDisruptionBudget
       map:
         fields:
         - name: apiVersion
    @@ -10625,22 +11813,28 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.networking.v1alpha1.ServiceCIDRSpec
    +        namedType: io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.networking.v1alpha1.ServiceCIDRStatus
    +        namedType: io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus
           default: {}
    -- name: io.k8s.api.networking.v1alpha1.ServiceCIDRSpec
    +- name: io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec
       map:
         fields:
    -    - name: cidrs
    +    - name: maxUnavailable
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -- name: io.k8s.api.networking.v1alpha1.ServiceCIDRStatus
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +    - name: minAvailable
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    +    - name: selector
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +    - name: unhealthyPodEvictionPolicy
    +      type:
    +        scalar: string
    +- name: io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus
       map:
         fields:
         - name: conditions
    @@ -10651,29 +11845,62 @@ var schemaYAML = typed.YAMLObject(`types:
               elementRelationship: associative
               keys:
               - type
    -- name: io.k8s.api.networking.v1beta1.HTTPIngressPath
    +    - name: currentHealthy
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: desiredHealthy
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: disruptedPods
    +      type:
    +        map:
    +          elementType:
    +            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +    - name: disruptionsAllowed
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: expectedPods
    +      type:
    +        scalar: numeric
    +      default: 0
    +    - name: observedGeneration
    +      type:
    +        scalar: numeric
    +- name: io.k8s.api.rbac.v1.AggregationRule
       map:
         fields:
    -    - name: backend
    +    - name: clusterRoleSelectors
           type:
    -        namedType: io.k8s.api.networking.v1beta1.IngressBackend
    -      default: {}
    -    - name: path
    +        list:
    +          elementType:
    +            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1.ClusterRole
    +  map:
    +    fields:
    +    - name: aggregationRule
    +      type:
    +        namedType: io.k8s.api.rbac.v1.AggregationRule
    +    - name: apiVersion
           type:
             scalar: string
    -    - name: pathType
    +    - name: kind
           type:
             scalar: string
    -- name: io.k8s.api.networking.v1beta1.HTTPIngressRuleValue
    -  map:
    -    fields:
    -    - name: paths
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: rules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.networking.v1beta1.HTTPIngressPath
    +            namedType: io.k8s.api.rbac.v1.PolicyRule
               elementRelationship: atomic
    -- name: io.k8s.api.networking.v1beta1.Ingress
    +- name: io.k8s.api.rbac.v1.ClusterRoleBinding
       map:
         fields:
         - name: apiVersion
    @@ -10686,27 +11913,69 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: spec
    +    - name: roleRef
           type:
    -        namedType: io.k8s.api.networking.v1beta1.IngressSpec
    +        namedType: io.k8s.api.rbac.v1.RoleRef
           default: {}
    -    - name: status
    +    - name: subjects
           type:
    -        namedType: io.k8s.api.networking.v1beta1.IngressStatus
    -      default: {}
    -- name: io.k8s.api.networking.v1beta1.IngressBackend
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.rbac.v1.Subject
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1.PolicyRule
       map:
         fields:
    -    - name: resource
    +    - name: apiGroups
           type:
    -        namedType: io.k8s.api.core.v1.TypedLocalObjectReference
    -    - name: serviceName
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: nonResourceURLs
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: resourceNames
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: resources
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: verbs
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1.Role
    +  map:
    +    fields:
    +    - name: apiVersion
           type:
             scalar: string
    -    - name: servicePort
    +    - name: kind
           type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -- name: io.k8s.api.networking.v1beta1.IngressClass
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: rules
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.rbac.v1.PolicyRule
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1.RoleBinding
       map:
         fields:
         - name: apiVersion
    @@ -10719,16 +11988,23 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: spec
    +    - name: roleRef
           type:
    -        namedType: io.k8s.api.networking.v1beta1.IngressClassSpec
    +        namedType: io.k8s.api.rbac.v1.RoleRef
           default: {}
    -- name: io.k8s.api.networking.v1beta1.IngressClassParametersReference
    +    - name: subjects
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.rbac.v1.Subject
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1.RoleRef
       map:
         fields:
         - name: apiGroup
           type:
             scalar: string
    +      default: ""
         - name: kind
           type:
             scalar: string
    @@ -10737,126 +12013,118 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -    - name: namespace
    -      type:
    -        scalar: string
    -    - name: scope
    -      type:
    -        scalar: string
    -- name: io.k8s.api.networking.v1beta1.IngressClassSpec
    +    elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1.Subject
       map:
         fields:
    -    - name: controller
    +    - name: apiGroup
           type:
             scalar: string
    -    - name: parameters
    +    - name: kind
           type:
    -        namedType: io.k8s.api.networking.v1beta1.IngressClassParametersReference
    -- name: io.k8s.api.networking.v1beta1.IngressLoadBalancerIngress
    -  map:
    -    fields:
    -    - name: hostname
    +        scalar: string
    +      default: ""
    +    - name: name
           type:
             scalar: string
    -    - name: ip
    +      default: ""
    +    - name: namespace
           type:
             scalar: string
    -    - name: ports
    +    elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1alpha1.AggregationRule
    +  map:
    +    fields:
    +    - name: clusterRoleSelectors
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.networking.v1beta1.IngressPortStatus
    +            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
               elementRelationship: atomic
    -- name: io.k8s.api.networking.v1beta1.IngressLoadBalancerStatus
    +- name: io.k8s.api.rbac.v1alpha1.ClusterRole
       map:
         fields:
    -    - name: ingress
    +    - name: aggregationRule
    +      type:
    +        namedType: io.k8s.api.rbac.v1alpha1.AggregationRule
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: rules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.networking.v1beta1.IngressLoadBalancerIngress
    +            namedType: io.k8s.api.rbac.v1alpha1.PolicyRule
               elementRelationship: atomic
    -- name: io.k8s.api.networking.v1beta1.IngressPortStatus
    +- name: io.k8s.api.rbac.v1alpha1.ClusterRoleBinding
       map:
         fields:
    -    - name: error
    +    - name: apiVersion
           type:
             scalar: string
    -    - name: port
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: protocol
    +    - name: kind
           type:
             scalar: string
    -      default: ""
    -- name: io.k8s.api.networking.v1beta1.IngressRule
    -  map:
    -    fields:
    -    - name: host
    +    - name: metadata
           type:
    -        scalar: string
    -    - name: http
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: roleRef
           type:
    -        namedType: io.k8s.api.networking.v1beta1.HTTPIngressRuleValue
    -- name: io.k8s.api.networking.v1beta1.IngressSpec
    +        namedType: io.k8s.api.rbac.v1alpha1.RoleRef
    +      default: {}
    +    - name: subjects
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.rbac.v1alpha1.Subject
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1alpha1.PolicyRule
       map:
         fields:
    -    - name: backend
    -      type:
    -        namedType: io.k8s.api.networking.v1beta1.IngressBackend
    -    - name: ingressClassName
    -      type:
    -        scalar: string
    -    - name: rules
    +    - name: apiGroups
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.networking.v1beta1.IngressRule
    +            scalar: string
               elementRelationship: atomic
    -    - name: tls
    +    - name: nonResourceURLs
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.networking.v1beta1.IngressTLS
    +            scalar: string
               elementRelationship: atomic
    -- name: io.k8s.api.networking.v1beta1.IngressStatus
    -  map:
    -    fields:
    -    - name: loadBalancer
    -      type:
    -        namedType: io.k8s.api.networking.v1beta1.IngressLoadBalancerStatus
    -      default: {}
    -- name: io.k8s.api.networking.v1beta1.IngressTLS
    -  map:
    -    fields:
    -    - name: hosts
    +    - name: resourceNames
           type:
             list:
               elementType:
                 scalar: string
               elementRelationship: atomic
    -    - name: secretName
    +    - name: resources
           type:
    -        scalar: string
    -- name: io.k8s.api.node.v1.Overhead
    -  map:
    -    fields:
    -    - name: podFixed
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: verbs
           type:
    -        map:
    +        list:
               elementType:
    -            namedType: io.k8s.apimachinery.pkg.api.resource.Quantity
    -- name: io.k8s.api.node.v1.RuntimeClass
    +            scalar: string
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1alpha1.Role
       map:
         fields:
         - name: apiVersion
           type:
             scalar: string
    -    - name: handler
    -      type:
    -        scalar: string
    -      default: ""
         - name: kind
           type:
             scalar: string
    @@ -10864,36 +12132,13 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: overhead
    -      type:
    -        namedType: io.k8s.api.node.v1.Overhead
    -    - name: scheduling
    -      type:
    -        namedType: io.k8s.api.node.v1.Scheduling
    -- name: io.k8s.api.node.v1.Scheduling
    -  map:
    -    fields:
    -    - name: nodeSelector
    -      type:
    -        map:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: tolerations
    +    - name: rules
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.core.v1.Toleration
    +            namedType: io.k8s.api.rbac.v1alpha1.PolicyRule
               elementRelationship: atomic
    -- name: io.k8s.api.node.v1alpha1.Overhead
    -  map:
    -    fields:
    -    - name: podFixed
    -      type:
    -        map:
    -          elementType:
    -            namedType: io.k8s.apimachinery.pkg.api.resource.Quantity
    -- name: io.k8s.api.node.v1alpha1.RuntimeClass
    +- name: io.k8s.api.rbac.v1alpha1.RoleBinding
       map:
         fields:
         - name: apiVersion
    @@ -10906,56 +12151,85 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: spec
    +    - name: roleRef
           type:
    -        namedType: io.k8s.api.node.v1alpha1.RuntimeClassSpec
    +        namedType: io.k8s.api.rbac.v1alpha1.RoleRef
           default: {}
    -- name: io.k8s.api.node.v1alpha1.RuntimeClassSpec
    +    - name: subjects
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.rbac.v1alpha1.Subject
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1alpha1.RoleRef
       map:
         fields:
    -    - name: overhead
    +    - name: apiGroup
           type:
    -        namedType: io.k8s.api.node.v1alpha1.Overhead
    -    - name: runtimeHandler
    +        scalar: string
    +      default: ""
    +    - name: kind
           type:
             scalar: string
           default: ""
    -    - name: scheduling
    +    - name: name
           type:
    -        namedType: io.k8s.api.node.v1alpha1.Scheduling
    -- name: io.k8s.api.node.v1alpha1.Scheduling
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.rbac.v1alpha1.Subject
       map:
         fields:
    -    - name: nodeSelector
    +    - name: apiVersion
           type:
    -        map:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: tolerations
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: namespace
    +      type:
    +        scalar: string
    +- name: io.k8s.api.rbac.v1beta1.AggregationRule
    +  map:
    +    fields:
    +    - name: clusterRoleSelectors
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.core.v1.Toleration
    +            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
               elementRelationship: atomic
    -- name: io.k8s.api.node.v1beta1.Overhead
    +- name: io.k8s.api.rbac.v1beta1.ClusterRole
       map:
         fields:
    -    - name: podFixed
    +    - name: aggregationRule
           type:
    -        map:
    +        namedType: io.k8s.api.rbac.v1beta1.AggregationRule
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: rules
    +      type:
    +        list:
               elementType:
    -            namedType: io.k8s.apimachinery.pkg.api.resource.Quantity
    -- name: io.k8s.api.node.v1beta1.RuntimeClass
    +            namedType: io.k8s.api.rbac.v1beta1.PolicyRule
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1beta1.ClusterRoleBinding
       map:
         fields:
         - name: apiVersion
           type:
             scalar: string
    -    - name: handler
    -      type:
    -        scalar: string
    -      default: ""
         - name: kind
           type:
             scalar: string
    @@ -10963,36 +12237,55 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: overhead
    +    - name: roleRef
           type:
    -        namedType: io.k8s.api.node.v1beta1.Overhead
    -    - name: scheduling
    +        namedType: io.k8s.api.rbac.v1beta1.RoleRef
    +      default: {}
    +    - name: subjects
           type:
    -        namedType: io.k8s.api.node.v1beta1.Scheduling
    -- name: io.k8s.api.node.v1beta1.Scheduling
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.rbac.v1beta1.Subject
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1beta1.PolicyRule
       map:
         fields:
    -    - name: nodeSelector
    +    - name: apiGroups
           type:
    -        map:
    +        list:
               elementType:
                 scalar: string
               elementRelationship: atomic
    -    - name: tolerations
    +    - name: nonResourceURLs
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.core.v1.Toleration
    +            scalar: string
               elementRelationship: atomic
    -- name: io.k8s.api.policy.v1.Eviction
    +    - name: resourceNames
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: resources
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: verbs
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1beta1.Role
       map:
         fields:
         - name: apiVersion
           type:
             scalar: string
    -    - name: deleteOptions
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions
         - name: kind
           type:
             scalar: string
    @@ -11000,7 +12293,13 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -- name: io.k8s.api.policy.v1.PodDisruptionBudget
    +    - name: rules
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.rbac.v1beta1.PolicyRule
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1beta1.RoleBinding
       map:
         fields:
         - name: apiVersion
    @@ -11013,30 +12312,49 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: spec
    +    - name: roleRef
           type:
    -        namedType: io.k8s.api.policy.v1.PodDisruptionBudgetSpec
    +        namedType: io.k8s.api.rbac.v1beta1.RoleRef
           default: {}
    -    - name: status
    +    - name: subjects
           type:
    -        namedType: io.k8s.api.policy.v1.PodDisruptionBudgetStatus
    -      default: {}
    -- name: io.k8s.api.policy.v1.PodDisruptionBudgetSpec
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.rbac.v1beta1.Subject
    +          elementRelationship: atomic
    +- name: io.k8s.api.rbac.v1beta1.RoleRef
       map:
         fields:
    -    - name: maxUnavailable
    +    - name: apiGroup
           type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -    - name: minAvailable
    +        scalar: string
    +      default: ""
    +    - name: kind
           type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -    - name: selector
    +        scalar: string
    +      default: ""
    +    - name: name
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: unhealthyPodEvictionPolicy
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.rbac.v1beta1.Subject
    +  map:
    +    fields:
    +    - name: apiGroup
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: name
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: namespace
           type:
             scalar: string
    -- name: io.k8s.api.policy.v1.PodDisruptionBudgetStatus
    +- name: io.k8s.api.resource.v1alpha3.AllocatedDeviceStatus
       map:
         fields:
         - name: conditions
    @@ -11047,149 +12365,144 @@ var schemaYAML = typed.YAMLObject(`types:
               elementRelationship: associative
               keys:
               - type
    -    - name: currentHealthy
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: desiredHealthy
    +    - name: data
           type:
    -        scalar: numeric
    -      default: 0
    -    - name: disruptedPods
    +        namedType: __untyped_atomic_
    +    - name: device
           type:
    -        map:
    -          elementType:
    -            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    -    - name: disruptionsAllowed
    +        scalar: string
    +      default: ""
    +    - name: driver
           type:
    -        scalar: numeric
    -      default: 0
    -    - name: expectedPods
    +        scalar: string
    +      default: ""
    +    - name: networkData
           type:
    -        scalar: numeric
    -      default: 0
    -    - name: observedGeneration
    +        namedType: io.k8s.api.resource.v1alpha3.NetworkDeviceData
    +    - name: pool
           type:
    -        scalar: numeric
    -- name: io.k8s.api.policy.v1beta1.Eviction
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.resource.v1alpha3.AllocationResult
       map:
         fields:
    -    - name: apiVersion
    +    - name: devices
           type:
    -        scalar: string
    -    - name: deleteOptions
    +        namedType: io.k8s.api.resource.v1alpha3.DeviceAllocationResult
    +      default: {}
    +    - name: nodeSelector
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions
    -    - name: kind
    +        namedType: io.k8s.api.core.v1.NodeSelector
    +- name: io.k8s.api.resource.v1alpha3.BasicDevice
    +  map:
    +    fields:
    +    - name: attributes
           type:
    -        scalar: string
    -    - name: metadata
    +        map:
    +          elementType:
    +            namedType: io.k8s.api.resource.v1alpha3.DeviceAttribute
    +    - name: capacity
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -- name: io.k8s.api.policy.v1beta1.PodDisruptionBudget
    +        map:
    +          elementType:
    +            namedType: io.k8s.apimachinery.pkg.api.resource.Quantity
    +- name: io.k8s.api.resource.v1alpha3.CELDeviceSelector
       map:
         fields:
    -    - name: apiVersion
    -      type:
    -        scalar: string
    -    - name: kind
    +    - name: expression
           type:
             scalar: string
    -    - name: metadata
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: spec
    +      default: ""
    +- name: io.k8s.api.resource.v1alpha3.Device
    +  map:
    +    fields:
    +    - name: basic
           type:
    -        namedType: io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec
    -      default: {}
    -    - name: status
    +        namedType: io.k8s.api.resource.v1alpha3.BasicDevice
    +    - name: name
           type:
    -        namedType: io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus
    -      default: {}
    -- name: io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.resource.v1alpha3.DeviceAllocationConfiguration
       map:
         fields:
    -    - name: maxUnavailable
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -    - name: minAvailable
    +    - name: opaque
           type:
    -        namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString
    -    - name: selector
    +        namedType: io.k8s.api.resource.v1alpha3.OpaqueDeviceConfiguration
    +    - name: requests
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -    - name: unhealthyPodEvictionPolicy
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +    - name: source
           type:
             scalar: string
    -- name: io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus
    +      default: ""
    +- name: io.k8s.api.resource.v1alpha3.DeviceAllocationResult
       map:
         fields:
    -    - name: conditions
    +    - name: config
           type:
             list:
               elementType:
    -            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Condition
    -          elementRelationship: associative
    -          keys:
    -          - type
    -    - name: currentHealthy
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: desiredHealthy
    -      type:
    -        scalar: numeric
    -      default: 0
    -    - name: disruptedPods
    +            namedType: io.k8s.api.resource.v1alpha3.DeviceAllocationConfiguration
    +          elementRelationship: atomic
    +    - name: results
           type:
    -        map:
    +        list:
               elementType:
    -            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    -    - name: disruptionsAllowed
    +            namedType: io.k8s.api.resource.v1alpha3.DeviceRequestAllocationResult
    +          elementRelationship: atomic
    +- name: io.k8s.api.resource.v1alpha3.DeviceAttribute
    +  map:
    +    fields:
    +    - name: bool
           type:
    -        scalar: numeric
    -      default: 0
    -    - name: expectedPods
    +        scalar: boolean
    +    - name: int
           type:
             scalar: numeric
    -      default: 0
    -    - name: observedGeneration
    +    - name: string
           type:
    -        scalar: numeric
    -- name: io.k8s.api.rbac.v1.AggregationRule
    +        scalar: string
    +    - name: version
    +      type:
    +        scalar: string
    +- name: io.k8s.api.resource.v1alpha3.DeviceClaim
       map:
         fields:
    -    - name: clusterRoleSelectors
    +    - name: config
           type:
             list:
               elementType:
    -            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    +            namedType: io.k8s.api.resource.v1alpha3.DeviceClaimConfiguration
               elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1.ClusterRole
    -  map:
    -    fields:
    -    - name: aggregationRule
    -      type:
    -        namedType: io.k8s.api.rbac.v1.AggregationRule
    -    - name: apiVersion
    +    - name: constraints
           type:
    -        scalar: string
    -    - name: kind
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.resource.v1alpha3.DeviceConstraint
    +          elementRelationship: atomic
    +    - name: requests
           type:
    -        scalar: string
    -    - name: metadata
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.resource.v1alpha3.DeviceRequest
    +          elementRelationship: atomic
    +- name: io.k8s.api.resource.v1alpha3.DeviceClaimConfiguration
    +  map:
    +    fields:
    +    - name: opaque
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: rules
    +        namedType: io.k8s.api.resource.v1alpha3.OpaqueDeviceConfiguration
    +    - name: requests
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.rbac.v1.PolicyRule
    +            scalar: string
               elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1.ClusterRoleBinding
    +- name: io.k8s.api.resource.v1alpha3.DeviceClass
       map:
         fields:
         - name: apiVersion
    @@ -11202,157 +12515,193 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: roleRef
    +    - name: spec
           type:
    -        namedType: io.k8s.api.rbac.v1.RoleRef
    +        namedType: io.k8s.api.resource.v1alpha3.DeviceClassSpec
           default: {}
    -    - name: subjects
    -      type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.rbac.v1.Subject
    -          elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1.PolicyRule
    +- name: io.k8s.api.resource.v1alpha3.DeviceClassConfiguration
       map:
         fields:
    -    - name: apiGroups
    +    - name: opaque
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: nonResourceURLs
    +        namedType: io.k8s.api.resource.v1alpha3.OpaqueDeviceConfiguration
    +- name: io.k8s.api.resource.v1alpha3.DeviceClassSpec
    +  map:
    +    fields:
    +    - name: config
           type:
             list:
               elementType:
    -            scalar: string
    +            namedType: io.k8s.api.resource.v1alpha3.DeviceClassConfiguration
               elementRelationship: atomic
    -    - name: resourceNames
    +    - name: selectors
           type:
             list:
               elementType:
    -            scalar: string
    +            namedType: io.k8s.api.resource.v1alpha3.DeviceSelector
               elementRelationship: atomic
    -    - name: resources
    +- name: io.k8s.api.resource.v1alpha3.DeviceConstraint
    +  map:
    +    fields:
    +    - name: matchAttribute
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: verbs
    +        scalar: string
    +    - name: requests
           type:
             list:
               elementType:
                 scalar: string
               elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1.Role
    +- name: io.k8s.api.resource.v1alpha3.DeviceRequest
       map:
         fields:
    -    - name: apiVersion
    +    - name: adminAccess
    +      type:
    +        scalar: boolean
    +    - name: allocationMode
           type:
             scalar: string
    -    - name: kind
    +    - name: count
    +      type:
    +        scalar: numeric
    +    - name: deviceClassName
           type:
             scalar: string
    -    - name: metadata
    +      default: ""
    +    - name: name
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: rules
    +        scalar: string
    +      default: ""
    +    - name: selectors
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.rbac.v1.PolicyRule
    +            namedType: io.k8s.api.resource.v1alpha3.DeviceSelector
               elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1.RoleBinding
    +- name: io.k8s.api.resource.v1alpha3.DeviceRequestAllocationResult
       map:
         fields:
    -    - name: apiVersion
    +    - name: adminAccess
    +      type:
    +        scalar: boolean
    +    - name: device
           type:
             scalar: string
    -    - name: kind
    +      default: ""
    +    - name: driver
           type:
             scalar: string
    -    - name: metadata
    +      default: ""
    +    - name: pool
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: roleRef
    +        scalar: string
    +      default: ""
    +    - name: request
           type:
    -        namedType: io.k8s.api.rbac.v1.RoleRef
    -      default: {}
    -    - name: subjects
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.resource.v1alpha3.DeviceSelector
    +  map:
    +    fields:
    +    - name: cel
    +      type:
    +        namedType: io.k8s.api.resource.v1alpha3.CELDeviceSelector
    +- name: io.k8s.api.resource.v1alpha3.NetworkDeviceData
    +  map:
    +    fields:
    +    - name: hardwareAddress
    +      type:
    +        scalar: string
    +    - name: interfaceName
    +      type:
    +        scalar: string
    +    - name: ips
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.rbac.v1.Subject
    +            scalar: string
               elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1.RoleRef
    +- name: io.k8s.api.resource.v1alpha3.OpaqueDeviceConfiguration
       map:
         fields:
    -    - name: apiGroup
    +    - name: driver
           type:
             scalar: string
           default: ""
    +    - name: parameters
    +      type:
    +        namedType: __untyped_atomic_
    +- name: io.k8s.api.resource.v1alpha3.ResourceClaim
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
         - name: kind
           type:
             scalar: string
    -      default: ""
    -    - name: name
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.resource.v1alpha3.ResourceClaimSpec
    +      default: {}
    +    - name: status
           type:
    -        scalar: string
    -      default: ""
    -    elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1.Subject
    +        namedType: io.k8s.api.resource.v1alpha3.ResourceClaimStatus
    +      default: {}
    +- name: io.k8s.api.resource.v1alpha3.ResourceClaimConsumerReference
       map:
         fields:
         - name: apiGroup
           type:
             scalar: string
    -    - name: kind
    +    - name: name
           type:
             scalar: string
           default: ""
    -    - name: name
    +    - name: resource
           type:
             scalar: string
           default: ""
    -    - name: namespace
    +    - name: uid
           type:
             scalar: string
    -    elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1alpha1.AggregationRule
    +      default: ""
    +- name: io.k8s.api.resource.v1alpha3.ResourceClaimSpec
       map:
         fields:
    -    - name: clusterRoleSelectors
    +    - name: devices
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -          elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1alpha1.ClusterRole
    +        namedType: io.k8s.api.resource.v1alpha3.DeviceClaim
    +      default: {}
    +- name: io.k8s.api.resource.v1alpha3.ResourceClaimStatus
       map:
         fields:
    -    - name: aggregationRule
    -      type:
    -        namedType: io.k8s.api.rbac.v1alpha1.AggregationRule
    -    - name: apiVersion
    -      type:
    -        scalar: string
    -    - name: kind
    +    - name: allocation
           type:
    -        scalar: string
    -    - name: metadata
    +        namedType: io.k8s.api.resource.v1alpha3.AllocationResult
    +    - name: devices
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: rules
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.resource.v1alpha3.AllocatedDeviceStatus
    +          elementRelationship: associative
    +          keys:
    +          - driver
    +          - device
    +          - pool
    +    - name: reservedFor
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.rbac.v1alpha1.PolicyRule
    -          elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1alpha1.ClusterRoleBinding
    +            namedType: io.k8s.api.resource.v1alpha3.ResourceClaimConsumerReference
    +          elementRelationship: associative
    +          keys:
    +          - uid
    +- name: io.k8s.api.resource.v1alpha3.ResourceClaimTemplate
       map:
         fields:
         - name: apiVersion
    @@ -11365,69 +12714,37 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: roleRef
    +    - name: spec
           type:
    -        namedType: io.k8s.api.rbac.v1alpha1.RoleRef
    +        namedType: io.k8s.api.resource.v1alpha3.ResourceClaimTemplateSpec
           default: {}
    -    - name: subjects
    -      type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.rbac.v1alpha1.Subject
    -          elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1alpha1.PolicyRule
    +- name: io.k8s.api.resource.v1alpha3.ResourceClaimTemplateSpec
       map:
         fields:
    -    - name: apiGroups
    -      type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: nonResourceURLs
    -      type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: resourceNames
    -      type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: resources
    +    - name: metadata
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -    - name: verbs
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
           type:
    -        list:
    -          elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1alpha1.Role
    +        namedType: io.k8s.api.resource.v1alpha3.ResourceClaimSpec
    +      default: {}
    +- name: io.k8s.api.resource.v1alpha3.ResourcePool
       map:
         fields:
    -    - name: apiVersion
    +    - name: generation
           type:
    -        scalar: string
    -    - name: kind
    +        scalar: numeric
    +      default: 0
    +    - name: name
           type:
             scalar: string
    -    - name: metadata
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: rules
    +      default: ""
    +    - name: resourceSliceCount
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.rbac.v1alpha1.PolicyRule
    -          elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1alpha1.RoleBinding
    +        scalar: numeric
    +      default: 0
    +- name: io.k8s.api.resource.v1alpha3.ResourceSlice
       map:
         fields:
         - name: apiVersion
    @@ -11440,155 +12757,191 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: roleRef
    +    - name: spec
           type:
    -        namedType: io.k8s.api.rbac.v1alpha1.RoleRef
    +        namedType: io.k8s.api.resource.v1alpha3.ResourceSliceSpec
           default: {}
    -    - name: subjects
    +- name: io.k8s.api.resource.v1alpha3.ResourceSliceSpec
    +  map:
    +    fields:
    +    - name: allNodes
    +      type:
    +        scalar: boolean
    +    - name: devices
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.rbac.v1alpha1.Subject
    +            namedType: io.k8s.api.resource.v1alpha3.Device
               elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1alpha1.RoleRef
    -  map:
    -    fields:
    -    - name: apiGroup
    +    - name: driver
           type:
             scalar: string
           default: ""
    -    - name: kind
    +    - name: nodeName
           type:
             scalar: string
    -      default: ""
    -    - name: name
    +    - name: nodeSelector
           type:
    -        scalar: string
    -      default: ""
    -- name: io.k8s.api.rbac.v1alpha1.Subject
    +        namedType: io.k8s.api.core.v1.NodeSelector
    +    - name: pool
    +      type:
    +        namedType: io.k8s.api.resource.v1alpha3.ResourcePool
    +      default: {}
    +- name: io.k8s.api.resource.v1beta1.AllocatedDeviceStatus
       map:
         fields:
    -    - name: apiVersion
    +    - name: conditions
           type:
    -        scalar: string
    -    - name: kind
    +        list:
    +          elementType:
    +            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Condition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +    - name: data
    +      type:
    +        namedType: __untyped_atomic_
    +    - name: device
           type:
             scalar: string
           default: ""
    -    - name: name
    +    - name: driver
           type:
             scalar: string
           default: ""
    -    - name: namespace
    +    - name: networkData
    +      type:
    +        namedType: io.k8s.api.resource.v1beta1.NetworkDeviceData
    +    - name: pool
           type:
             scalar: string
    -- name: io.k8s.api.rbac.v1beta1.AggregationRule
    +      default: ""
    +- name: io.k8s.api.resource.v1beta1.AllocationResult
       map:
         fields:
    -    - name: clusterRoleSelectors
    +    - name: devices
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
    -          elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1beta1.ClusterRole
    +        namedType: io.k8s.api.resource.v1beta1.DeviceAllocationResult
    +      default: {}
    +    - name: nodeSelector
    +      type:
    +        namedType: io.k8s.api.core.v1.NodeSelector
    +- name: io.k8s.api.resource.v1beta1.BasicDevice
       map:
         fields:
    -    - name: aggregationRule
    -      type:
    -        namedType: io.k8s.api.rbac.v1beta1.AggregationRule
    -    - name: apiVersion
    -      type:
    -        scalar: string
    -    - name: kind
    -      type:
    -        scalar: string
    -    - name: metadata
    +    - name: attributes
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: rules
    +        map:
    +          elementType:
    +            namedType: io.k8s.api.resource.v1beta1.DeviceAttribute
    +    - name: capacity
           type:
    -        list:
    +        map:
               elementType:
    -            namedType: io.k8s.api.rbac.v1beta1.PolicyRule
    -          elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1beta1.ClusterRoleBinding
    +            namedType: io.k8s.api.resource.v1beta1.DeviceCapacity
    +- name: io.k8s.api.resource.v1beta1.CELDeviceSelector
       map:
         fields:
    -    - name: apiVersion
    +    - name: expression
           type:
             scalar: string
    -    - name: kind
    +      default: ""
    +- name: io.k8s.api.resource.v1beta1.Device
    +  map:
    +    fields:
    +    - name: basic
           type:
    -        scalar: string
    -    - name: metadata
    +        namedType: io.k8s.api.resource.v1beta1.BasicDevice
    +    - name: name
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: roleRef
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.resource.v1beta1.DeviceAllocationConfiguration
    +  map:
    +    fields:
    +    - name: opaque
           type:
    -        namedType: io.k8s.api.rbac.v1beta1.RoleRef
    -      default: {}
    -    - name: subjects
    +        namedType: io.k8s.api.resource.v1beta1.OpaqueDeviceConfiguration
    +    - name: requests
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.rbac.v1beta1.Subject
    +            scalar: string
               elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1beta1.PolicyRule
    +    - name: source
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.resource.v1beta1.DeviceAllocationResult
       map:
         fields:
    -    - name: apiGroups
    +    - name: config
           type:
             list:
               elementType:
    -            scalar: string
    +            namedType: io.k8s.api.resource.v1beta1.DeviceAllocationConfiguration
               elementRelationship: atomic
    -    - name: nonResourceURLs
    +    - name: results
           type:
             list:
               elementType:
    -            scalar: string
    +            namedType: io.k8s.api.resource.v1beta1.DeviceRequestAllocationResult
               elementRelationship: atomic
    -    - name: resourceNames
    +- name: io.k8s.api.resource.v1beta1.DeviceAttribute
    +  map:
    +    fields:
    +    - name: bool
    +      type:
    +        scalar: boolean
    +    - name: int
    +      type:
    +        scalar: numeric
    +    - name: string
    +      type:
    +        scalar: string
    +    - name: version
    +      type:
    +        scalar: string
    +- name: io.k8s.api.resource.v1beta1.DeviceCapacity
    +  map:
    +    fields:
    +    - name: value
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.api.resource.Quantity
    +- name: io.k8s.api.resource.v1beta1.DeviceClaim
    +  map:
    +    fields:
    +    - name: config
           type:
             list:
               elementType:
    -            scalar: string
    +            namedType: io.k8s.api.resource.v1beta1.DeviceClaimConfiguration
               elementRelationship: atomic
    -    - name: resources
    +    - name: constraints
           type:
             list:
               elementType:
    -            scalar: string
    +            namedType: io.k8s.api.resource.v1beta1.DeviceConstraint
               elementRelationship: atomic
    -    - name: verbs
    +    - name: requests
           type:
             list:
               elementType:
    -            scalar: string
    +            namedType: io.k8s.api.resource.v1beta1.DeviceRequest
               elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1beta1.Role
    +- name: io.k8s.api.resource.v1beta1.DeviceClaimConfiguration
       map:
         fields:
    -    - name: apiVersion
    -      type:
    -        scalar: string
    -    - name: kind
    -      type:
    -        scalar: string
    -    - name: metadata
    +    - name: opaque
           type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: rules
    +        namedType: io.k8s.api.resource.v1beta1.OpaqueDeviceConfiguration
    +    - name: requests
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.rbac.v1beta1.PolicyRule
    +            scalar: string
               elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1beta1.RoleBinding
    +- name: io.k8s.api.resource.v1beta1.DeviceClass
       map:
         fields:
         - name: apiVersion
    @@ -11601,24 +12954,56 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: roleRef
    +    - name: spec
           type:
    -        namedType: io.k8s.api.rbac.v1beta1.RoleRef
    +        namedType: io.k8s.api.resource.v1beta1.DeviceClassSpec
           default: {}
    -    - name: subjects
    +- name: io.k8s.api.resource.v1beta1.DeviceClassConfiguration
    +  map:
    +    fields:
    +    - name: opaque
    +      type:
    +        namedType: io.k8s.api.resource.v1beta1.OpaqueDeviceConfiguration
    +- name: io.k8s.api.resource.v1beta1.DeviceClassSpec
    +  map:
    +    fields:
    +    - name: config
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.rbac.v1beta1.Subject
    +            namedType: io.k8s.api.resource.v1beta1.DeviceClassConfiguration
               elementRelationship: atomic
    -- name: io.k8s.api.rbac.v1beta1.RoleRef
    +    - name: selectors
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.resource.v1beta1.DeviceSelector
    +          elementRelationship: atomic
    +- name: io.k8s.api.resource.v1beta1.DeviceConstraint
       map:
         fields:
    -    - name: apiGroup
    +    - name: matchAttribute
           type:
             scalar: string
    -      default: ""
    -    - name: kind
    +    - name: requests
    +      type:
    +        list:
    +          elementType:
    +            scalar: string
    +          elementRelationship: atomic
    +- name: io.k8s.api.resource.v1beta1.DeviceRequest
    +  map:
    +    fields:
    +    - name: adminAccess
    +      type:
    +        scalar: boolean
    +    - name: allocationMode
    +      type:
    +        scalar: string
    +    - name: count
    +      type:
    +        scalar: numeric
    +    - name: deviceClassName
           type:
             scalar: string
           default: ""
    @@ -11626,83 +13011,66 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.rbac.v1beta1.Subject
    +    - name: selectors
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.resource.v1beta1.DeviceSelector
    +          elementRelationship: atomic
    +- name: io.k8s.api.resource.v1beta1.DeviceRequestAllocationResult
       map:
         fields:
    -    - name: apiGroup
    +    - name: adminAccess
    +      type:
    +        scalar: boolean
    +    - name: device
           type:
             scalar: string
    -    - name: kind
    +      default: ""
    +    - name: driver
           type:
             scalar: string
           default: ""
    -    - name: name
    +    - name: pool
           type:
             scalar: string
           default: ""
    -    - name: namespace
    +    - name: request
           type:
             scalar: string
    -- name: io.k8s.api.resource.v1alpha2.AllocationResult
    +      default: ""
    +- name: io.k8s.api.resource.v1beta1.DeviceSelector
       map:
         fields:
    -    - name: availableOnNodes
    -      type:
    -        namedType: io.k8s.api.core.v1.NodeSelector
    -    - name: resourceHandles
    +    - name: cel
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.resource.v1alpha2.ResourceHandle
    -          elementRelationship: atomic
    -    - name: shareable
    -      type:
    -        scalar: boolean
    -- name: io.k8s.api.resource.v1alpha2.PodSchedulingContext
    +        namedType: io.k8s.api.resource.v1beta1.CELDeviceSelector
    +- name: io.k8s.api.resource.v1beta1.NetworkDeviceData
       map:
         fields:
    -    - name: apiVersion
    +    - name: hardwareAddress
           type:
             scalar: string
    -    - name: kind
    +    - name: interfaceName
           type:
             scalar: string
    -    - name: metadata
    -      type:
    -        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    -      default: {}
    -    - name: spec
    -      type:
    -        namedType: io.k8s.api.resource.v1alpha2.PodSchedulingContextSpec
    -      default: {}
    -    - name: status
    -      type:
    -        namedType: io.k8s.api.resource.v1alpha2.PodSchedulingContextStatus
    -      default: {}
    -- name: io.k8s.api.resource.v1alpha2.PodSchedulingContextSpec
    -  map:
    -    fields:
    -    - name: potentialNodes
    +    - name: ips
           type:
             list:
               elementType:
                 scalar: string
               elementRelationship: atomic
    -    - name: selectedNode
    -      type:
    -        scalar: string
    -- name: io.k8s.api.resource.v1alpha2.PodSchedulingContextStatus
    +- name: io.k8s.api.resource.v1beta1.OpaqueDeviceConfiguration
       map:
         fields:
    -    - name: resourceClaims
    +    - name: driver
           type:
    -        list:
    -          elementType:
    -            namedType: io.k8s.api.resource.v1alpha2.ResourceClaimSchedulingStatus
    -          elementRelationship: associative
    -          keys:
    -          - name
    -- name: io.k8s.api.resource.v1alpha2.ResourceClaim
    +        scalar: string
    +      default: ""
    +    - name: parameters
    +      type:
    +        namedType: __untyped_atomic_
    +- name: io.k8s.api.resource.v1beta1.ResourceClaim
       map:
         fields:
         - name: apiVersion
    @@ -11717,13 +13085,13 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.resource.v1alpha2.ResourceClaimSpec
    +        namedType: io.k8s.api.resource.v1beta1.ResourceClaimSpec
           default: {}
         - name: status
           type:
    -        namedType: io.k8s.api.resource.v1alpha2.ResourceClaimStatus
    +        namedType: io.k8s.api.resource.v1beta1.ResourceClaimStatus
           default: {}
    -- name: io.k8s.api.resource.v1alpha2.ResourceClaimConsumerReference
    +- name: io.k8s.api.resource.v1beta1.ResourceClaimConsumerReference
       map:
         fields:
         - name: apiGroup
    @@ -11741,66 +13109,38 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             scalar: string
           default: ""
    -- name: io.k8s.api.resource.v1alpha2.ResourceClaimParametersReference
    +- name: io.k8s.api.resource.v1beta1.ResourceClaimSpec
       map:
         fields:
    -    - name: apiGroup
    -      type:
    -        scalar: string
    -    - name: kind
    -      type:
    -        scalar: string
    -      default: ""
    -    - name: name
    +    - name: devices
           type:
    -        scalar: string
    -      default: ""
    -- name: io.k8s.api.resource.v1alpha2.ResourceClaimSchedulingStatus
    +        namedType: io.k8s.api.resource.v1beta1.DeviceClaim
    +      default: {}
    +- name: io.k8s.api.resource.v1beta1.ResourceClaimStatus
       map:
         fields:
    -    - name: name
    +    - name: allocation
           type:
    -        scalar: string
    -    - name: unsuitableNodes
    +        namedType: io.k8s.api.resource.v1beta1.AllocationResult
    +    - name: devices
           type:
             list:
               elementType:
    -            scalar: string
    -          elementRelationship: atomic
    -- name: io.k8s.api.resource.v1alpha2.ResourceClaimSpec
    -  map:
    -    fields:
    -    - name: allocationMode
    -      type:
    -        scalar: string
    -    - name: parametersRef
    -      type:
    -        namedType: io.k8s.api.resource.v1alpha2.ResourceClaimParametersReference
    -    - name: resourceClassName
    -      type:
    -        scalar: string
    -      default: ""
    -- name: io.k8s.api.resource.v1alpha2.ResourceClaimStatus
    -  map:
    -    fields:
    -    - name: allocation
    -      type:
    -        namedType: io.k8s.api.resource.v1alpha2.AllocationResult
    -    - name: deallocationRequested
    -      type:
    -        scalar: boolean
    -    - name: driverName
    -      type:
    -        scalar: string
    +            namedType: io.k8s.api.resource.v1beta1.AllocatedDeviceStatus
    +          elementRelationship: associative
    +          keys:
    +          - driver
    +          - device
    +          - pool
         - name: reservedFor
           type:
             list:
               elementType:
    -            namedType: io.k8s.api.resource.v1alpha2.ResourceClaimConsumerReference
    +            namedType: io.k8s.api.resource.v1beta1.ResourceClaimConsumerReference
               elementRelationship: associative
               keys:
               - uid
    -- name: io.k8s.api.resource.v1alpha2.ResourceClaimTemplate
    +- name: io.k8s.api.resource.v1beta1.ResourceClaimTemplate
       map:
         fields:
         - name: apiVersion
    @@ -11815,9 +13155,9 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.resource.v1alpha2.ResourceClaimTemplateSpec
    +        namedType: io.k8s.api.resource.v1beta1.ResourceClaimTemplateSpec
           default: {}
    -- name: io.k8s.api.resource.v1alpha2.ResourceClaimTemplateSpec
    +- name: io.k8s.api.resource.v1beta1.ResourceClaimTemplateSpec
       map:
         fields:
         - name: metadata
    @@ -11826,18 +13166,29 @@ var schemaYAML = typed.YAMLObject(`types:
           default: {}
         - name: spec
           type:
    -        namedType: io.k8s.api.resource.v1alpha2.ResourceClaimSpec
    +        namedType: io.k8s.api.resource.v1beta1.ResourceClaimSpec
           default: {}
    -- name: io.k8s.api.resource.v1alpha2.ResourceClass
    +- name: io.k8s.api.resource.v1beta1.ResourcePool
       map:
         fields:
    -    - name: apiVersion
    +    - name: generation
           type:
    -        scalar: string
    -    - name: driverName
    +        scalar: numeric
    +      default: 0
    +    - name: name
           type:
             scalar: string
           default: ""
    +    - name: resourceSliceCount
    +      type:
    +        scalar: numeric
    +      default: 0
    +- name: io.k8s.api.resource.v1beta1.ResourceSlice
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
         - name: kind
           type:
             scalar: string
    @@ -11845,38 +13196,36 @@ var schemaYAML = typed.YAMLObject(`types:
           type:
             namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
           default: {}
    -    - name: parametersRef
    -      type:
    -        namedType: io.k8s.api.resource.v1alpha2.ResourceClassParametersReference
    -    - name: suitableNodes
    +    - name: spec
           type:
    -        namedType: io.k8s.api.core.v1.NodeSelector
    -- name: io.k8s.api.resource.v1alpha2.ResourceClassParametersReference
    +        namedType: io.k8s.api.resource.v1beta1.ResourceSliceSpec
    +      default: {}
    +- name: io.k8s.api.resource.v1beta1.ResourceSliceSpec
       map:
         fields:
    -    - name: apiGroup
    +    - name: allNodes
           type:
    -        scalar: string
    -    - name: kind
    +        scalar: boolean
    +    - name: devices
           type:
    -        scalar: string
    -      default: ""
    -    - name: name
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.resource.v1beta1.Device
    +          elementRelationship: atomic
    +    - name: driver
           type:
             scalar: string
           default: ""
    -    - name: namespace
    +    - name: nodeName
           type:
             scalar: string
    -- name: io.k8s.api.resource.v1alpha2.ResourceHandle
    -  map:
    -    fields:
    -    - name: data
    +    - name: nodeSelector
           type:
    -        scalar: string
    -    - name: driverName
    +        namedType: io.k8s.api.core.v1.NodeSelector
    +    - name: pool
           type:
    -        scalar: string
    +        namedType: io.k8s.api.resource.v1beta1.ResourcePool
    +      default: {}
     - name: io.k8s.api.scheduling.v1.PriorityClass
       map:
         fields:
    @@ -12570,6 +13919,28 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: detachError
           type:
             namedType: io.k8s.api.storage.v1beta1.VolumeError
    +- name: io.k8s.api.storage.v1beta1.VolumeAttributesClass
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: driverName
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: parameters
    +      type:
    +        map:
    +          elementType:
    +            scalar: string
     - name: io.k8s.api.storage.v1beta1.VolumeError
       map:
         fields:
    @@ -12585,6 +13956,83 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: count
           type:
             scalar: numeric
    +- name: io.k8s.api.storagemigration.v1alpha1.GroupVersionResource
    +  map:
    +    fields:
    +    - name: group
    +      type:
    +        scalar: string
    +    - name: resource
    +      type:
    +        scalar: string
    +    - name: version
    +      type:
    +        scalar: string
    +- name: io.k8s.api.storagemigration.v1alpha1.MigrationCondition
    +  map:
    +    fields:
    +    - name: lastUpdateTime
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
    +    - name: message
    +      type:
    +        scalar: string
    +    - name: reason
    +      type:
    +        scalar: string
    +    - name: status
    +      type:
    +        scalar: string
    +      default: ""
    +    - name: type
    +      type:
    +        scalar: string
    +      default: ""
    +- name: io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration
    +  map:
    +    fields:
    +    - name: apiVersion
    +      type:
    +        scalar: string
    +    - name: kind
    +      type:
    +        scalar: string
    +    - name: metadata
    +      type:
    +        namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
    +      default: {}
    +    - name: spec
    +      type:
    +        namedType: io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationSpec
    +      default: {}
    +    - name: status
    +      type:
    +        namedType: io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationStatus
    +      default: {}
    +- name: io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationSpec
    +  map:
    +    fields:
    +    - name: continueToken
    +      type:
    +        scalar: string
    +    - name: resource
    +      type:
    +        namedType: io.k8s.api.storagemigration.v1alpha1.GroupVersionResource
    +      default: {}
    +- name: io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationStatus
    +  map:
    +    fields:
    +    - name: conditions
    +      type:
    +        list:
    +          elementType:
    +            namedType: io.k8s.api.storagemigration.v1alpha1.MigrationCondition
    +          elementRelationship: associative
    +          keys:
    +          - type
    +    - name: resourceVersion
    +      type:
    +        scalar: string
     - name: io.k8s.apimachinery.pkg.api.resource.Quantity
       scalar: untyped
     - name: io.k8s.apimachinery.pkg.apis.meta.v1.Condition
    @@ -12627,6 +14075,9 @@ var schemaYAML = typed.YAMLObject(`types:
         - name: gracePeriodSeconds
           type:
             scalar: numeric
    +    - name: ignoreStoreReadErrorWithClusterBreakingPotential
    +      type:
    +        scalar: boolean
         - name: kind
           type:
             scalar: string
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/condition.go b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/condition.go
    index c84102cddecd..69063df65b62 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/condition.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/condition.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// ConditionApplyConfiguration represents an declarative configuration of the Condition type for use
    +// ConditionApplyConfiguration represents a declarative configuration of the Condition type for use
     // with apply.
     type ConditionApplyConfiguration struct {
    -	Type               *string             `json:"type,omitempty"`
    -	Status             *v1.ConditionStatus `json:"status,omitempty"`
    -	ObservedGeneration *int64              `json:"observedGeneration,omitempty"`
    -	LastTransitionTime *v1.Time            `json:"lastTransitionTime,omitempty"`
    -	Reason             *string             `json:"reason,omitempty"`
    -	Message            *string             `json:"message,omitempty"`
    +	Type               *string                 `json:"type,omitempty"`
    +	Status             *metav1.ConditionStatus `json:"status,omitempty"`
    +	ObservedGeneration *int64                  `json:"observedGeneration,omitempty"`
    +	LastTransitionTime *metav1.Time            `json:"lastTransitionTime,omitempty"`
    +	Reason             *string                 `json:"reason,omitempty"`
    +	Message            *string                 `json:"message,omitempty"`
     }
     
    -// ConditionApplyConfiguration constructs an declarative configuration of the Condition type for use with
    +// ConditionApplyConfiguration constructs a declarative configuration of the Condition type for use with
     // apply.
     func Condition() *ConditionApplyConfiguration {
     	return &ConditionApplyConfiguration{}
    @@ -50,7 +50,7 @@ func (b *ConditionApplyConfiguration) WithType(value string) *ConditionApplyConf
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *ConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *ConditionApplyConfiguration {
    +func (b *ConditionApplyConfiguration) WithStatus(value metav1.ConditionStatus) *ConditionApplyConfiguration {
     	b.Status = &value
     	return b
     }
    @@ -66,7 +66,7 @@ func (b *ConditionApplyConfiguration) WithObservedGeneration(value int64) *Condi
     // WithLastTransitionTime sets the LastTransitionTime field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the LastTransitionTime field is set to the value of the last call.
    -func (b *ConditionApplyConfiguration) WithLastTransitionTime(value v1.Time) *ConditionApplyConfiguration {
    +func (b *ConditionApplyConfiguration) WithLastTransitionTime(value metav1.Time) *ConditionApplyConfiguration {
     	b.LastTransitionTime = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/deleteoptions.go b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/deleteoptions.go
    index 7a1d23114d09..ab398ef56342 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/deleteoptions.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/deleteoptions.go
    @@ -22,18 +22,19 @@ import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// DeleteOptionsApplyConfiguration represents an declarative configuration of the DeleteOptions type for use
    +// DeleteOptionsApplyConfiguration represents a declarative configuration of the DeleteOptions type for use
     // with apply.
     type DeleteOptionsApplyConfiguration struct {
    -	TypeMetaApplyConfiguration `json:",inline"`
    -	GracePeriodSeconds         *int64                           `json:"gracePeriodSeconds,omitempty"`
    -	Preconditions              *PreconditionsApplyConfiguration `json:"preconditions,omitempty"`
    -	OrphanDependents           *bool                            `json:"orphanDependents,omitempty"`
    -	PropagationPolicy          *metav1.DeletionPropagation      `json:"propagationPolicy,omitempty"`
    -	DryRun                     []string                         `json:"dryRun,omitempty"`
    +	TypeMetaApplyConfiguration                       `json:",inline"`
    +	GracePeriodSeconds                               *int64                           `json:"gracePeriodSeconds,omitempty"`
    +	Preconditions                                    *PreconditionsApplyConfiguration `json:"preconditions,omitempty"`
    +	OrphanDependents                                 *bool                            `json:"orphanDependents,omitempty"`
    +	PropagationPolicy                                *metav1.DeletionPropagation      `json:"propagationPolicy,omitempty"`
    +	DryRun                                           []string                         `json:"dryRun,omitempty"`
    +	IgnoreStoreReadErrorWithClusterBreakingPotential *bool                            `json:"ignoreStoreReadErrorWithClusterBreakingPotential,omitempty"`
     }
     
    -// DeleteOptionsApplyConfiguration constructs an declarative configuration of the DeleteOptions type for use with
    +// DeleteOptionsApplyConfiguration constructs a declarative configuration of the DeleteOptions type for use with
     // apply.
     func DeleteOptions() *DeleteOptionsApplyConfiguration {
     	b := &DeleteOptionsApplyConfiguration{}
    @@ -46,7 +47,7 @@ func DeleteOptions() *DeleteOptionsApplyConfiguration {
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *DeleteOptionsApplyConfiguration) WithKind(value string) *DeleteOptionsApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -54,7 +55,7 @@ func (b *DeleteOptionsApplyConfiguration) WithKind(value string) *DeleteOptionsA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *DeleteOptionsApplyConfiguration) WithAPIVersion(value string) *DeleteOptionsApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -99,3 +100,11 @@ func (b *DeleteOptionsApplyConfiguration) WithDryRun(values ...string) *DeleteOp
     	}
     	return b
     }
    +
    +// WithIgnoreStoreReadErrorWithClusterBreakingPotential sets the IgnoreStoreReadErrorWithClusterBreakingPotential field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the IgnoreStoreReadErrorWithClusterBreakingPotential field is set to the value of the last call.
    +func (b *DeleteOptionsApplyConfiguration) WithIgnoreStoreReadErrorWithClusterBreakingPotential(value bool) *DeleteOptionsApplyConfiguration {
    +	b.IgnoreStoreReadErrorWithClusterBreakingPotential = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/labelselector.go b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/labelselector.go
    index 6d24bc363bfb..1f33c94e0c71 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/labelselector.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/labelselector.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// LabelSelectorApplyConfiguration represents an declarative configuration of the LabelSelector type for use
    +// LabelSelectorApplyConfiguration represents a declarative configuration of the LabelSelector type for use
     // with apply.
     type LabelSelectorApplyConfiguration struct {
     	MatchLabels      map[string]string                            `json:"matchLabels,omitempty"`
     	MatchExpressions []LabelSelectorRequirementApplyConfiguration `json:"matchExpressions,omitempty"`
     }
     
    -// LabelSelectorApplyConfiguration constructs an declarative configuration of the LabelSelector type for use with
    +// LabelSelectorApplyConfiguration constructs a declarative configuration of the LabelSelector type for use with
     // apply.
     func LabelSelector() *LabelSelectorApplyConfiguration {
     	return &LabelSelectorApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/labelselectorrequirement.go b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/labelselectorrequirement.go
    index ff70f365e6f9..c8b015c98527 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/labelselectorrequirement.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/labelselectorrequirement.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// LabelSelectorRequirementApplyConfiguration represents an declarative configuration of the LabelSelectorRequirement type for use
    +// LabelSelectorRequirementApplyConfiguration represents a declarative configuration of the LabelSelectorRequirement type for use
     // with apply.
     type LabelSelectorRequirementApplyConfiguration struct {
    -	Key      *string                   `json:"key,omitempty"`
    -	Operator *v1.LabelSelectorOperator `json:"operator,omitempty"`
    -	Values   []string                  `json:"values,omitempty"`
    +	Key      *string                       `json:"key,omitempty"`
    +	Operator *metav1.LabelSelectorOperator `json:"operator,omitempty"`
    +	Values   []string                      `json:"values,omitempty"`
     }
     
    -// LabelSelectorRequirementApplyConfiguration constructs an declarative configuration of the LabelSelectorRequirement type for use with
    +// LabelSelectorRequirementApplyConfiguration constructs a declarative configuration of the LabelSelectorRequirement type for use with
     // apply.
     func LabelSelectorRequirement() *LabelSelectorRequirementApplyConfiguration {
     	return &LabelSelectorRequirementApplyConfiguration{}
    @@ -47,7 +47,7 @@ func (b *LabelSelectorRequirementApplyConfiguration) WithKey(value string) *Labe
     // WithOperator sets the Operator field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Operator field is set to the value of the last call.
    -func (b *LabelSelectorRequirementApplyConfiguration) WithOperator(value v1.LabelSelectorOperator) *LabelSelectorRequirementApplyConfiguration {
    +func (b *LabelSelectorRequirementApplyConfiguration) WithOperator(value metav1.LabelSelectorOperator) *LabelSelectorRequirementApplyConfiguration {
     	b.Operator = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/managedfieldsentry.go b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/managedfieldsentry.go
    index f4d7e2681236..7175537c3e6b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/managedfieldsentry.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/managedfieldsentry.go
    @@ -19,22 +19,22 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// ManagedFieldsEntryApplyConfiguration represents an declarative configuration of the ManagedFieldsEntry type for use
    +// ManagedFieldsEntryApplyConfiguration represents a declarative configuration of the ManagedFieldsEntry type for use
     // with apply.
     type ManagedFieldsEntryApplyConfiguration struct {
    -	Manager     *string                        `json:"manager,omitempty"`
    -	Operation   *v1.ManagedFieldsOperationType `json:"operation,omitempty"`
    -	APIVersion  *string                        `json:"apiVersion,omitempty"`
    -	Time        *v1.Time                       `json:"time,omitempty"`
    -	FieldsType  *string                        `json:"fieldsType,omitempty"`
    -	FieldsV1    *v1.FieldsV1                   `json:"fieldsV1,omitempty"`
    -	Subresource *string                        `json:"subresource,omitempty"`
    +	Manager     *string                            `json:"manager,omitempty"`
    +	Operation   *metav1.ManagedFieldsOperationType `json:"operation,omitempty"`
    +	APIVersion  *string                            `json:"apiVersion,omitempty"`
    +	Time        *metav1.Time                       `json:"time,omitempty"`
    +	FieldsType  *string                            `json:"fieldsType,omitempty"`
    +	FieldsV1    *metav1.FieldsV1                   `json:"fieldsV1,omitempty"`
    +	Subresource *string                            `json:"subresource,omitempty"`
     }
     
    -// ManagedFieldsEntryApplyConfiguration constructs an declarative configuration of the ManagedFieldsEntry type for use with
    +// ManagedFieldsEntryApplyConfiguration constructs a declarative configuration of the ManagedFieldsEntry type for use with
     // apply.
     func ManagedFieldsEntry() *ManagedFieldsEntryApplyConfiguration {
     	return &ManagedFieldsEntryApplyConfiguration{}
    @@ -51,7 +51,7 @@ func (b *ManagedFieldsEntryApplyConfiguration) WithManager(value string) *Manage
     // WithOperation sets the Operation field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Operation field is set to the value of the last call.
    -func (b *ManagedFieldsEntryApplyConfiguration) WithOperation(value v1.ManagedFieldsOperationType) *ManagedFieldsEntryApplyConfiguration {
    +func (b *ManagedFieldsEntryApplyConfiguration) WithOperation(value metav1.ManagedFieldsOperationType) *ManagedFieldsEntryApplyConfiguration {
     	b.Operation = &value
     	return b
     }
    @@ -67,7 +67,7 @@ func (b *ManagedFieldsEntryApplyConfiguration) WithAPIVersion(value string) *Man
     // WithTime sets the Time field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Time field is set to the value of the last call.
    -func (b *ManagedFieldsEntryApplyConfiguration) WithTime(value v1.Time) *ManagedFieldsEntryApplyConfiguration {
    +func (b *ManagedFieldsEntryApplyConfiguration) WithTime(value metav1.Time) *ManagedFieldsEntryApplyConfiguration {
     	b.Time = &value
     	return b
     }
    @@ -83,7 +83,7 @@ func (b *ManagedFieldsEntryApplyConfiguration) WithFieldsType(value string) *Man
     // WithFieldsV1 sets the FieldsV1 field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the FieldsV1 field is set to the value of the last call.
    -func (b *ManagedFieldsEntryApplyConfiguration) WithFieldsV1(value v1.FieldsV1) *ManagedFieldsEntryApplyConfiguration {
    +func (b *ManagedFieldsEntryApplyConfiguration) WithFieldsV1(value metav1.FieldsV1) *ManagedFieldsEntryApplyConfiguration {
     	b.FieldsV1 = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/objectmeta.go b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/objectmeta.go
    index 9b290e968011..9b98d2209b9c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/objectmeta.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/objectmeta.go
    @@ -19,11 +19,11 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     )
     
    -// ObjectMetaApplyConfiguration represents an declarative configuration of the ObjectMeta type for use
    +// ObjectMetaApplyConfiguration represents a declarative configuration of the ObjectMeta type for use
     // with apply.
     type ObjectMetaApplyConfiguration struct {
     	Name                       *string                            `json:"name,omitempty"`
    @@ -32,8 +32,8 @@ type ObjectMetaApplyConfiguration struct {
     	UID                        *types.UID                         `json:"uid,omitempty"`
     	ResourceVersion            *string                            `json:"resourceVersion,omitempty"`
     	Generation                 *int64                             `json:"generation,omitempty"`
    -	CreationTimestamp          *v1.Time                           `json:"creationTimestamp,omitempty"`
    -	DeletionTimestamp          *v1.Time                           `json:"deletionTimestamp,omitempty"`
    +	CreationTimestamp          *metav1.Time                       `json:"creationTimestamp,omitempty"`
    +	DeletionTimestamp          *metav1.Time                       `json:"deletionTimestamp,omitempty"`
     	DeletionGracePeriodSeconds *int64                             `json:"deletionGracePeriodSeconds,omitempty"`
     	Labels                     map[string]string                  `json:"labels,omitempty"`
     	Annotations                map[string]string                  `json:"annotations,omitempty"`
    @@ -41,7 +41,7 @@ type ObjectMetaApplyConfiguration struct {
     	Finalizers                 []string                           `json:"finalizers,omitempty"`
     }
     
    -// ObjectMetaApplyConfiguration constructs an declarative configuration of the ObjectMeta type for use with
    +// ObjectMetaApplyConfiguration constructs a declarative configuration of the ObjectMeta type for use with
     // apply.
     func ObjectMeta() *ObjectMetaApplyConfiguration {
     	return &ObjectMetaApplyConfiguration{}
    @@ -98,7 +98,7 @@ func (b *ObjectMetaApplyConfiguration) WithGeneration(value int64) *ObjectMetaAp
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ObjectMetaApplyConfiguration) WithCreationTimestamp(value v1.Time) *ObjectMetaApplyConfiguration {
    +func (b *ObjectMetaApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ObjectMetaApplyConfiguration {
     	b.CreationTimestamp = &value
     	return b
     }
    @@ -106,7 +106,7 @@ func (b *ObjectMetaApplyConfiguration) WithCreationTimestamp(value v1.Time) *Obj
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ObjectMetaApplyConfiguration) WithDeletionTimestamp(value v1.Time) *ObjectMetaApplyConfiguration {
    +func (b *ObjectMetaApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ObjectMetaApplyConfiguration {
     	b.DeletionTimestamp = &value
     	return b
     }
    @@ -169,3 +169,8 @@ func (b *ObjectMetaApplyConfiguration) WithFinalizers(values ...string) *ObjectM
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ObjectMetaApplyConfiguration) GetName() *string {
    +	return b.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/ownerreference.go b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/ownerreference.go
    index b3117d6a4b7c..2776152322e4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/ownerreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/ownerreference.go
    @@ -22,7 +22,7 @@ import (
     	types "k8s.io/apimachinery/pkg/types"
     )
     
    -// OwnerReferenceApplyConfiguration represents an declarative configuration of the OwnerReference type for use
    +// OwnerReferenceApplyConfiguration represents a declarative configuration of the OwnerReference type for use
     // with apply.
     type OwnerReferenceApplyConfiguration struct {
     	APIVersion         *string    `json:"apiVersion,omitempty"`
    @@ -33,7 +33,7 @@ type OwnerReferenceApplyConfiguration struct {
     	BlockOwnerDeletion *bool      `json:"blockOwnerDeletion,omitempty"`
     }
     
    -// OwnerReferenceApplyConfiguration constructs an declarative configuration of the OwnerReference type for use with
    +// OwnerReferenceApplyConfiguration constructs a declarative configuration of the OwnerReference type for use with
     // apply.
     func OwnerReference() *OwnerReferenceApplyConfiguration {
     	return &OwnerReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/preconditions.go b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/preconditions.go
    index f627733f1e2e..8f8b6c6b3a00 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/preconditions.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/preconditions.go
    @@ -22,14 +22,14 @@ import (
     	types "k8s.io/apimachinery/pkg/types"
     )
     
    -// PreconditionsApplyConfiguration represents an declarative configuration of the Preconditions type for use
    +// PreconditionsApplyConfiguration represents a declarative configuration of the Preconditions type for use
     // with apply.
     type PreconditionsApplyConfiguration struct {
     	UID             *types.UID `json:"uid,omitempty"`
     	ResourceVersion *string    `json:"resourceVersion,omitempty"`
     }
     
    -// PreconditionsApplyConfiguration constructs an declarative configuration of the Preconditions type for use with
    +// PreconditionsApplyConfiguration constructs a declarative configuration of the Preconditions type for use with
     // apply.
     func Preconditions() *PreconditionsApplyConfiguration {
     	return &PreconditionsApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/typemeta.go b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/typemeta.go
    index 877b0890e8f3..979044384c2f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/meta/v1/typemeta.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/meta/v1/typemeta.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// TypeMetaApplyConfiguration represents an declarative configuration of the TypeMeta type for use
    +// TypeMetaApplyConfiguration represents a declarative configuration of the TypeMeta type for use
     // with apply.
     type TypeMetaApplyConfiguration struct {
     	Kind       *string `json:"kind,omitempty"`
     	APIVersion *string `json:"apiVersion,omitempty"`
     }
     
    -// TypeMetaApplyConfiguration constructs an declarative configuration of the TypeMeta type for use with
    +// TypeMetaApplyConfiguration constructs a declarative configuration of the TypeMeta type for use with
     // apply.
     func TypeMeta() *TypeMetaApplyConfiguration {
     	return &TypeMetaApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/httpingresspath.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/httpingresspath.go
    index 07b6a67f6a7a..96f9b1f567cc 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/httpingresspath.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/httpingresspath.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/networking/v1"
    +	networkingv1 "k8s.io/api/networking/v1"
     )
     
    -// HTTPIngressPathApplyConfiguration represents an declarative configuration of the HTTPIngressPath type for use
    +// HTTPIngressPathApplyConfiguration represents a declarative configuration of the HTTPIngressPath type for use
     // with apply.
     type HTTPIngressPathApplyConfiguration struct {
     	Path     *string                           `json:"path,omitempty"`
    -	PathType *v1.PathType                      `json:"pathType,omitempty"`
    +	PathType *networkingv1.PathType            `json:"pathType,omitempty"`
     	Backend  *IngressBackendApplyConfiguration `json:"backend,omitempty"`
     }
     
    -// HTTPIngressPathApplyConfiguration constructs an declarative configuration of the HTTPIngressPath type for use with
    +// HTTPIngressPathApplyConfiguration constructs a declarative configuration of the HTTPIngressPath type for use with
     // apply.
     func HTTPIngressPath() *HTTPIngressPathApplyConfiguration {
     	return &HTTPIngressPathApplyConfiguration{}
    @@ -47,7 +47,7 @@ func (b *HTTPIngressPathApplyConfiguration) WithPath(value string) *HTTPIngressP
     // WithPathType sets the PathType field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PathType field is set to the value of the last call.
    -func (b *HTTPIngressPathApplyConfiguration) WithPathType(value v1.PathType) *HTTPIngressPathApplyConfiguration {
    +func (b *HTTPIngressPathApplyConfiguration) WithPathType(value networkingv1.PathType) *HTTPIngressPathApplyConfiguration {
     	b.PathType = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/httpingressrulevalue.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/httpingressrulevalue.go
    index fef529d696ea..ad9a7a677160 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/httpingressrulevalue.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/httpingressrulevalue.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// HTTPIngressRuleValueApplyConfiguration represents an declarative configuration of the HTTPIngressRuleValue type for use
    +// HTTPIngressRuleValueApplyConfiguration represents a declarative configuration of the HTTPIngressRuleValue type for use
     // with apply.
     type HTTPIngressRuleValueApplyConfiguration struct {
     	Paths []HTTPIngressPathApplyConfiguration `json:"paths,omitempty"`
     }
     
    -// HTTPIngressRuleValueApplyConfiguration constructs an declarative configuration of the HTTPIngressRuleValue type for use with
    +// HTTPIngressRuleValueApplyConfiguration constructs a declarative configuration of the HTTPIngressRuleValue type for use with
     // apply.
     func HTTPIngressRuleValue() *HTTPIngressRuleValueApplyConfiguration {
     	return &HTTPIngressRuleValueApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingress.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingress.go
    index b5146902d4f7..9e275f24fd99 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingress.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingress.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apinetworkingv1 "k8s.io/api/networking/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	networkingv1 "k8s.io/api/networking/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// IngressApplyConfiguration represents an declarative configuration of the Ingress type for use
    +// IngressApplyConfiguration represents a declarative configuration of the Ingress type for use
     // with apply.
     type IngressApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *IngressSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *IngressStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *IngressSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *IngressStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Ingress constructs an declarative configuration of the Ingress type for use with
    +// Ingress constructs a declarative configuration of the Ingress type for use with
     // apply.
     func Ingress(name, namespace string) *IngressApplyConfiguration {
     	b := &IngressApplyConfiguration{}
    @@ -58,18 +58,18 @@ func Ingress(name, namespace string) *IngressApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractIngress(ingress *apinetworkingv1.Ingress, fieldManager string) (*IngressApplyConfiguration, error) {
    +func ExtractIngress(ingress *networkingv1.Ingress, fieldManager string) (*IngressApplyConfiguration, error) {
     	return extractIngress(ingress, fieldManager, "")
     }
     
     // ExtractIngressStatus is the same as ExtractIngress except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractIngressStatus(ingress *apinetworkingv1.Ingress, fieldManager string) (*IngressApplyConfiguration, error) {
    +func ExtractIngressStatus(ingress *networkingv1.Ingress, fieldManager string) (*IngressApplyConfiguration, error) {
     	return extractIngress(ingress, fieldManager, "status")
     }
     
    -func extractIngress(ingress *apinetworkingv1.Ingress, fieldManager string, subresource string) (*IngressApplyConfiguration, error) {
    +func extractIngress(ingress *networkingv1.Ingress, fieldManager string, subresource string) (*IngressApplyConfiguration, error) {
     	b := &IngressApplyConfiguration{}
     	err := managedfields.ExtractInto(ingress, internal.Parser().Type("io.k8s.api.networking.v1.Ingress"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractIngress(ingress *apinetworkingv1.Ingress, fieldManager string, subre
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithKind(value string) *IngressApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *IngressApplyConfiguration) WithKind(value string) *IngressApplyConfigur
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithAPIVersion(value string) *IngressApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *IngressApplyConfiguration) WithAPIVersion(value string) *IngressApplyCo
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithName(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *IngressApplyConfiguration) WithName(value string) *IngressApplyConfigur
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithGenerateName(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *IngressApplyConfiguration) WithGenerateName(value string) *IngressApply
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithNamespace(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *IngressApplyConfiguration) WithNamespace(value string) *IngressApplyCon
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithUID(value types.UID) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *IngressApplyConfiguration) WithUID(value types.UID) *IngressApplyConfig
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithResourceVersion(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *IngressApplyConfiguration) WithResourceVersion(value string) *IngressAp
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithGeneration(value int64) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *IngressApplyConfiguration) WithCreationTimestamp(value metav1.Time) *IngressApplyConfiguration {
    +func (b *IngressApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *IngressApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *IngressApplyConfiguration {
    +func (b *IngressApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *IngressApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *In
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *IngressApplyConfiguration) WithDeletionGracePeriodSeconds(value int64)
     // overwriting an existing map entries in Labels field with the same key.
     func (b *IngressApplyConfiguration) WithLabels(entries map[string]string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *IngressApplyConfiguration) WithLabels(entries map[string]string) *Ingre
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *IngressApplyConfiguration) WithAnnotations(entries map[string]string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *IngressApplyConfiguration) WithAnnotations(entries map[string]string) *
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *IngressApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *IngressApplyConfiguration {
    +func (b *IngressApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *IngressApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     func (b *IngressApplyConfiguration) WithFinalizers(values ...string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *IngressApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *IngressApplyConfiguration) WithStatus(value *IngressStatusApplyConfigur
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *IngressApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressbackend.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressbackend.go
    index 575713599186..b014b7beefa9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressbackend.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressbackend.go
    @@ -22,14 +22,14 @@ import (
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// IngressBackendApplyConfiguration represents an declarative configuration of the IngressBackend type for use
    +// IngressBackendApplyConfiguration represents a declarative configuration of the IngressBackend type for use
     // with apply.
     type IngressBackendApplyConfiguration struct {
     	Service  *IngressServiceBackendApplyConfiguration            `json:"service,omitempty"`
     	Resource *corev1.TypedLocalObjectReferenceApplyConfiguration `json:"resource,omitempty"`
     }
     
    -// IngressBackendApplyConfiguration constructs an declarative configuration of the IngressBackend type for use with
    +// IngressBackendApplyConfiguration constructs a declarative configuration of the IngressBackend type for use with
     // apply.
     func IngressBackend() *IngressBackendApplyConfiguration {
     	return &IngressBackendApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclass.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclass.go
    index e33d0b2d9fd2..f723b5d7008b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclass.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apinetworkingv1 "k8s.io/api/networking/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	networkingv1 "k8s.io/api/networking/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// IngressClassApplyConfiguration represents an declarative configuration of the IngressClass type for use
    +// IngressClassApplyConfiguration represents a declarative configuration of the IngressClass type for use
     // with apply.
     type IngressClassApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *IngressClassSpecApplyConfiguration `json:"spec,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *IngressClassSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// IngressClass constructs an declarative configuration of the IngressClass type for use with
    +// IngressClass constructs a declarative configuration of the IngressClass type for use with
     // apply.
     func IngressClass(name string) *IngressClassApplyConfiguration {
     	b := &IngressClassApplyConfiguration{}
    @@ -56,18 +56,18 @@ func IngressClass(name string) *IngressClassApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractIngressClass(ingressClass *apinetworkingv1.IngressClass, fieldManager string) (*IngressClassApplyConfiguration, error) {
    +func ExtractIngressClass(ingressClass *networkingv1.IngressClass, fieldManager string) (*IngressClassApplyConfiguration, error) {
     	return extractIngressClass(ingressClass, fieldManager, "")
     }
     
     // ExtractIngressClassStatus is the same as ExtractIngressClass except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractIngressClassStatus(ingressClass *apinetworkingv1.IngressClass, fieldManager string) (*IngressClassApplyConfiguration, error) {
    +func ExtractIngressClassStatus(ingressClass *networkingv1.IngressClass, fieldManager string) (*IngressClassApplyConfiguration, error) {
     	return extractIngressClass(ingressClass, fieldManager, "status")
     }
     
    -func extractIngressClass(ingressClass *apinetworkingv1.IngressClass, fieldManager string, subresource string) (*IngressClassApplyConfiguration, error) {
    +func extractIngressClass(ingressClass *networkingv1.IngressClass, fieldManager string, subresource string) (*IngressClassApplyConfiguration, error) {
     	b := &IngressClassApplyConfiguration{}
     	err := managedfields.ExtractInto(ingressClass, internal.Parser().Type("io.k8s.api.networking.v1.IngressClass"), fieldManager, b, subresource)
     	if err != nil {
    @@ -84,7 +84,7 @@ func extractIngressClass(ingressClass *apinetworkingv1.IngressClass, fieldManage
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithKind(value string) *IngressClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *IngressClassApplyConfiguration) WithKind(value string) *IngressClassApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithAPIVersion(value string) *IngressClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *IngressClassApplyConfiguration) WithAPIVersion(value string) *IngressCl
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithName(value string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *IngressClassApplyConfiguration) WithName(value string) *IngressClassApp
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithGenerateName(value string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *IngressClassApplyConfiguration) WithGenerateName(value string) *Ingress
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithNamespace(value string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *IngressClassApplyConfiguration) WithNamespace(value string) *IngressCla
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithUID(value types.UID) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *IngressClassApplyConfiguration) WithUID(value types.UID) *IngressClassA
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithResourceVersion(value string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,25 +146,25 @@ func (b *IngressClassApplyConfiguration) WithResourceVersion(value string) *Ingr
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithGeneration(value int64) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *IngressClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *IngressClassApplyConfiguration {
    +func (b *IngressClassApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *IngressClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *IngressClassApplyConfiguration {
    +func (b *IngressClassApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *IngressClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *IngressClassApplyConfiguration) WithDeletionGracePeriodSeconds(value in
     // overwriting an existing map entries in Labels field with the same key.
     func (b *IngressClassApplyConfiguration) WithLabels(entries map[string]string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *IngressClassApplyConfiguration) WithLabels(entries map[string]string) *
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *IngressClassApplyConfiguration) WithAnnotations(entries map[string]string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -210,13 +210,13 @@ func (b *IngressClassApplyConfiguration) WithAnnotations(entries map[string]stri
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *IngressClassApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *IngressClassApplyConfiguration {
    +func (b *IngressClassApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,14 +227,14 @@ func (b *IngressClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     func (b *IngressClassApplyConfiguration) WithFinalizers(values ...string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *IngressClassApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -245,3 +245,9 @@ func (b *IngressClassApplyConfiguration) WithSpec(value *IngressClassSpecApplyCo
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *IngressClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclassparametersreference.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclassparametersreference.go
    index a020d3a8df87..0dba1ebc5dd0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclassparametersreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclassparametersreference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// IngressClassParametersReferenceApplyConfiguration represents an declarative configuration of the IngressClassParametersReference type for use
    +// IngressClassParametersReferenceApplyConfiguration represents a declarative configuration of the IngressClassParametersReference type for use
     // with apply.
     type IngressClassParametersReferenceApplyConfiguration struct {
     	APIGroup  *string `json:"apiGroup,omitempty"`
    @@ -28,7 +28,7 @@ type IngressClassParametersReferenceApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
     }
     
    -// IngressClassParametersReferenceApplyConfiguration constructs an declarative configuration of the IngressClassParametersReference type for use with
    +// IngressClassParametersReferenceApplyConfiguration constructs a declarative configuration of the IngressClassParametersReference type for use with
     // apply.
     func IngressClassParametersReference() *IngressClassParametersReferenceApplyConfiguration {
     	return &IngressClassParametersReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclassspec.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclassspec.go
    index ec0423e708df..23e848434491 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclassspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressclassspec.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// IngressClassSpecApplyConfiguration represents an declarative configuration of the IngressClassSpec type for use
    +// IngressClassSpecApplyConfiguration represents a declarative configuration of the IngressClassSpec type for use
     // with apply.
     type IngressClassSpecApplyConfiguration struct {
     	Controller *string                                            `json:"controller,omitempty"`
     	Parameters *IngressClassParametersReferenceApplyConfiguration `json:"parameters,omitempty"`
     }
     
    -// IngressClassSpecApplyConfiguration constructs an declarative configuration of the IngressClassSpec type for use with
    +// IngressClassSpecApplyConfiguration constructs a declarative configuration of the IngressClassSpec type for use with
     // apply.
     func IngressClassSpec() *IngressClassSpecApplyConfiguration {
     	return &IngressClassSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressloadbalanceringress.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressloadbalanceringress.go
    index 444275a127e9..d0feb44da45a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressloadbalanceringress.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressloadbalanceringress.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// IngressLoadBalancerIngressApplyConfiguration represents an declarative configuration of the IngressLoadBalancerIngress type for use
    +// IngressLoadBalancerIngressApplyConfiguration represents a declarative configuration of the IngressLoadBalancerIngress type for use
     // with apply.
     type IngressLoadBalancerIngressApplyConfiguration struct {
     	IP       *string                               `json:"ip,omitempty"`
    @@ -26,7 +26,7 @@ type IngressLoadBalancerIngressApplyConfiguration struct {
     	Ports    []IngressPortStatusApplyConfiguration `json:"ports,omitempty"`
     }
     
    -// IngressLoadBalancerIngressApplyConfiguration constructs an declarative configuration of the IngressLoadBalancerIngress type for use with
    +// IngressLoadBalancerIngressApplyConfiguration constructs a declarative configuration of the IngressLoadBalancerIngress type for use with
     // apply.
     func IngressLoadBalancerIngress() *IngressLoadBalancerIngressApplyConfiguration {
     	return &IngressLoadBalancerIngressApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressloadbalancerstatus.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressloadbalancerstatus.go
    index 8e01a301ac55..08c841f06bc9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressloadbalancerstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressloadbalancerstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// IngressLoadBalancerStatusApplyConfiguration represents an declarative configuration of the IngressLoadBalancerStatus type for use
    +// IngressLoadBalancerStatusApplyConfiguration represents a declarative configuration of the IngressLoadBalancerStatus type for use
     // with apply.
     type IngressLoadBalancerStatusApplyConfiguration struct {
     	Ingress []IngressLoadBalancerIngressApplyConfiguration `json:"ingress,omitempty"`
     }
     
    -// IngressLoadBalancerStatusApplyConfiguration constructs an declarative configuration of the IngressLoadBalancerStatus type for use with
    +// IngressLoadBalancerStatusApplyConfiguration constructs a declarative configuration of the IngressLoadBalancerStatus type for use with
     // apply.
     func IngressLoadBalancerStatus() *IngressLoadBalancerStatusApplyConfiguration {
     	return &IngressLoadBalancerStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressportstatus.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressportstatus.go
    index 82b5babd9ca3..84ba243ab97c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressportstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressportstatus.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// IngressPortStatusApplyConfiguration represents an declarative configuration of the IngressPortStatus type for use
    +// IngressPortStatusApplyConfiguration represents a declarative configuration of the IngressPortStatus type for use
     // with apply.
     type IngressPortStatusApplyConfiguration struct {
    -	Port     *int32       `json:"port,omitempty"`
    -	Protocol *v1.Protocol `json:"protocol,omitempty"`
    -	Error    *string      `json:"error,omitempty"`
    +	Port     *int32           `json:"port,omitempty"`
    +	Protocol *corev1.Protocol `json:"protocol,omitempty"`
    +	Error    *string          `json:"error,omitempty"`
     }
     
    -// IngressPortStatusApplyConfiguration constructs an declarative configuration of the IngressPortStatus type for use with
    +// IngressPortStatusApplyConfiguration constructs a declarative configuration of the IngressPortStatus type for use with
     // apply.
     func IngressPortStatus() *IngressPortStatusApplyConfiguration {
     	return &IngressPortStatusApplyConfiguration{}
    @@ -47,7 +47,7 @@ func (b *IngressPortStatusApplyConfiguration) WithPort(value int32) *IngressPort
     // WithProtocol sets the Protocol field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Protocol field is set to the value of the last call.
    -func (b *IngressPortStatusApplyConfiguration) WithProtocol(value v1.Protocol) *IngressPortStatusApplyConfiguration {
    +func (b *IngressPortStatusApplyConfiguration) WithProtocol(value corev1.Protocol) *IngressPortStatusApplyConfiguration {
     	b.Protocol = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressrule.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressrule.go
    index 8153e88fe2c7..20a1816bf130 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// IngressRuleApplyConfiguration represents an declarative configuration of the IngressRule type for use
    +// IngressRuleApplyConfiguration represents a declarative configuration of the IngressRule type for use
     // with apply.
     type IngressRuleApplyConfiguration struct {
     	Host                               *string `json:"host,omitempty"`
    -	IngressRuleValueApplyConfiguration `json:",omitempty,inline"`
    +	IngressRuleValueApplyConfiguration `json:",inline"`
     }
     
    -// IngressRuleApplyConfiguration constructs an declarative configuration of the IngressRule type for use with
    +// IngressRuleApplyConfiguration constructs a declarative configuration of the IngressRule type for use with
     // apply.
     func IngressRule() *IngressRuleApplyConfiguration {
     	return &IngressRuleApplyConfiguration{}
    @@ -43,6 +43,6 @@ func (b *IngressRuleApplyConfiguration) WithHost(value string) *IngressRuleApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the HTTP field is set to the value of the last call.
     func (b *IngressRuleApplyConfiguration) WithHTTP(value *HTTPIngressRuleValueApplyConfiguration) *IngressRuleApplyConfiguration {
    -	b.HTTP = value
    +	b.IngressRuleValueApplyConfiguration.HTTP = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressrulevalue.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressrulevalue.go
    index d0e094387c59..1e13e378be9a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressrulevalue.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressrulevalue.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// IngressRuleValueApplyConfiguration represents an declarative configuration of the IngressRuleValue type for use
    +// IngressRuleValueApplyConfiguration represents a declarative configuration of the IngressRuleValue type for use
     // with apply.
     type IngressRuleValueApplyConfiguration struct {
     	HTTP *HTTPIngressRuleValueApplyConfiguration `json:"http,omitempty"`
     }
     
    -// IngressRuleValueApplyConfiguration constructs an declarative configuration of the IngressRuleValue type for use with
    +// IngressRuleValueApplyConfiguration constructs a declarative configuration of the IngressRuleValue type for use with
     // apply.
     func IngressRuleValue() *IngressRuleValueApplyConfiguration {
     	return &IngressRuleValueApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressservicebackend.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressservicebackend.go
    index 399739631bf4..07876afd17ed 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressservicebackend.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressservicebackend.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// IngressServiceBackendApplyConfiguration represents an declarative configuration of the IngressServiceBackend type for use
    +// IngressServiceBackendApplyConfiguration represents a declarative configuration of the IngressServiceBackend type for use
     // with apply.
     type IngressServiceBackendApplyConfiguration struct {
     	Name *string                               `json:"name,omitempty"`
     	Port *ServiceBackendPortApplyConfiguration `json:"port,omitempty"`
     }
     
    -// IngressServiceBackendApplyConfiguration constructs an declarative configuration of the IngressServiceBackend type for use with
    +// IngressServiceBackendApplyConfiguration constructs a declarative configuration of the IngressServiceBackend type for use with
     // apply.
     func IngressServiceBackend() *IngressServiceBackendApplyConfiguration {
     	return &IngressServiceBackendApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressspec.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressspec.go
    index 635514ecf785..0572153aa1b1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// IngressSpecApplyConfiguration represents an declarative configuration of the IngressSpec type for use
    +// IngressSpecApplyConfiguration represents a declarative configuration of the IngressSpec type for use
     // with apply.
     type IngressSpecApplyConfiguration struct {
     	IngressClassName *string                           `json:"ingressClassName,omitempty"`
    @@ -27,7 +27,7 @@ type IngressSpecApplyConfiguration struct {
     	Rules            []IngressRuleApplyConfiguration   `json:"rules,omitempty"`
     }
     
    -// IngressSpecApplyConfiguration constructs an declarative configuration of the IngressSpec type for use with
    +// IngressSpecApplyConfiguration constructs a declarative configuration of the IngressSpec type for use with
     // apply.
     func IngressSpec() *IngressSpecApplyConfiguration {
     	return &IngressSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressstatus.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressstatus.go
    index 7131bf8d0dc0..bd1327c93f12 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingressstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// IngressStatusApplyConfiguration represents an declarative configuration of the IngressStatus type for use
    +// IngressStatusApplyConfiguration represents a declarative configuration of the IngressStatus type for use
     // with apply.
     type IngressStatusApplyConfiguration struct {
     	LoadBalancer *IngressLoadBalancerStatusApplyConfiguration `json:"loadBalancer,omitempty"`
     }
     
    -// IngressStatusApplyConfiguration constructs an declarative configuration of the IngressStatus type for use with
    +// IngressStatusApplyConfiguration constructs a declarative configuration of the IngressStatus type for use with
     // apply.
     func IngressStatus() *IngressStatusApplyConfiguration {
     	return &IngressStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingresstls.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingresstls.go
    index 4d8d369f7c08..44092503f92b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingresstls.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ingresstls.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// IngressTLSApplyConfiguration represents an declarative configuration of the IngressTLS type for use
    +// IngressTLSApplyConfiguration represents a declarative configuration of the IngressTLS type for use
     // with apply.
     type IngressTLSApplyConfiguration struct {
     	Hosts      []string `json:"hosts,omitempty"`
     	SecretName *string  `json:"secretName,omitempty"`
     }
     
    -// IngressTLSApplyConfiguration constructs an declarative configuration of the IngressTLS type for use with
    +// IngressTLSApplyConfiguration constructs a declarative configuration of the IngressTLS type for use with
     // apply.
     func IngressTLS() *IngressTLSApplyConfiguration {
     	return &IngressTLSApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ipblock.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ipblock.go
    index 1efd6edfdca0..f3447a8f10b3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ipblock.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/ipblock.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// IPBlockApplyConfiguration represents an declarative configuration of the IPBlock type for use
    +// IPBlockApplyConfiguration represents a declarative configuration of the IPBlock type for use
     // with apply.
     type IPBlockApplyConfiguration struct {
     	CIDR   *string  `json:"cidr,omitempty"`
     	Except []string `json:"except,omitempty"`
     }
     
    -// IPBlockApplyConfiguration constructs an declarative configuration of the IPBlock type for use with
    +// IPBlockApplyConfiguration constructs a declarative configuration of the IPBlock type for use with
     // apply.
     func IPBlock() *IPBlockApplyConfiguration {
     	return &IPBlockApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicy.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicy.go
    index 409507310b0d..e8da1be06529 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicy.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicy.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apinetworkingv1 "k8s.io/api/networking/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	networkingv1 "k8s.io/api/networking/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// NetworkPolicyApplyConfiguration represents an declarative configuration of the NetworkPolicy type for use
    +// NetworkPolicyApplyConfiguration represents a declarative configuration of the NetworkPolicy type for use
     // with apply.
     type NetworkPolicyApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *NetworkPolicySpecApplyConfiguration `json:"spec,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *NetworkPolicySpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// NetworkPolicy constructs an declarative configuration of the NetworkPolicy type for use with
    +// NetworkPolicy constructs a declarative configuration of the NetworkPolicy type for use with
     // apply.
     func NetworkPolicy(name, namespace string) *NetworkPolicyApplyConfiguration {
     	b := &NetworkPolicyApplyConfiguration{}
    @@ -57,18 +57,18 @@ func NetworkPolicy(name, namespace string) *NetworkPolicyApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractNetworkPolicy(networkPolicy *apinetworkingv1.NetworkPolicy, fieldManager string) (*NetworkPolicyApplyConfiguration, error) {
    +func ExtractNetworkPolicy(networkPolicy *networkingv1.NetworkPolicy, fieldManager string) (*NetworkPolicyApplyConfiguration, error) {
     	return extractNetworkPolicy(networkPolicy, fieldManager, "")
     }
     
     // ExtractNetworkPolicyStatus is the same as ExtractNetworkPolicy except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractNetworkPolicyStatus(networkPolicy *apinetworkingv1.NetworkPolicy, fieldManager string) (*NetworkPolicyApplyConfiguration, error) {
    +func ExtractNetworkPolicyStatus(networkPolicy *networkingv1.NetworkPolicy, fieldManager string) (*NetworkPolicyApplyConfiguration, error) {
     	return extractNetworkPolicy(networkPolicy, fieldManager, "status")
     }
     
    -func extractNetworkPolicy(networkPolicy *apinetworkingv1.NetworkPolicy, fieldManager string, subresource string) (*NetworkPolicyApplyConfiguration, error) {
    +func extractNetworkPolicy(networkPolicy *networkingv1.NetworkPolicy, fieldManager string, subresource string) (*NetworkPolicyApplyConfiguration, error) {
     	b := &NetworkPolicyApplyConfiguration{}
     	err := managedfields.ExtractInto(networkPolicy, internal.Parser().Type("io.k8s.api.networking.v1.NetworkPolicy"), fieldManager, b, subresource)
     	if err != nil {
    @@ -86,7 +86,7 @@ func extractNetworkPolicy(networkPolicy *apinetworkingv1.NetworkPolicy, fieldMan
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithKind(value string) *NetworkPolicyApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *NetworkPolicyApplyConfiguration) WithKind(value string) *NetworkPolicyA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithAPIVersion(value string) *NetworkPolicyApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *NetworkPolicyApplyConfiguration) WithAPIVersion(value string) *NetworkP
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithName(value string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *NetworkPolicyApplyConfiguration) WithName(value string) *NetworkPolicyA
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithGenerateName(value string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *NetworkPolicyApplyConfiguration) WithGenerateName(value string) *Networ
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithNamespace(value string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *NetworkPolicyApplyConfiguration) WithNamespace(value string) *NetworkPo
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithUID(value types.UID) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *NetworkPolicyApplyConfiguration) WithUID(value types.UID) *NetworkPolic
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithResourceVersion(value string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,25 +148,25 @@ func (b *NetworkPolicyApplyConfiguration) WithResourceVersion(value string) *Net
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithGeneration(value int64) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *NetworkPolicyApplyConfiguration) WithCreationTimestamp(value metav1.Time) *NetworkPolicyApplyConfiguration {
    +func (b *NetworkPolicyApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *NetworkPolicyApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *NetworkPolicyApplyConfiguration {
    +func (b *NetworkPolicyApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *NetworkPolicyApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *NetworkPolicyApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *NetworkPolicyApplyConfiguration) WithDeletionGracePeriodSeconds(value i
     // overwriting an existing map entries in Labels field with the same key.
     func (b *NetworkPolicyApplyConfiguration) WithLabels(entries map[string]string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *NetworkPolicyApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *NetworkPolicyApplyConfiguration) WithAnnotations(entries map[string]string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -212,13 +212,13 @@ func (b *NetworkPolicyApplyConfiguration) WithAnnotations(entries map[string]str
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *NetworkPolicyApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *NetworkPolicyApplyConfiguration {
    +func (b *NetworkPolicyApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,14 +229,14 @@ func (b *NetworkPolicyApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     func (b *NetworkPolicyApplyConfiguration) WithFinalizers(values ...string) *NetworkPolicyApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *NetworkPolicyApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -247,3 +247,9 @@ func (b *NetworkPolicyApplyConfiguration) WithSpec(value *NetworkPolicySpecApply
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *NetworkPolicyApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyegressrule.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyegressrule.go
    index e5751c441373..46e2706eceb4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyegressrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyegressrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// NetworkPolicyEgressRuleApplyConfiguration represents an declarative configuration of the NetworkPolicyEgressRule type for use
    +// NetworkPolicyEgressRuleApplyConfiguration represents a declarative configuration of the NetworkPolicyEgressRule type for use
     // with apply.
     type NetworkPolicyEgressRuleApplyConfiguration struct {
     	Ports []NetworkPolicyPortApplyConfiguration `json:"ports,omitempty"`
     	To    []NetworkPolicyPeerApplyConfiguration `json:"to,omitempty"`
     }
     
    -// NetworkPolicyEgressRuleApplyConfiguration constructs an declarative configuration of the NetworkPolicyEgressRule type for use with
    +// NetworkPolicyEgressRuleApplyConfiguration constructs a declarative configuration of the NetworkPolicyEgressRule type for use with
     // apply.
     func NetworkPolicyEgressRule() *NetworkPolicyEgressRuleApplyConfiguration {
     	return &NetworkPolicyEgressRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyingressrule.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyingressrule.go
    index 630fe1fabe60..6e9875978690 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyingressrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyingressrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// NetworkPolicyIngressRuleApplyConfiguration represents an declarative configuration of the NetworkPolicyIngressRule type for use
    +// NetworkPolicyIngressRuleApplyConfiguration represents a declarative configuration of the NetworkPolicyIngressRule type for use
     // with apply.
     type NetworkPolicyIngressRuleApplyConfiguration struct {
     	Ports []NetworkPolicyPortApplyConfiguration `json:"ports,omitempty"`
     	From  []NetworkPolicyPeerApplyConfiguration `json:"from,omitempty"`
     }
     
    -// NetworkPolicyIngressRuleApplyConfiguration constructs an declarative configuration of the NetworkPolicyIngressRule type for use with
    +// NetworkPolicyIngressRuleApplyConfiguration constructs a declarative configuration of the NetworkPolicyIngressRule type for use with
     // apply.
     func NetworkPolicyIngressRule() *NetworkPolicyIngressRuleApplyConfiguration {
     	return &NetworkPolicyIngressRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicypeer.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicypeer.go
    index 909b651c0411..716ceeeefb72 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicypeer.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicypeer.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// NetworkPolicyPeerApplyConfiguration represents an declarative configuration of the NetworkPolicyPeer type for use
    +// NetworkPolicyPeerApplyConfiguration represents a declarative configuration of the NetworkPolicyPeer type for use
     // with apply.
     type NetworkPolicyPeerApplyConfiguration struct {
    -	PodSelector       *v1.LabelSelectorApplyConfiguration `json:"podSelector,omitempty"`
    -	NamespaceSelector *v1.LabelSelectorApplyConfiguration `json:"namespaceSelector,omitempty"`
    -	IPBlock           *IPBlockApplyConfiguration          `json:"ipBlock,omitempty"`
    +	PodSelector       *metav1.LabelSelectorApplyConfiguration `json:"podSelector,omitempty"`
    +	NamespaceSelector *metav1.LabelSelectorApplyConfiguration `json:"namespaceSelector,omitempty"`
    +	IPBlock           *IPBlockApplyConfiguration              `json:"ipBlock,omitempty"`
     }
     
    -// NetworkPolicyPeerApplyConfiguration constructs an declarative configuration of the NetworkPolicyPeer type for use with
    +// NetworkPolicyPeerApplyConfiguration constructs a declarative configuration of the NetworkPolicyPeer type for use with
     // apply.
     func NetworkPolicyPeer() *NetworkPolicyPeerApplyConfiguration {
     	return &NetworkPolicyPeerApplyConfiguration{}
    @@ -39,7 +39,7 @@ func NetworkPolicyPeer() *NetworkPolicyPeerApplyConfiguration {
     // WithPodSelector sets the PodSelector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PodSelector field is set to the value of the last call.
    -func (b *NetworkPolicyPeerApplyConfiguration) WithPodSelector(value *v1.LabelSelectorApplyConfiguration) *NetworkPolicyPeerApplyConfiguration {
    +func (b *NetworkPolicyPeerApplyConfiguration) WithPodSelector(value *metav1.LabelSelectorApplyConfiguration) *NetworkPolicyPeerApplyConfiguration {
     	b.PodSelector = value
     	return b
     }
    @@ -47,7 +47,7 @@ func (b *NetworkPolicyPeerApplyConfiguration) WithPodSelector(value *v1.LabelSel
     // WithNamespaceSelector sets the NamespaceSelector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the NamespaceSelector field is set to the value of the last call.
    -func (b *NetworkPolicyPeerApplyConfiguration) WithNamespaceSelector(value *v1.LabelSelectorApplyConfiguration) *NetworkPolicyPeerApplyConfiguration {
    +func (b *NetworkPolicyPeerApplyConfiguration) WithNamespaceSelector(value *metav1.LabelSelectorApplyConfiguration) *NetworkPolicyPeerApplyConfiguration {
     	b.NamespaceSelector = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyport.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyport.go
    index 73dbed1d8954..2ded0aecf69d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyport.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyport.go
    @@ -19,19 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     )
     
    -// NetworkPolicyPortApplyConfiguration represents an declarative configuration of the NetworkPolicyPort type for use
    +// NetworkPolicyPortApplyConfiguration represents a declarative configuration of the NetworkPolicyPort type for use
     // with apply.
     type NetworkPolicyPortApplyConfiguration struct {
    -	Protocol *v1.Protocol        `json:"protocol,omitempty"`
    +	Protocol *corev1.Protocol    `json:"protocol,omitempty"`
     	Port     *intstr.IntOrString `json:"port,omitempty"`
     	EndPort  *int32              `json:"endPort,omitempty"`
     }
     
    -// NetworkPolicyPortApplyConfiguration constructs an declarative configuration of the NetworkPolicyPort type for use with
    +// NetworkPolicyPortApplyConfiguration constructs a declarative configuration of the NetworkPolicyPort type for use with
     // apply.
     func NetworkPolicyPort() *NetworkPolicyPortApplyConfiguration {
     	return &NetworkPolicyPortApplyConfiguration{}
    @@ -40,7 +40,7 @@ func NetworkPolicyPort() *NetworkPolicyPortApplyConfiguration {
     // WithProtocol sets the Protocol field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Protocol field is set to the value of the last call.
    -func (b *NetworkPolicyPortApplyConfiguration) WithProtocol(value v1.Protocol) *NetworkPolicyPortApplyConfiguration {
    +func (b *NetworkPolicyPortApplyConfiguration) WithProtocol(value corev1.Protocol) *NetworkPolicyPortApplyConfiguration {
     	b.Protocol = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyspec.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyspec.go
    index 882d8233a95b..48369b921ca9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/networkpolicyspec.go
    @@ -19,20 +19,20 @@ limitations under the License.
     package v1
     
     import (
    -	apinetworkingv1 "k8s.io/api/networking/v1"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	networkingv1 "k8s.io/api/networking/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// NetworkPolicySpecApplyConfiguration represents an declarative configuration of the NetworkPolicySpec type for use
    +// NetworkPolicySpecApplyConfiguration represents a declarative configuration of the NetworkPolicySpec type for use
     // with apply.
     type NetworkPolicySpecApplyConfiguration struct {
    -	PodSelector *v1.LabelSelectorApplyConfiguration          `json:"podSelector,omitempty"`
    +	PodSelector *metav1.LabelSelectorApplyConfiguration      `json:"podSelector,omitempty"`
     	Ingress     []NetworkPolicyIngressRuleApplyConfiguration `json:"ingress,omitempty"`
     	Egress      []NetworkPolicyEgressRuleApplyConfiguration  `json:"egress,omitempty"`
    -	PolicyTypes []apinetworkingv1.PolicyType                 `json:"policyTypes,omitempty"`
    +	PolicyTypes []networkingv1.PolicyType                    `json:"policyTypes,omitempty"`
     }
     
    -// NetworkPolicySpecApplyConfiguration constructs an declarative configuration of the NetworkPolicySpec type for use with
    +// NetworkPolicySpecApplyConfiguration constructs a declarative configuration of the NetworkPolicySpec type for use with
     // apply.
     func NetworkPolicySpec() *NetworkPolicySpecApplyConfiguration {
     	return &NetworkPolicySpecApplyConfiguration{}
    @@ -41,7 +41,7 @@ func NetworkPolicySpec() *NetworkPolicySpecApplyConfiguration {
     // WithPodSelector sets the PodSelector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PodSelector field is set to the value of the last call.
    -func (b *NetworkPolicySpecApplyConfiguration) WithPodSelector(value *v1.LabelSelectorApplyConfiguration) *NetworkPolicySpecApplyConfiguration {
    +func (b *NetworkPolicySpecApplyConfiguration) WithPodSelector(value *metav1.LabelSelectorApplyConfiguration) *NetworkPolicySpecApplyConfiguration {
     	b.PodSelector = value
     	return b
     }
    @@ -75,7 +75,7 @@ func (b *NetworkPolicySpecApplyConfiguration) WithEgress(values ...*NetworkPolic
     // WithPolicyTypes adds the given value to the PolicyTypes field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the PolicyTypes field.
    -func (b *NetworkPolicySpecApplyConfiguration) WithPolicyTypes(values ...apinetworkingv1.PolicyType) *NetworkPolicySpecApplyConfiguration {
    +func (b *NetworkPolicySpecApplyConfiguration) WithPolicyTypes(values ...networkingv1.PolicyType) *NetworkPolicySpecApplyConfiguration {
     	for i := range values {
     		b.PolicyTypes = append(b.PolicyTypes, values[i])
     	}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/servicebackendport.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/servicebackendport.go
    index ec278960caa7..517f97483803 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1/servicebackendport.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1/servicebackendport.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// ServiceBackendPortApplyConfiguration represents an declarative configuration of the ServiceBackendPort type for use
    +// ServiceBackendPortApplyConfiguration represents a declarative configuration of the ServiceBackendPort type for use
     // with apply.
     type ServiceBackendPortApplyConfiguration struct {
     	Name   *string `json:"name,omitempty"`
     	Number *int32  `json:"number,omitempty"`
     }
     
    -// ServiceBackendPortApplyConfiguration constructs an declarative configuration of the ServiceBackendPort type for use with
    +// ServiceBackendPortApplyConfiguration constructs a declarative configuration of the ServiceBackendPort type for use with
     // apply.
     func ServiceBackendPort() *ServiceBackendPortApplyConfiguration {
     	return &ServiceBackendPortApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/ipaddress.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/ipaddress.go
    index da6822111db5..cc7880992e6d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/ipaddress.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/ipaddress.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// IPAddressApplyConfiguration represents an declarative configuration of the IPAddress type for use
    +// IPAddressApplyConfiguration represents a declarative configuration of the IPAddress type for use
     // with apply.
     type IPAddressApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type IPAddressApplyConfiguration struct {
     	Spec                             *IPAddressSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// IPAddress constructs an declarative configuration of the IPAddress type for use with
    +// IPAddress constructs a declarative configuration of the IPAddress type for use with
     // apply.
     func IPAddress(name string) *IPAddressApplyConfiguration {
     	b := &IPAddressApplyConfiguration{}
    @@ -84,7 +84,7 @@ func extractIPAddress(iPAddress *networkingv1alpha1.IPAddress, fieldManager stri
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithKind(value string) *IPAddressApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *IPAddressApplyConfiguration) WithKind(value string) *IPAddressApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithAPIVersion(value string) *IPAddressApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *IPAddressApplyConfiguration) WithAPIVersion(value string) *IPAddressApp
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithName(value string) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *IPAddressApplyConfiguration) WithName(value string) *IPAddressApplyConf
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithGenerateName(value string) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *IPAddressApplyConfiguration) WithGenerateName(value string) *IPAddressA
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithNamespace(value string) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *IPAddressApplyConfiguration) WithNamespace(value string) *IPAddressAppl
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithUID(value types.UID) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *IPAddressApplyConfiguration) WithUID(value types.UID) *IPAddressApplyCo
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithResourceVersion(value string) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,7 +146,7 @@ func (b *IPAddressApplyConfiguration) WithResourceVersion(value string) *IPAddre
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithGeneration(value int64) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *IPAddressApplyConfiguration) WithGeneration(value int64) *IPAddressAppl
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithCreationTimestamp(value metav1.Time) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -164,7 +164,7 @@ func (b *IPAddressApplyConfiguration) WithCreationTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *IPAddressApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *IPAddressApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *IPAddressApplyConfiguration) WithDeletionGracePeriodSeconds(value int64
     // overwriting an existing map entries in Labels field with the same key.
     func (b *IPAddressApplyConfiguration) WithLabels(entries map[string]string) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *IPAddressApplyConfiguration) WithLabels(entries map[string]string) *IPA
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *IPAddressApplyConfiguration) WithAnnotations(entries map[string]string) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,7 +216,7 @@ func (b *IPAddressApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,7 +227,7 @@ func (b *IPAddressApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     func (b *IPAddressApplyConfiguration) WithFinalizers(values ...string) *IPAddressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -245,3 +245,9 @@ func (b *IPAddressApplyConfiguration) WithSpec(value *IPAddressSpecApplyConfigur
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *IPAddressApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/ipaddressspec.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/ipaddressspec.go
    index 064963d691e1..bf025a8c1a78 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/ipaddressspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/ipaddressspec.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1alpha1
     
    -// IPAddressSpecApplyConfiguration represents an declarative configuration of the IPAddressSpec type for use
    +// IPAddressSpecApplyConfiguration represents a declarative configuration of the IPAddressSpec type for use
     // with apply.
     type IPAddressSpecApplyConfiguration struct {
     	ParentRef *ParentReferenceApplyConfiguration `json:"parentRef,omitempty"`
     }
     
    -// IPAddressSpecApplyConfiguration constructs an declarative configuration of the IPAddressSpec type for use with
    +// IPAddressSpecApplyConfiguration constructs a declarative configuration of the IPAddressSpec type for use with
     // apply.
     func IPAddressSpec() *IPAddressSpecApplyConfiguration {
     	return &IPAddressSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/parentreference.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/parentreference.go
    index ce1049709a09..d5a52d503da4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/parentreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/parentreference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1alpha1
     
    -// ParentReferenceApplyConfiguration represents an declarative configuration of the ParentReference type for use
    +// ParentReferenceApplyConfiguration represents a declarative configuration of the ParentReference type for use
     // with apply.
     type ParentReferenceApplyConfiguration struct {
     	Group     *string `json:"group,omitempty"`
    @@ -27,7 +27,7 @@ type ParentReferenceApplyConfiguration struct {
     	Name      *string `json:"name,omitempty"`
     }
     
    -// ParentReferenceApplyConfiguration constructs an declarative configuration of the ParentReference type for use with
    +// ParentReferenceApplyConfiguration constructs a declarative configuration of the ParentReference type for use with
     // apply.
     func ParentReference() *ParentReferenceApplyConfiguration {
     	return &ParentReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidr.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidr.go
    index f6d0a91e009a..27d3f271b06a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidr.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidr.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ServiceCIDRApplyConfiguration represents an declarative configuration of the ServiceCIDR type for use
    +// ServiceCIDRApplyConfiguration represents a declarative configuration of the ServiceCIDR type for use
     // with apply.
     type ServiceCIDRApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type ServiceCIDRApplyConfiguration struct {
     	Status                           *ServiceCIDRStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// ServiceCIDR constructs an declarative configuration of the ServiceCIDR type for use with
    +// ServiceCIDR constructs a declarative configuration of the ServiceCIDR type for use with
     // apply.
     func ServiceCIDR(name string) *ServiceCIDRApplyConfiguration {
     	b := &ServiceCIDRApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractServiceCIDR(serviceCIDR *networkingv1alpha1.ServiceCIDR, fieldManage
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithKind(value string) *ServiceCIDRApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *ServiceCIDRApplyConfiguration) WithKind(value string) *ServiceCIDRApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithAPIVersion(value string) *ServiceCIDRApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *ServiceCIDRApplyConfiguration) WithAPIVersion(value string) *ServiceCID
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithName(value string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *ServiceCIDRApplyConfiguration) WithName(value string) *ServiceCIDRApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithGenerateName(value string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *ServiceCIDRApplyConfiguration) WithGenerateName(value string) *ServiceC
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithNamespace(value string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *ServiceCIDRApplyConfiguration) WithNamespace(value string) *ServiceCIDR
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithUID(value types.UID) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *ServiceCIDRApplyConfiguration) WithUID(value types.UID) *ServiceCIDRApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithResourceVersion(value string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *ServiceCIDRApplyConfiguration) WithResourceVersion(value string) *Servi
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithGeneration(value int64) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *ServiceCIDRApplyConfiguration) WithGeneration(value int64) *ServiceCIDR
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *ServiceCIDRApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *ServiceCIDRApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ServiceCIDRApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *ServiceCIDRApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ServiceCIDRApplyConfiguration) WithLabels(entries map[string]string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *ServiceCIDRApplyConfiguration) WithLabels(entries map[string]string) *S
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ServiceCIDRApplyConfiguration) WithAnnotations(entries map[string]string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *ServiceCIDRApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *ServiceCIDRApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *ServiceCIDRApplyConfiguration) WithFinalizers(values ...string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *ServiceCIDRApplyConfiguration) WithStatus(value *ServiceCIDRStatusApply
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ServiceCIDRApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrspec.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrspec.go
    index 302d69194cee..7875ff403bf1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrspec.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1alpha1
     
    -// ServiceCIDRSpecApplyConfiguration represents an declarative configuration of the ServiceCIDRSpec type for use
    +// ServiceCIDRSpecApplyConfiguration represents a declarative configuration of the ServiceCIDRSpec type for use
     // with apply.
     type ServiceCIDRSpecApplyConfiguration struct {
     	CIDRs []string `json:"cidrs,omitempty"`
     }
     
    -// ServiceCIDRSpecApplyConfiguration constructs an declarative configuration of the ServiceCIDRSpec type for use with
    +// ServiceCIDRSpecApplyConfiguration constructs a declarative configuration of the ServiceCIDRSpec type for use with
     // apply.
     func ServiceCIDRSpec() *ServiceCIDRSpecApplyConfiguration {
     	return &ServiceCIDRSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrstatus.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrstatus.go
    index 5afc549a6505..34715e3a4991 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrstatus.go
    @@ -22,13 +22,13 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ServiceCIDRStatusApplyConfiguration represents an declarative configuration of the ServiceCIDRStatus type for use
    +// ServiceCIDRStatusApplyConfiguration represents a declarative configuration of the ServiceCIDRStatus type for use
     // with apply.
     type ServiceCIDRStatusApplyConfiguration struct {
     	Conditions []v1.ConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// ServiceCIDRStatusApplyConfiguration constructs an declarative configuration of the ServiceCIDRStatus type for use with
    +// ServiceCIDRStatusApplyConfiguration constructs a declarative configuration of the ServiceCIDRStatus type for use with
     // apply.
     func ServiceCIDRStatus() *ServiceCIDRStatusApplyConfiguration {
     	return &ServiceCIDRStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/httpingresspath.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/httpingresspath.go
    index b12907e81c50..c7301c6a32d5 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/httpingresspath.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/httpingresspath.go
    @@ -19,18 +19,18 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/networking/v1beta1"
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
     )
     
    -// HTTPIngressPathApplyConfiguration represents an declarative configuration of the HTTPIngressPath type for use
    +// HTTPIngressPathApplyConfiguration represents a declarative configuration of the HTTPIngressPath type for use
     // with apply.
     type HTTPIngressPathApplyConfiguration struct {
     	Path     *string                           `json:"path,omitempty"`
    -	PathType *v1beta1.PathType                 `json:"pathType,omitempty"`
    +	PathType *networkingv1beta1.PathType       `json:"pathType,omitempty"`
     	Backend  *IngressBackendApplyConfiguration `json:"backend,omitempty"`
     }
     
    -// HTTPIngressPathApplyConfiguration constructs an declarative configuration of the HTTPIngressPath type for use with
    +// HTTPIngressPathApplyConfiguration constructs a declarative configuration of the HTTPIngressPath type for use with
     // apply.
     func HTTPIngressPath() *HTTPIngressPathApplyConfiguration {
     	return &HTTPIngressPathApplyConfiguration{}
    @@ -47,7 +47,7 @@ func (b *HTTPIngressPathApplyConfiguration) WithPath(value string) *HTTPIngressP
     // WithPathType sets the PathType field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PathType field is set to the value of the last call.
    -func (b *HTTPIngressPathApplyConfiguration) WithPathType(value v1beta1.PathType) *HTTPIngressPathApplyConfiguration {
    +func (b *HTTPIngressPathApplyConfiguration) WithPathType(value networkingv1beta1.PathType) *HTTPIngressPathApplyConfiguration {
     	b.PathType = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/httpingressrulevalue.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/httpingressrulevalue.go
    index 3137bc5eb04d..12454522374f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/httpingressrulevalue.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/httpingressrulevalue.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// HTTPIngressRuleValueApplyConfiguration represents an declarative configuration of the HTTPIngressRuleValue type for use
    +// HTTPIngressRuleValueApplyConfiguration represents a declarative configuration of the HTTPIngressRuleValue type for use
     // with apply.
     type HTTPIngressRuleValueApplyConfiguration struct {
     	Paths []HTTPIngressPathApplyConfiguration `json:"paths,omitempty"`
     }
     
    -// HTTPIngressRuleValueApplyConfiguration constructs an declarative configuration of the HTTPIngressRuleValue type for use with
    +// HTTPIngressRuleValueApplyConfiguration constructs a declarative configuration of the HTTPIngressRuleValue type for use with
     // apply.
     func HTTPIngressRuleValue() *HTTPIngressRuleValueApplyConfiguration {
     	return &HTTPIngressRuleValueApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingress.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingress.go
    index 56f65c30a9e9..5d26cd75ce69 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingress.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingress.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// IngressApplyConfiguration represents an declarative configuration of the Ingress type for use
    +// IngressApplyConfiguration represents a declarative configuration of the Ingress type for use
     // with apply.
     type IngressApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type IngressApplyConfiguration struct {
     	Status                           *IngressStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// Ingress constructs an declarative configuration of the Ingress type for use with
    +// Ingress constructs a declarative configuration of the Ingress type for use with
     // apply.
     func Ingress(name, namespace string) *IngressApplyConfiguration {
     	b := &IngressApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractIngress(ingress *networkingv1beta1.Ingress, fieldManager string, sub
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithKind(value string) *IngressApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *IngressApplyConfiguration) WithKind(value string) *IngressApplyConfigur
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithAPIVersion(value string) *IngressApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *IngressApplyConfiguration) WithAPIVersion(value string) *IngressApplyCo
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithName(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *IngressApplyConfiguration) WithName(value string) *IngressApplyConfigur
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithGenerateName(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *IngressApplyConfiguration) WithGenerateName(value string) *IngressApply
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithNamespace(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *IngressApplyConfiguration) WithNamespace(value string) *IngressApplyCon
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithUID(value types.UID) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *IngressApplyConfiguration) WithUID(value types.UID) *IngressApplyConfig
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithResourceVersion(value string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *IngressApplyConfiguration) WithResourceVersion(value string) *IngressAp
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithGeneration(value int64) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *IngressApplyConfiguration) WithGeneration(value int64) *IngressApplyCon
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithCreationTimestamp(value metav1.Time) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *IngressApplyConfiguration) WithCreationTimestamp(value metav1.Time) *In
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *IngressApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *In
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *IngressApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *IngressApplyConfiguration) WithDeletionGracePeriodSeconds(value int64)
     // overwriting an existing map entries in Labels field with the same key.
     func (b *IngressApplyConfiguration) WithLabels(entries map[string]string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *IngressApplyConfiguration) WithLabels(entries map[string]string) *Ingre
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *IngressApplyConfiguration) WithAnnotations(entries map[string]string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *IngressApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *IngressApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     func (b *IngressApplyConfiguration) WithFinalizers(values ...string) *IngressApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *IngressApplyConfiguration) WithStatus(value *IngressStatusApplyConfigur
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *IngressApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressbackend.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressbackend.go
    index f19c2f2ee24a..9d386f160861 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressbackend.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressbackend.go
    @@ -23,7 +23,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// IngressBackendApplyConfiguration represents an declarative configuration of the IngressBackend type for use
    +// IngressBackendApplyConfiguration represents a declarative configuration of the IngressBackend type for use
     // with apply.
     type IngressBackendApplyConfiguration struct {
     	ServiceName *string                                         `json:"serviceName,omitempty"`
    @@ -31,7 +31,7 @@ type IngressBackendApplyConfiguration struct {
     	Resource    *v1.TypedLocalObjectReferenceApplyConfiguration `json:"resource,omitempty"`
     }
     
    -// IngressBackendApplyConfiguration constructs an declarative configuration of the IngressBackend type for use with
    +// IngressBackendApplyConfiguration constructs a declarative configuration of the IngressBackend type for use with
     // apply.
     func IngressBackend() *IngressBackendApplyConfiguration {
     	return &IngressBackendApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclass.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclass.go
    index b65d4b3073db..272e0339fc2f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclass.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// IngressClassApplyConfiguration represents an declarative configuration of the IngressClass type for use
    +// IngressClassApplyConfiguration represents a declarative configuration of the IngressClass type for use
     // with apply.
     type IngressClassApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type IngressClassApplyConfiguration struct {
     	Spec                             *IngressClassSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// IngressClass constructs an declarative configuration of the IngressClass type for use with
    +// IngressClass constructs a declarative configuration of the IngressClass type for use with
     // apply.
     func IngressClass(name string) *IngressClassApplyConfiguration {
     	b := &IngressClassApplyConfiguration{}
    @@ -84,7 +84,7 @@ func extractIngressClass(ingressClass *networkingv1beta1.IngressClass, fieldMana
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithKind(value string) *IngressClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *IngressClassApplyConfiguration) WithKind(value string) *IngressClassApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithAPIVersion(value string) *IngressClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *IngressClassApplyConfiguration) WithAPIVersion(value string) *IngressCl
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithName(value string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *IngressClassApplyConfiguration) WithName(value string) *IngressClassApp
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithGenerateName(value string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *IngressClassApplyConfiguration) WithGenerateName(value string) *Ingress
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithNamespace(value string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *IngressClassApplyConfiguration) WithNamespace(value string) *IngressCla
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithUID(value types.UID) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *IngressClassApplyConfiguration) WithUID(value types.UID) *IngressClassA
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithResourceVersion(value string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,7 +146,7 @@ func (b *IngressClassApplyConfiguration) WithResourceVersion(value string) *Ingr
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithGeneration(value int64) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *IngressClassApplyConfiguration) WithGeneration(value int64) *IngressCla
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -164,7 +164,7 @@ func (b *IngressClassApplyConfiguration) WithCreationTimestamp(value metav1.Time
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *IngressClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *IngressClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *IngressClassApplyConfiguration) WithDeletionGracePeriodSeconds(value in
     // overwriting an existing map entries in Labels field with the same key.
     func (b *IngressClassApplyConfiguration) WithLabels(entries map[string]string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *IngressClassApplyConfiguration) WithLabels(entries map[string]string) *
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *IngressClassApplyConfiguration) WithAnnotations(entries map[string]string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,7 +216,7 @@ func (b *IngressClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,7 +227,7 @@ func (b *IngressClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     func (b *IngressClassApplyConfiguration) WithFinalizers(values ...string) *IngressClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -245,3 +245,9 @@ func (b *IngressClassApplyConfiguration) WithSpec(value *IngressClassSpecApplyCo
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *IngressClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclassparametersreference.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclassparametersreference.go
    index e6ca805e4721..2a307a676030 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclassparametersreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclassparametersreference.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressClassParametersReferenceApplyConfiguration represents an declarative configuration of the IngressClassParametersReference type for use
    +// IngressClassParametersReferenceApplyConfiguration represents a declarative configuration of the IngressClassParametersReference type for use
     // with apply.
     type IngressClassParametersReferenceApplyConfiguration struct {
     	APIGroup  *string `json:"apiGroup,omitempty"`
    @@ -28,7 +28,7 @@ type IngressClassParametersReferenceApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
     }
     
    -// IngressClassParametersReferenceApplyConfiguration constructs an declarative configuration of the IngressClassParametersReference type for use with
    +// IngressClassParametersReferenceApplyConfiguration constructs a declarative configuration of the IngressClassParametersReference type for use with
     // apply.
     func IngressClassParametersReference() *IngressClassParametersReferenceApplyConfiguration {
     	return &IngressClassParametersReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclassspec.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclassspec.go
    index 51040462cae0..eefbf62b87ac 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclassspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressclassspec.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressClassSpecApplyConfiguration represents an declarative configuration of the IngressClassSpec type for use
    +// IngressClassSpecApplyConfiguration represents a declarative configuration of the IngressClassSpec type for use
     // with apply.
     type IngressClassSpecApplyConfiguration struct {
     	Controller *string                                            `json:"controller,omitempty"`
     	Parameters *IngressClassParametersReferenceApplyConfiguration `json:"parameters,omitempty"`
     }
     
    -// IngressClassSpecApplyConfiguration constructs an declarative configuration of the IngressClassSpec type for use with
    +// IngressClassSpecApplyConfiguration constructs a declarative configuration of the IngressClassSpec type for use with
     // apply.
     func IngressClassSpec() *IngressClassSpecApplyConfiguration {
     	return &IngressClassSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressloadbalanceringress.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressloadbalanceringress.go
    index 20bf63780548..12dbc35969b0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressloadbalanceringress.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressloadbalanceringress.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressLoadBalancerIngressApplyConfiguration represents an declarative configuration of the IngressLoadBalancerIngress type for use
    +// IngressLoadBalancerIngressApplyConfiguration represents a declarative configuration of the IngressLoadBalancerIngress type for use
     // with apply.
     type IngressLoadBalancerIngressApplyConfiguration struct {
     	IP       *string                               `json:"ip,omitempty"`
    @@ -26,7 +26,7 @@ type IngressLoadBalancerIngressApplyConfiguration struct {
     	Ports    []IngressPortStatusApplyConfiguration `json:"ports,omitempty"`
     }
     
    -// IngressLoadBalancerIngressApplyConfiguration constructs an declarative configuration of the IngressLoadBalancerIngress type for use with
    +// IngressLoadBalancerIngressApplyConfiguration constructs a declarative configuration of the IngressLoadBalancerIngress type for use with
     // apply.
     func IngressLoadBalancerIngress() *IngressLoadBalancerIngressApplyConfiguration {
     	return &IngressLoadBalancerIngressApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressloadbalancerstatus.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressloadbalancerstatus.go
    index e16dd2363334..e896ab341559 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressloadbalancerstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressloadbalancerstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressLoadBalancerStatusApplyConfiguration represents an declarative configuration of the IngressLoadBalancerStatus type for use
    +// IngressLoadBalancerStatusApplyConfiguration represents a declarative configuration of the IngressLoadBalancerStatus type for use
     // with apply.
     type IngressLoadBalancerStatusApplyConfiguration struct {
     	Ingress []IngressLoadBalancerIngressApplyConfiguration `json:"ingress,omitempty"`
     }
     
    -// IngressLoadBalancerStatusApplyConfiguration constructs an declarative configuration of the IngressLoadBalancerStatus type for use with
    +// IngressLoadBalancerStatusApplyConfiguration constructs a declarative configuration of the IngressLoadBalancerStatus type for use with
     // apply.
     func IngressLoadBalancerStatus() *IngressLoadBalancerStatusApplyConfiguration {
     	return &IngressLoadBalancerStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressportstatus.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressportstatus.go
    index 0836537979ec..4ee3f01617f9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressportstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressportstatus.go
    @@ -22,7 +22,7 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// IngressPortStatusApplyConfiguration represents an declarative configuration of the IngressPortStatus type for use
    +// IngressPortStatusApplyConfiguration represents a declarative configuration of the IngressPortStatus type for use
     // with apply.
     type IngressPortStatusApplyConfiguration struct {
     	Port     *int32       `json:"port,omitempty"`
    @@ -30,7 +30,7 @@ type IngressPortStatusApplyConfiguration struct {
     	Error    *string      `json:"error,omitempty"`
     }
     
    -// IngressPortStatusApplyConfiguration constructs an declarative configuration of the IngressPortStatus type for use with
    +// IngressPortStatusApplyConfiguration constructs a declarative configuration of the IngressPortStatus type for use with
     // apply.
     func IngressPortStatus() *IngressPortStatusApplyConfiguration {
     	return &IngressPortStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressrule.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressrule.go
    index 015541eeb971..809fada928ea 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressrule.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressRuleApplyConfiguration represents an declarative configuration of the IngressRule type for use
    +// IngressRuleApplyConfiguration represents a declarative configuration of the IngressRule type for use
     // with apply.
     type IngressRuleApplyConfiguration struct {
     	Host                               *string `json:"host,omitempty"`
    -	IngressRuleValueApplyConfiguration `json:",omitempty,inline"`
    +	IngressRuleValueApplyConfiguration `json:",inline"`
     }
     
    -// IngressRuleApplyConfiguration constructs an declarative configuration of the IngressRule type for use with
    +// IngressRuleApplyConfiguration constructs a declarative configuration of the IngressRule type for use with
     // apply.
     func IngressRule() *IngressRuleApplyConfiguration {
     	return &IngressRuleApplyConfiguration{}
    @@ -43,6 +43,6 @@ func (b *IngressRuleApplyConfiguration) WithHost(value string) *IngressRuleApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the HTTP field is set to the value of the last call.
     func (b *IngressRuleApplyConfiguration) WithHTTP(value *HTTPIngressRuleValueApplyConfiguration) *IngressRuleApplyConfiguration {
    -	b.HTTP = value
    +	b.IngressRuleValueApplyConfiguration.HTTP = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressrulevalue.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressrulevalue.go
    index 2d03c7b13220..4a6412475560 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressrulevalue.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressrulevalue.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressRuleValueApplyConfiguration represents an declarative configuration of the IngressRuleValue type for use
    +// IngressRuleValueApplyConfiguration represents a declarative configuration of the IngressRuleValue type for use
     // with apply.
     type IngressRuleValueApplyConfiguration struct {
     	HTTP *HTTPIngressRuleValueApplyConfiguration `json:"http,omitempty"`
     }
     
    -// IngressRuleValueApplyConfiguration constructs an declarative configuration of the IngressRuleValue type for use with
    +// IngressRuleValueApplyConfiguration constructs a declarative configuration of the IngressRuleValue type for use with
     // apply.
     func IngressRuleValue() *IngressRuleValueApplyConfiguration {
     	return &IngressRuleValueApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressspec.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressspec.go
    index 1ab4d8bb73b0..58fbde8b3525 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressSpecApplyConfiguration represents an declarative configuration of the IngressSpec type for use
    +// IngressSpecApplyConfiguration represents a declarative configuration of the IngressSpec type for use
     // with apply.
     type IngressSpecApplyConfiguration struct {
     	IngressClassName *string                           `json:"ingressClassName,omitempty"`
    @@ -27,7 +27,7 @@ type IngressSpecApplyConfiguration struct {
     	Rules            []IngressRuleApplyConfiguration   `json:"rules,omitempty"`
     }
     
    -// IngressSpecApplyConfiguration constructs an declarative configuration of the IngressSpec type for use with
    +// IngressSpecApplyConfiguration constructs a declarative configuration of the IngressSpec type for use with
     // apply.
     func IngressSpec() *IngressSpecApplyConfiguration {
     	return &IngressSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressstatus.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressstatus.go
    index faa7e2446fae..3aed616889c0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingressstatus.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressStatusApplyConfiguration represents an declarative configuration of the IngressStatus type for use
    +// IngressStatusApplyConfiguration represents a declarative configuration of the IngressStatus type for use
     // with apply.
     type IngressStatusApplyConfiguration struct {
     	LoadBalancer *IngressLoadBalancerStatusApplyConfiguration `json:"loadBalancer,omitempty"`
     }
     
    -// IngressStatusApplyConfiguration constructs an declarative configuration of the IngressStatus type for use with
    +// IngressStatusApplyConfiguration constructs a declarative configuration of the IngressStatus type for use with
     // apply.
     func IngressStatus() *IngressStatusApplyConfiguration {
     	return &IngressStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingresstls.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingresstls.go
    index 8ca93a0bc2d1..63648cd46495 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingresstls.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ingresstls.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// IngressTLSApplyConfiguration represents an declarative configuration of the IngressTLS type for use
    +// IngressTLSApplyConfiguration represents a declarative configuration of the IngressTLS type for use
     // with apply.
     type IngressTLSApplyConfiguration struct {
     	Hosts      []string `json:"hosts,omitempty"`
     	SecretName *string  `json:"secretName,omitempty"`
     }
     
    -// IngressTLSApplyConfiguration constructs an declarative configuration of the IngressTLS type for use with
    +// IngressTLSApplyConfiguration constructs a declarative configuration of the IngressTLS type for use with
     // apply.
     func IngressTLS() *IngressTLSApplyConfiguration {
     	return &IngressTLSApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ipaddress.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ipaddress.go
    new file mode 100644
    index 000000000000..f58b54da5a69
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ipaddress.go
    @@ -0,0 +1,253 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// IPAddressApplyConfiguration represents a declarative configuration of the IPAddress type for use
    +// with apply.
    +type IPAddressApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *IPAddressSpecApplyConfiguration `json:"spec,omitempty"`
    +}
    +
    +// IPAddress constructs a declarative configuration of the IPAddress type for use with
    +// apply.
    +func IPAddress(name string) *IPAddressApplyConfiguration {
    +	b := &IPAddressApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("IPAddress")
    +	b.WithAPIVersion("networking.k8s.io/v1beta1")
    +	return b
    +}
    +
    +// ExtractIPAddress extracts the applied configuration owned by fieldManager from
    +// iPAddress. If no managedFields are found in iPAddress for fieldManager, a
    +// IPAddressApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// iPAddress must be a unmodified IPAddress API object that was retrieved from the Kubernetes API.
    +// ExtractIPAddress provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractIPAddress(iPAddress *networkingv1beta1.IPAddress, fieldManager string) (*IPAddressApplyConfiguration, error) {
    +	return extractIPAddress(iPAddress, fieldManager, "")
    +}
    +
    +// ExtractIPAddressStatus is the same as ExtractIPAddress except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractIPAddressStatus(iPAddress *networkingv1beta1.IPAddress, fieldManager string) (*IPAddressApplyConfiguration, error) {
    +	return extractIPAddress(iPAddress, fieldManager, "status")
    +}
    +
    +func extractIPAddress(iPAddress *networkingv1beta1.IPAddress, fieldManager string, subresource string) (*IPAddressApplyConfiguration, error) {
    +	b := &IPAddressApplyConfiguration{}
    +	err := managedfields.ExtractInto(iPAddress, internal.Parser().Type("io.k8s.api.networking.v1beta1.IPAddress"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(iPAddress.Name)
    +
    +	b.WithKind("IPAddress")
    +	b.WithAPIVersion("networking.k8s.io/v1beta1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithKind(value string) *IPAddressApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithAPIVersion(value string) *IPAddressApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithName(value string) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithGenerateName(value string) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithNamespace(value string) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithUID(value types.UID) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithResourceVersion(value string) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithGeneration(value int64) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithCreationTimestamp(value metav1.Time) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *IPAddressApplyConfiguration) WithLabels(entries map[string]string) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *IPAddressApplyConfiguration) WithAnnotations(entries map[string]string) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *IPAddressApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *IPAddressApplyConfiguration) WithFinalizers(values ...string) *IPAddressApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *IPAddressApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *IPAddressApplyConfiguration) WithSpec(value *IPAddressSpecApplyConfiguration) *IPAddressApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *IPAddressApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ipaddressspec.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ipaddressspec.go
    new file mode 100644
    index 000000000000..76b02137d236
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/ipaddressspec.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// IPAddressSpecApplyConfiguration represents a declarative configuration of the IPAddressSpec type for use
    +// with apply.
    +type IPAddressSpecApplyConfiguration struct {
    +	ParentRef *ParentReferenceApplyConfiguration `json:"parentRef,omitempty"`
    +}
    +
    +// IPAddressSpecApplyConfiguration constructs a declarative configuration of the IPAddressSpec type for use with
    +// apply.
    +func IPAddressSpec() *IPAddressSpecApplyConfiguration {
    +	return &IPAddressSpecApplyConfiguration{}
    +}
    +
    +// WithParentRef sets the ParentRef field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ParentRef field is set to the value of the last call.
    +func (b *IPAddressSpecApplyConfiguration) WithParentRef(value *ParentReferenceApplyConfiguration) *IPAddressSpecApplyConfiguration {
    +	b.ParentRef = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclassparametersreference.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/parentreference.go
    similarity index 51%
    rename from vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclassparametersreference.go
    rename to vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/parentreference.go
    index d67e4d397711..1863938f16cc 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclassparametersreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/parentreference.go
    @@ -16,51 +16,51 @@ limitations under the License.
     
     // Code generated by applyconfiguration-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1beta1
     
    -// ResourceClassParametersReferenceApplyConfiguration represents an declarative configuration of the ResourceClassParametersReference type for use
    +// ParentReferenceApplyConfiguration represents a declarative configuration of the ParentReference type for use
     // with apply.
    -type ResourceClassParametersReferenceApplyConfiguration struct {
    -	APIGroup  *string `json:"apiGroup,omitempty"`
    -	Kind      *string `json:"kind,omitempty"`
    -	Name      *string `json:"name,omitempty"`
    +type ParentReferenceApplyConfiguration struct {
    +	Group     *string `json:"group,omitempty"`
    +	Resource  *string `json:"resource,omitempty"`
     	Namespace *string `json:"namespace,omitempty"`
    +	Name      *string `json:"name,omitempty"`
     }
     
    -// ResourceClassParametersReferenceApplyConfiguration constructs an declarative configuration of the ResourceClassParametersReference type for use with
    +// ParentReferenceApplyConfiguration constructs a declarative configuration of the ParentReference type for use with
     // apply.
    -func ResourceClassParametersReference() *ResourceClassParametersReferenceApplyConfiguration {
    -	return &ResourceClassParametersReferenceApplyConfiguration{}
    +func ParentReference() *ParentReferenceApplyConfiguration {
    +	return &ParentReferenceApplyConfiguration{}
     }
     
    -// WithAPIGroup sets the APIGroup field in the declarative configuration to the given value
    +// WithGroup sets the Group field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the APIGroup field is set to the value of the last call.
    -func (b *ResourceClassParametersReferenceApplyConfiguration) WithAPIGroup(value string) *ResourceClassParametersReferenceApplyConfiguration {
    -	b.APIGroup = &value
    +// If called multiple times, the Group field is set to the value of the last call.
    +func (b *ParentReferenceApplyConfiguration) WithGroup(value string) *ParentReferenceApplyConfiguration {
    +	b.Group = &value
     	return b
     }
     
    -// WithKind sets the Kind field in the declarative configuration to the given value
    +// WithResource sets the Resource field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the Kind field is set to the value of the last call.
    -func (b *ResourceClassParametersReferenceApplyConfiguration) WithKind(value string) *ResourceClassParametersReferenceApplyConfiguration {
    -	b.Kind = &value
    +// If called multiple times, the Resource field is set to the value of the last call.
    +func (b *ParentReferenceApplyConfiguration) WithResource(value string) *ParentReferenceApplyConfiguration {
    +	b.Resource = &value
     	return b
     }
     
    -// WithName sets the Name field in the declarative configuration to the given value
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the Name field is set to the value of the last call.
    -func (b *ResourceClassParametersReferenceApplyConfiguration) WithName(value string) *ResourceClassParametersReferenceApplyConfiguration {
    -	b.Name = &value
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *ParentReferenceApplyConfiguration) WithNamespace(value string) *ParentReferenceApplyConfiguration {
    +	b.Namespace = &value
     	return b
     }
     
    -// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// WithName sets the Name field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the Namespace field is set to the value of the last call.
    -func (b *ResourceClassParametersReferenceApplyConfiguration) WithNamespace(value string) *ResourceClassParametersReferenceApplyConfiguration {
    -	b.Namespace = &value
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ParentReferenceApplyConfiguration) WithName(value string) *ParentReferenceApplyConfiguration {
    +	b.Name = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/podschedulingcontext.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/servicecidr.go
    similarity index 59%
    rename from vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/podschedulingcontext.go
    rename to vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/servicecidr.go
    index 1dfb6ff97b8d..6a53db5c079d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/podschedulingcontext.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/servicecidr.go
    @@ -16,10 +16,10 @@ limitations under the License.
     
     // Code generated by applyconfiguration-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1beta1
     
     import (
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    @@ -27,156 +27,154 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodSchedulingContextApplyConfiguration represents an declarative configuration of the PodSchedulingContext type for use
    +// ServiceCIDRApplyConfiguration represents a declarative configuration of the ServiceCIDR type for use
     // with apply.
    -type PodSchedulingContextApplyConfiguration struct {
    +type ServiceCIDRApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
     	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *PodSchedulingContextSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *PodSchedulingContextStatusApplyConfiguration `json:"status,omitempty"`
    +	Spec                             *ServiceCIDRSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                           *ServiceCIDRStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// PodSchedulingContext constructs an declarative configuration of the PodSchedulingContext type for use with
    +// ServiceCIDR constructs a declarative configuration of the ServiceCIDR type for use with
     // apply.
    -func PodSchedulingContext(name, namespace string) *PodSchedulingContextApplyConfiguration {
    -	b := &PodSchedulingContextApplyConfiguration{}
    +func ServiceCIDR(name string) *ServiceCIDRApplyConfiguration {
    +	b := &ServiceCIDRApplyConfiguration{}
     	b.WithName(name)
    -	b.WithNamespace(namespace)
    -	b.WithKind("PodSchedulingContext")
    -	b.WithAPIVersion("resource.k8s.io/v1alpha2")
    +	b.WithKind("ServiceCIDR")
    +	b.WithAPIVersion("networking.k8s.io/v1beta1")
     	return b
     }
     
    -// ExtractPodSchedulingContext extracts the applied configuration owned by fieldManager from
    -// podSchedulingContext. If no managedFields are found in podSchedulingContext for fieldManager, a
    -// PodSchedulingContextApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// ExtractServiceCIDR extracts the applied configuration owned by fieldManager from
    +// serviceCIDR. If no managedFields are found in serviceCIDR for fieldManager, a
    +// ServiceCIDRApplyConfiguration is returned with only the Name, Namespace (if applicable),
     // APIVersion and Kind populated. It is possible that no managed fields were found for because other
     // field managers have taken ownership of all the fields previously owned by fieldManager, or because
     // the fieldManager never owned fields any fields.
    -// podSchedulingContext must be a unmodified PodSchedulingContext API object that was retrieved from the Kubernetes API.
    -// ExtractPodSchedulingContext provides a way to perform a extract/modify-in-place/apply workflow.
    +// serviceCIDR must be a unmodified ServiceCIDR API object that was retrieved from the Kubernetes API.
    +// ExtractServiceCIDR provides a way to perform a extract/modify-in-place/apply workflow.
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractPodSchedulingContext(podSchedulingContext *resourcev1alpha2.PodSchedulingContext, fieldManager string) (*PodSchedulingContextApplyConfiguration, error) {
    -	return extractPodSchedulingContext(podSchedulingContext, fieldManager, "")
    +func ExtractServiceCIDR(serviceCIDR *networkingv1beta1.ServiceCIDR, fieldManager string) (*ServiceCIDRApplyConfiguration, error) {
    +	return extractServiceCIDR(serviceCIDR, fieldManager, "")
     }
     
    -// ExtractPodSchedulingContextStatus is the same as ExtractPodSchedulingContext except
    +// ExtractServiceCIDRStatus is the same as ExtractServiceCIDR except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractPodSchedulingContextStatus(podSchedulingContext *resourcev1alpha2.PodSchedulingContext, fieldManager string) (*PodSchedulingContextApplyConfiguration, error) {
    -	return extractPodSchedulingContext(podSchedulingContext, fieldManager, "status")
    +func ExtractServiceCIDRStatus(serviceCIDR *networkingv1beta1.ServiceCIDR, fieldManager string) (*ServiceCIDRApplyConfiguration, error) {
    +	return extractServiceCIDR(serviceCIDR, fieldManager, "status")
     }
     
    -func extractPodSchedulingContext(podSchedulingContext *resourcev1alpha2.PodSchedulingContext, fieldManager string, subresource string) (*PodSchedulingContextApplyConfiguration, error) {
    -	b := &PodSchedulingContextApplyConfiguration{}
    -	err := managedfields.ExtractInto(podSchedulingContext, internal.Parser().Type("io.k8s.api.resource.v1alpha2.PodSchedulingContext"), fieldManager, b, subresource)
    +func extractServiceCIDR(serviceCIDR *networkingv1beta1.ServiceCIDR, fieldManager string, subresource string) (*ServiceCIDRApplyConfiguration, error) {
    +	b := &ServiceCIDRApplyConfiguration{}
    +	err := managedfields.ExtractInto(serviceCIDR, internal.Parser().Type("io.k8s.api.networking.v1beta1.ServiceCIDR"), fieldManager, b, subresource)
     	if err != nil {
     		return nil, err
     	}
    -	b.WithName(podSchedulingContext.Name)
    -	b.WithNamespace(podSchedulingContext.Namespace)
    +	b.WithName(serviceCIDR.Name)
     
    -	b.WithKind("PodSchedulingContext")
    -	b.WithAPIVersion("resource.k8s.io/v1alpha2")
    +	b.WithKind("ServiceCIDR")
    +	b.WithAPIVersion("networking.k8s.io/v1beta1")
     	return b, nil
     }
     
     // WithKind sets the Kind field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithKind(value string) *PodSchedulingContextApplyConfiguration {
    -	b.Kind = &value
    +func (b *ServiceCIDRApplyConfiguration) WithKind(value string) *ServiceCIDRApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
     // WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithAPIVersion(value string) *PodSchedulingContextApplyConfiguration {
    -	b.APIVersion = &value
    +func (b *ServiceCIDRApplyConfiguration) WithAPIVersion(value string) *ServiceCIDRApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
     // WithName sets the Name field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithName(value string) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithName(value string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
     // WithGenerateName sets the GenerateName field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the GenerateName field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithGenerateName(value string) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithGenerateName(value string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
     // WithNamespace sets the Namespace field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Namespace field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithNamespace(value string) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithNamespace(value string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
     // WithUID sets the UID field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the UID field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithUID(value types.UID) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithUID(value types.UID) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
     // WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithResourceVersion(value string) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithResourceVersion(value string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
     // WithGeneration sets the Generation field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Generation field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithGeneration(value int64) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithGeneration(value int64) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
     // WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,13 +182,13 @@ func (b *PodSchedulingContextApplyConfiguration) WithDeletionGracePeriodSeconds(
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, the entries provided by each call will be put on the Labels field,
     // overwriting an existing map entries in Labels field with the same key.
    -func (b *PodSchedulingContextApplyConfiguration) WithLabels(entries map[string]string) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithLabels(entries map[string]string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,13 +197,13 @@ func (b *PodSchedulingContextApplyConfiguration) WithLabels(entries map[string]s
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, the entries provided by each call will be put on the Annotations field,
     // overwriting an existing map entries in Annotations field with the same key.
    -func (b *PodSchedulingContextApplyConfiguration) WithAnnotations(entries map[string]string) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithAnnotations(entries map[string]string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +211,13 @@ func (b *PodSchedulingContextApplyConfiguration) WithAnnotations(entries map[str
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *PodSchedulingContextApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,15 +225,15 @@ func (b *PodSchedulingContextApplyConfiguration) WithOwnerReferences(values ...*
     // WithFinalizers adds the given value to the Finalizers field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Finalizers field.
    -func (b *PodSchedulingContextApplyConfiguration) WithFinalizers(values ...string) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithFinalizers(values ...string) *ServiceCIDRApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
    -func (b *PodSchedulingContextApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +func (b *ServiceCIDRApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
     		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
     	}
    @@ -244,7 +242,7 @@ func (b *PodSchedulingContextApplyConfiguration) ensureObjectMetaApplyConfigurat
     // WithSpec sets the Spec field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Spec field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithSpec(value *PodSchedulingContextSpecApplyConfiguration) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithSpec(value *ServiceCIDRSpecApplyConfiguration) *ServiceCIDRApplyConfiguration {
     	b.Spec = value
     	return b
     }
    @@ -252,7 +250,13 @@ func (b *PodSchedulingContextApplyConfiguration) WithSpec(value *PodSchedulingCo
     // WithStatus sets the Status field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Status field is set to the value of the last call.
    -func (b *PodSchedulingContextApplyConfiguration) WithStatus(value *PodSchedulingContextStatusApplyConfiguration) *PodSchedulingContextApplyConfiguration {
    +func (b *ServiceCIDRApplyConfiguration) WithStatus(value *ServiceCIDRStatusApplyConfiguration) *ServiceCIDRApplyConfiguration {
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ServiceCIDRApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/servicecidrspec.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/servicecidrspec.go
    new file mode 100644
    index 000000000000..1f283532d31c
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/servicecidrspec.go
    @@ -0,0 +1,41 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// ServiceCIDRSpecApplyConfiguration represents a declarative configuration of the ServiceCIDRSpec type for use
    +// with apply.
    +type ServiceCIDRSpecApplyConfiguration struct {
    +	CIDRs []string `json:"cidrs,omitempty"`
    +}
    +
    +// ServiceCIDRSpecApplyConfiguration constructs a declarative configuration of the ServiceCIDRSpec type for use with
    +// apply.
    +func ServiceCIDRSpec() *ServiceCIDRSpecApplyConfiguration {
    +	return &ServiceCIDRSpecApplyConfiguration{}
    +}
    +
    +// WithCIDRs adds the given value to the CIDRs field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the CIDRs field.
    +func (b *ServiceCIDRSpecApplyConfiguration) WithCIDRs(values ...string) *ServiceCIDRSpecApplyConfiguration {
    +	for i := range values {
    +		b.CIDRs = append(b.CIDRs, values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/servicecidrstatus.go b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/servicecidrstatus.go
    new file mode 100644
    index 000000000000..f2dd92404dde
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/networking/v1beta1/servicecidrstatus.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// ServiceCIDRStatusApplyConfiguration represents a declarative configuration of the ServiceCIDRStatus type for use
    +// with apply.
    +type ServiceCIDRStatusApplyConfiguration struct {
    +	Conditions []v1.ConditionApplyConfiguration `json:"conditions,omitempty"`
    +}
    +
    +// ServiceCIDRStatusApplyConfiguration constructs a declarative configuration of the ServiceCIDRStatus type for use with
    +// apply.
    +func ServiceCIDRStatus() *ServiceCIDRStatusApplyConfiguration {
    +	return &ServiceCIDRStatusApplyConfiguration{}
    +}
    +
    +// WithConditions adds the given value to the Conditions field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Conditions field.
    +func (b *ServiceCIDRStatusApplyConfiguration) WithConditions(values ...*v1.ConditionApplyConfiguration) *ServiceCIDRStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConditions")
    +		}
    +		b.Conditions = append(b.Conditions, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/node/v1/overhead.go b/vendor/k8s.io/client-go/applyconfigurations/node/v1/overhead.go
    index 9eec0026715e..30ce9fb42e00 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/node/v1/overhead.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/node/v1/overhead.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     )
     
    -// OverheadApplyConfiguration represents an declarative configuration of the Overhead type for use
    +// OverheadApplyConfiguration represents a declarative configuration of the Overhead type for use
     // with apply.
     type OverheadApplyConfiguration struct {
    -	PodFixed *v1.ResourceList `json:"podFixed,omitempty"`
    +	PodFixed *corev1.ResourceList `json:"podFixed,omitempty"`
     }
     
    -// OverheadApplyConfiguration constructs an declarative configuration of the Overhead type for use with
    +// OverheadApplyConfiguration constructs a declarative configuration of the Overhead type for use with
     // apply.
     func Overhead() *OverheadApplyConfiguration {
     	return &OverheadApplyConfiguration{}
    @@ -37,7 +37,7 @@ func Overhead() *OverheadApplyConfiguration {
     // WithPodFixed sets the PodFixed field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the PodFixed field is set to the value of the last call.
    -func (b *OverheadApplyConfiguration) WithPodFixed(value v1.ResourceList) *OverheadApplyConfiguration {
    +func (b *OverheadApplyConfiguration) WithPodFixed(value corev1.ResourceList) *OverheadApplyConfiguration {
     	b.PodFixed = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/node/v1/runtimeclass.go b/vendor/k8s.io/client-go/applyconfigurations/node/v1/runtimeclass.go
    index 3c9d1fc467d5..067dc1703002 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/node/v1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/node/v1/runtimeclass.go
    @@ -19,25 +19,25 @@ limitations under the License.
     package v1
     
     import (
    -	apinodev1 "k8s.io/api/node/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	nodev1 "k8s.io/api/node/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// RuntimeClassApplyConfiguration represents an declarative configuration of the RuntimeClass type for use
    +// RuntimeClassApplyConfiguration represents a declarative configuration of the RuntimeClass type for use
     // with apply.
     type RuntimeClassApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Handler                          *string                       `json:"handler,omitempty"`
    -	Overhead                         *OverheadApplyConfiguration   `json:"overhead,omitempty"`
    -	Scheduling                       *SchedulingApplyConfiguration `json:"scheduling,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Handler                              *string                       `json:"handler,omitempty"`
    +	Overhead                             *OverheadApplyConfiguration   `json:"overhead,omitempty"`
    +	Scheduling                           *SchedulingApplyConfiguration `json:"scheduling,omitempty"`
     }
     
    -// RuntimeClass constructs an declarative configuration of the RuntimeClass type for use with
    +// RuntimeClass constructs a declarative configuration of the RuntimeClass type for use with
     // apply.
     func RuntimeClass(name string) *RuntimeClassApplyConfiguration {
     	b := &RuntimeClassApplyConfiguration{}
    @@ -58,18 +58,18 @@ func RuntimeClass(name string) *RuntimeClassApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractRuntimeClass(runtimeClass *apinodev1.RuntimeClass, fieldManager string) (*RuntimeClassApplyConfiguration, error) {
    +func ExtractRuntimeClass(runtimeClass *nodev1.RuntimeClass, fieldManager string) (*RuntimeClassApplyConfiguration, error) {
     	return extractRuntimeClass(runtimeClass, fieldManager, "")
     }
     
     // ExtractRuntimeClassStatus is the same as ExtractRuntimeClass except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractRuntimeClassStatus(runtimeClass *apinodev1.RuntimeClass, fieldManager string) (*RuntimeClassApplyConfiguration, error) {
    +func ExtractRuntimeClassStatus(runtimeClass *nodev1.RuntimeClass, fieldManager string) (*RuntimeClassApplyConfiguration, error) {
     	return extractRuntimeClass(runtimeClass, fieldManager, "status")
     }
     
    -func extractRuntimeClass(runtimeClass *apinodev1.RuntimeClass, fieldManager string, subresource string) (*RuntimeClassApplyConfiguration, error) {
    +func extractRuntimeClass(runtimeClass *nodev1.RuntimeClass, fieldManager string, subresource string) (*RuntimeClassApplyConfiguration, error) {
     	b := &RuntimeClassApplyConfiguration{}
     	err := managedfields.ExtractInto(runtimeClass, internal.Parser().Type("io.k8s.api.node.v1.RuntimeClass"), fieldManager, b, subresource)
     	if err != nil {
    @@ -86,7 +86,7 @@ func extractRuntimeClass(runtimeClass *apinodev1.RuntimeClass, fieldManager stri
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithKind(value string) *RuntimeClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *RuntimeClassApplyConfiguration) WithKind(value string) *RuntimeClassApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithAPIVersion(value string) *RuntimeClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *RuntimeClassApplyConfiguration) WithAPIVersion(value string) *RuntimeCl
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithName(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *RuntimeClassApplyConfiguration) WithName(value string) *RuntimeClassApp
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithGenerateName(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *RuntimeClassApplyConfiguration) WithGenerateName(value string) *Runtime
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithNamespace(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *RuntimeClassApplyConfiguration) WithNamespace(value string) *RuntimeCla
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithUID(value types.UID) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *RuntimeClassApplyConfiguration) WithUID(value types.UID) *RuntimeClassA
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithResourceVersion(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,25 +148,25 @@ func (b *RuntimeClassApplyConfiguration) WithResourceVersion(value string) *Runt
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithGeneration(value int64) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *RuntimeClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RuntimeClassApplyConfiguration {
    +func (b *RuntimeClassApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *RuntimeClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RuntimeClassApplyConfiguration {
    +func (b *RuntimeClassApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *RuntimeClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *RuntimeClassApplyConfiguration) WithDeletionGracePeriodSeconds(value in
     // overwriting an existing map entries in Labels field with the same key.
     func (b *RuntimeClassApplyConfiguration) WithLabels(entries map[string]string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *RuntimeClassApplyConfiguration) WithLabels(entries map[string]string) *
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *RuntimeClassApplyConfiguration) WithAnnotations(entries map[string]string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -212,13 +212,13 @@ func (b *RuntimeClassApplyConfiguration) WithAnnotations(entries map[string]stri
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *RuntimeClassApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *RuntimeClassApplyConfiguration {
    +func (b *RuntimeClassApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,14 +229,14 @@ func (b *RuntimeClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     func (b *RuntimeClassApplyConfiguration) WithFinalizers(values ...string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *RuntimeClassApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -263,3 +263,9 @@ func (b *RuntimeClassApplyConfiguration) WithScheduling(value *SchedulingApplyCo
     	b.Scheduling = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *RuntimeClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/node/v1/scheduling.go b/vendor/k8s.io/client-go/applyconfigurations/node/v1/scheduling.go
    index e01db85d7b04..b45400fbcd76 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/node/v1/scheduling.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/node/v1/scheduling.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// SchedulingApplyConfiguration represents an declarative configuration of the Scheduling type for use
    +// SchedulingApplyConfiguration represents a declarative configuration of the Scheduling type for use
     // with apply.
     type SchedulingApplyConfiguration struct {
    -	NodeSelector map[string]string                 `json:"nodeSelector,omitempty"`
    -	Tolerations  []v1.TolerationApplyConfiguration `json:"tolerations,omitempty"`
    +	NodeSelector map[string]string                     `json:"nodeSelector,omitempty"`
    +	Tolerations  []corev1.TolerationApplyConfiguration `json:"tolerations,omitempty"`
     }
     
    -// SchedulingApplyConfiguration constructs an declarative configuration of the Scheduling type for use with
    +// SchedulingApplyConfiguration constructs a declarative configuration of the Scheduling type for use with
     // apply.
     func Scheduling() *SchedulingApplyConfiguration {
     	return &SchedulingApplyConfiguration{}
    @@ -52,7 +52,7 @@ func (b *SchedulingApplyConfiguration) WithNodeSelector(entries map[string]strin
     // WithTolerations adds the given value to the Tolerations field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Tolerations field.
    -func (b *SchedulingApplyConfiguration) WithTolerations(values ...*v1.TolerationApplyConfiguration) *SchedulingApplyConfiguration {
    +func (b *SchedulingApplyConfiguration) WithTolerations(values ...*corev1.TolerationApplyConfiguration) *SchedulingApplyConfiguration {
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithTolerations")
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/overhead.go b/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/overhead.go
    index 1ddaa64acc1b..84770a09205f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/overhead.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/overhead.go
    @@ -22,13 +22,13 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// OverheadApplyConfiguration represents an declarative configuration of the Overhead type for use
    +// OverheadApplyConfiguration represents a declarative configuration of the Overhead type for use
     // with apply.
     type OverheadApplyConfiguration struct {
     	PodFixed *v1.ResourceList `json:"podFixed,omitempty"`
     }
     
    -// OverheadApplyConfiguration constructs an declarative configuration of the Overhead type for use with
    +// OverheadApplyConfiguration constructs a declarative configuration of the Overhead type for use with
     // apply.
     func Overhead() *OverheadApplyConfiguration {
     	return &OverheadApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/runtimeclass.go b/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/runtimeclass.go
    index e680e12deb5c..5ddca3b6e136 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/runtimeclass.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// RuntimeClassApplyConfiguration represents an declarative configuration of the RuntimeClass type for use
    +// RuntimeClassApplyConfiguration represents a declarative configuration of the RuntimeClass type for use
     // with apply.
     type RuntimeClassApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type RuntimeClassApplyConfiguration struct {
     	Spec                             *RuntimeClassSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// RuntimeClass constructs an declarative configuration of the RuntimeClass type for use with
    +// RuntimeClass constructs a declarative configuration of the RuntimeClass type for use with
     // apply.
     func RuntimeClass(name string) *RuntimeClassApplyConfiguration {
     	b := &RuntimeClassApplyConfiguration{}
    @@ -84,7 +84,7 @@ func extractRuntimeClass(runtimeClass *nodev1alpha1.RuntimeClass, fieldManager s
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithKind(value string) *RuntimeClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *RuntimeClassApplyConfiguration) WithKind(value string) *RuntimeClassApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithAPIVersion(value string) *RuntimeClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *RuntimeClassApplyConfiguration) WithAPIVersion(value string) *RuntimeCl
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithName(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *RuntimeClassApplyConfiguration) WithName(value string) *RuntimeClassApp
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithGenerateName(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *RuntimeClassApplyConfiguration) WithGenerateName(value string) *Runtime
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithNamespace(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *RuntimeClassApplyConfiguration) WithNamespace(value string) *RuntimeCla
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithUID(value types.UID) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *RuntimeClassApplyConfiguration) WithUID(value types.UID) *RuntimeClassA
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithResourceVersion(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,7 +146,7 @@ func (b *RuntimeClassApplyConfiguration) WithResourceVersion(value string) *Runt
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithGeneration(value int64) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *RuntimeClassApplyConfiguration) WithGeneration(value int64) *RuntimeCla
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -164,7 +164,7 @@ func (b *RuntimeClassApplyConfiguration) WithCreationTimestamp(value metav1.Time
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *RuntimeClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *RuntimeClassApplyConfiguration) WithDeletionGracePeriodSeconds(value in
     // overwriting an existing map entries in Labels field with the same key.
     func (b *RuntimeClassApplyConfiguration) WithLabels(entries map[string]string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *RuntimeClassApplyConfiguration) WithLabels(entries map[string]string) *
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *RuntimeClassApplyConfiguration) WithAnnotations(entries map[string]string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,7 +216,7 @@ func (b *RuntimeClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,7 +227,7 @@ func (b *RuntimeClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     func (b *RuntimeClassApplyConfiguration) WithFinalizers(values ...string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -245,3 +245,9 @@ func (b *RuntimeClassApplyConfiguration) WithSpec(value *RuntimeClassSpecApplyCo
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *RuntimeClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/runtimeclassspec.go b/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/runtimeclassspec.go
    index 86e8585ad36f..1aa43eb13203 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/runtimeclassspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/runtimeclassspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1alpha1
     
    -// RuntimeClassSpecApplyConfiguration represents an declarative configuration of the RuntimeClassSpec type for use
    +// RuntimeClassSpecApplyConfiguration represents a declarative configuration of the RuntimeClassSpec type for use
     // with apply.
     type RuntimeClassSpecApplyConfiguration struct {
     	RuntimeHandler *string                       `json:"runtimeHandler,omitempty"`
    @@ -26,7 +26,7 @@ type RuntimeClassSpecApplyConfiguration struct {
     	Scheduling     *SchedulingApplyConfiguration `json:"scheduling,omitempty"`
     }
     
    -// RuntimeClassSpecApplyConfiguration constructs an declarative configuration of the RuntimeClassSpec type for use with
    +// RuntimeClassSpecApplyConfiguration constructs a declarative configuration of the RuntimeClassSpec type for use with
     // apply.
     func RuntimeClassSpec() *RuntimeClassSpecApplyConfiguration {
     	return &RuntimeClassSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/scheduling.go b/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/scheduling.go
    index d4117d6bc7b8..6ce49ad8664f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/scheduling.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/node/v1alpha1/scheduling.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// SchedulingApplyConfiguration represents an declarative configuration of the Scheduling type for use
    +// SchedulingApplyConfiguration represents a declarative configuration of the Scheduling type for use
     // with apply.
     type SchedulingApplyConfiguration struct {
     	NodeSelector map[string]string                 `json:"nodeSelector,omitempty"`
     	Tolerations  []v1.TolerationApplyConfiguration `json:"tolerations,omitempty"`
     }
     
    -// SchedulingApplyConfiguration constructs an declarative configuration of the Scheduling type for use with
    +// SchedulingApplyConfiguration constructs a declarative configuration of the Scheduling type for use with
     // apply.
     func Scheduling() *SchedulingApplyConfiguration {
     	return &SchedulingApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/overhead.go b/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/overhead.go
    index e8c489550558..cf767e702eee 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/overhead.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/overhead.go
    @@ -22,13 +22,13 @@ import (
     	v1 "k8s.io/api/core/v1"
     )
     
    -// OverheadApplyConfiguration represents an declarative configuration of the Overhead type for use
    +// OverheadApplyConfiguration represents a declarative configuration of the Overhead type for use
     // with apply.
     type OverheadApplyConfiguration struct {
     	PodFixed *v1.ResourceList `json:"podFixed,omitempty"`
     }
     
    -// OverheadApplyConfiguration constructs an declarative configuration of the Overhead type for use with
    +// OverheadApplyConfiguration constructs a declarative configuration of the Overhead type for use with
     // apply.
     func Overhead() *OverheadApplyConfiguration {
     	return &OverheadApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/runtimeclass.go b/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/runtimeclass.go
    index f5487665c32a..b17de67639ac 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/runtimeclass.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// RuntimeClassApplyConfiguration represents an declarative configuration of the RuntimeClass type for use
    +// RuntimeClassApplyConfiguration represents a declarative configuration of the RuntimeClass type for use
     // with apply.
     type RuntimeClassApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -37,7 +37,7 @@ type RuntimeClassApplyConfiguration struct {
     	Scheduling                       *SchedulingApplyConfiguration `json:"scheduling,omitempty"`
     }
     
    -// RuntimeClass constructs an declarative configuration of the RuntimeClass type for use with
    +// RuntimeClass constructs a declarative configuration of the RuntimeClass type for use with
     // apply.
     func RuntimeClass(name string) *RuntimeClassApplyConfiguration {
     	b := &RuntimeClassApplyConfiguration{}
    @@ -86,7 +86,7 @@ func extractRuntimeClass(runtimeClass *nodev1beta1.RuntimeClass, fieldManager st
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithKind(value string) *RuntimeClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *RuntimeClassApplyConfiguration) WithKind(value string) *RuntimeClassApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithAPIVersion(value string) *RuntimeClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *RuntimeClassApplyConfiguration) WithAPIVersion(value string) *RuntimeCl
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithName(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *RuntimeClassApplyConfiguration) WithName(value string) *RuntimeClassApp
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithGenerateName(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *RuntimeClassApplyConfiguration) WithGenerateName(value string) *Runtime
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithNamespace(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *RuntimeClassApplyConfiguration) WithNamespace(value string) *RuntimeCla
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithUID(value types.UID) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *RuntimeClassApplyConfiguration) WithUID(value types.UID) *RuntimeClassA
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithResourceVersion(value string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,7 +148,7 @@ func (b *RuntimeClassApplyConfiguration) WithResourceVersion(value string) *Runt
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithGeneration(value int64) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -157,7 +157,7 @@ func (b *RuntimeClassApplyConfiguration) WithGeneration(value int64) *RuntimeCla
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -166,7 +166,7 @@ func (b *RuntimeClassApplyConfiguration) WithCreationTimestamp(value metav1.Time
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *RuntimeClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *RuntimeClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *RuntimeClassApplyConfiguration) WithDeletionGracePeriodSeconds(value in
     // overwriting an existing map entries in Labels field with the same key.
     func (b *RuntimeClassApplyConfiguration) WithLabels(entries map[string]string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *RuntimeClassApplyConfiguration) WithLabels(entries map[string]string) *
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *RuntimeClassApplyConfiguration) WithAnnotations(entries map[string]string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -218,7 +218,7 @@ func (b *RuntimeClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,7 +229,7 @@ func (b *RuntimeClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     func (b *RuntimeClassApplyConfiguration) WithFinalizers(values ...string) *RuntimeClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -263,3 +263,9 @@ func (b *RuntimeClassApplyConfiguration) WithScheduling(value *SchedulingApplyCo
     	b.Scheduling = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *RuntimeClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/scheduling.go b/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/scheduling.go
    index 10831d0ff561..23d0b97527dc 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/scheduling.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/node/v1beta1/scheduling.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// SchedulingApplyConfiguration represents an declarative configuration of the Scheduling type for use
    +// SchedulingApplyConfiguration represents a declarative configuration of the Scheduling type for use
     // with apply.
     type SchedulingApplyConfiguration struct {
     	NodeSelector map[string]string                 `json:"nodeSelector,omitempty"`
     	Tolerations  []v1.TolerationApplyConfiguration `json:"tolerations,omitempty"`
     }
     
    -// SchedulingApplyConfiguration constructs an declarative configuration of the Scheduling type for use with
    +// SchedulingApplyConfiguration constructs a declarative configuration of the Scheduling type for use with
     // apply.
     func Scheduling() *SchedulingApplyConfiguration {
     	return &SchedulingApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/policy/v1/eviction.go b/vendor/k8s.io/client-go/applyconfigurations/policy/v1/eviction.go
    index 76a9533a6fd2..079c6f3bcf79 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/policy/v1/eviction.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/policy/v1/eviction.go
    @@ -20,22 +20,22 @@ package v1
     
     import (
     	policyv1 "k8s.io/api/policy/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// EvictionApplyConfiguration represents an declarative configuration of the Eviction type for use
    +// EvictionApplyConfiguration represents a declarative configuration of the Eviction type for use
     // with apply.
     type EvictionApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	DeleteOptions                    *v1.DeleteOptionsApplyConfiguration `json:"deleteOptions,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	DeleteOptions                        *metav1.DeleteOptionsApplyConfiguration `json:"deleteOptions,omitempty"`
     }
     
    -// Eviction constructs an declarative configuration of the Eviction type for use with
    +// Eviction constructs a declarative configuration of the Eviction type for use with
     // apply.
     func Eviction(name, namespace string) *EvictionApplyConfiguration {
     	b := &EvictionApplyConfiguration{}
    @@ -86,7 +86,7 @@ func extractEviction(eviction *policyv1.Eviction, fieldManager string, subresour
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithKind(value string) *EvictionApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *EvictionApplyConfiguration) WithKind(value string) *EvictionApplyConfig
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithAPIVersion(value string) *EvictionApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *EvictionApplyConfiguration) WithAPIVersion(value string) *EvictionApply
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithName(value string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *EvictionApplyConfiguration) WithName(value string) *EvictionApplyConfig
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithGenerateName(value string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *EvictionApplyConfiguration) WithGenerateName(value string) *EvictionApp
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithNamespace(value string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *EvictionApplyConfiguration) WithNamespace(value string) *EvictionApplyC
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithUID(value types.UID) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *EvictionApplyConfiguration) WithUID(value types.UID) *EvictionApplyConf
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithResourceVersion(value string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,25 +148,25 @@ func (b *EvictionApplyConfiguration) WithResourceVersion(value string) *Eviction
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithGeneration(value int64) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *EvictionApplyConfiguration) WithCreationTimestamp(value metav1.Time) *EvictionApplyConfiguration {
    +func (b *EvictionApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *EvictionApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *EvictionApplyConfiguration {
    +func (b *EvictionApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *EvictionApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *E
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *EvictionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64)
     // overwriting an existing map entries in Labels field with the same key.
     func (b *EvictionApplyConfiguration) WithLabels(entries map[string]string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *EvictionApplyConfiguration) WithLabels(entries map[string]string) *Evic
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *EvictionApplyConfiguration) WithAnnotations(entries map[string]string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -212,13 +212,13 @@ func (b *EvictionApplyConfiguration) WithAnnotations(entries map[string]string)
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *EvictionApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *EvictionApplyConfiguration {
    +func (b *EvictionApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,21 +229,27 @@ func (b *EvictionApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefe
     func (b *EvictionApplyConfiguration) WithFinalizers(values ...string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *EvictionApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
     // WithDeleteOptions sets the DeleteOptions field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeleteOptions field is set to the value of the last call.
    -func (b *EvictionApplyConfiguration) WithDeleteOptions(value *v1.DeleteOptionsApplyConfiguration) *EvictionApplyConfiguration {
    +func (b *EvictionApplyConfiguration) WithDeleteOptions(value *metav1.DeleteOptionsApplyConfiguration) *EvictionApplyConfiguration {
     	b.DeleteOptions = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *EvictionApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudget.go b/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudget.go
    index 6b547c26953a..82ec5a0826be 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudget.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudget.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apipolicyv1 "k8s.io/api/policy/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	policyv1 "k8s.io/api/policy/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodDisruptionBudgetApplyConfiguration represents an declarative configuration of the PodDisruptionBudget type for use
    +// PodDisruptionBudgetApplyConfiguration represents a declarative configuration of the PodDisruptionBudget type for use
     // with apply.
     type PodDisruptionBudgetApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *PodDisruptionBudgetSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *PodDisruptionBudgetStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *PodDisruptionBudgetSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *PodDisruptionBudgetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// PodDisruptionBudget constructs an declarative configuration of the PodDisruptionBudget type for use with
    +// PodDisruptionBudget constructs a declarative configuration of the PodDisruptionBudget type for use with
     // apply.
     func PodDisruptionBudget(name, namespace string) *PodDisruptionBudgetApplyConfiguration {
     	b := &PodDisruptionBudgetApplyConfiguration{}
    @@ -58,18 +58,18 @@ func PodDisruptionBudget(name, namespace string) *PodDisruptionBudgetApplyConfig
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractPodDisruptionBudget(podDisruptionBudget *apipolicyv1.PodDisruptionBudget, fieldManager string) (*PodDisruptionBudgetApplyConfiguration, error) {
    +func ExtractPodDisruptionBudget(podDisruptionBudget *policyv1.PodDisruptionBudget, fieldManager string) (*PodDisruptionBudgetApplyConfiguration, error) {
     	return extractPodDisruptionBudget(podDisruptionBudget, fieldManager, "")
     }
     
     // ExtractPodDisruptionBudgetStatus is the same as ExtractPodDisruptionBudget except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractPodDisruptionBudgetStatus(podDisruptionBudget *apipolicyv1.PodDisruptionBudget, fieldManager string) (*PodDisruptionBudgetApplyConfiguration, error) {
    +func ExtractPodDisruptionBudgetStatus(podDisruptionBudget *policyv1.PodDisruptionBudget, fieldManager string) (*PodDisruptionBudgetApplyConfiguration, error) {
     	return extractPodDisruptionBudget(podDisruptionBudget, fieldManager, "status")
     }
     
    -func extractPodDisruptionBudget(podDisruptionBudget *apipolicyv1.PodDisruptionBudget, fieldManager string, subresource string) (*PodDisruptionBudgetApplyConfiguration, error) {
    +func extractPodDisruptionBudget(podDisruptionBudget *policyv1.PodDisruptionBudget, fieldManager string, subresource string) (*PodDisruptionBudgetApplyConfiguration, error) {
     	b := &PodDisruptionBudgetApplyConfiguration{}
     	err := managedfields.ExtractInto(podDisruptionBudget, internal.Parser().Type("io.k8s.api.policy.v1.PodDisruptionBudget"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractPodDisruptionBudget(podDisruptionBudget *apipolicyv1.PodDisruptionBu
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithKind(value string) *PodDisruptionBudgetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithKind(value string) *PodDisru
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithAPIVersion(value string) *PodDisruptionBudgetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithAPIVersion(value string) *Po
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithName(value string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithName(value string) *PodDisru
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithGenerateName(value string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithGenerateName(value string) *
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithNamespace(value string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithNamespace(value string) *Pod
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithUID(value types.UID) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithUID(value types.UID) *PodDis
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithResourceVersion(value string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithResourceVersion(value string
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithGeneration(value int64) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *PodDisruptionBudgetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PodDisruptionBudgetApplyConfiguration {
    +func (b *PodDisruptionBudgetApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *PodDisruptionBudgetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PodDisruptionBudgetApplyConfiguration {
    +func (b *PodDisruptionBudgetApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithDeletionTimestamp(value meta
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithDeletionGracePeriodSeconds(v
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PodDisruptionBudgetApplyConfiguration) WithLabels(entries map[string]string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithLabels(entries map[string]st
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PodDisruptionBudgetApplyConfiguration) WithAnnotations(entries map[string]string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithAnnotations(entries map[stri
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *PodDisruptionBudgetApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *PodDisruptionBudgetApplyConfiguration {
    +func (b *PodDisruptionBudgetApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithOwnerReferences(values ...*v
     func (b *PodDisruptionBudgetApplyConfiguration) WithFinalizers(values ...string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *PodDisruptionBudgetApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -256,3 +256,9 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithStatus(value *PodDisruptionB
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PodDisruptionBudgetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudgetspec.go b/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudgetspec.go
    index 67d9ba6bba60..3c66739bd5c3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudgetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudgetspec.go
    @@ -21,19 +21,19 @@ package v1
     import (
     	policyv1 "k8s.io/api/policy/v1"
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodDisruptionBudgetSpecApplyConfiguration represents an declarative configuration of the PodDisruptionBudgetSpec type for use
    +// PodDisruptionBudgetSpecApplyConfiguration represents a declarative configuration of the PodDisruptionBudgetSpec type for use
     // with apply.
     type PodDisruptionBudgetSpecApplyConfiguration struct {
     	MinAvailable               *intstr.IntOrString                      `json:"minAvailable,omitempty"`
    -	Selector                   *v1.LabelSelectorApplyConfiguration      `json:"selector,omitempty"`
    +	Selector                   *metav1.LabelSelectorApplyConfiguration  `json:"selector,omitempty"`
     	MaxUnavailable             *intstr.IntOrString                      `json:"maxUnavailable,omitempty"`
     	UnhealthyPodEvictionPolicy *policyv1.UnhealthyPodEvictionPolicyType `json:"unhealthyPodEvictionPolicy,omitempty"`
     }
     
    -// PodDisruptionBudgetSpecApplyConfiguration constructs an declarative configuration of the PodDisruptionBudgetSpec type for use with
    +// PodDisruptionBudgetSpecApplyConfiguration constructs a declarative configuration of the PodDisruptionBudgetSpec type for use with
     // apply.
     func PodDisruptionBudgetSpec() *PodDisruptionBudgetSpecApplyConfiguration {
     	return &PodDisruptionBudgetSpecApplyConfiguration{}
    @@ -50,7 +50,7 @@ func (b *PodDisruptionBudgetSpecApplyConfiguration) WithMinAvailable(value intst
     // WithSelector sets the Selector field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Selector field is set to the value of the last call.
    -func (b *PodDisruptionBudgetSpecApplyConfiguration) WithSelector(value *v1.LabelSelectorApplyConfiguration) *PodDisruptionBudgetSpecApplyConfiguration {
    +func (b *PodDisruptionBudgetSpecApplyConfiguration) WithSelector(value *metav1.LabelSelectorApplyConfiguration) *PodDisruptionBudgetSpecApplyConfiguration {
     	b.Selector = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudgetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudgetstatus.go
    index 2dd427b9e182..d3c44d90ab11 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudgetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/policy/v1/poddisruptionbudgetstatus.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	applyconfigurationsmetav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodDisruptionBudgetStatusApplyConfiguration represents an declarative configuration of the PodDisruptionBudgetStatus type for use
    +// PodDisruptionBudgetStatusApplyConfiguration represents a declarative configuration of the PodDisruptionBudgetStatus type for use
     // with apply.
     type PodDisruptionBudgetStatusApplyConfiguration struct {
    -	ObservedGeneration *int64                               `json:"observedGeneration,omitempty"`
    -	DisruptedPods      map[string]v1.Time                   `json:"disruptedPods,omitempty"`
    -	DisruptionsAllowed *int32                               `json:"disruptionsAllowed,omitempty"`
    -	CurrentHealthy     *int32                               `json:"currentHealthy,omitempty"`
    -	DesiredHealthy     *int32                               `json:"desiredHealthy,omitempty"`
    -	ExpectedPods       *int32                               `json:"expectedPods,omitempty"`
    -	Conditions         []metav1.ConditionApplyConfiguration `json:"conditions,omitempty"`
    +	ObservedGeneration *int64                                                  `json:"observedGeneration,omitempty"`
    +	DisruptedPods      map[string]metav1.Time                                  `json:"disruptedPods,omitempty"`
    +	DisruptionsAllowed *int32                                                  `json:"disruptionsAllowed,omitempty"`
    +	CurrentHealthy     *int32                                                  `json:"currentHealthy,omitempty"`
    +	DesiredHealthy     *int32                                                  `json:"desiredHealthy,omitempty"`
    +	ExpectedPods       *int32                                                  `json:"expectedPods,omitempty"`
    +	Conditions         []applyconfigurationsmetav1.ConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// PodDisruptionBudgetStatusApplyConfiguration constructs an declarative configuration of the PodDisruptionBudgetStatus type for use with
    +// PodDisruptionBudgetStatusApplyConfiguration constructs a declarative configuration of the PodDisruptionBudgetStatus type for use with
     // apply.
     func PodDisruptionBudgetStatus() *PodDisruptionBudgetStatusApplyConfiguration {
     	return &PodDisruptionBudgetStatusApplyConfiguration{}
    @@ -53,9 +53,9 @@ func (b *PodDisruptionBudgetStatusApplyConfiguration) WithObservedGeneration(val
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, the entries provided by each call will be put on the DisruptedPods field,
     // overwriting an existing map entries in DisruptedPods field with the same key.
    -func (b *PodDisruptionBudgetStatusApplyConfiguration) WithDisruptedPods(entries map[string]v1.Time) *PodDisruptionBudgetStatusApplyConfiguration {
    +func (b *PodDisruptionBudgetStatusApplyConfiguration) WithDisruptedPods(entries map[string]metav1.Time) *PodDisruptionBudgetStatusApplyConfiguration {
     	if b.DisruptedPods == nil && len(entries) > 0 {
    -		b.DisruptedPods = make(map[string]v1.Time, len(entries))
    +		b.DisruptedPods = make(map[string]metav1.Time, len(entries))
     	}
     	for k, v := range entries {
     		b.DisruptedPods[k] = v
    @@ -98,7 +98,7 @@ func (b *PodDisruptionBudgetStatusApplyConfiguration) WithExpectedPods(value int
     // WithConditions adds the given value to the Conditions field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Conditions field.
    -func (b *PodDisruptionBudgetStatusApplyConfiguration) WithConditions(values ...*metav1.ConditionApplyConfiguration) *PodDisruptionBudgetStatusApplyConfiguration {
    +func (b *PodDisruptionBudgetStatusApplyConfiguration) WithConditions(values ...*applyconfigurationsmetav1.ConditionApplyConfiguration) *PodDisruptionBudgetStatusApplyConfiguration {
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithConditions")
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/eviction.go b/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/eviction.go
    index d2a361d1b577..0b5945935a1b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/eviction.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/eviction.go
    @@ -19,7 +19,7 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/policy/v1beta1"
    +	policyv1beta1 "k8s.io/api/policy/v1beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// EvictionApplyConfiguration represents an declarative configuration of the Eviction type for use
    +// EvictionApplyConfiguration represents a declarative configuration of the Eviction type for use
     // with apply.
     type EvictionApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type EvictionApplyConfiguration struct {
     	DeleteOptions                    *v1.DeleteOptionsApplyConfiguration `json:"deleteOptions,omitempty"`
     }
     
    -// Eviction constructs an declarative configuration of the Eviction type for use with
    +// Eviction constructs a declarative configuration of the Eviction type for use with
     // apply.
     func Eviction(name, namespace string) *EvictionApplyConfiguration {
     	b := &EvictionApplyConfiguration{}
    @@ -57,18 +57,18 @@ func Eviction(name, namespace string) *EvictionApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractEviction(eviction *v1beta1.Eviction, fieldManager string) (*EvictionApplyConfiguration, error) {
    +func ExtractEviction(eviction *policyv1beta1.Eviction, fieldManager string) (*EvictionApplyConfiguration, error) {
     	return extractEviction(eviction, fieldManager, "")
     }
     
     // ExtractEvictionStatus is the same as ExtractEviction except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractEvictionStatus(eviction *v1beta1.Eviction, fieldManager string) (*EvictionApplyConfiguration, error) {
    +func ExtractEvictionStatus(eviction *policyv1beta1.Eviction, fieldManager string) (*EvictionApplyConfiguration, error) {
     	return extractEviction(eviction, fieldManager, "status")
     }
     
    -func extractEviction(eviction *v1beta1.Eviction, fieldManager string, subresource string) (*EvictionApplyConfiguration, error) {
    +func extractEviction(eviction *policyv1beta1.Eviction, fieldManager string, subresource string) (*EvictionApplyConfiguration, error) {
     	b := &EvictionApplyConfiguration{}
     	err := managedfields.ExtractInto(eviction, internal.Parser().Type("io.k8s.api.policy.v1beta1.Eviction"), fieldManager, b, subresource)
     	if err != nil {
    @@ -86,7 +86,7 @@ func extractEviction(eviction *v1beta1.Eviction, fieldManager string, subresourc
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithKind(value string) *EvictionApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *EvictionApplyConfiguration) WithKind(value string) *EvictionApplyConfig
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithAPIVersion(value string) *EvictionApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *EvictionApplyConfiguration) WithAPIVersion(value string) *EvictionApply
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithName(value string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *EvictionApplyConfiguration) WithName(value string) *EvictionApplyConfig
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithGenerateName(value string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *EvictionApplyConfiguration) WithGenerateName(value string) *EvictionApp
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithNamespace(value string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *EvictionApplyConfiguration) WithNamespace(value string) *EvictionApplyC
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithUID(value types.UID) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *EvictionApplyConfiguration) WithUID(value types.UID) *EvictionApplyConf
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithResourceVersion(value string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,7 +148,7 @@ func (b *EvictionApplyConfiguration) WithResourceVersion(value string) *Eviction
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithGeneration(value int64) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -157,7 +157,7 @@ func (b *EvictionApplyConfiguration) WithGeneration(value int64) *EvictionApplyC
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithCreationTimestamp(value metav1.Time) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -166,7 +166,7 @@ func (b *EvictionApplyConfiguration) WithCreationTimestamp(value metav1.Time) *E
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *EvictionApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *E
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *EvictionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *EvictionApplyConfiguration) WithDeletionGracePeriodSeconds(value int64)
     // overwriting an existing map entries in Labels field with the same key.
     func (b *EvictionApplyConfiguration) WithLabels(entries map[string]string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *EvictionApplyConfiguration) WithLabels(entries map[string]string) *Evic
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *EvictionApplyConfiguration) WithAnnotations(entries map[string]string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -218,7 +218,7 @@ func (b *EvictionApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefe
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,7 +229,7 @@ func (b *EvictionApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefe
     func (b *EvictionApplyConfiguration) WithFinalizers(values ...string) *EvictionApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -247,3 +247,9 @@ func (b *EvictionApplyConfiguration) WithDeleteOptions(value *v1.DeleteOptionsAp
     	b.DeleteOptions = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *EvictionApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudget.go b/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudget.go
    index cef51a279cc3..7743da76a875 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudget.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudget.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodDisruptionBudgetApplyConfiguration represents an declarative configuration of the PodDisruptionBudget type for use
    +// PodDisruptionBudgetApplyConfiguration represents a declarative configuration of the PodDisruptionBudget type for use
     // with apply.
     type PodDisruptionBudgetApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type PodDisruptionBudgetApplyConfiguration struct {
     	Status                           *PodDisruptionBudgetStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// PodDisruptionBudget constructs an declarative configuration of the PodDisruptionBudget type for use with
    +// PodDisruptionBudget constructs a declarative configuration of the PodDisruptionBudget type for use with
     // apply.
     func PodDisruptionBudget(name, namespace string) *PodDisruptionBudgetApplyConfiguration {
     	b := &PodDisruptionBudgetApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractPodDisruptionBudget(podDisruptionBudget *policyv1beta1.PodDisruption
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithKind(value string) *PodDisruptionBudgetApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithKind(value string) *PodDisru
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithAPIVersion(value string) *PodDisruptionBudgetApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithAPIVersion(value string) *Po
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithName(value string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithName(value string) *PodDisru
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithGenerateName(value string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithGenerateName(value string) *
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithNamespace(value string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithNamespace(value string) *Pod
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithUID(value types.UID) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithUID(value types.UID) *PodDis
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithResourceVersion(value string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithResourceVersion(value string
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithGeneration(value int64) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithGeneration(value int64) *Pod
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithCreationTimestamp(value meta
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithDeletionTimestamp(value meta
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PodDisruptionBudgetApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithDeletionGracePeriodSeconds(v
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PodDisruptionBudgetApplyConfiguration) WithLabels(entries map[string]string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithLabels(entries map[string]st
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PodDisruptionBudgetApplyConfiguration) WithAnnotations(entries map[string]string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithOwnerReferences(values ...*v
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithOwnerReferences(values ...*v
     func (b *PodDisruptionBudgetApplyConfiguration) WithFinalizers(values ...string) *PodDisruptionBudgetApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *PodDisruptionBudgetApplyConfiguration) WithStatus(value *PodDisruptionB
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PodDisruptionBudgetApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudgetspec.go b/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudgetspec.go
    index 0ba3ea1c2e6f..d8fecf7a36ea 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudgetspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudgetspec.go
    @@ -19,21 +19,21 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/policy/v1beta1"
    +	policyv1beta1 "k8s.io/api/policy/v1beta1"
     	intstr "k8s.io/apimachinery/pkg/util/intstr"
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodDisruptionBudgetSpecApplyConfiguration represents an declarative configuration of the PodDisruptionBudgetSpec type for use
    +// PodDisruptionBudgetSpecApplyConfiguration represents a declarative configuration of the PodDisruptionBudgetSpec type for use
     // with apply.
     type PodDisruptionBudgetSpecApplyConfiguration struct {
    -	MinAvailable               *intstr.IntOrString                     `json:"minAvailable,omitempty"`
    -	Selector                   *v1.LabelSelectorApplyConfiguration     `json:"selector,omitempty"`
    -	MaxUnavailable             *intstr.IntOrString                     `json:"maxUnavailable,omitempty"`
    -	UnhealthyPodEvictionPolicy *v1beta1.UnhealthyPodEvictionPolicyType `json:"unhealthyPodEvictionPolicy,omitempty"`
    +	MinAvailable               *intstr.IntOrString                           `json:"minAvailable,omitempty"`
    +	Selector                   *v1.LabelSelectorApplyConfiguration           `json:"selector,omitempty"`
    +	MaxUnavailable             *intstr.IntOrString                           `json:"maxUnavailable,omitempty"`
    +	UnhealthyPodEvictionPolicy *policyv1beta1.UnhealthyPodEvictionPolicyType `json:"unhealthyPodEvictionPolicy,omitempty"`
     }
     
    -// PodDisruptionBudgetSpecApplyConfiguration constructs an declarative configuration of the PodDisruptionBudgetSpec type for use with
    +// PodDisruptionBudgetSpecApplyConfiguration constructs a declarative configuration of the PodDisruptionBudgetSpec type for use with
     // apply.
     func PodDisruptionBudgetSpec() *PodDisruptionBudgetSpecApplyConfiguration {
     	return &PodDisruptionBudgetSpecApplyConfiguration{}
    @@ -66,7 +66,7 @@ func (b *PodDisruptionBudgetSpecApplyConfiguration) WithMaxUnavailable(value int
     // WithUnhealthyPodEvictionPolicy sets the UnhealthyPodEvictionPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the UnhealthyPodEvictionPolicy field is set to the value of the last call.
    -func (b *PodDisruptionBudgetSpecApplyConfiguration) WithUnhealthyPodEvictionPolicy(value v1beta1.UnhealthyPodEvictionPolicyType) *PodDisruptionBudgetSpecApplyConfiguration {
    +func (b *PodDisruptionBudgetSpecApplyConfiguration) WithUnhealthyPodEvictionPolicy(value policyv1beta1.UnhealthyPodEvictionPolicyType) *PodDisruptionBudgetSpecApplyConfiguration {
     	b.UnhealthyPodEvictionPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudgetstatus.go b/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudgetstatus.go
    index d0813590e11a..e66a7fb3861c 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudgetstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/policy/v1beta1/poddisruptionbudgetstatus.go
    @@ -23,7 +23,7 @@ import (
     	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PodDisruptionBudgetStatusApplyConfiguration represents an declarative configuration of the PodDisruptionBudgetStatus type for use
    +// PodDisruptionBudgetStatusApplyConfiguration represents a declarative configuration of the PodDisruptionBudgetStatus type for use
     // with apply.
     type PodDisruptionBudgetStatusApplyConfiguration struct {
     	ObservedGeneration *int64                               `json:"observedGeneration,omitempty"`
    @@ -35,7 +35,7 @@ type PodDisruptionBudgetStatusApplyConfiguration struct {
     	Conditions         []metav1.ConditionApplyConfiguration `json:"conditions,omitempty"`
     }
     
    -// PodDisruptionBudgetStatusApplyConfiguration constructs an declarative configuration of the PodDisruptionBudgetStatus type for use with
    +// PodDisruptionBudgetStatusApplyConfiguration constructs a declarative configuration of the PodDisruptionBudgetStatus type for use with
     // apply.
     func PodDisruptionBudgetStatus() *PodDisruptionBudgetStatusApplyConfiguration {
     	return &PodDisruptionBudgetStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/aggregationrule.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/aggregationrule.go
    index fda9205c2100..b7049a8efae1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/aggregationrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/aggregationrule.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// AggregationRuleApplyConfiguration represents an declarative configuration of the AggregationRule type for use
    +// AggregationRuleApplyConfiguration represents a declarative configuration of the AggregationRule type for use
     // with apply.
     type AggregationRuleApplyConfiguration struct {
    -	ClusterRoleSelectors []v1.LabelSelectorApplyConfiguration `json:"clusterRoleSelectors,omitempty"`
    +	ClusterRoleSelectors []metav1.LabelSelectorApplyConfiguration `json:"clusterRoleSelectors,omitempty"`
     }
     
    -// AggregationRuleApplyConfiguration constructs an declarative configuration of the AggregationRule type for use with
    +// AggregationRuleApplyConfiguration constructs a declarative configuration of the AggregationRule type for use with
     // apply.
     func AggregationRule() *AggregationRuleApplyConfiguration {
     	return &AggregationRuleApplyConfiguration{}
    @@ -37,7 +37,7 @@ func AggregationRule() *AggregationRuleApplyConfiguration {
     // WithClusterRoleSelectors adds the given value to the ClusterRoleSelectors field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the ClusterRoleSelectors field.
    -func (b *AggregationRuleApplyConfiguration) WithClusterRoleSelectors(values ...*v1.LabelSelectorApplyConfiguration) *AggregationRuleApplyConfiguration {
    +func (b *AggregationRuleApplyConfiguration) WithClusterRoleSelectors(values ...*metav1.LabelSelectorApplyConfiguration) *AggregationRuleApplyConfiguration {
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithClusterRoleSelectors")
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/clusterrole.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/clusterrole.go
    index 3a5660fe1963..9b46fdbe917b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/clusterrole.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apirbacv1 "k8s.io/api/rbac/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	rbacv1 "k8s.io/api/rbac/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ClusterRoleApplyConfiguration represents an declarative configuration of the ClusterRole type for use
    +// ClusterRoleApplyConfiguration represents a declarative configuration of the ClusterRole type for use
     // with apply.
     type ClusterRoleApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Rules                            []PolicyRuleApplyConfiguration     `json:"rules,omitempty"`
    -	AggregationRule                  *AggregationRuleApplyConfiguration `json:"aggregationRule,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Rules                                []PolicyRuleApplyConfiguration     `json:"rules,omitempty"`
    +	AggregationRule                      *AggregationRuleApplyConfiguration `json:"aggregationRule,omitempty"`
     }
     
    -// ClusterRole constructs an declarative configuration of the ClusterRole type for use with
    +// ClusterRole constructs a declarative configuration of the ClusterRole type for use with
     // apply.
     func ClusterRole(name string) *ClusterRoleApplyConfiguration {
     	b := &ClusterRoleApplyConfiguration{}
    @@ -57,18 +57,18 @@ func ClusterRole(name string) *ClusterRoleApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractClusterRole(clusterRole *apirbacv1.ClusterRole, fieldManager string) (*ClusterRoleApplyConfiguration, error) {
    +func ExtractClusterRole(clusterRole *rbacv1.ClusterRole, fieldManager string) (*ClusterRoleApplyConfiguration, error) {
     	return extractClusterRole(clusterRole, fieldManager, "")
     }
     
     // ExtractClusterRoleStatus is the same as ExtractClusterRole except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractClusterRoleStatus(clusterRole *apirbacv1.ClusterRole, fieldManager string) (*ClusterRoleApplyConfiguration, error) {
    +func ExtractClusterRoleStatus(clusterRole *rbacv1.ClusterRole, fieldManager string) (*ClusterRoleApplyConfiguration, error) {
     	return extractClusterRole(clusterRole, fieldManager, "status")
     }
     
    -func extractClusterRole(clusterRole *apirbacv1.ClusterRole, fieldManager string, subresource string) (*ClusterRoleApplyConfiguration, error) {
    +func extractClusterRole(clusterRole *rbacv1.ClusterRole, fieldManager string, subresource string) (*ClusterRoleApplyConfiguration, error) {
     	b := &ClusterRoleApplyConfiguration{}
     	err := managedfields.ExtractInto(clusterRole, internal.Parser().Type("io.k8s.api.rbac.v1.ClusterRole"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractClusterRole(clusterRole *apirbacv1.ClusterRole, fieldManager string,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithKind(value string) *ClusterRoleApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *ClusterRoleApplyConfiguration) WithKind(value string) *ClusterRoleApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithAPIVersion(value string) *ClusterRoleApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *ClusterRoleApplyConfiguration) WithAPIVersion(value string) *ClusterRol
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithName(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *ClusterRoleApplyConfiguration) WithName(value string) *ClusterRoleApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithGenerateName(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *ClusterRoleApplyConfiguration) WithGenerateName(value string) *ClusterR
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithNamespace(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *ClusterRoleApplyConfiguration) WithNamespace(value string) *ClusterRole
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithUID(value types.UID) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *ClusterRoleApplyConfiguration) WithUID(value types.UID) *ClusterRoleApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithResourceVersion(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,25 +147,25 @@ func (b *ClusterRoleApplyConfiguration) WithResourceVersion(value string) *Clust
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithGeneration(value int64) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ClusterRoleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ClusterRoleApplyConfiguration {
    +func (b *ClusterRoleApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ClusterRoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ClusterRoleApplyConfiguration {
    +func (b *ClusterRoleApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *ClusterRoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *ClusterRoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ClusterRoleApplyConfiguration) WithLabels(entries map[string]string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *ClusterRoleApplyConfiguration) WithLabels(entries map[string]string) *C
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ClusterRoleApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -211,13 +211,13 @@ func (b *ClusterRoleApplyConfiguration) WithAnnotations(entries map[string]strin
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ClusterRoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ClusterRoleApplyConfiguration {
    +func (b *ClusterRoleApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,14 +228,14 @@ func (b *ClusterRoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *ClusterRoleApplyConfiguration) WithFinalizers(values ...string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ClusterRoleApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -259,3 +259,9 @@ func (b *ClusterRoleApplyConfiguration) WithAggregationRule(value *AggregationRu
     	b.AggregationRule = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ClusterRoleApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/clusterrolebinding.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/clusterrolebinding.go
    index 625ad72c44e6..7775bff0f891 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/clusterrolebinding.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apirbacv1 "k8s.io/api/rbac/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	rbacv1 "k8s.io/api/rbac/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ClusterRoleBindingApplyConfiguration represents an declarative configuration of the ClusterRoleBinding type for use
    +// ClusterRoleBindingApplyConfiguration represents a declarative configuration of the ClusterRoleBinding type for use
     // with apply.
     type ClusterRoleBindingApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Subjects                         []SubjectApplyConfiguration `json:"subjects,omitempty"`
    -	RoleRef                          *RoleRefApplyConfiguration  `json:"roleRef,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Subjects                             []SubjectApplyConfiguration `json:"subjects,omitempty"`
    +	RoleRef                              *RoleRefApplyConfiguration  `json:"roleRef,omitempty"`
     }
     
    -// ClusterRoleBinding constructs an declarative configuration of the ClusterRoleBinding type for use with
    +// ClusterRoleBinding constructs a declarative configuration of the ClusterRoleBinding type for use with
     // apply.
     func ClusterRoleBinding(name string) *ClusterRoleBindingApplyConfiguration {
     	b := &ClusterRoleBindingApplyConfiguration{}
    @@ -57,18 +57,18 @@ func ClusterRoleBinding(name string) *ClusterRoleBindingApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractClusterRoleBinding(clusterRoleBinding *apirbacv1.ClusterRoleBinding, fieldManager string) (*ClusterRoleBindingApplyConfiguration, error) {
    +func ExtractClusterRoleBinding(clusterRoleBinding *rbacv1.ClusterRoleBinding, fieldManager string) (*ClusterRoleBindingApplyConfiguration, error) {
     	return extractClusterRoleBinding(clusterRoleBinding, fieldManager, "")
     }
     
     // ExtractClusterRoleBindingStatus is the same as ExtractClusterRoleBinding except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractClusterRoleBindingStatus(clusterRoleBinding *apirbacv1.ClusterRoleBinding, fieldManager string) (*ClusterRoleBindingApplyConfiguration, error) {
    +func ExtractClusterRoleBindingStatus(clusterRoleBinding *rbacv1.ClusterRoleBinding, fieldManager string) (*ClusterRoleBindingApplyConfiguration, error) {
     	return extractClusterRoleBinding(clusterRoleBinding, fieldManager, "status")
     }
     
    -func extractClusterRoleBinding(clusterRoleBinding *apirbacv1.ClusterRoleBinding, fieldManager string, subresource string) (*ClusterRoleBindingApplyConfiguration, error) {
    +func extractClusterRoleBinding(clusterRoleBinding *rbacv1.ClusterRoleBinding, fieldManager string, subresource string) (*ClusterRoleBindingApplyConfiguration, error) {
     	b := &ClusterRoleBindingApplyConfiguration{}
     	err := managedfields.ExtractInto(clusterRoleBinding, internal.Parser().Type("io.k8s.api.rbac.v1.ClusterRoleBinding"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractClusterRoleBinding(clusterRoleBinding *apirbacv1.ClusterRoleBinding,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithKind(value string) *ClusterRoleBindingApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithKind(value string) *ClusterRo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithAPIVersion(value string) *ClusterRoleBindingApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithAPIVersion(value string) *Clu
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithName(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithName(value string) *ClusterRo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithGenerateName(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithGenerateName(value string) *C
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithNamespace(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithNamespace(value string) *Clus
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithUID(value types.UID) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithUID(value types.UID) *Cluster
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithResourceVersion(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,25 +147,25 @@ func (b *ClusterRoleBindingApplyConfiguration) WithResourceVersion(value string)
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithGeneration(value int64) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ClusterRoleBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ClusterRoleBindingApplyConfiguration {
    +func (b *ClusterRoleBindingApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ClusterRoleBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ClusterRoleBindingApplyConfiguration {
    +func (b *ClusterRoleBindingApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithDeletionTimestamp(value metav
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *ClusterRoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(va
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ClusterRoleBindingApplyConfiguration) WithLabels(entries map[string]string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *ClusterRoleBindingApplyConfiguration) WithLabels(entries map[string]str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ClusterRoleBindingApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -211,13 +211,13 @@ func (b *ClusterRoleBindingApplyConfiguration) WithAnnotations(entries map[strin
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ClusterRoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ClusterRoleBindingApplyConfiguration {
    +func (b *ClusterRoleBindingApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,14 +228,14 @@ func (b *ClusterRoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1
     func (b *ClusterRoleBindingApplyConfiguration) WithFinalizers(values ...string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *ClusterRoleBindingApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -259,3 +259,9 @@ func (b *ClusterRoleBindingApplyConfiguration) WithRoleRef(value *RoleRefApplyCo
     	b.RoleRef = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ClusterRoleBindingApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/policyrule.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/policyrule.go
    index 65ee1d4fe5a0..a2e66d1096a9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/policyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/policyrule.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// PolicyRuleApplyConfiguration represents an declarative configuration of the PolicyRule type for use
    +// PolicyRuleApplyConfiguration represents a declarative configuration of the PolicyRule type for use
     // with apply.
     type PolicyRuleApplyConfiguration struct {
     	Verbs           []string `json:"verbs,omitempty"`
    @@ -28,7 +28,7 @@ type PolicyRuleApplyConfiguration struct {
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty"`
     }
     
    -// PolicyRuleApplyConfiguration constructs an declarative configuration of the PolicyRule type for use with
    +// PolicyRuleApplyConfiguration constructs a declarative configuration of the PolicyRule type for use with
     // apply.
     func PolicyRule() *PolicyRuleApplyConfiguration {
     	return &PolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/role.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/role.go
    index 97df25fb658a..b592753f6d66 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/role.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/role.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apirbacv1 "k8s.io/api/rbac/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	rbacv1 "k8s.io/api/rbac/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// RoleApplyConfiguration represents an declarative configuration of the Role type for use
    +// RoleApplyConfiguration represents a declarative configuration of the Role type for use
     // with apply.
     type RoleApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Rules                            []PolicyRuleApplyConfiguration `json:"rules,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Rules                                []PolicyRuleApplyConfiguration `json:"rules,omitempty"`
     }
     
    -// Role constructs an declarative configuration of the Role type for use with
    +// Role constructs a declarative configuration of the Role type for use with
     // apply.
     func Role(name, namespace string) *RoleApplyConfiguration {
     	b := &RoleApplyConfiguration{}
    @@ -57,18 +57,18 @@ func Role(name, namespace string) *RoleApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractRole(role *apirbacv1.Role, fieldManager string) (*RoleApplyConfiguration, error) {
    +func ExtractRole(role *rbacv1.Role, fieldManager string) (*RoleApplyConfiguration, error) {
     	return extractRole(role, fieldManager, "")
     }
     
     // ExtractRoleStatus is the same as ExtractRole except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractRoleStatus(role *apirbacv1.Role, fieldManager string) (*RoleApplyConfiguration, error) {
    +func ExtractRoleStatus(role *rbacv1.Role, fieldManager string) (*RoleApplyConfiguration, error) {
     	return extractRole(role, fieldManager, "status")
     }
     
    -func extractRole(role *apirbacv1.Role, fieldManager string, subresource string) (*RoleApplyConfiguration, error) {
    +func extractRole(role *rbacv1.Role, fieldManager string, subresource string) (*RoleApplyConfiguration, error) {
     	b := &RoleApplyConfiguration{}
     	err := managedfields.ExtractInto(role, internal.Parser().Type("io.k8s.api.rbac.v1.Role"), fieldManager, b, subresource)
     	if err != nil {
    @@ -86,7 +86,7 @@ func extractRole(role *apirbacv1.Role, fieldManager string, subresource string)
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithKind(value string) *RoleApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *RoleApplyConfiguration) WithKind(value string) *RoleApplyConfiguration
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithAPIVersion(value string) *RoleApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *RoleApplyConfiguration) WithAPIVersion(value string) *RoleApplyConfigur
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithName(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *RoleApplyConfiguration) WithName(value string) *RoleApplyConfiguration
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithGenerateName(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *RoleApplyConfiguration) WithGenerateName(value string) *RoleApplyConfig
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithNamespace(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *RoleApplyConfiguration) WithNamespace(value string) *RoleApplyConfigura
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithUID(value types.UID) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *RoleApplyConfiguration) WithUID(value types.UID) *RoleApplyConfiguratio
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithResourceVersion(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,25 +148,25 @@ func (b *RoleApplyConfiguration) WithResourceVersion(value string) *RoleApplyCon
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithGeneration(value int64) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *RoleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RoleApplyConfiguration {
    +func (b *RoleApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *RoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RoleApplyConfiguration {
    +func (b *RoleApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *RoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RoleA
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *RoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *Ro
     // overwriting an existing map entries in Labels field with the same key.
     func (b *RoleApplyConfiguration) WithLabels(entries map[string]string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *RoleApplyConfiguration) WithLabels(entries map[string]string) *RoleAppl
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *RoleApplyConfiguration) WithAnnotations(entries map[string]string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -212,13 +212,13 @@ func (b *RoleApplyConfiguration) WithAnnotations(entries map[string]string) *Rol
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *RoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *RoleApplyConfiguration {
    +func (b *RoleApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,14 +229,14 @@ func (b *RoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenc
     func (b *RoleApplyConfiguration) WithFinalizers(values ...string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *RoleApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -252,3 +252,9 @@ func (b *RoleApplyConfiguration) WithRules(values ...*PolicyRuleApplyConfigurati
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *RoleApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/rolebinding.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/rolebinding.go
    index 7270f07e49ac..32f12e87c765 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/rolebinding.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apirbacv1 "k8s.io/api/rbac/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	rbacv1 "k8s.io/api/rbac/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// RoleBindingApplyConfiguration represents an declarative configuration of the RoleBinding type for use
    +// RoleBindingApplyConfiguration represents a declarative configuration of the RoleBinding type for use
     // with apply.
     type RoleBindingApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Subjects                         []SubjectApplyConfiguration `json:"subjects,omitempty"`
    -	RoleRef                          *RoleRefApplyConfiguration  `json:"roleRef,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Subjects                             []SubjectApplyConfiguration `json:"subjects,omitempty"`
    +	RoleRef                              *RoleRefApplyConfiguration  `json:"roleRef,omitempty"`
     }
     
    -// RoleBinding constructs an declarative configuration of the RoleBinding type for use with
    +// RoleBinding constructs a declarative configuration of the RoleBinding type for use with
     // apply.
     func RoleBinding(name, namespace string) *RoleBindingApplyConfiguration {
     	b := &RoleBindingApplyConfiguration{}
    @@ -58,18 +58,18 @@ func RoleBinding(name, namespace string) *RoleBindingApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractRoleBinding(roleBinding *apirbacv1.RoleBinding, fieldManager string) (*RoleBindingApplyConfiguration, error) {
    +func ExtractRoleBinding(roleBinding *rbacv1.RoleBinding, fieldManager string) (*RoleBindingApplyConfiguration, error) {
     	return extractRoleBinding(roleBinding, fieldManager, "")
     }
     
     // ExtractRoleBindingStatus is the same as ExtractRoleBinding except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractRoleBindingStatus(roleBinding *apirbacv1.RoleBinding, fieldManager string) (*RoleBindingApplyConfiguration, error) {
    +func ExtractRoleBindingStatus(roleBinding *rbacv1.RoleBinding, fieldManager string) (*RoleBindingApplyConfiguration, error) {
     	return extractRoleBinding(roleBinding, fieldManager, "status")
     }
     
    -func extractRoleBinding(roleBinding *apirbacv1.RoleBinding, fieldManager string, subresource string) (*RoleBindingApplyConfiguration, error) {
    +func extractRoleBinding(roleBinding *rbacv1.RoleBinding, fieldManager string, subresource string) (*RoleBindingApplyConfiguration, error) {
     	b := &RoleBindingApplyConfiguration{}
     	err := managedfields.ExtractInto(roleBinding, internal.Parser().Type("io.k8s.api.rbac.v1.RoleBinding"), fieldManager, b, subresource)
     	if err != nil {
    @@ -87,7 +87,7 @@ func extractRoleBinding(roleBinding *apirbacv1.RoleBinding, fieldManager string,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithKind(value string) *RoleBindingApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *RoleBindingApplyConfiguration) WithKind(value string) *RoleBindingApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithAPIVersion(value string) *RoleBindingApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *RoleBindingApplyConfiguration) WithAPIVersion(value string) *RoleBindin
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithName(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *RoleBindingApplyConfiguration) WithName(value string) *RoleBindingApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithGenerateName(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *RoleBindingApplyConfiguration) WithGenerateName(value string) *RoleBind
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithNamespace(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *RoleBindingApplyConfiguration) WithNamespace(value string) *RoleBinding
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithUID(value types.UID) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *RoleBindingApplyConfiguration) WithUID(value types.UID) *RoleBindingApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithResourceVersion(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,25 +149,25 @@ func (b *RoleBindingApplyConfiguration) WithResourceVersion(value string) *RoleB
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithGeneration(value int64) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *RoleBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RoleBindingApplyConfiguration {
    +func (b *RoleBindingApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *RoleBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RoleBindingApplyConfiguration {
    +func (b *RoleBindingApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *RoleBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *RoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *RoleBindingApplyConfiguration) WithLabels(entries map[string]string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *RoleBindingApplyConfiguration) WithLabels(entries map[string]string) *R
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *RoleBindingApplyConfiguration) WithAnnotations(entries map[string]string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +213,13 @@ func (b *RoleBindingApplyConfiguration) WithAnnotations(entries map[string]strin
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *RoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *RoleBindingApplyConfiguration {
    +func (b *RoleBindingApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,14 +230,14 @@ func (b *RoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *RoleBindingApplyConfiguration) WithFinalizers(values ...string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *RoleBindingApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -261,3 +261,9 @@ func (b *RoleBindingApplyConfiguration) WithRoleRef(value *RoleRefApplyConfigura
     	b.RoleRef = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *RoleBindingApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/roleref.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/roleref.go
    index ef03a4882766..646a3bb194d8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/roleref.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/roleref.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// RoleRefApplyConfiguration represents an declarative configuration of the RoleRef type for use
    +// RoleRefApplyConfiguration represents a declarative configuration of the RoleRef type for use
     // with apply.
     type RoleRefApplyConfiguration struct {
     	APIGroup *string `json:"apiGroup,omitempty"`
    @@ -26,7 +26,7 @@ type RoleRefApplyConfiguration struct {
     	Name     *string `json:"name,omitempty"`
     }
     
    -// RoleRefApplyConfiguration constructs an declarative configuration of the RoleRef type for use with
    +// RoleRefApplyConfiguration constructs a declarative configuration of the RoleRef type for use with
     // apply.
     func RoleRef() *RoleRefApplyConfiguration {
     	return &RoleRefApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/subject.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/subject.go
    index ebc87fdc45af..e1d9c5cfb814 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/subject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1/subject.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// SubjectApplyConfiguration represents an declarative configuration of the Subject type for use
    +// SubjectApplyConfiguration represents a declarative configuration of the Subject type for use
     // with apply.
     type SubjectApplyConfiguration struct {
     	Kind      *string `json:"kind,omitempty"`
    @@ -27,7 +27,7 @@ type SubjectApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
     }
     
    -// SubjectApplyConfiguration constructs an declarative configuration of the Subject type for use with
    +// SubjectApplyConfiguration constructs a declarative configuration of the Subject type for use with
     // apply.
     func Subject() *SubjectApplyConfiguration {
     	return &SubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/aggregationrule.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/aggregationrule.go
    index 63cdc3fcca3a..ff4aeb59e5e1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/aggregationrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/aggregationrule.go
    @@ -22,13 +22,13 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// AggregationRuleApplyConfiguration represents an declarative configuration of the AggregationRule type for use
    +// AggregationRuleApplyConfiguration represents a declarative configuration of the AggregationRule type for use
     // with apply.
     type AggregationRuleApplyConfiguration struct {
     	ClusterRoleSelectors []v1.LabelSelectorApplyConfiguration `json:"clusterRoleSelectors,omitempty"`
     }
     
    -// AggregationRuleApplyConfiguration constructs an declarative configuration of the AggregationRule type for use with
    +// AggregationRuleApplyConfiguration constructs a declarative configuration of the AggregationRule type for use with
     // apply.
     func AggregationRule() *AggregationRuleApplyConfiguration {
     	return &AggregationRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/clusterrole.go
    index 19b1180fadba..ecc75d340395 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/clusterrole.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ClusterRoleApplyConfiguration represents an declarative configuration of the ClusterRole type for use
    +// ClusterRoleApplyConfiguration represents a declarative configuration of the ClusterRole type for use
     // with apply.
     type ClusterRoleApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type ClusterRoleApplyConfiguration struct {
     	AggregationRule                  *AggregationRuleApplyConfiguration `json:"aggregationRule,omitempty"`
     }
     
    -// ClusterRole constructs an declarative configuration of the ClusterRole type for use with
    +// ClusterRole constructs a declarative configuration of the ClusterRole type for use with
     // apply.
     func ClusterRole(name string) *ClusterRoleApplyConfiguration {
     	b := &ClusterRoleApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractClusterRole(clusterRole *rbacv1alpha1.ClusterRole, fieldManager stri
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithKind(value string) *ClusterRoleApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *ClusterRoleApplyConfiguration) WithKind(value string) *ClusterRoleApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithAPIVersion(value string) *ClusterRoleApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *ClusterRoleApplyConfiguration) WithAPIVersion(value string) *ClusterRol
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithName(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *ClusterRoleApplyConfiguration) WithName(value string) *ClusterRoleApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithGenerateName(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *ClusterRoleApplyConfiguration) WithGenerateName(value string) *ClusterR
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithNamespace(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *ClusterRoleApplyConfiguration) WithNamespace(value string) *ClusterRole
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithUID(value types.UID) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *ClusterRoleApplyConfiguration) WithUID(value types.UID) *ClusterRoleApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithResourceVersion(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *ClusterRoleApplyConfiguration) WithResourceVersion(value string) *Clust
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithGeneration(value int64) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *ClusterRoleApplyConfiguration) WithGeneration(value int64) *ClusterRole
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *ClusterRoleApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *ClusterRoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *ClusterRoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ClusterRoleApplyConfiguration) WithLabels(entries map[string]string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *ClusterRoleApplyConfiguration) WithLabels(entries map[string]string) *C
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ClusterRoleApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *ClusterRoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *ClusterRoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *ClusterRoleApplyConfiguration) WithFinalizers(values ...string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -259,3 +259,9 @@ func (b *ClusterRoleApplyConfiguration) WithAggregationRule(value *AggregationRu
     	b.AggregationRule = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ClusterRoleApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/clusterrolebinding.go
    index a1723efc35ab..3b8c43a39e85 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/clusterrolebinding.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ClusterRoleBindingApplyConfiguration represents an declarative configuration of the ClusterRoleBinding type for use
    +// ClusterRoleBindingApplyConfiguration represents a declarative configuration of the ClusterRoleBinding type for use
     // with apply.
     type ClusterRoleBindingApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type ClusterRoleBindingApplyConfiguration struct {
     	RoleRef                          *RoleRefApplyConfiguration  `json:"roleRef,omitempty"`
     }
     
    -// ClusterRoleBinding constructs an declarative configuration of the ClusterRoleBinding type for use with
    +// ClusterRoleBinding constructs a declarative configuration of the ClusterRoleBinding type for use with
     // apply.
     func ClusterRoleBinding(name string) *ClusterRoleBindingApplyConfiguration {
     	b := &ClusterRoleBindingApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractClusterRoleBinding(clusterRoleBinding *rbacv1alpha1.ClusterRoleBindi
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithKind(value string) *ClusterRoleBindingApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithKind(value string) *ClusterRo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithAPIVersion(value string) *ClusterRoleBindingApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithAPIVersion(value string) *Clu
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithName(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithName(value string) *ClusterRo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithGenerateName(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithGenerateName(value string) *C
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithNamespace(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithNamespace(value string) *Clus
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithUID(value types.UID) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithUID(value types.UID) *Cluster
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithResourceVersion(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithResourceVersion(value string)
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithGeneration(value int64) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithGeneration(value int64) *Clus
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithCreationTimestamp(value metav
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithDeletionTimestamp(value metav
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *ClusterRoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(va
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ClusterRoleBindingApplyConfiguration) WithLabels(entries map[string]string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *ClusterRoleBindingApplyConfiguration) WithLabels(entries map[string]str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ClusterRoleBindingApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1
     func (b *ClusterRoleBindingApplyConfiguration) WithFinalizers(values ...string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -259,3 +259,9 @@ func (b *ClusterRoleBindingApplyConfiguration) WithRoleRef(value *RoleRefApplyCo
     	b.RoleRef = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ClusterRoleBindingApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/policyrule.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/policyrule.go
    index 12143af13040..89d7a2914f78 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/policyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/policyrule.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1alpha1
     
    -// PolicyRuleApplyConfiguration represents an declarative configuration of the PolicyRule type for use
    +// PolicyRuleApplyConfiguration represents a declarative configuration of the PolicyRule type for use
     // with apply.
     type PolicyRuleApplyConfiguration struct {
     	Verbs           []string `json:"verbs,omitempty"`
    @@ -28,7 +28,7 @@ type PolicyRuleApplyConfiguration struct {
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty"`
     }
     
    -// PolicyRuleApplyConfiguration constructs an declarative configuration of the PolicyRule type for use with
    +// PolicyRuleApplyConfiguration constructs a declarative configuration of the PolicyRule type for use with
     // apply.
     func PolicyRule() *PolicyRuleApplyConfiguration {
     	return &PolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/role.go
    index cd256397a207..3fbd98543260 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/role.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/role.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// RoleApplyConfiguration represents an declarative configuration of the Role type for use
    +// RoleApplyConfiguration represents a declarative configuration of the Role type for use
     // with apply.
     type RoleApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type RoleApplyConfiguration struct {
     	Rules                            []PolicyRuleApplyConfiguration `json:"rules,omitempty"`
     }
     
    -// Role constructs an declarative configuration of the Role type for use with
    +// Role constructs a declarative configuration of the Role type for use with
     // apply.
     func Role(name, namespace string) *RoleApplyConfiguration {
     	b := &RoleApplyConfiguration{}
    @@ -86,7 +86,7 @@ func extractRole(role *rbacv1alpha1.Role, fieldManager string, subresource strin
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithKind(value string) *RoleApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *RoleApplyConfiguration) WithKind(value string) *RoleApplyConfiguration
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithAPIVersion(value string) *RoleApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *RoleApplyConfiguration) WithAPIVersion(value string) *RoleApplyConfigur
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithName(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *RoleApplyConfiguration) WithName(value string) *RoleApplyConfiguration
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithGenerateName(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *RoleApplyConfiguration) WithGenerateName(value string) *RoleApplyConfig
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithNamespace(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *RoleApplyConfiguration) WithNamespace(value string) *RoleApplyConfigura
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithUID(value types.UID) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *RoleApplyConfiguration) WithUID(value types.UID) *RoleApplyConfiguratio
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithResourceVersion(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,7 +148,7 @@ func (b *RoleApplyConfiguration) WithResourceVersion(value string) *RoleApplyCon
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithGeneration(value int64) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -157,7 +157,7 @@ func (b *RoleApplyConfiguration) WithGeneration(value int64) *RoleApplyConfigura
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -166,7 +166,7 @@ func (b *RoleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RoleA
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *RoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RoleA
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *RoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *Ro
     // overwriting an existing map entries in Labels field with the same key.
     func (b *RoleApplyConfiguration) WithLabels(entries map[string]string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *RoleApplyConfiguration) WithLabels(entries map[string]string) *RoleAppl
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *RoleApplyConfiguration) WithAnnotations(entries map[string]string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -218,7 +218,7 @@ func (b *RoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenc
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,7 +229,7 @@ func (b *RoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenc
     func (b *RoleApplyConfiguration) WithFinalizers(values ...string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -252,3 +252,9 @@ func (b *RoleApplyConfiguration) WithRules(values ...*PolicyRuleApplyConfigurati
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *RoleApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/rolebinding.go
    index a0ec20d0b14f..37c0d37cf2c6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/rolebinding.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// RoleBindingApplyConfiguration represents an declarative configuration of the RoleBinding type for use
    +// RoleBindingApplyConfiguration represents a declarative configuration of the RoleBinding type for use
     // with apply.
     type RoleBindingApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type RoleBindingApplyConfiguration struct {
     	RoleRef                          *RoleRefApplyConfiguration  `json:"roleRef,omitempty"`
     }
     
    -// RoleBinding constructs an declarative configuration of the RoleBinding type for use with
    +// RoleBinding constructs a declarative configuration of the RoleBinding type for use with
     // apply.
     func RoleBinding(name, namespace string) *RoleBindingApplyConfiguration {
     	b := &RoleBindingApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractRoleBinding(roleBinding *rbacv1alpha1.RoleBinding, fieldManager stri
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithKind(value string) *RoleBindingApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *RoleBindingApplyConfiguration) WithKind(value string) *RoleBindingApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithAPIVersion(value string) *RoleBindingApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *RoleBindingApplyConfiguration) WithAPIVersion(value string) *RoleBindin
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithName(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *RoleBindingApplyConfiguration) WithName(value string) *RoleBindingApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithGenerateName(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *RoleBindingApplyConfiguration) WithGenerateName(value string) *RoleBind
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithNamespace(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *RoleBindingApplyConfiguration) WithNamespace(value string) *RoleBinding
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithUID(value types.UID) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *RoleBindingApplyConfiguration) WithUID(value types.UID) *RoleBindingApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithResourceVersion(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *RoleBindingApplyConfiguration) WithResourceVersion(value string) *RoleB
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithGeneration(value int64) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *RoleBindingApplyConfiguration) WithGeneration(value int64) *RoleBinding
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *RoleBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *RoleBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *RoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *RoleBindingApplyConfiguration) WithLabels(entries map[string]string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *RoleBindingApplyConfiguration) WithLabels(entries map[string]string) *R
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *RoleBindingApplyConfiguration) WithAnnotations(entries map[string]string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *RoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *RoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *RoleBindingApplyConfiguration) WithFinalizers(values ...string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -261,3 +261,9 @@ func (b *RoleBindingApplyConfiguration) WithRoleRef(value *RoleRefApplyConfigura
     	b.RoleRef = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *RoleBindingApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/roleref.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/roleref.go
    index 40dbc330736e..4b2553117df4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/roleref.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/roleref.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1alpha1
     
    -// RoleRefApplyConfiguration represents an declarative configuration of the RoleRef type for use
    +// RoleRefApplyConfiguration represents a declarative configuration of the RoleRef type for use
     // with apply.
     type RoleRefApplyConfiguration struct {
     	APIGroup *string `json:"apiGroup,omitempty"`
    @@ -26,7 +26,7 @@ type RoleRefApplyConfiguration struct {
     	Name     *string `json:"name,omitempty"`
     }
     
    -// RoleRefApplyConfiguration constructs an declarative configuration of the RoleRef type for use with
    +// RoleRefApplyConfiguration constructs a declarative configuration of the RoleRef type for use with
     // apply.
     func RoleRef() *RoleRefApplyConfiguration {
     	return &RoleRefApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/subject.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/subject.go
    index 46640dbbe99e..665b42af50f4 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/subject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1alpha1/subject.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1alpha1
     
    -// SubjectApplyConfiguration represents an declarative configuration of the Subject type for use
    +// SubjectApplyConfiguration represents a declarative configuration of the Subject type for use
     // with apply.
     type SubjectApplyConfiguration struct {
     	Kind       *string `json:"kind,omitempty"`
    @@ -27,7 +27,7 @@ type SubjectApplyConfiguration struct {
     	Namespace  *string `json:"namespace,omitempty"`
     }
     
    -// SubjectApplyConfiguration constructs an declarative configuration of the Subject type for use with
    +// SubjectApplyConfiguration constructs a declarative configuration of the Subject type for use with
     // apply.
     func Subject() *SubjectApplyConfiguration {
     	return &SubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/aggregationrule.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/aggregationrule.go
    index d52ac3db9bf3..e9bb68dcb685 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/aggregationrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/aggregationrule.go
    @@ -22,13 +22,13 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// AggregationRuleApplyConfiguration represents an declarative configuration of the AggregationRule type for use
    +// AggregationRuleApplyConfiguration represents a declarative configuration of the AggregationRule type for use
     // with apply.
     type AggregationRuleApplyConfiguration struct {
     	ClusterRoleSelectors []v1.LabelSelectorApplyConfiguration `json:"clusterRoleSelectors,omitempty"`
     }
     
    -// AggregationRuleApplyConfiguration constructs an declarative configuration of the AggregationRule type for use with
    +// AggregationRuleApplyConfiguration constructs a declarative configuration of the AggregationRule type for use with
     // apply.
     func AggregationRule() *AggregationRuleApplyConfiguration {
     	return &AggregationRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/clusterrole.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/clusterrole.go
    index cf714ecc278f..124e47ef7c24 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/clusterrole.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ClusterRoleApplyConfiguration represents an declarative configuration of the ClusterRole type for use
    +// ClusterRoleApplyConfiguration represents a declarative configuration of the ClusterRole type for use
     // with apply.
     type ClusterRoleApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type ClusterRoleApplyConfiguration struct {
     	AggregationRule                  *AggregationRuleApplyConfiguration `json:"aggregationRule,omitempty"`
     }
     
    -// ClusterRole constructs an declarative configuration of the ClusterRole type for use with
    +// ClusterRole constructs a declarative configuration of the ClusterRole type for use with
     // apply.
     func ClusterRole(name string) *ClusterRoleApplyConfiguration {
     	b := &ClusterRoleApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractClusterRole(clusterRole *rbacv1beta1.ClusterRole, fieldManager strin
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithKind(value string) *ClusterRoleApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *ClusterRoleApplyConfiguration) WithKind(value string) *ClusterRoleApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithAPIVersion(value string) *ClusterRoleApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *ClusterRoleApplyConfiguration) WithAPIVersion(value string) *ClusterRol
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithName(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *ClusterRoleApplyConfiguration) WithName(value string) *ClusterRoleApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithGenerateName(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *ClusterRoleApplyConfiguration) WithGenerateName(value string) *ClusterR
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithNamespace(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *ClusterRoleApplyConfiguration) WithNamespace(value string) *ClusterRole
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithUID(value types.UID) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *ClusterRoleApplyConfiguration) WithUID(value types.UID) *ClusterRoleApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithResourceVersion(value string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *ClusterRoleApplyConfiguration) WithResourceVersion(value string) *Clust
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithGeneration(value int64) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *ClusterRoleApplyConfiguration) WithGeneration(value int64) *ClusterRole
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *ClusterRoleApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *ClusterRoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ClusterRoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *ClusterRoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ClusterRoleApplyConfiguration) WithLabels(entries map[string]string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *ClusterRoleApplyConfiguration) WithLabels(entries map[string]string) *C
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ClusterRoleApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *ClusterRoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *ClusterRoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *ClusterRoleApplyConfiguration) WithFinalizers(values ...string) *ClusterRoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -259,3 +259,9 @@ func (b *ClusterRoleApplyConfiguration) WithAggregationRule(value *AggregationRu
     	b.AggregationRule = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ClusterRoleApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/clusterrolebinding.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/clusterrolebinding.go
    index b97cbcba2f45..140e7e1761d6 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/clusterrolebinding.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ClusterRoleBindingApplyConfiguration represents an declarative configuration of the ClusterRoleBinding type for use
    +// ClusterRoleBindingApplyConfiguration represents a declarative configuration of the ClusterRoleBinding type for use
     // with apply.
     type ClusterRoleBindingApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type ClusterRoleBindingApplyConfiguration struct {
     	RoleRef                          *RoleRefApplyConfiguration  `json:"roleRef,omitempty"`
     }
     
    -// ClusterRoleBinding constructs an declarative configuration of the ClusterRoleBinding type for use with
    +// ClusterRoleBinding constructs a declarative configuration of the ClusterRoleBinding type for use with
     // apply.
     func ClusterRoleBinding(name string) *ClusterRoleBindingApplyConfiguration {
     	b := &ClusterRoleBindingApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractClusterRoleBinding(clusterRoleBinding *rbacv1beta1.ClusterRoleBindin
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithKind(value string) *ClusterRoleBindingApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithKind(value string) *ClusterRo
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithAPIVersion(value string) *ClusterRoleBindingApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithAPIVersion(value string) *Clu
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithName(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithName(value string) *ClusterRo
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithGenerateName(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithGenerateName(value string) *C
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithNamespace(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithNamespace(value string) *Clus
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithUID(value types.UID) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithUID(value types.UID) *Cluster
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithResourceVersion(value string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithResourceVersion(value string)
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithGeneration(value int64) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithGeneration(value int64) *Clus
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithCreationTimestamp(value metav
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithDeletionTimestamp(value metav
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ClusterRoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *ClusterRoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(va
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ClusterRoleBindingApplyConfiguration) WithLabels(entries map[string]string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *ClusterRoleBindingApplyConfiguration) WithLabels(entries map[string]str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ClusterRoleBindingApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *ClusterRoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1
     func (b *ClusterRoleBindingApplyConfiguration) WithFinalizers(values ...string) *ClusterRoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -259,3 +259,9 @@ func (b *ClusterRoleBindingApplyConfiguration) WithRoleRef(value *RoleRefApplyCo
     	b.RoleRef = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ClusterRoleBindingApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/policyrule.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/policyrule.go
    index c63dc68c6bb1..dc630df206a9 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/policyrule.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/policyrule.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// PolicyRuleApplyConfiguration represents an declarative configuration of the PolicyRule type for use
    +// PolicyRuleApplyConfiguration represents a declarative configuration of the PolicyRule type for use
     // with apply.
     type PolicyRuleApplyConfiguration struct {
     	Verbs           []string `json:"verbs,omitempty"`
    @@ -28,7 +28,7 @@ type PolicyRuleApplyConfiguration struct {
     	NonResourceURLs []string `json:"nonResourceURLs,omitempty"`
     }
     
    -// PolicyRuleApplyConfiguration constructs an declarative configuration of the PolicyRule type for use with
    +// PolicyRuleApplyConfiguration constructs a declarative configuration of the PolicyRule type for use with
     // apply.
     func PolicyRule() *PolicyRuleApplyConfiguration {
     	return &PolicyRuleApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/role.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/role.go
    index 53a751eb3445..82240514fde0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/role.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/role.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// RoleApplyConfiguration represents an declarative configuration of the Role type for use
    +// RoleApplyConfiguration represents a declarative configuration of the Role type for use
     // with apply.
     type RoleApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type RoleApplyConfiguration struct {
     	Rules                            []PolicyRuleApplyConfiguration `json:"rules,omitempty"`
     }
     
    -// Role constructs an declarative configuration of the Role type for use with
    +// Role constructs a declarative configuration of the Role type for use with
     // apply.
     func Role(name, namespace string) *RoleApplyConfiguration {
     	b := &RoleApplyConfiguration{}
    @@ -86,7 +86,7 @@ func extractRole(role *rbacv1beta1.Role, fieldManager string, subresource string
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithKind(value string) *RoleApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *RoleApplyConfiguration) WithKind(value string) *RoleApplyConfiguration
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithAPIVersion(value string) *RoleApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *RoleApplyConfiguration) WithAPIVersion(value string) *RoleApplyConfigur
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithName(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *RoleApplyConfiguration) WithName(value string) *RoleApplyConfiguration
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithGenerateName(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *RoleApplyConfiguration) WithGenerateName(value string) *RoleApplyConfig
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithNamespace(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *RoleApplyConfiguration) WithNamespace(value string) *RoleApplyConfigura
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithUID(value types.UID) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *RoleApplyConfiguration) WithUID(value types.UID) *RoleApplyConfiguratio
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithResourceVersion(value string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,7 +148,7 @@ func (b *RoleApplyConfiguration) WithResourceVersion(value string) *RoleApplyCon
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithGeneration(value int64) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -157,7 +157,7 @@ func (b *RoleApplyConfiguration) WithGeneration(value int64) *RoleApplyConfigura
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -166,7 +166,7 @@ func (b *RoleApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RoleA
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *RoleApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RoleA
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *RoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *RoleApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *Ro
     // overwriting an existing map entries in Labels field with the same key.
     func (b *RoleApplyConfiguration) WithLabels(entries map[string]string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *RoleApplyConfiguration) WithLabels(entries map[string]string) *RoleAppl
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *RoleApplyConfiguration) WithAnnotations(entries map[string]string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -218,7 +218,7 @@ func (b *RoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenc
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,7 +229,7 @@ func (b *RoleApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenc
     func (b *RoleApplyConfiguration) WithFinalizers(values ...string) *RoleApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -252,3 +252,9 @@ func (b *RoleApplyConfiguration) WithRules(values ...*PolicyRuleApplyConfigurati
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *RoleApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/rolebinding.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/rolebinding.go
    index ecccdf91b133..1c66b976eb12 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/rolebinding.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// RoleBindingApplyConfiguration represents an declarative configuration of the RoleBinding type for use
    +// RoleBindingApplyConfiguration represents a declarative configuration of the RoleBinding type for use
     // with apply.
     type RoleBindingApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type RoleBindingApplyConfiguration struct {
     	RoleRef                          *RoleRefApplyConfiguration  `json:"roleRef,omitempty"`
     }
     
    -// RoleBinding constructs an declarative configuration of the RoleBinding type for use with
    +// RoleBinding constructs a declarative configuration of the RoleBinding type for use with
     // apply.
     func RoleBinding(name, namespace string) *RoleBindingApplyConfiguration {
     	b := &RoleBindingApplyConfiguration{}
    @@ -87,7 +87,7 @@ func extractRoleBinding(roleBinding *rbacv1beta1.RoleBinding, fieldManager strin
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithKind(value string) *RoleBindingApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *RoleBindingApplyConfiguration) WithKind(value string) *RoleBindingApply
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithAPIVersion(value string) *RoleBindingApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *RoleBindingApplyConfiguration) WithAPIVersion(value string) *RoleBindin
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithName(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *RoleBindingApplyConfiguration) WithName(value string) *RoleBindingApply
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithGenerateName(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *RoleBindingApplyConfiguration) WithGenerateName(value string) *RoleBind
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithNamespace(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *RoleBindingApplyConfiguration) WithNamespace(value string) *RoleBinding
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithUID(value types.UID) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *RoleBindingApplyConfiguration) WithUID(value types.UID) *RoleBindingApp
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithResourceVersion(value string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *RoleBindingApplyConfiguration) WithResourceVersion(value string) *RoleB
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithGeneration(value int64) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *RoleBindingApplyConfiguration) WithGeneration(value int64) *RoleBinding
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *RoleBindingApplyConfiguration) WithCreationTimestamp(value metav1.Time)
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *RoleBindingApplyConfiguration) WithDeletionTimestamp(value metav1.Time)
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *RoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *RoleBindingApplyConfiguration) WithDeletionGracePeriodSeconds(value int
     // overwriting an existing map entries in Labels field with the same key.
     func (b *RoleBindingApplyConfiguration) WithLabels(entries map[string]string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *RoleBindingApplyConfiguration) WithLabels(entries map[string]string) *R
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *RoleBindingApplyConfiguration) WithAnnotations(entries map[string]string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *RoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *RoleBindingApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerR
     func (b *RoleBindingApplyConfiguration) WithFinalizers(values ...string) *RoleBindingApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -261,3 +261,9 @@ func (b *RoleBindingApplyConfiguration) WithRoleRef(value *RoleRefApplyConfigura
     	b.RoleRef = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *RoleBindingApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/roleref.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/roleref.go
    index e6a02dc60263..19d0420a816f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/roleref.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/roleref.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// RoleRefApplyConfiguration represents an declarative configuration of the RoleRef type for use
    +// RoleRefApplyConfiguration represents a declarative configuration of the RoleRef type for use
     // with apply.
     type RoleRefApplyConfiguration struct {
     	APIGroup *string `json:"apiGroup,omitempty"`
    @@ -26,7 +26,7 @@ type RoleRefApplyConfiguration struct {
     	Name     *string `json:"name,omitempty"`
     }
     
    -// RoleRefApplyConfiguration constructs an declarative configuration of the RoleRef type for use with
    +// RoleRefApplyConfiguration constructs a declarative configuration of the RoleRef type for use with
     // apply.
     func RoleRef() *RoleRefApplyConfiguration {
     	return &RoleRefApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/subject.go b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/subject.go
    index b616da8b1329..f7c1a21a9ccf 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/subject.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/rbac/v1beta1/subject.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// SubjectApplyConfiguration represents an declarative configuration of the Subject type for use
    +// SubjectApplyConfiguration represents a declarative configuration of the Subject type for use
     // with apply.
     type SubjectApplyConfiguration struct {
     	Kind      *string `json:"kind,omitempty"`
    @@ -27,7 +27,7 @@ type SubjectApplyConfiguration struct {
     	Namespace *string `json:"namespace,omitempty"`
     }
     
    -// SubjectApplyConfiguration constructs an declarative configuration of the Subject type for use with
    +// SubjectApplyConfiguration constructs a declarative configuration of the Subject type for use with
     // apply.
     func Subject() *SubjectApplyConfiguration {
     	return &SubjectApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/allocationresult.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/allocationresult.go
    deleted file mode 100644
    index bc6078aa941b..000000000000
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/allocationresult.go
    +++ /dev/null
    @@ -1,66 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by applyconfiguration-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -import (
    -	v1 "k8s.io/client-go/applyconfigurations/core/v1"
    -)
    -
    -// AllocationResultApplyConfiguration represents an declarative configuration of the AllocationResult type for use
    -// with apply.
    -type AllocationResultApplyConfiguration struct {
    -	ResourceHandles  []ResourceHandleApplyConfiguration `json:"resourceHandles,omitempty"`
    -	AvailableOnNodes *v1.NodeSelectorApplyConfiguration `json:"availableOnNodes,omitempty"`
    -	Shareable        *bool                              `json:"shareable,omitempty"`
    -}
    -
    -// AllocationResultApplyConfiguration constructs an declarative configuration of the AllocationResult type for use with
    -// apply.
    -func AllocationResult() *AllocationResultApplyConfiguration {
    -	return &AllocationResultApplyConfiguration{}
    -}
    -
    -// WithResourceHandles adds the given value to the ResourceHandles field in the declarative configuration
    -// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    -// If called multiple times, values provided by each call will be appended to the ResourceHandles field.
    -func (b *AllocationResultApplyConfiguration) WithResourceHandles(values ...*ResourceHandleApplyConfiguration) *AllocationResultApplyConfiguration {
    -	for i := range values {
    -		if values[i] == nil {
    -			panic("nil value passed to WithResourceHandles")
    -		}
    -		b.ResourceHandles = append(b.ResourceHandles, *values[i])
    -	}
    -	return b
    -}
    -
    -// WithAvailableOnNodes sets the AvailableOnNodes field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the AvailableOnNodes field is set to the value of the last call.
    -func (b *AllocationResultApplyConfiguration) WithAvailableOnNodes(value *v1.NodeSelectorApplyConfiguration) *AllocationResultApplyConfiguration {
    -	b.AvailableOnNodes = value
    -	return b
    -}
    -
    -// WithShareable sets the Shareable field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the Shareable field is set to the value of the last call.
    -func (b *AllocationResultApplyConfiguration) WithShareable(value bool) *AllocationResultApplyConfiguration {
    -	b.Shareable = &value
    -	return b
    -}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/podschedulingcontextspec.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/podschedulingcontextspec.go
    deleted file mode 100644
    index c95d3295e805..000000000000
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/podschedulingcontextspec.go
    +++ /dev/null
    @@ -1,50 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by applyconfiguration-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -// PodSchedulingContextSpecApplyConfiguration represents an declarative configuration of the PodSchedulingContextSpec type for use
    -// with apply.
    -type PodSchedulingContextSpecApplyConfiguration struct {
    -	SelectedNode   *string  `json:"selectedNode,omitempty"`
    -	PotentialNodes []string `json:"potentialNodes,omitempty"`
    -}
    -
    -// PodSchedulingContextSpecApplyConfiguration constructs an declarative configuration of the PodSchedulingContextSpec type for use with
    -// apply.
    -func PodSchedulingContextSpec() *PodSchedulingContextSpecApplyConfiguration {
    -	return &PodSchedulingContextSpecApplyConfiguration{}
    -}
    -
    -// WithSelectedNode sets the SelectedNode field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the SelectedNode field is set to the value of the last call.
    -func (b *PodSchedulingContextSpecApplyConfiguration) WithSelectedNode(value string) *PodSchedulingContextSpecApplyConfiguration {
    -	b.SelectedNode = &value
    -	return b
    -}
    -
    -// WithPotentialNodes adds the given value to the PotentialNodes field in the declarative configuration
    -// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    -// If called multiple times, values provided by each call will be appended to the PotentialNodes field.
    -func (b *PodSchedulingContextSpecApplyConfiguration) WithPotentialNodes(values ...string) *PodSchedulingContextSpecApplyConfiguration {
    -	for i := range values {
    -		b.PotentialNodes = append(b.PotentialNodes, values[i])
    -	}
    -	return b
    -}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/podschedulingcontextstatus.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/podschedulingcontextstatus.go
    deleted file mode 100644
    index a8b10b9a0e8c..000000000000
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/podschedulingcontextstatus.go
    +++ /dev/null
    @@ -1,44 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by applyconfiguration-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -// PodSchedulingContextStatusApplyConfiguration represents an declarative configuration of the PodSchedulingContextStatus type for use
    -// with apply.
    -type PodSchedulingContextStatusApplyConfiguration struct {
    -	ResourceClaims []ResourceClaimSchedulingStatusApplyConfiguration `json:"resourceClaims,omitempty"`
    -}
    -
    -// PodSchedulingContextStatusApplyConfiguration constructs an declarative configuration of the PodSchedulingContextStatus type for use with
    -// apply.
    -func PodSchedulingContextStatus() *PodSchedulingContextStatusApplyConfiguration {
    -	return &PodSchedulingContextStatusApplyConfiguration{}
    -}
    -
    -// WithResourceClaims adds the given value to the ResourceClaims field in the declarative configuration
    -// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    -// If called multiple times, values provided by each call will be appended to the ResourceClaims field.
    -func (b *PodSchedulingContextStatusApplyConfiguration) WithResourceClaims(values ...*ResourceClaimSchedulingStatusApplyConfiguration) *PodSchedulingContextStatusApplyConfiguration {
    -	for i := range values {
    -		if values[i] == nil {
    -			panic("nil value passed to WithResourceClaims")
    -		}
    -		b.ResourceClaims = append(b.ResourceClaims, *values[i])
    -	}
    -	return b
    -}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimparametersreference.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimparametersreference.go
    deleted file mode 100644
    index 27820ede60cc..000000000000
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimparametersreference.go
    +++ /dev/null
    @@ -1,57 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by applyconfiguration-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -// ResourceClaimParametersReferenceApplyConfiguration represents an declarative configuration of the ResourceClaimParametersReference type for use
    -// with apply.
    -type ResourceClaimParametersReferenceApplyConfiguration struct {
    -	APIGroup *string `json:"apiGroup,omitempty"`
    -	Kind     *string `json:"kind,omitempty"`
    -	Name     *string `json:"name,omitempty"`
    -}
    -
    -// ResourceClaimParametersReferenceApplyConfiguration constructs an declarative configuration of the ResourceClaimParametersReference type for use with
    -// apply.
    -func ResourceClaimParametersReference() *ResourceClaimParametersReferenceApplyConfiguration {
    -	return &ResourceClaimParametersReferenceApplyConfiguration{}
    -}
    -
    -// WithAPIGroup sets the APIGroup field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the APIGroup field is set to the value of the last call.
    -func (b *ResourceClaimParametersReferenceApplyConfiguration) WithAPIGroup(value string) *ResourceClaimParametersReferenceApplyConfiguration {
    -	b.APIGroup = &value
    -	return b
    -}
    -
    -// WithKind sets the Kind field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the Kind field is set to the value of the last call.
    -func (b *ResourceClaimParametersReferenceApplyConfiguration) WithKind(value string) *ResourceClaimParametersReferenceApplyConfiguration {
    -	b.Kind = &value
    -	return b
    -}
    -
    -// WithName sets the Name field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the Name field is set to the value of the last call.
    -func (b *ResourceClaimParametersReferenceApplyConfiguration) WithName(value string) *ResourceClaimParametersReferenceApplyConfiguration {
    -	b.Name = &value
    -	return b
    -}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimspec.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimspec.go
    deleted file mode 100644
    index 0c73e64e9ed8..000000000000
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimspec.go
    +++ /dev/null
    @@ -1,61 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by applyconfiguration-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -import (
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    -)
    -
    -// ResourceClaimSpecApplyConfiguration represents an declarative configuration of the ResourceClaimSpec type for use
    -// with apply.
    -type ResourceClaimSpecApplyConfiguration struct {
    -	ResourceClassName *string                                             `json:"resourceClassName,omitempty"`
    -	ParametersRef     *ResourceClaimParametersReferenceApplyConfiguration `json:"parametersRef,omitempty"`
    -	AllocationMode    *resourcev1alpha2.AllocationMode                    `json:"allocationMode,omitempty"`
    -}
    -
    -// ResourceClaimSpecApplyConfiguration constructs an declarative configuration of the ResourceClaimSpec type for use with
    -// apply.
    -func ResourceClaimSpec() *ResourceClaimSpecApplyConfiguration {
    -	return &ResourceClaimSpecApplyConfiguration{}
    -}
    -
    -// WithResourceClassName sets the ResourceClassName field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the ResourceClassName field is set to the value of the last call.
    -func (b *ResourceClaimSpecApplyConfiguration) WithResourceClassName(value string) *ResourceClaimSpecApplyConfiguration {
    -	b.ResourceClassName = &value
    -	return b
    -}
    -
    -// WithParametersRef sets the ParametersRef field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the ParametersRef field is set to the value of the last call.
    -func (b *ResourceClaimSpecApplyConfiguration) WithParametersRef(value *ResourceClaimParametersReferenceApplyConfiguration) *ResourceClaimSpecApplyConfiguration {
    -	b.ParametersRef = value
    -	return b
    -}
    -
    -// WithAllocationMode sets the AllocationMode field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the AllocationMode field is set to the value of the last call.
    -func (b *ResourceClaimSpecApplyConfiguration) WithAllocationMode(value resourcev1alpha2.AllocationMode) *ResourceClaimSpecApplyConfiguration {
    -	b.AllocationMode = &value
    -	return b
    -}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourcehandle.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourcehandle.go
    deleted file mode 100644
    index 028cbaa1a7e5..000000000000
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourcehandle.go
    +++ /dev/null
    @@ -1,48 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by applyconfiguration-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -// ResourceHandleApplyConfiguration represents an declarative configuration of the ResourceHandle type for use
    -// with apply.
    -type ResourceHandleApplyConfiguration struct {
    -	DriverName *string `json:"driverName,omitempty"`
    -	Data       *string `json:"data,omitempty"`
    -}
    -
    -// ResourceHandleApplyConfiguration constructs an declarative configuration of the ResourceHandle type for use with
    -// apply.
    -func ResourceHandle() *ResourceHandleApplyConfiguration {
    -	return &ResourceHandleApplyConfiguration{}
    -}
    -
    -// WithDriverName sets the DriverName field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the DriverName field is set to the value of the last call.
    -func (b *ResourceHandleApplyConfiguration) WithDriverName(value string) *ResourceHandleApplyConfiguration {
    -	b.DriverName = &value
    -	return b
    -}
    -
    -// WithData sets the Data field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the Data field is set to the value of the last call.
    -func (b *ResourceHandleApplyConfiguration) WithData(value string) *ResourceHandleApplyConfiguration {
    -	b.Data = &value
    -	return b
    -}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/allocateddevicestatus.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/allocateddevicestatus.go
    new file mode 100644
    index 000000000000..da58d4348d7d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/allocateddevicestatus.go
    @@ -0,0 +1,94 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// AllocatedDeviceStatusApplyConfiguration represents a declarative configuration of the AllocatedDeviceStatus type for use
    +// with apply.
    +type AllocatedDeviceStatusApplyConfiguration struct {
    +	Driver      *string                              `json:"driver,omitempty"`
    +	Pool        *string                              `json:"pool,omitempty"`
    +	Device      *string                              `json:"device,omitempty"`
    +	Conditions  []v1.ConditionApplyConfiguration     `json:"conditions,omitempty"`
    +	Data        *runtime.RawExtension                `json:"data,omitempty"`
    +	NetworkData *NetworkDeviceDataApplyConfiguration `json:"networkData,omitempty"`
    +}
    +
    +// AllocatedDeviceStatusApplyConfiguration constructs a declarative configuration of the AllocatedDeviceStatus type for use with
    +// apply.
    +func AllocatedDeviceStatus() *AllocatedDeviceStatusApplyConfiguration {
    +	return &AllocatedDeviceStatusApplyConfiguration{}
    +}
    +
    +// WithDriver sets the Driver field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Driver field is set to the value of the last call.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithDriver(value string) *AllocatedDeviceStatusApplyConfiguration {
    +	b.Driver = &value
    +	return b
    +}
    +
    +// WithPool sets the Pool field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Pool field is set to the value of the last call.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithPool(value string) *AllocatedDeviceStatusApplyConfiguration {
    +	b.Pool = &value
    +	return b
    +}
    +
    +// WithDevice sets the Device field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Device field is set to the value of the last call.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithDevice(value string) *AllocatedDeviceStatusApplyConfiguration {
    +	b.Device = &value
    +	return b
    +}
    +
    +// WithConditions adds the given value to the Conditions field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Conditions field.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithConditions(values ...*v1.ConditionApplyConfiguration) *AllocatedDeviceStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConditions")
    +		}
    +		b.Conditions = append(b.Conditions, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithData sets the Data field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Data field is set to the value of the last call.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithData(value runtime.RawExtension) *AllocatedDeviceStatusApplyConfiguration {
    +	b.Data = &value
    +	return b
    +}
    +
    +// WithNetworkData sets the NetworkData field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the NetworkData field is set to the value of the last call.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithNetworkData(value *NetworkDeviceDataApplyConfiguration) *AllocatedDeviceStatusApplyConfiguration {
    +	b.NetworkData = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/allocationresult.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/allocationresult.go
    new file mode 100644
    index 000000000000..7c7427ee970e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/allocationresult.go
    @@ -0,0 +1,52 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	v1 "k8s.io/client-go/applyconfigurations/core/v1"
    +)
    +
    +// AllocationResultApplyConfiguration represents a declarative configuration of the AllocationResult type for use
    +// with apply.
    +type AllocationResultApplyConfiguration struct {
    +	Devices      *DeviceAllocationResultApplyConfiguration `json:"devices,omitempty"`
    +	NodeSelector *v1.NodeSelectorApplyConfiguration        `json:"nodeSelector,omitempty"`
    +}
    +
    +// AllocationResultApplyConfiguration constructs a declarative configuration of the AllocationResult type for use with
    +// apply.
    +func AllocationResult() *AllocationResultApplyConfiguration {
    +	return &AllocationResultApplyConfiguration{}
    +}
    +
    +// WithDevices sets the Devices field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Devices field is set to the value of the last call.
    +func (b *AllocationResultApplyConfiguration) WithDevices(value *DeviceAllocationResultApplyConfiguration) *AllocationResultApplyConfiguration {
    +	b.Devices = value
    +	return b
    +}
    +
    +// WithNodeSelector sets the NodeSelector field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the NodeSelector field is set to the value of the last call.
    +func (b *AllocationResultApplyConfiguration) WithNodeSelector(value *v1.NodeSelectorApplyConfiguration) *AllocationResultApplyConfiguration {
    +	b.NodeSelector = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/basicdevice.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/basicdevice.go
    new file mode 100644
    index 000000000000..b58e432947bd
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/basicdevice.go
    @@ -0,0 +1,65 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	resource "k8s.io/apimachinery/pkg/api/resource"
    +)
    +
    +// BasicDeviceApplyConfiguration represents a declarative configuration of the BasicDevice type for use
    +// with apply.
    +type BasicDeviceApplyConfiguration struct {
    +	Attributes map[resourcev1alpha3.QualifiedName]DeviceAttributeApplyConfiguration `json:"attributes,omitempty"`
    +	Capacity   map[resourcev1alpha3.QualifiedName]resource.Quantity                 `json:"capacity,omitempty"`
    +}
    +
    +// BasicDeviceApplyConfiguration constructs a declarative configuration of the BasicDevice type for use with
    +// apply.
    +func BasicDevice() *BasicDeviceApplyConfiguration {
    +	return &BasicDeviceApplyConfiguration{}
    +}
    +
    +// WithAttributes puts the entries into the Attributes field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Attributes field,
    +// overwriting an existing map entries in Attributes field with the same key.
    +func (b *BasicDeviceApplyConfiguration) WithAttributes(entries map[resourcev1alpha3.QualifiedName]DeviceAttributeApplyConfiguration) *BasicDeviceApplyConfiguration {
    +	if b.Attributes == nil && len(entries) > 0 {
    +		b.Attributes = make(map[resourcev1alpha3.QualifiedName]DeviceAttributeApplyConfiguration, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.Attributes[k] = v
    +	}
    +	return b
    +}
    +
    +// WithCapacity puts the entries into the Capacity field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Capacity field,
    +// overwriting an existing map entries in Capacity field with the same key.
    +func (b *BasicDeviceApplyConfiguration) WithCapacity(entries map[resourcev1alpha3.QualifiedName]resource.Quantity) *BasicDeviceApplyConfiguration {
    +	if b.Capacity == nil && len(entries) > 0 {
    +		b.Capacity = make(map[resourcev1alpha3.QualifiedName]resource.Quantity, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.Capacity[k] = v
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/celdeviceselector.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/celdeviceselector.go
    new file mode 100644
    index 000000000000..c59b6a2e3703
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/celdeviceselector.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// CELDeviceSelectorApplyConfiguration represents a declarative configuration of the CELDeviceSelector type for use
    +// with apply.
    +type CELDeviceSelectorApplyConfiguration struct {
    +	Expression *string `json:"expression,omitempty"`
    +}
    +
    +// CELDeviceSelectorApplyConfiguration constructs a declarative configuration of the CELDeviceSelector type for use with
    +// apply.
    +func CELDeviceSelector() *CELDeviceSelectorApplyConfiguration {
    +	return &CELDeviceSelectorApplyConfiguration{}
    +}
    +
    +// WithExpression sets the Expression field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Expression field is set to the value of the last call.
    +func (b *CELDeviceSelectorApplyConfiguration) WithExpression(value string) *CELDeviceSelectorApplyConfiguration {
    +	b.Expression = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/device.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/device.go
    new file mode 100644
    index 000000000000..efdb5f37a9e1
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/device.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// DeviceApplyConfiguration represents a declarative configuration of the Device type for use
    +// with apply.
    +type DeviceApplyConfiguration struct {
    +	Name  *string                        `json:"name,omitempty"`
    +	Basic *BasicDeviceApplyConfiguration `json:"basic,omitempty"`
    +}
    +
    +// DeviceApplyConfiguration constructs a declarative configuration of the Device type for use with
    +// apply.
    +func Device() *DeviceApplyConfiguration {
    +	return &DeviceApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *DeviceApplyConfiguration) WithName(value string) *DeviceApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithBasic sets the Basic field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Basic field is set to the value of the last call.
    +func (b *DeviceApplyConfiguration) WithBasic(value *BasicDeviceApplyConfiguration) *DeviceApplyConfiguration {
    +	b.Basic = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceallocationconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceallocationconfiguration.go
    new file mode 100644
    index 000000000000..25907e40d95d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceallocationconfiguration.go
    @@ -0,0 +1,63 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +)
    +
    +// DeviceAllocationConfigurationApplyConfiguration represents a declarative configuration of the DeviceAllocationConfiguration type for use
    +// with apply.
    +type DeviceAllocationConfigurationApplyConfiguration struct {
    +	Source                                *resourcev1alpha3.AllocationConfigSource `json:"source,omitempty"`
    +	Requests                              []string                                 `json:"requests,omitempty"`
    +	DeviceConfigurationApplyConfiguration `json:",inline"`
    +}
    +
    +// DeviceAllocationConfigurationApplyConfiguration constructs a declarative configuration of the DeviceAllocationConfiguration type for use with
    +// apply.
    +func DeviceAllocationConfiguration() *DeviceAllocationConfigurationApplyConfiguration {
    +	return &DeviceAllocationConfigurationApplyConfiguration{}
    +}
    +
    +// WithSource sets the Source field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Source field is set to the value of the last call.
    +func (b *DeviceAllocationConfigurationApplyConfiguration) WithSource(value resourcev1alpha3.AllocationConfigSource) *DeviceAllocationConfigurationApplyConfiguration {
    +	b.Source = &value
    +	return b
    +}
    +
    +// WithRequests adds the given value to the Requests field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Requests field.
    +func (b *DeviceAllocationConfigurationApplyConfiguration) WithRequests(values ...string) *DeviceAllocationConfigurationApplyConfiguration {
    +	for i := range values {
    +		b.Requests = append(b.Requests, values[i])
    +	}
    +	return b
    +}
    +
    +// WithOpaque sets the Opaque field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Opaque field is set to the value of the last call.
    +func (b *DeviceAllocationConfigurationApplyConfiguration) WithOpaque(value *OpaqueDeviceConfigurationApplyConfiguration) *DeviceAllocationConfigurationApplyConfiguration {
    +	b.DeviceConfigurationApplyConfiguration.Opaque = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceallocationresult.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceallocationresult.go
    new file mode 100644
    index 000000000000..0cfb264b4eae
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceallocationresult.go
    @@ -0,0 +1,58 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// DeviceAllocationResultApplyConfiguration represents a declarative configuration of the DeviceAllocationResult type for use
    +// with apply.
    +type DeviceAllocationResultApplyConfiguration struct {
    +	Results []DeviceRequestAllocationResultApplyConfiguration `json:"results,omitempty"`
    +	Config  []DeviceAllocationConfigurationApplyConfiguration `json:"config,omitempty"`
    +}
    +
    +// DeviceAllocationResultApplyConfiguration constructs a declarative configuration of the DeviceAllocationResult type for use with
    +// apply.
    +func DeviceAllocationResult() *DeviceAllocationResultApplyConfiguration {
    +	return &DeviceAllocationResultApplyConfiguration{}
    +}
    +
    +// WithResults adds the given value to the Results field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Results field.
    +func (b *DeviceAllocationResultApplyConfiguration) WithResults(values ...*DeviceRequestAllocationResultApplyConfiguration) *DeviceAllocationResultApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithResults")
    +		}
    +		b.Results = append(b.Results, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithConfig adds the given value to the Config field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Config field.
    +func (b *DeviceAllocationResultApplyConfiguration) WithConfig(values ...*DeviceAllocationConfigurationApplyConfiguration) *DeviceAllocationResultApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConfig")
    +		}
    +		b.Config = append(b.Config, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceattribute.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceattribute.go
    new file mode 100644
    index 000000000000..6b0b7a40ac73
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceattribute.go
    @@ -0,0 +1,66 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// DeviceAttributeApplyConfiguration represents a declarative configuration of the DeviceAttribute type for use
    +// with apply.
    +type DeviceAttributeApplyConfiguration struct {
    +	IntValue     *int64  `json:"int,omitempty"`
    +	BoolValue    *bool   `json:"bool,omitempty"`
    +	StringValue  *string `json:"string,omitempty"`
    +	VersionValue *string `json:"version,omitempty"`
    +}
    +
    +// DeviceAttributeApplyConfiguration constructs a declarative configuration of the DeviceAttribute type for use with
    +// apply.
    +func DeviceAttribute() *DeviceAttributeApplyConfiguration {
    +	return &DeviceAttributeApplyConfiguration{}
    +}
    +
    +// WithIntValue sets the IntValue field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the IntValue field is set to the value of the last call.
    +func (b *DeviceAttributeApplyConfiguration) WithIntValue(value int64) *DeviceAttributeApplyConfiguration {
    +	b.IntValue = &value
    +	return b
    +}
    +
    +// WithBoolValue sets the BoolValue field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the BoolValue field is set to the value of the last call.
    +func (b *DeviceAttributeApplyConfiguration) WithBoolValue(value bool) *DeviceAttributeApplyConfiguration {
    +	b.BoolValue = &value
    +	return b
    +}
    +
    +// WithStringValue sets the StringValue field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the StringValue field is set to the value of the last call.
    +func (b *DeviceAttributeApplyConfiguration) WithStringValue(value string) *DeviceAttributeApplyConfiguration {
    +	b.StringValue = &value
    +	return b
    +}
    +
    +// WithVersionValue sets the VersionValue field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the VersionValue field is set to the value of the last call.
    +func (b *DeviceAttributeApplyConfiguration) WithVersionValue(value string) *DeviceAttributeApplyConfiguration {
    +	b.VersionValue = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclaim.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclaim.go
    new file mode 100644
    index 000000000000..ce3ab56d8b7e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclaim.go
    @@ -0,0 +1,72 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// DeviceClaimApplyConfiguration represents a declarative configuration of the DeviceClaim type for use
    +// with apply.
    +type DeviceClaimApplyConfiguration struct {
    +	Requests    []DeviceRequestApplyConfiguration            `json:"requests,omitempty"`
    +	Constraints []DeviceConstraintApplyConfiguration         `json:"constraints,omitempty"`
    +	Config      []DeviceClaimConfigurationApplyConfiguration `json:"config,omitempty"`
    +}
    +
    +// DeviceClaimApplyConfiguration constructs a declarative configuration of the DeviceClaim type for use with
    +// apply.
    +func DeviceClaim() *DeviceClaimApplyConfiguration {
    +	return &DeviceClaimApplyConfiguration{}
    +}
    +
    +// WithRequests adds the given value to the Requests field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Requests field.
    +func (b *DeviceClaimApplyConfiguration) WithRequests(values ...*DeviceRequestApplyConfiguration) *DeviceClaimApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithRequests")
    +		}
    +		b.Requests = append(b.Requests, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithConstraints adds the given value to the Constraints field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Constraints field.
    +func (b *DeviceClaimApplyConfiguration) WithConstraints(values ...*DeviceConstraintApplyConfiguration) *DeviceClaimApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConstraints")
    +		}
    +		b.Constraints = append(b.Constraints, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithConfig adds the given value to the Config field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Config field.
    +func (b *DeviceClaimApplyConfiguration) WithConfig(values ...*DeviceClaimConfigurationApplyConfiguration) *DeviceClaimApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConfig")
    +		}
    +		b.Config = append(b.Config, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclaimconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclaimconfiguration.go
    new file mode 100644
    index 000000000000..045798856048
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclaimconfiguration.go
    @@ -0,0 +1,50 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// DeviceClaimConfigurationApplyConfiguration represents a declarative configuration of the DeviceClaimConfiguration type for use
    +// with apply.
    +type DeviceClaimConfigurationApplyConfiguration struct {
    +	Requests                              []string `json:"requests,omitempty"`
    +	DeviceConfigurationApplyConfiguration `json:",inline"`
    +}
    +
    +// DeviceClaimConfigurationApplyConfiguration constructs a declarative configuration of the DeviceClaimConfiguration type for use with
    +// apply.
    +func DeviceClaimConfiguration() *DeviceClaimConfigurationApplyConfiguration {
    +	return &DeviceClaimConfigurationApplyConfiguration{}
    +}
    +
    +// WithRequests adds the given value to the Requests field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Requests field.
    +func (b *DeviceClaimConfigurationApplyConfiguration) WithRequests(values ...string) *DeviceClaimConfigurationApplyConfiguration {
    +	for i := range values {
    +		b.Requests = append(b.Requests, values[i])
    +	}
    +	return b
    +}
    +
    +// WithOpaque sets the Opaque field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Opaque field is set to the value of the last call.
    +func (b *DeviceClaimConfigurationApplyConfiguration) WithOpaque(value *OpaqueDeviceConfigurationApplyConfiguration) *DeviceClaimConfigurationApplyConfiguration {
    +	b.DeviceConfigurationApplyConfiguration.Opaque = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclass.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclass.go
    new file mode 100644
    index 000000000000..ae3e396e0652
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclass.go
    @@ -0,0 +1,253 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// DeviceClassApplyConfiguration represents a declarative configuration of the DeviceClass type for use
    +// with apply.
    +type DeviceClassApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *DeviceClassSpecApplyConfiguration `json:"spec,omitempty"`
    +}
    +
    +// DeviceClass constructs a declarative configuration of the DeviceClass type for use with
    +// apply.
    +func DeviceClass(name string) *DeviceClassApplyConfiguration {
    +	b := &DeviceClassApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("DeviceClass")
    +	b.WithAPIVersion("resource.k8s.io/v1alpha3")
    +	return b
    +}
    +
    +// ExtractDeviceClass extracts the applied configuration owned by fieldManager from
    +// deviceClass. If no managedFields are found in deviceClass for fieldManager, a
    +// DeviceClassApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// deviceClass must be a unmodified DeviceClass API object that was retrieved from the Kubernetes API.
    +// ExtractDeviceClass provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractDeviceClass(deviceClass *resourcev1alpha3.DeviceClass, fieldManager string) (*DeviceClassApplyConfiguration, error) {
    +	return extractDeviceClass(deviceClass, fieldManager, "")
    +}
    +
    +// ExtractDeviceClassStatus is the same as ExtractDeviceClass except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractDeviceClassStatus(deviceClass *resourcev1alpha3.DeviceClass, fieldManager string) (*DeviceClassApplyConfiguration, error) {
    +	return extractDeviceClass(deviceClass, fieldManager, "status")
    +}
    +
    +func extractDeviceClass(deviceClass *resourcev1alpha3.DeviceClass, fieldManager string, subresource string) (*DeviceClassApplyConfiguration, error) {
    +	b := &DeviceClassApplyConfiguration{}
    +	err := managedfields.ExtractInto(deviceClass, internal.Parser().Type("io.k8s.api.resource.v1alpha3.DeviceClass"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(deviceClass.Name)
    +
    +	b.WithKind("DeviceClass")
    +	b.WithAPIVersion("resource.k8s.io/v1alpha3")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithKind(value string) *DeviceClassApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithAPIVersion(value string) *DeviceClassApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithName(value string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithGenerateName(value string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithNamespace(value string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithUID(value types.UID) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithResourceVersion(value string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithGeneration(value int64) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *DeviceClassApplyConfiguration) WithLabels(entries map[string]string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *DeviceClassApplyConfiguration) WithAnnotations(entries map[string]string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *DeviceClassApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *DeviceClassApplyConfiguration) WithFinalizers(values ...string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *DeviceClassApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithSpec(value *DeviceClassSpecApplyConfiguration) *DeviceClassApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *DeviceClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclassconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclassconfiguration.go
    new file mode 100644
    index 000000000000..6daa4a97e9a8
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclassconfiguration.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// DeviceClassConfigurationApplyConfiguration represents a declarative configuration of the DeviceClassConfiguration type for use
    +// with apply.
    +type DeviceClassConfigurationApplyConfiguration struct {
    +	DeviceConfigurationApplyConfiguration `json:",inline"`
    +}
    +
    +// DeviceClassConfigurationApplyConfiguration constructs a declarative configuration of the DeviceClassConfiguration type for use with
    +// apply.
    +func DeviceClassConfiguration() *DeviceClassConfigurationApplyConfiguration {
    +	return &DeviceClassConfigurationApplyConfiguration{}
    +}
    +
    +// WithOpaque sets the Opaque field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Opaque field is set to the value of the last call.
    +func (b *DeviceClassConfigurationApplyConfiguration) WithOpaque(value *OpaqueDeviceConfigurationApplyConfiguration) *DeviceClassConfigurationApplyConfiguration {
    +	b.DeviceConfigurationApplyConfiguration.Opaque = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclassspec.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclassspec.go
    new file mode 100644
    index 000000000000..37db6a1cc938
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceclassspec.go
    @@ -0,0 +1,58 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// DeviceClassSpecApplyConfiguration represents a declarative configuration of the DeviceClassSpec type for use
    +// with apply.
    +type DeviceClassSpecApplyConfiguration struct {
    +	Selectors []DeviceSelectorApplyConfiguration           `json:"selectors,omitempty"`
    +	Config    []DeviceClassConfigurationApplyConfiguration `json:"config,omitempty"`
    +}
    +
    +// DeviceClassSpecApplyConfiguration constructs a declarative configuration of the DeviceClassSpec type for use with
    +// apply.
    +func DeviceClassSpec() *DeviceClassSpecApplyConfiguration {
    +	return &DeviceClassSpecApplyConfiguration{}
    +}
    +
    +// WithSelectors adds the given value to the Selectors field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Selectors field.
    +func (b *DeviceClassSpecApplyConfiguration) WithSelectors(values ...*DeviceSelectorApplyConfiguration) *DeviceClassSpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithSelectors")
    +		}
    +		b.Selectors = append(b.Selectors, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithConfig adds the given value to the Config field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Config field.
    +func (b *DeviceClassSpecApplyConfiguration) WithConfig(values ...*DeviceClassConfigurationApplyConfiguration) *DeviceClassSpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConfig")
    +		}
    +		b.Config = append(b.Config, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceconfiguration.go
    new file mode 100644
    index 000000000000..62c0d997de13
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceconfiguration.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// DeviceConfigurationApplyConfiguration represents a declarative configuration of the DeviceConfiguration type for use
    +// with apply.
    +type DeviceConfigurationApplyConfiguration struct {
    +	Opaque *OpaqueDeviceConfigurationApplyConfiguration `json:"opaque,omitempty"`
    +}
    +
    +// DeviceConfigurationApplyConfiguration constructs a declarative configuration of the DeviceConfiguration type for use with
    +// apply.
    +func DeviceConfiguration() *DeviceConfigurationApplyConfiguration {
    +	return &DeviceConfigurationApplyConfiguration{}
    +}
    +
    +// WithOpaque sets the Opaque field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Opaque field is set to the value of the last call.
    +func (b *DeviceConfigurationApplyConfiguration) WithOpaque(value *OpaqueDeviceConfigurationApplyConfiguration) *DeviceConfigurationApplyConfiguration {
    +	b.Opaque = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceconstraint.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceconstraint.go
    new file mode 100644
    index 000000000000..712f431f4313
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceconstraint.go
    @@ -0,0 +1,54 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +)
    +
    +// DeviceConstraintApplyConfiguration represents a declarative configuration of the DeviceConstraint type for use
    +// with apply.
    +type DeviceConstraintApplyConfiguration struct {
    +	Requests       []string                             `json:"requests,omitempty"`
    +	MatchAttribute *resourcev1alpha3.FullyQualifiedName `json:"matchAttribute,omitempty"`
    +}
    +
    +// DeviceConstraintApplyConfiguration constructs a declarative configuration of the DeviceConstraint type for use with
    +// apply.
    +func DeviceConstraint() *DeviceConstraintApplyConfiguration {
    +	return &DeviceConstraintApplyConfiguration{}
    +}
    +
    +// WithRequests adds the given value to the Requests field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Requests field.
    +func (b *DeviceConstraintApplyConfiguration) WithRequests(values ...string) *DeviceConstraintApplyConfiguration {
    +	for i := range values {
    +		b.Requests = append(b.Requests, values[i])
    +	}
    +	return b
    +}
    +
    +// WithMatchAttribute sets the MatchAttribute field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the MatchAttribute field is set to the value of the last call.
    +func (b *DeviceConstraintApplyConfiguration) WithMatchAttribute(value resourcev1alpha3.FullyQualifiedName) *DeviceConstraintApplyConfiguration {
    +	b.MatchAttribute = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/devicerequest.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/devicerequest.go
    new file mode 100644
    index 000000000000..e5c87efe4753
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/devicerequest.go
    @@ -0,0 +1,93 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +)
    +
    +// DeviceRequestApplyConfiguration represents a declarative configuration of the DeviceRequest type for use
    +// with apply.
    +type DeviceRequestApplyConfiguration struct {
    +	Name            *string                                `json:"name,omitempty"`
    +	DeviceClassName *string                                `json:"deviceClassName,omitempty"`
    +	Selectors       []DeviceSelectorApplyConfiguration     `json:"selectors,omitempty"`
    +	AllocationMode  *resourcev1alpha3.DeviceAllocationMode `json:"allocationMode,omitempty"`
    +	Count           *int64                                 `json:"count,omitempty"`
    +	AdminAccess     *bool                                  `json:"adminAccess,omitempty"`
    +}
    +
    +// DeviceRequestApplyConfiguration constructs a declarative configuration of the DeviceRequest type for use with
    +// apply.
    +func DeviceRequest() *DeviceRequestApplyConfiguration {
    +	return &DeviceRequestApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *DeviceRequestApplyConfiguration) WithName(value string) *DeviceRequestApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithDeviceClassName sets the DeviceClassName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeviceClassName field is set to the value of the last call.
    +func (b *DeviceRequestApplyConfiguration) WithDeviceClassName(value string) *DeviceRequestApplyConfiguration {
    +	b.DeviceClassName = &value
    +	return b
    +}
    +
    +// WithSelectors adds the given value to the Selectors field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Selectors field.
    +func (b *DeviceRequestApplyConfiguration) WithSelectors(values ...*DeviceSelectorApplyConfiguration) *DeviceRequestApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithSelectors")
    +		}
    +		b.Selectors = append(b.Selectors, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithAllocationMode sets the AllocationMode field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the AllocationMode field is set to the value of the last call.
    +func (b *DeviceRequestApplyConfiguration) WithAllocationMode(value resourcev1alpha3.DeviceAllocationMode) *DeviceRequestApplyConfiguration {
    +	b.AllocationMode = &value
    +	return b
    +}
    +
    +// WithCount sets the Count field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Count field is set to the value of the last call.
    +func (b *DeviceRequestApplyConfiguration) WithCount(value int64) *DeviceRequestApplyConfiguration {
    +	b.Count = &value
    +	return b
    +}
    +
    +// WithAdminAccess sets the AdminAccess field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the AdminAccess field is set to the value of the last call.
    +func (b *DeviceRequestApplyConfiguration) WithAdminAccess(value bool) *DeviceRequestApplyConfiguration {
    +	b.AdminAccess = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/devicerequestallocationresult.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/devicerequestallocationresult.go
    new file mode 100644
    index 000000000000..4c3cffcf465d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/devicerequestallocationresult.go
    @@ -0,0 +1,75 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// DeviceRequestAllocationResultApplyConfiguration represents a declarative configuration of the DeviceRequestAllocationResult type for use
    +// with apply.
    +type DeviceRequestAllocationResultApplyConfiguration struct {
    +	Request     *string `json:"request,omitempty"`
    +	Driver      *string `json:"driver,omitempty"`
    +	Pool        *string `json:"pool,omitempty"`
    +	Device      *string `json:"device,omitempty"`
    +	AdminAccess *bool   `json:"adminAccess,omitempty"`
    +}
    +
    +// DeviceRequestAllocationResultApplyConfiguration constructs a declarative configuration of the DeviceRequestAllocationResult type for use with
    +// apply.
    +func DeviceRequestAllocationResult() *DeviceRequestAllocationResultApplyConfiguration {
    +	return &DeviceRequestAllocationResultApplyConfiguration{}
    +}
    +
    +// WithRequest sets the Request field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Request field is set to the value of the last call.
    +func (b *DeviceRequestAllocationResultApplyConfiguration) WithRequest(value string) *DeviceRequestAllocationResultApplyConfiguration {
    +	b.Request = &value
    +	return b
    +}
    +
    +// WithDriver sets the Driver field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Driver field is set to the value of the last call.
    +func (b *DeviceRequestAllocationResultApplyConfiguration) WithDriver(value string) *DeviceRequestAllocationResultApplyConfiguration {
    +	b.Driver = &value
    +	return b
    +}
    +
    +// WithPool sets the Pool field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Pool field is set to the value of the last call.
    +func (b *DeviceRequestAllocationResultApplyConfiguration) WithPool(value string) *DeviceRequestAllocationResultApplyConfiguration {
    +	b.Pool = &value
    +	return b
    +}
    +
    +// WithDevice sets the Device field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Device field is set to the value of the last call.
    +func (b *DeviceRequestAllocationResultApplyConfiguration) WithDevice(value string) *DeviceRequestAllocationResultApplyConfiguration {
    +	b.Device = &value
    +	return b
    +}
    +
    +// WithAdminAccess sets the AdminAccess field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the AdminAccess field is set to the value of the last call.
    +func (b *DeviceRequestAllocationResultApplyConfiguration) WithAdminAccess(value bool) *DeviceRequestAllocationResultApplyConfiguration {
    +	b.AdminAccess = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceselector.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceselector.go
    new file mode 100644
    index 000000000000..574299d15e4e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/deviceselector.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// DeviceSelectorApplyConfiguration represents a declarative configuration of the DeviceSelector type for use
    +// with apply.
    +type DeviceSelectorApplyConfiguration struct {
    +	CEL *CELDeviceSelectorApplyConfiguration `json:"cel,omitempty"`
    +}
    +
    +// DeviceSelectorApplyConfiguration constructs a declarative configuration of the DeviceSelector type for use with
    +// apply.
    +func DeviceSelector() *DeviceSelectorApplyConfiguration {
    +	return &DeviceSelectorApplyConfiguration{}
    +}
    +
    +// WithCEL sets the CEL field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CEL field is set to the value of the last call.
    +func (b *DeviceSelectorApplyConfiguration) WithCEL(value *CELDeviceSelectorApplyConfiguration) *DeviceSelectorApplyConfiguration {
    +	b.CEL = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/networkdevicedata.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/networkdevicedata.go
    new file mode 100644
    index 000000000000..9ea773ed42c7
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/networkdevicedata.go
    @@ -0,0 +1,59 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// NetworkDeviceDataApplyConfiguration represents a declarative configuration of the NetworkDeviceData type for use
    +// with apply.
    +type NetworkDeviceDataApplyConfiguration struct {
    +	InterfaceName   *string  `json:"interfaceName,omitempty"`
    +	IPs             []string `json:"ips,omitempty"`
    +	HardwareAddress *string  `json:"hardwareAddress,omitempty"`
    +}
    +
    +// NetworkDeviceDataApplyConfiguration constructs a declarative configuration of the NetworkDeviceData type for use with
    +// apply.
    +func NetworkDeviceData() *NetworkDeviceDataApplyConfiguration {
    +	return &NetworkDeviceDataApplyConfiguration{}
    +}
    +
    +// WithInterfaceName sets the InterfaceName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the InterfaceName field is set to the value of the last call.
    +func (b *NetworkDeviceDataApplyConfiguration) WithInterfaceName(value string) *NetworkDeviceDataApplyConfiguration {
    +	b.InterfaceName = &value
    +	return b
    +}
    +
    +// WithIPs adds the given value to the IPs field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the IPs field.
    +func (b *NetworkDeviceDataApplyConfiguration) WithIPs(values ...string) *NetworkDeviceDataApplyConfiguration {
    +	for i := range values {
    +		b.IPs = append(b.IPs, values[i])
    +	}
    +	return b
    +}
    +
    +// WithHardwareAddress sets the HardwareAddress field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the HardwareAddress field is set to the value of the last call.
    +func (b *NetworkDeviceDataApplyConfiguration) WithHardwareAddress(value string) *NetworkDeviceDataApplyConfiguration {
    +	b.HardwareAddress = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/opaquedeviceconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/opaquedeviceconfiguration.go
    new file mode 100644
    index 000000000000..caf9d059c3f9
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/opaquedeviceconfiguration.go
    @@ -0,0 +1,52 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +)
    +
    +// OpaqueDeviceConfigurationApplyConfiguration represents a declarative configuration of the OpaqueDeviceConfiguration type for use
    +// with apply.
    +type OpaqueDeviceConfigurationApplyConfiguration struct {
    +	Driver     *string               `json:"driver,omitempty"`
    +	Parameters *runtime.RawExtension `json:"parameters,omitempty"`
    +}
    +
    +// OpaqueDeviceConfigurationApplyConfiguration constructs a declarative configuration of the OpaqueDeviceConfiguration type for use with
    +// apply.
    +func OpaqueDeviceConfiguration() *OpaqueDeviceConfigurationApplyConfiguration {
    +	return &OpaqueDeviceConfigurationApplyConfiguration{}
    +}
    +
    +// WithDriver sets the Driver field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Driver field is set to the value of the last call.
    +func (b *OpaqueDeviceConfigurationApplyConfiguration) WithDriver(value string) *OpaqueDeviceConfigurationApplyConfiguration {
    +	b.Driver = &value
    +	return b
    +}
    +
    +// WithParameters sets the Parameters field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Parameters field is set to the value of the last call.
    +func (b *OpaqueDeviceConfigurationApplyConfiguration) WithParameters(value runtime.RawExtension) *OpaqueDeviceConfigurationApplyConfiguration {
    +	b.Parameters = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaim.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaim.go
    similarity index 84%
    rename from vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaim.go
    rename to vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaim.go
    index 6c219f837b6f..96cf63f1f84a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaim.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaim.go
    @@ -16,10 +16,10 @@ limitations under the License.
     
     // Code generated by applyconfiguration-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
     import (
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ResourceClaimApplyConfiguration represents an declarative configuration of the ResourceClaim type for use
    +// ResourceClaimApplyConfiguration represents a declarative configuration of the ResourceClaim type for use
     // with apply.
     type ResourceClaimApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,14 +36,14 @@ type ResourceClaimApplyConfiguration struct {
     	Status                           *ResourceClaimStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// ResourceClaim constructs an declarative configuration of the ResourceClaim type for use with
    +// ResourceClaim constructs a declarative configuration of the ResourceClaim type for use with
     // apply.
     func ResourceClaim(name, namespace string) *ResourceClaimApplyConfiguration {
     	b := &ResourceClaimApplyConfiguration{}
     	b.WithName(name)
     	b.WithNamespace(namespace)
     	b.WithKind("ResourceClaim")
    -	b.WithAPIVersion("resource.k8s.io/v1alpha2")
    +	b.WithAPIVersion("resource.k8s.io/v1alpha3")
     	return b
     }
     
    @@ -58,20 +58,20 @@ func ResourceClaim(name, namespace string) *ResourceClaimApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractResourceClaim(resourceClaim *resourcev1alpha2.ResourceClaim, fieldManager string) (*ResourceClaimApplyConfiguration, error) {
    +func ExtractResourceClaim(resourceClaim *resourcev1alpha3.ResourceClaim, fieldManager string) (*ResourceClaimApplyConfiguration, error) {
     	return extractResourceClaim(resourceClaim, fieldManager, "")
     }
     
     // ExtractResourceClaimStatus is the same as ExtractResourceClaim except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractResourceClaimStatus(resourceClaim *resourcev1alpha2.ResourceClaim, fieldManager string) (*ResourceClaimApplyConfiguration, error) {
    +func ExtractResourceClaimStatus(resourceClaim *resourcev1alpha3.ResourceClaim, fieldManager string) (*ResourceClaimApplyConfiguration, error) {
     	return extractResourceClaim(resourceClaim, fieldManager, "status")
     }
     
    -func extractResourceClaim(resourceClaim *resourcev1alpha2.ResourceClaim, fieldManager string, subresource string) (*ResourceClaimApplyConfiguration, error) {
    +func extractResourceClaim(resourceClaim *resourcev1alpha3.ResourceClaim, fieldManager string, subresource string) (*ResourceClaimApplyConfiguration, error) {
     	b := &ResourceClaimApplyConfiguration{}
    -	err := managedfields.ExtractInto(resourceClaim, internal.Parser().Type("io.k8s.api.resource.v1alpha2.ResourceClaim"), fieldManager, b, subresource)
    +	err := managedfields.ExtractInto(resourceClaim, internal.Parser().Type("io.k8s.api.resource.v1alpha3.ResourceClaim"), fieldManager, b, subresource)
     	if err != nil {
     		return nil, err
     	}
    @@ -79,7 +79,7 @@ func extractResourceClaim(resourceClaim *resourcev1alpha2.ResourceClaim, fieldMa
     	b.WithNamespace(resourceClaim.Namespace)
     
     	b.WithKind("ResourceClaim")
    -	b.WithAPIVersion("resource.k8s.io/v1alpha2")
    +	b.WithAPIVersion("resource.k8s.io/v1alpha3")
     	return b, nil
     }
     
    @@ -87,7 +87,7 @@ func extractResourceClaim(resourceClaim *resourcev1alpha2.ResourceClaim, fieldMa
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithKind(value string) *ResourceClaimApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -95,7 +95,7 @@ func (b *ResourceClaimApplyConfiguration) WithKind(value string) *ResourceClaimA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithAPIVersion(value string) *ResourceClaimApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -104,7 +104,7 @@ func (b *ResourceClaimApplyConfiguration) WithAPIVersion(value string) *Resource
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithName(value string) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -113,7 +113,7 @@ func (b *ResourceClaimApplyConfiguration) WithName(value string) *ResourceClaimA
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithGenerateName(value string) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -122,7 +122,7 @@ func (b *ResourceClaimApplyConfiguration) WithGenerateName(value string) *Resour
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithNamespace(value string) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -131,7 +131,7 @@ func (b *ResourceClaimApplyConfiguration) WithNamespace(value string) *ResourceC
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithUID(value types.UID) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -140,7 +140,7 @@ func (b *ResourceClaimApplyConfiguration) WithUID(value types.UID) *ResourceClai
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithResourceVersion(value string) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -149,7 +149,7 @@ func (b *ResourceClaimApplyConfiguration) WithResourceVersion(value string) *Res
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithGeneration(value int64) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -158,7 +158,7 @@ func (b *ResourceClaimApplyConfiguration) WithGeneration(value int64) *ResourceC
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -167,7 +167,7 @@ func (b *ResourceClaimApplyConfiguration) WithCreationTimestamp(value metav1.Tim
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -176,7 +176,7 @@ func (b *ResourceClaimApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ResourceClaimApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -186,11 +186,11 @@ func (b *ResourceClaimApplyConfiguration) WithDeletionGracePeriodSeconds(value i
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ResourceClaimApplyConfiguration) WithLabels(entries map[string]string) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -201,11 +201,11 @@ func (b *ResourceClaimApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ResourceClaimApplyConfiguration) WithAnnotations(entries map[string]string) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -219,7 +219,7 @@ func (b *ResourceClaimApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -230,7 +230,7 @@ func (b *ResourceClaimApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     func (b *ResourceClaimApplyConfiguration) WithFinalizers(values ...string) *ResourceClaimApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -256,3 +256,9 @@ func (b *ResourceClaimApplyConfiguration) WithStatus(value *ResourceClaimStatusA
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ResourceClaimApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimconsumerreference.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimconsumerreference.go
    similarity index 94%
    rename from vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimconsumerreference.go
    rename to vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimconsumerreference.go
    index 41bb9e9a1411..96196d7c952a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimconsumerreference.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimconsumerreference.go
    @@ -16,13 +16,13 @@ limitations under the License.
     
     // Code generated by applyconfiguration-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
     import (
     	types "k8s.io/apimachinery/pkg/types"
     )
     
    -// ResourceClaimConsumerReferenceApplyConfiguration represents an declarative configuration of the ResourceClaimConsumerReference type for use
    +// ResourceClaimConsumerReferenceApplyConfiguration represents a declarative configuration of the ResourceClaimConsumerReference type for use
     // with apply.
     type ResourceClaimConsumerReferenceApplyConfiguration struct {
     	APIGroup *string    `json:"apiGroup,omitempty"`
    @@ -31,7 +31,7 @@ type ResourceClaimConsumerReferenceApplyConfiguration struct {
     	UID      *types.UID `json:"uid,omitempty"`
     }
     
    -// ResourceClaimConsumerReferenceApplyConfiguration constructs an declarative configuration of the ResourceClaimConsumerReference type for use with
    +// ResourceClaimConsumerReferenceApplyConfiguration constructs a declarative configuration of the ResourceClaimConsumerReference type for use with
     // apply.
     func ResourceClaimConsumerReference() *ResourceClaimConsumerReferenceApplyConfiguration {
     	return &ResourceClaimConsumerReferenceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimspec.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimspec.go
    new file mode 100644
    index 000000000000..dfe8bdb1490c
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimspec.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// ResourceClaimSpecApplyConfiguration represents a declarative configuration of the ResourceClaimSpec type for use
    +// with apply.
    +type ResourceClaimSpecApplyConfiguration struct {
    +	Devices *DeviceClaimApplyConfiguration `json:"devices,omitempty"`
    +}
    +
    +// ResourceClaimSpecApplyConfiguration constructs a declarative configuration of the ResourceClaimSpec type for use with
    +// apply.
    +func ResourceClaimSpec() *ResourceClaimSpecApplyConfiguration {
    +	return &ResourceClaimSpecApplyConfiguration{}
    +}
    +
    +// WithDevices sets the Devices field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Devices field is set to the value of the last call.
    +func (b *ResourceClaimSpecApplyConfiguration) WithDevices(value *DeviceClaimApplyConfiguration) *ResourceClaimSpecApplyConfiguration {
    +	b.Devices = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimstatus.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimstatus.go
    similarity index 55%
    rename from vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimstatus.go
    rename to vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimstatus.go
    index c6fa610906fb..f0c32133aed0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimstatus.go
    @@ -16,31 +16,22 @@ limitations under the License.
     
     // Code generated by applyconfiguration-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
    -// ResourceClaimStatusApplyConfiguration represents an declarative configuration of the ResourceClaimStatus type for use
    +// ResourceClaimStatusApplyConfiguration represents a declarative configuration of the ResourceClaimStatus type for use
     // with apply.
     type ResourceClaimStatusApplyConfiguration struct {
    -	DriverName            *string                                            `json:"driverName,omitempty"`
    -	Allocation            *AllocationResultApplyConfiguration                `json:"allocation,omitempty"`
    -	ReservedFor           []ResourceClaimConsumerReferenceApplyConfiguration `json:"reservedFor,omitempty"`
    -	DeallocationRequested *bool                                              `json:"deallocationRequested,omitempty"`
    +	Allocation  *AllocationResultApplyConfiguration                `json:"allocation,omitempty"`
    +	ReservedFor []ResourceClaimConsumerReferenceApplyConfiguration `json:"reservedFor,omitempty"`
    +	Devices     []AllocatedDeviceStatusApplyConfiguration          `json:"devices,omitempty"`
     }
     
    -// ResourceClaimStatusApplyConfiguration constructs an declarative configuration of the ResourceClaimStatus type for use with
    +// ResourceClaimStatusApplyConfiguration constructs a declarative configuration of the ResourceClaimStatus type for use with
     // apply.
     func ResourceClaimStatus() *ResourceClaimStatusApplyConfiguration {
     	return &ResourceClaimStatusApplyConfiguration{}
     }
     
    -// WithDriverName sets the DriverName field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the DriverName field is set to the value of the last call.
    -func (b *ResourceClaimStatusApplyConfiguration) WithDriverName(value string) *ResourceClaimStatusApplyConfiguration {
    -	b.DriverName = &value
    -	return b
    -}
    -
     // WithAllocation sets the Allocation field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Allocation field is set to the value of the last call.
    @@ -62,10 +53,15 @@ func (b *ResourceClaimStatusApplyConfiguration) WithReservedFor(values ...*Resou
     	return b
     }
     
    -// WithDeallocationRequested sets the DeallocationRequested field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the DeallocationRequested field is set to the value of the last call.
    -func (b *ResourceClaimStatusApplyConfiguration) WithDeallocationRequested(value bool) *ResourceClaimStatusApplyConfiguration {
    -	b.DeallocationRequested = &value
    +// WithDevices adds the given value to the Devices field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Devices field.
    +func (b *ResourceClaimStatusApplyConfiguration) WithDevices(values ...*AllocatedDeviceStatusApplyConfiguration) *ResourceClaimStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithDevices")
    +		}
    +		b.Devices = append(b.Devices, *values[i])
    +	}
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimtemplate.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimtemplate.go
    similarity index 84%
    rename from vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimtemplate.go
    rename to vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimtemplate.go
    index fc2209b8f097..1eb55eee4d72 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimtemplate.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimtemplate.go
    @@ -16,10 +16,10 @@ limitations under the License.
     
     // Code generated by applyconfiguration-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
     import (
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ResourceClaimTemplateApplyConfiguration represents an declarative configuration of the ResourceClaimTemplate type for use
    +// ResourceClaimTemplateApplyConfiguration represents a declarative configuration of the ResourceClaimTemplate type for use
     // with apply.
     type ResourceClaimTemplateApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,14 +35,14 @@ type ResourceClaimTemplateApplyConfiguration struct {
     	Spec                             *ResourceClaimTemplateSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// ResourceClaimTemplate constructs an declarative configuration of the ResourceClaimTemplate type for use with
    +// ResourceClaimTemplate constructs a declarative configuration of the ResourceClaimTemplate type for use with
     // apply.
     func ResourceClaimTemplate(name, namespace string) *ResourceClaimTemplateApplyConfiguration {
     	b := &ResourceClaimTemplateApplyConfiguration{}
     	b.WithName(name)
     	b.WithNamespace(namespace)
     	b.WithKind("ResourceClaimTemplate")
    -	b.WithAPIVersion("resource.k8s.io/v1alpha2")
    +	b.WithAPIVersion("resource.k8s.io/v1alpha3")
     	return b
     }
     
    @@ -57,20 +57,20 @@ func ResourceClaimTemplate(name, namespace string) *ResourceClaimTemplateApplyCo
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractResourceClaimTemplate(resourceClaimTemplate *resourcev1alpha2.ResourceClaimTemplate, fieldManager string) (*ResourceClaimTemplateApplyConfiguration, error) {
    +func ExtractResourceClaimTemplate(resourceClaimTemplate *resourcev1alpha3.ResourceClaimTemplate, fieldManager string) (*ResourceClaimTemplateApplyConfiguration, error) {
     	return extractResourceClaimTemplate(resourceClaimTemplate, fieldManager, "")
     }
     
     // ExtractResourceClaimTemplateStatus is the same as ExtractResourceClaimTemplate except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractResourceClaimTemplateStatus(resourceClaimTemplate *resourcev1alpha2.ResourceClaimTemplate, fieldManager string) (*ResourceClaimTemplateApplyConfiguration, error) {
    +func ExtractResourceClaimTemplateStatus(resourceClaimTemplate *resourcev1alpha3.ResourceClaimTemplate, fieldManager string) (*ResourceClaimTemplateApplyConfiguration, error) {
     	return extractResourceClaimTemplate(resourceClaimTemplate, fieldManager, "status")
     }
     
    -func extractResourceClaimTemplate(resourceClaimTemplate *resourcev1alpha2.ResourceClaimTemplate, fieldManager string, subresource string) (*ResourceClaimTemplateApplyConfiguration, error) {
    +func extractResourceClaimTemplate(resourceClaimTemplate *resourcev1alpha3.ResourceClaimTemplate, fieldManager string, subresource string) (*ResourceClaimTemplateApplyConfiguration, error) {
     	b := &ResourceClaimTemplateApplyConfiguration{}
    -	err := managedfields.ExtractInto(resourceClaimTemplate, internal.Parser().Type("io.k8s.api.resource.v1alpha2.ResourceClaimTemplate"), fieldManager, b, subresource)
    +	err := managedfields.ExtractInto(resourceClaimTemplate, internal.Parser().Type("io.k8s.api.resource.v1alpha3.ResourceClaimTemplate"), fieldManager, b, subresource)
     	if err != nil {
     		return nil, err
     	}
    @@ -78,7 +78,7 @@ func extractResourceClaimTemplate(resourceClaimTemplate *resourcev1alpha2.Resour
     	b.WithNamespace(resourceClaimTemplate.Namespace)
     
     	b.WithKind("ResourceClaimTemplate")
    -	b.WithAPIVersion("resource.k8s.io/v1alpha2")
    +	b.WithAPIVersion("resource.k8s.io/v1alpha3")
     	return b, nil
     }
     
    @@ -86,7 +86,7 @@ func extractResourceClaimTemplate(resourceClaimTemplate *resourcev1alpha2.Resour
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithKind(value string) *ResourceClaimTemplateApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -94,7 +94,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithKind(value string) *Resour
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithAPIVersion(value string) *ResourceClaimTemplateApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -103,7 +103,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithAPIVersion(value string) *
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithName(value string) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -112,7 +112,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithName(value string) *Resour
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithGenerateName(value string) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -121,7 +121,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithGenerateName(value string)
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithNamespace(value string) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -130,7 +130,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithNamespace(value string) *R
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithUID(value types.UID) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -139,7 +139,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithUID(value types.UID) *Reso
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithResourceVersion(value string) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -148,7 +148,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithResourceVersion(value stri
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithGeneration(value int64) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -157,7 +157,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithGeneration(value int64) *R
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -166,7 +166,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithCreationTimestamp(value me
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -175,7 +175,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithDeletionTimestamp(value me
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ResourceClaimTemplateApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -185,11 +185,11 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithDeletionGracePeriodSeconds
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ResourceClaimTemplateApplyConfiguration) WithLabels(entries map[string]string) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -200,11 +200,11 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithLabels(entries map[string]
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ResourceClaimTemplateApplyConfiguration) WithAnnotations(entries map[string]string) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -218,7 +218,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithOwnerReferences(values ...
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -229,7 +229,7 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithOwnerReferences(values ...
     func (b *ResourceClaimTemplateApplyConfiguration) WithFinalizers(values ...string) *ResourceClaimTemplateApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -247,3 +247,9 @@ func (b *ResourceClaimTemplateApplyConfiguration) WithSpec(value *ResourceClaimT
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ResourceClaimTemplateApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimtemplatespec.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimtemplatespec.go
    new file mode 100644
    index 000000000000..578f6bce1f87
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceclaimtemplatespec.go
    @@ -0,0 +1,194 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// ResourceClaimTemplateSpecApplyConfiguration represents a declarative configuration of the ResourceClaimTemplateSpec type for use
    +// with apply.
    +type ResourceClaimTemplateSpecApplyConfiguration struct {
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *ResourceClaimSpecApplyConfiguration `json:"spec,omitempty"`
    +}
    +
    +// ResourceClaimTemplateSpecApplyConfiguration constructs a declarative configuration of the ResourceClaimTemplateSpec type for use with
    +// apply.
    +func ResourceClaimTemplateSpec() *ResourceClaimTemplateSpecApplyConfiguration {
    +	return &ResourceClaimTemplateSpecApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithName(value string) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithGenerateName(value string) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithNamespace(value string) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithUID(value types.UID) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithResourceVersion(value string) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithGeneration(value int64) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithLabels(entries map[string]string) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithAnnotations(entries map[string]string) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithFinalizers(values ...string) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) WithSpec(value *ResourceClaimSpecApplyConfiguration) *ResourceClaimTemplateSpecApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourcepool.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourcepool.go
    new file mode 100644
    index 000000000000..23825d137f90
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourcepool.go
    @@ -0,0 +1,57 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +// ResourcePoolApplyConfiguration represents a declarative configuration of the ResourcePool type for use
    +// with apply.
    +type ResourcePoolApplyConfiguration struct {
    +	Name               *string `json:"name,omitempty"`
    +	Generation         *int64  `json:"generation,omitempty"`
    +	ResourceSliceCount *int64  `json:"resourceSliceCount,omitempty"`
    +}
    +
    +// ResourcePoolApplyConfiguration constructs a declarative configuration of the ResourcePool type for use with
    +// apply.
    +func ResourcePool() *ResourcePoolApplyConfiguration {
    +	return &ResourcePoolApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ResourcePoolApplyConfiguration) WithName(value string) *ResourcePoolApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *ResourcePoolApplyConfiguration) WithGeneration(value int64) *ResourcePoolApplyConfiguration {
    +	b.Generation = &value
    +	return b
    +}
    +
    +// WithResourceSliceCount sets the ResourceSliceCount field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceSliceCount field is set to the value of the last call.
    +func (b *ResourcePoolApplyConfiguration) WithResourceSliceCount(value int64) *ResourcePoolApplyConfiguration {
    +	b.ResourceSliceCount = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclass.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceslice.go
    similarity index 57%
    rename from vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclass.go
    rename to vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceslice.go
    index 724c9e88e00b..615cf3e0626f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceslice.go
    @@ -16,167 +16,164 @@ limitations under the License.
     
     // Code generated by applyconfiguration-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
     import (
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
     	internal "k8s.io/client-go/applyconfigurations/internal"
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ResourceClassApplyConfiguration represents an declarative configuration of the ResourceClass type for use
    +// ResourceSliceApplyConfiguration represents a declarative configuration of the ResourceSlice type for use
     // with apply.
    -type ResourceClassApplyConfiguration struct {
    +type ResourceSliceApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
     	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	DriverName                       *string                                             `json:"driverName,omitempty"`
    -	ParametersRef                    *ResourceClassParametersReferenceApplyConfiguration `json:"parametersRef,omitempty"`
    -	SuitableNodes                    *corev1.NodeSelectorApplyConfiguration              `json:"suitableNodes,omitempty"`
    +	Spec                             *ResourceSliceSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// ResourceClass constructs an declarative configuration of the ResourceClass type for use with
    +// ResourceSlice constructs a declarative configuration of the ResourceSlice type for use with
     // apply.
    -func ResourceClass(name string) *ResourceClassApplyConfiguration {
    -	b := &ResourceClassApplyConfiguration{}
    +func ResourceSlice(name string) *ResourceSliceApplyConfiguration {
    +	b := &ResourceSliceApplyConfiguration{}
     	b.WithName(name)
    -	b.WithKind("ResourceClass")
    -	b.WithAPIVersion("resource.k8s.io/v1alpha2")
    +	b.WithKind("ResourceSlice")
    +	b.WithAPIVersion("resource.k8s.io/v1alpha3")
     	return b
     }
     
    -// ExtractResourceClass extracts the applied configuration owned by fieldManager from
    -// resourceClass. If no managedFields are found in resourceClass for fieldManager, a
    -// ResourceClassApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// ExtractResourceSlice extracts the applied configuration owned by fieldManager from
    +// resourceSlice. If no managedFields are found in resourceSlice for fieldManager, a
    +// ResourceSliceApplyConfiguration is returned with only the Name, Namespace (if applicable),
     // APIVersion and Kind populated. It is possible that no managed fields were found for because other
     // field managers have taken ownership of all the fields previously owned by fieldManager, or because
     // the fieldManager never owned fields any fields.
    -// resourceClass must be a unmodified ResourceClass API object that was retrieved from the Kubernetes API.
    -// ExtractResourceClass provides a way to perform a extract/modify-in-place/apply workflow.
    +// resourceSlice must be a unmodified ResourceSlice API object that was retrieved from the Kubernetes API.
    +// ExtractResourceSlice provides a way to perform a extract/modify-in-place/apply workflow.
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractResourceClass(resourceClass *resourcev1alpha2.ResourceClass, fieldManager string) (*ResourceClassApplyConfiguration, error) {
    -	return extractResourceClass(resourceClass, fieldManager, "")
    +func ExtractResourceSlice(resourceSlice *resourcev1alpha3.ResourceSlice, fieldManager string) (*ResourceSliceApplyConfiguration, error) {
    +	return extractResourceSlice(resourceSlice, fieldManager, "")
     }
     
    -// ExtractResourceClassStatus is the same as ExtractResourceClass except
    +// ExtractResourceSliceStatus is the same as ExtractResourceSlice except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractResourceClassStatus(resourceClass *resourcev1alpha2.ResourceClass, fieldManager string) (*ResourceClassApplyConfiguration, error) {
    -	return extractResourceClass(resourceClass, fieldManager, "status")
    +func ExtractResourceSliceStatus(resourceSlice *resourcev1alpha3.ResourceSlice, fieldManager string) (*ResourceSliceApplyConfiguration, error) {
    +	return extractResourceSlice(resourceSlice, fieldManager, "status")
     }
     
    -func extractResourceClass(resourceClass *resourcev1alpha2.ResourceClass, fieldManager string, subresource string) (*ResourceClassApplyConfiguration, error) {
    -	b := &ResourceClassApplyConfiguration{}
    -	err := managedfields.ExtractInto(resourceClass, internal.Parser().Type("io.k8s.api.resource.v1alpha2.ResourceClass"), fieldManager, b, subresource)
    +func extractResourceSlice(resourceSlice *resourcev1alpha3.ResourceSlice, fieldManager string, subresource string) (*ResourceSliceApplyConfiguration, error) {
    +	b := &ResourceSliceApplyConfiguration{}
    +	err := managedfields.ExtractInto(resourceSlice, internal.Parser().Type("io.k8s.api.resource.v1alpha3.ResourceSlice"), fieldManager, b, subresource)
     	if err != nil {
     		return nil, err
     	}
    -	b.WithName(resourceClass.Name)
    +	b.WithName(resourceSlice.Name)
     
    -	b.WithKind("ResourceClass")
    -	b.WithAPIVersion("resource.k8s.io/v1alpha2")
    +	b.WithKind("ResourceSlice")
    +	b.WithAPIVersion("resource.k8s.io/v1alpha3")
     	return b, nil
     }
     
     // WithKind sets the Kind field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithKind(value string) *ResourceClassApplyConfiguration {
    -	b.Kind = &value
    +func (b *ResourceSliceApplyConfiguration) WithKind(value string) *ResourceSliceApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
     // WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithAPIVersion(value string) *ResourceClassApplyConfiguration {
    -	b.APIVersion = &value
    +func (b *ResourceSliceApplyConfiguration) WithAPIVersion(value string) *ResourceSliceApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
     // WithName sets the Name field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Name field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithName(value string) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithName(value string) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
     // WithGenerateName sets the GenerateName field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the GenerateName field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithGenerateName(value string) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithGenerateName(value string) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
     // WithNamespace sets the Namespace field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Namespace field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithNamespace(value string) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithNamespace(value string) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
     // WithUID sets the UID field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the UID field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithUID(value types.UID) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithUID(value types.UID) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
     // WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithResourceVersion(value string) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithResourceVersion(value string) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
     // WithGeneration sets the Generation field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Generation field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithGeneration(value int64) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithGeneration(value int64) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
     // WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,13 +181,13 @@ func (b *ResourceClassApplyConfiguration) WithDeletionGracePeriodSeconds(value i
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, the entries provided by each call will be put on the Labels field,
     // overwriting an existing map entries in Labels field with the same key.
    -func (b *ResourceClassApplyConfiguration) WithLabels(entries map[string]string) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithLabels(entries map[string]string) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,13 +196,13 @@ func (b *ResourceClassApplyConfiguration) WithLabels(entries map[string]string)
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, the entries provided by each call will be put on the Annotations field,
     // overwriting an existing map entries in Annotations field with the same key.
    -func (b *ResourceClassApplyConfiguration) WithAnnotations(entries map[string]string) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithAnnotations(entries map[string]string) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -213,13 +210,13 @@ func (b *ResourceClassApplyConfiguration) WithAnnotations(entries map[string]str
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *ResourceClassApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,40 +224,30 @@ func (b *ResourceClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     // WithFinalizers adds the given value to the Finalizers field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the Finalizers field.
    -func (b *ResourceClassApplyConfiguration) WithFinalizers(values ...string) *ResourceClassApplyConfiguration {
    +func (b *ResourceSliceApplyConfiguration) WithFinalizers(values ...string) *ResourceSliceApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
    -func (b *ResourceClassApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +func (b *ResourceSliceApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
     		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    -// WithDriverName sets the DriverName field in the declarative configuration to the given value
    +// WithSpec sets the Spec field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the DriverName field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithDriverName(value string) *ResourceClassApplyConfiguration {
    -	b.DriverName = &value
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithSpec(value *ResourceSliceSpecApplyConfiguration) *ResourceSliceApplyConfiguration {
    +	b.Spec = value
     	return b
     }
     
    -// WithParametersRef sets the ParametersRef field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the ParametersRef field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithParametersRef(value *ResourceClassParametersReferenceApplyConfiguration) *ResourceClassApplyConfiguration {
    -	b.ParametersRef = value
    -	return b
    -}
    -
    -// WithSuitableNodes sets the SuitableNodes field in the declarative configuration to the given value
    -// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    -// If called multiple times, the SuitableNodes field is set to the value of the last call.
    -func (b *ResourceClassApplyConfiguration) WithSuitableNodes(value *corev1.NodeSelectorApplyConfiguration) *ResourceClassApplyConfiguration {
    -	b.SuitableNodes = value
    -	return b
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ResourceSliceApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceslicespec.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceslicespec.go
    new file mode 100644
    index 000000000000..2ded7590739d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/resourceslicespec.go
    @@ -0,0 +1,93 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	v1 "k8s.io/client-go/applyconfigurations/core/v1"
    +)
    +
    +// ResourceSliceSpecApplyConfiguration represents a declarative configuration of the ResourceSliceSpec type for use
    +// with apply.
    +type ResourceSliceSpecApplyConfiguration struct {
    +	Driver       *string                            `json:"driver,omitempty"`
    +	Pool         *ResourcePoolApplyConfiguration    `json:"pool,omitempty"`
    +	NodeName     *string                            `json:"nodeName,omitempty"`
    +	NodeSelector *v1.NodeSelectorApplyConfiguration `json:"nodeSelector,omitempty"`
    +	AllNodes     *bool                              `json:"allNodes,omitempty"`
    +	Devices      []DeviceApplyConfiguration         `json:"devices,omitempty"`
    +}
    +
    +// ResourceSliceSpecApplyConfiguration constructs a declarative configuration of the ResourceSliceSpec type for use with
    +// apply.
    +func ResourceSliceSpec() *ResourceSliceSpecApplyConfiguration {
    +	return &ResourceSliceSpecApplyConfiguration{}
    +}
    +
    +// WithDriver sets the Driver field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Driver field is set to the value of the last call.
    +func (b *ResourceSliceSpecApplyConfiguration) WithDriver(value string) *ResourceSliceSpecApplyConfiguration {
    +	b.Driver = &value
    +	return b
    +}
    +
    +// WithPool sets the Pool field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Pool field is set to the value of the last call.
    +func (b *ResourceSliceSpecApplyConfiguration) WithPool(value *ResourcePoolApplyConfiguration) *ResourceSliceSpecApplyConfiguration {
    +	b.Pool = value
    +	return b
    +}
    +
    +// WithNodeName sets the NodeName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the NodeName field is set to the value of the last call.
    +func (b *ResourceSliceSpecApplyConfiguration) WithNodeName(value string) *ResourceSliceSpecApplyConfiguration {
    +	b.NodeName = &value
    +	return b
    +}
    +
    +// WithNodeSelector sets the NodeSelector field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the NodeSelector field is set to the value of the last call.
    +func (b *ResourceSliceSpecApplyConfiguration) WithNodeSelector(value *v1.NodeSelectorApplyConfiguration) *ResourceSliceSpecApplyConfiguration {
    +	b.NodeSelector = value
    +	return b
    +}
    +
    +// WithAllNodes sets the AllNodes field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the AllNodes field is set to the value of the last call.
    +func (b *ResourceSliceSpecApplyConfiguration) WithAllNodes(value bool) *ResourceSliceSpecApplyConfiguration {
    +	b.AllNodes = &value
    +	return b
    +}
    +
    +// WithDevices adds the given value to the Devices field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Devices field.
    +func (b *ResourceSliceSpecApplyConfiguration) WithDevices(values ...*DeviceApplyConfiguration) *ResourceSliceSpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithDevices")
    +		}
    +		b.Devices = append(b.Devices, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/allocateddevicestatus.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/allocateddevicestatus.go
    new file mode 100644
    index 000000000000..cd518977143b
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/allocateddevicestatus.go
    @@ -0,0 +1,94 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// AllocatedDeviceStatusApplyConfiguration represents a declarative configuration of the AllocatedDeviceStatus type for use
    +// with apply.
    +type AllocatedDeviceStatusApplyConfiguration struct {
    +	Driver      *string                              `json:"driver,omitempty"`
    +	Pool        *string                              `json:"pool,omitempty"`
    +	Device      *string                              `json:"device,omitempty"`
    +	Conditions  []v1.ConditionApplyConfiguration     `json:"conditions,omitempty"`
    +	Data        *runtime.RawExtension                `json:"data,omitempty"`
    +	NetworkData *NetworkDeviceDataApplyConfiguration `json:"networkData,omitempty"`
    +}
    +
    +// AllocatedDeviceStatusApplyConfiguration constructs a declarative configuration of the AllocatedDeviceStatus type for use with
    +// apply.
    +func AllocatedDeviceStatus() *AllocatedDeviceStatusApplyConfiguration {
    +	return &AllocatedDeviceStatusApplyConfiguration{}
    +}
    +
    +// WithDriver sets the Driver field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Driver field is set to the value of the last call.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithDriver(value string) *AllocatedDeviceStatusApplyConfiguration {
    +	b.Driver = &value
    +	return b
    +}
    +
    +// WithPool sets the Pool field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Pool field is set to the value of the last call.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithPool(value string) *AllocatedDeviceStatusApplyConfiguration {
    +	b.Pool = &value
    +	return b
    +}
    +
    +// WithDevice sets the Device field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Device field is set to the value of the last call.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithDevice(value string) *AllocatedDeviceStatusApplyConfiguration {
    +	b.Device = &value
    +	return b
    +}
    +
    +// WithConditions adds the given value to the Conditions field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Conditions field.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithConditions(values ...*v1.ConditionApplyConfiguration) *AllocatedDeviceStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConditions")
    +		}
    +		b.Conditions = append(b.Conditions, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithData sets the Data field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Data field is set to the value of the last call.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithData(value runtime.RawExtension) *AllocatedDeviceStatusApplyConfiguration {
    +	b.Data = &value
    +	return b
    +}
    +
    +// WithNetworkData sets the NetworkData field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the NetworkData field is set to the value of the last call.
    +func (b *AllocatedDeviceStatusApplyConfiguration) WithNetworkData(value *NetworkDeviceDataApplyConfiguration) *AllocatedDeviceStatusApplyConfiguration {
    +	b.NetworkData = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/allocationresult.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/allocationresult.go
    new file mode 100644
    index 000000000000..549ef71afd17
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/allocationresult.go
    @@ -0,0 +1,52 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	v1 "k8s.io/client-go/applyconfigurations/core/v1"
    +)
    +
    +// AllocationResultApplyConfiguration represents a declarative configuration of the AllocationResult type for use
    +// with apply.
    +type AllocationResultApplyConfiguration struct {
    +	Devices      *DeviceAllocationResultApplyConfiguration `json:"devices,omitempty"`
    +	NodeSelector *v1.NodeSelectorApplyConfiguration        `json:"nodeSelector,omitempty"`
    +}
    +
    +// AllocationResultApplyConfiguration constructs a declarative configuration of the AllocationResult type for use with
    +// apply.
    +func AllocationResult() *AllocationResultApplyConfiguration {
    +	return &AllocationResultApplyConfiguration{}
    +}
    +
    +// WithDevices sets the Devices field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Devices field is set to the value of the last call.
    +func (b *AllocationResultApplyConfiguration) WithDevices(value *DeviceAllocationResultApplyConfiguration) *AllocationResultApplyConfiguration {
    +	b.Devices = value
    +	return b
    +}
    +
    +// WithNodeSelector sets the NodeSelector field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the NodeSelector field is set to the value of the last call.
    +func (b *AllocationResultApplyConfiguration) WithNodeSelector(value *v1.NodeSelectorApplyConfiguration) *AllocationResultApplyConfiguration {
    +	b.NodeSelector = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/basicdevice.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/basicdevice.go
    new file mode 100644
    index 000000000000..691a8f15aabc
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/basicdevice.go
    @@ -0,0 +1,64 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +)
    +
    +// BasicDeviceApplyConfiguration represents a declarative configuration of the BasicDevice type for use
    +// with apply.
    +type BasicDeviceApplyConfiguration struct {
    +	Attributes map[resourcev1beta1.QualifiedName]DeviceAttributeApplyConfiguration `json:"attributes,omitempty"`
    +	Capacity   map[resourcev1beta1.QualifiedName]DeviceCapacityApplyConfiguration  `json:"capacity,omitempty"`
    +}
    +
    +// BasicDeviceApplyConfiguration constructs a declarative configuration of the BasicDevice type for use with
    +// apply.
    +func BasicDevice() *BasicDeviceApplyConfiguration {
    +	return &BasicDeviceApplyConfiguration{}
    +}
    +
    +// WithAttributes puts the entries into the Attributes field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Attributes field,
    +// overwriting an existing map entries in Attributes field with the same key.
    +func (b *BasicDeviceApplyConfiguration) WithAttributes(entries map[resourcev1beta1.QualifiedName]DeviceAttributeApplyConfiguration) *BasicDeviceApplyConfiguration {
    +	if b.Attributes == nil && len(entries) > 0 {
    +		b.Attributes = make(map[resourcev1beta1.QualifiedName]DeviceAttributeApplyConfiguration, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.Attributes[k] = v
    +	}
    +	return b
    +}
    +
    +// WithCapacity puts the entries into the Capacity field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Capacity field,
    +// overwriting an existing map entries in Capacity field with the same key.
    +func (b *BasicDeviceApplyConfiguration) WithCapacity(entries map[resourcev1beta1.QualifiedName]DeviceCapacityApplyConfiguration) *BasicDeviceApplyConfiguration {
    +	if b.Capacity == nil && len(entries) > 0 {
    +		b.Capacity = make(map[resourcev1beta1.QualifiedName]DeviceCapacityApplyConfiguration, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.Capacity[k] = v
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/celdeviceselector.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/celdeviceselector.go
    new file mode 100644
    index 000000000000..c4a28bbf8ab7
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/celdeviceselector.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// CELDeviceSelectorApplyConfiguration represents a declarative configuration of the CELDeviceSelector type for use
    +// with apply.
    +type CELDeviceSelectorApplyConfiguration struct {
    +	Expression *string `json:"expression,omitempty"`
    +}
    +
    +// CELDeviceSelectorApplyConfiguration constructs a declarative configuration of the CELDeviceSelector type for use with
    +// apply.
    +func CELDeviceSelector() *CELDeviceSelectorApplyConfiguration {
    +	return &CELDeviceSelectorApplyConfiguration{}
    +}
    +
    +// WithExpression sets the Expression field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Expression field is set to the value of the last call.
    +func (b *CELDeviceSelectorApplyConfiguration) WithExpression(value string) *CELDeviceSelectorApplyConfiguration {
    +	b.Expression = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/device.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/device.go
    new file mode 100644
    index 000000000000..f635267e2158
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/device.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceApplyConfiguration represents a declarative configuration of the Device type for use
    +// with apply.
    +type DeviceApplyConfiguration struct {
    +	Name  *string                        `json:"name,omitempty"`
    +	Basic *BasicDeviceApplyConfiguration `json:"basic,omitempty"`
    +}
    +
    +// DeviceApplyConfiguration constructs a declarative configuration of the Device type for use with
    +// apply.
    +func Device() *DeviceApplyConfiguration {
    +	return &DeviceApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *DeviceApplyConfiguration) WithName(value string) *DeviceApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithBasic sets the Basic field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Basic field is set to the value of the last call.
    +func (b *DeviceApplyConfiguration) WithBasic(value *BasicDeviceApplyConfiguration) *DeviceApplyConfiguration {
    +	b.Basic = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceallocationconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceallocationconfiguration.go
    new file mode 100644
    index 000000000000..b5218ba4a3b9
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceallocationconfiguration.go
    @@ -0,0 +1,63 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +)
    +
    +// DeviceAllocationConfigurationApplyConfiguration represents a declarative configuration of the DeviceAllocationConfiguration type for use
    +// with apply.
    +type DeviceAllocationConfigurationApplyConfiguration struct {
    +	Source                                *resourcev1beta1.AllocationConfigSource `json:"source,omitempty"`
    +	Requests                              []string                                `json:"requests,omitempty"`
    +	DeviceConfigurationApplyConfiguration `json:",inline"`
    +}
    +
    +// DeviceAllocationConfigurationApplyConfiguration constructs a declarative configuration of the DeviceAllocationConfiguration type for use with
    +// apply.
    +func DeviceAllocationConfiguration() *DeviceAllocationConfigurationApplyConfiguration {
    +	return &DeviceAllocationConfigurationApplyConfiguration{}
    +}
    +
    +// WithSource sets the Source field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Source field is set to the value of the last call.
    +func (b *DeviceAllocationConfigurationApplyConfiguration) WithSource(value resourcev1beta1.AllocationConfigSource) *DeviceAllocationConfigurationApplyConfiguration {
    +	b.Source = &value
    +	return b
    +}
    +
    +// WithRequests adds the given value to the Requests field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Requests field.
    +func (b *DeviceAllocationConfigurationApplyConfiguration) WithRequests(values ...string) *DeviceAllocationConfigurationApplyConfiguration {
    +	for i := range values {
    +		b.Requests = append(b.Requests, values[i])
    +	}
    +	return b
    +}
    +
    +// WithOpaque sets the Opaque field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Opaque field is set to the value of the last call.
    +func (b *DeviceAllocationConfigurationApplyConfiguration) WithOpaque(value *OpaqueDeviceConfigurationApplyConfiguration) *DeviceAllocationConfigurationApplyConfiguration {
    +	b.DeviceConfigurationApplyConfiguration.Opaque = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceallocationresult.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceallocationresult.go
    new file mode 100644
    index 000000000000..bf309cf2380b
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceallocationresult.go
    @@ -0,0 +1,58 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceAllocationResultApplyConfiguration represents a declarative configuration of the DeviceAllocationResult type for use
    +// with apply.
    +type DeviceAllocationResultApplyConfiguration struct {
    +	Results []DeviceRequestAllocationResultApplyConfiguration `json:"results,omitempty"`
    +	Config  []DeviceAllocationConfigurationApplyConfiguration `json:"config,omitempty"`
    +}
    +
    +// DeviceAllocationResultApplyConfiguration constructs a declarative configuration of the DeviceAllocationResult type for use with
    +// apply.
    +func DeviceAllocationResult() *DeviceAllocationResultApplyConfiguration {
    +	return &DeviceAllocationResultApplyConfiguration{}
    +}
    +
    +// WithResults adds the given value to the Results field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Results field.
    +func (b *DeviceAllocationResultApplyConfiguration) WithResults(values ...*DeviceRequestAllocationResultApplyConfiguration) *DeviceAllocationResultApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithResults")
    +		}
    +		b.Results = append(b.Results, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithConfig adds the given value to the Config field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Config field.
    +func (b *DeviceAllocationResultApplyConfiguration) WithConfig(values ...*DeviceAllocationConfigurationApplyConfiguration) *DeviceAllocationResultApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConfig")
    +		}
    +		b.Config = append(b.Config, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceattribute.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceattribute.go
    new file mode 100644
    index 000000000000..6e88ae38a11d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceattribute.go
    @@ -0,0 +1,66 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceAttributeApplyConfiguration represents a declarative configuration of the DeviceAttribute type for use
    +// with apply.
    +type DeviceAttributeApplyConfiguration struct {
    +	IntValue     *int64  `json:"int,omitempty"`
    +	BoolValue    *bool   `json:"bool,omitempty"`
    +	StringValue  *string `json:"string,omitempty"`
    +	VersionValue *string `json:"version,omitempty"`
    +}
    +
    +// DeviceAttributeApplyConfiguration constructs a declarative configuration of the DeviceAttribute type for use with
    +// apply.
    +func DeviceAttribute() *DeviceAttributeApplyConfiguration {
    +	return &DeviceAttributeApplyConfiguration{}
    +}
    +
    +// WithIntValue sets the IntValue field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the IntValue field is set to the value of the last call.
    +func (b *DeviceAttributeApplyConfiguration) WithIntValue(value int64) *DeviceAttributeApplyConfiguration {
    +	b.IntValue = &value
    +	return b
    +}
    +
    +// WithBoolValue sets the BoolValue field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the BoolValue field is set to the value of the last call.
    +func (b *DeviceAttributeApplyConfiguration) WithBoolValue(value bool) *DeviceAttributeApplyConfiguration {
    +	b.BoolValue = &value
    +	return b
    +}
    +
    +// WithStringValue sets the StringValue field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the StringValue field is set to the value of the last call.
    +func (b *DeviceAttributeApplyConfiguration) WithStringValue(value string) *DeviceAttributeApplyConfiguration {
    +	b.StringValue = &value
    +	return b
    +}
    +
    +// WithVersionValue sets the VersionValue field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the VersionValue field is set to the value of the last call.
    +func (b *DeviceAttributeApplyConfiguration) WithVersionValue(value string) *DeviceAttributeApplyConfiguration {
    +	b.VersionValue = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/devicecapacity.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/devicecapacity.go
    new file mode 100644
    index 000000000000..dcb3504b83d8
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/devicecapacity.go
    @@ -0,0 +1,43 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resource "k8s.io/apimachinery/pkg/api/resource"
    +)
    +
    +// DeviceCapacityApplyConfiguration represents a declarative configuration of the DeviceCapacity type for use
    +// with apply.
    +type DeviceCapacityApplyConfiguration struct {
    +	Value *resource.Quantity `json:"value,omitempty"`
    +}
    +
    +// DeviceCapacityApplyConfiguration constructs a declarative configuration of the DeviceCapacity type for use with
    +// apply.
    +func DeviceCapacity() *DeviceCapacityApplyConfiguration {
    +	return &DeviceCapacityApplyConfiguration{}
    +}
    +
    +// WithValue sets the Value field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Value field is set to the value of the last call.
    +func (b *DeviceCapacityApplyConfiguration) WithValue(value resource.Quantity) *DeviceCapacityApplyConfiguration {
    +	b.Value = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclaim.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclaim.go
    new file mode 100644
    index 000000000000..95c1c2e6e923
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclaim.go
    @@ -0,0 +1,72 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceClaimApplyConfiguration represents a declarative configuration of the DeviceClaim type for use
    +// with apply.
    +type DeviceClaimApplyConfiguration struct {
    +	Requests    []DeviceRequestApplyConfiguration            `json:"requests,omitempty"`
    +	Constraints []DeviceConstraintApplyConfiguration         `json:"constraints,omitempty"`
    +	Config      []DeviceClaimConfigurationApplyConfiguration `json:"config,omitempty"`
    +}
    +
    +// DeviceClaimApplyConfiguration constructs a declarative configuration of the DeviceClaim type for use with
    +// apply.
    +func DeviceClaim() *DeviceClaimApplyConfiguration {
    +	return &DeviceClaimApplyConfiguration{}
    +}
    +
    +// WithRequests adds the given value to the Requests field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Requests field.
    +func (b *DeviceClaimApplyConfiguration) WithRequests(values ...*DeviceRequestApplyConfiguration) *DeviceClaimApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithRequests")
    +		}
    +		b.Requests = append(b.Requests, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithConstraints adds the given value to the Constraints field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Constraints field.
    +func (b *DeviceClaimApplyConfiguration) WithConstraints(values ...*DeviceConstraintApplyConfiguration) *DeviceClaimApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConstraints")
    +		}
    +		b.Constraints = append(b.Constraints, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithConfig adds the given value to the Config field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Config field.
    +func (b *DeviceClaimApplyConfiguration) WithConfig(values ...*DeviceClaimConfigurationApplyConfiguration) *DeviceClaimApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConfig")
    +		}
    +		b.Config = append(b.Config, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclaimconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclaimconfiguration.go
    new file mode 100644
    index 000000000000..beac5e9d9560
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclaimconfiguration.go
    @@ -0,0 +1,50 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceClaimConfigurationApplyConfiguration represents a declarative configuration of the DeviceClaimConfiguration type for use
    +// with apply.
    +type DeviceClaimConfigurationApplyConfiguration struct {
    +	Requests                              []string `json:"requests,omitempty"`
    +	DeviceConfigurationApplyConfiguration `json:",inline"`
    +}
    +
    +// DeviceClaimConfigurationApplyConfiguration constructs a declarative configuration of the DeviceClaimConfiguration type for use with
    +// apply.
    +func DeviceClaimConfiguration() *DeviceClaimConfigurationApplyConfiguration {
    +	return &DeviceClaimConfigurationApplyConfiguration{}
    +}
    +
    +// WithRequests adds the given value to the Requests field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Requests field.
    +func (b *DeviceClaimConfigurationApplyConfiguration) WithRequests(values ...string) *DeviceClaimConfigurationApplyConfiguration {
    +	for i := range values {
    +		b.Requests = append(b.Requests, values[i])
    +	}
    +	return b
    +}
    +
    +// WithOpaque sets the Opaque field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Opaque field is set to the value of the last call.
    +func (b *DeviceClaimConfigurationApplyConfiguration) WithOpaque(value *OpaqueDeviceConfigurationApplyConfiguration) *DeviceClaimConfigurationApplyConfiguration {
    +	b.DeviceConfigurationApplyConfiguration.Opaque = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclass.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclass.go
    new file mode 100644
    index 000000000000..c71e222590ee
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclass.go
    @@ -0,0 +1,253 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// DeviceClassApplyConfiguration represents a declarative configuration of the DeviceClass type for use
    +// with apply.
    +type DeviceClassApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *DeviceClassSpecApplyConfiguration `json:"spec,omitempty"`
    +}
    +
    +// DeviceClass constructs a declarative configuration of the DeviceClass type for use with
    +// apply.
    +func DeviceClass(name string) *DeviceClassApplyConfiguration {
    +	b := &DeviceClassApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("DeviceClass")
    +	b.WithAPIVersion("resource.k8s.io/v1beta1")
    +	return b
    +}
    +
    +// ExtractDeviceClass extracts the applied configuration owned by fieldManager from
    +// deviceClass. If no managedFields are found in deviceClass for fieldManager, a
    +// DeviceClassApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// deviceClass must be a unmodified DeviceClass API object that was retrieved from the Kubernetes API.
    +// ExtractDeviceClass provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractDeviceClass(deviceClass *resourcev1beta1.DeviceClass, fieldManager string) (*DeviceClassApplyConfiguration, error) {
    +	return extractDeviceClass(deviceClass, fieldManager, "")
    +}
    +
    +// ExtractDeviceClassStatus is the same as ExtractDeviceClass except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractDeviceClassStatus(deviceClass *resourcev1beta1.DeviceClass, fieldManager string) (*DeviceClassApplyConfiguration, error) {
    +	return extractDeviceClass(deviceClass, fieldManager, "status")
    +}
    +
    +func extractDeviceClass(deviceClass *resourcev1beta1.DeviceClass, fieldManager string, subresource string) (*DeviceClassApplyConfiguration, error) {
    +	b := &DeviceClassApplyConfiguration{}
    +	err := managedfields.ExtractInto(deviceClass, internal.Parser().Type("io.k8s.api.resource.v1beta1.DeviceClass"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(deviceClass.Name)
    +
    +	b.WithKind("DeviceClass")
    +	b.WithAPIVersion("resource.k8s.io/v1beta1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithKind(value string) *DeviceClassApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithAPIVersion(value string) *DeviceClassApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithName(value string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithGenerateName(value string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithNamespace(value string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithUID(value types.UID) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithResourceVersion(value string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithGeneration(value int64) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *DeviceClassApplyConfiguration) WithLabels(entries map[string]string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *DeviceClassApplyConfiguration) WithAnnotations(entries map[string]string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *DeviceClassApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *DeviceClassApplyConfiguration) WithFinalizers(values ...string) *DeviceClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *DeviceClassApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *DeviceClassApplyConfiguration) WithSpec(value *DeviceClassSpecApplyConfiguration) *DeviceClassApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *DeviceClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclassconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclassconfiguration.go
    new file mode 100644
    index 000000000000..3ce90eab5678
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclassconfiguration.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceClassConfigurationApplyConfiguration represents a declarative configuration of the DeviceClassConfiguration type for use
    +// with apply.
    +type DeviceClassConfigurationApplyConfiguration struct {
    +	DeviceConfigurationApplyConfiguration `json:",inline"`
    +}
    +
    +// DeviceClassConfigurationApplyConfiguration constructs a declarative configuration of the DeviceClassConfiguration type for use with
    +// apply.
    +func DeviceClassConfiguration() *DeviceClassConfigurationApplyConfiguration {
    +	return &DeviceClassConfigurationApplyConfiguration{}
    +}
    +
    +// WithOpaque sets the Opaque field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Opaque field is set to the value of the last call.
    +func (b *DeviceClassConfigurationApplyConfiguration) WithOpaque(value *OpaqueDeviceConfigurationApplyConfiguration) *DeviceClassConfigurationApplyConfiguration {
    +	b.DeviceConfigurationApplyConfiguration.Opaque = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclassspec.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclassspec.go
    new file mode 100644
    index 000000000000..901b0800ebc3
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceclassspec.go
    @@ -0,0 +1,58 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceClassSpecApplyConfiguration represents a declarative configuration of the DeviceClassSpec type for use
    +// with apply.
    +type DeviceClassSpecApplyConfiguration struct {
    +	Selectors []DeviceSelectorApplyConfiguration           `json:"selectors,omitempty"`
    +	Config    []DeviceClassConfigurationApplyConfiguration `json:"config,omitempty"`
    +}
    +
    +// DeviceClassSpecApplyConfiguration constructs a declarative configuration of the DeviceClassSpec type for use with
    +// apply.
    +func DeviceClassSpec() *DeviceClassSpecApplyConfiguration {
    +	return &DeviceClassSpecApplyConfiguration{}
    +}
    +
    +// WithSelectors adds the given value to the Selectors field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Selectors field.
    +func (b *DeviceClassSpecApplyConfiguration) WithSelectors(values ...*DeviceSelectorApplyConfiguration) *DeviceClassSpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithSelectors")
    +		}
    +		b.Selectors = append(b.Selectors, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithConfig adds the given value to the Config field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Config field.
    +func (b *DeviceClassSpecApplyConfiguration) WithConfig(values ...*DeviceClassConfigurationApplyConfiguration) *DeviceClassSpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConfig")
    +		}
    +		b.Config = append(b.Config, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceconfiguration.go
    new file mode 100644
    index 000000000000..b0f41f5a195a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceconfiguration.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceConfigurationApplyConfiguration represents a declarative configuration of the DeviceConfiguration type for use
    +// with apply.
    +type DeviceConfigurationApplyConfiguration struct {
    +	Opaque *OpaqueDeviceConfigurationApplyConfiguration `json:"opaque,omitempty"`
    +}
    +
    +// DeviceConfigurationApplyConfiguration constructs a declarative configuration of the DeviceConfiguration type for use with
    +// apply.
    +func DeviceConfiguration() *DeviceConfigurationApplyConfiguration {
    +	return &DeviceConfigurationApplyConfiguration{}
    +}
    +
    +// WithOpaque sets the Opaque field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Opaque field is set to the value of the last call.
    +func (b *DeviceConfigurationApplyConfiguration) WithOpaque(value *OpaqueDeviceConfigurationApplyConfiguration) *DeviceConfigurationApplyConfiguration {
    +	b.Opaque = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceconstraint.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceconstraint.go
    new file mode 100644
    index 000000000000..0c5fc2525a67
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceconstraint.go
    @@ -0,0 +1,54 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +)
    +
    +// DeviceConstraintApplyConfiguration represents a declarative configuration of the DeviceConstraint type for use
    +// with apply.
    +type DeviceConstraintApplyConfiguration struct {
    +	Requests       []string                            `json:"requests,omitempty"`
    +	MatchAttribute *resourcev1beta1.FullyQualifiedName `json:"matchAttribute,omitempty"`
    +}
    +
    +// DeviceConstraintApplyConfiguration constructs a declarative configuration of the DeviceConstraint type for use with
    +// apply.
    +func DeviceConstraint() *DeviceConstraintApplyConfiguration {
    +	return &DeviceConstraintApplyConfiguration{}
    +}
    +
    +// WithRequests adds the given value to the Requests field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Requests field.
    +func (b *DeviceConstraintApplyConfiguration) WithRequests(values ...string) *DeviceConstraintApplyConfiguration {
    +	for i := range values {
    +		b.Requests = append(b.Requests, values[i])
    +	}
    +	return b
    +}
    +
    +// WithMatchAttribute sets the MatchAttribute field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the MatchAttribute field is set to the value of the last call.
    +func (b *DeviceConstraintApplyConfiguration) WithMatchAttribute(value resourcev1beta1.FullyQualifiedName) *DeviceConstraintApplyConfiguration {
    +	b.MatchAttribute = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/devicerequest.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/devicerequest.go
    new file mode 100644
    index 000000000000..ea454a275c01
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/devicerequest.go
    @@ -0,0 +1,93 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +)
    +
    +// DeviceRequestApplyConfiguration represents a declarative configuration of the DeviceRequest type for use
    +// with apply.
    +type DeviceRequestApplyConfiguration struct {
    +	Name            *string                               `json:"name,omitempty"`
    +	DeviceClassName *string                               `json:"deviceClassName,omitempty"`
    +	Selectors       []DeviceSelectorApplyConfiguration    `json:"selectors,omitempty"`
    +	AllocationMode  *resourcev1beta1.DeviceAllocationMode `json:"allocationMode,omitempty"`
    +	Count           *int64                                `json:"count,omitempty"`
    +	AdminAccess     *bool                                 `json:"adminAccess,omitempty"`
    +}
    +
    +// DeviceRequestApplyConfiguration constructs a declarative configuration of the DeviceRequest type for use with
    +// apply.
    +func DeviceRequest() *DeviceRequestApplyConfiguration {
    +	return &DeviceRequestApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *DeviceRequestApplyConfiguration) WithName(value string) *DeviceRequestApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithDeviceClassName sets the DeviceClassName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeviceClassName field is set to the value of the last call.
    +func (b *DeviceRequestApplyConfiguration) WithDeviceClassName(value string) *DeviceRequestApplyConfiguration {
    +	b.DeviceClassName = &value
    +	return b
    +}
    +
    +// WithSelectors adds the given value to the Selectors field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Selectors field.
    +func (b *DeviceRequestApplyConfiguration) WithSelectors(values ...*DeviceSelectorApplyConfiguration) *DeviceRequestApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithSelectors")
    +		}
    +		b.Selectors = append(b.Selectors, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithAllocationMode sets the AllocationMode field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the AllocationMode field is set to the value of the last call.
    +func (b *DeviceRequestApplyConfiguration) WithAllocationMode(value resourcev1beta1.DeviceAllocationMode) *DeviceRequestApplyConfiguration {
    +	b.AllocationMode = &value
    +	return b
    +}
    +
    +// WithCount sets the Count field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Count field is set to the value of the last call.
    +func (b *DeviceRequestApplyConfiguration) WithCount(value int64) *DeviceRequestApplyConfiguration {
    +	b.Count = &value
    +	return b
    +}
    +
    +// WithAdminAccess sets the AdminAccess field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the AdminAccess field is set to the value of the last call.
    +func (b *DeviceRequestApplyConfiguration) WithAdminAccess(value bool) *DeviceRequestApplyConfiguration {
    +	b.AdminAccess = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/devicerequestallocationresult.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/devicerequestallocationresult.go
    new file mode 100644
    index 000000000000..c28eb26ab638
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/devicerequestallocationresult.go
    @@ -0,0 +1,75 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceRequestAllocationResultApplyConfiguration represents a declarative configuration of the DeviceRequestAllocationResult type for use
    +// with apply.
    +type DeviceRequestAllocationResultApplyConfiguration struct {
    +	Request     *string `json:"request,omitempty"`
    +	Driver      *string `json:"driver,omitempty"`
    +	Pool        *string `json:"pool,omitempty"`
    +	Device      *string `json:"device,omitempty"`
    +	AdminAccess *bool   `json:"adminAccess,omitempty"`
    +}
    +
    +// DeviceRequestAllocationResultApplyConfiguration constructs a declarative configuration of the DeviceRequestAllocationResult type for use with
    +// apply.
    +func DeviceRequestAllocationResult() *DeviceRequestAllocationResultApplyConfiguration {
    +	return &DeviceRequestAllocationResultApplyConfiguration{}
    +}
    +
    +// WithRequest sets the Request field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Request field is set to the value of the last call.
    +func (b *DeviceRequestAllocationResultApplyConfiguration) WithRequest(value string) *DeviceRequestAllocationResultApplyConfiguration {
    +	b.Request = &value
    +	return b
    +}
    +
    +// WithDriver sets the Driver field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Driver field is set to the value of the last call.
    +func (b *DeviceRequestAllocationResultApplyConfiguration) WithDriver(value string) *DeviceRequestAllocationResultApplyConfiguration {
    +	b.Driver = &value
    +	return b
    +}
    +
    +// WithPool sets the Pool field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Pool field is set to the value of the last call.
    +func (b *DeviceRequestAllocationResultApplyConfiguration) WithPool(value string) *DeviceRequestAllocationResultApplyConfiguration {
    +	b.Pool = &value
    +	return b
    +}
    +
    +// WithDevice sets the Device field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Device field is set to the value of the last call.
    +func (b *DeviceRequestAllocationResultApplyConfiguration) WithDevice(value string) *DeviceRequestAllocationResultApplyConfiguration {
    +	b.Device = &value
    +	return b
    +}
    +
    +// WithAdminAccess sets the AdminAccess field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the AdminAccess field is set to the value of the last call.
    +func (b *DeviceRequestAllocationResultApplyConfiguration) WithAdminAccess(value bool) *DeviceRequestAllocationResultApplyConfiguration {
    +	b.AdminAccess = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceselector.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceselector.go
    new file mode 100644
    index 000000000000..bf60bf4345d5
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/deviceselector.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceSelectorApplyConfiguration represents a declarative configuration of the DeviceSelector type for use
    +// with apply.
    +type DeviceSelectorApplyConfiguration struct {
    +	CEL *CELDeviceSelectorApplyConfiguration `json:"cel,omitempty"`
    +}
    +
    +// DeviceSelectorApplyConfiguration constructs a declarative configuration of the DeviceSelector type for use with
    +// apply.
    +func DeviceSelector() *DeviceSelectorApplyConfiguration {
    +	return &DeviceSelectorApplyConfiguration{}
    +}
    +
    +// WithCEL sets the CEL field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CEL field is set to the value of the last call.
    +func (b *DeviceSelectorApplyConfiguration) WithCEL(value *CELDeviceSelectorApplyConfiguration) *DeviceSelectorApplyConfiguration {
    +	b.CEL = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/networkdevicedata.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/networkdevicedata.go
    new file mode 100644
    index 000000000000..c9d488019334
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/networkdevicedata.go
    @@ -0,0 +1,59 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// NetworkDeviceDataApplyConfiguration represents a declarative configuration of the NetworkDeviceData type for use
    +// with apply.
    +type NetworkDeviceDataApplyConfiguration struct {
    +	InterfaceName   *string  `json:"interfaceName,omitempty"`
    +	IPs             []string `json:"ips,omitempty"`
    +	HardwareAddress *string  `json:"hardwareAddress,omitempty"`
    +}
    +
    +// NetworkDeviceDataApplyConfiguration constructs a declarative configuration of the NetworkDeviceData type for use with
    +// apply.
    +func NetworkDeviceData() *NetworkDeviceDataApplyConfiguration {
    +	return &NetworkDeviceDataApplyConfiguration{}
    +}
    +
    +// WithInterfaceName sets the InterfaceName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the InterfaceName field is set to the value of the last call.
    +func (b *NetworkDeviceDataApplyConfiguration) WithInterfaceName(value string) *NetworkDeviceDataApplyConfiguration {
    +	b.InterfaceName = &value
    +	return b
    +}
    +
    +// WithIPs adds the given value to the IPs field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the IPs field.
    +func (b *NetworkDeviceDataApplyConfiguration) WithIPs(values ...string) *NetworkDeviceDataApplyConfiguration {
    +	for i := range values {
    +		b.IPs = append(b.IPs, values[i])
    +	}
    +	return b
    +}
    +
    +// WithHardwareAddress sets the HardwareAddress field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the HardwareAddress field is set to the value of the last call.
    +func (b *NetworkDeviceDataApplyConfiguration) WithHardwareAddress(value string) *NetworkDeviceDataApplyConfiguration {
    +	b.HardwareAddress = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/opaquedeviceconfiguration.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/opaquedeviceconfiguration.go
    new file mode 100644
    index 000000000000..0b52fa93a8fe
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/opaquedeviceconfiguration.go
    @@ -0,0 +1,52 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +)
    +
    +// OpaqueDeviceConfigurationApplyConfiguration represents a declarative configuration of the OpaqueDeviceConfiguration type for use
    +// with apply.
    +type OpaqueDeviceConfigurationApplyConfiguration struct {
    +	Driver     *string               `json:"driver,omitempty"`
    +	Parameters *runtime.RawExtension `json:"parameters,omitempty"`
    +}
    +
    +// OpaqueDeviceConfigurationApplyConfiguration constructs a declarative configuration of the OpaqueDeviceConfiguration type for use with
    +// apply.
    +func OpaqueDeviceConfiguration() *OpaqueDeviceConfigurationApplyConfiguration {
    +	return &OpaqueDeviceConfigurationApplyConfiguration{}
    +}
    +
    +// WithDriver sets the Driver field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Driver field is set to the value of the last call.
    +func (b *OpaqueDeviceConfigurationApplyConfiguration) WithDriver(value string) *OpaqueDeviceConfigurationApplyConfiguration {
    +	b.Driver = &value
    +	return b
    +}
    +
    +// WithParameters sets the Parameters field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Parameters field is set to the value of the last call.
    +func (b *OpaqueDeviceConfigurationApplyConfiguration) WithParameters(value runtime.RawExtension) *OpaqueDeviceConfigurationApplyConfiguration {
    +	b.Parameters = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaim.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaim.go
    new file mode 100644
    index 000000000000..ee16718fd70d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaim.go
    @@ -0,0 +1,264 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// ResourceClaimApplyConfiguration represents a declarative configuration of the ResourceClaim type for use
    +// with apply.
    +type ResourceClaimApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *ResourceClaimSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                           *ResourceClaimStatusApplyConfiguration `json:"status,omitempty"`
    +}
    +
    +// ResourceClaim constructs a declarative configuration of the ResourceClaim type for use with
    +// apply.
    +func ResourceClaim(name, namespace string) *ResourceClaimApplyConfiguration {
    +	b := &ResourceClaimApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithNamespace(namespace)
    +	b.WithKind("ResourceClaim")
    +	b.WithAPIVersion("resource.k8s.io/v1beta1")
    +	return b
    +}
    +
    +// ExtractResourceClaim extracts the applied configuration owned by fieldManager from
    +// resourceClaim. If no managedFields are found in resourceClaim for fieldManager, a
    +// ResourceClaimApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// resourceClaim must be a unmodified ResourceClaim API object that was retrieved from the Kubernetes API.
    +// ExtractResourceClaim provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractResourceClaim(resourceClaim *resourcev1beta1.ResourceClaim, fieldManager string) (*ResourceClaimApplyConfiguration, error) {
    +	return extractResourceClaim(resourceClaim, fieldManager, "")
    +}
    +
    +// ExtractResourceClaimStatus is the same as ExtractResourceClaim except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractResourceClaimStatus(resourceClaim *resourcev1beta1.ResourceClaim, fieldManager string) (*ResourceClaimApplyConfiguration, error) {
    +	return extractResourceClaim(resourceClaim, fieldManager, "status")
    +}
    +
    +func extractResourceClaim(resourceClaim *resourcev1beta1.ResourceClaim, fieldManager string, subresource string) (*ResourceClaimApplyConfiguration, error) {
    +	b := &ResourceClaimApplyConfiguration{}
    +	err := managedfields.ExtractInto(resourceClaim, internal.Parser().Type("io.k8s.api.resource.v1beta1.ResourceClaim"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(resourceClaim.Name)
    +	b.WithNamespace(resourceClaim.Namespace)
    +
    +	b.WithKind("ResourceClaim")
    +	b.WithAPIVersion("resource.k8s.io/v1beta1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithKind(value string) *ResourceClaimApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithAPIVersion(value string) *ResourceClaimApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithName(value string) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithGenerateName(value string) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithNamespace(value string) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithUID(value types.UID) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithResourceVersion(value string) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithGeneration(value int64) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *ResourceClaimApplyConfiguration) WithLabels(entries map[string]string) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *ResourceClaimApplyConfiguration) WithAnnotations(entries map[string]string) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *ResourceClaimApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *ResourceClaimApplyConfiguration) WithFinalizers(values ...string) *ResourceClaimApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *ResourceClaimApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithSpec(value *ResourceClaimSpecApplyConfiguration) *ResourceClaimApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// WithStatus sets the Status field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Status field is set to the value of the last call.
    +func (b *ResourceClaimApplyConfiguration) WithStatus(value *ResourceClaimStatusApplyConfiguration) *ResourceClaimApplyConfiguration {
    +	b.Status = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ResourceClaimApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimconsumerreference.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimconsumerreference.go
    new file mode 100644
    index 000000000000..f6eefdda533b
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimconsumerreference.go
    @@ -0,0 +1,70 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	types "k8s.io/apimachinery/pkg/types"
    +)
    +
    +// ResourceClaimConsumerReferenceApplyConfiguration represents a declarative configuration of the ResourceClaimConsumerReference type for use
    +// with apply.
    +type ResourceClaimConsumerReferenceApplyConfiguration struct {
    +	APIGroup *string    `json:"apiGroup,omitempty"`
    +	Resource *string    `json:"resource,omitempty"`
    +	Name     *string    `json:"name,omitempty"`
    +	UID      *types.UID `json:"uid,omitempty"`
    +}
    +
    +// ResourceClaimConsumerReferenceApplyConfiguration constructs a declarative configuration of the ResourceClaimConsumerReference type for use with
    +// apply.
    +func ResourceClaimConsumerReference() *ResourceClaimConsumerReferenceApplyConfiguration {
    +	return &ResourceClaimConsumerReferenceApplyConfiguration{}
    +}
    +
    +// WithAPIGroup sets the APIGroup field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIGroup field is set to the value of the last call.
    +func (b *ResourceClaimConsumerReferenceApplyConfiguration) WithAPIGroup(value string) *ResourceClaimConsumerReferenceApplyConfiguration {
    +	b.APIGroup = &value
    +	return b
    +}
    +
    +// WithResource sets the Resource field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Resource field is set to the value of the last call.
    +func (b *ResourceClaimConsumerReferenceApplyConfiguration) WithResource(value string) *ResourceClaimConsumerReferenceApplyConfiguration {
    +	b.Resource = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ResourceClaimConsumerReferenceApplyConfiguration) WithName(value string) *ResourceClaimConsumerReferenceApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *ResourceClaimConsumerReferenceApplyConfiguration) WithUID(value types.UID) *ResourceClaimConsumerReferenceApplyConfiguration {
    +	b.UID = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimspec.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimspec.go
    new file mode 100644
    index 000000000000..c6b1b0b4be04
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimspec.go
    @@ -0,0 +1,39 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// ResourceClaimSpecApplyConfiguration represents a declarative configuration of the ResourceClaimSpec type for use
    +// with apply.
    +type ResourceClaimSpecApplyConfiguration struct {
    +	Devices *DeviceClaimApplyConfiguration `json:"devices,omitempty"`
    +}
    +
    +// ResourceClaimSpecApplyConfiguration constructs a declarative configuration of the ResourceClaimSpec type for use with
    +// apply.
    +func ResourceClaimSpec() *ResourceClaimSpecApplyConfiguration {
    +	return &ResourceClaimSpecApplyConfiguration{}
    +}
    +
    +// WithDevices sets the Devices field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Devices field is set to the value of the last call.
    +func (b *ResourceClaimSpecApplyConfiguration) WithDevices(value *DeviceClaimApplyConfiguration) *ResourceClaimSpecApplyConfiguration {
    +	b.Devices = value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimstatus.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimstatus.go
    new file mode 100644
    index 000000000000..bb3db18bebf6
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimstatus.go
    @@ -0,0 +1,67 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// ResourceClaimStatusApplyConfiguration represents a declarative configuration of the ResourceClaimStatus type for use
    +// with apply.
    +type ResourceClaimStatusApplyConfiguration struct {
    +	Allocation  *AllocationResultApplyConfiguration                `json:"allocation,omitempty"`
    +	ReservedFor []ResourceClaimConsumerReferenceApplyConfiguration `json:"reservedFor,omitempty"`
    +	Devices     []AllocatedDeviceStatusApplyConfiguration          `json:"devices,omitempty"`
    +}
    +
    +// ResourceClaimStatusApplyConfiguration constructs a declarative configuration of the ResourceClaimStatus type for use with
    +// apply.
    +func ResourceClaimStatus() *ResourceClaimStatusApplyConfiguration {
    +	return &ResourceClaimStatusApplyConfiguration{}
    +}
    +
    +// WithAllocation sets the Allocation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Allocation field is set to the value of the last call.
    +func (b *ResourceClaimStatusApplyConfiguration) WithAllocation(value *AllocationResultApplyConfiguration) *ResourceClaimStatusApplyConfiguration {
    +	b.Allocation = value
    +	return b
    +}
    +
    +// WithReservedFor adds the given value to the ReservedFor field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the ReservedFor field.
    +func (b *ResourceClaimStatusApplyConfiguration) WithReservedFor(values ...*ResourceClaimConsumerReferenceApplyConfiguration) *ResourceClaimStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithReservedFor")
    +		}
    +		b.ReservedFor = append(b.ReservedFor, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithDevices adds the given value to the Devices field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Devices field.
    +func (b *ResourceClaimStatusApplyConfiguration) WithDevices(values ...*AllocatedDeviceStatusApplyConfiguration) *ResourceClaimStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithDevices")
    +		}
    +		b.Devices = append(b.Devices, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimtemplate.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimtemplate.go
    new file mode 100644
    index 000000000000..490ecf5e7483
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimtemplate.go
    @@ -0,0 +1,255 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// ResourceClaimTemplateApplyConfiguration represents a declarative configuration of the ResourceClaimTemplate type for use
    +// with apply.
    +type ResourceClaimTemplateApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *ResourceClaimTemplateSpecApplyConfiguration `json:"spec,omitempty"`
    +}
    +
    +// ResourceClaimTemplate constructs a declarative configuration of the ResourceClaimTemplate type for use with
    +// apply.
    +func ResourceClaimTemplate(name, namespace string) *ResourceClaimTemplateApplyConfiguration {
    +	b := &ResourceClaimTemplateApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithNamespace(namespace)
    +	b.WithKind("ResourceClaimTemplate")
    +	b.WithAPIVersion("resource.k8s.io/v1beta1")
    +	return b
    +}
    +
    +// ExtractResourceClaimTemplate extracts the applied configuration owned by fieldManager from
    +// resourceClaimTemplate. If no managedFields are found in resourceClaimTemplate for fieldManager, a
    +// ResourceClaimTemplateApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// resourceClaimTemplate must be a unmodified ResourceClaimTemplate API object that was retrieved from the Kubernetes API.
    +// ExtractResourceClaimTemplate provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractResourceClaimTemplate(resourceClaimTemplate *resourcev1beta1.ResourceClaimTemplate, fieldManager string) (*ResourceClaimTemplateApplyConfiguration, error) {
    +	return extractResourceClaimTemplate(resourceClaimTemplate, fieldManager, "")
    +}
    +
    +// ExtractResourceClaimTemplateStatus is the same as ExtractResourceClaimTemplate except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractResourceClaimTemplateStatus(resourceClaimTemplate *resourcev1beta1.ResourceClaimTemplate, fieldManager string) (*ResourceClaimTemplateApplyConfiguration, error) {
    +	return extractResourceClaimTemplate(resourceClaimTemplate, fieldManager, "status")
    +}
    +
    +func extractResourceClaimTemplate(resourceClaimTemplate *resourcev1beta1.ResourceClaimTemplate, fieldManager string, subresource string) (*ResourceClaimTemplateApplyConfiguration, error) {
    +	b := &ResourceClaimTemplateApplyConfiguration{}
    +	err := managedfields.ExtractInto(resourceClaimTemplate, internal.Parser().Type("io.k8s.api.resource.v1beta1.ResourceClaimTemplate"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(resourceClaimTemplate.Name)
    +	b.WithNamespace(resourceClaimTemplate.Namespace)
    +
    +	b.WithKind("ResourceClaimTemplate")
    +	b.WithAPIVersion("resource.k8s.io/v1beta1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithKind(value string) *ResourceClaimTemplateApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithAPIVersion(value string) *ResourceClaimTemplateApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithName(value string) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithGenerateName(value string) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithNamespace(value string) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithUID(value types.UID) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithResourceVersion(value string) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithGeneration(value int64) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithLabels(entries map[string]string) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithAnnotations(entries map[string]string) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithFinalizers(values ...string) *ResourceClaimTemplateApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *ResourceClaimTemplateApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *ResourceClaimTemplateApplyConfiguration) WithSpec(value *ResourceClaimTemplateSpecApplyConfiguration) *ResourceClaimTemplateApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ResourceClaimTemplateApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimtemplatespec.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimtemplatespec.go
    similarity index 83%
    rename from vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimtemplatespec.go
    rename to vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimtemplatespec.go
    index 2f38ea036687..9df32360f752 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha2/resourceclaimtemplatespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceclaimtemplatespec.go
    @@ -16,7 +16,7 @@ limitations under the License.
     
     // Code generated by applyconfiguration-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1beta1
     
     import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    @@ -24,14 +24,14 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// ResourceClaimTemplateSpecApplyConfiguration represents an declarative configuration of the ResourceClaimTemplateSpec type for use
    +// ResourceClaimTemplateSpecApplyConfiguration represents a declarative configuration of the ResourceClaimTemplateSpec type for use
     // with apply.
     type ResourceClaimTemplateSpecApplyConfiguration struct {
     	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
     	Spec                             *ResourceClaimSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// ResourceClaimTemplateSpecApplyConfiguration constructs an declarative configuration of the ResourceClaimTemplateSpec type for use with
    +// ResourceClaimTemplateSpecApplyConfiguration constructs a declarative configuration of the ResourceClaimTemplateSpec type for use with
     // apply.
     func ResourceClaimTemplateSpec() *ResourceClaimTemplateSpecApplyConfiguration {
     	return &ResourceClaimTemplateSpecApplyConfiguration{}
    @@ -42,7 +42,7 @@ func ResourceClaimTemplateSpec() *ResourceClaimTemplateSpecApplyConfiguration {
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithName(value string) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -51,7 +51,7 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithName(value string) *Re
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithGenerateName(value string) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -60,7 +60,7 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithGenerateName(value str
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithNamespace(value string) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -69,7 +69,7 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithNamespace(value string
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithUID(value types.UID) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -78,7 +78,7 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithUID(value types.UID) *
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithResourceVersion(value string) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -87,7 +87,7 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithResourceVersion(value
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithGeneration(value int64) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithGeneration(value int64
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithCreationTimestamp(valu
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithDeletionTimestamp(valu
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -124,11 +124,11 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithDeletionGracePeriodSec
     // overwriting an existing map entries in Labels field with the same key.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithLabels(entries map[string]string) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -139,11 +139,11 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithLabels(entries map[str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithAnnotations(entries map[string]string) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -157,7 +157,7 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithOwnerReferences(values
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -168,7 +168,7 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithOwnerReferences(values
     func (b *ResourceClaimTemplateSpecApplyConfiguration) WithFinalizers(values ...string) *ResourceClaimTemplateSpecApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -186,3 +186,9 @@ func (b *ResourceClaimTemplateSpecApplyConfiguration) WithSpec(value *ResourceCl
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ResourceClaimTemplateSpecApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourcepool.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourcepool.go
    new file mode 100644
    index 000000000000..33c155b5280b
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourcepool.go
    @@ -0,0 +1,57 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// ResourcePoolApplyConfiguration represents a declarative configuration of the ResourcePool type for use
    +// with apply.
    +type ResourcePoolApplyConfiguration struct {
    +	Name               *string `json:"name,omitempty"`
    +	Generation         *int64  `json:"generation,omitempty"`
    +	ResourceSliceCount *int64  `json:"resourceSliceCount,omitempty"`
    +}
    +
    +// ResourcePoolApplyConfiguration constructs a declarative configuration of the ResourcePool type for use with
    +// apply.
    +func ResourcePool() *ResourcePoolApplyConfiguration {
    +	return &ResourcePoolApplyConfiguration{}
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ResourcePoolApplyConfiguration) WithName(value string) *ResourcePoolApplyConfiguration {
    +	b.Name = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *ResourcePoolApplyConfiguration) WithGeneration(value int64) *ResourcePoolApplyConfiguration {
    +	b.Generation = &value
    +	return b
    +}
    +
    +// WithResourceSliceCount sets the ResourceSliceCount field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceSliceCount field is set to the value of the last call.
    +func (b *ResourcePoolApplyConfiguration) WithResourceSliceCount(value int64) *ResourcePoolApplyConfiguration {
    +	b.ResourceSliceCount = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceslice.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceslice.go
    new file mode 100644
    index 000000000000..d169ad1017e6
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceslice.go
    @@ -0,0 +1,253 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// ResourceSliceApplyConfiguration represents a declarative configuration of the ResourceSlice type for use
    +// with apply.
    +type ResourceSliceApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *ResourceSliceSpecApplyConfiguration `json:"spec,omitempty"`
    +}
    +
    +// ResourceSlice constructs a declarative configuration of the ResourceSlice type for use with
    +// apply.
    +func ResourceSlice(name string) *ResourceSliceApplyConfiguration {
    +	b := &ResourceSliceApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("ResourceSlice")
    +	b.WithAPIVersion("resource.k8s.io/v1beta1")
    +	return b
    +}
    +
    +// ExtractResourceSlice extracts the applied configuration owned by fieldManager from
    +// resourceSlice. If no managedFields are found in resourceSlice for fieldManager, a
    +// ResourceSliceApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// resourceSlice must be a unmodified ResourceSlice API object that was retrieved from the Kubernetes API.
    +// ExtractResourceSlice provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractResourceSlice(resourceSlice *resourcev1beta1.ResourceSlice, fieldManager string) (*ResourceSliceApplyConfiguration, error) {
    +	return extractResourceSlice(resourceSlice, fieldManager, "")
    +}
    +
    +// ExtractResourceSliceStatus is the same as ExtractResourceSlice except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractResourceSliceStatus(resourceSlice *resourcev1beta1.ResourceSlice, fieldManager string) (*ResourceSliceApplyConfiguration, error) {
    +	return extractResourceSlice(resourceSlice, fieldManager, "status")
    +}
    +
    +func extractResourceSlice(resourceSlice *resourcev1beta1.ResourceSlice, fieldManager string, subresource string) (*ResourceSliceApplyConfiguration, error) {
    +	b := &ResourceSliceApplyConfiguration{}
    +	err := managedfields.ExtractInto(resourceSlice, internal.Parser().Type("io.k8s.api.resource.v1beta1.ResourceSlice"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(resourceSlice.Name)
    +
    +	b.WithKind("ResourceSlice")
    +	b.WithAPIVersion("resource.k8s.io/v1beta1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithKind(value string) *ResourceSliceApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithAPIVersion(value string) *ResourceSliceApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithName(value string) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithGenerateName(value string) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithNamespace(value string) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithUID(value types.UID) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithResourceVersion(value string) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithGeneration(value int64) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *ResourceSliceApplyConfiguration) WithLabels(entries map[string]string) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *ResourceSliceApplyConfiguration) WithAnnotations(entries map[string]string) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *ResourceSliceApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *ResourceSliceApplyConfiguration) WithFinalizers(values ...string) *ResourceSliceApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *ResourceSliceApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *ResourceSliceApplyConfiguration) WithSpec(value *ResourceSliceSpecApplyConfiguration) *ResourceSliceApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *ResourceSliceApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceslicespec.go b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceslicespec.go
    new file mode 100644
    index 000000000000..75bbb53c875f
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/resourceslicespec.go
    @@ -0,0 +1,93 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	v1 "k8s.io/client-go/applyconfigurations/core/v1"
    +)
    +
    +// ResourceSliceSpecApplyConfiguration represents a declarative configuration of the ResourceSliceSpec type for use
    +// with apply.
    +type ResourceSliceSpecApplyConfiguration struct {
    +	Driver       *string                            `json:"driver,omitempty"`
    +	Pool         *ResourcePoolApplyConfiguration    `json:"pool,omitempty"`
    +	NodeName     *string                            `json:"nodeName,omitempty"`
    +	NodeSelector *v1.NodeSelectorApplyConfiguration `json:"nodeSelector,omitempty"`
    +	AllNodes     *bool                              `json:"allNodes,omitempty"`
    +	Devices      []DeviceApplyConfiguration         `json:"devices,omitempty"`
    +}
    +
    +// ResourceSliceSpecApplyConfiguration constructs a declarative configuration of the ResourceSliceSpec type for use with
    +// apply.
    +func ResourceSliceSpec() *ResourceSliceSpecApplyConfiguration {
    +	return &ResourceSliceSpecApplyConfiguration{}
    +}
    +
    +// WithDriver sets the Driver field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Driver field is set to the value of the last call.
    +func (b *ResourceSliceSpecApplyConfiguration) WithDriver(value string) *ResourceSliceSpecApplyConfiguration {
    +	b.Driver = &value
    +	return b
    +}
    +
    +// WithPool sets the Pool field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Pool field is set to the value of the last call.
    +func (b *ResourceSliceSpecApplyConfiguration) WithPool(value *ResourcePoolApplyConfiguration) *ResourceSliceSpecApplyConfiguration {
    +	b.Pool = value
    +	return b
    +}
    +
    +// WithNodeName sets the NodeName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the NodeName field is set to the value of the last call.
    +func (b *ResourceSliceSpecApplyConfiguration) WithNodeName(value string) *ResourceSliceSpecApplyConfiguration {
    +	b.NodeName = &value
    +	return b
    +}
    +
    +// WithNodeSelector sets the NodeSelector field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the NodeSelector field is set to the value of the last call.
    +func (b *ResourceSliceSpecApplyConfiguration) WithNodeSelector(value *v1.NodeSelectorApplyConfiguration) *ResourceSliceSpecApplyConfiguration {
    +	b.NodeSelector = value
    +	return b
    +}
    +
    +// WithAllNodes sets the AllNodes field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the AllNodes field is set to the value of the last call.
    +func (b *ResourceSliceSpecApplyConfiguration) WithAllNodes(value bool) *ResourceSliceSpecApplyConfiguration {
    +	b.AllNodes = &value
    +	return b
    +}
    +
    +// WithDevices adds the given value to the Devices field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Devices field.
    +func (b *ResourceSliceSpecApplyConfiguration) WithDevices(values ...*DeviceApplyConfiguration) *ResourceSliceSpecApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithDevices")
    +		}
    +		b.Devices = append(b.Devices, *values[i])
    +	}
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1/priorityclass.go b/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1/priorityclass.go
    index b57e8ba57dc7..24f122cc01f8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1/priorityclass.go
    @@ -21,25 +21,25 @@ package v1
     import (
     	corev1 "k8s.io/api/core/v1"
     	schedulingv1 "k8s.io/api/scheduling/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PriorityClassApplyConfiguration represents an declarative configuration of the PriorityClass type for use
    +// PriorityClassApplyConfiguration represents a declarative configuration of the PriorityClass type for use
     // with apply.
     type PriorityClassApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Value                            *int32                   `json:"value,omitempty"`
    -	GlobalDefault                    *bool                    `json:"globalDefault,omitempty"`
    -	Description                      *string                  `json:"description,omitempty"`
    -	PreemptionPolicy                 *corev1.PreemptionPolicy `json:"preemptionPolicy,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Value                                *int32                   `json:"value,omitempty"`
    +	GlobalDefault                        *bool                    `json:"globalDefault,omitempty"`
    +	Description                          *string                  `json:"description,omitempty"`
    +	PreemptionPolicy                     *corev1.PreemptionPolicy `json:"preemptionPolicy,omitempty"`
     }
     
    -// PriorityClass constructs an declarative configuration of the PriorityClass type for use with
    +// PriorityClass constructs a declarative configuration of the PriorityClass type for use with
     // apply.
     func PriorityClass(name string) *PriorityClassApplyConfiguration {
     	b := &PriorityClassApplyConfiguration{}
    @@ -88,7 +88,7 @@ func extractPriorityClass(priorityClass *schedulingv1.PriorityClass, fieldManage
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithKind(value string) *PriorityClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *PriorityClassApplyConfiguration) WithKind(value string) *PriorityClassA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithAPIVersion(value string) *PriorityClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *PriorityClassApplyConfiguration) WithAPIVersion(value string) *Priority
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithName(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *PriorityClassApplyConfiguration) WithName(value string) *PriorityClassA
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithGenerateName(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *PriorityClassApplyConfiguration) WithGenerateName(value string) *Priori
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithNamespace(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -132,7 +132,7 @@ func (b *PriorityClassApplyConfiguration) WithNamespace(value string) *PriorityC
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithUID(value types.UID) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -141,7 +141,7 @@ func (b *PriorityClassApplyConfiguration) WithUID(value types.UID) *PriorityClas
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithResourceVersion(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -150,25 +150,25 @@ func (b *PriorityClassApplyConfiguration) WithResourceVersion(value string) *Pri
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithGeneration(value int64) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *PriorityClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PriorityClassApplyConfiguration {
    +func (b *PriorityClassApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *PriorityClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PriorityClassApplyConfiguration {
    +func (b *PriorityClassApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -177,7 +177,7 @@ func (b *PriorityClassApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -187,11 +187,11 @@ func (b *PriorityClassApplyConfiguration) WithDeletionGracePeriodSeconds(value i
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PriorityClassApplyConfiguration) WithLabels(entries map[string]string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -202,11 +202,11 @@ func (b *PriorityClassApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PriorityClassApplyConfiguration) WithAnnotations(entries map[string]string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -214,13 +214,13 @@ func (b *PriorityClassApplyConfiguration) WithAnnotations(entries map[string]str
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *PriorityClassApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *PriorityClassApplyConfiguration {
    +func (b *PriorityClassApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -231,14 +231,14 @@ func (b *PriorityClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     func (b *PriorityClassApplyConfiguration) WithFinalizers(values ...string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *PriorityClassApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -273,3 +273,9 @@ func (b *PriorityClassApplyConfiguration) WithPreemptionPolicy(value corev1.Pree
     	b.PreemptionPolicy = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PriorityClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1alpha1/priorityclass.go b/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1alpha1/priorityclass.go
    index 0cd09d5d1ce5..37a50ef6ad7f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1alpha1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1alpha1/priorityclass.go
    @@ -20,7 +20,7 @@ package v1alpha1
     
     import (
     	corev1 "k8s.io/api/core/v1"
    -	v1alpha1 "k8s.io/api/scheduling/v1alpha1"
    +	schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    @@ -28,7 +28,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PriorityClassApplyConfiguration represents an declarative configuration of the PriorityClass type for use
    +// PriorityClassApplyConfiguration represents a declarative configuration of the PriorityClass type for use
     // with apply.
     type PriorityClassApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -39,7 +39,7 @@ type PriorityClassApplyConfiguration struct {
     	PreemptionPolicy                 *corev1.PreemptionPolicy `json:"preemptionPolicy,omitempty"`
     }
     
    -// PriorityClass constructs an declarative configuration of the PriorityClass type for use with
    +// PriorityClass constructs a declarative configuration of the PriorityClass type for use with
     // apply.
     func PriorityClass(name string) *PriorityClassApplyConfiguration {
     	b := &PriorityClassApplyConfiguration{}
    @@ -60,18 +60,18 @@ func PriorityClass(name string) *PriorityClassApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractPriorityClass(priorityClass *v1alpha1.PriorityClass, fieldManager string) (*PriorityClassApplyConfiguration, error) {
    +func ExtractPriorityClass(priorityClass *schedulingv1alpha1.PriorityClass, fieldManager string) (*PriorityClassApplyConfiguration, error) {
     	return extractPriorityClass(priorityClass, fieldManager, "")
     }
     
     // ExtractPriorityClassStatus is the same as ExtractPriorityClass except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractPriorityClassStatus(priorityClass *v1alpha1.PriorityClass, fieldManager string) (*PriorityClassApplyConfiguration, error) {
    +func ExtractPriorityClassStatus(priorityClass *schedulingv1alpha1.PriorityClass, fieldManager string) (*PriorityClassApplyConfiguration, error) {
     	return extractPriorityClass(priorityClass, fieldManager, "status")
     }
     
    -func extractPriorityClass(priorityClass *v1alpha1.PriorityClass, fieldManager string, subresource string) (*PriorityClassApplyConfiguration, error) {
    +func extractPriorityClass(priorityClass *schedulingv1alpha1.PriorityClass, fieldManager string, subresource string) (*PriorityClassApplyConfiguration, error) {
     	b := &PriorityClassApplyConfiguration{}
     	err := managedfields.ExtractInto(priorityClass, internal.Parser().Type("io.k8s.api.scheduling.v1alpha1.PriorityClass"), fieldManager, b, subresource)
     	if err != nil {
    @@ -88,7 +88,7 @@ func extractPriorityClass(priorityClass *v1alpha1.PriorityClass, fieldManager st
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithKind(value string) *PriorityClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *PriorityClassApplyConfiguration) WithKind(value string) *PriorityClassA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithAPIVersion(value string) *PriorityClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *PriorityClassApplyConfiguration) WithAPIVersion(value string) *Priority
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithName(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *PriorityClassApplyConfiguration) WithName(value string) *PriorityClassA
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithGenerateName(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *PriorityClassApplyConfiguration) WithGenerateName(value string) *Priori
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithNamespace(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -132,7 +132,7 @@ func (b *PriorityClassApplyConfiguration) WithNamespace(value string) *PriorityC
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithUID(value types.UID) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -141,7 +141,7 @@ func (b *PriorityClassApplyConfiguration) WithUID(value types.UID) *PriorityClas
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithResourceVersion(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -150,7 +150,7 @@ func (b *PriorityClassApplyConfiguration) WithResourceVersion(value string) *Pri
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithGeneration(value int64) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -159,7 +159,7 @@ func (b *PriorityClassApplyConfiguration) WithGeneration(value int64) *PriorityC
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -168,7 +168,7 @@ func (b *PriorityClassApplyConfiguration) WithCreationTimestamp(value metav1.Tim
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -177,7 +177,7 @@ func (b *PriorityClassApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -187,11 +187,11 @@ func (b *PriorityClassApplyConfiguration) WithDeletionGracePeriodSeconds(value i
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PriorityClassApplyConfiguration) WithLabels(entries map[string]string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -202,11 +202,11 @@ func (b *PriorityClassApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PriorityClassApplyConfiguration) WithAnnotations(entries map[string]string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -220,7 +220,7 @@ func (b *PriorityClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -231,7 +231,7 @@ func (b *PriorityClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     func (b *PriorityClassApplyConfiguration) WithFinalizers(values ...string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -273,3 +273,9 @@ func (b *PriorityClassApplyConfiguration) WithPreemptionPolicy(value corev1.Pree
     	b.PreemptionPolicy = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PriorityClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1beta1/priorityclass.go b/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1beta1/priorityclass.go
    index 98cfb14c7057..4b6d52039173 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1beta1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/scheduling/v1beta1/priorityclass.go
    @@ -20,7 +20,7 @@ package v1beta1
     
     import (
     	corev1 "k8s.io/api/core/v1"
    -	v1beta1 "k8s.io/api/scheduling/v1beta1"
    +	schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    @@ -28,7 +28,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// PriorityClassApplyConfiguration represents an declarative configuration of the PriorityClass type for use
    +// PriorityClassApplyConfiguration represents a declarative configuration of the PriorityClass type for use
     // with apply.
     type PriorityClassApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -39,7 +39,7 @@ type PriorityClassApplyConfiguration struct {
     	PreemptionPolicy                 *corev1.PreemptionPolicy `json:"preemptionPolicy,omitempty"`
     }
     
    -// PriorityClass constructs an declarative configuration of the PriorityClass type for use with
    +// PriorityClass constructs a declarative configuration of the PriorityClass type for use with
     // apply.
     func PriorityClass(name string) *PriorityClassApplyConfiguration {
     	b := &PriorityClassApplyConfiguration{}
    @@ -60,18 +60,18 @@ func PriorityClass(name string) *PriorityClassApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractPriorityClass(priorityClass *v1beta1.PriorityClass, fieldManager string) (*PriorityClassApplyConfiguration, error) {
    +func ExtractPriorityClass(priorityClass *schedulingv1beta1.PriorityClass, fieldManager string) (*PriorityClassApplyConfiguration, error) {
     	return extractPriorityClass(priorityClass, fieldManager, "")
     }
     
     // ExtractPriorityClassStatus is the same as ExtractPriorityClass except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractPriorityClassStatus(priorityClass *v1beta1.PriorityClass, fieldManager string) (*PriorityClassApplyConfiguration, error) {
    +func ExtractPriorityClassStatus(priorityClass *schedulingv1beta1.PriorityClass, fieldManager string) (*PriorityClassApplyConfiguration, error) {
     	return extractPriorityClass(priorityClass, fieldManager, "status")
     }
     
    -func extractPriorityClass(priorityClass *v1beta1.PriorityClass, fieldManager string, subresource string) (*PriorityClassApplyConfiguration, error) {
    +func extractPriorityClass(priorityClass *schedulingv1beta1.PriorityClass, fieldManager string, subresource string) (*PriorityClassApplyConfiguration, error) {
     	b := &PriorityClassApplyConfiguration{}
     	err := managedfields.ExtractInto(priorityClass, internal.Parser().Type("io.k8s.api.scheduling.v1beta1.PriorityClass"), fieldManager, b, subresource)
     	if err != nil {
    @@ -88,7 +88,7 @@ func extractPriorityClass(priorityClass *v1beta1.PriorityClass, fieldManager str
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithKind(value string) *PriorityClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -96,7 +96,7 @@ func (b *PriorityClassApplyConfiguration) WithKind(value string) *PriorityClassA
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithAPIVersion(value string) *PriorityClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -105,7 +105,7 @@ func (b *PriorityClassApplyConfiguration) WithAPIVersion(value string) *Priority
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithName(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -114,7 +114,7 @@ func (b *PriorityClassApplyConfiguration) WithName(value string) *PriorityClassA
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithGenerateName(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -123,7 +123,7 @@ func (b *PriorityClassApplyConfiguration) WithGenerateName(value string) *Priori
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithNamespace(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -132,7 +132,7 @@ func (b *PriorityClassApplyConfiguration) WithNamespace(value string) *PriorityC
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithUID(value types.UID) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -141,7 +141,7 @@ func (b *PriorityClassApplyConfiguration) WithUID(value types.UID) *PriorityClas
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithResourceVersion(value string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -150,7 +150,7 @@ func (b *PriorityClassApplyConfiguration) WithResourceVersion(value string) *Pri
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithGeneration(value int64) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -159,7 +159,7 @@ func (b *PriorityClassApplyConfiguration) WithGeneration(value int64) *PriorityC
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -168,7 +168,7 @@ func (b *PriorityClassApplyConfiguration) WithCreationTimestamp(value metav1.Tim
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -177,7 +177,7 @@ func (b *PriorityClassApplyConfiguration) WithDeletionTimestamp(value metav1.Tim
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *PriorityClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -187,11 +187,11 @@ func (b *PriorityClassApplyConfiguration) WithDeletionGracePeriodSeconds(value i
     // overwriting an existing map entries in Labels field with the same key.
     func (b *PriorityClassApplyConfiguration) WithLabels(entries map[string]string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -202,11 +202,11 @@ func (b *PriorityClassApplyConfiguration) WithLabels(entries map[string]string)
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *PriorityClassApplyConfiguration) WithAnnotations(entries map[string]string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -220,7 +220,7 @@ func (b *PriorityClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -231,7 +231,7 @@ func (b *PriorityClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owne
     func (b *PriorityClassApplyConfiguration) WithFinalizers(values ...string) *PriorityClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -273,3 +273,9 @@ func (b *PriorityClassApplyConfiguration) WithPreemptionPolicy(value corev1.Pree
     	b.PreemptionPolicy = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *PriorityClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriver.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriver.go
    index aeead0861c77..6941e4cdc53a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriver.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriver.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apistoragev1 "k8s.io/api/storage/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	storagev1 "k8s.io/api/storage/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CSIDriverApplyConfiguration represents an declarative configuration of the CSIDriver type for use
    +// CSIDriverApplyConfiguration represents a declarative configuration of the CSIDriver type for use
     // with apply.
     type CSIDriverApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *CSIDriverSpecApplyConfiguration `json:"spec,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *CSIDriverSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// CSIDriver constructs an declarative configuration of the CSIDriver type for use with
    +// CSIDriver constructs a declarative configuration of the CSIDriver type for use with
     // apply.
     func CSIDriver(name string) *CSIDriverApplyConfiguration {
     	b := &CSIDriverApplyConfiguration{}
    @@ -56,18 +56,18 @@ func CSIDriver(name string) *CSIDriverApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractCSIDriver(cSIDriver *apistoragev1.CSIDriver, fieldManager string) (*CSIDriverApplyConfiguration, error) {
    +func ExtractCSIDriver(cSIDriver *storagev1.CSIDriver, fieldManager string) (*CSIDriverApplyConfiguration, error) {
     	return extractCSIDriver(cSIDriver, fieldManager, "")
     }
     
     // ExtractCSIDriverStatus is the same as ExtractCSIDriver except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractCSIDriverStatus(cSIDriver *apistoragev1.CSIDriver, fieldManager string) (*CSIDriverApplyConfiguration, error) {
    +func ExtractCSIDriverStatus(cSIDriver *storagev1.CSIDriver, fieldManager string) (*CSIDriverApplyConfiguration, error) {
     	return extractCSIDriver(cSIDriver, fieldManager, "status")
     }
     
    -func extractCSIDriver(cSIDriver *apistoragev1.CSIDriver, fieldManager string, subresource string) (*CSIDriverApplyConfiguration, error) {
    +func extractCSIDriver(cSIDriver *storagev1.CSIDriver, fieldManager string, subresource string) (*CSIDriverApplyConfiguration, error) {
     	b := &CSIDriverApplyConfiguration{}
     	err := managedfields.ExtractInto(cSIDriver, internal.Parser().Type("io.k8s.api.storage.v1.CSIDriver"), fieldManager, b, subresource)
     	if err != nil {
    @@ -84,7 +84,7 @@ func extractCSIDriver(cSIDriver *apistoragev1.CSIDriver, fieldManager string, su
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithKind(value string) *CSIDriverApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *CSIDriverApplyConfiguration) WithKind(value string) *CSIDriverApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithAPIVersion(value string) *CSIDriverApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *CSIDriverApplyConfiguration) WithAPIVersion(value string) *CSIDriverApp
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithName(value string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *CSIDriverApplyConfiguration) WithName(value string) *CSIDriverApplyConf
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithGenerateName(value string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *CSIDriverApplyConfiguration) WithGenerateName(value string) *CSIDriverA
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithNamespace(value string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *CSIDriverApplyConfiguration) WithNamespace(value string) *CSIDriverAppl
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithUID(value types.UID) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *CSIDriverApplyConfiguration) WithUID(value types.UID) *CSIDriverApplyCo
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithResourceVersion(value string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,25 +146,25 @@ func (b *CSIDriverApplyConfiguration) WithResourceVersion(value string) *CSIDriv
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithGeneration(value int64) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *CSIDriverApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CSIDriverApplyConfiguration {
    +func (b *CSIDriverApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *CSIDriverApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CSIDriverApplyConfiguration {
    +func (b *CSIDriverApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *CSIDriverApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *CSIDriverApplyConfiguration) WithDeletionGracePeriodSeconds(value int64
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CSIDriverApplyConfiguration) WithLabels(entries map[string]string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *CSIDriverApplyConfiguration) WithLabels(entries map[string]string) *CSI
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CSIDriverApplyConfiguration) WithAnnotations(entries map[string]string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -210,13 +210,13 @@ func (b *CSIDriverApplyConfiguration) WithAnnotations(entries map[string]string)
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *CSIDriverApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *CSIDriverApplyConfiguration {
    +func (b *CSIDriverApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,14 +227,14 @@ func (b *CSIDriverApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     func (b *CSIDriverApplyConfiguration) WithFinalizers(values ...string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *CSIDriverApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -245,3 +245,9 @@ func (b *CSIDriverApplyConfiguration) WithSpec(value *CSIDriverSpecApplyConfigur
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CSIDriverApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriverspec.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriverspec.go
    index a1ef00656bbf..1b58c6db89c5 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriverspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriverspec.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/storage/v1"
    +	storagev1 "k8s.io/api/storage/v1"
     )
     
    -// CSIDriverSpecApplyConfiguration represents an declarative configuration of the CSIDriverSpec type for use
    +// CSIDriverSpecApplyConfiguration represents a declarative configuration of the CSIDriverSpec type for use
     // with apply.
     type CSIDriverSpecApplyConfiguration struct {
     	AttachRequired       *bool                            `json:"attachRequired,omitempty"`
     	PodInfoOnMount       *bool                            `json:"podInfoOnMount,omitempty"`
    -	VolumeLifecycleModes []v1.VolumeLifecycleMode         `json:"volumeLifecycleModes,omitempty"`
    +	VolumeLifecycleModes []storagev1.VolumeLifecycleMode  `json:"volumeLifecycleModes,omitempty"`
     	StorageCapacity      *bool                            `json:"storageCapacity,omitempty"`
    -	FSGroupPolicy        *v1.FSGroupPolicy                `json:"fsGroupPolicy,omitempty"`
    +	FSGroupPolicy        *storagev1.FSGroupPolicy         `json:"fsGroupPolicy,omitempty"`
     	TokenRequests        []TokenRequestApplyConfiguration `json:"tokenRequests,omitempty"`
     	RequiresRepublish    *bool                            `json:"requiresRepublish,omitempty"`
     	SELinuxMount         *bool                            `json:"seLinuxMount,omitempty"`
     }
     
    -// CSIDriverSpecApplyConfiguration constructs an declarative configuration of the CSIDriverSpec type for use with
    +// CSIDriverSpecApplyConfiguration constructs a declarative configuration of the CSIDriverSpec type for use with
     // apply.
     func CSIDriverSpec() *CSIDriverSpecApplyConfiguration {
     	return &CSIDriverSpecApplyConfiguration{}
    @@ -60,7 +60,7 @@ func (b *CSIDriverSpecApplyConfiguration) WithPodInfoOnMount(value bool) *CSIDri
     // WithVolumeLifecycleModes adds the given value to the VolumeLifecycleModes field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the VolumeLifecycleModes field.
    -func (b *CSIDriverSpecApplyConfiguration) WithVolumeLifecycleModes(values ...v1.VolumeLifecycleMode) *CSIDriverSpecApplyConfiguration {
    +func (b *CSIDriverSpecApplyConfiguration) WithVolumeLifecycleModes(values ...storagev1.VolumeLifecycleMode) *CSIDriverSpecApplyConfiguration {
     	for i := range values {
     		b.VolumeLifecycleModes = append(b.VolumeLifecycleModes, values[i])
     	}
    @@ -78,7 +78,7 @@ func (b *CSIDriverSpecApplyConfiguration) WithStorageCapacity(value bool) *CSIDr
     // WithFSGroupPolicy sets the FSGroupPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the FSGroupPolicy field is set to the value of the last call.
    -func (b *CSIDriverSpecApplyConfiguration) WithFSGroupPolicy(value v1.FSGroupPolicy) *CSIDriverSpecApplyConfiguration {
    +func (b *CSIDriverSpecApplyConfiguration) WithFSGroupPolicy(value storagev1.FSGroupPolicy) *CSIDriverSpecApplyConfiguration {
     	b.FSGroupPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinode.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinode.go
    index d8296e485616..f31620709c41 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinode.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinode.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1
     
     import (
    -	apistoragev1 "k8s.io/api/storage/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	storagev1 "k8s.io/api/storage/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CSINodeApplyConfiguration represents an declarative configuration of the CSINode type for use
    +// CSINodeApplyConfiguration represents a declarative configuration of the CSINode type for use
     // with apply.
     type CSINodeApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *CSINodeSpecApplyConfiguration `json:"spec,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *CSINodeSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// CSINode constructs an declarative configuration of the CSINode type for use with
    +// CSINode constructs a declarative configuration of the CSINode type for use with
     // apply.
     func CSINode(name string) *CSINodeApplyConfiguration {
     	b := &CSINodeApplyConfiguration{}
    @@ -56,18 +56,18 @@ func CSINode(name string) *CSINodeApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractCSINode(cSINode *apistoragev1.CSINode, fieldManager string) (*CSINodeApplyConfiguration, error) {
    +func ExtractCSINode(cSINode *storagev1.CSINode, fieldManager string) (*CSINodeApplyConfiguration, error) {
     	return extractCSINode(cSINode, fieldManager, "")
     }
     
     // ExtractCSINodeStatus is the same as ExtractCSINode except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractCSINodeStatus(cSINode *apistoragev1.CSINode, fieldManager string) (*CSINodeApplyConfiguration, error) {
    +func ExtractCSINodeStatus(cSINode *storagev1.CSINode, fieldManager string) (*CSINodeApplyConfiguration, error) {
     	return extractCSINode(cSINode, fieldManager, "status")
     }
     
    -func extractCSINode(cSINode *apistoragev1.CSINode, fieldManager string, subresource string) (*CSINodeApplyConfiguration, error) {
    +func extractCSINode(cSINode *storagev1.CSINode, fieldManager string, subresource string) (*CSINodeApplyConfiguration, error) {
     	b := &CSINodeApplyConfiguration{}
     	err := managedfields.ExtractInto(cSINode, internal.Parser().Type("io.k8s.api.storage.v1.CSINode"), fieldManager, b, subresource)
     	if err != nil {
    @@ -84,7 +84,7 @@ func extractCSINode(cSINode *apistoragev1.CSINode, fieldManager string, subresou
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithKind(value string) *CSINodeApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *CSINodeApplyConfiguration) WithKind(value string) *CSINodeApplyConfigur
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithAPIVersion(value string) *CSINodeApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *CSINodeApplyConfiguration) WithAPIVersion(value string) *CSINodeApplyCo
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithName(value string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *CSINodeApplyConfiguration) WithName(value string) *CSINodeApplyConfigur
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithGenerateName(value string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *CSINodeApplyConfiguration) WithGenerateName(value string) *CSINodeApply
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithNamespace(value string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *CSINodeApplyConfiguration) WithNamespace(value string) *CSINodeApplyCon
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithUID(value types.UID) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *CSINodeApplyConfiguration) WithUID(value types.UID) *CSINodeApplyConfig
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithResourceVersion(value string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,25 +146,25 @@ func (b *CSINodeApplyConfiguration) WithResourceVersion(value string) *CSINodeAp
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithGeneration(value int64) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *CSINodeApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CSINodeApplyConfiguration {
    +func (b *CSINodeApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *CSINodeApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CSINodeApplyConfiguration {
    +func (b *CSINodeApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *CSINodeApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CS
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *CSINodeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64)
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CSINodeApplyConfiguration) WithLabels(entries map[string]string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *CSINodeApplyConfiguration) WithLabels(entries map[string]string) *CSINo
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CSINodeApplyConfiguration) WithAnnotations(entries map[string]string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -210,13 +210,13 @@ func (b *CSINodeApplyConfiguration) WithAnnotations(entries map[string]string) *
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *CSINodeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *CSINodeApplyConfiguration {
    +func (b *CSINodeApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,14 +227,14 @@ func (b *CSINodeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     func (b *CSINodeApplyConfiguration) WithFinalizers(values ...string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *CSINodeApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -245,3 +245,9 @@ func (b *CSINodeApplyConfiguration) WithSpec(value *CSINodeSpecApplyConfiguratio
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CSINodeApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinodedriver.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinodedriver.go
    index 6219ef115122..8c69e435e7ef 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinodedriver.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinodedriver.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// CSINodeDriverApplyConfiguration represents an declarative configuration of the CSINodeDriver type for use
    +// CSINodeDriverApplyConfiguration represents a declarative configuration of the CSINodeDriver type for use
     // with apply.
     type CSINodeDriverApplyConfiguration struct {
     	Name         *string                                `json:"name,omitempty"`
    @@ -27,7 +27,7 @@ type CSINodeDriverApplyConfiguration struct {
     	Allocatable  *VolumeNodeResourcesApplyConfiguration `json:"allocatable,omitempty"`
     }
     
    -// CSINodeDriverApplyConfiguration constructs an declarative configuration of the CSINodeDriver type for use with
    +// CSINodeDriverApplyConfiguration constructs a declarative configuration of the CSINodeDriver type for use with
     // apply.
     func CSINodeDriver() *CSINodeDriverApplyConfiguration {
     	return &CSINodeDriverApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinodespec.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinodespec.go
    index 30d1d4546b9c..21d3ba7cccf8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinodespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csinodespec.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// CSINodeSpecApplyConfiguration represents an declarative configuration of the CSINodeSpec type for use
    +// CSINodeSpecApplyConfiguration represents a declarative configuration of the CSINodeSpec type for use
     // with apply.
     type CSINodeSpecApplyConfiguration struct {
     	Drivers []CSINodeDriverApplyConfiguration `json:"drivers,omitempty"`
     }
     
    -// CSINodeSpecApplyConfiguration constructs an declarative configuration of the CSINodeSpec type for use with
    +// CSINodeSpecApplyConfiguration constructs a declarative configuration of the CSINodeSpec type for use with
     // apply.
     func CSINodeSpec() *CSINodeSpecApplyConfiguration {
     	return &CSINodeSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csistoragecapacity.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csistoragecapacity.go
    index c47c6b821539..226fb1f70c22 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csistoragecapacity.go
    @@ -21,25 +21,25 @@ package v1
     import (
     	storagev1 "k8s.io/api/storage/v1"
     	resource "k8s.io/apimachinery/pkg/api/resource"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CSIStorageCapacityApplyConfiguration represents an declarative configuration of the CSIStorageCapacity type for use
    +// CSIStorageCapacityApplyConfiguration represents a declarative configuration of the CSIStorageCapacity type for use
     // with apply.
     type CSIStorageCapacityApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	NodeTopology                     *v1.LabelSelectorApplyConfiguration `json:"nodeTopology,omitempty"`
    -	StorageClassName                 *string                             `json:"storageClassName,omitempty"`
    -	Capacity                         *resource.Quantity                  `json:"capacity,omitempty"`
    -	MaximumVolumeSize                *resource.Quantity                  `json:"maximumVolumeSize,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	NodeTopology                         *metav1.LabelSelectorApplyConfiguration `json:"nodeTopology,omitempty"`
    +	StorageClassName                     *string                                 `json:"storageClassName,omitempty"`
    +	Capacity                             *resource.Quantity                      `json:"capacity,omitempty"`
    +	MaximumVolumeSize                    *resource.Quantity                      `json:"maximumVolumeSize,omitempty"`
     }
     
    -// CSIStorageCapacity constructs an declarative configuration of the CSIStorageCapacity type for use with
    +// CSIStorageCapacity constructs a declarative configuration of the CSIStorageCapacity type for use with
     // apply.
     func CSIStorageCapacity(name, namespace string) *CSIStorageCapacityApplyConfiguration {
     	b := &CSIStorageCapacityApplyConfiguration{}
    @@ -90,7 +90,7 @@ func extractCSIStorageCapacity(cSIStorageCapacity *storagev1.CSIStorageCapacity,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithKind(value string) *CSIStorageCapacityApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -98,7 +98,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithKind(value string) *CSIStorag
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithAPIVersion(value string) *CSIStorageCapacityApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -107,7 +107,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithAPIVersion(value string) *CSI
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithName(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -116,7 +116,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithName(value string) *CSIStorag
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithGenerateName(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -125,7 +125,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithGenerateName(value string) *C
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithNamespace(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -134,7 +134,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithNamespace(value string) *CSIS
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithUID(value types.UID) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -143,7 +143,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithUID(value types.UID) *CSIStor
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithResourceVersion(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -152,25 +152,25 @@ func (b *CSIStorageCapacityApplyConfiguration) WithResourceVersion(value string)
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithGeneration(value int64) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *CSIStorageCapacityApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CSIStorageCapacityApplyConfiguration {
    +func (b *CSIStorageCapacityApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *CSIStorageCapacityApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CSIStorageCapacityApplyConfiguration {
    +func (b *CSIStorageCapacityApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -179,7 +179,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithDeletionTimestamp(value metav
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -189,11 +189,11 @@ func (b *CSIStorageCapacityApplyConfiguration) WithDeletionGracePeriodSeconds(va
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CSIStorageCapacityApplyConfiguration) WithLabels(entries map[string]string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -204,11 +204,11 @@ func (b *CSIStorageCapacityApplyConfiguration) WithLabels(entries map[string]str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CSIStorageCapacityApplyConfiguration) WithAnnotations(entries map[string]string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,13 +216,13 @@ func (b *CSIStorageCapacityApplyConfiguration) WithAnnotations(entries map[strin
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *CSIStorageCapacityApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *CSIStorageCapacityApplyConfiguration {
    +func (b *CSIStorageCapacityApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -233,21 +233,21 @@ func (b *CSIStorageCapacityApplyConfiguration) WithOwnerReferences(values ...*v1
     func (b *CSIStorageCapacityApplyConfiguration) WithFinalizers(values ...string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *CSIStorageCapacityApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
     // WithNodeTopology sets the NodeTopology field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the NodeTopology field is set to the value of the last call.
    -func (b *CSIStorageCapacityApplyConfiguration) WithNodeTopology(value *v1.LabelSelectorApplyConfiguration) *CSIStorageCapacityApplyConfiguration {
    +func (b *CSIStorageCapacityApplyConfiguration) WithNodeTopology(value *metav1.LabelSelectorApplyConfiguration) *CSIStorageCapacityApplyConfiguration {
     	b.NodeTopology = value
     	return b
     }
    @@ -275,3 +275,9 @@ func (b *CSIStorageCapacityApplyConfiguration) WithMaximumVolumeSize(value resou
     	b.MaximumVolumeSize = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CSIStorageCapacityApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/storageclass.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/storageclass.go
    index 98c4c2233643..cab39900e430 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/storageclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/storageclass.go
    @@ -21,29 +21,29 @@ package v1
     import (
     	corev1 "k8s.io/api/core/v1"
     	storagev1 "k8s.io/api/storage/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// StorageClassApplyConfiguration represents an declarative configuration of the StorageClass type for use
    +// StorageClassApplyConfiguration represents a declarative configuration of the StorageClass type for use
     // with apply.
     type StorageClassApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Provisioner                      *string                                                            `json:"provisioner,omitempty"`
    -	Parameters                       map[string]string                                                  `json:"parameters,omitempty"`
    -	ReclaimPolicy                    *corev1.PersistentVolumeReclaimPolicy                              `json:"reclaimPolicy,omitempty"`
    -	MountOptions                     []string                                                           `json:"mountOptions,omitempty"`
    -	AllowVolumeExpansion             *bool                                                              `json:"allowVolumeExpansion,omitempty"`
    -	VolumeBindingMode                *storagev1.VolumeBindingMode                                       `json:"volumeBindingMode,omitempty"`
    -	AllowedTopologies                []applyconfigurationscorev1.TopologySelectorTermApplyConfiguration `json:"allowedTopologies,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Provisioner                          *string                                                            `json:"provisioner,omitempty"`
    +	Parameters                           map[string]string                                                  `json:"parameters,omitempty"`
    +	ReclaimPolicy                        *corev1.PersistentVolumeReclaimPolicy                              `json:"reclaimPolicy,omitempty"`
    +	MountOptions                         []string                                                           `json:"mountOptions,omitempty"`
    +	AllowVolumeExpansion                 *bool                                                              `json:"allowVolumeExpansion,omitempty"`
    +	VolumeBindingMode                    *storagev1.VolumeBindingMode                                       `json:"volumeBindingMode,omitempty"`
    +	AllowedTopologies                    []applyconfigurationscorev1.TopologySelectorTermApplyConfiguration `json:"allowedTopologies,omitempty"`
     }
     
    -// StorageClass constructs an declarative configuration of the StorageClass type for use with
    +// StorageClass constructs a declarative configuration of the StorageClass type for use with
     // apply.
     func StorageClass(name string) *StorageClassApplyConfiguration {
     	b := &StorageClassApplyConfiguration{}
    @@ -92,7 +92,7 @@ func extractStorageClass(storageClass *storagev1.StorageClass, fieldManager stri
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithKind(value string) *StorageClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -100,7 +100,7 @@ func (b *StorageClassApplyConfiguration) WithKind(value string) *StorageClassApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithAPIVersion(value string) *StorageClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -109,7 +109,7 @@ func (b *StorageClassApplyConfiguration) WithAPIVersion(value string) *StorageCl
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithName(value string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -118,7 +118,7 @@ func (b *StorageClassApplyConfiguration) WithName(value string) *StorageClassApp
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithGenerateName(value string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -127,7 +127,7 @@ func (b *StorageClassApplyConfiguration) WithGenerateName(value string) *Storage
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithNamespace(value string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -136,7 +136,7 @@ func (b *StorageClassApplyConfiguration) WithNamespace(value string) *StorageCla
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithUID(value types.UID) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -145,7 +145,7 @@ func (b *StorageClassApplyConfiguration) WithUID(value types.UID) *StorageClassA
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithResourceVersion(value string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -154,25 +154,25 @@ func (b *StorageClassApplyConfiguration) WithResourceVersion(value string) *Stor
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithGeneration(value int64) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *StorageClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *StorageClassApplyConfiguration {
    +func (b *StorageClassApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *StorageClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *StorageClassApplyConfiguration {
    +func (b *StorageClassApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -181,7 +181,7 @@ func (b *StorageClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -191,11 +191,11 @@ func (b *StorageClassApplyConfiguration) WithDeletionGracePeriodSeconds(value in
     // overwriting an existing map entries in Labels field with the same key.
     func (b *StorageClassApplyConfiguration) WithLabels(entries map[string]string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -206,11 +206,11 @@ func (b *StorageClassApplyConfiguration) WithLabels(entries map[string]string) *
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *StorageClassApplyConfiguration) WithAnnotations(entries map[string]string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -218,13 +218,13 @@ func (b *StorageClassApplyConfiguration) WithAnnotations(entries map[string]stri
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *StorageClassApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *StorageClassApplyConfiguration {
    +func (b *StorageClassApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -235,14 +235,14 @@ func (b *StorageClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     func (b *StorageClassApplyConfiguration) WithFinalizers(values ...string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *StorageClassApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -314,3 +314,9 @@ func (b *StorageClassApplyConfiguration) WithAllowedTopologies(values ...*applyc
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *StorageClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/tokenrequest.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/tokenrequest.go
    index 6665a1ff2e87..77b96db2f05a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/tokenrequest.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/tokenrequest.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1
     
    -// TokenRequestApplyConfiguration represents an declarative configuration of the TokenRequest type for use
    +// TokenRequestApplyConfiguration represents a declarative configuration of the TokenRequest type for use
     // with apply.
     type TokenRequestApplyConfiguration struct {
     	Audience          *string `json:"audience,omitempty"`
     	ExpirationSeconds *int64  `json:"expirationSeconds,omitempty"`
     }
     
    -// TokenRequestApplyConfiguration constructs an declarative configuration of the TokenRequest type for use with
    +// TokenRequestApplyConfiguration constructs a declarative configuration of the TokenRequest type for use with
     // apply.
     func TokenRequest() *TokenRequestApplyConfiguration {
     	return &TokenRequestApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachment.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachment.go
    index 4c74f09aa2d7..b28b8c33f7e0 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachment.go
    @@ -19,24 +19,24 @@ limitations under the License.
     package v1
     
     import (
    -	apistoragev1 "k8s.io/api/storage/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	storagev1 "k8s.io/api/storage/v1"
    +	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
     	internal "k8s.io/client-go/applyconfigurations/internal"
    -	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// VolumeAttachmentApplyConfiguration represents an declarative configuration of the VolumeAttachment type for use
    +// VolumeAttachmentApplyConfiguration represents a declarative configuration of the VolumeAttachment type for use
     // with apply.
     type VolumeAttachmentApplyConfiguration struct {
    -	v1.TypeMetaApplyConfiguration    `json:",inline"`
    -	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    -	Spec                             *VolumeAttachmentSpecApplyConfiguration   `json:"spec,omitempty"`
    -	Status                           *VolumeAttachmentStatusApplyConfiguration `json:"status,omitempty"`
    +	metav1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                                 *VolumeAttachmentSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                               *VolumeAttachmentStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// VolumeAttachment constructs an declarative configuration of the VolumeAttachment type for use with
    +// VolumeAttachment constructs a declarative configuration of the VolumeAttachment type for use with
     // apply.
     func VolumeAttachment(name string) *VolumeAttachmentApplyConfiguration {
     	b := &VolumeAttachmentApplyConfiguration{}
    @@ -57,18 +57,18 @@ func VolumeAttachment(name string) *VolumeAttachmentApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractVolumeAttachment(volumeAttachment *apistoragev1.VolumeAttachment, fieldManager string) (*VolumeAttachmentApplyConfiguration, error) {
    +func ExtractVolumeAttachment(volumeAttachment *storagev1.VolumeAttachment, fieldManager string) (*VolumeAttachmentApplyConfiguration, error) {
     	return extractVolumeAttachment(volumeAttachment, fieldManager, "")
     }
     
     // ExtractVolumeAttachmentStatus is the same as ExtractVolumeAttachment except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractVolumeAttachmentStatus(volumeAttachment *apistoragev1.VolumeAttachment, fieldManager string) (*VolumeAttachmentApplyConfiguration, error) {
    +func ExtractVolumeAttachmentStatus(volumeAttachment *storagev1.VolumeAttachment, fieldManager string) (*VolumeAttachmentApplyConfiguration, error) {
     	return extractVolumeAttachment(volumeAttachment, fieldManager, "status")
     }
     
    -func extractVolumeAttachment(volumeAttachment *apistoragev1.VolumeAttachment, fieldManager string, subresource string) (*VolumeAttachmentApplyConfiguration, error) {
    +func extractVolumeAttachment(volumeAttachment *storagev1.VolumeAttachment, fieldManager string, subresource string) (*VolumeAttachmentApplyConfiguration, error) {
     	b := &VolumeAttachmentApplyConfiguration{}
     	err := managedfields.ExtractInto(volumeAttachment, internal.Parser().Type("io.k8s.api.storage.v1.VolumeAttachment"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractVolumeAttachment(volumeAttachment *apistoragev1.VolumeAttachment, fi
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithKind(value string) *VolumeAttachmentApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithKind(value string) *VolumeAttac
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithAPIVersion(value string) *VolumeAttachmentApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithAPIVersion(value string) *Volum
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithName(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithName(value string) *VolumeAttac
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithGenerateName(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithGenerateName(value string) *Vol
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithNamespace(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithNamespace(value string) *Volume
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithUID(value types.UID) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithUID(value types.UID) *VolumeAtt
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithResourceVersion(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,25 +147,25 @@ func (b *VolumeAttachmentApplyConfiguration) WithResourceVersion(value string) *
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithGeneration(value int64) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
     // WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
    -func (b *VolumeAttachmentApplyConfiguration) WithCreationTimestamp(value metav1.Time) *VolumeAttachmentApplyConfiguration {
    +func (b *VolumeAttachmentApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
     // WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    -func (b *VolumeAttachmentApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *VolumeAttachmentApplyConfiguration {
    +func (b *VolumeAttachmentApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithDeletionTimestamp(value metav1.
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *VolumeAttachmentApplyConfiguration) WithDeletionGracePeriodSeconds(valu
     // overwriting an existing map entries in Labels field with the same key.
     func (b *VolumeAttachmentApplyConfiguration) WithLabels(entries map[string]string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *VolumeAttachmentApplyConfiguration) WithLabels(entries map[string]strin
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *VolumeAttachmentApplyConfiguration) WithAnnotations(entries map[string]string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -211,13 +211,13 @@ func (b *VolumeAttachmentApplyConfiguration) WithAnnotations(entries map[string]
     // WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    -func (b *VolumeAttachmentApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *VolumeAttachmentApplyConfiguration {
    +func (b *VolumeAttachmentApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,14 +228,14 @@ func (b *VolumeAttachmentApplyConfiguration) WithOwnerReferences(values ...*v1.O
     func (b *VolumeAttachmentApplyConfiguration) WithFinalizers(values ...string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
     
     func (b *VolumeAttachmentApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
     	if b.ObjectMetaApplyConfiguration == nil {
    -		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
     	}
     }
     
    @@ -254,3 +254,9 @@ func (b *VolumeAttachmentApplyConfiguration) WithStatus(value *VolumeAttachmentS
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *VolumeAttachmentApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentsource.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentsource.go
    index 2bf3f7720d3a..1c865c001f33 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentsource.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// VolumeAttachmentSourceApplyConfiguration represents an declarative configuration of the VolumeAttachmentSource type for use
    +// VolumeAttachmentSourceApplyConfiguration represents a declarative configuration of the VolumeAttachmentSource type for use
     // with apply.
     type VolumeAttachmentSourceApplyConfiguration struct {
    -	PersistentVolumeName *string                                    `json:"persistentVolumeName,omitempty"`
    -	InlineVolumeSpec     *v1.PersistentVolumeSpecApplyConfiguration `json:"inlineVolumeSpec,omitempty"`
    +	PersistentVolumeName *string                                        `json:"persistentVolumeName,omitempty"`
    +	InlineVolumeSpec     *corev1.PersistentVolumeSpecApplyConfiguration `json:"inlineVolumeSpec,omitempty"`
     }
     
    -// VolumeAttachmentSourceApplyConfiguration constructs an declarative configuration of the VolumeAttachmentSource type for use with
    +// VolumeAttachmentSourceApplyConfiguration constructs a declarative configuration of the VolumeAttachmentSource type for use with
     // apply.
     func VolumeAttachmentSource() *VolumeAttachmentSourceApplyConfiguration {
     	return &VolumeAttachmentSourceApplyConfiguration{}
    @@ -46,7 +46,7 @@ func (b *VolumeAttachmentSourceApplyConfiguration) WithPersistentVolumeName(valu
     // WithInlineVolumeSpec sets the InlineVolumeSpec field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the InlineVolumeSpec field is set to the value of the last call.
    -func (b *VolumeAttachmentSourceApplyConfiguration) WithInlineVolumeSpec(value *v1.PersistentVolumeSpecApplyConfiguration) *VolumeAttachmentSourceApplyConfiguration {
    +func (b *VolumeAttachmentSourceApplyConfiguration) WithInlineVolumeSpec(value *corev1.PersistentVolumeSpecApplyConfiguration) *VolumeAttachmentSourceApplyConfiguration {
     	b.InlineVolumeSpec = value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentspec.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentspec.go
    index a55f7c8ea164..8965392352ea 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// VolumeAttachmentSpecApplyConfiguration represents an declarative configuration of the VolumeAttachmentSpec type for use
    +// VolumeAttachmentSpecApplyConfiguration represents a declarative configuration of the VolumeAttachmentSpec type for use
     // with apply.
     type VolumeAttachmentSpecApplyConfiguration struct {
     	Attacher *string                                   `json:"attacher,omitempty"`
    @@ -26,7 +26,7 @@ type VolumeAttachmentSpecApplyConfiguration struct {
     	NodeName *string                                   `json:"nodeName,omitempty"`
     }
     
    -// VolumeAttachmentSpecApplyConfiguration constructs an declarative configuration of the VolumeAttachmentSpec type for use with
    +// VolumeAttachmentSpecApplyConfiguration constructs a declarative configuration of the VolumeAttachmentSpec type for use with
     // apply.
     func VolumeAttachmentSpec() *VolumeAttachmentSpecApplyConfiguration {
     	return &VolumeAttachmentSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentstatus.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentstatus.go
    index 015b08e6ebeb..14293376d093 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattachmentstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1
     
    -// VolumeAttachmentStatusApplyConfiguration represents an declarative configuration of the VolumeAttachmentStatus type for use
    +// VolumeAttachmentStatusApplyConfiguration represents a declarative configuration of the VolumeAttachmentStatus type for use
     // with apply.
     type VolumeAttachmentStatusApplyConfiguration struct {
     	Attached           *bool                          `json:"attached,omitempty"`
    @@ -27,7 +27,7 @@ type VolumeAttachmentStatusApplyConfiguration struct {
     	DetachError        *VolumeErrorApplyConfiguration `json:"detachError,omitempty"`
     }
     
    -// VolumeAttachmentStatusApplyConfiguration constructs an declarative configuration of the VolumeAttachmentStatus type for use with
    +// VolumeAttachmentStatusApplyConfiguration constructs a declarative configuration of the VolumeAttachmentStatus type for use with
     // apply.
     func VolumeAttachmentStatus() *VolumeAttachmentStatusApplyConfiguration {
     	return &VolumeAttachmentStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeerror.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeerror.go
    index 4bf829f8a9a4..c16c5c3af3b8 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeerror.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeerror.go
    @@ -19,17 +19,17 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// VolumeErrorApplyConfiguration represents an declarative configuration of the VolumeError type for use
    +// VolumeErrorApplyConfiguration represents a declarative configuration of the VolumeError type for use
     // with apply.
     type VolumeErrorApplyConfiguration struct {
    -	Time    *v1.Time `json:"time,omitempty"`
    -	Message *string  `json:"message,omitempty"`
    +	Time    *metav1.Time `json:"time,omitempty"`
    +	Message *string      `json:"message,omitempty"`
     }
     
    -// VolumeErrorApplyConfiguration constructs an declarative configuration of the VolumeError type for use with
    +// VolumeErrorApplyConfiguration constructs a declarative configuration of the VolumeError type for use with
     // apply.
     func VolumeError() *VolumeErrorApplyConfiguration {
     	return &VolumeErrorApplyConfiguration{}
    @@ -38,7 +38,7 @@ func VolumeError() *VolumeErrorApplyConfiguration {
     // WithTime sets the Time field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Time field is set to the value of the last call.
    -func (b *VolumeErrorApplyConfiguration) WithTime(value v1.Time) *VolumeErrorApplyConfiguration {
    +func (b *VolumeErrorApplyConfiguration) WithTime(value metav1.Time) *VolumeErrorApplyConfiguration {
     	b.Time = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumenoderesources.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumenoderesources.go
    index 3c5fd3dc29d2..735853c48b8f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumenoderesources.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumenoderesources.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1
     
    -// VolumeNodeResourcesApplyConfiguration represents an declarative configuration of the VolumeNodeResources type for use
    +// VolumeNodeResourcesApplyConfiguration represents a declarative configuration of the VolumeNodeResources type for use
     // with apply.
     type VolumeNodeResourcesApplyConfiguration struct {
     	Count *int32 `json:"count,omitempty"`
     }
     
    -// VolumeNodeResourcesApplyConfiguration constructs an declarative configuration of the VolumeNodeResources type for use with
    +// VolumeNodeResourcesApplyConfiguration constructs a declarative configuration of the VolumeNodeResources type for use with
     // apply.
     func VolumeNodeResources() *VolumeNodeResourcesApplyConfiguration {
     	return &VolumeNodeResourcesApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/csistoragecapacity.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/csistoragecapacity.go
    index 8b810fed10cd..518f7a7f6c68 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/csistoragecapacity.go
    @@ -19,7 +19,7 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/storage/v1alpha1"
    +	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
     	resource "k8s.io/apimachinery/pkg/api/resource"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
    @@ -28,7 +28,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CSIStorageCapacityApplyConfiguration represents an declarative configuration of the CSIStorageCapacity type for use
    +// CSIStorageCapacityApplyConfiguration represents a declarative configuration of the CSIStorageCapacity type for use
     // with apply.
     type CSIStorageCapacityApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -39,7 +39,7 @@ type CSIStorageCapacityApplyConfiguration struct {
     	MaximumVolumeSize                *resource.Quantity                  `json:"maximumVolumeSize,omitempty"`
     }
     
    -// CSIStorageCapacity constructs an declarative configuration of the CSIStorageCapacity type for use with
    +// CSIStorageCapacity constructs a declarative configuration of the CSIStorageCapacity type for use with
     // apply.
     func CSIStorageCapacity(name, namespace string) *CSIStorageCapacityApplyConfiguration {
     	b := &CSIStorageCapacityApplyConfiguration{}
    @@ -61,18 +61,18 @@ func CSIStorageCapacity(name, namespace string) *CSIStorageCapacityApplyConfigur
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractCSIStorageCapacity(cSIStorageCapacity *v1alpha1.CSIStorageCapacity, fieldManager string) (*CSIStorageCapacityApplyConfiguration, error) {
    +func ExtractCSIStorageCapacity(cSIStorageCapacity *storagev1alpha1.CSIStorageCapacity, fieldManager string) (*CSIStorageCapacityApplyConfiguration, error) {
     	return extractCSIStorageCapacity(cSIStorageCapacity, fieldManager, "")
     }
     
     // ExtractCSIStorageCapacityStatus is the same as ExtractCSIStorageCapacity except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractCSIStorageCapacityStatus(cSIStorageCapacity *v1alpha1.CSIStorageCapacity, fieldManager string) (*CSIStorageCapacityApplyConfiguration, error) {
    +func ExtractCSIStorageCapacityStatus(cSIStorageCapacity *storagev1alpha1.CSIStorageCapacity, fieldManager string) (*CSIStorageCapacityApplyConfiguration, error) {
     	return extractCSIStorageCapacity(cSIStorageCapacity, fieldManager, "status")
     }
     
    -func extractCSIStorageCapacity(cSIStorageCapacity *v1alpha1.CSIStorageCapacity, fieldManager string, subresource string) (*CSIStorageCapacityApplyConfiguration, error) {
    +func extractCSIStorageCapacity(cSIStorageCapacity *storagev1alpha1.CSIStorageCapacity, fieldManager string, subresource string) (*CSIStorageCapacityApplyConfiguration, error) {
     	b := &CSIStorageCapacityApplyConfiguration{}
     	err := managedfields.ExtractInto(cSIStorageCapacity, internal.Parser().Type("io.k8s.api.storage.v1alpha1.CSIStorageCapacity"), fieldManager, b, subresource)
     	if err != nil {
    @@ -90,7 +90,7 @@ func extractCSIStorageCapacity(cSIStorageCapacity *v1alpha1.CSIStorageCapacity,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithKind(value string) *CSIStorageCapacityApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -98,7 +98,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithKind(value string) *CSIStorag
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithAPIVersion(value string) *CSIStorageCapacityApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -107,7 +107,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithAPIVersion(value string) *CSI
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithName(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -116,7 +116,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithName(value string) *CSIStorag
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithGenerateName(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -125,7 +125,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithGenerateName(value string) *C
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithNamespace(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -134,7 +134,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithNamespace(value string) *CSIS
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithUID(value types.UID) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -143,7 +143,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithUID(value types.UID) *CSIStor
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithResourceVersion(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -152,7 +152,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithResourceVersion(value string)
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithGeneration(value int64) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -161,7 +161,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithGeneration(value int64) *CSIS
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -170,7 +170,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithCreationTimestamp(value metav
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -179,7 +179,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithDeletionTimestamp(value metav
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -189,11 +189,11 @@ func (b *CSIStorageCapacityApplyConfiguration) WithDeletionGracePeriodSeconds(va
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CSIStorageCapacityApplyConfiguration) WithLabels(entries map[string]string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -204,11 +204,11 @@ func (b *CSIStorageCapacityApplyConfiguration) WithLabels(entries map[string]str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CSIStorageCapacityApplyConfiguration) WithAnnotations(entries map[string]string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -222,7 +222,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithOwnerReferences(values ...*v1
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -233,7 +233,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithOwnerReferences(values ...*v1
     func (b *CSIStorageCapacityApplyConfiguration) WithFinalizers(values ...string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -275,3 +275,9 @@ func (b *CSIStorageCapacityApplyConfiguration) WithMaximumVolumeSize(value resou
     	b.MaximumVolumeSize = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CSIStorageCapacityApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachment.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachment.go
    index bcefb5778a88..b66cf0094dcc 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachment.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// VolumeAttachmentApplyConfiguration represents an declarative configuration of the VolumeAttachment type for use
    +// VolumeAttachmentApplyConfiguration represents a declarative configuration of the VolumeAttachment type for use
     // with apply.
     type VolumeAttachmentApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type VolumeAttachmentApplyConfiguration struct {
     	Status                           *VolumeAttachmentStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// VolumeAttachment constructs an declarative configuration of the VolumeAttachment type for use with
    +// VolumeAttachment constructs a declarative configuration of the VolumeAttachment type for use with
     // apply.
     func VolumeAttachment(name string) *VolumeAttachmentApplyConfiguration {
     	b := &VolumeAttachmentApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractVolumeAttachment(volumeAttachment *storagev1alpha1.VolumeAttachment,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithKind(value string) *VolumeAttachmentApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithKind(value string) *VolumeAttac
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithAPIVersion(value string) *VolumeAttachmentApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithAPIVersion(value string) *Volum
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithName(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithName(value string) *VolumeAttac
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithGenerateName(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithGenerateName(value string) *Vol
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithNamespace(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithNamespace(value string) *Volume
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithUID(value types.UID) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithUID(value types.UID) *VolumeAtt
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithResourceVersion(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithResourceVersion(value string) *
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithGeneration(value int64) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithGeneration(value int64) *Volume
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithCreationTimestamp(value metav1.Time) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithCreationTimestamp(value metav1.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithDeletionTimestamp(value metav1.
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *VolumeAttachmentApplyConfiguration) WithDeletionGracePeriodSeconds(valu
     // overwriting an existing map entries in Labels field with the same key.
     func (b *VolumeAttachmentApplyConfiguration) WithLabels(entries map[string]string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *VolumeAttachmentApplyConfiguration) WithLabels(entries map[string]strin
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *VolumeAttachmentApplyConfiguration) WithAnnotations(entries map[string]string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithOwnerReferences(values ...*v1.O
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithOwnerReferences(values ...*v1.O
     func (b *VolumeAttachmentApplyConfiguration) WithFinalizers(values ...string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *VolumeAttachmentApplyConfiguration) WithStatus(value *VolumeAttachmentS
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *VolumeAttachmentApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentsource.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentsource.go
    index 82872cc3553c..be7da5dd1506 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentsource.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// VolumeAttachmentSourceApplyConfiguration represents an declarative configuration of the VolumeAttachmentSource type for use
    +// VolumeAttachmentSourceApplyConfiguration represents a declarative configuration of the VolumeAttachmentSource type for use
     // with apply.
     type VolumeAttachmentSourceApplyConfiguration struct {
     	PersistentVolumeName *string                                    `json:"persistentVolumeName,omitempty"`
     	InlineVolumeSpec     *v1.PersistentVolumeSpecApplyConfiguration `json:"inlineVolumeSpec,omitempty"`
     }
     
    -// VolumeAttachmentSourceApplyConfiguration constructs an declarative configuration of the VolumeAttachmentSource type for use with
    +// VolumeAttachmentSourceApplyConfiguration constructs a declarative configuration of the VolumeAttachmentSource type for use with
     // apply.
     func VolumeAttachmentSource() *VolumeAttachmentSourceApplyConfiguration {
     	return &VolumeAttachmentSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentspec.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentspec.go
    index 2710ff8864b0..e97487a645dd 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1alpha1
     
    -// VolumeAttachmentSpecApplyConfiguration represents an declarative configuration of the VolumeAttachmentSpec type for use
    +// VolumeAttachmentSpecApplyConfiguration represents a declarative configuration of the VolumeAttachmentSpec type for use
     // with apply.
     type VolumeAttachmentSpecApplyConfiguration struct {
     	Attacher *string                                   `json:"attacher,omitempty"`
    @@ -26,7 +26,7 @@ type VolumeAttachmentSpecApplyConfiguration struct {
     	NodeName *string                                   `json:"nodeName,omitempty"`
     }
     
    -// VolumeAttachmentSpecApplyConfiguration constructs an declarative configuration of the VolumeAttachmentSpec type for use with
    +// VolumeAttachmentSpecApplyConfiguration constructs a declarative configuration of the VolumeAttachmentSpec type for use with
     // apply.
     func VolumeAttachmentSpec() *VolumeAttachmentSpecApplyConfiguration {
     	return &VolumeAttachmentSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentstatus.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentstatus.go
    index 43803496e84d..a287fc6b28c7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattachmentstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1alpha1
     
    -// VolumeAttachmentStatusApplyConfiguration represents an declarative configuration of the VolumeAttachmentStatus type for use
    +// VolumeAttachmentStatusApplyConfiguration represents a declarative configuration of the VolumeAttachmentStatus type for use
     // with apply.
     type VolumeAttachmentStatusApplyConfiguration struct {
     	Attached           *bool                          `json:"attached,omitempty"`
    @@ -27,7 +27,7 @@ type VolumeAttachmentStatusApplyConfiguration struct {
     	DetachError        *VolumeErrorApplyConfiguration `json:"detachError,omitempty"`
     }
     
    -// VolumeAttachmentStatusApplyConfiguration constructs an declarative configuration of the VolumeAttachmentStatus type for use with
    +// VolumeAttachmentStatusApplyConfiguration constructs a declarative configuration of the VolumeAttachmentStatus type for use with
     // apply.
     func VolumeAttachmentStatus() *VolumeAttachmentStatusApplyConfiguration {
     	return &VolumeAttachmentStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattributesclass.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattributesclass.go
    index 9d4c476259e0..898726b62fd1 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattributesclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeattributesclass.go
    @@ -19,7 +19,7 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/storage/v1alpha1"
    +	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// VolumeAttributesClassApplyConfiguration represents an declarative configuration of the VolumeAttributesClass type for use
    +// VolumeAttributesClassApplyConfiguration represents a declarative configuration of the VolumeAttributesClass type for use
     // with apply.
     type VolumeAttributesClassApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type VolumeAttributesClassApplyConfiguration struct {
     	Parameters                       map[string]string `json:"parameters,omitempty"`
     }
     
    -// VolumeAttributesClass constructs an declarative configuration of the VolumeAttributesClass type for use with
    +// VolumeAttributesClass constructs a declarative configuration of the VolumeAttributesClass type for use with
     // apply.
     func VolumeAttributesClass(name string) *VolumeAttributesClassApplyConfiguration {
     	b := &VolumeAttributesClassApplyConfiguration{}
    @@ -57,18 +57,18 @@ func VolumeAttributesClass(name string) *VolumeAttributesClassApplyConfiguration
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractVolumeAttributesClass(volumeAttributesClass *v1alpha1.VolumeAttributesClass, fieldManager string) (*VolumeAttributesClassApplyConfiguration, error) {
    +func ExtractVolumeAttributesClass(volumeAttributesClass *storagev1alpha1.VolumeAttributesClass, fieldManager string) (*VolumeAttributesClassApplyConfiguration, error) {
     	return extractVolumeAttributesClass(volumeAttributesClass, fieldManager, "")
     }
     
     // ExtractVolumeAttributesClassStatus is the same as ExtractVolumeAttributesClass except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractVolumeAttributesClassStatus(volumeAttributesClass *v1alpha1.VolumeAttributesClass, fieldManager string) (*VolumeAttributesClassApplyConfiguration, error) {
    +func ExtractVolumeAttributesClassStatus(volumeAttributesClass *storagev1alpha1.VolumeAttributesClass, fieldManager string) (*VolumeAttributesClassApplyConfiguration, error) {
     	return extractVolumeAttributesClass(volumeAttributesClass, fieldManager, "status")
     }
     
    -func extractVolumeAttributesClass(volumeAttributesClass *v1alpha1.VolumeAttributesClass, fieldManager string, subresource string) (*VolumeAttributesClassApplyConfiguration, error) {
    +func extractVolumeAttributesClass(volumeAttributesClass *storagev1alpha1.VolumeAttributesClass, fieldManager string, subresource string) (*VolumeAttributesClassApplyConfiguration, error) {
     	b := &VolumeAttributesClassApplyConfiguration{}
     	err := managedfields.ExtractInto(volumeAttributesClass, internal.Parser().Type("io.k8s.api.storage.v1alpha1.VolumeAttributesClass"), fieldManager, b, subresource)
     	if err != nil {
    @@ -85,7 +85,7 @@ func extractVolumeAttributesClass(volumeAttributesClass *v1alpha1.VolumeAttribut
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithKind(value string) *VolumeAttributesClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithKind(value string) *Volume
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithAPIVersion(value string) *VolumeAttributesClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithAPIVersion(value string) *
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithName(value string) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithName(value string) *Volume
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithGenerateName(value string) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithGenerateName(value string)
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithNamespace(value string) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithNamespace(value string) *V
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithUID(value types.UID) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithUID(value types.UID) *Volu
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithResourceVersion(value string) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithResourceVersion(value stri
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithGeneration(value int64) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithGeneration(value int64) *V
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithCreationTimestamp(value me
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithDeletionTimestamp(value me
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *VolumeAttributesClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *VolumeAttributesClassApplyConfiguration) WithDeletionGracePeriodSeconds
     // overwriting an existing map entries in Labels field with the same key.
     func (b *VolumeAttributesClassApplyConfiguration) WithLabels(entries map[string]string) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *VolumeAttributesClassApplyConfiguration) WithLabels(entries map[string]
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *VolumeAttributesClassApplyConfiguration) WithAnnotations(entries map[string]string) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithOwnerReferences(values ...
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *VolumeAttributesClassApplyConfiguration) WithOwnerReferences(values ...
     func (b *VolumeAttributesClassApplyConfiguration) WithFinalizers(values ...string) *VolumeAttributesClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -260,3 +260,9 @@ func (b *VolumeAttributesClassApplyConfiguration) WithParameters(entries map[str
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *VolumeAttributesClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeerror.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeerror.go
    index cbff16fd0c7c..ef8f6bbe6418 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeerror.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1alpha1/volumeerror.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// VolumeErrorApplyConfiguration represents an declarative configuration of the VolumeError type for use
    +// VolumeErrorApplyConfiguration represents a declarative configuration of the VolumeError type for use
     // with apply.
     type VolumeErrorApplyConfiguration struct {
     	Time    *v1.Time `json:"time,omitempty"`
     	Message *string  `json:"message,omitempty"`
     }
     
    -// VolumeErrorApplyConfiguration constructs an declarative configuration of the VolumeError type for use with
    +// VolumeErrorApplyConfiguration constructs a declarative configuration of the VolumeError type for use with
     // apply.
     func VolumeError() *VolumeErrorApplyConfiguration {
     	return &VolumeErrorApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriver.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriver.go
    index 4266f0b6e493..0fe9421ded3d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriver.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriver.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CSIDriverApplyConfiguration represents an declarative configuration of the CSIDriver type for use
    +// CSIDriverApplyConfiguration represents a declarative configuration of the CSIDriver type for use
     // with apply.
     type CSIDriverApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type CSIDriverApplyConfiguration struct {
     	Spec                             *CSIDriverSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// CSIDriver constructs an declarative configuration of the CSIDriver type for use with
    +// CSIDriver constructs a declarative configuration of the CSIDriver type for use with
     // apply.
     func CSIDriver(name string) *CSIDriverApplyConfiguration {
     	b := &CSIDriverApplyConfiguration{}
    @@ -84,7 +84,7 @@ func extractCSIDriver(cSIDriver *storagev1beta1.CSIDriver, fieldManager string,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithKind(value string) *CSIDriverApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *CSIDriverApplyConfiguration) WithKind(value string) *CSIDriverApplyConf
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithAPIVersion(value string) *CSIDriverApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *CSIDriverApplyConfiguration) WithAPIVersion(value string) *CSIDriverApp
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithName(value string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *CSIDriverApplyConfiguration) WithName(value string) *CSIDriverApplyConf
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithGenerateName(value string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *CSIDriverApplyConfiguration) WithGenerateName(value string) *CSIDriverA
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithNamespace(value string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *CSIDriverApplyConfiguration) WithNamespace(value string) *CSIDriverAppl
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithUID(value types.UID) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *CSIDriverApplyConfiguration) WithUID(value types.UID) *CSIDriverApplyCo
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithResourceVersion(value string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,7 +146,7 @@ func (b *CSIDriverApplyConfiguration) WithResourceVersion(value string) *CSIDriv
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithGeneration(value int64) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *CSIDriverApplyConfiguration) WithGeneration(value int64) *CSIDriverAppl
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -164,7 +164,7 @@ func (b *CSIDriverApplyConfiguration) WithCreationTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *CSIDriverApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CSIDriverApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *CSIDriverApplyConfiguration) WithDeletionGracePeriodSeconds(value int64
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CSIDriverApplyConfiguration) WithLabels(entries map[string]string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *CSIDriverApplyConfiguration) WithLabels(entries map[string]string) *CSI
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CSIDriverApplyConfiguration) WithAnnotations(entries map[string]string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,7 +216,7 @@ func (b *CSIDriverApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,7 +227,7 @@ func (b *CSIDriverApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRef
     func (b *CSIDriverApplyConfiguration) WithFinalizers(values ...string) *CSIDriverApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -245,3 +245,9 @@ func (b *CSIDriverApplyConfiguration) WithSpec(value *CSIDriverSpecApplyConfigur
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CSIDriverApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriverspec.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriverspec.go
    index 6097a615be2c..e62fe5888390 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriverspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriverspec.go
    @@ -19,23 +19,23 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
     )
     
    -// CSIDriverSpecApplyConfiguration represents an declarative configuration of the CSIDriverSpec type for use
    +// CSIDriverSpecApplyConfiguration represents a declarative configuration of the CSIDriverSpec type for use
     // with apply.
     type CSIDriverSpecApplyConfiguration struct {
    -	AttachRequired       *bool                            `json:"attachRequired,omitempty"`
    -	PodInfoOnMount       *bool                            `json:"podInfoOnMount,omitempty"`
    -	VolumeLifecycleModes []v1beta1.VolumeLifecycleMode    `json:"volumeLifecycleModes,omitempty"`
    -	StorageCapacity      *bool                            `json:"storageCapacity,omitempty"`
    -	FSGroupPolicy        *v1beta1.FSGroupPolicy           `json:"fsGroupPolicy,omitempty"`
    -	TokenRequests        []TokenRequestApplyConfiguration `json:"tokenRequests,omitempty"`
    -	RequiresRepublish    *bool                            `json:"requiresRepublish,omitempty"`
    -	SELinuxMount         *bool                            `json:"seLinuxMount,omitempty"`
    +	AttachRequired       *bool                                `json:"attachRequired,omitempty"`
    +	PodInfoOnMount       *bool                                `json:"podInfoOnMount,omitempty"`
    +	VolumeLifecycleModes []storagev1beta1.VolumeLifecycleMode `json:"volumeLifecycleModes,omitempty"`
    +	StorageCapacity      *bool                                `json:"storageCapacity,omitempty"`
    +	FSGroupPolicy        *storagev1beta1.FSGroupPolicy        `json:"fsGroupPolicy,omitempty"`
    +	TokenRequests        []TokenRequestApplyConfiguration     `json:"tokenRequests,omitempty"`
    +	RequiresRepublish    *bool                                `json:"requiresRepublish,omitempty"`
    +	SELinuxMount         *bool                                `json:"seLinuxMount,omitempty"`
     }
     
    -// CSIDriverSpecApplyConfiguration constructs an declarative configuration of the CSIDriverSpec type for use with
    +// CSIDriverSpecApplyConfiguration constructs a declarative configuration of the CSIDriverSpec type for use with
     // apply.
     func CSIDriverSpec() *CSIDriverSpecApplyConfiguration {
     	return &CSIDriverSpecApplyConfiguration{}
    @@ -60,7 +60,7 @@ func (b *CSIDriverSpecApplyConfiguration) WithPodInfoOnMount(value bool) *CSIDri
     // WithVolumeLifecycleModes adds the given value to the VolumeLifecycleModes field in the declarative configuration
     // and returns the receiver, so that objects can be build by chaining "With" function invocations.
     // If called multiple times, values provided by each call will be appended to the VolumeLifecycleModes field.
    -func (b *CSIDriverSpecApplyConfiguration) WithVolumeLifecycleModes(values ...v1beta1.VolumeLifecycleMode) *CSIDriverSpecApplyConfiguration {
    +func (b *CSIDriverSpecApplyConfiguration) WithVolumeLifecycleModes(values ...storagev1beta1.VolumeLifecycleMode) *CSIDriverSpecApplyConfiguration {
     	for i := range values {
     		b.VolumeLifecycleModes = append(b.VolumeLifecycleModes, values[i])
     	}
    @@ -78,7 +78,7 @@ func (b *CSIDriverSpecApplyConfiguration) WithStorageCapacity(value bool) *CSIDr
     // WithFSGroupPolicy sets the FSGroupPolicy field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the FSGroupPolicy field is set to the value of the last call.
    -func (b *CSIDriverSpecApplyConfiguration) WithFSGroupPolicy(value v1beta1.FSGroupPolicy) *CSIDriverSpecApplyConfiguration {
    +func (b *CSIDriverSpecApplyConfiguration) WithFSGroupPolicy(value storagev1beta1.FSGroupPolicy) *CSIDriverSpecApplyConfiguration {
     	b.FSGroupPolicy = &value
     	return b
     }
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinode.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinode.go
    index 91588fd9fb14..4e7ad89974f3 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinode.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinode.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CSINodeApplyConfiguration represents an declarative configuration of the CSINode type for use
    +// CSINodeApplyConfiguration represents a declarative configuration of the CSINode type for use
     // with apply.
     type CSINodeApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -35,7 +35,7 @@ type CSINodeApplyConfiguration struct {
     	Spec                             *CSINodeSpecApplyConfiguration `json:"spec,omitempty"`
     }
     
    -// CSINode constructs an declarative configuration of the CSINode type for use with
    +// CSINode constructs a declarative configuration of the CSINode type for use with
     // apply.
     func CSINode(name string) *CSINodeApplyConfiguration {
     	b := &CSINodeApplyConfiguration{}
    @@ -84,7 +84,7 @@ func extractCSINode(cSINode *storagev1beta1.CSINode, fieldManager string, subres
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithKind(value string) *CSINodeApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -92,7 +92,7 @@ func (b *CSINodeApplyConfiguration) WithKind(value string) *CSINodeApplyConfigur
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithAPIVersion(value string) *CSINodeApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -101,7 +101,7 @@ func (b *CSINodeApplyConfiguration) WithAPIVersion(value string) *CSINodeApplyCo
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithName(value string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -110,7 +110,7 @@ func (b *CSINodeApplyConfiguration) WithName(value string) *CSINodeApplyConfigur
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithGenerateName(value string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -119,7 +119,7 @@ func (b *CSINodeApplyConfiguration) WithGenerateName(value string) *CSINodeApply
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithNamespace(value string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -128,7 +128,7 @@ func (b *CSINodeApplyConfiguration) WithNamespace(value string) *CSINodeApplyCon
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithUID(value types.UID) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -137,7 +137,7 @@ func (b *CSINodeApplyConfiguration) WithUID(value types.UID) *CSINodeApplyConfig
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithResourceVersion(value string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -146,7 +146,7 @@ func (b *CSINodeApplyConfiguration) WithResourceVersion(value string) *CSINodeAp
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithGeneration(value int64) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -155,7 +155,7 @@ func (b *CSINodeApplyConfiguration) WithGeneration(value int64) *CSINodeApplyCon
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -164,7 +164,7 @@ func (b *CSINodeApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CS
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -173,7 +173,7 @@ func (b *CSINodeApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CS
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CSINodeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -183,11 +183,11 @@ func (b *CSINodeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64)
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CSINodeApplyConfiguration) WithLabels(entries map[string]string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -198,11 +198,11 @@ func (b *CSINodeApplyConfiguration) WithLabels(entries map[string]string) *CSINo
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CSINodeApplyConfiguration) WithAnnotations(entries map[string]string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -216,7 +216,7 @@ func (b *CSINodeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -227,7 +227,7 @@ func (b *CSINodeApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerRefer
     func (b *CSINodeApplyConfiguration) WithFinalizers(values ...string) *CSINodeApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -245,3 +245,9 @@ func (b *CSINodeApplyConfiguration) WithSpec(value *CSINodeSpecApplyConfiguratio
     	b.Spec = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CSINodeApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinodedriver.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinodedriver.go
    index 2c7de497b2d7..65ad771bb24b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinodedriver.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinodedriver.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// CSINodeDriverApplyConfiguration represents an declarative configuration of the CSINodeDriver type for use
    +// CSINodeDriverApplyConfiguration represents a declarative configuration of the CSINodeDriver type for use
     // with apply.
     type CSINodeDriverApplyConfiguration struct {
     	Name         *string                                `json:"name,omitempty"`
    @@ -27,7 +27,7 @@ type CSINodeDriverApplyConfiguration struct {
     	Allocatable  *VolumeNodeResourcesApplyConfiguration `json:"allocatable,omitempty"`
     }
     
    -// CSINodeDriverApplyConfiguration constructs an declarative configuration of the CSINodeDriver type for use with
    +// CSINodeDriverApplyConfiguration constructs a declarative configuration of the CSINodeDriver type for use with
     // apply.
     func CSINodeDriver() *CSINodeDriverApplyConfiguration {
     	return &CSINodeDriverApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinodespec.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinodespec.go
    index 94ff1b46113f..c9cbea1d9c2f 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinodespec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csinodespec.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// CSINodeSpecApplyConfiguration represents an declarative configuration of the CSINodeSpec type for use
    +// CSINodeSpecApplyConfiguration represents a declarative configuration of the CSINodeSpec type for use
     // with apply.
     type CSINodeSpecApplyConfiguration struct {
     	Drivers []CSINodeDriverApplyConfiguration `json:"drivers,omitempty"`
     }
     
    -// CSINodeSpecApplyConfiguration constructs an declarative configuration of the CSINodeSpec type for use with
    +// CSINodeSpecApplyConfiguration constructs a declarative configuration of the CSINodeSpec type for use with
     // apply.
     func CSINodeSpec() *CSINodeSpecApplyConfiguration {
     	return &CSINodeSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csistoragecapacity.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csistoragecapacity.go
    index 2854a15da73e..c8acaf923413 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csistoragecapacity.go
    @@ -19,7 +19,7 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
     	resource "k8s.io/apimachinery/pkg/api/resource"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
    @@ -28,7 +28,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// CSIStorageCapacityApplyConfiguration represents an declarative configuration of the CSIStorageCapacity type for use
    +// CSIStorageCapacityApplyConfiguration represents a declarative configuration of the CSIStorageCapacity type for use
     // with apply.
     type CSIStorageCapacityApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -39,7 +39,7 @@ type CSIStorageCapacityApplyConfiguration struct {
     	MaximumVolumeSize                *resource.Quantity                  `json:"maximumVolumeSize,omitempty"`
     }
     
    -// CSIStorageCapacity constructs an declarative configuration of the CSIStorageCapacity type for use with
    +// CSIStorageCapacity constructs a declarative configuration of the CSIStorageCapacity type for use with
     // apply.
     func CSIStorageCapacity(name, namespace string) *CSIStorageCapacityApplyConfiguration {
     	b := &CSIStorageCapacityApplyConfiguration{}
    @@ -61,18 +61,18 @@ func CSIStorageCapacity(name, namespace string) *CSIStorageCapacityApplyConfigur
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractCSIStorageCapacity(cSIStorageCapacity *v1beta1.CSIStorageCapacity, fieldManager string) (*CSIStorageCapacityApplyConfiguration, error) {
    +func ExtractCSIStorageCapacity(cSIStorageCapacity *storagev1beta1.CSIStorageCapacity, fieldManager string) (*CSIStorageCapacityApplyConfiguration, error) {
     	return extractCSIStorageCapacity(cSIStorageCapacity, fieldManager, "")
     }
     
     // ExtractCSIStorageCapacityStatus is the same as ExtractCSIStorageCapacity except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractCSIStorageCapacityStatus(cSIStorageCapacity *v1beta1.CSIStorageCapacity, fieldManager string) (*CSIStorageCapacityApplyConfiguration, error) {
    +func ExtractCSIStorageCapacityStatus(cSIStorageCapacity *storagev1beta1.CSIStorageCapacity, fieldManager string) (*CSIStorageCapacityApplyConfiguration, error) {
     	return extractCSIStorageCapacity(cSIStorageCapacity, fieldManager, "status")
     }
     
    -func extractCSIStorageCapacity(cSIStorageCapacity *v1beta1.CSIStorageCapacity, fieldManager string, subresource string) (*CSIStorageCapacityApplyConfiguration, error) {
    +func extractCSIStorageCapacity(cSIStorageCapacity *storagev1beta1.CSIStorageCapacity, fieldManager string, subresource string) (*CSIStorageCapacityApplyConfiguration, error) {
     	b := &CSIStorageCapacityApplyConfiguration{}
     	err := managedfields.ExtractInto(cSIStorageCapacity, internal.Parser().Type("io.k8s.api.storage.v1beta1.CSIStorageCapacity"), fieldManager, b, subresource)
     	if err != nil {
    @@ -90,7 +90,7 @@ func extractCSIStorageCapacity(cSIStorageCapacity *v1beta1.CSIStorageCapacity, f
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithKind(value string) *CSIStorageCapacityApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -98,7 +98,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithKind(value string) *CSIStorag
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithAPIVersion(value string) *CSIStorageCapacityApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -107,7 +107,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithAPIVersion(value string) *CSI
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithName(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -116,7 +116,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithName(value string) *CSIStorag
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithGenerateName(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -125,7 +125,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithGenerateName(value string) *C
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithNamespace(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -134,7 +134,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithNamespace(value string) *CSIS
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithUID(value types.UID) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -143,7 +143,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithUID(value types.UID) *CSIStor
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithResourceVersion(value string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -152,7 +152,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithResourceVersion(value string)
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithGeneration(value int64) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -161,7 +161,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithGeneration(value int64) *CSIS
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithCreationTimestamp(value metav1.Time) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -170,7 +170,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithCreationTimestamp(value metav
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -179,7 +179,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithDeletionTimestamp(value metav
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *CSIStorageCapacityApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -189,11 +189,11 @@ func (b *CSIStorageCapacityApplyConfiguration) WithDeletionGracePeriodSeconds(va
     // overwriting an existing map entries in Labels field with the same key.
     func (b *CSIStorageCapacityApplyConfiguration) WithLabels(entries map[string]string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -204,11 +204,11 @@ func (b *CSIStorageCapacityApplyConfiguration) WithLabels(entries map[string]str
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *CSIStorageCapacityApplyConfiguration) WithAnnotations(entries map[string]string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -222,7 +222,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithOwnerReferences(values ...*v1
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -233,7 +233,7 @@ func (b *CSIStorageCapacityApplyConfiguration) WithOwnerReferences(values ...*v1
     func (b *CSIStorageCapacityApplyConfiguration) WithFinalizers(values ...string) *CSIStorageCapacityApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -275,3 +275,9 @@ func (b *CSIStorageCapacityApplyConfiguration) WithMaximumVolumeSize(value resou
     	b.MaximumVolumeSize = &value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *CSIStorageCapacityApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/storageclass.go
    index 02194f1080af..2d211754eb7d 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/storageclass.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/storageclass.go
    @@ -20,7 +20,7 @@ package v1beta1
     
     import (
     	corev1 "k8s.io/api/core/v1"
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    @@ -29,7 +29,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// StorageClassApplyConfiguration represents an declarative configuration of the StorageClass type for use
    +// StorageClassApplyConfiguration represents a declarative configuration of the StorageClass type for use
     // with apply.
     type StorageClassApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -39,11 +39,11 @@ type StorageClassApplyConfiguration struct {
     	ReclaimPolicy                    *corev1.PersistentVolumeReclaimPolicy                              `json:"reclaimPolicy,omitempty"`
     	MountOptions                     []string                                                           `json:"mountOptions,omitempty"`
     	AllowVolumeExpansion             *bool                                                              `json:"allowVolumeExpansion,omitempty"`
    -	VolumeBindingMode                *v1beta1.VolumeBindingMode                                         `json:"volumeBindingMode,omitempty"`
    +	VolumeBindingMode                *storagev1beta1.VolumeBindingMode                                  `json:"volumeBindingMode,omitempty"`
     	AllowedTopologies                []applyconfigurationscorev1.TopologySelectorTermApplyConfiguration `json:"allowedTopologies,omitempty"`
     }
     
    -// StorageClass constructs an declarative configuration of the StorageClass type for use with
    +// StorageClass constructs a declarative configuration of the StorageClass type for use with
     // apply.
     func StorageClass(name string) *StorageClassApplyConfiguration {
     	b := &StorageClassApplyConfiguration{}
    @@ -64,18 +64,18 @@ func StorageClass(name string) *StorageClassApplyConfiguration {
     // Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
     // applied if another fieldManager has updated or force applied any of the previously applied fields.
     // Experimental!
    -func ExtractStorageClass(storageClass *v1beta1.StorageClass, fieldManager string) (*StorageClassApplyConfiguration, error) {
    +func ExtractStorageClass(storageClass *storagev1beta1.StorageClass, fieldManager string) (*StorageClassApplyConfiguration, error) {
     	return extractStorageClass(storageClass, fieldManager, "")
     }
     
     // ExtractStorageClassStatus is the same as ExtractStorageClass except
     // that it extracts the status subresource applied configuration.
     // Experimental!
    -func ExtractStorageClassStatus(storageClass *v1beta1.StorageClass, fieldManager string) (*StorageClassApplyConfiguration, error) {
    +func ExtractStorageClassStatus(storageClass *storagev1beta1.StorageClass, fieldManager string) (*StorageClassApplyConfiguration, error) {
     	return extractStorageClass(storageClass, fieldManager, "status")
     }
     
    -func extractStorageClass(storageClass *v1beta1.StorageClass, fieldManager string, subresource string) (*StorageClassApplyConfiguration, error) {
    +func extractStorageClass(storageClass *storagev1beta1.StorageClass, fieldManager string, subresource string) (*StorageClassApplyConfiguration, error) {
     	b := &StorageClassApplyConfiguration{}
     	err := managedfields.ExtractInto(storageClass, internal.Parser().Type("io.k8s.api.storage.v1beta1.StorageClass"), fieldManager, b, subresource)
     	if err != nil {
    @@ -92,7 +92,7 @@ func extractStorageClass(storageClass *v1beta1.StorageClass, fieldManager string
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithKind(value string) *StorageClassApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -100,7 +100,7 @@ func (b *StorageClassApplyConfiguration) WithKind(value string) *StorageClassApp
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithAPIVersion(value string) *StorageClassApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -109,7 +109,7 @@ func (b *StorageClassApplyConfiguration) WithAPIVersion(value string) *StorageCl
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithName(value string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -118,7 +118,7 @@ func (b *StorageClassApplyConfiguration) WithName(value string) *StorageClassApp
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithGenerateName(value string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -127,7 +127,7 @@ func (b *StorageClassApplyConfiguration) WithGenerateName(value string) *Storage
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithNamespace(value string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -136,7 +136,7 @@ func (b *StorageClassApplyConfiguration) WithNamespace(value string) *StorageCla
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithUID(value types.UID) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -145,7 +145,7 @@ func (b *StorageClassApplyConfiguration) WithUID(value types.UID) *StorageClassA
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithResourceVersion(value string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -154,7 +154,7 @@ func (b *StorageClassApplyConfiguration) WithResourceVersion(value string) *Stor
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithGeneration(value int64) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -163,7 +163,7 @@ func (b *StorageClassApplyConfiguration) WithGeneration(value int64) *StorageCla
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -172,7 +172,7 @@ func (b *StorageClassApplyConfiguration) WithCreationTimestamp(value metav1.Time
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -181,7 +181,7 @@ func (b *StorageClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *StorageClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -191,11 +191,11 @@ func (b *StorageClassApplyConfiguration) WithDeletionGracePeriodSeconds(value in
     // overwriting an existing map entries in Labels field with the same key.
     func (b *StorageClassApplyConfiguration) WithLabels(entries map[string]string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -206,11 +206,11 @@ func (b *StorageClassApplyConfiguration) WithLabels(entries map[string]string) *
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *StorageClassApplyConfiguration) WithAnnotations(entries map[string]string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -224,7 +224,7 @@ func (b *StorageClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -235,7 +235,7 @@ func (b *StorageClassApplyConfiguration) WithOwnerReferences(values ...*v1.Owner
     func (b *StorageClassApplyConfiguration) WithFinalizers(values ...string) *StorageClassApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -297,7 +297,7 @@ func (b *StorageClassApplyConfiguration) WithAllowVolumeExpansion(value bool) *S
     // WithVolumeBindingMode sets the VolumeBindingMode field in the declarative configuration to the given value
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the VolumeBindingMode field is set to the value of the last call.
    -func (b *StorageClassApplyConfiguration) WithVolumeBindingMode(value v1beta1.VolumeBindingMode) *StorageClassApplyConfiguration {
    +func (b *StorageClassApplyConfiguration) WithVolumeBindingMode(value storagev1beta1.VolumeBindingMode) *StorageClassApplyConfiguration {
     	b.VolumeBindingMode = &value
     	return b
     }
    @@ -314,3 +314,9 @@ func (b *StorageClassApplyConfiguration) WithAllowedTopologies(values ...*applyc
     	}
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *StorageClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/tokenrequest.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/tokenrequest.go
    index 89c99d560273..e0f2df28e03a 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/tokenrequest.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/tokenrequest.go
    @@ -18,14 +18,14 @@ limitations under the License.
     
     package v1beta1
     
    -// TokenRequestApplyConfiguration represents an declarative configuration of the TokenRequest type for use
    +// TokenRequestApplyConfiguration represents a declarative configuration of the TokenRequest type for use
     // with apply.
     type TokenRequestApplyConfiguration struct {
     	Audience          *string `json:"audience,omitempty"`
     	ExpirationSeconds *int64  `json:"expirationSeconds,omitempty"`
     }
     
    -// TokenRequestApplyConfiguration constructs an declarative configuration of the TokenRequest type for use with
    +// TokenRequestApplyConfiguration constructs a declarative configuration of the TokenRequest type for use with
     // apply.
     func TokenRequest() *TokenRequestApplyConfiguration {
     	return &TokenRequestApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachment.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachment.go
    index 9fccaf5cf986..3f7110bf41ca 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachment.go
    @@ -27,7 +27,7 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
     )
     
    -// VolumeAttachmentApplyConfiguration represents an declarative configuration of the VolumeAttachment type for use
    +// VolumeAttachmentApplyConfiguration represents a declarative configuration of the VolumeAttachment type for use
     // with apply.
     type VolumeAttachmentApplyConfiguration struct {
     	v1.TypeMetaApplyConfiguration    `json:",inline"`
    @@ -36,7 +36,7 @@ type VolumeAttachmentApplyConfiguration struct {
     	Status                           *VolumeAttachmentStatusApplyConfiguration `json:"status,omitempty"`
     }
     
    -// VolumeAttachment constructs an declarative configuration of the VolumeAttachment type for use with
    +// VolumeAttachment constructs a declarative configuration of the VolumeAttachment type for use with
     // apply.
     func VolumeAttachment(name string) *VolumeAttachmentApplyConfiguration {
     	b := &VolumeAttachmentApplyConfiguration{}
    @@ -85,7 +85,7 @@ func extractVolumeAttachment(volumeAttachment *storagev1beta1.VolumeAttachment,
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the Kind field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithKind(value string) *VolumeAttachmentApplyConfiguration {
    -	b.Kind = &value
    +	b.TypeMetaApplyConfiguration.Kind = &value
     	return b
     }
     
    @@ -93,7 +93,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithKind(value string) *VolumeAttac
     // and returns the receiver, so that objects can be built by chaining "With" function invocations.
     // If called multiple times, the APIVersion field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithAPIVersion(value string) *VolumeAttachmentApplyConfiguration {
    -	b.APIVersion = &value
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
     	return b
     }
     
    @@ -102,7 +102,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithAPIVersion(value string) *Volum
     // If called multiple times, the Name field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithName(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Name = &value
    +	b.ObjectMetaApplyConfiguration.Name = &value
     	return b
     }
     
    @@ -111,7 +111,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithName(value string) *VolumeAttac
     // If called multiple times, the GenerateName field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithGenerateName(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.GenerateName = &value
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
     	return b
     }
     
    @@ -120,7 +120,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithGenerateName(value string) *Vol
     // If called multiple times, the Namespace field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithNamespace(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Namespace = &value
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
     	return b
     }
     
    @@ -129,7 +129,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithNamespace(value string) *Volume
     // If called multiple times, the UID field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithUID(value types.UID) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.UID = &value
    +	b.ObjectMetaApplyConfiguration.UID = &value
     	return b
     }
     
    @@ -138,7 +138,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithUID(value types.UID) *VolumeAtt
     // If called multiple times, the ResourceVersion field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithResourceVersion(value string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.ResourceVersion = &value
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
     	return b
     }
     
    @@ -147,7 +147,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithResourceVersion(value string) *
     // If called multiple times, the Generation field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithGeneration(value int64) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.Generation = &value
    +	b.ObjectMetaApplyConfiguration.Generation = &value
     	return b
     }
     
    @@ -156,7 +156,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithGeneration(value int64) *Volume
     // If called multiple times, the CreationTimestamp field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithCreationTimestamp(value metav1.Time) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.CreationTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
     	return b
     }
     
    @@ -165,7 +165,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithCreationTimestamp(value metav1.
     // If called multiple times, the DeletionTimestamp field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionTimestamp = &value
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
     	return b
     }
     
    @@ -174,7 +174,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithDeletionTimestamp(value metav1.
     // If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
     func (b *VolumeAttachmentApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	b.DeletionGracePeriodSeconds = &value
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
     	return b
     }
     
    @@ -184,11 +184,11 @@ func (b *VolumeAttachmentApplyConfiguration) WithDeletionGracePeriodSeconds(valu
     // overwriting an existing map entries in Labels field with the same key.
     func (b *VolumeAttachmentApplyConfiguration) WithLabels(entries map[string]string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Labels == nil && len(entries) > 0 {
    -		b.Labels = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Labels[k] = v
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
     	}
     	return b
     }
    @@ -199,11 +199,11 @@ func (b *VolumeAttachmentApplyConfiguration) WithLabels(entries map[string]strin
     // overwriting an existing map entries in Annotations field with the same key.
     func (b *VolumeAttachmentApplyConfiguration) WithAnnotations(entries map[string]string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
    -	if b.Annotations == nil && len(entries) > 0 {
    -		b.Annotations = make(map[string]string, len(entries))
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
     	}
     	for k, v := range entries {
    -		b.Annotations[k] = v
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
     	}
     	return b
     }
    @@ -217,7 +217,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithOwnerReferences(values ...*v1.O
     		if values[i] == nil {
     			panic("nil value passed to WithOwnerReferences")
     		}
    -		b.OwnerReferences = append(b.OwnerReferences, *values[i])
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
     	}
     	return b
     }
    @@ -228,7 +228,7 @@ func (b *VolumeAttachmentApplyConfiguration) WithOwnerReferences(values ...*v1.O
     func (b *VolumeAttachmentApplyConfiguration) WithFinalizers(values ...string) *VolumeAttachmentApplyConfiguration {
     	b.ensureObjectMetaApplyConfigurationExists()
     	for i := range values {
    -		b.Finalizers = append(b.Finalizers, values[i])
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
     	}
     	return b
     }
    @@ -254,3 +254,9 @@ func (b *VolumeAttachmentApplyConfiguration) WithStatus(value *VolumeAttachmentS
     	b.Status = value
     	return b
     }
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *VolumeAttachmentApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentsource.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentsource.go
    index 9700b38ee2e5..b08dd3148b8b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentsource.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentsource.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/client-go/applyconfigurations/core/v1"
     )
     
    -// VolumeAttachmentSourceApplyConfiguration represents an declarative configuration of the VolumeAttachmentSource type for use
    +// VolumeAttachmentSourceApplyConfiguration represents a declarative configuration of the VolumeAttachmentSource type for use
     // with apply.
     type VolumeAttachmentSourceApplyConfiguration struct {
     	PersistentVolumeName *string                                    `json:"persistentVolumeName,omitempty"`
     	InlineVolumeSpec     *v1.PersistentVolumeSpecApplyConfiguration `json:"inlineVolumeSpec,omitempty"`
     }
     
    -// VolumeAttachmentSourceApplyConfiguration constructs an declarative configuration of the VolumeAttachmentSource type for use with
    +// VolumeAttachmentSourceApplyConfiguration constructs a declarative configuration of the VolumeAttachmentSource type for use with
     // apply.
     func VolumeAttachmentSource() *VolumeAttachmentSourceApplyConfiguration {
     	return &VolumeAttachmentSourceApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentspec.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentspec.go
    index 1d5e304bb53c..3bdaeb45d72b 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentspec.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentspec.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// VolumeAttachmentSpecApplyConfiguration represents an declarative configuration of the VolumeAttachmentSpec type for use
    +// VolumeAttachmentSpecApplyConfiguration represents a declarative configuration of the VolumeAttachmentSpec type for use
     // with apply.
     type VolumeAttachmentSpecApplyConfiguration struct {
     	Attacher *string                                   `json:"attacher,omitempty"`
    @@ -26,7 +26,7 @@ type VolumeAttachmentSpecApplyConfiguration struct {
     	NodeName *string                                   `json:"nodeName,omitempty"`
     }
     
    -// VolumeAttachmentSpecApplyConfiguration constructs an declarative configuration of the VolumeAttachmentSpec type for use with
    +// VolumeAttachmentSpecApplyConfiguration constructs a declarative configuration of the VolumeAttachmentSpec type for use with
     // apply.
     func VolumeAttachmentSpec() *VolumeAttachmentSpecApplyConfiguration {
     	return &VolumeAttachmentSpecApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentstatus.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentstatus.go
    index fa1855a24115..f7046cdb35fd 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentstatus.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattachmentstatus.go
    @@ -18,7 +18,7 @@ limitations under the License.
     
     package v1beta1
     
    -// VolumeAttachmentStatusApplyConfiguration represents an declarative configuration of the VolumeAttachmentStatus type for use
    +// VolumeAttachmentStatusApplyConfiguration represents a declarative configuration of the VolumeAttachmentStatus type for use
     // with apply.
     type VolumeAttachmentStatusApplyConfiguration struct {
     	Attached           *bool                          `json:"attached,omitempty"`
    @@ -27,7 +27,7 @@ type VolumeAttachmentStatusApplyConfiguration struct {
     	DetachError        *VolumeErrorApplyConfiguration `json:"detachError,omitempty"`
     }
     
    -// VolumeAttachmentStatusApplyConfiguration constructs an declarative configuration of the VolumeAttachmentStatus type for use with
    +// VolumeAttachmentStatusApplyConfiguration constructs a declarative configuration of the VolumeAttachmentStatus type for use with
     // apply.
     func VolumeAttachmentStatus() *VolumeAttachmentStatusApplyConfiguration {
     	return &VolumeAttachmentStatusApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattributesclass.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattributesclass.go
    new file mode 100644
    index 000000000000..ab1bda330b0c
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeattributesclass.go
    @@ -0,0 +1,268 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// VolumeAttributesClassApplyConfiguration represents a declarative configuration of the VolumeAttributesClass type for use
    +// with apply.
    +type VolumeAttributesClassApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	DriverName                       *string           `json:"driverName,omitempty"`
    +	Parameters                       map[string]string `json:"parameters,omitempty"`
    +}
    +
    +// VolumeAttributesClass constructs a declarative configuration of the VolumeAttributesClass type for use with
    +// apply.
    +func VolumeAttributesClass(name string) *VolumeAttributesClassApplyConfiguration {
    +	b := &VolumeAttributesClassApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("VolumeAttributesClass")
    +	b.WithAPIVersion("storage.k8s.io/v1beta1")
    +	return b
    +}
    +
    +// ExtractVolumeAttributesClass extracts the applied configuration owned by fieldManager from
    +// volumeAttributesClass. If no managedFields are found in volumeAttributesClass for fieldManager, a
    +// VolumeAttributesClassApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// volumeAttributesClass must be a unmodified VolumeAttributesClass API object that was retrieved from the Kubernetes API.
    +// ExtractVolumeAttributesClass provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractVolumeAttributesClass(volumeAttributesClass *storagev1beta1.VolumeAttributesClass, fieldManager string) (*VolumeAttributesClassApplyConfiguration, error) {
    +	return extractVolumeAttributesClass(volumeAttributesClass, fieldManager, "")
    +}
    +
    +// ExtractVolumeAttributesClassStatus is the same as ExtractVolumeAttributesClass except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractVolumeAttributesClassStatus(volumeAttributesClass *storagev1beta1.VolumeAttributesClass, fieldManager string) (*VolumeAttributesClassApplyConfiguration, error) {
    +	return extractVolumeAttributesClass(volumeAttributesClass, fieldManager, "status")
    +}
    +
    +func extractVolumeAttributesClass(volumeAttributesClass *storagev1beta1.VolumeAttributesClass, fieldManager string, subresource string) (*VolumeAttributesClassApplyConfiguration, error) {
    +	b := &VolumeAttributesClassApplyConfiguration{}
    +	err := managedfields.ExtractInto(volumeAttributesClass, internal.Parser().Type("io.k8s.api.storage.v1beta1.VolumeAttributesClass"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(volumeAttributesClass.Name)
    +
    +	b.WithKind("VolumeAttributesClass")
    +	b.WithAPIVersion("storage.k8s.io/v1beta1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithKind(value string) *VolumeAttributesClassApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithAPIVersion(value string) *VolumeAttributesClassApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithName(value string) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithGenerateName(value string) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithNamespace(value string) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithUID(value types.UID) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithResourceVersion(value string) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithGeneration(value int64) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithCreationTimestamp(value metav1.Time) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *VolumeAttributesClassApplyConfiguration) WithLabels(entries map[string]string) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *VolumeAttributesClassApplyConfiguration) WithAnnotations(entries map[string]string) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *VolumeAttributesClassApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *VolumeAttributesClassApplyConfiguration) WithFinalizers(values ...string) *VolumeAttributesClassApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *VolumeAttributesClassApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithDriverName sets the DriverName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DriverName field is set to the value of the last call.
    +func (b *VolumeAttributesClassApplyConfiguration) WithDriverName(value string) *VolumeAttributesClassApplyConfiguration {
    +	b.DriverName = &value
    +	return b
    +}
    +
    +// WithParameters puts the entries into the Parameters field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Parameters field,
    +// overwriting an existing map entries in Parameters field with the same key.
    +func (b *VolumeAttributesClassApplyConfiguration) WithParameters(entries map[string]string) *VolumeAttributesClassApplyConfiguration {
    +	if b.Parameters == nil && len(entries) > 0 {
    +		b.Parameters = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.Parameters[k] = v
    +	}
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *VolumeAttributesClassApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeerror.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeerror.go
    index 3f255fce752c..fec1c9ade3d7 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeerror.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumeerror.go
    @@ -22,14 +22,14 @@ import (
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     )
     
    -// VolumeErrorApplyConfiguration represents an declarative configuration of the VolumeError type for use
    +// VolumeErrorApplyConfiguration represents a declarative configuration of the VolumeError type for use
     // with apply.
     type VolumeErrorApplyConfiguration struct {
     	Time    *v1.Time `json:"time,omitempty"`
     	Message *string  `json:"message,omitempty"`
     }
     
    -// VolumeErrorApplyConfiguration constructs an declarative configuration of the VolumeError type for use with
    +// VolumeErrorApplyConfiguration constructs a declarative configuration of the VolumeError type for use with
     // apply.
     func VolumeError() *VolumeErrorApplyConfiguration {
     	return &VolumeErrorApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumenoderesources.go b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumenoderesources.go
    index 4b69b64c9bb4..b42c9decc028 100644
    --- a/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumenoderesources.go
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/volumenoderesources.go
    @@ -18,13 +18,13 @@ limitations under the License.
     
     package v1beta1
     
    -// VolumeNodeResourcesApplyConfiguration represents an declarative configuration of the VolumeNodeResources type for use
    +// VolumeNodeResourcesApplyConfiguration represents a declarative configuration of the VolumeNodeResources type for use
     // with apply.
     type VolumeNodeResourcesApplyConfiguration struct {
     	Count *int32 `json:"count,omitempty"`
     }
     
    -// VolumeNodeResourcesApplyConfiguration constructs an declarative configuration of the VolumeNodeResources type for use with
    +// VolumeNodeResourcesApplyConfiguration constructs a declarative configuration of the VolumeNodeResources type for use with
     // apply.
     func VolumeNodeResources() *VolumeNodeResourcesApplyConfiguration {
     	return &VolumeNodeResourcesApplyConfiguration{}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/groupversionresource.go b/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/groupversionresource.go
    new file mode 100644
    index 000000000000..c8f9f009a50c
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/groupversionresource.go
    @@ -0,0 +1,57 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// GroupVersionResourceApplyConfiguration represents a declarative configuration of the GroupVersionResource type for use
    +// with apply.
    +type GroupVersionResourceApplyConfiguration struct {
    +	Group    *string `json:"group,omitempty"`
    +	Version  *string `json:"version,omitempty"`
    +	Resource *string `json:"resource,omitempty"`
    +}
    +
    +// GroupVersionResourceApplyConfiguration constructs a declarative configuration of the GroupVersionResource type for use with
    +// apply.
    +func GroupVersionResource() *GroupVersionResourceApplyConfiguration {
    +	return &GroupVersionResourceApplyConfiguration{}
    +}
    +
    +// WithGroup sets the Group field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Group field is set to the value of the last call.
    +func (b *GroupVersionResourceApplyConfiguration) WithGroup(value string) *GroupVersionResourceApplyConfiguration {
    +	b.Group = &value
    +	return b
    +}
    +
    +// WithVersion sets the Version field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Version field is set to the value of the last call.
    +func (b *GroupVersionResourceApplyConfiguration) WithVersion(value string) *GroupVersionResourceApplyConfiguration {
    +	b.Version = &value
    +	return b
    +}
    +
    +// WithResource sets the Resource field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Resource field is set to the value of the last call.
    +func (b *GroupVersionResourceApplyConfiguration) WithResource(value string) *GroupVersionResourceApplyConfiguration {
    +	b.Resource = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/migrationcondition.go b/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/migrationcondition.go
    new file mode 100644
    index 000000000000..5ffd572eedc1
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/migrationcondition.go
    @@ -0,0 +1,81 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	v1 "k8s.io/api/core/v1"
    +	storagemigrationv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +)
    +
    +// MigrationConditionApplyConfiguration represents a declarative configuration of the MigrationCondition type for use
    +// with apply.
    +type MigrationConditionApplyConfiguration struct {
    +	Type           *storagemigrationv1alpha1.MigrationConditionType `json:"type,omitempty"`
    +	Status         *v1.ConditionStatus                              `json:"status,omitempty"`
    +	LastUpdateTime *metav1.Time                                     `json:"lastUpdateTime,omitempty"`
    +	Reason         *string                                          `json:"reason,omitempty"`
    +	Message        *string                                          `json:"message,omitempty"`
    +}
    +
    +// MigrationConditionApplyConfiguration constructs a declarative configuration of the MigrationCondition type for use with
    +// apply.
    +func MigrationCondition() *MigrationConditionApplyConfiguration {
    +	return &MigrationConditionApplyConfiguration{}
    +}
    +
    +// WithType sets the Type field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Type field is set to the value of the last call.
    +func (b *MigrationConditionApplyConfiguration) WithType(value storagemigrationv1alpha1.MigrationConditionType) *MigrationConditionApplyConfiguration {
    +	b.Type = &value
    +	return b
    +}
    +
    +// WithStatus sets the Status field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Status field is set to the value of the last call.
    +func (b *MigrationConditionApplyConfiguration) WithStatus(value v1.ConditionStatus) *MigrationConditionApplyConfiguration {
    +	b.Status = &value
    +	return b
    +}
    +
    +// WithLastUpdateTime sets the LastUpdateTime field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the LastUpdateTime field is set to the value of the last call.
    +func (b *MigrationConditionApplyConfiguration) WithLastUpdateTime(value metav1.Time) *MigrationConditionApplyConfiguration {
    +	b.LastUpdateTime = &value
    +	return b
    +}
    +
    +// WithReason sets the Reason field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Reason field is set to the value of the last call.
    +func (b *MigrationConditionApplyConfiguration) WithReason(value string) *MigrationConditionApplyConfiguration {
    +	b.Reason = &value
    +	return b
    +}
    +
    +// WithMessage sets the Message field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Message field is set to the value of the last call.
    +func (b *MigrationConditionApplyConfiguration) WithMessage(value string) *MigrationConditionApplyConfiguration {
    +	b.Message = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigration.go b/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigration.go
    new file mode 100644
    index 000000000000..a6dbc13a536e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigration.go
    @@ -0,0 +1,262 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	storagemigrationv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	managedfields "k8s.io/apimachinery/pkg/util/managedfields"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	v1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +)
    +
    +// StorageVersionMigrationApplyConfiguration represents a declarative configuration of the StorageVersionMigration type for use
    +// with apply.
    +type StorageVersionMigrationApplyConfiguration struct {
    +	v1.TypeMetaApplyConfiguration    `json:",inline"`
    +	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
    +	Spec                             *StorageVersionMigrationSpecApplyConfiguration   `json:"spec,omitempty"`
    +	Status                           *StorageVersionMigrationStatusApplyConfiguration `json:"status,omitempty"`
    +}
    +
    +// StorageVersionMigration constructs a declarative configuration of the StorageVersionMigration type for use with
    +// apply.
    +func StorageVersionMigration(name string) *StorageVersionMigrationApplyConfiguration {
    +	b := &StorageVersionMigrationApplyConfiguration{}
    +	b.WithName(name)
    +	b.WithKind("StorageVersionMigration")
    +	b.WithAPIVersion("storagemigration.k8s.io/v1alpha1")
    +	return b
    +}
    +
    +// ExtractStorageVersionMigration extracts the applied configuration owned by fieldManager from
    +// storageVersionMigration. If no managedFields are found in storageVersionMigration for fieldManager, a
    +// StorageVersionMigrationApplyConfiguration is returned with only the Name, Namespace (if applicable),
    +// APIVersion and Kind populated. It is possible that no managed fields were found for because other
    +// field managers have taken ownership of all the fields previously owned by fieldManager, or because
    +// the fieldManager never owned fields any fields.
    +// storageVersionMigration must be a unmodified StorageVersionMigration API object that was retrieved from the Kubernetes API.
    +// ExtractStorageVersionMigration provides a way to perform a extract/modify-in-place/apply workflow.
    +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously
    +// applied if another fieldManager has updated or force applied any of the previously applied fields.
    +// Experimental!
    +func ExtractStorageVersionMigration(storageVersionMigration *storagemigrationv1alpha1.StorageVersionMigration, fieldManager string) (*StorageVersionMigrationApplyConfiguration, error) {
    +	return extractStorageVersionMigration(storageVersionMigration, fieldManager, "")
    +}
    +
    +// ExtractStorageVersionMigrationStatus is the same as ExtractStorageVersionMigration except
    +// that it extracts the status subresource applied configuration.
    +// Experimental!
    +func ExtractStorageVersionMigrationStatus(storageVersionMigration *storagemigrationv1alpha1.StorageVersionMigration, fieldManager string) (*StorageVersionMigrationApplyConfiguration, error) {
    +	return extractStorageVersionMigration(storageVersionMigration, fieldManager, "status")
    +}
    +
    +func extractStorageVersionMigration(storageVersionMigration *storagemigrationv1alpha1.StorageVersionMigration, fieldManager string, subresource string) (*StorageVersionMigrationApplyConfiguration, error) {
    +	b := &StorageVersionMigrationApplyConfiguration{}
    +	err := managedfields.ExtractInto(storageVersionMigration, internal.Parser().Type("io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration"), fieldManager, b, subresource)
    +	if err != nil {
    +		return nil, err
    +	}
    +	b.WithName(storageVersionMigration.Name)
    +
    +	b.WithKind("StorageVersionMigration")
    +	b.WithAPIVersion("storagemigration.k8s.io/v1alpha1")
    +	return b, nil
    +}
    +
    +// WithKind sets the Kind field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Kind field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithKind(value string) *StorageVersionMigrationApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.Kind = &value
    +	return b
    +}
    +
    +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the APIVersion field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithAPIVersion(value string) *StorageVersionMigrationApplyConfiguration {
    +	b.TypeMetaApplyConfiguration.APIVersion = &value
    +	return b
    +}
    +
    +// WithName sets the Name field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Name field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithName(value string) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Name = &value
    +	return b
    +}
    +
    +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the GenerateName field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithGenerateName(value string) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.GenerateName = &value
    +	return b
    +}
    +
    +// WithNamespace sets the Namespace field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Namespace field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithNamespace(value string) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Namespace = &value
    +	return b
    +}
    +
    +// WithUID sets the UID field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the UID field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithUID(value types.UID) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.UID = &value
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithResourceVersion(value string) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
    +	return b
    +}
    +
    +// WithGeneration sets the Generation field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Generation field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithGeneration(value int64) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.Generation = &value
    +	return b
    +}
    +
    +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the CreationTimestamp field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithCreationTimestamp(value metav1.Time) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
    +	return b
    +}
    +
    +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
    +	return b
    +}
    +
    +// WithLabels puts the entries into the Labels field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Labels field,
    +// overwriting an existing map entries in Labels field with the same key.
    +func (b *StorageVersionMigrationApplyConfiguration) WithLabels(entries map[string]string) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Labels[k] = v
    +	}
    +	return b
    +}
    +
    +// WithAnnotations puts the entries into the Annotations field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, the entries provided by each call will be put on the Annotations field,
    +// overwriting an existing map entries in Annotations field with the same key.
    +func (b *StorageVersionMigrationApplyConfiguration) WithAnnotations(entries map[string]string) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
    +		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
    +	}
    +	for k, v := range entries {
    +		b.ObjectMetaApplyConfiguration.Annotations[k] = v
    +	}
    +	return b
    +}
    +
    +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
    +func (b *StorageVersionMigrationApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithOwnerReferences")
    +		}
    +		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Finalizers field.
    +func (b *StorageVersionMigrationApplyConfiguration) WithFinalizers(values ...string) *StorageVersionMigrationApplyConfiguration {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	for i := range values {
    +		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
    +	}
    +	return b
    +}
    +
    +func (b *StorageVersionMigrationApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
    +	if b.ObjectMetaApplyConfiguration == nil {
    +		b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{}
    +	}
    +}
    +
    +// WithSpec sets the Spec field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Spec field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithSpec(value *StorageVersionMigrationSpecApplyConfiguration) *StorageVersionMigrationApplyConfiguration {
    +	b.Spec = value
    +	return b
    +}
    +
    +// WithStatus sets the Status field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Status field is set to the value of the last call.
    +func (b *StorageVersionMigrationApplyConfiguration) WithStatus(value *StorageVersionMigrationStatusApplyConfiguration) *StorageVersionMigrationApplyConfiguration {
    +	b.Status = value
    +	return b
    +}
    +
    +// GetName retrieves the value of the Name field in the declarative configuration.
    +func (b *StorageVersionMigrationApplyConfiguration) GetName() *string {
    +	b.ensureObjectMetaApplyConfigurationExists()
    +	return b.ObjectMetaApplyConfiguration.Name
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigrationspec.go b/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigrationspec.go
    new file mode 100644
    index 000000000000..02ddb540f87a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigrationspec.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// StorageVersionMigrationSpecApplyConfiguration represents a declarative configuration of the StorageVersionMigrationSpec type for use
    +// with apply.
    +type StorageVersionMigrationSpecApplyConfiguration struct {
    +	Resource      *GroupVersionResourceApplyConfiguration `json:"resource,omitempty"`
    +	ContinueToken *string                                 `json:"continueToken,omitempty"`
    +}
    +
    +// StorageVersionMigrationSpecApplyConfiguration constructs a declarative configuration of the StorageVersionMigrationSpec type for use with
    +// apply.
    +func StorageVersionMigrationSpec() *StorageVersionMigrationSpecApplyConfiguration {
    +	return &StorageVersionMigrationSpecApplyConfiguration{}
    +}
    +
    +// WithResource sets the Resource field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the Resource field is set to the value of the last call.
    +func (b *StorageVersionMigrationSpecApplyConfiguration) WithResource(value *GroupVersionResourceApplyConfiguration) *StorageVersionMigrationSpecApplyConfiguration {
    +	b.Resource = value
    +	return b
    +}
    +
    +// WithContinueToken sets the ContinueToken field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ContinueToken field is set to the value of the last call.
    +func (b *StorageVersionMigrationSpecApplyConfiguration) WithContinueToken(value string) *StorageVersionMigrationSpecApplyConfiguration {
    +	b.ContinueToken = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigrationstatus.go b/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigrationstatus.go
    new file mode 100644
    index 000000000000..fc957cb15cc4
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1/storageversionmigrationstatus.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// StorageVersionMigrationStatusApplyConfiguration represents a declarative configuration of the StorageVersionMigrationStatus type for use
    +// with apply.
    +type StorageVersionMigrationStatusApplyConfiguration struct {
    +	Conditions      []MigrationConditionApplyConfiguration `json:"conditions,omitempty"`
    +	ResourceVersion *string                                `json:"resourceVersion,omitempty"`
    +}
    +
    +// StorageVersionMigrationStatusApplyConfiguration constructs a declarative configuration of the StorageVersionMigrationStatus type for use with
    +// apply.
    +func StorageVersionMigrationStatus() *StorageVersionMigrationStatusApplyConfiguration {
    +	return &StorageVersionMigrationStatusApplyConfiguration{}
    +}
    +
    +// WithConditions adds the given value to the Conditions field in the declarative configuration
    +// and returns the receiver, so that objects can be build by chaining "With" function invocations.
    +// If called multiple times, values provided by each call will be appended to the Conditions field.
    +func (b *StorageVersionMigrationStatusApplyConfiguration) WithConditions(values ...*MigrationConditionApplyConfiguration) *StorageVersionMigrationStatusApplyConfiguration {
    +	for i := range values {
    +		if values[i] == nil {
    +			panic("nil value passed to WithConditions")
    +		}
    +		b.Conditions = append(b.Conditions, *values[i])
    +	}
    +	return b
    +}
    +
    +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
    +// and returns the receiver, so that objects can be built by chaining "With" function invocations.
    +// If called multiple times, the ResourceVersion field is set to the value of the last call.
    +func (b *StorageVersionMigrationStatusApplyConfiguration) WithResourceVersion(value string) *StorageVersionMigrationStatusApplyConfiguration {
    +	b.ResourceVersion = &value
    +	return b
    +}
    diff --git a/vendor/k8s.io/client-go/applyconfigurations/utils.go b/vendor/k8s.io/client-go/applyconfigurations/utils.go
    new file mode 100644
    index 000000000000..afbabac94367
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/applyconfigurations/utils.go
    @@ -0,0 +1,1814 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by applyconfiguration-gen. DO NOT EDIT.
    +
    +package applyconfigurations
    +
    +import (
    +	v1 "k8s.io/api/admissionregistration/v1"
    +	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	apiserverinternalv1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
    +	appsv1 "k8s.io/api/apps/v1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
    +	v1beta2 "k8s.io/api/apps/v1beta2"
    +	autoscalingv1 "k8s.io/api/autoscaling/v1"
    +	v2 "k8s.io/api/autoscaling/v2"
    +	v2beta1 "k8s.io/api/autoscaling/v2beta1"
    +	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	batchv1 "k8s.io/api/batch/v1"
    +	batchv1beta1 "k8s.io/api/batch/v1beta1"
    +	certificatesv1 "k8s.io/api/certificates/v1"
    +	certificatesv1alpha1 "k8s.io/api/certificates/v1alpha1"
    +	certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
    +	coordinationv1 "k8s.io/api/coordination/v1"
    +	v1alpha2 "k8s.io/api/coordination/v1alpha2"
    +	coordinationv1beta1 "k8s.io/api/coordination/v1beta1"
    +	corev1 "k8s.io/api/core/v1"
    +	discoveryv1 "k8s.io/api/discovery/v1"
    +	discoveryv1beta1 "k8s.io/api/discovery/v1beta1"
    +	eventsv1 "k8s.io/api/events/v1"
    +	eventsv1beta1 "k8s.io/api/events/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	imagepolicyv1alpha1 "k8s.io/api/imagepolicy/v1alpha1"
    +	networkingv1 "k8s.io/api/networking/v1"
    +	networkingv1alpha1 "k8s.io/api/networking/v1alpha1"
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	nodev1 "k8s.io/api/node/v1"
    +	nodev1alpha1 "k8s.io/api/node/v1alpha1"
    +	nodev1beta1 "k8s.io/api/node/v1beta1"
    +	policyv1 "k8s.io/api/policy/v1"
    +	policyv1beta1 "k8s.io/api/policy/v1beta1"
    +	rbacv1 "k8s.io/api/rbac/v1"
    +	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    +	v1alpha3 "k8s.io/api/resource/v1alpha3"
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	schedulingv1 "k8s.io/api/scheduling/v1"
    +	schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
    +	schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
    +	storagev1 "k8s.io/api/storage/v1"
    +	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	storagemigrationv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	schema "k8s.io/apimachinery/pkg/runtime/schema"
    +	admissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    +	admissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    +	admissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    +	applyconfigurationsapiserverinternalv1alpha1 "k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1"
    +	applyconfigurationsappsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
    +	applyconfigurationsappsv1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
    +	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	applyconfigurationsautoscalingv1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    +	autoscalingv2 "k8s.io/client-go/applyconfigurations/autoscaling/v2"
    +	autoscalingv2beta1 "k8s.io/client-go/applyconfigurations/autoscaling/v2beta1"
    +	autoscalingv2beta2 "k8s.io/client-go/applyconfigurations/autoscaling/v2beta2"
    +	applyconfigurationsbatchv1 "k8s.io/client-go/applyconfigurations/batch/v1"
    +	applyconfigurationsbatchv1beta1 "k8s.io/client-go/applyconfigurations/batch/v1beta1"
    +	applyconfigurationscertificatesv1 "k8s.io/client-go/applyconfigurations/certificates/v1"
    +	applyconfigurationscertificatesv1alpha1 "k8s.io/client-go/applyconfigurations/certificates/v1alpha1"
    +	applyconfigurationscertificatesv1beta1 "k8s.io/client-go/applyconfigurations/certificates/v1beta1"
    +	applyconfigurationscoordinationv1 "k8s.io/client-go/applyconfigurations/coordination/v1"
    +	coordinationv1alpha2 "k8s.io/client-go/applyconfigurations/coordination/v1alpha2"
    +	applyconfigurationscoordinationv1beta1 "k8s.io/client-go/applyconfigurations/coordination/v1beta1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationsdiscoveryv1 "k8s.io/client-go/applyconfigurations/discovery/v1"
    +	applyconfigurationsdiscoveryv1beta1 "k8s.io/client-go/applyconfigurations/discovery/v1beta1"
    +	applyconfigurationseventsv1 "k8s.io/client-go/applyconfigurations/events/v1"
    +	applyconfigurationseventsv1beta1 "k8s.io/client-go/applyconfigurations/events/v1beta1"
    +	applyconfigurationsextensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	applyconfigurationsflowcontrolv1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1"
    +	applyconfigurationsflowcontrolv1beta1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1"
    +	applyconfigurationsflowcontrolv1beta2 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2"
    +	flowcontrolv1beta3 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3"
    +	applyconfigurationsimagepolicyv1alpha1 "k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1"
    +	internal "k8s.io/client-go/applyconfigurations/internal"
    +	applyconfigurationsmetav1 "k8s.io/client-go/applyconfigurations/meta/v1"
    +	applyconfigurationsnetworkingv1 "k8s.io/client-go/applyconfigurations/networking/v1"
    +	applyconfigurationsnetworkingv1alpha1 "k8s.io/client-go/applyconfigurations/networking/v1alpha1"
    +	applyconfigurationsnetworkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    +	applyconfigurationsnodev1 "k8s.io/client-go/applyconfigurations/node/v1"
    +	applyconfigurationsnodev1alpha1 "k8s.io/client-go/applyconfigurations/node/v1alpha1"
    +	applyconfigurationsnodev1beta1 "k8s.io/client-go/applyconfigurations/node/v1beta1"
    +	applyconfigurationspolicyv1 "k8s.io/client-go/applyconfigurations/policy/v1"
    +	applyconfigurationspolicyv1beta1 "k8s.io/client-go/applyconfigurations/policy/v1beta1"
    +	applyconfigurationsrbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    +	applyconfigurationsrbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    +	applyconfigurationsrbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    +	resourcev1alpha3 "k8s.io/client-go/applyconfigurations/resource/v1alpha3"
    +	applyconfigurationsresourcev1beta1 "k8s.io/client-go/applyconfigurations/resource/v1beta1"
    +	applyconfigurationsschedulingv1 "k8s.io/client-go/applyconfigurations/scheduling/v1"
    +	applyconfigurationsschedulingv1alpha1 "k8s.io/client-go/applyconfigurations/scheduling/v1alpha1"
    +	applyconfigurationsschedulingv1beta1 "k8s.io/client-go/applyconfigurations/scheduling/v1beta1"
    +	applyconfigurationsstoragev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	applyconfigurationsstoragev1alpha1 "k8s.io/client-go/applyconfigurations/storage/v1alpha1"
    +	applyconfigurationsstoragev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	applyconfigurationsstoragemigrationv1alpha1 "k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1"
    +	testing "k8s.io/client-go/testing"
    +)
    +
    +// ForKind returns an apply configuration type for the given GroupVersionKind, or nil if no
    +// apply configuration type exists for the given GroupVersionKind.
    +func ForKind(kind schema.GroupVersionKind) interface{} {
    +	switch kind {
    +	// Group=admissionregistration.k8s.io, Version=v1
    +	case v1.SchemeGroupVersion.WithKind("AuditAnnotation"):
    +		return &admissionregistrationv1.AuditAnnotationApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ExpressionWarning"):
    +		return &admissionregistrationv1.ExpressionWarningApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("MatchCondition"):
    +		return &admissionregistrationv1.MatchConditionApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("MatchResources"):
    +		return &admissionregistrationv1.MatchResourcesApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("MutatingWebhook"):
    +		return &admissionregistrationv1.MutatingWebhookApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("MutatingWebhookConfiguration"):
    +		return &admissionregistrationv1.MutatingWebhookConfigurationApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("NamedRuleWithOperations"):
    +		return &admissionregistrationv1.NamedRuleWithOperationsApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ParamKind"):
    +		return &admissionregistrationv1.ParamKindApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ParamRef"):
    +		return &admissionregistrationv1.ParamRefApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("Rule"):
    +		return &admissionregistrationv1.RuleApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("RuleWithOperations"):
    +		return &admissionregistrationv1.RuleWithOperationsApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ServiceReference"):
    +		return &admissionregistrationv1.ServiceReferenceApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("TypeChecking"):
    +		return &admissionregistrationv1.TypeCheckingApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicy"):
    +		return &admissionregistrationv1.ValidatingAdmissionPolicyApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBinding"):
    +		return &admissionregistrationv1.ValidatingAdmissionPolicyBindingApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBindingSpec"):
    +		return &admissionregistrationv1.ValidatingAdmissionPolicyBindingSpecApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicySpec"):
    +		return &admissionregistrationv1.ValidatingAdmissionPolicySpecApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyStatus"):
    +		return &admissionregistrationv1.ValidatingAdmissionPolicyStatusApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ValidatingWebhook"):
    +		return &admissionregistrationv1.ValidatingWebhookApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("ValidatingWebhookConfiguration"):
    +		return &admissionregistrationv1.ValidatingWebhookConfigurationApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("Validation"):
    +		return &admissionregistrationv1.ValidationApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("Variable"):
    +		return &admissionregistrationv1.VariableApplyConfiguration{}
    +	case v1.SchemeGroupVersion.WithKind("WebhookClientConfig"):
    +		return &admissionregistrationv1.WebhookClientConfigApplyConfiguration{}
    +
    +		// Group=admissionregistration.k8s.io, Version=v1alpha1
    +	case v1alpha1.SchemeGroupVersion.WithKind("ApplyConfiguration"):
    +		return &admissionregistrationv1alpha1.ApplyConfigurationApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("AuditAnnotation"):
    +		return &admissionregistrationv1alpha1.AuditAnnotationApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("ExpressionWarning"):
    +		return &admissionregistrationv1alpha1.ExpressionWarningApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("JSONPatch"):
    +		return &admissionregistrationv1alpha1.JSONPatchApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("MatchCondition"):
    +		return &admissionregistrationv1alpha1.MatchConditionApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("MatchResources"):
    +		return &admissionregistrationv1alpha1.MatchResourcesApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("MutatingAdmissionPolicy"):
    +		return &admissionregistrationv1alpha1.MutatingAdmissionPolicyApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("MutatingAdmissionPolicyBinding"):
    +		return &admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("MutatingAdmissionPolicyBindingSpec"):
    +		return &admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingSpecApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("MutatingAdmissionPolicySpec"):
    +		return &admissionregistrationv1alpha1.MutatingAdmissionPolicySpecApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("Mutation"):
    +		return &admissionregistrationv1alpha1.MutationApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("NamedRuleWithOperations"):
    +		return &admissionregistrationv1alpha1.NamedRuleWithOperationsApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("ParamKind"):
    +		return &admissionregistrationv1alpha1.ParamKindApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("ParamRef"):
    +		return &admissionregistrationv1alpha1.ParamRefApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("TypeChecking"):
    +		return &admissionregistrationv1alpha1.TypeCheckingApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicy"):
    +		return &admissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBinding"):
    +		return &admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBindingSpec"):
    +		return &admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingSpecApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicySpec"):
    +		return &admissionregistrationv1alpha1.ValidatingAdmissionPolicySpecApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyStatus"):
    +		return &admissionregistrationv1alpha1.ValidatingAdmissionPolicyStatusApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("Validation"):
    +		return &admissionregistrationv1alpha1.ValidationApplyConfiguration{}
    +	case v1alpha1.SchemeGroupVersion.WithKind("Variable"):
    +		return &admissionregistrationv1alpha1.VariableApplyConfiguration{}
    +
    +		// Group=admissionregistration.k8s.io, Version=v1beta1
    +	case v1beta1.SchemeGroupVersion.WithKind("AuditAnnotation"):
    +		return &admissionregistrationv1beta1.AuditAnnotationApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ExpressionWarning"):
    +		return &admissionregistrationv1beta1.ExpressionWarningApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("MatchCondition"):
    +		return &admissionregistrationv1beta1.MatchConditionApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("MatchResources"):
    +		return &admissionregistrationv1beta1.MatchResourcesApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("MutatingWebhook"):
    +		return &admissionregistrationv1beta1.MutatingWebhookApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("MutatingWebhookConfiguration"):
    +		return &admissionregistrationv1beta1.MutatingWebhookConfigurationApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("NamedRuleWithOperations"):
    +		return &admissionregistrationv1beta1.NamedRuleWithOperationsApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ParamKind"):
    +		return &admissionregistrationv1beta1.ParamKindApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ParamRef"):
    +		return &admissionregistrationv1beta1.ParamRefApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ServiceReference"):
    +		return &admissionregistrationv1beta1.ServiceReferenceApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("TypeChecking"):
    +		return &admissionregistrationv1beta1.TypeCheckingApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicy"):
    +		return &admissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBinding"):
    +		return &admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBindingSpec"):
    +		return &admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingSpecApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicySpec"):
    +		return &admissionregistrationv1beta1.ValidatingAdmissionPolicySpecApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyStatus"):
    +		return &admissionregistrationv1beta1.ValidatingAdmissionPolicyStatusApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ValidatingWebhook"):
    +		return &admissionregistrationv1beta1.ValidatingWebhookApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("ValidatingWebhookConfiguration"):
    +		return &admissionregistrationv1beta1.ValidatingWebhookConfigurationApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("Validation"):
    +		return &admissionregistrationv1beta1.ValidationApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("Variable"):
    +		return &admissionregistrationv1beta1.VariableApplyConfiguration{}
    +	case v1beta1.SchemeGroupVersion.WithKind("WebhookClientConfig"):
    +		return &admissionregistrationv1beta1.WebhookClientConfigApplyConfiguration{}
    +
    +		// Group=apps, Version=v1
    +	case appsv1.SchemeGroupVersion.WithKind("ControllerRevision"):
    +		return &applyconfigurationsappsv1.ControllerRevisionApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("DaemonSet"):
    +		return &applyconfigurationsappsv1.DaemonSetApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("DaemonSetCondition"):
    +		return &applyconfigurationsappsv1.DaemonSetConditionApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("DaemonSetSpec"):
    +		return &applyconfigurationsappsv1.DaemonSetSpecApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("DaemonSetStatus"):
    +		return &applyconfigurationsappsv1.DaemonSetStatusApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("DaemonSetUpdateStrategy"):
    +		return &applyconfigurationsappsv1.DaemonSetUpdateStrategyApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("Deployment"):
    +		return &applyconfigurationsappsv1.DeploymentApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("DeploymentCondition"):
    +		return &applyconfigurationsappsv1.DeploymentConditionApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("DeploymentSpec"):
    +		return &applyconfigurationsappsv1.DeploymentSpecApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("DeploymentStatus"):
    +		return &applyconfigurationsappsv1.DeploymentStatusApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("DeploymentStrategy"):
    +		return &applyconfigurationsappsv1.DeploymentStrategyApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("ReplicaSet"):
    +		return &applyconfigurationsappsv1.ReplicaSetApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("ReplicaSetCondition"):
    +		return &applyconfigurationsappsv1.ReplicaSetConditionApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("ReplicaSetSpec"):
    +		return &applyconfigurationsappsv1.ReplicaSetSpecApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("ReplicaSetStatus"):
    +		return &applyconfigurationsappsv1.ReplicaSetStatusApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("RollingUpdateDaemonSet"):
    +		return &applyconfigurationsappsv1.RollingUpdateDaemonSetApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("RollingUpdateDeployment"):
    +		return &applyconfigurationsappsv1.RollingUpdateDeploymentApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("RollingUpdateStatefulSetStrategy"):
    +		return &applyconfigurationsappsv1.RollingUpdateStatefulSetStrategyApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("StatefulSet"):
    +		return &applyconfigurationsappsv1.StatefulSetApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("StatefulSetCondition"):
    +		return &applyconfigurationsappsv1.StatefulSetConditionApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("StatefulSetOrdinals"):
    +		return &applyconfigurationsappsv1.StatefulSetOrdinalsApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("StatefulSetPersistentVolumeClaimRetentionPolicy"):
    +		return &applyconfigurationsappsv1.StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("StatefulSetSpec"):
    +		return &applyconfigurationsappsv1.StatefulSetSpecApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("StatefulSetStatus"):
    +		return &applyconfigurationsappsv1.StatefulSetStatusApplyConfiguration{}
    +	case appsv1.SchemeGroupVersion.WithKind("StatefulSetUpdateStrategy"):
    +		return &applyconfigurationsappsv1.StatefulSetUpdateStrategyApplyConfiguration{}
    +
    +		// Group=apps, Version=v1beta1
    +	case appsv1beta1.SchemeGroupVersion.WithKind("ControllerRevision"):
    +		return &applyconfigurationsappsv1beta1.ControllerRevisionApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("Deployment"):
    +		return &applyconfigurationsappsv1beta1.DeploymentApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("DeploymentCondition"):
    +		return &applyconfigurationsappsv1beta1.DeploymentConditionApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("DeploymentSpec"):
    +		return &applyconfigurationsappsv1beta1.DeploymentSpecApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("DeploymentStatus"):
    +		return &applyconfigurationsappsv1beta1.DeploymentStatusApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("DeploymentStrategy"):
    +		return &applyconfigurationsappsv1beta1.DeploymentStrategyApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("RollbackConfig"):
    +		return &applyconfigurationsappsv1beta1.RollbackConfigApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("RollingUpdateDeployment"):
    +		return &applyconfigurationsappsv1beta1.RollingUpdateDeploymentApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("RollingUpdateStatefulSetStrategy"):
    +		return &applyconfigurationsappsv1beta1.RollingUpdateStatefulSetStrategyApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSet"):
    +		return &applyconfigurationsappsv1beta1.StatefulSetApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSetCondition"):
    +		return &applyconfigurationsappsv1beta1.StatefulSetConditionApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSetOrdinals"):
    +		return &applyconfigurationsappsv1beta1.StatefulSetOrdinalsApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSetPersistentVolumeClaimRetentionPolicy"):
    +		return &applyconfigurationsappsv1beta1.StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSetSpec"):
    +		return &applyconfigurationsappsv1beta1.StatefulSetSpecApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSetStatus"):
    +		return &applyconfigurationsappsv1beta1.StatefulSetStatusApplyConfiguration{}
    +	case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSetUpdateStrategy"):
    +		return &applyconfigurationsappsv1beta1.StatefulSetUpdateStrategyApplyConfiguration{}
    +
    +		// Group=apps, Version=v1beta2
    +	case v1beta2.SchemeGroupVersion.WithKind("ControllerRevision"):
    +		return &appsv1beta2.ControllerRevisionApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("DaemonSet"):
    +		return &appsv1beta2.DaemonSetApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("DaemonSetCondition"):
    +		return &appsv1beta2.DaemonSetConditionApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("DaemonSetSpec"):
    +		return &appsv1beta2.DaemonSetSpecApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("DaemonSetStatus"):
    +		return &appsv1beta2.DaemonSetStatusApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("DaemonSetUpdateStrategy"):
    +		return &appsv1beta2.DaemonSetUpdateStrategyApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("Deployment"):
    +		return &appsv1beta2.DeploymentApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("DeploymentCondition"):
    +		return &appsv1beta2.DeploymentConditionApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("DeploymentSpec"):
    +		return &appsv1beta2.DeploymentSpecApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("DeploymentStatus"):
    +		return &appsv1beta2.DeploymentStatusApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("DeploymentStrategy"):
    +		return &appsv1beta2.DeploymentStrategyApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("ReplicaSet"):
    +		return &appsv1beta2.ReplicaSetApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("ReplicaSetCondition"):
    +		return &appsv1beta2.ReplicaSetConditionApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("ReplicaSetSpec"):
    +		return &appsv1beta2.ReplicaSetSpecApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("ReplicaSetStatus"):
    +		return &appsv1beta2.ReplicaSetStatusApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("RollingUpdateDaemonSet"):
    +		return &appsv1beta2.RollingUpdateDaemonSetApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("RollingUpdateDeployment"):
    +		return &appsv1beta2.RollingUpdateDeploymentApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("RollingUpdateStatefulSetStrategy"):
    +		return &appsv1beta2.RollingUpdateStatefulSetStrategyApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("Scale"):
    +		return &appsv1beta2.ScaleApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("StatefulSet"):
    +		return &appsv1beta2.StatefulSetApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("StatefulSetCondition"):
    +		return &appsv1beta2.StatefulSetConditionApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("StatefulSetOrdinals"):
    +		return &appsv1beta2.StatefulSetOrdinalsApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("StatefulSetPersistentVolumeClaimRetentionPolicy"):
    +		return &appsv1beta2.StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("StatefulSetSpec"):
    +		return &appsv1beta2.StatefulSetSpecApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("StatefulSetStatus"):
    +		return &appsv1beta2.StatefulSetStatusApplyConfiguration{}
    +	case v1beta2.SchemeGroupVersion.WithKind("StatefulSetUpdateStrategy"):
    +		return &appsv1beta2.StatefulSetUpdateStrategyApplyConfiguration{}
    +
    +		// Group=autoscaling, Version=v1
    +	case autoscalingv1.SchemeGroupVersion.WithKind("CrossVersionObjectReference"):
    +		return &applyconfigurationsautoscalingv1.CrossVersionObjectReferenceApplyConfiguration{}
    +	case autoscalingv1.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler"):
    +		return &applyconfigurationsautoscalingv1.HorizontalPodAutoscalerApplyConfiguration{}
    +	case autoscalingv1.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerSpec"):
    +		return &applyconfigurationsautoscalingv1.HorizontalPodAutoscalerSpecApplyConfiguration{}
    +	case autoscalingv1.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerStatus"):
    +		return &applyconfigurationsautoscalingv1.HorizontalPodAutoscalerStatusApplyConfiguration{}
    +	case autoscalingv1.SchemeGroupVersion.WithKind("Scale"):
    +		return &applyconfigurationsautoscalingv1.ScaleApplyConfiguration{}
    +	case autoscalingv1.SchemeGroupVersion.WithKind("ScaleSpec"):
    +		return &applyconfigurationsautoscalingv1.ScaleSpecApplyConfiguration{}
    +	case autoscalingv1.SchemeGroupVersion.WithKind("ScaleStatus"):
    +		return &applyconfigurationsautoscalingv1.ScaleStatusApplyConfiguration{}
    +
    +		// Group=autoscaling, Version=v2
    +	case v2.SchemeGroupVersion.WithKind("ContainerResourceMetricSource"):
    +		return &autoscalingv2.ContainerResourceMetricSourceApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("ContainerResourceMetricStatus"):
    +		return &autoscalingv2.ContainerResourceMetricStatusApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("CrossVersionObjectReference"):
    +		return &autoscalingv2.CrossVersionObjectReferenceApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("ExternalMetricSource"):
    +		return &autoscalingv2.ExternalMetricSourceApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("ExternalMetricStatus"):
    +		return &autoscalingv2.ExternalMetricStatusApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler"):
    +		return &autoscalingv2.HorizontalPodAutoscalerApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerBehavior"):
    +		return &autoscalingv2.HorizontalPodAutoscalerBehaviorApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerCondition"):
    +		return &autoscalingv2.HorizontalPodAutoscalerConditionApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerSpec"):
    +		return &autoscalingv2.HorizontalPodAutoscalerSpecApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerStatus"):
    +		return &autoscalingv2.HorizontalPodAutoscalerStatusApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("HPAScalingPolicy"):
    +		return &autoscalingv2.HPAScalingPolicyApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("HPAScalingRules"):
    +		return &autoscalingv2.HPAScalingRulesApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("MetricIdentifier"):
    +		return &autoscalingv2.MetricIdentifierApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("MetricSpec"):
    +		return &autoscalingv2.MetricSpecApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("MetricStatus"):
    +		return &autoscalingv2.MetricStatusApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("MetricTarget"):
    +		return &autoscalingv2.MetricTargetApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("MetricValueStatus"):
    +		return &autoscalingv2.MetricValueStatusApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("ObjectMetricSource"):
    +		return &autoscalingv2.ObjectMetricSourceApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("ObjectMetricStatus"):
    +		return &autoscalingv2.ObjectMetricStatusApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("PodsMetricSource"):
    +		return &autoscalingv2.PodsMetricSourceApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("PodsMetricStatus"):
    +		return &autoscalingv2.PodsMetricStatusApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("ResourceMetricSource"):
    +		return &autoscalingv2.ResourceMetricSourceApplyConfiguration{}
    +	case v2.SchemeGroupVersion.WithKind("ResourceMetricStatus"):
    +		return &autoscalingv2.ResourceMetricStatusApplyConfiguration{}
    +
    +		// Group=autoscaling, Version=v2beta1
    +	case v2beta1.SchemeGroupVersion.WithKind("ContainerResourceMetricSource"):
    +		return &autoscalingv2beta1.ContainerResourceMetricSourceApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("ContainerResourceMetricStatus"):
    +		return &autoscalingv2beta1.ContainerResourceMetricStatusApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("CrossVersionObjectReference"):
    +		return &autoscalingv2beta1.CrossVersionObjectReferenceApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("ExternalMetricSource"):
    +		return &autoscalingv2beta1.ExternalMetricSourceApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("ExternalMetricStatus"):
    +		return &autoscalingv2beta1.ExternalMetricStatusApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler"):
    +		return &autoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerCondition"):
    +		return &autoscalingv2beta1.HorizontalPodAutoscalerConditionApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerSpec"):
    +		return &autoscalingv2beta1.HorizontalPodAutoscalerSpecApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerStatus"):
    +		return &autoscalingv2beta1.HorizontalPodAutoscalerStatusApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("MetricSpec"):
    +		return &autoscalingv2beta1.MetricSpecApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("MetricStatus"):
    +		return &autoscalingv2beta1.MetricStatusApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("ObjectMetricSource"):
    +		return &autoscalingv2beta1.ObjectMetricSourceApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("ObjectMetricStatus"):
    +		return &autoscalingv2beta1.ObjectMetricStatusApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("PodsMetricSource"):
    +		return &autoscalingv2beta1.PodsMetricSourceApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("PodsMetricStatus"):
    +		return &autoscalingv2beta1.PodsMetricStatusApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("ResourceMetricSource"):
    +		return &autoscalingv2beta1.ResourceMetricSourceApplyConfiguration{}
    +	case v2beta1.SchemeGroupVersion.WithKind("ResourceMetricStatus"):
    +		return &autoscalingv2beta1.ResourceMetricStatusApplyConfiguration{}
    +
    +		// Group=autoscaling, Version=v2beta2
    +	case v2beta2.SchemeGroupVersion.WithKind("ContainerResourceMetricSource"):
    +		return &autoscalingv2beta2.ContainerResourceMetricSourceApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("ContainerResourceMetricStatus"):
    +		return &autoscalingv2beta2.ContainerResourceMetricStatusApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("CrossVersionObjectReference"):
    +		return &autoscalingv2beta2.CrossVersionObjectReferenceApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("ExternalMetricSource"):
    +		return &autoscalingv2beta2.ExternalMetricSourceApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("ExternalMetricStatus"):
    +		return &autoscalingv2beta2.ExternalMetricStatusApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler"):
    +		return &autoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerBehavior"):
    +		return &autoscalingv2beta2.HorizontalPodAutoscalerBehaviorApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerCondition"):
    +		return &autoscalingv2beta2.HorizontalPodAutoscalerConditionApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerSpec"):
    +		return &autoscalingv2beta2.HorizontalPodAutoscalerSpecApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("HorizontalPodAutoscalerStatus"):
    +		return &autoscalingv2beta2.HorizontalPodAutoscalerStatusApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("HPAScalingPolicy"):
    +		return &autoscalingv2beta2.HPAScalingPolicyApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("HPAScalingRules"):
    +		return &autoscalingv2beta2.HPAScalingRulesApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("MetricIdentifier"):
    +		return &autoscalingv2beta2.MetricIdentifierApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("MetricSpec"):
    +		return &autoscalingv2beta2.MetricSpecApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("MetricStatus"):
    +		return &autoscalingv2beta2.MetricStatusApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("MetricTarget"):
    +		return &autoscalingv2beta2.MetricTargetApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("MetricValueStatus"):
    +		return &autoscalingv2beta2.MetricValueStatusApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("ObjectMetricSource"):
    +		return &autoscalingv2beta2.ObjectMetricSourceApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("ObjectMetricStatus"):
    +		return &autoscalingv2beta2.ObjectMetricStatusApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("PodsMetricSource"):
    +		return &autoscalingv2beta2.PodsMetricSourceApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("PodsMetricStatus"):
    +		return &autoscalingv2beta2.PodsMetricStatusApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("ResourceMetricSource"):
    +		return &autoscalingv2beta2.ResourceMetricSourceApplyConfiguration{}
    +	case v2beta2.SchemeGroupVersion.WithKind("ResourceMetricStatus"):
    +		return &autoscalingv2beta2.ResourceMetricStatusApplyConfiguration{}
    +
    +		// Group=batch, Version=v1
    +	case batchv1.SchemeGroupVersion.WithKind("CronJob"):
    +		return &applyconfigurationsbatchv1.CronJobApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("CronJobSpec"):
    +		return &applyconfigurationsbatchv1.CronJobSpecApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("CronJobStatus"):
    +		return &applyconfigurationsbatchv1.CronJobStatusApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("Job"):
    +		return &applyconfigurationsbatchv1.JobApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("JobCondition"):
    +		return &applyconfigurationsbatchv1.JobConditionApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("JobSpec"):
    +		return &applyconfigurationsbatchv1.JobSpecApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("JobStatus"):
    +		return &applyconfigurationsbatchv1.JobStatusApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("JobTemplateSpec"):
    +		return &applyconfigurationsbatchv1.JobTemplateSpecApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("PodFailurePolicy"):
    +		return &applyconfigurationsbatchv1.PodFailurePolicyApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("PodFailurePolicyOnExitCodesRequirement"):
    +		return &applyconfigurationsbatchv1.PodFailurePolicyOnExitCodesRequirementApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("PodFailurePolicyOnPodConditionsPattern"):
    +		return &applyconfigurationsbatchv1.PodFailurePolicyOnPodConditionsPatternApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("PodFailurePolicyRule"):
    +		return &applyconfigurationsbatchv1.PodFailurePolicyRuleApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("SuccessPolicy"):
    +		return &applyconfigurationsbatchv1.SuccessPolicyApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("SuccessPolicyRule"):
    +		return &applyconfigurationsbatchv1.SuccessPolicyRuleApplyConfiguration{}
    +	case batchv1.SchemeGroupVersion.WithKind("UncountedTerminatedPods"):
    +		return &applyconfigurationsbatchv1.UncountedTerminatedPodsApplyConfiguration{}
    +
    +		// Group=batch, Version=v1beta1
    +	case batchv1beta1.SchemeGroupVersion.WithKind("CronJob"):
    +		return &applyconfigurationsbatchv1beta1.CronJobApplyConfiguration{}
    +	case batchv1beta1.SchemeGroupVersion.WithKind("CronJobSpec"):
    +		return &applyconfigurationsbatchv1beta1.CronJobSpecApplyConfiguration{}
    +	case batchv1beta1.SchemeGroupVersion.WithKind("CronJobStatus"):
    +		return &applyconfigurationsbatchv1beta1.CronJobStatusApplyConfiguration{}
    +	case batchv1beta1.SchemeGroupVersion.WithKind("JobTemplateSpec"):
    +		return &applyconfigurationsbatchv1beta1.JobTemplateSpecApplyConfiguration{}
    +
    +		// Group=certificates.k8s.io, Version=v1
    +	case certificatesv1.SchemeGroupVersion.WithKind("CertificateSigningRequest"):
    +		return &applyconfigurationscertificatesv1.CertificateSigningRequestApplyConfiguration{}
    +	case certificatesv1.SchemeGroupVersion.WithKind("CertificateSigningRequestCondition"):
    +		return &applyconfigurationscertificatesv1.CertificateSigningRequestConditionApplyConfiguration{}
    +	case certificatesv1.SchemeGroupVersion.WithKind("CertificateSigningRequestSpec"):
    +		return &applyconfigurationscertificatesv1.CertificateSigningRequestSpecApplyConfiguration{}
    +	case certificatesv1.SchemeGroupVersion.WithKind("CertificateSigningRequestStatus"):
    +		return &applyconfigurationscertificatesv1.CertificateSigningRequestStatusApplyConfiguration{}
    +
    +		// Group=certificates.k8s.io, Version=v1alpha1
    +	case certificatesv1alpha1.SchemeGroupVersion.WithKind("ClusterTrustBundle"):
    +		return &applyconfigurationscertificatesv1alpha1.ClusterTrustBundleApplyConfiguration{}
    +	case certificatesv1alpha1.SchemeGroupVersion.WithKind("ClusterTrustBundleSpec"):
    +		return &applyconfigurationscertificatesv1alpha1.ClusterTrustBundleSpecApplyConfiguration{}
    +
    +		// Group=certificates.k8s.io, Version=v1beta1
    +	case certificatesv1beta1.SchemeGroupVersion.WithKind("CertificateSigningRequest"):
    +		return &applyconfigurationscertificatesv1beta1.CertificateSigningRequestApplyConfiguration{}
    +	case certificatesv1beta1.SchemeGroupVersion.WithKind("CertificateSigningRequestCondition"):
    +		return &applyconfigurationscertificatesv1beta1.CertificateSigningRequestConditionApplyConfiguration{}
    +	case certificatesv1beta1.SchemeGroupVersion.WithKind("CertificateSigningRequestSpec"):
    +		return &applyconfigurationscertificatesv1beta1.CertificateSigningRequestSpecApplyConfiguration{}
    +	case certificatesv1beta1.SchemeGroupVersion.WithKind("CertificateSigningRequestStatus"):
    +		return &applyconfigurationscertificatesv1beta1.CertificateSigningRequestStatusApplyConfiguration{}
    +
    +		// Group=coordination.k8s.io, Version=v1
    +	case coordinationv1.SchemeGroupVersion.WithKind("Lease"):
    +		return &applyconfigurationscoordinationv1.LeaseApplyConfiguration{}
    +	case coordinationv1.SchemeGroupVersion.WithKind("LeaseSpec"):
    +		return &applyconfigurationscoordinationv1.LeaseSpecApplyConfiguration{}
    +
    +		// Group=coordination.k8s.io, Version=v1alpha2
    +	case v1alpha2.SchemeGroupVersion.WithKind("LeaseCandidate"):
    +		return &coordinationv1alpha2.LeaseCandidateApplyConfiguration{}
    +	case v1alpha2.SchemeGroupVersion.WithKind("LeaseCandidateSpec"):
    +		return &coordinationv1alpha2.LeaseCandidateSpecApplyConfiguration{}
    +
    +		// Group=coordination.k8s.io, Version=v1beta1
    +	case coordinationv1beta1.SchemeGroupVersion.WithKind("Lease"):
    +		return &applyconfigurationscoordinationv1beta1.LeaseApplyConfiguration{}
    +	case coordinationv1beta1.SchemeGroupVersion.WithKind("LeaseSpec"):
    +		return &applyconfigurationscoordinationv1beta1.LeaseSpecApplyConfiguration{}
    +
    +		// Group=core, Version=v1
    +	case corev1.SchemeGroupVersion.WithKind("Affinity"):
    +		return &applyconfigurationscorev1.AffinityApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("AppArmorProfile"):
    +		return &applyconfigurationscorev1.AppArmorProfileApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("AttachedVolume"):
    +		return &applyconfigurationscorev1.AttachedVolumeApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("AWSElasticBlockStoreVolumeSource"):
    +		return &applyconfigurationscorev1.AWSElasticBlockStoreVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("AzureDiskVolumeSource"):
    +		return &applyconfigurationscorev1.AzureDiskVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("AzureFilePersistentVolumeSource"):
    +		return &applyconfigurationscorev1.AzureFilePersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("AzureFileVolumeSource"):
    +		return &applyconfigurationscorev1.AzureFileVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Capabilities"):
    +		return &applyconfigurationscorev1.CapabilitiesApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("CephFSPersistentVolumeSource"):
    +		return &applyconfigurationscorev1.CephFSPersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("CephFSVolumeSource"):
    +		return &applyconfigurationscorev1.CephFSVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("CinderPersistentVolumeSource"):
    +		return &applyconfigurationscorev1.CinderPersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("CinderVolumeSource"):
    +		return &applyconfigurationscorev1.CinderVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ClientIPConfig"):
    +		return &applyconfigurationscorev1.ClientIPConfigApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ClusterTrustBundleProjection"):
    +		return &applyconfigurationscorev1.ClusterTrustBundleProjectionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ComponentCondition"):
    +		return &applyconfigurationscorev1.ComponentConditionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ComponentStatus"):
    +		return &applyconfigurationscorev1.ComponentStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ConfigMap"):
    +		return &applyconfigurationscorev1.ConfigMapApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ConfigMapEnvSource"):
    +		return &applyconfigurationscorev1.ConfigMapEnvSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ConfigMapKeySelector"):
    +		return &applyconfigurationscorev1.ConfigMapKeySelectorApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ConfigMapNodeConfigSource"):
    +		return &applyconfigurationscorev1.ConfigMapNodeConfigSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ConfigMapProjection"):
    +		return &applyconfigurationscorev1.ConfigMapProjectionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ConfigMapVolumeSource"):
    +		return &applyconfigurationscorev1.ConfigMapVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Container"):
    +		return &applyconfigurationscorev1.ContainerApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ContainerImage"):
    +		return &applyconfigurationscorev1.ContainerImageApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ContainerPort"):
    +		return &applyconfigurationscorev1.ContainerPortApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ContainerResizePolicy"):
    +		return &applyconfigurationscorev1.ContainerResizePolicyApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ContainerState"):
    +		return &applyconfigurationscorev1.ContainerStateApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ContainerStateRunning"):
    +		return &applyconfigurationscorev1.ContainerStateRunningApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ContainerStateTerminated"):
    +		return &applyconfigurationscorev1.ContainerStateTerminatedApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ContainerStateWaiting"):
    +		return &applyconfigurationscorev1.ContainerStateWaitingApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ContainerStatus"):
    +		return &applyconfigurationscorev1.ContainerStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ContainerUser"):
    +		return &applyconfigurationscorev1.ContainerUserApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("CSIPersistentVolumeSource"):
    +		return &applyconfigurationscorev1.CSIPersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("CSIVolumeSource"):
    +		return &applyconfigurationscorev1.CSIVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("DaemonEndpoint"):
    +		return &applyconfigurationscorev1.DaemonEndpointApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("DownwardAPIProjection"):
    +		return &applyconfigurationscorev1.DownwardAPIProjectionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("DownwardAPIVolumeFile"):
    +		return &applyconfigurationscorev1.DownwardAPIVolumeFileApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("DownwardAPIVolumeSource"):
    +		return &applyconfigurationscorev1.DownwardAPIVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EmptyDirVolumeSource"):
    +		return &applyconfigurationscorev1.EmptyDirVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EndpointAddress"):
    +		return &applyconfigurationscorev1.EndpointAddressApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EndpointPort"):
    +		return &applyconfigurationscorev1.EndpointPortApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Endpoints"):
    +		return &applyconfigurationscorev1.EndpointsApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EndpointSubset"):
    +		return &applyconfigurationscorev1.EndpointSubsetApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EnvFromSource"):
    +		return &applyconfigurationscorev1.EnvFromSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EnvVar"):
    +		return &applyconfigurationscorev1.EnvVarApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EnvVarSource"):
    +		return &applyconfigurationscorev1.EnvVarSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EphemeralContainer"):
    +		return &applyconfigurationscorev1.EphemeralContainerApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EphemeralContainerCommon"):
    +		return &applyconfigurationscorev1.EphemeralContainerCommonApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EphemeralVolumeSource"):
    +		return &applyconfigurationscorev1.EphemeralVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Event"):
    +		return &applyconfigurationscorev1.EventApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EventSeries"):
    +		return &applyconfigurationscorev1.EventSeriesApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("EventSource"):
    +		return &applyconfigurationscorev1.EventSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ExecAction"):
    +		return &applyconfigurationscorev1.ExecActionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("FCVolumeSource"):
    +		return &applyconfigurationscorev1.FCVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("FlexPersistentVolumeSource"):
    +		return &applyconfigurationscorev1.FlexPersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("FlexVolumeSource"):
    +		return &applyconfigurationscorev1.FlexVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("FlockerVolumeSource"):
    +		return &applyconfigurationscorev1.FlockerVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("GCEPersistentDiskVolumeSource"):
    +		return &applyconfigurationscorev1.GCEPersistentDiskVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("GitRepoVolumeSource"):
    +		return &applyconfigurationscorev1.GitRepoVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("GlusterfsPersistentVolumeSource"):
    +		return &applyconfigurationscorev1.GlusterfsPersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("GlusterfsVolumeSource"):
    +		return &applyconfigurationscorev1.GlusterfsVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("GRPCAction"):
    +		return &applyconfigurationscorev1.GRPCActionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("HostAlias"):
    +		return &applyconfigurationscorev1.HostAliasApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("HostIP"):
    +		return &applyconfigurationscorev1.HostIPApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("HostPathVolumeSource"):
    +		return &applyconfigurationscorev1.HostPathVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("HTTPGetAction"):
    +		return &applyconfigurationscorev1.HTTPGetActionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("HTTPHeader"):
    +		return &applyconfigurationscorev1.HTTPHeaderApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ImageVolumeSource"):
    +		return &applyconfigurationscorev1.ImageVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ISCSIPersistentVolumeSource"):
    +		return &applyconfigurationscorev1.ISCSIPersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ISCSIVolumeSource"):
    +		return &applyconfigurationscorev1.ISCSIVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("KeyToPath"):
    +		return &applyconfigurationscorev1.KeyToPathApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Lifecycle"):
    +		return &applyconfigurationscorev1.LifecycleApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("LifecycleHandler"):
    +		return &applyconfigurationscorev1.LifecycleHandlerApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("LimitRange"):
    +		return &applyconfigurationscorev1.LimitRangeApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("LimitRangeItem"):
    +		return &applyconfigurationscorev1.LimitRangeItemApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("LimitRangeSpec"):
    +		return &applyconfigurationscorev1.LimitRangeSpecApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("LinuxContainerUser"):
    +		return &applyconfigurationscorev1.LinuxContainerUserApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("LoadBalancerIngress"):
    +		return &applyconfigurationscorev1.LoadBalancerIngressApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("LoadBalancerStatus"):
    +		return &applyconfigurationscorev1.LoadBalancerStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("LocalObjectReference"):
    +		return &applyconfigurationscorev1.LocalObjectReferenceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("LocalVolumeSource"):
    +		return &applyconfigurationscorev1.LocalVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ModifyVolumeStatus"):
    +		return &applyconfigurationscorev1.ModifyVolumeStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Namespace"):
    +		return &applyconfigurationscorev1.NamespaceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NamespaceCondition"):
    +		return &applyconfigurationscorev1.NamespaceConditionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NamespaceSpec"):
    +		return &applyconfigurationscorev1.NamespaceSpecApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NamespaceStatus"):
    +		return &applyconfigurationscorev1.NamespaceStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NFSVolumeSource"):
    +		return &applyconfigurationscorev1.NFSVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Node"):
    +		return &applyconfigurationscorev1.NodeApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeAddress"):
    +		return &applyconfigurationscorev1.NodeAddressApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeAffinity"):
    +		return &applyconfigurationscorev1.NodeAffinityApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeCondition"):
    +		return &applyconfigurationscorev1.NodeConditionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeConfigSource"):
    +		return &applyconfigurationscorev1.NodeConfigSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeConfigStatus"):
    +		return &applyconfigurationscorev1.NodeConfigStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeDaemonEndpoints"):
    +		return &applyconfigurationscorev1.NodeDaemonEndpointsApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeFeatures"):
    +		return &applyconfigurationscorev1.NodeFeaturesApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeRuntimeHandler"):
    +		return &applyconfigurationscorev1.NodeRuntimeHandlerApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeRuntimeHandlerFeatures"):
    +		return &applyconfigurationscorev1.NodeRuntimeHandlerFeaturesApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeSelector"):
    +		return &applyconfigurationscorev1.NodeSelectorApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeSelectorRequirement"):
    +		return &applyconfigurationscorev1.NodeSelectorRequirementApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeSelectorTerm"):
    +		return &applyconfigurationscorev1.NodeSelectorTermApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeSpec"):
    +		return &applyconfigurationscorev1.NodeSpecApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeStatus"):
    +		return &applyconfigurationscorev1.NodeStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("NodeSystemInfo"):
    +		return &applyconfigurationscorev1.NodeSystemInfoApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ObjectFieldSelector"):
    +		return &applyconfigurationscorev1.ObjectFieldSelectorApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ObjectReference"):
    +		return &applyconfigurationscorev1.ObjectReferenceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PersistentVolume"):
    +		return &applyconfigurationscorev1.PersistentVolumeApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PersistentVolumeClaim"):
    +		return &applyconfigurationscorev1.PersistentVolumeClaimApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PersistentVolumeClaimCondition"):
    +		return &applyconfigurationscorev1.PersistentVolumeClaimConditionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PersistentVolumeClaimSpec"):
    +		return &applyconfigurationscorev1.PersistentVolumeClaimSpecApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PersistentVolumeClaimStatus"):
    +		return &applyconfigurationscorev1.PersistentVolumeClaimStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PersistentVolumeClaimTemplate"):
    +		return &applyconfigurationscorev1.PersistentVolumeClaimTemplateApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PersistentVolumeClaimVolumeSource"):
    +		return &applyconfigurationscorev1.PersistentVolumeClaimVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PersistentVolumeSource"):
    +		return &applyconfigurationscorev1.PersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PersistentVolumeSpec"):
    +		return &applyconfigurationscorev1.PersistentVolumeSpecApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PersistentVolumeStatus"):
    +		return &applyconfigurationscorev1.PersistentVolumeStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PhotonPersistentDiskVolumeSource"):
    +		return &applyconfigurationscorev1.PhotonPersistentDiskVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Pod"):
    +		return &applyconfigurationscorev1.PodApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodAffinity"):
    +		return &applyconfigurationscorev1.PodAffinityApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodAffinityTerm"):
    +		return &applyconfigurationscorev1.PodAffinityTermApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodAntiAffinity"):
    +		return &applyconfigurationscorev1.PodAntiAffinityApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodCondition"):
    +		return &applyconfigurationscorev1.PodConditionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodDNSConfig"):
    +		return &applyconfigurationscorev1.PodDNSConfigApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodDNSConfigOption"):
    +		return &applyconfigurationscorev1.PodDNSConfigOptionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodIP"):
    +		return &applyconfigurationscorev1.PodIPApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodOS"):
    +		return &applyconfigurationscorev1.PodOSApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodReadinessGate"):
    +		return &applyconfigurationscorev1.PodReadinessGateApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodResourceClaim"):
    +		return &applyconfigurationscorev1.PodResourceClaimApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodResourceClaimStatus"):
    +		return &applyconfigurationscorev1.PodResourceClaimStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodSchedulingGate"):
    +		return &applyconfigurationscorev1.PodSchedulingGateApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodSecurityContext"):
    +		return &applyconfigurationscorev1.PodSecurityContextApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodSpec"):
    +		return &applyconfigurationscorev1.PodSpecApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodStatus"):
    +		return &applyconfigurationscorev1.PodStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodTemplate"):
    +		return &applyconfigurationscorev1.PodTemplateApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PodTemplateSpec"):
    +		return &applyconfigurationscorev1.PodTemplateSpecApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PortStatus"):
    +		return &applyconfigurationscorev1.PortStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PortworxVolumeSource"):
    +		return &applyconfigurationscorev1.PortworxVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("PreferredSchedulingTerm"):
    +		return &applyconfigurationscorev1.PreferredSchedulingTermApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Probe"):
    +		return &applyconfigurationscorev1.ProbeApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ProbeHandler"):
    +		return &applyconfigurationscorev1.ProbeHandlerApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ProjectedVolumeSource"):
    +		return &applyconfigurationscorev1.ProjectedVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("QuobyteVolumeSource"):
    +		return &applyconfigurationscorev1.QuobyteVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("RBDPersistentVolumeSource"):
    +		return &applyconfigurationscorev1.RBDPersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("RBDVolumeSource"):
    +		return &applyconfigurationscorev1.RBDVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ReplicationController"):
    +		return &applyconfigurationscorev1.ReplicationControllerApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ReplicationControllerCondition"):
    +		return &applyconfigurationscorev1.ReplicationControllerConditionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ReplicationControllerSpec"):
    +		return &applyconfigurationscorev1.ReplicationControllerSpecApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ReplicationControllerStatus"):
    +		return &applyconfigurationscorev1.ReplicationControllerStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ResourceClaim"):
    +		return &applyconfigurationscorev1.ResourceClaimApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ResourceFieldSelector"):
    +		return &applyconfigurationscorev1.ResourceFieldSelectorApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ResourceHealth"):
    +		return &applyconfigurationscorev1.ResourceHealthApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ResourceQuota"):
    +		return &applyconfigurationscorev1.ResourceQuotaApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ResourceQuotaSpec"):
    +		return &applyconfigurationscorev1.ResourceQuotaSpecApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ResourceQuotaStatus"):
    +		return &applyconfigurationscorev1.ResourceQuotaStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ResourceRequirements"):
    +		return &applyconfigurationscorev1.ResourceRequirementsApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ResourceStatus"):
    +		return &applyconfigurationscorev1.ResourceStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ScaleIOPersistentVolumeSource"):
    +		return &applyconfigurationscorev1.ScaleIOPersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ScaleIOVolumeSource"):
    +		return &applyconfigurationscorev1.ScaleIOVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ScopedResourceSelectorRequirement"):
    +		return &applyconfigurationscorev1.ScopedResourceSelectorRequirementApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ScopeSelector"):
    +		return &applyconfigurationscorev1.ScopeSelectorApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("SeccompProfile"):
    +		return &applyconfigurationscorev1.SeccompProfileApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Secret"):
    +		return &applyconfigurationscorev1.SecretApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("SecretEnvSource"):
    +		return &applyconfigurationscorev1.SecretEnvSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("SecretKeySelector"):
    +		return &applyconfigurationscorev1.SecretKeySelectorApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("SecretProjection"):
    +		return &applyconfigurationscorev1.SecretProjectionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("SecretReference"):
    +		return &applyconfigurationscorev1.SecretReferenceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("SecretVolumeSource"):
    +		return &applyconfigurationscorev1.SecretVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("SecurityContext"):
    +		return &applyconfigurationscorev1.SecurityContextApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("SELinuxOptions"):
    +		return &applyconfigurationscorev1.SELinuxOptionsApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Service"):
    +		return &applyconfigurationscorev1.ServiceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ServiceAccount"):
    +		return &applyconfigurationscorev1.ServiceAccountApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ServiceAccountTokenProjection"):
    +		return &applyconfigurationscorev1.ServiceAccountTokenProjectionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ServicePort"):
    +		return &applyconfigurationscorev1.ServicePortApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ServiceSpec"):
    +		return &applyconfigurationscorev1.ServiceSpecApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("ServiceStatus"):
    +		return &applyconfigurationscorev1.ServiceStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("SessionAffinityConfig"):
    +		return &applyconfigurationscorev1.SessionAffinityConfigApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("SleepAction"):
    +		return &applyconfigurationscorev1.SleepActionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("StorageOSPersistentVolumeSource"):
    +		return &applyconfigurationscorev1.StorageOSPersistentVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("StorageOSVolumeSource"):
    +		return &applyconfigurationscorev1.StorageOSVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Sysctl"):
    +		return &applyconfigurationscorev1.SysctlApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Taint"):
    +		return &applyconfigurationscorev1.TaintApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("TCPSocketAction"):
    +		return &applyconfigurationscorev1.TCPSocketActionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Toleration"):
    +		return &applyconfigurationscorev1.TolerationApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("TopologySelectorLabelRequirement"):
    +		return &applyconfigurationscorev1.TopologySelectorLabelRequirementApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("TopologySelectorTerm"):
    +		return &applyconfigurationscorev1.TopologySelectorTermApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("TopologySpreadConstraint"):
    +		return &applyconfigurationscorev1.TopologySpreadConstraintApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("TypedLocalObjectReference"):
    +		return &applyconfigurationscorev1.TypedLocalObjectReferenceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("TypedObjectReference"):
    +		return &applyconfigurationscorev1.TypedObjectReferenceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("Volume"):
    +		return &applyconfigurationscorev1.VolumeApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("VolumeDevice"):
    +		return &applyconfigurationscorev1.VolumeDeviceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("VolumeMount"):
    +		return &applyconfigurationscorev1.VolumeMountApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("VolumeMountStatus"):
    +		return &applyconfigurationscorev1.VolumeMountStatusApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("VolumeNodeAffinity"):
    +		return &applyconfigurationscorev1.VolumeNodeAffinityApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("VolumeProjection"):
    +		return &applyconfigurationscorev1.VolumeProjectionApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("VolumeResourceRequirements"):
    +		return &applyconfigurationscorev1.VolumeResourceRequirementsApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("VolumeSource"):
    +		return &applyconfigurationscorev1.VolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("VsphereVirtualDiskVolumeSource"):
    +		return &applyconfigurationscorev1.VsphereVirtualDiskVolumeSourceApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("WeightedPodAffinityTerm"):
    +		return &applyconfigurationscorev1.WeightedPodAffinityTermApplyConfiguration{}
    +	case corev1.SchemeGroupVersion.WithKind("WindowsSecurityContextOptions"):
    +		return &applyconfigurationscorev1.WindowsSecurityContextOptionsApplyConfiguration{}
    +
    +		// Group=discovery.k8s.io, Version=v1
    +	case discoveryv1.SchemeGroupVersion.WithKind("Endpoint"):
    +		return &applyconfigurationsdiscoveryv1.EndpointApplyConfiguration{}
    +	case discoveryv1.SchemeGroupVersion.WithKind("EndpointConditions"):
    +		return &applyconfigurationsdiscoveryv1.EndpointConditionsApplyConfiguration{}
    +	case discoveryv1.SchemeGroupVersion.WithKind("EndpointHints"):
    +		return &applyconfigurationsdiscoveryv1.EndpointHintsApplyConfiguration{}
    +	case discoveryv1.SchemeGroupVersion.WithKind("EndpointPort"):
    +		return &applyconfigurationsdiscoveryv1.EndpointPortApplyConfiguration{}
    +	case discoveryv1.SchemeGroupVersion.WithKind("EndpointSlice"):
    +		return &applyconfigurationsdiscoveryv1.EndpointSliceApplyConfiguration{}
    +	case discoveryv1.SchemeGroupVersion.WithKind("ForZone"):
    +		return &applyconfigurationsdiscoveryv1.ForZoneApplyConfiguration{}
    +
    +		// Group=discovery.k8s.io, Version=v1beta1
    +	case discoveryv1beta1.SchemeGroupVersion.WithKind("Endpoint"):
    +		return &applyconfigurationsdiscoveryv1beta1.EndpointApplyConfiguration{}
    +	case discoveryv1beta1.SchemeGroupVersion.WithKind("EndpointConditions"):
    +		return &applyconfigurationsdiscoveryv1beta1.EndpointConditionsApplyConfiguration{}
    +	case discoveryv1beta1.SchemeGroupVersion.WithKind("EndpointHints"):
    +		return &applyconfigurationsdiscoveryv1beta1.EndpointHintsApplyConfiguration{}
    +	case discoveryv1beta1.SchemeGroupVersion.WithKind("EndpointPort"):
    +		return &applyconfigurationsdiscoveryv1beta1.EndpointPortApplyConfiguration{}
    +	case discoveryv1beta1.SchemeGroupVersion.WithKind("EndpointSlice"):
    +		return &applyconfigurationsdiscoveryv1beta1.EndpointSliceApplyConfiguration{}
    +	case discoveryv1beta1.SchemeGroupVersion.WithKind("ForZone"):
    +		return &applyconfigurationsdiscoveryv1beta1.ForZoneApplyConfiguration{}
    +
    +		// Group=events.k8s.io, Version=v1
    +	case eventsv1.SchemeGroupVersion.WithKind("Event"):
    +		return &applyconfigurationseventsv1.EventApplyConfiguration{}
    +	case eventsv1.SchemeGroupVersion.WithKind("EventSeries"):
    +		return &applyconfigurationseventsv1.EventSeriesApplyConfiguration{}
    +
    +		// Group=events.k8s.io, Version=v1beta1
    +	case eventsv1beta1.SchemeGroupVersion.WithKind("Event"):
    +		return &applyconfigurationseventsv1beta1.EventApplyConfiguration{}
    +	case eventsv1beta1.SchemeGroupVersion.WithKind("EventSeries"):
    +		return &applyconfigurationseventsv1beta1.EventSeriesApplyConfiguration{}
    +
    +		// Group=extensions, Version=v1beta1
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("DaemonSet"):
    +		return &applyconfigurationsextensionsv1beta1.DaemonSetApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("DaemonSetCondition"):
    +		return &applyconfigurationsextensionsv1beta1.DaemonSetConditionApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("DaemonSetSpec"):
    +		return &applyconfigurationsextensionsv1beta1.DaemonSetSpecApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("DaemonSetStatus"):
    +		return &applyconfigurationsextensionsv1beta1.DaemonSetStatusApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("DaemonSetUpdateStrategy"):
    +		return &applyconfigurationsextensionsv1beta1.DaemonSetUpdateStrategyApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("Deployment"):
    +		return &applyconfigurationsextensionsv1beta1.DeploymentApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("DeploymentCondition"):
    +		return &applyconfigurationsextensionsv1beta1.DeploymentConditionApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("DeploymentSpec"):
    +		return &applyconfigurationsextensionsv1beta1.DeploymentSpecApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("DeploymentStatus"):
    +		return &applyconfigurationsextensionsv1beta1.DeploymentStatusApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("DeploymentStrategy"):
    +		return &applyconfigurationsextensionsv1beta1.DeploymentStrategyApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("HTTPIngressPath"):
    +		return &applyconfigurationsextensionsv1beta1.HTTPIngressPathApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("HTTPIngressRuleValue"):
    +		return &applyconfigurationsextensionsv1beta1.HTTPIngressRuleValueApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("Ingress"):
    +		return &applyconfigurationsextensionsv1beta1.IngressApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("IngressBackend"):
    +		return &applyconfigurationsextensionsv1beta1.IngressBackendApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("IngressLoadBalancerIngress"):
    +		return &applyconfigurationsextensionsv1beta1.IngressLoadBalancerIngressApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("IngressLoadBalancerStatus"):
    +		return &applyconfigurationsextensionsv1beta1.IngressLoadBalancerStatusApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("IngressPortStatus"):
    +		return &applyconfigurationsextensionsv1beta1.IngressPortStatusApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("IngressRule"):
    +		return &applyconfigurationsextensionsv1beta1.IngressRuleApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("IngressRuleValue"):
    +		return &applyconfigurationsextensionsv1beta1.IngressRuleValueApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("IngressSpec"):
    +		return &applyconfigurationsextensionsv1beta1.IngressSpecApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("IngressStatus"):
    +		return &applyconfigurationsextensionsv1beta1.IngressStatusApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("IngressTLS"):
    +		return &applyconfigurationsextensionsv1beta1.IngressTLSApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("IPBlock"):
    +		return &applyconfigurationsextensionsv1beta1.IPBlockApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("NetworkPolicy"):
    +		return &applyconfigurationsextensionsv1beta1.NetworkPolicyApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("NetworkPolicyEgressRule"):
    +		return &applyconfigurationsextensionsv1beta1.NetworkPolicyEgressRuleApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("NetworkPolicyIngressRule"):
    +		return &applyconfigurationsextensionsv1beta1.NetworkPolicyIngressRuleApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("NetworkPolicyPeer"):
    +		return &applyconfigurationsextensionsv1beta1.NetworkPolicyPeerApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("NetworkPolicyPort"):
    +		return &applyconfigurationsextensionsv1beta1.NetworkPolicyPortApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("NetworkPolicySpec"):
    +		return &applyconfigurationsextensionsv1beta1.NetworkPolicySpecApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("ReplicaSet"):
    +		return &applyconfigurationsextensionsv1beta1.ReplicaSetApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("ReplicaSetCondition"):
    +		return &applyconfigurationsextensionsv1beta1.ReplicaSetConditionApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("ReplicaSetSpec"):
    +		return &applyconfigurationsextensionsv1beta1.ReplicaSetSpecApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("ReplicaSetStatus"):
    +		return &applyconfigurationsextensionsv1beta1.ReplicaSetStatusApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("RollbackConfig"):
    +		return &applyconfigurationsextensionsv1beta1.RollbackConfigApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("RollingUpdateDaemonSet"):
    +		return &applyconfigurationsextensionsv1beta1.RollingUpdateDaemonSetApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("RollingUpdateDeployment"):
    +		return &applyconfigurationsextensionsv1beta1.RollingUpdateDeploymentApplyConfiguration{}
    +	case extensionsv1beta1.SchemeGroupVersion.WithKind("Scale"):
    +		return &applyconfigurationsextensionsv1beta1.ScaleApplyConfiguration{}
    +
    +		// Group=flowcontrol.apiserver.k8s.io, Version=v1
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("ExemptPriorityLevelConfiguration"):
    +		return &applyconfigurationsflowcontrolv1.ExemptPriorityLevelConfigurationApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("FlowDistinguisherMethod"):
    +		return &applyconfigurationsflowcontrolv1.FlowDistinguisherMethodApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("FlowSchema"):
    +		return &applyconfigurationsflowcontrolv1.FlowSchemaApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("FlowSchemaCondition"):
    +		return &applyconfigurationsflowcontrolv1.FlowSchemaConditionApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("FlowSchemaSpec"):
    +		return &applyconfigurationsflowcontrolv1.FlowSchemaSpecApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("FlowSchemaStatus"):
    +		return &applyconfigurationsflowcontrolv1.FlowSchemaStatusApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("GroupSubject"):
    +		return &applyconfigurationsflowcontrolv1.GroupSubjectApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("LimitedPriorityLevelConfiguration"):
    +		return &applyconfigurationsflowcontrolv1.LimitedPriorityLevelConfigurationApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("LimitResponse"):
    +		return &applyconfigurationsflowcontrolv1.LimitResponseApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("NonResourcePolicyRule"):
    +		return &applyconfigurationsflowcontrolv1.NonResourcePolicyRuleApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("PolicyRulesWithSubjects"):
    +		return &applyconfigurationsflowcontrolv1.PolicyRulesWithSubjectsApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("PriorityLevelConfiguration"):
    +		return &applyconfigurationsflowcontrolv1.PriorityLevelConfigurationApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("PriorityLevelConfigurationCondition"):
    +		return &applyconfigurationsflowcontrolv1.PriorityLevelConfigurationConditionApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("PriorityLevelConfigurationReference"):
    +		return &applyconfigurationsflowcontrolv1.PriorityLevelConfigurationReferenceApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("PriorityLevelConfigurationSpec"):
    +		return &applyconfigurationsflowcontrolv1.PriorityLevelConfigurationSpecApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("PriorityLevelConfigurationStatus"):
    +		return &applyconfigurationsflowcontrolv1.PriorityLevelConfigurationStatusApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("QueuingConfiguration"):
    +		return &applyconfigurationsflowcontrolv1.QueuingConfigurationApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("ResourcePolicyRule"):
    +		return &applyconfigurationsflowcontrolv1.ResourcePolicyRuleApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("ServiceAccountSubject"):
    +		return &applyconfigurationsflowcontrolv1.ServiceAccountSubjectApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("Subject"):
    +		return &applyconfigurationsflowcontrolv1.SubjectApplyConfiguration{}
    +	case flowcontrolv1.SchemeGroupVersion.WithKind("UserSubject"):
    +		return &applyconfigurationsflowcontrolv1.UserSubjectApplyConfiguration{}
    +
    +		// Group=flowcontrol.apiserver.k8s.io, Version=v1beta1
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("ExemptPriorityLevelConfiguration"):
    +		return &applyconfigurationsflowcontrolv1beta1.ExemptPriorityLevelConfigurationApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("FlowDistinguisherMethod"):
    +		return &applyconfigurationsflowcontrolv1beta1.FlowDistinguisherMethodApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("FlowSchema"):
    +		return &applyconfigurationsflowcontrolv1beta1.FlowSchemaApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("FlowSchemaCondition"):
    +		return &applyconfigurationsflowcontrolv1beta1.FlowSchemaConditionApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("FlowSchemaSpec"):
    +		return &applyconfigurationsflowcontrolv1beta1.FlowSchemaSpecApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("FlowSchemaStatus"):
    +		return &applyconfigurationsflowcontrolv1beta1.FlowSchemaStatusApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("GroupSubject"):
    +		return &applyconfigurationsflowcontrolv1beta1.GroupSubjectApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("LimitedPriorityLevelConfiguration"):
    +		return &applyconfigurationsflowcontrolv1beta1.LimitedPriorityLevelConfigurationApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("LimitResponse"):
    +		return &applyconfigurationsflowcontrolv1beta1.LimitResponseApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("NonResourcePolicyRule"):
    +		return &applyconfigurationsflowcontrolv1beta1.NonResourcePolicyRuleApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("PolicyRulesWithSubjects"):
    +		return &applyconfigurationsflowcontrolv1beta1.PolicyRulesWithSubjectsApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("PriorityLevelConfiguration"):
    +		return &applyconfigurationsflowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("PriorityLevelConfigurationCondition"):
    +		return &applyconfigurationsflowcontrolv1beta1.PriorityLevelConfigurationConditionApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("PriorityLevelConfigurationReference"):
    +		return &applyconfigurationsflowcontrolv1beta1.PriorityLevelConfigurationReferenceApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("PriorityLevelConfigurationSpec"):
    +		return &applyconfigurationsflowcontrolv1beta1.PriorityLevelConfigurationSpecApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("PriorityLevelConfigurationStatus"):
    +		return &applyconfigurationsflowcontrolv1beta1.PriorityLevelConfigurationStatusApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("QueuingConfiguration"):
    +		return &applyconfigurationsflowcontrolv1beta1.QueuingConfigurationApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("ResourcePolicyRule"):
    +		return &applyconfigurationsflowcontrolv1beta1.ResourcePolicyRuleApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("ServiceAccountSubject"):
    +		return &applyconfigurationsflowcontrolv1beta1.ServiceAccountSubjectApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("Subject"):
    +		return &applyconfigurationsflowcontrolv1beta1.SubjectApplyConfiguration{}
    +	case flowcontrolv1beta1.SchemeGroupVersion.WithKind("UserSubject"):
    +		return &applyconfigurationsflowcontrolv1beta1.UserSubjectApplyConfiguration{}
    +
    +		// Group=flowcontrol.apiserver.k8s.io, Version=v1beta2
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("ExemptPriorityLevelConfiguration"):
    +		return &applyconfigurationsflowcontrolv1beta2.ExemptPriorityLevelConfigurationApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("FlowDistinguisherMethod"):
    +		return &applyconfigurationsflowcontrolv1beta2.FlowDistinguisherMethodApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("FlowSchema"):
    +		return &applyconfigurationsflowcontrolv1beta2.FlowSchemaApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("FlowSchemaCondition"):
    +		return &applyconfigurationsflowcontrolv1beta2.FlowSchemaConditionApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("FlowSchemaSpec"):
    +		return &applyconfigurationsflowcontrolv1beta2.FlowSchemaSpecApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("FlowSchemaStatus"):
    +		return &applyconfigurationsflowcontrolv1beta2.FlowSchemaStatusApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("GroupSubject"):
    +		return &applyconfigurationsflowcontrolv1beta2.GroupSubjectApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("LimitedPriorityLevelConfiguration"):
    +		return &applyconfigurationsflowcontrolv1beta2.LimitedPriorityLevelConfigurationApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("LimitResponse"):
    +		return &applyconfigurationsflowcontrolv1beta2.LimitResponseApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("NonResourcePolicyRule"):
    +		return &applyconfigurationsflowcontrolv1beta2.NonResourcePolicyRuleApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("PolicyRulesWithSubjects"):
    +		return &applyconfigurationsflowcontrolv1beta2.PolicyRulesWithSubjectsApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("PriorityLevelConfiguration"):
    +		return &applyconfigurationsflowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("PriorityLevelConfigurationCondition"):
    +		return &applyconfigurationsflowcontrolv1beta2.PriorityLevelConfigurationConditionApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("PriorityLevelConfigurationReference"):
    +		return &applyconfigurationsflowcontrolv1beta2.PriorityLevelConfigurationReferenceApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("PriorityLevelConfigurationSpec"):
    +		return &applyconfigurationsflowcontrolv1beta2.PriorityLevelConfigurationSpecApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("PriorityLevelConfigurationStatus"):
    +		return &applyconfigurationsflowcontrolv1beta2.PriorityLevelConfigurationStatusApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("QueuingConfiguration"):
    +		return &applyconfigurationsflowcontrolv1beta2.QueuingConfigurationApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("ResourcePolicyRule"):
    +		return &applyconfigurationsflowcontrolv1beta2.ResourcePolicyRuleApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("ServiceAccountSubject"):
    +		return &applyconfigurationsflowcontrolv1beta2.ServiceAccountSubjectApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("Subject"):
    +		return &applyconfigurationsflowcontrolv1beta2.SubjectApplyConfiguration{}
    +	case flowcontrolv1beta2.SchemeGroupVersion.WithKind("UserSubject"):
    +		return &applyconfigurationsflowcontrolv1beta2.UserSubjectApplyConfiguration{}
    +
    +		// Group=flowcontrol.apiserver.k8s.io, Version=v1beta3
    +	case v1beta3.SchemeGroupVersion.WithKind("ExemptPriorityLevelConfiguration"):
    +		return &flowcontrolv1beta3.ExemptPriorityLevelConfigurationApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("FlowDistinguisherMethod"):
    +		return &flowcontrolv1beta3.FlowDistinguisherMethodApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("FlowSchema"):
    +		return &flowcontrolv1beta3.FlowSchemaApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("FlowSchemaCondition"):
    +		return &flowcontrolv1beta3.FlowSchemaConditionApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("FlowSchemaSpec"):
    +		return &flowcontrolv1beta3.FlowSchemaSpecApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("FlowSchemaStatus"):
    +		return &flowcontrolv1beta3.FlowSchemaStatusApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("GroupSubject"):
    +		return &flowcontrolv1beta3.GroupSubjectApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("LimitedPriorityLevelConfiguration"):
    +		return &flowcontrolv1beta3.LimitedPriorityLevelConfigurationApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("LimitResponse"):
    +		return &flowcontrolv1beta3.LimitResponseApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("NonResourcePolicyRule"):
    +		return &flowcontrolv1beta3.NonResourcePolicyRuleApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("PolicyRulesWithSubjects"):
    +		return &flowcontrolv1beta3.PolicyRulesWithSubjectsApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("PriorityLevelConfiguration"):
    +		return &flowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("PriorityLevelConfigurationCondition"):
    +		return &flowcontrolv1beta3.PriorityLevelConfigurationConditionApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("PriorityLevelConfigurationReference"):
    +		return &flowcontrolv1beta3.PriorityLevelConfigurationReferenceApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("PriorityLevelConfigurationSpec"):
    +		return &flowcontrolv1beta3.PriorityLevelConfigurationSpecApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("PriorityLevelConfigurationStatus"):
    +		return &flowcontrolv1beta3.PriorityLevelConfigurationStatusApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("QueuingConfiguration"):
    +		return &flowcontrolv1beta3.QueuingConfigurationApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("ResourcePolicyRule"):
    +		return &flowcontrolv1beta3.ResourcePolicyRuleApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("ServiceAccountSubject"):
    +		return &flowcontrolv1beta3.ServiceAccountSubjectApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("Subject"):
    +		return &flowcontrolv1beta3.SubjectApplyConfiguration{}
    +	case v1beta3.SchemeGroupVersion.WithKind("UserSubject"):
    +		return &flowcontrolv1beta3.UserSubjectApplyConfiguration{}
    +
    +		// Group=imagepolicy.k8s.io, Version=v1alpha1
    +	case imagepolicyv1alpha1.SchemeGroupVersion.WithKind("ImageReview"):
    +		return &applyconfigurationsimagepolicyv1alpha1.ImageReviewApplyConfiguration{}
    +	case imagepolicyv1alpha1.SchemeGroupVersion.WithKind("ImageReviewContainerSpec"):
    +		return &applyconfigurationsimagepolicyv1alpha1.ImageReviewContainerSpecApplyConfiguration{}
    +	case imagepolicyv1alpha1.SchemeGroupVersion.WithKind("ImageReviewSpec"):
    +		return &applyconfigurationsimagepolicyv1alpha1.ImageReviewSpecApplyConfiguration{}
    +	case imagepolicyv1alpha1.SchemeGroupVersion.WithKind("ImageReviewStatus"):
    +		return &applyconfigurationsimagepolicyv1alpha1.ImageReviewStatusApplyConfiguration{}
    +
    +		// Group=internal.apiserver.k8s.io, Version=v1alpha1
    +	case apiserverinternalv1alpha1.SchemeGroupVersion.WithKind("ServerStorageVersion"):
    +		return &applyconfigurationsapiserverinternalv1alpha1.ServerStorageVersionApplyConfiguration{}
    +	case apiserverinternalv1alpha1.SchemeGroupVersion.WithKind("StorageVersion"):
    +		return &applyconfigurationsapiserverinternalv1alpha1.StorageVersionApplyConfiguration{}
    +	case apiserverinternalv1alpha1.SchemeGroupVersion.WithKind("StorageVersionCondition"):
    +		return &applyconfigurationsapiserverinternalv1alpha1.StorageVersionConditionApplyConfiguration{}
    +	case apiserverinternalv1alpha1.SchemeGroupVersion.WithKind("StorageVersionStatus"):
    +		return &applyconfigurationsapiserverinternalv1alpha1.StorageVersionStatusApplyConfiguration{}
    +
    +		// Group=meta.k8s.io, Version=v1
    +	case metav1.SchemeGroupVersion.WithKind("Condition"):
    +		return &applyconfigurationsmetav1.ConditionApplyConfiguration{}
    +	case metav1.SchemeGroupVersion.WithKind("DeleteOptions"):
    +		return &applyconfigurationsmetav1.DeleteOptionsApplyConfiguration{}
    +	case metav1.SchemeGroupVersion.WithKind("LabelSelector"):
    +		return &applyconfigurationsmetav1.LabelSelectorApplyConfiguration{}
    +	case metav1.SchemeGroupVersion.WithKind("LabelSelectorRequirement"):
    +		return &applyconfigurationsmetav1.LabelSelectorRequirementApplyConfiguration{}
    +	case metav1.SchemeGroupVersion.WithKind("ManagedFieldsEntry"):
    +		return &applyconfigurationsmetav1.ManagedFieldsEntryApplyConfiguration{}
    +	case metav1.SchemeGroupVersion.WithKind("ObjectMeta"):
    +		return &applyconfigurationsmetav1.ObjectMetaApplyConfiguration{}
    +	case metav1.SchemeGroupVersion.WithKind("OwnerReference"):
    +		return &applyconfigurationsmetav1.OwnerReferenceApplyConfiguration{}
    +	case metav1.SchemeGroupVersion.WithKind("Preconditions"):
    +		return &applyconfigurationsmetav1.PreconditionsApplyConfiguration{}
    +	case metav1.SchemeGroupVersion.WithKind("TypeMeta"):
    +		return &applyconfigurationsmetav1.TypeMetaApplyConfiguration{}
    +
    +		// Group=networking.k8s.io, Version=v1
    +	case networkingv1.SchemeGroupVersion.WithKind("HTTPIngressPath"):
    +		return &applyconfigurationsnetworkingv1.HTTPIngressPathApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("HTTPIngressRuleValue"):
    +		return &applyconfigurationsnetworkingv1.HTTPIngressRuleValueApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("Ingress"):
    +		return &applyconfigurationsnetworkingv1.IngressApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressBackend"):
    +		return &applyconfigurationsnetworkingv1.IngressBackendApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressClass"):
    +		return &applyconfigurationsnetworkingv1.IngressClassApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressClassParametersReference"):
    +		return &applyconfigurationsnetworkingv1.IngressClassParametersReferenceApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressClassSpec"):
    +		return &applyconfigurationsnetworkingv1.IngressClassSpecApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressLoadBalancerIngress"):
    +		return &applyconfigurationsnetworkingv1.IngressLoadBalancerIngressApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressLoadBalancerStatus"):
    +		return &applyconfigurationsnetworkingv1.IngressLoadBalancerStatusApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressPortStatus"):
    +		return &applyconfigurationsnetworkingv1.IngressPortStatusApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressRule"):
    +		return &applyconfigurationsnetworkingv1.IngressRuleApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressRuleValue"):
    +		return &applyconfigurationsnetworkingv1.IngressRuleValueApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressServiceBackend"):
    +		return &applyconfigurationsnetworkingv1.IngressServiceBackendApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressSpec"):
    +		return &applyconfigurationsnetworkingv1.IngressSpecApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressStatus"):
    +		return &applyconfigurationsnetworkingv1.IngressStatusApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IngressTLS"):
    +		return &applyconfigurationsnetworkingv1.IngressTLSApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("IPBlock"):
    +		return &applyconfigurationsnetworkingv1.IPBlockApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("NetworkPolicy"):
    +		return &applyconfigurationsnetworkingv1.NetworkPolicyApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("NetworkPolicyEgressRule"):
    +		return &applyconfigurationsnetworkingv1.NetworkPolicyEgressRuleApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("NetworkPolicyIngressRule"):
    +		return &applyconfigurationsnetworkingv1.NetworkPolicyIngressRuleApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("NetworkPolicyPeer"):
    +		return &applyconfigurationsnetworkingv1.NetworkPolicyPeerApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("NetworkPolicyPort"):
    +		return &applyconfigurationsnetworkingv1.NetworkPolicyPortApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("NetworkPolicySpec"):
    +		return &applyconfigurationsnetworkingv1.NetworkPolicySpecApplyConfiguration{}
    +	case networkingv1.SchemeGroupVersion.WithKind("ServiceBackendPort"):
    +		return &applyconfigurationsnetworkingv1.ServiceBackendPortApplyConfiguration{}
    +
    +		// Group=networking.k8s.io, Version=v1alpha1
    +	case networkingv1alpha1.SchemeGroupVersion.WithKind("IPAddress"):
    +		return &applyconfigurationsnetworkingv1alpha1.IPAddressApplyConfiguration{}
    +	case networkingv1alpha1.SchemeGroupVersion.WithKind("IPAddressSpec"):
    +		return &applyconfigurationsnetworkingv1alpha1.IPAddressSpecApplyConfiguration{}
    +	case networkingv1alpha1.SchemeGroupVersion.WithKind("ParentReference"):
    +		return &applyconfigurationsnetworkingv1alpha1.ParentReferenceApplyConfiguration{}
    +	case networkingv1alpha1.SchemeGroupVersion.WithKind("ServiceCIDR"):
    +		return &applyconfigurationsnetworkingv1alpha1.ServiceCIDRApplyConfiguration{}
    +	case networkingv1alpha1.SchemeGroupVersion.WithKind("ServiceCIDRSpec"):
    +		return &applyconfigurationsnetworkingv1alpha1.ServiceCIDRSpecApplyConfiguration{}
    +	case networkingv1alpha1.SchemeGroupVersion.WithKind("ServiceCIDRStatus"):
    +		return &applyconfigurationsnetworkingv1alpha1.ServiceCIDRStatusApplyConfiguration{}
    +
    +		// Group=networking.k8s.io, Version=v1beta1
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("HTTPIngressPath"):
    +		return &applyconfigurationsnetworkingv1beta1.HTTPIngressPathApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("HTTPIngressRuleValue"):
    +		return &applyconfigurationsnetworkingv1beta1.HTTPIngressRuleValueApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("Ingress"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressBackend"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressBackendApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressClass"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressClassApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressClassParametersReference"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressClassParametersReferenceApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressClassSpec"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressClassSpecApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressLoadBalancerIngress"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressLoadBalancerIngressApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressLoadBalancerStatus"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressLoadBalancerStatusApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressPortStatus"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressPortStatusApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressRule"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressRuleApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressRuleValue"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressRuleValueApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressSpec"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressSpecApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressStatus"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressStatusApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IngressTLS"):
    +		return &applyconfigurationsnetworkingv1beta1.IngressTLSApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IPAddress"):
    +		return &applyconfigurationsnetworkingv1beta1.IPAddressApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("IPAddressSpec"):
    +		return &applyconfigurationsnetworkingv1beta1.IPAddressSpecApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("ParentReference"):
    +		return &applyconfigurationsnetworkingv1beta1.ParentReferenceApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("ServiceCIDR"):
    +		return &applyconfigurationsnetworkingv1beta1.ServiceCIDRApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("ServiceCIDRSpec"):
    +		return &applyconfigurationsnetworkingv1beta1.ServiceCIDRSpecApplyConfiguration{}
    +	case networkingv1beta1.SchemeGroupVersion.WithKind("ServiceCIDRStatus"):
    +		return &applyconfigurationsnetworkingv1beta1.ServiceCIDRStatusApplyConfiguration{}
    +
    +		// Group=node.k8s.io, Version=v1
    +	case nodev1.SchemeGroupVersion.WithKind("Overhead"):
    +		return &applyconfigurationsnodev1.OverheadApplyConfiguration{}
    +	case nodev1.SchemeGroupVersion.WithKind("RuntimeClass"):
    +		return &applyconfigurationsnodev1.RuntimeClassApplyConfiguration{}
    +	case nodev1.SchemeGroupVersion.WithKind("Scheduling"):
    +		return &applyconfigurationsnodev1.SchedulingApplyConfiguration{}
    +
    +		// Group=node.k8s.io, Version=v1alpha1
    +	case nodev1alpha1.SchemeGroupVersion.WithKind("Overhead"):
    +		return &applyconfigurationsnodev1alpha1.OverheadApplyConfiguration{}
    +	case nodev1alpha1.SchemeGroupVersion.WithKind("RuntimeClass"):
    +		return &applyconfigurationsnodev1alpha1.RuntimeClassApplyConfiguration{}
    +	case nodev1alpha1.SchemeGroupVersion.WithKind("RuntimeClassSpec"):
    +		return &applyconfigurationsnodev1alpha1.RuntimeClassSpecApplyConfiguration{}
    +	case nodev1alpha1.SchemeGroupVersion.WithKind("Scheduling"):
    +		return &applyconfigurationsnodev1alpha1.SchedulingApplyConfiguration{}
    +
    +		// Group=node.k8s.io, Version=v1beta1
    +	case nodev1beta1.SchemeGroupVersion.WithKind("Overhead"):
    +		return &applyconfigurationsnodev1beta1.OverheadApplyConfiguration{}
    +	case nodev1beta1.SchemeGroupVersion.WithKind("RuntimeClass"):
    +		return &applyconfigurationsnodev1beta1.RuntimeClassApplyConfiguration{}
    +	case nodev1beta1.SchemeGroupVersion.WithKind("Scheduling"):
    +		return &applyconfigurationsnodev1beta1.SchedulingApplyConfiguration{}
    +
    +		// Group=policy, Version=v1
    +	case policyv1.SchemeGroupVersion.WithKind("Eviction"):
    +		return &applyconfigurationspolicyv1.EvictionApplyConfiguration{}
    +	case policyv1.SchemeGroupVersion.WithKind("PodDisruptionBudget"):
    +		return &applyconfigurationspolicyv1.PodDisruptionBudgetApplyConfiguration{}
    +	case policyv1.SchemeGroupVersion.WithKind("PodDisruptionBudgetSpec"):
    +		return &applyconfigurationspolicyv1.PodDisruptionBudgetSpecApplyConfiguration{}
    +	case policyv1.SchemeGroupVersion.WithKind("PodDisruptionBudgetStatus"):
    +		return &applyconfigurationspolicyv1.PodDisruptionBudgetStatusApplyConfiguration{}
    +
    +		// Group=policy, Version=v1beta1
    +	case policyv1beta1.SchemeGroupVersion.WithKind("Eviction"):
    +		return &applyconfigurationspolicyv1beta1.EvictionApplyConfiguration{}
    +	case policyv1beta1.SchemeGroupVersion.WithKind("PodDisruptionBudget"):
    +		return &applyconfigurationspolicyv1beta1.PodDisruptionBudgetApplyConfiguration{}
    +	case policyv1beta1.SchemeGroupVersion.WithKind("PodDisruptionBudgetSpec"):
    +		return &applyconfigurationspolicyv1beta1.PodDisruptionBudgetSpecApplyConfiguration{}
    +	case policyv1beta1.SchemeGroupVersion.WithKind("PodDisruptionBudgetStatus"):
    +		return &applyconfigurationspolicyv1beta1.PodDisruptionBudgetStatusApplyConfiguration{}
    +
    +		// Group=rbac.authorization.k8s.io, Version=v1
    +	case rbacv1.SchemeGroupVersion.WithKind("AggregationRule"):
    +		return &applyconfigurationsrbacv1.AggregationRuleApplyConfiguration{}
    +	case rbacv1.SchemeGroupVersion.WithKind("ClusterRole"):
    +		return &applyconfigurationsrbacv1.ClusterRoleApplyConfiguration{}
    +	case rbacv1.SchemeGroupVersion.WithKind("ClusterRoleBinding"):
    +		return &applyconfigurationsrbacv1.ClusterRoleBindingApplyConfiguration{}
    +	case rbacv1.SchemeGroupVersion.WithKind("PolicyRule"):
    +		return &applyconfigurationsrbacv1.PolicyRuleApplyConfiguration{}
    +	case rbacv1.SchemeGroupVersion.WithKind("Role"):
    +		return &applyconfigurationsrbacv1.RoleApplyConfiguration{}
    +	case rbacv1.SchemeGroupVersion.WithKind("RoleBinding"):
    +		return &applyconfigurationsrbacv1.RoleBindingApplyConfiguration{}
    +	case rbacv1.SchemeGroupVersion.WithKind("RoleRef"):
    +		return &applyconfigurationsrbacv1.RoleRefApplyConfiguration{}
    +	case rbacv1.SchemeGroupVersion.WithKind("Subject"):
    +		return &applyconfigurationsrbacv1.SubjectApplyConfiguration{}
    +
    +		// Group=rbac.authorization.k8s.io, Version=v1alpha1
    +	case rbacv1alpha1.SchemeGroupVersion.WithKind("AggregationRule"):
    +		return &applyconfigurationsrbacv1alpha1.AggregationRuleApplyConfiguration{}
    +	case rbacv1alpha1.SchemeGroupVersion.WithKind("ClusterRole"):
    +		return &applyconfigurationsrbacv1alpha1.ClusterRoleApplyConfiguration{}
    +	case rbacv1alpha1.SchemeGroupVersion.WithKind("ClusterRoleBinding"):
    +		return &applyconfigurationsrbacv1alpha1.ClusterRoleBindingApplyConfiguration{}
    +	case rbacv1alpha1.SchemeGroupVersion.WithKind("PolicyRule"):
    +		return &applyconfigurationsrbacv1alpha1.PolicyRuleApplyConfiguration{}
    +	case rbacv1alpha1.SchemeGroupVersion.WithKind("Role"):
    +		return &applyconfigurationsrbacv1alpha1.RoleApplyConfiguration{}
    +	case rbacv1alpha1.SchemeGroupVersion.WithKind("RoleBinding"):
    +		return &applyconfigurationsrbacv1alpha1.RoleBindingApplyConfiguration{}
    +	case rbacv1alpha1.SchemeGroupVersion.WithKind("RoleRef"):
    +		return &applyconfigurationsrbacv1alpha1.RoleRefApplyConfiguration{}
    +	case rbacv1alpha1.SchemeGroupVersion.WithKind("Subject"):
    +		return &applyconfigurationsrbacv1alpha1.SubjectApplyConfiguration{}
    +
    +		// Group=rbac.authorization.k8s.io, Version=v1beta1
    +	case rbacv1beta1.SchemeGroupVersion.WithKind("AggregationRule"):
    +		return &applyconfigurationsrbacv1beta1.AggregationRuleApplyConfiguration{}
    +	case rbacv1beta1.SchemeGroupVersion.WithKind("ClusterRole"):
    +		return &applyconfigurationsrbacv1beta1.ClusterRoleApplyConfiguration{}
    +	case rbacv1beta1.SchemeGroupVersion.WithKind("ClusterRoleBinding"):
    +		return &applyconfigurationsrbacv1beta1.ClusterRoleBindingApplyConfiguration{}
    +	case rbacv1beta1.SchemeGroupVersion.WithKind("PolicyRule"):
    +		return &applyconfigurationsrbacv1beta1.PolicyRuleApplyConfiguration{}
    +	case rbacv1beta1.SchemeGroupVersion.WithKind("Role"):
    +		return &applyconfigurationsrbacv1beta1.RoleApplyConfiguration{}
    +	case rbacv1beta1.SchemeGroupVersion.WithKind("RoleBinding"):
    +		return &applyconfigurationsrbacv1beta1.RoleBindingApplyConfiguration{}
    +	case rbacv1beta1.SchemeGroupVersion.WithKind("RoleRef"):
    +		return &applyconfigurationsrbacv1beta1.RoleRefApplyConfiguration{}
    +	case rbacv1beta1.SchemeGroupVersion.WithKind("Subject"):
    +		return &applyconfigurationsrbacv1beta1.SubjectApplyConfiguration{}
    +
    +		// Group=resource.k8s.io, Version=v1alpha3
    +	case v1alpha3.SchemeGroupVersion.WithKind("AllocatedDeviceStatus"):
    +		return &resourcev1alpha3.AllocatedDeviceStatusApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("AllocationResult"):
    +		return &resourcev1alpha3.AllocationResultApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("BasicDevice"):
    +		return &resourcev1alpha3.BasicDeviceApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("CELDeviceSelector"):
    +		return &resourcev1alpha3.CELDeviceSelectorApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("Device"):
    +		return &resourcev1alpha3.DeviceApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceAllocationConfiguration"):
    +		return &resourcev1alpha3.DeviceAllocationConfigurationApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceAllocationResult"):
    +		return &resourcev1alpha3.DeviceAllocationResultApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceAttribute"):
    +		return &resourcev1alpha3.DeviceAttributeApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceClaim"):
    +		return &resourcev1alpha3.DeviceClaimApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceClaimConfiguration"):
    +		return &resourcev1alpha3.DeviceClaimConfigurationApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceClass"):
    +		return &resourcev1alpha3.DeviceClassApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceClassConfiguration"):
    +		return &resourcev1alpha3.DeviceClassConfigurationApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceClassSpec"):
    +		return &resourcev1alpha3.DeviceClassSpecApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceConfiguration"):
    +		return &resourcev1alpha3.DeviceConfigurationApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceConstraint"):
    +		return &resourcev1alpha3.DeviceConstraintApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceRequest"):
    +		return &resourcev1alpha3.DeviceRequestApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceRequestAllocationResult"):
    +		return &resourcev1alpha3.DeviceRequestAllocationResultApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("DeviceSelector"):
    +		return &resourcev1alpha3.DeviceSelectorApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("NetworkDeviceData"):
    +		return &resourcev1alpha3.NetworkDeviceDataApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("OpaqueDeviceConfiguration"):
    +		return &resourcev1alpha3.OpaqueDeviceConfigurationApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("ResourceClaim"):
    +		return &resourcev1alpha3.ResourceClaimApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("ResourceClaimConsumerReference"):
    +		return &resourcev1alpha3.ResourceClaimConsumerReferenceApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("ResourceClaimSpec"):
    +		return &resourcev1alpha3.ResourceClaimSpecApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("ResourceClaimStatus"):
    +		return &resourcev1alpha3.ResourceClaimStatusApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("ResourceClaimTemplate"):
    +		return &resourcev1alpha3.ResourceClaimTemplateApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("ResourceClaimTemplateSpec"):
    +		return &resourcev1alpha3.ResourceClaimTemplateSpecApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("ResourcePool"):
    +		return &resourcev1alpha3.ResourcePoolApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("ResourceSlice"):
    +		return &resourcev1alpha3.ResourceSliceApplyConfiguration{}
    +	case v1alpha3.SchemeGroupVersion.WithKind("ResourceSliceSpec"):
    +		return &resourcev1alpha3.ResourceSliceSpecApplyConfiguration{}
    +
    +		// Group=resource.k8s.io, Version=v1beta1
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("AllocatedDeviceStatus"):
    +		return &applyconfigurationsresourcev1beta1.AllocatedDeviceStatusApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("AllocationResult"):
    +		return &applyconfigurationsresourcev1beta1.AllocationResultApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("BasicDevice"):
    +		return &applyconfigurationsresourcev1beta1.BasicDeviceApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("CELDeviceSelector"):
    +		return &applyconfigurationsresourcev1beta1.CELDeviceSelectorApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("Device"):
    +		return &applyconfigurationsresourcev1beta1.DeviceApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceAllocationConfiguration"):
    +		return &applyconfigurationsresourcev1beta1.DeviceAllocationConfigurationApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceAllocationResult"):
    +		return &applyconfigurationsresourcev1beta1.DeviceAllocationResultApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceAttribute"):
    +		return &applyconfigurationsresourcev1beta1.DeviceAttributeApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceCapacity"):
    +		return &applyconfigurationsresourcev1beta1.DeviceCapacityApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceClaim"):
    +		return &applyconfigurationsresourcev1beta1.DeviceClaimApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceClaimConfiguration"):
    +		return &applyconfigurationsresourcev1beta1.DeviceClaimConfigurationApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceClass"):
    +		return &applyconfigurationsresourcev1beta1.DeviceClassApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceClassConfiguration"):
    +		return &applyconfigurationsresourcev1beta1.DeviceClassConfigurationApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceClassSpec"):
    +		return &applyconfigurationsresourcev1beta1.DeviceClassSpecApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceConfiguration"):
    +		return &applyconfigurationsresourcev1beta1.DeviceConfigurationApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceConstraint"):
    +		return &applyconfigurationsresourcev1beta1.DeviceConstraintApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceRequest"):
    +		return &applyconfigurationsresourcev1beta1.DeviceRequestApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceRequestAllocationResult"):
    +		return &applyconfigurationsresourcev1beta1.DeviceRequestAllocationResultApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("DeviceSelector"):
    +		return &applyconfigurationsresourcev1beta1.DeviceSelectorApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("NetworkDeviceData"):
    +		return &applyconfigurationsresourcev1beta1.NetworkDeviceDataApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("OpaqueDeviceConfiguration"):
    +		return &applyconfigurationsresourcev1beta1.OpaqueDeviceConfigurationApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("ResourceClaim"):
    +		return &applyconfigurationsresourcev1beta1.ResourceClaimApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("ResourceClaimConsumerReference"):
    +		return &applyconfigurationsresourcev1beta1.ResourceClaimConsumerReferenceApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("ResourceClaimSpec"):
    +		return &applyconfigurationsresourcev1beta1.ResourceClaimSpecApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("ResourceClaimStatus"):
    +		return &applyconfigurationsresourcev1beta1.ResourceClaimStatusApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("ResourceClaimTemplate"):
    +		return &applyconfigurationsresourcev1beta1.ResourceClaimTemplateApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("ResourceClaimTemplateSpec"):
    +		return &applyconfigurationsresourcev1beta1.ResourceClaimTemplateSpecApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("ResourcePool"):
    +		return &applyconfigurationsresourcev1beta1.ResourcePoolApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("ResourceSlice"):
    +		return &applyconfigurationsresourcev1beta1.ResourceSliceApplyConfiguration{}
    +	case resourcev1beta1.SchemeGroupVersion.WithKind("ResourceSliceSpec"):
    +		return &applyconfigurationsresourcev1beta1.ResourceSliceSpecApplyConfiguration{}
    +
    +		// Group=scheduling.k8s.io, Version=v1
    +	case schedulingv1.SchemeGroupVersion.WithKind("PriorityClass"):
    +		return &applyconfigurationsschedulingv1.PriorityClassApplyConfiguration{}
    +
    +		// Group=scheduling.k8s.io, Version=v1alpha1
    +	case schedulingv1alpha1.SchemeGroupVersion.WithKind("PriorityClass"):
    +		return &applyconfigurationsschedulingv1alpha1.PriorityClassApplyConfiguration{}
    +
    +		// Group=scheduling.k8s.io, Version=v1beta1
    +	case schedulingv1beta1.SchemeGroupVersion.WithKind("PriorityClass"):
    +		return &applyconfigurationsschedulingv1beta1.PriorityClassApplyConfiguration{}
    +
    +		// Group=storage.k8s.io, Version=v1
    +	case storagev1.SchemeGroupVersion.WithKind("CSIDriver"):
    +		return &applyconfigurationsstoragev1.CSIDriverApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("CSIDriverSpec"):
    +		return &applyconfigurationsstoragev1.CSIDriverSpecApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("CSINode"):
    +		return &applyconfigurationsstoragev1.CSINodeApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("CSINodeDriver"):
    +		return &applyconfigurationsstoragev1.CSINodeDriverApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("CSINodeSpec"):
    +		return &applyconfigurationsstoragev1.CSINodeSpecApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("CSIStorageCapacity"):
    +		return &applyconfigurationsstoragev1.CSIStorageCapacityApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("StorageClass"):
    +		return &applyconfigurationsstoragev1.StorageClassApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("TokenRequest"):
    +		return &applyconfigurationsstoragev1.TokenRequestApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("VolumeAttachment"):
    +		return &applyconfigurationsstoragev1.VolumeAttachmentApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("VolumeAttachmentSource"):
    +		return &applyconfigurationsstoragev1.VolumeAttachmentSourceApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("VolumeAttachmentSpec"):
    +		return &applyconfigurationsstoragev1.VolumeAttachmentSpecApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("VolumeAttachmentStatus"):
    +		return &applyconfigurationsstoragev1.VolumeAttachmentStatusApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("VolumeError"):
    +		return &applyconfigurationsstoragev1.VolumeErrorApplyConfiguration{}
    +	case storagev1.SchemeGroupVersion.WithKind("VolumeNodeResources"):
    +		return &applyconfigurationsstoragev1.VolumeNodeResourcesApplyConfiguration{}
    +
    +		// Group=storage.k8s.io, Version=v1alpha1
    +	case storagev1alpha1.SchemeGroupVersion.WithKind("CSIStorageCapacity"):
    +		return &applyconfigurationsstoragev1alpha1.CSIStorageCapacityApplyConfiguration{}
    +	case storagev1alpha1.SchemeGroupVersion.WithKind("VolumeAttachment"):
    +		return &applyconfigurationsstoragev1alpha1.VolumeAttachmentApplyConfiguration{}
    +	case storagev1alpha1.SchemeGroupVersion.WithKind("VolumeAttachmentSource"):
    +		return &applyconfigurationsstoragev1alpha1.VolumeAttachmentSourceApplyConfiguration{}
    +	case storagev1alpha1.SchemeGroupVersion.WithKind("VolumeAttachmentSpec"):
    +		return &applyconfigurationsstoragev1alpha1.VolumeAttachmentSpecApplyConfiguration{}
    +	case storagev1alpha1.SchemeGroupVersion.WithKind("VolumeAttachmentStatus"):
    +		return &applyconfigurationsstoragev1alpha1.VolumeAttachmentStatusApplyConfiguration{}
    +	case storagev1alpha1.SchemeGroupVersion.WithKind("VolumeAttributesClass"):
    +		return &applyconfigurationsstoragev1alpha1.VolumeAttributesClassApplyConfiguration{}
    +	case storagev1alpha1.SchemeGroupVersion.WithKind("VolumeError"):
    +		return &applyconfigurationsstoragev1alpha1.VolumeErrorApplyConfiguration{}
    +
    +		// Group=storage.k8s.io, Version=v1beta1
    +	case storagev1beta1.SchemeGroupVersion.WithKind("CSIDriver"):
    +		return &applyconfigurationsstoragev1beta1.CSIDriverApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("CSIDriverSpec"):
    +		return &applyconfigurationsstoragev1beta1.CSIDriverSpecApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("CSINode"):
    +		return &applyconfigurationsstoragev1beta1.CSINodeApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("CSINodeDriver"):
    +		return &applyconfigurationsstoragev1beta1.CSINodeDriverApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("CSINodeSpec"):
    +		return &applyconfigurationsstoragev1beta1.CSINodeSpecApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("CSIStorageCapacity"):
    +		return &applyconfigurationsstoragev1beta1.CSIStorageCapacityApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("StorageClass"):
    +		return &applyconfigurationsstoragev1beta1.StorageClassApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("TokenRequest"):
    +		return &applyconfigurationsstoragev1beta1.TokenRequestApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("VolumeAttachment"):
    +		return &applyconfigurationsstoragev1beta1.VolumeAttachmentApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("VolumeAttachmentSource"):
    +		return &applyconfigurationsstoragev1beta1.VolumeAttachmentSourceApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("VolumeAttachmentSpec"):
    +		return &applyconfigurationsstoragev1beta1.VolumeAttachmentSpecApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("VolumeAttachmentStatus"):
    +		return &applyconfigurationsstoragev1beta1.VolumeAttachmentStatusApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("VolumeAttributesClass"):
    +		return &applyconfigurationsstoragev1beta1.VolumeAttributesClassApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("VolumeError"):
    +		return &applyconfigurationsstoragev1beta1.VolumeErrorApplyConfiguration{}
    +	case storagev1beta1.SchemeGroupVersion.WithKind("VolumeNodeResources"):
    +		return &applyconfigurationsstoragev1beta1.VolumeNodeResourcesApplyConfiguration{}
    +
    +		// Group=storagemigration.k8s.io, Version=v1alpha1
    +	case storagemigrationv1alpha1.SchemeGroupVersion.WithKind("GroupVersionResource"):
    +		return &applyconfigurationsstoragemigrationv1alpha1.GroupVersionResourceApplyConfiguration{}
    +	case storagemigrationv1alpha1.SchemeGroupVersion.WithKind("MigrationCondition"):
    +		return &applyconfigurationsstoragemigrationv1alpha1.MigrationConditionApplyConfiguration{}
    +	case storagemigrationv1alpha1.SchemeGroupVersion.WithKind("StorageVersionMigration"):
    +		return &applyconfigurationsstoragemigrationv1alpha1.StorageVersionMigrationApplyConfiguration{}
    +	case storagemigrationv1alpha1.SchemeGroupVersion.WithKind("StorageVersionMigrationSpec"):
    +		return &applyconfigurationsstoragemigrationv1alpha1.StorageVersionMigrationSpecApplyConfiguration{}
    +	case storagemigrationv1alpha1.SchemeGroupVersion.WithKind("StorageVersionMigrationStatus"):
    +		return &applyconfigurationsstoragemigrationv1alpha1.StorageVersionMigrationStatusApplyConfiguration{}
    +
    +	}
    +	return nil
    +}
    +
    +func NewTypeConverter(scheme *runtime.Scheme) *testing.TypeConverter {
    +	return &testing.TypeConverter{Scheme: scheme, TypeResolver: internal.Parser()}
    +}
    diff --git a/vendor/k8s.io/client-go/discovery/aggregated_discovery.go b/vendor/k8s.io/client-go/discovery/aggregated_discovery.go
    index f72c42051b91..f5eaaedab3ae 100644
    --- a/vendor/k8s.io/client-go/discovery/aggregated_discovery.go
    +++ b/vendor/k8s.io/client-go/discovery/aggregated_discovery.go
    @@ -19,7 +19,8 @@ package discovery
     import (
     	"fmt"
     
    -	apidiscovery "k8s.io/api/apidiscovery/v2beta1"
    +	apidiscovery "k8s.io/api/apidiscovery/v2"
    +	apidiscoveryv2beta1 "k8s.io/api/apidiscovery/v2beta1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	"k8s.io/apimachinery/pkg/runtime/schema"
     )
    @@ -154,3 +155,124 @@ func convertAPISubresource(parent metav1.APIResource, in apidiscovery.APISubreso
     	result.Verbs = in.Verbs
     	return result, nil
     }
    +
    +// Please note the functions below will be removed in v1.33. They facilitate conversion
    +// between the deprecated type apidiscoveryv2beta1.APIGroupDiscoveryList.
    +
    +// SplitGroupsAndResourcesV2Beta1 transforms "aggregated" discovery top-level structure into
    +// the previous "unaggregated" discovery groups and resources.
    +// Deprecated: Please use SplitGroupsAndResources
    +func SplitGroupsAndResourcesV2Beta1(aggregatedGroups apidiscoveryv2beta1.APIGroupDiscoveryList) (
    +	*metav1.APIGroupList,
    +	map[schema.GroupVersion]*metav1.APIResourceList,
    +	map[schema.GroupVersion]error) {
    +	// Aggregated group list will contain the entirety of discovery, including
    +	// groups, versions, and resources. GroupVersions marked "stale" are failed.
    +	groups := []*metav1.APIGroup{}
    +	failedGVs := map[schema.GroupVersion]error{}
    +	resourcesByGV := map[schema.GroupVersion]*metav1.APIResourceList{}
    +	for _, aggGroup := range aggregatedGroups.Items {
    +		group, resources, failed := convertAPIGroupv2beta1(aggGroup)
    +		groups = append(groups, group)
    +		for gv, resourceList := range resources {
    +			resourcesByGV[gv] = resourceList
    +		}
    +		for gv, err := range failed {
    +			failedGVs[gv] = err
    +		}
    +	}
    +	// Transform slice of groups to group list before returning.
    +	groupList := &metav1.APIGroupList{}
    +	groupList.Groups = make([]metav1.APIGroup, 0, len(groups))
    +	for _, group := range groups {
    +		groupList.Groups = append(groupList.Groups, *group)
    +	}
    +	return groupList, resourcesByGV, failedGVs
    +}
    +
    +// convertAPIGroupv2beta1 tranforms an "aggregated" APIGroupDiscovery to an "legacy" APIGroup,
    +// also returning the map of APIResourceList for resources within GroupVersions.
    +func convertAPIGroupv2beta1(g apidiscoveryv2beta1.APIGroupDiscovery) (
    +	*metav1.APIGroup,
    +	map[schema.GroupVersion]*metav1.APIResourceList,
    +	map[schema.GroupVersion]error) {
    +	// Iterate through versions to convert to group and resources.
    +	group := &metav1.APIGroup{}
    +	gvResources := map[schema.GroupVersion]*metav1.APIResourceList{}
    +	failedGVs := map[schema.GroupVersion]error{}
    +	group.Name = g.ObjectMeta.Name
    +	for _, v := range g.Versions {
    +		gv := schema.GroupVersion{Group: g.Name, Version: v.Version}
    +		if v.Freshness == apidiscoveryv2beta1.DiscoveryFreshnessStale {
    +			failedGVs[gv] = StaleGroupVersionError{gv: gv}
    +			continue
    +		}
    +		version := metav1.GroupVersionForDiscovery{}
    +		version.GroupVersion = gv.String()
    +		version.Version = v.Version
    +		group.Versions = append(group.Versions, version)
    +		// PreferredVersion is first non-stale Version
    +		if group.PreferredVersion == (metav1.GroupVersionForDiscovery{}) {
    +			group.PreferredVersion = version
    +		}
    +		resourceList := &metav1.APIResourceList{}
    +		resourceList.GroupVersion = gv.String()
    +		for _, r := range v.Resources {
    +			resource, err := convertAPIResourcev2beta1(r)
    +			if err == nil {
    +				resourceList.APIResources = append(resourceList.APIResources, resource)
    +			}
    +			// Subresources field in new format get transformed into full APIResources.
    +			// It is possible a partial result with an error was returned to be used
    +			// as the parent resource for the subresource.
    +			for _, subresource := range r.Subresources {
    +				sr, err := convertAPISubresourcev2beta1(resource, subresource)
    +				if err == nil {
    +					resourceList.APIResources = append(resourceList.APIResources, sr)
    +				}
    +			}
    +		}
    +		gvResources[gv] = resourceList
    +	}
    +	return group, gvResources, failedGVs
    +}
    +
    +// convertAPIResource tranforms a APIResourceDiscovery to an APIResource. We are
    +// resilient to missing GVK, since this resource might be the parent resource
    +// for a subresource. If the parent is missing a GVK, it is not returned in
    +// discovery, and the subresource MUST have the GVK.
    +func convertAPIResourcev2beta1(in apidiscoveryv2beta1.APIResourceDiscovery) (metav1.APIResource, error) {
    +	result := metav1.APIResource{
    +		Name:         in.Resource,
    +		SingularName: in.SingularResource,
    +		Namespaced:   in.Scope == apidiscoveryv2beta1.ScopeNamespace,
    +		Verbs:        in.Verbs,
    +		ShortNames:   in.ShortNames,
    +		Categories:   in.Categories,
    +	}
    +	// Can return partial result with error, which can be the parent for a
    +	// subresource. Do not add this result to the returned discovery resources.
    +	if in.ResponseKind == nil || (*in.ResponseKind) == emptyKind {
    +		return result, fmt.Errorf("discovery resource %s missing GVK", in.Resource)
    +	}
    +	result.Group = in.ResponseKind.Group
    +	result.Version = in.ResponseKind.Version
    +	result.Kind = in.ResponseKind.Kind
    +	return result, nil
    +}
    +
    +// convertAPISubresource tranforms a APISubresourceDiscovery to an APIResource.
    +func convertAPISubresourcev2beta1(parent metav1.APIResource, in apidiscoveryv2beta1.APISubresourceDiscovery) (metav1.APIResource, error) {
    +	result := metav1.APIResource{}
    +	if in.ResponseKind == nil || (*in.ResponseKind) == emptyKind {
    +		return result, fmt.Errorf("subresource %s/%s missing GVK", parent.Name, in.Subresource)
    +	}
    +	result.Name = fmt.Sprintf("%s/%s", parent.Name, in.Subresource)
    +	result.SingularName = parent.SingularName
    +	result.Namespaced = parent.Namespaced
    +	result.Group = in.ResponseKind.Group
    +	result.Version = in.ResponseKind.Version
    +	result.Kind = in.ResponseKind.Kind
    +	result.Verbs = in.Verbs
    +	return result, nil
    +}
    diff --git a/vendor/k8s.io/client-go/discovery/discovery_client.go b/vendor/k8s.io/client-go/discovery/discovery_client.go
    index df0e0f9974ee..ef14fee5f095 100644
    --- a/vendor/k8s.io/client-go/discovery/discovery_client.go
    +++ b/vendor/k8s.io/client-go/discovery/discovery_client.go
    @@ -33,7 +33,8 @@ import (
     	"github.com/golang/protobuf/proto"
     	openapi_v2 "github.com/google/gnostic-models/openapiv2"
     
    -	apidiscovery "k8s.io/api/apidiscovery/v2beta1"
    +	apidiscoveryv2 "k8s.io/api/apidiscovery/v2"
    +	apidiscoveryv2beta1 "k8s.io/api/apidiscovery/v2beta1"
     	"k8s.io/apimachinery/pkg/api/errors"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	"k8s.io/apimachinery/pkg/runtime"
    @@ -64,12 +65,14 @@ const (
     	// MUST be ordered (g, v, as) for server in "Accept" header (BUT we are resilient
     	// to ordering when comparing returned values in "Content-Type" header).
     	AcceptV2Beta1 = runtime.ContentTypeJSON + ";" + "g=apidiscovery.k8s.io;v=v2beta1;as=APIGroupDiscoveryList"
    +	AcceptV2      = runtime.ContentTypeJSON + ";" + "g=apidiscovery.k8s.io;v=v2;as=APIGroupDiscoveryList"
     	// Prioritize aggregated discovery by placing first in the order of discovery accept types.
    -	acceptDiscoveryFormats = AcceptV2Beta1 + "," + AcceptV1
    +	acceptDiscoveryFormats = AcceptV2 + "," + AcceptV2Beta1 + "," + AcceptV1
     )
     
     // Aggregated discovery content-type GVK.
     var v2Beta1GVK = schema.GroupVersionKind{Group: "apidiscovery.k8s.io", Version: "v2beta1", Kind: "APIGroupDiscoveryList"}
    +var v2GVK = schema.GroupVersionKind{Group: "apidiscovery.k8s.io", Version: "v2", Kind: "APIGroupDiscoveryList"}
     
     // DiscoveryInterface holds the methods that discover server-supported API groups,
     // versions and resources.
    @@ -265,13 +268,20 @@ func (d *DiscoveryClient) downloadLegacy() (
     
     	var resourcesByGV map[schema.GroupVersion]*metav1.APIResourceList
     	// Based on the content-type server responded with: aggregated or unaggregated.
    -	if isGVK, _ := ContentTypeIsGVK(responseContentType, v2Beta1GVK); isGVK {
    -		var aggregatedDiscovery apidiscovery.APIGroupDiscoveryList
    +	if isGVK, _ := ContentTypeIsGVK(responseContentType, v2GVK); isGVK {
    +		var aggregatedDiscovery apidiscoveryv2.APIGroupDiscoveryList
     		err = json.Unmarshal(body, &aggregatedDiscovery)
     		if err != nil {
     			return nil, nil, nil, err
     		}
     		apiGroupList, resourcesByGV, failedGVs = SplitGroupsAndResources(aggregatedDiscovery)
    +	} else if isGVK, _ := ContentTypeIsGVK(responseContentType, v2Beta1GVK); isGVK {
    +		var aggregatedDiscovery apidiscoveryv2beta1.APIGroupDiscoveryList
    +		err = json.Unmarshal(body, &aggregatedDiscovery)
    +		if err != nil {
    +			return nil, nil, nil, err
    +		}
    +		apiGroupList, resourcesByGV, failedGVs = SplitGroupsAndResourcesV2Beta1(aggregatedDiscovery)
     	} else {
     		// Default is unaggregated discovery v1.
     		var v metav1.APIVersions
    @@ -317,13 +327,20 @@ func (d *DiscoveryClient) downloadAPIs() (
     	failedGVs := map[schema.GroupVersion]error{}
     	var resourcesByGV map[schema.GroupVersion]*metav1.APIResourceList
     	// Based on the content-type server responded with: aggregated or unaggregated.
    -	if isGVK, _ := ContentTypeIsGVK(responseContentType, v2Beta1GVK); isGVK {
    -		var aggregatedDiscovery apidiscovery.APIGroupDiscoveryList
    +	if isGVK, _ := ContentTypeIsGVK(responseContentType, v2GVK); isGVK {
    +		var aggregatedDiscovery apidiscoveryv2.APIGroupDiscoveryList
     		err = json.Unmarshal(body, &aggregatedDiscovery)
     		if err != nil {
     			return nil, nil, nil, err
     		}
     		apiGroupList, resourcesByGV, failedGVs = SplitGroupsAndResources(aggregatedDiscovery)
    +	} else if isGVK, _ := ContentTypeIsGVK(responseContentType, v2Beta1GVK); isGVK {
    +		var aggregatedDiscovery apidiscoveryv2beta1.APIGroupDiscoveryList
    +		err = json.Unmarshal(body, &aggregatedDiscovery)
    +		if err != nil {
    +			return nil, nil, nil, err
    +		}
    +		apiGroupList, resourcesByGV, failedGVs = SplitGroupsAndResourcesV2Beta1(aggregatedDiscovery)
     	} else {
     		// Default is unaggregated discovery v1.
     		err = json.Unmarshal(body, apiGroupList)
    diff --git a/vendor/k8s.io/client-go/discovery/fake/discovery.go b/vendor/k8s.io/client-go/discovery/fake/discovery.go
    index f8a78e1ef43e..e5d9e7f8007e 100644
    --- a/vendor/k8s.io/client-go/discovery/fake/discovery.go
    +++ b/vendor/k8s.io/client-go/discovery/fake/discovery.go
    @@ -47,7 +47,9 @@ func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*me
     		Verb:     "get",
     		Resource: schema.GroupVersionResource{Resource: "resource"},
     	}
    -	c.Invokes(action, nil)
    +	if _, err := c.Invokes(action, nil); err != nil {
    +		return nil, err
    +	}
     	for _, resourceList := range c.Resources {
     		if resourceList.GroupVersion == groupVersion {
     			return resourceList, nil
    @@ -77,7 +79,9 @@ func (c *FakeDiscovery) ServerGroupsAndResources() ([]*metav1.APIGroup, []*metav
     		Verb:     "get",
     		Resource: schema.GroupVersionResource{Resource: "resource"},
     	}
    -	c.Invokes(action, nil)
    +	if _, err = c.Invokes(action, nil); err != nil {
    +		return resultGroups, c.Resources, err
    +	}
     	return resultGroups, c.Resources, nil
     }
     
    @@ -100,7 +104,9 @@ func (c *FakeDiscovery) ServerGroups() (*metav1.APIGroupList, error) {
     		Verb:     "get",
     		Resource: schema.GroupVersionResource{Resource: "group"},
     	}
    -	c.Invokes(action, nil)
    +	if _, err := c.Invokes(action, nil); err != nil {
    +		return nil, err
    +	}
     
     	groups := map[string]*metav1.APIGroup{}
     
    diff --git a/vendor/k8s.io/client-go/dynamic/scheme.go b/vendor/k8s.io/client-go/dynamic/scheme.go
    index 3168c872cf46..28316f1dd5c9 100644
    --- a/vendor/k8s.io/client-go/dynamic/scheme.go
    +++ b/vendor/k8s.io/client-go/dynamic/scheme.go
    @@ -21,52 +21,66 @@ import (
     	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
     	"k8s.io/apimachinery/pkg/runtime"
     	"k8s.io/apimachinery/pkg/runtime/schema"
    -	"k8s.io/apimachinery/pkg/runtime/serializer"
    +	"k8s.io/apimachinery/pkg/runtime/serializer/cbor"
     	"k8s.io/apimachinery/pkg/runtime/serializer/json"
    +	"k8s.io/client-go/features"
     )
     
    -var watchScheme = runtime.NewScheme()
     var basicScheme = runtime.NewScheme()
    -var deleteScheme = runtime.NewScheme()
     var parameterScheme = runtime.NewScheme()
    -var deleteOptionsCodec = serializer.NewCodecFactory(deleteScheme)
     var dynamicParameterCodec = runtime.NewParameterCodec(parameterScheme)
     
     var versionV1 = schema.GroupVersion{Version: "v1"}
     
     func init() {
    -	metav1.AddToGroupVersion(watchScheme, versionV1)
     	metav1.AddToGroupVersion(basicScheme, versionV1)
     	metav1.AddToGroupVersion(parameterScheme, versionV1)
    -	metav1.AddToGroupVersion(deleteScheme, versionV1)
     }
     
    -// basicNegotiatedSerializer is used to handle discovery and error handling serialization
    -type basicNegotiatedSerializer struct{}
    -
    -func (s basicNegotiatedSerializer) SupportedMediaTypes() []runtime.SerializerInfo {
    -	return []runtime.SerializerInfo{
    +func newBasicNegotiatedSerializer() basicNegotiatedSerializer {
    +	supportedMediaTypes := []runtime.SerializerInfo{
     		{
     			MediaType:        "application/json",
     			MediaTypeType:    "application",
     			MediaTypeSubType: "json",
     			EncodesAsText:    true,
    -			Serializer:       json.NewSerializer(json.DefaultMetaFactory, unstructuredCreater{basicScheme}, unstructuredTyper{basicScheme}, false),
    -			PrettySerializer: json.NewSerializer(json.DefaultMetaFactory, unstructuredCreater{basicScheme}, unstructuredTyper{basicScheme}, true),
    +			Serializer:       json.NewSerializerWithOptions(json.DefaultMetaFactory, unstructuredCreater{basicScheme}, unstructuredTyper{basicScheme}, json.SerializerOptions{}),
    +			PrettySerializer: json.NewSerializerWithOptions(json.DefaultMetaFactory, unstructuredCreater{basicScheme}, unstructuredTyper{basicScheme}, json.SerializerOptions{Pretty: true}),
     			StreamSerializer: &runtime.StreamSerializerInfo{
     				EncodesAsText: true,
    -				Serializer:    json.NewSerializer(json.DefaultMetaFactory, basicScheme, basicScheme, false),
    +				Serializer:    json.NewSerializerWithOptions(json.DefaultMetaFactory, basicScheme, basicScheme, json.SerializerOptions{}),
     				Framer:        json.Framer,
     			},
     		},
     	}
    +	if features.FeatureGates().Enabled(features.ClientsAllowCBOR) {
    +		supportedMediaTypes = append(supportedMediaTypes, runtime.SerializerInfo{
    +			MediaType:        "application/cbor",
    +			MediaTypeType:    "application",
    +			MediaTypeSubType: "cbor",
    +			Serializer:       cbor.NewSerializer(unstructuredCreater{basicScheme}, unstructuredTyper{basicScheme}),
    +			StreamSerializer: &runtime.StreamSerializerInfo{
    +				Serializer: cbor.NewSerializer(basicScheme, basicScheme, cbor.Transcode(false)),
    +				Framer:     cbor.NewFramer(),
    +			},
    +		})
    +	}
    +	return basicNegotiatedSerializer{supportedMediaTypes: supportedMediaTypes}
    +}
    +
    +type basicNegotiatedSerializer struct {
    +	supportedMediaTypes []runtime.SerializerInfo
    +}
    +
    +func (s basicNegotiatedSerializer) SupportedMediaTypes() []runtime.SerializerInfo {
    +	return s.supportedMediaTypes
     }
     
     func (s basicNegotiatedSerializer) EncoderForVersion(encoder runtime.Encoder, gv runtime.GroupVersioner) runtime.Encoder {
     	return runtime.WithVersionEncoder{
     		Version:     gv,
     		Encoder:     encoder,
    -		ObjectTyper: unstructuredTyper{basicScheme},
    +		ObjectTyper: permissiveTyper{basicScheme},
     	}
     }
     
    @@ -106,3 +120,25 @@ func (t unstructuredTyper) ObjectKinds(obj runtime.Object) ([]schema.GroupVersio
     func (t unstructuredTyper) Recognizes(gvk schema.GroupVersionKind) bool {
     	return true
     }
    +
    +// The dynamic client has historically accepted Unstructured objects with missing or empty
    +// apiVersion and/or kind as arguments to its write request methods. This typer will return the type
    +// of a runtime.Unstructured with no error, even if the type is missing or empty.
    +type permissiveTyper struct {
    +	nested runtime.ObjectTyper
    +}
    +
    +func (t permissiveTyper) ObjectKinds(obj runtime.Object) ([]schema.GroupVersionKind, bool, error) {
    +	kinds, unversioned, err := t.nested.ObjectKinds(obj)
    +	if err == nil {
    +		return kinds, unversioned, nil
    +	}
    +	if _, ok := obj.(runtime.Unstructured); ok {
    +		return []schema.GroupVersionKind{obj.GetObjectKind().GroupVersionKind()}, false, nil
    +	}
    +	return nil, false, err
    +}
    +
    +func (t permissiveTyper) Recognizes(gvk schema.GroupVersionKind) bool {
    +	return true
    +}
    diff --git a/vendor/k8s.io/client-go/dynamic/simple.go b/vendor/k8s.io/client-go/dynamic/simple.go
    index 4b548595302e..62b2999ca931 100644
    --- a/vendor/k8s.io/client-go/dynamic/simple.go
    +++ b/vendor/k8s.io/client-go/dynamic/simple.go
    @@ -20,15 +20,20 @@ import (
     	"context"
     	"fmt"
     	"net/http"
    +	"time"
     
     	"k8s.io/apimachinery/pkg/api/meta"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
    -	"k8s.io/apimachinery/pkg/runtime"
     	"k8s.io/apimachinery/pkg/runtime/schema"
     	"k8s.io/apimachinery/pkg/types"
     	"k8s.io/apimachinery/pkg/watch"
    +	"k8s.io/client-go/features"
     	"k8s.io/client-go/rest"
    +	"k8s.io/client-go/util/apply"
    +	"k8s.io/client-go/util/consistencydetector"
    +	"k8s.io/client-go/util/watchlist"
    +	"k8s.io/klog/v2"
     )
     
     type DynamicClient struct {
    @@ -41,9 +46,17 @@ var _ Interface = &DynamicClient{}
     // appropriate dynamic client defaults set.
     func ConfigFor(inConfig *rest.Config) *rest.Config {
     	config := rest.CopyConfig(inConfig)
    -	config.AcceptContentTypes = "application/json"
    +
     	config.ContentType = "application/json"
    -	config.NegotiatedSerializer = basicNegotiatedSerializer{} // this gets used for discovery and error handling types
    +	config.AcceptContentTypes = "application/json"
    +	if features.FeatureGates().Enabled(features.ClientsAllowCBOR) {
    +		config.AcceptContentTypes = "application/json;q=0.9,application/cbor;q=1"
    +		if features.FeatureGates().Enabled(features.ClientsPreferCBOR) {
    +			config.ContentType = "application/cbor"
    +		}
    +	}
    +
    +	config.NegotiatedSerializer = newBasicNegotiatedSerializer()
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
     	}
    @@ -82,11 +95,10 @@ func NewForConfig(inConfig *rest.Config) (*DynamicClient, error) {
     // Note the http client provided takes precedence over the configured transport values.
     func NewForConfigAndClient(inConfig *rest.Config, h *http.Client) (*DynamicClient, error) {
     	config := ConfigFor(inConfig)
    -	// for serializing the options
    -	config.GroupVersion = &schema.GroupVersion{}
    +	config.GroupVersion = nil
     	config.APIPath = "/if-you-see-this-search-for-the-break"
     
    -	restClient, err := rest.RESTClientForConfigAndClient(config, h)
    +	restClient, err := rest.UnversionedRESTClientForConfigAndClient(config, h)
     	if err != nil {
     		return nil, err
     	}
    @@ -110,10 +122,6 @@ func (c *dynamicResourceClient) Namespace(ns string) ResourceInterface {
     }
     
     func (c *dynamicResourceClient) Create(ctx context.Context, obj *unstructured.Unstructured, opts metav1.CreateOptions, subresources ...string) (*unstructured.Unstructured, error) {
    -	outBytes, err := runtime.Encode(unstructured.UnstructuredJSONScheme, obj)
    -	if err != nil {
    -		return nil, err
    -	}
     	name := ""
     	if len(subresources) > 0 {
     		accessor, err := meta.Accessor(obj)
    @@ -129,26 +137,17 @@ func (c *dynamicResourceClient) Create(ctx context.Context, obj *unstructured.Un
     		return nil, err
     	}
     
    -	result := c.client.client.
    +	var out unstructured.Unstructured
    +	if err := c.client.client.
     		Post().
     		AbsPath(append(c.makeURLSegments(name), subresources...)...).
    -		SetHeader("Content-Type", runtime.ContentTypeJSON).
    -		Body(outBytes).
    +		Body(obj).
     		SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
    -		Do(ctx)
    -	if err := result.Error(); err != nil {
    +		Do(ctx).Into(&out); err != nil {
     		return nil, err
     	}
     
    -	retBytes, err := result.Raw()
    -	if err != nil {
    -		return nil, err
    -	}
    -	uncastObj, err := runtime.Decode(unstructured.UnstructuredJSONScheme, retBytes)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return uncastObj.(*unstructured.Unstructured), nil
    +	return &out, nil
     }
     
     func (c *dynamicResourceClient) Update(ctx context.Context, obj *unstructured.Unstructured, opts metav1.UpdateOptions, subresources ...string) (*unstructured.Unstructured, error) {
    @@ -163,31 +162,18 @@ func (c *dynamicResourceClient) Update(ctx context.Context, obj *unstructured.Un
     	if err := validateNamespaceWithOptionalName(c.namespace, name); err != nil {
     		return nil, err
     	}
    -	outBytes, err := runtime.Encode(unstructured.UnstructuredJSONScheme, obj)
    -	if err != nil {
    -		return nil, err
    -	}
     
    -	result := c.client.client.
    +	var out unstructured.Unstructured
    +	if err := c.client.client.
     		Put().
     		AbsPath(append(c.makeURLSegments(name), subresources...)...).
    -		SetHeader("Content-Type", runtime.ContentTypeJSON).
    -		Body(outBytes).
    +		Body(obj).
     		SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
    -		Do(ctx)
    -	if err := result.Error(); err != nil {
    +		Do(ctx).Into(&out); err != nil {
     		return nil, err
     	}
     
    -	retBytes, err := result.Raw()
    -	if err != nil {
    -		return nil, err
    -	}
    -	uncastObj, err := runtime.Decode(unstructured.UnstructuredJSONScheme, retBytes)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return uncastObj.(*unstructured.Unstructured), nil
    +	return &out, nil
     }
     
     func (c *dynamicResourceClient) UpdateStatus(ctx context.Context, obj *unstructured.Unstructured, opts metav1.UpdateOptions) (*unstructured.Unstructured, error) {
    @@ -202,31 +188,18 @@ func (c *dynamicResourceClient) UpdateStatus(ctx context.Context, obj *unstructu
     	if err := validateNamespaceWithOptionalName(c.namespace, name); err != nil {
     		return nil, err
     	}
    -	outBytes, err := runtime.Encode(unstructured.UnstructuredJSONScheme, obj)
    -	if err != nil {
    -		return nil, err
    -	}
     
    -	result := c.client.client.
    +	var out unstructured.Unstructured
    +	if err := c.client.client.
     		Put().
     		AbsPath(append(c.makeURLSegments(name), "status")...).
    -		SetHeader("Content-Type", runtime.ContentTypeJSON).
    -		Body(outBytes).
    +		Body(obj).
     		SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
    -		Do(ctx)
    -	if err := result.Error(); err != nil {
    +		Do(ctx).Into(&out); err != nil {
     		return nil, err
     	}
     
    -	retBytes, err := result.Raw()
    -	if err != nil {
    -		return nil, err
    -	}
    -	uncastObj, err := runtime.Decode(unstructured.UnstructuredJSONScheme, retBytes)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return uncastObj.(*unstructured.Unstructured), nil
    +	return &out, nil
     }
     
     func (c *dynamicResourceClient) Delete(ctx context.Context, name string, opts metav1.DeleteOptions, subresources ...string) error {
    @@ -236,16 +209,11 @@ func (c *dynamicResourceClient) Delete(ctx context.Context, name string, opts me
     	if err := validateNamespaceWithOptionalName(c.namespace, name); err != nil {
     		return err
     	}
    -	deleteOptionsByte, err := runtime.Encode(deleteOptionsCodec.LegacyCodec(schema.GroupVersion{Version: "v1"}), &opts)
    -	if err != nil {
    -		return err
    -	}
     
     	result := c.client.client.
     		Delete().
     		AbsPath(append(c.makeURLSegments(name), subresources...)...).
    -		SetHeader("Content-Type", runtime.ContentTypeJSON).
    -		Body(deleteOptionsByte).
    +		Body(&opts).
     		Do(ctx)
     	return result.Error()
     }
    @@ -255,16 +223,10 @@ func (c *dynamicResourceClient) DeleteCollection(ctx context.Context, opts metav
     		return err
     	}
     
    -	deleteOptionsByte, err := runtime.Encode(deleteOptionsCodec.LegacyCodec(schema.GroupVersion{Version: "v1"}), &opts)
    -	if err != nil {
    -		return err
    -	}
    -
     	result := c.client.client.
     		Delete().
     		AbsPath(c.makeURLSegments("")...).
    -		SetHeader("Content-Type", runtime.ContentTypeJSON).
    -		Body(deleteOptionsByte).
    +		Body(&opts).
     		SpecificallyVersionedParams(&listOptions, dynamicParameterCodec, versionV1).
     		Do(ctx)
     	return result.Error()
    @@ -277,46 +239,69 @@ func (c *dynamicResourceClient) Get(ctx context.Context, name string, opts metav
     	if err := validateNamespaceWithOptionalName(c.namespace, name); err != nil {
     		return nil, err
     	}
    -	result := c.client.client.Get().AbsPath(append(c.makeURLSegments(name), subresources...)...).SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).Do(ctx)
    -	if err := result.Error(); err != nil {
    +	var out unstructured.Unstructured
    +	if err := c.client.client.
    +		Get().
    +		AbsPath(append(c.makeURLSegments(name), subresources...)...).
    +		SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
    +		Do(ctx).Into(&out); err != nil {
     		return nil, err
     	}
    -	retBytes, err := result.Raw()
    -	if err != nil {
    -		return nil, err
    +	return &out, nil
    +}
    +
    +func (c *dynamicResourceClient) List(ctx context.Context, opts metav1.ListOptions) (*unstructured.UnstructuredList, error) {
    +	if watchListOptions, hasWatchListOptionsPrepared, watchListOptionsErr := watchlist.PrepareWatchListOptionsFromListOptions(opts); watchListOptionsErr != nil {
    +		klog.Warningf("Failed preparing watchlist options for %v, falling back to the standard LIST semantics, err = %v", c.resource, watchListOptionsErr)
    +	} else if hasWatchListOptionsPrepared {
    +		result, err := c.watchList(ctx, watchListOptions)
    +		if err == nil {
    +			consistencydetector.CheckWatchListFromCacheDataConsistencyIfRequested(ctx, fmt.Sprintf("watchlist request for %v", c.resource), c.list, opts, result)
    +			return result, nil
    +		}
    +		klog.Warningf("The watchlist request for %v ended with an error, falling back to the standard LIST semantics, err = %v", c.resource, err)
     	}
    -	uncastObj, err := runtime.Decode(unstructured.UnstructuredJSONScheme, retBytes)
    -	if err != nil {
    -		return nil, err
    +	result, err := c.list(ctx, opts)
    +	if err == nil {
    +		consistencydetector.CheckListFromCacheDataConsistencyIfRequested(ctx, fmt.Sprintf("list request for %v", c.resource), c.list, opts, result)
     	}
    -	return uncastObj.(*unstructured.Unstructured), nil
    +	return result, err
     }
     
    -func (c *dynamicResourceClient) List(ctx context.Context, opts metav1.ListOptions) (*unstructured.UnstructuredList, error) {
    +func (c *dynamicResourceClient) list(ctx context.Context, opts metav1.ListOptions) (*unstructured.UnstructuredList, error) {
     	if err := validateNamespaceWithOptionalName(c.namespace); err != nil {
     		return nil, err
     	}
    -	result := c.client.client.Get().AbsPath(c.makeURLSegments("")...).SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).Do(ctx)
    -	if err := result.Error(); err != nil {
    -		return nil, err
    -	}
    -	retBytes, err := result.Raw()
    -	if err != nil {
    +	var out unstructured.UnstructuredList
    +	if err := c.client.client.
    +		Get().
    +		AbsPath(c.makeURLSegments("")...).
    +		SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
    +		Do(ctx).Into(&out); err != nil {
     		return nil, err
     	}
    -	uncastObj, err := runtime.Decode(unstructured.UnstructuredJSONScheme, retBytes)
    -	if err != nil {
    +	return &out, nil
    +}
    +
    +// watchList establishes a watch stream with the server and returns an unstructured list.
    +func (c *dynamicResourceClient) watchList(ctx context.Context, opts metav1.ListOptions) (*unstructured.UnstructuredList, error) {
    +	if err := validateNamespaceWithOptionalName(c.namespace); err != nil {
     		return nil, err
     	}
    -	if list, ok := uncastObj.(*unstructured.UnstructuredList); ok {
    -		return list, nil
    -	}
     
    -	list, err := uncastObj.(*unstructured.Unstructured).ToList()
    -	if err != nil {
    -		return nil, err
    +	var timeout time.Duration
    +	if opts.TimeoutSeconds != nil {
    +		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
     	}
    -	return list, nil
    +
    +	result := &unstructured.UnstructuredList{}
    +	err := c.client.client.Get().AbsPath(c.makeURLSegments("")...).
    +		SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
    +		Timeout(timeout).
    +		WatchList(ctx).
    +		Into(result)
    +
    +	return result, err
     }
     
     func (c *dynamicResourceClient) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    @@ -336,24 +321,16 @@ func (c *dynamicResourceClient) Patch(ctx context.Context, name string, pt types
     	if err := validateNamespaceWithOptionalName(c.namespace, name); err != nil {
     		return nil, err
     	}
    -	result := c.client.client.
    +	var out unstructured.Unstructured
    +	if err := c.client.client.
     		Patch(pt).
     		AbsPath(append(c.makeURLSegments(name), subresources...)...).
     		Body(data).
     		SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
    -		Do(ctx)
    -	if err := result.Error(); err != nil {
    -		return nil, err
    -	}
    -	retBytes, err := result.Raw()
    -	if err != nil {
    +		Do(ctx).Into(&out); err != nil {
     		return nil, err
     	}
    -	uncastObj, err := runtime.Decode(unstructured.UnstructuredJSONScheme, retBytes)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return uncastObj.(*unstructured.Unstructured), nil
    +	return &out, nil
     }
     
     func (c *dynamicResourceClient) Apply(ctx context.Context, name string, obj *unstructured.Unstructured, opts metav1.ApplyOptions, subresources ...string) (*unstructured.Unstructured, error) {
    @@ -363,10 +340,6 @@ func (c *dynamicResourceClient) Apply(ctx context.Context, name string, obj *uns
     	if err := validateNamespaceWithOptionalName(c.namespace, name); err != nil {
     		return nil, err
     	}
    -	outBytes, err := runtime.Encode(unstructured.UnstructuredJSONScheme, obj)
    -	if err != nil {
    -		return nil, err
    -	}
     	accessor, err := meta.Accessor(obj)
     	if err != nil {
     		return nil, err
    @@ -378,25 +351,21 @@ func (c *dynamicResourceClient) Apply(ctx context.Context, name string, obj *uns
     	}
     	patchOpts := opts.ToPatchOptions()
     
    -	result := c.client.client.
    -		Patch(types.ApplyPatchType).
    -		AbsPath(append(c.makeURLSegments(name), subresources...)...).
    -		Body(outBytes).
    -		SpecificallyVersionedParams(&patchOpts, dynamicParameterCodec, versionV1).
    -		Do(ctx)
    -	if err := result.Error(); err != nil {
    -		return nil, err
    -	}
    -	retBytes, err := result.Raw()
    +	request, err := apply.NewRequest(c.client.client, obj.Object)
     	if err != nil {
     		return nil, err
     	}
    -	uncastObj, err := runtime.Decode(unstructured.UnstructuredJSONScheme, retBytes)
    -	if err != nil {
    +
    +	var out unstructured.Unstructured
    +	if err := request.
    +		AbsPath(append(c.makeURLSegments(name), subresources...)...).
    +		SpecificallyVersionedParams(&patchOpts, dynamicParameterCodec, versionV1).
    +		Do(ctx).Into(&out); err != nil {
     		return nil, err
     	}
    -	return uncastObj.(*unstructured.Unstructured), nil
    +	return &out, nil
     }
    +
     func (c *dynamicResourceClient) ApplyStatus(ctx context.Context, name string, obj *unstructured.Unstructured, opts metav1.ApplyOptions) (*unstructured.Unstructured, error) {
     	return c.Apply(ctx, name, obj, opts, "status")
     }
    diff --git a/vendor/k8s.io/client-go/features/envvar.go b/vendor/k8s.io/client-go/features/envvar.go
    new file mode 100644
    index 000000000000..8c3f887dc422
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/features/envvar.go
    @@ -0,0 +1,188 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package features
    +
    +import (
    +	"fmt"
    +	"os"
    +	"strconv"
    +	"sync"
    +	"sync/atomic"
    +
    +	"k8s.io/apimachinery/pkg/util/naming"
    +	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    +	"k8s.io/klog/v2"
    +)
    +
    +// internalPackages are packages that ignored when creating a name for featureGates. These packages are in the common
    +// call chains, so they'd be unhelpful as names.
    +var internalPackages = []string{"k8s.io/client-go/features/envvar.go"}
    +
    +var _ Gates = &envVarFeatureGates{}
    +
    +// newEnvVarFeatureGates creates a feature gate that allows for registration
    +// of features and checking if the features are enabled.
    +//
    +// On the first call to Enabled, the effective state of all known features is loaded from
    +// environment variables. The environment variable read for a given feature is formed by
    +// concatenating the prefix "KUBE_FEATURE_" with the feature's name.
    +//
    +// For example, if you have a feature named "MyFeature"
    +// setting an environmental variable "KUBE_FEATURE_MyFeature"
    +// will allow you to configure the state of that feature.
    +//
    +// Please note that environmental variables can only be set to the boolean value.
    +// Incorrect values will be ignored and logged.
    +//
    +// Features can also be set directly via the Set method.
    +// In that case, these features take precedence over
    +// features set via environmental variables.
    +func newEnvVarFeatureGates(features map[Feature]FeatureSpec) *envVarFeatureGates {
    +	known := map[Feature]FeatureSpec{}
    +	for name, spec := range features {
    +		known[name] = spec
    +	}
    +
    +	fg := &envVarFeatureGates{
    +		callSiteName: naming.GetNameFromCallsite(internalPackages...),
    +		known:        known,
    +	}
    +	fg.enabledViaEnvVar.Store(map[Feature]bool{})
    +	fg.enabledViaSetMethod = map[Feature]bool{}
    +
    +	return fg
    +}
    +
    +// envVarFeatureGates implements Gates and allows for feature registration.
    +type envVarFeatureGates struct {
    +	// callSiteName holds the name of the file
    +	// that created this instance
    +	callSiteName string
    +
    +	// readEnvVarsOnce guards reading environmental variables
    +	readEnvVarsOnce sync.Once
    +
    +	// known holds known feature gates
    +	known map[Feature]FeatureSpec
    +
    +	// enabledViaEnvVar holds a map[Feature]bool
    +	// with values explicitly set via env var
    +	enabledViaEnvVar atomic.Value
    +
    +	// lockEnabledViaSetMethod protects enabledViaSetMethod
    +	lockEnabledViaSetMethod sync.RWMutex
    +
    +	// enabledViaSetMethod holds values explicitly set
    +	// via Set method, features stored in this map take
    +	// precedence over features stored in enabledViaEnvVar
    +	enabledViaSetMethod map[Feature]bool
    +
    +	// readEnvVars holds the boolean value which
    +	// indicates whether readEnvVarsOnce has been called.
    +	readEnvVars atomic.Bool
    +}
    +
    +// Enabled returns true if the key is enabled. If the key is not known, this call will panic.
    +func (f *envVarFeatureGates) Enabled(key Feature) bool {
    +	if v, ok := f.wasFeatureEnabledViaSetMethod(key); ok {
    +		// ensue that the state of all known features
    +		// is loaded from environment variables
    +		// on the first call to Enabled method.
    +		if !f.hasAlreadyReadEnvVar() {
    +			_ = f.getEnabledMapFromEnvVar()
    +		}
    +		return v
    +	}
    +	if v, ok := f.getEnabledMapFromEnvVar()[key]; ok {
    +		return v
    +	}
    +	if v, ok := f.known[key]; ok {
    +		return v.Default
    +	}
    +	panic(fmt.Errorf("feature %q is not registered in FeatureGates %q", key, f.callSiteName))
    +}
    +
    +// Set sets the given feature to the given value.
    +//
    +// Features set via this method take precedence over
    +// the features set via environment variables.
    +func (f *envVarFeatureGates) Set(featureName Feature, featureValue bool) error {
    +	feature, ok := f.known[featureName]
    +	if !ok {
    +		return fmt.Errorf("feature %q is not registered in FeatureGates %q", featureName, f.callSiteName)
    +	}
    +	if feature.LockToDefault && feature.Default != featureValue {
    +		return fmt.Errorf("cannot set feature gate %q to %v, feature is locked to %v", featureName, featureValue, feature.Default)
    +	}
    +
    +	f.lockEnabledViaSetMethod.Lock()
    +	defer f.lockEnabledViaSetMethod.Unlock()
    +	f.enabledViaSetMethod[featureName] = featureValue
    +
    +	return nil
    +}
    +
    +// getEnabledMapFromEnvVar will fill the enabled map on the first call.
    +// This is the only time a known feature can be set to a value
    +// read from the corresponding environmental variable.
    +func (f *envVarFeatureGates) getEnabledMapFromEnvVar() map[Feature]bool {
    +	f.readEnvVarsOnce.Do(func() {
    +		featureGatesState := map[Feature]bool{}
    +		for feature, featureSpec := range f.known {
    +			featureState, featureStateSet := os.LookupEnv(fmt.Sprintf("KUBE_FEATURE_%s", feature))
    +			if !featureStateSet {
    +				continue
    +			}
    +			boolVal, boolErr := strconv.ParseBool(featureState)
    +			switch {
    +			case boolErr != nil:
    +				utilruntime.HandleError(fmt.Errorf("cannot set feature gate %q to %q, due to %v", feature, featureState, boolErr))
    +			case featureSpec.LockToDefault:
    +				if boolVal != featureSpec.Default {
    +					utilruntime.HandleError(fmt.Errorf("cannot set feature gate %q to %q, feature is locked to %v", feature, featureState, featureSpec.Default))
    +					break
    +				}
    +				featureGatesState[feature] = featureSpec.Default
    +			default:
    +				featureGatesState[feature] = boolVal
    +			}
    +		}
    +		f.enabledViaEnvVar.Store(featureGatesState)
    +		f.readEnvVars.Store(true)
    +
    +		for feature, featureSpec := range f.known {
    +			if featureState, ok := featureGatesState[feature]; ok {
    +				klog.V(1).InfoS("Feature gate updated state", "feature", feature, "enabled", featureState)
    +				continue
    +			}
    +			klog.V(1).InfoS("Feature gate default state", "feature", feature, "enabled", featureSpec.Default)
    +		}
    +	})
    +	return f.enabledViaEnvVar.Load().(map[Feature]bool)
    +}
    +
    +func (f *envVarFeatureGates) wasFeatureEnabledViaSetMethod(key Feature) (bool, bool) {
    +	f.lockEnabledViaSetMethod.RLock()
    +	defer f.lockEnabledViaSetMethod.RUnlock()
    +
    +	value, found := f.enabledViaSetMethod[key]
    +	return value, found
    +}
    +
    +func (f *envVarFeatureGates) hasAlreadyReadEnvVar() bool {
    +	return f.readEnvVars.Load()
    +}
    diff --git a/vendor/k8s.io/client-go/features/features.go b/vendor/k8s.io/client-go/features/features.go
    new file mode 100644
    index 000000000000..5ccdcc55f6c8
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/features/features.go
    @@ -0,0 +1,143 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package features
    +
    +import (
    +	"errors"
    +	"sync/atomic"
    +
    +	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    +)
    +
    +// NOTE: types Feature, FeatureSpec, prerelease (and its values)
    +// were duplicated from the component-base repository
    +//
    +// for more information please refer to https://docs.google.com/document/d/1g9BGCRw-7ucUxO6OtCWbb3lfzUGA_uU9178wLdXAIfs
    +
    +const (
    +	// Values for PreRelease.
    +	Alpha = prerelease("ALPHA")
    +	Beta  = prerelease("BETA")
    +	GA    = prerelease("")
    +
    +	// Deprecated
    +	Deprecated = prerelease("DEPRECATED")
    +)
    +
    +type prerelease string
    +
    +type Feature string
    +
    +type FeatureSpec struct {
    +	// Default is the default enablement state for the feature
    +	Default bool
    +	// LockToDefault indicates that the feature is locked to its default and cannot be changed
    +	LockToDefault bool
    +	// PreRelease indicates the maturity level of the feature
    +	PreRelease prerelease
    +}
    +
    +// Gates indicates whether a given feature is enabled or not.
    +type Gates interface {
    +	// Enabled returns true if the key is enabled.
    +	Enabled(key Feature) bool
    +}
    +
    +// Registry represents an external feature gates registry.
    +type Registry interface {
    +	// Add adds existing feature gates to the provided registry.
    +	//
    +	// As of today, this method is used by AddFeaturesToExistingFeatureGates and
    +	// ReplaceFeatureGates to take control of the features exposed by this library.
    +	Add(map[Feature]FeatureSpec) error
    +}
    +
    +// FeatureGates returns the feature gates exposed by this library.
    +//
    +// By default, only the default features gates will be returned.
    +// The default implementation allows controlling the features
    +// via environmental variables.
    +// For example, if you have a feature named "MyFeature"
    +// setting an environmental variable "KUBE_FEATURE_MyFeature"
    +// will allow you to configure the state of that feature.
    +//
    +// Please note that the actual set of the feature gates
    +// might be overwritten by calling ReplaceFeatureGates method.
    +func FeatureGates() Gates {
    +	return featureGates.Load().(*featureGatesWrapper).Gates
    +}
    +
    +// AddFeaturesToExistingFeatureGates adds the default feature gates to the provided registry.
    +// Usually this function is combined with ReplaceFeatureGates to take control of the
    +// features exposed by this library.
    +func AddFeaturesToExistingFeatureGates(registry Registry) error {
    +	return registry.Add(defaultKubernetesFeatureGates)
    +}
    +
    +// ReplaceFeatureGates overwrites the default implementation of the feature gates
    +// used by this library.
    +//
    +// Useful for binaries that would like to have full control of the features
    +// exposed by this library, such as allowing consumers of a binary
    +// to interact with the features via a command line flag.
    +//
    +// For example:
    +//
    +//	// first, register client-go's features to your registry.
    +//	clientgofeaturegate.AddFeaturesToExistingFeatureGates(utilfeature.DefaultMutableFeatureGate)
    +//	// then replace client-go's feature gates implementation with your implementation
    +//	clientgofeaturegate.ReplaceFeatureGates(utilfeature.DefaultMutableFeatureGate)
    +func ReplaceFeatureGates(newFeatureGates Gates) {
    +	if replaceFeatureGatesWithWarningIndicator(newFeatureGates) {
    +		utilruntime.HandleError(errors.New("the default feature gates implementation has already been used and now it's being overwritten. This might lead to unexpected behaviour. Check your initialization order"))
    +	}
    +}
    +
    +func replaceFeatureGatesWithWarningIndicator(newFeatureGates Gates) bool {
    +	shouldProduceWarning := false
    +
    +	if defaultFeatureGates, ok := FeatureGates().(*envVarFeatureGates); ok {
    +		if defaultFeatureGates.hasAlreadyReadEnvVar() {
    +			shouldProduceWarning = true
    +		}
    +	}
    +	wrappedFeatureGates := &featureGatesWrapper{newFeatureGates}
    +	featureGates.Store(wrappedFeatureGates)
    +
    +	return shouldProduceWarning
    +}
    +
    +func init() {
    +	envVarGates := newEnvVarFeatureGates(defaultKubernetesFeatureGates)
    +
    +	wrappedFeatureGates := &featureGatesWrapper{envVarGates}
    +	featureGates.Store(wrappedFeatureGates)
    +}
    +
    +// featureGatesWrapper a thin wrapper to satisfy featureGates variable (atomic.Value).
    +// That is, all calls to Store for a given Value must use values of the same concrete type.
    +type featureGatesWrapper struct {
    +	Gates
    +}
    +
    +var (
    +	// featureGates is a shared global FeatureGates.
    +	//
    +	// Top-level commands/options setup that needs to modify this feature gates
    +	// should use AddFeaturesToExistingFeatureGates followed by ReplaceFeatureGates.
    +	featureGates = &atomic.Value{}
    +)
    diff --git a/vendor/k8s.io/client-go/features/known_features.go b/vendor/k8s.io/client-go/features/known_features.go
    new file mode 100644
    index 000000000000..a74f6a833356
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/features/known_features.go
    @@ -0,0 +1,77 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package features
    +
    +const (
    +	// Every feature gate should add method here following this template:
    +	//
    +	// // owner: @username
    +	// // alpha: v1.4
    +	// MyFeature featuregate.Feature = "MyFeature"
    +	//
    +	// Feature gates should be listed in alphabetical, case-sensitive
    +	// (upper before any lower case character) order. This reduces the risk
    +	// of code conflicts because changes are more likely to be scattered
    +	// across the file.
    +
    +	// owner: @benluddy
    +	// kep: https://kep.k8s.io/4222
    +	// alpha: 1.32
    +	//
    +	// If disabled, clients configured to accept "application/cbor" will instead accept
    +	// "application/json" with the same relative preference, and clients configured to write
    +	// "application/cbor" or "application/apply-patch+cbor" will instead write
    +	// "application/json" or "application/apply-patch+yaml", respectively.
    +	ClientsAllowCBOR Feature = "ClientsAllowCBOR"
    +
    +	// owner: @benluddy
    +	// kep: https://kep.k8s.io/4222
    +	// alpha: 1.32
    +	//
    +	// If enabled, and only if ClientsAllowCBOR is also enabled, the default request content
    +	// type (if not explicitly configured) and the dynamic client's request content type both
    +	// become "application/cbor" instead of "application/json". The default content type for
    +	// apply patch requests becomes "application/apply-patch+cbor" instead of
    +	// "application/apply-patch+yaml".
    +	ClientsPreferCBOR Feature = "ClientsPreferCBOR"
    +
    +	// owner: @nilekhc
    +	// alpha: v1.30
    +	InformerResourceVersion Feature = "InformerResourceVersion"
    +
    +	// owner: @p0lyn0mial
    +	// beta: v1.30
    +	//
    +	// Allow the client to get a stream of individual items instead of chunking from the server.
    +	//
    +	// NOTE:
    +	//  The feature is disabled in Beta by default because
    +	//  it will only be turned on for selected control plane component(s).
    +	WatchListClient Feature = "WatchListClient"
    +)
    +
    +// defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys.
    +//
    +// To add a new feature, define a key for it above and add it here.
    +// After registering with the binary, the features are, by default, controllable using environment variables.
    +// For more details, please see envVarFeatureGates implementation.
    +var defaultKubernetesFeatureGates = map[Feature]FeatureSpec{
    +	ClientsAllowCBOR:        {Default: false, PreRelease: Alpha},
    +	ClientsPreferCBOR:       {Default: false, PreRelease: Alpha},
    +	InformerResourceVersion: {Default: false, PreRelease: Alpha},
    +	WatchListClient:         {Default: false, PreRelease: Beta},
    +}
    diff --git a/vendor/k8s.io/client-go/gentype/fake.go b/vendor/k8s.io/client-go/gentype/fake.go
    new file mode 100644
    index 000000000000..bcb9ca27f59a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/gentype/fake.go
    @@ -0,0 +1,304 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package gentype
    +
    +import (
    +	"context"
    +	json "encoding/json"
    +	"fmt"
    +
    +	"k8s.io/apimachinery/pkg/api/meta"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/runtime/schema"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	testing "k8s.io/client-go/testing"
    +)
    +
    +// FakeClient represents a fake client
    +type FakeClient[T objectWithMeta] struct {
    +	*testing.Fake
    +	ns        string
    +	resource  schema.GroupVersionResource
    +	kind      schema.GroupVersionKind
    +	newObject func() T
    +}
    +
    +// FakeClientWithList represents a fake client with support for lists.
    +type FakeClientWithList[T objectWithMeta, L runtime.Object] struct {
    +	*FakeClient[T]
    +	alsoFakeLister[T, L]
    +}
    +
    +// FakeClientWithApply represents a fake client with support for apply declarative configurations.
    +type FakeClientWithApply[T objectWithMeta, C namedObject] struct {
    +	*FakeClient[T]
    +	alsoFakeApplier[T, C]
    +}
    +
    +// FakeClientWithListAndApply represents a fake client with support for lists and apply declarative configurations.
    +type FakeClientWithListAndApply[T objectWithMeta, L runtime.Object, C namedObject] struct {
    +	*FakeClient[T]
    +	alsoFakeLister[T, L]
    +	alsoFakeApplier[T, C]
    +}
    +
    +// Helper types for composition
    +type alsoFakeLister[T objectWithMeta, L runtime.Object] struct {
    +	client       *FakeClient[T]
    +	newList      func() L
    +	copyListMeta func(L, L)
    +	getItems     func(L) []T
    +	setItems     func(L, []T)
    +}
    +
    +type alsoFakeApplier[T objectWithMeta, C namedObject] struct {
    +	client *FakeClient[T]
    +}
    +
    +// NewFakeClient constructs a fake client, namespaced or not, with no support for lists or apply.
    +// Non-namespaced clients are constructed by passing an empty namespace ("").
    +func NewFakeClient[T objectWithMeta](
    +	fake *testing.Fake, namespace string, resource schema.GroupVersionResource, kind schema.GroupVersionKind, emptyObjectCreator func() T,
    +) *FakeClient[T] {
    +	return &FakeClient[T]{fake, namespace, resource, kind, emptyObjectCreator}
    +}
    +
    +// NewFakeClientWithList constructs a namespaced client with support for lists.
    +func NewFakeClientWithList[T objectWithMeta, L runtime.Object](
    +	fake *testing.Fake, namespace string, resource schema.GroupVersionResource, kind schema.GroupVersionKind, emptyObjectCreator func() T,
    +	emptyListCreator func() L, listMetaCopier func(L, L), itemGetter func(L) []T, itemSetter func(L, []T),
    +) *FakeClientWithList[T, L] {
    +	fakeClient := NewFakeClient[T](fake, namespace, resource, kind, emptyObjectCreator)
    +	return &FakeClientWithList[T, L]{
    +		fakeClient,
    +		alsoFakeLister[T, L]{fakeClient, emptyListCreator, listMetaCopier, itemGetter, itemSetter},
    +	}
    +}
    +
    +// NewFakeClientWithApply constructs a namespaced client with support for apply declarative configurations.
    +func NewFakeClientWithApply[T objectWithMeta, C namedObject](
    +	fake *testing.Fake, namespace string, resource schema.GroupVersionResource, kind schema.GroupVersionKind, emptyObjectCreator func() T,
    +) *FakeClientWithApply[T, C] {
    +	fakeClient := NewFakeClient[T](fake, namespace, resource, kind, emptyObjectCreator)
    +	return &FakeClientWithApply[T, C]{
    +		fakeClient,
    +		alsoFakeApplier[T, C]{fakeClient},
    +	}
    +}
    +
    +// NewFakeClientWithListAndApply constructs a client with support for lists and applying declarative configurations.
    +func NewFakeClientWithListAndApply[T objectWithMeta, L runtime.Object, C namedObject](
    +	fake *testing.Fake, namespace string, resource schema.GroupVersionResource, kind schema.GroupVersionKind, emptyObjectCreator func() T,
    +	emptyListCreator func() L, listMetaCopier func(L, L), itemGetter func(L) []T, itemSetter func(L, []T),
    +) *FakeClientWithListAndApply[T, L, C] {
    +	fakeClient := NewFakeClient[T](fake, namespace, resource, kind, emptyObjectCreator)
    +	return &FakeClientWithListAndApply[T, L, C]{
    +		fakeClient,
    +		alsoFakeLister[T, L]{fakeClient, emptyListCreator, listMetaCopier, itemGetter, itemSetter},
    +		alsoFakeApplier[T, C]{fakeClient},
    +	}
    +}
    +
    +// Get takes name of a resource, and returns the corresponding object, and an error if there is any.
    +func (c *FakeClient[T]) Get(ctx context.Context, name string, options metav1.GetOptions) (T, error) {
    +	emptyResult := c.newObject()
    +
    +	obj, err := c.Fake.
    +		Invokes(testing.NewGetActionWithOptions(c.resource, c.ns, name, options), emptyResult)
    +	if obj == nil {
    +		return emptyResult, err
    +	}
    +	return obj.(T), err
    +}
    +
    +func ToPointerSlice[T any](src []T) []*T {
    +	if src == nil {
    +		return nil
    +	}
    +	result := make([]*T, len(src))
    +	for i := range src {
    +		result[i] = &src[i]
    +	}
    +	return result
    +}
    +
    +func FromPointerSlice[T any](src []*T) []T {
    +	if src == nil {
    +		return nil
    +	}
    +	result := make([]T, len(src))
    +	for i := range src {
    +		result[i] = *src[i]
    +	}
    +	return result
    +}
    +
    +// List takes label and field selectors, and returns the list of resources that match those selectors.
    +func (l *alsoFakeLister[T, L]) List(ctx context.Context, opts metav1.ListOptions) (result L, err error) {
    +	emptyResult := l.newList()
    +	obj, err := l.client.Fake.
    +		Invokes(testing.NewListActionWithOptions(l.client.resource, l.client.kind, l.client.ns, opts), emptyResult)
    +	if obj == nil {
    +		return emptyResult, err
    +	}
    +
    +	label, _, _ := testing.ExtractFromListOptions(opts)
    +	if label == nil {
    +		// Everything matches
    +		return obj.(L), nil
    +	}
    +	list := l.newList()
    +	l.copyListMeta(list, obj.(L))
    +	var items []T
    +	for _, item := range l.getItems(obj.(L)) {
    +		itemMeta, err := meta.Accessor(item)
    +		if err != nil {
    +			// No ObjectMeta, nothing can match
    +			continue
    +		}
    +		if label.Matches(labels.Set(itemMeta.GetLabels())) {
    +			items = append(items, item)
    +		}
    +	}
    +	l.setItems(list, items)
    +	return list, err
    +}
    +
    +// Watch returns a watch.Interface that watches the requested resources.
    +func (c *FakeClient[T]) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    +	return c.Fake.
    +		InvokesWatch(testing.NewWatchActionWithOptions(c.resource, c.ns, opts))
    +}
    +
    +// Create takes the representation of a resource and creates it.  Returns the server's representation of the resource, and an error, if there is any.
    +func (c *FakeClient[T]) Create(ctx context.Context, resource T, opts metav1.CreateOptions) (result T, err error) {
    +	emptyResult := c.newObject()
    +	obj, err := c.Fake.
    +		Invokes(testing.NewCreateActionWithOptions(c.resource, c.ns, resource, opts), emptyResult)
    +	if obj == nil {
    +		return emptyResult, err
    +	}
    +	return obj.(T), err
    +}
    +
    +// Update takes the representation of a resource and updates it. Returns the server's representation of the resource, and an error, if there is any.
    +func (c *FakeClient[T]) Update(ctx context.Context, resource T, opts metav1.UpdateOptions) (result T, err error) {
    +	emptyResult := c.newObject()
    +	obj, err := c.Fake.
    +		Invokes(testing.NewUpdateActionWithOptions(c.resource, c.ns, resource, opts), emptyResult)
    +	if obj == nil {
    +		return emptyResult, err
    +	}
    +	return obj.(T), err
    +}
    +
    +// UpdateStatus updates the resource's status and returns the updated resource.
    +func (c *FakeClient[T]) UpdateStatus(ctx context.Context, resource T, opts metav1.UpdateOptions) (result T, err error) {
    +	emptyResult := c.newObject()
    +	obj, err := c.Fake.
    +		Invokes(testing.NewUpdateSubresourceActionWithOptions(c.resource, "status", c.ns, resource, opts), emptyResult)
    +
    +	if obj == nil {
    +		return emptyResult, err
    +	}
    +	return obj.(T), err
    +}
    +
    +// Delete deletes the resource matching the given name. Returns an error if one occurs.
    +func (c *FakeClient[T]) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    +	_, err := c.Fake.
    +		Invokes(testing.NewDeleteActionWithOptions(c.resource, c.ns, name, opts), c.newObject())
    +	return err
    +}
    +
    +// DeleteCollection deletes a collection of objects.
    +func (l *alsoFakeLister[T, L]) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    +	_, err := l.client.Fake.
    +		Invokes(testing.NewDeleteCollectionActionWithOptions(l.client.resource, l.client.ns, opts, listOpts), l.newList())
    +	return err
    +}
    +
    +// Patch applies the patch and returns the patched resource.
    +func (c *FakeClient[T]) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result T, err error) {
    +	emptyResult := c.newObject()
    +	obj, err := c.Fake.
    +		Invokes(testing.NewPatchSubresourceActionWithOptions(c.resource, c.ns, name, pt, data, opts, subresources...), emptyResult)
    +	if obj == nil {
    +		return emptyResult, err
    +	}
    +	return obj.(T), err
    +}
    +
    +// Apply takes the given apply declarative configuration, applies it and returns the applied resource.
    +func (a *alsoFakeApplier[T, C]) Apply(ctx context.Context, configuration C, opts metav1.ApplyOptions) (result T, err error) {
    +	if configuration == *new(C) {
    +		return *new(T), fmt.Errorf("configuration provided to Apply must not be nil")
    +	}
    +	data, err := json.Marshal(configuration)
    +	if err != nil {
    +		return *new(T), err
    +	}
    +	name := configuration.GetName()
    +	if name == nil {
    +		return *new(T), fmt.Errorf("configuration.Name must be provided to Apply")
    +	}
    +	emptyResult := a.client.newObject()
    +	obj, err := a.client.Fake.
    +		Invokes(testing.NewPatchSubresourceActionWithOptions(a.client.resource, a.client.ns, *name, types.ApplyPatchType, data, opts.ToPatchOptions()), emptyResult)
    +	if obj == nil {
    +		return emptyResult, err
    +	}
    +	return obj.(T), err
    +}
    +
    +// ApplyStatus applies the given apply declarative configuration to the resource's status and returns the updated resource.
    +func (a *alsoFakeApplier[T, C]) ApplyStatus(ctx context.Context, configuration C, opts metav1.ApplyOptions) (result T, err error) {
    +	if configuration == *new(C) {
    +		return *new(T), fmt.Errorf("configuration provided to Apply must not be nil")
    +	}
    +	data, err := json.Marshal(configuration)
    +	if err != nil {
    +		return *new(T), err
    +	}
    +	name := configuration.GetName()
    +	if name == nil {
    +		return *new(T), fmt.Errorf("configuration.Name must be provided to Apply")
    +	}
    +	emptyResult := a.client.newObject()
    +	obj, err := a.client.Fake.
    +		Invokes(testing.NewPatchSubresourceActionWithOptions(a.client.resource, a.client.ns, *name, types.ApplyPatchType, data, opts.ToPatchOptions(), "status"), emptyResult)
    +
    +	if obj == nil {
    +		return emptyResult, err
    +	}
    +	return obj.(T), err
    +}
    +
    +func (c *FakeClient[T]) Namespace() string {
    +	return c.ns
    +}
    +
    +func (c *FakeClient[T]) Kind() schema.GroupVersionKind {
    +	return c.kind
    +}
    +
    +func (c *FakeClient[T]) Resource() schema.GroupVersionResource {
    +	return c.resource
    +}
    diff --git a/vendor/k8s.io/client-go/gentype/type.go b/vendor/k8s.io/client-go/gentype/type.go
    new file mode 100644
    index 000000000000..e6ed6aae7b13
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/gentype/type.go
    @@ -0,0 +1,387 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package gentype
    +
    +import (
    +	"context"
    +	"fmt"
    +	"time"
    +
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	rest "k8s.io/client-go/rest"
    +	"k8s.io/client-go/util/apply"
    +	"k8s.io/client-go/util/consistencydetector"
    +	"k8s.io/client-go/util/watchlist"
    +	"k8s.io/klog/v2"
    +)
    +
    +// objectWithMeta matches objects implementing both runtime.Object and metav1.Object.
    +type objectWithMeta interface {
    +	runtime.Object
    +	metav1.Object
    +}
    +
    +// namedObject matches comparable objects implementing GetName(); it is intended for use with apply declarative configurations.
    +type namedObject interface {
    +	comparable
    +	GetName() *string
    +}
    +
    +// Client represents a client, optionally namespaced, with no support for lists or apply declarative configurations.
    +type Client[T objectWithMeta] struct {
    +	resource       string
    +	client         rest.Interface
    +	namespace      string // "" for non-namespaced clients
    +	newObject      func() T
    +	parameterCodec runtime.ParameterCodec
    +
    +	prefersProtobuf bool
    +}
    +
    +// ClientWithList represents a client with support for lists.
    +type ClientWithList[T objectWithMeta, L runtime.Object] struct {
    +	*Client[T]
    +	alsoLister[T, L]
    +}
    +
    +// ClientWithApply represents a client with support for apply declarative configurations.
    +type ClientWithApply[T objectWithMeta, C namedObject] struct {
    +	*Client[T]
    +	alsoApplier[T, C]
    +}
    +
    +// ClientWithListAndApply represents a client with support for lists and apply declarative configurations.
    +type ClientWithListAndApply[T objectWithMeta, L runtime.Object, C namedObject] struct {
    +	*Client[T]
    +	alsoLister[T, L]
    +	alsoApplier[T, C]
    +}
    +
    +// Helper types for composition
    +type alsoLister[T objectWithMeta, L runtime.Object] struct {
    +	client  *Client[T]
    +	newList func() L
    +}
    +
    +type alsoApplier[T objectWithMeta, C namedObject] struct {
    +	client *Client[T]
    +}
    +
    +type Option[T objectWithMeta] func(*Client[T])
    +
    +func PrefersProtobuf[T objectWithMeta]() Option[T] {
    +	return func(c *Client[T]) { c.prefersProtobuf = true }
    +}
    +
    +// NewClient constructs a client, namespaced or not, with no support for lists or apply.
    +// Non-namespaced clients are constructed by passing an empty namespace ("").
    +func NewClient[T objectWithMeta](
    +	resource string, client rest.Interface, parameterCodec runtime.ParameterCodec, namespace string, emptyObjectCreator func() T,
    +	options ...Option[T],
    +) *Client[T] {
    +	c := &Client[T]{
    +		resource:       resource,
    +		client:         client,
    +		parameterCodec: parameterCodec,
    +		namespace:      namespace,
    +		newObject:      emptyObjectCreator,
    +	}
    +	for _, option := range options {
    +		option(c)
    +	}
    +	return c
    +}
    +
    +// NewClientWithList constructs a namespaced client with support for lists.
    +func NewClientWithList[T objectWithMeta, L runtime.Object](
    +	resource string, client rest.Interface, parameterCodec runtime.ParameterCodec, namespace string, emptyObjectCreator func() T,
    +	emptyListCreator func() L, options ...Option[T],
    +) *ClientWithList[T, L] {
    +	typeClient := NewClient[T](resource, client, parameterCodec, namespace, emptyObjectCreator, options...)
    +	return &ClientWithList[T, L]{
    +		typeClient,
    +		alsoLister[T, L]{typeClient, emptyListCreator},
    +	}
    +}
    +
    +// NewClientWithApply constructs a namespaced client with support for apply declarative configurations.
    +func NewClientWithApply[T objectWithMeta, C namedObject](
    +	resource string, client rest.Interface, parameterCodec runtime.ParameterCodec, namespace string, emptyObjectCreator func() T,
    +	options ...Option[T],
    +) *ClientWithApply[T, C] {
    +	typeClient := NewClient[T](resource, client, parameterCodec, namespace, emptyObjectCreator, options...)
    +	return &ClientWithApply[T, C]{
    +		typeClient,
    +		alsoApplier[T, C]{typeClient},
    +	}
    +}
    +
    +// NewClientWithListAndApply constructs a client with support for lists and applying declarative configurations.
    +func NewClientWithListAndApply[T objectWithMeta, L runtime.Object, C namedObject](
    +	resource string, client rest.Interface, parameterCodec runtime.ParameterCodec, namespace string, emptyObjectCreator func() T,
    +	emptyListCreator func() L, options ...Option[T],
    +) *ClientWithListAndApply[T, L, C] {
    +	typeClient := NewClient[T](resource, client, parameterCodec, namespace, emptyObjectCreator, options...)
    +	return &ClientWithListAndApply[T, L, C]{
    +		typeClient,
    +		alsoLister[T, L]{typeClient, emptyListCreator},
    +		alsoApplier[T, C]{typeClient},
    +	}
    +}
    +
    +// GetClient returns the REST interface.
    +func (c *Client[T]) GetClient() rest.Interface {
    +	return c.client
    +}
    +
    +// GetNamespace returns the client's namespace, if any.
    +func (c *Client[T]) GetNamespace() string {
    +	return c.namespace
    +}
    +
    +// Get takes name of the resource, and returns the corresponding object, and an error if there is any.
    +func (c *Client[T]) Get(ctx context.Context, name string, options metav1.GetOptions) (T, error) {
    +	result := c.newObject()
    +	err := c.client.Get().
    +		UseProtobufAsDefaultIfPreferred(c.prefersProtobuf).
    +		NamespaceIfScoped(c.namespace, c.namespace != "").
    +		Resource(c.resource).
    +		Name(name).
    +		VersionedParams(&options, c.parameterCodec).
    +		Do(ctx).
    +		Into(result)
    +	return result, err
    +}
    +
    +// List takes label and field selectors, and returns the list of resources that match those selectors.
    +func (l *alsoLister[T, L]) List(ctx context.Context, opts metav1.ListOptions) (L, error) {
    +	if watchListOptions, hasWatchListOptionsPrepared, watchListOptionsErr := watchlist.PrepareWatchListOptionsFromListOptions(opts); watchListOptionsErr != nil {
    +		klog.Warningf("Failed preparing watchlist options for $.type|resource$, falling back to the standard LIST semantics, err = %v", watchListOptionsErr)
    +	} else if hasWatchListOptionsPrepared {
    +		result, err := l.watchList(ctx, watchListOptions)
    +		if err == nil {
    +			consistencydetector.CheckWatchListFromCacheDataConsistencyIfRequested(ctx, "watchlist request for "+l.client.resource, l.list, opts, result)
    +			return result, nil
    +		}
    +		klog.Warningf("The watchlist request for %s ended with an error, falling back to the standard LIST semantics, err = %v", l.client.resource, err)
    +	}
    +	result, err := l.list(ctx, opts)
    +	if err == nil {
    +		consistencydetector.CheckListFromCacheDataConsistencyIfRequested(ctx, "list request for "+l.client.resource, l.list, opts, result)
    +	}
    +	return result, err
    +}
    +
    +func (l *alsoLister[T, L]) list(ctx context.Context, opts metav1.ListOptions) (L, error) {
    +	list := l.newList()
    +	var timeout time.Duration
    +	if opts.TimeoutSeconds != nil {
    +		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    +	}
    +	err := l.client.client.Get().
    +		UseProtobufAsDefaultIfPreferred(l.client.prefersProtobuf).
    +		NamespaceIfScoped(l.client.namespace, l.client.namespace != "").
    +		Resource(l.client.resource).
    +		VersionedParams(&opts, l.client.parameterCodec).
    +		Timeout(timeout).
    +		Do(ctx).
    +		Into(list)
    +	return list, err
    +}
    +
    +// watchList establishes a watch stream with the server and returns the list of resources.
    +func (l *alsoLister[T, L]) watchList(ctx context.Context, opts metav1.ListOptions) (result L, err error) {
    +	var timeout time.Duration
    +	if opts.TimeoutSeconds != nil {
    +		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    +	}
    +	result = l.newList()
    +	err = l.client.client.Get().
    +		UseProtobufAsDefaultIfPreferred(l.client.prefersProtobuf).
    +		NamespaceIfScoped(l.client.namespace, l.client.namespace != "").
    +		Resource(l.client.resource).
    +		VersionedParams(&opts, l.client.parameterCodec).
    +		Timeout(timeout).
    +		WatchList(ctx).
    +		Into(result)
    +	return
    +}
    +
    +// Watch returns a watch.Interface that watches the requested resources.
    +func (c *Client[T]) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    +	var timeout time.Duration
    +	if opts.TimeoutSeconds != nil {
    +		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    +	}
    +	opts.Watch = true
    +	return c.client.Get().
    +		UseProtobufAsDefaultIfPreferred(c.prefersProtobuf).
    +		NamespaceIfScoped(c.namespace, c.namespace != "").
    +		Resource(c.resource).
    +		VersionedParams(&opts, c.parameterCodec).
    +		Timeout(timeout).
    +		Watch(ctx)
    +}
    +
    +// Create takes the representation of a resource and creates it.  Returns the server's representation of the resource, and an error, if there is any.
    +func (c *Client[T]) Create(ctx context.Context, obj T, opts metav1.CreateOptions) (T, error) {
    +	result := c.newObject()
    +	err := c.client.Post().
    +		UseProtobufAsDefaultIfPreferred(c.prefersProtobuf).
    +		NamespaceIfScoped(c.namespace, c.namespace != "").
    +		Resource(c.resource).
    +		VersionedParams(&opts, c.parameterCodec).
    +		Body(obj).
    +		Do(ctx).
    +		Into(result)
    +	return result, err
    +}
    +
    +// Update takes the representation of a resource and updates it. Returns the server's representation of the resource, and an error, if there is any.
    +func (c *Client[T]) Update(ctx context.Context, obj T, opts metav1.UpdateOptions) (T, error) {
    +	result := c.newObject()
    +	err := c.client.Put().
    +		UseProtobufAsDefaultIfPreferred(c.prefersProtobuf).
    +		NamespaceIfScoped(c.namespace, c.namespace != "").
    +		Resource(c.resource).
    +		Name(obj.GetName()).
    +		VersionedParams(&opts, c.parameterCodec).
    +		Body(obj).
    +		Do(ctx).
    +		Into(result)
    +	return result, err
    +}
    +
    +// UpdateStatus updates the status subresource of a resource. Returns the server's representation of the resource, and an error, if there is any.
    +func (c *Client[T]) UpdateStatus(ctx context.Context, obj T, opts metav1.UpdateOptions) (T, error) {
    +	result := c.newObject()
    +	err := c.client.Put().
    +		UseProtobufAsDefaultIfPreferred(c.prefersProtobuf).
    +		NamespaceIfScoped(c.namespace, c.namespace != "").
    +		Resource(c.resource).
    +		Name(obj.GetName()).
    +		SubResource("status").
    +		VersionedParams(&opts, c.parameterCodec).
    +		Body(obj).
    +		Do(ctx).
    +		Into(result)
    +	return result, err
    +}
    +
    +// Delete takes name of the resource and deletes it. Returns an error if one occurs.
    +func (c *Client[T]) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    +	return c.client.Delete().
    +		UseProtobufAsDefaultIfPreferred(c.prefersProtobuf).
    +		NamespaceIfScoped(c.namespace, c.namespace != "").
    +		Resource(c.resource).
    +		Name(name).
    +		Body(&opts).
    +		Do(ctx).
    +		Error()
    +}
    +
    +// DeleteCollection deletes a collection of objects.
    +func (l *alsoLister[T, L]) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    +	var timeout time.Duration
    +	if listOpts.TimeoutSeconds != nil {
    +		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    +	}
    +	return l.client.client.Delete().
    +		UseProtobufAsDefaultIfPreferred(l.client.prefersProtobuf).
    +		NamespaceIfScoped(l.client.namespace, l.client.namespace != "").
    +		Resource(l.client.resource).
    +		VersionedParams(&listOpts, l.client.parameterCodec).
    +		Timeout(timeout).
    +		Body(&opts).
    +		Do(ctx).
    +		Error()
    +}
    +
    +// Patch applies the patch and returns the patched resource.
    +func (c *Client[T]) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (T, error) {
    +	result := c.newObject()
    +	err := c.client.Patch(pt).
    +		UseProtobufAsDefaultIfPreferred(c.prefersProtobuf).
    +		NamespaceIfScoped(c.namespace, c.namespace != "").
    +		Resource(c.resource).
    +		Name(name).
    +		SubResource(subresources...).
    +		VersionedParams(&opts, c.parameterCodec).
    +		Body(data).
    +		Do(ctx).
    +		Into(result)
    +	return result, err
    +}
    +
    +// Apply takes the given apply declarative configuration, applies it and returns the applied resource.
    +func (a *alsoApplier[T, C]) Apply(ctx context.Context, obj C, opts metav1.ApplyOptions) (T, error) {
    +	result := a.client.newObject()
    +	if obj == *new(C) {
    +		return *new(T), fmt.Errorf("object provided to Apply must not be nil")
    +	}
    +	patchOpts := opts.ToPatchOptions()
    +	if obj.GetName() == nil {
    +		return *new(T), fmt.Errorf("obj.Name must be provided to Apply")
    +	}
    +
    +	request, err := apply.NewRequest(a.client.client, obj)
    +	if err != nil {
    +		return *new(T), err
    +	}
    +
    +	err = request.
    +		UseProtobufAsDefaultIfPreferred(a.client.prefersProtobuf).
    +		NamespaceIfScoped(a.client.namespace, a.client.namespace != "").
    +		Resource(a.client.resource).
    +		Name(*obj.GetName()).
    +		VersionedParams(&patchOpts, a.client.parameterCodec).
    +		Do(ctx).
    +		Into(result)
    +	return result, err
    +}
    +
    +// Apply takes the given apply declarative configuration, applies it to the status subresource and returns the applied resource.
    +func (a *alsoApplier[T, C]) ApplyStatus(ctx context.Context, obj C, opts metav1.ApplyOptions) (T, error) {
    +	if obj == *new(C) {
    +		return *new(T), fmt.Errorf("object provided to Apply must not be nil")
    +	}
    +	patchOpts := opts.ToPatchOptions()
    +
    +	if obj.GetName() == nil {
    +		return *new(T), fmt.Errorf("obj.Name must be provided to Apply")
    +	}
    +
    +	request, err := apply.NewRequest(a.client.client, obj)
    +	if err != nil {
    +		return *new(T), err
    +	}
    +
    +	result := a.client.newObject()
    +	err = request.
    +		UseProtobufAsDefaultIfPreferred(a.client.prefersProtobuf).
    +		NamespaceIfScoped(a.client.namespace, a.client.namespace != "").
    +		Resource(a.client.resource).
    +		Name(*obj.GetName()).
    +		SubResource("status").
    +		VersionedParams(&patchOpts, a.client.parameterCodec).
    +		Do(ctx).
    +		Into(result)
    +	return result, err
    +}
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1/interface.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1/interface.go
    index 1ecae9ecf70a..08769d3cca4a 100644
    --- a/vendor/k8s.io/client-go/informers/admissionregistration/v1/interface.go
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1/interface.go
    @@ -26,6 +26,10 @@ import (
     type Interface interface {
     	// MutatingWebhookConfigurations returns a MutatingWebhookConfigurationInformer.
     	MutatingWebhookConfigurations() MutatingWebhookConfigurationInformer
    +	// ValidatingAdmissionPolicies returns a ValidatingAdmissionPolicyInformer.
    +	ValidatingAdmissionPolicies() ValidatingAdmissionPolicyInformer
    +	// ValidatingAdmissionPolicyBindings returns a ValidatingAdmissionPolicyBindingInformer.
    +	ValidatingAdmissionPolicyBindings() ValidatingAdmissionPolicyBindingInformer
     	// ValidatingWebhookConfigurations returns a ValidatingWebhookConfigurationInformer.
     	ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInformer
     }
    @@ -46,6 +50,16 @@ func (v *version) MutatingWebhookConfigurations() MutatingWebhookConfigurationIn
     	return &mutatingWebhookConfigurationInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
     }
     
    +// ValidatingAdmissionPolicies returns a ValidatingAdmissionPolicyInformer.
    +func (v *version) ValidatingAdmissionPolicies() ValidatingAdmissionPolicyInformer {
    +	return &validatingAdmissionPolicyInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +}
    +
    +// ValidatingAdmissionPolicyBindings returns a ValidatingAdmissionPolicyBindingInformer.
    +func (v *version) ValidatingAdmissionPolicyBindings() ValidatingAdmissionPolicyBindingInformer {
    +	return &validatingAdmissionPolicyBindingInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +}
    +
     // ValidatingWebhookConfigurations returns a ValidatingWebhookConfigurationInformer.
     func (v *version) ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInformer {
     	return &validatingWebhookConfigurationInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1/mutatingwebhookconfiguration.go
    index b768f6f7f399..11c67480f918 100644
    --- a/vendor/k8s.io/client-go/informers/admissionregistration/v1/mutatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1/mutatingwebhookconfiguration.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	apiadmissionregistrationv1 "k8s.io/api/admissionregistration/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/admissionregistration/v1"
    +	admissionregistrationv1 "k8s.io/client-go/listers/admissionregistration/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // MutatingWebhookConfigurations.
     type MutatingWebhookConfigurationInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.MutatingWebhookConfigurationLister
    +	Lister() admissionregistrationv1.MutatingWebhookConfigurationLister
     }
     
     type mutatingWebhookConfigurationInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredMutatingWebhookConfigurationInformer(client kubernetes.Interface
     				return client.AdmissionregistrationV1().MutatingWebhookConfigurations().Watch(context.TODO(), options)
     			},
     		},
    -		&admissionregistrationv1.MutatingWebhookConfiguration{},
    +		&apiadmissionregistrationv1.MutatingWebhookConfiguration{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *mutatingWebhookConfigurationInformer) defaultInformer(client kubernetes
     }
     
     func (f *mutatingWebhookConfigurationInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&admissionregistrationv1.MutatingWebhookConfiguration{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiadmissionregistrationv1.MutatingWebhookConfiguration{}, f.defaultInformer)
     }
     
    -func (f *mutatingWebhookConfigurationInformer) Lister() v1.MutatingWebhookConfigurationLister {
    -	return v1.NewMutatingWebhookConfigurationLister(f.Informer().GetIndexer())
    +func (f *mutatingWebhookConfigurationInformer) Lister() admissionregistrationv1.MutatingWebhookConfigurationLister {
    +	return admissionregistrationv1.NewMutatingWebhookConfigurationLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingadmissionpolicy.go
    new file mode 100644
    index 000000000000..e6974238c6cd
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingadmissionpolicy.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apiadmissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	admissionregistrationv1 "k8s.io/client-go/listers/admissionregistration/v1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ValidatingAdmissionPolicyInformer provides access to a shared informer and lister for
    +// ValidatingAdmissionPolicies.
    +type ValidatingAdmissionPolicyInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() admissionregistrationv1.ValidatingAdmissionPolicyLister
    +}
    +
    +type validatingAdmissionPolicyInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewValidatingAdmissionPolicyInformer constructs a new informer for ValidatingAdmissionPolicy type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewValidatingAdmissionPolicyInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredValidatingAdmissionPolicyInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredValidatingAdmissionPolicyInformer constructs a new informer for ValidatingAdmissionPolicy type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredValidatingAdmissionPolicyInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.AdmissionregistrationV1().ValidatingAdmissionPolicies().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.AdmissionregistrationV1().ValidatingAdmissionPolicies().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apiadmissionregistrationv1.ValidatingAdmissionPolicy{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *validatingAdmissionPolicyInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredValidatingAdmissionPolicyInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *validatingAdmissionPolicyInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apiadmissionregistrationv1.ValidatingAdmissionPolicy{}, f.defaultInformer)
    +}
    +
    +func (f *validatingAdmissionPolicyInformer) Lister() admissionregistrationv1.ValidatingAdmissionPolicyLister {
    +	return admissionregistrationv1.NewValidatingAdmissionPolicyLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingadmissionpolicybinding.go
    new file mode 100644
    index 000000000000..34067ca38371
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingadmissionpolicybinding.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apiadmissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	admissionregistrationv1 "k8s.io/client-go/listers/admissionregistration/v1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ValidatingAdmissionPolicyBindingInformer provides access to a shared informer and lister for
    +// ValidatingAdmissionPolicyBindings.
    +type ValidatingAdmissionPolicyBindingInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() admissionregistrationv1.ValidatingAdmissionPolicyBindingLister
    +}
    +
    +type validatingAdmissionPolicyBindingInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewValidatingAdmissionPolicyBindingInformer constructs a new informer for ValidatingAdmissionPolicyBinding type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewValidatingAdmissionPolicyBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredValidatingAdmissionPolicyBindingInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredValidatingAdmissionPolicyBindingInformer constructs a new informer for ValidatingAdmissionPolicyBinding type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredValidatingAdmissionPolicyBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.AdmissionregistrationV1().ValidatingAdmissionPolicyBindings().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.AdmissionregistrationV1().ValidatingAdmissionPolicyBindings().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apiadmissionregistrationv1.ValidatingAdmissionPolicyBinding{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *validatingAdmissionPolicyBindingInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredValidatingAdmissionPolicyBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *validatingAdmissionPolicyBindingInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apiadmissionregistrationv1.ValidatingAdmissionPolicyBinding{}, f.defaultInformer)
    +}
    +
    +func (f *validatingAdmissionPolicyBindingInformer) Lister() admissionregistrationv1.ValidatingAdmissionPolicyBindingLister {
    +	return admissionregistrationv1.NewValidatingAdmissionPolicyBindingLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingwebhookconfiguration.go
    index 8ddcdf2d905c..42ca69c228ca 100644
    --- a/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingwebhookconfiguration.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	apiadmissionregistrationv1 "k8s.io/api/admissionregistration/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/admissionregistration/v1"
    +	admissionregistrationv1 "k8s.io/client-go/listers/admissionregistration/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ValidatingWebhookConfigurations.
     type ValidatingWebhookConfigurationInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ValidatingWebhookConfigurationLister
    +	Lister() admissionregistrationv1.ValidatingWebhookConfigurationLister
     }
     
     type validatingWebhookConfigurationInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredValidatingWebhookConfigurationInformer(client kubernetes.Interfa
     				return client.AdmissionregistrationV1().ValidatingWebhookConfigurations().Watch(context.TODO(), options)
     			},
     		},
    -		&admissionregistrationv1.ValidatingWebhookConfiguration{},
    +		&apiadmissionregistrationv1.ValidatingWebhookConfiguration{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *validatingWebhookConfigurationInformer) defaultInformer(client kubernet
     }
     
     func (f *validatingWebhookConfigurationInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&admissionregistrationv1.ValidatingWebhookConfiguration{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiadmissionregistrationv1.ValidatingWebhookConfiguration{}, f.defaultInformer)
     }
     
    -func (f *validatingWebhookConfigurationInformer) Lister() v1.ValidatingWebhookConfigurationLister {
    -	return v1.NewValidatingWebhookConfigurationLister(f.Informer().GetIndexer())
    +func (f *validatingWebhookConfigurationInformer) Lister() admissionregistrationv1.ValidatingWebhookConfigurationLister {
    +	return admissionregistrationv1.NewValidatingWebhookConfigurationLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go
    index 738063ee72ef..68ae4e25cb81 100644
    --- a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go
    @@ -24,6 +24,10 @@ import (
     
     // Interface provides access to all the informers in this group version.
     type Interface interface {
    +	// MutatingAdmissionPolicies returns a MutatingAdmissionPolicyInformer.
    +	MutatingAdmissionPolicies() MutatingAdmissionPolicyInformer
    +	// MutatingAdmissionPolicyBindings returns a MutatingAdmissionPolicyBindingInformer.
    +	MutatingAdmissionPolicyBindings() MutatingAdmissionPolicyBindingInformer
     	// ValidatingAdmissionPolicies returns a ValidatingAdmissionPolicyInformer.
     	ValidatingAdmissionPolicies() ValidatingAdmissionPolicyInformer
     	// ValidatingAdmissionPolicyBindings returns a ValidatingAdmissionPolicyBindingInformer.
    @@ -41,6 +45,16 @@ func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakList
     	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
     }
     
    +// MutatingAdmissionPolicies returns a MutatingAdmissionPolicyInformer.
    +func (v *version) MutatingAdmissionPolicies() MutatingAdmissionPolicyInformer {
    +	return &mutatingAdmissionPolicyInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +}
    +
    +// MutatingAdmissionPolicyBindings returns a MutatingAdmissionPolicyBindingInformer.
    +func (v *version) MutatingAdmissionPolicyBindings() MutatingAdmissionPolicyBindingInformer {
    +	return &mutatingAdmissionPolicyBindingInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +}
    +
     // ValidatingAdmissionPolicies returns a ValidatingAdmissionPolicyInformer.
     func (v *version) ValidatingAdmissionPolicies() ValidatingAdmissionPolicyInformer {
     	return &validatingAdmissionPolicyInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/mutatingadmissionpolicy.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/mutatingadmissionpolicy.go
    new file mode 100644
    index 000000000000..5a23158bfa4c
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/mutatingadmissionpolicy.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apiadmissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	admissionregistrationv1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// MutatingAdmissionPolicyInformer provides access to a shared informer and lister for
    +// MutatingAdmissionPolicies.
    +type MutatingAdmissionPolicyInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() admissionregistrationv1alpha1.MutatingAdmissionPolicyLister
    +}
    +
    +type mutatingAdmissionPolicyInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewMutatingAdmissionPolicyInformer constructs a new informer for MutatingAdmissionPolicy type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewMutatingAdmissionPolicyInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredMutatingAdmissionPolicyInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredMutatingAdmissionPolicyInformer constructs a new informer for MutatingAdmissionPolicy type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredMutatingAdmissionPolicyInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.AdmissionregistrationV1alpha1().MutatingAdmissionPolicies().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.AdmissionregistrationV1alpha1().MutatingAdmissionPolicies().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apiadmissionregistrationv1alpha1.MutatingAdmissionPolicy{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *mutatingAdmissionPolicyInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredMutatingAdmissionPolicyInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *mutatingAdmissionPolicyInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apiadmissionregistrationv1alpha1.MutatingAdmissionPolicy{}, f.defaultInformer)
    +}
    +
    +func (f *mutatingAdmissionPolicyInformer) Lister() admissionregistrationv1alpha1.MutatingAdmissionPolicyLister {
    +	return admissionregistrationv1alpha1.NewMutatingAdmissionPolicyLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go
    new file mode 100644
    index 000000000000..efa143fe5550
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apiadmissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	admissionregistrationv1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// MutatingAdmissionPolicyBindingInformer provides access to a shared informer and lister for
    +// MutatingAdmissionPolicyBindings.
    +type MutatingAdmissionPolicyBindingInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingLister
    +}
    +
    +type mutatingAdmissionPolicyBindingInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewMutatingAdmissionPolicyBindingInformer constructs a new informer for MutatingAdmissionPolicyBinding type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewMutatingAdmissionPolicyBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredMutatingAdmissionPolicyBindingInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredMutatingAdmissionPolicyBindingInformer constructs a new informer for MutatingAdmissionPolicyBinding type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredMutatingAdmissionPolicyBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.AdmissionregistrationV1alpha1().MutatingAdmissionPolicyBindings().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.AdmissionregistrationV1alpha1().MutatingAdmissionPolicyBindings().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apiadmissionregistrationv1alpha1.MutatingAdmissionPolicyBinding{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *mutatingAdmissionPolicyBindingInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredMutatingAdmissionPolicyBindingInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *mutatingAdmissionPolicyBindingInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apiadmissionregistrationv1alpha1.MutatingAdmissionPolicyBinding{}, f.defaultInformer)
    +}
    +
    +func (f *mutatingAdmissionPolicyBindingInformer) Lister() admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingLister {
    +	return admissionregistrationv1alpha1.NewMutatingAdmissionPolicyBindingLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    index 01b8a4ab8e3b..aaae7b297f0d 100644
    --- a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	apiadmissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1"
    +	admissionregistrationv1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ValidatingAdmissionPolicies.
     type ValidatingAdmissionPolicyInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.ValidatingAdmissionPolicyLister
    +	Lister() admissionregistrationv1alpha1.ValidatingAdmissionPolicyLister
     }
     
     type validatingAdmissionPolicyInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredValidatingAdmissionPolicyInformer(client kubernetes.Interface, r
     				return client.AdmissionregistrationV1alpha1().ValidatingAdmissionPolicies().Watch(context.TODO(), options)
     			},
     		},
    -		&admissionregistrationv1alpha1.ValidatingAdmissionPolicy{},
    +		&apiadmissionregistrationv1alpha1.ValidatingAdmissionPolicy{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *validatingAdmissionPolicyInformer) defaultInformer(client kubernetes.In
     }
     
     func (f *validatingAdmissionPolicyInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&admissionregistrationv1alpha1.ValidatingAdmissionPolicy{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiadmissionregistrationv1alpha1.ValidatingAdmissionPolicy{}, f.defaultInformer)
     }
     
    -func (f *validatingAdmissionPolicyInformer) Lister() v1alpha1.ValidatingAdmissionPolicyLister {
    -	return v1alpha1.NewValidatingAdmissionPolicyLister(f.Informer().GetIndexer())
    +func (f *validatingAdmissionPolicyInformer) Lister() admissionregistrationv1alpha1.ValidatingAdmissionPolicyLister {
    +	return admissionregistrationv1alpha1.NewValidatingAdmissionPolicyLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    index bd531512b605..d62c59061cff 100644
    --- a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	apiadmissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1"
    +	admissionregistrationv1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ValidatingAdmissionPolicyBindings.
     type ValidatingAdmissionPolicyBindingInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.ValidatingAdmissionPolicyBindingLister
    +	Lister() admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingLister
     }
     
     type validatingAdmissionPolicyBindingInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredValidatingAdmissionPolicyBindingInformer(client kubernetes.Inter
     				return client.AdmissionregistrationV1alpha1().ValidatingAdmissionPolicyBindings().Watch(context.TODO(), options)
     			},
     		},
    -		&admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding{},
    +		&apiadmissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *validatingAdmissionPolicyBindingInformer) defaultInformer(client kubern
     }
     
     func (f *validatingAdmissionPolicyBindingInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiadmissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding{}, f.defaultInformer)
     }
     
    -func (f *validatingAdmissionPolicyBindingInformer) Lister() v1alpha1.ValidatingAdmissionPolicyBindingLister {
    -	return v1alpha1.NewValidatingAdmissionPolicyBindingLister(f.Informer().GetIndexer())
    +func (f *validatingAdmissionPolicyBindingInformer) Lister() admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingLister {
    +	return admissionregistrationv1alpha1.NewValidatingAdmissionPolicyBindingLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    index 12c8ec1fbddd..c6ca36ea292b 100644
    --- a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	apiadmissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/admissionregistration/v1beta1"
    +	admissionregistrationv1beta1 "k8s.io/client-go/listers/admissionregistration/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // MutatingWebhookConfigurations.
     type MutatingWebhookConfigurationInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.MutatingWebhookConfigurationLister
    +	Lister() admissionregistrationv1beta1.MutatingWebhookConfigurationLister
     }
     
     type mutatingWebhookConfigurationInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredMutatingWebhookConfigurationInformer(client kubernetes.Interface
     				return client.AdmissionregistrationV1beta1().MutatingWebhookConfigurations().Watch(context.TODO(), options)
     			},
     		},
    -		&admissionregistrationv1beta1.MutatingWebhookConfiguration{},
    +		&apiadmissionregistrationv1beta1.MutatingWebhookConfiguration{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *mutatingWebhookConfigurationInformer) defaultInformer(client kubernetes
     }
     
     func (f *mutatingWebhookConfigurationInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&admissionregistrationv1beta1.MutatingWebhookConfiguration{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiadmissionregistrationv1beta1.MutatingWebhookConfiguration{}, f.defaultInformer)
     }
     
    -func (f *mutatingWebhookConfigurationInformer) Lister() v1beta1.MutatingWebhookConfigurationLister {
    -	return v1beta1.NewMutatingWebhookConfigurationLister(f.Informer().GetIndexer())
    +func (f *mutatingWebhookConfigurationInformer) Lister() admissionregistrationv1beta1.MutatingWebhookConfigurationLister {
    +	return admissionregistrationv1beta1.NewMutatingWebhookConfigurationLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingadmissionpolicy.go
    index d0e9cd64c82f..d5b4204f1b63 100644
    --- a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingadmissionpolicy.go
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingadmissionpolicy.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	apiadmissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/admissionregistration/v1beta1"
    +	admissionregistrationv1beta1 "k8s.io/client-go/listers/admissionregistration/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ValidatingAdmissionPolicies.
     type ValidatingAdmissionPolicyInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.ValidatingAdmissionPolicyLister
    +	Lister() admissionregistrationv1beta1.ValidatingAdmissionPolicyLister
     }
     
     type validatingAdmissionPolicyInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredValidatingAdmissionPolicyInformer(client kubernetes.Interface, r
     				return client.AdmissionregistrationV1beta1().ValidatingAdmissionPolicies().Watch(context.TODO(), options)
     			},
     		},
    -		&admissionregistrationv1beta1.ValidatingAdmissionPolicy{},
    +		&apiadmissionregistrationv1beta1.ValidatingAdmissionPolicy{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *validatingAdmissionPolicyInformer) defaultInformer(client kubernetes.In
     }
     
     func (f *validatingAdmissionPolicyInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&admissionregistrationv1beta1.ValidatingAdmissionPolicy{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiadmissionregistrationv1beta1.ValidatingAdmissionPolicy{}, f.defaultInformer)
     }
     
    -func (f *validatingAdmissionPolicyInformer) Lister() v1beta1.ValidatingAdmissionPolicyLister {
    -	return v1beta1.NewValidatingAdmissionPolicyLister(f.Informer().GetIndexer())
    +func (f *validatingAdmissionPolicyInformer) Lister() admissionregistrationv1beta1.ValidatingAdmissionPolicyLister {
    +	return admissionregistrationv1beta1.NewValidatingAdmissionPolicyLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    index 7641e9940670..dbb5153ef3af 100644
    --- a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	apiadmissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/admissionregistration/v1beta1"
    +	admissionregistrationv1beta1 "k8s.io/client-go/listers/admissionregistration/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ValidatingAdmissionPolicyBindings.
     type ValidatingAdmissionPolicyBindingInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.ValidatingAdmissionPolicyBindingLister
    +	Lister() admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingLister
     }
     
     type validatingAdmissionPolicyBindingInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredValidatingAdmissionPolicyBindingInformer(client kubernetes.Inter
     				return client.AdmissionregistrationV1beta1().ValidatingAdmissionPolicyBindings().Watch(context.TODO(), options)
     			},
     		},
    -		&admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding{},
    +		&apiadmissionregistrationv1beta1.ValidatingAdmissionPolicyBinding{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *validatingAdmissionPolicyBindingInformer) defaultInformer(client kubern
     }
     
     func (f *validatingAdmissionPolicyBindingInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiadmissionregistrationv1beta1.ValidatingAdmissionPolicyBinding{}, f.defaultInformer)
     }
     
    -func (f *validatingAdmissionPolicyBindingInformer) Lister() v1beta1.ValidatingAdmissionPolicyBindingLister {
    -	return v1beta1.NewValidatingAdmissionPolicyBindingLister(f.Informer().GetIndexer())
    +func (f *validatingAdmissionPolicyBindingInformer) Lister() admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingLister {
    +	return admissionregistrationv1beta1.NewValidatingAdmissionPolicyBindingLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    index 05eb05097f57..602b361afa4d 100644
    --- a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	apiadmissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/admissionregistration/v1beta1"
    +	admissionregistrationv1beta1 "k8s.io/client-go/listers/admissionregistration/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ValidatingWebhookConfigurations.
     type ValidatingWebhookConfigurationInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.ValidatingWebhookConfigurationLister
    +	Lister() admissionregistrationv1beta1.ValidatingWebhookConfigurationLister
     }
     
     type validatingWebhookConfigurationInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredValidatingWebhookConfigurationInformer(client kubernetes.Interfa
     				return client.AdmissionregistrationV1beta1().ValidatingWebhookConfigurations().Watch(context.TODO(), options)
     			},
     		},
    -		&admissionregistrationv1beta1.ValidatingWebhookConfiguration{},
    +		&apiadmissionregistrationv1beta1.ValidatingWebhookConfiguration{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *validatingWebhookConfigurationInformer) defaultInformer(client kubernet
     }
     
     func (f *validatingWebhookConfigurationInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&admissionregistrationv1beta1.ValidatingWebhookConfiguration{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiadmissionregistrationv1beta1.ValidatingWebhookConfiguration{}, f.defaultInformer)
     }
     
    -func (f *validatingWebhookConfigurationInformer) Lister() v1beta1.ValidatingWebhookConfigurationLister {
    -	return v1beta1.NewValidatingWebhookConfigurationLister(f.Informer().GetIndexer())
    +func (f *validatingWebhookConfigurationInformer) Lister() admissionregistrationv1beta1.ValidatingWebhookConfigurationLister {
    +	return admissionregistrationv1beta1.NewValidatingWebhookConfigurationLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apiserverinternal/v1alpha1/storageversion.go b/vendor/k8s.io/client-go/informers/apiserverinternal/v1alpha1/storageversion.go
    index 34175b522d86..a99dbd17d251 100644
    --- a/vendor/k8s.io/client-go/informers/apiserverinternal/v1alpha1/storageversion.go
    +++ b/vendor/k8s.io/client-go/informers/apiserverinternal/v1alpha1/storageversion.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	apiserverinternalv1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
    +	apiapiserverinternalv1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/apiserverinternal/v1alpha1"
    +	apiserverinternalv1alpha1 "k8s.io/client-go/listers/apiserverinternal/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // StorageVersions.
     type StorageVersionInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.StorageVersionLister
    +	Lister() apiserverinternalv1alpha1.StorageVersionLister
     }
     
     type storageVersionInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredStorageVersionInformer(client kubernetes.Interface, resyncPeriod
     				return client.InternalV1alpha1().StorageVersions().Watch(context.TODO(), options)
     			},
     		},
    -		&apiserverinternalv1alpha1.StorageVersion{},
    +		&apiapiserverinternalv1alpha1.StorageVersion{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *storageVersionInformer) defaultInformer(client kubernetes.Interface, re
     }
     
     func (f *storageVersionInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&apiserverinternalv1alpha1.StorageVersion{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiapiserverinternalv1alpha1.StorageVersion{}, f.defaultInformer)
     }
     
    -func (f *storageVersionInformer) Lister() v1alpha1.StorageVersionLister {
    -	return v1alpha1.NewStorageVersionLister(f.Informer().GetIndexer())
    +func (f *storageVersionInformer) Lister() apiserverinternalv1alpha1.StorageVersionLister {
    +	return apiserverinternalv1alpha1.NewStorageVersionLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go b/vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go
    index 31e2b74d0f3e..334a1b8f8159 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1 "k8s.io/api/apps/v1"
    +	apiappsv1 "k8s.io/api/apps/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/apps/v1"
    +	appsv1 "k8s.io/client-go/listers/apps/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ControllerRevisions.
     type ControllerRevisionInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ControllerRevisionLister
    +	Lister() appsv1.ControllerRevisionLister
     }
     
     type controllerRevisionInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredControllerRevisionInformer(client kubernetes.Interface, namespac
     				return client.AppsV1().ControllerRevisions(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1.ControllerRevision{},
    +		&apiappsv1.ControllerRevision{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *controllerRevisionInformer) defaultInformer(client kubernetes.Interface
     }
     
     func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1.ControllerRevision{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1.ControllerRevision{}, f.defaultInformer)
     }
     
    -func (f *controllerRevisionInformer) Lister() v1.ControllerRevisionLister {
    -	return v1.NewControllerRevisionLister(f.Informer().GetIndexer())
    +func (f *controllerRevisionInformer) Lister() appsv1.ControllerRevisionLister {
    +	return appsv1.NewControllerRevisionLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1/daemonset.go b/vendor/k8s.io/client-go/informers/apps/v1/daemonset.go
    index da7fe9509b93..73adf8cbf810 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1/daemonset.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1/daemonset.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1 "k8s.io/api/apps/v1"
    +	apiappsv1 "k8s.io/api/apps/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/apps/v1"
    +	appsv1 "k8s.io/client-go/listers/apps/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // DaemonSets.
     type DaemonSetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.DaemonSetLister
    +	Lister() appsv1.DaemonSetLister
     }
     
     type daemonSetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredDaemonSetInformer(client kubernetes.Interface, namespace string,
     				return client.AppsV1().DaemonSets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1.DaemonSet{},
    +		&apiappsv1.DaemonSet{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *daemonSetInformer) defaultInformer(client kubernetes.Interface, resyncP
     }
     
     func (f *daemonSetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1.DaemonSet{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1.DaemonSet{}, f.defaultInformer)
     }
     
    -func (f *daemonSetInformer) Lister() v1.DaemonSetLister {
    -	return v1.NewDaemonSetLister(f.Informer().GetIndexer())
    +func (f *daemonSetInformer) Lister() appsv1.DaemonSetLister {
    +	return appsv1.NewDaemonSetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1/deployment.go b/vendor/k8s.io/client-go/informers/apps/v1/deployment.go
    index bd639bb3d907..f9314844ccd0 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1/deployment.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1/deployment.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1 "k8s.io/api/apps/v1"
    +	apiappsv1 "k8s.io/api/apps/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/apps/v1"
    +	appsv1 "k8s.io/client-go/listers/apps/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Deployments.
     type DeploymentInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.DeploymentLister
    +	Lister() appsv1.DeploymentLister
     }
     
     type deploymentInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string
     				return client.AppsV1().Deployments(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1.Deployment{},
    +		&apiappsv1.Deployment{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *deploymentInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1.Deployment{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1.Deployment{}, f.defaultInformer)
     }
     
    -func (f *deploymentInformer) Lister() v1.DeploymentLister {
    -	return v1.NewDeploymentLister(f.Informer().GetIndexer())
    +func (f *deploymentInformer) Lister() appsv1.DeploymentLister {
    +	return appsv1.NewDeploymentLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1/replicaset.go b/vendor/k8s.io/client-go/informers/apps/v1/replicaset.go
    index 6d81a471a448..dfa8ae87a920 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1/replicaset.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1/replicaset.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1 "k8s.io/api/apps/v1"
    +	apiappsv1 "k8s.io/api/apps/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/apps/v1"
    +	appsv1 "k8s.io/client-go/listers/apps/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ReplicaSets.
     type ReplicaSetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ReplicaSetLister
    +	Lister() appsv1.ReplicaSetLister
     }
     
     type replicaSetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredReplicaSetInformer(client kubernetes.Interface, namespace string
     				return client.AppsV1().ReplicaSets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1.ReplicaSet{},
    +		&apiappsv1.ReplicaSet{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *replicaSetInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *replicaSetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1.ReplicaSet{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1.ReplicaSet{}, f.defaultInformer)
     }
     
    -func (f *replicaSetInformer) Lister() v1.ReplicaSetLister {
    -	return v1.NewReplicaSetLister(f.Informer().GetIndexer())
    +func (f *replicaSetInformer) Lister() appsv1.ReplicaSetLister {
    +	return appsv1.NewReplicaSetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1/statefulset.go b/vendor/k8s.io/client-go/informers/apps/v1/statefulset.go
    index c99bbb73ed83..84ca50123f9a 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1/statefulset.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1/statefulset.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1 "k8s.io/api/apps/v1"
    +	apiappsv1 "k8s.io/api/apps/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/apps/v1"
    +	appsv1 "k8s.io/client-go/listers/apps/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // StatefulSets.
     type StatefulSetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.StatefulSetLister
    +	Lister() appsv1.StatefulSetLister
     }
     
     type statefulSetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredStatefulSetInformer(client kubernetes.Interface, namespace strin
     				return client.AppsV1().StatefulSets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1.StatefulSet{},
    +		&apiappsv1.StatefulSet{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *statefulSetInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *statefulSetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1.StatefulSet{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1.StatefulSet{}, f.defaultInformer)
     }
     
    -func (f *statefulSetInformer) Lister() v1.StatefulSetLister {
    -	return v1.NewStatefulSetLister(f.Informer().GetIndexer())
    +func (f *statefulSetInformer) Lister() appsv1.StatefulSetLister {
    +	return appsv1.NewStatefulSetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go
    index cb36bd7fd84a..c0a51dbe3663 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1beta1 "k8s.io/api/apps/v1beta1"
    +	apiappsv1beta1 "k8s.io/api/apps/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/apps/v1beta1"
    +	appsv1beta1 "k8s.io/client-go/listers/apps/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ControllerRevisions.
     type ControllerRevisionInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.ControllerRevisionLister
    +	Lister() appsv1beta1.ControllerRevisionLister
     }
     
     type controllerRevisionInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredControllerRevisionInformer(client kubernetes.Interface, namespac
     				return client.AppsV1beta1().ControllerRevisions(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1beta1.ControllerRevision{},
    +		&apiappsv1beta1.ControllerRevision{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *controllerRevisionInformer) defaultInformer(client kubernetes.Interface
     }
     
     func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1beta1.ControllerRevision{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1beta1.ControllerRevision{}, f.defaultInformer)
     }
     
    -func (f *controllerRevisionInformer) Lister() v1beta1.ControllerRevisionLister {
    -	return v1beta1.NewControllerRevisionLister(f.Informer().GetIndexer())
    +func (f *controllerRevisionInformer) Lister() appsv1beta1.ControllerRevisionLister {
    +	return appsv1beta1.NewControllerRevisionLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go
    index e02a13c2f4c5..027ae402d70c 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1beta1 "k8s.io/api/apps/v1beta1"
    +	apiappsv1beta1 "k8s.io/api/apps/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/apps/v1beta1"
    +	appsv1beta1 "k8s.io/client-go/listers/apps/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Deployments.
     type DeploymentInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.DeploymentLister
    +	Lister() appsv1beta1.DeploymentLister
     }
     
     type deploymentInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string
     				return client.AppsV1beta1().Deployments(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1beta1.Deployment{},
    +		&apiappsv1beta1.Deployment{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *deploymentInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1beta1.Deployment{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1beta1.Deployment{}, f.defaultInformer)
     }
     
    -func (f *deploymentInformer) Lister() v1beta1.DeploymentLister {
    -	return v1beta1.NewDeploymentLister(f.Informer().GetIndexer())
    +func (f *deploymentInformer) Lister() appsv1beta1.DeploymentLister {
    +	return appsv1beta1.NewDeploymentLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go
    index b845cc99c989..bc357d7e7b42 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1beta1 "k8s.io/api/apps/v1beta1"
    +	apiappsv1beta1 "k8s.io/api/apps/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/apps/v1beta1"
    +	appsv1beta1 "k8s.io/client-go/listers/apps/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // StatefulSets.
     type StatefulSetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.StatefulSetLister
    +	Lister() appsv1beta1.StatefulSetLister
     }
     
     type statefulSetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredStatefulSetInformer(client kubernetes.Interface, namespace strin
     				return client.AppsV1beta1().StatefulSets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1beta1.StatefulSet{},
    +		&apiappsv1beta1.StatefulSet{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *statefulSetInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *statefulSetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1beta1.StatefulSet{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1beta1.StatefulSet{}, f.defaultInformer)
     }
     
    -func (f *statefulSetInformer) Lister() v1beta1.StatefulSetLister {
    -	return v1beta1.NewStatefulSetLister(f.Informer().GetIndexer())
    +func (f *statefulSetInformer) Lister() appsv1beta1.StatefulSetLister {
    +	return appsv1beta1.NewStatefulSetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go
    index 4d0e91320b63..62a560fdaff0 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	apiappsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta2 "k8s.io/client-go/listers/apps/v1beta2"
    +	appsv1beta2 "k8s.io/client-go/listers/apps/v1beta2"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ControllerRevisions.
     type ControllerRevisionInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta2.ControllerRevisionLister
    +	Lister() appsv1beta2.ControllerRevisionLister
     }
     
     type controllerRevisionInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredControllerRevisionInformer(client kubernetes.Interface, namespac
     				return client.AppsV1beta2().ControllerRevisions(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1beta2.ControllerRevision{},
    +		&apiappsv1beta2.ControllerRevision{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *controllerRevisionInformer) defaultInformer(client kubernetes.Interface
     }
     
     func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1beta2.ControllerRevision{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1beta2.ControllerRevision{}, f.defaultInformer)
     }
     
    -func (f *controllerRevisionInformer) Lister() v1beta2.ControllerRevisionLister {
    -	return v1beta2.NewControllerRevisionLister(f.Informer().GetIndexer())
    +func (f *controllerRevisionInformer) Lister() appsv1beta2.ControllerRevisionLister {
    +	return appsv1beta2.NewControllerRevisionLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go
    index 280e2fe46565..9d4c8ede9820 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	apiappsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta2 "k8s.io/client-go/listers/apps/v1beta2"
    +	appsv1beta2 "k8s.io/client-go/listers/apps/v1beta2"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // DaemonSets.
     type DaemonSetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta2.DaemonSetLister
    +	Lister() appsv1beta2.DaemonSetLister
     }
     
     type daemonSetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredDaemonSetInformer(client kubernetes.Interface, namespace string,
     				return client.AppsV1beta2().DaemonSets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1beta2.DaemonSet{},
    +		&apiappsv1beta2.DaemonSet{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *daemonSetInformer) defaultInformer(client kubernetes.Interface, resyncP
     }
     
     func (f *daemonSetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1beta2.DaemonSet{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1beta2.DaemonSet{}, f.defaultInformer)
     }
     
    -func (f *daemonSetInformer) Lister() v1beta2.DaemonSetLister {
    -	return v1beta2.NewDaemonSetLister(f.Informer().GetIndexer())
    +func (f *daemonSetInformer) Lister() appsv1beta2.DaemonSetLister {
    +	return appsv1beta2.NewDaemonSetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go
    index 67bdb79720a2..be85192cf4be 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	apiappsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta2 "k8s.io/client-go/listers/apps/v1beta2"
    +	appsv1beta2 "k8s.io/client-go/listers/apps/v1beta2"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Deployments.
     type DeploymentInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta2.DeploymentLister
    +	Lister() appsv1beta2.DeploymentLister
     }
     
     type deploymentInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string
     				return client.AppsV1beta2().Deployments(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1beta2.Deployment{},
    +		&apiappsv1beta2.Deployment{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *deploymentInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1beta2.Deployment{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1beta2.Deployment{}, f.defaultInformer)
     }
     
    -func (f *deploymentInformer) Lister() v1beta2.DeploymentLister {
    -	return v1beta2.NewDeploymentLister(f.Informer().GetIndexer())
    +func (f *deploymentInformer) Lister() appsv1beta2.DeploymentLister {
    +	return appsv1beta2.NewDeploymentLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go
    index 85d12bb65da9..e5d279708752 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	apiappsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta2 "k8s.io/client-go/listers/apps/v1beta2"
    +	appsv1beta2 "k8s.io/client-go/listers/apps/v1beta2"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ReplicaSets.
     type ReplicaSetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta2.ReplicaSetLister
    +	Lister() appsv1beta2.ReplicaSetLister
     }
     
     type replicaSetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredReplicaSetInformer(client kubernetes.Interface, namespace string
     				return client.AppsV1beta2().ReplicaSets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1beta2.ReplicaSet{},
    +		&apiappsv1beta2.ReplicaSet{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *replicaSetInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *replicaSetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1beta2.ReplicaSet{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1beta2.ReplicaSet{}, f.defaultInformer)
     }
     
    -func (f *replicaSetInformer) Lister() v1beta2.ReplicaSetLister {
    -	return v1beta2.NewReplicaSetLister(f.Informer().GetIndexer())
    +func (f *replicaSetInformer) Lister() appsv1beta2.ReplicaSetLister {
    +	return appsv1beta2.NewReplicaSetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go
    index 2fab6f7b2bf1..d147fc885169 100644
    --- a/vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go
    +++ b/vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	apiappsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta2 "k8s.io/client-go/listers/apps/v1beta2"
    +	appsv1beta2 "k8s.io/client-go/listers/apps/v1beta2"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // StatefulSets.
     type StatefulSetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta2.StatefulSetLister
    +	Lister() appsv1beta2.StatefulSetLister
     }
     
     type statefulSetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredStatefulSetInformer(client kubernetes.Interface, namespace strin
     				return client.AppsV1beta2().StatefulSets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&appsv1beta2.StatefulSet{},
    +		&apiappsv1beta2.StatefulSet{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *statefulSetInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *statefulSetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&appsv1beta2.StatefulSet{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiappsv1beta2.StatefulSet{}, f.defaultInformer)
     }
     
    -func (f *statefulSetInformer) Lister() v1beta2.StatefulSetLister {
    -	return v1beta2.NewStatefulSetLister(f.Informer().GetIndexer())
    +func (f *statefulSetInformer) Lister() appsv1beta2.StatefulSetLister {
    +	return appsv1beta2.NewStatefulSetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go
    index 44f041e906b5..fce275934f6a 100644
    --- a/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	autoscalingv1 "k8s.io/api/autoscaling/v1"
    +	apiautoscalingv1 "k8s.io/api/autoscaling/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/autoscaling/v1"
    +	autoscalingv1 "k8s.io/client-go/listers/autoscaling/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // HorizontalPodAutoscalers.
     type HorizontalPodAutoscalerInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.HorizontalPodAutoscalerLister
    +	Lister() autoscalingv1.HorizontalPodAutoscalerLister
     }
     
     type horizontalPodAutoscalerInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredHorizontalPodAutoscalerInformer(client kubernetes.Interface, nam
     				return client.AutoscalingV1().HorizontalPodAutoscalers(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&autoscalingv1.HorizontalPodAutoscaler{},
    +		&apiautoscalingv1.HorizontalPodAutoscaler{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *horizontalPodAutoscalerInformer) defaultInformer(client kubernetes.Inte
     }
     
     func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&autoscalingv1.HorizontalPodAutoscaler{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiautoscalingv1.HorizontalPodAutoscaler{}, f.defaultInformer)
     }
     
    -func (f *horizontalPodAutoscalerInformer) Lister() v1.HorizontalPodAutoscalerLister {
    -	return v1.NewHorizontalPodAutoscalerLister(f.Informer().GetIndexer())
    +func (f *horizontalPodAutoscalerInformer) Lister() autoscalingv1.HorizontalPodAutoscalerLister {
    +	return autoscalingv1.NewHorizontalPodAutoscalerLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/informers/autoscaling/v2/horizontalpodautoscaler.go
    index 5ddb3b015f2d..92104f822707 100644
    --- a/vendor/k8s.io/client-go/informers/autoscaling/v2/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/informers/autoscaling/v2/horizontalpodautoscaler.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v2
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	autoscalingv2 "k8s.io/api/autoscaling/v2"
    +	apiautoscalingv2 "k8s.io/api/autoscaling/v2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v2 "k8s.io/client-go/listers/autoscaling/v2"
    +	autoscalingv2 "k8s.io/client-go/listers/autoscaling/v2"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // HorizontalPodAutoscalers.
     type HorizontalPodAutoscalerInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v2.HorizontalPodAutoscalerLister
    +	Lister() autoscalingv2.HorizontalPodAutoscalerLister
     }
     
     type horizontalPodAutoscalerInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredHorizontalPodAutoscalerInformer(client kubernetes.Interface, nam
     				return client.AutoscalingV2().HorizontalPodAutoscalers(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&autoscalingv2.HorizontalPodAutoscaler{},
    +		&apiautoscalingv2.HorizontalPodAutoscaler{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *horizontalPodAutoscalerInformer) defaultInformer(client kubernetes.Inte
     }
     
     func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&autoscalingv2.HorizontalPodAutoscaler{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiautoscalingv2.HorizontalPodAutoscaler{}, f.defaultInformer)
     }
     
    -func (f *horizontalPodAutoscalerInformer) Lister() v2.HorizontalPodAutoscalerLister {
    -	return v2.NewHorizontalPodAutoscalerLister(f.Informer().GetIndexer())
    +func (f *horizontalPodAutoscalerInformer) Lister() autoscalingv2.HorizontalPodAutoscalerLister {
    +	return autoscalingv2.NewHorizontalPodAutoscalerLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go
    index 6385a2a190a3..b77602718609 100644
    --- a/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v2beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
    +	apiautoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v2beta1 "k8s.io/client-go/listers/autoscaling/v2beta1"
    +	autoscalingv2beta1 "k8s.io/client-go/listers/autoscaling/v2beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // HorizontalPodAutoscalers.
     type HorizontalPodAutoscalerInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v2beta1.HorizontalPodAutoscalerLister
    +	Lister() autoscalingv2beta1.HorizontalPodAutoscalerLister
     }
     
     type horizontalPodAutoscalerInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredHorizontalPodAutoscalerInformer(client kubernetes.Interface, nam
     				return client.AutoscalingV2beta1().HorizontalPodAutoscalers(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&autoscalingv2beta1.HorizontalPodAutoscaler{},
    +		&apiautoscalingv2beta1.HorizontalPodAutoscaler{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *horizontalPodAutoscalerInformer) defaultInformer(client kubernetes.Inte
     }
     
     func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&autoscalingv2beta1.HorizontalPodAutoscaler{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiautoscalingv2beta1.HorizontalPodAutoscaler{}, f.defaultInformer)
     }
     
    -func (f *horizontalPodAutoscalerInformer) Lister() v2beta1.HorizontalPodAutoscalerLister {
    -	return v2beta1.NewHorizontalPodAutoscalerLister(f.Informer().GetIndexer())
    +func (f *horizontalPodAutoscalerInformer) Lister() autoscalingv2beta1.HorizontalPodAutoscalerLister {
    +	return autoscalingv2beta1.NewHorizontalPodAutoscalerLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v2beta2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/informers/autoscaling/v2beta2/horizontalpodautoscaler.go
    index f1ac3f0737c8..1848429b1448 100644
    --- a/vendor/k8s.io/client-go/informers/autoscaling/v2beta2/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/informers/autoscaling/v2beta2/horizontalpodautoscaler.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v2beta2
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	apiautoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v2beta2 "k8s.io/client-go/listers/autoscaling/v2beta2"
    +	autoscalingv2beta2 "k8s.io/client-go/listers/autoscaling/v2beta2"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // HorizontalPodAutoscalers.
     type HorizontalPodAutoscalerInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v2beta2.HorizontalPodAutoscalerLister
    +	Lister() autoscalingv2beta2.HorizontalPodAutoscalerLister
     }
     
     type horizontalPodAutoscalerInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredHorizontalPodAutoscalerInformer(client kubernetes.Interface, nam
     				return client.AutoscalingV2beta2().HorizontalPodAutoscalers(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&autoscalingv2beta2.HorizontalPodAutoscaler{},
    +		&apiautoscalingv2beta2.HorizontalPodAutoscaler{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *horizontalPodAutoscalerInformer) defaultInformer(client kubernetes.Inte
     }
     
     func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&autoscalingv2beta2.HorizontalPodAutoscaler{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiautoscalingv2beta2.HorizontalPodAutoscaler{}, f.defaultInformer)
     }
     
    -func (f *horizontalPodAutoscalerInformer) Lister() v2beta2.HorizontalPodAutoscalerLister {
    -	return v2beta2.NewHorizontalPodAutoscalerLister(f.Informer().GetIndexer())
    +func (f *horizontalPodAutoscalerInformer) Lister() autoscalingv2beta2.HorizontalPodAutoscalerLister {
    +	return autoscalingv2beta2.NewHorizontalPodAutoscalerLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/batch/v1/cronjob.go b/vendor/k8s.io/client-go/informers/batch/v1/cronjob.go
    index fdfb655134d0..2a188acdd6a6 100644
    --- a/vendor/k8s.io/client-go/informers/batch/v1/cronjob.go
    +++ b/vendor/k8s.io/client-go/informers/batch/v1/cronjob.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	batchv1 "k8s.io/api/batch/v1"
    +	apibatchv1 "k8s.io/api/batch/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/batch/v1"
    +	batchv1 "k8s.io/client-go/listers/batch/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CronJobs.
     type CronJobInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.CronJobLister
    +	Lister() batchv1.CronJobLister
     }
     
     type cronJobInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredCronJobInformer(client kubernetes.Interface, namespace string, r
     				return client.BatchV1().CronJobs(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&batchv1.CronJob{},
    +		&apibatchv1.CronJob{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *cronJobInformer) defaultInformer(client kubernetes.Interface, resyncPer
     }
     
     func (f *cronJobInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&batchv1.CronJob{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apibatchv1.CronJob{}, f.defaultInformer)
     }
     
    -func (f *cronJobInformer) Lister() v1.CronJobLister {
    -	return v1.NewCronJobLister(f.Informer().GetIndexer())
    +func (f *cronJobInformer) Lister() batchv1.CronJobLister {
    +	return batchv1.NewCronJobLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/batch/v1/job.go b/vendor/k8s.io/client-go/informers/batch/v1/job.go
    index 4992f5228631..439ec7a6a597 100644
    --- a/vendor/k8s.io/client-go/informers/batch/v1/job.go
    +++ b/vendor/k8s.io/client-go/informers/batch/v1/job.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	batchv1 "k8s.io/api/batch/v1"
    +	apibatchv1 "k8s.io/api/batch/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/batch/v1"
    +	batchv1 "k8s.io/client-go/listers/batch/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Jobs.
     type JobInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.JobLister
    +	Lister() batchv1.JobLister
     }
     
     type jobInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredJobInformer(client kubernetes.Interface, namespace string, resyn
     				return client.BatchV1().Jobs(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&batchv1.Job{},
    +		&apibatchv1.Job{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *jobInformer) defaultInformer(client kubernetes.Interface, resyncPeriod
     }
     
     func (f *jobInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&batchv1.Job{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apibatchv1.Job{}, f.defaultInformer)
     }
     
    -func (f *jobInformer) Lister() v1.JobLister {
    -	return v1.NewJobLister(f.Informer().GetIndexer())
    +func (f *jobInformer) Lister() batchv1.JobLister {
    +	return batchv1.NewJobLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go b/vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go
    index 820c93eaaafe..1f061e16c265 100644
    --- a/vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go
    +++ b/vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	batchv1beta1 "k8s.io/api/batch/v1beta1"
    +	apibatchv1beta1 "k8s.io/api/batch/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/batch/v1beta1"
    +	batchv1beta1 "k8s.io/client-go/listers/batch/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CronJobs.
     type CronJobInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.CronJobLister
    +	Lister() batchv1beta1.CronJobLister
     }
     
     type cronJobInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredCronJobInformer(client kubernetes.Interface, namespace string, r
     				return client.BatchV1beta1().CronJobs(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&batchv1beta1.CronJob{},
    +		&apibatchv1beta1.CronJob{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *cronJobInformer) defaultInformer(client kubernetes.Interface, resyncPer
     }
     
     func (f *cronJobInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&batchv1beta1.CronJob{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apibatchv1beta1.CronJob{}, f.defaultInformer)
     }
     
    -func (f *cronJobInformer) Lister() v1beta1.CronJobLister {
    -	return v1beta1.NewCronJobLister(f.Informer().GetIndexer())
    +func (f *cronJobInformer) Lister() batchv1beta1.CronJobLister {
    +	return batchv1beta1.NewCronJobLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/certificates/v1/certificatesigningrequest.go b/vendor/k8s.io/client-go/informers/certificates/v1/certificatesigningrequest.go
    index 73d33a914ce1..0bd32ab95bfd 100644
    --- a/vendor/k8s.io/client-go/informers/certificates/v1/certificatesigningrequest.go
    +++ b/vendor/k8s.io/client-go/informers/certificates/v1/certificatesigningrequest.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	certificatesv1 "k8s.io/api/certificates/v1"
    +	apicertificatesv1 "k8s.io/api/certificates/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/certificates/v1"
    +	certificatesv1 "k8s.io/client-go/listers/certificates/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CertificateSigningRequests.
     type CertificateSigningRequestInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.CertificateSigningRequestLister
    +	Lister() certificatesv1.CertificateSigningRequestLister
     }
     
     type certificateSigningRequestInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredCertificateSigningRequestInformer(client kubernetes.Interface, r
     				return client.CertificatesV1().CertificateSigningRequests().Watch(context.TODO(), options)
     			},
     		},
    -		&certificatesv1.CertificateSigningRequest{},
    +		&apicertificatesv1.CertificateSigningRequest{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *certificateSigningRequestInformer) defaultInformer(client kubernetes.In
     }
     
     func (f *certificateSigningRequestInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&certificatesv1.CertificateSigningRequest{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicertificatesv1.CertificateSigningRequest{}, f.defaultInformer)
     }
     
    -func (f *certificateSigningRequestInformer) Lister() v1.CertificateSigningRequestLister {
    -	return v1.NewCertificateSigningRequestLister(f.Informer().GetIndexer())
    +func (f *certificateSigningRequestInformer) Lister() certificatesv1.CertificateSigningRequestLister {
    +	return certificatesv1.NewCertificateSigningRequestLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/certificates/v1alpha1/clustertrustbundle.go b/vendor/k8s.io/client-go/informers/certificates/v1alpha1/clustertrustbundle.go
    index e8b341587027..046688961cbe 100644
    --- a/vendor/k8s.io/client-go/informers/certificates/v1alpha1/clustertrustbundle.go
    +++ b/vendor/k8s.io/client-go/informers/certificates/v1alpha1/clustertrustbundle.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	certificatesv1alpha1 "k8s.io/api/certificates/v1alpha1"
    +	apicertificatesv1alpha1 "k8s.io/api/certificates/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/certificates/v1alpha1"
    +	certificatesv1alpha1 "k8s.io/client-go/listers/certificates/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ClusterTrustBundles.
     type ClusterTrustBundleInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.ClusterTrustBundleLister
    +	Lister() certificatesv1alpha1.ClusterTrustBundleLister
     }
     
     type clusterTrustBundleInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredClusterTrustBundleInformer(client kubernetes.Interface, resyncPe
     				return client.CertificatesV1alpha1().ClusterTrustBundles().Watch(context.TODO(), options)
     			},
     		},
    -		&certificatesv1alpha1.ClusterTrustBundle{},
    +		&apicertificatesv1alpha1.ClusterTrustBundle{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *clusterTrustBundleInformer) defaultInformer(client kubernetes.Interface
     }
     
     func (f *clusterTrustBundleInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&certificatesv1alpha1.ClusterTrustBundle{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicertificatesv1alpha1.ClusterTrustBundle{}, f.defaultInformer)
     }
     
    -func (f *clusterTrustBundleInformer) Lister() v1alpha1.ClusterTrustBundleLister {
    -	return v1alpha1.NewClusterTrustBundleLister(f.Informer().GetIndexer())
    +func (f *clusterTrustBundleInformer) Lister() certificatesv1alpha1.ClusterTrustBundleLister {
    +	return certificatesv1alpha1.NewClusterTrustBundleLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go b/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go
    index 4e167ab8b131..b3aff1cc867c 100644
    --- a/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go
    +++ b/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
    +	apicertificatesv1beta1 "k8s.io/api/certificates/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/certificates/v1beta1"
    +	certificatesv1beta1 "k8s.io/client-go/listers/certificates/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CertificateSigningRequests.
     type CertificateSigningRequestInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.CertificateSigningRequestLister
    +	Lister() certificatesv1beta1.CertificateSigningRequestLister
     }
     
     type certificateSigningRequestInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredCertificateSigningRequestInformer(client kubernetes.Interface, r
     				return client.CertificatesV1beta1().CertificateSigningRequests().Watch(context.TODO(), options)
     			},
     		},
    -		&certificatesv1beta1.CertificateSigningRequest{},
    +		&apicertificatesv1beta1.CertificateSigningRequest{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *certificateSigningRequestInformer) defaultInformer(client kubernetes.In
     }
     
     func (f *certificateSigningRequestInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&certificatesv1beta1.CertificateSigningRequest{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicertificatesv1beta1.CertificateSigningRequest{}, f.defaultInformer)
     }
     
    -func (f *certificateSigningRequestInformer) Lister() v1beta1.CertificateSigningRequestLister {
    -	return v1beta1.NewCertificateSigningRequestLister(f.Informer().GetIndexer())
    +func (f *certificateSigningRequestInformer) Lister() certificatesv1beta1.CertificateSigningRequestLister {
    +	return certificatesv1beta1.NewCertificateSigningRequestLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/coordination/interface.go b/vendor/k8s.io/client-go/informers/coordination/interface.go
    index 54cfd7b9f26b..d5bde12ac4a2 100644
    --- a/vendor/k8s.io/client-go/informers/coordination/interface.go
    +++ b/vendor/k8s.io/client-go/informers/coordination/interface.go
    @@ -20,6 +20,7 @@ package coordination
     
     import (
     	v1 "k8s.io/client-go/informers/coordination/v1"
    +	v1alpha2 "k8s.io/client-go/informers/coordination/v1alpha2"
     	v1beta1 "k8s.io/client-go/informers/coordination/v1beta1"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     )
    @@ -28,6 +29,8 @@ import (
     type Interface interface {
     	// V1 provides access to shared informers for resources in V1.
     	V1() v1.Interface
    +	// V1alpha2 provides access to shared informers for resources in V1alpha2.
    +	V1alpha2() v1alpha2.Interface
     	// V1beta1 provides access to shared informers for resources in V1beta1.
     	V1beta1() v1beta1.Interface
     }
    @@ -48,6 +51,11 @@ func (g *group) V1() v1.Interface {
     	return v1.New(g.factory, g.namespace, g.tweakListOptions)
     }
     
    +// V1alpha2 returns a new v1alpha2.Interface.
    +func (g *group) V1alpha2() v1alpha2.Interface {
    +	return v1alpha2.New(g.factory, g.namespace, g.tweakListOptions)
    +}
    +
     // V1beta1 returns a new v1beta1.Interface.
     func (g *group) V1beta1() v1beta1.Interface {
     	return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
    diff --git a/vendor/k8s.io/client-go/informers/coordination/v1/lease.go b/vendor/k8s.io/client-go/informers/coordination/v1/lease.go
    index e538923a86b8..0627d73099fb 100644
    --- a/vendor/k8s.io/client-go/informers/coordination/v1/lease.go
    +++ b/vendor/k8s.io/client-go/informers/coordination/v1/lease.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	coordinationv1 "k8s.io/api/coordination/v1"
    +	apicoordinationv1 "k8s.io/api/coordination/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/coordination/v1"
    +	coordinationv1 "k8s.io/client-go/listers/coordination/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Leases.
     type LeaseInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.LeaseLister
    +	Lister() coordinationv1.LeaseLister
     }
     
     type leaseInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredLeaseInformer(client kubernetes.Interface, namespace string, res
     				return client.CoordinationV1().Leases(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&coordinationv1.Lease{},
    +		&apicoordinationv1.Lease{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *leaseInformer) defaultInformer(client kubernetes.Interface, resyncPerio
     }
     
     func (f *leaseInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&coordinationv1.Lease{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicoordinationv1.Lease{}, f.defaultInformer)
     }
     
    -func (f *leaseInformer) Lister() v1.LeaseLister {
    -	return v1.NewLeaseLister(f.Informer().GetIndexer())
    +func (f *leaseInformer) Lister() coordinationv1.LeaseLister {
    +	return coordinationv1.NewLeaseLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/coordination/v1alpha2/interface.go b/vendor/k8s.io/client-go/informers/coordination/v1alpha2/interface.go
    new file mode 100644
    index 000000000000..ba83768adecf
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/coordination/v1alpha2/interface.go
    @@ -0,0 +1,45 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1alpha2
    +
    +import (
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +)
    +
    +// Interface provides access to all the informers in this group version.
    +type Interface interface {
    +	// LeaseCandidates returns a LeaseCandidateInformer.
    +	LeaseCandidates() LeaseCandidateInformer
    +}
    +
    +type version struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	namespace        string
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// New returns a new Interface.
    +func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
    +	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
    +}
    +
    +// LeaseCandidates returns a LeaseCandidateInformer.
    +func (v *version) LeaseCandidates() LeaseCandidateInformer {
    +	return &leaseCandidateInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
    +}
    diff --git a/vendor/k8s.io/client-go/informers/coordination/v1alpha2/leasecandidate.go b/vendor/k8s.io/client-go/informers/coordination/v1alpha2/leasecandidate.go
    new file mode 100644
    index 000000000000..f38adf6524d8
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/coordination/v1alpha2/leasecandidate.go
    @@ -0,0 +1,90 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1alpha2
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apicoordinationv1alpha2 "k8s.io/api/coordination/v1alpha2"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	coordinationv1alpha2 "k8s.io/client-go/listers/coordination/v1alpha2"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// LeaseCandidateInformer provides access to a shared informer and lister for
    +// LeaseCandidates.
    +type LeaseCandidateInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() coordinationv1alpha2.LeaseCandidateLister
    +}
    +
    +type leaseCandidateInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +	namespace        string
    +}
    +
    +// NewLeaseCandidateInformer constructs a new informer for LeaseCandidate type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewLeaseCandidateInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredLeaseCandidateInformer(client, namespace, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredLeaseCandidateInformer constructs a new informer for LeaseCandidate type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredLeaseCandidateInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.CoordinationV1alpha2().LeaseCandidates(namespace).List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.CoordinationV1alpha2().LeaseCandidates(namespace).Watch(context.TODO(), options)
    +			},
    +		},
    +		&apicoordinationv1alpha2.LeaseCandidate{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *leaseCandidateInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredLeaseCandidateInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *leaseCandidateInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apicoordinationv1alpha2.LeaseCandidate{}, f.defaultInformer)
    +}
    +
    +func (f *leaseCandidateInformer) Lister() coordinationv1alpha2.LeaseCandidateLister {
    +	return coordinationv1alpha2.NewLeaseCandidateLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.go b/vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.go
    index 5a6959c0ba97..563a25c30faf 100644
    --- a/vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.go
    +++ b/vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	coordinationv1beta1 "k8s.io/api/coordination/v1beta1"
    +	apicoordinationv1beta1 "k8s.io/api/coordination/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/coordination/v1beta1"
    +	coordinationv1beta1 "k8s.io/client-go/listers/coordination/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Leases.
     type LeaseInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.LeaseLister
    +	Lister() coordinationv1beta1.LeaseLister
     }
     
     type leaseInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredLeaseInformer(client kubernetes.Interface, namespace string, res
     				return client.CoordinationV1beta1().Leases(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&coordinationv1beta1.Lease{},
    +		&apicoordinationv1beta1.Lease{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *leaseInformer) defaultInformer(client kubernetes.Interface, resyncPerio
     }
     
     func (f *leaseInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&coordinationv1beta1.Lease{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicoordinationv1beta1.Lease{}, f.defaultInformer)
     }
     
    -func (f *leaseInformer) Lister() v1beta1.LeaseLister {
    -	return v1beta1.NewLeaseLister(f.Informer().GetIndexer())
    +func (f *leaseInformer) Lister() coordinationv1beta1.LeaseLister {
    +	return coordinationv1beta1.NewLeaseLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go b/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go
    index ccdee535bc2f..2a97c638fe2b 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ComponentStatuses.
     type ComponentStatusInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ComponentStatusLister
    +	Lister() corev1.ComponentStatusLister
     }
     
     type componentStatusInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredComponentStatusInformer(client kubernetes.Interface, resyncPerio
     				return client.CoreV1().ComponentStatuses().Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.ComponentStatus{},
    +		&apicorev1.ComponentStatus{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *componentStatusInformer) defaultInformer(client kubernetes.Interface, r
     }
     
     func (f *componentStatusInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.ComponentStatus{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.ComponentStatus{}, f.defaultInformer)
     }
     
    -func (f *componentStatusInformer) Lister() v1.ComponentStatusLister {
    -	return v1.NewComponentStatusLister(f.Informer().GetIndexer())
    +func (f *componentStatusInformer) Lister() corev1.ComponentStatusLister {
    +	return corev1.NewComponentStatusLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/configmap.go b/vendor/k8s.io/client-go/informers/core/v1/configmap.go
    index 6253581784ea..07f5fb1f79d1 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/configmap.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/configmap.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ConfigMaps.
     type ConfigMapInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ConfigMapLister
    +	Lister() corev1.ConfigMapLister
     }
     
     type configMapInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredConfigMapInformer(client kubernetes.Interface, namespace string,
     				return client.CoreV1().ConfigMaps(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.ConfigMap{},
    +		&apicorev1.ConfigMap{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *configMapInformer) defaultInformer(client kubernetes.Interface, resyncP
     }
     
     func (f *configMapInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.ConfigMap{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.ConfigMap{}, f.defaultInformer)
     }
     
    -func (f *configMapInformer) Lister() v1.ConfigMapLister {
    -	return v1.NewConfigMapLister(f.Informer().GetIndexer())
    +func (f *configMapInformer) Lister() corev1.ConfigMapLister {
    +	return corev1.NewConfigMapLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/endpoints.go b/vendor/k8s.io/client-go/informers/core/v1/endpoints.go
    index cd0f25b7f703..6171d5df6be0 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/endpoints.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/endpoints.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Endpoints.
     type EndpointsInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.EndpointsLister
    +	Lister() corev1.EndpointsLister
     }
     
     type endpointsInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredEndpointsInformer(client kubernetes.Interface, namespace string,
     				return client.CoreV1().Endpoints(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.Endpoints{},
    +		&apicorev1.Endpoints{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *endpointsInformer) defaultInformer(client kubernetes.Interface, resyncP
     }
     
     func (f *endpointsInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.Endpoints{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.Endpoints{}, f.defaultInformer)
     }
     
    -func (f *endpointsInformer) Lister() v1.EndpointsLister {
    -	return v1.NewEndpointsLister(f.Informer().GetIndexer())
    +func (f *endpointsInformer) Lister() corev1.EndpointsLister {
    +	return corev1.NewEndpointsLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/event.go b/vendor/k8s.io/client-go/informers/core/v1/event.go
    index 8825e9b7a492..55500679d251 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/event.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/event.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Events.
     type EventInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.EventLister
    +	Lister() corev1.EventLister
     }
     
     type eventInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredEventInformer(client kubernetes.Interface, namespace string, res
     				return client.CoreV1().Events(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.Event{},
    +		&apicorev1.Event{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *eventInformer) defaultInformer(client kubernetes.Interface, resyncPerio
     }
     
     func (f *eventInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.Event{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.Event{}, f.defaultInformer)
     }
     
    -func (f *eventInformer) Lister() v1.EventLister {
    -	return v1.NewEventLister(f.Informer().GetIndexer())
    +func (f *eventInformer) Lister() corev1.EventLister {
    +	return corev1.NewEventLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/limitrange.go b/vendor/k8s.io/client-go/informers/core/v1/limitrange.go
    index 4cbfda1f7a6c..2c2dec79f114 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/limitrange.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/limitrange.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // LimitRanges.
     type LimitRangeInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.LimitRangeLister
    +	Lister() corev1.LimitRangeLister
     }
     
     type limitRangeInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredLimitRangeInformer(client kubernetes.Interface, namespace string
     				return client.CoreV1().LimitRanges(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.LimitRange{},
    +		&apicorev1.LimitRange{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *limitRangeInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *limitRangeInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.LimitRange{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.LimitRange{}, f.defaultInformer)
     }
     
    -func (f *limitRangeInformer) Lister() v1.LimitRangeLister {
    -	return v1.NewLimitRangeLister(f.Informer().GetIndexer())
    +func (f *limitRangeInformer) Lister() corev1.LimitRangeLister {
    +	return corev1.NewLimitRangeLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/namespace.go b/vendor/k8s.io/client-go/informers/core/v1/namespace.go
    index 506f930a7d53..09e0740ba9be 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/namespace.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/namespace.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Namespaces.
     type NamespaceInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.NamespaceLister
    +	Lister() corev1.NamespaceLister
     }
     
     type namespaceInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredNamespaceInformer(client kubernetes.Interface, resyncPeriod time
     				return client.CoreV1().Namespaces().Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.Namespace{},
    +		&apicorev1.Namespace{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *namespaceInformer) defaultInformer(client kubernetes.Interface, resyncP
     }
     
     func (f *namespaceInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.Namespace{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.Namespace{}, f.defaultInformer)
     }
     
    -func (f *namespaceInformer) Lister() v1.NamespaceLister {
    -	return v1.NewNamespaceLister(f.Informer().GetIndexer())
    +func (f *namespaceInformer) Lister() corev1.NamespaceLister {
    +	return corev1.NewNamespaceLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/node.go b/vendor/k8s.io/client-go/informers/core/v1/node.go
    index 9939fc2cb6c1..608aa9fb7cfe 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/node.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/node.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Nodes.
     type NodeInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.NodeLister
    +	Lister() corev1.NodeLister
     }
     
     type nodeInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredNodeInformer(client kubernetes.Interface, resyncPeriod time.Dura
     				return client.CoreV1().Nodes().Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.Node{},
    +		&apicorev1.Node{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *nodeInformer) defaultInformer(client kubernetes.Interface, resyncPeriod
     }
     
     func (f *nodeInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.Node{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.Node{}, f.defaultInformer)
     }
     
    -func (f *nodeInformer) Lister() v1.NodeLister {
    -	return v1.NewNodeLister(f.Informer().GetIndexer())
    +func (f *nodeInformer) Lister() corev1.NodeLister {
    +	return corev1.NewNodeLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go
    index c82445997ca9..19c0929e5e1b 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PersistentVolumes.
     type PersistentVolumeInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.PersistentVolumeLister
    +	Lister() corev1.PersistentVolumeLister
     }
     
     type persistentVolumeInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredPersistentVolumeInformer(client kubernetes.Interface, resyncPeri
     				return client.CoreV1().PersistentVolumes().Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.PersistentVolume{},
    +		&apicorev1.PersistentVolume{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *persistentVolumeInformer) defaultInformer(client kubernetes.Interface,
     }
     
     func (f *persistentVolumeInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.PersistentVolume{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.PersistentVolume{}, f.defaultInformer)
     }
     
    -func (f *persistentVolumeInformer) Lister() v1.PersistentVolumeLister {
    -	return v1.NewPersistentVolumeLister(f.Informer().GetIndexer())
    +func (f *persistentVolumeInformer) Lister() corev1.PersistentVolumeLister {
    +	return corev1.NewPersistentVolumeLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go
    index 7a7df1cff819..27c35fec1a0b 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PersistentVolumeClaims.
     type PersistentVolumeClaimInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.PersistentVolumeClaimLister
    +	Lister() corev1.PersistentVolumeClaimLister
     }
     
     type persistentVolumeClaimInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredPersistentVolumeClaimInformer(client kubernetes.Interface, names
     				return client.CoreV1().PersistentVolumeClaims(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.PersistentVolumeClaim{},
    +		&apicorev1.PersistentVolumeClaim{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *persistentVolumeClaimInformer) defaultInformer(client kubernetes.Interf
     }
     
     func (f *persistentVolumeClaimInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.PersistentVolumeClaim{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.PersistentVolumeClaim{}, f.defaultInformer)
     }
     
    -func (f *persistentVolumeClaimInformer) Lister() v1.PersistentVolumeClaimLister {
    -	return v1.NewPersistentVolumeClaimLister(f.Informer().GetIndexer())
    +func (f *persistentVolumeClaimInformer) Lister() corev1.PersistentVolumeClaimLister {
    +	return corev1.NewPersistentVolumeClaimLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/pod.go b/vendor/k8s.io/client-go/informers/core/v1/pod.go
    index 5c713a9b6f49..c661704bd1f7 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/pod.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/pod.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Pods.
     type PodInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.PodLister
    +	Lister() corev1.PodLister
     }
     
     type podInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredPodInformer(client kubernetes.Interface, namespace string, resyn
     				return client.CoreV1().Pods(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.Pod{},
    +		&apicorev1.Pod{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *podInformer) defaultInformer(client kubernetes.Interface, resyncPeriod
     }
     
     func (f *podInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.Pod{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.Pod{}, f.defaultInformer)
     }
     
    -func (f *podInformer) Lister() v1.PodLister {
    -	return v1.NewPodLister(f.Informer().GetIndexer())
    +func (f *podInformer) Lister() corev1.PodLister {
    +	return corev1.NewPodLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go b/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go
    index 2a16e910dbe5..0d16c5b4e2ae 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PodTemplates.
     type PodTemplateInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.PodTemplateLister
    +	Lister() corev1.PodTemplateLister
     }
     
     type podTemplateInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredPodTemplateInformer(client kubernetes.Interface, namespace strin
     				return client.CoreV1().PodTemplates(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.PodTemplate{},
    +		&apicorev1.PodTemplate{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *podTemplateInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *podTemplateInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.PodTemplate{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.PodTemplate{}, f.defaultInformer)
     }
     
    -func (f *podTemplateInformer) Lister() v1.PodTemplateLister {
    -	return v1.NewPodTemplateLister(f.Informer().GetIndexer())
    +func (f *podTemplateInformer) Lister() corev1.PodTemplateLister {
    +	return corev1.NewPodTemplateLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go
    index 930beb4cd5f5..5866ec1510ae 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ReplicationControllers.
     type ReplicationControllerInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ReplicationControllerLister
    +	Lister() corev1.ReplicationControllerLister
     }
     
     type replicationControllerInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredReplicationControllerInformer(client kubernetes.Interface, names
     				return client.CoreV1().ReplicationControllers(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.ReplicationController{},
    +		&apicorev1.ReplicationController{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *replicationControllerInformer) defaultInformer(client kubernetes.Interf
     }
     
     func (f *replicationControllerInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.ReplicationController{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.ReplicationController{}, f.defaultInformer)
     }
     
    -func (f *replicationControllerInformer) Lister() v1.ReplicationControllerLister {
    -	return v1.NewReplicationControllerLister(f.Informer().GetIndexer())
    +func (f *replicationControllerInformer) Lister() corev1.ReplicationControllerLister {
    +	return corev1.NewReplicationControllerLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go b/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go
    index 619262a6128b..999b49546fb0 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ResourceQuotas.
     type ResourceQuotaInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ResourceQuotaLister
    +	Lister() corev1.ResourceQuotaLister
     }
     
     type resourceQuotaInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredResourceQuotaInformer(client kubernetes.Interface, namespace str
     				return client.CoreV1().ResourceQuotas(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.ResourceQuota{},
    +		&apicorev1.ResourceQuota{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *resourceQuotaInformer) defaultInformer(client kubernetes.Interface, res
     }
     
     func (f *resourceQuotaInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.ResourceQuota{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.ResourceQuota{}, f.defaultInformer)
     }
     
    -func (f *resourceQuotaInformer) Lister() v1.ResourceQuotaLister {
    -	return v1.NewResourceQuotaLister(f.Informer().GetIndexer())
    +func (f *resourceQuotaInformer) Lister() corev1.ResourceQuotaLister {
    +	return corev1.NewResourceQuotaLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/secret.go b/vendor/k8s.io/client-go/informers/core/v1/secret.go
    index a6be07069307..f3d371501b9e 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/secret.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/secret.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Secrets.
     type SecretInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.SecretLister
    +	Lister() corev1.SecretLister
     }
     
     type secretInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredSecretInformer(client kubernetes.Interface, namespace string, re
     				return client.CoreV1().Secrets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.Secret{},
    +		&apicorev1.Secret{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *secretInformer) defaultInformer(client kubernetes.Interface, resyncPeri
     }
     
     func (f *secretInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.Secret{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.Secret{}, f.defaultInformer)
     }
     
    -func (f *secretInformer) Lister() v1.SecretLister {
    -	return v1.NewSecretLister(f.Informer().GetIndexer())
    +func (f *secretInformer) Lister() corev1.SecretLister {
    +	return corev1.NewSecretLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/service.go b/vendor/k8s.io/client-go/informers/core/v1/service.go
    index 3d9ecc6e9540..c4bc294a3ff7 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/service.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/service.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Services.
     type ServiceInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ServiceLister
    +	Lister() corev1.ServiceLister
     }
     
     type serviceInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredServiceInformer(client kubernetes.Interface, namespace string, r
     				return client.CoreV1().Services(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.Service{},
    +		&apicorev1.Service{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *serviceInformer) defaultInformer(client kubernetes.Interface, resyncPer
     }
     
     func (f *serviceInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.Service{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.Service{}, f.defaultInformer)
     }
     
    -func (f *serviceInformer) Lister() v1.ServiceLister {
    -	return v1.NewServiceLister(f.Informer().GetIndexer())
    +func (f *serviceInformer) Lister() corev1.ServiceLister {
    +	return corev1.NewServiceLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go
    index 44371c9fa4f9..b04b44cb41dc 100644
    --- a/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go
    +++ b/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	corev1 "k8s.io/api/core/v1"
    +	apicorev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/core/v1"
    +	corev1 "k8s.io/client-go/listers/core/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ServiceAccounts.
     type ServiceAccountInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ServiceAccountLister
    +	Lister() corev1.ServiceAccountLister
     }
     
     type serviceAccountInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredServiceAccountInformer(client kubernetes.Interface, namespace st
     				return client.CoreV1().ServiceAccounts(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&corev1.ServiceAccount{},
    +		&apicorev1.ServiceAccount{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *serviceAccountInformer) defaultInformer(client kubernetes.Interface, re
     }
     
     func (f *serviceAccountInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&corev1.ServiceAccount{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apicorev1.ServiceAccount{}, f.defaultInformer)
     }
     
    -func (f *serviceAccountInformer) Lister() v1.ServiceAccountLister {
    -	return v1.NewServiceAccountLister(f.Informer().GetIndexer())
    +func (f *serviceAccountInformer) Lister() corev1.ServiceAccountLister {
    +	return corev1.NewServiceAccountLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/discovery/v1/endpointslice.go b/vendor/k8s.io/client-go/informers/discovery/v1/endpointslice.go
    index 6c6c3372bfc8..ec09b2d26737 100644
    --- a/vendor/k8s.io/client-go/informers/discovery/v1/endpointslice.go
    +++ b/vendor/k8s.io/client-go/informers/discovery/v1/endpointslice.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	discoveryv1 "k8s.io/api/discovery/v1"
    +	apidiscoveryv1 "k8s.io/api/discovery/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/discovery/v1"
    +	discoveryv1 "k8s.io/client-go/listers/discovery/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // EndpointSlices.
     type EndpointSliceInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.EndpointSliceLister
    +	Lister() discoveryv1.EndpointSliceLister
     }
     
     type endpointSliceInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredEndpointSliceInformer(client kubernetes.Interface, namespace str
     				return client.DiscoveryV1().EndpointSlices(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&discoveryv1.EndpointSlice{},
    +		&apidiscoveryv1.EndpointSlice{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *endpointSliceInformer) defaultInformer(client kubernetes.Interface, res
     }
     
     func (f *endpointSliceInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&discoveryv1.EndpointSlice{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apidiscoveryv1.EndpointSlice{}, f.defaultInformer)
     }
     
    -func (f *endpointSliceInformer) Lister() v1.EndpointSliceLister {
    -	return v1.NewEndpointSliceLister(f.Informer().GetIndexer())
    +func (f *endpointSliceInformer) Lister() discoveryv1.EndpointSliceLister {
    +	return discoveryv1.NewEndpointSliceLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/discovery/v1beta1/endpointslice.go b/vendor/k8s.io/client-go/informers/discovery/v1beta1/endpointslice.go
    index 69ae38a91a11..3af1a3be99e5 100644
    --- a/vendor/k8s.io/client-go/informers/discovery/v1beta1/endpointslice.go
    +++ b/vendor/k8s.io/client-go/informers/discovery/v1beta1/endpointslice.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	discoveryv1beta1 "k8s.io/api/discovery/v1beta1"
    +	apidiscoveryv1beta1 "k8s.io/api/discovery/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/discovery/v1beta1"
    +	discoveryv1beta1 "k8s.io/client-go/listers/discovery/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // EndpointSlices.
     type EndpointSliceInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.EndpointSliceLister
    +	Lister() discoveryv1beta1.EndpointSliceLister
     }
     
     type endpointSliceInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredEndpointSliceInformer(client kubernetes.Interface, namespace str
     				return client.DiscoveryV1beta1().EndpointSlices(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&discoveryv1beta1.EndpointSlice{},
    +		&apidiscoveryv1beta1.EndpointSlice{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *endpointSliceInformer) defaultInformer(client kubernetes.Interface, res
     }
     
     func (f *endpointSliceInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&discoveryv1beta1.EndpointSlice{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apidiscoveryv1beta1.EndpointSlice{}, f.defaultInformer)
     }
     
    -func (f *endpointSliceInformer) Lister() v1beta1.EndpointSliceLister {
    -	return v1beta1.NewEndpointSliceLister(f.Informer().GetIndexer())
    +func (f *endpointSliceInformer) Lister() discoveryv1beta1.EndpointSliceLister {
    +	return discoveryv1beta1.NewEndpointSliceLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/doc.go b/vendor/k8s.io/client-go/informers/doc.go
    index 231bffb69bda..f37c3e4d0153 100644
    --- a/vendor/k8s.io/client-go/informers/doc.go
    +++ b/vendor/k8s.io/client-go/informers/doc.go
    @@ -15,4 +15,4 @@ limitations under the License.
     */
     
     // Package informers provides generated informers for Kubernetes APIs.
    -package informers
    +package informers // import "k8s.io/client-go/informers"
    diff --git a/vendor/k8s.io/client-go/informers/events/v1/event.go b/vendor/k8s.io/client-go/informers/events/v1/event.go
    index f8d35ee15ccb..518d798415ca 100644
    --- a/vendor/k8s.io/client-go/informers/events/v1/event.go
    +++ b/vendor/k8s.io/client-go/informers/events/v1/event.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	eventsv1 "k8s.io/api/events/v1"
    +	apieventsv1 "k8s.io/api/events/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/events/v1"
    +	eventsv1 "k8s.io/client-go/listers/events/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Events.
     type EventInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.EventLister
    +	Lister() eventsv1.EventLister
     }
     
     type eventInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredEventInformer(client kubernetes.Interface, namespace string, res
     				return client.EventsV1().Events(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&eventsv1.Event{},
    +		&apieventsv1.Event{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *eventInformer) defaultInformer(client kubernetes.Interface, resyncPerio
     }
     
     func (f *eventInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&eventsv1.Event{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apieventsv1.Event{}, f.defaultInformer)
     }
     
    -func (f *eventInformer) Lister() v1.EventLister {
    -	return v1.NewEventLister(f.Informer().GetIndexer())
    +func (f *eventInformer) Lister() eventsv1.EventLister {
    +	return eventsv1.NewEventLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/events/v1beta1/event.go b/vendor/k8s.io/client-go/informers/events/v1beta1/event.go
    index 025f6a5cf36d..5324599bb79d 100644
    --- a/vendor/k8s.io/client-go/informers/events/v1beta1/event.go
    +++ b/vendor/k8s.io/client-go/informers/events/v1beta1/event.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	eventsv1beta1 "k8s.io/api/events/v1beta1"
    +	apieventsv1beta1 "k8s.io/api/events/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/events/v1beta1"
    +	eventsv1beta1 "k8s.io/client-go/listers/events/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Events.
     type EventInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.EventLister
    +	Lister() eventsv1beta1.EventLister
     }
     
     type eventInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredEventInformer(client kubernetes.Interface, namespace string, res
     				return client.EventsV1beta1().Events(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&eventsv1beta1.Event{},
    +		&apieventsv1beta1.Event{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *eventInformer) defaultInformer(client kubernetes.Interface, resyncPerio
     }
     
     func (f *eventInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&eventsv1beta1.Event{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apieventsv1beta1.Event{}, f.defaultInformer)
     }
     
    -func (f *eventInformer) Lister() v1beta1.EventLister {
    -	return v1beta1.NewEventLister(f.Informer().GetIndexer())
    +func (f *eventInformer) Lister() eventsv1beta1.EventLister {
    +	return eventsv1beta1.NewEventLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go
    index 050080a59860..ea77575c9e93 100644
    --- a/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go
    +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // DaemonSets.
     type DaemonSetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.DaemonSetLister
    +	Lister() extensionsv1beta1.DaemonSetLister
     }
     
     type daemonSetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredDaemonSetInformer(client kubernetes.Interface, namespace string,
     				return client.ExtensionsV1beta1().DaemonSets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&extensionsv1beta1.DaemonSet{},
    +		&apiextensionsv1beta1.DaemonSet{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *daemonSetInformer) defaultInformer(client kubernetes.Interface, resyncP
     }
     
     func (f *daemonSetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&extensionsv1beta1.DaemonSet{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiextensionsv1beta1.DaemonSet{}, f.defaultInformer)
     }
     
    -func (f *daemonSetInformer) Lister() v1beta1.DaemonSetLister {
    -	return v1beta1.NewDaemonSetLister(f.Informer().GetIndexer())
    +func (f *daemonSetInformer) Lister() extensionsv1beta1.DaemonSetLister {
    +	return extensionsv1beta1.NewDaemonSetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go
    index 1b16c5cc919e..1b2770ce0bb4 100644
    --- a/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go
    +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Deployments.
     type DeploymentInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.DeploymentLister
    +	Lister() extensionsv1beta1.DeploymentLister
     }
     
     type deploymentInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredDeploymentInformer(client kubernetes.Interface, namespace string
     				return client.ExtensionsV1beta1().Deployments(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&extensionsv1beta1.Deployment{},
    +		&apiextensionsv1beta1.Deployment{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *deploymentInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *deploymentInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&extensionsv1beta1.Deployment{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiextensionsv1beta1.Deployment{}, f.defaultInformer)
     }
     
    -func (f *deploymentInformer) Lister() v1beta1.DeploymentLister {
    -	return v1beta1.NewDeploymentLister(f.Informer().GetIndexer())
    +func (f *deploymentInformer) Lister() extensionsv1beta1.DeploymentLister {
    +	return extensionsv1beta1.NewDeploymentLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go
    index f01a8876174d..63e734060486 100644
    --- a/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go
    +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Ingresses.
     type IngressInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.IngressLister
    +	Lister() extensionsv1beta1.IngressLister
     }
     
     type ingressInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredIngressInformer(client kubernetes.Interface, namespace string, r
     				return client.ExtensionsV1beta1().Ingresses(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&extensionsv1beta1.Ingress{},
    +		&apiextensionsv1beta1.Ingress{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *ingressInformer) defaultInformer(client kubernetes.Interface, resyncPer
     }
     
     func (f *ingressInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&extensionsv1beta1.Ingress{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiextensionsv1beta1.Ingress{}, f.defaultInformer)
     }
     
    -func (f *ingressInformer) Lister() v1beta1.IngressLister {
    -	return v1beta1.NewIngressLister(f.Informer().GetIndexer())
    +func (f *ingressInformer) Lister() extensionsv1beta1.IngressLister {
    +	return extensionsv1beta1.NewIngressLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/networkpolicy.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/networkpolicy.go
    index 4a924619fb2d..024653af2e55 100644
    --- a/vendor/k8s.io/client-go/informers/extensions/v1beta1/networkpolicy.go
    +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/networkpolicy.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // NetworkPolicies.
     type NetworkPolicyInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.NetworkPolicyLister
    +	Lister() extensionsv1beta1.NetworkPolicyLister
     }
     
     type networkPolicyInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredNetworkPolicyInformer(client kubernetes.Interface, namespace str
     				return client.ExtensionsV1beta1().NetworkPolicies(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&extensionsv1beta1.NetworkPolicy{},
    +		&apiextensionsv1beta1.NetworkPolicy{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *networkPolicyInformer) defaultInformer(client kubernetes.Interface, res
     }
     
     func (f *networkPolicyInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&extensionsv1beta1.NetworkPolicy{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiextensionsv1beta1.NetworkPolicy{}, f.defaultInformer)
     }
     
    -func (f *networkPolicyInformer) Lister() v1beta1.NetworkPolicyLister {
    -	return v1beta1.NewNetworkPolicyLister(f.Informer().GetIndexer())
    +func (f *networkPolicyInformer) Lister() extensionsv1beta1.NetworkPolicyLister {
    +	return extensionsv1beta1.NewNetworkPolicyLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go
    index f7e224bcfbfc..392ccef86125 100644
    --- a/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go
    +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	apiextensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ReplicaSets.
     type ReplicaSetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.ReplicaSetLister
    +	Lister() extensionsv1beta1.ReplicaSetLister
     }
     
     type replicaSetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredReplicaSetInformer(client kubernetes.Interface, namespace string
     				return client.ExtensionsV1beta1().ReplicaSets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&extensionsv1beta1.ReplicaSet{},
    +		&apiextensionsv1beta1.ReplicaSet{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *replicaSetInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *replicaSetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&extensionsv1beta1.ReplicaSet{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiextensionsv1beta1.ReplicaSet{}, f.defaultInformer)
     }
     
    -func (f *replicaSetInformer) Lister() v1beta1.ReplicaSetLister {
    -	return v1beta1.NewReplicaSetLister(f.Informer().GetIndexer())
    +func (f *replicaSetInformer) Lister() extensionsv1beta1.ReplicaSetLister {
    +	return extensionsv1beta1.NewReplicaSetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/factory.go b/vendor/k8s.io/client-go/informers/factory.go
    index 9fc86441a192..86c24551ef98 100644
    --- a/vendor/k8s.io/client-go/informers/factory.go
    +++ b/vendor/k8s.io/client-go/informers/factory.go
    @@ -46,6 +46,7 @@ import (
     	resource "k8s.io/client-go/informers/resource"
     	scheduling "k8s.io/client-go/informers/scheduling"
     	storage "k8s.io/client-go/informers/storage"
    +	storagemigration "k8s.io/client-go/informers/storagemigration"
     	kubernetes "k8s.io/client-go/kubernetes"
     	cache "k8s.io/client-go/tools/cache"
     )
    @@ -246,6 +247,7 @@ type SharedInformerFactory interface {
     
     	// Start initializes all requested informers. They are handled in goroutines
     	// which run until the stop channel gets closed.
    +	// Warning: Start does not block. When run in a go-routine, it will race with a later WaitForCacheSync.
     	Start(stopCh <-chan struct{})
     
     	// Shutdown marks a factory as shutting down. At that point no new
    @@ -290,6 +292,7 @@ type SharedInformerFactory interface {
     	Resource() resource.Interface
     	Scheduling() scheduling.Interface
     	Storage() storage.Interface
    +	Storagemigration() storagemigration.Interface
     }
     
     func (f *sharedInformerFactory) Admissionregistration() admissionregistration.Interface {
    @@ -367,3 +370,7 @@ func (f *sharedInformerFactory) Scheduling() scheduling.Interface {
     func (f *sharedInformerFactory) Storage() storage.Interface {
     	return storage.New(f, f.namespace, f.tweakListOptions)
     }
    +
    +func (f *sharedInformerFactory) Storagemigration() storagemigration.Interface {
    +	return storagemigration.New(f, f.namespace, f.tweakListOptions)
    +}
    diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1/flowschema.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1/flowschema.go
    index 30c41b189b83..945bc351efc7 100644
    --- a/vendor/k8s.io/client-go/informers/flowcontrol/v1/flowschema.go
    +++ b/vendor/k8s.io/client-go/informers/flowcontrol/v1/flowschema.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
    +	apiflowcontrolv1 "k8s.io/api/flowcontrol/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/flowcontrol/v1"
    +	flowcontrolv1 "k8s.io/client-go/listers/flowcontrol/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // FlowSchemas.
     type FlowSchemaInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.FlowSchemaLister
    +	Lister() flowcontrolv1.FlowSchemaLister
     }
     
     type flowSchemaInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredFlowSchemaInformer(client kubernetes.Interface, resyncPeriod tim
     				return client.FlowcontrolV1().FlowSchemas().Watch(context.TODO(), options)
     			},
     		},
    -		&flowcontrolv1.FlowSchema{},
    +		&apiflowcontrolv1.FlowSchema{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *flowSchemaInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *flowSchemaInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&flowcontrolv1.FlowSchema{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiflowcontrolv1.FlowSchema{}, f.defaultInformer)
     }
     
    -func (f *flowSchemaInformer) Lister() v1.FlowSchemaLister {
    -	return v1.NewFlowSchemaLister(f.Informer().GetIndexer())
    +func (f *flowSchemaInformer) Lister() flowcontrolv1.FlowSchemaLister {
    +	return flowcontrolv1.NewFlowSchemaLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1/prioritylevelconfiguration.go
    index 7092c257259c..eec6388b29fa 100644
    --- a/vendor/k8s.io/client-go/informers/flowcontrol/v1/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/informers/flowcontrol/v1/prioritylevelconfiguration.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
    +	apiflowcontrolv1 "k8s.io/api/flowcontrol/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/flowcontrol/v1"
    +	flowcontrolv1 "k8s.io/client-go/listers/flowcontrol/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PriorityLevelConfigurations.
     type PriorityLevelConfigurationInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.PriorityLevelConfigurationLister
    +	Lister() flowcontrolv1.PriorityLevelConfigurationLister
     }
     
     type priorityLevelConfigurationInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredPriorityLevelConfigurationInformer(client kubernetes.Interface,
     				return client.FlowcontrolV1().PriorityLevelConfigurations().Watch(context.TODO(), options)
     			},
     		},
    -		&flowcontrolv1.PriorityLevelConfiguration{},
    +		&apiflowcontrolv1.PriorityLevelConfiguration{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *priorityLevelConfigurationInformer) defaultInformer(client kubernetes.I
     }
     
     func (f *priorityLevelConfigurationInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&flowcontrolv1.PriorityLevelConfiguration{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiflowcontrolv1.PriorityLevelConfiguration{}, f.defaultInformer)
     }
     
    -func (f *priorityLevelConfigurationInformer) Lister() v1.PriorityLevelConfigurationLister {
    -	return v1.NewPriorityLevelConfigurationLister(f.Informer().GetIndexer())
    +func (f *priorityLevelConfigurationInformer) Lister() flowcontrolv1.PriorityLevelConfigurationLister {
    +	return flowcontrolv1.NewPriorityLevelConfigurationLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/flowschema.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/flowschema.go
    index 13f4ff093397..30d09977399f 100644
    --- a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/flowschema.go
    +++ b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/flowschema.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	apiflowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/flowcontrol/v1beta1"
    +	flowcontrolv1beta1 "k8s.io/client-go/listers/flowcontrol/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // FlowSchemas.
     type FlowSchemaInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.FlowSchemaLister
    +	Lister() flowcontrolv1beta1.FlowSchemaLister
     }
     
     type flowSchemaInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredFlowSchemaInformer(client kubernetes.Interface, resyncPeriod tim
     				return client.FlowcontrolV1beta1().FlowSchemas().Watch(context.TODO(), options)
     			},
     		},
    -		&flowcontrolv1beta1.FlowSchema{},
    +		&apiflowcontrolv1beta1.FlowSchema{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *flowSchemaInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *flowSchemaInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&flowcontrolv1beta1.FlowSchema{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiflowcontrolv1beta1.FlowSchema{}, f.defaultInformer)
     }
     
    -func (f *flowSchemaInformer) Lister() v1beta1.FlowSchemaLister {
    -	return v1beta1.NewFlowSchemaLister(f.Informer().GetIndexer())
    +func (f *flowSchemaInformer) Lister() flowcontrolv1beta1.FlowSchemaLister {
    +	return flowcontrolv1beta1.NewFlowSchemaLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/prioritylevelconfiguration.go
    index fa4835906a9c..2a8a867c43dd 100644
    --- a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/prioritylevelconfiguration.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	apiflowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/flowcontrol/v1beta1"
    +	flowcontrolv1beta1 "k8s.io/client-go/listers/flowcontrol/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PriorityLevelConfigurations.
     type PriorityLevelConfigurationInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.PriorityLevelConfigurationLister
    +	Lister() flowcontrolv1beta1.PriorityLevelConfigurationLister
     }
     
     type priorityLevelConfigurationInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredPriorityLevelConfigurationInformer(client kubernetes.Interface,
     				return client.FlowcontrolV1beta1().PriorityLevelConfigurations().Watch(context.TODO(), options)
     			},
     		},
    -		&flowcontrolv1beta1.PriorityLevelConfiguration{},
    +		&apiflowcontrolv1beta1.PriorityLevelConfiguration{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *priorityLevelConfigurationInformer) defaultInformer(client kubernetes.I
     }
     
     func (f *priorityLevelConfigurationInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&flowcontrolv1beta1.PriorityLevelConfiguration{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiflowcontrolv1beta1.PriorityLevelConfiguration{}, f.defaultInformer)
     }
     
    -func (f *priorityLevelConfigurationInformer) Lister() v1beta1.PriorityLevelConfigurationLister {
    -	return v1beta1.NewPriorityLevelConfigurationLister(f.Informer().GetIndexer())
    +func (f *priorityLevelConfigurationInformer) Lister() flowcontrolv1beta1.PriorityLevelConfigurationLister {
    +	return flowcontrolv1beta1.NewPriorityLevelConfigurationLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta2/flowschema.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta2/flowschema.go
    index 6f6abecea8ab..edfed12c5cd0 100644
    --- a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta2/flowschema.go
    +++ b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta2/flowschema.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	apiflowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta2 "k8s.io/client-go/listers/flowcontrol/v1beta2"
    +	flowcontrolv1beta2 "k8s.io/client-go/listers/flowcontrol/v1beta2"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // FlowSchemas.
     type FlowSchemaInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta2.FlowSchemaLister
    +	Lister() flowcontrolv1beta2.FlowSchemaLister
     }
     
     type flowSchemaInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredFlowSchemaInformer(client kubernetes.Interface, resyncPeriod tim
     				return client.FlowcontrolV1beta2().FlowSchemas().Watch(context.TODO(), options)
     			},
     		},
    -		&flowcontrolv1beta2.FlowSchema{},
    +		&apiflowcontrolv1beta2.FlowSchema{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *flowSchemaInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *flowSchemaInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&flowcontrolv1beta2.FlowSchema{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiflowcontrolv1beta2.FlowSchema{}, f.defaultInformer)
     }
     
    -func (f *flowSchemaInformer) Lister() v1beta2.FlowSchemaLister {
    -	return v1beta2.NewFlowSchemaLister(f.Informer().GetIndexer())
    +func (f *flowSchemaInformer) Lister() flowcontrolv1beta2.FlowSchemaLister {
    +	return flowcontrolv1beta2.NewFlowSchemaLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta2/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta2/prioritylevelconfiguration.go
    index 306a9018517b..624e0373e84e 100644
    --- a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta2/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta2/prioritylevelconfiguration.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	apiflowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta2 "k8s.io/client-go/listers/flowcontrol/v1beta2"
    +	flowcontrolv1beta2 "k8s.io/client-go/listers/flowcontrol/v1beta2"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PriorityLevelConfigurations.
     type PriorityLevelConfigurationInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta2.PriorityLevelConfigurationLister
    +	Lister() flowcontrolv1beta2.PriorityLevelConfigurationLister
     }
     
     type priorityLevelConfigurationInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredPriorityLevelConfigurationInformer(client kubernetes.Interface,
     				return client.FlowcontrolV1beta2().PriorityLevelConfigurations().Watch(context.TODO(), options)
     			},
     		},
    -		&flowcontrolv1beta2.PriorityLevelConfiguration{},
    +		&apiflowcontrolv1beta2.PriorityLevelConfiguration{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *priorityLevelConfigurationInformer) defaultInformer(client kubernetes.I
     }
     
     func (f *priorityLevelConfigurationInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&flowcontrolv1beta2.PriorityLevelConfiguration{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiflowcontrolv1beta2.PriorityLevelConfiguration{}, f.defaultInformer)
     }
     
    -func (f *priorityLevelConfigurationInformer) Lister() v1beta2.PriorityLevelConfigurationLister {
    -	return v1beta2.NewPriorityLevelConfigurationLister(f.Informer().GetIndexer())
    +func (f *priorityLevelConfigurationInformer) Lister() flowcontrolv1beta2.PriorityLevelConfigurationLister {
    +	return flowcontrolv1beta2.NewPriorityLevelConfigurationLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta3/flowschema.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta3/flowschema.go
    index 56d8c8b1126b..bd3f5e6edb06 100644
    --- a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta3/flowschema.go
    +++ b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta3/flowschema.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta3
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	apiflowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta3 "k8s.io/client-go/listers/flowcontrol/v1beta3"
    +	flowcontrolv1beta3 "k8s.io/client-go/listers/flowcontrol/v1beta3"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // FlowSchemas.
     type FlowSchemaInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta3.FlowSchemaLister
    +	Lister() flowcontrolv1beta3.FlowSchemaLister
     }
     
     type flowSchemaInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredFlowSchemaInformer(client kubernetes.Interface, resyncPeriod tim
     				return client.FlowcontrolV1beta3().FlowSchemas().Watch(context.TODO(), options)
     			},
     		},
    -		&flowcontrolv1beta3.FlowSchema{},
    +		&apiflowcontrolv1beta3.FlowSchema{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *flowSchemaInformer) defaultInformer(client kubernetes.Interface, resync
     }
     
     func (f *flowSchemaInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&flowcontrolv1beta3.FlowSchema{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiflowcontrolv1beta3.FlowSchema{}, f.defaultInformer)
     }
     
    -func (f *flowSchemaInformer) Lister() v1beta3.FlowSchemaLister {
    -	return v1beta3.NewFlowSchemaLister(f.Informer().GetIndexer())
    +func (f *flowSchemaInformer) Lister() flowcontrolv1beta3.FlowSchemaLister {
    +	return flowcontrolv1beta3.NewFlowSchemaLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta3/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta3/prioritylevelconfiguration.go
    index 71f8d5b07f50..5695d5d4dd6f 100644
    --- a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta3/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta3/prioritylevelconfiguration.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta3
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	apiflowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta3 "k8s.io/client-go/listers/flowcontrol/v1beta3"
    +	flowcontrolv1beta3 "k8s.io/client-go/listers/flowcontrol/v1beta3"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PriorityLevelConfigurations.
     type PriorityLevelConfigurationInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta3.PriorityLevelConfigurationLister
    +	Lister() flowcontrolv1beta3.PriorityLevelConfigurationLister
     }
     
     type priorityLevelConfigurationInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredPriorityLevelConfigurationInformer(client kubernetes.Interface,
     				return client.FlowcontrolV1beta3().PriorityLevelConfigurations().Watch(context.TODO(), options)
     			},
     		},
    -		&flowcontrolv1beta3.PriorityLevelConfiguration{},
    +		&apiflowcontrolv1beta3.PriorityLevelConfiguration{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *priorityLevelConfigurationInformer) defaultInformer(client kubernetes.I
     }
     
     func (f *priorityLevelConfigurationInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&flowcontrolv1beta3.PriorityLevelConfiguration{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiflowcontrolv1beta3.PriorityLevelConfiguration{}, f.defaultInformer)
     }
     
    -func (f *priorityLevelConfigurationInformer) Lister() v1beta3.PriorityLevelConfigurationLister {
    -	return v1beta3.NewPriorityLevelConfigurationLister(f.Informer().GetIndexer())
    +func (f *priorityLevelConfigurationInformer) Lister() flowcontrolv1beta3.PriorityLevelConfigurationLister {
    +	return flowcontrolv1beta3.NewPriorityLevelConfigurationLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/generic.go b/vendor/k8s.io/client-go/informers/generic.go
    index 680768815bda..fd331686d5c2 100644
    --- a/vendor/k8s.io/client-go/informers/generic.go
    +++ b/vendor/k8s.io/client-go/informers/generic.go
    @@ -19,7 +19,7 @@ limitations under the License.
     package informers
     
     import (
    -	"fmt"
    +	fmt "fmt"
     
     	v1 "k8s.io/api/admissionregistration/v1"
     	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    @@ -38,6 +38,7 @@ import (
     	certificatesv1alpha1 "k8s.io/api/certificates/v1alpha1"
     	certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
     	coordinationv1 "k8s.io/api/coordination/v1"
    +	v1alpha2 "k8s.io/api/coordination/v1alpha2"
     	coordinationv1beta1 "k8s.io/api/coordination/v1beta1"
     	corev1 "k8s.io/api/core/v1"
     	discoveryv1 "k8s.io/api/discovery/v1"
    @@ -60,13 +61,15 @@ import (
     	rbacv1 "k8s.io/api/rbac/v1"
     	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    +	v1alpha3 "k8s.io/api/resource/v1alpha3"
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
     	schedulingv1 "k8s.io/api/scheduling/v1"
     	schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
     	schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
     	storagev1 "k8s.io/api/storage/v1"
     	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
     	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	storagemigrationv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
     	schema "k8s.io/apimachinery/pkg/runtime/schema"
     	cache "k8s.io/client-go/tools/cache"
     )
    @@ -100,10 +103,18 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
     	// Group=admissionregistration.k8s.io, Version=v1
     	case v1.SchemeGroupVersion.WithResource("mutatingwebhookconfigurations"):
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1().MutatingWebhookConfigurations().Informer()}, nil
    +	case v1.SchemeGroupVersion.WithResource("validatingadmissionpolicies"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1().ValidatingAdmissionPolicies().Informer()}, nil
    +	case v1.SchemeGroupVersion.WithResource("validatingadmissionpolicybindings"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1().ValidatingAdmissionPolicyBindings().Informer()}, nil
     	case v1.SchemeGroupVersion.WithResource("validatingwebhookconfigurations"):
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1().ValidatingWebhookConfigurations().Informer()}, nil
     
     		// Group=admissionregistration.k8s.io, Version=v1alpha1
    +	case v1alpha1.SchemeGroupVersion.WithResource("mutatingadmissionpolicies"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1alpha1().MutatingAdmissionPolicies().Informer()}, nil
    +	case v1alpha1.SchemeGroupVersion.WithResource("mutatingadmissionpolicybindings"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1alpha1().MutatingAdmissionPolicyBindings().Informer()}, nil
     	case v1alpha1.SchemeGroupVersion.WithResource("validatingadmissionpolicies"):
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1alpha1().ValidatingAdmissionPolicies().Informer()}, nil
     	case v1alpha1.SchemeGroupVersion.WithResource("validatingadmissionpolicybindings"):
    @@ -193,6 +204,10 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
     	case coordinationv1.SchemeGroupVersion.WithResource("leases"):
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Coordination().V1().Leases().Informer()}, nil
     
    +		// Group=coordination.k8s.io, Version=v1alpha2
    +	case v1alpha2.SchemeGroupVersion.WithResource("leasecandidates"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Coordination().V1alpha2().LeaseCandidates().Informer()}, nil
    +
     		// Group=coordination.k8s.io, Version=v1beta1
     	case coordinationv1beta1.SchemeGroupVersion.WithResource("leases"):
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Coordination().V1beta1().Leases().Informer()}, nil
    @@ -302,10 +317,14 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1alpha1().ServiceCIDRs().Informer()}, nil
     
     		// Group=networking.k8s.io, Version=v1beta1
    +	case networkingv1beta1.SchemeGroupVersion.WithResource("ipaddresses"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1beta1().IPAddresses().Informer()}, nil
     	case networkingv1beta1.SchemeGroupVersion.WithResource("ingresses"):
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1beta1().Ingresses().Informer()}, nil
     	case networkingv1beta1.SchemeGroupVersion.WithResource("ingressclasses"):
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1beta1().IngressClasses().Informer()}, nil
    +	case networkingv1beta1.SchemeGroupVersion.WithResource("servicecidrs"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1beta1().ServiceCIDRs().Informer()}, nil
     
     		// Group=node.k8s.io, Version=v1
     	case nodev1.SchemeGroupVersion.WithResource("runtimeclasses"):
    @@ -357,15 +376,25 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
     	case rbacv1beta1.SchemeGroupVersion.WithResource("rolebindings"):
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1beta1().RoleBindings().Informer()}, nil
     
    -		// Group=resource.k8s.io, Version=v1alpha2
    -	case v1alpha2.SchemeGroupVersion.WithResource("podschedulingcontexts"):
    -		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1alpha2().PodSchedulingContexts().Informer()}, nil
    -	case v1alpha2.SchemeGroupVersion.WithResource("resourceclaims"):
    -		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1alpha2().ResourceClaims().Informer()}, nil
    -	case v1alpha2.SchemeGroupVersion.WithResource("resourceclaimtemplates"):
    -		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1alpha2().ResourceClaimTemplates().Informer()}, nil
    -	case v1alpha2.SchemeGroupVersion.WithResource("resourceclasses"):
    -		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1alpha2().ResourceClasses().Informer()}, nil
    +		// Group=resource.k8s.io, Version=v1alpha3
    +	case v1alpha3.SchemeGroupVersion.WithResource("deviceclasses"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1alpha3().DeviceClasses().Informer()}, nil
    +	case v1alpha3.SchemeGroupVersion.WithResource("resourceclaims"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1alpha3().ResourceClaims().Informer()}, nil
    +	case v1alpha3.SchemeGroupVersion.WithResource("resourceclaimtemplates"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1alpha3().ResourceClaimTemplates().Informer()}, nil
    +	case v1alpha3.SchemeGroupVersion.WithResource("resourceslices"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1alpha3().ResourceSlices().Informer()}, nil
    +
    +		// Group=resource.k8s.io, Version=v1beta1
    +	case resourcev1beta1.SchemeGroupVersion.WithResource("deviceclasses"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1beta1().DeviceClasses().Informer()}, nil
    +	case resourcev1beta1.SchemeGroupVersion.WithResource("resourceclaims"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1beta1().ResourceClaims().Informer()}, nil
    +	case resourcev1beta1.SchemeGroupVersion.WithResource("resourceclaimtemplates"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1beta1().ResourceClaimTemplates().Informer()}, nil
    +	case resourcev1beta1.SchemeGroupVersion.WithResource("resourceslices"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Resource().V1beta1().ResourceSlices().Informer()}, nil
     
     		// Group=scheduling.k8s.io, Version=v1
     	case schedulingv1.SchemeGroupVersion.WithResource("priorityclasses"):
    @@ -410,6 +439,12 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Storage().V1beta1().StorageClasses().Informer()}, nil
     	case storagev1beta1.SchemeGroupVersion.WithResource("volumeattachments"):
     		return &genericInformer{resource: resource.GroupResource(), informer: f.Storage().V1beta1().VolumeAttachments().Informer()}, nil
    +	case storagev1beta1.SchemeGroupVersion.WithResource("volumeattributesclasses"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Storage().V1beta1().VolumeAttributesClasses().Informer()}, nil
    +
    +		// Group=storagemigration.k8s.io, Version=v1alpha1
    +	case storagemigrationv1alpha1.SchemeGroupVersion.WithResource("storageversionmigrations"):
    +		return &genericInformer{resource: resource.GroupResource(), informer: f.Storagemigration().V1alpha1().StorageVersionMigrations().Informer()}, nil
     
     	}
     
    diff --git a/vendor/k8s.io/client-go/informers/networking/v1/ingress.go b/vendor/k8s.io/client-go/informers/networking/v1/ingress.go
    index 06c317ad313e..a0deccf16ec6 100644
    --- a/vendor/k8s.io/client-go/informers/networking/v1/ingress.go
    +++ b/vendor/k8s.io/client-go/informers/networking/v1/ingress.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	networkingv1 "k8s.io/api/networking/v1"
    +	apinetworkingv1 "k8s.io/api/networking/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/networking/v1"
    +	networkingv1 "k8s.io/client-go/listers/networking/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Ingresses.
     type IngressInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.IngressLister
    +	Lister() networkingv1.IngressLister
     }
     
     type ingressInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredIngressInformer(client kubernetes.Interface, namespace string, r
     				return client.NetworkingV1().Ingresses(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&networkingv1.Ingress{},
    +		&apinetworkingv1.Ingress{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *ingressInformer) defaultInformer(client kubernetes.Interface, resyncPer
     }
     
     func (f *ingressInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&networkingv1.Ingress{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apinetworkingv1.Ingress{}, f.defaultInformer)
     }
     
    -func (f *ingressInformer) Lister() v1.IngressLister {
    -	return v1.NewIngressLister(f.Informer().GetIndexer())
    +func (f *ingressInformer) Lister() networkingv1.IngressLister {
    +	return networkingv1.NewIngressLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/networking/v1/ingressclass.go b/vendor/k8s.io/client-go/informers/networking/v1/ingressclass.go
    index 15514745bfce..7eb174516921 100644
    --- a/vendor/k8s.io/client-go/informers/networking/v1/ingressclass.go
    +++ b/vendor/k8s.io/client-go/informers/networking/v1/ingressclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	networkingv1 "k8s.io/api/networking/v1"
    +	apinetworkingv1 "k8s.io/api/networking/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/networking/v1"
    +	networkingv1 "k8s.io/client-go/listers/networking/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // IngressClasses.
     type IngressClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.IngressClassLister
    +	Lister() networkingv1.IngressClassLister
     }
     
     type ingressClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredIngressClassInformer(client kubernetes.Interface, resyncPeriod t
     				return client.NetworkingV1().IngressClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&networkingv1.IngressClass{},
    +		&apinetworkingv1.IngressClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *ingressClassInformer) defaultInformer(client kubernetes.Interface, resy
     }
     
     func (f *ingressClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&networkingv1.IngressClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apinetworkingv1.IngressClass{}, f.defaultInformer)
     }
     
    -func (f *ingressClassInformer) Lister() v1.IngressClassLister {
    -	return v1.NewIngressClassLister(f.Informer().GetIndexer())
    +func (f *ingressClassInformer) Lister() networkingv1.IngressClassLister {
    +	return networkingv1.NewIngressClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go b/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go
    index a75c9ac21f21..d4bac2911210 100644
    --- a/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go
    +++ b/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	networkingv1 "k8s.io/api/networking/v1"
    +	apinetworkingv1 "k8s.io/api/networking/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/networking/v1"
    +	networkingv1 "k8s.io/client-go/listers/networking/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // NetworkPolicies.
     type NetworkPolicyInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.NetworkPolicyLister
    +	Lister() networkingv1.NetworkPolicyLister
     }
     
     type networkPolicyInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredNetworkPolicyInformer(client kubernetes.Interface, namespace str
     				return client.NetworkingV1().NetworkPolicies(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&networkingv1.NetworkPolicy{},
    +		&apinetworkingv1.NetworkPolicy{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *networkPolicyInformer) defaultInformer(client kubernetes.Interface, res
     }
     
     func (f *networkPolicyInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&networkingv1.NetworkPolicy{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apinetworkingv1.NetworkPolicy{}, f.defaultInformer)
     }
     
    -func (f *networkPolicyInformer) Lister() v1.NetworkPolicyLister {
    -	return v1.NewNetworkPolicyLister(f.Informer().GetIndexer())
    +func (f *networkPolicyInformer) Lister() networkingv1.NetworkPolicyLister {
    +	return networkingv1.NewNetworkPolicyLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/networking/v1alpha1/ipaddress.go b/vendor/k8s.io/client-go/informers/networking/v1alpha1/ipaddress.go
    index a1083dbf0a55..f04c14535e93 100644
    --- a/vendor/k8s.io/client-go/informers/networking/v1alpha1/ipaddress.go
    +++ b/vendor/k8s.io/client-go/informers/networking/v1alpha1/ipaddress.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	networkingv1alpha1 "k8s.io/api/networking/v1alpha1"
    +	apinetworkingv1alpha1 "k8s.io/api/networking/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/networking/v1alpha1"
    +	networkingv1alpha1 "k8s.io/client-go/listers/networking/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // IPAddresses.
     type IPAddressInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.IPAddressLister
    +	Lister() networkingv1alpha1.IPAddressLister
     }
     
     type iPAddressInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredIPAddressInformer(client kubernetes.Interface, resyncPeriod time
     				return client.NetworkingV1alpha1().IPAddresses().Watch(context.TODO(), options)
     			},
     		},
    -		&networkingv1alpha1.IPAddress{},
    +		&apinetworkingv1alpha1.IPAddress{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *iPAddressInformer) defaultInformer(client kubernetes.Interface, resyncP
     }
     
     func (f *iPAddressInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&networkingv1alpha1.IPAddress{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apinetworkingv1alpha1.IPAddress{}, f.defaultInformer)
     }
     
    -func (f *iPAddressInformer) Lister() v1alpha1.IPAddressLister {
    -	return v1alpha1.NewIPAddressLister(f.Informer().GetIndexer())
    +func (f *iPAddressInformer) Lister() networkingv1alpha1.IPAddressLister {
    +	return networkingv1alpha1.NewIPAddressLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/networking/v1alpha1/servicecidr.go b/vendor/k8s.io/client-go/informers/networking/v1alpha1/servicecidr.go
    index 57e6021431e4..86af6d226d40 100644
    --- a/vendor/k8s.io/client-go/informers/networking/v1alpha1/servicecidr.go
    +++ b/vendor/k8s.io/client-go/informers/networking/v1alpha1/servicecidr.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	networkingv1alpha1 "k8s.io/api/networking/v1alpha1"
    +	apinetworkingv1alpha1 "k8s.io/api/networking/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/networking/v1alpha1"
    +	networkingv1alpha1 "k8s.io/client-go/listers/networking/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ServiceCIDRs.
     type ServiceCIDRInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.ServiceCIDRLister
    +	Lister() networkingv1alpha1.ServiceCIDRLister
     }
     
     type serviceCIDRInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredServiceCIDRInformer(client kubernetes.Interface, resyncPeriod ti
     				return client.NetworkingV1alpha1().ServiceCIDRs().Watch(context.TODO(), options)
     			},
     		},
    -		&networkingv1alpha1.ServiceCIDR{},
    +		&apinetworkingv1alpha1.ServiceCIDR{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *serviceCIDRInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *serviceCIDRInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&networkingv1alpha1.ServiceCIDR{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apinetworkingv1alpha1.ServiceCIDR{}, f.defaultInformer)
     }
     
    -func (f *serviceCIDRInformer) Lister() v1alpha1.ServiceCIDRLister {
    -	return v1alpha1.NewServiceCIDRLister(f.Informer().GetIndexer())
    +func (f *serviceCIDRInformer) Lister() networkingv1alpha1.ServiceCIDRLister {
    +	return networkingv1alpha1.NewServiceCIDRLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/networking/v1beta1/ingress.go b/vendor/k8s.io/client-go/informers/networking/v1beta1/ingress.go
    index 8800d6c9cd86..aa337d8e7fde 100644
    --- a/vendor/k8s.io/client-go/informers/networking/v1beta1/ingress.go
    +++ b/vendor/k8s.io/client-go/informers/networking/v1beta1/ingress.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	apinetworkingv1beta1 "k8s.io/api/networking/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/networking/v1beta1"
    +	networkingv1beta1 "k8s.io/client-go/listers/networking/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Ingresses.
     type IngressInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.IngressLister
    +	Lister() networkingv1beta1.IngressLister
     }
     
     type ingressInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredIngressInformer(client kubernetes.Interface, namespace string, r
     				return client.NetworkingV1beta1().Ingresses(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&networkingv1beta1.Ingress{},
    +		&apinetworkingv1beta1.Ingress{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *ingressInformer) defaultInformer(client kubernetes.Interface, resyncPer
     }
     
     func (f *ingressInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&networkingv1beta1.Ingress{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apinetworkingv1beta1.Ingress{}, f.defaultInformer)
     }
     
    -func (f *ingressInformer) Lister() v1beta1.IngressLister {
    -	return v1beta1.NewIngressLister(f.Informer().GetIndexer())
    +func (f *ingressInformer) Lister() networkingv1beta1.IngressLister {
    +	return networkingv1beta1.NewIngressLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/networking/v1beta1/ingressclass.go b/vendor/k8s.io/client-go/informers/networking/v1beta1/ingressclass.go
    index 17864299bcbd..6ff9d5169510 100644
    --- a/vendor/k8s.io/client-go/informers/networking/v1beta1/ingressclass.go
    +++ b/vendor/k8s.io/client-go/informers/networking/v1beta1/ingressclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	apinetworkingv1beta1 "k8s.io/api/networking/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/networking/v1beta1"
    +	networkingv1beta1 "k8s.io/client-go/listers/networking/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // IngressClasses.
     type IngressClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.IngressClassLister
    +	Lister() networkingv1beta1.IngressClassLister
     }
     
     type ingressClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredIngressClassInformer(client kubernetes.Interface, resyncPeriod t
     				return client.NetworkingV1beta1().IngressClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&networkingv1beta1.IngressClass{},
    +		&apinetworkingv1beta1.IngressClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *ingressClassInformer) defaultInformer(client kubernetes.Interface, resy
     }
     
     func (f *ingressClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&networkingv1beta1.IngressClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apinetworkingv1beta1.IngressClass{}, f.defaultInformer)
     }
     
    -func (f *ingressClassInformer) Lister() v1beta1.IngressClassLister {
    -	return v1beta1.NewIngressClassLister(f.Informer().GetIndexer())
    +func (f *ingressClassInformer) Lister() networkingv1beta1.IngressClassLister {
    +	return networkingv1beta1.NewIngressClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/networking/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/networking/v1beta1/interface.go
    index 2dcc3129a54e..974a8fd5bff4 100644
    --- a/vendor/k8s.io/client-go/informers/networking/v1beta1/interface.go
    +++ b/vendor/k8s.io/client-go/informers/networking/v1beta1/interface.go
    @@ -24,10 +24,14 @@ import (
     
     // Interface provides access to all the informers in this group version.
     type Interface interface {
    +	// IPAddresses returns a IPAddressInformer.
    +	IPAddresses() IPAddressInformer
     	// Ingresses returns a IngressInformer.
     	Ingresses() IngressInformer
     	// IngressClasses returns a IngressClassInformer.
     	IngressClasses() IngressClassInformer
    +	// ServiceCIDRs returns a ServiceCIDRInformer.
    +	ServiceCIDRs() ServiceCIDRInformer
     }
     
     type version struct {
    @@ -41,6 +45,11 @@ func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakList
     	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
     }
     
    +// IPAddresses returns a IPAddressInformer.
    +func (v *version) IPAddresses() IPAddressInformer {
    +	return &iPAddressInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +}
    +
     // Ingresses returns a IngressInformer.
     func (v *version) Ingresses() IngressInformer {
     	return &ingressInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
    @@ -50,3 +59,8 @@ func (v *version) Ingresses() IngressInformer {
     func (v *version) IngressClasses() IngressClassInformer {
     	return &ingressClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
     }
    +
    +// ServiceCIDRs returns a ServiceCIDRInformer.
    +func (v *version) ServiceCIDRs() ServiceCIDRInformer {
    +	return &serviceCIDRInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +}
    diff --git a/vendor/k8s.io/client-go/informers/networking/v1beta1/ipaddress.go b/vendor/k8s.io/client-go/informers/networking/v1beta1/ipaddress.go
    new file mode 100644
    index 000000000000..401ecd7cba6d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/networking/v1beta1/ipaddress.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apinetworkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	networkingv1beta1 "k8s.io/client-go/listers/networking/v1beta1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// IPAddressInformer provides access to a shared informer and lister for
    +// IPAddresses.
    +type IPAddressInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() networkingv1beta1.IPAddressLister
    +}
    +
    +type iPAddressInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewIPAddressInformer constructs a new informer for IPAddress type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewIPAddressInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredIPAddressInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredIPAddressInformer constructs a new informer for IPAddress type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredIPAddressInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.NetworkingV1beta1().IPAddresses().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.NetworkingV1beta1().IPAddresses().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apinetworkingv1beta1.IPAddress{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *iPAddressInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredIPAddressInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *iPAddressInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apinetworkingv1beta1.IPAddress{}, f.defaultInformer)
    +}
    +
    +func (f *iPAddressInformer) Lister() networkingv1beta1.IPAddressLister {
    +	return networkingv1beta1.NewIPAddressLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/networking/v1beta1/servicecidr.go b/vendor/k8s.io/client-go/informers/networking/v1beta1/servicecidr.go
    new file mode 100644
    index 000000000000..ff40692f29ff
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/networking/v1beta1/servicecidr.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apinetworkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	networkingv1beta1 "k8s.io/client-go/listers/networking/v1beta1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ServiceCIDRInformer provides access to a shared informer and lister for
    +// ServiceCIDRs.
    +type ServiceCIDRInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() networkingv1beta1.ServiceCIDRLister
    +}
    +
    +type serviceCIDRInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewServiceCIDRInformer constructs a new informer for ServiceCIDR type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewServiceCIDRInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredServiceCIDRInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredServiceCIDRInformer constructs a new informer for ServiceCIDR type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredServiceCIDRInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.NetworkingV1beta1().ServiceCIDRs().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.NetworkingV1beta1().ServiceCIDRs().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apinetworkingv1beta1.ServiceCIDR{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *serviceCIDRInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredServiceCIDRInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *serviceCIDRInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apinetworkingv1beta1.ServiceCIDR{}, f.defaultInformer)
    +}
    +
    +func (f *serviceCIDRInformer) Lister() networkingv1beta1.ServiceCIDRLister {
    +	return networkingv1beta1.NewServiceCIDRLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/node/v1/runtimeclass.go b/vendor/k8s.io/client-go/informers/node/v1/runtimeclass.go
    index 293f4e2e2b68..7fef7e3328e9 100644
    --- a/vendor/k8s.io/client-go/informers/node/v1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/informers/node/v1/runtimeclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	nodev1 "k8s.io/api/node/v1"
    +	apinodev1 "k8s.io/api/node/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/node/v1"
    +	nodev1 "k8s.io/client-go/listers/node/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // RuntimeClasses.
     type RuntimeClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.RuntimeClassLister
    +	Lister() nodev1.RuntimeClassLister
     }
     
     type runtimeClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredRuntimeClassInformer(client kubernetes.Interface, resyncPeriod t
     				return client.NodeV1().RuntimeClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&nodev1.RuntimeClass{},
    +		&apinodev1.RuntimeClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *runtimeClassInformer) defaultInformer(client kubernetes.Interface, resy
     }
     
     func (f *runtimeClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&nodev1.RuntimeClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apinodev1.RuntimeClass{}, f.defaultInformer)
     }
     
    -func (f *runtimeClassInformer) Lister() v1.RuntimeClassLister {
    -	return v1.NewRuntimeClassLister(f.Informer().GetIndexer())
    +func (f *runtimeClassInformer) Lister() nodev1.RuntimeClassLister {
    +	return nodev1.NewRuntimeClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/node/v1alpha1/runtimeclass.go b/vendor/k8s.io/client-go/informers/node/v1alpha1/runtimeclass.go
    index d314a9573c67..aee61406f1d3 100644
    --- a/vendor/k8s.io/client-go/informers/node/v1alpha1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/informers/node/v1alpha1/runtimeclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	nodev1alpha1 "k8s.io/api/node/v1alpha1"
    +	apinodev1alpha1 "k8s.io/api/node/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/node/v1alpha1"
    +	nodev1alpha1 "k8s.io/client-go/listers/node/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // RuntimeClasses.
     type RuntimeClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.RuntimeClassLister
    +	Lister() nodev1alpha1.RuntimeClassLister
     }
     
     type runtimeClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredRuntimeClassInformer(client kubernetes.Interface, resyncPeriod t
     				return client.NodeV1alpha1().RuntimeClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&nodev1alpha1.RuntimeClass{},
    +		&apinodev1alpha1.RuntimeClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *runtimeClassInformer) defaultInformer(client kubernetes.Interface, resy
     }
     
     func (f *runtimeClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&nodev1alpha1.RuntimeClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apinodev1alpha1.RuntimeClass{}, f.defaultInformer)
     }
     
    -func (f *runtimeClassInformer) Lister() v1alpha1.RuntimeClassLister {
    -	return v1alpha1.NewRuntimeClassLister(f.Informer().GetIndexer())
    +func (f *runtimeClassInformer) Lister() nodev1alpha1.RuntimeClassLister {
    +	return nodev1alpha1.NewRuntimeClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/node/v1beta1/runtimeclass.go b/vendor/k8s.io/client-go/informers/node/v1beta1/runtimeclass.go
    index 07619b2306f7..ab9b8e0eee4b 100644
    --- a/vendor/k8s.io/client-go/informers/node/v1beta1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/informers/node/v1beta1/runtimeclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	nodev1beta1 "k8s.io/api/node/v1beta1"
    +	apinodev1beta1 "k8s.io/api/node/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/node/v1beta1"
    +	nodev1beta1 "k8s.io/client-go/listers/node/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // RuntimeClasses.
     type RuntimeClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.RuntimeClassLister
    +	Lister() nodev1beta1.RuntimeClassLister
     }
     
     type runtimeClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredRuntimeClassInformer(client kubernetes.Interface, resyncPeriod t
     				return client.NodeV1beta1().RuntimeClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&nodev1beta1.RuntimeClass{},
    +		&apinodev1beta1.RuntimeClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *runtimeClassInformer) defaultInformer(client kubernetes.Interface, resy
     }
     
     func (f *runtimeClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&nodev1beta1.RuntimeClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apinodev1beta1.RuntimeClass{}, f.defaultInformer)
     }
     
    -func (f *runtimeClassInformer) Lister() v1beta1.RuntimeClassLister {
    -	return v1beta1.NewRuntimeClassLister(f.Informer().GetIndexer())
    +func (f *runtimeClassInformer) Lister() nodev1beta1.RuntimeClassLister {
    +	return nodev1beta1.NewRuntimeClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/policy/v1/poddisruptionbudget.go b/vendor/k8s.io/client-go/informers/policy/v1/poddisruptionbudget.go
    index 436598512af2..baacb59daabb 100644
    --- a/vendor/k8s.io/client-go/informers/policy/v1/poddisruptionbudget.go
    +++ b/vendor/k8s.io/client-go/informers/policy/v1/poddisruptionbudget.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	policyv1 "k8s.io/api/policy/v1"
    +	apipolicyv1 "k8s.io/api/policy/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/policy/v1"
    +	policyv1 "k8s.io/client-go/listers/policy/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PodDisruptionBudgets.
     type PodDisruptionBudgetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.PodDisruptionBudgetLister
    +	Lister() policyv1.PodDisruptionBudgetLister
     }
     
     type podDisruptionBudgetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredPodDisruptionBudgetInformer(client kubernetes.Interface, namespa
     				return client.PolicyV1().PodDisruptionBudgets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&policyv1.PodDisruptionBudget{},
    +		&apipolicyv1.PodDisruptionBudget{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *podDisruptionBudgetInformer) defaultInformer(client kubernetes.Interfac
     }
     
     func (f *podDisruptionBudgetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&policyv1.PodDisruptionBudget{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apipolicyv1.PodDisruptionBudget{}, f.defaultInformer)
     }
     
    -func (f *podDisruptionBudgetInformer) Lister() v1.PodDisruptionBudgetLister {
    -	return v1.NewPodDisruptionBudgetLister(f.Informer().GetIndexer())
    +func (f *podDisruptionBudgetInformer) Lister() policyv1.PodDisruptionBudgetLister {
    +	return policyv1.NewPodDisruptionBudgetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go b/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go
    index 4530343ecc03..081b2e08e452 100644
    --- a/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go
    +++ b/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	policyv1beta1 "k8s.io/api/policy/v1beta1"
    +	apipolicyv1beta1 "k8s.io/api/policy/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/policy/v1beta1"
    +	policyv1beta1 "k8s.io/client-go/listers/policy/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PodDisruptionBudgets.
     type PodDisruptionBudgetInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.PodDisruptionBudgetLister
    +	Lister() policyv1beta1.PodDisruptionBudgetLister
     }
     
     type podDisruptionBudgetInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredPodDisruptionBudgetInformer(client kubernetes.Interface, namespa
     				return client.PolicyV1beta1().PodDisruptionBudgets(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&policyv1beta1.PodDisruptionBudget{},
    +		&apipolicyv1beta1.PodDisruptionBudget{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *podDisruptionBudgetInformer) defaultInformer(client kubernetes.Interfac
     }
     
     func (f *podDisruptionBudgetInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&policyv1beta1.PodDisruptionBudget{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apipolicyv1beta1.PodDisruptionBudget{}, f.defaultInformer)
     }
     
    -func (f *podDisruptionBudgetInformer) Lister() v1beta1.PodDisruptionBudgetLister {
    -	return v1beta1.NewPodDisruptionBudgetLister(f.Informer().GetIndexer())
    +func (f *podDisruptionBudgetInformer) Lister() policyv1beta1.PodDisruptionBudgetLister {
    +	return policyv1beta1.NewPodDisruptionBudgetLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go b/vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go
    index 0572be264bb6..0606fb46466a 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1 "k8s.io/api/rbac/v1"
    +	apirbacv1 "k8s.io/api/rbac/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/rbac/v1"
    +	rbacv1 "k8s.io/client-go/listers/rbac/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ClusterRoles.
     type ClusterRoleInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ClusterRoleLister
    +	Lister() rbacv1.ClusterRoleLister
     }
     
     type clusterRoleInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredClusterRoleInformer(client kubernetes.Interface, resyncPeriod ti
     				return client.RbacV1().ClusterRoles().Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1.ClusterRole{},
    +		&apirbacv1.ClusterRole{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *clusterRoleInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1.ClusterRole{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1.ClusterRole{}, f.defaultInformer)
     }
     
    -func (f *clusterRoleInformer) Lister() v1.ClusterRoleLister {
    -	return v1.NewClusterRoleLister(f.Informer().GetIndexer())
    +func (f *clusterRoleInformer) Lister() rbacv1.ClusterRoleLister {
    +	return rbacv1.NewClusterRoleLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go
    index 51026c055803..dca087c9d2a1 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1 "k8s.io/api/rbac/v1"
    +	apirbacv1 "k8s.io/api/rbac/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/rbac/v1"
    +	rbacv1 "k8s.io/client-go/listers/rbac/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ClusterRoleBindings.
     type ClusterRoleBindingInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.ClusterRoleBindingLister
    +	Lister() rbacv1.ClusterRoleBindingLister
     }
     
     type clusterRoleBindingInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredClusterRoleBindingInformer(client kubernetes.Interface, resyncPe
     				return client.RbacV1().ClusterRoleBindings().Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1.ClusterRoleBinding{},
    +		&apirbacv1.ClusterRoleBinding{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *clusterRoleBindingInformer) defaultInformer(client kubernetes.Interface
     }
     
     func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1.ClusterRoleBinding{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1.ClusterRoleBinding{}, f.defaultInformer)
     }
     
    -func (f *clusterRoleBindingInformer) Lister() v1.ClusterRoleBindingLister {
    -	return v1.NewClusterRoleBindingLister(f.Informer().GetIndexer())
    +func (f *clusterRoleBindingInformer) Lister() rbacv1.ClusterRoleBindingLister {
    +	return rbacv1.NewClusterRoleBindingLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1/role.go b/vendor/k8s.io/client-go/informers/rbac/v1/role.go
    index 986a5f29f4a6..66f9c3f23c2b 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1/role.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1/role.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1 "k8s.io/api/rbac/v1"
    +	apirbacv1 "k8s.io/api/rbac/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/rbac/v1"
    +	rbacv1 "k8s.io/client-go/listers/rbac/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Roles.
     type RoleInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.RoleLister
    +	Lister() rbacv1.RoleLister
     }
     
     type roleInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredRoleInformer(client kubernetes.Interface, namespace string, resy
     				return client.RbacV1().Roles(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1.Role{},
    +		&apirbacv1.Role{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *roleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod
     }
     
     func (f *roleInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1.Role{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1.Role{}, f.defaultInformer)
     }
     
    -func (f *roleInformer) Lister() v1.RoleLister {
    -	return v1.NewRoleLister(f.Informer().GetIndexer())
    +func (f *roleInformer) Lister() rbacv1.RoleLister {
    +	return rbacv1.NewRoleLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go
    index 0264049fb0e6..6d72601a482e 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1 "k8s.io/api/rbac/v1"
    +	apirbacv1 "k8s.io/api/rbac/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/rbac/v1"
    +	rbacv1 "k8s.io/client-go/listers/rbac/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // RoleBindings.
     type RoleBindingInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.RoleBindingLister
    +	Lister() rbacv1.RoleBindingLister
     }
     
     type roleBindingInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredRoleBindingInformer(client kubernetes.Interface, namespace strin
     				return client.RbacV1().RoleBindings(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1.RoleBinding{},
    +		&apirbacv1.RoleBinding{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *roleBindingInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *roleBindingInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1.RoleBinding{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1.RoleBinding{}, f.defaultInformer)
     }
     
    -func (f *roleBindingInformer) Lister() v1.RoleBindingLister {
    -	return v1.NewRoleBindingLister(f.Informer().GetIndexer())
    +func (f *roleBindingInformer) Lister() rbacv1.RoleBindingLister {
    +	return rbacv1.NewRoleBindingLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go
    index 70d9885f0a08..52249f6b4ec8 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	apirbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1"
    +	rbacv1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ClusterRoles.
     type ClusterRoleInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.ClusterRoleLister
    +	Lister() rbacv1alpha1.ClusterRoleLister
     }
     
     type clusterRoleInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredClusterRoleInformer(client kubernetes.Interface, resyncPeriod ti
     				return client.RbacV1alpha1().ClusterRoles().Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1alpha1.ClusterRole{},
    +		&apirbacv1alpha1.ClusterRole{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *clusterRoleInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1alpha1.ClusterRole{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1alpha1.ClusterRole{}, f.defaultInformer)
     }
     
    -func (f *clusterRoleInformer) Lister() v1alpha1.ClusterRoleLister {
    -	return v1alpha1.NewClusterRoleLister(f.Informer().GetIndexer())
    +func (f *clusterRoleInformer) Lister() rbacv1alpha1.ClusterRoleLister {
    +	return rbacv1alpha1.NewClusterRoleLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go
    index 8c18f6792849..c8f7c4c10eec 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	apirbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1"
    +	rbacv1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ClusterRoleBindings.
     type ClusterRoleBindingInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.ClusterRoleBindingLister
    +	Lister() rbacv1alpha1.ClusterRoleBindingLister
     }
     
     type clusterRoleBindingInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredClusterRoleBindingInformer(client kubernetes.Interface, resyncPe
     				return client.RbacV1alpha1().ClusterRoleBindings().Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1alpha1.ClusterRoleBinding{},
    +		&apirbacv1alpha1.ClusterRoleBinding{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *clusterRoleBindingInformer) defaultInformer(client kubernetes.Interface
     }
     
     func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1alpha1.ClusterRoleBinding{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1alpha1.ClusterRoleBinding{}, f.defaultInformer)
     }
     
    -func (f *clusterRoleBindingInformer) Lister() v1alpha1.ClusterRoleBindingLister {
    -	return v1alpha1.NewClusterRoleBindingLister(f.Informer().GetIndexer())
    +func (f *clusterRoleBindingInformer) Lister() rbacv1alpha1.ClusterRoleBindingLister {
    +	return rbacv1alpha1.NewClusterRoleBindingLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go
    index 7dc4551d9270..dcdddc05767b 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	apirbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1"
    +	rbacv1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Roles.
     type RoleInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.RoleLister
    +	Lister() rbacv1alpha1.RoleLister
     }
     
     type roleInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredRoleInformer(client kubernetes.Interface, namespace string, resy
     				return client.RbacV1alpha1().Roles(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1alpha1.Role{},
    +		&apirbacv1alpha1.Role{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *roleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod
     }
     
     func (f *roleInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1alpha1.Role{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1alpha1.Role{}, f.defaultInformer)
     }
     
    -func (f *roleInformer) Lister() v1alpha1.RoleLister {
    -	return v1alpha1.NewRoleLister(f.Informer().GetIndexer())
    +func (f *roleInformer) Lister() rbacv1alpha1.RoleLister {
    +	return rbacv1alpha1.NewRoleLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go
    index d49ec8b362ba..9184a5baf41a 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	apirbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1"
    +	rbacv1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // RoleBindings.
     type RoleBindingInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.RoleBindingLister
    +	Lister() rbacv1alpha1.RoleBindingLister
     }
     
     type roleBindingInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredRoleBindingInformer(client kubernetes.Interface, namespace strin
     				return client.RbacV1alpha1().RoleBindings(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1alpha1.RoleBinding{},
    +		&apirbacv1alpha1.RoleBinding{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *roleBindingInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *roleBindingInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1alpha1.RoleBinding{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1alpha1.RoleBinding{}, f.defaultInformer)
     }
     
    -func (f *roleBindingInformer) Lister() v1alpha1.RoleBindingLister {
    -	return v1alpha1.NewRoleBindingLister(f.Informer().GetIndexer())
    +func (f *roleBindingInformer) Lister() rbacv1alpha1.RoleBindingLister {
    +	return rbacv1alpha1.NewRoleBindingLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go
    index e50e1d39354a..d86dd771ab4b 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    +	apirbacv1beta1 "k8s.io/api/rbac/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/rbac/v1beta1"
    +	rbacv1beta1 "k8s.io/client-go/listers/rbac/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ClusterRoles.
     type ClusterRoleInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.ClusterRoleLister
    +	Lister() rbacv1beta1.ClusterRoleLister
     }
     
     type clusterRoleInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredClusterRoleInformer(client kubernetes.Interface, resyncPeriod ti
     				return client.RbacV1beta1().ClusterRoles().Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1beta1.ClusterRole{},
    +		&apirbacv1beta1.ClusterRole{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *clusterRoleInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1beta1.ClusterRole{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1beta1.ClusterRole{}, f.defaultInformer)
     }
     
    -func (f *clusterRoleInformer) Lister() v1beta1.ClusterRoleLister {
    -	return v1beta1.NewClusterRoleLister(f.Informer().GetIndexer())
    +func (f *clusterRoleInformer) Lister() rbacv1beta1.ClusterRoleLister {
    +	return rbacv1beta1.NewClusterRoleLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go
    index a7ea4cd38d5b..70c1cd98423f 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    +	apirbacv1beta1 "k8s.io/api/rbac/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/rbac/v1beta1"
    +	rbacv1beta1 "k8s.io/client-go/listers/rbac/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ClusterRoleBindings.
     type ClusterRoleBindingInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.ClusterRoleBindingLister
    +	Lister() rbacv1beta1.ClusterRoleBindingLister
     }
     
     type clusterRoleBindingInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredClusterRoleBindingInformer(client kubernetes.Interface, resyncPe
     				return client.RbacV1beta1().ClusterRoleBindings().Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1beta1.ClusterRoleBinding{},
    +		&apirbacv1beta1.ClusterRoleBinding{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *clusterRoleBindingInformer) defaultInformer(client kubernetes.Interface
     }
     
     func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1beta1.ClusterRoleBinding{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1beta1.ClusterRoleBinding{}, f.defaultInformer)
     }
     
    -func (f *clusterRoleBindingInformer) Lister() v1beta1.ClusterRoleBindingLister {
    -	return v1beta1.NewClusterRoleBindingLister(f.Informer().GetIndexer())
    +func (f *clusterRoleBindingInformer) Lister() rbacv1beta1.ClusterRoleBindingLister {
    +	return rbacv1beta1.NewClusterRoleBindingLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go
    index e56961e81e70..2995e1e63ebd 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    +	apirbacv1beta1 "k8s.io/api/rbac/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/rbac/v1beta1"
    +	rbacv1beta1 "k8s.io/client-go/listers/rbac/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // Roles.
     type RoleInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.RoleLister
    +	Lister() rbacv1beta1.RoleLister
     }
     
     type roleInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredRoleInformer(client kubernetes.Interface, namespace string, resy
     				return client.RbacV1beta1().Roles(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1beta1.Role{},
    +		&apirbacv1beta1.Role{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *roleInformer) defaultInformer(client kubernetes.Interface, resyncPeriod
     }
     
     func (f *roleInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1beta1.Role{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1beta1.Role{}, f.defaultInformer)
     }
     
    -func (f *roleInformer) Lister() v1beta1.RoleLister {
    -	return v1beta1.NewRoleLister(f.Informer().GetIndexer())
    +func (f *roleInformer) Lister() rbacv1beta1.RoleLister {
    +	return rbacv1beta1.NewRoleLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go
    index d893882db35e..11854f38def8 100644
    --- a/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    +	apirbacv1beta1 "k8s.io/api/rbac/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/rbac/v1beta1"
    +	rbacv1beta1 "k8s.io/client-go/listers/rbac/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // RoleBindings.
     type RoleBindingInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.RoleBindingLister
    +	Lister() rbacv1beta1.RoleBindingLister
     }
     
     type roleBindingInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredRoleBindingInformer(client kubernetes.Interface, namespace strin
     				return client.RbacV1beta1().RoleBindings(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&rbacv1beta1.RoleBinding{},
    +		&apirbacv1beta1.RoleBinding{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *roleBindingInformer) defaultInformer(client kubernetes.Interface, resyn
     }
     
     func (f *roleBindingInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&rbacv1beta1.RoleBinding{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apirbacv1beta1.RoleBinding{}, f.defaultInformer)
     }
     
    -func (f *roleBindingInformer) Lister() v1beta1.RoleBindingLister {
    -	return v1beta1.NewRoleBindingLister(f.Informer().GetIndexer())
    +func (f *roleBindingInformer) Lister() rbacv1beta1.RoleBindingLister {
    +	return rbacv1beta1.NewRoleBindingLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/resource/interface.go b/vendor/k8s.io/client-go/informers/resource/interface.go
    index 3fcce8ae9dc9..0d75732af6a5 100644
    --- a/vendor/k8s.io/client-go/informers/resource/interface.go
    +++ b/vendor/k8s.io/client-go/informers/resource/interface.go
    @@ -20,13 +20,16 @@ package resource
     
     import (
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    -	v1alpha2 "k8s.io/client-go/informers/resource/v1alpha2"
    +	v1alpha3 "k8s.io/client-go/informers/resource/v1alpha3"
    +	v1beta1 "k8s.io/client-go/informers/resource/v1beta1"
     )
     
     // Interface provides access to each of this group's versions.
     type Interface interface {
    -	// V1alpha2 provides access to shared informers for resources in V1alpha2.
    -	V1alpha2() v1alpha2.Interface
    +	// V1alpha3 provides access to shared informers for resources in V1alpha3.
    +	V1alpha3() v1alpha3.Interface
    +	// V1beta1 provides access to shared informers for resources in V1beta1.
    +	V1beta1() v1beta1.Interface
     }
     
     type group struct {
    @@ -40,7 +43,12 @@ func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakList
     	return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
     }
     
    -// V1alpha2 returns a new v1alpha2.Interface.
    -func (g *group) V1alpha2() v1alpha2.Interface {
    -	return v1alpha2.New(g.factory, g.namespace, g.tweakListOptions)
    +// V1alpha3 returns a new v1alpha3.Interface.
    +func (g *group) V1alpha3() v1alpha3.Interface {
    +	return v1alpha3.New(g.factory, g.namespace, g.tweakListOptions)
    +}
    +
    +// V1beta1 returns a new v1beta1.Interface.
    +func (g *group) V1beta1() v1beta1.Interface {
    +	return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
     }
    diff --git a/vendor/k8s.io/client-go/informers/resource/v1alpha3/deviceclass.go b/vendor/k8s.io/client-go/informers/resource/v1alpha3/deviceclass.go
    new file mode 100644
    index 000000000000..da322c8d04e8
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/resource/v1alpha3/deviceclass.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apiresourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	resourcev1alpha3 "k8s.io/client-go/listers/resource/v1alpha3"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// DeviceClassInformer provides access to a shared informer and lister for
    +// DeviceClasses.
    +type DeviceClassInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() resourcev1alpha3.DeviceClassLister
    +}
    +
    +type deviceClassInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewDeviceClassInformer constructs a new informer for DeviceClass type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewDeviceClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredDeviceClassInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredDeviceClassInformer constructs a new informer for DeviceClass type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredDeviceClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.ResourceV1alpha3().DeviceClasses().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.ResourceV1alpha3().DeviceClasses().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apiresourcev1alpha3.DeviceClass{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *deviceClassInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredDeviceClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *deviceClassInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apiresourcev1alpha3.DeviceClass{}, f.defaultInformer)
    +}
    +
    +func (f *deviceClassInformer) Lister() resourcev1alpha3.DeviceClassLister {
    +	return resourcev1alpha3.NewDeviceClassLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/resource/v1alpha2/interface.go b/vendor/k8s.io/client-go/informers/resource/v1alpha3/interface.go
    similarity index 74%
    rename from vendor/k8s.io/client-go/informers/resource/v1alpha2/interface.go
    rename to vendor/k8s.io/client-go/informers/resource/v1alpha3/interface.go
    index 23f817c62eb2..356c46179dff 100644
    --- a/vendor/k8s.io/client-go/informers/resource/v1alpha2/interface.go
    +++ b/vendor/k8s.io/client-go/informers/resource/v1alpha3/interface.go
    @@ -16,7 +16,7 @@ limitations under the License.
     
     // Code generated by informer-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
     import (
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    @@ -24,14 +24,14 @@ import (
     
     // Interface provides access to all the informers in this group version.
     type Interface interface {
    -	// PodSchedulingContexts returns a PodSchedulingContextInformer.
    -	PodSchedulingContexts() PodSchedulingContextInformer
    +	// DeviceClasses returns a DeviceClassInformer.
    +	DeviceClasses() DeviceClassInformer
     	// ResourceClaims returns a ResourceClaimInformer.
     	ResourceClaims() ResourceClaimInformer
     	// ResourceClaimTemplates returns a ResourceClaimTemplateInformer.
     	ResourceClaimTemplates() ResourceClaimTemplateInformer
    -	// ResourceClasses returns a ResourceClassInformer.
    -	ResourceClasses() ResourceClassInformer
    +	// ResourceSlices returns a ResourceSliceInformer.
    +	ResourceSlices() ResourceSliceInformer
     }
     
     type version struct {
    @@ -45,9 +45,9 @@ func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakList
     	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
     }
     
    -// PodSchedulingContexts returns a PodSchedulingContextInformer.
    -func (v *version) PodSchedulingContexts() PodSchedulingContextInformer {
    -	return &podSchedulingContextInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
    +// DeviceClasses returns a DeviceClassInformer.
    +func (v *version) DeviceClasses() DeviceClassInformer {
    +	return &deviceClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
     }
     
     // ResourceClaims returns a ResourceClaimInformer.
    @@ -60,7 +60,7 @@ func (v *version) ResourceClaimTemplates() ResourceClaimTemplateInformer {
     	return &resourceClaimTemplateInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
     }
     
    -// ResourceClasses returns a ResourceClassInformer.
    -func (v *version) ResourceClasses() ResourceClassInformer {
    -	return &resourceClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +// ResourceSlices returns a ResourceSliceInformer.
    +func (v *version) ResourceSlices() ResourceSliceInformer {
    +	return &resourceSliceInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
     }
    diff --git a/vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclaim.go b/vendor/k8s.io/client-go/informers/resource/v1alpha3/resourceclaim.go
    similarity index 83%
    rename from vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclaim.go
    rename to vendor/k8s.io/client-go/informers/resource/v1alpha3/resourceclaim.go
    index 3af93689191f..822d145bcbc6 100644
    --- a/vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclaim.go
    +++ b/vendor/k8s.io/client-go/informers/resource/v1alpha3/resourceclaim.go
    @@ -16,19 +16,19 @@ limitations under the License.
     
     // Code generated by informer-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    +	apiresourcev1alpha3 "k8s.io/api/resource/v1alpha3"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha2 "k8s.io/client-go/listers/resource/v1alpha2"
    +	resourcev1alpha3 "k8s.io/client-go/listers/resource/v1alpha3"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ResourceClaims.
     type ResourceClaimInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha2.ResourceClaimLister
    +	Lister() resourcev1alpha3.ResourceClaimLister
     }
     
     type resourceClaimInformer struct {
    @@ -62,16 +62,16 @@ func NewFilteredResourceClaimInformer(client kubernetes.Interface, namespace str
     				if tweakListOptions != nil {
     					tweakListOptions(&options)
     				}
    -				return client.ResourceV1alpha2().ResourceClaims(namespace).List(context.TODO(), options)
    +				return client.ResourceV1alpha3().ResourceClaims(namespace).List(context.TODO(), options)
     			},
     			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
     				if tweakListOptions != nil {
     					tweakListOptions(&options)
     				}
    -				return client.ResourceV1alpha2().ResourceClaims(namespace).Watch(context.TODO(), options)
    +				return client.ResourceV1alpha3().ResourceClaims(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&resourcev1alpha2.ResourceClaim{},
    +		&apiresourcev1alpha3.ResourceClaim{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *resourceClaimInformer) defaultInformer(client kubernetes.Interface, res
     }
     
     func (f *resourceClaimInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&resourcev1alpha2.ResourceClaim{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiresourcev1alpha3.ResourceClaim{}, f.defaultInformer)
     }
     
    -func (f *resourceClaimInformer) Lister() v1alpha2.ResourceClaimLister {
    -	return v1alpha2.NewResourceClaimLister(f.Informer().GetIndexer())
    +func (f *resourceClaimInformer) Lister() resourcev1alpha3.ResourceClaimLister {
    +	return resourcev1alpha3.NewResourceClaimLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclaimtemplate.go b/vendor/k8s.io/client-go/informers/resource/v1alpha3/resourceclaimtemplate.go
    similarity index 83%
    rename from vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclaimtemplate.go
    rename to vendor/k8s.io/client-go/informers/resource/v1alpha3/resourceclaimtemplate.go
    index 13f4ad835cfb..94680730afb2 100644
    --- a/vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclaimtemplate.go
    +++ b/vendor/k8s.io/client-go/informers/resource/v1alpha3/resourceclaimtemplate.go
    @@ -16,19 +16,19 @@ limitations under the License.
     
     // Code generated by informer-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    +	apiresourcev1alpha3 "k8s.io/api/resource/v1alpha3"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha2 "k8s.io/client-go/listers/resource/v1alpha2"
    +	resourcev1alpha3 "k8s.io/client-go/listers/resource/v1alpha3"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // ResourceClaimTemplates.
     type ResourceClaimTemplateInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha2.ResourceClaimTemplateLister
    +	Lister() resourcev1alpha3.ResourceClaimTemplateLister
     }
     
     type resourceClaimTemplateInformer struct {
    @@ -62,16 +62,16 @@ func NewFilteredResourceClaimTemplateInformer(client kubernetes.Interface, names
     				if tweakListOptions != nil {
     					tweakListOptions(&options)
     				}
    -				return client.ResourceV1alpha2().ResourceClaimTemplates(namespace).List(context.TODO(), options)
    +				return client.ResourceV1alpha3().ResourceClaimTemplates(namespace).List(context.TODO(), options)
     			},
     			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
     				if tweakListOptions != nil {
     					tweakListOptions(&options)
     				}
    -				return client.ResourceV1alpha2().ResourceClaimTemplates(namespace).Watch(context.TODO(), options)
    +				return client.ResourceV1alpha3().ResourceClaimTemplates(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&resourcev1alpha2.ResourceClaimTemplate{},
    +		&apiresourcev1alpha3.ResourceClaimTemplate{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *resourceClaimTemplateInformer) defaultInformer(client kubernetes.Interf
     }
     
     func (f *resourceClaimTemplateInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&resourcev1alpha2.ResourceClaimTemplate{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apiresourcev1alpha3.ResourceClaimTemplate{}, f.defaultInformer)
     }
     
    -func (f *resourceClaimTemplateInformer) Lister() v1alpha2.ResourceClaimTemplateLister {
    -	return v1alpha2.NewResourceClaimTemplateLister(f.Informer().GetIndexer())
    +func (f *resourceClaimTemplateInformer) Lister() resourcev1alpha3.ResourceClaimTemplateLister {
    +	return resourcev1alpha3.NewResourceClaimTemplateLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclass.go b/vendor/k8s.io/client-go/informers/resource/v1alpha3/resourceslice.go
    similarity index 62%
    rename from vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclass.go
    rename to vendor/k8s.io/client-go/informers/resource/v1alpha3/resourceslice.go
    index cb76d78fe497..15394575f522 100644
    --- a/vendor/k8s.io/client-go/informers/resource/v1alpha2/resourceclass.go
    +++ b/vendor/k8s.io/client-go/informers/resource/v1alpha3/resourceslice.go
    @@ -16,74 +16,74 @@ limitations under the License.
     
     // Code generated by informer-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    +	apiresourcev1alpha3 "k8s.io/api/resource/v1alpha3"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha2 "k8s.io/client-go/listers/resource/v1alpha2"
    +	resourcev1alpha3 "k8s.io/client-go/listers/resource/v1alpha3"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    -// ResourceClassInformer provides access to a shared informer and lister for
    -// ResourceClasses.
    -type ResourceClassInformer interface {
    +// ResourceSliceInformer provides access to a shared informer and lister for
    +// ResourceSlices.
    +type ResourceSliceInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha2.ResourceClassLister
    +	Lister() resourcev1alpha3.ResourceSliceLister
     }
     
    -type resourceClassInformer struct {
    +type resourceSliceInformer struct {
     	factory          internalinterfaces.SharedInformerFactory
     	tweakListOptions internalinterfaces.TweakListOptionsFunc
     }
     
    -// NewResourceClassInformer constructs a new informer for ResourceClass type.
    +// NewResourceSliceInformer constructs a new informer for ResourceSlice type.
     // Always prefer using an informer factory to get a shared informer instead of getting an independent
     // one. This reduces memory footprint and number of connections to the server.
    -func NewResourceClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    -	return NewFilteredResourceClassInformer(client, resyncPeriod, indexers, nil)
    +func NewResourceSliceInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredResourceSliceInformer(client, resyncPeriod, indexers, nil)
     }
     
    -// NewFilteredResourceClassInformer constructs a new informer for ResourceClass type.
    +// NewFilteredResourceSliceInformer constructs a new informer for ResourceSlice type.
     // Always prefer using an informer factory to get a shared informer instead of getting an independent
     // one. This reduces memory footprint and number of connections to the server.
    -func NewFilteredResourceClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +func NewFilteredResourceSliceInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
     	return cache.NewSharedIndexInformer(
     		&cache.ListWatch{
     			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
     				if tweakListOptions != nil {
     					tweakListOptions(&options)
     				}
    -				return client.ResourceV1alpha2().ResourceClasses().List(context.TODO(), options)
    +				return client.ResourceV1alpha3().ResourceSlices().List(context.TODO(), options)
     			},
     			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
     				if tweakListOptions != nil {
     					tweakListOptions(&options)
     				}
    -				return client.ResourceV1alpha2().ResourceClasses().Watch(context.TODO(), options)
    +				return client.ResourceV1alpha3().ResourceSlices().Watch(context.TODO(), options)
     			},
     		},
    -		&resourcev1alpha2.ResourceClass{},
    +		&apiresourcev1alpha3.ResourceSlice{},
     		resyncPeriod,
     		indexers,
     	)
     }
     
    -func (f *resourceClassInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    -	return NewFilteredResourceClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +func (f *resourceSliceInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredResourceSliceInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
     }
     
    -func (f *resourceClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&resourcev1alpha2.ResourceClass{}, f.defaultInformer)
    +func (f *resourceSliceInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apiresourcev1alpha3.ResourceSlice{}, f.defaultInformer)
     }
     
    -func (f *resourceClassInformer) Lister() v1alpha2.ResourceClassLister {
    -	return v1alpha2.NewResourceClassLister(f.Informer().GetIndexer())
    +func (f *resourceSliceInformer) Lister() resourcev1alpha3.ResourceSliceLister {
    +	return resourcev1alpha3.NewResourceSliceLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/resource/v1beta1/deviceclass.go b/vendor/k8s.io/client-go/informers/resource/v1beta1/deviceclass.go
    new file mode 100644
    index 000000000000..9623788c482f
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/resource/v1beta1/deviceclass.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apiresourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	resourcev1beta1 "k8s.io/client-go/listers/resource/v1beta1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// DeviceClassInformer provides access to a shared informer and lister for
    +// DeviceClasses.
    +type DeviceClassInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() resourcev1beta1.DeviceClassLister
    +}
    +
    +type deviceClassInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewDeviceClassInformer constructs a new informer for DeviceClass type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewDeviceClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredDeviceClassInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredDeviceClassInformer constructs a new informer for DeviceClass type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredDeviceClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.ResourceV1beta1().DeviceClasses().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.ResourceV1beta1().DeviceClasses().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apiresourcev1beta1.DeviceClass{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *deviceClassInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredDeviceClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *deviceClassInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apiresourcev1beta1.DeviceClass{}, f.defaultInformer)
    +}
    +
    +func (f *deviceClassInformer) Lister() resourcev1beta1.DeviceClassLister {
    +	return resourcev1beta1.NewDeviceClassLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/resource/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/resource/v1beta1/interface.go
    new file mode 100644
    index 000000000000..07330763ba0e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/resource/v1beta1/interface.go
    @@ -0,0 +1,66 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +)
    +
    +// Interface provides access to all the informers in this group version.
    +type Interface interface {
    +	// DeviceClasses returns a DeviceClassInformer.
    +	DeviceClasses() DeviceClassInformer
    +	// ResourceClaims returns a ResourceClaimInformer.
    +	ResourceClaims() ResourceClaimInformer
    +	// ResourceClaimTemplates returns a ResourceClaimTemplateInformer.
    +	ResourceClaimTemplates() ResourceClaimTemplateInformer
    +	// ResourceSlices returns a ResourceSliceInformer.
    +	ResourceSlices() ResourceSliceInformer
    +}
    +
    +type version struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	namespace        string
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// New returns a new Interface.
    +func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
    +	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
    +}
    +
    +// DeviceClasses returns a DeviceClassInformer.
    +func (v *version) DeviceClasses() DeviceClassInformer {
    +	return &deviceClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +}
    +
    +// ResourceClaims returns a ResourceClaimInformer.
    +func (v *version) ResourceClaims() ResourceClaimInformer {
    +	return &resourceClaimInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
    +}
    +
    +// ResourceClaimTemplates returns a ResourceClaimTemplateInformer.
    +func (v *version) ResourceClaimTemplates() ResourceClaimTemplateInformer {
    +	return &resourceClaimTemplateInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
    +}
    +
    +// ResourceSlices returns a ResourceSliceInformer.
    +func (v *version) ResourceSlices() ResourceSliceInformer {
    +	return &resourceSliceInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +}
    diff --git a/vendor/k8s.io/client-go/informers/resource/v1beta1/resourceclaim.go b/vendor/k8s.io/client-go/informers/resource/v1beta1/resourceclaim.go
    new file mode 100644
    index 000000000000..107b7fda7d5c
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/resource/v1beta1/resourceclaim.go
    @@ -0,0 +1,90 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apiresourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	resourcev1beta1 "k8s.io/client-go/listers/resource/v1beta1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ResourceClaimInformer provides access to a shared informer and lister for
    +// ResourceClaims.
    +type ResourceClaimInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() resourcev1beta1.ResourceClaimLister
    +}
    +
    +type resourceClaimInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +	namespace        string
    +}
    +
    +// NewResourceClaimInformer constructs a new informer for ResourceClaim type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewResourceClaimInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredResourceClaimInformer(client, namespace, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredResourceClaimInformer constructs a new informer for ResourceClaim type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredResourceClaimInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.ResourceV1beta1().ResourceClaims(namespace).List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.ResourceV1beta1().ResourceClaims(namespace).Watch(context.TODO(), options)
    +			},
    +		},
    +		&apiresourcev1beta1.ResourceClaim{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *resourceClaimInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredResourceClaimInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *resourceClaimInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apiresourcev1beta1.ResourceClaim{}, f.defaultInformer)
    +}
    +
    +func (f *resourceClaimInformer) Lister() resourcev1beta1.ResourceClaimLister {
    +	return resourcev1beta1.NewResourceClaimLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/resource/v1alpha2/podschedulingcontext.go b/vendor/k8s.io/client-go/informers/resource/v1beta1/resourceclaimtemplate.go
    similarity index 50%
    rename from vendor/k8s.io/client-go/informers/resource/v1alpha2/podschedulingcontext.go
    rename to vendor/k8s.io/client-go/informers/resource/v1beta1/resourceclaimtemplate.go
    index b4aabb3761ce..9ae634ad0bef 100644
    --- a/vendor/k8s.io/client-go/informers/resource/v1alpha2/podschedulingcontext.go
    +++ b/vendor/k8s.io/client-go/informers/resource/v1beta1/resourceclaimtemplate.go
    @@ -16,75 +16,75 @@ limitations under the License.
     
     // Code generated by informer-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    +	apiresourcev1beta1 "k8s.io/api/resource/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha2 "k8s.io/client-go/listers/resource/v1alpha2"
    +	resourcev1beta1 "k8s.io/client-go/listers/resource/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    -// PodSchedulingContextInformer provides access to a shared informer and lister for
    -// PodSchedulingContexts.
    -type PodSchedulingContextInformer interface {
    +// ResourceClaimTemplateInformer provides access to a shared informer and lister for
    +// ResourceClaimTemplates.
    +type ResourceClaimTemplateInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha2.PodSchedulingContextLister
    +	Lister() resourcev1beta1.ResourceClaimTemplateLister
     }
     
    -type podSchedulingContextInformer struct {
    +type resourceClaimTemplateInformer struct {
     	factory          internalinterfaces.SharedInformerFactory
     	tweakListOptions internalinterfaces.TweakListOptionsFunc
     	namespace        string
     }
     
    -// NewPodSchedulingContextInformer constructs a new informer for PodSchedulingContext type.
    +// NewResourceClaimTemplateInformer constructs a new informer for ResourceClaimTemplate type.
     // Always prefer using an informer factory to get a shared informer instead of getting an independent
     // one. This reduces memory footprint and number of connections to the server.
    -func NewPodSchedulingContextInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    -	return NewFilteredPodSchedulingContextInformer(client, namespace, resyncPeriod, indexers, nil)
    +func NewResourceClaimTemplateInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredResourceClaimTemplateInformer(client, namespace, resyncPeriod, indexers, nil)
     }
     
    -// NewFilteredPodSchedulingContextInformer constructs a new informer for PodSchedulingContext type.
    +// NewFilteredResourceClaimTemplateInformer constructs a new informer for ResourceClaimTemplate type.
     // Always prefer using an informer factory to get a shared informer instead of getting an independent
     // one. This reduces memory footprint and number of connections to the server.
    -func NewFilteredPodSchedulingContextInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +func NewFilteredResourceClaimTemplateInformer(client kubernetes.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
     	return cache.NewSharedIndexInformer(
     		&cache.ListWatch{
     			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
     				if tweakListOptions != nil {
     					tweakListOptions(&options)
     				}
    -				return client.ResourceV1alpha2().PodSchedulingContexts(namespace).List(context.TODO(), options)
    +				return client.ResourceV1beta1().ResourceClaimTemplates(namespace).List(context.TODO(), options)
     			},
     			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
     				if tweakListOptions != nil {
     					tweakListOptions(&options)
     				}
    -				return client.ResourceV1alpha2().PodSchedulingContexts(namespace).Watch(context.TODO(), options)
    +				return client.ResourceV1beta1().ResourceClaimTemplates(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&resourcev1alpha2.PodSchedulingContext{},
    +		&apiresourcev1beta1.ResourceClaimTemplate{},
     		resyncPeriod,
     		indexers,
     	)
     }
     
    -func (f *podSchedulingContextInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    -	return NewFilteredPodSchedulingContextInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +func (f *resourceClaimTemplateInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredResourceClaimTemplateInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
     }
     
    -func (f *podSchedulingContextInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&resourcev1alpha2.PodSchedulingContext{}, f.defaultInformer)
    +func (f *resourceClaimTemplateInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apiresourcev1beta1.ResourceClaimTemplate{}, f.defaultInformer)
     }
     
    -func (f *podSchedulingContextInformer) Lister() v1alpha2.PodSchedulingContextLister {
    -	return v1alpha2.NewPodSchedulingContextLister(f.Informer().GetIndexer())
    +func (f *resourceClaimTemplateInformer) Lister() resourcev1beta1.ResourceClaimTemplateLister {
    +	return resourcev1beta1.NewResourceClaimTemplateLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/resource/v1beta1/resourceslice.go b/vendor/k8s.io/client-go/informers/resource/v1beta1/resourceslice.go
    new file mode 100644
    index 000000000000..8ab6cb4fcb5a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/resource/v1beta1/resourceslice.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apiresourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	resourcev1beta1 "k8s.io/client-go/listers/resource/v1beta1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ResourceSliceInformer provides access to a shared informer and lister for
    +// ResourceSlices.
    +type ResourceSliceInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() resourcev1beta1.ResourceSliceLister
    +}
    +
    +type resourceSliceInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewResourceSliceInformer constructs a new informer for ResourceSlice type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewResourceSliceInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredResourceSliceInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredResourceSliceInformer constructs a new informer for ResourceSlice type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredResourceSliceInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.ResourceV1beta1().ResourceSlices().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.ResourceV1beta1().ResourceSlices().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apiresourcev1beta1.ResourceSlice{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *resourceSliceInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredResourceSliceInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *resourceSliceInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apiresourcev1beta1.ResourceSlice{}, f.defaultInformer)
    +}
    +
    +func (f *resourceSliceInformer) Lister() resourcev1beta1.ResourceSliceLister {
    +	return resourcev1beta1.NewResourceSliceLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/scheduling/v1/priorityclass.go b/vendor/k8s.io/client-go/informers/scheduling/v1/priorityclass.go
    index 730616b4a524..20b9fc0dc4b8 100644
    --- a/vendor/k8s.io/client-go/informers/scheduling/v1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/informers/scheduling/v1/priorityclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	schedulingv1 "k8s.io/api/scheduling/v1"
    +	apischedulingv1 "k8s.io/api/scheduling/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/scheduling/v1"
    +	schedulingv1 "k8s.io/client-go/listers/scheduling/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PriorityClasses.
     type PriorityClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.PriorityClassLister
    +	Lister() schedulingv1.PriorityClassLister
     }
     
     type priorityClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredPriorityClassInformer(client kubernetes.Interface, resyncPeriod
     				return client.SchedulingV1().PriorityClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&schedulingv1.PriorityClass{},
    +		&apischedulingv1.PriorityClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *priorityClassInformer) defaultInformer(client kubernetes.Interface, res
     }
     
     func (f *priorityClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&schedulingv1.PriorityClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apischedulingv1.PriorityClass{}, f.defaultInformer)
     }
     
    -func (f *priorityClassInformer) Lister() v1.PriorityClassLister {
    -	return v1.NewPriorityClassLister(f.Informer().GetIndexer())
    +func (f *priorityClassInformer) Lister() schedulingv1.PriorityClassLister {
    +	return schedulingv1.NewPriorityClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go b/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go
    index f82b6643690c..904bc6c4ee1c 100644
    --- a/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
    +	apischedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/scheduling/v1alpha1"
    +	schedulingv1alpha1 "k8s.io/client-go/listers/scheduling/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PriorityClasses.
     type PriorityClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.PriorityClassLister
    +	Lister() schedulingv1alpha1.PriorityClassLister
     }
     
     type priorityClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredPriorityClassInformer(client kubernetes.Interface, resyncPeriod
     				return client.SchedulingV1alpha1().PriorityClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&schedulingv1alpha1.PriorityClass{},
    +		&apischedulingv1alpha1.PriorityClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *priorityClassInformer) defaultInformer(client kubernetes.Interface, res
     }
     
     func (f *priorityClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&schedulingv1alpha1.PriorityClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apischedulingv1alpha1.PriorityClass{}, f.defaultInformer)
     }
     
    -func (f *priorityClassInformer) Lister() v1alpha1.PriorityClassLister {
    -	return v1alpha1.NewPriorityClassLister(f.Informer().GetIndexer())
    +func (f *priorityClassInformer) Lister() schedulingv1alpha1.PriorityClassLister {
    +	return schedulingv1alpha1.NewPriorityClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go b/vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go
    index fc7848891ee2..299d37673715 100644
    --- a/vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
    +	apischedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/scheduling/v1beta1"
    +	schedulingv1beta1 "k8s.io/client-go/listers/scheduling/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // PriorityClasses.
     type PriorityClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.PriorityClassLister
    +	Lister() schedulingv1beta1.PriorityClassLister
     }
     
     type priorityClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredPriorityClassInformer(client kubernetes.Interface, resyncPeriod
     				return client.SchedulingV1beta1().PriorityClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&schedulingv1beta1.PriorityClass{},
    +		&apischedulingv1beta1.PriorityClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *priorityClassInformer) defaultInformer(client kubernetes.Interface, res
     }
     
     func (f *priorityClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&schedulingv1beta1.PriorityClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apischedulingv1beta1.PriorityClass{}, f.defaultInformer)
     }
     
    -func (f *priorityClassInformer) Lister() v1beta1.PriorityClassLister {
    -	return v1beta1.NewPriorityClassLister(f.Informer().GetIndexer())
    +func (f *priorityClassInformer) Lister() schedulingv1beta1.PriorityClassLister {
    +	return schedulingv1beta1.NewPriorityClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1/csidriver.go b/vendor/k8s.io/client-go/informers/storage/v1/csidriver.go
    index 6fd1e678d959..79282873bb22 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1/csidriver.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1/csidriver.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1 "k8s.io/api/storage/v1"
    +	apistoragev1 "k8s.io/api/storage/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/storage/v1"
    +	storagev1 "k8s.io/client-go/listers/storage/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CSIDrivers.
     type CSIDriverInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.CSIDriverLister
    +	Lister() storagev1.CSIDriverLister
     }
     
     type cSIDriverInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredCSIDriverInformer(client kubernetes.Interface, resyncPeriod time
     				return client.StorageV1().CSIDrivers().Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1.CSIDriver{},
    +		&apistoragev1.CSIDriver{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *cSIDriverInformer) defaultInformer(client kubernetes.Interface, resyncP
     }
     
     func (f *cSIDriverInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1.CSIDriver{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1.CSIDriver{}, f.defaultInformer)
     }
     
    -func (f *cSIDriverInformer) Lister() v1.CSIDriverLister {
    -	return v1.NewCSIDriverLister(f.Informer().GetIndexer())
    +func (f *cSIDriverInformer) Lister() storagev1.CSIDriverLister {
    +	return storagev1.NewCSIDriverLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1/csinode.go b/vendor/k8s.io/client-go/informers/storage/v1/csinode.go
    index 96416967fb87..00345f897a64 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1/csinode.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1/csinode.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1 "k8s.io/api/storage/v1"
    +	apistoragev1 "k8s.io/api/storage/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/storage/v1"
    +	storagev1 "k8s.io/client-go/listers/storage/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CSINodes.
     type CSINodeInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.CSINodeLister
    +	Lister() storagev1.CSINodeLister
     }
     
     type cSINodeInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredCSINodeInformer(client kubernetes.Interface, resyncPeriod time.D
     				return client.StorageV1().CSINodes().Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1.CSINode{},
    +		&apistoragev1.CSINode{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *cSINodeInformer) defaultInformer(client kubernetes.Interface, resyncPer
     }
     
     func (f *cSINodeInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1.CSINode{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1.CSINode{}, f.defaultInformer)
     }
     
    -func (f *cSINodeInformer) Lister() v1.CSINodeLister {
    -	return v1.NewCSINodeLister(f.Informer().GetIndexer())
    +func (f *cSINodeInformer) Lister() storagev1.CSINodeLister {
    +	return storagev1.NewCSINodeLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1/csistoragecapacity.go b/vendor/k8s.io/client-go/informers/storage/v1/csistoragecapacity.go
    index 9b9095f3aec1..5a72272fcb80 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1/csistoragecapacity.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1 "k8s.io/api/storage/v1"
    +	apistoragev1 "k8s.io/api/storage/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/storage/v1"
    +	storagev1 "k8s.io/client-go/listers/storage/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CSIStorageCapacities.
     type CSIStorageCapacityInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.CSIStorageCapacityLister
    +	Lister() storagev1.CSIStorageCapacityLister
     }
     
     type cSIStorageCapacityInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredCSIStorageCapacityInformer(client kubernetes.Interface, namespac
     				return client.StorageV1().CSIStorageCapacities(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1.CSIStorageCapacity{},
    +		&apistoragev1.CSIStorageCapacity{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *cSIStorageCapacityInformer) defaultInformer(client kubernetes.Interface
     }
     
     func (f *cSIStorageCapacityInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1.CSIStorageCapacity{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1.CSIStorageCapacity{}, f.defaultInformer)
     }
     
    -func (f *cSIStorageCapacityInformer) Lister() v1.CSIStorageCapacityLister {
    -	return v1.NewCSIStorageCapacityLister(f.Informer().GetIndexer())
    +func (f *cSIStorageCapacityInformer) Lister() storagev1.CSIStorageCapacityLister {
    +	return storagev1.NewCSIStorageCapacityLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go b/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go
    index 8cde79d9a3bf..6eecc50f74c5 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1 "k8s.io/api/storage/v1"
    +	apistoragev1 "k8s.io/api/storage/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/storage/v1"
    +	storagev1 "k8s.io/client-go/listers/storage/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // StorageClasses.
     type StorageClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.StorageClassLister
    +	Lister() storagev1.StorageClassLister
     }
     
     type storageClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredStorageClassInformer(client kubernetes.Interface, resyncPeriod t
     				return client.StorageV1().StorageClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1.StorageClass{},
    +		&apistoragev1.StorageClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *storageClassInformer) defaultInformer(client kubernetes.Interface, resy
     }
     
     func (f *storageClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1.StorageClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1.StorageClass{}, f.defaultInformer)
     }
     
    -func (f *storageClassInformer) Lister() v1.StorageClassLister {
    -	return v1.NewStorageClassLister(f.Informer().GetIndexer())
    +func (f *storageClassInformer) Lister() storagev1.StorageClassLister {
    +	return storagev1.NewStorageClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1/volumeattachment.go b/vendor/k8s.io/client-go/informers/storage/v1/volumeattachment.go
    index be605ff48c6e..deca09cdac47 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1/volumeattachment.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1 "k8s.io/api/storage/v1"
    +	apistoragev1 "k8s.io/api/storage/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1 "k8s.io/client-go/listers/storage/v1"
    +	storagev1 "k8s.io/client-go/listers/storage/v1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // VolumeAttachments.
     type VolumeAttachmentInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1.VolumeAttachmentLister
    +	Lister() storagev1.VolumeAttachmentLister
     }
     
     type volumeAttachmentInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredVolumeAttachmentInformer(client kubernetes.Interface, resyncPeri
     				return client.StorageV1().VolumeAttachments().Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1.VolumeAttachment{},
    +		&apistoragev1.VolumeAttachment{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *volumeAttachmentInformer) defaultInformer(client kubernetes.Interface,
     }
     
     func (f *volumeAttachmentInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1.VolumeAttachment{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1.VolumeAttachment{}, f.defaultInformer)
     }
     
    -func (f *volumeAttachmentInformer) Lister() v1.VolumeAttachmentLister {
    -	return v1.NewVolumeAttachmentLister(f.Informer().GetIndexer())
    +func (f *volumeAttachmentInformer) Lister() storagev1.VolumeAttachmentLister {
    +	return storagev1.NewVolumeAttachmentLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1alpha1/csistoragecapacity.go b/vendor/k8s.io/client-go/informers/storage/v1alpha1/csistoragecapacity.go
    index e59dfab2d11b..2253f700e651 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1alpha1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1alpha1/csistoragecapacity.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
    +	apistoragev1alpha1 "k8s.io/api/storage/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/storage/v1alpha1"
    +	storagev1alpha1 "k8s.io/client-go/listers/storage/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CSIStorageCapacities.
     type CSIStorageCapacityInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.CSIStorageCapacityLister
    +	Lister() storagev1alpha1.CSIStorageCapacityLister
     }
     
     type cSIStorageCapacityInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredCSIStorageCapacityInformer(client kubernetes.Interface, namespac
     				return client.StorageV1alpha1().CSIStorageCapacities(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1alpha1.CSIStorageCapacity{},
    +		&apistoragev1alpha1.CSIStorageCapacity{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *cSIStorageCapacityInformer) defaultInformer(client kubernetes.Interface
     }
     
     func (f *cSIStorageCapacityInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1alpha1.CSIStorageCapacity{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1alpha1.CSIStorageCapacity{}, f.defaultInformer)
     }
     
    -func (f *cSIStorageCapacityInformer) Lister() v1alpha1.CSIStorageCapacityLister {
    -	return v1alpha1.NewCSIStorageCapacityLister(f.Informer().GetIndexer())
    +func (f *cSIStorageCapacityInformer) Lister() storagev1alpha1.CSIStorageCapacityLister {
    +	return storagev1alpha1.NewCSIStorageCapacityLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go b/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go
    index 445496dade46..f319899530fd 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
    +	apistoragev1alpha1 "k8s.io/api/storage/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/storage/v1alpha1"
    +	storagev1alpha1 "k8s.io/client-go/listers/storage/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // VolumeAttachments.
     type VolumeAttachmentInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.VolumeAttachmentLister
    +	Lister() storagev1alpha1.VolumeAttachmentLister
     }
     
     type volumeAttachmentInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredVolumeAttachmentInformer(client kubernetes.Interface, resyncPeri
     				return client.StorageV1alpha1().VolumeAttachments().Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1alpha1.VolumeAttachment{},
    +		&apistoragev1alpha1.VolumeAttachment{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *volumeAttachmentInformer) defaultInformer(client kubernetes.Interface,
     }
     
     func (f *volumeAttachmentInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1alpha1.VolumeAttachment{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1alpha1.VolumeAttachment{}, f.defaultInformer)
     }
     
    -func (f *volumeAttachmentInformer) Lister() v1alpha1.VolumeAttachmentLister {
    -	return v1alpha1.NewVolumeAttachmentLister(f.Informer().GetIndexer())
    +func (f *volumeAttachmentInformer) Lister() storagev1alpha1.VolumeAttachmentLister {
    +	return storagev1alpha1.NewVolumeAttachmentLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattributesclass.go b/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattributesclass.go
    index 5e62e2f42301..8a688312a97a 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattributesclass.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattributesclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
    +	apistoragev1alpha1 "k8s.io/api/storage/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1alpha1 "k8s.io/client-go/listers/storage/v1alpha1"
    +	storagev1alpha1 "k8s.io/client-go/listers/storage/v1alpha1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // VolumeAttributesClasses.
     type VolumeAttributesClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1alpha1.VolumeAttributesClassLister
    +	Lister() storagev1alpha1.VolumeAttributesClassLister
     }
     
     type volumeAttributesClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredVolumeAttributesClassInformer(client kubernetes.Interface, resyn
     				return client.StorageV1alpha1().VolumeAttributesClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1alpha1.VolumeAttributesClass{},
    +		&apistoragev1alpha1.VolumeAttributesClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *volumeAttributesClassInformer) defaultInformer(client kubernetes.Interf
     }
     
     func (f *volumeAttributesClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1alpha1.VolumeAttributesClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1alpha1.VolumeAttributesClass{}, f.defaultInformer)
     }
     
    -func (f *volumeAttributesClassInformer) Lister() v1alpha1.VolumeAttributesClassLister {
    -	return v1alpha1.NewVolumeAttributesClassLister(f.Informer().GetIndexer())
    +func (f *volumeAttributesClassInformer) Lister() storagev1alpha1.VolumeAttributesClassLister {
    +	return storagev1alpha1.NewVolumeAttributesClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/csidriver.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/csidriver.go
    index f138a915b883..f538deed5154 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1beta1/csidriver.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1beta1/csidriver.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	apistoragev1beta1 "k8s.io/api/storage/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/storage/v1beta1"
    +	storagev1beta1 "k8s.io/client-go/listers/storage/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CSIDrivers.
     type CSIDriverInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.CSIDriverLister
    +	Lister() storagev1beta1.CSIDriverLister
     }
     
     type cSIDriverInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredCSIDriverInformer(client kubernetes.Interface, resyncPeriod time
     				return client.StorageV1beta1().CSIDrivers().Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1beta1.CSIDriver{},
    +		&apistoragev1beta1.CSIDriver{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *cSIDriverInformer) defaultInformer(client kubernetes.Interface, resyncP
     }
     
     func (f *cSIDriverInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1beta1.CSIDriver{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1beta1.CSIDriver{}, f.defaultInformer)
     }
     
    -func (f *cSIDriverInformer) Lister() v1beta1.CSIDriverLister {
    -	return v1beta1.NewCSIDriverLister(f.Informer().GetIndexer())
    +func (f *cSIDriverInformer) Lister() storagev1beta1.CSIDriverLister {
    +	return storagev1beta1.NewCSIDriverLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/csinode.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/csinode.go
    index 6ba63172a344..5d26cffdcf63 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1beta1/csinode.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1beta1/csinode.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	apistoragev1beta1 "k8s.io/api/storage/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/storage/v1beta1"
    +	storagev1beta1 "k8s.io/client-go/listers/storage/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CSINodes.
     type CSINodeInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.CSINodeLister
    +	Lister() storagev1beta1.CSINodeLister
     }
     
     type cSINodeInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredCSINodeInformer(client kubernetes.Interface, resyncPeriod time.D
     				return client.StorageV1beta1().CSINodes().Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1beta1.CSINode{},
    +		&apistoragev1beta1.CSINode{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *cSINodeInformer) defaultInformer(client kubernetes.Interface, resyncPer
     }
     
     func (f *cSINodeInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1beta1.CSINode{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1beta1.CSINode{}, f.defaultInformer)
     }
     
    -func (f *cSINodeInformer) Lister() v1beta1.CSINodeLister {
    -	return v1beta1.NewCSINodeLister(f.Informer().GetIndexer())
    +func (f *cSINodeInformer) Lister() storagev1beta1.CSINodeLister {
    +	return storagev1beta1.NewCSINodeLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/csistoragecapacity.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/csistoragecapacity.go
    index 8f0cc4668793..9ad42e9f8303 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1beta1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1beta1/csistoragecapacity.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	apistoragev1beta1 "k8s.io/api/storage/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/storage/v1beta1"
    +	storagev1beta1 "k8s.io/client-go/listers/storage/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // CSIStorageCapacities.
     type CSIStorageCapacityInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.CSIStorageCapacityLister
    +	Lister() storagev1beta1.CSIStorageCapacityLister
     }
     
     type cSIStorageCapacityInformer struct {
    @@ -71,7 +71,7 @@ func NewFilteredCSIStorageCapacityInformer(client kubernetes.Interface, namespac
     				return client.StorageV1beta1().CSIStorageCapacities(namespace).Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1beta1.CSIStorageCapacity{},
    +		&apistoragev1beta1.CSIStorageCapacity{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -82,9 +82,9 @@ func (f *cSIStorageCapacityInformer) defaultInformer(client kubernetes.Interface
     }
     
     func (f *cSIStorageCapacityInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1beta1.CSIStorageCapacity{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1beta1.CSIStorageCapacity{}, f.defaultInformer)
     }
     
    -func (f *cSIStorageCapacityInformer) Lister() v1beta1.CSIStorageCapacityLister {
    -	return v1beta1.NewCSIStorageCapacityLister(f.Informer().GetIndexer())
    +func (f *cSIStorageCapacityInformer) Lister() storagev1beta1.CSIStorageCapacityLister {
    +	return storagev1beta1.NewCSIStorageCapacityLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go
    index 77b77c08ee2e..7433951855a6 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go
    @@ -34,6 +34,8 @@ type Interface interface {
     	StorageClasses() StorageClassInformer
     	// VolumeAttachments returns a VolumeAttachmentInformer.
     	VolumeAttachments() VolumeAttachmentInformer
    +	// VolumeAttributesClasses returns a VolumeAttributesClassInformer.
    +	VolumeAttributesClasses() VolumeAttributesClassInformer
     }
     
     type version struct {
    @@ -71,3 +73,8 @@ func (v *version) StorageClasses() StorageClassInformer {
     func (v *version) VolumeAttachments() VolumeAttachmentInformer {
     	return &volumeAttachmentInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
     }
    +
    +// VolumeAttributesClasses returns a VolumeAttributesClassInformer.
    +func (v *version) VolumeAttributesClasses() VolumeAttributesClassInformer {
    +	return &volumeAttributesClassInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +}
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go
    index a6582bf3d61e..2d8649e9b82d 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	apistoragev1beta1 "k8s.io/api/storage/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/storage/v1beta1"
    +	storagev1beta1 "k8s.io/client-go/listers/storage/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // StorageClasses.
     type StorageClassInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.StorageClassLister
    +	Lister() storagev1beta1.StorageClassLister
     }
     
     type storageClassInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredStorageClassInformer(client kubernetes.Interface, resyncPeriod t
     				return client.StorageV1beta1().StorageClasses().Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1beta1.StorageClass{},
    +		&apistoragev1beta1.StorageClass{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *storageClassInformer) defaultInformer(client kubernetes.Interface, resy
     }
     
     func (f *storageClassInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1beta1.StorageClass{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1beta1.StorageClass{}, f.defaultInformer)
     }
     
    -func (f *storageClassInformer) Lister() v1beta1.StorageClassLister {
    -	return v1beta1.NewStorageClassLister(f.Informer().GetIndexer())
    +func (f *storageClassInformer) Lister() storagev1beta1.StorageClassLister {
    +	return storagev1beta1.NewStorageClassLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go
    index e89424634900..93d38269365d 100644
    --- a/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go
    @@ -19,16 +19,16 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     	time "time"
     
    -	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	apistoragev1beta1 "k8s.io/api/storage/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	watch "k8s.io/apimachinery/pkg/watch"
     	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
     	kubernetes "k8s.io/client-go/kubernetes"
    -	v1beta1 "k8s.io/client-go/listers/storage/v1beta1"
    +	storagev1beta1 "k8s.io/client-go/listers/storage/v1beta1"
     	cache "k8s.io/client-go/tools/cache"
     )
     
    @@ -36,7 +36,7 @@ import (
     // VolumeAttachments.
     type VolumeAttachmentInformer interface {
     	Informer() cache.SharedIndexInformer
    -	Lister() v1beta1.VolumeAttachmentLister
    +	Lister() storagev1beta1.VolumeAttachmentLister
     }
     
     type volumeAttachmentInformer struct {
    @@ -70,7 +70,7 @@ func NewFilteredVolumeAttachmentInformer(client kubernetes.Interface, resyncPeri
     				return client.StorageV1beta1().VolumeAttachments().Watch(context.TODO(), options)
     			},
     		},
    -		&storagev1beta1.VolumeAttachment{},
    +		&apistoragev1beta1.VolumeAttachment{},
     		resyncPeriod,
     		indexers,
     	)
    @@ -81,9 +81,9 @@ func (f *volumeAttachmentInformer) defaultInformer(client kubernetes.Interface,
     }
     
     func (f *volumeAttachmentInformer) Informer() cache.SharedIndexInformer {
    -	return f.factory.InformerFor(&storagev1beta1.VolumeAttachment{}, f.defaultInformer)
    +	return f.factory.InformerFor(&apistoragev1beta1.VolumeAttachment{}, f.defaultInformer)
     }
     
    -func (f *volumeAttachmentInformer) Lister() v1beta1.VolumeAttachmentLister {
    -	return v1beta1.NewVolumeAttachmentLister(f.Informer().GetIndexer())
    +func (f *volumeAttachmentInformer) Lister() storagev1beta1.VolumeAttachmentLister {
    +	return storagev1beta1.NewVolumeAttachmentLister(f.Informer().GetIndexer())
     }
    diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattributesclass.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattributesclass.go
    new file mode 100644
    index 000000000000..dd9734bdc6f7
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattributesclass.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apistoragev1beta1 "k8s.io/api/storage/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	storagev1beta1 "k8s.io/client-go/listers/storage/v1beta1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// VolumeAttributesClassInformer provides access to a shared informer and lister for
    +// VolumeAttributesClasses.
    +type VolumeAttributesClassInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() storagev1beta1.VolumeAttributesClassLister
    +}
    +
    +type volumeAttributesClassInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewVolumeAttributesClassInformer constructs a new informer for VolumeAttributesClass type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewVolumeAttributesClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredVolumeAttributesClassInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredVolumeAttributesClassInformer constructs a new informer for VolumeAttributesClass type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredVolumeAttributesClassInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.StorageV1beta1().VolumeAttributesClasses().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.StorageV1beta1().VolumeAttributesClasses().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apistoragev1beta1.VolumeAttributesClass{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *volumeAttributesClassInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredVolumeAttributesClassInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *volumeAttributesClassInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apistoragev1beta1.VolumeAttributesClass{}, f.defaultInformer)
    +}
    +
    +func (f *volumeAttributesClassInformer) Lister() storagev1beta1.VolumeAttributesClassLister {
    +	return storagev1beta1.NewVolumeAttributesClassLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/informers/storagemigration/interface.go b/vendor/k8s.io/client-go/informers/storagemigration/interface.go
    new file mode 100644
    index 000000000000..1f7030fea8db
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/storagemigration/interface.go
    @@ -0,0 +1,46 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package storagemigration
    +
    +import (
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	v1alpha1 "k8s.io/client-go/informers/storagemigration/v1alpha1"
    +)
    +
    +// Interface provides access to each of this group's versions.
    +type Interface interface {
    +	// V1alpha1 provides access to shared informers for resources in V1alpha1.
    +	V1alpha1() v1alpha1.Interface
    +}
    +
    +type group struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	namespace        string
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// New returns a new Interface.
    +func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
    +	return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
    +}
    +
    +// V1alpha1 returns a new v1alpha1.Interface.
    +func (g *group) V1alpha1() v1alpha1.Interface {
    +	return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions)
    +}
    diff --git a/vendor/k8s.io/client-go/informers/storagemigration/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/storagemigration/v1alpha1/interface.go
    new file mode 100644
    index 000000000000..60724e7a287a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/storagemigration/v1alpha1/interface.go
    @@ -0,0 +1,45 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +)
    +
    +// Interface provides access to all the informers in this group version.
    +type Interface interface {
    +	// StorageVersionMigrations returns a StorageVersionMigrationInformer.
    +	StorageVersionMigrations() StorageVersionMigrationInformer
    +}
    +
    +type version struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	namespace        string
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// New returns a new Interface.
    +func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
    +	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
    +}
    +
    +// StorageVersionMigrations returns a StorageVersionMigrationInformer.
    +func (v *version) StorageVersionMigrations() StorageVersionMigrationInformer {
    +	return &storageVersionMigrationInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
    +}
    diff --git a/vendor/k8s.io/client-go/informers/storagemigration/v1alpha1/storageversionmigration.go b/vendor/k8s.io/client-go/informers/storagemigration/v1alpha1/storageversionmigration.go
    new file mode 100644
    index 000000000000..49d6dd2e5bbe
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/informers/storagemigration/v1alpha1/storageversionmigration.go
    @@ -0,0 +1,89 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by informer-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	context "context"
    +	time "time"
    +
    +	apistoragemigrationv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	internalinterfaces "k8s.io/client-go/informers/internalinterfaces"
    +	kubernetes "k8s.io/client-go/kubernetes"
    +	storagemigrationv1alpha1 "k8s.io/client-go/listers/storagemigration/v1alpha1"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// StorageVersionMigrationInformer provides access to a shared informer and lister for
    +// StorageVersionMigrations.
    +type StorageVersionMigrationInformer interface {
    +	Informer() cache.SharedIndexInformer
    +	Lister() storagemigrationv1alpha1.StorageVersionMigrationLister
    +}
    +
    +type storageVersionMigrationInformer struct {
    +	factory          internalinterfaces.SharedInformerFactory
    +	tweakListOptions internalinterfaces.TweakListOptionsFunc
    +}
    +
    +// NewStorageVersionMigrationInformer constructs a new informer for StorageVersionMigration type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewStorageVersionMigrationInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
    +	return NewFilteredStorageVersionMigrationInformer(client, resyncPeriod, indexers, nil)
    +}
    +
    +// NewFilteredStorageVersionMigrationInformer constructs a new informer for StorageVersionMigration type.
    +// Always prefer using an informer factory to get a shared informer instead of getting an independent
    +// one. This reduces memory footprint and number of connections to the server.
    +func NewFilteredStorageVersionMigrationInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
    +	return cache.NewSharedIndexInformer(
    +		&cache.ListWatch{
    +			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.StoragemigrationV1alpha1().StorageVersionMigrations().List(context.TODO(), options)
    +			},
    +			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
    +				if tweakListOptions != nil {
    +					tweakListOptions(&options)
    +				}
    +				return client.StoragemigrationV1alpha1().StorageVersionMigrations().Watch(context.TODO(), options)
    +			},
    +		},
    +		&apistoragemigrationv1alpha1.StorageVersionMigration{},
    +		resyncPeriod,
    +		indexers,
    +	)
    +}
    +
    +func (f *storageVersionMigrationInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
    +	return NewFilteredStorageVersionMigrationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
    +}
    +
    +func (f *storageVersionMigrationInformer) Informer() cache.SharedIndexInformer {
    +	return f.factory.InformerFor(&apistoragemigrationv1alpha1.StorageVersionMigration{}, f.defaultInformer)
    +}
    +
    +func (f *storageVersionMigrationInformer) Lister() storagemigrationv1alpha1.StorageVersionMigrationLister {
    +	return storagemigrationv1alpha1.NewStorageVersionMigrationLister(f.Informer().GetIndexer())
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/clientset.go b/vendor/k8s.io/client-go/kubernetes/clientset.go
    index a0095d086fd9..a6dbc23a9c98 100644
    --- a/vendor/k8s.io/client-go/kubernetes/clientset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/clientset.go
    @@ -19,8 +19,8 @@ limitations under the License.
     package kubernetes
     
     import (
    -	"fmt"
    -	"net/http"
    +	fmt "fmt"
    +	http "net/http"
     
     	discovery "k8s.io/client-go/discovery"
     	admissionregistrationv1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1"
    @@ -45,6 +45,7 @@ import (
     	certificatesv1alpha1 "k8s.io/client-go/kubernetes/typed/certificates/v1alpha1"
     	certificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1"
     	coordinationv1 "k8s.io/client-go/kubernetes/typed/coordination/v1"
    +	coordinationv1alpha2 "k8s.io/client-go/kubernetes/typed/coordination/v1alpha2"
     	coordinationv1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1"
     	corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     	discoveryv1 "k8s.io/client-go/kubernetes/typed/discovery/v1"
    @@ -67,13 +68,15 @@ import (
     	rbacv1 "k8s.io/client-go/kubernetes/typed/rbac/v1"
     	rbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1"
     	rbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1"
    -	resourcev1alpha2 "k8s.io/client-go/kubernetes/typed/resource/v1alpha2"
    +	resourcev1alpha3 "k8s.io/client-go/kubernetes/typed/resource/v1alpha3"
    +	resourcev1beta1 "k8s.io/client-go/kubernetes/typed/resource/v1beta1"
     	schedulingv1 "k8s.io/client-go/kubernetes/typed/scheduling/v1"
     	schedulingv1alpha1 "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1"
     	schedulingv1beta1 "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1"
     	storagev1 "k8s.io/client-go/kubernetes/typed/storage/v1"
     	storagev1alpha1 "k8s.io/client-go/kubernetes/typed/storage/v1alpha1"
     	storagev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1"
    +	storagemigrationv1alpha1 "k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1"
     	rest "k8s.io/client-go/rest"
     	flowcontrol "k8s.io/client-go/util/flowcontrol"
     )
    @@ -101,6 +104,7 @@ type Interface interface {
     	CertificatesV1() certificatesv1.CertificatesV1Interface
     	CertificatesV1beta1() certificatesv1beta1.CertificatesV1beta1Interface
     	CertificatesV1alpha1() certificatesv1alpha1.CertificatesV1alpha1Interface
    +	CoordinationV1alpha2() coordinationv1alpha2.CoordinationV1alpha2Interface
     	CoordinationV1beta1() coordinationv1beta1.CoordinationV1beta1Interface
     	CoordinationV1() coordinationv1.CoordinationV1Interface
     	CoreV1() corev1.CoreV1Interface
    @@ -124,13 +128,15 @@ type Interface interface {
     	RbacV1() rbacv1.RbacV1Interface
     	RbacV1beta1() rbacv1beta1.RbacV1beta1Interface
     	RbacV1alpha1() rbacv1alpha1.RbacV1alpha1Interface
    -	ResourceV1alpha2() resourcev1alpha2.ResourceV1alpha2Interface
    +	ResourceV1beta1() resourcev1beta1.ResourceV1beta1Interface
    +	ResourceV1alpha3() resourcev1alpha3.ResourceV1alpha3Interface
     	SchedulingV1alpha1() schedulingv1alpha1.SchedulingV1alpha1Interface
     	SchedulingV1beta1() schedulingv1beta1.SchedulingV1beta1Interface
     	SchedulingV1() schedulingv1.SchedulingV1Interface
     	StorageV1beta1() storagev1beta1.StorageV1beta1Interface
     	StorageV1() storagev1.StorageV1Interface
     	StorageV1alpha1() storagev1alpha1.StorageV1alpha1Interface
    +	StoragemigrationV1alpha1() storagemigrationv1alpha1.StoragemigrationV1alpha1Interface
     }
     
     // Clientset contains the clients for groups.
    @@ -157,6 +163,7 @@ type Clientset struct {
     	certificatesV1                *certificatesv1.CertificatesV1Client
     	certificatesV1beta1           *certificatesv1beta1.CertificatesV1beta1Client
     	certificatesV1alpha1          *certificatesv1alpha1.CertificatesV1alpha1Client
    +	coordinationV1alpha2          *coordinationv1alpha2.CoordinationV1alpha2Client
     	coordinationV1beta1           *coordinationv1beta1.CoordinationV1beta1Client
     	coordinationV1                *coordinationv1.CoordinationV1Client
     	coreV1                        *corev1.CoreV1Client
    @@ -180,13 +187,15 @@ type Clientset struct {
     	rbacV1                        *rbacv1.RbacV1Client
     	rbacV1beta1                   *rbacv1beta1.RbacV1beta1Client
     	rbacV1alpha1                  *rbacv1alpha1.RbacV1alpha1Client
    -	resourceV1alpha2              *resourcev1alpha2.ResourceV1alpha2Client
    +	resourceV1beta1               *resourcev1beta1.ResourceV1beta1Client
    +	resourceV1alpha3              *resourcev1alpha3.ResourceV1alpha3Client
     	schedulingV1alpha1            *schedulingv1alpha1.SchedulingV1alpha1Client
     	schedulingV1beta1             *schedulingv1beta1.SchedulingV1beta1Client
     	schedulingV1                  *schedulingv1.SchedulingV1Client
     	storageV1beta1                *storagev1beta1.StorageV1beta1Client
     	storageV1                     *storagev1.StorageV1Client
     	storageV1alpha1               *storagev1alpha1.StorageV1alpha1Client
    +	storagemigrationV1alpha1      *storagemigrationv1alpha1.StoragemigrationV1alpha1Client
     }
     
     // AdmissionregistrationV1 retrieves the AdmissionregistrationV1Client
    @@ -294,6 +303,11 @@ func (c *Clientset) CertificatesV1alpha1() certificatesv1alpha1.CertificatesV1al
     	return c.certificatesV1alpha1
     }
     
    +// CoordinationV1alpha2 retrieves the CoordinationV1alpha2Client
    +func (c *Clientset) CoordinationV1alpha2() coordinationv1alpha2.CoordinationV1alpha2Interface {
    +	return c.coordinationV1alpha2
    +}
    +
     // CoordinationV1beta1 retrieves the CoordinationV1beta1Client
     func (c *Clientset) CoordinationV1beta1() coordinationv1beta1.CoordinationV1beta1Interface {
     	return c.coordinationV1beta1
    @@ -409,9 +423,14 @@ func (c *Clientset) RbacV1alpha1() rbacv1alpha1.RbacV1alpha1Interface {
     	return c.rbacV1alpha1
     }
     
    -// ResourceV1alpha2 retrieves the ResourceV1alpha2Client
    -func (c *Clientset) ResourceV1alpha2() resourcev1alpha2.ResourceV1alpha2Interface {
    -	return c.resourceV1alpha2
    +// ResourceV1beta1 retrieves the ResourceV1beta1Client
    +func (c *Clientset) ResourceV1beta1() resourcev1beta1.ResourceV1beta1Interface {
    +	return c.resourceV1beta1
    +}
    +
    +// ResourceV1alpha3 retrieves the ResourceV1alpha3Client
    +func (c *Clientset) ResourceV1alpha3() resourcev1alpha3.ResourceV1alpha3Interface {
    +	return c.resourceV1alpha3
     }
     
     // SchedulingV1alpha1 retrieves the SchedulingV1alpha1Client
    @@ -444,6 +463,11 @@ func (c *Clientset) StorageV1alpha1() storagev1alpha1.StorageV1alpha1Interface {
     	return c.storageV1alpha1
     }
     
    +// StoragemigrationV1alpha1 retrieves the StoragemigrationV1alpha1Client
    +func (c *Clientset) StoragemigrationV1alpha1() storagemigrationv1alpha1.StoragemigrationV1alpha1Interface {
    +	return c.storagemigrationV1alpha1
    +}
    +
     // Discovery retrieves the DiscoveryClient
     func (c *Clientset) Discovery() discovery.DiscoveryInterface {
     	if c == nil {
    @@ -572,6 +596,10 @@ func NewForConfigAndClient(c *rest.Config, httpClient *http.Client) (*Clientset,
     	if err != nil {
     		return nil, err
     	}
    +	cs.coordinationV1alpha2, err = coordinationv1alpha2.NewForConfigAndClient(&configShallowCopy, httpClient)
    +	if err != nil {
    +		return nil, err
    +	}
     	cs.coordinationV1beta1, err = coordinationv1beta1.NewForConfigAndClient(&configShallowCopy, httpClient)
     	if err != nil {
     		return nil, err
    @@ -664,7 +692,11 @@ func NewForConfigAndClient(c *rest.Config, httpClient *http.Client) (*Clientset,
     	if err != nil {
     		return nil, err
     	}
    -	cs.resourceV1alpha2, err = resourcev1alpha2.NewForConfigAndClient(&configShallowCopy, httpClient)
    +	cs.resourceV1beta1, err = resourcev1beta1.NewForConfigAndClient(&configShallowCopy, httpClient)
    +	if err != nil {
    +		return nil, err
    +	}
    +	cs.resourceV1alpha3, err = resourcev1alpha3.NewForConfigAndClient(&configShallowCopy, httpClient)
     	if err != nil {
     		return nil, err
     	}
    @@ -692,6 +724,10 @@ func NewForConfigAndClient(c *rest.Config, httpClient *http.Client) (*Clientset,
     	if err != nil {
     		return nil, err
     	}
    +	cs.storagemigrationV1alpha1, err = storagemigrationv1alpha1.NewForConfigAndClient(&configShallowCopy, httpClient)
    +	if err != nil {
    +		return nil, err
    +	}
     
     	cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfigAndClient(&configShallowCopy, httpClient)
     	if err != nil {
    @@ -734,6 +770,7 @@ func New(c rest.Interface) *Clientset {
     	cs.certificatesV1 = certificatesv1.New(c)
     	cs.certificatesV1beta1 = certificatesv1beta1.New(c)
     	cs.certificatesV1alpha1 = certificatesv1alpha1.New(c)
    +	cs.coordinationV1alpha2 = coordinationv1alpha2.New(c)
     	cs.coordinationV1beta1 = coordinationv1beta1.New(c)
     	cs.coordinationV1 = coordinationv1.New(c)
     	cs.coreV1 = corev1.New(c)
    @@ -757,13 +794,15 @@ func New(c rest.Interface) *Clientset {
     	cs.rbacV1 = rbacv1.New(c)
     	cs.rbacV1beta1 = rbacv1beta1.New(c)
     	cs.rbacV1alpha1 = rbacv1alpha1.New(c)
    -	cs.resourceV1alpha2 = resourcev1alpha2.New(c)
    +	cs.resourceV1beta1 = resourcev1beta1.New(c)
    +	cs.resourceV1alpha3 = resourcev1alpha3.New(c)
     	cs.schedulingV1alpha1 = schedulingv1alpha1.New(c)
     	cs.schedulingV1beta1 = schedulingv1beta1.New(c)
     	cs.schedulingV1 = schedulingv1.New(c)
     	cs.storageV1beta1 = storagev1beta1.New(c)
     	cs.storageV1 = storagev1.New(c)
     	cs.storageV1alpha1 = storagev1alpha1.New(c)
    +	cs.storagemigrationV1alpha1 = storagemigrationv1alpha1.New(c)
     
     	cs.DiscoveryClient = discovery.NewDiscoveryClient(c)
     	return &cs
    diff --git a/vendor/k8s.io/client-go/kubernetes/doc.go b/vendor/k8s.io/client-go/kubernetes/doc.go
    index 9cef4242f2f5..e052f81b8527 100644
    --- a/vendor/k8s.io/client-go/kubernetes/doc.go
    +++ b/vendor/k8s.io/client-go/kubernetes/doc.go
    @@ -16,4 +16,4 @@ limitations under the License.
     
     // Package kubernetes holds packages which implement a clientset for Kubernetes
     // APIs.
    -package kubernetes
    +package kubernetes // import "k8s.io/client-go/kubernetes"
    diff --git a/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go b/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go
    index fc529873f183..6b583818b648 100644
    --- a/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go
    +++ b/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go
    @@ -21,6 +21,7 @@ package fake
     import (
     	"k8s.io/apimachinery/pkg/runtime"
     	"k8s.io/apimachinery/pkg/watch"
    +	applyconfigurations "k8s.io/client-go/applyconfigurations"
     	"k8s.io/client-go/discovery"
     	fakediscovery "k8s.io/client-go/discovery/fake"
     	clientset "k8s.io/client-go/kubernetes"
    @@ -68,6 +69,8 @@ import (
     	fakecertificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake"
     	coordinationv1 "k8s.io/client-go/kubernetes/typed/coordination/v1"
     	fakecoordinationv1 "k8s.io/client-go/kubernetes/typed/coordination/v1/fake"
    +	coordinationv1alpha2 "k8s.io/client-go/kubernetes/typed/coordination/v1alpha2"
    +	fakecoordinationv1alpha2 "k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/fake"
     	coordinationv1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1"
     	fakecoordinationv1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake"
     	corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
    @@ -112,8 +115,10 @@ import (
     	fakerbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake"
     	rbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1"
     	fakerbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake"
    -	resourcev1alpha2 "k8s.io/client-go/kubernetes/typed/resource/v1alpha2"
    -	fakeresourcev1alpha2 "k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake"
    +	resourcev1alpha3 "k8s.io/client-go/kubernetes/typed/resource/v1alpha3"
    +	fakeresourcev1alpha3 "k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake"
    +	resourcev1beta1 "k8s.io/client-go/kubernetes/typed/resource/v1beta1"
    +	fakeresourcev1beta1 "k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake"
     	schedulingv1 "k8s.io/client-go/kubernetes/typed/scheduling/v1"
     	fakeschedulingv1 "k8s.io/client-go/kubernetes/typed/scheduling/v1/fake"
     	schedulingv1alpha1 "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1"
    @@ -126,13 +131,19 @@ import (
     	fakestoragev1alpha1 "k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake"
     	storagev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1"
     	fakestoragev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake"
    +	storagemigrationv1alpha1 "k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1"
    +	fakestoragemigrationv1alpha1 "k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake"
     	"k8s.io/client-go/testing"
     )
     
     // NewSimpleClientset returns a clientset that will respond with the provided objects.
     // It's backed by a very simple object tracker that processes creates, updates and deletions as-is,
    -// without applying any validations and/or defaults. It shouldn't be considered a replacement
    +// without applying any field management, validations and/or defaults. It shouldn't be considered a replacement
     // for a real clientset and is mostly useful in simple unit tests.
    +//
    +// DEPRECATED: NewClientset replaces this with support for field management, which significantly improves
    +// server side apply testing. NewClientset is only available when apply configurations are generated (e.g.
    +// via --with-applyconfig).
     func NewSimpleClientset(objects ...runtime.Object) *Clientset {
     	o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder())
     	for _, obj := range objects {
    @@ -174,6 +185,38 @@ func (c *Clientset) Tracker() testing.ObjectTracker {
     	return c.tracker
     }
     
    +// NewClientset returns a clientset that will respond with the provided objects.
    +// It's backed by a very simple object tracker that processes creates, updates and deletions as-is,
    +// without applying any validations and/or defaults. It shouldn't be considered a replacement
    +// for a real clientset and is mostly useful in simple unit tests.
    +func NewClientset(objects ...runtime.Object) *Clientset {
    +	o := testing.NewFieldManagedObjectTracker(
    +		scheme,
    +		codecs.UniversalDecoder(),
    +		applyconfigurations.NewTypeConverter(scheme),
    +	)
    +	for _, obj := range objects {
    +		if err := o.Add(obj); err != nil {
    +			panic(err)
    +		}
    +	}
    +
    +	cs := &Clientset{tracker: o}
    +	cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
    +	cs.AddReactor("*", "*", testing.ObjectReaction(o))
    +	cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
    +		gvr := action.GetResource()
    +		ns := action.GetNamespace()
    +		watch, err := o.Watch(gvr, ns)
    +		if err != nil {
    +			return false, nil, err
    +		}
    +		return true, watch, nil
    +	})
    +
    +	return cs
    +}
    +
     var (
     	_ clientset.Interface = &Clientset{}
     	_ testing.FakeClient  = &Clientset{}
    @@ -284,6 +327,11 @@ func (c *Clientset) CertificatesV1alpha1() certificatesv1alpha1.CertificatesV1al
     	return &fakecertificatesv1alpha1.FakeCertificatesV1alpha1{Fake: &c.Fake}
     }
     
    +// CoordinationV1alpha2 retrieves the CoordinationV1alpha2Client
    +func (c *Clientset) CoordinationV1alpha2() coordinationv1alpha2.CoordinationV1alpha2Interface {
    +	return &fakecoordinationv1alpha2.FakeCoordinationV1alpha2{Fake: &c.Fake}
    +}
    +
     // CoordinationV1beta1 retrieves the CoordinationV1beta1Client
     func (c *Clientset) CoordinationV1beta1() coordinationv1beta1.CoordinationV1beta1Interface {
     	return &fakecoordinationv1beta1.FakeCoordinationV1beta1{Fake: &c.Fake}
    @@ -399,9 +447,14 @@ func (c *Clientset) RbacV1alpha1() rbacv1alpha1.RbacV1alpha1Interface {
     	return &fakerbacv1alpha1.FakeRbacV1alpha1{Fake: &c.Fake}
     }
     
    -// ResourceV1alpha2 retrieves the ResourceV1alpha2Client
    -func (c *Clientset) ResourceV1alpha2() resourcev1alpha2.ResourceV1alpha2Interface {
    -	return &fakeresourcev1alpha2.FakeResourceV1alpha2{Fake: &c.Fake}
    +// ResourceV1beta1 retrieves the ResourceV1beta1Client
    +func (c *Clientset) ResourceV1beta1() resourcev1beta1.ResourceV1beta1Interface {
    +	return &fakeresourcev1beta1.FakeResourceV1beta1{Fake: &c.Fake}
    +}
    +
    +// ResourceV1alpha3 retrieves the ResourceV1alpha3Client
    +func (c *Clientset) ResourceV1alpha3() resourcev1alpha3.ResourceV1alpha3Interface {
    +	return &fakeresourcev1alpha3.FakeResourceV1alpha3{Fake: &c.Fake}
     }
     
     // SchedulingV1alpha1 retrieves the SchedulingV1alpha1Client
    @@ -433,3 +486,8 @@ func (c *Clientset) StorageV1() storagev1.StorageV1Interface {
     func (c *Clientset) StorageV1alpha1() storagev1alpha1.StorageV1alpha1Interface {
     	return &fakestoragev1alpha1.FakeStorageV1alpha1{Fake: &c.Fake}
     }
    +
    +// StoragemigrationV1alpha1 retrieves the StoragemigrationV1alpha1Client
    +func (c *Clientset) StoragemigrationV1alpha1() storagemigrationv1alpha1.StoragemigrationV1alpha1Interface {
    +	return &fakestoragemigrationv1alpha1.FakeStoragemigrationV1alpha1{Fake: &c.Fake}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/fake/register.go b/vendor/k8s.io/client-go/kubernetes/fake/register.go
    index 6b80d683391f..849b1ac90032 100644
    --- a/vendor/k8s.io/client-go/kubernetes/fake/register.go
    +++ b/vendor/k8s.io/client-go/kubernetes/fake/register.go
    @@ -41,6 +41,7 @@ import (
     	certificatesv1alpha1 "k8s.io/api/certificates/v1alpha1"
     	certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
     	coordinationv1 "k8s.io/api/coordination/v1"
    +	coordinationv1alpha2 "k8s.io/api/coordination/v1alpha2"
     	coordinationv1beta1 "k8s.io/api/coordination/v1beta1"
     	corev1 "k8s.io/api/core/v1"
     	discoveryv1 "k8s.io/api/discovery/v1"
    @@ -63,13 +64,15 @@ import (
     	rbacv1 "k8s.io/api/rbac/v1"
     	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
     	schedulingv1 "k8s.io/api/scheduling/v1"
     	schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
     	schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
     	storagev1 "k8s.io/api/storage/v1"
     	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
     	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	storagemigrationv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	schema "k8s.io/apimachinery/pkg/runtime/schema"
    @@ -102,6 +105,7 @@ var localSchemeBuilder = runtime.SchemeBuilder{
     	certificatesv1.AddToScheme,
     	certificatesv1beta1.AddToScheme,
     	certificatesv1alpha1.AddToScheme,
    +	coordinationv1alpha2.AddToScheme,
     	coordinationv1beta1.AddToScheme,
     	coordinationv1.AddToScheme,
     	corev1.AddToScheme,
    @@ -125,13 +129,15 @@ var localSchemeBuilder = runtime.SchemeBuilder{
     	rbacv1.AddToScheme,
     	rbacv1beta1.AddToScheme,
     	rbacv1alpha1.AddToScheme,
    -	resourcev1alpha2.AddToScheme,
    +	resourcev1beta1.AddToScheme,
    +	resourcev1alpha3.AddToScheme,
     	schedulingv1alpha1.AddToScheme,
     	schedulingv1beta1.AddToScheme,
     	schedulingv1.AddToScheme,
     	storagev1beta1.AddToScheme,
     	storagev1.AddToScheme,
     	storagev1alpha1.AddToScheme,
    +	storagemigrationv1alpha1.AddToScheme,
     }
     
     // AddToScheme adds all types of this clientset into the given scheme. This allows composition
    diff --git a/vendor/k8s.io/client-go/kubernetes/scheme/register.go b/vendor/k8s.io/client-go/kubernetes/scheme/register.go
    index f44055fbfc74..a9a5d8eb7d03 100644
    --- a/vendor/k8s.io/client-go/kubernetes/scheme/register.go
    +++ b/vendor/k8s.io/client-go/kubernetes/scheme/register.go
    @@ -41,6 +41,7 @@ import (
     	certificatesv1alpha1 "k8s.io/api/certificates/v1alpha1"
     	certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
     	coordinationv1 "k8s.io/api/coordination/v1"
    +	coordinationv1alpha2 "k8s.io/api/coordination/v1alpha2"
     	coordinationv1beta1 "k8s.io/api/coordination/v1beta1"
     	corev1 "k8s.io/api/core/v1"
     	discoveryv1 "k8s.io/api/discovery/v1"
    @@ -63,13 +64,15 @@ import (
     	rbacv1 "k8s.io/api/rbac/v1"
     	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    -	resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
     	schedulingv1 "k8s.io/api/scheduling/v1"
     	schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
     	schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
     	storagev1 "k8s.io/api/storage/v1"
     	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
     	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	storagemigrationv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     	schema "k8s.io/apimachinery/pkg/runtime/schema"
    @@ -102,6 +105,7 @@ var localSchemeBuilder = runtime.SchemeBuilder{
     	certificatesv1.AddToScheme,
     	certificatesv1beta1.AddToScheme,
     	certificatesv1alpha1.AddToScheme,
    +	coordinationv1alpha2.AddToScheme,
     	coordinationv1beta1.AddToScheme,
     	coordinationv1.AddToScheme,
     	corev1.AddToScheme,
    @@ -125,13 +129,15 @@ var localSchemeBuilder = runtime.SchemeBuilder{
     	rbacv1.AddToScheme,
     	rbacv1beta1.AddToScheme,
     	rbacv1alpha1.AddToScheme,
    -	resourcev1alpha2.AddToScheme,
    +	resourcev1beta1.AddToScheme,
    +	resourcev1alpha3.AddToScheme,
     	schedulingv1alpha1.AddToScheme,
     	schedulingv1beta1.AddToScheme,
     	schedulingv1.AddToScheme,
     	storagev1beta1.AddToScheme,
     	storagev1.AddToScheme,
     	storagev1alpha1.AddToScheme,
    +	storagemigrationv1alpha1.AddToScheme,
     }
     
     // AddToScheme adds all types of this clientset into the given scheme. This allows composition
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/admissionregistration_client.go
    index 10848bed17a7..74d2967f6643 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/admissionregistration_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/admissionregistration_client.go
    @@ -19,16 +19,18 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/admissionregistration/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
     type AdmissionregistrationV1Interface interface {
     	RESTClient() rest.Interface
     	MutatingWebhookConfigurationsGetter
    +	ValidatingAdmissionPoliciesGetter
    +	ValidatingAdmissionPolicyBindingsGetter
     	ValidatingWebhookConfigurationsGetter
     }
     
    @@ -41,6 +43,14 @@ func (c *AdmissionregistrationV1Client) MutatingWebhookConfigurations() Mutating
     	return newMutatingWebhookConfigurations(c)
     }
     
    +func (c *AdmissionregistrationV1Client) ValidatingAdmissionPolicies() ValidatingAdmissionPolicyInterface {
    +	return newValidatingAdmissionPolicies(c)
    +}
    +
    +func (c *AdmissionregistrationV1Client) ValidatingAdmissionPolicyBindings() ValidatingAdmissionPolicyBindingInterface {
    +	return newValidatingAdmissionPolicyBindings(c)
    +}
    +
     func (c *AdmissionregistrationV1Client) ValidatingWebhookConfigurations() ValidatingWebhookConfigurationInterface {
     	return newValidatingWebhookConfigurations(c)
     }
    @@ -90,10 +100,10 @@ func New(c rest.Interface) *AdmissionregistrationV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := admissionregistrationv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_admissionregistration_client.go
    index a5a570ad1550..1a948ad93d46 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_admissionregistration_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_admissionregistration_client.go
    @@ -29,11 +29,19 @@ type FakeAdmissionregistrationV1 struct {
     }
     
     func (c *FakeAdmissionregistrationV1) MutatingWebhookConfigurations() v1.MutatingWebhookConfigurationInterface {
    -	return &FakeMutatingWebhookConfigurations{c}
    +	return newFakeMutatingWebhookConfigurations(c)
    +}
    +
    +func (c *FakeAdmissionregistrationV1) ValidatingAdmissionPolicies() v1.ValidatingAdmissionPolicyInterface {
    +	return newFakeValidatingAdmissionPolicies(c)
    +}
    +
    +func (c *FakeAdmissionregistrationV1) ValidatingAdmissionPolicyBindings() v1.ValidatingAdmissionPolicyBindingInterface {
    +	return newFakeValidatingAdmissionPolicyBindings(c)
     }
     
     func (c *FakeAdmissionregistrationV1) ValidatingWebhookConfigurations() v1.ValidatingWebhookConfigurationInterface {
    -	return &FakeValidatingWebhookConfigurations{c}
    +	return newFakeValidatingWebhookConfigurations(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_mutatingwebhookconfiguration.go
    index b88598b7153b..3dda322485f9 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_mutatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_mutatingwebhookconfiguration.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/admissionregistration/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	admissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1"
     )
     
    -// FakeMutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface
    -type FakeMutatingWebhookConfigurations struct {
    +// fakeMutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface
    +type fakeMutatingWebhookConfigurations struct {
    +	*gentype.FakeClientWithListAndApply[*v1.MutatingWebhookConfiguration, *v1.MutatingWebhookConfigurationList, *admissionregistrationv1.MutatingWebhookConfigurationApplyConfiguration]
     	Fake *FakeAdmissionregistrationV1
     }
     
    -var mutatingwebhookconfigurationsResource = v1.SchemeGroupVersion.WithResource("mutatingwebhookconfigurations")
    -
    -var mutatingwebhookconfigurationsKind = v1.SchemeGroupVersion.WithKind("MutatingWebhookConfiguration")
    -
    -// Get takes name of the mutatingWebhookConfiguration, and returns the corresponding mutatingWebhookConfiguration object, and an error if there is any.
    -func (c *FakeMutatingWebhookConfigurations) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.MutatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(mutatingwebhookconfigurationsResource, name), &v1.MutatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.MutatingWebhookConfiguration), err
    -}
    -
    -// List takes label and field selectors, and returns the list of MutatingWebhookConfigurations that match those selectors.
    -func (c *FakeMutatingWebhookConfigurations) List(ctx context.Context, opts metav1.ListOptions) (result *v1.MutatingWebhookConfigurationList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(mutatingwebhookconfigurationsResource, mutatingwebhookconfigurationsKind, opts), &v1.MutatingWebhookConfigurationList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.MutatingWebhookConfigurationList{ListMeta: obj.(*v1.MutatingWebhookConfigurationList).ListMeta}
    -	for _, item := range obj.(*v1.MutatingWebhookConfigurationList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested mutatingWebhookConfigurations.
    -func (c *FakeMutatingWebhookConfigurations) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(mutatingwebhookconfigurationsResource, opts))
    -}
    -
    -// Create takes the representation of a mutatingWebhookConfiguration and creates it.  Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
    -func (c *FakeMutatingWebhookConfigurations) Create(ctx context.Context, mutatingWebhookConfiguration *v1.MutatingWebhookConfiguration, opts metav1.CreateOptions) (result *v1.MutatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &v1.MutatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.MutatingWebhookConfiguration), err
    -}
    -
    -// Update takes the representation of a mutatingWebhookConfiguration and updates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
    -func (c *FakeMutatingWebhookConfigurations) Update(ctx context.Context, mutatingWebhookConfiguration *v1.MutatingWebhookConfiguration, opts metav1.UpdateOptions) (result *v1.MutatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &v1.MutatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.MutatingWebhookConfiguration), err
    -}
    -
    -// Delete takes name of the mutatingWebhookConfiguration and deletes it. Returns an error if one occurs.
    -func (c *FakeMutatingWebhookConfigurations) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(mutatingwebhookconfigurationsResource, name, opts), &v1.MutatingWebhookConfiguration{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeMutatingWebhookConfigurations) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(mutatingwebhookconfigurationsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.MutatingWebhookConfigurationList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched mutatingWebhookConfiguration.
    -func (c *FakeMutatingWebhookConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.MutatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(mutatingwebhookconfigurationsResource, name, pt, data, subresources...), &v1.MutatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.MutatingWebhookConfiguration), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied mutatingWebhookConfiguration.
    -func (c *FakeMutatingWebhookConfigurations) Apply(ctx context.Context, mutatingWebhookConfiguration *admissionregistrationv1.MutatingWebhookConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.MutatingWebhookConfiguration, err error) {
    -	if mutatingWebhookConfiguration == nil {
    -		return nil, fmt.Errorf("mutatingWebhookConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(mutatingWebhookConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := mutatingWebhookConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("mutatingWebhookConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(mutatingwebhookconfigurationsResource, *name, types.ApplyPatchType, data), &v1.MutatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeMutatingWebhookConfigurations(fake *FakeAdmissionregistrationV1) typedadmissionregistrationv1.MutatingWebhookConfigurationInterface {
    +	return &fakeMutatingWebhookConfigurations{
    +		gentype.NewFakeClientWithListAndApply[*v1.MutatingWebhookConfiguration, *v1.MutatingWebhookConfigurationList, *admissionregistrationv1.MutatingWebhookConfigurationApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("mutatingwebhookconfigurations"),
    +			v1.SchemeGroupVersion.WithKind("MutatingWebhookConfiguration"),
    +			func() *v1.MutatingWebhookConfiguration { return &v1.MutatingWebhookConfiguration{} },
    +			func() *v1.MutatingWebhookConfigurationList { return &v1.MutatingWebhookConfigurationList{} },
    +			func(dst, src *v1.MutatingWebhookConfigurationList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.MutatingWebhookConfigurationList) []*v1.MutatingWebhookConfiguration {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.MutatingWebhookConfigurationList, items []*v1.MutatingWebhookConfiguration) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.MutatingWebhookConfiguration), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingadmissionpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingadmissionpolicy.go
    new file mode 100644
    index 000000000000..4ad05e8fc4f9
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingadmissionpolicy.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1 "k8s.io/api/admissionregistration/v1"
    +	admissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1"
    +)
    +
    +// fakeValidatingAdmissionPolicies implements ValidatingAdmissionPolicyInterface
    +type fakeValidatingAdmissionPolicies struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ValidatingAdmissionPolicy, *v1.ValidatingAdmissionPolicyList, *admissionregistrationv1.ValidatingAdmissionPolicyApplyConfiguration]
    +	Fake *FakeAdmissionregistrationV1
    +}
    +
    +func newFakeValidatingAdmissionPolicies(fake *FakeAdmissionregistrationV1) typedadmissionregistrationv1.ValidatingAdmissionPolicyInterface {
    +	return &fakeValidatingAdmissionPolicies{
    +		gentype.NewFakeClientWithListAndApply[*v1.ValidatingAdmissionPolicy, *v1.ValidatingAdmissionPolicyList, *admissionregistrationv1.ValidatingAdmissionPolicyApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("validatingadmissionpolicies"),
    +			v1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicy"),
    +			func() *v1.ValidatingAdmissionPolicy { return &v1.ValidatingAdmissionPolicy{} },
    +			func() *v1.ValidatingAdmissionPolicyList { return &v1.ValidatingAdmissionPolicyList{} },
    +			func(dst, src *v1.ValidatingAdmissionPolicyList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ValidatingAdmissionPolicyList) []*v1.ValidatingAdmissionPolicy {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.ValidatingAdmissionPolicyList, items []*v1.ValidatingAdmissionPolicy) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingadmissionpolicybinding.go
    new file mode 100644
    index 000000000000..f222663f4ade
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingadmissionpolicybinding.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1 "k8s.io/api/admissionregistration/v1"
    +	admissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1"
    +)
    +
    +// fakeValidatingAdmissionPolicyBindings implements ValidatingAdmissionPolicyBindingInterface
    +type fakeValidatingAdmissionPolicyBindings struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ValidatingAdmissionPolicyBinding, *v1.ValidatingAdmissionPolicyBindingList, *admissionregistrationv1.ValidatingAdmissionPolicyBindingApplyConfiguration]
    +	Fake *FakeAdmissionregistrationV1
    +}
    +
    +func newFakeValidatingAdmissionPolicyBindings(fake *FakeAdmissionregistrationV1) typedadmissionregistrationv1.ValidatingAdmissionPolicyBindingInterface {
    +	return &fakeValidatingAdmissionPolicyBindings{
    +		gentype.NewFakeClientWithListAndApply[*v1.ValidatingAdmissionPolicyBinding, *v1.ValidatingAdmissionPolicyBindingList, *admissionregistrationv1.ValidatingAdmissionPolicyBindingApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("validatingadmissionpolicybindings"),
    +			v1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBinding"),
    +			func() *v1.ValidatingAdmissionPolicyBinding { return &v1.ValidatingAdmissionPolicyBinding{} },
    +			func() *v1.ValidatingAdmissionPolicyBindingList { return &v1.ValidatingAdmissionPolicyBindingList{} },
    +			func(dst, src *v1.ValidatingAdmissionPolicyBindingList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ValidatingAdmissionPolicyBindingList) []*v1.ValidatingAdmissionPolicyBinding {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.ValidatingAdmissionPolicyBindingList, items []*v1.ValidatingAdmissionPolicyBinding) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingwebhookconfiguration.go
    index a6951c736e06..947db961a476 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingwebhookconfiguration.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/admissionregistration/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	admissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1"
     )
     
    -// FakeValidatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface
    -type FakeValidatingWebhookConfigurations struct {
    +// fakeValidatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface
    +type fakeValidatingWebhookConfigurations struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ValidatingWebhookConfiguration, *v1.ValidatingWebhookConfigurationList, *admissionregistrationv1.ValidatingWebhookConfigurationApplyConfiguration]
     	Fake *FakeAdmissionregistrationV1
     }
     
    -var validatingwebhookconfigurationsResource = v1.SchemeGroupVersion.WithResource("validatingwebhookconfigurations")
    -
    -var validatingwebhookconfigurationsKind = v1.SchemeGroupVersion.WithKind("ValidatingWebhookConfiguration")
    -
    -// Get takes name of the validatingWebhookConfiguration, and returns the corresponding validatingWebhookConfiguration object, and an error if there is any.
    -func (c *FakeValidatingWebhookConfigurations) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ValidatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(validatingwebhookconfigurationsResource, name), &v1.ValidatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ValidatingWebhookConfiguration), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingWebhookConfigurations that match those selectors.
    -func (c *FakeValidatingWebhookConfigurations) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ValidatingWebhookConfigurationList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(validatingwebhookconfigurationsResource, validatingwebhookconfigurationsKind, opts), &v1.ValidatingWebhookConfigurationList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ValidatingWebhookConfigurationList{ListMeta: obj.(*v1.ValidatingWebhookConfigurationList).ListMeta}
    -	for _, item := range obj.(*v1.ValidatingWebhookConfigurationList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingWebhookConfigurations.
    -func (c *FakeValidatingWebhookConfigurations) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(validatingwebhookconfigurationsResource, opts))
    -}
    -
    -// Create takes the representation of a validatingWebhookConfiguration and creates it.  Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
    -func (c *FakeValidatingWebhookConfigurations) Create(ctx context.Context, validatingWebhookConfiguration *v1.ValidatingWebhookConfiguration, opts metav1.CreateOptions) (result *v1.ValidatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &v1.ValidatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ValidatingWebhookConfiguration), err
    -}
    -
    -// Update takes the representation of a validatingWebhookConfiguration and updates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
    -func (c *FakeValidatingWebhookConfigurations) Update(ctx context.Context, validatingWebhookConfiguration *v1.ValidatingWebhookConfiguration, opts metav1.UpdateOptions) (result *v1.ValidatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &v1.ValidatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ValidatingWebhookConfiguration), err
    -}
    -
    -// Delete takes name of the validatingWebhookConfiguration and deletes it. Returns an error if one occurs.
    -func (c *FakeValidatingWebhookConfigurations) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(validatingwebhookconfigurationsResource, name, opts), &v1.ValidatingWebhookConfiguration{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeValidatingWebhookConfigurations) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(validatingwebhookconfigurationsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.ValidatingWebhookConfigurationList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched validatingWebhookConfiguration.
    -func (c *FakeValidatingWebhookConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ValidatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingwebhookconfigurationsResource, name, pt, data, subresources...), &v1.ValidatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ValidatingWebhookConfiguration), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingWebhookConfiguration.
    -func (c *FakeValidatingWebhookConfigurations) Apply(ctx context.Context, validatingWebhookConfiguration *admissionregistrationv1.ValidatingWebhookConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ValidatingWebhookConfiguration, err error) {
    -	if validatingWebhookConfiguration == nil {
    -		return nil, fmt.Errorf("validatingWebhookConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(validatingWebhookConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingWebhookConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingWebhookConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingwebhookconfigurationsResource, *name, types.ApplyPatchType, data), &v1.ValidatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeValidatingWebhookConfigurations(fake *FakeAdmissionregistrationV1) typedadmissionregistrationv1.ValidatingWebhookConfigurationInterface {
    +	return &fakeValidatingWebhookConfigurations{
    +		gentype.NewFakeClientWithListAndApply[*v1.ValidatingWebhookConfiguration, *v1.ValidatingWebhookConfigurationList, *admissionregistrationv1.ValidatingWebhookConfigurationApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("validatingwebhookconfigurations"),
    +			v1.SchemeGroupVersion.WithKind("ValidatingWebhookConfiguration"),
    +			func() *v1.ValidatingWebhookConfiguration { return &v1.ValidatingWebhookConfiguration{} },
    +			func() *v1.ValidatingWebhookConfigurationList { return &v1.ValidatingWebhookConfigurationList{} },
    +			func(dst, src *v1.ValidatingWebhookConfigurationList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ValidatingWebhookConfigurationList) []*v1.ValidatingWebhookConfiguration {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.ValidatingWebhookConfigurationList, items []*v1.ValidatingWebhookConfiguration) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.ValidatingWebhookConfiguration), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/generated_expansion.go
    index a5b062e37fde..d81e1c87fcd3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/generated_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/generated_expansion.go
    @@ -20,4 +20,8 @@ package v1
     
     type MutatingWebhookConfigurationExpansion interface{}
     
    +type ValidatingAdmissionPolicyExpansion interface{}
    +
    +type ValidatingAdmissionPolicyBindingExpansion interface{}
    +
     type ValidatingWebhookConfigurationExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/mutatingwebhookconfiguration.go
    index edbc826d19d1..d46a3c987e77 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/mutatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/mutatingwebhookconfiguration.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/admissionregistration/v1"
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	admissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    +	applyconfigurationsadmissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // MutatingWebhookConfigurationsGetter has a method to return a MutatingWebhookConfigurationInterface.
    @@ -41,157 +38,38 @@ type MutatingWebhookConfigurationsGetter interface {
     
     // MutatingWebhookConfigurationInterface has methods to work with MutatingWebhookConfiguration resources.
     type MutatingWebhookConfigurationInterface interface {
    -	Create(ctx context.Context, mutatingWebhookConfiguration *v1.MutatingWebhookConfiguration, opts metav1.CreateOptions) (*v1.MutatingWebhookConfiguration, error)
    -	Update(ctx context.Context, mutatingWebhookConfiguration *v1.MutatingWebhookConfiguration, opts metav1.UpdateOptions) (*v1.MutatingWebhookConfiguration, error)
    +	Create(ctx context.Context, mutatingWebhookConfiguration *admissionregistrationv1.MutatingWebhookConfiguration, opts metav1.CreateOptions) (*admissionregistrationv1.MutatingWebhookConfiguration, error)
    +	Update(ctx context.Context, mutatingWebhookConfiguration *admissionregistrationv1.MutatingWebhookConfiguration, opts metav1.UpdateOptions) (*admissionregistrationv1.MutatingWebhookConfiguration, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.MutatingWebhookConfiguration, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.MutatingWebhookConfigurationList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*admissionregistrationv1.MutatingWebhookConfiguration, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*admissionregistrationv1.MutatingWebhookConfigurationList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.MutatingWebhookConfiguration, err error)
    -	Apply(ctx context.Context, mutatingWebhookConfiguration *admissionregistrationv1.MutatingWebhookConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.MutatingWebhookConfiguration, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *admissionregistrationv1.MutatingWebhookConfiguration, err error)
    +	Apply(ctx context.Context, mutatingWebhookConfiguration *applyconfigurationsadmissionregistrationv1.MutatingWebhookConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *admissionregistrationv1.MutatingWebhookConfiguration, err error)
     	MutatingWebhookConfigurationExpansion
     }
     
     // mutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface
     type mutatingWebhookConfigurations struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1.MutatingWebhookConfiguration, *admissionregistrationv1.MutatingWebhookConfigurationList, *applyconfigurationsadmissionregistrationv1.MutatingWebhookConfigurationApplyConfiguration]
     }
     
     // newMutatingWebhookConfigurations returns a MutatingWebhookConfigurations
     func newMutatingWebhookConfigurations(c *AdmissionregistrationV1Client) *mutatingWebhookConfigurations {
     	return &mutatingWebhookConfigurations{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1.MutatingWebhookConfiguration, *admissionregistrationv1.MutatingWebhookConfigurationList, *applyconfigurationsadmissionregistrationv1.MutatingWebhookConfigurationApplyConfiguration](
    +			"mutatingwebhookconfigurations",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1.MutatingWebhookConfiguration {
    +				return &admissionregistrationv1.MutatingWebhookConfiguration{}
    +			},
    +			func() *admissionregistrationv1.MutatingWebhookConfigurationList {
    +				return &admissionregistrationv1.MutatingWebhookConfigurationList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1.MutatingWebhookConfiguration](),
    +		),
     	}
     }
    -
    -// Get takes name of the mutatingWebhookConfiguration, and returns the corresponding mutatingWebhookConfiguration object, and an error if there is any.
    -func (c *mutatingWebhookConfigurations) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.MutatingWebhookConfiguration, err error) {
    -	result = &v1.MutatingWebhookConfiguration{}
    -	err = c.client.Get().
    -		Resource("mutatingwebhookconfigurations").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of MutatingWebhookConfigurations that match those selectors.
    -func (c *mutatingWebhookConfigurations) List(ctx context.Context, opts metav1.ListOptions) (result *v1.MutatingWebhookConfigurationList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.MutatingWebhookConfigurationList{}
    -	err = c.client.Get().
    -		Resource("mutatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested mutatingWebhookConfigurations.
    -func (c *mutatingWebhookConfigurations) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("mutatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a mutatingWebhookConfiguration and creates it.  Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
    -func (c *mutatingWebhookConfigurations) Create(ctx context.Context, mutatingWebhookConfiguration *v1.MutatingWebhookConfiguration, opts metav1.CreateOptions) (result *v1.MutatingWebhookConfiguration, err error) {
    -	result = &v1.MutatingWebhookConfiguration{}
    -	err = c.client.Post().
    -		Resource("mutatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(mutatingWebhookConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a mutatingWebhookConfiguration and updates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
    -func (c *mutatingWebhookConfigurations) Update(ctx context.Context, mutatingWebhookConfiguration *v1.MutatingWebhookConfiguration, opts metav1.UpdateOptions) (result *v1.MutatingWebhookConfiguration, err error) {
    -	result = &v1.MutatingWebhookConfiguration{}
    -	err = c.client.Put().
    -		Resource("mutatingwebhookconfigurations").
    -		Name(mutatingWebhookConfiguration.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(mutatingWebhookConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the mutatingWebhookConfiguration and deletes it. Returns an error if one occurs.
    -func (c *mutatingWebhookConfigurations) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("mutatingwebhookconfigurations").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *mutatingWebhookConfigurations) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("mutatingwebhookconfigurations").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched mutatingWebhookConfiguration.
    -func (c *mutatingWebhookConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.MutatingWebhookConfiguration, err error) {
    -	result = &v1.MutatingWebhookConfiguration{}
    -	err = c.client.Patch(pt).
    -		Resource("mutatingwebhookconfigurations").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied mutatingWebhookConfiguration.
    -func (c *mutatingWebhookConfigurations) Apply(ctx context.Context, mutatingWebhookConfiguration *admissionregistrationv1.MutatingWebhookConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.MutatingWebhookConfiguration, err error) {
    -	if mutatingWebhookConfiguration == nil {
    -		return nil, fmt.Errorf("mutatingWebhookConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(mutatingWebhookConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := mutatingWebhookConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("mutatingWebhookConfiguration.Name must be provided to Apply")
    -	}
    -	result = &v1.MutatingWebhookConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("mutatingwebhookconfigurations").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingadmissionpolicy.go
    new file mode 100644
    index 000000000000..2d56ab168e59
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingadmissionpolicy.go
    @@ -0,0 +1,79 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	context "context"
    +
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsadmissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// ValidatingAdmissionPoliciesGetter has a method to return a ValidatingAdmissionPolicyInterface.
    +// A group's client should implement this interface.
    +type ValidatingAdmissionPoliciesGetter interface {
    +	ValidatingAdmissionPolicies() ValidatingAdmissionPolicyInterface
    +}
    +
    +// ValidatingAdmissionPolicyInterface has methods to work with ValidatingAdmissionPolicy resources.
    +type ValidatingAdmissionPolicyInterface interface {
    +	Create(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1.ValidatingAdmissionPolicy, opts metav1.CreateOptions) (*admissionregistrationv1.ValidatingAdmissionPolicy, error)
    +	Update(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1.ValidatingAdmissionPolicy, opts metav1.UpdateOptions) (*admissionregistrationv1.ValidatingAdmissionPolicy, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1.ValidatingAdmissionPolicy, opts metav1.UpdateOptions) (*admissionregistrationv1.ValidatingAdmissionPolicy, error)
    +	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*admissionregistrationv1.ValidatingAdmissionPolicy, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*admissionregistrationv1.ValidatingAdmissionPolicyList, error)
    +	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *admissionregistrationv1.ValidatingAdmissionPolicy, err error)
    +	Apply(ctx context.Context, validatingAdmissionPolicy *applyconfigurationsadmissionregistrationv1.ValidatingAdmissionPolicyApplyConfiguration, opts metav1.ApplyOptions) (result *admissionregistrationv1.ValidatingAdmissionPolicy, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, validatingAdmissionPolicy *applyconfigurationsadmissionregistrationv1.ValidatingAdmissionPolicyApplyConfiguration, opts metav1.ApplyOptions) (result *admissionregistrationv1.ValidatingAdmissionPolicy, err error)
    +	ValidatingAdmissionPolicyExpansion
    +}
    +
    +// validatingAdmissionPolicies implements ValidatingAdmissionPolicyInterface
    +type validatingAdmissionPolicies struct {
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1.ValidatingAdmissionPolicy, *admissionregistrationv1.ValidatingAdmissionPolicyList, *applyconfigurationsadmissionregistrationv1.ValidatingAdmissionPolicyApplyConfiguration]
    +}
    +
    +// newValidatingAdmissionPolicies returns a ValidatingAdmissionPolicies
    +func newValidatingAdmissionPolicies(c *AdmissionregistrationV1Client) *validatingAdmissionPolicies {
    +	return &validatingAdmissionPolicies{
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1.ValidatingAdmissionPolicy, *admissionregistrationv1.ValidatingAdmissionPolicyList, *applyconfigurationsadmissionregistrationv1.ValidatingAdmissionPolicyApplyConfiguration](
    +			"validatingadmissionpolicies",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1.ValidatingAdmissionPolicy {
    +				return &admissionregistrationv1.ValidatingAdmissionPolicy{}
    +			},
    +			func() *admissionregistrationv1.ValidatingAdmissionPolicyList {
    +				return &admissionregistrationv1.ValidatingAdmissionPolicyList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1.ValidatingAdmissionPolicy](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingadmissionpolicybinding.go
    new file mode 100644
    index 000000000000..d3eaa0d2d156
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingadmissionpolicybinding.go
    @@ -0,0 +1,75 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	context "context"
    +
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsadmissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// ValidatingAdmissionPolicyBindingsGetter has a method to return a ValidatingAdmissionPolicyBindingInterface.
    +// A group's client should implement this interface.
    +type ValidatingAdmissionPolicyBindingsGetter interface {
    +	ValidatingAdmissionPolicyBindings() ValidatingAdmissionPolicyBindingInterface
    +}
    +
    +// ValidatingAdmissionPolicyBindingInterface has methods to work with ValidatingAdmissionPolicyBinding resources.
    +type ValidatingAdmissionPolicyBindingInterface interface {
    +	Create(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1.ValidatingAdmissionPolicyBinding, opts metav1.CreateOptions) (*admissionregistrationv1.ValidatingAdmissionPolicyBinding, error)
    +	Update(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1.ValidatingAdmissionPolicyBinding, opts metav1.UpdateOptions) (*admissionregistrationv1.ValidatingAdmissionPolicyBinding, error)
    +	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*admissionregistrationv1.ValidatingAdmissionPolicyBinding, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*admissionregistrationv1.ValidatingAdmissionPolicyBindingList, error)
    +	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *admissionregistrationv1.ValidatingAdmissionPolicyBinding, err error)
    +	Apply(ctx context.Context, validatingAdmissionPolicyBinding *applyconfigurationsadmissionregistrationv1.ValidatingAdmissionPolicyBindingApplyConfiguration, opts metav1.ApplyOptions) (result *admissionregistrationv1.ValidatingAdmissionPolicyBinding, err error)
    +	ValidatingAdmissionPolicyBindingExpansion
    +}
    +
    +// validatingAdmissionPolicyBindings implements ValidatingAdmissionPolicyBindingInterface
    +type validatingAdmissionPolicyBindings struct {
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1.ValidatingAdmissionPolicyBinding, *admissionregistrationv1.ValidatingAdmissionPolicyBindingList, *applyconfigurationsadmissionregistrationv1.ValidatingAdmissionPolicyBindingApplyConfiguration]
    +}
    +
    +// newValidatingAdmissionPolicyBindings returns a ValidatingAdmissionPolicyBindings
    +func newValidatingAdmissionPolicyBindings(c *AdmissionregistrationV1Client) *validatingAdmissionPolicyBindings {
    +	return &validatingAdmissionPolicyBindings{
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1.ValidatingAdmissionPolicyBinding, *admissionregistrationv1.ValidatingAdmissionPolicyBindingList, *applyconfigurationsadmissionregistrationv1.ValidatingAdmissionPolicyBindingApplyConfiguration](
    +			"validatingadmissionpolicybindings",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1.ValidatingAdmissionPolicyBinding {
    +				return &admissionregistrationv1.ValidatingAdmissionPolicyBinding{}
    +			},
    +			func() *admissionregistrationv1.ValidatingAdmissionPolicyBindingList {
    +				return &admissionregistrationv1.ValidatingAdmissionPolicyBindingList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1.ValidatingAdmissionPolicyBinding](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingwebhookconfiguration.go
    index 065e3c834147..f8f60f6819d0 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingwebhookconfiguration.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/admissionregistration/v1"
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	admissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    +	applyconfigurationsadmissionregistrationv1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ValidatingWebhookConfigurationsGetter has a method to return a ValidatingWebhookConfigurationInterface.
    @@ -41,157 +38,38 @@ type ValidatingWebhookConfigurationsGetter interface {
     
     // ValidatingWebhookConfigurationInterface has methods to work with ValidatingWebhookConfiguration resources.
     type ValidatingWebhookConfigurationInterface interface {
    -	Create(ctx context.Context, validatingWebhookConfiguration *v1.ValidatingWebhookConfiguration, opts metav1.CreateOptions) (*v1.ValidatingWebhookConfiguration, error)
    -	Update(ctx context.Context, validatingWebhookConfiguration *v1.ValidatingWebhookConfiguration, opts metav1.UpdateOptions) (*v1.ValidatingWebhookConfiguration, error)
    +	Create(ctx context.Context, validatingWebhookConfiguration *admissionregistrationv1.ValidatingWebhookConfiguration, opts metav1.CreateOptions) (*admissionregistrationv1.ValidatingWebhookConfiguration, error)
    +	Update(ctx context.Context, validatingWebhookConfiguration *admissionregistrationv1.ValidatingWebhookConfiguration, opts metav1.UpdateOptions) (*admissionregistrationv1.ValidatingWebhookConfiguration, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ValidatingWebhookConfiguration, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ValidatingWebhookConfigurationList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*admissionregistrationv1.ValidatingWebhookConfiguration, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*admissionregistrationv1.ValidatingWebhookConfigurationList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ValidatingWebhookConfiguration, err error)
    -	Apply(ctx context.Context, validatingWebhookConfiguration *admissionregistrationv1.ValidatingWebhookConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ValidatingWebhookConfiguration, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *admissionregistrationv1.ValidatingWebhookConfiguration, err error)
    +	Apply(ctx context.Context, validatingWebhookConfiguration *applyconfigurationsadmissionregistrationv1.ValidatingWebhookConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *admissionregistrationv1.ValidatingWebhookConfiguration, err error)
     	ValidatingWebhookConfigurationExpansion
     }
     
     // validatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface
     type validatingWebhookConfigurations struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1.ValidatingWebhookConfiguration, *admissionregistrationv1.ValidatingWebhookConfigurationList, *applyconfigurationsadmissionregistrationv1.ValidatingWebhookConfigurationApplyConfiguration]
     }
     
     // newValidatingWebhookConfigurations returns a ValidatingWebhookConfigurations
     func newValidatingWebhookConfigurations(c *AdmissionregistrationV1Client) *validatingWebhookConfigurations {
     	return &validatingWebhookConfigurations{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1.ValidatingWebhookConfiguration, *admissionregistrationv1.ValidatingWebhookConfigurationList, *applyconfigurationsadmissionregistrationv1.ValidatingWebhookConfigurationApplyConfiguration](
    +			"validatingwebhookconfigurations",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1.ValidatingWebhookConfiguration {
    +				return &admissionregistrationv1.ValidatingWebhookConfiguration{}
    +			},
    +			func() *admissionregistrationv1.ValidatingWebhookConfigurationList {
    +				return &admissionregistrationv1.ValidatingWebhookConfigurationList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1.ValidatingWebhookConfiguration](),
    +		),
     	}
     }
    -
    -// Get takes name of the validatingWebhookConfiguration, and returns the corresponding validatingWebhookConfiguration object, and an error if there is any.
    -func (c *validatingWebhookConfigurations) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ValidatingWebhookConfiguration, err error) {
    -	result = &v1.ValidatingWebhookConfiguration{}
    -	err = c.client.Get().
    -		Resource("validatingwebhookconfigurations").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingWebhookConfigurations that match those selectors.
    -func (c *validatingWebhookConfigurations) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ValidatingWebhookConfigurationList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ValidatingWebhookConfigurationList{}
    -	err = c.client.Get().
    -		Resource("validatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingWebhookConfigurations.
    -func (c *validatingWebhookConfigurations) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("validatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a validatingWebhookConfiguration and creates it.  Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
    -func (c *validatingWebhookConfigurations) Create(ctx context.Context, validatingWebhookConfiguration *v1.ValidatingWebhookConfiguration, opts metav1.CreateOptions) (result *v1.ValidatingWebhookConfiguration, err error) {
    -	result = &v1.ValidatingWebhookConfiguration{}
    -	err = c.client.Post().
    -		Resource("validatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingWebhookConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a validatingWebhookConfiguration and updates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
    -func (c *validatingWebhookConfigurations) Update(ctx context.Context, validatingWebhookConfiguration *v1.ValidatingWebhookConfiguration, opts metav1.UpdateOptions) (result *v1.ValidatingWebhookConfiguration, err error) {
    -	result = &v1.ValidatingWebhookConfiguration{}
    -	err = c.client.Put().
    -		Resource("validatingwebhookconfigurations").
    -		Name(validatingWebhookConfiguration.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingWebhookConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the validatingWebhookConfiguration and deletes it. Returns an error if one occurs.
    -func (c *validatingWebhookConfigurations) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("validatingwebhookconfigurations").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *validatingWebhookConfigurations) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("validatingwebhookconfigurations").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched validatingWebhookConfiguration.
    -func (c *validatingWebhookConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ValidatingWebhookConfiguration, err error) {
    -	result = &v1.ValidatingWebhookConfiguration{}
    -	err = c.client.Patch(pt).
    -		Resource("validatingwebhookconfigurations").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingWebhookConfiguration.
    -func (c *validatingWebhookConfigurations) Apply(ctx context.Context, validatingWebhookConfiguration *admissionregistrationv1.ValidatingWebhookConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ValidatingWebhookConfiguration, err error) {
    -	if validatingWebhookConfiguration == nil {
    -		return nil, fmt.Errorf("validatingWebhookConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(validatingWebhookConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingWebhookConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingWebhookConfiguration.Name must be provided to Apply")
    -	}
    -	result = &v1.ValidatingWebhookConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("validatingwebhookconfigurations").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go
    index f6102d25ae25..f8a67c6d8958 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go
    @@ -19,15 +19,17 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
     type AdmissionregistrationV1alpha1Interface interface {
     	RESTClient() rest.Interface
    +	MutatingAdmissionPoliciesGetter
    +	MutatingAdmissionPolicyBindingsGetter
     	ValidatingAdmissionPoliciesGetter
     	ValidatingAdmissionPolicyBindingsGetter
     }
    @@ -37,6 +39,14 @@ type AdmissionregistrationV1alpha1Client struct {
     	restClient rest.Interface
     }
     
    +func (c *AdmissionregistrationV1alpha1Client) MutatingAdmissionPolicies() MutatingAdmissionPolicyInterface {
    +	return newMutatingAdmissionPolicies(c)
    +}
    +
    +func (c *AdmissionregistrationV1alpha1Client) MutatingAdmissionPolicyBindings() MutatingAdmissionPolicyBindingInterface {
    +	return newMutatingAdmissionPolicyBindings(c)
    +}
    +
     func (c *AdmissionregistrationV1alpha1Client) ValidatingAdmissionPolicies() ValidatingAdmissionPolicyInterface {
     	return newValidatingAdmissionPolicies(c)
     }
    @@ -90,10 +100,10 @@ func New(c rest.Interface) *AdmissionregistrationV1alpha1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1alpha1.SchemeGroupVersion
    +	gv := admissionregistrationv1alpha1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go
    index dc0e30ca4d06..3dbd9b40255f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go
    @@ -28,12 +28,20 @@ type FakeAdmissionregistrationV1alpha1 struct {
     	*testing.Fake
     }
     
    +func (c *FakeAdmissionregistrationV1alpha1) MutatingAdmissionPolicies() v1alpha1.MutatingAdmissionPolicyInterface {
    +	return newFakeMutatingAdmissionPolicies(c)
    +}
    +
    +func (c *FakeAdmissionregistrationV1alpha1) MutatingAdmissionPolicyBindings() v1alpha1.MutatingAdmissionPolicyBindingInterface {
    +	return newFakeMutatingAdmissionPolicyBindings(c)
    +}
    +
     func (c *FakeAdmissionregistrationV1alpha1) ValidatingAdmissionPolicies() v1alpha1.ValidatingAdmissionPolicyInterface {
    -	return &FakeValidatingAdmissionPolicies{c}
    +	return newFakeValidatingAdmissionPolicies(c)
     }
     
     func (c *FakeAdmissionregistrationV1alpha1) ValidatingAdmissionPolicyBindings() v1alpha1.ValidatingAdmissionPolicyBindingInterface {
    -	return &FakeValidatingAdmissionPolicyBindings{c}
    +	return newFakeValidatingAdmissionPolicyBindings(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_mutatingadmissionpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_mutatingadmissionpolicy.go
    new file mode 100644
    index 000000000000..9c07ce315c71
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_mutatingadmissionpolicy.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	admissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1alpha1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1"
    +)
    +
    +// fakeMutatingAdmissionPolicies implements MutatingAdmissionPolicyInterface
    +type fakeMutatingAdmissionPolicies struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.MutatingAdmissionPolicy, *v1alpha1.MutatingAdmissionPolicyList, *admissionregistrationv1alpha1.MutatingAdmissionPolicyApplyConfiguration]
    +	Fake *FakeAdmissionregistrationV1alpha1
    +}
    +
    +func newFakeMutatingAdmissionPolicies(fake *FakeAdmissionregistrationV1alpha1) typedadmissionregistrationv1alpha1.MutatingAdmissionPolicyInterface {
    +	return &fakeMutatingAdmissionPolicies{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.MutatingAdmissionPolicy, *v1alpha1.MutatingAdmissionPolicyList, *admissionregistrationv1alpha1.MutatingAdmissionPolicyApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("mutatingadmissionpolicies"),
    +			v1alpha1.SchemeGroupVersion.WithKind("MutatingAdmissionPolicy"),
    +			func() *v1alpha1.MutatingAdmissionPolicy { return &v1alpha1.MutatingAdmissionPolicy{} },
    +			func() *v1alpha1.MutatingAdmissionPolicyList { return &v1alpha1.MutatingAdmissionPolicyList{} },
    +			func(dst, src *v1alpha1.MutatingAdmissionPolicyList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.MutatingAdmissionPolicyList) []*v1alpha1.MutatingAdmissionPolicy {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.MutatingAdmissionPolicyList, items []*v1alpha1.MutatingAdmissionPolicy) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_mutatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_mutatingadmissionpolicybinding.go
    new file mode 100644
    index 000000000000..a7fbb6eb480d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_mutatingadmissionpolicybinding.go
    @@ -0,0 +1,55 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	admissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1alpha1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1"
    +)
    +
    +// fakeMutatingAdmissionPolicyBindings implements MutatingAdmissionPolicyBindingInterface
    +type fakeMutatingAdmissionPolicyBindings struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.MutatingAdmissionPolicyBinding, *v1alpha1.MutatingAdmissionPolicyBindingList, *admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingApplyConfiguration]
    +	Fake *FakeAdmissionregistrationV1alpha1
    +}
    +
    +func newFakeMutatingAdmissionPolicyBindings(fake *FakeAdmissionregistrationV1alpha1) typedadmissionregistrationv1alpha1.MutatingAdmissionPolicyBindingInterface {
    +	return &fakeMutatingAdmissionPolicyBindings{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.MutatingAdmissionPolicyBinding, *v1alpha1.MutatingAdmissionPolicyBindingList, *admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("mutatingadmissionpolicybindings"),
    +			v1alpha1.SchemeGroupVersion.WithKind("MutatingAdmissionPolicyBinding"),
    +			func() *v1alpha1.MutatingAdmissionPolicyBinding { return &v1alpha1.MutatingAdmissionPolicyBinding{} },
    +			func() *v1alpha1.MutatingAdmissionPolicyBindingList {
    +				return &v1alpha1.MutatingAdmissionPolicyBindingList{}
    +			},
    +			func(dst, src *v1alpha1.MutatingAdmissionPolicyBindingList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.MutatingAdmissionPolicyBindingList) []*v1alpha1.MutatingAdmissionPolicyBinding {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.MutatingAdmissionPolicyBindingList, items []*v1alpha1.MutatingAdmissionPolicyBinding) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingadmissionpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingadmissionpolicy.go
    index f4358ce46ccf..aad223e15fa4 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingadmissionpolicy.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingadmissionpolicy.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	admissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1alpha1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1"
     )
     
    -// FakeValidatingAdmissionPolicies implements ValidatingAdmissionPolicyInterface
    -type FakeValidatingAdmissionPolicies struct {
    +// fakeValidatingAdmissionPolicies implements ValidatingAdmissionPolicyInterface
    +type fakeValidatingAdmissionPolicies struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.ValidatingAdmissionPolicy, *v1alpha1.ValidatingAdmissionPolicyList, *admissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration]
     	Fake *FakeAdmissionregistrationV1alpha1
     }
     
    -var validatingadmissionpoliciesResource = v1alpha1.SchemeGroupVersion.WithResource("validatingadmissionpolicies")
    -
    -var validatingadmissionpoliciesKind = v1alpha1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicy")
    -
    -// Get takes name of the validatingAdmissionPolicy, and returns the corresponding validatingAdmissionPolicy object, and an error if there is any.
    -func (c *FakeValidatingAdmissionPolicies) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(validatingadmissionpoliciesResource, name), &v1alpha1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicy), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingAdmissionPolicies that match those selectors.
    -func (c *FakeValidatingAdmissionPolicies) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ValidatingAdmissionPolicyList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(validatingadmissionpoliciesResource, validatingadmissionpoliciesKind, opts), &v1alpha1.ValidatingAdmissionPolicyList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.ValidatingAdmissionPolicyList{ListMeta: obj.(*v1alpha1.ValidatingAdmissionPolicyList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.ValidatingAdmissionPolicyList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingAdmissionPolicies.
    -func (c *FakeValidatingAdmissionPolicies) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(validatingadmissionpoliciesResource, opts))
    -}
    -
    -// Create takes the representation of a validatingAdmissionPolicy and creates it.  Returns the server's representation of the validatingAdmissionPolicy, and an error, if there is any.
    -func (c *FakeValidatingAdmissionPolicies) Create(ctx context.Context, validatingAdmissionPolicy *v1alpha1.ValidatingAdmissionPolicy, opts v1.CreateOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(validatingadmissionpoliciesResource, validatingAdmissionPolicy), &v1alpha1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicy), err
    -}
    -
    -// Update takes the representation of a validatingAdmissionPolicy and updates it. Returns the server's representation of the validatingAdmissionPolicy, and an error, if there is any.
    -func (c *FakeValidatingAdmissionPolicies) Update(ctx context.Context, validatingAdmissionPolicy *v1alpha1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(validatingadmissionpoliciesResource, validatingAdmissionPolicy), &v1alpha1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicy), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeValidatingAdmissionPolicies) UpdateStatus(ctx context.Context, validatingAdmissionPolicy *v1alpha1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (*v1alpha1.ValidatingAdmissionPolicy, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(validatingadmissionpoliciesResource, "status", validatingAdmissionPolicy), &v1alpha1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicy), err
    -}
    -
    -// Delete takes name of the validatingAdmissionPolicy and deletes it. Returns an error if one occurs.
    -func (c *FakeValidatingAdmissionPolicies) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(validatingadmissionpoliciesResource, name, opts), &v1alpha1.ValidatingAdmissionPolicy{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeValidatingAdmissionPolicies) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(validatingadmissionpoliciesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.ValidatingAdmissionPolicyList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched validatingAdmissionPolicy.
    -func (c *FakeValidatingAdmissionPolicies) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingadmissionpoliciesResource, name, pt, data, subresources...), &v1alpha1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicy), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingAdmissionPolicy.
    -func (c *FakeValidatingAdmissionPolicies) Apply(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	if validatingAdmissionPolicy == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(validatingAdmissionPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingAdmissionPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingadmissionpoliciesResource, *name, types.ApplyPatchType, data), &v1alpha1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicy), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeValidatingAdmissionPolicies) ApplyStatus(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	if validatingAdmissionPolicy == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(validatingAdmissionPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingAdmissionPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingadmissionpoliciesResource, *name, types.ApplyPatchType, data, "status"), &v1alpha1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeValidatingAdmissionPolicies(fake *FakeAdmissionregistrationV1alpha1) typedadmissionregistrationv1alpha1.ValidatingAdmissionPolicyInterface {
    +	return &fakeValidatingAdmissionPolicies{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.ValidatingAdmissionPolicy, *v1alpha1.ValidatingAdmissionPolicyList, *admissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("validatingadmissionpolicies"),
    +			v1alpha1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicy"),
    +			func() *v1alpha1.ValidatingAdmissionPolicy { return &v1alpha1.ValidatingAdmissionPolicy{} },
    +			func() *v1alpha1.ValidatingAdmissionPolicyList { return &v1alpha1.ValidatingAdmissionPolicyList{} },
    +			func(dst, src *v1alpha1.ValidatingAdmissionPolicyList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.ValidatingAdmissionPolicyList) []*v1alpha1.ValidatingAdmissionPolicy {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.ValidatingAdmissionPolicyList, items []*v1alpha1.ValidatingAdmissionPolicy) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicy), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingadmissionpolicybinding.go
    index c520655f9dd1..a22a3f16bc89 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingadmissionpolicybinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_validatingadmissionpolicybinding.go
    @@ -19,127 +19,37 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	admissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1alpha1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1"
     )
     
    -// FakeValidatingAdmissionPolicyBindings implements ValidatingAdmissionPolicyBindingInterface
    -type FakeValidatingAdmissionPolicyBindings struct {
    +// fakeValidatingAdmissionPolicyBindings implements ValidatingAdmissionPolicyBindingInterface
    +type fakeValidatingAdmissionPolicyBindings struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.ValidatingAdmissionPolicyBinding, *v1alpha1.ValidatingAdmissionPolicyBindingList, *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingApplyConfiguration]
     	Fake *FakeAdmissionregistrationV1alpha1
     }
     
    -var validatingadmissionpolicybindingsResource = v1alpha1.SchemeGroupVersion.WithResource("validatingadmissionpolicybindings")
    -
    -var validatingadmissionpolicybindingsKind = v1alpha1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBinding")
    -
    -// Get takes name of the validatingAdmissionPolicyBinding, and returns the corresponding validatingAdmissionPolicyBinding object, and an error if there is any.
    -func (c *FakeValidatingAdmissionPolicyBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(validatingadmissionpolicybindingsResource, name), &v1alpha1.ValidatingAdmissionPolicyBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicyBinding), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingAdmissionPolicyBindings that match those selectors.
    -func (c *FakeValidatingAdmissionPolicyBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ValidatingAdmissionPolicyBindingList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(validatingadmissionpolicybindingsResource, validatingadmissionpolicybindingsKind, opts), &v1alpha1.ValidatingAdmissionPolicyBindingList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.ValidatingAdmissionPolicyBindingList{ListMeta: obj.(*v1alpha1.ValidatingAdmissionPolicyBindingList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.ValidatingAdmissionPolicyBindingList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingAdmissionPolicyBindings.
    -func (c *FakeValidatingAdmissionPolicyBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(validatingadmissionpolicybindingsResource, opts))
    -}
    -
    -// Create takes the representation of a validatingAdmissionPolicyBinding and creates it.  Returns the server's representation of the validatingAdmissionPolicyBinding, and an error, if there is any.
    -func (c *FakeValidatingAdmissionPolicyBindings) Create(ctx context.Context, validatingAdmissionPolicyBinding *v1alpha1.ValidatingAdmissionPolicyBinding, opts v1.CreateOptions) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(validatingadmissionpolicybindingsResource, validatingAdmissionPolicyBinding), &v1alpha1.ValidatingAdmissionPolicyBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicyBinding), err
    -}
    -
    -// Update takes the representation of a validatingAdmissionPolicyBinding and updates it. Returns the server's representation of the validatingAdmissionPolicyBinding, and an error, if there is any.
    -func (c *FakeValidatingAdmissionPolicyBindings) Update(ctx context.Context, validatingAdmissionPolicyBinding *v1alpha1.ValidatingAdmissionPolicyBinding, opts v1.UpdateOptions) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(validatingadmissionpolicybindingsResource, validatingAdmissionPolicyBinding), &v1alpha1.ValidatingAdmissionPolicyBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicyBinding), err
    -}
    -
    -// Delete takes name of the validatingAdmissionPolicyBinding and deletes it. Returns an error if one occurs.
    -func (c *FakeValidatingAdmissionPolicyBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(validatingadmissionpolicybindingsResource, name, opts), &v1alpha1.ValidatingAdmissionPolicyBinding{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeValidatingAdmissionPolicyBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(validatingadmissionpolicybindingsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.ValidatingAdmissionPolicyBindingList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched validatingAdmissionPolicyBinding.
    -func (c *FakeValidatingAdmissionPolicyBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingadmissionpolicybindingsResource, name, pt, data, subresources...), &v1alpha1.ValidatingAdmissionPolicyBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicyBinding), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingAdmissionPolicyBinding.
    -func (c *FakeValidatingAdmissionPolicyBindings) Apply(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	if validatingAdmissionPolicyBinding == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicyBinding provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(validatingAdmissionPolicyBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingAdmissionPolicyBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicyBinding.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingadmissionpolicybindingsResource, *name, types.ApplyPatchType, data), &v1alpha1.ValidatingAdmissionPolicyBinding{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeValidatingAdmissionPolicyBindings(fake *FakeAdmissionregistrationV1alpha1) typedadmissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingInterface {
    +	return &fakeValidatingAdmissionPolicyBindings{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.ValidatingAdmissionPolicyBinding, *v1alpha1.ValidatingAdmissionPolicyBindingList, *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("validatingadmissionpolicybindings"),
    +			v1alpha1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBinding"),
    +			func() *v1alpha1.ValidatingAdmissionPolicyBinding { return &v1alpha1.ValidatingAdmissionPolicyBinding{} },
    +			func() *v1alpha1.ValidatingAdmissionPolicyBindingList {
    +				return &v1alpha1.ValidatingAdmissionPolicyBindingList{}
    +			},
    +			func(dst, src *v1alpha1.ValidatingAdmissionPolicyBindingList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.ValidatingAdmissionPolicyBindingList) []*v1alpha1.ValidatingAdmissionPolicyBinding {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.ValidatingAdmissionPolicyBindingList, items []*v1alpha1.ValidatingAdmissionPolicyBinding) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicyBinding), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go
    index 94562da59434..676578c631f4 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go
    @@ -18,6 +18,10 @@ limitations under the License.
     
     package v1alpha1
     
    +type MutatingAdmissionPolicyExpansion interface{}
    +
    +type MutatingAdmissionPolicyBindingExpansion interface{}
    +
     type ValidatingAdmissionPolicyExpansion interface{}
     
     type ValidatingAdmissionPolicyBindingExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/mutatingadmissionpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/mutatingadmissionpolicy.go
    new file mode 100644
    index 000000000000..4a781a602889
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/mutatingadmissionpolicy.go
    @@ -0,0 +1,75 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	context "context"
    +
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsadmissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// MutatingAdmissionPoliciesGetter has a method to return a MutatingAdmissionPolicyInterface.
    +// A group's client should implement this interface.
    +type MutatingAdmissionPoliciesGetter interface {
    +	MutatingAdmissionPolicies() MutatingAdmissionPolicyInterface
    +}
    +
    +// MutatingAdmissionPolicyInterface has methods to work with MutatingAdmissionPolicy resources.
    +type MutatingAdmissionPolicyInterface interface {
    +	Create(ctx context.Context, mutatingAdmissionPolicy *admissionregistrationv1alpha1.MutatingAdmissionPolicy, opts v1.CreateOptions) (*admissionregistrationv1alpha1.MutatingAdmissionPolicy, error)
    +	Update(ctx context.Context, mutatingAdmissionPolicy *admissionregistrationv1alpha1.MutatingAdmissionPolicy, opts v1.UpdateOptions) (*admissionregistrationv1alpha1.MutatingAdmissionPolicy, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*admissionregistrationv1alpha1.MutatingAdmissionPolicy, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*admissionregistrationv1alpha1.MutatingAdmissionPolicyList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *admissionregistrationv1alpha1.MutatingAdmissionPolicy, err error)
    +	Apply(ctx context.Context, mutatingAdmissionPolicy *applyconfigurationsadmissionregistrationv1alpha1.MutatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *admissionregistrationv1alpha1.MutatingAdmissionPolicy, err error)
    +	MutatingAdmissionPolicyExpansion
    +}
    +
    +// mutatingAdmissionPolicies implements MutatingAdmissionPolicyInterface
    +type mutatingAdmissionPolicies struct {
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1alpha1.MutatingAdmissionPolicy, *admissionregistrationv1alpha1.MutatingAdmissionPolicyList, *applyconfigurationsadmissionregistrationv1alpha1.MutatingAdmissionPolicyApplyConfiguration]
    +}
    +
    +// newMutatingAdmissionPolicies returns a MutatingAdmissionPolicies
    +func newMutatingAdmissionPolicies(c *AdmissionregistrationV1alpha1Client) *mutatingAdmissionPolicies {
    +	return &mutatingAdmissionPolicies{
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1alpha1.MutatingAdmissionPolicy, *admissionregistrationv1alpha1.MutatingAdmissionPolicyList, *applyconfigurationsadmissionregistrationv1alpha1.MutatingAdmissionPolicyApplyConfiguration](
    +			"mutatingadmissionpolicies",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1alpha1.MutatingAdmissionPolicy {
    +				return &admissionregistrationv1alpha1.MutatingAdmissionPolicy{}
    +			},
    +			func() *admissionregistrationv1alpha1.MutatingAdmissionPolicyList {
    +				return &admissionregistrationv1alpha1.MutatingAdmissionPolicyList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1alpha1.MutatingAdmissionPolicy](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go
    new file mode 100644
    index 000000000000..78057e2001ab
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go
    @@ -0,0 +1,75 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	context "context"
    +
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsadmissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// MutatingAdmissionPolicyBindingsGetter has a method to return a MutatingAdmissionPolicyBindingInterface.
    +// A group's client should implement this interface.
    +type MutatingAdmissionPolicyBindingsGetter interface {
    +	MutatingAdmissionPolicyBindings() MutatingAdmissionPolicyBindingInterface
    +}
    +
    +// MutatingAdmissionPolicyBindingInterface has methods to work with MutatingAdmissionPolicyBinding resources.
    +type MutatingAdmissionPolicyBindingInterface interface {
    +	Create(ctx context.Context, mutatingAdmissionPolicyBinding *admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, opts v1.CreateOptions) (*admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, error)
    +	Update(ctx context.Context, mutatingAdmissionPolicyBinding *admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, opts v1.UpdateOptions) (*admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, err error)
    +	Apply(ctx context.Context, mutatingAdmissionPolicyBinding *applyconfigurationsadmissionregistrationv1alpha1.MutatingAdmissionPolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, err error)
    +	MutatingAdmissionPolicyBindingExpansion
    +}
    +
    +// mutatingAdmissionPolicyBindings implements MutatingAdmissionPolicyBindingInterface
    +type mutatingAdmissionPolicyBindings struct {
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, *admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingList, *applyconfigurationsadmissionregistrationv1alpha1.MutatingAdmissionPolicyBindingApplyConfiguration]
    +}
    +
    +// newMutatingAdmissionPolicyBindings returns a MutatingAdmissionPolicyBindings
    +func newMutatingAdmissionPolicyBindings(c *AdmissionregistrationV1alpha1Client) *mutatingAdmissionPolicyBindings {
    +	return &mutatingAdmissionPolicyBindings{
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, *admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingList, *applyconfigurationsadmissionregistrationv1alpha1.MutatingAdmissionPolicyBindingApplyConfiguration](
    +			"mutatingadmissionpolicybindings",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding {
    +				return &admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding{}
    +			},
    +			func() *admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingList {
    +				return &admissionregistrationv1alpha1.MutatingAdmissionPolicyBindingList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    index 1d994b5abf7d..ce2328b12bdd 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	admissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    +	applyconfigurationsadmissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ValidatingAdmissionPoliciesGetter has a method to return a ValidatingAdmissionPolicyInterface.
    @@ -41,203 +38,42 @@ type ValidatingAdmissionPoliciesGetter interface {
     
     // ValidatingAdmissionPolicyInterface has methods to work with ValidatingAdmissionPolicy resources.
     type ValidatingAdmissionPolicyInterface interface {
    -	Create(ctx context.Context, validatingAdmissionPolicy *v1alpha1.ValidatingAdmissionPolicy, opts v1.CreateOptions) (*v1alpha1.ValidatingAdmissionPolicy, error)
    -	Update(ctx context.Context, validatingAdmissionPolicy *v1alpha1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (*v1alpha1.ValidatingAdmissionPolicy, error)
    -	UpdateStatus(ctx context.Context, validatingAdmissionPolicy *v1alpha1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (*v1alpha1.ValidatingAdmissionPolicy, error)
    +	Create(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1alpha1.ValidatingAdmissionPolicy, opts v1.CreateOptions) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicy, error)
    +	Update(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1alpha1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicy, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1alpha1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicy, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ValidatingAdmissionPolicy, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ValidatingAdmissionPolicyList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicy, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicyList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ValidatingAdmissionPolicy, err error)
    -	Apply(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error)
    -	ApplyStatus(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *admissionregistrationv1alpha1.ValidatingAdmissionPolicy, err error)
    +	Apply(ctx context.Context, validatingAdmissionPolicy *applyconfigurationsadmissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *admissionregistrationv1alpha1.ValidatingAdmissionPolicy, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, validatingAdmissionPolicy *applyconfigurationsadmissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *admissionregistrationv1alpha1.ValidatingAdmissionPolicy, err error)
     	ValidatingAdmissionPolicyExpansion
     }
     
     // validatingAdmissionPolicies implements ValidatingAdmissionPolicyInterface
     type validatingAdmissionPolicies struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1alpha1.ValidatingAdmissionPolicy, *admissionregistrationv1alpha1.ValidatingAdmissionPolicyList, *applyconfigurationsadmissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration]
     }
     
     // newValidatingAdmissionPolicies returns a ValidatingAdmissionPolicies
     func newValidatingAdmissionPolicies(c *AdmissionregistrationV1alpha1Client) *validatingAdmissionPolicies {
     	return &validatingAdmissionPolicies{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1alpha1.ValidatingAdmissionPolicy, *admissionregistrationv1alpha1.ValidatingAdmissionPolicyList, *applyconfigurationsadmissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration](
    +			"validatingadmissionpolicies",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1alpha1.ValidatingAdmissionPolicy {
    +				return &admissionregistrationv1alpha1.ValidatingAdmissionPolicy{}
    +			},
    +			func() *admissionregistrationv1alpha1.ValidatingAdmissionPolicyList {
    +				return &admissionregistrationv1alpha1.ValidatingAdmissionPolicyList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1alpha1.ValidatingAdmissionPolicy](),
    +		),
     	}
     }
    -
    -// Get takes name of the validatingAdmissionPolicy, and returns the corresponding validatingAdmissionPolicy object, and an error if there is any.
    -func (c *validatingAdmissionPolicies) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	result = &v1alpha1.ValidatingAdmissionPolicy{}
    -	err = c.client.Get().
    -		Resource("validatingadmissionpolicies").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingAdmissionPolicies that match those selectors.
    -func (c *validatingAdmissionPolicies) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ValidatingAdmissionPolicyList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.ValidatingAdmissionPolicyList{}
    -	err = c.client.Get().
    -		Resource("validatingadmissionpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingAdmissionPolicies.
    -func (c *validatingAdmissionPolicies) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("validatingadmissionpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a validatingAdmissionPolicy and creates it.  Returns the server's representation of the validatingAdmissionPolicy, and an error, if there is any.
    -func (c *validatingAdmissionPolicies) Create(ctx context.Context, validatingAdmissionPolicy *v1alpha1.ValidatingAdmissionPolicy, opts v1.CreateOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	result = &v1alpha1.ValidatingAdmissionPolicy{}
    -	err = c.client.Post().
    -		Resource("validatingadmissionpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingAdmissionPolicy).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a validatingAdmissionPolicy and updates it. Returns the server's representation of the validatingAdmissionPolicy, and an error, if there is any.
    -func (c *validatingAdmissionPolicies) Update(ctx context.Context, validatingAdmissionPolicy *v1alpha1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	result = &v1alpha1.ValidatingAdmissionPolicy{}
    -	err = c.client.Put().
    -		Resource("validatingadmissionpolicies").
    -		Name(validatingAdmissionPolicy.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingAdmissionPolicy).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *validatingAdmissionPolicies) UpdateStatus(ctx context.Context, validatingAdmissionPolicy *v1alpha1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	result = &v1alpha1.ValidatingAdmissionPolicy{}
    -	err = c.client.Put().
    -		Resource("validatingadmissionpolicies").
    -		Name(validatingAdmissionPolicy.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingAdmissionPolicy).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the validatingAdmissionPolicy and deletes it. Returns an error if one occurs.
    -func (c *validatingAdmissionPolicies) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("validatingadmissionpolicies").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *validatingAdmissionPolicies) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("validatingadmissionpolicies").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched validatingAdmissionPolicy.
    -func (c *validatingAdmissionPolicies) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	result = &v1alpha1.ValidatingAdmissionPolicy{}
    -	err = c.client.Patch(pt).
    -		Resource("validatingadmissionpolicies").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingAdmissionPolicy.
    -func (c *validatingAdmissionPolicies) Apply(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	if validatingAdmissionPolicy == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(validatingAdmissionPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingAdmissionPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.ValidatingAdmissionPolicy{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("validatingadmissionpolicies").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *validatingAdmissionPolicies) ApplyStatus(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1alpha1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	if validatingAdmissionPolicy == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(validatingAdmissionPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := validatingAdmissionPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy.Name must be provided to Apply")
    -	}
    -
    -	result = &v1alpha1.ValidatingAdmissionPolicy{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("validatingadmissionpolicies").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    index 39823ca82b1c..6236ea90c96e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	admissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    +	applyconfigurationsadmissionregistrationv1alpha1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ValidatingAdmissionPolicyBindingsGetter has a method to return a ValidatingAdmissionPolicyBindingInterface.
    @@ -41,157 +38,38 @@ type ValidatingAdmissionPolicyBindingsGetter interface {
     
     // ValidatingAdmissionPolicyBindingInterface has methods to work with ValidatingAdmissionPolicyBinding resources.
     type ValidatingAdmissionPolicyBindingInterface interface {
    -	Create(ctx context.Context, validatingAdmissionPolicyBinding *v1alpha1.ValidatingAdmissionPolicyBinding, opts v1.CreateOptions) (*v1alpha1.ValidatingAdmissionPolicyBinding, error)
    -	Update(ctx context.Context, validatingAdmissionPolicyBinding *v1alpha1.ValidatingAdmissionPolicyBinding, opts v1.UpdateOptions) (*v1alpha1.ValidatingAdmissionPolicyBinding, error)
    +	Create(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, opts v1.CreateOptions) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, error)
    +	Update(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, opts v1.UpdateOptions) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ValidatingAdmissionPolicyBinding, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ValidatingAdmissionPolicyBindingList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error)
    -	Apply(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, err error)
    +	Apply(ctx context.Context, validatingAdmissionPolicyBinding *applyconfigurationsadmissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, err error)
     	ValidatingAdmissionPolicyBindingExpansion
     }
     
     // validatingAdmissionPolicyBindings implements ValidatingAdmissionPolicyBindingInterface
     type validatingAdmissionPolicyBindings struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingList, *applyconfigurationsadmissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingApplyConfiguration]
     }
     
     // newValidatingAdmissionPolicyBindings returns a ValidatingAdmissionPolicyBindings
     func newValidatingAdmissionPolicyBindings(c *AdmissionregistrationV1alpha1Client) *validatingAdmissionPolicyBindings {
     	return &validatingAdmissionPolicyBindings{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingList, *applyconfigurationsadmissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingApplyConfiguration](
    +			"validatingadmissionpolicybindings",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding {
    +				return &admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding{}
    +			},
    +			func() *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingList {
    +				return &admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding](),
    +		),
     	}
     }
    -
    -// Get takes name of the validatingAdmissionPolicyBinding, and returns the corresponding validatingAdmissionPolicyBinding object, and an error if there is any.
    -func (c *validatingAdmissionPolicyBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	result = &v1alpha1.ValidatingAdmissionPolicyBinding{}
    -	err = c.client.Get().
    -		Resource("validatingadmissionpolicybindings").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingAdmissionPolicyBindings that match those selectors.
    -func (c *validatingAdmissionPolicyBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ValidatingAdmissionPolicyBindingList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.ValidatingAdmissionPolicyBindingList{}
    -	err = c.client.Get().
    -		Resource("validatingadmissionpolicybindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingAdmissionPolicyBindings.
    -func (c *validatingAdmissionPolicyBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("validatingadmissionpolicybindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a validatingAdmissionPolicyBinding and creates it.  Returns the server's representation of the validatingAdmissionPolicyBinding, and an error, if there is any.
    -func (c *validatingAdmissionPolicyBindings) Create(ctx context.Context, validatingAdmissionPolicyBinding *v1alpha1.ValidatingAdmissionPolicyBinding, opts v1.CreateOptions) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	result = &v1alpha1.ValidatingAdmissionPolicyBinding{}
    -	err = c.client.Post().
    -		Resource("validatingadmissionpolicybindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingAdmissionPolicyBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a validatingAdmissionPolicyBinding and updates it. Returns the server's representation of the validatingAdmissionPolicyBinding, and an error, if there is any.
    -func (c *validatingAdmissionPolicyBindings) Update(ctx context.Context, validatingAdmissionPolicyBinding *v1alpha1.ValidatingAdmissionPolicyBinding, opts v1.UpdateOptions) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	result = &v1alpha1.ValidatingAdmissionPolicyBinding{}
    -	err = c.client.Put().
    -		Resource("validatingadmissionpolicybindings").
    -		Name(validatingAdmissionPolicyBinding.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingAdmissionPolicyBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the validatingAdmissionPolicyBinding and deletes it. Returns an error if one occurs.
    -func (c *validatingAdmissionPolicyBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("validatingadmissionpolicybindings").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *validatingAdmissionPolicyBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("validatingadmissionpolicybindings").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched validatingAdmissionPolicyBinding.
    -func (c *validatingAdmissionPolicyBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	result = &v1alpha1.ValidatingAdmissionPolicyBinding{}
    -	err = c.client.Patch(pt).
    -		Resource("validatingadmissionpolicybindings").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingAdmissionPolicyBinding.
    -func (c *validatingAdmissionPolicyBindings) Apply(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1alpha1.ValidatingAdmissionPolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	if validatingAdmissionPolicyBinding == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicyBinding provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(validatingAdmissionPolicyBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingAdmissionPolicyBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicyBinding.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.ValidatingAdmissionPolicyBinding{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("validatingadmissionpolicybindings").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/admissionregistration_client.go
    index 5a0a17d9bea7..16c42b0ec6b3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/admissionregistration_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/admissionregistration_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -100,10 +100,10 @@ func New(c rest.Interface) *AdmissionregistrationV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := admissionregistrationv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_admissionregistration_client.go
    index badfbf0346ba..158303f8516c 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_admissionregistration_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_admissionregistration_client.go
    @@ -29,19 +29,19 @@ type FakeAdmissionregistrationV1beta1 struct {
     }
     
     func (c *FakeAdmissionregistrationV1beta1) MutatingWebhookConfigurations() v1beta1.MutatingWebhookConfigurationInterface {
    -	return &FakeMutatingWebhookConfigurations{c}
    +	return newFakeMutatingWebhookConfigurations(c)
     }
     
     func (c *FakeAdmissionregistrationV1beta1) ValidatingAdmissionPolicies() v1beta1.ValidatingAdmissionPolicyInterface {
    -	return &FakeValidatingAdmissionPolicies{c}
    +	return newFakeValidatingAdmissionPolicies(c)
     }
     
     func (c *FakeAdmissionregistrationV1beta1) ValidatingAdmissionPolicyBindings() v1beta1.ValidatingAdmissionPolicyBindingInterface {
    -	return &FakeValidatingAdmissionPolicyBindings{c}
    +	return newFakeValidatingAdmissionPolicyBindings(c)
     }
     
     func (c *FakeAdmissionregistrationV1beta1) ValidatingWebhookConfigurations() v1beta1.ValidatingWebhookConfigurationInterface {
    -	return &FakeValidatingWebhookConfigurations{c}
    +	return newFakeValidatingWebhookConfigurations(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_mutatingwebhookconfiguration.go
    index 9d85aff37fbb..c55b2e4f68a1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_mutatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_mutatingwebhookconfiguration.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	admissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1"
     )
     
    -// FakeMutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface
    -type FakeMutatingWebhookConfigurations struct {
    +// fakeMutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface
    +type fakeMutatingWebhookConfigurations struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.MutatingWebhookConfiguration, *v1beta1.MutatingWebhookConfigurationList, *admissionregistrationv1beta1.MutatingWebhookConfigurationApplyConfiguration]
     	Fake *FakeAdmissionregistrationV1beta1
     }
     
    -var mutatingwebhookconfigurationsResource = v1beta1.SchemeGroupVersion.WithResource("mutatingwebhookconfigurations")
    -
    -var mutatingwebhookconfigurationsKind = v1beta1.SchemeGroupVersion.WithKind("MutatingWebhookConfiguration")
    -
    -// Get takes name of the mutatingWebhookConfiguration, and returns the corresponding mutatingWebhookConfiguration object, and an error if there is any.
    -func (c *FakeMutatingWebhookConfigurations) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.MutatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(mutatingwebhookconfigurationsResource, name), &v1beta1.MutatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.MutatingWebhookConfiguration), err
    -}
    -
    -// List takes label and field selectors, and returns the list of MutatingWebhookConfigurations that match those selectors.
    -func (c *FakeMutatingWebhookConfigurations) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.MutatingWebhookConfigurationList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(mutatingwebhookconfigurationsResource, mutatingwebhookconfigurationsKind, opts), &v1beta1.MutatingWebhookConfigurationList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.MutatingWebhookConfigurationList{ListMeta: obj.(*v1beta1.MutatingWebhookConfigurationList).ListMeta}
    -	for _, item := range obj.(*v1beta1.MutatingWebhookConfigurationList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested mutatingWebhookConfigurations.
    -func (c *FakeMutatingWebhookConfigurations) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(mutatingwebhookconfigurationsResource, opts))
    -}
    -
    -// Create takes the representation of a mutatingWebhookConfiguration and creates it.  Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
    -func (c *FakeMutatingWebhookConfigurations) Create(ctx context.Context, mutatingWebhookConfiguration *v1beta1.MutatingWebhookConfiguration, opts v1.CreateOptions) (result *v1beta1.MutatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &v1beta1.MutatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.MutatingWebhookConfiguration), err
    -}
    -
    -// Update takes the representation of a mutatingWebhookConfiguration and updates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
    -func (c *FakeMutatingWebhookConfigurations) Update(ctx context.Context, mutatingWebhookConfiguration *v1beta1.MutatingWebhookConfiguration, opts v1.UpdateOptions) (result *v1beta1.MutatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &v1beta1.MutatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.MutatingWebhookConfiguration), err
    -}
    -
    -// Delete takes name of the mutatingWebhookConfiguration and deletes it. Returns an error if one occurs.
    -func (c *FakeMutatingWebhookConfigurations) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(mutatingwebhookconfigurationsResource, name, opts), &v1beta1.MutatingWebhookConfiguration{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeMutatingWebhookConfigurations) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(mutatingwebhookconfigurationsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.MutatingWebhookConfigurationList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched mutatingWebhookConfiguration.
    -func (c *FakeMutatingWebhookConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.MutatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(mutatingwebhookconfigurationsResource, name, pt, data, subresources...), &v1beta1.MutatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.MutatingWebhookConfiguration), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied mutatingWebhookConfiguration.
    -func (c *FakeMutatingWebhookConfigurations) Apply(ctx context.Context, mutatingWebhookConfiguration *admissionregistrationv1beta1.MutatingWebhookConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.MutatingWebhookConfiguration, err error) {
    -	if mutatingWebhookConfiguration == nil {
    -		return nil, fmt.Errorf("mutatingWebhookConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(mutatingWebhookConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := mutatingWebhookConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("mutatingWebhookConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(mutatingwebhookconfigurationsResource, *name, types.ApplyPatchType, data), &v1beta1.MutatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeMutatingWebhookConfigurations(fake *FakeAdmissionregistrationV1beta1) typedadmissionregistrationv1beta1.MutatingWebhookConfigurationInterface {
    +	return &fakeMutatingWebhookConfigurations{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.MutatingWebhookConfiguration, *v1beta1.MutatingWebhookConfigurationList, *admissionregistrationv1beta1.MutatingWebhookConfigurationApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("mutatingwebhookconfigurations"),
    +			v1beta1.SchemeGroupVersion.WithKind("MutatingWebhookConfiguration"),
    +			func() *v1beta1.MutatingWebhookConfiguration { return &v1beta1.MutatingWebhookConfiguration{} },
    +			func() *v1beta1.MutatingWebhookConfigurationList { return &v1beta1.MutatingWebhookConfigurationList{} },
    +			func(dst, src *v1beta1.MutatingWebhookConfigurationList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.MutatingWebhookConfigurationList) []*v1beta1.MutatingWebhookConfiguration {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.MutatingWebhookConfigurationList, items []*v1beta1.MutatingWebhookConfiguration) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.MutatingWebhookConfiguration), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingadmissionpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingadmissionpolicy.go
    index 90cb4ff6ca86..e98a5655d51e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingadmissionpolicy.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingadmissionpolicy.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	admissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1"
     )
     
    -// FakeValidatingAdmissionPolicies implements ValidatingAdmissionPolicyInterface
    -type FakeValidatingAdmissionPolicies struct {
    +// fakeValidatingAdmissionPolicies implements ValidatingAdmissionPolicyInterface
    +type fakeValidatingAdmissionPolicies struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ValidatingAdmissionPolicy, *v1beta1.ValidatingAdmissionPolicyList, *admissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration]
     	Fake *FakeAdmissionregistrationV1beta1
     }
     
    -var validatingadmissionpoliciesResource = v1beta1.SchemeGroupVersion.WithResource("validatingadmissionpolicies")
    -
    -var validatingadmissionpoliciesKind = v1beta1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicy")
    -
    -// Get takes name of the validatingAdmissionPolicy, and returns the corresponding validatingAdmissionPolicy object, and an error if there is any.
    -func (c *FakeValidatingAdmissionPolicies) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(validatingadmissionpoliciesResource, name), &v1beta1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicy), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingAdmissionPolicies that match those selectors.
    -func (c *FakeValidatingAdmissionPolicies) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ValidatingAdmissionPolicyList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(validatingadmissionpoliciesResource, validatingadmissionpoliciesKind, opts), &v1beta1.ValidatingAdmissionPolicyList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.ValidatingAdmissionPolicyList{ListMeta: obj.(*v1beta1.ValidatingAdmissionPolicyList).ListMeta}
    -	for _, item := range obj.(*v1beta1.ValidatingAdmissionPolicyList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingAdmissionPolicies.
    -func (c *FakeValidatingAdmissionPolicies) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(validatingadmissionpoliciesResource, opts))
    -}
    -
    -// Create takes the representation of a validatingAdmissionPolicy and creates it.  Returns the server's representation of the validatingAdmissionPolicy, and an error, if there is any.
    -func (c *FakeValidatingAdmissionPolicies) Create(ctx context.Context, validatingAdmissionPolicy *v1beta1.ValidatingAdmissionPolicy, opts v1.CreateOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(validatingadmissionpoliciesResource, validatingAdmissionPolicy), &v1beta1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicy), err
    -}
    -
    -// Update takes the representation of a validatingAdmissionPolicy and updates it. Returns the server's representation of the validatingAdmissionPolicy, and an error, if there is any.
    -func (c *FakeValidatingAdmissionPolicies) Update(ctx context.Context, validatingAdmissionPolicy *v1beta1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(validatingadmissionpoliciesResource, validatingAdmissionPolicy), &v1beta1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicy), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeValidatingAdmissionPolicies) UpdateStatus(ctx context.Context, validatingAdmissionPolicy *v1beta1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (*v1beta1.ValidatingAdmissionPolicy, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(validatingadmissionpoliciesResource, "status", validatingAdmissionPolicy), &v1beta1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicy), err
    -}
    -
    -// Delete takes name of the validatingAdmissionPolicy and deletes it. Returns an error if one occurs.
    -func (c *FakeValidatingAdmissionPolicies) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(validatingadmissionpoliciesResource, name, opts), &v1beta1.ValidatingAdmissionPolicy{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeValidatingAdmissionPolicies) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(validatingadmissionpoliciesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.ValidatingAdmissionPolicyList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched validatingAdmissionPolicy.
    -func (c *FakeValidatingAdmissionPolicies) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingadmissionpoliciesResource, name, pt, data, subresources...), &v1beta1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicy), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingAdmissionPolicy.
    -func (c *FakeValidatingAdmissionPolicies) Apply(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	if validatingAdmissionPolicy == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(validatingAdmissionPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingAdmissionPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingadmissionpoliciesResource, *name, types.ApplyPatchType, data), &v1beta1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicy), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeValidatingAdmissionPolicies) ApplyStatus(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	if validatingAdmissionPolicy == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(validatingAdmissionPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingAdmissionPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingadmissionpoliciesResource, *name, types.ApplyPatchType, data, "status"), &v1beta1.ValidatingAdmissionPolicy{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeValidatingAdmissionPolicies(fake *FakeAdmissionregistrationV1beta1) typedadmissionregistrationv1beta1.ValidatingAdmissionPolicyInterface {
    +	return &fakeValidatingAdmissionPolicies{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ValidatingAdmissionPolicy, *v1beta1.ValidatingAdmissionPolicyList, *admissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("validatingadmissionpolicies"),
    +			v1beta1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicy"),
    +			func() *v1beta1.ValidatingAdmissionPolicy { return &v1beta1.ValidatingAdmissionPolicy{} },
    +			func() *v1beta1.ValidatingAdmissionPolicyList { return &v1beta1.ValidatingAdmissionPolicyList{} },
    +			func(dst, src *v1beta1.ValidatingAdmissionPolicyList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ValidatingAdmissionPolicyList) []*v1beta1.ValidatingAdmissionPolicy {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.ValidatingAdmissionPolicyList, items []*v1beta1.ValidatingAdmissionPolicy) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicy), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingadmissionpolicybinding.go
    index f771f81f301b..3f0f865e9e17 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingadmissionpolicybinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingadmissionpolicybinding.go
    @@ -19,127 +19,37 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	admissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1"
     )
     
    -// FakeValidatingAdmissionPolicyBindings implements ValidatingAdmissionPolicyBindingInterface
    -type FakeValidatingAdmissionPolicyBindings struct {
    +// fakeValidatingAdmissionPolicyBindings implements ValidatingAdmissionPolicyBindingInterface
    +type fakeValidatingAdmissionPolicyBindings struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ValidatingAdmissionPolicyBinding, *v1beta1.ValidatingAdmissionPolicyBindingList, *admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingApplyConfiguration]
     	Fake *FakeAdmissionregistrationV1beta1
     }
     
    -var validatingadmissionpolicybindingsResource = v1beta1.SchemeGroupVersion.WithResource("validatingadmissionpolicybindings")
    -
    -var validatingadmissionpolicybindingsKind = v1beta1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBinding")
    -
    -// Get takes name of the validatingAdmissionPolicyBinding, and returns the corresponding validatingAdmissionPolicyBinding object, and an error if there is any.
    -func (c *FakeValidatingAdmissionPolicyBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(validatingadmissionpolicybindingsResource, name), &v1beta1.ValidatingAdmissionPolicyBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicyBinding), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingAdmissionPolicyBindings that match those selectors.
    -func (c *FakeValidatingAdmissionPolicyBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ValidatingAdmissionPolicyBindingList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(validatingadmissionpolicybindingsResource, validatingadmissionpolicybindingsKind, opts), &v1beta1.ValidatingAdmissionPolicyBindingList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.ValidatingAdmissionPolicyBindingList{ListMeta: obj.(*v1beta1.ValidatingAdmissionPolicyBindingList).ListMeta}
    -	for _, item := range obj.(*v1beta1.ValidatingAdmissionPolicyBindingList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingAdmissionPolicyBindings.
    -func (c *FakeValidatingAdmissionPolicyBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(validatingadmissionpolicybindingsResource, opts))
    -}
    -
    -// Create takes the representation of a validatingAdmissionPolicyBinding and creates it.  Returns the server's representation of the validatingAdmissionPolicyBinding, and an error, if there is any.
    -func (c *FakeValidatingAdmissionPolicyBindings) Create(ctx context.Context, validatingAdmissionPolicyBinding *v1beta1.ValidatingAdmissionPolicyBinding, opts v1.CreateOptions) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(validatingadmissionpolicybindingsResource, validatingAdmissionPolicyBinding), &v1beta1.ValidatingAdmissionPolicyBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicyBinding), err
    -}
    -
    -// Update takes the representation of a validatingAdmissionPolicyBinding and updates it. Returns the server's representation of the validatingAdmissionPolicyBinding, and an error, if there is any.
    -func (c *FakeValidatingAdmissionPolicyBindings) Update(ctx context.Context, validatingAdmissionPolicyBinding *v1beta1.ValidatingAdmissionPolicyBinding, opts v1.UpdateOptions) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(validatingadmissionpolicybindingsResource, validatingAdmissionPolicyBinding), &v1beta1.ValidatingAdmissionPolicyBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicyBinding), err
    -}
    -
    -// Delete takes name of the validatingAdmissionPolicyBinding and deletes it. Returns an error if one occurs.
    -func (c *FakeValidatingAdmissionPolicyBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(validatingadmissionpolicybindingsResource, name, opts), &v1beta1.ValidatingAdmissionPolicyBinding{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeValidatingAdmissionPolicyBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(validatingadmissionpolicybindingsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.ValidatingAdmissionPolicyBindingList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched validatingAdmissionPolicyBinding.
    -func (c *FakeValidatingAdmissionPolicyBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingadmissionpolicybindingsResource, name, pt, data, subresources...), &v1beta1.ValidatingAdmissionPolicyBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicyBinding), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingAdmissionPolicyBinding.
    -func (c *FakeValidatingAdmissionPolicyBindings) Apply(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	if validatingAdmissionPolicyBinding == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicyBinding provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(validatingAdmissionPolicyBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingAdmissionPolicyBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicyBinding.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingadmissionpolicybindingsResource, *name, types.ApplyPatchType, data), &v1beta1.ValidatingAdmissionPolicyBinding{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeValidatingAdmissionPolicyBindings(fake *FakeAdmissionregistrationV1beta1) typedadmissionregistrationv1beta1.ValidatingAdmissionPolicyBindingInterface {
    +	return &fakeValidatingAdmissionPolicyBindings{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ValidatingAdmissionPolicyBinding, *v1beta1.ValidatingAdmissionPolicyBindingList, *admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("validatingadmissionpolicybindings"),
    +			v1beta1.SchemeGroupVersion.WithKind("ValidatingAdmissionPolicyBinding"),
    +			func() *v1beta1.ValidatingAdmissionPolicyBinding { return &v1beta1.ValidatingAdmissionPolicyBinding{} },
    +			func() *v1beta1.ValidatingAdmissionPolicyBindingList {
    +				return &v1beta1.ValidatingAdmissionPolicyBindingList{}
    +			},
    +			func(dst, src *v1beta1.ValidatingAdmissionPolicyBindingList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ValidatingAdmissionPolicyBindingList) []*v1beta1.ValidatingAdmissionPolicyBinding {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.ValidatingAdmissionPolicyBindingList, items []*v1beta1.ValidatingAdmissionPolicyBinding) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicyBinding), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingwebhookconfiguration.go
    index 41e3a7c1ee8d..9a83013729ab 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingwebhookconfiguration.go
    @@ -19,127 +19,37 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	admissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedadmissionregistrationv1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1"
     )
     
    -// FakeValidatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface
    -type FakeValidatingWebhookConfigurations struct {
    +// fakeValidatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface
    +type fakeValidatingWebhookConfigurations struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ValidatingWebhookConfiguration, *v1beta1.ValidatingWebhookConfigurationList, *admissionregistrationv1beta1.ValidatingWebhookConfigurationApplyConfiguration]
     	Fake *FakeAdmissionregistrationV1beta1
     }
     
    -var validatingwebhookconfigurationsResource = v1beta1.SchemeGroupVersion.WithResource("validatingwebhookconfigurations")
    -
    -var validatingwebhookconfigurationsKind = v1beta1.SchemeGroupVersion.WithKind("ValidatingWebhookConfiguration")
    -
    -// Get takes name of the validatingWebhookConfiguration, and returns the corresponding validatingWebhookConfiguration object, and an error if there is any.
    -func (c *FakeValidatingWebhookConfigurations) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ValidatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(validatingwebhookconfigurationsResource, name), &v1beta1.ValidatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingWebhookConfiguration), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingWebhookConfigurations that match those selectors.
    -func (c *FakeValidatingWebhookConfigurations) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ValidatingWebhookConfigurationList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(validatingwebhookconfigurationsResource, validatingwebhookconfigurationsKind, opts), &v1beta1.ValidatingWebhookConfigurationList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.ValidatingWebhookConfigurationList{ListMeta: obj.(*v1beta1.ValidatingWebhookConfigurationList).ListMeta}
    -	for _, item := range obj.(*v1beta1.ValidatingWebhookConfigurationList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingWebhookConfigurations.
    -func (c *FakeValidatingWebhookConfigurations) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(validatingwebhookconfigurationsResource, opts))
    -}
    -
    -// Create takes the representation of a validatingWebhookConfiguration and creates it.  Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
    -func (c *FakeValidatingWebhookConfigurations) Create(ctx context.Context, validatingWebhookConfiguration *v1beta1.ValidatingWebhookConfiguration, opts v1.CreateOptions) (result *v1beta1.ValidatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &v1beta1.ValidatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingWebhookConfiguration), err
    -}
    -
    -// Update takes the representation of a validatingWebhookConfiguration and updates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
    -func (c *FakeValidatingWebhookConfigurations) Update(ctx context.Context, validatingWebhookConfiguration *v1beta1.ValidatingWebhookConfiguration, opts v1.UpdateOptions) (result *v1beta1.ValidatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &v1beta1.ValidatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingWebhookConfiguration), err
    -}
    -
    -// Delete takes name of the validatingWebhookConfiguration and deletes it. Returns an error if one occurs.
    -func (c *FakeValidatingWebhookConfigurations) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(validatingwebhookconfigurationsResource, name, opts), &v1beta1.ValidatingWebhookConfiguration{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeValidatingWebhookConfigurations) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(validatingwebhookconfigurationsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.ValidatingWebhookConfigurationList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched validatingWebhookConfiguration.
    -func (c *FakeValidatingWebhookConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ValidatingWebhookConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingwebhookconfigurationsResource, name, pt, data, subresources...), &v1beta1.ValidatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ValidatingWebhookConfiguration), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingWebhookConfiguration.
    -func (c *FakeValidatingWebhookConfigurations) Apply(ctx context.Context, validatingWebhookConfiguration *admissionregistrationv1beta1.ValidatingWebhookConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingWebhookConfiguration, err error) {
    -	if validatingWebhookConfiguration == nil {
    -		return nil, fmt.Errorf("validatingWebhookConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(validatingWebhookConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingWebhookConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingWebhookConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(validatingwebhookconfigurationsResource, *name, types.ApplyPatchType, data), &v1beta1.ValidatingWebhookConfiguration{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeValidatingWebhookConfigurations(fake *FakeAdmissionregistrationV1beta1) typedadmissionregistrationv1beta1.ValidatingWebhookConfigurationInterface {
    +	return &fakeValidatingWebhookConfigurations{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ValidatingWebhookConfiguration, *v1beta1.ValidatingWebhookConfigurationList, *admissionregistrationv1beta1.ValidatingWebhookConfigurationApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("validatingwebhookconfigurations"),
    +			v1beta1.SchemeGroupVersion.WithKind("ValidatingWebhookConfiguration"),
    +			func() *v1beta1.ValidatingWebhookConfiguration { return &v1beta1.ValidatingWebhookConfiguration{} },
    +			func() *v1beta1.ValidatingWebhookConfigurationList {
    +				return &v1beta1.ValidatingWebhookConfigurationList{}
    +			},
    +			func(dst, src *v1beta1.ValidatingWebhookConfigurationList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ValidatingWebhookConfigurationList) []*v1beta1.ValidatingWebhookConfiguration {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.ValidatingWebhookConfigurationList, items []*v1beta1.ValidatingWebhookConfiguration) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.ValidatingWebhookConfiguration), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    index ca6bb8bd503c..17e3541cc3f1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	admissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    +	applyconfigurationsadmissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // MutatingWebhookConfigurationsGetter has a method to return a MutatingWebhookConfigurationInterface.
    @@ -41,157 +38,38 @@ type MutatingWebhookConfigurationsGetter interface {
     
     // MutatingWebhookConfigurationInterface has methods to work with MutatingWebhookConfiguration resources.
     type MutatingWebhookConfigurationInterface interface {
    -	Create(ctx context.Context, mutatingWebhookConfiguration *v1beta1.MutatingWebhookConfiguration, opts v1.CreateOptions) (*v1beta1.MutatingWebhookConfiguration, error)
    -	Update(ctx context.Context, mutatingWebhookConfiguration *v1beta1.MutatingWebhookConfiguration, opts v1.UpdateOptions) (*v1beta1.MutatingWebhookConfiguration, error)
    +	Create(ctx context.Context, mutatingWebhookConfiguration *admissionregistrationv1beta1.MutatingWebhookConfiguration, opts v1.CreateOptions) (*admissionregistrationv1beta1.MutatingWebhookConfiguration, error)
    +	Update(ctx context.Context, mutatingWebhookConfiguration *admissionregistrationv1beta1.MutatingWebhookConfiguration, opts v1.UpdateOptions) (*admissionregistrationv1beta1.MutatingWebhookConfiguration, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.MutatingWebhookConfiguration, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.MutatingWebhookConfigurationList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*admissionregistrationv1beta1.MutatingWebhookConfiguration, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*admissionregistrationv1beta1.MutatingWebhookConfigurationList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.MutatingWebhookConfiguration, err error)
    -	Apply(ctx context.Context, mutatingWebhookConfiguration *admissionregistrationv1beta1.MutatingWebhookConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.MutatingWebhookConfiguration, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *admissionregistrationv1beta1.MutatingWebhookConfiguration, err error)
    +	Apply(ctx context.Context, mutatingWebhookConfiguration *applyconfigurationsadmissionregistrationv1beta1.MutatingWebhookConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *admissionregistrationv1beta1.MutatingWebhookConfiguration, err error)
     	MutatingWebhookConfigurationExpansion
     }
     
     // mutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface
     type mutatingWebhookConfigurations struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1beta1.MutatingWebhookConfiguration, *admissionregistrationv1beta1.MutatingWebhookConfigurationList, *applyconfigurationsadmissionregistrationv1beta1.MutatingWebhookConfigurationApplyConfiguration]
     }
     
     // newMutatingWebhookConfigurations returns a MutatingWebhookConfigurations
     func newMutatingWebhookConfigurations(c *AdmissionregistrationV1beta1Client) *mutatingWebhookConfigurations {
     	return &mutatingWebhookConfigurations{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1beta1.MutatingWebhookConfiguration, *admissionregistrationv1beta1.MutatingWebhookConfigurationList, *applyconfigurationsadmissionregistrationv1beta1.MutatingWebhookConfigurationApplyConfiguration](
    +			"mutatingwebhookconfigurations",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1beta1.MutatingWebhookConfiguration {
    +				return &admissionregistrationv1beta1.MutatingWebhookConfiguration{}
    +			},
    +			func() *admissionregistrationv1beta1.MutatingWebhookConfigurationList {
    +				return &admissionregistrationv1beta1.MutatingWebhookConfigurationList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1beta1.MutatingWebhookConfiguration](),
    +		),
     	}
     }
    -
    -// Get takes name of the mutatingWebhookConfiguration, and returns the corresponding mutatingWebhookConfiguration object, and an error if there is any.
    -func (c *mutatingWebhookConfigurations) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.MutatingWebhookConfiguration, err error) {
    -	result = &v1beta1.MutatingWebhookConfiguration{}
    -	err = c.client.Get().
    -		Resource("mutatingwebhookconfigurations").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of MutatingWebhookConfigurations that match those selectors.
    -func (c *mutatingWebhookConfigurations) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.MutatingWebhookConfigurationList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.MutatingWebhookConfigurationList{}
    -	err = c.client.Get().
    -		Resource("mutatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested mutatingWebhookConfigurations.
    -func (c *mutatingWebhookConfigurations) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("mutatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a mutatingWebhookConfiguration and creates it.  Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
    -func (c *mutatingWebhookConfigurations) Create(ctx context.Context, mutatingWebhookConfiguration *v1beta1.MutatingWebhookConfiguration, opts v1.CreateOptions) (result *v1beta1.MutatingWebhookConfiguration, err error) {
    -	result = &v1beta1.MutatingWebhookConfiguration{}
    -	err = c.client.Post().
    -		Resource("mutatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(mutatingWebhookConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a mutatingWebhookConfiguration and updates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any.
    -func (c *mutatingWebhookConfigurations) Update(ctx context.Context, mutatingWebhookConfiguration *v1beta1.MutatingWebhookConfiguration, opts v1.UpdateOptions) (result *v1beta1.MutatingWebhookConfiguration, err error) {
    -	result = &v1beta1.MutatingWebhookConfiguration{}
    -	err = c.client.Put().
    -		Resource("mutatingwebhookconfigurations").
    -		Name(mutatingWebhookConfiguration.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(mutatingWebhookConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the mutatingWebhookConfiguration and deletes it. Returns an error if one occurs.
    -func (c *mutatingWebhookConfigurations) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("mutatingwebhookconfigurations").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *mutatingWebhookConfigurations) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("mutatingwebhookconfigurations").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched mutatingWebhookConfiguration.
    -func (c *mutatingWebhookConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.MutatingWebhookConfiguration, err error) {
    -	result = &v1beta1.MutatingWebhookConfiguration{}
    -	err = c.client.Patch(pt).
    -		Resource("mutatingwebhookconfigurations").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied mutatingWebhookConfiguration.
    -func (c *mutatingWebhookConfigurations) Apply(ctx context.Context, mutatingWebhookConfiguration *admissionregistrationv1beta1.MutatingWebhookConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.MutatingWebhookConfiguration, err error) {
    -	if mutatingWebhookConfiguration == nil {
    -		return nil, fmt.Errorf("mutatingWebhookConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(mutatingWebhookConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := mutatingWebhookConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("mutatingWebhookConfiguration.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.MutatingWebhookConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("mutatingwebhookconfigurations").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingadmissionpolicy.go
    index bea51b587f62..2c663ba1e5f8 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingadmissionpolicy.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingadmissionpolicy.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	admissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    +	applyconfigurationsadmissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ValidatingAdmissionPoliciesGetter has a method to return a ValidatingAdmissionPolicyInterface.
    @@ -41,203 +38,42 @@ type ValidatingAdmissionPoliciesGetter interface {
     
     // ValidatingAdmissionPolicyInterface has methods to work with ValidatingAdmissionPolicy resources.
     type ValidatingAdmissionPolicyInterface interface {
    -	Create(ctx context.Context, validatingAdmissionPolicy *v1beta1.ValidatingAdmissionPolicy, opts v1.CreateOptions) (*v1beta1.ValidatingAdmissionPolicy, error)
    -	Update(ctx context.Context, validatingAdmissionPolicy *v1beta1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (*v1beta1.ValidatingAdmissionPolicy, error)
    -	UpdateStatus(ctx context.Context, validatingAdmissionPolicy *v1beta1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (*v1beta1.ValidatingAdmissionPolicy, error)
    +	Create(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1beta1.ValidatingAdmissionPolicy, opts v1.CreateOptions) (*admissionregistrationv1beta1.ValidatingAdmissionPolicy, error)
    +	Update(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1beta1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (*admissionregistrationv1beta1.ValidatingAdmissionPolicy, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1beta1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (*admissionregistrationv1beta1.ValidatingAdmissionPolicy, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.ValidatingAdmissionPolicy, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ValidatingAdmissionPolicyList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*admissionregistrationv1beta1.ValidatingAdmissionPolicy, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*admissionregistrationv1beta1.ValidatingAdmissionPolicyList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ValidatingAdmissionPolicy, err error)
    -	Apply(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error)
    -	ApplyStatus(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *admissionregistrationv1beta1.ValidatingAdmissionPolicy, err error)
    +	Apply(ctx context.Context, validatingAdmissionPolicy *applyconfigurationsadmissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *admissionregistrationv1beta1.ValidatingAdmissionPolicy, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, validatingAdmissionPolicy *applyconfigurationsadmissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *admissionregistrationv1beta1.ValidatingAdmissionPolicy, err error)
     	ValidatingAdmissionPolicyExpansion
     }
     
     // validatingAdmissionPolicies implements ValidatingAdmissionPolicyInterface
     type validatingAdmissionPolicies struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1beta1.ValidatingAdmissionPolicy, *admissionregistrationv1beta1.ValidatingAdmissionPolicyList, *applyconfigurationsadmissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration]
     }
     
     // newValidatingAdmissionPolicies returns a ValidatingAdmissionPolicies
     func newValidatingAdmissionPolicies(c *AdmissionregistrationV1beta1Client) *validatingAdmissionPolicies {
     	return &validatingAdmissionPolicies{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1beta1.ValidatingAdmissionPolicy, *admissionregistrationv1beta1.ValidatingAdmissionPolicyList, *applyconfigurationsadmissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration](
    +			"validatingadmissionpolicies",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1beta1.ValidatingAdmissionPolicy {
    +				return &admissionregistrationv1beta1.ValidatingAdmissionPolicy{}
    +			},
    +			func() *admissionregistrationv1beta1.ValidatingAdmissionPolicyList {
    +				return &admissionregistrationv1beta1.ValidatingAdmissionPolicyList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1beta1.ValidatingAdmissionPolicy](),
    +		),
     	}
     }
    -
    -// Get takes name of the validatingAdmissionPolicy, and returns the corresponding validatingAdmissionPolicy object, and an error if there is any.
    -func (c *validatingAdmissionPolicies) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	result = &v1beta1.ValidatingAdmissionPolicy{}
    -	err = c.client.Get().
    -		Resource("validatingadmissionpolicies").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingAdmissionPolicies that match those selectors.
    -func (c *validatingAdmissionPolicies) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ValidatingAdmissionPolicyList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.ValidatingAdmissionPolicyList{}
    -	err = c.client.Get().
    -		Resource("validatingadmissionpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingAdmissionPolicies.
    -func (c *validatingAdmissionPolicies) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("validatingadmissionpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a validatingAdmissionPolicy and creates it.  Returns the server's representation of the validatingAdmissionPolicy, and an error, if there is any.
    -func (c *validatingAdmissionPolicies) Create(ctx context.Context, validatingAdmissionPolicy *v1beta1.ValidatingAdmissionPolicy, opts v1.CreateOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	result = &v1beta1.ValidatingAdmissionPolicy{}
    -	err = c.client.Post().
    -		Resource("validatingadmissionpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingAdmissionPolicy).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a validatingAdmissionPolicy and updates it. Returns the server's representation of the validatingAdmissionPolicy, and an error, if there is any.
    -func (c *validatingAdmissionPolicies) Update(ctx context.Context, validatingAdmissionPolicy *v1beta1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	result = &v1beta1.ValidatingAdmissionPolicy{}
    -	err = c.client.Put().
    -		Resource("validatingadmissionpolicies").
    -		Name(validatingAdmissionPolicy.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingAdmissionPolicy).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *validatingAdmissionPolicies) UpdateStatus(ctx context.Context, validatingAdmissionPolicy *v1beta1.ValidatingAdmissionPolicy, opts v1.UpdateOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	result = &v1beta1.ValidatingAdmissionPolicy{}
    -	err = c.client.Put().
    -		Resource("validatingadmissionpolicies").
    -		Name(validatingAdmissionPolicy.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingAdmissionPolicy).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the validatingAdmissionPolicy and deletes it. Returns an error if one occurs.
    -func (c *validatingAdmissionPolicies) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("validatingadmissionpolicies").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *validatingAdmissionPolicies) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("validatingadmissionpolicies").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched validatingAdmissionPolicy.
    -func (c *validatingAdmissionPolicies) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	result = &v1beta1.ValidatingAdmissionPolicy{}
    -	err = c.client.Patch(pt).
    -		Resource("validatingadmissionpolicies").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingAdmissionPolicy.
    -func (c *validatingAdmissionPolicies) Apply(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	if validatingAdmissionPolicy == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(validatingAdmissionPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingAdmissionPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.ValidatingAdmissionPolicy{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("validatingadmissionpolicies").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *validatingAdmissionPolicies) ApplyStatus(ctx context.Context, validatingAdmissionPolicy *admissionregistrationv1beta1.ValidatingAdmissionPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingAdmissionPolicy, err error) {
    -	if validatingAdmissionPolicy == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(validatingAdmissionPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := validatingAdmissionPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicy.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.ValidatingAdmissionPolicy{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("validatingadmissionpolicies").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    index bba37bb0477b..196cc8f0a4cc 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	admissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    +	applyconfigurationsadmissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ValidatingAdmissionPolicyBindingsGetter has a method to return a ValidatingAdmissionPolicyBindingInterface.
    @@ -41,157 +38,38 @@ type ValidatingAdmissionPolicyBindingsGetter interface {
     
     // ValidatingAdmissionPolicyBindingInterface has methods to work with ValidatingAdmissionPolicyBinding resources.
     type ValidatingAdmissionPolicyBindingInterface interface {
    -	Create(ctx context.Context, validatingAdmissionPolicyBinding *v1beta1.ValidatingAdmissionPolicyBinding, opts v1.CreateOptions) (*v1beta1.ValidatingAdmissionPolicyBinding, error)
    -	Update(ctx context.Context, validatingAdmissionPolicyBinding *v1beta1.ValidatingAdmissionPolicyBinding, opts v1.UpdateOptions) (*v1beta1.ValidatingAdmissionPolicyBinding, error)
    +	Create(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, opts v1.CreateOptions) (*admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, error)
    +	Update(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, opts v1.UpdateOptions) (*admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.ValidatingAdmissionPolicyBinding, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ValidatingAdmissionPolicyBindingList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error)
    -	Apply(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, err error)
    +	Apply(ctx context.Context, validatingAdmissionPolicyBinding *applyconfigurationsadmissionregistrationv1beta1.ValidatingAdmissionPolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, err error)
     	ValidatingAdmissionPolicyBindingExpansion
     }
     
     // validatingAdmissionPolicyBindings implements ValidatingAdmissionPolicyBindingInterface
     type validatingAdmissionPolicyBindings struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, *admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingList, *applyconfigurationsadmissionregistrationv1beta1.ValidatingAdmissionPolicyBindingApplyConfiguration]
     }
     
     // newValidatingAdmissionPolicyBindings returns a ValidatingAdmissionPolicyBindings
     func newValidatingAdmissionPolicyBindings(c *AdmissionregistrationV1beta1Client) *validatingAdmissionPolicyBindings {
     	return &validatingAdmissionPolicyBindings{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, *admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingList, *applyconfigurationsadmissionregistrationv1beta1.ValidatingAdmissionPolicyBindingApplyConfiguration](
    +			"validatingadmissionpolicybindings",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding {
    +				return &admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding{}
    +			},
    +			func() *admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingList {
    +				return &admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding](),
    +		),
     	}
     }
    -
    -// Get takes name of the validatingAdmissionPolicyBinding, and returns the corresponding validatingAdmissionPolicyBinding object, and an error if there is any.
    -func (c *validatingAdmissionPolicyBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	result = &v1beta1.ValidatingAdmissionPolicyBinding{}
    -	err = c.client.Get().
    -		Resource("validatingadmissionpolicybindings").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingAdmissionPolicyBindings that match those selectors.
    -func (c *validatingAdmissionPolicyBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ValidatingAdmissionPolicyBindingList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.ValidatingAdmissionPolicyBindingList{}
    -	err = c.client.Get().
    -		Resource("validatingadmissionpolicybindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingAdmissionPolicyBindings.
    -func (c *validatingAdmissionPolicyBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("validatingadmissionpolicybindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a validatingAdmissionPolicyBinding and creates it.  Returns the server's representation of the validatingAdmissionPolicyBinding, and an error, if there is any.
    -func (c *validatingAdmissionPolicyBindings) Create(ctx context.Context, validatingAdmissionPolicyBinding *v1beta1.ValidatingAdmissionPolicyBinding, opts v1.CreateOptions) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	result = &v1beta1.ValidatingAdmissionPolicyBinding{}
    -	err = c.client.Post().
    -		Resource("validatingadmissionpolicybindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingAdmissionPolicyBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a validatingAdmissionPolicyBinding and updates it. Returns the server's representation of the validatingAdmissionPolicyBinding, and an error, if there is any.
    -func (c *validatingAdmissionPolicyBindings) Update(ctx context.Context, validatingAdmissionPolicyBinding *v1beta1.ValidatingAdmissionPolicyBinding, opts v1.UpdateOptions) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	result = &v1beta1.ValidatingAdmissionPolicyBinding{}
    -	err = c.client.Put().
    -		Resource("validatingadmissionpolicybindings").
    -		Name(validatingAdmissionPolicyBinding.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingAdmissionPolicyBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the validatingAdmissionPolicyBinding and deletes it. Returns an error if one occurs.
    -func (c *validatingAdmissionPolicyBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("validatingadmissionpolicybindings").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *validatingAdmissionPolicyBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("validatingadmissionpolicybindings").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched validatingAdmissionPolicyBinding.
    -func (c *validatingAdmissionPolicyBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	result = &v1beta1.ValidatingAdmissionPolicyBinding{}
    -	err = c.client.Patch(pt).
    -		Resource("validatingadmissionpolicybindings").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingAdmissionPolicyBinding.
    -func (c *validatingAdmissionPolicyBindings) Apply(ctx context.Context, validatingAdmissionPolicyBinding *admissionregistrationv1beta1.ValidatingAdmissionPolicyBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	if validatingAdmissionPolicyBinding == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicyBinding provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(validatingAdmissionPolicyBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingAdmissionPolicyBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingAdmissionPolicyBinding.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.ValidatingAdmissionPolicyBinding{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("validatingadmissionpolicybindings").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    index 5ba5974d7aa7..9f28346e8c87 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	admissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    +	applyconfigurationsadmissionregistrationv1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ValidatingWebhookConfigurationsGetter has a method to return a ValidatingWebhookConfigurationInterface.
    @@ -41,157 +38,38 @@ type ValidatingWebhookConfigurationsGetter interface {
     
     // ValidatingWebhookConfigurationInterface has methods to work with ValidatingWebhookConfiguration resources.
     type ValidatingWebhookConfigurationInterface interface {
    -	Create(ctx context.Context, validatingWebhookConfiguration *v1beta1.ValidatingWebhookConfiguration, opts v1.CreateOptions) (*v1beta1.ValidatingWebhookConfiguration, error)
    -	Update(ctx context.Context, validatingWebhookConfiguration *v1beta1.ValidatingWebhookConfiguration, opts v1.UpdateOptions) (*v1beta1.ValidatingWebhookConfiguration, error)
    +	Create(ctx context.Context, validatingWebhookConfiguration *admissionregistrationv1beta1.ValidatingWebhookConfiguration, opts v1.CreateOptions) (*admissionregistrationv1beta1.ValidatingWebhookConfiguration, error)
    +	Update(ctx context.Context, validatingWebhookConfiguration *admissionregistrationv1beta1.ValidatingWebhookConfiguration, opts v1.UpdateOptions) (*admissionregistrationv1beta1.ValidatingWebhookConfiguration, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.ValidatingWebhookConfiguration, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ValidatingWebhookConfigurationList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*admissionregistrationv1beta1.ValidatingWebhookConfiguration, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*admissionregistrationv1beta1.ValidatingWebhookConfigurationList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ValidatingWebhookConfiguration, err error)
    -	Apply(ctx context.Context, validatingWebhookConfiguration *admissionregistrationv1beta1.ValidatingWebhookConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingWebhookConfiguration, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *admissionregistrationv1beta1.ValidatingWebhookConfiguration, err error)
    +	Apply(ctx context.Context, validatingWebhookConfiguration *applyconfigurationsadmissionregistrationv1beta1.ValidatingWebhookConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *admissionregistrationv1beta1.ValidatingWebhookConfiguration, err error)
     	ValidatingWebhookConfigurationExpansion
     }
     
     // validatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface
     type validatingWebhookConfigurations struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*admissionregistrationv1beta1.ValidatingWebhookConfiguration, *admissionregistrationv1beta1.ValidatingWebhookConfigurationList, *applyconfigurationsadmissionregistrationv1beta1.ValidatingWebhookConfigurationApplyConfiguration]
     }
     
     // newValidatingWebhookConfigurations returns a ValidatingWebhookConfigurations
     func newValidatingWebhookConfigurations(c *AdmissionregistrationV1beta1Client) *validatingWebhookConfigurations {
     	return &validatingWebhookConfigurations{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*admissionregistrationv1beta1.ValidatingWebhookConfiguration, *admissionregistrationv1beta1.ValidatingWebhookConfigurationList, *applyconfigurationsadmissionregistrationv1beta1.ValidatingWebhookConfigurationApplyConfiguration](
    +			"validatingwebhookconfigurations",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *admissionregistrationv1beta1.ValidatingWebhookConfiguration {
    +				return &admissionregistrationv1beta1.ValidatingWebhookConfiguration{}
    +			},
    +			func() *admissionregistrationv1beta1.ValidatingWebhookConfigurationList {
    +				return &admissionregistrationv1beta1.ValidatingWebhookConfigurationList{}
    +			},
    +			gentype.PrefersProtobuf[*admissionregistrationv1beta1.ValidatingWebhookConfiguration](),
    +		),
     	}
     }
    -
    -// Get takes name of the validatingWebhookConfiguration, and returns the corresponding validatingWebhookConfiguration object, and an error if there is any.
    -func (c *validatingWebhookConfigurations) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ValidatingWebhookConfiguration, err error) {
    -	result = &v1beta1.ValidatingWebhookConfiguration{}
    -	err = c.client.Get().
    -		Resource("validatingwebhookconfigurations").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ValidatingWebhookConfigurations that match those selectors.
    -func (c *validatingWebhookConfigurations) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ValidatingWebhookConfigurationList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.ValidatingWebhookConfigurationList{}
    -	err = c.client.Get().
    -		Resource("validatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested validatingWebhookConfigurations.
    -func (c *validatingWebhookConfigurations) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("validatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a validatingWebhookConfiguration and creates it.  Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
    -func (c *validatingWebhookConfigurations) Create(ctx context.Context, validatingWebhookConfiguration *v1beta1.ValidatingWebhookConfiguration, opts v1.CreateOptions) (result *v1beta1.ValidatingWebhookConfiguration, err error) {
    -	result = &v1beta1.ValidatingWebhookConfiguration{}
    -	err = c.client.Post().
    -		Resource("validatingwebhookconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingWebhookConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a validatingWebhookConfiguration and updates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any.
    -func (c *validatingWebhookConfigurations) Update(ctx context.Context, validatingWebhookConfiguration *v1beta1.ValidatingWebhookConfiguration, opts v1.UpdateOptions) (result *v1beta1.ValidatingWebhookConfiguration, err error) {
    -	result = &v1beta1.ValidatingWebhookConfiguration{}
    -	err = c.client.Put().
    -		Resource("validatingwebhookconfigurations").
    -		Name(validatingWebhookConfiguration.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(validatingWebhookConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the validatingWebhookConfiguration and deletes it. Returns an error if one occurs.
    -func (c *validatingWebhookConfigurations) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("validatingwebhookconfigurations").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *validatingWebhookConfigurations) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("validatingwebhookconfigurations").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched validatingWebhookConfiguration.
    -func (c *validatingWebhookConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ValidatingWebhookConfiguration, err error) {
    -	result = &v1beta1.ValidatingWebhookConfiguration{}
    -	err = c.client.Patch(pt).
    -		Resource("validatingwebhookconfigurations").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied validatingWebhookConfiguration.
    -func (c *validatingWebhookConfigurations) Apply(ctx context.Context, validatingWebhookConfiguration *admissionregistrationv1beta1.ValidatingWebhookConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ValidatingWebhookConfiguration, err error) {
    -	if validatingWebhookConfiguration == nil {
    -		return nil, fmt.Errorf("validatingWebhookConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(validatingWebhookConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := validatingWebhookConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("validatingWebhookConfiguration.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.ValidatingWebhookConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("validatingwebhookconfigurations").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/apiserverinternal_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/apiserverinternal_client.go
    index 1794cb941de3..b76fadf91b06 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/apiserverinternal_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/apiserverinternal_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	apiserverinternalv1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *InternalV1alpha1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1alpha1.SchemeGroupVersion
    +	gv := apiserverinternalv1alpha1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/fake/fake_apiserverinternal_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/fake/fake_apiserverinternal_client.go
    index 0960a5e81e04..f4f4a78dd9f1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/fake/fake_apiserverinternal_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/fake/fake_apiserverinternal_client.go
    @@ -29,7 +29,7 @@ type FakeInternalV1alpha1 struct {
     }
     
     func (c *FakeInternalV1alpha1) StorageVersions() v1alpha1.StorageVersionInterface {
    -	return &FakeStorageVersions{c}
    +	return newFakeStorageVersions(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/fake/fake_storageversion.go b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/fake/fake_storageversion.go
    index 738c68038b57..785c067f8f62 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/fake/fake_storageversion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/fake/fake_storageversion.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	apiserverinternalv1alpha1 "k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedapiserverinternalv1alpha1 "k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1"
     )
     
    -// FakeStorageVersions implements StorageVersionInterface
    -type FakeStorageVersions struct {
    +// fakeStorageVersions implements StorageVersionInterface
    +type fakeStorageVersions struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.StorageVersion, *v1alpha1.StorageVersionList, *apiserverinternalv1alpha1.StorageVersionApplyConfiguration]
     	Fake *FakeInternalV1alpha1
     }
     
    -var storageversionsResource = v1alpha1.SchemeGroupVersion.WithResource("storageversions")
    -
    -var storageversionsKind = v1alpha1.SchemeGroupVersion.WithKind("StorageVersion")
    -
    -// Get takes name of the storageVersion, and returns the corresponding storageVersion object, and an error if there is any.
    -func (c *FakeStorageVersions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.StorageVersion, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(storageversionsResource, name), &v1alpha1.StorageVersion{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.StorageVersion), err
    -}
    -
    -// List takes label and field selectors, and returns the list of StorageVersions that match those selectors.
    -func (c *FakeStorageVersions) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.StorageVersionList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(storageversionsResource, storageversionsKind, opts), &v1alpha1.StorageVersionList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.StorageVersionList{ListMeta: obj.(*v1alpha1.StorageVersionList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.StorageVersionList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested storageVersions.
    -func (c *FakeStorageVersions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(storageversionsResource, opts))
    -}
    -
    -// Create takes the representation of a storageVersion and creates it.  Returns the server's representation of the storageVersion, and an error, if there is any.
    -func (c *FakeStorageVersions) Create(ctx context.Context, storageVersion *v1alpha1.StorageVersion, opts v1.CreateOptions) (result *v1alpha1.StorageVersion, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(storageversionsResource, storageVersion), &v1alpha1.StorageVersion{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.StorageVersion), err
    -}
    -
    -// Update takes the representation of a storageVersion and updates it. Returns the server's representation of the storageVersion, and an error, if there is any.
    -func (c *FakeStorageVersions) Update(ctx context.Context, storageVersion *v1alpha1.StorageVersion, opts v1.UpdateOptions) (result *v1alpha1.StorageVersion, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(storageversionsResource, storageVersion), &v1alpha1.StorageVersion{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.StorageVersion), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeStorageVersions) UpdateStatus(ctx context.Context, storageVersion *v1alpha1.StorageVersion, opts v1.UpdateOptions) (*v1alpha1.StorageVersion, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(storageversionsResource, "status", storageVersion), &v1alpha1.StorageVersion{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.StorageVersion), err
    -}
    -
    -// Delete takes name of the storageVersion and deletes it. Returns an error if one occurs.
    -func (c *FakeStorageVersions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(storageversionsResource, name, opts), &v1alpha1.StorageVersion{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeStorageVersions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(storageversionsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.StorageVersionList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched storageVersion.
    -func (c *FakeStorageVersions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.StorageVersion, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(storageversionsResource, name, pt, data, subresources...), &v1alpha1.StorageVersion{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.StorageVersion), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied storageVersion.
    -func (c *FakeStorageVersions) Apply(ctx context.Context, storageVersion *apiserverinternalv1alpha1.StorageVersionApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.StorageVersion, err error) {
    -	if storageVersion == nil {
    -		return nil, fmt.Errorf("storageVersion provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(storageVersion)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := storageVersion.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("storageVersion.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(storageversionsResource, *name, types.ApplyPatchType, data), &v1alpha1.StorageVersion{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.StorageVersion), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeStorageVersions) ApplyStatus(ctx context.Context, storageVersion *apiserverinternalv1alpha1.StorageVersionApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.StorageVersion, err error) {
    -	if storageVersion == nil {
    -		return nil, fmt.Errorf("storageVersion provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(storageVersion)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := storageVersion.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("storageVersion.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(storageversionsResource, *name, types.ApplyPatchType, data, "status"), &v1alpha1.StorageVersion{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeStorageVersions(fake *FakeInternalV1alpha1) typedapiserverinternalv1alpha1.StorageVersionInterface {
    +	return &fakeStorageVersions{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.StorageVersion, *v1alpha1.StorageVersionList, *apiserverinternalv1alpha1.StorageVersionApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("storageversions"),
    +			v1alpha1.SchemeGroupVersion.WithKind("StorageVersion"),
    +			func() *v1alpha1.StorageVersion { return &v1alpha1.StorageVersion{} },
    +			func() *v1alpha1.StorageVersionList { return &v1alpha1.StorageVersionList{} },
    +			func(dst, src *v1alpha1.StorageVersionList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.StorageVersionList) []*v1alpha1.StorageVersion {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.StorageVersionList, items []*v1alpha1.StorageVersion) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.StorageVersion), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/storageversion.go b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/storageversion.go
    index 18789c7f82a3..cea897b3d689 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/storageversion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/storageversion.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
    +	apiserverinternalv1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	apiserverinternalv1alpha1 "k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1"
    +	applyconfigurationsapiserverinternalv1alpha1 "k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // StorageVersionsGetter has a method to return a StorageVersionInterface.
    @@ -41,203 +38,40 @@ type StorageVersionsGetter interface {
     
     // StorageVersionInterface has methods to work with StorageVersion resources.
     type StorageVersionInterface interface {
    -	Create(ctx context.Context, storageVersion *v1alpha1.StorageVersion, opts v1.CreateOptions) (*v1alpha1.StorageVersion, error)
    -	Update(ctx context.Context, storageVersion *v1alpha1.StorageVersion, opts v1.UpdateOptions) (*v1alpha1.StorageVersion, error)
    -	UpdateStatus(ctx context.Context, storageVersion *v1alpha1.StorageVersion, opts v1.UpdateOptions) (*v1alpha1.StorageVersion, error)
    +	Create(ctx context.Context, storageVersion *apiserverinternalv1alpha1.StorageVersion, opts v1.CreateOptions) (*apiserverinternalv1alpha1.StorageVersion, error)
    +	Update(ctx context.Context, storageVersion *apiserverinternalv1alpha1.StorageVersion, opts v1.UpdateOptions) (*apiserverinternalv1alpha1.StorageVersion, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, storageVersion *apiserverinternalv1alpha1.StorageVersion, opts v1.UpdateOptions) (*apiserverinternalv1alpha1.StorageVersion, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.StorageVersion, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.StorageVersionList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*apiserverinternalv1alpha1.StorageVersion, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*apiserverinternalv1alpha1.StorageVersionList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.StorageVersion, err error)
    -	Apply(ctx context.Context, storageVersion *apiserverinternalv1alpha1.StorageVersionApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.StorageVersion, err error)
    -	ApplyStatus(ctx context.Context, storageVersion *apiserverinternalv1alpha1.StorageVersionApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.StorageVersion, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *apiserverinternalv1alpha1.StorageVersion, err error)
    +	Apply(ctx context.Context, storageVersion *applyconfigurationsapiserverinternalv1alpha1.StorageVersionApplyConfiguration, opts v1.ApplyOptions) (result *apiserverinternalv1alpha1.StorageVersion, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, storageVersion *applyconfigurationsapiserverinternalv1alpha1.StorageVersionApplyConfiguration, opts v1.ApplyOptions) (result *apiserverinternalv1alpha1.StorageVersion, err error)
     	StorageVersionExpansion
     }
     
     // storageVersions implements StorageVersionInterface
     type storageVersions struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*apiserverinternalv1alpha1.StorageVersion, *apiserverinternalv1alpha1.StorageVersionList, *applyconfigurationsapiserverinternalv1alpha1.StorageVersionApplyConfiguration]
     }
     
     // newStorageVersions returns a StorageVersions
     func newStorageVersions(c *InternalV1alpha1Client) *storageVersions {
     	return &storageVersions{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*apiserverinternalv1alpha1.StorageVersion, *apiserverinternalv1alpha1.StorageVersionList, *applyconfigurationsapiserverinternalv1alpha1.StorageVersionApplyConfiguration](
    +			"storageversions",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *apiserverinternalv1alpha1.StorageVersion { return &apiserverinternalv1alpha1.StorageVersion{} },
    +			func() *apiserverinternalv1alpha1.StorageVersionList {
    +				return &apiserverinternalv1alpha1.StorageVersionList{}
    +			},
    +			gentype.PrefersProtobuf[*apiserverinternalv1alpha1.StorageVersion](),
    +		),
     	}
     }
    -
    -// Get takes name of the storageVersion, and returns the corresponding storageVersion object, and an error if there is any.
    -func (c *storageVersions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.StorageVersion, err error) {
    -	result = &v1alpha1.StorageVersion{}
    -	err = c.client.Get().
    -		Resource("storageversions").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of StorageVersions that match those selectors.
    -func (c *storageVersions) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.StorageVersionList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.StorageVersionList{}
    -	err = c.client.Get().
    -		Resource("storageversions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested storageVersions.
    -func (c *storageVersions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("storageversions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a storageVersion and creates it.  Returns the server's representation of the storageVersion, and an error, if there is any.
    -func (c *storageVersions) Create(ctx context.Context, storageVersion *v1alpha1.StorageVersion, opts v1.CreateOptions) (result *v1alpha1.StorageVersion, err error) {
    -	result = &v1alpha1.StorageVersion{}
    -	err = c.client.Post().
    -		Resource("storageversions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(storageVersion).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a storageVersion and updates it. Returns the server's representation of the storageVersion, and an error, if there is any.
    -func (c *storageVersions) Update(ctx context.Context, storageVersion *v1alpha1.StorageVersion, opts v1.UpdateOptions) (result *v1alpha1.StorageVersion, err error) {
    -	result = &v1alpha1.StorageVersion{}
    -	err = c.client.Put().
    -		Resource("storageversions").
    -		Name(storageVersion.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(storageVersion).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *storageVersions) UpdateStatus(ctx context.Context, storageVersion *v1alpha1.StorageVersion, opts v1.UpdateOptions) (result *v1alpha1.StorageVersion, err error) {
    -	result = &v1alpha1.StorageVersion{}
    -	err = c.client.Put().
    -		Resource("storageversions").
    -		Name(storageVersion.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(storageVersion).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the storageVersion and deletes it. Returns an error if one occurs.
    -func (c *storageVersions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("storageversions").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *storageVersions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("storageversions").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched storageVersion.
    -func (c *storageVersions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.StorageVersion, err error) {
    -	result = &v1alpha1.StorageVersion{}
    -	err = c.client.Patch(pt).
    -		Resource("storageversions").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied storageVersion.
    -func (c *storageVersions) Apply(ctx context.Context, storageVersion *apiserverinternalv1alpha1.StorageVersionApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.StorageVersion, err error) {
    -	if storageVersion == nil {
    -		return nil, fmt.Errorf("storageVersion provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(storageVersion)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := storageVersion.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("storageVersion.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.StorageVersion{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("storageversions").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *storageVersions) ApplyStatus(ctx context.Context, storageVersion *apiserverinternalv1alpha1.StorageVersionApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.StorageVersion, err error) {
    -	if storageVersion == nil {
    -		return nil, fmt.Errorf("storageVersion provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(storageVersion)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := storageVersion.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("storageVersion.Name must be provided to Apply")
    -	}
    -
    -	result = &v1alpha1.StorageVersion{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("storageversions").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/apps_client.go
    index 397542eeb49d..cb0bf87badf5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/apps_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/apps_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/apps/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	appsv1 "k8s.io/api/apps/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -105,10 +105,10 @@ func New(c rest.Interface) *AppsV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := appsv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go
    index f4b198265d6f..8bf810810c6b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
    +	applyconfigurationsappsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ControllerRevisionsGetter has a method to return a ControllerRevisionInterface.
    @@ -41,168 +38,34 @@ type ControllerRevisionsGetter interface {
     
     // ControllerRevisionInterface has methods to work with ControllerRevision resources.
     type ControllerRevisionInterface interface {
    -	Create(ctx context.Context, controllerRevision *v1.ControllerRevision, opts metav1.CreateOptions) (*v1.ControllerRevision, error)
    -	Update(ctx context.Context, controllerRevision *v1.ControllerRevision, opts metav1.UpdateOptions) (*v1.ControllerRevision, error)
    +	Create(ctx context.Context, controllerRevision *appsv1.ControllerRevision, opts metav1.CreateOptions) (*appsv1.ControllerRevision, error)
    +	Update(ctx context.Context, controllerRevision *appsv1.ControllerRevision, opts metav1.UpdateOptions) (*appsv1.ControllerRevision, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ControllerRevision, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ControllerRevisionList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*appsv1.ControllerRevision, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*appsv1.ControllerRevisionList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ControllerRevision, err error)
    -	Apply(ctx context.Context, controllerRevision *appsv1.ControllerRevisionApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ControllerRevision, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *appsv1.ControllerRevision, err error)
    +	Apply(ctx context.Context, controllerRevision *applyconfigurationsappsv1.ControllerRevisionApplyConfiguration, opts metav1.ApplyOptions) (result *appsv1.ControllerRevision, err error)
     	ControllerRevisionExpansion
     }
     
     // controllerRevisions implements ControllerRevisionInterface
     type controllerRevisions struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1.ControllerRevision, *appsv1.ControllerRevisionList, *applyconfigurationsappsv1.ControllerRevisionApplyConfiguration]
     }
     
     // newControllerRevisions returns a ControllerRevisions
     func newControllerRevisions(c *AppsV1Client, namespace string) *controllerRevisions {
     	return &controllerRevisions{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1.ControllerRevision, *appsv1.ControllerRevisionList, *applyconfigurationsappsv1.ControllerRevisionApplyConfiguration](
    +			"controllerrevisions",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1.ControllerRevision { return &appsv1.ControllerRevision{} },
    +			func() *appsv1.ControllerRevisionList { return &appsv1.ControllerRevisionList{} },
    +			gentype.PrefersProtobuf[*appsv1.ControllerRevision](),
    +		),
     	}
     }
    -
    -// Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any.
    -func (c *controllerRevisions) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ControllerRevision, err error) {
    -	result = &v1.ControllerRevision{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors.
    -func (c *controllerRevisions) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ControllerRevisionList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ControllerRevisionList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested controllerRevisions.
    -func (c *controllerRevisions) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a controllerRevision and creates it.  Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *controllerRevisions) Create(ctx context.Context, controllerRevision *v1.ControllerRevision, opts metav1.CreateOptions) (result *v1.ControllerRevision, err error) {
    -	result = &v1.ControllerRevision{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(controllerRevision).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a controllerRevision and updates it. Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *controllerRevisions) Update(ctx context.Context, controllerRevision *v1.ControllerRevision, opts metav1.UpdateOptions) (result *v1.ControllerRevision, err error) {
    -	result = &v1.ControllerRevision{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(controllerRevision.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(controllerRevision).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs.
    -func (c *controllerRevisions) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *controllerRevisions) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched controllerRevision.
    -func (c *controllerRevisions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ControllerRevision, err error) {
    -	result = &v1.ControllerRevision{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied controllerRevision.
    -func (c *controllerRevisions) Apply(ctx context.Context, controllerRevision *appsv1.ControllerRevisionApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ControllerRevision, err error) {
    -	if controllerRevision == nil {
    -		return nil, fmt.Errorf("controllerRevision provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(controllerRevision)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := controllerRevision.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("controllerRevision.Name must be provided to Apply")
    -	}
    -	result = &v1.ControllerRevision{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go
    index 53e539287919..6354da219dee 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
    +	applyconfigurationsappsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // DaemonSetsGetter has a method to return a DaemonSetInterface.
    @@ -41,216 +38,38 @@ type DaemonSetsGetter interface {
     
     // DaemonSetInterface has methods to work with DaemonSet resources.
     type DaemonSetInterface interface {
    -	Create(ctx context.Context, daemonSet *v1.DaemonSet, opts metav1.CreateOptions) (*v1.DaemonSet, error)
    -	Update(ctx context.Context, daemonSet *v1.DaemonSet, opts metav1.UpdateOptions) (*v1.DaemonSet, error)
    -	UpdateStatus(ctx context.Context, daemonSet *v1.DaemonSet, opts metav1.UpdateOptions) (*v1.DaemonSet, error)
    +	Create(ctx context.Context, daemonSet *appsv1.DaemonSet, opts metav1.CreateOptions) (*appsv1.DaemonSet, error)
    +	Update(ctx context.Context, daemonSet *appsv1.DaemonSet, opts metav1.UpdateOptions) (*appsv1.DaemonSet, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, daemonSet *appsv1.DaemonSet, opts metav1.UpdateOptions) (*appsv1.DaemonSet, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.DaemonSet, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.DaemonSetList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*appsv1.DaemonSet, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*appsv1.DaemonSetList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.DaemonSet, err error)
    -	Apply(ctx context.Context, daemonSet *appsv1.DaemonSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.DaemonSet, err error)
    -	ApplyStatus(ctx context.Context, daemonSet *appsv1.DaemonSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.DaemonSet, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *appsv1.DaemonSet, err error)
    +	Apply(ctx context.Context, daemonSet *applyconfigurationsappsv1.DaemonSetApplyConfiguration, opts metav1.ApplyOptions) (result *appsv1.DaemonSet, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, daemonSet *applyconfigurationsappsv1.DaemonSetApplyConfiguration, opts metav1.ApplyOptions) (result *appsv1.DaemonSet, err error)
     	DaemonSetExpansion
     }
     
     // daemonSets implements DaemonSetInterface
     type daemonSets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1.DaemonSet, *appsv1.DaemonSetList, *applyconfigurationsappsv1.DaemonSetApplyConfiguration]
     }
     
     // newDaemonSets returns a DaemonSets
     func newDaemonSets(c *AppsV1Client, namespace string) *daemonSets {
     	return &daemonSets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1.DaemonSet, *appsv1.DaemonSetList, *applyconfigurationsappsv1.DaemonSetApplyConfiguration](
    +			"daemonsets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1.DaemonSet { return &appsv1.DaemonSet{} },
    +			func() *appsv1.DaemonSetList { return &appsv1.DaemonSetList{} },
    +			gentype.PrefersProtobuf[*appsv1.DaemonSet](),
    +		),
     	}
     }
    -
    -// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any.
    -func (c *daemonSets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.DaemonSet, err error) {
    -	result = &v1.DaemonSet{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of DaemonSets that match those selectors.
    -func (c *daemonSets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.DaemonSetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.DaemonSetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested daemonSets.
    -func (c *daemonSets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a daemonSet and creates it.  Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *daemonSets) Create(ctx context.Context, daemonSet *v1.DaemonSet, opts metav1.CreateOptions) (result *v1.DaemonSet, err error) {
    -	result = &v1.DaemonSet{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(daemonSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *daemonSets) Update(ctx context.Context, daemonSet *v1.DaemonSet, opts metav1.UpdateOptions) (result *v1.DaemonSet, err error) {
    -	result = &v1.DaemonSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(daemonSet.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(daemonSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *daemonSets) UpdateStatus(ctx context.Context, daemonSet *v1.DaemonSet, opts metav1.UpdateOptions) (result *v1.DaemonSet, err error) {
    -	result = &v1.DaemonSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(daemonSet.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(daemonSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs.
    -func (c *daemonSets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *daemonSets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched daemonSet.
    -func (c *daemonSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.DaemonSet, err error) {
    -	result = &v1.DaemonSet{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied daemonSet.
    -func (c *daemonSets) Apply(ctx context.Context, daemonSet *appsv1.DaemonSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -	result = &v1.DaemonSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *daemonSets) ApplyStatus(ctx context.Context, daemonSet *appsv1.DaemonSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.DaemonSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go
    index ccc2049ff7f4..cc06ccf3a936 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go
    @@ -19,20 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
    +	fmt "fmt"
     
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     	autoscalingv1 "k8s.io/api/autoscaling/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
    +	applyconfigurationsappsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
     	applyconfigurationsautoscalingv1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
    +	apply "k8s.io/client-go/util/apply"
     )
     
     // DeploymentsGetter has a method to return a DeploymentInterface.
    @@ -43,17 +42,19 @@ type DeploymentsGetter interface {
     
     // DeploymentInterface has methods to work with Deployment resources.
     type DeploymentInterface interface {
    -	Create(ctx context.Context, deployment *v1.Deployment, opts metav1.CreateOptions) (*v1.Deployment, error)
    -	Update(ctx context.Context, deployment *v1.Deployment, opts metav1.UpdateOptions) (*v1.Deployment, error)
    -	UpdateStatus(ctx context.Context, deployment *v1.Deployment, opts metav1.UpdateOptions) (*v1.Deployment, error)
    +	Create(ctx context.Context, deployment *appsv1.Deployment, opts metav1.CreateOptions) (*appsv1.Deployment, error)
    +	Update(ctx context.Context, deployment *appsv1.Deployment, opts metav1.UpdateOptions) (*appsv1.Deployment, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, deployment *appsv1.Deployment, opts metav1.UpdateOptions) (*appsv1.Deployment, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Deployment, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.DeploymentList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*appsv1.Deployment, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*appsv1.DeploymentList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Deployment, err error)
    -	Apply(ctx context.Context, deployment *appsv1.DeploymentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Deployment, err error)
    -	ApplyStatus(ctx context.Context, deployment *appsv1.DeploymentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Deployment, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *appsv1.Deployment, err error)
    +	Apply(ctx context.Context, deployment *applyconfigurationsappsv1.DeploymentApplyConfiguration, opts metav1.ApplyOptions) (result *appsv1.Deployment, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, deployment *applyconfigurationsappsv1.DeploymentApplyConfiguration, opts metav1.ApplyOptions) (result *appsv1.Deployment, err error)
     	GetScale(ctx context.Context, deploymentName string, options metav1.GetOptions) (*autoscalingv1.Scale, error)
     	UpdateScale(ctx context.Context, deploymentName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (*autoscalingv1.Scale, error)
     	ApplyScale(ctx context.Context, deploymentName string, scale *applyconfigurationsautoscalingv1.ScaleApplyConfiguration, opts metav1.ApplyOptions) (*autoscalingv1.Scale, error)
    @@ -63,209 +64,30 @@ type DeploymentInterface interface {
     
     // deployments implements DeploymentInterface
     type deployments struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1.Deployment, *appsv1.DeploymentList, *applyconfigurationsappsv1.DeploymentApplyConfiguration]
     }
     
     // newDeployments returns a Deployments
     func newDeployments(c *AppsV1Client, namespace string) *deployments {
     	return &deployments{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1.Deployment, *appsv1.DeploymentList, *applyconfigurationsappsv1.DeploymentApplyConfiguration](
    +			"deployments",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1.Deployment { return &appsv1.Deployment{} },
    +			func() *appsv1.DeploymentList { return &appsv1.DeploymentList{} },
    +			gentype.PrefersProtobuf[*appsv1.Deployment](),
    +		),
     	}
     }
     
    -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any.
    -func (c *deployments) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Deployment, err error) {
    -	result = &v1.Deployment{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Deployments that match those selectors.
    -func (c *deployments) List(ctx context.Context, opts metav1.ListOptions) (result *v1.DeploymentList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.DeploymentList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested deployments.
    -func (c *deployments) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a deployment and creates it.  Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *deployments) Create(ctx context.Context, deployment *v1.Deployment, opts metav1.CreateOptions) (result *v1.Deployment, err error) {
    -	result = &v1.Deployment{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *deployments) Update(ctx context.Context, deployment *v1.Deployment, opts metav1.UpdateOptions) (result *v1.Deployment, err error) {
    -	result = &v1.Deployment{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(deployment.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *deployments) UpdateStatus(ctx context.Context, deployment *v1.Deployment, opts metav1.UpdateOptions) (result *v1.Deployment, err error) {
    -	result = &v1.Deployment{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(deployment.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the deployment and deletes it. Returns an error if one occurs.
    -func (c *deployments) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *deployments) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched deployment.
    -func (c *deployments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Deployment, err error) {
    -	result = &v1.Deployment{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied deployment.
    -func (c *deployments) Apply(ctx context.Context, deployment *appsv1.DeploymentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	result = &v1.Deployment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *deployments) ApplyStatus(ctx context.Context, deployment *appsv1.DeploymentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.Deployment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
     // GetScale takes name of the deployment, and returns the corresponding autoscalingv1.Scale object, and an error if there is any.
     func (c *deployments) GetScale(ctx context.Context, deploymentName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    +	err = c.GetClient().Get().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("deployments").
     		Name(deploymentName).
     		SubResource("scale").
    @@ -278,8 +100,9 @@ func (c *deployments) GetScale(ctx context.Context, deploymentName string, optio
     // UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
     func (c *deployments) UpdateScale(ctx context.Context, deploymentName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    +	err = c.GetClient().Put().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("deployments").
     		Name(deploymentName).
     		SubResource("scale").
    @@ -297,19 +120,19 @@ func (c *deployments) ApplyScale(ctx context.Context, deploymentName string, sca
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
     	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(scale)
    +	request, err := apply.NewRequest(c.GetClient(), scale)
     	if err != nil {
     		return nil, err
     	}
     
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    +	err = request.
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("deployments").
     		Name(deploymentName).
     		SubResource("scale").
     		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
     		Do(ctx).
     		Into(result)
     	return
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_apps_client.go
    index 458df0fa335f..76949dbb590e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_apps_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_apps_client.go
    @@ -29,23 +29,23 @@ type FakeAppsV1 struct {
     }
     
     func (c *FakeAppsV1) ControllerRevisions(namespace string) v1.ControllerRevisionInterface {
    -	return &FakeControllerRevisions{c, namespace}
    +	return newFakeControllerRevisions(c, namespace)
     }
     
     func (c *FakeAppsV1) DaemonSets(namespace string) v1.DaemonSetInterface {
    -	return &FakeDaemonSets{c, namespace}
    +	return newFakeDaemonSets(c, namespace)
     }
     
     func (c *FakeAppsV1) Deployments(namespace string) v1.DeploymentInterface {
    -	return &FakeDeployments{c, namespace}
    +	return newFakeDeployments(c, namespace)
     }
     
     func (c *FakeAppsV1) ReplicaSets(namespace string) v1.ReplicaSetInterface {
    -	return &FakeReplicaSets{c, namespace}
    +	return newFakeReplicaSets(c, namespace)
     }
     
     func (c *FakeAppsV1) StatefulSets(namespace string) v1.StatefulSetInterface {
    -	return &FakeStatefulSets{c, namespace}
    +	return newFakeStatefulSets(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go
    index f691ba9acd1f..92a338a5cd12 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go
    @@ -19,136 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/apps/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
     )
     
    -// FakeControllerRevisions implements ControllerRevisionInterface
    -type FakeControllerRevisions struct {
    +// fakeControllerRevisions implements ControllerRevisionInterface
    +type fakeControllerRevisions struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ControllerRevision, *v1.ControllerRevisionList, *appsv1.ControllerRevisionApplyConfiguration]
     	Fake *FakeAppsV1
    -	ns   string
    -}
    -
    -var controllerrevisionsResource = v1.SchemeGroupVersion.WithResource("controllerrevisions")
    -
    -var controllerrevisionsKind = v1.SchemeGroupVersion.WithKind("ControllerRevision")
    -
    -// Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any.
    -func (c *FakeControllerRevisions) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(controllerrevisionsResource, c.ns, name), &v1.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ControllerRevision), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors.
    -func (c *FakeControllerRevisions) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ControllerRevisionList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(controllerrevisionsResource, controllerrevisionsKind, c.ns, opts), &v1.ControllerRevisionList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ControllerRevisionList{ListMeta: obj.(*v1.ControllerRevisionList).ListMeta}
    -	for _, item := range obj.(*v1.ControllerRevisionList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested controllerRevisions.
    -func (c *FakeControllerRevisions) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(controllerrevisionsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a controllerRevision and creates it.  Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *FakeControllerRevisions) Create(ctx context.Context, controllerRevision *v1.ControllerRevision, opts metav1.CreateOptions) (result *v1.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ControllerRevision), err
    -}
    -
    -// Update takes the representation of a controllerRevision and updates it. Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *FakeControllerRevisions) Update(ctx context.Context, controllerRevision *v1.ControllerRevision, opts metav1.UpdateOptions) (result *v1.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ControllerRevision), err
    -}
    -
    -// Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs.
    -func (c *FakeControllerRevisions) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(controllerrevisionsResource, c.ns, name, opts), &v1.ControllerRevision{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeControllerRevisions) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(controllerrevisionsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.ControllerRevisionList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched controllerRevision.
    -func (c *FakeControllerRevisions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, name, pt, data, subresources...), &v1.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ControllerRevision), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied controllerRevision.
    -func (c *FakeControllerRevisions) Apply(ctx context.Context, controllerRevision *appsv1.ControllerRevisionApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ControllerRevision, err error) {
    -	if controllerRevision == nil {
    -		return nil, fmt.Errorf("controllerRevision provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(controllerRevision)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := controllerRevision.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("controllerRevision.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, *name, types.ApplyPatchType, data), &v1.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeControllerRevisions(fake *FakeAppsV1, namespace string) typedappsv1.ControllerRevisionInterface {
    +	return &fakeControllerRevisions{
    +		gentype.NewFakeClientWithListAndApply[*v1.ControllerRevision, *v1.ControllerRevisionList, *appsv1.ControllerRevisionApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("controllerrevisions"),
    +			v1.SchemeGroupVersion.WithKind("ControllerRevision"),
    +			func() *v1.ControllerRevision { return &v1.ControllerRevision{} },
    +			func() *v1.ControllerRevisionList { return &v1.ControllerRevisionList{} },
    +			func(dst, src *v1.ControllerRevisionList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ControllerRevisionList) []*v1.ControllerRevision {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.ControllerRevisionList, items []*v1.ControllerRevision) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.ControllerRevision), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go
    index 3e0df7235289..b1b47c40142f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go
    @@ -19,171 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/apps/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
     )
     
    -// FakeDaemonSets implements DaemonSetInterface
    -type FakeDaemonSets struct {
    +// fakeDaemonSets implements DaemonSetInterface
    +type fakeDaemonSets struct {
    +	*gentype.FakeClientWithListAndApply[*v1.DaemonSet, *v1.DaemonSetList, *appsv1.DaemonSetApplyConfiguration]
     	Fake *FakeAppsV1
    -	ns   string
    -}
    -
    -var daemonsetsResource = v1.SchemeGroupVersion.WithResource("daemonsets")
    -
    -var daemonsetsKind = v1.SchemeGroupVersion.WithKind("DaemonSet")
    -
    -// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any.
    -func (c *FakeDaemonSets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(daemonsetsResource, c.ns, name), &v1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.DaemonSet), err
    -}
    -
    -// List takes label and field selectors, and returns the list of DaemonSets that match those selectors.
    -func (c *FakeDaemonSets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.DaemonSetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(daemonsetsResource, daemonsetsKind, c.ns, opts), &v1.DaemonSetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.DaemonSetList{ListMeta: obj.(*v1.DaemonSetList).ListMeta}
    -	for _, item := range obj.(*v1.DaemonSetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested daemonSets.
    -func (c *FakeDaemonSets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(daemonsetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a daemonSet and creates it.  Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *FakeDaemonSets) Create(ctx context.Context, daemonSet *v1.DaemonSet, opts metav1.CreateOptions) (result *v1.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(daemonsetsResource, c.ns, daemonSet), &v1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.DaemonSet), err
    -}
    -
    -// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *FakeDaemonSets) Update(ctx context.Context, daemonSet *v1.DaemonSet, opts metav1.UpdateOptions) (result *v1.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(daemonsetsResource, c.ns, daemonSet), &v1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.DaemonSet), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeDaemonSets) UpdateStatus(ctx context.Context, daemonSet *v1.DaemonSet, opts metav1.UpdateOptions) (*v1.DaemonSet, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(daemonsetsResource, "status", c.ns, daemonSet), &v1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.DaemonSet), err
    -}
    -
    -// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs.
    -func (c *FakeDaemonSets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(daemonsetsResource, c.ns, name, opts), &v1.DaemonSet{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeDaemonSets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(daemonsetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.DaemonSetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched daemonSet.
    -func (c *FakeDaemonSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, name, pt, data, subresources...), &v1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.DaemonSet), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied daemonSet.
    -func (c *FakeDaemonSets) Apply(ctx context.Context, daemonSet *appsv1.DaemonSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, *name, types.ApplyPatchType, data), &v1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.DaemonSet), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeDaemonSets) ApplyStatus(ctx context.Context, daemonSet *appsv1.DaemonSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeDaemonSets(fake *FakeAppsV1, namespace string) typedappsv1.DaemonSetInterface {
    +	return &fakeDaemonSets{
    +		gentype.NewFakeClientWithListAndApply[*v1.DaemonSet, *v1.DaemonSetList, *appsv1.DaemonSetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("daemonsets"),
    +			v1.SchemeGroupVersion.WithKind("DaemonSet"),
    +			func() *v1.DaemonSet { return &v1.DaemonSet{} },
    +			func() *v1.DaemonSetList { return &v1.DaemonSetList{} },
    +			func(dst, src *v1.DaemonSetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.DaemonSetList) []*v1.DaemonSet { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.DaemonSetList, items []*v1.DaemonSet) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.DaemonSet), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go
    index da1896fe604c..7d7ae0ddbf22 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go
    @@ -19,202 +19,71 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    +	context "context"
     	json "encoding/json"
    -	"fmt"
    +	fmt "fmt"
     
     	v1 "k8s.io/api/apps/v1"
     	autoscalingv1 "k8s.io/api/autoscaling/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
     	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
     	applyconfigurationsautoscalingv1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
     	testing "k8s.io/client-go/testing"
     )
     
    -// FakeDeployments implements DeploymentInterface
    -type FakeDeployments struct {
    +// fakeDeployments implements DeploymentInterface
    +type fakeDeployments struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Deployment, *v1.DeploymentList, *appsv1.DeploymentApplyConfiguration]
     	Fake *FakeAppsV1
    -	ns   string
     }
     
    -var deploymentsResource = v1.SchemeGroupVersion.WithResource("deployments")
    -
    -var deploymentsKind = v1.SchemeGroupVersion.WithKind("Deployment")
    -
    -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any.
    -func (c *FakeDeployments) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &v1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Deployment), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Deployments that match those selectors.
    -func (c *FakeDeployments) List(ctx context.Context, opts metav1.ListOptions) (result *v1.DeploymentList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &v1.DeploymentList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.DeploymentList{ListMeta: obj.(*v1.DeploymentList).ListMeta}
    -	for _, item := range obj.(*v1.DeploymentList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested deployments.
    -func (c *FakeDeployments) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(deploymentsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a deployment and creates it.  Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *FakeDeployments) Create(ctx context.Context, deployment *v1.Deployment, opts metav1.CreateOptions) (result *v1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &v1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Deployment), err
    -}
    -
    -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *FakeDeployments) Update(ctx context.Context, deployment *v1.Deployment, opts metav1.UpdateOptions) (result *v1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &v1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Deployment), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeDeployments) UpdateStatus(ctx context.Context, deployment *v1.Deployment, opts metav1.UpdateOptions) (*v1.Deployment, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &v1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeDeployments(fake *FakeAppsV1, namespace string) typedappsv1.DeploymentInterface {
    +	return &fakeDeployments{
    +		gentype.NewFakeClientWithListAndApply[*v1.Deployment, *v1.DeploymentList, *appsv1.DeploymentApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("deployments"),
    +			v1.SchemeGroupVersion.WithKind("Deployment"),
    +			func() *v1.Deployment { return &v1.Deployment{} },
    +			func() *v1.DeploymentList { return &v1.DeploymentList{} },
    +			func(dst, src *v1.DeploymentList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.DeploymentList) []*v1.Deployment { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.DeploymentList, items []*v1.Deployment) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Deployment), err
    -}
    -
    -// Delete takes name of the deployment and deletes it. Returns an error if one occurs.
    -func (c *FakeDeployments) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(deploymentsResource, c.ns, name, opts), &v1.Deployment{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeDeployments) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.DeploymentList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched deployment.
    -func (c *FakeDeployments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, pt, data, subresources...), &v1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Deployment), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied deployment.
    -func (c *FakeDeployments) Apply(ctx context.Context, deployment *appsv1.DeploymentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, *name, types.ApplyPatchType, data), &v1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Deployment), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeDeployments) ApplyStatus(ctx context.Context, deployment *appsv1.DeploymentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Deployment), err
     }
     
     // GetScale takes name of the deployment, and returns the corresponding scale object, and an error if there is any.
    -func (c *FakeDeployments) GetScale(ctx context.Context, deploymentName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeDeployments) GetScale(ctx context.Context, deploymentName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewGetSubresourceAction(deploymentsResource, c.ns, "scale", deploymentName), &autoscalingv1.Scale{})
    +		Invokes(testing.NewGetSubresourceActionWithOptions(c.Resource(), c.Namespace(), "scale", deploymentName, options), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
     
     // UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
    -func (c *FakeDeployments) UpdateScale(ctx context.Context, deploymentName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeDeployments) UpdateScale(ctx context.Context, deploymentName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "scale", c.ns, scale), &autoscalingv1.Scale{})
    +		Invokes(testing.NewUpdateSubresourceActionWithOptions(c.Resource(), "scale", c.Namespace(), scale, opts), &autoscalingv1.Scale{})
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
     
     // ApplyScale takes top resource name and the apply declarative configuration for scale,
     // applies it and returns the applied scale, and an error, if there is any.
    -func (c *FakeDeployments) ApplyScale(ctx context.Context, deploymentName string, scale *applyconfigurationsautoscalingv1.ScaleApplyConfiguration, opts metav1.ApplyOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeDeployments) ApplyScale(ctx context.Context, deploymentName string, scale *applyconfigurationsautoscalingv1.ScaleApplyConfiguration, opts metav1.ApplyOptions) (result *autoscalingv1.Scale, err error) {
     	if scale == nil {
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
    @@ -222,11 +91,12 @@ func (c *FakeDeployments) ApplyScale(ctx context.Context, deploymentName string,
     	if err != nil {
     		return nil, err
     	}
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, deploymentName, types.ApplyPatchType, data, "status"), &autoscalingv1.Scale{})
    +		Invokes(testing.NewPatchSubresourceActionWithOptions(c.Resource(), c.Namespace(), deploymentName, types.ApplyPatchType, data, opts.ToPatchOptions(), "scale"), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go
    index dedf19b42f7b..691818ec74a7 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go
    @@ -19,202 +19,71 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    +	context "context"
     	json "encoding/json"
    -	"fmt"
    +	fmt "fmt"
     
     	v1 "k8s.io/api/apps/v1"
     	autoscalingv1 "k8s.io/api/autoscaling/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
     	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
     	applyconfigurationsautoscalingv1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
     	testing "k8s.io/client-go/testing"
     )
     
    -// FakeReplicaSets implements ReplicaSetInterface
    -type FakeReplicaSets struct {
    +// fakeReplicaSets implements ReplicaSetInterface
    +type fakeReplicaSets struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ReplicaSet, *v1.ReplicaSetList, *appsv1.ReplicaSetApplyConfiguration]
     	Fake *FakeAppsV1
    -	ns   string
     }
     
    -var replicasetsResource = v1.SchemeGroupVersion.WithResource("replicasets")
    -
    -var replicasetsKind = v1.SchemeGroupVersion.WithKind("ReplicaSet")
    -
    -// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any.
    -func (c *FakeReplicaSets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(replicasetsResource, c.ns, name), &v1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicaSet), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors.
    -func (c *FakeReplicaSets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ReplicaSetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(replicasetsResource, replicasetsKind, c.ns, opts), &v1.ReplicaSetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ReplicaSetList{ListMeta: obj.(*v1.ReplicaSetList).ListMeta}
    -	for _, item := range obj.(*v1.ReplicaSetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested replicaSets.
    -func (c *FakeReplicaSets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(replicasetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a replicaSet and creates it.  Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *FakeReplicaSets) Create(ctx context.Context, replicaSet *v1.ReplicaSet, opts metav1.CreateOptions) (result *v1.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(replicasetsResource, c.ns, replicaSet), &v1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicaSet), err
    -}
    -
    -// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *FakeReplicaSets) Update(ctx context.Context, replicaSet *v1.ReplicaSet, opts metav1.UpdateOptions) (result *v1.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(replicasetsResource, c.ns, replicaSet), &v1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicaSet), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeReplicaSets) UpdateStatus(ctx context.Context, replicaSet *v1.ReplicaSet, opts metav1.UpdateOptions) (*v1.ReplicaSet, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "status", c.ns, replicaSet), &v1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeReplicaSets(fake *FakeAppsV1, namespace string) typedappsv1.ReplicaSetInterface {
    +	return &fakeReplicaSets{
    +		gentype.NewFakeClientWithListAndApply[*v1.ReplicaSet, *v1.ReplicaSetList, *appsv1.ReplicaSetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("replicasets"),
    +			v1.SchemeGroupVersion.WithKind("ReplicaSet"),
    +			func() *v1.ReplicaSet { return &v1.ReplicaSet{} },
    +			func() *v1.ReplicaSetList { return &v1.ReplicaSetList{} },
    +			func(dst, src *v1.ReplicaSetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ReplicaSetList) []*v1.ReplicaSet { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.ReplicaSetList, items []*v1.ReplicaSet) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.ReplicaSet), err
    -}
    -
    -// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs.
    -func (c *FakeReplicaSets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(replicasetsResource, c.ns, name, opts), &v1.ReplicaSet{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeReplicaSets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(replicasetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.ReplicaSetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched replicaSet.
    -func (c *FakeReplicaSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, name, pt, data, subresources...), &v1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicaSet), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied replicaSet.
    -func (c *FakeReplicaSets) Apply(ctx context.Context, replicaSet *appsv1.ReplicaSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, *name, types.ApplyPatchType, data), &v1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicaSet), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeReplicaSets) ApplyStatus(ctx context.Context, replicaSet *appsv1.ReplicaSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicaSet), err
     }
     
     // GetScale takes name of the replicaSet, and returns the corresponding scale object, and an error if there is any.
    -func (c *FakeReplicaSets) GetScale(ctx context.Context, replicaSetName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeReplicaSets) GetScale(ctx context.Context, replicaSetName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewGetSubresourceAction(replicasetsResource, c.ns, "scale", replicaSetName), &autoscalingv1.Scale{})
    +		Invokes(testing.NewGetSubresourceActionWithOptions(c.Resource(), c.Namespace(), "scale", replicaSetName, options), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
     
     // UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
    -func (c *FakeReplicaSets) UpdateScale(ctx context.Context, replicaSetName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeReplicaSets) UpdateScale(ctx context.Context, replicaSetName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "scale", c.ns, scale), &autoscalingv1.Scale{})
    +		Invokes(testing.NewUpdateSubresourceActionWithOptions(c.Resource(), "scale", c.Namespace(), scale, opts), &autoscalingv1.Scale{})
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
     
     // ApplyScale takes top resource name and the apply declarative configuration for scale,
     // applies it and returns the applied scale, and an error, if there is any.
    -func (c *FakeReplicaSets) ApplyScale(ctx context.Context, replicaSetName string, scale *applyconfigurationsautoscalingv1.ScaleApplyConfiguration, opts metav1.ApplyOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeReplicaSets) ApplyScale(ctx context.Context, replicaSetName string, scale *applyconfigurationsautoscalingv1.ScaleApplyConfiguration, opts metav1.ApplyOptions) (result *autoscalingv1.Scale, err error) {
     	if scale == nil {
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
    @@ -222,11 +91,12 @@ func (c *FakeReplicaSets) ApplyScale(ctx context.Context, replicaSetName string,
     	if err != nil {
     		return nil, err
     	}
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, replicaSetName, types.ApplyPatchType, data, "status"), &autoscalingv1.Scale{})
    +		Invokes(testing.NewPatchSubresourceActionWithOptions(c.Resource(), c.Namespace(), replicaSetName, types.ApplyPatchType, data, opts.ToPatchOptions(), "scale"), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go
    index f1d7d96e8d0d..de3a19da1f18 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go
    @@ -19,202 +19,71 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    +	context "context"
     	json "encoding/json"
    -	"fmt"
    +	fmt "fmt"
     
     	v1 "k8s.io/api/apps/v1"
     	autoscalingv1 "k8s.io/api/autoscaling/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
     	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
     	applyconfigurationsautoscalingv1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
     	testing "k8s.io/client-go/testing"
     )
     
    -// FakeStatefulSets implements StatefulSetInterface
    -type FakeStatefulSets struct {
    +// fakeStatefulSets implements StatefulSetInterface
    +type fakeStatefulSets struct {
    +	*gentype.FakeClientWithListAndApply[*v1.StatefulSet, *v1.StatefulSetList, *appsv1.StatefulSetApplyConfiguration]
     	Fake *FakeAppsV1
    -	ns   string
     }
     
    -var statefulsetsResource = v1.SchemeGroupVersion.WithResource("statefulsets")
    -
    -var statefulsetsKind = v1.SchemeGroupVersion.WithKind("StatefulSet")
    -
    -// Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any.
    -func (c *FakeStatefulSets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(statefulsetsResource, c.ns, name), &v1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.StatefulSet), err
    -}
    -
    -// List takes label and field selectors, and returns the list of StatefulSets that match those selectors.
    -func (c *FakeStatefulSets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.StatefulSetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(statefulsetsResource, statefulsetsKind, c.ns, opts), &v1.StatefulSetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.StatefulSetList{ListMeta: obj.(*v1.StatefulSetList).ListMeta}
    -	for _, item := range obj.(*v1.StatefulSetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested statefulSets.
    -func (c *FakeStatefulSets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(statefulsetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a statefulSet and creates it.  Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *FakeStatefulSets) Create(ctx context.Context, statefulSet *v1.StatefulSet, opts metav1.CreateOptions) (result *v1.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(statefulsetsResource, c.ns, statefulSet), &v1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.StatefulSet), err
    -}
    -
    -// Update takes the representation of a statefulSet and updates it. Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *FakeStatefulSets) Update(ctx context.Context, statefulSet *v1.StatefulSet, opts metav1.UpdateOptions) (result *v1.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(statefulsetsResource, c.ns, statefulSet), &v1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.StatefulSet), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeStatefulSets) UpdateStatus(ctx context.Context, statefulSet *v1.StatefulSet, opts metav1.UpdateOptions) (*v1.StatefulSet, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "status", c.ns, statefulSet), &v1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeStatefulSets(fake *FakeAppsV1, namespace string) typedappsv1.StatefulSetInterface {
    +	return &fakeStatefulSets{
    +		gentype.NewFakeClientWithListAndApply[*v1.StatefulSet, *v1.StatefulSetList, *appsv1.StatefulSetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("statefulsets"),
    +			v1.SchemeGroupVersion.WithKind("StatefulSet"),
    +			func() *v1.StatefulSet { return &v1.StatefulSet{} },
    +			func() *v1.StatefulSetList { return &v1.StatefulSetList{} },
    +			func(dst, src *v1.StatefulSetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.StatefulSetList) []*v1.StatefulSet { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.StatefulSetList, items []*v1.StatefulSet) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.StatefulSet), err
    -}
    -
    -// Delete takes name of the statefulSet and deletes it. Returns an error if one occurs.
    -func (c *FakeStatefulSets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(statefulsetsResource, c.ns, name, opts), &v1.StatefulSet{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeStatefulSets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(statefulsetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.StatefulSetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched statefulSet.
    -func (c *FakeStatefulSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, name, pt, data, subresources...), &v1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.StatefulSet), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied statefulSet.
    -func (c *FakeStatefulSets) Apply(ctx context.Context, statefulSet *appsv1.StatefulSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, *name, types.ApplyPatchType, data), &v1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.StatefulSet), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeStatefulSets) ApplyStatus(ctx context.Context, statefulSet *appsv1.StatefulSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.StatefulSet), err
     }
     
     // GetScale takes name of the statefulSet, and returns the corresponding scale object, and an error if there is any.
    -func (c *FakeStatefulSets) GetScale(ctx context.Context, statefulSetName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeStatefulSets) GetScale(ctx context.Context, statefulSetName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewGetSubresourceAction(statefulsetsResource, c.ns, "scale", statefulSetName), &autoscalingv1.Scale{})
    +		Invokes(testing.NewGetSubresourceActionWithOptions(c.Resource(), c.Namespace(), "scale", statefulSetName, options), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
     
     // UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
    -func (c *FakeStatefulSets) UpdateScale(ctx context.Context, statefulSetName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeStatefulSets) UpdateScale(ctx context.Context, statefulSetName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "scale", c.ns, scale), &autoscalingv1.Scale{})
    +		Invokes(testing.NewUpdateSubresourceActionWithOptions(c.Resource(), "scale", c.Namespace(), scale, opts), &autoscalingv1.Scale{})
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
     
     // ApplyScale takes top resource name and the apply declarative configuration for scale,
     // applies it and returns the applied scale, and an error, if there is any.
    -func (c *FakeStatefulSets) ApplyScale(ctx context.Context, statefulSetName string, scale *applyconfigurationsautoscalingv1.ScaleApplyConfiguration, opts metav1.ApplyOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeStatefulSets) ApplyScale(ctx context.Context, statefulSetName string, scale *applyconfigurationsautoscalingv1.ScaleApplyConfiguration, opts metav1.ApplyOptions) (result *autoscalingv1.Scale, err error) {
     	if scale == nil {
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
    @@ -222,11 +91,12 @@ func (c *FakeStatefulSets) ApplyScale(ctx context.Context, statefulSetName strin
     	if err != nil {
     		return nil, err
     	}
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, statefulSetName, types.ApplyPatchType, data, "status"), &autoscalingv1.Scale{})
    +		Invokes(testing.NewPatchSubresourceActionWithOptions(c.Resource(), c.Namespace(), statefulSetName, types.ApplyPatchType, data, opts.ToPatchOptions(), "scale"), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go
    index 917ed521f4f3..db0fed952c11 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go
    @@ -19,20 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
    +	fmt "fmt"
     
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     	autoscalingv1 "k8s.io/api/autoscaling/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
    +	applyconfigurationsappsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
     	applyconfigurationsautoscalingv1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
    +	apply "k8s.io/client-go/util/apply"
     )
     
     // ReplicaSetsGetter has a method to return a ReplicaSetInterface.
    @@ -43,17 +42,19 @@ type ReplicaSetsGetter interface {
     
     // ReplicaSetInterface has methods to work with ReplicaSet resources.
     type ReplicaSetInterface interface {
    -	Create(ctx context.Context, replicaSet *v1.ReplicaSet, opts metav1.CreateOptions) (*v1.ReplicaSet, error)
    -	Update(ctx context.Context, replicaSet *v1.ReplicaSet, opts metav1.UpdateOptions) (*v1.ReplicaSet, error)
    -	UpdateStatus(ctx context.Context, replicaSet *v1.ReplicaSet, opts metav1.UpdateOptions) (*v1.ReplicaSet, error)
    +	Create(ctx context.Context, replicaSet *appsv1.ReplicaSet, opts metav1.CreateOptions) (*appsv1.ReplicaSet, error)
    +	Update(ctx context.Context, replicaSet *appsv1.ReplicaSet, opts metav1.UpdateOptions) (*appsv1.ReplicaSet, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, replicaSet *appsv1.ReplicaSet, opts metav1.UpdateOptions) (*appsv1.ReplicaSet, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ReplicaSet, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ReplicaSetList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*appsv1.ReplicaSet, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*appsv1.ReplicaSetList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ReplicaSet, err error)
    -	Apply(ctx context.Context, replicaSet *appsv1.ReplicaSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicaSet, err error)
    -	ApplyStatus(ctx context.Context, replicaSet *appsv1.ReplicaSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicaSet, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *appsv1.ReplicaSet, err error)
    +	Apply(ctx context.Context, replicaSet *applyconfigurationsappsv1.ReplicaSetApplyConfiguration, opts metav1.ApplyOptions) (result *appsv1.ReplicaSet, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, replicaSet *applyconfigurationsappsv1.ReplicaSetApplyConfiguration, opts metav1.ApplyOptions) (result *appsv1.ReplicaSet, err error)
     	GetScale(ctx context.Context, replicaSetName string, options metav1.GetOptions) (*autoscalingv1.Scale, error)
     	UpdateScale(ctx context.Context, replicaSetName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (*autoscalingv1.Scale, error)
     	ApplyScale(ctx context.Context, replicaSetName string, scale *applyconfigurationsautoscalingv1.ScaleApplyConfiguration, opts metav1.ApplyOptions) (*autoscalingv1.Scale, error)
    @@ -63,209 +64,30 @@ type ReplicaSetInterface interface {
     
     // replicaSets implements ReplicaSetInterface
     type replicaSets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1.ReplicaSet, *appsv1.ReplicaSetList, *applyconfigurationsappsv1.ReplicaSetApplyConfiguration]
     }
     
     // newReplicaSets returns a ReplicaSets
     func newReplicaSets(c *AppsV1Client, namespace string) *replicaSets {
     	return &replicaSets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1.ReplicaSet, *appsv1.ReplicaSetList, *applyconfigurationsappsv1.ReplicaSetApplyConfiguration](
    +			"replicasets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1.ReplicaSet { return &appsv1.ReplicaSet{} },
    +			func() *appsv1.ReplicaSetList { return &appsv1.ReplicaSetList{} },
    +			gentype.PrefersProtobuf[*appsv1.ReplicaSet](),
    +		),
     	}
     }
     
    -// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any.
    -func (c *replicaSets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ReplicaSet, err error) {
    -	result = &v1.ReplicaSet{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors.
    -func (c *replicaSets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ReplicaSetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ReplicaSetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested replicaSets.
    -func (c *replicaSets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a replicaSet and creates it.  Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *replicaSets) Create(ctx context.Context, replicaSet *v1.ReplicaSet, opts metav1.CreateOptions) (result *v1.ReplicaSet, err error) {
    -	result = &v1.ReplicaSet{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicaSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *replicaSets) Update(ctx context.Context, replicaSet *v1.ReplicaSet, opts metav1.UpdateOptions) (result *v1.ReplicaSet, err error) {
    -	result = &v1.ReplicaSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(replicaSet.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicaSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *replicaSets) UpdateStatus(ctx context.Context, replicaSet *v1.ReplicaSet, opts metav1.UpdateOptions) (result *v1.ReplicaSet, err error) {
    -	result = &v1.ReplicaSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(replicaSet.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicaSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs.
    -func (c *replicaSets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *replicaSets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched replicaSet.
    -func (c *replicaSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ReplicaSet, err error) {
    -	result = &v1.ReplicaSet{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied replicaSet.
    -func (c *replicaSets) Apply(ctx context.Context, replicaSet *appsv1.ReplicaSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -	result = &v1.ReplicaSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *replicaSets) ApplyStatus(ctx context.Context, replicaSet *appsv1.ReplicaSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.ReplicaSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
     // GetScale takes name of the replicaSet, and returns the corresponding autoscalingv1.Scale object, and an error if there is any.
     func (c *replicaSets) GetScale(ctx context.Context, replicaSetName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    +	err = c.GetClient().Get().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("replicasets").
     		Name(replicaSetName).
     		SubResource("scale").
    @@ -278,8 +100,9 @@ func (c *replicaSets) GetScale(ctx context.Context, replicaSetName string, optio
     // UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
     func (c *replicaSets) UpdateScale(ctx context.Context, replicaSetName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    +	err = c.GetClient().Put().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("replicasets").
     		Name(replicaSetName).
     		SubResource("scale").
    @@ -297,19 +120,19 @@ func (c *replicaSets) ApplyScale(ctx context.Context, replicaSetName string, sca
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
     	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(scale)
    +	request, err := apply.NewRequest(c.GetClient(), scale)
     	if err != nil {
     		return nil, err
     	}
     
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    +	err = request.
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("replicasets").
     		Name(replicaSetName).
     		SubResource("scale").
     		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
     		Do(ctx).
     		Into(result)
     	return
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go
    index d1fbb915d82d..e52cc6159ac9 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go
    @@ -19,20 +19,19 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
    +	fmt "fmt"
     
    -	v1 "k8s.io/api/apps/v1"
    +	appsv1 "k8s.io/api/apps/v1"
     	autoscalingv1 "k8s.io/api/autoscaling/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
    +	applyconfigurationsappsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
     	applyconfigurationsautoscalingv1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
    +	apply "k8s.io/client-go/util/apply"
     )
     
     // StatefulSetsGetter has a method to return a StatefulSetInterface.
    @@ -43,17 +42,19 @@ type StatefulSetsGetter interface {
     
     // StatefulSetInterface has methods to work with StatefulSet resources.
     type StatefulSetInterface interface {
    -	Create(ctx context.Context, statefulSet *v1.StatefulSet, opts metav1.CreateOptions) (*v1.StatefulSet, error)
    -	Update(ctx context.Context, statefulSet *v1.StatefulSet, opts metav1.UpdateOptions) (*v1.StatefulSet, error)
    -	UpdateStatus(ctx context.Context, statefulSet *v1.StatefulSet, opts metav1.UpdateOptions) (*v1.StatefulSet, error)
    +	Create(ctx context.Context, statefulSet *appsv1.StatefulSet, opts metav1.CreateOptions) (*appsv1.StatefulSet, error)
    +	Update(ctx context.Context, statefulSet *appsv1.StatefulSet, opts metav1.UpdateOptions) (*appsv1.StatefulSet, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, statefulSet *appsv1.StatefulSet, opts metav1.UpdateOptions) (*appsv1.StatefulSet, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.StatefulSet, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.StatefulSetList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*appsv1.StatefulSet, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*appsv1.StatefulSetList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.StatefulSet, err error)
    -	Apply(ctx context.Context, statefulSet *appsv1.StatefulSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.StatefulSet, err error)
    -	ApplyStatus(ctx context.Context, statefulSet *appsv1.StatefulSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.StatefulSet, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *appsv1.StatefulSet, err error)
    +	Apply(ctx context.Context, statefulSet *applyconfigurationsappsv1.StatefulSetApplyConfiguration, opts metav1.ApplyOptions) (result *appsv1.StatefulSet, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, statefulSet *applyconfigurationsappsv1.StatefulSetApplyConfiguration, opts metav1.ApplyOptions) (result *appsv1.StatefulSet, err error)
     	GetScale(ctx context.Context, statefulSetName string, options metav1.GetOptions) (*autoscalingv1.Scale, error)
     	UpdateScale(ctx context.Context, statefulSetName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (*autoscalingv1.Scale, error)
     	ApplyScale(ctx context.Context, statefulSetName string, scale *applyconfigurationsautoscalingv1.ScaleApplyConfiguration, opts metav1.ApplyOptions) (*autoscalingv1.Scale, error)
    @@ -63,209 +64,30 @@ type StatefulSetInterface interface {
     
     // statefulSets implements StatefulSetInterface
     type statefulSets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1.StatefulSet, *appsv1.StatefulSetList, *applyconfigurationsappsv1.StatefulSetApplyConfiguration]
     }
     
     // newStatefulSets returns a StatefulSets
     func newStatefulSets(c *AppsV1Client, namespace string) *statefulSets {
     	return &statefulSets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1.StatefulSet, *appsv1.StatefulSetList, *applyconfigurationsappsv1.StatefulSetApplyConfiguration](
    +			"statefulsets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1.StatefulSet { return &appsv1.StatefulSet{} },
    +			func() *appsv1.StatefulSetList { return &appsv1.StatefulSetList{} },
    +			gentype.PrefersProtobuf[*appsv1.StatefulSet](),
    +		),
     	}
     }
     
    -// Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any.
    -func (c *statefulSets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.StatefulSet, err error) {
    -	result = &v1.StatefulSet{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of StatefulSets that match those selectors.
    -func (c *statefulSets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.StatefulSetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.StatefulSetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested statefulSets.
    -func (c *statefulSets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a statefulSet and creates it.  Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *statefulSets) Create(ctx context.Context, statefulSet *v1.StatefulSet, opts metav1.CreateOptions) (result *v1.StatefulSet, err error) {
    -	result = &v1.StatefulSet{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(statefulSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a statefulSet and updates it. Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *statefulSets) Update(ctx context.Context, statefulSet *v1.StatefulSet, opts metav1.UpdateOptions) (result *v1.StatefulSet, err error) {
    -	result = &v1.StatefulSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(statefulSet.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(statefulSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *statefulSets) UpdateStatus(ctx context.Context, statefulSet *v1.StatefulSet, opts metav1.UpdateOptions) (result *v1.StatefulSet, err error) {
    -	result = &v1.StatefulSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(statefulSet.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(statefulSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the statefulSet and deletes it. Returns an error if one occurs.
    -func (c *statefulSets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *statefulSets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched statefulSet.
    -func (c *statefulSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.StatefulSet, err error) {
    -	result = &v1.StatefulSet{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied statefulSet.
    -func (c *statefulSets) Apply(ctx context.Context, statefulSet *appsv1.StatefulSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -	result = &v1.StatefulSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *statefulSets) ApplyStatus(ctx context.Context, statefulSet *appsv1.StatefulSetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.StatefulSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
     // GetScale takes name of the statefulSet, and returns the corresponding autoscalingv1.Scale object, and an error if there is any.
     func (c *statefulSets) GetScale(ctx context.Context, statefulSetName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    +	err = c.GetClient().Get().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("statefulsets").
     		Name(statefulSetName).
     		SubResource("scale").
    @@ -278,8 +100,9 @@ func (c *statefulSets) GetScale(ctx context.Context, statefulSetName string, opt
     // UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
     func (c *statefulSets) UpdateScale(ctx context.Context, statefulSetName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    +	err = c.GetClient().Put().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("statefulsets").
     		Name(statefulSetName).
     		SubResource("scale").
    @@ -297,19 +120,19 @@ func (c *statefulSets) ApplyScale(ctx context.Context, statefulSetName string, s
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
     	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(scale)
    +	request, err := apply.NewRequest(c.GetClient(), scale)
     	if err != nil {
     		return nil, err
     	}
     
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    +	err = request.
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("statefulsets").
     		Name(statefulSetName).
     		SubResource("scale").
     		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
     		Do(ctx).
     		Into(result)
     	return
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go
    index 6b7148c5a869..72bde633bff1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -95,10 +95,10 @@ func New(c rest.Interface) *AppsV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := appsv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go
    index 0c3f49ba149c..1bd92695bd65 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
    +	applyconfigurationsappsv1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ControllerRevisionsGetter has a method to return a ControllerRevisionInterface.
    @@ -41,168 +38,34 @@ type ControllerRevisionsGetter interface {
     
     // ControllerRevisionInterface has methods to work with ControllerRevision resources.
     type ControllerRevisionInterface interface {
    -	Create(ctx context.Context, controllerRevision *v1beta1.ControllerRevision, opts v1.CreateOptions) (*v1beta1.ControllerRevision, error)
    -	Update(ctx context.Context, controllerRevision *v1beta1.ControllerRevision, opts v1.UpdateOptions) (*v1beta1.ControllerRevision, error)
    +	Create(ctx context.Context, controllerRevision *appsv1beta1.ControllerRevision, opts v1.CreateOptions) (*appsv1beta1.ControllerRevision, error)
    +	Update(ctx context.Context, controllerRevision *appsv1beta1.ControllerRevision, opts v1.UpdateOptions) (*appsv1beta1.ControllerRevision, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.ControllerRevision, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ControllerRevisionList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*appsv1beta1.ControllerRevision, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*appsv1beta1.ControllerRevisionList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ControllerRevision, err error)
    -	Apply(ctx context.Context, controllerRevision *appsv1beta1.ControllerRevisionApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ControllerRevision, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *appsv1beta1.ControllerRevision, err error)
    +	Apply(ctx context.Context, controllerRevision *applyconfigurationsappsv1beta1.ControllerRevisionApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta1.ControllerRevision, err error)
     	ControllerRevisionExpansion
     }
     
     // controllerRevisions implements ControllerRevisionInterface
     type controllerRevisions struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1beta1.ControllerRevision, *appsv1beta1.ControllerRevisionList, *applyconfigurationsappsv1beta1.ControllerRevisionApplyConfiguration]
     }
     
     // newControllerRevisions returns a ControllerRevisions
     func newControllerRevisions(c *AppsV1beta1Client, namespace string) *controllerRevisions {
     	return &controllerRevisions{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1beta1.ControllerRevision, *appsv1beta1.ControllerRevisionList, *applyconfigurationsappsv1beta1.ControllerRevisionApplyConfiguration](
    +			"controllerrevisions",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1beta1.ControllerRevision { return &appsv1beta1.ControllerRevision{} },
    +			func() *appsv1beta1.ControllerRevisionList { return &appsv1beta1.ControllerRevisionList{} },
    +			gentype.PrefersProtobuf[*appsv1beta1.ControllerRevision](),
    +		),
     	}
     }
    -
    -// Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any.
    -func (c *controllerRevisions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ControllerRevision, err error) {
    -	result = &v1beta1.ControllerRevision{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors.
    -func (c *controllerRevisions) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ControllerRevisionList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.ControllerRevisionList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested controllerRevisions.
    -func (c *controllerRevisions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a controllerRevision and creates it.  Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *controllerRevisions) Create(ctx context.Context, controllerRevision *v1beta1.ControllerRevision, opts v1.CreateOptions) (result *v1beta1.ControllerRevision, err error) {
    -	result = &v1beta1.ControllerRevision{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(controllerRevision).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a controllerRevision and updates it. Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *controllerRevisions) Update(ctx context.Context, controllerRevision *v1beta1.ControllerRevision, opts v1.UpdateOptions) (result *v1beta1.ControllerRevision, err error) {
    -	result = &v1beta1.ControllerRevision{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(controllerRevision.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(controllerRevision).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs.
    -func (c *controllerRevisions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *controllerRevisions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched controllerRevision.
    -func (c *controllerRevisions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ControllerRevision, err error) {
    -	result = &v1beta1.ControllerRevision{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied controllerRevision.
    -func (c *controllerRevisions) Apply(ctx context.Context, controllerRevision *appsv1beta1.ControllerRevisionApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ControllerRevision, err error) {
    -	if controllerRevision == nil {
    -		return nil, fmt.Errorf("controllerRevision provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(controllerRevision)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := controllerRevision.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("controllerRevision.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.ControllerRevision{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go
    index 281758c4351b..e01dd5a2fa73 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
    +	applyconfigurationsappsv1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // DeploymentsGetter has a method to return a DeploymentInterface.
    @@ -41,216 +38,38 @@ type DeploymentsGetter interface {
     
     // DeploymentInterface has methods to work with Deployment resources.
     type DeploymentInterface interface {
    -	Create(ctx context.Context, deployment *v1beta1.Deployment, opts v1.CreateOptions) (*v1beta1.Deployment, error)
    -	Update(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (*v1beta1.Deployment, error)
    -	UpdateStatus(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (*v1beta1.Deployment, error)
    +	Create(ctx context.Context, deployment *appsv1beta1.Deployment, opts v1.CreateOptions) (*appsv1beta1.Deployment, error)
    +	Update(ctx context.Context, deployment *appsv1beta1.Deployment, opts v1.UpdateOptions) (*appsv1beta1.Deployment, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, deployment *appsv1beta1.Deployment, opts v1.UpdateOptions) (*appsv1beta1.Deployment, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.Deployment, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.DeploymentList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*appsv1beta1.Deployment, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*appsv1beta1.DeploymentList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Deployment, err error)
    -	Apply(ctx context.Context, deployment *appsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error)
    -	ApplyStatus(ctx context.Context, deployment *appsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *appsv1beta1.Deployment, err error)
    +	Apply(ctx context.Context, deployment *applyconfigurationsappsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta1.Deployment, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, deployment *applyconfigurationsappsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta1.Deployment, err error)
     	DeploymentExpansion
     }
     
     // deployments implements DeploymentInterface
     type deployments struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1beta1.Deployment, *appsv1beta1.DeploymentList, *applyconfigurationsappsv1beta1.DeploymentApplyConfiguration]
     }
     
     // newDeployments returns a Deployments
     func newDeployments(c *AppsV1beta1Client, namespace string) *deployments {
     	return &deployments{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1beta1.Deployment, *appsv1beta1.DeploymentList, *applyconfigurationsappsv1beta1.DeploymentApplyConfiguration](
    +			"deployments",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1beta1.Deployment { return &appsv1beta1.Deployment{} },
    +			func() *appsv1beta1.DeploymentList { return &appsv1beta1.DeploymentList{} },
    +			gentype.PrefersProtobuf[*appsv1beta1.Deployment](),
    +		),
     	}
     }
    -
    -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any.
    -func (c *deployments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Deployment, err error) {
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Deployments that match those selectors.
    -func (c *deployments) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.DeploymentList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.DeploymentList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested deployments.
    -func (c *deployments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a deployment and creates it.  Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *deployments) Create(ctx context.Context, deployment *v1beta1.Deployment, opts v1.CreateOptions) (result *v1beta1.Deployment, err error) {
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *deployments) Update(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (result *v1beta1.Deployment, err error) {
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(deployment.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *deployments) UpdateStatus(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (result *v1beta1.Deployment, err error) {
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(deployment.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the deployment and deletes it. Returns an error if one occurs.
    -func (c *deployments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *deployments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched deployment.
    -func (c *deployments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Deployment, err error) {
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied deployment.
    -func (c *deployments) Apply(ctx context.Context, deployment *appsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *deployments) ApplyStatus(ctx context.Context, deployment *appsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go
    index 8e65d78d29ae..ad3d0d6d370f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go
    @@ -29,15 +29,15 @@ type FakeAppsV1beta1 struct {
     }
     
     func (c *FakeAppsV1beta1) ControllerRevisions(namespace string) v1beta1.ControllerRevisionInterface {
    -	return &FakeControllerRevisions{c, namespace}
    +	return newFakeControllerRevisions(c, namespace)
     }
     
     func (c *FakeAppsV1beta1) Deployments(namespace string) v1beta1.DeploymentInterface {
    -	return &FakeDeployments{c, namespace}
    +	return newFakeDeployments(c, namespace)
     }
     
     func (c *FakeAppsV1beta1) StatefulSets(namespace string) v1beta1.StatefulSetInterface {
    -	return &FakeStatefulSets{c, namespace}
    +	return newFakeStatefulSets(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go
    index 1954c9470350..fd075b32cd40 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go
    @@ -19,136 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/apps/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1"
     )
     
    -// FakeControllerRevisions implements ControllerRevisionInterface
    -type FakeControllerRevisions struct {
    +// fakeControllerRevisions implements ControllerRevisionInterface
    +type fakeControllerRevisions struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ControllerRevision, *v1beta1.ControllerRevisionList, *appsv1beta1.ControllerRevisionApplyConfiguration]
     	Fake *FakeAppsV1beta1
    -	ns   string
    -}
    -
    -var controllerrevisionsResource = v1beta1.SchemeGroupVersion.WithResource("controllerrevisions")
    -
    -var controllerrevisionsKind = v1beta1.SchemeGroupVersion.WithKind("ControllerRevision")
    -
    -// Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any.
    -func (c *FakeControllerRevisions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(controllerrevisionsResource, c.ns, name), &v1beta1.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ControllerRevision), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors.
    -func (c *FakeControllerRevisions) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ControllerRevisionList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(controllerrevisionsResource, controllerrevisionsKind, c.ns, opts), &v1beta1.ControllerRevisionList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.ControllerRevisionList{ListMeta: obj.(*v1beta1.ControllerRevisionList).ListMeta}
    -	for _, item := range obj.(*v1beta1.ControllerRevisionList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested controllerRevisions.
    -func (c *FakeControllerRevisions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(controllerrevisionsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a controllerRevision and creates it.  Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *FakeControllerRevisions) Create(ctx context.Context, controllerRevision *v1beta1.ControllerRevision, opts v1.CreateOptions) (result *v1beta1.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1beta1.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ControllerRevision), err
    -}
    -
    -// Update takes the representation of a controllerRevision and updates it. Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *FakeControllerRevisions) Update(ctx context.Context, controllerRevision *v1beta1.ControllerRevision, opts v1.UpdateOptions) (result *v1beta1.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1beta1.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ControllerRevision), err
    -}
    -
    -// Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs.
    -func (c *FakeControllerRevisions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(controllerrevisionsResource, c.ns, name, opts), &v1beta1.ControllerRevision{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeControllerRevisions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(controllerrevisionsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.ControllerRevisionList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched controllerRevision.
    -func (c *FakeControllerRevisions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, name, pt, data, subresources...), &v1beta1.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ControllerRevision), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied controllerRevision.
    -func (c *FakeControllerRevisions) Apply(ctx context.Context, controllerRevision *appsv1beta1.ControllerRevisionApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ControllerRevision, err error) {
    -	if controllerRevision == nil {
    -		return nil, fmt.Errorf("controllerRevision provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(controllerRevision)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := controllerRevision.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("controllerRevision.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeControllerRevisions(fake *FakeAppsV1beta1, namespace string) typedappsv1beta1.ControllerRevisionInterface {
    +	return &fakeControllerRevisions{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ControllerRevision, *v1beta1.ControllerRevisionList, *appsv1beta1.ControllerRevisionApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("controllerrevisions"),
    +			v1beta1.SchemeGroupVersion.WithKind("ControllerRevision"),
    +			func() *v1beta1.ControllerRevision { return &v1beta1.ControllerRevision{} },
    +			func() *v1beta1.ControllerRevisionList { return &v1beta1.ControllerRevisionList{} },
    +			func(dst, src *v1beta1.ControllerRevisionList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ControllerRevisionList) []*v1beta1.ControllerRevision {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.ControllerRevisionList, items []*v1beta1.ControllerRevision) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.ControllerRevision), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go
    index 9614852f74d2..edef6cb05145 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go
    @@ -19,171 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/apps/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1"
     )
     
    -// FakeDeployments implements DeploymentInterface
    -type FakeDeployments struct {
    +// fakeDeployments implements DeploymentInterface
    +type fakeDeployments struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.Deployment, *v1beta1.DeploymentList, *appsv1beta1.DeploymentApplyConfiguration]
     	Fake *FakeAppsV1beta1
    -	ns   string
    -}
    -
    -var deploymentsResource = v1beta1.SchemeGroupVersion.WithResource("deployments")
    -
    -var deploymentsKind = v1beta1.SchemeGroupVersion.WithKind("Deployment")
    -
    -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any.
    -func (c *FakeDeployments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Deployments that match those selectors.
    -func (c *FakeDeployments) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.DeploymentList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &v1beta1.DeploymentList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.DeploymentList{ListMeta: obj.(*v1beta1.DeploymentList).ListMeta}
    -	for _, item := range obj.(*v1beta1.DeploymentList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested deployments.
    -func (c *FakeDeployments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(deploymentsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a deployment and creates it.  Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *FakeDeployments) Create(ctx context.Context, deployment *v1beta1.Deployment, opts v1.CreateOptions) (result *v1beta1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *FakeDeployments) Update(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (result *v1beta1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeDeployments) UpdateStatus(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (*v1beta1.Deployment, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// Delete takes name of the deployment and deletes it. Returns an error if one occurs.
    -func (c *FakeDeployments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(deploymentsResource, c.ns, name, opts), &v1beta1.Deployment{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeDeployments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.DeploymentList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched deployment.
    -func (c *FakeDeployments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, pt, data, subresources...), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied deployment.
    -func (c *FakeDeployments) Apply(ctx context.Context, deployment *appsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeDeployments) ApplyStatus(ctx context.Context, deployment *appsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeDeployments(fake *FakeAppsV1beta1, namespace string) typedappsv1beta1.DeploymentInterface {
    +	return &fakeDeployments{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.Deployment, *v1beta1.DeploymentList, *appsv1beta1.DeploymentApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("deployments"),
    +			v1beta1.SchemeGroupVersion.WithKind("Deployment"),
    +			func() *v1beta1.Deployment { return &v1beta1.Deployment{} },
    +			func() *v1beta1.DeploymentList { return &v1beta1.DeploymentList{} },
    +			func(dst, src *v1beta1.DeploymentList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.DeploymentList) []*v1beta1.Deployment { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.DeploymentList, items []*v1beta1.Deployment) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.Deployment), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go
    index 2124515cfed1..e6a87f5903d3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go
    @@ -19,171 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/apps/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1"
     )
     
    -// FakeStatefulSets implements StatefulSetInterface
    -type FakeStatefulSets struct {
    +// fakeStatefulSets implements StatefulSetInterface
    +type fakeStatefulSets struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.StatefulSet, *v1beta1.StatefulSetList, *appsv1beta1.StatefulSetApplyConfiguration]
     	Fake *FakeAppsV1beta1
    -	ns   string
    -}
    -
    -var statefulsetsResource = v1beta1.SchemeGroupVersion.WithResource("statefulsets")
    -
    -var statefulsetsKind = v1beta1.SchemeGroupVersion.WithKind("StatefulSet")
    -
    -// Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any.
    -func (c *FakeStatefulSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(statefulsetsResource, c.ns, name), &v1beta1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.StatefulSet), err
    -}
    -
    -// List takes label and field selectors, and returns the list of StatefulSets that match those selectors.
    -func (c *FakeStatefulSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.StatefulSetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(statefulsetsResource, statefulsetsKind, c.ns, opts), &v1beta1.StatefulSetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.StatefulSetList{ListMeta: obj.(*v1beta1.StatefulSetList).ListMeta}
    -	for _, item := range obj.(*v1beta1.StatefulSetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested statefulSets.
    -func (c *FakeStatefulSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(statefulsetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a statefulSet and creates it.  Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *FakeStatefulSets) Create(ctx context.Context, statefulSet *v1beta1.StatefulSet, opts v1.CreateOptions) (result *v1beta1.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(statefulsetsResource, c.ns, statefulSet), &v1beta1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.StatefulSet), err
    -}
    -
    -// Update takes the representation of a statefulSet and updates it. Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *FakeStatefulSets) Update(ctx context.Context, statefulSet *v1beta1.StatefulSet, opts v1.UpdateOptions) (result *v1beta1.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(statefulsetsResource, c.ns, statefulSet), &v1beta1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.StatefulSet), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeStatefulSets) UpdateStatus(ctx context.Context, statefulSet *v1beta1.StatefulSet, opts v1.UpdateOptions) (*v1beta1.StatefulSet, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "status", c.ns, statefulSet), &v1beta1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.StatefulSet), err
    -}
    -
    -// Delete takes name of the statefulSet and deletes it. Returns an error if one occurs.
    -func (c *FakeStatefulSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(statefulsetsResource, c.ns, name, opts), &v1beta1.StatefulSet{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeStatefulSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(statefulsetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.StatefulSetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched statefulSet.
    -func (c *FakeStatefulSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, name, pt, data, subresources...), &v1beta1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.StatefulSet), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied statefulSet.
    -func (c *FakeStatefulSets) Apply(ctx context.Context, statefulSet *appsv1beta1.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.StatefulSet), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeStatefulSets) ApplyStatus(ctx context.Context, statefulSet *appsv1beta1.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta1.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeStatefulSets(fake *FakeAppsV1beta1, namespace string) typedappsv1beta1.StatefulSetInterface {
    +	return &fakeStatefulSets{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.StatefulSet, *v1beta1.StatefulSetList, *appsv1beta1.StatefulSetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("statefulsets"),
    +			v1beta1.SchemeGroupVersion.WithKind("StatefulSet"),
    +			func() *v1beta1.StatefulSet { return &v1beta1.StatefulSet{} },
    +			func() *v1beta1.StatefulSetList { return &v1beta1.StatefulSetList{} },
    +			func(dst, src *v1beta1.StatefulSetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.StatefulSetList) []*v1beta1.StatefulSet { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.StatefulSetList, items []*v1beta1.StatefulSet) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.StatefulSet), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go
    index 3f1aebcffb34..b88acdeb010e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
    +	applyconfigurationsappsv1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // StatefulSetsGetter has a method to return a StatefulSetInterface.
    @@ -41,216 +38,38 @@ type StatefulSetsGetter interface {
     
     // StatefulSetInterface has methods to work with StatefulSet resources.
     type StatefulSetInterface interface {
    -	Create(ctx context.Context, statefulSet *v1beta1.StatefulSet, opts v1.CreateOptions) (*v1beta1.StatefulSet, error)
    -	Update(ctx context.Context, statefulSet *v1beta1.StatefulSet, opts v1.UpdateOptions) (*v1beta1.StatefulSet, error)
    -	UpdateStatus(ctx context.Context, statefulSet *v1beta1.StatefulSet, opts v1.UpdateOptions) (*v1beta1.StatefulSet, error)
    +	Create(ctx context.Context, statefulSet *appsv1beta1.StatefulSet, opts v1.CreateOptions) (*appsv1beta1.StatefulSet, error)
    +	Update(ctx context.Context, statefulSet *appsv1beta1.StatefulSet, opts v1.UpdateOptions) (*appsv1beta1.StatefulSet, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, statefulSet *appsv1beta1.StatefulSet, opts v1.UpdateOptions) (*appsv1beta1.StatefulSet, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.StatefulSet, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.StatefulSetList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*appsv1beta1.StatefulSet, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*appsv1beta1.StatefulSetList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.StatefulSet, err error)
    -	Apply(ctx context.Context, statefulSet *appsv1beta1.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.StatefulSet, err error)
    -	ApplyStatus(ctx context.Context, statefulSet *appsv1beta1.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.StatefulSet, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *appsv1beta1.StatefulSet, err error)
    +	Apply(ctx context.Context, statefulSet *applyconfigurationsappsv1beta1.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta1.StatefulSet, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, statefulSet *applyconfigurationsappsv1beta1.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta1.StatefulSet, err error)
     	StatefulSetExpansion
     }
     
     // statefulSets implements StatefulSetInterface
     type statefulSets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1beta1.StatefulSet, *appsv1beta1.StatefulSetList, *applyconfigurationsappsv1beta1.StatefulSetApplyConfiguration]
     }
     
     // newStatefulSets returns a StatefulSets
     func newStatefulSets(c *AppsV1beta1Client, namespace string) *statefulSets {
     	return &statefulSets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1beta1.StatefulSet, *appsv1beta1.StatefulSetList, *applyconfigurationsappsv1beta1.StatefulSetApplyConfiguration](
    +			"statefulsets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1beta1.StatefulSet { return &appsv1beta1.StatefulSet{} },
    +			func() *appsv1beta1.StatefulSetList { return &appsv1beta1.StatefulSetList{} },
    +			gentype.PrefersProtobuf[*appsv1beta1.StatefulSet](),
    +		),
     	}
     }
    -
    -// Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any.
    -func (c *statefulSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.StatefulSet, err error) {
    -	result = &v1beta1.StatefulSet{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of StatefulSets that match those selectors.
    -func (c *statefulSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.StatefulSetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.StatefulSetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested statefulSets.
    -func (c *statefulSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a statefulSet and creates it.  Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *statefulSets) Create(ctx context.Context, statefulSet *v1beta1.StatefulSet, opts v1.CreateOptions) (result *v1beta1.StatefulSet, err error) {
    -	result = &v1beta1.StatefulSet{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(statefulSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a statefulSet and updates it. Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *statefulSets) Update(ctx context.Context, statefulSet *v1beta1.StatefulSet, opts v1.UpdateOptions) (result *v1beta1.StatefulSet, err error) {
    -	result = &v1beta1.StatefulSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(statefulSet.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(statefulSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *statefulSets) UpdateStatus(ctx context.Context, statefulSet *v1beta1.StatefulSet, opts v1.UpdateOptions) (result *v1beta1.StatefulSet, err error) {
    -	result = &v1beta1.StatefulSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(statefulSet.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(statefulSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the statefulSet and deletes it. Returns an error if one occurs.
    -func (c *statefulSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *statefulSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched statefulSet.
    -func (c *statefulSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.StatefulSet, err error) {
    -	result = &v1beta1.StatefulSet{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied statefulSet.
    -func (c *statefulSets) Apply(ctx context.Context, statefulSet *appsv1beta1.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.StatefulSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *statefulSets) ApplyStatus(ctx context.Context, statefulSet *appsv1beta1.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.StatefulSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/apps_client.go
    index 968abc56f804..e13d12a76323 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/apps_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/apps_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -105,10 +105,10 @@ func New(c rest.Interface) *AppsV1beta2Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta2.SchemeGroupVersion
    +	gv := appsv1beta2.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/controllerrevision.go
    index e1643277a626..a170805b33ec 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/controllerrevision.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	applyconfigurationsappsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ControllerRevisionsGetter has a method to return a ControllerRevisionInterface.
    @@ -41,168 +38,34 @@ type ControllerRevisionsGetter interface {
     
     // ControllerRevisionInterface has methods to work with ControllerRevision resources.
     type ControllerRevisionInterface interface {
    -	Create(ctx context.Context, controllerRevision *v1beta2.ControllerRevision, opts v1.CreateOptions) (*v1beta2.ControllerRevision, error)
    -	Update(ctx context.Context, controllerRevision *v1beta2.ControllerRevision, opts v1.UpdateOptions) (*v1beta2.ControllerRevision, error)
    +	Create(ctx context.Context, controllerRevision *appsv1beta2.ControllerRevision, opts v1.CreateOptions) (*appsv1beta2.ControllerRevision, error)
    +	Update(ctx context.Context, controllerRevision *appsv1beta2.ControllerRevision, opts v1.UpdateOptions) (*appsv1beta2.ControllerRevision, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.ControllerRevision, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta2.ControllerRevisionList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*appsv1beta2.ControllerRevision, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*appsv1beta2.ControllerRevisionList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.ControllerRevision, err error)
    -	Apply(ctx context.Context, controllerRevision *appsv1beta2.ControllerRevisionApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.ControllerRevision, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *appsv1beta2.ControllerRevision, err error)
    +	Apply(ctx context.Context, controllerRevision *applyconfigurationsappsv1beta2.ControllerRevisionApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta2.ControllerRevision, err error)
     	ControllerRevisionExpansion
     }
     
     // controllerRevisions implements ControllerRevisionInterface
     type controllerRevisions struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1beta2.ControllerRevision, *appsv1beta2.ControllerRevisionList, *applyconfigurationsappsv1beta2.ControllerRevisionApplyConfiguration]
     }
     
     // newControllerRevisions returns a ControllerRevisions
     func newControllerRevisions(c *AppsV1beta2Client, namespace string) *controllerRevisions {
     	return &controllerRevisions{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1beta2.ControllerRevision, *appsv1beta2.ControllerRevisionList, *applyconfigurationsappsv1beta2.ControllerRevisionApplyConfiguration](
    +			"controllerrevisions",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1beta2.ControllerRevision { return &appsv1beta2.ControllerRevision{} },
    +			func() *appsv1beta2.ControllerRevisionList { return &appsv1beta2.ControllerRevisionList{} },
    +			gentype.PrefersProtobuf[*appsv1beta2.ControllerRevision](),
    +		),
     	}
     }
    -
    -// Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any.
    -func (c *controllerRevisions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.ControllerRevision, err error) {
    -	result = &v1beta2.ControllerRevision{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors.
    -func (c *controllerRevisions) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.ControllerRevisionList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta2.ControllerRevisionList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested controllerRevisions.
    -func (c *controllerRevisions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a controllerRevision and creates it.  Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *controllerRevisions) Create(ctx context.Context, controllerRevision *v1beta2.ControllerRevision, opts v1.CreateOptions) (result *v1beta2.ControllerRevision, err error) {
    -	result = &v1beta2.ControllerRevision{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(controllerRevision).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a controllerRevision and updates it. Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *controllerRevisions) Update(ctx context.Context, controllerRevision *v1beta2.ControllerRevision, opts v1.UpdateOptions) (result *v1beta2.ControllerRevision, err error) {
    -	result = &v1beta2.ControllerRevision{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(controllerRevision.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(controllerRevision).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs.
    -func (c *controllerRevisions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *controllerRevisions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched controllerRevision.
    -func (c *controllerRevisions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.ControllerRevision, err error) {
    -	result = &v1beta2.ControllerRevision{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied controllerRevision.
    -func (c *controllerRevisions) Apply(ctx context.Context, controllerRevision *appsv1beta2.ControllerRevisionApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.ControllerRevision, err error) {
    -	if controllerRevision == nil {
    -		return nil, fmt.Errorf("controllerRevision provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(controllerRevision)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := controllerRevision.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("controllerRevision.Name must be provided to Apply")
    -	}
    -	result = &v1beta2.ControllerRevision{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("controllerrevisions").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/daemonset.go
    index 1391df87d216..f078121b0499 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/daemonset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/daemonset.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	applyconfigurationsappsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // DaemonSetsGetter has a method to return a DaemonSetInterface.
    @@ -41,216 +38,38 @@ type DaemonSetsGetter interface {
     
     // DaemonSetInterface has methods to work with DaemonSet resources.
     type DaemonSetInterface interface {
    -	Create(ctx context.Context, daemonSet *v1beta2.DaemonSet, opts v1.CreateOptions) (*v1beta2.DaemonSet, error)
    -	Update(ctx context.Context, daemonSet *v1beta2.DaemonSet, opts v1.UpdateOptions) (*v1beta2.DaemonSet, error)
    -	UpdateStatus(ctx context.Context, daemonSet *v1beta2.DaemonSet, opts v1.UpdateOptions) (*v1beta2.DaemonSet, error)
    +	Create(ctx context.Context, daemonSet *appsv1beta2.DaemonSet, opts v1.CreateOptions) (*appsv1beta2.DaemonSet, error)
    +	Update(ctx context.Context, daemonSet *appsv1beta2.DaemonSet, opts v1.UpdateOptions) (*appsv1beta2.DaemonSet, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, daemonSet *appsv1beta2.DaemonSet, opts v1.UpdateOptions) (*appsv1beta2.DaemonSet, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.DaemonSet, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta2.DaemonSetList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*appsv1beta2.DaemonSet, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*appsv1beta2.DaemonSetList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.DaemonSet, err error)
    -	Apply(ctx context.Context, daemonSet *appsv1beta2.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.DaemonSet, err error)
    -	ApplyStatus(ctx context.Context, daemonSet *appsv1beta2.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.DaemonSet, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *appsv1beta2.DaemonSet, err error)
    +	Apply(ctx context.Context, daemonSet *applyconfigurationsappsv1beta2.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta2.DaemonSet, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, daemonSet *applyconfigurationsappsv1beta2.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta2.DaemonSet, err error)
     	DaemonSetExpansion
     }
     
     // daemonSets implements DaemonSetInterface
     type daemonSets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1beta2.DaemonSet, *appsv1beta2.DaemonSetList, *applyconfigurationsappsv1beta2.DaemonSetApplyConfiguration]
     }
     
     // newDaemonSets returns a DaemonSets
     func newDaemonSets(c *AppsV1beta2Client, namespace string) *daemonSets {
     	return &daemonSets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1beta2.DaemonSet, *appsv1beta2.DaemonSetList, *applyconfigurationsappsv1beta2.DaemonSetApplyConfiguration](
    +			"daemonsets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1beta2.DaemonSet { return &appsv1beta2.DaemonSet{} },
    +			func() *appsv1beta2.DaemonSetList { return &appsv1beta2.DaemonSetList{} },
    +			gentype.PrefersProtobuf[*appsv1beta2.DaemonSet](),
    +		),
     	}
     }
    -
    -// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any.
    -func (c *daemonSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.DaemonSet, err error) {
    -	result = &v1beta2.DaemonSet{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of DaemonSets that match those selectors.
    -func (c *daemonSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.DaemonSetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta2.DaemonSetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested daemonSets.
    -func (c *daemonSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a daemonSet and creates it.  Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *daemonSets) Create(ctx context.Context, daemonSet *v1beta2.DaemonSet, opts v1.CreateOptions) (result *v1beta2.DaemonSet, err error) {
    -	result = &v1beta2.DaemonSet{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(daemonSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *daemonSets) Update(ctx context.Context, daemonSet *v1beta2.DaemonSet, opts v1.UpdateOptions) (result *v1beta2.DaemonSet, err error) {
    -	result = &v1beta2.DaemonSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(daemonSet.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(daemonSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *daemonSets) UpdateStatus(ctx context.Context, daemonSet *v1beta2.DaemonSet, opts v1.UpdateOptions) (result *v1beta2.DaemonSet, err error) {
    -	result = &v1beta2.DaemonSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(daemonSet.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(daemonSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs.
    -func (c *daemonSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *daemonSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched daemonSet.
    -func (c *daemonSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.DaemonSet, err error) {
    -	result = &v1beta2.DaemonSet{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied daemonSet.
    -func (c *daemonSets) Apply(ctx context.Context, daemonSet *appsv1beta2.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -	result = &v1beta2.DaemonSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *daemonSets) ApplyStatus(ctx context.Context, daemonSet *appsv1beta2.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta2.DaemonSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/deployment.go
    index 5bda0d92c11a..1be57edb24af 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/deployment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/deployment.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	applyconfigurationsappsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // DeploymentsGetter has a method to return a DeploymentInterface.
    @@ -41,216 +38,38 @@ type DeploymentsGetter interface {
     
     // DeploymentInterface has methods to work with Deployment resources.
     type DeploymentInterface interface {
    -	Create(ctx context.Context, deployment *v1beta2.Deployment, opts v1.CreateOptions) (*v1beta2.Deployment, error)
    -	Update(ctx context.Context, deployment *v1beta2.Deployment, opts v1.UpdateOptions) (*v1beta2.Deployment, error)
    -	UpdateStatus(ctx context.Context, deployment *v1beta2.Deployment, opts v1.UpdateOptions) (*v1beta2.Deployment, error)
    +	Create(ctx context.Context, deployment *appsv1beta2.Deployment, opts v1.CreateOptions) (*appsv1beta2.Deployment, error)
    +	Update(ctx context.Context, deployment *appsv1beta2.Deployment, opts v1.UpdateOptions) (*appsv1beta2.Deployment, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, deployment *appsv1beta2.Deployment, opts v1.UpdateOptions) (*appsv1beta2.Deployment, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.Deployment, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta2.DeploymentList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*appsv1beta2.Deployment, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*appsv1beta2.DeploymentList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.Deployment, err error)
    -	Apply(ctx context.Context, deployment *appsv1beta2.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.Deployment, err error)
    -	ApplyStatus(ctx context.Context, deployment *appsv1beta2.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.Deployment, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *appsv1beta2.Deployment, err error)
    +	Apply(ctx context.Context, deployment *applyconfigurationsappsv1beta2.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta2.Deployment, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, deployment *applyconfigurationsappsv1beta2.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta2.Deployment, err error)
     	DeploymentExpansion
     }
     
     // deployments implements DeploymentInterface
     type deployments struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1beta2.Deployment, *appsv1beta2.DeploymentList, *applyconfigurationsappsv1beta2.DeploymentApplyConfiguration]
     }
     
     // newDeployments returns a Deployments
     func newDeployments(c *AppsV1beta2Client, namespace string) *deployments {
     	return &deployments{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1beta2.Deployment, *appsv1beta2.DeploymentList, *applyconfigurationsappsv1beta2.DeploymentApplyConfiguration](
    +			"deployments",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1beta2.Deployment { return &appsv1beta2.Deployment{} },
    +			func() *appsv1beta2.DeploymentList { return &appsv1beta2.DeploymentList{} },
    +			gentype.PrefersProtobuf[*appsv1beta2.Deployment](),
    +		),
     	}
     }
    -
    -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any.
    -func (c *deployments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.Deployment, err error) {
    -	result = &v1beta2.Deployment{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Deployments that match those selectors.
    -func (c *deployments) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.DeploymentList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta2.DeploymentList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested deployments.
    -func (c *deployments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a deployment and creates it.  Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *deployments) Create(ctx context.Context, deployment *v1beta2.Deployment, opts v1.CreateOptions) (result *v1beta2.Deployment, err error) {
    -	result = &v1beta2.Deployment{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *deployments) Update(ctx context.Context, deployment *v1beta2.Deployment, opts v1.UpdateOptions) (result *v1beta2.Deployment, err error) {
    -	result = &v1beta2.Deployment{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(deployment.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *deployments) UpdateStatus(ctx context.Context, deployment *v1beta2.Deployment, opts v1.UpdateOptions) (result *v1beta2.Deployment, err error) {
    -	result = &v1beta2.Deployment{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(deployment.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the deployment and deletes it. Returns an error if one occurs.
    -func (c *deployments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *deployments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched deployment.
    -func (c *deployments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.Deployment, err error) {
    -	result = &v1beta2.Deployment{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied deployment.
    -func (c *deployments) Apply(ctx context.Context, deployment *appsv1beta2.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	result = &v1beta2.Deployment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *deployments) ApplyStatus(ctx context.Context, deployment *appsv1beta2.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta2.Deployment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_apps_client.go
    index 0ec34a2cdbc3..2a5c3ed98d51 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_apps_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_apps_client.go
    @@ -29,23 +29,23 @@ type FakeAppsV1beta2 struct {
     }
     
     func (c *FakeAppsV1beta2) ControllerRevisions(namespace string) v1beta2.ControllerRevisionInterface {
    -	return &FakeControllerRevisions{c, namespace}
    +	return newFakeControllerRevisions(c, namespace)
     }
     
     func (c *FakeAppsV1beta2) DaemonSets(namespace string) v1beta2.DaemonSetInterface {
    -	return &FakeDaemonSets{c, namespace}
    +	return newFakeDaemonSets(c, namespace)
     }
     
     func (c *FakeAppsV1beta2) Deployments(namespace string) v1beta2.DeploymentInterface {
    -	return &FakeDeployments{c, namespace}
    +	return newFakeDeployments(c, namespace)
     }
     
     func (c *FakeAppsV1beta2) ReplicaSets(namespace string) v1beta2.ReplicaSetInterface {
    -	return &FakeReplicaSets{c, namespace}
    +	return newFakeReplicaSets(c, namespace)
     }
     
     func (c *FakeAppsV1beta2) StatefulSets(namespace string) v1beta2.StatefulSetInterface {
    -	return &FakeStatefulSets{c, namespace}
    +	return newFakeStatefulSets(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_controllerrevision.go
    index 1bf7fb331490..f9de53c1683e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_controllerrevision.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_controllerrevision.go
    @@ -19,136 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta2 "k8s.io/api/apps/v1beta2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
     )
     
    -// FakeControllerRevisions implements ControllerRevisionInterface
    -type FakeControllerRevisions struct {
    +// fakeControllerRevisions implements ControllerRevisionInterface
    +type fakeControllerRevisions struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta2.ControllerRevision, *v1beta2.ControllerRevisionList, *appsv1beta2.ControllerRevisionApplyConfiguration]
     	Fake *FakeAppsV1beta2
    -	ns   string
    -}
    -
    -var controllerrevisionsResource = v1beta2.SchemeGroupVersion.WithResource("controllerrevisions")
    -
    -var controllerrevisionsKind = v1beta2.SchemeGroupVersion.WithKind("ControllerRevision")
    -
    -// Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any.
    -func (c *FakeControllerRevisions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(controllerrevisionsResource, c.ns, name), &v1beta2.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.ControllerRevision), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors.
    -func (c *FakeControllerRevisions) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.ControllerRevisionList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(controllerrevisionsResource, controllerrevisionsKind, c.ns, opts), &v1beta2.ControllerRevisionList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta2.ControllerRevisionList{ListMeta: obj.(*v1beta2.ControllerRevisionList).ListMeta}
    -	for _, item := range obj.(*v1beta2.ControllerRevisionList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested controllerRevisions.
    -func (c *FakeControllerRevisions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(controllerrevisionsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a controllerRevision and creates it.  Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *FakeControllerRevisions) Create(ctx context.Context, controllerRevision *v1beta2.ControllerRevision, opts v1.CreateOptions) (result *v1beta2.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1beta2.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.ControllerRevision), err
    -}
    -
    -// Update takes the representation of a controllerRevision and updates it. Returns the server's representation of the controllerRevision, and an error, if there is any.
    -func (c *FakeControllerRevisions) Update(ctx context.Context, controllerRevision *v1beta2.ControllerRevision, opts v1.UpdateOptions) (result *v1beta2.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1beta2.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.ControllerRevision), err
    -}
    -
    -// Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs.
    -func (c *FakeControllerRevisions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(controllerrevisionsResource, c.ns, name, opts), &v1beta2.ControllerRevision{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeControllerRevisions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(controllerrevisionsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta2.ControllerRevisionList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched controllerRevision.
    -func (c *FakeControllerRevisions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.ControllerRevision, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, name, pt, data, subresources...), &v1beta2.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.ControllerRevision), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied controllerRevision.
    -func (c *FakeControllerRevisions) Apply(ctx context.Context, controllerRevision *appsv1beta2.ControllerRevisionApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.ControllerRevision, err error) {
    -	if controllerRevision == nil {
    -		return nil, fmt.Errorf("controllerRevision provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(controllerRevision)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := controllerRevision.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("controllerRevision.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta2.ControllerRevision{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeControllerRevisions(fake *FakeAppsV1beta2, namespace string) typedappsv1beta2.ControllerRevisionInterface {
    +	return &fakeControllerRevisions{
    +		gentype.NewFakeClientWithListAndApply[*v1beta2.ControllerRevision, *v1beta2.ControllerRevisionList, *appsv1beta2.ControllerRevisionApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta2.SchemeGroupVersion.WithResource("controllerrevisions"),
    +			v1beta2.SchemeGroupVersion.WithKind("ControllerRevision"),
    +			func() *v1beta2.ControllerRevision { return &v1beta2.ControllerRevision{} },
    +			func() *v1beta2.ControllerRevisionList { return &v1beta2.ControllerRevisionList{} },
    +			func(dst, src *v1beta2.ControllerRevisionList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta2.ControllerRevisionList) []*v1beta2.ControllerRevision {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta2.ControllerRevisionList, items []*v1beta2.ControllerRevision) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta2.ControllerRevision), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_daemonset.go
    index 8f5cfa5a8aa1..e6ed84e2d84d 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_daemonset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_daemonset.go
    @@ -19,171 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta2 "k8s.io/api/apps/v1beta2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
     )
     
    -// FakeDaemonSets implements DaemonSetInterface
    -type FakeDaemonSets struct {
    +// fakeDaemonSets implements DaemonSetInterface
    +type fakeDaemonSets struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta2.DaemonSet, *v1beta2.DaemonSetList, *appsv1beta2.DaemonSetApplyConfiguration]
     	Fake *FakeAppsV1beta2
    -	ns   string
    -}
    -
    -var daemonsetsResource = v1beta2.SchemeGroupVersion.WithResource("daemonsets")
    -
    -var daemonsetsKind = v1beta2.SchemeGroupVersion.WithKind("DaemonSet")
    -
    -// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any.
    -func (c *FakeDaemonSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(daemonsetsResource, c.ns, name), &v1beta2.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.DaemonSet), err
    -}
    -
    -// List takes label and field selectors, and returns the list of DaemonSets that match those selectors.
    -func (c *FakeDaemonSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.DaemonSetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(daemonsetsResource, daemonsetsKind, c.ns, opts), &v1beta2.DaemonSetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta2.DaemonSetList{ListMeta: obj.(*v1beta2.DaemonSetList).ListMeta}
    -	for _, item := range obj.(*v1beta2.DaemonSetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested daemonSets.
    -func (c *FakeDaemonSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(daemonsetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a daemonSet and creates it.  Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *FakeDaemonSets) Create(ctx context.Context, daemonSet *v1beta2.DaemonSet, opts v1.CreateOptions) (result *v1beta2.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(daemonsetsResource, c.ns, daemonSet), &v1beta2.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.DaemonSet), err
    -}
    -
    -// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *FakeDaemonSets) Update(ctx context.Context, daemonSet *v1beta2.DaemonSet, opts v1.UpdateOptions) (result *v1beta2.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(daemonsetsResource, c.ns, daemonSet), &v1beta2.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.DaemonSet), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeDaemonSets) UpdateStatus(ctx context.Context, daemonSet *v1beta2.DaemonSet, opts v1.UpdateOptions) (*v1beta2.DaemonSet, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(daemonsetsResource, "status", c.ns, daemonSet), &v1beta2.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.DaemonSet), err
    -}
    -
    -// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs.
    -func (c *FakeDaemonSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(daemonsetsResource, c.ns, name, opts), &v1beta2.DaemonSet{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeDaemonSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(daemonsetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta2.DaemonSetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched daemonSet.
    -func (c *FakeDaemonSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, name, pt, data, subresources...), &v1beta2.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.DaemonSet), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied daemonSet.
    -func (c *FakeDaemonSets) Apply(ctx context.Context, daemonSet *appsv1beta2.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta2.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.DaemonSet), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeDaemonSets) ApplyStatus(ctx context.Context, daemonSet *appsv1beta2.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta2.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeDaemonSets(fake *FakeAppsV1beta2, namespace string) typedappsv1beta2.DaemonSetInterface {
    +	return &fakeDaemonSets{
    +		gentype.NewFakeClientWithListAndApply[*v1beta2.DaemonSet, *v1beta2.DaemonSetList, *appsv1beta2.DaemonSetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta2.SchemeGroupVersion.WithResource("daemonsets"),
    +			v1beta2.SchemeGroupVersion.WithKind("DaemonSet"),
    +			func() *v1beta2.DaemonSet { return &v1beta2.DaemonSet{} },
    +			func() *v1beta2.DaemonSetList { return &v1beta2.DaemonSetList{} },
    +			func(dst, src *v1beta2.DaemonSetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta2.DaemonSetList) []*v1beta2.DaemonSet { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta2.DaemonSetList, items []*v1beta2.DaemonSet) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta2.DaemonSet), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_deployment.go
    index c9e8ab48bb36..b240a7d55f1e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_deployment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_deployment.go
    @@ -19,171 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta2 "k8s.io/api/apps/v1beta2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
     )
     
    -// FakeDeployments implements DeploymentInterface
    -type FakeDeployments struct {
    +// fakeDeployments implements DeploymentInterface
    +type fakeDeployments struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta2.Deployment, *v1beta2.DeploymentList, *appsv1beta2.DeploymentApplyConfiguration]
     	Fake *FakeAppsV1beta2
    -	ns   string
    -}
    -
    -var deploymentsResource = v1beta2.SchemeGroupVersion.WithResource("deployments")
    -
    -var deploymentsKind = v1beta2.SchemeGroupVersion.WithKind("Deployment")
    -
    -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any.
    -func (c *FakeDeployments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &v1beta2.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.Deployment), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Deployments that match those selectors.
    -func (c *FakeDeployments) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.DeploymentList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &v1beta2.DeploymentList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta2.DeploymentList{ListMeta: obj.(*v1beta2.DeploymentList).ListMeta}
    -	for _, item := range obj.(*v1beta2.DeploymentList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested deployments.
    -func (c *FakeDeployments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(deploymentsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a deployment and creates it.  Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *FakeDeployments) Create(ctx context.Context, deployment *v1beta2.Deployment, opts v1.CreateOptions) (result *v1beta2.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &v1beta2.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.Deployment), err
    -}
    -
    -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *FakeDeployments) Update(ctx context.Context, deployment *v1beta2.Deployment, opts v1.UpdateOptions) (result *v1beta2.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &v1beta2.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.Deployment), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeDeployments) UpdateStatus(ctx context.Context, deployment *v1beta2.Deployment, opts v1.UpdateOptions) (*v1beta2.Deployment, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &v1beta2.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.Deployment), err
    -}
    -
    -// Delete takes name of the deployment and deletes it. Returns an error if one occurs.
    -func (c *FakeDeployments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(deploymentsResource, c.ns, name, opts), &v1beta2.Deployment{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeDeployments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta2.DeploymentList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched deployment.
    -func (c *FakeDeployments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, pt, data, subresources...), &v1beta2.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.Deployment), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied deployment.
    -func (c *FakeDeployments) Apply(ctx context.Context, deployment *appsv1beta2.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta2.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.Deployment), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeDeployments) ApplyStatus(ctx context.Context, deployment *appsv1beta2.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta2.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeDeployments(fake *FakeAppsV1beta2, namespace string) typedappsv1beta2.DeploymentInterface {
    +	return &fakeDeployments{
    +		gentype.NewFakeClientWithListAndApply[*v1beta2.Deployment, *v1beta2.DeploymentList, *appsv1beta2.DeploymentApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta2.SchemeGroupVersion.WithResource("deployments"),
    +			v1beta2.SchemeGroupVersion.WithKind("Deployment"),
    +			func() *v1beta2.Deployment { return &v1beta2.Deployment{} },
    +			func() *v1beta2.DeploymentList { return &v1beta2.DeploymentList{} },
    +			func(dst, src *v1beta2.DeploymentList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta2.DeploymentList) []*v1beta2.Deployment { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta2.DeploymentList, items []*v1beta2.Deployment) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta2.Deployment), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_replicaset.go
    index 46e1a78a7af4..ec886dc795ae 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_replicaset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_replicaset.go
    @@ -19,171 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta2 "k8s.io/api/apps/v1beta2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
     )
     
    -// FakeReplicaSets implements ReplicaSetInterface
    -type FakeReplicaSets struct {
    +// fakeReplicaSets implements ReplicaSetInterface
    +type fakeReplicaSets struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta2.ReplicaSet, *v1beta2.ReplicaSetList, *appsv1beta2.ReplicaSetApplyConfiguration]
     	Fake *FakeAppsV1beta2
    -	ns   string
    -}
    -
    -var replicasetsResource = v1beta2.SchemeGroupVersion.WithResource("replicasets")
    -
    -var replicasetsKind = v1beta2.SchemeGroupVersion.WithKind("ReplicaSet")
    -
    -// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any.
    -func (c *FakeReplicaSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(replicasetsResource, c.ns, name), &v1beta2.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.ReplicaSet), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors.
    -func (c *FakeReplicaSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.ReplicaSetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(replicasetsResource, replicasetsKind, c.ns, opts), &v1beta2.ReplicaSetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta2.ReplicaSetList{ListMeta: obj.(*v1beta2.ReplicaSetList).ListMeta}
    -	for _, item := range obj.(*v1beta2.ReplicaSetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested replicaSets.
    -func (c *FakeReplicaSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(replicasetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a replicaSet and creates it.  Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *FakeReplicaSets) Create(ctx context.Context, replicaSet *v1beta2.ReplicaSet, opts v1.CreateOptions) (result *v1beta2.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(replicasetsResource, c.ns, replicaSet), &v1beta2.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.ReplicaSet), err
    -}
    -
    -// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *FakeReplicaSets) Update(ctx context.Context, replicaSet *v1beta2.ReplicaSet, opts v1.UpdateOptions) (result *v1beta2.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(replicasetsResource, c.ns, replicaSet), &v1beta2.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.ReplicaSet), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeReplicaSets) UpdateStatus(ctx context.Context, replicaSet *v1beta2.ReplicaSet, opts v1.UpdateOptions) (*v1beta2.ReplicaSet, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "status", c.ns, replicaSet), &v1beta2.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.ReplicaSet), err
    -}
    -
    -// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs.
    -func (c *FakeReplicaSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(replicasetsResource, c.ns, name, opts), &v1beta2.ReplicaSet{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeReplicaSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(replicasetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta2.ReplicaSetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched replicaSet.
    -func (c *FakeReplicaSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, name, pt, data, subresources...), &v1beta2.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.ReplicaSet), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied replicaSet.
    -func (c *FakeReplicaSets) Apply(ctx context.Context, replicaSet *appsv1beta2.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta2.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.ReplicaSet), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeReplicaSets) ApplyStatus(ctx context.Context, replicaSet *appsv1beta2.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta2.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeReplicaSets(fake *FakeAppsV1beta2, namespace string) typedappsv1beta2.ReplicaSetInterface {
    +	return &fakeReplicaSets{
    +		gentype.NewFakeClientWithListAndApply[*v1beta2.ReplicaSet, *v1beta2.ReplicaSetList, *appsv1beta2.ReplicaSetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta2.SchemeGroupVersion.WithResource("replicasets"),
    +			v1beta2.SchemeGroupVersion.WithKind("ReplicaSet"),
    +			func() *v1beta2.ReplicaSet { return &v1beta2.ReplicaSet{} },
    +			func() *v1beta2.ReplicaSetList { return &v1beta2.ReplicaSetList{} },
    +			func(dst, src *v1beta2.ReplicaSetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta2.ReplicaSetList) []*v1beta2.ReplicaSet { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta2.ReplicaSetList, items []*v1beta2.ReplicaSet) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta2.ReplicaSet), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_statefulset.go
    index 684f79925672..6e2cbbf5cc4d 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_statefulset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_statefulset.go
    @@ -19,200 +19,71 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    +	context "context"
     	json "encoding/json"
    -	"fmt"
    +	fmt "fmt"
     
     	v1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
     	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	gentype "k8s.io/client-go/gentype"
    +	typedappsv1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
     	testing "k8s.io/client-go/testing"
     )
     
    -// FakeStatefulSets implements StatefulSetInterface
    -type FakeStatefulSets struct {
    +// fakeStatefulSets implements StatefulSetInterface
    +type fakeStatefulSets struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta2.StatefulSet, *v1beta2.StatefulSetList, *appsv1beta2.StatefulSetApplyConfiguration]
     	Fake *FakeAppsV1beta2
    -	ns   string
     }
     
    -var statefulsetsResource = v1beta2.SchemeGroupVersion.WithResource("statefulsets")
    -
    -var statefulsetsKind = v1beta2.SchemeGroupVersion.WithKind("StatefulSet")
    -
    -// Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any.
    -func (c *FakeStatefulSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(statefulsetsResource, c.ns, name), &v1beta2.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.StatefulSet), err
    -}
    -
    -// List takes label and field selectors, and returns the list of StatefulSets that match those selectors.
    -func (c *FakeStatefulSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.StatefulSetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(statefulsetsResource, statefulsetsKind, c.ns, opts), &v1beta2.StatefulSetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta2.StatefulSetList{ListMeta: obj.(*v1beta2.StatefulSetList).ListMeta}
    -	for _, item := range obj.(*v1beta2.StatefulSetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested statefulSets.
    -func (c *FakeStatefulSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(statefulsetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a statefulSet and creates it.  Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *FakeStatefulSets) Create(ctx context.Context, statefulSet *v1beta2.StatefulSet, opts v1.CreateOptions) (result *v1beta2.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(statefulsetsResource, c.ns, statefulSet), &v1beta2.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.StatefulSet), err
    -}
    -
    -// Update takes the representation of a statefulSet and updates it. Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *FakeStatefulSets) Update(ctx context.Context, statefulSet *v1beta2.StatefulSet, opts v1.UpdateOptions) (result *v1beta2.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(statefulsetsResource, c.ns, statefulSet), &v1beta2.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.StatefulSet), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeStatefulSets) UpdateStatus(ctx context.Context, statefulSet *v1beta2.StatefulSet, opts v1.UpdateOptions) (*v1beta2.StatefulSet, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "status", c.ns, statefulSet), &v1beta2.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeStatefulSets(fake *FakeAppsV1beta2, namespace string) typedappsv1beta2.StatefulSetInterface {
    +	return &fakeStatefulSets{
    +		gentype.NewFakeClientWithListAndApply[*v1beta2.StatefulSet, *v1beta2.StatefulSetList, *appsv1beta2.StatefulSetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta2.SchemeGroupVersion.WithResource("statefulsets"),
    +			v1beta2.SchemeGroupVersion.WithKind("StatefulSet"),
    +			func() *v1beta2.StatefulSet { return &v1beta2.StatefulSet{} },
    +			func() *v1beta2.StatefulSetList { return &v1beta2.StatefulSetList{} },
    +			func(dst, src *v1beta2.StatefulSetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta2.StatefulSetList) []*v1beta2.StatefulSet { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta2.StatefulSetList, items []*v1beta2.StatefulSet) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta2.StatefulSet), err
    -}
    -
    -// Delete takes name of the statefulSet and deletes it. Returns an error if one occurs.
    -func (c *FakeStatefulSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(statefulsetsResource, c.ns, name, opts), &v1beta2.StatefulSet{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeStatefulSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(statefulsetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta2.StatefulSetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched statefulSet.
    -func (c *FakeStatefulSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.StatefulSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, name, pt, data, subresources...), &v1beta2.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.StatefulSet), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied statefulSet.
    -func (c *FakeStatefulSets) Apply(ctx context.Context, statefulSet *appsv1beta2.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta2.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.StatefulSet), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeStatefulSets) ApplyStatus(ctx context.Context, statefulSet *appsv1beta2.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta2.StatefulSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.StatefulSet), err
     }
     
     // GetScale takes name of the statefulSet, and returns the corresponding scale object, and an error if there is any.
    -func (c *FakeStatefulSets) GetScale(ctx context.Context, statefulSetName string, options v1.GetOptions) (result *v1beta2.Scale, err error) {
    +func (c *fakeStatefulSets) GetScale(ctx context.Context, statefulSetName string, options v1.GetOptions) (result *v1beta2.Scale, err error) {
    +	emptyResult := &v1beta2.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewGetSubresourceAction(statefulsetsResource, c.ns, "scale", statefulSetName), &v1beta2.Scale{})
    +		Invokes(testing.NewGetSubresourceActionWithOptions(c.Resource(), c.Namespace(), "scale", statefulSetName, options), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1beta2.Scale), err
     }
     
     // UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
    -func (c *FakeStatefulSets) UpdateScale(ctx context.Context, statefulSetName string, scale *v1beta2.Scale, opts v1.UpdateOptions) (result *v1beta2.Scale, err error) {
    +func (c *fakeStatefulSets) UpdateScale(ctx context.Context, statefulSetName string, scale *v1beta2.Scale, opts v1.UpdateOptions) (result *v1beta2.Scale, err error) {
    +	emptyResult := &v1beta2.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "scale", c.ns, scale), &v1beta2.Scale{})
    +		Invokes(testing.NewUpdateSubresourceActionWithOptions(c.Resource(), "scale", c.Namespace(), scale, opts), &v1beta2.Scale{})
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1beta2.Scale), err
     }
     
     // ApplyScale takes top resource name and the apply declarative configuration for scale,
     // applies it and returns the applied scale, and an error, if there is any.
    -func (c *FakeStatefulSets) ApplyScale(ctx context.Context, statefulSetName string, scale *appsv1beta2.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.Scale, err error) {
    +func (c *fakeStatefulSets) ApplyScale(ctx context.Context, statefulSetName string, scale *appsv1beta2.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.Scale, err error) {
     	if scale == nil {
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
    @@ -220,11 +91,12 @@ func (c *FakeStatefulSets) ApplyScale(ctx context.Context, statefulSetName strin
     	if err != nil {
     		return nil, err
     	}
    +	emptyResult := &v1beta2.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, statefulSetName, types.ApplyPatchType, data, "status"), &v1beta2.Scale{})
    +		Invokes(testing.NewPatchSubresourceActionWithOptions(c.Resource(), c.Namespace(), statefulSetName, types.ApplyPatchType, data, opts.ToPatchOptions(), "scale"), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1beta2.Scale), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/replicaset.go
    index 988d898f79b6..12bac0923aa4 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/replicaset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/replicaset.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	applyconfigurationsappsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ReplicaSetsGetter has a method to return a ReplicaSetInterface.
    @@ -41,216 +38,38 @@ type ReplicaSetsGetter interface {
     
     // ReplicaSetInterface has methods to work with ReplicaSet resources.
     type ReplicaSetInterface interface {
    -	Create(ctx context.Context, replicaSet *v1beta2.ReplicaSet, opts v1.CreateOptions) (*v1beta2.ReplicaSet, error)
    -	Update(ctx context.Context, replicaSet *v1beta2.ReplicaSet, opts v1.UpdateOptions) (*v1beta2.ReplicaSet, error)
    -	UpdateStatus(ctx context.Context, replicaSet *v1beta2.ReplicaSet, opts v1.UpdateOptions) (*v1beta2.ReplicaSet, error)
    +	Create(ctx context.Context, replicaSet *appsv1beta2.ReplicaSet, opts v1.CreateOptions) (*appsv1beta2.ReplicaSet, error)
    +	Update(ctx context.Context, replicaSet *appsv1beta2.ReplicaSet, opts v1.UpdateOptions) (*appsv1beta2.ReplicaSet, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, replicaSet *appsv1beta2.ReplicaSet, opts v1.UpdateOptions) (*appsv1beta2.ReplicaSet, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.ReplicaSet, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta2.ReplicaSetList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*appsv1beta2.ReplicaSet, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*appsv1beta2.ReplicaSetList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.ReplicaSet, err error)
    -	Apply(ctx context.Context, replicaSet *appsv1beta2.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.ReplicaSet, err error)
    -	ApplyStatus(ctx context.Context, replicaSet *appsv1beta2.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.ReplicaSet, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *appsv1beta2.ReplicaSet, err error)
    +	Apply(ctx context.Context, replicaSet *applyconfigurationsappsv1beta2.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta2.ReplicaSet, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, replicaSet *applyconfigurationsappsv1beta2.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta2.ReplicaSet, err error)
     	ReplicaSetExpansion
     }
     
     // replicaSets implements ReplicaSetInterface
     type replicaSets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1beta2.ReplicaSet, *appsv1beta2.ReplicaSetList, *applyconfigurationsappsv1beta2.ReplicaSetApplyConfiguration]
     }
     
     // newReplicaSets returns a ReplicaSets
     func newReplicaSets(c *AppsV1beta2Client, namespace string) *replicaSets {
     	return &replicaSets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1beta2.ReplicaSet, *appsv1beta2.ReplicaSetList, *applyconfigurationsappsv1beta2.ReplicaSetApplyConfiguration](
    +			"replicasets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1beta2.ReplicaSet { return &appsv1beta2.ReplicaSet{} },
    +			func() *appsv1beta2.ReplicaSetList { return &appsv1beta2.ReplicaSetList{} },
    +			gentype.PrefersProtobuf[*appsv1beta2.ReplicaSet](),
    +		),
     	}
     }
    -
    -// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any.
    -func (c *replicaSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.ReplicaSet, err error) {
    -	result = &v1beta2.ReplicaSet{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors.
    -func (c *replicaSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.ReplicaSetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta2.ReplicaSetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested replicaSets.
    -func (c *replicaSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a replicaSet and creates it.  Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *replicaSets) Create(ctx context.Context, replicaSet *v1beta2.ReplicaSet, opts v1.CreateOptions) (result *v1beta2.ReplicaSet, err error) {
    -	result = &v1beta2.ReplicaSet{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicaSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *replicaSets) Update(ctx context.Context, replicaSet *v1beta2.ReplicaSet, opts v1.UpdateOptions) (result *v1beta2.ReplicaSet, err error) {
    -	result = &v1beta2.ReplicaSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(replicaSet.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicaSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *replicaSets) UpdateStatus(ctx context.Context, replicaSet *v1beta2.ReplicaSet, opts v1.UpdateOptions) (result *v1beta2.ReplicaSet, err error) {
    -	result = &v1beta2.ReplicaSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(replicaSet.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicaSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs.
    -func (c *replicaSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *replicaSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched replicaSet.
    -func (c *replicaSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.ReplicaSet, err error) {
    -	result = &v1beta2.ReplicaSet{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied replicaSet.
    -func (c *replicaSets) Apply(ctx context.Context, replicaSet *appsv1beta2.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -	result = &v1beta2.ReplicaSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *replicaSets) ApplyStatus(ctx context.Context, replicaSet *appsv1beta2.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta2.ReplicaSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/statefulset.go
    index 0416675d6d89..c71e93494b40 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/statefulset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/statefulset.go
    @@ -19,18 +19,17 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
    +	fmt "fmt"
     
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	appsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	applyconfigurationsappsv1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
    +	apply "k8s.io/client-go/util/apply"
     )
     
     // StatefulSetsGetter has a method to return a StatefulSetInterface.
    @@ -41,229 +40,52 @@ type StatefulSetsGetter interface {
     
     // StatefulSetInterface has methods to work with StatefulSet resources.
     type StatefulSetInterface interface {
    -	Create(ctx context.Context, statefulSet *v1beta2.StatefulSet, opts v1.CreateOptions) (*v1beta2.StatefulSet, error)
    -	Update(ctx context.Context, statefulSet *v1beta2.StatefulSet, opts v1.UpdateOptions) (*v1beta2.StatefulSet, error)
    -	UpdateStatus(ctx context.Context, statefulSet *v1beta2.StatefulSet, opts v1.UpdateOptions) (*v1beta2.StatefulSet, error)
    +	Create(ctx context.Context, statefulSet *appsv1beta2.StatefulSet, opts v1.CreateOptions) (*appsv1beta2.StatefulSet, error)
    +	Update(ctx context.Context, statefulSet *appsv1beta2.StatefulSet, opts v1.UpdateOptions) (*appsv1beta2.StatefulSet, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, statefulSet *appsv1beta2.StatefulSet, opts v1.UpdateOptions) (*appsv1beta2.StatefulSet, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.StatefulSet, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta2.StatefulSetList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*appsv1beta2.StatefulSet, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*appsv1beta2.StatefulSetList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.StatefulSet, err error)
    -	Apply(ctx context.Context, statefulSet *appsv1beta2.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.StatefulSet, err error)
    -	ApplyStatus(ctx context.Context, statefulSet *appsv1beta2.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.StatefulSet, err error)
    -	GetScale(ctx context.Context, statefulSetName string, options v1.GetOptions) (*v1beta2.Scale, error)
    -	UpdateScale(ctx context.Context, statefulSetName string, scale *v1beta2.Scale, opts v1.UpdateOptions) (*v1beta2.Scale, error)
    -	ApplyScale(ctx context.Context, statefulSetName string, scale *appsv1beta2.ScaleApplyConfiguration, opts v1.ApplyOptions) (*v1beta2.Scale, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *appsv1beta2.StatefulSet, err error)
    +	Apply(ctx context.Context, statefulSet *applyconfigurationsappsv1beta2.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta2.StatefulSet, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, statefulSet *applyconfigurationsappsv1beta2.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta2.StatefulSet, err error)
    +	GetScale(ctx context.Context, statefulSetName string, options v1.GetOptions) (*appsv1beta2.Scale, error)
    +	UpdateScale(ctx context.Context, statefulSetName string, scale *appsv1beta2.Scale, opts v1.UpdateOptions) (*appsv1beta2.Scale, error)
    +	ApplyScale(ctx context.Context, statefulSetName string, scale *applyconfigurationsappsv1beta2.ScaleApplyConfiguration, opts v1.ApplyOptions) (*appsv1beta2.Scale, error)
     
     	StatefulSetExpansion
     }
     
     // statefulSets implements StatefulSetInterface
     type statefulSets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*appsv1beta2.StatefulSet, *appsv1beta2.StatefulSetList, *applyconfigurationsappsv1beta2.StatefulSetApplyConfiguration]
     }
     
     // newStatefulSets returns a StatefulSets
     func newStatefulSets(c *AppsV1beta2Client, namespace string) *statefulSets {
     	return &statefulSets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*appsv1beta2.StatefulSet, *appsv1beta2.StatefulSetList, *applyconfigurationsappsv1beta2.StatefulSetApplyConfiguration](
    +			"statefulsets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *appsv1beta2.StatefulSet { return &appsv1beta2.StatefulSet{} },
    +			func() *appsv1beta2.StatefulSetList { return &appsv1beta2.StatefulSetList{} },
    +			gentype.PrefersProtobuf[*appsv1beta2.StatefulSet](),
    +		),
     	}
     }
     
    -// Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any.
    -func (c *statefulSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.StatefulSet, err error) {
    -	result = &v1beta2.StatefulSet{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of StatefulSets that match those selectors.
    -func (c *statefulSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.StatefulSetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta2.StatefulSetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested statefulSets.
    -func (c *statefulSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a statefulSet and creates it.  Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *statefulSets) Create(ctx context.Context, statefulSet *v1beta2.StatefulSet, opts v1.CreateOptions) (result *v1beta2.StatefulSet, err error) {
    -	result = &v1beta2.StatefulSet{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(statefulSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a statefulSet and updates it. Returns the server's representation of the statefulSet, and an error, if there is any.
    -func (c *statefulSets) Update(ctx context.Context, statefulSet *v1beta2.StatefulSet, opts v1.UpdateOptions) (result *v1beta2.StatefulSet, err error) {
    -	result = &v1beta2.StatefulSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(statefulSet.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(statefulSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *statefulSets) UpdateStatus(ctx context.Context, statefulSet *v1beta2.StatefulSet, opts v1.UpdateOptions) (result *v1beta2.StatefulSet, err error) {
    -	result = &v1beta2.StatefulSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(statefulSet.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(statefulSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the statefulSet and deletes it. Returns an error if one occurs.
    -func (c *statefulSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *statefulSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched statefulSet.
    -func (c *statefulSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.StatefulSet, err error) {
    -	result = &v1beta2.StatefulSet{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied statefulSet.
    -func (c *statefulSets) Apply(ctx context.Context, statefulSet *appsv1beta2.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -	result = &v1beta2.StatefulSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *statefulSets) ApplyStatus(ctx context.Context, statefulSet *appsv1beta2.StatefulSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.StatefulSet, err error) {
    -	if statefulSet == nil {
    -		return nil, fmt.Errorf("statefulSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(statefulSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := statefulSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("statefulSet.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta2.StatefulSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("statefulsets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// GetScale takes name of the statefulSet, and returns the corresponding v1beta2.Scale object, and an error if there is any.
    -func (c *statefulSets) GetScale(ctx context.Context, statefulSetName string, options v1.GetOptions) (result *v1beta2.Scale, err error) {
    -	result = &v1beta2.Scale{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    +// GetScale takes name of the statefulSet, and returns the corresponding appsv1beta2.Scale object, and an error if there is any.
    +func (c *statefulSets) GetScale(ctx context.Context, statefulSetName string, options v1.GetOptions) (result *appsv1beta2.Scale, err error) {
    +	result = &appsv1beta2.Scale{}
    +	err = c.GetClient().Get().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("statefulsets").
     		Name(statefulSetName).
     		SubResource("scale").
    @@ -274,10 +96,11 @@ func (c *statefulSets) GetScale(ctx context.Context, statefulSetName string, opt
     }
     
     // UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
    -func (c *statefulSets) UpdateScale(ctx context.Context, statefulSetName string, scale *v1beta2.Scale, opts v1.UpdateOptions) (result *v1beta2.Scale, err error) {
    -	result = &v1beta2.Scale{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    +func (c *statefulSets) UpdateScale(ctx context.Context, statefulSetName string, scale *appsv1beta2.Scale, opts v1.UpdateOptions) (result *appsv1beta2.Scale, err error) {
    +	result = &appsv1beta2.Scale{}
    +	err = c.GetClient().Put().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("statefulsets").
     		Name(statefulSetName).
     		SubResource("scale").
    @@ -290,24 +113,24 @@ func (c *statefulSets) UpdateScale(ctx context.Context, statefulSetName string,
     
     // ApplyScale takes top resource name and the apply declarative configuration for scale,
     // applies it and returns the applied scale, and an error, if there is any.
    -func (c *statefulSets) ApplyScale(ctx context.Context, statefulSetName string, scale *appsv1beta2.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.Scale, err error) {
    +func (c *statefulSets) ApplyScale(ctx context.Context, statefulSetName string, scale *applyconfigurationsappsv1beta2.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *appsv1beta2.Scale, err error) {
     	if scale == nil {
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
     	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(scale)
    +	request, err := apply.NewRequest(c.GetClient(), scale)
     	if err != nil {
     		return nil, err
     	}
     
    -	result = &v1beta2.Scale{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    +	result = &appsv1beta2.Scale{}
    +	err = request.
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("statefulsets").
     		Name(statefulSetName).
     		SubResource("scale").
     		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
     		Do(ctx).
     		Into(result)
     	return
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go
    index 81be8b2e0468..bd5df779838e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/authentication/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	authenticationv1 "k8s.io/api/authentication/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -90,10 +90,10 @@ func New(c rest.Interface) *AuthenticationV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := authenticationv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go
    index 865239ff6459..569782ff2864 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go
    @@ -29,11 +29,11 @@ type FakeAuthenticationV1 struct {
     }
     
     func (c *FakeAuthenticationV1) SelfSubjectReviews() v1.SelfSubjectReviewInterface {
    -	return &FakeSelfSubjectReviews{c}
    +	return newFakeSelfSubjectReviews(c)
     }
     
     func (c *FakeAuthenticationV1) TokenReviews() v1.TokenReviewInterface {
    -	return &FakeTokenReviews{c}
    +	return newFakeTokenReviews(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_selfsubjectreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_selfsubjectreview.go
    index e683b3eaaa01..3a101363f50e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_selfsubjectreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_selfsubjectreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1 "k8s.io/api/authentication/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authenticationv1 "k8s.io/client-go/kubernetes/typed/authentication/v1"
     )
     
    -// FakeSelfSubjectReviews implements SelfSubjectReviewInterface
    -type FakeSelfSubjectReviews struct {
    +// fakeSelfSubjectReviews implements SelfSubjectReviewInterface
    +type fakeSelfSubjectReviews struct {
    +	*gentype.FakeClient[*v1.SelfSubjectReview]
     	Fake *FakeAuthenticationV1
     }
     
    -var selfsubjectreviewsResource = v1.SchemeGroupVersion.WithResource("selfsubjectreviews")
    -
    -var selfsubjectreviewsKind = v1.SchemeGroupVersion.WithKind("SelfSubjectReview")
    -
    -// Create takes the representation of a selfSubjectReview and creates it.  Returns the server's representation of the selfSubjectReview, and an error, if there is any.
    -func (c *FakeSelfSubjectReviews) Create(ctx context.Context, selfSubjectReview *v1.SelfSubjectReview, opts metav1.CreateOptions) (result *v1.SelfSubjectReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(selfsubjectreviewsResource, selfSubjectReview), &v1.SelfSubjectReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeSelfSubjectReviews(fake *FakeAuthenticationV1) authenticationv1.SelfSubjectReviewInterface {
    +	return &fakeSelfSubjectReviews{
    +		gentype.NewFakeClient[*v1.SelfSubjectReview](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("selfsubjectreviews"),
    +			v1.SchemeGroupVersion.WithKind("SelfSubjectReview"),
    +			func() *v1.SelfSubjectReview { return &v1.SelfSubjectReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.SelfSubjectReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go
    index 500e87d065fa..26d5d37338a4 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1 "k8s.io/api/authentication/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authenticationv1 "k8s.io/client-go/kubernetes/typed/authentication/v1"
     )
     
    -// FakeTokenReviews implements TokenReviewInterface
    -type FakeTokenReviews struct {
    +// fakeTokenReviews implements TokenReviewInterface
    +type fakeTokenReviews struct {
    +	*gentype.FakeClient[*v1.TokenReview]
     	Fake *FakeAuthenticationV1
     }
     
    -var tokenreviewsResource = v1.SchemeGroupVersion.WithResource("tokenreviews")
    -
    -var tokenreviewsKind = v1.SchemeGroupVersion.WithKind("TokenReview")
    -
    -// Create takes the representation of a tokenReview and creates it.  Returns the server's representation of the tokenReview, and an error, if there is any.
    -func (c *FakeTokenReviews) Create(ctx context.Context, tokenReview *v1.TokenReview, opts metav1.CreateOptions) (result *v1.TokenReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(tokenreviewsResource, tokenReview), &v1.TokenReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeTokenReviews(fake *FakeAuthenticationV1) authenticationv1.TokenReviewInterface {
    +	return &fakeTokenReviews{
    +		gentype.NewFakeClient[*v1.TokenReview](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("tokenreviews"),
    +			v1.SchemeGroupVersion.WithKind("TokenReview"),
    +			func() *v1.TokenReview { return &v1.TokenReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.TokenReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/selfsubjectreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/selfsubjectreview.go
    index bfb9603d672d..9113b6a6dc38 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/selfsubjectreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/selfsubjectreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1 "k8s.io/api/authentication/v1"
    +	authenticationv1 "k8s.io/api/authentication/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // SelfSubjectReviewsGetter has a method to return a SelfSubjectReviewInterface.
    @@ -35,30 +35,25 @@ type SelfSubjectReviewsGetter interface {
     
     // SelfSubjectReviewInterface has methods to work with SelfSubjectReview resources.
     type SelfSubjectReviewInterface interface {
    -	Create(ctx context.Context, selfSubjectReview *v1.SelfSubjectReview, opts metav1.CreateOptions) (*v1.SelfSubjectReview, error)
    +	Create(ctx context.Context, selfSubjectReview *authenticationv1.SelfSubjectReview, opts metav1.CreateOptions) (*authenticationv1.SelfSubjectReview, error)
     	SelfSubjectReviewExpansion
     }
     
     // selfSubjectReviews implements SelfSubjectReviewInterface
     type selfSubjectReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authenticationv1.SelfSubjectReview]
     }
     
     // newSelfSubjectReviews returns a SelfSubjectReviews
     func newSelfSubjectReviews(c *AuthenticationV1Client) *selfSubjectReviews {
     	return &selfSubjectReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authenticationv1.SelfSubjectReview](
    +			"selfsubjectreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authenticationv1.SelfSubjectReview { return &authenticationv1.SelfSubjectReview{} },
    +			gentype.PrefersProtobuf[*authenticationv1.SelfSubjectReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a selfSubjectReview and creates it.  Returns the server's representation of the selfSubjectReview, and an error, if there is any.
    -func (c *selfSubjectReviews) Create(ctx context.Context, selfSubjectReview *v1.SelfSubjectReview, opts metav1.CreateOptions) (result *v1.SelfSubjectReview, err error) {
    -	result = &v1.SelfSubjectReview{}
    -	err = c.client.Post().
    -		Resource("selfsubjectreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(selfSubjectReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go
    index ca7cd47d26b9..ce8b62d1b4dc 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1 "k8s.io/api/authentication/v1"
    +	authenticationv1 "k8s.io/api/authentication/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // TokenReviewsGetter has a method to return a TokenReviewInterface.
    @@ -35,30 +35,25 @@ type TokenReviewsGetter interface {
     
     // TokenReviewInterface has methods to work with TokenReview resources.
     type TokenReviewInterface interface {
    -	Create(ctx context.Context, tokenReview *v1.TokenReview, opts metav1.CreateOptions) (*v1.TokenReview, error)
    +	Create(ctx context.Context, tokenReview *authenticationv1.TokenReview, opts metav1.CreateOptions) (*authenticationv1.TokenReview, error)
     	TokenReviewExpansion
     }
     
     // tokenReviews implements TokenReviewInterface
     type tokenReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authenticationv1.TokenReview]
     }
     
     // newTokenReviews returns a TokenReviews
     func newTokenReviews(c *AuthenticationV1Client) *tokenReviews {
     	return &tokenReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authenticationv1.TokenReview](
    +			"tokenreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authenticationv1.TokenReview { return &authenticationv1.TokenReview{} },
    +			gentype.PrefersProtobuf[*authenticationv1.TokenReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a tokenReview and creates it.  Returns the server's representation of the tokenReview, and an error, if there is any.
    -func (c *tokenReviews) Create(ctx context.Context, tokenReview *v1.TokenReview, opts metav1.CreateOptions) (result *v1.TokenReview, err error) {
    -	result = &v1.TokenReview{}
    -	err = c.client.Post().
    -		Resource("tokenreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(tokenReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/authentication_client.go
    index 18739266156a..821265859192 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/authentication_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/authentication_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1alpha1 "k8s.io/api/authentication/v1alpha1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	authenticationv1alpha1 "k8s.io/api/authentication/v1alpha1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *AuthenticationV1alpha1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1alpha1.SchemeGroupVersion
    +	gv := authenticationv1alpha1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/fake/fake_authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/fake/fake_authentication_client.go
    index 1a1a04f41e15..3c76aa5a53b5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/fake/fake_authentication_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/fake/fake_authentication_client.go
    @@ -29,7 +29,7 @@ type FakeAuthenticationV1alpha1 struct {
     }
     
     func (c *FakeAuthenticationV1alpha1) SelfSubjectReviews() v1alpha1.SelfSubjectReviewInterface {
    -	return &FakeSelfSubjectReviews{c}
    +	return newFakeSelfSubjectReviews(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/fake/fake_selfsubjectreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/fake/fake_selfsubjectreview.go
    index a20b3dd764bb..1c0ebe2f05db 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/fake/fake_selfsubjectreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/fake/fake_selfsubjectreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1alpha1 "k8s.io/api/authentication/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authenticationv1alpha1 "k8s.io/client-go/kubernetes/typed/authentication/v1alpha1"
     )
     
    -// FakeSelfSubjectReviews implements SelfSubjectReviewInterface
    -type FakeSelfSubjectReviews struct {
    +// fakeSelfSubjectReviews implements SelfSubjectReviewInterface
    +type fakeSelfSubjectReviews struct {
    +	*gentype.FakeClient[*v1alpha1.SelfSubjectReview]
     	Fake *FakeAuthenticationV1alpha1
     }
     
    -var selfsubjectreviewsResource = v1alpha1.SchemeGroupVersion.WithResource("selfsubjectreviews")
    -
    -var selfsubjectreviewsKind = v1alpha1.SchemeGroupVersion.WithKind("SelfSubjectReview")
    -
    -// Create takes the representation of a selfSubjectReview and creates it.  Returns the server's representation of the selfSubjectReview, and an error, if there is any.
    -func (c *FakeSelfSubjectReviews) Create(ctx context.Context, selfSubjectReview *v1alpha1.SelfSubjectReview, opts v1.CreateOptions) (result *v1alpha1.SelfSubjectReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(selfsubjectreviewsResource, selfSubjectReview), &v1alpha1.SelfSubjectReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeSelfSubjectReviews(fake *FakeAuthenticationV1alpha1) authenticationv1alpha1.SelfSubjectReviewInterface {
    +	return &fakeSelfSubjectReviews{
    +		gentype.NewFakeClient[*v1alpha1.SelfSubjectReview](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("selfsubjectreviews"),
    +			v1alpha1.SchemeGroupVersion.WithKind("SelfSubjectReview"),
    +			func() *v1alpha1.SelfSubjectReview { return &v1alpha1.SelfSubjectReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.SelfSubjectReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/selfsubjectreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/selfsubjectreview.go
    index 7f8b12a46f27..8d5b176f745a 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/selfsubjectreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1alpha1/selfsubjectreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/authentication/v1alpha1"
    +	authenticationv1alpha1 "k8s.io/api/authentication/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // SelfSubjectReviewsGetter has a method to return a SelfSubjectReviewInterface.
    @@ -35,30 +35,25 @@ type SelfSubjectReviewsGetter interface {
     
     // SelfSubjectReviewInterface has methods to work with SelfSubjectReview resources.
     type SelfSubjectReviewInterface interface {
    -	Create(ctx context.Context, selfSubjectReview *v1alpha1.SelfSubjectReview, opts v1.CreateOptions) (*v1alpha1.SelfSubjectReview, error)
    +	Create(ctx context.Context, selfSubjectReview *authenticationv1alpha1.SelfSubjectReview, opts v1.CreateOptions) (*authenticationv1alpha1.SelfSubjectReview, error)
     	SelfSubjectReviewExpansion
     }
     
     // selfSubjectReviews implements SelfSubjectReviewInterface
     type selfSubjectReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authenticationv1alpha1.SelfSubjectReview]
     }
     
     // newSelfSubjectReviews returns a SelfSubjectReviews
     func newSelfSubjectReviews(c *AuthenticationV1alpha1Client) *selfSubjectReviews {
     	return &selfSubjectReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authenticationv1alpha1.SelfSubjectReview](
    +			"selfsubjectreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authenticationv1alpha1.SelfSubjectReview { return &authenticationv1alpha1.SelfSubjectReview{} },
    +			gentype.PrefersProtobuf[*authenticationv1alpha1.SelfSubjectReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a selfSubjectReview and creates it.  Returns the server's representation of the selfSubjectReview, and an error, if there is any.
    -func (c *selfSubjectReviews) Create(ctx context.Context, selfSubjectReview *v1alpha1.SelfSubjectReview, opts v1.CreateOptions) (result *v1alpha1.SelfSubjectReview, err error) {
    -	result = &v1alpha1.SelfSubjectReview{}
    -	err = c.client.Post().
    -		Resource("selfsubjectreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(selfSubjectReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go
    index 7823729e09cd..7b22e46e311d 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/authentication/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	authenticationv1beta1 "k8s.io/api/authentication/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -90,10 +90,10 @@ func New(c rest.Interface) *AuthenticationV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := authenticationv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go
    index 1d72cf22f652..28b5517ecbe8 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go
    @@ -29,11 +29,11 @@ type FakeAuthenticationV1beta1 struct {
     }
     
     func (c *FakeAuthenticationV1beta1) SelfSubjectReviews() v1beta1.SelfSubjectReviewInterface {
    -	return &FakeSelfSubjectReviews{c}
    +	return newFakeSelfSubjectReviews(c)
     }
     
     func (c *FakeAuthenticationV1beta1) TokenReviews() v1beta1.TokenReviewInterface {
    -	return &FakeTokenReviews{c}
    +	return newFakeTokenReviews(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_selfsubjectreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_selfsubjectreview.go
    index 4a9db85cf545..416c288b8087 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_selfsubjectreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_selfsubjectreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1beta1 "k8s.io/api/authentication/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authenticationv1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1"
     )
     
    -// FakeSelfSubjectReviews implements SelfSubjectReviewInterface
    -type FakeSelfSubjectReviews struct {
    +// fakeSelfSubjectReviews implements SelfSubjectReviewInterface
    +type fakeSelfSubjectReviews struct {
    +	*gentype.FakeClient[*v1beta1.SelfSubjectReview]
     	Fake *FakeAuthenticationV1beta1
     }
     
    -var selfsubjectreviewsResource = v1beta1.SchemeGroupVersion.WithResource("selfsubjectreviews")
    -
    -var selfsubjectreviewsKind = v1beta1.SchemeGroupVersion.WithKind("SelfSubjectReview")
    -
    -// Create takes the representation of a selfSubjectReview and creates it.  Returns the server's representation of the selfSubjectReview, and an error, if there is any.
    -func (c *FakeSelfSubjectReviews) Create(ctx context.Context, selfSubjectReview *v1beta1.SelfSubjectReview, opts v1.CreateOptions) (result *v1beta1.SelfSubjectReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(selfsubjectreviewsResource, selfSubjectReview), &v1beta1.SelfSubjectReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeSelfSubjectReviews(fake *FakeAuthenticationV1beta1) authenticationv1beta1.SelfSubjectReviewInterface {
    +	return &fakeSelfSubjectReviews{
    +		gentype.NewFakeClient[*v1beta1.SelfSubjectReview](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("selfsubjectreviews"),
    +			v1beta1.SchemeGroupVersion.WithKind("SelfSubjectReview"),
    +			func() *v1beta1.SelfSubjectReview { return &v1beta1.SelfSubjectReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.SelfSubjectReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go
    index b1988a67a39c..daafb9be1639 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1beta1 "k8s.io/api/authentication/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authenticationv1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1"
     )
     
    -// FakeTokenReviews implements TokenReviewInterface
    -type FakeTokenReviews struct {
    +// fakeTokenReviews implements TokenReviewInterface
    +type fakeTokenReviews struct {
    +	*gentype.FakeClient[*v1beta1.TokenReview]
     	Fake *FakeAuthenticationV1beta1
     }
     
    -var tokenreviewsResource = v1beta1.SchemeGroupVersion.WithResource("tokenreviews")
    -
    -var tokenreviewsKind = v1beta1.SchemeGroupVersion.WithKind("TokenReview")
    -
    -// Create takes the representation of a tokenReview and creates it.  Returns the server's representation of the tokenReview, and an error, if there is any.
    -func (c *FakeTokenReviews) Create(ctx context.Context, tokenReview *v1beta1.TokenReview, opts v1.CreateOptions) (result *v1beta1.TokenReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(tokenreviewsResource, tokenReview), &v1beta1.TokenReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeTokenReviews(fake *FakeAuthenticationV1beta1) authenticationv1beta1.TokenReviewInterface {
    +	return &fakeTokenReviews{
    +		gentype.NewFakeClient[*v1beta1.TokenReview](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("tokenreviews"),
    +			v1beta1.SchemeGroupVersion.WithKind("TokenReview"),
    +			func() *v1beta1.TokenReview { return &v1beta1.TokenReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.TokenReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/selfsubjectreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/selfsubjectreview.go
    index 9d54826a31c9..e29f814514c6 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/selfsubjectreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/selfsubjectreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/authentication/v1beta1"
    +	authenticationv1beta1 "k8s.io/api/authentication/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // SelfSubjectReviewsGetter has a method to return a SelfSubjectReviewInterface.
    @@ -35,30 +35,25 @@ type SelfSubjectReviewsGetter interface {
     
     // SelfSubjectReviewInterface has methods to work with SelfSubjectReview resources.
     type SelfSubjectReviewInterface interface {
    -	Create(ctx context.Context, selfSubjectReview *v1beta1.SelfSubjectReview, opts v1.CreateOptions) (*v1beta1.SelfSubjectReview, error)
    +	Create(ctx context.Context, selfSubjectReview *authenticationv1beta1.SelfSubjectReview, opts v1.CreateOptions) (*authenticationv1beta1.SelfSubjectReview, error)
     	SelfSubjectReviewExpansion
     }
     
     // selfSubjectReviews implements SelfSubjectReviewInterface
     type selfSubjectReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authenticationv1beta1.SelfSubjectReview]
     }
     
     // newSelfSubjectReviews returns a SelfSubjectReviews
     func newSelfSubjectReviews(c *AuthenticationV1beta1Client) *selfSubjectReviews {
     	return &selfSubjectReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authenticationv1beta1.SelfSubjectReview](
    +			"selfsubjectreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authenticationv1beta1.SelfSubjectReview { return &authenticationv1beta1.SelfSubjectReview{} },
    +			gentype.PrefersProtobuf[*authenticationv1beta1.SelfSubjectReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a selfSubjectReview and creates it.  Returns the server's representation of the selfSubjectReview, and an error, if there is any.
    -func (c *selfSubjectReviews) Create(ctx context.Context, selfSubjectReview *v1beta1.SelfSubjectReview, opts v1.CreateOptions) (result *v1beta1.SelfSubjectReview, err error) {
    -	result = &v1beta1.SelfSubjectReview{}
    -	err = c.client.Post().
    -		Resource("selfsubjectreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(selfSubjectReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go
    index 5da122433735..5e1e002be442 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/authentication/v1beta1"
    +	authenticationv1beta1 "k8s.io/api/authentication/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // TokenReviewsGetter has a method to return a TokenReviewInterface.
    @@ -35,30 +35,25 @@ type TokenReviewsGetter interface {
     
     // TokenReviewInterface has methods to work with TokenReview resources.
     type TokenReviewInterface interface {
    -	Create(ctx context.Context, tokenReview *v1beta1.TokenReview, opts v1.CreateOptions) (*v1beta1.TokenReview, error)
    +	Create(ctx context.Context, tokenReview *authenticationv1beta1.TokenReview, opts v1.CreateOptions) (*authenticationv1beta1.TokenReview, error)
     	TokenReviewExpansion
     }
     
     // tokenReviews implements TokenReviewInterface
     type tokenReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authenticationv1beta1.TokenReview]
     }
     
     // newTokenReviews returns a TokenReviews
     func newTokenReviews(c *AuthenticationV1beta1Client) *tokenReviews {
     	return &tokenReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authenticationv1beta1.TokenReview](
    +			"tokenreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authenticationv1beta1.TokenReview { return &authenticationv1beta1.TokenReview{} },
    +			gentype.PrefersProtobuf[*authenticationv1beta1.TokenReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a tokenReview and creates it.  Returns the server's representation of the tokenReview, and an error, if there is any.
    -func (c *tokenReviews) Create(ctx context.Context, tokenReview *v1beta1.TokenReview, opts v1.CreateOptions) (result *v1beta1.TokenReview, err error) {
    -	result = &v1beta1.TokenReview{}
    -	err = c.client.Post().
    -		Resource("tokenreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(tokenReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go
    index edfc90346a0d..71fb89b383d7 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/authorization/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	authorizationv1 "k8s.io/api/authorization/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -100,10 +100,10 @@ func New(c rest.Interface) *AuthorizationV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := authorizationv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go
    index f7e8234509d4..f96956bb46eb 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go
    @@ -29,19 +29,19 @@ type FakeAuthorizationV1 struct {
     }
     
     func (c *FakeAuthorizationV1) LocalSubjectAccessReviews(namespace string) v1.LocalSubjectAccessReviewInterface {
    -	return &FakeLocalSubjectAccessReviews{c, namespace}
    +	return newFakeLocalSubjectAccessReviews(c, namespace)
     }
     
     func (c *FakeAuthorizationV1) SelfSubjectAccessReviews() v1.SelfSubjectAccessReviewInterface {
    -	return &FakeSelfSubjectAccessReviews{c}
    +	return newFakeSelfSubjectAccessReviews(c)
     }
     
     func (c *FakeAuthorizationV1) SelfSubjectRulesReviews() v1.SelfSubjectRulesReviewInterface {
    -	return &FakeSelfSubjectRulesReviews{c}
    +	return newFakeSelfSubjectRulesReviews(c)
     }
     
     func (c *FakeAuthorizationV1) SubjectAccessReviews() v1.SubjectAccessReviewInterface {
    -	return &FakeSubjectAccessReviews{c}
    +	return newFakeSubjectAccessReviews(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go
    index 43ea05328c8a..4b07d8763d01 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go
    @@ -19,30 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1 "k8s.io/api/authorization/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authorizationv1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
     )
     
    -// FakeLocalSubjectAccessReviews implements LocalSubjectAccessReviewInterface
    -type FakeLocalSubjectAccessReviews struct {
    +// fakeLocalSubjectAccessReviews implements LocalSubjectAccessReviewInterface
    +type fakeLocalSubjectAccessReviews struct {
    +	*gentype.FakeClient[*v1.LocalSubjectAccessReview]
     	Fake *FakeAuthorizationV1
    -	ns   string
     }
     
    -var localsubjectaccessreviewsResource = v1.SchemeGroupVersion.WithResource("localsubjectaccessreviews")
    -
    -var localsubjectaccessreviewsKind = v1.SchemeGroupVersion.WithKind("LocalSubjectAccessReview")
    -
    -// Create takes the representation of a localSubjectAccessReview and creates it.  Returns the server's representation of the localSubjectAccessReview, and an error, if there is any.
    -func (c *FakeLocalSubjectAccessReviews) Create(ctx context.Context, localSubjectAccessReview *v1.LocalSubjectAccessReview, opts metav1.CreateOptions) (result *v1.LocalSubjectAccessReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(localsubjectaccessreviewsResource, c.ns, localSubjectAccessReview), &v1.LocalSubjectAccessReview{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeLocalSubjectAccessReviews(fake *FakeAuthorizationV1, namespace string) authorizationv1.LocalSubjectAccessReviewInterface {
    +	return &fakeLocalSubjectAccessReviews{
    +		gentype.NewFakeClient[*v1.LocalSubjectAccessReview](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("localsubjectaccessreviews"),
    +			v1.SchemeGroupVersion.WithKind("LocalSubjectAccessReview"),
    +			func() *v1.LocalSubjectAccessReview { return &v1.LocalSubjectAccessReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.LocalSubjectAccessReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go
    index 27642266d6af..d55d555d4b84 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1 "k8s.io/api/authorization/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authorizationv1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
     )
     
    -// FakeSelfSubjectAccessReviews implements SelfSubjectAccessReviewInterface
    -type FakeSelfSubjectAccessReviews struct {
    +// fakeSelfSubjectAccessReviews implements SelfSubjectAccessReviewInterface
    +type fakeSelfSubjectAccessReviews struct {
    +	*gentype.FakeClient[*v1.SelfSubjectAccessReview]
     	Fake *FakeAuthorizationV1
     }
     
    -var selfsubjectaccessreviewsResource = v1.SchemeGroupVersion.WithResource("selfsubjectaccessreviews")
    -
    -var selfsubjectaccessreviewsKind = v1.SchemeGroupVersion.WithKind("SelfSubjectAccessReview")
    -
    -// Create takes the representation of a selfSubjectAccessReview and creates it.  Returns the server's representation of the selfSubjectAccessReview, and an error, if there is any.
    -func (c *FakeSelfSubjectAccessReviews) Create(ctx context.Context, selfSubjectAccessReview *v1.SelfSubjectAccessReview, opts metav1.CreateOptions) (result *v1.SelfSubjectAccessReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(selfsubjectaccessreviewsResource, selfSubjectAccessReview), &v1.SelfSubjectAccessReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeSelfSubjectAccessReviews(fake *FakeAuthorizationV1) authorizationv1.SelfSubjectAccessReviewInterface {
    +	return &fakeSelfSubjectAccessReviews{
    +		gentype.NewFakeClient[*v1.SelfSubjectAccessReview](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("selfsubjectaccessreviews"),
    +			v1.SchemeGroupVersion.WithKind("SelfSubjectAccessReview"),
    +			func() *v1.SelfSubjectAccessReview { return &v1.SelfSubjectAccessReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.SelfSubjectAccessReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectrulesreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectrulesreview.go
    index cd6c682d16b1..dcd1e05eab48 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectrulesreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectrulesreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1 "k8s.io/api/authorization/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authorizationv1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
     )
     
    -// FakeSelfSubjectRulesReviews implements SelfSubjectRulesReviewInterface
    -type FakeSelfSubjectRulesReviews struct {
    +// fakeSelfSubjectRulesReviews implements SelfSubjectRulesReviewInterface
    +type fakeSelfSubjectRulesReviews struct {
    +	*gentype.FakeClient[*v1.SelfSubjectRulesReview]
     	Fake *FakeAuthorizationV1
     }
     
    -var selfsubjectrulesreviewsResource = v1.SchemeGroupVersion.WithResource("selfsubjectrulesreviews")
    -
    -var selfsubjectrulesreviewsKind = v1.SchemeGroupVersion.WithKind("SelfSubjectRulesReview")
    -
    -// Create takes the representation of a selfSubjectRulesReview and creates it.  Returns the server's representation of the selfSubjectRulesReview, and an error, if there is any.
    -func (c *FakeSelfSubjectRulesReviews) Create(ctx context.Context, selfSubjectRulesReview *v1.SelfSubjectRulesReview, opts metav1.CreateOptions) (result *v1.SelfSubjectRulesReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(selfsubjectrulesreviewsResource, selfSubjectRulesReview), &v1.SelfSubjectRulesReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeSelfSubjectRulesReviews(fake *FakeAuthorizationV1) authorizationv1.SelfSubjectRulesReviewInterface {
    +	return &fakeSelfSubjectRulesReviews{
    +		gentype.NewFakeClient[*v1.SelfSubjectRulesReview](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("selfsubjectrulesreviews"),
    +			v1.SchemeGroupVersion.WithKind("SelfSubjectRulesReview"),
    +			func() *v1.SelfSubjectRulesReview { return &v1.SelfSubjectRulesReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.SelfSubjectRulesReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go
    index 09dab6480769..4710ca6d946f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1 "k8s.io/api/authorization/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authorizationv1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
     )
     
    -// FakeSubjectAccessReviews implements SubjectAccessReviewInterface
    -type FakeSubjectAccessReviews struct {
    +// fakeSubjectAccessReviews implements SubjectAccessReviewInterface
    +type fakeSubjectAccessReviews struct {
    +	*gentype.FakeClient[*v1.SubjectAccessReview]
     	Fake *FakeAuthorizationV1
     }
     
    -var subjectaccessreviewsResource = v1.SchemeGroupVersion.WithResource("subjectaccessreviews")
    -
    -var subjectaccessreviewsKind = v1.SchemeGroupVersion.WithKind("SubjectAccessReview")
    -
    -// Create takes the representation of a subjectAccessReview and creates it.  Returns the server's representation of the subjectAccessReview, and an error, if there is any.
    -func (c *FakeSubjectAccessReviews) Create(ctx context.Context, subjectAccessReview *v1.SubjectAccessReview, opts metav1.CreateOptions) (result *v1.SubjectAccessReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(subjectaccessreviewsResource, subjectAccessReview), &v1.SubjectAccessReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeSubjectAccessReviews(fake *FakeAuthorizationV1) authorizationv1.SubjectAccessReviewInterface {
    +	return &fakeSubjectAccessReviews{
    +		gentype.NewFakeClient[*v1.SubjectAccessReview](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("subjectaccessreviews"),
    +			v1.SchemeGroupVersion.WithKind("SubjectAccessReview"),
    +			func() *v1.SubjectAccessReview { return &v1.SubjectAccessReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.SubjectAccessReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go
    index 84b2efe166fb..24327e87f20e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1 "k8s.io/api/authorization/v1"
    +	authorizationv1 "k8s.io/api/authorization/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // LocalSubjectAccessReviewsGetter has a method to return a LocalSubjectAccessReviewInterface.
    @@ -35,33 +35,25 @@ type LocalSubjectAccessReviewsGetter interface {
     
     // LocalSubjectAccessReviewInterface has methods to work with LocalSubjectAccessReview resources.
     type LocalSubjectAccessReviewInterface interface {
    -	Create(ctx context.Context, localSubjectAccessReview *v1.LocalSubjectAccessReview, opts metav1.CreateOptions) (*v1.LocalSubjectAccessReview, error)
    +	Create(ctx context.Context, localSubjectAccessReview *authorizationv1.LocalSubjectAccessReview, opts metav1.CreateOptions) (*authorizationv1.LocalSubjectAccessReview, error)
     	LocalSubjectAccessReviewExpansion
     }
     
     // localSubjectAccessReviews implements LocalSubjectAccessReviewInterface
     type localSubjectAccessReviews struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.Client[*authorizationv1.LocalSubjectAccessReview]
     }
     
     // newLocalSubjectAccessReviews returns a LocalSubjectAccessReviews
     func newLocalSubjectAccessReviews(c *AuthorizationV1Client, namespace string) *localSubjectAccessReviews {
     	return &localSubjectAccessReviews{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClient[*authorizationv1.LocalSubjectAccessReview](
    +			"localsubjectaccessreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *authorizationv1.LocalSubjectAccessReview { return &authorizationv1.LocalSubjectAccessReview{} },
    +			gentype.PrefersProtobuf[*authorizationv1.LocalSubjectAccessReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a localSubjectAccessReview and creates it.  Returns the server's representation of the localSubjectAccessReview, and an error, if there is any.
    -func (c *localSubjectAccessReviews) Create(ctx context.Context, localSubjectAccessReview *v1.LocalSubjectAccessReview, opts metav1.CreateOptions) (result *v1.LocalSubjectAccessReview, err error) {
    -	result = &v1.LocalSubjectAccessReview{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("localsubjectaccessreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(localSubjectAccessReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go
    index 2006196c11ce..014faeffb4ac 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1 "k8s.io/api/authorization/v1"
    +	authorizationv1 "k8s.io/api/authorization/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // SelfSubjectAccessReviewsGetter has a method to return a SelfSubjectAccessReviewInterface.
    @@ -35,30 +35,25 @@ type SelfSubjectAccessReviewsGetter interface {
     
     // SelfSubjectAccessReviewInterface has methods to work with SelfSubjectAccessReview resources.
     type SelfSubjectAccessReviewInterface interface {
    -	Create(ctx context.Context, selfSubjectAccessReview *v1.SelfSubjectAccessReview, opts metav1.CreateOptions) (*v1.SelfSubjectAccessReview, error)
    +	Create(ctx context.Context, selfSubjectAccessReview *authorizationv1.SelfSubjectAccessReview, opts metav1.CreateOptions) (*authorizationv1.SelfSubjectAccessReview, error)
     	SelfSubjectAccessReviewExpansion
     }
     
     // selfSubjectAccessReviews implements SelfSubjectAccessReviewInterface
     type selfSubjectAccessReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authorizationv1.SelfSubjectAccessReview]
     }
     
     // newSelfSubjectAccessReviews returns a SelfSubjectAccessReviews
     func newSelfSubjectAccessReviews(c *AuthorizationV1Client) *selfSubjectAccessReviews {
     	return &selfSubjectAccessReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authorizationv1.SelfSubjectAccessReview](
    +			"selfsubjectaccessreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authorizationv1.SelfSubjectAccessReview { return &authorizationv1.SelfSubjectAccessReview{} },
    +			gentype.PrefersProtobuf[*authorizationv1.SelfSubjectAccessReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a selfSubjectAccessReview and creates it.  Returns the server's representation of the selfSubjectAccessReview, and an error, if there is any.
    -func (c *selfSubjectAccessReviews) Create(ctx context.Context, selfSubjectAccessReview *v1.SelfSubjectAccessReview, opts metav1.CreateOptions) (result *v1.SelfSubjectAccessReview, err error) {
    -	result = &v1.SelfSubjectAccessReview{}
    -	err = c.client.Post().
    -		Resource("selfsubjectaccessreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(selfSubjectAccessReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectrulesreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectrulesreview.go
    index 25d99f7b5255..a14b2d7d5ea9 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectrulesreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectrulesreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1 "k8s.io/api/authorization/v1"
    +	authorizationv1 "k8s.io/api/authorization/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // SelfSubjectRulesReviewsGetter has a method to return a SelfSubjectRulesReviewInterface.
    @@ -35,30 +35,25 @@ type SelfSubjectRulesReviewsGetter interface {
     
     // SelfSubjectRulesReviewInterface has methods to work with SelfSubjectRulesReview resources.
     type SelfSubjectRulesReviewInterface interface {
    -	Create(ctx context.Context, selfSubjectRulesReview *v1.SelfSubjectRulesReview, opts metav1.CreateOptions) (*v1.SelfSubjectRulesReview, error)
    +	Create(ctx context.Context, selfSubjectRulesReview *authorizationv1.SelfSubjectRulesReview, opts metav1.CreateOptions) (*authorizationv1.SelfSubjectRulesReview, error)
     	SelfSubjectRulesReviewExpansion
     }
     
     // selfSubjectRulesReviews implements SelfSubjectRulesReviewInterface
     type selfSubjectRulesReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authorizationv1.SelfSubjectRulesReview]
     }
     
     // newSelfSubjectRulesReviews returns a SelfSubjectRulesReviews
     func newSelfSubjectRulesReviews(c *AuthorizationV1Client) *selfSubjectRulesReviews {
     	return &selfSubjectRulesReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authorizationv1.SelfSubjectRulesReview](
    +			"selfsubjectrulesreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authorizationv1.SelfSubjectRulesReview { return &authorizationv1.SelfSubjectRulesReview{} },
    +			gentype.PrefersProtobuf[*authorizationv1.SelfSubjectRulesReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a selfSubjectRulesReview and creates it.  Returns the server's representation of the selfSubjectRulesReview, and an error, if there is any.
    -func (c *selfSubjectRulesReviews) Create(ctx context.Context, selfSubjectRulesReview *v1.SelfSubjectRulesReview, opts metav1.CreateOptions) (result *v1.SelfSubjectRulesReview, err error) {
    -	result = &v1.SelfSubjectRulesReview{}
    -	err = c.client.Post().
    -		Resource("selfsubjectrulesreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(selfSubjectRulesReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go
    index 8ac0566a2e6b..bdc9955ad682 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1 "k8s.io/api/authorization/v1"
    +	authorizationv1 "k8s.io/api/authorization/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // SubjectAccessReviewsGetter has a method to return a SubjectAccessReviewInterface.
    @@ -35,30 +35,25 @@ type SubjectAccessReviewsGetter interface {
     
     // SubjectAccessReviewInterface has methods to work with SubjectAccessReview resources.
     type SubjectAccessReviewInterface interface {
    -	Create(ctx context.Context, subjectAccessReview *v1.SubjectAccessReview, opts metav1.CreateOptions) (*v1.SubjectAccessReview, error)
    +	Create(ctx context.Context, subjectAccessReview *authorizationv1.SubjectAccessReview, opts metav1.CreateOptions) (*authorizationv1.SubjectAccessReview, error)
     	SubjectAccessReviewExpansion
     }
     
     // subjectAccessReviews implements SubjectAccessReviewInterface
     type subjectAccessReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authorizationv1.SubjectAccessReview]
     }
     
     // newSubjectAccessReviews returns a SubjectAccessReviews
     func newSubjectAccessReviews(c *AuthorizationV1Client) *subjectAccessReviews {
     	return &subjectAccessReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authorizationv1.SubjectAccessReview](
    +			"subjectaccessreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authorizationv1.SubjectAccessReview { return &authorizationv1.SubjectAccessReview{} },
    +			gentype.PrefersProtobuf[*authorizationv1.SubjectAccessReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a subjectAccessReview and creates it.  Returns the server's representation of the subjectAccessReview, and an error, if there is any.
    -func (c *subjectAccessReviews) Create(ctx context.Context, subjectAccessReview *v1.SubjectAccessReview, opts metav1.CreateOptions) (result *v1.SubjectAccessReview, err error) {
    -	result = &v1.SubjectAccessReview{}
    -	err = c.client.Post().
    -		Resource("subjectaccessreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(subjectAccessReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go
    index 23b0edf272f6..f33619eb3847 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/authorization/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	authorizationv1beta1 "k8s.io/api/authorization/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -100,10 +100,10 @@ func New(c rest.Interface) *AuthorizationV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := authorizationv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go
    index 8e328a57bc89..38fa676f4773 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go
    @@ -29,19 +29,19 @@ type FakeAuthorizationV1beta1 struct {
     }
     
     func (c *FakeAuthorizationV1beta1) LocalSubjectAccessReviews(namespace string) v1beta1.LocalSubjectAccessReviewInterface {
    -	return &FakeLocalSubjectAccessReviews{c, namespace}
    +	return newFakeLocalSubjectAccessReviews(c, namespace)
     }
     
     func (c *FakeAuthorizationV1beta1) SelfSubjectAccessReviews() v1beta1.SelfSubjectAccessReviewInterface {
    -	return &FakeSelfSubjectAccessReviews{c}
    +	return newFakeSelfSubjectAccessReviews(c)
     }
     
     func (c *FakeAuthorizationV1beta1) SelfSubjectRulesReviews() v1beta1.SelfSubjectRulesReviewInterface {
    -	return &FakeSelfSubjectRulesReviews{c}
    +	return newFakeSelfSubjectRulesReviews(c)
     }
     
     func (c *FakeAuthorizationV1beta1) SubjectAccessReviews() v1beta1.SubjectAccessReviewInterface {
    -	return &FakeSubjectAccessReviews{c}
    +	return newFakeSubjectAccessReviews(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go
    index 104e979d19e4..7a874c5ba4a8 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go
    @@ -19,30 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1beta1 "k8s.io/api/authorization/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authorizationv1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
     )
     
    -// FakeLocalSubjectAccessReviews implements LocalSubjectAccessReviewInterface
    -type FakeLocalSubjectAccessReviews struct {
    +// fakeLocalSubjectAccessReviews implements LocalSubjectAccessReviewInterface
    +type fakeLocalSubjectAccessReviews struct {
    +	*gentype.FakeClient[*v1beta1.LocalSubjectAccessReview]
     	Fake *FakeAuthorizationV1beta1
    -	ns   string
     }
     
    -var localsubjectaccessreviewsResource = v1beta1.SchemeGroupVersion.WithResource("localsubjectaccessreviews")
    -
    -var localsubjectaccessreviewsKind = v1beta1.SchemeGroupVersion.WithKind("LocalSubjectAccessReview")
    -
    -// Create takes the representation of a localSubjectAccessReview and creates it.  Returns the server's representation of the localSubjectAccessReview, and an error, if there is any.
    -func (c *FakeLocalSubjectAccessReviews) Create(ctx context.Context, localSubjectAccessReview *v1beta1.LocalSubjectAccessReview, opts v1.CreateOptions) (result *v1beta1.LocalSubjectAccessReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(localsubjectaccessreviewsResource, c.ns, localSubjectAccessReview), &v1beta1.LocalSubjectAccessReview{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeLocalSubjectAccessReviews(fake *FakeAuthorizationV1beta1, namespace string) authorizationv1beta1.LocalSubjectAccessReviewInterface {
    +	return &fakeLocalSubjectAccessReviews{
    +		gentype.NewFakeClient[*v1beta1.LocalSubjectAccessReview](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("localsubjectaccessreviews"),
    +			v1beta1.SchemeGroupVersion.WithKind("LocalSubjectAccessReview"),
    +			func() *v1beta1.LocalSubjectAccessReview { return &v1beta1.LocalSubjectAccessReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.LocalSubjectAccessReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go
    index 517e48b76077..321a4bf3688f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1beta1 "k8s.io/api/authorization/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authorizationv1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
     )
     
    -// FakeSelfSubjectAccessReviews implements SelfSubjectAccessReviewInterface
    -type FakeSelfSubjectAccessReviews struct {
    +// fakeSelfSubjectAccessReviews implements SelfSubjectAccessReviewInterface
    +type fakeSelfSubjectAccessReviews struct {
    +	*gentype.FakeClient[*v1beta1.SelfSubjectAccessReview]
     	Fake *FakeAuthorizationV1beta1
     }
     
    -var selfsubjectaccessreviewsResource = v1beta1.SchemeGroupVersion.WithResource("selfsubjectaccessreviews")
    -
    -var selfsubjectaccessreviewsKind = v1beta1.SchemeGroupVersion.WithKind("SelfSubjectAccessReview")
    -
    -// Create takes the representation of a selfSubjectAccessReview and creates it.  Returns the server's representation of the selfSubjectAccessReview, and an error, if there is any.
    -func (c *FakeSelfSubjectAccessReviews) Create(ctx context.Context, selfSubjectAccessReview *v1beta1.SelfSubjectAccessReview, opts v1.CreateOptions) (result *v1beta1.SelfSubjectAccessReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(selfsubjectaccessreviewsResource, selfSubjectAccessReview), &v1beta1.SelfSubjectAccessReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeSelfSubjectAccessReviews(fake *FakeAuthorizationV1beta1) authorizationv1beta1.SelfSubjectAccessReviewInterface {
    +	return &fakeSelfSubjectAccessReviews{
    +		gentype.NewFakeClient[*v1beta1.SelfSubjectAccessReview](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("selfsubjectaccessreviews"),
    +			v1beta1.SchemeGroupVersion.WithKind("SelfSubjectAccessReview"),
    +			func() *v1beta1.SelfSubjectAccessReview { return &v1beta1.SelfSubjectAccessReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.SelfSubjectAccessReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectrulesreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectrulesreview.go
    index 3aed050fcf58..96a737c33e70 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectrulesreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectrulesreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1beta1 "k8s.io/api/authorization/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authorizationv1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
     )
     
    -// FakeSelfSubjectRulesReviews implements SelfSubjectRulesReviewInterface
    -type FakeSelfSubjectRulesReviews struct {
    +// fakeSelfSubjectRulesReviews implements SelfSubjectRulesReviewInterface
    +type fakeSelfSubjectRulesReviews struct {
    +	*gentype.FakeClient[*v1beta1.SelfSubjectRulesReview]
     	Fake *FakeAuthorizationV1beta1
     }
     
    -var selfsubjectrulesreviewsResource = v1beta1.SchemeGroupVersion.WithResource("selfsubjectrulesreviews")
    -
    -var selfsubjectrulesreviewsKind = v1beta1.SchemeGroupVersion.WithKind("SelfSubjectRulesReview")
    -
    -// Create takes the representation of a selfSubjectRulesReview and creates it.  Returns the server's representation of the selfSubjectRulesReview, and an error, if there is any.
    -func (c *FakeSelfSubjectRulesReviews) Create(ctx context.Context, selfSubjectRulesReview *v1beta1.SelfSubjectRulesReview, opts v1.CreateOptions) (result *v1beta1.SelfSubjectRulesReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(selfsubjectrulesreviewsResource, selfSubjectRulesReview), &v1beta1.SelfSubjectRulesReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeSelfSubjectRulesReviews(fake *FakeAuthorizationV1beta1) authorizationv1beta1.SelfSubjectRulesReviewInterface {
    +	return &fakeSelfSubjectRulesReviews{
    +		gentype.NewFakeClient[*v1beta1.SelfSubjectRulesReview](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("selfsubjectrulesreviews"),
    +			v1beta1.SchemeGroupVersion.WithKind("SelfSubjectRulesReview"),
    +			func() *v1beta1.SelfSubjectRulesReview { return &v1beta1.SelfSubjectRulesReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.SelfSubjectRulesReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go
    index e9bfa521a299..fdb2e1727c1f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go
    @@ -19,28 +19,26 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -
     	v1beta1 "k8s.io/api/authorization/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	authorizationv1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
     )
     
    -// FakeSubjectAccessReviews implements SubjectAccessReviewInterface
    -type FakeSubjectAccessReviews struct {
    +// fakeSubjectAccessReviews implements SubjectAccessReviewInterface
    +type fakeSubjectAccessReviews struct {
    +	*gentype.FakeClient[*v1beta1.SubjectAccessReview]
     	Fake *FakeAuthorizationV1beta1
     }
     
    -var subjectaccessreviewsResource = v1beta1.SchemeGroupVersion.WithResource("subjectaccessreviews")
    -
    -var subjectaccessreviewsKind = v1beta1.SchemeGroupVersion.WithKind("SubjectAccessReview")
    -
    -// Create takes the representation of a subjectAccessReview and creates it.  Returns the server's representation of the subjectAccessReview, and an error, if there is any.
    -func (c *FakeSubjectAccessReviews) Create(ctx context.Context, subjectAccessReview *v1beta1.SubjectAccessReview, opts v1.CreateOptions) (result *v1beta1.SubjectAccessReview, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(subjectaccessreviewsResource, subjectAccessReview), &v1beta1.SubjectAccessReview{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeSubjectAccessReviews(fake *FakeAuthorizationV1beta1) authorizationv1beta1.SubjectAccessReviewInterface {
    +	return &fakeSubjectAccessReviews{
    +		gentype.NewFakeClient[*v1beta1.SubjectAccessReview](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("subjectaccessreviews"),
    +			v1beta1.SchemeGroupVersion.WithKind("SubjectAccessReview"),
    +			func() *v1beta1.SubjectAccessReview { return &v1beta1.SubjectAccessReview{} },
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.SubjectAccessReview), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go
    index 78584ba9458a..8dcc984f7944 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/authorization/v1beta1"
    +	authorizationv1beta1 "k8s.io/api/authorization/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // LocalSubjectAccessReviewsGetter has a method to return a LocalSubjectAccessReviewInterface.
    @@ -35,33 +35,27 @@ type LocalSubjectAccessReviewsGetter interface {
     
     // LocalSubjectAccessReviewInterface has methods to work with LocalSubjectAccessReview resources.
     type LocalSubjectAccessReviewInterface interface {
    -	Create(ctx context.Context, localSubjectAccessReview *v1beta1.LocalSubjectAccessReview, opts v1.CreateOptions) (*v1beta1.LocalSubjectAccessReview, error)
    +	Create(ctx context.Context, localSubjectAccessReview *authorizationv1beta1.LocalSubjectAccessReview, opts v1.CreateOptions) (*authorizationv1beta1.LocalSubjectAccessReview, error)
     	LocalSubjectAccessReviewExpansion
     }
     
     // localSubjectAccessReviews implements LocalSubjectAccessReviewInterface
     type localSubjectAccessReviews struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.Client[*authorizationv1beta1.LocalSubjectAccessReview]
     }
     
     // newLocalSubjectAccessReviews returns a LocalSubjectAccessReviews
     func newLocalSubjectAccessReviews(c *AuthorizationV1beta1Client, namespace string) *localSubjectAccessReviews {
     	return &localSubjectAccessReviews{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClient[*authorizationv1beta1.LocalSubjectAccessReview](
    +			"localsubjectaccessreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *authorizationv1beta1.LocalSubjectAccessReview {
    +				return &authorizationv1beta1.LocalSubjectAccessReview{}
    +			},
    +			gentype.PrefersProtobuf[*authorizationv1beta1.LocalSubjectAccessReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a localSubjectAccessReview and creates it.  Returns the server's representation of the localSubjectAccessReview, and an error, if there is any.
    -func (c *localSubjectAccessReviews) Create(ctx context.Context, localSubjectAccessReview *v1beta1.LocalSubjectAccessReview, opts v1.CreateOptions) (result *v1beta1.LocalSubjectAccessReview, err error) {
    -	result = &v1beta1.LocalSubjectAccessReview{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("localsubjectaccessreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(localSubjectAccessReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go
    index 0286c93fe6a1..b1f111f3fd2e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/authorization/v1beta1"
    +	authorizationv1beta1 "k8s.io/api/authorization/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // SelfSubjectAccessReviewsGetter has a method to return a SelfSubjectAccessReviewInterface.
    @@ -35,30 +35,27 @@ type SelfSubjectAccessReviewsGetter interface {
     
     // SelfSubjectAccessReviewInterface has methods to work with SelfSubjectAccessReview resources.
     type SelfSubjectAccessReviewInterface interface {
    -	Create(ctx context.Context, selfSubjectAccessReview *v1beta1.SelfSubjectAccessReview, opts v1.CreateOptions) (*v1beta1.SelfSubjectAccessReview, error)
    +	Create(ctx context.Context, selfSubjectAccessReview *authorizationv1beta1.SelfSubjectAccessReview, opts v1.CreateOptions) (*authorizationv1beta1.SelfSubjectAccessReview, error)
     	SelfSubjectAccessReviewExpansion
     }
     
     // selfSubjectAccessReviews implements SelfSubjectAccessReviewInterface
     type selfSubjectAccessReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authorizationv1beta1.SelfSubjectAccessReview]
     }
     
     // newSelfSubjectAccessReviews returns a SelfSubjectAccessReviews
     func newSelfSubjectAccessReviews(c *AuthorizationV1beta1Client) *selfSubjectAccessReviews {
     	return &selfSubjectAccessReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authorizationv1beta1.SelfSubjectAccessReview](
    +			"selfsubjectaccessreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authorizationv1beta1.SelfSubjectAccessReview {
    +				return &authorizationv1beta1.SelfSubjectAccessReview{}
    +			},
    +			gentype.PrefersProtobuf[*authorizationv1beta1.SelfSubjectAccessReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a selfSubjectAccessReview and creates it.  Returns the server's representation of the selfSubjectAccessReview, and an error, if there is any.
    -func (c *selfSubjectAccessReviews) Create(ctx context.Context, selfSubjectAccessReview *v1beta1.SelfSubjectAccessReview, opts v1.CreateOptions) (result *v1beta1.SelfSubjectAccessReview, err error) {
    -	result = &v1beta1.SelfSubjectAccessReview{}
    -	err = c.client.Post().
    -		Resource("selfsubjectaccessreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(selfSubjectAccessReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectrulesreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectrulesreview.go
    index d772973ec6e8..11a11b8e6ea7 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectrulesreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectrulesreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/authorization/v1beta1"
    +	authorizationv1beta1 "k8s.io/api/authorization/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // SelfSubjectRulesReviewsGetter has a method to return a SelfSubjectRulesReviewInterface.
    @@ -35,30 +35,27 @@ type SelfSubjectRulesReviewsGetter interface {
     
     // SelfSubjectRulesReviewInterface has methods to work with SelfSubjectRulesReview resources.
     type SelfSubjectRulesReviewInterface interface {
    -	Create(ctx context.Context, selfSubjectRulesReview *v1beta1.SelfSubjectRulesReview, opts v1.CreateOptions) (*v1beta1.SelfSubjectRulesReview, error)
    +	Create(ctx context.Context, selfSubjectRulesReview *authorizationv1beta1.SelfSubjectRulesReview, opts v1.CreateOptions) (*authorizationv1beta1.SelfSubjectRulesReview, error)
     	SelfSubjectRulesReviewExpansion
     }
     
     // selfSubjectRulesReviews implements SelfSubjectRulesReviewInterface
     type selfSubjectRulesReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authorizationv1beta1.SelfSubjectRulesReview]
     }
     
     // newSelfSubjectRulesReviews returns a SelfSubjectRulesReviews
     func newSelfSubjectRulesReviews(c *AuthorizationV1beta1Client) *selfSubjectRulesReviews {
     	return &selfSubjectRulesReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authorizationv1beta1.SelfSubjectRulesReview](
    +			"selfsubjectrulesreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authorizationv1beta1.SelfSubjectRulesReview {
    +				return &authorizationv1beta1.SelfSubjectRulesReview{}
    +			},
    +			gentype.PrefersProtobuf[*authorizationv1beta1.SelfSubjectRulesReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a selfSubjectRulesReview and creates it.  Returns the server's representation of the selfSubjectRulesReview, and an error, if there is any.
    -func (c *selfSubjectRulesReviews) Create(ctx context.Context, selfSubjectRulesReview *v1beta1.SelfSubjectRulesReview, opts v1.CreateOptions) (result *v1beta1.SelfSubjectRulesReview, err error) {
    -	result = &v1beta1.SelfSubjectRulesReview{}
    -	err = c.client.Post().
    -		Resource("selfsubjectrulesreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(selfSubjectRulesReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go
    index aebe8398c0f4..b625375218c8 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go
    @@ -19,12 +19,12 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/authorization/v1beta1"
    +	authorizationv1beta1 "k8s.io/api/authorization/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // SubjectAccessReviewsGetter has a method to return a SubjectAccessReviewInterface.
    @@ -35,30 +35,25 @@ type SubjectAccessReviewsGetter interface {
     
     // SubjectAccessReviewInterface has methods to work with SubjectAccessReview resources.
     type SubjectAccessReviewInterface interface {
    -	Create(ctx context.Context, subjectAccessReview *v1beta1.SubjectAccessReview, opts v1.CreateOptions) (*v1beta1.SubjectAccessReview, error)
    +	Create(ctx context.Context, subjectAccessReview *authorizationv1beta1.SubjectAccessReview, opts v1.CreateOptions) (*authorizationv1beta1.SubjectAccessReview, error)
     	SubjectAccessReviewExpansion
     }
     
     // subjectAccessReviews implements SubjectAccessReviewInterface
     type subjectAccessReviews struct {
    -	client rest.Interface
    +	*gentype.Client[*authorizationv1beta1.SubjectAccessReview]
     }
     
     // newSubjectAccessReviews returns a SubjectAccessReviews
     func newSubjectAccessReviews(c *AuthorizationV1beta1Client) *subjectAccessReviews {
     	return &subjectAccessReviews{
    -		client: c.RESTClient(),
    +		gentype.NewClient[*authorizationv1beta1.SubjectAccessReview](
    +			"subjectaccessreviews",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *authorizationv1beta1.SubjectAccessReview { return &authorizationv1beta1.SubjectAccessReview{} },
    +			gentype.PrefersProtobuf[*authorizationv1beta1.SubjectAccessReview](),
    +		),
     	}
     }
    -
    -// Create takes the representation of a subjectAccessReview and creates it.  Returns the server's representation of the subjectAccessReview, and an error, if there is any.
    -func (c *subjectAccessReviews) Create(ctx context.Context, subjectAccessReview *v1beta1.SubjectAccessReview, opts v1.CreateOptions) (result *v1beta1.SubjectAccessReview, err error) {
    -	result = &v1beta1.SubjectAccessReview{}
    -	err = c.client.Post().
    -		Resource("subjectaccessreviews").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(subjectAccessReview).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go
    index f3a2752cbbea..6ceaaf82af51 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/autoscaling/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	autoscalingv1 "k8s.io/api/autoscaling/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *AutoscalingV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := autoscalingv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go
    index 99e26fcf39bd..3af0d3467021 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go
    @@ -29,7 +29,7 @@ type FakeAutoscalingV1 struct {
     }
     
     func (c *FakeAutoscalingV1) HorizontalPodAutoscalers(namespace string) v1.HorizontalPodAutoscalerInterface {
    -	return &FakeHorizontalPodAutoscalers{c, namespace}
    +	return newFakeHorizontalPodAutoscalers(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go
    index a2c95b753957..4f04d3256c3b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go
    @@ -19,171 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/autoscaling/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	autoscalingv1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedautoscalingv1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1"
     )
     
    -// FakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
    -type FakeHorizontalPodAutoscalers struct {
    +// fakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
    +type fakeHorizontalPodAutoscalers struct {
    +	*gentype.FakeClientWithListAndApply[*v1.HorizontalPodAutoscaler, *v1.HorizontalPodAutoscalerList, *autoscalingv1.HorizontalPodAutoscalerApplyConfiguration]
     	Fake *FakeAutoscalingV1
    -	ns   string
    -}
    -
    -var horizontalpodautoscalersResource = v1.SchemeGroupVersion.WithResource("horizontalpodautoscalers")
    -
    -var horizontalpodautoscalersKind = v1.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler")
    -
    -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &v1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.HorizontalPodAutoscaler), err
    -}
    -
    -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors.
    -func (c *FakeHorizontalPodAutoscalers) List(ctx context.Context, opts metav1.ListOptions) (result *v1.HorizontalPodAutoscalerList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &v1.HorizontalPodAutoscalerList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.HorizontalPodAutoscalerList{ListMeta: obj.(*v1.HorizontalPodAutoscalerList).ListMeta}
    -	for _, item := range obj.(*v1.HorizontalPodAutoscalerList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers.
    -func (c *FakeHorizontalPodAutoscalers) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(horizontalpodautoscalersResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a horizontalPodAutoscaler and creates it.  Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Create(ctx context.Context, horizontalPodAutoscaler *v1.HorizontalPodAutoscaler, opts metav1.CreateOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.HorizontalPodAutoscaler), err
    -}
    -
    -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Update(ctx context.Context, horizontalPodAutoscaler *v1.HorizontalPodAutoscaler, opts metav1.UpdateOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.HorizontalPodAutoscaler), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeHorizontalPodAutoscalers) UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v1.HorizontalPodAutoscaler, opts metav1.UpdateOptions) (*v1.HorizontalPodAutoscaler, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &v1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.HorizontalPodAutoscaler), err
    -}
    -
    -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs.
    -func (c *FakeHorizontalPodAutoscalers) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(horizontalpodautoscalersResource, c.ns, name, opts), &v1.HorizontalPodAutoscaler{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeHorizontalPodAutoscalers) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(horizontalpodautoscalersResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.HorizontalPodAutoscalerList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched horizontalPodAutoscaler.
    -func (c *FakeHorizontalPodAutoscalers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, pt, data, subresources...), &v1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.HorizontalPodAutoscaler), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied horizontalPodAutoscaler.
    -func (c *FakeHorizontalPodAutoscalers) Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscalerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, *name, types.ApplyPatchType, data), &v1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.HorizontalPodAutoscaler), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeHorizontalPodAutoscalers) ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscalerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeHorizontalPodAutoscalers(fake *FakeAutoscalingV1, namespace string) typedautoscalingv1.HorizontalPodAutoscalerInterface {
    +	return &fakeHorizontalPodAutoscalers{
    +		gentype.NewFakeClientWithListAndApply[*v1.HorizontalPodAutoscaler, *v1.HorizontalPodAutoscalerList, *autoscalingv1.HorizontalPodAutoscalerApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("horizontalpodautoscalers"),
    +			v1.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler"),
    +			func() *v1.HorizontalPodAutoscaler { return &v1.HorizontalPodAutoscaler{} },
    +			func() *v1.HorizontalPodAutoscalerList { return &v1.HorizontalPodAutoscalerList{} },
    +			func(dst, src *v1.HorizontalPodAutoscalerList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.HorizontalPodAutoscalerList) []*v1.HorizontalPodAutoscaler {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.HorizontalPodAutoscalerList, items []*v1.HorizontalPodAutoscaler) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.HorizontalPodAutoscaler), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go
    index 19afde66db5f..c5c69b7c602f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/autoscaling/v1"
    +	autoscalingv1 "k8s.io/api/autoscaling/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	autoscalingv1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    +	applyconfigurationsautoscalingv1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // HorizontalPodAutoscalersGetter has a method to return a HorizontalPodAutoscalerInterface.
    @@ -41,216 +38,38 @@ type HorizontalPodAutoscalersGetter interface {
     
     // HorizontalPodAutoscalerInterface has methods to work with HorizontalPodAutoscaler resources.
     type HorizontalPodAutoscalerInterface interface {
    -	Create(ctx context.Context, horizontalPodAutoscaler *v1.HorizontalPodAutoscaler, opts metav1.CreateOptions) (*v1.HorizontalPodAutoscaler, error)
    -	Update(ctx context.Context, horizontalPodAutoscaler *v1.HorizontalPodAutoscaler, opts metav1.UpdateOptions) (*v1.HorizontalPodAutoscaler, error)
    -	UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v1.HorizontalPodAutoscaler, opts metav1.UpdateOptions) (*v1.HorizontalPodAutoscaler, error)
    +	Create(ctx context.Context, horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler, opts metav1.CreateOptions) (*autoscalingv1.HorizontalPodAutoscaler, error)
    +	Update(ctx context.Context, horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler, opts metav1.UpdateOptions) (*autoscalingv1.HorizontalPodAutoscaler, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler, opts metav1.UpdateOptions) (*autoscalingv1.HorizontalPodAutoscaler, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.HorizontalPodAutoscaler, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.HorizontalPodAutoscalerList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*autoscalingv1.HorizontalPodAutoscaler, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*autoscalingv1.HorizontalPodAutoscalerList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.HorizontalPodAutoscaler, err error)
    -	Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscalerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.HorizontalPodAutoscaler, err error)
    -	ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscalerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.HorizontalPodAutoscaler, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *autoscalingv1.HorizontalPodAutoscaler, err error)
    +	Apply(ctx context.Context, horizontalPodAutoscaler *applyconfigurationsautoscalingv1.HorizontalPodAutoscalerApplyConfiguration, opts metav1.ApplyOptions) (result *autoscalingv1.HorizontalPodAutoscaler, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, horizontalPodAutoscaler *applyconfigurationsautoscalingv1.HorizontalPodAutoscalerApplyConfiguration, opts metav1.ApplyOptions) (result *autoscalingv1.HorizontalPodAutoscaler, err error)
     	HorizontalPodAutoscalerExpansion
     }
     
     // horizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
     type horizontalPodAutoscalers struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*autoscalingv1.HorizontalPodAutoscaler, *autoscalingv1.HorizontalPodAutoscalerList, *applyconfigurationsautoscalingv1.HorizontalPodAutoscalerApplyConfiguration]
     }
     
     // newHorizontalPodAutoscalers returns a HorizontalPodAutoscalers
     func newHorizontalPodAutoscalers(c *AutoscalingV1Client, namespace string) *horizontalPodAutoscalers {
     	return &horizontalPodAutoscalers{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*autoscalingv1.HorizontalPodAutoscaler, *autoscalingv1.HorizontalPodAutoscalerList, *applyconfigurationsautoscalingv1.HorizontalPodAutoscalerApplyConfiguration](
    +			"horizontalpodautoscalers",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *autoscalingv1.HorizontalPodAutoscaler { return &autoscalingv1.HorizontalPodAutoscaler{} },
    +			func() *autoscalingv1.HorizontalPodAutoscalerList { return &autoscalingv1.HorizontalPodAutoscalerList{} },
    +			gentype.PrefersProtobuf[*autoscalingv1.HorizontalPodAutoscaler](),
    +		),
     	}
     }
    -
    -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any.
    -func (c *horizontalPodAutoscalers) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	result = &v1.HorizontalPodAutoscaler{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors.
    -func (c *horizontalPodAutoscalers) List(ctx context.Context, opts metav1.ListOptions) (result *v1.HorizontalPodAutoscalerList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.HorizontalPodAutoscalerList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers.
    -func (c *horizontalPodAutoscalers) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a horizontalPodAutoscaler and creates it.  Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *horizontalPodAutoscalers) Create(ctx context.Context, horizontalPodAutoscaler *v1.HorizontalPodAutoscaler, opts metav1.CreateOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	result = &v1.HorizontalPodAutoscaler{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *horizontalPodAutoscalers) Update(ctx context.Context, horizontalPodAutoscaler *v1.HorizontalPodAutoscaler, opts metav1.UpdateOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	result = &v1.HorizontalPodAutoscaler{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(horizontalPodAutoscaler.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *horizontalPodAutoscalers) UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v1.HorizontalPodAutoscaler, opts metav1.UpdateOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	result = &v1.HorizontalPodAutoscaler{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(horizontalPodAutoscaler.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs.
    -func (c *horizontalPodAutoscalers) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *horizontalPodAutoscalers) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched horizontalPodAutoscaler.
    -func (c *horizontalPodAutoscalers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.HorizontalPodAutoscaler, err error) {
    -	result = &v1.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied horizontalPodAutoscaler.
    -func (c *horizontalPodAutoscalers) Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscalerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	result = &v1.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *horizontalPodAutoscalers) ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscalerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/autoscaling_client.go
    index 04d5d0f94985..78a2609bf4b1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/autoscaling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/autoscaling_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v2
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v2 "k8s.io/api/autoscaling/v2"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	autoscalingv2 "k8s.io/api/autoscaling/v2"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *AutoscalingV2Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v2.SchemeGroupVersion
    +	gv := autoscalingv2.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/fake/fake_autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/fake/fake_autoscaling_client.go
    index d4b907f4b078..b0012fb24126 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/fake/fake_autoscaling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/fake/fake_autoscaling_client.go
    @@ -29,7 +29,7 @@ type FakeAutoscalingV2 struct {
     }
     
     func (c *FakeAutoscalingV2) HorizontalPodAutoscalers(namespace string) v2.HorizontalPodAutoscalerInterface {
    -	return &FakeHorizontalPodAutoscalers{c, namespace}
    +	return newFakeHorizontalPodAutoscalers(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/fake/fake_horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/fake/fake_horizontalpodautoscaler.go
    index cfcc20823240..66a1f56c7004 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/fake/fake_horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/fake/fake_horizontalpodautoscaler.go
    @@ -19,171 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v2 "k8s.io/api/autoscaling/v2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	autoscalingv2 "k8s.io/client-go/applyconfigurations/autoscaling/v2"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedautoscalingv2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2"
     )
     
    -// FakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
    -type FakeHorizontalPodAutoscalers struct {
    +// fakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
    +type fakeHorizontalPodAutoscalers struct {
    +	*gentype.FakeClientWithListAndApply[*v2.HorizontalPodAutoscaler, *v2.HorizontalPodAutoscalerList, *autoscalingv2.HorizontalPodAutoscalerApplyConfiguration]
     	Fake *FakeAutoscalingV2
    -	ns   string
    -}
    -
    -var horizontalpodautoscalersResource = v2.SchemeGroupVersion.WithResource("horizontalpodautoscalers")
    -
    -var horizontalpodautoscalersKind = v2.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler")
    -
    -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Get(ctx context.Context, name string, options v1.GetOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &v2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2.HorizontalPodAutoscaler), err
    -}
    -
    -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors.
    -func (c *FakeHorizontalPodAutoscalers) List(ctx context.Context, opts v1.ListOptions) (result *v2.HorizontalPodAutoscalerList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &v2.HorizontalPodAutoscalerList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v2.HorizontalPodAutoscalerList{ListMeta: obj.(*v2.HorizontalPodAutoscalerList).ListMeta}
    -	for _, item := range obj.(*v2.HorizontalPodAutoscalerList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers.
    -func (c *FakeHorizontalPodAutoscalers) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(horizontalpodautoscalersResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a horizontalPodAutoscaler and creates it.  Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Create(ctx context.Context, horizontalPodAutoscaler *v2.HorizontalPodAutoscaler, opts v1.CreateOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2.HorizontalPodAutoscaler), err
    -}
    -
    -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Update(ctx context.Context, horizontalPodAutoscaler *v2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2.HorizontalPodAutoscaler), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeHorizontalPodAutoscalers) UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*v2.HorizontalPodAutoscaler, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &v2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2.HorizontalPodAutoscaler), err
    -}
    -
    -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs.
    -func (c *FakeHorizontalPodAutoscalers) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(horizontalpodautoscalersResource, c.ns, name, opts), &v2.HorizontalPodAutoscaler{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeHorizontalPodAutoscalers) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(horizontalpodautoscalersResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v2.HorizontalPodAutoscalerList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched horizontalPodAutoscaler.
    -func (c *FakeHorizontalPodAutoscalers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, pt, data, subresources...), &v2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2.HorizontalPodAutoscaler), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied horizontalPodAutoscaler.
    -func (c *FakeHorizontalPodAutoscalers) Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, *name, types.ApplyPatchType, data), &v2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2.HorizontalPodAutoscaler), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeHorizontalPodAutoscalers) ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeHorizontalPodAutoscalers(fake *FakeAutoscalingV2, namespace string) typedautoscalingv2.HorizontalPodAutoscalerInterface {
    +	return &fakeHorizontalPodAutoscalers{
    +		gentype.NewFakeClientWithListAndApply[*v2.HorizontalPodAutoscaler, *v2.HorizontalPodAutoscalerList, *autoscalingv2.HorizontalPodAutoscalerApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v2.SchemeGroupVersion.WithResource("horizontalpodautoscalers"),
    +			v2.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler"),
    +			func() *v2.HorizontalPodAutoscaler { return &v2.HorizontalPodAutoscaler{} },
    +			func() *v2.HorizontalPodAutoscalerList { return &v2.HorizontalPodAutoscalerList{} },
    +			func(dst, src *v2.HorizontalPodAutoscalerList) { dst.ListMeta = src.ListMeta },
    +			func(list *v2.HorizontalPodAutoscalerList) []*v2.HorizontalPodAutoscaler {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v2.HorizontalPodAutoscalerList, items []*v2.HorizontalPodAutoscaler) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v2.HorizontalPodAutoscaler), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/horizontalpodautoscaler.go
    index 3a077d71dae5..9eb4a6d93808 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2/horizontalpodautoscaler.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v2
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v2 "k8s.io/api/autoscaling/v2"
    +	autoscalingv2 "k8s.io/api/autoscaling/v2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	autoscalingv2 "k8s.io/client-go/applyconfigurations/autoscaling/v2"
    +	applyconfigurationsautoscalingv2 "k8s.io/client-go/applyconfigurations/autoscaling/v2"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // HorizontalPodAutoscalersGetter has a method to return a HorizontalPodAutoscalerInterface.
    @@ -41,216 +38,38 @@ type HorizontalPodAutoscalersGetter interface {
     
     // HorizontalPodAutoscalerInterface has methods to work with HorizontalPodAutoscaler resources.
     type HorizontalPodAutoscalerInterface interface {
    -	Create(ctx context.Context, horizontalPodAutoscaler *v2.HorizontalPodAutoscaler, opts v1.CreateOptions) (*v2.HorizontalPodAutoscaler, error)
    -	Update(ctx context.Context, horizontalPodAutoscaler *v2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*v2.HorizontalPodAutoscaler, error)
    -	UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*v2.HorizontalPodAutoscaler, error)
    +	Create(ctx context.Context, horizontalPodAutoscaler *autoscalingv2.HorizontalPodAutoscaler, opts v1.CreateOptions) (*autoscalingv2.HorizontalPodAutoscaler, error)
    +	Update(ctx context.Context, horizontalPodAutoscaler *autoscalingv2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*autoscalingv2.HorizontalPodAutoscaler, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*autoscalingv2.HorizontalPodAutoscaler, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v2.HorizontalPodAutoscaler, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v2.HorizontalPodAutoscalerList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*autoscalingv2.HorizontalPodAutoscaler, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*autoscalingv2.HorizontalPodAutoscalerList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2.HorizontalPodAutoscaler, err error)
    -	Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2.HorizontalPodAutoscaler, err error)
    -	ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2.HorizontalPodAutoscaler, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *autoscalingv2.HorizontalPodAutoscaler, err error)
    +	Apply(ctx context.Context, horizontalPodAutoscaler *applyconfigurationsautoscalingv2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *autoscalingv2.HorizontalPodAutoscaler, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, horizontalPodAutoscaler *applyconfigurationsautoscalingv2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *autoscalingv2.HorizontalPodAutoscaler, err error)
     	HorizontalPodAutoscalerExpansion
     }
     
     // horizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
     type horizontalPodAutoscalers struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*autoscalingv2.HorizontalPodAutoscaler, *autoscalingv2.HorizontalPodAutoscalerList, *applyconfigurationsautoscalingv2.HorizontalPodAutoscalerApplyConfiguration]
     }
     
     // newHorizontalPodAutoscalers returns a HorizontalPodAutoscalers
     func newHorizontalPodAutoscalers(c *AutoscalingV2Client, namespace string) *horizontalPodAutoscalers {
     	return &horizontalPodAutoscalers{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*autoscalingv2.HorizontalPodAutoscaler, *autoscalingv2.HorizontalPodAutoscalerList, *applyconfigurationsautoscalingv2.HorizontalPodAutoscalerApplyConfiguration](
    +			"horizontalpodautoscalers",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *autoscalingv2.HorizontalPodAutoscaler { return &autoscalingv2.HorizontalPodAutoscaler{} },
    +			func() *autoscalingv2.HorizontalPodAutoscalerList { return &autoscalingv2.HorizontalPodAutoscalerList{} },
    +			gentype.PrefersProtobuf[*autoscalingv2.HorizontalPodAutoscaler](),
    +		),
     	}
     }
    -
    -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any.
    -func (c *horizontalPodAutoscalers) Get(ctx context.Context, name string, options v1.GetOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	result = &v2.HorizontalPodAutoscaler{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors.
    -func (c *horizontalPodAutoscalers) List(ctx context.Context, opts v1.ListOptions) (result *v2.HorizontalPodAutoscalerList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v2.HorizontalPodAutoscalerList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers.
    -func (c *horizontalPodAutoscalers) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a horizontalPodAutoscaler and creates it.  Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *horizontalPodAutoscalers) Create(ctx context.Context, horizontalPodAutoscaler *v2.HorizontalPodAutoscaler, opts v1.CreateOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	result = &v2.HorizontalPodAutoscaler{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *horizontalPodAutoscalers) Update(ctx context.Context, horizontalPodAutoscaler *v2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	result = &v2.HorizontalPodAutoscaler{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(horizontalPodAutoscaler.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *horizontalPodAutoscalers) UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	result = &v2.HorizontalPodAutoscaler{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(horizontalPodAutoscaler.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs.
    -func (c *horizontalPodAutoscalers) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *horizontalPodAutoscalers) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched horizontalPodAutoscaler.
    -func (c *horizontalPodAutoscalers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2.HorizontalPodAutoscaler, err error) {
    -	result = &v2.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied horizontalPodAutoscaler.
    -func (c *horizontalPodAutoscalers) Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	result = &v2.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *horizontalPodAutoscalers) ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -
    -	result = &v2.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/autoscaling_client.go
    index d1dde5ed1b70..1fcda17c81b9 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/autoscaling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/autoscaling_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v2beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v2beta1 "k8s.io/api/autoscaling/v2beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *AutoscalingV2beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v2beta1.SchemeGroupVersion
    +	gv := autoscalingv2beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_autoscaling_client.go
    index be8e0f48e509..ca4b461c2ec1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_autoscaling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_autoscaling_client.go
    @@ -29,7 +29,7 @@ type FakeAutoscalingV2beta1 struct {
     }
     
     func (c *FakeAutoscalingV2beta1) HorizontalPodAutoscalers(namespace string) v2beta1.HorizontalPodAutoscalerInterface {
    -	return &FakeHorizontalPodAutoscalers{c, namespace}
    +	return newFakeHorizontalPodAutoscalers(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_horizontalpodautoscaler.go
    index 0b2658e642fa..8f28fb30c46f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_horizontalpodautoscaler.go
    @@ -19,171 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v2beta1 "k8s.io/api/autoscaling/v2beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	autoscalingv2beta1 "k8s.io/client-go/applyconfigurations/autoscaling/v2beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedautoscalingv2beta1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1"
     )
     
    -// FakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
    -type FakeHorizontalPodAutoscalers struct {
    +// fakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
    +type fakeHorizontalPodAutoscalers struct {
    +	*gentype.FakeClientWithListAndApply[*v2beta1.HorizontalPodAutoscaler, *v2beta1.HorizontalPodAutoscalerList, *autoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration]
     	Fake *FakeAutoscalingV2beta1
    -	ns   string
    -}
    -
    -var horizontalpodautoscalersResource = v2beta1.SchemeGroupVersion.WithResource("horizontalpodautoscalers")
    -
    -var horizontalpodautoscalersKind = v2beta1.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler")
    -
    -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Get(ctx context.Context, name string, options v1.GetOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &v2beta1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta1.HorizontalPodAutoscaler), err
    -}
    -
    -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors.
    -func (c *FakeHorizontalPodAutoscalers) List(ctx context.Context, opts v1.ListOptions) (result *v2beta1.HorizontalPodAutoscalerList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &v2beta1.HorizontalPodAutoscalerList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v2beta1.HorizontalPodAutoscalerList{ListMeta: obj.(*v2beta1.HorizontalPodAutoscalerList).ListMeta}
    -	for _, item := range obj.(*v2beta1.HorizontalPodAutoscalerList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers.
    -func (c *FakeHorizontalPodAutoscalers) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(horizontalpodautoscalersResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a horizontalPodAutoscaler and creates it.  Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Create(ctx context.Context, horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler, opts v1.CreateOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2beta1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta1.HorizontalPodAutoscaler), err
    -}
    -
    -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Update(ctx context.Context, horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler, opts v1.UpdateOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2beta1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta1.HorizontalPodAutoscaler), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeHorizontalPodAutoscalers) UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*v2beta1.HorizontalPodAutoscaler, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &v2beta1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta1.HorizontalPodAutoscaler), err
    -}
    -
    -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs.
    -func (c *FakeHorizontalPodAutoscalers) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(horizontalpodautoscalersResource, c.ns, name, opts), &v2beta1.HorizontalPodAutoscaler{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeHorizontalPodAutoscalers) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(horizontalpodautoscalersResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v2beta1.HorizontalPodAutoscalerList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched horizontalPodAutoscaler.
    -func (c *FakeHorizontalPodAutoscalers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, pt, data, subresources...), &v2beta1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta1.HorizontalPodAutoscaler), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied horizontalPodAutoscaler.
    -func (c *FakeHorizontalPodAutoscalers) Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, *name, types.ApplyPatchType, data), &v2beta1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta1.HorizontalPodAutoscaler), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeHorizontalPodAutoscalers) ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v2beta1.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeHorizontalPodAutoscalers(fake *FakeAutoscalingV2beta1, namespace string) typedautoscalingv2beta1.HorizontalPodAutoscalerInterface {
    +	return &fakeHorizontalPodAutoscalers{
    +		gentype.NewFakeClientWithListAndApply[*v2beta1.HorizontalPodAutoscaler, *v2beta1.HorizontalPodAutoscalerList, *autoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v2beta1.SchemeGroupVersion.WithResource("horizontalpodautoscalers"),
    +			v2beta1.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler"),
    +			func() *v2beta1.HorizontalPodAutoscaler { return &v2beta1.HorizontalPodAutoscaler{} },
    +			func() *v2beta1.HorizontalPodAutoscalerList { return &v2beta1.HorizontalPodAutoscalerList{} },
    +			func(dst, src *v2beta1.HorizontalPodAutoscalerList) { dst.ListMeta = src.ListMeta },
    +			func(list *v2beta1.HorizontalPodAutoscalerList) []*v2beta1.HorizontalPodAutoscaler {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v2beta1.HorizontalPodAutoscalerList, items []*v2beta1.HorizontalPodAutoscaler) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v2beta1.HorizontalPodAutoscaler), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/horizontalpodautoscaler.go
    index 5080912a1247..c1dc75ccc32c 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/horizontalpodautoscaler.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v2beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v2beta1 "k8s.io/api/autoscaling/v2beta1"
    +	autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	autoscalingv2beta1 "k8s.io/client-go/applyconfigurations/autoscaling/v2beta1"
    +	applyconfigurationsautoscalingv2beta1 "k8s.io/client-go/applyconfigurations/autoscaling/v2beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // HorizontalPodAutoscalersGetter has a method to return a HorizontalPodAutoscalerInterface.
    @@ -41,216 +38,42 @@ type HorizontalPodAutoscalersGetter interface {
     
     // HorizontalPodAutoscalerInterface has methods to work with HorizontalPodAutoscaler resources.
     type HorizontalPodAutoscalerInterface interface {
    -	Create(ctx context.Context, horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler, opts v1.CreateOptions) (*v2beta1.HorizontalPodAutoscaler, error)
    -	Update(ctx context.Context, horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*v2beta1.HorizontalPodAutoscaler, error)
    -	UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*v2beta1.HorizontalPodAutoscaler, error)
    +	Create(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta1.HorizontalPodAutoscaler, opts v1.CreateOptions) (*autoscalingv2beta1.HorizontalPodAutoscaler, error)
    +	Update(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta1.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*autoscalingv2beta1.HorizontalPodAutoscaler, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta1.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*autoscalingv2beta1.HorizontalPodAutoscaler, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v2beta1.HorizontalPodAutoscaler, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v2beta1.HorizontalPodAutoscalerList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*autoscalingv2beta1.HorizontalPodAutoscaler, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*autoscalingv2beta1.HorizontalPodAutoscalerList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2beta1.HorizontalPodAutoscaler, err error)
    -	Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta1.HorizontalPodAutoscaler, err error)
    -	ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta1.HorizontalPodAutoscaler, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *autoscalingv2beta1.HorizontalPodAutoscaler, err error)
    +	Apply(ctx context.Context, horizontalPodAutoscaler *applyconfigurationsautoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *autoscalingv2beta1.HorizontalPodAutoscaler, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, horizontalPodAutoscaler *applyconfigurationsautoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *autoscalingv2beta1.HorizontalPodAutoscaler, err error)
     	HorizontalPodAutoscalerExpansion
     }
     
     // horizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
     type horizontalPodAutoscalers struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*autoscalingv2beta1.HorizontalPodAutoscaler, *autoscalingv2beta1.HorizontalPodAutoscalerList, *applyconfigurationsautoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration]
     }
     
     // newHorizontalPodAutoscalers returns a HorizontalPodAutoscalers
     func newHorizontalPodAutoscalers(c *AutoscalingV2beta1Client, namespace string) *horizontalPodAutoscalers {
     	return &horizontalPodAutoscalers{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*autoscalingv2beta1.HorizontalPodAutoscaler, *autoscalingv2beta1.HorizontalPodAutoscalerList, *applyconfigurationsautoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration](
    +			"horizontalpodautoscalers",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *autoscalingv2beta1.HorizontalPodAutoscaler {
    +				return &autoscalingv2beta1.HorizontalPodAutoscaler{}
    +			},
    +			func() *autoscalingv2beta1.HorizontalPodAutoscalerList {
    +				return &autoscalingv2beta1.HorizontalPodAutoscalerList{}
    +			},
    +			gentype.PrefersProtobuf[*autoscalingv2beta1.HorizontalPodAutoscaler](),
    +		),
     	}
     }
    -
    -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any.
    -func (c *horizontalPodAutoscalers) Get(ctx context.Context, name string, options v1.GetOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	result = &v2beta1.HorizontalPodAutoscaler{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors.
    -func (c *horizontalPodAutoscalers) List(ctx context.Context, opts v1.ListOptions) (result *v2beta1.HorizontalPodAutoscalerList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v2beta1.HorizontalPodAutoscalerList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers.
    -func (c *horizontalPodAutoscalers) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a horizontalPodAutoscaler and creates it.  Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *horizontalPodAutoscalers) Create(ctx context.Context, horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler, opts v1.CreateOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	result = &v2beta1.HorizontalPodAutoscaler{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *horizontalPodAutoscalers) Update(ctx context.Context, horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler, opts v1.UpdateOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	result = &v2beta1.HorizontalPodAutoscaler{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(horizontalPodAutoscaler.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *horizontalPodAutoscalers) UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler, opts v1.UpdateOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	result = &v2beta1.HorizontalPodAutoscaler{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(horizontalPodAutoscaler.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs.
    -func (c *horizontalPodAutoscalers) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *horizontalPodAutoscalers) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched horizontalPodAutoscaler.
    -func (c *horizontalPodAutoscalers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	result = &v2beta1.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied horizontalPodAutoscaler.
    -func (c *horizontalPodAutoscalers) Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	result = &v2beta1.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *horizontalPodAutoscalers) ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta1.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -
    -	result = &v2beta1.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/autoscaling_client.go
    index cae1b4e43a5b..62f5b743c72b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/autoscaling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/autoscaling_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v2beta2
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *AutoscalingV2beta2Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v2beta2.SchemeGroupVersion
    +	gv := autoscalingv2beta2.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_autoscaling_client.go
    index 8c36e0e815a5..99b5026bf7b5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_autoscaling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_autoscaling_client.go
    @@ -29,7 +29,7 @@ type FakeAutoscalingV2beta2 struct {
     }
     
     func (c *FakeAutoscalingV2beta2) HorizontalPodAutoscalers(namespace string) v2beta2.HorizontalPodAutoscalerInterface {
    -	return &FakeHorizontalPodAutoscalers{c, namespace}
    +	return newFakeHorizontalPodAutoscalers(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_horizontalpodautoscaler.go
    index 0a7c93c3d3ad..f747da9d0f13 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_horizontalpodautoscaler.go
    @@ -19,171 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	autoscalingv2beta2 "k8s.io/client-go/applyconfigurations/autoscaling/v2beta2"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedautoscalingv2beta2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2"
     )
     
    -// FakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
    -type FakeHorizontalPodAutoscalers struct {
    +// fakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
    +type fakeHorizontalPodAutoscalers struct {
    +	*gentype.FakeClientWithListAndApply[*v2beta2.HorizontalPodAutoscaler, *v2beta2.HorizontalPodAutoscalerList, *autoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration]
     	Fake *FakeAutoscalingV2beta2
    -	ns   string
    -}
    -
    -var horizontalpodautoscalersResource = v2beta2.SchemeGroupVersion.WithResource("horizontalpodautoscalers")
    -
    -var horizontalpodautoscalersKind = v2beta2.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler")
    -
    -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Get(ctx context.Context, name string, options v1.GetOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &v2beta2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta2.HorizontalPodAutoscaler), err
    -}
    -
    -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors.
    -func (c *FakeHorizontalPodAutoscalers) List(ctx context.Context, opts v1.ListOptions) (result *v2beta2.HorizontalPodAutoscalerList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &v2beta2.HorizontalPodAutoscalerList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v2beta2.HorizontalPodAutoscalerList{ListMeta: obj.(*v2beta2.HorizontalPodAutoscalerList).ListMeta}
    -	for _, item := range obj.(*v2beta2.HorizontalPodAutoscalerList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers.
    -func (c *FakeHorizontalPodAutoscalers) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(horizontalpodautoscalersResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a horizontalPodAutoscaler and creates it.  Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Create(ctx context.Context, horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler, opts v1.CreateOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2beta2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta2.HorizontalPodAutoscaler), err
    -}
    -
    -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *FakeHorizontalPodAutoscalers) Update(ctx context.Context, horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2beta2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta2.HorizontalPodAutoscaler), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeHorizontalPodAutoscalers) UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*v2beta2.HorizontalPodAutoscaler, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &v2beta2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta2.HorizontalPodAutoscaler), err
    -}
    -
    -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs.
    -func (c *FakeHorizontalPodAutoscalers) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(horizontalpodautoscalersResource, c.ns, name, opts), &v2beta2.HorizontalPodAutoscaler{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeHorizontalPodAutoscalers) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(horizontalpodautoscalersResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v2beta2.HorizontalPodAutoscalerList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched horizontalPodAutoscaler.
    -func (c *FakeHorizontalPodAutoscalers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, pt, data, subresources...), &v2beta2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta2.HorizontalPodAutoscaler), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied horizontalPodAutoscaler.
    -func (c *FakeHorizontalPodAutoscalers) Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, *name, types.ApplyPatchType, data), &v2beta2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v2beta2.HorizontalPodAutoscaler), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeHorizontalPodAutoscalers) ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v2beta2.HorizontalPodAutoscaler{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeHorizontalPodAutoscalers(fake *FakeAutoscalingV2beta2, namespace string) typedautoscalingv2beta2.HorizontalPodAutoscalerInterface {
    +	return &fakeHorizontalPodAutoscalers{
    +		gentype.NewFakeClientWithListAndApply[*v2beta2.HorizontalPodAutoscaler, *v2beta2.HorizontalPodAutoscalerList, *autoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v2beta2.SchemeGroupVersion.WithResource("horizontalpodautoscalers"),
    +			v2beta2.SchemeGroupVersion.WithKind("HorizontalPodAutoscaler"),
    +			func() *v2beta2.HorizontalPodAutoscaler { return &v2beta2.HorizontalPodAutoscaler{} },
    +			func() *v2beta2.HorizontalPodAutoscalerList { return &v2beta2.HorizontalPodAutoscalerList{} },
    +			func(dst, src *v2beta2.HorizontalPodAutoscalerList) { dst.ListMeta = src.ListMeta },
    +			func(list *v2beta2.HorizontalPodAutoscalerList) []*v2beta2.HorizontalPodAutoscaler {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v2beta2.HorizontalPodAutoscalerList, items []*v2beta2.HorizontalPodAutoscaler) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v2beta2.HorizontalPodAutoscaler), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/horizontalpodautoscaler.go
    index 0ddb9108b3a0..017b3e1fc0f5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/horizontalpodautoscaler.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v2beta2
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	autoscalingv2beta2 "k8s.io/client-go/applyconfigurations/autoscaling/v2beta2"
    +	applyconfigurationsautoscalingv2beta2 "k8s.io/client-go/applyconfigurations/autoscaling/v2beta2"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // HorizontalPodAutoscalersGetter has a method to return a HorizontalPodAutoscalerInterface.
    @@ -41,216 +38,42 @@ type HorizontalPodAutoscalersGetter interface {
     
     // HorizontalPodAutoscalerInterface has methods to work with HorizontalPodAutoscaler resources.
     type HorizontalPodAutoscalerInterface interface {
    -	Create(ctx context.Context, horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler, opts v1.CreateOptions) (*v2beta2.HorizontalPodAutoscaler, error)
    -	Update(ctx context.Context, horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*v2beta2.HorizontalPodAutoscaler, error)
    -	UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*v2beta2.HorizontalPodAutoscaler, error)
    +	Create(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta2.HorizontalPodAutoscaler, opts v1.CreateOptions) (*autoscalingv2beta2.HorizontalPodAutoscaler, error)
    +	Update(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*autoscalingv2beta2.HorizontalPodAutoscaler, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (*autoscalingv2beta2.HorizontalPodAutoscaler, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v2beta2.HorizontalPodAutoscaler, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v2beta2.HorizontalPodAutoscalerList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*autoscalingv2beta2.HorizontalPodAutoscaler, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*autoscalingv2beta2.HorizontalPodAutoscalerList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2beta2.HorizontalPodAutoscaler, err error)
    -	Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta2.HorizontalPodAutoscaler, err error)
    -	ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta2.HorizontalPodAutoscaler, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *autoscalingv2beta2.HorizontalPodAutoscaler, err error)
    +	Apply(ctx context.Context, horizontalPodAutoscaler *applyconfigurationsautoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *autoscalingv2beta2.HorizontalPodAutoscaler, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, horizontalPodAutoscaler *applyconfigurationsautoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *autoscalingv2beta2.HorizontalPodAutoscaler, err error)
     	HorizontalPodAutoscalerExpansion
     }
     
     // horizontalPodAutoscalers implements HorizontalPodAutoscalerInterface
     type horizontalPodAutoscalers struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*autoscalingv2beta2.HorizontalPodAutoscaler, *autoscalingv2beta2.HorizontalPodAutoscalerList, *applyconfigurationsautoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration]
     }
     
     // newHorizontalPodAutoscalers returns a HorizontalPodAutoscalers
     func newHorizontalPodAutoscalers(c *AutoscalingV2beta2Client, namespace string) *horizontalPodAutoscalers {
     	return &horizontalPodAutoscalers{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*autoscalingv2beta2.HorizontalPodAutoscaler, *autoscalingv2beta2.HorizontalPodAutoscalerList, *applyconfigurationsautoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration](
    +			"horizontalpodautoscalers",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *autoscalingv2beta2.HorizontalPodAutoscaler {
    +				return &autoscalingv2beta2.HorizontalPodAutoscaler{}
    +			},
    +			func() *autoscalingv2beta2.HorizontalPodAutoscalerList {
    +				return &autoscalingv2beta2.HorizontalPodAutoscalerList{}
    +			},
    +			gentype.PrefersProtobuf[*autoscalingv2beta2.HorizontalPodAutoscaler](),
    +		),
     	}
     }
    -
    -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any.
    -func (c *horizontalPodAutoscalers) Get(ctx context.Context, name string, options v1.GetOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	result = &v2beta2.HorizontalPodAutoscaler{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors.
    -func (c *horizontalPodAutoscalers) List(ctx context.Context, opts v1.ListOptions) (result *v2beta2.HorizontalPodAutoscalerList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v2beta2.HorizontalPodAutoscalerList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers.
    -func (c *horizontalPodAutoscalers) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a horizontalPodAutoscaler and creates it.  Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *horizontalPodAutoscalers) Create(ctx context.Context, horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler, opts v1.CreateOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	result = &v2beta2.HorizontalPodAutoscaler{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any.
    -func (c *horizontalPodAutoscalers) Update(ctx context.Context, horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	result = &v2beta2.HorizontalPodAutoscaler{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(horizontalPodAutoscaler.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *horizontalPodAutoscalers) UpdateStatus(ctx context.Context, horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler, opts v1.UpdateOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	result = &v2beta2.HorizontalPodAutoscaler{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(horizontalPodAutoscaler.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(horizontalPodAutoscaler).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs.
    -func (c *horizontalPodAutoscalers) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *horizontalPodAutoscalers) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched horizontalPodAutoscaler.
    -func (c *horizontalPodAutoscalers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	result = &v2beta2.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied horizontalPodAutoscaler.
    -func (c *horizontalPodAutoscalers) Apply(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -	result = &v2beta2.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *horizontalPodAutoscalers) ApplyStatus(ctx context.Context, horizontalPodAutoscaler *autoscalingv2beta2.HorizontalPodAutoscalerApplyConfiguration, opts v1.ApplyOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) {
    -	if horizontalPodAutoscaler == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(horizontalPodAutoscaler)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := horizontalPodAutoscaler.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("horizontalPodAutoscaler.Name must be provided to Apply")
    -	}
    -
    -	result = &v2beta2.HorizontalPodAutoscaler{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("horizontalpodautoscalers").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go
    index eee144f71196..614d049f3bf9 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/batch/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	batchv1 "k8s.io/api/batch/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -90,10 +90,10 @@ func New(c rest.Interface) *BatchV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := batchv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/cronjob.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/cronjob.go
    index 9250263215e4..29ef3e9b72d0 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/cronjob.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/cronjob.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/batch/v1"
    +	batchv1 "k8s.io/api/batch/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	batchv1 "k8s.io/client-go/applyconfigurations/batch/v1"
    +	applyconfigurationsbatchv1 "k8s.io/client-go/applyconfigurations/batch/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CronJobsGetter has a method to return a CronJobInterface.
    @@ -41,216 +38,38 @@ type CronJobsGetter interface {
     
     // CronJobInterface has methods to work with CronJob resources.
     type CronJobInterface interface {
    -	Create(ctx context.Context, cronJob *v1.CronJob, opts metav1.CreateOptions) (*v1.CronJob, error)
    -	Update(ctx context.Context, cronJob *v1.CronJob, opts metav1.UpdateOptions) (*v1.CronJob, error)
    -	UpdateStatus(ctx context.Context, cronJob *v1.CronJob, opts metav1.UpdateOptions) (*v1.CronJob, error)
    +	Create(ctx context.Context, cronJob *batchv1.CronJob, opts metav1.CreateOptions) (*batchv1.CronJob, error)
    +	Update(ctx context.Context, cronJob *batchv1.CronJob, opts metav1.UpdateOptions) (*batchv1.CronJob, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, cronJob *batchv1.CronJob, opts metav1.UpdateOptions) (*batchv1.CronJob, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.CronJob, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.CronJobList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*batchv1.CronJob, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*batchv1.CronJobList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CronJob, err error)
    -	Apply(ctx context.Context, cronJob *batchv1.CronJobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CronJob, err error)
    -	ApplyStatus(ctx context.Context, cronJob *batchv1.CronJobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CronJob, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *batchv1.CronJob, err error)
    +	Apply(ctx context.Context, cronJob *applyconfigurationsbatchv1.CronJobApplyConfiguration, opts metav1.ApplyOptions) (result *batchv1.CronJob, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, cronJob *applyconfigurationsbatchv1.CronJobApplyConfiguration, opts metav1.ApplyOptions) (result *batchv1.CronJob, err error)
     	CronJobExpansion
     }
     
     // cronJobs implements CronJobInterface
     type cronJobs struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*batchv1.CronJob, *batchv1.CronJobList, *applyconfigurationsbatchv1.CronJobApplyConfiguration]
     }
     
     // newCronJobs returns a CronJobs
     func newCronJobs(c *BatchV1Client, namespace string) *cronJobs {
     	return &cronJobs{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*batchv1.CronJob, *batchv1.CronJobList, *applyconfigurationsbatchv1.CronJobApplyConfiguration](
    +			"cronjobs",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *batchv1.CronJob { return &batchv1.CronJob{} },
    +			func() *batchv1.CronJobList { return &batchv1.CronJobList{} },
    +			gentype.PrefersProtobuf[*batchv1.CronJob](),
    +		),
     	}
     }
    -
    -// Get takes name of the cronJob, and returns the corresponding cronJob object, and an error if there is any.
    -func (c *cronJobs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CronJob, err error) {
    -	result = &v1.CronJob{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CronJobs that match those selectors.
    -func (c *cronJobs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CronJobList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.CronJobList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cronJobs.
    -func (c *cronJobs) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a cronJob and creates it.  Returns the server's representation of the cronJob, and an error, if there is any.
    -func (c *cronJobs) Create(ctx context.Context, cronJob *v1.CronJob, opts metav1.CreateOptions) (result *v1.CronJob, err error) {
    -	result = &v1.CronJob{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cronJob).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a cronJob and updates it. Returns the server's representation of the cronJob, and an error, if there is any.
    -func (c *cronJobs) Update(ctx context.Context, cronJob *v1.CronJob, opts metav1.UpdateOptions) (result *v1.CronJob, err error) {
    -	result = &v1.CronJob{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(cronJob.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cronJob).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *cronJobs) UpdateStatus(ctx context.Context, cronJob *v1.CronJob, opts metav1.UpdateOptions) (result *v1.CronJob, err error) {
    -	result = &v1.CronJob{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(cronJob.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cronJob).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the cronJob and deletes it. Returns an error if one occurs.
    -func (c *cronJobs) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *cronJobs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched cronJob.
    -func (c *cronJobs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CronJob, err error) {
    -	result = &v1.CronJob{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cronJob.
    -func (c *cronJobs) Apply(ctx context.Context, cronJob *batchv1.CronJobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CronJob, err error) {
    -	if cronJob == nil {
    -		return nil, fmt.Errorf("cronJob provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cronJob)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cronJob.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cronJob.Name must be provided to Apply")
    -	}
    -	result = &v1.CronJob{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *cronJobs) ApplyStatus(ctx context.Context, cronJob *batchv1.CronJobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CronJob, err error) {
    -	if cronJob == nil {
    -		return nil, fmt.Errorf("cronJob provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cronJob)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := cronJob.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cronJob.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.CronJob{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go
    index 43d5b0d309a9..8fb3d18d869b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go
    @@ -29,11 +29,11 @@ type FakeBatchV1 struct {
     }
     
     func (c *FakeBatchV1) CronJobs(namespace string) v1.CronJobInterface {
    -	return &FakeCronJobs{c, namespace}
    +	return newFakeCronJobs(c, namespace)
     }
     
     func (c *FakeBatchV1) Jobs(namespace string) v1.JobInterface {
    -	return &FakeJobs{c, namespace}
    +	return newFakeJobs(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_cronjob.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_cronjob.go
    index 0cbcce6d8138..3624a73bd627 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_cronjob.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_cronjob.go
    @@ -19,171 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/batch/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	batchv1 "k8s.io/client-go/applyconfigurations/batch/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedbatchv1 "k8s.io/client-go/kubernetes/typed/batch/v1"
     )
     
    -// FakeCronJobs implements CronJobInterface
    -type FakeCronJobs struct {
    +// fakeCronJobs implements CronJobInterface
    +type fakeCronJobs struct {
    +	*gentype.FakeClientWithListAndApply[*v1.CronJob, *v1.CronJobList, *batchv1.CronJobApplyConfiguration]
     	Fake *FakeBatchV1
    -	ns   string
    -}
    -
    -var cronjobsResource = v1.SchemeGroupVersion.WithResource("cronjobs")
    -
    -var cronjobsKind = v1.SchemeGroupVersion.WithKind("CronJob")
    -
    -// Get takes name of the cronJob, and returns the corresponding cronJob object, and an error if there is any.
    -func (c *FakeCronJobs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CronJob, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(cronjobsResource, c.ns, name), &v1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CronJob), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CronJobs that match those selectors.
    -func (c *FakeCronJobs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CronJobList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(cronjobsResource, cronjobsKind, c.ns, opts), &v1.CronJobList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.CronJobList{ListMeta: obj.(*v1.CronJobList).ListMeta}
    -	for _, item := range obj.(*v1.CronJobList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cronJobs.
    -func (c *FakeCronJobs) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(cronjobsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a cronJob and creates it.  Returns the server's representation of the cronJob, and an error, if there is any.
    -func (c *FakeCronJobs) Create(ctx context.Context, cronJob *v1.CronJob, opts metav1.CreateOptions) (result *v1.CronJob, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(cronjobsResource, c.ns, cronJob), &v1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CronJob), err
    -}
    -
    -// Update takes the representation of a cronJob and updates it. Returns the server's representation of the cronJob, and an error, if there is any.
    -func (c *FakeCronJobs) Update(ctx context.Context, cronJob *v1.CronJob, opts metav1.UpdateOptions) (result *v1.CronJob, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(cronjobsResource, c.ns, cronJob), &v1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CronJob), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeCronJobs) UpdateStatus(ctx context.Context, cronJob *v1.CronJob, opts metav1.UpdateOptions) (*v1.CronJob, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(cronjobsResource, "status", c.ns, cronJob), &v1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CronJob), err
    -}
    -
    -// Delete takes name of the cronJob and deletes it. Returns an error if one occurs.
    -func (c *FakeCronJobs) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(cronjobsResource, c.ns, name, opts), &v1.CronJob{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCronJobs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(cronjobsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.CronJobList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched cronJob.
    -func (c *FakeCronJobs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CronJob, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(cronjobsResource, c.ns, name, pt, data, subresources...), &v1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CronJob), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cronJob.
    -func (c *FakeCronJobs) Apply(ctx context.Context, cronJob *batchv1.CronJobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CronJob, err error) {
    -	if cronJob == nil {
    -		return nil, fmt.Errorf("cronJob provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cronJob)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cronJob.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cronJob.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(cronjobsResource, c.ns, *name, types.ApplyPatchType, data), &v1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CronJob), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeCronJobs) ApplyStatus(ctx context.Context, cronJob *batchv1.CronJobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CronJob, err error) {
    -	if cronJob == nil {
    -		return nil, fmt.Errorf("cronJob provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cronJob)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cronJob.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cronJob.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(cronjobsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeCronJobs(fake *FakeBatchV1, namespace string) typedbatchv1.CronJobInterface {
    +	return &fakeCronJobs{
    +		gentype.NewFakeClientWithListAndApply[*v1.CronJob, *v1.CronJobList, *batchv1.CronJobApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("cronjobs"),
    +			v1.SchemeGroupVersion.WithKind("CronJob"),
    +			func() *v1.CronJob { return &v1.CronJob{} },
    +			func() *v1.CronJobList { return &v1.CronJobList{} },
    +			func(dst, src *v1.CronJobList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.CronJobList) []*v1.CronJob { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.CronJobList, items []*v1.CronJob) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.CronJob), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go
    index cf1a913bdf09..33baee56386e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go
    @@ -19,171 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/batch/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	batchv1 "k8s.io/client-go/applyconfigurations/batch/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedbatchv1 "k8s.io/client-go/kubernetes/typed/batch/v1"
     )
     
    -// FakeJobs implements JobInterface
    -type FakeJobs struct {
    +// fakeJobs implements JobInterface
    +type fakeJobs struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Job, *v1.JobList, *batchv1.JobApplyConfiguration]
     	Fake *FakeBatchV1
    -	ns   string
    -}
    -
    -var jobsResource = v1.SchemeGroupVersion.WithResource("jobs")
    -
    -var jobsKind = v1.SchemeGroupVersion.WithKind("Job")
    -
    -// Get takes name of the job, and returns the corresponding job object, and an error if there is any.
    -func (c *FakeJobs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Job, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(jobsResource, c.ns, name), &v1.Job{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Job), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Jobs that match those selectors.
    -func (c *FakeJobs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.JobList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(jobsResource, jobsKind, c.ns, opts), &v1.JobList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.JobList{ListMeta: obj.(*v1.JobList).ListMeta}
    -	for _, item := range obj.(*v1.JobList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested jobs.
    -func (c *FakeJobs) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(jobsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a job and creates it.  Returns the server's representation of the job, and an error, if there is any.
    -func (c *FakeJobs) Create(ctx context.Context, job *v1.Job, opts metav1.CreateOptions) (result *v1.Job, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(jobsResource, c.ns, job), &v1.Job{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Job), err
    -}
    -
    -// Update takes the representation of a job and updates it. Returns the server's representation of the job, and an error, if there is any.
    -func (c *FakeJobs) Update(ctx context.Context, job *v1.Job, opts metav1.UpdateOptions) (result *v1.Job, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(jobsResource, c.ns, job), &v1.Job{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Job), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeJobs) UpdateStatus(ctx context.Context, job *v1.Job, opts metav1.UpdateOptions) (*v1.Job, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(jobsResource, "status", c.ns, job), &v1.Job{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Job), err
    -}
    -
    -// Delete takes name of the job and deletes it. Returns an error if one occurs.
    -func (c *FakeJobs) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(jobsResource, c.ns, name, opts), &v1.Job{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeJobs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(jobsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.JobList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched job.
    -func (c *FakeJobs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Job, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(jobsResource, c.ns, name, pt, data, subresources...), &v1.Job{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Job), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied job.
    -func (c *FakeJobs) Apply(ctx context.Context, job *batchv1.JobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Job, err error) {
    -	if job == nil {
    -		return nil, fmt.Errorf("job provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(job)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := job.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("job.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(jobsResource, c.ns, *name, types.ApplyPatchType, data), &v1.Job{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Job), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeJobs) ApplyStatus(ctx context.Context, job *batchv1.JobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Job, err error) {
    -	if job == nil {
    -		return nil, fmt.Errorf("job provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(job)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := job.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("job.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(jobsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.Job{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeJobs(fake *FakeBatchV1, namespace string) typedbatchv1.JobInterface {
    +	return &fakeJobs{
    +		gentype.NewFakeClientWithListAndApply[*v1.Job, *v1.JobList, *batchv1.JobApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("jobs"),
    +			v1.SchemeGroupVersion.WithKind("Job"),
    +			func() *v1.Job { return &v1.Job{} },
    +			func() *v1.JobList { return &v1.JobList{} },
    +			func(dst, src *v1.JobList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.JobList) []*v1.Job { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.JobList, items []*v1.Job) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Job), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go
    index c076c80af2a7..d77aa0f03a64 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/batch/v1"
    +	batchv1 "k8s.io/api/batch/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	batchv1 "k8s.io/client-go/applyconfigurations/batch/v1"
    +	applyconfigurationsbatchv1 "k8s.io/client-go/applyconfigurations/batch/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // JobsGetter has a method to return a JobInterface.
    @@ -41,216 +38,38 @@ type JobsGetter interface {
     
     // JobInterface has methods to work with Job resources.
     type JobInterface interface {
    -	Create(ctx context.Context, job *v1.Job, opts metav1.CreateOptions) (*v1.Job, error)
    -	Update(ctx context.Context, job *v1.Job, opts metav1.UpdateOptions) (*v1.Job, error)
    -	UpdateStatus(ctx context.Context, job *v1.Job, opts metav1.UpdateOptions) (*v1.Job, error)
    +	Create(ctx context.Context, job *batchv1.Job, opts metav1.CreateOptions) (*batchv1.Job, error)
    +	Update(ctx context.Context, job *batchv1.Job, opts metav1.UpdateOptions) (*batchv1.Job, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, job *batchv1.Job, opts metav1.UpdateOptions) (*batchv1.Job, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Job, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.JobList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*batchv1.Job, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*batchv1.JobList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Job, err error)
    -	Apply(ctx context.Context, job *batchv1.JobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Job, err error)
    -	ApplyStatus(ctx context.Context, job *batchv1.JobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Job, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *batchv1.Job, err error)
    +	Apply(ctx context.Context, job *applyconfigurationsbatchv1.JobApplyConfiguration, opts metav1.ApplyOptions) (result *batchv1.Job, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, job *applyconfigurationsbatchv1.JobApplyConfiguration, opts metav1.ApplyOptions) (result *batchv1.Job, err error)
     	JobExpansion
     }
     
     // jobs implements JobInterface
     type jobs struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*batchv1.Job, *batchv1.JobList, *applyconfigurationsbatchv1.JobApplyConfiguration]
     }
     
     // newJobs returns a Jobs
     func newJobs(c *BatchV1Client, namespace string) *jobs {
     	return &jobs{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*batchv1.Job, *batchv1.JobList, *applyconfigurationsbatchv1.JobApplyConfiguration](
    +			"jobs",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *batchv1.Job { return &batchv1.Job{} },
    +			func() *batchv1.JobList { return &batchv1.JobList{} },
    +			gentype.PrefersProtobuf[*batchv1.Job](),
    +		),
     	}
     }
    -
    -// Get takes name of the job, and returns the corresponding job object, and an error if there is any.
    -func (c *jobs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Job, err error) {
    -	result = &v1.Job{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Jobs that match those selectors.
    -func (c *jobs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.JobList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.JobList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested jobs.
    -func (c *jobs) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a job and creates it.  Returns the server's representation of the job, and an error, if there is any.
    -func (c *jobs) Create(ctx context.Context, job *v1.Job, opts metav1.CreateOptions) (result *v1.Job, err error) {
    -	result = &v1.Job{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(job).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a job and updates it. Returns the server's representation of the job, and an error, if there is any.
    -func (c *jobs) Update(ctx context.Context, job *v1.Job, opts metav1.UpdateOptions) (result *v1.Job, err error) {
    -	result = &v1.Job{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		Name(job.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(job).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *jobs) UpdateStatus(ctx context.Context, job *v1.Job, opts metav1.UpdateOptions) (result *v1.Job, err error) {
    -	result = &v1.Job{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		Name(job.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(job).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the job and deletes it. Returns an error if one occurs.
    -func (c *jobs) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *jobs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched job.
    -func (c *jobs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Job, err error) {
    -	result = &v1.Job{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied job.
    -func (c *jobs) Apply(ctx context.Context, job *batchv1.JobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Job, err error) {
    -	if job == nil {
    -		return nil, fmt.Errorf("job provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(job)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := job.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("job.Name must be provided to Apply")
    -	}
    -	result = &v1.Job{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *jobs) ApplyStatus(ctx context.Context, job *batchv1.JobApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Job, err error) {
    -	if job == nil {
    -		return nil, fmt.Errorf("job provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(job)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := job.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("job.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.Job{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("jobs").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/batch_client.go
    index ebbf063ec231..2da9e413500a 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/batch_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/batch_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/batch/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	batchv1beta1 "k8s.io/api/batch/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *BatchV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := batchv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/cronjob.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/cronjob.go
    index d687339ae9d1..3091020ba279 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/cronjob.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/cronjob.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/batch/v1beta1"
    +	batchv1beta1 "k8s.io/api/batch/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	batchv1beta1 "k8s.io/client-go/applyconfigurations/batch/v1beta1"
    +	applyconfigurationsbatchv1beta1 "k8s.io/client-go/applyconfigurations/batch/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CronJobsGetter has a method to return a CronJobInterface.
    @@ -41,216 +38,38 @@ type CronJobsGetter interface {
     
     // CronJobInterface has methods to work with CronJob resources.
     type CronJobInterface interface {
    -	Create(ctx context.Context, cronJob *v1beta1.CronJob, opts v1.CreateOptions) (*v1beta1.CronJob, error)
    -	Update(ctx context.Context, cronJob *v1beta1.CronJob, opts v1.UpdateOptions) (*v1beta1.CronJob, error)
    -	UpdateStatus(ctx context.Context, cronJob *v1beta1.CronJob, opts v1.UpdateOptions) (*v1beta1.CronJob, error)
    +	Create(ctx context.Context, cronJob *batchv1beta1.CronJob, opts v1.CreateOptions) (*batchv1beta1.CronJob, error)
    +	Update(ctx context.Context, cronJob *batchv1beta1.CronJob, opts v1.UpdateOptions) (*batchv1beta1.CronJob, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, cronJob *batchv1beta1.CronJob, opts v1.UpdateOptions) (*batchv1beta1.CronJob, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.CronJob, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.CronJobList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*batchv1beta1.CronJob, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*batchv1beta1.CronJobList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CronJob, err error)
    -	Apply(ctx context.Context, cronJob *batchv1beta1.CronJobApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CronJob, err error)
    -	ApplyStatus(ctx context.Context, cronJob *batchv1beta1.CronJobApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CronJob, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *batchv1beta1.CronJob, err error)
    +	Apply(ctx context.Context, cronJob *applyconfigurationsbatchv1beta1.CronJobApplyConfiguration, opts v1.ApplyOptions) (result *batchv1beta1.CronJob, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, cronJob *applyconfigurationsbatchv1beta1.CronJobApplyConfiguration, opts v1.ApplyOptions) (result *batchv1beta1.CronJob, err error)
     	CronJobExpansion
     }
     
     // cronJobs implements CronJobInterface
     type cronJobs struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*batchv1beta1.CronJob, *batchv1beta1.CronJobList, *applyconfigurationsbatchv1beta1.CronJobApplyConfiguration]
     }
     
     // newCronJobs returns a CronJobs
     func newCronJobs(c *BatchV1beta1Client, namespace string) *cronJobs {
     	return &cronJobs{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*batchv1beta1.CronJob, *batchv1beta1.CronJobList, *applyconfigurationsbatchv1beta1.CronJobApplyConfiguration](
    +			"cronjobs",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *batchv1beta1.CronJob { return &batchv1beta1.CronJob{} },
    +			func() *batchv1beta1.CronJobList { return &batchv1beta1.CronJobList{} },
    +			gentype.PrefersProtobuf[*batchv1beta1.CronJob](),
    +		),
     	}
     }
    -
    -// Get takes name of the cronJob, and returns the corresponding cronJob object, and an error if there is any.
    -func (c *cronJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CronJob, err error) {
    -	result = &v1beta1.CronJob{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CronJobs that match those selectors.
    -func (c *cronJobs) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CronJobList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.CronJobList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cronJobs.
    -func (c *cronJobs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a cronJob and creates it.  Returns the server's representation of the cronJob, and an error, if there is any.
    -func (c *cronJobs) Create(ctx context.Context, cronJob *v1beta1.CronJob, opts v1.CreateOptions) (result *v1beta1.CronJob, err error) {
    -	result = &v1beta1.CronJob{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cronJob).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a cronJob and updates it. Returns the server's representation of the cronJob, and an error, if there is any.
    -func (c *cronJobs) Update(ctx context.Context, cronJob *v1beta1.CronJob, opts v1.UpdateOptions) (result *v1beta1.CronJob, err error) {
    -	result = &v1beta1.CronJob{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(cronJob.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cronJob).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *cronJobs) UpdateStatus(ctx context.Context, cronJob *v1beta1.CronJob, opts v1.UpdateOptions) (result *v1beta1.CronJob, err error) {
    -	result = &v1beta1.CronJob{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(cronJob.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cronJob).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the cronJob and deletes it. Returns an error if one occurs.
    -func (c *cronJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *cronJobs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched cronJob.
    -func (c *cronJobs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CronJob, err error) {
    -	result = &v1beta1.CronJob{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cronJob.
    -func (c *cronJobs) Apply(ctx context.Context, cronJob *batchv1beta1.CronJobApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CronJob, err error) {
    -	if cronJob == nil {
    -		return nil, fmt.Errorf("cronJob provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cronJob)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cronJob.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cronJob.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.CronJob{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *cronJobs) ApplyStatus(ctx context.Context, cronJob *batchv1beta1.CronJobApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CronJob, err error) {
    -	if cronJob == nil {
    -		return nil, fmt.Errorf("cronJob provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cronJob)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := cronJob.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cronJob.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.CronJob{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("cronjobs").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_batch_client.go
    index 6f350aed9a38..48cabb71e1e8 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_batch_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_batch_client.go
    @@ -29,7 +29,7 @@ type FakeBatchV1beta1 struct {
     }
     
     func (c *FakeBatchV1beta1) CronJobs(namespace string) v1beta1.CronJobInterface {
    -	return &FakeCronJobs{c, namespace}
    +	return newFakeCronJobs(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_cronjob.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_cronjob.go
    index 9d078f55a9fd..05b99fadc707 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_cronjob.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_cronjob.go
    @@ -19,171 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/batch/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	batchv1beta1 "k8s.io/client-go/applyconfigurations/batch/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedbatchv1beta1 "k8s.io/client-go/kubernetes/typed/batch/v1beta1"
     )
     
    -// FakeCronJobs implements CronJobInterface
    -type FakeCronJobs struct {
    +// fakeCronJobs implements CronJobInterface
    +type fakeCronJobs struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.CronJob, *v1beta1.CronJobList, *batchv1beta1.CronJobApplyConfiguration]
     	Fake *FakeBatchV1beta1
    -	ns   string
    -}
    -
    -var cronjobsResource = v1beta1.SchemeGroupVersion.WithResource("cronjobs")
    -
    -var cronjobsKind = v1beta1.SchemeGroupVersion.WithKind("CronJob")
    -
    -// Get takes name of the cronJob, and returns the corresponding cronJob object, and an error if there is any.
    -func (c *FakeCronJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CronJob, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(cronjobsResource, c.ns, name), &v1beta1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CronJob), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CronJobs that match those selectors.
    -func (c *FakeCronJobs) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CronJobList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(cronjobsResource, cronjobsKind, c.ns, opts), &v1beta1.CronJobList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.CronJobList{ListMeta: obj.(*v1beta1.CronJobList).ListMeta}
    -	for _, item := range obj.(*v1beta1.CronJobList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cronJobs.
    -func (c *FakeCronJobs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(cronjobsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a cronJob and creates it.  Returns the server's representation of the cronJob, and an error, if there is any.
    -func (c *FakeCronJobs) Create(ctx context.Context, cronJob *v1beta1.CronJob, opts v1.CreateOptions) (result *v1beta1.CronJob, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(cronjobsResource, c.ns, cronJob), &v1beta1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CronJob), err
    -}
    -
    -// Update takes the representation of a cronJob and updates it. Returns the server's representation of the cronJob, and an error, if there is any.
    -func (c *FakeCronJobs) Update(ctx context.Context, cronJob *v1beta1.CronJob, opts v1.UpdateOptions) (result *v1beta1.CronJob, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(cronjobsResource, c.ns, cronJob), &v1beta1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CronJob), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeCronJobs) UpdateStatus(ctx context.Context, cronJob *v1beta1.CronJob, opts v1.UpdateOptions) (*v1beta1.CronJob, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(cronjobsResource, "status", c.ns, cronJob), &v1beta1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CronJob), err
    -}
    -
    -// Delete takes name of the cronJob and deletes it. Returns an error if one occurs.
    -func (c *FakeCronJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(cronjobsResource, c.ns, name, opts), &v1beta1.CronJob{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCronJobs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(cronjobsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.CronJobList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched cronJob.
    -func (c *FakeCronJobs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CronJob, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(cronjobsResource, c.ns, name, pt, data, subresources...), &v1beta1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CronJob), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cronJob.
    -func (c *FakeCronJobs) Apply(ctx context.Context, cronJob *batchv1beta1.CronJobApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CronJob, err error) {
    -	if cronJob == nil {
    -		return nil, fmt.Errorf("cronJob provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cronJob)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cronJob.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cronJob.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(cronjobsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CronJob), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeCronJobs) ApplyStatus(ctx context.Context, cronJob *batchv1beta1.CronJobApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CronJob, err error) {
    -	if cronJob == nil {
    -		return nil, fmt.Errorf("cronJob provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cronJob)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cronJob.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cronJob.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(cronjobsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta1.CronJob{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeCronJobs(fake *FakeBatchV1beta1, namespace string) typedbatchv1beta1.CronJobInterface {
    +	return &fakeCronJobs{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.CronJob, *v1beta1.CronJobList, *batchv1beta1.CronJobApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("cronjobs"),
    +			v1beta1.SchemeGroupVersion.WithKind("CronJob"),
    +			func() *v1beta1.CronJob { return &v1beta1.CronJob{} },
    +			func() *v1beta1.CronJobList { return &v1beta1.CronJobList{} },
    +			func(dst, src *v1beta1.CronJobList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.CronJobList) []*v1beta1.CronJob { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.CronJobList, items []*v1beta1.CronJob) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.CronJob), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificates_client.go
    index 6d87c539eb4b..60337cd23fbe 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificates_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificates_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/certificates/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	certificatesv1 "k8s.io/api/certificates/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *CertificatesV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := certificatesv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificatesigningrequest.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificatesigningrequest.go
    index 0d6b68b29623..6863a22d1447 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificatesigningrequest.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificatesigningrequest.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/certificates/v1"
    +	certificatesv1 "k8s.io/api/certificates/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	certificatesv1 "k8s.io/client-go/applyconfigurations/certificates/v1"
    +	applyconfigurationscertificatesv1 "k8s.io/client-go/applyconfigurations/certificates/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CertificateSigningRequestsGetter has a method to return a CertificateSigningRequestInterface.
    @@ -41,213 +38,51 @@ type CertificateSigningRequestsGetter interface {
     
     // CertificateSigningRequestInterface has methods to work with CertificateSigningRequest resources.
     type CertificateSigningRequestInterface interface {
    -	Create(ctx context.Context, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.CreateOptions) (*v1.CertificateSigningRequest, error)
    -	Update(ctx context.Context, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.UpdateOptions) (*v1.CertificateSigningRequest, error)
    -	UpdateStatus(ctx context.Context, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.UpdateOptions) (*v1.CertificateSigningRequest, error)
    +	Create(ctx context.Context, certificateSigningRequest *certificatesv1.CertificateSigningRequest, opts metav1.CreateOptions) (*certificatesv1.CertificateSigningRequest, error)
    +	Update(ctx context.Context, certificateSigningRequest *certificatesv1.CertificateSigningRequest, opts metav1.UpdateOptions) (*certificatesv1.CertificateSigningRequest, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, certificateSigningRequest *certificatesv1.CertificateSigningRequest, opts metav1.UpdateOptions) (*certificatesv1.CertificateSigningRequest, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.CertificateSigningRequest, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.CertificateSigningRequestList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*certificatesv1.CertificateSigningRequest, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*certificatesv1.CertificateSigningRequestList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CertificateSigningRequest, err error)
    -	Apply(ctx context.Context, certificateSigningRequest *certificatesv1.CertificateSigningRequestApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CertificateSigningRequest, err error)
    -	ApplyStatus(ctx context.Context, certificateSigningRequest *certificatesv1.CertificateSigningRequestApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CertificateSigningRequest, err error)
    -	UpdateApproval(ctx context.Context, certificateSigningRequestName string, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.UpdateOptions) (*v1.CertificateSigningRequest, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *certificatesv1.CertificateSigningRequest, err error)
    +	Apply(ctx context.Context, certificateSigningRequest *applyconfigurationscertificatesv1.CertificateSigningRequestApplyConfiguration, opts metav1.ApplyOptions) (result *certificatesv1.CertificateSigningRequest, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, certificateSigningRequest *applyconfigurationscertificatesv1.CertificateSigningRequestApplyConfiguration, opts metav1.ApplyOptions) (result *certificatesv1.CertificateSigningRequest, err error)
    +	UpdateApproval(ctx context.Context, certificateSigningRequestName string, certificateSigningRequest *certificatesv1.CertificateSigningRequest, opts metav1.UpdateOptions) (*certificatesv1.CertificateSigningRequest, error)
     
     	CertificateSigningRequestExpansion
     }
     
     // certificateSigningRequests implements CertificateSigningRequestInterface
     type certificateSigningRequests struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*certificatesv1.CertificateSigningRequest, *certificatesv1.CertificateSigningRequestList, *applyconfigurationscertificatesv1.CertificateSigningRequestApplyConfiguration]
     }
     
     // newCertificateSigningRequests returns a CertificateSigningRequests
     func newCertificateSigningRequests(c *CertificatesV1Client) *certificateSigningRequests {
     	return &certificateSigningRequests{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*certificatesv1.CertificateSigningRequest, *certificatesv1.CertificateSigningRequestList, *applyconfigurationscertificatesv1.CertificateSigningRequestApplyConfiguration](
    +			"certificatesigningrequests",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *certificatesv1.CertificateSigningRequest { return &certificatesv1.CertificateSigningRequest{} },
    +			func() *certificatesv1.CertificateSigningRequestList {
    +				return &certificatesv1.CertificateSigningRequestList{}
    +			},
    +			gentype.PrefersProtobuf[*certificatesv1.CertificateSigningRequest](),
    +		),
     	}
     }
     
    -// Get takes name of the certificateSigningRequest, and returns the corresponding certificateSigningRequest object, and an error if there is any.
    -func (c *certificateSigningRequests) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CertificateSigningRequest, err error) {
    -	result = &v1.CertificateSigningRequest{}
    -	err = c.client.Get().
    -		Resource("certificatesigningrequests").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CertificateSigningRequests that match those selectors.
    -func (c *certificateSigningRequests) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CertificateSigningRequestList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.CertificateSigningRequestList{}
    -	err = c.client.Get().
    -		Resource("certificatesigningrequests").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested certificateSigningRequests.
    -func (c *certificateSigningRequests) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("certificatesigningrequests").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a certificateSigningRequest and creates it.  Returns the server's representation of the certificateSigningRequest, and an error, if there is any.
    -func (c *certificateSigningRequests) Create(ctx context.Context, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.CreateOptions) (result *v1.CertificateSigningRequest, err error) {
    -	result = &v1.CertificateSigningRequest{}
    -	err = c.client.Post().
    -		Resource("certificatesigningrequests").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(certificateSigningRequest).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a certificateSigningRequest and updates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any.
    -func (c *certificateSigningRequests) Update(ctx context.Context, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.UpdateOptions) (result *v1.CertificateSigningRequest, err error) {
    -	result = &v1.CertificateSigningRequest{}
    -	err = c.client.Put().
    -		Resource("certificatesigningrequests").
    -		Name(certificateSigningRequest.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(certificateSigningRequest).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *certificateSigningRequests) UpdateStatus(ctx context.Context, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.UpdateOptions) (result *v1.CertificateSigningRequest, err error) {
    -	result = &v1.CertificateSigningRequest{}
    -	err = c.client.Put().
    -		Resource("certificatesigningrequests").
    -		Name(certificateSigningRequest.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(certificateSigningRequest).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the certificateSigningRequest and deletes it. Returns an error if one occurs.
    -func (c *certificateSigningRequests) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("certificatesigningrequests").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *certificateSigningRequests) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("certificatesigningrequests").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched certificateSigningRequest.
    -func (c *certificateSigningRequests) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CertificateSigningRequest, err error) {
    -	result = &v1.CertificateSigningRequest{}
    -	err = c.client.Patch(pt).
    -		Resource("certificatesigningrequests").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied certificateSigningRequest.
    -func (c *certificateSigningRequests) Apply(ctx context.Context, certificateSigningRequest *certificatesv1.CertificateSigningRequestApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CertificateSigningRequest, err error) {
    -	if certificateSigningRequest == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(certificateSigningRequest)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := certificateSigningRequest.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest.Name must be provided to Apply")
    -	}
    -	result = &v1.CertificateSigningRequest{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("certificatesigningrequests").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *certificateSigningRequests) ApplyStatus(ctx context.Context, certificateSigningRequest *certificatesv1.CertificateSigningRequestApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CertificateSigningRequest, err error) {
    -	if certificateSigningRequest == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(certificateSigningRequest)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := certificateSigningRequest.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.CertificateSigningRequest{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("certificatesigningrequests").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
     // UpdateApproval takes the top resource name and the representation of a certificateSigningRequest and updates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any.
    -func (c *certificateSigningRequests) UpdateApproval(ctx context.Context, certificateSigningRequestName string, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.UpdateOptions) (result *v1.CertificateSigningRequest, err error) {
    -	result = &v1.CertificateSigningRequest{}
    -	err = c.client.Put().
    +func (c *certificateSigningRequests) UpdateApproval(ctx context.Context, certificateSigningRequestName string, certificateSigningRequest *certificatesv1.CertificateSigningRequest, opts metav1.UpdateOptions) (result *certificatesv1.CertificateSigningRequest, err error) {
    +	result = &certificatesv1.CertificateSigningRequest{}
    +	err = c.GetClient().Put().
    +		UseProtobufAsDefault().
     		Resource("certificatesigningrequests").
     		Name(certificateSigningRequestName).
     		SubResource("approval").
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/fake/fake_certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/fake/fake_certificates_client.go
    index 4779d6169b3d..782ebd95eee9 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/fake/fake_certificates_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/fake/fake_certificates_client.go
    @@ -29,7 +29,7 @@ type FakeCertificatesV1 struct {
     }
     
     func (c *FakeCertificatesV1) CertificateSigningRequests() v1.CertificateSigningRequestInterface {
    -	return &FakeCertificateSigningRequests{c}
    +	return newFakeCertificateSigningRequests(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/fake/fake_certificatesigningrequest.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/fake/fake_certificatesigningrequest.go
    index adb7db0bf680..784e74a3723b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/fake/fake_certificatesigningrequest.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/fake/fake_certificatesigningrequest.go
    @@ -19,170 +19,50 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    +	context "context"
     
     	v1 "k8s.io/api/certificates/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	certificatesv1 "k8s.io/client-go/applyconfigurations/certificates/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcertificatesv1 "k8s.io/client-go/kubernetes/typed/certificates/v1"
     	testing "k8s.io/client-go/testing"
     )
     
    -// FakeCertificateSigningRequests implements CertificateSigningRequestInterface
    -type FakeCertificateSigningRequests struct {
    +// fakeCertificateSigningRequests implements CertificateSigningRequestInterface
    +type fakeCertificateSigningRequests struct {
    +	*gentype.FakeClientWithListAndApply[*v1.CertificateSigningRequest, *v1.CertificateSigningRequestList, *certificatesv1.CertificateSigningRequestApplyConfiguration]
     	Fake *FakeCertificatesV1
     }
     
    -var certificatesigningrequestsResource = v1.SchemeGroupVersion.WithResource("certificatesigningrequests")
    -
    -var certificatesigningrequestsKind = v1.SchemeGroupVersion.WithKind("CertificateSigningRequest")
    -
    -// Get takes name of the certificateSigningRequest, and returns the corresponding certificateSigningRequest object, and an error if there is any.
    -func (c *FakeCertificateSigningRequests) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CertificateSigningRequest, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(certificatesigningrequestsResource, name), &v1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CertificateSigningRequest), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CertificateSigningRequests that match those selectors.
    -func (c *FakeCertificateSigningRequests) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CertificateSigningRequestList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(certificatesigningrequestsResource, certificatesigningrequestsKind, opts), &v1.CertificateSigningRequestList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.CertificateSigningRequestList{ListMeta: obj.(*v1.CertificateSigningRequestList).ListMeta}
    -	for _, item := range obj.(*v1.CertificateSigningRequestList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested certificateSigningRequests.
    -func (c *FakeCertificateSigningRequests) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(certificatesigningrequestsResource, opts))
    -}
    -
    -// Create takes the representation of a certificateSigningRequest and creates it.  Returns the server's representation of the certificateSigningRequest, and an error, if there is any.
    -func (c *FakeCertificateSigningRequests) Create(ctx context.Context, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.CreateOptions) (result *v1.CertificateSigningRequest, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(certificatesigningrequestsResource, certificateSigningRequest), &v1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CertificateSigningRequest), err
    -}
    -
    -// Update takes the representation of a certificateSigningRequest and updates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any.
    -func (c *FakeCertificateSigningRequests) Update(ctx context.Context, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.UpdateOptions) (result *v1.CertificateSigningRequest, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(certificatesigningrequestsResource, certificateSigningRequest), &v1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CertificateSigningRequest), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeCertificateSigningRequests) UpdateStatus(ctx context.Context, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.UpdateOptions) (*v1.CertificateSigningRequest, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(certificatesigningrequestsResource, "status", certificateSigningRequest), &v1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CertificateSigningRequest), err
    -}
    -
    -// Delete takes name of the certificateSigningRequest and deletes it. Returns an error if one occurs.
    -func (c *FakeCertificateSigningRequests) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(certificatesigningrequestsResource, name, opts), &v1.CertificateSigningRequest{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCertificateSigningRequests) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(certificatesigningrequestsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.CertificateSigningRequestList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched certificateSigningRequest.
    -func (c *FakeCertificateSigningRequests) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CertificateSigningRequest, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(certificatesigningrequestsResource, name, pt, data, subresources...), &v1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CertificateSigningRequest), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied certificateSigningRequest.
    -func (c *FakeCertificateSigningRequests) Apply(ctx context.Context, certificateSigningRequest *certificatesv1.CertificateSigningRequestApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CertificateSigningRequest, err error) {
    -	if certificateSigningRequest == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest provided to Apply must not be nil")
    +func newFakeCertificateSigningRequests(fake *FakeCertificatesV1) typedcertificatesv1.CertificateSigningRequestInterface {
    +	return &fakeCertificateSigningRequests{
    +		gentype.NewFakeClientWithListAndApply[*v1.CertificateSigningRequest, *v1.CertificateSigningRequestList, *certificatesv1.CertificateSigningRequestApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("certificatesigningrequests"),
    +			v1.SchemeGroupVersion.WithKind("CertificateSigningRequest"),
    +			func() *v1.CertificateSigningRequest { return &v1.CertificateSigningRequest{} },
    +			func() *v1.CertificateSigningRequestList { return &v1.CertificateSigningRequestList{} },
    +			func(dst, src *v1.CertificateSigningRequestList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.CertificateSigningRequestList) []*v1.CertificateSigningRequest {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.CertificateSigningRequestList, items []*v1.CertificateSigningRequest) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	data, err := json.Marshal(certificateSigningRequest)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := certificateSigningRequest.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(certificatesigningrequestsResource, *name, types.ApplyPatchType, data), &v1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CertificateSigningRequest), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeCertificateSigningRequests) ApplyStatus(ctx context.Context, certificateSigningRequest *certificatesv1.CertificateSigningRequestApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CertificateSigningRequest, err error) {
    -	if certificateSigningRequest == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(certificateSigningRequest)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := certificateSigningRequest.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(certificatesigningrequestsResource, *name, types.ApplyPatchType, data, "status"), &v1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CertificateSigningRequest), err
     }
     
     // UpdateApproval takes the representation of a certificateSigningRequest and updates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any.
    -func (c *FakeCertificateSigningRequests) UpdateApproval(ctx context.Context, certificateSigningRequestName string, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.UpdateOptions) (result *v1.CertificateSigningRequest, err error) {
    +func (c *fakeCertificateSigningRequests) UpdateApproval(ctx context.Context, certificateSigningRequestName string, certificateSigningRequest *v1.CertificateSigningRequest, opts metav1.UpdateOptions) (result *v1.CertificateSigningRequest, err error) {
    +	emptyResult := &v1.CertificateSigningRequest{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(certificatesigningrequestsResource, "approval", certificateSigningRequest), &v1.CertificateSigningRequest{})
    +		Invokes(testing.NewRootUpdateSubresourceActionWithOptions(c.Resource(), "approval", certificateSigningRequest, opts), emptyResult)
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1.CertificateSigningRequest), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/certificates_client.go
    index a9050af94567..36e08253af8a 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/certificates_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/certificates_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1alpha1 "k8s.io/api/certificates/v1alpha1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	certificatesv1alpha1 "k8s.io/api/certificates/v1alpha1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *CertificatesV1alpha1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1alpha1.SchemeGroupVersion
    +	gv := certificatesv1alpha1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/clustertrustbundle.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/clustertrustbundle.go
    index 970fb15e6e81..df215ff53ddf 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/clustertrustbundle.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/clustertrustbundle.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/certificates/v1alpha1"
    +	certificatesv1alpha1 "k8s.io/api/certificates/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	certificatesv1alpha1 "k8s.io/client-go/applyconfigurations/certificates/v1alpha1"
    +	applyconfigurationscertificatesv1alpha1 "k8s.io/client-go/applyconfigurations/certificates/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ClusterTrustBundlesGetter has a method to return a ClusterTrustBundleInterface.
    @@ -41,157 +38,36 @@ type ClusterTrustBundlesGetter interface {
     
     // ClusterTrustBundleInterface has methods to work with ClusterTrustBundle resources.
     type ClusterTrustBundleInterface interface {
    -	Create(ctx context.Context, clusterTrustBundle *v1alpha1.ClusterTrustBundle, opts v1.CreateOptions) (*v1alpha1.ClusterTrustBundle, error)
    -	Update(ctx context.Context, clusterTrustBundle *v1alpha1.ClusterTrustBundle, opts v1.UpdateOptions) (*v1alpha1.ClusterTrustBundle, error)
    +	Create(ctx context.Context, clusterTrustBundle *certificatesv1alpha1.ClusterTrustBundle, opts v1.CreateOptions) (*certificatesv1alpha1.ClusterTrustBundle, error)
    +	Update(ctx context.Context, clusterTrustBundle *certificatesv1alpha1.ClusterTrustBundle, opts v1.UpdateOptions) (*certificatesv1alpha1.ClusterTrustBundle, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ClusterTrustBundle, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ClusterTrustBundleList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*certificatesv1alpha1.ClusterTrustBundle, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*certificatesv1alpha1.ClusterTrustBundleList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterTrustBundle, err error)
    -	Apply(ctx context.Context, clusterTrustBundle *certificatesv1alpha1.ClusterTrustBundleApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterTrustBundle, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *certificatesv1alpha1.ClusterTrustBundle, err error)
    +	Apply(ctx context.Context, clusterTrustBundle *applyconfigurationscertificatesv1alpha1.ClusterTrustBundleApplyConfiguration, opts v1.ApplyOptions) (result *certificatesv1alpha1.ClusterTrustBundle, err error)
     	ClusterTrustBundleExpansion
     }
     
     // clusterTrustBundles implements ClusterTrustBundleInterface
     type clusterTrustBundles struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*certificatesv1alpha1.ClusterTrustBundle, *certificatesv1alpha1.ClusterTrustBundleList, *applyconfigurationscertificatesv1alpha1.ClusterTrustBundleApplyConfiguration]
     }
     
     // newClusterTrustBundles returns a ClusterTrustBundles
     func newClusterTrustBundles(c *CertificatesV1alpha1Client) *clusterTrustBundles {
     	return &clusterTrustBundles{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*certificatesv1alpha1.ClusterTrustBundle, *certificatesv1alpha1.ClusterTrustBundleList, *applyconfigurationscertificatesv1alpha1.ClusterTrustBundleApplyConfiguration](
    +			"clustertrustbundles",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *certificatesv1alpha1.ClusterTrustBundle { return &certificatesv1alpha1.ClusterTrustBundle{} },
    +			func() *certificatesv1alpha1.ClusterTrustBundleList {
    +				return &certificatesv1alpha1.ClusterTrustBundleList{}
    +			},
    +			gentype.PrefersProtobuf[*certificatesv1alpha1.ClusterTrustBundle](),
    +		),
     	}
     }
    -
    -// Get takes name of the clusterTrustBundle, and returns the corresponding clusterTrustBundle object, and an error if there is any.
    -func (c *clusterTrustBundles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ClusterTrustBundle, err error) {
    -	result = &v1alpha1.ClusterTrustBundle{}
    -	err = c.client.Get().
    -		Resource("clustertrustbundles").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterTrustBundles that match those selectors.
    -func (c *clusterTrustBundles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ClusterTrustBundleList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.ClusterTrustBundleList{}
    -	err = c.client.Get().
    -		Resource("clustertrustbundles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterTrustBundles.
    -func (c *clusterTrustBundles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("clustertrustbundles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a clusterTrustBundle and creates it.  Returns the server's representation of the clusterTrustBundle, and an error, if there is any.
    -func (c *clusterTrustBundles) Create(ctx context.Context, clusterTrustBundle *v1alpha1.ClusterTrustBundle, opts v1.CreateOptions) (result *v1alpha1.ClusterTrustBundle, err error) {
    -	result = &v1alpha1.ClusterTrustBundle{}
    -	err = c.client.Post().
    -		Resource("clustertrustbundles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterTrustBundle).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a clusterTrustBundle and updates it. Returns the server's representation of the clusterTrustBundle, and an error, if there is any.
    -func (c *clusterTrustBundles) Update(ctx context.Context, clusterTrustBundle *v1alpha1.ClusterTrustBundle, opts v1.UpdateOptions) (result *v1alpha1.ClusterTrustBundle, err error) {
    -	result = &v1alpha1.ClusterTrustBundle{}
    -	err = c.client.Put().
    -		Resource("clustertrustbundles").
    -		Name(clusterTrustBundle.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterTrustBundle).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the clusterTrustBundle and deletes it. Returns an error if one occurs.
    -func (c *clusterTrustBundles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("clustertrustbundles").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *clusterTrustBundles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("clustertrustbundles").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched clusterTrustBundle.
    -func (c *clusterTrustBundles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterTrustBundle, err error) {
    -	result = &v1alpha1.ClusterTrustBundle{}
    -	err = c.client.Patch(pt).
    -		Resource("clustertrustbundles").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterTrustBundle.
    -func (c *clusterTrustBundles) Apply(ctx context.Context, clusterTrustBundle *certificatesv1alpha1.ClusterTrustBundleApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterTrustBundle, err error) {
    -	if clusterTrustBundle == nil {
    -		return nil, fmt.Errorf("clusterTrustBundle provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(clusterTrustBundle)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterTrustBundle.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterTrustBundle.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.ClusterTrustBundle{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("clustertrustbundles").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/fake/fake_certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/fake/fake_certificates_client.go
    index 8ff02cdbb5a4..491e381005ff 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/fake/fake_certificates_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/fake/fake_certificates_client.go
    @@ -29,7 +29,7 @@ type FakeCertificatesV1alpha1 struct {
     }
     
     func (c *FakeCertificatesV1alpha1) ClusterTrustBundles() v1alpha1.ClusterTrustBundleInterface {
    -	return &FakeClusterTrustBundles{c}
    +	return newFakeClusterTrustBundles(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/fake/fake_clustertrustbundle.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/fake/fake_clustertrustbundle.go
    index 2f849cbd7dd3..f2b5fa29271f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/fake/fake_clustertrustbundle.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/fake/fake_clustertrustbundle.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/certificates/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	certificatesv1alpha1 "k8s.io/client-go/applyconfigurations/certificates/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcertificatesv1alpha1 "k8s.io/client-go/kubernetes/typed/certificates/v1alpha1"
     )
     
    -// FakeClusterTrustBundles implements ClusterTrustBundleInterface
    -type FakeClusterTrustBundles struct {
    +// fakeClusterTrustBundles implements ClusterTrustBundleInterface
    +type fakeClusterTrustBundles struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.ClusterTrustBundle, *v1alpha1.ClusterTrustBundleList, *certificatesv1alpha1.ClusterTrustBundleApplyConfiguration]
     	Fake *FakeCertificatesV1alpha1
     }
     
    -var clustertrustbundlesResource = v1alpha1.SchemeGroupVersion.WithResource("clustertrustbundles")
    -
    -var clustertrustbundlesKind = v1alpha1.SchemeGroupVersion.WithKind("ClusterTrustBundle")
    -
    -// Get takes name of the clusterTrustBundle, and returns the corresponding clusterTrustBundle object, and an error if there is any.
    -func (c *FakeClusterTrustBundles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ClusterTrustBundle, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(clustertrustbundlesResource, name), &v1alpha1.ClusterTrustBundle{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterTrustBundle), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterTrustBundles that match those selectors.
    -func (c *FakeClusterTrustBundles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ClusterTrustBundleList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(clustertrustbundlesResource, clustertrustbundlesKind, opts), &v1alpha1.ClusterTrustBundleList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.ClusterTrustBundleList{ListMeta: obj.(*v1alpha1.ClusterTrustBundleList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.ClusterTrustBundleList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterTrustBundles.
    -func (c *FakeClusterTrustBundles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(clustertrustbundlesResource, opts))
    -}
    -
    -// Create takes the representation of a clusterTrustBundle and creates it.  Returns the server's representation of the clusterTrustBundle, and an error, if there is any.
    -func (c *FakeClusterTrustBundles) Create(ctx context.Context, clusterTrustBundle *v1alpha1.ClusterTrustBundle, opts v1.CreateOptions) (result *v1alpha1.ClusterTrustBundle, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(clustertrustbundlesResource, clusterTrustBundle), &v1alpha1.ClusterTrustBundle{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterTrustBundle), err
    -}
    -
    -// Update takes the representation of a clusterTrustBundle and updates it. Returns the server's representation of the clusterTrustBundle, and an error, if there is any.
    -func (c *FakeClusterTrustBundles) Update(ctx context.Context, clusterTrustBundle *v1alpha1.ClusterTrustBundle, opts v1.UpdateOptions) (result *v1alpha1.ClusterTrustBundle, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(clustertrustbundlesResource, clusterTrustBundle), &v1alpha1.ClusterTrustBundle{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterTrustBundle), err
    -}
    -
    -// Delete takes name of the clusterTrustBundle and deletes it. Returns an error if one occurs.
    -func (c *FakeClusterTrustBundles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(clustertrustbundlesResource, name, opts), &v1alpha1.ClusterTrustBundle{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeClusterTrustBundles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(clustertrustbundlesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.ClusterTrustBundleList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched clusterTrustBundle.
    -func (c *FakeClusterTrustBundles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterTrustBundle, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clustertrustbundlesResource, name, pt, data, subresources...), &v1alpha1.ClusterTrustBundle{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterTrustBundle), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterTrustBundle.
    -func (c *FakeClusterTrustBundles) Apply(ctx context.Context, clusterTrustBundle *certificatesv1alpha1.ClusterTrustBundleApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterTrustBundle, err error) {
    -	if clusterTrustBundle == nil {
    -		return nil, fmt.Errorf("clusterTrustBundle provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(clusterTrustBundle)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterTrustBundle.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterTrustBundle.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clustertrustbundlesResource, *name, types.ApplyPatchType, data), &v1alpha1.ClusterTrustBundle{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeClusterTrustBundles(fake *FakeCertificatesV1alpha1) typedcertificatesv1alpha1.ClusterTrustBundleInterface {
    +	return &fakeClusterTrustBundles{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.ClusterTrustBundle, *v1alpha1.ClusterTrustBundleList, *certificatesv1alpha1.ClusterTrustBundleApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("clustertrustbundles"),
    +			v1alpha1.SchemeGroupVersion.WithKind("ClusterTrustBundle"),
    +			func() *v1alpha1.ClusterTrustBundle { return &v1alpha1.ClusterTrustBundle{} },
    +			func() *v1alpha1.ClusterTrustBundleList { return &v1alpha1.ClusterTrustBundleList{} },
    +			func(dst, src *v1alpha1.ClusterTrustBundleList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.ClusterTrustBundleList) []*v1alpha1.ClusterTrustBundle {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.ClusterTrustBundleList, items []*v1alpha1.ClusterTrustBundle) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.ClusterTrustBundle), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go
    index fa97b441de2a..f040e7664e46 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/certificates/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *CertificatesV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := certificatesv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go
    index ec0b9d266fc2..4c6e28c65f6a 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/certificates/v1beta1"
    +	certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	certificatesv1beta1 "k8s.io/client-go/applyconfigurations/certificates/v1beta1"
    +	applyconfigurationscertificatesv1beta1 "k8s.io/client-go/applyconfigurations/certificates/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CertificateSigningRequestsGetter has a method to return a CertificateSigningRequestInterface.
    @@ -41,203 +38,42 @@ type CertificateSigningRequestsGetter interface {
     
     // CertificateSigningRequestInterface has methods to work with CertificateSigningRequest resources.
     type CertificateSigningRequestInterface interface {
    -	Create(ctx context.Context, certificateSigningRequest *v1beta1.CertificateSigningRequest, opts v1.CreateOptions) (*v1beta1.CertificateSigningRequest, error)
    -	Update(ctx context.Context, certificateSigningRequest *v1beta1.CertificateSigningRequest, opts v1.UpdateOptions) (*v1beta1.CertificateSigningRequest, error)
    -	UpdateStatus(ctx context.Context, certificateSigningRequest *v1beta1.CertificateSigningRequest, opts v1.UpdateOptions) (*v1beta1.CertificateSigningRequest, error)
    +	Create(ctx context.Context, certificateSigningRequest *certificatesv1beta1.CertificateSigningRequest, opts v1.CreateOptions) (*certificatesv1beta1.CertificateSigningRequest, error)
    +	Update(ctx context.Context, certificateSigningRequest *certificatesv1beta1.CertificateSigningRequest, opts v1.UpdateOptions) (*certificatesv1beta1.CertificateSigningRequest, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, certificateSigningRequest *certificatesv1beta1.CertificateSigningRequest, opts v1.UpdateOptions) (*certificatesv1beta1.CertificateSigningRequest, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.CertificateSigningRequest, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.CertificateSigningRequestList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*certificatesv1beta1.CertificateSigningRequest, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*certificatesv1beta1.CertificateSigningRequestList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CertificateSigningRequest, err error)
    -	Apply(ctx context.Context, certificateSigningRequest *certificatesv1beta1.CertificateSigningRequestApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CertificateSigningRequest, err error)
    -	ApplyStatus(ctx context.Context, certificateSigningRequest *certificatesv1beta1.CertificateSigningRequestApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CertificateSigningRequest, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *certificatesv1beta1.CertificateSigningRequest, err error)
    +	Apply(ctx context.Context, certificateSigningRequest *applyconfigurationscertificatesv1beta1.CertificateSigningRequestApplyConfiguration, opts v1.ApplyOptions) (result *certificatesv1beta1.CertificateSigningRequest, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, certificateSigningRequest *applyconfigurationscertificatesv1beta1.CertificateSigningRequestApplyConfiguration, opts v1.ApplyOptions) (result *certificatesv1beta1.CertificateSigningRequest, err error)
     	CertificateSigningRequestExpansion
     }
     
     // certificateSigningRequests implements CertificateSigningRequestInterface
     type certificateSigningRequests struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*certificatesv1beta1.CertificateSigningRequest, *certificatesv1beta1.CertificateSigningRequestList, *applyconfigurationscertificatesv1beta1.CertificateSigningRequestApplyConfiguration]
     }
     
     // newCertificateSigningRequests returns a CertificateSigningRequests
     func newCertificateSigningRequests(c *CertificatesV1beta1Client) *certificateSigningRequests {
     	return &certificateSigningRequests{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*certificatesv1beta1.CertificateSigningRequest, *certificatesv1beta1.CertificateSigningRequestList, *applyconfigurationscertificatesv1beta1.CertificateSigningRequestApplyConfiguration](
    +			"certificatesigningrequests",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *certificatesv1beta1.CertificateSigningRequest {
    +				return &certificatesv1beta1.CertificateSigningRequest{}
    +			},
    +			func() *certificatesv1beta1.CertificateSigningRequestList {
    +				return &certificatesv1beta1.CertificateSigningRequestList{}
    +			},
    +			gentype.PrefersProtobuf[*certificatesv1beta1.CertificateSigningRequest](),
    +		),
     	}
     }
    -
    -// Get takes name of the certificateSigningRequest, and returns the corresponding certificateSigningRequest object, and an error if there is any.
    -func (c *certificateSigningRequests) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	result = &v1beta1.CertificateSigningRequest{}
    -	err = c.client.Get().
    -		Resource("certificatesigningrequests").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CertificateSigningRequests that match those selectors.
    -func (c *certificateSigningRequests) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CertificateSigningRequestList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.CertificateSigningRequestList{}
    -	err = c.client.Get().
    -		Resource("certificatesigningrequests").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested certificateSigningRequests.
    -func (c *certificateSigningRequests) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("certificatesigningrequests").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a certificateSigningRequest and creates it.  Returns the server's representation of the certificateSigningRequest, and an error, if there is any.
    -func (c *certificateSigningRequests) Create(ctx context.Context, certificateSigningRequest *v1beta1.CertificateSigningRequest, opts v1.CreateOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	result = &v1beta1.CertificateSigningRequest{}
    -	err = c.client.Post().
    -		Resource("certificatesigningrequests").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(certificateSigningRequest).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a certificateSigningRequest and updates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any.
    -func (c *certificateSigningRequests) Update(ctx context.Context, certificateSigningRequest *v1beta1.CertificateSigningRequest, opts v1.UpdateOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	result = &v1beta1.CertificateSigningRequest{}
    -	err = c.client.Put().
    -		Resource("certificatesigningrequests").
    -		Name(certificateSigningRequest.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(certificateSigningRequest).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *certificateSigningRequests) UpdateStatus(ctx context.Context, certificateSigningRequest *v1beta1.CertificateSigningRequest, opts v1.UpdateOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	result = &v1beta1.CertificateSigningRequest{}
    -	err = c.client.Put().
    -		Resource("certificatesigningrequests").
    -		Name(certificateSigningRequest.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(certificateSigningRequest).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the certificateSigningRequest and deletes it. Returns an error if one occurs.
    -func (c *certificateSigningRequests) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("certificatesigningrequests").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *certificateSigningRequests) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("certificatesigningrequests").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched certificateSigningRequest.
    -func (c *certificateSigningRequests) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CertificateSigningRequest, err error) {
    -	result = &v1beta1.CertificateSigningRequest{}
    -	err = c.client.Patch(pt).
    -		Resource("certificatesigningrequests").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied certificateSigningRequest.
    -func (c *certificateSigningRequests) Apply(ctx context.Context, certificateSigningRequest *certificatesv1beta1.CertificateSigningRequestApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	if certificateSigningRequest == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(certificateSigningRequest)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := certificateSigningRequest.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.CertificateSigningRequest{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("certificatesigningrequests").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *certificateSigningRequests) ApplyStatus(ctx context.Context, certificateSigningRequest *certificatesv1beta1.CertificateSigningRequestApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	if certificateSigningRequest == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(certificateSigningRequest)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := certificateSigningRequest.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.CertificateSigningRequest{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("certificatesigningrequests").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go
    index 4737891411a4..4e631b0a40e3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go
    @@ -30,7 +30,7 @@ type CertificateSigningRequestExpansion interface {
     
     func (c *certificateSigningRequests) UpdateApproval(ctx context.Context, certificateSigningRequest *certificates.CertificateSigningRequest, opts metav1.UpdateOptions) (result *certificates.CertificateSigningRequest, err error) {
     	result = &certificates.CertificateSigningRequest{}
    -	err = c.client.Put().
    +	err = c.GetClient().Put().
     		Resource("certificatesigningrequests").
     		Name(certificateSigningRequest.Name).
     		VersionedParams(&opts, scheme.ParameterCodec).
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go
    index 29d8b088ea2f..313df7abd283 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go
    @@ -29,7 +29,7 @@ type FakeCertificatesV1beta1 struct {
     }
     
     func (c *FakeCertificatesV1beta1) CertificateSigningRequests() v1beta1.CertificateSigningRequestInterface {
    -	return &FakeCertificateSigningRequests{c}
    +	return newFakeCertificateSigningRequests(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go
    index 76bb38e7bf7c..a5f144cb817f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/certificates/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	certificatesv1beta1 "k8s.io/client-go/applyconfigurations/certificates/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcertificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1"
     )
     
    -// FakeCertificateSigningRequests implements CertificateSigningRequestInterface
    -type FakeCertificateSigningRequests struct {
    +// fakeCertificateSigningRequests implements CertificateSigningRequestInterface
    +type fakeCertificateSigningRequests struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.CertificateSigningRequest, *v1beta1.CertificateSigningRequestList, *certificatesv1beta1.CertificateSigningRequestApplyConfiguration]
     	Fake *FakeCertificatesV1beta1
     }
     
    -var certificatesigningrequestsResource = v1beta1.SchemeGroupVersion.WithResource("certificatesigningrequests")
    -
    -var certificatesigningrequestsKind = v1beta1.SchemeGroupVersion.WithKind("CertificateSigningRequest")
    -
    -// Get takes name of the certificateSigningRequest, and returns the corresponding certificateSigningRequest object, and an error if there is any.
    -func (c *FakeCertificateSigningRequests) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(certificatesigningrequestsResource, name), &v1beta1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CertificateSigningRequest), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CertificateSigningRequests that match those selectors.
    -func (c *FakeCertificateSigningRequests) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CertificateSigningRequestList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(certificatesigningrequestsResource, certificatesigningrequestsKind, opts), &v1beta1.CertificateSigningRequestList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.CertificateSigningRequestList{ListMeta: obj.(*v1beta1.CertificateSigningRequestList).ListMeta}
    -	for _, item := range obj.(*v1beta1.CertificateSigningRequestList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested certificateSigningRequests.
    -func (c *FakeCertificateSigningRequests) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(certificatesigningrequestsResource, opts))
    -}
    -
    -// Create takes the representation of a certificateSigningRequest and creates it.  Returns the server's representation of the certificateSigningRequest, and an error, if there is any.
    -func (c *FakeCertificateSigningRequests) Create(ctx context.Context, certificateSigningRequest *v1beta1.CertificateSigningRequest, opts v1.CreateOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(certificatesigningrequestsResource, certificateSigningRequest), &v1beta1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CertificateSigningRequest), err
    -}
    -
    -// Update takes the representation of a certificateSigningRequest and updates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any.
    -func (c *FakeCertificateSigningRequests) Update(ctx context.Context, certificateSigningRequest *v1beta1.CertificateSigningRequest, opts v1.UpdateOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(certificatesigningrequestsResource, certificateSigningRequest), &v1beta1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CertificateSigningRequest), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeCertificateSigningRequests) UpdateStatus(ctx context.Context, certificateSigningRequest *v1beta1.CertificateSigningRequest, opts v1.UpdateOptions) (*v1beta1.CertificateSigningRequest, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(certificatesigningrequestsResource, "status", certificateSigningRequest), &v1beta1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CertificateSigningRequest), err
    -}
    -
    -// Delete takes name of the certificateSigningRequest and deletes it. Returns an error if one occurs.
    -func (c *FakeCertificateSigningRequests) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(certificatesigningrequestsResource, name, opts), &v1beta1.CertificateSigningRequest{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCertificateSigningRequests) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(certificatesigningrequestsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.CertificateSigningRequestList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched certificateSigningRequest.
    -func (c *FakeCertificateSigningRequests) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CertificateSigningRequest, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(certificatesigningrequestsResource, name, pt, data, subresources...), &v1beta1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CertificateSigningRequest), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied certificateSigningRequest.
    -func (c *FakeCertificateSigningRequests) Apply(ctx context.Context, certificateSigningRequest *certificatesv1beta1.CertificateSigningRequestApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	if certificateSigningRequest == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(certificateSigningRequest)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := certificateSigningRequest.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(certificatesigningrequestsResource, *name, types.ApplyPatchType, data), &v1beta1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CertificateSigningRequest), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeCertificateSigningRequests) ApplyStatus(ctx context.Context, certificateSigningRequest *certificatesv1beta1.CertificateSigningRequestApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CertificateSigningRequest, err error) {
    -	if certificateSigningRequest == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(certificateSigningRequest)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := certificateSigningRequest.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("certificateSigningRequest.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(certificatesigningrequestsResource, *name, types.ApplyPatchType, data, "status"), &v1beta1.CertificateSigningRequest{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeCertificateSigningRequests(fake *FakeCertificatesV1beta1) typedcertificatesv1beta1.CertificateSigningRequestInterface {
    +	return &fakeCertificateSigningRequests{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.CertificateSigningRequest, *v1beta1.CertificateSigningRequestList, *certificatesv1beta1.CertificateSigningRequestApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("certificatesigningrequests"),
    +			v1beta1.SchemeGroupVersion.WithKind("CertificateSigningRequest"),
    +			func() *v1beta1.CertificateSigningRequest { return &v1beta1.CertificateSigningRequest{} },
    +			func() *v1beta1.CertificateSigningRequestList { return &v1beta1.CertificateSigningRequestList{} },
    +			func(dst, src *v1beta1.CertificateSigningRequestList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.CertificateSigningRequestList) []*v1beta1.CertificateSigningRequest {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.CertificateSigningRequestList, items []*v1beta1.CertificateSigningRequest) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.CertificateSigningRequest), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go
    index 2c3eaf971ecc..5d881e45ee78 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go
    @@ -24,9 +24,9 @@ import (
     	core "k8s.io/client-go/testing"
     )
     
    -func (c *FakeCertificateSigningRequests) UpdateApproval(ctx context.Context, certificateSigningRequest *certificates.CertificateSigningRequest, opts metav1.UpdateOptions) (result *certificates.CertificateSigningRequest, err error) {
    +func (c *fakeCertificateSigningRequests) UpdateApproval(ctx context.Context, certificateSigningRequest *certificates.CertificateSigningRequest, opts metav1.UpdateOptions) (result *certificates.CertificateSigningRequest, err error) {
     	obj, err := c.Fake.
    -		Invokes(core.NewRootUpdateSubresourceAction(certificatesigningrequestsResource, "approval", certificateSigningRequest), &certificates.CertificateSigningRequest{})
    +		Invokes(core.NewRootUpdateSubresourceAction(c.Resource(), "approval", certificateSigningRequest), &certificates.CertificateSigningRequest{})
     	if obj == nil {
     		return nil, err
     	}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/coordination_client.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/coordination_client.go
    index e19469d530f9..427cb7e93662 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/coordination_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/coordination_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/coordination/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	coordinationv1 "k8s.io/api/coordination/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *CoordinationV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := coordinationv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_coordination_client.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_coordination_client.go
    index 6920275b2093..fba319348ad0 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_coordination_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_coordination_client.go
    @@ -29,7 +29,7 @@ type FakeCoordinationV1 struct {
     }
     
     func (c *FakeCoordinationV1) Leases(namespace string) v1.LeaseInterface {
    -	return &FakeLeases{c, namespace}
    +	return newFakeLeases(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_lease.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_lease.go
    index 6dc7c4c17fd7..1f0f6acd3d9a 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_lease.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_lease.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/coordination/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	coordinationv1 "k8s.io/client-go/applyconfigurations/coordination/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcoordinationv1 "k8s.io/client-go/kubernetes/typed/coordination/v1"
     )
     
    -// FakeLeases implements LeaseInterface
    -type FakeLeases struct {
    +// fakeLeases implements LeaseInterface
    +type fakeLeases struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Lease, *v1.LeaseList, *coordinationv1.LeaseApplyConfiguration]
     	Fake *FakeCoordinationV1
    -	ns   string
    -}
    -
    -var leasesResource = v1.SchemeGroupVersion.WithResource("leases")
    -
    -var leasesKind = v1.SchemeGroupVersion.WithKind("Lease")
    -
    -// Get takes name of the lease, and returns the corresponding lease object, and an error if there is any.
    -func (c *FakeLeases) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Lease, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(leasesResource, c.ns, name), &v1.Lease{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Lease), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Leases that match those selectors.
    -func (c *FakeLeases) List(ctx context.Context, opts metav1.ListOptions) (result *v1.LeaseList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(leasesResource, leasesKind, c.ns, opts), &v1.LeaseList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.LeaseList{ListMeta: obj.(*v1.LeaseList).ListMeta}
    -	for _, item := range obj.(*v1.LeaseList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested leases.
    -func (c *FakeLeases) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(leasesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a lease and creates it.  Returns the server's representation of the lease, and an error, if there is any.
    -func (c *FakeLeases) Create(ctx context.Context, lease *v1.Lease, opts metav1.CreateOptions) (result *v1.Lease, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(leasesResource, c.ns, lease), &v1.Lease{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Lease), err
    -}
    -
    -// Update takes the representation of a lease and updates it. Returns the server's representation of the lease, and an error, if there is any.
    -func (c *FakeLeases) Update(ctx context.Context, lease *v1.Lease, opts metav1.UpdateOptions) (result *v1.Lease, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(leasesResource, c.ns, lease), &v1.Lease{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Lease), err
    -}
    -
    -// Delete takes name of the lease and deletes it. Returns an error if one occurs.
    -func (c *FakeLeases) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(leasesResource, c.ns, name, opts), &v1.Lease{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeLeases) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(leasesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.LeaseList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched lease.
    -func (c *FakeLeases) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Lease, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(leasesResource, c.ns, name, pt, data, subresources...), &v1.Lease{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Lease), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied lease.
    -func (c *FakeLeases) Apply(ctx context.Context, lease *coordinationv1.LeaseApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Lease, err error) {
    -	if lease == nil {
    -		return nil, fmt.Errorf("lease provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(lease)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := lease.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("lease.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(leasesResource, c.ns, *name, types.ApplyPatchType, data), &v1.Lease{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeLeases(fake *FakeCoordinationV1, namespace string) typedcoordinationv1.LeaseInterface {
    +	return &fakeLeases{
    +		gentype.NewFakeClientWithListAndApply[*v1.Lease, *v1.LeaseList, *coordinationv1.LeaseApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("leases"),
    +			v1.SchemeGroupVersion.WithKind("Lease"),
    +			func() *v1.Lease { return &v1.Lease{} },
    +			func() *v1.LeaseList { return &v1.LeaseList{} },
    +			func(dst, src *v1.LeaseList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.LeaseList) []*v1.Lease { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.LeaseList, items []*v1.Lease) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Lease), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/lease.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/lease.go
    index 9e6b169a8117..6e7784d6aef1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/lease.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/lease.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/coordination/v1"
    +	coordinationv1 "k8s.io/api/coordination/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	coordinationv1 "k8s.io/client-go/applyconfigurations/coordination/v1"
    +	applyconfigurationscoordinationv1 "k8s.io/client-go/applyconfigurations/coordination/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // LeasesGetter has a method to return a LeaseInterface.
    @@ -41,168 +38,34 @@ type LeasesGetter interface {
     
     // LeaseInterface has methods to work with Lease resources.
     type LeaseInterface interface {
    -	Create(ctx context.Context, lease *v1.Lease, opts metav1.CreateOptions) (*v1.Lease, error)
    -	Update(ctx context.Context, lease *v1.Lease, opts metav1.UpdateOptions) (*v1.Lease, error)
    +	Create(ctx context.Context, lease *coordinationv1.Lease, opts metav1.CreateOptions) (*coordinationv1.Lease, error)
    +	Update(ctx context.Context, lease *coordinationv1.Lease, opts metav1.UpdateOptions) (*coordinationv1.Lease, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Lease, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.LeaseList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*coordinationv1.Lease, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*coordinationv1.LeaseList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Lease, err error)
    -	Apply(ctx context.Context, lease *coordinationv1.LeaseApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Lease, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *coordinationv1.Lease, err error)
    +	Apply(ctx context.Context, lease *applyconfigurationscoordinationv1.LeaseApplyConfiguration, opts metav1.ApplyOptions) (result *coordinationv1.Lease, err error)
     	LeaseExpansion
     }
     
     // leases implements LeaseInterface
     type leases struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*coordinationv1.Lease, *coordinationv1.LeaseList, *applyconfigurationscoordinationv1.LeaseApplyConfiguration]
     }
     
     // newLeases returns a Leases
     func newLeases(c *CoordinationV1Client, namespace string) *leases {
     	return &leases{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*coordinationv1.Lease, *coordinationv1.LeaseList, *applyconfigurationscoordinationv1.LeaseApplyConfiguration](
    +			"leases",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *coordinationv1.Lease { return &coordinationv1.Lease{} },
    +			func() *coordinationv1.LeaseList { return &coordinationv1.LeaseList{} },
    +			gentype.PrefersProtobuf[*coordinationv1.Lease](),
    +		),
     	}
     }
    -
    -// Get takes name of the lease, and returns the corresponding lease object, and an error if there is any.
    -func (c *leases) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Lease, err error) {
    -	result = &v1.Lease{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Leases that match those selectors.
    -func (c *leases) List(ctx context.Context, opts metav1.ListOptions) (result *v1.LeaseList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.LeaseList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested leases.
    -func (c *leases) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a lease and creates it.  Returns the server's representation of the lease, and an error, if there is any.
    -func (c *leases) Create(ctx context.Context, lease *v1.Lease, opts metav1.CreateOptions) (result *v1.Lease, err error) {
    -	result = &v1.Lease{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(lease).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a lease and updates it. Returns the server's representation of the lease, and an error, if there is any.
    -func (c *leases) Update(ctx context.Context, lease *v1.Lease, opts metav1.UpdateOptions) (result *v1.Lease, err error) {
    -	result = &v1.Lease{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		Name(lease.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(lease).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the lease and deletes it. Returns an error if one occurs.
    -func (c *leases) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *leases) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched lease.
    -func (c *leases) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Lease, err error) {
    -	result = &v1.Lease{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("leases").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied lease.
    -func (c *leases) Apply(ctx context.Context, lease *coordinationv1.LeaseApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Lease, err error) {
    -	if lease == nil {
    -		return nil, fmt.Errorf("lease provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(lease)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := lease.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("lease.Name must be provided to Apply")
    -	}
    -	result = &v1.Lease{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("leases").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/coordination_client.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/coordination_client.go
    new file mode 100644
    index 000000000000..4c286d463206
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/coordination_client.go
    @@ -0,0 +1,107 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha2
    +
    +import (
    +	http "net/http"
    +
    +	coordinationv1alpha2 "k8s.io/api/coordination/v1alpha2"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +	rest "k8s.io/client-go/rest"
    +)
    +
    +type CoordinationV1alpha2Interface interface {
    +	RESTClient() rest.Interface
    +	LeaseCandidatesGetter
    +}
    +
    +// CoordinationV1alpha2Client is used to interact with features provided by the coordination.k8s.io group.
    +type CoordinationV1alpha2Client struct {
    +	restClient rest.Interface
    +}
    +
    +func (c *CoordinationV1alpha2Client) LeaseCandidates(namespace string) LeaseCandidateInterface {
    +	return newLeaseCandidates(c, namespace)
    +}
    +
    +// NewForConfig creates a new CoordinationV1alpha2Client for the given config.
    +// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
    +// where httpClient was generated with rest.HTTPClientFor(c).
    +func NewForConfig(c *rest.Config) (*CoordinationV1alpha2Client, error) {
    +	config := *c
    +	if err := setConfigDefaults(&config); err != nil {
    +		return nil, err
    +	}
    +	httpClient, err := rest.HTTPClientFor(&config)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return NewForConfigAndClient(&config, httpClient)
    +}
    +
    +// NewForConfigAndClient creates a new CoordinationV1alpha2Client for the given config and http client.
    +// Note the http client provided takes precedence over the configured transport values.
    +func NewForConfigAndClient(c *rest.Config, h *http.Client) (*CoordinationV1alpha2Client, error) {
    +	config := *c
    +	if err := setConfigDefaults(&config); err != nil {
    +		return nil, err
    +	}
    +	client, err := rest.RESTClientForConfigAndClient(&config, h)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return &CoordinationV1alpha2Client{client}, nil
    +}
    +
    +// NewForConfigOrDie creates a new CoordinationV1alpha2Client for the given config and
    +// panics if there is an error in the config.
    +func NewForConfigOrDie(c *rest.Config) *CoordinationV1alpha2Client {
    +	client, err := NewForConfig(c)
    +	if err != nil {
    +		panic(err)
    +	}
    +	return client
    +}
    +
    +// New creates a new CoordinationV1alpha2Client for the given RESTClient.
    +func New(c rest.Interface) *CoordinationV1alpha2Client {
    +	return &CoordinationV1alpha2Client{c}
    +}
    +
    +func setConfigDefaults(config *rest.Config) error {
    +	gv := coordinationv1alpha2.SchemeGroupVersion
    +	config.GroupVersion = &gv
    +	config.APIPath = "/apis"
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
    +
    +	if config.UserAgent == "" {
    +		config.UserAgent = rest.DefaultKubernetesUserAgent()
    +	}
    +
    +	return nil
    +}
    +
    +// RESTClient returns a RESTClient that is used to communicate
    +// with API server by this client implementation.
    +func (c *CoordinationV1alpha2Client) RESTClient() rest.Interface {
    +	if c == nil {
    +		return nil
    +	}
    +	return c.restClient
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/doc.go
    similarity index 100%
    rename from vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/doc.go
    rename to vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/doc.go
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/fake/doc.go
    similarity index 100%
    rename from vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/doc.go
    rename to vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/fake/doc.go
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/fake/fake_coordination_client.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/fake/fake_coordination_client.go
    new file mode 100644
    index 000000000000..6b73b6744665
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/fake/fake_coordination_client.go
    @@ -0,0 +1,40 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1alpha2 "k8s.io/client-go/kubernetes/typed/coordination/v1alpha2"
    +	rest "k8s.io/client-go/rest"
    +	testing "k8s.io/client-go/testing"
    +)
    +
    +type FakeCoordinationV1alpha2 struct {
    +	*testing.Fake
    +}
    +
    +func (c *FakeCoordinationV1alpha2) LeaseCandidates(namespace string) v1alpha2.LeaseCandidateInterface {
    +	return newFakeLeaseCandidates(c, namespace)
    +}
    +
    +// RESTClient returns a RESTClient that is used to communicate
    +// with API server by this client implementation.
    +func (c *FakeCoordinationV1alpha2) RESTClient() rest.Interface {
    +	var ret *rest.RESTClient
    +	return ret
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/fake/fake_leasecandidate.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/fake/fake_leasecandidate.go
    new file mode 100644
    index 000000000000..671a6df0c64a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/fake/fake_leasecandidate.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1alpha2 "k8s.io/api/coordination/v1alpha2"
    +	coordinationv1alpha2 "k8s.io/client-go/applyconfigurations/coordination/v1alpha2"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcoordinationv1alpha2 "k8s.io/client-go/kubernetes/typed/coordination/v1alpha2"
    +)
    +
    +// fakeLeaseCandidates implements LeaseCandidateInterface
    +type fakeLeaseCandidates struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha2.LeaseCandidate, *v1alpha2.LeaseCandidateList, *coordinationv1alpha2.LeaseCandidateApplyConfiguration]
    +	Fake *FakeCoordinationV1alpha2
    +}
    +
    +func newFakeLeaseCandidates(fake *FakeCoordinationV1alpha2, namespace string) typedcoordinationv1alpha2.LeaseCandidateInterface {
    +	return &fakeLeaseCandidates{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha2.LeaseCandidate, *v1alpha2.LeaseCandidateList, *coordinationv1alpha2.LeaseCandidateApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1alpha2.SchemeGroupVersion.WithResource("leasecandidates"),
    +			v1alpha2.SchemeGroupVersion.WithKind("LeaseCandidate"),
    +			func() *v1alpha2.LeaseCandidate { return &v1alpha2.LeaseCandidate{} },
    +			func() *v1alpha2.LeaseCandidateList { return &v1alpha2.LeaseCandidateList{} },
    +			func(dst, src *v1alpha2.LeaseCandidateList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha2.LeaseCandidateList) []*v1alpha2.LeaseCandidate {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha2.LeaseCandidateList, items []*v1alpha2.LeaseCandidate) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/generated_expansion.go
    similarity index 84%
    rename from vendor/k8s.io/gengo/examples/set-gen/sets/doc.go
    rename to vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/generated_expansion.go
    index b152a0bf00f2..52af4786c75b 100644
    --- a/vendor/k8s.io/gengo/examples/set-gen/sets/doc.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/generated_expansion.go
    @@ -14,7 +14,8 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -// Code generated by set-gen. DO NOT EDIT.
    +// Code generated by client-gen. DO NOT EDIT.
     
    -// Package sets has auto-generated set types.
    -package sets
    +package v1alpha2
    +
    +type LeaseCandidateExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/leasecandidate.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/leasecandidate.go
    new file mode 100644
    index 000000000000..c994a8893a6a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/leasecandidate.go
    @@ -0,0 +1,71 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha2
    +
    +import (
    +	context "context"
    +
    +	coordinationv1alpha2 "k8s.io/api/coordination/v1alpha2"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationscoordinationv1alpha2 "k8s.io/client-go/applyconfigurations/coordination/v1alpha2"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// LeaseCandidatesGetter has a method to return a LeaseCandidateInterface.
    +// A group's client should implement this interface.
    +type LeaseCandidatesGetter interface {
    +	LeaseCandidates(namespace string) LeaseCandidateInterface
    +}
    +
    +// LeaseCandidateInterface has methods to work with LeaseCandidate resources.
    +type LeaseCandidateInterface interface {
    +	Create(ctx context.Context, leaseCandidate *coordinationv1alpha2.LeaseCandidate, opts v1.CreateOptions) (*coordinationv1alpha2.LeaseCandidate, error)
    +	Update(ctx context.Context, leaseCandidate *coordinationv1alpha2.LeaseCandidate, opts v1.UpdateOptions) (*coordinationv1alpha2.LeaseCandidate, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*coordinationv1alpha2.LeaseCandidate, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*coordinationv1alpha2.LeaseCandidateList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *coordinationv1alpha2.LeaseCandidate, err error)
    +	Apply(ctx context.Context, leaseCandidate *applyconfigurationscoordinationv1alpha2.LeaseCandidateApplyConfiguration, opts v1.ApplyOptions) (result *coordinationv1alpha2.LeaseCandidate, err error)
    +	LeaseCandidateExpansion
    +}
    +
    +// leaseCandidates implements LeaseCandidateInterface
    +type leaseCandidates struct {
    +	*gentype.ClientWithListAndApply[*coordinationv1alpha2.LeaseCandidate, *coordinationv1alpha2.LeaseCandidateList, *applyconfigurationscoordinationv1alpha2.LeaseCandidateApplyConfiguration]
    +}
    +
    +// newLeaseCandidates returns a LeaseCandidates
    +func newLeaseCandidates(c *CoordinationV1alpha2Client, namespace string) *leaseCandidates {
    +	return &leaseCandidates{
    +		gentype.NewClientWithListAndApply[*coordinationv1alpha2.LeaseCandidate, *coordinationv1alpha2.LeaseCandidateList, *applyconfigurationscoordinationv1alpha2.LeaseCandidateApplyConfiguration](
    +			"leasecandidates",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *coordinationv1alpha2.LeaseCandidate { return &coordinationv1alpha2.LeaseCandidate{} },
    +			func() *coordinationv1alpha2.LeaseCandidateList { return &coordinationv1alpha2.LeaseCandidateList{} },
    +			gentype.PrefersProtobuf[*coordinationv1alpha2.LeaseCandidate](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.go
    index 27d674e239e5..1f1afba24065 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/coordination/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	coordinationv1beta1 "k8s.io/api/coordination/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *CoordinationV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := coordinationv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_coordination_client.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_coordination_client.go
    index f583b466e2fd..41b3ce06bfed 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_coordination_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_coordination_client.go
    @@ -29,7 +29,7 @@ type FakeCoordinationV1beta1 struct {
     }
     
     func (c *FakeCoordinationV1beta1) Leases(namespace string) v1beta1.LeaseInterface {
    -	return &FakeLeases{c, namespace}
    +	return newFakeLeases(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go
    index 9a4a0d7eb93d..bb4b8e04f80b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/coordination/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	coordinationv1beta1 "k8s.io/client-go/applyconfigurations/coordination/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcoordinationv1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1"
     )
     
    -// FakeLeases implements LeaseInterface
    -type FakeLeases struct {
    +// fakeLeases implements LeaseInterface
    +type fakeLeases struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.Lease, *v1beta1.LeaseList, *coordinationv1beta1.LeaseApplyConfiguration]
     	Fake *FakeCoordinationV1beta1
    -	ns   string
    -}
    -
    -var leasesResource = v1beta1.SchemeGroupVersion.WithResource("leases")
    -
    -var leasesKind = v1beta1.SchemeGroupVersion.WithKind("Lease")
    -
    -// Get takes name of the lease, and returns the corresponding lease object, and an error if there is any.
    -func (c *FakeLeases) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Lease, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(leasesResource, c.ns, name), &v1beta1.Lease{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Lease), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Leases that match those selectors.
    -func (c *FakeLeases) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.LeaseList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(leasesResource, leasesKind, c.ns, opts), &v1beta1.LeaseList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.LeaseList{ListMeta: obj.(*v1beta1.LeaseList).ListMeta}
    -	for _, item := range obj.(*v1beta1.LeaseList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested leases.
    -func (c *FakeLeases) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(leasesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a lease and creates it.  Returns the server's representation of the lease, and an error, if there is any.
    -func (c *FakeLeases) Create(ctx context.Context, lease *v1beta1.Lease, opts v1.CreateOptions) (result *v1beta1.Lease, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(leasesResource, c.ns, lease), &v1beta1.Lease{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Lease), err
    -}
    -
    -// Update takes the representation of a lease and updates it. Returns the server's representation of the lease, and an error, if there is any.
    -func (c *FakeLeases) Update(ctx context.Context, lease *v1beta1.Lease, opts v1.UpdateOptions) (result *v1beta1.Lease, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(leasesResource, c.ns, lease), &v1beta1.Lease{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Lease), err
    -}
    -
    -// Delete takes name of the lease and deletes it. Returns an error if one occurs.
    -func (c *FakeLeases) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(leasesResource, c.ns, name, opts), &v1beta1.Lease{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeLeases) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(leasesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.LeaseList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched lease.
    -func (c *FakeLeases) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Lease, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(leasesResource, c.ns, name, pt, data, subresources...), &v1beta1.Lease{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Lease), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied lease.
    -func (c *FakeLeases) Apply(ctx context.Context, lease *coordinationv1beta1.LeaseApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Lease, err error) {
    -	if lease == nil {
    -		return nil, fmt.Errorf("lease provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(lease)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := lease.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("lease.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(leasesResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.Lease{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeLeases(fake *FakeCoordinationV1beta1, namespace string) typedcoordinationv1beta1.LeaseInterface {
    +	return &fakeLeases{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.Lease, *v1beta1.LeaseList, *coordinationv1beta1.LeaseApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("leases"),
    +			v1beta1.SchemeGroupVersion.WithKind("Lease"),
    +			func() *v1beta1.Lease { return &v1beta1.Lease{} },
    +			func() *v1beta1.LeaseList { return &v1beta1.LeaseList{} },
    +			func(dst, src *v1beta1.LeaseList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.LeaseList) []*v1beta1.Lease { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.LeaseList, items []*v1beta1.Lease) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.Lease), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go
    index 1bbd57bdd1f9..18ca9823c052 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/coordination/v1beta1"
    +	coordinationv1beta1 "k8s.io/api/coordination/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	coordinationv1beta1 "k8s.io/client-go/applyconfigurations/coordination/v1beta1"
    +	applyconfigurationscoordinationv1beta1 "k8s.io/client-go/applyconfigurations/coordination/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // LeasesGetter has a method to return a LeaseInterface.
    @@ -41,168 +38,34 @@ type LeasesGetter interface {
     
     // LeaseInterface has methods to work with Lease resources.
     type LeaseInterface interface {
    -	Create(ctx context.Context, lease *v1beta1.Lease, opts v1.CreateOptions) (*v1beta1.Lease, error)
    -	Update(ctx context.Context, lease *v1beta1.Lease, opts v1.UpdateOptions) (*v1beta1.Lease, error)
    +	Create(ctx context.Context, lease *coordinationv1beta1.Lease, opts v1.CreateOptions) (*coordinationv1beta1.Lease, error)
    +	Update(ctx context.Context, lease *coordinationv1beta1.Lease, opts v1.UpdateOptions) (*coordinationv1beta1.Lease, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.Lease, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.LeaseList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*coordinationv1beta1.Lease, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*coordinationv1beta1.LeaseList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Lease, err error)
    -	Apply(ctx context.Context, lease *coordinationv1beta1.LeaseApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Lease, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *coordinationv1beta1.Lease, err error)
    +	Apply(ctx context.Context, lease *applyconfigurationscoordinationv1beta1.LeaseApplyConfiguration, opts v1.ApplyOptions) (result *coordinationv1beta1.Lease, err error)
     	LeaseExpansion
     }
     
     // leases implements LeaseInterface
     type leases struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*coordinationv1beta1.Lease, *coordinationv1beta1.LeaseList, *applyconfigurationscoordinationv1beta1.LeaseApplyConfiguration]
     }
     
     // newLeases returns a Leases
     func newLeases(c *CoordinationV1beta1Client, namespace string) *leases {
     	return &leases{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*coordinationv1beta1.Lease, *coordinationv1beta1.LeaseList, *applyconfigurationscoordinationv1beta1.LeaseApplyConfiguration](
    +			"leases",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *coordinationv1beta1.Lease { return &coordinationv1beta1.Lease{} },
    +			func() *coordinationv1beta1.LeaseList { return &coordinationv1beta1.LeaseList{} },
    +			gentype.PrefersProtobuf[*coordinationv1beta1.Lease](),
    +		),
     	}
     }
    -
    -// Get takes name of the lease, and returns the corresponding lease object, and an error if there is any.
    -func (c *leases) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Lease, err error) {
    -	result = &v1beta1.Lease{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Leases that match those selectors.
    -func (c *leases) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.LeaseList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.LeaseList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested leases.
    -func (c *leases) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a lease and creates it.  Returns the server's representation of the lease, and an error, if there is any.
    -func (c *leases) Create(ctx context.Context, lease *v1beta1.Lease, opts v1.CreateOptions) (result *v1beta1.Lease, err error) {
    -	result = &v1beta1.Lease{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(lease).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a lease and updates it. Returns the server's representation of the lease, and an error, if there is any.
    -func (c *leases) Update(ctx context.Context, lease *v1beta1.Lease, opts v1.UpdateOptions) (result *v1beta1.Lease, err error) {
    -	result = &v1beta1.Lease{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		Name(lease.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(lease).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the lease and deletes it. Returns an error if one occurs.
    -func (c *leases) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *leases) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("leases").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched lease.
    -func (c *leases) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Lease, err error) {
    -	result = &v1beta1.Lease{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("leases").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied lease.
    -func (c *leases) Apply(ctx context.Context, lease *coordinationv1beta1.LeaseApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Lease, err error) {
    -	if lease == nil {
    -		return nil, fmt.Errorf("lease provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(lease)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := lease.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("lease.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.Lease{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("leases").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go
    index 0fef56429d3f..b8e58cd155d2 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ComponentStatusesGetter has a method to return a ComponentStatusInterface.
    @@ -41,157 +38,34 @@ type ComponentStatusesGetter interface {
     
     // ComponentStatusInterface has methods to work with ComponentStatus resources.
     type ComponentStatusInterface interface {
    -	Create(ctx context.Context, componentStatus *v1.ComponentStatus, opts metav1.CreateOptions) (*v1.ComponentStatus, error)
    -	Update(ctx context.Context, componentStatus *v1.ComponentStatus, opts metav1.UpdateOptions) (*v1.ComponentStatus, error)
    +	Create(ctx context.Context, componentStatus *corev1.ComponentStatus, opts metav1.CreateOptions) (*corev1.ComponentStatus, error)
    +	Update(ctx context.Context, componentStatus *corev1.ComponentStatus, opts metav1.UpdateOptions) (*corev1.ComponentStatus, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ComponentStatus, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ComponentStatusList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.ComponentStatus, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.ComponentStatusList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ComponentStatus, err error)
    -	Apply(ctx context.Context, componentStatus *corev1.ComponentStatusApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ComponentStatus, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.ComponentStatus, err error)
    +	Apply(ctx context.Context, componentStatus *applyconfigurationscorev1.ComponentStatusApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.ComponentStatus, err error)
     	ComponentStatusExpansion
     }
     
     // componentStatuses implements ComponentStatusInterface
     type componentStatuses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*corev1.ComponentStatus, *corev1.ComponentStatusList, *applyconfigurationscorev1.ComponentStatusApplyConfiguration]
     }
     
     // newComponentStatuses returns a ComponentStatuses
     func newComponentStatuses(c *CoreV1Client) *componentStatuses {
     	return &componentStatuses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*corev1.ComponentStatus, *corev1.ComponentStatusList, *applyconfigurationscorev1.ComponentStatusApplyConfiguration](
    +			"componentstatuses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *corev1.ComponentStatus { return &corev1.ComponentStatus{} },
    +			func() *corev1.ComponentStatusList { return &corev1.ComponentStatusList{} },
    +			gentype.PrefersProtobuf[*corev1.ComponentStatus](),
    +		),
     	}
     }
    -
    -// Get takes name of the componentStatus, and returns the corresponding componentStatus object, and an error if there is any.
    -func (c *componentStatuses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ComponentStatus, err error) {
    -	result = &v1.ComponentStatus{}
    -	err = c.client.Get().
    -		Resource("componentstatuses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ComponentStatuses that match those selectors.
    -func (c *componentStatuses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ComponentStatusList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ComponentStatusList{}
    -	err = c.client.Get().
    -		Resource("componentstatuses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested componentStatuses.
    -func (c *componentStatuses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("componentstatuses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a componentStatus and creates it.  Returns the server's representation of the componentStatus, and an error, if there is any.
    -func (c *componentStatuses) Create(ctx context.Context, componentStatus *v1.ComponentStatus, opts metav1.CreateOptions) (result *v1.ComponentStatus, err error) {
    -	result = &v1.ComponentStatus{}
    -	err = c.client.Post().
    -		Resource("componentstatuses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(componentStatus).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a componentStatus and updates it. Returns the server's representation of the componentStatus, and an error, if there is any.
    -func (c *componentStatuses) Update(ctx context.Context, componentStatus *v1.ComponentStatus, opts metav1.UpdateOptions) (result *v1.ComponentStatus, err error) {
    -	result = &v1.ComponentStatus{}
    -	err = c.client.Put().
    -		Resource("componentstatuses").
    -		Name(componentStatus.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(componentStatus).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the componentStatus and deletes it. Returns an error if one occurs.
    -func (c *componentStatuses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("componentstatuses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *componentStatuses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("componentstatuses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched componentStatus.
    -func (c *componentStatuses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ComponentStatus, err error) {
    -	result = &v1.ComponentStatus{}
    -	err = c.client.Patch(pt).
    -		Resource("componentstatuses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied componentStatus.
    -func (c *componentStatuses) Apply(ctx context.Context, componentStatus *corev1.ComponentStatusApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ComponentStatus, err error) {
    -	if componentStatus == nil {
    -		return nil, fmt.Errorf("componentStatus provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(componentStatus)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := componentStatus.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("componentStatus.Name must be provided to Apply")
    -	}
    -	result = &v1.ComponentStatus{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("componentstatuses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go
    index b68177720bff..74d321193fde 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ConfigMapsGetter has a method to return a ConfigMapInterface.
    @@ -41,168 +38,34 @@ type ConfigMapsGetter interface {
     
     // ConfigMapInterface has methods to work with ConfigMap resources.
     type ConfigMapInterface interface {
    -	Create(ctx context.Context, configMap *v1.ConfigMap, opts metav1.CreateOptions) (*v1.ConfigMap, error)
    -	Update(ctx context.Context, configMap *v1.ConfigMap, opts metav1.UpdateOptions) (*v1.ConfigMap, error)
    +	Create(ctx context.Context, configMap *corev1.ConfigMap, opts metav1.CreateOptions) (*corev1.ConfigMap, error)
    +	Update(ctx context.Context, configMap *corev1.ConfigMap, opts metav1.UpdateOptions) (*corev1.ConfigMap, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ConfigMap, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ConfigMapList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.ConfigMap, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.ConfigMapList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ConfigMap, err error)
    -	Apply(ctx context.Context, configMap *corev1.ConfigMapApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ConfigMap, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.ConfigMap, err error)
    +	Apply(ctx context.Context, configMap *applyconfigurationscorev1.ConfigMapApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.ConfigMap, err error)
     	ConfigMapExpansion
     }
     
     // configMaps implements ConfigMapInterface
     type configMaps struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.ConfigMap, *corev1.ConfigMapList, *applyconfigurationscorev1.ConfigMapApplyConfiguration]
     }
     
     // newConfigMaps returns a ConfigMaps
     func newConfigMaps(c *CoreV1Client, namespace string) *configMaps {
     	return &configMaps{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.ConfigMap, *corev1.ConfigMapList, *applyconfigurationscorev1.ConfigMapApplyConfiguration](
    +			"configmaps",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.ConfigMap { return &corev1.ConfigMap{} },
    +			func() *corev1.ConfigMapList { return &corev1.ConfigMapList{} },
    +			gentype.PrefersProtobuf[*corev1.ConfigMap](),
    +		),
     	}
     }
    -
    -// Get takes name of the configMap, and returns the corresponding configMap object, and an error if there is any.
    -func (c *configMaps) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ConfigMap, err error) {
    -	result = &v1.ConfigMap{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("configmaps").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ConfigMaps that match those selectors.
    -func (c *configMaps) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ConfigMapList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ConfigMapList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("configmaps").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested configMaps.
    -func (c *configMaps) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("configmaps").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a configMap and creates it.  Returns the server's representation of the configMap, and an error, if there is any.
    -func (c *configMaps) Create(ctx context.Context, configMap *v1.ConfigMap, opts metav1.CreateOptions) (result *v1.ConfigMap, err error) {
    -	result = &v1.ConfigMap{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("configmaps").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(configMap).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a configMap and updates it. Returns the server's representation of the configMap, and an error, if there is any.
    -func (c *configMaps) Update(ctx context.Context, configMap *v1.ConfigMap, opts metav1.UpdateOptions) (result *v1.ConfigMap, err error) {
    -	result = &v1.ConfigMap{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("configmaps").
    -		Name(configMap.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(configMap).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the configMap and deletes it. Returns an error if one occurs.
    -func (c *configMaps) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("configmaps").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *configMaps) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("configmaps").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched configMap.
    -func (c *configMaps) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ConfigMap, err error) {
    -	result = &v1.ConfigMap{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("configmaps").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied configMap.
    -func (c *configMaps) Apply(ctx context.Context, configMap *corev1.ConfigMapApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ConfigMap, err error) {
    -	if configMap == nil {
    -		return nil, fmt.Errorf("configMap provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(configMap)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := configMap.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("configMap.Name must be provided to Apply")
    -	}
    -	result = &v1.ConfigMap{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("configmaps").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go
    index 6e59e4cc6b41..abf85cba6416 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	corev1 "k8s.io/api/core/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -160,10 +160,10 @@ func New(c rest.Interface) *CoreV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := corev1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/api"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go
    index cdf464b0695d..b96a8b3854d0 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // EndpointsGetter has a method to return a EndpointsInterface.
    @@ -41,168 +38,34 @@ type EndpointsGetter interface {
     
     // EndpointsInterface has methods to work with Endpoints resources.
     type EndpointsInterface interface {
    -	Create(ctx context.Context, endpoints *v1.Endpoints, opts metav1.CreateOptions) (*v1.Endpoints, error)
    -	Update(ctx context.Context, endpoints *v1.Endpoints, opts metav1.UpdateOptions) (*v1.Endpoints, error)
    +	Create(ctx context.Context, endpoints *corev1.Endpoints, opts metav1.CreateOptions) (*corev1.Endpoints, error)
    +	Update(ctx context.Context, endpoints *corev1.Endpoints, opts metav1.UpdateOptions) (*corev1.Endpoints, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Endpoints, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.EndpointsList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.Endpoints, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.EndpointsList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Endpoints, err error)
    -	Apply(ctx context.Context, endpoints *corev1.EndpointsApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Endpoints, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.Endpoints, err error)
    +	Apply(ctx context.Context, endpoints *applyconfigurationscorev1.EndpointsApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Endpoints, err error)
     	EndpointsExpansion
     }
     
     // endpoints implements EndpointsInterface
     type endpoints struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.Endpoints, *corev1.EndpointsList, *applyconfigurationscorev1.EndpointsApplyConfiguration]
     }
     
     // newEndpoints returns a Endpoints
     func newEndpoints(c *CoreV1Client, namespace string) *endpoints {
     	return &endpoints{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.Endpoints, *corev1.EndpointsList, *applyconfigurationscorev1.EndpointsApplyConfiguration](
    +			"endpoints",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.Endpoints { return &corev1.Endpoints{} },
    +			func() *corev1.EndpointsList { return &corev1.EndpointsList{} },
    +			gentype.PrefersProtobuf[*corev1.Endpoints](),
    +		),
     	}
     }
    -
    -// Get takes name of the endpoints, and returns the corresponding endpoints object, and an error if there is any.
    -func (c *endpoints) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Endpoints, err error) {
    -	result = &v1.Endpoints{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("endpoints").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Endpoints that match those selectors.
    -func (c *endpoints) List(ctx context.Context, opts metav1.ListOptions) (result *v1.EndpointsList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.EndpointsList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("endpoints").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested endpoints.
    -func (c *endpoints) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("endpoints").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a endpoints and creates it.  Returns the server's representation of the endpoints, and an error, if there is any.
    -func (c *endpoints) Create(ctx context.Context, endpoints *v1.Endpoints, opts metav1.CreateOptions) (result *v1.Endpoints, err error) {
    -	result = &v1.Endpoints{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("endpoints").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(endpoints).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a endpoints and updates it. Returns the server's representation of the endpoints, and an error, if there is any.
    -func (c *endpoints) Update(ctx context.Context, endpoints *v1.Endpoints, opts metav1.UpdateOptions) (result *v1.Endpoints, err error) {
    -	result = &v1.Endpoints{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("endpoints").
    -		Name(endpoints.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(endpoints).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the endpoints and deletes it. Returns an error if one occurs.
    -func (c *endpoints) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("endpoints").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *endpoints) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("endpoints").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched endpoints.
    -func (c *endpoints) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Endpoints, err error) {
    -	result = &v1.Endpoints{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("endpoints").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied endpoints.
    -func (c *endpoints) Apply(ctx context.Context, endpoints *corev1.EndpointsApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Endpoints, err error) {
    -	if endpoints == nil {
    -		return nil, fmt.Errorf("endpoints provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(endpoints)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := endpoints.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("endpoints.Name must be provided to Apply")
    -	}
    -	result = &v1.Endpoints{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("endpoints").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go
    index 8274d85ffe25..dd0cc80b8023 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // EventsGetter has a method to return a EventInterface.
    @@ -41,168 +38,34 @@ type EventsGetter interface {
     
     // EventInterface has methods to work with Event resources.
     type EventInterface interface {
    -	Create(ctx context.Context, event *v1.Event, opts metav1.CreateOptions) (*v1.Event, error)
    -	Update(ctx context.Context, event *v1.Event, opts metav1.UpdateOptions) (*v1.Event, error)
    +	Create(ctx context.Context, event *corev1.Event, opts metav1.CreateOptions) (*corev1.Event, error)
    +	Update(ctx context.Context, event *corev1.Event, opts metav1.UpdateOptions) (*corev1.Event, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Event, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.EventList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.Event, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.EventList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Event, err error)
    -	Apply(ctx context.Context, event *corev1.EventApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Event, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.Event, err error)
    +	Apply(ctx context.Context, event *applyconfigurationscorev1.EventApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Event, err error)
     	EventExpansion
     }
     
     // events implements EventInterface
     type events struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.Event, *corev1.EventList, *applyconfigurationscorev1.EventApplyConfiguration]
     }
     
     // newEvents returns a Events
     func newEvents(c *CoreV1Client, namespace string) *events {
     	return &events{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.Event, *corev1.EventList, *applyconfigurationscorev1.EventApplyConfiguration](
    +			"events",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.Event { return &corev1.Event{} },
    +			func() *corev1.EventList { return &corev1.EventList{} },
    +			gentype.PrefersProtobuf[*corev1.Event](),
    +		),
     	}
     }
    -
    -// Get takes name of the event, and returns the corresponding event object, and an error if there is any.
    -func (c *events) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Event, err error) {
    -	result = &v1.Event{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Events that match those selectors.
    -func (c *events) List(ctx context.Context, opts metav1.ListOptions) (result *v1.EventList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.EventList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested events.
    -func (c *events) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a event and creates it.  Returns the server's representation of the event, and an error, if there is any.
    -func (c *events) Create(ctx context.Context, event *v1.Event, opts metav1.CreateOptions) (result *v1.Event, err error) {
    -	result = &v1.Event{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(event).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any.
    -func (c *events) Update(ctx context.Context, event *v1.Event, opts metav1.UpdateOptions) (result *v1.Event, err error) {
    -	result = &v1.Event{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(event.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(event).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the event and deletes it. Returns an error if one occurs.
    -func (c *events) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *events) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched event.
    -func (c *events) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Event, err error) {
    -	result = &v1.Event{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied event.
    -func (c *events) Apply(ctx context.Context, event *corev1.EventApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Event, err error) {
    -	if event == nil {
    -		return nil, fmt.Errorf("event provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(event)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := event.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("event.Name must be provided to Apply")
    -	}
    -	result = &v1.Event{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go
    index a3fdf57a9879..424357232864 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go
    @@ -48,11 +48,11 @@ type EventExpansion interface {
     // event; it must either match this event client's namespace, or this event
     // client must have been created with the "" namespace.
     func (e *events) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) {
    -	if e.ns != "" && event.Namespace != e.ns {
    -		return nil, fmt.Errorf("can't create an event with namespace '%v' in namespace '%v'", event.Namespace, e.ns)
    +	if e.GetNamespace() != "" && event.Namespace != e.GetNamespace() {
    +		return nil, fmt.Errorf("can't create an event with namespace '%v' in namespace '%v'", event.Namespace, e.GetNamespace())
     	}
     	result := &v1.Event{}
    -	err := e.client.Post().
    +	err := e.GetClient().Post().
     		NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0).
     		Resource("events").
     		Body(event).
    @@ -67,11 +67,11 @@ func (e *events) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) {
     // created with the "" namespace. Update also requires the ResourceVersion to be set in the event
     // object.
     func (e *events) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) {
    -	if e.ns != "" && event.Namespace != e.ns {
    -		return nil, fmt.Errorf("can't update an event with namespace '%v' in namespace '%v'", event.Namespace, e.ns)
    +	if e.GetNamespace() != "" && event.Namespace != e.GetNamespace() {
    +		return nil, fmt.Errorf("can't update an event with namespace '%v' in namespace '%v'", event.Namespace, e.GetNamespace())
     	}
     	result := &v1.Event{}
    -	err := e.client.Put().
    +	err := e.GetClient().Put().
     		NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0).
     		Resource("events").
     		Name(event.Name).
    @@ -87,11 +87,11 @@ func (e *events) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) {
     // match this event client's namespace, or this event client must have been
     // created with the "" namespace.
     func (e *events) PatchWithEventNamespace(incompleteEvent *v1.Event, data []byte) (*v1.Event, error) {
    -	if e.ns != "" && incompleteEvent.Namespace != e.ns {
    -		return nil, fmt.Errorf("can't patch an event with namespace '%v' in namespace '%v'", incompleteEvent.Namespace, e.ns)
    +	if e.GetNamespace() != "" && incompleteEvent.Namespace != e.GetNamespace() {
    +		return nil, fmt.Errorf("can't patch an event with namespace '%v' in namespace '%v'", incompleteEvent.Namespace, e.GetNamespace())
     	}
     	result := &v1.Event{}
    -	err := e.client.Patch(types.StrategicMergePatchType).
    +	err := e.GetClient().Patch(types.StrategicMergePatchType).
     		NamespaceIfScoped(incompleteEvent.Namespace, len(incompleteEvent.Namespace) > 0).
     		Resource("events").
     		Name(incompleteEvent.Name).
    @@ -109,8 +109,8 @@ func (e *events) Search(scheme *runtime.Scheme, objOrRef runtime.Object) (*v1.Ev
     	if err != nil {
     		return nil, err
     	}
    -	if len(e.ns) > 0 && ref.Namespace != e.ns {
    -		return nil, fmt.Errorf("won't be able to find any events of namespace '%v' in namespace '%v'", ref.Namespace, e.ns)
    +	if len(e.GetNamespace()) > 0 && ref.Namespace != e.GetNamespace() {
    +		return nil, fmt.Errorf("won't be able to find any events of namespace '%v' in namespace '%v'", ref.Namespace, e.GetNamespace())
     	}
     	stringRefKind := string(ref.Kind)
     	var refKind *string
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go
    index 39d4c3282e33..550277ed4a2e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go
    @@ -19,127 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakeComponentStatuses implements ComponentStatusInterface
    -type FakeComponentStatuses struct {
    +// fakeComponentStatuses implements ComponentStatusInterface
    +type fakeComponentStatuses struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ComponentStatus, *v1.ComponentStatusList, *corev1.ComponentStatusApplyConfiguration]
     	Fake *FakeCoreV1
     }
     
    -var componentstatusesResource = v1.SchemeGroupVersion.WithResource("componentstatuses")
    -
    -var componentstatusesKind = v1.SchemeGroupVersion.WithKind("ComponentStatus")
    -
    -// Get takes name of the componentStatus, and returns the corresponding componentStatus object, and an error if there is any.
    -func (c *FakeComponentStatuses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ComponentStatus, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(componentstatusesResource, name), &v1.ComponentStatus{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ComponentStatus), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ComponentStatuses that match those selectors.
    -func (c *FakeComponentStatuses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ComponentStatusList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(componentstatusesResource, componentstatusesKind, opts), &v1.ComponentStatusList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ComponentStatusList{ListMeta: obj.(*v1.ComponentStatusList).ListMeta}
    -	for _, item := range obj.(*v1.ComponentStatusList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested componentStatuses.
    -func (c *FakeComponentStatuses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(componentstatusesResource, opts))
    -}
    -
    -// Create takes the representation of a componentStatus and creates it.  Returns the server's representation of the componentStatus, and an error, if there is any.
    -func (c *FakeComponentStatuses) Create(ctx context.Context, componentStatus *v1.ComponentStatus, opts metav1.CreateOptions) (result *v1.ComponentStatus, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(componentstatusesResource, componentStatus), &v1.ComponentStatus{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ComponentStatus), err
    -}
    -
    -// Update takes the representation of a componentStatus and updates it. Returns the server's representation of the componentStatus, and an error, if there is any.
    -func (c *FakeComponentStatuses) Update(ctx context.Context, componentStatus *v1.ComponentStatus, opts metav1.UpdateOptions) (result *v1.ComponentStatus, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(componentstatusesResource, componentStatus), &v1.ComponentStatus{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ComponentStatus), err
    -}
    -
    -// Delete takes name of the componentStatus and deletes it. Returns an error if one occurs.
    -func (c *FakeComponentStatuses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(componentstatusesResource, name, opts), &v1.ComponentStatus{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeComponentStatuses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(componentstatusesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.ComponentStatusList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched componentStatus.
    -func (c *FakeComponentStatuses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ComponentStatus, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(componentstatusesResource, name, pt, data, subresources...), &v1.ComponentStatus{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ComponentStatus), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied componentStatus.
    -func (c *FakeComponentStatuses) Apply(ctx context.Context, componentStatus *corev1.ComponentStatusApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ComponentStatus, err error) {
    -	if componentStatus == nil {
    -		return nil, fmt.Errorf("componentStatus provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(componentStatus)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := componentStatus.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("componentStatus.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(componentstatusesResource, *name, types.ApplyPatchType, data), &v1.ComponentStatus{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeComponentStatuses(fake *FakeCoreV1) typedcorev1.ComponentStatusInterface {
    +	return &fakeComponentStatuses{
    +		gentype.NewFakeClientWithListAndApply[*v1.ComponentStatus, *v1.ComponentStatusList, *corev1.ComponentStatusApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("componentstatuses"),
    +			v1.SchemeGroupVersion.WithKind("ComponentStatus"),
    +			func() *v1.ComponentStatus { return &v1.ComponentStatus{} },
    +			func() *v1.ComponentStatusList { return &v1.ComponentStatusList{} },
    +			func(dst, src *v1.ComponentStatusList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ComponentStatusList) []*v1.ComponentStatus { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.ComponentStatusList, items []*v1.ComponentStatus) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.ComponentStatus), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go
    index 6e8a38bd8fd3..1fd5bf40ca2e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakeConfigMaps implements ConfigMapInterface
    -type FakeConfigMaps struct {
    +// fakeConfigMaps implements ConfigMapInterface
    +type fakeConfigMaps struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ConfigMap, *v1.ConfigMapList, *corev1.ConfigMapApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
    -}
    -
    -var configmapsResource = v1.SchemeGroupVersion.WithResource("configmaps")
    -
    -var configmapsKind = v1.SchemeGroupVersion.WithKind("ConfigMap")
    -
    -// Get takes name of the configMap, and returns the corresponding configMap object, and an error if there is any.
    -func (c *FakeConfigMaps) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ConfigMap, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(configmapsResource, c.ns, name), &v1.ConfigMap{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ConfigMap), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ConfigMaps that match those selectors.
    -func (c *FakeConfigMaps) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ConfigMapList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(configmapsResource, configmapsKind, c.ns, opts), &v1.ConfigMapList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ConfigMapList{ListMeta: obj.(*v1.ConfigMapList).ListMeta}
    -	for _, item := range obj.(*v1.ConfigMapList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested configMaps.
    -func (c *FakeConfigMaps) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(configmapsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a configMap and creates it.  Returns the server's representation of the configMap, and an error, if there is any.
    -func (c *FakeConfigMaps) Create(ctx context.Context, configMap *v1.ConfigMap, opts metav1.CreateOptions) (result *v1.ConfigMap, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(configmapsResource, c.ns, configMap), &v1.ConfigMap{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ConfigMap), err
    -}
    -
    -// Update takes the representation of a configMap and updates it. Returns the server's representation of the configMap, and an error, if there is any.
    -func (c *FakeConfigMaps) Update(ctx context.Context, configMap *v1.ConfigMap, opts metav1.UpdateOptions) (result *v1.ConfigMap, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(configmapsResource, c.ns, configMap), &v1.ConfigMap{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ConfigMap), err
    -}
    -
    -// Delete takes name of the configMap and deletes it. Returns an error if one occurs.
    -func (c *FakeConfigMaps) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(configmapsResource, c.ns, name, opts), &v1.ConfigMap{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeConfigMaps) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(configmapsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.ConfigMapList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched configMap.
    -func (c *FakeConfigMaps) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ConfigMap, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(configmapsResource, c.ns, name, pt, data, subresources...), &v1.ConfigMap{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ConfigMap), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied configMap.
    -func (c *FakeConfigMaps) Apply(ctx context.Context, configMap *corev1.ConfigMapApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ConfigMap, err error) {
    -	if configMap == nil {
    -		return nil, fmt.Errorf("configMap provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(configMap)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := configMap.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("configMap.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(configmapsResource, c.ns, *name, types.ApplyPatchType, data), &v1.ConfigMap{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeConfigMaps(fake *FakeCoreV1, namespace string) typedcorev1.ConfigMapInterface {
    +	return &fakeConfigMaps{
    +		gentype.NewFakeClientWithListAndApply[*v1.ConfigMap, *v1.ConfigMapList, *corev1.ConfigMapApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("configmaps"),
    +			v1.SchemeGroupVersion.WithKind("ConfigMap"),
    +			func() *v1.ConfigMap { return &v1.ConfigMap{} },
    +			func() *v1.ConfigMapList { return &v1.ConfigMapList{} },
    +			func(dst, src *v1.ConfigMapList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ConfigMapList) []*v1.ConfigMap { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.ConfigMapList, items []*v1.ConfigMap) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.ConfigMap), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go
    index 5ad90943c945..e7f7412d04c1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go
    @@ -29,67 +29,67 @@ type FakeCoreV1 struct {
     }
     
     func (c *FakeCoreV1) ComponentStatuses() v1.ComponentStatusInterface {
    -	return &FakeComponentStatuses{c}
    +	return newFakeComponentStatuses(c)
     }
     
     func (c *FakeCoreV1) ConfigMaps(namespace string) v1.ConfigMapInterface {
    -	return &FakeConfigMaps{c, namespace}
    +	return newFakeConfigMaps(c, namespace)
     }
     
     func (c *FakeCoreV1) Endpoints(namespace string) v1.EndpointsInterface {
    -	return &FakeEndpoints{c, namespace}
    +	return newFakeEndpoints(c, namespace)
     }
     
     func (c *FakeCoreV1) Events(namespace string) v1.EventInterface {
    -	return &FakeEvents{c, namespace}
    +	return newFakeEvents(c, namespace)
     }
     
     func (c *FakeCoreV1) LimitRanges(namespace string) v1.LimitRangeInterface {
    -	return &FakeLimitRanges{c, namespace}
    +	return newFakeLimitRanges(c, namespace)
     }
     
     func (c *FakeCoreV1) Namespaces() v1.NamespaceInterface {
    -	return &FakeNamespaces{c}
    +	return newFakeNamespaces(c)
     }
     
     func (c *FakeCoreV1) Nodes() v1.NodeInterface {
    -	return &FakeNodes{c}
    +	return newFakeNodes(c)
     }
     
     func (c *FakeCoreV1) PersistentVolumes() v1.PersistentVolumeInterface {
    -	return &FakePersistentVolumes{c}
    +	return newFakePersistentVolumes(c)
     }
     
     func (c *FakeCoreV1) PersistentVolumeClaims(namespace string) v1.PersistentVolumeClaimInterface {
    -	return &FakePersistentVolumeClaims{c, namespace}
    +	return newFakePersistentVolumeClaims(c, namespace)
     }
     
     func (c *FakeCoreV1) Pods(namespace string) v1.PodInterface {
    -	return &FakePods{c, namespace}
    +	return newFakePods(c, namespace)
     }
     
     func (c *FakeCoreV1) PodTemplates(namespace string) v1.PodTemplateInterface {
    -	return &FakePodTemplates{c, namespace}
    +	return newFakePodTemplates(c, namespace)
     }
     
     func (c *FakeCoreV1) ReplicationControllers(namespace string) v1.ReplicationControllerInterface {
    -	return &FakeReplicationControllers{c, namespace}
    +	return newFakeReplicationControllers(c, namespace)
     }
     
     func (c *FakeCoreV1) ResourceQuotas(namespace string) v1.ResourceQuotaInterface {
    -	return &FakeResourceQuotas{c, namespace}
    +	return newFakeResourceQuotas(c, namespace)
     }
     
     func (c *FakeCoreV1) Secrets(namespace string) v1.SecretInterface {
    -	return &FakeSecrets{c, namespace}
    +	return newFakeSecrets(c, namespace)
     }
     
     func (c *FakeCoreV1) Services(namespace string) v1.ServiceInterface {
    -	return &FakeServices{c, namespace}
    +	return newFakeServices(c, namespace)
     }
     
     func (c *FakeCoreV1) ServiceAccounts(namespace string) v1.ServiceAccountInterface {
    -	return &FakeServiceAccounts{c, namespace}
    +	return newFakeServiceAccounts(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go
    index 6b2f6c249e31..d58c2dab4570 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakeEndpoints implements EndpointsInterface
    -type FakeEndpoints struct {
    +// fakeEndpoints implements EndpointsInterface
    +type fakeEndpoints struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Endpoints, *v1.EndpointsList, *corev1.EndpointsApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
    -}
    -
    -var endpointsResource = v1.SchemeGroupVersion.WithResource("endpoints")
    -
    -var endpointsKind = v1.SchemeGroupVersion.WithKind("Endpoints")
    -
    -// Get takes name of the endpoints, and returns the corresponding endpoints object, and an error if there is any.
    -func (c *FakeEndpoints) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Endpoints, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(endpointsResource, c.ns, name), &v1.Endpoints{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Endpoints), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Endpoints that match those selectors.
    -func (c *FakeEndpoints) List(ctx context.Context, opts metav1.ListOptions) (result *v1.EndpointsList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(endpointsResource, endpointsKind, c.ns, opts), &v1.EndpointsList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.EndpointsList{ListMeta: obj.(*v1.EndpointsList).ListMeta}
    -	for _, item := range obj.(*v1.EndpointsList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested endpoints.
    -func (c *FakeEndpoints) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(endpointsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a endpoints and creates it.  Returns the server's representation of the endpoints, and an error, if there is any.
    -func (c *FakeEndpoints) Create(ctx context.Context, endpoints *v1.Endpoints, opts metav1.CreateOptions) (result *v1.Endpoints, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(endpointsResource, c.ns, endpoints), &v1.Endpoints{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Endpoints), err
    -}
    -
    -// Update takes the representation of a endpoints and updates it. Returns the server's representation of the endpoints, and an error, if there is any.
    -func (c *FakeEndpoints) Update(ctx context.Context, endpoints *v1.Endpoints, opts metav1.UpdateOptions) (result *v1.Endpoints, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(endpointsResource, c.ns, endpoints), &v1.Endpoints{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Endpoints), err
    -}
    -
    -// Delete takes name of the endpoints and deletes it. Returns an error if one occurs.
    -func (c *FakeEndpoints) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(endpointsResource, c.ns, name, opts), &v1.Endpoints{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeEndpoints) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(endpointsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.EndpointsList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched endpoints.
    -func (c *FakeEndpoints) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Endpoints, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(endpointsResource, c.ns, name, pt, data, subresources...), &v1.Endpoints{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Endpoints), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied endpoints.
    -func (c *FakeEndpoints) Apply(ctx context.Context, endpoints *corev1.EndpointsApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Endpoints, err error) {
    -	if endpoints == nil {
    -		return nil, fmt.Errorf("endpoints provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(endpoints)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := endpoints.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("endpoints.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(endpointsResource, c.ns, *name, types.ApplyPatchType, data), &v1.Endpoints{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeEndpoints(fake *FakeCoreV1, namespace string) typedcorev1.EndpointsInterface {
    +	return &fakeEndpoints{
    +		gentype.NewFakeClientWithListAndApply[*v1.Endpoints, *v1.EndpointsList, *corev1.EndpointsApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("endpoints"),
    +			v1.SchemeGroupVersion.WithKind("Endpoints"),
    +			func() *v1.Endpoints { return &v1.Endpoints{} },
    +			func() *v1.EndpointsList { return &v1.EndpointsList{} },
    +			func(dst, src *v1.EndpointsList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.EndpointsList) []*v1.Endpoints { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.EndpointsList, items []*v1.Endpoints) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Endpoints), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go
    index 9ad879b3943e..36ee633c08b4 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakeEvents implements EventInterface
    -type FakeEvents struct {
    +// fakeEvents implements EventInterface
    +type fakeEvents struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Event, *v1.EventList, *corev1.EventApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
    -}
    -
    -var eventsResource = v1.SchemeGroupVersion.WithResource("events")
    -
    -var eventsKind = v1.SchemeGroupVersion.WithKind("Event")
    -
    -// Get takes name of the event, and returns the corresponding event object, and an error if there is any.
    -func (c *FakeEvents) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(eventsResource, c.ns, name), &v1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Event), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Events that match those selectors.
    -func (c *FakeEvents) List(ctx context.Context, opts metav1.ListOptions) (result *v1.EventList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(eventsResource, eventsKind, c.ns, opts), &v1.EventList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.EventList{ListMeta: obj.(*v1.EventList).ListMeta}
    -	for _, item := range obj.(*v1.EventList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested events.
    -func (c *FakeEvents) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(eventsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a event and creates it.  Returns the server's representation of the event, and an error, if there is any.
    -func (c *FakeEvents) Create(ctx context.Context, event *v1.Event, opts metav1.CreateOptions) (result *v1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(eventsResource, c.ns, event), &v1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Event), err
    -}
    -
    -// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any.
    -func (c *FakeEvents) Update(ctx context.Context, event *v1.Event, opts metav1.UpdateOptions) (result *v1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(eventsResource, c.ns, event), &v1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Event), err
    -}
    -
    -// Delete takes name of the event and deletes it. Returns an error if one occurs.
    -func (c *FakeEvents) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(eventsResource, c.ns, name, opts), &v1.Event{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeEvents) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(eventsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.EventList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched event.
    -func (c *FakeEvents) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, name, pt, data, subresources...), &v1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Event), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied event.
    -func (c *FakeEvents) Apply(ctx context.Context, event *corev1.EventApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Event, err error) {
    -	if event == nil {
    -		return nil, fmt.Errorf("event provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(event)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := event.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("event.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, *name, types.ApplyPatchType, data), &v1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeEvents(fake *FakeCoreV1, namespace string) typedcorev1.EventInterface {
    +	return &fakeEvents{
    +		gentype.NewFakeClientWithListAndApply[*v1.Event, *v1.EventList, *corev1.EventApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("events"),
    +			v1.SchemeGroupVersion.WithKind("Event"),
    +			func() *v1.Event { return &v1.Event{} },
    +			func() *v1.EventList { return &v1.EventList{} },
    +			func(dst, src *v1.EventList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.EventList) []*v1.Event { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.EventList, items []*v1.Event) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Event), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go
    index 48282f86e381..3840f6323c3e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go
    @@ -25,12 +25,12 @@ import (
     	core "k8s.io/client-go/testing"
     )
     
    -func (c *FakeEvents) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) {
    +func (c *fakeEvents) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) {
     	var action core.CreateActionImpl
    -	if c.ns != "" {
    -		action = core.NewCreateAction(eventsResource, c.ns, event)
    +	if c.Namespace() != "" {
    +		action = core.NewCreateAction(c.Resource(), c.Namespace(), event)
     	} else {
    -		action = core.NewCreateAction(eventsResource, event.GetNamespace(), event)
    +		action = core.NewCreateAction(c.Resource(), event.GetNamespace(), event)
     	}
     	obj, err := c.Fake.Invokes(action, event)
     	if obj == nil {
    @@ -41,12 +41,12 @@ func (c *FakeEvents) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error
     }
     
     // Update replaces an existing event. Returns the copy of the event the server returns, or an error.
    -func (c *FakeEvents) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) {
    +func (c *fakeEvents) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) {
     	var action core.UpdateActionImpl
    -	if c.ns != "" {
    -		action = core.NewUpdateAction(eventsResource, c.ns, event)
    +	if c.Namespace() != "" {
    +		action = core.NewUpdateAction(c.Resource(), c.Namespace(), event)
     	} else {
    -		action = core.NewUpdateAction(eventsResource, event.GetNamespace(), event)
    +		action = core.NewUpdateAction(c.Resource(), event.GetNamespace(), event)
     	}
     	obj, err := c.Fake.Invokes(action, event)
     	if obj == nil {
    @@ -58,14 +58,14 @@ func (c *FakeEvents) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error
     
     // PatchWithEventNamespace patches an existing event. Returns the copy of the event the server returns, or an error.
     // TODO: Should take a PatchType as an argument probably.
    -func (c *FakeEvents) PatchWithEventNamespace(event *v1.Event, data []byte) (*v1.Event, error) {
    +func (c *fakeEvents) PatchWithEventNamespace(event *v1.Event, data []byte) (*v1.Event, error) {
     	// TODO: Should be configurable to support additional patch strategies.
     	pt := types.StrategicMergePatchType
     	var action core.PatchActionImpl
    -	if c.ns != "" {
    -		action = core.NewPatchAction(eventsResource, c.ns, event.Name, pt, data)
    +	if c.Namespace() != "" {
    +		action = core.NewPatchAction(c.Resource(), c.Namespace(), event.Name, pt, data)
     	} else {
    -		action = core.NewPatchAction(eventsResource, event.GetNamespace(), event.Name, pt, data)
    +		action = core.NewPatchAction(c.Resource(), event.GetNamespace(), event.Name, pt, data)
     	}
     	obj, err := c.Fake.Invokes(action, event)
     	if obj == nil {
    @@ -76,12 +76,12 @@ func (c *FakeEvents) PatchWithEventNamespace(event *v1.Event, data []byte) (*v1.
     }
     
     // Search returns a list of events matching the specified object.
    -func (c *FakeEvents) Search(scheme *runtime.Scheme, objOrRef runtime.Object) (*v1.EventList, error) {
    +func (c *fakeEvents) Search(scheme *runtime.Scheme, objOrRef runtime.Object) (*v1.EventList, error) {
     	var action core.ListActionImpl
    -	if c.ns != "" {
    -		action = core.NewListAction(eventsResource, eventsKind, c.ns, metav1.ListOptions{})
    +	if c.Namespace() != "" {
    +		action = core.NewListAction(c.Resource(), c.Kind(), c.Namespace(), metav1.ListOptions{})
     	} else {
    -		action = core.NewListAction(eventsResource, eventsKind, v1.NamespaceDefault, metav1.ListOptions{})
    +		action = core.NewListAction(c.Resource(), c.Kind(), v1.NamespaceDefault, metav1.ListOptions{})
     	}
     	obj, err := c.Fake.Invokes(action, &v1.EventList{})
     	if obj == nil {
    @@ -91,10 +91,10 @@ func (c *FakeEvents) Search(scheme *runtime.Scheme, objOrRef runtime.Object) (*v
     	return obj.(*v1.EventList), err
     }
     
    -func (c *FakeEvents) GetFieldSelector(involvedObjectName, involvedObjectNamespace, involvedObjectKind, involvedObjectUID *string) fields.Selector {
    +func (c *fakeEvents) GetFieldSelector(involvedObjectName, involvedObjectNamespace, involvedObjectKind, involvedObjectUID *string) fields.Selector {
     	action := core.GenericActionImpl{}
     	action.Verb = "get-field-selector"
    -	action.Resource = eventsResource
    +	action.Resource = c.Resource()
     
     	c.Fake.Invokes(action, nil)
     	return fields.Everything()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go
    index f18b5741c386..377581f109dd 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakeLimitRanges implements LimitRangeInterface
    -type FakeLimitRanges struct {
    +// fakeLimitRanges implements LimitRangeInterface
    +type fakeLimitRanges struct {
    +	*gentype.FakeClientWithListAndApply[*v1.LimitRange, *v1.LimitRangeList, *corev1.LimitRangeApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
    -}
    -
    -var limitrangesResource = v1.SchemeGroupVersion.WithResource("limitranges")
    -
    -var limitrangesKind = v1.SchemeGroupVersion.WithKind("LimitRange")
    -
    -// Get takes name of the limitRange, and returns the corresponding limitRange object, and an error if there is any.
    -func (c *FakeLimitRanges) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.LimitRange, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(limitrangesResource, c.ns, name), &v1.LimitRange{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.LimitRange), err
    -}
    -
    -// List takes label and field selectors, and returns the list of LimitRanges that match those selectors.
    -func (c *FakeLimitRanges) List(ctx context.Context, opts metav1.ListOptions) (result *v1.LimitRangeList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(limitrangesResource, limitrangesKind, c.ns, opts), &v1.LimitRangeList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.LimitRangeList{ListMeta: obj.(*v1.LimitRangeList).ListMeta}
    -	for _, item := range obj.(*v1.LimitRangeList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested limitRanges.
    -func (c *FakeLimitRanges) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(limitrangesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a limitRange and creates it.  Returns the server's representation of the limitRange, and an error, if there is any.
    -func (c *FakeLimitRanges) Create(ctx context.Context, limitRange *v1.LimitRange, opts metav1.CreateOptions) (result *v1.LimitRange, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(limitrangesResource, c.ns, limitRange), &v1.LimitRange{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.LimitRange), err
    -}
    -
    -// Update takes the representation of a limitRange and updates it. Returns the server's representation of the limitRange, and an error, if there is any.
    -func (c *FakeLimitRanges) Update(ctx context.Context, limitRange *v1.LimitRange, opts metav1.UpdateOptions) (result *v1.LimitRange, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(limitrangesResource, c.ns, limitRange), &v1.LimitRange{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.LimitRange), err
    -}
    -
    -// Delete takes name of the limitRange and deletes it. Returns an error if one occurs.
    -func (c *FakeLimitRanges) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(limitrangesResource, c.ns, name, opts), &v1.LimitRange{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeLimitRanges) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(limitrangesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.LimitRangeList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched limitRange.
    -func (c *FakeLimitRanges) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.LimitRange, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(limitrangesResource, c.ns, name, pt, data, subresources...), &v1.LimitRange{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.LimitRange), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied limitRange.
    -func (c *FakeLimitRanges) Apply(ctx context.Context, limitRange *corev1.LimitRangeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.LimitRange, err error) {
    -	if limitRange == nil {
    -		return nil, fmt.Errorf("limitRange provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(limitRange)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := limitRange.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("limitRange.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(limitrangesResource, c.ns, *name, types.ApplyPatchType, data), &v1.LimitRange{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeLimitRanges(fake *FakeCoreV1, namespace string) typedcorev1.LimitRangeInterface {
    +	return &fakeLimitRanges{
    +		gentype.NewFakeClientWithListAndApply[*v1.LimitRange, *v1.LimitRangeList, *corev1.LimitRangeApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("limitranges"),
    +			v1.SchemeGroupVersion.WithKind("LimitRange"),
    +			func() *v1.LimitRange { return &v1.LimitRange{} },
    +			func() *v1.LimitRangeList { return &v1.LimitRangeList{} },
    +			func(dst, src *v1.LimitRangeList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.LimitRangeList) []*v1.LimitRange { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.LimitRangeList, items []*v1.LimitRange) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.LimitRange), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go
    index 52fcff591e94..2e0ac2d8a5ba 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go
    @@ -19,152 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakeNamespaces implements NamespaceInterface
    -type FakeNamespaces struct {
    +// fakeNamespaces implements NamespaceInterface
    +type fakeNamespaces struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Namespace, *v1.NamespaceList, *corev1.NamespaceApplyConfiguration]
     	Fake *FakeCoreV1
     }
     
    -var namespacesResource = v1.SchemeGroupVersion.WithResource("namespaces")
    -
    -var namespacesKind = v1.SchemeGroupVersion.WithKind("Namespace")
    -
    -// Get takes name of the namespace, and returns the corresponding namespace object, and an error if there is any.
    -func (c *FakeNamespaces) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Namespace, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(namespacesResource, name), &v1.Namespace{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Namespace), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Namespaces that match those selectors.
    -func (c *FakeNamespaces) List(ctx context.Context, opts metav1.ListOptions) (result *v1.NamespaceList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(namespacesResource, namespacesKind, opts), &v1.NamespaceList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.NamespaceList{ListMeta: obj.(*v1.NamespaceList).ListMeta}
    -	for _, item := range obj.(*v1.NamespaceList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested namespaces.
    -func (c *FakeNamespaces) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(namespacesResource, opts))
    -}
    -
    -// Create takes the representation of a namespace and creates it.  Returns the server's representation of the namespace, and an error, if there is any.
    -func (c *FakeNamespaces) Create(ctx context.Context, namespace *v1.Namespace, opts metav1.CreateOptions) (result *v1.Namespace, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(namespacesResource, namespace), &v1.Namespace{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Namespace), err
    -}
    -
    -// Update takes the representation of a namespace and updates it. Returns the server's representation of the namespace, and an error, if there is any.
    -func (c *FakeNamespaces) Update(ctx context.Context, namespace *v1.Namespace, opts metav1.UpdateOptions) (result *v1.Namespace, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(namespacesResource, namespace), &v1.Namespace{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Namespace), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeNamespaces) UpdateStatus(ctx context.Context, namespace *v1.Namespace, opts metav1.UpdateOptions) (*v1.Namespace, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(namespacesResource, "status", namespace), &v1.Namespace{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Namespace), err
    -}
    -
    -// Delete takes name of the namespace and deletes it. Returns an error if one occurs.
    -func (c *FakeNamespaces) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(namespacesResource, name, opts), &v1.Namespace{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched namespace.
    -func (c *FakeNamespaces) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Namespace, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(namespacesResource, name, pt, data, subresources...), &v1.Namespace{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Namespace), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied namespace.
    -func (c *FakeNamespaces) Apply(ctx context.Context, namespace *corev1.NamespaceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Namespace, err error) {
    -	if namespace == nil {
    -		return nil, fmt.Errorf("namespace provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(namespace)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := namespace.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("namespace.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(namespacesResource, *name, types.ApplyPatchType, data), &v1.Namespace{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Namespace), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeNamespaces) ApplyStatus(ctx context.Context, namespace *corev1.NamespaceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Namespace, err error) {
    -	if namespace == nil {
    -		return nil, fmt.Errorf("namespace provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(namespace)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := namespace.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("namespace.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(namespacesResource, *name, types.ApplyPatchType, data, "status"), &v1.Namespace{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeNamespaces(fake *FakeCoreV1) typedcorev1.NamespaceInterface {
    +	return &fakeNamespaces{
    +		gentype.NewFakeClientWithListAndApply[*v1.Namespace, *v1.NamespaceList, *corev1.NamespaceApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("namespaces"),
    +			v1.SchemeGroupVersion.WithKind("Namespace"),
    +			func() *v1.Namespace { return &v1.Namespace{} },
    +			func() *v1.NamespaceList { return &v1.NamespaceList{} },
    +			func(dst, src *v1.NamespaceList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.NamespaceList) []*v1.Namespace { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.NamespaceList, items []*v1.Namespace) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Namespace), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go
    index d86b328a4dbf..adc2624b5388 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go
    @@ -19,15 +19,15 @@ package fake
     import (
     	"context"
     
    -	"k8s.io/api/core/v1"
    +	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	core "k8s.io/client-go/testing"
     )
     
    -func (c *FakeNamespaces) Finalize(ctx context.Context, namespace *v1.Namespace, opts metav1.UpdateOptions) (*v1.Namespace, error) {
    +func (c *fakeNamespaces) Finalize(ctx context.Context, namespace *v1.Namespace, opts metav1.UpdateOptions) (*v1.Namespace, error) {
     	action := core.CreateActionImpl{}
     	action.Verb = "create"
    -	action.Resource = namespacesResource
    +	action.Resource = c.Resource()
     	action.Subresource = "finalize"
     	action.Object = namespace
     
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go
    index 5df40f8d1133..8e59a61e0c05 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go
    @@ -19,160 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakeNodes implements NodeInterface
    -type FakeNodes struct {
    +// fakeNodes implements NodeInterface
    +type fakeNodes struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Node, *v1.NodeList, *corev1.NodeApplyConfiguration]
     	Fake *FakeCoreV1
     }
     
    -var nodesResource = v1.SchemeGroupVersion.WithResource("nodes")
    -
    -var nodesKind = v1.SchemeGroupVersion.WithKind("Node")
    -
    -// Get takes name of the node, and returns the corresponding node object, and an error if there is any.
    -func (c *FakeNodes) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Node, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(nodesResource, name), &v1.Node{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Node), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Nodes that match those selectors.
    -func (c *FakeNodes) List(ctx context.Context, opts metav1.ListOptions) (result *v1.NodeList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(nodesResource, nodesKind, opts), &v1.NodeList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.NodeList{ListMeta: obj.(*v1.NodeList).ListMeta}
    -	for _, item := range obj.(*v1.NodeList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested nodes.
    -func (c *FakeNodes) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(nodesResource, opts))
    -}
    -
    -// Create takes the representation of a node and creates it.  Returns the server's representation of the node, and an error, if there is any.
    -func (c *FakeNodes) Create(ctx context.Context, node *v1.Node, opts metav1.CreateOptions) (result *v1.Node, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(nodesResource, node), &v1.Node{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Node), err
    -}
    -
    -// Update takes the representation of a node and updates it. Returns the server's representation of the node, and an error, if there is any.
    -func (c *FakeNodes) Update(ctx context.Context, node *v1.Node, opts metav1.UpdateOptions) (result *v1.Node, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(nodesResource, node), &v1.Node{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Node), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeNodes) UpdateStatus(ctx context.Context, node *v1.Node, opts metav1.UpdateOptions) (*v1.Node, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(nodesResource, "status", node), &v1.Node{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Node), err
    -}
    -
    -// Delete takes name of the node and deletes it. Returns an error if one occurs.
    -func (c *FakeNodes) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(nodesResource, name, opts), &v1.Node{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeNodes) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(nodesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.NodeList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched node.
    -func (c *FakeNodes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Node, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(nodesResource, name, pt, data, subresources...), &v1.Node{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Node), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied node.
    -func (c *FakeNodes) Apply(ctx context.Context, node *corev1.NodeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Node, err error) {
    -	if node == nil {
    -		return nil, fmt.Errorf("node provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(node)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := node.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("node.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(nodesResource, *name, types.ApplyPatchType, data), &v1.Node{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Node), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeNodes) ApplyStatus(ctx context.Context, node *corev1.NodeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Node, err error) {
    -	if node == nil {
    -		return nil, fmt.Errorf("node provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(node)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := node.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("node.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(nodesResource, *name, types.ApplyPatchType, data, "status"), &v1.Node{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeNodes(fake *FakeCoreV1) typedcorev1.NodeInterface {
    +	return &fakeNodes{
    +		gentype.NewFakeClientWithListAndApply[*v1.Node, *v1.NodeList, *corev1.NodeApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("nodes"),
    +			v1.SchemeGroupVersion.WithKind("Node"),
    +			func() *v1.Node { return &v1.Node{} },
    +			func() *v1.NodeList { return &v1.NodeList{} },
    +			func(dst, src *v1.NodeList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.NodeList) []*v1.Node { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.NodeList, items []*v1.Node) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Node), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go
    index eccf9fec63c7..0e5be84953de 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go
    @@ -25,11 +25,11 @@ import (
     )
     
     // TODO: Should take a PatchType as an argument probably.
    -func (c *FakeNodes) PatchStatus(_ context.Context, nodeName string, data []byte) (*v1.Node, error) {
    +func (c *fakeNodes) PatchStatus(_ context.Context, nodeName string, data []byte) (*v1.Node, error) {
     	// TODO: Should be configurable to support additional patch strategies.
     	pt := types.StrategicMergePatchType
     	obj, err := c.Fake.Invokes(
    -		core.NewRootPatchSubresourceAction(nodesResource, nodeName, pt, data, "status"), &v1.Node{})
    +		core.NewRootPatchSubresourceAction(c.Resource(), nodeName, pt, data, "status"), &v1.Node{})
     	if obj == nil {
     		return nil, err
     	}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go
    index 5b06d0b19235..d4cbfcbfbfcc 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go
    @@ -19,160 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakePersistentVolumes implements PersistentVolumeInterface
    -type FakePersistentVolumes struct {
    +// fakePersistentVolumes implements PersistentVolumeInterface
    +type fakePersistentVolumes struct {
    +	*gentype.FakeClientWithListAndApply[*v1.PersistentVolume, *v1.PersistentVolumeList, *corev1.PersistentVolumeApplyConfiguration]
     	Fake *FakeCoreV1
     }
     
    -var persistentvolumesResource = v1.SchemeGroupVersion.WithResource("persistentvolumes")
    -
    -var persistentvolumesKind = v1.SchemeGroupVersion.WithKind("PersistentVolume")
    -
    -// Get takes name of the persistentVolume, and returns the corresponding persistentVolume object, and an error if there is any.
    -func (c *FakePersistentVolumes) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PersistentVolume, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(persistentvolumesResource, name), &v1.PersistentVolume{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolume), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PersistentVolumes that match those selectors.
    -func (c *FakePersistentVolumes) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PersistentVolumeList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(persistentvolumesResource, persistentvolumesKind, opts), &v1.PersistentVolumeList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.PersistentVolumeList{ListMeta: obj.(*v1.PersistentVolumeList).ListMeta}
    -	for _, item := range obj.(*v1.PersistentVolumeList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested persistentVolumes.
    -func (c *FakePersistentVolumes) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(persistentvolumesResource, opts))
    -}
    -
    -// Create takes the representation of a persistentVolume and creates it.  Returns the server's representation of the persistentVolume, and an error, if there is any.
    -func (c *FakePersistentVolumes) Create(ctx context.Context, persistentVolume *v1.PersistentVolume, opts metav1.CreateOptions) (result *v1.PersistentVolume, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(persistentvolumesResource, persistentVolume), &v1.PersistentVolume{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolume), err
    -}
    -
    -// Update takes the representation of a persistentVolume and updates it. Returns the server's representation of the persistentVolume, and an error, if there is any.
    -func (c *FakePersistentVolumes) Update(ctx context.Context, persistentVolume *v1.PersistentVolume, opts metav1.UpdateOptions) (result *v1.PersistentVolume, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(persistentvolumesResource, persistentVolume), &v1.PersistentVolume{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolume), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakePersistentVolumes) UpdateStatus(ctx context.Context, persistentVolume *v1.PersistentVolume, opts metav1.UpdateOptions) (*v1.PersistentVolume, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(persistentvolumesResource, "status", persistentVolume), &v1.PersistentVolume{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolume), err
    -}
    -
    -// Delete takes name of the persistentVolume and deletes it. Returns an error if one occurs.
    -func (c *FakePersistentVolumes) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(persistentvolumesResource, name, opts), &v1.PersistentVolume{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePersistentVolumes) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(persistentvolumesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.PersistentVolumeList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched persistentVolume.
    -func (c *FakePersistentVolumes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PersistentVolume, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(persistentvolumesResource, name, pt, data, subresources...), &v1.PersistentVolume{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolume), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied persistentVolume.
    -func (c *FakePersistentVolumes) Apply(ctx context.Context, persistentVolume *corev1.PersistentVolumeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolume, err error) {
    -	if persistentVolume == nil {
    -		return nil, fmt.Errorf("persistentVolume provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(persistentVolume)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := persistentVolume.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("persistentVolume.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(persistentvolumesResource, *name, types.ApplyPatchType, data), &v1.PersistentVolume{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolume), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakePersistentVolumes) ApplyStatus(ctx context.Context, persistentVolume *corev1.PersistentVolumeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolume, err error) {
    -	if persistentVolume == nil {
    -		return nil, fmt.Errorf("persistentVolume provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(persistentVolume)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := persistentVolume.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("persistentVolume.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(persistentvolumesResource, *name, types.ApplyPatchType, data, "status"), &v1.PersistentVolume{})
    -	if obj == nil {
    -		return nil, err
    +func newFakePersistentVolumes(fake *FakeCoreV1) typedcorev1.PersistentVolumeInterface {
    +	return &fakePersistentVolumes{
    +		gentype.NewFakeClientWithListAndApply[*v1.PersistentVolume, *v1.PersistentVolumeList, *corev1.PersistentVolumeApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("persistentvolumes"),
    +			v1.SchemeGroupVersion.WithKind("PersistentVolume"),
    +			func() *v1.PersistentVolume { return &v1.PersistentVolume{} },
    +			func() *v1.PersistentVolumeList { return &v1.PersistentVolumeList{} },
    +			func(dst, src *v1.PersistentVolumeList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.PersistentVolumeList) []*v1.PersistentVolume { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.PersistentVolumeList, items []*v1.PersistentVolume) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.PersistentVolume), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go
    index b860e536744d..3b2511337c12 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go
    @@ -19,171 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakePersistentVolumeClaims implements PersistentVolumeClaimInterface
    -type FakePersistentVolumeClaims struct {
    +// fakePersistentVolumeClaims implements PersistentVolumeClaimInterface
    +type fakePersistentVolumeClaims struct {
    +	*gentype.FakeClientWithListAndApply[*v1.PersistentVolumeClaim, *v1.PersistentVolumeClaimList, *corev1.PersistentVolumeClaimApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
    -}
    -
    -var persistentvolumeclaimsResource = v1.SchemeGroupVersion.WithResource("persistentvolumeclaims")
    -
    -var persistentvolumeclaimsKind = v1.SchemeGroupVersion.WithKind("PersistentVolumeClaim")
    -
    -// Get takes name of the persistentVolumeClaim, and returns the corresponding persistentVolumeClaim object, and an error if there is any.
    -func (c *FakePersistentVolumeClaims) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(persistentvolumeclaimsResource, c.ns, name), &v1.PersistentVolumeClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolumeClaim), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PersistentVolumeClaims that match those selectors.
    -func (c *FakePersistentVolumeClaims) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PersistentVolumeClaimList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(persistentvolumeclaimsResource, persistentvolumeclaimsKind, c.ns, opts), &v1.PersistentVolumeClaimList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.PersistentVolumeClaimList{ListMeta: obj.(*v1.PersistentVolumeClaimList).ListMeta}
    -	for _, item := range obj.(*v1.PersistentVolumeClaimList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested persistentVolumeClaims.
    -func (c *FakePersistentVolumeClaims) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(persistentvolumeclaimsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a persistentVolumeClaim and creates it.  Returns the server's representation of the persistentVolumeClaim, and an error, if there is any.
    -func (c *FakePersistentVolumeClaims) Create(ctx context.Context, persistentVolumeClaim *v1.PersistentVolumeClaim, opts metav1.CreateOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &v1.PersistentVolumeClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolumeClaim), err
    -}
    -
    -// Update takes the representation of a persistentVolumeClaim and updates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any.
    -func (c *FakePersistentVolumeClaims) Update(ctx context.Context, persistentVolumeClaim *v1.PersistentVolumeClaim, opts metav1.UpdateOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &v1.PersistentVolumeClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolumeClaim), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakePersistentVolumeClaims) UpdateStatus(ctx context.Context, persistentVolumeClaim *v1.PersistentVolumeClaim, opts metav1.UpdateOptions) (*v1.PersistentVolumeClaim, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(persistentvolumeclaimsResource, "status", c.ns, persistentVolumeClaim), &v1.PersistentVolumeClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolumeClaim), err
    -}
    -
    -// Delete takes name of the persistentVolumeClaim and deletes it. Returns an error if one occurs.
    -func (c *FakePersistentVolumeClaims) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(persistentvolumeclaimsResource, c.ns, name, opts), &v1.PersistentVolumeClaim{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePersistentVolumeClaims) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(persistentvolumeclaimsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.PersistentVolumeClaimList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched persistentVolumeClaim.
    -func (c *FakePersistentVolumeClaims) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PersistentVolumeClaim, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(persistentvolumeclaimsResource, c.ns, name, pt, data, subresources...), &v1.PersistentVolumeClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolumeClaim), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied persistentVolumeClaim.
    -func (c *FakePersistentVolumeClaims) Apply(ctx context.Context, persistentVolumeClaim *corev1.PersistentVolumeClaimApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	if persistentVolumeClaim == nil {
    -		return nil, fmt.Errorf("persistentVolumeClaim provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(persistentVolumeClaim)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := persistentVolumeClaim.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("persistentVolumeClaim.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(persistentvolumeclaimsResource, c.ns, *name, types.ApplyPatchType, data), &v1.PersistentVolumeClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PersistentVolumeClaim), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakePersistentVolumeClaims) ApplyStatus(ctx context.Context, persistentVolumeClaim *corev1.PersistentVolumeClaimApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	if persistentVolumeClaim == nil {
    -		return nil, fmt.Errorf("persistentVolumeClaim provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(persistentVolumeClaim)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := persistentVolumeClaim.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("persistentVolumeClaim.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(persistentvolumeclaimsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.PersistentVolumeClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakePersistentVolumeClaims(fake *FakeCoreV1, namespace string) typedcorev1.PersistentVolumeClaimInterface {
    +	return &fakePersistentVolumeClaims{
    +		gentype.NewFakeClientWithListAndApply[*v1.PersistentVolumeClaim, *v1.PersistentVolumeClaimList, *corev1.PersistentVolumeClaimApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("persistentvolumeclaims"),
    +			v1.SchemeGroupVersion.WithKind("PersistentVolumeClaim"),
    +			func() *v1.PersistentVolumeClaim { return &v1.PersistentVolumeClaim{} },
    +			func() *v1.PersistentVolumeClaimList { return &v1.PersistentVolumeClaimList{} },
    +			func(dst, src *v1.PersistentVolumeClaimList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.PersistentVolumeClaimList) []*v1.PersistentVolumeClaim {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.PersistentVolumeClaimList, items []*v1.PersistentVolumeClaim) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.PersistentVolumeClaim), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go
    index 23634c7d0714..7d353bcf10dc 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go
    @@ -19,182 +19,59 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    +	context "context"
     
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     	testing "k8s.io/client-go/testing"
     )
     
    -// FakePods implements PodInterface
    -type FakePods struct {
    +// fakePods implements PodInterface
    +type fakePods struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Pod, *v1.PodList, *corev1.PodApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
     }
     
    -var podsResource = v1.SchemeGroupVersion.WithResource("pods")
    -
    -var podsKind = v1.SchemeGroupVersion.WithKind("Pod")
    -
    -// Get takes name of the pod, and returns the corresponding pod object, and an error if there is any.
    -func (c *FakePods) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Pod, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(podsResource, c.ns, name), &v1.Pod{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Pod), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Pods that match those selectors.
    -func (c *FakePods) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PodList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(podsResource, podsKind, c.ns, opts), &v1.PodList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.PodList{ListMeta: obj.(*v1.PodList).ListMeta}
    -	for _, item := range obj.(*v1.PodList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested pods.
    -func (c *FakePods) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(podsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a pod and creates it.  Returns the server's representation of the pod, and an error, if there is any.
    -func (c *FakePods) Create(ctx context.Context, pod *v1.Pod, opts metav1.CreateOptions) (result *v1.Pod, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(podsResource, c.ns, pod), &v1.Pod{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakePods(fake *FakeCoreV1, namespace string) typedcorev1.PodInterface {
    +	return &fakePods{
    +		gentype.NewFakeClientWithListAndApply[*v1.Pod, *v1.PodList, *corev1.PodApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("pods"),
    +			v1.SchemeGroupVersion.WithKind("Pod"),
    +			func() *v1.Pod { return &v1.Pod{} },
    +			func() *v1.PodList { return &v1.PodList{} },
    +			func(dst, src *v1.PodList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.PodList) []*v1.Pod { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.PodList, items []*v1.Pod) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Pod), err
     }
     
    -// Update takes the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any.
    -func (c *FakePods) Update(ctx context.Context, pod *v1.Pod, opts metav1.UpdateOptions) (result *v1.Pod, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(podsResource, c.ns, pod), &v1.Pod{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Pod), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakePods) UpdateStatus(ctx context.Context, pod *v1.Pod, opts metav1.UpdateOptions) (*v1.Pod, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(podsResource, "status", c.ns, pod), &v1.Pod{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Pod), err
    -}
    -
    -// Delete takes name of the pod and deletes it. Returns an error if one occurs.
    -func (c *FakePods) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(podsResource, c.ns, name, opts), &v1.Pod{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePods) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(podsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.PodList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched pod.
    -func (c *FakePods) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Pod, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(podsResource, c.ns, name, pt, data, subresources...), &v1.Pod{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Pod), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied pod.
    -func (c *FakePods) Apply(ctx context.Context, pod *corev1.PodApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Pod, err error) {
    -	if pod == nil {
    -		return nil, fmt.Errorf("pod provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(pod)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := pod.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("pod.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(podsResource, c.ns, *name, types.ApplyPatchType, data), &v1.Pod{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Pod), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakePods) ApplyStatus(ctx context.Context, pod *corev1.PodApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Pod, err error) {
    -	if pod == nil {
    -		return nil, fmt.Errorf("pod provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(pod)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := pod.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("pod.Name must be provided to Apply")
    -	}
    +// UpdateEphemeralContainers takes the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any.
    +func (c *fakePods) UpdateEphemeralContainers(ctx context.Context, podName string, pod *v1.Pod, opts metav1.UpdateOptions) (result *v1.Pod, err error) {
    +	emptyResult := &v1.Pod{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(podsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.Pod{})
    +		Invokes(testing.NewUpdateSubresourceActionWithOptions(c.Resource(), "ephemeralcontainers", c.Namespace(), pod, opts), &v1.Pod{})
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1.Pod), err
     }
     
    -// UpdateEphemeralContainers takes the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any.
    -func (c *FakePods) UpdateEphemeralContainers(ctx context.Context, podName string, pod *v1.Pod, opts metav1.UpdateOptions) (result *v1.Pod, err error) {
    +// UpdateResize takes the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any.
    +func (c *fakePods) UpdateResize(ctx context.Context, podName string, pod *v1.Pod, opts metav1.UpdateOptions) (result *v1.Pod, err error) {
    +	emptyResult := &v1.Pod{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(podsResource, "ephemeralcontainers", c.ns, pod), &v1.Pod{})
    +		Invokes(testing.NewUpdateSubresourceActionWithOptions(c.Resource(), "resize", c.Namespace(), pod, opts), &v1.Pod{})
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1.Pod), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go
    index c814cadb056d..3fbb89ad43f5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go
    @@ -33,11 +33,11 @@ import (
     	core "k8s.io/client-go/testing"
     )
     
    -func (c *FakePods) Bind(ctx context.Context, binding *v1.Binding, opts metav1.CreateOptions) error {
    +func (c *fakePods) Bind(ctx context.Context, binding *v1.Binding, opts metav1.CreateOptions) error {
     	action := core.CreateActionImpl{}
     	action.Verb = "create"
     	action.Namespace = binding.Namespace
    -	action.Resource = podsResource
    +	action.Resource = c.Resource()
     	action.Subresource = "binding"
     	action.Object = binding
     
    @@ -45,9 +45,9 @@ func (c *FakePods) Bind(ctx context.Context, binding *v1.Binding, opts metav1.Cr
     	return err
     }
     
    -func (c *FakePods) GetBinding(name string) (result *v1.Binding, err error) {
    +func (c *fakePods) GetBinding(name string) (result *v1.Binding, err error) {
     	obj, err := c.Fake.
    -		Invokes(core.NewGetSubresourceAction(podsResource, c.ns, "binding", name), &v1.Binding{})
    +		Invokes(core.NewGetSubresourceAction(c.Resource(), c.Namespace(), "binding", name), &v1.Binding{})
     
     	if obj == nil {
     		return nil, err
    @@ -55,11 +55,11 @@ func (c *FakePods) GetBinding(name string) (result *v1.Binding, err error) {
     	return obj.(*v1.Binding), err
     }
     
    -func (c *FakePods) GetLogs(name string, opts *v1.PodLogOptions) *restclient.Request {
    +func (c *fakePods) GetLogs(name string, opts *v1.PodLogOptions) *restclient.Request {
     	action := core.GenericActionImpl{}
     	action.Verb = "get"
    -	action.Namespace = c.ns
    -	action.Resource = podsResource
    +	action.Namespace = c.Namespace()
    +	action.Resource = c.Resource()
     	action.Subresource = "log"
     	action.Value = opts
     
    @@ -73,21 +73,21 @@ func (c *FakePods) GetLogs(name string, opts *v1.PodLogOptions) *restclient.Requ
     			return resp, nil
     		}),
     		NegotiatedSerializer: scheme.Codecs.WithoutConversion(),
    -		GroupVersion:         podsKind.GroupVersion(),
    -		VersionedAPIPath:     fmt.Sprintf("/api/v1/namespaces/%s/pods/%s/log", c.ns, name),
    +		GroupVersion:         c.Kind().GroupVersion(),
    +		VersionedAPIPath:     fmt.Sprintf("/api/v1/namespaces/%s/pods/%s/log", c.Namespace(), name),
     	}
     	return fakeClient.Request()
     }
     
    -func (c *FakePods) Evict(ctx context.Context, eviction *policyv1beta1.Eviction) error {
    +func (c *fakePods) Evict(ctx context.Context, eviction *policyv1beta1.Eviction) error {
     	return c.EvictV1beta1(ctx, eviction)
     }
     
    -func (c *FakePods) EvictV1(ctx context.Context, eviction *policyv1.Eviction) error {
    +func (c *fakePods) EvictV1(ctx context.Context, eviction *policyv1.Eviction) error {
     	action := core.CreateActionImpl{}
     	action.Verb = "create"
    -	action.Namespace = c.ns
    -	action.Resource = podsResource
    +	action.Namespace = c.Namespace()
    +	action.Resource = c.Resource()
     	action.Subresource = "eviction"
     	action.Object = eviction
     
    @@ -95,11 +95,11 @@ func (c *FakePods) EvictV1(ctx context.Context, eviction *policyv1.Eviction) err
     	return err
     }
     
    -func (c *FakePods) EvictV1beta1(ctx context.Context, eviction *policyv1beta1.Eviction) error {
    +func (c *fakePods) EvictV1beta1(ctx context.Context, eviction *policyv1beta1.Eviction) error {
     	action := core.CreateActionImpl{}
     	action.Verb = "create"
    -	action.Namespace = c.ns
    -	action.Resource = podsResource
    +	action.Namespace = c.Namespace()
    +	action.Resource = c.Resource()
     	action.Subresource = "eviction"
     	action.Object = eviction
     
    @@ -107,6 +107,6 @@ func (c *FakePods) EvictV1beta1(ctx context.Context, eviction *policyv1beta1.Evi
     	return err
     }
     
    -func (c *FakePods) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
    -	return c.Fake.InvokesProxy(core.NewProxyGetAction(podsResource, c.ns, scheme, name, port, path, params))
    +func (c *fakePods) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
    +	return c.Fake.InvokesProxy(core.NewProxyGetAction(c.Resource(), c.Namespace(), scheme, name, port, path, params))
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go
    index 9fa97ab402d4..d3ff2c41247f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakePodTemplates implements PodTemplateInterface
    -type FakePodTemplates struct {
    +// fakePodTemplates implements PodTemplateInterface
    +type fakePodTemplates struct {
    +	*gentype.FakeClientWithListAndApply[*v1.PodTemplate, *v1.PodTemplateList, *corev1.PodTemplateApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
    -}
    -
    -var podtemplatesResource = v1.SchemeGroupVersion.WithResource("podtemplates")
    -
    -var podtemplatesKind = v1.SchemeGroupVersion.WithKind("PodTemplate")
    -
    -// Get takes name of the podTemplate, and returns the corresponding podTemplate object, and an error if there is any.
    -func (c *FakePodTemplates) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PodTemplate, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(podtemplatesResource, c.ns, name), &v1.PodTemplate{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PodTemplate), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PodTemplates that match those selectors.
    -func (c *FakePodTemplates) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PodTemplateList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(podtemplatesResource, podtemplatesKind, c.ns, opts), &v1.PodTemplateList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.PodTemplateList{ListMeta: obj.(*v1.PodTemplateList).ListMeta}
    -	for _, item := range obj.(*v1.PodTemplateList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested podTemplates.
    -func (c *FakePodTemplates) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(podtemplatesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a podTemplate and creates it.  Returns the server's representation of the podTemplate, and an error, if there is any.
    -func (c *FakePodTemplates) Create(ctx context.Context, podTemplate *v1.PodTemplate, opts metav1.CreateOptions) (result *v1.PodTemplate, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(podtemplatesResource, c.ns, podTemplate), &v1.PodTemplate{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PodTemplate), err
    -}
    -
    -// Update takes the representation of a podTemplate and updates it. Returns the server's representation of the podTemplate, and an error, if there is any.
    -func (c *FakePodTemplates) Update(ctx context.Context, podTemplate *v1.PodTemplate, opts metav1.UpdateOptions) (result *v1.PodTemplate, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(podtemplatesResource, c.ns, podTemplate), &v1.PodTemplate{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PodTemplate), err
    -}
    -
    -// Delete takes name of the podTemplate and deletes it. Returns an error if one occurs.
    -func (c *FakePodTemplates) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(podtemplatesResource, c.ns, name, opts), &v1.PodTemplate{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePodTemplates) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(podtemplatesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.PodTemplateList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched podTemplate.
    -func (c *FakePodTemplates) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PodTemplate, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(podtemplatesResource, c.ns, name, pt, data, subresources...), &v1.PodTemplate{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PodTemplate), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied podTemplate.
    -func (c *FakePodTemplates) Apply(ctx context.Context, podTemplate *corev1.PodTemplateApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PodTemplate, err error) {
    -	if podTemplate == nil {
    -		return nil, fmt.Errorf("podTemplate provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(podTemplate)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podTemplate.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podTemplate.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(podtemplatesResource, c.ns, *name, types.ApplyPatchType, data), &v1.PodTemplate{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakePodTemplates(fake *FakeCoreV1, namespace string) typedcorev1.PodTemplateInterface {
    +	return &fakePodTemplates{
    +		gentype.NewFakeClientWithListAndApply[*v1.PodTemplate, *v1.PodTemplateList, *corev1.PodTemplateApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("podtemplates"),
    +			v1.SchemeGroupVersion.WithKind("PodTemplate"),
    +			func() *v1.PodTemplate { return &v1.PodTemplate{} },
    +			func() *v1.PodTemplateList { return &v1.PodTemplateList{} },
    +			func(dst, src *v1.PodTemplateList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.PodTemplateList) []*v1.PodTemplate { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.PodTemplateList, items []*v1.PodTemplate) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.PodTemplate), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go
    index 1e469c9b1ab1..454f099625ae 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go
    @@ -19,194 +19,64 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    +	context "context"
     
     	autoscalingv1 "k8s.io/api/autoscaling/v1"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     	testing "k8s.io/client-go/testing"
     )
     
    -// FakeReplicationControllers implements ReplicationControllerInterface
    -type FakeReplicationControllers struct {
    +// fakeReplicationControllers implements ReplicationControllerInterface
    +type fakeReplicationControllers struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ReplicationController, *v1.ReplicationControllerList, *corev1.ReplicationControllerApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
     }
     
    -var replicationcontrollersResource = v1.SchemeGroupVersion.WithResource("replicationcontrollers")
    -
    -var replicationcontrollersKind = v1.SchemeGroupVersion.WithKind("ReplicationController")
    -
    -// Get takes name of the replicationController, and returns the corresponding replicationController object, and an error if there is any.
    -func (c *FakeReplicationControllers) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ReplicationController, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(replicationcontrollersResource, c.ns, name), &v1.ReplicationController{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicationController), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ReplicationControllers that match those selectors.
    -func (c *FakeReplicationControllers) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ReplicationControllerList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(replicationcontrollersResource, replicationcontrollersKind, c.ns, opts), &v1.ReplicationControllerList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ReplicationControllerList{ListMeta: obj.(*v1.ReplicationControllerList).ListMeta}
    -	for _, item := range obj.(*v1.ReplicationControllerList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested replicationControllers.
    -func (c *FakeReplicationControllers) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(replicationcontrollersResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a replicationController and creates it.  Returns the server's representation of the replicationController, and an error, if there is any.
    -func (c *FakeReplicationControllers) Create(ctx context.Context, replicationController *v1.ReplicationController, opts metav1.CreateOptions) (result *v1.ReplicationController, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(replicationcontrollersResource, c.ns, replicationController), &v1.ReplicationController{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicationController), err
    -}
    -
    -// Update takes the representation of a replicationController and updates it. Returns the server's representation of the replicationController, and an error, if there is any.
    -func (c *FakeReplicationControllers) Update(ctx context.Context, replicationController *v1.ReplicationController, opts metav1.UpdateOptions) (result *v1.ReplicationController, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(replicationcontrollersResource, c.ns, replicationController), &v1.ReplicationController{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicationController), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeReplicationControllers) UpdateStatus(ctx context.Context, replicationController *v1.ReplicationController, opts metav1.UpdateOptions) (*v1.ReplicationController, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "status", c.ns, replicationController), &v1.ReplicationController{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicationController), err
    -}
    -
    -// Delete takes name of the replicationController and deletes it. Returns an error if one occurs.
    -func (c *FakeReplicationControllers) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(replicationcontrollersResource, c.ns, name, opts), &v1.ReplicationController{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeReplicationControllers) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(replicationcontrollersResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.ReplicationControllerList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched replicationController.
    -func (c *FakeReplicationControllers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ReplicationController, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicationcontrollersResource, c.ns, name, pt, data, subresources...), &v1.ReplicationController{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicationController), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied replicationController.
    -func (c *FakeReplicationControllers) Apply(ctx context.Context, replicationController *corev1.ReplicationControllerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicationController, err error) {
    -	if replicationController == nil {
    -		return nil, fmt.Errorf("replicationController provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(replicationController)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicationController.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicationController.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicationcontrollersResource, c.ns, *name, types.ApplyPatchType, data), &v1.ReplicationController{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ReplicationController), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeReplicationControllers) ApplyStatus(ctx context.Context, replicationController *corev1.ReplicationControllerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicationController, err error) {
    -	if replicationController == nil {
    -		return nil, fmt.Errorf("replicationController provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(replicationController)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicationController.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicationController.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicationcontrollersResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.ReplicationController{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeReplicationControllers(fake *FakeCoreV1, namespace string) typedcorev1.ReplicationControllerInterface {
    +	return &fakeReplicationControllers{
    +		gentype.NewFakeClientWithListAndApply[*v1.ReplicationController, *v1.ReplicationControllerList, *corev1.ReplicationControllerApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("replicationcontrollers"),
    +			v1.SchemeGroupVersion.WithKind("ReplicationController"),
    +			func() *v1.ReplicationController { return &v1.ReplicationController{} },
    +			func() *v1.ReplicationControllerList { return &v1.ReplicationControllerList{} },
    +			func(dst, src *v1.ReplicationControllerList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ReplicationControllerList) []*v1.ReplicationController {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.ReplicationControllerList, items []*v1.ReplicationController) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.ReplicationController), err
     }
     
     // GetScale takes name of the replicationController, and returns the corresponding scale object, and an error if there is any.
    -func (c *FakeReplicationControllers) GetScale(ctx context.Context, replicationControllerName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeReplicationControllers) GetScale(ctx context.Context, replicationControllerName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewGetSubresourceAction(replicationcontrollersResource, c.ns, "scale", replicationControllerName), &autoscalingv1.Scale{})
    +		Invokes(testing.NewGetSubresourceActionWithOptions(c.Resource(), c.Namespace(), "scale", replicationControllerName, options), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
     
     // UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
    -func (c *FakeReplicationControllers) UpdateScale(ctx context.Context, replicationControllerName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
    +func (c *fakeReplicationControllers) UpdateScale(ctx context.Context, replicationControllerName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
    +	emptyResult := &autoscalingv1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "scale", c.ns, scale), &autoscalingv1.Scale{})
    +		Invokes(testing.NewUpdateSubresourceActionWithOptions(c.Resource(), "scale", c.Namespace(), scale, opts), &autoscalingv1.Scale{})
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*autoscalingv1.Scale), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go
    index 87664985cea3..4c98389d38f6 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go
    @@ -19,171 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakeResourceQuotas implements ResourceQuotaInterface
    -type FakeResourceQuotas struct {
    +// fakeResourceQuotas implements ResourceQuotaInterface
    +type fakeResourceQuotas struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ResourceQuota, *v1.ResourceQuotaList, *corev1.ResourceQuotaApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
    -}
    -
    -var resourcequotasResource = v1.SchemeGroupVersion.WithResource("resourcequotas")
    -
    -var resourcequotasKind = v1.SchemeGroupVersion.WithKind("ResourceQuota")
    -
    -// Get takes name of the resourceQuota, and returns the corresponding resourceQuota object, and an error if there is any.
    -func (c *FakeResourceQuotas) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ResourceQuota, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(resourcequotasResource, c.ns, name), &v1.ResourceQuota{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ResourceQuota), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ResourceQuotas that match those selectors.
    -func (c *FakeResourceQuotas) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ResourceQuotaList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(resourcequotasResource, resourcequotasKind, c.ns, opts), &v1.ResourceQuotaList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ResourceQuotaList{ListMeta: obj.(*v1.ResourceQuotaList).ListMeta}
    -	for _, item := range obj.(*v1.ResourceQuotaList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested resourceQuotas.
    -func (c *FakeResourceQuotas) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(resourcequotasResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a resourceQuota and creates it.  Returns the server's representation of the resourceQuota, and an error, if there is any.
    -func (c *FakeResourceQuotas) Create(ctx context.Context, resourceQuota *v1.ResourceQuota, opts metav1.CreateOptions) (result *v1.ResourceQuota, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(resourcequotasResource, c.ns, resourceQuota), &v1.ResourceQuota{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ResourceQuota), err
    -}
    -
    -// Update takes the representation of a resourceQuota and updates it. Returns the server's representation of the resourceQuota, and an error, if there is any.
    -func (c *FakeResourceQuotas) Update(ctx context.Context, resourceQuota *v1.ResourceQuota, opts metav1.UpdateOptions) (result *v1.ResourceQuota, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(resourcequotasResource, c.ns, resourceQuota), &v1.ResourceQuota{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ResourceQuota), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeResourceQuotas) UpdateStatus(ctx context.Context, resourceQuota *v1.ResourceQuota, opts metav1.UpdateOptions) (*v1.ResourceQuota, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(resourcequotasResource, "status", c.ns, resourceQuota), &v1.ResourceQuota{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ResourceQuota), err
    -}
    -
    -// Delete takes name of the resourceQuota and deletes it. Returns an error if one occurs.
    -func (c *FakeResourceQuotas) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(resourcequotasResource, c.ns, name, opts), &v1.ResourceQuota{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeResourceQuotas) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(resourcequotasResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.ResourceQuotaList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched resourceQuota.
    -func (c *FakeResourceQuotas) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ResourceQuota, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(resourcequotasResource, c.ns, name, pt, data, subresources...), &v1.ResourceQuota{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ResourceQuota), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied resourceQuota.
    -func (c *FakeResourceQuotas) Apply(ctx context.Context, resourceQuota *corev1.ResourceQuotaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ResourceQuota, err error) {
    -	if resourceQuota == nil {
    -		return nil, fmt.Errorf("resourceQuota provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(resourceQuota)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := resourceQuota.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceQuota.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(resourcequotasResource, c.ns, *name, types.ApplyPatchType, data), &v1.ResourceQuota{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ResourceQuota), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeResourceQuotas) ApplyStatus(ctx context.Context, resourceQuota *corev1.ResourceQuotaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ResourceQuota, err error) {
    -	if resourceQuota == nil {
    -		return nil, fmt.Errorf("resourceQuota provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(resourceQuota)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := resourceQuota.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceQuota.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(resourcequotasResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.ResourceQuota{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeResourceQuotas(fake *FakeCoreV1, namespace string) typedcorev1.ResourceQuotaInterface {
    +	return &fakeResourceQuotas{
    +		gentype.NewFakeClientWithListAndApply[*v1.ResourceQuota, *v1.ResourceQuotaList, *corev1.ResourceQuotaApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("resourcequotas"),
    +			v1.SchemeGroupVersion.WithKind("ResourceQuota"),
    +			func() *v1.ResourceQuota { return &v1.ResourceQuota{} },
    +			func() *v1.ResourceQuotaList { return &v1.ResourceQuotaList{} },
    +			func(dst, src *v1.ResourceQuotaList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ResourceQuotaList) []*v1.ResourceQuota { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.ResourceQuotaList, items []*v1.ResourceQuota) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.ResourceQuota), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go
    index 90035a703712..779c12c381e1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakeSecrets implements SecretInterface
    -type FakeSecrets struct {
    +// fakeSecrets implements SecretInterface
    +type fakeSecrets struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Secret, *v1.SecretList, *corev1.SecretApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
    -}
    -
    -var secretsResource = v1.SchemeGroupVersion.WithResource("secrets")
    -
    -var secretsKind = v1.SchemeGroupVersion.WithKind("Secret")
    -
    -// Get takes name of the secret, and returns the corresponding secret object, and an error if there is any.
    -func (c *FakeSecrets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Secret, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(secretsResource, c.ns, name), &v1.Secret{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Secret), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Secrets that match those selectors.
    -func (c *FakeSecrets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.SecretList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(secretsResource, secretsKind, c.ns, opts), &v1.SecretList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.SecretList{ListMeta: obj.(*v1.SecretList).ListMeta}
    -	for _, item := range obj.(*v1.SecretList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested secrets.
    -func (c *FakeSecrets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(secretsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a secret and creates it.  Returns the server's representation of the secret, and an error, if there is any.
    -func (c *FakeSecrets) Create(ctx context.Context, secret *v1.Secret, opts metav1.CreateOptions) (result *v1.Secret, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(secretsResource, c.ns, secret), &v1.Secret{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Secret), err
    -}
    -
    -// Update takes the representation of a secret and updates it. Returns the server's representation of the secret, and an error, if there is any.
    -func (c *FakeSecrets) Update(ctx context.Context, secret *v1.Secret, opts metav1.UpdateOptions) (result *v1.Secret, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(secretsResource, c.ns, secret), &v1.Secret{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Secret), err
    -}
    -
    -// Delete takes name of the secret and deletes it. Returns an error if one occurs.
    -func (c *FakeSecrets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(secretsResource, c.ns, name, opts), &v1.Secret{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeSecrets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(secretsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.SecretList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched secret.
    -func (c *FakeSecrets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Secret, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(secretsResource, c.ns, name, pt, data, subresources...), &v1.Secret{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Secret), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied secret.
    -func (c *FakeSecrets) Apply(ctx context.Context, secret *corev1.SecretApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Secret, err error) {
    -	if secret == nil {
    -		return nil, fmt.Errorf("secret provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(secret)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := secret.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("secret.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(secretsResource, c.ns, *name, types.ApplyPatchType, data), &v1.Secret{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeSecrets(fake *FakeCoreV1, namespace string) typedcorev1.SecretInterface {
    +	return &fakeSecrets{
    +		gentype.NewFakeClientWithListAndApply[*v1.Secret, *v1.SecretList, *corev1.SecretApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("secrets"),
    +			v1.SchemeGroupVersion.WithKind("Secret"),
    +			func() *v1.Secret { return &v1.Secret{} },
    +			func() *v1.SecretList { return &v1.SecretList{} },
    +			func(dst, src *v1.SecretList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.SecretList) []*v1.Secret { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.SecretList, items []*v1.Secret) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Secret), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go
    index 514ab19e395f..6bab944a4b4f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go
    @@ -19,163 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/core/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     )
     
    -// FakeServices implements ServiceInterface
    -type FakeServices struct {
    +// fakeServices implements ServiceInterface
    +type fakeServices struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Service, *v1.ServiceList, *corev1.ServiceApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
    -}
    -
    -var servicesResource = v1.SchemeGroupVersion.WithResource("services")
    -
    -var servicesKind = v1.SchemeGroupVersion.WithKind("Service")
    -
    -// Get takes name of the service, and returns the corresponding service object, and an error if there is any.
    -func (c *FakeServices) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Service, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(servicesResource, c.ns, name), &v1.Service{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Service), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Services that match those selectors.
    -func (c *FakeServices) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ServiceList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(servicesResource, servicesKind, c.ns, opts), &v1.ServiceList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ServiceList{ListMeta: obj.(*v1.ServiceList).ListMeta}
    -	for _, item := range obj.(*v1.ServiceList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested services.
    -func (c *FakeServices) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(servicesResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a service and creates it.  Returns the server's representation of the service, and an error, if there is any.
    -func (c *FakeServices) Create(ctx context.Context, service *v1.Service, opts metav1.CreateOptions) (result *v1.Service, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(servicesResource, c.ns, service), &v1.Service{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Service), err
     }
     
    -// Update takes the representation of a service and updates it. Returns the server's representation of the service, and an error, if there is any.
    -func (c *FakeServices) Update(ctx context.Context, service *v1.Service, opts metav1.UpdateOptions) (result *v1.Service, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(servicesResource, c.ns, service), &v1.Service{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Service), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeServices) UpdateStatus(ctx context.Context, service *v1.Service, opts metav1.UpdateOptions) (*v1.Service, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(servicesResource, "status", c.ns, service), &v1.Service{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Service), err
    -}
    -
    -// Delete takes name of the service and deletes it. Returns an error if one occurs.
    -func (c *FakeServices) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(servicesResource, c.ns, name, opts), &v1.Service{})
    -
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched service.
    -func (c *FakeServices) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Service, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(servicesResource, c.ns, name, pt, data, subresources...), &v1.Service{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Service), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied service.
    -func (c *FakeServices) Apply(ctx context.Context, service *corev1.ServiceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Service, err error) {
    -	if service == nil {
    -		return nil, fmt.Errorf("service provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(service)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := service.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("service.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(servicesResource, c.ns, *name, types.ApplyPatchType, data), &v1.Service{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Service), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeServices) ApplyStatus(ctx context.Context, service *corev1.ServiceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Service, err error) {
    -	if service == nil {
    -		return nil, fmt.Errorf("service provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(service)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := service.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("service.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(servicesResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.Service{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeServices(fake *FakeCoreV1, namespace string) typedcorev1.ServiceInterface {
    +	return &fakeServices{
    +		gentype.NewFakeClientWithListAndApply[*v1.Service, *v1.ServiceList, *corev1.ServiceApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("services"),
    +			v1.SchemeGroupVersion.WithKind("Service"),
    +			func() *v1.Service { return &v1.Service{} },
    +			func() *v1.ServiceList { return &v1.ServiceList{} },
    +			func(dst, src *v1.ServiceList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ServiceList) []*v1.Service { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.ServiceList, items []*v1.Service) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Service), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go
    index 92e4930d7113..ebd39c460776 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go
    @@ -21,6 +21,6 @@ import (
     	core "k8s.io/client-go/testing"
     )
     
    -func (c *FakeServices) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
    -	return c.Fake.InvokesProxy(core.NewProxyGetAction(servicesResource, c.ns, scheme, name, port, path, params))
    +func (c *fakeServices) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
    +	return c.Fake.InvokesProxy(core.NewProxyGetAction(c.Resource(), c.Namespace(), scheme, name, port, path, params))
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go
    index 115ff07123e7..76df9d62bec9 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go
    @@ -19,148 +19,50 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    +	context "context"
     
     	authenticationv1 "k8s.io/api/authentication/v1"
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
     	testing "k8s.io/client-go/testing"
     )
     
    -// FakeServiceAccounts implements ServiceAccountInterface
    -type FakeServiceAccounts struct {
    +// fakeServiceAccounts implements ServiceAccountInterface
    +type fakeServiceAccounts struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ServiceAccount, *v1.ServiceAccountList, *corev1.ServiceAccountApplyConfiguration]
     	Fake *FakeCoreV1
    -	ns   string
     }
     
    -var serviceaccountsResource = v1.SchemeGroupVersion.WithResource("serviceaccounts")
    -
    -var serviceaccountsKind = v1.SchemeGroupVersion.WithKind("ServiceAccount")
    -
    -// Get takes name of the serviceAccount, and returns the corresponding serviceAccount object, and an error if there is any.
    -func (c *FakeServiceAccounts) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ServiceAccount, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(serviceaccountsResource, c.ns, name), &v1.ServiceAccount{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ServiceAccount), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ServiceAccounts that match those selectors.
    -func (c *FakeServiceAccounts) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ServiceAccountList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(serviceaccountsResource, serviceaccountsKind, c.ns, opts), &v1.ServiceAccountList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ServiceAccountList{ListMeta: obj.(*v1.ServiceAccountList).ListMeta}
    -	for _, item := range obj.(*v1.ServiceAccountList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested serviceAccounts.
    -func (c *FakeServiceAccounts) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(serviceaccountsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a serviceAccount and creates it.  Returns the server's representation of the serviceAccount, and an error, if there is any.
    -func (c *FakeServiceAccounts) Create(ctx context.Context, serviceAccount *v1.ServiceAccount, opts metav1.CreateOptions) (result *v1.ServiceAccount, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(serviceaccountsResource, c.ns, serviceAccount), &v1.ServiceAccount{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ServiceAccount), err
    -}
    -
    -// Update takes the representation of a serviceAccount and updates it. Returns the server's representation of the serviceAccount, and an error, if there is any.
    -func (c *FakeServiceAccounts) Update(ctx context.Context, serviceAccount *v1.ServiceAccount, opts metav1.UpdateOptions) (result *v1.ServiceAccount, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(serviceaccountsResource, c.ns, serviceAccount), &v1.ServiceAccount{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ServiceAccount), err
    -}
    -
    -// Delete takes name of the serviceAccount and deletes it. Returns an error if one occurs.
    -func (c *FakeServiceAccounts) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(serviceaccountsResource, c.ns, name, opts), &v1.ServiceAccount{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeServiceAccounts) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(serviceaccountsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.ServiceAccountList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched serviceAccount.
    -func (c *FakeServiceAccounts) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ServiceAccount, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(serviceaccountsResource, c.ns, name, pt, data, subresources...), &v1.ServiceAccount{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ServiceAccount), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied serviceAccount.
    -func (c *FakeServiceAccounts) Apply(ctx context.Context, serviceAccount *corev1.ServiceAccountApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ServiceAccount, err error) {
    -	if serviceAccount == nil {
    -		return nil, fmt.Errorf("serviceAccount provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(serviceAccount)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := serviceAccount.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("serviceAccount.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(serviceaccountsResource, c.ns, *name, types.ApplyPatchType, data), &v1.ServiceAccount{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeServiceAccounts(fake *FakeCoreV1, namespace string) typedcorev1.ServiceAccountInterface {
    +	return &fakeServiceAccounts{
    +		gentype.NewFakeClientWithListAndApply[*v1.ServiceAccount, *v1.ServiceAccountList, *corev1.ServiceAccountApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("serviceaccounts"),
    +			v1.SchemeGroupVersion.WithKind("ServiceAccount"),
    +			func() *v1.ServiceAccount { return &v1.ServiceAccount{} },
    +			func() *v1.ServiceAccountList { return &v1.ServiceAccountList{} },
    +			func(dst, src *v1.ServiceAccountList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ServiceAccountList) []*v1.ServiceAccount { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.ServiceAccountList, items []*v1.ServiceAccount) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.ServiceAccount), err
     }
     
     // CreateToken takes the representation of a tokenRequest and creates it.  Returns the server's representation of the tokenRequest, and an error, if there is any.
    -func (c *FakeServiceAccounts) CreateToken(ctx context.Context, serviceAccountName string, tokenRequest *authenticationv1.TokenRequest, opts metav1.CreateOptions) (result *authenticationv1.TokenRequest, err error) {
    +func (c *fakeServiceAccounts) CreateToken(ctx context.Context, serviceAccountName string, tokenRequest *authenticationv1.TokenRequest, opts metav1.CreateOptions) (result *authenticationv1.TokenRequest, err error) {
    +	emptyResult := &authenticationv1.TokenRequest{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewCreateSubresourceAction(serviceaccountsResource, serviceAccountName, "token", c.ns, tokenRequest), &authenticationv1.TokenRequest{})
    +		Invokes(testing.NewCreateSubresourceActionWithOptions(c.Resource(), serviceAccountName, "token", c.Namespace(), tokenRequest, opts), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*authenticationv1.TokenRequest), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go
    index e6883b607c74..51fa11d1b6f3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // LimitRangesGetter has a method to return a LimitRangeInterface.
    @@ -41,168 +38,34 @@ type LimitRangesGetter interface {
     
     // LimitRangeInterface has methods to work with LimitRange resources.
     type LimitRangeInterface interface {
    -	Create(ctx context.Context, limitRange *v1.LimitRange, opts metav1.CreateOptions) (*v1.LimitRange, error)
    -	Update(ctx context.Context, limitRange *v1.LimitRange, opts metav1.UpdateOptions) (*v1.LimitRange, error)
    +	Create(ctx context.Context, limitRange *corev1.LimitRange, opts metav1.CreateOptions) (*corev1.LimitRange, error)
    +	Update(ctx context.Context, limitRange *corev1.LimitRange, opts metav1.UpdateOptions) (*corev1.LimitRange, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.LimitRange, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.LimitRangeList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.LimitRange, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.LimitRangeList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.LimitRange, err error)
    -	Apply(ctx context.Context, limitRange *corev1.LimitRangeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.LimitRange, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.LimitRange, err error)
    +	Apply(ctx context.Context, limitRange *applyconfigurationscorev1.LimitRangeApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.LimitRange, err error)
     	LimitRangeExpansion
     }
     
     // limitRanges implements LimitRangeInterface
     type limitRanges struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.LimitRange, *corev1.LimitRangeList, *applyconfigurationscorev1.LimitRangeApplyConfiguration]
     }
     
     // newLimitRanges returns a LimitRanges
     func newLimitRanges(c *CoreV1Client, namespace string) *limitRanges {
     	return &limitRanges{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.LimitRange, *corev1.LimitRangeList, *applyconfigurationscorev1.LimitRangeApplyConfiguration](
    +			"limitranges",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.LimitRange { return &corev1.LimitRange{} },
    +			func() *corev1.LimitRangeList { return &corev1.LimitRangeList{} },
    +			gentype.PrefersProtobuf[*corev1.LimitRange](),
    +		),
     	}
     }
    -
    -// Get takes name of the limitRange, and returns the corresponding limitRange object, and an error if there is any.
    -func (c *limitRanges) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.LimitRange, err error) {
    -	result = &v1.LimitRange{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("limitranges").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of LimitRanges that match those selectors.
    -func (c *limitRanges) List(ctx context.Context, opts metav1.ListOptions) (result *v1.LimitRangeList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.LimitRangeList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("limitranges").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested limitRanges.
    -func (c *limitRanges) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("limitranges").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a limitRange and creates it.  Returns the server's representation of the limitRange, and an error, if there is any.
    -func (c *limitRanges) Create(ctx context.Context, limitRange *v1.LimitRange, opts metav1.CreateOptions) (result *v1.LimitRange, err error) {
    -	result = &v1.LimitRange{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("limitranges").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(limitRange).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a limitRange and updates it. Returns the server's representation of the limitRange, and an error, if there is any.
    -func (c *limitRanges) Update(ctx context.Context, limitRange *v1.LimitRange, opts metav1.UpdateOptions) (result *v1.LimitRange, err error) {
    -	result = &v1.LimitRange{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("limitranges").
    -		Name(limitRange.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(limitRange).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the limitRange and deletes it. Returns an error if one occurs.
    -func (c *limitRanges) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("limitranges").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *limitRanges) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("limitranges").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched limitRange.
    -func (c *limitRanges) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.LimitRange, err error) {
    -	result = &v1.LimitRange{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("limitranges").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied limitRange.
    -func (c *limitRanges) Apply(ctx context.Context, limitRange *corev1.LimitRangeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.LimitRange, err error) {
    -	if limitRange == nil {
    -		return nil, fmt.Errorf("limitRange provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(limitRange)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := limitRange.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("limitRange.Name must be provided to Apply")
    -	}
    -	result = &v1.LimitRange{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("limitranges").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go
    index 06c77b4c458a..323934938a52 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // NamespacesGetter has a method to return a NamespaceInterface.
    @@ -41,187 +38,37 @@ type NamespacesGetter interface {
     
     // NamespaceInterface has methods to work with Namespace resources.
     type NamespaceInterface interface {
    -	Create(ctx context.Context, namespace *v1.Namespace, opts metav1.CreateOptions) (*v1.Namespace, error)
    -	Update(ctx context.Context, namespace *v1.Namespace, opts metav1.UpdateOptions) (*v1.Namespace, error)
    -	UpdateStatus(ctx context.Context, namespace *v1.Namespace, opts metav1.UpdateOptions) (*v1.Namespace, error)
    +	Create(ctx context.Context, namespace *corev1.Namespace, opts metav1.CreateOptions) (*corev1.Namespace, error)
    +	Update(ctx context.Context, namespace *corev1.Namespace, opts metav1.UpdateOptions) (*corev1.Namespace, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, namespace *corev1.Namespace, opts metav1.UpdateOptions) (*corev1.Namespace, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Namespace, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.NamespaceList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.Namespace, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.NamespaceList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Namespace, err error)
    -	Apply(ctx context.Context, namespace *corev1.NamespaceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Namespace, err error)
    -	ApplyStatus(ctx context.Context, namespace *corev1.NamespaceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Namespace, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.Namespace, err error)
    +	Apply(ctx context.Context, namespace *applyconfigurationscorev1.NamespaceApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Namespace, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, namespace *applyconfigurationscorev1.NamespaceApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Namespace, err error)
     	NamespaceExpansion
     }
     
     // namespaces implements NamespaceInterface
     type namespaces struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*corev1.Namespace, *corev1.NamespaceList, *applyconfigurationscorev1.NamespaceApplyConfiguration]
     }
     
     // newNamespaces returns a Namespaces
     func newNamespaces(c *CoreV1Client) *namespaces {
     	return &namespaces{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*corev1.Namespace, *corev1.NamespaceList, *applyconfigurationscorev1.NamespaceApplyConfiguration](
    +			"namespaces",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *corev1.Namespace { return &corev1.Namespace{} },
    +			func() *corev1.NamespaceList { return &corev1.NamespaceList{} },
    +			gentype.PrefersProtobuf[*corev1.Namespace](),
    +		),
     	}
     }
    -
    -// Get takes name of the namespace, and returns the corresponding namespace object, and an error if there is any.
    -func (c *namespaces) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Namespace, err error) {
    -	result = &v1.Namespace{}
    -	err = c.client.Get().
    -		Resource("namespaces").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Namespaces that match those selectors.
    -func (c *namespaces) List(ctx context.Context, opts metav1.ListOptions) (result *v1.NamespaceList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.NamespaceList{}
    -	err = c.client.Get().
    -		Resource("namespaces").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested namespaces.
    -func (c *namespaces) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("namespaces").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a namespace and creates it.  Returns the server's representation of the namespace, and an error, if there is any.
    -func (c *namespaces) Create(ctx context.Context, namespace *v1.Namespace, opts metav1.CreateOptions) (result *v1.Namespace, err error) {
    -	result = &v1.Namespace{}
    -	err = c.client.Post().
    -		Resource("namespaces").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(namespace).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a namespace and updates it. Returns the server's representation of the namespace, and an error, if there is any.
    -func (c *namespaces) Update(ctx context.Context, namespace *v1.Namespace, opts metav1.UpdateOptions) (result *v1.Namespace, err error) {
    -	result = &v1.Namespace{}
    -	err = c.client.Put().
    -		Resource("namespaces").
    -		Name(namespace.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(namespace).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *namespaces) UpdateStatus(ctx context.Context, namespace *v1.Namespace, opts metav1.UpdateOptions) (result *v1.Namespace, err error) {
    -	result = &v1.Namespace{}
    -	err = c.client.Put().
    -		Resource("namespaces").
    -		Name(namespace.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(namespace).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the namespace and deletes it. Returns an error if one occurs.
    -func (c *namespaces) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("namespaces").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched namespace.
    -func (c *namespaces) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Namespace, err error) {
    -	result = &v1.Namespace{}
    -	err = c.client.Patch(pt).
    -		Resource("namespaces").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied namespace.
    -func (c *namespaces) Apply(ctx context.Context, namespace *corev1.NamespaceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Namespace, err error) {
    -	if namespace == nil {
    -		return nil, fmt.Errorf("namespace provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(namespace)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := namespace.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("namespace.Name must be provided to Apply")
    -	}
    -	result = &v1.Namespace{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("namespaces").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *namespaces) ApplyStatus(ctx context.Context, namespace *corev1.NamespaceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Namespace, err error) {
    -	if namespace == nil {
    -		return nil, fmt.Errorf("namespace provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(namespace)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := namespace.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("namespace.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.Namespace{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("namespaces").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go
    index be1116db154e..4f720fb92ebb 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go
    @@ -32,6 +32,6 @@ type NamespaceExpansion interface {
     // Finalize takes the representation of a namespace to update.  Returns the server's representation of the namespace, and an error, if it occurs.
     func (c *namespaces) Finalize(ctx context.Context, namespace *v1.Namespace, opts metav1.UpdateOptions) (result *v1.Namespace, err error) {
     	result = &v1.Namespace{}
    -	err = c.client.Put().Resource("namespaces").Name(namespace.Name).VersionedParams(&opts, scheme.ParameterCodec).SubResource("finalize").Body(namespace).Do(ctx).Into(result)
    +	err = c.GetClient().Put().Resource("namespaces").Name(namespace.Name).VersionedParams(&opts, scheme.ParameterCodec).SubResource("finalize").Body(namespace).Do(ctx).Into(result)
     	return
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go
    index d9725b2f95e9..1851b025ff0f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // NodesGetter has a method to return a NodeInterface.
    @@ -41,203 +38,38 @@ type NodesGetter interface {
     
     // NodeInterface has methods to work with Node resources.
     type NodeInterface interface {
    -	Create(ctx context.Context, node *v1.Node, opts metav1.CreateOptions) (*v1.Node, error)
    -	Update(ctx context.Context, node *v1.Node, opts metav1.UpdateOptions) (*v1.Node, error)
    -	UpdateStatus(ctx context.Context, node *v1.Node, opts metav1.UpdateOptions) (*v1.Node, error)
    +	Create(ctx context.Context, node *corev1.Node, opts metav1.CreateOptions) (*corev1.Node, error)
    +	Update(ctx context.Context, node *corev1.Node, opts metav1.UpdateOptions) (*corev1.Node, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, node *corev1.Node, opts metav1.UpdateOptions) (*corev1.Node, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Node, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.NodeList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.Node, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.NodeList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Node, err error)
    -	Apply(ctx context.Context, node *corev1.NodeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Node, err error)
    -	ApplyStatus(ctx context.Context, node *corev1.NodeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Node, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.Node, err error)
    +	Apply(ctx context.Context, node *applyconfigurationscorev1.NodeApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Node, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, node *applyconfigurationscorev1.NodeApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Node, err error)
     	NodeExpansion
     }
     
     // nodes implements NodeInterface
     type nodes struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*corev1.Node, *corev1.NodeList, *applyconfigurationscorev1.NodeApplyConfiguration]
     }
     
     // newNodes returns a Nodes
     func newNodes(c *CoreV1Client) *nodes {
     	return &nodes{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*corev1.Node, *corev1.NodeList, *applyconfigurationscorev1.NodeApplyConfiguration](
    +			"nodes",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *corev1.Node { return &corev1.Node{} },
    +			func() *corev1.NodeList { return &corev1.NodeList{} },
    +			gentype.PrefersProtobuf[*corev1.Node](),
    +		),
     	}
     }
    -
    -// Get takes name of the node, and returns the corresponding node object, and an error if there is any.
    -func (c *nodes) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Node, err error) {
    -	result = &v1.Node{}
    -	err = c.client.Get().
    -		Resource("nodes").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Nodes that match those selectors.
    -func (c *nodes) List(ctx context.Context, opts metav1.ListOptions) (result *v1.NodeList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.NodeList{}
    -	err = c.client.Get().
    -		Resource("nodes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested nodes.
    -func (c *nodes) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("nodes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a node and creates it.  Returns the server's representation of the node, and an error, if there is any.
    -func (c *nodes) Create(ctx context.Context, node *v1.Node, opts metav1.CreateOptions) (result *v1.Node, err error) {
    -	result = &v1.Node{}
    -	err = c.client.Post().
    -		Resource("nodes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(node).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a node and updates it. Returns the server's representation of the node, and an error, if there is any.
    -func (c *nodes) Update(ctx context.Context, node *v1.Node, opts metav1.UpdateOptions) (result *v1.Node, err error) {
    -	result = &v1.Node{}
    -	err = c.client.Put().
    -		Resource("nodes").
    -		Name(node.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(node).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *nodes) UpdateStatus(ctx context.Context, node *v1.Node, opts metav1.UpdateOptions) (result *v1.Node, err error) {
    -	result = &v1.Node{}
    -	err = c.client.Put().
    -		Resource("nodes").
    -		Name(node.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(node).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the node and deletes it. Returns an error if one occurs.
    -func (c *nodes) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("nodes").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *nodes) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("nodes").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched node.
    -func (c *nodes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Node, err error) {
    -	result = &v1.Node{}
    -	err = c.client.Patch(pt).
    -		Resource("nodes").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied node.
    -func (c *nodes) Apply(ctx context.Context, node *corev1.NodeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Node, err error) {
    -	if node == nil {
    -		return nil, fmt.Errorf("node provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(node)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := node.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("node.Name must be provided to Apply")
    -	}
    -	result = &v1.Node{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("nodes").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *nodes) ApplyStatus(ctx context.Context, node *corev1.NodeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Node, err error) {
    -	if node == nil {
    -		return nil, fmt.Errorf("node provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(node)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := node.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("node.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.Node{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("nodes").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go
    index bdf7bfed8d40..df86253b0ede 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go
    @@ -34,7 +34,7 @@ type NodeExpansion interface {
     // the node that the server returns, or an error.
     func (c *nodes) PatchStatus(ctx context.Context, nodeName string, data []byte) (*v1.Node, error) {
     	result := &v1.Node{}
    -	err := c.client.Patch(types.StrategicMergePatchType).
    +	err := c.GetClient().Patch(types.StrategicMergePatchType).
     		Resource("nodes").
     		Name(nodeName).
     		SubResource("status").
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go
    index a8e22959771f..077a1ba4f84a 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PersistentVolumesGetter has a method to return a PersistentVolumeInterface.
    @@ -41,203 +38,38 @@ type PersistentVolumesGetter interface {
     
     // PersistentVolumeInterface has methods to work with PersistentVolume resources.
     type PersistentVolumeInterface interface {
    -	Create(ctx context.Context, persistentVolume *v1.PersistentVolume, opts metav1.CreateOptions) (*v1.PersistentVolume, error)
    -	Update(ctx context.Context, persistentVolume *v1.PersistentVolume, opts metav1.UpdateOptions) (*v1.PersistentVolume, error)
    -	UpdateStatus(ctx context.Context, persistentVolume *v1.PersistentVolume, opts metav1.UpdateOptions) (*v1.PersistentVolume, error)
    +	Create(ctx context.Context, persistentVolume *corev1.PersistentVolume, opts metav1.CreateOptions) (*corev1.PersistentVolume, error)
    +	Update(ctx context.Context, persistentVolume *corev1.PersistentVolume, opts metav1.UpdateOptions) (*corev1.PersistentVolume, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, persistentVolume *corev1.PersistentVolume, opts metav1.UpdateOptions) (*corev1.PersistentVolume, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.PersistentVolume, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.PersistentVolumeList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.PersistentVolume, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.PersistentVolumeList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PersistentVolume, err error)
    -	Apply(ctx context.Context, persistentVolume *corev1.PersistentVolumeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolume, err error)
    -	ApplyStatus(ctx context.Context, persistentVolume *corev1.PersistentVolumeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolume, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.PersistentVolume, err error)
    +	Apply(ctx context.Context, persistentVolume *applyconfigurationscorev1.PersistentVolumeApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.PersistentVolume, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, persistentVolume *applyconfigurationscorev1.PersistentVolumeApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.PersistentVolume, err error)
     	PersistentVolumeExpansion
     }
     
     // persistentVolumes implements PersistentVolumeInterface
     type persistentVolumes struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*corev1.PersistentVolume, *corev1.PersistentVolumeList, *applyconfigurationscorev1.PersistentVolumeApplyConfiguration]
     }
     
     // newPersistentVolumes returns a PersistentVolumes
     func newPersistentVolumes(c *CoreV1Client) *persistentVolumes {
     	return &persistentVolumes{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*corev1.PersistentVolume, *corev1.PersistentVolumeList, *applyconfigurationscorev1.PersistentVolumeApplyConfiguration](
    +			"persistentvolumes",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *corev1.PersistentVolume { return &corev1.PersistentVolume{} },
    +			func() *corev1.PersistentVolumeList { return &corev1.PersistentVolumeList{} },
    +			gentype.PrefersProtobuf[*corev1.PersistentVolume](),
    +		),
     	}
     }
    -
    -// Get takes name of the persistentVolume, and returns the corresponding persistentVolume object, and an error if there is any.
    -func (c *persistentVolumes) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PersistentVolume, err error) {
    -	result = &v1.PersistentVolume{}
    -	err = c.client.Get().
    -		Resource("persistentvolumes").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PersistentVolumes that match those selectors.
    -func (c *persistentVolumes) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PersistentVolumeList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.PersistentVolumeList{}
    -	err = c.client.Get().
    -		Resource("persistentvolumes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested persistentVolumes.
    -func (c *persistentVolumes) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("persistentvolumes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a persistentVolume and creates it.  Returns the server's representation of the persistentVolume, and an error, if there is any.
    -func (c *persistentVolumes) Create(ctx context.Context, persistentVolume *v1.PersistentVolume, opts metav1.CreateOptions) (result *v1.PersistentVolume, err error) {
    -	result = &v1.PersistentVolume{}
    -	err = c.client.Post().
    -		Resource("persistentvolumes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(persistentVolume).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a persistentVolume and updates it. Returns the server's representation of the persistentVolume, and an error, if there is any.
    -func (c *persistentVolumes) Update(ctx context.Context, persistentVolume *v1.PersistentVolume, opts metav1.UpdateOptions) (result *v1.PersistentVolume, err error) {
    -	result = &v1.PersistentVolume{}
    -	err = c.client.Put().
    -		Resource("persistentvolumes").
    -		Name(persistentVolume.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(persistentVolume).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *persistentVolumes) UpdateStatus(ctx context.Context, persistentVolume *v1.PersistentVolume, opts metav1.UpdateOptions) (result *v1.PersistentVolume, err error) {
    -	result = &v1.PersistentVolume{}
    -	err = c.client.Put().
    -		Resource("persistentvolumes").
    -		Name(persistentVolume.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(persistentVolume).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the persistentVolume and deletes it. Returns an error if one occurs.
    -func (c *persistentVolumes) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("persistentvolumes").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *persistentVolumes) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("persistentvolumes").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched persistentVolume.
    -func (c *persistentVolumes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PersistentVolume, err error) {
    -	result = &v1.PersistentVolume{}
    -	err = c.client.Patch(pt).
    -		Resource("persistentvolumes").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied persistentVolume.
    -func (c *persistentVolumes) Apply(ctx context.Context, persistentVolume *corev1.PersistentVolumeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolume, err error) {
    -	if persistentVolume == nil {
    -		return nil, fmt.Errorf("persistentVolume provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(persistentVolume)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := persistentVolume.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("persistentVolume.Name must be provided to Apply")
    -	}
    -	result = &v1.PersistentVolume{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("persistentvolumes").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *persistentVolumes) ApplyStatus(ctx context.Context, persistentVolume *corev1.PersistentVolumeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolume, err error) {
    -	if persistentVolume == nil {
    -		return nil, fmt.Errorf("persistentVolume provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(persistentVolume)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := persistentVolume.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("persistentVolume.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.PersistentVolume{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("persistentvolumes").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go
    index 2e7f4fb44f6c..cbe75e812448 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PersistentVolumeClaimsGetter has a method to return a PersistentVolumeClaimInterface.
    @@ -41,216 +38,38 @@ type PersistentVolumeClaimsGetter interface {
     
     // PersistentVolumeClaimInterface has methods to work with PersistentVolumeClaim resources.
     type PersistentVolumeClaimInterface interface {
    -	Create(ctx context.Context, persistentVolumeClaim *v1.PersistentVolumeClaim, opts metav1.CreateOptions) (*v1.PersistentVolumeClaim, error)
    -	Update(ctx context.Context, persistentVolumeClaim *v1.PersistentVolumeClaim, opts metav1.UpdateOptions) (*v1.PersistentVolumeClaim, error)
    -	UpdateStatus(ctx context.Context, persistentVolumeClaim *v1.PersistentVolumeClaim, opts metav1.UpdateOptions) (*v1.PersistentVolumeClaim, error)
    +	Create(ctx context.Context, persistentVolumeClaim *corev1.PersistentVolumeClaim, opts metav1.CreateOptions) (*corev1.PersistentVolumeClaim, error)
    +	Update(ctx context.Context, persistentVolumeClaim *corev1.PersistentVolumeClaim, opts metav1.UpdateOptions) (*corev1.PersistentVolumeClaim, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, persistentVolumeClaim *corev1.PersistentVolumeClaim, opts metav1.UpdateOptions) (*corev1.PersistentVolumeClaim, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.PersistentVolumeClaim, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.PersistentVolumeClaimList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.PersistentVolumeClaim, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.PersistentVolumeClaimList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PersistentVolumeClaim, err error)
    -	Apply(ctx context.Context, persistentVolumeClaim *corev1.PersistentVolumeClaimApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolumeClaim, err error)
    -	ApplyStatus(ctx context.Context, persistentVolumeClaim *corev1.PersistentVolumeClaimApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolumeClaim, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.PersistentVolumeClaim, err error)
    +	Apply(ctx context.Context, persistentVolumeClaim *applyconfigurationscorev1.PersistentVolumeClaimApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.PersistentVolumeClaim, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, persistentVolumeClaim *applyconfigurationscorev1.PersistentVolumeClaimApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.PersistentVolumeClaim, err error)
     	PersistentVolumeClaimExpansion
     }
     
     // persistentVolumeClaims implements PersistentVolumeClaimInterface
     type persistentVolumeClaims struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.PersistentVolumeClaim, *corev1.PersistentVolumeClaimList, *applyconfigurationscorev1.PersistentVolumeClaimApplyConfiguration]
     }
     
     // newPersistentVolumeClaims returns a PersistentVolumeClaims
     func newPersistentVolumeClaims(c *CoreV1Client, namespace string) *persistentVolumeClaims {
     	return &persistentVolumeClaims{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.PersistentVolumeClaim, *corev1.PersistentVolumeClaimList, *applyconfigurationscorev1.PersistentVolumeClaimApplyConfiguration](
    +			"persistentvolumeclaims",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.PersistentVolumeClaim { return &corev1.PersistentVolumeClaim{} },
    +			func() *corev1.PersistentVolumeClaimList { return &corev1.PersistentVolumeClaimList{} },
    +			gentype.PrefersProtobuf[*corev1.PersistentVolumeClaim](),
    +		),
     	}
     }
    -
    -// Get takes name of the persistentVolumeClaim, and returns the corresponding persistentVolumeClaim object, and an error if there is any.
    -func (c *persistentVolumeClaims) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	result = &v1.PersistentVolumeClaim{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PersistentVolumeClaims that match those selectors.
    -func (c *persistentVolumeClaims) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PersistentVolumeClaimList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.PersistentVolumeClaimList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested persistentVolumeClaims.
    -func (c *persistentVolumeClaims) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a persistentVolumeClaim and creates it.  Returns the server's representation of the persistentVolumeClaim, and an error, if there is any.
    -func (c *persistentVolumeClaims) Create(ctx context.Context, persistentVolumeClaim *v1.PersistentVolumeClaim, opts metav1.CreateOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	result = &v1.PersistentVolumeClaim{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(persistentVolumeClaim).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a persistentVolumeClaim and updates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any.
    -func (c *persistentVolumeClaims) Update(ctx context.Context, persistentVolumeClaim *v1.PersistentVolumeClaim, opts metav1.UpdateOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	result = &v1.PersistentVolumeClaim{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		Name(persistentVolumeClaim.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(persistentVolumeClaim).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *persistentVolumeClaims) UpdateStatus(ctx context.Context, persistentVolumeClaim *v1.PersistentVolumeClaim, opts metav1.UpdateOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	result = &v1.PersistentVolumeClaim{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		Name(persistentVolumeClaim.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(persistentVolumeClaim).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the persistentVolumeClaim and deletes it. Returns an error if one occurs.
    -func (c *persistentVolumeClaims) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *persistentVolumeClaims) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched persistentVolumeClaim.
    -func (c *persistentVolumeClaims) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PersistentVolumeClaim, err error) {
    -	result = &v1.PersistentVolumeClaim{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied persistentVolumeClaim.
    -func (c *persistentVolumeClaims) Apply(ctx context.Context, persistentVolumeClaim *corev1.PersistentVolumeClaimApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	if persistentVolumeClaim == nil {
    -		return nil, fmt.Errorf("persistentVolumeClaim provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(persistentVolumeClaim)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := persistentVolumeClaim.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("persistentVolumeClaim.Name must be provided to Apply")
    -	}
    -	result = &v1.PersistentVolumeClaim{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *persistentVolumeClaims) ApplyStatus(ctx context.Context, persistentVolumeClaim *corev1.PersistentVolumeClaimApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PersistentVolumeClaim, err error) {
    -	if persistentVolumeClaim == nil {
    -		return nil, fmt.Errorf("persistentVolumeClaim provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(persistentVolumeClaim)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := persistentVolumeClaim.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("persistentVolumeClaim.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.PersistentVolumeClaim{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("persistentvolumeclaims").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go
    index 63122cf3fb47..072a559414d9 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PodsGetter has a method to return a PodInterface.
    @@ -41,117 +38,54 @@ type PodsGetter interface {
     
     // PodInterface has methods to work with Pod resources.
     type PodInterface interface {
    -	Create(ctx context.Context, pod *v1.Pod, opts metav1.CreateOptions) (*v1.Pod, error)
    -	Update(ctx context.Context, pod *v1.Pod, opts metav1.UpdateOptions) (*v1.Pod, error)
    -	UpdateStatus(ctx context.Context, pod *v1.Pod, opts metav1.UpdateOptions) (*v1.Pod, error)
    +	Create(ctx context.Context, pod *corev1.Pod, opts metav1.CreateOptions) (*corev1.Pod, error)
    +	Update(ctx context.Context, pod *corev1.Pod, opts metav1.UpdateOptions) (*corev1.Pod, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, pod *corev1.Pod, opts metav1.UpdateOptions) (*corev1.Pod, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Pod, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.PodList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.Pod, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.PodList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Pod, err error)
    -	Apply(ctx context.Context, pod *corev1.PodApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Pod, err error)
    -	ApplyStatus(ctx context.Context, pod *corev1.PodApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Pod, err error)
    -	UpdateEphemeralContainers(ctx context.Context, podName string, pod *v1.Pod, opts metav1.UpdateOptions) (*v1.Pod, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.Pod, err error)
    +	Apply(ctx context.Context, pod *applyconfigurationscorev1.PodApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Pod, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, pod *applyconfigurationscorev1.PodApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Pod, err error)
    +	UpdateEphemeralContainers(ctx context.Context, podName string, pod *corev1.Pod, opts metav1.UpdateOptions) (*corev1.Pod, error)
    +	UpdateResize(ctx context.Context, podName string, pod *corev1.Pod, opts metav1.UpdateOptions) (*corev1.Pod, error)
     
     	PodExpansion
     }
     
     // pods implements PodInterface
     type pods struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.Pod, *corev1.PodList, *applyconfigurationscorev1.PodApplyConfiguration]
     }
     
     // newPods returns a Pods
     func newPods(c *CoreV1Client, namespace string) *pods {
     	return &pods{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.Pod, *corev1.PodList, *applyconfigurationscorev1.PodApplyConfiguration](
    +			"pods",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.Pod { return &corev1.Pod{} },
    +			func() *corev1.PodList { return &corev1.PodList{} },
    +			gentype.PrefersProtobuf[*corev1.Pod](),
    +		),
     	}
     }
     
    -// Get takes name of the pod, and returns the corresponding pod object, and an error if there is any.
    -func (c *pods) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Pod, err error) {
    -	result = &v1.Pod{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("pods").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Pods that match those selectors.
    -func (c *pods) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PodList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.PodList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("pods").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested pods.
    -func (c *pods) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("pods").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a pod and creates it.  Returns the server's representation of the pod, and an error, if there is any.
    -func (c *pods) Create(ctx context.Context, pod *v1.Pod, opts metav1.CreateOptions) (result *v1.Pod, err error) {
    -	result = &v1.Pod{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("pods").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(pod).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any.
    -func (c *pods) Update(ctx context.Context, pod *v1.Pod, opts metav1.UpdateOptions) (result *v1.Pod, err error) {
    -	result = &v1.Pod{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("pods").
    -		Name(pod.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(pod).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *pods) UpdateStatus(ctx context.Context, pod *v1.Pod, opts metav1.UpdateOptions) (result *v1.Pod, err error) {
    -	result = &v1.Pod{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    +// UpdateEphemeralContainers takes the top resource name and the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any.
    +func (c *pods) UpdateEphemeralContainers(ctx context.Context, podName string, pod *corev1.Pod, opts metav1.UpdateOptions) (result *corev1.Pod, err error) {
    +	result = &corev1.Pod{}
    +	err = c.GetClient().Put().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("pods").
    -		Name(pod.Name).
    -		SubResource("status").
    +		Name(podName).
    +		SubResource("ephemeralcontainers").
     		VersionedParams(&opts, scheme.ParameterCodec).
     		Body(pod).
     		Do(ctx).
    @@ -159,112 +93,15 @@ func (c *pods) UpdateStatus(ctx context.Context, pod *v1.Pod, opts metav1.Update
     	return
     }
     
    -// Delete takes name of the pod and deletes it. Returns an error if one occurs.
    -func (c *pods) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("pods").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *pods) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("pods").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched pod.
    -func (c *pods) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Pod, err error) {
    -	result = &v1.Pod{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("pods").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied pod.
    -func (c *pods) Apply(ctx context.Context, pod *corev1.PodApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Pod, err error) {
    -	if pod == nil {
    -		return nil, fmt.Errorf("pod provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(pod)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := pod.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("pod.Name must be provided to Apply")
    -	}
    -	result = &v1.Pod{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("pods").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *pods) ApplyStatus(ctx context.Context, pod *corev1.PodApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Pod, err error) {
    -	if pod == nil {
    -		return nil, fmt.Errorf("pod provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(pod)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := pod.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("pod.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.Pod{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("pods").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateEphemeralContainers takes the top resource name and the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any.
    -func (c *pods) UpdateEphemeralContainers(ctx context.Context, podName string, pod *v1.Pod, opts metav1.UpdateOptions) (result *v1.Pod, err error) {
    -	result = &v1.Pod{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    +// UpdateResize takes the top resource name and the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any.
    +func (c *pods) UpdateResize(ctx context.Context, podName string, pod *corev1.Pod, opts metav1.UpdateOptions) (result *corev1.Pod, err error) {
    +	result = &corev1.Pod{}
    +	err = c.GetClient().Put().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("pods").
     		Name(podName).
    -		SubResource("ephemeralcontainers").
    +		SubResource("resize").
     		VersionedParams(&opts, scheme.ParameterCodec).
     		Body(pod).
     		Do(ctx).
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go
    index 8b6e0e932f92..a2d4d70d46f0 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go
    @@ -47,33 +47,33 @@ type PodExpansion interface {
     
     // Bind applies the provided binding to the named pod in the current namespace (binding.Namespace is ignored).
     func (c *pods) Bind(ctx context.Context, binding *v1.Binding, opts metav1.CreateOptions) error {
    -	return c.client.Post().Namespace(c.ns).Resource("pods").Name(binding.Name).VersionedParams(&opts, scheme.ParameterCodec).SubResource("binding").Body(binding).Do(ctx).Error()
    +	return c.GetClient().Post().Namespace(c.GetNamespace()).Resource("pods").Name(binding.Name).VersionedParams(&opts, scheme.ParameterCodec).SubResource("binding").Body(binding).Do(ctx).Error()
     }
     
     // Evict submits a policy/v1beta1 Eviction request to the pod's eviction subresource.
     // Equivalent to calling EvictV1beta1.
     // Deprecated: Use EvictV1() (supported in 1.22+) or EvictV1beta1().
     func (c *pods) Evict(ctx context.Context, eviction *policyv1beta1.Eviction) error {
    -	return c.client.Post().Namespace(c.ns).Resource("pods").Name(eviction.Name).SubResource("eviction").Body(eviction).Do(ctx).Error()
    +	return c.GetClient().Post().Namespace(c.GetNamespace()).Resource("pods").Name(eviction.Name).SubResource("eviction").Body(eviction).Do(ctx).Error()
     }
     
     func (c *pods) EvictV1beta1(ctx context.Context, eviction *policyv1beta1.Eviction) error {
    -	return c.client.Post().Namespace(c.ns).Resource("pods").Name(eviction.Name).SubResource("eviction").Body(eviction).Do(ctx).Error()
    +	return c.GetClient().Post().Namespace(c.GetNamespace()).Resource("pods").Name(eviction.Name).SubResource("eviction").Body(eviction).Do(ctx).Error()
     }
     
     func (c *pods) EvictV1(ctx context.Context, eviction *policyv1.Eviction) error {
    -	return c.client.Post().Namespace(c.ns).Resource("pods").Name(eviction.Name).SubResource("eviction").Body(eviction).Do(ctx).Error()
    +	return c.GetClient().Post().Namespace(c.GetNamespace()).Resource("pods").Name(eviction.Name).SubResource("eviction").Body(eviction).Do(ctx).Error()
     }
     
     // Get constructs a request for getting the logs for a pod
     func (c *pods) GetLogs(name string, opts *v1.PodLogOptions) *restclient.Request {
    -	return c.client.Get().Namespace(c.ns).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, scheme.ParameterCodec)
    +	return c.GetClient().Get().Namespace(c.GetNamespace()).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, scheme.ParameterCodec)
     }
     
     // ProxyGet returns a response of the pod by calling it through the proxy.
     func (c *pods) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
    -	request := c.client.Get().
    -		Namespace(c.ns).
    +	request := c.GetClient().Get().
    +		Namespace(c.GetNamespace()).
     		Resource("pods").
     		SubResource("proxy").
     		Name(net.JoinSchemeNamePort(scheme, name, port)).
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go
    index ff90fc0e629d..b0cfa1bc14c3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PodTemplatesGetter has a method to return a PodTemplateInterface.
    @@ -41,168 +38,34 @@ type PodTemplatesGetter interface {
     
     // PodTemplateInterface has methods to work with PodTemplate resources.
     type PodTemplateInterface interface {
    -	Create(ctx context.Context, podTemplate *v1.PodTemplate, opts metav1.CreateOptions) (*v1.PodTemplate, error)
    -	Update(ctx context.Context, podTemplate *v1.PodTemplate, opts metav1.UpdateOptions) (*v1.PodTemplate, error)
    +	Create(ctx context.Context, podTemplate *corev1.PodTemplate, opts metav1.CreateOptions) (*corev1.PodTemplate, error)
    +	Update(ctx context.Context, podTemplate *corev1.PodTemplate, opts metav1.UpdateOptions) (*corev1.PodTemplate, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.PodTemplate, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.PodTemplateList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.PodTemplate, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.PodTemplateList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PodTemplate, err error)
    -	Apply(ctx context.Context, podTemplate *corev1.PodTemplateApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PodTemplate, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.PodTemplate, err error)
    +	Apply(ctx context.Context, podTemplate *applyconfigurationscorev1.PodTemplateApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.PodTemplate, err error)
     	PodTemplateExpansion
     }
     
     // podTemplates implements PodTemplateInterface
     type podTemplates struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.PodTemplate, *corev1.PodTemplateList, *applyconfigurationscorev1.PodTemplateApplyConfiguration]
     }
     
     // newPodTemplates returns a PodTemplates
     func newPodTemplates(c *CoreV1Client, namespace string) *podTemplates {
     	return &podTemplates{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.PodTemplate, *corev1.PodTemplateList, *applyconfigurationscorev1.PodTemplateApplyConfiguration](
    +			"podtemplates",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.PodTemplate { return &corev1.PodTemplate{} },
    +			func() *corev1.PodTemplateList { return &corev1.PodTemplateList{} },
    +			gentype.PrefersProtobuf[*corev1.PodTemplate](),
    +		),
     	}
     }
    -
    -// Get takes name of the podTemplate, and returns the corresponding podTemplate object, and an error if there is any.
    -func (c *podTemplates) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PodTemplate, err error) {
    -	result = &v1.PodTemplate{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("podtemplates").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PodTemplates that match those selectors.
    -func (c *podTemplates) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PodTemplateList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.PodTemplateList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("podtemplates").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested podTemplates.
    -func (c *podTemplates) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("podtemplates").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a podTemplate and creates it.  Returns the server's representation of the podTemplate, and an error, if there is any.
    -func (c *podTemplates) Create(ctx context.Context, podTemplate *v1.PodTemplate, opts metav1.CreateOptions) (result *v1.PodTemplate, err error) {
    -	result = &v1.PodTemplate{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("podtemplates").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podTemplate).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a podTemplate and updates it. Returns the server's representation of the podTemplate, and an error, if there is any.
    -func (c *podTemplates) Update(ctx context.Context, podTemplate *v1.PodTemplate, opts metav1.UpdateOptions) (result *v1.PodTemplate, err error) {
    -	result = &v1.PodTemplate{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("podtemplates").
    -		Name(podTemplate.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podTemplate).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the podTemplate and deletes it. Returns an error if one occurs.
    -func (c *podTemplates) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("podtemplates").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *podTemplates) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("podtemplates").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched podTemplate.
    -func (c *podTemplates) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PodTemplate, err error) {
    -	result = &v1.PodTemplate{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("podtemplates").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied podTemplate.
    -func (c *podTemplates) Apply(ctx context.Context, podTemplate *corev1.PodTemplateApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PodTemplate, err error) {
    -	if podTemplate == nil {
    -		return nil, fmt.Errorf("podTemplate provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(podTemplate)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podTemplate.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podTemplate.Name must be provided to Apply")
    -	}
    -	result = &v1.PodTemplate{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("podtemplates").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go
    index 49c75d967bb5..f8a7c928585c 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go
    @@ -19,19 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
     	autoscalingv1 "k8s.io/api/autoscaling/v1"
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ReplicationControllersGetter has a method to return a ReplicationControllerInterface.
    @@ -42,17 +39,19 @@ type ReplicationControllersGetter interface {
     
     // ReplicationControllerInterface has methods to work with ReplicationController resources.
     type ReplicationControllerInterface interface {
    -	Create(ctx context.Context, replicationController *v1.ReplicationController, opts metav1.CreateOptions) (*v1.ReplicationController, error)
    -	Update(ctx context.Context, replicationController *v1.ReplicationController, opts metav1.UpdateOptions) (*v1.ReplicationController, error)
    -	UpdateStatus(ctx context.Context, replicationController *v1.ReplicationController, opts metav1.UpdateOptions) (*v1.ReplicationController, error)
    +	Create(ctx context.Context, replicationController *corev1.ReplicationController, opts metav1.CreateOptions) (*corev1.ReplicationController, error)
    +	Update(ctx context.Context, replicationController *corev1.ReplicationController, opts metav1.UpdateOptions) (*corev1.ReplicationController, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, replicationController *corev1.ReplicationController, opts metav1.UpdateOptions) (*corev1.ReplicationController, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ReplicationController, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ReplicationControllerList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.ReplicationController, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.ReplicationControllerList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ReplicationController, err error)
    -	Apply(ctx context.Context, replicationController *corev1.ReplicationControllerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicationController, err error)
    -	ApplyStatus(ctx context.Context, replicationController *corev1.ReplicationControllerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicationController, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.ReplicationController, err error)
    +	Apply(ctx context.Context, replicationController *applyconfigurationscorev1.ReplicationControllerApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.ReplicationController, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, replicationController *applyconfigurationscorev1.ReplicationControllerApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.ReplicationController, err error)
     	GetScale(ctx context.Context, replicationControllerName string, options metav1.GetOptions) (*autoscalingv1.Scale, error)
     	UpdateScale(ctx context.Context, replicationControllerName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (*autoscalingv1.Scale, error)
     
    @@ -61,209 +60,30 @@ type ReplicationControllerInterface interface {
     
     // replicationControllers implements ReplicationControllerInterface
     type replicationControllers struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.ReplicationController, *corev1.ReplicationControllerList, *applyconfigurationscorev1.ReplicationControllerApplyConfiguration]
     }
     
     // newReplicationControllers returns a ReplicationControllers
     func newReplicationControllers(c *CoreV1Client, namespace string) *replicationControllers {
     	return &replicationControllers{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.ReplicationController, *corev1.ReplicationControllerList, *applyconfigurationscorev1.ReplicationControllerApplyConfiguration](
    +			"replicationcontrollers",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.ReplicationController { return &corev1.ReplicationController{} },
    +			func() *corev1.ReplicationControllerList { return &corev1.ReplicationControllerList{} },
    +			gentype.PrefersProtobuf[*corev1.ReplicationController](),
    +		),
     	}
     }
     
    -// Get takes name of the replicationController, and returns the corresponding replicationController object, and an error if there is any.
    -func (c *replicationControllers) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ReplicationController, err error) {
    -	result = &v1.ReplicationController{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ReplicationControllers that match those selectors.
    -func (c *replicationControllers) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ReplicationControllerList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ReplicationControllerList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested replicationControllers.
    -func (c *replicationControllers) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a replicationController and creates it.  Returns the server's representation of the replicationController, and an error, if there is any.
    -func (c *replicationControllers) Create(ctx context.Context, replicationController *v1.ReplicationController, opts metav1.CreateOptions) (result *v1.ReplicationController, err error) {
    -	result = &v1.ReplicationController{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicationController).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a replicationController and updates it. Returns the server's representation of the replicationController, and an error, if there is any.
    -func (c *replicationControllers) Update(ctx context.Context, replicationController *v1.ReplicationController, opts metav1.UpdateOptions) (result *v1.ReplicationController, err error) {
    -	result = &v1.ReplicationController{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		Name(replicationController.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicationController).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *replicationControllers) UpdateStatus(ctx context.Context, replicationController *v1.ReplicationController, opts metav1.UpdateOptions) (result *v1.ReplicationController, err error) {
    -	result = &v1.ReplicationController{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		Name(replicationController.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicationController).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the replicationController and deletes it. Returns an error if one occurs.
    -func (c *replicationControllers) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *replicationControllers) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched replicationController.
    -func (c *replicationControllers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ReplicationController, err error) {
    -	result = &v1.ReplicationController{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied replicationController.
    -func (c *replicationControllers) Apply(ctx context.Context, replicationController *corev1.ReplicationControllerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicationController, err error) {
    -	if replicationController == nil {
    -		return nil, fmt.Errorf("replicationController provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(replicationController)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicationController.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicationController.Name must be provided to Apply")
    -	}
    -	result = &v1.ReplicationController{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *replicationControllers) ApplyStatus(ctx context.Context, replicationController *corev1.ReplicationControllerApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ReplicationController, err error) {
    -	if replicationController == nil {
    -		return nil, fmt.Errorf("replicationController provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(replicationController)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := replicationController.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicationController.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.ReplicationController{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("replicationcontrollers").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
     // GetScale takes name of the replicationController, and returns the corresponding autoscalingv1.Scale object, and an error if there is any.
     func (c *replicationControllers) GetScale(ctx context.Context, replicationControllerName string, options metav1.GetOptions) (result *autoscalingv1.Scale, err error) {
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    +	err = c.GetClient().Get().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("replicationcontrollers").
     		Name(replicationControllerName).
     		SubResource("scale").
    @@ -276,8 +96,9 @@ func (c *replicationControllers) GetScale(ctx context.Context, replicationContro
     // UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
     func (c *replicationControllers) UpdateScale(ctx context.Context, replicationControllerName string, scale *autoscalingv1.Scale, opts metav1.UpdateOptions) (result *autoscalingv1.Scale, err error) {
     	result = &autoscalingv1.Scale{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    +	err = c.GetClient().Put().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("replicationcontrollers").
     		Name(replicationControllerName).
     		SubResource("scale").
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go
    index 8444d164edda..a0435accc85d 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ResourceQuotasGetter has a method to return a ResourceQuotaInterface.
    @@ -41,216 +38,38 @@ type ResourceQuotasGetter interface {
     
     // ResourceQuotaInterface has methods to work with ResourceQuota resources.
     type ResourceQuotaInterface interface {
    -	Create(ctx context.Context, resourceQuota *v1.ResourceQuota, opts metav1.CreateOptions) (*v1.ResourceQuota, error)
    -	Update(ctx context.Context, resourceQuota *v1.ResourceQuota, opts metav1.UpdateOptions) (*v1.ResourceQuota, error)
    -	UpdateStatus(ctx context.Context, resourceQuota *v1.ResourceQuota, opts metav1.UpdateOptions) (*v1.ResourceQuota, error)
    +	Create(ctx context.Context, resourceQuota *corev1.ResourceQuota, opts metav1.CreateOptions) (*corev1.ResourceQuota, error)
    +	Update(ctx context.Context, resourceQuota *corev1.ResourceQuota, opts metav1.UpdateOptions) (*corev1.ResourceQuota, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, resourceQuota *corev1.ResourceQuota, opts metav1.UpdateOptions) (*corev1.ResourceQuota, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ResourceQuota, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ResourceQuotaList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.ResourceQuota, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.ResourceQuotaList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ResourceQuota, err error)
    -	Apply(ctx context.Context, resourceQuota *corev1.ResourceQuotaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ResourceQuota, err error)
    -	ApplyStatus(ctx context.Context, resourceQuota *corev1.ResourceQuotaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ResourceQuota, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.ResourceQuota, err error)
    +	Apply(ctx context.Context, resourceQuota *applyconfigurationscorev1.ResourceQuotaApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.ResourceQuota, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, resourceQuota *applyconfigurationscorev1.ResourceQuotaApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.ResourceQuota, err error)
     	ResourceQuotaExpansion
     }
     
     // resourceQuotas implements ResourceQuotaInterface
     type resourceQuotas struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.ResourceQuota, *corev1.ResourceQuotaList, *applyconfigurationscorev1.ResourceQuotaApplyConfiguration]
     }
     
     // newResourceQuotas returns a ResourceQuotas
     func newResourceQuotas(c *CoreV1Client, namespace string) *resourceQuotas {
     	return &resourceQuotas{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.ResourceQuota, *corev1.ResourceQuotaList, *applyconfigurationscorev1.ResourceQuotaApplyConfiguration](
    +			"resourcequotas",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.ResourceQuota { return &corev1.ResourceQuota{} },
    +			func() *corev1.ResourceQuotaList { return &corev1.ResourceQuotaList{} },
    +			gentype.PrefersProtobuf[*corev1.ResourceQuota](),
    +		),
     	}
     }
    -
    -// Get takes name of the resourceQuota, and returns the corresponding resourceQuota object, and an error if there is any.
    -func (c *resourceQuotas) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ResourceQuota, err error) {
    -	result = &v1.ResourceQuota{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ResourceQuotas that match those selectors.
    -func (c *resourceQuotas) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ResourceQuotaList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ResourceQuotaList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested resourceQuotas.
    -func (c *resourceQuotas) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a resourceQuota and creates it.  Returns the server's representation of the resourceQuota, and an error, if there is any.
    -func (c *resourceQuotas) Create(ctx context.Context, resourceQuota *v1.ResourceQuota, opts metav1.CreateOptions) (result *v1.ResourceQuota, err error) {
    -	result = &v1.ResourceQuota{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(resourceQuota).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a resourceQuota and updates it. Returns the server's representation of the resourceQuota, and an error, if there is any.
    -func (c *resourceQuotas) Update(ctx context.Context, resourceQuota *v1.ResourceQuota, opts metav1.UpdateOptions) (result *v1.ResourceQuota, err error) {
    -	result = &v1.ResourceQuota{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		Name(resourceQuota.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(resourceQuota).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *resourceQuotas) UpdateStatus(ctx context.Context, resourceQuota *v1.ResourceQuota, opts metav1.UpdateOptions) (result *v1.ResourceQuota, err error) {
    -	result = &v1.ResourceQuota{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		Name(resourceQuota.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(resourceQuota).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the resourceQuota and deletes it. Returns an error if one occurs.
    -func (c *resourceQuotas) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *resourceQuotas) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched resourceQuota.
    -func (c *resourceQuotas) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ResourceQuota, err error) {
    -	result = &v1.ResourceQuota{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied resourceQuota.
    -func (c *resourceQuotas) Apply(ctx context.Context, resourceQuota *corev1.ResourceQuotaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ResourceQuota, err error) {
    -	if resourceQuota == nil {
    -		return nil, fmt.Errorf("resourceQuota provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(resourceQuota)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := resourceQuota.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceQuota.Name must be provided to Apply")
    -	}
    -	result = &v1.ResourceQuota{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *resourceQuotas) ApplyStatus(ctx context.Context, resourceQuota *corev1.ResourceQuotaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ResourceQuota, err error) {
    -	if resourceQuota == nil {
    -		return nil, fmt.Errorf("resourceQuota provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(resourceQuota)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := resourceQuota.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceQuota.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.ResourceQuota{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("resourcequotas").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go
    index 4aba330381db..a7ab56a27480 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // SecretsGetter has a method to return a SecretInterface.
    @@ -41,168 +38,34 @@ type SecretsGetter interface {
     
     // SecretInterface has methods to work with Secret resources.
     type SecretInterface interface {
    -	Create(ctx context.Context, secret *v1.Secret, opts metav1.CreateOptions) (*v1.Secret, error)
    -	Update(ctx context.Context, secret *v1.Secret, opts metav1.UpdateOptions) (*v1.Secret, error)
    +	Create(ctx context.Context, secret *corev1.Secret, opts metav1.CreateOptions) (*corev1.Secret, error)
    +	Update(ctx context.Context, secret *corev1.Secret, opts metav1.UpdateOptions) (*corev1.Secret, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Secret, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.SecretList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.Secret, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.SecretList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Secret, err error)
    -	Apply(ctx context.Context, secret *corev1.SecretApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Secret, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.Secret, err error)
    +	Apply(ctx context.Context, secret *applyconfigurationscorev1.SecretApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Secret, err error)
     	SecretExpansion
     }
     
     // secrets implements SecretInterface
     type secrets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.Secret, *corev1.SecretList, *applyconfigurationscorev1.SecretApplyConfiguration]
     }
     
     // newSecrets returns a Secrets
     func newSecrets(c *CoreV1Client, namespace string) *secrets {
     	return &secrets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.Secret, *corev1.SecretList, *applyconfigurationscorev1.SecretApplyConfiguration](
    +			"secrets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.Secret { return &corev1.Secret{} },
    +			func() *corev1.SecretList { return &corev1.SecretList{} },
    +			gentype.PrefersProtobuf[*corev1.Secret](),
    +		),
     	}
     }
    -
    -// Get takes name of the secret, and returns the corresponding secret object, and an error if there is any.
    -func (c *secrets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Secret, err error) {
    -	result = &v1.Secret{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("secrets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Secrets that match those selectors.
    -func (c *secrets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.SecretList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.SecretList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("secrets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested secrets.
    -func (c *secrets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("secrets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a secret and creates it.  Returns the server's representation of the secret, and an error, if there is any.
    -func (c *secrets) Create(ctx context.Context, secret *v1.Secret, opts metav1.CreateOptions) (result *v1.Secret, err error) {
    -	result = &v1.Secret{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("secrets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(secret).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a secret and updates it. Returns the server's representation of the secret, and an error, if there is any.
    -func (c *secrets) Update(ctx context.Context, secret *v1.Secret, opts metav1.UpdateOptions) (result *v1.Secret, err error) {
    -	result = &v1.Secret{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("secrets").
    -		Name(secret.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(secret).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the secret and deletes it. Returns an error if one occurs.
    -func (c *secrets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("secrets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *secrets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("secrets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched secret.
    -func (c *secrets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Secret, err error) {
    -	result = &v1.Secret{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("secrets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied secret.
    -func (c *secrets) Apply(ctx context.Context, secret *corev1.SecretApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Secret, err error) {
    -	if secret == nil {
    -		return nil, fmt.Errorf("secret provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(secret)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := secret.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("secret.Name must be provided to Apply")
    -	}
    -	result = &v1.Secret{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("secrets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go
    index 3fe22ba44458..f145a137cbf1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ServicesGetter has a method to return a ServiceInterface.
    @@ -41,199 +38,37 @@ type ServicesGetter interface {
     
     // ServiceInterface has methods to work with Service resources.
     type ServiceInterface interface {
    -	Create(ctx context.Context, service *v1.Service, opts metav1.CreateOptions) (*v1.Service, error)
    -	Update(ctx context.Context, service *v1.Service, opts metav1.UpdateOptions) (*v1.Service, error)
    -	UpdateStatus(ctx context.Context, service *v1.Service, opts metav1.UpdateOptions) (*v1.Service, error)
    +	Create(ctx context.Context, service *corev1.Service, opts metav1.CreateOptions) (*corev1.Service, error)
    +	Update(ctx context.Context, service *corev1.Service, opts metav1.UpdateOptions) (*corev1.Service, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, service *corev1.Service, opts metav1.UpdateOptions) (*corev1.Service, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Service, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ServiceList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.Service, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.ServiceList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Service, err error)
    -	Apply(ctx context.Context, service *corev1.ServiceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Service, err error)
    -	ApplyStatus(ctx context.Context, service *corev1.ServiceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Service, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.Service, err error)
    +	Apply(ctx context.Context, service *applyconfigurationscorev1.ServiceApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Service, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, service *applyconfigurationscorev1.ServiceApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.Service, err error)
     	ServiceExpansion
     }
     
     // services implements ServiceInterface
     type services struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.Service, *corev1.ServiceList, *applyconfigurationscorev1.ServiceApplyConfiguration]
     }
     
     // newServices returns a Services
     func newServices(c *CoreV1Client, namespace string) *services {
     	return &services{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.Service, *corev1.ServiceList, *applyconfigurationscorev1.ServiceApplyConfiguration](
    +			"services",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.Service { return &corev1.Service{} },
    +			func() *corev1.ServiceList { return &corev1.ServiceList{} },
    +			gentype.PrefersProtobuf[*corev1.Service](),
    +		),
     	}
     }
    -
    -// Get takes name of the service, and returns the corresponding service object, and an error if there is any.
    -func (c *services) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Service, err error) {
    -	result = &v1.Service{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("services").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Services that match those selectors.
    -func (c *services) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ServiceList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ServiceList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("services").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested services.
    -func (c *services) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("services").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a service and creates it.  Returns the server's representation of the service, and an error, if there is any.
    -func (c *services) Create(ctx context.Context, service *v1.Service, opts metav1.CreateOptions) (result *v1.Service, err error) {
    -	result = &v1.Service{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("services").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(service).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a service and updates it. Returns the server's representation of the service, and an error, if there is any.
    -func (c *services) Update(ctx context.Context, service *v1.Service, opts metav1.UpdateOptions) (result *v1.Service, err error) {
    -	result = &v1.Service{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("services").
    -		Name(service.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(service).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *services) UpdateStatus(ctx context.Context, service *v1.Service, opts metav1.UpdateOptions) (result *v1.Service, err error) {
    -	result = &v1.Service{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("services").
    -		Name(service.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(service).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the service and deletes it. Returns an error if one occurs.
    -func (c *services) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("services").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched service.
    -func (c *services) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Service, err error) {
    -	result = &v1.Service{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("services").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied service.
    -func (c *services) Apply(ctx context.Context, service *corev1.ServiceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Service, err error) {
    -	if service == nil {
    -		return nil, fmt.Errorf("service provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(service)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := service.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("service.Name must be provided to Apply")
    -	}
    -	result = &v1.Service{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("services").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *services) ApplyStatus(ctx context.Context, service *corev1.ServiceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Service, err error) {
    -	if service == nil {
    -		return nil, fmt.Errorf("service provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(service)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := service.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("service.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.Service{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("services").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go
    index 4937fd1a394e..9a6f7813875b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go
    @@ -28,8 +28,8 @@ type ServiceExpansion interface {
     
     // ProxyGet returns a response of the service by calling it through the proxy.
     func (c *services) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
    -	request := c.client.Get().
    -		Namespace(c.ns).
    +	request := c.GetClient().Get().
    +		Namespace(c.GetNamespace()).
     		Resource("services").
     		SubResource("proxy").
     		Name(net.JoinSchemeNamePort(scheme, name, port)).
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go
    index bdf589b96084..8458b6d9b5b2 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go
    @@ -19,19 +19,16 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
     	authenticationv1 "k8s.io/api/authentication/v1"
    -	v1 "k8s.io/api/core/v1"
    +	corev1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	corev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	applyconfigurationscorev1 "k8s.io/client-go/applyconfigurations/core/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ServiceAccountsGetter has a method to return a ServiceAccountInterface.
    @@ -42,15 +39,15 @@ type ServiceAccountsGetter interface {
     
     // ServiceAccountInterface has methods to work with ServiceAccount resources.
     type ServiceAccountInterface interface {
    -	Create(ctx context.Context, serviceAccount *v1.ServiceAccount, opts metav1.CreateOptions) (*v1.ServiceAccount, error)
    -	Update(ctx context.Context, serviceAccount *v1.ServiceAccount, opts metav1.UpdateOptions) (*v1.ServiceAccount, error)
    +	Create(ctx context.Context, serviceAccount *corev1.ServiceAccount, opts metav1.CreateOptions) (*corev1.ServiceAccount, error)
    +	Update(ctx context.Context, serviceAccount *corev1.ServiceAccount, opts metav1.UpdateOptions) (*corev1.ServiceAccount, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ServiceAccount, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ServiceAccountList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*corev1.ServiceAccount, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*corev1.ServiceAccountList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ServiceAccount, err error)
    -	Apply(ctx context.Context, serviceAccount *corev1.ServiceAccountApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ServiceAccount, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *corev1.ServiceAccount, err error)
    +	Apply(ctx context.Context, serviceAccount *applyconfigurationscorev1.ServiceAccountApplyConfiguration, opts metav1.ApplyOptions) (result *corev1.ServiceAccount, err error)
     	CreateToken(ctx context.Context, serviceAccountName string, tokenRequest *authenticationv1.TokenRequest, opts metav1.CreateOptions) (*authenticationv1.TokenRequest, error)
     
     	ServiceAccountExpansion
    @@ -58,163 +55,30 @@ type ServiceAccountInterface interface {
     
     // serviceAccounts implements ServiceAccountInterface
     type serviceAccounts struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*corev1.ServiceAccount, *corev1.ServiceAccountList, *applyconfigurationscorev1.ServiceAccountApplyConfiguration]
     }
     
     // newServiceAccounts returns a ServiceAccounts
     func newServiceAccounts(c *CoreV1Client, namespace string) *serviceAccounts {
     	return &serviceAccounts{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*corev1.ServiceAccount, *corev1.ServiceAccountList, *applyconfigurationscorev1.ServiceAccountApplyConfiguration](
    +			"serviceaccounts",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *corev1.ServiceAccount { return &corev1.ServiceAccount{} },
    +			func() *corev1.ServiceAccountList { return &corev1.ServiceAccountList{} },
    +			gentype.PrefersProtobuf[*corev1.ServiceAccount](),
    +		),
     	}
     }
     
    -// Get takes name of the serviceAccount, and returns the corresponding serviceAccount object, and an error if there is any.
    -func (c *serviceAccounts) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ServiceAccount, err error) {
    -	result = &v1.ServiceAccount{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("serviceaccounts").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ServiceAccounts that match those selectors.
    -func (c *serviceAccounts) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ServiceAccountList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ServiceAccountList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("serviceaccounts").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested serviceAccounts.
    -func (c *serviceAccounts) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("serviceaccounts").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a serviceAccount and creates it.  Returns the server's representation of the serviceAccount, and an error, if there is any.
    -func (c *serviceAccounts) Create(ctx context.Context, serviceAccount *v1.ServiceAccount, opts metav1.CreateOptions) (result *v1.ServiceAccount, err error) {
    -	result = &v1.ServiceAccount{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("serviceaccounts").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(serviceAccount).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a serviceAccount and updates it. Returns the server's representation of the serviceAccount, and an error, if there is any.
    -func (c *serviceAccounts) Update(ctx context.Context, serviceAccount *v1.ServiceAccount, opts metav1.UpdateOptions) (result *v1.ServiceAccount, err error) {
    -	result = &v1.ServiceAccount{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("serviceaccounts").
    -		Name(serviceAccount.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(serviceAccount).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the serviceAccount and deletes it. Returns an error if one occurs.
    -func (c *serviceAccounts) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("serviceaccounts").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *serviceAccounts) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("serviceaccounts").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched serviceAccount.
    -func (c *serviceAccounts) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ServiceAccount, err error) {
    -	result = &v1.ServiceAccount{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("serviceaccounts").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied serviceAccount.
    -func (c *serviceAccounts) Apply(ctx context.Context, serviceAccount *corev1.ServiceAccountApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ServiceAccount, err error) {
    -	if serviceAccount == nil {
    -		return nil, fmt.Errorf("serviceAccount provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(serviceAccount)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := serviceAccount.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("serviceAccount.Name must be provided to Apply")
    -	}
    -	result = &v1.ServiceAccount{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("serviceaccounts").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
     // CreateToken takes the representation of a tokenRequest and creates it.  Returns the server's representation of the tokenRequest, and an error, if there is any.
     func (c *serviceAccounts) CreateToken(ctx context.Context, serviceAccountName string, tokenRequest *authenticationv1.TokenRequest, opts metav1.CreateOptions) (result *authenticationv1.TokenRequest, err error) {
     	result = &authenticationv1.TokenRequest{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    +	err = c.GetClient().Post().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("serviceaccounts").
     		Name(serviceAccountName).
     		SubResource("token").
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/discovery_client.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/discovery_client.go
    index 9041443b38a3..fbc685df8297 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/discovery_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/discovery_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/discovery/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	discoveryv1 "k8s.io/api/discovery/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *DiscoveryV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := discoveryv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/endpointslice.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/endpointslice.go
    index 63e616b033bf..75b9a559e37e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/endpointslice.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/endpointslice.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/discovery/v1"
    +	discoveryv1 "k8s.io/api/discovery/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	discoveryv1 "k8s.io/client-go/applyconfigurations/discovery/v1"
    +	applyconfigurationsdiscoveryv1 "k8s.io/client-go/applyconfigurations/discovery/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // EndpointSlicesGetter has a method to return a EndpointSliceInterface.
    @@ -41,168 +38,34 @@ type EndpointSlicesGetter interface {
     
     // EndpointSliceInterface has methods to work with EndpointSlice resources.
     type EndpointSliceInterface interface {
    -	Create(ctx context.Context, endpointSlice *v1.EndpointSlice, opts metav1.CreateOptions) (*v1.EndpointSlice, error)
    -	Update(ctx context.Context, endpointSlice *v1.EndpointSlice, opts metav1.UpdateOptions) (*v1.EndpointSlice, error)
    +	Create(ctx context.Context, endpointSlice *discoveryv1.EndpointSlice, opts metav1.CreateOptions) (*discoveryv1.EndpointSlice, error)
    +	Update(ctx context.Context, endpointSlice *discoveryv1.EndpointSlice, opts metav1.UpdateOptions) (*discoveryv1.EndpointSlice, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.EndpointSlice, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.EndpointSliceList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*discoveryv1.EndpointSlice, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*discoveryv1.EndpointSliceList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.EndpointSlice, err error)
    -	Apply(ctx context.Context, endpointSlice *discoveryv1.EndpointSliceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.EndpointSlice, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *discoveryv1.EndpointSlice, err error)
    +	Apply(ctx context.Context, endpointSlice *applyconfigurationsdiscoveryv1.EndpointSliceApplyConfiguration, opts metav1.ApplyOptions) (result *discoveryv1.EndpointSlice, err error)
     	EndpointSliceExpansion
     }
     
     // endpointSlices implements EndpointSliceInterface
     type endpointSlices struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*discoveryv1.EndpointSlice, *discoveryv1.EndpointSliceList, *applyconfigurationsdiscoveryv1.EndpointSliceApplyConfiguration]
     }
     
     // newEndpointSlices returns a EndpointSlices
     func newEndpointSlices(c *DiscoveryV1Client, namespace string) *endpointSlices {
     	return &endpointSlices{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*discoveryv1.EndpointSlice, *discoveryv1.EndpointSliceList, *applyconfigurationsdiscoveryv1.EndpointSliceApplyConfiguration](
    +			"endpointslices",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *discoveryv1.EndpointSlice { return &discoveryv1.EndpointSlice{} },
    +			func() *discoveryv1.EndpointSliceList { return &discoveryv1.EndpointSliceList{} },
    +			gentype.PrefersProtobuf[*discoveryv1.EndpointSlice](),
    +		),
     	}
     }
    -
    -// Get takes name of the endpointSlice, and returns the corresponding endpointSlice object, and an error if there is any.
    -func (c *endpointSlices) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.EndpointSlice, err error) {
    -	result = &v1.EndpointSlice{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of EndpointSlices that match those selectors.
    -func (c *endpointSlices) List(ctx context.Context, opts metav1.ListOptions) (result *v1.EndpointSliceList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.EndpointSliceList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested endpointSlices.
    -func (c *endpointSlices) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a endpointSlice and creates it.  Returns the server's representation of the endpointSlice, and an error, if there is any.
    -func (c *endpointSlices) Create(ctx context.Context, endpointSlice *v1.EndpointSlice, opts metav1.CreateOptions) (result *v1.EndpointSlice, err error) {
    -	result = &v1.EndpointSlice{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(endpointSlice).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a endpointSlice and updates it. Returns the server's representation of the endpointSlice, and an error, if there is any.
    -func (c *endpointSlices) Update(ctx context.Context, endpointSlice *v1.EndpointSlice, opts metav1.UpdateOptions) (result *v1.EndpointSlice, err error) {
    -	result = &v1.EndpointSlice{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		Name(endpointSlice.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(endpointSlice).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the endpointSlice and deletes it. Returns an error if one occurs.
    -func (c *endpointSlices) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *endpointSlices) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched endpointSlice.
    -func (c *endpointSlices) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.EndpointSlice, err error) {
    -	result = &v1.EndpointSlice{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied endpointSlice.
    -func (c *endpointSlices) Apply(ctx context.Context, endpointSlice *discoveryv1.EndpointSliceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.EndpointSlice, err error) {
    -	if endpointSlice == nil {
    -		return nil, fmt.Errorf("endpointSlice provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(endpointSlice)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := endpointSlice.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("endpointSlice.Name must be provided to Apply")
    -	}
    -	result = &v1.EndpointSlice{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/fake/fake_discovery_client.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/fake/fake_discovery_client.go
    index 1ca9b23f59d0..b64eabdad1f8 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/fake/fake_discovery_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/fake/fake_discovery_client.go
    @@ -29,7 +29,7 @@ type FakeDiscoveryV1 struct {
     }
     
     func (c *FakeDiscoveryV1) EndpointSlices(namespace string) v1.EndpointSliceInterface {
    -	return &FakeEndpointSlices{c, namespace}
    +	return newFakeEndpointSlices(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/fake/fake_endpointslice.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/fake/fake_endpointslice.go
    index d159b5ea9e9a..a2b048fd921a 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/fake/fake_endpointslice.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1/fake/fake_endpointslice.go
    @@ -19,136 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/discovery/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	discoveryv1 "k8s.io/client-go/applyconfigurations/discovery/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typeddiscoveryv1 "k8s.io/client-go/kubernetes/typed/discovery/v1"
     )
     
    -// FakeEndpointSlices implements EndpointSliceInterface
    -type FakeEndpointSlices struct {
    +// fakeEndpointSlices implements EndpointSliceInterface
    +type fakeEndpointSlices struct {
    +	*gentype.FakeClientWithListAndApply[*v1.EndpointSlice, *v1.EndpointSliceList, *discoveryv1.EndpointSliceApplyConfiguration]
     	Fake *FakeDiscoveryV1
    -	ns   string
    -}
    -
    -var endpointslicesResource = v1.SchemeGroupVersion.WithResource("endpointslices")
    -
    -var endpointslicesKind = v1.SchemeGroupVersion.WithKind("EndpointSlice")
    -
    -// Get takes name of the endpointSlice, and returns the corresponding endpointSlice object, and an error if there is any.
    -func (c *FakeEndpointSlices) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.EndpointSlice, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(endpointslicesResource, c.ns, name), &v1.EndpointSlice{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.EndpointSlice), err
    -}
    -
    -// List takes label and field selectors, and returns the list of EndpointSlices that match those selectors.
    -func (c *FakeEndpointSlices) List(ctx context.Context, opts metav1.ListOptions) (result *v1.EndpointSliceList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(endpointslicesResource, endpointslicesKind, c.ns, opts), &v1.EndpointSliceList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.EndpointSliceList{ListMeta: obj.(*v1.EndpointSliceList).ListMeta}
    -	for _, item := range obj.(*v1.EndpointSliceList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested endpointSlices.
    -func (c *FakeEndpointSlices) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(endpointslicesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a endpointSlice and creates it.  Returns the server's representation of the endpointSlice, and an error, if there is any.
    -func (c *FakeEndpointSlices) Create(ctx context.Context, endpointSlice *v1.EndpointSlice, opts metav1.CreateOptions) (result *v1.EndpointSlice, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(endpointslicesResource, c.ns, endpointSlice), &v1.EndpointSlice{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.EndpointSlice), err
    -}
    -
    -// Update takes the representation of a endpointSlice and updates it. Returns the server's representation of the endpointSlice, and an error, if there is any.
    -func (c *FakeEndpointSlices) Update(ctx context.Context, endpointSlice *v1.EndpointSlice, opts metav1.UpdateOptions) (result *v1.EndpointSlice, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(endpointslicesResource, c.ns, endpointSlice), &v1.EndpointSlice{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.EndpointSlice), err
    -}
    -
    -// Delete takes name of the endpointSlice and deletes it. Returns an error if one occurs.
    -func (c *FakeEndpointSlices) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(endpointslicesResource, c.ns, name, opts), &v1.EndpointSlice{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeEndpointSlices) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(endpointslicesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.EndpointSliceList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched endpointSlice.
    -func (c *FakeEndpointSlices) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.EndpointSlice, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(endpointslicesResource, c.ns, name, pt, data, subresources...), &v1.EndpointSlice{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.EndpointSlice), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied endpointSlice.
    -func (c *FakeEndpointSlices) Apply(ctx context.Context, endpointSlice *discoveryv1.EndpointSliceApplyConfiguration, opts metav1.ApplyOptions) (result *v1.EndpointSlice, err error) {
    -	if endpointSlice == nil {
    -		return nil, fmt.Errorf("endpointSlice provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(endpointSlice)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := endpointSlice.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("endpointSlice.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(endpointslicesResource, c.ns, *name, types.ApplyPatchType, data), &v1.EndpointSlice{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeEndpointSlices(fake *FakeDiscoveryV1, namespace string) typeddiscoveryv1.EndpointSliceInterface {
    +	return &fakeEndpointSlices{
    +		gentype.NewFakeClientWithListAndApply[*v1.EndpointSlice, *v1.EndpointSliceList, *discoveryv1.EndpointSliceApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("endpointslices"),
    +			v1.SchemeGroupVersion.WithKind("EndpointSlice"),
    +			func() *v1.EndpointSlice { return &v1.EndpointSlice{} },
    +			func() *v1.EndpointSliceList { return &v1.EndpointSliceList{} },
    +			func(dst, src *v1.EndpointSliceList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.EndpointSliceList) []*v1.EndpointSlice { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.EndpointSliceList, items []*v1.EndpointSlice) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.EndpointSlice), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/discovery_client.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/discovery_client.go
    index 193d5e9ebb69..908446c6d5b1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/discovery_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/discovery_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/discovery/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	discoveryv1beta1 "k8s.io/api/discovery/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *DiscoveryV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := discoveryv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/endpointslice.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/endpointslice.go
    index 2ade83302960..4ef2752e7908 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/endpointslice.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/endpointslice.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/discovery/v1beta1"
    +	discoveryv1beta1 "k8s.io/api/discovery/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	discoveryv1beta1 "k8s.io/client-go/applyconfigurations/discovery/v1beta1"
    +	applyconfigurationsdiscoveryv1beta1 "k8s.io/client-go/applyconfigurations/discovery/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // EndpointSlicesGetter has a method to return a EndpointSliceInterface.
    @@ -41,168 +38,34 @@ type EndpointSlicesGetter interface {
     
     // EndpointSliceInterface has methods to work with EndpointSlice resources.
     type EndpointSliceInterface interface {
    -	Create(ctx context.Context, endpointSlice *v1beta1.EndpointSlice, opts v1.CreateOptions) (*v1beta1.EndpointSlice, error)
    -	Update(ctx context.Context, endpointSlice *v1beta1.EndpointSlice, opts v1.UpdateOptions) (*v1beta1.EndpointSlice, error)
    +	Create(ctx context.Context, endpointSlice *discoveryv1beta1.EndpointSlice, opts v1.CreateOptions) (*discoveryv1beta1.EndpointSlice, error)
    +	Update(ctx context.Context, endpointSlice *discoveryv1beta1.EndpointSlice, opts v1.UpdateOptions) (*discoveryv1beta1.EndpointSlice, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.EndpointSlice, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.EndpointSliceList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*discoveryv1beta1.EndpointSlice, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*discoveryv1beta1.EndpointSliceList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.EndpointSlice, err error)
    -	Apply(ctx context.Context, endpointSlice *discoveryv1beta1.EndpointSliceApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.EndpointSlice, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *discoveryv1beta1.EndpointSlice, err error)
    +	Apply(ctx context.Context, endpointSlice *applyconfigurationsdiscoveryv1beta1.EndpointSliceApplyConfiguration, opts v1.ApplyOptions) (result *discoveryv1beta1.EndpointSlice, err error)
     	EndpointSliceExpansion
     }
     
     // endpointSlices implements EndpointSliceInterface
     type endpointSlices struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*discoveryv1beta1.EndpointSlice, *discoveryv1beta1.EndpointSliceList, *applyconfigurationsdiscoveryv1beta1.EndpointSliceApplyConfiguration]
     }
     
     // newEndpointSlices returns a EndpointSlices
     func newEndpointSlices(c *DiscoveryV1beta1Client, namespace string) *endpointSlices {
     	return &endpointSlices{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*discoveryv1beta1.EndpointSlice, *discoveryv1beta1.EndpointSliceList, *applyconfigurationsdiscoveryv1beta1.EndpointSliceApplyConfiguration](
    +			"endpointslices",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *discoveryv1beta1.EndpointSlice { return &discoveryv1beta1.EndpointSlice{} },
    +			func() *discoveryv1beta1.EndpointSliceList { return &discoveryv1beta1.EndpointSliceList{} },
    +			gentype.PrefersProtobuf[*discoveryv1beta1.EndpointSlice](),
    +		),
     	}
     }
    -
    -// Get takes name of the endpointSlice, and returns the corresponding endpointSlice object, and an error if there is any.
    -func (c *endpointSlices) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.EndpointSlice, err error) {
    -	result = &v1beta1.EndpointSlice{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of EndpointSlices that match those selectors.
    -func (c *endpointSlices) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.EndpointSliceList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.EndpointSliceList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested endpointSlices.
    -func (c *endpointSlices) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a endpointSlice and creates it.  Returns the server's representation of the endpointSlice, and an error, if there is any.
    -func (c *endpointSlices) Create(ctx context.Context, endpointSlice *v1beta1.EndpointSlice, opts v1.CreateOptions) (result *v1beta1.EndpointSlice, err error) {
    -	result = &v1beta1.EndpointSlice{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(endpointSlice).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a endpointSlice and updates it. Returns the server's representation of the endpointSlice, and an error, if there is any.
    -func (c *endpointSlices) Update(ctx context.Context, endpointSlice *v1beta1.EndpointSlice, opts v1.UpdateOptions) (result *v1beta1.EndpointSlice, err error) {
    -	result = &v1beta1.EndpointSlice{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		Name(endpointSlice.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(endpointSlice).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the endpointSlice and deletes it. Returns an error if one occurs.
    -func (c *endpointSlices) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *endpointSlices) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched endpointSlice.
    -func (c *endpointSlices) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.EndpointSlice, err error) {
    -	result = &v1beta1.EndpointSlice{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied endpointSlice.
    -func (c *endpointSlices) Apply(ctx context.Context, endpointSlice *discoveryv1beta1.EndpointSliceApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.EndpointSlice, err error) {
    -	if endpointSlice == nil {
    -		return nil, fmt.Errorf("endpointSlice provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(endpointSlice)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := endpointSlice.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("endpointSlice.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.EndpointSlice{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("endpointslices").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/fake/fake_discovery_client.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/fake/fake_discovery_client.go
    index e285de64764e..53fdfe62eff3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/fake/fake_discovery_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/fake/fake_discovery_client.go
    @@ -29,7 +29,7 @@ type FakeDiscoveryV1beta1 struct {
     }
     
     func (c *FakeDiscoveryV1beta1) EndpointSlices(namespace string) v1beta1.EndpointSliceInterface {
    -	return &FakeEndpointSlices{c, namespace}
    +	return newFakeEndpointSlices(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/fake/fake_endpointslice.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/fake/fake_endpointslice.go
    index 268371811346..b36aeb4d0443 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/fake/fake_endpointslice.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/fake/fake_endpointslice.go
    @@ -19,136 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/discovery/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	discoveryv1beta1 "k8s.io/client-go/applyconfigurations/discovery/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typeddiscoveryv1beta1 "k8s.io/client-go/kubernetes/typed/discovery/v1beta1"
     )
     
    -// FakeEndpointSlices implements EndpointSliceInterface
    -type FakeEndpointSlices struct {
    +// fakeEndpointSlices implements EndpointSliceInterface
    +type fakeEndpointSlices struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.EndpointSlice, *v1beta1.EndpointSliceList, *discoveryv1beta1.EndpointSliceApplyConfiguration]
     	Fake *FakeDiscoveryV1beta1
    -	ns   string
    -}
    -
    -var endpointslicesResource = v1beta1.SchemeGroupVersion.WithResource("endpointslices")
    -
    -var endpointslicesKind = v1beta1.SchemeGroupVersion.WithKind("EndpointSlice")
    -
    -// Get takes name of the endpointSlice, and returns the corresponding endpointSlice object, and an error if there is any.
    -func (c *FakeEndpointSlices) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.EndpointSlice, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(endpointslicesResource, c.ns, name), &v1beta1.EndpointSlice{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.EndpointSlice), err
    -}
    -
    -// List takes label and field selectors, and returns the list of EndpointSlices that match those selectors.
    -func (c *FakeEndpointSlices) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.EndpointSliceList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(endpointslicesResource, endpointslicesKind, c.ns, opts), &v1beta1.EndpointSliceList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.EndpointSliceList{ListMeta: obj.(*v1beta1.EndpointSliceList).ListMeta}
    -	for _, item := range obj.(*v1beta1.EndpointSliceList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested endpointSlices.
    -func (c *FakeEndpointSlices) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(endpointslicesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a endpointSlice and creates it.  Returns the server's representation of the endpointSlice, and an error, if there is any.
    -func (c *FakeEndpointSlices) Create(ctx context.Context, endpointSlice *v1beta1.EndpointSlice, opts v1.CreateOptions) (result *v1beta1.EndpointSlice, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(endpointslicesResource, c.ns, endpointSlice), &v1beta1.EndpointSlice{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.EndpointSlice), err
    -}
    -
    -// Update takes the representation of a endpointSlice and updates it. Returns the server's representation of the endpointSlice, and an error, if there is any.
    -func (c *FakeEndpointSlices) Update(ctx context.Context, endpointSlice *v1beta1.EndpointSlice, opts v1.UpdateOptions) (result *v1beta1.EndpointSlice, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(endpointslicesResource, c.ns, endpointSlice), &v1beta1.EndpointSlice{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.EndpointSlice), err
    -}
    -
    -// Delete takes name of the endpointSlice and deletes it. Returns an error if one occurs.
    -func (c *FakeEndpointSlices) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(endpointslicesResource, c.ns, name, opts), &v1beta1.EndpointSlice{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeEndpointSlices) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(endpointslicesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.EndpointSliceList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched endpointSlice.
    -func (c *FakeEndpointSlices) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.EndpointSlice, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(endpointslicesResource, c.ns, name, pt, data, subresources...), &v1beta1.EndpointSlice{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.EndpointSlice), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied endpointSlice.
    -func (c *FakeEndpointSlices) Apply(ctx context.Context, endpointSlice *discoveryv1beta1.EndpointSliceApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.EndpointSlice, err error) {
    -	if endpointSlice == nil {
    -		return nil, fmt.Errorf("endpointSlice provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(endpointSlice)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := endpointSlice.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("endpointSlice.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(endpointslicesResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.EndpointSlice{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeEndpointSlices(fake *FakeDiscoveryV1beta1, namespace string) typeddiscoveryv1beta1.EndpointSliceInterface {
    +	return &fakeEndpointSlices{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.EndpointSlice, *v1beta1.EndpointSliceList, *discoveryv1beta1.EndpointSliceApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("endpointslices"),
    +			v1beta1.SchemeGroupVersion.WithKind("EndpointSlice"),
    +			func() *v1beta1.EndpointSlice { return &v1beta1.EndpointSlice{} },
    +			func() *v1beta1.EndpointSliceList { return &v1beta1.EndpointSliceList{} },
    +			func(dst, src *v1beta1.EndpointSliceList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.EndpointSliceList) []*v1beta1.EndpointSlice {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.EndpointSliceList, items []*v1beta1.EndpointSlice) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.EndpointSlice), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/event.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/event.go
    index c9f2bbed5019..fd335847684c 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/event.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/event.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/events/v1"
    +	eventsv1 "k8s.io/api/events/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	eventsv1 "k8s.io/client-go/applyconfigurations/events/v1"
    +	applyconfigurationseventsv1 "k8s.io/client-go/applyconfigurations/events/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // EventsGetter has a method to return a EventInterface.
    @@ -41,168 +38,34 @@ type EventsGetter interface {
     
     // EventInterface has methods to work with Event resources.
     type EventInterface interface {
    -	Create(ctx context.Context, event *v1.Event, opts metav1.CreateOptions) (*v1.Event, error)
    -	Update(ctx context.Context, event *v1.Event, opts metav1.UpdateOptions) (*v1.Event, error)
    +	Create(ctx context.Context, event *eventsv1.Event, opts metav1.CreateOptions) (*eventsv1.Event, error)
    +	Update(ctx context.Context, event *eventsv1.Event, opts metav1.UpdateOptions) (*eventsv1.Event, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Event, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.EventList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*eventsv1.Event, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*eventsv1.EventList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Event, err error)
    -	Apply(ctx context.Context, event *eventsv1.EventApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Event, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *eventsv1.Event, err error)
    +	Apply(ctx context.Context, event *applyconfigurationseventsv1.EventApplyConfiguration, opts metav1.ApplyOptions) (result *eventsv1.Event, err error)
     	EventExpansion
     }
     
     // events implements EventInterface
     type events struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*eventsv1.Event, *eventsv1.EventList, *applyconfigurationseventsv1.EventApplyConfiguration]
     }
     
     // newEvents returns a Events
     func newEvents(c *EventsV1Client, namespace string) *events {
     	return &events{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*eventsv1.Event, *eventsv1.EventList, *applyconfigurationseventsv1.EventApplyConfiguration](
    +			"events",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *eventsv1.Event { return &eventsv1.Event{} },
    +			func() *eventsv1.EventList { return &eventsv1.EventList{} },
    +			gentype.PrefersProtobuf[*eventsv1.Event](),
    +		),
     	}
     }
    -
    -// Get takes name of the event, and returns the corresponding event object, and an error if there is any.
    -func (c *events) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Event, err error) {
    -	result = &v1.Event{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Events that match those selectors.
    -func (c *events) List(ctx context.Context, opts metav1.ListOptions) (result *v1.EventList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.EventList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested events.
    -func (c *events) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a event and creates it.  Returns the server's representation of the event, and an error, if there is any.
    -func (c *events) Create(ctx context.Context, event *v1.Event, opts metav1.CreateOptions) (result *v1.Event, err error) {
    -	result = &v1.Event{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(event).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any.
    -func (c *events) Update(ctx context.Context, event *v1.Event, opts metav1.UpdateOptions) (result *v1.Event, err error) {
    -	result = &v1.Event{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(event.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(event).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the event and deletes it. Returns an error if one occurs.
    -func (c *events) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *events) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched event.
    -func (c *events) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Event, err error) {
    -	result = &v1.Event{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied event.
    -func (c *events) Apply(ctx context.Context, event *eventsv1.EventApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Event, err error) {
    -	if event == nil {
    -		return nil, fmt.Errorf("event provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(event)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := event.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("event.Name must be provided to Apply")
    -	}
    -	result = &v1.Event{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/events_client.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/events_client.go
    index 8c73918d1c5b..959ff5f81ac8 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/events_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/events_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/events/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	eventsv1 "k8s.io/api/events/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *EventsV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := eventsv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/fake/fake_event.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/fake/fake_event.go
    index 0928781f1e30..b9f176d14662 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/fake/fake_event.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/fake/fake_event.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/events/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	eventsv1 "k8s.io/client-go/applyconfigurations/events/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedeventsv1 "k8s.io/client-go/kubernetes/typed/events/v1"
     )
     
    -// FakeEvents implements EventInterface
    -type FakeEvents struct {
    +// fakeEvents implements EventInterface
    +type fakeEvents struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Event, *v1.EventList, *eventsv1.EventApplyConfiguration]
     	Fake *FakeEventsV1
    -	ns   string
    -}
    -
    -var eventsResource = v1.SchemeGroupVersion.WithResource("events")
    -
    -var eventsKind = v1.SchemeGroupVersion.WithKind("Event")
    -
    -// Get takes name of the event, and returns the corresponding event object, and an error if there is any.
    -func (c *FakeEvents) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(eventsResource, c.ns, name), &v1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Event), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Events that match those selectors.
    -func (c *FakeEvents) List(ctx context.Context, opts metav1.ListOptions) (result *v1.EventList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(eventsResource, eventsKind, c.ns, opts), &v1.EventList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.EventList{ListMeta: obj.(*v1.EventList).ListMeta}
    -	for _, item := range obj.(*v1.EventList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested events.
    -func (c *FakeEvents) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(eventsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a event and creates it.  Returns the server's representation of the event, and an error, if there is any.
    -func (c *FakeEvents) Create(ctx context.Context, event *v1.Event, opts metav1.CreateOptions) (result *v1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(eventsResource, c.ns, event), &v1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Event), err
    -}
    -
    -// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any.
    -func (c *FakeEvents) Update(ctx context.Context, event *v1.Event, opts metav1.UpdateOptions) (result *v1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(eventsResource, c.ns, event), &v1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Event), err
    -}
    -
    -// Delete takes name of the event and deletes it. Returns an error if one occurs.
    -func (c *FakeEvents) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(eventsResource, c.ns, name, opts), &v1.Event{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeEvents) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(eventsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.EventList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched event.
    -func (c *FakeEvents) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, name, pt, data, subresources...), &v1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Event), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied event.
    -func (c *FakeEvents) Apply(ctx context.Context, event *eventsv1.EventApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Event, err error) {
    -	if event == nil {
    -		return nil, fmt.Errorf("event provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(event)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := event.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("event.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, *name, types.ApplyPatchType, data), &v1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeEvents(fake *FakeEventsV1, namespace string) typedeventsv1.EventInterface {
    +	return &fakeEvents{
    +		gentype.NewFakeClientWithListAndApply[*v1.Event, *v1.EventList, *eventsv1.EventApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("events"),
    +			v1.SchemeGroupVersion.WithKind("Event"),
    +			func() *v1.Event { return &v1.Event{} },
    +			func() *v1.EventList { return &v1.EventList{} },
    +			func(dst, src *v1.EventList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.EventList) []*v1.Event { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.EventList, items []*v1.Event) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Event), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/fake/fake_events_client.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/fake/fake_events_client.go
    index 95ef2b307cc0..ab0ca22b4fe5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/fake/fake_events_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/fake/fake_events_client.go
    @@ -29,7 +29,7 @@ type FakeEventsV1 struct {
     }
     
     func (c *FakeEventsV1) Events(namespace string) v1.EventInterface {
    -	return &FakeEvents{c, namespace}
    +	return newFakeEvents(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event.go
    index dfdf8b897930..c18a1aeb62a7 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/events/v1beta1"
    +	eventsv1beta1 "k8s.io/api/events/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	eventsv1beta1 "k8s.io/client-go/applyconfigurations/events/v1beta1"
    +	applyconfigurationseventsv1beta1 "k8s.io/client-go/applyconfigurations/events/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // EventsGetter has a method to return a EventInterface.
    @@ -41,168 +38,34 @@ type EventsGetter interface {
     
     // EventInterface has methods to work with Event resources.
     type EventInterface interface {
    -	Create(ctx context.Context, event *v1beta1.Event, opts v1.CreateOptions) (*v1beta1.Event, error)
    -	Update(ctx context.Context, event *v1beta1.Event, opts v1.UpdateOptions) (*v1beta1.Event, error)
    +	Create(ctx context.Context, event *eventsv1beta1.Event, opts v1.CreateOptions) (*eventsv1beta1.Event, error)
    +	Update(ctx context.Context, event *eventsv1beta1.Event, opts v1.UpdateOptions) (*eventsv1beta1.Event, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.Event, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.EventList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*eventsv1beta1.Event, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*eventsv1beta1.EventList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Event, err error)
    -	Apply(ctx context.Context, event *eventsv1beta1.EventApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Event, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *eventsv1beta1.Event, err error)
    +	Apply(ctx context.Context, event *applyconfigurationseventsv1beta1.EventApplyConfiguration, opts v1.ApplyOptions) (result *eventsv1beta1.Event, err error)
     	EventExpansion
     }
     
     // events implements EventInterface
     type events struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*eventsv1beta1.Event, *eventsv1beta1.EventList, *applyconfigurationseventsv1beta1.EventApplyConfiguration]
     }
     
     // newEvents returns a Events
     func newEvents(c *EventsV1beta1Client, namespace string) *events {
     	return &events{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*eventsv1beta1.Event, *eventsv1beta1.EventList, *applyconfigurationseventsv1beta1.EventApplyConfiguration](
    +			"events",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *eventsv1beta1.Event { return &eventsv1beta1.Event{} },
    +			func() *eventsv1beta1.EventList { return &eventsv1beta1.EventList{} },
    +			gentype.PrefersProtobuf[*eventsv1beta1.Event](),
    +		),
     	}
     }
    -
    -// Get takes name of the event, and returns the corresponding event object, and an error if there is any.
    -func (c *events) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Event, err error) {
    -	result = &v1beta1.Event{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Events that match those selectors.
    -func (c *events) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.EventList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.EventList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested events.
    -func (c *events) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a event and creates it.  Returns the server's representation of the event, and an error, if there is any.
    -func (c *events) Create(ctx context.Context, event *v1beta1.Event, opts v1.CreateOptions) (result *v1beta1.Event, err error) {
    -	result = &v1beta1.Event{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(event).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any.
    -func (c *events) Update(ctx context.Context, event *v1beta1.Event, opts v1.UpdateOptions) (result *v1beta1.Event, err error) {
    -	result = &v1beta1.Event{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(event.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(event).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the event and deletes it. Returns an error if one occurs.
    -func (c *events) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *events) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("events").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched event.
    -func (c *events) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Event, err error) {
    -	result = &v1beta1.Event{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied event.
    -func (c *events) Apply(ctx context.Context, event *eventsv1beta1.EventApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Event, err error) {
    -	if event == nil {
    -		return nil, fmt.Errorf("event provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(event)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := event.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("event.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.Event{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("events").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go
    index 562f8d5e45e5..4ddbaa31af21 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go
    @@ -44,11 +44,11 @@ type EventExpansion interface {
     // it must either match this event client's namespace, or this event client must
     // have been created with the "" namespace.
     func (e *events) CreateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) {
    -	if e.ns != "" && event.Namespace != e.ns {
    -		return nil, fmt.Errorf("can't create an event with namespace '%v' in namespace '%v'", event.Namespace, e.ns)
    +	if e.GetNamespace() != "" && event.Namespace != e.GetNamespace() {
    +		return nil, fmt.Errorf("can't create an event with namespace '%v' in namespace '%v'", event.Namespace, e.GetNamespace())
     	}
     	result := &v1beta1.Event{}
    -	err := e.client.Post().
    +	err := e.GetClient().Post().
     		NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0).
     		Resource("events").
     		Body(event).
    @@ -64,11 +64,11 @@ func (e *events) CreateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event,
     // created with the "" namespace.
     // Update also requires the ResourceVersion to be set in the event object.
     func (e *events) UpdateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) {
    -	if e.ns != "" && event.Namespace != e.ns {
    -		return nil, fmt.Errorf("can't update an event with namespace '%v' in namespace '%v'", event.Namespace, e.ns)
    +	if e.GetNamespace() != "" && event.Namespace != e.GetNamespace() {
    +		return nil, fmt.Errorf("can't update an event with namespace '%v' in namespace '%v'", event.Namespace, e.GetNamespace())
     	}
     	result := &v1beta1.Event{}
    -	err := e.client.Put().
    +	err := e.GetClient().Put().
     		NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0).
     		Resource("events").
     		Name(event.Name).
    @@ -84,11 +84,11 @@ func (e *events) UpdateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event,
     // The namespace must either match this event client's namespace, or this event client must
     // have been created with the "" namespace.
     func (e *events) PatchWithEventNamespace(event *v1beta1.Event, data []byte) (*v1beta1.Event, error) {
    -	if e.ns != "" && event.Namespace != e.ns {
    -		return nil, fmt.Errorf("can't patch an event with namespace '%v' in namespace '%v'", event.Namespace, e.ns)
    +	if e.GetNamespace() != "" && event.Namespace != e.GetNamespace() {
    +		return nil, fmt.Errorf("can't patch an event with namespace '%v' in namespace '%v'", event.Namespace, e.GetNamespace())
     	}
     	result := &v1beta1.Event{}
    -	err := e.client.Patch(types.StrategicMergePatchType).
    +	err := e.GetClient().Patch(types.StrategicMergePatchType).
     		NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0).
     		Resource("events").
     		Name(event.Name).
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/events_client.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/events_client.go
    index 66506bf88e92..0bfc3cb60744 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/events_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/events_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/events/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	eventsv1beta1 "k8s.io/api/events/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *EventsV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := eventsv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event.go
    index 522b4dc06322..9c9a57326578 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/events/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	eventsv1beta1 "k8s.io/client-go/applyconfigurations/events/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedeventsv1beta1 "k8s.io/client-go/kubernetes/typed/events/v1beta1"
     )
     
    -// FakeEvents implements EventInterface
    -type FakeEvents struct {
    +// fakeEvents implements EventInterface
    +type fakeEvents struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.Event, *v1beta1.EventList, *eventsv1beta1.EventApplyConfiguration]
     	Fake *FakeEventsV1beta1
    -	ns   string
    -}
    -
    -var eventsResource = v1beta1.SchemeGroupVersion.WithResource("events")
    -
    -var eventsKind = v1beta1.SchemeGroupVersion.WithKind("Event")
    -
    -// Get takes name of the event, and returns the corresponding event object, and an error if there is any.
    -func (c *FakeEvents) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(eventsResource, c.ns, name), &v1beta1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Event), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Events that match those selectors.
    -func (c *FakeEvents) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.EventList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(eventsResource, eventsKind, c.ns, opts), &v1beta1.EventList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.EventList{ListMeta: obj.(*v1beta1.EventList).ListMeta}
    -	for _, item := range obj.(*v1beta1.EventList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested events.
    -func (c *FakeEvents) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(eventsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a event and creates it.  Returns the server's representation of the event, and an error, if there is any.
    -func (c *FakeEvents) Create(ctx context.Context, event *v1beta1.Event, opts v1.CreateOptions) (result *v1beta1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(eventsResource, c.ns, event), &v1beta1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Event), err
    -}
    -
    -// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any.
    -func (c *FakeEvents) Update(ctx context.Context, event *v1beta1.Event, opts v1.UpdateOptions) (result *v1beta1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(eventsResource, c.ns, event), &v1beta1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Event), err
    -}
    -
    -// Delete takes name of the event and deletes it. Returns an error if one occurs.
    -func (c *FakeEvents) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(eventsResource, c.ns, name, opts), &v1beta1.Event{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeEvents) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(eventsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.EventList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched event.
    -func (c *FakeEvents) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Event, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, name, pt, data, subresources...), &v1beta1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Event), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied event.
    -func (c *FakeEvents) Apply(ctx context.Context, event *eventsv1beta1.EventApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Event, err error) {
    -	if event == nil {
    -		return nil, fmt.Errorf("event provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(event)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := event.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("event.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.Event{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeEvents(fake *FakeEventsV1beta1, namespace string) typedeventsv1beta1.EventInterface {
    +	return &fakeEvents{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.Event, *v1beta1.EventList, *eventsv1beta1.EventApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("events"),
    +			v1beta1.SchemeGroupVersion.WithKind("Event"),
    +			func() *v1beta1.Event { return &v1beta1.Event{} },
    +			func() *v1beta1.EventList { return &v1beta1.EventList{} },
    +			func(dst, src *v1beta1.EventList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.EventList) []*v1beta1.Event { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.EventList, items []*v1beta1.Event) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.Event), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event_expansion.go
    index 19c1b441550e..248ff6ea1fc5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event_expansion.go
    @@ -23,10 +23,10 @@ import (
     )
     
     // CreateWithEventNamespace creats a new event. Returns the copy of the event the server returns, or an error.
    -func (c *FakeEvents) CreateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) {
    -	action := core.NewRootCreateAction(eventsResource, event)
    -	if c.ns != "" {
    -		action = core.NewCreateAction(eventsResource, c.ns, event)
    +func (c *fakeEvents) CreateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) {
    +	action := core.NewRootCreateAction(c.Resource(), event)
    +	if c.Namespace() != "" {
    +		action = core.NewCreateAction(c.Resource(), c.Namespace(), event)
     	}
     	obj, err := c.Fake.Invokes(action, event)
     	if obj == nil {
    @@ -37,10 +37,10 @@ func (c *FakeEvents) CreateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Ev
     }
     
     // UpdateWithEventNamespace replaces an existing event. Returns the copy of the event the server returns, or an error.
    -func (c *FakeEvents) UpdateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) {
    -	action := core.NewRootUpdateAction(eventsResource, event)
    -	if c.ns != "" {
    -		action = core.NewUpdateAction(eventsResource, c.ns, event)
    +func (c *fakeEvents) UpdateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) {
    +	action := core.NewRootUpdateAction(c.Resource(), event)
    +	if c.Namespace() != "" {
    +		action = core.NewUpdateAction(c.Resource(), c.Namespace(), event)
     	}
     	obj, err := c.Fake.Invokes(action, event)
     	if obj == nil {
    @@ -51,11 +51,11 @@ func (c *FakeEvents) UpdateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Ev
     }
     
     // PatchWithEventNamespace patches an existing event. Returns the copy of the event the server returns, or an error.
    -func (c *FakeEvents) PatchWithEventNamespace(event *v1beta1.Event, data []byte) (*v1beta1.Event, error) {
    +func (c *fakeEvents) PatchWithEventNamespace(event *v1beta1.Event, data []byte) (*v1beta1.Event, error) {
     	pt := types.StrategicMergePatchType
    -	action := core.NewRootPatchAction(eventsResource, event.Name, pt, data)
    -	if c.ns != "" {
    -		action = core.NewPatchAction(eventsResource, c.ns, event.Name, pt, data)
    +	action := core.NewRootPatchAction(c.Resource(), event.Name, pt, data)
    +	if c.Namespace() != "" {
    +		action = core.NewPatchAction(c.Resource(), c.Namespace(), event.Name, pt, data)
     	}
     	obj, err := c.Fake.Invokes(action, event)
     	if obj == nil {
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_events_client.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_events_client.go
    index 875c774e3886..0b4db4d51723 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_events_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_events_client.go
    @@ -29,7 +29,7 @@ type FakeEventsV1beta1 struct {
     }
     
     func (c *FakeEventsV1beta1) Events(namespace string) v1beta1.EventInterface {
    -	return &FakeEvents{c, namespace}
    +	return newFakeEvents(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go
    index ffe219fdaac6..c04be73a3c98 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	extensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	applyconfigurationsextensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // DaemonSetsGetter has a method to return a DaemonSetInterface.
    @@ -41,216 +38,38 @@ type DaemonSetsGetter interface {
     
     // DaemonSetInterface has methods to work with DaemonSet resources.
     type DaemonSetInterface interface {
    -	Create(ctx context.Context, daemonSet *v1beta1.DaemonSet, opts v1.CreateOptions) (*v1beta1.DaemonSet, error)
    -	Update(ctx context.Context, daemonSet *v1beta1.DaemonSet, opts v1.UpdateOptions) (*v1beta1.DaemonSet, error)
    -	UpdateStatus(ctx context.Context, daemonSet *v1beta1.DaemonSet, opts v1.UpdateOptions) (*v1beta1.DaemonSet, error)
    +	Create(ctx context.Context, daemonSet *extensionsv1beta1.DaemonSet, opts v1.CreateOptions) (*extensionsv1beta1.DaemonSet, error)
    +	Update(ctx context.Context, daemonSet *extensionsv1beta1.DaemonSet, opts v1.UpdateOptions) (*extensionsv1beta1.DaemonSet, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, daemonSet *extensionsv1beta1.DaemonSet, opts v1.UpdateOptions) (*extensionsv1beta1.DaemonSet, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.DaemonSet, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.DaemonSetList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*extensionsv1beta1.DaemonSet, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*extensionsv1beta1.DaemonSetList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.DaemonSet, err error)
    -	Apply(ctx context.Context, daemonSet *extensionsv1beta1.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.DaemonSet, err error)
    -	ApplyStatus(ctx context.Context, daemonSet *extensionsv1beta1.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.DaemonSet, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *extensionsv1beta1.DaemonSet, err error)
    +	Apply(ctx context.Context, daemonSet *applyconfigurationsextensionsv1beta1.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.DaemonSet, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, daemonSet *applyconfigurationsextensionsv1beta1.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.DaemonSet, err error)
     	DaemonSetExpansion
     }
     
     // daemonSets implements DaemonSetInterface
     type daemonSets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*extensionsv1beta1.DaemonSet, *extensionsv1beta1.DaemonSetList, *applyconfigurationsextensionsv1beta1.DaemonSetApplyConfiguration]
     }
     
     // newDaemonSets returns a DaemonSets
     func newDaemonSets(c *ExtensionsV1beta1Client, namespace string) *daemonSets {
     	return &daemonSets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*extensionsv1beta1.DaemonSet, *extensionsv1beta1.DaemonSetList, *applyconfigurationsextensionsv1beta1.DaemonSetApplyConfiguration](
    +			"daemonsets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *extensionsv1beta1.DaemonSet { return &extensionsv1beta1.DaemonSet{} },
    +			func() *extensionsv1beta1.DaemonSetList { return &extensionsv1beta1.DaemonSetList{} },
    +			gentype.PrefersProtobuf[*extensionsv1beta1.DaemonSet](),
    +		),
     	}
     }
    -
    -// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any.
    -func (c *daemonSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.DaemonSet, err error) {
    -	result = &v1beta1.DaemonSet{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of DaemonSets that match those selectors.
    -func (c *daemonSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.DaemonSetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.DaemonSetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested daemonSets.
    -func (c *daemonSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a daemonSet and creates it.  Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *daemonSets) Create(ctx context.Context, daemonSet *v1beta1.DaemonSet, opts v1.CreateOptions) (result *v1beta1.DaemonSet, err error) {
    -	result = &v1beta1.DaemonSet{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(daemonSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *daemonSets) Update(ctx context.Context, daemonSet *v1beta1.DaemonSet, opts v1.UpdateOptions) (result *v1beta1.DaemonSet, err error) {
    -	result = &v1beta1.DaemonSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(daemonSet.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(daemonSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *daemonSets) UpdateStatus(ctx context.Context, daemonSet *v1beta1.DaemonSet, opts v1.UpdateOptions) (result *v1beta1.DaemonSet, err error) {
    -	result = &v1beta1.DaemonSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(daemonSet.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(daemonSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs.
    -func (c *daemonSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *daemonSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched daemonSet.
    -func (c *daemonSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.DaemonSet, err error) {
    -	result = &v1beta1.DaemonSet{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied daemonSet.
    -func (c *daemonSets) Apply(ctx context.Context, daemonSet *extensionsv1beta1.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.DaemonSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *daemonSets) ApplyStatus(ctx context.Context, daemonSet *extensionsv1beta1.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.DaemonSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("daemonsets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go
    index c41d8dbc2609..1bcf3cbc81bb 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go
    @@ -19,18 +19,17 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
    +	fmt "fmt"
     
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	extensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	applyconfigurationsextensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
    +	apply "k8s.io/client-go/util/apply"
     )
     
     // DeploymentsGetter has a method to return a DeploymentInterface.
    @@ -41,229 +40,52 @@ type DeploymentsGetter interface {
     
     // DeploymentInterface has methods to work with Deployment resources.
     type DeploymentInterface interface {
    -	Create(ctx context.Context, deployment *v1beta1.Deployment, opts v1.CreateOptions) (*v1beta1.Deployment, error)
    -	Update(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (*v1beta1.Deployment, error)
    -	UpdateStatus(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (*v1beta1.Deployment, error)
    +	Create(ctx context.Context, deployment *extensionsv1beta1.Deployment, opts v1.CreateOptions) (*extensionsv1beta1.Deployment, error)
    +	Update(ctx context.Context, deployment *extensionsv1beta1.Deployment, opts v1.UpdateOptions) (*extensionsv1beta1.Deployment, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, deployment *extensionsv1beta1.Deployment, opts v1.UpdateOptions) (*extensionsv1beta1.Deployment, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.Deployment, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.DeploymentList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*extensionsv1beta1.Deployment, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*extensionsv1beta1.DeploymentList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Deployment, err error)
    -	Apply(ctx context.Context, deployment *extensionsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error)
    -	ApplyStatus(ctx context.Context, deployment *extensionsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error)
    -	GetScale(ctx context.Context, deploymentName string, options v1.GetOptions) (*v1beta1.Scale, error)
    -	UpdateScale(ctx context.Context, deploymentName string, scale *v1beta1.Scale, opts v1.UpdateOptions) (*v1beta1.Scale, error)
    -	ApplyScale(ctx context.Context, deploymentName string, scale *extensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (*v1beta1.Scale, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *extensionsv1beta1.Deployment, err error)
    +	Apply(ctx context.Context, deployment *applyconfigurationsextensionsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.Deployment, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, deployment *applyconfigurationsextensionsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.Deployment, err error)
    +	GetScale(ctx context.Context, deploymentName string, options v1.GetOptions) (*extensionsv1beta1.Scale, error)
    +	UpdateScale(ctx context.Context, deploymentName string, scale *extensionsv1beta1.Scale, opts v1.UpdateOptions) (*extensionsv1beta1.Scale, error)
    +	ApplyScale(ctx context.Context, deploymentName string, scale *applyconfigurationsextensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (*extensionsv1beta1.Scale, error)
     
     	DeploymentExpansion
     }
     
     // deployments implements DeploymentInterface
     type deployments struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*extensionsv1beta1.Deployment, *extensionsv1beta1.DeploymentList, *applyconfigurationsextensionsv1beta1.DeploymentApplyConfiguration]
     }
     
     // newDeployments returns a Deployments
     func newDeployments(c *ExtensionsV1beta1Client, namespace string) *deployments {
     	return &deployments{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*extensionsv1beta1.Deployment, *extensionsv1beta1.DeploymentList, *applyconfigurationsextensionsv1beta1.DeploymentApplyConfiguration](
    +			"deployments",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *extensionsv1beta1.Deployment { return &extensionsv1beta1.Deployment{} },
    +			func() *extensionsv1beta1.DeploymentList { return &extensionsv1beta1.DeploymentList{} },
    +			gentype.PrefersProtobuf[*extensionsv1beta1.Deployment](),
    +		),
     	}
     }
     
    -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any.
    -func (c *deployments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Deployment, err error) {
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Deployments that match those selectors.
    -func (c *deployments) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.DeploymentList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.DeploymentList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested deployments.
    -func (c *deployments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a deployment and creates it.  Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *deployments) Create(ctx context.Context, deployment *v1beta1.Deployment, opts v1.CreateOptions) (result *v1beta1.Deployment, err error) {
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *deployments) Update(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (result *v1beta1.Deployment, err error) {
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(deployment.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *deployments) UpdateStatus(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (result *v1beta1.Deployment, err error) {
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(deployment.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(deployment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the deployment and deletes it. Returns an error if one occurs.
    -func (c *deployments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *deployments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched deployment.
    -func (c *deployments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Deployment, err error) {
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied deployment.
    -func (c *deployments) Apply(ctx context.Context, deployment *extensionsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *deployments) ApplyStatus(ctx context.Context, deployment *extensionsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.Deployment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("deployments").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// GetScale takes name of the deployment, and returns the corresponding v1beta1.Scale object, and an error if there is any.
    -func (c *deployments) GetScale(ctx context.Context, deploymentName string, options v1.GetOptions) (result *v1beta1.Scale, err error) {
    -	result = &v1beta1.Scale{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    +// GetScale takes name of the deployment, and returns the corresponding extensionsv1beta1.Scale object, and an error if there is any.
    +func (c *deployments) GetScale(ctx context.Context, deploymentName string, options v1.GetOptions) (result *extensionsv1beta1.Scale, err error) {
    +	result = &extensionsv1beta1.Scale{}
    +	err = c.GetClient().Get().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("deployments").
     		Name(deploymentName).
     		SubResource("scale").
    @@ -274,10 +96,11 @@ func (c *deployments) GetScale(ctx context.Context, deploymentName string, optio
     }
     
     // UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
    -func (c *deployments) UpdateScale(ctx context.Context, deploymentName string, scale *v1beta1.Scale, opts v1.UpdateOptions) (result *v1beta1.Scale, err error) {
    -	result = &v1beta1.Scale{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    +func (c *deployments) UpdateScale(ctx context.Context, deploymentName string, scale *extensionsv1beta1.Scale, opts v1.UpdateOptions) (result *extensionsv1beta1.Scale, err error) {
    +	result = &extensionsv1beta1.Scale{}
    +	err = c.GetClient().Put().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("deployments").
     		Name(deploymentName).
     		SubResource("scale").
    @@ -290,24 +113,24 @@ func (c *deployments) UpdateScale(ctx context.Context, deploymentName string, sc
     
     // ApplyScale takes top resource name and the apply declarative configuration for scale,
     // applies it and returns the applied scale, and an error, if there is any.
    -func (c *deployments) ApplyScale(ctx context.Context, deploymentName string, scale *extensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Scale, err error) {
    +func (c *deployments) ApplyScale(ctx context.Context, deploymentName string, scale *applyconfigurationsextensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.Scale, err error) {
     	if scale == nil {
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
     	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(scale)
    +	request, err := apply.NewRequest(c.GetClient(), scale)
     	if err != nil {
     		return nil, err
     	}
     
    -	result = &v1beta1.Scale{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    +	result = &extensionsv1beta1.Scale{}
    +	err = request.
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("deployments").
     		Name(deploymentName).
     		SubResource("scale").
     		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
     		Do(ctx).
     		Into(result)
     	return
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go
    index 5c409ac99697..bd75b8a38e8b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go
    @@ -31,5 +31,5 @@ type DeploymentExpansion interface {
     
     // Rollback applied the provided DeploymentRollback to the named deployment in the current namespace.
     func (c *deployments) Rollback(ctx context.Context, deploymentRollback *v1beta1.DeploymentRollback, opts metav1.CreateOptions) error {
    -	return c.client.Post().Namespace(c.ns).Resource("deployments").Name(deploymentRollback.Name).VersionedParams(&opts, scheme.ParameterCodec).SubResource("rollback").Body(deploymentRollback).Do(ctx).Error()
    +	return c.GetClient().Post().Namespace(c.GetNamespace()).Resource("deployments").Name(deploymentRollback.Name).VersionedParams(&opts, scheme.ParameterCodec).SubResource("rollback").Body(deploymentRollback).Do(ctx).Error()
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go
    index 4725d2cd16f0..88f2279bb013 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -105,10 +105,10 @@ func New(c rest.Interface) *ExtensionsV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := extensionsv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go
    index abe3d2da1f9b..6b6244ca893f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go
    @@ -19,171 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/extensions/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	extensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedextensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
     )
     
    -// FakeDaemonSets implements DaemonSetInterface
    -type FakeDaemonSets struct {
    +// fakeDaemonSets implements DaemonSetInterface
    +type fakeDaemonSets struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.DaemonSet, *v1beta1.DaemonSetList, *extensionsv1beta1.DaemonSetApplyConfiguration]
     	Fake *FakeExtensionsV1beta1
    -	ns   string
    -}
    -
    -var daemonsetsResource = v1beta1.SchemeGroupVersion.WithResource("daemonsets")
    -
    -var daemonsetsKind = v1beta1.SchemeGroupVersion.WithKind("DaemonSet")
    -
    -// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any.
    -func (c *FakeDaemonSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(daemonsetsResource, c.ns, name), &v1beta1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.DaemonSet), err
    -}
    -
    -// List takes label and field selectors, and returns the list of DaemonSets that match those selectors.
    -func (c *FakeDaemonSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.DaemonSetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(daemonsetsResource, daemonsetsKind, c.ns, opts), &v1beta1.DaemonSetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.DaemonSetList{ListMeta: obj.(*v1beta1.DaemonSetList).ListMeta}
    -	for _, item := range obj.(*v1beta1.DaemonSetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested daemonSets.
    -func (c *FakeDaemonSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(daemonsetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a daemonSet and creates it.  Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *FakeDaemonSets) Create(ctx context.Context, daemonSet *v1beta1.DaemonSet, opts v1.CreateOptions) (result *v1beta1.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(daemonsetsResource, c.ns, daemonSet), &v1beta1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.DaemonSet), err
    -}
    -
    -// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any.
    -func (c *FakeDaemonSets) Update(ctx context.Context, daemonSet *v1beta1.DaemonSet, opts v1.UpdateOptions) (result *v1beta1.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(daemonsetsResource, c.ns, daemonSet), &v1beta1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.DaemonSet), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeDaemonSets) UpdateStatus(ctx context.Context, daemonSet *v1beta1.DaemonSet, opts v1.UpdateOptions) (*v1beta1.DaemonSet, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(daemonsetsResource, "status", c.ns, daemonSet), &v1beta1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.DaemonSet), err
    -}
    -
    -// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs.
    -func (c *FakeDaemonSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(daemonsetsResource, c.ns, name, opts), &v1beta1.DaemonSet{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeDaemonSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(daemonsetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.DaemonSetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched daemonSet.
    -func (c *FakeDaemonSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.DaemonSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, name, pt, data, subresources...), &v1beta1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.DaemonSet), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied daemonSet.
    -func (c *FakeDaemonSets) Apply(ctx context.Context, daemonSet *extensionsv1beta1.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.DaemonSet), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeDaemonSets) ApplyStatus(ctx context.Context, daemonSet *extensionsv1beta1.DaemonSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.DaemonSet, err error) {
    -	if daemonSet == nil {
    -		return nil, fmt.Errorf("daemonSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(daemonSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := daemonSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("daemonSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta1.DaemonSet{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeDaemonSets(fake *FakeExtensionsV1beta1, namespace string) typedextensionsv1beta1.DaemonSetInterface {
    +	return &fakeDaemonSets{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.DaemonSet, *v1beta1.DaemonSetList, *extensionsv1beta1.DaemonSetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("daemonsets"),
    +			v1beta1.SchemeGroupVersion.WithKind("DaemonSet"),
    +			func() *v1beta1.DaemonSet { return &v1beta1.DaemonSet{} },
    +			func() *v1beta1.DaemonSetList { return &v1beta1.DaemonSetList{} },
    +			func(dst, src *v1beta1.DaemonSetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.DaemonSetList) []*v1beta1.DaemonSet { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.DaemonSetList, items []*v1beta1.DaemonSet) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.DaemonSet), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go
    index e399361a92e7..c8fd8281a7d7 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go
    @@ -19,200 +19,71 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    +	context "context"
     	json "encoding/json"
    -	"fmt"
    +	fmt "fmt"
     
     	v1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
     	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	extensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedextensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
     	testing "k8s.io/client-go/testing"
     )
     
    -// FakeDeployments implements DeploymentInterface
    -type FakeDeployments struct {
    +// fakeDeployments implements DeploymentInterface
    +type fakeDeployments struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.Deployment, *v1beta1.DeploymentList, *extensionsv1beta1.DeploymentApplyConfiguration]
     	Fake *FakeExtensionsV1beta1
    -	ns   string
     }
     
    -var deploymentsResource = v1beta1.SchemeGroupVersion.WithResource("deployments")
    -
    -var deploymentsKind = v1beta1.SchemeGroupVersion.WithKind("Deployment")
    -
    -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any.
    -func (c *FakeDeployments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Deployments that match those selectors.
    -func (c *FakeDeployments) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.DeploymentList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &v1beta1.DeploymentList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.DeploymentList{ListMeta: obj.(*v1beta1.DeploymentList).ListMeta}
    -	for _, item := range obj.(*v1beta1.DeploymentList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested deployments.
    -func (c *FakeDeployments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(deploymentsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a deployment and creates it.  Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *FakeDeployments) Create(ctx context.Context, deployment *v1beta1.Deployment, opts v1.CreateOptions) (result *v1beta1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any.
    -func (c *FakeDeployments) Update(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (result *v1beta1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeDeployments) UpdateStatus(ctx context.Context, deployment *v1beta1.Deployment, opts v1.UpdateOptions) (*v1beta1.Deployment, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeDeployments(fake *FakeExtensionsV1beta1, namespace string) typedextensionsv1beta1.DeploymentInterface {
    +	return &fakeDeployments{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.Deployment, *v1beta1.DeploymentList, *extensionsv1beta1.DeploymentApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("deployments"),
    +			v1beta1.SchemeGroupVersion.WithKind("Deployment"),
    +			func() *v1beta1.Deployment { return &v1beta1.Deployment{} },
    +			func() *v1beta1.DeploymentList { return &v1beta1.DeploymentList{} },
    +			func(dst, src *v1beta1.DeploymentList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.DeploymentList) []*v1beta1.Deployment { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.DeploymentList, items []*v1beta1.Deployment) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// Delete takes name of the deployment and deletes it. Returns an error if one occurs.
    -func (c *FakeDeployments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(deploymentsResource, c.ns, name, opts), &v1beta1.Deployment{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeDeployments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.DeploymentList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched deployment.
    -func (c *FakeDeployments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Deployment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, pt, data, subresources...), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied deployment.
    -func (c *FakeDeployments) Apply(ctx context.Context, deployment *extensionsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeDeployments) ApplyStatus(ctx context.Context, deployment *extensionsv1beta1.DeploymentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Deployment, err error) {
    -	if deployment == nil {
    -		return nil, fmt.Errorf("deployment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(deployment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := deployment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("deployment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta1.Deployment{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Deployment), err
     }
     
     // GetScale takes name of the deployment, and returns the corresponding scale object, and an error if there is any.
    -func (c *FakeDeployments) GetScale(ctx context.Context, deploymentName string, options v1.GetOptions) (result *v1beta1.Scale, err error) {
    +func (c *fakeDeployments) GetScale(ctx context.Context, deploymentName string, options v1.GetOptions) (result *v1beta1.Scale, err error) {
    +	emptyResult := &v1beta1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewGetSubresourceAction(deploymentsResource, c.ns, "scale", deploymentName), &v1beta1.Scale{})
    +		Invokes(testing.NewGetSubresourceActionWithOptions(c.Resource(), c.Namespace(), "scale", deploymentName, options), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1beta1.Scale), err
     }
     
     // UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
    -func (c *FakeDeployments) UpdateScale(ctx context.Context, deploymentName string, scale *v1beta1.Scale, opts v1.UpdateOptions) (result *v1beta1.Scale, err error) {
    +func (c *fakeDeployments) UpdateScale(ctx context.Context, deploymentName string, scale *v1beta1.Scale, opts v1.UpdateOptions) (result *v1beta1.Scale, err error) {
    +	emptyResult := &v1beta1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "scale", c.ns, scale), &v1beta1.Scale{})
    +		Invokes(testing.NewUpdateSubresourceActionWithOptions(c.Resource(), "scale", c.Namespace(), scale, opts), &v1beta1.Scale{})
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1beta1.Scale), err
     }
     
     // ApplyScale takes top resource name and the apply declarative configuration for scale,
     // applies it and returns the applied scale, and an error, if there is any.
    -func (c *FakeDeployments) ApplyScale(ctx context.Context, deploymentName string, scale *extensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Scale, err error) {
    +func (c *fakeDeployments) ApplyScale(ctx context.Context, deploymentName string, scale *extensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Scale, err error) {
     	if scale == nil {
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
    @@ -220,11 +91,12 @@ func (c *FakeDeployments) ApplyScale(ctx context.Context, deploymentName string,
     	if err != nil {
     		return nil, err
     	}
    +	emptyResult := &v1beta1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, deploymentName, types.ApplyPatchType, data, "status"), &v1beta1.Scale{})
    +		Invokes(testing.NewPatchSubresourceActionWithOptions(c.Resource(), c.Namespace(), deploymentName, types.ApplyPatchType, data, opts.ToPatchOptions(), "scale"), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1beta1.Scale), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go
    index 6ea1acd85338..faa1cc810e16 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go
    @@ -24,10 +24,10 @@ import (
     	core "k8s.io/client-go/testing"
     )
     
    -func (c *FakeDeployments) Rollback(ctx context.Context, deploymentRollback *v1beta1.DeploymentRollback, opts metav1.CreateOptions) error {
    +func (c *fakeDeployments) Rollback(ctx context.Context, deploymentRollback *v1beta1.DeploymentRollback, opts metav1.CreateOptions) error {
     	action := core.CreateActionImpl{}
     	action.Verb = "create"
    -	action.Resource = deploymentsResource
    +	action.Resource = c.Resource()
     	action.Subresource = "rollback"
     	action.Object = deploymentRollback
     
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go
    index a54c182eaeda..87a5ed86e7f8 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go
    @@ -29,23 +29,23 @@ type FakeExtensionsV1beta1 struct {
     }
     
     func (c *FakeExtensionsV1beta1) DaemonSets(namespace string) v1beta1.DaemonSetInterface {
    -	return &FakeDaemonSets{c, namespace}
    +	return newFakeDaemonSets(c, namespace)
     }
     
     func (c *FakeExtensionsV1beta1) Deployments(namespace string) v1beta1.DeploymentInterface {
    -	return &FakeDeployments{c, namespace}
    +	return newFakeDeployments(c, namespace)
     }
     
     func (c *FakeExtensionsV1beta1) Ingresses(namespace string) v1beta1.IngressInterface {
    -	return &FakeIngresses{c, namespace}
    +	return newFakeIngresses(c, namespace)
     }
     
     func (c *FakeExtensionsV1beta1) NetworkPolicies(namespace string) v1beta1.NetworkPolicyInterface {
    -	return &FakeNetworkPolicies{c, namespace}
    +	return newFakeNetworkPolicies(c, namespace)
     }
     
     func (c *FakeExtensionsV1beta1) ReplicaSets(namespace string) v1beta1.ReplicaSetInterface {
    -	return &FakeReplicaSets{c, namespace}
    +	return newFakeReplicaSets(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go
    index 48ae51e80da8..aaa43d78aedc 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go
    @@ -19,171 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/extensions/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	extensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedextensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
     )
     
    -// FakeIngresses implements IngressInterface
    -type FakeIngresses struct {
    +// fakeIngresses implements IngressInterface
    +type fakeIngresses struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.Ingress, *v1beta1.IngressList, *extensionsv1beta1.IngressApplyConfiguration]
     	Fake *FakeExtensionsV1beta1
    -	ns   string
    -}
    -
    -var ingressesResource = v1beta1.SchemeGroupVersion.WithResource("ingresses")
    -
    -var ingressesKind = v1beta1.SchemeGroupVersion.WithKind("Ingress")
    -
    -// Get takes name of the ingress, and returns the corresponding ingress object, and an error if there is any.
    -func (c *FakeIngresses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(ingressesResource, c.ns, name), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Ingresses that match those selectors.
    -func (c *FakeIngresses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.IngressList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(ingressesResource, ingressesKind, c.ns, opts), &v1beta1.IngressList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.IngressList{ListMeta: obj.(*v1beta1.IngressList).ListMeta}
    -	for _, item := range obj.(*v1beta1.IngressList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested ingresses.
    -func (c *FakeIngresses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(ingressesResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a ingress and creates it.  Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *FakeIngresses) Create(ctx context.Context, ingress *v1beta1.Ingress, opts v1.CreateOptions) (result *v1beta1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(ingressesResource, c.ns, ingress), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
    -}
    -
    -// Update takes the representation of a ingress and updates it. Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *FakeIngresses) Update(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (result *v1beta1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(ingressesResource, c.ns, ingress), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeIngresses) UpdateStatus(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (*v1beta1.Ingress, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(ingressesResource, "status", c.ns, ingress), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
    -}
    -
    -// Delete takes name of the ingress and deletes it. Returns an error if one occurs.
    -func (c *FakeIngresses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(ingressesResource, c.ns, name, opts), &v1beta1.Ingress{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeIngresses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(ingressesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.IngressList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched ingress.
    -func (c *FakeIngresses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, name, pt, data, subresources...), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied ingress.
    -func (c *FakeIngresses) Apply(ctx context.Context, ingress *extensionsv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeIngresses) ApplyStatus(ctx context.Context, ingress *extensionsv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeIngresses(fake *FakeExtensionsV1beta1, namespace string) typedextensionsv1beta1.IngressInterface {
    +	return &fakeIngresses{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.Ingress, *v1beta1.IngressList, *extensionsv1beta1.IngressApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("ingresses"),
    +			v1beta1.SchemeGroupVersion.WithKind("Ingress"),
    +			func() *v1beta1.Ingress { return &v1beta1.Ingress{} },
    +			func() *v1beta1.IngressList { return &v1beta1.IngressList{} },
    +			func(dst, src *v1beta1.IngressList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.IngressList) []*v1beta1.Ingress { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.IngressList, items []*v1beta1.Ingress) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.Ingress), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_networkpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_networkpolicy.go
    index a32022140a93..30f53b997522 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_networkpolicy.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_networkpolicy.go
    @@ -19,136 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/extensions/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	extensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedextensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
     )
     
    -// FakeNetworkPolicies implements NetworkPolicyInterface
    -type FakeNetworkPolicies struct {
    +// fakeNetworkPolicies implements NetworkPolicyInterface
    +type fakeNetworkPolicies struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.NetworkPolicy, *v1beta1.NetworkPolicyList, *extensionsv1beta1.NetworkPolicyApplyConfiguration]
     	Fake *FakeExtensionsV1beta1
    -	ns   string
    -}
    -
    -var networkpoliciesResource = v1beta1.SchemeGroupVersion.WithResource("networkpolicies")
    -
    -var networkpoliciesKind = v1beta1.SchemeGroupVersion.WithKind("NetworkPolicy")
    -
    -// Get takes name of the networkPolicy, and returns the corresponding networkPolicy object, and an error if there is any.
    -func (c *FakeNetworkPolicies) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.NetworkPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(networkpoliciesResource, c.ns, name), &v1beta1.NetworkPolicy{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.NetworkPolicy), err
    -}
    -
    -// List takes label and field selectors, and returns the list of NetworkPolicies that match those selectors.
    -func (c *FakeNetworkPolicies) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.NetworkPolicyList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(networkpoliciesResource, networkpoliciesKind, c.ns, opts), &v1beta1.NetworkPolicyList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.NetworkPolicyList{ListMeta: obj.(*v1beta1.NetworkPolicyList).ListMeta}
    -	for _, item := range obj.(*v1beta1.NetworkPolicyList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested networkPolicies.
    -func (c *FakeNetworkPolicies) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(networkpoliciesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a networkPolicy and creates it.  Returns the server's representation of the networkPolicy, and an error, if there is any.
    -func (c *FakeNetworkPolicies) Create(ctx context.Context, networkPolicy *v1beta1.NetworkPolicy, opts v1.CreateOptions) (result *v1beta1.NetworkPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(networkpoliciesResource, c.ns, networkPolicy), &v1beta1.NetworkPolicy{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.NetworkPolicy), err
    -}
    -
    -// Update takes the representation of a networkPolicy and updates it. Returns the server's representation of the networkPolicy, and an error, if there is any.
    -func (c *FakeNetworkPolicies) Update(ctx context.Context, networkPolicy *v1beta1.NetworkPolicy, opts v1.UpdateOptions) (result *v1beta1.NetworkPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(networkpoliciesResource, c.ns, networkPolicy), &v1beta1.NetworkPolicy{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.NetworkPolicy), err
    -}
    -
    -// Delete takes name of the networkPolicy and deletes it. Returns an error if one occurs.
    -func (c *FakeNetworkPolicies) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(networkpoliciesResource, c.ns, name, opts), &v1beta1.NetworkPolicy{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeNetworkPolicies) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(networkpoliciesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.NetworkPolicyList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched networkPolicy.
    -func (c *FakeNetworkPolicies) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.NetworkPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(networkpoliciesResource, c.ns, name, pt, data, subresources...), &v1beta1.NetworkPolicy{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.NetworkPolicy), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied networkPolicy.
    -func (c *FakeNetworkPolicies) Apply(ctx context.Context, networkPolicy *extensionsv1beta1.NetworkPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.NetworkPolicy, err error) {
    -	if networkPolicy == nil {
    -		return nil, fmt.Errorf("networkPolicy provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(networkPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := networkPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("networkPolicy.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(networkpoliciesResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.NetworkPolicy{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeNetworkPolicies(fake *FakeExtensionsV1beta1, namespace string) typedextensionsv1beta1.NetworkPolicyInterface {
    +	return &fakeNetworkPolicies{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.NetworkPolicy, *v1beta1.NetworkPolicyList, *extensionsv1beta1.NetworkPolicyApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("networkpolicies"),
    +			v1beta1.SchemeGroupVersion.WithKind("NetworkPolicy"),
    +			func() *v1beta1.NetworkPolicy { return &v1beta1.NetworkPolicy{} },
    +			func() *v1beta1.NetworkPolicyList { return &v1beta1.NetworkPolicyList{} },
    +			func(dst, src *v1beta1.NetworkPolicyList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.NetworkPolicyList) []*v1beta1.NetworkPolicy {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.NetworkPolicyList, items []*v1beta1.NetworkPolicy) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.NetworkPolicy), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go
    index 42da6fa8b642..86ae1621ddaa 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go
    @@ -19,200 +19,71 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    +	context "context"
     	json "encoding/json"
    -	"fmt"
    +	fmt "fmt"
     
     	v1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
     	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	extensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedextensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
     	testing "k8s.io/client-go/testing"
     )
     
    -// FakeReplicaSets implements ReplicaSetInterface
    -type FakeReplicaSets struct {
    +// fakeReplicaSets implements ReplicaSetInterface
    +type fakeReplicaSets struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ReplicaSet, *v1beta1.ReplicaSetList, *extensionsv1beta1.ReplicaSetApplyConfiguration]
     	Fake *FakeExtensionsV1beta1
    -	ns   string
     }
     
    -var replicasetsResource = v1beta1.SchemeGroupVersion.WithResource("replicasets")
    -
    -var replicasetsKind = v1beta1.SchemeGroupVersion.WithKind("ReplicaSet")
    -
    -// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any.
    -func (c *FakeReplicaSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(replicasetsResource, c.ns, name), &v1beta1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ReplicaSet), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors.
    -func (c *FakeReplicaSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ReplicaSetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(replicasetsResource, replicasetsKind, c.ns, opts), &v1beta1.ReplicaSetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.ReplicaSetList{ListMeta: obj.(*v1beta1.ReplicaSetList).ListMeta}
    -	for _, item := range obj.(*v1beta1.ReplicaSetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested replicaSets.
    -func (c *FakeReplicaSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(replicasetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a replicaSet and creates it.  Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *FakeReplicaSets) Create(ctx context.Context, replicaSet *v1beta1.ReplicaSet, opts v1.CreateOptions) (result *v1beta1.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(replicasetsResource, c.ns, replicaSet), &v1beta1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ReplicaSet), err
    -}
    -
    -// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *FakeReplicaSets) Update(ctx context.Context, replicaSet *v1beta1.ReplicaSet, opts v1.UpdateOptions) (result *v1beta1.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(replicasetsResource, c.ns, replicaSet), &v1beta1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ReplicaSet), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeReplicaSets) UpdateStatus(ctx context.Context, replicaSet *v1beta1.ReplicaSet, opts v1.UpdateOptions) (*v1beta1.ReplicaSet, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "status", c.ns, replicaSet), &v1beta1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeReplicaSets(fake *FakeExtensionsV1beta1, namespace string) typedextensionsv1beta1.ReplicaSetInterface {
    +	return &fakeReplicaSets{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ReplicaSet, *v1beta1.ReplicaSetList, *extensionsv1beta1.ReplicaSetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("replicasets"),
    +			v1beta1.SchemeGroupVersion.WithKind("ReplicaSet"),
    +			func() *v1beta1.ReplicaSet { return &v1beta1.ReplicaSet{} },
    +			func() *v1beta1.ReplicaSetList { return &v1beta1.ReplicaSetList{} },
    +			func(dst, src *v1beta1.ReplicaSetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ReplicaSetList) []*v1beta1.ReplicaSet { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.ReplicaSetList, items []*v1beta1.ReplicaSet) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.ReplicaSet), err
    -}
    -
    -// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs.
    -func (c *FakeReplicaSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(replicasetsResource, c.ns, name, opts), &v1beta1.ReplicaSet{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeReplicaSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(replicasetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.ReplicaSetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched replicaSet.
    -func (c *FakeReplicaSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ReplicaSet, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, name, pt, data, subresources...), &v1beta1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ReplicaSet), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied replicaSet.
    -func (c *FakeReplicaSets) Apply(ctx context.Context, replicaSet *extensionsv1beta1.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ReplicaSet), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeReplicaSets) ApplyStatus(ctx context.Context, replicaSet *extensionsv1beta1.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta1.ReplicaSet{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ReplicaSet), err
     }
     
     // GetScale takes name of the replicaSet, and returns the corresponding scale object, and an error if there is any.
    -func (c *FakeReplicaSets) GetScale(ctx context.Context, replicaSetName string, options v1.GetOptions) (result *v1beta1.Scale, err error) {
    +func (c *fakeReplicaSets) GetScale(ctx context.Context, replicaSetName string, options v1.GetOptions) (result *v1beta1.Scale, err error) {
    +	emptyResult := &v1beta1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewGetSubresourceAction(replicasetsResource, c.ns, "scale", replicaSetName), &v1beta1.Scale{})
    +		Invokes(testing.NewGetSubresourceActionWithOptions(c.Resource(), c.Namespace(), "scale", replicaSetName, options), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1beta1.Scale), err
     }
     
     // UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
    -func (c *FakeReplicaSets) UpdateScale(ctx context.Context, replicaSetName string, scale *v1beta1.Scale, opts v1.UpdateOptions) (result *v1beta1.Scale, err error) {
    +func (c *fakeReplicaSets) UpdateScale(ctx context.Context, replicaSetName string, scale *v1beta1.Scale, opts v1.UpdateOptions) (result *v1beta1.Scale, err error) {
    +	emptyResult := &v1beta1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "scale", c.ns, scale), &v1beta1.Scale{})
    +		Invokes(testing.NewUpdateSubresourceActionWithOptions(c.Resource(), "scale", c.Namespace(), scale, opts), &v1beta1.Scale{})
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1beta1.Scale), err
     }
     
     // ApplyScale takes top resource name and the apply declarative configuration for scale,
     // applies it and returns the applied scale, and an error, if there is any.
    -func (c *FakeReplicaSets) ApplyScale(ctx context.Context, replicaSetName string, scale *extensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Scale, err error) {
    +func (c *fakeReplicaSets) ApplyScale(ctx context.Context, replicaSetName string, scale *extensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Scale, err error) {
     	if scale == nil {
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
    @@ -220,11 +91,12 @@ func (c *FakeReplicaSets) ApplyScale(ctx context.Context, replicaSetName string,
     	if err != nil {
     		return nil, err
     	}
    +	emptyResult := &v1beta1.Scale{}
     	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, replicaSetName, types.ApplyPatchType, data, "status"), &v1beta1.Scale{})
    +		Invokes(testing.NewPatchSubresourceActionWithOptions(c.Resource(), c.Namespace(), replicaSetName, types.ApplyPatchType, data, opts.ToPatchOptions(), "scale"), emptyResult)
     
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*v1beta1.Scale), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go
    index dd4012cc2332..9a24621eae6c 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	extensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	applyconfigurationsextensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // IngressesGetter has a method to return a IngressInterface.
    @@ -41,216 +38,38 @@ type IngressesGetter interface {
     
     // IngressInterface has methods to work with Ingress resources.
     type IngressInterface interface {
    -	Create(ctx context.Context, ingress *v1beta1.Ingress, opts v1.CreateOptions) (*v1beta1.Ingress, error)
    -	Update(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (*v1beta1.Ingress, error)
    -	UpdateStatus(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (*v1beta1.Ingress, error)
    +	Create(ctx context.Context, ingress *extensionsv1beta1.Ingress, opts v1.CreateOptions) (*extensionsv1beta1.Ingress, error)
    +	Update(ctx context.Context, ingress *extensionsv1beta1.Ingress, opts v1.UpdateOptions) (*extensionsv1beta1.Ingress, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, ingress *extensionsv1beta1.Ingress, opts v1.UpdateOptions) (*extensionsv1beta1.Ingress, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.Ingress, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.IngressList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*extensionsv1beta1.Ingress, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*extensionsv1beta1.IngressList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Ingress, err error)
    -	Apply(ctx context.Context, ingress *extensionsv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error)
    -	ApplyStatus(ctx context.Context, ingress *extensionsv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *extensionsv1beta1.Ingress, err error)
    +	Apply(ctx context.Context, ingress *applyconfigurationsextensionsv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.Ingress, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, ingress *applyconfigurationsextensionsv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.Ingress, err error)
     	IngressExpansion
     }
     
     // ingresses implements IngressInterface
     type ingresses struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*extensionsv1beta1.Ingress, *extensionsv1beta1.IngressList, *applyconfigurationsextensionsv1beta1.IngressApplyConfiguration]
     }
     
     // newIngresses returns a Ingresses
     func newIngresses(c *ExtensionsV1beta1Client, namespace string) *ingresses {
     	return &ingresses{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*extensionsv1beta1.Ingress, *extensionsv1beta1.IngressList, *applyconfigurationsextensionsv1beta1.IngressApplyConfiguration](
    +			"ingresses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *extensionsv1beta1.Ingress { return &extensionsv1beta1.Ingress{} },
    +			func() *extensionsv1beta1.IngressList { return &extensionsv1beta1.IngressList{} },
    +			gentype.PrefersProtobuf[*extensionsv1beta1.Ingress](),
    +		),
     	}
     }
    -
    -// Get takes name of the ingress, and returns the corresponding ingress object, and an error if there is any.
    -func (c *ingresses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Ingress, err error) {
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Ingresses that match those selectors.
    -func (c *ingresses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.IngressList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.IngressList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested ingresses.
    -func (c *ingresses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a ingress and creates it.  Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *ingresses) Create(ctx context.Context, ingress *v1beta1.Ingress, opts v1.CreateOptions) (result *v1beta1.Ingress, err error) {
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a ingress and updates it. Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *ingresses) Update(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (result *v1beta1.Ingress, err error) {
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(ingress.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *ingresses) UpdateStatus(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (result *v1beta1.Ingress, err error) {
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(ingress.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the ingress and deletes it. Returns an error if one occurs.
    -func (c *ingresses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *ingresses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched ingress.
    -func (c *ingresses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Ingress, err error) {
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied ingress.
    -func (c *ingresses) Apply(ctx context.Context, ingress *extensionsv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *ingresses) ApplyStatus(ctx context.Context, ingress *extensionsv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/networkpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/networkpolicy.go
    index 978b26db0337..ce6a45a2700b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/networkpolicy.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/networkpolicy.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	extensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	applyconfigurationsextensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // NetworkPoliciesGetter has a method to return a NetworkPolicyInterface.
    @@ -41,168 +38,34 @@ type NetworkPoliciesGetter interface {
     
     // NetworkPolicyInterface has methods to work with NetworkPolicy resources.
     type NetworkPolicyInterface interface {
    -	Create(ctx context.Context, networkPolicy *v1beta1.NetworkPolicy, opts v1.CreateOptions) (*v1beta1.NetworkPolicy, error)
    -	Update(ctx context.Context, networkPolicy *v1beta1.NetworkPolicy, opts v1.UpdateOptions) (*v1beta1.NetworkPolicy, error)
    +	Create(ctx context.Context, networkPolicy *extensionsv1beta1.NetworkPolicy, opts v1.CreateOptions) (*extensionsv1beta1.NetworkPolicy, error)
    +	Update(ctx context.Context, networkPolicy *extensionsv1beta1.NetworkPolicy, opts v1.UpdateOptions) (*extensionsv1beta1.NetworkPolicy, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.NetworkPolicy, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.NetworkPolicyList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*extensionsv1beta1.NetworkPolicy, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*extensionsv1beta1.NetworkPolicyList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.NetworkPolicy, err error)
    -	Apply(ctx context.Context, networkPolicy *extensionsv1beta1.NetworkPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.NetworkPolicy, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *extensionsv1beta1.NetworkPolicy, err error)
    +	Apply(ctx context.Context, networkPolicy *applyconfigurationsextensionsv1beta1.NetworkPolicyApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.NetworkPolicy, err error)
     	NetworkPolicyExpansion
     }
     
     // networkPolicies implements NetworkPolicyInterface
     type networkPolicies struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*extensionsv1beta1.NetworkPolicy, *extensionsv1beta1.NetworkPolicyList, *applyconfigurationsextensionsv1beta1.NetworkPolicyApplyConfiguration]
     }
     
     // newNetworkPolicies returns a NetworkPolicies
     func newNetworkPolicies(c *ExtensionsV1beta1Client, namespace string) *networkPolicies {
     	return &networkPolicies{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*extensionsv1beta1.NetworkPolicy, *extensionsv1beta1.NetworkPolicyList, *applyconfigurationsextensionsv1beta1.NetworkPolicyApplyConfiguration](
    +			"networkpolicies",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *extensionsv1beta1.NetworkPolicy { return &extensionsv1beta1.NetworkPolicy{} },
    +			func() *extensionsv1beta1.NetworkPolicyList { return &extensionsv1beta1.NetworkPolicyList{} },
    +			gentype.PrefersProtobuf[*extensionsv1beta1.NetworkPolicy](),
    +		),
     	}
     }
    -
    -// Get takes name of the networkPolicy, and returns the corresponding networkPolicy object, and an error if there is any.
    -func (c *networkPolicies) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.NetworkPolicy, err error) {
    -	result = &v1beta1.NetworkPolicy{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of NetworkPolicies that match those selectors.
    -func (c *networkPolicies) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.NetworkPolicyList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.NetworkPolicyList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested networkPolicies.
    -func (c *networkPolicies) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a networkPolicy and creates it.  Returns the server's representation of the networkPolicy, and an error, if there is any.
    -func (c *networkPolicies) Create(ctx context.Context, networkPolicy *v1beta1.NetworkPolicy, opts v1.CreateOptions) (result *v1beta1.NetworkPolicy, err error) {
    -	result = &v1beta1.NetworkPolicy{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(networkPolicy).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a networkPolicy and updates it. Returns the server's representation of the networkPolicy, and an error, if there is any.
    -func (c *networkPolicies) Update(ctx context.Context, networkPolicy *v1beta1.NetworkPolicy, opts v1.UpdateOptions) (result *v1beta1.NetworkPolicy, err error) {
    -	result = &v1beta1.NetworkPolicy{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		Name(networkPolicy.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(networkPolicy).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the networkPolicy and deletes it. Returns an error if one occurs.
    -func (c *networkPolicies) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *networkPolicies) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched networkPolicy.
    -func (c *networkPolicies) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.NetworkPolicy, err error) {
    -	result = &v1beta1.NetworkPolicy{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied networkPolicy.
    -func (c *networkPolicies) Apply(ctx context.Context, networkPolicy *extensionsv1beta1.NetworkPolicyApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.NetworkPolicy, err error) {
    -	if networkPolicy == nil {
    -		return nil, fmt.Errorf("networkPolicy provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(networkPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := networkPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("networkPolicy.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.NetworkPolicy{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go
    index 3c907a3a048f..f918be417bda 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go
    @@ -19,18 +19,17 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
    +	fmt "fmt"
     
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	extensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	applyconfigurationsextensionsv1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
    +	apply "k8s.io/client-go/util/apply"
     )
     
     // ReplicaSetsGetter has a method to return a ReplicaSetInterface.
    @@ -41,229 +40,52 @@ type ReplicaSetsGetter interface {
     
     // ReplicaSetInterface has methods to work with ReplicaSet resources.
     type ReplicaSetInterface interface {
    -	Create(ctx context.Context, replicaSet *v1beta1.ReplicaSet, opts v1.CreateOptions) (*v1beta1.ReplicaSet, error)
    -	Update(ctx context.Context, replicaSet *v1beta1.ReplicaSet, opts v1.UpdateOptions) (*v1beta1.ReplicaSet, error)
    -	UpdateStatus(ctx context.Context, replicaSet *v1beta1.ReplicaSet, opts v1.UpdateOptions) (*v1beta1.ReplicaSet, error)
    +	Create(ctx context.Context, replicaSet *extensionsv1beta1.ReplicaSet, opts v1.CreateOptions) (*extensionsv1beta1.ReplicaSet, error)
    +	Update(ctx context.Context, replicaSet *extensionsv1beta1.ReplicaSet, opts v1.UpdateOptions) (*extensionsv1beta1.ReplicaSet, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, replicaSet *extensionsv1beta1.ReplicaSet, opts v1.UpdateOptions) (*extensionsv1beta1.ReplicaSet, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.ReplicaSet, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ReplicaSetList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*extensionsv1beta1.ReplicaSet, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*extensionsv1beta1.ReplicaSetList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ReplicaSet, err error)
    -	Apply(ctx context.Context, replicaSet *extensionsv1beta1.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ReplicaSet, err error)
    -	ApplyStatus(ctx context.Context, replicaSet *extensionsv1beta1.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ReplicaSet, err error)
    -	GetScale(ctx context.Context, replicaSetName string, options v1.GetOptions) (*v1beta1.Scale, error)
    -	UpdateScale(ctx context.Context, replicaSetName string, scale *v1beta1.Scale, opts v1.UpdateOptions) (*v1beta1.Scale, error)
    -	ApplyScale(ctx context.Context, replicaSetName string, scale *extensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (*v1beta1.Scale, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *extensionsv1beta1.ReplicaSet, err error)
    +	Apply(ctx context.Context, replicaSet *applyconfigurationsextensionsv1beta1.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.ReplicaSet, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, replicaSet *applyconfigurationsextensionsv1beta1.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.ReplicaSet, err error)
    +	GetScale(ctx context.Context, replicaSetName string, options v1.GetOptions) (*extensionsv1beta1.Scale, error)
    +	UpdateScale(ctx context.Context, replicaSetName string, scale *extensionsv1beta1.Scale, opts v1.UpdateOptions) (*extensionsv1beta1.Scale, error)
    +	ApplyScale(ctx context.Context, replicaSetName string, scale *applyconfigurationsextensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (*extensionsv1beta1.Scale, error)
     
     	ReplicaSetExpansion
     }
     
     // replicaSets implements ReplicaSetInterface
     type replicaSets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*extensionsv1beta1.ReplicaSet, *extensionsv1beta1.ReplicaSetList, *applyconfigurationsextensionsv1beta1.ReplicaSetApplyConfiguration]
     }
     
     // newReplicaSets returns a ReplicaSets
     func newReplicaSets(c *ExtensionsV1beta1Client, namespace string) *replicaSets {
     	return &replicaSets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*extensionsv1beta1.ReplicaSet, *extensionsv1beta1.ReplicaSetList, *applyconfigurationsextensionsv1beta1.ReplicaSetApplyConfiguration](
    +			"replicasets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *extensionsv1beta1.ReplicaSet { return &extensionsv1beta1.ReplicaSet{} },
    +			func() *extensionsv1beta1.ReplicaSetList { return &extensionsv1beta1.ReplicaSetList{} },
    +			gentype.PrefersProtobuf[*extensionsv1beta1.ReplicaSet](),
    +		),
     	}
     }
     
    -// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any.
    -func (c *replicaSets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ReplicaSet, err error) {
    -	result = &v1beta1.ReplicaSet{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors.
    -func (c *replicaSets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ReplicaSetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.ReplicaSetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested replicaSets.
    -func (c *replicaSets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a replicaSet and creates it.  Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *replicaSets) Create(ctx context.Context, replicaSet *v1beta1.ReplicaSet, opts v1.CreateOptions) (result *v1beta1.ReplicaSet, err error) {
    -	result = &v1beta1.ReplicaSet{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicaSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any.
    -func (c *replicaSets) Update(ctx context.Context, replicaSet *v1beta1.ReplicaSet, opts v1.UpdateOptions) (result *v1beta1.ReplicaSet, err error) {
    -	result = &v1beta1.ReplicaSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(replicaSet.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicaSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *replicaSets) UpdateStatus(ctx context.Context, replicaSet *v1beta1.ReplicaSet, opts v1.UpdateOptions) (result *v1beta1.ReplicaSet, err error) {
    -	result = &v1beta1.ReplicaSet{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(replicaSet.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(replicaSet).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs.
    -func (c *replicaSets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *replicaSets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched replicaSet.
    -func (c *replicaSets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ReplicaSet, err error) {
    -	result = &v1beta1.ReplicaSet{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied replicaSet.
    -func (c *replicaSets) Apply(ctx context.Context, replicaSet *extensionsv1beta1.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.ReplicaSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *replicaSets) ApplyStatus(ctx context.Context, replicaSet *extensionsv1beta1.ReplicaSetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ReplicaSet, err error) {
    -	if replicaSet == nil {
    -		return nil, fmt.Errorf("replicaSet provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(replicaSet)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := replicaSet.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("replicaSet.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.ReplicaSet{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("replicasets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// GetScale takes name of the replicaSet, and returns the corresponding v1beta1.Scale object, and an error if there is any.
    -func (c *replicaSets) GetScale(ctx context.Context, replicaSetName string, options v1.GetOptions) (result *v1beta1.Scale, err error) {
    -	result = &v1beta1.Scale{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    +// GetScale takes name of the replicaSet, and returns the corresponding extensionsv1beta1.Scale object, and an error if there is any.
    +func (c *replicaSets) GetScale(ctx context.Context, replicaSetName string, options v1.GetOptions) (result *extensionsv1beta1.Scale, err error) {
    +	result = &extensionsv1beta1.Scale{}
    +	err = c.GetClient().Get().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("replicasets").
     		Name(replicaSetName).
     		SubResource("scale").
    @@ -274,10 +96,11 @@ func (c *replicaSets) GetScale(ctx context.Context, replicaSetName string, optio
     }
     
     // UpdateScale takes the top resource name and the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any.
    -func (c *replicaSets) UpdateScale(ctx context.Context, replicaSetName string, scale *v1beta1.Scale, opts v1.UpdateOptions) (result *v1beta1.Scale, err error) {
    -	result = &v1beta1.Scale{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    +func (c *replicaSets) UpdateScale(ctx context.Context, replicaSetName string, scale *extensionsv1beta1.Scale, opts v1.UpdateOptions) (result *extensionsv1beta1.Scale, err error) {
    +	result = &extensionsv1beta1.Scale{}
    +	err = c.GetClient().Put().
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("replicasets").
     		Name(replicaSetName).
     		SubResource("scale").
    @@ -290,24 +113,24 @@ func (c *replicaSets) UpdateScale(ctx context.Context, replicaSetName string, sc
     
     // ApplyScale takes top resource name and the apply declarative configuration for scale,
     // applies it and returns the applied scale, and an error, if there is any.
    -func (c *replicaSets) ApplyScale(ctx context.Context, replicaSetName string, scale *extensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Scale, err error) {
    +func (c *replicaSets) ApplyScale(ctx context.Context, replicaSetName string, scale *applyconfigurationsextensionsv1beta1.ScaleApplyConfiguration, opts v1.ApplyOptions) (result *extensionsv1beta1.Scale, err error) {
     	if scale == nil {
     		return nil, fmt.Errorf("scale provided to ApplyScale must not be nil")
     	}
     	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(scale)
    +	request, err := apply.NewRequest(c.GetClient(), scale)
     	if err != nil {
     		return nil, err
     	}
     
    -	result = &v1beta1.Scale{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    +	result = &extensionsv1beta1.Scale{}
    +	err = request.
    +		UseProtobufAsDefault().
    +		Namespace(c.GetNamespace()).
     		Resource("replicasets").
     		Name(replicaSetName).
     		SubResource("scale").
     		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
     		Do(ctx).
     		Into(result)
     	return
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_flowcontrol_client.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_flowcontrol_client.go
    index d15f4b242642..76238d6170c1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_flowcontrol_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_flowcontrol_client.go
    @@ -29,11 +29,11 @@ type FakeFlowcontrolV1 struct {
     }
     
     func (c *FakeFlowcontrolV1) FlowSchemas() v1.FlowSchemaInterface {
    -	return &FakeFlowSchemas{c}
    +	return newFakeFlowSchemas(c)
     }
     
     func (c *FakeFlowcontrolV1) PriorityLevelConfigurations() v1.PriorityLevelConfigurationInterface {
    -	return &FakePriorityLevelConfigurations{c}
    +	return newFakePriorityLevelConfigurations(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_flowschema.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_flowschema.go
    index 922a60d89bee..6f9405f51b4c 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_flowschema.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_flowschema.go
    @@ -19,160 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/flowcontrol/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	flowcontrolv1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedflowcontrolv1 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1"
     )
     
    -// FakeFlowSchemas implements FlowSchemaInterface
    -type FakeFlowSchemas struct {
    +// fakeFlowSchemas implements FlowSchemaInterface
    +type fakeFlowSchemas struct {
    +	*gentype.FakeClientWithListAndApply[*v1.FlowSchema, *v1.FlowSchemaList, *flowcontrolv1.FlowSchemaApplyConfiguration]
     	Fake *FakeFlowcontrolV1
     }
     
    -var flowschemasResource = v1.SchemeGroupVersion.WithResource("flowschemas")
    -
    -var flowschemasKind = v1.SchemeGroupVersion.WithKind("FlowSchema")
    -
    -// Get takes name of the flowSchema, and returns the corresponding flowSchema object, and an error if there is any.
    -func (c *FakeFlowSchemas) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(flowschemasResource, name), &v1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.FlowSchema), err
    -}
    -
    -// List takes label and field selectors, and returns the list of FlowSchemas that match those selectors.
    -func (c *FakeFlowSchemas) List(ctx context.Context, opts metav1.ListOptions) (result *v1.FlowSchemaList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(flowschemasResource, flowschemasKind, opts), &v1.FlowSchemaList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.FlowSchemaList{ListMeta: obj.(*v1.FlowSchemaList).ListMeta}
    -	for _, item := range obj.(*v1.FlowSchemaList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested flowSchemas.
    -func (c *FakeFlowSchemas) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(flowschemasResource, opts))
    -}
    -
    -// Create takes the representation of a flowSchema and creates it.  Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *FakeFlowSchemas) Create(ctx context.Context, flowSchema *v1.FlowSchema, opts metav1.CreateOptions) (result *v1.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(flowschemasResource, flowSchema), &v1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.FlowSchema), err
    -}
    -
    -// Update takes the representation of a flowSchema and updates it. Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *FakeFlowSchemas) Update(ctx context.Context, flowSchema *v1.FlowSchema, opts metav1.UpdateOptions) (result *v1.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(flowschemasResource, flowSchema), &v1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.FlowSchema), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeFlowSchemas) UpdateStatus(ctx context.Context, flowSchema *v1.FlowSchema, opts metav1.UpdateOptions) (*v1.FlowSchema, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(flowschemasResource, "status", flowSchema), &v1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.FlowSchema), err
    -}
    -
    -// Delete takes name of the flowSchema and deletes it. Returns an error if one occurs.
    -func (c *FakeFlowSchemas) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(flowschemasResource, name, opts), &v1.FlowSchema{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeFlowSchemas) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(flowschemasResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.FlowSchemaList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched flowSchema.
    -func (c *FakeFlowSchemas) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, name, pt, data, subresources...), &v1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.FlowSchema), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied flowSchema.
    -func (c *FakeFlowSchemas) Apply(ctx context.Context, flowSchema *flowcontrolv1.FlowSchemaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, *name, types.ApplyPatchType, data), &v1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.FlowSchema), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeFlowSchemas) ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1.FlowSchemaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, *name, types.ApplyPatchType, data, "status"), &v1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeFlowSchemas(fake *FakeFlowcontrolV1) typedflowcontrolv1.FlowSchemaInterface {
    +	return &fakeFlowSchemas{
    +		gentype.NewFakeClientWithListAndApply[*v1.FlowSchema, *v1.FlowSchemaList, *flowcontrolv1.FlowSchemaApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("flowschemas"),
    +			v1.SchemeGroupVersion.WithKind("FlowSchema"),
    +			func() *v1.FlowSchema { return &v1.FlowSchema{} },
    +			func() *v1.FlowSchemaList { return &v1.FlowSchemaList{} },
    +			func(dst, src *v1.FlowSchemaList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.FlowSchemaList) []*v1.FlowSchema { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.FlowSchemaList, items []*v1.FlowSchema) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.FlowSchema), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_prioritylevelconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_prioritylevelconfiguration.go
    index 27d958674881..a4be23679d34 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/fake/fake_prioritylevelconfiguration.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/flowcontrol/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	flowcontrolv1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedflowcontrolv1 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1"
     )
     
    -// FakePriorityLevelConfigurations implements PriorityLevelConfigurationInterface
    -type FakePriorityLevelConfigurations struct {
    +// fakePriorityLevelConfigurations implements PriorityLevelConfigurationInterface
    +type fakePriorityLevelConfigurations struct {
    +	*gentype.FakeClientWithListAndApply[*v1.PriorityLevelConfiguration, *v1.PriorityLevelConfigurationList, *flowcontrolv1.PriorityLevelConfigurationApplyConfiguration]
     	Fake *FakeFlowcontrolV1
     }
     
    -var prioritylevelconfigurationsResource = v1.SchemeGroupVersion.WithResource("prioritylevelconfigurations")
    -
    -var prioritylevelconfigurationsKind = v1.SchemeGroupVersion.WithKind("PriorityLevelConfiguration")
    -
    -// Get takes name of the priorityLevelConfiguration, and returns the corresponding priorityLevelConfiguration object, and an error if there is any.
    -func (c *FakePriorityLevelConfigurations) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(prioritylevelconfigurationsResource, name), &v1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PriorityLevelConfiguration), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityLevelConfigurations that match those selectors.
    -func (c *FakePriorityLevelConfigurations) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PriorityLevelConfigurationList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(prioritylevelconfigurationsResource, prioritylevelconfigurationsKind, opts), &v1.PriorityLevelConfigurationList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.PriorityLevelConfigurationList{ListMeta: obj.(*v1.PriorityLevelConfigurationList).ListMeta}
    -	for _, item := range obj.(*v1.PriorityLevelConfigurationList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityLevelConfigurations.
    -func (c *FakePriorityLevelConfigurations) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(prioritylevelconfigurationsResource, opts))
    -}
    -
    -// Create takes the representation of a priorityLevelConfiguration and creates it.  Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *FakePriorityLevelConfigurations) Create(ctx context.Context, priorityLevelConfiguration *v1.PriorityLevelConfiguration, opts metav1.CreateOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(prioritylevelconfigurationsResource, priorityLevelConfiguration), &v1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PriorityLevelConfiguration), err
    -}
    -
    -// Update takes the representation of a priorityLevelConfiguration and updates it. Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *FakePriorityLevelConfigurations) Update(ctx context.Context, priorityLevelConfiguration *v1.PriorityLevelConfiguration, opts metav1.UpdateOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(prioritylevelconfigurationsResource, priorityLevelConfiguration), &v1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PriorityLevelConfiguration), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakePriorityLevelConfigurations) UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1.PriorityLevelConfiguration, opts metav1.UpdateOptions) (*v1.PriorityLevelConfiguration, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(prioritylevelconfigurationsResource, "status", priorityLevelConfiguration), &v1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PriorityLevelConfiguration), err
    -}
    -
    -// Delete takes name of the priorityLevelConfiguration and deletes it. Returns an error if one occurs.
    -func (c *FakePriorityLevelConfigurations) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(prioritylevelconfigurationsResource, name, opts), &v1.PriorityLevelConfiguration{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePriorityLevelConfigurations) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(prioritylevelconfigurationsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.PriorityLevelConfigurationList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched priorityLevelConfiguration.
    -func (c *FakePriorityLevelConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, name, pt, data, subresources...), &v1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PriorityLevelConfiguration), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityLevelConfiguration.
    -func (c *FakePriorityLevelConfigurations) Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, *name, types.ApplyPatchType, data), &v1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PriorityLevelConfiguration), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakePriorityLevelConfigurations) ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, *name, types.ApplyPatchType, data, "status"), &v1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    +func newFakePriorityLevelConfigurations(fake *FakeFlowcontrolV1) typedflowcontrolv1.PriorityLevelConfigurationInterface {
    +	return &fakePriorityLevelConfigurations{
    +		gentype.NewFakeClientWithListAndApply[*v1.PriorityLevelConfiguration, *v1.PriorityLevelConfigurationList, *flowcontrolv1.PriorityLevelConfigurationApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("prioritylevelconfigurations"),
    +			v1.SchemeGroupVersion.WithKind("PriorityLevelConfiguration"),
    +			func() *v1.PriorityLevelConfiguration { return &v1.PriorityLevelConfiguration{} },
    +			func() *v1.PriorityLevelConfigurationList { return &v1.PriorityLevelConfigurationList{} },
    +			func(dst, src *v1.PriorityLevelConfigurationList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.PriorityLevelConfigurationList) []*v1.PriorityLevelConfiguration {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.PriorityLevelConfigurationList, items []*v1.PriorityLevelConfiguration) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.PriorityLevelConfiguration), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/flowcontrol_client.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/flowcontrol_client.go
    index 3d7d93ef147b..3b19586e91b5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/flowcontrol_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/flowcontrol_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/flowcontrol/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -90,10 +90,10 @@ func New(c rest.Interface) *FlowcontrolV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := flowcontrolv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/flowschema.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/flowschema.go
    index bd36c5e6a4e1..56d4d8065540 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/flowschema.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/flowschema.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/flowcontrol/v1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	flowcontrolv1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1"
    +	applyconfigurationsflowcontrolv1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // FlowSchemasGetter has a method to return a FlowSchemaInterface.
    @@ -41,203 +38,38 @@ type FlowSchemasGetter interface {
     
     // FlowSchemaInterface has methods to work with FlowSchema resources.
     type FlowSchemaInterface interface {
    -	Create(ctx context.Context, flowSchema *v1.FlowSchema, opts metav1.CreateOptions) (*v1.FlowSchema, error)
    -	Update(ctx context.Context, flowSchema *v1.FlowSchema, opts metav1.UpdateOptions) (*v1.FlowSchema, error)
    -	UpdateStatus(ctx context.Context, flowSchema *v1.FlowSchema, opts metav1.UpdateOptions) (*v1.FlowSchema, error)
    +	Create(ctx context.Context, flowSchema *flowcontrolv1.FlowSchema, opts metav1.CreateOptions) (*flowcontrolv1.FlowSchema, error)
    +	Update(ctx context.Context, flowSchema *flowcontrolv1.FlowSchema, opts metav1.UpdateOptions) (*flowcontrolv1.FlowSchema, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, flowSchema *flowcontrolv1.FlowSchema, opts metav1.UpdateOptions) (*flowcontrolv1.FlowSchema, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.FlowSchema, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.FlowSchemaList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*flowcontrolv1.FlowSchema, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*flowcontrolv1.FlowSchemaList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.FlowSchema, err error)
    -	Apply(ctx context.Context, flowSchema *flowcontrolv1.FlowSchemaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.FlowSchema, err error)
    -	ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1.FlowSchemaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.FlowSchema, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *flowcontrolv1.FlowSchema, err error)
    +	Apply(ctx context.Context, flowSchema *applyconfigurationsflowcontrolv1.FlowSchemaApplyConfiguration, opts metav1.ApplyOptions) (result *flowcontrolv1.FlowSchema, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, flowSchema *applyconfigurationsflowcontrolv1.FlowSchemaApplyConfiguration, opts metav1.ApplyOptions) (result *flowcontrolv1.FlowSchema, err error)
     	FlowSchemaExpansion
     }
     
     // flowSchemas implements FlowSchemaInterface
     type flowSchemas struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*flowcontrolv1.FlowSchema, *flowcontrolv1.FlowSchemaList, *applyconfigurationsflowcontrolv1.FlowSchemaApplyConfiguration]
     }
     
     // newFlowSchemas returns a FlowSchemas
     func newFlowSchemas(c *FlowcontrolV1Client) *flowSchemas {
     	return &flowSchemas{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*flowcontrolv1.FlowSchema, *flowcontrolv1.FlowSchemaList, *applyconfigurationsflowcontrolv1.FlowSchemaApplyConfiguration](
    +			"flowschemas",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *flowcontrolv1.FlowSchema { return &flowcontrolv1.FlowSchema{} },
    +			func() *flowcontrolv1.FlowSchemaList { return &flowcontrolv1.FlowSchemaList{} },
    +			gentype.PrefersProtobuf[*flowcontrolv1.FlowSchema](),
    +		),
     	}
     }
    -
    -// Get takes name of the flowSchema, and returns the corresponding flowSchema object, and an error if there is any.
    -func (c *flowSchemas) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.FlowSchema, err error) {
    -	result = &v1.FlowSchema{}
    -	err = c.client.Get().
    -		Resource("flowschemas").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of FlowSchemas that match those selectors.
    -func (c *flowSchemas) List(ctx context.Context, opts metav1.ListOptions) (result *v1.FlowSchemaList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.FlowSchemaList{}
    -	err = c.client.Get().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested flowSchemas.
    -func (c *flowSchemas) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a flowSchema and creates it.  Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *flowSchemas) Create(ctx context.Context, flowSchema *v1.FlowSchema, opts metav1.CreateOptions) (result *v1.FlowSchema, err error) {
    -	result = &v1.FlowSchema{}
    -	err = c.client.Post().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a flowSchema and updates it. Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *flowSchemas) Update(ctx context.Context, flowSchema *v1.FlowSchema, opts metav1.UpdateOptions) (result *v1.FlowSchema, err error) {
    -	result = &v1.FlowSchema{}
    -	err = c.client.Put().
    -		Resource("flowschemas").
    -		Name(flowSchema.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *flowSchemas) UpdateStatus(ctx context.Context, flowSchema *v1.FlowSchema, opts metav1.UpdateOptions) (result *v1.FlowSchema, err error) {
    -	result = &v1.FlowSchema{}
    -	err = c.client.Put().
    -		Resource("flowschemas").
    -		Name(flowSchema.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the flowSchema and deletes it. Returns an error if one occurs.
    -func (c *flowSchemas) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("flowschemas").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *flowSchemas) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("flowschemas").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched flowSchema.
    -func (c *flowSchemas) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.FlowSchema, err error) {
    -	result = &v1.FlowSchema{}
    -	err = c.client.Patch(pt).
    -		Resource("flowschemas").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied flowSchema.
    -func (c *flowSchemas) Apply(ctx context.Context, flowSchema *flowcontrolv1.FlowSchemaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	result = &v1.FlowSchema{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("flowschemas").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *flowSchemas) ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1.FlowSchemaApplyConfiguration, opts metav1.ApplyOptions) (result *v1.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.FlowSchema{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("flowschemas").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/prioritylevelconfiguration.go
    index 797fe94035e4..5d25f393a0e5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1/prioritylevelconfiguration.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/flowcontrol/v1"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	flowcontrolv1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1"
    +	applyconfigurationsflowcontrolv1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PriorityLevelConfigurationsGetter has a method to return a PriorityLevelConfigurationInterface.
    @@ -41,203 +38,40 @@ type PriorityLevelConfigurationsGetter interface {
     
     // PriorityLevelConfigurationInterface has methods to work with PriorityLevelConfiguration resources.
     type PriorityLevelConfigurationInterface interface {
    -	Create(ctx context.Context, priorityLevelConfiguration *v1.PriorityLevelConfiguration, opts metav1.CreateOptions) (*v1.PriorityLevelConfiguration, error)
    -	Update(ctx context.Context, priorityLevelConfiguration *v1.PriorityLevelConfiguration, opts metav1.UpdateOptions) (*v1.PriorityLevelConfiguration, error)
    -	UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1.PriorityLevelConfiguration, opts metav1.UpdateOptions) (*v1.PriorityLevelConfiguration, error)
    +	Create(ctx context.Context, priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfiguration, opts metav1.CreateOptions) (*flowcontrolv1.PriorityLevelConfiguration, error)
    +	Update(ctx context.Context, priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfiguration, opts metav1.UpdateOptions) (*flowcontrolv1.PriorityLevelConfiguration, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfiguration, opts metav1.UpdateOptions) (*flowcontrolv1.PriorityLevelConfiguration, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.PriorityLevelConfiguration, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.PriorityLevelConfigurationList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*flowcontrolv1.PriorityLevelConfiguration, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*flowcontrolv1.PriorityLevelConfigurationList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PriorityLevelConfiguration, err error)
    -	Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PriorityLevelConfiguration, err error)
    -	ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PriorityLevelConfiguration, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *flowcontrolv1.PriorityLevelConfiguration, err error)
    +	Apply(ctx context.Context, priorityLevelConfiguration *applyconfigurationsflowcontrolv1.PriorityLevelConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *flowcontrolv1.PriorityLevelConfiguration, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, priorityLevelConfiguration *applyconfigurationsflowcontrolv1.PriorityLevelConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *flowcontrolv1.PriorityLevelConfiguration, err error)
     	PriorityLevelConfigurationExpansion
     }
     
     // priorityLevelConfigurations implements PriorityLevelConfigurationInterface
     type priorityLevelConfigurations struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*flowcontrolv1.PriorityLevelConfiguration, *flowcontrolv1.PriorityLevelConfigurationList, *applyconfigurationsflowcontrolv1.PriorityLevelConfigurationApplyConfiguration]
     }
     
     // newPriorityLevelConfigurations returns a PriorityLevelConfigurations
     func newPriorityLevelConfigurations(c *FlowcontrolV1Client) *priorityLevelConfigurations {
     	return &priorityLevelConfigurations{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*flowcontrolv1.PriorityLevelConfiguration, *flowcontrolv1.PriorityLevelConfigurationList, *applyconfigurationsflowcontrolv1.PriorityLevelConfigurationApplyConfiguration](
    +			"prioritylevelconfigurations",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *flowcontrolv1.PriorityLevelConfiguration { return &flowcontrolv1.PriorityLevelConfiguration{} },
    +			func() *flowcontrolv1.PriorityLevelConfigurationList {
    +				return &flowcontrolv1.PriorityLevelConfigurationList{}
    +			},
    +			gentype.PrefersProtobuf[*flowcontrolv1.PriorityLevelConfiguration](),
    +		),
     	}
     }
    -
    -// Get takes name of the priorityLevelConfiguration, and returns the corresponding priorityLevelConfiguration object, and an error if there is any.
    -func (c *priorityLevelConfigurations) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	result = &v1.PriorityLevelConfiguration{}
    -	err = c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityLevelConfigurations that match those selectors.
    -func (c *priorityLevelConfigurations) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PriorityLevelConfigurationList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.PriorityLevelConfigurationList{}
    -	err = c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityLevelConfigurations.
    -func (c *priorityLevelConfigurations) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a priorityLevelConfiguration and creates it.  Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *priorityLevelConfigurations) Create(ctx context.Context, priorityLevelConfiguration *v1.PriorityLevelConfiguration, opts metav1.CreateOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	result = &v1.PriorityLevelConfiguration{}
    -	err = c.client.Post().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a priorityLevelConfiguration and updates it. Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *priorityLevelConfigurations) Update(ctx context.Context, priorityLevelConfiguration *v1.PriorityLevelConfiguration, opts metav1.UpdateOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	result = &v1.PriorityLevelConfiguration{}
    -	err = c.client.Put().
    -		Resource("prioritylevelconfigurations").
    -		Name(priorityLevelConfiguration.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *priorityLevelConfigurations) UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1.PriorityLevelConfiguration, opts metav1.UpdateOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	result = &v1.PriorityLevelConfiguration{}
    -	err = c.client.Put().
    -		Resource("prioritylevelconfigurations").
    -		Name(priorityLevelConfiguration.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the priorityLevelConfiguration and deletes it. Returns an error if one occurs.
    -func (c *priorityLevelConfigurations) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *priorityLevelConfigurations) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched priorityLevelConfiguration.
    -func (c *priorityLevelConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PriorityLevelConfiguration, err error) {
    -	result = &v1.PriorityLevelConfiguration{}
    -	err = c.client.Patch(pt).
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityLevelConfiguration.
    -func (c *priorityLevelConfigurations) Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	result = &v1.PriorityLevelConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("prioritylevelconfigurations").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *priorityLevelConfigurations) ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1.PriorityLevelConfigurationApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.PriorityLevelConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("prioritylevelconfigurations").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_flowcontrol_client.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_flowcontrol_client.go
    index 1bd58d088a8b..b70c07cdeadc 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_flowcontrol_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_flowcontrol_client.go
    @@ -29,11 +29,11 @@ type FakeFlowcontrolV1beta1 struct {
     }
     
     func (c *FakeFlowcontrolV1beta1) FlowSchemas() v1beta1.FlowSchemaInterface {
    -	return &FakeFlowSchemas{c}
    +	return newFakeFlowSchemas(c)
     }
     
     func (c *FakeFlowcontrolV1beta1) PriorityLevelConfigurations() v1beta1.PriorityLevelConfigurationInterface {
    -	return &FakePriorityLevelConfigurations{c}
    +	return newFakePriorityLevelConfigurations(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_flowschema.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_flowschema.go
    index be7a7e390fef..600f740c3100 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_flowschema.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_flowschema.go
    @@ -19,160 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	flowcontrolv1beta1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedflowcontrolv1beta1 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1"
     )
     
    -// FakeFlowSchemas implements FlowSchemaInterface
    -type FakeFlowSchemas struct {
    +// fakeFlowSchemas implements FlowSchemaInterface
    +type fakeFlowSchemas struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.FlowSchema, *v1beta1.FlowSchemaList, *flowcontrolv1beta1.FlowSchemaApplyConfiguration]
     	Fake *FakeFlowcontrolV1beta1
     }
     
    -var flowschemasResource = v1beta1.SchemeGroupVersion.WithResource("flowschemas")
    -
    -var flowschemasKind = v1beta1.SchemeGroupVersion.WithKind("FlowSchema")
    -
    -// Get takes name of the flowSchema, and returns the corresponding flowSchema object, and an error if there is any.
    -func (c *FakeFlowSchemas) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(flowschemasResource, name), &v1beta1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.FlowSchema), err
    -}
    -
    -// List takes label and field selectors, and returns the list of FlowSchemas that match those selectors.
    -func (c *FakeFlowSchemas) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.FlowSchemaList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(flowschemasResource, flowschemasKind, opts), &v1beta1.FlowSchemaList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.FlowSchemaList{ListMeta: obj.(*v1beta1.FlowSchemaList).ListMeta}
    -	for _, item := range obj.(*v1beta1.FlowSchemaList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested flowSchemas.
    -func (c *FakeFlowSchemas) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(flowschemasResource, opts))
    -}
    -
    -// Create takes the representation of a flowSchema and creates it.  Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *FakeFlowSchemas) Create(ctx context.Context, flowSchema *v1beta1.FlowSchema, opts v1.CreateOptions) (result *v1beta1.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(flowschemasResource, flowSchema), &v1beta1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.FlowSchema), err
    -}
    -
    -// Update takes the representation of a flowSchema and updates it. Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *FakeFlowSchemas) Update(ctx context.Context, flowSchema *v1beta1.FlowSchema, opts v1.UpdateOptions) (result *v1beta1.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(flowschemasResource, flowSchema), &v1beta1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.FlowSchema), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeFlowSchemas) UpdateStatus(ctx context.Context, flowSchema *v1beta1.FlowSchema, opts v1.UpdateOptions) (*v1beta1.FlowSchema, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(flowschemasResource, "status", flowSchema), &v1beta1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.FlowSchema), err
    -}
    -
    -// Delete takes name of the flowSchema and deletes it. Returns an error if one occurs.
    -func (c *FakeFlowSchemas) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(flowschemasResource, name, opts), &v1beta1.FlowSchema{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeFlowSchemas) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(flowschemasResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.FlowSchemaList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched flowSchema.
    -func (c *FakeFlowSchemas) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, name, pt, data, subresources...), &v1beta1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.FlowSchema), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied flowSchema.
    -func (c *FakeFlowSchemas) Apply(ctx context.Context, flowSchema *flowcontrolv1beta1.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, *name, types.ApplyPatchType, data), &v1beta1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.FlowSchema), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeFlowSchemas) ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1beta1.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, *name, types.ApplyPatchType, data, "status"), &v1beta1.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeFlowSchemas(fake *FakeFlowcontrolV1beta1) typedflowcontrolv1beta1.FlowSchemaInterface {
    +	return &fakeFlowSchemas{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.FlowSchema, *v1beta1.FlowSchemaList, *flowcontrolv1beta1.FlowSchemaApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("flowschemas"),
    +			v1beta1.SchemeGroupVersion.WithKind("FlowSchema"),
    +			func() *v1beta1.FlowSchema { return &v1beta1.FlowSchema{} },
    +			func() *v1beta1.FlowSchemaList { return &v1beta1.FlowSchemaList{} },
    +			func(dst, src *v1beta1.FlowSchemaList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.FlowSchemaList) []*v1beta1.FlowSchema { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.FlowSchemaList, items []*v1beta1.FlowSchema) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.FlowSchema), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_prioritylevelconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_prioritylevelconfiguration.go
    index 698a168b3702..170c4df9b6a2 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/fake/fake_prioritylevelconfiguration.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	flowcontrolv1beta1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedflowcontrolv1beta1 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1"
     )
     
    -// FakePriorityLevelConfigurations implements PriorityLevelConfigurationInterface
    -type FakePriorityLevelConfigurations struct {
    +// fakePriorityLevelConfigurations implements PriorityLevelConfigurationInterface
    +type fakePriorityLevelConfigurations struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.PriorityLevelConfiguration, *v1beta1.PriorityLevelConfigurationList, *flowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration]
     	Fake *FakeFlowcontrolV1beta1
     }
     
    -var prioritylevelconfigurationsResource = v1beta1.SchemeGroupVersion.WithResource("prioritylevelconfigurations")
    -
    -var prioritylevelconfigurationsKind = v1beta1.SchemeGroupVersion.WithKind("PriorityLevelConfiguration")
    -
    -// Get takes name of the priorityLevelConfiguration, and returns the corresponding priorityLevelConfiguration object, and an error if there is any.
    -func (c *FakePriorityLevelConfigurations) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(prioritylevelconfigurationsResource, name), &v1beta1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PriorityLevelConfiguration), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityLevelConfigurations that match those selectors.
    -func (c *FakePriorityLevelConfigurations) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.PriorityLevelConfigurationList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(prioritylevelconfigurationsResource, prioritylevelconfigurationsKind, opts), &v1beta1.PriorityLevelConfigurationList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.PriorityLevelConfigurationList{ListMeta: obj.(*v1beta1.PriorityLevelConfigurationList).ListMeta}
    -	for _, item := range obj.(*v1beta1.PriorityLevelConfigurationList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityLevelConfigurations.
    -func (c *FakePriorityLevelConfigurations) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(prioritylevelconfigurationsResource, opts))
    -}
    -
    -// Create takes the representation of a priorityLevelConfiguration and creates it.  Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *FakePriorityLevelConfigurations) Create(ctx context.Context, priorityLevelConfiguration *v1beta1.PriorityLevelConfiguration, opts v1.CreateOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(prioritylevelconfigurationsResource, priorityLevelConfiguration), &v1beta1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PriorityLevelConfiguration), err
    -}
    -
    -// Update takes the representation of a priorityLevelConfiguration and updates it. Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *FakePriorityLevelConfigurations) Update(ctx context.Context, priorityLevelConfiguration *v1beta1.PriorityLevelConfiguration, opts v1.UpdateOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(prioritylevelconfigurationsResource, priorityLevelConfiguration), &v1beta1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PriorityLevelConfiguration), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakePriorityLevelConfigurations) UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1beta1.PriorityLevelConfiguration, opts v1.UpdateOptions) (*v1beta1.PriorityLevelConfiguration, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(prioritylevelconfigurationsResource, "status", priorityLevelConfiguration), &v1beta1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PriorityLevelConfiguration), err
    -}
    -
    -// Delete takes name of the priorityLevelConfiguration and deletes it. Returns an error if one occurs.
    -func (c *FakePriorityLevelConfigurations) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(prioritylevelconfigurationsResource, name, opts), &v1beta1.PriorityLevelConfiguration{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePriorityLevelConfigurations) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(prioritylevelconfigurationsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.PriorityLevelConfigurationList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched priorityLevelConfiguration.
    -func (c *FakePriorityLevelConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, name, pt, data, subresources...), &v1beta1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PriorityLevelConfiguration), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityLevelConfiguration.
    -func (c *FakePriorityLevelConfigurations) Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, *name, types.ApplyPatchType, data), &v1beta1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PriorityLevelConfiguration), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakePriorityLevelConfigurations) ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, *name, types.ApplyPatchType, data, "status"), &v1beta1.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    +func newFakePriorityLevelConfigurations(fake *FakeFlowcontrolV1beta1) typedflowcontrolv1beta1.PriorityLevelConfigurationInterface {
    +	return &fakePriorityLevelConfigurations{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.PriorityLevelConfiguration, *v1beta1.PriorityLevelConfigurationList, *flowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("prioritylevelconfigurations"),
    +			v1beta1.SchemeGroupVersion.WithKind("PriorityLevelConfiguration"),
    +			func() *v1beta1.PriorityLevelConfiguration { return &v1beta1.PriorityLevelConfiguration{} },
    +			func() *v1beta1.PriorityLevelConfigurationList { return &v1beta1.PriorityLevelConfigurationList{} },
    +			func(dst, src *v1beta1.PriorityLevelConfigurationList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.PriorityLevelConfigurationList) []*v1beta1.PriorityLevelConfiguration {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.PriorityLevelConfigurationList, items []*v1beta1.PriorityLevelConfiguration) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.PriorityLevelConfiguration), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowcontrol_client.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowcontrol_client.go
    index c29cfca95730..ac3f5ffe8182 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowcontrol_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowcontrol_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -90,10 +90,10 @@ func New(c rest.Interface) *FlowcontrolV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := flowcontrolv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowschema.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowschema.go
    index a9d38becf9bf..f0def394742b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowschema.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowschema.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	flowcontrolv1beta1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1"
    +	applyconfigurationsflowcontrolv1beta1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // FlowSchemasGetter has a method to return a FlowSchemaInterface.
    @@ -41,203 +38,38 @@ type FlowSchemasGetter interface {
     
     // FlowSchemaInterface has methods to work with FlowSchema resources.
     type FlowSchemaInterface interface {
    -	Create(ctx context.Context, flowSchema *v1beta1.FlowSchema, opts v1.CreateOptions) (*v1beta1.FlowSchema, error)
    -	Update(ctx context.Context, flowSchema *v1beta1.FlowSchema, opts v1.UpdateOptions) (*v1beta1.FlowSchema, error)
    -	UpdateStatus(ctx context.Context, flowSchema *v1beta1.FlowSchema, opts v1.UpdateOptions) (*v1beta1.FlowSchema, error)
    +	Create(ctx context.Context, flowSchema *flowcontrolv1beta1.FlowSchema, opts v1.CreateOptions) (*flowcontrolv1beta1.FlowSchema, error)
    +	Update(ctx context.Context, flowSchema *flowcontrolv1beta1.FlowSchema, opts v1.UpdateOptions) (*flowcontrolv1beta1.FlowSchema, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, flowSchema *flowcontrolv1beta1.FlowSchema, opts v1.UpdateOptions) (*flowcontrolv1beta1.FlowSchema, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.FlowSchema, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.FlowSchemaList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*flowcontrolv1beta1.FlowSchema, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*flowcontrolv1beta1.FlowSchemaList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.FlowSchema, err error)
    -	Apply(ctx context.Context, flowSchema *flowcontrolv1beta1.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.FlowSchema, err error)
    -	ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1beta1.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.FlowSchema, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *flowcontrolv1beta1.FlowSchema, err error)
    +	Apply(ctx context.Context, flowSchema *applyconfigurationsflowcontrolv1beta1.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta1.FlowSchema, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, flowSchema *applyconfigurationsflowcontrolv1beta1.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta1.FlowSchema, err error)
     	FlowSchemaExpansion
     }
     
     // flowSchemas implements FlowSchemaInterface
     type flowSchemas struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*flowcontrolv1beta1.FlowSchema, *flowcontrolv1beta1.FlowSchemaList, *applyconfigurationsflowcontrolv1beta1.FlowSchemaApplyConfiguration]
     }
     
     // newFlowSchemas returns a FlowSchemas
     func newFlowSchemas(c *FlowcontrolV1beta1Client) *flowSchemas {
     	return &flowSchemas{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*flowcontrolv1beta1.FlowSchema, *flowcontrolv1beta1.FlowSchemaList, *applyconfigurationsflowcontrolv1beta1.FlowSchemaApplyConfiguration](
    +			"flowschemas",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *flowcontrolv1beta1.FlowSchema { return &flowcontrolv1beta1.FlowSchema{} },
    +			func() *flowcontrolv1beta1.FlowSchemaList { return &flowcontrolv1beta1.FlowSchemaList{} },
    +			gentype.PrefersProtobuf[*flowcontrolv1beta1.FlowSchema](),
    +		),
     	}
     }
    -
    -// Get takes name of the flowSchema, and returns the corresponding flowSchema object, and an error if there is any.
    -func (c *flowSchemas) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.FlowSchema, err error) {
    -	result = &v1beta1.FlowSchema{}
    -	err = c.client.Get().
    -		Resource("flowschemas").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of FlowSchemas that match those selectors.
    -func (c *flowSchemas) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.FlowSchemaList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.FlowSchemaList{}
    -	err = c.client.Get().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested flowSchemas.
    -func (c *flowSchemas) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a flowSchema and creates it.  Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *flowSchemas) Create(ctx context.Context, flowSchema *v1beta1.FlowSchema, opts v1.CreateOptions) (result *v1beta1.FlowSchema, err error) {
    -	result = &v1beta1.FlowSchema{}
    -	err = c.client.Post().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a flowSchema and updates it. Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *flowSchemas) Update(ctx context.Context, flowSchema *v1beta1.FlowSchema, opts v1.UpdateOptions) (result *v1beta1.FlowSchema, err error) {
    -	result = &v1beta1.FlowSchema{}
    -	err = c.client.Put().
    -		Resource("flowschemas").
    -		Name(flowSchema.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *flowSchemas) UpdateStatus(ctx context.Context, flowSchema *v1beta1.FlowSchema, opts v1.UpdateOptions) (result *v1beta1.FlowSchema, err error) {
    -	result = &v1beta1.FlowSchema{}
    -	err = c.client.Put().
    -		Resource("flowschemas").
    -		Name(flowSchema.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the flowSchema and deletes it. Returns an error if one occurs.
    -func (c *flowSchemas) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("flowschemas").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *flowSchemas) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("flowschemas").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched flowSchema.
    -func (c *flowSchemas) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.FlowSchema, err error) {
    -	result = &v1beta1.FlowSchema{}
    -	err = c.client.Patch(pt).
    -		Resource("flowschemas").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied flowSchema.
    -func (c *flowSchemas) Apply(ctx context.Context, flowSchema *flowcontrolv1beta1.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.FlowSchema{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("flowschemas").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *flowSchemas) ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1beta1.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.FlowSchema{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("flowschemas").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/prioritylevelconfiguration.go
    index 41f35cbccd34..15ee1b8b5cd3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/prioritylevelconfiguration.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	flowcontrolv1beta1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1"
    +	applyconfigurationsflowcontrolv1beta1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PriorityLevelConfigurationsGetter has a method to return a PriorityLevelConfigurationInterface.
    @@ -41,203 +38,42 @@ type PriorityLevelConfigurationsGetter interface {
     
     // PriorityLevelConfigurationInterface has methods to work with PriorityLevelConfiguration resources.
     type PriorityLevelConfigurationInterface interface {
    -	Create(ctx context.Context, priorityLevelConfiguration *v1beta1.PriorityLevelConfiguration, opts v1.CreateOptions) (*v1beta1.PriorityLevelConfiguration, error)
    -	Update(ctx context.Context, priorityLevelConfiguration *v1beta1.PriorityLevelConfiguration, opts v1.UpdateOptions) (*v1beta1.PriorityLevelConfiguration, error)
    -	UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1beta1.PriorityLevelConfiguration, opts v1.UpdateOptions) (*v1beta1.PriorityLevelConfiguration, error)
    +	Create(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta1.PriorityLevelConfiguration, opts v1.CreateOptions) (*flowcontrolv1beta1.PriorityLevelConfiguration, error)
    +	Update(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta1.PriorityLevelConfiguration, opts v1.UpdateOptions) (*flowcontrolv1beta1.PriorityLevelConfiguration, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta1.PriorityLevelConfiguration, opts v1.UpdateOptions) (*flowcontrolv1beta1.PriorityLevelConfiguration, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.PriorityLevelConfiguration, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.PriorityLevelConfigurationList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*flowcontrolv1beta1.PriorityLevelConfiguration, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*flowcontrolv1beta1.PriorityLevelConfigurationList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PriorityLevelConfiguration, err error)
    -	Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PriorityLevelConfiguration, err error)
    -	ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PriorityLevelConfiguration, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *flowcontrolv1beta1.PriorityLevelConfiguration, err error)
    +	Apply(ctx context.Context, priorityLevelConfiguration *applyconfigurationsflowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta1.PriorityLevelConfiguration, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, priorityLevelConfiguration *applyconfigurationsflowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta1.PriorityLevelConfiguration, err error)
     	PriorityLevelConfigurationExpansion
     }
     
     // priorityLevelConfigurations implements PriorityLevelConfigurationInterface
     type priorityLevelConfigurations struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*flowcontrolv1beta1.PriorityLevelConfiguration, *flowcontrolv1beta1.PriorityLevelConfigurationList, *applyconfigurationsflowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration]
     }
     
     // newPriorityLevelConfigurations returns a PriorityLevelConfigurations
     func newPriorityLevelConfigurations(c *FlowcontrolV1beta1Client) *priorityLevelConfigurations {
     	return &priorityLevelConfigurations{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*flowcontrolv1beta1.PriorityLevelConfiguration, *flowcontrolv1beta1.PriorityLevelConfigurationList, *applyconfigurationsflowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration](
    +			"prioritylevelconfigurations",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *flowcontrolv1beta1.PriorityLevelConfiguration {
    +				return &flowcontrolv1beta1.PriorityLevelConfiguration{}
    +			},
    +			func() *flowcontrolv1beta1.PriorityLevelConfigurationList {
    +				return &flowcontrolv1beta1.PriorityLevelConfigurationList{}
    +			},
    +			gentype.PrefersProtobuf[*flowcontrolv1beta1.PriorityLevelConfiguration](),
    +		),
     	}
     }
    -
    -// Get takes name of the priorityLevelConfiguration, and returns the corresponding priorityLevelConfiguration object, and an error if there is any.
    -func (c *priorityLevelConfigurations) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	result = &v1beta1.PriorityLevelConfiguration{}
    -	err = c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityLevelConfigurations that match those selectors.
    -func (c *priorityLevelConfigurations) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.PriorityLevelConfigurationList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.PriorityLevelConfigurationList{}
    -	err = c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityLevelConfigurations.
    -func (c *priorityLevelConfigurations) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a priorityLevelConfiguration and creates it.  Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *priorityLevelConfigurations) Create(ctx context.Context, priorityLevelConfiguration *v1beta1.PriorityLevelConfiguration, opts v1.CreateOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	result = &v1beta1.PriorityLevelConfiguration{}
    -	err = c.client.Post().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a priorityLevelConfiguration and updates it. Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *priorityLevelConfigurations) Update(ctx context.Context, priorityLevelConfiguration *v1beta1.PriorityLevelConfiguration, opts v1.UpdateOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	result = &v1beta1.PriorityLevelConfiguration{}
    -	err = c.client.Put().
    -		Resource("prioritylevelconfigurations").
    -		Name(priorityLevelConfiguration.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *priorityLevelConfigurations) UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1beta1.PriorityLevelConfiguration, opts v1.UpdateOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	result = &v1beta1.PriorityLevelConfiguration{}
    -	err = c.client.Put().
    -		Resource("prioritylevelconfigurations").
    -		Name(priorityLevelConfiguration.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the priorityLevelConfiguration and deletes it. Returns an error if one occurs.
    -func (c *priorityLevelConfigurations) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *priorityLevelConfigurations) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched priorityLevelConfiguration.
    -func (c *priorityLevelConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	result = &v1beta1.PriorityLevelConfiguration{}
    -	err = c.client.Patch(pt).
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityLevelConfiguration.
    -func (c *priorityLevelConfigurations) Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.PriorityLevelConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("prioritylevelconfigurations").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *priorityLevelConfigurations) ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta1.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.PriorityLevelConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("prioritylevelconfigurations").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_flowcontrol_client.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_flowcontrol_client.go
    index 9f36b3b7a20f..1114568d3a3b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_flowcontrol_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_flowcontrol_client.go
    @@ -29,11 +29,11 @@ type FakeFlowcontrolV1beta2 struct {
     }
     
     func (c *FakeFlowcontrolV1beta2) FlowSchemas() v1beta2.FlowSchemaInterface {
    -	return &FakeFlowSchemas{c}
    +	return newFakeFlowSchemas(c)
     }
     
     func (c *FakeFlowcontrolV1beta2) PriorityLevelConfigurations() v1beta2.PriorityLevelConfigurationInterface {
    -	return &FakePriorityLevelConfigurations{c}
    +	return newFakePriorityLevelConfigurations(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_flowschema.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_flowschema.go
    index 7ce6d2116be6..73ed2968769b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_flowschema.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_flowschema.go
    @@ -19,160 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	flowcontrolv1beta2 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedflowcontrolv1beta2 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2"
     )
     
    -// FakeFlowSchemas implements FlowSchemaInterface
    -type FakeFlowSchemas struct {
    +// fakeFlowSchemas implements FlowSchemaInterface
    +type fakeFlowSchemas struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta2.FlowSchema, *v1beta2.FlowSchemaList, *flowcontrolv1beta2.FlowSchemaApplyConfiguration]
     	Fake *FakeFlowcontrolV1beta2
     }
     
    -var flowschemasResource = v1beta2.SchemeGroupVersion.WithResource("flowschemas")
    -
    -var flowschemasKind = v1beta2.SchemeGroupVersion.WithKind("FlowSchema")
    -
    -// Get takes name of the flowSchema, and returns the corresponding flowSchema object, and an error if there is any.
    -func (c *FakeFlowSchemas) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(flowschemasResource, name), &v1beta2.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.FlowSchema), err
    -}
    -
    -// List takes label and field selectors, and returns the list of FlowSchemas that match those selectors.
    -func (c *FakeFlowSchemas) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.FlowSchemaList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(flowschemasResource, flowschemasKind, opts), &v1beta2.FlowSchemaList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta2.FlowSchemaList{ListMeta: obj.(*v1beta2.FlowSchemaList).ListMeta}
    -	for _, item := range obj.(*v1beta2.FlowSchemaList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested flowSchemas.
    -func (c *FakeFlowSchemas) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(flowschemasResource, opts))
    -}
    -
    -// Create takes the representation of a flowSchema and creates it.  Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *FakeFlowSchemas) Create(ctx context.Context, flowSchema *v1beta2.FlowSchema, opts v1.CreateOptions) (result *v1beta2.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(flowschemasResource, flowSchema), &v1beta2.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.FlowSchema), err
    -}
    -
    -// Update takes the representation of a flowSchema and updates it. Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *FakeFlowSchemas) Update(ctx context.Context, flowSchema *v1beta2.FlowSchema, opts v1.UpdateOptions) (result *v1beta2.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(flowschemasResource, flowSchema), &v1beta2.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.FlowSchema), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeFlowSchemas) UpdateStatus(ctx context.Context, flowSchema *v1beta2.FlowSchema, opts v1.UpdateOptions) (*v1beta2.FlowSchema, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(flowschemasResource, "status", flowSchema), &v1beta2.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.FlowSchema), err
    -}
    -
    -// Delete takes name of the flowSchema and deletes it. Returns an error if one occurs.
    -func (c *FakeFlowSchemas) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(flowschemasResource, name, opts), &v1beta2.FlowSchema{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeFlowSchemas) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(flowschemasResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta2.FlowSchemaList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched flowSchema.
    -func (c *FakeFlowSchemas) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, name, pt, data, subresources...), &v1beta2.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.FlowSchema), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied flowSchema.
    -func (c *FakeFlowSchemas) Apply(ctx context.Context, flowSchema *flowcontrolv1beta2.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, *name, types.ApplyPatchType, data), &v1beta2.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.FlowSchema), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeFlowSchemas) ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1beta2.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, *name, types.ApplyPatchType, data, "status"), &v1beta2.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeFlowSchemas(fake *FakeFlowcontrolV1beta2) typedflowcontrolv1beta2.FlowSchemaInterface {
    +	return &fakeFlowSchemas{
    +		gentype.NewFakeClientWithListAndApply[*v1beta2.FlowSchema, *v1beta2.FlowSchemaList, *flowcontrolv1beta2.FlowSchemaApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta2.SchemeGroupVersion.WithResource("flowschemas"),
    +			v1beta2.SchemeGroupVersion.WithKind("FlowSchema"),
    +			func() *v1beta2.FlowSchema { return &v1beta2.FlowSchema{} },
    +			func() *v1beta2.FlowSchemaList { return &v1beta2.FlowSchemaList{} },
    +			func(dst, src *v1beta2.FlowSchemaList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta2.FlowSchemaList) []*v1beta2.FlowSchema { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta2.FlowSchemaList, items []*v1beta2.FlowSchema) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta2.FlowSchema), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_prioritylevelconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_prioritylevelconfiguration.go
    index 7340f8a09e4f..8ebb58e362cf 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake/fake_prioritylevelconfiguration.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	flowcontrolv1beta2 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedflowcontrolv1beta2 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2"
     )
     
    -// FakePriorityLevelConfigurations implements PriorityLevelConfigurationInterface
    -type FakePriorityLevelConfigurations struct {
    +// fakePriorityLevelConfigurations implements PriorityLevelConfigurationInterface
    +type fakePriorityLevelConfigurations struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta2.PriorityLevelConfiguration, *v1beta2.PriorityLevelConfigurationList, *flowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration]
     	Fake *FakeFlowcontrolV1beta2
     }
     
    -var prioritylevelconfigurationsResource = v1beta2.SchemeGroupVersion.WithResource("prioritylevelconfigurations")
    -
    -var prioritylevelconfigurationsKind = v1beta2.SchemeGroupVersion.WithKind("PriorityLevelConfiguration")
    -
    -// Get takes name of the priorityLevelConfiguration, and returns the corresponding priorityLevelConfiguration object, and an error if there is any.
    -func (c *FakePriorityLevelConfigurations) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(prioritylevelconfigurationsResource, name), &v1beta2.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.PriorityLevelConfiguration), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityLevelConfigurations that match those selectors.
    -func (c *FakePriorityLevelConfigurations) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.PriorityLevelConfigurationList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(prioritylevelconfigurationsResource, prioritylevelconfigurationsKind, opts), &v1beta2.PriorityLevelConfigurationList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta2.PriorityLevelConfigurationList{ListMeta: obj.(*v1beta2.PriorityLevelConfigurationList).ListMeta}
    -	for _, item := range obj.(*v1beta2.PriorityLevelConfigurationList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityLevelConfigurations.
    -func (c *FakePriorityLevelConfigurations) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(prioritylevelconfigurationsResource, opts))
    -}
    -
    -// Create takes the representation of a priorityLevelConfiguration and creates it.  Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *FakePriorityLevelConfigurations) Create(ctx context.Context, priorityLevelConfiguration *v1beta2.PriorityLevelConfiguration, opts v1.CreateOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(prioritylevelconfigurationsResource, priorityLevelConfiguration), &v1beta2.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.PriorityLevelConfiguration), err
    -}
    -
    -// Update takes the representation of a priorityLevelConfiguration and updates it. Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *FakePriorityLevelConfigurations) Update(ctx context.Context, priorityLevelConfiguration *v1beta2.PriorityLevelConfiguration, opts v1.UpdateOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(prioritylevelconfigurationsResource, priorityLevelConfiguration), &v1beta2.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.PriorityLevelConfiguration), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakePriorityLevelConfigurations) UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1beta2.PriorityLevelConfiguration, opts v1.UpdateOptions) (*v1beta2.PriorityLevelConfiguration, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(prioritylevelconfigurationsResource, "status", priorityLevelConfiguration), &v1beta2.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.PriorityLevelConfiguration), err
    -}
    -
    -// Delete takes name of the priorityLevelConfiguration and deletes it. Returns an error if one occurs.
    -func (c *FakePriorityLevelConfigurations) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(prioritylevelconfigurationsResource, name, opts), &v1beta2.PriorityLevelConfiguration{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePriorityLevelConfigurations) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(prioritylevelconfigurationsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta2.PriorityLevelConfigurationList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched priorityLevelConfiguration.
    -func (c *FakePriorityLevelConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, name, pt, data, subresources...), &v1beta2.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.PriorityLevelConfiguration), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityLevelConfiguration.
    -func (c *FakePriorityLevelConfigurations) Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, *name, types.ApplyPatchType, data), &v1beta2.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta2.PriorityLevelConfiguration), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakePriorityLevelConfigurations) ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, *name, types.ApplyPatchType, data, "status"), &v1beta2.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    +func newFakePriorityLevelConfigurations(fake *FakeFlowcontrolV1beta2) typedflowcontrolv1beta2.PriorityLevelConfigurationInterface {
    +	return &fakePriorityLevelConfigurations{
    +		gentype.NewFakeClientWithListAndApply[*v1beta2.PriorityLevelConfiguration, *v1beta2.PriorityLevelConfigurationList, *flowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta2.SchemeGroupVersion.WithResource("prioritylevelconfigurations"),
    +			v1beta2.SchemeGroupVersion.WithKind("PriorityLevelConfiguration"),
    +			func() *v1beta2.PriorityLevelConfiguration { return &v1beta2.PriorityLevelConfiguration{} },
    +			func() *v1beta2.PriorityLevelConfigurationList { return &v1beta2.PriorityLevelConfigurationList{} },
    +			func(dst, src *v1beta2.PriorityLevelConfigurationList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta2.PriorityLevelConfigurationList) []*v1beta2.PriorityLevelConfiguration {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta2.PriorityLevelConfigurationList, items []*v1beta2.PriorityLevelConfiguration) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta2.PriorityLevelConfiguration), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/flowcontrol_client.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/flowcontrol_client.go
    index f3cca4fc7536..7652d4f39ba0 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/flowcontrol_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/flowcontrol_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -90,10 +90,10 @@ func New(c rest.Interface) *FlowcontrolV1beta2Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta2.SchemeGroupVersion
    +	gv := flowcontrolv1beta2.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/flowschema.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/flowschema.go
    index 3a1f12b6a28d..780cf030eed5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/flowschema.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/flowschema.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	flowcontrolv1beta2 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2"
    +	applyconfigurationsflowcontrolv1beta2 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // FlowSchemasGetter has a method to return a FlowSchemaInterface.
    @@ -41,203 +38,38 @@ type FlowSchemasGetter interface {
     
     // FlowSchemaInterface has methods to work with FlowSchema resources.
     type FlowSchemaInterface interface {
    -	Create(ctx context.Context, flowSchema *v1beta2.FlowSchema, opts v1.CreateOptions) (*v1beta2.FlowSchema, error)
    -	Update(ctx context.Context, flowSchema *v1beta2.FlowSchema, opts v1.UpdateOptions) (*v1beta2.FlowSchema, error)
    -	UpdateStatus(ctx context.Context, flowSchema *v1beta2.FlowSchema, opts v1.UpdateOptions) (*v1beta2.FlowSchema, error)
    +	Create(ctx context.Context, flowSchema *flowcontrolv1beta2.FlowSchema, opts v1.CreateOptions) (*flowcontrolv1beta2.FlowSchema, error)
    +	Update(ctx context.Context, flowSchema *flowcontrolv1beta2.FlowSchema, opts v1.UpdateOptions) (*flowcontrolv1beta2.FlowSchema, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, flowSchema *flowcontrolv1beta2.FlowSchema, opts v1.UpdateOptions) (*flowcontrolv1beta2.FlowSchema, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.FlowSchema, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta2.FlowSchemaList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*flowcontrolv1beta2.FlowSchema, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*flowcontrolv1beta2.FlowSchemaList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.FlowSchema, err error)
    -	Apply(ctx context.Context, flowSchema *flowcontrolv1beta2.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.FlowSchema, err error)
    -	ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1beta2.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.FlowSchema, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *flowcontrolv1beta2.FlowSchema, err error)
    +	Apply(ctx context.Context, flowSchema *applyconfigurationsflowcontrolv1beta2.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta2.FlowSchema, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, flowSchema *applyconfigurationsflowcontrolv1beta2.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta2.FlowSchema, err error)
     	FlowSchemaExpansion
     }
     
     // flowSchemas implements FlowSchemaInterface
     type flowSchemas struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*flowcontrolv1beta2.FlowSchema, *flowcontrolv1beta2.FlowSchemaList, *applyconfigurationsflowcontrolv1beta2.FlowSchemaApplyConfiguration]
     }
     
     // newFlowSchemas returns a FlowSchemas
     func newFlowSchemas(c *FlowcontrolV1beta2Client) *flowSchemas {
     	return &flowSchemas{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*flowcontrolv1beta2.FlowSchema, *flowcontrolv1beta2.FlowSchemaList, *applyconfigurationsflowcontrolv1beta2.FlowSchemaApplyConfiguration](
    +			"flowschemas",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *flowcontrolv1beta2.FlowSchema { return &flowcontrolv1beta2.FlowSchema{} },
    +			func() *flowcontrolv1beta2.FlowSchemaList { return &flowcontrolv1beta2.FlowSchemaList{} },
    +			gentype.PrefersProtobuf[*flowcontrolv1beta2.FlowSchema](),
    +		),
     	}
     }
    -
    -// Get takes name of the flowSchema, and returns the corresponding flowSchema object, and an error if there is any.
    -func (c *flowSchemas) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.FlowSchema, err error) {
    -	result = &v1beta2.FlowSchema{}
    -	err = c.client.Get().
    -		Resource("flowschemas").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of FlowSchemas that match those selectors.
    -func (c *flowSchemas) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.FlowSchemaList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta2.FlowSchemaList{}
    -	err = c.client.Get().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested flowSchemas.
    -func (c *flowSchemas) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a flowSchema and creates it.  Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *flowSchemas) Create(ctx context.Context, flowSchema *v1beta2.FlowSchema, opts v1.CreateOptions) (result *v1beta2.FlowSchema, err error) {
    -	result = &v1beta2.FlowSchema{}
    -	err = c.client.Post().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a flowSchema and updates it. Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *flowSchemas) Update(ctx context.Context, flowSchema *v1beta2.FlowSchema, opts v1.UpdateOptions) (result *v1beta2.FlowSchema, err error) {
    -	result = &v1beta2.FlowSchema{}
    -	err = c.client.Put().
    -		Resource("flowschemas").
    -		Name(flowSchema.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *flowSchemas) UpdateStatus(ctx context.Context, flowSchema *v1beta2.FlowSchema, opts v1.UpdateOptions) (result *v1beta2.FlowSchema, err error) {
    -	result = &v1beta2.FlowSchema{}
    -	err = c.client.Put().
    -		Resource("flowschemas").
    -		Name(flowSchema.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the flowSchema and deletes it. Returns an error if one occurs.
    -func (c *flowSchemas) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("flowschemas").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *flowSchemas) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("flowschemas").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched flowSchema.
    -func (c *flowSchemas) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.FlowSchema, err error) {
    -	result = &v1beta2.FlowSchema{}
    -	err = c.client.Patch(pt).
    -		Resource("flowschemas").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied flowSchema.
    -func (c *flowSchemas) Apply(ctx context.Context, flowSchema *flowcontrolv1beta2.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	result = &v1beta2.FlowSchema{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("flowschemas").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *flowSchemas) ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1beta2.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta2.FlowSchema{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("flowschemas").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/prioritylevelconfiguration.go
    index f028869f172d..65b9feafa478 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/prioritylevelconfiguration.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta2
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	flowcontrolv1beta2 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2"
    +	applyconfigurationsflowcontrolv1beta2 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PriorityLevelConfigurationsGetter has a method to return a PriorityLevelConfigurationInterface.
    @@ -41,203 +38,42 @@ type PriorityLevelConfigurationsGetter interface {
     
     // PriorityLevelConfigurationInterface has methods to work with PriorityLevelConfiguration resources.
     type PriorityLevelConfigurationInterface interface {
    -	Create(ctx context.Context, priorityLevelConfiguration *v1beta2.PriorityLevelConfiguration, opts v1.CreateOptions) (*v1beta2.PriorityLevelConfiguration, error)
    -	Update(ctx context.Context, priorityLevelConfiguration *v1beta2.PriorityLevelConfiguration, opts v1.UpdateOptions) (*v1beta2.PriorityLevelConfiguration, error)
    -	UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1beta2.PriorityLevelConfiguration, opts v1.UpdateOptions) (*v1beta2.PriorityLevelConfiguration, error)
    +	Create(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta2.PriorityLevelConfiguration, opts v1.CreateOptions) (*flowcontrolv1beta2.PriorityLevelConfiguration, error)
    +	Update(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta2.PriorityLevelConfiguration, opts v1.UpdateOptions) (*flowcontrolv1beta2.PriorityLevelConfiguration, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta2.PriorityLevelConfiguration, opts v1.UpdateOptions) (*flowcontrolv1beta2.PriorityLevelConfiguration, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.PriorityLevelConfiguration, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta2.PriorityLevelConfigurationList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*flowcontrolv1beta2.PriorityLevelConfiguration, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*flowcontrolv1beta2.PriorityLevelConfigurationList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.PriorityLevelConfiguration, err error)
    -	Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.PriorityLevelConfiguration, err error)
    -	ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.PriorityLevelConfiguration, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *flowcontrolv1beta2.PriorityLevelConfiguration, err error)
    +	Apply(ctx context.Context, priorityLevelConfiguration *applyconfigurationsflowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta2.PriorityLevelConfiguration, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, priorityLevelConfiguration *applyconfigurationsflowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta2.PriorityLevelConfiguration, err error)
     	PriorityLevelConfigurationExpansion
     }
     
     // priorityLevelConfigurations implements PriorityLevelConfigurationInterface
     type priorityLevelConfigurations struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*flowcontrolv1beta2.PriorityLevelConfiguration, *flowcontrolv1beta2.PriorityLevelConfigurationList, *applyconfigurationsflowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration]
     }
     
     // newPriorityLevelConfigurations returns a PriorityLevelConfigurations
     func newPriorityLevelConfigurations(c *FlowcontrolV1beta2Client) *priorityLevelConfigurations {
     	return &priorityLevelConfigurations{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*flowcontrolv1beta2.PriorityLevelConfiguration, *flowcontrolv1beta2.PriorityLevelConfigurationList, *applyconfigurationsflowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration](
    +			"prioritylevelconfigurations",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *flowcontrolv1beta2.PriorityLevelConfiguration {
    +				return &flowcontrolv1beta2.PriorityLevelConfiguration{}
    +			},
    +			func() *flowcontrolv1beta2.PriorityLevelConfigurationList {
    +				return &flowcontrolv1beta2.PriorityLevelConfigurationList{}
    +			},
    +			gentype.PrefersProtobuf[*flowcontrolv1beta2.PriorityLevelConfiguration](),
    +		),
     	}
     }
    -
    -// Get takes name of the priorityLevelConfiguration, and returns the corresponding priorityLevelConfiguration object, and an error if there is any.
    -func (c *priorityLevelConfigurations) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	result = &v1beta2.PriorityLevelConfiguration{}
    -	err = c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityLevelConfigurations that match those selectors.
    -func (c *priorityLevelConfigurations) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.PriorityLevelConfigurationList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta2.PriorityLevelConfigurationList{}
    -	err = c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityLevelConfigurations.
    -func (c *priorityLevelConfigurations) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a priorityLevelConfiguration and creates it.  Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *priorityLevelConfigurations) Create(ctx context.Context, priorityLevelConfiguration *v1beta2.PriorityLevelConfiguration, opts v1.CreateOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	result = &v1beta2.PriorityLevelConfiguration{}
    -	err = c.client.Post().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a priorityLevelConfiguration and updates it. Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *priorityLevelConfigurations) Update(ctx context.Context, priorityLevelConfiguration *v1beta2.PriorityLevelConfiguration, opts v1.UpdateOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	result = &v1beta2.PriorityLevelConfiguration{}
    -	err = c.client.Put().
    -		Resource("prioritylevelconfigurations").
    -		Name(priorityLevelConfiguration.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *priorityLevelConfigurations) UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1beta2.PriorityLevelConfiguration, opts v1.UpdateOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	result = &v1beta2.PriorityLevelConfiguration{}
    -	err = c.client.Put().
    -		Resource("prioritylevelconfigurations").
    -		Name(priorityLevelConfiguration.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the priorityLevelConfiguration and deletes it. Returns an error if one occurs.
    -func (c *priorityLevelConfigurations) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *priorityLevelConfigurations) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched priorityLevelConfiguration.
    -func (c *priorityLevelConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	result = &v1beta2.PriorityLevelConfiguration{}
    -	err = c.client.Patch(pt).
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityLevelConfiguration.
    -func (c *priorityLevelConfigurations) Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	result = &v1beta2.PriorityLevelConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("prioritylevelconfigurations").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *priorityLevelConfigurations) ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta2.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta2.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta2.PriorityLevelConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("prioritylevelconfigurations").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_flowcontrol_client.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_flowcontrol_client.go
    index 1cb0198d068a..8f13bc94ce2e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_flowcontrol_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_flowcontrol_client.go
    @@ -29,11 +29,11 @@ type FakeFlowcontrolV1beta3 struct {
     }
     
     func (c *FakeFlowcontrolV1beta3) FlowSchemas() v1beta3.FlowSchemaInterface {
    -	return &FakeFlowSchemas{c}
    +	return newFakeFlowSchemas(c)
     }
     
     func (c *FakeFlowcontrolV1beta3) PriorityLevelConfigurations() v1beta3.PriorityLevelConfigurationInterface {
    -	return &FakePriorityLevelConfigurations{c}
    +	return newFakePriorityLevelConfigurations(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_flowschema.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_flowschema.go
    index 1371f6ed6744..887e8c97c079 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_flowschema.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_flowschema.go
    @@ -19,160 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	flowcontrolv1beta3 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedflowcontrolv1beta3 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3"
     )
     
    -// FakeFlowSchemas implements FlowSchemaInterface
    -type FakeFlowSchemas struct {
    +// fakeFlowSchemas implements FlowSchemaInterface
    +type fakeFlowSchemas struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta3.FlowSchema, *v1beta3.FlowSchemaList, *flowcontrolv1beta3.FlowSchemaApplyConfiguration]
     	Fake *FakeFlowcontrolV1beta3
     }
     
    -var flowschemasResource = v1beta3.SchemeGroupVersion.WithResource("flowschemas")
    -
    -var flowschemasKind = v1beta3.SchemeGroupVersion.WithKind("FlowSchema")
    -
    -// Get takes name of the flowSchema, and returns the corresponding flowSchema object, and an error if there is any.
    -func (c *FakeFlowSchemas) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta3.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(flowschemasResource, name), &v1beta3.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.FlowSchema), err
    -}
    -
    -// List takes label and field selectors, and returns the list of FlowSchemas that match those selectors.
    -func (c *FakeFlowSchemas) List(ctx context.Context, opts v1.ListOptions) (result *v1beta3.FlowSchemaList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(flowschemasResource, flowschemasKind, opts), &v1beta3.FlowSchemaList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta3.FlowSchemaList{ListMeta: obj.(*v1beta3.FlowSchemaList).ListMeta}
    -	for _, item := range obj.(*v1beta3.FlowSchemaList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested flowSchemas.
    -func (c *FakeFlowSchemas) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(flowschemasResource, opts))
    -}
    -
    -// Create takes the representation of a flowSchema and creates it.  Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *FakeFlowSchemas) Create(ctx context.Context, flowSchema *v1beta3.FlowSchema, opts v1.CreateOptions) (result *v1beta3.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(flowschemasResource, flowSchema), &v1beta3.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.FlowSchema), err
    -}
    -
    -// Update takes the representation of a flowSchema and updates it. Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *FakeFlowSchemas) Update(ctx context.Context, flowSchema *v1beta3.FlowSchema, opts v1.UpdateOptions) (result *v1beta3.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(flowschemasResource, flowSchema), &v1beta3.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.FlowSchema), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeFlowSchemas) UpdateStatus(ctx context.Context, flowSchema *v1beta3.FlowSchema, opts v1.UpdateOptions) (*v1beta3.FlowSchema, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(flowschemasResource, "status", flowSchema), &v1beta3.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.FlowSchema), err
    -}
    -
    -// Delete takes name of the flowSchema and deletes it. Returns an error if one occurs.
    -func (c *FakeFlowSchemas) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(flowschemasResource, name, opts), &v1beta3.FlowSchema{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeFlowSchemas) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(flowschemasResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta3.FlowSchemaList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched flowSchema.
    -func (c *FakeFlowSchemas) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta3.FlowSchema, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, name, pt, data, subresources...), &v1beta3.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.FlowSchema), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied flowSchema.
    -func (c *FakeFlowSchemas) Apply(ctx context.Context, flowSchema *flowcontrolv1beta3.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, *name, types.ApplyPatchType, data), &v1beta3.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.FlowSchema), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeFlowSchemas) ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1beta3.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(flowschemasResource, *name, types.ApplyPatchType, data, "status"), &v1beta3.FlowSchema{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeFlowSchemas(fake *FakeFlowcontrolV1beta3) typedflowcontrolv1beta3.FlowSchemaInterface {
    +	return &fakeFlowSchemas{
    +		gentype.NewFakeClientWithListAndApply[*v1beta3.FlowSchema, *v1beta3.FlowSchemaList, *flowcontrolv1beta3.FlowSchemaApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta3.SchemeGroupVersion.WithResource("flowschemas"),
    +			v1beta3.SchemeGroupVersion.WithKind("FlowSchema"),
    +			func() *v1beta3.FlowSchema { return &v1beta3.FlowSchema{} },
    +			func() *v1beta3.FlowSchemaList { return &v1beta3.FlowSchemaList{} },
    +			func(dst, src *v1beta3.FlowSchemaList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta3.FlowSchemaList) []*v1beta3.FlowSchema { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta3.FlowSchemaList, items []*v1beta3.FlowSchema) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta3.FlowSchema), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_prioritylevelconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_prioritylevelconfiguration.go
    index a0e266fecb5c..57ea20cfc7e7 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/fake/fake_prioritylevelconfiguration.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	flowcontrolv1beta3 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedflowcontrolv1beta3 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3"
     )
     
    -// FakePriorityLevelConfigurations implements PriorityLevelConfigurationInterface
    -type FakePriorityLevelConfigurations struct {
    +// fakePriorityLevelConfigurations implements PriorityLevelConfigurationInterface
    +type fakePriorityLevelConfigurations struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta3.PriorityLevelConfiguration, *v1beta3.PriorityLevelConfigurationList, *flowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration]
     	Fake *FakeFlowcontrolV1beta3
     }
     
    -var prioritylevelconfigurationsResource = v1beta3.SchemeGroupVersion.WithResource("prioritylevelconfigurations")
    -
    -var prioritylevelconfigurationsKind = v1beta3.SchemeGroupVersion.WithKind("PriorityLevelConfiguration")
    -
    -// Get takes name of the priorityLevelConfiguration, and returns the corresponding priorityLevelConfiguration object, and an error if there is any.
    -func (c *FakePriorityLevelConfigurations) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(prioritylevelconfigurationsResource, name), &v1beta3.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.PriorityLevelConfiguration), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityLevelConfigurations that match those selectors.
    -func (c *FakePriorityLevelConfigurations) List(ctx context.Context, opts v1.ListOptions) (result *v1beta3.PriorityLevelConfigurationList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(prioritylevelconfigurationsResource, prioritylevelconfigurationsKind, opts), &v1beta3.PriorityLevelConfigurationList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta3.PriorityLevelConfigurationList{ListMeta: obj.(*v1beta3.PriorityLevelConfigurationList).ListMeta}
    -	for _, item := range obj.(*v1beta3.PriorityLevelConfigurationList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityLevelConfigurations.
    -func (c *FakePriorityLevelConfigurations) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(prioritylevelconfigurationsResource, opts))
    -}
    -
    -// Create takes the representation of a priorityLevelConfiguration and creates it.  Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *FakePriorityLevelConfigurations) Create(ctx context.Context, priorityLevelConfiguration *v1beta3.PriorityLevelConfiguration, opts v1.CreateOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(prioritylevelconfigurationsResource, priorityLevelConfiguration), &v1beta3.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.PriorityLevelConfiguration), err
    -}
    -
    -// Update takes the representation of a priorityLevelConfiguration and updates it. Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *FakePriorityLevelConfigurations) Update(ctx context.Context, priorityLevelConfiguration *v1beta3.PriorityLevelConfiguration, opts v1.UpdateOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(prioritylevelconfigurationsResource, priorityLevelConfiguration), &v1beta3.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.PriorityLevelConfiguration), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakePriorityLevelConfigurations) UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1beta3.PriorityLevelConfiguration, opts v1.UpdateOptions) (*v1beta3.PriorityLevelConfiguration, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(prioritylevelconfigurationsResource, "status", priorityLevelConfiguration), &v1beta3.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.PriorityLevelConfiguration), err
    -}
    -
    -// Delete takes name of the priorityLevelConfiguration and deletes it. Returns an error if one occurs.
    -func (c *FakePriorityLevelConfigurations) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(prioritylevelconfigurationsResource, name, opts), &v1beta3.PriorityLevelConfiguration{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePriorityLevelConfigurations) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(prioritylevelconfigurationsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta3.PriorityLevelConfigurationList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched priorityLevelConfiguration.
    -func (c *FakePriorityLevelConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, name, pt, data, subresources...), &v1beta3.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.PriorityLevelConfiguration), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityLevelConfiguration.
    -func (c *FakePriorityLevelConfigurations) Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, *name, types.ApplyPatchType, data), &v1beta3.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta3.PriorityLevelConfiguration), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakePriorityLevelConfigurations) ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(prioritylevelconfigurationsResource, *name, types.ApplyPatchType, data, "status"), &v1beta3.PriorityLevelConfiguration{})
    -	if obj == nil {
    -		return nil, err
    +func newFakePriorityLevelConfigurations(fake *FakeFlowcontrolV1beta3) typedflowcontrolv1beta3.PriorityLevelConfigurationInterface {
    +	return &fakePriorityLevelConfigurations{
    +		gentype.NewFakeClientWithListAndApply[*v1beta3.PriorityLevelConfiguration, *v1beta3.PriorityLevelConfigurationList, *flowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta3.SchemeGroupVersion.WithResource("prioritylevelconfigurations"),
    +			v1beta3.SchemeGroupVersion.WithKind("PriorityLevelConfiguration"),
    +			func() *v1beta3.PriorityLevelConfiguration { return &v1beta3.PriorityLevelConfiguration{} },
    +			func() *v1beta3.PriorityLevelConfigurationList { return &v1beta3.PriorityLevelConfigurationList{} },
    +			func(dst, src *v1beta3.PriorityLevelConfigurationList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta3.PriorityLevelConfigurationList) []*v1beta3.PriorityLevelConfiguration {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta3.PriorityLevelConfigurationList, items []*v1beta3.PriorityLevelConfiguration) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta3.PriorityLevelConfiguration), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/flowcontrol_client.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/flowcontrol_client.go
    index 461120bd3b19..b32dc911c716 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/flowcontrol_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/flowcontrol_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta3
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -90,10 +90,10 @@ func New(c rest.Interface) *FlowcontrolV1beta3Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta3.SchemeGroupVersion
    +	gv := flowcontrolv1beta3.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/flowschema.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/flowschema.go
    index 5fa39d6bafaf..1e0d9feb1aa2 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/flowschema.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/flowschema.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta3
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	flowcontrolv1beta3 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3"
    +	applyconfigurationsflowcontrolv1beta3 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // FlowSchemasGetter has a method to return a FlowSchemaInterface.
    @@ -41,203 +38,38 @@ type FlowSchemasGetter interface {
     
     // FlowSchemaInterface has methods to work with FlowSchema resources.
     type FlowSchemaInterface interface {
    -	Create(ctx context.Context, flowSchema *v1beta3.FlowSchema, opts v1.CreateOptions) (*v1beta3.FlowSchema, error)
    -	Update(ctx context.Context, flowSchema *v1beta3.FlowSchema, opts v1.UpdateOptions) (*v1beta3.FlowSchema, error)
    -	UpdateStatus(ctx context.Context, flowSchema *v1beta3.FlowSchema, opts v1.UpdateOptions) (*v1beta3.FlowSchema, error)
    +	Create(ctx context.Context, flowSchema *flowcontrolv1beta3.FlowSchema, opts v1.CreateOptions) (*flowcontrolv1beta3.FlowSchema, error)
    +	Update(ctx context.Context, flowSchema *flowcontrolv1beta3.FlowSchema, opts v1.UpdateOptions) (*flowcontrolv1beta3.FlowSchema, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, flowSchema *flowcontrolv1beta3.FlowSchema, opts v1.UpdateOptions) (*flowcontrolv1beta3.FlowSchema, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta3.FlowSchema, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta3.FlowSchemaList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*flowcontrolv1beta3.FlowSchema, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*flowcontrolv1beta3.FlowSchemaList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta3.FlowSchema, err error)
    -	Apply(ctx context.Context, flowSchema *flowcontrolv1beta3.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.FlowSchema, err error)
    -	ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1beta3.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.FlowSchema, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *flowcontrolv1beta3.FlowSchema, err error)
    +	Apply(ctx context.Context, flowSchema *applyconfigurationsflowcontrolv1beta3.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta3.FlowSchema, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, flowSchema *applyconfigurationsflowcontrolv1beta3.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta3.FlowSchema, err error)
     	FlowSchemaExpansion
     }
     
     // flowSchemas implements FlowSchemaInterface
     type flowSchemas struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*flowcontrolv1beta3.FlowSchema, *flowcontrolv1beta3.FlowSchemaList, *applyconfigurationsflowcontrolv1beta3.FlowSchemaApplyConfiguration]
     }
     
     // newFlowSchemas returns a FlowSchemas
     func newFlowSchemas(c *FlowcontrolV1beta3Client) *flowSchemas {
     	return &flowSchemas{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*flowcontrolv1beta3.FlowSchema, *flowcontrolv1beta3.FlowSchemaList, *applyconfigurationsflowcontrolv1beta3.FlowSchemaApplyConfiguration](
    +			"flowschemas",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *flowcontrolv1beta3.FlowSchema { return &flowcontrolv1beta3.FlowSchema{} },
    +			func() *flowcontrolv1beta3.FlowSchemaList { return &flowcontrolv1beta3.FlowSchemaList{} },
    +			gentype.PrefersProtobuf[*flowcontrolv1beta3.FlowSchema](),
    +		),
     	}
     }
    -
    -// Get takes name of the flowSchema, and returns the corresponding flowSchema object, and an error if there is any.
    -func (c *flowSchemas) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta3.FlowSchema, err error) {
    -	result = &v1beta3.FlowSchema{}
    -	err = c.client.Get().
    -		Resource("flowschemas").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of FlowSchemas that match those selectors.
    -func (c *flowSchemas) List(ctx context.Context, opts v1.ListOptions) (result *v1beta3.FlowSchemaList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta3.FlowSchemaList{}
    -	err = c.client.Get().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested flowSchemas.
    -func (c *flowSchemas) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a flowSchema and creates it.  Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *flowSchemas) Create(ctx context.Context, flowSchema *v1beta3.FlowSchema, opts v1.CreateOptions) (result *v1beta3.FlowSchema, err error) {
    -	result = &v1beta3.FlowSchema{}
    -	err = c.client.Post().
    -		Resource("flowschemas").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a flowSchema and updates it. Returns the server's representation of the flowSchema, and an error, if there is any.
    -func (c *flowSchemas) Update(ctx context.Context, flowSchema *v1beta3.FlowSchema, opts v1.UpdateOptions) (result *v1beta3.FlowSchema, err error) {
    -	result = &v1beta3.FlowSchema{}
    -	err = c.client.Put().
    -		Resource("flowschemas").
    -		Name(flowSchema.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *flowSchemas) UpdateStatus(ctx context.Context, flowSchema *v1beta3.FlowSchema, opts v1.UpdateOptions) (result *v1beta3.FlowSchema, err error) {
    -	result = &v1beta3.FlowSchema{}
    -	err = c.client.Put().
    -		Resource("flowschemas").
    -		Name(flowSchema.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(flowSchema).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the flowSchema and deletes it. Returns an error if one occurs.
    -func (c *flowSchemas) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("flowschemas").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *flowSchemas) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("flowschemas").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched flowSchema.
    -func (c *flowSchemas) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta3.FlowSchema, err error) {
    -	result = &v1beta3.FlowSchema{}
    -	err = c.client.Patch(pt).
    -		Resource("flowschemas").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied flowSchema.
    -func (c *flowSchemas) Apply(ctx context.Context, flowSchema *flowcontrolv1beta3.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -	result = &v1beta3.FlowSchema{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("flowschemas").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *flowSchemas) ApplyStatus(ctx context.Context, flowSchema *flowcontrolv1beta3.FlowSchemaApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.FlowSchema, err error) {
    -	if flowSchema == nil {
    -		return nil, fmt.Errorf("flowSchema provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(flowSchema)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := flowSchema.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("flowSchema.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta3.FlowSchema{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("flowschemas").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/prioritylevelconfiguration.go
    index 49f05257c9b7..91bbf3fb14fd 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3/prioritylevelconfiguration.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta3
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	flowcontrolv1beta3 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3"
    +	applyconfigurationsflowcontrolv1beta3 "k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PriorityLevelConfigurationsGetter has a method to return a PriorityLevelConfigurationInterface.
    @@ -41,203 +38,42 @@ type PriorityLevelConfigurationsGetter interface {
     
     // PriorityLevelConfigurationInterface has methods to work with PriorityLevelConfiguration resources.
     type PriorityLevelConfigurationInterface interface {
    -	Create(ctx context.Context, priorityLevelConfiguration *v1beta3.PriorityLevelConfiguration, opts v1.CreateOptions) (*v1beta3.PriorityLevelConfiguration, error)
    -	Update(ctx context.Context, priorityLevelConfiguration *v1beta3.PriorityLevelConfiguration, opts v1.UpdateOptions) (*v1beta3.PriorityLevelConfiguration, error)
    -	UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1beta3.PriorityLevelConfiguration, opts v1.UpdateOptions) (*v1beta3.PriorityLevelConfiguration, error)
    +	Create(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta3.PriorityLevelConfiguration, opts v1.CreateOptions) (*flowcontrolv1beta3.PriorityLevelConfiguration, error)
    +	Update(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta3.PriorityLevelConfiguration, opts v1.UpdateOptions) (*flowcontrolv1beta3.PriorityLevelConfiguration, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta3.PriorityLevelConfiguration, opts v1.UpdateOptions) (*flowcontrolv1beta3.PriorityLevelConfiguration, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta3.PriorityLevelConfiguration, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta3.PriorityLevelConfigurationList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*flowcontrolv1beta3.PriorityLevelConfiguration, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*flowcontrolv1beta3.PriorityLevelConfigurationList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta3.PriorityLevelConfiguration, err error)
    -	Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.PriorityLevelConfiguration, err error)
    -	ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.PriorityLevelConfiguration, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *flowcontrolv1beta3.PriorityLevelConfiguration, err error)
    +	Apply(ctx context.Context, priorityLevelConfiguration *applyconfigurationsflowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta3.PriorityLevelConfiguration, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, priorityLevelConfiguration *applyconfigurationsflowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *flowcontrolv1beta3.PriorityLevelConfiguration, err error)
     	PriorityLevelConfigurationExpansion
     }
     
     // priorityLevelConfigurations implements PriorityLevelConfigurationInterface
     type priorityLevelConfigurations struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*flowcontrolv1beta3.PriorityLevelConfiguration, *flowcontrolv1beta3.PriorityLevelConfigurationList, *applyconfigurationsflowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration]
     }
     
     // newPriorityLevelConfigurations returns a PriorityLevelConfigurations
     func newPriorityLevelConfigurations(c *FlowcontrolV1beta3Client) *priorityLevelConfigurations {
     	return &priorityLevelConfigurations{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*flowcontrolv1beta3.PriorityLevelConfiguration, *flowcontrolv1beta3.PriorityLevelConfigurationList, *applyconfigurationsflowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration](
    +			"prioritylevelconfigurations",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *flowcontrolv1beta3.PriorityLevelConfiguration {
    +				return &flowcontrolv1beta3.PriorityLevelConfiguration{}
    +			},
    +			func() *flowcontrolv1beta3.PriorityLevelConfigurationList {
    +				return &flowcontrolv1beta3.PriorityLevelConfigurationList{}
    +			},
    +			gentype.PrefersProtobuf[*flowcontrolv1beta3.PriorityLevelConfiguration](),
    +		),
     	}
     }
    -
    -// Get takes name of the priorityLevelConfiguration, and returns the corresponding priorityLevelConfiguration object, and an error if there is any.
    -func (c *priorityLevelConfigurations) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	result = &v1beta3.PriorityLevelConfiguration{}
    -	err = c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityLevelConfigurations that match those selectors.
    -func (c *priorityLevelConfigurations) List(ctx context.Context, opts v1.ListOptions) (result *v1beta3.PriorityLevelConfigurationList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta3.PriorityLevelConfigurationList{}
    -	err = c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityLevelConfigurations.
    -func (c *priorityLevelConfigurations) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a priorityLevelConfiguration and creates it.  Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *priorityLevelConfigurations) Create(ctx context.Context, priorityLevelConfiguration *v1beta3.PriorityLevelConfiguration, opts v1.CreateOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	result = &v1beta3.PriorityLevelConfiguration{}
    -	err = c.client.Post().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a priorityLevelConfiguration and updates it. Returns the server's representation of the priorityLevelConfiguration, and an error, if there is any.
    -func (c *priorityLevelConfigurations) Update(ctx context.Context, priorityLevelConfiguration *v1beta3.PriorityLevelConfiguration, opts v1.UpdateOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	result = &v1beta3.PriorityLevelConfiguration{}
    -	err = c.client.Put().
    -		Resource("prioritylevelconfigurations").
    -		Name(priorityLevelConfiguration.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *priorityLevelConfigurations) UpdateStatus(ctx context.Context, priorityLevelConfiguration *v1beta3.PriorityLevelConfiguration, opts v1.UpdateOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	result = &v1beta3.PriorityLevelConfiguration{}
    -	err = c.client.Put().
    -		Resource("prioritylevelconfigurations").
    -		Name(priorityLevelConfiguration.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityLevelConfiguration).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the priorityLevelConfiguration and deletes it. Returns an error if one occurs.
    -func (c *priorityLevelConfigurations) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *priorityLevelConfigurations) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("prioritylevelconfigurations").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched priorityLevelConfiguration.
    -func (c *priorityLevelConfigurations) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	result = &v1beta3.PriorityLevelConfiguration{}
    -	err = c.client.Patch(pt).
    -		Resource("prioritylevelconfigurations").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityLevelConfiguration.
    -func (c *priorityLevelConfigurations) Apply(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -	result = &v1beta3.PriorityLevelConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("prioritylevelconfigurations").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *priorityLevelConfigurations) ApplyStatus(ctx context.Context, priorityLevelConfiguration *flowcontrolv1beta3.PriorityLevelConfigurationApplyConfiguration, opts v1.ApplyOptions) (result *v1beta3.PriorityLevelConfiguration, err error) {
    -	if priorityLevelConfiguration == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityLevelConfiguration)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := priorityLevelConfiguration.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityLevelConfiguration.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta3.PriorityLevelConfiguration{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("prioritylevelconfigurations").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_ingress.go
    index 002de0dd8a07..7346dde66e67 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_ingress.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_ingress.go
    @@ -19,171 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/networking/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	networkingv1 "k8s.io/client-go/applyconfigurations/networking/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typednetworkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1"
     )
     
    -// FakeIngresses implements IngressInterface
    -type FakeIngresses struct {
    +// fakeIngresses implements IngressInterface
    +type fakeIngresses struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Ingress, *v1.IngressList, *networkingv1.IngressApplyConfiguration]
     	Fake *FakeNetworkingV1
    -	ns   string
    -}
    -
    -var ingressesResource = v1.SchemeGroupVersion.WithResource("ingresses")
    -
    -var ingressesKind = v1.SchemeGroupVersion.WithKind("Ingress")
    -
    -// Get takes name of the ingress, and returns the corresponding ingress object, and an error if there is any.
    -func (c *FakeIngresses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(ingressesResource, c.ns, name), &v1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Ingress), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Ingresses that match those selectors.
    -func (c *FakeIngresses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IngressList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(ingressesResource, ingressesKind, c.ns, opts), &v1.IngressList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.IngressList{ListMeta: obj.(*v1.IngressList).ListMeta}
    -	for _, item := range obj.(*v1.IngressList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested ingresses.
    -func (c *FakeIngresses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(ingressesResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a ingress and creates it.  Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *FakeIngresses) Create(ctx context.Context, ingress *v1.Ingress, opts metav1.CreateOptions) (result *v1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(ingressesResource, c.ns, ingress), &v1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Ingress), err
    -}
    -
    -// Update takes the representation of a ingress and updates it. Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *FakeIngresses) Update(ctx context.Context, ingress *v1.Ingress, opts metav1.UpdateOptions) (result *v1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(ingressesResource, c.ns, ingress), &v1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Ingress), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeIngresses) UpdateStatus(ctx context.Context, ingress *v1.Ingress, opts metav1.UpdateOptions) (*v1.Ingress, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(ingressesResource, "status", c.ns, ingress), &v1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Ingress), err
    -}
    -
    -// Delete takes name of the ingress and deletes it. Returns an error if one occurs.
    -func (c *FakeIngresses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(ingressesResource, c.ns, name, opts), &v1.Ingress{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeIngresses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(ingressesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.IngressList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched ingress.
    -func (c *FakeIngresses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, name, pt, data, subresources...), &v1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Ingress), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied ingress.
    -func (c *FakeIngresses) Apply(ctx context.Context, ingress *networkingv1.IngressApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, *name, types.ApplyPatchType, data), &v1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Ingress), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeIngresses) ApplyStatus(ctx context.Context, ingress *networkingv1.IngressApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeIngresses(fake *FakeNetworkingV1, namespace string) typednetworkingv1.IngressInterface {
    +	return &fakeIngresses{
    +		gentype.NewFakeClientWithListAndApply[*v1.Ingress, *v1.IngressList, *networkingv1.IngressApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("ingresses"),
    +			v1.SchemeGroupVersion.WithKind("Ingress"),
    +			func() *v1.Ingress { return &v1.Ingress{} },
    +			func() *v1.IngressList { return &v1.IngressList{} },
    +			func(dst, src *v1.IngressList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.IngressList) []*v1.Ingress { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.IngressList, items []*v1.Ingress) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Ingress), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_ingressclass.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_ingressclass.go
    index 208a975082f2..c4700a45fea7 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_ingressclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_ingressclass.go
    @@ -19,127 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/networking/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	networkingv1 "k8s.io/client-go/applyconfigurations/networking/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typednetworkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1"
     )
     
    -// FakeIngressClasses implements IngressClassInterface
    -type FakeIngressClasses struct {
    +// fakeIngressClasses implements IngressClassInterface
    +type fakeIngressClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1.IngressClass, *v1.IngressClassList, *networkingv1.IngressClassApplyConfiguration]
     	Fake *FakeNetworkingV1
     }
     
    -var ingressclassesResource = v1.SchemeGroupVersion.WithResource("ingressclasses")
    -
    -var ingressclassesKind = v1.SchemeGroupVersion.WithKind("IngressClass")
    -
    -// Get takes name of the ingressClass, and returns the corresponding ingressClass object, and an error if there is any.
    -func (c *FakeIngressClasses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IngressClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(ingressclassesResource, name), &v1.IngressClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.IngressClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of IngressClasses that match those selectors.
    -func (c *FakeIngressClasses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IngressClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(ingressclassesResource, ingressclassesKind, opts), &v1.IngressClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.IngressClassList{ListMeta: obj.(*v1.IngressClassList).ListMeta}
    -	for _, item := range obj.(*v1.IngressClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested ingressClasses.
    -func (c *FakeIngressClasses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(ingressclassesResource, opts))
    -}
    -
    -// Create takes the representation of a ingressClass and creates it.  Returns the server's representation of the ingressClass, and an error, if there is any.
    -func (c *FakeIngressClasses) Create(ctx context.Context, ingressClass *v1.IngressClass, opts metav1.CreateOptions) (result *v1.IngressClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(ingressclassesResource, ingressClass), &v1.IngressClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.IngressClass), err
    -}
    -
    -// Update takes the representation of a ingressClass and updates it. Returns the server's representation of the ingressClass, and an error, if there is any.
    -func (c *FakeIngressClasses) Update(ctx context.Context, ingressClass *v1.IngressClass, opts metav1.UpdateOptions) (result *v1.IngressClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(ingressclassesResource, ingressClass), &v1.IngressClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.IngressClass), err
    -}
    -
    -// Delete takes name of the ingressClass and deletes it. Returns an error if one occurs.
    -func (c *FakeIngressClasses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(ingressclassesResource, name, opts), &v1.IngressClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeIngressClasses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(ingressclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.IngressClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched ingressClass.
    -func (c *FakeIngressClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IngressClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(ingressclassesResource, name, pt, data, subresources...), &v1.IngressClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.IngressClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied ingressClass.
    -func (c *FakeIngressClasses) Apply(ctx context.Context, ingressClass *networkingv1.IngressClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.IngressClass, err error) {
    -	if ingressClass == nil {
    -		return nil, fmt.Errorf("ingressClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(ingressClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingressClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingressClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(ingressclassesResource, *name, types.ApplyPatchType, data), &v1.IngressClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeIngressClasses(fake *FakeNetworkingV1) typednetworkingv1.IngressClassInterface {
    +	return &fakeIngressClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1.IngressClass, *v1.IngressClassList, *networkingv1.IngressClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("ingressclasses"),
    +			v1.SchemeGroupVersion.WithKind("IngressClass"),
    +			func() *v1.IngressClass { return &v1.IngressClass{} },
    +			func() *v1.IngressClassList { return &v1.IngressClassList{} },
    +			func(dst, src *v1.IngressClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.IngressClassList) []*v1.IngressClass { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.IngressClassList, items []*v1.IngressClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.IngressClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go
    index ed1639e2ff78..3b6a36ffee21 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go
    @@ -29,15 +29,15 @@ type FakeNetworkingV1 struct {
     }
     
     func (c *FakeNetworkingV1) Ingresses(namespace string) v1.IngressInterface {
    -	return &FakeIngresses{c, namespace}
    +	return newFakeIngresses(c, namespace)
     }
     
     func (c *FakeNetworkingV1) IngressClasses() v1.IngressClassInterface {
    -	return &FakeIngressClasses{c}
    +	return newFakeIngressClasses(c)
     }
     
     func (c *FakeNetworkingV1) NetworkPolicies(namespace string) v1.NetworkPolicyInterface {
    -	return &FakeNetworkPolicies{c, namespace}
    +	return newFakeNetworkPolicies(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go
    index dde09774c4a2..8b017351a8f5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go
    @@ -19,136 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/networking/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	networkingv1 "k8s.io/client-go/applyconfigurations/networking/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typednetworkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1"
     )
     
    -// FakeNetworkPolicies implements NetworkPolicyInterface
    -type FakeNetworkPolicies struct {
    +// fakeNetworkPolicies implements NetworkPolicyInterface
    +type fakeNetworkPolicies struct {
    +	*gentype.FakeClientWithListAndApply[*v1.NetworkPolicy, *v1.NetworkPolicyList, *networkingv1.NetworkPolicyApplyConfiguration]
     	Fake *FakeNetworkingV1
    -	ns   string
    -}
    -
    -var networkpoliciesResource = v1.SchemeGroupVersion.WithResource("networkpolicies")
    -
    -var networkpoliciesKind = v1.SchemeGroupVersion.WithKind("NetworkPolicy")
    -
    -// Get takes name of the networkPolicy, and returns the corresponding networkPolicy object, and an error if there is any.
    -func (c *FakeNetworkPolicies) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.NetworkPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(networkpoliciesResource, c.ns, name), &v1.NetworkPolicy{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.NetworkPolicy), err
    -}
    -
    -// List takes label and field selectors, and returns the list of NetworkPolicies that match those selectors.
    -func (c *FakeNetworkPolicies) List(ctx context.Context, opts metav1.ListOptions) (result *v1.NetworkPolicyList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(networkpoliciesResource, networkpoliciesKind, c.ns, opts), &v1.NetworkPolicyList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.NetworkPolicyList{ListMeta: obj.(*v1.NetworkPolicyList).ListMeta}
    -	for _, item := range obj.(*v1.NetworkPolicyList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested networkPolicies.
    -func (c *FakeNetworkPolicies) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(networkpoliciesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a networkPolicy and creates it.  Returns the server's representation of the networkPolicy, and an error, if there is any.
    -func (c *FakeNetworkPolicies) Create(ctx context.Context, networkPolicy *v1.NetworkPolicy, opts metav1.CreateOptions) (result *v1.NetworkPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(networkpoliciesResource, c.ns, networkPolicy), &v1.NetworkPolicy{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.NetworkPolicy), err
    -}
    -
    -// Update takes the representation of a networkPolicy and updates it. Returns the server's representation of the networkPolicy, and an error, if there is any.
    -func (c *FakeNetworkPolicies) Update(ctx context.Context, networkPolicy *v1.NetworkPolicy, opts metav1.UpdateOptions) (result *v1.NetworkPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(networkpoliciesResource, c.ns, networkPolicy), &v1.NetworkPolicy{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.NetworkPolicy), err
    -}
    -
    -// Delete takes name of the networkPolicy and deletes it. Returns an error if one occurs.
    -func (c *FakeNetworkPolicies) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(networkpoliciesResource, c.ns, name, opts), &v1.NetworkPolicy{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeNetworkPolicies) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(networkpoliciesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.NetworkPolicyList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched networkPolicy.
    -func (c *FakeNetworkPolicies) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.NetworkPolicy, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(networkpoliciesResource, c.ns, name, pt, data, subresources...), &v1.NetworkPolicy{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.NetworkPolicy), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied networkPolicy.
    -func (c *FakeNetworkPolicies) Apply(ctx context.Context, networkPolicy *networkingv1.NetworkPolicyApplyConfiguration, opts metav1.ApplyOptions) (result *v1.NetworkPolicy, err error) {
    -	if networkPolicy == nil {
    -		return nil, fmt.Errorf("networkPolicy provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(networkPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := networkPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("networkPolicy.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(networkpoliciesResource, c.ns, *name, types.ApplyPatchType, data), &v1.NetworkPolicy{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeNetworkPolicies(fake *FakeNetworkingV1, namespace string) typednetworkingv1.NetworkPolicyInterface {
    +	return &fakeNetworkPolicies{
    +		gentype.NewFakeClientWithListAndApply[*v1.NetworkPolicy, *v1.NetworkPolicyList, *networkingv1.NetworkPolicyApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("networkpolicies"),
    +			v1.SchemeGroupVersion.WithKind("NetworkPolicy"),
    +			func() *v1.NetworkPolicy { return &v1.NetworkPolicy{} },
    +			func() *v1.NetworkPolicyList { return &v1.NetworkPolicyList{} },
    +			func(dst, src *v1.NetworkPolicyList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.NetworkPolicyList) []*v1.NetworkPolicy { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.NetworkPolicyList, items []*v1.NetworkPolicy) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.NetworkPolicy), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingress.go
    index 9923d6cbae13..76d416249c95 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingress.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingress.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/networking/v1"
    +	networkingv1 "k8s.io/api/networking/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	networkingv1 "k8s.io/client-go/applyconfigurations/networking/v1"
    +	applyconfigurationsnetworkingv1 "k8s.io/client-go/applyconfigurations/networking/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // IngressesGetter has a method to return a IngressInterface.
    @@ -41,216 +38,38 @@ type IngressesGetter interface {
     
     // IngressInterface has methods to work with Ingress resources.
     type IngressInterface interface {
    -	Create(ctx context.Context, ingress *v1.Ingress, opts metav1.CreateOptions) (*v1.Ingress, error)
    -	Update(ctx context.Context, ingress *v1.Ingress, opts metav1.UpdateOptions) (*v1.Ingress, error)
    -	UpdateStatus(ctx context.Context, ingress *v1.Ingress, opts metav1.UpdateOptions) (*v1.Ingress, error)
    +	Create(ctx context.Context, ingress *networkingv1.Ingress, opts metav1.CreateOptions) (*networkingv1.Ingress, error)
    +	Update(ctx context.Context, ingress *networkingv1.Ingress, opts metav1.UpdateOptions) (*networkingv1.Ingress, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, ingress *networkingv1.Ingress, opts metav1.UpdateOptions) (*networkingv1.Ingress, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Ingress, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.IngressList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*networkingv1.Ingress, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*networkingv1.IngressList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Ingress, err error)
    -	Apply(ctx context.Context, ingress *networkingv1.IngressApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Ingress, err error)
    -	ApplyStatus(ctx context.Context, ingress *networkingv1.IngressApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Ingress, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *networkingv1.Ingress, err error)
    +	Apply(ctx context.Context, ingress *applyconfigurationsnetworkingv1.IngressApplyConfiguration, opts metav1.ApplyOptions) (result *networkingv1.Ingress, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, ingress *applyconfigurationsnetworkingv1.IngressApplyConfiguration, opts metav1.ApplyOptions) (result *networkingv1.Ingress, err error)
     	IngressExpansion
     }
     
     // ingresses implements IngressInterface
     type ingresses struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*networkingv1.Ingress, *networkingv1.IngressList, *applyconfigurationsnetworkingv1.IngressApplyConfiguration]
     }
     
     // newIngresses returns a Ingresses
     func newIngresses(c *NetworkingV1Client, namespace string) *ingresses {
     	return &ingresses{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*networkingv1.Ingress, *networkingv1.IngressList, *applyconfigurationsnetworkingv1.IngressApplyConfiguration](
    +			"ingresses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *networkingv1.Ingress { return &networkingv1.Ingress{} },
    +			func() *networkingv1.IngressList { return &networkingv1.IngressList{} },
    +			gentype.PrefersProtobuf[*networkingv1.Ingress](),
    +		),
     	}
     }
    -
    -// Get takes name of the ingress, and returns the corresponding ingress object, and an error if there is any.
    -func (c *ingresses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Ingress, err error) {
    -	result = &v1.Ingress{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Ingresses that match those selectors.
    -func (c *ingresses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IngressList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.IngressList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested ingresses.
    -func (c *ingresses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a ingress and creates it.  Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *ingresses) Create(ctx context.Context, ingress *v1.Ingress, opts metav1.CreateOptions) (result *v1.Ingress, err error) {
    -	result = &v1.Ingress{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a ingress and updates it. Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *ingresses) Update(ctx context.Context, ingress *v1.Ingress, opts metav1.UpdateOptions) (result *v1.Ingress, err error) {
    -	result = &v1.Ingress{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(ingress.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *ingresses) UpdateStatus(ctx context.Context, ingress *v1.Ingress, opts metav1.UpdateOptions) (result *v1.Ingress, err error) {
    -	result = &v1.Ingress{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(ingress.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the ingress and deletes it. Returns an error if one occurs.
    -func (c *ingresses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *ingresses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched ingress.
    -func (c *ingresses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Ingress, err error) {
    -	result = &v1.Ingress{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied ingress.
    -func (c *ingresses) Apply(ctx context.Context, ingress *networkingv1.IngressApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -	result = &v1.Ingress{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *ingresses) ApplyStatus(ctx context.Context, ingress *networkingv1.IngressApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.Ingress{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingressclass.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingressclass.go
    index 16c8e48bf0ba..3bbbf9e157ca 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingressclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingressclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/networking/v1"
    +	networkingv1 "k8s.io/api/networking/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	networkingv1 "k8s.io/client-go/applyconfigurations/networking/v1"
    +	applyconfigurationsnetworkingv1 "k8s.io/client-go/applyconfigurations/networking/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // IngressClassesGetter has a method to return a IngressClassInterface.
    @@ -41,157 +38,34 @@ type IngressClassesGetter interface {
     
     // IngressClassInterface has methods to work with IngressClass resources.
     type IngressClassInterface interface {
    -	Create(ctx context.Context, ingressClass *v1.IngressClass, opts metav1.CreateOptions) (*v1.IngressClass, error)
    -	Update(ctx context.Context, ingressClass *v1.IngressClass, opts metav1.UpdateOptions) (*v1.IngressClass, error)
    +	Create(ctx context.Context, ingressClass *networkingv1.IngressClass, opts metav1.CreateOptions) (*networkingv1.IngressClass, error)
    +	Update(ctx context.Context, ingressClass *networkingv1.IngressClass, opts metav1.UpdateOptions) (*networkingv1.IngressClass, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.IngressClass, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.IngressClassList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*networkingv1.IngressClass, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*networkingv1.IngressClassList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IngressClass, err error)
    -	Apply(ctx context.Context, ingressClass *networkingv1.IngressClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.IngressClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *networkingv1.IngressClass, err error)
    +	Apply(ctx context.Context, ingressClass *applyconfigurationsnetworkingv1.IngressClassApplyConfiguration, opts metav1.ApplyOptions) (result *networkingv1.IngressClass, err error)
     	IngressClassExpansion
     }
     
     // ingressClasses implements IngressClassInterface
     type ingressClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*networkingv1.IngressClass, *networkingv1.IngressClassList, *applyconfigurationsnetworkingv1.IngressClassApplyConfiguration]
     }
     
     // newIngressClasses returns a IngressClasses
     func newIngressClasses(c *NetworkingV1Client) *ingressClasses {
     	return &ingressClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*networkingv1.IngressClass, *networkingv1.IngressClassList, *applyconfigurationsnetworkingv1.IngressClassApplyConfiguration](
    +			"ingressclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *networkingv1.IngressClass { return &networkingv1.IngressClass{} },
    +			func() *networkingv1.IngressClassList { return &networkingv1.IngressClassList{} },
    +			gentype.PrefersProtobuf[*networkingv1.IngressClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the ingressClass, and returns the corresponding ingressClass object, and an error if there is any.
    -func (c *ingressClasses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IngressClass, err error) {
    -	result = &v1.IngressClass{}
    -	err = c.client.Get().
    -		Resource("ingressclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of IngressClasses that match those selectors.
    -func (c *ingressClasses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IngressClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.IngressClassList{}
    -	err = c.client.Get().
    -		Resource("ingressclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested ingressClasses.
    -func (c *ingressClasses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("ingressclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a ingressClass and creates it.  Returns the server's representation of the ingressClass, and an error, if there is any.
    -func (c *ingressClasses) Create(ctx context.Context, ingressClass *v1.IngressClass, opts metav1.CreateOptions) (result *v1.IngressClass, err error) {
    -	result = &v1.IngressClass{}
    -	err = c.client.Post().
    -		Resource("ingressclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingressClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a ingressClass and updates it. Returns the server's representation of the ingressClass, and an error, if there is any.
    -func (c *ingressClasses) Update(ctx context.Context, ingressClass *v1.IngressClass, opts metav1.UpdateOptions) (result *v1.IngressClass, err error) {
    -	result = &v1.IngressClass{}
    -	err = c.client.Put().
    -		Resource("ingressclasses").
    -		Name(ingressClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingressClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the ingressClass and deletes it. Returns an error if one occurs.
    -func (c *ingressClasses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("ingressclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *ingressClasses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("ingressclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched ingressClass.
    -func (c *ingressClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IngressClass, err error) {
    -	result = &v1.IngressClass{}
    -	err = c.client.Patch(pt).
    -		Resource("ingressclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied ingressClass.
    -func (c *ingressClasses) Apply(ctx context.Context, ingressClass *networkingv1.IngressClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.IngressClass, err error) {
    -	if ingressClass == nil {
    -		return nil, fmt.Errorf("ingressClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(ingressClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingressClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingressClass.Name must be provided to Apply")
    -	}
    -	result = &v1.IngressClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("ingressclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go
    index 3b72a7ae9297..692b52f025a6 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/networking/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	networkingv1 "k8s.io/api/networking/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -95,10 +95,10 @@ func New(c rest.Interface) *NetworkingV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := networkingv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go
    index d7454ce14525..2758c2bfbcb6 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/networking/v1"
    +	networkingv1 "k8s.io/api/networking/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	networkingv1 "k8s.io/client-go/applyconfigurations/networking/v1"
    +	applyconfigurationsnetworkingv1 "k8s.io/client-go/applyconfigurations/networking/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // NetworkPoliciesGetter has a method to return a NetworkPolicyInterface.
    @@ -41,168 +38,34 @@ type NetworkPoliciesGetter interface {
     
     // NetworkPolicyInterface has methods to work with NetworkPolicy resources.
     type NetworkPolicyInterface interface {
    -	Create(ctx context.Context, networkPolicy *v1.NetworkPolicy, opts metav1.CreateOptions) (*v1.NetworkPolicy, error)
    -	Update(ctx context.Context, networkPolicy *v1.NetworkPolicy, opts metav1.UpdateOptions) (*v1.NetworkPolicy, error)
    +	Create(ctx context.Context, networkPolicy *networkingv1.NetworkPolicy, opts metav1.CreateOptions) (*networkingv1.NetworkPolicy, error)
    +	Update(ctx context.Context, networkPolicy *networkingv1.NetworkPolicy, opts metav1.UpdateOptions) (*networkingv1.NetworkPolicy, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.NetworkPolicy, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.NetworkPolicyList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*networkingv1.NetworkPolicy, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*networkingv1.NetworkPolicyList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.NetworkPolicy, err error)
    -	Apply(ctx context.Context, networkPolicy *networkingv1.NetworkPolicyApplyConfiguration, opts metav1.ApplyOptions) (result *v1.NetworkPolicy, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *networkingv1.NetworkPolicy, err error)
    +	Apply(ctx context.Context, networkPolicy *applyconfigurationsnetworkingv1.NetworkPolicyApplyConfiguration, opts metav1.ApplyOptions) (result *networkingv1.NetworkPolicy, err error)
     	NetworkPolicyExpansion
     }
     
     // networkPolicies implements NetworkPolicyInterface
     type networkPolicies struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*networkingv1.NetworkPolicy, *networkingv1.NetworkPolicyList, *applyconfigurationsnetworkingv1.NetworkPolicyApplyConfiguration]
     }
     
     // newNetworkPolicies returns a NetworkPolicies
     func newNetworkPolicies(c *NetworkingV1Client, namespace string) *networkPolicies {
     	return &networkPolicies{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*networkingv1.NetworkPolicy, *networkingv1.NetworkPolicyList, *applyconfigurationsnetworkingv1.NetworkPolicyApplyConfiguration](
    +			"networkpolicies",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *networkingv1.NetworkPolicy { return &networkingv1.NetworkPolicy{} },
    +			func() *networkingv1.NetworkPolicyList { return &networkingv1.NetworkPolicyList{} },
    +			gentype.PrefersProtobuf[*networkingv1.NetworkPolicy](),
    +		),
     	}
     }
    -
    -// Get takes name of the networkPolicy, and returns the corresponding networkPolicy object, and an error if there is any.
    -func (c *networkPolicies) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.NetworkPolicy, err error) {
    -	result = &v1.NetworkPolicy{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of NetworkPolicies that match those selectors.
    -func (c *networkPolicies) List(ctx context.Context, opts metav1.ListOptions) (result *v1.NetworkPolicyList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.NetworkPolicyList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested networkPolicies.
    -func (c *networkPolicies) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a networkPolicy and creates it.  Returns the server's representation of the networkPolicy, and an error, if there is any.
    -func (c *networkPolicies) Create(ctx context.Context, networkPolicy *v1.NetworkPolicy, opts metav1.CreateOptions) (result *v1.NetworkPolicy, err error) {
    -	result = &v1.NetworkPolicy{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(networkPolicy).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a networkPolicy and updates it. Returns the server's representation of the networkPolicy, and an error, if there is any.
    -func (c *networkPolicies) Update(ctx context.Context, networkPolicy *v1.NetworkPolicy, opts metav1.UpdateOptions) (result *v1.NetworkPolicy, err error) {
    -	result = &v1.NetworkPolicy{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		Name(networkPolicy.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(networkPolicy).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the networkPolicy and deletes it. Returns an error if one occurs.
    -func (c *networkPolicies) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *networkPolicies) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched networkPolicy.
    -func (c *networkPolicies) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.NetworkPolicy, err error) {
    -	result = &v1.NetworkPolicy{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied networkPolicy.
    -func (c *networkPolicies) Apply(ctx context.Context, networkPolicy *networkingv1.NetworkPolicyApplyConfiguration, opts metav1.ApplyOptions) (result *v1.NetworkPolicy, err error) {
    -	if networkPolicy == nil {
    -		return nil, fmt.Errorf("networkPolicy provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(networkPolicy)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := networkPolicy.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("networkPolicy.Name must be provided to Apply")
    -	}
    -	result = &v1.NetworkPolicy{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("networkpolicies").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_ipaddress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_ipaddress.go
    index 4db8df68cbd2..b0a5570a9447 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_ipaddress.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_ipaddress.go
    @@ -19,127 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/networking/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	networkingv1alpha1 "k8s.io/client-go/applyconfigurations/networking/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typednetworkingv1alpha1 "k8s.io/client-go/kubernetes/typed/networking/v1alpha1"
     )
     
    -// FakeIPAddresses implements IPAddressInterface
    -type FakeIPAddresses struct {
    +// fakeIPAddresses implements IPAddressInterface
    +type fakeIPAddresses struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.IPAddress, *v1alpha1.IPAddressList, *networkingv1alpha1.IPAddressApplyConfiguration]
     	Fake *FakeNetworkingV1alpha1
     }
     
    -var ipaddressesResource = v1alpha1.SchemeGroupVersion.WithResource("ipaddresses")
    -
    -var ipaddressesKind = v1alpha1.SchemeGroupVersion.WithKind("IPAddress")
    -
    -// Get takes name of the iPAddress, and returns the corresponding iPAddress object, and an error if there is any.
    -func (c *FakeIPAddresses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.IPAddress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(ipaddressesResource, name), &v1alpha1.IPAddress{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.IPAddress), err
    -}
    -
    -// List takes label and field selectors, and returns the list of IPAddresses that match those selectors.
    -func (c *FakeIPAddresses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.IPAddressList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(ipaddressesResource, ipaddressesKind, opts), &v1alpha1.IPAddressList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.IPAddressList{ListMeta: obj.(*v1alpha1.IPAddressList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.IPAddressList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested iPAddresses.
    -func (c *FakeIPAddresses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(ipaddressesResource, opts))
    -}
    -
    -// Create takes the representation of a iPAddress and creates it.  Returns the server's representation of the iPAddress, and an error, if there is any.
    -func (c *FakeIPAddresses) Create(ctx context.Context, iPAddress *v1alpha1.IPAddress, opts v1.CreateOptions) (result *v1alpha1.IPAddress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(ipaddressesResource, iPAddress), &v1alpha1.IPAddress{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.IPAddress), err
    -}
    -
    -// Update takes the representation of a iPAddress and updates it. Returns the server's representation of the iPAddress, and an error, if there is any.
    -func (c *FakeIPAddresses) Update(ctx context.Context, iPAddress *v1alpha1.IPAddress, opts v1.UpdateOptions) (result *v1alpha1.IPAddress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(ipaddressesResource, iPAddress), &v1alpha1.IPAddress{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.IPAddress), err
    -}
    -
    -// Delete takes name of the iPAddress and deletes it. Returns an error if one occurs.
    -func (c *FakeIPAddresses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(ipaddressesResource, name, opts), &v1alpha1.IPAddress{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeIPAddresses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(ipaddressesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.IPAddressList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched iPAddress.
    -func (c *FakeIPAddresses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IPAddress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(ipaddressesResource, name, pt, data, subresources...), &v1alpha1.IPAddress{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.IPAddress), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied iPAddress.
    -func (c *FakeIPAddresses) Apply(ctx context.Context, iPAddress *networkingv1alpha1.IPAddressApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.IPAddress, err error) {
    -	if iPAddress == nil {
    -		return nil, fmt.Errorf("iPAddress provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(iPAddress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := iPAddress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("iPAddress.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(ipaddressesResource, *name, types.ApplyPatchType, data), &v1alpha1.IPAddress{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeIPAddresses(fake *FakeNetworkingV1alpha1) typednetworkingv1alpha1.IPAddressInterface {
    +	return &fakeIPAddresses{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.IPAddress, *v1alpha1.IPAddressList, *networkingv1alpha1.IPAddressApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("ipaddresses"),
    +			v1alpha1.SchemeGroupVersion.WithKind("IPAddress"),
    +			func() *v1alpha1.IPAddress { return &v1alpha1.IPAddress{} },
    +			func() *v1alpha1.IPAddressList { return &v1alpha1.IPAddressList{} },
    +			func(dst, src *v1alpha1.IPAddressList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.IPAddressList) []*v1alpha1.IPAddress { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1alpha1.IPAddressList, items []*v1alpha1.IPAddress) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.IPAddress), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_networking_client.go
    index 80ad184bbfa0..e0f55f74435d 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_networking_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_networking_client.go
    @@ -29,11 +29,11 @@ type FakeNetworkingV1alpha1 struct {
     }
     
     func (c *FakeNetworkingV1alpha1) IPAddresses() v1alpha1.IPAddressInterface {
    -	return &FakeIPAddresses{c}
    +	return newFakeIPAddresses(c)
     }
     
     func (c *FakeNetworkingV1alpha1) ServiceCIDRs() v1alpha1.ServiceCIDRInterface {
    -	return &FakeServiceCIDRs{c}
    +	return newFakeServiceCIDRs(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_servicecidr.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_servicecidr.go
    index 653ef631af1c..fe6c0cdb67cc 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_servicecidr.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_servicecidr.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/networking/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	networkingv1alpha1 "k8s.io/client-go/applyconfigurations/networking/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typednetworkingv1alpha1 "k8s.io/client-go/kubernetes/typed/networking/v1alpha1"
     )
     
    -// FakeServiceCIDRs implements ServiceCIDRInterface
    -type FakeServiceCIDRs struct {
    +// fakeServiceCIDRs implements ServiceCIDRInterface
    +type fakeServiceCIDRs struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.ServiceCIDR, *v1alpha1.ServiceCIDRList, *networkingv1alpha1.ServiceCIDRApplyConfiguration]
     	Fake *FakeNetworkingV1alpha1
     }
     
    -var servicecidrsResource = v1alpha1.SchemeGroupVersion.WithResource("servicecidrs")
    -
    -var servicecidrsKind = v1alpha1.SchemeGroupVersion.WithKind("ServiceCIDR")
    -
    -// Get takes name of the serviceCIDR, and returns the corresponding serviceCIDR object, and an error if there is any.
    -func (c *FakeServiceCIDRs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(servicecidrsResource, name), &v1alpha1.ServiceCIDR{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ServiceCIDR), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ServiceCIDRs that match those selectors.
    -func (c *FakeServiceCIDRs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ServiceCIDRList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(servicecidrsResource, servicecidrsKind, opts), &v1alpha1.ServiceCIDRList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.ServiceCIDRList{ListMeta: obj.(*v1alpha1.ServiceCIDRList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.ServiceCIDRList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested serviceCIDRs.
    -func (c *FakeServiceCIDRs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(servicecidrsResource, opts))
    -}
    -
    -// Create takes the representation of a serviceCIDR and creates it.  Returns the server's representation of the serviceCIDR, and an error, if there is any.
    -func (c *FakeServiceCIDRs) Create(ctx context.Context, serviceCIDR *v1alpha1.ServiceCIDR, opts v1.CreateOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(servicecidrsResource, serviceCIDR), &v1alpha1.ServiceCIDR{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ServiceCIDR), err
    -}
    -
    -// Update takes the representation of a serviceCIDR and updates it. Returns the server's representation of the serviceCIDR, and an error, if there is any.
    -func (c *FakeServiceCIDRs) Update(ctx context.Context, serviceCIDR *v1alpha1.ServiceCIDR, opts v1.UpdateOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(servicecidrsResource, serviceCIDR), &v1alpha1.ServiceCIDR{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ServiceCIDR), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeServiceCIDRs) UpdateStatus(ctx context.Context, serviceCIDR *v1alpha1.ServiceCIDR, opts v1.UpdateOptions) (*v1alpha1.ServiceCIDR, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(servicecidrsResource, "status", serviceCIDR), &v1alpha1.ServiceCIDR{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ServiceCIDR), err
    -}
    -
    -// Delete takes name of the serviceCIDR and deletes it. Returns an error if one occurs.
    -func (c *FakeServiceCIDRs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(servicecidrsResource, name, opts), &v1alpha1.ServiceCIDR{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeServiceCIDRs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(servicecidrsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.ServiceCIDRList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched serviceCIDR.
    -func (c *FakeServiceCIDRs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ServiceCIDR, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(servicecidrsResource, name, pt, data, subresources...), &v1alpha1.ServiceCIDR{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ServiceCIDR), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied serviceCIDR.
    -func (c *FakeServiceCIDRs) Apply(ctx context.Context, serviceCIDR *networkingv1alpha1.ServiceCIDRApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	if serviceCIDR == nil {
    -		return nil, fmt.Errorf("serviceCIDR provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(serviceCIDR)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := serviceCIDR.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("serviceCIDR.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(servicecidrsResource, *name, types.ApplyPatchType, data), &v1alpha1.ServiceCIDR{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ServiceCIDR), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeServiceCIDRs) ApplyStatus(ctx context.Context, serviceCIDR *networkingv1alpha1.ServiceCIDRApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	if serviceCIDR == nil {
    -		return nil, fmt.Errorf("serviceCIDR provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(serviceCIDR)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := serviceCIDR.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("serviceCIDR.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(servicecidrsResource, *name, types.ApplyPatchType, data, "status"), &v1alpha1.ServiceCIDR{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeServiceCIDRs(fake *FakeNetworkingV1alpha1) typednetworkingv1alpha1.ServiceCIDRInterface {
    +	return &fakeServiceCIDRs{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.ServiceCIDR, *v1alpha1.ServiceCIDRList, *networkingv1alpha1.ServiceCIDRApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("servicecidrs"),
    +			v1alpha1.SchemeGroupVersion.WithKind("ServiceCIDR"),
    +			func() *v1alpha1.ServiceCIDR { return &v1alpha1.ServiceCIDR{} },
    +			func() *v1alpha1.ServiceCIDRList { return &v1alpha1.ServiceCIDRList{} },
    +			func(dst, src *v1alpha1.ServiceCIDRList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.ServiceCIDRList) []*v1alpha1.ServiceCIDR {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.ServiceCIDRList, items []*v1alpha1.ServiceCIDR) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.ServiceCIDR), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/ipaddress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/ipaddress.go
    index fff193d68d14..e96a564ab412 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/ipaddress.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/ipaddress.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/networking/v1alpha1"
    +	networkingv1alpha1 "k8s.io/api/networking/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	networkingv1alpha1 "k8s.io/client-go/applyconfigurations/networking/v1alpha1"
    +	applyconfigurationsnetworkingv1alpha1 "k8s.io/client-go/applyconfigurations/networking/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // IPAddressesGetter has a method to return a IPAddressInterface.
    @@ -41,157 +38,34 @@ type IPAddressesGetter interface {
     
     // IPAddressInterface has methods to work with IPAddress resources.
     type IPAddressInterface interface {
    -	Create(ctx context.Context, iPAddress *v1alpha1.IPAddress, opts v1.CreateOptions) (*v1alpha1.IPAddress, error)
    -	Update(ctx context.Context, iPAddress *v1alpha1.IPAddress, opts v1.UpdateOptions) (*v1alpha1.IPAddress, error)
    +	Create(ctx context.Context, iPAddress *networkingv1alpha1.IPAddress, opts v1.CreateOptions) (*networkingv1alpha1.IPAddress, error)
    +	Update(ctx context.Context, iPAddress *networkingv1alpha1.IPAddress, opts v1.UpdateOptions) (*networkingv1alpha1.IPAddress, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.IPAddress, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.IPAddressList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*networkingv1alpha1.IPAddress, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*networkingv1alpha1.IPAddressList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IPAddress, err error)
    -	Apply(ctx context.Context, iPAddress *networkingv1alpha1.IPAddressApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.IPAddress, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *networkingv1alpha1.IPAddress, err error)
    +	Apply(ctx context.Context, iPAddress *applyconfigurationsnetworkingv1alpha1.IPAddressApplyConfiguration, opts v1.ApplyOptions) (result *networkingv1alpha1.IPAddress, err error)
     	IPAddressExpansion
     }
     
     // iPAddresses implements IPAddressInterface
     type iPAddresses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*networkingv1alpha1.IPAddress, *networkingv1alpha1.IPAddressList, *applyconfigurationsnetworkingv1alpha1.IPAddressApplyConfiguration]
     }
     
     // newIPAddresses returns a IPAddresses
     func newIPAddresses(c *NetworkingV1alpha1Client) *iPAddresses {
     	return &iPAddresses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*networkingv1alpha1.IPAddress, *networkingv1alpha1.IPAddressList, *applyconfigurationsnetworkingv1alpha1.IPAddressApplyConfiguration](
    +			"ipaddresses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *networkingv1alpha1.IPAddress { return &networkingv1alpha1.IPAddress{} },
    +			func() *networkingv1alpha1.IPAddressList { return &networkingv1alpha1.IPAddressList{} },
    +			gentype.PrefersProtobuf[*networkingv1alpha1.IPAddress](),
    +		),
     	}
     }
    -
    -// Get takes name of the iPAddress, and returns the corresponding iPAddress object, and an error if there is any.
    -func (c *iPAddresses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.IPAddress, err error) {
    -	result = &v1alpha1.IPAddress{}
    -	err = c.client.Get().
    -		Resource("ipaddresses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of IPAddresses that match those selectors.
    -func (c *iPAddresses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.IPAddressList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.IPAddressList{}
    -	err = c.client.Get().
    -		Resource("ipaddresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested iPAddresses.
    -func (c *iPAddresses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("ipaddresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a iPAddress and creates it.  Returns the server's representation of the iPAddress, and an error, if there is any.
    -func (c *iPAddresses) Create(ctx context.Context, iPAddress *v1alpha1.IPAddress, opts v1.CreateOptions) (result *v1alpha1.IPAddress, err error) {
    -	result = &v1alpha1.IPAddress{}
    -	err = c.client.Post().
    -		Resource("ipaddresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(iPAddress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a iPAddress and updates it. Returns the server's representation of the iPAddress, and an error, if there is any.
    -func (c *iPAddresses) Update(ctx context.Context, iPAddress *v1alpha1.IPAddress, opts v1.UpdateOptions) (result *v1alpha1.IPAddress, err error) {
    -	result = &v1alpha1.IPAddress{}
    -	err = c.client.Put().
    -		Resource("ipaddresses").
    -		Name(iPAddress.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(iPAddress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the iPAddress and deletes it. Returns an error if one occurs.
    -func (c *iPAddresses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("ipaddresses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *iPAddresses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("ipaddresses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched iPAddress.
    -func (c *iPAddresses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IPAddress, err error) {
    -	result = &v1alpha1.IPAddress{}
    -	err = c.client.Patch(pt).
    -		Resource("ipaddresses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied iPAddress.
    -func (c *iPAddresses) Apply(ctx context.Context, iPAddress *networkingv1alpha1.IPAddressApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.IPAddress, err error) {
    -	if iPAddress == nil {
    -		return nil, fmt.Errorf("iPAddress provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(iPAddress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := iPAddress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("iPAddress.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.IPAddress{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("ipaddresses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/networking_client.go
    index c730e624685d..9e1b3064d896 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/networking_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/networking_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1alpha1 "k8s.io/api/networking/v1alpha1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	networkingv1alpha1 "k8s.io/api/networking/v1alpha1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -90,10 +90,10 @@ func New(c rest.Interface) *NetworkingV1alpha1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1alpha1.SchemeGroupVersion
    +	gv := networkingv1alpha1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/servicecidr.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/servicecidr.go
    index 100f290a19f1..38cc26010cfc 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/servicecidr.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/servicecidr.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/networking/v1alpha1"
    +	networkingv1alpha1 "k8s.io/api/networking/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	networkingv1alpha1 "k8s.io/client-go/applyconfigurations/networking/v1alpha1"
    +	applyconfigurationsnetworkingv1alpha1 "k8s.io/client-go/applyconfigurations/networking/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ServiceCIDRsGetter has a method to return a ServiceCIDRInterface.
    @@ -41,203 +38,38 @@ type ServiceCIDRsGetter interface {
     
     // ServiceCIDRInterface has methods to work with ServiceCIDR resources.
     type ServiceCIDRInterface interface {
    -	Create(ctx context.Context, serviceCIDR *v1alpha1.ServiceCIDR, opts v1.CreateOptions) (*v1alpha1.ServiceCIDR, error)
    -	Update(ctx context.Context, serviceCIDR *v1alpha1.ServiceCIDR, opts v1.UpdateOptions) (*v1alpha1.ServiceCIDR, error)
    -	UpdateStatus(ctx context.Context, serviceCIDR *v1alpha1.ServiceCIDR, opts v1.UpdateOptions) (*v1alpha1.ServiceCIDR, error)
    +	Create(ctx context.Context, serviceCIDR *networkingv1alpha1.ServiceCIDR, opts v1.CreateOptions) (*networkingv1alpha1.ServiceCIDR, error)
    +	Update(ctx context.Context, serviceCIDR *networkingv1alpha1.ServiceCIDR, opts v1.UpdateOptions) (*networkingv1alpha1.ServiceCIDR, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, serviceCIDR *networkingv1alpha1.ServiceCIDR, opts v1.UpdateOptions) (*networkingv1alpha1.ServiceCIDR, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ServiceCIDR, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ServiceCIDRList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*networkingv1alpha1.ServiceCIDR, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*networkingv1alpha1.ServiceCIDRList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ServiceCIDR, err error)
    -	Apply(ctx context.Context, serviceCIDR *networkingv1alpha1.ServiceCIDRApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ServiceCIDR, err error)
    -	ApplyStatus(ctx context.Context, serviceCIDR *networkingv1alpha1.ServiceCIDRApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ServiceCIDR, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *networkingv1alpha1.ServiceCIDR, err error)
    +	Apply(ctx context.Context, serviceCIDR *applyconfigurationsnetworkingv1alpha1.ServiceCIDRApplyConfiguration, opts v1.ApplyOptions) (result *networkingv1alpha1.ServiceCIDR, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, serviceCIDR *applyconfigurationsnetworkingv1alpha1.ServiceCIDRApplyConfiguration, opts v1.ApplyOptions) (result *networkingv1alpha1.ServiceCIDR, err error)
     	ServiceCIDRExpansion
     }
     
     // serviceCIDRs implements ServiceCIDRInterface
     type serviceCIDRs struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*networkingv1alpha1.ServiceCIDR, *networkingv1alpha1.ServiceCIDRList, *applyconfigurationsnetworkingv1alpha1.ServiceCIDRApplyConfiguration]
     }
     
     // newServiceCIDRs returns a ServiceCIDRs
     func newServiceCIDRs(c *NetworkingV1alpha1Client) *serviceCIDRs {
     	return &serviceCIDRs{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*networkingv1alpha1.ServiceCIDR, *networkingv1alpha1.ServiceCIDRList, *applyconfigurationsnetworkingv1alpha1.ServiceCIDRApplyConfiguration](
    +			"servicecidrs",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *networkingv1alpha1.ServiceCIDR { return &networkingv1alpha1.ServiceCIDR{} },
    +			func() *networkingv1alpha1.ServiceCIDRList { return &networkingv1alpha1.ServiceCIDRList{} },
    +			gentype.PrefersProtobuf[*networkingv1alpha1.ServiceCIDR](),
    +		),
     	}
     }
    -
    -// Get takes name of the serviceCIDR, and returns the corresponding serviceCIDR object, and an error if there is any.
    -func (c *serviceCIDRs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	result = &v1alpha1.ServiceCIDR{}
    -	err = c.client.Get().
    -		Resource("servicecidrs").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ServiceCIDRs that match those selectors.
    -func (c *serviceCIDRs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ServiceCIDRList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.ServiceCIDRList{}
    -	err = c.client.Get().
    -		Resource("servicecidrs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested serviceCIDRs.
    -func (c *serviceCIDRs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("servicecidrs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a serviceCIDR and creates it.  Returns the server's representation of the serviceCIDR, and an error, if there is any.
    -func (c *serviceCIDRs) Create(ctx context.Context, serviceCIDR *v1alpha1.ServiceCIDR, opts v1.CreateOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	result = &v1alpha1.ServiceCIDR{}
    -	err = c.client.Post().
    -		Resource("servicecidrs").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(serviceCIDR).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a serviceCIDR and updates it. Returns the server's representation of the serviceCIDR, and an error, if there is any.
    -func (c *serviceCIDRs) Update(ctx context.Context, serviceCIDR *v1alpha1.ServiceCIDR, opts v1.UpdateOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	result = &v1alpha1.ServiceCIDR{}
    -	err = c.client.Put().
    -		Resource("servicecidrs").
    -		Name(serviceCIDR.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(serviceCIDR).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *serviceCIDRs) UpdateStatus(ctx context.Context, serviceCIDR *v1alpha1.ServiceCIDR, opts v1.UpdateOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	result = &v1alpha1.ServiceCIDR{}
    -	err = c.client.Put().
    -		Resource("servicecidrs").
    -		Name(serviceCIDR.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(serviceCIDR).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the serviceCIDR and deletes it. Returns an error if one occurs.
    -func (c *serviceCIDRs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("servicecidrs").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *serviceCIDRs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("servicecidrs").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched serviceCIDR.
    -func (c *serviceCIDRs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ServiceCIDR, err error) {
    -	result = &v1alpha1.ServiceCIDR{}
    -	err = c.client.Patch(pt).
    -		Resource("servicecidrs").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied serviceCIDR.
    -func (c *serviceCIDRs) Apply(ctx context.Context, serviceCIDR *networkingv1alpha1.ServiceCIDRApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	if serviceCIDR == nil {
    -		return nil, fmt.Errorf("serviceCIDR provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(serviceCIDR)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := serviceCIDR.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("serviceCIDR.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.ServiceCIDR{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("servicecidrs").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *serviceCIDRs) ApplyStatus(ctx context.Context, serviceCIDR *networkingv1alpha1.ServiceCIDRApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ServiceCIDR, err error) {
    -	if serviceCIDR == nil {
    -		return nil, fmt.Errorf("serviceCIDR provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(serviceCIDR)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := serviceCIDR.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("serviceCIDR.Name must be provided to Apply")
    -	}
    -
    -	result = &v1alpha1.ServiceCIDR{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("servicecidrs").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingress.go
    index 7a3b861be046..0d5dc9d64eae 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingress.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingress.go
    @@ -19,171 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/networking/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	networkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typednetworkingv1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1"
     )
     
    -// FakeIngresses implements IngressInterface
    -type FakeIngresses struct {
    +// fakeIngresses implements IngressInterface
    +type fakeIngresses struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.Ingress, *v1beta1.IngressList, *networkingv1beta1.IngressApplyConfiguration]
     	Fake *FakeNetworkingV1beta1
    -	ns   string
    -}
    -
    -var ingressesResource = v1beta1.SchemeGroupVersion.WithResource("ingresses")
    -
    -var ingressesKind = v1beta1.SchemeGroupVersion.WithKind("Ingress")
    -
    -// Get takes name of the ingress, and returns the corresponding ingress object, and an error if there is any.
    -func (c *FakeIngresses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(ingressesResource, c.ns, name), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Ingresses that match those selectors.
    -func (c *FakeIngresses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.IngressList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(ingressesResource, ingressesKind, c.ns, opts), &v1beta1.IngressList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.IngressList{ListMeta: obj.(*v1beta1.IngressList).ListMeta}
    -	for _, item := range obj.(*v1beta1.IngressList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested ingresses.
    -func (c *FakeIngresses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(ingressesResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a ingress and creates it.  Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *FakeIngresses) Create(ctx context.Context, ingress *v1beta1.Ingress, opts v1.CreateOptions) (result *v1beta1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(ingressesResource, c.ns, ingress), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
    -}
    -
    -// Update takes the representation of a ingress and updates it. Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *FakeIngresses) Update(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (result *v1beta1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(ingressesResource, c.ns, ingress), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeIngresses) UpdateStatus(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (*v1beta1.Ingress, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(ingressesResource, "status", c.ns, ingress), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
    -}
    -
    -// Delete takes name of the ingress and deletes it. Returns an error if one occurs.
    -func (c *FakeIngresses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(ingressesResource, c.ns, name, opts), &v1beta1.Ingress{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeIngresses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(ingressesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.IngressList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched ingress.
    -func (c *FakeIngresses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Ingress, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, name, pt, data, subresources...), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied ingress.
    -func (c *FakeIngresses) Apply(ctx context.Context, ingress *networkingv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Ingress), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeIngresses) ApplyStatus(ctx context.Context, ingress *networkingv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta1.Ingress{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeIngresses(fake *FakeNetworkingV1beta1, namespace string) typednetworkingv1beta1.IngressInterface {
    +	return &fakeIngresses{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.Ingress, *v1beta1.IngressList, *networkingv1beta1.IngressApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("ingresses"),
    +			v1beta1.SchemeGroupVersion.WithKind("Ingress"),
    +			func() *v1beta1.Ingress { return &v1beta1.Ingress{} },
    +			func() *v1beta1.IngressList { return &v1beta1.IngressList{} },
    +			func(dst, src *v1beta1.IngressList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.IngressList) []*v1beta1.Ingress { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.IngressList, items []*v1beta1.Ingress) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.Ingress), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingressclass.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingressclass.go
    index 1804e61fc37b..1c7822184758 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingressclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingressclass.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/networking/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	networkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typednetworkingv1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1"
     )
     
    -// FakeIngressClasses implements IngressClassInterface
    -type FakeIngressClasses struct {
    +// fakeIngressClasses implements IngressClassInterface
    +type fakeIngressClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.IngressClass, *v1beta1.IngressClassList, *networkingv1beta1.IngressClassApplyConfiguration]
     	Fake *FakeNetworkingV1beta1
     }
     
    -var ingressclassesResource = v1beta1.SchemeGroupVersion.WithResource("ingressclasses")
    -
    -var ingressclassesKind = v1beta1.SchemeGroupVersion.WithKind("IngressClass")
    -
    -// Get takes name of the ingressClass, and returns the corresponding ingressClass object, and an error if there is any.
    -func (c *FakeIngressClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.IngressClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(ingressclassesResource, name), &v1beta1.IngressClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.IngressClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of IngressClasses that match those selectors.
    -func (c *FakeIngressClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.IngressClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(ingressclassesResource, ingressclassesKind, opts), &v1beta1.IngressClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.IngressClassList{ListMeta: obj.(*v1beta1.IngressClassList).ListMeta}
    -	for _, item := range obj.(*v1beta1.IngressClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested ingressClasses.
    -func (c *FakeIngressClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(ingressclassesResource, opts))
    -}
    -
    -// Create takes the representation of a ingressClass and creates it.  Returns the server's representation of the ingressClass, and an error, if there is any.
    -func (c *FakeIngressClasses) Create(ctx context.Context, ingressClass *v1beta1.IngressClass, opts v1.CreateOptions) (result *v1beta1.IngressClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(ingressclassesResource, ingressClass), &v1beta1.IngressClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.IngressClass), err
    -}
    -
    -// Update takes the representation of a ingressClass and updates it. Returns the server's representation of the ingressClass, and an error, if there is any.
    -func (c *FakeIngressClasses) Update(ctx context.Context, ingressClass *v1beta1.IngressClass, opts v1.UpdateOptions) (result *v1beta1.IngressClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(ingressclassesResource, ingressClass), &v1beta1.IngressClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.IngressClass), err
    -}
    -
    -// Delete takes name of the ingressClass and deletes it. Returns an error if one occurs.
    -func (c *FakeIngressClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(ingressclassesResource, name, opts), &v1beta1.IngressClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeIngressClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(ingressclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.IngressClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched ingressClass.
    -func (c *FakeIngressClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.IngressClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(ingressclassesResource, name, pt, data, subresources...), &v1beta1.IngressClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.IngressClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied ingressClass.
    -func (c *FakeIngressClasses) Apply(ctx context.Context, ingressClass *networkingv1beta1.IngressClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.IngressClass, err error) {
    -	if ingressClass == nil {
    -		return nil, fmt.Errorf("ingressClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(ingressClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingressClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingressClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(ingressclassesResource, *name, types.ApplyPatchType, data), &v1beta1.IngressClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeIngressClasses(fake *FakeNetworkingV1beta1) typednetworkingv1beta1.IngressClassInterface {
    +	return &fakeIngressClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.IngressClass, *v1beta1.IngressClassList, *networkingv1beta1.IngressClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("ingressclasses"),
    +			v1beta1.SchemeGroupVersion.WithKind("IngressClass"),
    +			func() *v1beta1.IngressClass { return &v1beta1.IngressClass{} },
    +			func() *v1beta1.IngressClassList { return &v1beta1.IngressClassList{} },
    +			func(dst, src *v1beta1.IngressClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.IngressClassList) []*v1beta1.IngressClass {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.IngressClassList, items []*v1beta1.IngressClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.IngressClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ipaddress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ipaddress.go
    new file mode 100644
    index 000000000000..1dc63cd69e95
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ipaddress.go
    @@ -0,0 +1,51 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1beta1 "k8s.io/api/networking/v1beta1"
    +	networkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	typednetworkingv1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1"
    +)
    +
    +// fakeIPAddresses implements IPAddressInterface
    +type fakeIPAddresses struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.IPAddress, *v1beta1.IPAddressList, *networkingv1beta1.IPAddressApplyConfiguration]
    +	Fake *FakeNetworkingV1beta1
    +}
    +
    +func newFakeIPAddresses(fake *FakeNetworkingV1beta1) typednetworkingv1beta1.IPAddressInterface {
    +	return &fakeIPAddresses{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.IPAddress, *v1beta1.IPAddressList, *networkingv1beta1.IPAddressApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("ipaddresses"),
    +			v1beta1.SchemeGroupVersion.WithKind("IPAddress"),
    +			func() *v1beta1.IPAddress { return &v1beta1.IPAddress{} },
    +			func() *v1beta1.IPAddressList { return &v1beta1.IPAddressList{} },
    +			func(dst, src *v1beta1.IPAddressList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.IPAddressList) []*v1beta1.IPAddress { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.IPAddressList, items []*v1beta1.IPAddress) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_networking_client.go
    index b8792a306468..59305ee816b1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_networking_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_networking_client.go
    @@ -28,12 +28,20 @@ type FakeNetworkingV1beta1 struct {
     	*testing.Fake
     }
     
    +func (c *FakeNetworkingV1beta1) IPAddresses() v1beta1.IPAddressInterface {
    +	return newFakeIPAddresses(c)
    +}
    +
     func (c *FakeNetworkingV1beta1) Ingresses(namespace string) v1beta1.IngressInterface {
    -	return &FakeIngresses{c, namespace}
    +	return newFakeIngresses(c, namespace)
     }
     
     func (c *FakeNetworkingV1beta1) IngressClasses() v1beta1.IngressClassInterface {
    -	return &FakeIngressClasses{c}
    +	return newFakeIngressClasses(c)
    +}
    +
    +func (c *FakeNetworkingV1beta1) ServiceCIDRs() v1beta1.ServiceCIDRInterface {
    +	return newFakeServiceCIDRs(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_servicecidr.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_servicecidr.go
    new file mode 100644
    index 000000000000..d8b15206b082
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_servicecidr.go
    @@ -0,0 +1,51 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1beta1 "k8s.io/api/networking/v1beta1"
    +	networkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	typednetworkingv1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1"
    +)
    +
    +// fakeServiceCIDRs implements ServiceCIDRInterface
    +type fakeServiceCIDRs struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ServiceCIDR, *v1beta1.ServiceCIDRList, *networkingv1beta1.ServiceCIDRApplyConfiguration]
    +	Fake *FakeNetworkingV1beta1
    +}
    +
    +func newFakeServiceCIDRs(fake *FakeNetworkingV1beta1) typednetworkingv1beta1.ServiceCIDRInterface {
    +	return &fakeServiceCIDRs{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ServiceCIDR, *v1beta1.ServiceCIDRList, *networkingv1beta1.ServiceCIDRApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("servicecidrs"),
    +			v1beta1.SchemeGroupVersion.WithKind("ServiceCIDR"),
    +			func() *v1beta1.ServiceCIDR { return &v1beta1.ServiceCIDR{} },
    +			func() *v1beta1.ServiceCIDRList { return &v1beta1.ServiceCIDRList{} },
    +			func(dst, src *v1beta1.ServiceCIDRList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ServiceCIDRList) []*v1beta1.ServiceCIDR { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.ServiceCIDRList, items []*v1beta1.ServiceCIDR) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/generated_expansion.go
    index f74c7257ad6c..ac1ffbb98458 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/generated_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/generated_expansion.go
    @@ -18,6 +18,10 @@ limitations under the License.
     
     package v1beta1
     
    +type IPAddressExpansion interface{}
    +
     type IngressExpansion interface{}
     
     type IngressClassExpansion interface{}
    +
    +type ServiceCIDRExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingress.go
    index b309281afaae..b2d5aa2ce28c 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingress.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingress.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/networking/v1beta1"
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	networkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    +	applyconfigurationsnetworkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // IngressesGetter has a method to return a IngressInterface.
    @@ -41,216 +38,38 @@ type IngressesGetter interface {
     
     // IngressInterface has methods to work with Ingress resources.
     type IngressInterface interface {
    -	Create(ctx context.Context, ingress *v1beta1.Ingress, opts v1.CreateOptions) (*v1beta1.Ingress, error)
    -	Update(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (*v1beta1.Ingress, error)
    -	UpdateStatus(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (*v1beta1.Ingress, error)
    +	Create(ctx context.Context, ingress *networkingv1beta1.Ingress, opts v1.CreateOptions) (*networkingv1beta1.Ingress, error)
    +	Update(ctx context.Context, ingress *networkingv1beta1.Ingress, opts v1.UpdateOptions) (*networkingv1beta1.Ingress, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, ingress *networkingv1beta1.Ingress, opts v1.UpdateOptions) (*networkingv1beta1.Ingress, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.Ingress, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.IngressList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*networkingv1beta1.Ingress, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*networkingv1beta1.IngressList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Ingress, err error)
    -	Apply(ctx context.Context, ingress *networkingv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error)
    -	ApplyStatus(ctx context.Context, ingress *networkingv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *networkingv1beta1.Ingress, err error)
    +	Apply(ctx context.Context, ingress *applyconfigurationsnetworkingv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *networkingv1beta1.Ingress, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, ingress *applyconfigurationsnetworkingv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *networkingv1beta1.Ingress, err error)
     	IngressExpansion
     }
     
     // ingresses implements IngressInterface
     type ingresses struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*networkingv1beta1.Ingress, *networkingv1beta1.IngressList, *applyconfigurationsnetworkingv1beta1.IngressApplyConfiguration]
     }
     
     // newIngresses returns a Ingresses
     func newIngresses(c *NetworkingV1beta1Client, namespace string) *ingresses {
     	return &ingresses{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*networkingv1beta1.Ingress, *networkingv1beta1.IngressList, *applyconfigurationsnetworkingv1beta1.IngressApplyConfiguration](
    +			"ingresses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *networkingv1beta1.Ingress { return &networkingv1beta1.Ingress{} },
    +			func() *networkingv1beta1.IngressList { return &networkingv1beta1.IngressList{} },
    +			gentype.PrefersProtobuf[*networkingv1beta1.Ingress](),
    +		),
     	}
     }
    -
    -// Get takes name of the ingress, and returns the corresponding ingress object, and an error if there is any.
    -func (c *ingresses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Ingress, err error) {
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Ingresses that match those selectors.
    -func (c *ingresses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.IngressList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.IngressList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested ingresses.
    -func (c *ingresses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a ingress and creates it.  Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *ingresses) Create(ctx context.Context, ingress *v1beta1.Ingress, opts v1.CreateOptions) (result *v1beta1.Ingress, err error) {
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a ingress and updates it. Returns the server's representation of the ingress, and an error, if there is any.
    -func (c *ingresses) Update(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (result *v1beta1.Ingress, err error) {
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(ingress.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *ingresses) UpdateStatus(ctx context.Context, ingress *v1beta1.Ingress, opts v1.UpdateOptions) (result *v1beta1.Ingress, err error) {
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(ingress.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingress).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the ingress and deletes it. Returns an error if one occurs.
    -func (c *ingresses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *ingresses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched ingress.
    -func (c *ingresses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Ingress, err error) {
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied ingress.
    -func (c *ingresses) Apply(ctx context.Context, ingress *networkingv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *ingresses) ApplyStatus(ctx context.Context, ingress *networkingv1beta1.IngressApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Ingress, err error) {
    -	if ingress == nil {
    -		return nil, fmt.Errorf("ingress provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(ingress)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := ingress.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingress.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.Ingress{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("ingresses").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingressclass.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingressclass.go
    index 50ccdfdbbaf7..dd37fc5cd6b4 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingressclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingressclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/networking/v1beta1"
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	networkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    +	applyconfigurationsnetworkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // IngressClassesGetter has a method to return a IngressClassInterface.
    @@ -41,157 +38,34 @@ type IngressClassesGetter interface {
     
     // IngressClassInterface has methods to work with IngressClass resources.
     type IngressClassInterface interface {
    -	Create(ctx context.Context, ingressClass *v1beta1.IngressClass, opts v1.CreateOptions) (*v1beta1.IngressClass, error)
    -	Update(ctx context.Context, ingressClass *v1beta1.IngressClass, opts v1.UpdateOptions) (*v1beta1.IngressClass, error)
    +	Create(ctx context.Context, ingressClass *networkingv1beta1.IngressClass, opts v1.CreateOptions) (*networkingv1beta1.IngressClass, error)
    +	Update(ctx context.Context, ingressClass *networkingv1beta1.IngressClass, opts v1.UpdateOptions) (*networkingv1beta1.IngressClass, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.IngressClass, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.IngressClassList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*networkingv1beta1.IngressClass, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*networkingv1beta1.IngressClassList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.IngressClass, err error)
    -	Apply(ctx context.Context, ingressClass *networkingv1beta1.IngressClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.IngressClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *networkingv1beta1.IngressClass, err error)
    +	Apply(ctx context.Context, ingressClass *applyconfigurationsnetworkingv1beta1.IngressClassApplyConfiguration, opts v1.ApplyOptions) (result *networkingv1beta1.IngressClass, err error)
     	IngressClassExpansion
     }
     
     // ingressClasses implements IngressClassInterface
     type ingressClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*networkingv1beta1.IngressClass, *networkingv1beta1.IngressClassList, *applyconfigurationsnetworkingv1beta1.IngressClassApplyConfiguration]
     }
     
     // newIngressClasses returns a IngressClasses
     func newIngressClasses(c *NetworkingV1beta1Client) *ingressClasses {
     	return &ingressClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*networkingv1beta1.IngressClass, *networkingv1beta1.IngressClassList, *applyconfigurationsnetworkingv1beta1.IngressClassApplyConfiguration](
    +			"ingressclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *networkingv1beta1.IngressClass { return &networkingv1beta1.IngressClass{} },
    +			func() *networkingv1beta1.IngressClassList { return &networkingv1beta1.IngressClassList{} },
    +			gentype.PrefersProtobuf[*networkingv1beta1.IngressClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the ingressClass, and returns the corresponding ingressClass object, and an error if there is any.
    -func (c *ingressClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.IngressClass, err error) {
    -	result = &v1beta1.IngressClass{}
    -	err = c.client.Get().
    -		Resource("ingressclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of IngressClasses that match those selectors.
    -func (c *ingressClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.IngressClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.IngressClassList{}
    -	err = c.client.Get().
    -		Resource("ingressclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested ingressClasses.
    -func (c *ingressClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("ingressclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a ingressClass and creates it.  Returns the server's representation of the ingressClass, and an error, if there is any.
    -func (c *ingressClasses) Create(ctx context.Context, ingressClass *v1beta1.IngressClass, opts v1.CreateOptions) (result *v1beta1.IngressClass, err error) {
    -	result = &v1beta1.IngressClass{}
    -	err = c.client.Post().
    -		Resource("ingressclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingressClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a ingressClass and updates it. Returns the server's representation of the ingressClass, and an error, if there is any.
    -func (c *ingressClasses) Update(ctx context.Context, ingressClass *v1beta1.IngressClass, opts v1.UpdateOptions) (result *v1beta1.IngressClass, err error) {
    -	result = &v1beta1.IngressClass{}
    -	err = c.client.Put().
    -		Resource("ingressclasses").
    -		Name(ingressClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(ingressClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the ingressClass and deletes it. Returns an error if one occurs.
    -func (c *ingressClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("ingressclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *ingressClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("ingressclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched ingressClass.
    -func (c *ingressClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.IngressClass, err error) {
    -	result = &v1beta1.IngressClass{}
    -	err = c.client.Patch(pt).
    -		Resource("ingressclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied ingressClass.
    -func (c *ingressClasses) Apply(ctx context.Context, ingressClass *networkingv1beta1.IngressClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.IngressClass, err error) {
    -	if ingressClass == nil {
    -		return nil, fmt.Errorf("ingressClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(ingressClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := ingressClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("ingressClass.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.IngressClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("ingressclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ipaddress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ipaddress.go
    new file mode 100644
    index 000000000000..0b7ffff72893
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ipaddress.go
    @@ -0,0 +1,71 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsnetworkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// IPAddressesGetter has a method to return a IPAddressInterface.
    +// A group's client should implement this interface.
    +type IPAddressesGetter interface {
    +	IPAddresses() IPAddressInterface
    +}
    +
    +// IPAddressInterface has methods to work with IPAddress resources.
    +type IPAddressInterface interface {
    +	Create(ctx context.Context, iPAddress *networkingv1beta1.IPAddress, opts v1.CreateOptions) (*networkingv1beta1.IPAddress, error)
    +	Update(ctx context.Context, iPAddress *networkingv1beta1.IPAddress, opts v1.UpdateOptions) (*networkingv1beta1.IPAddress, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*networkingv1beta1.IPAddress, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*networkingv1beta1.IPAddressList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *networkingv1beta1.IPAddress, err error)
    +	Apply(ctx context.Context, iPAddress *applyconfigurationsnetworkingv1beta1.IPAddressApplyConfiguration, opts v1.ApplyOptions) (result *networkingv1beta1.IPAddress, err error)
    +	IPAddressExpansion
    +}
    +
    +// iPAddresses implements IPAddressInterface
    +type iPAddresses struct {
    +	*gentype.ClientWithListAndApply[*networkingv1beta1.IPAddress, *networkingv1beta1.IPAddressList, *applyconfigurationsnetworkingv1beta1.IPAddressApplyConfiguration]
    +}
    +
    +// newIPAddresses returns a IPAddresses
    +func newIPAddresses(c *NetworkingV1beta1Client) *iPAddresses {
    +	return &iPAddresses{
    +		gentype.NewClientWithListAndApply[*networkingv1beta1.IPAddress, *networkingv1beta1.IPAddressList, *applyconfigurationsnetworkingv1beta1.IPAddressApplyConfiguration](
    +			"ipaddresses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *networkingv1beta1.IPAddress { return &networkingv1beta1.IPAddress{} },
    +			func() *networkingv1beta1.IPAddressList { return &networkingv1beta1.IPAddressList{} },
    +			gentype.PrefersProtobuf[*networkingv1beta1.IPAddress](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/networking_client.go
    index 851634ed0f9a..cb4b0c601bc1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/networking_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/networking_client.go
    @@ -19,17 +19,19 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/networking/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
     type NetworkingV1beta1Interface interface {
     	RESTClient() rest.Interface
    +	IPAddressesGetter
     	IngressesGetter
     	IngressClassesGetter
    +	ServiceCIDRsGetter
     }
     
     // NetworkingV1beta1Client is used to interact with features provided by the networking.k8s.io group.
    @@ -37,6 +39,10 @@ type NetworkingV1beta1Client struct {
     	restClient rest.Interface
     }
     
    +func (c *NetworkingV1beta1Client) IPAddresses() IPAddressInterface {
    +	return newIPAddresses(c)
    +}
    +
     func (c *NetworkingV1beta1Client) Ingresses(namespace string) IngressInterface {
     	return newIngresses(c, namespace)
     }
    @@ -45,6 +51,10 @@ func (c *NetworkingV1beta1Client) IngressClasses() IngressClassInterface {
     	return newIngressClasses(c)
     }
     
    +func (c *NetworkingV1beta1Client) ServiceCIDRs() ServiceCIDRInterface {
    +	return newServiceCIDRs(c)
    +}
    +
     // NewForConfig creates a new NetworkingV1beta1Client for the given config.
     // NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
     // where httpClient was generated with rest.HTTPClientFor(c).
    @@ -90,10 +100,10 @@ func New(c rest.Interface) *NetworkingV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := networkingv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/servicecidr.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/servicecidr.go
    new file mode 100644
    index 000000000000..6ad1daf74c39
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/servicecidr.go
    @@ -0,0 +1,75 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsnetworkingv1beta1 "k8s.io/client-go/applyconfigurations/networking/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// ServiceCIDRsGetter has a method to return a ServiceCIDRInterface.
    +// A group's client should implement this interface.
    +type ServiceCIDRsGetter interface {
    +	ServiceCIDRs() ServiceCIDRInterface
    +}
    +
    +// ServiceCIDRInterface has methods to work with ServiceCIDR resources.
    +type ServiceCIDRInterface interface {
    +	Create(ctx context.Context, serviceCIDR *networkingv1beta1.ServiceCIDR, opts v1.CreateOptions) (*networkingv1beta1.ServiceCIDR, error)
    +	Update(ctx context.Context, serviceCIDR *networkingv1beta1.ServiceCIDR, opts v1.UpdateOptions) (*networkingv1beta1.ServiceCIDR, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, serviceCIDR *networkingv1beta1.ServiceCIDR, opts v1.UpdateOptions) (*networkingv1beta1.ServiceCIDR, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*networkingv1beta1.ServiceCIDR, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*networkingv1beta1.ServiceCIDRList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *networkingv1beta1.ServiceCIDR, err error)
    +	Apply(ctx context.Context, serviceCIDR *applyconfigurationsnetworkingv1beta1.ServiceCIDRApplyConfiguration, opts v1.ApplyOptions) (result *networkingv1beta1.ServiceCIDR, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, serviceCIDR *applyconfigurationsnetworkingv1beta1.ServiceCIDRApplyConfiguration, opts v1.ApplyOptions) (result *networkingv1beta1.ServiceCIDR, err error)
    +	ServiceCIDRExpansion
    +}
    +
    +// serviceCIDRs implements ServiceCIDRInterface
    +type serviceCIDRs struct {
    +	*gentype.ClientWithListAndApply[*networkingv1beta1.ServiceCIDR, *networkingv1beta1.ServiceCIDRList, *applyconfigurationsnetworkingv1beta1.ServiceCIDRApplyConfiguration]
    +}
    +
    +// newServiceCIDRs returns a ServiceCIDRs
    +func newServiceCIDRs(c *NetworkingV1beta1Client) *serviceCIDRs {
    +	return &serviceCIDRs{
    +		gentype.NewClientWithListAndApply[*networkingv1beta1.ServiceCIDR, *networkingv1beta1.ServiceCIDRList, *applyconfigurationsnetworkingv1beta1.ServiceCIDRApplyConfiguration](
    +			"servicecidrs",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *networkingv1beta1.ServiceCIDR { return &networkingv1beta1.ServiceCIDR{} },
    +			func() *networkingv1beta1.ServiceCIDRList { return &networkingv1beta1.ServiceCIDRList{} },
    +			gentype.PrefersProtobuf[*networkingv1beta1.ServiceCIDR](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/fake/fake_node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/fake/fake_node_client.go
    index dea10cbadaf7..72e675bd7008 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/fake/fake_node_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/fake/fake_node_client.go
    @@ -29,7 +29,7 @@ type FakeNodeV1 struct {
     }
     
     func (c *FakeNodeV1) RuntimeClasses() v1.RuntimeClassInterface {
    -	return &FakeRuntimeClasses{c}
    +	return newFakeRuntimeClasses(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/fake/fake_runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/fake/fake_runtimeclass.go
    index 35cfbcae4bfe..a9739f725524 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/fake/fake_runtimeclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/fake/fake_runtimeclass.go
    @@ -19,127 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/node/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	nodev1 "k8s.io/client-go/applyconfigurations/node/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typednodev1 "k8s.io/client-go/kubernetes/typed/node/v1"
     )
     
    -// FakeRuntimeClasses implements RuntimeClassInterface
    -type FakeRuntimeClasses struct {
    +// fakeRuntimeClasses implements RuntimeClassInterface
    +type fakeRuntimeClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1.RuntimeClass, *v1.RuntimeClassList, *nodev1.RuntimeClassApplyConfiguration]
     	Fake *FakeNodeV1
     }
     
    -var runtimeclassesResource = v1.SchemeGroupVersion.WithResource("runtimeclasses")
    -
    -var runtimeclassesKind = v1.SchemeGroupVersion.WithKind("RuntimeClass")
    -
    -// Get takes name of the runtimeClass, and returns the corresponding runtimeClass object, and an error if there is any.
    -func (c *FakeRuntimeClasses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(runtimeclassesResource, name), &v1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.RuntimeClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of RuntimeClasses that match those selectors.
    -func (c *FakeRuntimeClasses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.RuntimeClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(runtimeclassesResource, runtimeclassesKind, opts), &v1.RuntimeClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.RuntimeClassList{ListMeta: obj.(*v1.RuntimeClassList).ListMeta}
    -	for _, item := range obj.(*v1.RuntimeClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested runtimeClasses.
    -func (c *FakeRuntimeClasses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(runtimeclassesResource, opts))
    -}
    -
    -// Create takes the representation of a runtimeClass and creates it.  Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *FakeRuntimeClasses) Create(ctx context.Context, runtimeClass *v1.RuntimeClass, opts metav1.CreateOptions) (result *v1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(runtimeclassesResource, runtimeClass), &v1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.RuntimeClass), err
    -}
    -
    -// Update takes the representation of a runtimeClass and updates it. Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *FakeRuntimeClasses) Update(ctx context.Context, runtimeClass *v1.RuntimeClass, opts metav1.UpdateOptions) (result *v1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(runtimeclassesResource, runtimeClass), &v1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.RuntimeClass), err
    -}
    -
    -// Delete takes name of the runtimeClass and deletes it. Returns an error if one occurs.
    -func (c *FakeRuntimeClasses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(runtimeclassesResource, name, opts), &v1.RuntimeClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeRuntimeClasses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(runtimeclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.RuntimeClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched runtimeClass.
    -func (c *FakeRuntimeClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(runtimeclassesResource, name, pt, data, subresources...), &v1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.RuntimeClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied runtimeClass.
    -func (c *FakeRuntimeClasses) Apply(ctx context.Context, runtimeClass *nodev1.RuntimeClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.RuntimeClass, err error) {
    -	if runtimeClass == nil {
    -		return nil, fmt.Errorf("runtimeClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(runtimeClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := runtimeClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("runtimeClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(runtimeclassesResource, *name, types.ApplyPatchType, data), &v1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeRuntimeClasses(fake *FakeNodeV1) typednodev1.RuntimeClassInterface {
    +	return &fakeRuntimeClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1.RuntimeClass, *v1.RuntimeClassList, *nodev1.RuntimeClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("runtimeclasses"),
    +			v1.SchemeGroupVersion.WithKind("RuntimeClass"),
    +			func() *v1.RuntimeClass { return &v1.RuntimeClass{} },
    +			func() *v1.RuntimeClassList { return &v1.RuntimeClassList{} },
    +			func(dst, src *v1.RuntimeClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.RuntimeClassList) []*v1.RuntimeClass { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.RuntimeClassList, items []*v1.RuntimeClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.RuntimeClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/node_client.go
    index 844f9fc70fef..3bde211713e5 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/node_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/node_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/node/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	nodev1 "k8s.io/api/node/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *NodeV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := nodev1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/runtimeclass.go
    index 5ec38b203e3d..77311fab7232 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/runtimeclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/node/v1"
    +	nodev1 "k8s.io/api/node/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	nodev1 "k8s.io/client-go/applyconfigurations/node/v1"
    +	applyconfigurationsnodev1 "k8s.io/client-go/applyconfigurations/node/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // RuntimeClassesGetter has a method to return a RuntimeClassInterface.
    @@ -41,157 +38,34 @@ type RuntimeClassesGetter interface {
     
     // RuntimeClassInterface has methods to work with RuntimeClass resources.
     type RuntimeClassInterface interface {
    -	Create(ctx context.Context, runtimeClass *v1.RuntimeClass, opts metav1.CreateOptions) (*v1.RuntimeClass, error)
    -	Update(ctx context.Context, runtimeClass *v1.RuntimeClass, opts metav1.UpdateOptions) (*v1.RuntimeClass, error)
    +	Create(ctx context.Context, runtimeClass *nodev1.RuntimeClass, opts metav1.CreateOptions) (*nodev1.RuntimeClass, error)
    +	Update(ctx context.Context, runtimeClass *nodev1.RuntimeClass, opts metav1.UpdateOptions) (*nodev1.RuntimeClass, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.RuntimeClass, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.RuntimeClassList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*nodev1.RuntimeClass, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*nodev1.RuntimeClassList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.RuntimeClass, err error)
    -	Apply(ctx context.Context, runtimeClass *nodev1.RuntimeClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.RuntimeClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *nodev1.RuntimeClass, err error)
    +	Apply(ctx context.Context, runtimeClass *applyconfigurationsnodev1.RuntimeClassApplyConfiguration, opts metav1.ApplyOptions) (result *nodev1.RuntimeClass, err error)
     	RuntimeClassExpansion
     }
     
     // runtimeClasses implements RuntimeClassInterface
     type runtimeClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*nodev1.RuntimeClass, *nodev1.RuntimeClassList, *applyconfigurationsnodev1.RuntimeClassApplyConfiguration]
     }
     
     // newRuntimeClasses returns a RuntimeClasses
     func newRuntimeClasses(c *NodeV1Client) *runtimeClasses {
     	return &runtimeClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*nodev1.RuntimeClass, *nodev1.RuntimeClassList, *applyconfigurationsnodev1.RuntimeClassApplyConfiguration](
    +			"runtimeclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *nodev1.RuntimeClass { return &nodev1.RuntimeClass{} },
    +			func() *nodev1.RuntimeClassList { return &nodev1.RuntimeClassList{} },
    +			gentype.PrefersProtobuf[*nodev1.RuntimeClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the runtimeClass, and returns the corresponding runtimeClass object, and an error if there is any.
    -func (c *runtimeClasses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.RuntimeClass, err error) {
    -	result = &v1.RuntimeClass{}
    -	err = c.client.Get().
    -		Resource("runtimeclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of RuntimeClasses that match those selectors.
    -func (c *runtimeClasses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.RuntimeClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.RuntimeClassList{}
    -	err = c.client.Get().
    -		Resource("runtimeclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested runtimeClasses.
    -func (c *runtimeClasses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("runtimeclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a runtimeClass and creates it.  Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *runtimeClasses) Create(ctx context.Context, runtimeClass *v1.RuntimeClass, opts metav1.CreateOptions) (result *v1.RuntimeClass, err error) {
    -	result = &v1.RuntimeClass{}
    -	err = c.client.Post().
    -		Resource("runtimeclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(runtimeClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a runtimeClass and updates it. Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *runtimeClasses) Update(ctx context.Context, runtimeClass *v1.RuntimeClass, opts metav1.UpdateOptions) (result *v1.RuntimeClass, err error) {
    -	result = &v1.RuntimeClass{}
    -	err = c.client.Put().
    -		Resource("runtimeclasses").
    -		Name(runtimeClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(runtimeClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the runtimeClass and deletes it. Returns an error if one occurs.
    -func (c *runtimeClasses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("runtimeclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *runtimeClasses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("runtimeclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched runtimeClass.
    -func (c *runtimeClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.RuntimeClass, err error) {
    -	result = &v1.RuntimeClass{}
    -	err = c.client.Patch(pt).
    -		Resource("runtimeclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied runtimeClass.
    -func (c *runtimeClasses) Apply(ctx context.Context, runtimeClass *nodev1.RuntimeClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.RuntimeClass, err error) {
    -	if runtimeClass == nil {
    -		return nil, fmt.Errorf("runtimeClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(runtimeClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := runtimeClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("runtimeClass.Name must be provided to Apply")
    -	}
    -	result = &v1.RuntimeClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("runtimeclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_node_client.go
    index 21ab9de33a68..6a63f99da727 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_node_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_node_client.go
    @@ -29,7 +29,7 @@ type FakeNodeV1alpha1 struct {
     }
     
     func (c *FakeNodeV1alpha1) RuntimeClasses() v1alpha1.RuntimeClassInterface {
    -	return &FakeRuntimeClasses{c}
    +	return newFakeRuntimeClasses(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_runtimeclass.go
    index 2ff7d3f973e6..6761098c6724 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_runtimeclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_runtimeclass.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/node/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	nodev1alpha1 "k8s.io/client-go/applyconfigurations/node/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typednodev1alpha1 "k8s.io/client-go/kubernetes/typed/node/v1alpha1"
     )
     
    -// FakeRuntimeClasses implements RuntimeClassInterface
    -type FakeRuntimeClasses struct {
    +// fakeRuntimeClasses implements RuntimeClassInterface
    +type fakeRuntimeClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.RuntimeClass, *v1alpha1.RuntimeClassList, *nodev1alpha1.RuntimeClassApplyConfiguration]
     	Fake *FakeNodeV1alpha1
     }
     
    -var runtimeclassesResource = v1alpha1.SchemeGroupVersion.WithResource("runtimeclasses")
    -
    -var runtimeclassesKind = v1alpha1.SchemeGroupVersion.WithKind("RuntimeClass")
    -
    -// Get takes name of the runtimeClass, and returns the corresponding runtimeClass object, and an error if there is any.
    -func (c *FakeRuntimeClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(runtimeclassesResource, name), &v1alpha1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.RuntimeClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of RuntimeClasses that match those selectors.
    -func (c *FakeRuntimeClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.RuntimeClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(runtimeclassesResource, runtimeclassesKind, opts), &v1alpha1.RuntimeClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.RuntimeClassList{ListMeta: obj.(*v1alpha1.RuntimeClassList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.RuntimeClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested runtimeClasses.
    -func (c *FakeRuntimeClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(runtimeclassesResource, opts))
    -}
    -
    -// Create takes the representation of a runtimeClass and creates it.  Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *FakeRuntimeClasses) Create(ctx context.Context, runtimeClass *v1alpha1.RuntimeClass, opts v1.CreateOptions) (result *v1alpha1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(runtimeclassesResource, runtimeClass), &v1alpha1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.RuntimeClass), err
    -}
    -
    -// Update takes the representation of a runtimeClass and updates it. Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *FakeRuntimeClasses) Update(ctx context.Context, runtimeClass *v1alpha1.RuntimeClass, opts v1.UpdateOptions) (result *v1alpha1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(runtimeclassesResource, runtimeClass), &v1alpha1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.RuntimeClass), err
    -}
    -
    -// Delete takes name of the runtimeClass and deletes it. Returns an error if one occurs.
    -func (c *FakeRuntimeClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(runtimeclassesResource, name, opts), &v1alpha1.RuntimeClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeRuntimeClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(runtimeclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.RuntimeClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched runtimeClass.
    -func (c *FakeRuntimeClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(runtimeclassesResource, name, pt, data, subresources...), &v1alpha1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.RuntimeClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied runtimeClass.
    -func (c *FakeRuntimeClasses) Apply(ctx context.Context, runtimeClass *nodev1alpha1.RuntimeClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.RuntimeClass, err error) {
    -	if runtimeClass == nil {
    -		return nil, fmt.Errorf("runtimeClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(runtimeClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := runtimeClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("runtimeClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(runtimeclassesResource, *name, types.ApplyPatchType, data), &v1alpha1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeRuntimeClasses(fake *FakeNodeV1alpha1) typednodev1alpha1.RuntimeClassInterface {
    +	return &fakeRuntimeClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.RuntimeClass, *v1alpha1.RuntimeClassList, *nodev1alpha1.RuntimeClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("runtimeclasses"),
    +			v1alpha1.SchemeGroupVersion.WithKind("RuntimeClass"),
    +			func() *v1alpha1.RuntimeClass { return &v1alpha1.RuntimeClass{} },
    +			func() *v1alpha1.RuntimeClassList { return &v1alpha1.RuntimeClassList{} },
    +			func(dst, src *v1alpha1.RuntimeClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.RuntimeClassList) []*v1alpha1.RuntimeClass {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.RuntimeClassList, items []*v1alpha1.RuntimeClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.RuntimeClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/node_client.go
    index 2a197d58e647..e47ef354859e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/node_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/node_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1alpha1 "k8s.io/api/node/v1alpha1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	nodev1alpha1 "k8s.io/api/node/v1alpha1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *NodeV1alpha1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1alpha1.SchemeGroupVersion
    +	gv := nodev1alpha1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/runtimeclass.go
    index 039a7ace1590..f9da4f07bd65 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/runtimeclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/node/v1alpha1"
    +	nodev1alpha1 "k8s.io/api/node/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	nodev1alpha1 "k8s.io/client-go/applyconfigurations/node/v1alpha1"
    +	applyconfigurationsnodev1alpha1 "k8s.io/client-go/applyconfigurations/node/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // RuntimeClassesGetter has a method to return a RuntimeClassInterface.
    @@ -41,157 +38,34 @@ type RuntimeClassesGetter interface {
     
     // RuntimeClassInterface has methods to work with RuntimeClass resources.
     type RuntimeClassInterface interface {
    -	Create(ctx context.Context, runtimeClass *v1alpha1.RuntimeClass, opts v1.CreateOptions) (*v1alpha1.RuntimeClass, error)
    -	Update(ctx context.Context, runtimeClass *v1alpha1.RuntimeClass, opts v1.UpdateOptions) (*v1alpha1.RuntimeClass, error)
    +	Create(ctx context.Context, runtimeClass *nodev1alpha1.RuntimeClass, opts v1.CreateOptions) (*nodev1alpha1.RuntimeClass, error)
    +	Update(ctx context.Context, runtimeClass *nodev1alpha1.RuntimeClass, opts v1.UpdateOptions) (*nodev1alpha1.RuntimeClass, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.RuntimeClass, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.RuntimeClassList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*nodev1alpha1.RuntimeClass, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*nodev1alpha1.RuntimeClassList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.RuntimeClass, err error)
    -	Apply(ctx context.Context, runtimeClass *nodev1alpha1.RuntimeClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.RuntimeClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *nodev1alpha1.RuntimeClass, err error)
    +	Apply(ctx context.Context, runtimeClass *applyconfigurationsnodev1alpha1.RuntimeClassApplyConfiguration, opts v1.ApplyOptions) (result *nodev1alpha1.RuntimeClass, err error)
     	RuntimeClassExpansion
     }
     
     // runtimeClasses implements RuntimeClassInterface
     type runtimeClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*nodev1alpha1.RuntimeClass, *nodev1alpha1.RuntimeClassList, *applyconfigurationsnodev1alpha1.RuntimeClassApplyConfiguration]
     }
     
     // newRuntimeClasses returns a RuntimeClasses
     func newRuntimeClasses(c *NodeV1alpha1Client) *runtimeClasses {
     	return &runtimeClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*nodev1alpha1.RuntimeClass, *nodev1alpha1.RuntimeClassList, *applyconfigurationsnodev1alpha1.RuntimeClassApplyConfiguration](
    +			"runtimeclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *nodev1alpha1.RuntimeClass { return &nodev1alpha1.RuntimeClass{} },
    +			func() *nodev1alpha1.RuntimeClassList { return &nodev1alpha1.RuntimeClassList{} },
    +			gentype.PrefersProtobuf[*nodev1alpha1.RuntimeClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the runtimeClass, and returns the corresponding runtimeClass object, and an error if there is any.
    -func (c *runtimeClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.RuntimeClass, err error) {
    -	result = &v1alpha1.RuntimeClass{}
    -	err = c.client.Get().
    -		Resource("runtimeclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of RuntimeClasses that match those selectors.
    -func (c *runtimeClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.RuntimeClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.RuntimeClassList{}
    -	err = c.client.Get().
    -		Resource("runtimeclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested runtimeClasses.
    -func (c *runtimeClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("runtimeclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a runtimeClass and creates it.  Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *runtimeClasses) Create(ctx context.Context, runtimeClass *v1alpha1.RuntimeClass, opts v1.CreateOptions) (result *v1alpha1.RuntimeClass, err error) {
    -	result = &v1alpha1.RuntimeClass{}
    -	err = c.client.Post().
    -		Resource("runtimeclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(runtimeClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a runtimeClass and updates it. Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *runtimeClasses) Update(ctx context.Context, runtimeClass *v1alpha1.RuntimeClass, opts v1.UpdateOptions) (result *v1alpha1.RuntimeClass, err error) {
    -	result = &v1alpha1.RuntimeClass{}
    -	err = c.client.Put().
    -		Resource("runtimeclasses").
    -		Name(runtimeClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(runtimeClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the runtimeClass and deletes it. Returns an error if one occurs.
    -func (c *runtimeClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("runtimeclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *runtimeClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("runtimeclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched runtimeClass.
    -func (c *runtimeClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.RuntimeClass, err error) {
    -	result = &v1alpha1.RuntimeClass{}
    -	err = c.client.Patch(pt).
    -		Resource("runtimeclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied runtimeClass.
    -func (c *runtimeClasses) Apply(ctx context.Context, runtimeClass *nodev1alpha1.RuntimeClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.RuntimeClass, err error) {
    -	if runtimeClass == nil {
    -		return nil, fmt.Errorf("runtimeClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(runtimeClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := runtimeClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("runtimeClass.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.RuntimeClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("runtimeclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_node_client.go
    index 36976ce548bb..6612a9889fa6 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_node_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_node_client.go
    @@ -29,7 +29,7 @@ type FakeNodeV1beta1 struct {
     }
     
     func (c *FakeNodeV1beta1) RuntimeClasses() v1beta1.RuntimeClassInterface {
    -	return &FakeRuntimeClasses{c}
    +	return newFakeRuntimeClasses(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_runtimeclass.go
    index e6552f9acaf5..113ae8852205 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_runtimeclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_runtimeclass.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/node/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	nodev1beta1 "k8s.io/client-go/applyconfigurations/node/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typednodev1beta1 "k8s.io/client-go/kubernetes/typed/node/v1beta1"
     )
     
    -// FakeRuntimeClasses implements RuntimeClassInterface
    -type FakeRuntimeClasses struct {
    +// fakeRuntimeClasses implements RuntimeClassInterface
    +type fakeRuntimeClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.RuntimeClass, *v1beta1.RuntimeClassList, *nodev1beta1.RuntimeClassApplyConfiguration]
     	Fake *FakeNodeV1beta1
     }
     
    -var runtimeclassesResource = v1beta1.SchemeGroupVersion.WithResource("runtimeclasses")
    -
    -var runtimeclassesKind = v1beta1.SchemeGroupVersion.WithKind("RuntimeClass")
    -
    -// Get takes name of the runtimeClass, and returns the corresponding runtimeClass object, and an error if there is any.
    -func (c *FakeRuntimeClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(runtimeclassesResource, name), &v1beta1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.RuntimeClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of RuntimeClasses that match those selectors.
    -func (c *FakeRuntimeClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.RuntimeClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(runtimeclassesResource, runtimeclassesKind, opts), &v1beta1.RuntimeClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.RuntimeClassList{ListMeta: obj.(*v1beta1.RuntimeClassList).ListMeta}
    -	for _, item := range obj.(*v1beta1.RuntimeClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested runtimeClasses.
    -func (c *FakeRuntimeClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(runtimeclassesResource, opts))
    -}
    -
    -// Create takes the representation of a runtimeClass and creates it.  Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *FakeRuntimeClasses) Create(ctx context.Context, runtimeClass *v1beta1.RuntimeClass, opts v1.CreateOptions) (result *v1beta1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(runtimeclassesResource, runtimeClass), &v1beta1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.RuntimeClass), err
    -}
    -
    -// Update takes the representation of a runtimeClass and updates it. Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *FakeRuntimeClasses) Update(ctx context.Context, runtimeClass *v1beta1.RuntimeClass, opts v1.UpdateOptions) (result *v1beta1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(runtimeclassesResource, runtimeClass), &v1beta1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.RuntimeClass), err
    -}
    -
    -// Delete takes name of the runtimeClass and deletes it. Returns an error if one occurs.
    -func (c *FakeRuntimeClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(runtimeclassesResource, name, opts), &v1beta1.RuntimeClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeRuntimeClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(runtimeclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.RuntimeClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched runtimeClass.
    -func (c *FakeRuntimeClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.RuntimeClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(runtimeclassesResource, name, pt, data, subresources...), &v1beta1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.RuntimeClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied runtimeClass.
    -func (c *FakeRuntimeClasses) Apply(ctx context.Context, runtimeClass *nodev1beta1.RuntimeClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.RuntimeClass, err error) {
    -	if runtimeClass == nil {
    -		return nil, fmt.Errorf("runtimeClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(runtimeClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := runtimeClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("runtimeClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(runtimeclassesResource, *name, types.ApplyPatchType, data), &v1beta1.RuntimeClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeRuntimeClasses(fake *FakeNodeV1beta1) typednodev1beta1.RuntimeClassInterface {
    +	return &fakeRuntimeClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.RuntimeClass, *v1beta1.RuntimeClassList, *nodev1beta1.RuntimeClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("runtimeclasses"),
    +			v1beta1.SchemeGroupVersion.WithKind("RuntimeClass"),
    +			func() *v1beta1.RuntimeClass { return &v1beta1.RuntimeClass{} },
    +			func() *v1beta1.RuntimeClassList { return &v1beta1.RuntimeClassList{} },
    +			func(dst, src *v1beta1.RuntimeClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.RuntimeClassList) []*v1beta1.RuntimeClass {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.RuntimeClassList, items []*v1beta1.RuntimeClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.RuntimeClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/node_client.go
    index 4f6802ffaca5..c7864a4796c0 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/node_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/node_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/node/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	nodev1beta1 "k8s.io/api/node/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *NodeV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := nodev1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/runtimeclass.go
    index f8990adf1ee4..18089defdc0e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/runtimeclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/node/v1beta1"
    +	nodev1beta1 "k8s.io/api/node/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	nodev1beta1 "k8s.io/client-go/applyconfigurations/node/v1beta1"
    +	applyconfigurationsnodev1beta1 "k8s.io/client-go/applyconfigurations/node/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // RuntimeClassesGetter has a method to return a RuntimeClassInterface.
    @@ -41,157 +38,34 @@ type RuntimeClassesGetter interface {
     
     // RuntimeClassInterface has methods to work with RuntimeClass resources.
     type RuntimeClassInterface interface {
    -	Create(ctx context.Context, runtimeClass *v1beta1.RuntimeClass, opts v1.CreateOptions) (*v1beta1.RuntimeClass, error)
    -	Update(ctx context.Context, runtimeClass *v1beta1.RuntimeClass, opts v1.UpdateOptions) (*v1beta1.RuntimeClass, error)
    +	Create(ctx context.Context, runtimeClass *nodev1beta1.RuntimeClass, opts v1.CreateOptions) (*nodev1beta1.RuntimeClass, error)
    +	Update(ctx context.Context, runtimeClass *nodev1beta1.RuntimeClass, opts v1.UpdateOptions) (*nodev1beta1.RuntimeClass, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.RuntimeClass, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.RuntimeClassList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*nodev1beta1.RuntimeClass, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*nodev1beta1.RuntimeClassList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.RuntimeClass, err error)
    -	Apply(ctx context.Context, runtimeClass *nodev1beta1.RuntimeClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.RuntimeClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *nodev1beta1.RuntimeClass, err error)
    +	Apply(ctx context.Context, runtimeClass *applyconfigurationsnodev1beta1.RuntimeClassApplyConfiguration, opts v1.ApplyOptions) (result *nodev1beta1.RuntimeClass, err error)
     	RuntimeClassExpansion
     }
     
     // runtimeClasses implements RuntimeClassInterface
     type runtimeClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*nodev1beta1.RuntimeClass, *nodev1beta1.RuntimeClassList, *applyconfigurationsnodev1beta1.RuntimeClassApplyConfiguration]
     }
     
     // newRuntimeClasses returns a RuntimeClasses
     func newRuntimeClasses(c *NodeV1beta1Client) *runtimeClasses {
     	return &runtimeClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*nodev1beta1.RuntimeClass, *nodev1beta1.RuntimeClassList, *applyconfigurationsnodev1beta1.RuntimeClassApplyConfiguration](
    +			"runtimeclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *nodev1beta1.RuntimeClass { return &nodev1beta1.RuntimeClass{} },
    +			func() *nodev1beta1.RuntimeClassList { return &nodev1beta1.RuntimeClassList{} },
    +			gentype.PrefersProtobuf[*nodev1beta1.RuntimeClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the runtimeClass, and returns the corresponding runtimeClass object, and an error if there is any.
    -func (c *runtimeClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.RuntimeClass, err error) {
    -	result = &v1beta1.RuntimeClass{}
    -	err = c.client.Get().
    -		Resource("runtimeclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of RuntimeClasses that match those selectors.
    -func (c *runtimeClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.RuntimeClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.RuntimeClassList{}
    -	err = c.client.Get().
    -		Resource("runtimeclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested runtimeClasses.
    -func (c *runtimeClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("runtimeclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a runtimeClass and creates it.  Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *runtimeClasses) Create(ctx context.Context, runtimeClass *v1beta1.RuntimeClass, opts v1.CreateOptions) (result *v1beta1.RuntimeClass, err error) {
    -	result = &v1beta1.RuntimeClass{}
    -	err = c.client.Post().
    -		Resource("runtimeclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(runtimeClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a runtimeClass and updates it. Returns the server's representation of the runtimeClass, and an error, if there is any.
    -func (c *runtimeClasses) Update(ctx context.Context, runtimeClass *v1beta1.RuntimeClass, opts v1.UpdateOptions) (result *v1beta1.RuntimeClass, err error) {
    -	result = &v1beta1.RuntimeClass{}
    -	err = c.client.Put().
    -		Resource("runtimeclasses").
    -		Name(runtimeClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(runtimeClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the runtimeClass and deletes it. Returns an error if one occurs.
    -func (c *runtimeClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("runtimeclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *runtimeClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("runtimeclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched runtimeClass.
    -func (c *runtimeClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.RuntimeClass, err error) {
    -	result = &v1beta1.RuntimeClass{}
    -	err = c.client.Patch(pt).
    -		Resource("runtimeclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied runtimeClass.
    -func (c *runtimeClasses) Apply(ctx context.Context, runtimeClass *nodev1beta1.RuntimeClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.RuntimeClass, err error) {
    -	if runtimeClass == nil {
    -		return nil, fmt.Errorf("runtimeClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(runtimeClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := runtimeClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("runtimeClass.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.RuntimeClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("runtimeclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/eviction.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/eviction.go
    index cd1aac9c29a3..6cf60806a809 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/eviction.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/eviction.go
    @@ -19,7 +19,9 @@ limitations under the License.
     package v1
     
     import (
    -	rest "k8s.io/client-go/rest"
    +	policyv1 "k8s.io/api/policy/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     )
     
     // EvictionsGetter has a method to return a EvictionInterface.
    @@ -35,14 +37,19 @@ type EvictionInterface interface {
     
     // evictions implements EvictionInterface
     type evictions struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.Client[*policyv1.Eviction]
     }
     
     // newEvictions returns a Evictions
     func newEvictions(c *PolicyV1Client, namespace string) *evictions {
     	return &evictions{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClient[*policyv1.Eviction](
    +			"evictions",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *policyv1.Eviction { return &policyv1.Eviction{} },
    +			gentype.PrefersProtobuf[*policyv1.Eviction](),
    +		),
     	}
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/eviction_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/eviction_expansion.go
    index 853187feb5d1..2c7e95b7208b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/eviction_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/eviction_expansion.go
    @@ -28,7 +28,7 @@ type EvictionExpansion interface {
     }
     
     func (c *evictions) Evict(ctx context.Context, eviction *policy.Eviction) error {
    -	return c.client.Post().
    +	return c.GetClient().Post().
     		AbsPath("/api/v1").
     		Namespace(eviction.Namespace).
     		Resource("pods").
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_eviction.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_eviction.go
    index a579067ce83d..247cf19dd898 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_eviction.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_eviction.go
    @@ -18,8 +18,27 @@ limitations under the License.
     
     package fake
     
    -// FakeEvictions implements EvictionInterface
    -type FakeEvictions struct {
    +import (
    +	v1 "k8s.io/api/policy/v1"
    +	gentype "k8s.io/client-go/gentype"
    +	policyv1 "k8s.io/client-go/kubernetes/typed/policy/v1"
    +)
    +
    +// fakeEvictions implements EvictionInterface
    +type fakeEvictions struct {
    +	*gentype.FakeClient[*v1.Eviction]
     	Fake *FakePolicyV1
    -	ns   string
    +}
    +
    +func newFakeEvictions(fake *FakePolicyV1, namespace string) policyv1.EvictionInterface {
    +	return &fakeEvictions{
    +		gentype.NewFakeClient[*v1.Eviction](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("evictions"),
    +			v1.SchemeGroupVersion.WithKind("Eviction"),
    +			func() *v1.Eviction { return &v1.Eviction{} },
    +		),
    +		fake,
    +	}
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_eviction_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_eviction_expansion.go
    index 1b6b4ade17eb..1e1d5e15b183 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_eviction_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_eviction_expansion.go
    @@ -24,10 +24,10 @@ import (
     	core "k8s.io/client-go/testing"
     )
     
    -func (c *FakeEvictions) Evict(ctx context.Context, eviction *policy.Eviction) error {
    +func (c *fakeEvictions) Evict(ctx context.Context, eviction *policy.Eviction) error {
     	action := core.CreateActionImpl{}
     	action.Verb = "create"
    -	action.Namespace = c.ns
    +	action.Namespace = c.Namespace()
     	action.Resource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"}
     	action.Subresource = "eviction"
     	action.Object = eviction
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_poddisruptionbudget.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_poddisruptionbudget.go
    index 7b5f51caf4ac..98e3b1adb398 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_poddisruptionbudget.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_poddisruptionbudget.go
    @@ -19,171 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/policy/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	policyv1 "k8s.io/client-go/applyconfigurations/policy/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedpolicyv1 "k8s.io/client-go/kubernetes/typed/policy/v1"
     )
     
    -// FakePodDisruptionBudgets implements PodDisruptionBudgetInterface
    -type FakePodDisruptionBudgets struct {
    +// fakePodDisruptionBudgets implements PodDisruptionBudgetInterface
    +type fakePodDisruptionBudgets struct {
    +	*gentype.FakeClientWithListAndApply[*v1.PodDisruptionBudget, *v1.PodDisruptionBudgetList, *policyv1.PodDisruptionBudgetApplyConfiguration]
     	Fake *FakePolicyV1
    -	ns   string
    -}
    -
    -var poddisruptionbudgetsResource = v1.SchemeGroupVersion.WithResource("poddisruptionbudgets")
    -
    -var poddisruptionbudgetsKind = v1.SchemeGroupVersion.WithKind("PodDisruptionBudget")
    -
    -// Get takes name of the podDisruptionBudget, and returns the corresponding podDisruptionBudget object, and an error if there is any.
    -func (c *FakePodDisruptionBudgets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PodDisruptionBudget, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(poddisruptionbudgetsResource, c.ns, name), &v1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PodDisruptionBudget), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PodDisruptionBudgets that match those selectors.
    -func (c *FakePodDisruptionBudgets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PodDisruptionBudgetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(poddisruptionbudgetsResource, poddisruptionbudgetsKind, c.ns, opts), &v1.PodDisruptionBudgetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.PodDisruptionBudgetList{ListMeta: obj.(*v1.PodDisruptionBudgetList).ListMeta}
    -	for _, item := range obj.(*v1.PodDisruptionBudgetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested podDisruptionBudgets.
    -func (c *FakePodDisruptionBudgets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(poddisruptionbudgetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a podDisruptionBudget and creates it.  Returns the server's representation of the podDisruptionBudget, and an error, if there is any.
    -func (c *FakePodDisruptionBudgets) Create(ctx context.Context, podDisruptionBudget *v1.PodDisruptionBudget, opts metav1.CreateOptions) (result *v1.PodDisruptionBudget, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(poddisruptionbudgetsResource, c.ns, podDisruptionBudget), &v1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PodDisruptionBudget), err
    -}
    -
    -// Update takes the representation of a podDisruptionBudget and updates it. Returns the server's representation of the podDisruptionBudget, and an error, if there is any.
    -func (c *FakePodDisruptionBudgets) Update(ctx context.Context, podDisruptionBudget *v1.PodDisruptionBudget, opts metav1.UpdateOptions) (result *v1.PodDisruptionBudget, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(poddisruptionbudgetsResource, c.ns, podDisruptionBudget), &v1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PodDisruptionBudget), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakePodDisruptionBudgets) UpdateStatus(ctx context.Context, podDisruptionBudget *v1.PodDisruptionBudget, opts metav1.UpdateOptions) (*v1.PodDisruptionBudget, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(poddisruptionbudgetsResource, "status", c.ns, podDisruptionBudget), &v1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PodDisruptionBudget), err
    -}
    -
    -// Delete takes name of the podDisruptionBudget and deletes it. Returns an error if one occurs.
    -func (c *FakePodDisruptionBudgets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(poddisruptionbudgetsResource, c.ns, name, opts), &v1.PodDisruptionBudget{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePodDisruptionBudgets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(poddisruptionbudgetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.PodDisruptionBudgetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched podDisruptionBudget.
    -func (c *FakePodDisruptionBudgets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PodDisruptionBudget, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(poddisruptionbudgetsResource, c.ns, name, pt, data, subresources...), &v1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PodDisruptionBudget), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied podDisruptionBudget.
    -func (c *FakePodDisruptionBudgets) Apply(ctx context.Context, podDisruptionBudget *policyv1.PodDisruptionBudgetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PodDisruptionBudget, err error) {
    -	if podDisruptionBudget == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(podDisruptionBudget)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podDisruptionBudget.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(poddisruptionbudgetsResource, c.ns, *name, types.ApplyPatchType, data), &v1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PodDisruptionBudget), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakePodDisruptionBudgets) ApplyStatus(ctx context.Context, podDisruptionBudget *policyv1.PodDisruptionBudgetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PodDisruptionBudget, err error) {
    -	if podDisruptionBudget == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(podDisruptionBudget)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podDisruptionBudget.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(poddisruptionbudgetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakePodDisruptionBudgets(fake *FakePolicyV1, namespace string) typedpolicyv1.PodDisruptionBudgetInterface {
    +	return &fakePodDisruptionBudgets{
    +		gentype.NewFakeClientWithListAndApply[*v1.PodDisruptionBudget, *v1.PodDisruptionBudgetList, *policyv1.PodDisruptionBudgetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("poddisruptionbudgets"),
    +			v1.SchemeGroupVersion.WithKind("PodDisruptionBudget"),
    +			func() *v1.PodDisruptionBudget { return &v1.PodDisruptionBudget{} },
    +			func() *v1.PodDisruptionBudgetList { return &v1.PodDisruptionBudgetList{} },
    +			func(dst, src *v1.PodDisruptionBudgetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.PodDisruptionBudgetList) []*v1.PodDisruptionBudget {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.PodDisruptionBudgetList, items []*v1.PodDisruptionBudget) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.PodDisruptionBudget), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_policy_client.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_policy_client.go
    index d5bb3d549ae1..49390c273473 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_policy_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/fake/fake_policy_client.go
    @@ -29,11 +29,11 @@ type FakePolicyV1 struct {
     }
     
     func (c *FakePolicyV1) Evictions(namespace string) v1.EvictionInterface {
    -	return &FakeEvictions{c, namespace}
    +	return newFakeEvictions(c, namespace)
     }
     
     func (c *FakePolicyV1) PodDisruptionBudgets(namespace string) v1.PodDisruptionBudgetInterface {
    -	return &FakePodDisruptionBudgets{c, namespace}
    +	return newFakePodDisruptionBudgets(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/poddisruptionbudget.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/poddisruptionbudget.go
    index 58db3acf9ec6..d45ed21f5549 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/poddisruptionbudget.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/poddisruptionbudget.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/policy/v1"
    +	policyv1 "k8s.io/api/policy/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	policyv1 "k8s.io/client-go/applyconfigurations/policy/v1"
    +	applyconfigurationspolicyv1 "k8s.io/client-go/applyconfigurations/policy/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PodDisruptionBudgetsGetter has a method to return a PodDisruptionBudgetInterface.
    @@ -41,216 +38,38 @@ type PodDisruptionBudgetsGetter interface {
     
     // PodDisruptionBudgetInterface has methods to work with PodDisruptionBudget resources.
     type PodDisruptionBudgetInterface interface {
    -	Create(ctx context.Context, podDisruptionBudget *v1.PodDisruptionBudget, opts metav1.CreateOptions) (*v1.PodDisruptionBudget, error)
    -	Update(ctx context.Context, podDisruptionBudget *v1.PodDisruptionBudget, opts metav1.UpdateOptions) (*v1.PodDisruptionBudget, error)
    -	UpdateStatus(ctx context.Context, podDisruptionBudget *v1.PodDisruptionBudget, opts metav1.UpdateOptions) (*v1.PodDisruptionBudget, error)
    +	Create(ctx context.Context, podDisruptionBudget *policyv1.PodDisruptionBudget, opts metav1.CreateOptions) (*policyv1.PodDisruptionBudget, error)
    +	Update(ctx context.Context, podDisruptionBudget *policyv1.PodDisruptionBudget, opts metav1.UpdateOptions) (*policyv1.PodDisruptionBudget, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, podDisruptionBudget *policyv1.PodDisruptionBudget, opts metav1.UpdateOptions) (*policyv1.PodDisruptionBudget, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.PodDisruptionBudget, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.PodDisruptionBudgetList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*policyv1.PodDisruptionBudget, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*policyv1.PodDisruptionBudgetList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PodDisruptionBudget, err error)
    -	Apply(ctx context.Context, podDisruptionBudget *policyv1.PodDisruptionBudgetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PodDisruptionBudget, err error)
    -	ApplyStatus(ctx context.Context, podDisruptionBudget *policyv1.PodDisruptionBudgetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PodDisruptionBudget, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *policyv1.PodDisruptionBudget, err error)
    +	Apply(ctx context.Context, podDisruptionBudget *applyconfigurationspolicyv1.PodDisruptionBudgetApplyConfiguration, opts metav1.ApplyOptions) (result *policyv1.PodDisruptionBudget, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, podDisruptionBudget *applyconfigurationspolicyv1.PodDisruptionBudgetApplyConfiguration, opts metav1.ApplyOptions) (result *policyv1.PodDisruptionBudget, err error)
     	PodDisruptionBudgetExpansion
     }
     
     // podDisruptionBudgets implements PodDisruptionBudgetInterface
     type podDisruptionBudgets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*policyv1.PodDisruptionBudget, *policyv1.PodDisruptionBudgetList, *applyconfigurationspolicyv1.PodDisruptionBudgetApplyConfiguration]
     }
     
     // newPodDisruptionBudgets returns a PodDisruptionBudgets
     func newPodDisruptionBudgets(c *PolicyV1Client, namespace string) *podDisruptionBudgets {
     	return &podDisruptionBudgets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*policyv1.PodDisruptionBudget, *policyv1.PodDisruptionBudgetList, *applyconfigurationspolicyv1.PodDisruptionBudgetApplyConfiguration](
    +			"poddisruptionbudgets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *policyv1.PodDisruptionBudget { return &policyv1.PodDisruptionBudget{} },
    +			func() *policyv1.PodDisruptionBudgetList { return &policyv1.PodDisruptionBudgetList{} },
    +			gentype.PrefersProtobuf[*policyv1.PodDisruptionBudget](),
    +		),
     	}
     }
    -
    -// Get takes name of the podDisruptionBudget, and returns the corresponding podDisruptionBudget object, and an error if there is any.
    -func (c *podDisruptionBudgets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PodDisruptionBudget, err error) {
    -	result = &v1.PodDisruptionBudget{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PodDisruptionBudgets that match those selectors.
    -func (c *podDisruptionBudgets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PodDisruptionBudgetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.PodDisruptionBudgetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested podDisruptionBudgets.
    -func (c *podDisruptionBudgets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a podDisruptionBudget and creates it.  Returns the server's representation of the podDisruptionBudget, and an error, if there is any.
    -func (c *podDisruptionBudgets) Create(ctx context.Context, podDisruptionBudget *v1.PodDisruptionBudget, opts metav1.CreateOptions) (result *v1.PodDisruptionBudget, err error) {
    -	result = &v1.PodDisruptionBudget{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podDisruptionBudget).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a podDisruptionBudget and updates it. Returns the server's representation of the podDisruptionBudget, and an error, if there is any.
    -func (c *podDisruptionBudgets) Update(ctx context.Context, podDisruptionBudget *v1.PodDisruptionBudget, opts metav1.UpdateOptions) (result *v1.PodDisruptionBudget, err error) {
    -	result = &v1.PodDisruptionBudget{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(podDisruptionBudget.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podDisruptionBudget).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *podDisruptionBudgets) UpdateStatus(ctx context.Context, podDisruptionBudget *v1.PodDisruptionBudget, opts metav1.UpdateOptions) (result *v1.PodDisruptionBudget, err error) {
    -	result = &v1.PodDisruptionBudget{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(podDisruptionBudget.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podDisruptionBudget).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the podDisruptionBudget and deletes it. Returns an error if one occurs.
    -func (c *podDisruptionBudgets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *podDisruptionBudgets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched podDisruptionBudget.
    -func (c *podDisruptionBudgets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PodDisruptionBudget, err error) {
    -	result = &v1.PodDisruptionBudget{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied podDisruptionBudget.
    -func (c *podDisruptionBudgets) Apply(ctx context.Context, podDisruptionBudget *policyv1.PodDisruptionBudgetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PodDisruptionBudget, err error) {
    -	if podDisruptionBudget == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(podDisruptionBudget)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podDisruptionBudget.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget.Name must be provided to Apply")
    -	}
    -	result = &v1.PodDisruptionBudget{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *podDisruptionBudgets) ApplyStatus(ctx context.Context, podDisruptionBudget *policyv1.PodDisruptionBudgetApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PodDisruptionBudget, err error) {
    -	if podDisruptionBudget == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(podDisruptionBudget)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := podDisruptionBudget.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.PodDisruptionBudget{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/policy_client.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/policy_client.go
    index 9bfd98aa9f3d..8d84f460b06d 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/policy_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1/policy_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/policy/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	policyv1 "k8s.io/api/policy/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -90,10 +90,10 @@ func New(c rest.Interface) *PolicyV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := policyv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go
    index 12e8e76edc27..de4c35e766d3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go
    @@ -19,7 +19,9 @@ limitations under the License.
     package v1beta1
     
     import (
    -	rest "k8s.io/client-go/rest"
    +	policyv1beta1 "k8s.io/api/policy/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     )
     
     // EvictionsGetter has a method to return a EvictionInterface.
    @@ -35,14 +37,19 @@ type EvictionInterface interface {
     
     // evictions implements EvictionInterface
     type evictions struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.Client[*policyv1beta1.Eviction]
     }
     
     // newEvictions returns a Evictions
     func newEvictions(c *PolicyV1beta1Client, namespace string) *evictions {
     	return &evictions{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClient[*policyv1beta1.Eviction](
    +			"evictions",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *policyv1beta1.Eviction { return &policyv1beta1.Eviction{} },
    +			gentype.PrefersProtobuf[*policyv1beta1.Eviction](),
    +		),
     	}
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go
    index c003671f5df2..d7c28987cf31 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go
    @@ -28,7 +28,7 @@ type EvictionExpansion interface {
     }
     
     func (c *evictions) Evict(ctx context.Context, eviction *policy.Eviction) error {
    -	return c.client.Post().
    +	return c.GetClient().Post().
     		AbsPath("/api/v1").
     		Namespace(eviction.Namespace).
     		Resource("pods").
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go
    index b8f6f3eae27f..fb2a1de08357 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go
    @@ -18,8 +18,27 @@ limitations under the License.
     
     package fake
     
    -// FakeEvictions implements EvictionInterface
    -type FakeEvictions struct {
    +import (
    +	v1beta1 "k8s.io/api/policy/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	policyv1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1"
    +)
    +
    +// fakeEvictions implements EvictionInterface
    +type fakeEvictions struct {
    +	*gentype.FakeClient[*v1beta1.Eviction]
     	Fake *FakePolicyV1beta1
    -	ns   string
    +}
    +
    +func newFakeEvictions(fake *FakePolicyV1beta1, namespace string) policyv1beta1.EvictionInterface {
    +	return &fakeEvictions{
    +		gentype.NewFakeClient[*v1beta1.Eviction](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("evictions"),
    +			v1beta1.SchemeGroupVersion.WithKind("Eviction"),
    +			func() *v1beta1.Eviction { return &v1beta1.Eviction{} },
    +		),
    +		fake,
    +	}
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go
    index f97522bb38e5..30c5df30b3b8 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go
    @@ -24,10 +24,10 @@ import (
     	core "k8s.io/client-go/testing"
     )
     
    -func (c *FakeEvictions) Evict(ctx context.Context, eviction *policy.Eviction) error {
    +func (c *fakeEvictions) Evict(ctx context.Context, eviction *policy.Eviction) error {
     	action := core.CreateActionImpl{}
     	action.Verb = "create"
    -	action.Namespace = c.ns
    +	action.Namespace = c.Namespace()
     	action.Resource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"}
     	action.Subresource = "eviction"
     	action.Object = eviction
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go
    index bcee8e77744a..d4cab0b4a532 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go
    @@ -19,171 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/policy/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	policyv1beta1 "k8s.io/client-go/applyconfigurations/policy/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedpolicyv1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1"
     )
     
    -// FakePodDisruptionBudgets implements PodDisruptionBudgetInterface
    -type FakePodDisruptionBudgets struct {
    +// fakePodDisruptionBudgets implements PodDisruptionBudgetInterface
    +type fakePodDisruptionBudgets struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.PodDisruptionBudget, *v1beta1.PodDisruptionBudgetList, *policyv1beta1.PodDisruptionBudgetApplyConfiguration]
     	Fake *FakePolicyV1beta1
    -	ns   string
    -}
    -
    -var poddisruptionbudgetsResource = v1beta1.SchemeGroupVersion.WithResource("poddisruptionbudgets")
    -
    -var poddisruptionbudgetsKind = v1beta1.SchemeGroupVersion.WithKind("PodDisruptionBudget")
    -
    -// Get takes name of the podDisruptionBudget, and returns the corresponding podDisruptionBudget object, and an error if there is any.
    -func (c *FakePodDisruptionBudgets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(poddisruptionbudgetsResource, c.ns, name), &v1beta1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PodDisruptionBudget), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PodDisruptionBudgets that match those selectors.
    -func (c *FakePodDisruptionBudgets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.PodDisruptionBudgetList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(poddisruptionbudgetsResource, poddisruptionbudgetsKind, c.ns, opts), &v1beta1.PodDisruptionBudgetList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.PodDisruptionBudgetList{ListMeta: obj.(*v1beta1.PodDisruptionBudgetList).ListMeta}
    -	for _, item := range obj.(*v1beta1.PodDisruptionBudgetList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested podDisruptionBudgets.
    -func (c *FakePodDisruptionBudgets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(poddisruptionbudgetsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a podDisruptionBudget and creates it.  Returns the server's representation of the podDisruptionBudget, and an error, if there is any.
    -func (c *FakePodDisruptionBudgets) Create(ctx context.Context, podDisruptionBudget *v1beta1.PodDisruptionBudget, opts v1.CreateOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(poddisruptionbudgetsResource, c.ns, podDisruptionBudget), &v1beta1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PodDisruptionBudget), err
    -}
    -
    -// Update takes the representation of a podDisruptionBudget and updates it. Returns the server's representation of the podDisruptionBudget, and an error, if there is any.
    -func (c *FakePodDisruptionBudgets) Update(ctx context.Context, podDisruptionBudget *v1beta1.PodDisruptionBudget, opts v1.UpdateOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(poddisruptionbudgetsResource, c.ns, podDisruptionBudget), &v1beta1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PodDisruptionBudget), err
     }
     
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakePodDisruptionBudgets) UpdateStatus(ctx context.Context, podDisruptionBudget *v1beta1.PodDisruptionBudget, opts v1.UpdateOptions) (*v1beta1.PodDisruptionBudget, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(poddisruptionbudgetsResource, "status", c.ns, podDisruptionBudget), &v1beta1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PodDisruptionBudget), err
    -}
    -
    -// Delete takes name of the podDisruptionBudget and deletes it. Returns an error if one occurs.
    -func (c *FakePodDisruptionBudgets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(poddisruptionbudgetsResource, c.ns, name, opts), &v1beta1.PodDisruptionBudget{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePodDisruptionBudgets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(poddisruptionbudgetsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.PodDisruptionBudgetList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched podDisruptionBudget.
    -func (c *FakePodDisruptionBudgets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PodDisruptionBudget, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(poddisruptionbudgetsResource, c.ns, name, pt, data, subresources...), &v1beta1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PodDisruptionBudget), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied podDisruptionBudget.
    -func (c *FakePodDisruptionBudgets) Apply(ctx context.Context, podDisruptionBudget *policyv1beta1.PodDisruptionBudgetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	if podDisruptionBudget == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(podDisruptionBudget)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podDisruptionBudget.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(poddisruptionbudgetsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PodDisruptionBudget), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakePodDisruptionBudgets) ApplyStatus(ctx context.Context, podDisruptionBudget *policyv1beta1.PodDisruptionBudgetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	if podDisruptionBudget == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(podDisruptionBudget)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podDisruptionBudget.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(poddisruptionbudgetsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1beta1.PodDisruptionBudget{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakePodDisruptionBudgets(fake *FakePolicyV1beta1, namespace string) typedpolicyv1beta1.PodDisruptionBudgetInterface {
    +	return &fakePodDisruptionBudgets{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.PodDisruptionBudget, *v1beta1.PodDisruptionBudgetList, *policyv1beta1.PodDisruptionBudgetApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("poddisruptionbudgets"),
    +			v1beta1.SchemeGroupVersion.WithKind("PodDisruptionBudget"),
    +			func() *v1beta1.PodDisruptionBudget { return &v1beta1.PodDisruptionBudget{} },
    +			func() *v1beta1.PodDisruptionBudgetList { return &v1beta1.PodDisruptionBudgetList{} },
    +			func(dst, src *v1beta1.PodDisruptionBudgetList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.PodDisruptionBudgetList) []*v1beta1.PodDisruptionBudget {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.PodDisruptionBudgetList, items []*v1beta1.PodDisruptionBudget) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.PodDisruptionBudget), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go
    index 90670b113f9e..136935dd4382 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go
    @@ -29,11 +29,11 @@ type FakePolicyV1beta1 struct {
     }
     
     func (c *FakePolicyV1beta1) Evictions(namespace string) v1beta1.EvictionInterface {
    -	return &FakeEvictions{c, namespace}
    +	return newFakeEvictions(c, namespace)
     }
     
     func (c *FakePolicyV1beta1) PodDisruptionBudgets(namespace string) v1beta1.PodDisruptionBudgetInterface {
    -	return &FakePodDisruptionBudgets{c, namespace}
    +	return newFakePodDisruptionBudgets(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go
    index 168728992133..00e044961583 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/policy/v1beta1"
    +	policyv1beta1 "k8s.io/api/policy/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	policyv1beta1 "k8s.io/client-go/applyconfigurations/policy/v1beta1"
    +	applyconfigurationspolicyv1beta1 "k8s.io/client-go/applyconfigurations/policy/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PodDisruptionBudgetsGetter has a method to return a PodDisruptionBudgetInterface.
    @@ -41,216 +38,38 @@ type PodDisruptionBudgetsGetter interface {
     
     // PodDisruptionBudgetInterface has methods to work with PodDisruptionBudget resources.
     type PodDisruptionBudgetInterface interface {
    -	Create(ctx context.Context, podDisruptionBudget *v1beta1.PodDisruptionBudget, opts v1.CreateOptions) (*v1beta1.PodDisruptionBudget, error)
    -	Update(ctx context.Context, podDisruptionBudget *v1beta1.PodDisruptionBudget, opts v1.UpdateOptions) (*v1beta1.PodDisruptionBudget, error)
    -	UpdateStatus(ctx context.Context, podDisruptionBudget *v1beta1.PodDisruptionBudget, opts v1.UpdateOptions) (*v1beta1.PodDisruptionBudget, error)
    +	Create(ctx context.Context, podDisruptionBudget *policyv1beta1.PodDisruptionBudget, opts v1.CreateOptions) (*policyv1beta1.PodDisruptionBudget, error)
    +	Update(ctx context.Context, podDisruptionBudget *policyv1beta1.PodDisruptionBudget, opts v1.UpdateOptions) (*policyv1beta1.PodDisruptionBudget, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, podDisruptionBudget *policyv1beta1.PodDisruptionBudget, opts v1.UpdateOptions) (*policyv1beta1.PodDisruptionBudget, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.PodDisruptionBudget, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.PodDisruptionBudgetList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*policyv1beta1.PodDisruptionBudget, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*policyv1beta1.PodDisruptionBudgetList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PodDisruptionBudget, err error)
    -	Apply(ctx context.Context, podDisruptionBudget *policyv1beta1.PodDisruptionBudgetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PodDisruptionBudget, err error)
    -	ApplyStatus(ctx context.Context, podDisruptionBudget *policyv1beta1.PodDisruptionBudgetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PodDisruptionBudget, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *policyv1beta1.PodDisruptionBudget, err error)
    +	Apply(ctx context.Context, podDisruptionBudget *applyconfigurationspolicyv1beta1.PodDisruptionBudgetApplyConfiguration, opts v1.ApplyOptions) (result *policyv1beta1.PodDisruptionBudget, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, podDisruptionBudget *applyconfigurationspolicyv1beta1.PodDisruptionBudgetApplyConfiguration, opts v1.ApplyOptions) (result *policyv1beta1.PodDisruptionBudget, err error)
     	PodDisruptionBudgetExpansion
     }
     
     // podDisruptionBudgets implements PodDisruptionBudgetInterface
     type podDisruptionBudgets struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*policyv1beta1.PodDisruptionBudget, *policyv1beta1.PodDisruptionBudgetList, *applyconfigurationspolicyv1beta1.PodDisruptionBudgetApplyConfiguration]
     }
     
     // newPodDisruptionBudgets returns a PodDisruptionBudgets
     func newPodDisruptionBudgets(c *PolicyV1beta1Client, namespace string) *podDisruptionBudgets {
     	return &podDisruptionBudgets{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*policyv1beta1.PodDisruptionBudget, *policyv1beta1.PodDisruptionBudgetList, *applyconfigurationspolicyv1beta1.PodDisruptionBudgetApplyConfiguration](
    +			"poddisruptionbudgets",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *policyv1beta1.PodDisruptionBudget { return &policyv1beta1.PodDisruptionBudget{} },
    +			func() *policyv1beta1.PodDisruptionBudgetList { return &policyv1beta1.PodDisruptionBudgetList{} },
    +			gentype.PrefersProtobuf[*policyv1beta1.PodDisruptionBudget](),
    +		),
     	}
     }
    -
    -// Get takes name of the podDisruptionBudget, and returns the corresponding podDisruptionBudget object, and an error if there is any.
    -func (c *podDisruptionBudgets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	result = &v1beta1.PodDisruptionBudget{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PodDisruptionBudgets that match those selectors.
    -func (c *podDisruptionBudgets) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.PodDisruptionBudgetList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.PodDisruptionBudgetList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested podDisruptionBudgets.
    -func (c *podDisruptionBudgets) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a podDisruptionBudget and creates it.  Returns the server's representation of the podDisruptionBudget, and an error, if there is any.
    -func (c *podDisruptionBudgets) Create(ctx context.Context, podDisruptionBudget *v1beta1.PodDisruptionBudget, opts v1.CreateOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	result = &v1beta1.PodDisruptionBudget{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podDisruptionBudget).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a podDisruptionBudget and updates it. Returns the server's representation of the podDisruptionBudget, and an error, if there is any.
    -func (c *podDisruptionBudgets) Update(ctx context.Context, podDisruptionBudget *v1beta1.PodDisruptionBudget, opts v1.UpdateOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	result = &v1beta1.PodDisruptionBudget{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(podDisruptionBudget.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podDisruptionBudget).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *podDisruptionBudgets) UpdateStatus(ctx context.Context, podDisruptionBudget *v1beta1.PodDisruptionBudget, opts v1.UpdateOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	result = &v1beta1.PodDisruptionBudget{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(podDisruptionBudget.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podDisruptionBudget).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the podDisruptionBudget and deletes it. Returns an error if one occurs.
    -func (c *podDisruptionBudgets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *podDisruptionBudgets) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched podDisruptionBudget.
    -func (c *podDisruptionBudgets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PodDisruptionBudget, err error) {
    -	result = &v1beta1.PodDisruptionBudget{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied podDisruptionBudget.
    -func (c *podDisruptionBudgets) Apply(ctx context.Context, podDisruptionBudget *policyv1beta1.PodDisruptionBudgetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	if podDisruptionBudget == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(podDisruptionBudget)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podDisruptionBudget.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.PodDisruptionBudget{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *podDisruptionBudgets) ApplyStatus(ctx context.Context, podDisruptionBudget *policyv1beta1.PodDisruptionBudgetApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PodDisruptionBudget, err error) {
    -	if podDisruptionBudget == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(podDisruptionBudget)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := podDisruptionBudget.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podDisruptionBudget.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.PodDisruptionBudget{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("poddisruptionbudgets").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go
    index fdb509321670..d8e78627e13f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/policy/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	policyv1beta1 "k8s.io/api/policy/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -90,10 +90,10 @@ func New(c rest.Interface) *PolicyV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := policyv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go
    index 000d737f0ff2..cccad0487a54 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/rbac/v1"
    +	rbacv1 "k8s.io/api/rbac/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    +	applyconfigurationsrbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ClusterRolesGetter has a method to return a ClusterRoleInterface.
    @@ -41,157 +38,34 @@ type ClusterRolesGetter interface {
     
     // ClusterRoleInterface has methods to work with ClusterRole resources.
     type ClusterRoleInterface interface {
    -	Create(ctx context.Context, clusterRole *v1.ClusterRole, opts metav1.CreateOptions) (*v1.ClusterRole, error)
    -	Update(ctx context.Context, clusterRole *v1.ClusterRole, opts metav1.UpdateOptions) (*v1.ClusterRole, error)
    +	Create(ctx context.Context, clusterRole *rbacv1.ClusterRole, opts metav1.CreateOptions) (*rbacv1.ClusterRole, error)
    +	Update(ctx context.Context, clusterRole *rbacv1.ClusterRole, opts metav1.UpdateOptions) (*rbacv1.ClusterRole, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ClusterRole, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ClusterRoleList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*rbacv1.ClusterRole, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*rbacv1.ClusterRoleList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ClusterRole, err error)
    -	Apply(ctx context.Context, clusterRole *rbacv1.ClusterRoleApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterRole, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *rbacv1.ClusterRole, err error)
    +	Apply(ctx context.Context, clusterRole *applyconfigurationsrbacv1.ClusterRoleApplyConfiguration, opts metav1.ApplyOptions) (result *rbacv1.ClusterRole, err error)
     	ClusterRoleExpansion
     }
     
     // clusterRoles implements ClusterRoleInterface
     type clusterRoles struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*rbacv1.ClusterRole, *rbacv1.ClusterRoleList, *applyconfigurationsrbacv1.ClusterRoleApplyConfiguration]
     }
     
     // newClusterRoles returns a ClusterRoles
     func newClusterRoles(c *RbacV1Client) *clusterRoles {
     	return &clusterRoles{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*rbacv1.ClusterRole, *rbacv1.ClusterRoleList, *applyconfigurationsrbacv1.ClusterRoleApplyConfiguration](
    +			"clusterroles",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *rbacv1.ClusterRole { return &rbacv1.ClusterRole{} },
    +			func() *rbacv1.ClusterRoleList { return &rbacv1.ClusterRoleList{} },
    +			gentype.PrefersProtobuf[*rbacv1.ClusterRole](),
    +		),
     	}
     }
    -
    -// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any.
    -func (c *clusterRoles) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ClusterRole, err error) {
    -	result = &v1.ClusterRole{}
    -	err = c.client.Get().
    -		Resource("clusterroles").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors.
    -func (c *clusterRoles) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ClusterRoleList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ClusterRoleList{}
    -	err = c.client.Get().
    -		Resource("clusterroles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoles.
    -func (c *clusterRoles) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("clusterroles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a clusterRole and creates it.  Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *clusterRoles) Create(ctx context.Context, clusterRole *v1.ClusterRole, opts metav1.CreateOptions) (result *v1.ClusterRole, err error) {
    -	result = &v1.ClusterRole{}
    -	err = c.client.Post().
    -		Resource("clusterroles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRole).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *clusterRoles) Update(ctx context.Context, clusterRole *v1.ClusterRole, opts metav1.UpdateOptions) (result *v1.ClusterRole, err error) {
    -	result = &v1.ClusterRole{}
    -	err = c.client.Put().
    -		Resource("clusterroles").
    -		Name(clusterRole.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRole).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs.
    -func (c *clusterRoles) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("clusterroles").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *clusterRoles) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("clusterroles").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched clusterRole.
    -func (c *clusterRoles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ClusterRole, err error) {
    -	result = &v1.ClusterRole{}
    -	err = c.client.Patch(pt).
    -		Resource("clusterroles").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRole.
    -func (c *clusterRoles) Apply(ctx context.Context, clusterRole *rbacv1.ClusterRoleApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterRole, err error) {
    -	if clusterRole == nil {
    -		return nil, fmt.Errorf("clusterRole provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(clusterRole)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRole.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRole.Name must be provided to Apply")
    -	}
    -	result = &v1.ClusterRole{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("clusterroles").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go
    index 31db43d98480..4a75fdcb56f4 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/rbac/v1"
    +	rbacv1 "k8s.io/api/rbac/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    +	applyconfigurationsrbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ClusterRoleBindingsGetter has a method to return a ClusterRoleBindingInterface.
    @@ -41,157 +38,34 @@ type ClusterRoleBindingsGetter interface {
     
     // ClusterRoleBindingInterface has methods to work with ClusterRoleBinding resources.
     type ClusterRoleBindingInterface interface {
    -	Create(ctx context.Context, clusterRoleBinding *v1.ClusterRoleBinding, opts metav1.CreateOptions) (*v1.ClusterRoleBinding, error)
    -	Update(ctx context.Context, clusterRoleBinding *v1.ClusterRoleBinding, opts metav1.UpdateOptions) (*v1.ClusterRoleBinding, error)
    +	Create(ctx context.Context, clusterRoleBinding *rbacv1.ClusterRoleBinding, opts metav1.CreateOptions) (*rbacv1.ClusterRoleBinding, error)
    +	Update(ctx context.Context, clusterRoleBinding *rbacv1.ClusterRoleBinding, opts metav1.UpdateOptions) (*rbacv1.ClusterRoleBinding, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.ClusterRoleBinding, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.ClusterRoleBindingList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*rbacv1.ClusterRoleBinding, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*rbacv1.ClusterRoleBindingList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ClusterRoleBinding, err error)
    -	Apply(ctx context.Context, clusterRoleBinding *rbacv1.ClusterRoleBindingApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterRoleBinding, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *rbacv1.ClusterRoleBinding, err error)
    +	Apply(ctx context.Context, clusterRoleBinding *applyconfigurationsrbacv1.ClusterRoleBindingApplyConfiguration, opts metav1.ApplyOptions) (result *rbacv1.ClusterRoleBinding, err error)
     	ClusterRoleBindingExpansion
     }
     
     // clusterRoleBindings implements ClusterRoleBindingInterface
     type clusterRoleBindings struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*rbacv1.ClusterRoleBinding, *rbacv1.ClusterRoleBindingList, *applyconfigurationsrbacv1.ClusterRoleBindingApplyConfiguration]
     }
     
     // newClusterRoleBindings returns a ClusterRoleBindings
     func newClusterRoleBindings(c *RbacV1Client) *clusterRoleBindings {
     	return &clusterRoleBindings{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*rbacv1.ClusterRoleBinding, *rbacv1.ClusterRoleBindingList, *applyconfigurationsrbacv1.ClusterRoleBindingApplyConfiguration](
    +			"clusterrolebindings",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *rbacv1.ClusterRoleBinding { return &rbacv1.ClusterRoleBinding{} },
    +			func() *rbacv1.ClusterRoleBindingList { return &rbacv1.ClusterRoleBindingList{} },
    +			gentype.PrefersProtobuf[*rbacv1.ClusterRoleBinding](),
    +		),
     	}
     }
    -
    -// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any.
    -func (c *clusterRoleBindings) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ClusterRoleBinding, err error) {
    -	result = &v1.ClusterRoleBinding{}
    -	err = c.client.Get().
    -		Resource("clusterrolebindings").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors.
    -func (c *clusterRoleBindings) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ClusterRoleBindingList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.ClusterRoleBindingList{}
    -	err = c.client.Get().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoleBindings.
    -func (c *clusterRoleBindings) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a clusterRoleBinding and creates it.  Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *clusterRoleBindings) Create(ctx context.Context, clusterRoleBinding *v1.ClusterRoleBinding, opts metav1.CreateOptions) (result *v1.ClusterRoleBinding, err error) {
    -	result = &v1.ClusterRoleBinding{}
    -	err = c.client.Post().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRoleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *clusterRoleBindings) Update(ctx context.Context, clusterRoleBinding *v1.ClusterRoleBinding, opts metav1.UpdateOptions) (result *v1.ClusterRoleBinding, err error) {
    -	result = &v1.ClusterRoleBinding{}
    -	err = c.client.Put().
    -		Resource("clusterrolebindings").
    -		Name(clusterRoleBinding.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRoleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs.
    -func (c *clusterRoleBindings) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("clusterrolebindings").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *clusterRoleBindings) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched clusterRoleBinding.
    -func (c *clusterRoleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ClusterRoleBinding, err error) {
    -	result = &v1.ClusterRoleBinding{}
    -	err = c.client.Patch(pt).
    -		Resource("clusterrolebindings").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRoleBinding.
    -func (c *clusterRoleBindings) Apply(ctx context.Context, clusterRoleBinding *rbacv1.ClusterRoleBindingApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterRoleBinding, err error) {
    -	if clusterRoleBinding == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(clusterRoleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRoleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding.Name must be provided to Apply")
    -	}
    -	result = &v1.ClusterRoleBinding{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("clusterrolebindings").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go
    index 5add33ddfb2d..82fa39d069df 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go
    @@ -19,127 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/rbac/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1 "k8s.io/client-go/kubernetes/typed/rbac/v1"
     )
     
    -// FakeClusterRoles implements ClusterRoleInterface
    -type FakeClusterRoles struct {
    +// fakeClusterRoles implements ClusterRoleInterface
    +type fakeClusterRoles struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ClusterRole, *v1.ClusterRoleList, *rbacv1.ClusterRoleApplyConfiguration]
     	Fake *FakeRbacV1
     }
     
    -var clusterrolesResource = v1.SchemeGroupVersion.WithResource("clusterroles")
    -
    -var clusterrolesKind = v1.SchemeGroupVersion.WithKind("ClusterRole")
    -
    -// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any.
    -func (c *FakeClusterRoles) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(clusterrolesResource, name), &v1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ClusterRole), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors.
    -func (c *FakeClusterRoles) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ClusterRoleList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(clusterrolesResource, clusterrolesKind, opts), &v1.ClusterRoleList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ClusterRoleList{ListMeta: obj.(*v1.ClusterRoleList).ListMeta}
    -	for _, item := range obj.(*v1.ClusterRoleList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoles.
    -func (c *FakeClusterRoles) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(clusterrolesResource, opts))
    -}
    -
    -// Create takes the representation of a clusterRole and creates it.  Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *FakeClusterRoles) Create(ctx context.Context, clusterRole *v1.ClusterRole, opts metav1.CreateOptions) (result *v1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(clusterrolesResource, clusterRole), &v1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ClusterRole), err
    -}
    -
    -// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *FakeClusterRoles) Update(ctx context.Context, clusterRole *v1.ClusterRole, opts metav1.UpdateOptions) (result *v1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(clusterrolesResource, clusterRole), &v1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ClusterRole), err
    -}
    -
    -// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs.
    -func (c *FakeClusterRoles) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(clusterrolesResource, name, opts), &v1.ClusterRole{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeClusterRoles) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(clusterrolesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.ClusterRoleList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched clusterRole.
    -func (c *FakeClusterRoles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, name, pt, data, subresources...), &v1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ClusterRole), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRole.
    -func (c *FakeClusterRoles) Apply(ctx context.Context, clusterRole *rbacv1.ClusterRoleApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterRole, err error) {
    -	if clusterRole == nil {
    -		return nil, fmt.Errorf("clusterRole provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(clusterRole)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRole.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRole.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, *name, types.ApplyPatchType, data), &v1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeClusterRoles(fake *FakeRbacV1) typedrbacv1.ClusterRoleInterface {
    +	return &fakeClusterRoles{
    +		gentype.NewFakeClientWithListAndApply[*v1.ClusterRole, *v1.ClusterRoleList, *rbacv1.ClusterRoleApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("clusterroles"),
    +			v1.SchemeGroupVersion.WithKind("ClusterRole"),
    +			func() *v1.ClusterRole { return &v1.ClusterRole{} },
    +			func() *v1.ClusterRoleList { return &v1.ClusterRoleList{} },
    +			func(dst, src *v1.ClusterRoleList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ClusterRoleList) []*v1.ClusterRole { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.ClusterRoleList, items []*v1.ClusterRole) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.ClusterRole), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go
    index d42e93e65326..3d1f0d4a9c79 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/rbac/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1 "k8s.io/client-go/kubernetes/typed/rbac/v1"
     )
     
    -// FakeClusterRoleBindings implements ClusterRoleBindingInterface
    -type FakeClusterRoleBindings struct {
    +// fakeClusterRoleBindings implements ClusterRoleBindingInterface
    +type fakeClusterRoleBindings struct {
    +	*gentype.FakeClientWithListAndApply[*v1.ClusterRoleBinding, *v1.ClusterRoleBindingList, *rbacv1.ClusterRoleBindingApplyConfiguration]
     	Fake *FakeRbacV1
     }
     
    -var clusterrolebindingsResource = v1.SchemeGroupVersion.WithResource("clusterrolebindings")
    -
    -var clusterrolebindingsKind = v1.SchemeGroupVersion.WithKind("ClusterRoleBinding")
    -
    -// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any.
    -func (c *FakeClusterRoleBindings) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(clusterrolebindingsResource, name), &v1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ClusterRoleBinding), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors.
    -func (c *FakeClusterRoleBindings) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ClusterRoleBindingList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(clusterrolebindingsResource, clusterrolebindingsKind, opts), &v1.ClusterRoleBindingList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.ClusterRoleBindingList{ListMeta: obj.(*v1.ClusterRoleBindingList).ListMeta}
    -	for _, item := range obj.(*v1.ClusterRoleBindingList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoleBindings.
    -func (c *FakeClusterRoleBindings) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(clusterrolebindingsResource, opts))
    -}
    -
    -// Create takes the representation of a clusterRoleBinding and creates it.  Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *FakeClusterRoleBindings) Create(ctx context.Context, clusterRoleBinding *v1.ClusterRoleBinding, opts metav1.CreateOptions) (result *v1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(clusterrolebindingsResource, clusterRoleBinding), &v1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ClusterRoleBinding), err
    -}
    -
    -// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *FakeClusterRoleBindings) Update(ctx context.Context, clusterRoleBinding *v1.ClusterRoleBinding, opts metav1.UpdateOptions) (result *v1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(clusterrolebindingsResource, clusterRoleBinding), &v1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ClusterRoleBinding), err
    -}
    -
    -// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs.
    -func (c *FakeClusterRoleBindings) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(clusterrolebindingsResource, name, opts), &v1.ClusterRoleBinding{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeClusterRoleBindings) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(clusterrolebindingsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.ClusterRoleBindingList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched clusterRoleBinding.
    -func (c *FakeClusterRoleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, name, pt, data, subresources...), &v1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.ClusterRoleBinding), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRoleBinding.
    -func (c *FakeClusterRoleBindings) Apply(ctx context.Context, clusterRoleBinding *rbacv1.ClusterRoleBindingApplyConfiguration, opts metav1.ApplyOptions) (result *v1.ClusterRoleBinding, err error) {
    -	if clusterRoleBinding == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(clusterRoleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRoleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, *name, types.ApplyPatchType, data), &v1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeClusterRoleBindings(fake *FakeRbacV1) typedrbacv1.ClusterRoleBindingInterface {
    +	return &fakeClusterRoleBindings{
    +		gentype.NewFakeClientWithListAndApply[*v1.ClusterRoleBinding, *v1.ClusterRoleBindingList, *rbacv1.ClusterRoleBindingApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("clusterrolebindings"),
    +			v1.SchemeGroupVersion.WithKind("ClusterRoleBinding"),
    +			func() *v1.ClusterRoleBinding { return &v1.ClusterRoleBinding{} },
    +			func() *v1.ClusterRoleBindingList { return &v1.ClusterRoleBindingList{} },
    +			func(dst, src *v1.ClusterRoleBindingList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.ClusterRoleBindingList) []*v1.ClusterRoleBinding {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.ClusterRoleBindingList, items []*v1.ClusterRoleBinding) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.ClusterRoleBinding), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rbac_client.go
    index 426fd70d6cc8..db2b31d38040 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rbac_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rbac_client.go
    @@ -29,19 +29,19 @@ type FakeRbacV1 struct {
     }
     
     func (c *FakeRbacV1) ClusterRoles() v1.ClusterRoleInterface {
    -	return &FakeClusterRoles{c}
    +	return newFakeClusterRoles(c)
     }
     
     func (c *FakeRbacV1) ClusterRoleBindings() v1.ClusterRoleBindingInterface {
    -	return &FakeClusterRoleBindings{c}
    +	return newFakeClusterRoleBindings(c)
     }
     
     func (c *FakeRbacV1) Roles(namespace string) v1.RoleInterface {
    -	return &FakeRoles{c, namespace}
    +	return newFakeRoles(c, namespace)
     }
     
     func (c *FakeRbacV1) RoleBindings(namespace string) v1.RoleBindingInterface {
    -	return &FakeRoleBindings{c, namespace}
    +	return newFakeRoleBindings(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go
    index a3bc5da6636d..3baf41cc715c 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/rbac/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1 "k8s.io/client-go/kubernetes/typed/rbac/v1"
     )
     
    -// FakeRoles implements RoleInterface
    -type FakeRoles struct {
    +// fakeRoles implements RoleInterface
    +type fakeRoles struct {
    +	*gentype.FakeClientWithListAndApply[*v1.Role, *v1.RoleList, *rbacv1.RoleApplyConfiguration]
     	Fake *FakeRbacV1
    -	ns   string
    -}
    -
    -var rolesResource = v1.SchemeGroupVersion.WithResource("roles")
    -
    -var rolesKind = v1.SchemeGroupVersion.WithKind("Role")
    -
    -// Get takes name of the role, and returns the corresponding role object, and an error if there is any.
    -func (c *FakeRoles) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(rolesResource, c.ns, name), &v1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Role), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Roles that match those selectors.
    -func (c *FakeRoles) List(ctx context.Context, opts metav1.ListOptions) (result *v1.RoleList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(rolesResource, rolesKind, c.ns, opts), &v1.RoleList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.RoleList{ListMeta: obj.(*v1.RoleList).ListMeta}
    -	for _, item := range obj.(*v1.RoleList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roles.
    -func (c *FakeRoles) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(rolesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a role and creates it.  Returns the server's representation of the role, and an error, if there is any.
    -func (c *FakeRoles) Create(ctx context.Context, role *v1.Role, opts metav1.CreateOptions) (result *v1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(rolesResource, c.ns, role), &v1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Role), err
    -}
    -
    -// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any.
    -func (c *FakeRoles) Update(ctx context.Context, role *v1.Role, opts metav1.UpdateOptions) (result *v1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(rolesResource, c.ns, role), &v1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Role), err
    -}
    -
    -// Delete takes name of the role and deletes it. Returns an error if one occurs.
    -func (c *FakeRoles) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(rolesResource, c.ns, name, opts), &v1.Role{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeRoles) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(rolesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.RoleList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched role.
    -func (c *FakeRoles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, name, pt, data, subresources...), &v1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.Role), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied role.
    -func (c *FakeRoles) Apply(ctx context.Context, role *rbacv1.RoleApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Role, err error) {
    -	if role == nil {
    -		return nil, fmt.Errorf("role provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(role)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := role.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("role.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, *name, types.ApplyPatchType, data), &v1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeRoles(fake *FakeRbacV1, namespace string) typedrbacv1.RoleInterface {
    +	return &fakeRoles{
    +		gentype.NewFakeClientWithListAndApply[*v1.Role, *v1.RoleList, *rbacv1.RoleApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("roles"),
    +			v1.SchemeGroupVersion.WithKind("Role"),
    +			func() *v1.Role { return &v1.Role{} },
    +			func() *v1.RoleList { return &v1.RoleList{} },
    +			func(dst, src *v1.RoleList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.RoleList) []*v1.Role { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.RoleList, items []*v1.Role) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.Role), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go
    index eeb37e9db30c..28246da57743 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/rbac/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1 "k8s.io/client-go/kubernetes/typed/rbac/v1"
     )
     
    -// FakeRoleBindings implements RoleBindingInterface
    -type FakeRoleBindings struct {
    +// fakeRoleBindings implements RoleBindingInterface
    +type fakeRoleBindings struct {
    +	*gentype.FakeClientWithListAndApply[*v1.RoleBinding, *v1.RoleBindingList, *rbacv1.RoleBindingApplyConfiguration]
     	Fake *FakeRbacV1
    -	ns   string
    -}
    -
    -var rolebindingsResource = v1.SchemeGroupVersion.WithResource("rolebindings")
    -
    -var rolebindingsKind = v1.SchemeGroupVersion.WithKind("RoleBinding")
    -
    -// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any.
    -func (c *FakeRoleBindings) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(rolebindingsResource, c.ns, name), &v1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.RoleBinding), err
    -}
    -
    -// List takes label and field selectors, and returns the list of RoleBindings that match those selectors.
    -func (c *FakeRoleBindings) List(ctx context.Context, opts metav1.ListOptions) (result *v1.RoleBindingList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(rolebindingsResource, rolebindingsKind, c.ns, opts), &v1.RoleBindingList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.RoleBindingList{ListMeta: obj.(*v1.RoleBindingList).ListMeta}
    -	for _, item := range obj.(*v1.RoleBindingList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roleBindings.
    -func (c *FakeRoleBindings) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(rolebindingsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a roleBinding and creates it.  Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *FakeRoleBindings) Create(ctx context.Context, roleBinding *v1.RoleBinding, opts metav1.CreateOptions) (result *v1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(rolebindingsResource, c.ns, roleBinding), &v1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.RoleBinding), err
    -}
    -
    -// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *FakeRoleBindings) Update(ctx context.Context, roleBinding *v1.RoleBinding, opts metav1.UpdateOptions) (result *v1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(rolebindingsResource, c.ns, roleBinding), &v1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.RoleBinding), err
    -}
    -
    -// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs.
    -func (c *FakeRoleBindings) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(rolebindingsResource, c.ns, name, opts), &v1.RoleBinding{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeRoleBindings) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(rolebindingsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.RoleBindingList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched roleBinding.
    -func (c *FakeRoleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, name, pt, data, subresources...), &v1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.RoleBinding), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied roleBinding.
    -func (c *FakeRoleBindings) Apply(ctx context.Context, roleBinding *rbacv1.RoleBindingApplyConfiguration, opts metav1.ApplyOptions) (result *v1.RoleBinding, err error) {
    -	if roleBinding == nil {
    -		return nil, fmt.Errorf("roleBinding provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(roleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := roleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("roleBinding.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, *name, types.ApplyPatchType, data), &v1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeRoleBindings(fake *FakeRbacV1, namespace string) typedrbacv1.RoleBindingInterface {
    +	return &fakeRoleBindings{
    +		gentype.NewFakeClientWithListAndApply[*v1.RoleBinding, *v1.RoleBindingList, *rbacv1.RoleBindingApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("rolebindings"),
    +			v1.SchemeGroupVersion.WithKind("RoleBinding"),
    +			func() *v1.RoleBinding { return &v1.RoleBinding{} },
    +			func() *v1.RoleBindingList { return &v1.RoleBindingList{} },
    +			func(dst, src *v1.RoleBindingList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.RoleBindingList) []*v1.RoleBinding { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.RoleBindingList, items []*v1.RoleBinding) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.RoleBinding), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rbac_client.go
    index a02f0357d947..c586ee638b65 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rbac_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rbac_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/rbac/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	rbacv1 "k8s.io/api/rbac/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -100,10 +100,10 @@ func New(c rest.Interface) *RbacV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := rbacv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go
    index 93810a3ffaad..c3a9ba135b72 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/rbac/v1"
    +	rbacv1 "k8s.io/api/rbac/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    +	applyconfigurationsrbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // RolesGetter has a method to return a RoleInterface.
    @@ -41,168 +38,34 @@ type RolesGetter interface {
     
     // RoleInterface has methods to work with Role resources.
     type RoleInterface interface {
    -	Create(ctx context.Context, role *v1.Role, opts metav1.CreateOptions) (*v1.Role, error)
    -	Update(ctx context.Context, role *v1.Role, opts metav1.UpdateOptions) (*v1.Role, error)
    +	Create(ctx context.Context, role *rbacv1.Role, opts metav1.CreateOptions) (*rbacv1.Role, error)
    +	Update(ctx context.Context, role *rbacv1.Role, opts metav1.UpdateOptions) (*rbacv1.Role, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Role, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.RoleList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*rbacv1.Role, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*rbacv1.RoleList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Role, err error)
    -	Apply(ctx context.Context, role *rbacv1.RoleApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Role, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *rbacv1.Role, err error)
    +	Apply(ctx context.Context, role *applyconfigurationsrbacv1.RoleApplyConfiguration, opts metav1.ApplyOptions) (result *rbacv1.Role, err error)
     	RoleExpansion
     }
     
     // roles implements RoleInterface
     type roles struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*rbacv1.Role, *rbacv1.RoleList, *applyconfigurationsrbacv1.RoleApplyConfiguration]
     }
     
     // newRoles returns a Roles
     func newRoles(c *RbacV1Client, namespace string) *roles {
     	return &roles{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*rbacv1.Role, *rbacv1.RoleList, *applyconfigurationsrbacv1.RoleApplyConfiguration](
    +			"roles",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *rbacv1.Role { return &rbacv1.Role{} },
    +			func() *rbacv1.RoleList { return &rbacv1.RoleList{} },
    +			gentype.PrefersProtobuf[*rbacv1.Role](),
    +		),
     	}
     }
    -
    -// Get takes name of the role, and returns the corresponding role object, and an error if there is any.
    -func (c *roles) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Role, err error) {
    -	result = &v1.Role{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Roles that match those selectors.
    -func (c *roles) List(ctx context.Context, opts metav1.ListOptions) (result *v1.RoleList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.RoleList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roles.
    -func (c *roles) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a role and creates it.  Returns the server's representation of the role, and an error, if there is any.
    -func (c *roles) Create(ctx context.Context, role *v1.Role, opts metav1.CreateOptions) (result *v1.Role, err error) {
    -	result = &v1.Role{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(role).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any.
    -func (c *roles) Update(ctx context.Context, role *v1.Role, opts metav1.UpdateOptions) (result *v1.Role, err error) {
    -	result = &v1.Role{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(role.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(role).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the role and deletes it. Returns an error if one occurs.
    -func (c *roles) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *roles) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched role.
    -func (c *roles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Role, err error) {
    -	result = &v1.Role{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied role.
    -func (c *roles) Apply(ctx context.Context, role *rbacv1.RoleApplyConfiguration, opts metav1.ApplyOptions) (result *v1.Role, err error) {
    -	if role == nil {
    -		return nil, fmt.Errorf("role provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(role)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := role.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("role.Name must be provided to Apply")
    -	}
    -	result = &v1.Role{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go
    index 2ace93860490..1f5a394904de 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/rbac/v1"
    +	rbacv1 "k8s.io/api/rbac/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    +	applyconfigurationsrbacv1 "k8s.io/client-go/applyconfigurations/rbac/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // RoleBindingsGetter has a method to return a RoleBindingInterface.
    @@ -41,168 +38,34 @@ type RoleBindingsGetter interface {
     
     // RoleBindingInterface has methods to work with RoleBinding resources.
     type RoleBindingInterface interface {
    -	Create(ctx context.Context, roleBinding *v1.RoleBinding, opts metav1.CreateOptions) (*v1.RoleBinding, error)
    -	Update(ctx context.Context, roleBinding *v1.RoleBinding, opts metav1.UpdateOptions) (*v1.RoleBinding, error)
    +	Create(ctx context.Context, roleBinding *rbacv1.RoleBinding, opts metav1.CreateOptions) (*rbacv1.RoleBinding, error)
    +	Update(ctx context.Context, roleBinding *rbacv1.RoleBinding, opts metav1.UpdateOptions) (*rbacv1.RoleBinding, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.RoleBinding, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.RoleBindingList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*rbacv1.RoleBinding, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*rbacv1.RoleBindingList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.RoleBinding, err error)
    -	Apply(ctx context.Context, roleBinding *rbacv1.RoleBindingApplyConfiguration, opts metav1.ApplyOptions) (result *v1.RoleBinding, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *rbacv1.RoleBinding, err error)
    +	Apply(ctx context.Context, roleBinding *applyconfigurationsrbacv1.RoleBindingApplyConfiguration, opts metav1.ApplyOptions) (result *rbacv1.RoleBinding, err error)
     	RoleBindingExpansion
     }
     
     // roleBindings implements RoleBindingInterface
     type roleBindings struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*rbacv1.RoleBinding, *rbacv1.RoleBindingList, *applyconfigurationsrbacv1.RoleBindingApplyConfiguration]
     }
     
     // newRoleBindings returns a RoleBindings
     func newRoleBindings(c *RbacV1Client, namespace string) *roleBindings {
     	return &roleBindings{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*rbacv1.RoleBinding, *rbacv1.RoleBindingList, *applyconfigurationsrbacv1.RoleBindingApplyConfiguration](
    +			"rolebindings",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *rbacv1.RoleBinding { return &rbacv1.RoleBinding{} },
    +			func() *rbacv1.RoleBindingList { return &rbacv1.RoleBindingList{} },
    +			gentype.PrefersProtobuf[*rbacv1.RoleBinding](),
    +		),
     	}
     }
    -
    -// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any.
    -func (c *roleBindings) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.RoleBinding, err error) {
    -	result = &v1.RoleBinding{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of RoleBindings that match those selectors.
    -func (c *roleBindings) List(ctx context.Context, opts metav1.ListOptions) (result *v1.RoleBindingList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.RoleBindingList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roleBindings.
    -func (c *roleBindings) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a roleBinding and creates it.  Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *roleBindings) Create(ctx context.Context, roleBinding *v1.RoleBinding, opts metav1.CreateOptions) (result *v1.RoleBinding, err error) {
    -	result = &v1.RoleBinding{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(roleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *roleBindings) Update(ctx context.Context, roleBinding *v1.RoleBinding, opts metav1.UpdateOptions) (result *v1.RoleBinding, err error) {
    -	result = &v1.RoleBinding{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(roleBinding.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(roleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs.
    -func (c *roleBindings) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *roleBindings) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched roleBinding.
    -func (c *roleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.RoleBinding, err error) {
    -	result = &v1.RoleBinding{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied roleBinding.
    -func (c *roleBindings) Apply(ctx context.Context, roleBinding *rbacv1.RoleBindingApplyConfiguration, opts metav1.ApplyOptions) (result *v1.RoleBinding, err error) {
    -	if roleBinding == nil {
    -		return nil, fmt.Errorf("roleBinding provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(roleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := roleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("roleBinding.Name must be provided to Apply")
    -	}
    -	result = &v1.RoleBinding{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go
    index d6d30e99ef86..3874f9dee994 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    +	applyconfigurationsrbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ClusterRolesGetter has a method to return a ClusterRoleInterface.
    @@ -41,157 +38,34 @@ type ClusterRolesGetter interface {
     
     // ClusterRoleInterface has methods to work with ClusterRole resources.
     type ClusterRoleInterface interface {
    -	Create(ctx context.Context, clusterRole *v1alpha1.ClusterRole, opts v1.CreateOptions) (*v1alpha1.ClusterRole, error)
    -	Update(ctx context.Context, clusterRole *v1alpha1.ClusterRole, opts v1.UpdateOptions) (*v1alpha1.ClusterRole, error)
    +	Create(ctx context.Context, clusterRole *rbacv1alpha1.ClusterRole, opts v1.CreateOptions) (*rbacv1alpha1.ClusterRole, error)
    +	Update(ctx context.Context, clusterRole *rbacv1alpha1.ClusterRole, opts v1.UpdateOptions) (*rbacv1alpha1.ClusterRole, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ClusterRole, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ClusterRoleList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*rbacv1alpha1.ClusterRole, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*rbacv1alpha1.ClusterRoleList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterRole, err error)
    -	Apply(ctx context.Context, clusterRole *rbacv1alpha1.ClusterRoleApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterRole, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *rbacv1alpha1.ClusterRole, err error)
    +	Apply(ctx context.Context, clusterRole *applyconfigurationsrbacv1alpha1.ClusterRoleApplyConfiguration, opts v1.ApplyOptions) (result *rbacv1alpha1.ClusterRole, err error)
     	ClusterRoleExpansion
     }
     
     // clusterRoles implements ClusterRoleInterface
     type clusterRoles struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*rbacv1alpha1.ClusterRole, *rbacv1alpha1.ClusterRoleList, *applyconfigurationsrbacv1alpha1.ClusterRoleApplyConfiguration]
     }
     
     // newClusterRoles returns a ClusterRoles
     func newClusterRoles(c *RbacV1alpha1Client) *clusterRoles {
     	return &clusterRoles{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*rbacv1alpha1.ClusterRole, *rbacv1alpha1.ClusterRoleList, *applyconfigurationsrbacv1alpha1.ClusterRoleApplyConfiguration](
    +			"clusterroles",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *rbacv1alpha1.ClusterRole { return &rbacv1alpha1.ClusterRole{} },
    +			func() *rbacv1alpha1.ClusterRoleList { return &rbacv1alpha1.ClusterRoleList{} },
    +			gentype.PrefersProtobuf[*rbacv1alpha1.ClusterRole](),
    +		),
     	}
     }
    -
    -// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any.
    -func (c *clusterRoles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ClusterRole, err error) {
    -	result = &v1alpha1.ClusterRole{}
    -	err = c.client.Get().
    -		Resource("clusterroles").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors.
    -func (c *clusterRoles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ClusterRoleList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.ClusterRoleList{}
    -	err = c.client.Get().
    -		Resource("clusterroles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoles.
    -func (c *clusterRoles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("clusterroles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a clusterRole and creates it.  Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *clusterRoles) Create(ctx context.Context, clusterRole *v1alpha1.ClusterRole, opts v1.CreateOptions) (result *v1alpha1.ClusterRole, err error) {
    -	result = &v1alpha1.ClusterRole{}
    -	err = c.client.Post().
    -		Resource("clusterroles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRole).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *clusterRoles) Update(ctx context.Context, clusterRole *v1alpha1.ClusterRole, opts v1.UpdateOptions) (result *v1alpha1.ClusterRole, err error) {
    -	result = &v1alpha1.ClusterRole{}
    -	err = c.client.Put().
    -		Resource("clusterroles").
    -		Name(clusterRole.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRole).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs.
    -func (c *clusterRoles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("clusterroles").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *clusterRoles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("clusterroles").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched clusterRole.
    -func (c *clusterRoles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterRole, err error) {
    -	result = &v1alpha1.ClusterRole{}
    -	err = c.client.Patch(pt).
    -		Resource("clusterroles").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRole.
    -func (c *clusterRoles) Apply(ctx context.Context, clusterRole *rbacv1alpha1.ClusterRoleApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterRole, err error) {
    -	if clusterRole == nil {
    -		return nil, fmt.Errorf("clusterRole provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(clusterRole)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRole.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRole.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.ClusterRole{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("clusterroles").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go
    index 2eded92ac2b2..434f875f8ed2 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    +	applyconfigurationsrbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ClusterRoleBindingsGetter has a method to return a ClusterRoleBindingInterface.
    @@ -41,157 +38,34 @@ type ClusterRoleBindingsGetter interface {
     
     // ClusterRoleBindingInterface has methods to work with ClusterRoleBinding resources.
     type ClusterRoleBindingInterface interface {
    -	Create(ctx context.Context, clusterRoleBinding *v1alpha1.ClusterRoleBinding, opts v1.CreateOptions) (*v1alpha1.ClusterRoleBinding, error)
    -	Update(ctx context.Context, clusterRoleBinding *v1alpha1.ClusterRoleBinding, opts v1.UpdateOptions) (*v1alpha1.ClusterRoleBinding, error)
    +	Create(ctx context.Context, clusterRoleBinding *rbacv1alpha1.ClusterRoleBinding, opts v1.CreateOptions) (*rbacv1alpha1.ClusterRoleBinding, error)
    +	Update(ctx context.Context, clusterRoleBinding *rbacv1alpha1.ClusterRoleBinding, opts v1.UpdateOptions) (*rbacv1alpha1.ClusterRoleBinding, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ClusterRoleBinding, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ClusterRoleBindingList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*rbacv1alpha1.ClusterRoleBinding, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*rbacv1alpha1.ClusterRoleBindingList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterRoleBinding, err error)
    -	Apply(ctx context.Context, clusterRoleBinding *rbacv1alpha1.ClusterRoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterRoleBinding, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *rbacv1alpha1.ClusterRoleBinding, err error)
    +	Apply(ctx context.Context, clusterRoleBinding *applyconfigurationsrbacv1alpha1.ClusterRoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *rbacv1alpha1.ClusterRoleBinding, err error)
     	ClusterRoleBindingExpansion
     }
     
     // clusterRoleBindings implements ClusterRoleBindingInterface
     type clusterRoleBindings struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*rbacv1alpha1.ClusterRoleBinding, *rbacv1alpha1.ClusterRoleBindingList, *applyconfigurationsrbacv1alpha1.ClusterRoleBindingApplyConfiguration]
     }
     
     // newClusterRoleBindings returns a ClusterRoleBindings
     func newClusterRoleBindings(c *RbacV1alpha1Client) *clusterRoleBindings {
     	return &clusterRoleBindings{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*rbacv1alpha1.ClusterRoleBinding, *rbacv1alpha1.ClusterRoleBindingList, *applyconfigurationsrbacv1alpha1.ClusterRoleBindingApplyConfiguration](
    +			"clusterrolebindings",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *rbacv1alpha1.ClusterRoleBinding { return &rbacv1alpha1.ClusterRoleBinding{} },
    +			func() *rbacv1alpha1.ClusterRoleBindingList { return &rbacv1alpha1.ClusterRoleBindingList{} },
    +			gentype.PrefersProtobuf[*rbacv1alpha1.ClusterRoleBinding](),
    +		),
     	}
     }
    -
    -// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any.
    -func (c *clusterRoleBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ClusterRoleBinding, err error) {
    -	result = &v1alpha1.ClusterRoleBinding{}
    -	err = c.client.Get().
    -		Resource("clusterrolebindings").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors.
    -func (c *clusterRoleBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ClusterRoleBindingList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.ClusterRoleBindingList{}
    -	err = c.client.Get().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoleBindings.
    -func (c *clusterRoleBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a clusterRoleBinding and creates it.  Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *clusterRoleBindings) Create(ctx context.Context, clusterRoleBinding *v1alpha1.ClusterRoleBinding, opts v1.CreateOptions) (result *v1alpha1.ClusterRoleBinding, err error) {
    -	result = &v1alpha1.ClusterRoleBinding{}
    -	err = c.client.Post().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRoleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *clusterRoleBindings) Update(ctx context.Context, clusterRoleBinding *v1alpha1.ClusterRoleBinding, opts v1.UpdateOptions) (result *v1alpha1.ClusterRoleBinding, err error) {
    -	result = &v1alpha1.ClusterRoleBinding{}
    -	err = c.client.Put().
    -		Resource("clusterrolebindings").
    -		Name(clusterRoleBinding.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRoleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs.
    -func (c *clusterRoleBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("clusterrolebindings").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *clusterRoleBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched clusterRoleBinding.
    -func (c *clusterRoleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterRoleBinding, err error) {
    -	result = &v1alpha1.ClusterRoleBinding{}
    -	err = c.client.Patch(pt).
    -		Resource("clusterrolebindings").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRoleBinding.
    -func (c *clusterRoleBindings) Apply(ctx context.Context, clusterRoleBinding *rbacv1alpha1.ClusterRoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterRoleBinding, err error) {
    -	if clusterRoleBinding == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(clusterRoleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRoleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.ClusterRoleBinding{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("clusterrolebindings").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go
    index 534a1990f507..668999da5521 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1"
     )
     
    -// FakeClusterRoles implements ClusterRoleInterface
    -type FakeClusterRoles struct {
    +// fakeClusterRoles implements ClusterRoleInterface
    +type fakeClusterRoles struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.ClusterRole, *v1alpha1.ClusterRoleList, *rbacv1alpha1.ClusterRoleApplyConfiguration]
     	Fake *FakeRbacV1alpha1
     }
     
    -var clusterrolesResource = v1alpha1.SchemeGroupVersion.WithResource("clusterroles")
    -
    -var clusterrolesKind = v1alpha1.SchemeGroupVersion.WithKind("ClusterRole")
    -
    -// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any.
    -func (c *FakeClusterRoles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(clusterrolesResource, name), &v1alpha1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterRole), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors.
    -func (c *FakeClusterRoles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ClusterRoleList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(clusterrolesResource, clusterrolesKind, opts), &v1alpha1.ClusterRoleList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.ClusterRoleList{ListMeta: obj.(*v1alpha1.ClusterRoleList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.ClusterRoleList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoles.
    -func (c *FakeClusterRoles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(clusterrolesResource, opts))
    -}
    -
    -// Create takes the representation of a clusterRole and creates it.  Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *FakeClusterRoles) Create(ctx context.Context, clusterRole *v1alpha1.ClusterRole, opts v1.CreateOptions) (result *v1alpha1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(clusterrolesResource, clusterRole), &v1alpha1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterRole), err
    -}
    -
    -// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *FakeClusterRoles) Update(ctx context.Context, clusterRole *v1alpha1.ClusterRole, opts v1.UpdateOptions) (result *v1alpha1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(clusterrolesResource, clusterRole), &v1alpha1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterRole), err
    -}
    -
    -// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs.
    -func (c *FakeClusterRoles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(clusterrolesResource, name, opts), &v1alpha1.ClusterRole{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeClusterRoles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(clusterrolesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.ClusterRoleList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched clusterRole.
    -func (c *FakeClusterRoles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, name, pt, data, subresources...), &v1alpha1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterRole), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRole.
    -func (c *FakeClusterRoles) Apply(ctx context.Context, clusterRole *rbacv1alpha1.ClusterRoleApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterRole, err error) {
    -	if clusterRole == nil {
    -		return nil, fmt.Errorf("clusterRole provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(clusterRole)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRole.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRole.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, *name, types.ApplyPatchType, data), &v1alpha1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeClusterRoles(fake *FakeRbacV1alpha1) typedrbacv1alpha1.ClusterRoleInterface {
    +	return &fakeClusterRoles{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.ClusterRole, *v1alpha1.ClusterRoleList, *rbacv1alpha1.ClusterRoleApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("clusterroles"),
    +			v1alpha1.SchemeGroupVersion.WithKind("ClusterRole"),
    +			func() *v1alpha1.ClusterRole { return &v1alpha1.ClusterRole{} },
    +			func() *v1alpha1.ClusterRoleList { return &v1alpha1.ClusterRoleList{} },
    +			func(dst, src *v1alpha1.ClusterRoleList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.ClusterRoleList) []*v1alpha1.ClusterRole {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.ClusterRoleList, items []*v1alpha1.ClusterRole) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.ClusterRole), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go
    index 0a4359392ddf..6c275537d038 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1"
     )
     
    -// FakeClusterRoleBindings implements ClusterRoleBindingInterface
    -type FakeClusterRoleBindings struct {
    +// fakeClusterRoleBindings implements ClusterRoleBindingInterface
    +type fakeClusterRoleBindings struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.ClusterRoleBinding, *v1alpha1.ClusterRoleBindingList, *rbacv1alpha1.ClusterRoleBindingApplyConfiguration]
     	Fake *FakeRbacV1alpha1
     }
     
    -var clusterrolebindingsResource = v1alpha1.SchemeGroupVersion.WithResource("clusterrolebindings")
    -
    -var clusterrolebindingsKind = v1alpha1.SchemeGroupVersion.WithKind("ClusterRoleBinding")
    -
    -// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any.
    -func (c *FakeClusterRoleBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(clusterrolebindingsResource, name), &v1alpha1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterRoleBinding), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors.
    -func (c *FakeClusterRoleBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ClusterRoleBindingList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(clusterrolebindingsResource, clusterrolebindingsKind, opts), &v1alpha1.ClusterRoleBindingList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.ClusterRoleBindingList{ListMeta: obj.(*v1alpha1.ClusterRoleBindingList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.ClusterRoleBindingList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoleBindings.
    -func (c *FakeClusterRoleBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(clusterrolebindingsResource, opts))
    -}
    -
    -// Create takes the representation of a clusterRoleBinding and creates it.  Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *FakeClusterRoleBindings) Create(ctx context.Context, clusterRoleBinding *v1alpha1.ClusterRoleBinding, opts v1.CreateOptions) (result *v1alpha1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(clusterrolebindingsResource, clusterRoleBinding), &v1alpha1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterRoleBinding), err
    -}
    -
    -// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *FakeClusterRoleBindings) Update(ctx context.Context, clusterRoleBinding *v1alpha1.ClusterRoleBinding, opts v1.UpdateOptions) (result *v1alpha1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(clusterrolebindingsResource, clusterRoleBinding), &v1alpha1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterRoleBinding), err
    -}
    -
    -// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs.
    -func (c *FakeClusterRoleBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(clusterrolebindingsResource, name, opts), &v1alpha1.ClusterRoleBinding{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeClusterRoleBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(clusterrolebindingsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.ClusterRoleBindingList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched clusterRoleBinding.
    -func (c *FakeClusterRoleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, name, pt, data, subresources...), &v1alpha1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.ClusterRoleBinding), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRoleBinding.
    -func (c *FakeClusterRoleBindings) Apply(ctx context.Context, clusterRoleBinding *rbacv1alpha1.ClusterRoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterRoleBinding, err error) {
    -	if clusterRoleBinding == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(clusterRoleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRoleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, *name, types.ApplyPatchType, data), &v1alpha1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeClusterRoleBindings(fake *FakeRbacV1alpha1) typedrbacv1alpha1.ClusterRoleBindingInterface {
    +	return &fakeClusterRoleBindings{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.ClusterRoleBinding, *v1alpha1.ClusterRoleBindingList, *rbacv1alpha1.ClusterRoleBindingApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("clusterrolebindings"),
    +			v1alpha1.SchemeGroupVersion.WithKind("ClusterRoleBinding"),
    +			func() *v1alpha1.ClusterRoleBinding { return &v1alpha1.ClusterRoleBinding{} },
    +			func() *v1alpha1.ClusterRoleBindingList { return &v1alpha1.ClusterRoleBindingList{} },
    +			func(dst, src *v1alpha1.ClusterRoleBindingList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.ClusterRoleBindingList) []*v1alpha1.ClusterRoleBinding {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.ClusterRoleBindingList, items []*v1alpha1.ClusterRoleBinding) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.ClusterRoleBinding), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go
    index 3447e9be8337..df66b5ea91c0 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go
    @@ -29,19 +29,19 @@ type FakeRbacV1alpha1 struct {
     }
     
     func (c *FakeRbacV1alpha1) ClusterRoles() v1alpha1.ClusterRoleInterface {
    -	return &FakeClusterRoles{c}
    +	return newFakeClusterRoles(c)
     }
     
     func (c *FakeRbacV1alpha1) ClusterRoleBindings() v1alpha1.ClusterRoleBindingInterface {
    -	return &FakeClusterRoleBindings{c}
    +	return newFakeClusterRoleBindings(c)
     }
     
     func (c *FakeRbacV1alpha1) Roles(namespace string) v1alpha1.RoleInterface {
    -	return &FakeRoles{c, namespace}
    +	return newFakeRoles(c, namespace)
     }
     
     func (c *FakeRbacV1alpha1) RoleBindings(namespace string) v1alpha1.RoleBindingInterface {
    -	return &FakeRoleBindings{c, namespace}
    +	return newFakeRoleBindings(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go
    index a0e28348ae48..21ed226cd79c 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1"
     )
     
    -// FakeRoles implements RoleInterface
    -type FakeRoles struct {
    +// fakeRoles implements RoleInterface
    +type fakeRoles struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.Role, *v1alpha1.RoleList, *rbacv1alpha1.RoleApplyConfiguration]
     	Fake *FakeRbacV1alpha1
    -	ns   string
    -}
    -
    -var rolesResource = v1alpha1.SchemeGroupVersion.WithResource("roles")
    -
    -var rolesKind = v1alpha1.SchemeGroupVersion.WithKind("Role")
    -
    -// Get takes name of the role, and returns the corresponding role object, and an error if there is any.
    -func (c *FakeRoles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(rolesResource, c.ns, name), &v1alpha1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.Role), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Roles that match those selectors.
    -func (c *FakeRoles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.RoleList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(rolesResource, rolesKind, c.ns, opts), &v1alpha1.RoleList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.RoleList{ListMeta: obj.(*v1alpha1.RoleList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.RoleList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roles.
    -func (c *FakeRoles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(rolesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a role and creates it.  Returns the server's representation of the role, and an error, if there is any.
    -func (c *FakeRoles) Create(ctx context.Context, role *v1alpha1.Role, opts v1.CreateOptions) (result *v1alpha1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(rolesResource, c.ns, role), &v1alpha1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.Role), err
    -}
    -
    -// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any.
    -func (c *FakeRoles) Update(ctx context.Context, role *v1alpha1.Role, opts v1.UpdateOptions) (result *v1alpha1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(rolesResource, c.ns, role), &v1alpha1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.Role), err
    -}
    -
    -// Delete takes name of the role and deletes it. Returns an error if one occurs.
    -func (c *FakeRoles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(rolesResource, c.ns, name, opts), &v1alpha1.Role{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeRoles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(rolesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.RoleList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched role.
    -func (c *FakeRoles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, name, pt, data, subresources...), &v1alpha1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.Role), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied role.
    -func (c *FakeRoles) Apply(ctx context.Context, role *rbacv1alpha1.RoleApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.Role, err error) {
    -	if role == nil {
    -		return nil, fmt.Errorf("role provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(role)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := role.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("role.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, *name, types.ApplyPatchType, data), &v1alpha1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeRoles(fake *FakeRbacV1alpha1, namespace string) typedrbacv1alpha1.RoleInterface {
    +	return &fakeRoles{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.Role, *v1alpha1.RoleList, *rbacv1alpha1.RoleApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1alpha1.SchemeGroupVersion.WithResource("roles"),
    +			v1alpha1.SchemeGroupVersion.WithKind("Role"),
    +			func() *v1alpha1.Role { return &v1alpha1.Role{} },
    +			func() *v1alpha1.RoleList { return &v1alpha1.RoleList{} },
    +			func(dst, src *v1alpha1.RoleList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.RoleList) []*v1alpha1.Role { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1alpha1.RoleList, items []*v1alpha1.Role) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.Role), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go
    index 76649f5c2b34..c27d5f262c57 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go
    @@ -19,136 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1"
     )
     
    -// FakeRoleBindings implements RoleBindingInterface
    -type FakeRoleBindings struct {
    +// fakeRoleBindings implements RoleBindingInterface
    +type fakeRoleBindings struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.RoleBinding, *v1alpha1.RoleBindingList, *rbacv1alpha1.RoleBindingApplyConfiguration]
     	Fake *FakeRbacV1alpha1
    -	ns   string
    -}
    -
    -var rolebindingsResource = v1alpha1.SchemeGroupVersion.WithResource("rolebindings")
    -
    -var rolebindingsKind = v1alpha1.SchemeGroupVersion.WithKind("RoleBinding")
    -
    -// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any.
    -func (c *FakeRoleBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(rolebindingsResource, c.ns, name), &v1alpha1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.RoleBinding), err
    -}
    -
    -// List takes label and field selectors, and returns the list of RoleBindings that match those selectors.
    -func (c *FakeRoleBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.RoleBindingList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(rolebindingsResource, rolebindingsKind, c.ns, opts), &v1alpha1.RoleBindingList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.RoleBindingList{ListMeta: obj.(*v1alpha1.RoleBindingList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.RoleBindingList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roleBindings.
    -func (c *FakeRoleBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(rolebindingsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a roleBinding and creates it.  Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *FakeRoleBindings) Create(ctx context.Context, roleBinding *v1alpha1.RoleBinding, opts v1.CreateOptions) (result *v1alpha1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(rolebindingsResource, c.ns, roleBinding), &v1alpha1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.RoleBinding), err
    -}
    -
    -// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *FakeRoleBindings) Update(ctx context.Context, roleBinding *v1alpha1.RoleBinding, opts v1.UpdateOptions) (result *v1alpha1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(rolebindingsResource, c.ns, roleBinding), &v1alpha1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.RoleBinding), err
    -}
    -
    -// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs.
    -func (c *FakeRoleBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(rolebindingsResource, c.ns, name, opts), &v1alpha1.RoleBinding{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeRoleBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(rolebindingsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.RoleBindingList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched roleBinding.
    -func (c *FakeRoleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, name, pt, data, subresources...), &v1alpha1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.RoleBinding), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied roleBinding.
    -func (c *FakeRoleBindings) Apply(ctx context.Context, roleBinding *rbacv1alpha1.RoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.RoleBinding, err error) {
    -	if roleBinding == nil {
    -		return nil, fmt.Errorf("roleBinding provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(roleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := roleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("roleBinding.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, *name, types.ApplyPatchType, data), &v1alpha1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeRoleBindings(fake *FakeRbacV1alpha1, namespace string) typedrbacv1alpha1.RoleBindingInterface {
    +	return &fakeRoleBindings{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.RoleBinding, *v1alpha1.RoleBindingList, *rbacv1alpha1.RoleBindingApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1alpha1.SchemeGroupVersion.WithResource("rolebindings"),
    +			v1alpha1.SchemeGroupVersion.WithKind("RoleBinding"),
    +			func() *v1alpha1.RoleBinding { return &v1alpha1.RoleBinding{} },
    +			func() *v1alpha1.RoleBindingList { return &v1alpha1.RoleBindingList{} },
    +			func(dst, src *v1alpha1.RoleBindingList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.RoleBindingList) []*v1alpha1.RoleBinding {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.RoleBindingList, items []*v1alpha1.RoleBinding) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.RoleBinding), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go
    index cc5b309e909d..df46fc3aaade 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -100,10 +100,10 @@ func New(c rest.Interface) *RbacV1alpha1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1alpha1.SchemeGroupVersion
    +	gv := rbacv1alpha1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go
    index 43c16fde74f6..3a47f673e630 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    +	applyconfigurationsrbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // RolesGetter has a method to return a RoleInterface.
    @@ -41,168 +38,34 @@ type RolesGetter interface {
     
     // RoleInterface has methods to work with Role resources.
     type RoleInterface interface {
    -	Create(ctx context.Context, role *v1alpha1.Role, opts v1.CreateOptions) (*v1alpha1.Role, error)
    -	Update(ctx context.Context, role *v1alpha1.Role, opts v1.UpdateOptions) (*v1alpha1.Role, error)
    +	Create(ctx context.Context, role *rbacv1alpha1.Role, opts v1.CreateOptions) (*rbacv1alpha1.Role, error)
    +	Update(ctx context.Context, role *rbacv1alpha1.Role, opts v1.UpdateOptions) (*rbacv1alpha1.Role, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.Role, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.RoleList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*rbacv1alpha1.Role, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*rbacv1alpha1.RoleList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Role, err error)
    -	Apply(ctx context.Context, role *rbacv1alpha1.RoleApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.Role, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *rbacv1alpha1.Role, err error)
    +	Apply(ctx context.Context, role *applyconfigurationsrbacv1alpha1.RoleApplyConfiguration, opts v1.ApplyOptions) (result *rbacv1alpha1.Role, err error)
     	RoleExpansion
     }
     
     // roles implements RoleInterface
     type roles struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*rbacv1alpha1.Role, *rbacv1alpha1.RoleList, *applyconfigurationsrbacv1alpha1.RoleApplyConfiguration]
     }
     
     // newRoles returns a Roles
     func newRoles(c *RbacV1alpha1Client, namespace string) *roles {
     	return &roles{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*rbacv1alpha1.Role, *rbacv1alpha1.RoleList, *applyconfigurationsrbacv1alpha1.RoleApplyConfiguration](
    +			"roles",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *rbacv1alpha1.Role { return &rbacv1alpha1.Role{} },
    +			func() *rbacv1alpha1.RoleList { return &rbacv1alpha1.RoleList{} },
    +			gentype.PrefersProtobuf[*rbacv1alpha1.Role](),
    +		),
     	}
     }
    -
    -// Get takes name of the role, and returns the corresponding role object, and an error if there is any.
    -func (c *roles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.Role, err error) {
    -	result = &v1alpha1.Role{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Roles that match those selectors.
    -func (c *roles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.RoleList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.RoleList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roles.
    -func (c *roles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a role and creates it.  Returns the server's representation of the role, and an error, if there is any.
    -func (c *roles) Create(ctx context.Context, role *v1alpha1.Role, opts v1.CreateOptions) (result *v1alpha1.Role, err error) {
    -	result = &v1alpha1.Role{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(role).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any.
    -func (c *roles) Update(ctx context.Context, role *v1alpha1.Role, opts v1.UpdateOptions) (result *v1alpha1.Role, err error) {
    -	result = &v1alpha1.Role{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(role.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(role).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the role and deletes it. Returns an error if one occurs.
    -func (c *roles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *roles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched role.
    -func (c *roles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Role, err error) {
    -	result = &v1alpha1.Role{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied role.
    -func (c *roles) Apply(ctx context.Context, role *rbacv1alpha1.RoleApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.Role, err error) {
    -	if role == nil {
    -		return nil, fmt.Errorf("role provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(role)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := role.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("role.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.Role{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go
    index 3129c9b4e8a6..a6293171dace 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    +	applyconfigurationsrbacv1alpha1 "k8s.io/client-go/applyconfigurations/rbac/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // RoleBindingsGetter has a method to return a RoleBindingInterface.
    @@ -41,168 +38,34 @@ type RoleBindingsGetter interface {
     
     // RoleBindingInterface has methods to work with RoleBinding resources.
     type RoleBindingInterface interface {
    -	Create(ctx context.Context, roleBinding *v1alpha1.RoleBinding, opts v1.CreateOptions) (*v1alpha1.RoleBinding, error)
    -	Update(ctx context.Context, roleBinding *v1alpha1.RoleBinding, opts v1.UpdateOptions) (*v1alpha1.RoleBinding, error)
    +	Create(ctx context.Context, roleBinding *rbacv1alpha1.RoleBinding, opts v1.CreateOptions) (*rbacv1alpha1.RoleBinding, error)
    +	Update(ctx context.Context, roleBinding *rbacv1alpha1.RoleBinding, opts v1.UpdateOptions) (*rbacv1alpha1.RoleBinding, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.RoleBinding, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.RoleBindingList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*rbacv1alpha1.RoleBinding, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*rbacv1alpha1.RoleBindingList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.RoleBinding, err error)
    -	Apply(ctx context.Context, roleBinding *rbacv1alpha1.RoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.RoleBinding, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *rbacv1alpha1.RoleBinding, err error)
    +	Apply(ctx context.Context, roleBinding *applyconfigurationsrbacv1alpha1.RoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *rbacv1alpha1.RoleBinding, err error)
     	RoleBindingExpansion
     }
     
     // roleBindings implements RoleBindingInterface
     type roleBindings struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*rbacv1alpha1.RoleBinding, *rbacv1alpha1.RoleBindingList, *applyconfigurationsrbacv1alpha1.RoleBindingApplyConfiguration]
     }
     
     // newRoleBindings returns a RoleBindings
     func newRoleBindings(c *RbacV1alpha1Client, namespace string) *roleBindings {
     	return &roleBindings{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*rbacv1alpha1.RoleBinding, *rbacv1alpha1.RoleBindingList, *applyconfigurationsrbacv1alpha1.RoleBindingApplyConfiguration](
    +			"rolebindings",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *rbacv1alpha1.RoleBinding { return &rbacv1alpha1.RoleBinding{} },
    +			func() *rbacv1alpha1.RoleBindingList { return &rbacv1alpha1.RoleBindingList{} },
    +			gentype.PrefersProtobuf[*rbacv1alpha1.RoleBinding](),
    +		),
     	}
     }
    -
    -// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any.
    -func (c *roleBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.RoleBinding, err error) {
    -	result = &v1alpha1.RoleBinding{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of RoleBindings that match those selectors.
    -func (c *roleBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.RoleBindingList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.RoleBindingList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roleBindings.
    -func (c *roleBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a roleBinding and creates it.  Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *roleBindings) Create(ctx context.Context, roleBinding *v1alpha1.RoleBinding, opts v1.CreateOptions) (result *v1alpha1.RoleBinding, err error) {
    -	result = &v1alpha1.RoleBinding{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(roleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *roleBindings) Update(ctx context.Context, roleBinding *v1alpha1.RoleBinding, opts v1.UpdateOptions) (result *v1alpha1.RoleBinding, err error) {
    -	result = &v1alpha1.RoleBinding{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(roleBinding.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(roleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs.
    -func (c *roleBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *roleBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched roleBinding.
    -func (c *roleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.RoleBinding, err error) {
    -	result = &v1alpha1.RoleBinding{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied roleBinding.
    -func (c *roleBindings) Apply(ctx context.Context, roleBinding *rbacv1alpha1.RoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.RoleBinding, err error) {
    -	if roleBinding == nil {
    -		return nil, fmt.Errorf("roleBinding provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(roleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := roleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("roleBinding.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.RoleBinding{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go
    index a3d67f0315e0..92388f2f1102 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/rbac/v1beta1"
    +	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    +	applyconfigurationsrbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ClusterRolesGetter has a method to return a ClusterRoleInterface.
    @@ -41,157 +38,34 @@ type ClusterRolesGetter interface {
     
     // ClusterRoleInterface has methods to work with ClusterRole resources.
     type ClusterRoleInterface interface {
    -	Create(ctx context.Context, clusterRole *v1beta1.ClusterRole, opts v1.CreateOptions) (*v1beta1.ClusterRole, error)
    -	Update(ctx context.Context, clusterRole *v1beta1.ClusterRole, opts v1.UpdateOptions) (*v1beta1.ClusterRole, error)
    +	Create(ctx context.Context, clusterRole *rbacv1beta1.ClusterRole, opts v1.CreateOptions) (*rbacv1beta1.ClusterRole, error)
    +	Update(ctx context.Context, clusterRole *rbacv1beta1.ClusterRole, opts v1.UpdateOptions) (*rbacv1beta1.ClusterRole, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.ClusterRole, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ClusterRoleList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*rbacv1beta1.ClusterRole, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*rbacv1beta1.ClusterRoleList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ClusterRole, err error)
    -	Apply(ctx context.Context, clusterRole *rbacv1beta1.ClusterRoleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ClusterRole, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *rbacv1beta1.ClusterRole, err error)
    +	Apply(ctx context.Context, clusterRole *applyconfigurationsrbacv1beta1.ClusterRoleApplyConfiguration, opts v1.ApplyOptions) (result *rbacv1beta1.ClusterRole, err error)
     	ClusterRoleExpansion
     }
     
     // clusterRoles implements ClusterRoleInterface
     type clusterRoles struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*rbacv1beta1.ClusterRole, *rbacv1beta1.ClusterRoleList, *applyconfigurationsrbacv1beta1.ClusterRoleApplyConfiguration]
     }
     
     // newClusterRoles returns a ClusterRoles
     func newClusterRoles(c *RbacV1beta1Client) *clusterRoles {
     	return &clusterRoles{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*rbacv1beta1.ClusterRole, *rbacv1beta1.ClusterRoleList, *applyconfigurationsrbacv1beta1.ClusterRoleApplyConfiguration](
    +			"clusterroles",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *rbacv1beta1.ClusterRole { return &rbacv1beta1.ClusterRole{} },
    +			func() *rbacv1beta1.ClusterRoleList { return &rbacv1beta1.ClusterRoleList{} },
    +			gentype.PrefersProtobuf[*rbacv1beta1.ClusterRole](),
    +		),
     	}
     }
    -
    -// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any.
    -func (c *clusterRoles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ClusterRole, err error) {
    -	result = &v1beta1.ClusterRole{}
    -	err = c.client.Get().
    -		Resource("clusterroles").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors.
    -func (c *clusterRoles) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ClusterRoleList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.ClusterRoleList{}
    -	err = c.client.Get().
    -		Resource("clusterroles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoles.
    -func (c *clusterRoles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("clusterroles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a clusterRole and creates it.  Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *clusterRoles) Create(ctx context.Context, clusterRole *v1beta1.ClusterRole, opts v1.CreateOptions) (result *v1beta1.ClusterRole, err error) {
    -	result = &v1beta1.ClusterRole{}
    -	err = c.client.Post().
    -		Resource("clusterroles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRole).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *clusterRoles) Update(ctx context.Context, clusterRole *v1beta1.ClusterRole, opts v1.UpdateOptions) (result *v1beta1.ClusterRole, err error) {
    -	result = &v1beta1.ClusterRole{}
    -	err = c.client.Put().
    -		Resource("clusterroles").
    -		Name(clusterRole.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRole).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs.
    -func (c *clusterRoles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("clusterroles").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *clusterRoles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("clusterroles").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched clusterRole.
    -func (c *clusterRoles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ClusterRole, err error) {
    -	result = &v1beta1.ClusterRole{}
    -	err = c.client.Patch(pt).
    -		Resource("clusterroles").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRole.
    -func (c *clusterRoles) Apply(ctx context.Context, clusterRole *rbacv1beta1.ClusterRoleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ClusterRole, err error) {
    -	if clusterRole == nil {
    -		return nil, fmt.Errorf("clusterRole provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(clusterRole)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRole.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRole.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.ClusterRole{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("clusterroles").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go
    index ae39cbb9ae6a..beb50f7b7108 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/rbac/v1beta1"
    +	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    +	applyconfigurationsrbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // ClusterRoleBindingsGetter has a method to return a ClusterRoleBindingInterface.
    @@ -41,157 +38,34 @@ type ClusterRoleBindingsGetter interface {
     
     // ClusterRoleBindingInterface has methods to work with ClusterRoleBinding resources.
     type ClusterRoleBindingInterface interface {
    -	Create(ctx context.Context, clusterRoleBinding *v1beta1.ClusterRoleBinding, opts v1.CreateOptions) (*v1beta1.ClusterRoleBinding, error)
    -	Update(ctx context.Context, clusterRoleBinding *v1beta1.ClusterRoleBinding, opts v1.UpdateOptions) (*v1beta1.ClusterRoleBinding, error)
    +	Create(ctx context.Context, clusterRoleBinding *rbacv1beta1.ClusterRoleBinding, opts v1.CreateOptions) (*rbacv1beta1.ClusterRoleBinding, error)
    +	Update(ctx context.Context, clusterRoleBinding *rbacv1beta1.ClusterRoleBinding, opts v1.UpdateOptions) (*rbacv1beta1.ClusterRoleBinding, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.ClusterRoleBinding, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ClusterRoleBindingList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*rbacv1beta1.ClusterRoleBinding, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*rbacv1beta1.ClusterRoleBindingList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ClusterRoleBinding, err error)
    -	Apply(ctx context.Context, clusterRoleBinding *rbacv1beta1.ClusterRoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ClusterRoleBinding, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *rbacv1beta1.ClusterRoleBinding, err error)
    +	Apply(ctx context.Context, clusterRoleBinding *applyconfigurationsrbacv1beta1.ClusterRoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *rbacv1beta1.ClusterRoleBinding, err error)
     	ClusterRoleBindingExpansion
     }
     
     // clusterRoleBindings implements ClusterRoleBindingInterface
     type clusterRoleBindings struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*rbacv1beta1.ClusterRoleBinding, *rbacv1beta1.ClusterRoleBindingList, *applyconfigurationsrbacv1beta1.ClusterRoleBindingApplyConfiguration]
     }
     
     // newClusterRoleBindings returns a ClusterRoleBindings
     func newClusterRoleBindings(c *RbacV1beta1Client) *clusterRoleBindings {
     	return &clusterRoleBindings{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*rbacv1beta1.ClusterRoleBinding, *rbacv1beta1.ClusterRoleBindingList, *applyconfigurationsrbacv1beta1.ClusterRoleBindingApplyConfiguration](
    +			"clusterrolebindings",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *rbacv1beta1.ClusterRoleBinding { return &rbacv1beta1.ClusterRoleBinding{} },
    +			func() *rbacv1beta1.ClusterRoleBindingList { return &rbacv1beta1.ClusterRoleBindingList{} },
    +			gentype.PrefersProtobuf[*rbacv1beta1.ClusterRoleBinding](),
    +		),
     	}
     }
    -
    -// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any.
    -func (c *clusterRoleBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ClusterRoleBinding, err error) {
    -	result = &v1beta1.ClusterRoleBinding{}
    -	err = c.client.Get().
    -		Resource("clusterrolebindings").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors.
    -func (c *clusterRoleBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ClusterRoleBindingList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.ClusterRoleBindingList{}
    -	err = c.client.Get().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoleBindings.
    -func (c *clusterRoleBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a clusterRoleBinding and creates it.  Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *clusterRoleBindings) Create(ctx context.Context, clusterRoleBinding *v1beta1.ClusterRoleBinding, opts v1.CreateOptions) (result *v1beta1.ClusterRoleBinding, err error) {
    -	result = &v1beta1.ClusterRoleBinding{}
    -	err = c.client.Post().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRoleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *clusterRoleBindings) Update(ctx context.Context, clusterRoleBinding *v1beta1.ClusterRoleBinding, opts v1.UpdateOptions) (result *v1beta1.ClusterRoleBinding, err error) {
    -	result = &v1beta1.ClusterRoleBinding{}
    -	err = c.client.Put().
    -		Resource("clusterrolebindings").
    -		Name(clusterRoleBinding.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(clusterRoleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs.
    -func (c *clusterRoleBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("clusterrolebindings").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *clusterRoleBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("clusterrolebindings").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched clusterRoleBinding.
    -func (c *clusterRoleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ClusterRoleBinding, err error) {
    -	result = &v1beta1.ClusterRoleBinding{}
    -	err = c.client.Patch(pt).
    -		Resource("clusterrolebindings").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRoleBinding.
    -func (c *clusterRoleBindings) Apply(ctx context.Context, clusterRoleBinding *rbacv1beta1.ClusterRoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ClusterRoleBinding, err error) {
    -	if clusterRoleBinding == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(clusterRoleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRoleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.ClusterRoleBinding{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("clusterrolebindings").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go
    index 2a94a4315eb2..55314691aed6 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go
    @@ -19,127 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/rbac/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1"
     )
     
    -// FakeClusterRoles implements ClusterRoleInterface
    -type FakeClusterRoles struct {
    +// fakeClusterRoles implements ClusterRoleInterface
    +type fakeClusterRoles struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ClusterRole, *v1beta1.ClusterRoleList, *rbacv1beta1.ClusterRoleApplyConfiguration]
     	Fake *FakeRbacV1beta1
     }
     
    -var clusterrolesResource = v1beta1.SchemeGroupVersion.WithResource("clusterroles")
    -
    -var clusterrolesKind = v1beta1.SchemeGroupVersion.WithKind("ClusterRole")
    -
    -// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any.
    -func (c *FakeClusterRoles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(clusterrolesResource, name), &v1beta1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ClusterRole), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors.
    -func (c *FakeClusterRoles) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ClusterRoleList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(clusterrolesResource, clusterrolesKind, opts), &v1beta1.ClusterRoleList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.ClusterRoleList{ListMeta: obj.(*v1beta1.ClusterRoleList).ListMeta}
    -	for _, item := range obj.(*v1beta1.ClusterRoleList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoles.
    -func (c *FakeClusterRoles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(clusterrolesResource, opts))
    -}
    -
    -// Create takes the representation of a clusterRole and creates it.  Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *FakeClusterRoles) Create(ctx context.Context, clusterRole *v1beta1.ClusterRole, opts v1.CreateOptions) (result *v1beta1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(clusterrolesResource, clusterRole), &v1beta1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ClusterRole), err
    -}
    -
    -// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any.
    -func (c *FakeClusterRoles) Update(ctx context.Context, clusterRole *v1beta1.ClusterRole, opts v1.UpdateOptions) (result *v1beta1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(clusterrolesResource, clusterRole), &v1beta1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ClusterRole), err
    -}
    -
    -// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs.
    -func (c *FakeClusterRoles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(clusterrolesResource, name, opts), &v1beta1.ClusterRole{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeClusterRoles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(clusterrolesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.ClusterRoleList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched clusterRole.
    -func (c *FakeClusterRoles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ClusterRole, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, name, pt, data, subresources...), &v1beta1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ClusterRole), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRole.
    -func (c *FakeClusterRoles) Apply(ctx context.Context, clusterRole *rbacv1beta1.ClusterRoleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ClusterRole, err error) {
    -	if clusterRole == nil {
    -		return nil, fmt.Errorf("clusterRole provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(clusterRole)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRole.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRole.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, *name, types.ApplyPatchType, data), &v1beta1.ClusterRole{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeClusterRoles(fake *FakeRbacV1beta1) typedrbacv1beta1.ClusterRoleInterface {
    +	return &fakeClusterRoles{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ClusterRole, *v1beta1.ClusterRoleList, *rbacv1beta1.ClusterRoleApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("clusterroles"),
    +			v1beta1.SchemeGroupVersion.WithKind("ClusterRole"),
    +			func() *v1beta1.ClusterRole { return &v1beta1.ClusterRole{} },
    +			func() *v1beta1.ClusterRoleList { return &v1beta1.ClusterRoleList{} },
    +			func(dst, src *v1beta1.ClusterRoleList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ClusterRoleList) []*v1beta1.ClusterRole { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.ClusterRoleList, items []*v1beta1.ClusterRole) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.ClusterRole), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go
    index c9fd7c0cdd00..63c19456739c 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/rbac/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1"
     )
     
    -// FakeClusterRoleBindings implements ClusterRoleBindingInterface
    -type FakeClusterRoleBindings struct {
    +// fakeClusterRoleBindings implements ClusterRoleBindingInterface
    +type fakeClusterRoleBindings struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ClusterRoleBinding, *v1beta1.ClusterRoleBindingList, *rbacv1beta1.ClusterRoleBindingApplyConfiguration]
     	Fake *FakeRbacV1beta1
     }
     
    -var clusterrolebindingsResource = v1beta1.SchemeGroupVersion.WithResource("clusterrolebindings")
    -
    -var clusterrolebindingsKind = v1beta1.SchemeGroupVersion.WithKind("ClusterRoleBinding")
    -
    -// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any.
    -func (c *FakeClusterRoleBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(clusterrolebindingsResource, name), &v1beta1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ClusterRoleBinding), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors.
    -func (c *FakeClusterRoleBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ClusterRoleBindingList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(clusterrolebindingsResource, clusterrolebindingsKind, opts), &v1beta1.ClusterRoleBindingList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.ClusterRoleBindingList{ListMeta: obj.(*v1beta1.ClusterRoleBindingList).ListMeta}
    -	for _, item := range obj.(*v1beta1.ClusterRoleBindingList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested clusterRoleBindings.
    -func (c *FakeClusterRoleBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(clusterrolebindingsResource, opts))
    -}
    -
    -// Create takes the representation of a clusterRoleBinding and creates it.  Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *FakeClusterRoleBindings) Create(ctx context.Context, clusterRoleBinding *v1beta1.ClusterRoleBinding, opts v1.CreateOptions) (result *v1beta1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(clusterrolebindingsResource, clusterRoleBinding), &v1beta1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ClusterRoleBinding), err
    -}
    -
    -// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any.
    -func (c *FakeClusterRoleBindings) Update(ctx context.Context, clusterRoleBinding *v1beta1.ClusterRoleBinding, opts v1.UpdateOptions) (result *v1beta1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(clusterrolebindingsResource, clusterRoleBinding), &v1beta1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ClusterRoleBinding), err
    -}
    -
    -// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs.
    -func (c *FakeClusterRoleBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(clusterrolebindingsResource, name, opts), &v1beta1.ClusterRoleBinding{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeClusterRoleBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(clusterrolebindingsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.ClusterRoleBindingList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched clusterRoleBinding.
    -func (c *FakeClusterRoleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ClusterRoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, name, pt, data, subresources...), &v1beta1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.ClusterRoleBinding), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied clusterRoleBinding.
    -func (c *FakeClusterRoleBindings) Apply(ctx context.Context, clusterRoleBinding *rbacv1beta1.ClusterRoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.ClusterRoleBinding, err error) {
    -	if clusterRoleBinding == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(clusterRoleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := clusterRoleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("clusterRoleBinding.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, *name, types.ApplyPatchType, data), &v1beta1.ClusterRoleBinding{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeClusterRoleBindings(fake *FakeRbacV1beta1) typedrbacv1beta1.ClusterRoleBindingInterface {
    +	return &fakeClusterRoleBindings{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ClusterRoleBinding, *v1beta1.ClusterRoleBindingList, *rbacv1beta1.ClusterRoleBindingApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("clusterrolebindings"),
    +			v1beta1.SchemeGroupVersion.WithKind("ClusterRoleBinding"),
    +			func() *v1beta1.ClusterRoleBinding { return &v1beta1.ClusterRoleBinding{} },
    +			func() *v1beta1.ClusterRoleBindingList { return &v1beta1.ClusterRoleBindingList{} },
    +			func(dst, src *v1beta1.ClusterRoleBindingList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ClusterRoleBindingList) []*v1beta1.ClusterRoleBinding {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.ClusterRoleBindingList, items []*v1beta1.ClusterRoleBinding) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.ClusterRoleBinding), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go
    index bdbc246b7aa7..7cfbbe6197de 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go
    @@ -29,19 +29,19 @@ type FakeRbacV1beta1 struct {
     }
     
     func (c *FakeRbacV1beta1) ClusterRoles() v1beta1.ClusterRoleInterface {
    -	return &FakeClusterRoles{c}
    +	return newFakeClusterRoles(c)
     }
     
     func (c *FakeRbacV1beta1) ClusterRoleBindings() v1beta1.ClusterRoleBindingInterface {
    -	return &FakeClusterRoleBindings{c}
    +	return newFakeClusterRoleBindings(c)
     }
     
     func (c *FakeRbacV1beta1) Roles(namespace string) v1beta1.RoleInterface {
    -	return &FakeRoles{c, namespace}
    +	return newFakeRoles(c, namespace)
     }
     
     func (c *FakeRbacV1beta1) RoleBindings(namespace string) v1beta1.RoleBindingInterface {
    -	return &FakeRoleBindings{c, namespace}
    +	return newFakeRoleBindings(c, namespace)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go
    index 4158cf1d55ab..44367168c394 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go
    @@ -19,136 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/rbac/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1"
     )
     
    -// FakeRoles implements RoleInterface
    -type FakeRoles struct {
    +// fakeRoles implements RoleInterface
    +type fakeRoles struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.Role, *v1beta1.RoleList, *rbacv1beta1.RoleApplyConfiguration]
     	Fake *FakeRbacV1beta1
    -	ns   string
    -}
    -
    -var rolesResource = v1beta1.SchemeGroupVersion.WithResource("roles")
    -
    -var rolesKind = v1beta1.SchemeGroupVersion.WithKind("Role")
    -
    -// Get takes name of the role, and returns the corresponding role object, and an error if there is any.
    -func (c *FakeRoles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(rolesResource, c.ns, name), &v1beta1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Role), err
    -}
    -
    -// List takes label and field selectors, and returns the list of Roles that match those selectors.
    -func (c *FakeRoles) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.RoleList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(rolesResource, rolesKind, c.ns, opts), &v1beta1.RoleList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.RoleList{ListMeta: obj.(*v1beta1.RoleList).ListMeta}
    -	for _, item := range obj.(*v1beta1.RoleList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roles.
    -func (c *FakeRoles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(rolesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a role and creates it.  Returns the server's representation of the role, and an error, if there is any.
    -func (c *FakeRoles) Create(ctx context.Context, role *v1beta1.Role, opts v1.CreateOptions) (result *v1beta1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(rolesResource, c.ns, role), &v1beta1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Role), err
    -}
    -
    -// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any.
    -func (c *FakeRoles) Update(ctx context.Context, role *v1beta1.Role, opts v1.UpdateOptions) (result *v1beta1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(rolesResource, c.ns, role), &v1beta1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Role), err
    -}
    -
    -// Delete takes name of the role and deletes it. Returns an error if one occurs.
    -func (c *FakeRoles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(rolesResource, c.ns, name, opts), &v1beta1.Role{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeRoles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(rolesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.RoleList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched role.
    -func (c *FakeRoles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Role, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, name, pt, data, subresources...), &v1beta1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.Role), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied role.
    -func (c *FakeRoles) Apply(ctx context.Context, role *rbacv1beta1.RoleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Role, err error) {
    -	if role == nil {
    -		return nil, fmt.Errorf("role provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(role)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := role.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("role.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.Role{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeRoles(fake *FakeRbacV1beta1, namespace string) typedrbacv1beta1.RoleInterface {
    +	return &fakeRoles{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.Role, *v1beta1.RoleList, *rbacv1beta1.RoleApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("roles"),
    +			v1beta1.SchemeGroupVersion.WithKind("Role"),
    +			func() *v1beta1.Role { return &v1beta1.Role{} },
    +			func() *v1beta1.RoleList { return &v1beta1.RoleList{} },
    +			func(dst, src *v1beta1.RoleList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.RoleList) []*v1beta1.Role { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.RoleList, items []*v1beta1.Role) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.Role), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go
    index 4616f0fd10e9..c42560b1db94 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go
    @@ -19,136 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/rbac/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	rbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedrbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1"
     )
     
    -// FakeRoleBindings implements RoleBindingInterface
    -type FakeRoleBindings struct {
    +// fakeRoleBindings implements RoleBindingInterface
    +type fakeRoleBindings struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.RoleBinding, *v1beta1.RoleBindingList, *rbacv1beta1.RoleBindingApplyConfiguration]
     	Fake *FakeRbacV1beta1
    -	ns   string
    -}
    -
    -var rolebindingsResource = v1beta1.SchemeGroupVersion.WithResource("rolebindings")
    -
    -var rolebindingsKind = v1beta1.SchemeGroupVersion.WithKind("RoleBinding")
    -
    -// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any.
    -func (c *FakeRoleBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(rolebindingsResource, c.ns, name), &v1beta1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.RoleBinding), err
    -}
    -
    -// List takes label and field selectors, and returns the list of RoleBindings that match those selectors.
    -func (c *FakeRoleBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.RoleBindingList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(rolebindingsResource, rolebindingsKind, c.ns, opts), &v1beta1.RoleBindingList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.RoleBindingList{ListMeta: obj.(*v1beta1.RoleBindingList).ListMeta}
    -	for _, item := range obj.(*v1beta1.RoleBindingList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roleBindings.
    -func (c *FakeRoleBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(rolebindingsResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a roleBinding and creates it.  Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *FakeRoleBindings) Create(ctx context.Context, roleBinding *v1beta1.RoleBinding, opts v1.CreateOptions) (result *v1beta1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(rolebindingsResource, c.ns, roleBinding), &v1beta1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.RoleBinding), err
    -}
    -
    -// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *FakeRoleBindings) Update(ctx context.Context, roleBinding *v1beta1.RoleBinding, opts v1.UpdateOptions) (result *v1beta1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(rolebindingsResource, c.ns, roleBinding), &v1beta1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.RoleBinding), err
    -}
    -
    -// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs.
    -func (c *FakeRoleBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(rolebindingsResource, c.ns, name, opts), &v1beta1.RoleBinding{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeRoleBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(rolebindingsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.RoleBindingList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched roleBinding.
    -func (c *FakeRoleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.RoleBinding, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, name, pt, data, subresources...), &v1beta1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.RoleBinding), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied roleBinding.
    -func (c *FakeRoleBindings) Apply(ctx context.Context, roleBinding *rbacv1beta1.RoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.RoleBinding, err error) {
    -	if roleBinding == nil {
    -		return nil, fmt.Errorf("roleBinding provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(roleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := roleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("roleBinding.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.RoleBinding{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeRoleBindings(fake *FakeRbacV1beta1, namespace string) typedrbacv1beta1.RoleBindingInterface {
    +	return &fakeRoleBindings{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.RoleBinding, *v1beta1.RoleBindingList, *rbacv1beta1.RoleBindingApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("rolebindings"),
    +			v1beta1.SchemeGroupVersion.WithKind("RoleBinding"),
    +			func() *v1beta1.RoleBinding { return &v1beta1.RoleBinding{} },
    +			func() *v1beta1.RoleBindingList { return &v1beta1.RoleBindingList{} },
    +			func(dst, src *v1beta1.RoleBindingList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.RoleBindingList) []*v1beta1.RoleBinding { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.RoleBindingList, items []*v1beta1.RoleBinding) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.RoleBinding), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go
    index 8dac5c1d4bae..5739bb289e08 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/rbac/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -100,10 +100,10 @@ func New(c rest.Interface) *RbacV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := rbacv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go
    index e789e42fe76a..700fc6d22bf7 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/rbac/v1beta1"
    +	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    +	applyconfigurationsrbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // RolesGetter has a method to return a RoleInterface.
    @@ -41,168 +38,34 @@ type RolesGetter interface {
     
     // RoleInterface has methods to work with Role resources.
     type RoleInterface interface {
    -	Create(ctx context.Context, role *v1beta1.Role, opts v1.CreateOptions) (*v1beta1.Role, error)
    -	Update(ctx context.Context, role *v1beta1.Role, opts v1.UpdateOptions) (*v1beta1.Role, error)
    +	Create(ctx context.Context, role *rbacv1beta1.Role, opts v1.CreateOptions) (*rbacv1beta1.Role, error)
    +	Update(ctx context.Context, role *rbacv1beta1.Role, opts v1.UpdateOptions) (*rbacv1beta1.Role, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.Role, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.RoleList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*rbacv1beta1.Role, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*rbacv1beta1.RoleList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Role, err error)
    -	Apply(ctx context.Context, role *rbacv1beta1.RoleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Role, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *rbacv1beta1.Role, err error)
    +	Apply(ctx context.Context, role *applyconfigurationsrbacv1beta1.RoleApplyConfiguration, opts v1.ApplyOptions) (result *rbacv1beta1.Role, err error)
     	RoleExpansion
     }
     
     // roles implements RoleInterface
     type roles struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*rbacv1beta1.Role, *rbacv1beta1.RoleList, *applyconfigurationsrbacv1beta1.RoleApplyConfiguration]
     }
     
     // newRoles returns a Roles
     func newRoles(c *RbacV1beta1Client, namespace string) *roles {
     	return &roles{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*rbacv1beta1.Role, *rbacv1beta1.RoleList, *applyconfigurationsrbacv1beta1.RoleApplyConfiguration](
    +			"roles",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *rbacv1beta1.Role { return &rbacv1beta1.Role{} },
    +			func() *rbacv1beta1.RoleList { return &rbacv1beta1.RoleList{} },
    +			gentype.PrefersProtobuf[*rbacv1beta1.Role](),
    +		),
     	}
     }
    -
    -// Get takes name of the role, and returns the corresponding role object, and an error if there is any.
    -func (c *roles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Role, err error) {
    -	result = &v1beta1.Role{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of Roles that match those selectors.
    -func (c *roles) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.RoleList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.RoleList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roles.
    -func (c *roles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a role and creates it.  Returns the server's representation of the role, and an error, if there is any.
    -func (c *roles) Create(ctx context.Context, role *v1beta1.Role, opts v1.CreateOptions) (result *v1beta1.Role, err error) {
    -	result = &v1beta1.Role{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(role).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any.
    -func (c *roles) Update(ctx context.Context, role *v1beta1.Role, opts v1.UpdateOptions) (result *v1beta1.Role, err error) {
    -	result = &v1beta1.Role{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(role.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(role).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the role and deletes it. Returns an error if one occurs.
    -func (c *roles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *roles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("roles").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched role.
    -func (c *roles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Role, err error) {
    -	result = &v1beta1.Role{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied role.
    -func (c *roles) Apply(ctx context.Context, role *rbacv1beta1.RoleApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.Role, err error) {
    -	if role == nil {
    -		return nil, fmt.Errorf("role provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(role)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := role.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("role.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.Role{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("roles").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go
    index 1461ba3b6ebb..0f423a0d9eb0 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/rbac/v1beta1"
    +	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	rbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    +	applyconfigurationsrbacv1beta1 "k8s.io/client-go/applyconfigurations/rbac/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // RoleBindingsGetter has a method to return a RoleBindingInterface.
    @@ -41,168 +38,34 @@ type RoleBindingsGetter interface {
     
     // RoleBindingInterface has methods to work with RoleBinding resources.
     type RoleBindingInterface interface {
    -	Create(ctx context.Context, roleBinding *v1beta1.RoleBinding, opts v1.CreateOptions) (*v1beta1.RoleBinding, error)
    -	Update(ctx context.Context, roleBinding *v1beta1.RoleBinding, opts v1.UpdateOptions) (*v1beta1.RoleBinding, error)
    +	Create(ctx context.Context, roleBinding *rbacv1beta1.RoleBinding, opts v1.CreateOptions) (*rbacv1beta1.RoleBinding, error)
    +	Update(ctx context.Context, roleBinding *rbacv1beta1.RoleBinding, opts v1.UpdateOptions) (*rbacv1beta1.RoleBinding, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.RoleBinding, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.RoleBindingList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*rbacv1beta1.RoleBinding, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*rbacv1beta1.RoleBindingList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.RoleBinding, err error)
    -	Apply(ctx context.Context, roleBinding *rbacv1beta1.RoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.RoleBinding, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *rbacv1beta1.RoleBinding, err error)
    +	Apply(ctx context.Context, roleBinding *applyconfigurationsrbacv1beta1.RoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *rbacv1beta1.RoleBinding, err error)
     	RoleBindingExpansion
     }
     
     // roleBindings implements RoleBindingInterface
     type roleBindings struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*rbacv1beta1.RoleBinding, *rbacv1beta1.RoleBindingList, *applyconfigurationsrbacv1beta1.RoleBindingApplyConfiguration]
     }
     
     // newRoleBindings returns a RoleBindings
     func newRoleBindings(c *RbacV1beta1Client, namespace string) *roleBindings {
     	return &roleBindings{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*rbacv1beta1.RoleBinding, *rbacv1beta1.RoleBindingList, *applyconfigurationsrbacv1beta1.RoleBindingApplyConfiguration](
    +			"rolebindings",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *rbacv1beta1.RoleBinding { return &rbacv1beta1.RoleBinding{} },
    +			func() *rbacv1beta1.RoleBindingList { return &rbacv1beta1.RoleBindingList{} },
    +			gentype.PrefersProtobuf[*rbacv1beta1.RoleBinding](),
    +		),
     	}
     }
    -
    -// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any.
    -func (c *roleBindings) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.RoleBinding, err error) {
    -	result = &v1beta1.RoleBinding{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of RoleBindings that match those selectors.
    -func (c *roleBindings) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.RoleBindingList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.RoleBindingList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested roleBindings.
    -func (c *roleBindings) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a roleBinding and creates it.  Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *roleBindings) Create(ctx context.Context, roleBinding *v1beta1.RoleBinding, opts v1.CreateOptions) (result *v1beta1.RoleBinding, err error) {
    -	result = &v1beta1.RoleBinding{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(roleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any.
    -func (c *roleBindings) Update(ctx context.Context, roleBinding *v1beta1.RoleBinding, opts v1.UpdateOptions) (result *v1beta1.RoleBinding, err error) {
    -	result = &v1beta1.RoleBinding{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(roleBinding.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(roleBinding).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs.
    -func (c *roleBindings) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *roleBindings) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched roleBinding.
    -func (c *roleBindings) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.RoleBinding, err error) {
    -	result = &v1beta1.RoleBinding{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied roleBinding.
    -func (c *roleBindings) Apply(ctx context.Context, roleBinding *rbacv1beta1.RoleBindingApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.RoleBinding, err error) {
    -	if roleBinding == nil {
    -		return nil, fmt.Errorf("roleBinding provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(roleBinding)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := roleBinding.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("roleBinding.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.RoleBinding{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("rolebindings").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_podschedulingcontext.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_podschedulingcontext.go
    deleted file mode 100644
    index 54882f8175a3..000000000000
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_podschedulingcontext.go
    +++ /dev/null
    @@ -1,189 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by client-gen. DO NOT EDIT.
    -
    -package fake
    -
    -import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
    -	resourcev1alpha2 "k8s.io/client-go/applyconfigurations/resource/v1alpha2"
    -	testing "k8s.io/client-go/testing"
    -)
    -
    -// FakePodSchedulingContexts implements PodSchedulingContextInterface
    -type FakePodSchedulingContexts struct {
    -	Fake *FakeResourceV1alpha2
    -	ns   string
    -}
    -
    -var podschedulingcontextsResource = v1alpha2.SchemeGroupVersion.WithResource("podschedulingcontexts")
    -
    -var podschedulingcontextsKind = v1alpha2.SchemeGroupVersion.WithKind("PodSchedulingContext")
    -
    -// Get takes name of the podSchedulingContext, and returns the corresponding podSchedulingContext object, and an error if there is any.
    -func (c *FakePodSchedulingContexts) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(podschedulingcontextsResource, c.ns, name), &v1alpha2.PodSchedulingContext{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.PodSchedulingContext), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PodSchedulingContexts that match those selectors.
    -func (c *FakePodSchedulingContexts) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha2.PodSchedulingContextList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(podschedulingcontextsResource, podschedulingcontextsKind, c.ns, opts), &v1alpha2.PodSchedulingContextList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha2.PodSchedulingContextList{ListMeta: obj.(*v1alpha2.PodSchedulingContextList).ListMeta}
    -	for _, item := range obj.(*v1alpha2.PodSchedulingContextList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested podSchedulingContexts.
    -func (c *FakePodSchedulingContexts) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(podschedulingcontextsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a podSchedulingContext and creates it.  Returns the server's representation of the podSchedulingContext, and an error, if there is any.
    -func (c *FakePodSchedulingContexts) Create(ctx context.Context, podSchedulingContext *v1alpha2.PodSchedulingContext, opts v1.CreateOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(podschedulingcontextsResource, c.ns, podSchedulingContext), &v1alpha2.PodSchedulingContext{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.PodSchedulingContext), err
    -}
    -
    -// Update takes the representation of a podSchedulingContext and updates it. Returns the server's representation of the podSchedulingContext, and an error, if there is any.
    -func (c *FakePodSchedulingContexts) Update(ctx context.Context, podSchedulingContext *v1alpha2.PodSchedulingContext, opts v1.UpdateOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(podschedulingcontextsResource, c.ns, podSchedulingContext), &v1alpha2.PodSchedulingContext{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.PodSchedulingContext), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakePodSchedulingContexts) UpdateStatus(ctx context.Context, podSchedulingContext *v1alpha2.PodSchedulingContext, opts v1.UpdateOptions) (*v1alpha2.PodSchedulingContext, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(podschedulingcontextsResource, "status", c.ns, podSchedulingContext), &v1alpha2.PodSchedulingContext{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.PodSchedulingContext), err
    -}
    -
    -// Delete takes name of the podSchedulingContext and deletes it. Returns an error if one occurs.
    -func (c *FakePodSchedulingContexts) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(podschedulingcontextsResource, c.ns, name, opts), &v1alpha2.PodSchedulingContext{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePodSchedulingContexts) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(podschedulingcontextsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha2.PodSchedulingContextList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched podSchedulingContext.
    -func (c *FakePodSchedulingContexts) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.PodSchedulingContext, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(podschedulingcontextsResource, c.ns, name, pt, data, subresources...), &v1alpha2.PodSchedulingContext{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.PodSchedulingContext), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied podSchedulingContext.
    -func (c *FakePodSchedulingContexts) Apply(ctx context.Context, podSchedulingContext *resourcev1alpha2.PodSchedulingContextApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	if podSchedulingContext == nil {
    -		return nil, fmt.Errorf("podSchedulingContext provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(podSchedulingContext)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podSchedulingContext.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podSchedulingContext.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(podschedulingcontextsResource, c.ns, *name, types.ApplyPatchType, data), &v1alpha2.PodSchedulingContext{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.PodSchedulingContext), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakePodSchedulingContexts) ApplyStatus(ctx context.Context, podSchedulingContext *resourcev1alpha2.PodSchedulingContextApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	if podSchedulingContext == nil {
    -		return nil, fmt.Errorf("podSchedulingContext provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(podSchedulingContext)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podSchedulingContext.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podSchedulingContext.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(podschedulingcontextsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1alpha2.PodSchedulingContext{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.PodSchedulingContext), err
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclaim.go
    deleted file mode 100644
    index 087e51f7144a..000000000000
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclaim.go
    +++ /dev/null
    @@ -1,189 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by client-gen. DO NOT EDIT.
    -
    -package fake
    -
    -import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
    -	resourcev1alpha2 "k8s.io/client-go/applyconfigurations/resource/v1alpha2"
    -	testing "k8s.io/client-go/testing"
    -)
    -
    -// FakeResourceClaims implements ResourceClaimInterface
    -type FakeResourceClaims struct {
    -	Fake *FakeResourceV1alpha2
    -	ns   string
    -}
    -
    -var resourceclaimsResource = v1alpha2.SchemeGroupVersion.WithResource("resourceclaims")
    -
    -var resourceclaimsKind = v1alpha2.SchemeGroupVersion.WithKind("ResourceClaim")
    -
    -// Get takes name of the resourceClaim, and returns the corresponding resourceClaim object, and an error if there is any.
    -func (c *FakeResourceClaims) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(resourceclaimsResource, c.ns, name), &v1alpha2.ResourceClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaim), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ResourceClaims that match those selectors.
    -func (c *FakeResourceClaims) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha2.ResourceClaimList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(resourceclaimsResource, resourceclaimsKind, c.ns, opts), &v1alpha2.ResourceClaimList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha2.ResourceClaimList{ListMeta: obj.(*v1alpha2.ResourceClaimList).ListMeta}
    -	for _, item := range obj.(*v1alpha2.ResourceClaimList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested resourceClaims.
    -func (c *FakeResourceClaims) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(resourceclaimsResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a resourceClaim and creates it.  Returns the server's representation of the resourceClaim, and an error, if there is any.
    -func (c *FakeResourceClaims) Create(ctx context.Context, resourceClaim *v1alpha2.ResourceClaim, opts v1.CreateOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(resourceclaimsResource, c.ns, resourceClaim), &v1alpha2.ResourceClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaim), err
    -}
    -
    -// Update takes the representation of a resourceClaim and updates it. Returns the server's representation of the resourceClaim, and an error, if there is any.
    -func (c *FakeResourceClaims) Update(ctx context.Context, resourceClaim *v1alpha2.ResourceClaim, opts v1.UpdateOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(resourceclaimsResource, c.ns, resourceClaim), &v1alpha2.ResourceClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaim), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeResourceClaims) UpdateStatus(ctx context.Context, resourceClaim *v1alpha2.ResourceClaim, opts v1.UpdateOptions) (*v1alpha2.ResourceClaim, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateSubresourceAction(resourceclaimsResource, "status", c.ns, resourceClaim), &v1alpha2.ResourceClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaim), err
    -}
    -
    -// Delete takes name of the resourceClaim and deletes it. Returns an error if one occurs.
    -func (c *FakeResourceClaims) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(resourceclaimsResource, c.ns, name, opts), &v1alpha2.ResourceClaim{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeResourceClaims) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(resourceclaimsResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha2.ResourceClaimList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched resourceClaim.
    -func (c *FakeResourceClaims) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.ResourceClaim, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(resourceclaimsResource, c.ns, name, pt, data, subresources...), &v1alpha2.ResourceClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaim), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied resourceClaim.
    -func (c *FakeResourceClaims) Apply(ctx context.Context, resourceClaim *resourcev1alpha2.ResourceClaimApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	if resourceClaim == nil {
    -		return nil, fmt.Errorf("resourceClaim provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(resourceClaim)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := resourceClaim.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceClaim.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(resourceclaimsResource, c.ns, *name, types.ApplyPatchType, data), &v1alpha2.ResourceClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaim), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeResourceClaims) ApplyStatus(ctx context.Context, resourceClaim *resourcev1alpha2.ResourceClaimApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	if resourceClaim == nil {
    -		return nil, fmt.Errorf("resourceClaim provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(resourceClaim)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := resourceClaim.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceClaim.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(resourceclaimsResource, c.ns, *name, types.ApplyPatchType, data, "status"), &v1alpha2.ResourceClaim{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaim), err
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclaimtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclaimtemplate.go
    deleted file mode 100644
    index 2a1b4554ebe2..000000000000
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclaimtemplate.go
    +++ /dev/null
    @@ -1,154 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by client-gen. DO NOT EDIT.
    -
    -package fake
    -
    -import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
    -	resourcev1alpha2 "k8s.io/client-go/applyconfigurations/resource/v1alpha2"
    -	testing "k8s.io/client-go/testing"
    -)
    -
    -// FakeResourceClaimTemplates implements ResourceClaimTemplateInterface
    -type FakeResourceClaimTemplates struct {
    -	Fake *FakeResourceV1alpha2
    -	ns   string
    -}
    -
    -var resourceclaimtemplatesResource = v1alpha2.SchemeGroupVersion.WithResource("resourceclaimtemplates")
    -
    -var resourceclaimtemplatesKind = v1alpha2.SchemeGroupVersion.WithKind("ResourceClaimTemplate")
    -
    -// Get takes name of the resourceClaimTemplate, and returns the corresponding resourceClaimTemplate object, and an error if there is any.
    -func (c *FakeResourceClaimTemplates) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha2.ResourceClaimTemplate, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(resourceclaimtemplatesResource, c.ns, name), &v1alpha2.ResourceClaimTemplate{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaimTemplate), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ResourceClaimTemplates that match those selectors.
    -func (c *FakeResourceClaimTemplates) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha2.ResourceClaimTemplateList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(resourceclaimtemplatesResource, resourceclaimtemplatesKind, c.ns, opts), &v1alpha2.ResourceClaimTemplateList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha2.ResourceClaimTemplateList{ListMeta: obj.(*v1alpha2.ResourceClaimTemplateList).ListMeta}
    -	for _, item := range obj.(*v1alpha2.ResourceClaimTemplateList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested resourceClaimTemplates.
    -func (c *FakeResourceClaimTemplates) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(resourceclaimtemplatesResource, c.ns, opts))
    -
    -}
    -
    -// Create takes the representation of a resourceClaimTemplate and creates it.  Returns the server's representation of the resourceClaimTemplate, and an error, if there is any.
    -func (c *FakeResourceClaimTemplates) Create(ctx context.Context, resourceClaimTemplate *v1alpha2.ResourceClaimTemplate, opts v1.CreateOptions) (result *v1alpha2.ResourceClaimTemplate, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(resourceclaimtemplatesResource, c.ns, resourceClaimTemplate), &v1alpha2.ResourceClaimTemplate{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaimTemplate), err
    -}
    -
    -// Update takes the representation of a resourceClaimTemplate and updates it. Returns the server's representation of the resourceClaimTemplate, and an error, if there is any.
    -func (c *FakeResourceClaimTemplates) Update(ctx context.Context, resourceClaimTemplate *v1alpha2.ResourceClaimTemplate, opts v1.UpdateOptions) (result *v1alpha2.ResourceClaimTemplate, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(resourceclaimtemplatesResource, c.ns, resourceClaimTemplate), &v1alpha2.ResourceClaimTemplate{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaimTemplate), err
    -}
    -
    -// Delete takes name of the resourceClaimTemplate and deletes it. Returns an error if one occurs.
    -func (c *FakeResourceClaimTemplates) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(resourceclaimtemplatesResource, c.ns, name, opts), &v1alpha2.ResourceClaimTemplate{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeResourceClaimTemplates) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(resourceclaimtemplatesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha2.ResourceClaimTemplateList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched resourceClaimTemplate.
    -func (c *FakeResourceClaimTemplates) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.ResourceClaimTemplate, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(resourceclaimtemplatesResource, c.ns, name, pt, data, subresources...), &v1alpha2.ResourceClaimTemplate{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaimTemplate), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied resourceClaimTemplate.
    -func (c *FakeResourceClaimTemplates) Apply(ctx context.Context, resourceClaimTemplate *resourcev1alpha2.ResourceClaimTemplateApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClaimTemplate, err error) {
    -	if resourceClaimTemplate == nil {
    -		return nil, fmt.Errorf("resourceClaimTemplate provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(resourceClaimTemplate)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := resourceClaimTemplate.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceClaimTemplate.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(resourceclaimtemplatesResource, c.ns, *name, types.ApplyPatchType, data), &v1alpha2.ResourceClaimTemplate{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClaimTemplate), err
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclass.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclass.go
    deleted file mode 100644
    index 4d247c5136ad..000000000000
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resourceclass.go
    +++ /dev/null
    @@ -1,145 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by client-gen. DO NOT EDIT.
    -
    -package fake
    -
    -import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
    -	resourcev1alpha2 "k8s.io/client-go/applyconfigurations/resource/v1alpha2"
    -	testing "k8s.io/client-go/testing"
    -)
    -
    -// FakeResourceClasses implements ResourceClassInterface
    -type FakeResourceClasses struct {
    -	Fake *FakeResourceV1alpha2
    -}
    -
    -var resourceclassesResource = v1alpha2.SchemeGroupVersion.WithResource("resourceclasses")
    -
    -var resourceclassesKind = v1alpha2.SchemeGroupVersion.WithKind("ResourceClass")
    -
    -// Get takes name of the resourceClass, and returns the corresponding resourceClass object, and an error if there is any.
    -func (c *FakeResourceClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha2.ResourceClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(resourceclassesResource, name), &v1alpha2.ResourceClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of ResourceClasses that match those selectors.
    -func (c *FakeResourceClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha2.ResourceClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(resourceclassesResource, resourceclassesKind, opts), &v1alpha2.ResourceClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha2.ResourceClassList{ListMeta: obj.(*v1alpha2.ResourceClassList).ListMeta}
    -	for _, item := range obj.(*v1alpha2.ResourceClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested resourceClasses.
    -func (c *FakeResourceClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(resourceclassesResource, opts))
    -}
    -
    -// Create takes the representation of a resourceClass and creates it.  Returns the server's representation of the resourceClass, and an error, if there is any.
    -func (c *FakeResourceClasses) Create(ctx context.Context, resourceClass *v1alpha2.ResourceClass, opts v1.CreateOptions) (result *v1alpha2.ResourceClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(resourceclassesResource, resourceClass), &v1alpha2.ResourceClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClass), err
    -}
    -
    -// Update takes the representation of a resourceClass and updates it. Returns the server's representation of the resourceClass, and an error, if there is any.
    -func (c *FakeResourceClasses) Update(ctx context.Context, resourceClass *v1alpha2.ResourceClass, opts v1.UpdateOptions) (result *v1alpha2.ResourceClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(resourceclassesResource, resourceClass), &v1alpha2.ResourceClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClass), err
    -}
    -
    -// Delete takes name of the resourceClass and deletes it. Returns an error if one occurs.
    -func (c *FakeResourceClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(resourceclassesResource, name, opts), &v1alpha2.ResourceClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeResourceClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(resourceclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha2.ResourceClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched resourceClass.
    -func (c *FakeResourceClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.ResourceClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(resourceclassesResource, name, pt, data, subresources...), &v1alpha2.ResourceClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied resourceClass.
    -func (c *FakeResourceClasses) Apply(ctx context.Context, resourceClass *resourcev1alpha2.ResourceClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClass, err error) {
    -	if resourceClass == nil {
    -		return nil, fmt.Errorf("resourceClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(resourceClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := resourceClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(resourceclassesResource, *name, types.ApplyPatchType, data), &v1alpha2.ResourceClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha2.ResourceClass), err
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/podschedulingcontext.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/podschedulingcontext.go
    deleted file mode 100644
    index 72e81a29e316..000000000000
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/podschedulingcontext.go
    +++ /dev/null
    @@ -1,256 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by client-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    -
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
    -	resourcev1alpha2 "k8s.io/client-go/applyconfigurations/resource/v1alpha2"
    -	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
    -)
    -
    -// PodSchedulingContextsGetter has a method to return a PodSchedulingContextInterface.
    -// A group's client should implement this interface.
    -type PodSchedulingContextsGetter interface {
    -	PodSchedulingContexts(namespace string) PodSchedulingContextInterface
    -}
    -
    -// PodSchedulingContextInterface has methods to work with PodSchedulingContext resources.
    -type PodSchedulingContextInterface interface {
    -	Create(ctx context.Context, podSchedulingContext *v1alpha2.PodSchedulingContext, opts v1.CreateOptions) (*v1alpha2.PodSchedulingContext, error)
    -	Update(ctx context.Context, podSchedulingContext *v1alpha2.PodSchedulingContext, opts v1.UpdateOptions) (*v1alpha2.PodSchedulingContext, error)
    -	UpdateStatus(ctx context.Context, podSchedulingContext *v1alpha2.PodSchedulingContext, opts v1.UpdateOptions) (*v1alpha2.PodSchedulingContext, error)
    -	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    -	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha2.PodSchedulingContext, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha2.PodSchedulingContextList, error)
    -	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.PodSchedulingContext, err error)
    -	Apply(ctx context.Context, podSchedulingContext *resourcev1alpha2.PodSchedulingContextApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.PodSchedulingContext, err error)
    -	ApplyStatus(ctx context.Context, podSchedulingContext *resourcev1alpha2.PodSchedulingContextApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.PodSchedulingContext, err error)
    -	PodSchedulingContextExpansion
    -}
    -
    -// podSchedulingContexts implements PodSchedulingContextInterface
    -type podSchedulingContexts struct {
    -	client rest.Interface
    -	ns     string
    -}
    -
    -// newPodSchedulingContexts returns a PodSchedulingContexts
    -func newPodSchedulingContexts(c *ResourceV1alpha2Client, namespace string) *podSchedulingContexts {
    -	return &podSchedulingContexts{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    -	}
    -}
    -
    -// Get takes name of the podSchedulingContext, and returns the corresponding podSchedulingContext object, and an error if there is any.
    -func (c *podSchedulingContexts) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	result = &v1alpha2.PodSchedulingContext{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PodSchedulingContexts that match those selectors.
    -func (c *podSchedulingContexts) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha2.PodSchedulingContextList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha2.PodSchedulingContextList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested podSchedulingContexts.
    -func (c *podSchedulingContexts) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a podSchedulingContext and creates it.  Returns the server's representation of the podSchedulingContext, and an error, if there is any.
    -func (c *podSchedulingContexts) Create(ctx context.Context, podSchedulingContext *v1alpha2.PodSchedulingContext, opts v1.CreateOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	result = &v1alpha2.PodSchedulingContext{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podSchedulingContext).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a podSchedulingContext and updates it. Returns the server's representation of the podSchedulingContext, and an error, if there is any.
    -func (c *podSchedulingContexts) Update(ctx context.Context, podSchedulingContext *v1alpha2.PodSchedulingContext, opts v1.UpdateOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	result = &v1alpha2.PodSchedulingContext{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		Name(podSchedulingContext.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podSchedulingContext).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *podSchedulingContexts) UpdateStatus(ctx context.Context, podSchedulingContext *v1alpha2.PodSchedulingContext, opts v1.UpdateOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	result = &v1alpha2.PodSchedulingContext{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		Name(podSchedulingContext.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(podSchedulingContext).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the podSchedulingContext and deletes it. Returns an error if one occurs.
    -func (c *podSchedulingContexts) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *podSchedulingContexts) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched podSchedulingContext.
    -func (c *podSchedulingContexts) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.PodSchedulingContext, err error) {
    -	result = &v1alpha2.PodSchedulingContext{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied podSchedulingContext.
    -func (c *podSchedulingContexts) Apply(ctx context.Context, podSchedulingContext *resourcev1alpha2.PodSchedulingContextApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	if podSchedulingContext == nil {
    -		return nil, fmt.Errorf("podSchedulingContext provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(podSchedulingContext)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := podSchedulingContext.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podSchedulingContext.Name must be provided to Apply")
    -	}
    -	result = &v1alpha2.PodSchedulingContext{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *podSchedulingContexts) ApplyStatus(ctx context.Context, podSchedulingContext *resourcev1alpha2.PodSchedulingContextApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.PodSchedulingContext, err error) {
    -	if podSchedulingContext == nil {
    -		return nil, fmt.Errorf("podSchedulingContext provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(podSchedulingContext)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := podSchedulingContext.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("podSchedulingContext.Name must be provided to Apply")
    -	}
    -
    -	result = &v1alpha2.PodSchedulingContext{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("podschedulingcontexts").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclaim.go
    deleted file mode 100644
    index cfb27c9db686..000000000000
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclaim.go
    +++ /dev/null
    @@ -1,256 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by client-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    -
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
    -	resourcev1alpha2 "k8s.io/client-go/applyconfigurations/resource/v1alpha2"
    -	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
    -)
    -
    -// ResourceClaimsGetter has a method to return a ResourceClaimInterface.
    -// A group's client should implement this interface.
    -type ResourceClaimsGetter interface {
    -	ResourceClaims(namespace string) ResourceClaimInterface
    -}
    -
    -// ResourceClaimInterface has methods to work with ResourceClaim resources.
    -type ResourceClaimInterface interface {
    -	Create(ctx context.Context, resourceClaim *v1alpha2.ResourceClaim, opts v1.CreateOptions) (*v1alpha2.ResourceClaim, error)
    -	Update(ctx context.Context, resourceClaim *v1alpha2.ResourceClaim, opts v1.UpdateOptions) (*v1alpha2.ResourceClaim, error)
    -	UpdateStatus(ctx context.Context, resourceClaim *v1alpha2.ResourceClaim, opts v1.UpdateOptions) (*v1alpha2.ResourceClaim, error)
    -	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    -	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha2.ResourceClaim, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha2.ResourceClaimList, error)
    -	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.ResourceClaim, err error)
    -	Apply(ctx context.Context, resourceClaim *resourcev1alpha2.ResourceClaimApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClaim, err error)
    -	ApplyStatus(ctx context.Context, resourceClaim *resourcev1alpha2.ResourceClaimApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClaim, err error)
    -	ResourceClaimExpansion
    -}
    -
    -// resourceClaims implements ResourceClaimInterface
    -type resourceClaims struct {
    -	client rest.Interface
    -	ns     string
    -}
    -
    -// newResourceClaims returns a ResourceClaims
    -func newResourceClaims(c *ResourceV1alpha2Client, namespace string) *resourceClaims {
    -	return &resourceClaims{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    -	}
    -}
    -
    -// Get takes name of the resourceClaim, and returns the corresponding resourceClaim object, and an error if there is any.
    -func (c *resourceClaims) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	result = &v1alpha2.ResourceClaim{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ResourceClaims that match those selectors.
    -func (c *resourceClaims) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha2.ResourceClaimList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha2.ResourceClaimList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested resourceClaims.
    -func (c *resourceClaims) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a resourceClaim and creates it.  Returns the server's representation of the resourceClaim, and an error, if there is any.
    -func (c *resourceClaims) Create(ctx context.Context, resourceClaim *v1alpha2.ResourceClaim, opts v1.CreateOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	result = &v1alpha2.ResourceClaim{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(resourceClaim).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a resourceClaim and updates it. Returns the server's representation of the resourceClaim, and an error, if there is any.
    -func (c *resourceClaims) Update(ctx context.Context, resourceClaim *v1alpha2.ResourceClaim, opts v1.UpdateOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	result = &v1alpha2.ResourceClaim{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		Name(resourceClaim.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(resourceClaim).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *resourceClaims) UpdateStatus(ctx context.Context, resourceClaim *v1alpha2.ResourceClaim, opts v1.UpdateOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	result = &v1alpha2.ResourceClaim{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		Name(resourceClaim.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(resourceClaim).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the resourceClaim and deletes it. Returns an error if one occurs.
    -func (c *resourceClaims) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *resourceClaims) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched resourceClaim.
    -func (c *resourceClaims) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.ResourceClaim, err error) {
    -	result = &v1alpha2.ResourceClaim{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied resourceClaim.
    -func (c *resourceClaims) Apply(ctx context.Context, resourceClaim *resourcev1alpha2.ResourceClaimApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	if resourceClaim == nil {
    -		return nil, fmt.Errorf("resourceClaim provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(resourceClaim)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := resourceClaim.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceClaim.Name must be provided to Apply")
    -	}
    -	result = &v1alpha2.ResourceClaim{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *resourceClaims) ApplyStatus(ctx context.Context, resourceClaim *resourcev1alpha2.ResourceClaimApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClaim, err error) {
    -	if resourceClaim == nil {
    -		return nil, fmt.Errorf("resourceClaim provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(resourceClaim)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := resourceClaim.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceClaim.Name must be provided to Apply")
    -	}
    -
    -	result = &v1alpha2.ResourceClaim{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("resourceclaims").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclaimtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclaimtemplate.go
    deleted file mode 100644
    index 3f4e3200642a..000000000000
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclaimtemplate.go
    +++ /dev/null
    @@ -1,208 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by client-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    -
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
    -	resourcev1alpha2 "k8s.io/client-go/applyconfigurations/resource/v1alpha2"
    -	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
    -)
    -
    -// ResourceClaimTemplatesGetter has a method to return a ResourceClaimTemplateInterface.
    -// A group's client should implement this interface.
    -type ResourceClaimTemplatesGetter interface {
    -	ResourceClaimTemplates(namespace string) ResourceClaimTemplateInterface
    -}
    -
    -// ResourceClaimTemplateInterface has methods to work with ResourceClaimTemplate resources.
    -type ResourceClaimTemplateInterface interface {
    -	Create(ctx context.Context, resourceClaimTemplate *v1alpha2.ResourceClaimTemplate, opts v1.CreateOptions) (*v1alpha2.ResourceClaimTemplate, error)
    -	Update(ctx context.Context, resourceClaimTemplate *v1alpha2.ResourceClaimTemplate, opts v1.UpdateOptions) (*v1alpha2.ResourceClaimTemplate, error)
    -	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    -	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha2.ResourceClaimTemplate, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha2.ResourceClaimTemplateList, error)
    -	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.ResourceClaimTemplate, err error)
    -	Apply(ctx context.Context, resourceClaimTemplate *resourcev1alpha2.ResourceClaimTemplateApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClaimTemplate, err error)
    -	ResourceClaimTemplateExpansion
    -}
    -
    -// resourceClaimTemplates implements ResourceClaimTemplateInterface
    -type resourceClaimTemplates struct {
    -	client rest.Interface
    -	ns     string
    -}
    -
    -// newResourceClaimTemplates returns a ResourceClaimTemplates
    -func newResourceClaimTemplates(c *ResourceV1alpha2Client, namespace string) *resourceClaimTemplates {
    -	return &resourceClaimTemplates{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    -	}
    -}
    -
    -// Get takes name of the resourceClaimTemplate, and returns the corresponding resourceClaimTemplate object, and an error if there is any.
    -func (c *resourceClaimTemplates) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha2.ResourceClaimTemplate, err error) {
    -	result = &v1alpha2.ResourceClaimTemplate{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("resourceclaimtemplates").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ResourceClaimTemplates that match those selectors.
    -func (c *resourceClaimTemplates) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha2.ResourceClaimTemplateList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha2.ResourceClaimTemplateList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("resourceclaimtemplates").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested resourceClaimTemplates.
    -func (c *resourceClaimTemplates) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("resourceclaimtemplates").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a resourceClaimTemplate and creates it.  Returns the server's representation of the resourceClaimTemplate, and an error, if there is any.
    -func (c *resourceClaimTemplates) Create(ctx context.Context, resourceClaimTemplate *v1alpha2.ResourceClaimTemplate, opts v1.CreateOptions) (result *v1alpha2.ResourceClaimTemplate, err error) {
    -	result = &v1alpha2.ResourceClaimTemplate{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("resourceclaimtemplates").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(resourceClaimTemplate).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a resourceClaimTemplate and updates it. Returns the server's representation of the resourceClaimTemplate, and an error, if there is any.
    -func (c *resourceClaimTemplates) Update(ctx context.Context, resourceClaimTemplate *v1alpha2.ResourceClaimTemplate, opts v1.UpdateOptions) (result *v1alpha2.ResourceClaimTemplate, err error) {
    -	result = &v1alpha2.ResourceClaimTemplate{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("resourceclaimtemplates").
    -		Name(resourceClaimTemplate.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(resourceClaimTemplate).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the resourceClaimTemplate and deletes it. Returns an error if one occurs.
    -func (c *resourceClaimTemplates) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("resourceclaimtemplates").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *resourceClaimTemplates) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("resourceclaimtemplates").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched resourceClaimTemplate.
    -func (c *resourceClaimTemplates) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.ResourceClaimTemplate, err error) {
    -	result = &v1alpha2.ResourceClaimTemplate{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("resourceclaimtemplates").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied resourceClaimTemplate.
    -func (c *resourceClaimTemplates) Apply(ctx context.Context, resourceClaimTemplate *resourcev1alpha2.ResourceClaimTemplateApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClaimTemplate, err error) {
    -	if resourceClaimTemplate == nil {
    -		return nil, fmt.Errorf("resourceClaimTemplate provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(resourceClaimTemplate)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := resourceClaimTemplate.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceClaimTemplate.Name must be provided to Apply")
    -	}
    -	result = &v1alpha2.ResourceClaimTemplate{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("resourceclaimtemplates").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclass.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclass.go
    deleted file mode 100644
    index 95a4ac5668eb..000000000000
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resourceclass.go
    +++ /dev/null
    @@ -1,197 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by client-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    -
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
    -	resourcev1alpha2 "k8s.io/client-go/applyconfigurations/resource/v1alpha2"
    -	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
    -)
    -
    -// ResourceClassesGetter has a method to return a ResourceClassInterface.
    -// A group's client should implement this interface.
    -type ResourceClassesGetter interface {
    -	ResourceClasses() ResourceClassInterface
    -}
    -
    -// ResourceClassInterface has methods to work with ResourceClass resources.
    -type ResourceClassInterface interface {
    -	Create(ctx context.Context, resourceClass *v1alpha2.ResourceClass, opts v1.CreateOptions) (*v1alpha2.ResourceClass, error)
    -	Update(ctx context.Context, resourceClass *v1alpha2.ResourceClass, opts v1.UpdateOptions) (*v1alpha2.ResourceClass, error)
    -	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    -	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha2.ResourceClass, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha2.ResourceClassList, error)
    -	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.ResourceClass, err error)
    -	Apply(ctx context.Context, resourceClass *resourcev1alpha2.ResourceClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClass, err error)
    -	ResourceClassExpansion
    -}
    -
    -// resourceClasses implements ResourceClassInterface
    -type resourceClasses struct {
    -	client rest.Interface
    -}
    -
    -// newResourceClasses returns a ResourceClasses
    -func newResourceClasses(c *ResourceV1alpha2Client) *resourceClasses {
    -	return &resourceClasses{
    -		client: c.RESTClient(),
    -	}
    -}
    -
    -// Get takes name of the resourceClass, and returns the corresponding resourceClass object, and an error if there is any.
    -func (c *resourceClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha2.ResourceClass, err error) {
    -	result = &v1alpha2.ResourceClass{}
    -	err = c.client.Get().
    -		Resource("resourceclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of ResourceClasses that match those selectors.
    -func (c *resourceClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha2.ResourceClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha2.ResourceClassList{}
    -	err = c.client.Get().
    -		Resource("resourceclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested resourceClasses.
    -func (c *resourceClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("resourceclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a resourceClass and creates it.  Returns the server's representation of the resourceClass, and an error, if there is any.
    -func (c *resourceClasses) Create(ctx context.Context, resourceClass *v1alpha2.ResourceClass, opts v1.CreateOptions) (result *v1alpha2.ResourceClass, err error) {
    -	result = &v1alpha2.ResourceClass{}
    -	err = c.client.Post().
    -		Resource("resourceclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(resourceClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a resourceClass and updates it. Returns the server's representation of the resourceClass, and an error, if there is any.
    -func (c *resourceClasses) Update(ctx context.Context, resourceClass *v1alpha2.ResourceClass, opts v1.UpdateOptions) (result *v1alpha2.ResourceClass, err error) {
    -	result = &v1alpha2.ResourceClass{}
    -	err = c.client.Put().
    -		Resource("resourceclasses").
    -		Name(resourceClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(resourceClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the resourceClass and deletes it. Returns an error if one occurs.
    -func (c *resourceClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("resourceclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *resourceClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("resourceclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched resourceClass.
    -func (c *resourceClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha2.ResourceClass, err error) {
    -	result = &v1alpha2.ResourceClass{}
    -	err = c.client.Patch(pt).
    -		Resource("resourceclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied resourceClass.
    -func (c *resourceClasses) Apply(ctx context.Context, resourceClass *resourcev1alpha2.ResourceClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha2.ResourceClass, err error) {
    -	if resourceClass == nil {
    -		return nil, fmt.Errorf("resourceClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(resourceClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := resourceClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("resourceClass.Name must be provided to Apply")
    -	}
    -	result = &v1alpha2.ResourceClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("resourceclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/deviceclass.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/deviceclass.go
    new file mode 100644
    index 000000000000..6cdf57c53d33
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/deviceclass.go
    @@ -0,0 +1,71 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	context "context"
    +
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsresourcev1alpha3 "k8s.io/client-go/applyconfigurations/resource/v1alpha3"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// DeviceClassesGetter has a method to return a DeviceClassInterface.
    +// A group's client should implement this interface.
    +type DeviceClassesGetter interface {
    +	DeviceClasses() DeviceClassInterface
    +}
    +
    +// DeviceClassInterface has methods to work with DeviceClass resources.
    +type DeviceClassInterface interface {
    +	Create(ctx context.Context, deviceClass *resourcev1alpha3.DeviceClass, opts v1.CreateOptions) (*resourcev1alpha3.DeviceClass, error)
    +	Update(ctx context.Context, deviceClass *resourcev1alpha3.DeviceClass, opts v1.UpdateOptions) (*resourcev1alpha3.DeviceClass, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*resourcev1alpha3.DeviceClass, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*resourcev1alpha3.DeviceClassList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *resourcev1alpha3.DeviceClass, err error)
    +	Apply(ctx context.Context, deviceClass *applyconfigurationsresourcev1alpha3.DeviceClassApplyConfiguration, opts v1.ApplyOptions) (result *resourcev1alpha3.DeviceClass, err error)
    +	DeviceClassExpansion
    +}
    +
    +// deviceClasses implements DeviceClassInterface
    +type deviceClasses struct {
    +	*gentype.ClientWithListAndApply[*resourcev1alpha3.DeviceClass, *resourcev1alpha3.DeviceClassList, *applyconfigurationsresourcev1alpha3.DeviceClassApplyConfiguration]
    +}
    +
    +// newDeviceClasses returns a DeviceClasses
    +func newDeviceClasses(c *ResourceV1alpha3Client) *deviceClasses {
    +	return &deviceClasses{
    +		gentype.NewClientWithListAndApply[*resourcev1alpha3.DeviceClass, *resourcev1alpha3.DeviceClassList, *applyconfigurationsresourcev1alpha3.DeviceClassApplyConfiguration](
    +			"deviceclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *resourcev1alpha3.DeviceClass { return &resourcev1alpha3.DeviceClass{} },
    +			func() *resourcev1alpha3.DeviceClassList { return &resourcev1alpha3.DeviceClassList{} },
    +			gentype.PrefersProtobuf[*resourcev1alpha3.DeviceClass](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/doc.go
    new file mode 100644
    index 000000000000..fdb23fd37c26
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/doc.go
    @@ -0,0 +1,20 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +// This package has the automatically generated typed clients.
    +package v1alpha3
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/doc.go
    new file mode 100644
    index 000000000000..16f44399065e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/doc.go
    @@ -0,0 +1,20 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +// Package fake has the automatically generated clients.
    +package fake
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_deviceclass.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_deviceclass.go
    new file mode 100644
    index 000000000000..0f365b29b020
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_deviceclass.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1alpha3 "k8s.io/api/resource/v1alpha3"
    +	resourcev1alpha3 "k8s.io/client-go/applyconfigurations/resource/v1alpha3"
    +	gentype "k8s.io/client-go/gentype"
    +	typedresourcev1alpha3 "k8s.io/client-go/kubernetes/typed/resource/v1alpha3"
    +)
    +
    +// fakeDeviceClasses implements DeviceClassInterface
    +type fakeDeviceClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha3.DeviceClass, *v1alpha3.DeviceClassList, *resourcev1alpha3.DeviceClassApplyConfiguration]
    +	Fake *FakeResourceV1alpha3
    +}
    +
    +func newFakeDeviceClasses(fake *FakeResourceV1alpha3) typedresourcev1alpha3.DeviceClassInterface {
    +	return &fakeDeviceClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha3.DeviceClass, *v1alpha3.DeviceClassList, *resourcev1alpha3.DeviceClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha3.SchemeGroupVersion.WithResource("deviceclasses"),
    +			v1alpha3.SchemeGroupVersion.WithKind("DeviceClass"),
    +			func() *v1alpha3.DeviceClass { return &v1alpha3.DeviceClass{} },
    +			func() *v1alpha3.DeviceClassList { return &v1alpha3.DeviceClassList{} },
    +			func(dst, src *v1alpha3.DeviceClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha3.DeviceClassList) []*v1alpha3.DeviceClass {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha3.DeviceClassList, items []*v1alpha3.DeviceClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resource_client.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resource_client.go
    similarity index 54%
    rename from vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resource_client.go
    rename to vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resource_client.go
    index 205387732087..83dfdb2b9378 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake/fake_resource_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resource_client.go
    @@ -19,34 +19,34 @@ limitations under the License.
     package fake
     
     import (
    -	v1alpha2 "k8s.io/client-go/kubernetes/typed/resource/v1alpha2"
    +	v1alpha3 "k8s.io/client-go/kubernetes/typed/resource/v1alpha3"
     	rest "k8s.io/client-go/rest"
     	testing "k8s.io/client-go/testing"
     )
     
    -type FakeResourceV1alpha2 struct {
    +type FakeResourceV1alpha3 struct {
     	*testing.Fake
     }
     
    -func (c *FakeResourceV1alpha2) PodSchedulingContexts(namespace string) v1alpha2.PodSchedulingContextInterface {
    -	return &FakePodSchedulingContexts{c, namespace}
    +func (c *FakeResourceV1alpha3) DeviceClasses() v1alpha3.DeviceClassInterface {
    +	return newFakeDeviceClasses(c)
     }
     
    -func (c *FakeResourceV1alpha2) ResourceClaims(namespace string) v1alpha2.ResourceClaimInterface {
    -	return &FakeResourceClaims{c, namespace}
    +func (c *FakeResourceV1alpha3) ResourceClaims(namespace string) v1alpha3.ResourceClaimInterface {
    +	return newFakeResourceClaims(c, namespace)
     }
     
    -func (c *FakeResourceV1alpha2) ResourceClaimTemplates(namespace string) v1alpha2.ResourceClaimTemplateInterface {
    -	return &FakeResourceClaimTemplates{c, namespace}
    +func (c *FakeResourceV1alpha3) ResourceClaimTemplates(namespace string) v1alpha3.ResourceClaimTemplateInterface {
    +	return newFakeResourceClaimTemplates(c, namespace)
     }
     
    -func (c *FakeResourceV1alpha2) ResourceClasses() v1alpha2.ResourceClassInterface {
    -	return &FakeResourceClasses{c}
    +func (c *FakeResourceV1alpha3) ResourceSlices() v1alpha3.ResourceSliceInterface {
    +	return newFakeResourceSlices(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
     // with API server by this client implementation.
    -func (c *FakeResourceV1alpha2) RESTClient() rest.Interface {
    +func (c *FakeResourceV1alpha3) RESTClient() rest.Interface {
     	var ret *rest.RESTClient
     	return ret
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceclaim.go
    new file mode 100644
    index 000000000000..502d4f2e2565
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceclaim.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1alpha3 "k8s.io/api/resource/v1alpha3"
    +	resourcev1alpha3 "k8s.io/client-go/applyconfigurations/resource/v1alpha3"
    +	gentype "k8s.io/client-go/gentype"
    +	typedresourcev1alpha3 "k8s.io/client-go/kubernetes/typed/resource/v1alpha3"
    +)
    +
    +// fakeResourceClaims implements ResourceClaimInterface
    +type fakeResourceClaims struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha3.ResourceClaim, *v1alpha3.ResourceClaimList, *resourcev1alpha3.ResourceClaimApplyConfiguration]
    +	Fake *FakeResourceV1alpha3
    +}
    +
    +func newFakeResourceClaims(fake *FakeResourceV1alpha3, namespace string) typedresourcev1alpha3.ResourceClaimInterface {
    +	return &fakeResourceClaims{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha3.ResourceClaim, *v1alpha3.ResourceClaimList, *resourcev1alpha3.ResourceClaimApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1alpha3.SchemeGroupVersion.WithResource("resourceclaims"),
    +			v1alpha3.SchemeGroupVersion.WithKind("ResourceClaim"),
    +			func() *v1alpha3.ResourceClaim { return &v1alpha3.ResourceClaim{} },
    +			func() *v1alpha3.ResourceClaimList { return &v1alpha3.ResourceClaimList{} },
    +			func(dst, src *v1alpha3.ResourceClaimList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha3.ResourceClaimList) []*v1alpha3.ResourceClaim {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha3.ResourceClaimList, items []*v1alpha3.ResourceClaim) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceclaimtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceclaimtemplate.go
    new file mode 100644
    index 000000000000..0ecd4c25efa9
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceclaimtemplate.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1alpha3 "k8s.io/api/resource/v1alpha3"
    +	resourcev1alpha3 "k8s.io/client-go/applyconfigurations/resource/v1alpha3"
    +	gentype "k8s.io/client-go/gentype"
    +	typedresourcev1alpha3 "k8s.io/client-go/kubernetes/typed/resource/v1alpha3"
    +)
    +
    +// fakeResourceClaimTemplates implements ResourceClaimTemplateInterface
    +type fakeResourceClaimTemplates struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha3.ResourceClaimTemplate, *v1alpha3.ResourceClaimTemplateList, *resourcev1alpha3.ResourceClaimTemplateApplyConfiguration]
    +	Fake *FakeResourceV1alpha3
    +}
    +
    +func newFakeResourceClaimTemplates(fake *FakeResourceV1alpha3, namespace string) typedresourcev1alpha3.ResourceClaimTemplateInterface {
    +	return &fakeResourceClaimTemplates{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha3.ResourceClaimTemplate, *v1alpha3.ResourceClaimTemplateList, *resourcev1alpha3.ResourceClaimTemplateApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1alpha3.SchemeGroupVersion.WithResource("resourceclaimtemplates"),
    +			v1alpha3.SchemeGroupVersion.WithKind("ResourceClaimTemplate"),
    +			func() *v1alpha3.ResourceClaimTemplate { return &v1alpha3.ResourceClaimTemplate{} },
    +			func() *v1alpha3.ResourceClaimTemplateList { return &v1alpha3.ResourceClaimTemplateList{} },
    +			func(dst, src *v1alpha3.ResourceClaimTemplateList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha3.ResourceClaimTemplateList) []*v1alpha3.ResourceClaimTemplate {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha3.ResourceClaimTemplateList, items []*v1alpha3.ResourceClaimTemplate) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceslice.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceslice.go
    new file mode 100644
    index 000000000000..0b9b01c00645
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceslice.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1alpha3 "k8s.io/api/resource/v1alpha3"
    +	resourcev1alpha3 "k8s.io/client-go/applyconfigurations/resource/v1alpha3"
    +	gentype "k8s.io/client-go/gentype"
    +	typedresourcev1alpha3 "k8s.io/client-go/kubernetes/typed/resource/v1alpha3"
    +)
    +
    +// fakeResourceSlices implements ResourceSliceInterface
    +type fakeResourceSlices struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha3.ResourceSlice, *v1alpha3.ResourceSliceList, *resourcev1alpha3.ResourceSliceApplyConfiguration]
    +	Fake *FakeResourceV1alpha3
    +}
    +
    +func newFakeResourceSlices(fake *FakeResourceV1alpha3) typedresourcev1alpha3.ResourceSliceInterface {
    +	return &fakeResourceSlices{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha3.ResourceSlice, *v1alpha3.ResourceSliceList, *resourcev1alpha3.ResourceSliceApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha3.SchemeGroupVersion.WithResource("resourceslices"),
    +			v1alpha3.SchemeGroupVersion.WithKind("ResourceSlice"),
    +			func() *v1alpha3.ResourceSlice { return &v1alpha3.ResourceSlice{} },
    +			func() *v1alpha3.ResourceSliceList { return &v1alpha3.ResourceSliceList{} },
    +			func(dst, src *v1alpha3.ResourceSliceList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha3.ResourceSliceList) []*v1alpha3.ResourceSlice {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha3.ResourceSliceList, items []*v1alpha3.ResourceSlice) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/generated_expansion.go
    similarity index 87%
    rename from vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/generated_expansion.go
    rename to vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/generated_expansion.go
    index 2c02e9ce74eb..cd8862ea8420 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/generated_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/generated_expansion.go
    @@ -16,12 +16,12 @@ limitations under the License.
     
     // Code generated by client-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
    -type PodSchedulingContextExpansion interface{}
    +type DeviceClassExpansion interface{}
     
     type ResourceClaimExpansion interface{}
     
     type ResourceClaimTemplateExpansion interface{}
     
    -type ResourceClassExpansion interface{}
    +type ResourceSliceExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resource_client.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resource_client.go
    similarity index 61%
    rename from vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resource_client.go
    rename to vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resource_client.go
    index d5795fd62862..acc9b97c223a 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha2/resource_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resource_client.go
    @@ -16,49 +16,49 @@ limitations under the License.
     
     // Code generated by client-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    -type ResourceV1alpha2Interface interface {
    +type ResourceV1alpha3Interface interface {
     	RESTClient() rest.Interface
    -	PodSchedulingContextsGetter
    +	DeviceClassesGetter
     	ResourceClaimsGetter
     	ResourceClaimTemplatesGetter
    -	ResourceClassesGetter
    +	ResourceSlicesGetter
     }
     
    -// ResourceV1alpha2Client is used to interact with features provided by the resource.k8s.io group.
    -type ResourceV1alpha2Client struct {
    +// ResourceV1alpha3Client is used to interact with features provided by the resource.k8s.io group.
    +type ResourceV1alpha3Client struct {
     	restClient rest.Interface
     }
     
    -func (c *ResourceV1alpha2Client) PodSchedulingContexts(namespace string) PodSchedulingContextInterface {
    -	return newPodSchedulingContexts(c, namespace)
    +func (c *ResourceV1alpha3Client) DeviceClasses() DeviceClassInterface {
    +	return newDeviceClasses(c)
     }
     
    -func (c *ResourceV1alpha2Client) ResourceClaims(namespace string) ResourceClaimInterface {
    +func (c *ResourceV1alpha3Client) ResourceClaims(namespace string) ResourceClaimInterface {
     	return newResourceClaims(c, namespace)
     }
     
    -func (c *ResourceV1alpha2Client) ResourceClaimTemplates(namespace string) ResourceClaimTemplateInterface {
    +func (c *ResourceV1alpha3Client) ResourceClaimTemplates(namespace string) ResourceClaimTemplateInterface {
     	return newResourceClaimTemplates(c, namespace)
     }
     
    -func (c *ResourceV1alpha2Client) ResourceClasses() ResourceClassInterface {
    -	return newResourceClasses(c)
    +func (c *ResourceV1alpha3Client) ResourceSlices() ResourceSliceInterface {
    +	return newResourceSlices(c)
     }
     
    -// NewForConfig creates a new ResourceV1alpha2Client for the given config.
    +// NewForConfig creates a new ResourceV1alpha3Client for the given config.
     // NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
     // where httpClient was generated with rest.HTTPClientFor(c).
    -func NewForConfig(c *rest.Config) (*ResourceV1alpha2Client, error) {
    +func NewForConfig(c *rest.Config) (*ResourceV1alpha3Client, error) {
     	config := *c
     	if err := setConfigDefaults(&config); err != nil {
     		return nil, err
    @@ -70,9 +70,9 @@ func NewForConfig(c *rest.Config) (*ResourceV1alpha2Client, error) {
     	return NewForConfigAndClient(&config, httpClient)
     }
     
    -// NewForConfigAndClient creates a new ResourceV1alpha2Client for the given config and http client.
    +// NewForConfigAndClient creates a new ResourceV1alpha3Client for the given config and http client.
     // Note the http client provided takes precedence over the configured transport values.
    -func NewForConfigAndClient(c *rest.Config, h *http.Client) (*ResourceV1alpha2Client, error) {
    +func NewForConfigAndClient(c *rest.Config, h *http.Client) (*ResourceV1alpha3Client, error) {
     	config := *c
     	if err := setConfigDefaults(&config); err != nil {
     		return nil, err
    @@ -81,12 +81,12 @@ func NewForConfigAndClient(c *rest.Config, h *http.Client) (*ResourceV1alpha2Cli
     	if err != nil {
     		return nil, err
     	}
    -	return &ResourceV1alpha2Client{client}, nil
    +	return &ResourceV1alpha3Client{client}, nil
     }
     
    -// NewForConfigOrDie creates a new ResourceV1alpha2Client for the given config and
    +// NewForConfigOrDie creates a new ResourceV1alpha3Client for the given config and
     // panics if there is an error in the config.
    -func NewForConfigOrDie(c *rest.Config) *ResourceV1alpha2Client {
    +func NewForConfigOrDie(c *rest.Config) *ResourceV1alpha3Client {
     	client, err := NewForConfig(c)
     	if err != nil {
     		panic(err)
    @@ -94,16 +94,16 @@ func NewForConfigOrDie(c *rest.Config) *ResourceV1alpha2Client {
     	return client
     }
     
    -// New creates a new ResourceV1alpha2Client for the given RESTClient.
    -func New(c rest.Interface) *ResourceV1alpha2Client {
    -	return &ResourceV1alpha2Client{c}
    +// New creates a new ResourceV1alpha3Client for the given RESTClient.
    +func New(c rest.Interface) *ResourceV1alpha3Client {
    +	return &ResourceV1alpha3Client{c}
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1alpha2.SchemeGroupVersion
    +	gv := resourcev1alpha3.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    @@ -114,7 +114,7 @@ func setConfigDefaults(config *rest.Config) error {
     
     // RESTClient returns a RESTClient that is used to communicate
     // with API server by this client implementation.
    -func (c *ResourceV1alpha2Client) RESTClient() rest.Interface {
    +func (c *ResourceV1alpha3Client) RESTClient() rest.Interface {
     	if c == nil {
     		return nil
     	}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceclaim.go
    new file mode 100644
    index 000000000000..a95ac56d30e9
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceclaim.go
    @@ -0,0 +1,75 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	context "context"
    +
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsresourcev1alpha3 "k8s.io/client-go/applyconfigurations/resource/v1alpha3"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// ResourceClaimsGetter has a method to return a ResourceClaimInterface.
    +// A group's client should implement this interface.
    +type ResourceClaimsGetter interface {
    +	ResourceClaims(namespace string) ResourceClaimInterface
    +}
    +
    +// ResourceClaimInterface has methods to work with ResourceClaim resources.
    +type ResourceClaimInterface interface {
    +	Create(ctx context.Context, resourceClaim *resourcev1alpha3.ResourceClaim, opts v1.CreateOptions) (*resourcev1alpha3.ResourceClaim, error)
    +	Update(ctx context.Context, resourceClaim *resourcev1alpha3.ResourceClaim, opts v1.UpdateOptions) (*resourcev1alpha3.ResourceClaim, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, resourceClaim *resourcev1alpha3.ResourceClaim, opts v1.UpdateOptions) (*resourcev1alpha3.ResourceClaim, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*resourcev1alpha3.ResourceClaim, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*resourcev1alpha3.ResourceClaimList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *resourcev1alpha3.ResourceClaim, err error)
    +	Apply(ctx context.Context, resourceClaim *applyconfigurationsresourcev1alpha3.ResourceClaimApplyConfiguration, opts v1.ApplyOptions) (result *resourcev1alpha3.ResourceClaim, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, resourceClaim *applyconfigurationsresourcev1alpha3.ResourceClaimApplyConfiguration, opts v1.ApplyOptions) (result *resourcev1alpha3.ResourceClaim, err error)
    +	ResourceClaimExpansion
    +}
    +
    +// resourceClaims implements ResourceClaimInterface
    +type resourceClaims struct {
    +	*gentype.ClientWithListAndApply[*resourcev1alpha3.ResourceClaim, *resourcev1alpha3.ResourceClaimList, *applyconfigurationsresourcev1alpha3.ResourceClaimApplyConfiguration]
    +}
    +
    +// newResourceClaims returns a ResourceClaims
    +func newResourceClaims(c *ResourceV1alpha3Client, namespace string) *resourceClaims {
    +	return &resourceClaims{
    +		gentype.NewClientWithListAndApply[*resourcev1alpha3.ResourceClaim, *resourcev1alpha3.ResourceClaimList, *applyconfigurationsresourcev1alpha3.ResourceClaimApplyConfiguration](
    +			"resourceclaims",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *resourcev1alpha3.ResourceClaim { return &resourcev1alpha3.ResourceClaim{} },
    +			func() *resourcev1alpha3.ResourceClaimList { return &resourcev1alpha3.ResourceClaimList{} },
    +			gentype.PrefersProtobuf[*resourcev1alpha3.ResourceClaim](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceclaimtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceclaimtemplate.go
    new file mode 100644
    index 000000000000..a8ba1f69698b
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceclaimtemplate.go
    @@ -0,0 +1,73 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	context "context"
    +
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsresourcev1alpha3 "k8s.io/client-go/applyconfigurations/resource/v1alpha3"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// ResourceClaimTemplatesGetter has a method to return a ResourceClaimTemplateInterface.
    +// A group's client should implement this interface.
    +type ResourceClaimTemplatesGetter interface {
    +	ResourceClaimTemplates(namespace string) ResourceClaimTemplateInterface
    +}
    +
    +// ResourceClaimTemplateInterface has methods to work with ResourceClaimTemplate resources.
    +type ResourceClaimTemplateInterface interface {
    +	Create(ctx context.Context, resourceClaimTemplate *resourcev1alpha3.ResourceClaimTemplate, opts v1.CreateOptions) (*resourcev1alpha3.ResourceClaimTemplate, error)
    +	Update(ctx context.Context, resourceClaimTemplate *resourcev1alpha3.ResourceClaimTemplate, opts v1.UpdateOptions) (*resourcev1alpha3.ResourceClaimTemplate, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*resourcev1alpha3.ResourceClaimTemplate, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*resourcev1alpha3.ResourceClaimTemplateList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *resourcev1alpha3.ResourceClaimTemplate, err error)
    +	Apply(ctx context.Context, resourceClaimTemplate *applyconfigurationsresourcev1alpha3.ResourceClaimTemplateApplyConfiguration, opts v1.ApplyOptions) (result *resourcev1alpha3.ResourceClaimTemplate, err error)
    +	ResourceClaimTemplateExpansion
    +}
    +
    +// resourceClaimTemplates implements ResourceClaimTemplateInterface
    +type resourceClaimTemplates struct {
    +	*gentype.ClientWithListAndApply[*resourcev1alpha3.ResourceClaimTemplate, *resourcev1alpha3.ResourceClaimTemplateList, *applyconfigurationsresourcev1alpha3.ResourceClaimTemplateApplyConfiguration]
    +}
    +
    +// newResourceClaimTemplates returns a ResourceClaimTemplates
    +func newResourceClaimTemplates(c *ResourceV1alpha3Client, namespace string) *resourceClaimTemplates {
    +	return &resourceClaimTemplates{
    +		gentype.NewClientWithListAndApply[*resourcev1alpha3.ResourceClaimTemplate, *resourcev1alpha3.ResourceClaimTemplateList, *applyconfigurationsresourcev1alpha3.ResourceClaimTemplateApplyConfiguration](
    +			"resourceclaimtemplates",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *resourcev1alpha3.ResourceClaimTemplate { return &resourcev1alpha3.ResourceClaimTemplate{} },
    +			func() *resourcev1alpha3.ResourceClaimTemplateList {
    +				return &resourcev1alpha3.ResourceClaimTemplateList{}
    +			},
    +			gentype.PrefersProtobuf[*resourcev1alpha3.ResourceClaimTemplate](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceslice.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceslice.go
    new file mode 100644
    index 000000000000..91dfce5ecaaf
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceslice.go
    @@ -0,0 +1,71 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	context "context"
    +
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsresourcev1alpha3 "k8s.io/client-go/applyconfigurations/resource/v1alpha3"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// ResourceSlicesGetter has a method to return a ResourceSliceInterface.
    +// A group's client should implement this interface.
    +type ResourceSlicesGetter interface {
    +	ResourceSlices() ResourceSliceInterface
    +}
    +
    +// ResourceSliceInterface has methods to work with ResourceSlice resources.
    +type ResourceSliceInterface interface {
    +	Create(ctx context.Context, resourceSlice *resourcev1alpha3.ResourceSlice, opts v1.CreateOptions) (*resourcev1alpha3.ResourceSlice, error)
    +	Update(ctx context.Context, resourceSlice *resourcev1alpha3.ResourceSlice, opts v1.UpdateOptions) (*resourcev1alpha3.ResourceSlice, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*resourcev1alpha3.ResourceSlice, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*resourcev1alpha3.ResourceSliceList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *resourcev1alpha3.ResourceSlice, err error)
    +	Apply(ctx context.Context, resourceSlice *applyconfigurationsresourcev1alpha3.ResourceSliceApplyConfiguration, opts v1.ApplyOptions) (result *resourcev1alpha3.ResourceSlice, err error)
    +	ResourceSliceExpansion
    +}
    +
    +// resourceSlices implements ResourceSliceInterface
    +type resourceSlices struct {
    +	*gentype.ClientWithListAndApply[*resourcev1alpha3.ResourceSlice, *resourcev1alpha3.ResourceSliceList, *applyconfigurationsresourcev1alpha3.ResourceSliceApplyConfiguration]
    +}
    +
    +// newResourceSlices returns a ResourceSlices
    +func newResourceSlices(c *ResourceV1alpha3Client) *resourceSlices {
    +	return &resourceSlices{
    +		gentype.NewClientWithListAndApply[*resourcev1alpha3.ResourceSlice, *resourcev1alpha3.ResourceSliceList, *applyconfigurationsresourcev1alpha3.ResourceSliceApplyConfiguration](
    +			"resourceslices",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *resourcev1alpha3.ResourceSlice { return &resourcev1alpha3.ResourceSlice{} },
    +			func() *resourcev1alpha3.ResourceSliceList { return &resourcev1alpha3.ResourceSliceList{} },
    +			gentype.PrefersProtobuf[*resourcev1alpha3.ResourceSlice](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/deviceclass.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/deviceclass.go
    new file mode 100644
    index 000000000000..e41416d394cd
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/deviceclass.go
    @@ -0,0 +1,71 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsresourcev1beta1 "k8s.io/client-go/applyconfigurations/resource/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// DeviceClassesGetter has a method to return a DeviceClassInterface.
    +// A group's client should implement this interface.
    +type DeviceClassesGetter interface {
    +	DeviceClasses() DeviceClassInterface
    +}
    +
    +// DeviceClassInterface has methods to work with DeviceClass resources.
    +type DeviceClassInterface interface {
    +	Create(ctx context.Context, deviceClass *resourcev1beta1.DeviceClass, opts v1.CreateOptions) (*resourcev1beta1.DeviceClass, error)
    +	Update(ctx context.Context, deviceClass *resourcev1beta1.DeviceClass, opts v1.UpdateOptions) (*resourcev1beta1.DeviceClass, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*resourcev1beta1.DeviceClass, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*resourcev1beta1.DeviceClassList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *resourcev1beta1.DeviceClass, err error)
    +	Apply(ctx context.Context, deviceClass *applyconfigurationsresourcev1beta1.DeviceClassApplyConfiguration, opts v1.ApplyOptions) (result *resourcev1beta1.DeviceClass, err error)
    +	DeviceClassExpansion
    +}
    +
    +// deviceClasses implements DeviceClassInterface
    +type deviceClasses struct {
    +	*gentype.ClientWithListAndApply[*resourcev1beta1.DeviceClass, *resourcev1beta1.DeviceClassList, *applyconfigurationsresourcev1beta1.DeviceClassApplyConfiguration]
    +}
    +
    +// newDeviceClasses returns a DeviceClasses
    +func newDeviceClasses(c *ResourceV1beta1Client) *deviceClasses {
    +	return &deviceClasses{
    +		gentype.NewClientWithListAndApply[*resourcev1beta1.DeviceClass, *resourcev1beta1.DeviceClassList, *applyconfigurationsresourcev1beta1.DeviceClassApplyConfiguration](
    +			"deviceclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *resourcev1beta1.DeviceClass { return &resourcev1beta1.DeviceClass{} },
    +			func() *resourcev1beta1.DeviceClassList { return &resourcev1beta1.DeviceClassList{} },
    +			gentype.PrefersProtobuf[*resourcev1beta1.DeviceClass](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/doc.go
    new file mode 100644
    index 000000000000..771101956f36
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/doc.go
    @@ -0,0 +1,20 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +// This package has the automatically generated typed clients.
    +package v1beta1
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/doc.go
    new file mode 100644
    index 000000000000..16f44399065e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/doc.go
    @@ -0,0 +1,20 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +// Package fake has the automatically generated clients.
    +package fake
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_deviceclass.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_deviceclass.go
    new file mode 100644
    index 000000000000..335629899bc5
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_deviceclass.go
    @@ -0,0 +1,51 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1beta1 "k8s.io/api/resource/v1beta1"
    +	resourcev1beta1 "k8s.io/client-go/applyconfigurations/resource/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedresourcev1beta1 "k8s.io/client-go/kubernetes/typed/resource/v1beta1"
    +)
    +
    +// fakeDeviceClasses implements DeviceClassInterface
    +type fakeDeviceClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.DeviceClass, *v1beta1.DeviceClassList, *resourcev1beta1.DeviceClassApplyConfiguration]
    +	Fake *FakeResourceV1beta1
    +}
    +
    +func newFakeDeviceClasses(fake *FakeResourceV1beta1) typedresourcev1beta1.DeviceClassInterface {
    +	return &fakeDeviceClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.DeviceClass, *v1beta1.DeviceClassList, *resourcev1beta1.DeviceClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("deviceclasses"),
    +			v1beta1.SchemeGroupVersion.WithKind("DeviceClass"),
    +			func() *v1beta1.DeviceClass { return &v1beta1.DeviceClass{} },
    +			func() *v1beta1.DeviceClassList { return &v1beta1.DeviceClassList{} },
    +			func(dst, src *v1beta1.DeviceClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.DeviceClassList) []*v1beta1.DeviceClass { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.DeviceClassList, items []*v1beta1.DeviceClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resource_client.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resource_client.go
    new file mode 100644
    index 000000000000..3cb54e9ceadc
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resource_client.go
    @@ -0,0 +1,52 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1beta1 "k8s.io/client-go/kubernetes/typed/resource/v1beta1"
    +	rest "k8s.io/client-go/rest"
    +	testing "k8s.io/client-go/testing"
    +)
    +
    +type FakeResourceV1beta1 struct {
    +	*testing.Fake
    +}
    +
    +func (c *FakeResourceV1beta1) DeviceClasses() v1beta1.DeviceClassInterface {
    +	return newFakeDeviceClasses(c)
    +}
    +
    +func (c *FakeResourceV1beta1) ResourceClaims(namespace string) v1beta1.ResourceClaimInterface {
    +	return newFakeResourceClaims(c, namespace)
    +}
    +
    +func (c *FakeResourceV1beta1) ResourceClaimTemplates(namespace string) v1beta1.ResourceClaimTemplateInterface {
    +	return newFakeResourceClaimTemplates(c, namespace)
    +}
    +
    +func (c *FakeResourceV1beta1) ResourceSlices() v1beta1.ResourceSliceInterface {
    +	return newFakeResourceSlices(c)
    +}
    +
    +// RESTClient returns a RESTClient that is used to communicate
    +// with API server by this client implementation.
    +func (c *FakeResourceV1beta1) RESTClient() rest.Interface {
    +	var ret *rest.RESTClient
    +	return ret
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resourceclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resourceclaim.go
    new file mode 100644
    index 000000000000..ca03121a815a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resourceclaim.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1beta1 "k8s.io/api/resource/v1beta1"
    +	resourcev1beta1 "k8s.io/client-go/applyconfigurations/resource/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedresourcev1beta1 "k8s.io/client-go/kubernetes/typed/resource/v1beta1"
    +)
    +
    +// fakeResourceClaims implements ResourceClaimInterface
    +type fakeResourceClaims struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ResourceClaim, *v1beta1.ResourceClaimList, *resourcev1beta1.ResourceClaimApplyConfiguration]
    +	Fake *FakeResourceV1beta1
    +}
    +
    +func newFakeResourceClaims(fake *FakeResourceV1beta1, namespace string) typedresourcev1beta1.ResourceClaimInterface {
    +	return &fakeResourceClaims{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ResourceClaim, *v1beta1.ResourceClaimList, *resourcev1beta1.ResourceClaimApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("resourceclaims"),
    +			v1beta1.SchemeGroupVersion.WithKind("ResourceClaim"),
    +			func() *v1beta1.ResourceClaim { return &v1beta1.ResourceClaim{} },
    +			func() *v1beta1.ResourceClaimList { return &v1beta1.ResourceClaimList{} },
    +			func(dst, src *v1beta1.ResourceClaimList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ResourceClaimList) []*v1beta1.ResourceClaim {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.ResourceClaimList, items []*v1beta1.ResourceClaim) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resourceclaimtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resourceclaimtemplate.go
    new file mode 100644
    index 000000000000..2ee43d458fa1
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resourceclaimtemplate.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1beta1 "k8s.io/api/resource/v1beta1"
    +	resourcev1beta1 "k8s.io/client-go/applyconfigurations/resource/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedresourcev1beta1 "k8s.io/client-go/kubernetes/typed/resource/v1beta1"
    +)
    +
    +// fakeResourceClaimTemplates implements ResourceClaimTemplateInterface
    +type fakeResourceClaimTemplates struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ResourceClaimTemplate, *v1beta1.ResourceClaimTemplateList, *resourcev1beta1.ResourceClaimTemplateApplyConfiguration]
    +	Fake *FakeResourceV1beta1
    +}
    +
    +func newFakeResourceClaimTemplates(fake *FakeResourceV1beta1, namespace string) typedresourcev1beta1.ResourceClaimTemplateInterface {
    +	return &fakeResourceClaimTemplates{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ResourceClaimTemplate, *v1beta1.ResourceClaimTemplateList, *resourcev1beta1.ResourceClaimTemplateApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("resourceclaimtemplates"),
    +			v1beta1.SchemeGroupVersion.WithKind("ResourceClaimTemplate"),
    +			func() *v1beta1.ResourceClaimTemplate { return &v1beta1.ResourceClaimTemplate{} },
    +			func() *v1beta1.ResourceClaimTemplateList { return &v1beta1.ResourceClaimTemplateList{} },
    +			func(dst, src *v1beta1.ResourceClaimTemplateList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ResourceClaimTemplateList) []*v1beta1.ResourceClaimTemplate {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.ResourceClaimTemplateList, items []*v1beta1.ResourceClaimTemplate) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resourceslice.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resourceslice.go
    new file mode 100644
    index 000000000000..d6d64b7d3f47
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake/fake_resourceslice.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1beta1 "k8s.io/api/resource/v1beta1"
    +	resourcev1beta1 "k8s.io/client-go/applyconfigurations/resource/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedresourcev1beta1 "k8s.io/client-go/kubernetes/typed/resource/v1beta1"
    +)
    +
    +// fakeResourceSlices implements ResourceSliceInterface
    +type fakeResourceSlices struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.ResourceSlice, *v1beta1.ResourceSliceList, *resourcev1beta1.ResourceSliceApplyConfiguration]
    +	Fake *FakeResourceV1beta1
    +}
    +
    +func newFakeResourceSlices(fake *FakeResourceV1beta1) typedresourcev1beta1.ResourceSliceInterface {
    +	return &fakeResourceSlices{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.ResourceSlice, *v1beta1.ResourceSliceList, *resourcev1beta1.ResourceSliceApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("resourceslices"),
    +			v1beta1.SchemeGroupVersion.WithKind("ResourceSlice"),
    +			func() *v1beta1.ResourceSlice { return &v1beta1.ResourceSlice{} },
    +			func() *v1beta1.ResourceSliceList { return &v1beta1.ResourceSliceList{} },
    +			func(dst, src *v1beta1.ResourceSliceList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.ResourceSliceList) []*v1beta1.ResourceSlice {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.ResourceSliceList, items []*v1beta1.ResourceSlice) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/empty.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/generated_expansion.go
    similarity index 68%
    rename from vendor/k8s.io/gengo/examples/set-gen/sets/empty.go
    rename to vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/generated_expansion.go
    index e11e622c5ba0..d5fcfc2147c6 100644
    --- a/vendor/k8s.io/gengo/examples/set-gen/sets/empty.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/generated_expansion.go
    @@ -14,10 +14,14 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -// Code generated by set-gen. DO NOT EDIT.
    +// Code generated by client-gen. DO NOT EDIT.
     
    -package sets
    +package v1beta1
     
    -// Empty is public since it is used by some internal API objects for conversions between external
    -// string arrays and internal sets, and conversion logic requires public types today.
    -type Empty struct{}
    +type DeviceClassExpansion interface{}
    +
    +type ResourceClaimExpansion interface{}
    +
    +type ResourceClaimTemplateExpansion interface{}
    +
    +type ResourceSliceExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resource_client.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resource_client.go
    new file mode 100644
    index 000000000000..c6a3b28369e1
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resource_client.go
    @@ -0,0 +1,122 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	http "net/http"
    +
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +	rest "k8s.io/client-go/rest"
    +)
    +
    +type ResourceV1beta1Interface interface {
    +	RESTClient() rest.Interface
    +	DeviceClassesGetter
    +	ResourceClaimsGetter
    +	ResourceClaimTemplatesGetter
    +	ResourceSlicesGetter
    +}
    +
    +// ResourceV1beta1Client is used to interact with features provided by the resource.k8s.io group.
    +type ResourceV1beta1Client struct {
    +	restClient rest.Interface
    +}
    +
    +func (c *ResourceV1beta1Client) DeviceClasses() DeviceClassInterface {
    +	return newDeviceClasses(c)
    +}
    +
    +func (c *ResourceV1beta1Client) ResourceClaims(namespace string) ResourceClaimInterface {
    +	return newResourceClaims(c, namespace)
    +}
    +
    +func (c *ResourceV1beta1Client) ResourceClaimTemplates(namespace string) ResourceClaimTemplateInterface {
    +	return newResourceClaimTemplates(c, namespace)
    +}
    +
    +func (c *ResourceV1beta1Client) ResourceSlices() ResourceSliceInterface {
    +	return newResourceSlices(c)
    +}
    +
    +// NewForConfig creates a new ResourceV1beta1Client for the given config.
    +// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
    +// where httpClient was generated with rest.HTTPClientFor(c).
    +func NewForConfig(c *rest.Config) (*ResourceV1beta1Client, error) {
    +	config := *c
    +	if err := setConfigDefaults(&config); err != nil {
    +		return nil, err
    +	}
    +	httpClient, err := rest.HTTPClientFor(&config)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return NewForConfigAndClient(&config, httpClient)
    +}
    +
    +// NewForConfigAndClient creates a new ResourceV1beta1Client for the given config and http client.
    +// Note the http client provided takes precedence over the configured transport values.
    +func NewForConfigAndClient(c *rest.Config, h *http.Client) (*ResourceV1beta1Client, error) {
    +	config := *c
    +	if err := setConfigDefaults(&config); err != nil {
    +		return nil, err
    +	}
    +	client, err := rest.RESTClientForConfigAndClient(&config, h)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return &ResourceV1beta1Client{client}, nil
    +}
    +
    +// NewForConfigOrDie creates a new ResourceV1beta1Client for the given config and
    +// panics if there is an error in the config.
    +func NewForConfigOrDie(c *rest.Config) *ResourceV1beta1Client {
    +	client, err := NewForConfig(c)
    +	if err != nil {
    +		panic(err)
    +	}
    +	return client
    +}
    +
    +// New creates a new ResourceV1beta1Client for the given RESTClient.
    +func New(c rest.Interface) *ResourceV1beta1Client {
    +	return &ResourceV1beta1Client{c}
    +}
    +
    +func setConfigDefaults(config *rest.Config) error {
    +	gv := resourcev1beta1.SchemeGroupVersion
    +	config.GroupVersion = &gv
    +	config.APIPath = "/apis"
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
    +
    +	if config.UserAgent == "" {
    +		config.UserAgent = rest.DefaultKubernetesUserAgent()
    +	}
    +
    +	return nil
    +}
    +
    +// RESTClient returns a RESTClient that is used to communicate
    +// with API server by this client implementation.
    +func (c *ResourceV1beta1Client) RESTClient() rest.Interface {
    +	if c == nil {
    +		return nil
    +	}
    +	return c.restClient
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resourceclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resourceclaim.go
    new file mode 100644
    index 000000000000..3172ab5df57a
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resourceclaim.go
    @@ -0,0 +1,75 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsresourcev1beta1 "k8s.io/client-go/applyconfigurations/resource/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// ResourceClaimsGetter has a method to return a ResourceClaimInterface.
    +// A group's client should implement this interface.
    +type ResourceClaimsGetter interface {
    +	ResourceClaims(namespace string) ResourceClaimInterface
    +}
    +
    +// ResourceClaimInterface has methods to work with ResourceClaim resources.
    +type ResourceClaimInterface interface {
    +	Create(ctx context.Context, resourceClaim *resourcev1beta1.ResourceClaim, opts v1.CreateOptions) (*resourcev1beta1.ResourceClaim, error)
    +	Update(ctx context.Context, resourceClaim *resourcev1beta1.ResourceClaim, opts v1.UpdateOptions) (*resourcev1beta1.ResourceClaim, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, resourceClaim *resourcev1beta1.ResourceClaim, opts v1.UpdateOptions) (*resourcev1beta1.ResourceClaim, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*resourcev1beta1.ResourceClaim, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*resourcev1beta1.ResourceClaimList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *resourcev1beta1.ResourceClaim, err error)
    +	Apply(ctx context.Context, resourceClaim *applyconfigurationsresourcev1beta1.ResourceClaimApplyConfiguration, opts v1.ApplyOptions) (result *resourcev1beta1.ResourceClaim, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, resourceClaim *applyconfigurationsresourcev1beta1.ResourceClaimApplyConfiguration, opts v1.ApplyOptions) (result *resourcev1beta1.ResourceClaim, err error)
    +	ResourceClaimExpansion
    +}
    +
    +// resourceClaims implements ResourceClaimInterface
    +type resourceClaims struct {
    +	*gentype.ClientWithListAndApply[*resourcev1beta1.ResourceClaim, *resourcev1beta1.ResourceClaimList, *applyconfigurationsresourcev1beta1.ResourceClaimApplyConfiguration]
    +}
    +
    +// newResourceClaims returns a ResourceClaims
    +func newResourceClaims(c *ResourceV1beta1Client, namespace string) *resourceClaims {
    +	return &resourceClaims{
    +		gentype.NewClientWithListAndApply[*resourcev1beta1.ResourceClaim, *resourcev1beta1.ResourceClaimList, *applyconfigurationsresourcev1beta1.ResourceClaimApplyConfiguration](
    +			"resourceclaims",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *resourcev1beta1.ResourceClaim { return &resourcev1beta1.ResourceClaim{} },
    +			func() *resourcev1beta1.ResourceClaimList { return &resourcev1beta1.ResourceClaimList{} },
    +			gentype.PrefersProtobuf[*resourcev1beta1.ResourceClaim](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resourceclaimtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resourceclaimtemplate.go
    new file mode 100644
    index 000000000000..26c6fe829775
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resourceclaimtemplate.go
    @@ -0,0 +1,71 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsresourcev1beta1 "k8s.io/client-go/applyconfigurations/resource/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// ResourceClaimTemplatesGetter has a method to return a ResourceClaimTemplateInterface.
    +// A group's client should implement this interface.
    +type ResourceClaimTemplatesGetter interface {
    +	ResourceClaimTemplates(namespace string) ResourceClaimTemplateInterface
    +}
    +
    +// ResourceClaimTemplateInterface has methods to work with ResourceClaimTemplate resources.
    +type ResourceClaimTemplateInterface interface {
    +	Create(ctx context.Context, resourceClaimTemplate *resourcev1beta1.ResourceClaimTemplate, opts v1.CreateOptions) (*resourcev1beta1.ResourceClaimTemplate, error)
    +	Update(ctx context.Context, resourceClaimTemplate *resourcev1beta1.ResourceClaimTemplate, opts v1.UpdateOptions) (*resourcev1beta1.ResourceClaimTemplate, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*resourcev1beta1.ResourceClaimTemplate, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*resourcev1beta1.ResourceClaimTemplateList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *resourcev1beta1.ResourceClaimTemplate, err error)
    +	Apply(ctx context.Context, resourceClaimTemplate *applyconfigurationsresourcev1beta1.ResourceClaimTemplateApplyConfiguration, opts v1.ApplyOptions) (result *resourcev1beta1.ResourceClaimTemplate, err error)
    +	ResourceClaimTemplateExpansion
    +}
    +
    +// resourceClaimTemplates implements ResourceClaimTemplateInterface
    +type resourceClaimTemplates struct {
    +	*gentype.ClientWithListAndApply[*resourcev1beta1.ResourceClaimTemplate, *resourcev1beta1.ResourceClaimTemplateList, *applyconfigurationsresourcev1beta1.ResourceClaimTemplateApplyConfiguration]
    +}
    +
    +// newResourceClaimTemplates returns a ResourceClaimTemplates
    +func newResourceClaimTemplates(c *ResourceV1beta1Client, namespace string) *resourceClaimTemplates {
    +	return &resourceClaimTemplates{
    +		gentype.NewClientWithListAndApply[*resourcev1beta1.ResourceClaimTemplate, *resourcev1beta1.ResourceClaimTemplateList, *applyconfigurationsresourcev1beta1.ResourceClaimTemplateApplyConfiguration](
    +			"resourceclaimtemplates",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *resourcev1beta1.ResourceClaimTemplate { return &resourcev1beta1.ResourceClaimTemplate{} },
    +			func() *resourcev1beta1.ResourceClaimTemplateList { return &resourcev1beta1.ResourceClaimTemplateList{} },
    +			gentype.PrefersProtobuf[*resourcev1beta1.ResourceClaimTemplate](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resourceslice.go b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resourceslice.go
    new file mode 100644
    index 000000000000..c4e985ea479f
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/resource/v1beta1/resourceslice.go
    @@ -0,0 +1,71 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsresourcev1beta1 "k8s.io/client-go/applyconfigurations/resource/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// ResourceSlicesGetter has a method to return a ResourceSliceInterface.
    +// A group's client should implement this interface.
    +type ResourceSlicesGetter interface {
    +	ResourceSlices() ResourceSliceInterface
    +}
    +
    +// ResourceSliceInterface has methods to work with ResourceSlice resources.
    +type ResourceSliceInterface interface {
    +	Create(ctx context.Context, resourceSlice *resourcev1beta1.ResourceSlice, opts v1.CreateOptions) (*resourcev1beta1.ResourceSlice, error)
    +	Update(ctx context.Context, resourceSlice *resourcev1beta1.ResourceSlice, opts v1.UpdateOptions) (*resourcev1beta1.ResourceSlice, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*resourcev1beta1.ResourceSlice, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*resourcev1beta1.ResourceSliceList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *resourcev1beta1.ResourceSlice, err error)
    +	Apply(ctx context.Context, resourceSlice *applyconfigurationsresourcev1beta1.ResourceSliceApplyConfiguration, opts v1.ApplyOptions) (result *resourcev1beta1.ResourceSlice, err error)
    +	ResourceSliceExpansion
    +}
    +
    +// resourceSlices implements ResourceSliceInterface
    +type resourceSlices struct {
    +	*gentype.ClientWithListAndApply[*resourcev1beta1.ResourceSlice, *resourcev1beta1.ResourceSliceList, *applyconfigurationsresourcev1beta1.ResourceSliceApplyConfiguration]
    +}
    +
    +// newResourceSlices returns a ResourceSlices
    +func newResourceSlices(c *ResourceV1beta1Client) *resourceSlices {
    +	return &resourceSlices{
    +		gentype.NewClientWithListAndApply[*resourcev1beta1.ResourceSlice, *resourcev1beta1.ResourceSliceList, *applyconfigurationsresourcev1beta1.ResourceSliceApplyConfiguration](
    +			"resourceslices",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *resourcev1beta1.ResourceSlice { return &resourcev1beta1.ResourceSlice{} },
    +			func() *resourcev1beta1.ResourceSliceList { return &resourcev1beta1.ResourceSliceList{} },
    +			gentype.PrefersProtobuf[*resourcev1beta1.ResourceSlice](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_priorityclass.go
    index 40ab9fb40755..ea8270eac6c3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_priorityclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_priorityclass.go
    @@ -19,127 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/scheduling/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	schedulingv1 "k8s.io/client-go/applyconfigurations/scheduling/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedschedulingv1 "k8s.io/client-go/kubernetes/typed/scheduling/v1"
     )
     
    -// FakePriorityClasses implements PriorityClassInterface
    -type FakePriorityClasses struct {
    +// fakePriorityClasses implements PriorityClassInterface
    +type fakePriorityClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1.PriorityClass, *v1.PriorityClassList, *schedulingv1.PriorityClassApplyConfiguration]
     	Fake *FakeSchedulingV1
     }
     
    -var priorityclassesResource = v1.SchemeGroupVersion.WithResource("priorityclasses")
    -
    -var priorityclassesKind = v1.SchemeGroupVersion.WithKind("PriorityClass")
    -
    -// Get takes name of the priorityClass, and returns the corresponding priorityClass object, and an error if there is any.
    -func (c *FakePriorityClasses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(priorityclassesResource, name), &v1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PriorityClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityClasses that match those selectors.
    -func (c *FakePriorityClasses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PriorityClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(priorityclassesResource, priorityclassesKind, opts), &v1.PriorityClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.PriorityClassList{ListMeta: obj.(*v1.PriorityClassList).ListMeta}
    -	for _, item := range obj.(*v1.PriorityClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityClasses.
    -func (c *FakePriorityClasses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(priorityclassesResource, opts))
    -}
    -
    -// Create takes the representation of a priorityClass and creates it.  Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *FakePriorityClasses) Create(ctx context.Context, priorityClass *v1.PriorityClass, opts metav1.CreateOptions) (result *v1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(priorityclassesResource, priorityClass), &v1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PriorityClass), err
    -}
    -
    -// Update takes the representation of a priorityClass and updates it. Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *FakePriorityClasses) Update(ctx context.Context, priorityClass *v1.PriorityClass, opts metav1.UpdateOptions) (result *v1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(priorityclassesResource, priorityClass), &v1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PriorityClass), err
    -}
    -
    -// Delete takes name of the priorityClass and deletes it. Returns an error if one occurs.
    -func (c *FakePriorityClasses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(priorityclassesResource, name, opts), &v1.PriorityClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePriorityClasses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(priorityclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.PriorityClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched priorityClass.
    -func (c *FakePriorityClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(priorityclassesResource, name, pt, data, subresources...), &v1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.PriorityClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityClass.
    -func (c *FakePriorityClasses) Apply(ctx context.Context, priorityClass *schedulingv1.PriorityClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PriorityClass, err error) {
    -	if priorityClass == nil {
    -		return nil, fmt.Errorf("priorityClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(priorityclassesResource, *name, types.ApplyPatchType, data), &v1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakePriorityClasses(fake *FakeSchedulingV1) typedschedulingv1.PriorityClassInterface {
    +	return &fakePriorityClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1.PriorityClass, *v1.PriorityClassList, *schedulingv1.PriorityClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("priorityclasses"),
    +			v1.SchemeGroupVersion.WithKind("PriorityClass"),
    +			func() *v1.PriorityClass { return &v1.PriorityClass{} },
    +			func() *v1.PriorityClassList { return &v1.PriorityClassList{} },
    +			func(dst, src *v1.PriorityClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.PriorityClassList) []*v1.PriorityClass { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.PriorityClassList, items []*v1.PriorityClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.PriorityClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_scheduling_client.go
    index a64ac945b9d7..75f903cfe740 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_scheduling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_scheduling_client.go
    @@ -29,7 +29,7 @@ type FakeSchedulingV1 struct {
     }
     
     func (c *FakeSchedulingV1) PriorityClasses() v1.PriorityClassInterface {
    -	return &FakePriorityClasses{c}
    +	return newFakePriorityClasses(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/priorityclass.go
    index c68ec5da414d..3642b404ab31 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/priorityclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/scheduling/v1"
    +	schedulingv1 "k8s.io/api/scheduling/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	schedulingv1 "k8s.io/client-go/applyconfigurations/scheduling/v1"
    +	applyconfigurationsschedulingv1 "k8s.io/client-go/applyconfigurations/scheduling/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PriorityClassesGetter has a method to return a PriorityClassInterface.
    @@ -41,157 +38,34 @@ type PriorityClassesGetter interface {
     
     // PriorityClassInterface has methods to work with PriorityClass resources.
     type PriorityClassInterface interface {
    -	Create(ctx context.Context, priorityClass *v1.PriorityClass, opts metav1.CreateOptions) (*v1.PriorityClass, error)
    -	Update(ctx context.Context, priorityClass *v1.PriorityClass, opts metav1.UpdateOptions) (*v1.PriorityClass, error)
    +	Create(ctx context.Context, priorityClass *schedulingv1.PriorityClass, opts metav1.CreateOptions) (*schedulingv1.PriorityClass, error)
    +	Update(ctx context.Context, priorityClass *schedulingv1.PriorityClass, opts metav1.UpdateOptions) (*schedulingv1.PriorityClass, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.PriorityClass, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.PriorityClassList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*schedulingv1.PriorityClass, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*schedulingv1.PriorityClassList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PriorityClass, err error)
    -	Apply(ctx context.Context, priorityClass *schedulingv1.PriorityClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PriorityClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *schedulingv1.PriorityClass, err error)
    +	Apply(ctx context.Context, priorityClass *applyconfigurationsschedulingv1.PriorityClassApplyConfiguration, opts metav1.ApplyOptions) (result *schedulingv1.PriorityClass, err error)
     	PriorityClassExpansion
     }
     
     // priorityClasses implements PriorityClassInterface
     type priorityClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*schedulingv1.PriorityClass, *schedulingv1.PriorityClassList, *applyconfigurationsschedulingv1.PriorityClassApplyConfiguration]
     }
     
     // newPriorityClasses returns a PriorityClasses
     func newPriorityClasses(c *SchedulingV1Client) *priorityClasses {
     	return &priorityClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*schedulingv1.PriorityClass, *schedulingv1.PriorityClassList, *applyconfigurationsschedulingv1.PriorityClassApplyConfiguration](
    +			"priorityclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *schedulingv1.PriorityClass { return &schedulingv1.PriorityClass{} },
    +			func() *schedulingv1.PriorityClassList { return &schedulingv1.PriorityClassList{} },
    +			gentype.PrefersProtobuf[*schedulingv1.PriorityClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the priorityClass, and returns the corresponding priorityClass object, and an error if there is any.
    -func (c *priorityClasses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.PriorityClass, err error) {
    -	result = &v1.PriorityClass{}
    -	err = c.client.Get().
    -		Resource("priorityclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityClasses that match those selectors.
    -func (c *priorityClasses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.PriorityClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.PriorityClassList{}
    -	err = c.client.Get().
    -		Resource("priorityclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityClasses.
    -func (c *priorityClasses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("priorityclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a priorityClass and creates it.  Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *priorityClasses) Create(ctx context.Context, priorityClass *v1.PriorityClass, opts metav1.CreateOptions) (result *v1.PriorityClass, err error) {
    -	result = &v1.PriorityClass{}
    -	err = c.client.Post().
    -		Resource("priorityclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a priorityClass and updates it. Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *priorityClasses) Update(ctx context.Context, priorityClass *v1.PriorityClass, opts metav1.UpdateOptions) (result *v1.PriorityClass, err error) {
    -	result = &v1.PriorityClass{}
    -	err = c.client.Put().
    -		Resource("priorityclasses").
    -		Name(priorityClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the priorityClass and deletes it. Returns an error if one occurs.
    -func (c *priorityClasses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("priorityclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *priorityClasses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("priorityclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched priorityClass.
    -func (c *priorityClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.PriorityClass, err error) {
    -	result = &v1.PriorityClass{}
    -	err = c.client.Patch(pt).
    -		Resource("priorityclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityClass.
    -func (c *priorityClasses) Apply(ctx context.Context, priorityClass *schedulingv1.PriorityClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.PriorityClass, err error) {
    -	if priorityClass == nil {
    -		return nil, fmt.Errorf("priorityClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityClass.Name must be provided to Apply")
    -	}
    -	result = &v1.PriorityClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("priorityclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/scheduling_client.go
    index 11fc4b9f39f4..bbb46a9def4b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/scheduling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/scheduling_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/scheduling/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	schedulingv1 "k8s.io/api/scheduling/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *SchedulingV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := schedulingv1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_priorityclass.go
    index 3c8404a725a7..7d5a8e263003 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_priorityclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_priorityclass.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/scheduling/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	schedulingv1alpha1 "k8s.io/client-go/applyconfigurations/scheduling/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedschedulingv1alpha1 "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1"
     )
     
    -// FakePriorityClasses implements PriorityClassInterface
    -type FakePriorityClasses struct {
    +// fakePriorityClasses implements PriorityClassInterface
    +type fakePriorityClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.PriorityClass, *v1alpha1.PriorityClassList, *schedulingv1alpha1.PriorityClassApplyConfiguration]
     	Fake *FakeSchedulingV1alpha1
     }
     
    -var priorityclassesResource = v1alpha1.SchemeGroupVersion.WithResource("priorityclasses")
    -
    -var priorityclassesKind = v1alpha1.SchemeGroupVersion.WithKind("PriorityClass")
    -
    -// Get takes name of the priorityClass, and returns the corresponding priorityClass object, and an error if there is any.
    -func (c *FakePriorityClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(priorityclassesResource, name), &v1alpha1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.PriorityClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityClasses that match those selectors.
    -func (c *FakePriorityClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.PriorityClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(priorityclassesResource, priorityclassesKind, opts), &v1alpha1.PriorityClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.PriorityClassList{ListMeta: obj.(*v1alpha1.PriorityClassList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.PriorityClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityClasses.
    -func (c *FakePriorityClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(priorityclassesResource, opts))
    -}
    -
    -// Create takes the representation of a priorityClass and creates it.  Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *FakePriorityClasses) Create(ctx context.Context, priorityClass *v1alpha1.PriorityClass, opts v1.CreateOptions) (result *v1alpha1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(priorityclassesResource, priorityClass), &v1alpha1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.PriorityClass), err
    -}
    -
    -// Update takes the representation of a priorityClass and updates it. Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *FakePriorityClasses) Update(ctx context.Context, priorityClass *v1alpha1.PriorityClass, opts v1.UpdateOptions) (result *v1alpha1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(priorityclassesResource, priorityClass), &v1alpha1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.PriorityClass), err
    -}
    -
    -// Delete takes name of the priorityClass and deletes it. Returns an error if one occurs.
    -func (c *FakePriorityClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(priorityclassesResource, name, opts), &v1alpha1.PriorityClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePriorityClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(priorityclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.PriorityClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched priorityClass.
    -func (c *FakePriorityClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(priorityclassesResource, name, pt, data, subresources...), &v1alpha1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.PriorityClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityClass.
    -func (c *FakePriorityClasses) Apply(ctx context.Context, priorityClass *schedulingv1alpha1.PriorityClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.PriorityClass, err error) {
    -	if priorityClass == nil {
    -		return nil, fmt.Errorf("priorityClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(priorityclassesResource, *name, types.ApplyPatchType, data), &v1alpha1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakePriorityClasses(fake *FakeSchedulingV1alpha1) typedschedulingv1alpha1.PriorityClassInterface {
    +	return &fakePriorityClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.PriorityClass, *v1alpha1.PriorityClassList, *schedulingv1alpha1.PriorityClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("priorityclasses"),
    +			v1alpha1.SchemeGroupVersion.WithKind("PriorityClass"),
    +			func() *v1alpha1.PriorityClass { return &v1alpha1.PriorityClass{} },
    +			func() *v1alpha1.PriorityClassList { return &v1alpha1.PriorityClassList{} },
    +			func(dst, src *v1alpha1.PriorityClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.PriorityClassList) []*v1alpha1.PriorityClass {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.PriorityClassList, items []*v1alpha1.PriorityClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.PriorityClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_scheduling_client.go
    index 974ba193f7a2..34e8ad9bdf4f 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_scheduling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_scheduling_client.go
    @@ -29,7 +29,7 @@ type FakeSchedulingV1alpha1 struct {
     }
     
     func (c *FakeSchedulingV1alpha1) PriorityClasses() v1alpha1.PriorityClassInterface {
    -	return &FakePriorityClasses{c}
    +	return newFakePriorityClasses(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/priorityclass.go
    index a9b8c19c78a0..e7125f9fc350 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/priorityclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/scheduling/v1alpha1"
    +	schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	schedulingv1alpha1 "k8s.io/client-go/applyconfigurations/scheduling/v1alpha1"
    +	applyconfigurationsschedulingv1alpha1 "k8s.io/client-go/applyconfigurations/scheduling/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PriorityClassesGetter has a method to return a PriorityClassInterface.
    @@ -41,157 +38,34 @@ type PriorityClassesGetter interface {
     
     // PriorityClassInterface has methods to work with PriorityClass resources.
     type PriorityClassInterface interface {
    -	Create(ctx context.Context, priorityClass *v1alpha1.PriorityClass, opts v1.CreateOptions) (*v1alpha1.PriorityClass, error)
    -	Update(ctx context.Context, priorityClass *v1alpha1.PriorityClass, opts v1.UpdateOptions) (*v1alpha1.PriorityClass, error)
    +	Create(ctx context.Context, priorityClass *schedulingv1alpha1.PriorityClass, opts v1.CreateOptions) (*schedulingv1alpha1.PriorityClass, error)
    +	Update(ctx context.Context, priorityClass *schedulingv1alpha1.PriorityClass, opts v1.UpdateOptions) (*schedulingv1alpha1.PriorityClass, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.PriorityClass, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.PriorityClassList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*schedulingv1alpha1.PriorityClass, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*schedulingv1alpha1.PriorityClassList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.PriorityClass, err error)
    -	Apply(ctx context.Context, priorityClass *schedulingv1alpha1.PriorityClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.PriorityClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *schedulingv1alpha1.PriorityClass, err error)
    +	Apply(ctx context.Context, priorityClass *applyconfigurationsschedulingv1alpha1.PriorityClassApplyConfiguration, opts v1.ApplyOptions) (result *schedulingv1alpha1.PriorityClass, err error)
     	PriorityClassExpansion
     }
     
     // priorityClasses implements PriorityClassInterface
     type priorityClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*schedulingv1alpha1.PriorityClass, *schedulingv1alpha1.PriorityClassList, *applyconfigurationsschedulingv1alpha1.PriorityClassApplyConfiguration]
     }
     
     // newPriorityClasses returns a PriorityClasses
     func newPriorityClasses(c *SchedulingV1alpha1Client) *priorityClasses {
     	return &priorityClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*schedulingv1alpha1.PriorityClass, *schedulingv1alpha1.PriorityClassList, *applyconfigurationsschedulingv1alpha1.PriorityClassApplyConfiguration](
    +			"priorityclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *schedulingv1alpha1.PriorityClass { return &schedulingv1alpha1.PriorityClass{} },
    +			func() *schedulingv1alpha1.PriorityClassList { return &schedulingv1alpha1.PriorityClassList{} },
    +			gentype.PrefersProtobuf[*schedulingv1alpha1.PriorityClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the priorityClass, and returns the corresponding priorityClass object, and an error if there is any.
    -func (c *priorityClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.PriorityClass, err error) {
    -	result = &v1alpha1.PriorityClass{}
    -	err = c.client.Get().
    -		Resource("priorityclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityClasses that match those selectors.
    -func (c *priorityClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.PriorityClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.PriorityClassList{}
    -	err = c.client.Get().
    -		Resource("priorityclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityClasses.
    -func (c *priorityClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("priorityclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a priorityClass and creates it.  Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *priorityClasses) Create(ctx context.Context, priorityClass *v1alpha1.PriorityClass, opts v1.CreateOptions) (result *v1alpha1.PriorityClass, err error) {
    -	result = &v1alpha1.PriorityClass{}
    -	err = c.client.Post().
    -		Resource("priorityclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a priorityClass and updates it. Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *priorityClasses) Update(ctx context.Context, priorityClass *v1alpha1.PriorityClass, opts v1.UpdateOptions) (result *v1alpha1.PriorityClass, err error) {
    -	result = &v1alpha1.PriorityClass{}
    -	err = c.client.Put().
    -		Resource("priorityclasses").
    -		Name(priorityClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the priorityClass and deletes it. Returns an error if one occurs.
    -func (c *priorityClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("priorityclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *priorityClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("priorityclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched priorityClass.
    -func (c *priorityClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.PriorityClass, err error) {
    -	result = &v1alpha1.PriorityClass{}
    -	err = c.client.Patch(pt).
    -		Resource("priorityclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityClass.
    -func (c *priorityClasses) Apply(ctx context.Context, priorityClass *schedulingv1alpha1.PriorityClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.PriorityClass, err error) {
    -	if priorityClass == nil {
    -		return nil, fmt.Errorf("priorityClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityClass.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.PriorityClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("priorityclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/scheduling_client.go
    index 47fb774a37e3..056ab855ed95 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/scheduling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/scheduling_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1alpha1 "k8s.io/api/scheduling/v1alpha1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *SchedulingV1alpha1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1alpha1.SchemeGroupVersion
    +	gv := schedulingv1alpha1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_priorityclass.go
    index 4cf2e26c7752..9a62b17f214d 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_priorityclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_priorityclass.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/scheduling/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	schedulingv1beta1 "k8s.io/client-go/applyconfigurations/scheduling/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedschedulingv1beta1 "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1"
     )
     
    -// FakePriorityClasses implements PriorityClassInterface
    -type FakePriorityClasses struct {
    +// fakePriorityClasses implements PriorityClassInterface
    +type fakePriorityClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.PriorityClass, *v1beta1.PriorityClassList, *schedulingv1beta1.PriorityClassApplyConfiguration]
     	Fake *FakeSchedulingV1beta1
     }
     
    -var priorityclassesResource = v1beta1.SchemeGroupVersion.WithResource("priorityclasses")
    -
    -var priorityclassesKind = v1beta1.SchemeGroupVersion.WithKind("PriorityClass")
    -
    -// Get takes name of the priorityClass, and returns the corresponding priorityClass object, and an error if there is any.
    -func (c *FakePriorityClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(priorityclassesResource, name), &v1beta1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PriorityClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityClasses that match those selectors.
    -func (c *FakePriorityClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.PriorityClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(priorityclassesResource, priorityclassesKind, opts), &v1beta1.PriorityClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.PriorityClassList{ListMeta: obj.(*v1beta1.PriorityClassList).ListMeta}
    -	for _, item := range obj.(*v1beta1.PriorityClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityClasses.
    -func (c *FakePriorityClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(priorityclassesResource, opts))
    -}
    -
    -// Create takes the representation of a priorityClass and creates it.  Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *FakePriorityClasses) Create(ctx context.Context, priorityClass *v1beta1.PriorityClass, opts v1.CreateOptions) (result *v1beta1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(priorityclassesResource, priorityClass), &v1beta1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PriorityClass), err
    -}
    -
    -// Update takes the representation of a priorityClass and updates it. Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *FakePriorityClasses) Update(ctx context.Context, priorityClass *v1beta1.PriorityClass, opts v1.UpdateOptions) (result *v1beta1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(priorityclassesResource, priorityClass), &v1beta1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PriorityClass), err
    -}
    -
    -// Delete takes name of the priorityClass and deletes it. Returns an error if one occurs.
    -func (c *FakePriorityClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(priorityclassesResource, name, opts), &v1beta1.PriorityClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakePriorityClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(priorityclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.PriorityClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched priorityClass.
    -func (c *FakePriorityClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PriorityClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(priorityclassesResource, name, pt, data, subresources...), &v1beta1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.PriorityClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityClass.
    -func (c *FakePriorityClasses) Apply(ctx context.Context, priorityClass *schedulingv1beta1.PriorityClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PriorityClass, err error) {
    -	if priorityClass == nil {
    -		return nil, fmt.Errorf("priorityClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(priorityClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(priorityclassesResource, *name, types.ApplyPatchType, data), &v1beta1.PriorityClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakePriorityClasses(fake *FakeSchedulingV1beta1) typedschedulingv1beta1.PriorityClassInterface {
    +	return &fakePriorityClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.PriorityClass, *v1beta1.PriorityClassList, *schedulingv1beta1.PriorityClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("priorityclasses"),
    +			v1beta1.SchemeGroupVersion.WithKind("PriorityClass"),
    +			func() *v1beta1.PriorityClass { return &v1beta1.PriorityClass{} },
    +			func() *v1beta1.PriorityClassList { return &v1beta1.PriorityClassList{} },
    +			func(dst, src *v1beta1.PriorityClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.PriorityClassList) []*v1beta1.PriorityClass {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.PriorityClassList, items []*v1beta1.PriorityClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.PriorityClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_scheduling_client.go
    index 4a6878a45e3f..f06fdab11460 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_scheduling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_scheduling_client.go
    @@ -29,7 +29,7 @@ type FakeSchedulingV1beta1 struct {
     }
     
     func (c *FakeSchedulingV1beta1) PriorityClasses() v1beta1.PriorityClassInterface {
    -	return &FakePriorityClasses{c}
    +	return newFakePriorityClasses(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/priorityclass.go
    index 155476e4c727..dcba291e3357 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/priorityclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/scheduling/v1beta1"
    +	schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	schedulingv1beta1 "k8s.io/client-go/applyconfigurations/scheduling/v1beta1"
    +	applyconfigurationsschedulingv1beta1 "k8s.io/client-go/applyconfigurations/scheduling/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // PriorityClassesGetter has a method to return a PriorityClassInterface.
    @@ -41,157 +38,34 @@ type PriorityClassesGetter interface {
     
     // PriorityClassInterface has methods to work with PriorityClass resources.
     type PriorityClassInterface interface {
    -	Create(ctx context.Context, priorityClass *v1beta1.PriorityClass, opts v1.CreateOptions) (*v1beta1.PriorityClass, error)
    -	Update(ctx context.Context, priorityClass *v1beta1.PriorityClass, opts v1.UpdateOptions) (*v1beta1.PriorityClass, error)
    +	Create(ctx context.Context, priorityClass *schedulingv1beta1.PriorityClass, opts v1.CreateOptions) (*schedulingv1beta1.PriorityClass, error)
    +	Update(ctx context.Context, priorityClass *schedulingv1beta1.PriorityClass, opts v1.UpdateOptions) (*schedulingv1beta1.PriorityClass, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.PriorityClass, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.PriorityClassList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*schedulingv1beta1.PriorityClass, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*schedulingv1beta1.PriorityClassList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PriorityClass, err error)
    -	Apply(ctx context.Context, priorityClass *schedulingv1beta1.PriorityClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PriorityClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *schedulingv1beta1.PriorityClass, err error)
    +	Apply(ctx context.Context, priorityClass *applyconfigurationsschedulingv1beta1.PriorityClassApplyConfiguration, opts v1.ApplyOptions) (result *schedulingv1beta1.PriorityClass, err error)
     	PriorityClassExpansion
     }
     
     // priorityClasses implements PriorityClassInterface
     type priorityClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*schedulingv1beta1.PriorityClass, *schedulingv1beta1.PriorityClassList, *applyconfigurationsschedulingv1beta1.PriorityClassApplyConfiguration]
     }
     
     // newPriorityClasses returns a PriorityClasses
     func newPriorityClasses(c *SchedulingV1beta1Client) *priorityClasses {
     	return &priorityClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*schedulingv1beta1.PriorityClass, *schedulingv1beta1.PriorityClassList, *applyconfigurationsschedulingv1beta1.PriorityClassApplyConfiguration](
    +			"priorityclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *schedulingv1beta1.PriorityClass { return &schedulingv1beta1.PriorityClass{} },
    +			func() *schedulingv1beta1.PriorityClassList { return &schedulingv1beta1.PriorityClassList{} },
    +			gentype.PrefersProtobuf[*schedulingv1beta1.PriorityClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the priorityClass, and returns the corresponding priorityClass object, and an error if there is any.
    -func (c *priorityClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.PriorityClass, err error) {
    -	result = &v1beta1.PriorityClass{}
    -	err = c.client.Get().
    -		Resource("priorityclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of PriorityClasses that match those selectors.
    -func (c *priorityClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.PriorityClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.PriorityClassList{}
    -	err = c.client.Get().
    -		Resource("priorityclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested priorityClasses.
    -func (c *priorityClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("priorityclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a priorityClass and creates it.  Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *priorityClasses) Create(ctx context.Context, priorityClass *v1beta1.PriorityClass, opts v1.CreateOptions) (result *v1beta1.PriorityClass, err error) {
    -	result = &v1beta1.PriorityClass{}
    -	err = c.client.Post().
    -		Resource("priorityclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a priorityClass and updates it. Returns the server's representation of the priorityClass, and an error, if there is any.
    -func (c *priorityClasses) Update(ctx context.Context, priorityClass *v1beta1.PriorityClass, opts v1.UpdateOptions) (result *v1beta1.PriorityClass, err error) {
    -	result = &v1beta1.PriorityClass{}
    -	err = c.client.Put().
    -		Resource("priorityclasses").
    -		Name(priorityClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(priorityClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the priorityClass and deletes it. Returns an error if one occurs.
    -func (c *priorityClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("priorityclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *priorityClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("priorityclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched priorityClass.
    -func (c *priorityClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.PriorityClass, err error) {
    -	result = &v1beta1.PriorityClass{}
    -	err = c.client.Patch(pt).
    -		Resource("priorityclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied priorityClass.
    -func (c *priorityClasses) Apply(ctx context.Context, priorityClass *schedulingv1beta1.PriorityClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.PriorityClass, err error) {
    -	if priorityClass == nil {
    -		return nil, fmt.Errorf("priorityClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(priorityClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := priorityClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("priorityClass.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.PriorityClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("priorityclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/scheduling_client.go
    index dbaf69414166..9e383398ea08 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/scheduling_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/scheduling_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/scheduling/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -85,10 +85,10 @@ func New(c rest.Interface) *SchedulingV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := schedulingv1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csidriver.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csidriver.go
    index d9dc4151e218..9eb82f9ed439 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csidriver.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csidriver.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/storage/v1"
    +	storagev1 "k8s.io/api/storage/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	applyconfigurationsstoragev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CSIDriversGetter has a method to return a CSIDriverInterface.
    @@ -41,157 +38,34 @@ type CSIDriversGetter interface {
     
     // CSIDriverInterface has methods to work with CSIDriver resources.
     type CSIDriverInterface interface {
    -	Create(ctx context.Context, cSIDriver *v1.CSIDriver, opts metav1.CreateOptions) (*v1.CSIDriver, error)
    -	Update(ctx context.Context, cSIDriver *v1.CSIDriver, opts metav1.UpdateOptions) (*v1.CSIDriver, error)
    +	Create(ctx context.Context, cSIDriver *storagev1.CSIDriver, opts metav1.CreateOptions) (*storagev1.CSIDriver, error)
    +	Update(ctx context.Context, cSIDriver *storagev1.CSIDriver, opts metav1.UpdateOptions) (*storagev1.CSIDriver, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.CSIDriver, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.CSIDriverList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*storagev1.CSIDriver, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*storagev1.CSIDriverList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CSIDriver, err error)
    -	Apply(ctx context.Context, cSIDriver *storagev1.CSIDriverApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CSIDriver, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *storagev1.CSIDriver, err error)
    +	Apply(ctx context.Context, cSIDriver *applyconfigurationsstoragev1.CSIDriverApplyConfiguration, opts metav1.ApplyOptions) (result *storagev1.CSIDriver, err error)
     	CSIDriverExpansion
     }
     
     // cSIDrivers implements CSIDriverInterface
     type cSIDrivers struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*storagev1.CSIDriver, *storagev1.CSIDriverList, *applyconfigurationsstoragev1.CSIDriverApplyConfiguration]
     }
     
     // newCSIDrivers returns a CSIDrivers
     func newCSIDrivers(c *StorageV1Client) *cSIDrivers {
     	return &cSIDrivers{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*storagev1.CSIDriver, *storagev1.CSIDriverList, *applyconfigurationsstoragev1.CSIDriverApplyConfiguration](
    +			"csidrivers",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1.CSIDriver { return &storagev1.CSIDriver{} },
    +			func() *storagev1.CSIDriverList { return &storagev1.CSIDriverList{} },
    +			gentype.PrefersProtobuf[*storagev1.CSIDriver](),
    +		),
     	}
     }
    -
    -// Get takes name of the cSIDriver, and returns the corresponding cSIDriver object, and an error if there is any.
    -func (c *cSIDrivers) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CSIDriver, err error) {
    -	result = &v1.CSIDriver{}
    -	err = c.client.Get().
    -		Resource("csidrivers").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CSIDrivers that match those selectors.
    -func (c *cSIDrivers) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CSIDriverList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.CSIDriverList{}
    -	err = c.client.Get().
    -		Resource("csidrivers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSIDrivers.
    -func (c *cSIDrivers) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("csidrivers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a cSIDriver and creates it.  Returns the server's representation of the cSIDriver, and an error, if there is any.
    -func (c *cSIDrivers) Create(ctx context.Context, cSIDriver *v1.CSIDriver, opts metav1.CreateOptions) (result *v1.CSIDriver, err error) {
    -	result = &v1.CSIDriver{}
    -	err = c.client.Post().
    -		Resource("csidrivers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSIDriver).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a cSIDriver and updates it. Returns the server's representation of the cSIDriver, and an error, if there is any.
    -func (c *cSIDrivers) Update(ctx context.Context, cSIDriver *v1.CSIDriver, opts metav1.UpdateOptions) (result *v1.CSIDriver, err error) {
    -	result = &v1.CSIDriver{}
    -	err = c.client.Put().
    -		Resource("csidrivers").
    -		Name(cSIDriver.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSIDriver).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the cSIDriver and deletes it. Returns an error if one occurs.
    -func (c *cSIDrivers) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("csidrivers").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *cSIDrivers) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("csidrivers").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched cSIDriver.
    -func (c *cSIDrivers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CSIDriver, err error) {
    -	result = &v1.CSIDriver{}
    -	err = c.client.Patch(pt).
    -		Resource("csidrivers").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSIDriver.
    -func (c *cSIDrivers) Apply(ctx context.Context, cSIDriver *storagev1.CSIDriverApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CSIDriver, err error) {
    -	if cSIDriver == nil {
    -		return nil, fmt.Errorf("cSIDriver provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cSIDriver)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSIDriver.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSIDriver.Name must be provided to Apply")
    -	}
    -	result = &v1.CSIDriver{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("csidrivers").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csinode.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csinode.go
    index 17dbc8c1c8f2..a4fe6a0ee581 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csinode.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csinode.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/storage/v1"
    +	storagev1 "k8s.io/api/storage/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	applyconfigurationsstoragev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CSINodesGetter has a method to return a CSINodeInterface.
    @@ -41,157 +38,34 @@ type CSINodesGetter interface {
     
     // CSINodeInterface has methods to work with CSINode resources.
     type CSINodeInterface interface {
    -	Create(ctx context.Context, cSINode *v1.CSINode, opts metav1.CreateOptions) (*v1.CSINode, error)
    -	Update(ctx context.Context, cSINode *v1.CSINode, opts metav1.UpdateOptions) (*v1.CSINode, error)
    +	Create(ctx context.Context, cSINode *storagev1.CSINode, opts metav1.CreateOptions) (*storagev1.CSINode, error)
    +	Update(ctx context.Context, cSINode *storagev1.CSINode, opts metav1.UpdateOptions) (*storagev1.CSINode, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.CSINode, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.CSINodeList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*storagev1.CSINode, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*storagev1.CSINodeList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CSINode, err error)
    -	Apply(ctx context.Context, cSINode *storagev1.CSINodeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CSINode, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *storagev1.CSINode, err error)
    +	Apply(ctx context.Context, cSINode *applyconfigurationsstoragev1.CSINodeApplyConfiguration, opts metav1.ApplyOptions) (result *storagev1.CSINode, err error)
     	CSINodeExpansion
     }
     
     // cSINodes implements CSINodeInterface
     type cSINodes struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*storagev1.CSINode, *storagev1.CSINodeList, *applyconfigurationsstoragev1.CSINodeApplyConfiguration]
     }
     
     // newCSINodes returns a CSINodes
     func newCSINodes(c *StorageV1Client) *cSINodes {
     	return &cSINodes{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*storagev1.CSINode, *storagev1.CSINodeList, *applyconfigurationsstoragev1.CSINodeApplyConfiguration](
    +			"csinodes",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1.CSINode { return &storagev1.CSINode{} },
    +			func() *storagev1.CSINodeList { return &storagev1.CSINodeList{} },
    +			gentype.PrefersProtobuf[*storagev1.CSINode](),
    +		),
     	}
     }
    -
    -// Get takes name of the cSINode, and returns the corresponding cSINode object, and an error if there is any.
    -func (c *cSINodes) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CSINode, err error) {
    -	result = &v1.CSINode{}
    -	err = c.client.Get().
    -		Resource("csinodes").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CSINodes that match those selectors.
    -func (c *cSINodes) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CSINodeList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.CSINodeList{}
    -	err = c.client.Get().
    -		Resource("csinodes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSINodes.
    -func (c *cSINodes) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("csinodes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a cSINode and creates it.  Returns the server's representation of the cSINode, and an error, if there is any.
    -func (c *cSINodes) Create(ctx context.Context, cSINode *v1.CSINode, opts metav1.CreateOptions) (result *v1.CSINode, err error) {
    -	result = &v1.CSINode{}
    -	err = c.client.Post().
    -		Resource("csinodes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSINode).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a cSINode and updates it. Returns the server's representation of the cSINode, and an error, if there is any.
    -func (c *cSINodes) Update(ctx context.Context, cSINode *v1.CSINode, opts metav1.UpdateOptions) (result *v1.CSINode, err error) {
    -	result = &v1.CSINode{}
    -	err = c.client.Put().
    -		Resource("csinodes").
    -		Name(cSINode.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSINode).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the cSINode and deletes it. Returns an error if one occurs.
    -func (c *cSINodes) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("csinodes").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *cSINodes) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("csinodes").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched cSINode.
    -func (c *cSINodes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CSINode, err error) {
    -	result = &v1.CSINode{}
    -	err = c.client.Patch(pt).
    -		Resource("csinodes").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSINode.
    -func (c *cSINodes) Apply(ctx context.Context, cSINode *storagev1.CSINodeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CSINode, err error) {
    -	if cSINode == nil {
    -		return nil, fmt.Errorf("cSINode provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cSINode)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSINode.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSINode.Name must be provided to Apply")
    -	}
    -	result = &v1.CSINode{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("csinodes").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csistoragecapacity.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csistoragecapacity.go
    index 6bb50e0da98d..50a942978c6b 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csistoragecapacity.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/storage/v1"
    +	storagev1 "k8s.io/api/storage/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	applyconfigurationsstoragev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CSIStorageCapacitiesGetter has a method to return a CSIStorageCapacityInterface.
    @@ -41,168 +38,34 @@ type CSIStorageCapacitiesGetter interface {
     
     // CSIStorageCapacityInterface has methods to work with CSIStorageCapacity resources.
     type CSIStorageCapacityInterface interface {
    -	Create(ctx context.Context, cSIStorageCapacity *v1.CSIStorageCapacity, opts metav1.CreateOptions) (*v1.CSIStorageCapacity, error)
    -	Update(ctx context.Context, cSIStorageCapacity *v1.CSIStorageCapacity, opts metav1.UpdateOptions) (*v1.CSIStorageCapacity, error)
    +	Create(ctx context.Context, cSIStorageCapacity *storagev1.CSIStorageCapacity, opts metav1.CreateOptions) (*storagev1.CSIStorageCapacity, error)
    +	Update(ctx context.Context, cSIStorageCapacity *storagev1.CSIStorageCapacity, opts metav1.UpdateOptions) (*storagev1.CSIStorageCapacity, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.CSIStorageCapacity, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.CSIStorageCapacityList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*storagev1.CSIStorageCapacity, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*storagev1.CSIStorageCapacityList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CSIStorageCapacity, err error)
    -	Apply(ctx context.Context, cSIStorageCapacity *storagev1.CSIStorageCapacityApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CSIStorageCapacity, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *storagev1.CSIStorageCapacity, err error)
    +	Apply(ctx context.Context, cSIStorageCapacity *applyconfigurationsstoragev1.CSIStorageCapacityApplyConfiguration, opts metav1.ApplyOptions) (result *storagev1.CSIStorageCapacity, err error)
     	CSIStorageCapacityExpansion
     }
     
     // cSIStorageCapacities implements CSIStorageCapacityInterface
     type cSIStorageCapacities struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*storagev1.CSIStorageCapacity, *storagev1.CSIStorageCapacityList, *applyconfigurationsstoragev1.CSIStorageCapacityApplyConfiguration]
     }
     
     // newCSIStorageCapacities returns a CSIStorageCapacities
     func newCSIStorageCapacities(c *StorageV1Client, namespace string) *cSIStorageCapacities {
     	return &cSIStorageCapacities{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*storagev1.CSIStorageCapacity, *storagev1.CSIStorageCapacityList, *applyconfigurationsstoragev1.CSIStorageCapacityApplyConfiguration](
    +			"csistoragecapacities",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *storagev1.CSIStorageCapacity { return &storagev1.CSIStorageCapacity{} },
    +			func() *storagev1.CSIStorageCapacityList { return &storagev1.CSIStorageCapacityList{} },
    +			gentype.PrefersProtobuf[*storagev1.CSIStorageCapacity](),
    +		),
     	}
     }
    -
    -// Get takes name of the cSIStorageCapacity, and returns the corresponding cSIStorageCapacity object, and an error if there is any.
    -func (c *cSIStorageCapacities) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CSIStorageCapacity, err error) {
    -	result = &v1.CSIStorageCapacity{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CSIStorageCapacities that match those selectors.
    -func (c *cSIStorageCapacities) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CSIStorageCapacityList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.CSIStorageCapacityList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSIStorageCapacities.
    -func (c *cSIStorageCapacities) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a cSIStorageCapacity and creates it.  Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *cSIStorageCapacities) Create(ctx context.Context, cSIStorageCapacity *v1.CSIStorageCapacity, opts metav1.CreateOptions) (result *v1.CSIStorageCapacity, err error) {
    -	result = &v1.CSIStorageCapacity{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSIStorageCapacity).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a cSIStorageCapacity and updates it. Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *cSIStorageCapacities) Update(ctx context.Context, cSIStorageCapacity *v1.CSIStorageCapacity, opts metav1.UpdateOptions) (result *v1.CSIStorageCapacity, err error) {
    -	result = &v1.CSIStorageCapacity{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(cSIStorageCapacity.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSIStorageCapacity).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the cSIStorageCapacity and deletes it. Returns an error if one occurs.
    -func (c *cSIStorageCapacities) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *cSIStorageCapacities) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched cSIStorageCapacity.
    -func (c *cSIStorageCapacities) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CSIStorageCapacity, err error) {
    -	result = &v1.CSIStorageCapacity{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSIStorageCapacity.
    -func (c *cSIStorageCapacities) Apply(ctx context.Context, cSIStorageCapacity *storagev1.CSIStorageCapacityApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CSIStorageCapacity, err error) {
    -	if cSIStorageCapacity == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cSIStorageCapacity)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSIStorageCapacity.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity.Name must be provided to Apply")
    -	}
    -	result = &v1.CSIStorageCapacity{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csidriver.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csidriver.go
    index 49832273762e..9c6a707254a3 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csidriver.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csidriver.go
    @@ -19,127 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/storage/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1 "k8s.io/client-go/kubernetes/typed/storage/v1"
     )
     
    -// FakeCSIDrivers implements CSIDriverInterface
    -type FakeCSIDrivers struct {
    +// fakeCSIDrivers implements CSIDriverInterface
    +type fakeCSIDrivers struct {
    +	*gentype.FakeClientWithListAndApply[*v1.CSIDriver, *v1.CSIDriverList, *storagev1.CSIDriverApplyConfiguration]
     	Fake *FakeStorageV1
     }
     
    -var csidriversResource = v1.SchemeGroupVersion.WithResource("csidrivers")
    -
    -var csidriversKind = v1.SchemeGroupVersion.WithKind("CSIDriver")
    -
    -// Get takes name of the cSIDriver, and returns the corresponding cSIDriver object, and an error if there is any.
    -func (c *FakeCSIDrivers) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CSIDriver, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(csidriversResource, name), &v1.CSIDriver{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSIDriver), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CSIDrivers that match those selectors.
    -func (c *FakeCSIDrivers) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CSIDriverList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(csidriversResource, csidriversKind, opts), &v1.CSIDriverList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.CSIDriverList{ListMeta: obj.(*v1.CSIDriverList).ListMeta}
    -	for _, item := range obj.(*v1.CSIDriverList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSIDrivers.
    -func (c *FakeCSIDrivers) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(csidriversResource, opts))
    -}
    -
    -// Create takes the representation of a cSIDriver and creates it.  Returns the server's representation of the cSIDriver, and an error, if there is any.
    -func (c *FakeCSIDrivers) Create(ctx context.Context, cSIDriver *v1.CSIDriver, opts metav1.CreateOptions) (result *v1.CSIDriver, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(csidriversResource, cSIDriver), &v1.CSIDriver{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSIDriver), err
    -}
    -
    -// Update takes the representation of a cSIDriver and updates it. Returns the server's representation of the cSIDriver, and an error, if there is any.
    -func (c *FakeCSIDrivers) Update(ctx context.Context, cSIDriver *v1.CSIDriver, opts metav1.UpdateOptions) (result *v1.CSIDriver, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(csidriversResource, cSIDriver), &v1.CSIDriver{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSIDriver), err
    -}
    -
    -// Delete takes name of the cSIDriver and deletes it. Returns an error if one occurs.
    -func (c *FakeCSIDrivers) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(csidriversResource, name, opts), &v1.CSIDriver{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCSIDrivers) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(csidriversResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.CSIDriverList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched cSIDriver.
    -func (c *FakeCSIDrivers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CSIDriver, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(csidriversResource, name, pt, data, subresources...), &v1.CSIDriver{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSIDriver), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSIDriver.
    -func (c *FakeCSIDrivers) Apply(ctx context.Context, cSIDriver *storagev1.CSIDriverApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CSIDriver, err error) {
    -	if cSIDriver == nil {
    -		return nil, fmt.Errorf("cSIDriver provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cSIDriver)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSIDriver.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSIDriver.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(csidriversResource, *name, types.ApplyPatchType, data), &v1.CSIDriver{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeCSIDrivers(fake *FakeStorageV1) typedstoragev1.CSIDriverInterface {
    +	return &fakeCSIDrivers{
    +		gentype.NewFakeClientWithListAndApply[*v1.CSIDriver, *v1.CSIDriverList, *storagev1.CSIDriverApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("csidrivers"),
    +			v1.SchemeGroupVersion.WithKind("CSIDriver"),
    +			func() *v1.CSIDriver { return &v1.CSIDriver{} },
    +			func() *v1.CSIDriverList { return &v1.CSIDriverList{} },
    +			func(dst, src *v1.CSIDriverList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.CSIDriverList) []*v1.CSIDriver { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.CSIDriverList, items []*v1.CSIDriver) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.CSIDriver), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csinode.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csinode.go
    index 0271a20f3d47..2827e6dd62d1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csinode.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csinode.go
    @@ -19,127 +19,31 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/storage/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1 "k8s.io/client-go/kubernetes/typed/storage/v1"
     )
     
    -// FakeCSINodes implements CSINodeInterface
    -type FakeCSINodes struct {
    +// fakeCSINodes implements CSINodeInterface
    +type fakeCSINodes struct {
    +	*gentype.FakeClientWithListAndApply[*v1.CSINode, *v1.CSINodeList, *storagev1.CSINodeApplyConfiguration]
     	Fake *FakeStorageV1
     }
     
    -var csinodesResource = v1.SchemeGroupVersion.WithResource("csinodes")
    -
    -var csinodesKind = v1.SchemeGroupVersion.WithKind("CSINode")
    -
    -// Get takes name of the cSINode, and returns the corresponding cSINode object, and an error if there is any.
    -func (c *FakeCSINodes) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CSINode, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(csinodesResource, name), &v1.CSINode{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSINode), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CSINodes that match those selectors.
    -func (c *FakeCSINodes) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CSINodeList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(csinodesResource, csinodesKind, opts), &v1.CSINodeList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.CSINodeList{ListMeta: obj.(*v1.CSINodeList).ListMeta}
    -	for _, item := range obj.(*v1.CSINodeList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSINodes.
    -func (c *FakeCSINodes) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(csinodesResource, opts))
    -}
    -
    -// Create takes the representation of a cSINode and creates it.  Returns the server's representation of the cSINode, and an error, if there is any.
    -func (c *FakeCSINodes) Create(ctx context.Context, cSINode *v1.CSINode, opts metav1.CreateOptions) (result *v1.CSINode, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(csinodesResource, cSINode), &v1.CSINode{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSINode), err
    -}
    -
    -// Update takes the representation of a cSINode and updates it. Returns the server's representation of the cSINode, and an error, if there is any.
    -func (c *FakeCSINodes) Update(ctx context.Context, cSINode *v1.CSINode, opts metav1.UpdateOptions) (result *v1.CSINode, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(csinodesResource, cSINode), &v1.CSINode{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSINode), err
    -}
    -
    -// Delete takes name of the cSINode and deletes it. Returns an error if one occurs.
    -func (c *FakeCSINodes) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(csinodesResource, name, opts), &v1.CSINode{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCSINodes) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(csinodesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.CSINodeList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched cSINode.
    -func (c *FakeCSINodes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CSINode, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(csinodesResource, name, pt, data, subresources...), &v1.CSINode{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSINode), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSINode.
    -func (c *FakeCSINodes) Apply(ctx context.Context, cSINode *storagev1.CSINodeApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CSINode, err error) {
    -	if cSINode == nil {
    -		return nil, fmt.Errorf("cSINode provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cSINode)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSINode.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSINode.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(csinodesResource, *name, types.ApplyPatchType, data), &v1.CSINode{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeCSINodes(fake *FakeStorageV1) typedstoragev1.CSINodeInterface {
    +	return &fakeCSINodes{
    +		gentype.NewFakeClientWithListAndApply[*v1.CSINode, *v1.CSINodeList, *storagev1.CSINodeApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("csinodes"),
    +			v1.SchemeGroupVersion.WithKind("CSINode"),
    +			func() *v1.CSINode { return &v1.CSINode{} },
    +			func() *v1.CSINodeList { return &v1.CSINodeList{} },
    +			func(dst, src *v1.CSINodeList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.CSINodeList) []*v1.CSINode { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.CSINodeList, items []*v1.CSINode) { list.Items = gentype.FromPointerSlice(items) },
    +		),
    +		fake,
     	}
    -	return obj.(*v1.CSINode), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csistoragecapacity.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csistoragecapacity.go
    index b12bbe3c15c2..ba778c250c91 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_csistoragecapacity.go
    @@ -19,136 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/storage/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1 "k8s.io/client-go/kubernetes/typed/storage/v1"
     )
     
    -// FakeCSIStorageCapacities implements CSIStorageCapacityInterface
    -type FakeCSIStorageCapacities struct {
    +// fakeCSIStorageCapacities implements CSIStorageCapacityInterface
    +type fakeCSIStorageCapacities struct {
    +	*gentype.FakeClientWithListAndApply[*v1.CSIStorageCapacity, *v1.CSIStorageCapacityList, *storagev1.CSIStorageCapacityApplyConfiguration]
     	Fake *FakeStorageV1
    -	ns   string
    -}
    -
    -var csistoragecapacitiesResource = v1.SchemeGroupVersion.WithResource("csistoragecapacities")
    -
    -var csistoragecapacitiesKind = v1.SchemeGroupVersion.WithKind("CSIStorageCapacity")
    -
    -// Get takes name of the cSIStorageCapacity, and returns the corresponding cSIStorageCapacity object, and an error if there is any.
    -func (c *FakeCSIStorageCapacities) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(csistoragecapacitiesResource, c.ns, name), &v1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSIStorageCapacity), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CSIStorageCapacities that match those selectors.
    -func (c *FakeCSIStorageCapacities) List(ctx context.Context, opts metav1.ListOptions) (result *v1.CSIStorageCapacityList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(csistoragecapacitiesResource, csistoragecapacitiesKind, c.ns, opts), &v1.CSIStorageCapacityList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.CSIStorageCapacityList{ListMeta: obj.(*v1.CSIStorageCapacityList).ListMeta}
    -	for _, item := range obj.(*v1.CSIStorageCapacityList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSIStorageCapacities.
    -func (c *FakeCSIStorageCapacities) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(csistoragecapacitiesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a cSIStorageCapacity and creates it.  Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *FakeCSIStorageCapacities) Create(ctx context.Context, cSIStorageCapacity *v1.CSIStorageCapacity, opts metav1.CreateOptions) (result *v1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(csistoragecapacitiesResource, c.ns, cSIStorageCapacity), &v1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSIStorageCapacity), err
    -}
    -
    -// Update takes the representation of a cSIStorageCapacity and updates it. Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *FakeCSIStorageCapacities) Update(ctx context.Context, cSIStorageCapacity *v1.CSIStorageCapacity, opts metav1.UpdateOptions) (result *v1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(csistoragecapacitiesResource, c.ns, cSIStorageCapacity), &v1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSIStorageCapacity), err
    -}
    -
    -// Delete takes name of the cSIStorageCapacity and deletes it. Returns an error if one occurs.
    -func (c *FakeCSIStorageCapacities) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(csistoragecapacitiesResource, c.ns, name, opts), &v1.CSIStorageCapacity{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCSIStorageCapacities) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(csistoragecapacitiesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.CSIStorageCapacityList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched cSIStorageCapacity.
    -func (c *FakeCSIStorageCapacities) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(csistoragecapacitiesResource, c.ns, name, pt, data, subresources...), &v1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.CSIStorageCapacity), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSIStorageCapacity.
    -func (c *FakeCSIStorageCapacities) Apply(ctx context.Context, cSIStorageCapacity *storagev1.CSIStorageCapacityApplyConfiguration, opts metav1.ApplyOptions) (result *v1.CSIStorageCapacity, err error) {
    -	if cSIStorageCapacity == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cSIStorageCapacity)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSIStorageCapacity.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(csistoragecapacitiesResource, c.ns, *name, types.ApplyPatchType, data), &v1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeCSIStorageCapacities(fake *FakeStorageV1, namespace string) typedstoragev1.CSIStorageCapacityInterface {
    +	return &fakeCSIStorageCapacities{
    +		gentype.NewFakeClientWithListAndApply[*v1.CSIStorageCapacity, *v1.CSIStorageCapacityList, *storagev1.CSIStorageCapacityApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1.SchemeGroupVersion.WithResource("csistoragecapacities"),
    +			v1.SchemeGroupVersion.WithKind("CSIStorageCapacity"),
    +			func() *v1.CSIStorageCapacity { return &v1.CSIStorageCapacity{} },
    +			func() *v1.CSIStorageCapacityList { return &v1.CSIStorageCapacityList{} },
    +			func(dst, src *v1.CSIStorageCapacityList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.CSIStorageCapacityList) []*v1.CSIStorageCapacity {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1.CSIStorageCapacityList, items []*v1.CSIStorageCapacity) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.CSIStorageCapacity), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go
    index 5cb91b516640..d922d6a09959 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go
    @@ -29,23 +29,23 @@ type FakeStorageV1 struct {
     }
     
     func (c *FakeStorageV1) CSIDrivers() v1.CSIDriverInterface {
    -	return &FakeCSIDrivers{c}
    +	return newFakeCSIDrivers(c)
     }
     
     func (c *FakeStorageV1) CSINodes() v1.CSINodeInterface {
    -	return &FakeCSINodes{c}
    +	return newFakeCSINodes(c)
     }
     
     func (c *FakeStorageV1) CSIStorageCapacities(namespace string) v1.CSIStorageCapacityInterface {
    -	return &FakeCSIStorageCapacities{c, namespace}
    +	return newFakeCSIStorageCapacities(c, namespace)
     }
     
     func (c *FakeStorageV1) StorageClasses() v1.StorageClassInterface {
    -	return &FakeStorageClasses{c}
    +	return newFakeStorageClasses(c)
     }
     
     func (c *FakeStorageV1) VolumeAttachments() v1.VolumeAttachmentInterface {
    -	return &FakeVolumeAttachments{c}
    +	return newFakeVolumeAttachments(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go
    index e232f4c8d7d3..18cb8eba1d97 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go
    @@ -19,127 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/storage/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1 "k8s.io/client-go/kubernetes/typed/storage/v1"
     )
     
    -// FakeStorageClasses implements StorageClassInterface
    -type FakeStorageClasses struct {
    +// fakeStorageClasses implements StorageClassInterface
    +type fakeStorageClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1.StorageClass, *v1.StorageClassList, *storagev1.StorageClassApplyConfiguration]
     	Fake *FakeStorageV1
     }
     
    -var storageclassesResource = v1.SchemeGroupVersion.WithResource("storageclasses")
    -
    -var storageclassesKind = v1.SchemeGroupVersion.WithKind("StorageClass")
    -
    -// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any.
    -func (c *FakeStorageClasses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.StorageClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(storageclassesResource, name), &v1.StorageClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.StorageClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of StorageClasses that match those selectors.
    -func (c *FakeStorageClasses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.StorageClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(storageclassesResource, storageclassesKind, opts), &v1.StorageClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.StorageClassList{ListMeta: obj.(*v1.StorageClassList).ListMeta}
    -	for _, item := range obj.(*v1.StorageClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested storageClasses.
    -func (c *FakeStorageClasses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(storageclassesResource, opts))
    -}
    -
    -// Create takes the representation of a storageClass and creates it.  Returns the server's representation of the storageClass, and an error, if there is any.
    -func (c *FakeStorageClasses) Create(ctx context.Context, storageClass *v1.StorageClass, opts metav1.CreateOptions) (result *v1.StorageClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(storageclassesResource, storageClass), &v1.StorageClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.StorageClass), err
    -}
    -
    -// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any.
    -func (c *FakeStorageClasses) Update(ctx context.Context, storageClass *v1.StorageClass, opts metav1.UpdateOptions) (result *v1.StorageClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(storageclassesResource, storageClass), &v1.StorageClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.StorageClass), err
    -}
    -
    -// Delete takes name of the storageClass and deletes it. Returns an error if one occurs.
    -func (c *FakeStorageClasses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(storageclassesResource, name, opts), &v1.StorageClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeStorageClasses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(storageclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.StorageClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched storageClass.
    -func (c *FakeStorageClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.StorageClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(storageclassesResource, name, pt, data, subresources...), &v1.StorageClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.StorageClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied storageClass.
    -func (c *FakeStorageClasses) Apply(ctx context.Context, storageClass *storagev1.StorageClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.StorageClass, err error) {
    -	if storageClass == nil {
    -		return nil, fmt.Errorf("storageClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(storageClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := storageClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("storageClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(storageclassesResource, *name, types.ApplyPatchType, data), &v1.StorageClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeStorageClasses(fake *FakeStorageV1) typedstoragev1.StorageClassInterface {
    +	return &fakeStorageClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1.StorageClass, *v1.StorageClassList, *storagev1.StorageClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("storageclasses"),
    +			v1.SchemeGroupVersion.WithKind("StorageClass"),
    +			func() *v1.StorageClass { return &v1.StorageClass{} },
    +			func() *v1.StorageClassList { return &v1.StorageClassList{} },
    +			func(dst, src *v1.StorageClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.StorageClassList) []*v1.StorageClass { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.StorageClassList, items []*v1.StorageClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.StorageClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_volumeattachment.go
    index 3f5f2aec5784..e3bc8d8892c0 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_volumeattachment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_volumeattachment.go
    @@ -19,160 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1 "k8s.io/api/storage/v1"
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1 "k8s.io/client-go/kubernetes/typed/storage/v1"
     )
     
    -// FakeVolumeAttachments implements VolumeAttachmentInterface
    -type FakeVolumeAttachments struct {
    +// fakeVolumeAttachments implements VolumeAttachmentInterface
    +type fakeVolumeAttachments struct {
    +	*gentype.FakeClientWithListAndApply[*v1.VolumeAttachment, *v1.VolumeAttachmentList, *storagev1.VolumeAttachmentApplyConfiguration]
     	Fake *FakeStorageV1
     }
     
    -var volumeattachmentsResource = v1.SchemeGroupVersion.WithResource("volumeattachments")
    -
    -var volumeattachmentsKind = v1.SchemeGroupVersion.WithKind("VolumeAttachment")
    -
    -// Get takes name of the volumeAttachment, and returns the corresponding volumeAttachment object, and an error if there is any.
    -func (c *FakeVolumeAttachments) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(volumeattachmentsResource, name), &v1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.VolumeAttachment), err
    -}
    -
    -// List takes label and field selectors, and returns the list of VolumeAttachments that match those selectors.
    -func (c *FakeVolumeAttachments) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VolumeAttachmentList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(volumeattachmentsResource, volumeattachmentsKind, opts), &v1.VolumeAttachmentList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1.VolumeAttachmentList{ListMeta: obj.(*v1.VolumeAttachmentList).ListMeta}
    -	for _, item := range obj.(*v1.VolumeAttachmentList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested volumeAttachments.
    -func (c *FakeVolumeAttachments) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(volumeattachmentsResource, opts))
    -}
    -
    -// Create takes the representation of a volumeAttachment and creates it.  Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *FakeVolumeAttachments) Create(ctx context.Context, volumeAttachment *v1.VolumeAttachment, opts metav1.CreateOptions) (result *v1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(volumeattachmentsResource, volumeAttachment), &v1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.VolumeAttachment), err
    -}
    -
    -// Update takes the representation of a volumeAttachment and updates it. Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *FakeVolumeAttachments) Update(ctx context.Context, volumeAttachment *v1.VolumeAttachment, opts metav1.UpdateOptions) (result *v1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(volumeattachmentsResource, volumeAttachment), &v1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.VolumeAttachment), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeVolumeAttachments) UpdateStatus(ctx context.Context, volumeAttachment *v1.VolumeAttachment, opts metav1.UpdateOptions) (*v1.VolumeAttachment, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(volumeattachmentsResource, "status", volumeAttachment), &v1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.VolumeAttachment), err
    -}
    -
    -// Delete takes name of the volumeAttachment and deletes it. Returns an error if one occurs.
    -func (c *FakeVolumeAttachments) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(volumeattachmentsResource, name, opts), &v1.VolumeAttachment{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeVolumeAttachments) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(volumeattachmentsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1.VolumeAttachmentList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched volumeAttachment.
    -func (c *FakeVolumeAttachments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, name, pt, data, subresources...), &v1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.VolumeAttachment), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied volumeAttachment.
    -func (c *FakeVolumeAttachments) Apply(ctx context.Context, volumeAttachment *storagev1.VolumeAttachmentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, *name, types.ApplyPatchType, data), &v1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1.VolumeAttachment), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeVolumeAttachments) ApplyStatus(ctx context.Context, volumeAttachment *storagev1.VolumeAttachmentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, *name, types.ApplyPatchType, data, "status"), &v1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeVolumeAttachments(fake *FakeStorageV1) typedstoragev1.VolumeAttachmentInterface {
    +	return &fakeVolumeAttachments{
    +		gentype.NewFakeClientWithListAndApply[*v1.VolumeAttachment, *v1.VolumeAttachmentList, *storagev1.VolumeAttachmentApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1.SchemeGroupVersion.WithResource("volumeattachments"),
    +			v1.SchemeGroupVersion.WithKind("VolumeAttachment"),
    +			func() *v1.VolumeAttachment { return &v1.VolumeAttachment{} },
    +			func() *v1.VolumeAttachmentList { return &v1.VolumeAttachmentList{} },
    +			func(dst, src *v1.VolumeAttachmentList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1.VolumeAttachmentList) []*v1.VolumeAttachment { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1.VolumeAttachmentList, items []*v1.VolumeAttachment) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1.VolumeAttachment), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go
    index 750fe8b62b4e..70aaff169f46 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1 "k8s.io/api/storage/v1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	storagev1 "k8s.io/api/storage/v1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -105,10 +105,10 @@ func New(c rest.Interface) *StorageV1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1.SchemeGroupVersion
    +	gv := storagev1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go
    index 8e97d90a0f33..f33a351f1a6d 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/storage/v1"
    +	storagev1 "k8s.io/api/storage/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	applyconfigurationsstoragev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // StorageClassesGetter has a method to return a StorageClassInterface.
    @@ -41,157 +38,34 @@ type StorageClassesGetter interface {
     
     // StorageClassInterface has methods to work with StorageClass resources.
     type StorageClassInterface interface {
    -	Create(ctx context.Context, storageClass *v1.StorageClass, opts metav1.CreateOptions) (*v1.StorageClass, error)
    -	Update(ctx context.Context, storageClass *v1.StorageClass, opts metav1.UpdateOptions) (*v1.StorageClass, error)
    +	Create(ctx context.Context, storageClass *storagev1.StorageClass, opts metav1.CreateOptions) (*storagev1.StorageClass, error)
    +	Update(ctx context.Context, storageClass *storagev1.StorageClass, opts metav1.UpdateOptions) (*storagev1.StorageClass, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.StorageClass, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.StorageClassList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*storagev1.StorageClass, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*storagev1.StorageClassList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.StorageClass, err error)
    -	Apply(ctx context.Context, storageClass *storagev1.StorageClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.StorageClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *storagev1.StorageClass, err error)
    +	Apply(ctx context.Context, storageClass *applyconfigurationsstoragev1.StorageClassApplyConfiguration, opts metav1.ApplyOptions) (result *storagev1.StorageClass, err error)
     	StorageClassExpansion
     }
     
     // storageClasses implements StorageClassInterface
     type storageClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*storagev1.StorageClass, *storagev1.StorageClassList, *applyconfigurationsstoragev1.StorageClassApplyConfiguration]
     }
     
     // newStorageClasses returns a StorageClasses
     func newStorageClasses(c *StorageV1Client) *storageClasses {
     	return &storageClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*storagev1.StorageClass, *storagev1.StorageClassList, *applyconfigurationsstoragev1.StorageClassApplyConfiguration](
    +			"storageclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1.StorageClass { return &storagev1.StorageClass{} },
    +			func() *storagev1.StorageClassList { return &storagev1.StorageClassList{} },
    +			gentype.PrefersProtobuf[*storagev1.StorageClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any.
    -func (c *storageClasses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.StorageClass, err error) {
    -	result = &v1.StorageClass{}
    -	err = c.client.Get().
    -		Resource("storageclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of StorageClasses that match those selectors.
    -func (c *storageClasses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.StorageClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.StorageClassList{}
    -	err = c.client.Get().
    -		Resource("storageclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested storageClasses.
    -func (c *storageClasses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("storageclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a storageClass and creates it.  Returns the server's representation of the storageClass, and an error, if there is any.
    -func (c *storageClasses) Create(ctx context.Context, storageClass *v1.StorageClass, opts metav1.CreateOptions) (result *v1.StorageClass, err error) {
    -	result = &v1.StorageClass{}
    -	err = c.client.Post().
    -		Resource("storageclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(storageClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any.
    -func (c *storageClasses) Update(ctx context.Context, storageClass *v1.StorageClass, opts metav1.UpdateOptions) (result *v1.StorageClass, err error) {
    -	result = &v1.StorageClass{}
    -	err = c.client.Put().
    -		Resource("storageclasses").
    -		Name(storageClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(storageClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the storageClass and deletes it. Returns an error if one occurs.
    -func (c *storageClasses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("storageclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *storageClasses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("storageclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched storageClass.
    -func (c *storageClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.StorageClass, err error) {
    -	result = &v1.StorageClass{}
    -	err = c.client.Patch(pt).
    -		Resource("storageclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied storageClass.
    -func (c *storageClasses) Apply(ctx context.Context, storageClass *storagev1.StorageClassApplyConfiguration, opts metav1.ApplyOptions) (result *v1.StorageClass, err error) {
    -	if storageClass == nil {
    -		return nil, fmt.Errorf("storageClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(storageClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := storageClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("storageClass.Name must be provided to Apply")
    -	}
    -	result = &v1.StorageClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("storageclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/volumeattachment.go
    index c1dbec84f478..60db4844fb78 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/volumeattachment.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1 "k8s.io/api/storage/v1"
    +	storagev1 "k8s.io/api/storage/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	applyconfigurationsstoragev1 "k8s.io/client-go/applyconfigurations/storage/v1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // VolumeAttachmentsGetter has a method to return a VolumeAttachmentInterface.
    @@ -41,203 +38,38 @@ type VolumeAttachmentsGetter interface {
     
     // VolumeAttachmentInterface has methods to work with VolumeAttachment resources.
     type VolumeAttachmentInterface interface {
    -	Create(ctx context.Context, volumeAttachment *v1.VolumeAttachment, opts metav1.CreateOptions) (*v1.VolumeAttachment, error)
    -	Update(ctx context.Context, volumeAttachment *v1.VolumeAttachment, opts metav1.UpdateOptions) (*v1.VolumeAttachment, error)
    -	UpdateStatus(ctx context.Context, volumeAttachment *v1.VolumeAttachment, opts metav1.UpdateOptions) (*v1.VolumeAttachment, error)
    +	Create(ctx context.Context, volumeAttachment *storagev1.VolumeAttachment, opts metav1.CreateOptions) (*storagev1.VolumeAttachment, error)
    +	Update(ctx context.Context, volumeAttachment *storagev1.VolumeAttachment, opts metav1.UpdateOptions) (*storagev1.VolumeAttachment, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, volumeAttachment *storagev1.VolumeAttachment, opts metav1.UpdateOptions) (*storagev1.VolumeAttachment, error)
     	Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error
    -	Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.VolumeAttachment, error)
    -	List(ctx context.Context, opts metav1.ListOptions) (*v1.VolumeAttachmentList, error)
    +	Get(ctx context.Context, name string, opts metav1.GetOptions) (*storagev1.VolumeAttachment, error)
    +	List(ctx context.Context, opts metav1.ListOptions) (*storagev1.VolumeAttachmentList, error)
     	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.VolumeAttachment, err error)
    -	Apply(ctx context.Context, volumeAttachment *storagev1.VolumeAttachmentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.VolumeAttachment, err error)
    -	ApplyStatus(ctx context.Context, volumeAttachment *storagev1.VolumeAttachmentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.VolumeAttachment, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *storagev1.VolumeAttachment, err error)
    +	Apply(ctx context.Context, volumeAttachment *applyconfigurationsstoragev1.VolumeAttachmentApplyConfiguration, opts metav1.ApplyOptions) (result *storagev1.VolumeAttachment, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, volumeAttachment *applyconfigurationsstoragev1.VolumeAttachmentApplyConfiguration, opts metav1.ApplyOptions) (result *storagev1.VolumeAttachment, err error)
     	VolumeAttachmentExpansion
     }
     
     // volumeAttachments implements VolumeAttachmentInterface
     type volumeAttachments struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*storagev1.VolumeAttachment, *storagev1.VolumeAttachmentList, *applyconfigurationsstoragev1.VolumeAttachmentApplyConfiguration]
     }
     
     // newVolumeAttachments returns a VolumeAttachments
     func newVolumeAttachments(c *StorageV1Client) *volumeAttachments {
     	return &volumeAttachments{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*storagev1.VolumeAttachment, *storagev1.VolumeAttachmentList, *applyconfigurationsstoragev1.VolumeAttachmentApplyConfiguration](
    +			"volumeattachments",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1.VolumeAttachment { return &storagev1.VolumeAttachment{} },
    +			func() *storagev1.VolumeAttachmentList { return &storagev1.VolumeAttachmentList{} },
    +			gentype.PrefersProtobuf[*storagev1.VolumeAttachment](),
    +		),
     	}
     }
    -
    -// Get takes name of the volumeAttachment, and returns the corresponding volumeAttachment object, and an error if there is any.
    -func (c *volumeAttachments) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.VolumeAttachment, err error) {
    -	result = &v1.VolumeAttachment{}
    -	err = c.client.Get().
    -		Resource("volumeattachments").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of VolumeAttachments that match those selectors.
    -func (c *volumeAttachments) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VolumeAttachmentList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1.VolumeAttachmentList{}
    -	err = c.client.Get().
    -		Resource("volumeattachments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested volumeAttachments.
    -func (c *volumeAttachments) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("volumeattachments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a volumeAttachment and creates it.  Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *volumeAttachments) Create(ctx context.Context, volumeAttachment *v1.VolumeAttachment, opts metav1.CreateOptions) (result *v1.VolumeAttachment, err error) {
    -	result = &v1.VolumeAttachment{}
    -	err = c.client.Post().
    -		Resource("volumeattachments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttachment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a volumeAttachment and updates it. Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *volumeAttachments) Update(ctx context.Context, volumeAttachment *v1.VolumeAttachment, opts metav1.UpdateOptions) (result *v1.VolumeAttachment, err error) {
    -	result = &v1.VolumeAttachment{}
    -	err = c.client.Put().
    -		Resource("volumeattachments").
    -		Name(volumeAttachment.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttachment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *volumeAttachments) UpdateStatus(ctx context.Context, volumeAttachment *v1.VolumeAttachment, opts metav1.UpdateOptions) (result *v1.VolumeAttachment, err error) {
    -	result = &v1.VolumeAttachment{}
    -	err = c.client.Put().
    -		Resource("volumeattachments").
    -		Name(volumeAttachment.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttachment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the volumeAttachment and deletes it. Returns an error if one occurs.
    -func (c *volumeAttachments) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("volumeattachments").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *volumeAttachments) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("volumeattachments").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched volumeAttachment.
    -func (c *volumeAttachments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.VolumeAttachment, err error) {
    -	result = &v1.VolumeAttachment{}
    -	err = c.client.Patch(pt).
    -		Resource("volumeattachments").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied volumeAttachment.
    -func (c *volumeAttachments) Apply(ctx context.Context, volumeAttachment *storagev1.VolumeAttachmentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -	result = &v1.VolumeAttachment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("volumeattachments").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *volumeAttachments) ApplyStatus(ctx context.Context, volumeAttachment *storagev1.VolumeAttachmentApplyConfiguration, opts metav1.ApplyOptions) (result *v1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -
    -	result = &v1.VolumeAttachment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("volumeattachments").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/csistoragecapacity.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/csistoragecapacity.go
    index bf5d64dddcb2..63ca27fa491a 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/csistoragecapacity.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/storage/v1alpha1"
    +	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1alpha1 "k8s.io/client-go/applyconfigurations/storage/v1alpha1"
    +	applyconfigurationsstoragev1alpha1 "k8s.io/client-go/applyconfigurations/storage/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CSIStorageCapacitiesGetter has a method to return a CSIStorageCapacityInterface.
    @@ -41,168 +38,34 @@ type CSIStorageCapacitiesGetter interface {
     
     // CSIStorageCapacityInterface has methods to work with CSIStorageCapacity resources.
     type CSIStorageCapacityInterface interface {
    -	Create(ctx context.Context, cSIStorageCapacity *v1alpha1.CSIStorageCapacity, opts v1.CreateOptions) (*v1alpha1.CSIStorageCapacity, error)
    -	Update(ctx context.Context, cSIStorageCapacity *v1alpha1.CSIStorageCapacity, opts v1.UpdateOptions) (*v1alpha1.CSIStorageCapacity, error)
    +	Create(ctx context.Context, cSIStorageCapacity *storagev1alpha1.CSIStorageCapacity, opts v1.CreateOptions) (*storagev1alpha1.CSIStorageCapacity, error)
    +	Update(ctx context.Context, cSIStorageCapacity *storagev1alpha1.CSIStorageCapacity, opts v1.UpdateOptions) (*storagev1alpha1.CSIStorageCapacity, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.CSIStorageCapacity, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.CSIStorageCapacityList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*storagev1alpha1.CSIStorageCapacity, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*storagev1alpha1.CSIStorageCapacityList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.CSIStorageCapacity, err error)
    -	Apply(ctx context.Context, cSIStorageCapacity *storagev1alpha1.CSIStorageCapacityApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.CSIStorageCapacity, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *storagev1alpha1.CSIStorageCapacity, err error)
    +	Apply(ctx context.Context, cSIStorageCapacity *applyconfigurationsstoragev1alpha1.CSIStorageCapacityApplyConfiguration, opts v1.ApplyOptions) (result *storagev1alpha1.CSIStorageCapacity, err error)
     	CSIStorageCapacityExpansion
     }
     
     // cSIStorageCapacities implements CSIStorageCapacityInterface
     type cSIStorageCapacities struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*storagev1alpha1.CSIStorageCapacity, *storagev1alpha1.CSIStorageCapacityList, *applyconfigurationsstoragev1alpha1.CSIStorageCapacityApplyConfiguration]
     }
     
     // newCSIStorageCapacities returns a CSIStorageCapacities
     func newCSIStorageCapacities(c *StorageV1alpha1Client, namespace string) *cSIStorageCapacities {
     	return &cSIStorageCapacities{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*storagev1alpha1.CSIStorageCapacity, *storagev1alpha1.CSIStorageCapacityList, *applyconfigurationsstoragev1alpha1.CSIStorageCapacityApplyConfiguration](
    +			"csistoragecapacities",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *storagev1alpha1.CSIStorageCapacity { return &storagev1alpha1.CSIStorageCapacity{} },
    +			func() *storagev1alpha1.CSIStorageCapacityList { return &storagev1alpha1.CSIStorageCapacityList{} },
    +			gentype.PrefersProtobuf[*storagev1alpha1.CSIStorageCapacity](),
    +		),
     	}
     }
    -
    -// Get takes name of the cSIStorageCapacity, and returns the corresponding cSIStorageCapacity object, and an error if there is any.
    -func (c *cSIStorageCapacities) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.CSIStorageCapacity, err error) {
    -	result = &v1alpha1.CSIStorageCapacity{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CSIStorageCapacities that match those selectors.
    -func (c *cSIStorageCapacities) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.CSIStorageCapacityList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.CSIStorageCapacityList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSIStorageCapacities.
    -func (c *cSIStorageCapacities) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a cSIStorageCapacity and creates it.  Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *cSIStorageCapacities) Create(ctx context.Context, cSIStorageCapacity *v1alpha1.CSIStorageCapacity, opts v1.CreateOptions) (result *v1alpha1.CSIStorageCapacity, err error) {
    -	result = &v1alpha1.CSIStorageCapacity{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSIStorageCapacity).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a cSIStorageCapacity and updates it. Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *cSIStorageCapacities) Update(ctx context.Context, cSIStorageCapacity *v1alpha1.CSIStorageCapacity, opts v1.UpdateOptions) (result *v1alpha1.CSIStorageCapacity, err error) {
    -	result = &v1alpha1.CSIStorageCapacity{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(cSIStorageCapacity.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSIStorageCapacity).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the cSIStorageCapacity and deletes it. Returns an error if one occurs.
    -func (c *cSIStorageCapacities) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *cSIStorageCapacities) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched cSIStorageCapacity.
    -func (c *cSIStorageCapacities) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.CSIStorageCapacity, err error) {
    -	result = &v1alpha1.CSIStorageCapacity{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSIStorageCapacity.
    -func (c *cSIStorageCapacities) Apply(ctx context.Context, cSIStorageCapacity *storagev1alpha1.CSIStorageCapacityApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.CSIStorageCapacity, err error) {
    -	if cSIStorageCapacity == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cSIStorageCapacity)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSIStorageCapacity.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.CSIStorageCapacity{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_csistoragecapacity.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_csistoragecapacity.go
    index c1614cda7dcb..3dc54275433a 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_csistoragecapacity.go
    @@ -19,136 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/storage/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1alpha1 "k8s.io/client-go/applyconfigurations/storage/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1alpha1 "k8s.io/client-go/kubernetes/typed/storage/v1alpha1"
     )
     
    -// FakeCSIStorageCapacities implements CSIStorageCapacityInterface
    -type FakeCSIStorageCapacities struct {
    +// fakeCSIStorageCapacities implements CSIStorageCapacityInterface
    +type fakeCSIStorageCapacities struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.CSIStorageCapacity, *v1alpha1.CSIStorageCapacityList, *storagev1alpha1.CSIStorageCapacityApplyConfiguration]
     	Fake *FakeStorageV1alpha1
    -	ns   string
    -}
    -
    -var csistoragecapacitiesResource = v1alpha1.SchemeGroupVersion.WithResource("csistoragecapacities")
    -
    -var csistoragecapacitiesKind = v1alpha1.SchemeGroupVersion.WithKind("CSIStorageCapacity")
    -
    -// Get takes name of the cSIStorageCapacity, and returns the corresponding cSIStorageCapacity object, and an error if there is any.
    -func (c *FakeCSIStorageCapacities) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(csistoragecapacitiesResource, c.ns, name), &v1alpha1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.CSIStorageCapacity), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CSIStorageCapacities that match those selectors.
    -func (c *FakeCSIStorageCapacities) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.CSIStorageCapacityList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(csistoragecapacitiesResource, csistoragecapacitiesKind, c.ns, opts), &v1alpha1.CSIStorageCapacityList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.CSIStorageCapacityList{ListMeta: obj.(*v1alpha1.CSIStorageCapacityList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.CSIStorageCapacityList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSIStorageCapacities.
    -func (c *FakeCSIStorageCapacities) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(csistoragecapacitiesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a cSIStorageCapacity and creates it.  Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *FakeCSIStorageCapacities) Create(ctx context.Context, cSIStorageCapacity *v1alpha1.CSIStorageCapacity, opts v1.CreateOptions) (result *v1alpha1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(csistoragecapacitiesResource, c.ns, cSIStorageCapacity), &v1alpha1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.CSIStorageCapacity), err
    -}
    -
    -// Update takes the representation of a cSIStorageCapacity and updates it. Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *FakeCSIStorageCapacities) Update(ctx context.Context, cSIStorageCapacity *v1alpha1.CSIStorageCapacity, opts v1.UpdateOptions) (result *v1alpha1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(csistoragecapacitiesResource, c.ns, cSIStorageCapacity), &v1alpha1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.CSIStorageCapacity), err
    -}
    -
    -// Delete takes name of the cSIStorageCapacity and deletes it. Returns an error if one occurs.
    -func (c *FakeCSIStorageCapacities) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(csistoragecapacitiesResource, c.ns, name, opts), &v1alpha1.CSIStorageCapacity{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCSIStorageCapacities) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(csistoragecapacitiesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.CSIStorageCapacityList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched cSIStorageCapacity.
    -func (c *FakeCSIStorageCapacities) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(csistoragecapacitiesResource, c.ns, name, pt, data, subresources...), &v1alpha1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.CSIStorageCapacity), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSIStorageCapacity.
    -func (c *FakeCSIStorageCapacities) Apply(ctx context.Context, cSIStorageCapacity *storagev1alpha1.CSIStorageCapacityApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.CSIStorageCapacity, err error) {
    -	if cSIStorageCapacity == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cSIStorageCapacity)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSIStorageCapacity.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(csistoragecapacitiesResource, c.ns, *name, types.ApplyPatchType, data), &v1alpha1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeCSIStorageCapacities(fake *FakeStorageV1alpha1, namespace string) typedstoragev1alpha1.CSIStorageCapacityInterface {
    +	return &fakeCSIStorageCapacities{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.CSIStorageCapacity, *v1alpha1.CSIStorageCapacityList, *storagev1alpha1.CSIStorageCapacityApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1alpha1.SchemeGroupVersion.WithResource("csistoragecapacities"),
    +			v1alpha1.SchemeGroupVersion.WithKind("CSIStorageCapacity"),
    +			func() *v1alpha1.CSIStorageCapacity { return &v1alpha1.CSIStorageCapacity{} },
    +			func() *v1alpha1.CSIStorageCapacityList { return &v1alpha1.CSIStorageCapacityList{} },
    +			func(dst, src *v1alpha1.CSIStorageCapacityList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.CSIStorageCapacityList) []*v1alpha1.CSIStorageCapacity {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.CSIStorageCapacityList, items []*v1alpha1.CSIStorageCapacity) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.CSIStorageCapacity), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_storage_client.go
    index 0e078f34861d..b5670cbddf99 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_storage_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_storage_client.go
    @@ -29,15 +29,15 @@ type FakeStorageV1alpha1 struct {
     }
     
     func (c *FakeStorageV1alpha1) CSIStorageCapacities(namespace string) v1alpha1.CSIStorageCapacityInterface {
    -	return &FakeCSIStorageCapacities{c, namespace}
    +	return newFakeCSIStorageCapacities(c, namespace)
     }
     
     func (c *FakeStorageV1alpha1) VolumeAttachments() v1alpha1.VolumeAttachmentInterface {
    -	return &FakeVolumeAttachments{c}
    +	return newFakeVolumeAttachments(c)
     }
     
     func (c *FakeStorageV1alpha1) VolumeAttributesClasses() v1alpha1.VolumeAttributesClassInterface {
    -	return &FakeVolumeAttributesClasses{c}
    +	return newFakeVolumeAttributesClasses(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattachment.go
    index 9725d6d10bab..a4c230709ce8 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattachment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattachment.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/storage/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1alpha1 "k8s.io/client-go/applyconfigurations/storage/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1alpha1 "k8s.io/client-go/kubernetes/typed/storage/v1alpha1"
     )
     
    -// FakeVolumeAttachments implements VolumeAttachmentInterface
    -type FakeVolumeAttachments struct {
    +// fakeVolumeAttachments implements VolumeAttachmentInterface
    +type fakeVolumeAttachments struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.VolumeAttachment, *v1alpha1.VolumeAttachmentList, *storagev1alpha1.VolumeAttachmentApplyConfiguration]
     	Fake *FakeStorageV1alpha1
     }
     
    -var volumeattachmentsResource = v1alpha1.SchemeGroupVersion.WithResource("volumeattachments")
    -
    -var volumeattachmentsKind = v1alpha1.SchemeGroupVersion.WithKind("VolumeAttachment")
    -
    -// Get takes name of the volumeAttachment, and returns the corresponding volumeAttachment object, and an error if there is any.
    -func (c *FakeVolumeAttachments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(volumeattachmentsResource, name), &v1alpha1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.VolumeAttachment), err
    -}
    -
    -// List takes label and field selectors, and returns the list of VolumeAttachments that match those selectors.
    -func (c *FakeVolumeAttachments) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.VolumeAttachmentList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(volumeattachmentsResource, volumeattachmentsKind, opts), &v1alpha1.VolumeAttachmentList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.VolumeAttachmentList{ListMeta: obj.(*v1alpha1.VolumeAttachmentList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.VolumeAttachmentList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested volumeAttachments.
    -func (c *FakeVolumeAttachments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(volumeattachmentsResource, opts))
    -}
    -
    -// Create takes the representation of a volumeAttachment and creates it.  Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *FakeVolumeAttachments) Create(ctx context.Context, volumeAttachment *v1alpha1.VolumeAttachment, opts v1.CreateOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(volumeattachmentsResource, volumeAttachment), &v1alpha1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.VolumeAttachment), err
    -}
    -
    -// Update takes the representation of a volumeAttachment and updates it. Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *FakeVolumeAttachments) Update(ctx context.Context, volumeAttachment *v1alpha1.VolumeAttachment, opts v1.UpdateOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(volumeattachmentsResource, volumeAttachment), &v1alpha1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.VolumeAttachment), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeVolumeAttachments) UpdateStatus(ctx context.Context, volumeAttachment *v1alpha1.VolumeAttachment, opts v1.UpdateOptions) (*v1alpha1.VolumeAttachment, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(volumeattachmentsResource, "status", volumeAttachment), &v1alpha1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.VolumeAttachment), err
    -}
    -
    -// Delete takes name of the volumeAttachment and deletes it. Returns an error if one occurs.
    -func (c *FakeVolumeAttachments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(volumeattachmentsResource, name, opts), &v1alpha1.VolumeAttachment{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeVolumeAttachments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(volumeattachmentsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.VolumeAttachmentList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched volumeAttachment.
    -func (c *FakeVolumeAttachments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, name, pt, data, subresources...), &v1alpha1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.VolumeAttachment), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied volumeAttachment.
    -func (c *FakeVolumeAttachments) Apply(ctx context.Context, volumeAttachment *storagev1alpha1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, *name, types.ApplyPatchType, data), &v1alpha1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.VolumeAttachment), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeVolumeAttachments) ApplyStatus(ctx context.Context, volumeAttachment *storagev1alpha1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, *name, types.ApplyPatchType, data, "status"), &v1alpha1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeVolumeAttachments(fake *FakeStorageV1alpha1) typedstoragev1alpha1.VolumeAttachmentInterface {
    +	return &fakeVolumeAttachments{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.VolumeAttachment, *v1alpha1.VolumeAttachmentList, *storagev1alpha1.VolumeAttachmentApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("volumeattachments"),
    +			v1alpha1.SchemeGroupVersion.WithKind("VolumeAttachment"),
    +			func() *v1alpha1.VolumeAttachment { return &v1alpha1.VolumeAttachment{} },
    +			func() *v1alpha1.VolumeAttachmentList { return &v1alpha1.VolumeAttachmentList{} },
    +			func(dst, src *v1alpha1.VolumeAttachmentList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.VolumeAttachmentList) []*v1alpha1.VolumeAttachment {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.VolumeAttachmentList, items []*v1alpha1.VolumeAttachment) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.VolumeAttachment), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattributesclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattributesclass.go
    index d25263df48c9..8fab41a73eff 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattributesclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattributesclass.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1alpha1 "k8s.io/api/storage/v1alpha1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1alpha1 "k8s.io/client-go/applyconfigurations/storage/v1alpha1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1alpha1 "k8s.io/client-go/kubernetes/typed/storage/v1alpha1"
     )
     
    -// FakeVolumeAttributesClasses implements VolumeAttributesClassInterface
    -type FakeVolumeAttributesClasses struct {
    +// fakeVolumeAttributesClasses implements VolumeAttributesClassInterface
    +type fakeVolumeAttributesClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.VolumeAttributesClass, *v1alpha1.VolumeAttributesClassList, *storagev1alpha1.VolumeAttributesClassApplyConfiguration]
     	Fake *FakeStorageV1alpha1
     }
     
    -var volumeattributesclassesResource = v1alpha1.SchemeGroupVersion.WithResource("volumeattributesclasses")
    -
    -var volumeattributesclassesKind = v1alpha1.SchemeGroupVersion.WithKind("VolumeAttributesClass")
    -
    -// Get takes name of the volumeAttributesClass, and returns the corresponding volumeAttributesClass object, and an error if there is any.
    -func (c *FakeVolumeAttributesClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.VolumeAttributesClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(volumeattributesclassesResource, name), &v1alpha1.VolumeAttributesClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.VolumeAttributesClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of VolumeAttributesClasses that match those selectors.
    -func (c *FakeVolumeAttributesClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.VolumeAttributesClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(volumeattributesclassesResource, volumeattributesclassesKind, opts), &v1alpha1.VolumeAttributesClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1alpha1.VolumeAttributesClassList{ListMeta: obj.(*v1alpha1.VolumeAttributesClassList).ListMeta}
    -	for _, item := range obj.(*v1alpha1.VolumeAttributesClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested volumeAttributesClasses.
    -func (c *FakeVolumeAttributesClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(volumeattributesclassesResource, opts))
    -}
    -
    -// Create takes the representation of a volumeAttributesClass and creates it.  Returns the server's representation of the volumeAttributesClass, and an error, if there is any.
    -func (c *FakeVolumeAttributesClasses) Create(ctx context.Context, volumeAttributesClass *v1alpha1.VolumeAttributesClass, opts v1.CreateOptions) (result *v1alpha1.VolumeAttributesClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(volumeattributesclassesResource, volumeAttributesClass), &v1alpha1.VolumeAttributesClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.VolumeAttributesClass), err
    -}
    -
    -// Update takes the representation of a volumeAttributesClass and updates it. Returns the server's representation of the volumeAttributesClass, and an error, if there is any.
    -func (c *FakeVolumeAttributesClasses) Update(ctx context.Context, volumeAttributesClass *v1alpha1.VolumeAttributesClass, opts v1.UpdateOptions) (result *v1alpha1.VolumeAttributesClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(volumeattributesclassesResource, volumeAttributesClass), &v1alpha1.VolumeAttributesClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.VolumeAttributesClass), err
    -}
    -
    -// Delete takes name of the volumeAttributesClass and deletes it. Returns an error if one occurs.
    -func (c *FakeVolumeAttributesClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(volumeattributesclassesResource, name, opts), &v1alpha1.VolumeAttributesClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeVolumeAttributesClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(volumeattributesclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1alpha1.VolumeAttributesClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched volumeAttributesClass.
    -func (c *FakeVolumeAttributesClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.VolumeAttributesClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattributesclassesResource, name, pt, data, subresources...), &v1alpha1.VolumeAttributesClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1alpha1.VolumeAttributesClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied volumeAttributesClass.
    -func (c *FakeVolumeAttributesClasses) Apply(ctx context.Context, volumeAttributesClass *storagev1alpha1.VolumeAttributesClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.VolumeAttributesClass, err error) {
    -	if volumeAttributesClass == nil {
    -		return nil, fmt.Errorf("volumeAttributesClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(volumeAttributesClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttributesClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttributesClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattributesclassesResource, *name, types.ApplyPatchType, data), &v1alpha1.VolumeAttributesClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeVolumeAttributesClasses(fake *FakeStorageV1alpha1) typedstoragev1alpha1.VolumeAttributesClassInterface {
    +	return &fakeVolumeAttributesClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.VolumeAttributesClass, *v1alpha1.VolumeAttributesClassList, *storagev1alpha1.VolumeAttributesClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("volumeattributesclasses"),
    +			v1alpha1.SchemeGroupVersion.WithKind("VolumeAttributesClass"),
    +			func() *v1alpha1.VolumeAttributesClass { return &v1alpha1.VolumeAttributesClass{} },
    +			func() *v1alpha1.VolumeAttributesClassList { return &v1alpha1.VolumeAttributesClassList{} },
    +			func(dst, src *v1alpha1.VolumeAttributesClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.VolumeAttributesClassList) []*v1alpha1.VolumeAttributesClass {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.VolumeAttributesClassList, items []*v1alpha1.VolumeAttributesClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1alpha1.VolumeAttributesClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/storage_client.go
    index 63e3fc243f9f..17b680d19919 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/storage_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/storage_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1alpha1 "k8s.io/api/storage/v1alpha1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -95,10 +95,10 @@ func New(c rest.Interface) *StorageV1alpha1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1alpha1.SchemeGroupVersion
    +	gv := storagev1alpha1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattachment.go
    index 58abb748f9e4..d9c24ab5b588 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattachment.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/storage/v1alpha1"
    +	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1alpha1 "k8s.io/client-go/applyconfigurations/storage/v1alpha1"
    +	applyconfigurationsstoragev1alpha1 "k8s.io/client-go/applyconfigurations/storage/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // VolumeAttachmentsGetter has a method to return a VolumeAttachmentInterface.
    @@ -41,203 +38,38 @@ type VolumeAttachmentsGetter interface {
     
     // VolumeAttachmentInterface has methods to work with VolumeAttachment resources.
     type VolumeAttachmentInterface interface {
    -	Create(ctx context.Context, volumeAttachment *v1alpha1.VolumeAttachment, opts v1.CreateOptions) (*v1alpha1.VolumeAttachment, error)
    -	Update(ctx context.Context, volumeAttachment *v1alpha1.VolumeAttachment, opts v1.UpdateOptions) (*v1alpha1.VolumeAttachment, error)
    -	UpdateStatus(ctx context.Context, volumeAttachment *v1alpha1.VolumeAttachment, opts v1.UpdateOptions) (*v1alpha1.VolumeAttachment, error)
    +	Create(ctx context.Context, volumeAttachment *storagev1alpha1.VolumeAttachment, opts v1.CreateOptions) (*storagev1alpha1.VolumeAttachment, error)
    +	Update(ctx context.Context, volumeAttachment *storagev1alpha1.VolumeAttachment, opts v1.UpdateOptions) (*storagev1alpha1.VolumeAttachment, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, volumeAttachment *storagev1alpha1.VolumeAttachment, opts v1.UpdateOptions) (*storagev1alpha1.VolumeAttachment, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.VolumeAttachment, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.VolumeAttachmentList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*storagev1alpha1.VolumeAttachment, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*storagev1alpha1.VolumeAttachmentList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.VolumeAttachment, err error)
    -	Apply(ctx context.Context, volumeAttachment *storagev1alpha1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.VolumeAttachment, err error)
    -	ApplyStatus(ctx context.Context, volumeAttachment *storagev1alpha1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.VolumeAttachment, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *storagev1alpha1.VolumeAttachment, err error)
    +	Apply(ctx context.Context, volumeAttachment *applyconfigurationsstoragev1alpha1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *storagev1alpha1.VolumeAttachment, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, volumeAttachment *applyconfigurationsstoragev1alpha1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *storagev1alpha1.VolumeAttachment, err error)
     	VolumeAttachmentExpansion
     }
     
     // volumeAttachments implements VolumeAttachmentInterface
     type volumeAttachments struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*storagev1alpha1.VolumeAttachment, *storagev1alpha1.VolumeAttachmentList, *applyconfigurationsstoragev1alpha1.VolumeAttachmentApplyConfiguration]
     }
     
     // newVolumeAttachments returns a VolumeAttachments
     func newVolumeAttachments(c *StorageV1alpha1Client) *volumeAttachments {
     	return &volumeAttachments{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*storagev1alpha1.VolumeAttachment, *storagev1alpha1.VolumeAttachmentList, *applyconfigurationsstoragev1alpha1.VolumeAttachmentApplyConfiguration](
    +			"volumeattachments",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1alpha1.VolumeAttachment { return &storagev1alpha1.VolumeAttachment{} },
    +			func() *storagev1alpha1.VolumeAttachmentList { return &storagev1alpha1.VolumeAttachmentList{} },
    +			gentype.PrefersProtobuf[*storagev1alpha1.VolumeAttachment](),
    +		),
     	}
     }
    -
    -// Get takes name of the volumeAttachment, and returns the corresponding volumeAttachment object, and an error if there is any.
    -func (c *volumeAttachments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	result = &v1alpha1.VolumeAttachment{}
    -	err = c.client.Get().
    -		Resource("volumeattachments").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of VolumeAttachments that match those selectors.
    -func (c *volumeAttachments) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.VolumeAttachmentList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.VolumeAttachmentList{}
    -	err = c.client.Get().
    -		Resource("volumeattachments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested volumeAttachments.
    -func (c *volumeAttachments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("volumeattachments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a volumeAttachment and creates it.  Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *volumeAttachments) Create(ctx context.Context, volumeAttachment *v1alpha1.VolumeAttachment, opts v1.CreateOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	result = &v1alpha1.VolumeAttachment{}
    -	err = c.client.Post().
    -		Resource("volumeattachments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttachment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a volumeAttachment and updates it. Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *volumeAttachments) Update(ctx context.Context, volumeAttachment *v1alpha1.VolumeAttachment, opts v1.UpdateOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	result = &v1alpha1.VolumeAttachment{}
    -	err = c.client.Put().
    -		Resource("volumeattachments").
    -		Name(volumeAttachment.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttachment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *volumeAttachments) UpdateStatus(ctx context.Context, volumeAttachment *v1alpha1.VolumeAttachment, opts v1.UpdateOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	result = &v1alpha1.VolumeAttachment{}
    -	err = c.client.Put().
    -		Resource("volumeattachments").
    -		Name(volumeAttachment.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttachment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the volumeAttachment and deletes it. Returns an error if one occurs.
    -func (c *volumeAttachments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("volumeattachments").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *volumeAttachments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("volumeattachments").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched volumeAttachment.
    -func (c *volumeAttachments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.VolumeAttachment, err error) {
    -	result = &v1alpha1.VolumeAttachment{}
    -	err = c.client.Patch(pt).
    -		Resource("volumeattachments").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied volumeAttachment.
    -func (c *volumeAttachments) Apply(ctx context.Context, volumeAttachment *storagev1alpha1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.VolumeAttachment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("volumeattachments").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *volumeAttachments) ApplyStatus(ctx context.Context, volumeAttachment *storagev1alpha1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -
    -	result = &v1alpha1.VolumeAttachment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("volumeattachments").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattributesclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattributesclass.go
    index 6633a4dc1502..ef7d6f4baa78 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattributesclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattributesclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1alpha1 "k8s.io/api/storage/v1alpha1"
    +	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1alpha1 "k8s.io/client-go/applyconfigurations/storage/v1alpha1"
    +	applyconfigurationsstoragev1alpha1 "k8s.io/client-go/applyconfigurations/storage/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // VolumeAttributesClassesGetter has a method to return a VolumeAttributesClassInterface.
    @@ -41,157 +38,34 @@ type VolumeAttributesClassesGetter interface {
     
     // VolumeAttributesClassInterface has methods to work with VolumeAttributesClass resources.
     type VolumeAttributesClassInterface interface {
    -	Create(ctx context.Context, volumeAttributesClass *v1alpha1.VolumeAttributesClass, opts v1.CreateOptions) (*v1alpha1.VolumeAttributesClass, error)
    -	Update(ctx context.Context, volumeAttributesClass *v1alpha1.VolumeAttributesClass, opts v1.UpdateOptions) (*v1alpha1.VolumeAttributesClass, error)
    +	Create(ctx context.Context, volumeAttributesClass *storagev1alpha1.VolumeAttributesClass, opts v1.CreateOptions) (*storagev1alpha1.VolumeAttributesClass, error)
    +	Update(ctx context.Context, volumeAttributesClass *storagev1alpha1.VolumeAttributesClass, opts v1.UpdateOptions) (*storagev1alpha1.VolumeAttributesClass, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.VolumeAttributesClass, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.VolumeAttributesClassList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*storagev1alpha1.VolumeAttributesClass, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*storagev1alpha1.VolumeAttributesClassList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.VolumeAttributesClass, err error)
    -	Apply(ctx context.Context, volumeAttributesClass *storagev1alpha1.VolumeAttributesClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.VolumeAttributesClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *storagev1alpha1.VolumeAttributesClass, err error)
    +	Apply(ctx context.Context, volumeAttributesClass *applyconfigurationsstoragev1alpha1.VolumeAttributesClassApplyConfiguration, opts v1.ApplyOptions) (result *storagev1alpha1.VolumeAttributesClass, err error)
     	VolumeAttributesClassExpansion
     }
     
     // volumeAttributesClasses implements VolumeAttributesClassInterface
     type volumeAttributesClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*storagev1alpha1.VolumeAttributesClass, *storagev1alpha1.VolumeAttributesClassList, *applyconfigurationsstoragev1alpha1.VolumeAttributesClassApplyConfiguration]
     }
     
     // newVolumeAttributesClasses returns a VolumeAttributesClasses
     func newVolumeAttributesClasses(c *StorageV1alpha1Client) *volumeAttributesClasses {
     	return &volumeAttributesClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*storagev1alpha1.VolumeAttributesClass, *storagev1alpha1.VolumeAttributesClassList, *applyconfigurationsstoragev1alpha1.VolumeAttributesClassApplyConfiguration](
    +			"volumeattributesclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1alpha1.VolumeAttributesClass { return &storagev1alpha1.VolumeAttributesClass{} },
    +			func() *storagev1alpha1.VolumeAttributesClassList { return &storagev1alpha1.VolumeAttributesClassList{} },
    +			gentype.PrefersProtobuf[*storagev1alpha1.VolumeAttributesClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the volumeAttributesClass, and returns the corresponding volumeAttributesClass object, and an error if there is any.
    -func (c *volumeAttributesClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.VolumeAttributesClass, err error) {
    -	result = &v1alpha1.VolumeAttributesClass{}
    -	err = c.client.Get().
    -		Resource("volumeattributesclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of VolumeAttributesClasses that match those selectors.
    -func (c *volumeAttributesClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.VolumeAttributesClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1alpha1.VolumeAttributesClassList{}
    -	err = c.client.Get().
    -		Resource("volumeattributesclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested volumeAttributesClasses.
    -func (c *volumeAttributesClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("volumeattributesclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a volumeAttributesClass and creates it.  Returns the server's representation of the volumeAttributesClass, and an error, if there is any.
    -func (c *volumeAttributesClasses) Create(ctx context.Context, volumeAttributesClass *v1alpha1.VolumeAttributesClass, opts v1.CreateOptions) (result *v1alpha1.VolumeAttributesClass, err error) {
    -	result = &v1alpha1.VolumeAttributesClass{}
    -	err = c.client.Post().
    -		Resource("volumeattributesclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttributesClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a volumeAttributesClass and updates it. Returns the server's representation of the volumeAttributesClass, and an error, if there is any.
    -func (c *volumeAttributesClasses) Update(ctx context.Context, volumeAttributesClass *v1alpha1.VolumeAttributesClass, opts v1.UpdateOptions) (result *v1alpha1.VolumeAttributesClass, err error) {
    -	result = &v1alpha1.VolumeAttributesClass{}
    -	err = c.client.Put().
    -		Resource("volumeattributesclasses").
    -		Name(volumeAttributesClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttributesClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the volumeAttributesClass and deletes it. Returns an error if one occurs.
    -func (c *volumeAttributesClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("volumeattributesclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *volumeAttributesClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("volumeattributesclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched volumeAttributesClass.
    -func (c *volumeAttributesClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.VolumeAttributesClass, err error) {
    -	result = &v1alpha1.VolumeAttributesClass{}
    -	err = c.client.Patch(pt).
    -		Resource("volumeattributesclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied volumeAttributesClass.
    -func (c *volumeAttributesClasses) Apply(ctx context.Context, volumeAttributesClass *storagev1alpha1.VolumeAttributesClassApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.VolumeAttributesClass, err error) {
    -	if volumeAttributesClass == nil {
    -		return nil, fmt.Errorf("volumeAttributesClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(volumeAttributesClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttributesClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttributesClass.Name must be provided to Apply")
    -	}
    -	result = &v1alpha1.VolumeAttributesClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("volumeattributesclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csidriver.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csidriver.go
    index 04e677db0596..063fdb8d1618 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csidriver.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csidriver.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	applyconfigurationsstoragev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CSIDriversGetter has a method to return a CSIDriverInterface.
    @@ -41,157 +38,34 @@ type CSIDriversGetter interface {
     
     // CSIDriverInterface has methods to work with CSIDriver resources.
     type CSIDriverInterface interface {
    -	Create(ctx context.Context, cSIDriver *v1beta1.CSIDriver, opts v1.CreateOptions) (*v1beta1.CSIDriver, error)
    -	Update(ctx context.Context, cSIDriver *v1beta1.CSIDriver, opts v1.UpdateOptions) (*v1beta1.CSIDriver, error)
    +	Create(ctx context.Context, cSIDriver *storagev1beta1.CSIDriver, opts v1.CreateOptions) (*storagev1beta1.CSIDriver, error)
    +	Update(ctx context.Context, cSIDriver *storagev1beta1.CSIDriver, opts v1.UpdateOptions) (*storagev1beta1.CSIDriver, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.CSIDriver, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.CSIDriverList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*storagev1beta1.CSIDriver, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*storagev1beta1.CSIDriverList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CSIDriver, err error)
    -	Apply(ctx context.Context, cSIDriver *storagev1beta1.CSIDriverApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CSIDriver, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *storagev1beta1.CSIDriver, err error)
    +	Apply(ctx context.Context, cSIDriver *applyconfigurationsstoragev1beta1.CSIDriverApplyConfiguration, opts v1.ApplyOptions) (result *storagev1beta1.CSIDriver, err error)
     	CSIDriverExpansion
     }
     
     // cSIDrivers implements CSIDriverInterface
     type cSIDrivers struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*storagev1beta1.CSIDriver, *storagev1beta1.CSIDriverList, *applyconfigurationsstoragev1beta1.CSIDriverApplyConfiguration]
     }
     
     // newCSIDrivers returns a CSIDrivers
     func newCSIDrivers(c *StorageV1beta1Client) *cSIDrivers {
     	return &cSIDrivers{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*storagev1beta1.CSIDriver, *storagev1beta1.CSIDriverList, *applyconfigurationsstoragev1beta1.CSIDriverApplyConfiguration](
    +			"csidrivers",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1beta1.CSIDriver { return &storagev1beta1.CSIDriver{} },
    +			func() *storagev1beta1.CSIDriverList { return &storagev1beta1.CSIDriverList{} },
    +			gentype.PrefersProtobuf[*storagev1beta1.CSIDriver](),
    +		),
     	}
     }
    -
    -// Get takes name of the cSIDriver, and returns the corresponding cSIDriver object, and an error if there is any.
    -func (c *cSIDrivers) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CSIDriver, err error) {
    -	result = &v1beta1.CSIDriver{}
    -	err = c.client.Get().
    -		Resource("csidrivers").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CSIDrivers that match those selectors.
    -func (c *cSIDrivers) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CSIDriverList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.CSIDriverList{}
    -	err = c.client.Get().
    -		Resource("csidrivers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSIDrivers.
    -func (c *cSIDrivers) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("csidrivers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a cSIDriver and creates it.  Returns the server's representation of the cSIDriver, and an error, if there is any.
    -func (c *cSIDrivers) Create(ctx context.Context, cSIDriver *v1beta1.CSIDriver, opts v1.CreateOptions) (result *v1beta1.CSIDriver, err error) {
    -	result = &v1beta1.CSIDriver{}
    -	err = c.client.Post().
    -		Resource("csidrivers").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSIDriver).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a cSIDriver and updates it. Returns the server's representation of the cSIDriver, and an error, if there is any.
    -func (c *cSIDrivers) Update(ctx context.Context, cSIDriver *v1beta1.CSIDriver, opts v1.UpdateOptions) (result *v1beta1.CSIDriver, err error) {
    -	result = &v1beta1.CSIDriver{}
    -	err = c.client.Put().
    -		Resource("csidrivers").
    -		Name(cSIDriver.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSIDriver).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the cSIDriver and deletes it. Returns an error if one occurs.
    -func (c *cSIDrivers) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("csidrivers").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *cSIDrivers) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("csidrivers").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched cSIDriver.
    -func (c *cSIDrivers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CSIDriver, err error) {
    -	result = &v1beta1.CSIDriver{}
    -	err = c.client.Patch(pt).
    -		Resource("csidrivers").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSIDriver.
    -func (c *cSIDrivers) Apply(ctx context.Context, cSIDriver *storagev1beta1.CSIDriverApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CSIDriver, err error) {
    -	if cSIDriver == nil {
    -		return nil, fmt.Errorf("cSIDriver provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cSIDriver)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSIDriver.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSIDriver.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.CSIDriver{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("csidrivers").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csinode.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csinode.go
    index c3760b5ce5cf..5e8eb2e376df 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csinode.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csinode.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	applyconfigurationsstoragev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CSINodesGetter has a method to return a CSINodeInterface.
    @@ -41,157 +38,34 @@ type CSINodesGetter interface {
     
     // CSINodeInterface has methods to work with CSINode resources.
     type CSINodeInterface interface {
    -	Create(ctx context.Context, cSINode *v1beta1.CSINode, opts v1.CreateOptions) (*v1beta1.CSINode, error)
    -	Update(ctx context.Context, cSINode *v1beta1.CSINode, opts v1.UpdateOptions) (*v1beta1.CSINode, error)
    +	Create(ctx context.Context, cSINode *storagev1beta1.CSINode, opts v1.CreateOptions) (*storagev1beta1.CSINode, error)
    +	Update(ctx context.Context, cSINode *storagev1beta1.CSINode, opts v1.UpdateOptions) (*storagev1beta1.CSINode, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.CSINode, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.CSINodeList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*storagev1beta1.CSINode, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*storagev1beta1.CSINodeList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CSINode, err error)
    -	Apply(ctx context.Context, cSINode *storagev1beta1.CSINodeApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CSINode, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *storagev1beta1.CSINode, err error)
    +	Apply(ctx context.Context, cSINode *applyconfigurationsstoragev1beta1.CSINodeApplyConfiguration, opts v1.ApplyOptions) (result *storagev1beta1.CSINode, err error)
     	CSINodeExpansion
     }
     
     // cSINodes implements CSINodeInterface
     type cSINodes struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*storagev1beta1.CSINode, *storagev1beta1.CSINodeList, *applyconfigurationsstoragev1beta1.CSINodeApplyConfiguration]
     }
     
     // newCSINodes returns a CSINodes
     func newCSINodes(c *StorageV1beta1Client) *cSINodes {
     	return &cSINodes{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*storagev1beta1.CSINode, *storagev1beta1.CSINodeList, *applyconfigurationsstoragev1beta1.CSINodeApplyConfiguration](
    +			"csinodes",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1beta1.CSINode { return &storagev1beta1.CSINode{} },
    +			func() *storagev1beta1.CSINodeList { return &storagev1beta1.CSINodeList{} },
    +			gentype.PrefersProtobuf[*storagev1beta1.CSINode](),
    +		),
     	}
     }
    -
    -// Get takes name of the cSINode, and returns the corresponding cSINode object, and an error if there is any.
    -func (c *cSINodes) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CSINode, err error) {
    -	result = &v1beta1.CSINode{}
    -	err = c.client.Get().
    -		Resource("csinodes").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CSINodes that match those selectors.
    -func (c *cSINodes) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CSINodeList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.CSINodeList{}
    -	err = c.client.Get().
    -		Resource("csinodes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSINodes.
    -func (c *cSINodes) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("csinodes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a cSINode and creates it.  Returns the server's representation of the cSINode, and an error, if there is any.
    -func (c *cSINodes) Create(ctx context.Context, cSINode *v1beta1.CSINode, opts v1.CreateOptions) (result *v1beta1.CSINode, err error) {
    -	result = &v1beta1.CSINode{}
    -	err = c.client.Post().
    -		Resource("csinodes").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSINode).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a cSINode and updates it. Returns the server's representation of the cSINode, and an error, if there is any.
    -func (c *cSINodes) Update(ctx context.Context, cSINode *v1beta1.CSINode, opts v1.UpdateOptions) (result *v1beta1.CSINode, err error) {
    -	result = &v1beta1.CSINode{}
    -	err = c.client.Put().
    -		Resource("csinodes").
    -		Name(cSINode.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSINode).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the cSINode and deletes it. Returns an error if one occurs.
    -func (c *cSINodes) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("csinodes").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *cSINodes) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("csinodes").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched cSINode.
    -func (c *cSINodes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CSINode, err error) {
    -	result = &v1beta1.CSINode{}
    -	err = c.client.Patch(pt).
    -		Resource("csinodes").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSINode.
    -func (c *cSINodes) Apply(ctx context.Context, cSINode *storagev1beta1.CSINodeApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CSINode, err error) {
    -	if cSINode == nil {
    -		return nil, fmt.Errorf("cSINode provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cSINode)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSINode.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSINode.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.CSINode{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("csinodes").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csistoragecapacity.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csistoragecapacity.go
    index 98ba936dc44a..d1f5a7029265 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csistoragecapacity.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	applyconfigurationsstoragev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // CSIStorageCapacitiesGetter has a method to return a CSIStorageCapacityInterface.
    @@ -41,168 +38,34 @@ type CSIStorageCapacitiesGetter interface {
     
     // CSIStorageCapacityInterface has methods to work with CSIStorageCapacity resources.
     type CSIStorageCapacityInterface interface {
    -	Create(ctx context.Context, cSIStorageCapacity *v1beta1.CSIStorageCapacity, opts v1.CreateOptions) (*v1beta1.CSIStorageCapacity, error)
    -	Update(ctx context.Context, cSIStorageCapacity *v1beta1.CSIStorageCapacity, opts v1.UpdateOptions) (*v1beta1.CSIStorageCapacity, error)
    +	Create(ctx context.Context, cSIStorageCapacity *storagev1beta1.CSIStorageCapacity, opts v1.CreateOptions) (*storagev1beta1.CSIStorageCapacity, error)
    +	Update(ctx context.Context, cSIStorageCapacity *storagev1beta1.CSIStorageCapacity, opts v1.UpdateOptions) (*storagev1beta1.CSIStorageCapacity, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.CSIStorageCapacity, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.CSIStorageCapacityList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*storagev1beta1.CSIStorageCapacity, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*storagev1beta1.CSIStorageCapacityList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CSIStorageCapacity, err error)
    -	Apply(ctx context.Context, cSIStorageCapacity *storagev1beta1.CSIStorageCapacityApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CSIStorageCapacity, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *storagev1beta1.CSIStorageCapacity, err error)
    +	Apply(ctx context.Context, cSIStorageCapacity *applyconfigurationsstoragev1beta1.CSIStorageCapacityApplyConfiguration, opts v1.ApplyOptions) (result *storagev1beta1.CSIStorageCapacity, err error)
     	CSIStorageCapacityExpansion
     }
     
     // cSIStorageCapacities implements CSIStorageCapacityInterface
     type cSIStorageCapacities struct {
    -	client rest.Interface
    -	ns     string
    +	*gentype.ClientWithListAndApply[*storagev1beta1.CSIStorageCapacity, *storagev1beta1.CSIStorageCapacityList, *applyconfigurationsstoragev1beta1.CSIStorageCapacityApplyConfiguration]
     }
     
     // newCSIStorageCapacities returns a CSIStorageCapacities
     func newCSIStorageCapacities(c *StorageV1beta1Client, namespace string) *cSIStorageCapacities {
     	return &cSIStorageCapacities{
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +		gentype.NewClientWithListAndApply[*storagev1beta1.CSIStorageCapacity, *storagev1beta1.CSIStorageCapacityList, *applyconfigurationsstoragev1beta1.CSIStorageCapacityApplyConfiguration](
    +			"csistoragecapacities",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			namespace,
    +			func() *storagev1beta1.CSIStorageCapacity { return &storagev1beta1.CSIStorageCapacity{} },
    +			func() *storagev1beta1.CSIStorageCapacityList { return &storagev1beta1.CSIStorageCapacityList{} },
    +			gentype.PrefersProtobuf[*storagev1beta1.CSIStorageCapacity](),
    +		),
     	}
     }
    -
    -// Get takes name of the cSIStorageCapacity, and returns the corresponding cSIStorageCapacity object, and an error if there is any.
    -func (c *cSIStorageCapacities) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CSIStorageCapacity, err error) {
    -	result = &v1beta1.CSIStorageCapacity{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of CSIStorageCapacities that match those selectors.
    -func (c *cSIStorageCapacities) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CSIStorageCapacityList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.CSIStorageCapacityList{}
    -	err = c.client.Get().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSIStorageCapacities.
    -func (c *cSIStorageCapacities) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a cSIStorageCapacity and creates it.  Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *cSIStorageCapacities) Create(ctx context.Context, cSIStorageCapacity *v1beta1.CSIStorageCapacity, opts v1.CreateOptions) (result *v1beta1.CSIStorageCapacity, err error) {
    -	result = &v1beta1.CSIStorageCapacity{}
    -	err = c.client.Post().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSIStorageCapacity).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a cSIStorageCapacity and updates it. Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *cSIStorageCapacities) Update(ctx context.Context, cSIStorageCapacity *v1beta1.CSIStorageCapacity, opts v1.UpdateOptions) (result *v1beta1.CSIStorageCapacity, err error) {
    -	result = &v1beta1.CSIStorageCapacity{}
    -	err = c.client.Put().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(cSIStorageCapacity.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(cSIStorageCapacity).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the cSIStorageCapacity and deletes it. Returns an error if one occurs.
    -func (c *cSIStorageCapacities) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *cSIStorageCapacities) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched cSIStorageCapacity.
    -func (c *cSIStorageCapacities) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CSIStorageCapacity, err error) {
    -	result = &v1beta1.CSIStorageCapacity{}
    -	err = c.client.Patch(pt).
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSIStorageCapacity.
    -func (c *cSIStorageCapacities) Apply(ctx context.Context, cSIStorageCapacity *storagev1beta1.CSIStorageCapacityApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CSIStorageCapacity, err error) {
    -	if cSIStorageCapacity == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(cSIStorageCapacity)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSIStorageCapacity.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.CSIStorageCapacity{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Namespace(c.ns).
    -		Resource("csistoragecapacities").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csidriver.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csidriver.go
    index 4257aa61830f..e673669212e9 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csidriver.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csidriver.go
    @@ -19,127 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/storage/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1"
     )
     
    -// FakeCSIDrivers implements CSIDriverInterface
    -type FakeCSIDrivers struct {
    +// fakeCSIDrivers implements CSIDriverInterface
    +type fakeCSIDrivers struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.CSIDriver, *v1beta1.CSIDriverList, *storagev1beta1.CSIDriverApplyConfiguration]
     	Fake *FakeStorageV1beta1
     }
     
    -var csidriversResource = v1beta1.SchemeGroupVersion.WithResource("csidrivers")
    -
    -var csidriversKind = v1beta1.SchemeGroupVersion.WithKind("CSIDriver")
    -
    -// Get takes name of the cSIDriver, and returns the corresponding cSIDriver object, and an error if there is any.
    -func (c *FakeCSIDrivers) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CSIDriver, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(csidriversResource, name), &v1beta1.CSIDriver{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSIDriver), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CSIDrivers that match those selectors.
    -func (c *FakeCSIDrivers) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CSIDriverList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(csidriversResource, csidriversKind, opts), &v1beta1.CSIDriverList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.CSIDriverList{ListMeta: obj.(*v1beta1.CSIDriverList).ListMeta}
    -	for _, item := range obj.(*v1beta1.CSIDriverList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSIDrivers.
    -func (c *FakeCSIDrivers) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(csidriversResource, opts))
    -}
    -
    -// Create takes the representation of a cSIDriver and creates it.  Returns the server's representation of the cSIDriver, and an error, if there is any.
    -func (c *FakeCSIDrivers) Create(ctx context.Context, cSIDriver *v1beta1.CSIDriver, opts v1.CreateOptions) (result *v1beta1.CSIDriver, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(csidriversResource, cSIDriver), &v1beta1.CSIDriver{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSIDriver), err
    -}
    -
    -// Update takes the representation of a cSIDriver and updates it. Returns the server's representation of the cSIDriver, and an error, if there is any.
    -func (c *FakeCSIDrivers) Update(ctx context.Context, cSIDriver *v1beta1.CSIDriver, opts v1.UpdateOptions) (result *v1beta1.CSIDriver, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(csidriversResource, cSIDriver), &v1beta1.CSIDriver{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSIDriver), err
    -}
    -
    -// Delete takes name of the cSIDriver and deletes it. Returns an error if one occurs.
    -func (c *FakeCSIDrivers) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(csidriversResource, name, opts), &v1beta1.CSIDriver{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCSIDrivers) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(csidriversResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.CSIDriverList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched cSIDriver.
    -func (c *FakeCSIDrivers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CSIDriver, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(csidriversResource, name, pt, data, subresources...), &v1beta1.CSIDriver{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSIDriver), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSIDriver.
    -func (c *FakeCSIDrivers) Apply(ctx context.Context, cSIDriver *storagev1beta1.CSIDriverApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CSIDriver, err error) {
    -	if cSIDriver == nil {
    -		return nil, fmt.Errorf("cSIDriver provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cSIDriver)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSIDriver.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSIDriver.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(csidriversResource, *name, types.ApplyPatchType, data), &v1beta1.CSIDriver{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeCSIDrivers(fake *FakeStorageV1beta1) typedstoragev1beta1.CSIDriverInterface {
    +	return &fakeCSIDrivers{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.CSIDriver, *v1beta1.CSIDriverList, *storagev1beta1.CSIDriverApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("csidrivers"),
    +			v1beta1.SchemeGroupVersion.WithKind("CSIDriver"),
    +			func() *v1beta1.CSIDriver { return &v1beta1.CSIDriver{} },
    +			func() *v1beta1.CSIDriverList { return &v1beta1.CSIDriverList{} },
    +			func(dst, src *v1beta1.CSIDriverList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.CSIDriverList) []*v1beta1.CSIDriver { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.CSIDriverList, items []*v1beta1.CSIDriver) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.CSIDriver), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csinode.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csinode.go
    index d38c104bc166..f9c857024735 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csinode.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csinode.go
    @@ -19,127 +19,33 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/storage/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1"
     )
     
    -// FakeCSINodes implements CSINodeInterface
    -type FakeCSINodes struct {
    +// fakeCSINodes implements CSINodeInterface
    +type fakeCSINodes struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.CSINode, *v1beta1.CSINodeList, *storagev1beta1.CSINodeApplyConfiguration]
     	Fake *FakeStorageV1beta1
     }
     
    -var csinodesResource = v1beta1.SchemeGroupVersion.WithResource("csinodes")
    -
    -var csinodesKind = v1beta1.SchemeGroupVersion.WithKind("CSINode")
    -
    -// Get takes name of the cSINode, and returns the corresponding cSINode object, and an error if there is any.
    -func (c *FakeCSINodes) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CSINode, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(csinodesResource, name), &v1beta1.CSINode{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSINode), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CSINodes that match those selectors.
    -func (c *FakeCSINodes) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CSINodeList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(csinodesResource, csinodesKind, opts), &v1beta1.CSINodeList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.CSINodeList{ListMeta: obj.(*v1beta1.CSINodeList).ListMeta}
    -	for _, item := range obj.(*v1beta1.CSINodeList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSINodes.
    -func (c *FakeCSINodes) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(csinodesResource, opts))
    -}
    -
    -// Create takes the representation of a cSINode and creates it.  Returns the server's representation of the cSINode, and an error, if there is any.
    -func (c *FakeCSINodes) Create(ctx context.Context, cSINode *v1beta1.CSINode, opts v1.CreateOptions) (result *v1beta1.CSINode, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(csinodesResource, cSINode), &v1beta1.CSINode{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSINode), err
    -}
    -
    -// Update takes the representation of a cSINode and updates it. Returns the server's representation of the cSINode, and an error, if there is any.
    -func (c *FakeCSINodes) Update(ctx context.Context, cSINode *v1beta1.CSINode, opts v1.UpdateOptions) (result *v1beta1.CSINode, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(csinodesResource, cSINode), &v1beta1.CSINode{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSINode), err
    -}
    -
    -// Delete takes name of the cSINode and deletes it. Returns an error if one occurs.
    -func (c *FakeCSINodes) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(csinodesResource, name, opts), &v1beta1.CSINode{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCSINodes) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(csinodesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.CSINodeList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched cSINode.
    -func (c *FakeCSINodes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CSINode, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(csinodesResource, name, pt, data, subresources...), &v1beta1.CSINode{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSINode), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSINode.
    -func (c *FakeCSINodes) Apply(ctx context.Context, cSINode *storagev1beta1.CSINodeApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CSINode, err error) {
    -	if cSINode == nil {
    -		return nil, fmt.Errorf("cSINode provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cSINode)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSINode.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSINode.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(csinodesResource, *name, types.ApplyPatchType, data), &v1beta1.CSINode{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeCSINodes(fake *FakeStorageV1beta1) typedstoragev1beta1.CSINodeInterface {
    +	return &fakeCSINodes{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.CSINode, *v1beta1.CSINodeList, *storagev1beta1.CSINodeApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("csinodes"),
    +			v1beta1.SchemeGroupVersion.WithKind("CSINode"),
    +			func() *v1beta1.CSINode { return &v1beta1.CSINode{} },
    +			func() *v1beta1.CSINodeList { return &v1beta1.CSINodeList{} },
    +			func(dst, src *v1beta1.CSINodeList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.CSINodeList) []*v1beta1.CSINode { return gentype.ToPointerSlice(list.Items) },
    +			func(list *v1beta1.CSINodeList, items []*v1beta1.CSINode) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.CSINode), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csistoragecapacity.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csistoragecapacity.go
    index d7bbb614b23e..9a8c2054b5d2 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csistoragecapacity.go
    @@ -19,136 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/storage/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1"
     )
     
    -// FakeCSIStorageCapacities implements CSIStorageCapacityInterface
    -type FakeCSIStorageCapacities struct {
    +// fakeCSIStorageCapacities implements CSIStorageCapacityInterface
    +type fakeCSIStorageCapacities struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.CSIStorageCapacity, *v1beta1.CSIStorageCapacityList, *storagev1beta1.CSIStorageCapacityApplyConfiguration]
     	Fake *FakeStorageV1beta1
    -	ns   string
    -}
    -
    -var csistoragecapacitiesResource = v1beta1.SchemeGroupVersion.WithResource("csistoragecapacities")
    -
    -var csistoragecapacitiesKind = v1beta1.SchemeGroupVersion.WithKind("CSIStorageCapacity")
    -
    -// Get takes name of the cSIStorageCapacity, and returns the corresponding cSIStorageCapacity object, and an error if there is any.
    -func (c *FakeCSIStorageCapacities) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewGetAction(csistoragecapacitiesResource, c.ns, name), &v1beta1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSIStorageCapacity), err
    -}
    -
    -// List takes label and field selectors, and returns the list of CSIStorageCapacities that match those selectors.
    -func (c *FakeCSIStorageCapacities) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.CSIStorageCapacityList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewListAction(csistoragecapacitiesResource, csistoragecapacitiesKind, c.ns, opts), &v1beta1.CSIStorageCapacityList{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.CSIStorageCapacityList{ListMeta: obj.(*v1beta1.CSIStorageCapacityList).ListMeta}
    -	for _, item := range obj.(*v1beta1.CSIStorageCapacityList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested cSIStorageCapacities.
    -func (c *FakeCSIStorageCapacities) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewWatchAction(csistoragecapacitiesResource, c.ns, opts))
    -
     }
     
    -// Create takes the representation of a cSIStorageCapacity and creates it.  Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *FakeCSIStorageCapacities) Create(ctx context.Context, cSIStorageCapacity *v1beta1.CSIStorageCapacity, opts v1.CreateOptions) (result *v1beta1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewCreateAction(csistoragecapacitiesResource, c.ns, cSIStorageCapacity), &v1beta1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSIStorageCapacity), err
    -}
    -
    -// Update takes the representation of a cSIStorageCapacity and updates it. Returns the server's representation of the cSIStorageCapacity, and an error, if there is any.
    -func (c *FakeCSIStorageCapacities) Update(ctx context.Context, cSIStorageCapacity *v1beta1.CSIStorageCapacity, opts v1.UpdateOptions) (result *v1beta1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewUpdateAction(csistoragecapacitiesResource, c.ns, cSIStorageCapacity), &v1beta1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSIStorageCapacity), err
    -}
    -
    -// Delete takes name of the cSIStorageCapacity and deletes it. Returns an error if one occurs.
    -func (c *FakeCSIStorageCapacities) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewDeleteActionWithOptions(csistoragecapacitiesResource, c.ns, name, opts), &v1beta1.CSIStorageCapacity{})
    -
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeCSIStorageCapacities) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewDeleteCollectionAction(csistoragecapacitiesResource, c.ns, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.CSIStorageCapacityList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched cSIStorageCapacity.
    -func (c *FakeCSIStorageCapacities) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.CSIStorageCapacity, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(csistoragecapacitiesResource, c.ns, name, pt, data, subresources...), &v1beta1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.CSIStorageCapacity), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied cSIStorageCapacity.
    -func (c *FakeCSIStorageCapacities) Apply(ctx context.Context, cSIStorageCapacity *storagev1beta1.CSIStorageCapacityApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.CSIStorageCapacity, err error) {
    -	if cSIStorageCapacity == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(cSIStorageCapacity)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := cSIStorageCapacity.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("cSIStorageCapacity.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewPatchSubresourceAction(csistoragecapacitiesResource, c.ns, *name, types.ApplyPatchType, data), &v1beta1.CSIStorageCapacity{})
    -
    -	if obj == nil {
    -		return nil, err
    +func newFakeCSIStorageCapacities(fake *FakeStorageV1beta1, namespace string) typedstoragev1beta1.CSIStorageCapacityInterface {
    +	return &fakeCSIStorageCapacities{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.CSIStorageCapacity, *v1beta1.CSIStorageCapacityList, *storagev1beta1.CSIStorageCapacityApplyConfiguration](
    +			fake.Fake,
    +			namespace,
    +			v1beta1.SchemeGroupVersion.WithResource("csistoragecapacities"),
    +			v1beta1.SchemeGroupVersion.WithKind("CSIStorageCapacity"),
    +			func() *v1beta1.CSIStorageCapacity { return &v1beta1.CSIStorageCapacity{} },
    +			func() *v1beta1.CSIStorageCapacityList { return &v1beta1.CSIStorageCapacityList{} },
    +			func(dst, src *v1beta1.CSIStorageCapacityList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.CSIStorageCapacityList) []*v1beta1.CSIStorageCapacity {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.CSIStorageCapacityList, items []*v1beta1.CSIStorageCapacity) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.CSIStorageCapacity), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go
    index 6b5bb02fdaf9..8c74de727da9 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go
    @@ -29,23 +29,27 @@ type FakeStorageV1beta1 struct {
     }
     
     func (c *FakeStorageV1beta1) CSIDrivers() v1beta1.CSIDriverInterface {
    -	return &FakeCSIDrivers{c}
    +	return newFakeCSIDrivers(c)
     }
     
     func (c *FakeStorageV1beta1) CSINodes() v1beta1.CSINodeInterface {
    -	return &FakeCSINodes{c}
    +	return newFakeCSINodes(c)
     }
     
     func (c *FakeStorageV1beta1) CSIStorageCapacities(namespace string) v1beta1.CSIStorageCapacityInterface {
    -	return &FakeCSIStorageCapacities{c, namespace}
    +	return newFakeCSIStorageCapacities(c, namespace)
     }
     
     func (c *FakeStorageV1beta1) StorageClasses() v1beta1.StorageClassInterface {
    -	return &FakeStorageClasses{c}
    +	return newFakeStorageClasses(c)
     }
     
     func (c *FakeStorageV1beta1) VolumeAttachments() v1beta1.VolumeAttachmentInterface {
    -	return &FakeVolumeAttachments{c}
    +	return newFakeVolumeAttachments(c)
    +}
    +
    +func (c *FakeStorageV1beta1) VolumeAttributesClasses() v1beta1.VolumeAttributesClassInterface {
    +	return newFakeVolumeAttributesClasses(c)
     }
     
     // RESTClient returns a RESTClient that is used to communicate
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go
    index 869e58b4f71f..0ce78cc74700 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go
    @@ -19,127 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/storage/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1"
     )
     
    -// FakeStorageClasses implements StorageClassInterface
    -type FakeStorageClasses struct {
    +// fakeStorageClasses implements StorageClassInterface
    +type fakeStorageClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.StorageClass, *v1beta1.StorageClassList, *storagev1beta1.StorageClassApplyConfiguration]
     	Fake *FakeStorageV1beta1
     }
     
    -var storageclassesResource = v1beta1.SchemeGroupVersion.WithResource("storageclasses")
    -
    -var storageclassesKind = v1beta1.SchemeGroupVersion.WithKind("StorageClass")
    -
    -// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any.
    -func (c *FakeStorageClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.StorageClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(storageclassesResource, name), &v1beta1.StorageClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.StorageClass), err
    -}
    -
    -// List takes label and field selectors, and returns the list of StorageClasses that match those selectors.
    -func (c *FakeStorageClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.StorageClassList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(storageclassesResource, storageclassesKind, opts), &v1beta1.StorageClassList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.StorageClassList{ListMeta: obj.(*v1beta1.StorageClassList).ListMeta}
    -	for _, item := range obj.(*v1beta1.StorageClassList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested storageClasses.
    -func (c *FakeStorageClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(storageclassesResource, opts))
    -}
    -
    -// Create takes the representation of a storageClass and creates it.  Returns the server's representation of the storageClass, and an error, if there is any.
    -func (c *FakeStorageClasses) Create(ctx context.Context, storageClass *v1beta1.StorageClass, opts v1.CreateOptions) (result *v1beta1.StorageClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(storageclassesResource, storageClass), &v1beta1.StorageClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.StorageClass), err
    -}
    -
    -// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any.
    -func (c *FakeStorageClasses) Update(ctx context.Context, storageClass *v1beta1.StorageClass, opts v1.UpdateOptions) (result *v1beta1.StorageClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(storageclassesResource, storageClass), &v1beta1.StorageClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.StorageClass), err
    -}
    -
    -// Delete takes name of the storageClass and deletes it. Returns an error if one occurs.
    -func (c *FakeStorageClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(storageclassesResource, name, opts), &v1beta1.StorageClass{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeStorageClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(storageclassesResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.StorageClassList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched storageClass.
    -func (c *FakeStorageClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.StorageClass, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(storageclassesResource, name, pt, data, subresources...), &v1beta1.StorageClass{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.StorageClass), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied storageClass.
    -func (c *FakeStorageClasses) Apply(ctx context.Context, storageClass *storagev1beta1.StorageClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.StorageClass, err error) {
    -	if storageClass == nil {
    -		return nil, fmt.Errorf("storageClass provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(storageClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := storageClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("storageClass.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(storageclassesResource, *name, types.ApplyPatchType, data), &v1beta1.StorageClass{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeStorageClasses(fake *FakeStorageV1beta1) typedstoragev1beta1.StorageClassInterface {
    +	return &fakeStorageClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.StorageClass, *v1beta1.StorageClassList, *storagev1beta1.StorageClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("storageclasses"),
    +			v1beta1.SchemeGroupVersion.WithKind("StorageClass"),
    +			func() *v1beta1.StorageClass { return &v1beta1.StorageClass{} },
    +			func() *v1beta1.StorageClassList { return &v1beta1.StorageClassList{} },
    +			func(dst, src *v1beta1.StorageClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.StorageClassList) []*v1beta1.StorageClass {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.StorageClassList, items []*v1beta1.StorageClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.StorageClass), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_volumeattachment.go
    index e2b4a2eb1b26..29ac6c4c7618 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_volumeattachment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_volumeattachment.go
    @@ -19,160 +19,35 @@ limitations under the License.
     package fake
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -
     	v1beta1 "k8s.io/api/storage/v1beta1"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	labels "k8s.io/apimachinery/pkg/labels"
    -	types "k8s.io/apimachinery/pkg/types"
    -	watch "k8s.io/apimachinery/pkg/watch"
     	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    -	testing "k8s.io/client-go/testing"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1"
     )
     
    -// FakeVolumeAttachments implements VolumeAttachmentInterface
    -type FakeVolumeAttachments struct {
    +// fakeVolumeAttachments implements VolumeAttachmentInterface
    +type fakeVolumeAttachments struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.VolumeAttachment, *v1beta1.VolumeAttachmentList, *storagev1beta1.VolumeAttachmentApplyConfiguration]
     	Fake *FakeStorageV1beta1
     }
     
    -var volumeattachmentsResource = v1beta1.SchemeGroupVersion.WithResource("volumeattachments")
    -
    -var volumeattachmentsKind = v1beta1.SchemeGroupVersion.WithKind("VolumeAttachment")
    -
    -// Get takes name of the volumeAttachment, and returns the corresponding volumeAttachment object, and an error if there is any.
    -func (c *FakeVolumeAttachments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootGetAction(volumeattachmentsResource, name), &v1beta1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.VolumeAttachment), err
    -}
    -
    -// List takes label and field selectors, and returns the list of VolumeAttachments that match those selectors.
    -func (c *FakeVolumeAttachments) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.VolumeAttachmentList, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootListAction(volumeattachmentsResource, volumeattachmentsKind, opts), &v1beta1.VolumeAttachmentList{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -
    -	label, _, _ := testing.ExtractFromListOptions(opts)
    -	if label == nil {
    -		label = labels.Everything()
    -	}
    -	list := &v1beta1.VolumeAttachmentList{ListMeta: obj.(*v1beta1.VolumeAttachmentList).ListMeta}
    -	for _, item := range obj.(*v1beta1.VolumeAttachmentList).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    -}
    -
    -// Watch returns a watch.Interface that watches the requested volumeAttachments.
    -func (c *FakeVolumeAttachments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	return c.Fake.
    -		InvokesWatch(testing.NewRootWatchAction(volumeattachmentsResource, opts))
    -}
    -
    -// Create takes the representation of a volumeAttachment and creates it.  Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *FakeVolumeAttachments) Create(ctx context.Context, volumeAttachment *v1beta1.VolumeAttachment, opts v1.CreateOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootCreateAction(volumeattachmentsResource, volumeAttachment), &v1beta1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.VolumeAttachment), err
    -}
    -
    -// Update takes the representation of a volumeAttachment and updates it. Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *FakeVolumeAttachments) Update(ctx context.Context, volumeAttachment *v1beta1.VolumeAttachment, opts v1.UpdateOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateAction(volumeattachmentsResource, volumeAttachment), &v1beta1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.VolumeAttachment), err
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *FakeVolumeAttachments) UpdateStatus(ctx context.Context, volumeAttachment *v1beta1.VolumeAttachment, opts v1.UpdateOptions) (*v1beta1.VolumeAttachment, error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootUpdateSubresourceAction(volumeattachmentsResource, "status", volumeAttachment), &v1beta1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.VolumeAttachment), err
    -}
    -
    -// Delete takes name of the volumeAttachment and deletes it. Returns an error if one occurs.
    -func (c *FakeVolumeAttachments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	_, err := c.Fake.
    -		Invokes(testing.NewRootDeleteActionWithOptions(volumeattachmentsResource, name, opts), &v1beta1.VolumeAttachment{})
    -	return err
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *FakeVolumeAttachments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	action := testing.NewRootDeleteCollectionAction(volumeattachmentsResource, listOpts)
    -
    -	_, err := c.Fake.Invokes(action, &v1beta1.VolumeAttachmentList{})
    -	return err
    -}
    -
    -// Patch applies the patch and returns the patched volumeAttachment.
    -func (c *FakeVolumeAttachments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.VolumeAttachment, err error) {
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, name, pt, data, subresources...), &v1beta1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.VolumeAttachment), err
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied volumeAttachment.
    -func (c *FakeVolumeAttachments) Apply(ctx context.Context, volumeAttachment *storagev1beta1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, *name, types.ApplyPatchType, data), &v1beta1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*v1beta1.VolumeAttachment), err
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *FakeVolumeAttachments) ApplyStatus(ctx context.Context, volumeAttachment *storagev1beta1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, *name, types.ApplyPatchType, data, "status"), &v1beta1.VolumeAttachment{})
    -	if obj == nil {
    -		return nil, err
    +func newFakeVolumeAttachments(fake *FakeStorageV1beta1) typedstoragev1beta1.VolumeAttachmentInterface {
    +	return &fakeVolumeAttachments{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.VolumeAttachment, *v1beta1.VolumeAttachmentList, *storagev1beta1.VolumeAttachmentApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("volumeattachments"),
    +			v1beta1.SchemeGroupVersion.WithKind("VolumeAttachment"),
    +			func() *v1beta1.VolumeAttachment { return &v1beta1.VolumeAttachment{} },
    +			func() *v1beta1.VolumeAttachmentList { return &v1beta1.VolumeAttachmentList{} },
    +			func(dst, src *v1beta1.VolumeAttachmentList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.VolumeAttachmentList) []*v1beta1.VolumeAttachment {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.VolumeAttachmentList, items []*v1beta1.VolumeAttachment) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
     	}
    -	return obj.(*v1beta1.VolumeAttachment), err
     }
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_volumeattributesclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_volumeattributesclass.go
    new file mode 100644
    index 000000000000..0197e0b3799d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_volumeattributesclass.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1beta1 "k8s.io/api/storage/v1beta1"
    +	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1"
    +)
    +
    +// fakeVolumeAttributesClasses implements VolumeAttributesClassInterface
    +type fakeVolumeAttributesClasses struct {
    +	*gentype.FakeClientWithListAndApply[*v1beta1.VolumeAttributesClass, *v1beta1.VolumeAttributesClassList, *storagev1beta1.VolumeAttributesClassApplyConfiguration]
    +	Fake *FakeStorageV1beta1
    +}
    +
    +func newFakeVolumeAttributesClasses(fake *FakeStorageV1beta1) typedstoragev1beta1.VolumeAttributesClassInterface {
    +	return &fakeVolumeAttributesClasses{
    +		gentype.NewFakeClientWithListAndApply[*v1beta1.VolumeAttributesClass, *v1beta1.VolumeAttributesClassList, *storagev1beta1.VolumeAttributesClassApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1beta1.SchemeGroupVersion.WithResource("volumeattributesclasses"),
    +			v1beta1.SchemeGroupVersion.WithKind("VolumeAttributesClass"),
    +			func() *v1beta1.VolumeAttributesClass { return &v1beta1.VolumeAttributesClass{} },
    +			func() *v1beta1.VolumeAttributesClassList { return &v1beta1.VolumeAttributesClassList{} },
    +			func(dst, src *v1beta1.VolumeAttributesClassList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1beta1.VolumeAttributesClassList) []*v1beta1.VolumeAttributesClass {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1beta1.VolumeAttributesClassList, items []*v1beta1.VolumeAttributesClass) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go
    index 1a202a928ed7..ebf78e10bca1 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go
    @@ -27,3 +27,5 @@ type CSIStorageCapacityExpansion interface{}
     type StorageClassExpansion interface{}
     
     type VolumeAttachmentExpansion interface{}
    +
    +type VolumeAttributesClassExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go
    index 4c7604bd2960..63b1d42a338e 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"net/http"
    +	http "net/http"
     
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    -	"k8s.io/client-go/kubernetes/scheme"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
     	rest "k8s.io/client-go/rest"
     )
     
    @@ -33,6 +33,7 @@ type StorageV1beta1Interface interface {
     	CSIStorageCapacitiesGetter
     	StorageClassesGetter
     	VolumeAttachmentsGetter
    +	VolumeAttributesClassesGetter
     }
     
     // StorageV1beta1Client is used to interact with features provided by the storage.k8s.io group.
    @@ -60,6 +61,10 @@ func (c *StorageV1beta1Client) VolumeAttachments() VolumeAttachmentInterface {
     	return newVolumeAttachments(c)
     }
     
    +func (c *StorageV1beta1Client) VolumeAttributesClasses() VolumeAttributesClassInterface {
    +	return newVolumeAttributesClasses(c)
    +}
    +
     // NewForConfig creates a new StorageV1beta1Client for the given config.
     // NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
     // where httpClient was generated with rest.HTTPClientFor(c).
    @@ -105,10 +110,10 @@ func New(c rest.Interface) *StorageV1beta1Client {
     }
     
     func setConfigDefaults(config *rest.Config) error {
    -	gv := v1beta1.SchemeGroupVersion
    +	gv := storagev1beta1.SchemeGroupVersion
     	config.GroupVersion = &gv
     	config.APIPath = "/apis"
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = rest.DefaultKubernetesUserAgent()
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go
    index 9b4ef231c898..341d5ba82540 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	applyconfigurationsstoragev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // StorageClassesGetter has a method to return a StorageClassInterface.
    @@ -41,157 +38,34 @@ type StorageClassesGetter interface {
     
     // StorageClassInterface has methods to work with StorageClass resources.
     type StorageClassInterface interface {
    -	Create(ctx context.Context, storageClass *v1beta1.StorageClass, opts v1.CreateOptions) (*v1beta1.StorageClass, error)
    -	Update(ctx context.Context, storageClass *v1beta1.StorageClass, opts v1.UpdateOptions) (*v1beta1.StorageClass, error)
    +	Create(ctx context.Context, storageClass *storagev1beta1.StorageClass, opts v1.CreateOptions) (*storagev1beta1.StorageClass, error)
    +	Update(ctx context.Context, storageClass *storagev1beta1.StorageClass, opts v1.UpdateOptions) (*storagev1beta1.StorageClass, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.StorageClass, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.StorageClassList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*storagev1beta1.StorageClass, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*storagev1beta1.StorageClassList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.StorageClass, err error)
    -	Apply(ctx context.Context, storageClass *storagev1beta1.StorageClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.StorageClass, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *storagev1beta1.StorageClass, err error)
    +	Apply(ctx context.Context, storageClass *applyconfigurationsstoragev1beta1.StorageClassApplyConfiguration, opts v1.ApplyOptions) (result *storagev1beta1.StorageClass, err error)
     	StorageClassExpansion
     }
     
     // storageClasses implements StorageClassInterface
     type storageClasses struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*storagev1beta1.StorageClass, *storagev1beta1.StorageClassList, *applyconfigurationsstoragev1beta1.StorageClassApplyConfiguration]
     }
     
     // newStorageClasses returns a StorageClasses
     func newStorageClasses(c *StorageV1beta1Client) *storageClasses {
     	return &storageClasses{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*storagev1beta1.StorageClass, *storagev1beta1.StorageClassList, *applyconfigurationsstoragev1beta1.StorageClassApplyConfiguration](
    +			"storageclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1beta1.StorageClass { return &storagev1beta1.StorageClass{} },
    +			func() *storagev1beta1.StorageClassList { return &storagev1beta1.StorageClassList{} },
    +			gentype.PrefersProtobuf[*storagev1beta1.StorageClass](),
    +		),
     	}
     }
    -
    -// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any.
    -func (c *storageClasses) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.StorageClass, err error) {
    -	result = &v1beta1.StorageClass{}
    -	err = c.client.Get().
    -		Resource("storageclasses").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of StorageClasses that match those selectors.
    -func (c *storageClasses) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.StorageClassList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.StorageClassList{}
    -	err = c.client.Get().
    -		Resource("storageclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested storageClasses.
    -func (c *storageClasses) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("storageclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a storageClass and creates it.  Returns the server's representation of the storageClass, and an error, if there is any.
    -func (c *storageClasses) Create(ctx context.Context, storageClass *v1beta1.StorageClass, opts v1.CreateOptions) (result *v1beta1.StorageClass, err error) {
    -	result = &v1beta1.StorageClass{}
    -	err = c.client.Post().
    -		Resource("storageclasses").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(storageClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any.
    -func (c *storageClasses) Update(ctx context.Context, storageClass *v1beta1.StorageClass, opts v1.UpdateOptions) (result *v1beta1.StorageClass, err error) {
    -	result = &v1beta1.StorageClass{}
    -	err = c.client.Put().
    -		Resource("storageclasses").
    -		Name(storageClass.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(storageClass).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the storageClass and deletes it. Returns an error if one occurs.
    -func (c *storageClasses) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("storageclasses").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *storageClasses) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("storageclasses").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched storageClass.
    -func (c *storageClasses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.StorageClass, err error) {
    -	result = &v1beta1.StorageClass{}
    -	err = c.client.Patch(pt).
    -		Resource("storageclasses").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied storageClass.
    -func (c *storageClasses) Apply(ctx context.Context, storageClass *storagev1beta1.StorageClassApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.StorageClass, err error) {
    -	if storageClass == nil {
    -		return nil, fmt.Errorf("storageClass provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(storageClass)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := storageClass.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("storageClass.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.StorageClass{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("storageclasses").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/volumeattachment.go
    index 35a8b64fcc30..42c1bd7e0b13 100644
    --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/volumeattachment.go
    @@ -19,18 +19,15 @@ limitations under the License.
     package v1beta1
     
     import (
    -	"context"
    -	json "encoding/json"
    -	"fmt"
    -	"time"
    +	context "context"
     
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	types "k8s.io/apimachinery/pkg/types"
     	watch "k8s.io/apimachinery/pkg/watch"
    -	storagev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	applyconfigurationsstoragev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
     	scheme "k8s.io/client-go/kubernetes/scheme"
    -	rest "k8s.io/client-go/rest"
     )
     
     // VolumeAttachmentsGetter has a method to return a VolumeAttachmentInterface.
    @@ -41,203 +38,38 @@ type VolumeAttachmentsGetter interface {
     
     // VolumeAttachmentInterface has methods to work with VolumeAttachment resources.
     type VolumeAttachmentInterface interface {
    -	Create(ctx context.Context, volumeAttachment *v1beta1.VolumeAttachment, opts v1.CreateOptions) (*v1beta1.VolumeAttachment, error)
    -	Update(ctx context.Context, volumeAttachment *v1beta1.VolumeAttachment, opts v1.UpdateOptions) (*v1beta1.VolumeAttachment, error)
    -	UpdateStatus(ctx context.Context, volumeAttachment *v1beta1.VolumeAttachment, opts v1.UpdateOptions) (*v1beta1.VolumeAttachment, error)
    +	Create(ctx context.Context, volumeAttachment *storagev1beta1.VolumeAttachment, opts v1.CreateOptions) (*storagev1beta1.VolumeAttachment, error)
    +	Update(ctx context.Context, volumeAttachment *storagev1beta1.VolumeAttachment, opts v1.UpdateOptions) (*storagev1beta1.VolumeAttachment, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, volumeAttachment *storagev1beta1.VolumeAttachment, opts v1.UpdateOptions) (*storagev1beta1.VolumeAttachment, error)
     	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
     	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    -	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.VolumeAttachment, error)
    -	List(ctx context.Context, opts v1.ListOptions) (*v1beta1.VolumeAttachmentList, error)
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*storagev1beta1.VolumeAttachment, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*storagev1beta1.VolumeAttachmentList, error)
     	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    -	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.VolumeAttachment, err error)
    -	Apply(ctx context.Context, volumeAttachment *storagev1beta1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.VolumeAttachment, err error)
    -	ApplyStatus(ctx context.Context, volumeAttachment *storagev1beta1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.VolumeAttachment, err error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *storagev1beta1.VolumeAttachment, err error)
    +	Apply(ctx context.Context, volumeAttachment *applyconfigurationsstoragev1beta1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *storagev1beta1.VolumeAttachment, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, volumeAttachment *applyconfigurationsstoragev1beta1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *storagev1beta1.VolumeAttachment, err error)
     	VolumeAttachmentExpansion
     }
     
     // volumeAttachments implements VolumeAttachmentInterface
     type volumeAttachments struct {
    -	client rest.Interface
    +	*gentype.ClientWithListAndApply[*storagev1beta1.VolumeAttachment, *storagev1beta1.VolumeAttachmentList, *applyconfigurationsstoragev1beta1.VolumeAttachmentApplyConfiguration]
     }
     
     // newVolumeAttachments returns a VolumeAttachments
     func newVolumeAttachments(c *StorageV1beta1Client) *volumeAttachments {
     	return &volumeAttachments{
    -		client: c.RESTClient(),
    +		gentype.NewClientWithListAndApply[*storagev1beta1.VolumeAttachment, *storagev1beta1.VolumeAttachmentList, *applyconfigurationsstoragev1beta1.VolumeAttachmentApplyConfiguration](
    +			"volumeattachments",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1beta1.VolumeAttachment { return &storagev1beta1.VolumeAttachment{} },
    +			func() *storagev1beta1.VolumeAttachmentList { return &storagev1beta1.VolumeAttachmentList{} },
    +			gentype.PrefersProtobuf[*storagev1beta1.VolumeAttachment](),
    +		),
     	}
     }
    -
    -// Get takes name of the volumeAttachment, and returns the corresponding volumeAttachment object, and an error if there is any.
    -func (c *volumeAttachments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	result = &v1beta1.VolumeAttachment{}
    -	err = c.client.Get().
    -		Resource("volumeattachments").
    -		Name(name).
    -		VersionedParams(&options, scheme.ParameterCodec).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// List takes label and field selectors, and returns the list of VolumeAttachments that match those selectors.
    -func (c *volumeAttachments) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.VolumeAttachmentList, err error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	result = &v1beta1.VolumeAttachmentList{}
    -	err = c.client.Get().
    -		Resource("volumeattachments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Watch returns a watch.Interface that watches the requested volumeAttachments.
    -func (c *volumeAttachments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
    -	var timeout time.Duration
    -	if opts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    -	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		Resource("volumeattachments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Watch(ctx)
    -}
    -
    -// Create takes the representation of a volumeAttachment and creates it.  Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *volumeAttachments) Create(ctx context.Context, volumeAttachment *v1beta1.VolumeAttachment, opts v1.CreateOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	result = &v1beta1.VolumeAttachment{}
    -	err = c.client.Post().
    -		Resource("volumeattachments").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttachment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Update takes the representation of a volumeAttachment and updates it. Returns the server's representation of the volumeAttachment, and an error, if there is any.
    -func (c *volumeAttachments) Update(ctx context.Context, volumeAttachment *v1beta1.VolumeAttachment, opts v1.UpdateOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	result = &v1beta1.VolumeAttachment{}
    -	err = c.client.Put().
    -		Resource("volumeattachments").
    -		Name(volumeAttachment.Name).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttachment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *volumeAttachments) UpdateStatus(ctx context.Context, volumeAttachment *v1beta1.VolumeAttachment, opts v1.UpdateOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	result = &v1beta1.VolumeAttachment{}
    -	err = c.client.Put().
    -		Resource("volumeattachments").
    -		Name(volumeAttachment.Name).
    -		SubResource("status").
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(volumeAttachment).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Delete takes name of the volumeAttachment and deletes it. Returns an error if one occurs.
    -func (c *volumeAttachments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
    -	return c.client.Delete().
    -		Resource("volumeattachments").
    -		Name(name).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// DeleteCollection deletes a collection of objects.
    -func (c *volumeAttachments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil {
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		Resource("volumeattachments").
    -		VersionedParams(&listOpts, scheme.ParameterCodec).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -
    -// Patch applies the patch and returns the patched volumeAttachment.
    -func (c *volumeAttachments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.VolumeAttachment, err error) {
    -	result = &v1beta1.VolumeAttachment{}
    -	err = c.client.Patch(pt).
    -		Resource("volumeattachments").
    -		Name(name).
    -		SubResource(subresources...).
    -		VersionedParams(&opts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// Apply takes the given apply declarative configuration, applies it and returns the applied volumeAttachment.
    -func (c *volumeAttachments) Apply(ctx context.Context, volumeAttachment *storagev1beta1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -	result = &v1beta1.VolumeAttachment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("volumeattachments").
    -		Name(*name).
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *volumeAttachments) ApplyStatus(ctx context.Context, volumeAttachment *storagev1beta1.VolumeAttachmentApplyConfiguration, opts v1.ApplyOptions) (result *v1beta1.VolumeAttachment, err error) {
    -	if volumeAttachment == nil {
    -		return nil, fmt.Errorf("volumeAttachment provided to Apply must not be nil")
    -	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := json.Marshal(volumeAttachment)
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	name := volumeAttachment.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("volumeAttachment.Name must be provided to Apply")
    -	}
    -
    -	result = &v1beta1.VolumeAttachment{}
    -	err = c.client.Patch(types.ApplyPatchType).
    -		Resource("volumeattachments").
    -		Name(*name).
    -		SubResource("status").
    -		VersionedParams(&patchOpts, scheme.ParameterCodec).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/volumeattributesclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/volumeattributesclass.go
    new file mode 100644
    index 000000000000..09f9f1178707
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/volumeattributesclass.go
    @@ -0,0 +1,71 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsstoragev1beta1 "k8s.io/client-go/applyconfigurations/storage/v1beta1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// VolumeAttributesClassesGetter has a method to return a VolumeAttributesClassInterface.
    +// A group's client should implement this interface.
    +type VolumeAttributesClassesGetter interface {
    +	VolumeAttributesClasses() VolumeAttributesClassInterface
    +}
    +
    +// VolumeAttributesClassInterface has methods to work with VolumeAttributesClass resources.
    +type VolumeAttributesClassInterface interface {
    +	Create(ctx context.Context, volumeAttributesClass *storagev1beta1.VolumeAttributesClass, opts v1.CreateOptions) (*storagev1beta1.VolumeAttributesClass, error)
    +	Update(ctx context.Context, volumeAttributesClass *storagev1beta1.VolumeAttributesClass, opts v1.UpdateOptions) (*storagev1beta1.VolumeAttributesClass, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*storagev1beta1.VolumeAttributesClass, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*storagev1beta1.VolumeAttributesClassList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *storagev1beta1.VolumeAttributesClass, err error)
    +	Apply(ctx context.Context, volumeAttributesClass *applyconfigurationsstoragev1beta1.VolumeAttributesClassApplyConfiguration, opts v1.ApplyOptions) (result *storagev1beta1.VolumeAttributesClass, err error)
    +	VolumeAttributesClassExpansion
    +}
    +
    +// volumeAttributesClasses implements VolumeAttributesClassInterface
    +type volumeAttributesClasses struct {
    +	*gentype.ClientWithListAndApply[*storagev1beta1.VolumeAttributesClass, *storagev1beta1.VolumeAttributesClassList, *applyconfigurationsstoragev1beta1.VolumeAttributesClassApplyConfiguration]
    +}
    +
    +// newVolumeAttributesClasses returns a VolumeAttributesClasses
    +func newVolumeAttributesClasses(c *StorageV1beta1Client) *volumeAttributesClasses {
    +	return &volumeAttributesClasses{
    +		gentype.NewClientWithListAndApply[*storagev1beta1.VolumeAttributesClass, *storagev1beta1.VolumeAttributesClassList, *applyconfigurationsstoragev1beta1.VolumeAttributesClassApplyConfiguration](
    +			"volumeattributesclasses",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagev1beta1.VolumeAttributesClass { return &storagev1beta1.VolumeAttributesClass{} },
    +			func() *storagev1beta1.VolumeAttributesClassList { return &storagev1beta1.VolumeAttributesClassList{} },
    +			gentype.PrefersProtobuf[*storagev1beta1.VolumeAttributesClass](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/doc.go
    new file mode 100644
    index 000000000000..df51baa4d4c1
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/doc.go
    @@ -0,0 +1,20 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +// This package has the automatically generated typed clients.
    +package v1alpha1
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/doc.go
    new file mode 100644
    index 000000000000..16f44399065e
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/doc.go
    @@ -0,0 +1,20 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +// Package fake has the automatically generated clients.
    +package fake
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/fake_storagemigration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/fake_storagemigration_client.go
    new file mode 100644
    index 000000000000..c33a1c0169bb
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/fake_storagemigration_client.go
    @@ -0,0 +1,40 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1alpha1 "k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1"
    +	rest "k8s.io/client-go/rest"
    +	testing "k8s.io/client-go/testing"
    +)
    +
    +type FakeStoragemigrationV1alpha1 struct {
    +	*testing.Fake
    +}
    +
    +func (c *FakeStoragemigrationV1alpha1) StorageVersionMigrations() v1alpha1.StorageVersionMigrationInterface {
    +	return newFakeStorageVersionMigrations(c)
    +}
    +
    +// RESTClient returns a RESTClient that is used to communicate
    +// with API server by this client implementation.
    +func (c *FakeStoragemigrationV1alpha1) RESTClient() rest.Interface {
    +	var ret *rest.RESTClient
    +	return ret
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/fake_storageversionmigration.go b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/fake_storageversionmigration.go
    new file mode 100644
    index 000000000000..02de9f302747
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake/fake_storageversionmigration.go
    @@ -0,0 +1,53 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package fake
    +
    +import (
    +	v1alpha1 "k8s.io/api/storagemigration/v1alpha1"
    +	storagemigrationv1alpha1 "k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
    +	typedstoragemigrationv1alpha1 "k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1"
    +)
    +
    +// fakeStorageVersionMigrations implements StorageVersionMigrationInterface
    +type fakeStorageVersionMigrations struct {
    +	*gentype.FakeClientWithListAndApply[*v1alpha1.StorageVersionMigration, *v1alpha1.StorageVersionMigrationList, *storagemigrationv1alpha1.StorageVersionMigrationApplyConfiguration]
    +	Fake *FakeStoragemigrationV1alpha1
    +}
    +
    +func newFakeStorageVersionMigrations(fake *FakeStoragemigrationV1alpha1) typedstoragemigrationv1alpha1.StorageVersionMigrationInterface {
    +	return &fakeStorageVersionMigrations{
    +		gentype.NewFakeClientWithListAndApply[*v1alpha1.StorageVersionMigration, *v1alpha1.StorageVersionMigrationList, *storagemigrationv1alpha1.StorageVersionMigrationApplyConfiguration](
    +			fake.Fake,
    +			"",
    +			v1alpha1.SchemeGroupVersion.WithResource("storageversionmigrations"),
    +			v1alpha1.SchemeGroupVersion.WithKind("StorageVersionMigration"),
    +			func() *v1alpha1.StorageVersionMigration { return &v1alpha1.StorageVersionMigration{} },
    +			func() *v1alpha1.StorageVersionMigrationList { return &v1alpha1.StorageVersionMigrationList{} },
    +			func(dst, src *v1alpha1.StorageVersionMigrationList) { dst.ListMeta = src.ListMeta },
    +			func(list *v1alpha1.StorageVersionMigrationList) []*v1alpha1.StorageVersionMigration {
    +				return gentype.ToPointerSlice(list.Items)
    +			},
    +			func(list *v1alpha1.StorageVersionMigrationList, items []*v1alpha1.StorageVersionMigration) {
    +				list.Items = gentype.FromPointerSlice(items)
    +			},
    +		),
    +		fake,
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/generated_expansion.go
    new file mode 100644
    index 000000000000..89220c3ce98f
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/generated_expansion.go
    @@ -0,0 +1,21 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +type StorageVersionMigrationExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/storagemigration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/storagemigration_client.go
    new file mode 100644
    index 000000000000..dcd5a4bf8ca0
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/storagemigration_client.go
    @@ -0,0 +1,107 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	http "net/http"
    +
    +	storagemigrationv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +	rest "k8s.io/client-go/rest"
    +)
    +
    +type StoragemigrationV1alpha1Interface interface {
    +	RESTClient() rest.Interface
    +	StorageVersionMigrationsGetter
    +}
    +
    +// StoragemigrationV1alpha1Client is used to interact with features provided by the storagemigration.k8s.io group.
    +type StoragemigrationV1alpha1Client struct {
    +	restClient rest.Interface
    +}
    +
    +func (c *StoragemigrationV1alpha1Client) StorageVersionMigrations() StorageVersionMigrationInterface {
    +	return newStorageVersionMigrations(c)
    +}
    +
    +// NewForConfig creates a new StoragemigrationV1alpha1Client for the given config.
    +// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
    +// where httpClient was generated with rest.HTTPClientFor(c).
    +func NewForConfig(c *rest.Config) (*StoragemigrationV1alpha1Client, error) {
    +	config := *c
    +	if err := setConfigDefaults(&config); err != nil {
    +		return nil, err
    +	}
    +	httpClient, err := rest.HTTPClientFor(&config)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return NewForConfigAndClient(&config, httpClient)
    +}
    +
    +// NewForConfigAndClient creates a new StoragemigrationV1alpha1Client for the given config and http client.
    +// Note the http client provided takes precedence over the configured transport values.
    +func NewForConfigAndClient(c *rest.Config, h *http.Client) (*StoragemigrationV1alpha1Client, error) {
    +	config := *c
    +	if err := setConfigDefaults(&config); err != nil {
    +		return nil, err
    +	}
    +	client, err := rest.RESTClientForConfigAndClient(&config, h)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return &StoragemigrationV1alpha1Client{client}, nil
    +}
    +
    +// NewForConfigOrDie creates a new StoragemigrationV1alpha1Client for the given config and
    +// panics if there is an error in the config.
    +func NewForConfigOrDie(c *rest.Config) *StoragemigrationV1alpha1Client {
    +	client, err := NewForConfig(c)
    +	if err != nil {
    +		panic(err)
    +	}
    +	return client
    +}
    +
    +// New creates a new StoragemigrationV1alpha1Client for the given RESTClient.
    +func New(c rest.Interface) *StoragemigrationV1alpha1Client {
    +	return &StoragemigrationV1alpha1Client{c}
    +}
    +
    +func setConfigDefaults(config *rest.Config) error {
    +	gv := storagemigrationv1alpha1.SchemeGroupVersion
    +	config.GroupVersion = &gv
    +	config.APIPath = "/apis"
    +	config.NegotiatedSerializer = rest.CodecFactoryForGeneratedClient(scheme.Scheme, scheme.Codecs).WithoutConversion()
    +
    +	if config.UserAgent == "" {
    +		config.UserAgent = rest.DefaultKubernetesUserAgent()
    +	}
    +
    +	return nil
    +}
    +
    +// RESTClient returns a RESTClient that is used to communicate
    +// with API server by this client implementation.
    +func (c *StoragemigrationV1alpha1Client) RESTClient() rest.Interface {
    +	if c == nil {
    +		return nil
    +	}
    +	return c.restClient
    +}
    diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/storageversionmigration.go b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/storageversionmigration.go
    new file mode 100644
    index 000000000000..5c6981ec87d1
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/storageversionmigration.go
    @@ -0,0 +1,79 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by client-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	context "context"
    +
    +	storagemigrationv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	types "k8s.io/apimachinery/pkg/types"
    +	watch "k8s.io/apimachinery/pkg/watch"
    +	applyconfigurationsstoragemigrationv1alpha1 "k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1"
    +	gentype "k8s.io/client-go/gentype"
    +	scheme "k8s.io/client-go/kubernetes/scheme"
    +)
    +
    +// StorageVersionMigrationsGetter has a method to return a StorageVersionMigrationInterface.
    +// A group's client should implement this interface.
    +type StorageVersionMigrationsGetter interface {
    +	StorageVersionMigrations() StorageVersionMigrationInterface
    +}
    +
    +// StorageVersionMigrationInterface has methods to work with StorageVersionMigration resources.
    +type StorageVersionMigrationInterface interface {
    +	Create(ctx context.Context, storageVersionMigration *storagemigrationv1alpha1.StorageVersionMigration, opts v1.CreateOptions) (*storagemigrationv1alpha1.StorageVersionMigration, error)
    +	Update(ctx context.Context, storageVersionMigration *storagemigrationv1alpha1.StorageVersionMigration, opts v1.UpdateOptions) (*storagemigrationv1alpha1.StorageVersionMigration, error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +	UpdateStatus(ctx context.Context, storageVersionMigration *storagemigrationv1alpha1.StorageVersionMigration, opts v1.UpdateOptions) (*storagemigrationv1alpha1.StorageVersionMigration, error)
    +	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
    +	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
    +	Get(ctx context.Context, name string, opts v1.GetOptions) (*storagemigrationv1alpha1.StorageVersionMigration, error)
    +	List(ctx context.Context, opts v1.ListOptions) (*storagemigrationv1alpha1.StorageVersionMigrationList, error)
    +	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
    +	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *storagemigrationv1alpha1.StorageVersionMigration, err error)
    +	Apply(ctx context.Context, storageVersionMigration *applyconfigurationsstoragemigrationv1alpha1.StorageVersionMigrationApplyConfiguration, opts v1.ApplyOptions) (result *storagemigrationv1alpha1.StorageVersionMigration, err error)
    +	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +	ApplyStatus(ctx context.Context, storageVersionMigration *applyconfigurationsstoragemigrationv1alpha1.StorageVersionMigrationApplyConfiguration, opts v1.ApplyOptions) (result *storagemigrationv1alpha1.StorageVersionMigration, err error)
    +	StorageVersionMigrationExpansion
    +}
    +
    +// storageVersionMigrations implements StorageVersionMigrationInterface
    +type storageVersionMigrations struct {
    +	*gentype.ClientWithListAndApply[*storagemigrationv1alpha1.StorageVersionMigration, *storagemigrationv1alpha1.StorageVersionMigrationList, *applyconfigurationsstoragemigrationv1alpha1.StorageVersionMigrationApplyConfiguration]
    +}
    +
    +// newStorageVersionMigrations returns a StorageVersionMigrations
    +func newStorageVersionMigrations(c *StoragemigrationV1alpha1Client) *storageVersionMigrations {
    +	return &storageVersionMigrations{
    +		gentype.NewClientWithListAndApply[*storagemigrationv1alpha1.StorageVersionMigration, *storagemigrationv1alpha1.StorageVersionMigrationList, *applyconfigurationsstoragemigrationv1alpha1.StorageVersionMigrationApplyConfiguration](
    +			"storageversionmigrations",
    +			c.RESTClient(),
    +			scheme.ParameterCodec,
    +			"",
    +			func() *storagemigrationv1alpha1.StorageVersionMigration {
    +				return &storagemigrationv1alpha1.StorageVersionMigration{}
    +			},
    +			func() *storagemigrationv1alpha1.StorageVersionMigrationList {
    +				return &storagemigrationv1alpha1.StorageVersionMigrationList{}
    +			},
    +			gentype.PrefersProtobuf[*storagemigrationv1alpha1.StorageVersionMigration](),
    +		),
    +	}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1/expansion_generated.go
    index e121ae41a3ef..9002ad6ea3b5 100644
    --- a/vendor/k8s.io/client-go/listers/admissionregistration/v1/expansion_generated.go
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1/expansion_generated.go
    @@ -22,6 +22,14 @@ package v1
     // MutatingWebhookConfigurationLister.
     type MutatingWebhookConfigurationListerExpansion interface{}
     
    +// ValidatingAdmissionPolicyListerExpansion allows custom methods to be added to
    +// ValidatingAdmissionPolicyLister.
    +type ValidatingAdmissionPolicyListerExpansion interface{}
    +
    +// ValidatingAdmissionPolicyBindingListerExpansion allows custom methods to be added to
    +// ValidatingAdmissionPolicyBindingLister.
    +type ValidatingAdmissionPolicyBindingListerExpansion interface{}
    +
     // ValidatingWebhookConfigurationListerExpansion allows custom methods to be added to
     // ValidatingWebhookConfigurationLister.
     type ValidatingWebhookConfigurationListerExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1/mutatingwebhookconfiguration.go
    index fe9e27985def..b3efc72a4964 100644
    --- a/vendor/k8s.io/client-go/listers/admissionregistration/v1/mutatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1/mutatingwebhookconfiguration.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/admissionregistration/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // MutatingWebhookConfigurationLister helps list MutatingWebhookConfigurations.
    @@ -30,39 +30,19 @@ import (
     type MutatingWebhookConfigurationLister interface {
     	// List lists all MutatingWebhookConfigurations in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.MutatingWebhookConfiguration, err error)
    +	List(selector labels.Selector) (ret []*admissionregistrationv1.MutatingWebhookConfiguration, err error)
     	// Get retrieves the MutatingWebhookConfiguration from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.MutatingWebhookConfiguration, error)
    +	Get(name string) (*admissionregistrationv1.MutatingWebhookConfiguration, error)
     	MutatingWebhookConfigurationListerExpansion
     }
     
     // mutatingWebhookConfigurationLister implements the MutatingWebhookConfigurationLister interface.
     type mutatingWebhookConfigurationLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*admissionregistrationv1.MutatingWebhookConfiguration]
     }
     
     // NewMutatingWebhookConfigurationLister returns a new MutatingWebhookConfigurationLister.
     func NewMutatingWebhookConfigurationLister(indexer cache.Indexer) MutatingWebhookConfigurationLister {
    -	return &mutatingWebhookConfigurationLister{indexer: indexer}
    -}
    -
    -// List lists all MutatingWebhookConfigurations in the indexer.
    -func (s *mutatingWebhookConfigurationLister) List(selector labels.Selector) (ret []*v1.MutatingWebhookConfiguration, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.MutatingWebhookConfiguration))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the MutatingWebhookConfiguration from the index for a given name.
    -func (s *mutatingWebhookConfigurationLister) Get(name string) (*v1.MutatingWebhookConfiguration, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("mutatingwebhookconfiguration"), name)
    -	}
    -	return obj.(*v1.MutatingWebhookConfiguration), nil
    +	return &mutatingWebhookConfigurationLister{listers.New[*admissionregistrationv1.MutatingWebhookConfiguration](indexer, admissionregistrationv1.Resource("mutatingwebhookconfiguration"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingadmissionpolicy.go
    new file mode 100644
    index 000000000000..07a181cd4ba2
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingadmissionpolicy.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ValidatingAdmissionPolicyLister helps list ValidatingAdmissionPolicies.
    +// All objects returned here must be treated as read-only.
    +type ValidatingAdmissionPolicyLister interface {
    +	// List lists all ValidatingAdmissionPolicies in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*admissionregistrationv1.ValidatingAdmissionPolicy, err error)
    +	// Get retrieves the ValidatingAdmissionPolicy from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*admissionregistrationv1.ValidatingAdmissionPolicy, error)
    +	ValidatingAdmissionPolicyListerExpansion
    +}
    +
    +// validatingAdmissionPolicyLister implements the ValidatingAdmissionPolicyLister interface.
    +type validatingAdmissionPolicyLister struct {
    +	listers.ResourceIndexer[*admissionregistrationv1.ValidatingAdmissionPolicy]
    +}
    +
    +// NewValidatingAdmissionPolicyLister returns a new ValidatingAdmissionPolicyLister.
    +func NewValidatingAdmissionPolicyLister(indexer cache.Indexer) ValidatingAdmissionPolicyLister {
    +	return &validatingAdmissionPolicyLister{listers.New[*admissionregistrationv1.ValidatingAdmissionPolicy](indexer, admissionregistrationv1.Resource("validatingadmissionpolicy"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingadmissionpolicybinding.go
    new file mode 100644
    index 000000000000..131eb12b2bba
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingadmissionpolicybinding.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1
    +
    +import (
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ValidatingAdmissionPolicyBindingLister helps list ValidatingAdmissionPolicyBindings.
    +// All objects returned here must be treated as read-only.
    +type ValidatingAdmissionPolicyBindingLister interface {
    +	// List lists all ValidatingAdmissionPolicyBindings in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*admissionregistrationv1.ValidatingAdmissionPolicyBinding, err error)
    +	// Get retrieves the ValidatingAdmissionPolicyBinding from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*admissionregistrationv1.ValidatingAdmissionPolicyBinding, error)
    +	ValidatingAdmissionPolicyBindingListerExpansion
    +}
    +
    +// validatingAdmissionPolicyBindingLister implements the ValidatingAdmissionPolicyBindingLister interface.
    +type validatingAdmissionPolicyBindingLister struct {
    +	listers.ResourceIndexer[*admissionregistrationv1.ValidatingAdmissionPolicyBinding]
    +}
    +
    +// NewValidatingAdmissionPolicyBindingLister returns a new ValidatingAdmissionPolicyBindingLister.
    +func NewValidatingAdmissionPolicyBindingLister(indexer cache.Indexer) ValidatingAdmissionPolicyBindingLister {
    +	return &validatingAdmissionPolicyBindingLister{listers.New[*admissionregistrationv1.ValidatingAdmissionPolicyBinding](indexer, admissionregistrationv1.Resource("validatingadmissionpolicybinding"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingwebhookconfiguration.go
    index 1579a0ebb76b..50e1624c93d2 100644
    --- a/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingwebhookconfiguration.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/admissionregistration/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ValidatingWebhookConfigurationLister helps list ValidatingWebhookConfigurations.
    @@ -30,39 +30,19 @@ import (
     type ValidatingWebhookConfigurationLister interface {
     	// List lists all ValidatingWebhookConfigurations in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ValidatingWebhookConfiguration, err error)
    +	List(selector labels.Selector) (ret []*admissionregistrationv1.ValidatingWebhookConfiguration, err error)
     	// Get retrieves the ValidatingWebhookConfiguration from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.ValidatingWebhookConfiguration, error)
    +	Get(name string) (*admissionregistrationv1.ValidatingWebhookConfiguration, error)
     	ValidatingWebhookConfigurationListerExpansion
     }
     
     // validatingWebhookConfigurationLister implements the ValidatingWebhookConfigurationLister interface.
     type validatingWebhookConfigurationLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*admissionregistrationv1.ValidatingWebhookConfiguration]
     }
     
     // NewValidatingWebhookConfigurationLister returns a new ValidatingWebhookConfigurationLister.
     func NewValidatingWebhookConfigurationLister(indexer cache.Indexer) ValidatingWebhookConfigurationLister {
    -	return &validatingWebhookConfigurationLister{indexer: indexer}
    -}
    -
    -// List lists all ValidatingWebhookConfigurations in the indexer.
    -func (s *validatingWebhookConfigurationLister) List(selector labels.Selector) (ret []*v1.ValidatingWebhookConfiguration, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ValidatingWebhookConfiguration))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ValidatingWebhookConfiguration from the index for a given name.
    -func (s *validatingWebhookConfigurationLister) Get(name string) (*v1.ValidatingWebhookConfiguration, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("validatingwebhookconfiguration"), name)
    -	}
    -	return obj.(*v1.ValidatingWebhookConfiguration), nil
    +	return &validatingWebhookConfigurationLister{listers.New[*admissionregistrationv1.ValidatingWebhookConfiguration](indexer, admissionregistrationv1.Resource("validatingwebhookconfiguration"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go
    index 3f8b7819ce09..701784de00df 100644
    --- a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go
    @@ -18,6 +18,14 @@ limitations under the License.
     
     package v1alpha1
     
    +// MutatingAdmissionPolicyListerExpansion allows custom methods to be added to
    +// MutatingAdmissionPolicyLister.
    +type MutatingAdmissionPolicyListerExpansion interface{}
    +
    +// MutatingAdmissionPolicyBindingListerExpansion allows custom methods to be added to
    +// MutatingAdmissionPolicyBindingLister.
    +type MutatingAdmissionPolicyBindingListerExpansion interface{}
    +
     // ValidatingAdmissionPolicyListerExpansion allows custom methods to be added to
     // ValidatingAdmissionPolicyLister.
     type ValidatingAdmissionPolicyListerExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/mutatingadmissionpolicy.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/mutatingadmissionpolicy.go
    new file mode 100644
    index 000000000000..debeb79d2443
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/mutatingadmissionpolicy.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// MutatingAdmissionPolicyLister helps list MutatingAdmissionPolicies.
    +// All objects returned here must be treated as read-only.
    +type MutatingAdmissionPolicyLister interface {
    +	// List lists all MutatingAdmissionPolicies in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*admissionregistrationv1alpha1.MutatingAdmissionPolicy, err error)
    +	// Get retrieves the MutatingAdmissionPolicy from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*admissionregistrationv1alpha1.MutatingAdmissionPolicy, error)
    +	MutatingAdmissionPolicyListerExpansion
    +}
    +
    +// mutatingAdmissionPolicyLister implements the MutatingAdmissionPolicyLister interface.
    +type mutatingAdmissionPolicyLister struct {
    +	listers.ResourceIndexer[*admissionregistrationv1alpha1.MutatingAdmissionPolicy]
    +}
    +
    +// NewMutatingAdmissionPolicyLister returns a new MutatingAdmissionPolicyLister.
    +func NewMutatingAdmissionPolicyLister(indexer cache.Indexer) MutatingAdmissionPolicyLister {
    +	return &mutatingAdmissionPolicyLister{listers.New[*admissionregistrationv1alpha1.MutatingAdmissionPolicy](indexer, admissionregistrationv1alpha1.Resource("mutatingadmissionpolicy"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go
    new file mode 100644
    index 000000000000..bcad2904808b
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/mutatingadmissionpolicybinding.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// MutatingAdmissionPolicyBindingLister helps list MutatingAdmissionPolicyBindings.
    +// All objects returned here must be treated as read-only.
    +type MutatingAdmissionPolicyBindingLister interface {
    +	// List lists all MutatingAdmissionPolicyBindings in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, err error)
    +	// Get retrieves the MutatingAdmissionPolicyBinding from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding, error)
    +	MutatingAdmissionPolicyBindingListerExpansion
    +}
    +
    +// mutatingAdmissionPolicyBindingLister implements the MutatingAdmissionPolicyBindingLister interface.
    +type mutatingAdmissionPolicyBindingLister struct {
    +	listers.ResourceIndexer[*admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding]
    +}
    +
    +// NewMutatingAdmissionPolicyBindingLister returns a new MutatingAdmissionPolicyBindingLister.
    +func NewMutatingAdmissionPolicyBindingLister(indexer cache.Indexer) MutatingAdmissionPolicyBindingLister {
    +	return &mutatingAdmissionPolicyBindingLister{listers.New[*admissionregistrationv1alpha1.MutatingAdmissionPolicyBinding](indexer, admissionregistrationv1alpha1.Resource("mutatingadmissionpolicybinding"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    index ae500183a7a7..aa4d320ccd4d 100644
    --- a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingadmissionpolicy.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ValidatingAdmissionPolicyLister helps list ValidatingAdmissionPolicies.
    @@ -30,39 +30,19 @@ import (
     type ValidatingAdmissionPolicyLister interface {
     	// List lists all ValidatingAdmissionPolicies in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.ValidatingAdmissionPolicy, err error)
    +	List(selector labels.Selector) (ret []*admissionregistrationv1alpha1.ValidatingAdmissionPolicy, err error)
     	// Get retrieves the ValidatingAdmissionPolicy from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.ValidatingAdmissionPolicy, error)
    +	Get(name string) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicy, error)
     	ValidatingAdmissionPolicyListerExpansion
     }
     
     // validatingAdmissionPolicyLister implements the ValidatingAdmissionPolicyLister interface.
     type validatingAdmissionPolicyLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*admissionregistrationv1alpha1.ValidatingAdmissionPolicy]
     }
     
     // NewValidatingAdmissionPolicyLister returns a new ValidatingAdmissionPolicyLister.
     func NewValidatingAdmissionPolicyLister(indexer cache.Indexer) ValidatingAdmissionPolicyLister {
    -	return &validatingAdmissionPolicyLister{indexer: indexer}
    -}
    -
    -// List lists all ValidatingAdmissionPolicies in the indexer.
    -func (s *validatingAdmissionPolicyLister) List(selector labels.Selector) (ret []*v1alpha1.ValidatingAdmissionPolicy, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.ValidatingAdmissionPolicy))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ValidatingAdmissionPolicy from the index for a given name.
    -func (s *validatingAdmissionPolicyLister) Get(name string) (*v1alpha1.ValidatingAdmissionPolicy, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("validatingadmissionpolicy"), name)
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicy), nil
    +	return &validatingAdmissionPolicyLister{listers.New[*admissionregistrationv1alpha1.ValidatingAdmissionPolicy](indexer, admissionregistrationv1alpha1.Resource("validatingadmissionpolicy"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    index 552854daf26f..84edc9fb7773 100644
    --- a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ValidatingAdmissionPolicyBindingLister helps list ValidatingAdmissionPolicyBindings.
    @@ -30,39 +30,19 @@ import (
     type ValidatingAdmissionPolicyBindingLister interface {
     	// List lists all ValidatingAdmissionPolicyBindings in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.ValidatingAdmissionPolicyBinding, err error)
    +	List(selector labels.Selector) (ret []*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, err error)
     	// Get retrieves the ValidatingAdmissionPolicyBinding from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.ValidatingAdmissionPolicyBinding, error)
    +	Get(name string) (*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding, error)
     	ValidatingAdmissionPolicyBindingListerExpansion
     }
     
     // validatingAdmissionPolicyBindingLister implements the ValidatingAdmissionPolicyBindingLister interface.
     type validatingAdmissionPolicyBindingLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding]
     }
     
     // NewValidatingAdmissionPolicyBindingLister returns a new ValidatingAdmissionPolicyBindingLister.
     func NewValidatingAdmissionPolicyBindingLister(indexer cache.Indexer) ValidatingAdmissionPolicyBindingLister {
    -	return &validatingAdmissionPolicyBindingLister{indexer: indexer}
    -}
    -
    -// List lists all ValidatingAdmissionPolicyBindings in the indexer.
    -func (s *validatingAdmissionPolicyBindingLister) List(selector labels.Selector) (ret []*v1alpha1.ValidatingAdmissionPolicyBinding, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.ValidatingAdmissionPolicyBinding))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ValidatingAdmissionPolicyBinding from the index for a given name.
    -func (s *validatingAdmissionPolicyBindingLister) Get(name string) (*v1alpha1.ValidatingAdmissionPolicyBinding, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("validatingadmissionpolicybinding"), name)
    -	}
    -	return obj.(*v1alpha1.ValidatingAdmissionPolicyBinding), nil
    +	return &validatingAdmissionPolicyBindingLister{listers.New[*admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding](indexer, admissionregistrationv1alpha1.Resource("validatingadmissionpolicybinding"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    index 93c6096ee9ec..67588f13b9c5 100644
    --- a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // MutatingWebhookConfigurationLister helps list MutatingWebhookConfigurations.
    @@ -30,39 +30,19 @@ import (
     type MutatingWebhookConfigurationLister interface {
     	// List lists all MutatingWebhookConfigurations in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.MutatingWebhookConfiguration, err error)
    +	List(selector labels.Selector) (ret []*admissionregistrationv1beta1.MutatingWebhookConfiguration, err error)
     	// Get retrieves the MutatingWebhookConfiguration from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.MutatingWebhookConfiguration, error)
    +	Get(name string) (*admissionregistrationv1beta1.MutatingWebhookConfiguration, error)
     	MutatingWebhookConfigurationListerExpansion
     }
     
     // mutatingWebhookConfigurationLister implements the MutatingWebhookConfigurationLister interface.
     type mutatingWebhookConfigurationLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*admissionregistrationv1beta1.MutatingWebhookConfiguration]
     }
     
     // NewMutatingWebhookConfigurationLister returns a new MutatingWebhookConfigurationLister.
     func NewMutatingWebhookConfigurationLister(indexer cache.Indexer) MutatingWebhookConfigurationLister {
    -	return &mutatingWebhookConfigurationLister{indexer: indexer}
    -}
    -
    -// List lists all MutatingWebhookConfigurations in the indexer.
    -func (s *mutatingWebhookConfigurationLister) List(selector labels.Selector) (ret []*v1beta1.MutatingWebhookConfiguration, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.MutatingWebhookConfiguration))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the MutatingWebhookConfiguration from the index for a given name.
    -func (s *mutatingWebhookConfigurationLister) Get(name string) (*v1beta1.MutatingWebhookConfiguration, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("mutatingwebhookconfiguration"), name)
    -	}
    -	return obj.(*v1beta1.MutatingWebhookConfiguration), nil
    +	return &mutatingWebhookConfigurationLister{listers.New[*admissionregistrationv1beta1.MutatingWebhookConfiguration](indexer, admissionregistrationv1beta1.Resource("mutatingwebhookconfiguration"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingadmissionpolicy.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingadmissionpolicy.go
    index 7018b3ceec67..38237220b878 100644
    --- a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingadmissionpolicy.go
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingadmissionpolicy.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ValidatingAdmissionPolicyLister helps list ValidatingAdmissionPolicies.
    @@ -30,39 +30,19 @@ import (
     type ValidatingAdmissionPolicyLister interface {
     	// List lists all ValidatingAdmissionPolicies in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.ValidatingAdmissionPolicy, err error)
    +	List(selector labels.Selector) (ret []*admissionregistrationv1beta1.ValidatingAdmissionPolicy, err error)
     	// Get retrieves the ValidatingAdmissionPolicy from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.ValidatingAdmissionPolicy, error)
    +	Get(name string) (*admissionregistrationv1beta1.ValidatingAdmissionPolicy, error)
     	ValidatingAdmissionPolicyListerExpansion
     }
     
     // validatingAdmissionPolicyLister implements the ValidatingAdmissionPolicyLister interface.
     type validatingAdmissionPolicyLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*admissionregistrationv1beta1.ValidatingAdmissionPolicy]
     }
     
     // NewValidatingAdmissionPolicyLister returns a new ValidatingAdmissionPolicyLister.
     func NewValidatingAdmissionPolicyLister(indexer cache.Indexer) ValidatingAdmissionPolicyLister {
    -	return &validatingAdmissionPolicyLister{indexer: indexer}
    -}
    -
    -// List lists all ValidatingAdmissionPolicies in the indexer.
    -func (s *validatingAdmissionPolicyLister) List(selector labels.Selector) (ret []*v1beta1.ValidatingAdmissionPolicy, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.ValidatingAdmissionPolicy))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ValidatingAdmissionPolicy from the index for a given name.
    -func (s *validatingAdmissionPolicyLister) Get(name string) (*v1beta1.ValidatingAdmissionPolicy, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("validatingadmissionpolicy"), name)
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicy), nil
    +	return &validatingAdmissionPolicyLister{listers.New[*admissionregistrationv1beta1.ValidatingAdmissionPolicy](indexer, admissionregistrationv1beta1.Resource("validatingadmissionpolicy"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingadmissionpolicybinding.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    index 5fcebfd22fbe..071b1188d5f5 100644
    --- a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ValidatingAdmissionPolicyBindingLister helps list ValidatingAdmissionPolicyBindings.
    @@ -30,39 +30,19 @@ import (
     type ValidatingAdmissionPolicyBindingLister interface {
     	// List lists all ValidatingAdmissionPolicyBindings in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.ValidatingAdmissionPolicyBinding, err error)
    +	List(selector labels.Selector) (ret []*admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, err error)
     	// Get retrieves the ValidatingAdmissionPolicyBinding from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.ValidatingAdmissionPolicyBinding, error)
    +	Get(name string) (*admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding, error)
     	ValidatingAdmissionPolicyBindingListerExpansion
     }
     
     // validatingAdmissionPolicyBindingLister implements the ValidatingAdmissionPolicyBindingLister interface.
     type validatingAdmissionPolicyBindingLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding]
     }
     
     // NewValidatingAdmissionPolicyBindingLister returns a new ValidatingAdmissionPolicyBindingLister.
     func NewValidatingAdmissionPolicyBindingLister(indexer cache.Indexer) ValidatingAdmissionPolicyBindingLister {
    -	return &validatingAdmissionPolicyBindingLister{indexer: indexer}
    -}
    -
    -// List lists all ValidatingAdmissionPolicyBindings in the indexer.
    -func (s *validatingAdmissionPolicyBindingLister) List(selector labels.Selector) (ret []*v1beta1.ValidatingAdmissionPolicyBinding, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.ValidatingAdmissionPolicyBinding))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ValidatingAdmissionPolicyBinding from the index for a given name.
    -func (s *validatingAdmissionPolicyBindingLister) Get(name string) (*v1beta1.ValidatingAdmissionPolicyBinding, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("validatingadmissionpolicybinding"), name)
    -	}
    -	return obj.(*v1beta1.ValidatingAdmissionPolicyBinding), nil
    +	return &validatingAdmissionPolicyBindingLister{listers.New[*admissionregistrationv1beta1.ValidatingAdmissionPolicyBinding](indexer, admissionregistrationv1beta1.Resource("validatingadmissionpolicybinding"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    index 7c17fccb2e20..b16546b6d87b 100644
    --- a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingwebhookconfiguration.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/admissionregistration/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ValidatingWebhookConfigurationLister helps list ValidatingWebhookConfigurations.
    @@ -30,39 +30,19 @@ import (
     type ValidatingWebhookConfigurationLister interface {
     	// List lists all ValidatingWebhookConfigurations in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.ValidatingWebhookConfiguration, err error)
    +	List(selector labels.Selector) (ret []*admissionregistrationv1beta1.ValidatingWebhookConfiguration, err error)
     	// Get retrieves the ValidatingWebhookConfiguration from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.ValidatingWebhookConfiguration, error)
    +	Get(name string) (*admissionregistrationv1beta1.ValidatingWebhookConfiguration, error)
     	ValidatingWebhookConfigurationListerExpansion
     }
     
     // validatingWebhookConfigurationLister implements the ValidatingWebhookConfigurationLister interface.
     type validatingWebhookConfigurationLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*admissionregistrationv1beta1.ValidatingWebhookConfiguration]
     }
     
     // NewValidatingWebhookConfigurationLister returns a new ValidatingWebhookConfigurationLister.
     func NewValidatingWebhookConfigurationLister(indexer cache.Indexer) ValidatingWebhookConfigurationLister {
    -	return &validatingWebhookConfigurationLister{indexer: indexer}
    -}
    -
    -// List lists all ValidatingWebhookConfigurations in the indexer.
    -func (s *validatingWebhookConfigurationLister) List(selector labels.Selector) (ret []*v1beta1.ValidatingWebhookConfiguration, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.ValidatingWebhookConfiguration))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ValidatingWebhookConfiguration from the index for a given name.
    -func (s *validatingWebhookConfigurationLister) Get(name string) (*v1beta1.ValidatingWebhookConfiguration, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("validatingwebhookconfiguration"), name)
    -	}
    -	return obj.(*v1beta1.ValidatingWebhookConfiguration), nil
    +	return &validatingWebhookConfigurationLister{listers.New[*admissionregistrationv1beta1.ValidatingWebhookConfiguration](indexer, admissionregistrationv1beta1.Resource("validatingwebhookconfiguration"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/apiserverinternal/v1alpha1/storageversion.go b/vendor/k8s.io/client-go/listers/apiserverinternal/v1alpha1/storageversion.go
    index 9a6d74b2bf51..1d24fb8930a0 100644
    --- a/vendor/k8s.io/client-go/listers/apiserverinternal/v1alpha1/storageversion.go
    +++ b/vendor/k8s.io/client-go/listers/apiserverinternal/v1alpha1/storageversion.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	apiserverinternalv1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // StorageVersionLister helps list StorageVersions.
    @@ -30,39 +30,19 @@ import (
     type StorageVersionLister interface {
     	// List lists all StorageVersions in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.StorageVersion, err error)
    +	List(selector labels.Selector) (ret []*apiserverinternalv1alpha1.StorageVersion, err error)
     	// Get retrieves the StorageVersion from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.StorageVersion, error)
    +	Get(name string) (*apiserverinternalv1alpha1.StorageVersion, error)
     	StorageVersionListerExpansion
     }
     
     // storageVersionLister implements the StorageVersionLister interface.
     type storageVersionLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*apiserverinternalv1alpha1.StorageVersion]
     }
     
     // NewStorageVersionLister returns a new StorageVersionLister.
     func NewStorageVersionLister(indexer cache.Indexer) StorageVersionLister {
    -	return &storageVersionLister{indexer: indexer}
    -}
    -
    -// List lists all StorageVersions in the indexer.
    -func (s *storageVersionLister) List(selector labels.Selector) (ret []*v1alpha1.StorageVersion, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.StorageVersion))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the StorageVersion from the index for a given name.
    -func (s *storageVersionLister) Get(name string) (*v1alpha1.StorageVersion, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("storageversion"), name)
    -	}
    -	return obj.(*v1alpha1.StorageVersion), nil
    +	return &storageVersionLister{listers.New[*apiserverinternalv1alpha1.StorageVersion](indexer, apiserverinternalv1alpha1.Resource("storageversion"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1/controllerrevision.go b/vendor/k8s.io/client-go/listers/apps/v1/controllerrevision.go
    index 9e2f973746bb..58ab1357ef47 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1/controllerrevision.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1 "k8s.io/api/apps/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ControllerRevisionLister helps list ControllerRevisions.
    @@ -30,7 +30,7 @@ import (
     type ControllerRevisionLister interface {
     	// List lists all ControllerRevisions in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ControllerRevision, err error)
    +	List(selector labels.Selector) (ret []*appsv1.ControllerRevision, err error)
     	// ControllerRevisions returns an object that can list and get ControllerRevisions.
     	ControllerRevisions(namespace string) ControllerRevisionNamespaceLister
     	ControllerRevisionListerExpansion
    @@ -38,25 +38,17 @@ type ControllerRevisionLister interface {
     
     // controllerRevisionLister implements the ControllerRevisionLister interface.
     type controllerRevisionLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1.ControllerRevision]
     }
     
     // NewControllerRevisionLister returns a new ControllerRevisionLister.
     func NewControllerRevisionLister(indexer cache.Indexer) ControllerRevisionLister {
    -	return &controllerRevisionLister{indexer: indexer}
    -}
    -
    -// List lists all ControllerRevisions in the indexer.
    -func (s *controllerRevisionLister) List(selector labels.Selector) (ret []*v1.ControllerRevision, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ControllerRevision))
    -	})
    -	return ret, err
    +	return &controllerRevisionLister{listers.New[*appsv1.ControllerRevision](indexer, appsv1.Resource("controllerrevision"))}
     }
     
     // ControllerRevisions returns an object that can list and get ControllerRevisions.
     func (s *controllerRevisionLister) ControllerRevisions(namespace string) ControllerRevisionNamespaceLister {
    -	return controllerRevisionNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return controllerRevisionNamespaceLister{listers.NewNamespaced[*appsv1.ControllerRevision](s.ResourceIndexer, namespace)}
     }
     
     // ControllerRevisionNamespaceLister helps list and get ControllerRevisions.
    @@ -64,36 +56,15 @@ func (s *controllerRevisionLister) ControllerRevisions(namespace string) Control
     type ControllerRevisionNamespaceLister interface {
     	// List lists all ControllerRevisions in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ControllerRevision, err error)
    +	List(selector labels.Selector) (ret []*appsv1.ControllerRevision, err error)
     	// Get retrieves the ControllerRevision from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.ControllerRevision, error)
    +	Get(name string) (*appsv1.ControllerRevision, error)
     	ControllerRevisionNamespaceListerExpansion
     }
     
     // controllerRevisionNamespaceLister implements the ControllerRevisionNamespaceLister
     // interface.
     type controllerRevisionNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ControllerRevisions in the indexer for a given namespace.
    -func (s controllerRevisionNamespaceLister) List(selector labels.Selector) (ret []*v1.ControllerRevision, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ControllerRevision))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ControllerRevision from the indexer for a given namespace and name.
    -func (s controllerRevisionNamespaceLister) Get(name string) (*v1.ControllerRevision, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("controllerrevision"), name)
    -	}
    -	return obj.(*v1.ControllerRevision), nil
    +	listers.ResourceIndexer[*appsv1.ControllerRevision]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1/daemonset.go b/vendor/k8s.io/client-go/listers/apps/v1/daemonset.go
    index 061959e3daf6..b6ba54f807f0 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1/daemonset.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1/daemonset.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1 "k8s.io/api/apps/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // DaemonSetLister helps list DaemonSets.
    @@ -30,7 +30,7 @@ import (
     type DaemonSetLister interface {
     	// List lists all DaemonSets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.DaemonSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1.DaemonSet, err error)
     	// DaemonSets returns an object that can list and get DaemonSets.
     	DaemonSets(namespace string) DaemonSetNamespaceLister
     	DaemonSetListerExpansion
    @@ -38,25 +38,17 @@ type DaemonSetLister interface {
     
     // daemonSetLister implements the DaemonSetLister interface.
     type daemonSetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1.DaemonSet]
     }
     
     // NewDaemonSetLister returns a new DaemonSetLister.
     func NewDaemonSetLister(indexer cache.Indexer) DaemonSetLister {
    -	return &daemonSetLister{indexer: indexer}
    -}
    -
    -// List lists all DaemonSets in the indexer.
    -func (s *daemonSetLister) List(selector labels.Selector) (ret []*v1.DaemonSet, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.DaemonSet))
    -	})
    -	return ret, err
    +	return &daemonSetLister{listers.New[*appsv1.DaemonSet](indexer, appsv1.Resource("daemonset"))}
     }
     
     // DaemonSets returns an object that can list and get DaemonSets.
     func (s *daemonSetLister) DaemonSets(namespace string) DaemonSetNamespaceLister {
    -	return daemonSetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return daemonSetNamespaceLister{listers.NewNamespaced[*appsv1.DaemonSet](s.ResourceIndexer, namespace)}
     }
     
     // DaemonSetNamespaceLister helps list and get DaemonSets.
    @@ -64,36 +56,15 @@ func (s *daemonSetLister) DaemonSets(namespace string) DaemonSetNamespaceLister
     type DaemonSetNamespaceLister interface {
     	// List lists all DaemonSets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.DaemonSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1.DaemonSet, err error)
     	// Get retrieves the DaemonSet from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.DaemonSet, error)
    +	Get(name string) (*appsv1.DaemonSet, error)
     	DaemonSetNamespaceListerExpansion
     }
     
     // daemonSetNamespaceLister implements the DaemonSetNamespaceLister
     // interface.
     type daemonSetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all DaemonSets in the indexer for a given namespace.
    -func (s daemonSetNamespaceLister) List(selector labels.Selector) (ret []*v1.DaemonSet, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.DaemonSet))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the DaemonSet from the indexer for a given namespace and name.
    -func (s daemonSetNamespaceLister) Get(name string) (*v1.DaemonSet, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("daemonset"), name)
    -	}
    -	return obj.(*v1.DaemonSet), nil
    +	listers.ResourceIndexer[*appsv1.DaemonSet]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1/deployment.go b/vendor/k8s.io/client-go/listers/apps/v1/deployment.go
    index 770403417299..ed1b899e27a6 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1/deployment.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1/deployment.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1 "k8s.io/api/apps/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // DeploymentLister helps list Deployments.
    @@ -30,7 +30,7 @@ import (
     type DeploymentLister interface {
     	// List lists all Deployments in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Deployment, err error)
    +	List(selector labels.Selector) (ret []*appsv1.Deployment, err error)
     	// Deployments returns an object that can list and get Deployments.
     	Deployments(namespace string) DeploymentNamespaceLister
     	DeploymentListerExpansion
    @@ -38,25 +38,17 @@ type DeploymentLister interface {
     
     // deploymentLister implements the DeploymentLister interface.
     type deploymentLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1.Deployment]
     }
     
     // NewDeploymentLister returns a new DeploymentLister.
     func NewDeploymentLister(indexer cache.Indexer) DeploymentLister {
    -	return &deploymentLister{indexer: indexer}
    -}
    -
    -// List lists all Deployments in the indexer.
    -func (s *deploymentLister) List(selector labels.Selector) (ret []*v1.Deployment, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Deployment))
    -	})
    -	return ret, err
    +	return &deploymentLister{listers.New[*appsv1.Deployment](indexer, appsv1.Resource("deployment"))}
     }
     
     // Deployments returns an object that can list and get Deployments.
     func (s *deploymentLister) Deployments(namespace string) DeploymentNamespaceLister {
    -	return deploymentNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return deploymentNamespaceLister{listers.NewNamespaced[*appsv1.Deployment](s.ResourceIndexer, namespace)}
     }
     
     // DeploymentNamespaceLister helps list and get Deployments.
    @@ -64,36 +56,15 @@ func (s *deploymentLister) Deployments(namespace string) DeploymentNamespaceList
     type DeploymentNamespaceLister interface {
     	// List lists all Deployments in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Deployment, err error)
    +	List(selector labels.Selector) (ret []*appsv1.Deployment, err error)
     	// Get retrieves the Deployment from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Deployment, error)
    +	Get(name string) (*appsv1.Deployment, error)
     	DeploymentNamespaceListerExpansion
     }
     
     // deploymentNamespaceLister implements the DeploymentNamespaceLister
     // interface.
     type deploymentNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Deployments in the indexer for a given namespace.
    -func (s deploymentNamespaceLister) List(selector labels.Selector) (ret []*v1.Deployment, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Deployment))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Deployment from the indexer for a given namespace and name.
    -func (s deploymentNamespaceLister) Get(name string) (*v1.Deployment, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("deployment"), name)
    -	}
    -	return obj.(*v1.Deployment), nil
    +	listers.ResourceIndexer[*appsv1.Deployment]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1/replicaset.go b/vendor/k8s.io/client-go/listers/apps/v1/replicaset.go
    index 3ca7757eb94b..68308e3526b2 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1/replicaset.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1/replicaset.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1 "k8s.io/api/apps/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ReplicaSetLister helps list ReplicaSets.
    @@ -30,7 +30,7 @@ import (
     type ReplicaSetLister interface {
     	// List lists all ReplicaSets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ReplicaSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1.ReplicaSet, err error)
     	// ReplicaSets returns an object that can list and get ReplicaSets.
     	ReplicaSets(namespace string) ReplicaSetNamespaceLister
     	ReplicaSetListerExpansion
    @@ -38,25 +38,17 @@ type ReplicaSetLister interface {
     
     // replicaSetLister implements the ReplicaSetLister interface.
     type replicaSetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1.ReplicaSet]
     }
     
     // NewReplicaSetLister returns a new ReplicaSetLister.
     func NewReplicaSetLister(indexer cache.Indexer) ReplicaSetLister {
    -	return &replicaSetLister{indexer: indexer}
    -}
    -
    -// List lists all ReplicaSets in the indexer.
    -func (s *replicaSetLister) List(selector labels.Selector) (ret []*v1.ReplicaSet, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ReplicaSet))
    -	})
    -	return ret, err
    +	return &replicaSetLister{listers.New[*appsv1.ReplicaSet](indexer, appsv1.Resource("replicaset"))}
     }
     
     // ReplicaSets returns an object that can list and get ReplicaSets.
     func (s *replicaSetLister) ReplicaSets(namespace string) ReplicaSetNamespaceLister {
    -	return replicaSetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return replicaSetNamespaceLister{listers.NewNamespaced[*appsv1.ReplicaSet](s.ResourceIndexer, namespace)}
     }
     
     // ReplicaSetNamespaceLister helps list and get ReplicaSets.
    @@ -64,36 +56,15 @@ func (s *replicaSetLister) ReplicaSets(namespace string) ReplicaSetNamespaceList
     type ReplicaSetNamespaceLister interface {
     	// List lists all ReplicaSets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ReplicaSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1.ReplicaSet, err error)
     	// Get retrieves the ReplicaSet from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.ReplicaSet, error)
    +	Get(name string) (*appsv1.ReplicaSet, error)
     	ReplicaSetNamespaceListerExpansion
     }
     
     // replicaSetNamespaceLister implements the ReplicaSetNamespaceLister
     // interface.
     type replicaSetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ReplicaSets in the indexer for a given namespace.
    -func (s replicaSetNamespaceLister) List(selector labels.Selector) (ret []*v1.ReplicaSet, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ReplicaSet))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ReplicaSet from the indexer for a given namespace and name.
    -func (s replicaSetNamespaceLister) Get(name string) (*v1.ReplicaSet, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("replicaset"), name)
    -	}
    -	return obj.(*v1.ReplicaSet), nil
    +	listers.ResourceIndexer[*appsv1.ReplicaSet]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1/statefulset.go b/vendor/k8s.io/client-go/listers/apps/v1/statefulset.go
    index f6899d5ff9bd..7366b5a3d147 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1/statefulset.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1/statefulset.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/apps/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1 "k8s.io/api/apps/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // StatefulSetLister helps list StatefulSets.
    @@ -30,7 +30,7 @@ import (
     type StatefulSetLister interface {
     	// List lists all StatefulSets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.StatefulSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1.StatefulSet, err error)
     	// StatefulSets returns an object that can list and get StatefulSets.
     	StatefulSets(namespace string) StatefulSetNamespaceLister
     	StatefulSetListerExpansion
    @@ -38,25 +38,17 @@ type StatefulSetLister interface {
     
     // statefulSetLister implements the StatefulSetLister interface.
     type statefulSetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1.StatefulSet]
     }
     
     // NewStatefulSetLister returns a new StatefulSetLister.
     func NewStatefulSetLister(indexer cache.Indexer) StatefulSetLister {
    -	return &statefulSetLister{indexer: indexer}
    -}
    -
    -// List lists all StatefulSets in the indexer.
    -func (s *statefulSetLister) List(selector labels.Selector) (ret []*v1.StatefulSet, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.StatefulSet))
    -	})
    -	return ret, err
    +	return &statefulSetLister{listers.New[*appsv1.StatefulSet](indexer, appsv1.Resource("statefulset"))}
     }
     
     // StatefulSets returns an object that can list and get StatefulSets.
     func (s *statefulSetLister) StatefulSets(namespace string) StatefulSetNamespaceLister {
    -	return statefulSetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return statefulSetNamespaceLister{listers.NewNamespaced[*appsv1.StatefulSet](s.ResourceIndexer, namespace)}
     }
     
     // StatefulSetNamespaceLister helps list and get StatefulSets.
    @@ -64,36 +56,15 @@ func (s *statefulSetLister) StatefulSets(namespace string) StatefulSetNamespaceL
     type StatefulSetNamespaceLister interface {
     	// List lists all StatefulSets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.StatefulSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1.StatefulSet, err error)
     	// Get retrieves the StatefulSet from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.StatefulSet, error)
    +	Get(name string) (*appsv1.StatefulSet, error)
     	StatefulSetNamespaceListerExpansion
     }
     
     // statefulSetNamespaceLister implements the StatefulSetNamespaceLister
     // interface.
     type statefulSetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all StatefulSets in the indexer for a given namespace.
    -func (s statefulSetNamespaceLister) List(selector labels.Selector) (ret []*v1.StatefulSet, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.StatefulSet))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the StatefulSet from the indexer for a given namespace and name.
    -func (s statefulSetNamespaceLister) Get(name string) (*v1.StatefulSet, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("statefulset"), name)
    -	}
    -	return obj.(*v1.StatefulSet), nil
    +	listers.ResourceIndexer[*appsv1.StatefulSet]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go
    index fc73de723fe5..7c7f530b6187 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ControllerRevisionLister helps list ControllerRevisions.
    @@ -30,7 +30,7 @@ import (
     type ControllerRevisionLister interface {
     	// List lists all ControllerRevisions in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.ControllerRevision, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta1.ControllerRevision, err error)
     	// ControllerRevisions returns an object that can list and get ControllerRevisions.
     	ControllerRevisions(namespace string) ControllerRevisionNamespaceLister
     	ControllerRevisionListerExpansion
    @@ -38,25 +38,17 @@ type ControllerRevisionLister interface {
     
     // controllerRevisionLister implements the ControllerRevisionLister interface.
     type controllerRevisionLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1beta1.ControllerRevision]
     }
     
     // NewControllerRevisionLister returns a new ControllerRevisionLister.
     func NewControllerRevisionLister(indexer cache.Indexer) ControllerRevisionLister {
    -	return &controllerRevisionLister{indexer: indexer}
    -}
    -
    -// List lists all ControllerRevisions in the indexer.
    -func (s *controllerRevisionLister) List(selector labels.Selector) (ret []*v1beta1.ControllerRevision, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.ControllerRevision))
    -	})
    -	return ret, err
    +	return &controllerRevisionLister{listers.New[*appsv1beta1.ControllerRevision](indexer, appsv1beta1.Resource("controllerrevision"))}
     }
     
     // ControllerRevisions returns an object that can list and get ControllerRevisions.
     func (s *controllerRevisionLister) ControllerRevisions(namespace string) ControllerRevisionNamespaceLister {
    -	return controllerRevisionNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return controllerRevisionNamespaceLister{listers.NewNamespaced[*appsv1beta1.ControllerRevision](s.ResourceIndexer, namespace)}
     }
     
     // ControllerRevisionNamespaceLister helps list and get ControllerRevisions.
    @@ -64,36 +56,15 @@ func (s *controllerRevisionLister) ControllerRevisions(namespace string) Control
     type ControllerRevisionNamespaceLister interface {
     	// List lists all ControllerRevisions in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.ControllerRevision, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta1.ControllerRevision, err error)
     	// Get retrieves the ControllerRevision from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.ControllerRevision, error)
    +	Get(name string) (*appsv1beta1.ControllerRevision, error)
     	ControllerRevisionNamespaceListerExpansion
     }
     
     // controllerRevisionNamespaceLister implements the ControllerRevisionNamespaceLister
     // interface.
     type controllerRevisionNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ControllerRevisions in the indexer for a given namespace.
    -func (s controllerRevisionNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.ControllerRevision, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.ControllerRevision))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ControllerRevision from the indexer for a given namespace and name.
    -func (s controllerRevisionNamespaceLister) Get(name string) (*v1beta1.ControllerRevision, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("controllerrevision"), name)
    -	}
    -	return obj.(*v1beta1.ControllerRevision), nil
    +	listers.ResourceIndexer[*appsv1beta1.ControllerRevision]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go
    index 3fb70794cad2..6803fc8cd0da 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // DeploymentLister helps list Deployments.
    @@ -30,7 +30,7 @@ import (
     type DeploymentLister interface {
     	// List lists all Deployments in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Deployment, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta1.Deployment, err error)
     	// Deployments returns an object that can list and get Deployments.
     	Deployments(namespace string) DeploymentNamespaceLister
     	DeploymentListerExpansion
    @@ -38,25 +38,17 @@ type DeploymentLister interface {
     
     // deploymentLister implements the DeploymentLister interface.
     type deploymentLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1beta1.Deployment]
     }
     
     // NewDeploymentLister returns a new DeploymentLister.
     func NewDeploymentLister(indexer cache.Indexer) DeploymentLister {
    -	return &deploymentLister{indexer: indexer}
    -}
    -
    -// List lists all Deployments in the indexer.
    -func (s *deploymentLister) List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Deployment))
    -	})
    -	return ret, err
    +	return &deploymentLister{listers.New[*appsv1beta1.Deployment](indexer, appsv1beta1.Resource("deployment"))}
     }
     
     // Deployments returns an object that can list and get Deployments.
     func (s *deploymentLister) Deployments(namespace string) DeploymentNamespaceLister {
    -	return deploymentNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return deploymentNamespaceLister{listers.NewNamespaced[*appsv1beta1.Deployment](s.ResourceIndexer, namespace)}
     }
     
     // DeploymentNamespaceLister helps list and get Deployments.
    @@ -64,36 +56,15 @@ func (s *deploymentLister) Deployments(namespace string) DeploymentNamespaceList
     type DeploymentNamespaceLister interface {
     	// List lists all Deployments in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Deployment, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta1.Deployment, err error)
     	// Get retrieves the Deployment from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.Deployment, error)
    +	Get(name string) (*appsv1beta1.Deployment, error)
     	DeploymentNamespaceListerExpansion
     }
     
     // deploymentNamespaceLister implements the DeploymentNamespaceLister
     // interface.
     type deploymentNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Deployments in the indexer for a given namespace.
    -func (s deploymentNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Deployment))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Deployment from the indexer for a given namespace and name.
    -func (s deploymentNamespaceLister) Get(name string) (*v1beta1.Deployment, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("deployment"), name)
    -	}
    -	return obj.(*v1beta1.Deployment), nil
    +	listers.ResourceIndexer[*appsv1beta1.Deployment]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go
    index e3556bc398f0..040b65dc12e3 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/apps/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1beta1 "k8s.io/api/apps/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // StatefulSetLister helps list StatefulSets.
    @@ -30,7 +30,7 @@ import (
     type StatefulSetLister interface {
     	// List lists all StatefulSets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.StatefulSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta1.StatefulSet, err error)
     	// StatefulSets returns an object that can list and get StatefulSets.
     	StatefulSets(namespace string) StatefulSetNamespaceLister
     	StatefulSetListerExpansion
    @@ -38,25 +38,17 @@ type StatefulSetLister interface {
     
     // statefulSetLister implements the StatefulSetLister interface.
     type statefulSetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1beta1.StatefulSet]
     }
     
     // NewStatefulSetLister returns a new StatefulSetLister.
     func NewStatefulSetLister(indexer cache.Indexer) StatefulSetLister {
    -	return &statefulSetLister{indexer: indexer}
    -}
    -
    -// List lists all StatefulSets in the indexer.
    -func (s *statefulSetLister) List(selector labels.Selector) (ret []*v1beta1.StatefulSet, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.StatefulSet))
    -	})
    -	return ret, err
    +	return &statefulSetLister{listers.New[*appsv1beta1.StatefulSet](indexer, appsv1beta1.Resource("statefulset"))}
     }
     
     // StatefulSets returns an object that can list and get StatefulSets.
     func (s *statefulSetLister) StatefulSets(namespace string) StatefulSetNamespaceLister {
    -	return statefulSetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return statefulSetNamespaceLister{listers.NewNamespaced[*appsv1beta1.StatefulSet](s.ResourceIndexer, namespace)}
     }
     
     // StatefulSetNamespaceLister helps list and get StatefulSets.
    @@ -64,36 +56,15 @@ func (s *statefulSetLister) StatefulSets(namespace string) StatefulSetNamespaceL
     type StatefulSetNamespaceLister interface {
     	// List lists all StatefulSets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.StatefulSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta1.StatefulSet, err error)
     	// Get retrieves the StatefulSet from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.StatefulSet, error)
    +	Get(name string) (*appsv1beta1.StatefulSet, error)
     	StatefulSetNamespaceListerExpansion
     }
     
     // statefulSetNamespaceLister implements the StatefulSetNamespaceLister
     // interface.
     type statefulSetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all StatefulSets in the indexer for a given namespace.
    -func (s statefulSetNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.StatefulSet, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.StatefulSet))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the StatefulSet from the indexer for a given namespace and name.
    -func (s statefulSetNamespaceLister) Get(name string) (*v1beta1.StatefulSet, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("statefulset"), name)
    -	}
    -	return obj.(*v1beta1.StatefulSet), nil
    +	listers.ResourceIndexer[*appsv1beta1.StatefulSet]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/controllerrevision.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/controllerrevision.go
    index da2ce860054d..9e72122f33ee 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1beta2/controllerrevision.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1beta2/controllerrevision.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ControllerRevisionLister helps list ControllerRevisions.
    @@ -30,7 +30,7 @@ import (
     type ControllerRevisionLister interface {
     	// List lists all ControllerRevisions in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.ControllerRevision, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta2.ControllerRevision, err error)
     	// ControllerRevisions returns an object that can list and get ControllerRevisions.
     	ControllerRevisions(namespace string) ControllerRevisionNamespaceLister
     	ControllerRevisionListerExpansion
    @@ -38,25 +38,17 @@ type ControllerRevisionLister interface {
     
     // controllerRevisionLister implements the ControllerRevisionLister interface.
     type controllerRevisionLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1beta2.ControllerRevision]
     }
     
     // NewControllerRevisionLister returns a new ControllerRevisionLister.
     func NewControllerRevisionLister(indexer cache.Indexer) ControllerRevisionLister {
    -	return &controllerRevisionLister{indexer: indexer}
    -}
    -
    -// List lists all ControllerRevisions in the indexer.
    -func (s *controllerRevisionLister) List(selector labels.Selector) (ret []*v1beta2.ControllerRevision, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.ControllerRevision))
    -	})
    -	return ret, err
    +	return &controllerRevisionLister{listers.New[*appsv1beta2.ControllerRevision](indexer, appsv1beta2.Resource("controllerrevision"))}
     }
     
     // ControllerRevisions returns an object that can list and get ControllerRevisions.
     func (s *controllerRevisionLister) ControllerRevisions(namespace string) ControllerRevisionNamespaceLister {
    -	return controllerRevisionNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return controllerRevisionNamespaceLister{listers.NewNamespaced[*appsv1beta2.ControllerRevision](s.ResourceIndexer, namespace)}
     }
     
     // ControllerRevisionNamespaceLister helps list and get ControllerRevisions.
    @@ -64,36 +56,15 @@ func (s *controllerRevisionLister) ControllerRevisions(namespace string) Control
     type ControllerRevisionNamespaceLister interface {
     	// List lists all ControllerRevisions in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.ControllerRevision, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta2.ControllerRevision, err error)
     	// Get retrieves the ControllerRevision from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta2.ControllerRevision, error)
    +	Get(name string) (*appsv1beta2.ControllerRevision, error)
     	ControllerRevisionNamespaceListerExpansion
     }
     
     // controllerRevisionNamespaceLister implements the ControllerRevisionNamespaceLister
     // interface.
     type controllerRevisionNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ControllerRevisions in the indexer for a given namespace.
    -func (s controllerRevisionNamespaceLister) List(selector labels.Selector) (ret []*v1beta2.ControllerRevision, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.ControllerRevision))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ControllerRevision from the indexer for a given namespace and name.
    -func (s controllerRevisionNamespaceLister) Get(name string) (*v1beta2.ControllerRevision, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta2.Resource("controllerrevision"), name)
    -	}
    -	return obj.(*v1beta2.ControllerRevision), nil
    +	listers.ResourceIndexer[*appsv1beta2.ControllerRevision]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/daemonset.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/daemonset.go
    index 4b7aedd7586a..16b76b613044 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1beta2/daemonset.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1beta2/daemonset.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // DaemonSetLister helps list DaemonSets.
    @@ -30,7 +30,7 @@ import (
     type DaemonSetLister interface {
     	// List lists all DaemonSets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.DaemonSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta2.DaemonSet, err error)
     	// DaemonSets returns an object that can list and get DaemonSets.
     	DaemonSets(namespace string) DaemonSetNamespaceLister
     	DaemonSetListerExpansion
    @@ -38,25 +38,17 @@ type DaemonSetLister interface {
     
     // daemonSetLister implements the DaemonSetLister interface.
     type daemonSetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1beta2.DaemonSet]
     }
     
     // NewDaemonSetLister returns a new DaemonSetLister.
     func NewDaemonSetLister(indexer cache.Indexer) DaemonSetLister {
    -	return &daemonSetLister{indexer: indexer}
    -}
    -
    -// List lists all DaemonSets in the indexer.
    -func (s *daemonSetLister) List(selector labels.Selector) (ret []*v1beta2.DaemonSet, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.DaemonSet))
    -	})
    -	return ret, err
    +	return &daemonSetLister{listers.New[*appsv1beta2.DaemonSet](indexer, appsv1beta2.Resource("daemonset"))}
     }
     
     // DaemonSets returns an object that can list and get DaemonSets.
     func (s *daemonSetLister) DaemonSets(namespace string) DaemonSetNamespaceLister {
    -	return daemonSetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return daemonSetNamespaceLister{listers.NewNamespaced[*appsv1beta2.DaemonSet](s.ResourceIndexer, namespace)}
     }
     
     // DaemonSetNamespaceLister helps list and get DaemonSets.
    @@ -64,36 +56,15 @@ func (s *daemonSetLister) DaemonSets(namespace string) DaemonSetNamespaceLister
     type DaemonSetNamespaceLister interface {
     	// List lists all DaemonSets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.DaemonSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta2.DaemonSet, err error)
     	// Get retrieves the DaemonSet from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta2.DaemonSet, error)
    +	Get(name string) (*appsv1beta2.DaemonSet, error)
     	DaemonSetNamespaceListerExpansion
     }
     
     // daemonSetNamespaceLister implements the DaemonSetNamespaceLister
     // interface.
     type daemonSetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all DaemonSets in the indexer for a given namespace.
    -func (s daemonSetNamespaceLister) List(selector labels.Selector) (ret []*v1beta2.DaemonSet, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.DaemonSet))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the DaemonSet from the indexer for a given namespace and name.
    -func (s daemonSetNamespaceLister) Get(name string) (*v1beta2.DaemonSet, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta2.Resource("daemonset"), name)
    -	}
    -	return obj.(*v1beta2.DaemonSet), nil
    +	listers.ResourceIndexer[*appsv1beta2.DaemonSet]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/deployment.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/deployment.go
    index c2857bbc3666..c0b5b2ab1b10 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1beta2/deployment.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1beta2/deployment.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // DeploymentLister helps list Deployments.
    @@ -30,7 +30,7 @@ import (
     type DeploymentLister interface {
     	// List lists all Deployments in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.Deployment, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta2.Deployment, err error)
     	// Deployments returns an object that can list and get Deployments.
     	Deployments(namespace string) DeploymentNamespaceLister
     	DeploymentListerExpansion
    @@ -38,25 +38,17 @@ type DeploymentLister interface {
     
     // deploymentLister implements the DeploymentLister interface.
     type deploymentLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1beta2.Deployment]
     }
     
     // NewDeploymentLister returns a new DeploymentLister.
     func NewDeploymentLister(indexer cache.Indexer) DeploymentLister {
    -	return &deploymentLister{indexer: indexer}
    -}
    -
    -// List lists all Deployments in the indexer.
    -func (s *deploymentLister) List(selector labels.Selector) (ret []*v1beta2.Deployment, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.Deployment))
    -	})
    -	return ret, err
    +	return &deploymentLister{listers.New[*appsv1beta2.Deployment](indexer, appsv1beta2.Resource("deployment"))}
     }
     
     // Deployments returns an object that can list and get Deployments.
     func (s *deploymentLister) Deployments(namespace string) DeploymentNamespaceLister {
    -	return deploymentNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return deploymentNamespaceLister{listers.NewNamespaced[*appsv1beta2.Deployment](s.ResourceIndexer, namespace)}
     }
     
     // DeploymentNamespaceLister helps list and get Deployments.
    @@ -64,36 +56,15 @@ func (s *deploymentLister) Deployments(namespace string) DeploymentNamespaceList
     type DeploymentNamespaceLister interface {
     	// List lists all Deployments in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.Deployment, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta2.Deployment, err error)
     	// Get retrieves the Deployment from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta2.Deployment, error)
    +	Get(name string) (*appsv1beta2.Deployment, error)
     	DeploymentNamespaceListerExpansion
     }
     
     // deploymentNamespaceLister implements the DeploymentNamespaceLister
     // interface.
     type deploymentNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Deployments in the indexer for a given namespace.
    -func (s deploymentNamespaceLister) List(selector labels.Selector) (ret []*v1beta2.Deployment, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.Deployment))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Deployment from the indexer for a given namespace and name.
    -func (s deploymentNamespaceLister) Get(name string) (*v1beta2.Deployment, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta2.Resource("deployment"), name)
    -	}
    -	return obj.(*v1beta2.Deployment), nil
    +	listers.ResourceIndexer[*appsv1beta2.Deployment]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/replicaset.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/replicaset.go
    index 26b350ce8f82..7d5f3c80edef 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1beta2/replicaset.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1beta2/replicaset.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ReplicaSetLister helps list ReplicaSets.
    @@ -30,7 +30,7 @@ import (
     type ReplicaSetLister interface {
     	// List lists all ReplicaSets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.ReplicaSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta2.ReplicaSet, err error)
     	// ReplicaSets returns an object that can list and get ReplicaSets.
     	ReplicaSets(namespace string) ReplicaSetNamespaceLister
     	ReplicaSetListerExpansion
    @@ -38,25 +38,17 @@ type ReplicaSetLister interface {
     
     // replicaSetLister implements the ReplicaSetLister interface.
     type replicaSetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1beta2.ReplicaSet]
     }
     
     // NewReplicaSetLister returns a new ReplicaSetLister.
     func NewReplicaSetLister(indexer cache.Indexer) ReplicaSetLister {
    -	return &replicaSetLister{indexer: indexer}
    -}
    -
    -// List lists all ReplicaSets in the indexer.
    -func (s *replicaSetLister) List(selector labels.Selector) (ret []*v1beta2.ReplicaSet, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.ReplicaSet))
    -	})
    -	return ret, err
    +	return &replicaSetLister{listers.New[*appsv1beta2.ReplicaSet](indexer, appsv1beta2.Resource("replicaset"))}
     }
     
     // ReplicaSets returns an object that can list and get ReplicaSets.
     func (s *replicaSetLister) ReplicaSets(namespace string) ReplicaSetNamespaceLister {
    -	return replicaSetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return replicaSetNamespaceLister{listers.NewNamespaced[*appsv1beta2.ReplicaSet](s.ResourceIndexer, namespace)}
     }
     
     // ReplicaSetNamespaceLister helps list and get ReplicaSets.
    @@ -64,36 +56,15 @@ func (s *replicaSetLister) ReplicaSets(namespace string) ReplicaSetNamespaceList
     type ReplicaSetNamespaceLister interface {
     	// List lists all ReplicaSets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.ReplicaSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta2.ReplicaSet, err error)
     	// Get retrieves the ReplicaSet from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta2.ReplicaSet, error)
    +	Get(name string) (*appsv1beta2.ReplicaSet, error)
     	ReplicaSetNamespaceListerExpansion
     }
     
     // replicaSetNamespaceLister implements the ReplicaSetNamespaceLister
     // interface.
     type replicaSetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ReplicaSets in the indexer for a given namespace.
    -func (s replicaSetNamespaceLister) List(selector labels.Selector) (ret []*v1beta2.ReplicaSet, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.ReplicaSet))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ReplicaSet from the indexer for a given namespace and name.
    -func (s replicaSetNamespaceLister) Get(name string) (*v1beta2.ReplicaSet, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta2.Resource("replicaset"), name)
    -	}
    -	return obj.(*v1beta2.ReplicaSet), nil
    +	listers.ResourceIndexer[*appsv1beta2.ReplicaSet]
     }
    diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/statefulset.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/statefulset.go
    index fbbaf0133f74..04dffb2d80e0 100644
    --- a/vendor/k8s.io/client-go/listers/apps/v1beta2/statefulset.go
    +++ b/vendor/k8s.io/client-go/listers/apps/v1beta2/statefulset.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/apps/v1beta2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	appsv1beta2 "k8s.io/api/apps/v1beta2"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // StatefulSetLister helps list StatefulSets.
    @@ -30,7 +30,7 @@ import (
     type StatefulSetLister interface {
     	// List lists all StatefulSets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.StatefulSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta2.StatefulSet, err error)
     	// StatefulSets returns an object that can list and get StatefulSets.
     	StatefulSets(namespace string) StatefulSetNamespaceLister
     	StatefulSetListerExpansion
    @@ -38,25 +38,17 @@ type StatefulSetLister interface {
     
     // statefulSetLister implements the StatefulSetLister interface.
     type statefulSetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*appsv1beta2.StatefulSet]
     }
     
     // NewStatefulSetLister returns a new StatefulSetLister.
     func NewStatefulSetLister(indexer cache.Indexer) StatefulSetLister {
    -	return &statefulSetLister{indexer: indexer}
    -}
    -
    -// List lists all StatefulSets in the indexer.
    -func (s *statefulSetLister) List(selector labels.Selector) (ret []*v1beta2.StatefulSet, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.StatefulSet))
    -	})
    -	return ret, err
    +	return &statefulSetLister{listers.New[*appsv1beta2.StatefulSet](indexer, appsv1beta2.Resource("statefulset"))}
     }
     
     // StatefulSets returns an object that can list and get StatefulSets.
     func (s *statefulSetLister) StatefulSets(namespace string) StatefulSetNamespaceLister {
    -	return statefulSetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return statefulSetNamespaceLister{listers.NewNamespaced[*appsv1beta2.StatefulSet](s.ResourceIndexer, namespace)}
     }
     
     // StatefulSetNamespaceLister helps list and get StatefulSets.
    @@ -64,36 +56,15 @@ func (s *statefulSetLister) StatefulSets(namespace string) StatefulSetNamespaceL
     type StatefulSetNamespaceLister interface {
     	// List lists all StatefulSets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.StatefulSet, err error)
    +	List(selector labels.Selector) (ret []*appsv1beta2.StatefulSet, err error)
     	// Get retrieves the StatefulSet from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta2.StatefulSet, error)
    +	Get(name string) (*appsv1beta2.StatefulSet, error)
     	StatefulSetNamespaceListerExpansion
     }
     
     // statefulSetNamespaceLister implements the StatefulSetNamespaceLister
     // interface.
     type statefulSetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all StatefulSets in the indexer for a given namespace.
    -func (s statefulSetNamespaceLister) List(selector labels.Selector) (ret []*v1beta2.StatefulSet, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.StatefulSet))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the StatefulSet from the indexer for a given namespace and name.
    -func (s statefulSetNamespaceLister) Get(name string) (*v1beta2.StatefulSet, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta2.Resource("statefulset"), name)
    -	}
    -	return obj.(*v1beta2.StatefulSet), nil
    +	listers.ResourceIndexer[*appsv1beta2.StatefulSet]
     }
    diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go
    index 8447f059d455..b4e57706490a 100644
    --- a/vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/autoscaling/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	autoscalingv1 "k8s.io/api/autoscaling/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // HorizontalPodAutoscalerLister helps list HorizontalPodAutoscalers.
    @@ -30,7 +30,7 @@ import (
     type HorizontalPodAutoscalerLister interface {
     	// List lists all HorizontalPodAutoscalers in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.HorizontalPodAutoscaler, err error)
    +	List(selector labels.Selector) (ret []*autoscalingv1.HorizontalPodAutoscaler, err error)
     	// HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers.
     	HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister
     	HorizontalPodAutoscalerListerExpansion
    @@ -38,25 +38,17 @@ type HorizontalPodAutoscalerLister interface {
     
     // horizontalPodAutoscalerLister implements the HorizontalPodAutoscalerLister interface.
     type horizontalPodAutoscalerLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*autoscalingv1.HorizontalPodAutoscaler]
     }
     
     // NewHorizontalPodAutoscalerLister returns a new HorizontalPodAutoscalerLister.
     func NewHorizontalPodAutoscalerLister(indexer cache.Indexer) HorizontalPodAutoscalerLister {
    -	return &horizontalPodAutoscalerLister{indexer: indexer}
    -}
    -
    -// List lists all HorizontalPodAutoscalers in the indexer.
    -func (s *horizontalPodAutoscalerLister) List(selector labels.Selector) (ret []*v1.HorizontalPodAutoscaler, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.HorizontalPodAutoscaler))
    -	})
    -	return ret, err
    +	return &horizontalPodAutoscalerLister{listers.New[*autoscalingv1.HorizontalPodAutoscaler](indexer, autoscalingv1.Resource("horizontalpodautoscaler"))}
     }
     
     // HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers.
     func (s *horizontalPodAutoscalerLister) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister {
    -	return horizontalPodAutoscalerNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return horizontalPodAutoscalerNamespaceLister{listers.NewNamespaced[*autoscalingv1.HorizontalPodAutoscaler](s.ResourceIndexer, namespace)}
     }
     
     // HorizontalPodAutoscalerNamespaceLister helps list and get HorizontalPodAutoscalers.
    @@ -64,36 +56,15 @@ func (s *horizontalPodAutoscalerLister) HorizontalPodAutoscalers(namespace strin
     type HorizontalPodAutoscalerNamespaceLister interface {
     	// List lists all HorizontalPodAutoscalers in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.HorizontalPodAutoscaler, err error)
    +	List(selector labels.Selector) (ret []*autoscalingv1.HorizontalPodAutoscaler, err error)
     	// Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.HorizontalPodAutoscaler, error)
    +	Get(name string) (*autoscalingv1.HorizontalPodAutoscaler, error)
     	HorizontalPodAutoscalerNamespaceListerExpansion
     }
     
     // horizontalPodAutoscalerNamespaceLister implements the HorizontalPodAutoscalerNamespaceLister
     // interface.
     type horizontalPodAutoscalerNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all HorizontalPodAutoscalers in the indexer for a given namespace.
    -func (s horizontalPodAutoscalerNamespaceLister) List(selector labels.Selector) (ret []*v1.HorizontalPodAutoscaler, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.HorizontalPodAutoscaler))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name.
    -func (s horizontalPodAutoscalerNamespaceLister) Get(name string) (*v1.HorizontalPodAutoscaler, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("horizontalpodautoscaler"), name)
    -	}
    -	return obj.(*v1.HorizontalPodAutoscaler), nil
    +	listers.ResourceIndexer[*autoscalingv1.HorizontalPodAutoscaler]
     }
    diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/listers/autoscaling/v2/horizontalpodautoscaler.go
    index a5cef2772577..aafc57683797 100644
    --- a/vendor/k8s.io/client-go/listers/autoscaling/v2/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/listers/autoscaling/v2/horizontalpodautoscaler.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v2
     
     import (
    -	v2 "k8s.io/api/autoscaling/v2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	autoscalingv2 "k8s.io/api/autoscaling/v2"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // HorizontalPodAutoscalerLister helps list HorizontalPodAutoscalers.
    @@ -30,7 +30,7 @@ import (
     type HorizontalPodAutoscalerLister interface {
     	// List lists all HorizontalPodAutoscalers in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v2.HorizontalPodAutoscaler, err error)
    +	List(selector labels.Selector) (ret []*autoscalingv2.HorizontalPodAutoscaler, err error)
     	// HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers.
     	HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister
     	HorizontalPodAutoscalerListerExpansion
    @@ -38,25 +38,17 @@ type HorizontalPodAutoscalerLister interface {
     
     // horizontalPodAutoscalerLister implements the HorizontalPodAutoscalerLister interface.
     type horizontalPodAutoscalerLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*autoscalingv2.HorizontalPodAutoscaler]
     }
     
     // NewHorizontalPodAutoscalerLister returns a new HorizontalPodAutoscalerLister.
     func NewHorizontalPodAutoscalerLister(indexer cache.Indexer) HorizontalPodAutoscalerLister {
    -	return &horizontalPodAutoscalerLister{indexer: indexer}
    -}
    -
    -// List lists all HorizontalPodAutoscalers in the indexer.
    -func (s *horizontalPodAutoscalerLister) List(selector labels.Selector) (ret []*v2.HorizontalPodAutoscaler, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v2.HorizontalPodAutoscaler))
    -	})
    -	return ret, err
    +	return &horizontalPodAutoscalerLister{listers.New[*autoscalingv2.HorizontalPodAutoscaler](indexer, autoscalingv2.Resource("horizontalpodautoscaler"))}
     }
     
     // HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers.
     func (s *horizontalPodAutoscalerLister) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister {
    -	return horizontalPodAutoscalerNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return horizontalPodAutoscalerNamespaceLister{listers.NewNamespaced[*autoscalingv2.HorizontalPodAutoscaler](s.ResourceIndexer, namespace)}
     }
     
     // HorizontalPodAutoscalerNamespaceLister helps list and get HorizontalPodAutoscalers.
    @@ -64,36 +56,15 @@ func (s *horizontalPodAutoscalerLister) HorizontalPodAutoscalers(namespace strin
     type HorizontalPodAutoscalerNamespaceLister interface {
     	// List lists all HorizontalPodAutoscalers in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v2.HorizontalPodAutoscaler, err error)
    +	List(selector labels.Selector) (ret []*autoscalingv2.HorizontalPodAutoscaler, err error)
     	// Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v2.HorizontalPodAutoscaler, error)
    +	Get(name string) (*autoscalingv2.HorizontalPodAutoscaler, error)
     	HorizontalPodAutoscalerNamespaceListerExpansion
     }
     
     // horizontalPodAutoscalerNamespaceLister implements the HorizontalPodAutoscalerNamespaceLister
     // interface.
     type horizontalPodAutoscalerNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all HorizontalPodAutoscalers in the indexer for a given namespace.
    -func (s horizontalPodAutoscalerNamespaceLister) List(selector labels.Selector) (ret []*v2.HorizontalPodAutoscaler, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v2.HorizontalPodAutoscaler))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name.
    -func (s horizontalPodAutoscalerNamespaceLister) Get(name string) (*v2.HorizontalPodAutoscaler, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v2.Resource("horizontalpodautoscaler"), name)
    -	}
    -	return obj.(*v2.HorizontalPodAutoscaler), nil
    +	listers.ResourceIndexer[*autoscalingv2.HorizontalPodAutoscaler]
     }
    diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/horizontalpodautoscaler.go
    index f1804e995b6e..b7ad8e79b52b 100644
    --- a/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/horizontalpodautoscaler.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v2beta1
     
     import (
    -	v2beta1 "k8s.io/api/autoscaling/v2beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // HorizontalPodAutoscalerLister helps list HorizontalPodAutoscalers.
    @@ -30,7 +30,7 @@ import (
     type HorizontalPodAutoscalerLister interface {
     	// List lists all HorizontalPodAutoscalers in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v2beta1.HorizontalPodAutoscaler, err error)
    +	List(selector labels.Selector) (ret []*autoscalingv2beta1.HorizontalPodAutoscaler, err error)
     	// HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers.
     	HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister
     	HorizontalPodAutoscalerListerExpansion
    @@ -38,25 +38,17 @@ type HorizontalPodAutoscalerLister interface {
     
     // horizontalPodAutoscalerLister implements the HorizontalPodAutoscalerLister interface.
     type horizontalPodAutoscalerLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*autoscalingv2beta1.HorizontalPodAutoscaler]
     }
     
     // NewHorizontalPodAutoscalerLister returns a new HorizontalPodAutoscalerLister.
     func NewHorizontalPodAutoscalerLister(indexer cache.Indexer) HorizontalPodAutoscalerLister {
    -	return &horizontalPodAutoscalerLister{indexer: indexer}
    -}
    -
    -// List lists all HorizontalPodAutoscalers in the indexer.
    -func (s *horizontalPodAutoscalerLister) List(selector labels.Selector) (ret []*v2beta1.HorizontalPodAutoscaler, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v2beta1.HorizontalPodAutoscaler))
    -	})
    -	return ret, err
    +	return &horizontalPodAutoscalerLister{listers.New[*autoscalingv2beta1.HorizontalPodAutoscaler](indexer, autoscalingv2beta1.Resource("horizontalpodautoscaler"))}
     }
     
     // HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers.
     func (s *horizontalPodAutoscalerLister) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister {
    -	return horizontalPodAutoscalerNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return horizontalPodAutoscalerNamespaceLister{listers.NewNamespaced[*autoscalingv2beta1.HorizontalPodAutoscaler](s.ResourceIndexer, namespace)}
     }
     
     // HorizontalPodAutoscalerNamespaceLister helps list and get HorizontalPodAutoscalers.
    @@ -64,36 +56,15 @@ func (s *horizontalPodAutoscalerLister) HorizontalPodAutoscalers(namespace strin
     type HorizontalPodAutoscalerNamespaceLister interface {
     	// List lists all HorizontalPodAutoscalers in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v2beta1.HorizontalPodAutoscaler, err error)
    +	List(selector labels.Selector) (ret []*autoscalingv2beta1.HorizontalPodAutoscaler, err error)
     	// Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v2beta1.HorizontalPodAutoscaler, error)
    +	Get(name string) (*autoscalingv2beta1.HorizontalPodAutoscaler, error)
     	HorizontalPodAutoscalerNamespaceListerExpansion
     }
     
     // horizontalPodAutoscalerNamespaceLister implements the HorizontalPodAutoscalerNamespaceLister
     // interface.
     type horizontalPodAutoscalerNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all HorizontalPodAutoscalers in the indexer for a given namespace.
    -func (s horizontalPodAutoscalerNamespaceLister) List(selector labels.Selector) (ret []*v2beta1.HorizontalPodAutoscaler, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v2beta1.HorizontalPodAutoscaler))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name.
    -func (s horizontalPodAutoscalerNamespaceLister) Get(name string) (*v2beta1.HorizontalPodAutoscaler, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v2beta1.Resource("horizontalpodautoscaler"), name)
    -	}
    -	return obj.(*v2beta1.HorizontalPodAutoscaler), nil
    +	listers.ResourceIndexer[*autoscalingv2beta1.HorizontalPodAutoscaler]
     }
    diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v2beta2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/listers/autoscaling/v2beta2/horizontalpodautoscaler.go
    index b0dbaf9eb0a5..8d0fa6e79807 100644
    --- a/vendor/k8s.io/client-go/listers/autoscaling/v2beta2/horizontalpodautoscaler.go
    +++ b/vendor/k8s.io/client-go/listers/autoscaling/v2beta2/horizontalpodautoscaler.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v2beta2
     
     import (
    -	v2beta2 "k8s.io/api/autoscaling/v2beta2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // HorizontalPodAutoscalerLister helps list HorizontalPodAutoscalers.
    @@ -30,7 +30,7 @@ import (
     type HorizontalPodAutoscalerLister interface {
     	// List lists all HorizontalPodAutoscalers in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v2beta2.HorizontalPodAutoscaler, err error)
    +	List(selector labels.Selector) (ret []*autoscalingv2beta2.HorizontalPodAutoscaler, err error)
     	// HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers.
     	HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister
     	HorizontalPodAutoscalerListerExpansion
    @@ -38,25 +38,17 @@ type HorizontalPodAutoscalerLister interface {
     
     // horizontalPodAutoscalerLister implements the HorizontalPodAutoscalerLister interface.
     type horizontalPodAutoscalerLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*autoscalingv2beta2.HorizontalPodAutoscaler]
     }
     
     // NewHorizontalPodAutoscalerLister returns a new HorizontalPodAutoscalerLister.
     func NewHorizontalPodAutoscalerLister(indexer cache.Indexer) HorizontalPodAutoscalerLister {
    -	return &horizontalPodAutoscalerLister{indexer: indexer}
    -}
    -
    -// List lists all HorizontalPodAutoscalers in the indexer.
    -func (s *horizontalPodAutoscalerLister) List(selector labels.Selector) (ret []*v2beta2.HorizontalPodAutoscaler, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v2beta2.HorizontalPodAutoscaler))
    -	})
    -	return ret, err
    +	return &horizontalPodAutoscalerLister{listers.New[*autoscalingv2beta2.HorizontalPodAutoscaler](indexer, autoscalingv2beta2.Resource("horizontalpodautoscaler"))}
     }
     
     // HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers.
     func (s *horizontalPodAutoscalerLister) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister {
    -	return horizontalPodAutoscalerNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return horizontalPodAutoscalerNamespaceLister{listers.NewNamespaced[*autoscalingv2beta2.HorizontalPodAutoscaler](s.ResourceIndexer, namespace)}
     }
     
     // HorizontalPodAutoscalerNamespaceLister helps list and get HorizontalPodAutoscalers.
    @@ -64,36 +56,15 @@ func (s *horizontalPodAutoscalerLister) HorizontalPodAutoscalers(namespace strin
     type HorizontalPodAutoscalerNamespaceLister interface {
     	// List lists all HorizontalPodAutoscalers in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v2beta2.HorizontalPodAutoscaler, err error)
    +	List(selector labels.Selector) (ret []*autoscalingv2beta2.HorizontalPodAutoscaler, err error)
     	// Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v2beta2.HorizontalPodAutoscaler, error)
    +	Get(name string) (*autoscalingv2beta2.HorizontalPodAutoscaler, error)
     	HorizontalPodAutoscalerNamespaceListerExpansion
     }
     
     // horizontalPodAutoscalerNamespaceLister implements the HorizontalPodAutoscalerNamespaceLister
     // interface.
     type horizontalPodAutoscalerNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all HorizontalPodAutoscalers in the indexer for a given namespace.
    -func (s horizontalPodAutoscalerNamespaceLister) List(selector labels.Selector) (ret []*v2beta2.HorizontalPodAutoscaler, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v2beta2.HorizontalPodAutoscaler))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name.
    -func (s horizontalPodAutoscalerNamespaceLister) Get(name string) (*v2beta2.HorizontalPodAutoscaler, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v2beta2.Resource("horizontalpodautoscaler"), name)
    -	}
    -	return obj.(*v2beta2.HorizontalPodAutoscaler), nil
    +	listers.ResourceIndexer[*autoscalingv2beta2.HorizontalPodAutoscaler]
     }
    diff --git a/vendor/k8s.io/client-go/listers/batch/v1/cronjob.go b/vendor/k8s.io/client-go/listers/batch/v1/cronjob.go
    index 8e49ed959fac..7ad2b87f0816 100644
    --- a/vendor/k8s.io/client-go/listers/batch/v1/cronjob.go
    +++ b/vendor/k8s.io/client-go/listers/batch/v1/cronjob.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/batch/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	batchv1 "k8s.io/api/batch/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CronJobLister helps list CronJobs.
    @@ -30,7 +30,7 @@ import (
     type CronJobLister interface {
     	// List lists all CronJobs in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.CronJob, err error)
    +	List(selector labels.Selector) (ret []*batchv1.CronJob, err error)
     	// CronJobs returns an object that can list and get CronJobs.
     	CronJobs(namespace string) CronJobNamespaceLister
     	CronJobListerExpansion
    @@ -38,25 +38,17 @@ type CronJobLister interface {
     
     // cronJobLister implements the CronJobLister interface.
     type cronJobLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*batchv1.CronJob]
     }
     
     // NewCronJobLister returns a new CronJobLister.
     func NewCronJobLister(indexer cache.Indexer) CronJobLister {
    -	return &cronJobLister{indexer: indexer}
    -}
    -
    -// List lists all CronJobs in the indexer.
    -func (s *cronJobLister) List(selector labels.Selector) (ret []*v1.CronJob, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.CronJob))
    -	})
    -	return ret, err
    +	return &cronJobLister{listers.New[*batchv1.CronJob](indexer, batchv1.Resource("cronjob"))}
     }
     
     // CronJobs returns an object that can list and get CronJobs.
     func (s *cronJobLister) CronJobs(namespace string) CronJobNamespaceLister {
    -	return cronJobNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return cronJobNamespaceLister{listers.NewNamespaced[*batchv1.CronJob](s.ResourceIndexer, namespace)}
     }
     
     // CronJobNamespaceLister helps list and get CronJobs.
    @@ -64,36 +56,15 @@ func (s *cronJobLister) CronJobs(namespace string) CronJobNamespaceLister {
     type CronJobNamespaceLister interface {
     	// List lists all CronJobs in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.CronJob, err error)
    +	List(selector labels.Selector) (ret []*batchv1.CronJob, err error)
     	// Get retrieves the CronJob from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.CronJob, error)
    +	Get(name string) (*batchv1.CronJob, error)
     	CronJobNamespaceListerExpansion
     }
     
     // cronJobNamespaceLister implements the CronJobNamespaceLister
     // interface.
     type cronJobNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all CronJobs in the indexer for a given namespace.
    -func (s cronJobNamespaceLister) List(selector labels.Selector) (ret []*v1.CronJob, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.CronJob))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CronJob from the indexer for a given namespace and name.
    -func (s cronJobNamespaceLister) Get(name string) (*v1.CronJob, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("cronjob"), name)
    -	}
    -	return obj.(*v1.CronJob), nil
    +	listers.ResourceIndexer[*batchv1.CronJob]
     }
    diff --git a/vendor/k8s.io/client-go/listers/batch/v1/job.go b/vendor/k8s.io/client-go/listers/batch/v1/job.go
    index 3aba6b95fa60..eb9f300d9e1a 100644
    --- a/vendor/k8s.io/client-go/listers/batch/v1/job.go
    +++ b/vendor/k8s.io/client-go/listers/batch/v1/job.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/batch/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	batchv1 "k8s.io/api/batch/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // JobLister helps list Jobs.
    @@ -30,7 +30,7 @@ import (
     type JobLister interface {
     	// List lists all Jobs in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Job, err error)
    +	List(selector labels.Selector) (ret []*batchv1.Job, err error)
     	// Jobs returns an object that can list and get Jobs.
     	Jobs(namespace string) JobNamespaceLister
     	JobListerExpansion
    @@ -38,25 +38,17 @@ type JobLister interface {
     
     // jobLister implements the JobLister interface.
     type jobLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*batchv1.Job]
     }
     
     // NewJobLister returns a new JobLister.
     func NewJobLister(indexer cache.Indexer) JobLister {
    -	return &jobLister{indexer: indexer}
    -}
    -
    -// List lists all Jobs in the indexer.
    -func (s *jobLister) List(selector labels.Selector) (ret []*v1.Job, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Job))
    -	})
    -	return ret, err
    +	return &jobLister{listers.New[*batchv1.Job](indexer, batchv1.Resource("job"))}
     }
     
     // Jobs returns an object that can list and get Jobs.
     func (s *jobLister) Jobs(namespace string) JobNamespaceLister {
    -	return jobNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return jobNamespaceLister{listers.NewNamespaced[*batchv1.Job](s.ResourceIndexer, namespace)}
     }
     
     // JobNamespaceLister helps list and get Jobs.
    @@ -64,36 +56,15 @@ func (s *jobLister) Jobs(namespace string) JobNamespaceLister {
     type JobNamespaceLister interface {
     	// List lists all Jobs in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Job, err error)
    +	List(selector labels.Selector) (ret []*batchv1.Job, err error)
     	// Get retrieves the Job from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Job, error)
    +	Get(name string) (*batchv1.Job, error)
     	JobNamespaceListerExpansion
     }
     
     // jobNamespaceLister implements the JobNamespaceLister
     // interface.
     type jobNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Jobs in the indexer for a given namespace.
    -func (s jobNamespaceLister) List(selector labels.Selector) (ret []*v1.Job, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Job))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Job from the indexer for a given namespace and name.
    -func (s jobNamespaceLister) Get(name string) (*v1.Job, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("job"), name)
    -	}
    -	return obj.(*v1.Job), nil
    +	listers.ResourceIndexer[*batchv1.Job]
     }
    diff --git a/vendor/k8s.io/client-go/listers/batch/v1beta1/cronjob.go b/vendor/k8s.io/client-go/listers/batch/v1beta1/cronjob.go
    index 4842d5e5a15c..d5e0ec2c8d25 100644
    --- a/vendor/k8s.io/client-go/listers/batch/v1beta1/cronjob.go
    +++ b/vendor/k8s.io/client-go/listers/batch/v1beta1/cronjob.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/batch/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	batchv1beta1 "k8s.io/api/batch/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CronJobLister helps list CronJobs.
    @@ -30,7 +30,7 @@ import (
     type CronJobLister interface {
     	// List lists all CronJobs in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.CronJob, err error)
    +	List(selector labels.Selector) (ret []*batchv1beta1.CronJob, err error)
     	// CronJobs returns an object that can list and get CronJobs.
     	CronJobs(namespace string) CronJobNamespaceLister
     	CronJobListerExpansion
    @@ -38,25 +38,17 @@ type CronJobLister interface {
     
     // cronJobLister implements the CronJobLister interface.
     type cronJobLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*batchv1beta1.CronJob]
     }
     
     // NewCronJobLister returns a new CronJobLister.
     func NewCronJobLister(indexer cache.Indexer) CronJobLister {
    -	return &cronJobLister{indexer: indexer}
    -}
    -
    -// List lists all CronJobs in the indexer.
    -func (s *cronJobLister) List(selector labels.Selector) (ret []*v1beta1.CronJob, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.CronJob))
    -	})
    -	return ret, err
    +	return &cronJobLister{listers.New[*batchv1beta1.CronJob](indexer, batchv1beta1.Resource("cronjob"))}
     }
     
     // CronJobs returns an object that can list and get CronJobs.
     func (s *cronJobLister) CronJobs(namespace string) CronJobNamespaceLister {
    -	return cronJobNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return cronJobNamespaceLister{listers.NewNamespaced[*batchv1beta1.CronJob](s.ResourceIndexer, namespace)}
     }
     
     // CronJobNamespaceLister helps list and get CronJobs.
    @@ -64,36 +56,15 @@ func (s *cronJobLister) CronJobs(namespace string) CronJobNamespaceLister {
     type CronJobNamespaceLister interface {
     	// List lists all CronJobs in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.CronJob, err error)
    +	List(selector labels.Selector) (ret []*batchv1beta1.CronJob, err error)
     	// Get retrieves the CronJob from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.CronJob, error)
    +	Get(name string) (*batchv1beta1.CronJob, error)
     	CronJobNamespaceListerExpansion
     }
     
     // cronJobNamespaceLister implements the CronJobNamespaceLister
     // interface.
     type cronJobNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all CronJobs in the indexer for a given namespace.
    -func (s cronJobNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.CronJob, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.CronJob))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CronJob from the indexer for a given namespace and name.
    -func (s cronJobNamespaceLister) Get(name string) (*v1beta1.CronJob, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("cronjob"), name)
    -	}
    -	return obj.(*v1beta1.CronJob), nil
    +	listers.ResourceIndexer[*batchv1beta1.CronJob]
     }
    diff --git a/vendor/k8s.io/client-go/listers/certificates/v1/certificatesigningrequest.go b/vendor/k8s.io/client-go/listers/certificates/v1/certificatesigningrequest.go
    index 0d04e118dbcb..7dbb0f3f5ab8 100644
    --- a/vendor/k8s.io/client-go/listers/certificates/v1/certificatesigningrequest.go
    +++ b/vendor/k8s.io/client-go/listers/certificates/v1/certificatesigningrequest.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/certificates/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	certificatesv1 "k8s.io/api/certificates/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CertificateSigningRequestLister helps list CertificateSigningRequests.
    @@ -30,39 +30,19 @@ import (
     type CertificateSigningRequestLister interface {
     	// List lists all CertificateSigningRequests in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.CertificateSigningRequest, err error)
    +	List(selector labels.Selector) (ret []*certificatesv1.CertificateSigningRequest, err error)
     	// Get retrieves the CertificateSigningRequest from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.CertificateSigningRequest, error)
    +	Get(name string) (*certificatesv1.CertificateSigningRequest, error)
     	CertificateSigningRequestListerExpansion
     }
     
     // certificateSigningRequestLister implements the CertificateSigningRequestLister interface.
     type certificateSigningRequestLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*certificatesv1.CertificateSigningRequest]
     }
     
     // NewCertificateSigningRequestLister returns a new CertificateSigningRequestLister.
     func NewCertificateSigningRequestLister(indexer cache.Indexer) CertificateSigningRequestLister {
    -	return &certificateSigningRequestLister{indexer: indexer}
    -}
    -
    -// List lists all CertificateSigningRequests in the indexer.
    -func (s *certificateSigningRequestLister) List(selector labels.Selector) (ret []*v1.CertificateSigningRequest, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.CertificateSigningRequest))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CertificateSigningRequest from the index for a given name.
    -func (s *certificateSigningRequestLister) Get(name string) (*v1.CertificateSigningRequest, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("certificatesigningrequest"), name)
    -	}
    -	return obj.(*v1.CertificateSigningRequest), nil
    +	return &certificateSigningRequestLister{listers.New[*certificatesv1.CertificateSigningRequest](indexer, certificatesv1.Resource("certificatesigningrequest"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/certificates/v1alpha1/clustertrustbundle.go b/vendor/k8s.io/client-go/listers/certificates/v1alpha1/clustertrustbundle.go
    index b8049a761815..0e7f47d80ad1 100644
    --- a/vendor/k8s.io/client-go/listers/certificates/v1alpha1/clustertrustbundle.go
    +++ b/vendor/k8s.io/client-go/listers/certificates/v1alpha1/clustertrustbundle.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/certificates/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	certificatesv1alpha1 "k8s.io/api/certificates/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ClusterTrustBundleLister helps list ClusterTrustBundles.
    @@ -30,39 +30,19 @@ import (
     type ClusterTrustBundleLister interface {
     	// List lists all ClusterTrustBundles in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.ClusterTrustBundle, err error)
    +	List(selector labels.Selector) (ret []*certificatesv1alpha1.ClusterTrustBundle, err error)
     	// Get retrieves the ClusterTrustBundle from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.ClusterTrustBundle, error)
    +	Get(name string) (*certificatesv1alpha1.ClusterTrustBundle, error)
     	ClusterTrustBundleListerExpansion
     }
     
     // clusterTrustBundleLister implements the ClusterTrustBundleLister interface.
     type clusterTrustBundleLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*certificatesv1alpha1.ClusterTrustBundle]
     }
     
     // NewClusterTrustBundleLister returns a new ClusterTrustBundleLister.
     func NewClusterTrustBundleLister(indexer cache.Indexer) ClusterTrustBundleLister {
    -	return &clusterTrustBundleLister{indexer: indexer}
    -}
    -
    -// List lists all ClusterTrustBundles in the indexer.
    -func (s *clusterTrustBundleLister) List(selector labels.Selector) (ret []*v1alpha1.ClusterTrustBundle, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.ClusterTrustBundle))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ClusterTrustBundle from the index for a given name.
    -func (s *clusterTrustBundleLister) Get(name string) (*v1alpha1.ClusterTrustBundle, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("clustertrustbundle"), name)
    -	}
    -	return obj.(*v1alpha1.ClusterTrustBundle), nil
    +	return &clusterTrustBundleLister{listers.New[*certificatesv1alpha1.ClusterTrustBundle](indexer, certificatesv1alpha1.Resource("clustertrustbundle"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go b/vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go
    index 471b5629b33a..3b4742c67d1e 100644
    --- a/vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go
    +++ b/vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/certificates/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CertificateSigningRequestLister helps list CertificateSigningRequests.
    @@ -30,39 +30,19 @@ import (
     type CertificateSigningRequestLister interface {
     	// List lists all CertificateSigningRequests in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.CertificateSigningRequest, err error)
    +	List(selector labels.Selector) (ret []*certificatesv1beta1.CertificateSigningRequest, err error)
     	// Get retrieves the CertificateSigningRequest from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.CertificateSigningRequest, error)
    +	Get(name string) (*certificatesv1beta1.CertificateSigningRequest, error)
     	CertificateSigningRequestListerExpansion
     }
     
     // certificateSigningRequestLister implements the CertificateSigningRequestLister interface.
     type certificateSigningRequestLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*certificatesv1beta1.CertificateSigningRequest]
     }
     
     // NewCertificateSigningRequestLister returns a new CertificateSigningRequestLister.
     func NewCertificateSigningRequestLister(indexer cache.Indexer) CertificateSigningRequestLister {
    -	return &certificateSigningRequestLister{indexer: indexer}
    -}
    -
    -// List lists all CertificateSigningRequests in the indexer.
    -func (s *certificateSigningRequestLister) List(selector labels.Selector) (ret []*v1beta1.CertificateSigningRequest, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.CertificateSigningRequest))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CertificateSigningRequest from the index for a given name.
    -func (s *certificateSigningRequestLister) Get(name string) (*v1beta1.CertificateSigningRequest, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("certificatesigningrequest"), name)
    -	}
    -	return obj.(*v1beta1.CertificateSigningRequest), nil
    +	return &certificateSigningRequestLister{listers.New[*certificatesv1beta1.CertificateSigningRequest](indexer, certificatesv1beta1.Resource("certificatesigningrequest"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/coordination/v1/lease.go b/vendor/k8s.io/client-go/listers/coordination/v1/lease.go
    index de366d0e11a4..7fdab2bff92b 100644
    --- a/vendor/k8s.io/client-go/listers/coordination/v1/lease.go
    +++ b/vendor/k8s.io/client-go/listers/coordination/v1/lease.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/coordination/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	coordinationv1 "k8s.io/api/coordination/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // LeaseLister helps list Leases.
    @@ -30,7 +30,7 @@ import (
     type LeaseLister interface {
     	// List lists all Leases in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Lease, err error)
    +	List(selector labels.Selector) (ret []*coordinationv1.Lease, err error)
     	// Leases returns an object that can list and get Leases.
     	Leases(namespace string) LeaseNamespaceLister
     	LeaseListerExpansion
    @@ -38,25 +38,17 @@ type LeaseLister interface {
     
     // leaseLister implements the LeaseLister interface.
     type leaseLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*coordinationv1.Lease]
     }
     
     // NewLeaseLister returns a new LeaseLister.
     func NewLeaseLister(indexer cache.Indexer) LeaseLister {
    -	return &leaseLister{indexer: indexer}
    -}
    -
    -// List lists all Leases in the indexer.
    -func (s *leaseLister) List(selector labels.Selector) (ret []*v1.Lease, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Lease))
    -	})
    -	return ret, err
    +	return &leaseLister{listers.New[*coordinationv1.Lease](indexer, coordinationv1.Resource("lease"))}
     }
     
     // Leases returns an object that can list and get Leases.
     func (s *leaseLister) Leases(namespace string) LeaseNamespaceLister {
    -	return leaseNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return leaseNamespaceLister{listers.NewNamespaced[*coordinationv1.Lease](s.ResourceIndexer, namespace)}
     }
     
     // LeaseNamespaceLister helps list and get Leases.
    @@ -64,36 +56,15 @@ func (s *leaseLister) Leases(namespace string) LeaseNamespaceLister {
     type LeaseNamespaceLister interface {
     	// List lists all Leases in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Lease, err error)
    +	List(selector labels.Selector) (ret []*coordinationv1.Lease, err error)
     	// Get retrieves the Lease from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Lease, error)
    +	Get(name string) (*coordinationv1.Lease, error)
     	LeaseNamespaceListerExpansion
     }
     
     // leaseNamespaceLister implements the LeaseNamespaceLister
     // interface.
     type leaseNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Leases in the indexer for a given namespace.
    -func (s leaseNamespaceLister) List(selector labels.Selector) (ret []*v1.Lease, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Lease))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Lease from the indexer for a given namespace and name.
    -func (s leaseNamespaceLister) Get(name string) (*v1.Lease, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("lease"), name)
    -	}
    -	return obj.(*v1.Lease), nil
    +	listers.ResourceIndexer[*coordinationv1.Lease]
     }
    diff --git a/vendor/k8s.io/client-go/listers/coordination/v1alpha2/expansion_generated.go b/vendor/k8s.io/client-go/listers/coordination/v1alpha2/expansion_generated.go
    new file mode 100644
    index 000000000000..f22e7d483359
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/coordination/v1alpha2/expansion_generated.go
    @@ -0,0 +1,27 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1alpha2
    +
    +// LeaseCandidateListerExpansion allows custom methods to be added to
    +// LeaseCandidateLister.
    +type LeaseCandidateListerExpansion interface{}
    +
    +// LeaseCandidateNamespaceListerExpansion allows custom methods to be added to
    +// LeaseCandidateNamespaceLister.
    +type LeaseCandidateNamespaceListerExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/listers/coordination/v1alpha2/leasecandidate.go b/vendor/k8s.io/client-go/listers/coordination/v1alpha2/leasecandidate.go
    new file mode 100644
    index 000000000000..26a3be4761c8
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/coordination/v1alpha2/leasecandidate.go
    @@ -0,0 +1,70 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1alpha2
    +
    +import (
    +	coordinationv1alpha2 "k8s.io/api/coordination/v1alpha2"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// LeaseCandidateLister helps list LeaseCandidates.
    +// All objects returned here must be treated as read-only.
    +type LeaseCandidateLister interface {
    +	// List lists all LeaseCandidates in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*coordinationv1alpha2.LeaseCandidate, err error)
    +	// LeaseCandidates returns an object that can list and get LeaseCandidates.
    +	LeaseCandidates(namespace string) LeaseCandidateNamespaceLister
    +	LeaseCandidateListerExpansion
    +}
    +
    +// leaseCandidateLister implements the LeaseCandidateLister interface.
    +type leaseCandidateLister struct {
    +	listers.ResourceIndexer[*coordinationv1alpha2.LeaseCandidate]
    +}
    +
    +// NewLeaseCandidateLister returns a new LeaseCandidateLister.
    +func NewLeaseCandidateLister(indexer cache.Indexer) LeaseCandidateLister {
    +	return &leaseCandidateLister{listers.New[*coordinationv1alpha2.LeaseCandidate](indexer, coordinationv1alpha2.Resource("leasecandidate"))}
    +}
    +
    +// LeaseCandidates returns an object that can list and get LeaseCandidates.
    +func (s *leaseCandidateLister) LeaseCandidates(namespace string) LeaseCandidateNamespaceLister {
    +	return leaseCandidateNamespaceLister{listers.NewNamespaced[*coordinationv1alpha2.LeaseCandidate](s.ResourceIndexer, namespace)}
    +}
    +
    +// LeaseCandidateNamespaceLister helps list and get LeaseCandidates.
    +// All objects returned here must be treated as read-only.
    +type LeaseCandidateNamespaceLister interface {
    +	// List lists all LeaseCandidates in the indexer for a given namespace.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*coordinationv1alpha2.LeaseCandidate, err error)
    +	// Get retrieves the LeaseCandidate from the indexer for a given namespace and name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*coordinationv1alpha2.LeaseCandidate, error)
    +	LeaseCandidateNamespaceListerExpansion
    +}
    +
    +// leaseCandidateNamespaceLister implements the LeaseCandidateNamespaceLister
    +// interface.
    +type leaseCandidateNamespaceLister struct {
    +	listers.ResourceIndexer[*coordinationv1alpha2.LeaseCandidate]
    +}
    diff --git a/vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.go b/vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.go
    index 8dfdc1e9bc09..dfbd02acf44f 100644
    --- a/vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.go
    +++ b/vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/coordination/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	coordinationv1beta1 "k8s.io/api/coordination/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // LeaseLister helps list Leases.
    @@ -30,7 +30,7 @@ import (
     type LeaseLister interface {
     	// List lists all Leases in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Lease, err error)
    +	List(selector labels.Selector) (ret []*coordinationv1beta1.Lease, err error)
     	// Leases returns an object that can list and get Leases.
     	Leases(namespace string) LeaseNamespaceLister
     	LeaseListerExpansion
    @@ -38,25 +38,17 @@ type LeaseLister interface {
     
     // leaseLister implements the LeaseLister interface.
     type leaseLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*coordinationv1beta1.Lease]
     }
     
     // NewLeaseLister returns a new LeaseLister.
     func NewLeaseLister(indexer cache.Indexer) LeaseLister {
    -	return &leaseLister{indexer: indexer}
    -}
    -
    -// List lists all Leases in the indexer.
    -func (s *leaseLister) List(selector labels.Selector) (ret []*v1beta1.Lease, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Lease))
    -	})
    -	return ret, err
    +	return &leaseLister{listers.New[*coordinationv1beta1.Lease](indexer, coordinationv1beta1.Resource("lease"))}
     }
     
     // Leases returns an object that can list and get Leases.
     func (s *leaseLister) Leases(namespace string) LeaseNamespaceLister {
    -	return leaseNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return leaseNamespaceLister{listers.NewNamespaced[*coordinationv1beta1.Lease](s.ResourceIndexer, namespace)}
     }
     
     // LeaseNamespaceLister helps list and get Leases.
    @@ -64,36 +56,15 @@ func (s *leaseLister) Leases(namespace string) LeaseNamespaceLister {
     type LeaseNamespaceLister interface {
     	// List lists all Leases in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Lease, err error)
    +	List(selector labels.Selector) (ret []*coordinationv1beta1.Lease, err error)
     	// Get retrieves the Lease from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.Lease, error)
    +	Get(name string) (*coordinationv1beta1.Lease, error)
     	LeaseNamespaceListerExpansion
     }
     
     // leaseNamespaceLister implements the LeaseNamespaceLister
     // interface.
     type leaseNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Leases in the indexer for a given namespace.
    -func (s leaseNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Lease, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Lease))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Lease from the indexer for a given namespace and name.
    -func (s leaseNamespaceLister) Get(name string) (*v1beta1.Lease, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("lease"), name)
    -	}
    -	return obj.(*v1beta1.Lease), nil
    +	listers.ResourceIndexer[*coordinationv1beta1.Lease]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/componentstatus.go b/vendor/k8s.io/client-go/listers/core/v1/componentstatus.go
    index 5fcdac3c7643..c88836706857 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/componentstatus.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/componentstatus.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ComponentStatusLister helps list ComponentStatuses.
    @@ -30,39 +30,19 @@ import (
     type ComponentStatusLister interface {
     	// List lists all ComponentStatuses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ComponentStatus, err error)
    +	List(selector labels.Selector) (ret []*corev1.ComponentStatus, err error)
     	// Get retrieves the ComponentStatus from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.ComponentStatus, error)
    +	Get(name string) (*corev1.ComponentStatus, error)
     	ComponentStatusListerExpansion
     }
     
     // componentStatusLister implements the ComponentStatusLister interface.
     type componentStatusLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.ComponentStatus]
     }
     
     // NewComponentStatusLister returns a new ComponentStatusLister.
     func NewComponentStatusLister(indexer cache.Indexer) ComponentStatusLister {
    -	return &componentStatusLister{indexer: indexer}
    -}
    -
    -// List lists all ComponentStatuses in the indexer.
    -func (s *componentStatusLister) List(selector labels.Selector) (ret []*v1.ComponentStatus, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ComponentStatus))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ComponentStatus from the index for a given name.
    -func (s *componentStatusLister) Get(name string) (*v1.ComponentStatus, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("componentstatus"), name)
    -	}
    -	return obj.(*v1.ComponentStatus), nil
    +	return &componentStatusLister{listers.New[*corev1.ComponentStatus](indexer, corev1.Resource("componentstatus"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/configmap.go b/vendor/k8s.io/client-go/listers/core/v1/configmap.go
    index 6a410e47c4a4..54d25412ea84 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/configmap.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/configmap.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ConfigMapLister helps list ConfigMaps.
    @@ -30,7 +30,7 @@ import (
     type ConfigMapLister interface {
     	// List lists all ConfigMaps in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ConfigMap, err error)
    +	List(selector labels.Selector) (ret []*corev1.ConfigMap, err error)
     	// ConfigMaps returns an object that can list and get ConfigMaps.
     	ConfigMaps(namespace string) ConfigMapNamespaceLister
     	ConfigMapListerExpansion
    @@ -38,25 +38,17 @@ type ConfigMapLister interface {
     
     // configMapLister implements the ConfigMapLister interface.
     type configMapLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.ConfigMap]
     }
     
     // NewConfigMapLister returns a new ConfigMapLister.
     func NewConfigMapLister(indexer cache.Indexer) ConfigMapLister {
    -	return &configMapLister{indexer: indexer}
    -}
    -
    -// List lists all ConfigMaps in the indexer.
    -func (s *configMapLister) List(selector labels.Selector) (ret []*v1.ConfigMap, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ConfigMap))
    -	})
    -	return ret, err
    +	return &configMapLister{listers.New[*corev1.ConfigMap](indexer, corev1.Resource("configmap"))}
     }
     
     // ConfigMaps returns an object that can list and get ConfigMaps.
     func (s *configMapLister) ConfigMaps(namespace string) ConfigMapNamespaceLister {
    -	return configMapNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return configMapNamespaceLister{listers.NewNamespaced[*corev1.ConfigMap](s.ResourceIndexer, namespace)}
     }
     
     // ConfigMapNamespaceLister helps list and get ConfigMaps.
    @@ -64,36 +56,15 @@ func (s *configMapLister) ConfigMaps(namespace string) ConfigMapNamespaceLister
     type ConfigMapNamespaceLister interface {
     	// List lists all ConfigMaps in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ConfigMap, err error)
    +	List(selector labels.Selector) (ret []*corev1.ConfigMap, err error)
     	// Get retrieves the ConfigMap from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.ConfigMap, error)
    +	Get(name string) (*corev1.ConfigMap, error)
     	ConfigMapNamespaceListerExpansion
     }
     
     // configMapNamespaceLister implements the ConfigMapNamespaceLister
     // interface.
     type configMapNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ConfigMaps in the indexer for a given namespace.
    -func (s configMapNamespaceLister) List(selector labels.Selector) (ret []*v1.ConfigMap, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ConfigMap))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ConfigMap from the indexer for a given namespace and name.
    -func (s configMapNamespaceLister) Get(name string) (*v1.ConfigMap, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("configmap"), name)
    -	}
    -	return obj.(*v1.ConfigMap), nil
    +	listers.ResourceIndexer[*corev1.ConfigMap]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/endpoints.go b/vendor/k8s.io/client-go/listers/core/v1/endpoints.go
    index 4759ce808feb..a9d4e45a1970 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/endpoints.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/endpoints.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // EndpointsLister helps list Endpoints.
    @@ -30,7 +30,7 @@ import (
     type EndpointsLister interface {
     	// List lists all Endpoints in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Endpoints, err error)
    +	List(selector labels.Selector) (ret []*corev1.Endpoints, err error)
     	// Endpoints returns an object that can list and get Endpoints.
     	Endpoints(namespace string) EndpointsNamespaceLister
     	EndpointsListerExpansion
    @@ -38,25 +38,17 @@ type EndpointsLister interface {
     
     // endpointsLister implements the EndpointsLister interface.
     type endpointsLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.Endpoints]
     }
     
     // NewEndpointsLister returns a new EndpointsLister.
     func NewEndpointsLister(indexer cache.Indexer) EndpointsLister {
    -	return &endpointsLister{indexer: indexer}
    -}
    -
    -// List lists all Endpoints in the indexer.
    -func (s *endpointsLister) List(selector labels.Selector) (ret []*v1.Endpoints, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Endpoints))
    -	})
    -	return ret, err
    +	return &endpointsLister{listers.New[*corev1.Endpoints](indexer, corev1.Resource("endpoints"))}
     }
     
     // Endpoints returns an object that can list and get Endpoints.
     func (s *endpointsLister) Endpoints(namespace string) EndpointsNamespaceLister {
    -	return endpointsNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return endpointsNamespaceLister{listers.NewNamespaced[*corev1.Endpoints](s.ResourceIndexer, namespace)}
     }
     
     // EndpointsNamespaceLister helps list and get Endpoints.
    @@ -64,36 +56,15 @@ func (s *endpointsLister) Endpoints(namespace string) EndpointsNamespaceLister {
     type EndpointsNamespaceLister interface {
     	// List lists all Endpoints in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Endpoints, err error)
    +	List(selector labels.Selector) (ret []*corev1.Endpoints, err error)
     	// Get retrieves the Endpoints from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Endpoints, error)
    +	Get(name string) (*corev1.Endpoints, error)
     	EndpointsNamespaceListerExpansion
     }
     
     // endpointsNamespaceLister implements the EndpointsNamespaceLister
     // interface.
     type endpointsNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Endpoints in the indexer for a given namespace.
    -func (s endpointsNamespaceLister) List(selector labels.Selector) (ret []*v1.Endpoints, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Endpoints))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Endpoints from the indexer for a given namespace and name.
    -func (s endpointsNamespaceLister) Get(name string) (*v1.Endpoints, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("endpoints"), name)
    -	}
    -	return obj.(*v1.Endpoints), nil
    +	listers.ResourceIndexer[*corev1.Endpoints]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/event.go b/vendor/k8s.io/client-go/listers/core/v1/event.go
    index 4416e20120b9..0e13fa3112db 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/event.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/event.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // EventLister helps list Events.
    @@ -30,7 +30,7 @@ import (
     type EventLister interface {
     	// List lists all Events in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Event, err error)
    +	List(selector labels.Selector) (ret []*corev1.Event, err error)
     	// Events returns an object that can list and get Events.
     	Events(namespace string) EventNamespaceLister
     	EventListerExpansion
    @@ -38,25 +38,17 @@ type EventLister interface {
     
     // eventLister implements the EventLister interface.
     type eventLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.Event]
     }
     
     // NewEventLister returns a new EventLister.
     func NewEventLister(indexer cache.Indexer) EventLister {
    -	return &eventLister{indexer: indexer}
    -}
    -
    -// List lists all Events in the indexer.
    -func (s *eventLister) List(selector labels.Selector) (ret []*v1.Event, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Event))
    -	})
    -	return ret, err
    +	return &eventLister{listers.New[*corev1.Event](indexer, corev1.Resource("event"))}
     }
     
     // Events returns an object that can list and get Events.
     func (s *eventLister) Events(namespace string) EventNamespaceLister {
    -	return eventNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return eventNamespaceLister{listers.NewNamespaced[*corev1.Event](s.ResourceIndexer, namespace)}
     }
     
     // EventNamespaceLister helps list and get Events.
    @@ -64,36 +56,15 @@ func (s *eventLister) Events(namespace string) EventNamespaceLister {
     type EventNamespaceLister interface {
     	// List lists all Events in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Event, err error)
    +	List(selector labels.Selector) (ret []*corev1.Event, err error)
     	// Get retrieves the Event from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Event, error)
    +	Get(name string) (*corev1.Event, error)
     	EventNamespaceListerExpansion
     }
     
     // eventNamespaceLister implements the EventNamespaceLister
     // interface.
     type eventNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Events in the indexer for a given namespace.
    -func (s eventNamespaceLister) List(selector labels.Selector) (ret []*v1.Event, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Event))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Event from the indexer for a given namespace and name.
    -func (s eventNamespaceLister) Get(name string) (*v1.Event, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("event"), name)
    -	}
    -	return obj.(*v1.Event), nil
    +	listers.ResourceIndexer[*corev1.Event]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/limitrange.go b/vendor/k8s.io/client-go/listers/core/v1/limitrange.go
    index d8fa569cd384..26402c8223e6 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/limitrange.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/limitrange.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // LimitRangeLister helps list LimitRanges.
    @@ -30,7 +30,7 @@ import (
     type LimitRangeLister interface {
     	// List lists all LimitRanges in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.LimitRange, err error)
    +	List(selector labels.Selector) (ret []*corev1.LimitRange, err error)
     	// LimitRanges returns an object that can list and get LimitRanges.
     	LimitRanges(namespace string) LimitRangeNamespaceLister
     	LimitRangeListerExpansion
    @@ -38,25 +38,17 @@ type LimitRangeLister interface {
     
     // limitRangeLister implements the LimitRangeLister interface.
     type limitRangeLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.LimitRange]
     }
     
     // NewLimitRangeLister returns a new LimitRangeLister.
     func NewLimitRangeLister(indexer cache.Indexer) LimitRangeLister {
    -	return &limitRangeLister{indexer: indexer}
    -}
    -
    -// List lists all LimitRanges in the indexer.
    -func (s *limitRangeLister) List(selector labels.Selector) (ret []*v1.LimitRange, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.LimitRange))
    -	})
    -	return ret, err
    +	return &limitRangeLister{listers.New[*corev1.LimitRange](indexer, corev1.Resource("limitrange"))}
     }
     
     // LimitRanges returns an object that can list and get LimitRanges.
     func (s *limitRangeLister) LimitRanges(namespace string) LimitRangeNamespaceLister {
    -	return limitRangeNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return limitRangeNamespaceLister{listers.NewNamespaced[*corev1.LimitRange](s.ResourceIndexer, namespace)}
     }
     
     // LimitRangeNamespaceLister helps list and get LimitRanges.
    @@ -64,36 +56,15 @@ func (s *limitRangeLister) LimitRanges(namespace string) LimitRangeNamespaceList
     type LimitRangeNamespaceLister interface {
     	// List lists all LimitRanges in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.LimitRange, err error)
    +	List(selector labels.Selector) (ret []*corev1.LimitRange, err error)
     	// Get retrieves the LimitRange from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.LimitRange, error)
    +	Get(name string) (*corev1.LimitRange, error)
     	LimitRangeNamespaceListerExpansion
     }
     
     // limitRangeNamespaceLister implements the LimitRangeNamespaceLister
     // interface.
     type limitRangeNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all LimitRanges in the indexer for a given namespace.
    -func (s limitRangeNamespaceLister) List(selector labels.Selector) (ret []*v1.LimitRange, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.LimitRange))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the LimitRange from the indexer for a given namespace and name.
    -func (s limitRangeNamespaceLister) Get(name string) (*v1.LimitRange, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("limitrange"), name)
    -	}
    -	return obj.(*v1.LimitRange), nil
    +	listers.ResourceIndexer[*corev1.LimitRange]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/namespace.go b/vendor/k8s.io/client-go/listers/core/v1/namespace.go
    index 454aa1a0a231..d0cd4e5c7a08 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/namespace.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/namespace.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // NamespaceLister helps list Namespaces.
    @@ -30,39 +30,19 @@ import (
     type NamespaceLister interface {
     	// List lists all Namespaces in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Namespace, err error)
    +	List(selector labels.Selector) (ret []*corev1.Namespace, err error)
     	// Get retrieves the Namespace from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Namespace, error)
    +	Get(name string) (*corev1.Namespace, error)
     	NamespaceListerExpansion
     }
     
     // namespaceLister implements the NamespaceLister interface.
     type namespaceLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.Namespace]
     }
     
     // NewNamespaceLister returns a new NamespaceLister.
     func NewNamespaceLister(indexer cache.Indexer) NamespaceLister {
    -	return &namespaceLister{indexer: indexer}
    -}
    -
    -// List lists all Namespaces in the indexer.
    -func (s *namespaceLister) List(selector labels.Selector) (ret []*v1.Namespace, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Namespace))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Namespace from the index for a given name.
    -func (s *namespaceLister) Get(name string) (*v1.Namespace, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("namespace"), name)
    -	}
    -	return obj.(*v1.Namespace), nil
    +	return &namespaceLister{listers.New[*corev1.Namespace](indexer, corev1.Resource("namespace"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/node.go b/vendor/k8s.io/client-go/listers/core/v1/node.go
    index 596049857f19..c9ffe2e5297e 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/node.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/node.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // NodeLister helps list Nodes.
    @@ -30,39 +30,19 @@ import (
     type NodeLister interface {
     	// List lists all Nodes in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Node, err error)
    +	List(selector labels.Selector) (ret []*corev1.Node, err error)
     	// Get retrieves the Node from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Node, error)
    +	Get(name string) (*corev1.Node, error)
     	NodeListerExpansion
     }
     
     // nodeLister implements the NodeLister interface.
     type nodeLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.Node]
     }
     
     // NewNodeLister returns a new NodeLister.
     func NewNodeLister(indexer cache.Indexer) NodeLister {
    -	return &nodeLister{indexer: indexer}
    -}
    -
    -// List lists all Nodes in the indexer.
    -func (s *nodeLister) List(selector labels.Selector) (ret []*v1.Node, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Node))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Node from the index for a given name.
    -func (s *nodeLister) Get(name string) (*v1.Node, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("node"), name)
    -	}
    -	return obj.(*v1.Node), nil
    +	return &nodeLister{listers.New[*corev1.Node](indexer, corev1.Resource("node"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go
    index e7dfd4ac9f62..3f3a17cba055 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PersistentVolumeLister helps list PersistentVolumes.
    @@ -30,39 +30,19 @@ import (
     type PersistentVolumeLister interface {
     	// List lists all PersistentVolumes in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.PersistentVolume, err error)
    +	List(selector labels.Selector) (ret []*corev1.PersistentVolume, err error)
     	// Get retrieves the PersistentVolume from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.PersistentVolume, error)
    +	Get(name string) (*corev1.PersistentVolume, error)
     	PersistentVolumeListerExpansion
     }
     
     // persistentVolumeLister implements the PersistentVolumeLister interface.
     type persistentVolumeLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.PersistentVolume]
     }
     
     // NewPersistentVolumeLister returns a new PersistentVolumeLister.
     func NewPersistentVolumeLister(indexer cache.Indexer) PersistentVolumeLister {
    -	return &persistentVolumeLister{indexer: indexer}
    -}
    -
    -// List lists all PersistentVolumes in the indexer.
    -func (s *persistentVolumeLister) List(selector labels.Selector) (ret []*v1.PersistentVolume, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.PersistentVolume))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PersistentVolume from the index for a given name.
    -func (s *persistentVolumeLister) Get(name string) (*v1.PersistentVolume, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("persistentvolume"), name)
    -	}
    -	return obj.(*v1.PersistentVolume), nil
    +	return &persistentVolumeLister{listers.New[*corev1.PersistentVolume](indexer, corev1.Resource("persistentvolume"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go
    index fc71bb5a1fdf..0665e61722a4 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PersistentVolumeClaimLister helps list PersistentVolumeClaims.
    @@ -30,7 +30,7 @@ import (
     type PersistentVolumeClaimLister interface {
     	// List lists all PersistentVolumeClaims in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error)
    +	List(selector labels.Selector) (ret []*corev1.PersistentVolumeClaim, err error)
     	// PersistentVolumeClaims returns an object that can list and get PersistentVolumeClaims.
     	PersistentVolumeClaims(namespace string) PersistentVolumeClaimNamespaceLister
     	PersistentVolumeClaimListerExpansion
    @@ -38,25 +38,17 @@ type PersistentVolumeClaimLister interface {
     
     // persistentVolumeClaimLister implements the PersistentVolumeClaimLister interface.
     type persistentVolumeClaimLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.PersistentVolumeClaim]
     }
     
     // NewPersistentVolumeClaimLister returns a new PersistentVolumeClaimLister.
     func NewPersistentVolumeClaimLister(indexer cache.Indexer) PersistentVolumeClaimLister {
    -	return &persistentVolumeClaimLister{indexer: indexer}
    -}
    -
    -// List lists all PersistentVolumeClaims in the indexer.
    -func (s *persistentVolumeClaimLister) List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.PersistentVolumeClaim))
    -	})
    -	return ret, err
    +	return &persistentVolumeClaimLister{listers.New[*corev1.PersistentVolumeClaim](indexer, corev1.Resource("persistentvolumeclaim"))}
     }
     
     // PersistentVolumeClaims returns an object that can list and get PersistentVolumeClaims.
     func (s *persistentVolumeClaimLister) PersistentVolumeClaims(namespace string) PersistentVolumeClaimNamespaceLister {
    -	return persistentVolumeClaimNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return persistentVolumeClaimNamespaceLister{listers.NewNamespaced[*corev1.PersistentVolumeClaim](s.ResourceIndexer, namespace)}
     }
     
     // PersistentVolumeClaimNamespaceLister helps list and get PersistentVolumeClaims.
    @@ -64,36 +56,15 @@ func (s *persistentVolumeClaimLister) PersistentVolumeClaims(namespace string) P
     type PersistentVolumeClaimNamespaceLister interface {
     	// List lists all PersistentVolumeClaims in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error)
    +	List(selector labels.Selector) (ret []*corev1.PersistentVolumeClaim, err error)
     	// Get retrieves the PersistentVolumeClaim from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.PersistentVolumeClaim, error)
    +	Get(name string) (*corev1.PersistentVolumeClaim, error)
     	PersistentVolumeClaimNamespaceListerExpansion
     }
     
     // persistentVolumeClaimNamespaceLister implements the PersistentVolumeClaimNamespaceLister
     // interface.
     type persistentVolumeClaimNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all PersistentVolumeClaims in the indexer for a given namespace.
    -func (s persistentVolumeClaimNamespaceLister) List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.PersistentVolumeClaim))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PersistentVolumeClaim from the indexer for a given namespace and name.
    -func (s persistentVolumeClaimNamespaceLister) Get(name string) (*v1.PersistentVolumeClaim, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("persistentvolumeclaim"), name)
    -	}
    -	return obj.(*v1.PersistentVolumeClaim), nil
    +	listers.ResourceIndexer[*corev1.PersistentVolumeClaim]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/pod.go b/vendor/k8s.io/client-go/listers/core/v1/pod.go
    index ab8f0946c3dc..0ea9d678b092 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/pod.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/pod.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PodLister helps list Pods.
    @@ -30,7 +30,7 @@ import (
     type PodLister interface {
     	// List lists all Pods in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Pod, err error)
    +	List(selector labels.Selector) (ret []*corev1.Pod, err error)
     	// Pods returns an object that can list and get Pods.
     	Pods(namespace string) PodNamespaceLister
     	PodListerExpansion
    @@ -38,25 +38,17 @@ type PodLister interface {
     
     // podLister implements the PodLister interface.
     type podLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.Pod]
     }
     
     // NewPodLister returns a new PodLister.
     func NewPodLister(indexer cache.Indexer) PodLister {
    -	return &podLister{indexer: indexer}
    -}
    -
    -// List lists all Pods in the indexer.
    -func (s *podLister) List(selector labels.Selector) (ret []*v1.Pod, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Pod))
    -	})
    -	return ret, err
    +	return &podLister{listers.New[*corev1.Pod](indexer, corev1.Resource("pod"))}
     }
     
     // Pods returns an object that can list and get Pods.
     func (s *podLister) Pods(namespace string) PodNamespaceLister {
    -	return podNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return podNamespaceLister{listers.NewNamespaced[*corev1.Pod](s.ResourceIndexer, namespace)}
     }
     
     // PodNamespaceLister helps list and get Pods.
    @@ -64,36 +56,15 @@ func (s *podLister) Pods(namespace string) PodNamespaceLister {
     type PodNamespaceLister interface {
     	// List lists all Pods in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Pod, err error)
    +	List(selector labels.Selector) (ret []*corev1.Pod, err error)
     	// Get retrieves the Pod from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Pod, error)
    +	Get(name string) (*corev1.Pod, error)
     	PodNamespaceListerExpansion
     }
     
     // podNamespaceLister implements the PodNamespaceLister
     // interface.
     type podNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Pods in the indexer for a given namespace.
    -func (s podNamespaceLister) List(selector labels.Selector) (ret []*v1.Pod, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Pod))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Pod from the indexer for a given namespace and name.
    -func (s podNamespaceLister) Get(name string) (*v1.Pod, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("pod"), name)
    -	}
    -	return obj.(*v1.Pod), nil
    +	listers.ResourceIndexer[*corev1.Pod]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/podtemplate.go b/vendor/k8s.io/client-go/listers/core/v1/podtemplate.go
    index 6c310045b71f..6ee5daf08eb4 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/podtemplate.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/podtemplate.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PodTemplateLister helps list PodTemplates.
    @@ -30,7 +30,7 @@ import (
     type PodTemplateLister interface {
     	// List lists all PodTemplates in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.PodTemplate, err error)
    +	List(selector labels.Selector) (ret []*corev1.PodTemplate, err error)
     	// PodTemplates returns an object that can list and get PodTemplates.
     	PodTemplates(namespace string) PodTemplateNamespaceLister
     	PodTemplateListerExpansion
    @@ -38,25 +38,17 @@ type PodTemplateLister interface {
     
     // podTemplateLister implements the PodTemplateLister interface.
     type podTemplateLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.PodTemplate]
     }
     
     // NewPodTemplateLister returns a new PodTemplateLister.
     func NewPodTemplateLister(indexer cache.Indexer) PodTemplateLister {
    -	return &podTemplateLister{indexer: indexer}
    -}
    -
    -// List lists all PodTemplates in the indexer.
    -func (s *podTemplateLister) List(selector labels.Selector) (ret []*v1.PodTemplate, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.PodTemplate))
    -	})
    -	return ret, err
    +	return &podTemplateLister{listers.New[*corev1.PodTemplate](indexer, corev1.Resource("podtemplate"))}
     }
     
     // PodTemplates returns an object that can list and get PodTemplates.
     func (s *podTemplateLister) PodTemplates(namespace string) PodTemplateNamespaceLister {
    -	return podTemplateNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return podTemplateNamespaceLister{listers.NewNamespaced[*corev1.PodTemplate](s.ResourceIndexer, namespace)}
     }
     
     // PodTemplateNamespaceLister helps list and get PodTemplates.
    @@ -64,36 +56,15 @@ func (s *podTemplateLister) PodTemplates(namespace string) PodTemplateNamespaceL
     type PodTemplateNamespaceLister interface {
     	// List lists all PodTemplates in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.PodTemplate, err error)
    +	List(selector labels.Selector) (ret []*corev1.PodTemplate, err error)
     	// Get retrieves the PodTemplate from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.PodTemplate, error)
    +	Get(name string) (*corev1.PodTemplate, error)
     	PodTemplateNamespaceListerExpansion
     }
     
     // podTemplateNamespaceLister implements the PodTemplateNamespaceLister
     // interface.
     type podTemplateNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all PodTemplates in the indexer for a given namespace.
    -func (s podTemplateNamespaceLister) List(selector labels.Selector) (ret []*v1.PodTemplate, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.PodTemplate))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PodTemplate from the indexer for a given namespace and name.
    -func (s podTemplateNamespaceLister) Get(name string) (*v1.PodTemplate, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("podtemplate"), name)
    -	}
    -	return obj.(*v1.PodTemplate), nil
    +	listers.ResourceIndexer[*corev1.PodTemplate]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go
    index e28e2ef768ea..8d366f7409ff 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ReplicationControllerLister helps list ReplicationControllers.
    @@ -30,7 +30,7 @@ import (
     type ReplicationControllerLister interface {
     	// List lists all ReplicationControllers in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ReplicationController, err error)
    +	List(selector labels.Selector) (ret []*corev1.ReplicationController, err error)
     	// ReplicationControllers returns an object that can list and get ReplicationControllers.
     	ReplicationControllers(namespace string) ReplicationControllerNamespaceLister
     	ReplicationControllerListerExpansion
    @@ -38,25 +38,17 @@ type ReplicationControllerLister interface {
     
     // replicationControllerLister implements the ReplicationControllerLister interface.
     type replicationControllerLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.ReplicationController]
     }
     
     // NewReplicationControllerLister returns a new ReplicationControllerLister.
     func NewReplicationControllerLister(indexer cache.Indexer) ReplicationControllerLister {
    -	return &replicationControllerLister{indexer: indexer}
    -}
    -
    -// List lists all ReplicationControllers in the indexer.
    -func (s *replicationControllerLister) List(selector labels.Selector) (ret []*v1.ReplicationController, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ReplicationController))
    -	})
    -	return ret, err
    +	return &replicationControllerLister{listers.New[*corev1.ReplicationController](indexer, corev1.Resource("replicationcontroller"))}
     }
     
     // ReplicationControllers returns an object that can list and get ReplicationControllers.
     func (s *replicationControllerLister) ReplicationControllers(namespace string) ReplicationControllerNamespaceLister {
    -	return replicationControllerNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return replicationControllerNamespaceLister{listers.NewNamespaced[*corev1.ReplicationController](s.ResourceIndexer, namespace)}
     }
     
     // ReplicationControllerNamespaceLister helps list and get ReplicationControllers.
    @@ -64,36 +56,15 @@ func (s *replicationControllerLister) ReplicationControllers(namespace string) R
     type ReplicationControllerNamespaceLister interface {
     	// List lists all ReplicationControllers in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ReplicationController, err error)
    +	List(selector labels.Selector) (ret []*corev1.ReplicationController, err error)
     	// Get retrieves the ReplicationController from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.ReplicationController, error)
    +	Get(name string) (*corev1.ReplicationController, error)
     	ReplicationControllerNamespaceListerExpansion
     }
     
     // replicationControllerNamespaceLister implements the ReplicationControllerNamespaceLister
     // interface.
     type replicationControllerNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ReplicationControllers in the indexer for a given namespace.
    -func (s replicationControllerNamespaceLister) List(selector labels.Selector) (ret []*v1.ReplicationController, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ReplicationController))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ReplicationController from the indexer for a given namespace and name.
    -func (s replicationControllerNamespaceLister) Get(name string) (*v1.ReplicationController, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("replicationcontroller"), name)
    -	}
    -	return obj.(*v1.ReplicationController), nil
    +	listers.ResourceIndexer[*corev1.ReplicationController]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/resourcequota.go b/vendor/k8s.io/client-go/listers/core/v1/resourcequota.go
    index 9c00b49d4f5e..67dd9a2863c6 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/resourcequota.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/resourcequota.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ResourceQuotaLister helps list ResourceQuotas.
    @@ -30,7 +30,7 @@ import (
     type ResourceQuotaLister interface {
     	// List lists all ResourceQuotas in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ResourceQuota, err error)
    +	List(selector labels.Selector) (ret []*corev1.ResourceQuota, err error)
     	// ResourceQuotas returns an object that can list and get ResourceQuotas.
     	ResourceQuotas(namespace string) ResourceQuotaNamespaceLister
     	ResourceQuotaListerExpansion
    @@ -38,25 +38,17 @@ type ResourceQuotaLister interface {
     
     // resourceQuotaLister implements the ResourceQuotaLister interface.
     type resourceQuotaLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.ResourceQuota]
     }
     
     // NewResourceQuotaLister returns a new ResourceQuotaLister.
     func NewResourceQuotaLister(indexer cache.Indexer) ResourceQuotaLister {
    -	return &resourceQuotaLister{indexer: indexer}
    -}
    -
    -// List lists all ResourceQuotas in the indexer.
    -func (s *resourceQuotaLister) List(selector labels.Selector) (ret []*v1.ResourceQuota, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ResourceQuota))
    -	})
    -	return ret, err
    +	return &resourceQuotaLister{listers.New[*corev1.ResourceQuota](indexer, corev1.Resource("resourcequota"))}
     }
     
     // ResourceQuotas returns an object that can list and get ResourceQuotas.
     func (s *resourceQuotaLister) ResourceQuotas(namespace string) ResourceQuotaNamespaceLister {
    -	return resourceQuotaNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return resourceQuotaNamespaceLister{listers.NewNamespaced[*corev1.ResourceQuota](s.ResourceIndexer, namespace)}
     }
     
     // ResourceQuotaNamespaceLister helps list and get ResourceQuotas.
    @@ -64,36 +56,15 @@ func (s *resourceQuotaLister) ResourceQuotas(namespace string) ResourceQuotaName
     type ResourceQuotaNamespaceLister interface {
     	// List lists all ResourceQuotas in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ResourceQuota, err error)
    +	List(selector labels.Selector) (ret []*corev1.ResourceQuota, err error)
     	// Get retrieves the ResourceQuota from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.ResourceQuota, error)
    +	Get(name string) (*corev1.ResourceQuota, error)
     	ResourceQuotaNamespaceListerExpansion
     }
     
     // resourceQuotaNamespaceLister implements the ResourceQuotaNamespaceLister
     // interface.
     type resourceQuotaNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ResourceQuotas in the indexer for a given namespace.
    -func (s resourceQuotaNamespaceLister) List(selector labels.Selector) (ret []*v1.ResourceQuota, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ResourceQuota))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ResourceQuota from the indexer for a given namespace and name.
    -func (s resourceQuotaNamespaceLister) Get(name string) (*v1.ResourceQuota, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("resourcequota"), name)
    -	}
    -	return obj.(*v1.ResourceQuota), nil
    +	listers.ResourceIndexer[*corev1.ResourceQuota]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/secret.go b/vendor/k8s.io/client-go/listers/core/v1/secret.go
    index d386d4d5cbd3..16a8da382d17 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/secret.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/secret.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // SecretLister helps list Secrets.
    @@ -30,7 +30,7 @@ import (
     type SecretLister interface {
     	// List lists all Secrets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Secret, err error)
    +	List(selector labels.Selector) (ret []*corev1.Secret, err error)
     	// Secrets returns an object that can list and get Secrets.
     	Secrets(namespace string) SecretNamespaceLister
     	SecretListerExpansion
    @@ -38,25 +38,17 @@ type SecretLister interface {
     
     // secretLister implements the SecretLister interface.
     type secretLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.Secret]
     }
     
     // NewSecretLister returns a new SecretLister.
     func NewSecretLister(indexer cache.Indexer) SecretLister {
    -	return &secretLister{indexer: indexer}
    -}
    -
    -// List lists all Secrets in the indexer.
    -func (s *secretLister) List(selector labels.Selector) (ret []*v1.Secret, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Secret))
    -	})
    -	return ret, err
    +	return &secretLister{listers.New[*corev1.Secret](indexer, corev1.Resource("secret"))}
     }
     
     // Secrets returns an object that can list and get Secrets.
     func (s *secretLister) Secrets(namespace string) SecretNamespaceLister {
    -	return secretNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return secretNamespaceLister{listers.NewNamespaced[*corev1.Secret](s.ResourceIndexer, namespace)}
     }
     
     // SecretNamespaceLister helps list and get Secrets.
    @@ -64,36 +56,15 @@ func (s *secretLister) Secrets(namespace string) SecretNamespaceLister {
     type SecretNamespaceLister interface {
     	// List lists all Secrets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Secret, err error)
    +	List(selector labels.Selector) (ret []*corev1.Secret, err error)
     	// Get retrieves the Secret from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Secret, error)
    +	Get(name string) (*corev1.Secret, error)
     	SecretNamespaceListerExpansion
     }
     
     // secretNamespaceLister implements the SecretNamespaceLister
     // interface.
     type secretNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Secrets in the indexer for a given namespace.
    -func (s secretNamespaceLister) List(selector labels.Selector) (ret []*v1.Secret, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Secret))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Secret from the indexer for a given namespace and name.
    -func (s secretNamespaceLister) Get(name string) (*v1.Secret, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("secret"), name)
    -	}
    -	return obj.(*v1.Secret), nil
    +	listers.ResourceIndexer[*corev1.Secret]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/service.go b/vendor/k8s.io/client-go/listers/core/v1/service.go
    index 51026d7b4b60..dcd894031026 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/service.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/service.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ServiceLister helps list Services.
    @@ -30,7 +30,7 @@ import (
     type ServiceLister interface {
     	// List lists all Services in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Service, err error)
    +	List(selector labels.Selector) (ret []*corev1.Service, err error)
     	// Services returns an object that can list and get Services.
     	Services(namespace string) ServiceNamespaceLister
     	ServiceListerExpansion
    @@ -38,25 +38,17 @@ type ServiceLister interface {
     
     // serviceLister implements the ServiceLister interface.
     type serviceLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.Service]
     }
     
     // NewServiceLister returns a new ServiceLister.
     func NewServiceLister(indexer cache.Indexer) ServiceLister {
    -	return &serviceLister{indexer: indexer}
    -}
    -
    -// List lists all Services in the indexer.
    -func (s *serviceLister) List(selector labels.Selector) (ret []*v1.Service, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Service))
    -	})
    -	return ret, err
    +	return &serviceLister{listers.New[*corev1.Service](indexer, corev1.Resource("service"))}
     }
     
     // Services returns an object that can list and get Services.
     func (s *serviceLister) Services(namespace string) ServiceNamespaceLister {
    -	return serviceNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return serviceNamespaceLister{listers.NewNamespaced[*corev1.Service](s.ResourceIndexer, namespace)}
     }
     
     // ServiceNamespaceLister helps list and get Services.
    @@ -64,36 +56,15 @@ func (s *serviceLister) Services(namespace string) ServiceNamespaceLister {
     type ServiceNamespaceLister interface {
     	// List lists all Services in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Service, err error)
    +	List(selector labels.Selector) (ret []*corev1.Service, err error)
     	// Get retrieves the Service from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Service, error)
    +	Get(name string) (*corev1.Service, error)
     	ServiceNamespaceListerExpansion
     }
     
     // serviceNamespaceLister implements the ServiceNamespaceLister
     // interface.
     type serviceNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Services in the indexer for a given namespace.
    -func (s serviceNamespaceLister) List(selector labels.Selector) (ret []*v1.Service, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Service))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Service from the indexer for a given namespace and name.
    -func (s serviceNamespaceLister) Get(name string) (*v1.Service, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("service"), name)
    -	}
    -	return obj.(*v1.Service), nil
    +	listers.ResourceIndexer[*corev1.Service]
     }
    diff --git a/vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go
    index aa9554d8bb57..aaf888a82967 100644
    --- a/vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go
    +++ b/vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/core/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	corev1 "k8s.io/api/core/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ServiceAccountLister helps list ServiceAccounts.
    @@ -30,7 +30,7 @@ import (
     type ServiceAccountLister interface {
     	// List lists all ServiceAccounts in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ServiceAccount, err error)
    +	List(selector labels.Selector) (ret []*corev1.ServiceAccount, err error)
     	// ServiceAccounts returns an object that can list and get ServiceAccounts.
     	ServiceAccounts(namespace string) ServiceAccountNamespaceLister
     	ServiceAccountListerExpansion
    @@ -38,25 +38,17 @@ type ServiceAccountLister interface {
     
     // serviceAccountLister implements the ServiceAccountLister interface.
     type serviceAccountLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*corev1.ServiceAccount]
     }
     
     // NewServiceAccountLister returns a new ServiceAccountLister.
     func NewServiceAccountLister(indexer cache.Indexer) ServiceAccountLister {
    -	return &serviceAccountLister{indexer: indexer}
    -}
    -
    -// List lists all ServiceAccounts in the indexer.
    -func (s *serviceAccountLister) List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ServiceAccount))
    -	})
    -	return ret, err
    +	return &serviceAccountLister{listers.New[*corev1.ServiceAccount](indexer, corev1.Resource("serviceaccount"))}
     }
     
     // ServiceAccounts returns an object that can list and get ServiceAccounts.
     func (s *serviceAccountLister) ServiceAccounts(namespace string) ServiceAccountNamespaceLister {
    -	return serviceAccountNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return serviceAccountNamespaceLister{listers.NewNamespaced[*corev1.ServiceAccount](s.ResourceIndexer, namespace)}
     }
     
     // ServiceAccountNamespaceLister helps list and get ServiceAccounts.
    @@ -64,36 +56,15 @@ func (s *serviceAccountLister) ServiceAccounts(namespace string) ServiceAccountN
     type ServiceAccountNamespaceLister interface {
     	// List lists all ServiceAccounts in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ServiceAccount, err error)
    +	List(selector labels.Selector) (ret []*corev1.ServiceAccount, err error)
     	// Get retrieves the ServiceAccount from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.ServiceAccount, error)
    +	Get(name string) (*corev1.ServiceAccount, error)
     	ServiceAccountNamespaceListerExpansion
     }
     
     // serviceAccountNamespaceLister implements the ServiceAccountNamespaceLister
     // interface.
     type serviceAccountNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ServiceAccounts in the indexer for a given namespace.
    -func (s serviceAccountNamespaceLister) List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ServiceAccount))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ServiceAccount from the indexer for a given namespace and name.
    -func (s serviceAccountNamespaceLister) Get(name string) (*v1.ServiceAccount, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("serviceaccount"), name)
    -	}
    -	return obj.(*v1.ServiceAccount), nil
    +	listers.ResourceIndexer[*corev1.ServiceAccount]
     }
    diff --git a/vendor/k8s.io/client-go/listers/discovery/v1/endpointslice.go b/vendor/k8s.io/client-go/listers/discovery/v1/endpointslice.go
    index 4dd46ff1bf94..0255ef8bb917 100644
    --- a/vendor/k8s.io/client-go/listers/discovery/v1/endpointslice.go
    +++ b/vendor/k8s.io/client-go/listers/discovery/v1/endpointslice.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/discovery/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	discoveryv1 "k8s.io/api/discovery/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // EndpointSliceLister helps list EndpointSlices.
    @@ -30,7 +30,7 @@ import (
     type EndpointSliceLister interface {
     	// List lists all EndpointSlices in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.EndpointSlice, err error)
    +	List(selector labels.Selector) (ret []*discoveryv1.EndpointSlice, err error)
     	// EndpointSlices returns an object that can list and get EndpointSlices.
     	EndpointSlices(namespace string) EndpointSliceNamespaceLister
     	EndpointSliceListerExpansion
    @@ -38,25 +38,17 @@ type EndpointSliceLister interface {
     
     // endpointSliceLister implements the EndpointSliceLister interface.
     type endpointSliceLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*discoveryv1.EndpointSlice]
     }
     
     // NewEndpointSliceLister returns a new EndpointSliceLister.
     func NewEndpointSliceLister(indexer cache.Indexer) EndpointSliceLister {
    -	return &endpointSliceLister{indexer: indexer}
    -}
    -
    -// List lists all EndpointSlices in the indexer.
    -func (s *endpointSliceLister) List(selector labels.Selector) (ret []*v1.EndpointSlice, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.EndpointSlice))
    -	})
    -	return ret, err
    +	return &endpointSliceLister{listers.New[*discoveryv1.EndpointSlice](indexer, discoveryv1.Resource("endpointslice"))}
     }
     
     // EndpointSlices returns an object that can list and get EndpointSlices.
     func (s *endpointSliceLister) EndpointSlices(namespace string) EndpointSliceNamespaceLister {
    -	return endpointSliceNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return endpointSliceNamespaceLister{listers.NewNamespaced[*discoveryv1.EndpointSlice](s.ResourceIndexer, namespace)}
     }
     
     // EndpointSliceNamespaceLister helps list and get EndpointSlices.
    @@ -64,36 +56,15 @@ func (s *endpointSliceLister) EndpointSlices(namespace string) EndpointSliceName
     type EndpointSliceNamespaceLister interface {
     	// List lists all EndpointSlices in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.EndpointSlice, err error)
    +	List(selector labels.Selector) (ret []*discoveryv1.EndpointSlice, err error)
     	// Get retrieves the EndpointSlice from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.EndpointSlice, error)
    +	Get(name string) (*discoveryv1.EndpointSlice, error)
     	EndpointSliceNamespaceListerExpansion
     }
     
     // endpointSliceNamespaceLister implements the EndpointSliceNamespaceLister
     // interface.
     type endpointSliceNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all EndpointSlices in the indexer for a given namespace.
    -func (s endpointSliceNamespaceLister) List(selector labels.Selector) (ret []*v1.EndpointSlice, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.EndpointSlice))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the EndpointSlice from the indexer for a given namespace and name.
    -func (s endpointSliceNamespaceLister) Get(name string) (*v1.EndpointSlice, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("endpointslice"), name)
    -	}
    -	return obj.(*v1.EndpointSlice), nil
    +	listers.ResourceIndexer[*discoveryv1.EndpointSlice]
     }
    diff --git a/vendor/k8s.io/client-go/listers/discovery/v1beta1/endpointslice.go b/vendor/k8s.io/client-go/listers/discovery/v1beta1/endpointslice.go
    index e92872d5f457..2fb6f0549aef 100644
    --- a/vendor/k8s.io/client-go/listers/discovery/v1beta1/endpointslice.go
    +++ b/vendor/k8s.io/client-go/listers/discovery/v1beta1/endpointslice.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/discovery/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	discoveryv1beta1 "k8s.io/api/discovery/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // EndpointSliceLister helps list EndpointSlices.
    @@ -30,7 +30,7 @@ import (
     type EndpointSliceLister interface {
     	// List lists all EndpointSlices in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.EndpointSlice, err error)
    +	List(selector labels.Selector) (ret []*discoveryv1beta1.EndpointSlice, err error)
     	// EndpointSlices returns an object that can list and get EndpointSlices.
     	EndpointSlices(namespace string) EndpointSliceNamespaceLister
     	EndpointSliceListerExpansion
    @@ -38,25 +38,17 @@ type EndpointSliceLister interface {
     
     // endpointSliceLister implements the EndpointSliceLister interface.
     type endpointSliceLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*discoveryv1beta1.EndpointSlice]
     }
     
     // NewEndpointSliceLister returns a new EndpointSliceLister.
     func NewEndpointSliceLister(indexer cache.Indexer) EndpointSliceLister {
    -	return &endpointSliceLister{indexer: indexer}
    -}
    -
    -// List lists all EndpointSlices in the indexer.
    -func (s *endpointSliceLister) List(selector labels.Selector) (ret []*v1beta1.EndpointSlice, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.EndpointSlice))
    -	})
    -	return ret, err
    +	return &endpointSliceLister{listers.New[*discoveryv1beta1.EndpointSlice](indexer, discoveryv1beta1.Resource("endpointslice"))}
     }
     
     // EndpointSlices returns an object that can list and get EndpointSlices.
     func (s *endpointSliceLister) EndpointSlices(namespace string) EndpointSliceNamespaceLister {
    -	return endpointSliceNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return endpointSliceNamespaceLister{listers.NewNamespaced[*discoveryv1beta1.EndpointSlice](s.ResourceIndexer, namespace)}
     }
     
     // EndpointSliceNamespaceLister helps list and get EndpointSlices.
    @@ -64,36 +56,15 @@ func (s *endpointSliceLister) EndpointSlices(namespace string) EndpointSliceName
     type EndpointSliceNamespaceLister interface {
     	// List lists all EndpointSlices in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.EndpointSlice, err error)
    +	List(selector labels.Selector) (ret []*discoveryv1beta1.EndpointSlice, err error)
     	// Get retrieves the EndpointSlice from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.EndpointSlice, error)
    +	Get(name string) (*discoveryv1beta1.EndpointSlice, error)
     	EndpointSliceNamespaceListerExpansion
     }
     
     // endpointSliceNamespaceLister implements the EndpointSliceNamespaceLister
     // interface.
     type endpointSliceNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all EndpointSlices in the indexer for a given namespace.
    -func (s endpointSliceNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.EndpointSlice, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.EndpointSlice))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the EndpointSlice from the indexer for a given namespace and name.
    -func (s endpointSliceNamespaceLister) Get(name string) (*v1beta1.EndpointSlice, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("endpointslice"), name)
    -	}
    -	return obj.(*v1beta1.EndpointSlice), nil
    +	listers.ResourceIndexer[*discoveryv1beta1.EndpointSlice]
     }
    diff --git a/vendor/k8s.io/client-go/listers/doc.go b/vendor/k8s.io/client-go/listers/doc.go
    new file mode 100644
    index 000000000000..96c330c93116
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/doc.go
    @@ -0,0 +1,18 @@
    +/*
    +Copyright 2023 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Package listers provides generated listers for Kubernetes APIs.
    +package listers // import "k8s.io/client-go/listers"
    diff --git a/vendor/k8s.io/client-go/listers/events/v1/event.go b/vendor/k8s.io/client-go/listers/events/v1/event.go
    index 4abe841e2653..9ea5bbaf8cdb 100644
    --- a/vendor/k8s.io/client-go/listers/events/v1/event.go
    +++ b/vendor/k8s.io/client-go/listers/events/v1/event.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/events/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	eventsv1 "k8s.io/api/events/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // EventLister helps list Events.
    @@ -30,7 +30,7 @@ import (
     type EventLister interface {
     	// List lists all Events in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Event, err error)
    +	List(selector labels.Selector) (ret []*eventsv1.Event, err error)
     	// Events returns an object that can list and get Events.
     	Events(namespace string) EventNamespaceLister
     	EventListerExpansion
    @@ -38,25 +38,17 @@ type EventLister interface {
     
     // eventLister implements the EventLister interface.
     type eventLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*eventsv1.Event]
     }
     
     // NewEventLister returns a new EventLister.
     func NewEventLister(indexer cache.Indexer) EventLister {
    -	return &eventLister{indexer: indexer}
    -}
    -
    -// List lists all Events in the indexer.
    -func (s *eventLister) List(selector labels.Selector) (ret []*v1.Event, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Event))
    -	})
    -	return ret, err
    +	return &eventLister{listers.New[*eventsv1.Event](indexer, eventsv1.Resource("event"))}
     }
     
     // Events returns an object that can list and get Events.
     func (s *eventLister) Events(namespace string) EventNamespaceLister {
    -	return eventNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return eventNamespaceLister{listers.NewNamespaced[*eventsv1.Event](s.ResourceIndexer, namespace)}
     }
     
     // EventNamespaceLister helps list and get Events.
    @@ -64,36 +56,15 @@ func (s *eventLister) Events(namespace string) EventNamespaceLister {
     type EventNamespaceLister interface {
     	// List lists all Events in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Event, err error)
    +	List(selector labels.Selector) (ret []*eventsv1.Event, err error)
     	// Get retrieves the Event from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Event, error)
    +	Get(name string) (*eventsv1.Event, error)
     	EventNamespaceListerExpansion
     }
     
     // eventNamespaceLister implements the EventNamespaceLister
     // interface.
     type eventNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Events in the indexer for a given namespace.
    -func (s eventNamespaceLister) List(selector labels.Selector) (ret []*v1.Event, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Event))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Event from the indexer for a given namespace and name.
    -func (s eventNamespaceLister) Get(name string) (*v1.Event, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("event"), name)
    -	}
    -	return obj.(*v1.Event), nil
    +	listers.ResourceIndexer[*eventsv1.Event]
     }
    diff --git a/vendor/k8s.io/client-go/listers/events/v1beta1/event.go b/vendor/k8s.io/client-go/listers/events/v1beta1/event.go
    index 41a521be6f4f..24fc96261efd 100644
    --- a/vendor/k8s.io/client-go/listers/events/v1beta1/event.go
    +++ b/vendor/k8s.io/client-go/listers/events/v1beta1/event.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/events/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	eventsv1beta1 "k8s.io/api/events/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // EventLister helps list Events.
    @@ -30,7 +30,7 @@ import (
     type EventLister interface {
     	// List lists all Events in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Event, err error)
    +	List(selector labels.Selector) (ret []*eventsv1beta1.Event, err error)
     	// Events returns an object that can list and get Events.
     	Events(namespace string) EventNamespaceLister
     	EventListerExpansion
    @@ -38,25 +38,17 @@ type EventLister interface {
     
     // eventLister implements the EventLister interface.
     type eventLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*eventsv1beta1.Event]
     }
     
     // NewEventLister returns a new EventLister.
     func NewEventLister(indexer cache.Indexer) EventLister {
    -	return &eventLister{indexer: indexer}
    -}
    -
    -// List lists all Events in the indexer.
    -func (s *eventLister) List(selector labels.Selector) (ret []*v1beta1.Event, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Event))
    -	})
    -	return ret, err
    +	return &eventLister{listers.New[*eventsv1beta1.Event](indexer, eventsv1beta1.Resource("event"))}
     }
     
     // Events returns an object that can list and get Events.
     func (s *eventLister) Events(namespace string) EventNamespaceLister {
    -	return eventNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return eventNamespaceLister{listers.NewNamespaced[*eventsv1beta1.Event](s.ResourceIndexer, namespace)}
     }
     
     // EventNamespaceLister helps list and get Events.
    @@ -64,36 +56,15 @@ func (s *eventLister) Events(namespace string) EventNamespaceLister {
     type EventNamespaceLister interface {
     	// List lists all Events in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Event, err error)
    +	List(selector labels.Selector) (ret []*eventsv1beta1.Event, err error)
     	// Get retrieves the Event from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.Event, error)
    +	Get(name string) (*eventsv1beta1.Event, error)
     	EventNamespaceListerExpansion
     }
     
     // eventNamespaceLister implements the EventNamespaceLister
     // interface.
     type eventNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Events in the indexer for a given namespace.
    -func (s eventNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Event, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Event))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Event from the indexer for a given namespace and name.
    -func (s eventNamespaceLister) Get(name string) (*v1beta1.Event, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("event"), name)
    -	}
    -	return obj.(*v1beta1.Event), nil
    +	listers.ResourceIndexer[*eventsv1beta1.Event]
     }
    diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go
    index 900475410b50..c785760888d8 100644
    --- a/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go
    +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // DaemonSetLister helps list DaemonSets.
    @@ -30,7 +30,7 @@ import (
     type DaemonSetLister interface {
     	// List lists all DaemonSets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.DaemonSet, err error)
    +	List(selector labels.Selector) (ret []*extensionsv1beta1.DaemonSet, err error)
     	// DaemonSets returns an object that can list and get DaemonSets.
     	DaemonSets(namespace string) DaemonSetNamespaceLister
     	DaemonSetListerExpansion
    @@ -38,25 +38,17 @@ type DaemonSetLister interface {
     
     // daemonSetLister implements the DaemonSetLister interface.
     type daemonSetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*extensionsv1beta1.DaemonSet]
     }
     
     // NewDaemonSetLister returns a new DaemonSetLister.
     func NewDaemonSetLister(indexer cache.Indexer) DaemonSetLister {
    -	return &daemonSetLister{indexer: indexer}
    -}
    -
    -// List lists all DaemonSets in the indexer.
    -func (s *daemonSetLister) List(selector labels.Selector) (ret []*v1beta1.DaemonSet, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.DaemonSet))
    -	})
    -	return ret, err
    +	return &daemonSetLister{listers.New[*extensionsv1beta1.DaemonSet](indexer, extensionsv1beta1.Resource("daemonset"))}
     }
     
     // DaemonSets returns an object that can list and get DaemonSets.
     func (s *daemonSetLister) DaemonSets(namespace string) DaemonSetNamespaceLister {
    -	return daemonSetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return daemonSetNamespaceLister{listers.NewNamespaced[*extensionsv1beta1.DaemonSet](s.ResourceIndexer, namespace)}
     }
     
     // DaemonSetNamespaceLister helps list and get DaemonSets.
    @@ -64,36 +56,15 @@ func (s *daemonSetLister) DaemonSets(namespace string) DaemonSetNamespaceLister
     type DaemonSetNamespaceLister interface {
     	// List lists all DaemonSets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.DaemonSet, err error)
    +	List(selector labels.Selector) (ret []*extensionsv1beta1.DaemonSet, err error)
     	// Get retrieves the DaemonSet from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.DaemonSet, error)
    +	Get(name string) (*extensionsv1beta1.DaemonSet, error)
     	DaemonSetNamespaceListerExpansion
     }
     
     // daemonSetNamespaceLister implements the DaemonSetNamespaceLister
     // interface.
     type daemonSetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all DaemonSets in the indexer for a given namespace.
    -func (s daemonSetNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.DaemonSet, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.DaemonSet))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the DaemonSet from the indexer for a given namespace and name.
    -func (s daemonSetNamespaceLister) Get(name string) (*v1beta1.DaemonSet, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("daemonset"), name)
    -	}
    -	return obj.(*v1beta1.DaemonSet), nil
    +	listers.ResourceIndexer[*extensionsv1beta1.DaemonSet]
     }
    diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go
    index 42b5a07231bc..efaea3991bc8 100644
    --- a/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go
    +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // DeploymentLister helps list Deployments.
    @@ -30,7 +30,7 @@ import (
     type DeploymentLister interface {
     	// List lists all Deployments in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Deployment, err error)
    +	List(selector labels.Selector) (ret []*extensionsv1beta1.Deployment, err error)
     	// Deployments returns an object that can list and get Deployments.
     	Deployments(namespace string) DeploymentNamespaceLister
     	DeploymentListerExpansion
    @@ -38,25 +38,17 @@ type DeploymentLister interface {
     
     // deploymentLister implements the DeploymentLister interface.
     type deploymentLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*extensionsv1beta1.Deployment]
     }
     
     // NewDeploymentLister returns a new DeploymentLister.
     func NewDeploymentLister(indexer cache.Indexer) DeploymentLister {
    -	return &deploymentLister{indexer: indexer}
    -}
    -
    -// List lists all Deployments in the indexer.
    -func (s *deploymentLister) List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Deployment))
    -	})
    -	return ret, err
    +	return &deploymentLister{listers.New[*extensionsv1beta1.Deployment](indexer, extensionsv1beta1.Resource("deployment"))}
     }
     
     // Deployments returns an object that can list and get Deployments.
     func (s *deploymentLister) Deployments(namespace string) DeploymentNamespaceLister {
    -	return deploymentNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return deploymentNamespaceLister{listers.NewNamespaced[*extensionsv1beta1.Deployment](s.ResourceIndexer, namespace)}
     }
     
     // DeploymentNamespaceLister helps list and get Deployments.
    @@ -64,36 +56,15 @@ func (s *deploymentLister) Deployments(namespace string) DeploymentNamespaceList
     type DeploymentNamespaceLister interface {
     	// List lists all Deployments in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Deployment, err error)
    +	List(selector labels.Selector) (ret []*extensionsv1beta1.Deployment, err error)
     	// Get retrieves the Deployment from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.Deployment, error)
    +	Get(name string) (*extensionsv1beta1.Deployment, error)
     	DeploymentNamespaceListerExpansion
     }
     
     // deploymentNamespaceLister implements the DeploymentNamespaceLister
     // interface.
     type deploymentNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Deployments in the indexer for a given namespace.
    -func (s deploymentNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Deployment))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Deployment from the indexer for a given namespace and name.
    -func (s deploymentNamespaceLister) Get(name string) (*v1beta1.Deployment, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("deployment"), name)
    -	}
    -	return obj.(*v1beta1.Deployment), nil
    +	listers.ResourceIndexer[*extensionsv1beta1.Deployment]
     }
    diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go
    index 1cb7677bd80c..929a13faa665 100644
    --- a/vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go
    +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // IngressLister helps list Ingresses.
    @@ -30,7 +30,7 @@ import (
     type IngressLister interface {
     	// List lists all Ingresses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Ingress, err error)
    +	List(selector labels.Selector) (ret []*extensionsv1beta1.Ingress, err error)
     	// Ingresses returns an object that can list and get Ingresses.
     	Ingresses(namespace string) IngressNamespaceLister
     	IngressListerExpansion
    @@ -38,25 +38,17 @@ type IngressLister interface {
     
     // ingressLister implements the IngressLister interface.
     type ingressLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*extensionsv1beta1.Ingress]
     }
     
     // NewIngressLister returns a new IngressLister.
     func NewIngressLister(indexer cache.Indexer) IngressLister {
    -	return &ingressLister{indexer: indexer}
    -}
    -
    -// List lists all Ingresses in the indexer.
    -func (s *ingressLister) List(selector labels.Selector) (ret []*v1beta1.Ingress, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Ingress))
    -	})
    -	return ret, err
    +	return &ingressLister{listers.New[*extensionsv1beta1.Ingress](indexer, extensionsv1beta1.Resource("ingress"))}
     }
     
     // Ingresses returns an object that can list and get Ingresses.
     func (s *ingressLister) Ingresses(namespace string) IngressNamespaceLister {
    -	return ingressNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return ingressNamespaceLister{listers.NewNamespaced[*extensionsv1beta1.Ingress](s.ResourceIndexer, namespace)}
     }
     
     // IngressNamespaceLister helps list and get Ingresses.
    @@ -64,36 +56,15 @@ func (s *ingressLister) Ingresses(namespace string) IngressNamespaceLister {
     type IngressNamespaceLister interface {
     	// List lists all Ingresses in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Ingress, err error)
    +	List(selector labels.Selector) (ret []*extensionsv1beta1.Ingress, err error)
     	// Get retrieves the Ingress from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.Ingress, error)
    +	Get(name string) (*extensionsv1beta1.Ingress, error)
     	IngressNamespaceListerExpansion
     }
     
     // ingressNamespaceLister implements the IngressNamespaceLister
     // interface.
     type ingressNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Ingresses in the indexer for a given namespace.
    -func (s ingressNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Ingress, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Ingress))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Ingress from the indexer for a given namespace and name.
    -func (s ingressNamespaceLister) Get(name string) (*v1beta1.Ingress, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("ingress"), name)
    -	}
    -	return obj.(*v1beta1.Ingress), nil
    +	listers.ResourceIndexer[*extensionsv1beta1.Ingress]
     }
    diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/networkpolicy.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/networkpolicy.go
    index 84419a8e9664..ee88fd974c9f 100644
    --- a/vendor/k8s.io/client-go/listers/extensions/v1beta1/networkpolicy.go
    +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/networkpolicy.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // NetworkPolicyLister helps list NetworkPolicies.
    @@ -30,7 +30,7 @@ import (
     type NetworkPolicyLister interface {
     	// List lists all NetworkPolicies in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.NetworkPolicy, err error)
    +	List(selector labels.Selector) (ret []*extensionsv1beta1.NetworkPolicy, err error)
     	// NetworkPolicies returns an object that can list and get NetworkPolicies.
     	NetworkPolicies(namespace string) NetworkPolicyNamespaceLister
     	NetworkPolicyListerExpansion
    @@ -38,25 +38,17 @@ type NetworkPolicyLister interface {
     
     // networkPolicyLister implements the NetworkPolicyLister interface.
     type networkPolicyLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*extensionsv1beta1.NetworkPolicy]
     }
     
     // NewNetworkPolicyLister returns a new NetworkPolicyLister.
     func NewNetworkPolicyLister(indexer cache.Indexer) NetworkPolicyLister {
    -	return &networkPolicyLister{indexer: indexer}
    -}
    -
    -// List lists all NetworkPolicies in the indexer.
    -func (s *networkPolicyLister) List(selector labels.Selector) (ret []*v1beta1.NetworkPolicy, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.NetworkPolicy))
    -	})
    -	return ret, err
    +	return &networkPolicyLister{listers.New[*extensionsv1beta1.NetworkPolicy](indexer, extensionsv1beta1.Resource("networkpolicy"))}
     }
     
     // NetworkPolicies returns an object that can list and get NetworkPolicies.
     func (s *networkPolicyLister) NetworkPolicies(namespace string) NetworkPolicyNamespaceLister {
    -	return networkPolicyNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return networkPolicyNamespaceLister{listers.NewNamespaced[*extensionsv1beta1.NetworkPolicy](s.ResourceIndexer, namespace)}
     }
     
     // NetworkPolicyNamespaceLister helps list and get NetworkPolicies.
    @@ -64,36 +56,15 @@ func (s *networkPolicyLister) NetworkPolicies(namespace string) NetworkPolicyNam
     type NetworkPolicyNamespaceLister interface {
     	// List lists all NetworkPolicies in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.NetworkPolicy, err error)
    +	List(selector labels.Selector) (ret []*extensionsv1beta1.NetworkPolicy, err error)
     	// Get retrieves the NetworkPolicy from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.NetworkPolicy, error)
    +	Get(name string) (*extensionsv1beta1.NetworkPolicy, error)
     	NetworkPolicyNamespaceListerExpansion
     }
     
     // networkPolicyNamespaceLister implements the NetworkPolicyNamespaceLister
     // interface.
     type networkPolicyNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all NetworkPolicies in the indexer for a given namespace.
    -func (s networkPolicyNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.NetworkPolicy, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.NetworkPolicy))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the NetworkPolicy from the indexer for a given namespace and name.
    -func (s networkPolicyNamespaceLister) Get(name string) (*v1beta1.NetworkPolicy, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("networkpolicy"), name)
    -	}
    -	return obj.(*v1beta1.NetworkPolicy), nil
    +	listers.ResourceIndexer[*extensionsv1beta1.NetworkPolicy]
     }
    diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go
    index a5ec3229bc34..853cc2bcda75 100644
    --- a/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go
    +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/extensions/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ReplicaSetLister helps list ReplicaSets.
    @@ -30,7 +30,7 @@ import (
     type ReplicaSetLister interface {
     	// List lists all ReplicaSets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.ReplicaSet, err error)
    +	List(selector labels.Selector) (ret []*extensionsv1beta1.ReplicaSet, err error)
     	// ReplicaSets returns an object that can list and get ReplicaSets.
     	ReplicaSets(namespace string) ReplicaSetNamespaceLister
     	ReplicaSetListerExpansion
    @@ -38,25 +38,17 @@ type ReplicaSetLister interface {
     
     // replicaSetLister implements the ReplicaSetLister interface.
     type replicaSetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*extensionsv1beta1.ReplicaSet]
     }
     
     // NewReplicaSetLister returns a new ReplicaSetLister.
     func NewReplicaSetLister(indexer cache.Indexer) ReplicaSetLister {
    -	return &replicaSetLister{indexer: indexer}
    -}
    -
    -// List lists all ReplicaSets in the indexer.
    -func (s *replicaSetLister) List(selector labels.Selector) (ret []*v1beta1.ReplicaSet, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.ReplicaSet))
    -	})
    -	return ret, err
    +	return &replicaSetLister{listers.New[*extensionsv1beta1.ReplicaSet](indexer, extensionsv1beta1.Resource("replicaset"))}
     }
     
     // ReplicaSets returns an object that can list and get ReplicaSets.
     func (s *replicaSetLister) ReplicaSets(namespace string) ReplicaSetNamespaceLister {
    -	return replicaSetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return replicaSetNamespaceLister{listers.NewNamespaced[*extensionsv1beta1.ReplicaSet](s.ResourceIndexer, namespace)}
     }
     
     // ReplicaSetNamespaceLister helps list and get ReplicaSets.
    @@ -64,36 +56,15 @@ func (s *replicaSetLister) ReplicaSets(namespace string) ReplicaSetNamespaceList
     type ReplicaSetNamespaceLister interface {
     	// List lists all ReplicaSets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.ReplicaSet, err error)
    +	List(selector labels.Selector) (ret []*extensionsv1beta1.ReplicaSet, err error)
     	// Get retrieves the ReplicaSet from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.ReplicaSet, error)
    +	Get(name string) (*extensionsv1beta1.ReplicaSet, error)
     	ReplicaSetNamespaceListerExpansion
     }
     
     // replicaSetNamespaceLister implements the ReplicaSetNamespaceLister
     // interface.
     type replicaSetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ReplicaSets in the indexer for a given namespace.
    -func (s replicaSetNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.ReplicaSet, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.ReplicaSet))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ReplicaSet from the indexer for a given namespace and name.
    -func (s replicaSetNamespaceLister) Get(name string) (*v1beta1.ReplicaSet, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("replicaset"), name)
    -	}
    -	return obj.(*v1beta1.ReplicaSet), nil
    +	listers.ResourceIndexer[*extensionsv1beta1.ReplicaSet]
     }
    diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1/flowschema.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1/flowschema.go
    index 43ccd4e5ff98..cccb3022bcb8 100644
    --- a/vendor/k8s.io/client-go/listers/flowcontrol/v1/flowschema.go
    +++ b/vendor/k8s.io/client-go/listers/flowcontrol/v1/flowschema.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/flowcontrol/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // FlowSchemaLister helps list FlowSchemas.
    @@ -30,39 +30,19 @@ import (
     type FlowSchemaLister interface {
     	// List lists all FlowSchemas in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.FlowSchema, err error)
    +	List(selector labels.Selector) (ret []*flowcontrolv1.FlowSchema, err error)
     	// Get retrieves the FlowSchema from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.FlowSchema, error)
    +	Get(name string) (*flowcontrolv1.FlowSchema, error)
     	FlowSchemaListerExpansion
     }
     
     // flowSchemaLister implements the FlowSchemaLister interface.
     type flowSchemaLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*flowcontrolv1.FlowSchema]
     }
     
     // NewFlowSchemaLister returns a new FlowSchemaLister.
     func NewFlowSchemaLister(indexer cache.Indexer) FlowSchemaLister {
    -	return &flowSchemaLister{indexer: indexer}
    -}
    -
    -// List lists all FlowSchemas in the indexer.
    -func (s *flowSchemaLister) List(selector labels.Selector) (ret []*v1.FlowSchema, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.FlowSchema))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the FlowSchema from the index for a given name.
    -func (s *flowSchemaLister) Get(name string) (*v1.FlowSchema, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("flowschema"), name)
    -	}
    -	return obj.(*v1.FlowSchema), nil
    +	return &flowSchemaLister{listers.New[*flowcontrolv1.FlowSchema](indexer, flowcontrolv1.Resource("flowschema"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1/prioritylevelconfiguration.go
    index 61189b9cf98b..cc8db4a4694c 100644
    --- a/vendor/k8s.io/client-go/listers/flowcontrol/v1/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/listers/flowcontrol/v1/prioritylevelconfiguration.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/flowcontrol/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	flowcontrolv1 "k8s.io/api/flowcontrol/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PriorityLevelConfigurationLister helps list PriorityLevelConfigurations.
    @@ -30,39 +30,19 @@ import (
     type PriorityLevelConfigurationLister interface {
     	// List lists all PriorityLevelConfigurations in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.PriorityLevelConfiguration, err error)
    +	List(selector labels.Selector) (ret []*flowcontrolv1.PriorityLevelConfiguration, err error)
     	// Get retrieves the PriorityLevelConfiguration from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.PriorityLevelConfiguration, error)
    +	Get(name string) (*flowcontrolv1.PriorityLevelConfiguration, error)
     	PriorityLevelConfigurationListerExpansion
     }
     
     // priorityLevelConfigurationLister implements the PriorityLevelConfigurationLister interface.
     type priorityLevelConfigurationLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*flowcontrolv1.PriorityLevelConfiguration]
     }
     
     // NewPriorityLevelConfigurationLister returns a new PriorityLevelConfigurationLister.
     func NewPriorityLevelConfigurationLister(indexer cache.Indexer) PriorityLevelConfigurationLister {
    -	return &priorityLevelConfigurationLister{indexer: indexer}
    -}
    -
    -// List lists all PriorityLevelConfigurations in the indexer.
    -func (s *priorityLevelConfigurationLister) List(selector labels.Selector) (ret []*v1.PriorityLevelConfiguration, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.PriorityLevelConfiguration))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PriorityLevelConfiguration from the index for a given name.
    -func (s *priorityLevelConfigurationLister) Get(name string) (*v1.PriorityLevelConfiguration, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("prioritylevelconfiguration"), name)
    -	}
    -	return obj.(*v1.PriorityLevelConfiguration), nil
    +	return &priorityLevelConfigurationLister{listers.New[*flowcontrolv1.PriorityLevelConfiguration](indexer, flowcontrolv1.Resource("prioritylevelconfiguration"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/flowschema.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/flowschema.go
    index 7927a8411eed..b85907d03228 100644
    --- a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/flowschema.go
    +++ b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/flowschema.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // FlowSchemaLister helps list FlowSchemas.
    @@ -30,39 +30,19 @@ import (
     type FlowSchemaLister interface {
     	// List lists all FlowSchemas in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.FlowSchema, err error)
    +	List(selector labels.Selector) (ret []*flowcontrolv1beta1.FlowSchema, err error)
     	// Get retrieves the FlowSchema from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.FlowSchema, error)
    +	Get(name string) (*flowcontrolv1beta1.FlowSchema, error)
     	FlowSchemaListerExpansion
     }
     
     // flowSchemaLister implements the FlowSchemaLister interface.
     type flowSchemaLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*flowcontrolv1beta1.FlowSchema]
     }
     
     // NewFlowSchemaLister returns a new FlowSchemaLister.
     func NewFlowSchemaLister(indexer cache.Indexer) FlowSchemaLister {
    -	return &flowSchemaLister{indexer: indexer}
    -}
    -
    -// List lists all FlowSchemas in the indexer.
    -func (s *flowSchemaLister) List(selector labels.Selector) (ret []*v1beta1.FlowSchema, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.FlowSchema))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the FlowSchema from the index for a given name.
    -func (s *flowSchemaLister) Get(name string) (*v1beta1.FlowSchema, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("flowschema"), name)
    -	}
    -	return obj.(*v1beta1.FlowSchema), nil
    +	return &flowSchemaLister{listers.New[*flowcontrolv1beta1.FlowSchema](indexer, flowcontrolv1beta1.Resource("flowschema"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/prioritylevelconfiguration.go
    index c94aaa4c1d11..338aef8e215d 100644
    --- a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/prioritylevelconfiguration.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/flowcontrol/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PriorityLevelConfigurationLister helps list PriorityLevelConfigurations.
    @@ -30,39 +30,19 @@ import (
     type PriorityLevelConfigurationLister interface {
     	// List lists all PriorityLevelConfigurations in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.PriorityLevelConfiguration, err error)
    +	List(selector labels.Selector) (ret []*flowcontrolv1beta1.PriorityLevelConfiguration, err error)
     	// Get retrieves the PriorityLevelConfiguration from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.PriorityLevelConfiguration, error)
    +	Get(name string) (*flowcontrolv1beta1.PriorityLevelConfiguration, error)
     	PriorityLevelConfigurationListerExpansion
     }
     
     // priorityLevelConfigurationLister implements the PriorityLevelConfigurationLister interface.
     type priorityLevelConfigurationLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*flowcontrolv1beta1.PriorityLevelConfiguration]
     }
     
     // NewPriorityLevelConfigurationLister returns a new PriorityLevelConfigurationLister.
     func NewPriorityLevelConfigurationLister(indexer cache.Indexer) PriorityLevelConfigurationLister {
    -	return &priorityLevelConfigurationLister{indexer: indexer}
    -}
    -
    -// List lists all PriorityLevelConfigurations in the indexer.
    -func (s *priorityLevelConfigurationLister) List(selector labels.Selector) (ret []*v1beta1.PriorityLevelConfiguration, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.PriorityLevelConfiguration))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PriorityLevelConfiguration from the index for a given name.
    -func (s *priorityLevelConfigurationLister) Get(name string) (*v1beta1.PriorityLevelConfiguration, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("prioritylevelconfiguration"), name)
    -	}
    -	return obj.(*v1beta1.PriorityLevelConfiguration), nil
    +	return &priorityLevelConfigurationLister{listers.New[*flowcontrolv1beta1.PriorityLevelConfiguration](indexer, flowcontrolv1beta1.Resource("prioritylevelconfiguration"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta2/flowschema.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta2/flowschema.go
    index 2710f2630602..5894a5a2923f 100644
    --- a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta2/flowschema.go
    +++ b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta2/flowschema.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // FlowSchemaLister helps list FlowSchemas.
    @@ -30,39 +30,19 @@ import (
     type FlowSchemaLister interface {
     	// List lists all FlowSchemas in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.FlowSchema, err error)
    +	List(selector labels.Selector) (ret []*flowcontrolv1beta2.FlowSchema, err error)
     	// Get retrieves the FlowSchema from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta2.FlowSchema, error)
    +	Get(name string) (*flowcontrolv1beta2.FlowSchema, error)
     	FlowSchemaListerExpansion
     }
     
     // flowSchemaLister implements the FlowSchemaLister interface.
     type flowSchemaLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*flowcontrolv1beta2.FlowSchema]
     }
     
     // NewFlowSchemaLister returns a new FlowSchemaLister.
     func NewFlowSchemaLister(indexer cache.Indexer) FlowSchemaLister {
    -	return &flowSchemaLister{indexer: indexer}
    -}
    -
    -// List lists all FlowSchemas in the indexer.
    -func (s *flowSchemaLister) List(selector labels.Selector) (ret []*v1beta2.FlowSchema, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.FlowSchema))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the FlowSchema from the index for a given name.
    -func (s *flowSchemaLister) Get(name string) (*v1beta2.FlowSchema, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta2.Resource("flowschema"), name)
    -	}
    -	return obj.(*v1beta2.FlowSchema), nil
    +	return &flowSchemaLister{listers.New[*flowcontrolv1beta2.FlowSchema](indexer, flowcontrolv1beta2.Resource("flowschema"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta2/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta2/prioritylevelconfiguration.go
    index 00ede00709a8..1236cb384729 100644
    --- a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta2/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta2/prioritylevelconfiguration.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta2
     
     import (
    -	v1beta2 "k8s.io/api/flowcontrol/v1beta2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PriorityLevelConfigurationLister helps list PriorityLevelConfigurations.
    @@ -30,39 +30,19 @@ import (
     type PriorityLevelConfigurationLister interface {
     	// List lists all PriorityLevelConfigurations in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta2.PriorityLevelConfiguration, err error)
    +	List(selector labels.Selector) (ret []*flowcontrolv1beta2.PriorityLevelConfiguration, err error)
     	// Get retrieves the PriorityLevelConfiguration from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta2.PriorityLevelConfiguration, error)
    +	Get(name string) (*flowcontrolv1beta2.PriorityLevelConfiguration, error)
     	PriorityLevelConfigurationListerExpansion
     }
     
     // priorityLevelConfigurationLister implements the PriorityLevelConfigurationLister interface.
     type priorityLevelConfigurationLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*flowcontrolv1beta2.PriorityLevelConfiguration]
     }
     
     // NewPriorityLevelConfigurationLister returns a new PriorityLevelConfigurationLister.
     func NewPriorityLevelConfigurationLister(indexer cache.Indexer) PriorityLevelConfigurationLister {
    -	return &priorityLevelConfigurationLister{indexer: indexer}
    -}
    -
    -// List lists all PriorityLevelConfigurations in the indexer.
    -func (s *priorityLevelConfigurationLister) List(selector labels.Selector) (ret []*v1beta2.PriorityLevelConfiguration, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta2.PriorityLevelConfiguration))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PriorityLevelConfiguration from the index for a given name.
    -func (s *priorityLevelConfigurationLister) Get(name string) (*v1beta2.PriorityLevelConfiguration, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta2.Resource("prioritylevelconfiguration"), name)
    -	}
    -	return obj.(*v1beta2.PriorityLevelConfiguration), nil
    +	return &priorityLevelConfigurationLister{listers.New[*flowcontrolv1beta2.PriorityLevelConfiguration](indexer, flowcontrolv1beta2.Resource("prioritylevelconfiguration"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta3/flowschema.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta3/flowschema.go
    index ef01b5a76eb3..5f127d84b385 100644
    --- a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta3/flowschema.go
    +++ b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta3/flowschema.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta3
     
     import (
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // FlowSchemaLister helps list FlowSchemas.
    @@ -30,39 +30,19 @@ import (
     type FlowSchemaLister interface {
     	// List lists all FlowSchemas in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta3.FlowSchema, err error)
    +	List(selector labels.Selector) (ret []*flowcontrolv1beta3.FlowSchema, err error)
     	// Get retrieves the FlowSchema from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta3.FlowSchema, error)
    +	Get(name string) (*flowcontrolv1beta3.FlowSchema, error)
     	FlowSchemaListerExpansion
     }
     
     // flowSchemaLister implements the FlowSchemaLister interface.
     type flowSchemaLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*flowcontrolv1beta3.FlowSchema]
     }
     
     // NewFlowSchemaLister returns a new FlowSchemaLister.
     func NewFlowSchemaLister(indexer cache.Indexer) FlowSchemaLister {
    -	return &flowSchemaLister{indexer: indexer}
    -}
    -
    -// List lists all FlowSchemas in the indexer.
    -func (s *flowSchemaLister) List(selector labels.Selector) (ret []*v1beta3.FlowSchema, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta3.FlowSchema))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the FlowSchema from the index for a given name.
    -func (s *flowSchemaLister) Get(name string) (*v1beta3.FlowSchema, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta3.Resource("flowschema"), name)
    -	}
    -	return obj.(*v1beta3.FlowSchema), nil
    +	return &flowSchemaLister{listers.New[*flowcontrolv1beta3.FlowSchema](indexer, flowcontrolv1beta3.Resource("flowschema"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta3/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta3/prioritylevelconfiguration.go
    index d05613949f93..d50fc8376575 100644
    --- a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta3/prioritylevelconfiguration.go
    +++ b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta3/prioritylevelconfiguration.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta3
     
     import (
    -	v1beta3 "k8s.io/api/flowcontrol/v1beta3"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PriorityLevelConfigurationLister helps list PriorityLevelConfigurations.
    @@ -30,39 +30,19 @@ import (
     type PriorityLevelConfigurationLister interface {
     	// List lists all PriorityLevelConfigurations in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta3.PriorityLevelConfiguration, err error)
    +	List(selector labels.Selector) (ret []*flowcontrolv1beta3.PriorityLevelConfiguration, err error)
     	// Get retrieves the PriorityLevelConfiguration from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta3.PriorityLevelConfiguration, error)
    +	Get(name string) (*flowcontrolv1beta3.PriorityLevelConfiguration, error)
     	PriorityLevelConfigurationListerExpansion
     }
     
     // priorityLevelConfigurationLister implements the PriorityLevelConfigurationLister interface.
     type priorityLevelConfigurationLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*flowcontrolv1beta3.PriorityLevelConfiguration]
     }
     
     // NewPriorityLevelConfigurationLister returns a new PriorityLevelConfigurationLister.
     func NewPriorityLevelConfigurationLister(indexer cache.Indexer) PriorityLevelConfigurationLister {
    -	return &priorityLevelConfigurationLister{indexer: indexer}
    -}
    -
    -// List lists all PriorityLevelConfigurations in the indexer.
    -func (s *priorityLevelConfigurationLister) List(selector labels.Selector) (ret []*v1beta3.PriorityLevelConfiguration, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta3.PriorityLevelConfiguration))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PriorityLevelConfiguration from the index for a given name.
    -func (s *priorityLevelConfigurationLister) Get(name string) (*v1beta3.PriorityLevelConfiguration, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta3.Resource("prioritylevelconfiguration"), name)
    -	}
    -	return obj.(*v1beta3.PriorityLevelConfiguration), nil
    +	return &priorityLevelConfigurationLister{listers.New[*flowcontrolv1beta3.PriorityLevelConfiguration](indexer, flowcontrolv1beta3.Resource("prioritylevelconfiguration"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/generic_helpers.go b/vendor/k8s.io/client-go/listers/generic_helpers.go
    new file mode 100644
    index 000000000000..c69bb22b11e3
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/generic_helpers.go
    @@ -0,0 +1,72 @@
    +/*
    +Copyright 2023 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package listers
    +
    +import (
    +	"k8s.io/apimachinery/pkg/api/errors"
    +	"k8s.io/apimachinery/pkg/labels"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/runtime/schema"
    +	"k8s.io/client-go/tools/cache"
    +)
    +
    +// ResourceIndexer wraps an indexer, resource, and optional namespace for a given type.
    +// This is intended for use by listers (generated by lister-gen) only.
    +type ResourceIndexer[T runtime.Object] struct {
    +	indexer   cache.Indexer
    +	resource  schema.GroupResource
    +	namespace string // empty for non-namespaced types
    +}
    +
    +// New returns a new instance of a lister (resource indexer) wrapping the given indexer and resource for the specified type.
    +// This is intended for use by listers (generated by lister-gen) only.
    +func New[T runtime.Object](indexer cache.Indexer, resource schema.GroupResource) ResourceIndexer[T] {
    +	return ResourceIndexer[T]{indexer: indexer, resource: resource}
    +}
    +
    +// NewNamespaced returns a new instance of a namespaced lister (resource indexer) wrapping the given parent and namespace for the specified type.
    +// This is intended for use by listers (generated by lister-gen) only.
    +func NewNamespaced[T runtime.Object](parent ResourceIndexer[T], namespace string) ResourceIndexer[T] {
    +	return ResourceIndexer[T]{indexer: parent.indexer, resource: parent.resource, namespace: namespace}
    +}
    +
    +// List lists all resources in the indexer matching the given selector.
    +func (l ResourceIndexer[T]) List(selector labels.Selector) (ret []T, err error) {
    +	// ListAllByNamespace reverts to ListAll on empty namespaces
    +	err = cache.ListAllByNamespace(l.indexer, l.namespace, selector, func(m interface{}) {
    +		ret = append(ret, m.(T))
    +	})
    +	return ret, err
    +}
    +
    +// Get retrieves the resource from the index for a given name.
    +func (l ResourceIndexer[T]) Get(name string) (T, error) {
    +	var key string
    +	if l.namespace == "" {
    +		key = name
    +	} else {
    +		key = l.namespace + "/" + name
    +	}
    +	obj, exists, err := l.indexer.GetByKey(key)
    +	if err != nil {
    +		return *new(T), err
    +	}
    +	if !exists {
    +		return *new(T), errors.NewNotFound(l.resource, name)
    +	}
    +	return obj.(T), nil
    +}
    diff --git a/vendor/k8s.io/client-go/listers/networking/v1/ingress.go b/vendor/k8s.io/client-go/listers/networking/v1/ingress.go
    index 0f49d4f572c2..7d31b09c1cc5 100644
    --- a/vendor/k8s.io/client-go/listers/networking/v1/ingress.go
    +++ b/vendor/k8s.io/client-go/listers/networking/v1/ingress.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/networking/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	networkingv1 "k8s.io/api/networking/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // IngressLister helps list Ingresses.
    @@ -30,7 +30,7 @@ import (
     type IngressLister interface {
     	// List lists all Ingresses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Ingress, err error)
    +	List(selector labels.Selector) (ret []*networkingv1.Ingress, err error)
     	// Ingresses returns an object that can list and get Ingresses.
     	Ingresses(namespace string) IngressNamespaceLister
     	IngressListerExpansion
    @@ -38,25 +38,17 @@ type IngressLister interface {
     
     // ingressLister implements the IngressLister interface.
     type ingressLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*networkingv1.Ingress]
     }
     
     // NewIngressLister returns a new IngressLister.
     func NewIngressLister(indexer cache.Indexer) IngressLister {
    -	return &ingressLister{indexer: indexer}
    -}
    -
    -// List lists all Ingresses in the indexer.
    -func (s *ingressLister) List(selector labels.Selector) (ret []*v1.Ingress, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Ingress))
    -	})
    -	return ret, err
    +	return &ingressLister{listers.New[*networkingv1.Ingress](indexer, networkingv1.Resource("ingress"))}
     }
     
     // Ingresses returns an object that can list and get Ingresses.
     func (s *ingressLister) Ingresses(namespace string) IngressNamespaceLister {
    -	return ingressNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return ingressNamespaceLister{listers.NewNamespaced[*networkingv1.Ingress](s.ResourceIndexer, namespace)}
     }
     
     // IngressNamespaceLister helps list and get Ingresses.
    @@ -64,36 +56,15 @@ func (s *ingressLister) Ingresses(namespace string) IngressNamespaceLister {
     type IngressNamespaceLister interface {
     	// List lists all Ingresses in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Ingress, err error)
    +	List(selector labels.Selector) (ret []*networkingv1.Ingress, err error)
     	// Get retrieves the Ingress from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Ingress, error)
    +	Get(name string) (*networkingv1.Ingress, error)
     	IngressNamespaceListerExpansion
     }
     
     // ingressNamespaceLister implements the IngressNamespaceLister
     // interface.
     type ingressNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Ingresses in the indexer for a given namespace.
    -func (s ingressNamespaceLister) List(selector labels.Selector) (ret []*v1.Ingress, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Ingress))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Ingress from the indexer for a given namespace and name.
    -func (s ingressNamespaceLister) Get(name string) (*v1.Ingress, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("ingress"), name)
    -	}
    -	return obj.(*v1.Ingress), nil
    +	listers.ResourceIndexer[*networkingv1.Ingress]
     }
    diff --git a/vendor/k8s.io/client-go/listers/networking/v1/ingressclass.go b/vendor/k8s.io/client-go/listers/networking/v1/ingressclass.go
    index 1480cb13fdfb..71d432164aff 100644
    --- a/vendor/k8s.io/client-go/listers/networking/v1/ingressclass.go
    +++ b/vendor/k8s.io/client-go/listers/networking/v1/ingressclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/networking/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	networkingv1 "k8s.io/api/networking/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // IngressClassLister helps list IngressClasses.
    @@ -30,39 +30,19 @@ import (
     type IngressClassLister interface {
     	// List lists all IngressClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.IngressClass, err error)
    +	List(selector labels.Selector) (ret []*networkingv1.IngressClass, err error)
     	// Get retrieves the IngressClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.IngressClass, error)
    +	Get(name string) (*networkingv1.IngressClass, error)
     	IngressClassListerExpansion
     }
     
     // ingressClassLister implements the IngressClassLister interface.
     type ingressClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*networkingv1.IngressClass]
     }
     
     // NewIngressClassLister returns a new IngressClassLister.
     func NewIngressClassLister(indexer cache.Indexer) IngressClassLister {
    -	return &ingressClassLister{indexer: indexer}
    -}
    -
    -// List lists all IngressClasses in the indexer.
    -func (s *ingressClassLister) List(selector labels.Selector) (ret []*v1.IngressClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.IngressClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the IngressClass from the index for a given name.
    -func (s *ingressClassLister) Get(name string) (*v1.IngressClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("ingressclass"), name)
    -	}
    -	return obj.(*v1.IngressClass), nil
    +	return &ingressClassLister{listers.New[*networkingv1.IngressClass](indexer, networkingv1.Resource("ingressclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go b/vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go
    index 34cabf0577a1..5a38a74a0e30 100644
    --- a/vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go
    +++ b/vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/networking/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	networkingv1 "k8s.io/api/networking/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // NetworkPolicyLister helps list NetworkPolicies.
    @@ -30,7 +30,7 @@ import (
     type NetworkPolicyLister interface {
     	// List lists all NetworkPolicies in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.NetworkPolicy, err error)
    +	List(selector labels.Selector) (ret []*networkingv1.NetworkPolicy, err error)
     	// NetworkPolicies returns an object that can list and get NetworkPolicies.
     	NetworkPolicies(namespace string) NetworkPolicyNamespaceLister
     	NetworkPolicyListerExpansion
    @@ -38,25 +38,17 @@ type NetworkPolicyLister interface {
     
     // networkPolicyLister implements the NetworkPolicyLister interface.
     type networkPolicyLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*networkingv1.NetworkPolicy]
     }
     
     // NewNetworkPolicyLister returns a new NetworkPolicyLister.
     func NewNetworkPolicyLister(indexer cache.Indexer) NetworkPolicyLister {
    -	return &networkPolicyLister{indexer: indexer}
    -}
    -
    -// List lists all NetworkPolicies in the indexer.
    -func (s *networkPolicyLister) List(selector labels.Selector) (ret []*v1.NetworkPolicy, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.NetworkPolicy))
    -	})
    -	return ret, err
    +	return &networkPolicyLister{listers.New[*networkingv1.NetworkPolicy](indexer, networkingv1.Resource("networkpolicy"))}
     }
     
     // NetworkPolicies returns an object that can list and get NetworkPolicies.
     func (s *networkPolicyLister) NetworkPolicies(namespace string) NetworkPolicyNamespaceLister {
    -	return networkPolicyNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return networkPolicyNamespaceLister{listers.NewNamespaced[*networkingv1.NetworkPolicy](s.ResourceIndexer, namespace)}
     }
     
     // NetworkPolicyNamespaceLister helps list and get NetworkPolicies.
    @@ -64,36 +56,15 @@ func (s *networkPolicyLister) NetworkPolicies(namespace string) NetworkPolicyNam
     type NetworkPolicyNamespaceLister interface {
     	// List lists all NetworkPolicies in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.NetworkPolicy, err error)
    +	List(selector labels.Selector) (ret []*networkingv1.NetworkPolicy, err error)
     	// Get retrieves the NetworkPolicy from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.NetworkPolicy, error)
    +	Get(name string) (*networkingv1.NetworkPolicy, error)
     	NetworkPolicyNamespaceListerExpansion
     }
     
     // networkPolicyNamespaceLister implements the NetworkPolicyNamespaceLister
     // interface.
     type networkPolicyNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all NetworkPolicies in the indexer for a given namespace.
    -func (s networkPolicyNamespaceLister) List(selector labels.Selector) (ret []*v1.NetworkPolicy, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.NetworkPolicy))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the NetworkPolicy from the indexer for a given namespace and name.
    -func (s networkPolicyNamespaceLister) Get(name string) (*v1.NetworkPolicy, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("networkpolicy"), name)
    -	}
    -	return obj.(*v1.NetworkPolicy), nil
    +	listers.ResourceIndexer[*networkingv1.NetworkPolicy]
     }
    diff --git a/vendor/k8s.io/client-go/listers/networking/v1alpha1/ipaddress.go b/vendor/k8s.io/client-go/listers/networking/v1alpha1/ipaddress.go
    index b3dfe27971f1..953265eca4c4 100644
    --- a/vendor/k8s.io/client-go/listers/networking/v1alpha1/ipaddress.go
    +++ b/vendor/k8s.io/client-go/listers/networking/v1alpha1/ipaddress.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/networking/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	networkingv1alpha1 "k8s.io/api/networking/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // IPAddressLister helps list IPAddresses.
    @@ -30,39 +30,19 @@ import (
     type IPAddressLister interface {
     	// List lists all IPAddresses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.IPAddress, err error)
    +	List(selector labels.Selector) (ret []*networkingv1alpha1.IPAddress, err error)
     	// Get retrieves the IPAddress from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.IPAddress, error)
    +	Get(name string) (*networkingv1alpha1.IPAddress, error)
     	IPAddressListerExpansion
     }
     
     // iPAddressLister implements the IPAddressLister interface.
     type iPAddressLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*networkingv1alpha1.IPAddress]
     }
     
     // NewIPAddressLister returns a new IPAddressLister.
     func NewIPAddressLister(indexer cache.Indexer) IPAddressLister {
    -	return &iPAddressLister{indexer: indexer}
    -}
    -
    -// List lists all IPAddresses in the indexer.
    -func (s *iPAddressLister) List(selector labels.Selector) (ret []*v1alpha1.IPAddress, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.IPAddress))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the IPAddress from the index for a given name.
    -func (s *iPAddressLister) Get(name string) (*v1alpha1.IPAddress, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("ipaddress"), name)
    -	}
    -	return obj.(*v1alpha1.IPAddress), nil
    +	return &iPAddressLister{listers.New[*networkingv1alpha1.IPAddress](indexer, networkingv1alpha1.Resource("ipaddress"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/networking/v1alpha1/servicecidr.go b/vendor/k8s.io/client-go/listers/networking/v1alpha1/servicecidr.go
    index 8bc2b10e6813..0c4cb2ebf833 100644
    --- a/vendor/k8s.io/client-go/listers/networking/v1alpha1/servicecidr.go
    +++ b/vendor/k8s.io/client-go/listers/networking/v1alpha1/servicecidr.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/networking/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	networkingv1alpha1 "k8s.io/api/networking/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ServiceCIDRLister helps list ServiceCIDRs.
    @@ -30,39 +30,19 @@ import (
     type ServiceCIDRLister interface {
     	// List lists all ServiceCIDRs in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.ServiceCIDR, err error)
    +	List(selector labels.Selector) (ret []*networkingv1alpha1.ServiceCIDR, err error)
     	// Get retrieves the ServiceCIDR from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.ServiceCIDR, error)
    +	Get(name string) (*networkingv1alpha1.ServiceCIDR, error)
     	ServiceCIDRListerExpansion
     }
     
     // serviceCIDRLister implements the ServiceCIDRLister interface.
     type serviceCIDRLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*networkingv1alpha1.ServiceCIDR]
     }
     
     // NewServiceCIDRLister returns a new ServiceCIDRLister.
     func NewServiceCIDRLister(indexer cache.Indexer) ServiceCIDRLister {
    -	return &serviceCIDRLister{indexer: indexer}
    -}
    -
    -// List lists all ServiceCIDRs in the indexer.
    -func (s *serviceCIDRLister) List(selector labels.Selector) (ret []*v1alpha1.ServiceCIDR, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.ServiceCIDR))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ServiceCIDR from the index for a given name.
    -func (s *serviceCIDRLister) Get(name string) (*v1alpha1.ServiceCIDR, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("servicecidr"), name)
    -	}
    -	return obj.(*v1alpha1.ServiceCIDR), nil
    +	return &serviceCIDRLister{listers.New[*networkingv1alpha1.ServiceCIDR](indexer, networkingv1alpha1.Resource("servicecidr"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/networking/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/networking/v1beta1/expansion_generated.go
    index d8c99c186e5b..320af736e699 100644
    --- a/vendor/k8s.io/client-go/listers/networking/v1beta1/expansion_generated.go
    +++ b/vendor/k8s.io/client-go/listers/networking/v1beta1/expansion_generated.go
    @@ -18,6 +18,10 @@ limitations under the License.
     
     package v1beta1
     
    +// IPAddressListerExpansion allows custom methods to be added to
    +// IPAddressLister.
    +type IPAddressListerExpansion interface{}
    +
     // IngressListerExpansion allows custom methods to be added to
     // IngressLister.
     type IngressListerExpansion interface{}
    @@ -29,3 +33,7 @@ type IngressNamespaceListerExpansion interface{}
     // IngressClassListerExpansion allows custom methods to be added to
     // IngressClassLister.
     type IngressClassListerExpansion interface{}
    +
    +// ServiceCIDRListerExpansion allows custom methods to be added to
    +// ServiceCIDRLister.
    +type ServiceCIDRListerExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/listers/networking/v1beta1/ingress.go b/vendor/k8s.io/client-go/listers/networking/v1beta1/ingress.go
    index b8f4d355802f..f8c172487551 100644
    --- a/vendor/k8s.io/client-go/listers/networking/v1beta1/ingress.go
    +++ b/vendor/k8s.io/client-go/listers/networking/v1beta1/ingress.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/networking/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // IngressLister helps list Ingresses.
    @@ -30,7 +30,7 @@ import (
     type IngressLister interface {
     	// List lists all Ingresses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Ingress, err error)
    +	List(selector labels.Selector) (ret []*networkingv1beta1.Ingress, err error)
     	// Ingresses returns an object that can list and get Ingresses.
     	Ingresses(namespace string) IngressNamespaceLister
     	IngressListerExpansion
    @@ -38,25 +38,17 @@ type IngressLister interface {
     
     // ingressLister implements the IngressLister interface.
     type ingressLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*networkingv1beta1.Ingress]
     }
     
     // NewIngressLister returns a new IngressLister.
     func NewIngressLister(indexer cache.Indexer) IngressLister {
    -	return &ingressLister{indexer: indexer}
    -}
    -
    -// List lists all Ingresses in the indexer.
    -func (s *ingressLister) List(selector labels.Selector) (ret []*v1beta1.Ingress, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Ingress))
    -	})
    -	return ret, err
    +	return &ingressLister{listers.New[*networkingv1beta1.Ingress](indexer, networkingv1beta1.Resource("ingress"))}
     }
     
     // Ingresses returns an object that can list and get Ingresses.
     func (s *ingressLister) Ingresses(namespace string) IngressNamespaceLister {
    -	return ingressNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return ingressNamespaceLister{listers.NewNamespaced[*networkingv1beta1.Ingress](s.ResourceIndexer, namespace)}
     }
     
     // IngressNamespaceLister helps list and get Ingresses.
    @@ -64,36 +56,15 @@ func (s *ingressLister) Ingresses(namespace string) IngressNamespaceLister {
     type IngressNamespaceLister interface {
     	// List lists all Ingresses in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Ingress, err error)
    +	List(selector labels.Selector) (ret []*networkingv1beta1.Ingress, err error)
     	// Get retrieves the Ingress from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.Ingress, error)
    +	Get(name string) (*networkingv1beta1.Ingress, error)
     	IngressNamespaceListerExpansion
     }
     
     // ingressNamespaceLister implements the IngressNamespaceLister
     // interface.
     type ingressNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Ingresses in the indexer for a given namespace.
    -func (s ingressNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Ingress, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Ingress))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Ingress from the indexer for a given namespace and name.
    -func (s ingressNamespaceLister) Get(name string) (*v1beta1.Ingress, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("ingress"), name)
    -	}
    -	return obj.(*v1beta1.Ingress), nil
    +	listers.ResourceIndexer[*networkingv1beta1.Ingress]
     }
    diff --git a/vendor/k8s.io/client-go/listers/networking/v1beta1/ingressclass.go b/vendor/k8s.io/client-go/listers/networking/v1beta1/ingressclass.go
    index ebcd6ba85b1a..0e87e0397653 100644
    --- a/vendor/k8s.io/client-go/listers/networking/v1beta1/ingressclass.go
    +++ b/vendor/k8s.io/client-go/listers/networking/v1beta1/ingressclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/networking/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // IngressClassLister helps list IngressClasses.
    @@ -30,39 +30,19 @@ import (
     type IngressClassLister interface {
     	// List lists all IngressClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.IngressClass, err error)
    +	List(selector labels.Selector) (ret []*networkingv1beta1.IngressClass, err error)
     	// Get retrieves the IngressClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.IngressClass, error)
    +	Get(name string) (*networkingv1beta1.IngressClass, error)
     	IngressClassListerExpansion
     }
     
     // ingressClassLister implements the IngressClassLister interface.
     type ingressClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*networkingv1beta1.IngressClass]
     }
     
     // NewIngressClassLister returns a new IngressClassLister.
     func NewIngressClassLister(indexer cache.Indexer) IngressClassLister {
    -	return &ingressClassLister{indexer: indexer}
    -}
    -
    -// List lists all IngressClasses in the indexer.
    -func (s *ingressClassLister) List(selector labels.Selector) (ret []*v1beta1.IngressClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.IngressClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the IngressClass from the index for a given name.
    -func (s *ingressClassLister) Get(name string) (*v1beta1.IngressClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("ingressclass"), name)
    -	}
    -	return obj.(*v1beta1.IngressClass), nil
    +	return &ingressClassLister{listers.New[*networkingv1beta1.IngressClass](indexer, networkingv1beta1.Resource("ingressclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/networking/v1beta1/ipaddress.go b/vendor/k8s.io/client-go/listers/networking/v1beta1/ipaddress.go
    new file mode 100644
    index 000000000000..41a4bf927c9d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/networking/v1beta1/ipaddress.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// IPAddressLister helps list IPAddresses.
    +// All objects returned here must be treated as read-only.
    +type IPAddressLister interface {
    +	// List lists all IPAddresses in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*networkingv1beta1.IPAddress, err error)
    +	// Get retrieves the IPAddress from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*networkingv1beta1.IPAddress, error)
    +	IPAddressListerExpansion
    +}
    +
    +// iPAddressLister implements the IPAddressLister interface.
    +type iPAddressLister struct {
    +	listers.ResourceIndexer[*networkingv1beta1.IPAddress]
    +}
    +
    +// NewIPAddressLister returns a new IPAddressLister.
    +func NewIPAddressLister(indexer cache.Indexer) IPAddressLister {
    +	return &iPAddressLister{listers.New[*networkingv1beta1.IPAddress](indexer, networkingv1beta1.Resource("ipaddress"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/networking/v1beta1/servicecidr.go b/vendor/k8s.io/client-go/listers/networking/v1beta1/servicecidr.go
    new file mode 100644
    index 000000000000..5c9a0eac17d1
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/networking/v1beta1/servicecidr.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	networkingv1beta1 "k8s.io/api/networking/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ServiceCIDRLister helps list ServiceCIDRs.
    +// All objects returned here must be treated as read-only.
    +type ServiceCIDRLister interface {
    +	// List lists all ServiceCIDRs in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*networkingv1beta1.ServiceCIDR, err error)
    +	// Get retrieves the ServiceCIDR from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*networkingv1beta1.ServiceCIDR, error)
    +	ServiceCIDRListerExpansion
    +}
    +
    +// serviceCIDRLister implements the ServiceCIDRLister interface.
    +type serviceCIDRLister struct {
    +	listers.ResourceIndexer[*networkingv1beta1.ServiceCIDR]
    +}
    +
    +// NewServiceCIDRLister returns a new ServiceCIDRLister.
    +func NewServiceCIDRLister(indexer cache.Indexer) ServiceCIDRLister {
    +	return &serviceCIDRLister{listers.New[*networkingv1beta1.ServiceCIDR](indexer, networkingv1beta1.Resource("servicecidr"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/node/v1/runtimeclass.go b/vendor/k8s.io/client-go/listers/node/v1/runtimeclass.go
    index 6e00cf1a5923..b8322dbb46c8 100644
    --- a/vendor/k8s.io/client-go/listers/node/v1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/listers/node/v1/runtimeclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/node/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	nodev1 "k8s.io/api/node/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // RuntimeClassLister helps list RuntimeClasses.
    @@ -30,39 +30,19 @@ import (
     type RuntimeClassLister interface {
     	// List lists all RuntimeClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.RuntimeClass, err error)
    +	List(selector labels.Selector) (ret []*nodev1.RuntimeClass, err error)
     	// Get retrieves the RuntimeClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.RuntimeClass, error)
    +	Get(name string) (*nodev1.RuntimeClass, error)
     	RuntimeClassListerExpansion
     }
     
     // runtimeClassLister implements the RuntimeClassLister interface.
     type runtimeClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*nodev1.RuntimeClass]
     }
     
     // NewRuntimeClassLister returns a new RuntimeClassLister.
     func NewRuntimeClassLister(indexer cache.Indexer) RuntimeClassLister {
    -	return &runtimeClassLister{indexer: indexer}
    -}
    -
    -// List lists all RuntimeClasses in the indexer.
    -func (s *runtimeClassLister) List(selector labels.Selector) (ret []*v1.RuntimeClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.RuntimeClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the RuntimeClass from the index for a given name.
    -func (s *runtimeClassLister) Get(name string) (*v1.RuntimeClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("runtimeclass"), name)
    -	}
    -	return obj.(*v1.RuntimeClass), nil
    +	return &runtimeClassLister{listers.New[*nodev1.RuntimeClass](indexer, nodev1.Resource("runtimeclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/node/v1alpha1/runtimeclass.go b/vendor/k8s.io/client-go/listers/node/v1alpha1/runtimeclass.go
    index 31f3357990bd..b3d4ad46c6c3 100644
    --- a/vendor/k8s.io/client-go/listers/node/v1alpha1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/listers/node/v1alpha1/runtimeclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/node/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	nodev1alpha1 "k8s.io/api/node/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // RuntimeClassLister helps list RuntimeClasses.
    @@ -30,39 +30,19 @@ import (
     type RuntimeClassLister interface {
     	// List lists all RuntimeClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.RuntimeClass, err error)
    +	List(selector labels.Selector) (ret []*nodev1alpha1.RuntimeClass, err error)
     	// Get retrieves the RuntimeClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.RuntimeClass, error)
    +	Get(name string) (*nodev1alpha1.RuntimeClass, error)
     	RuntimeClassListerExpansion
     }
     
     // runtimeClassLister implements the RuntimeClassLister interface.
     type runtimeClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*nodev1alpha1.RuntimeClass]
     }
     
     // NewRuntimeClassLister returns a new RuntimeClassLister.
     func NewRuntimeClassLister(indexer cache.Indexer) RuntimeClassLister {
    -	return &runtimeClassLister{indexer: indexer}
    -}
    -
    -// List lists all RuntimeClasses in the indexer.
    -func (s *runtimeClassLister) List(selector labels.Selector) (ret []*v1alpha1.RuntimeClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.RuntimeClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the RuntimeClass from the index for a given name.
    -func (s *runtimeClassLister) Get(name string) (*v1alpha1.RuntimeClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("runtimeclass"), name)
    -	}
    -	return obj.(*v1alpha1.RuntimeClass), nil
    +	return &runtimeClassLister{listers.New[*nodev1alpha1.RuntimeClass](indexer, nodev1alpha1.Resource("runtimeclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/node/v1beta1/runtimeclass.go b/vendor/k8s.io/client-go/listers/node/v1beta1/runtimeclass.go
    index 7dbd6ab268bb..1b9f8d799da6 100644
    --- a/vendor/k8s.io/client-go/listers/node/v1beta1/runtimeclass.go
    +++ b/vendor/k8s.io/client-go/listers/node/v1beta1/runtimeclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/node/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	nodev1beta1 "k8s.io/api/node/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // RuntimeClassLister helps list RuntimeClasses.
    @@ -30,39 +30,19 @@ import (
     type RuntimeClassLister interface {
     	// List lists all RuntimeClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.RuntimeClass, err error)
    +	List(selector labels.Selector) (ret []*nodev1beta1.RuntimeClass, err error)
     	// Get retrieves the RuntimeClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.RuntimeClass, error)
    +	Get(name string) (*nodev1beta1.RuntimeClass, error)
     	RuntimeClassListerExpansion
     }
     
     // runtimeClassLister implements the RuntimeClassLister interface.
     type runtimeClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*nodev1beta1.RuntimeClass]
     }
     
     // NewRuntimeClassLister returns a new RuntimeClassLister.
     func NewRuntimeClassLister(indexer cache.Indexer) RuntimeClassLister {
    -	return &runtimeClassLister{indexer: indexer}
    -}
    -
    -// List lists all RuntimeClasses in the indexer.
    -func (s *runtimeClassLister) List(selector labels.Selector) (ret []*v1beta1.RuntimeClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.RuntimeClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the RuntimeClass from the index for a given name.
    -func (s *runtimeClassLister) Get(name string) (*v1beta1.RuntimeClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("runtimeclass"), name)
    -	}
    -	return obj.(*v1beta1.RuntimeClass), nil
    +	return &runtimeClassLister{listers.New[*nodev1beta1.RuntimeClass](indexer, nodev1beta1.Resource("runtimeclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/policy/v1/eviction.go b/vendor/k8s.io/client-go/listers/policy/v1/eviction.go
    index dc5ffa0740f3..8dccd731372b 100644
    --- a/vendor/k8s.io/client-go/listers/policy/v1/eviction.go
    +++ b/vendor/k8s.io/client-go/listers/policy/v1/eviction.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/policy/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	policyv1 "k8s.io/api/policy/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // EvictionLister helps list Evictions.
    @@ -30,7 +30,7 @@ import (
     type EvictionLister interface {
     	// List lists all Evictions in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Eviction, err error)
    +	List(selector labels.Selector) (ret []*policyv1.Eviction, err error)
     	// Evictions returns an object that can list and get Evictions.
     	Evictions(namespace string) EvictionNamespaceLister
     	EvictionListerExpansion
    @@ -38,25 +38,17 @@ type EvictionLister interface {
     
     // evictionLister implements the EvictionLister interface.
     type evictionLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*policyv1.Eviction]
     }
     
     // NewEvictionLister returns a new EvictionLister.
     func NewEvictionLister(indexer cache.Indexer) EvictionLister {
    -	return &evictionLister{indexer: indexer}
    -}
    -
    -// List lists all Evictions in the indexer.
    -func (s *evictionLister) List(selector labels.Selector) (ret []*v1.Eviction, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Eviction))
    -	})
    -	return ret, err
    +	return &evictionLister{listers.New[*policyv1.Eviction](indexer, policyv1.Resource("eviction"))}
     }
     
     // Evictions returns an object that can list and get Evictions.
     func (s *evictionLister) Evictions(namespace string) EvictionNamespaceLister {
    -	return evictionNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return evictionNamespaceLister{listers.NewNamespaced[*policyv1.Eviction](s.ResourceIndexer, namespace)}
     }
     
     // EvictionNamespaceLister helps list and get Evictions.
    @@ -64,36 +56,15 @@ func (s *evictionLister) Evictions(namespace string) EvictionNamespaceLister {
     type EvictionNamespaceLister interface {
     	// List lists all Evictions in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Eviction, err error)
    +	List(selector labels.Selector) (ret []*policyv1.Eviction, err error)
     	// Get retrieves the Eviction from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Eviction, error)
    +	Get(name string) (*policyv1.Eviction, error)
     	EvictionNamespaceListerExpansion
     }
     
     // evictionNamespaceLister implements the EvictionNamespaceLister
     // interface.
     type evictionNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Evictions in the indexer for a given namespace.
    -func (s evictionNamespaceLister) List(selector labels.Selector) (ret []*v1.Eviction, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Eviction))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Eviction from the indexer for a given namespace and name.
    -func (s evictionNamespaceLister) Get(name string) (*v1.Eviction, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("eviction"), name)
    -	}
    -	return obj.(*v1.Eviction), nil
    +	listers.ResourceIndexer[*policyv1.Eviction]
     }
    diff --git a/vendor/k8s.io/client-go/listers/policy/v1/poddisruptionbudget.go b/vendor/k8s.io/client-go/listers/policy/v1/poddisruptionbudget.go
    index 8470d38bb299..1a6273b3ee41 100644
    --- a/vendor/k8s.io/client-go/listers/policy/v1/poddisruptionbudget.go
    +++ b/vendor/k8s.io/client-go/listers/policy/v1/poddisruptionbudget.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/policy/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	policyv1 "k8s.io/api/policy/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PodDisruptionBudgetLister helps list PodDisruptionBudgets.
    @@ -30,7 +30,7 @@ import (
     type PodDisruptionBudgetLister interface {
     	// List lists all PodDisruptionBudgets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.PodDisruptionBudget, err error)
    +	List(selector labels.Selector) (ret []*policyv1.PodDisruptionBudget, err error)
     	// PodDisruptionBudgets returns an object that can list and get PodDisruptionBudgets.
     	PodDisruptionBudgets(namespace string) PodDisruptionBudgetNamespaceLister
     	PodDisruptionBudgetListerExpansion
    @@ -38,25 +38,17 @@ type PodDisruptionBudgetLister interface {
     
     // podDisruptionBudgetLister implements the PodDisruptionBudgetLister interface.
     type podDisruptionBudgetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*policyv1.PodDisruptionBudget]
     }
     
     // NewPodDisruptionBudgetLister returns a new PodDisruptionBudgetLister.
     func NewPodDisruptionBudgetLister(indexer cache.Indexer) PodDisruptionBudgetLister {
    -	return &podDisruptionBudgetLister{indexer: indexer}
    -}
    -
    -// List lists all PodDisruptionBudgets in the indexer.
    -func (s *podDisruptionBudgetLister) List(selector labels.Selector) (ret []*v1.PodDisruptionBudget, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.PodDisruptionBudget))
    -	})
    -	return ret, err
    +	return &podDisruptionBudgetLister{listers.New[*policyv1.PodDisruptionBudget](indexer, policyv1.Resource("poddisruptionbudget"))}
     }
     
     // PodDisruptionBudgets returns an object that can list and get PodDisruptionBudgets.
     func (s *podDisruptionBudgetLister) PodDisruptionBudgets(namespace string) PodDisruptionBudgetNamespaceLister {
    -	return podDisruptionBudgetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return podDisruptionBudgetNamespaceLister{listers.NewNamespaced[*policyv1.PodDisruptionBudget](s.ResourceIndexer, namespace)}
     }
     
     // PodDisruptionBudgetNamespaceLister helps list and get PodDisruptionBudgets.
    @@ -64,36 +56,15 @@ func (s *podDisruptionBudgetLister) PodDisruptionBudgets(namespace string) PodDi
     type PodDisruptionBudgetNamespaceLister interface {
     	// List lists all PodDisruptionBudgets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.PodDisruptionBudget, err error)
    +	List(selector labels.Selector) (ret []*policyv1.PodDisruptionBudget, err error)
     	// Get retrieves the PodDisruptionBudget from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.PodDisruptionBudget, error)
    +	Get(name string) (*policyv1.PodDisruptionBudget, error)
     	PodDisruptionBudgetNamespaceListerExpansion
     }
     
     // podDisruptionBudgetNamespaceLister implements the PodDisruptionBudgetNamespaceLister
     // interface.
     type podDisruptionBudgetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all PodDisruptionBudgets in the indexer for a given namespace.
    -func (s podDisruptionBudgetNamespaceLister) List(selector labels.Selector) (ret []*v1.PodDisruptionBudget, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.PodDisruptionBudget))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PodDisruptionBudget from the indexer for a given namespace and name.
    -func (s podDisruptionBudgetNamespaceLister) Get(name string) (*v1.PodDisruptionBudget, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("poddisruptionbudget"), name)
    -	}
    -	return obj.(*v1.PodDisruptionBudget), nil
    +	listers.ResourceIndexer[*policyv1.PodDisruptionBudget]
     }
    diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go
    index e1d40d0b32f0..318c380fafa7 100644
    --- a/vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go
    +++ b/vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/policy/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	policyv1beta1 "k8s.io/api/policy/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // EvictionLister helps list Evictions.
    @@ -30,7 +30,7 @@ import (
     type EvictionLister interface {
     	// List lists all Evictions in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Eviction, err error)
    +	List(selector labels.Selector) (ret []*policyv1beta1.Eviction, err error)
     	// Evictions returns an object that can list and get Evictions.
     	Evictions(namespace string) EvictionNamespaceLister
     	EvictionListerExpansion
    @@ -38,25 +38,17 @@ type EvictionLister interface {
     
     // evictionLister implements the EvictionLister interface.
     type evictionLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*policyv1beta1.Eviction]
     }
     
     // NewEvictionLister returns a new EvictionLister.
     func NewEvictionLister(indexer cache.Indexer) EvictionLister {
    -	return &evictionLister{indexer: indexer}
    -}
    -
    -// List lists all Evictions in the indexer.
    -func (s *evictionLister) List(selector labels.Selector) (ret []*v1beta1.Eviction, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Eviction))
    -	})
    -	return ret, err
    +	return &evictionLister{listers.New[*policyv1beta1.Eviction](indexer, policyv1beta1.Resource("eviction"))}
     }
     
     // Evictions returns an object that can list and get Evictions.
     func (s *evictionLister) Evictions(namespace string) EvictionNamespaceLister {
    -	return evictionNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return evictionNamespaceLister{listers.NewNamespaced[*policyv1beta1.Eviction](s.ResourceIndexer, namespace)}
     }
     
     // EvictionNamespaceLister helps list and get Evictions.
    @@ -64,36 +56,15 @@ func (s *evictionLister) Evictions(namespace string) EvictionNamespaceLister {
     type EvictionNamespaceLister interface {
     	// List lists all Evictions in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Eviction, err error)
    +	List(selector labels.Selector) (ret []*policyv1beta1.Eviction, err error)
     	// Get retrieves the Eviction from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.Eviction, error)
    +	Get(name string) (*policyv1beta1.Eviction, error)
     	EvictionNamespaceListerExpansion
     }
     
     // evictionNamespaceLister implements the EvictionNamespaceLister
     // interface.
     type evictionNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Evictions in the indexer for a given namespace.
    -func (s evictionNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Eviction, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Eviction))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Eviction from the indexer for a given namespace and name.
    -func (s evictionNamespaceLister) Get(name string) (*v1beta1.Eviction, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("eviction"), name)
    -	}
    -	return obj.(*v1beta1.Eviction), nil
    +	listers.ResourceIndexer[*policyv1beta1.Eviction]
     }
    diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go
    index aa08f813eef0..fb156e97bbef 100644
    --- a/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go
    +++ b/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/policy/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	policyv1beta1 "k8s.io/api/policy/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PodDisruptionBudgetLister helps list PodDisruptionBudgets.
    @@ -30,7 +30,7 @@ import (
     type PodDisruptionBudgetLister interface {
     	// List lists all PodDisruptionBudgets in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.PodDisruptionBudget, err error)
    +	List(selector labels.Selector) (ret []*policyv1beta1.PodDisruptionBudget, err error)
     	// PodDisruptionBudgets returns an object that can list and get PodDisruptionBudgets.
     	PodDisruptionBudgets(namespace string) PodDisruptionBudgetNamespaceLister
     	PodDisruptionBudgetListerExpansion
    @@ -38,25 +38,17 @@ type PodDisruptionBudgetLister interface {
     
     // podDisruptionBudgetLister implements the PodDisruptionBudgetLister interface.
     type podDisruptionBudgetLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*policyv1beta1.PodDisruptionBudget]
     }
     
     // NewPodDisruptionBudgetLister returns a new PodDisruptionBudgetLister.
     func NewPodDisruptionBudgetLister(indexer cache.Indexer) PodDisruptionBudgetLister {
    -	return &podDisruptionBudgetLister{indexer: indexer}
    -}
    -
    -// List lists all PodDisruptionBudgets in the indexer.
    -func (s *podDisruptionBudgetLister) List(selector labels.Selector) (ret []*v1beta1.PodDisruptionBudget, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.PodDisruptionBudget))
    -	})
    -	return ret, err
    +	return &podDisruptionBudgetLister{listers.New[*policyv1beta1.PodDisruptionBudget](indexer, policyv1beta1.Resource("poddisruptionbudget"))}
     }
     
     // PodDisruptionBudgets returns an object that can list and get PodDisruptionBudgets.
     func (s *podDisruptionBudgetLister) PodDisruptionBudgets(namespace string) PodDisruptionBudgetNamespaceLister {
    -	return podDisruptionBudgetNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return podDisruptionBudgetNamespaceLister{listers.NewNamespaced[*policyv1beta1.PodDisruptionBudget](s.ResourceIndexer, namespace)}
     }
     
     // PodDisruptionBudgetNamespaceLister helps list and get PodDisruptionBudgets.
    @@ -64,36 +56,15 @@ func (s *podDisruptionBudgetLister) PodDisruptionBudgets(namespace string) PodDi
     type PodDisruptionBudgetNamespaceLister interface {
     	// List lists all PodDisruptionBudgets in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.PodDisruptionBudget, err error)
    +	List(selector labels.Selector) (ret []*policyv1beta1.PodDisruptionBudget, err error)
     	// Get retrieves the PodDisruptionBudget from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.PodDisruptionBudget, error)
    +	Get(name string) (*policyv1beta1.PodDisruptionBudget, error)
     	PodDisruptionBudgetNamespaceListerExpansion
     }
     
     // podDisruptionBudgetNamespaceLister implements the PodDisruptionBudgetNamespaceLister
     // interface.
     type podDisruptionBudgetNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all PodDisruptionBudgets in the indexer for a given namespace.
    -func (s podDisruptionBudgetNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.PodDisruptionBudget, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.PodDisruptionBudget))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PodDisruptionBudget from the indexer for a given namespace and name.
    -func (s podDisruptionBudgetNamespaceLister) Get(name string) (*v1beta1.PodDisruptionBudget, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("poddisruptionbudget"), name)
    -	}
    -	return obj.(*v1beta1.PodDisruptionBudget), nil
    +	listers.ResourceIndexer[*policyv1beta1.PodDisruptionBudget]
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1/clusterrole.go b/vendor/k8s.io/client-go/listers/rbac/v1/clusterrole.go
    index 84dc003ca2e2..456393aee2ce 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1/clusterrole.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/rbac/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1 "k8s.io/api/rbac/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ClusterRoleLister helps list ClusterRoles.
    @@ -30,39 +30,19 @@ import (
     type ClusterRoleLister interface {
     	// List lists all ClusterRoles in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ClusterRole, err error)
    +	List(selector labels.Selector) (ret []*rbacv1.ClusterRole, err error)
     	// Get retrieves the ClusterRole from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.ClusterRole, error)
    +	Get(name string) (*rbacv1.ClusterRole, error)
     	ClusterRoleListerExpansion
     }
     
     // clusterRoleLister implements the ClusterRoleLister interface.
     type clusterRoleLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1.ClusterRole]
     }
     
     // NewClusterRoleLister returns a new ClusterRoleLister.
     func NewClusterRoleLister(indexer cache.Indexer) ClusterRoleLister {
    -	return &clusterRoleLister{indexer: indexer}
    -}
    -
    -// List lists all ClusterRoles in the indexer.
    -func (s *clusterRoleLister) List(selector labels.Selector) (ret []*v1.ClusterRole, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ClusterRole))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ClusterRole from the index for a given name.
    -func (s *clusterRoleLister) Get(name string) (*v1.ClusterRole, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("clusterrole"), name)
    -	}
    -	return obj.(*v1.ClusterRole), nil
    +	return &clusterRoleLister{listers.New[*rbacv1.ClusterRole](indexer, rbacv1.Resource("clusterrole"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1/clusterrolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1/clusterrolebinding.go
    index ff061d4b2b8d..bf84144a77a7 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1/clusterrolebinding.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/rbac/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1 "k8s.io/api/rbac/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ClusterRoleBindingLister helps list ClusterRoleBindings.
    @@ -30,39 +30,19 @@ import (
     type ClusterRoleBindingLister interface {
     	// List lists all ClusterRoleBindings in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.ClusterRoleBinding, err error)
    +	List(selector labels.Selector) (ret []*rbacv1.ClusterRoleBinding, err error)
     	// Get retrieves the ClusterRoleBinding from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.ClusterRoleBinding, error)
    +	Get(name string) (*rbacv1.ClusterRoleBinding, error)
     	ClusterRoleBindingListerExpansion
     }
     
     // clusterRoleBindingLister implements the ClusterRoleBindingLister interface.
     type clusterRoleBindingLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1.ClusterRoleBinding]
     }
     
     // NewClusterRoleBindingLister returns a new ClusterRoleBindingLister.
     func NewClusterRoleBindingLister(indexer cache.Indexer) ClusterRoleBindingLister {
    -	return &clusterRoleBindingLister{indexer: indexer}
    -}
    -
    -// List lists all ClusterRoleBindings in the indexer.
    -func (s *clusterRoleBindingLister) List(selector labels.Selector) (ret []*v1.ClusterRoleBinding, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.ClusterRoleBinding))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ClusterRoleBinding from the index for a given name.
    -func (s *clusterRoleBindingLister) Get(name string) (*v1.ClusterRoleBinding, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("clusterrolebinding"), name)
    -	}
    -	return obj.(*v1.ClusterRoleBinding), nil
    +	return &clusterRoleBindingLister{listers.New[*rbacv1.ClusterRoleBinding](indexer, rbacv1.Resource("clusterrolebinding"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1/role.go b/vendor/k8s.io/client-go/listers/rbac/v1/role.go
    index 503f013b5206..d0077e3ceabd 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1/role.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1/role.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/rbac/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1 "k8s.io/api/rbac/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // RoleLister helps list Roles.
    @@ -30,7 +30,7 @@ import (
     type RoleLister interface {
     	// List lists all Roles in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Role, err error)
    +	List(selector labels.Selector) (ret []*rbacv1.Role, err error)
     	// Roles returns an object that can list and get Roles.
     	Roles(namespace string) RoleNamespaceLister
     	RoleListerExpansion
    @@ -38,25 +38,17 @@ type RoleLister interface {
     
     // roleLister implements the RoleLister interface.
     type roleLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1.Role]
     }
     
     // NewRoleLister returns a new RoleLister.
     func NewRoleLister(indexer cache.Indexer) RoleLister {
    -	return &roleLister{indexer: indexer}
    -}
    -
    -// List lists all Roles in the indexer.
    -func (s *roleLister) List(selector labels.Selector) (ret []*v1.Role, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Role))
    -	})
    -	return ret, err
    +	return &roleLister{listers.New[*rbacv1.Role](indexer, rbacv1.Resource("role"))}
     }
     
     // Roles returns an object that can list and get Roles.
     func (s *roleLister) Roles(namespace string) RoleNamespaceLister {
    -	return roleNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return roleNamespaceLister{listers.NewNamespaced[*rbacv1.Role](s.ResourceIndexer, namespace)}
     }
     
     // RoleNamespaceLister helps list and get Roles.
    @@ -64,36 +56,15 @@ func (s *roleLister) Roles(namespace string) RoleNamespaceLister {
     type RoleNamespaceLister interface {
     	// List lists all Roles in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.Role, err error)
    +	List(selector labels.Selector) (ret []*rbacv1.Role, err error)
     	// Get retrieves the Role from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.Role, error)
    +	Get(name string) (*rbacv1.Role, error)
     	RoleNamespaceListerExpansion
     }
     
     // roleNamespaceLister implements the RoleNamespaceLister
     // interface.
     type roleNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Roles in the indexer for a given namespace.
    -func (s roleNamespaceLister) List(selector labels.Selector) (ret []*v1.Role, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.Role))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Role from the indexer for a given namespace and name.
    -func (s roleNamespaceLister) Get(name string) (*v1.Role, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("role"), name)
    -	}
    -	return obj.(*v1.Role), nil
    +	listers.ResourceIndexer[*rbacv1.Role]
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1/rolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1/rolebinding.go
    index ea50c641360f..a0e3661567ba 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1/rolebinding.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/rbac/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1 "k8s.io/api/rbac/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // RoleBindingLister helps list RoleBindings.
    @@ -30,7 +30,7 @@ import (
     type RoleBindingLister interface {
     	// List lists all RoleBindings in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.RoleBinding, err error)
    +	List(selector labels.Selector) (ret []*rbacv1.RoleBinding, err error)
     	// RoleBindings returns an object that can list and get RoleBindings.
     	RoleBindings(namespace string) RoleBindingNamespaceLister
     	RoleBindingListerExpansion
    @@ -38,25 +38,17 @@ type RoleBindingLister interface {
     
     // roleBindingLister implements the RoleBindingLister interface.
     type roleBindingLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1.RoleBinding]
     }
     
     // NewRoleBindingLister returns a new RoleBindingLister.
     func NewRoleBindingLister(indexer cache.Indexer) RoleBindingLister {
    -	return &roleBindingLister{indexer: indexer}
    -}
    -
    -// List lists all RoleBindings in the indexer.
    -func (s *roleBindingLister) List(selector labels.Selector) (ret []*v1.RoleBinding, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.RoleBinding))
    -	})
    -	return ret, err
    +	return &roleBindingLister{listers.New[*rbacv1.RoleBinding](indexer, rbacv1.Resource("rolebinding"))}
     }
     
     // RoleBindings returns an object that can list and get RoleBindings.
     func (s *roleBindingLister) RoleBindings(namespace string) RoleBindingNamespaceLister {
    -	return roleBindingNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return roleBindingNamespaceLister{listers.NewNamespaced[*rbacv1.RoleBinding](s.ResourceIndexer, namespace)}
     }
     
     // RoleBindingNamespaceLister helps list and get RoleBindings.
    @@ -64,36 +56,15 @@ func (s *roleBindingLister) RoleBindings(namespace string) RoleBindingNamespaceL
     type RoleBindingNamespaceLister interface {
     	// List lists all RoleBindings in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.RoleBinding, err error)
    +	List(selector labels.Selector) (ret []*rbacv1.RoleBinding, err error)
     	// Get retrieves the RoleBinding from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.RoleBinding, error)
    +	Get(name string) (*rbacv1.RoleBinding, error)
     	RoleBindingNamespaceListerExpansion
     }
     
     // roleBindingNamespaceLister implements the RoleBindingNamespaceLister
     // interface.
     type roleBindingNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all RoleBindings in the indexer for a given namespace.
    -func (s roleBindingNamespaceLister) List(selector labels.Selector) (ret []*v1.RoleBinding, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.RoleBinding))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the RoleBinding from the indexer for a given namespace and name.
    -func (s roleBindingNamespaceLister) Get(name string) (*v1.RoleBinding, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("rolebinding"), name)
    -	}
    -	return obj.(*v1.RoleBinding), nil
    +	listers.ResourceIndexer[*rbacv1.RoleBinding]
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go
    index 181ea95a7d48..1783b71617e8 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ClusterRoleLister helps list ClusterRoles.
    @@ -30,39 +30,19 @@ import (
     type ClusterRoleLister interface {
     	// List lists all ClusterRoles in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.ClusterRole, err error)
    +	List(selector labels.Selector) (ret []*rbacv1alpha1.ClusterRole, err error)
     	// Get retrieves the ClusterRole from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.ClusterRole, error)
    +	Get(name string) (*rbacv1alpha1.ClusterRole, error)
     	ClusterRoleListerExpansion
     }
     
     // clusterRoleLister implements the ClusterRoleLister interface.
     type clusterRoleLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1alpha1.ClusterRole]
     }
     
     // NewClusterRoleLister returns a new ClusterRoleLister.
     func NewClusterRoleLister(indexer cache.Indexer) ClusterRoleLister {
    -	return &clusterRoleLister{indexer: indexer}
    -}
    -
    -// List lists all ClusterRoles in the indexer.
    -func (s *clusterRoleLister) List(selector labels.Selector) (ret []*v1alpha1.ClusterRole, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.ClusterRole))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ClusterRole from the index for a given name.
    -func (s *clusterRoleLister) Get(name string) (*v1alpha1.ClusterRole, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("clusterrole"), name)
    -	}
    -	return obj.(*v1alpha1.ClusterRole), nil
    +	return &clusterRoleLister{listers.New[*rbacv1alpha1.ClusterRole](indexer, rbacv1alpha1.Resource("clusterrole"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go
    index 29d283b6cf28..be80c7585dec 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ClusterRoleBindingLister helps list ClusterRoleBindings.
    @@ -30,39 +30,19 @@ import (
     type ClusterRoleBindingLister interface {
     	// List lists all ClusterRoleBindings in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.ClusterRoleBinding, err error)
    +	List(selector labels.Selector) (ret []*rbacv1alpha1.ClusterRoleBinding, err error)
     	// Get retrieves the ClusterRoleBinding from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.ClusterRoleBinding, error)
    +	Get(name string) (*rbacv1alpha1.ClusterRoleBinding, error)
     	ClusterRoleBindingListerExpansion
     }
     
     // clusterRoleBindingLister implements the ClusterRoleBindingLister interface.
     type clusterRoleBindingLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1alpha1.ClusterRoleBinding]
     }
     
     // NewClusterRoleBindingLister returns a new ClusterRoleBindingLister.
     func NewClusterRoleBindingLister(indexer cache.Indexer) ClusterRoleBindingLister {
    -	return &clusterRoleBindingLister{indexer: indexer}
    -}
    -
    -// List lists all ClusterRoleBindings in the indexer.
    -func (s *clusterRoleBindingLister) List(selector labels.Selector) (ret []*v1alpha1.ClusterRoleBinding, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.ClusterRoleBinding))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ClusterRoleBinding from the index for a given name.
    -func (s *clusterRoleBindingLister) Get(name string) (*v1alpha1.ClusterRoleBinding, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("clusterrolebinding"), name)
    -	}
    -	return obj.(*v1alpha1.ClusterRoleBinding), nil
    +	return &clusterRoleBindingLister{listers.New[*rbacv1alpha1.ClusterRoleBinding](indexer, rbacv1alpha1.Resource("clusterrolebinding"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go
    index 13a64137aed3..28a1ede19597 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // RoleLister helps list Roles.
    @@ -30,7 +30,7 @@ import (
     type RoleLister interface {
     	// List lists all Roles in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.Role, err error)
    +	List(selector labels.Selector) (ret []*rbacv1alpha1.Role, err error)
     	// Roles returns an object that can list and get Roles.
     	Roles(namespace string) RoleNamespaceLister
     	RoleListerExpansion
    @@ -38,25 +38,17 @@ type RoleLister interface {
     
     // roleLister implements the RoleLister interface.
     type roleLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1alpha1.Role]
     }
     
     // NewRoleLister returns a new RoleLister.
     func NewRoleLister(indexer cache.Indexer) RoleLister {
    -	return &roleLister{indexer: indexer}
    -}
    -
    -// List lists all Roles in the indexer.
    -func (s *roleLister) List(selector labels.Selector) (ret []*v1alpha1.Role, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.Role))
    -	})
    -	return ret, err
    +	return &roleLister{listers.New[*rbacv1alpha1.Role](indexer, rbacv1alpha1.Resource("role"))}
     }
     
     // Roles returns an object that can list and get Roles.
     func (s *roleLister) Roles(namespace string) RoleNamespaceLister {
    -	return roleNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return roleNamespaceLister{listers.NewNamespaced[*rbacv1alpha1.Role](s.ResourceIndexer, namespace)}
     }
     
     // RoleNamespaceLister helps list and get Roles.
    @@ -64,36 +56,15 @@ func (s *roleLister) Roles(namespace string) RoleNamespaceLister {
     type RoleNamespaceLister interface {
     	// List lists all Roles in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.Role, err error)
    +	List(selector labels.Selector) (ret []*rbacv1alpha1.Role, err error)
     	// Get retrieves the Role from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.Role, error)
    +	Get(name string) (*rbacv1alpha1.Role, error)
     	RoleNamespaceListerExpansion
     }
     
     // roleNamespaceLister implements the RoleNamespaceLister
     // interface.
     type roleNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Roles in the indexer for a given namespace.
    -func (s roleNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.Role, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.Role))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Role from the indexer for a given namespace and name.
    -func (s roleNamespaceLister) Get(name string) (*v1alpha1.Role, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("role"), name)
    -	}
    -	return obj.(*v1alpha1.Role), nil
    +	listers.ResourceIndexer[*rbacv1alpha1.Role]
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go
    index 0ad3d0eba061..67e123f638ff 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/rbac/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // RoleBindingLister helps list RoleBindings.
    @@ -30,7 +30,7 @@ import (
     type RoleBindingLister interface {
     	// List lists all RoleBindings in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.RoleBinding, err error)
    +	List(selector labels.Selector) (ret []*rbacv1alpha1.RoleBinding, err error)
     	// RoleBindings returns an object that can list and get RoleBindings.
     	RoleBindings(namespace string) RoleBindingNamespaceLister
     	RoleBindingListerExpansion
    @@ -38,25 +38,17 @@ type RoleBindingLister interface {
     
     // roleBindingLister implements the RoleBindingLister interface.
     type roleBindingLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1alpha1.RoleBinding]
     }
     
     // NewRoleBindingLister returns a new RoleBindingLister.
     func NewRoleBindingLister(indexer cache.Indexer) RoleBindingLister {
    -	return &roleBindingLister{indexer: indexer}
    -}
    -
    -// List lists all RoleBindings in the indexer.
    -func (s *roleBindingLister) List(selector labels.Selector) (ret []*v1alpha1.RoleBinding, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.RoleBinding))
    -	})
    -	return ret, err
    +	return &roleBindingLister{listers.New[*rbacv1alpha1.RoleBinding](indexer, rbacv1alpha1.Resource("rolebinding"))}
     }
     
     // RoleBindings returns an object that can list and get RoleBindings.
     func (s *roleBindingLister) RoleBindings(namespace string) RoleBindingNamespaceLister {
    -	return roleBindingNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return roleBindingNamespaceLister{listers.NewNamespaced[*rbacv1alpha1.RoleBinding](s.ResourceIndexer, namespace)}
     }
     
     // RoleBindingNamespaceLister helps list and get RoleBindings.
    @@ -64,36 +56,15 @@ func (s *roleBindingLister) RoleBindings(namespace string) RoleBindingNamespaceL
     type RoleBindingNamespaceLister interface {
     	// List lists all RoleBindings in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.RoleBinding, err error)
    +	List(selector labels.Selector) (ret []*rbacv1alpha1.RoleBinding, err error)
     	// Get retrieves the RoleBinding from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.RoleBinding, error)
    +	Get(name string) (*rbacv1alpha1.RoleBinding, error)
     	RoleBindingNamespaceListerExpansion
     }
     
     // roleBindingNamespaceLister implements the RoleBindingNamespaceLister
     // interface.
     type roleBindingNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all RoleBindings in the indexer for a given namespace.
    -func (s roleBindingNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.RoleBinding, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.RoleBinding))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the RoleBinding from the indexer for a given namespace and name.
    -func (s roleBindingNamespaceLister) Get(name string) (*v1alpha1.RoleBinding, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("rolebinding"), name)
    -	}
    -	return obj.(*v1alpha1.RoleBinding), nil
    +	listers.ResourceIndexer[*rbacv1alpha1.RoleBinding]
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go
    index bf6cd99cb14d..9cf996b86122 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/rbac/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ClusterRoleLister helps list ClusterRoles.
    @@ -30,39 +30,19 @@ import (
     type ClusterRoleLister interface {
     	// List lists all ClusterRoles in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.ClusterRole, err error)
    +	List(selector labels.Selector) (ret []*rbacv1beta1.ClusterRole, err error)
     	// Get retrieves the ClusterRole from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.ClusterRole, error)
    +	Get(name string) (*rbacv1beta1.ClusterRole, error)
     	ClusterRoleListerExpansion
     }
     
     // clusterRoleLister implements the ClusterRoleLister interface.
     type clusterRoleLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1beta1.ClusterRole]
     }
     
     // NewClusterRoleLister returns a new ClusterRoleLister.
     func NewClusterRoleLister(indexer cache.Indexer) ClusterRoleLister {
    -	return &clusterRoleLister{indexer: indexer}
    -}
    -
    -// List lists all ClusterRoles in the indexer.
    -func (s *clusterRoleLister) List(selector labels.Selector) (ret []*v1beta1.ClusterRole, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.ClusterRole))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ClusterRole from the index for a given name.
    -func (s *clusterRoleLister) Get(name string) (*v1beta1.ClusterRole, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("clusterrole"), name)
    -	}
    -	return obj.(*v1beta1.ClusterRole), nil
    +	return &clusterRoleLister{listers.New[*rbacv1beta1.ClusterRole](indexer, rbacv1beta1.Resource("clusterrole"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go
    index 00bab2330bd4..41418f7624b2 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/rbac/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ClusterRoleBindingLister helps list ClusterRoleBindings.
    @@ -30,39 +30,19 @@ import (
     type ClusterRoleBindingLister interface {
     	// List lists all ClusterRoleBindings in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.ClusterRoleBinding, err error)
    +	List(selector labels.Selector) (ret []*rbacv1beta1.ClusterRoleBinding, err error)
     	// Get retrieves the ClusterRoleBinding from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.ClusterRoleBinding, error)
    +	Get(name string) (*rbacv1beta1.ClusterRoleBinding, error)
     	ClusterRoleBindingListerExpansion
     }
     
     // clusterRoleBindingLister implements the ClusterRoleBindingLister interface.
     type clusterRoleBindingLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1beta1.ClusterRoleBinding]
     }
     
     // NewClusterRoleBindingLister returns a new ClusterRoleBindingLister.
     func NewClusterRoleBindingLister(indexer cache.Indexer) ClusterRoleBindingLister {
    -	return &clusterRoleBindingLister{indexer: indexer}
    -}
    -
    -// List lists all ClusterRoleBindings in the indexer.
    -func (s *clusterRoleBindingLister) List(selector labels.Selector) (ret []*v1beta1.ClusterRoleBinding, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.ClusterRoleBinding))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ClusterRoleBinding from the index for a given name.
    -func (s *clusterRoleBindingLister) Get(name string) (*v1beta1.ClusterRoleBinding, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("clusterrolebinding"), name)
    -	}
    -	return obj.(*v1beta1.ClusterRoleBinding), nil
    +	return &clusterRoleBindingLister{listers.New[*rbacv1beta1.ClusterRoleBinding](indexer, rbacv1beta1.Resource("clusterrolebinding"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go
    index 9cd9b9042df1..04d4ab7721bb 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/rbac/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // RoleLister helps list Roles.
    @@ -30,7 +30,7 @@ import (
     type RoleLister interface {
     	// List lists all Roles in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Role, err error)
    +	List(selector labels.Selector) (ret []*rbacv1beta1.Role, err error)
     	// Roles returns an object that can list and get Roles.
     	Roles(namespace string) RoleNamespaceLister
     	RoleListerExpansion
    @@ -38,25 +38,17 @@ type RoleLister interface {
     
     // roleLister implements the RoleLister interface.
     type roleLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1beta1.Role]
     }
     
     // NewRoleLister returns a new RoleLister.
     func NewRoleLister(indexer cache.Indexer) RoleLister {
    -	return &roleLister{indexer: indexer}
    -}
    -
    -// List lists all Roles in the indexer.
    -func (s *roleLister) List(selector labels.Selector) (ret []*v1beta1.Role, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Role))
    -	})
    -	return ret, err
    +	return &roleLister{listers.New[*rbacv1beta1.Role](indexer, rbacv1beta1.Resource("role"))}
     }
     
     // Roles returns an object that can list and get Roles.
     func (s *roleLister) Roles(namespace string) RoleNamespaceLister {
    -	return roleNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return roleNamespaceLister{listers.NewNamespaced[*rbacv1beta1.Role](s.ResourceIndexer, namespace)}
     }
     
     // RoleNamespaceLister helps list and get Roles.
    @@ -64,36 +56,15 @@ func (s *roleLister) Roles(namespace string) RoleNamespaceLister {
     type RoleNamespaceLister interface {
     	// List lists all Roles in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.Role, err error)
    +	List(selector labels.Selector) (ret []*rbacv1beta1.Role, err error)
     	// Get retrieves the Role from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.Role, error)
    +	Get(name string) (*rbacv1beta1.Role, error)
     	RoleNamespaceListerExpansion
     }
     
     // roleNamespaceLister implements the RoleNamespaceLister
     // interface.
     type roleNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all Roles in the indexer for a given namespace.
    -func (s roleNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Role, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.Role))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the Role from the indexer for a given namespace and name.
    -func (s roleNamespaceLister) Get(name string) (*v1beta1.Role, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("role"), name)
    -	}
    -	return obj.(*v1beta1.Role), nil
    +	listers.ResourceIndexer[*rbacv1beta1.Role]
     }
    diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go
    index 7c7c91bf3f73..8166732293cd 100644
    --- a/vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go
    +++ b/vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/rbac/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // RoleBindingLister helps list RoleBindings.
    @@ -30,7 +30,7 @@ import (
     type RoleBindingLister interface {
     	// List lists all RoleBindings in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.RoleBinding, err error)
    +	List(selector labels.Selector) (ret []*rbacv1beta1.RoleBinding, err error)
     	// RoleBindings returns an object that can list and get RoleBindings.
     	RoleBindings(namespace string) RoleBindingNamespaceLister
     	RoleBindingListerExpansion
    @@ -38,25 +38,17 @@ type RoleBindingLister interface {
     
     // roleBindingLister implements the RoleBindingLister interface.
     type roleBindingLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*rbacv1beta1.RoleBinding]
     }
     
     // NewRoleBindingLister returns a new RoleBindingLister.
     func NewRoleBindingLister(indexer cache.Indexer) RoleBindingLister {
    -	return &roleBindingLister{indexer: indexer}
    -}
    -
    -// List lists all RoleBindings in the indexer.
    -func (s *roleBindingLister) List(selector labels.Selector) (ret []*v1beta1.RoleBinding, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.RoleBinding))
    -	})
    -	return ret, err
    +	return &roleBindingLister{listers.New[*rbacv1beta1.RoleBinding](indexer, rbacv1beta1.Resource("rolebinding"))}
     }
     
     // RoleBindings returns an object that can list and get RoleBindings.
     func (s *roleBindingLister) RoleBindings(namespace string) RoleBindingNamespaceLister {
    -	return roleBindingNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return roleBindingNamespaceLister{listers.NewNamespaced[*rbacv1beta1.RoleBinding](s.ResourceIndexer, namespace)}
     }
     
     // RoleBindingNamespaceLister helps list and get RoleBindings.
    @@ -64,36 +56,15 @@ func (s *roleBindingLister) RoleBindings(namespace string) RoleBindingNamespaceL
     type RoleBindingNamespaceLister interface {
     	// List lists all RoleBindings in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.RoleBinding, err error)
    +	List(selector labels.Selector) (ret []*rbacv1beta1.RoleBinding, err error)
     	// Get retrieves the RoleBinding from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.RoleBinding, error)
    +	Get(name string) (*rbacv1beta1.RoleBinding, error)
     	RoleBindingNamespaceListerExpansion
     }
     
     // roleBindingNamespaceLister implements the RoleBindingNamespaceLister
     // interface.
     type roleBindingNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all RoleBindings in the indexer for a given namespace.
    -func (s roleBindingNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.RoleBinding, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.RoleBinding))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the RoleBinding from the indexer for a given namespace and name.
    -func (s roleBindingNamespaceLister) Get(name string) (*v1beta1.RoleBinding, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("rolebinding"), name)
    -	}
    -	return obj.(*v1beta1.RoleBinding), nil
    +	listers.ResourceIndexer[*rbacv1beta1.RoleBinding]
     }
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1alpha2/podschedulingcontext.go b/vendor/k8s.io/client-go/listers/resource/v1alpha2/podschedulingcontext.go
    deleted file mode 100644
    index c50b3f889028..000000000000
    --- a/vendor/k8s.io/client-go/listers/resource/v1alpha2/podschedulingcontext.go
    +++ /dev/null
    @@ -1,99 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by lister-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -import (
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    -)
    -
    -// PodSchedulingContextLister helps list PodSchedulingContexts.
    -// All objects returned here must be treated as read-only.
    -type PodSchedulingContextLister interface {
    -	// List lists all PodSchedulingContexts in the indexer.
    -	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha2.PodSchedulingContext, err error)
    -	// PodSchedulingContexts returns an object that can list and get PodSchedulingContexts.
    -	PodSchedulingContexts(namespace string) PodSchedulingContextNamespaceLister
    -	PodSchedulingContextListerExpansion
    -}
    -
    -// podSchedulingContextLister implements the PodSchedulingContextLister interface.
    -type podSchedulingContextLister struct {
    -	indexer cache.Indexer
    -}
    -
    -// NewPodSchedulingContextLister returns a new PodSchedulingContextLister.
    -func NewPodSchedulingContextLister(indexer cache.Indexer) PodSchedulingContextLister {
    -	return &podSchedulingContextLister{indexer: indexer}
    -}
    -
    -// List lists all PodSchedulingContexts in the indexer.
    -func (s *podSchedulingContextLister) List(selector labels.Selector) (ret []*v1alpha2.PodSchedulingContext, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha2.PodSchedulingContext))
    -	})
    -	return ret, err
    -}
    -
    -// PodSchedulingContexts returns an object that can list and get PodSchedulingContexts.
    -func (s *podSchedulingContextLister) PodSchedulingContexts(namespace string) PodSchedulingContextNamespaceLister {
    -	return podSchedulingContextNamespaceLister{indexer: s.indexer, namespace: namespace}
    -}
    -
    -// PodSchedulingContextNamespaceLister helps list and get PodSchedulingContexts.
    -// All objects returned here must be treated as read-only.
    -type PodSchedulingContextNamespaceLister interface {
    -	// List lists all PodSchedulingContexts in the indexer for a given namespace.
    -	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha2.PodSchedulingContext, err error)
    -	// Get retrieves the PodSchedulingContext from the indexer for a given namespace and name.
    -	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha2.PodSchedulingContext, error)
    -	PodSchedulingContextNamespaceListerExpansion
    -}
    -
    -// podSchedulingContextNamespaceLister implements the PodSchedulingContextNamespaceLister
    -// interface.
    -type podSchedulingContextNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all PodSchedulingContexts in the indexer for a given namespace.
    -func (s podSchedulingContextNamespaceLister) List(selector labels.Selector) (ret []*v1alpha2.PodSchedulingContext, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha2.PodSchedulingContext))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PodSchedulingContext from the indexer for a given namespace and name.
    -func (s podSchedulingContextNamespaceLister) Get(name string) (*v1alpha2.PodSchedulingContext, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha2.Resource("podschedulingcontext"), name)
    -	}
    -	return obj.(*v1alpha2.PodSchedulingContext), nil
    -}
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclass.go b/vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclass.go
    deleted file mode 100644
    index eeb2fc337947..000000000000
    --- a/vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclass.go
    +++ /dev/null
    @@ -1,68 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by lister-gen. DO NOT EDIT.
    -
    -package v1alpha2
    -
    -import (
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    -)
    -
    -// ResourceClassLister helps list ResourceClasses.
    -// All objects returned here must be treated as read-only.
    -type ResourceClassLister interface {
    -	// List lists all ResourceClasses in the indexer.
    -	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha2.ResourceClass, err error)
    -	// Get retrieves the ResourceClass from the index for a given name.
    -	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha2.ResourceClass, error)
    -	ResourceClassListerExpansion
    -}
    -
    -// resourceClassLister implements the ResourceClassLister interface.
    -type resourceClassLister struct {
    -	indexer cache.Indexer
    -}
    -
    -// NewResourceClassLister returns a new ResourceClassLister.
    -func NewResourceClassLister(indexer cache.Indexer) ResourceClassLister {
    -	return &resourceClassLister{indexer: indexer}
    -}
    -
    -// List lists all ResourceClasses in the indexer.
    -func (s *resourceClassLister) List(selector labels.Selector) (ret []*v1alpha2.ResourceClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha2.ResourceClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ResourceClass from the index for a given name.
    -func (s *resourceClassLister) Get(name string) (*v1alpha2.ResourceClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha2.Resource("resourceclass"), name)
    -	}
    -	return obj.(*v1alpha2.ResourceClass), nil
    -}
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1alpha3/deviceclass.go b/vendor/k8s.io/client-go/listers/resource/v1alpha3/deviceclass.go
    new file mode 100644
    index 000000000000..05032833b0c7
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/resource/v1alpha3/deviceclass.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// DeviceClassLister helps list DeviceClasses.
    +// All objects returned here must be treated as read-only.
    +type DeviceClassLister interface {
    +	// List lists all DeviceClasses in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*resourcev1alpha3.DeviceClass, err error)
    +	// Get retrieves the DeviceClass from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*resourcev1alpha3.DeviceClass, error)
    +	DeviceClassListerExpansion
    +}
    +
    +// deviceClassLister implements the DeviceClassLister interface.
    +type deviceClassLister struct {
    +	listers.ResourceIndexer[*resourcev1alpha3.DeviceClass]
    +}
    +
    +// NewDeviceClassLister returns a new DeviceClassLister.
    +func NewDeviceClassLister(indexer cache.Indexer) DeviceClassLister {
    +	return &deviceClassLister{listers.New[*resourcev1alpha3.DeviceClass](indexer, resourcev1alpha3.Resource("deviceclass"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1alpha2/expansion_generated.go b/vendor/k8s.io/client-go/listers/resource/v1alpha3/expansion_generated.go
    similarity index 71%
    rename from vendor/k8s.io/client-go/listers/resource/v1alpha2/expansion_generated.go
    rename to vendor/k8s.io/client-go/listers/resource/v1alpha3/expansion_generated.go
    index 3b16e44290ce..f626c92837e2 100644
    --- a/vendor/k8s.io/client-go/listers/resource/v1alpha2/expansion_generated.go
    +++ b/vendor/k8s.io/client-go/listers/resource/v1alpha3/expansion_generated.go
    @@ -16,15 +16,11 @@ limitations under the License.
     
     // Code generated by lister-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
    -// PodSchedulingContextListerExpansion allows custom methods to be added to
    -// PodSchedulingContextLister.
    -type PodSchedulingContextListerExpansion interface{}
    -
    -// PodSchedulingContextNamespaceListerExpansion allows custom methods to be added to
    -// PodSchedulingContextNamespaceLister.
    -type PodSchedulingContextNamespaceListerExpansion interface{}
    +// DeviceClassListerExpansion allows custom methods to be added to
    +// DeviceClassLister.
    +type DeviceClassListerExpansion interface{}
     
     // ResourceClaimListerExpansion allows custom methods to be added to
     // ResourceClaimLister.
    @@ -42,6 +38,6 @@ type ResourceClaimTemplateListerExpansion interface{}
     // ResourceClaimTemplateNamespaceLister.
     type ResourceClaimTemplateNamespaceListerExpansion interface{}
     
    -// ResourceClassListerExpansion allows custom methods to be added to
    -// ResourceClassLister.
    -type ResourceClassListerExpansion interface{}
    +// ResourceSliceListerExpansion allows custom methods to be added to
    +// ResourceSliceLister.
    +type ResourceSliceListerExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclaim.go b/vendor/k8s.io/client-go/listers/resource/v1alpha3/resourceclaim.go
    similarity index 56%
    rename from vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclaim.go
    rename to vendor/k8s.io/client-go/listers/resource/v1alpha3/resourceclaim.go
    index 273f16af31ff..9de229bff5b8 100644
    --- a/vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclaim.go
    +++ b/vendor/k8s.io/client-go/listers/resource/v1alpha3/resourceclaim.go
    @@ -16,13 +16,13 @@ limitations under the License.
     
     // Code generated by lister-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1alpha3
     
     import (
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ResourceClaimLister helps list ResourceClaims.
    @@ -30,7 +30,7 @@ import (
     type ResourceClaimLister interface {
     	// List lists all ResourceClaims in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha2.ResourceClaim, err error)
    +	List(selector labels.Selector) (ret []*resourcev1alpha3.ResourceClaim, err error)
     	// ResourceClaims returns an object that can list and get ResourceClaims.
     	ResourceClaims(namespace string) ResourceClaimNamespaceLister
     	ResourceClaimListerExpansion
    @@ -38,25 +38,17 @@ type ResourceClaimLister interface {
     
     // resourceClaimLister implements the ResourceClaimLister interface.
     type resourceClaimLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*resourcev1alpha3.ResourceClaim]
     }
     
     // NewResourceClaimLister returns a new ResourceClaimLister.
     func NewResourceClaimLister(indexer cache.Indexer) ResourceClaimLister {
    -	return &resourceClaimLister{indexer: indexer}
    -}
    -
    -// List lists all ResourceClaims in the indexer.
    -func (s *resourceClaimLister) List(selector labels.Selector) (ret []*v1alpha2.ResourceClaim, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha2.ResourceClaim))
    -	})
    -	return ret, err
    +	return &resourceClaimLister{listers.New[*resourcev1alpha3.ResourceClaim](indexer, resourcev1alpha3.Resource("resourceclaim"))}
     }
     
     // ResourceClaims returns an object that can list and get ResourceClaims.
     func (s *resourceClaimLister) ResourceClaims(namespace string) ResourceClaimNamespaceLister {
    -	return resourceClaimNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return resourceClaimNamespaceLister{listers.NewNamespaced[*resourcev1alpha3.ResourceClaim](s.ResourceIndexer, namespace)}
     }
     
     // ResourceClaimNamespaceLister helps list and get ResourceClaims.
    @@ -64,36 +56,15 @@ func (s *resourceClaimLister) ResourceClaims(namespace string) ResourceClaimName
     type ResourceClaimNamespaceLister interface {
     	// List lists all ResourceClaims in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha2.ResourceClaim, err error)
    +	List(selector labels.Selector) (ret []*resourcev1alpha3.ResourceClaim, err error)
     	// Get retrieves the ResourceClaim from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha2.ResourceClaim, error)
    +	Get(name string) (*resourcev1alpha3.ResourceClaim, error)
     	ResourceClaimNamespaceListerExpansion
     }
     
     // resourceClaimNamespaceLister implements the ResourceClaimNamespaceLister
     // interface.
     type resourceClaimNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ResourceClaims in the indexer for a given namespace.
    -func (s resourceClaimNamespaceLister) List(selector labels.Selector) (ret []*v1alpha2.ResourceClaim, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha2.ResourceClaim))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ResourceClaim from the indexer for a given namespace and name.
    -func (s resourceClaimNamespaceLister) Get(name string) (*v1alpha2.ResourceClaim, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha2.Resource("resourceclaim"), name)
    -	}
    -	return obj.(*v1alpha2.ResourceClaim), nil
    +	listers.ResourceIndexer[*resourcev1alpha3.ResourceClaim]
     }
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1alpha3/resourceclaimtemplate.go b/vendor/k8s.io/client-go/listers/resource/v1alpha3/resourceclaimtemplate.go
    new file mode 100644
    index 000000000000..b0895edd202d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/resource/v1alpha3/resourceclaimtemplate.go
    @@ -0,0 +1,70 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ResourceClaimTemplateLister helps list ResourceClaimTemplates.
    +// All objects returned here must be treated as read-only.
    +type ResourceClaimTemplateLister interface {
    +	// List lists all ResourceClaimTemplates in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*resourcev1alpha3.ResourceClaimTemplate, err error)
    +	// ResourceClaimTemplates returns an object that can list and get ResourceClaimTemplates.
    +	ResourceClaimTemplates(namespace string) ResourceClaimTemplateNamespaceLister
    +	ResourceClaimTemplateListerExpansion
    +}
    +
    +// resourceClaimTemplateLister implements the ResourceClaimTemplateLister interface.
    +type resourceClaimTemplateLister struct {
    +	listers.ResourceIndexer[*resourcev1alpha3.ResourceClaimTemplate]
    +}
    +
    +// NewResourceClaimTemplateLister returns a new ResourceClaimTemplateLister.
    +func NewResourceClaimTemplateLister(indexer cache.Indexer) ResourceClaimTemplateLister {
    +	return &resourceClaimTemplateLister{listers.New[*resourcev1alpha3.ResourceClaimTemplate](indexer, resourcev1alpha3.Resource("resourceclaimtemplate"))}
    +}
    +
    +// ResourceClaimTemplates returns an object that can list and get ResourceClaimTemplates.
    +func (s *resourceClaimTemplateLister) ResourceClaimTemplates(namespace string) ResourceClaimTemplateNamespaceLister {
    +	return resourceClaimTemplateNamespaceLister{listers.NewNamespaced[*resourcev1alpha3.ResourceClaimTemplate](s.ResourceIndexer, namespace)}
    +}
    +
    +// ResourceClaimTemplateNamespaceLister helps list and get ResourceClaimTemplates.
    +// All objects returned here must be treated as read-only.
    +type ResourceClaimTemplateNamespaceLister interface {
    +	// List lists all ResourceClaimTemplates in the indexer for a given namespace.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*resourcev1alpha3.ResourceClaimTemplate, err error)
    +	// Get retrieves the ResourceClaimTemplate from the indexer for a given namespace and name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*resourcev1alpha3.ResourceClaimTemplate, error)
    +	ResourceClaimTemplateNamespaceListerExpansion
    +}
    +
    +// resourceClaimTemplateNamespaceLister implements the ResourceClaimTemplateNamespaceLister
    +// interface.
    +type resourceClaimTemplateNamespaceLister struct {
    +	listers.ResourceIndexer[*resourcev1alpha3.ResourceClaimTemplate]
    +}
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1alpha3/resourceslice.go b/vendor/k8s.io/client-go/listers/resource/v1alpha3/resourceslice.go
    new file mode 100644
    index 000000000000..66b1b9e060fa
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/resource/v1alpha3/resourceslice.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1alpha3
    +
    +import (
    +	resourcev1alpha3 "k8s.io/api/resource/v1alpha3"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ResourceSliceLister helps list ResourceSlices.
    +// All objects returned here must be treated as read-only.
    +type ResourceSliceLister interface {
    +	// List lists all ResourceSlices in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*resourcev1alpha3.ResourceSlice, err error)
    +	// Get retrieves the ResourceSlice from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*resourcev1alpha3.ResourceSlice, error)
    +	ResourceSliceListerExpansion
    +}
    +
    +// resourceSliceLister implements the ResourceSliceLister interface.
    +type resourceSliceLister struct {
    +	listers.ResourceIndexer[*resourcev1alpha3.ResourceSlice]
    +}
    +
    +// NewResourceSliceLister returns a new ResourceSliceLister.
    +func NewResourceSliceLister(indexer cache.Indexer) ResourceSliceLister {
    +	return &resourceSliceLister{listers.New[*resourcev1alpha3.ResourceSlice](indexer, resourcev1alpha3.Resource("resourceslice"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1beta1/deviceclass.go b/vendor/k8s.io/client-go/listers/resource/v1beta1/deviceclass.go
    new file mode 100644
    index 000000000000..a386fb269cd2
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/resource/v1beta1/deviceclass.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// DeviceClassLister helps list DeviceClasses.
    +// All objects returned here must be treated as read-only.
    +type DeviceClassLister interface {
    +	// List lists all DeviceClasses in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*resourcev1beta1.DeviceClass, err error)
    +	// Get retrieves the DeviceClass from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*resourcev1beta1.DeviceClass, error)
    +	DeviceClassListerExpansion
    +}
    +
    +// deviceClassLister implements the DeviceClassLister interface.
    +type deviceClassLister struct {
    +	listers.ResourceIndexer[*resourcev1beta1.DeviceClass]
    +}
    +
    +// NewDeviceClassLister returns a new DeviceClassLister.
    +func NewDeviceClassLister(indexer cache.Indexer) DeviceClassLister {
    +	return &deviceClassLister{listers.New[*resourcev1beta1.DeviceClass](indexer, resourcev1beta1.Resource("deviceclass"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/resource/v1beta1/expansion_generated.go
    new file mode 100644
    index 000000000000..c50a006d8e00
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/resource/v1beta1/expansion_generated.go
    @@ -0,0 +1,43 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +// DeviceClassListerExpansion allows custom methods to be added to
    +// DeviceClassLister.
    +type DeviceClassListerExpansion interface{}
    +
    +// ResourceClaimListerExpansion allows custom methods to be added to
    +// ResourceClaimLister.
    +type ResourceClaimListerExpansion interface{}
    +
    +// ResourceClaimNamespaceListerExpansion allows custom methods to be added to
    +// ResourceClaimNamespaceLister.
    +type ResourceClaimNamespaceListerExpansion interface{}
    +
    +// ResourceClaimTemplateListerExpansion allows custom methods to be added to
    +// ResourceClaimTemplateLister.
    +type ResourceClaimTemplateListerExpansion interface{}
    +
    +// ResourceClaimTemplateNamespaceListerExpansion allows custom methods to be added to
    +// ResourceClaimTemplateNamespaceLister.
    +type ResourceClaimTemplateNamespaceListerExpansion interface{}
    +
    +// ResourceSliceListerExpansion allows custom methods to be added to
    +// ResourceSliceLister.
    +type ResourceSliceListerExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1beta1/resourceclaim.go b/vendor/k8s.io/client-go/listers/resource/v1beta1/resourceclaim.go
    new file mode 100644
    index 000000000000..4342273944dd
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/resource/v1beta1/resourceclaim.go
    @@ -0,0 +1,70 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ResourceClaimLister helps list ResourceClaims.
    +// All objects returned here must be treated as read-only.
    +type ResourceClaimLister interface {
    +	// List lists all ResourceClaims in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*resourcev1beta1.ResourceClaim, err error)
    +	// ResourceClaims returns an object that can list and get ResourceClaims.
    +	ResourceClaims(namespace string) ResourceClaimNamespaceLister
    +	ResourceClaimListerExpansion
    +}
    +
    +// resourceClaimLister implements the ResourceClaimLister interface.
    +type resourceClaimLister struct {
    +	listers.ResourceIndexer[*resourcev1beta1.ResourceClaim]
    +}
    +
    +// NewResourceClaimLister returns a new ResourceClaimLister.
    +func NewResourceClaimLister(indexer cache.Indexer) ResourceClaimLister {
    +	return &resourceClaimLister{listers.New[*resourcev1beta1.ResourceClaim](indexer, resourcev1beta1.Resource("resourceclaim"))}
    +}
    +
    +// ResourceClaims returns an object that can list and get ResourceClaims.
    +func (s *resourceClaimLister) ResourceClaims(namespace string) ResourceClaimNamespaceLister {
    +	return resourceClaimNamespaceLister{listers.NewNamespaced[*resourcev1beta1.ResourceClaim](s.ResourceIndexer, namespace)}
    +}
    +
    +// ResourceClaimNamespaceLister helps list and get ResourceClaims.
    +// All objects returned here must be treated as read-only.
    +type ResourceClaimNamespaceLister interface {
    +	// List lists all ResourceClaims in the indexer for a given namespace.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*resourcev1beta1.ResourceClaim, err error)
    +	// Get retrieves the ResourceClaim from the indexer for a given namespace and name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*resourcev1beta1.ResourceClaim, error)
    +	ResourceClaimNamespaceListerExpansion
    +}
    +
    +// resourceClaimNamespaceLister implements the ResourceClaimNamespaceLister
    +// interface.
    +type resourceClaimNamespaceLister struct {
    +	listers.ResourceIndexer[*resourcev1beta1.ResourceClaim]
    +}
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclaimtemplate.go b/vendor/k8s.io/client-go/listers/resource/v1beta1/resourceclaimtemplate.go
    similarity index 57%
    rename from vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclaimtemplate.go
    rename to vendor/k8s.io/client-go/listers/resource/v1beta1/resourceclaimtemplate.go
    index 91a488b17494..152646a90a4b 100644
    --- a/vendor/k8s.io/client-go/listers/resource/v1alpha2/resourceclaimtemplate.go
    +++ b/vendor/k8s.io/client-go/listers/resource/v1beta1/resourceclaimtemplate.go
    @@ -16,13 +16,13 @@ limitations under the License.
     
     // Code generated by lister-gen. DO NOT EDIT.
     
    -package v1alpha2
    +package v1beta1
     
     import (
    -	v1alpha2 "k8s.io/api/resource/v1alpha2"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // ResourceClaimTemplateLister helps list ResourceClaimTemplates.
    @@ -30,7 +30,7 @@ import (
     type ResourceClaimTemplateLister interface {
     	// List lists all ResourceClaimTemplates in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha2.ResourceClaimTemplate, err error)
    +	List(selector labels.Selector) (ret []*resourcev1beta1.ResourceClaimTemplate, err error)
     	// ResourceClaimTemplates returns an object that can list and get ResourceClaimTemplates.
     	ResourceClaimTemplates(namespace string) ResourceClaimTemplateNamespaceLister
     	ResourceClaimTemplateListerExpansion
    @@ -38,25 +38,17 @@ type ResourceClaimTemplateLister interface {
     
     // resourceClaimTemplateLister implements the ResourceClaimTemplateLister interface.
     type resourceClaimTemplateLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*resourcev1beta1.ResourceClaimTemplate]
     }
     
     // NewResourceClaimTemplateLister returns a new ResourceClaimTemplateLister.
     func NewResourceClaimTemplateLister(indexer cache.Indexer) ResourceClaimTemplateLister {
    -	return &resourceClaimTemplateLister{indexer: indexer}
    -}
    -
    -// List lists all ResourceClaimTemplates in the indexer.
    -func (s *resourceClaimTemplateLister) List(selector labels.Selector) (ret []*v1alpha2.ResourceClaimTemplate, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha2.ResourceClaimTemplate))
    -	})
    -	return ret, err
    +	return &resourceClaimTemplateLister{listers.New[*resourcev1beta1.ResourceClaimTemplate](indexer, resourcev1beta1.Resource("resourceclaimtemplate"))}
     }
     
     // ResourceClaimTemplates returns an object that can list and get ResourceClaimTemplates.
     func (s *resourceClaimTemplateLister) ResourceClaimTemplates(namespace string) ResourceClaimTemplateNamespaceLister {
    -	return resourceClaimTemplateNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return resourceClaimTemplateNamespaceLister{listers.NewNamespaced[*resourcev1beta1.ResourceClaimTemplate](s.ResourceIndexer, namespace)}
     }
     
     // ResourceClaimTemplateNamespaceLister helps list and get ResourceClaimTemplates.
    @@ -64,36 +56,15 @@ func (s *resourceClaimTemplateLister) ResourceClaimTemplates(namespace string) R
     type ResourceClaimTemplateNamespaceLister interface {
     	// List lists all ResourceClaimTemplates in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha2.ResourceClaimTemplate, err error)
    +	List(selector labels.Selector) (ret []*resourcev1beta1.ResourceClaimTemplate, err error)
     	// Get retrieves the ResourceClaimTemplate from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha2.ResourceClaimTemplate, error)
    +	Get(name string) (*resourcev1beta1.ResourceClaimTemplate, error)
     	ResourceClaimTemplateNamespaceListerExpansion
     }
     
     // resourceClaimTemplateNamespaceLister implements the ResourceClaimTemplateNamespaceLister
     // interface.
     type resourceClaimTemplateNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all ResourceClaimTemplates in the indexer for a given namespace.
    -func (s resourceClaimTemplateNamespaceLister) List(selector labels.Selector) (ret []*v1alpha2.ResourceClaimTemplate, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha2.ResourceClaimTemplate))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the ResourceClaimTemplate from the indexer for a given namespace and name.
    -func (s resourceClaimTemplateNamespaceLister) Get(name string) (*v1alpha2.ResourceClaimTemplate, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha2.Resource("resourceclaimtemplate"), name)
    -	}
    -	return obj.(*v1alpha2.ResourceClaimTemplate), nil
    +	listers.ResourceIndexer[*resourcev1beta1.ResourceClaimTemplate]
     }
    diff --git a/vendor/k8s.io/client-go/listers/resource/v1beta1/resourceslice.go b/vendor/k8s.io/client-go/listers/resource/v1beta1/resourceslice.go
    new file mode 100644
    index 000000000000..fbe10847648d
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/resource/v1beta1/resourceslice.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	resourcev1beta1 "k8s.io/api/resource/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// ResourceSliceLister helps list ResourceSlices.
    +// All objects returned here must be treated as read-only.
    +type ResourceSliceLister interface {
    +	// List lists all ResourceSlices in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*resourcev1beta1.ResourceSlice, err error)
    +	// Get retrieves the ResourceSlice from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*resourcev1beta1.ResourceSlice, error)
    +	ResourceSliceListerExpansion
    +}
    +
    +// resourceSliceLister implements the ResourceSliceLister interface.
    +type resourceSliceLister struct {
    +	listers.ResourceIndexer[*resourcev1beta1.ResourceSlice]
    +}
    +
    +// NewResourceSliceLister returns a new ResourceSliceLister.
    +func NewResourceSliceLister(indexer cache.Indexer) ResourceSliceLister {
    +	return &resourceSliceLister{listers.New[*resourcev1beta1.ResourceSlice](indexer, resourcev1beta1.Resource("resourceslice"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/scheduling/v1/priorityclass.go b/vendor/k8s.io/client-go/listers/scheduling/v1/priorityclass.go
    index 4da84ccf8a3a..deadbe2f8b1a 100644
    --- a/vendor/k8s.io/client-go/listers/scheduling/v1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/listers/scheduling/v1/priorityclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/scheduling/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	schedulingv1 "k8s.io/api/scheduling/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PriorityClassLister helps list PriorityClasses.
    @@ -30,39 +30,19 @@ import (
     type PriorityClassLister interface {
     	// List lists all PriorityClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.PriorityClass, err error)
    +	List(selector labels.Selector) (ret []*schedulingv1.PriorityClass, err error)
     	// Get retrieves the PriorityClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.PriorityClass, error)
    +	Get(name string) (*schedulingv1.PriorityClass, error)
     	PriorityClassListerExpansion
     }
     
     // priorityClassLister implements the PriorityClassLister interface.
     type priorityClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*schedulingv1.PriorityClass]
     }
     
     // NewPriorityClassLister returns a new PriorityClassLister.
     func NewPriorityClassLister(indexer cache.Indexer) PriorityClassLister {
    -	return &priorityClassLister{indexer: indexer}
    -}
    -
    -// List lists all PriorityClasses in the indexer.
    -func (s *priorityClassLister) List(selector labels.Selector) (ret []*v1.PriorityClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.PriorityClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PriorityClass from the index for a given name.
    -func (s *priorityClassLister) Get(name string) (*v1.PriorityClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("priorityclass"), name)
    -	}
    -	return obj.(*v1.PriorityClass), nil
    +	return &priorityClassLister{listers.New[*schedulingv1.PriorityClass](indexer, schedulingv1.Resource("priorityclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/priorityclass.go b/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/priorityclass.go
    index 3d25dc80af32..7beaf46322aa 100644
    --- a/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/priorityclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/scheduling/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PriorityClassLister helps list PriorityClasses.
    @@ -30,39 +30,19 @@ import (
     type PriorityClassLister interface {
     	// List lists all PriorityClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.PriorityClass, err error)
    +	List(selector labels.Selector) (ret []*schedulingv1alpha1.PriorityClass, err error)
     	// Get retrieves the PriorityClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.PriorityClass, error)
    +	Get(name string) (*schedulingv1alpha1.PriorityClass, error)
     	PriorityClassListerExpansion
     }
     
     // priorityClassLister implements the PriorityClassLister interface.
     type priorityClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*schedulingv1alpha1.PriorityClass]
     }
     
     // NewPriorityClassLister returns a new PriorityClassLister.
     func NewPriorityClassLister(indexer cache.Indexer) PriorityClassLister {
    -	return &priorityClassLister{indexer: indexer}
    -}
    -
    -// List lists all PriorityClasses in the indexer.
    -func (s *priorityClassLister) List(selector labels.Selector) (ret []*v1alpha1.PriorityClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.PriorityClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PriorityClass from the index for a given name.
    -func (s *priorityClassLister) Get(name string) (*v1alpha1.PriorityClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("priorityclass"), name)
    -	}
    -	return obj.(*v1alpha1.PriorityClass), nil
    +	return &priorityClassLister{listers.New[*schedulingv1alpha1.PriorityClass](indexer, schedulingv1alpha1.Resource("priorityclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/scheduling/v1beta1/priorityclass.go b/vendor/k8s.io/client-go/listers/scheduling/v1beta1/priorityclass.go
    index c848d035afc0..92fd17de6d9f 100644
    --- a/vendor/k8s.io/client-go/listers/scheduling/v1beta1/priorityclass.go
    +++ b/vendor/k8s.io/client-go/listers/scheduling/v1beta1/priorityclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/scheduling/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // PriorityClassLister helps list PriorityClasses.
    @@ -30,39 +30,19 @@ import (
     type PriorityClassLister interface {
     	// List lists all PriorityClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.PriorityClass, err error)
    +	List(selector labels.Selector) (ret []*schedulingv1beta1.PriorityClass, err error)
     	// Get retrieves the PriorityClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.PriorityClass, error)
    +	Get(name string) (*schedulingv1beta1.PriorityClass, error)
     	PriorityClassListerExpansion
     }
     
     // priorityClassLister implements the PriorityClassLister interface.
     type priorityClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*schedulingv1beta1.PriorityClass]
     }
     
     // NewPriorityClassLister returns a new PriorityClassLister.
     func NewPriorityClassLister(indexer cache.Indexer) PriorityClassLister {
    -	return &priorityClassLister{indexer: indexer}
    -}
    -
    -// List lists all PriorityClasses in the indexer.
    -func (s *priorityClassLister) List(selector labels.Selector) (ret []*v1beta1.PriorityClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.PriorityClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the PriorityClass from the index for a given name.
    -func (s *priorityClassLister) Get(name string) (*v1beta1.PriorityClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("priorityclass"), name)
    -	}
    -	return obj.(*v1beta1.PriorityClass), nil
    +	return &priorityClassLister{listers.New[*schedulingv1beta1.PriorityClass](indexer, schedulingv1beta1.Resource("priorityclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1/csidriver.go b/vendor/k8s.io/client-go/listers/storage/v1/csidriver.go
    index 4e8ab909007b..dff96e691000 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1/csidriver.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1/csidriver.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/storage/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1 "k8s.io/api/storage/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CSIDriverLister helps list CSIDrivers.
    @@ -30,39 +30,19 @@ import (
     type CSIDriverLister interface {
     	// List lists all CSIDrivers in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.CSIDriver, err error)
    +	List(selector labels.Selector) (ret []*storagev1.CSIDriver, err error)
     	// Get retrieves the CSIDriver from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.CSIDriver, error)
    +	Get(name string) (*storagev1.CSIDriver, error)
     	CSIDriverListerExpansion
     }
     
     // cSIDriverLister implements the CSIDriverLister interface.
     type cSIDriverLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1.CSIDriver]
     }
     
     // NewCSIDriverLister returns a new CSIDriverLister.
     func NewCSIDriverLister(indexer cache.Indexer) CSIDriverLister {
    -	return &cSIDriverLister{indexer: indexer}
    -}
    -
    -// List lists all CSIDrivers in the indexer.
    -func (s *cSIDriverLister) List(selector labels.Selector) (ret []*v1.CSIDriver, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.CSIDriver))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CSIDriver from the index for a given name.
    -func (s *cSIDriverLister) Get(name string) (*v1.CSIDriver, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("csidriver"), name)
    -	}
    -	return obj.(*v1.CSIDriver), nil
    +	return &cSIDriverLister{listers.New[*storagev1.CSIDriver](indexer, storagev1.Resource("csidriver"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1/csinode.go b/vendor/k8s.io/client-go/listers/storage/v1/csinode.go
    index 93f869572cae..85a2ad6b5da6 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1/csinode.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1/csinode.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/storage/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1 "k8s.io/api/storage/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CSINodeLister helps list CSINodes.
    @@ -30,39 +30,19 @@ import (
     type CSINodeLister interface {
     	// List lists all CSINodes in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.CSINode, err error)
    +	List(selector labels.Selector) (ret []*storagev1.CSINode, err error)
     	// Get retrieves the CSINode from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.CSINode, error)
    +	Get(name string) (*storagev1.CSINode, error)
     	CSINodeListerExpansion
     }
     
     // cSINodeLister implements the CSINodeLister interface.
     type cSINodeLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1.CSINode]
     }
     
     // NewCSINodeLister returns a new CSINodeLister.
     func NewCSINodeLister(indexer cache.Indexer) CSINodeLister {
    -	return &cSINodeLister{indexer: indexer}
    -}
    -
    -// List lists all CSINodes in the indexer.
    -func (s *cSINodeLister) List(selector labels.Selector) (ret []*v1.CSINode, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.CSINode))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CSINode from the index for a given name.
    -func (s *cSINodeLister) Get(name string) (*v1.CSINode, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("csinode"), name)
    -	}
    -	return obj.(*v1.CSINode), nil
    +	return &cSINodeLister{listers.New[*storagev1.CSINode](indexer, storagev1.Resource("csinode"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1/csistoragecapacity.go b/vendor/k8s.io/client-go/listers/storage/v1/csistoragecapacity.go
    index a72328c9a3f8..3ed903a17eb6 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1/csistoragecapacity.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/storage/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1 "k8s.io/api/storage/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CSIStorageCapacityLister helps list CSIStorageCapacities.
    @@ -30,7 +30,7 @@ import (
     type CSIStorageCapacityLister interface {
     	// List lists all CSIStorageCapacities in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.CSIStorageCapacity, err error)
    +	List(selector labels.Selector) (ret []*storagev1.CSIStorageCapacity, err error)
     	// CSIStorageCapacities returns an object that can list and get CSIStorageCapacities.
     	CSIStorageCapacities(namespace string) CSIStorageCapacityNamespaceLister
     	CSIStorageCapacityListerExpansion
    @@ -38,25 +38,17 @@ type CSIStorageCapacityLister interface {
     
     // cSIStorageCapacityLister implements the CSIStorageCapacityLister interface.
     type cSIStorageCapacityLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1.CSIStorageCapacity]
     }
     
     // NewCSIStorageCapacityLister returns a new CSIStorageCapacityLister.
     func NewCSIStorageCapacityLister(indexer cache.Indexer) CSIStorageCapacityLister {
    -	return &cSIStorageCapacityLister{indexer: indexer}
    -}
    -
    -// List lists all CSIStorageCapacities in the indexer.
    -func (s *cSIStorageCapacityLister) List(selector labels.Selector) (ret []*v1.CSIStorageCapacity, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.CSIStorageCapacity))
    -	})
    -	return ret, err
    +	return &cSIStorageCapacityLister{listers.New[*storagev1.CSIStorageCapacity](indexer, storagev1.Resource("csistoragecapacity"))}
     }
     
     // CSIStorageCapacities returns an object that can list and get CSIStorageCapacities.
     func (s *cSIStorageCapacityLister) CSIStorageCapacities(namespace string) CSIStorageCapacityNamespaceLister {
    -	return cSIStorageCapacityNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return cSIStorageCapacityNamespaceLister{listers.NewNamespaced[*storagev1.CSIStorageCapacity](s.ResourceIndexer, namespace)}
     }
     
     // CSIStorageCapacityNamespaceLister helps list and get CSIStorageCapacities.
    @@ -64,36 +56,15 @@ func (s *cSIStorageCapacityLister) CSIStorageCapacities(namespace string) CSISto
     type CSIStorageCapacityNamespaceLister interface {
     	// List lists all CSIStorageCapacities in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.CSIStorageCapacity, err error)
    +	List(selector labels.Selector) (ret []*storagev1.CSIStorageCapacity, err error)
     	// Get retrieves the CSIStorageCapacity from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.CSIStorageCapacity, error)
    +	Get(name string) (*storagev1.CSIStorageCapacity, error)
     	CSIStorageCapacityNamespaceListerExpansion
     }
     
     // cSIStorageCapacityNamespaceLister implements the CSIStorageCapacityNamespaceLister
     // interface.
     type cSIStorageCapacityNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all CSIStorageCapacities in the indexer for a given namespace.
    -func (s cSIStorageCapacityNamespaceLister) List(selector labels.Selector) (ret []*v1.CSIStorageCapacity, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.CSIStorageCapacity))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CSIStorageCapacity from the indexer for a given namespace and name.
    -func (s cSIStorageCapacityNamespaceLister) Get(name string) (*v1.CSIStorageCapacity, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("csistoragecapacity"), name)
    -	}
    -	return obj.(*v1.CSIStorageCapacity), nil
    +	listers.ResourceIndexer[*storagev1.CSIStorageCapacity]
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1/storageclass.go b/vendor/k8s.io/client-go/listers/storage/v1/storageclass.go
    index ffa3d19f50b6..8d595a856d09 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1/storageclass.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1/storageclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/storage/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1 "k8s.io/api/storage/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // StorageClassLister helps list StorageClasses.
    @@ -30,39 +30,19 @@ import (
     type StorageClassLister interface {
     	// List lists all StorageClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.StorageClass, err error)
    +	List(selector labels.Selector) (ret []*storagev1.StorageClass, err error)
     	// Get retrieves the StorageClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.StorageClass, error)
    +	Get(name string) (*storagev1.StorageClass, error)
     	StorageClassListerExpansion
     }
     
     // storageClassLister implements the StorageClassLister interface.
     type storageClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1.StorageClass]
     }
     
     // NewStorageClassLister returns a new StorageClassLister.
     func NewStorageClassLister(indexer cache.Indexer) StorageClassLister {
    -	return &storageClassLister{indexer: indexer}
    -}
    -
    -// List lists all StorageClasses in the indexer.
    -func (s *storageClassLister) List(selector labels.Selector) (ret []*v1.StorageClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.StorageClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the StorageClass from the index for a given name.
    -func (s *storageClassLister) Get(name string) (*v1.StorageClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("storageclass"), name)
    -	}
    -	return obj.(*v1.StorageClass), nil
    +	return &storageClassLister{listers.New[*storagev1.StorageClass](indexer, storagev1.Resource("storageclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1/volumeattachment.go b/vendor/k8s.io/client-go/listers/storage/v1/volumeattachment.go
    index fbc735c93943..26247faad934 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1/volumeattachment.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1
     
     import (
    -	v1 "k8s.io/api/storage/v1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1 "k8s.io/api/storage/v1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // VolumeAttachmentLister helps list VolumeAttachments.
    @@ -30,39 +30,19 @@ import (
     type VolumeAttachmentLister interface {
     	// List lists all VolumeAttachments in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1.VolumeAttachment, err error)
    +	List(selector labels.Selector) (ret []*storagev1.VolumeAttachment, err error)
     	// Get retrieves the VolumeAttachment from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1.VolumeAttachment, error)
    +	Get(name string) (*storagev1.VolumeAttachment, error)
     	VolumeAttachmentListerExpansion
     }
     
     // volumeAttachmentLister implements the VolumeAttachmentLister interface.
     type volumeAttachmentLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1.VolumeAttachment]
     }
     
     // NewVolumeAttachmentLister returns a new VolumeAttachmentLister.
     func NewVolumeAttachmentLister(indexer cache.Indexer) VolumeAttachmentLister {
    -	return &volumeAttachmentLister{indexer: indexer}
    -}
    -
    -// List lists all VolumeAttachments in the indexer.
    -func (s *volumeAttachmentLister) List(selector labels.Selector) (ret []*v1.VolumeAttachment, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1.VolumeAttachment))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the VolumeAttachment from the index for a given name.
    -func (s *volumeAttachmentLister) Get(name string) (*v1.VolumeAttachment, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1.Resource("volumeattachment"), name)
    -	}
    -	return obj.(*v1.VolumeAttachment), nil
    +	return &volumeAttachmentLister{listers.New[*storagev1.VolumeAttachment](indexer, storagev1.Resource("volumeattachment"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1alpha1/csistoragecapacity.go b/vendor/k8s.io/client-go/listers/storage/v1alpha1/csistoragecapacity.go
    index 0c1b5f264740..62127edf9dc4 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1alpha1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1alpha1/csistoragecapacity.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/storage/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CSIStorageCapacityLister helps list CSIStorageCapacities.
    @@ -30,7 +30,7 @@ import (
     type CSIStorageCapacityLister interface {
     	// List lists all CSIStorageCapacities in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.CSIStorageCapacity, err error)
    +	List(selector labels.Selector) (ret []*storagev1alpha1.CSIStorageCapacity, err error)
     	// CSIStorageCapacities returns an object that can list and get CSIStorageCapacities.
     	CSIStorageCapacities(namespace string) CSIStorageCapacityNamespaceLister
     	CSIStorageCapacityListerExpansion
    @@ -38,25 +38,17 @@ type CSIStorageCapacityLister interface {
     
     // cSIStorageCapacityLister implements the CSIStorageCapacityLister interface.
     type cSIStorageCapacityLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1alpha1.CSIStorageCapacity]
     }
     
     // NewCSIStorageCapacityLister returns a new CSIStorageCapacityLister.
     func NewCSIStorageCapacityLister(indexer cache.Indexer) CSIStorageCapacityLister {
    -	return &cSIStorageCapacityLister{indexer: indexer}
    -}
    -
    -// List lists all CSIStorageCapacities in the indexer.
    -func (s *cSIStorageCapacityLister) List(selector labels.Selector) (ret []*v1alpha1.CSIStorageCapacity, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.CSIStorageCapacity))
    -	})
    -	return ret, err
    +	return &cSIStorageCapacityLister{listers.New[*storagev1alpha1.CSIStorageCapacity](indexer, storagev1alpha1.Resource("csistoragecapacity"))}
     }
     
     // CSIStorageCapacities returns an object that can list and get CSIStorageCapacities.
     func (s *cSIStorageCapacityLister) CSIStorageCapacities(namespace string) CSIStorageCapacityNamespaceLister {
    -	return cSIStorageCapacityNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return cSIStorageCapacityNamespaceLister{listers.NewNamespaced[*storagev1alpha1.CSIStorageCapacity](s.ResourceIndexer, namespace)}
     }
     
     // CSIStorageCapacityNamespaceLister helps list and get CSIStorageCapacities.
    @@ -64,36 +56,15 @@ func (s *cSIStorageCapacityLister) CSIStorageCapacities(namespace string) CSISto
     type CSIStorageCapacityNamespaceLister interface {
     	// List lists all CSIStorageCapacities in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.CSIStorageCapacity, err error)
    +	List(selector labels.Selector) (ret []*storagev1alpha1.CSIStorageCapacity, err error)
     	// Get retrieves the CSIStorageCapacity from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.CSIStorageCapacity, error)
    +	Get(name string) (*storagev1alpha1.CSIStorageCapacity, error)
     	CSIStorageCapacityNamespaceListerExpansion
     }
     
     // cSIStorageCapacityNamespaceLister implements the CSIStorageCapacityNamespaceLister
     // interface.
     type cSIStorageCapacityNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all CSIStorageCapacities in the indexer for a given namespace.
    -func (s cSIStorageCapacityNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.CSIStorageCapacity, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.CSIStorageCapacity))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CSIStorageCapacity from the indexer for a given namespace and name.
    -func (s cSIStorageCapacityNamespaceLister) Get(name string) (*v1alpha1.CSIStorageCapacity, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("csistoragecapacity"), name)
    -	}
    -	return obj.(*v1alpha1.CSIStorageCapacity), nil
    +	listers.ResourceIndexer[*storagev1alpha1.CSIStorageCapacity]
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattachment.go b/vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattachment.go
    index 3d5e2b7b712f..9604e4c1be07 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattachment.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/storage/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // VolumeAttachmentLister helps list VolumeAttachments.
    @@ -30,39 +30,19 @@ import (
     type VolumeAttachmentLister interface {
     	// List lists all VolumeAttachments in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.VolumeAttachment, err error)
    +	List(selector labels.Selector) (ret []*storagev1alpha1.VolumeAttachment, err error)
     	// Get retrieves the VolumeAttachment from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.VolumeAttachment, error)
    +	Get(name string) (*storagev1alpha1.VolumeAttachment, error)
     	VolumeAttachmentListerExpansion
     }
     
     // volumeAttachmentLister implements the VolumeAttachmentLister interface.
     type volumeAttachmentLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1alpha1.VolumeAttachment]
     }
     
     // NewVolumeAttachmentLister returns a new VolumeAttachmentLister.
     func NewVolumeAttachmentLister(indexer cache.Indexer) VolumeAttachmentLister {
    -	return &volumeAttachmentLister{indexer: indexer}
    -}
    -
    -// List lists all VolumeAttachments in the indexer.
    -func (s *volumeAttachmentLister) List(selector labels.Selector) (ret []*v1alpha1.VolumeAttachment, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.VolumeAttachment))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the VolumeAttachment from the index for a given name.
    -func (s *volumeAttachmentLister) Get(name string) (*v1alpha1.VolumeAttachment, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("volumeattachment"), name)
    -	}
    -	return obj.(*v1alpha1.VolumeAttachment), nil
    +	return &volumeAttachmentLister{listers.New[*storagev1alpha1.VolumeAttachment](indexer, storagev1alpha1.Resource("volumeattachment"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattributesclass.go b/vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattributesclass.go
    index f30b4a89ba10..08710c981392 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattributesclass.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattributesclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1alpha1
     
     import (
    -	v1alpha1 "k8s.io/api/storage/v1alpha1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // VolumeAttributesClassLister helps list VolumeAttributesClasses.
    @@ -30,39 +30,19 @@ import (
     type VolumeAttributesClassLister interface {
     	// List lists all VolumeAttributesClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1alpha1.VolumeAttributesClass, err error)
    +	List(selector labels.Selector) (ret []*storagev1alpha1.VolumeAttributesClass, err error)
     	// Get retrieves the VolumeAttributesClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1alpha1.VolumeAttributesClass, error)
    +	Get(name string) (*storagev1alpha1.VolumeAttributesClass, error)
     	VolumeAttributesClassListerExpansion
     }
     
     // volumeAttributesClassLister implements the VolumeAttributesClassLister interface.
     type volumeAttributesClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1alpha1.VolumeAttributesClass]
     }
     
     // NewVolumeAttributesClassLister returns a new VolumeAttributesClassLister.
     func NewVolumeAttributesClassLister(indexer cache.Indexer) VolumeAttributesClassLister {
    -	return &volumeAttributesClassLister{indexer: indexer}
    -}
    -
    -// List lists all VolumeAttributesClasses in the indexer.
    -func (s *volumeAttributesClassLister) List(selector labels.Selector) (ret []*v1alpha1.VolumeAttributesClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1alpha1.VolumeAttributesClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the VolumeAttributesClass from the index for a given name.
    -func (s *volumeAttributesClassLister) Get(name string) (*v1alpha1.VolumeAttributesClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1alpha1.Resource("volumeattributesclass"), name)
    -	}
    -	return obj.(*v1alpha1.VolumeAttributesClass), nil
    +	return &volumeAttributesClassLister{listers.New[*storagev1alpha1.VolumeAttributesClass](indexer, storagev1alpha1.Resource("volumeattributesclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/csidriver.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/csidriver.go
    index c6787aa01ba2..31a7e5a2b60a 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1beta1/csidriver.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1beta1/csidriver.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CSIDriverLister helps list CSIDrivers.
    @@ -30,39 +30,19 @@ import (
     type CSIDriverLister interface {
     	// List lists all CSIDrivers in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.CSIDriver, err error)
    +	List(selector labels.Selector) (ret []*storagev1beta1.CSIDriver, err error)
     	// Get retrieves the CSIDriver from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.CSIDriver, error)
    +	Get(name string) (*storagev1beta1.CSIDriver, error)
     	CSIDriverListerExpansion
     }
     
     // cSIDriverLister implements the CSIDriverLister interface.
     type cSIDriverLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1beta1.CSIDriver]
     }
     
     // NewCSIDriverLister returns a new CSIDriverLister.
     func NewCSIDriverLister(indexer cache.Indexer) CSIDriverLister {
    -	return &cSIDriverLister{indexer: indexer}
    -}
    -
    -// List lists all CSIDrivers in the indexer.
    -func (s *cSIDriverLister) List(selector labels.Selector) (ret []*v1beta1.CSIDriver, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.CSIDriver))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CSIDriver from the index for a given name.
    -func (s *cSIDriverLister) Get(name string) (*v1beta1.CSIDriver, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("csidriver"), name)
    -	}
    -	return obj.(*v1beta1.CSIDriver), nil
    +	return &cSIDriverLister{listers.New[*storagev1beta1.CSIDriver](indexer, storagev1beta1.Resource("csidriver"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/csinode.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/csinode.go
    index 809efaa36965..1ab0942c315a 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1beta1/csinode.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1beta1/csinode.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CSINodeLister helps list CSINodes.
    @@ -30,39 +30,19 @@ import (
     type CSINodeLister interface {
     	// List lists all CSINodes in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.CSINode, err error)
    +	List(selector labels.Selector) (ret []*storagev1beta1.CSINode, err error)
     	// Get retrieves the CSINode from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.CSINode, error)
    +	Get(name string) (*storagev1beta1.CSINode, error)
     	CSINodeListerExpansion
     }
     
     // cSINodeLister implements the CSINodeLister interface.
     type cSINodeLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1beta1.CSINode]
     }
     
     // NewCSINodeLister returns a new CSINodeLister.
     func NewCSINodeLister(indexer cache.Indexer) CSINodeLister {
    -	return &cSINodeLister{indexer: indexer}
    -}
    -
    -// List lists all CSINodes in the indexer.
    -func (s *cSINodeLister) List(selector labels.Selector) (ret []*v1beta1.CSINode, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.CSINode))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CSINode from the index for a given name.
    -func (s *cSINodeLister) Get(name string) (*v1beta1.CSINode, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("csinode"), name)
    -	}
    -	return obj.(*v1beta1.CSINode), nil
    +	return &cSINodeLister{listers.New[*storagev1beta1.CSINode](indexer, storagev1beta1.Resource("csinode"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/csistoragecapacity.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/csistoragecapacity.go
    index 4680ffb7c82c..25ff95237ec2 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1beta1/csistoragecapacity.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1beta1/csistoragecapacity.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // CSIStorageCapacityLister helps list CSIStorageCapacities.
    @@ -30,7 +30,7 @@ import (
     type CSIStorageCapacityLister interface {
     	// List lists all CSIStorageCapacities in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.CSIStorageCapacity, err error)
    +	List(selector labels.Selector) (ret []*storagev1beta1.CSIStorageCapacity, err error)
     	// CSIStorageCapacities returns an object that can list and get CSIStorageCapacities.
     	CSIStorageCapacities(namespace string) CSIStorageCapacityNamespaceLister
     	CSIStorageCapacityListerExpansion
    @@ -38,25 +38,17 @@ type CSIStorageCapacityLister interface {
     
     // cSIStorageCapacityLister implements the CSIStorageCapacityLister interface.
     type cSIStorageCapacityLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1beta1.CSIStorageCapacity]
     }
     
     // NewCSIStorageCapacityLister returns a new CSIStorageCapacityLister.
     func NewCSIStorageCapacityLister(indexer cache.Indexer) CSIStorageCapacityLister {
    -	return &cSIStorageCapacityLister{indexer: indexer}
    -}
    -
    -// List lists all CSIStorageCapacities in the indexer.
    -func (s *cSIStorageCapacityLister) List(selector labels.Selector) (ret []*v1beta1.CSIStorageCapacity, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.CSIStorageCapacity))
    -	})
    -	return ret, err
    +	return &cSIStorageCapacityLister{listers.New[*storagev1beta1.CSIStorageCapacity](indexer, storagev1beta1.Resource("csistoragecapacity"))}
     }
     
     // CSIStorageCapacities returns an object that can list and get CSIStorageCapacities.
     func (s *cSIStorageCapacityLister) CSIStorageCapacities(namespace string) CSIStorageCapacityNamespaceLister {
    -	return cSIStorageCapacityNamespaceLister{indexer: s.indexer, namespace: namespace}
    +	return cSIStorageCapacityNamespaceLister{listers.NewNamespaced[*storagev1beta1.CSIStorageCapacity](s.ResourceIndexer, namespace)}
     }
     
     // CSIStorageCapacityNamespaceLister helps list and get CSIStorageCapacities.
    @@ -64,36 +56,15 @@ func (s *cSIStorageCapacityLister) CSIStorageCapacities(namespace string) CSISto
     type CSIStorageCapacityNamespaceLister interface {
     	// List lists all CSIStorageCapacities in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.CSIStorageCapacity, err error)
    +	List(selector labels.Selector) (ret []*storagev1beta1.CSIStorageCapacity, err error)
     	// Get retrieves the CSIStorageCapacity from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.CSIStorageCapacity, error)
    +	Get(name string) (*storagev1beta1.CSIStorageCapacity, error)
     	CSIStorageCapacityNamespaceListerExpansion
     }
     
     // cSIStorageCapacityNamespaceLister implements the CSIStorageCapacityNamespaceLister
     // interface.
     type cSIStorageCapacityNamespaceLister struct {
    -	indexer   cache.Indexer
    -	namespace string
    -}
    -
    -// List lists all CSIStorageCapacities in the indexer for a given namespace.
    -func (s cSIStorageCapacityNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.CSIStorageCapacity, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.CSIStorageCapacity))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the CSIStorageCapacity from the indexer for a given namespace and name.
    -func (s cSIStorageCapacityNamespaceLister) Get(name string) (*v1beta1.CSIStorageCapacity, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("csistoragecapacity"), name)
    -	}
    -	return obj.(*v1beta1.CSIStorageCapacity), nil
    +	listers.ResourceIndexer[*storagev1beta1.CSIStorageCapacity]
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go
    index c2b0d5b17dfa..4f56776be19d 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go
    @@ -41,3 +41,7 @@ type StorageClassListerExpansion interface{}
     // VolumeAttachmentListerExpansion allows custom methods to be added to
     // VolumeAttachmentLister.
     type VolumeAttachmentListerExpansion interface{}
    +
    +// VolumeAttributesClassListerExpansion allows custom methods to be added to
    +// VolumeAttributesClassLister.
    +type VolumeAttributesClassListerExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go
    index eb7b8315c699..3928cbacde0e 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // StorageClassLister helps list StorageClasses.
    @@ -30,39 +30,19 @@ import (
     type StorageClassLister interface {
     	// List lists all StorageClasses in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.StorageClass, err error)
    +	List(selector labels.Selector) (ret []*storagev1beta1.StorageClass, err error)
     	// Get retrieves the StorageClass from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.StorageClass, error)
    +	Get(name string) (*storagev1beta1.StorageClass, error)
     	StorageClassListerExpansion
     }
     
     // storageClassLister implements the StorageClassLister interface.
     type storageClassLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1beta1.StorageClass]
     }
     
     // NewStorageClassLister returns a new StorageClassLister.
     func NewStorageClassLister(indexer cache.Indexer) StorageClassLister {
    -	return &storageClassLister{indexer: indexer}
    -}
    -
    -// List lists all StorageClasses in the indexer.
    -func (s *storageClassLister) List(selector labels.Selector) (ret []*v1beta1.StorageClass, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.StorageClass))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the StorageClass from the index for a given name.
    -func (s *storageClassLister) Get(name string) (*v1beta1.StorageClass, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("storageclass"), name)
    -	}
    -	return obj.(*v1beta1.StorageClass), nil
    +	return &storageClassLister{listers.New[*storagev1beta1.StorageClass](indexer, storagev1beta1.Resource("storageclass"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/volumeattachment.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/volumeattachment.go
    index bab2d317c794..aab4bef13a17 100644
    --- a/vendor/k8s.io/client-go/listers/storage/v1beta1/volumeattachment.go
    +++ b/vendor/k8s.io/client-go/listers/storage/v1beta1/volumeattachment.go
    @@ -19,10 +19,10 @@ limitations under the License.
     package v1beta1
     
     import (
    -	v1beta1 "k8s.io/api/storage/v1beta1"
    -	"k8s.io/apimachinery/pkg/api/errors"
    -	"k8s.io/apimachinery/pkg/labels"
    -	"k8s.io/client-go/tools/cache"
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
     )
     
     // VolumeAttachmentLister helps list VolumeAttachments.
    @@ -30,39 +30,19 @@ import (
     type VolumeAttachmentLister interface {
     	// List lists all VolumeAttachments in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*v1beta1.VolumeAttachment, err error)
    +	List(selector labels.Selector) (ret []*storagev1beta1.VolumeAttachment, err error)
     	// Get retrieves the VolumeAttachment from the index for a given name.
     	// Objects returned here must be treated as read-only.
    -	Get(name string) (*v1beta1.VolumeAttachment, error)
    +	Get(name string) (*storagev1beta1.VolumeAttachment, error)
     	VolumeAttachmentListerExpansion
     }
     
     // volumeAttachmentLister implements the VolumeAttachmentLister interface.
     type volumeAttachmentLister struct {
    -	indexer cache.Indexer
    +	listers.ResourceIndexer[*storagev1beta1.VolumeAttachment]
     }
     
     // NewVolumeAttachmentLister returns a new VolumeAttachmentLister.
     func NewVolumeAttachmentLister(indexer cache.Indexer) VolumeAttachmentLister {
    -	return &volumeAttachmentLister{indexer: indexer}
    -}
    -
    -// List lists all VolumeAttachments in the indexer.
    -func (s *volumeAttachmentLister) List(selector labels.Selector) (ret []*v1beta1.VolumeAttachment, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*v1beta1.VolumeAttachment))
    -	})
    -	return ret, err
    -}
    -
    -// Get retrieves the VolumeAttachment from the index for a given name.
    -func (s *volumeAttachmentLister) Get(name string) (*v1beta1.VolumeAttachment, error) {
    -	obj, exists, err := s.indexer.GetByKey(name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound(v1beta1.Resource("volumeattachment"), name)
    -	}
    -	return obj.(*v1beta1.VolumeAttachment), nil
    +	return &volumeAttachmentLister{listers.New[*storagev1beta1.VolumeAttachment](indexer, storagev1beta1.Resource("volumeattachment"))}
     }
    diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/volumeattributesclass.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/volumeattributesclass.go
    new file mode 100644
    index 000000000000..8b9724ed9a2c
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/storage/v1beta1/volumeattributesclass.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	storagev1beta1 "k8s.io/api/storage/v1beta1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// VolumeAttributesClassLister helps list VolumeAttributesClasses.
    +// All objects returned here must be treated as read-only.
    +type VolumeAttributesClassLister interface {
    +	// List lists all VolumeAttributesClasses in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*storagev1beta1.VolumeAttributesClass, err error)
    +	// Get retrieves the VolumeAttributesClass from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*storagev1beta1.VolumeAttributesClass, error)
    +	VolumeAttributesClassListerExpansion
    +}
    +
    +// volumeAttributesClassLister implements the VolumeAttributesClassLister interface.
    +type volumeAttributesClassLister struct {
    +	listers.ResourceIndexer[*storagev1beta1.VolumeAttributesClass]
    +}
    +
    +// NewVolumeAttributesClassLister returns a new VolumeAttributesClassLister.
    +func NewVolumeAttributesClassLister(indexer cache.Indexer) VolumeAttributesClassLister {
    +	return &volumeAttributesClassLister{listers.New[*storagev1beta1.VolumeAttributesClass](indexer, storagev1beta1.Resource("volumeattributesclass"))}
    +}
    diff --git a/vendor/k8s.io/client-go/listers/storagemigration/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/storagemigration/v1alpha1/expansion_generated.go
    new file mode 100644
    index 000000000000..92eb5c65b4f8
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/storagemigration/v1alpha1/expansion_generated.go
    @@ -0,0 +1,23 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +// StorageVersionMigrationListerExpansion allows custom methods to be added to
    +// StorageVersionMigrationLister.
    +type StorageVersionMigrationListerExpansion interface{}
    diff --git a/vendor/k8s.io/client-go/listers/storagemigration/v1alpha1/storageversionmigration.go b/vendor/k8s.io/client-go/listers/storagemigration/v1alpha1/storageversionmigration.go
    new file mode 100644
    index 000000000000..e7d164d040a0
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/listers/storagemigration/v1alpha1/storageversionmigration.go
    @@ -0,0 +1,48 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by lister-gen. DO NOT EDIT.
    +
    +package v1alpha1
    +
    +import (
    +	storagemigrationv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
    +	labels "k8s.io/apimachinery/pkg/labels"
    +	listers "k8s.io/client-go/listers"
    +	cache "k8s.io/client-go/tools/cache"
    +)
    +
    +// StorageVersionMigrationLister helps list StorageVersionMigrations.
    +// All objects returned here must be treated as read-only.
    +type StorageVersionMigrationLister interface {
    +	// List lists all StorageVersionMigrations in the indexer.
    +	// Objects returned here must be treated as read-only.
    +	List(selector labels.Selector) (ret []*storagemigrationv1alpha1.StorageVersionMigration, err error)
    +	// Get retrieves the StorageVersionMigration from the index for a given name.
    +	// Objects returned here must be treated as read-only.
    +	Get(name string) (*storagemigrationv1alpha1.StorageVersionMigration, error)
    +	StorageVersionMigrationListerExpansion
    +}
    +
    +// storageVersionMigrationLister implements the StorageVersionMigrationLister interface.
    +type storageVersionMigrationLister struct {
    +	listers.ResourceIndexer[*storagemigrationv1alpha1.StorageVersionMigration]
    +}
    +
    +// NewStorageVersionMigrationLister returns a new StorageVersionMigrationLister.
    +func NewStorageVersionMigrationLister(indexer cache.Indexer) StorageVersionMigrationLister {
    +	return &storageVersionMigrationLister{listers.New[*storagemigrationv1alpha1.StorageVersionMigration](indexer, storagemigrationv1alpha1.Resource("storageversionmigration"))}
    +}
    diff --git a/vendor/k8s.io/client-go/openapi/groupversion.go b/vendor/k8s.io/client-go/openapi/groupversion.go
    index 601dcbe3ccb2..40d91b9a5330 100644
    --- a/vendor/k8s.io/client-go/openapi/groupversion.go
    +++ b/vendor/k8s.io/client-go/openapi/groupversion.go
    @@ -27,6 +27,12 @@ const ContentTypeOpenAPIV3PB = "application/com.github.proto-openapi.spec.v3@v1.
     
     type GroupVersion interface {
     	Schema(contentType string) ([]byte, error)
    +
    +	// ServerRelativeURL. Returns the path and parameters used to fetch the schema.
    +	// You should use the Schema method to fetch it, but this value can be used
    +	// to key the current version of the schema in a cache since it contains a
    +	// hash string which changes upon schema update.
    +	ServerRelativeURL() string
     }
     
     type groupversion struct {
    @@ -68,3 +74,9 @@ func (g *groupversion) Schema(contentType string) ([]byte, error) {
     
     	return path.Do(context.TODO()).Raw()
     }
    +
    +// URL used for fetching the schema. The URL includes a hash and can be used
    +// to key the current version of the schema in a cache.
    +func (g *groupversion) ServerRelativeURL() string {
    +	return g.item.ServerRelativeURL
    +}
    diff --git a/vendor/k8s.io/client-go/rest/client.go b/vendor/k8s.io/client-go/rest/client.go
    index 60df7e568c35..159caa13fab7 100644
    --- a/vendor/k8s.io/client-go/rest/client.go
    +++ b/vendor/k8s.io/client-go/rest/client.go
    @@ -17,16 +17,21 @@ limitations under the License.
     package rest
     
     import (
    +	"fmt"
    +	"mime"
     	"net/http"
     	"net/url"
     	"os"
     	"strconv"
     	"strings"
    +	"sync/atomic"
     	"time"
     
    +	"github.com/munnerz/goautoneg"
     	"k8s.io/apimachinery/pkg/runtime"
     	"k8s.io/apimachinery/pkg/runtime/schema"
     	"k8s.io/apimachinery/pkg/types"
    +	clientfeatures "k8s.io/client-go/features"
     	"k8s.io/client-go/util/flowcontrol"
     )
     
    @@ -85,7 +90,7 @@ type RESTClient struct {
     	versionedAPIPath string
     
     	// content describes how a RESTClient encodes and decodes responses.
    -	content ClientContentConfig
    +	content requestClientContentConfigProvider
     
     	// creates BackoffManager that is passed to requests.
     	createBackoffMgr func() BackoffManager
    @@ -105,10 +110,6 @@ type RESTClient struct {
     // NewRESTClient creates a new RESTClient. This client performs generic REST functions
     // such as Get, Put, Post, and Delete on specified paths.
     func NewRESTClient(baseURL *url.URL, versionedAPIPath string, config ClientContentConfig, rateLimiter flowcontrol.RateLimiter, client *http.Client) (*RESTClient, error) {
    -	if len(config.ContentType) == 0 {
    -		config.ContentType = "application/json"
    -	}
    -
     	base := *baseURL
     	if !strings.HasSuffix(base.Path, "/") {
     		base.Path += "/"
    @@ -119,14 +120,53 @@ func NewRESTClient(baseURL *url.URL, versionedAPIPath string, config ClientConte
     	return &RESTClient{
     		base:             &base,
     		versionedAPIPath: versionedAPIPath,
    -		content:          config,
    +		content:          requestClientContentConfigProvider{base: scrubCBORContentConfigIfDisabled(config)},
     		createBackoffMgr: readExpBackoffConfig,
     		rateLimiter:      rateLimiter,
    -
    -		Client: client,
    +		Client:           client,
     	}, nil
     }
     
    +func scrubCBORContentConfigIfDisabled(content ClientContentConfig) ClientContentConfig {
    +	if clientfeatures.FeatureGates().Enabled(clientfeatures.ClientsAllowCBOR) {
    +		content.Negotiator = clientNegotiatorWithCBORSequenceStreamDecoder{content.Negotiator}
    +		return content
    +	}
    +
    +	if mediatype, _, err := mime.ParseMediaType(content.ContentType); err == nil && mediatype == "application/cbor" {
    +		content.ContentType = "application/json"
    +	}
    +
    +	clauses := goautoneg.ParseAccept(content.AcceptContentTypes)
    +	scrubbed := false
    +	for i, clause := range clauses {
    +		if clause.Type == "application" && clause.SubType == "cbor" {
    +			scrubbed = true
    +			clauses[i].SubType = "json"
    +		}
    +	}
    +	if !scrubbed {
    +		// No application/cbor in AcceptContentTypes, nothing more to do.
    +		return content
    +	}
    +
    +	parts := make([]string, 0, len(clauses))
    +	for _, clause := range clauses {
    +		// ParseAccept does not store the parameter "q" in Params.
    +		params := clause.Params
    +		if clause.Q < 1 { // omit q=1, it's the default
    +			if params == nil {
    +				params = make(map[string]string, 1)
    +			}
    +			params["q"] = strconv.FormatFloat(clause.Q, 'g', 3, 32)
    +		}
    +		parts = append(parts, mime.FormatMediaType(fmt.Sprintf("%s/%s", clause.Type, clause.SubType), params))
    +	}
    +	content.AcceptContentTypes = strings.Join(parts, ",")
    +
    +	return content
    +}
    +
     // GetRateLimiter returns rate limiter for a given client, or nil if it's called on a nil client
     func (c *RESTClient) GetRateLimiter() flowcontrol.RateLimiter {
     	if c == nil {
    @@ -198,5 +238,106 @@ func (c *RESTClient) Delete() *Request {
     
     // APIVersion returns the APIVersion this RESTClient is expected to use.
     func (c *RESTClient) APIVersion() schema.GroupVersion {
    -	return c.content.GroupVersion
    +	config, _ := c.content.GetClientContentConfig()
    +	return config.GroupVersion
    +}
    +
    +// requestClientContentConfigProvider observes HTTP 415 (Unsupported Media Type) responses to detect
    +// that the server does not understand CBOR. Once this has happened, future requests are forced to
    +// use JSON so they can succeed. This is convenient for client users that want to prefer CBOR, but
    +// also need to interoperate with older servers so requests do not permanently fail. The clients
    +// will not default to using CBOR until at least all supported kube-apiservers have enable-CBOR
    +// locked to true, so this path will be rarely taken. Additionally, all generated clients accessing
    +// built-in kube resources are forced to protobuf, so those will not degrade to JSON.
    +type requestClientContentConfigProvider struct {
    +	base ClientContentConfig
    +
    +	// Becomes permanently true if a server responds with HTTP 415 (Unsupported Media Type) to a
    +	// request with "Content-Type" header containing the CBOR media type.
    +	sawUnsupportedMediaTypeForCBOR atomic.Bool
    +}
    +
    +// GetClientContentConfig returns the ClientContentConfig that should be used for new requests by
    +// this client and true if the request ContentType was selected by default.
    +func (p *requestClientContentConfigProvider) GetClientContentConfig() (ClientContentConfig, bool) {
    +	config := p.base
    +
    +	defaulted := config.ContentType == ""
    +	if defaulted {
    +		config.ContentType = "application/json"
    +	}
    +
    +	if !clientfeatures.FeatureGates().Enabled(clientfeatures.ClientsAllowCBOR) {
    +		return config, defaulted
    +	}
    +
    +	if defaulted && clientfeatures.FeatureGates().Enabled(clientfeatures.ClientsPreferCBOR) {
    +		config.ContentType = "application/cbor"
    +	}
    +
    +	if sawUnsupportedMediaTypeForCBOR := p.sawUnsupportedMediaTypeForCBOR.Load(); !sawUnsupportedMediaTypeForCBOR {
    +		return config, defaulted
    +	}
    +
    +	if mediaType, _, _ := mime.ParseMediaType(config.ContentType); mediaType != runtime.ContentTypeCBOR {
    +		return config, defaulted
    +	}
    +
    +	// The effective ContentType is CBOR and the client has previously received an HTTP 415 in
    +	// response to a CBOR request. Override ContentType to JSON.
    +	config.ContentType = runtime.ContentTypeJSON
    +	return config, defaulted
    +}
    +
    +// UnsupportedMediaType reports that the server has responded to a request with HTTP 415 Unsupported
    +// Media Type.
    +func (p *requestClientContentConfigProvider) UnsupportedMediaType(requestContentType string) {
    +	if !clientfeatures.FeatureGates().Enabled(clientfeatures.ClientsAllowCBOR) {
    +		return
    +	}
    +
    +	// This could be extended to consider the Content-Encoding request header, the Accept and
    +	// Accept-Encoding response headers, the request method, and URI (as mentioned in
    +	// https://www.rfc-editor.org/rfc/rfc9110.html#section-15.5.16). The request Content-Type
    +	// header is sufficient to implement a blanket CBOR fallback mechanism.
    +	requestContentType, _, _ = mime.ParseMediaType(requestContentType)
    +	switch requestContentType {
    +	case runtime.ContentTypeCBOR, string(types.ApplyCBORPatchType):
    +		p.sawUnsupportedMediaTypeForCBOR.Store(true)
    +	}
    +}
    +
    +// clientNegotiatorWithCBORSequenceStreamDecoder is a ClientNegotiator that delegates to another
    +// ClientNegotiator to select the appropriate Encoder or Decoder for a given media type. As a
    +// special case, it will resolve "application/cbor-seq" (a CBOR Sequence, the concatenation of zero
    +// or more CBOR data items) as an alias for "application/cbor" (exactly one CBOR data item) when
    +// selecting a stream decoder.
    +type clientNegotiatorWithCBORSequenceStreamDecoder struct {
    +	negotiator runtime.ClientNegotiator
    +}
    +
    +func (n clientNegotiatorWithCBORSequenceStreamDecoder) Encoder(contentType string, params map[string]string) (runtime.Encoder, error) {
    +	return n.negotiator.Encoder(contentType, params)
    +}
    +
    +func (n clientNegotiatorWithCBORSequenceStreamDecoder) Decoder(contentType string, params map[string]string) (runtime.Decoder, error) {
    +	return n.negotiator.Decoder(contentType, params)
    +}
    +
    +func (n clientNegotiatorWithCBORSequenceStreamDecoder) StreamDecoder(contentType string, params map[string]string) (runtime.Decoder, runtime.Serializer, runtime.Framer, error) {
    +	if !clientfeatures.FeatureGates().Enabled(clientfeatures.ClientsAllowCBOR) {
    +		return n.negotiator.StreamDecoder(contentType, params)
    +	}
    +
    +	switch contentType {
    +	case runtime.ContentTypeCBORSequence:
    +		return n.negotiator.StreamDecoder(runtime.ContentTypeCBOR, params)
    +	case runtime.ContentTypeCBOR:
    +		// This media type is only appropriate for exactly one data item, not the zero or
    +		// more events of a watch stream.
    +		return nil, nil, nil, runtime.NegotiateError{ContentType: contentType, Stream: true}
    +	default:
    +		return n.negotiator.StreamDecoder(contentType, params)
    +	}
    +
     }
    diff --git a/vendor/k8s.io/client-go/rest/config.go b/vendor/k8s.io/client-go/rest/config.go
    index f8ff7e928cff..f2e813d075ed 100644
    --- a/vendor/k8s.io/client-go/rest/config.go
    +++ b/vendor/k8s.io/client-go/rest/config.go
    @@ -32,6 +32,9 @@ import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	"k8s.io/apimachinery/pkg/runtime"
     	"k8s.io/apimachinery/pkg/runtime/schema"
    +	"k8s.io/apimachinery/pkg/runtime/serializer"
    +	"k8s.io/apimachinery/pkg/runtime/serializer/cbor"
    +	"k8s.io/client-go/features"
     	"k8s.io/client-go/pkg/version"
     	clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
     	"k8s.io/client-go/transport"
    @@ -113,6 +116,9 @@ type Config struct {
     
     	// QPS indicates the maximum QPS to the master from this client.
     	// If it's zero, the created RESTClient will use DefaultQPS: 5
    +	//
    +	// Setting this to a negative value will disable client-side ratelimiting
    +	// unless `Ratelimiter` is also set.
     	QPS float32
     
     	// Maximum burst for throttle.
    @@ -669,3 +675,19 @@ func CopyConfig(config *Config) *Config {
     	}
     	return c
     }
    +
    +// CodecFactoryForGeneratedClient returns the provided CodecFactory if there are no enabled client
    +// feature gates affecting serialization. Otherwise, it constructs and returns a new CodecFactory
    +// from the provided Scheme.
    +//
    +// This is supported ONLY for use by clients generated with client-gen. The caller is responsible
    +// for ensuring that the CodecFactory argument was constructed using the Scheme argument.
    +func CodecFactoryForGeneratedClient(scheme *runtime.Scheme, codecs serializer.CodecFactory) serializer.CodecFactory {
    +	if !features.FeatureGates().Enabled(features.ClientsAllowCBOR) {
    +		// NOTE: This assumes client-gen will not generate CBOR-enabled Codecs as long as
    +		// the feature gate exists.
    +		return codecs
    +	}
    +
    +	return serializer.NewCodecFactory(scheme, serializer.WithSerializer(cbor.NewSerializerInfo))
    +}
    diff --git a/vendor/k8s.io/client-go/rest/request.go b/vendor/k8s.io/client-go/rest/request.go
    index 850e57daebd7..0ec90ad188b9 100644
    --- a/vendor/k8s.io/client-go/rest/request.go
    +++ b/vendor/k8s.io/client-go/rest/request.go
    @@ -19,6 +19,7 @@ package rest
     import (
     	"bytes"
     	"context"
    +	"encoding/base64"
     	"encoding/hex"
     	"fmt"
     	"io"
    @@ -37,12 +38,15 @@ import (
     	"golang.org/x/net/http2"
     
     	"k8s.io/apimachinery/pkg/api/errors"
    +	"k8s.io/apimachinery/pkg/api/meta"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/conversion"
     	"k8s.io/apimachinery/pkg/runtime"
     	"k8s.io/apimachinery/pkg/runtime/schema"
     	"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
     	"k8s.io/apimachinery/pkg/util/net"
     	"k8s.io/apimachinery/pkg/watch"
    +	clientfeatures "k8s.io/client-go/features"
     	restclientwatch "k8s.io/client-go/rest/watch"
     	"k8s.io/client-go/tools/metrics"
     	"k8s.io/client-go/util/flowcontrol"
    @@ -96,6 +100,9 @@ func defaultRequestRetryFn(maxRetries int) WithRetry {
     type Request struct {
     	c *RESTClient
     
    +	contentConfig     ClientContentConfig
    +	contentTypeNotSet bool
    +
     	warningHandler WarningHandler
     
     	rateLimiter flowcontrol.RateLimiter
    @@ -120,7 +127,7 @@ type Request struct {
     	// output
     	err error
     
    -	// only one of body / bodyBytes may be set. requests using body are not retriable.
    +	// only one of body / bodyBytes may be set. requests using body are not retryable.
     	body      io.Reader
     	bodyBytes []byte
     
    @@ -149,6 +156,11 @@ func NewRequest(c *RESTClient) *Request {
     		timeout = c.Client.Timeout
     	}
     
    +	// A request needs to know whether the content type was explicitly configured or selected by
    +	// default in order to support the per-request Protobuf override used by clients generated
    +	// with --prefers-protobuf.
    +	contentConfig, contentTypeDefaulted := c.content.GetClientContentConfig()
    +
     	r := &Request{
     		c:              c,
     		rateLimiter:    c.rateLimiter,
    @@ -158,14 +170,12 @@ func NewRequest(c *RESTClient) *Request {
     		maxRetries:     10,
     		retryFn:        defaultRequestRetryFn,
     		warningHandler: c.warningHandler,
    -	}
     
    -	switch {
    -	case len(c.content.AcceptContentTypes) > 0:
    -		r.SetHeader("Accept", c.content.AcceptContentTypes)
    -	case len(c.content.ContentType) > 0:
    -		r.SetHeader("Accept", c.content.ContentType+", */*")
    +		contentConfig:     contentConfig,
    +		contentTypeNotSet: contentTypeDefaulted,
     	}
    +
    +	r.setAcceptHeader()
     	return r
     }
     
    @@ -174,11 +184,36 @@ func NewRequestWithClient(base *url.URL, versionedAPIPath string, content Client
     	return NewRequest(&RESTClient{
     		base:             base,
     		versionedAPIPath: versionedAPIPath,
    -		content:          content,
    +		content:          requestClientContentConfigProvider{base: content},
     		Client:           client,
     	})
     }
     
    +func (r *Request) UseProtobufAsDefaultIfPreferred(prefersProtobuf bool) *Request {
    +	if prefersProtobuf {
    +		return r.UseProtobufAsDefault()
    +	}
    +	return r
    +}
    +
    +func (r *Request) UseProtobufAsDefault() *Request {
    +	if r.contentTypeNotSet && len(r.contentConfig.AcceptContentTypes) == 0 {
    +		r.contentConfig.AcceptContentTypes = "application/vnd.kubernetes.protobuf,application/json"
    +		r.contentConfig.ContentType = "application/vnd.kubernetes.protobuf"
    +		r.setAcceptHeader()
    +	}
    +	return r
    +}
    +
    +func (r *Request) setAcceptHeader() {
    +	switch {
    +	case len(r.contentConfig.AcceptContentTypes) > 0:
    +		r.SetHeader("Accept", r.contentConfig.AcceptContentTypes)
    +	case len(r.contentConfig.ContentType) > 0:
    +		r.SetHeader("Accept", r.contentConfig.ContentType+", */*")
    +	}
    +}
    +
     // Verb sets the verb this request will use.
     func (r *Request) Verb(verb string) *Request {
     	r.verb = verb
    @@ -367,7 +402,7 @@ func (r *Request) Param(paramName, s string) *Request {
     // VersionedParams will not write query parameters that have omitempty set and are empty. If a
     // parameter has already been set it is appended to (Params and VersionedParams are additive).
     func (r *Request) VersionedParams(obj runtime.Object, codec runtime.ParameterCodec) *Request {
    -	return r.SpecificallyVersionedParams(obj, codec, r.c.content.GroupVersion)
    +	return r.SpecificallyVersionedParams(obj, codec, r.contentConfig.GroupVersion)
     }
     
     func (r *Request) SpecificallyVersionedParams(obj runtime.Object, codec runtime.ParameterCodec, version schema.GroupVersion) *Request {
    @@ -447,11 +482,9 @@ func (r *Request) Body(obj interface{}) *Request {
     			r.err = err
     			return r
     		}
    -		glogBody("Request Body", data)
     		r.body = nil
     		r.bodyBytes = data
     	case []byte:
    -		glogBody("Request Body", t)
     		r.body = nil
     		r.bodyBytes = t
     	case io.Reader:
    @@ -462,7 +495,7 @@ func (r *Request) Body(obj interface{}) *Request {
     		if reflect.ValueOf(t).IsNil() {
     			return r
     		}
    -		encoder, err := r.c.content.Negotiator.Encoder(r.c.content.ContentType, nil)
    +		encoder, err := r.contentConfig.Negotiator.Encoder(r.contentConfig.ContentType, nil)
     		if err != nil {
     			r.err = err
     			return r
    @@ -472,10 +505,9 @@ func (r *Request) Body(obj interface{}) *Request {
     			r.err = err
     			return r
     		}
    -		glogBody("Request Body", data)
     		r.body = nil
     		r.bodyBytes = data
    -		r.SetHeader("Content-Type", r.c.content.ContentType)
    +		r.SetHeader("Content-Type", r.contentConfig.ContentType)
     	default:
     		r.err = fmt.Errorf("unknown type used for body: %+v", obj)
     	}
    @@ -701,10 +733,19 @@ func (b *throttledLogger) Infof(message string, args ...interface{}) {
     // Watch attempts to begin watching the requested location.
     // Returns a watch.Interface, or an error.
     func (r *Request) Watch(ctx context.Context) (watch.Interface, error) {
    +	w, _, e := r.watchInternal(ctx)
    +	return w, e
    +}
    +
    +func (r *Request) watchInternal(ctx context.Context) (watch.Interface, runtime.Decoder, error) {
    +	if r.body == nil {
    +		logBody(ctx, 2, "Request Body", r.bodyBytes)
    +	}
    +
     	// We specifically don't want to rate limit watches, so we
     	// don't use r.rateLimiter here.
     	if r.err != nil {
    -		return nil, r.err
    +		return nil, nil, r.err
     	}
     
     	client := r.c.Client
    @@ -724,12 +765,12 @@ func (r *Request) Watch(ctx context.Context) (watch.Interface, error) {
     	url := r.URL().String()
     	for {
     		if err := retry.Before(ctx, r); err != nil {
    -			return nil, retry.WrapPreviousError(err)
    +			return nil, nil, retry.WrapPreviousError(err)
     		}
     
     		req, err := r.newHTTPRequest(ctx)
     		if err != nil {
    -			return nil, err
    +			return nil, nil, err
     		}
     
     		resp, err := client.Do(req)
    @@ -749,34 +790,194 @@ func (r *Request) Watch(ctx context.Context) (watch.Interface, error) {
     				// the server must have sent us an error in 'err'
     				return true, nil
     			}
    -			if result := r.transformResponse(resp, req); result.err != nil {
    -				return true, result.err
    +			result := r.transformResponse(ctx, resp, req)
    +			if err := result.Error(); err != nil {
    +				return true, err
     			}
     			return true, fmt.Errorf("for request %s, got status: %v", url, resp.StatusCode)
     		}()
     		if done {
     			if isErrRetryableFunc(req, err) {
    -				return watch.NewEmptyWatch(), nil
    +				return watch.NewEmptyWatch(), nil, nil
     			}
     			if err == nil {
     				// if the server sent us an HTTP Response object,
     				// we need to return the error object from that.
     				err = transformErr
     			}
    -			return nil, retry.WrapPreviousError(err)
    +			return nil, nil, retry.WrapPreviousError(err)
    +		}
    +	}
    +}
    +
    +type WatchListResult struct {
    +	// err holds any errors we might have received
    +	// during streaming.
    +	err error
    +
    +	// items hold the collected data
    +	items []runtime.Object
    +
    +	// initialEventsEndBookmarkRV holds the resource version
    +	// extracted from the bookmark event that marks
    +	// the end of the stream.
    +	initialEventsEndBookmarkRV string
    +
    +	// negotiatedObjectDecoder knows how to decode
    +	// the initialEventsListBlueprint
    +	negotiatedObjectDecoder runtime.Decoder
    +
    +	// base64EncodedInitialEventsListBlueprint contains an empty,
    +	// versioned list encoded in the requested format
    +	// (e.g., protobuf, JSON, CBOR) and stored as a base64-encoded string
    +	base64EncodedInitialEventsListBlueprint string
    +}
    +
    +// Into stores the result into obj. The passed obj parameter must be a pointer to a list type.
    +//
    +// Note:
    +//
    +// Special attention should be given to the type *unstructured.Unstructured,
    +// which represents a list type but does not have an "Items" field.
    +// Users who directly use RESTClient may store the response in such an object.
    +// This particular case is not handled by the current implementation of this function,
    +// but may be considered for future updates.
    +func (r WatchListResult) Into(obj runtime.Object) error {
    +	if r.err != nil {
    +		return r.err
    +	}
    +
    +	listItemsPtr, err := meta.GetItemsPtr(obj)
    +	if err != nil {
    +		return err
    +	}
    +	listVal, err := conversion.EnforcePtr(listItemsPtr)
    +	if err != nil {
    +		return err
    +	}
    +	if listVal.Kind() != reflect.Slice {
    +		return fmt.Errorf("need a pointer to slice, got %v", listVal.Kind())
    +	}
    +
    +	encodedInitialEventsListBlueprint, err := base64.StdEncoding.DecodeString(r.base64EncodedInitialEventsListBlueprint)
    +	if err != nil {
    +		return fmt.Errorf("failed to decode the received blueprint list, err %w", err)
    +	}
    +
    +	err = runtime.DecodeInto(r.negotiatedObjectDecoder, encodedInitialEventsListBlueprint, obj)
    +	if err != nil {
    +		return err
    +	}
    +
    +	if len(r.items) == 0 {
    +		listVal.Set(reflect.MakeSlice(listVal.Type(), 0, 0))
    +	} else {
    +		listVal.Set(reflect.MakeSlice(listVal.Type(), len(r.items), len(r.items)))
    +		for i, o := range r.items {
    +			if listVal.Type().Elem() != reflect.TypeOf(o).Elem() {
    +				return fmt.Errorf("received object type = %v at index = %d, doesn't match the list item type = %v", reflect.TypeOf(o).Elem(), i, listVal.Type().Elem())
    +			}
    +			listVal.Index(i).Set(reflect.ValueOf(o).Elem())
    +		}
    +	}
    +
    +	listMeta, err := meta.ListAccessor(obj)
    +	if err != nil {
    +		return err
    +	}
    +	listMeta.SetResourceVersion(r.initialEventsEndBookmarkRV)
    +	return nil
    +}
    +
    +// WatchList establishes a stream to get a consistent snapshot of data
    +// from the server as described in https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/3157-watch-list#proposal
    +//
    +// Note that the watchlist requires properly setting the ListOptions
    +// otherwise it just establishes a regular watch with the server.
    +// Check the documentation https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists
    +// to see what parameters are currently required.
    +func (r *Request) WatchList(ctx context.Context) WatchListResult {
    +	if r.body == nil {
    +		logBody(ctx, 2, "Request Body", r.bodyBytes)
    +	}
    +
    +	if !clientfeatures.FeatureGates().Enabled(clientfeatures.WatchListClient) {
    +		return WatchListResult{err: fmt.Errorf("%q feature gate is not enabled", clientfeatures.WatchListClient)}
    +	}
    +	// TODO(#115478): consider validating request parameters (i.e sendInitialEvents).
    +	//  Most users use the generated client, which handles the proper setting of parameters.
    +	//  We don't have validation for other methods (e.g., the Watch)
    +	//  thus, for symmetry, we haven't added additional checks for the WatchList method.
    +	w, d, err := r.watchInternal(ctx)
    +	if err != nil {
    +		return WatchListResult{err: err}
    +	}
    +	return r.handleWatchList(ctx, w, d)
    +}
    +
    +// handleWatchList holds the actual logic for easier unit testing.
    +// Note that this function will close the passed watch.
    +func (r *Request) handleWatchList(ctx context.Context, w watch.Interface, negotiatedObjectDecoder runtime.Decoder) WatchListResult {
    +	defer w.Stop()
    +	var lastKey string
    +	var items []runtime.Object
    +
    +	for {
    +		select {
    +		case <-ctx.Done():
    +			return WatchListResult{err: ctx.Err()}
    +		case event, ok := <-w.ResultChan():
    +			if !ok {
    +				return WatchListResult{err: fmt.Errorf("unexpected watch close")}
    +			}
    +			if event.Type == watch.Error {
    +				return WatchListResult{err: errors.FromObject(event.Object)}
    +			}
    +			meta, err := meta.Accessor(event.Object)
    +			if err != nil {
    +				return WatchListResult{err: fmt.Errorf("failed to parse watch event: %#v", event)}
    +			}
    +
    +			switch event.Type {
    +			case watch.Added:
    +				// the following check ensures that the response is ordered.
    +				// earlier servers had a bug that caused them to not sort the output.
    +				// in such cases, return an error which can trigger fallback logic.
    +				key := objectKeyFromMeta(meta)
    +				if len(lastKey) > 0 && lastKey > key {
    +					return WatchListResult{err: fmt.Errorf("cannot add the obj (%#v) with the key = %s, as it violates the ordering guarantees provided by the watchlist feature in beta phase, lastInsertedKey was = %s", event.Object, key, lastKey)}
    +				}
    +				items = append(items, event.Object)
    +				lastKey = key
    +			case watch.Bookmark:
    +				if meta.GetAnnotations()[metav1.InitialEventsAnnotationKey] == "true" {
    +					base64EncodedInitialEventsListBlueprint := meta.GetAnnotations()[metav1.InitialEventsListBlueprintAnnotationKey]
    +					if len(base64EncodedInitialEventsListBlueprint) == 0 {
    +						return WatchListResult{err: fmt.Errorf("%q annotation is missing content", metav1.InitialEventsListBlueprintAnnotationKey)}
    +					}
    +					return WatchListResult{
    +						items:                                   items,
    +						initialEventsEndBookmarkRV:              meta.GetResourceVersion(),
    +						negotiatedObjectDecoder:                 negotiatedObjectDecoder,
    +						base64EncodedInitialEventsListBlueprint: base64EncodedInitialEventsListBlueprint,
    +					}
    +				}
    +			default:
    +				return WatchListResult{err: fmt.Errorf("unexpected watch event %#v, expected to only receive watch.Added and watch.Bookmark events", event)}
    +			}
     		}
     	}
     }
     
    -func (r *Request) newStreamWatcher(resp *http.Response) (watch.Interface, error) {
    +func (r *Request) newStreamWatcher(resp *http.Response) (watch.Interface, runtime.Decoder, error) {
     	contentType := resp.Header.Get("Content-Type")
     	mediaType, params, err := mime.ParseMediaType(contentType)
     	if err != nil {
     		klog.V(4).Infof("Unexpected content type from the server: %q: %v", contentType, err)
     	}
    -	objectDecoder, streamingSerializer, framer, err := r.c.content.Negotiator.StreamDecoder(mediaType, params)
    +	objectDecoder, streamingSerializer, framer, err := r.contentConfig.Negotiator.StreamDecoder(mediaType, params)
     	if err != nil {
    -		return nil, err
    +		return nil, nil, err
     	}
     
     	handleWarnings(resp.Header, r.warningHandler)
    @@ -789,7 +990,7 @@ func (r *Request) newStreamWatcher(resp *http.Response) (watch.Interface, error)
     		// use 500 to indicate that the cause of the error is unknown - other error codes
     		// are more specific to HTTP interactions, and set a reason
     		errors.NewClientErrorReporter(http.StatusInternalServerError, r.verb, "ClientWatchDecoding"),
    -	), nil
    +	), objectDecoder, nil
     }
     
     // updateRequestResultMetric increments the RequestResult metric counter,
    @@ -829,6 +1030,10 @@ func sanitize(req *Request, resp *http.Response, err error) (string, string) {
     // Any non-2xx http status code causes an error.  If we get a non-2xx code, we try to convert the body into an APIStatus object.
     // If we can, we return that as an error.  Otherwise, we create an error that lists the http status and the content of the response.
     func (r *Request) Stream(ctx context.Context) (io.ReadCloser, error) {
    +	if r.body == nil {
    +		logBody(ctx, 2, "Request Body", r.bodyBytes)
    +	}
    +
     	if r.err != nil {
     		return nil, r.err
     	}
    @@ -872,7 +1077,7 @@ func (r *Request) Stream(ctx context.Context) (io.ReadCloser, error) {
     				if retry.IsNextRetry(ctx, r, req, resp, err, neverRetryError) {
     					return false, nil
     				}
    -				result := r.transformResponse(resp, req)
    +				result := r.transformResponse(ctx, resp, req)
     				if err := result.Error(); err != nil {
     					return true, err
     				}
    @@ -1004,7 +1209,7 @@ func (r *Request) request(ctx context.Context, fn func(*http.Request, *http.Resp
     			return false
     		}
     		// For connection errors and apiserver shutdown errors retry.
    -		if net.IsConnectionReset(err) || net.IsProbableEOF(err) {
    +		if net.IsConnectionReset(err) || net.IsProbableEOF(err) || net.IsHTTP2ConnectionLost(err) {
     			return true
     		}
     		return false
    @@ -1026,6 +1231,9 @@ func (r *Request) request(ctx context.Context, fn func(*http.Request, *http.Resp
     		if req.ContentLength >= 0 && !(req.Body != nil && req.ContentLength == 0) {
     			metrics.RequestSize.Observe(ctx, r.verb, r.URL().Host, float64(req.ContentLength))
     		}
    +		if resp != nil && resp.StatusCode == http.StatusUnsupportedMediaType {
    +			r.c.content.UnsupportedMediaType(resp.Request.Header.Get("Content-Type"))
    +		}
     		retry.After(ctx, r, resp, err)
     
     		done := func() bool {
    @@ -1059,9 +1267,13 @@ func (r *Request) request(ctx context.Context, fn func(*http.Request, *http.Resp
     //   - If the server responds with a status: *errors.StatusError or *errors.UnexpectedObjectError
     //   - http.Client.Do errors are returned directly.
     func (r *Request) Do(ctx context.Context) Result {
    +	if r.body == nil {
    +		logBody(ctx, 2, "Request Body", r.bodyBytes)
    +	}
    +
     	var result Result
     	err := r.request(ctx, func(req *http.Request, resp *http.Response) {
    -		result = r.transformResponse(resp, req)
    +		result = r.transformResponse(ctx, resp, req)
     	})
     	if err != nil {
     		return Result{err: err}
    @@ -1074,10 +1286,14 @@ func (r *Request) Do(ctx context.Context) Result {
     
     // DoRaw executes the request but does not process the response body.
     func (r *Request) DoRaw(ctx context.Context) ([]byte, error) {
    +	if r.body == nil {
    +		logBody(ctx, 2, "Request Body", r.bodyBytes)
    +	}
    +
     	var result Result
     	err := r.request(ctx, func(req *http.Request, resp *http.Response) {
     		result.body, result.err = io.ReadAll(resp.Body)
    -		glogBody("Response Body", result.body)
    +		logBody(ctx, 2, "Response Body", result.body)
     		if resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent {
     			result.err = r.transformUnstructuredResponseError(resp, req, result.body)
     		}
    @@ -1092,7 +1308,7 @@ func (r *Request) DoRaw(ctx context.Context) ([]byte, error) {
     }
     
     // transformResponse converts an API response into a structured API object
    -func (r *Request) transformResponse(resp *http.Response, req *http.Request) Result {
    +func (r *Request) transformResponse(ctx context.Context, resp *http.Response, req *http.Request) Result {
     	var body []byte
     	if resp.Body != nil {
     		data, err := io.ReadAll(resp.Body)
    @@ -1121,13 +1337,14 @@ func (r *Request) transformResponse(resp *http.Response, req *http.Request) Resu
     		}
     	}
     
    -	glogBody("Response Body", body)
    +	// Call depth is tricky. This one is okay for Do and DoRaw.
    +	logBody(ctx, 7, "Response Body", body)
     
     	// verify the content type is accurate
     	var decoder runtime.Decoder
     	contentType := resp.Header.Get("Content-Type")
     	if len(contentType) == 0 {
    -		contentType = r.c.content.ContentType
    +		contentType = r.contentConfig.ContentType
     	}
     	if len(contentType) > 0 {
     		var err error
    @@ -1135,7 +1352,7 @@ func (r *Request) transformResponse(resp *http.Response, req *http.Request) Resu
     		if err != nil {
     			return Result{err: errors.NewInternalError(err)}
     		}
    -		decoder, err = r.c.content.Negotiator.Decoder(mediaType, params)
    +		decoder, err = r.contentConfig.Negotiator.Decoder(mediaType, params)
     		if err != nil {
     			// if we fail to negotiate a decoder, treat this as an unstructured error
     			switch {
    @@ -1181,14 +1398,14 @@ func (r *Request) transformResponse(resp *http.Response, req *http.Request) Resu
     }
     
     // truncateBody decides if the body should be truncated, based on the glog Verbosity.
    -func truncateBody(body string) string {
    +func truncateBody(logger klog.Logger, body string) string {
     	max := 0
     	switch {
    -	case bool(klog.V(10).Enabled()):
    +	case bool(logger.V(10).Enabled()):
     		return body
    -	case bool(klog.V(9).Enabled()):
    +	case bool(logger.V(9).Enabled()):
     		max = 10240
    -	case bool(klog.V(8).Enabled()):
    +	case bool(logger.V(8).Enabled()):
     		max = 1024
     	}
     
    @@ -1199,17 +1416,21 @@ func truncateBody(body string) string {
     	return body[:max] + fmt.Sprintf(" [truncated %d chars]", len(body)-max)
     }
     
    -// glogBody logs a body output that could be either JSON or protobuf. It explicitly guards against
    +// logBody logs a body output that could be either JSON or protobuf. It explicitly guards against
     // allocating a new string for the body output unless necessary. Uses a simple heuristic to determine
     // whether the body is printable.
    -func glogBody(prefix string, body []byte) {
    -	if klogV := klog.V(8); klogV.Enabled() {
    +//
    +// It needs to be called by all functions which send or receive the data.
    +func logBody(ctx context.Context, callDepth int, prefix string, body []byte) {
    +	logger := klog.FromContext(ctx)
    +	if loggerV := logger.V(8); loggerV.Enabled() {
    +		loggerV := loggerV.WithCallDepth(callDepth)
     		if bytes.IndexFunc(body, func(r rune) bool {
     			return r < 0x0a
     		}) != -1 {
    -			klogV.Infof("%s:\n%s", prefix, truncateBody(hex.Dump(body)))
    +			loggerV.Info(prefix, "body", truncateBody(logger, hex.Dump(body)))
     		} else {
    -			klogV.Infof("%s: %s", prefix, truncateBody(string(body)))
    +			loggerV.Info(prefix, "body", truncateBody(logger, string(body)))
     		}
     	}
     }
    @@ -1258,7 +1479,7 @@ func (r *Request) newUnstructuredResponseError(body []byte, isTextResponse bool,
     	}
     	var groupResource schema.GroupResource
     	if len(r.resource) > 0 {
    -		groupResource.Group = r.c.content.GroupVersion.Group
    +		groupResource.Group = r.contentConfig.GroupVersion.Group
     		groupResource.Resource = r.resource
     	}
     	return errors.NewGenericServerResponse(
    @@ -1470,3 +1691,10 @@ func ValidatePathSegmentName(name string, prefix bool) []string {
     	}
     	return IsValidPathSegmentName(name)
     }
    +
    +func objectKeyFromMeta(objMeta metav1.Object) string {
    +	if len(objMeta.GetNamespace()) > 0 {
    +		return fmt.Sprintf("%s/%s", objMeta.GetNamespace(), objMeta.GetName())
    +	}
    +	return objMeta.GetName()
    +}
    diff --git a/vendor/k8s.io/client-go/rest/url_utils.go b/vendor/k8s.io/client-go/rest/url_utils.go
    index c4ce6e3b8fcd..0a0ab7917398 100644
    --- a/vendor/k8s.io/client-go/rest/url_utils.go
    +++ b/vendor/k8s.io/client-go/rest/url_utils.go
    @@ -61,7 +61,7 @@ func DefaultServerURL(host, apiPath string, groupVersion schema.GroupVersion, de
     	return hostURL, versionedAPIPath, nil
     }
     
    -// DefaultVersionedAPIPathFor constructs the default path for the given group version, assuming the given
    +// DefaultVersionedAPIPath constructs the default path for the given group version, assuming the given
     // API path, following the standard conventions of the Kubernetes API.
     func DefaultVersionedAPIPath(apiPath string, groupVersion schema.GroupVersion) string {
     	versionedAPIPath := path.Join("/", apiPath)
    diff --git a/vendor/k8s.io/client-go/rest/watch/decoder.go b/vendor/k8s.io/client-go/rest/watch/decoder.go
    index e95c020b2e9b..c2b68cbcb725 100644
    --- a/vendor/k8s.io/client-go/rest/watch/decoder.go
    +++ b/vendor/k8s.io/client-go/rest/watch/decoder.go
    @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -package versioned
    +package watch
     
     import (
     	"fmt"
    @@ -51,7 +51,7 @@ func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) {
     		return "", nil, err
     	}
     	if res != &got {
    -		return "", nil, fmt.Errorf("unable to decode to metav1.Event")
    +		return "", nil, fmt.Errorf("unable to decode to metav1.WatchEvent")
     	}
     	switch got.Type {
     	case string(watch.Added), string(watch.Modified), string(watch.Deleted), string(watch.Error), string(watch.Bookmark):
    diff --git a/vendor/k8s.io/client-go/rest/watch/encoder.go b/vendor/k8s.io/client-go/rest/watch/encoder.go
    index e55aa12d9b42..a95b4985c5c8 100644
    --- a/vendor/k8s.io/client-go/rest/watch/encoder.go
    +++ b/vendor/k8s.io/client-go/rest/watch/encoder.go
    @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -package versioned
    +package watch
     
     import (
     	"encoding/json"
    diff --git a/vendor/k8s.io/client-go/testing/actions.go b/vendor/k8s.io/client-go/testing/actions.go
    index c8ae0aaf5d47..e7af4d6e8d38 100644
    --- a/vendor/k8s.io/client-go/testing/actions.go
    +++ b/vendor/k8s.io/client-go/testing/actions.go
    @@ -29,42 +29,66 @@ import (
     	"k8s.io/apimachinery/pkg/types"
     )
     
    +// All NewRoot... functions return non-namespaced actions, and are equivalent to
    +// calling the corresponding New... function with an empty namespace.
    +// This is assumed by the fake client generator.
    +
     func NewRootGetAction(resource schema.GroupVersionResource, name string) GetActionImpl {
    +	return NewRootGetActionWithOptions(resource, name, metav1.GetOptions{})
    +}
    +
    +func NewRootGetActionWithOptions(resource schema.GroupVersionResource, name string, opts metav1.GetOptions) GetActionImpl {
     	action := GetActionImpl{}
     	action.Verb = "get"
     	action.Resource = resource
     	action.Name = name
    +	action.GetOptions = opts
     
     	return action
     }
     
     func NewGetAction(resource schema.GroupVersionResource, namespace, name string) GetActionImpl {
    +	return NewGetActionWithOptions(resource, namespace, name, metav1.GetOptions{})
    +}
    +
    +func NewGetActionWithOptions(resource schema.GroupVersionResource, namespace, name string, opts metav1.GetOptions) GetActionImpl {
     	action := GetActionImpl{}
     	action.Verb = "get"
     	action.Resource = resource
     	action.Namespace = namespace
     	action.Name = name
    +	action.GetOptions = opts
     
     	return action
     }
     
     func NewGetSubresourceAction(resource schema.GroupVersionResource, namespace, subresource, name string) GetActionImpl {
    +	return NewGetSubresourceActionWithOptions(resource, namespace, subresource, name, metav1.GetOptions{})
    +}
    +
    +func NewGetSubresourceActionWithOptions(resource schema.GroupVersionResource, namespace, subresource, name string, opts metav1.GetOptions) GetActionImpl {
     	action := GetActionImpl{}
     	action.Verb = "get"
     	action.Resource = resource
     	action.Subresource = subresource
     	action.Namespace = namespace
     	action.Name = name
    +	action.GetOptions = opts
     
     	return action
     }
     
     func NewRootGetSubresourceAction(resource schema.GroupVersionResource, subresource, name string) GetActionImpl {
    +	return NewRootGetSubresourceActionWithOptions(resource, subresource, name, metav1.GetOptions{})
    +}
    +
    +func NewRootGetSubresourceActionWithOptions(resource schema.GroupVersionResource, subresource, name string, opts metav1.GetOptions) GetActionImpl {
     	action := GetActionImpl{}
     	action.Verb = "get"
     	action.Resource = resource
     	action.Subresource = subresource
     	action.Name = name
    +	action.GetOptions = opts
     
     	return action
     }
    @@ -76,6 +100,21 @@ func NewRootListAction(resource schema.GroupVersionResource, kind schema.GroupVe
     	action.Kind = kind
     	labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
     	action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
    +	action.ListOptions = metav1.ListOptions{LabelSelector: labelSelector.String(), FieldSelector: fieldSelector.String()}
    +
    +	return action
    +}
    +
    +func NewRootListActionWithOptions(resource schema.GroupVersionResource, kind schema.GroupVersionKind, opts metav1.ListOptions) ListActionImpl {
    +	action := ListActionImpl{}
    +	action.Verb = "list"
    +	action.Resource = resource
    +	action.Kind = kind
    +	action.ListOptions = opts
    +
    +	labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
    +	action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
    +	action.ListOptions = metav1.ListOptions{LabelSelector: labelSelector.String(), FieldSelector: fieldSelector.String()}
     
     	return action
     }
    @@ -86,6 +125,21 @@ func NewListAction(resource schema.GroupVersionResource, kind schema.GroupVersio
     	action.Resource = resource
     	action.Kind = kind
     	action.Namespace = namespace
    +	labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
    +	action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
    +	action.ListOptions = metav1.ListOptions{LabelSelector: labelSelector.String(), FieldSelector: fieldSelector.String()}
    +
    +	return action
    +}
    +
    +func NewListActionWithOptions(resource schema.GroupVersionResource, kind schema.GroupVersionKind, namespace string, opts metav1.ListOptions) ListActionImpl {
    +	action := ListActionImpl{}
    +	action.Verb = "list"
    +	action.Resource = resource
    +	action.Kind = kind
    +	action.Namespace = namespace
    +	action.ListOptions = opts
    +
     	labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
     	action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
     
    @@ -93,36 +147,55 @@ func NewListAction(resource schema.GroupVersionResource, kind schema.GroupVersio
     }
     
     func NewRootCreateAction(resource schema.GroupVersionResource, object runtime.Object) CreateActionImpl {
    +	return NewRootCreateActionWithOptions(resource, object, metav1.CreateOptions{})
    +}
    +
    +func NewRootCreateActionWithOptions(resource schema.GroupVersionResource, object runtime.Object, opts metav1.CreateOptions) CreateActionImpl {
     	action := CreateActionImpl{}
     	action.Verb = "create"
     	action.Resource = resource
     	action.Object = object
    +	action.CreateOptions = opts
     
     	return action
     }
     
     func NewCreateAction(resource schema.GroupVersionResource, namespace string, object runtime.Object) CreateActionImpl {
    +	return NewCreateActionWithOptions(resource, namespace, object, metav1.CreateOptions{})
    +}
    +
    +func NewCreateActionWithOptions(resource schema.GroupVersionResource, namespace string, object runtime.Object, opts metav1.CreateOptions) CreateActionImpl {
     	action := CreateActionImpl{}
     	action.Verb = "create"
     	action.Resource = resource
     	action.Namespace = namespace
     	action.Object = object
    +	action.CreateOptions = opts
     
     	return action
     }
     
     func NewRootCreateSubresourceAction(resource schema.GroupVersionResource, name, subresource string, object runtime.Object) CreateActionImpl {
    +	return NewRootCreateSubresourceActionWithOptions(resource, name, subresource, object, metav1.CreateOptions{})
    +}
    +
    +func NewRootCreateSubresourceActionWithOptions(resource schema.GroupVersionResource, name, subresource string, object runtime.Object, opts metav1.CreateOptions) CreateActionImpl {
     	action := CreateActionImpl{}
     	action.Verb = "create"
     	action.Resource = resource
     	action.Subresource = subresource
     	action.Name = name
     	action.Object = object
    +	action.CreateOptions = opts
     
     	return action
     }
     
     func NewCreateSubresourceAction(resource schema.GroupVersionResource, name, subresource, namespace string, object runtime.Object) CreateActionImpl {
    +	return NewCreateSubresourceActionWithOptions(resource, name, subresource, namespace, object, metav1.CreateOptions{})
    +}
    +
    +func NewCreateSubresourceActionWithOptions(resource schema.GroupVersionResource, name, subresource, namespace string, object runtime.Object, opts metav1.CreateOptions) CreateActionImpl {
     	action := CreateActionImpl{}
     	action.Verb = "create"
     	action.Resource = resource
    @@ -130,41 +203,61 @@ func NewCreateSubresourceAction(resource schema.GroupVersionResource, name, subr
     	action.Subresource = subresource
     	action.Name = name
     	action.Object = object
    +	action.CreateOptions = opts
     
     	return action
     }
     
     func NewRootUpdateAction(resource schema.GroupVersionResource, object runtime.Object) UpdateActionImpl {
    +	return NewRootUpdateActionWithOptions(resource, object, metav1.UpdateOptions{})
    +}
    +
    +func NewRootUpdateActionWithOptions(resource schema.GroupVersionResource, object runtime.Object, opts metav1.UpdateOptions) UpdateActionImpl {
     	action := UpdateActionImpl{}
     	action.Verb = "update"
     	action.Resource = resource
     	action.Object = object
    +	action.UpdateOptions = opts
     
     	return action
     }
     
     func NewUpdateAction(resource schema.GroupVersionResource, namespace string, object runtime.Object) UpdateActionImpl {
    +	return NewUpdateActionWithOptions(resource, namespace, object, metav1.UpdateOptions{})
    +}
    +
    +func NewUpdateActionWithOptions(resource schema.GroupVersionResource, namespace string, object runtime.Object, opts metav1.UpdateOptions) UpdateActionImpl {
     	action := UpdateActionImpl{}
     	action.Verb = "update"
     	action.Resource = resource
     	action.Namespace = namespace
     	action.Object = object
    +	action.UpdateOptions = opts
     
     	return action
     }
     
     func NewRootPatchAction(resource schema.GroupVersionResource, name string, pt types.PatchType, patch []byte) PatchActionImpl {
    +	return NewRootPatchActionWithOptions(resource, name, pt, patch, metav1.PatchOptions{})
    +}
    +
    +func NewRootPatchActionWithOptions(resource schema.GroupVersionResource, name string, pt types.PatchType, patch []byte, opts metav1.PatchOptions) PatchActionImpl {
     	action := PatchActionImpl{}
     	action.Verb = "patch"
     	action.Resource = resource
     	action.Name = name
     	action.PatchType = pt
     	action.Patch = patch
    +	action.PatchOptions = opts
     
     	return action
     }
     
     func NewPatchAction(resource schema.GroupVersionResource, namespace string, name string, pt types.PatchType, patch []byte) PatchActionImpl {
    +	return NewPatchActionWithOptions(resource, namespace, name, pt, patch, metav1.PatchOptions{})
    +}
    +
    +func NewPatchActionWithOptions(resource schema.GroupVersionResource, namespace string, name string, pt types.PatchType, patch []byte, opts metav1.PatchOptions) PatchActionImpl {
     	action := PatchActionImpl{}
     	action.Verb = "patch"
     	action.Resource = resource
    @@ -172,11 +265,16 @@ func NewPatchAction(resource schema.GroupVersionResource, namespace string, name
     	action.Name = name
     	action.PatchType = pt
     	action.Patch = patch
    +	action.PatchOptions = opts
     
     	return action
     }
     
     func NewRootPatchSubresourceAction(resource schema.GroupVersionResource, name string, pt types.PatchType, patch []byte, subresources ...string) PatchActionImpl {
    +	return NewRootPatchSubresourceActionWithOptions(resource, name, pt, patch, metav1.PatchOptions{}, subresources...)
    +}
    +
    +func NewRootPatchSubresourceActionWithOptions(resource schema.GroupVersionResource, name string, pt types.PatchType, patch []byte, opts metav1.PatchOptions, subresources ...string) PatchActionImpl {
     	action := PatchActionImpl{}
     	action.Verb = "patch"
     	action.Resource = resource
    @@ -184,11 +282,16 @@ func NewRootPatchSubresourceAction(resource schema.GroupVersionResource, name st
     	action.Name = name
     	action.PatchType = pt
     	action.Patch = patch
    +	action.PatchOptions = opts
     
     	return action
     }
     
     func NewPatchSubresourceAction(resource schema.GroupVersionResource, namespace, name string, pt types.PatchType, patch []byte, subresources ...string) PatchActionImpl {
    +	return NewPatchSubresourceActionWithOptions(resource, namespace, name, pt, patch, metav1.PatchOptions{}, subresources...)
    +}
    +
    +func NewPatchSubresourceActionWithOptions(resource schema.GroupVersionResource, namespace, name string, pt types.PatchType, patch []byte, opts metav1.PatchOptions, subresources ...string) PatchActionImpl {
     	action := PatchActionImpl{}
     	action.Verb = "patch"
     	action.Resource = resource
    @@ -197,26 +300,38 @@ func NewPatchSubresourceAction(resource schema.GroupVersionResource, namespace,
     	action.Name = name
     	action.PatchType = pt
     	action.Patch = patch
    +	action.PatchOptions = opts
     
     	return action
     }
     
     func NewRootUpdateSubresourceAction(resource schema.GroupVersionResource, subresource string, object runtime.Object) UpdateActionImpl {
    +	return NewRootUpdateSubresourceActionWithOptions(resource, subresource, object, metav1.UpdateOptions{})
    +}
    +
    +func NewRootUpdateSubresourceActionWithOptions(resource schema.GroupVersionResource, subresource string, object runtime.Object, opts metav1.UpdateOptions) UpdateActionImpl {
     	action := UpdateActionImpl{}
     	action.Verb = "update"
     	action.Resource = resource
     	action.Subresource = subresource
     	action.Object = object
    +	action.UpdateOptions = opts
     
     	return action
     }
    +
     func NewUpdateSubresourceAction(resource schema.GroupVersionResource, subresource string, namespace string, object runtime.Object) UpdateActionImpl {
    +	return NewUpdateSubresourceActionWithOptions(resource, subresource, namespace, object, metav1.UpdateOptions{})
    +}
    +
    +func NewUpdateSubresourceActionWithOptions(resource schema.GroupVersionResource, subresource string, namespace string, object runtime.Object, opts metav1.UpdateOptions) UpdateActionImpl {
     	action := UpdateActionImpl{}
     	action.Verb = "update"
     	action.Resource = resource
     	action.Subresource = subresource
     	action.Namespace = namespace
     	action.Object = object
    +	action.UpdateOptions = opts
     
     	return action
     }
    @@ -236,11 +351,16 @@ func NewRootDeleteActionWithOptions(resource schema.GroupVersionResource, name s
     }
     
     func NewRootDeleteSubresourceAction(resource schema.GroupVersionResource, subresource string, name string) DeleteActionImpl {
    +	return NewRootDeleteSubresourceActionWithOptions(resource, subresource, name, metav1.DeleteOptions{})
    +}
    +
    +func NewRootDeleteSubresourceActionWithOptions(resource schema.GroupVersionResource, subresource string, name string, opts metav1.DeleteOptions) DeleteActionImpl {
     	action := DeleteActionImpl{}
     	action.Verb = "delete"
     	action.Resource = resource
     	action.Subresource = subresource
     	action.Name = name
    +	action.DeleteOptions = opts
     
     	return action
     }
    @@ -261,41 +381,69 @@ func NewDeleteActionWithOptions(resource schema.GroupVersionResource, namespace,
     }
     
     func NewDeleteSubresourceAction(resource schema.GroupVersionResource, subresource, namespace, name string) DeleteActionImpl {
    +	return NewDeleteSubresourceActionWithOptions(resource, subresource, namespace, name, metav1.DeleteOptions{})
    +}
    +
    +func NewDeleteSubresourceActionWithOptions(resource schema.GroupVersionResource, subresource, namespace, name string, opts metav1.DeleteOptions) DeleteActionImpl {
     	action := DeleteActionImpl{}
     	action.Verb = "delete"
     	action.Resource = resource
     	action.Subresource = subresource
     	action.Namespace = namespace
     	action.Name = name
    +	action.DeleteOptions = opts
     
     	return action
     }
     
     func NewRootDeleteCollectionAction(resource schema.GroupVersionResource, opts interface{}) DeleteCollectionActionImpl {
    +	listOpts, _ := opts.(metav1.ListOptions)
    +	return NewRootDeleteCollectionActionWithOptions(resource, metav1.DeleteOptions{}, listOpts)
    +}
    +
    +func NewRootDeleteCollectionActionWithOptions(resource schema.GroupVersionResource, deleteOpts metav1.DeleteOptions, listOpts metav1.ListOptions) DeleteCollectionActionImpl {
     	action := DeleteCollectionActionImpl{}
     	action.Verb = "delete-collection"
     	action.Resource = resource
    -	labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
    +	action.DeleteOptions = deleteOpts
    +	action.ListOptions = listOpts
    +
    +	labelSelector, fieldSelector, _ := ExtractFromListOptions(listOpts)
     	action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
     
     	return action
     }
     
     func NewDeleteCollectionAction(resource schema.GroupVersionResource, namespace string, opts interface{}) DeleteCollectionActionImpl {
    +	listOpts, _ := opts.(metav1.ListOptions)
    +	return NewDeleteCollectionActionWithOptions(resource, namespace, metav1.DeleteOptions{}, listOpts)
    +}
    +
    +func NewDeleteCollectionActionWithOptions(resource schema.GroupVersionResource, namespace string, deleteOpts metav1.DeleteOptions, listOpts metav1.ListOptions) DeleteCollectionActionImpl {
     	action := DeleteCollectionActionImpl{}
     	action.Verb = "delete-collection"
     	action.Resource = resource
     	action.Namespace = namespace
    -	labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
    +	action.DeleteOptions = deleteOpts
    +	action.ListOptions = listOpts
    +
    +	labelSelector, fieldSelector, _ := ExtractFromListOptions(listOpts)
     	action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
     
     	return action
     }
     
     func NewRootWatchAction(resource schema.GroupVersionResource, opts interface{}) WatchActionImpl {
    +	listOpts, _ := opts.(metav1.ListOptions)
    +	return NewRootWatchActionWithOptions(resource, listOpts)
    +}
    +
    +func NewRootWatchActionWithOptions(resource schema.GroupVersionResource, opts metav1.ListOptions) WatchActionImpl {
     	action := WatchActionImpl{}
     	action.Verb = "watch"
     	action.Resource = resource
    +	action.ListOptions = opts
    +
     	labelSelector, fieldSelector, resourceVersion := ExtractFromListOptions(opts)
     	action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, resourceVersion}
     
    @@ -328,10 +476,17 @@ func ExtractFromListOptions(opts interface{}) (labelSelector labels.Selector, fi
     }
     
     func NewWatchAction(resource schema.GroupVersionResource, namespace string, opts interface{}) WatchActionImpl {
    +	listOpts, _ := opts.(metav1.ListOptions)
    +	return NewWatchActionWithOptions(resource, namespace, listOpts)
    +}
    +
    +func NewWatchActionWithOptions(resource schema.GroupVersionResource, namespace string, opts metav1.ListOptions) WatchActionImpl {
     	action := WatchActionImpl{}
     	action.Verb = "watch"
     	action.Resource = resource
     	action.Namespace = namespace
    +	action.ListOptions = opts
    +
     	labelSelector, fieldSelector, resourceVersion := ExtractFromListOptions(opts)
     	action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, resourceVersion}
     
    @@ -487,17 +642,23 @@ func (a GenericActionImpl) DeepCopy() Action {
     
     type GetActionImpl struct {
     	ActionImpl
    -	Name string
    +	Name       string
    +	GetOptions metav1.GetOptions
     }
     
     func (a GetActionImpl) GetName() string {
     	return a.Name
     }
     
    +func (a GetActionImpl) GetGetOptions() metav1.GetOptions {
    +	return a.GetOptions
    +}
    +
     func (a GetActionImpl) DeepCopy() Action {
     	return GetActionImpl{
     		ActionImpl: a.ActionImpl.DeepCopy().(ActionImpl),
     		Name:       a.Name,
    +		GetOptions: *a.GetOptions.DeepCopy(),
     	}
     }
     
    @@ -506,6 +667,7 @@ type ListActionImpl struct {
     	Kind             schema.GroupVersionKind
     	Name             string
     	ListRestrictions ListRestrictions
    +	ListOptions      metav1.ListOptions
     }
     
     func (a ListActionImpl) GetKind() schema.GroupVersionKind {
    @@ -516,6 +678,10 @@ func (a ListActionImpl) GetListRestrictions() ListRestrictions {
     	return a.ListRestrictions
     }
     
    +func (a ListActionImpl) GetListOptions() metav1.ListOptions {
    +	return a.ListOptions
    +}
    +
     func (a ListActionImpl) DeepCopy() Action {
     	return ListActionImpl{
     		ActionImpl: a.ActionImpl.DeepCopy().(ActionImpl),
    @@ -525,48 +691,62 @@ func (a ListActionImpl) DeepCopy() Action {
     			Labels: a.ListRestrictions.Labels.DeepCopySelector(),
     			Fields: a.ListRestrictions.Fields.DeepCopySelector(),
     		},
    +		ListOptions: *a.ListOptions.DeepCopy(),
     	}
     }
     
     type CreateActionImpl struct {
     	ActionImpl
    -	Name   string
    -	Object runtime.Object
    +	Name          string
    +	Object        runtime.Object
    +	CreateOptions metav1.CreateOptions
     }
     
     func (a CreateActionImpl) GetObject() runtime.Object {
     	return a.Object
     }
     
    +func (a CreateActionImpl) GetCreateOptions() metav1.CreateOptions {
    +	return a.CreateOptions
    +}
    +
     func (a CreateActionImpl) DeepCopy() Action {
     	return CreateActionImpl{
    -		ActionImpl: a.ActionImpl.DeepCopy().(ActionImpl),
    -		Name:       a.Name,
    -		Object:     a.Object.DeepCopyObject(),
    +		ActionImpl:    a.ActionImpl.DeepCopy().(ActionImpl),
    +		Name:          a.Name,
    +		Object:        a.Object.DeepCopyObject(),
    +		CreateOptions: *a.CreateOptions.DeepCopy(),
     	}
     }
     
     type UpdateActionImpl struct {
     	ActionImpl
    -	Object runtime.Object
    +	Object        runtime.Object
    +	UpdateOptions metav1.UpdateOptions
     }
     
     func (a UpdateActionImpl) GetObject() runtime.Object {
     	return a.Object
     }
     
    +func (a UpdateActionImpl) GetUpdateOptions() metav1.UpdateOptions {
    +	return a.UpdateOptions
    +}
    +
     func (a UpdateActionImpl) DeepCopy() Action {
     	return UpdateActionImpl{
    -		ActionImpl: a.ActionImpl.DeepCopy().(ActionImpl),
    -		Object:     a.Object.DeepCopyObject(),
    +		ActionImpl:    a.ActionImpl.DeepCopy().(ActionImpl),
    +		Object:        a.Object.DeepCopyObject(),
    +		UpdateOptions: *a.UpdateOptions.DeepCopy(),
     	}
     }
     
     type PatchActionImpl struct {
     	ActionImpl
    -	Name      string
    -	PatchType types.PatchType
    -	Patch     []byte
    +	Name         string
    +	PatchType    types.PatchType
    +	Patch        []byte
    +	PatchOptions metav1.PatchOptions
     }
     
     func (a PatchActionImpl) GetName() string {
    @@ -581,14 +761,19 @@ func (a PatchActionImpl) GetPatchType() types.PatchType {
     	return a.PatchType
     }
     
    +func (a PatchActionImpl) GetPatchOptions() metav1.PatchOptions {
    +	return a.PatchOptions
    +}
    +
     func (a PatchActionImpl) DeepCopy() Action {
     	patch := make([]byte, len(a.Patch))
     	copy(patch, a.Patch)
     	return PatchActionImpl{
    -		ActionImpl: a.ActionImpl.DeepCopy().(ActionImpl),
    -		Name:       a.Name,
    -		PatchType:  a.PatchType,
    -		Patch:      patch,
    +		ActionImpl:   a.ActionImpl.DeepCopy().(ActionImpl),
    +		Name:         a.Name,
    +		PatchType:    a.PatchType,
    +		Patch:        patch,
    +		PatchOptions: *a.PatchOptions.DeepCopy(),
     	}
     }
     
    @@ -617,12 +802,22 @@ func (a DeleteActionImpl) DeepCopy() Action {
     type DeleteCollectionActionImpl struct {
     	ActionImpl
     	ListRestrictions ListRestrictions
    +	DeleteOptions    metav1.DeleteOptions
    +	ListOptions      metav1.ListOptions
     }
     
     func (a DeleteCollectionActionImpl) GetListRestrictions() ListRestrictions {
     	return a.ListRestrictions
     }
     
    +func (a DeleteCollectionActionImpl) GetDeleteOptions() metav1.DeleteOptions {
    +	return a.DeleteOptions
    +}
    +
    +func (a DeleteCollectionActionImpl) GetListOptions() metav1.ListOptions {
    +	return a.ListOptions
    +}
    +
     func (a DeleteCollectionActionImpl) DeepCopy() Action {
     	return DeleteCollectionActionImpl{
     		ActionImpl: a.ActionImpl.DeepCopy().(ActionImpl),
    @@ -630,18 +825,25 @@ func (a DeleteCollectionActionImpl) DeepCopy() Action {
     			Labels: a.ListRestrictions.Labels.DeepCopySelector(),
     			Fields: a.ListRestrictions.Fields.DeepCopySelector(),
     		},
    +		DeleteOptions: *a.DeleteOptions.DeepCopy(),
    +		ListOptions:   *a.ListOptions.DeepCopy(),
     	}
     }
     
     type WatchActionImpl struct {
     	ActionImpl
     	WatchRestrictions WatchRestrictions
    +	ListOptions       metav1.ListOptions
     }
     
     func (a WatchActionImpl) GetWatchRestrictions() WatchRestrictions {
     	return a.WatchRestrictions
     }
     
    +func (a WatchActionImpl) GetListOptions() metav1.ListOptions {
    +	return a.ListOptions
    +}
    +
     func (a WatchActionImpl) DeepCopy() Action {
     	return WatchActionImpl{
     		ActionImpl: a.ActionImpl.DeepCopy().(ActionImpl),
    @@ -650,6 +852,7 @@ func (a WatchActionImpl) DeepCopy() Action {
     			Fields:          a.WatchRestrictions.Fields.DeepCopySelector(),
     			ResourceVersion: a.WatchRestrictions.ResourceVersion,
     		},
    +		ListOptions: *a.ListOptions.DeepCopy(),
     	}
     }
     
    diff --git a/vendor/k8s.io/client-go/testing/fixture.go b/vendor/k8s.io/client-go/testing/fixture.go
    index 396840670fd3..15b3e533481e 100644
    --- a/vendor/k8s.io/client-go/testing/fixture.go
    +++ b/vendor/k8s.io/client-go/testing/fixture.go
    @@ -19,19 +19,24 @@ package testing
     import (
     	"fmt"
     	"reflect"
    +	"sigs.k8s.io/structured-merge-diff/v4/typed"
    +	"sigs.k8s.io/yaml"
     	"sort"
     	"strings"
     	"sync"
     
    -	jsonpatch "github.com/evanphx/json-patch"
    +	jsonpatch "gopkg.in/evanphx/json-patch.v4"
     
    -	"k8s.io/apimachinery/pkg/api/errors"
    +	apierrors "k8s.io/apimachinery/pkg/api/errors"
     	"k8s.io/apimachinery/pkg/api/meta"
    +	"k8s.io/apimachinery/pkg/api/meta/testrestmapper"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
     	"k8s.io/apimachinery/pkg/runtime"
     	"k8s.io/apimachinery/pkg/runtime/schema"
     	"k8s.io/apimachinery/pkg/types"
     	"k8s.io/apimachinery/pkg/util/json"
    +	"k8s.io/apimachinery/pkg/util/managedfields"
     	"k8s.io/apimachinery/pkg/util/strategicpatch"
     	"k8s.io/apimachinery/pkg/watch"
     	restclient "k8s.io/client-go/rest"
    @@ -46,26 +51,32 @@ type ObjectTracker interface {
     	Add(obj runtime.Object) error
     
     	// Get retrieves the object by its kind, namespace and name.
    -	Get(gvr schema.GroupVersionResource, ns, name string) (runtime.Object, error)
    +	Get(gvr schema.GroupVersionResource, ns, name string, opts ...metav1.GetOptions) (runtime.Object, error)
     
     	// Create adds an object to the tracker in the specified namespace.
    -	Create(gvr schema.GroupVersionResource, obj runtime.Object, ns string) error
    +	Create(gvr schema.GroupVersionResource, obj runtime.Object, ns string, opts ...metav1.CreateOptions) error
     
     	// Update updates an existing object in the tracker in the specified namespace.
    -	Update(gvr schema.GroupVersionResource, obj runtime.Object, ns string) error
    +	Update(gvr schema.GroupVersionResource, obj runtime.Object, ns string, opts ...metav1.UpdateOptions) error
    +
    +	// Patch patches an existing object in the tracker in the specified namespace.
    +	Patch(gvr schema.GroupVersionResource, obj runtime.Object, ns string, opts ...metav1.PatchOptions) error
    +
    +	// Apply applies an object in the tracker in the specified namespace.
    +	Apply(gvr schema.GroupVersionResource, applyConfiguration runtime.Object, ns string, opts ...metav1.PatchOptions) error
     
     	// List retrieves all objects of a given kind in the given
     	// namespace. Only non-List kinds are accepted.
    -	List(gvr schema.GroupVersionResource, gvk schema.GroupVersionKind, ns string) (runtime.Object, error)
    +	List(gvr schema.GroupVersionResource, gvk schema.GroupVersionKind, ns string, opts ...metav1.ListOptions) (runtime.Object, error)
     
     	// Delete deletes an existing object from the tracker. If object
     	// didn't exist in the tracker prior to deletion, Delete returns
     	// no error.
    -	Delete(gvr schema.GroupVersionResource, ns, name string) error
    +	Delete(gvr schema.GroupVersionResource, ns, name string, opts ...metav1.DeleteOptions) error
     
     	// Watch watches objects from the tracker. Watch returns a channel
     	// which will push added / modified / deleted object.
    -	Watch(gvr schema.GroupVersionResource, ns string) (watch.Interface, error)
    +	Watch(gvr schema.GroupVersionResource, ns string, opts ...metav1.ListOptions) (watch.Interface, error)
     }
     
     // ObjectScheme abstracts the implementation of common operations on objects.
    @@ -76,133 +87,201 @@ type ObjectScheme interface {
     
     // ObjectReaction returns a ReactionFunc that applies core.Action to
     // the given tracker.
    +//
    +// If tracker also implements ManagedFieldObjectTracker, then managed fields
    +// will be handled by the tracker and apply patch actions will be evaluated
    +// using the field manager and will take field ownership into consideration.
    +// Without a ManagedFieldObjectTracker, apply patch actions do not consider
    +// field ownership.
    +//
    +// WARNING: There is no server side defaulting, validation, or conversion handled
    +// by the fake client and subresources are not handled accurately (fields in the
    +// root resource are not automatically updated when a scale resource is updated, for example).
     func ObjectReaction(tracker ObjectTracker) ReactionFunc {
    +	reactor := objectTrackerReact{tracker: tracker}
     	return func(action Action) (bool, runtime.Object, error) {
    -		ns := action.GetNamespace()
    -		gvr := action.GetResource()
     		// Here and below we need to switch on implementation types,
     		// not on interfaces, as some interfaces are identical
     		// (e.g. UpdateAction and CreateAction), so if we use them,
     		// updates and creates end up matching the same case branch.
     		switch action := action.(type) {
    -
     		case ListActionImpl:
    -			obj, err := tracker.List(gvr, action.GetKind(), ns)
    +			obj, err := reactor.List(action)
     			return true, obj, err
    -
     		case GetActionImpl:
    -			obj, err := tracker.Get(gvr, ns, action.GetName())
    +			obj, err := reactor.Get(action)
     			return true, obj, err
    -
     		case CreateActionImpl:
    -			objMeta, err := meta.Accessor(action.GetObject())
    -			if err != nil {
    -				return true, nil, err
    -			}
    -			if action.GetSubresource() == "" {
    -				err = tracker.Create(gvr, action.GetObject(), ns)
    -			} else {
    -				oldObj, getOldObjErr := tracker.Get(gvr, ns, objMeta.GetName())
    -				if getOldObjErr != nil {
    -					return true, nil, getOldObjErr
    -				}
    -				// Check whether the existing historical object type is the same as the current operation object type that needs to be updated, and if it is the same, perform the update operation.
    -				if reflect.TypeOf(oldObj) == reflect.TypeOf(action.GetObject()) {
    -					// TODO: Currently we're handling subresource creation as an update
    -					// on the enclosing resource. This works for some subresources but
    -					// might not be generic enough.
    -					err = tracker.Update(gvr, action.GetObject(), ns)
    -				} else {
    -					// If the historical object type is different from the current object type, need to make sure we return the object submitted,don't persist the submitted object in the tracker.
    -					return true, action.GetObject(), nil
    -				}
    -			}
    -			if err != nil {
    -				return true, nil, err
    -			}
    -			obj, err := tracker.Get(gvr, ns, objMeta.GetName())
    +			obj, err := reactor.Create(action)
     			return true, obj, err
    -
     		case UpdateActionImpl:
    -			objMeta, err := meta.Accessor(action.GetObject())
    -			if err != nil {
    -				return true, nil, err
    -			}
    -			err = tracker.Update(gvr, action.GetObject(), ns)
    -			if err != nil {
    -				return true, nil, err
    -			}
    -			obj, err := tracker.Get(gvr, ns, objMeta.GetName())
    +			obj, err := reactor.Update(action)
     			return true, obj, err
    -
     		case DeleteActionImpl:
    -			err := tracker.Delete(gvr, ns, action.GetName())
    -			if err != nil {
    -				return true, nil, err
    -			}
    -			return true, nil, nil
    -
    +			obj, err := reactor.Delete(action)
    +			return true, obj, err
     		case PatchActionImpl:
    -			obj, err := tracker.Get(gvr, ns, action.GetName())
    -			if err != nil {
    -				return true, nil, err
    +			if action.GetPatchType() == types.ApplyPatchType {
    +				obj, err := reactor.Apply(action)
    +				return true, obj, err
     			}
    +			obj, err := reactor.Patch(action)
    +			return true, obj, err
    +		default:
    +			return false, nil, fmt.Errorf("no reaction implemented for %s", action)
    +		}
    +	}
    +}
     
    -			old, err := json.Marshal(obj)
    -			if err != nil {
    -				return true, nil, err
    -			}
    +type objectTrackerReact struct {
    +	tracker ObjectTracker
    +}
     
    -			// reset the object in preparation to unmarshal, since unmarshal does not guarantee that fields
    -			// in obj that are removed by patch are cleared
    -			value := reflect.ValueOf(obj)
    -			value.Elem().Set(reflect.New(value.Type().Elem()).Elem())
    -
    -			switch action.GetPatchType() {
    -			case types.JSONPatchType:
    -				patch, err := jsonpatch.DecodePatch(action.GetPatch())
    -				if err != nil {
    -					return true, nil, err
    -				}
    -				modified, err := patch.Apply(old)
    -				if err != nil {
    -					return true, nil, err
    -				}
    -
    -				if err = json.Unmarshal(modified, obj); err != nil {
    -					return true, nil, err
    -				}
    -			case types.MergePatchType:
    -				modified, err := jsonpatch.MergePatch(old, action.GetPatch())
    -				if err != nil {
    -					return true, nil, err
    -				}
    -
    -				if err := json.Unmarshal(modified, obj); err != nil {
    -					return true, nil, err
    -				}
    -			case types.StrategicMergePatchType, types.ApplyPatchType:
    -				mergedByte, err := strategicpatch.StrategicMergePatch(old, action.GetPatch(), obj)
    -				if err != nil {
    -					return true, nil, err
    -				}
    -				if err = json.Unmarshal(mergedByte, obj); err != nil {
    -					return true, nil, err
    -				}
    -			default:
    -				return true, nil, fmt.Errorf("PatchType is not supported")
    -			}
    +func (o objectTrackerReact) List(action ListActionImpl) (runtime.Object, error) {
    +	return o.tracker.List(action.GetResource(), action.GetKind(), action.GetNamespace(), action.ListOptions)
    +}
     
    -			if err = tracker.Update(gvr, obj, ns); err != nil {
    -				return true, nil, err
    -			}
    +func (o objectTrackerReact) Get(action GetActionImpl) (runtime.Object, error) {
    +	return o.tracker.Get(action.GetResource(), action.GetNamespace(), action.GetName(), action.GetOptions)
    +}
    +
    +func (o objectTrackerReact) Create(action CreateActionImpl) (runtime.Object, error) {
    +	ns := action.GetNamespace()
    +	gvr := action.GetResource()
    +	objMeta, err := meta.Accessor(action.GetObject())
    +	if err != nil {
    +		return nil, err
    +	}
    +	if action.GetSubresource() == "" {
    +		err = o.tracker.Create(gvr, action.GetObject(), ns, action.CreateOptions)
    +		if err != nil {
    +			return nil, err
    +		}
    +	} else {
    +		oldObj, getOldObjErr := o.tracker.Get(gvr, ns, objMeta.GetName(), metav1.GetOptions{})
    +		if getOldObjErr != nil {
    +			return nil, getOldObjErr
    +		}
    +		// Check whether the existing historical object type is the same as the current operation object type that needs to be updated, and if it is the same, perform the update operation.
    +		if reflect.TypeOf(oldObj) == reflect.TypeOf(action.GetObject()) {
    +			// TODO: Currently we're handling subresource creation as an update
    +			// on the enclosing resource. This works for some subresources but
    +			// might not be generic enough.
    +			err = o.tracker.Update(gvr, action.GetObject(), ns, metav1.UpdateOptions{
    +				DryRun:          action.CreateOptions.DryRun,
    +				FieldManager:    action.CreateOptions.FieldManager,
    +				FieldValidation: action.CreateOptions.FieldValidation,
    +			})
    +		} else {
    +			// If the historical object type is different from the current object type, need to make sure we return the object submitted,don't persist the submitted object in the tracker.
    +			return action.GetObject(), nil
    +		}
    +	}
    +	if err != nil {
    +		return nil, err
    +	}
    +	obj, err := o.tracker.Get(gvr, ns, objMeta.GetName(), metav1.GetOptions{})
    +	return obj, err
    +}
    +
    +func (o objectTrackerReact) Update(action UpdateActionImpl) (runtime.Object, error) {
    +	ns := action.GetNamespace()
    +	gvr := action.GetResource()
    +	objMeta, err := meta.Accessor(action.GetObject())
    +	if err != nil {
    +		return nil, err
    +	}
     
    -			return true, obj, nil
    +	err = o.tracker.Update(gvr, action.GetObject(), ns, action.UpdateOptions)
    +	if err != nil {
    +		return nil, err
    +	}
     
    -		default:
    -			return false, nil, fmt.Errorf("no reaction implemented for %s", action)
    +	obj, err := o.tracker.Get(gvr, ns, objMeta.GetName(), metav1.GetOptions{})
    +	return obj, err
    +}
    +
    +func (o objectTrackerReact) Delete(action DeleteActionImpl) (runtime.Object, error) {
    +	err := o.tracker.Delete(action.GetResource(), action.GetNamespace(), action.GetName(), action.DeleteOptions)
    +	return nil, err
    +}
    +
    +func (o objectTrackerReact) Apply(action PatchActionImpl) (runtime.Object, error) {
    +	ns := action.GetNamespace()
    +	gvr := action.GetResource()
    +
    +	patchObj := &unstructured.Unstructured{Object: map[string]interface{}{}}
    +	if err := yaml.Unmarshal(action.GetPatch(), &patchObj.Object); err != nil {
    +		return nil, err
    +	}
    +	patchObj.SetName(action.GetName())
    +	err := o.tracker.Apply(gvr, patchObj, ns, action.PatchOptions)
    +	if err != nil {
    +		return nil, err
    +	}
    +	obj, err := o.tracker.Get(gvr, ns, action.GetName(), metav1.GetOptions{})
    +	return obj, err
    +}
    +
    +func (o objectTrackerReact) Patch(action PatchActionImpl) (runtime.Object, error) {
    +	ns := action.GetNamespace()
    +	gvr := action.GetResource()
    +
    +	obj, err := o.tracker.Get(gvr, ns, action.GetName(), metav1.GetOptions{})
    +	if err != nil {
    +		return nil, err
    +	}
    +
    +	old, err := json.Marshal(obj)
    +	if err != nil {
    +		return nil, err
    +	}
    +
    +	// reset the object in preparation to unmarshal, since unmarshal does not guarantee that fields
    +	// in obj that are removed by patch are cleared
    +	value := reflect.ValueOf(obj)
    +	value.Elem().Set(reflect.New(value.Type().Elem()).Elem())
    +
    +	switch action.GetPatchType() {
    +	case types.JSONPatchType:
    +		patch, err := jsonpatch.DecodePatch(action.GetPatch())
    +		if err != nil {
    +			return nil, err
    +		}
    +		modified, err := patch.Apply(old)
    +		if err != nil {
    +			return nil, err
    +		}
    +
    +		if err = json.Unmarshal(modified, obj); err != nil {
    +			return nil, err
     		}
    +	case types.MergePatchType:
    +		modified, err := jsonpatch.MergePatch(old, action.GetPatch())
    +		if err != nil {
    +			return nil, err
    +		}
    +
    +		if err := json.Unmarshal(modified, obj); err != nil {
    +			return nil, err
    +		}
    +	case types.StrategicMergePatchType:
    +		mergedByte, err := strategicpatch.StrategicMergePatch(old, action.GetPatch(), obj)
    +		if err != nil {
    +			return nil, err
    +		}
    +		if err = json.Unmarshal(mergedByte, obj); err != nil {
    +			return nil, err
    +		}
    +	default:
    +		return nil, fmt.Errorf("PatchType %s is not supported", action.GetPatchType())
     	}
    +
    +	if err = o.tracker.Patch(gvr, obj, ns, action.PatchOptions); err != nil {
    +		return nil, err
    +	}
    +
    +	return obj, nil
     }
     
     type tracker struct {
    @@ -231,7 +310,11 @@ func NewObjectTracker(scheme ObjectScheme, decoder runtime.Decoder) ObjectTracke
     	}
     }
     
    -func (t *tracker) List(gvr schema.GroupVersionResource, gvk schema.GroupVersionKind, ns string) (runtime.Object, error) {
    +func (t *tracker) List(gvr schema.GroupVersionResource, gvk schema.GroupVersionKind, ns string, opts ...metav1.ListOptions) (runtime.Object, error) {
    +	_, err := assertOptionalSingleArgument(opts)
    +	if err != nil {
    +		return nil, err
    +	}
     	// Heuristic for list kind: original kind + List suffix. Might
     	// not always be true but this tracker has a pretty limited
     	// understanding of the actual API model.
    @@ -270,7 +353,12 @@ func (t *tracker) List(gvr schema.GroupVersionResource, gvk schema.GroupVersionK
     	return list.DeepCopyObject(), nil
     }
     
    -func (t *tracker) Watch(gvr schema.GroupVersionResource, ns string) (watch.Interface, error) {
    +func (t *tracker) Watch(gvr schema.GroupVersionResource, ns string, opts ...metav1.ListOptions) (watch.Interface, error) {
    +	_, err := assertOptionalSingleArgument(opts)
    +	if err != nil {
    +		return nil, err
    +	}
    +
     	t.lock.Lock()
     	defer t.lock.Unlock()
     
    @@ -283,8 +371,12 @@ func (t *tracker) Watch(gvr schema.GroupVersionResource, ns string) (watch.Inter
     	return fakewatcher, nil
     }
     
    -func (t *tracker) Get(gvr schema.GroupVersionResource, ns, name string) (runtime.Object, error) {
    -	errNotFound := errors.NewNotFound(gvr.GroupResource(), name)
    +func (t *tracker) Get(gvr schema.GroupVersionResource, ns, name string, opts ...metav1.GetOptions) (runtime.Object, error) {
    +	_, err := assertOptionalSingleArgument(opts)
    +	if err != nil {
    +		return nil, err
    +	}
    +	errNotFound := apierrors.NewNotFound(gvr.GroupResource(), name)
     
     	t.lock.RLock()
     	defer t.lock.RUnlock()
    @@ -305,7 +397,7 @@ func (t *tracker) Get(gvr schema.GroupVersionResource, ns, name string) (runtime
     	obj := matchingObj.DeepCopyObject()
     	if status, ok := obj.(*metav1.Status); ok {
     		if status.Status != metav1.StatusSuccess {
    -			return nil, &errors.StatusError{ErrStatus: *status}
    +			return nil, &apierrors.StatusError{ErrStatus: *status}
     		}
     	}
     
    @@ -352,11 +444,70 @@ func (t *tracker) Add(obj runtime.Object) error {
     	return nil
     }
     
    -func (t *tracker) Create(gvr schema.GroupVersionResource, obj runtime.Object, ns string) error {
    +func (t *tracker) Create(gvr schema.GroupVersionResource, obj runtime.Object, ns string, opts ...metav1.CreateOptions) error {
    +	_, err := assertOptionalSingleArgument(opts)
    +	if err != nil {
    +		return err
    +	}
     	return t.add(gvr, obj, ns, false)
     }
     
    -func (t *tracker) Update(gvr schema.GroupVersionResource, obj runtime.Object, ns string) error {
    +func (t *tracker) Update(gvr schema.GroupVersionResource, obj runtime.Object, ns string, opts ...metav1.UpdateOptions) error {
    +	_, err := assertOptionalSingleArgument(opts)
    +	if err != nil {
    +		return err
    +	}
    +	return t.add(gvr, obj, ns, true)
    +}
    +
    +func (t *tracker) Patch(gvr schema.GroupVersionResource, patchedObject runtime.Object, ns string, opts ...metav1.PatchOptions) error {
    +	_, err := assertOptionalSingleArgument(opts)
    +	if err != nil {
    +		return err
    +	}
    +	return t.add(gvr, patchedObject, ns, true)
    +}
    +
    +func (t *tracker) Apply(gvr schema.GroupVersionResource, applyConfiguration runtime.Object, ns string, opts ...metav1.PatchOptions) error {
    +	_, err := assertOptionalSingleArgument(opts)
    +	if err != nil {
    +		return err
    +	}
    +	applyConfigurationMeta, err := meta.Accessor(applyConfiguration)
    +	if err != nil {
    +		return err
    +	}
    +
    +	obj, err := t.Get(gvr, ns, applyConfigurationMeta.GetName(), metav1.GetOptions{})
    +	if err != nil {
    +		return err
    +	}
    +
    +	old, err := json.Marshal(obj)
    +	if err != nil {
    +		return err
    +	}
    +
    +	// reset the object in preparation to unmarshal, since unmarshal does not guarantee that fields
    +	// in obj that are removed by patch are cleared
    +	value := reflect.ValueOf(obj)
    +	value.Elem().Set(reflect.New(value.Type().Elem()).Elem())
    +
    +	// For backward compatibility with behavior 1.30 and earlier, continue to handle apply
    +	// via strategic merge patch (clients may use fake.NewClientset and ManagedFieldObjectTracker
    +	// for full field manager support).
    +	patch, err := json.Marshal(applyConfiguration)
    +	if err != nil {
    +		return err
    +	}
    +	mergedByte, err := strategicpatch.StrategicMergePatch(old, patch, obj)
    +	if err != nil {
    +		return err
    +	}
    +	if err = json.Unmarshal(mergedByte, obj); err != nil {
    +		return err
    +	}
    +
     	return t.add(gvr, obj, ns, true)
     }
     
    @@ -398,7 +549,7 @@ func (t *tracker) add(gvr schema.GroupVersionResource, obj runtime.Object, ns st
     
     	if ns != newMeta.GetNamespace() {
     		msg := fmt.Sprintf("request namespace does not match object namespace, request: %q object: %q", ns, newMeta.GetNamespace())
    -		return errors.NewBadRequest(msg)
    +		return apierrors.NewBadRequest(msg)
     	}
     
     	_, ok := t.objects[gvr]
    @@ -416,12 +567,12 @@ func (t *tracker) add(gvr schema.GroupVersionResource, obj runtime.Object, ns st
     			t.objects[gvr][namespacedName] = obj
     			return nil
     		}
    -		return errors.NewAlreadyExists(gr, newMeta.GetName())
    +		return apierrors.NewAlreadyExists(gr, newMeta.GetName())
     	}
     
     	if replaceExisting {
     		// Tried to update but no matching object was found.
    -		return errors.NewNotFound(gr, newMeta.GetName())
    +		return apierrors.NewNotFound(gr, newMeta.GetName())
     	}
     
     	t.objects[gvr][namespacedName] = obj
    @@ -451,19 +602,23 @@ func (t *tracker) addList(obj runtime.Object, replaceExisting bool) error {
     	return nil
     }
     
    -func (t *tracker) Delete(gvr schema.GroupVersionResource, ns, name string) error {
    +func (t *tracker) Delete(gvr schema.GroupVersionResource, ns, name string, opts ...metav1.DeleteOptions) error {
    +	_, err := assertOptionalSingleArgument(opts)
    +	if err != nil {
    +		return err
    +	}
     	t.lock.Lock()
     	defer t.lock.Unlock()
     
     	objs, ok := t.objects[gvr]
     	if !ok {
    -		return errors.NewNotFound(gvr.GroupResource(), name)
    +		return apierrors.NewNotFound(gvr.GroupResource(), name)
     	}
     
     	namespacedName := types.NamespacedName{Namespace: ns, Name: name}
     	obj, ok := objs[namespacedName]
     	if !ok {
    -		return errors.NewNotFound(gvr.GroupResource(), name)
    +		return apierrors.NewNotFound(gvr.GroupResource(), name)
     	}
     
     	delete(objs, namespacedName)
    @@ -473,6 +628,203 @@ func (t *tracker) Delete(gvr schema.GroupVersionResource, ns, name string) error
     	return nil
     }
     
    +type managedFieldObjectTracker struct {
    +	ObjectTracker
    +	scheme          ObjectScheme
    +	objectConverter runtime.ObjectConvertor
    +	mapper          meta.RESTMapper
    +	typeConverter   managedfields.TypeConverter
    +}
    +
    +var _ ObjectTracker = &managedFieldObjectTracker{}
    +
    +// NewFieldManagedObjectTracker returns an ObjectTracker that can be used to keep track
    +// of objects and managed fields for the fake clientset. Mostly useful for unit tests.
    +func NewFieldManagedObjectTracker(scheme *runtime.Scheme, decoder runtime.Decoder, typeConverter managedfields.TypeConverter) ObjectTracker {
    +	return &managedFieldObjectTracker{
    +		ObjectTracker:   NewObjectTracker(scheme, decoder),
    +		scheme:          scheme,
    +		objectConverter: scheme,
    +		mapper:          testrestmapper.TestOnlyStaticRESTMapper(scheme),
    +		typeConverter:   typeConverter,
    +	}
    +}
    +
    +func (t *managedFieldObjectTracker) Create(gvr schema.GroupVersionResource, obj runtime.Object, ns string, vopts ...metav1.CreateOptions) error {
    +	opts, err := assertOptionalSingleArgument(vopts)
    +	if err != nil {
    +		return err
    +	}
    +	gvk, err := t.mapper.KindFor(gvr)
    +	if err != nil {
    +		return err
    +	}
    +	mgr, err := t.fieldManagerFor(gvk)
    +	if err != nil {
    +		return err
    +	}
    +
    +	objType, err := meta.TypeAccessor(obj)
    +	if err != nil {
    +		return err
    +	}
    +	// Stamp GVK
    +	apiVersion, kind := gvk.ToAPIVersionAndKind()
    +	objType.SetAPIVersion(apiVersion)
    +	objType.SetKind(kind)
    +
    +	objMeta, err := meta.Accessor(obj)
    +	if err != nil {
    +		return err
    +	}
    +	liveObject, err := t.ObjectTracker.Get(gvr, ns, objMeta.GetName(), metav1.GetOptions{})
    +	if apierrors.IsNotFound(err) {
    +		liveObject, err = t.scheme.New(gvk)
    +		if err != nil {
    +			return err
    +		}
    +		liveObject.GetObjectKind().SetGroupVersionKind(gvk)
    +	} else if err != nil {
    +		return err
    +	}
    +	objWithManagedFields, err := mgr.Update(liveObject, obj, opts.FieldManager)
    +	if err != nil {
    +		return err
    +	}
    +	return t.ObjectTracker.Create(gvr, objWithManagedFields, ns, opts)
    +}
    +
    +func (t *managedFieldObjectTracker) Update(gvr schema.GroupVersionResource, obj runtime.Object, ns string, vopts ...metav1.UpdateOptions) error {
    +	opts, err := assertOptionalSingleArgument(vopts)
    +	if err != nil {
    +		return err
    +	}
    +	gvk, err := t.mapper.KindFor(gvr)
    +	if err != nil {
    +		return err
    +	}
    +	mgr, err := t.fieldManagerFor(gvk)
    +	if err != nil {
    +		return err
    +	}
    +
    +	objMeta, err := meta.Accessor(obj)
    +	if err != nil {
    +		return err
    +	}
    +	oldObj, err := t.ObjectTracker.Get(gvr, ns, objMeta.GetName(), metav1.GetOptions{})
    +	if err != nil {
    +		return err
    +	}
    +	objWithManagedFields, err := mgr.Update(oldObj, obj, opts.FieldManager)
    +	if err != nil {
    +		return err
    +	}
    +
    +	return t.ObjectTracker.Update(gvr, objWithManagedFields, ns, opts)
    +}
    +
    +func (t *managedFieldObjectTracker) Patch(gvr schema.GroupVersionResource, patchedObject runtime.Object, ns string, vopts ...metav1.PatchOptions) error {
    +	opts, err := assertOptionalSingleArgument(vopts)
    +	if err != nil {
    +		return err
    +	}
    +	gvk, err := t.mapper.KindFor(gvr)
    +	if err != nil {
    +		return err
    +	}
    +	mgr, err := t.fieldManagerFor(gvk)
    +	if err != nil {
    +		return err
    +	}
    +
    +	objMeta, err := meta.Accessor(patchedObject)
    +	if err != nil {
    +		return err
    +	}
    +	oldObj, err := t.ObjectTracker.Get(gvr, ns, objMeta.GetName(), metav1.GetOptions{})
    +	if err != nil {
    +		return err
    +	}
    +	objWithManagedFields, err := mgr.Update(oldObj, patchedObject, opts.FieldManager)
    +	if err != nil {
    +		return err
    +	}
    +	return t.ObjectTracker.Patch(gvr, objWithManagedFields, ns, vopts...)
    +}
    +
    +func (t *managedFieldObjectTracker) Apply(gvr schema.GroupVersionResource, applyConfiguration runtime.Object, ns string, vopts ...metav1.PatchOptions) error {
    +	opts, err := assertOptionalSingleArgument(vopts)
    +	if err != nil {
    +		return err
    +	}
    +	gvk, err := t.mapper.KindFor(gvr)
    +	if err != nil {
    +		return err
    +	}
    +	applyConfigurationMeta, err := meta.Accessor(applyConfiguration)
    +	if err != nil {
    +		return err
    +	}
    +
    +	exists := true
    +	liveObject, err := t.ObjectTracker.Get(gvr, ns, applyConfigurationMeta.GetName(), metav1.GetOptions{})
    +	if apierrors.IsNotFound(err) {
    +		exists = false
    +		liveObject, err = t.scheme.New(gvk)
    +		if err != nil {
    +			return err
    +		}
    +		liveObject.GetObjectKind().SetGroupVersionKind(gvk)
    +	} else if err != nil {
    +		return err
    +	}
    +	mgr, err := t.fieldManagerFor(gvk)
    +	if err != nil {
    +		return err
    +	}
    +	force := false
    +	if opts.Force != nil {
    +		force = *opts.Force
    +	}
    +	objWithManagedFields, err := mgr.Apply(liveObject, applyConfiguration, opts.FieldManager, force)
    +	if err != nil {
    +		return err
    +	}
    +
    +	if !exists {
    +		return t.ObjectTracker.Create(gvr, objWithManagedFields, ns, metav1.CreateOptions{
    +			DryRun:          opts.DryRun,
    +			FieldManager:    opts.FieldManager,
    +			FieldValidation: opts.FieldValidation,
    +		})
    +	} else {
    +		return t.ObjectTracker.Update(gvr, objWithManagedFields, ns, metav1.UpdateOptions{
    +			DryRun:          opts.DryRun,
    +			FieldManager:    opts.FieldManager,
    +			FieldValidation: opts.FieldValidation,
    +		})
    +	}
    +}
    +
    +func (t *managedFieldObjectTracker) fieldManagerFor(gvk schema.GroupVersionKind) (*managedfields.FieldManager, error) {
    +	return managedfields.NewDefaultFieldManager(
    +		t.typeConverter,
    +		t.objectConverter,
    +		&objectDefaulter{},
    +		t.scheme,
    +		gvk,
    +		gvk.GroupVersion(),
    +		"",
    +		nil)
    +}
    +
    +// objectDefaulter implements runtime.Defaulter, but it actually
    +// does nothing.
    +type objectDefaulter struct{}
    +
    +func (d *objectDefaulter) Default(_ runtime.Object) {}
    +
     // filterByNamespace returns all objects in the collection that
     // match provided namespace. Empty namespace matches
     // non-namespaced objects.
    @@ -579,3 +931,76 @@ func resourceCovers(resource string, action Action) bool {
     
     	return false
     }
    +
    +// assertOptionalSingleArgument returns an error if there is more than one variadic argument.
    +// Otherwise, it returns the first variadic argument, or zero value if there are no arguments.
    +func assertOptionalSingleArgument[T any](arguments []T) (T, error) {
    +	var a T
    +	switch len(arguments) {
    +	case 0:
    +		return a, nil
    +	case 1:
    +		return arguments[0], nil
    +	default:
    +		return a, fmt.Errorf("expected only one option argument but got %d", len(arguments))
    +	}
    +}
    +
    +type TypeResolver interface {
    +	Type(openAPIName string) typed.ParseableType
    +}
    +
    +type TypeConverter struct {
    +	Scheme       *runtime.Scheme
    +	TypeResolver TypeResolver
    +}
    +
    +func (tc TypeConverter) ObjectToTyped(obj runtime.Object, opts ...typed.ValidationOptions) (*typed.TypedValue, error) {
    +	gvk := obj.GetObjectKind().GroupVersionKind()
    +	name, err := tc.openAPIName(gvk)
    +	if err != nil {
    +		return nil, err
    +	}
    +	t := tc.TypeResolver.Type(name)
    +	switch o := obj.(type) {
    +	case *unstructured.Unstructured:
    +		return t.FromUnstructured(o.UnstructuredContent(), opts...)
    +	default:
    +		return t.FromStructured(obj, opts...)
    +	}
    +}
    +
    +func (tc TypeConverter) TypedToObject(value *typed.TypedValue) (runtime.Object, error) {
    +	vu := value.AsValue().Unstructured()
    +	switch o := vu.(type) {
    +	case map[string]interface{}:
    +		return &unstructured.Unstructured{Object: o}, nil
    +	default:
    +		return nil, fmt.Errorf("failed to convert value to unstructured for type %T", vu)
    +	}
    +}
    +
    +func (tc TypeConverter) openAPIName(kind schema.GroupVersionKind) (string, error) {
    +	example, err := tc.Scheme.New(kind)
    +	if err != nil {
    +		return "", err
    +	}
    +	rtype := reflect.TypeOf(example).Elem()
    +	name := friendlyName(rtype.PkgPath() + "." + rtype.Name())
    +	return name, nil
    +}
    +
    +// This is a copy of openapi.friendlyName.
    +// TODO: consider introducing a shared version of this function in apimachinery.
    +func friendlyName(name string) string {
    +	nameParts := strings.Split(name, "/")
    +	// Reverse first part. e.g., io.k8s... instead of k8s.io...
    +	if len(nameParts) > 0 && strings.Contains(nameParts[0], ".") {
    +		parts := strings.Split(nameParts[0], ".")
    +		for i, j := 0, len(parts)-1; i < j; i, j = i+1, j-1 {
    +			parts[i], parts[j] = parts[j], parts[i]
    +		}
    +		nameParts[0] = strings.Join(parts, ".")
    +	}
    +	return strings.Join(nameParts, ".")
    +}
    diff --git a/vendor/k8s.io/client-go/tools/cache/controller.go b/vendor/k8s.io/client-go/tools/cache/controller.go
    index 8a1104bde808..e523a66522df 100644
    --- a/vendor/k8s.io/client-go/tools/cache/controller.go
    +++ b/vendor/k8s.io/client-go/tools/cache/controller.go
    @@ -59,6 +59,12 @@ type Config struct {
     	// FullResyncPeriod is the period at which ShouldResync is considered.
     	FullResyncPeriod time.Duration
     
    +	// MinWatchTimeout, if set, will define the minimum timeout for watch requests send
    +	// to kube-apiserver. However, values lower than 5m will not be honored to avoid
    +	// negative performance impact on controlplane.
    +	// Optional - if unset a default value of 5m will be used.
    +	MinWatchTimeout time.Duration
    +
     	// ShouldResync is periodically used by the reflector to determine
     	// whether to Resync the Queue. If ShouldResync is `nil` or
     	// returns true, it means the reflector should proceed with the
    @@ -138,6 +144,7 @@ func (c *controller) Run(stopCh <-chan struct{}) {
     		c.config.Queue,
     		ReflectorOptions{
     			ResyncPeriod:    c.config.FullResyncPeriod,
    +			MinWatchTimeout: c.config.MinWatchTimeout,
     			TypeDescription: c.config.ObjectDescription,
     			Clock:           c.clock,
     		},
    @@ -336,6 +343,68 @@ func DeletionHandlingMetaNamespaceKeyFunc(obj interface{}) (string, error) {
     	return MetaNamespaceKeyFunc(obj)
     }
     
    +// DeletionHandlingObjectToName checks for
    +// DeletedFinalStateUnknown objects before calling
    +// ObjectToName.
    +func DeletionHandlingObjectToName(obj interface{}) (ObjectName, error) {
    +	if d, ok := obj.(DeletedFinalStateUnknown); ok {
    +		return ParseObjectName(d.Key)
    +	}
    +	return ObjectToName(obj)
    +}
    +
    +// InformerOptions configure a Reflector.
    +type InformerOptions struct {
    +	// ListerWatcher implements List and Watch functions for the source of the resource
    +	// the informer will be informing about.
    +	ListerWatcher ListerWatcher
    +
    +	// ObjectType is an object of the type that informer is expected to receive.
    +	ObjectType runtime.Object
    +
    +	// Handler defines functions that should called on object mutations.
    +	Handler ResourceEventHandler
    +
    +	// ResyncPeriod is the underlying Reflector's resync period. If non-zero, the store
    +	// is re-synced with that frequency - Modify events are delivered even if objects
    +	// didn't change.
    +	// This is useful for synchronizing objects that configure external resources
    +	// (e.g. configure cloud provider functionalities).
    +	// Optional - if unset, store resyncing is not happening periodically.
    +	ResyncPeriod time.Duration
    +
    +	// MinWatchTimeout, if set, will define the minimum timeout for watch requests send
    +	// to kube-apiserver. However, values lower than 5m will not be honored to avoid
    +	// negative performance impact on controlplane.
    +	// Optional - if unset a default value of 5m will be used.
    +	MinWatchTimeout time.Duration
    +
    +	// Indexers, if set, are the indexers for the received objects to optimize
    +	// certain queries.
    +	// Optional - if unset no indexes are maintained.
    +	Indexers Indexers
    +
    +	// Transform function, if set, will be called on all objects before they will be
    +	// put into the Store and corresponding Add/Modify/Delete handlers will be invoked
    +	// for them.
    +	// Optional - if unset no additional transforming is happening.
    +	Transform TransformFunc
    +}
    +
    +// NewInformerWithOptions returns a Store and a controller for populating the store
    +// while also providing event notifications. You should only used the returned
    +// Store for Get/List operations; Add/Modify/Deletes will cause the event
    +// notifications to be faulty.
    +func NewInformerWithOptions(options InformerOptions) (Store, Controller) {
    +	var clientState Store
    +	if options.Indexers == nil {
    +		clientState = NewStore(DeletionHandlingMetaNamespaceKeyFunc)
    +	} else {
    +		clientState = NewIndexer(DeletionHandlingMetaNamespaceKeyFunc, options.Indexers)
    +	}
    +	return clientState, newInformer(clientState, options)
    +}
    +
     // NewInformer returns a Store and a controller for populating the store
     // while also providing event notifications. You should only used the returned
     // Store for Get/List operations; Add/Modify/Deletes will cause the event
    @@ -350,6 +419,8 @@ func DeletionHandlingMetaNamespaceKeyFunc(obj interface{}) (string, error) {
     //     long as possible (until the upstream source closes the watch or times out,
     //     or you stop the controller).
     //   - h is the object you want notifications sent to.
    +//
    +// Deprecated: Use NewInformerWithOptions instead.
     func NewInformer(
     	lw ListerWatcher,
     	objType runtime.Object,
    @@ -359,7 +430,13 @@ func NewInformer(
     	// This will hold the client state, as we know it.
     	clientState := NewStore(DeletionHandlingMetaNamespaceKeyFunc)
     
    -	return clientState, newInformer(lw, objType, resyncPeriod, h, clientState, nil)
    +	options := InformerOptions{
    +		ListerWatcher: lw,
    +		ObjectType:    objType,
    +		Handler:       h,
    +		ResyncPeriod:  resyncPeriod,
    +	}
    +	return clientState, newInformer(clientState, options)
     }
     
     // NewIndexerInformer returns an Indexer and a Controller for populating the index
    @@ -377,6 +454,8 @@ func NewInformer(
     //     or you stop the controller).
     //   - h is the object you want notifications sent to.
     //   - indexers is the indexer for the received object type.
    +//
    +// Deprecated: Use NewInformerWithOptions instead.
     func NewIndexerInformer(
     	lw ListerWatcher,
     	objType runtime.Object,
    @@ -387,7 +466,14 @@ func NewIndexerInformer(
     	// This will hold the client state, as we know it.
     	clientState := NewIndexer(DeletionHandlingMetaNamespaceKeyFunc, indexers)
     
    -	return clientState, newInformer(lw, objType, resyncPeriod, h, clientState, nil)
    +	options := InformerOptions{
    +		ListerWatcher: lw,
    +		ObjectType:    objType,
    +		Handler:       h,
    +		ResyncPeriod:  resyncPeriod,
    +		Indexers:      indexers,
    +	}
    +	return clientState, newInformer(clientState, options)
     }
     
     // NewTransformingInformer returns a Store and a controller for populating
    @@ -397,6 +483,8 @@ func NewIndexerInformer(
     // The given transform function will be called on all objects before they will
     // put into the Store and corresponding Add/Modify/Delete handlers will
     // be invoked for them.
    +//
    +// Deprecated: Use NewInformerWithOptions instead.
     func NewTransformingInformer(
     	lw ListerWatcher,
     	objType runtime.Object,
    @@ -407,7 +495,14 @@ func NewTransformingInformer(
     	// This will hold the client state, as we know it.
     	clientState := NewStore(DeletionHandlingMetaNamespaceKeyFunc)
     
    -	return clientState, newInformer(lw, objType, resyncPeriod, h, clientState, transformer)
    +	options := InformerOptions{
    +		ListerWatcher: lw,
    +		ObjectType:    objType,
    +		Handler:       h,
    +		ResyncPeriod:  resyncPeriod,
    +		Transform:     transformer,
    +	}
    +	return clientState, newInformer(clientState, options)
     }
     
     // NewTransformingIndexerInformer returns an Indexer and a controller for
    @@ -417,6 +512,8 @@ func NewTransformingInformer(
     // The given transform function will be called on all objects before they will
     // be put into the Index and corresponding Add/Modify/Delete handlers will
     // be invoked for them.
    +//
    +// Deprecated: Use NewInformerWithOptions instead.
     func NewTransformingIndexerInformer(
     	lw ListerWatcher,
     	objType runtime.Object,
    @@ -428,7 +525,15 @@ func NewTransformingIndexerInformer(
     	// This will hold the client state, as we know it.
     	clientState := NewIndexer(DeletionHandlingMetaNamespaceKeyFunc, indexers)
     
    -	return clientState, newInformer(lw, objType, resyncPeriod, h, clientState, transformer)
    +	options := InformerOptions{
    +		ListerWatcher: lw,
    +		ObjectType:    objType,
    +		Handler:       h,
    +		ResyncPeriod:  resyncPeriod,
    +		Indexers:      indexers,
    +		Transform:     transformer,
    +	}
    +	return clientState, newInformer(clientState, options)
     }
     
     // Multiplexes updates in the form of a list of Deltas into a Store, and informs
    @@ -471,42 +576,29 @@ func processDeltas(
     // providing event notifications.
     //
     // Parameters
    -//   - lw is list and watch functions for the source of the resource you want to
    -//     be informed of.
    -//   - objType is an object of the type that you expect to receive.
    -//   - resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate
    -//     calls, even if nothing changed). Otherwise, re-list will be delayed as
    -//     long as possible (until the upstream source closes the watch or times out,
    -//     or you stop the controller).
    -//   - h is the object you want notifications sent to.
     //   - clientState is the store you want to populate
    -func newInformer(
    -	lw ListerWatcher,
    -	objType runtime.Object,
    -	resyncPeriod time.Duration,
    -	h ResourceEventHandler,
    -	clientState Store,
    -	transformer TransformFunc,
    -) Controller {
    +//   - options contain the options to configure the controller
    +func newInformer(clientState Store, options InformerOptions) Controller {
     	// This will hold incoming changes. Note how we pass clientState in as a
     	// KeyLister, that way resync operations will result in the correct set
     	// of update/delete deltas.
     	fifo := NewDeltaFIFOWithOptions(DeltaFIFOOptions{
     		KnownObjects:          clientState,
     		EmitDeltaTypeReplaced: true,
    -		Transformer:           transformer,
    +		Transformer:           options.Transform,
     	})
     
     	cfg := &Config{
     		Queue:            fifo,
    -		ListerWatcher:    lw,
    -		ObjectType:       objType,
    -		FullResyncPeriod: resyncPeriod,
    +		ListerWatcher:    options.ListerWatcher,
    +		ObjectType:       options.ObjectType,
    +		FullResyncPeriod: options.ResyncPeriod,
    +		MinWatchTimeout:  options.MinWatchTimeout,
     		RetryOnError:     false,
     
     		Process: func(obj interface{}, isInInitialList bool) error {
     			if deltas, ok := obj.(Deltas); ok {
    -				return processDeltas(h, clientState, deltas, isInInitialList)
    +				return processDeltas(options.Handler, clientState, deltas, isInInitialList)
     			}
     			return errors.New("object given as Process argument is not Deltas")
     		},
    diff --git a/vendor/k8s.io/client-go/tools/cache/delta_fifo.go b/vendor/k8s.io/client-go/tools/cache/delta_fifo.go
    index 7160bb1ee72e..ce74dfb6f104 100644
    --- a/vendor/k8s.io/client-go/tools/cache/delta_fifo.go
    +++ b/vendor/k8s.io/client-go/tools/cache/delta_fifo.go
    @@ -139,20 +139,17 @@ type DeltaFIFO struct {
     }
     
     // TransformFunc allows for transforming an object before it will be processed.
    -// TransformFunc (similarly to ResourceEventHandler functions) should be able
    -// to correctly handle the tombstone of type cache.DeletedFinalStateUnknown.
    -//
    -// New in v1.27: In such cases, the contained object will already have gone
    -// through the transform object separately (when it was added / updated prior
    -// to the delete), so the TransformFunc can likely safely ignore such objects
    -// (i.e., just return the input object).
     //
     // The most common usage pattern is to clean-up some parts of the object to
     // reduce component memory usage if a given component doesn't care about them.
     //
    -// New in v1.27: unless the object is a DeletedFinalStateUnknown, TransformFunc
    -// sees the object before any other actor, and it is now safe to mutate the
    -// object in place instead of making a copy.
    +// New in v1.27: TransformFunc sees the object before any other actor, and it
    +// is now safe to mutate the object in place instead of making a copy.
    +//
    +// It's recommended for the TransformFunc to be idempotent.
    +// It MUST be idempotent if objects already present in the cache are passed to
    +// the Replace() to avoid re-mutating them. Default informers do not pass
    +// existing objects to Replace though.
     //
     // Note that TransformFunc is called while inserting objects into the
     // notification queue and is therefore extremely performance sensitive; please
    @@ -440,22 +437,38 @@ func isDeletionDup(a, b *Delta) *Delta {
     // queueActionLocked appends to the delta list for the object.
     // Caller must lock first.
     func (f *DeltaFIFO) queueActionLocked(actionType DeltaType, obj interface{}) error {
    +	return f.queueActionInternalLocked(actionType, actionType, obj)
    +}
    +
    +// queueActionInternalLocked appends to the delta list for the object.
    +// The actionType is emitted and must honor emitDeltaTypeReplaced.
    +// The internalActionType is only used within this function and must
    +// ignore emitDeltaTypeReplaced.
    +// Caller must lock first.
    +func (f *DeltaFIFO) queueActionInternalLocked(actionType, internalActionType DeltaType, obj interface{}) error {
     	id, err := f.KeyOf(obj)
     	if err != nil {
     		return KeyError{obj, err}
     	}
     
     	// Every object comes through this code path once, so this is a good
    -	// place to call the transform func.  If obj is a
    -	// DeletedFinalStateUnknown tombstone, then the containted inner object
    -	// will already have gone through the transformer, but we document that
    -	// this can happen. In cases involving Replace(), such an object can
    -	// come through multiple times.
    +	// place to call the transform func.
    +	//
    +	// If obj is a DeletedFinalStateUnknown tombstone or the action is a Sync,
    +	// then the object have already gone through the transformer.
    +	//
    +	// If the objects already present in the cache are passed to Replace(),
    +	// the transformer must be idempotent to avoid re-mutating them,
    +	// or coordinate with all readers from the cache to avoid data races.
    +	// Default informers do not pass existing objects to Replace.
     	if f.transformer != nil {
    -		var err error
    -		obj, err = f.transformer(obj)
    -		if err != nil {
    -			return err
    +		_, isTombstone := obj.(DeletedFinalStateUnknown)
    +		if !isTombstone && internalActionType != Sync {
    +			var err error
    +			obj, err = f.transformer(obj)
    +			if err != nil {
    +				return err
    +			}
     		}
     	}
     
    @@ -638,7 +651,7 @@ func (f *DeltaFIFO) Replace(list []interface{}, _ string) error {
     			return KeyError{item, err}
     		}
     		keys.Insert(key)
    -		if err := f.queueActionLocked(action, item); err != nil {
    +		if err := f.queueActionInternalLocked(action, Replaced, item); err != nil {
     			return fmt.Errorf("couldn't enqueue object: %v", err)
     		}
     	}
    diff --git a/vendor/k8s.io/client-go/tools/cache/index.go b/vendor/k8s.io/client-go/tools/cache/index.go
    index b78d3086b8c4..c5819fb6f86f 100644
    --- a/vendor/k8s.io/client-go/tools/cache/index.go
    +++ b/vendor/k8s.io/client-go/tools/cache/index.go
    @@ -50,8 +50,7 @@ type Indexer interface {
     	// GetIndexers return the indexers
     	GetIndexers() Indexers
     
    -	// AddIndexers adds more indexers to this store.  If you call this after you already have data
    -	// in the store, the results are undefined.
    +	// AddIndexers adds more indexers to this store. This supports adding indexes after the store already has items.
     	AddIndexers(newIndexers Indexers) error
     }
     
    diff --git a/vendor/k8s.io/client-go/tools/cache/listers.go b/vendor/k8s.io/client-go/tools/cache/listers.go
    index 420ca7b2aca6..a60f44943ea6 100644
    --- a/vendor/k8s.io/client-go/tools/cache/listers.go
    +++ b/vendor/k8s.io/client-go/tools/cache/listers.go
    @@ -30,7 +30,7 @@ import (
     // AppendFunc is used to add a matching item to whatever list the caller is using
     type AppendFunc func(interface{})
     
    -// ListAll calls appendFn with each value retrieved from store which matches the selector.
    +// ListAll lists items in the store matching the given selector, calling appendFn on each one.
     func ListAll(store Store, selector labels.Selector, appendFn AppendFunc) error {
     	selectAll := selector.Empty()
     	for _, m := range store.List() {
    @@ -51,7 +51,9 @@ func ListAll(store Store, selector labels.Selector, appendFn AppendFunc) error {
     	return nil
     }
     
    -// ListAllByNamespace used to list items belongs to namespace from Indexer.
    +// ListAllByNamespace lists items in the given namespace in the store matching the given selector,
    +// calling appendFn on each one.
    +// If a blank namespace (NamespaceAll) is specified, this delegates to ListAll().
     func ListAllByNamespace(indexer Indexer, namespace string, selector labels.Selector, appendFn AppendFunc) error {
     	if namespace == metav1.NamespaceAll {
     		return ListAll(indexer, selector, appendFn)
    diff --git a/vendor/k8s.io/client-go/tools/cache/listwatch.go b/vendor/k8s.io/client-go/tools/cache/listwatch.go
    index 10b7e6512e43..f5708ffeb10b 100644
    --- a/vendor/k8s.io/client-go/tools/cache/listwatch.go
    +++ b/vendor/k8s.io/client-go/tools/cache/listwatch.go
    @@ -36,6 +36,10 @@ type Lister interface {
     // Watcher is any object that knows how to start a watch on a resource.
     type Watcher interface {
     	// Watch should begin a watch at the specified version.
    +	//
    +	// If Watch returns an error, it should handle its own cleanup, including
    +	// but not limited to calling Stop() on the watch, if one was constructed.
    +	// This allows the caller to ignore the watch, if the error is non-nil.
     	Watch(options metav1.ListOptions) (watch.Interface, error)
     }
     
    diff --git a/vendor/k8s.io/client-go/tools/cache/reflector.go b/vendor/k8s.io/client-go/tools/cache/reflector.go
    index c1ea13de574b..030b452979f4 100644
    --- a/vendor/k8s.io/client-go/tools/cache/reflector.go
    +++ b/vendor/k8s.io/client-go/tools/cache/reflector.go
    @@ -22,7 +22,6 @@ import (
     	"fmt"
     	"io"
     	"math/rand"
    -	"os"
     	"reflect"
     	"strings"
     	"sync"
    @@ -39,18 +38,26 @@ import (
     	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
     	"k8s.io/apimachinery/pkg/util/wait"
     	"k8s.io/apimachinery/pkg/watch"
    +	clientfeatures "k8s.io/client-go/features"
     	"k8s.io/client-go/tools/pager"
     	"k8s.io/klog/v2"
     	"k8s.io/utils/clock"
     	"k8s.io/utils/pointer"
    +	"k8s.io/utils/ptr"
     	"k8s.io/utils/trace"
     )
     
     const defaultExpectedTypeName = ""
     
    +var (
    +	// We try to spread the load on apiserver by setting timeouts for
    +	// watch requests - it is random in [minWatchTimeout, 2*minWatchTimeout].
    +	defaultMinWatchTimeout = 5 * time.Minute
    +)
    +
     // Reflector watches a specified resource and causes all changes to be reflected in the given store.
     type Reflector struct {
    -	// name identifies this reflector. By default it will be a file:line if possible.
    +	// name identifies this reflector. By default, it will be a file:line if possible.
     	name string
     	// The name of the type we expect to place in the store. The name
     	// will be the stringification of expectedGVK if provided, and the
    @@ -71,6 +78,8 @@ type Reflector struct {
     	// backoff manages backoff of ListWatch
     	backoffManager wait.BackoffManager
     	resyncPeriod   time.Duration
    +	// minWatchTimeout defines the minimum timeout for watch requests.
    +	minWatchTimeout time.Duration
     	// clock allows tests to manipulate time
     	clock clock.Clock
     	// paginatedResult defines whether pagination should be forced for list calls.
    @@ -107,7 +116,17 @@ type Reflector struct {
     	// might result in an increased memory consumption of the APIServer.
     	//
     	// See https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/3157-watch-list#design-details
    -	UseWatchList bool
    +	//
    +	// TODO(#115478): Consider making reflector.UseWatchList a private field. Since we implemented "api streaming" on the etcd storage layer it should work.
    +	UseWatchList *bool
    +}
    +
    +func (r *Reflector) Name() string {
    +	return r.name
    +}
    +
    +func (r *Reflector) TypeDescription() string {
    +	return r.typeDescription
     }
     
     // ResourceVersionUpdater is an interface that allows store implementation to
    @@ -148,12 +167,6 @@ func DefaultWatchErrorHandler(r *Reflector, err error) {
     	}
     }
     
    -var (
    -	// We try to spread the load on apiserver by setting timeouts for
    -	// watch requests - it is random in [minWatchTimeout, 2*minWatchTimeout].
    -	minWatchTimeout = 5 * time.Minute
    -)
    -
     // NewNamespaceKeyedIndexerAndReflector creates an Indexer and a Reflector
     // The indexer is configured to key on namespace
     func NewNamespaceKeyedIndexerAndReflector(lw ListerWatcher, expectedType interface{}, resyncPeriod time.Duration) (indexer Indexer, reflector *Reflector) {
    @@ -191,6 +204,10 @@ type ReflectorOptions struct {
     	// (do not resync).
     	ResyncPeriod time.Duration
     
    +	// MinWatchTimeout, if non-zero, defines the minimum timeout for watch requests send to kube-apiserver.
    +	// However, values lower than 5m will not be honored to avoid negative performance impact on controlplane.
    +	MinWatchTimeout time.Duration
    +
     	// Clock allows tests to control time. If unset defaults to clock.RealClock{}
     	Clock clock.Clock
     }
    @@ -210,9 +227,14 @@ func NewReflectorWithOptions(lw ListerWatcher, expectedType interface{}, store S
     	if reflectorClock == nil {
     		reflectorClock = clock.RealClock{}
     	}
    +	minWatchTimeout := defaultMinWatchTimeout
    +	if options.MinWatchTimeout > defaultMinWatchTimeout {
    +		minWatchTimeout = options.MinWatchTimeout
    +	}
     	r := &Reflector{
     		name:            options.Name,
     		resyncPeriod:    options.ResyncPeriod,
    +		minWatchTimeout: minWatchTimeout,
     		typeDescription: options.TypeDescription,
     		listerWatcher:   lw,
     		store:           store,
    @@ -237,8 +259,10 @@ func NewReflectorWithOptions(lw ListerWatcher, expectedType interface{}, store S
     		r.expectedGVK = getExpectedGVKFromObject(expectedType)
     	}
     
    -	if s := os.Getenv("ENABLE_CLIENT_GO_WATCH_LIST_ALPHA"); len(s) > 0 {
    -		r.UseWatchList = true
    +	// don't overwrite UseWatchList if already set
    +	// because the higher layers (e.g. storage/cacher) disabled it on purpose
    +	if r.UseWatchList == nil {
    +		r.UseWatchList = ptr.To(clientfeatures.FeatureGates().Enabled(clientfeatures.WatchListClient))
     	}
     
     	return r
    @@ -325,9 +349,10 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
     	klog.V(3).Infof("Listing and watching %v from %s", r.typeDescription, r.name)
     	var err error
     	var w watch.Interface
    -	fallbackToList := !r.UseWatchList
    +	useWatchList := ptr.Deref(r.UseWatchList, false)
    +	fallbackToList := !useWatchList
     
    -	if r.UseWatchList {
    +	if useWatchList {
     		w, err = r.watchList(stopCh)
     		if w == nil && err == nil {
     			// stopCh was closed
    @@ -349,12 +374,7 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
     	}
     
     	klog.V(2).Infof("Caches populated for %v from %s", r.typeDescription, r.name)
    -
    -	resyncerrc := make(chan error, 1)
    -	cancelCh := make(chan struct{})
    -	defer close(cancelCh)
    -	go r.startResync(stopCh, cancelCh, resyncerrc)
    -	return r.watch(w, stopCh, resyncerrc)
    +	return r.watchWithResync(w, stopCh)
     }
     
     // startResync periodically calls r.store.Resync() method.
    @@ -385,6 +405,15 @@ func (r *Reflector) startResync(stopCh <-chan struct{}, cancelCh <-chan struct{}
     	}
     }
     
    +// watchWithResync runs watch with startResync in the background.
    +func (r *Reflector) watchWithResync(w watch.Interface, stopCh <-chan struct{}) error {
    +	resyncerrc := make(chan error, 1)
    +	cancelCh := make(chan struct{})
    +	defer close(cancelCh)
    +	go r.startResync(stopCh, cancelCh, resyncerrc)
    +	return r.watch(w, stopCh, resyncerrc)
    +}
    +
     // watch simply starts a watch request with the server.
     func (r *Reflector) watch(w watch.Interface, stopCh <-chan struct{}, resyncerrc chan error) error {
     	var err error
    @@ -407,7 +436,7 @@ func (r *Reflector) watch(w watch.Interface, stopCh <-chan struct{}, resyncerrc
     		start := r.clock.Now()
     
     		if w == nil {
    -			timeoutSeconds := int64(minWatchTimeout.Seconds() * (rand.Float64() + 1.0))
    +			timeoutSeconds := int64(r.minWatchTimeout.Seconds() * (rand.Float64() + 1.0))
     			options := metav1.ListOptions{
     				ResourceVersion: r.LastSyncResourceVersion(),
     				// We want to avoid situations of hanging watchers. Stop any watchers that do not
    @@ -434,13 +463,14 @@ func (r *Reflector) watch(w watch.Interface, stopCh <-chan struct{}, resyncerrc
     			}
     		}
     
    -		err = watchHandler(start, w, r.store, r.expectedType, r.expectedGVK, r.name, r.typeDescription, r.setLastSyncResourceVersion, nil, r.clock, resyncerrc, stopCh)
    +		err = handleWatch(start, w, r.store, r.expectedType, r.expectedGVK, r.name, r.typeDescription, r.setLastSyncResourceVersion,
    +			r.clock, resyncerrc, stopCh)
     		// Ensure that watch will not be reused across iterations.
     		w.Stop()
     		w = nil
     		retry.After(err)
     		if err != nil {
    -			if err != errorStopRequested {
    +			if !errors.Is(err, errorStopRequested) {
     				switch {
     				case isExpiredError(err):
     					// Don't set LastSyncResourceVersionUnavailable - LIST call with ResourceVersion=RV already
    @@ -634,7 +664,7 @@ func (r *Reflector) watchList(stopCh <-chan struct{}) (watch.Interface, error) {
     		// TODO(#115478): large "list", slow clients, slow network, p&f
     		//  might slow down streaming and eventually fail.
     		//  maybe in such a case we should retry with an increased timeout?
    -		timeoutSeconds := int64(minWatchTimeout.Seconds() * (rand.Float64() + 1.0))
    +		timeoutSeconds := int64(r.minWatchTimeout.Seconds() * (rand.Float64() + 1.0))
     		options := metav1.ListOptions{
     			ResourceVersion:      lastKnownRV,
     			AllowWatchBookmarks:  true,
    @@ -651,14 +681,12 @@ func (r *Reflector) watchList(stopCh <-chan struct{}) (watch.Interface, error) {
     			}
     			return nil, err
     		}
    -		bookmarkReceived := pointer.Bool(false)
    -		err = watchHandler(start, w, temporaryStore, r.expectedType, r.expectedGVK, r.name, r.typeDescription,
    +		watchListBookmarkReceived, err := handleListWatch(start, w, temporaryStore, r.expectedType, r.expectedGVK, r.name, r.typeDescription,
     			func(rv string) { resourceVersion = rv },
    -			bookmarkReceived,
     			r.clock, make(chan error), stopCh)
     		if err != nil {
     			w.Stop() // stop and retry with clean state
    -			if err == errorStopRequested {
    +			if errors.Is(err, errorStopRequested) {
     				return nil, nil
     			}
     			if isErrorRetriableWithSideEffectsFn(err) {
    @@ -666,7 +694,7 @@ func (r *Reflector) watchList(stopCh <-chan struct{}) (watch.Interface, error) {
     			}
     			return nil, err
     		}
    -		if *bookmarkReceived {
    +		if watchListBookmarkReceived {
     			break
     		}
     	}
    @@ -678,10 +706,10 @@ func (r *Reflector) watchList(stopCh <-chan struct{}) (watch.Interface, error) {
     	// we utilize the temporaryStore to ensure independence from the current store implementation.
     	// as of today, the store is implemented as a queue and will be drained by the higher-level
     	// component as soon as it finishes replacing the content.
    -	checkWatchListConsistencyIfRequested(stopCh, r.name, resourceVersion, r.listerWatcher, temporaryStore)
    +	checkWatchListDataConsistencyIfRequested(wait.ContextForChannel(stopCh), r.name, resourceVersion, wrapListFuncWithContext(r.listerWatcher.List), temporaryStore.List)
     
    -	if err = r.store.Replace(temporaryStore.List(), resourceVersion); err != nil {
    -		return nil, fmt.Errorf("unable to sync watch-list result: %v", err)
    +	if err := r.store.Replace(temporaryStore.List(), resourceVersion); err != nil {
    +		return nil, fmt.Errorf("unable to sync watch-list result: %w", err)
     	}
     	initTrace.Step("SyncWith done")
     	r.setLastSyncResourceVersion(resourceVersion)
    @@ -698,8 +726,12 @@ func (r *Reflector) syncWith(items []runtime.Object, resourceVersion string) err
     	return r.store.Replace(found, resourceVersion)
     }
     
    -// watchHandler watches w and sets setLastSyncResourceVersion
    -func watchHandler(start time.Time,
    +// handleListWatch consumes events from w, updates the Store, and records the
    +// last seen ResourceVersion, to allow continuing from that ResourceVersion on
    +// retry. If successful, the watcher will be left open after receiving the
    +// initial set of objects, to allow watching for future events.
    +func handleListWatch(
    +	start time.Time,
     	w watch.Interface,
     	store Store,
     	expectedType reflect.Type,
    @@ -707,31 +739,77 @@ func watchHandler(start time.Time,
     	name string,
     	expectedTypeName string,
     	setLastSyncResourceVersion func(string),
    -	exitOnInitialEventsEndBookmark *bool,
     	clock clock.Clock,
    -	errc chan error,
    +	errCh chan error,
    +	stopCh <-chan struct{},
    +) (bool, error) {
    +	exitOnWatchListBookmarkReceived := true
    +	return handleAnyWatch(start, w, store, expectedType, expectedGVK, name, expectedTypeName,
    +		setLastSyncResourceVersion, exitOnWatchListBookmarkReceived, clock, errCh, stopCh)
    +}
    +
    +// handleListWatch consumes events from w, updates the Store, and records the
    +// last seen ResourceVersion, to allow continuing from that ResourceVersion on
    +// retry. The watcher will always be stopped on exit.
    +func handleWatch(
    +	start time.Time,
    +	w watch.Interface,
    +	store Store,
    +	expectedType reflect.Type,
    +	expectedGVK *schema.GroupVersionKind,
    +	name string,
    +	expectedTypeName string,
    +	setLastSyncResourceVersion func(string),
    +	clock clock.Clock,
    +	errCh chan error,
     	stopCh <-chan struct{},
     ) error {
    +	exitOnWatchListBookmarkReceived := false
    +	_, err := handleAnyWatch(start, w, store, expectedType, expectedGVK, name, expectedTypeName,
    +		setLastSyncResourceVersion, exitOnWatchListBookmarkReceived, clock, errCh, stopCh)
    +	return err
    +}
    +
    +// handleAnyWatch consumes events from w, updates the Store, and records the last
    +// seen ResourceVersion, to allow continuing from that ResourceVersion on retry.
    +// If exitOnWatchListBookmarkReceived is true, the watch events will be consumed
    +// until a bookmark event is received with the WatchList annotation present.
    +// Returns true (watchListBookmarkReceived) if the WatchList bookmark was
    +// received, even if exitOnWatchListBookmarkReceived is false.
    +// The watcher will always be stopped, unless exitOnWatchListBookmarkReceived is
    +// true and watchListBookmarkReceived is true. This allows the same watch stream
    +// to be re-used by the caller to continue watching for new events.
    +func handleAnyWatch(start time.Time,
    +	w watch.Interface,
    +	store Store,
    +	expectedType reflect.Type,
    +	expectedGVK *schema.GroupVersionKind,
    +	name string,
    +	expectedTypeName string,
    +	setLastSyncResourceVersion func(string),
    +	exitOnWatchListBookmarkReceived bool,
    +	clock clock.Clock,
    +	errCh chan error,
    +	stopCh <-chan struct{},
    +) (bool, error) {
    +	watchListBookmarkReceived := false
     	eventCount := 0
    -	if exitOnInitialEventsEndBookmark != nil {
    -		// set it to false just in case somebody
    -		// made it positive
    -		*exitOnInitialEventsEndBookmark = false
    -	}
    +	initialEventsEndBookmarkWarningTicker := newInitialEventsEndBookmarkTicker(name, clock, start, exitOnWatchListBookmarkReceived)
    +	defer initialEventsEndBookmarkWarningTicker.Stop()
     
     loop:
     	for {
     		select {
     		case <-stopCh:
    -			return errorStopRequested
    -		case err := <-errc:
    -			return err
    +			return watchListBookmarkReceived, errorStopRequested
    +		case err := <-errCh:
    +			return watchListBookmarkReceived, err
     		case event, ok := <-w.ResultChan():
     			if !ok {
     				break loop
     			}
     			if event.Type == watch.Error {
    -				return apierrors.FromObject(event.Object)
    +				return watchListBookmarkReceived, apierrors.FromObject(event.Object)
     			}
     			if expectedType != nil {
     				if e, a := expectedType, reflect.TypeOf(event.Object); e != a {
    @@ -772,10 +850,8 @@ loop:
     				}
     			case watch.Bookmark:
     				// A `Bookmark` means watch has synced here, just update the resourceVersion
    -				if meta.GetAnnotations()["k8s.io/initial-events-end"] == "true" {
    -					if exitOnInitialEventsEndBookmark != nil {
    -						*exitOnInitialEventsEndBookmark = true
    -					}
    +				if meta.GetAnnotations()[metav1.InitialEventsAnnotationKey] == "true" {
    +					watchListBookmarkReceived = true
     				}
     			default:
     				utilruntime.HandleError(fmt.Errorf("%s: unable to understand watch event %#v", name, event))
    @@ -785,20 +861,23 @@ loop:
     				rvu.UpdateResourceVersion(resourceVersion)
     			}
     			eventCount++
    -			if exitOnInitialEventsEndBookmark != nil && *exitOnInitialEventsEndBookmark {
    +			if exitOnWatchListBookmarkReceived && watchListBookmarkReceived {
     				watchDuration := clock.Since(start)
     				klog.V(4).Infof("exiting %v Watch because received the bookmark that marks the end of initial events stream, total %v items received in %v", name, eventCount, watchDuration)
    -				return nil
    +				return watchListBookmarkReceived, nil
     			}
    +			initialEventsEndBookmarkWarningTicker.observeLastEventTimeStamp(clock.Now())
    +		case <-initialEventsEndBookmarkWarningTicker.C():
    +			initialEventsEndBookmarkWarningTicker.warnIfExpired()
     		}
     	}
     
     	watchDuration := clock.Since(start)
     	if watchDuration < 1*time.Second && eventCount == 0 {
    -		return fmt.Errorf("very short watch: %s: Unexpected watch close - watch lasted less than a second and no items received", name)
    +		return watchListBookmarkReceived, fmt.Errorf("very short watch: %s: Unexpected watch close - watch lasted less than a second and no items received", name)
     	}
     	klog.V(4).Infof("%s: Watch close - %v total %v items received", name, expectedTypeName, eventCount)
    -	return nil
    +	return watchListBookmarkReceived, nil
     }
     
     // LastSyncResourceVersion is the resource version observed when last sync with the underlying store
    @@ -910,3 +989,95 @@ func isWatchErrorRetriable(err error) bool {
     	}
     	return false
     }
    +
    +// wrapListFuncWithContext simply wraps ListFunction into another function that accepts a context and ignores it.
    +func wrapListFuncWithContext(listFn ListFunc) func(ctx context.Context, options metav1.ListOptions) (runtime.Object, error) {
    +	return func(_ context.Context, options metav1.ListOptions) (runtime.Object, error) {
    +		return listFn(options)
    +	}
    +}
    +
    +// initialEventsEndBookmarkTicker a ticker that produces a warning if the bookmark event
    +// which marks the end of the watch stream, has not been received within the defined tick interval.
    +//
    +// Note:
    +// The methods exposed by this type are not thread-safe.
    +type initialEventsEndBookmarkTicker struct {
    +	clock.Ticker
    +	clock clock.Clock
    +	name  string
    +
    +	watchStart           time.Time
    +	tickInterval         time.Duration
    +	lastEventObserveTime time.Time
    +}
    +
    +// newInitialEventsEndBookmarkTicker returns a noop ticker if exitOnInitialEventsEndBookmarkRequested is false.
    +// Otherwise, it returns a ticker that exposes a method producing a warning if the bookmark event,
    +// which marks the end of the watch stream, has not been received within the defined tick interval.
    +//
    +// Note that the caller controls whether to call t.C() and t.Stop().
    +//
    +// In practice, the reflector exits the watchHandler as soon as the bookmark event is received and calls the t.C() method.
    +func newInitialEventsEndBookmarkTicker(name string, c clock.Clock, watchStart time.Time, exitOnWatchListBookmarkReceived bool) *initialEventsEndBookmarkTicker {
    +	return newInitialEventsEndBookmarkTickerInternal(name, c, watchStart, 10*time.Second, exitOnWatchListBookmarkReceived)
    +}
    +
    +func newInitialEventsEndBookmarkTickerInternal(name string, c clock.Clock, watchStart time.Time, tickInterval time.Duration, exitOnWatchListBookmarkReceived bool) *initialEventsEndBookmarkTicker {
    +	clockWithTicker, ok := c.(clock.WithTicker)
    +	if !ok || !exitOnWatchListBookmarkReceived {
    +		if exitOnWatchListBookmarkReceived {
    +			klog.Warningf("clock does not support WithTicker interface but exitOnInitialEventsEndBookmark was requested")
    +		}
    +		return &initialEventsEndBookmarkTicker{
    +			Ticker: &noopTicker{},
    +		}
    +	}
    +
    +	return &initialEventsEndBookmarkTicker{
    +		Ticker:       clockWithTicker.NewTicker(tickInterval),
    +		clock:        c,
    +		name:         name,
    +		watchStart:   watchStart,
    +		tickInterval: tickInterval,
    +	}
    +}
    +
    +func (t *initialEventsEndBookmarkTicker) observeLastEventTimeStamp(lastEventObserveTime time.Time) {
    +	t.lastEventObserveTime = lastEventObserveTime
    +}
    +
    +func (t *initialEventsEndBookmarkTicker) warnIfExpired() {
    +	if err := t.produceWarningIfExpired(); err != nil {
    +		klog.Warning(err)
    +	}
    +}
    +
    +// produceWarningIfExpired returns an error that represents a warning when
    +// the time elapsed since the last received event exceeds the tickInterval.
    +//
    +// Note that this method should be called when t.C() yields a value.
    +func (t *initialEventsEndBookmarkTicker) produceWarningIfExpired() error {
    +	if _, ok := t.Ticker.(*noopTicker); ok {
    +		return nil /*noop ticker*/
    +	}
    +	if t.lastEventObserveTime.IsZero() {
    +		return fmt.Errorf("%s: awaiting required bookmark event for initial events stream, no events received for %v", t.name, t.clock.Since(t.watchStart))
    +	}
    +	elapsedTime := t.clock.Now().Sub(t.lastEventObserveTime)
    +	hasBookmarkTimerExpired := elapsedTime >= t.tickInterval
    +
    +	if !hasBookmarkTimerExpired {
    +		return nil
    +	}
    +	return fmt.Errorf("%s: hasn't received required bookmark event marking the end of initial events stream, received last event %v ago", t.name, elapsedTime)
    +}
    +
    +var _ clock.Ticker = &noopTicker{}
    +
    +// TODO(#115478): move to k8s/utils repo
    +type noopTicker struct{}
    +
    +func (t *noopTicker) C() <-chan time.Time { return nil }
    +
    +func (t *noopTicker) Stop() {}
    diff --git a/vendor/k8s.io/client-go/tools/cache/reflector_data_consistency_detector.go b/vendor/k8s.io/client-go/tools/cache/reflector_data_consistency_detector.go
    index aa3027d714e9..a7e0d9c43685 100644
    --- a/vendor/k8s.io/client-go/tools/cache/reflector_data_consistency_detector.go
    +++ b/vendor/k8s.io/client-go/tools/cache/reflector_data_consistency_detector.go
    @@ -1,5 +1,5 @@
     /*
    -Copyright 2023 The Kubernetes Authors.
    +Copyright 2024 The Kubernetes Authors.
     
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
    @@ -18,102 +18,26 @@ package cache
     
     import (
     	"context"
    -	"os"
    -	"sort"
    -	"strconv"
    -	"time"
     
    -	"github.com/google/go-cmp/cmp"
    -
    -	"k8s.io/apimachinery/pkg/api/meta"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	"k8s.io/apimachinery/pkg/runtime"
    -	"k8s.io/apimachinery/pkg/util/wait"
    -	"k8s.io/klog/v2"
    +	"k8s.io/client-go/util/consistencydetector"
     )
     
    -var dataConsistencyDetectionEnabled = false
    -
    -func init() {
    -	dataConsistencyDetectionEnabled, _ = strconv.ParseBool(os.Getenv("KUBE_WATCHLIST_INCONSISTENCY_DETECTOR"))
    -}
    -
    -// checkWatchListConsistencyIfRequested performs a data consistency check only when
    +// checkWatchListDataConsistencyIfRequested performs a data consistency check only when
     // the KUBE_WATCHLIST_INCONSISTENCY_DETECTOR environment variable was set during a binary startup.
     //
     // The consistency check is meant to be enforced only in the CI, not in production.
     // The check ensures that data retrieved by the watch-list api call
    -// is exactly the same as data received by the standard list api call.
    +// is exactly the same as data received by the standard list api call against etcd.
     //
     // Note that this function will panic when data inconsistency is detected.
     // This is intentional because we want to catch it in the CI.
    -func checkWatchListConsistencyIfRequested(stopCh <-chan struct{}, identity string, lastSyncedResourceVersion string, listerWatcher Lister, store Store) {
    -	if !dataConsistencyDetectionEnabled {
    -		return
    -	}
    -	checkWatchListConsistency(stopCh, identity, lastSyncedResourceVersion, listerWatcher, store)
    -}
    -
    -// checkWatchListConsistency exists solely for testing purposes.
    -// we cannot use checkWatchListConsistencyIfRequested because
    -// it is guarded by an environmental variable.
    -// we cannot manipulate the environmental variable because
    -// it will affect other tests in this package.
    -func checkWatchListConsistency(stopCh <-chan struct{}, identity string, lastSyncedResourceVersion string, listerWatcher Lister, store Store) {
    -	klog.Warningf("%s: data consistency check for the watch-list feature is enabled, this will result in an additional call to the API server.", identity)
    -	opts := metav1.ListOptions{
    -		ResourceVersion:      lastSyncedResourceVersion,
    -		ResourceVersionMatch: metav1.ResourceVersionMatchExact,
    -	}
    -	var list runtime.Object
    -	err := wait.PollUntilContextCancel(wait.ContextForChannel(stopCh), time.Second, true, func(_ context.Context) (done bool, err error) {
    -		list, err = listerWatcher.List(opts)
    -		if err != nil {
    -			// the consistency check will only be enabled in the CI
    -			// and LIST calls in general will be retired by the client-go library
    -			// if we fail simply log and retry
    -			klog.Errorf("failed to list data from the server, retrying until stopCh is closed, err: %v", err)
    -			return false, nil
    -		}
    -		return true, nil
    -	})
    -	if err != nil {
    -		klog.Errorf("failed to list data from the server, the watch-list consistency check won't be performed, stopCh was closed, err: %v", err)
    +func checkWatchListDataConsistencyIfRequested[T runtime.Object, U any](ctx context.Context, identity string, lastSyncedResourceVersion string, listFn consistencydetector.ListFunc[T], retrieveItemsFn consistencydetector.RetrieveItemsFunc[U]) {
    +	if !consistencydetector.IsDataConsistencyDetectionForWatchListEnabled() {
     		return
     	}
    -
    -	rawListItems, err := meta.ExtractListWithAlloc(list)
    -	if err != nil {
    -		panic(err) // this should never happen
    -	}
    -
    -	listItems := toMetaObjectSliceOrDie(rawListItems)
    -	storeItems := toMetaObjectSliceOrDie(store.List())
    -
    -	sort.Sort(byUID(listItems))
    -	sort.Sort(byUID(storeItems))
    -
    -	if !cmp.Equal(listItems, storeItems) {
    -		klog.Infof("%s: data received by the new watch-list api call is different than received by the standard list api call, diff: %v", identity, cmp.Diff(listItems, storeItems))
    -		msg := "data inconsistency detected for the watch-list feature, panicking!"
    -		panic(msg)
    -	}
    -}
    -
    -type byUID []metav1.Object
    -
    -func (a byUID) Len() int           { return len(a) }
    -func (a byUID) Less(i, j int) bool { return a[i].GetUID() < a[j].GetUID() }
    -func (a byUID) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
    -
    -func toMetaObjectSliceOrDie[T any](s []T) []metav1.Object {
    -	result := make([]metav1.Object, len(s))
    -	for i, v := range s {
    -		m, err := meta.Accessor(v)
    -		if err != nil {
    -			panic(err)
    -		}
    -		result[i] = m
    -	}
    -	return result
    +	// for informers we pass an empty ListOptions because
    +	// listFn might be wrapped for filtering during informer construction.
    +	consistencydetector.CheckDataConsistency(ctx, identity, lastSyncedResourceVersion, listFn, metav1.ListOptions{}, retrieveItemsFn)
     }
    diff --git a/vendor/k8s.io/client-go/tools/cache/shared_informer.go b/vendor/k8s.io/client-go/tools/cache/shared_informer.go
    index b3f37431d5c9..c805030bd731 100644
    --- a/vendor/k8s.io/client-go/tools/cache/shared_informer.go
    +++ b/vendor/k8s.io/client-go/tools/cache/shared_informer.go
    @@ -31,6 +31,8 @@ import (
     	"k8s.io/utils/clock"
     
     	"k8s.io/klog/v2"
    +
    +	clientgofeaturegate "k8s.io/client-go/features"
     )
     
     // SharedInformer provides eventually consistent linkage of its
    @@ -409,6 +411,10 @@ func (v *dummyController) HasSynced() bool {
     }
     
     func (v *dummyController) LastSyncResourceVersion() string {
    +	if clientgofeaturegate.FeatureGates().Enabled(clientgofeaturegate.InformerResourceVersion) {
    +		return v.informer.LastSyncResourceVersion()
    +	}
    +
     	return ""
     }
     
    @@ -540,8 +546,8 @@ func (s *sharedIndexInformer) AddIndexers(indexers Indexers) error {
     	s.startedLock.Lock()
     	defer s.startedLock.Unlock()
     
    -	if s.started {
    -		return fmt.Errorf("informer has already started")
    +	if s.stopped {
    +		return fmt.Errorf("indexer was not added because it has stopped already")
     	}
     
     	return s.indexer.AddIndexers(indexers)
    diff --git a/vendor/k8s.io/client-go/tools/cache/thread_safe_store.go b/vendor/k8s.io/client-go/tools/cache/thread_safe_store.go
    index 145e93ee5353..7a4df0e1bae2 100644
    --- a/vendor/k8s.io/client-go/tools/cache/thread_safe_store.go
    +++ b/vendor/k8s.io/client-go/tools/cache/thread_safe_store.go
    @@ -52,8 +52,7 @@ type ThreadSafeStore interface {
     	ByIndex(indexName, indexedValue string) ([]interface{}, error)
     	GetIndexers() Indexers
     
    -	// AddIndexers adds more indexers to this store.  If you call this after you already have data
    -	// in the store, the results are undefined.
    +	// AddIndexers adds more indexers to this store. This supports adding indexes after the store already has items.
     	AddIndexers(newIndexers Indexers) error
     	// Resync is a no-op and is deprecated
     	Resync() error
    @@ -135,50 +134,66 @@ func (i *storeIndex) addIndexers(newIndexers Indexers) error {
     	return nil
     }
     
    -// updateIndices modifies the objects location in the managed indexes:
    +// updateSingleIndex modifies the objects location in the named index:
     // - for create you must provide only the newObj
     // - for update you must provide both the oldObj and the newObj
     // - for delete you must provide only the oldObj
    -// updateIndices must be called from a function that already has a lock on the cache
    -func (i *storeIndex) updateIndices(oldObj interface{}, newObj interface{}, key string) {
    +// updateSingleIndex must be called from a function that already has a lock on the cache
    +func (i *storeIndex) updateSingleIndex(name string, oldObj interface{}, newObj interface{}, key string) {
     	var oldIndexValues, indexValues []string
    -	var err error
    -	for name, indexFunc := range i.indexers {
    -		if oldObj != nil {
    -			oldIndexValues, err = indexFunc(oldObj)
    -		} else {
    -			oldIndexValues = oldIndexValues[:0]
    -		}
    +	indexFunc, ok := i.indexers[name]
    +	if !ok {
    +		// Should never happen. Caller is responsible for ensuring this exists, and should call with lock
    +		// held to avoid any races.
    +		panic(fmt.Errorf("indexer %q does not exist", name))
    +	}
    +	if oldObj != nil {
    +		var err error
    +		oldIndexValues, err = indexFunc(oldObj)
     		if err != nil {
     			panic(fmt.Errorf("unable to calculate an index entry for key %q on index %q: %v", key, name, err))
     		}
    +	} else {
    +		oldIndexValues = oldIndexValues[:0]
    +	}
     
    -		if newObj != nil {
    -			indexValues, err = indexFunc(newObj)
    -		} else {
    -			indexValues = indexValues[:0]
    -		}
    +	if newObj != nil {
    +		var err error
    +		indexValues, err = indexFunc(newObj)
     		if err != nil {
     			panic(fmt.Errorf("unable to calculate an index entry for key %q on index %q: %v", key, name, err))
     		}
    +	} else {
    +		indexValues = indexValues[:0]
    +	}
     
    -		index := i.indices[name]
    -		if index == nil {
    -			index = Index{}
    -			i.indices[name] = index
    -		}
    +	index := i.indices[name]
    +	if index == nil {
    +		index = Index{}
    +		i.indices[name] = index
    +	}
     
    -		if len(indexValues) == 1 && len(oldIndexValues) == 1 && indexValues[0] == oldIndexValues[0] {
    -			// We optimize for the most common case where indexFunc returns a single value which has not been changed
    -			continue
    -		}
    +	if len(indexValues) == 1 && len(oldIndexValues) == 1 && indexValues[0] == oldIndexValues[0] {
    +		// We optimize for the most common case where indexFunc returns a single value which has not been changed
    +		return
    +	}
     
    -		for _, value := range oldIndexValues {
    -			i.deleteKeyFromIndex(key, value, index)
    -		}
    -		for _, value := range indexValues {
    -			i.addKeyToIndex(key, value, index)
    -		}
    +	for _, value := range oldIndexValues {
    +		i.deleteKeyFromIndex(key, value, index)
    +	}
    +	for _, value := range indexValues {
    +		i.addKeyToIndex(key, value, index)
    +	}
    +}
    +
    +// updateIndices modifies the objects location in the managed indexes:
    +// - for create you must provide only the newObj
    +// - for update you must provide both the oldObj and the newObj
    +// - for delete you must provide only the oldObj
    +// updateIndices must be called from a function that already has a lock on the cache
    +func (i *storeIndex) updateIndices(oldObj interface{}, newObj interface{}, key string) {
    +	for name := range i.indexers {
    +		i.updateSingleIndex(name, oldObj, newObj, key)
     	}
     }
     
    @@ -339,11 +354,18 @@ func (c *threadSafeMap) AddIndexers(newIndexers Indexers) error {
     	c.lock.Lock()
     	defer c.lock.Unlock()
     
    -	if len(c.items) > 0 {
    -		return fmt.Errorf("cannot add indexers to running index")
    +	if err := c.index.addIndexers(newIndexers); err != nil {
    +		return err
    +	}
    +
    +	// If there are already items, index them
    +	for key, item := range c.items {
    +		for name := range newIndexers {
    +			c.index.updateSingleIndex(name, nil, item, key)
    +		}
     	}
     
    -	return c.index.addIndexers(newIndexers)
    +	return nil
     }
     
     func (c *threadSafeMap) Resync() error {
    diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/doc.go b/vendor/k8s.io/client-go/tools/clientcmd/api/doc.go
    index 5871575a6693..fd913a308321 100644
    --- a/vendor/k8s.io/client-go/tools/clientcmd/api/doc.go
    +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/doc.go
    @@ -16,4 +16,4 @@ limitations under the License.
     
     // +k8s:deepcopy-gen=package
     
    -package api
    +package api // import "k8s.io/client-go/tools/clientcmd/api"
    diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go b/vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go
    index dd5f91806730..261dcacb5bf3 100644
    --- a/vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go
    +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go
    @@ -21,7 +21,6 @@ import (
     	"errors"
     	"fmt"
     	"os"
    -	"path"
     	"path/filepath"
     	"reflect"
     	"strings"
    @@ -115,7 +114,7 @@ func ShortenConfig(config *Config) {
     // FlattenConfig changes the config object into a self-contained config (useful for making secrets)
     func FlattenConfig(config *Config) error {
     	for key, authInfo := range config.AuthInfos {
    -		baseDir, err := MakeAbs(path.Dir(authInfo.LocationOfOrigin), "")
    +		baseDir, err := MakeAbs(filepath.Dir(authInfo.LocationOfOrigin), "")
     		if err != nil {
     			return err
     		}
    @@ -130,7 +129,7 @@ func FlattenConfig(config *Config) error {
     		config.AuthInfos[key] = authInfo
     	}
     	for key, cluster := range config.Clusters {
    -		baseDir, err := MakeAbs(path.Dir(cluster.LocationOfOrigin), "")
    +		baseDir, err := MakeAbs(filepath.Dir(cluster.LocationOfOrigin), "")
     		if err != nil {
     			return err
     		}
    diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go b/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go
    index 35bb5dde19c2..c575652b1a52 100644
    --- a/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go
    +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go
    @@ -50,7 +50,7 @@ func init() {
     	Scheme = runtime.NewScheme()
     	utilruntime.Must(api.AddToScheme(Scheme))
     	utilruntime.Must(v1.AddToScheme(Scheme))
    -	yamlSerializer := json.NewYAMLSerializer(json.DefaultMetaFactory, Scheme, Scheme)
    +	yamlSerializer := json.NewSerializerWithOptions(json.DefaultMetaFactory, Scheme, Scheme, json.SerializerOptions{Yaml: true})
     	Codec = versioning.NewDefaultingCodecForScheme(
     		Scheme,
     		yamlSerializer,
    diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/v1/doc.go b/vendor/k8s.io/client-go/tools/clientcmd/api/v1/doc.go
    index 3ccdebc1c37b..9e483e9d75c1 100644
    --- a/vendor/k8s.io/client-go/tools/clientcmd/api/v1/doc.go
    +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/v1/doc.go
    @@ -18,4 +18,4 @@ limitations under the License.
     // +k8s:deepcopy-gen=package
     // +k8s:defaulter-gen=Kind
     
    -package v1
    +package v1 // import "k8s.io/client-go/tools/clientcmd/api/v1"
    diff --git a/vendor/k8s.io/client-go/tools/clientcmd/client_config.go b/vendor/k8s.io/client-go/tools/clientcmd/client_config.go
    index ae0f01f32571..cd0a8649b187 100644
    --- a/vendor/k8s.io/client-go/tools/clientcmd/client_config.go
    +++ b/vendor/k8s.io/client-go/tools/clientcmd/client_config.go
    @@ -29,8 +29,6 @@ import (
     	clientauth "k8s.io/client-go/tools/auth"
     	clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
     	"k8s.io/klog/v2"
    -
    -	"github.com/imdario/mergo"
     )
     
     const (
    @@ -72,6 +70,13 @@ type ClientConfig interface {
     	ConfigAccess() ConfigAccess
     }
     
    +// OverridingClientConfig is used to enable overrriding the raw KubeConfig
    +type OverridingClientConfig interface {
    +	ClientConfig
    +	// MergedRawConfig return the RawConfig merged with all overrides.
    +	MergedRawConfig() (clientcmdapi.Config, error)
    +}
    +
     type PersistAuthProviderConfigForUser func(user string) restclient.AuthProviderConfigPersister
     
     type promptedCredentials struct {
    @@ -91,22 +96,22 @@ type DirectClientConfig struct {
     }
     
     // NewDefaultClientConfig creates a DirectClientConfig using the config.CurrentContext as the context name
    -func NewDefaultClientConfig(config clientcmdapi.Config, overrides *ConfigOverrides) ClientConfig {
    +func NewDefaultClientConfig(config clientcmdapi.Config, overrides *ConfigOverrides) OverridingClientConfig {
     	return &DirectClientConfig{config, config.CurrentContext, overrides, nil, NewDefaultClientConfigLoadingRules(), promptedCredentials{}}
     }
     
     // NewNonInteractiveClientConfig creates a DirectClientConfig using the passed context name and does not have a fallback reader for auth information
    -func NewNonInteractiveClientConfig(config clientcmdapi.Config, contextName string, overrides *ConfigOverrides, configAccess ConfigAccess) ClientConfig {
    +func NewNonInteractiveClientConfig(config clientcmdapi.Config, contextName string, overrides *ConfigOverrides, configAccess ConfigAccess) OverridingClientConfig {
     	return &DirectClientConfig{config, contextName, overrides, nil, configAccess, promptedCredentials{}}
     }
     
     // NewInteractiveClientConfig creates a DirectClientConfig using the passed context name and a reader in case auth information is not provided via files or flags
    -func NewInteractiveClientConfig(config clientcmdapi.Config, contextName string, overrides *ConfigOverrides, fallbackReader io.Reader, configAccess ConfigAccess) ClientConfig {
    +func NewInteractiveClientConfig(config clientcmdapi.Config, contextName string, overrides *ConfigOverrides, fallbackReader io.Reader, configAccess ConfigAccess) OverridingClientConfig {
     	return &DirectClientConfig{config, contextName, overrides, fallbackReader, configAccess, promptedCredentials{}}
     }
     
     // NewClientConfigFromBytes takes your kubeconfig and gives you back a ClientConfig
    -func NewClientConfigFromBytes(configBytes []byte) (ClientConfig, error) {
    +func NewClientConfigFromBytes(configBytes []byte) (OverridingClientConfig, error) {
     	config, err := Load(configBytes)
     	if err != nil {
     		return nil, err
    @@ -129,6 +134,40 @@ func (config *DirectClientConfig) RawConfig() (clientcmdapi.Config, error) {
     	return config.config, nil
     }
     
    +// MergedRawConfig returns the raw kube config merged with the overrides
    +func (config *DirectClientConfig) MergedRawConfig() (clientcmdapi.Config, error) {
    +	if err := config.ConfirmUsable(); err != nil {
    +		return clientcmdapi.Config{}, err
    +	}
    +	merged := config.config.DeepCopy()
    +
    +	// set the AuthInfo merged with overrides in the merged config
    +	mergedAuthInfo, err := config.getAuthInfo()
    +	if err != nil {
    +		return clientcmdapi.Config{}, err
    +	}
    +	mergedAuthInfoName, _ := config.getAuthInfoName()
    +	merged.AuthInfos[mergedAuthInfoName] = &mergedAuthInfo
    +
    +	// set the Context merged with overrides in the merged config
    +	mergedContext, err := config.getContext()
    +	if err != nil {
    +		return clientcmdapi.Config{}, err
    +	}
    +	mergedContextName, _ := config.getContextName()
    +	merged.Contexts[mergedContextName] = &mergedContext
    +	merged.CurrentContext = mergedContextName
    +
    +	// set the Cluster merged with overrides in the merged config
    +	configClusterInfo, err := config.getCluster()
    +	if err != nil {
    +		return clientcmdapi.Config{}, err
    +	}
    +	configClusterName, _ := config.getClusterName()
    +	merged.Clusters[configClusterName] = &configClusterInfo
    +	return *merged, nil
    +}
    +
     // ClientConfig implements ClientConfig
     func (config *DirectClientConfig) ClientConfig() (*restclient.Config, error) {
     	// check that getAuthInfo, getContext, and getCluster do not return an error.
    @@ -200,45 +239,37 @@ func (config *DirectClientConfig) ClientConfig() (*restclient.Config, error) {
     		if err != nil {
     			return nil, err
     		}
    -		mergo.Merge(clientConfig, userAuthPartialConfig, mergo.WithOverride)
    +		if err := merge(clientConfig, userAuthPartialConfig); err != nil {
    +			return nil, err
    +		}
     
    -		serverAuthPartialConfig, err := getServerIdentificationPartialConfig(configAuthInfo, configClusterInfo)
    -		if err != nil {
    +		serverAuthPartialConfig := getServerIdentificationPartialConfig(configClusterInfo)
    +		if err := merge(clientConfig, serverAuthPartialConfig); err != nil {
     			return nil, err
     		}
    -		mergo.Merge(clientConfig, serverAuthPartialConfig, mergo.WithOverride)
     	}
     
     	return clientConfig, nil
     }
     
     // clientauth.Info object contain both user identification and server identification.  We want different precedence orders for
    -// both, so we have to split the objects and merge them separately
    -// we want this order of precedence for the server identification
    -// 1.  configClusterInfo (the final result of command line flags and merged .kubeconfig files)
    -// 2.  configAuthInfo.auth-path (this file can contain information that conflicts with #1, and we want #1 to win the priority)
    -// 3.  load the ~/.kubernetes_auth file as a default
    -func getServerIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo, configClusterInfo clientcmdapi.Cluster) (*restclient.Config, error) {
    -	mergedConfig := &restclient.Config{}
    +// both, so we have to split the objects and merge them separately.
     
    -	// configClusterInfo holds the information identify the server provided by .kubeconfig
    +// getServerIdentificationPartialConfig extracts server identification information from configClusterInfo
    +// (the final result of command line flags and merged .kubeconfig files).
    +func getServerIdentificationPartialConfig(configClusterInfo clientcmdapi.Cluster) *restclient.Config {
     	configClientConfig := &restclient.Config{}
     	configClientConfig.CAFile = configClusterInfo.CertificateAuthority
     	configClientConfig.CAData = configClusterInfo.CertificateAuthorityData
     	configClientConfig.Insecure = configClusterInfo.InsecureSkipTLSVerify
     	configClientConfig.ServerName = configClusterInfo.TLSServerName
    -	mergo.Merge(mergedConfig, configClientConfig, mergo.WithOverride)
     
    -	return mergedConfig, nil
    +	return configClientConfig
     }
     
    -// clientauth.Info object contain both user identification and server identification.  We want different precedence orders for
    -// both, so we have to split the objects and merge them separately
    -// we want this order of precedence for user identification
    -// 1.  configAuthInfo minus auth-path (the final result of command line flags and merged .kubeconfig files)
    -// 2.  configAuthInfo.auth-path (this file can contain information that conflicts with #1, and we want #1 to win the priority)
    -// 3.  if there is not enough information to identify the user, load try the ~/.kubernetes_auth file
    -// 4.  if there is not enough information to identify the user, prompt if possible
    +// getUserIdentificationPartialConfig extracts user identification information from configAuthInfo
    +// (the final result of command line flags and merged .kubeconfig files);
    +// if the information available there is insufficient, it prompts (if possible) for additional information.
     func (config *DirectClientConfig) getUserIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo, fallbackReader io.Reader, persistAuthConfig restclient.AuthProviderConfigPersister, configClusterInfo clientcmdapi.Cluster) (*restclient.Config, error) {
     	mergedConfig := &restclient.Config{}
     
    @@ -297,8 +328,12 @@ func (config *DirectClientConfig) getUserIdentificationPartialConfig(configAuthI
     		promptedConfig := makeUserIdentificationConfig(*promptedAuthInfo)
     		previouslyMergedConfig := mergedConfig
     		mergedConfig = &restclient.Config{}
    -		mergo.Merge(mergedConfig, promptedConfig, mergo.WithOverride)
    -		mergo.Merge(mergedConfig, previouslyMergedConfig, mergo.WithOverride)
    +		if err := merge(mergedConfig, promptedConfig); err != nil {
    +			return nil, err
    +		}
    +		if err := merge(mergedConfig, previouslyMergedConfig); err != nil {
    +			return nil, err
    +		}
     		config.promptedCredentials.username = mergedConfig.Username
     		config.promptedCredentials.password = mergedConfig.Password
     	}
    @@ -306,7 +341,7 @@ func (config *DirectClientConfig) getUserIdentificationPartialConfig(configAuthI
     	return mergedConfig, nil
     }
     
    -// makeUserIdentificationFieldsConfig returns a client.Config capable of being merged using mergo for only user identification information
    +// makeUserIdentificationFieldsConfig returns a client.Config capable of being merged for only user identification information
     func makeUserIdentificationConfig(info clientauth.Info) *restclient.Config {
     	config := &restclient.Config{}
     	config.Username = info.User
    @@ -466,12 +501,16 @@ func (config *DirectClientConfig) getContext() (clientcmdapi.Context, error) {
     
     	mergedContext := clientcmdapi.NewContext()
     	if configContext, exists := contexts[contextName]; exists {
    -		mergo.Merge(mergedContext, configContext, mergo.WithOverride)
    +		if err := merge(mergedContext, configContext); err != nil {
    +			return clientcmdapi.Context{}, err
    +		}
     	} else if required {
     		return clientcmdapi.Context{}, fmt.Errorf("context %q does not exist", contextName)
     	}
     	if config.overrides != nil {
    -		mergo.Merge(mergedContext, config.overrides.Context, mergo.WithOverride)
    +		if err := merge(mergedContext, &config.overrides.Context); err != nil {
    +			return clientcmdapi.Context{}, err
    +		}
     	}
     
     	return *mergedContext, nil
    @@ -484,12 +523,16 @@ func (config *DirectClientConfig) getAuthInfo() (clientcmdapi.AuthInfo, error) {
     
     	mergedAuthInfo := clientcmdapi.NewAuthInfo()
     	if configAuthInfo, exists := authInfos[authInfoName]; exists {
    -		mergo.Merge(mergedAuthInfo, configAuthInfo, mergo.WithOverride)
    +		if err := merge(mergedAuthInfo, configAuthInfo); err != nil {
    +			return clientcmdapi.AuthInfo{}, err
    +		}
     	} else if required {
     		return clientcmdapi.AuthInfo{}, fmt.Errorf("auth info %q does not exist", authInfoName)
     	}
     	if config.overrides != nil {
    -		mergo.Merge(mergedAuthInfo, config.overrides.AuthInfo, mergo.WithOverride)
    +		if err := merge(mergedAuthInfo, &config.overrides.AuthInfo); err != nil {
    +			return clientcmdapi.AuthInfo{}, err
    +		}
     	}
     
     	return *mergedAuthInfo, nil
    @@ -502,15 +545,21 @@ func (config *DirectClientConfig) getCluster() (clientcmdapi.Cluster, error) {
     
     	mergedClusterInfo := clientcmdapi.NewCluster()
     	if config.overrides != nil {
    -		mergo.Merge(mergedClusterInfo, config.overrides.ClusterDefaults, mergo.WithOverride)
    +		if err := merge(mergedClusterInfo, &config.overrides.ClusterDefaults); err != nil {
    +			return clientcmdapi.Cluster{}, err
    +		}
     	}
     	if configClusterInfo, exists := clusterInfos[clusterInfoName]; exists {
    -		mergo.Merge(mergedClusterInfo, configClusterInfo, mergo.WithOverride)
    +		if err := merge(mergedClusterInfo, configClusterInfo); err != nil {
    +			return clientcmdapi.Cluster{}, err
    +		}
     	} else if required {
     		return clientcmdapi.Cluster{}, fmt.Errorf("cluster %q does not exist", clusterInfoName)
     	}
     	if config.overrides != nil {
    -		mergo.Merge(mergedClusterInfo, config.overrides.ClusterInfo, mergo.WithOverride)
    +		if err := merge(mergedClusterInfo, &config.overrides.ClusterInfo); err != nil {
    +			return clientcmdapi.Cluster{}, err
    +		}
     	}
     
     	// * An override of --insecure-skip-tls-verify=true and no accompanying CA/CA data should clear already-set CA/CA data
    diff --git a/vendor/k8s.io/client-go/tools/clientcmd/config.go b/vendor/k8s.io/client-go/tools/clientcmd/config.go
    index 31f8963160e7..2cd213ccb3e2 100644
    --- a/vendor/k8s.io/client-go/tools/clientcmd/config.go
    +++ b/vendor/k8s.io/client-go/tools/clientcmd/config.go
    @@ -19,7 +19,6 @@ package clientcmd
     import (
     	"errors"
     	"os"
    -	"path"
     	"path/filepath"
     	"reflect"
     	"sort"
    @@ -148,7 +147,7 @@ func NewDefaultPathOptions() *PathOptions {
     		EnvVar:           RecommendedConfigPathEnvVar,
     		ExplicitFileFlag: RecommendedConfigPathFlag,
     
    -		GlobalFileSubpath: path.Join(RecommendedHomeDir, RecommendedFileName),
    +		GlobalFileSubpath: filepath.Join(RecommendedHomeDir, RecommendedFileName),
     
     		LoadingRules: NewDefaultClientConfigLoadingRules(),
     	}
    diff --git a/vendor/k8s.io/client-go/tools/clientcmd/loader.go b/vendor/k8s.io/client-go/tools/clientcmd/loader.go
    index b75737f1c904..c900e5fd194e 100644
    --- a/vendor/k8s.io/client-go/tools/clientcmd/loader.go
    +++ b/vendor/k8s.io/client-go/tools/clientcmd/loader.go
    @@ -24,7 +24,6 @@ import (
     	goruntime "runtime"
     	"strings"
     
    -	"github.com/imdario/mergo"
     	"k8s.io/klog/v2"
     
     	"k8s.io/apimachinery/pkg/runtime"
    @@ -248,7 +247,9 @@ func (rules *ClientConfigLoadingRules) Load() (*clientcmdapi.Config, error) {
     	mapConfig := clientcmdapi.NewConfig()
     
     	for _, kubeconfig := range kubeconfigs {
    -		mergo.Merge(mapConfig, kubeconfig, mergo.WithOverride)
    +		if err := merge(mapConfig, kubeconfig); err != nil {
    +			return nil, err
    +		}
     	}
     
     	// merge all of the struct values in the reverse order so that priority is given correctly
    @@ -256,14 +257,20 @@ func (rules *ClientConfigLoadingRules) Load() (*clientcmdapi.Config, error) {
     	nonMapConfig := clientcmdapi.NewConfig()
     	for i := len(kubeconfigs) - 1; i >= 0; i-- {
     		kubeconfig := kubeconfigs[i]
    -		mergo.Merge(nonMapConfig, kubeconfig, mergo.WithOverride)
    +		if err := merge(nonMapConfig, kubeconfig); err != nil {
    +			return nil, err
    +		}
     	}
     
     	// since values are overwritten, but maps values are not, we can merge the non-map config on top of the map config and
     	// get the values we expect.
     	config := clientcmdapi.NewConfig()
    -	mergo.Merge(config, mapConfig, mergo.WithOverride)
    -	mergo.Merge(config, nonMapConfig, mergo.WithOverride)
    +	if err := merge(config, mapConfig); err != nil {
    +		return nil, err
    +	}
    +	if err := merge(config, nonMapConfig); err != nil {
    +		return nil, err
    +	}
     
     	if rules.ResolvePaths() {
     		if err := ResolveLocalPaths(config); err != nil {
    diff --git a/vendor/k8s.io/client-go/tools/clientcmd/merge.go b/vendor/k8s.io/client-go/tools/clientcmd/merge.go
    new file mode 100644
    index 000000000000..3d74e6029276
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/tools/clientcmd/merge.go
    @@ -0,0 +1,121 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package clientcmd
    +
    +import (
    +	"fmt"
    +	"reflect"
    +	"strings"
    +)
    +
    +// recursively merges src into dst:
    +// - non-pointer struct fields with any exported fields are recursively merged
    +// - non-pointer struct fields with only unexported fields prefer src if the field is non-zero
    +// - maps are shallow merged with src keys taking priority over dst
    +// - non-zero src fields encountered during recursion that are not maps or structs overwrite and recursion stops
    +func merge[T any](dst, src *T) error {
    +	if dst == nil {
    +		return fmt.Errorf("cannot merge into nil pointer")
    +	}
    +	if src == nil {
    +		return nil
    +	}
    +	return mergeValues(nil, reflect.ValueOf(dst).Elem(), reflect.ValueOf(src).Elem())
    +}
    +
    +func mergeValues(fieldNames []string, dst, src reflect.Value) error {
    +	dstType := dst.Type()
    +	// no-op if we can't read the src
    +	if !src.IsValid() {
    +		return nil
    +	}
    +	// sanity check types match
    +	if srcType := src.Type(); dstType != srcType {
    +		return fmt.Errorf("cannot merge mismatched types (%s, %s) at %s", dstType, srcType, strings.Join(fieldNames, "."))
    +	}
    +
    +	switch dstType.Kind() {
    +	case reflect.Struct:
    +		if hasExportedField(dstType) {
    +			// recursively merge
    +			for i, n := 0, dstType.NumField(); i < n; i++ {
    +				if err := mergeValues(append(fieldNames, dstType.Field(i).Name), dst.Field(i), src.Field(i)); err != nil {
    +					return err
    +				}
    +			}
    +		} else if dst.CanSet() {
    +			// If all fields are unexported, overwrite with src.
    +			// Using src.IsZero() would make more sense but that's not what mergo did.
    +			dst.Set(src)
    +		}
    +
    +	case reflect.Map:
    +		if dst.CanSet() && !src.IsZero() {
    +			// initialize dst if needed
    +			if dst.IsZero() {
    +				dst.Set(reflect.MakeMap(dstType))
    +			}
    +			// shallow-merge overwriting dst keys with src keys
    +			for _, mapKey := range src.MapKeys() {
    +				dst.SetMapIndex(mapKey, src.MapIndex(mapKey))
    +			}
    +		}
    +
    +	case reflect.Slice:
    +		if dst.CanSet() && src.Len() > 0 {
    +			// overwrite dst with non-empty src slice
    +			dst.Set(src)
    +		}
    +
    +	case reflect.Pointer:
    +		if dst.CanSet() && !src.IsZero() {
    +			// overwrite dst with non-zero values for other types
    +			if dstType.Elem().Kind() == reflect.Struct {
    +				// use struct pointer as-is
    +				dst.Set(src)
    +			} else {
    +				// shallow-copy non-struct pointer (interfaces, primitives, etc)
    +				dst.Set(reflect.New(dstType.Elem()))
    +				dst.Elem().Set(src.Elem())
    +			}
    +		}
    +
    +	default:
    +		if dst.CanSet() && !src.IsZero() {
    +			// overwrite dst with non-zero values for other types
    +			dst.Set(src)
    +		}
    +	}
    +
    +	return nil
    +}
    +
    +// hasExportedField returns true if the given type has any exported fields,
    +// or if it has any anonymous/embedded struct fields with exported fields
    +func hasExportedField(dstType reflect.Type) bool {
    +	for i, n := 0, dstType.NumField(); i < n; i++ {
    +		field := dstType.Field(i)
    +		if field.Anonymous && field.Type.Kind() == reflect.Struct {
    +			if hasExportedField(dstType.Field(i).Type) {
    +				return true
    +			}
    +		} else if len(field.PkgPath) == 0 {
    +			return true
    +		}
    +	}
    +	return false
    +}
    diff --git a/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go b/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go
    index c1151baf2073..c3c1d9be176c 100644
    --- a/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go
    +++ b/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go
    @@ -159,6 +159,10 @@ type LeaderElectionConfig struct {
     
     	// Name is the name of the resource lock for debugging
     	Name string
    +
    +	// Coordinated will use the Coordinated Leader Election feature
    +	// WARNING: Coordinated leader election is ALPHA.
    +	Coordinated bool
     }
     
     // LeaderCallbacks are callbacks that are triggered during certain
    @@ -169,7 +173,10 @@ type LeaderElectionConfig struct {
     type LeaderCallbacks struct {
     	// OnStartedLeading is called when a LeaderElector client starts leading
     	OnStartedLeading func(context.Context)
    -	// OnStoppedLeading is called when a LeaderElector client stops leading
    +	// OnStoppedLeading is called when a LeaderElector client stops leading.
    +	// This callback is always called when the LeaderElector exits, even if it did not start leading.
    +	// Users should not assume that OnStoppedLeading is only called after OnStartedLeading.
    +	// see: https://github.com/kubernetes/kubernetes/pull/127675#discussion_r1780059887
     	OnStoppedLeading func()
     	// OnNewLeader is called when the client observes a leader that is
     	// not the previously observed leader. This includes the first observed
    @@ -249,7 +256,11 @@ func (le *LeaderElector) acquire(ctx context.Context) bool {
     	desc := le.config.Lock.Describe()
     	klog.Infof("attempting to acquire leader lease %v...", desc)
     	wait.JitterUntil(func() {
    -		succeeded = le.tryAcquireOrRenew(ctx)
    +		if !le.config.Coordinated {
    +			succeeded = le.tryAcquireOrRenew(ctx)
    +		} else {
    +			succeeded = le.tryCoordinatedRenew(ctx)
    +		}
     		le.maybeReportTransition()
     		if !succeeded {
     			klog.V(4).Infof("failed to acquire lease %v", desc)
    @@ -269,12 +280,13 @@ func (le *LeaderElector) renew(ctx context.Context) {
     	ctx, cancel := context.WithCancel(ctx)
     	defer cancel()
     	wait.Until(func() {
    -		timeoutCtx, timeoutCancel := context.WithTimeout(ctx, le.config.RenewDeadline)
    -		defer timeoutCancel()
    -		err := wait.PollImmediateUntil(le.config.RetryPeriod, func() (bool, error) {
    -			return le.tryAcquireOrRenew(timeoutCtx), nil
    -		}, timeoutCtx.Done())
    -
    +		err := wait.PollUntilContextTimeout(ctx, le.config.RetryPeriod, le.config.RenewDeadline, true, func(ctx context.Context) (done bool, err error) {
    +			if !le.config.Coordinated {
    +				return le.tryAcquireOrRenew(ctx), nil
    +			} else {
    +				return le.tryCoordinatedRenew(ctx), nil
    +			}
    +		})
     		le.maybeReportTransition()
     		desc := le.config.Lock.Describe()
     		if err == nil {
    @@ -304,7 +316,9 @@ func (le *LeaderElector) release() bool {
     		RenewTime:            now,
     		AcquireTime:          now,
     	}
    -	if err := le.config.Lock.Update(context.TODO(), leaderElectionRecord); err != nil {
    +	timeoutCtx, timeoutCancel := context.WithTimeout(context.Background(), le.config.RenewDeadline)
    +	defer timeoutCancel()
    +	if err := le.config.Lock.Update(timeoutCtx, leaderElectionRecord); err != nil {
     		klog.Errorf("Failed to release lock: %v", err)
     		return false
     	}
    @@ -313,6 +327,81 @@ func (le *LeaderElector) release() bool {
     	return true
     }
     
    +// tryCoordinatedRenew checks if it acquired a lease and tries to renew the
    +// lease if it has already been acquired. Returns true on success else returns
    +// false.
    +func (le *LeaderElector) tryCoordinatedRenew(ctx context.Context) bool {
    +	now := metav1.NewTime(le.clock.Now())
    +	leaderElectionRecord := rl.LeaderElectionRecord{
    +		HolderIdentity:       le.config.Lock.Identity(),
    +		LeaseDurationSeconds: int(le.config.LeaseDuration / time.Second),
    +		RenewTime:            now,
    +		AcquireTime:          now,
    +	}
    +
    +	// 1. obtain the electionRecord
    +	oldLeaderElectionRecord, oldLeaderElectionRawRecord, err := le.config.Lock.Get(ctx)
    +	if err != nil {
    +		if !errors.IsNotFound(err) {
    +			klog.Errorf("error retrieving resource lock %v: %v", le.config.Lock.Describe(), err)
    +			return false
    +		}
    +		klog.Infof("lease lock not found: %v", le.config.Lock.Describe())
    +		return false
    +	}
    +
    +	// 2. Record obtained, check the Identity & Time
    +	if !bytes.Equal(le.observedRawRecord, oldLeaderElectionRawRecord) {
    +		le.setObservedRecord(oldLeaderElectionRecord)
    +
    +		le.observedRawRecord = oldLeaderElectionRawRecord
    +	}
    +
    +	hasExpired := le.observedTime.Add(time.Second * time.Duration(oldLeaderElectionRecord.LeaseDurationSeconds)).Before(now.Time)
    +	if hasExpired {
    +		klog.Infof("lock has expired: %v", le.config.Lock.Describe())
    +		return false
    +	}
    +
    +	if !le.IsLeader() {
    +		klog.V(6).Infof("lock is held by %v and has not yet expired: %v", oldLeaderElectionRecord.HolderIdentity, le.config.Lock.Describe())
    +		return false
    +	}
    +
    +	// 2b. If the lease has been marked as "end of term", don't renew it
    +	if le.IsLeader() && oldLeaderElectionRecord.PreferredHolder != "" {
    +		klog.V(4).Infof("lock is marked as 'end of term': %v", le.config.Lock.Describe())
    +		// TODO: Instead of letting lease expire, the holder may deleted it directly
    +		// This will not be compatible with all controllers, so it needs to be opt-in behavior.
    +		// We must ensure all code guarded by this lease has successfully completed
    +		// prior to releasing or there may be two processes
    +		// simultaneously acting on the critical path.
    +		// Usually once this returns false, the process is terminated..
    +		// xref: OnStoppedLeading
    +		return false
    +	}
    +
    +	// 3. We're going to try to update. The leaderElectionRecord is set to it's default
    +	// here. Let's correct it before updating.
    +	if le.IsLeader() {
    +		leaderElectionRecord.AcquireTime = oldLeaderElectionRecord.AcquireTime
    +		leaderElectionRecord.LeaderTransitions = oldLeaderElectionRecord.LeaderTransitions
    +		leaderElectionRecord.Strategy = oldLeaderElectionRecord.Strategy
    +		le.metrics.slowpathExercised(le.config.Name)
    +	} else {
    +		leaderElectionRecord.LeaderTransitions = oldLeaderElectionRecord.LeaderTransitions + 1
    +	}
    +
    +	// update the lock itself
    +	if err = le.config.Lock.Update(ctx, leaderElectionRecord); err != nil {
    +		klog.Errorf("Failed to update lock: %v", err)
    +		return false
    +	}
    +
    +	le.setObservedRecord(&leaderElectionRecord)
    +	return true
    +}
    +
     // tryAcquireOrRenew tries to acquire a leader lease if it is not already acquired,
     // else it tries to renew the lease if it has already been acquired. Returns true
     // on success else returns false.
    @@ -325,7 +414,22 @@ func (le *LeaderElector) tryAcquireOrRenew(ctx context.Context) bool {
     		AcquireTime:          now,
     	}
     
    -	// 1. obtain or create the ElectionRecord
    +	// 1. fast path for the leader to update optimistically assuming that the record observed
    +	// last time is the current version.
    +	if le.IsLeader() && le.isLeaseValid(now.Time) {
    +		oldObservedRecord := le.getObservedRecord()
    +		leaderElectionRecord.AcquireTime = oldObservedRecord.AcquireTime
    +		leaderElectionRecord.LeaderTransitions = oldObservedRecord.LeaderTransitions
    +
    +		err := le.config.Lock.Update(ctx, leaderElectionRecord)
    +		if err == nil {
    +			le.setObservedRecord(&leaderElectionRecord)
    +			return true
    +		}
    +		klog.Errorf("Failed to update lock optimistically: %v, falling back to slow path", err)
    +	}
    +
    +	// 2. obtain or create the ElectionRecord
     	oldLeaderElectionRecord, oldLeaderElectionRawRecord, err := le.config.Lock.Get(ctx)
     	if err != nil {
     		if !errors.IsNotFound(err) {
    @@ -342,24 +446,23 @@ func (le *LeaderElector) tryAcquireOrRenew(ctx context.Context) bool {
     		return true
     	}
     
    -	// 2. Record obtained, check the Identity & Time
    +	// 3. Record obtained, check the Identity & Time
     	if !bytes.Equal(le.observedRawRecord, oldLeaderElectionRawRecord) {
     		le.setObservedRecord(oldLeaderElectionRecord)
     
     		le.observedRawRecord = oldLeaderElectionRawRecord
     	}
    -	if len(oldLeaderElectionRecord.HolderIdentity) > 0 &&
    -		le.observedTime.Add(time.Second*time.Duration(oldLeaderElectionRecord.LeaseDurationSeconds)).After(now.Time) &&
    -		!le.IsLeader() {
    +	if len(oldLeaderElectionRecord.HolderIdentity) > 0 && le.isLeaseValid(now.Time) && !le.IsLeader() {
     		klog.V(4).Infof("lock is held by %v and has not yet expired", oldLeaderElectionRecord.HolderIdentity)
     		return false
     	}
     
    -	// 3. We're going to try to update. The leaderElectionRecord is set to it's default
    +	// 4. We're going to try to update. The leaderElectionRecord is set to it's default
     	// here. Let's correct it before updating.
     	if le.IsLeader() {
     		leaderElectionRecord.AcquireTime = oldLeaderElectionRecord.AcquireTime
     		leaderElectionRecord.LeaderTransitions = oldLeaderElectionRecord.LeaderTransitions
    +		le.metrics.slowpathExercised(le.config.Name)
     	} else {
     		leaderElectionRecord.LeaderTransitions = oldLeaderElectionRecord.LeaderTransitions + 1
     	}
    @@ -400,6 +503,10 @@ func (le *LeaderElector) Check(maxTolerableExpiredLease time.Duration) error {
     	return nil
     }
     
    +func (le *LeaderElector) isLeaseValid(now time.Time) bool {
    +	return le.observedTime.Add(time.Second * time.Duration(le.getObservedRecord().LeaseDurationSeconds)).After(now)
    +}
    +
     // setObservedRecord will set a new observedRecord and update observedTime to the current time.
     // Protect critical sections with lock.
     func (le *LeaderElector) setObservedRecord(observedRecord *rl.LeaderElectionRecord) {
    diff --git a/vendor/k8s.io/client-go/tools/leaderelection/leasecandidate.go b/vendor/k8s.io/client-go/tools/leaderelection/leasecandidate.go
    new file mode 100644
    index 000000000000..6ccd4cfbeed3
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/tools/leaderelection/leasecandidate.go
    @@ -0,0 +1,202 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package leaderelection
    +
    +import (
    +	"context"
    +	"reflect"
    +	"time"
    +
    +	v1 "k8s.io/api/coordination/v1"
    +	v1alpha2 "k8s.io/api/coordination/v1alpha2"
    +	apierrors "k8s.io/apimachinery/pkg/api/errors"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/fields"
    +	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    +	"k8s.io/client-go/informers"
    +	"k8s.io/client-go/kubernetes"
    +	coordinationv1alpha2client "k8s.io/client-go/kubernetes/typed/coordination/v1alpha2"
    +	"k8s.io/client-go/tools/cache"
    +	"k8s.io/client-go/util/workqueue"
    +	"k8s.io/klog/v2"
    +	"k8s.io/utils/clock"
    +)
    +
    +const requeueInterval = 5 * time.Minute
    +
    +type CacheSyncWaiter interface {
    +	WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool
    +}
    +
    +type LeaseCandidate struct {
    +	leaseClient            coordinationv1alpha2client.LeaseCandidateInterface
    +	leaseCandidateInformer cache.SharedIndexInformer
    +	informerFactory        informers.SharedInformerFactory
    +	hasSynced              cache.InformerSynced
    +
    +	// At most there will be one item in this Queue (since we only watch one item)
    +	queue workqueue.TypedRateLimitingInterface[int]
    +
    +	name      string
    +	namespace string
    +
    +	// controller lease
    +	leaseName string
    +
    +	clock clock.Clock
    +
    +	binaryVersion, emulationVersion string
    +	strategy                        v1.CoordinatedLeaseStrategy
    +}
    +
    +// NewCandidate creates new LeaseCandidate controller that creates a
    +// LeaseCandidate object if it does not exist and watches changes
    +// to the corresponding object and renews if PingTime is set.
    +// WARNING: This is an ALPHA feature. Ensure that the CoordinatedLeaderElection
    +// feature gate is on.
    +func NewCandidate(clientset kubernetes.Interface,
    +	candidateNamespace string,
    +	candidateName string,
    +	targetLease string,
    +	binaryVersion, emulationVersion string,
    +	strategy v1.CoordinatedLeaseStrategy,
    +) (*LeaseCandidate, CacheSyncWaiter, error) {
    +	fieldSelector := fields.OneTermEqualSelector("metadata.name", candidateName).String()
    +	// A separate informer factory is required because this must start before informerFactories
    +	// are started for leader elected components
    +	informerFactory := informers.NewSharedInformerFactoryWithOptions(
    +		clientset, 5*time.Minute,
    +		informers.WithTweakListOptions(func(options *metav1.ListOptions) {
    +			options.FieldSelector = fieldSelector
    +		}),
    +	)
    +	leaseCandidateInformer := informerFactory.Coordination().V1alpha2().LeaseCandidates().Informer()
    +
    +	lc := &LeaseCandidate{
    +		leaseClient:            clientset.CoordinationV1alpha2().LeaseCandidates(candidateNamespace),
    +		leaseCandidateInformer: leaseCandidateInformer,
    +		informerFactory:        informerFactory,
    +		name:                   candidateName,
    +		namespace:              candidateNamespace,
    +		leaseName:              targetLease,
    +		clock:                  clock.RealClock{},
    +		binaryVersion:          binaryVersion,
    +		emulationVersion:       emulationVersion,
    +		strategy:               strategy,
    +	}
    +	lc.queue = workqueue.NewTypedRateLimitingQueueWithConfig(workqueue.DefaultTypedControllerRateLimiter[int](), workqueue.TypedRateLimitingQueueConfig[int]{Name: "leasecandidate"})
    +
    +	h, err := leaseCandidateInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
    +		UpdateFunc: func(oldObj, newObj interface{}) {
    +			if leasecandidate, ok := newObj.(*v1alpha2.LeaseCandidate); ok {
    +				if leasecandidate.Spec.PingTime != nil && leasecandidate.Spec.PingTime.After(leasecandidate.Spec.RenewTime.Time) {
    +					lc.enqueueLease()
    +				}
    +			}
    +		},
    +	})
    +	if err != nil {
    +		return nil, nil, err
    +	}
    +	lc.hasSynced = h.HasSynced
    +
    +	return lc, informerFactory, nil
    +}
    +
    +func (c *LeaseCandidate) Run(ctx context.Context) {
    +	defer c.queue.ShutDown()
    +
    +	c.informerFactory.Start(ctx.Done())
    +	if !cache.WaitForNamedCacheSync("leasecandidateclient", ctx.Done(), c.hasSynced) {
    +		return
    +	}
    +
    +	c.enqueueLease()
    +	go c.runWorker(ctx)
    +	<-ctx.Done()
    +}
    +
    +func (c *LeaseCandidate) runWorker(ctx context.Context) {
    +	for c.processNextWorkItem(ctx) {
    +	}
    +}
    +
    +func (c *LeaseCandidate) processNextWorkItem(ctx context.Context) bool {
    +	key, shutdown := c.queue.Get()
    +	if shutdown {
    +		return false
    +	}
    +	defer c.queue.Done(key)
    +
    +	err := c.ensureLease(ctx)
    +	if err == nil {
    +		c.queue.AddAfter(key, requeueInterval)
    +		return true
    +	}
    +
    +	utilruntime.HandleError(err)
    +	c.queue.AddRateLimited(key)
    +
    +	return true
    +}
    +
    +func (c *LeaseCandidate) enqueueLease() {
    +	c.queue.Add(0)
    +}
    +
    +// ensureLease creates the lease if it does not exist and renew it if it exists. Returns the lease and
    +// a bool (true if this call created the lease), or any error that occurs.
    +func (c *LeaseCandidate) ensureLease(ctx context.Context) error {
    +	lease, err := c.leaseClient.Get(ctx, c.name, metav1.GetOptions{})
    +	if apierrors.IsNotFound(err) {
    +		klog.V(2).Infof("Creating lease candidate")
    +		// lease does not exist, create it.
    +		leaseToCreate := c.newLeaseCandidate()
    +		if _, err := c.leaseClient.Create(ctx, leaseToCreate, metav1.CreateOptions{}); err != nil {
    +			return err
    +		}
    +		klog.V(2).Infof("Created lease candidate")
    +		return nil
    +	} else if err != nil {
    +		return err
    +	}
    +	klog.V(2).Infof("lease candidate exists. Renewing.")
    +	clone := lease.DeepCopy()
    +	clone.Spec.RenewTime = &metav1.MicroTime{Time: c.clock.Now()}
    +	_, err = c.leaseClient.Update(ctx, clone, metav1.UpdateOptions{})
    +	if err != nil {
    +		return err
    +	}
    +	return nil
    +}
    +
    +func (c *LeaseCandidate) newLeaseCandidate() *v1alpha2.LeaseCandidate {
    +	lc := &v1alpha2.LeaseCandidate{
    +		ObjectMeta: metav1.ObjectMeta{
    +			Name:      c.name,
    +			Namespace: c.namespace,
    +		},
    +		Spec: v1alpha2.LeaseCandidateSpec{
    +			LeaseName:        c.leaseName,
    +			BinaryVersion:    c.binaryVersion,
    +			EmulationVersion: c.emulationVersion,
    +			Strategy:         c.strategy,
    +		},
    +	}
    +	lc.Spec.RenewTime = &metav1.MicroTime{Time: c.clock.Now()}
    +	return lc
    +}
    diff --git a/vendor/k8s.io/client-go/tools/leaderelection/metrics.go b/vendor/k8s.io/client-go/tools/leaderelection/metrics.go
    index 65917bf88e1d..7438345fb153 100644
    --- a/vendor/k8s.io/client-go/tools/leaderelection/metrics.go
    +++ b/vendor/k8s.io/client-go/tools/leaderelection/metrics.go
    @@ -26,24 +26,26 @@ import (
     type leaderMetricsAdapter interface {
     	leaderOn(name string)
     	leaderOff(name string)
    +	slowpathExercised(name string)
     }
     
    -// GaugeMetric represents a single numerical value that can arbitrarily go up
    -// and down.
    -type SwitchMetric interface {
    +// LeaderMetric instruments metrics used in leader election.
    +type LeaderMetric interface {
     	On(name string)
     	Off(name string)
    +	SlowpathExercised(name string)
     }
     
     type noopMetric struct{}
     
    -func (noopMetric) On(name string)  {}
    -func (noopMetric) Off(name string) {}
    +func (noopMetric) On(name string)                {}
    +func (noopMetric) Off(name string)               {}
    +func (noopMetric) SlowpathExercised(name string) {}
     
     // defaultLeaderMetrics expects the caller to lock before setting any metrics.
     type defaultLeaderMetrics struct {
     	// leader's value indicates if the current process is the owner of name lease
    -	leader SwitchMetric
    +	leader LeaderMetric
     }
     
     func (m *defaultLeaderMetrics) leaderOn(name string) {
    @@ -60,19 +62,27 @@ func (m *defaultLeaderMetrics) leaderOff(name string) {
     	m.leader.Off(name)
     }
     
    +func (m *defaultLeaderMetrics) slowpathExercised(name string) {
    +	if m == nil {
    +		return
    +	}
    +	m.leader.SlowpathExercised(name)
    +}
    +
     type noMetrics struct{}
     
    -func (noMetrics) leaderOn(name string)  {}
    -func (noMetrics) leaderOff(name string) {}
    +func (noMetrics) leaderOn(name string)          {}
    +func (noMetrics) leaderOff(name string)         {}
    +func (noMetrics) slowpathExercised(name string) {}
     
     // MetricsProvider generates various metrics used by the leader election.
     type MetricsProvider interface {
    -	NewLeaderMetric() SwitchMetric
    +	NewLeaderMetric() LeaderMetric
     }
     
     type noopMetricsProvider struct{}
     
    -func (_ noopMetricsProvider) NewLeaderMetric() SwitchMetric {
    +func (noopMetricsProvider) NewLeaderMetric() LeaderMetric {
     	return noopMetric{}
     }
     
    diff --git a/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/interface.go b/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/interface.go
    index 483753d632ca..2a1eb9caa631 100644
    --- a/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/interface.go
    +++ b/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/interface.go
    @@ -19,14 +19,15 @@ package resourcelock
     import (
     	"context"
     	"fmt"
    -	clientset "k8s.io/client-go/kubernetes"
    -	restclient "k8s.io/client-go/rest"
     	"time"
     
    +	v1 "k8s.io/api/coordination/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	"k8s.io/apimachinery/pkg/runtime"
    +	clientset "k8s.io/client-go/kubernetes"
     	coordinationv1 "k8s.io/client-go/kubernetes/typed/coordination/v1"
     	corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
    +	restclient "k8s.io/client-go/rest"
     )
     
     const (
    @@ -34,74 +35,8 @@ const (
     	endpointsResourceLock             = "endpoints"
     	configMapsResourceLock            = "configmaps"
     	LeasesResourceLock                = "leases"
    -	// When using endpointsLeasesResourceLock, you need to ensure that
    -	// API Priority & Fairness is configured with non-default flow-schema
    -	// that will catch the necessary operations on leader-election related
    -	// endpoint objects.
    -	//
    -	// The example of such flow scheme could look like this:
    -	//   apiVersion: flowcontrol.apiserver.k8s.io/v1beta2
    -	//   kind: FlowSchema
    -	//   metadata:
    -	//     name: my-leader-election
    -	//   spec:
    -	//     distinguisherMethod:
    -	//       type: ByUser
    -	//     matchingPrecedence: 200
    -	//     priorityLevelConfiguration:
    -	//       name: leader-election   # reference the  PL
    -	//     rules:
    -	//     - resourceRules:
    -	//       - apiGroups:
    -	//         - ""
    -	//         namespaces:
    -	//         - '*'
    -	//         resources:
    -	//         - endpoints
    -	//         verbs:
    -	//         - get
    -	//         - create
    -	//         - update
    -	//       subjects:
    -	//       - kind: ServiceAccount
    -	//         serviceAccount:
    -	//           name: '*'
    -	//           namespace: kube-system
    -	endpointsLeasesResourceLock = "endpointsleases"
    -	// When using configMapsLeasesResourceLock, you need to ensure that
    -	// API Priority & Fairness is configured with non-default flow-schema
    -	// that will catch the necessary operations on leader-election related
    -	// configmap objects.
    -	//
    -	// The example of such flow scheme could look like this:
    -	//   apiVersion: flowcontrol.apiserver.k8s.io/v1beta2
    -	//   kind: FlowSchema
    -	//   metadata:
    -	//     name: my-leader-election
    -	//   spec:
    -	//     distinguisherMethod:
    -	//       type: ByUser
    -	//     matchingPrecedence: 200
    -	//     priorityLevelConfiguration:
    -	//       name: leader-election   # reference the  PL
    -	//     rules:
    -	//     - resourceRules:
    -	//       - apiGroups:
    -	//         - ""
    -	//         namespaces:
    -	//         - '*'
    -	//         resources:
    -	//         - configmaps
    -	//         verbs:
    -	//         - get
    -	//         - create
    -	//         - update
    -	//       subjects:
    -	//       - kind: ServiceAccount
    -	//         serviceAccount:
    -	//           name: '*'
    -	//           namespace: kube-system
    -	configMapsLeasesResourceLock = "configmapsleases"
    +	endpointsLeasesResourceLock       = "endpointsleases"
    +	configMapsLeasesResourceLock      = "configmapsleases"
     )
     
     // LeaderElectionRecord is the record that is stored in the leader election annotation.
    @@ -114,11 +49,13 @@ type LeaderElectionRecord struct {
     	// attempt to acquire leases with empty identities and will wait for the full lease
     	// interval to expire before attempting to reacquire. This value is set to empty when
     	// a client voluntarily steps down.
    -	HolderIdentity       string      `json:"holderIdentity"`
    -	LeaseDurationSeconds int         `json:"leaseDurationSeconds"`
    -	AcquireTime          metav1.Time `json:"acquireTime"`
    -	RenewTime            metav1.Time `json:"renewTime"`
    -	LeaderTransitions    int         `json:"leaderTransitions"`
    +	HolderIdentity       string                      `json:"holderIdentity"`
    +	LeaseDurationSeconds int                         `json:"leaseDurationSeconds"`
    +	AcquireTime          metav1.Time                 `json:"acquireTime"`
    +	RenewTime            metav1.Time                 `json:"renewTime"`
    +	LeaderTransitions    int                         `json:"leaderTransitions"`
    +	Strategy             v1.CoordinatedLeaseStrategy `json:"strategy"`
    +	PreferredHolder      string                      `json:"preferredHolder"`
     }
     
     // EventRecorder records a change in the ResourceLock.
    @@ -174,9 +111,9 @@ func New(lockType string, ns string, name string, coreClient corev1.CoreV1Interf
     	}
     	switch lockType {
     	case endpointsResourceLock:
    -		return nil, fmt.Errorf("endpoints lock is removed, migrate to %s (using version v0.27.x)", endpointsLeasesResourceLock)
    +		return nil, fmt.Errorf("endpoints lock is removed, migrate to %s", LeasesResourceLock)
     	case configMapsResourceLock:
    -		return nil, fmt.Errorf("configmaps lock is removed, migrate to %s (using version v0.27.x)", configMapsLeasesResourceLock)
    +		return nil, fmt.Errorf("configmaps lock is removed, migrate to %s", LeasesResourceLock)
     	case LeasesResourceLock:
     		return leaseLock, nil
     	case endpointsLeasesResourceLock:
    diff --git a/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/leaselock.go b/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/leaselock.go
    index 8a9d7d60f2da..7cd2a8b9ca75 100644
    --- a/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/leaselock.go
    +++ b/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/leaselock.go
    @@ -122,6 +122,12 @@ func LeaseSpecToLeaderElectionRecord(spec *coordinationv1.LeaseSpec) *LeaderElec
     	if spec.RenewTime != nil {
     		r.RenewTime = metav1.Time{Time: spec.RenewTime.Time}
     	}
    +	if spec.PreferredHolder != nil {
    +		r.PreferredHolder = *spec.PreferredHolder
    +	}
    +	if spec.Strategy != nil {
    +		r.Strategy = *spec.Strategy
    +	}
     	return &r
     
     }
    @@ -129,11 +135,18 @@ func LeaseSpecToLeaderElectionRecord(spec *coordinationv1.LeaseSpec) *LeaderElec
     func LeaderElectionRecordToLeaseSpec(ler *LeaderElectionRecord) coordinationv1.LeaseSpec {
     	leaseDurationSeconds := int32(ler.LeaseDurationSeconds)
     	leaseTransitions := int32(ler.LeaderTransitions)
    -	return coordinationv1.LeaseSpec{
    +	spec := coordinationv1.LeaseSpec{
     		HolderIdentity:       &ler.HolderIdentity,
     		LeaseDurationSeconds: &leaseDurationSeconds,
     		AcquireTime:          &metav1.MicroTime{Time: ler.AcquireTime.Time},
     		RenewTime:            &metav1.MicroTime{Time: ler.RenewTime.Time},
     		LeaseTransitions:     &leaseTransitions,
     	}
    +	if ler.PreferredHolder != "" {
    +		spec.PreferredHolder = &ler.PreferredHolder
    +	}
    +	if ler.Strategy != "" {
    +		spec.Strategy = &ler.Strategy
    +	}
    +	return spec
     }
    diff --git a/vendor/k8s.io/client-go/tools/record/event.go b/vendor/k8s.io/client-go/tools/record/event.go
    index d1511696d0fb..55947d2094b6 100644
    --- a/vendor/k8s.io/client-go/tools/record/event.go
    +++ b/vendor/k8s.io/client-go/tools/record/event.go
    @@ -198,16 +198,29 @@ func NewBroadcaster(opts ...BroadcasterOption) EventBroadcaster {
     	ctx := c.Context
     	if ctx == nil {
     		ctx = context.Background()
    -	} else {
    +	}
    +	// The are two scenarios where it makes no sense to wait for context cancelation:
    +	// - The context was nil.
    +	// - The context was context.Background() to begin with.
    +	//
    +	// Both cases get checked here: we have cancelation if (and only if) there is a channel.
    +	haveCtxCancelation := ctx.Done() != nil
    +
    +	eventBroadcaster.cancelationCtx, eventBroadcaster.cancel = context.WithCancel(ctx)
    +
    +	if haveCtxCancelation {
     		// Calling Shutdown is not required when a context was provided:
     		// when the context is canceled, this goroutine will shut down
     		// the broadcaster.
    +		//
    +		// If Shutdown is called first, then this goroutine will
    +		// also stop.
     		go func() {
    -			<-ctx.Done()
    +			<-eventBroadcaster.cancelationCtx.Done()
     			eventBroadcaster.Broadcaster.Shutdown()
     		}()
     	}
    -	eventBroadcaster.cancelationCtx, eventBroadcaster.cancel = context.WithCancel(ctx)
    +
     	return eventBroadcaster
     }
     
    @@ -382,7 +395,11 @@ func (e *eventBroadcasterImpl) StartStructuredLogging(verbosity klog.Level) watc
     func (e *eventBroadcasterImpl) StartEventWatcher(eventHandler func(*v1.Event)) watch.Interface {
     	watcher, err := e.Watch()
     	if err != nil {
    +		// This function traditionally returns no error even though it can fail.
    +		// Instead, it logs the error and returns an empty watch. The empty
    +		// watch ensures that callers don't crash when calling Stop.
     		klog.FromContext(e.cancelationCtx).Error(err, "Unable start event watcher (will not retry!)")
    +		return watch.NewEmptyWatch()
     	}
     	go func() {
     		defer utilruntime.HandleCrash()
    diff --git a/vendor/k8s.io/client-go/tools/record/events_cache.go b/vendor/k8s.io/client-go/tools/record/events_cache.go
    index abba06362aa2..170074d4b4e9 100644
    --- a/vendor/k8s.io/client-go/tools/record/events_cache.go
    +++ b/vendor/k8s.io/client-go/tools/record/events_cache.go
    @@ -23,14 +23,13 @@ import (
     	"sync"
     	"time"
     
    -	"github.com/golang/groupcache/lru"
    -
     	v1 "k8s.io/api/core/v1"
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	"k8s.io/apimachinery/pkg/util/sets"
     	"k8s.io/apimachinery/pkg/util/strategicpatch"
     	"k8s.io/client-go/util/flowcontrol"
     	"k8s.io/utils/clock"
    +	"k8s.io/utils/lru"
     )
     
     const (
    @@ -77,6 +76,7 @@ func getSpamKey(event *v1.Event) string {
     		event.InvolvedObject.Name,
     		string(event.InvolvedObject.UID),
     		event.InvolvedObject.APIVersion,
    +		event.Type,
     	},
     		"")
     }
    @@ -90,8 +90,6 @@ type EventFilterFunc func(event *v1.Event) bool
     // EventSourceObjectSpamFilter is responsible for throttling
     // the amount of events a source and object can produce.
     type EventSourceObjectSpamFilter struct {
    -	sync.RWMutex
    -
     	// the cache that manages last synced state
     	cache *lru.Cache
     
    @@ -133,8 +131,6 @@ func (f *EventSourceObjectSpamFilter) Filter(event *v1.Event) bool {
     	eventKey := f.spamKeyFunc(event)
     
     	// do we have a record of similar events in our cache?
    -	f.Lock()
    -	defer f.Unlock()
     	value, found := f.cache.Get(eventKey)
     	if found {
     		record = value.(spamRecord)
    diff --git a/vendor/k8s.io/client-go/transport/cache_go118.go b/vendor/k8s.io/client-go/transport/cache_go118.go
    index d21d5137d4d4..babdaf8b5ad6 100644
    --- a/vendor/k8s.io/client-go/transport/cache_go118.go
    +++ b/vendor/k8s.io/client-go/transport/cache_go118.go
    @@ -18,7 +18,29 @@ limitations under the License.
     
     package transport
     
    +// this is just to make the "unused" linter rule happy
    +var _ = isCacheKeyComparable[tlsCacheKey]
    +
     // assert at compile time that tlsCacheKey is comparable in a way that will never panic at runtime.
    -var _ = isComparable[tlsCacheKey]
    +//
    +// Golang 1.20 introduced an exception to type constraints that allows comparable, but not
    +// necessarily strictly comparable type arguments to satisfy the `comparable` type constraint,
    +// thus allowing interfaces to fulfil the `comparable` constraint.
    +// However, by definition, "A comparison of two interface values with identical
    +// dynamic types causes a run-time panic if that type is not comparable".
    +//
    +// We want to make sure that comparing two `tlsCacheKey` elements won't cause a
    +// runtime panic. In order to do that, we'll force the `tlsCacheKey` to be strictly
    +// comparable, thus making it impossible for it to contain interfaces.
    +// To assert strict comparability, we'll use another definition: "Type
    +// parameters are comparable if they are strictly comparable".
    +// Below, we first construct a type parameter from the `tlsCacheKey` type so that
    +// we can then push this type parameter to a comparable check, thus checking these
    +// are strictly comparable.
    +//
    +// Original suggestion from https://github.com/golang/go/issues/56548#issuecomment-1317673963
    +func isCacheKeyComparable[K tlsCacheKey]() {
    +	_ = isComparable[K]
    +}
     
     func isComparable[T comparable]() {}
    diff --git a/vendor/k8s.io/client-go/transport/cert_rotation.go b/vendor/k8s.io/client-go/transport/cert_rotation.go
    index dc22b6ec4cc2..e76f65812d3a 100644
    --- a/vendor/k8s.io/client-go/transport/cert_rotation.go
    +++ b/vendor/k8s.io/client-go/transport/cert_rotation.go
    @@ -47,14 +47,17 @@ type dynamicClientCert struct {
     	connDialer *connrotation.Dialer
     
     	// queue only ever has one item, but it has nice error handling backoff/retry semantics
    -	queue workqueue.RateLimitingInterface
    +	queue workqueue.TypedRateLimitingInterface[string]
     }
     
     func certRotatingDialer(reload reloadFunc, dial utilnet.DialFunc) *dynamicClientCert {
     	d := &dynamicClientCert{
     		reload:     reload,
     		connDialer: connrotation.NewDialer(connrotation.DialFunc(dial)),
    -		queue:      workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DynamicClientCertificate"),
    +		queue: workqueue.NewTypedRateLimitingQueueWithConfig(
    +			workqueue.DefaultTypedControllerRateLimiter[string](),
    +			workqueue.TypedRateLimitingQueueConfig[string]{Name: "DynamicClientCertificate"},
    +		),
     	}
     
     	return d
    diff --git a/vendor/k8s.io/client-go/transport/round_trippers.go b/vendor/k8s.io/client-go/transport/round_trippers.go
    index e2d1dcc9a9c0..52fefb53163f 100644
    --- a/vendor/k8s.io/client-go/transport/round_trippers.go
    +++ b/vendor/k8s.io/client-go/transport/round_trippers.go
    @@ -86,6 +86,7 @@ func DebugWrappers(rt http.RoundTripper) http.RoundTripper {
     
     type authProxyRoundTripper struct {
     	username string
    +	uid      string
     	groups   []string
     	extra    map[string][]string
     
    @@ -98,15 +99,17 @@ var _ utilnet.RoundTripperWrapper = &authProxyRoundTripper{}
     // authentication terminating proxy cases
     // assuming you pull the user from the context:
     // username is the user.Info.GetName() of the user
    +// uid is the user.Info.GetUID() of the user
     // groups is the user.Info.GetGroups() of the user
     // extra is the user.Info.GetExtra() of the user
     // extra can contain any additional information that the authenticator
     // thought was interesting, for example authorization scopes.
     // In order to faithfully round-trip through an impersonation flow, these keys
     // MUST be lowercase.
    -func NewAuthProxyRoundTripper(username string, groups []string, extra map[string][]string, rt http.RoundTripper) http.RoundTripper {
    +func NewAuthProxyRoundTripper(username, uid string, groups []string, extra map[string][]string, rt http.RoundTripper) http.RoundTripper {
     	return &authProxyRoundTripper{
     		username: username,
    +		uid:      uid,
     		groups:   groups,
     		extra:    extra,
     		rt:       rt,
    @@ -115,14 +118,15 @@ func NewAuthProxyRoundTripper(username string, groups []string, extra map[string
     
     func (rt *authProxyRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
     	req = utilnet.CloneRequest(req)
    -	SetAuthProxyHeaders(req, rt.username, rt.groups, rt.extra)
    +	SetAuthProxyHeaders(req, rt.username, rt.uid, rt.groups, rt.extra)
     
     	return rt.rt.RoundTrip(req)
     }
     
     // SetAuthProxyHeaders stomps the auth proxy header fields.  It mutates its argument.
    -func SetAuthProxyHeaders(req *http.Request, username string, groups []string, extra map[string][]string) {
    +func SetAuthProxyHeaders(req *http.Request, username, uid string, groups []string, extra map[string][]string) {
     	req.Header.Del("X-Remote-User")
    +	req.Header.Del("X-Remote-Uid")
     	req.Header.Del("X-Remote-Group")
     	for key := range req.Header {
     		if strings.HasPrefix(strings.ToLower(key), strings.ToLower("X-Remote-Extra-")) {
    @@ -131,6 +135,9 @@ func SetAuthProxyHeaders(req *http.Request, username string, groups []string, ex
     	}
     
     	req.Header.Set("X-Remote-User", username)
    +	if len(uid) > 0 {
    +		req.Header.Set("X-Remote-Uid", uid)
    +	}
     	for _, group := range groups {
     		req.Header.Add("X-Remote-Group", group)
     	}
    diff --git a/vendor/k8s.io/client-go/util/apply/apply.go b/vendor/k8s.io/client-go/util/apply/apply.go
    new file mode 100644
    index 000000000000..0cc85df6c537
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/util/apply/apply.go
    @@ -0,0 +1,49 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package apply
    +
    +import (
    +	"fmt"
    +
    +	cbor "k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct"
    +	"k8s.io/apimachinery/pkg/types"
    +	"k8s.io/apimachinery/pkg/util/json"
    +	"k8s.io/client-go/features"
    +	"k8s.io/client-go/rest"
    +)
    +
    +// NewRequest builds a new server-side apply request. The provided apply configuration object will
    +// be marshalled to the request's body using the default encoding, and the Content-Type header will
    +// be set to application/apply-patch with the appropriate structured syntax name suffix (today,
    +// either +yaml or +cbor, see
    +// https://www.iana.org/assignments/media-type-structured-suffix/media-type-structured-suffix.xhtml).
    +func NewRequest(client rest.Interface, applyConfiguration interface{}) (*rest.Request, error) {
    +	pt := types.ApplyYAMLPatchType
    +	marshal := json.Marshal
    +
    +	if features.FeatureGates().Enabled(features.ClientsAllowCBOR) && features.FeatureGates().Enabled(features.ClientsPreferCBOR) {
    +		pt = types.ApplyCBORPatchType
    +		marshal = cbor.Marshal
    +	}
    +
    +	body, err := marshal(applyConfiguration)
    +	if err != nil {
    +		return nil, fmt.Errorf("failed to marshal apply configuration: %w", err)
    +	}
    +
    +	return client.Patch(pt).Body(body), nil
    +}
    diff --git a/vendor/k8s.io/client-go/util/consistencydetector/data_consistency_detector.go b/vendor/k8s.io/client-go/util/consistencydetector/data_consistency_detector.go
    new file mode 100644
    index 000000000000..b33d08032faf
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/util/consistencydetector/data_consistency_detector.go
    @@ -0,0 +1,146 @@
    +/*
    +Copyright 2023 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package consistencydetector
    +
    +import (
    +	"context"
    +	"fmt"
    +	"sort"
    +	"time"
    +
    +	"github.com/google/go-cmp/cmp"
    +
    +	"k8s.io/apimachinery/pkg/api/meta"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	"k8s.io/apimachinery/pkg/util/wait"
    +	"k8s.io/klog/v2"
    +)
    +
    +type RetrieveItemsFunc[U any] func() []U
    +
    +type ListFunc[T runtime.Object] func(ctx context.Context, options metav1.ListOptions) (T, error)
    +
    +// CheckDataConsistency exists solely for testing purposes.
    +// we cannot use checkWatchListDataConsistencyIfRequested because
    +// it is guarded by an environmental variable.
    +// we cannot manipulate the environmental variable because
    +// it will affect other tests in this package.
    +func CheckDataConsistency[T runtime.Object, U any](ctx context.Context, identity string, lastSyncedResourceVersion string, listFn ListFunc[T], listOptions metav1.ListOptions, retrieveItemsFn RetrieveItemsFunc[U]) {
    +	if !canFormAdditionalListCall(lastSyncedResourceVersion, listOptions) {
    +		klog.V(4).Infof("data consistency check for %s is enabled but the parameters (RV, ListOptions) doesn't allow for creating a valid LIST request. Skipping the data consistency check.", identity)
    +		return
    +	}
    +	klog.Warningf("data consistency check for %s is enabled, this will result in an additional call to the API server.", identity)
    +
    +	retrievedItems := toMetaObjectSliceOrDie(retrieveItemsFn())
    +	listOptions = prepareListCallOptions(lastSyncedResourceVersion, listOptions, len(retrievedItems))
    +	var list runtime.Object
    +	err := wait.PollUntilContextCancel(ctx, time.Second, true, func(_ context.Context) (done bool, err error) {
    +		list, err = listFn(ctx, listOptions)
    +		if err != nil {
    +			// the consistency check will only be enabled in the CI
    +			// and LIST calls in general will be retired by the client-go library
    +			// if we fail simply log and retry
    +			klog.Errorf("failed to list data from the server, retrying until stopCh is closed, err: %v", err)
    +			return false, nil
    +		}
    +		return true, nil
    +	})
    +	if err != nil {
    +		klog.Errorf("failed to list data from the server, the data consistency check for %s won't be performed, stopCh was closed, err: %v", identity, err)
    +		return
    +	}
    +
    +	rawListItems, err := meta.ExtractListWithAlloc(list)
    +	if err != nil {
    +		panic(err) // this should never happen
    +	}
    +	listItems := toMetaObjectSliceOrDie(rawListItems)
    +
    +	sort.Sort(byUID(listItems))
    +	sort.Sort(byUID(retrievedItems))
    +
    +	if !cmp.Equal(listItems, retrievedItems) {
    +		klog.Infof("previously received data for %s is different than received by the standard list api call against etcd, diff: %v", identity, cmp.Diff(listItems, retrievedItems))
    +		msg := fmt.Sprintf("data inconsistency detected for %s, panicking!", identity)
    +		panic(msg)
    +	}
    +}
    +
    +// canFormAdditionalListCall ensures that we can form a valid LIST requests
    +// for checking data consistency.
    +func canFormAdditionalListCall(lastSyncedResourceVersion string, listOptions metav1.ListOptions) bool {
    +	// since we are setting ResourceVersionMatch to metav1.ResourceVersionMatchExact
    +	// we need to make sure that the continuation hasn't been set
    +	// https://github.com/kubernetes/kubernetes/blob/be4afb9ef90b19ccb6f7e595cbdb247e088b2347/staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/validation/validation.go#L38
    +	if len(listOptions.Continue) > 0 {
    +		return false
    +	}
    +
    +	// since we are setting ResourceVersionMatch to metav1.ResourceVersionMatchExact
    +	// we need to make sure that the RV is valid because the validation code forbids RV == "0"
    +	// https://github.com/kubernetes/kubernetes/blob/be4afb9ef90b19ccb6f7e595cbdb247e088b2347/staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion/validation/validation.go#L44
    +	if lastSyncedResourceVersion == "0" {
    +		return false
    +	}
    +
    +	return true
    +}
    +
    +// prepareListCallOptions changes the input list options so that
    +// the list call goes directly to etcd
    +func prepareListCallOptions(lastSyncedResourceVersion string, listOptions metav1.ListOptions, retrievedItemsCount int) metav1.ListOptions {
    +	// this is our legacy case:
    +	//
    +	// the watch cache skips the Limit if the ResourceVersion was set to "0"
    +	// thus, to compare with data retrieved directly from etcd
    +	// we need to skip the limit to for the list call as well.
    +	//
    +	// note that when the number of retrieved items is less than the request limit,
    +	// it means either the watch cache is disabled, or there is not enough data.
    +	// in both cases, we can use the limit because we will be able to compare
    +	// the data with the items retrieved from etcd.
    +	if listOptions.ResourceVersion == "0" && listOptions.Limit > 0 && int64(retrievedItemsCount) > listOptions.Limit {
    +		listOptions.Limit = 0
    +	}
    +
    +	// set the RV and RVM so that we get the snapshot of data
    +	// directly from etcd.
    +	listOptions.ResourceVersion = lastSyncedResourceVersion
    +	listOptions.ResourceVersionMatch = metav1.ResourceVersionMatchExact
    +
    +	return listOptions
    +}
    +
    +type byUID []metav1.Object
    +
    +func (a byUID) Len() int           { return len(a) }
    +func (a byUID) Less(i, j int) bool { return a[i].GetUID() < a[j].GetUID() }
    +func (a byUID) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
    +
    +func toMetaObjectSliceOrDie[T any](s []T) []metav1.Object {
    +	result := make([]metav1.Object, len(s))
    +	for i, v := range s {
    +		m, err := meta.Accessor(v)
    +		if err != nil {
    +			panic(err)
    +		}
    +		result[i] = m
    +	}
    +	return result
    +}
    diff --git a/vendor/k8s.io/client-go/util/consistencydetector/list_data_consistency_detector.go b/vendor/k8s.io/client-go/util/consistencydetector/list_data_consistency_detector.go
    new file mode 100644
    index 000000000000..61b8fe28b9a4
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/util/consistencydetector/list_data_consistency_detector.go
    @@ -0,0 +1,76 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package consistencydetector
    +
    +import (
    +	"context"
    +	"os"
    +	"strconv"
    +
    +	"k8s.io/apimachinery/pkg/api/meta"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +)
    +
    +var dataConsistencyDetectionForListFromCacheEnabled = false
    +
    +func init() {
    +	dataConsistencyDetectionForListFromCacheEnabled, _ = strconv.ParseBool(os.Getenv("KUBE_LIST_FROM_CACHE_INCONSISTENCY_DETECTOR"))
    +}
    +
    +// IsDataConsistencyDetectionForListEnabled returns true when
    +// the KUBE_LIST_FROM_CACHE_INCONSISTENCY_DETECTOR environment variable was set during a binary startup.
    +func IsDataConsistencyDetectionForListEnabled() bool {
    +	return dataConsistencyDetectionForListFromCacheEnabled
    +}
    +
    +// CheckListFromCacheDataConsistencyIfRequested performs a data consistency check only when
    +// the KUBE_LIST_FROM_CACHE_INCONSISTENCY_DETECTOR environment variable was set during a binary startup
    +// for requests that have a high chance of being served from the watch-cache.
    +//
    +// The consistency check is meant to be enforced only in the CI, not in production.
    +// The check ensures that data retrieved by a list api call from the watch-cache
    +// is exactly the same as data received by the list api call from etcd.
    +//
    +// Note that this function will panic when data inconsistency is detected.
    +// This is intentional because we want to catch it in the CI.
    +//
    +// Note that this function doesn't examine the ListOptions to determine
    +// if the original request has hit the cache because it would be challenging
    +// to maintain consistency with the server-side implementation.
    +// For simplicity, we assume that the first request retrieved data from
    +// the cache (even though this might not be true for some requests)
    +// and issue the second call to get data from etcd for comparison.
    +func CheckListFromCacheDataConsistencyIfRequested[T runtime.Object](ctx context.Context, identity string, listItemsFn ListFunc[T], optionsUsedToReceiveList metav1.ListOptions, receivedList runtime.Object) {
    +	if !IsDataConsistencyDetectionForListEnabled() {
    +		return
    +	}
    +	checkListFromCacheDataConsistencyIfRequestedInternal(ctx, identity, listItemsFn, optionsUsedToReceiveList, receivedList)
    +}
    +
    +func checkListFromCacheDataConsistencyIfRequestedInternal[T runtime.Object](ctx context.Context, identity string, listItemsFn ListFunc[T], optionsUsedToReceiveList metav1.ListOptions, receivedList runtime.Object) {
    +	receivedListMeta, err := meta.ListAccessor(receivedList)
    +	if err != nil {
    +		panic(err)
    +	}
    +	rawListItems, err := meta.ExtractListWithAlloc(receivedList)
    +	if err != nil {
    +		panic(err) // this should never happen
    +	}
    +	lastSyncedResourceVersion := receivedListMeta.GetResourceVersion()
    +	CheckDataConsistency(ctx, identity, lastSyncedResourceVersion, listItemsFn, optionsUsedToReceiveList, func() []runtime.Object { return rawListItems })
    +}
    diff --git a/vendor/k8s.io/client-go/util/consistencydetector/watch_list_data_consistency_detector.go b/vendor/k8s.io/client-go/util/consistencydetector/watch_list_data_consistency_detector.go
    new file mode 100644
    index 000000000000..cda5fc205f28
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/util/consistencydetector/watch_list_data_consistency_detector.go
    @@ -0,0 +1,54 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package consistencydetector
    +
    +import (
    +	"context"
    +	"os"
    +	"strconv"
    +
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +)
    +
    +var dataConsistencyDetectionForWatchListEnabled = false
    +
    +func init() {
    +	dataConsistencyDetectionForWatchListEnabled, _ = strconv.ParseBool(os.Getenv("KUBE_WATCHLIST_INCONSISTENCY_DETECTOR"))
    +}
    +
    +// IsDataConsistencyDetectionForWatchListEnabled returns true when
    +// the KUBE_WATCHLIST_INCONSISTENCY_DETECTOR environment variable was set during a binary startup.
    +func IsDataConsistencyDetectionForWatchListEnabled() bool {
    +	return dataConsistencyDetectionForWatchListEnabled
    +}
    +
    +// CheckWatchListFromCacheDataConsistencyIfRequested performs a data consistency check only when
    +// the KUBE_WATCHLIST_INCONSISTENCY_DETECTOR environment variable was set during a binary startup.
    +//
    +// The consistency check is meant to be enforced only in the CI, not in production.
    +// The check ensures that data retrieved by the watch-list api call
    +// is exactly the same as data received by the standard list api call against etcd.
    +//
    +// Note that this function will panic when data inconsistency is detected.
    +// This is intentional because we want to catch it in the CI.
    +func CheckWatchListFromCacheDataConsistencyIfRequested[T runtime.Object](ctx context.Context, identity string, listItemsFn ListFunc[T], optionsUsedToReceiveList metav1.ListOptions, receivedList runtime.Object) {
    +	if !IsDataConsistencyDetectionForWatchListEnabled() {
    +		return
    +	}
    +	checkListFromCacheDataConsistencyIfRequestedInternal(ctx, identity, listItemsFn, optionsUsedToReceiveList, receivedList)
    +}
    diff --git a/vendor/k8s.io/client-go/util/flowcontrol/backoff.go b/vendor/k8s.io/client-go/util/flowcontrol/backoff.go
    index 3ef88dbdb894..899b8e34ef52 100644
    --- a/vendor/k8s.io/client-go/util/flowcontrol/backoff.go
    +++ b/vendor/k8s.io/client-go/util/flowcontrol/backoff.go
    @@ -23,7 +23,6 @@ import (
     
     	"k8s.io/utils/clock"
     	testingclock "k8s.io/utils/clock/testing"
    -	"k8s.io/utils/integer"
     )
     
     type backoffEntry struct {
    @@ -33,7 +32,12 @@ type backoffEntry struct {
     
     type Backoff struct {
     	sync.RWMutex
    -	Clock           clock.Clock
    +	Clock clock.Clock
    +	// HasExpiredFunc controls the logic that determines whether the backoff
    +	// counter should be reset, and when to GC old backoff entries. If nil, the
    +	// default hasExpired function will restart the backoff factor to the
    +	// beginning after observing time has passed at least equal to 2*maxDuration
    +	HasExpiredFunc  func(eventTime time.Time, lastUpdate time.Time, maxDuration time.Duration) bool
     	defaultDuration time.Duration
     	maxDuration     time.Duration
     	perItemBackoff  map[string]*backoffEntry
    @@ -94,13 +98,13 @@ func (p *Backoff) Next(id string, eventTime time.Time) {
     	p.Lock()
     	defer p.Unlock()
     	entry, ok := p.perItemBackoff[id]
    -	if !ok || hasExpired(eventTime, entry.lastUpdate, p.maxDuration) {
    +	if !ok || p.hasExpired(eventTime, entry.lastUpdate, p.maxDuration) {
     		entry = p.initEntryUnsafe(id)
     		entry.backoff += p.jitter(entry.backoff)
     	} else {
     		delay := entry.backoff * 2       // exponential
     		delay += p.jitter(entry.backoff) // add some jitter to the delay
    -		entry.backoff = time.Duration(integer.Int64Min(int64(delay), int64(p.maxDuration)))
    +		entry.backoff = min(delay, p.maxDuration)
     	}
     	entry.lastUpdate = p.Clock.Now()
     }
    @@ -120,7 +124,7 @@ func (p *Backoff) IsInBackOffSince(id string, eventTime time.Time) bool {
     	if !ok {
     		return false
     	}
    -	if hasExpired(eventTime, entry.lastUpdate, p.maxDuration) {
    +	if p.hasExpired(eventTime, entry.lastUpdate, p.maxDuration) {
     		return false
     	}
     	return p.Clock.Since(eventTime) < entry.backoff
    @@ -134,21 +138,21 @@ func (p *Backoff) IsInBackOffSinceUpdate(id string, eventTime time.Time) bool {
     	if !ok {
     		return false
     	}
    -	if hasExpired(eventTime, entry.lastUpdate, p.maxDuration) {
    +	if p.hasExpired(eventTime, entry.lastUpdate, p.maxDuration) {
     		return false
     	}
     	return eventTime.Sub(entry.lastUpdate) < entry.backoff
     }
     
    -// Garbage collect records that have aged past maxDuration. Backoff users are expected
    -// to invoke this periodically.
    +// Garbage collect records that have aged past their expiration, which defaults
    +// to 2*maxDuration (see hasExpired godoc). Backoff users are expected to invoke
    +// this periodically.
     func (p *Backoff) GC() {
     	p.Lock()
     	defer p.Unlock()
     	now := p.Clock.Now()
     	for id, entry := range p.perItemBackoff {
    -		if now.Sub(entry.lastUpdate) > p.maxDuration*2 {
    -			// GC when entry has not been updated for 2*maxDuration
    +		if p.hasExpired(now, entry.lastUpdate, p.maxDuration) {
     			delete(p.perItemBackoff, id)
     		}
     	}
    @@ -175,7 +179,10 @@ func (p *Backoff) jitter(delay time.Duration) time.Duration {
     	return time.Duration(p.rand.Float64() * p.maxJitterFactor * float64(delay))
     }
     
    -// After 2*maxDuration we restart the backoff factor to the beginning
    -func hasExpired(eventTime time.Time, lastUpdate time.Time, maxDuration time.Duration) bool {
    +// Unless an alternate function is provided, after 2*maxDuration we restart the backoff factor to the beginning
    +func (p *Backoff) hasExpired(eventTime time.Time, lastUpdate time.Time, maxDuration time.Duration) bool {
    +	if p.HasExpiredFunc != nil {
    +		return p.HasExpiredFunc(eventTime, lastUpdate, maxDuration)
    +	}
     	return eventTime.Sub(lastUpdate) > maxDuration*2 // consider stable if it's ok for twice the maxDuration
     }
    diff --git a/vendor/k8s.io/client-go/util/watchlist/watch_list.go b/vendor/k8s.io/client-go/util/watchlist/watch_list.go
    new file mode 100644
    index 000000000000..84106458a5fc
    --- /dev/null
    +++ b/vendor/k8s.io/client-go/util/watchlist/watch_list.go
    @@ -0,0 +1,82 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package watchlist
    +
    +import (
    +	metainternalversion "k8s.io/apimachinery/pkg/apis/meta/internalversion"
    +	metainternalversionvalidation "k8s.io/apimachinery/pkg/apis/meta/internalversion/validation"
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/runtime"
    +	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    +	clientfeatures "k8s.io/client-go/features"
    +	"k8s.io/utils/ptr"
    +)
    +
    +var scheme = runtime.NewScheme()
    +
    +func init() {
    +	utilruntime.Must(metainternalversion.AddToScheme(scheme))
    +}
    +
    +// PrepareWatchListOptionsFromListOptions creates a new ListOptions
    +// that can be used for a watch-list request from the given listOptions.
    +//
    +// This function also determines if the given listOptions can be used to form a watch-list request,
    +// which would result in streaming semantically equivalent data from the server.
    +func PrepareWatchListOptionsFromListOptions(listOptions metav1.ListOptions) (metav1.ListOptions, bool, error) {
    +	if !clientfeatures.FeatureGates().Enabled(clientfeatures.WatchListClient) {
    +		return metav1.ListOptions{}, false, nil
    +	}
    +
    +	internalListOptions := &metainternalversion.ListOptions{}
    +	if err := scheme.Convert(&listOptions, internalListOptions, nil); err != nil {
    +		return metav1.ListOptions{}, false, err
    +	}
    +	if errs := metainternalversionvalidation.ValidateListOptions(internalListOptions, true); len(errs) > 0 {
    +		return metav1.ListOptions{}, false, nil
    +	}
    +
    +	watchListOptions := listOptions
    +	// this is our legacy case, the cache ignores LIMIT for
    +	// ResourceVersion == 0 and RVM=unset|NotOlderThan
    +	if listOptions.Limit > 0 && listOptions.ResourceVersion != "0" {
    +		return metav1.ListOptions{}, false, nil
    +	}
    +	watchListOptions.Limit = 0
    +
    +	// to ensure that we can create a watch-list request that returns
    +	// semantically equivalent data for the given listOptions,
    +	// we need to validate that the RVM for the list is supported by watch-list requests.
    +	if listOptions.ResourceVersionMatch == metav1.ResourceVersionMatchExact {
    +		return metav1.ListOptions{}, false, nil
    +	}
    +	watchListOptions.ResourceVersionMatch = metav1.ResourceVersionMatchNotOlderThan
    +
    +	watchListOptions.Watch = true
    +	watchListOptions.AllowWatchBookmarks = true
    +	watchListOptions.SendInitialEvents = ptr.To(true)
    +
    +	internalWatchListOptions := &metainternalversion.ListOptions{}
    +	if err := scheme.Convert(&watchListOptions, internalWatchListOptions, nil); err != nil {
    +		return metav1.ListOptions{}, false, err
    +	}
    +	if errs := metainternalversionvalidation.ValidateListOptions(internalWatchListOptions, true); len(errs) > 0 {
    +		return metav1.ListOptions{}, false, nil
    +	}
    +
    +	return watchListOptions, true, nil
    +}
    diff --git a/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go b/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go
    index efda7c197fc8..1f9567881c76 100644
    --- a/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go
    +++ b/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go
    @@ -24,49 +24,66 @@ import (
     	"golang.org/x/time/rate"
     )
     
    -type RateLimiter interface {
    +// Deprecated: RateLimiter is deprecated, use TypedRateLimiter instead.
    +type RateLimiter TypedRateLimiter[any]
    +
    +type TypedRateLimiter[T comparable] interface {
     	// When gets an item and gets to decide how long that item should wait
    -	When(item interface{}) time.Duration
    +	When(item T) time.Duration
     	// Forget indicates that an item is finished being retried.  Doesn't matter whether it's for failing
     	// or for success, we'll stop tracking it
    -	Forget(item interface{})
    +	Forget(item T)
     	// NumRequeues returns back how many failures the item has had
    -	NumRequeues(item interface{}) int
    +	NumRequeues(item T) int
     }
     
     // DefaultControllerRateLimiter is a no-arg constructor for a default rate limiter for a workqueue.  It has
     // both overall and per-item rate limiting.  The overall is a token bucket and the per-item is exponential
    +//
    +// Deprecated: Use DefaultTypedControllerRateLimiter instead.
     func DefaultControllerRateLimiter() RateLimiter {
    -	return NewMaxOfRateLimiter(
    -		NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second),
    +	return DefaultTypedControllerRateLimiter[any]()
    +}
    +
    +// DefaultTypedControllerRateLimiter is a no-arg constructor for a default rate limiter for a workqueue.  It has
    +// both overall and per-item rate limiting.  The overall is a token bucket and the per-item is exponential
    +func DefaultTypedControllerRateLimiter[T comparable]() TypedRateLimiter[T] {
    +	return NewTypedMaxOfRateLimiter(
    +		NewTypedItemExponentialFailureRateLimiter[T](5*time.Millisecond, 1000*time.Second),
     		// 10 qps, 100 bucket size.  This is only for retry speed and its only the overall factor (not per item)
    -		&BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(10), 100)},
    +		&TypedBucketRateLimiter[T]{Limiter: rate.NewLimiter(rate.Limit(10), 100)},
     	)
     }
     
    -// BucketRateLimiter adapts a standard bucket to the workqueue ratelimiter API
    -type BucketRateLimiter struct {
    +// Deprecated: BucketRateLimiter is deprecated, use TypedBucketRateLimiter instead.
    +type BucketRateLimiter = TypedBucketRateLimiter[any]
    +
    +// TypedBucketRateLimiter adapts a standard bucket to the workqueue ratelimiter API
    +type TypedBucketRateLimiter[T comparable] struct {
     	*rate.Limiter
     }
     
     var _ RateLimiter = &BucketRateLimiter{}
     
    -func (r *BucketRateLimiter) When(item interface{}) time.Duration {
    +func (r *TypedBucketRateLimiter[T]) When(item T) time.Duration {
     	return r.Limiter.Reserve().Delay()
     }
     
    -func (r *BucketRateLimiter) NumRequeues(item interface{}) int {
    +func (r *TypedBucketRateLimiter[T]) NumRequeues(item T) int {
     	return 0
     }
     
    -func (r *BucketRateLimiter) Forget(item interface{}) {
    +func (r *TypedBucketRateLimiter[T]) Forget(item T) {
     }
     
    -// ItemExponentialFailureRateLimiter does a simple baseDelay*2^ limit
    +// Deprecated: ItemExponentialFailureRateLimiter is deprecated, use TypedItemExponentialFailureRateLimiter instead.
    +type ItemExponentialFailureRateLimiter = TypedItemExponentialFailureRateLimiter[any]
    +
    +// TypedItemExponentialFailureRateLimiter does a simple baseDelay*2^ limit
     // dealing with max failures and expiration are up to the caller
    -type ItemExponentialFailureRateLimiter struct {
    +type TypedItemExponentialFailureRateLimiter[T comparable] struct {
     	failuresLock sync.Mutex
    -	failures     map[interface{}]int
    +	failures     map[T]int
     
     	baseDelay time.Duration
     	maxDelay  time.Duration
    @@ -74,19 +91,29 @@ type ItemExponentialFailureRateLimiter struct {
     
     var _ RateLimiter = &ItemExponentialFailureRateLimiter{}
     
    +// Deprecated: NewItemExponentialFailureRateLimiter is deprecated, use NewTypedItemExponentialFailureRateLimiter instead.
     func NewItemExponentialFailureRateLimiter(baseDelay time.Duration, maxDelay time.Duration) RateLimiter {
    -	return &ItemExponentialFailureRateLimiter{
    -		failures:  map[interface{}]int{},
    +	return NewTypedItemExponentialFailureRateLimiter[any](baseDelay, maxDelay)
    +}
    +
    +func NewTypedItemExponentialFailureRateLimiter[T comparable](baseDelay time.Duration, maxDelay time.Duration) TypedRateLimiter[T] {
    +	return &TypedItemExponentialFailureRateLimiter[T]{
    +		failures:  map[T]int{},
     		baseDelay: baseDelay,
     		maxDelay:  maxDelay,
     	}
     }
     
    +// Deprecated: DefaultItemBasedRateLimiter is deprecated, use DefaultTypedItemBasedRateLimiter instead.
     func DefaultItemBasedRateLimiter() RateLimiter {
    -	return NewItemExponentialFailureRateLimiter(time.Millisecond, 1000*time.Second)
    +	return DefaultTypedItemBasedRateLimiter[any]()
     }
     
    -func (r *ItemExponentialFailureRateLimiter) When(item interface{}) time.Duration {
    +func DefaultTypedItemBasedRateLimiter[T comparable]() TypedRateLimiter[T] {
    +	return NewTypedItemExponentialFailureRateLimiter[T](time.Millisecond, 1000*time.Second)
    +}
    +
    +func (r *TypedItemExponentialFailureRateLimiter[T]) When(item T) time.Duration {
     	r.failuresLock.Lock()
     	defer r.failuresLock.Unlock()
     
    @@ -107,14 +134,14 @@ func (r *ItemExponentialFailureRateLimiter) When(item interface{}) time.Duration
     	return calculated
     }
     
    -func (r *ItemExponentialFailureRateLimiter) NumRequeues(item interface{}) int {
    +func (r *TypedItemExponentialFailureRateLimiter[T]) NumRequeues(item T) int {
     	r.failuresLock.Lock()
     	defer r.failuresLock.Unlock()
     
     	return r.failures[item]
     }
     
    -func (r *ItemExponentialFailureRateLimiter) Forget(item interface{}) {
    +func (r *TypedItemExponentialFailureRateLimiter[T]) Forget(item T) {
     	r.failuresLock.Lock()
     	defer r.failuresLock.Unlock()
     
    @@ -122,9 +149,13 @@ func (r *ItemExponentialFailureRateLimiter) Forget(item interface{}) {
     }
     
     // ItemFastSlowRateLimiter does a quick retry for a certain number of attempts, then a slow retry after that
    -type ItemFastSlowRateLimiter struct {
    +// Deprecated: Use TypedItemFastSlowRateLimiter instead.
    +type ItemFastSlowRateLimiter = TypedItemFastSlowRateLimiter[any]
    +
    +// TypedItemFastSlowRateLimiter does a quick retry for a certain number of attempts, then a slow retry after that
    +type TypedItemFastSlowRateLimiter[T comparable] struct {
     	failuresLock sync.Mutex
    -	failures     map[interface{}]int
    +	failures     map[T]int
     
     	maxFastAttempts int
     	fastDelay       time.Duration
    @@ -133,16 +164,21 @@ type ItemFastSlowRateLimiter struct {
     
     var _ RateLimiter = &ItemFastSlowRateLimiter{}
     
    +// Deprecated: NewItemFastSlowRateLimiter is deprecated, use NewTypedItemFastSlowRateLimiter instead.
     func NewItemFastSlowRateLimiter(fastDelay, slowDelay time.Duration, maxFastAttempts int) RateLimiter {
    -	return &ItemFastSlowRateLimiter{
    -		failures:        map[interface{}]int{},
    +	return NewTypedItemFastSlowRateLimiter[any](fastDelay, slowDelay, maxFastAttempts)
    +}
    +
    +func NewTypedItemFastSlowRateLimiter[T comparable](fastDelay, slowDelay time.Duration, maxFastAttempts int) TypedRateLimiter[T] {
    +	return &TypedItemFastSlowRateLimiter[T]{
    +		failures:        map[T]int{},
     		fastDelay:       fastDelay,
     		slowDelay:       slowDelay,
     		maxFastAttempts: maxFastAttempts,
     	}
     }
     
    -func (r *ItemFastSlowRateLimiter) When(item interface{}) time.Duration {
    +func (r *TypedItemFastSlowRateLimiter[T]) When(item T) time.Duration {
     	r.failuresLock.Lock()
     	defer r.failuresLock.Unlock()
     
    @@ -155,14 +191,14 @@ func (r *ItemFastSlowRateLimiter) When(item interface{}) time.Duration {
     	return r.slowDelay
     }
     
    -func (r *ItemFastSlowRateLimiter) NumRequeues(item interface{}) int {
    +func (r *TypedItemFastSlowRateLimiter[T]) NumRequeues(item T) int {
     	r.failuresLock.Lock()
     	defer r.failuresLock.Unlock()
     
     	return r.failures[item]
     }
     
    -func (r *ItemFastSlowRateLimiter) Forget(item interface{}) {
    +func (r *TypedItemFastSlowRateLimiter[T]) Forget(item T) {
     	r.failuresLock.Lock()
     	defer r.failuresLock.Unlock()
     
    @@ -172,11 +208,18 @@ func (r *ItemFastSlowRateLimiter) Forget(item interface{}) {
     // MaxOfRateLimiter calls every RateLimiter and returns the worst case response
     // When used with a token bucket limiter, the burst could be apparently exceeded in cases where particular items
     // were separately delayed a longer time.
    -type MaxOfRateLimiter struct {
    -	limiters []RateLimiter
    +//
    +// Deprecated: Use TypedMaxOfRateLimiter instead.
    +type MaxOfRateLimiter = TypedMaxOfRateLimiter[any]
    +
    +// TypedMaxOfRateLimiter calls every RateLimiter and returns the worst case response
    +// When used with a token bucket limiter, the burst could be apparently exceeded in cases where particular items
    +// were separately delayed a longer time.
    +type TypedMaxOfRateLimiter[T comparable] struct {
    +	limiters []TypedRateLimiter[T]
     }
     
    -func (r *MaxOfRateLimiter) When(item interface{}) time.Duration {
    +func (r *TypedMaxOfRateLimiter[T]) When(item T) time.Duration {
     	ret := time.Duration(0)
     	for _, limiter := range r.limiters {
     		curr := limiter.When(item)
    @@ -188,11 +231,16 @@ func (r *MaxOfRateLimiter) When(item interface{}) time.Duration {
     	return ret
     }
     
    -func NewMaxOfRateLimiter(limiters ...RateLimiter) RateLimiter {
    -	return &MaxOfRateLimiter{limiters: limiters}
    +// Deprecated: NewMaxOfRateLimiter is deprecated, use NewTypedMaxOfRateLimiter instead.
    +func NewMaxOfRateLimiter(limiters ...TypedRateLimiter[any]) RateLimiter {
    +	return NewTypedMaxOfRateLimiter(limiters...)
     }
     
    -func (r *MaxOfRateLimiter) NumRequeues(item interface{}) int {
    +func NewTypedMaxOfRateLimiter[T comparable](limiters ...TypedRateLimiter[T]) TypedRateLimiter[T] {
    +	return &TypedMaxOfRateLimiter[T]{limiters: limiters}
    +}
    +
    +func (r *TypedMaxOfRateLimiter[T]) NumRequeues(item T) int {
     	ret := 0
     	for _, limiter := range r.limiters {
     		curr := limiter.NumRequeues(item)
    @@ -204,23 +252,32 @@ func (r *MaxOfRateLimiter) NumRequeues(item interface{}) int {
     	return ret
     }
     
    -func (r *MaxOfRateLimiter) Forget(item interface{}) {
    +func (r *TypedMaxOfRateLimiter[T]) Forget(item T) {
     	for _, limiter := range r.limiters {
     		limiter.Forget(item)
     	}
     }
     
     // WithMaxWaitRateLimiter have maxDelay which avoids waiting too long
    -type WithMaxWaitRateLimiter struct {
    -	limiter  RateLimiter
    +// Deprecated: Use TypedWithMaxWaitRateLimiter instead.
    +type WithMaxWaitRateLimiter = TypedWithMaxWaitRateLimiter[any]
    +
    +// TypedWithMaxWaitRateLimiter have maxDelay which avoids waiting too long
    +type TypedWithMaxWaitRateLimiter[T comparable] struct {
    +	limiter  TypedRateLimiter[T]
     	maxDelay time.Duration
     }
     
    +// Deprecated: NewWithMaxWaitRateLimiter is deprecated, use NewTypedWithMaxWaitRateLimiter instead.
     func NewWithMaxWaitRateLimiter(limiter RateLimiter, maxDelay time.Duration) RateLimiter {
    -	return &WithMaxWaitRateLimiter{limiter: limiter, maxDelay: maxDelay}
    +	return NewTypedWithMaxWaitRateLimiter[any](limiter, maxDelay)
    +}
    +
    +func NewTypedWithMaxWaitRateLimiter[T comparable](limiter TypedRateLimiter[T], maxDelay time.Duration) TypedRateLimiter[T] {
    +	return &TypedWithMaxWaitRateLimiter[T]{limiter: limiter, maxDelay: maxDelay}
     }
     
    -func (w WithMaxWaitRateLimiter) When(item interface{}) time.Duration {
    +func (w TypedWithMaxWaitRateLimiter[T]) When(item T) time.Duration {
     	delay := w.limiter.When(item)
     	if delay > w.maxDelay {
     		return w.maxDelay
    @@ -229,10 +286,10 @@ func (w WithMaxWaitRateLimiter) When(item interface{}) time.Duration {
     	return delay
     }
     
    -func (w WithMaxWaitRateLimiter) Forget(item interface{}) {
    +func (w TypedWithMaxWaitRateLimiter[T]) Forget(item T) {
     	w.limiter.Forget(item)
     }
     
    -func (w WithMaxWaitRateLimiter) NumRequeues(item interface{}) int {
    +func (w TypedWithMaxWaitRateLimiter[T]) NumRequeues(item T) int {
     	return w.limiter.NumRequeues(item)
     }
    diff --git a/vendor/k8s.io/client-go/util/workqueue/delaying_queue.go b/vendor/k8s.io/client-go/util/workqueue/delaying_queue.go
    index c1df7203021b..e33a6c6929d7 100644
    --- a/vendor/k8s.io/client-go/util/workqueue/delaying_queue.go
    +++ b/vendor/k8s.io/client-go/util/workqueue/delaying_queue.go
    @@ -27,14 +27,25 @@ import (
     
     // DelayingInterface is an Interface that can Add an item at a later time. This makes it easier to
     // requeue items after failures without ending up in a hot-loop.
    -type DelayingInterface interface {
    -	Interface
    +//
    +// Deprecated: use TypedDelayingInterface instead.
    +type DelayingInterface TypedDelayingInterface[any]
    +
    +// TypedDelayingInterface is an Interface that can Add an item at a later time. This makes it easier to
    +// requeue items after failures without ending up in a hot-loop.
    +type TypedDelayingInterface[T comparable] interface {
    +	TypedInterface[T]
     	// AddAfter adds an item to the workqueue after the indicated duration has passed
    -	AddAfter(item interface{}, duration time.Duration)
    +	AddAfter(item T, duration time.Duration)
     }
     
     // DelayingQueueConfig specifies optional configurations to customize a DelayingInterface.
    -type DelayingQueueConfig struct {
    +//
    +// Deprecated: use TypedDelayingQueueConfig instead.
    +type DelayingQueueConfig = TypedDelayingQueueConfig[any]
    +
    +// TypedDelayingQueueConfig specifies optional configurations to customize a DelayingInterface.
    +type TypedDelayingQueueConfig[T comparable] struct {
     	// Name for the queue. If unnamed, the metrics will not be registered.
     	Name string
     
    @@ -46,25 +57,49 @@ type DelayingQueueConfig struct {
     	Clock clock.WithTicker
     
     	// Queue optionally allows injecting custom queue Interface instead of the default one.
    -	Queue Interface
    +	Queue TypedInterface[T]
     }
     
     // NewDelayingQueue constructs a new workqueue with delayed queuing ability.
     // NewDelayingQueue does not emit metrics. For use with a MetricsProvider, please use
     // NewDelayingQueueWithConfig instead and specify a name.
    +//
    +// Deprecated: use NewTypedDelayingQueue instead.
     func NewDelayingQueue() DelayingInterface {
     	return NewDelayingQueueWithConfig(DelayingQueueConfig{})
     }
     
    +// NewTypedDelayingQueue constructs a new workqueue with delayed queuing ability.
    +// NewTypedDelayingQueue does not emit metrics. For use with a MetricsProvider, please use
    +// NewTypedDelayingQueueWithConfig instead and specify a name.
    +func NewTypedDelayingQueue[T comparable]() TypedDelayingInterface[T] {
    +	return NewTypedDelayingQueueWithConfig(TypedDelayingQueueConfig[T]{})
    +}
    +
     // NewDelayingQueueWithConfig constructs a new workqueue with options to
     // customize different properties.
    +//
    +// Deprecated: use NewTypedDelayingQueueWithConfig instead.
     func NewDelayingQueueWithConfig(config DelayingQueueConfig) DelayingInterface {
    +	return NewTypedDelayingQueueWithConfig[any](config)
    +}
    +
    +// TypedNewDelayingQueue exists for backwards compatibility only.
    +//
    +// Deprecated: use NewTypedDelayingQueueWithConfig instead.
    +func TypedNewDelayingQueue[T comparable]() TypedDelayingInterface[T] {
    +	return NewTypedDelayingQueue[T]()
    +}
    +
    +// NewTypedDelayingQueueWithConfig constructs a new workqueue with options to
    +// customize different properties.
    +func NewTypedDelayingQueueWithConfig[T comparable](config TypedDelayingQueueConfig[T]) TypedDelayingInterface[T] {
     	if config.Clock == nil {
     		config.Clock = clock.RealClock{}
     	}
     
     	if config.Queue == nil {
    -		config.Queue = NewWithConfig(QueueConfig{
    +		config.Queue = NewTypedWithConfig[T](TypedQueueConfig[T]{
     			Name:            config.Name,
     			MetricsProvider: config.MetricsProvider,
     			Clock:           config.Clock,
    @@ -100,13 +135,13 @@ func NewDelayingQueueWithCustomClock(clock clock.WithTicker, name string) Delayi
     	})
     }
     
    -func newDelayingQueue(clock clock.WithTicker, q Interface, name string, provider MetricsProvider) *delayingType {
    -	ret := &delayingType{
    -		Interface:       q,
    +func newDelayingQueue[T comparable](clock clock.WithTicker, q TypedInterface[T], name string, provider MetricsProvider) *delayingType[T] {
    +	ret := &delayingType[T]{
    +		TypedInterface:  q,
     		clock:           clock,
     		heartbeat:       clock.NewTicker(maxWait),
     		stopCh:          make(chan struct{}),
    -		waitingForAddCh: make(chan *waitFor, 1000),
    +		waitingForAddCh: make(chan *waitFor[T], 1000),
     		metrics:         newRetryMetrics(name, provider),
     	}
     
    @@ -115,8 +150,8 @@ func newDelayingQueue(clock clock.WithTicker, q Interface, name string, provider
     }
     
     // delayingType wraps an Interface and provides delayed re-enquing
    -type delayingType struct {
    -	Interface
    +type delayingType[T comparable] struct {
    +	TypedInterface[T]
     
     	// clock tracks time for delayed firing
     	clock clock.Clock
    @@ -130,15 +165,15 @@ type delayingType struct {
     	heartbeat clock.Ticker
     
     	// waitingForAddCh is a buffered channel that feeds waitingForAdd
    -	waitingForAddCh chan *waitFor
    +	waitingForAddCh chan *waitFor[T]
     
     	// metrics counts the number of retries
     	metrics retryMetrics
     }
     
     // waitFor holds the data to add and the time it should be added
    -type waitFor struct {
    -	data    t
    +type waitFor[T any] struct {
    +	data    T
     	readyAt time.Time
     	// index in the priority queue (heap)
     	index int
    @@ -152,15 +187,15 @@ type waitFor struct {
     // it has been removed from the queue and placed at index Len()-1 by
     // container/heap. Push adds an item at index Len(), and container/heap
     // percolates it into the correct location.
    -type waitForPriorityQueue []*waitFor
    +type waitForPriorityQueue[T any] []*waitFor[T]
     
    -func (pq waitForPriorityQueue) Len() int {
    +func (pq waitForPriorityQueue[T]) Len() int {
     	return len(pq)
     }
    -func (pq waitForPriorityQueue) Less(i, j int) bool {
    +func (pq waitForPriorityQueue[T]) Less(i, j int) bool {
     	return pq[i].readyAt.Before(pq[j].readyAt)
     }
    -func (pq waitForPriorityQueue) Swap(i, j int) {
    +func (pq waitForPriorityQueue[T]) Swap(i, j int) {
     	pq[i], pq[j] = pq[j], pq[i]
     	pq[i].index = i
     	pq[j].index = j
    @@ -168,16 +203,16 @@ func (pq waitForPriorityQueue) Swap(i, j int) {
     
     // Push adds an item to the queue. Push should not be called directly; instead,
     // use `heap.Push`.
    -func (pq *waitForPriorityQueue) Push(x interface{}) {
    +func (pq *waitForPriorityQueue[T]) Push(x interface{}) {
     	n := len(*pq)
    -	item := x.(*waitFor)
    +	item := x.(*waitFor[T])
     	item.index = n
     	*pq = append(*pq, item)
     }
     
     // Pop removes an item from the queue. Pop should not be called directly;
     // instead, use `heap.Pop`.
    -func (pq *waitForPriorityQueue) Pop() interface{} {
    +func (pq *waitForPriorityQueue[T]) Pop() interface{} {
     	n := len(*pq)
     	item := (*pq)[n-1]
     	item.index = -1
    @@ -187,22 +222,22 @@ func (pq *waitForPriorityQueue) Pop() interface{} {
     
     // Peek returns the item at the beginning of the queue, without removing the
     // item or otherwise mutating the queue. It is safe to call directly.
    -func (pq waitForPriorityQueue) Peek() interface{} {
    +func (pq waitForPriorityQueue[T]) Peek() interface{} {
     	return pq[0]
     }
     
     // ShutDown stops the queue. After the queue drains, the returned shutdown bool
     // on Get() will be true. This method may be invoked more than once.
    -func (q *delayingType) ShutDown() {
    +func (q *delayingType[T]) ShutDown() {
     	q.stopOnce.Do(func() {
    -		q.Interface.ShutDown()
    +		q.TypedInterface.ShutDown()
     		close(q.stopCh)
     		q.heartbeat.Stop()
     	})
     }
     
     // AddAfter adds the given item to the work queue after the given delay
    -func (q *delayingType) AddAfter(item interface{}, duration time.Duration) {
    +func (q *delayingType[T]) AddAfter(item T, duration time.Duration) {
     	// don't add if we're already shutting down
     	if q.ShuttingDown() {
     		return
    @@ -219,7 +254,7 @@ func (q *delayingType) AddAfter(item interface{}, duration time.Duration) {
     	select {
     	case <-q.stopCh:
     		// unblock if ShutDown() is called
    -	case q.waitingForAddCh <- &waitFor{data: item, readyAt: q.clock.Now().Add(duration)}:
    +	case q.waitingForAddCh <- &waitFor[T]{data: item, readyAt: q.clock.Now().Add(duration)}:
     	}
     }
     
    @@ -229,7 +264,7 @@ func (q *delayingType) AddAfter(item interface{}, duration time.Duration) {
     const maxWait = 10 * time.Second
     
     // waitingLoop runs until the workqueue is shutdown and keeps a check on the list of items to be added.
    -func (q *delayingType) waitingLoop() {
    +func (q *delayingType[T]) waitingLoop() {
     	defer utilruntime.HandleCrash()
     
     	// Make a placeholder channel to use when there are no items in our list
    @@ -238,13 +273,13 @@ func (q *delayingType) waitingLoop() {
     	// Make a timer that expires when the item at the head of the waiting queue is ready
     	var nextReadyAtTimer clock.Timer
     
    -	waitingForQueue := &waitForPriorityQueue{}
    +	waitingForQueue := &waitForPriorityQueue[T]{}
     	heap.Init(waitingForQueue)
     
    -	waitingEntryByData := map[t]*waitFor{}
    +	waitingEntryByData := map[T]*waitFor[T]{}
     
     	for {
    -		if q.Interface.ShuttingDown() {
    +		if q.TypedInterface.ShuttingDown() {
     			return
     		}
     
    @@ -252,12 +287,12 @@ func (q *delayingType) waitingLoop() {
     
     		// Add ready entries
     		for waitingForQueue.Len() > 0 {
    -			entry := waitingForQueue.Peek().(*waitFor)
    +			entry := waitingForQueue.Peek().(*waitFor[T])
     			if entry.readyAt.After(now) {
     				break
     			}
     
    -			entry = heap.Pop(waitingForQueue).(*waitFor)
    +			entry = heap.Pop(waitingForQueue).(*waitFor[T])
     			q.Add(entry.data)
     			delete(waitingEntryByData, entry.data)
     		}
    @@ -268,7 +303,7 @@ func (q *delayingType) waitingLoop() {
     			if nextReadyAtTimer != nil {
     				nextReadyAtTimer.Stop()
     			}
    -			entry := waitingForQueue.Peek().(*waitFor)
    +			entry := waitingForQueue.Peek().(*waitFor[T])
     			nextReadyAtTimer = q.clock.NewTimer(entry.readyAt.Sub(now))
     			nextReadyAt = nextReadyAtTimer.C()
     		}
    @@ -308,7 +343,7 @@ func (q *delayingType) waitingLoop() {
     }
     
     // insert adds the entry to the priority queue, or updates the readyAt if it already exists in the queue
    -func insert(q *waitForPriorityQueue, knownEntries map[t]*waitFor, entry *waitFor) {
    +func insert[T comparable](q *waitForPriorityQueue[T], knownEntries map[T]*waitFor[T], entry *waitFor[T]) {
     	// if the entry already exists, update the time only if it would cause the item to be queued sooner
     	existing, exists := knownEntries[entry.data]
     	if exists {
    diff --git a/vendor/k8s.io/client-go/util/workqueue/metrics.go b/vendor/k8s.io/client-go/util/workqueue/metrics.go
    index f012ccc5548a..4400cb65e1e9 100644
    --- a/vendor/k8s.io/client-go/util/workqueue/metrics.go
    +++ b/vendor/k8s.io/client-go/util/workqueue/metrics.go
    @@ -26,10 +26,10 @@ import (
     // This file provides abstractions for setting the provider (e.g., prometheus)
     // of metrics.
     
    -type queueMetrics interface {
    -	add(item t)
    -	get(item t)
    -	done(item t)
    +type queueMetrics[T comparable] interface {
    +	add(item T)
    +	get(item T)
    +	done(item T)
     	updateUnfinishedWork()
     }
     
    @@ -70,7 +70,7 @@ func (noopMetric) Set(float64)     {}
     func (noopMetric) Observe(float64) {}
     
     // defaultQueueMetrics expects the caller to lock before setting any metrics.
    -type defaultQueueMetrics struct {
    +type defaultQueueMetrics[T comparable] struct {
     	clock clock.Clock
     
     	// current depth of a workqueue
    @@ -81,15 +81,15 @@ type defaultQueueMetrics struct {
     	latency HistogramMetric
     	// how long processing an item from a workqueue takes
     	workDuration         HistogramMetric
    -	addTimes             map[t]time.Time
    -	processingStartTimes map[t]time.Time
    +	addTimes             map[T]time.Time
    +	processingStartTimes map[T]time.Time
     
     	// how long have current threads been working?
     	unfinishedWorkSeconds   SettableGaugeMetric
     	longestRunningProcessor SettableGaugeMetric
     }
     
    -func (m *defaultQueueMetrics) add(item t) {
    +func (m *defaultQueueMetrics[T]) add(item T) {
     	if m == nil {
     		return
     	}
    @@ -101,7 +101,7 @@ func (m *defaultQueueMetrics) add(item t) {
     	}
     }
     
    -func (m *defaultQueueMetrics) get(item t) {
    +func (m *defaultQueueMetrics[T]) get(item T) {
     	if m == nil {
     		return
     	}
    @@ -114,7 +114,7 @@ func (m *defaultQueueMetrics) get(item t) {
     	}
     }
     
    -func (m *defaultQueueMetrics) done(item t) {
    +func (m *defaultQueueMetrics[T]) done(item T) {
     	if m == nil {
     		return
     	}
    @@ -125,7 +125,7 @@ func (m *defaultQueueMetrics) done(item t) {
     	}
     }
     
    -func (m *defaultQueueMetrics) updateUnfinishedWork() {
    +func (m *defaultQueueMetrics[T]) updateUnfinishedWork() {
     	// Note that a summary metric would be better for this, but prometheus
     	// doesn't seem to have non-hacky ways to reset the summary metrics.
     	var total float64
    @@ -141,15 +141,15 @@ func (m *defaultQueueMetrics) updateUnfinishedWork() {
     	m.longestRunningProcessor.Set(oldest)
     }
     
    -type noMetrics struct{}
    +type noMetrics[T any] struct{}
     
    -func (noMetrics) add(item t)            {}
    -func (noMetrics) get(item t)            {}
    -func (noMetrics) done(item t)           {}
    -func (noMetrics) updateUnfinishedWork() {}
    +func (noMetrics[T]) add(item T)            {}
    +func (noMetrics[T]) get(item T)            {}
    +func (noMetrics[T]) done(item T)           {}
    +func (noMetrics[T]) updateUnfinishedWork() {}
     
     // Gets the time since the specified start in seconds.
    -func (m *defaultQueueMetrics) sinceInSeconds(start time.Time) float64 {
    +func (m *defaultQueueMetrics[T]) sinceInSeconds(start time.Time) float64 {
     	return m.clock.Since(start).Seconds()
     }
     
    @@ -210,28 +210,15 @@ func (_ noopMetricsProvider) NewRetriesMetric(name string) CounterMetric {
     	return noopMetric{}
     }
     
    -var globalMetricsFactory = queueMetricsFactory{
    -	metricsProvider: noopMetricsProvider{},
    -}
    -
    -type queueMetricsFactory struct {
    -	metricsProvider MetricsProvider
    +var globalMetricsProvider MetricsProvider = noopMetricsProvider{}
     
    -	onlyOnce sync.Once
    -}
    +var setGlobalMetricsProviderOnce sync.Once
     
    -func (f *queueMetricsFactory) setProvider(mp MetricsProvider) {
    -	f.onlyOnce.Do(func() {
    -		f.metricsProvider = mp
    -	})
    -}
    -
    -func (f *queueMetricsFactory) newQueueMetrics(name string, clock clock.Clock) queueMetrics {
    -	mp := f.metricsProvider
    +func newQueueMetrics[T comparable](mp MetricsProvider, name string, clock clock.Clock) queueMetrics[T] {
     	if len(name) == 0 || mp == (noopMetricsProvider{}) {
    -		return noMetrics{}
    +		return noMetrics[T]{}
     	}
    -	return &defaultQueueMetrics{
    +	return &defaultQueueMetrics[T]{
     		clock:                   clock,
     		depth:                   mp.NewDepthMetric(name),
     		adds:                    mp.NewAddsMetric(name),
    @@ -239,8 +226,8 @@ func (f *queueMetricsFactory) newQueueMetrics(name string, clock clock.Clock) qu
     		workDuration:            mp.NewWorkDurationMetric(name),
     		unfinishedWorkSeconds:   mp.NewUnfinishedWorkSecondsMetric(name),
     		longestRunningProcessor: mp.NewLongestRunningProcessorSecondsMetric(name),
    -		addTimes:                map[t]time.Time{},
    -		processingStartTimes:    map[t]time.Time{},
    +		addTimes:                map[T]time.Time{},
    +		processingStartTimes:    map[T]time.Time{},
     	}
     }
     
    @@ -251,7 +238,7 @@ func newRetryMetrics(name string, provider MetricsProvider) retryMetrics {
     	}
     
     	if provider == nil {
    -		provider = globalMetricsFactory.metricsProvider
    +		provider = globalMetricsProvider
     	}
     
     	return &defaultRetryMetrics{
    @@ -262,5 +249,7 @@ func newRetryMetrics(name string, provider MetricsProvider) retryMetrics {
     // SetProvider sets the metrics provider for all subsequently created work
     // queues. Only the first call has an effect.
     func SetProvider(metricsProvider MetricsProvider) {
    -	globalMetricsFactory.setProvider(metricsProvider)
    +	setGlobalMetricsProviderOnce.Do(func() {
    +		globalMetricsProvider = metricsProvider
    +	})
     }
    diff --git a/vendor/k8s.io/client-go/util/workqueue/queue.go b/vendor/k8s.io/client-go/util/workqueue/queue.go
    index a363d1afb4f5..3cec1768a04b 100644
    --- a/vendor/k8s.io/client-go/util/workqueue/queue.go
    +++ b/vendor/k8s.io/client-go/util/workqueue/queue.go
    @@ -23,18 +23,66 @@ import (
     	"k8s.io/utils/clock"
     )
     
    -type Interface interface {
    -	Add(item interface{})
    +// Deprecated: Interface is deprecated, use TypedInterface instead.
    +type Interface TypedInterface[any]
    +
    +type TypedInterface[T comparable] interface {
    +	Add(item T)
     	Len() int
    -	Get() (item interface{}, shutdown bool)
    -	Done(item interface{})
    +	Get() (item T, shutdown bool)
    +	Done(item T)
     	ShutDown()
     	ShutDownWithDrain()
     	ShuttingDown() bool
     }
     
    +// Queue is the underlying storage for items. The functions below are always
    +// called from the same goroutine.
    +type Queue[T comparable] interface {
    +	// Touch can be hooked when an existing item is added again. This may be
    +	// useful if the implementation allows priority change for the given item.
    +	Touch(item T)
    +	// Push adds a new item.
    +	Push(item T)
    +	// Len tells the total number of items.
    +	Len() int
    +	// Pop retrieves an item.
    +	Pop() (item T)
    +}
    +
    +// DefaultQueue is a slice based FIFO queue.
    +func DefaultQueue[T comparable]() Queue[T] {
    +	return new(queue[T])
    +}
    +
    +// queue is a slice which implements Queue.
    +type queue[T comparable] []T
    +
    +func (q *queue[T]) Touch(item T) {}
    +
    +func (q *queue[T]) Push(item T) {
    +	*q = append(*q, item)
    +}
    +
    +func (q *queue[T]) Len() int {
    +	return len(*q)
    +}
    +
    +func (q *queue[T]) Pop() (item T) {
    +	item = (*q)[0]
    +
    +	// The underlying array still exists and reference this object, so the object will not be garbage collected.
    +	(*q)[0] = *new(T)
    +	*q = (*q)[1:]
    +
    +	return item
    +}
    +
     // QueueConfig specifies optional configurations to customize an Interface.
    -type QueueConfig struct {
    +// Deprecated: use TypedQueueConfig instead.
    +type QueueConfig = TypedQueueConfig[any]
    +
    +type TypedQueueConfig[T comparable] struct {
     	// Name for the queue. If unnamed, the metrics will not be registered.
     	Name string
     
    @@ -44,18 +92,38 @@ type QueueConfig struct {
     
     	// Clock ability to inject real or fake clock for testing purposes.
     	Clock clock.WithTicker
    +
    +	// Queue provides the underlying queue to use. It is optional and defaults to slice based FIFO queue.
    +	Queue Queue[T]
     }
     
     // New constructs a new work queue (see the package comment).
    +//
    +// Deprecated: use NewTyped instead.
     func New() *Type {
     	return NewWithConfig(QueueConfig{
     		Name: "",
     	})
     }
     
    +// NewTyped constructs a new work queue (see the package comment).
    +func NewTyped[T comparable]() *Typed[T] {
    +	return NewTypedWithConfig(TypedQueueConfig[T]{
    +		Name: "",
    +	})
    +}
    +
     // NewWithConfig constructs a new workqueue with ability to
     // customize different properties.
    +//
    +// Deprecated: use NewTypedWithConfig instead.
     func NewWithConfig(config QueueConfig) *Type {
    +	return NewTypedWithConfig(config)
    +}
    +
    +// NewTypedWithConfig constructs a new workqueue with ability to
    +// customize different properties.
    +func NewTypedWithConfig[T comparable](config TypedQueueConfig[T]) *Typed[T] {
     	return newQueueWithConfig(config, defaultUnfinishedWorkUpdatePeriod)
     }
     
    @@ -69,32 +137,34 @@ func NewNamed(name string) *Type {
     
     // newQueueWithConfig constructs a new named workqueue
     // with the ability to customize different properties for testing purposes
    -func newQueueWithConfig(config QueueConfig, updatePeriod time.Duration) *Type {
    -	var metricsFactory *queueMetricsFactory
    +func newQueueWithConfig[T comparable](config TypedQueueConfig[T], updatePeriod time.Duration) *Typed[T] {
    +	metricsProvider := globalMetricsProvider
     	if config.MetricsProvider != nil {
    -		metricsFactory = &queueMetricsFactory{
    -			metricsProvider: config.MetricsProvider,
    -		}
    -	} else {
    -		metricsFactory = &globalMetricsFactory
    +		metricsProvider = config.MetricsProvider
     	}
     
     	if config.Clock == nil {
     		config.Clock = clock.RealClock{}
     	}
     
    +	if config.Queue == nil {
    +		config.Queue = DefaultQueue[T]()
    +	}
    +
     	return newQueue(
     		config.Clock,
    -		metricsFactory.newQueueMetrics(config.Name, config.Clock),
    +		config.Queue,
    +		newQueueMetrics[T](metricsProvider, config.Name, config.Clock),
     		updatePeriod,
     	)
     }
     
    -func newQueue(c clock.WithTicker, metrics queueMetrics, updatePeriod time.Duration) *Type {
    -	t := &Type{
    +func newQueue[T comparable](c clock.WithTicker, queue Queue[T], metrics queueMetrics[T], updatePeriod time.Duration) *Typed[T] {
    +	t := &Typed[T]{
     		clock:                      c,
    -		dirty:                      set{},
    -		processing:                 set{},
    +		queue:                      queue,
    +		dirty:                      set[T]{},
    +		processing:                 set[T]{},
     		cond:                       sync.NewCond(&sync.Mutex{}),
     		metrics:                    metrics,
     		unfinishedWorkUpdatePeriod: updatePeriod,
    @@ -102,7 +172,7 @@ func newQueue(c clock.WithTicker, metrics queueMetrics, updatePeriod time.Durati
     
     	// Don't start the goroutine for a type of noMetrics so we don't consume
     	// resources unnecessarily
    -	if _, ok := metrics.(noMetrics); !ok {
    +	if _, ok := metrics.(noMetrics[T]); !ok {
     		go t.updateUnfinishedWorkLoop()
     	}
     
    @@ -112,61 +182,68 @@ func newQueue(c clock.WithTicker, metrics queueMetrics, updatePeriod time.Durati
     const defaultUnfinishedWorkUpdatePeriod = 500 * time.Millisecond
     
     // Type is a work queue (see the package comment).
    -type Type struct {
    +// Deprecated: Use Typed instead.
    +type Type = Typed[any]
    +
    +type Typed[t comparable] struct {
     	// queue defines the order in which we will work on items. Every
     	// element of queue should be in the dirty set and not in the
     	// processing set.
    -	queue []t
    +	queue Queue[t]
     
     	// dirty defines all of the items that need to be processed.
    -	dirty set
    +	dirty set[t]
     
     	// Things that are currently being processed are in the processing set.
     	// These things may be simultaneously in the dirty set. When we finish
     	// processing something and remove it from this set, we'll check if
     	// it's in the dirty set, and if so, add it to the queue.
    -	processing set
    +	processing set[t]
     
     	cond *sync.Cond
     
     	shuttingDown bool
     	drain        bool
     
    -	metrics queueMetrics
    +	metrics queueMetrics[t]
     
     	unfinishedWorkUpdatePeriod time.Duration
     	clock                      clock.WithTicker
     }
     
     type empty struct{}
    -type t interface{}
    -type set map[t]empty
    +type set[t comparable] map[t]empty
     
    -func (s set) has(item t) bool {
    +func (s set[t]) has(item t) bool {
     	_, exists := s[item]
     	return exists
     }
     
    -func (s set) insert(item t) {
    +func (s set[t]) insert(item t) {
     	s[item] = empty{}
     }
     
    -func (s set) delete(item t) {
    +func (s set[t]) delete(item t) {
     	delete(s, item)
     }
     
    -func (s set) len() int {
    +func (s set[t]) len() int {
     	return len(s)
     }
     
     // Add marks item as needing processing.
    -func (q *Type) Add(item interface{}) {
    +func (q *Typed[T]) Add(item T) {
     	q.cond.L.Lock()
     	defer q.cond.L.Unlock()
     	if q.shuttingDown {
     		return
     	}
     	if q.dirty.has(item) {
    +		// the same item is added again before it is processed, call the Touch
    +		// function if the queue cares about it (for e.g, reset its priority)
    +		if !q.processing.has(item) {
    +			q.queue.Touch(item)
    +		}
     		return
     	}
     
    @@ -177,37 +254,34 @@ func (q *Type) Add(item interface{}) {
     		return
     	}
     
    -	q.queue = append(q.queue, item)
    +	q.queue.Push(item)
     	q.cond.Signal()
     }
     
     // Len returns the current queue length, for informational purposes only. You
     // shouldn't e.g. gate a call to Add() or Get() on Len() being a particular
     // value, that can't be synchronized properly.
    -func (q *Type) Len() int {
    +func (q *Typed[T]) Len() int {
     	q.cond.L.Lock()
     	defer q.cond.L.Unlock()
    -	return len(q.queue)
    +	return q.queue.Len()
     }
     
     // Get blocks until it can return an item to be processed. If shutdown = true,
     // the caller should end their goroutine. You must call Done with item when you
     // have finished processing it.
    -func (q *Type) Get() (item interface{}, shutdown bool) {
    +func (q *Typed[T]) Get() (item T, shutdown bool) {
     	q.cond.L.Lock()
     	defer q.cond.L.Unlock()
    -	for len(q.queue) == 0 && !q.shuttingDown {
    +	for q.queue.Len() == 0 && !q.shuttingDown {
     		q.cond.Wait()
     	}
    -	if len(q.queue) == 0 {
    +	if q.queue.Len() == 0 {
     		// We must be shutting down.
    -		return nil, true
    +		return *new(T), true
     	}
     
    -	item = q.queue[0]
    -	// The underlying array still exists and reference this object, so the object will not be garbage collected.
    -	q.queue[0] = nil
    -	q.queue = q.queue[1:]
    +	item = q.queue.Pop()
     
     	q.metrics.get(item)
     
    @@ -220,7 +294,7 @@ func (q *Type) Get() (item interface{}, shutdown bool) {
     // Done marks item as done processing, and if it has been marked as dirty again
     // while it was being processed, it will be re-added to the queue for
     // re-processing.
    -func (q *Type) Done(item interface{}) {
    +func (q *Typed[T]) Done(item T) {
     	q.cond.L.Lock()
     	defer q.cond.L.Unlock()
     
    @@ -228,7 +302,7 @@ func (q *Type) Done(item interface{}) {
     
     	q.processing.delete(item)
     	if q.dirty.has(item) {
    -		q.queue = append(q.queue, item)
    +		q.queue.Push(item)
     		q.cond.Signal()
     	} else if q.processing.len() == 0 {
     		q.cond.Signal()
    @@ -237,7 +311,7 @@ func (q *Type) Done(item interface{}) {
     
     // ShutDown will cause q to ignore all new items added to it and
     // immediately instruct the worker goroutines to exit.
    -func (q *Type) ShutDown() {
    +func (q *Typed[T]) ShutDown() {
     	q.cond.L.Lock()
     	defer q.cond.L.Unlock()
     
    @@ -255,7 +329,7 @@ func (q *Type) ShutDown() {
     // indefinitely. It is, however, safe to call ShutDown after having called
     // ShutDownWithDrain, as to force the queue shut down to terminate immediately
     // without waiting for the drainage.
    -func (q *Type) ShutDownWithDrain() {
    +func (q *Typed[T]) ShutDownWithDrain() {
     	q.cond.L.Lock()
     	defer q.cond.L.Unlock()
     
    @@ -268,14 +342,14 @@ func (q *Type) ShutDownWithDrain() {
     	}
     }
     
    -func (q *Type) ShuttingDown() bool {
    +func (q *Typed[T]) ShuttingDown() bool {
     	q.cond.L.Lock()
     	defer q.cond.L.Unlock()
     
     	return q.shuttingDown
     }
     
    -func (q *Type) updateUnfinishedWorkLoop() {
    +func (q *Typed[T]) updateUnfinishedWorkLoop() {
     	t := q.clock.NewTicker(q.unfinishedWorkUpdatePeriod)
     	defer t.Stop()
     	for range t.C() {
    diff --git a/vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go b/vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go
    index 3e4016fb04fe..fe45afa5a424 100644
    --- a/vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go
    +++ b/vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go
    @@ -19,24 +19,33 @@ package workqueue
     import "k8s.io/utils/clock"
     
     // RateLimitingInterface is an interface that rate limits items being added to the queue.
    -type RateLimitingInterface interface {
    -	DelayingInterface
    +//
    +// Deprecated: Use TypedRateLimitingInterface instead.
    +type RateLimitingInterface TypedRateLimitingInterface[any]
    +
    +// TypedRateLimitingInterface is an interface that rate limits items being added to the queue.
    +type TypedRateLimitingInterface[T comparable] interface {
    +	TypedDelayingInterface[T]
     
     	// AddRateLimited adds an item to the workqueue after the rate limiter says it's ok
    -	AddRateLimited(item interface{})
    +	AddRateLimited(item T)
     
     	// Forget indicates that an item is finished being retried.  Doesn't matter whether it's for perm failing
     	// or for success, we'll stop the rate limiter from tracking it.  This only clears the `rateLimiter`, you
     	// still have to call `Done` on the queue.
    -	Forget(item interface{})
    +	Forget(item T)
     
     	// NumRequeues returns back how many times the item was requeued
    -	NumRequeues(item interface{}) int
    +	NumRequeues(item T) int
     }
     
     // RateLimitingQueueConfig specifies optional configurations to customize a RateLimitingInterface.
    +//
    +// Deprecated: Use TypedRateLimitingQueueConfig instead.
    +type RateLimitingQueueConfig = TypedRateLimitingQueueConfig[any]
     
    -type RateLimitingQueueConfig struct {
    +// TypedRateLimitingQueueConfig specifies optional configurations to customize a TypedRateLimitingInterface.
    +type TypedRateLimitingQueueConfig[T comparable] struct {
     	// Name for the queue. If unnamed, the metrics will not be registered.
     	Name string
     
    @@ -48,36 +57,55 @@ type RateLimitingQueueConfig struct {
     	Clock clock.WithTicker
     
     	// DelayingQueue optionally allows injecting custom delaying queue DelayingInterface instead of the default one.
    -	DelayingQueue DelayingInterface
    +	DelayingQueue TypedDelayingInterface[T]
     }
     
     // NewRateLimitingQueue constructs a new workqueue with rateLimited queuing ability
     // Remember to call Forget!  If you don't, you may end up tracking failures forever.
     // NewRateLimitingQueue does not emit metrics. For use with a MetricsProvider, please use
     // NewRateLimitingQueueWithConfig instead and specify a name.
    +//
    +// Deprecated: Use NewTypedRateLimitingQueue instead.
     func NewRateLimitingQueue(rateLimiter RateLimiter) RateLimitingInterface {
     	return NewRateLimitingQueueWithConfig(rateLimiter, RateLimitingQueueConfig{})
     }
     
    +// NewTypedRateLimitingQueue constructs a new workqueue with rateLimited queuing ability
    +// Remember to call Forget!  If you don't, you may end up tracking failures forever.
    +// NewTypedRateLimitingQueue does not emit metrics. For use with a MetricsProvider, please use
    +// NewTypedRateLimitingQueueWithConfig instead and specify a name.
    +func NewTypedRateLimitingQueue[T comparable](rateLimiter TypedRateLimiter[T]) TypedRateLimitingInterface[T] {
    +	return NewTypedRateLimitingQueueWithConfig(rateLimiter, TypedRateLimitingQueueConfig[T]{})
    +}
    +
     // NewRateLimitingQueueWithConfig constructs a new workqueue with rateLimited queuing ability
     // with options to customize different properties.
     // Remember to call Forget!  If you don't, you may end up tracking failures forever.
    +//
    +// Deprecated: Use NewTypedRateLimitingQueueWithConfig instead.
     func NewRateLimitingQueueWithConfig(rateLimiter RateLimiter, config RateLimitingQueueConfig) RateLimitingInterface {
    +	return NewTypedRateLimitingQueueWithConfig(rateLimiter, config)
    +}
    +
    +// NewTypedRateLimitingQueueWithConfig constructs a new workqueue with rateLimited queuing ability
    +// with options to customize different properties.
    +// Remember to call Forget!  If you don't, you may end up tracking failures forever.
    +func NewTypedRateLimitingQueueWithConfig[T comparable](rateLimiter TypedRateLimiter[T], config TypedRateLimitingQueueConfig[T]) TypedRateLimitingInterface[T] {
     	if config.Clock == nil {
     		config.Clock = clock.RealClock{}
     	}
     
     	if config.DelayingQueue == nil {
    -		config.DelayingQueue = NewDelayingQueueWithConfig(DelayingQueueConfig{
    +		config.DelayingQueue = NewTypedDelayingQueueWithConfig(TypedDelayingQueueConfig[T]{
     			Name:            config.Name,
     			MetricsProvider: config.MetricsProvider,
     			Clock:           config.Clock,
     		})
     	}
     
    -	return &rateLimitingType{
    -		DelayingInterface: config.DelayingQueue,
    -		rateLimiter:       rateLimiter,
    +	return &rateLimitingType[T]{
    +		TypedDelayingInterface: config.DelayingQueue,
    +		rateLimiter:            rateLimiter,
     	}
     }
     
    @@ -99,21 +127,21 @@ func NewRateLimitingQueueWithDelayingInterface(di DelayingInterface, rateLimiter
     }
     
     // rateLimitingType wraps an Interface and provides rateLimited re-enquing
    -type rateLimitingType struct {
    -	DelayingInterface
    +type rateLimitingType[T comparable] struct {
    +	TypedDelayingInterface[T]
     
    -	rateLimiter RateLimiter
    +	rateLimiter TypedRateLimiter[T]
     }
     
     // AddRateLimited AddAfter's the item based on the time when the rate limiter says it's ok
    -func (q *rateLimitingType) AddRateLimited(item interface{}) {
    -	q.DelayingInterface.AddAfter(item, q.rateLimiter.When(item))
    +func (q *rateLimitingType[T]) AddRateLimited(item T) {
    +	q.TypedDelayingInterface.AddAfter(item, q.rateLimiter.When(item))
     }
     
    -func (q *rateLimitingType) NumRequeues(item interface{}) int {
    +func (q *rateLimitingType[T]) NumRequeues(item T) int {
     	return q.rateLimiter.NumRequeues(item)
     }
     
    -func (q *rateLimitingType) Forget(item interface{}) {
    +func (q *rateLimitingType[T]) Forget(item T) {
     	q.rateLimiter.Forget(item)
     }
    diff --git a/vendor/k8s.io/code-generator/README.md b/vendor/k8s.io/code-generator/README.md
    index 122868a5c63e..b0055265ec30 100644
    --- a/vendor/k8s.io/code-generator/README.md
    +++ b/vendor/k8s.io/code-generator/README.md
    @@ -14,6 +14,10 @@ These code-generators can be used
     - The example [sample controller](https://github.com/kubernetes/sample-controller) shows a code example of a controller that uses the clients, listers and informers generated by this library.
     - The article [Kubernetes Deep Dive: Code Generation for CustomResources](https://cloud.redhat.com/blog/kubernetes-deep-dive-code-generation-customresources/) gives a step by step instruction on how to use this library.
     
    +## Usage
    +
    +The examples above are dated. The current recommended script to use is [kube_codegen.sh](kube_codegen.sh).
    +
     ## Compatibility
     
     HEAD of this repo will match HEAD of k8s.io/apiserver, k8s.io/apimachinery, and k8s.io/client-go.
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/args/args.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/args/args.go
    index 78f364841f22..36aa7a3710f4 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/args/args.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/args/args.go
    @@ -18,17 +18,18 @@ package args
     
     import (
     	"fmt"
    -	"path"
     
     	"github.com/spf13/pflag"
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/types"
    -
    -	codegenutil "k8s.io/code-generator/pkg/util"
    +	"k8s.io/gengo/v2/types"
     )
     
    -// CustomArgs is a wrapper for arguments to applyconfiguration-gen.
    -type CustomArgs struct {
    +// Args is a wrapper for arguments to applyconfiguration-gen.
    +type Args struct {
    +	OutputDir string // must be a directory path
    +	OutputPkg string // must be a Go import-path
    +
    +	GoHeaderFile string
    +
     	// ExternalApplyConfigurations provides the locations of externally generated
     	// apply configuration types for types referenced by the go structs provided as input.
     	// Locations are provided as a comma separated list of .:
    @@ -44,38 +45,44 @@ type CustomArgs struct {
     	OpenAPISchemaFilePath string
     }
     
    -// NewDefaults returns default arguments for the generator.
    -func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
    -	genericArgs := args.Default().WithoutDefaultFlagParsing()
    -	customArgs := &CustomArgs{
    +// New returns default arguments for the generator.
    +func New() *Args {
    +	return &Args{
     		ExternalApplyConfigurations: map[types.Name]string{
    -			// Always include TypeMeta and ObjectMeta. They are sufficient for the vast majority of use cases.
    -			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "TypeMeta"}:       "k8s.io/client-go/applyconfigurations/meta/v1",
    -			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ObjectMeta"}:     "k8s.io/client-go/applyconfigurations/meta/v1",
    -			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "OwnerReference"}: "k8s.io/client-go/applyconfigurations/meta/v1",
    +			// Always include the applyconfigurations we've generated in client-go. They are sufficient for the vast majority of use cases.
    +			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "Condition"}:                "k8s.io/client-go/applyconfigurations/meta/v1",
    +			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "DeleteOptions"}:            "k8s.io/client-go/applyconfigurations/meta/v1",
    +			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "LabelSelector"}:            "k8s.io/client-go/applyconfigurations/meta/v1",
    +			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "LabelSelectorRequirement"}: "k8s.io/client-go/applyconfigurations/meta/v1",
    +			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ManagedFieldsEntry"}:       "k8s.io/client-go/applyconfigurations/meta/v1",
    +			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ObjectMeta"}:               "k8s.io/client-go/applyconfigurations/meta/v1",
    +			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "OwnerReference"}:           "k8s.io/client-go/applyconfigurations/meta/v1",
    +			{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "TypeMeta"}:                 "k8s.io/client-go/applyconfigurations/meta/v1",
     		},
     	}
    -	genericArgs.CustomArgs = customArgs
    -
    -	if pkg := codegenutil.CurrentPackage(); len(pkg) != 0 {
    -		genericArgs.OutputPackagePath = path.Join(pkg, "pkg/client/applyconfigurations")
    -	}
    -
    -	return genericArgs, customArgs
     }
     
    -func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet, inputBase string) {
    -	pflag.Var(NewExternalApplyConfigurationValue(&ca.ExternalApplyConfigurations, nil), "external-applyconfigurations",
    +func (args *Args) AddFlags(fs *pflag.FlagSet, inputBase string) {
    +	fs.StringVar(&args.OutputDir, "output-dir", "",
    +		"the base directory under which to generate results")
    +	fs.StringVar(&args.OutputPkg, "output-pkg", args.OutputPkg,
    +		"the Go import-path of the generated results")
    +	fs.StringVar(&args.GoHeaderFile, "go-header-file", "",
    +		"the path to a file containing boilerplate header text; the string \"YEAR\" will be replaced with the current 4-digit year")
    +	fs.Var(NewExternalApplyConfigurationValue(&args.ExternalApplyConfigurations, nil), "external-applyconfigurations",
     		"list of comma separated external apply configurations locations in .: form."+
     			"For example: k8s.io/api/apps/v1.Deployment:k8s.io/client-go/applyconfigurations/apps/v1")
    -	pflag.StringVar(&ca.OpenAPISchemaFilePath, "openapi-schema", "",
    +	fs.StringVar(&args.OpenAPISchemaFilePath, "openapi-schema", "",
     		"path to the openapi schema containing all the types that apply configurations will be generated for")
     }
     
     // Validate checks the given arguments.
    -func Validate(genericArgs *args.GeneratorArgs) error {
    -	if len(genericArgs.OutputPackagePath) == 0 {
    -		return fmt.Errorf("output package cannot be empty")
    +func (args *Args) Validate() error {
    +	if len(args.OutputDir) == 0 {
    +		return fmt.Errorf("--output-dir must be specified")
    +	}
    +	if len(args.OutputPkg) == 0 {
    +		return fmt.Errorf("--output-pkg must be specified")
     	}
     	return nil
     }
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/args/externaltypes.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/args/externaltypes.go
    index 0785fbea0e37..fd9b6098992a 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/args/externaltypes.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/args/externaltypes.go
    @@ -23,7 +23,7 @@ import (
     	"fmt"
     	"strings"
     
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/types"
     )
     
     type externalApplyConfigurationValue struct {
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/applyconfiguration.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/applyconfiguration.go
    index 8e02bb233bc4..9b6aa7cec9f7 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/applyconfiguration.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/applyconfiguration.go
    @@ -18,11 +18,13 @@ package generators
     
     import (
     	"io"
    +	"path"
    +	"slices"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     	"k8s.io/klog/v2"
     
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
    @@ -31,14 +33,15 @@ import (
     
     // applyConfigurationGenerator produces apply configurations for a given GroupVersion and type.
     type applyConfigurationGenerator struct {
    -	generator.DefaultGen
    -	outputPackage string
    -	localPackage  types.Name
    -	groupVersion  clientgentypes.GroupVersion
    -	applyConfig   applyConfig
    -	imports       namer.ImportTracker
    -	refGraph      refGraph
    -	openAPIType   *string // if absent, extraction function cannot be generated
    +	generator.GoGenerator
    +	// outPkgBase is the base package, under which the "internal" and GV-specific subdirs live
    +	outPkgBase   string // must be a Go import-path
    +	localPkg     string
    +	groupVersion clientgentypes.GroupVersion
    +	applyConfig  applyConfig
    +	imports      namer.ImportTracker
    +	refGraph     refGraph
    +	openAPIType  *string // if absent, extraction function cannot be generated
     }
     
     var _ generator.Generator = &applyConfigurationGenerator{}
    @@ -49,7 +52,7 @@ func (g *applyConfigurationGenerator) Filter(_ *generator.Context, t *types.Type
     
     func (g *applyConfigurationGenerator) Namers(*generator.Context) namer.NameSystems {
     	return namer.NameSystems{
    -		"raw":          namer.NewRawNamer(g.localPackage.Package, g.imports),
    +		"raw":          namer.NewRawNamer(g.localPkg, g.imports),
     		"singularKind": namer.NewPublicNamer(0),
     	}
     }
    @@ -90,7 +93,7 @@ func (g *applyConfigurationGenerator) GenerateType(c *generator.Context, t *type
     		Tags:        genclientTags(t),
     		APIVersion:  g.groupVersion.ToAPIVersion(),
     		ExtractInto: extractInto,
    -		ParserFunc:  types.Ref(g.outputPackage+"/internal", "Parser"),
    +		ParserFunc:  types.Ref(path.Join(g.outPkgBase, "internal"), "Parser"),
     		OpenAPIType: g.openAPIType,
     	}
     
    @@ -112,7 +115,8 @@ func (g *applyConfigurationGenerator) GenerateType(c *generator.Context, t *type
     			sw.Do(constructor, typeParams)
     		}
     	}
    -	g.generateWithFuncs(t, typeParams, sw, nil)
    +	g.generateWithFuncs(t, typeParams, sw, nil, &[]string{})
    +	g.generateGetters(t, typeParams, sw, nil)
     	return sw.Error()
     }
     
    @@ -139,7 +143,42 @@ func blocklisted(t *types.Type, member types.Member) bool {
     	return false
     }
     
    -func (g *applyConfigurationGenerator) generateWithFuncs(t *types.Type, typeParams TypeParams, sw *generator.SnippetWriter, embed *memberParams) {
    +func needsGetter(t *types.Type, member types.Member) bool {
    +	// Needed when applying an ApplyConfiguration
    +	return objectMeta.Name == t.Name && member.Name == "Name"
    +}
    +
    +func (g *applyConfigurationGenerator) generateGetters(t *types.Type, typeParams TypeParams, sw *generator.SnippetWriter, embed *memberParams) {
    +	for _, member := range t.Members {
    +		if blocklisted(t, member) {
    +			continue
    +		}
    +		memberType := g.refGraph.applyConfigForType(member.Type)
    +		if g.refGraph.isApplyConfig(member.Type) {
    +			memberType = &types.Type{Kind: types.Pointer, Elem: memberType}
    +		}
    +		if jsonTags, ok := lookupJSONTags(member); ok {
    +			memberParams := memberParams{
    +				TypeParams: typeParams,
    +				Member:     member,
    +				MemberType: memberType,
    +				JSONTags:   jsonTags,
    +				EmbeddedIn: embed,
    +			}
    +			if memberParams.Member.Embedded {
    +				g.generateGetters(member.Type, typeParams, sw, &memberParams)
    +				continue
    +			}
    +
    +			if needsGetter(t, member) {
    +				g.generateMemberGetter(sw, memberParams)
    +			}
    +		}
    +	}
    +}
    +
    +func (g *applyConfigurationGenerator) generateWithFuncs(t *types.Type, typeParams TypeParams, sw *generator.SnippetWriter, embed *memberParams,
    +	generated *[]string) {
     	for _, member := range t.Members {
     		if blocklisted(t, member) {
     			continue
    @@ -149,6 +188,11 @@ func (g *applyConfigurationGenerator) generateWithFuncs(t *types.Type, typeParam
     			memberType = &types.Type{Kind: types.Pointer, Elem: memberType}
     		}
     		if jsonTags, ok := lookupJSONTags(member); ok {
    +			if slices.Contains(*generated, member.Name) {
    +				klog.V(5).Infof("With%s already generated on %s, skipping\n", member.Name, t.Name)
    +				continue
    +			}
    +			*generated = append(*generated, member.Name)
     			memberParams := memberParams{
     				TypeParams: typeParams,
     				Member:     member,
    @@ -157,7 +201,7 @@ func (g *applyConfigurationGenerator) generateWithFuncs(t *types.Type, typeParam
     				EmbeddedIn: embed,
     			}
     			if memberParams.Member.Embedded {
    -				g.generateWithFuncs(member.Type, typeParams, sw, &memberParams)
    +				g.generateWithFuncs(member.Type, typeParams, sw, &memberParams, generated)
     				if !jsonTags.inline {
     					// non-inlined embeds are nillable and need a "ensure exists" utility function
     					sw.Do(ensureEmbedExists, memberParams)
    @@ -193,7 +237,7 @@ func (g *applyConfigurationGenerator) generateWithFuncs(t *types.Type, typeParam
     }
     
     func (g *applyConfigurationGenerator) generateStruct(sw *generator.SnippetWriter, typeParams TypeParams) {
    -	sw.Do("// $.ApplyConfig.ApplyConfiguration|public$ represents an declarative configuration of the $.ApplyConfig.Type|public$ type for use\n", typeParams)
    +	sw.Do("// $.ApplyConfig.ApplyConfiguration|public$ represents a declarative configuration of the $.ApplyConfig.Type|public$ type for use\n", typeParams)
     	sw.Do("// with apply.\n", typeParams)
     	sw.Do("type $.ApplyConfig.ApplyConfiguration|public$ struct {\n", typeParams)
     	for _, structMember := range typeParams.Struct.Members {
    @@ -242,16 +286,28 @@ func (g *applyConfigurationGenerator) generateMemberWith(sw *generator.SnippetWr
     	sw.Do("// and returns the receiver, so that objects can be built by chaining \"With\" function invocations.\n", memberParams)
     	sw.Do("// If called multiple times, the $.Member.Name$ field is set to the value of the last call.\n", memberParams)
     	sw.Do("func (b *$.ApplyConfig.ApplyConfiguration|public$) With$.Member.Name$(value $.MemberType|raw$) *$.ApplyConfig.ApplyConfiguration|public$ {\n", memberParams)
    -	g.ensureEnbedExistsIfApplicable(sw, memberParams)
    +	g.ensureEmbedExistsIfApplicable(sw, memberParams)
     	if g.refGraph.isApplyConfig(memberParams.Member.Type) || isNillable(memberParams.Member.Type) {
    -		sw.Do("b.$.Member.Name$ = value\n", memberParams)
    +		sw.Do("b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$ = value\n", memberParams)
     	} else {
    -		sw.Do("b.$.Member.Name$ = &value\n", memberParams)
    +		sw.Do("b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$ = &value\n", memberParams)
     	}
     	sw.Do("  return b\n", memberParams)
     	sw.Do("}\n", memberParams)
     }
     
    +func (g *applyConfigurationGenerator) generateMemberGetter(sw *generator.SnippetWriter, memberParams memberParams) {
    +	sw.Do("// Get$.Member.Name$ retrieves the value of the $.Member.Name$ field in the declarative configuration.\n", memberParams)
    +	if g.refGraph.isApplyConfig(memberParams.Member.Type) || isNillable(memberParams.Member.Type) {
    +		sw.Do("func (b *$.ApplyConfig.ApplyConfiguration|public$) Get$.Member.Name$() $.MemberType|raw$ {\n", memberParams)
    +	} else {
    +		sw.Do("func (b *$.ApplyConfig.ApplyConfiguration|public$) Get$.Member.Name$() *$.MemberType|raw$ {\n", memberParams)
    +	}
    +	g.ensureEmbedExistsIfApplicable(sw, memberParams)
    +	sw.Do("  return b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$\n", memberParams)
    +	sw.Do("}\n", memberParams)
    +}
    +
     func (g *applyConfigurationGenerator) generateMemberWithForSlice(sw *generator.SnippetWriter, member types.Member, memberParams memberParams) {
     	memberIsPointerToSlice := member.Type.Kind == types.Pointer
     	if memberIsPointerToSlice {
    @@ -262,7 +318,7 @@ func (g *applyConfigurationGenerator) generateMemberWithForSlice(sw *generator.S
     	sw.Do("// and returns the receiver, so that objects can be build by chaining \"With\" function invocations.\n", memberParams)
     	sw.Do("// If called multiple times, values provided by each call will be appended to the $.Member.Name$ field.\n", memberParams)
     	sw.Do("func (b *$.ApplyConfig.ApplyConfiguration|public$) With$.Member.Name$(values ...$.ArgType|raw$) *$.ApplyConfig.ApplyConfiguration|public$ {\n", memberParams)
    -	g.ensureEnbedExistsIfApplicable(sw, memberParams)
    +	g.ensureEmbedExistsIfApplicable(sw, memberParams)
     
     	if memberIsPointerToSlice {
     		sw.Do("b.ensure$.MemberType.Elem|public$Exists()\n", memberParams)
    @@ -275,15 +331,15 @@ func (g *applyConfigurationGenerator) generateMemberWithForSlice(sw *generator.S
     		sw.Do("}\n", memberParams)
     
     		if memberIsPointerToSlice {
    -			sw.Do("*b.$.Member.Name$ = append(*b.$.Member.Name$, *values[i])\n", memberParams)
    +			sw.Do("*b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$ = append(*b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$, *values[i])\n", memberParams)
     		} else {
    -			sw.Do("b.$.Member.Name$ = append(b.$.Member.Name$, *values[i])\n", memberParams)
    +			sw.Do("b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$ = append(b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$, *values[i])\n", memberParams)
     		}
     	} else {
     		if memberIsPointerToSlice {
    -			sw.Do("*b.$.Member.Name$ = append(*b.$.Member.Name$, values[i])\n", memberParams)
    +			sw.Do("*b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$ = append(*b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$, values[i])\n", memberParams)
     		} else {
    -			sw.Do("b.$.Member.Name$ = append(b.$.Member.Name$, values[i])\n", memberParams)
    +			sw.Do("b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$ = append(b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$, values[i])\n", memberParams)
     		}
     	}
     	sw.Do("  }\n", memberParams)
    @@ -297,18 +353,18 @@ func (g *applyConfigurationGenerator) generateMemberWithForMap(sw *generator.Sni
     	sw.Do("// If called multiple times, the entries provided by each call will be put on the $.Member.Name$ field,\n", memberParams)
     	sw.Do("// overwriting an existing map entries in $.Member.Name$ field with the same key.\n", memberParams)
     	sw.Do("func (b *$.ApplyConfig.ApplyConfiguration|public$) With$.Member.Name$(entries $.MemberType|raw$) *$.ApplyConfig.ApplyConfiguration|public$ {\n", memberParams)
    -	g.ensureEnbedExistsIfApplicable(sw, memberParams)
    -	sw.Do("  if b.$.Member.Name$ == nil && len(entries) > 0 {\n", memberParams)
    -	sw.Do("    b.$.Member.Name$ = make($.MemberType|raw$, len(entries))\n", memberParams)
    +	g.ensureEmbedExistsIfApplicable(sw, memberParams)
    +	sw.Do("  if b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$ == nil && len(entries) > 0 {\n", memberParams)
    +	sw.Do("    b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$ = make($.MemberType|raw$, len(entries))\n", memberParams)
     	sw.Do("  }\n", memberParams)
     	sw.Do("  for k, v := range entries {\n", memberParams)
    -	sw.Do("    b.$.Member.Name$[k] = v\n", memberParams)
    +	sw.Do("    b$if ne .EmbeddedIn nil$.$.EmbeddedIn.MemberType.Elem.Name.Name$$end$.$.Member.Name$[k] = v\n", memberParams)
     	sw.Do("  }\n", memberParams)
     	sw.Do("  return b\n", memberParams)
     	sw.Do("}\n", memberParams)
     }
     
    -func (g *applyConfigurationGenerator) ensureEnbedExistsIfApplicable(sw *generator.SnippetWriter, memberParams memberParams) {
    +func (g *applyConfigurationGenerator) ensureEmbedExistsIfApplicable(sw *generator.SnippetWriter, memberParams memberParams) {
     	// Embedded types that are not inlined must be nillable so they are not included in the apply configuration
     	// when all their fields are omitted.
     	if memberParams.EmbeddedIn != nil && !memberParams.EmbeddedIn.JSONTags.inline {
    @@ -333,8 +389,8 @@ func (b *$.ApplyConfig.ApplyConfiguration|public$) ensure$.MemberType.Elem|publi
     `
     
     var clientgenTypeConstructorNamespaced = `
    -// $.ApplyConfig.Type|public$ constructs an declarative configuration of the $.ApplyConfig.Type|public$ type for use with
    -// apply. 
    +// $.ApplyConfig.Type|public$ constructs a declarative configuration of the $.ApplyConfig.Type|public$ type for use with
    +// apply.
     func $.ApplyConfig.Type|public$(name, namespace string) *$.ApplyConfig.ApplyConfiguration|public$ {
       b := &$.ApplyConfig.ApplyConfiguration|public${}
       b.WithName(name)
    @@ -346,7 +402,7 @@ func $.ApplyConfig.Type|public$(name, namespace string) *$.ApplyConfig.ApplyConf
     `
     
     var clientgenTypeConstructorNonNamespaced = `
    -// $.ApplyConfig.Type|public$ constructs an declarative configuration of the $.ApplyConfig.Type|public$ type for use with
    +// $.ApplyConfig.Type|public$ constructs a declarative configuration of the $.ApplyConfig.Type|public$ type for use with
     // apply.
     func $.ApplyConfig.Type|public$(name string) *$.ApplyConfig.ApplyConfiguration|public$ {
       b := &$.ApplyConfig.ApplyConfiguration|public${}
    @@ -358,7 +414,7 @@ func $.ApplyConfig.Type|public$(name string) *$.ApplyConfig.ApplyConfiguration|p
     `
     
     var constructorWithTypeMeta = `
    -// $.ApplyConfig.ApplyConfiguration|public$ constructs an declarative configuration of the $.ApplyConfig.Type|public$ type for use with
    +// $.ApplyConfig.ApplyConfiguration|public$ constructs a declarative configuration of the $.ApplyConfig.Type|public$ type for use with
     // apply.
     func $.ApplyConfig.Type|public$() *$.ApplyConfig.ApplyConfiguration|public$ {
       b := &$.ApplyConfig.ApplyConfiguration|public${}
    @@ -369,7 +425,7 @@ func $.ApplyConfig.Type|public$() *$.ApplyConfig.ApplyConfiguration|public$ {
     `
     
     var constructor = `
    -// $.ApplyConfig.ApplyConfiguration|public$ constructs an declarative configuration of the $.ApplyConfig.Type|public$ type for use with
    +// $.ApplyConfig.ApplyConfiguration|public$ constructs a declarative configuration of the $.ApplyConfig.Type|public$ type for use with
     // apply.
     func $.ApplyConfig.Type|public$() *$.ApplyConfig.ApplyConfiguration|public$ {
       return &$.ApplyConfig.ApplyConfiguration|public${}
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/internal.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/internal.go
    index 2871b9d7f5ef..3ccc7ce831f7 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/internal.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/internal.go
    @@ -19,18 +19,16 @@ package generators
     import (
     	"io"
     
    -	"gopkg.in/yaml.v2"
    -
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     	"k8s.io/kube-openapi/pkg/schemaconv"
    -
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	yaml "sigs.k8s.io/yaml/goyaml.v2"
     )
     
     // utilGenerator generates the ForKind() utility function.
     type internalGenerator struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage string
     	imports       namer.ImportTracker
     	typeModels    *typeModels
    @@ -71,11 +69,12 @@ func (g *internalGenerator) GenerateType(c *generator.Context, _ *types.Type, w
     		return err
     	}
     	sw.Do(schemaBlock, map[string]interface{}{
    -		"schemaYAML":    string(schemaYAML),
    -		"smdParser":     smdParser,
    -		"smdNewParser":  smdNewParser,
    -		"yamlObject":    yamlObject,
    -		"yamlUnmarshal": yamlUnmarshal,
    +		"schemaYAML":   string(schemaYAML),
    +		"smdParser":    smdParser,
    +		"smdNewParser": smdNewParser,
    +		"fmtSprintf":   fmtSprintf,
    +		"syncOnce":     syncOnce,
    +		"yamlObject":   yamlObject,
     	})
     
     	return sw.Error()
    @@ -87,13 +86,13 @@ func Parser() *{{.smdParser|raw}} {
     		var err error
     		parser, err = {{.smdNewParser|raw}}(schemaYAML)
     		if err != nil {
    -			panic(fmt.Sprintf("Failed to parse schema: %v", err))
    +			panic({{.fmtSprintf|raw}}("Failed to parse schema: %v", err))
     		}
     	})
     	return parser
     }
     
    -var parserOnce sync.Once
    +var parserOnce {{.syncOnce|raw}}
     var parser *{{.smdParser|raw}}
     var schemaYAML = {{.yamlObject|raw}}(` + "`{{.schemaYAML}}`" + `)
     `
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/jsontagutil.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/jsontagutil.go
    index 2a643290bb9a..c11d05deef7d 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/jsontagutil.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/jsontagutil.go
    @@ -20,7 +20,7 @@ import (
     	"reflect"
     	"strings"
     
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/types"
     )
     
     // TODO: This implements the same functionality as https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/runtime/converter.go#L236
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/openapi.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/openapi.go
    index 00d119dd65c1..6744136022ad 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/openapi.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/openapi.go
    @@ -23,18 +23,16 @@ import (
     	"strings"
     
     	openapiv2 "github.com/google/gnostic-models/openapiv2"
    -	"k8s.io/gengo/types"
    +
    +	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    +	"k8s.io/gengo/v2/types"
     	utilproto "k8s.io/kube-openapi/pkg/util/proto"
     	"k8s.io/kube-openapi/pkg/validation/spec"
     )
     
     type typeModels struct {
     	models           utilproto.Models
    -	gvkToOpenAPIType map[gvk]string
    -}
    -
    -type gvk struct {
    -	group, version, kind string
    +	gvkToOpenAPIType map[clientgentypes.GroupVersionKind]string
     }
     
     func newTypeModels(openAPISchemaFilePath string, pkgTypes map[string]*types.Package) (*typeModels, error) {
    @@ -56,7 +54,7 @@ func newTypeModels(openAPISchemaFilePath string, pkgTypes map[string]*types.Pack
     
     	// Build a mapping from openAPI type name to GVK.
     	// Find the root types needed by by client-go for apply.
    -	gvkToOpenAPIType := map[gvk]string{}
    +	gvkToOpenAPIType := map[clientgentypes.GroupVersionKind]string{}
     	rootDefs := map[string]spec.Schema{}
     	for _, p := range pkgTypes {
     		gv := groupVersion(p)
    @@ -65,11 +63,7 @@ func newTypeModels(openAPISchemaFilePath string, pkgTypes map[string]*types.Pack
     			hasApply := tags.HasVerb("apply") || tags.HasVerb("applyStatus")
     			if tags.GenerateClient && hasApply {
     				openAPIType := friendlyName(typeName(t))
    -				gvk := gvk{
    -					group:   gv.Group.String(),
    -					version: gv.Version.String(),
    -					kind:    t.Name.Name,
    -				}
    +				gvk := gv.WithKind(clientgentypes.Kind(t.Name.Name))
     				rootDefs[openAPIType] = openAPISchema.Definitions[openAPIType]
     				gvkToOpenAPIType[gvk] = openAPIType
     			}
    @@ -94,7 +88,7 @@ func newTypeModels(openAPISchemaFilePath string, pkgTypes map[string]*types.Pack
     
     var emptyModels = &typeModels{
     	models:           &utilproto.Definitions{},
    -	gvkToOpenAPIType: map[gvk]string{},
    +	gvkToOpenAPIType: map[clientgentypes.GroupVersionKind]string{},
     }
     
     func toValidatedModels(openAPISchema *spec.Swagger) (utilproto.Models, error) {
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/refgraph.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/refgraph.go
    index d1f95112796f..8b46755298c3 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/refgraph.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/refgraph.go
    @@ -17,7 +17,7 @@ limitations under the License.
     package generators
     
     import (
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/types"
     
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     )
    @@ -171,9 +171,5 @@ func requiresApplyConfiguration(t *types.Type) bool {
     			hasJSONTaggedMembers = true
     		}
     	}
    -	if !hasJSONTaggedMembers {
    -		return false
    -	}
    -
    -	return true
    +	return hasJSONTaggedMembers
     }
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/packages.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/targets.go
    similarity index 61%
    rename from vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/packages.go
    rename to vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/targets.go
    index bfeffda593d8..b033d22d8296 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/packages.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/targets.go
    @@ -23,13 +23,13 @@ import (
     	"sort"
     	"strings"
     
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     	"k8s.io/klog/v2"
     
    -	applygenargs "k8s.io/code-generator/cmd/applyconfiguration-gen/args"
    +	"k8s.io/code-generator/cmd/applyconfiguration-gen/args"
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
     )
    @@ -54,32 +54,29 @@ func DefaultNameSystem() string {
     	return "public"
     }
     
    -// Packages makes the client package definition.
    -func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	boilerplate, err := arguments.LoadGoBoilerplate()
    +// GetTargets makes the client target definition.
    +func GetTargets(context *generator.Context, args *args.Args) []generator.Target {
    +	boilerplate, err := gengo.GoBoilerplate(args.GoHeaderFile, "", gengo.StdGeneratedBy)
     	if err != nil {
     		klog.Fatalf("Failed loading boilerplate: %v", err)
     	}
     
    -	pkgTypes := packageTypesForInputDirs(context, arguments.InputDirs, arguments.OutputPackagePath)
    -	customArgs := arguments.CustomArgs.(*applygenargs.CustomArgs)
    -	initialTypes := customArgs.ExternalApplyConfigurations
    +	pkgTypes := packageTypesForInputs(context, args.OutputPkg)
    +	initialTypes := args.ExternalApplyConfigurations
     	refs := refGraphForReachableTypes(context.Universe, pkgTypes, initialTypes)
    -	typeModels, err := newTypeModels(customArgs.OpenAPISchemaFilePath, pkgTypes)
    +	typeModels, err := newTypeModels(args.OpenAPISchemaFilePath, pkgTypes)
     	if err != nil {
    -		klog.Fatalf("Failed build type models from typeModels %s: %v", customArgs.OpenAPISchemaFilePath, err)
    +		klog.Fatalf("Failed build type models from typeModels %s: %v", args.OpenAPISchemaFilePath, err)
     	}
     
     	groupVersions := make(map[string]clientgentypes.GroupVersions)
     	groupGoNames := make(map[string]string)
     	applyConfigsForGroupVersion := make(map[clientgentypes.GroupVersion][]applyConfig)
     
    -	var packageList generator.Packages
    +	var targetList []generator.Target
     	for pkg, p := range pkgTypes {
     		gv := groupVersion(p)
     
    -		pkgType := types.Name{Name: gv.Group.PackageName(), Package: pkg}
    -
     		var toGenerate []applyConfig
     		for _, t := range p.Types {
     			// If we don't have an ObjectMeta field, we lack the information required to make the Apply or ApplyStatus call
    @@ -89,10 +86,14 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     				klog.V(5).Infof("skipping type %v because does not have ObjectMeta", t)
     				continue
     			}
    +			gvk := gv.WithKind(clientgentypes.Kind(t.Name.Name))
    +			openAPIName := typeModels.gvkToOpenAPIType[gvk]
    +
     			if typePkg, ok := refs[t.Name]; ok {
     				toGenerate = append(toGenerate, applyConfig{
     					Type:               t,
     					ApplyConfiguration: types.Ref(typePkg, t.Name.Name+ApplyConfigurationTypeSuffix),
    +					OpenAPIName:        openAPIName,
     				})
     			}
     		}
    @@ -101,8 +102,17 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     		}
     		sort.Sort(applyConfigSort(toGenerate))
     
    +		// Apparently we allow the groupName to be overridden in a way that it
    +		// no longer maps to a Go package by name.  So we have to figure out
    +		// the offset of this particular output package (pkg) from the base
    +		// output package (args.OutputPkg).
    +		pkgSubdir := strings.TrimPrefix(pkg, args.OutputPkg+"/")
    +
     		// generate the apply configurations
    -		packageList = append(packageList, generatorForApplyConfigurationsPackage(arguments.OutputPackagePath, boilerplate, pkgType, gv, toGenerate, refs, typeModels))
    +		targetList = append(targetList,
    +			targetForApplyConfigurationsPackage(
    +				args.OutputDir, args.OutputPkg, pkgSubdir,
    +				boilerplate, gv, toGenerate, refs, typeModels))
     
     		// group all the generated apply configurations by gv so ForKind() can be generated
     		groupPackageName := gv.Group.NonEmpty()
    @@ -124,11 +134,15 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     	}
     
     	// generate ForKind() utility function
    -	packageList = append(packageList, generatorForUtils(arguments.OutputPackagePath, boilerplate, groupVersions, applyConfigsForGroupVersion, groupGoNames))
    +	targetList = append(targetList,
    +		targetForUtils(args.OutputDir, args.OutputPkg,
    +			boilerplate, groupVersions, applyConfigsForGroupVersion, groupGoNames, typeModels))
     	// generate internal embedded schema, required for generated Extract functions
    -	packageList = append(packageList, generatorForInternal(filepath.Join(arguments.OutputPackagePath, "internal"), boilerplate, typeModels))
    +	targetList = append(targetList,
    +		targetForInternal(args.OutputDir, args.OutputPkg,
    +			boilerplate, typeModels))
     
    -	return packageList
    +	return targetList
     }
     
     func friendlyName(name string) string {
    @@ -146,40 +160,37 @@ func friendlyName(name string) string {
     
     func typeName(t *types.Type) string {
     	typePackage := t.Name.Package
    -	if strings.Contains(typePackage, "/vendor/") {
    -		typePackage = typePackage[strings.Index(typePackage, "/vendor/")+len("/vendor/"):]
    -	}
     	return fmt.Sprintf("%s.%s", typePackage, t.Name.Name)
     }
     
    -func generatorForApplyConfigurationsPackage(outputPackagePath string, boilerplate []byte, packageName types.Name, gv clientgentypes.GroupVersion, typesToGenerate []applyConfig, refs refGraph, models *typeModels) *generator.DefaultPackage {
    -	return &generator.DefaultPackage{
    -		PackageName: gv.Version.PackageName(),
    -		PackagePath: packageName.Package,
    -		HeaderText:  boilerplate,
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +func targetForApplyConfigurationsPackage(outputDirBase, outputPkgBase, pkgSubdir string, boilerplate []byte, gv clientgentypes.GroupVersion, typesToGenerate []applyConfig, refs refGraph, models *typeModels) generator.Target {
    +	outputDir := filepath.Join(outputDirBase, pkgSubdir)
    +	outputPkg := path.Join(outputPkgBase, pkgSubdir)
    +
    +	return &generator.SimpleTarget{
    +		PkgName:       gv.Version.PackageName(),
    +		PkgPath:       outputPkg,
    +		PkgDir:        outputDir,
    +		HeaderComment: boilerplate,
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			for _, toGenerate := range typesToGenerate {
     				var openAPIType *string
    -				gvk := gvk{
    -					group:   gv.Group.String(),
    -					version: gv.Version.String(),
    -					kind:    toGenerate.Type.Name.Name,
    -				}
    +				gvk := gv.WithKind(clientgentypes.Kind(toGenerate.Type.Name.Name))
     				if v, ok := models.gvkToOpenAPIType[gvk]; ok {
     					openAPIType = &v
     				}
     
     				generators = append(generators, &applyConfigurationGenerator{
    -					DefaultGen: generator.DefaultGen{
    -						OptionalName: strings.ToLower(toGenerate.Type.Name.Name),
    +					GoGenerator: generator.GoGenerator{
    +						OutputFilename: strings.ToLower(toGenerate.Type.Name.Name) + ".go",
     					},
    -					outputPackage: outputPackagePath,
    -					localPackage:  packageName,
    -					groupVersion:  gv,
    -					applyConfig:   toGenerate,
    -					imports:       generator.NewImportTracker(),
    -					refGraph:      refs,
    -					openAPIType:   openAPIType,
    +					outPkgBase:   outputPkgBase,
    +					localPkg:     outputPkg,
    +					groupVersion: gv,
    +					applyConfig:  toGenerate,
    +					imports:      generator.NewImportTrackerForPackage(outputPkg),
    +					refGraph:     refs,
    +					openAPIType:  openAPIType,
     				})
     			}
     			return generators
    @@ -187,39 +198,45 @@ func generatorForApplyConfigurationsPackage(outputPackagePath string, boilerplat
     	}
     }
     
    -func generatorForUtils(outPackagePath string, boilerplate []byte, groupVersions map[string]clientgentypes.GroupVersions, applyConfigsForGroupVersion map[clientgentypes.GroupVersion][]applyConfig, groupGoNames map[string]string) *generator.DefaultPackage {
    -	return &generator.DefaultPackage{
    -		PackageName: filepath.Base(outPackagePath),
    -		PackagePath: outPackagePath,
    -		HeaderText:  boilerplate,
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +func targetForUtils(outputDirBase, outputPkgBase string, boilerplate []byte, groupVersions map[string]clientgentypes.GroupVersions,
    +	applyConfigsForGroupVersion map[clientgentypes.GroupVersion][]applyConfig, groupGoNames map[string]string, models *typeModels) generator.Target {
    +	return &generator.SimpleTarget{
    +		PkgName:       path.Base(outputPkgBase),
    +		PkgPath:       outputPkgBase,
    +		PkgDir:        outputDirBase,
    +		HeaderComment: boilerplate,
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = append(generators, &utilGenerator{
    -				DefaultGen: generator.DefaultGen{
    -					OptionalName: "utils",
    +				GoGenerator: generator.GoGenerator{
    +					OutputFilename: "utils.go",
     				},
    -				outputPackage:        outPackagePath,
    -				imports:              generator.NewImportTracker(),
    +				outputPackage:        outputPkgBase,
    +				imports:              generator.NewImportTrackerForPackage(outputPkgBase),
     				groupVersions:        groupVersions,
     				typesForGroupVersion: applyConfigsForGroupVersion,
     				groupGoNames:         groupGoNames,
    +				typeModels:           models,
     			})
     			return generators
     		},
     	}
     }
     
    -func generatorForInternal(outPackagePath string, boilerplate []byte, models *typeModels) *generator.DefaultPackage {
    -	return &generator.DefaultPackage{
    -		PackageName: filepath.Base(outPackagePath),
    -		PackagePath: outPackagePath,
    -		HeaderText:  boilerplate,
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +func targetForInternal(outputDirBase, outputPkgBase string, boilerplate []byte, models *typeModels) generator.Target {
    +	outputDir := filepath.Join(outputDirBase, "internal")
    +	outputPkg := path.Join(outputPkgBase, "internal")
    +	return &generator.SimpleTarget{
    +		PkgName:       path.Base(outputPkg),
    +		PkgPath:       outputPkg,
    +		PkgDir:        outputDir,
    +		HeaderComment: boilerplate,
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = append(generators, &internalGenerator{
    -				DefaultGen: generator.DefaultGen{
    -					OptionalName: "internal",
    +				GoGenerator: generator.GoGenerator{
    +					OutputFilename: "internal.go",
     				},
    -				outputPackage: outPackagePath,
    -				imports:       generator.NewImportTracker(),
    +				outputPackage: outputPkgBase,
    +				imports:       generator.NewImportTrackerForPackage(outputPkg),
     				typeModels:    models,
     			})
     			return generators
    @@ -229,15 +246,15 @@ func generatorForInternal(outPackagePath string, boilerplate []byte, models *typ
     
     func goName(gv clientgentypes.GroupVersion, p *types.Package) string {
     	goName := namer.IC(strings.Split(gv.Group.NonEmpty(), ".")[0])
    -	if override := types.ExtractCommentTags("+", p.Comments)["groupGoName"]; override != nil {
    +	if override := gengo.ExtractCommentTags("+", p.Comments)["groupGoName"]; override != nil {
     		goName = namer.IC(override[0])
     	}
     	return goName
     }
     
    -func packageTypesForInputDirs(context *generator.Context, inputDirs []string, outputPath string) map[string]*types.Package {
    +func packageTypesForInputs(context *generator.Context, outPkgBase string) map[string]*types.Package {
     	pkgTypes := map[string]*types.Package{}
    -	for _, inputDir := range inputDirs {
    +	for _, inputDir := range context.Inputs {
     		p := context.Universe.Package(inputDir)
     		internal := isInternalPackage(p)
     		if internal {
    @@ -249,7 +266,7 @@ func packageTypesForInputDirs(context *generator.Context, inputDirs []string, ou
     		// For example, if openshift/api/cloudnetwork/v1 contains an apigroup cloud.network.openshift.io, the client-gen
     		// builds a package called cloudnetwork/v1 to contain it. This change makes the applyconfiguration-gen use the same.
     		_, gvPackageString := util.ParsePathGroupVersion(p.Path)
    -		pkg := filepath.Join(outputPath, strings.ToLower(gvPackageString))
    +		pkg := path.Join(outPkgBase, strings.ToLower(gvPackageString))
     		pkgTypes[pkg] = p
     	}
     	return pkgTypes
    @@ -263,7 +280,7 @@ func groupVersion(p *types.Package) (gv clientgentypes.GroupVersion) {
     	// If there's a comment of the form "// +groupName=somegroup" or
     	// "// +groupName=somegroup.foo.bar.io", use the first field (somegroup) as the name of the
     	// group when generating.
    -	if override := types.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
    +	if override := gengo.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
     		gv.Group = clientgentypes.Group(override[0])
     	}
     	return gv
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/types.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/types.go
    index 66578ae0489b..08c53c2a4ccd 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/types.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/types.go
    @@ -16,18 +16,21 @@ limitations under the License.
     
     package generators
     
    -import "k8s.io/gengo/types"
    +import "k8s.io/gengo/v2/types"
     
     var (
    -	applyConfiguration = types.Ref("k8s.io/apimachinery/pkg/runtime", "ApplyConfiguration")
    -	groupVersionKind   = types.Ref("k8s.io/apimachinery/pkg/runtime/schema", "GroupVersionKind")
    -	typeMeta           = types.Ref("k8s.io/apimachinery/pkg/apis/meta/v1", "TypeMeta")
    -	objectMeta         = types.Ref("k8s.io/apimachinery/pkg/apis/meta/v1", "ObjectMeta")
    -	rawExtension       = types.Ref("k8s.io/apimachinery/pkg/runtime", "RawExtension")
    -	unknown            = types.Ref("k8s.io/apimachinery/pkg/runtime", "Unknown")
    -	extractInto        = types.Ref("k8s.io/apimachinery/pkg/util/managedfields", "ExtractInto")
    -	smdNewParser       = types.Ref("sigs.k8s.io/structured-merge-diff/v4/typed", "NewParser")
    -	smdParser          = types.Ref("sigs.k8s.io/structured-merge-diff/v4/typed", "Parser")
    -	yamlObject         = types.Ref("sigs.k8s.io/structured-merge-diff/v4/typed", "YAMLObject")
    -	yamlUnmarshal      = types.Ref("gopkg.in/yaml.v2", "Unmarshal")
    +	fmtSprintf           = types.Ref("fmt", "Sprintf")
    +	syncOnce             = types.Ref("sync", "Once")
    +	applyConfiguration   = types.Ref("k8s.io/apimachinery/pkg/runtime", "ApplyConfiguration")
    +	groupVersionKind     = types.Ref("k8s.io/apimachinery/pkg/runtime/schema", "GroupVersionKind")
    +	typeMeta             = types.Ref("k8s.io/apimachinery/pkg/apis/meta/v1", "TypeMeta")
    +	objectMeta           = types.Ref("k8s.io/apimachinery/pkg/apis/meta/v1", "ObjectMeta")
    +	rawExtension         = types.Ref("k8s.io/apimachinery/pkg/runtime", "RawExtension")
    +	unknown              = types.Ref("k8s.io/apimachinery/pkg/runtime", "Unknown")
    +	extractInto          = types.Ref("k8s.io/apimachinery/pkg/util/managedfields", "ExtractInto")
    +	runtimeScheme        = types.Ref("k8s.io/apimachinery/pkg/runtime", "Scheme")
    +	smdNewParser         = types.Ref("sigs.k8s.io/structured-merge-diff/v4/typed", "NewParser")
    +	smdParser            = types.Ref("sigs.k8s.io/structured-merge-diff/v4/typed", "Parser")
    +	testingTypeConverter = types.Ref("k8s.io/client-go/testing", "TypeConverter")
    +	yamlObject           = types.Ref("sigs.k8s.io/structured-merge-diff/v4/typed", "YAMLObject")
     )
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/util.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/util.go
    index 258293afea54..136d9c49531d 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/util.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/generators/util.go
    @@ -18,25 +18,27 @@ package generators
     
     import (
     	"io"
    +	"path"
     	"sort"
     	"strings"
     
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     // utilGenerator generates the ForKind() utility function.
     type utilGenerator struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage        string
     	imports              namer.ImportTracker
     	groupVersions        map[string]clientgentypes.GroupVersions
     	groupGoNames         map[string]string
     	typesForGroupVersion map[clientgentypes.GroupVersion][]applyConfig
     	filtered             bool
    +	typeModels           *typeModels
     }
     
     var _ generator.Generator = &utilGenerator{}
    @@ -92,6 +94,7 @@ func (v versionSort) Swap(i, j int) { v[i], v[j] = v[j], v[i] }
     type applyConfig struct {
     	Type               *types.Type
     	ApplyConfiguration *types.Type
    +	OpenAPIName        string
     }
     
     type applyConfigSort []applyConfig
    @@ -133,16 +136,26 @@ func (g *utilGenerator) GenerateType(c *generator.Context, _ *types.Type, w io.W
     	sort.Sort(groupSort(groups))
     
     	m := map[string]interface{}{
    +		"applyConfiguration":     applyConfiguration,
     		"groups":                 groups,
    +		"internalParser":         types.Ref(path.Join(g.outputPackage, "internal"), "Parser"),
    +		"runtimeScheme":          runtimeScheme,
     		"schemeGVs":              schemeGVs,
     		"schemaGroupVersionKind": groupVersionKind,
    -		"applyConfiguration":     applyConfiguration,
    +		"testingTypeConverter":   testingTypeConverter,
     	}
     	sw.Do(forKindFunc, m)
    +	sw.Do(typeConverter, m)
     
     	return sw.Error()
     }
     
    +var typeConverter = `
    +func NewTypeConverter(scheme *{{.runtimeScheme|raw}}) *{{.testingTypeConverter|raw}} {
    +	return &{{.testingTypeConverter|raw}}{Scheme: scheme, TypeResolver: {{.internalParser|raw}}()}
    +}
    +`
    +
     var forKindFunc = `
     // ForKind returns an apply configuration type for the given GroupVersionKind, or nil if no
     // apply configuration type exists for the given GroupVersionKind.
    diff --git a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/main.go b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/main.go
    index b4e264042aa7..f6b03f8877b1 100644
    --- a/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/main.go
    +++ b/vendor/k8s.io/code-generator/cmd/applyconfiguration-gen/main.go
    @@ -14,39 +14,45 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -// typebuilder-gen is a tool for auto-generating apply builder functions.
    +// applyconfiguration-gen is a tool for auto-generating apply builder functions.
     package main
     
     import (
     	"flag"
     
     	"github.com/spf13/pflag"
    -	"k8s.io/klog/v2"
    -
    -	generatorargs "k8s.io/code-generator/cmd/applyconfiguration-gen/args"
    +	"k8s.io/code-generator/cmd/applyconfiguration-gen/args"
     	"k8s.io/code-generator/cmd/applyconfiguration-gen/generators"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/klog/v2"
     )
     
     func main() {
     	klog.InitFlags(nil)
    -	genericArgs, customArgs := generatorargs.NewDefaults()
    -	genericArgs.AddFlags(pflag.CommandLine)
    -	customArgs.AddFlags(pflag.CommandLine, "k8s.io/kubernetes/pkg/apis") // TODO: move this input path out of applyconfiguration-gen
    +	args := args.New()
    +	args.AddFlags(pflag.CommandLine, "k8s.io/kubernetes/pkg/apis") // TODO: move this input path out of applyconfiguration-gen
     	if err := flag.Set("logtostderr", "true"); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
     	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
     	pflag.Parse()
     
    -	if err := generatorargs.Validate(genericArgs); err != nil {
    +	if err := args.Validate(); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
     
    +	myTargets := func(context *generator.Context) []generator.Target {
    +		return generators.GetTargets(context, args)
    +	}
    +
     	// Run it.
    -	if err := genericArgs.Execute(
    +	if err := gengo.Execute(
     		generators.NameSystems(),
     		generators.DefaultNameSystem(),
    -		generators.Packages,
    +		myTargets,
    +		gengo.StdBuildTag,
    +		pflag.Args(),
     	); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/args/args.go b/vendor/k8s.io/code-generator/cmd/client-gen/args/args.go
    index 4460ad26a254..5620fc0c2e06 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/args/args.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/args/args.go
    @@ -18,19 +18,22 @@ package args
     
     import (
     	"fmt"
    -	"path"
     
     	"github.com/spf13/pflag"
    -	"k8s.io/gengo/args"
     
     	"k8s.io/code-generator/cmd/client-gen/types"
    -	codegenutil "k8s.io/code-generator/pkg/util"
     )
     
    -var DefaultInputDirs = []string{}
    +type Args struct {
    +	// The directory for the generated results.
    +	OutputDir string
    +
    +	// The Go import-path of the generated results.
    +	OutputPkg string
    +
    +	// The boilerplate header for Go files.
    +	GoHeaderFile string
     
    -// CustomArgs is a wrapper for arguments to client-gen.
    -type CustomArgs struct {
     	// A sorted list of group versions to generate. For each of them the package path is found
     	// in GroupVersionToInputPath.
     	Groups []types.GroupVersions
    @@ -53,69 +56,80 @@ type CustomArgs struct {
     	// For example 'Endpoints:Endpoints', otherwise the pluralizer will generate 'Endpointes'.
     	PluralExceptions []string
     
    -	// ApplyConfigurationPackage is the package of apply builders generated by typebuilder-gen.
    +	// ApplyConfigurationPackage is the package of apply builders generated by
    +	// applyconfiguration-gen.
     	// If non-empty, Apply functions are generated for each type and reference the apply builders.
     	// If empty (""), Apply functions are not generated.
     	ApplyConfigurationPackage string
    +
    +	// PrefersProtobuf determines if the generated clientset uses protobuf for API requests.
    +	PrefersProtobuf bool
     }
     
    -func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
    -	genericArgs := args.Default().WithoutDefaultFlagParsing()
    -	customArgs := &CustomArgs{
    +func New() *Args {
    +	return &Args{
     		ClientsetName:             "internalclientset",
     		ClientsetAPIPath:          "/apis",
     		ClientsetOnly:             false,
     		FakeClient:                true,
    -		PluralExceptions:          []string{"Endpoints:Endpoints"},
     		ApplyConfigurationPackage: "",
     	}
    -	genericArgs.CustomArgs = customArgs
    -	genericArgs.InputDirs = DefaultInputDirs
    -
    -	if pkg := codegenutil.CurrentPackage(); len(pkg) != 0 {
    -		genericArgs.OutputPackagePath = path.Join(pkg, "pkg/client/clientset")
    -	}
    -
    -	return genericArgs, customArgs
     }
     
    -func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet, inputBase string) {
    -	gvsBuilder := NewGroupVersionsBuilder(&ca.Groups)
    -	pflag.Var(NewGVPackagesValue(gvsBuilder, nil), "input", "group/versions that client-gen will generate clients for. At most one version per group is allowed. Specified in the format \"group1/version1,group2/version2...\".")
    -	pflag.Var(NewGVTypesValue(&ca.IncludedTypesOverrides, []string{}), "included-types-overrides", "list of group/version/type for which client should be generated. By default, client is generated for all types which have genclient in types.go. This overrides that. For each groupVersion in this list, only the types mentioned here will be included. The default check of genclient will be used for other group versions.")
    -	pflag.Var(NewInputBasePathValue(gvsBuilder, inputBase), "input-base", "base path to look for the api group.")
    -	pflag.StringVarP(&ca.ClientsetName, "clientset-name", "n", ca.ClientsetName, "the name of the generated clientset package.")
    -	pflag.StringVarP(&ca.ClientsetAPIPath, "clientset-api-path", "", ca.ClientsetAPIPath, "the value of default API HTTP path, starting with / and without trailing /.")
    -	pflag.BoolVar(&ca.ClientsetOnly, "clientset-only", ca.ClientsetOnly, "when set, client-gen only generates the clientset shell, without generating the individual typed clients")
    -	pflag.BoolVar(&ca.FakeClient, "fake-clientset", ca.FakeClient, "when set, client-gen will generate the fake clientset that can be used in tests")
    -
    -	fs.StringSliceVar(&ca.PluralExceptions, "plural-exceptions", ca.PluralExceptions, "list of comma separated plural exception definitions in Type:PluralizedType form")
    -	fs.StringVar(&ca.ApplyConfigurationPackage, "apply-configuration-package", ca.ApplyConfigurationPackage, "optional package of apply configurations, generated by applyconfiguration-gen, that are required to generate Apply functions for each type in the clientset. By default Apply functions are not generated.")
    +func (args *Args) AddFlags(fs *pflag.FlagSet, inputBase string) {
    +	gvsBuilder := NewGroupVersionsBuilder(&args.Groups)
    +	fs.StringVar(&args.OutputDir, "output-dir", "",
    +		"the base directory under which to generate results")
    +	fs.StringVar(&args.OutputPkg, "output-pkg", args.OutputPkg,
    +		"the Go import-path of the generated results")
    +	fs.StringVar(&args.GoHeaderFile, "go-header-file", "",
    +		"the path to a file containing boilerplate header text; the string \"YEAR\" will be replaced with the current 4-digit year")
    +	fs.Var(NewGVPackagesValue(gvsBuilder, nil), "input",
    +		"group/versions that client-gen will generate clients for. At most one version per group is allowed. Specified in the format \"group1/version1,group2/version2...\".")
    +	fs.Var(NewGVTypesValue(&args.IncludedTypesOverrides, []string{}), "included-types-overrides",
    +		"list of group/version/type for which client should be generated. By default, client is generated for all types which have genclient in types.go. This overrides that. For each groupVersion in this list, only the types mentioned here will be included. The default check of genclient will be used for other group versions.")
    +	fs.Var(NewInputBasePathValue(gvsBuilder, inputBase), "input-base",
    +		"base path to look for the api group.")
    +	fs.StringVarP(&args.ClientsetName, "clientset-name", "n", args.ClientsetName,
    +		"the name of the generated clientset package.")
    +	fs.StringVarP(&args.ClientsetAPIPath, "clientset-api-path", "", args.ClientsetAPIPath,
    +		"the value of default API HTTP path, starting with / and without trailing /.")
    +	fs.BoolVar(&args.ClientsetOnly, "clientset-only", args.ClientsetOnly,
    +		"when set, client-gen only generates the clientset shell, without generating the individual typed clients")
    +	fs.BoolVar(&args.FakeClient, "fake-clientset", args.FakeClient,
    +		"when set, client-gen will generate the fake clientset that can be used in tests")
    +	fs.StringSliceVar(&args.PluralExceptions, "plural-exceptions", args.PluralExceptions,
    +		"list of comma separated plural exception definitions in Type:PluralizedType form")
    +	fs.StringVar(&args.ApplyConfigurationPackage, "apply-configuration-package", args.ApplyConfigurationPackage,
    +		"optional package of apply configurations, generated by applyconfiguration-gen, that are required to generate Apply functions for each type in the clientset. By default Apply functions are not generated.")
    +	fs.BoolVar(&args.PrefersProtobuf, "prefers-protobuf", args.PrefersProtobuf,
    +		"when set, client-gen will generate a clientset that uses protobuf for API requests")
     
     	// support old flags
    -	fs.SetNormalizeFunc(mapFlagName("clientset-path", "output-package", fs.GetNormalizeFunc()))
    +	fs.SetNormalizeFunc(mapFlagName("clientset-path", "output-pkg", fs.GetNormalizeFunc()))
     }
     
    -func Validate(genericArgs *args.GeneratorArgs) error {
    -	customArgs := genericArgs.CustomArgs.(*CustomArgs)
    -
    -	if len(genericArgs.OutputPackagePath) == 0 {
    -		return fmt.Errorf("output package cannot be empty")
    +func (args *Args) Validate() error {
    +	if len(args.OutputDir) == 0 {
    +		return fmt.Errorf("--output-dir must be specified")
    +	}
    +	if len(args.OutputPkg) == 0 {
    +		return fmt.Errorf("--output-pkg must be specified")
     	}
    -	if len(customArgs.ClientsetName) == 0 {
    -		return fmt.Errorf("clientset name cannot be empty")
    +	if len(args.ClientsetName) == 0 {
    +		return fmt.Errorf("--clientset-name must be specified")
     	}
    -	if len(customArgs.ClientsetAPIPath) == 0 {
    -		return fmt.Errorf("clientset API path cannot be empty")
    +	if len(args.ClientsetAPIPath) == 0 {
    +		return fmt.Errorf("--clientset-api-path cannot be empty")
     	}
     
     	return nil
     }
     
     // GroupVersionPackages returns a map from GroupVersion to the package with the types.go.
    -func (ca *CustomArgs) GroupVersionPackages() map[types.GroupVersion]string {
    +func (args *Args) GroupVersionPackages() map[types.GroupVersion]string {
     	res := map[types.GroupVersion]string{}
    -	for _, pkg := range ca.Groups {
    +	for _, pkg := range args.Groups {
     		for _, v := range pkg.Versions {
     			res[types.GroupVersion{Group: pkg.Group, Version: v.Version}] = v.Package
     		}
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/args/gvpackages.go b/vendor/k8s.io/code-generator/cmd/client-gen/args/gvpackages.go
    index 50d29a95be1e..f5e7f4063aab 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/args/gvpackages.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/args/gvpackages.go
    @@ -129,7 +129,9 @@ func (p *groupVersionsBuilder) update() error {
     
     		versionPkg := types.PackageVersion{Package: path.Join(p.importBasePath, pth, gv.Group.NonEmpty(), gv.Version.String()), Version: gv.Version}
     		if group, ok := seenGroups[gv.Group]; ok {
    -			seenGroups[gv.Group].Versions = append(group.Versions, versionPkg)
    +			vers := group.Versions
    +			vers = append(vers, versionPkg)
    +			seenGroups[gv.Group].Versions = vers
     		} else {
     			seenGroups[gv.Group] = &types.GroupVersions{
     				PackageName: gv.Group.NonEmpty(),
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go
    index ef4466d80059..c8fa01a8ecd9 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/client_generator.go
    @@ -18,21 +18,21 @@ limitations under the License.
     package generators
     
     import (
    +	"fmt"
    +	"path"
     	"path/filepath"
     	"strings"
     
    -	clientgenargs "k8s.io/code-generator/cmd/client-gen/args"
    +	"k8s.io/code-generator/cmd/client-gen/args"
     	"k8s.io/code-generator/cmd/client-gen/generators/fake"
     	"k8s.io/code-generator/cmd/client-gen/generators/scheme"
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
    -	"k8s.io/code-generator/cmd/client-gen/path"
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
     	codegennamer "k8s.io/code-generator/pkg/namer"
    -	genutil "k8s.io/code-generator/pkg/util"
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     
     	"k8s.io/klog/v2"
     )
    @@ -128,59 +128,64 @@ func DefaultNameSystem() string {
     	return "public"
     }
     
    -func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, clientsetPackage string, groupPackageName string, groupGoName string, apiPath string, srcTreePath string, inputPackage string, applyBuilderPackage string, boilerplate []byte) generator.Package {
    -	groupVersionClientPackage := filepath.Join(clientsetPackage, "typed", strings.ToLower(groupPackageName), strings.ToLower(gv.Version.NonEmpty()))
    -	return &generator.DefaultPackage{
    -		PackageName:          strings.ToLower(gv.Version.NonEmpty()),
    -		PackagePath:          groupVersionClientPackage,
    -		HeaderText:           boilerplate,
    -		PackageDocumentation: []byte("// This package has the automatically generated typed clients.\n"),
    -		// GeneratorFunc returns a list of generators. Each generator makes a
    +func targetForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, clientsetDir, clientsetPkg string, groupPkgName string, groupGoName string, apiPath string, inputPkg string, applyBuilderPkg string, boilerplate []byte, prefersProtobuf bool) generator.Target {
    +	subdir := []string{"typed", strings.ToLower(groupPkgName), strings.ToLower(gv.Version.NonEmpty())}
    +	gvDir := filepath.Join(clientsetDir, filepath.Join(subdir...))
    +	gvPkg := path.Join(clientsetPkg, path.Join(subdir...))
    +
    +	return &generator.SimpleTarget{
    +		PkgName:       strings.ToLower(gv.Version.NonEmpty()),
    +		PkgPath:       gvPkg,
    +		PkgDir:        gvDir,
    +		HeaderComment: boilerplate,
    +		PkgDocComment: []byte("// This package has the automatically generated typed clients.\n"),
    +		// GeneratorsFunc returns a list of generators. Each generator makes a
     		// single file.
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = []generator.Generator{
     				// Always generate a "doc.go" file.
    -				generator.DefaultGen{OptionalName: "doc"},
    +				generator.GoGenerator{OutputFilename: "doc.go"},
     			}
     			// Since we want a file per type that we generate a client for, we
     			// have to provide a function for this.
     			for _, t := range typeList {
     				generators = append(generators, &genClientForType{
    -					DefaultGen: generator.DefaultGen{
    -						OptionalName: strings.ToLower(c.Namers["private"].Name(t)),
    +					GoGenerator: generator.GoGenerator{
    +						OutputFilename: strings.ToLower(c.Namers["private"].Name(t)) + ".go",
     					},
    -					outputPackage:             groupVersionClientPackage,
    -					inputPackage:              inputPackage,
    -					clientsetPackage:          clientsetPackage,
    -					applyConfigurationPackage: applyBuilderPackage,
    +					outputPackage:             gvPkg,
    +					inputPackage:              inputPkg,
    +					clientsetPackage:          clientsetPkg,
    +					applyConfigurationPackage: applyBuilderPkg,
     					group:                     gv.Group.NonEmpty(),
     					version:                   gv.Version.String(),
     					groupGoName:               groupGoName,
    +					prefersProtobuf:           prefersProtobuf,
     					typeToMatch:               t,
    -					imports:                   generator.NewImportTracker(),
    +					imports:                   generator.NewImportTrackerForPackage(gvPkg),
     				})
     			}
     
     			generators = append(generators, &genGroup{
    -				DefaultGen: generator.DefaultGen{
    -					OptionalName: groupPackageName + "_client",
    +				GoGenerator: generator.GoGenerator{
    +					OutputFilename: groupPkgName + "_client.go",
     				},
    -				outputPackage:    groupVersionClientPackage,
    -				inputPackage:     inputPackage,
    -				clientsetPackage: clientsetPackage,
    +				outputPackage:    gvPkg,
    +				inputPackage:     inputPkg,
    +				clientsetPackage: clientsetPkg,
     				group:            gv.Group.NonEmpty(),
     				version:          gv.Version.String(),
     				groupGoName:      groupGoName,
     				apiPath:          apiPath,
     				types:            typeList,
    -				imports:          generator.NewImportTracker(),
    +				imports:          generator.NewImportTrackerForPackage(gvPkg),
     			})
     
    -			expansionFileName := "generated_expansion"
    +			expansionFileName := "generated_expansion.go"
     			generators = append(generators, &genExpansion{
    -				groupPackagePath: filepath.Join(srcTreePath, groupVersionClientPackage),
    -				DefaultGen: generator.DefaultGen{
    -					OptionalName: expansionFileName,
    +				groupPackagePath: gvDir,
    +				GoGenerator: generator.GoGenerator{
    +					OutputFilename: expansionFileName,
     				},
     				types: typeList,
     			})
    @@ -193,24 +198,24 @@ func packageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, cli
     	}
     }
     
    -func packageForClientset(customArgs *clientgenargs.CustomArgs, clientsetPackage string, groupGoNames map[clientgentypes.GroupVersion]string, boilerplate []byte) generator.Package {
    -	return &generator.DefaultPackage{
    -		PackageName: customArgs.ClientsetName,
    -		PackagePath: clientsetPackage,
    -		HeaderText:  boilerplate,
    -		// GeneratorFunc returns a list of generators. Each generator generates a
    +func targetForClientset(args *args.Args, clientsetDir, clientsetPkg string, groupGoNames map[clientgentypes.GroupVersion]string, boilerplate []byte) generator.Target {
    +	return &generator.SimpleTarget{
    +		PkgName:       args.ClientsetName,
    +		PkgPath:       clientsetPkg,
    +		PkgDir:        clientsetDir,
    +		HeaderComment: boilerplate,
    +		// GeneratorsFunc returns a list of generators. Each generator generates a
     		// single file.
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = []generator.Generator{
     				&genClientset{
    -					DefaultGen: generator.DefaultGen{
    -						OptionalName: "clientset",
    +					GoGenerator: generator.GoGenerator{
    +						OutputFilename: "clientset.go",
     					},
    -					groups:           customArgs.Groups,
    +					groups:           args.Groups,
     					groupGoNames:     groupGoNames,
    -					clientsetPackage: clientsetPackage,
    -					outputPackage:    customArgs.ClientsetName,
    -					imports:          generator.NewImportTracker(),
    +					clientsetPackage: clientsetPkg,
    +					imports:          generator.NewImportTrackerForPackage(clientsetPkg),
     				},
     			}
     			return generators
    @@ -218,13 +223,14 @@ func packageForClientset(customArgs *clientgenargs.CustomArgs, clientsetPackage
     	}
     }
     
    -func packageForScheme(customArgs *clientgenargs.CustomArgs, clientsetPackage string, srcTreePath string, groupGoNames map[clientgentypes.GroupVersion]string, boilerplate []byte) generator.Package {
    -	schemePackage := filepath.Join(clientsetPackage, "scheme")
    +func targetForScheme(args *args.Args, clientsetDir, clientsetPkg string, groupGoNames map[clientgentypes.GroupVersion]string, boilerplate []byte) generator.Target {
    +	schemeDir := filepath.Join(clientsetDir, "scheme")
    +	schemePkg := path.Join(clientsetPkg, "scheme")
     
     	// create runtime.Registry for internal client because it has to know about group versions
     	internalClient := false
     NextGroup:
    -	for _, group := range customArgs.Groups {
    +	for _, group := range args.Groups {
     		for _, v := range group.Versions {
     			if v.String() == "" {
     				internalClient = true
    @@ -233,28 +239,29 @@ NextGroup:
     		}
     	}
     
    -	return &generator.DefaultPackage{
    -		PackageName:          "scheme",
    -		PackagePath:          schemePackage,
    -		HeaderText:           boilerplate,
    -		PackageDocumentation: []byte("// This package contains the scheme of the automatically generated clientset.\n"),
    -		// GeneratorFunc returns a list of generators. Each generator generates a
    +	return &generator.SimpleTarget{
    +		PkgName:       "scheme",
    +		PkgPath:       schemePkg,
    +		PkgDir:        schemeDir,
    +		HeaderComment: boilerplate,
    +		PkgDocComment: []byte("// This package contains the scheme of the automatically generated clientset.\n"),
    +		// GeneratorsFunc returns a list of generators. Each generator generates a
     		// single file.
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = []generator.Generator{
     				// Always generate a "doc.go" file.
    -				generator.DefaultGen{OptionalName: "doc"},
    +				generator.GoGenerator{OutputFilename: "doc.go"},
     
     				&scheme.GenScheme{
    -					DefaultGen: generator.DefaultGen{
    -						OptionalName: "register",
    +					GoGenerator: generator.GoGenerator{
    +						OutputFilename: "register.go",
     					},
    -					InputPackages:  customArgs.GroupVersionPackages(),
    -					OutputPackage:  schemePackage,
    -					OutputPath:     filepath.Join(srcTreePath, schemePackage),
    -					Groups:         customArgs.Groups,
    +					InputPackages:  args.GroupVersionPackages(),
    +					OutputPkg:      schemePkg,
    +					OutputPath:     schemeDir,
    +					Groups:         args.Groups,
     					GroupGoNames:   groupGoNames,
    -					ImportTracker:  generator.NewImportTracker(),
    +					ImportTracker:  generator.NewImportTrackerForPackage(schemePkg),
     					CreateRegistry: internalClient,
     				},
     			}
    @@ -268,12 +275,12 @@ NextGroup:
     // first field (somegroup) as the name of the group in Go code, e.g. as the func name in a clientset.
     //
     // If the first field of the groupName is not unique within the clientset, use "// +groupName=unique
    -func applyGroupOverrides(universe types.Universe, customArgs *clientgenargs.CustomArgs) {
    +func applyGroupOverrides(universe types.Universe, args *args.Args) {
     	// Create a map from "old GV" to "new GV" so we know what changes we need to make.
     	changes := make(map[clientgentypes.GroupVersion]clientgentypes.GroupVersion)
    -	for gv, inputDir := range customArgs.GroupVersionPackages() {
    -		p := universe.Package(genutil.Vendorless(inputDir))
    -		if override := types.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
    +	for gv, inputDir := range args.GroupVersionPackages() {
    +		p := universe.Package(inputDir)
    +		if override := gengo.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
     			newGV := clientgentypes.GroupVersion{
     				Group:   clientgentypes.Group(override[0]),
     				Version: gv.Version,
    @@ -282,9 +289,9 @@ func applyGroupOverrides(universe types.Universe, customArgs *clientgenargs.Cust
     		}
     	}
     
    -	// Modify customArgs.Groups based on the groupName overrides.
    -	newGroups := make([]clientgentypes.GroupVersions, 0, len(customArgs.Groups))
    -	for _, gvs := range customArgs.Groups {
    +	// Modify args.Groups based on the groupName overrides.
    +	newGroups := make([]clientgentypes.GroupVersions, 0, len(args.Groups))
    +	for _, gvs := range args.Groups {
     		gv := clientgentypes.GroupVersion{
     			Group:   gvs.Group,
     			Version: gvs.Versions[0].Version, // we only need a version, and the first will do
    @@ -302,37 +309,64 @@ func applyGroupOverrides(universe types.Universe, customArgs *clientgenargs.Cust
     			newGroups = append(newGroups, gvs)
     		}
     	}
    -	customArgs.Groups = newGroups
    +	args.Groups = newGroups
     }
     
    -// Packages makes the client package definition.
    -func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	boilerplate, err := arguments.LoadGoBoilerplate()
    +// Because we try to assemble inputs from an input-base and a set of
    +// group-version arguments, sometimes that comes in as a filesystem path.  This
    +// function rewrites them all as their canonical Go import-paths.
    +//
    +// TODO: Change this tool to just take inputs as Go "patterns" like every other
    +// gengo tool, then extract GVs from those.
    +func sanitizePackagePaths(context *generator.Context, args *args.Args) error {
    +	for i := range args.Groups {
    +		pkg := &args.Groups[i]
    +		for j := range pkg.Versions {
    +			ver := &pkg.Versions[j]
    +			input := ver.Package
    +			p := context.Universe[input]
    +			if p == nil || p.Name == "" {
    +				pkgs, err := context.FindPackages(input)
    +				if err != nil {
    +					return fmt.Errorf("can't find input package %q: %w", input, err)
    +				}
    +				p = context.Universe[pkgs[0]]
    +				if p == nil {
    +					return fmt.Errorf("can't find input package %q in universe", input)
    +				}
    +				ver.Package = p.Path
    +			}
    +		}
    +	}
    +	return nil
    +}
    +
    +// GetTargets makes the client target definition.
    +func GetTargets(context *generator.Context, args *args.Args) []generator.Target {
    +	boilerplate, err := gengo.GoBoilerplate(args.GoHeaderFile, "", gengo.StdGeneratedBy)
     	if err != nil {
     		klog.Fatalf("Failed loading boilerplate: %v", err)
     	}
     
    -	customArgs, ok := arguments.CustomArgs.(*clientgenargs.CustomArgs)
    -	if !ok {
    -		klog.Fatalf("cannot convert arguments.CustomArgs to clientgenargs.CustomArgs")
    -	}
    -	includedTypesOverrides := customArgs.IncludedTypesOverrides
    +	includedTypesOverrides := args.IncludedTypesOverrides
     
    -	applyGroupOverrides(context.Universe, customArgs)
    +	if err := sanitizePackagePaths(context, args); err != nil {
    +		klog.Fatalf("cannot sanitize inputs: %v", err)
    +	}
    +	applyGroupOverrides(context.Universe, args)
     
     	gvToTypes := map[clientgentypes.GroupVersion][]*types.Type{}
     	groupGoNames := make(map[clientgentypes.GroupVersion]string)
    -	for gv, inputDir := range customArgs.GroupVersionPackages() {
    -		p := context.Universe.Package(path.Vendorless(inputDir))
    +	for gv, inputDir := range args.GroupVersionPackages() {
    +		p := context.Universe.Package(inputDir)
     
     		// If there's a comment of the form "// +groupGoName=SomeUniqueShortName", use that as
     		// the Go group identifier in CamelCase. It defaults
     		groupGoNames[gv] = namer.IC(strings.Split(gv.Group.NonEmpty(), ".")[0])
    -		if override := types.ExtractCommentTags("+", p.Comments)["groupGoName"]; override != nil {
    +		if override := gengo.ExtractCommentTags("+", p.Comments)["groupGoName"]; override != nil {
     			groupGoNames[gv] = namer.IC(override[0])
     		}
     
    -		// Package are indexed with the vendor prefix stripped
     		for n, t := range p.Types {
     			// filter out types which are not included in user specified overrides.
     			typesOverride, ok := includedTypesOverrides[gv]
    @@ -361,33 +395,43 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     		}
     	}
     
    -	var packageList []generator.Package
    -	clientsetPackage := filepath.Join(arguments.OutputPackagePath, customArgs.ClientsetName)
    +	clientsetDir := filepath.Join(args.OutputDir, args.ClientsetName)
    +	clientsetPkg := path.Join(args.OutputPkg, args.ClientsetName)
    +
    +	var targetList []generator.Target
     
    -	packageList = append(packageList, packageForClientset(customArgs, clientsetPackage, groupGoNames, boilerplate))
    -	packageList = append(packageList, packageForScheme(customArgs, clientsetPackage, arguments.OutputBase, groupGoNames, boilerplate))
    -	if customArgs.FakeClient {
    -		packageList = append(packageList, fake.PackageForClientset(customArgs, clientsetPackage, groupGoNames, boilerplate))
    +	targetList = append(targetList,
    +		targetForClientset(args, clientsetDir, clientsetPkg, groupGoNames, boilerplate))
    +	targetList = append(targetList,
    +		targetForScheme(args, clientsetDir, clientsetPkg, groupGoNames, boilerplate))
    +	if args.FakeClient {
    +		targetList = append(targetList,
    +			fake.TargetForClientset(args, clientsetDir, clientsetPkg, args.ApplyConfigurationPackage, groupGoNames, boilerplate))
     	}
     
     	// If --clientset-only=true, we don't regenerate the individual typed clients.
    -	if customArgs.ClientsetOnly {
    -		return generator.Packages(packageList)
    +	if args.ClientsetOnly {
    +		return []generator.Target(targetList)
     	}
     
     	orderer := namer.Orderer{Namer: namer.NewPrivateNamer(0)}
    -	gvPackages := customArgs.GroupVersionPackages()
    -	for _, group := range customArgs.Groups {
    +	gvPackages := args.GroupVersionPackages()
    +	for _, group := range args.Groups {
     		for _, version := range group.Versions {
     			gv := clientgentypes.GroupVersion{Group: group.Group, Version: version.Version}
     			types := gvToTypes[gv]
     			inputPath := gvPackages[gv]
    -			packageList = append(packageList, packageForGroup(gv, orderer.OrderTypes(types), clientsetPackage, group.PackageName, groupGoNames[gv], customArgs.ClientsetAPIPath, arguments.OutputBase, inputPath, customArgs.ApplyConfigurationPackage, boilerplate))
    -			if customArgs.FakeClient {
    -				packageList = append(packageList, fake.PackageForGroup(gv, orderer.OrderTypes(types), clientsetPackage, group.PackageName, groupGoNames[gv], inputPath, customArgs.ApplyConfigurationPackage, boilerplate))
    +			targetList = append(targetList,
    +				targetForGroup(
    +					gv, orderer.OrderTypes(types), clientsetDir, clientsetPkg,
    +					group.PackageName, groupGoNames[gv], args.ClientsetAPIPath,
    +					inputPath, args.ApplyConfigurationPackage, boilerplate, args.PrefersProtobuf))
    +			if args.FakeClient {
    +				targetList = append(targetList,
    +					fake.TargetForGroup(gv, orderer.OrderTypes(types), clientsetDir, clientsetPkg, group.PackageName, groupGoNames[gv], inputPath, args.ApplyConfigurationPackage, boilerplate))
     			}
     		}
     	}
     
    -	return generator.Packages(packageList)
    +	return targetList
     }
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/fake_client_generator.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/fake_client_generator.go
    index 1794909148f1..935efec21a9a 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/fake_client_generator.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/fake_client_generator.go
    @@ -17,65 +17,67 @@ limitations under the License.
     package fake
     
     import (
    +	"path"
     	"path/filepath"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/types"
     
    -	clientgenargs "k8s.io/code-generator/cmd/client-gen/args"
    +	"k8s.io/code-generator/cmd/client-gen/args"
     	scheme "k8s.io/code-generator/cmd/client-gen/generators/scheme"
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
     )
     
    -func PackageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, clientsetPackage string, groupPackageName string, groupGoName string, inputPackage string, applyBuilderPackage string, boilerplate []byte) generator.Package {
    -	outputPackage := filepath.Join(clientsetPackage, "typed", strings.ToLower(groupPackageName), strings.ToLower(gv.Version.NonEmpty()), "fake")
    +func TargetForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, clientsetDir, clientsetPkg string, groupPkgName string, groupGoName string, inputPkg string, applyBuilderPackage string, boilerplate []byte) generator.Target {
     	// TODO: should make this a function, called by here and in client-generator.go
    -	realClientPackage := filepath.Join(clientsetPackage, "typed", strings.ToLower(groupPackageName), strings.ToLower(gv.Version.NonEmpty()))
    -	return &generator.DefaultPackage{
    -		PackageName: "fake",
    -		PackagePath: outputPackage,
    -		HeaderText:  boilerplate,
    -		PackageDocumentation: []byte(
    -			`// Package fake has the automatically generated clients.
    -`),
    -		// GeneratorFunc returns a list of generators. Each generator makes a
    +	subdir := []string{"typed", strings.ToLower(groupPkgName), strings.ToLower(gv.Version.NonEmpty())}
    +	outputDir := filepath.Join(clientsetDir, filepath.Join(subdir...), "fake")
    +	outputPkg := path.Join(clientsetPkg, path.Join(subdir...), "fake")
    +	realClientPkg := path.Join(clientsetPkg, path.Join(subdir...))
    +
    +	return &generator.SimpleTarget{
    +		PkgName:       "fake",
    +		PkgPath:       outputPkg,
    +		PkgDir:        outputDir,
    +		HeaderComment: boilerplate,
    +		PkgDocComment: []byte("// Package fake has the automatically generated clients.\n"),
    +		// GeneratorsFunc returns a list of generators. Each generator makes a
     		// single file.
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = []generator.Generator{
     				// Always generate a "doc.go" file.
    -				generator.DefaultGen{OptionalName: "doc"},
    +				generator.GoGenerator{OutputFilename: "doc.go"},
     			}
     			// Since we want a file per type that we generate a client for, we
     			// have to provide a function for this.
     			for _, t := range typeList {
     				generators = append(generators, &genFakeForType{
    -					DefaultGen: generator.DefaultGen{
    -						OptionalName: "fake_" + strings.ToLower(c.Namers["private"].Name(t)),
    +					GoGenerator: generator.GoGenerator{
    +						OutputFilename: "fake_" + strings.ToLower(c.Namers["private"].Name(t)) + ".go",
     					},
    -					outputPackage:             outputPackage,
    -					inputPackage:              inputPackage,
    -					group:                     gv.Group.NonEmpty(),
    +					outputPackage:             outputPkg,
    +					realClientPackage:         realClientPkg,
    +					inputPackage:              inputPkg,
     					version:                   gv.Version.String(),
     					groupGoName:               groupGoName,
     					typeToMatch:               t,
    -					imports:                   generator.NewImportTracker(),
    +					imports:                   generator.NewImportTrackerForPackage(outputPkg),
     					applyConfigurationPackage: applyBuilderPackage,
     				})
     			}
     
     			generators = append(generators, &genFakeForGroup{
    -				DefaultGen: generator.DefaultGen{
    -					OptionalName: "fake_" + groupPackageName + "_client",
    +				GoGenerator: generator.GoGenerator{
    +					OutputFilename: "fake_" + groupPkgName + "_client.go",
     				},
    -				outputPackage:     outputPackage,
    -				realClientPackage: realClientPackage,
    -				group:             gv.Group.NonEmpty(),
    +				outputPackage:     outputPkg,
    +				realClientPackage: realClientPkg,
     				version:           gv.Version.String(),
     				groupGoName:       groupGoName,
     				types:             typeList,
    -				imports:           generator.NewImportTracker(),
    +				imports:           generator.NewImportTrackerForPackage(outputPkg),
     			})
     			return generators
     		},
    @@ -85,43 +87,42 @@ func PackageForGroup(gv clientgentypes.GroupVersion, typeList []*types.Type, cli
     	}
     }
     
    -func PackageForClientset(customArgs *clientgenargs.CustomArgs, clientsetPackage string, groupGoNames map[clientgentypes.GroupVersion]string, boilerplate []byte) generator.Package {
    -	return &generator.DefaultPackage{
    +func TargetForClientset(args *args.Args, clientsetDir, clientsetPkg string, applyConfigurationPkg string, groupGoNames map[clientgentypes.GroupVersion]string, boilerplate []byte) generator.Target {
    +	return &generator.SimpleTarget{
     		// TODO: we'll generate fake clientset for different release in the future.
     		// Package name and path are hard coded for now.
    -		PackageName: "fake",
    -		PackagePath: filepath.Join(clientsetPackage, "fake"),
    -		HeaderText:  boilerplate,
    -		PackageDocumentation: []byte(
    -			`// This package has the automatically generated fake clientset.
    -`),
    -		// GeneratorFunc returns a list of generators. Each generator generates a
    +		PkgName:       "fake",
    +		PkgPath:       path.Join(clientsetPkg, "fake"),
    +		PkgDir:        filepath.Join(clientsetDir, "fake"),
    +		HeaderComment: boilerplate,
    +		PkgDocComment: []byte("// This package has the automatically generated fake clientset.\n"),
    +		// GeneratorsFunc returns a list of generators. Each generator generates a
     		// single file.
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = []generator.Generator{
     				// Always generate a "doc.go" file.
    -				generator.DefaultGen{OptionalName: "doc"},
    +				generator.GoGenerator{OutputFilename: "doc.go"},
     
     				&genClientset{
    -					DefaultGen: generator.DefaultGen{
    -						OptionalName: "clientset_generated",
    +					GoGenerator: generator.GoGenerator{
    +						OutputFilename: "clientset_generated.go",
     					},
    -					groups:               customArgs.Groups,
    -					groupGoNames:         groupGoNames,
    -					fakeClientsetPackage: clientsetPackage,
    -					outputPackage:        "fake",
    -					imports:              generator.NewImportTracker(),
    -					realClientsetPackage: clientsetPackage,
    +					groups:                    args.Groups,
    +					groupGoNames:              groupGoNames,
    +					fakeClientsetPackage:      clientsetPkg,
    +					imports:                   generator.NewImportTrackerForPackage(clientsetPkg),
    +					realClientsetPackage:      clientsetPkg,
    +					applyConfigurationPackage: applyConfigurationPkg,
     				},
     				&scheme.GenScheme{
    -					DefaultGen: generator.DefaultGen{
    -						OptionalName: "register",
    +					GoGenerator: generator.GoGenerator{
    +						OutputFilename: "register.go",
     					},
    -					InputPackages: customArgs.GroupVersionPackages(),
    -					OutputPackage: clientsetPackage,
    -					Groups:        customArgs.Groups,
    +					InputPackages: args.GroupVersionPackages(),
    +					OutputPkg:     clientsetPkg,
    +					Groups:        args.Groups,
     					GroupGoNames:  groupGoNames,
    -					ImportTracker: generator.NewImportTracker(),
    +					ImportTracker: generator.NewImportTrackerForPackage(clientsetPkg),
     					PrivateScheme: true,
     				},
     			}
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_clientset.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_clientset.go
    index cd731cb9d666..ffb02ebba1e8 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_clientset.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_clientset.go
    @@ -19,33 +19,33 @@ package fake
     import (
     	"fmt"
     	"io"
    -	"path/filepath"
    +	"path"
     	"strings"
     
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     // genClientset generates a package for a clientset.
     type genClientset struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	groups               []clientgentypes.GroupVersions
     	groupGoNames         map[clientgentypes.GroupVersion]string
    -	fakeClientsetPackage string
    -	outputPackage        string
    +	fakeClientsetPackage string // must be a Go import-path
     	imports              namer.ImportTracker
     	clientsetGenerated   bool
     	// the import path of the generated real clientset.
    -	realClientsetPackage string
    +	realClientsetPackage      string // must be a Go import-path
    +	applyConfigurationPackage string
     }
     
     var _ generator.Generator = &genClientset{}
     
     func (g *genClientset) Namers(c *generator.Context) namer.NameSystems {
     	return namer.NameSystems{
    -		"raw": namer.NewRawNamer(g.outputPackage, g.imports),
    +		"raw": namer.NewRawNamer(g.fakeClientsetPackage, g.imports),
     	}
     }
     
    @@ -60,8 +60,8 @@ func (g *genClientset) Imports(c *generator.Context) (imports []string) {
     	imports = append(imports, g.imports.ImportLines()...)
     	for _, group := range g.groups {
     		for _, version := range group.Versions {
    -			groupClientPackage := filepath.Join(g.fakeClientsetPackage, "typed", strings.ToLower(group.PackageName), strings.ToLower(version.NonEmpty()))
    -			fakeGroupClientPackage := filepath.Join(groupClientPackage, "fake")
    +			groupClientPackage := path.Join(g.fakeClientsetPackage, "typed", strings.ToLower(group.PackageName), strings.ToLower(version.NonEmpty()))
    +			fakeGroupClientPackage := path.Join(groupClientPackage, "fake")
     
     			groupAlias := strings.ToLower(g.groupGoNames[clientgentypes.GroupVersion{Group: group.Group, Version: version.Version}])
     			imports = append(imports, fmt.Sprintf("%s%s \"%s\"", groupAlias, strings.ToLower(version.NonEmpty()), groupClientPackage))
    @@ -83,6 +83,8 @@ func (g *genClientset) Imports(c *generator.Context) (imports []string) {
     }
     
     func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
    +	generateApply := len(g.applyConfigurationPackage) > 0
    +
     	// TODO: We actually don't need any type information to generate the clientset,
     	// perhaps we can adapt the go2ild framework to this kind of usage.
     	sw := generator.NewSnippetWriter(w, c, "$", "$")
    @@ -90,6 +92,13 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
     	allGroups := clientgentypes.ToGroupVersionInfo(g.groups, g.groupGoNames)
     
     	sw.Do(common, nil)
    +
    +	if generateApply {
    +		sw.Do(managedFieldsClientset, map[string]any{
    +			"newTypeConverter": types.Ref(g.applyConfigurationPackage, "NewTypeConverter"),
    +		})
    +	}
    +
     	sw.Do(checkImpl, nil)
     
     	for _, group := range allGroups {
    @@ -108,11 +117,50 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
     }
     
     // This part of code is version-independent, unchanging.
    +
    +var managedFieldsClientset = `
    +// NewClientset returns a clientset that will respond with the provided objects.
    +// It's backed by a very simple object tracker that processes creates, updates and deletions as-is,
    +// without applying any validations and/or defaults. It shouldn't be considered a replacement
    +// for a real clientset and is mostly useful in simple unit tests.
    +func NewClientset(objects ...runtime.Object) *Clientset {
    +	o := testing.NewFieldManagedObjectTracker(
    +		scheme,
    +		codecs.UniversalDecoder(),
    +		$.newTypeConverter|raw$(scheme),
    +	)
    +	for _, obj := range objects {
    +		if err := o.Add(obj); err != nil {
    +			panic(err)
    +		}
    +	}
    +
    +	cs := &Clientset{tracker: o}
    +	cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
    +	cs.AddReactor("*", "*", testing.ObjectReaction(o))
    +	cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
    +		gvr := action.GetResource()
    +		ns := action.GetNamespace()
    +		watch, err := o.Watch(gvr, ns)
    +		if err != nil {
    +			return false, nil, err
    +		}
    +		return true, watch, nil
    +	})
    +
    +	return cs
    +}
    +`
    +
     var common = `
     // NewSimpleClientset returns a clientset that will respond with the provided objects.
     // It's backed by a very simple object tracker that processes creates, updates and deletions as-is,
    -// without applying any validations and/or defaults. It shouldn't be considered a replacement
    +// without applying any field management, validations and/or defaults. It shouldn't be considered a replacement
     // for a real clientset and is mostly useful in simple unit tests.
    +//
    +// DEPRECATED: NewClientset replaces this with support for field management, which significantly improves
    +// server side apply testing. NewClientset is only available when apply configurations are generated (e.g.
    +// via --with-applyconfig).
     func NewSimpleClientset(objects ...runtime.Object) *Clientset {
     	o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder())
     	for _, obj := range objects {
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_group.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_group.go
    index 8f4d5785ef94..04c586a0ed51 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_group.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_group.go
    @@ -19,22 +19,21 @@ package fake
     import (
     	"fmt"
     	"io"
    -	"path/filepath"
    +	"path"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     )
     
     // genFakeForGroup produces a file for a group client, e.g. ExtensionsClient for the extension group.
     type genFakeForGroup struct {
    -	generator.DefaultGen
    -	outputPackage     string
    -	realClientPackage string
    -	group             string
    +	generator.GoGenerator
    +	outputPackage     string // must be a Go import-path
    +	realClientPackage string // must be a Go import-path
     	version           string
     	groupGoName       string
     	// types in this group
    @@ -64,7 +63,7 @@ func (g *genFakeForGroup) Namers(c *generator.Context) namer.NameSystems {
     func (g *genFakeForGroup) Imports(c *generator.Context) (imports []string) {
     	imports = g.imports.ImportLines()
     	if len(g.types) != 0 {
    -		imports = append(imports, fmt.Sprintf("%s \"%s\"", strings.ToLower(filepath.Base(g.realClientPackage)), g.realClientPackage))
    +		imports = append(imports, fmt.Sprintf("%s \"%s\"", strings.ToLower(path.Base(g.realClientPackage)), g.realClientPackage))
     	}
     	return imports
     }
    @@ -78,6 +77,8 @@ func (g *genFakeForGroup) GenerateType(c *generator.Context, t *types.Type, w io
     		"Fake":                c.Universe.Type(types.Name{Package: "k8s.io/client-go/testing", Name: "Fake"}),
     		"RESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
     		"RESTClient":          c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "RESTClient"}),
    +		"FakeClient":          c.Universe.Type(types.Name{Package: "k8s.io/client-go/gentype", Name: "FakeClient"}),
    +		"NewFakeClient":       c.Universe.Function(types.Name{Package: "k8s.io/client-go/gentype", Name: "NewFakeClient"}),
     	}
     
     	sw.Do(groupClientTemplate, m)
    @@ -90,7 +91,7 @@ func (g *genFakeForGroup) GenerateType(c *generator.Context, t *types.Type, w io
     			"type":              t,
     			"GroupGoName":       g.groupGoName,
     			"Version":           namer.IC(g.version),
    -			"realClientPackage": strings.ToLower(filepath.Base(g.realClientPackage)),
    +			"realClientPackage": strings.ToLower(path.Base(g.realClientPackage)),
     		}
     		if tags.NonNamespaced {
     			sw.Do(getterImplNonNamespaced, wrapper)
    @@ -110,13 +111,13 @@ type Fake$.GroupGoName$$.Version$ struct {
     
     var getterImplNamespaced = `
     func (c *Fake$.GroupGoName$$.Version$) $.type|publicPlural$(namespace string) $.realClientPackage$.$.type|public$Interface {
    -	return &Fake$.type|publicPlural${c, namespace}
    +	return newFake$.type|publicPlural$(c, namespace)
     }
     `
     
     var getterImplNonNamespaced = `
     func (c *Fake$.GroupGoName$$.Version$) $.type|publicPlural$() $.realClientPackage$.$.type|public$Interface {
    -	return &Fake$.type|publicPlural${c}
    +	return newFake$.type|publicPlural$(c)
     }
     `
     
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_type.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_type.go
    index 28b829cc1390..6c1410039ee0 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_type.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/fake/generator_fake_for_type.go
    @@ -18,22 +18,24 @@ package fake
     
     import (
     	"io"
    -	gopath "path"
    -	"path/filepath"
    +	"path"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"golang.org/x/text/cases"
    +	"golang.org/x/text/language"
    +
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     )
     
     // genFakeForType produces a file for each top-level type.
     type genFakeForType struct {
    -	generator.DefaultGen
    -	outputPackage             string
    -	group                     string
    +	generator.GoGenerator
    +	outputPackage             string // Must be a Go import-path
    +	realClientPackage         string // Must be a Go import-path
     	version                   string
     	groupGoName               string
     	inputPackage              string
    @@ -44,6 +46,8 @@ type genFakeForType struct {
     
     var _ generator.Generator = &genFakeForType{}
     
    +var titler = cases.Title(language.Und)
    +
     // Filter ignores all but one type because we're making a single file per type.
     func (g *genFakeForType) Filter(c *generator.Context, t *types.Type) bool { return t == g.typeToMatch }
     
    @@ -57,37 +61,9 @@ func (g *genFakeForType) Imports(c *generator.Context) (imports []string) {
     	return g.imports.ImportLines()
     }
     
    -// Ideally, we'd like genStatus to return true if there is a subresource path
    -// registered for "status" in the API server, but we do not have that
    -// information, so genStatus returns true if the type has a status field.
    -func genStatus(t *types.Type) bool {
    -	// Default to true if we have a Status member
    -	hasStatus := false
    -	for _, m := range t.Members {
    -		if m.Name == "Status" {
    -			hasStatus = true
    -			break
    -		}
    -	}
    -
    -	tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
    -	return hasStatus && !tags.NoStatus
    -}
    -
    -// hasObjectMeta returns true if the type has a ObjectMeta field.
    -func hasObjectMeta(t *types.Type) bool {
    -	for _, m := range t.Members {
    -		if m.Embedded && m.Name == "ObjectMeta" {
    -			return true
    -		}
    -	}
    -	return false
    -}
    -
     // GenerateType makes the body of a file implementing the individual typed client for type t.
     func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
     	sw := generator.NewSnippetWriter(w, c, "$", "$")
    -	pkg := filepath.Base(t.Name.Package)
     	tags, err := util.ParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
     	if err != nil {
     		return err
    @@ -95,117 +71,83 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
     
     	const pkgClientGoTesting = "k8s.io/client-go/testing"
     	m := map[string]interface{}{
    -		"type":               t,
    -		"inputType":          t,
    -		"resultType":         t,
    -		"subresourcePath":    "",
    -		"package":            pkg,
    -		"Package":            namer.IC(pkg),
    -		"namespaced":         !tags.NonNamespaced,
    -		"Group":              namer.IC(g.group),
    -		"GroupGoName":        g.groupGoName,
    -		"Version":            namer.IC(g.version),
    -		"version":            g.version,
    -		"SchemeGroupVersion": c.Universe.Type(types.Name{Package: t.Name.Package, Name: "SchemeGroupVersion"}),
    -		"CreateOptions":      c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "CreateOptions"}),
    -		"DeleteOptions":      c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "DeleteOptions"}),
    -		"GetOptions":         c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "GetOptions"}),
    -		"ListOptions":        c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ListOptions"}),
    -		"PatchOptions":       c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "PatchOptions"}),
    -		"ApplyOptions":       c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ApplyOptions"}),
    -		"UpdateOptions":      c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "UpdateOptions"}),
    -		"Everything":         c.Universe.Function(types.Name{Package: "k8s.io/apimachinery/pkg/labels", Name: "Everything"}),
    -		"PatchType":          c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "PatchType"}),
    -		"ApplyPatchType":     c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "ApplyPatchType"}),
    -		"watchInterface":     c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/watch", Name: "Interface"}),
    -		"jsonMarshal":        c.Universe.Type(types.Name{Package: "encoding/json", Name: "Marshal"}),
    -
    -		"NewRootListAction":              c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootListAction"}),
    -		"NewListAction":                  c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewListAction"}),
    -		"NewRootGetAction":               c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootGetAction"}),
    -		"NewGetAction":                   c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewGetAction"}),
    -		"NewRootDeleteAction":            c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootDeleteAction"}),
    -		"NewRootDeleteActionWithOptions": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootDeleteActionWithOptions"}),
    -		"NewDeleteAction":                c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewDeleteAction"}),
    -		"NewDeleteActionWithOptions":     c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewDeleteActionWithOptions"}),
    -		"NewRootDeleteCollectionAction":  c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootDeleteCollectionAction"}),
    -		"NewDeleteCollectionAction":      c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewDeleteCollectionAction"}),
    -		"NewRootUpdateAction":            c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootUpdateAction"}),
    -		"NewUpdateAction":                c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewUpdateAction"}),
    -		"NewRootCreateAction":            c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootCreateAction"}),
    -		"NewCreateAction":                c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewCreateAction"}),
    -		"NewRootWatchAction":             c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootWatchAction"}),
    -		"NewWatchAction":                 c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewWatchAction"}),
    -		"NewCreateSubresourceAction":     c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewCreateSubresourceAction"}),
    -		"NewRootCreateSubresourceAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootCreateSubresourceAction"}),
    -		"NewUpdateSubresourceAction":     c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewUpdateSubresourceAction"}),
    -		"NewGetSubresourceAction":        c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewGetSubresourceAction"}),
    -		"NewRootGetSubresourceAction":    c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootGetSubresourceAction"}),
    -		"NewRootUpdateSubresourceAction": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootUpdateSubresourceAction"}),
    -		"NewRootPatchAction":             c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootPatchAction"}),
    -		"NewPatchAction":                 c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewPatchAction"}),
    -		"NewRootPatchSubresourceAction":  c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootPatchSubresourceAction"}),
    -		"NewPatchSubresourceAction":      c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewPatchSubresourceAction"}),
    -		"ExtractFromListOptions":         c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "ExtractFromListOptions"}),
    +		"type":                t,
    +		"inputType":           t,
    +		"resultType":          t,
    +		"subresourcePath":     "",
    +		"namespaced":          !tags.NonNamespaced,
    +		"GroupGoName":         g.groupGoName,
    +		"Version":             namer.IC(g.version),
    +		"realClientInterface": c.Universe.Type(types.Name{Package: g.realClientPackage, Name: t.Name.Name + "Interface"}),
    +		"SchemeGroupVersion":  c.Universe.Type(types.Name{Package: t.Name.Package, Name: "SchemeGroupVersion"}),
    +		"CreateOptions":       c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "CreateOptions"}),
    +		"DeleteOptions":       c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "DeleteOptions"}),
    +		"GetOptions":          c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "GetOptions"}),
    +		"ListOptions":         c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ListOptions"}),
    +		"PatchOptions":        c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "PatchOptions"}),
    +		"ApplyOptions":        c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ApplyOptions"}),
    +		"UpdateOptions":       c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "UpdateOptions"}),
    +		"PatchType":           c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "PatchType"}),
    +		"ApplyPatchType":      c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "ApplyPatchType"}),
    +		"watchInterface":      c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/watch", Name: "Interface"}),
    +		"jsonMarshal":         c.Universe.Type(types.Name{Package: "encoding/json", Name: "Marshal"}),
    +		"fmtErrorf":           c.Universe.Type(types.Name{Package: "fmt", Name: "Errorf"}),
    +		"contextContext":      c.Universe.Type(types.Name{Package: "context", Name: "Context"}),
    +
    +		"NewRootListActionWithOptions":              c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootListActionWithOptions"}),
    +		"NewListActionWithOptions":                  c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewListActionWithOptions"}),
    +		"NewRootGetActionWithOptions":               c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootGetActionWithOptions"}),
    +		"NewGetActionWithOptions":                   c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewGetActionWithOptions"}),
    +		"NewRootDeleteActionWithOptions":            c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootDeleteActionWithOptions"}),
    +		"NewDeleteActionWithOptions":                c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewDeleteActionWithOptions"}),
    +		"NewRootUpdateActionWithOptions":            c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootUpdateActionWithOptions"}),
    +		"NewUpdateActionWithOptions":                c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewUpdateActionWithOptions"}),
    +		"NewRootCreateActionWithOptions":            c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootCreateActionWithOptions"}),
    +		"NewCreateActionWithOptions":                c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewCreateActionWithOptions"}),
    +		"NewRootWatchActionWithOptions":             c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootWatchActionWithOptions"}),
    +		"NewWatchActionWithOptions":                 c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewWatchActionWithOptions"}),
    +		"NewCreateSubresourceActionWithOptions":     c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewCreateSubresourceActionWithOptions"}),
    +		"NewRootCreateSubresourceActionWithOptions": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootCreateSubresourceActionWithOptions"}),
    +		"NewUpdateSubresourceActionWithOptions":     c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewUpdateSubresourceActionWithOptions"}),
    +		"NewGetSubresourceActionWithOptions":        c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewGetSubresourceActionWithOptions"}),
    +		"NewRootGetSubresourceActionWithOptions":    c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootGetSubresourceActionWithOptions"}),
    +		"NewRootUpdateSubresourceActionWithOptions": c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootUpdateSubresourceActionWithOptions"}),
    +		"NewRootPatchSubresourceActionWithOptions":  c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewRootPatchSubresourceActionWithOptions"}),
    +		"NewPatchSubresourceActionWithOptions":      c.Universe.Function(types.Name{Package: pkgClientGoTesting, Name: "NewPatchSubresourceActionWithOptions"}),
    +		"FakeClient":                                c.Universe.Type(types.Name{Package: "k8s.io/client-go/gentype", Name: "FakeClient"}),
    +		"NewFakeClient":                             c.Universe.Function(types.Name{Package: "k8s.io/client-go/gentype", Name: "NewFakeClient"}),
    +		"FakeClientWithApply":                       c.Universe.Type(types.Name{Package: "k8s.io/client-go/gentype", Name: "FakeClientWithApply"}),
    +		"NewFakeClientWithApply":                    c.Universe.Function(types.Name{Package: "k8s.io/client-go/gentype", Name: "NewFakeClientWithApply"}),
    +		"FakeClientWithList":                        c.Universe.Type(types.Name{Package: "k8s.io/client-go/gentype", Name: "FakeClientWithList"}),
    +		"NewFakeClientWithList":                     c.Universe.Function(types.Name{Package: "k8s.io/client-go/gentype", Name: "NewFakeClientWithList"}),
    +		"FakeClientWithListAndApply":                c.Universe.Type(types.Name{Package: "k8s.io/client-go/gentype", Name: "FakeClientWithListAndApply"}),
    +		"NewFakeClientWithListAndApply":             c.Universe.Function(types.Name{Package: "k8s.io/client-go/gentype", Name: "NewFakeClientWithListAndApply"}),
     	}
     
     	generateApply := len(g.applyConfigurationPackage) > 0
     	if generateApply {
     		// Generated apply builder type references required for generated Apply function
     		_, gvString := util.ParsePathGroupVersion(g.inputPackage)
    -		m["inputApplyConfig"] = types.Ref(gopath.Join(g.applyConfigurationPackage, gvString), t.Name.Name+"ApplyConfiguration")
    +		m["inputApplyConfig"] = types.Ref(path.Join(g.applyConfigurationPackage, gvString), t.Name.Name+"ApplyConfiguration")
     	}
     
    -	if tags.NonNamespaced {
    -		sw.Do(structNonNamespaced, m)
    -	} else {
    -		sw.Do(structNamespaced, m)
    -	}
    +	listableOrAppliable := noList | noApply
     
    -	if tags.NoVerbs {
    -		return sw.Error()
    +	if !tags.NoVerbs && tags.HasVerb("list") {
    +		listableOrAppliable |= withList
     	}
    -	sw.Do(resource, m)
    -	sw.Do(kind, m)
     
    -	if tags.HasVerb("get") {
    -		sw.Do(getTemplate, m)
    -	}
    -	if tags.HasVerb("list") {
    -		if hasObjectMeta(t) {
    -			sw.Do(listUsingOptionsTemplate, m)
    -		} else {
    -			sw.Do(listTemplate, m)
    -		}
    -	}
    -	if tags.HasVerb("watch") {
    -		sw.Do(watchTemplate, m)
    +	if !tags.NoVerbs && tags.HasVerb("apply") && generateApply {
    +		listableOrAppliable |= withApply
     	}
     
    -	if tags.HasVerb("create") {
    -		sw.Do(createTemplate, m)
    -	}
    -	if tags.HasVerb("update") {
    -		sw.Do(updateTemplate, m)
    -	}
    -	if tags.HasVerb("updateStatus") && genStatus(t) {
    -		sw.Do(updateStatusTemplate, m)
    -	}
    -	if tags.HasVerb("delete") {
    -		sw.Do(deleteTemplate, m)
    -	}
    -	if tags.HasVerb("deleteCollection") {
    -		sw.Do(deleteCollectionTemplate, m)
    -	}
    -	if tags.HasVerb("patch") {
    -		sw.Do(patchTemplate, m)
    -	}
    -	if tags.HasVerb("apply") && generateApply {
    -		sw.Do(applyTemplate, m)
    -	}
    -	if tags.HasVerb("applyStatus") && generateApply && genStatus(t) {
    -		sw.Do(applyStatusTemplate, m)
    +	sw.Do(structType[listableOrAppliable], m)
    +	sw.Do(newStruct[listableOrAppliable], m)
    +
    +	if tags.NoVerbs {
    +		return sw.Error()
     	}
    +
     	_, typeGVString := util.ParsePathGroupVersion(g.inputPackage)
     
     	// generate extended client methods
    @@ -237,7 +179,7 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
     		m["resultType"] = &resultType
     		m["subresourcePath"] = e.SubResourcePath
     		if e.HasVerb("apply") {
    -			m["inputApplyConfig"] = types.Ref(gopath.Join(g.applyConfigurationPackage, inputGVString), inputType.Name.Name+"ApplyConfiguration")
    +			m["inputApplyConfig"] = types.Ref(path.Join(g.applyConfigurationPackage, inputGVString), inputType.Name.Name+"ApplyConfiguration")
     		}
     
     		if e.HasVerb("get") {
    @@ -249,7 +191,6 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
     		}
     
     		if e.HasVerb("list") {
    -
     			sw.Do(adjustTemplate(e.VerbName, e.VerbType, listTemplate), m)
     		}
     
    @@ -300,79 +241,152 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
     // TODO: Make the verbs in templates parametrized so the strings.Replace() is
     // not needed.
     func adjustTemplate(name, verbType, template string) string {
    -	return strings.Replace(template, " "+strings.Title(verbType), " "+name, -1)
    +	return strings.ReplaceAll(template, " "+titler.String(verbType), " "+name)
     }
     
    -// template for the struct that implements the type's interface
    -var structNamespaced = `
    -// Fake$.type|publicPlural$ implements $.type|public$Interface
    -type Fake$.type|publicPlural$ struct {
    -	Fake *Fake$.GroupGoName$$.Version$
    -	ns     string
    -}
    -`
    +// struct and constructor variants
    +const (
    +	// The following values are bits in a bitmask.
    +	// The values which can be set indicate list support and apply support;
    +	// to make the declarations easier to read (like a truth table), corresponding zero-values
    +	// are also declared.
    +	noList   = 0
    +	noApply  = 0
    +	withList = 1 << iota
    +	withApply
    +)
     
    -// template for the struct that implements the type's interface
    -var structNonNamespaced = `
    -// Fake$.type|publicPlural$ implements $.type|public$Interface
    -type Fake$.type|publicPlural$ struct {
    -	Fake *Fake$.GroupGoName$$.Version$
    +// The following string slices are similar to maps, but with combinable keys used as indices.
    +// Each entry defines whether it supports lists and/or apply; each bit is then toggled:
    +// * noList, noApply: index 0;
    +// * withList, noApply: index 1;
    +// * noList, withApply: index 2;
    +// * withList, withApply: index 3.
    +// Go enforces index unicity in these kinds of declarations.
    +
    +// struct declarations
    +var structType = []string{
    +	noList | noApply: `
    +	// fake$.type|publicPlural$ implements $.type|public$Interface
    +	type fake$.type|publicPlural$ struct {
    +		*$.FakeClient|raw$[*$.type|raw$]
    +		Fake *Fake$.GroupGoName$$.Version$
    +	}
    +	`,
    +	withList | noApply: `
    +	// fake$.type|publicPlural$ implements $.type|public$Interface
    +	type fake$.type|publicPlural$ struct {
    +		*$.FakeClientWithList|raw$[*$.type|raw$, *$.type|raw$List]
    +		Fake *Fake$.GroupGoName$$.Version$
    +	}
    +	`,
    +	noList | withApply: `
    +	// fake$.type|publicPlural$ implements $.type|public$Interface
    +	type fake$.type|publicPlural$ struct {
    +		*$.FakeClientWithApply|raw$[*$.type|raw$, *$.inputApplyConfig|raw$]
    +		Fake *Fake$.GroupGoName$$.Version$
    +	}
    +	`,
    +	withList | withApply: `
    +	// fake$.type|publicPlural$ implements $.type|public$Interface
    +	type fake$.type|publicPlural$ struct {
    +		*$.FakeClientWithListAndApply|raw$[*$.type|raw$, *$.type|raw$List, *$.inputApplyConfig|raw$]
    +		Fake *Fake$.GroupGoName$$.Version$
    +	}
    +	`,
     }
    -`
     
    -var resource = `
    -var $.type|allLowercasePlural$Resource = $.SchemeGroupVersion|raw$.WithResource("$.type|resource$")
    -`
    -
    -var kind = `
    -var $.type|allLowercasePlural$Kind = $.SchemeGroupVersion|raw$.WithKind("$.type|singularKind$")
    -`
    -
    -var listTemplate = `
    -// List takes label and field selectors, and returns the list of $.type|publicPlural$ that match those selectors.
    -func (c *Fake$.type|publicPlural$) List(ctx context.Context, opts $.ListOptions|raw$) (result *$.type|raw$List, err error) {
    -	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewListAction|raw$($.type|allLowercasePlural$Resource, $.type|allLowercasePlural$Kind, c.ns, opts), &$.type|raw$List{})
    -		$else$Invokes($.NewRootListAction|raw$($.type|allLowercasePlural$Resource, $.type|allLowercasePlural$Kind, opts), &$.type|raw$List{})$end$
    -	if obj == nil {
    -		return nil, err
    +// Constructors for the struct, in all variants
    +var newStruct = []string{
    +	noList | noApply: `
    +	func newFake$.type|publicPlural$(fake *Fake$.GroupGoName$$.Version$$if .namespaced$, namespace string$end$) $.realClientInterface|raw$ {
    +		return &fake$.type|publicPlural${
    +			$.NewFakeClient|raw$[*$.type|raw$](
    +				fake.Fake,
    +				$if .namespaced$namespace$else$""$end$,
    +				$.SchemeGroupVersion|raw$.WithResource("$.type|resource$"),
    +				$.SchemeGroupVersion|raw$.WithKind("$.type|singularKind$"),
    +				func() *$.type|raw$ {return &$.type|raw${}},
    +			),
    +			fake,
    +		}
     	}
    -	return obj.(*$.type|raw$List), err
    +	`,
    +	noList | withApply: `
    +	func newFake$.type|publicPlural$(fake *Fake$.GroupGoName$$.Version$$if .namespaced$, namespace string$end$) $.realClientInterface|raw$ {
    +		return &fake$.type|publicPlural${
    +			$.NewFakeClientWithApply|raw$[*$.type|raw$, *$.inputApplyConfig|raw$](
    +				fake.Fake,
    +				$if .namespaced$namespace$else$""$end$,
    +				$.SchemeGroupVersion|raw$.WithResource("$.type|resource$"),
    +				$.SchemeGroupVersion|raw$.WithKind("$.type|singularKind$"),
    +				func() *$.type|raw$ {return &$.type|raw${}},
    +			),
    +			fake,
    +		}
    +	}
    +	`,
    +	withList | noApply: `
    +	func newFake$.type|publicPlural$(fake *Fake$.GroupGoName$$.Version$$if .namespaced$, namespace string$end$) $.realClientInterface|raw$ {
    +		return &fake$.type|publicPlural${
    +			$.NewFakeClientWithList|raw$[*$.type|raw$, *$.type|raw$List](
    +				fake.Fake,
    +				$if .namespaced$namespace$else$""$end$,
    +				$.SchemeGroupVersion|raw$.WithResource("$.type|resource$"),
    +				$.SchemeGroupVersion|raw$.WithKind("$.type|singularKind$"),
    +				func() *$.type|raw$ {return &$.type|raw${}},
    +				func() *$.type|raw$List {return &$.type|raw$List{}},
    +				func(dst, src *$.type|raw$List) {dst.ListMeta = src.ListMeta},
    +				func(list *$.type|raw$List) []*$.type|raw$ {return gentype.ToPointerSlice(list.Items)},
    +				func(list *$.type|raw$List, items []*$.type|raw$) {list.Items = gentype.FromPointerSlice(items)},
    +			),
    +			fake,
    +		}
    +	}
    +	`,
    +	withList | withApply: `
    +	func newFake$.type|publicPlural$(fake *Fake$.GroupGoName$$.Version$$if .namespaced$, namespace string$end$) $.realClientInterface|raw$ {
    +		return &fake$.type|publicPlural${
    +			$.NewFakeClientWithListAndApply|raw$[*$.type|raw$, *$.type|raw$List, *$.inputApplyConfig|raw$](
    +				fake.Fake,
    +				$if .namespaced$namespace$else$""$end$,
    +				$.SchemeGroupVersion|raw$.WithResource("$.type|resource$"),
    +				$.SchemeGroupVersion|raw$.WithKind("$.type|singularKind$"),
    +				func() *$.type|raw$ {return &$.type|raw${}},
    +				func() *$.type|raw$List {return &$.type|raw$List{}},
    +				func(dst, src *$.type|raw$List) {dst.ListMeta = src.ListMeta},
    +				func(list *$.type|raw$List) []*$.type|raw$ {return gentype.ToPointerSlice(list.Items)},
    +				func(list *$.type|raw$List, items []*$.type|raw$) {list.Items = gentype.FromPointerSlice(items)},
    +			),
    +			fake,
    +		}
    +	}
    +	`,
     }
    -`
     
    -var listUsingOptionsTemplate = `
    +var listTemplate = `
     // List takes label and field selectors, and returns the list of $.type|publicPlural$ that match those selectors.
    -func (c *Fake$.type|publicPlural$) List(ctx context.Context, opts $.ListOptions|raw$) (result *$.type|raw$List, err error) {
    +func (c *fake$.type|publicPlural$) List(ctx $.contextContext|raw$, opts $.ListOptions|raw$) (result *$.type|raw$List, err error) {
    +	emptyResult := &$.type|raw$List{}
     	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewListAction|raw$($.type|allLowercasePlural$Resource, $.type|allLowercasePlural$Kind, c.ns, opts), &$.type|raw$List{})
    -		$else$Invokes($.NewRootListAction|raw$($.type|allLowercasePlural$Resource, $.type|allLowercasePlural$Kind, opts), &$.type|raw$List{})$end$
    +		$if .namespaced$Invokes($.NewListActionWithOptions|raw$(c.Resource(), c.Kind(), c.Namespace(), opts), emptyResult)
    +		$else$Invokes($.NewRootListActionWithOptions|raw$(c.Resource(), c.Kind(), opts), emptyResult)$end$
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
    -
    -	label, _, _ := $.ExtractFromListOptions|raw$(opts)
    -	if label == nil {
    -		label = $.Everything|raw$()
    -	}
    -	list := &$.type|raw$List{ListMeta: obj.(*$.type|raw$List).ListMeta}
    -	for _, item := range obj.(*$.type|raw$List).Items {
    -		if label.Matches(labels.Set(item.Labels)) {
    -			list.Items = append(list.Items, item)
    -		}
    -	}
    -	return list, err
    +	return obj.(*$.type|raw$List), err
     }
     `
     
     var getTemplate = `
     // Get takes name of the $.type|private$, and returns the corresponding $.resultType|private$ object, and an error if there is any.
    -func (c *Fake$.type|publicPlural$) Get(ctx context.Context, name string, options $.GetOptions|raw$) (result *$.resultType|raw$, err error) {
    +func (c *fake$.type|publicPlural$) Get(ctx $.contextContext|raw$, name string, options $.GetOptions|raw$) (result *$.resultType|raw$, err error) {
    +	emptyResult := &$.resultType|raw${}
     	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewGetAction|raw$($.type|allLowercasePlural$Resource, c.ns, name), &$.resultType|raw${})
    -		$else$Invokes($.NewRootGetAction|raw$($.type|allLowercasePlural$Resource, name), &$.resultType|raw${})$end$
    +		$if .namespaced$Invokes($.NewGetActionWithOptions|raw$(c.Resource(), c.Namespace(), name, options), emptyResult)
    +		$else$Invokes($.NewRootGetActionWithOptions|raw$(c.Resource(), name, options), emptyResult)$end$
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*$.resultType|raw$), err
     }
    @@ -380,12 +394,13 @@ func (c *Fake$.type|publicPlural$) Get(ctx context.Context, name string, options
     
     var getSubresourceTemplate = `
     // Get takes name of the $.type|private$, and returns the corresponding $.resultType|private$ object, and an error if there is any.
    -func (c *Fake$.type|publicPlural$) Get(ctx context.Context, $.type|private$Name string, options $.GetOptions|raw$) (result *$.resultType|raw$, err error) {
    +func (c *fake$.type|publicPlural$) Get(ctx $.contextContext|raw$, $.type|private$Name string, options $.GetOptions|raw$) (result *$.resultType|raw$, err error) {
    +	emptyResult := &$.resultType|raw${}
     	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewGetSubresourceAction|raw$($.type|allLowercasePlural$Resource, c.ns, "$.subresourcePath$", $.type|private$Name), &$.resultType|raw${})
    -		$else$Invokes($.NewRootGetSubresourceAction|raw$($.type|allLowercasePlural$Resource, "$.subresourcePath$", $.type|private$Name), &$.resultType|raw${})$end$
    +		$if .namespaced$Invokes($.NewGetSubresourceActionWithOptions|raw$(c.Resource(), c.Namespace(), "$.subresourcePath$", $.type|private$Name, options), emptyResult)
    +		$else$Invokes($.NewRootGetSubresourceActionWithOptions|raw$(c.Resource(), "$.subresourcePath$", $.type|private$Name, options), emptyResult)$end$
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*$.resultType|raw$), err
     }
    @@ -393,32 +408,23 @@ func (c *Fake$.type|publicPlural$) Get(ctx context.Context, $.type|private$Name
     
     var deleteTemplate = `
     // Delete takes name of the $.type|private$ and deletes it. Returns an error if one occurs.
    -func (c *Fake$.type|publicPlural$) Delete(ctx context.Context, name string, opts $.DeleteOptions|raw$) error {
    +func (c *fake$.type|publicPlural$) Delete(ctx $.contextContext|raw$, name string, opts $.DeleteOptions|raw$) error {
     	_, err := c.Fake.
    -		$if .namespaced$Invokes($.NewDeleteActionWithOptions|raw$($.type|allLowercasePlural$Resource, c.ns, name, opts), &$.type|raw${})
    -		$else$Invokes($.NewRootDeleteActionWithOptions|raw$($.type|allLowercasePlural$Resource, name, opts), &$.type|raw${})$end$
    +		$if .namespaced$Invokes($.NewDeleteActionWithOptions|raw$(c.Resource(), c.Namespace(), name, opts), &$.type|raw${})
    +		$else$Invokes($.NewRootDeleteActionWithOptions|raw$(c.Resource(), name, opts), &$.type|raw${})$end$
     	return err
     }
     `
     
    -var deleteCollectionTemplate = `
    -// DeleteCollection deletes a collection of objects.
    -func (c *Fake$.type|publicPlural$) DeleteCollection(ctx context.Context, opts $.DeleteOptions|raw$, listOpts $.ListOptions|raw$) error {
    -	$if .namespaced$action := $.NewDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, c.ns, listOpts)
    -	$else$action := $.NewRootDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, listOpts)
    -	$end$
    -	_, err := c.Fake.Invokes(action, &$.type|raw$List{})
    -	return err
    -}
    -`
     var createTemplate = `
     // Create takes the representation of a $.inputType|private$ and creates it.  Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    -func (c *Fake$.type|publicPlural$) Create(ctx context.Context, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (result *$.resultType|raw$, err error) {
    +func (c *fake$.type|publicPlural$) Create(ctx $.contextContext|raw$, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (result *$.resultType|raw$, err error) {
    +	emptyResult := &$.resultType|raw${}
     	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewCreateAction|raw$($.inputType|allLowercasePlural$Resource, c.ns, $.inputType|private$), &$.resultType|raw${})
    -		$else$Invokes($.NewRootCreateAction|raw$($.inputType|allLowercasePlural$Resource, $.inputType|private$), &$.resultType|raw${})$end$
    +		$if .namespaced$Invokes($.NewCreateActionWithOptions|raw$(c.Resource(), c.Namespace(), $.inputType|private$, opts), emptyResult)
    +		$else$Invokes($.NewRootCreateActionWithOptions|raw$(c.Resource(), $.inputType|private$, opts), emptyResult)$end$
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*$.resultType|raw$), err
     }
    @@ -426,12 +432,13 @@ func (c *Fake$.type|publicPlural$) Create(ctx context.Context, $.inputType|priva
     
     var createSubresourceTemplate = `
     // Create takes the representation of a $.inputType|private$ and creates it.  Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    -func (c *Fake$.type|publicPlural$) Create(ctx context.Context, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (result *$.resultType|raw$, err error) {
    +func (c *fake$.type|publicPlural$) Create(ctx $.contextContext|raw$, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (result *$.resultType|raw$, err error) {
    +	emptyResult := &$.resultType|raw${}
     	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewCreateSubresourceAction|raw$($.type|allLowercasePlural$Resource, $.type|private$Name, "$.subresourcePath$", c.ns, $.inputType|private$), &$.resultType|raw${})
    -		$else$Invokes($.NewRootCreateSubresourceAction|raw$($.type|allLowercasePlural$Resource, $.type|private$Name, "$.subresourcePath$", $.inputType|private$), &$.resultType|raw${})$end$
    +		$if .namespaced$Invokes($.NewCreateSubresourceActionWithOptions|raw$(c.Resource(), $.type|private$Name, "$.subresourcePath$", c.Namespace(), $.inputType|private$, opts), emptyResult)
    +		$else$Invokes($.NewRootCreateSubresourceActionWithOptions|raw$(c.Resource(), $.type|private$Name, "$.subresourcePath$", $.inputType|private$, opts), emptyResult)$end$
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*$.resultType|raw$), err
     }
    @@ -439,12 +446,13 @@ func (c *Fake$.type|publicPlural$) Create(ctx context.Context, $.type|private$Na
     
     var updateTemplate = `
     // Update takes the representation of a $.inputType|private$ and updates it. Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    -func (c *Fake$.type|publicPlural$) Update(ctx context.Context, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (result *$.resultType|raw$, err error) {
    +func (c *fake$.type|publicPlural$) Update(ctx $.contextContext|raw$, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (result *$.resultType|raw$, err error) {
    +	emptyResult := &$.resultType|raw${}
     	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewUpdateAction|raw$($.inputType|allLowercasePlural$Resource, c.ns, $.inputType|private$), &$.resultType|raw${})
    -		$else$Invokes($.NewRootUpdateAction|raw$($.inputType|allLowercasePlural$Resource, $.inputType|private$), &$.resultType|raw${})$end$
    +		$if .namespaced$Invokes($.NewUpdateActionWithOptions|raw$(c.Resource(), c.Namespace(), $.inputType|private$, opts), emptyResult)
    +		$else$Invokes($.NewRootUpdateActionWithOptions|raw$(c.Resource(), $.inputType|private$, opts), emptyResult)$end$
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*$.resultType|raw$), err
     }
    @@ -452,48 +460,36 @@ func (c *Fake$.type|publicPlural$) Update(ctx context.Context, $.inputType|priva
     
     var updateSubresourceTemplate = `
     // Update takes the representation of a $.inputType|private$ and updates it. Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    -func (c *Fake$.type|publicPlural$) Update(ctx context.Context, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (result *$.resultType|raw$, err error) {
    +func (c *fake$.type|publicPlural$) Update(ctx $.contextContext|raw$, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (result *$.resultType|raw$, err error) {
    +	emptyResult := &$.resultType|raw${}
     	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewUpdateSubresourceAction|raw$($.type|allLowercasePlural$Resource, "$.subresourcePath$", c.ns, $.inputType|private$), &$.inputType|raw${})
    -		$else$Invokes($.NewRootUpdateSubresourceAction|raw$($.type|allLowercasePlural$Resource, "$.subresourcePath$", $.inputType|private$), &$.resultType|raw${})$end$
    +		$if .namespaced$Invokes($.NewUpdateSubresourceActionWithOptions|raw$(c.Resource(), "$.subresourcePath$", c.Namespace(), $.inputType|private$, opts), &$.inputType|raw${})
    +		$else$Invokes($.NewRootUpdateSubresourceActionWithOptions|raw$(c.Resource(), "$.subresourcePath$", $.inputType|private$, opts), emptyResult)$end$
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*$.resultType|raw$), err
     }
     `
     
    -var updateStatusTemplate = `
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *Fake$.type|publicPlural$) UpdateStatus(ctx context.Context, $.type|private$ *$.type|raw$, opts $.UpdateOptions|raw$) (*$.type|raw$, error) {
    -	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewUpdateSubresourceAction|raw$($.type|allLowercasePlural$Resource, "status", c.ns, $.type|private$), &$.type|raw${})
    -		$else$Invokes($.NewRootUpdateSubresourceAction|raw$($.type|allLowercasePlural$Resource, "status", $.type|private$), &$.type|raw${})$end$
    -	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*$.type|raw$), err
    -}
    -`
    -
     var watchTemplate = `
     // Watch returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
    -func (c *Fake$.type|publicPlural$) Watch(ctx context.Context, opts $.ListOptions|raw$) ($.watchInterface|raw$, error) {
    +func (c *fake$.type|publicPlural$) Watch(ctx $.contextContext|raw$, opts $.ListOptions|raw$) ($.watchInterface|raw$, error) {
     	return c.Fake.
    -		$if .namespaced$InvokesWatch($.NewWatchAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts))
    -		$else$InvokesWatch($.NewRootWatchAction|raw$($.type|allLowercasePlural$Resource, opts))$end$
    +		$if .namespaced$InvokesWatch($.NewWatchActionWithOptions|raw$(c.Resource(), c.Namespace(), opts))
    +		$else$InvokesWatch($.NewRootWatchActionWithOptions|raw$(c.Resource(), opts))$end$
     }
     `
     
     var patchTemplate = `
     // Patch applies the patch and returns the patched $.resultType|private$.
    -func (c *Fake$.type|publicPlural$) Patch(ctx context.Context, name string, pt $.PatchType|raw$, data []byte, opts $.PatchOptions|raw$, subresources ...string) (result *$.resultType|raw$, err error) {
    +func (c *fake$.type|publicPlural$) Patch(ctx $.contextContext|raw$, name string, pt $.PatchType|raw$, data []byte, opts $.PatchOptions|raw$, subresources ...string) (result *$.resultType|raw$, err error) {
    +	emptyResult := &$.resultType|raw${}
     	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewPatchSubresourceAction|raw$($.type|allLowercasePlural$Resource, c.ns, name, pt, data, subresources... ), &$.resultType|raw${})
    -		$else$Invokes($.NewRootPatchSubresourceAction|raw$($.type|allLowercasePlural$Resource, name, pt, data, subresources...), &$.resultType|raw${})$end$
    +		$if .namespaced$Invokes($.NewPatchSubresourceActionWithOptions|raw$(c.Resource(), c.Namespace(), name, pt, data, opts, subresources... ), emptyResult)
    +		$else$Invokes($.NewRootPatchSubresourceActionWithOptions|raw$(c.Resource(), name, pt, data, opts, subresources...), emptyResult)$end$
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*$.resultType|raw$), err
     }
    @@ -501,48 +497,24 @@ func (c *Fake$.type|publicPlural$) Patch(ctx context.Context, name string, pt $.
     
     var applyTemplate = `
     // Apply takes the given apply declarative configuration, applies it and returns the applied $.resultType|private$.
    -func (c *Fake$.type|publicPlural$) Apply(ctx context.Context, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error) {
    +func (c *fake$.type|publicPlural$) Apply(ctx $.contextContext|raw$, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error) {
     	if $.inputType|private$ == nil {
    -		return nil, fmt.Errorf("$.inputType|private$ provided to Apply must not be nil")
    +		return nil, $.fmtErrorf|raw$("$.inputType|private$ provided to Apply must not be nil")
     	}
     	data, err := $.jsonMarshal|raw$($.inputType|private$)
     	if err != nil {
     		return nil, err
     	}
    -    name := $.inputType|private$.Name
    +	name := $.inputType|private$.Name
     	if name == nil {
    -		return nil, fmt.Errorf("$.inputType|private$.Name must be provided to Apply")
    +		return nil, $.fmtErrorf|raw$("$.inputType|private$.Name must be provided to Apply")
     	}
    +	emptyResult := &$.resultType|raw${}
     	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewPatchSubresourceAction|raw$($.type|allLowercasePlural$Resource, c.ns, *name, $.ApplyPatchType|raw$, data), &$.resultType|raw${})
    -		$else$Invokes($.NewRootPatchSubresourceAction|raw$($.type|allLowercasePlural$Resource, *name, $.ApplyPatchType|raw$, data), &$.resultType|raw${})$end$
    +		$if .namespaced$Invokes($.NewPatchSubresourceActionWithOptions|raw$(c.Resource(), c.Namespace(), *name, $.ApplyPatchType|raw$, data, opts.ToPatchOptions()), emptyResult)
    +		$else$Invokes($.NewRootPatchSubresourceActionWithOptions|raw$(c.Resource(), *name, $.ApplyPatchType|raw$, data, opts.ToPatchOptions()), emptyResult)$end$
     	if obj == nil {
    -		return nil, err
    -	}
    -	return obj.(*$.resultType|raw$), err
    -}
    -`
    -
    -var applyStatusTemplate = `
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *Fake$.type|publicPlural$) ApplyStatus(ctx context.Context, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error) {
    -	if $.inputType|private$ == nil {
    -		return nil, fmt.Errorf("$.inputType|private$ provided to Apply must not be nil")
    -	}
    -	data, err := $.jsonMarshal|raw$($.inputType|private$)
    -	if err != nil {
    -		return nil, err
    -	}
    -    name := $.inputType|private$.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("$.inputType|private$.Name must be provided to Apply")
    -	}
    -	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewPatchSubresourceAction|raw$($.type|allLowercasePlural$Resource, c.ns, *name, $.ApplyPatchType|raw$, data, "status"), &$.resultType|raw${})
    -		$else$Invokes($.NewRootPatchSubresourceAction|raw$($.type|allLowercasePlural$Resource, *name, $.ApplyPatchType|raw$, data, "status"), &$.resultType|raw${})$end$
    -	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*$.resultType|raw$), err
     }
    @@ -551,19 +523,20 @@ func (c *Fake$.type|publicPlural$) ApplyStatus(ctx context.Context, $.inputType|
     var applySubresourceTemplate = `
     // Apply takes top resource name and the apply declarative configuration for $.subresourcePath$,
     // applies it and returns the applied $.resultType|private$, and an error, if there is any.
    -func (c *Fake$.type|publicPlural$) Apply(ctx context.Context, $.type|private$Name string, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error) {
    +func (c *fake$.type|publicPlural$) Apply(ctx $.contextContext|raw$, $.type|private$Name string, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error) {
     	if $.inputType|private$ == nil {
    -		return nil, fmt.Errorf("$.inputType|private$ provided to Apply must not be nil")
    +		return nil, $.fmtErrorf|raw$("$.inputType|private$ provided to Apply must not be nil")
     	}
     	data, err := $.jsonMarshal|raw$($.inputType|private$)
     	if err != nil {
     		return nil, err
     	}
    +	emptyResult := &$.resultType|raw${}
     	obj, err := c.Fake.
    -		$if .namespaced$Invokes($.NewPatchSubresourceAction|raw$($.type|allLowercasePlural$Resource, c.ns, $.type|private$Name, $.ApplyPatchType|raw$, data, "status"), &$.resultType|raw${})
    -		$else$Invokes($.NewRootPatchSubresourceAction|raw$($.type|allLowercasePlural$Resource, $.type|private$Name, $.ApplyPatchType|raw$, data, "status"), &$.resultType|raw${})$end$
    +		$if .namespaced$Invokes($.NewPatchSubresourceActionWithOptions|raw$(c.Resource(), c.Namespace(), $.type|private$Name, $.ApplyPatchType|raw$, data, opts.ToPatchOptions(), "$.inputType|private$"), emptyResult)
    +		$else$Invokes($.NewRootPatchSubresourceActionWithOptions|raw$(c.Resource(), $.type|private$Name, $.ApplyPatchType|raw$, data, opts.ToPatchOptions(), "$.inputType|private$"), emptyResult)$end$
     	if obj == nil {
    -		return nil, err
    +		return emptyResult, err
     	}
     	return obj.(*$.resultType|raw$), err
     }
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_clientset.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_clientset.go
    index 6bf1ca37f887..e84205604dbc 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_clientset.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_clientset.go
    @@ -19,22 +19,21 @@ package generators
     import (
     	"fmt"
     	"io"
    -	"path/filepath"
    +	"path"
     	"strings"
     
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     // genClientset generates a package for a clientset.
     type genClientset struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	groups             []clientgentypes.GroupVersions
     	groupGoNames       map[clientgentypes.GroupVersion]string
    -	clientsetPackage   string
    -	outputPackage      string
    +	clientsetPackage   string // must be a Go import-path
     	imports            namer.ImportTracker
     	clientsetGenerated bool
     }
    @@ -43,7 +42,7 @@ var _ generator.Generator = &genClientset{}
     
     func (g *genClientset) Namers(c *generator.Context) namer.NameSystems {
     	return namer.NameSystems{
    -		"raw": namer.NewRawNamer(g.outputPackage, g.imports),
    +		"raw": namer.NewRawNamer(g.clientsetPackage, g.imports),
     	}
     }
     
    @@ -58,7 +57,7 @@ func (g *genClientset) Imports(c *generator.Context) (imports []string) {
     	imports = append(imports, g.imports.ImportLines()...)
     	for _, group := range g.groups {
     		for _, version := range group.Versions {
    -			typedClientPath := filepath.Join(g.clientsetPackage, "typed", strings.ToLower(group.PackageName), strings.ToLower(version.NonEmpty()))
    +			typedClientPath := path.Join(g.clientsetPackage, "typed", strings.ToLower(group.PackageName), strings.ToLower(version.NonEmpty()))
     			groupAlias := strings.ToLower(g.groupGoNames[clientgentypes.GroupVersion{Group: group.Group, Version: version.Version}])
     			imports = append(imports, fmt.Sprintf("%s%s \"%s\"", groupAlias, strings.ToLower(version.NonEmpty()), typedClientPath))
     		}
    @@ -74,12 +73,14 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
     	allGroups := clientgentypes.ToGroupVersionInfo(g.groups, g.groupGoNames)
     	m := map[string]interface{}{
     		"allGroups":                            allGroups,
    +		"fmtErrorf":                            c.Universe.Type(types.Name{Package: "fmt", Name: "Errorf"}),
     		"Config":                               c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Config"}),
     		"DefaultKubernetesUserAgent":           c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "DefaultKubernetesUserAgent"}),
     		"RESTClientInterface":                  c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
     		"RESTHTTPClientFor":                    c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "HTTPClientFor"}),
     		"DiscoveryInterface":                   c.Universe.Type(types.Name{Package: "k8s.io/client-go/discovery", Name: "DiscoveryInterface"}),
     		"DiscoveryClient":                      c.Universe.Type(types.Name{Package: "k8s.io/client-go/discovery", Name: "DiscoveryClient"}),
    +		"httpClient":                           c.Universe.Type(types.Name{Package: "net/http", Name: "Client"}),
     		"NewDiscoveryClientForConfigAndClient": c.Universe.Function(types.Name{Package: "k8s.io/client-go/discovery", Name: "NewDiscoveryClientForConfigAndClient"}),
     		"NewDiscoveryClientForConfigOrDie":     c.Universe.Function(types.Name{Package: "k8s.io/client-go/discovery", Name: "NewDiscoveryClientForConfigOrDie"}),
     		"NewDiscoveryClient":                   c.Universe.Function(types.Name{Package: "k8s.io/client-go/discovery", Name: "NewDiscoveryClient"}),
    @@ -161,11 +162,11 @@ var newClientsetForConfigAndClientTemplate = `
     // Note the http client provided takes precedence over the configured transport values.
     // If config's RateLimiter is not set and QPS and Burst are acceptable,
     // NewForConfigAndClient will generate a rate-limiter in configShallowCopy.
    -func NewForConfigAndClient(c *$.Config|raw$, httpClient *http.Client) (*Clientset, error) {
    +func NewForConfigAndClient(c *$.Config|raw$, httpClient *$.httpClient|raw$) (*Clientset, error) {
     	configShallowCopy := *c
     	if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 {
     		if configShallowCopy.Burst <= 0 {
    -			return nil, fmt.Errorf("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0")
    +			return nil, $.fmtErrorf|raw$("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0")
     		}
     		configShallowCopy.RateLimiter = $.flowcontrolNewTokenBucketRateLimiter|raw$(configShallowCopy.QPS, configShallowCopy.Burst)
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_expansion.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_expansion.go
    index f47c079e02fa..5971cc5bcd2a 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_expansion.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_expansion.go
    @@ -22,13 +22,13 @@ import (
     	"path/filepath"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/types"
     )
     
     // genExpansion produces a file for a group client, e.g. ExtensionsClient for the extension group.
     type genExpansion struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	groupPackagePath string
     	// types in a group
     	types []*types.Type
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_group.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_group.go
    index 30284990037a..8196871753fd 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_group.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_group.go
    @@ -18,19 +18,19 @@ package generators
     
     import (
     	"io"
    -	"path/filepath"
    +	"path"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
    -	"k8s.io/code-generator/cmd/client-gen/path"
     )
     
     // genGroup produces a file for a group client, e.g. ExtensionsClient for the extension group.
     type genGroup struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage string
     	group         string
     	version       string
    @@ -40,7 +40,7 @@ type genGroup struct {
     	types            []*types.Type
     	imports          namer.ImportTracker
     	inputPackage     string
    -	clientsetPackage string
    +	clientsetPackage string // must be a Go import-path
     	// If the genGroup has been called. This generator should only execute once.
     	called bool
     }
    @@ -64,47 +64,45 @@ func (g *genGroup) Namers(c *generator.Context) namer.NameSystems {
     
     func (g *genGroup) Imports(c *generator.Context) (imports []string) {
     	imports = append(imports, g.imports.ImportLines()...)
    -	imports = append(imports, filepath.Join(g.clientsetPackage, "scheme"))
     	return
     }
     
     func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
     	sw := generator.NewSnippetWriter(w, c, "$", "$")
     
    -	apiPath := func(group string) string {
    -		if group == "core" {
    -			return `"/api"`
    -		}
    -		return `"` + g.apiPath + `"`
    -	}
    -
    -	groupName := g.group
    -	if g.group == "core" {
    -		groupName = ""
    -	}
     	// allow user to define a group name that's different from the one parsed from the directory.
    -	p := c.Universe.Package(path.Vendorless(g.inputPackage))
    -	if override := types.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
    +	p := c.Universe.Package(g.inputPackage)
    +	groupName := g.group
    +	if override := gengo.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
     		groupName = override[0]
     	}
     
    +	apiPath := `"` + g.apiPath + `"`
    +	if groupName == "" {
    +		apiPath = `"/api"`
    +	}
    +	schemePackage := path.Join(g.clientsetPackage, "scheme")
     	m := map[string]interface{}{
    -		"group":                            g.group,
    -		"version":                          g.version,
    -		"groupName":                        groupName,
    -		"GroupGoName":                      g.groupGoName,
    -		"Version":                          namer.IC(g.version),
    -		"types":                            g.types,
    -		"apiPath":                          apiPath(g.group),
    -		"schemaGroupVersion":               c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/runtime/schema", Name: "GroupVersion"}),
    -		"runtimeAPIVersionInternal":        c.Universe.Variable(types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "APIVersionInternal"}),
    -		"restConfig":                       c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Config"}),
    -		"restDefaultKubernetesUserAgent":   c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "DefaultKubernetesUserAgent"}),
    -		"restRESTClientInterface":          c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
    -		"RESTHTTPClientFor":                c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "HTTPClientFor"}),
    -		"restRESTClientFor":                c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "RESTClientFor"}),
    -		"restRESTClientForConfigAndClient": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "RESTClientForConfigAndClient"}),
    -		"SchemeGroupVersion":               c.Universe.Variable(types.Name{Package: path.Vendorless(g.inputPackage), Name: "SchemeGroupVersion"}),
    +		"version":                            g.version,
    +		"groupName":                          groupName,
    +		"GroupGoName":                        g.groupGoName,
    +		"Version":                            namer.IC(g.version),
    +		"types":                              g.types,
    +		"apiPath":                            apiPath,
    +		"httpClient":                         c.Universe.Type(types.Name{Package: "net/http", Name: "Client"}),
    +		"schemaGroupVersion":                 c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/runtime/schema", Name: "GroupVersion"}),
    +		"runtimeAPIVersionInternal":          c.Universe.Variable(types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "APIVersionInternal"}),
    +		"restConfig":                         c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Config"}),
    +		"restDefaultKubernetesUserAgent":     c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "DefaultKubernetesUserAgent"}),
    +		"restRESTClientInterface":            c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
    +		"RESTHTTPClientFor":                  c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "HTTPClientFor"}),
    +		"restRESTClientFor":                  c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "RESTClientFor"}),
    +		"restRESTClientForConfigAndClient":   c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "RESTClientForConfigAndClient"}),
    +		"restCodecFactoryForGeneratedClient": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "CodecFactoryForGeneratedClient"}),
    +		"SchemeGroupVersion":                 c.Universe.Variable(types.Name{Package: g.inputPackage, Name: "SchemeGroupVersion"}),
    +		"SchemePrioritizedVersionsForGroup":  c.Universe.Variable(types.Name{Package: schemePackage, Name: "Scheme.PrioritizedVersionsForGroup"}),
    +		"Codecs":                             c.Universe.Variable(types.Name{Package: schemePackage, Name: "Codecs"}),
    +		"Scheme":                             c.Universe.Variable(types.Name{Package: schemePackage, Name: "Scheme"}),
     	}
     	sw.Do(groupInterfaceTemplate, m)
     	sw.Do(groupClientTemplate, m)
    @@ -185,7 +183,7 @@ func NewForConfig(c *$.restConfig|raw$) (*$.GroupGoName$$.Version$Client, error)
     var newClientForConfigAndClientTemplate = `
     // NewForConfigAndClient creates a new $.GroupGoName$$.Version$Client for the given config and http client.
     // Note the http client provided takes precedence over the configured transport values.
    -func NewForConfigAndClient(c *$.restConfig|raw$, h *http.Client) (*$.GroupGoName$$.Version$Client, error) {
    +func NewForConfigAndClient(c *$.restConfig|raw$, h *$.httpClient|raw$) (*$.GroupGoName$$.Version$Client, error) {
     	config := *c
     	if err := setConfigDefaults(&config); err != nil {
     		return nil, err
    @@ -234,11 +232,11 @@ func setConfigDefaults(config *$.restConfig|raw$) error {
     	if config.UserAgent == "" {
     		config.UserAgent = $.restDefaultKubernetesUserAgent|raw$()
     	}
    -	if config.GroupVersion == nil || config.GroupVersion.Group != scheme.Scheme.PrioritizedVersionsForGroup("$.groupName$")[0].Group {
    -		gv := scheme.Scheme.PrioritizedVersionsForGroup("$.groupName$")[0]
    +	if config.GroupVersion == nil || config.GroupVersion.Group != $.SchemePrioritizedVersionsForGroup|raw$("$.groupName$")[0].Group {
    +		gv := $.SchemePrioritizedVersionsForGroup|raw$("$.groupName$")[0]
     		config.GroupVersion = &gv
     	}
    -	config.NegotiatedSerializer = scheme.Codecs
    +	config.NegotiatedSerializer = $.restCodecFactoryForGeneratedClient|raw$($.Scheme|raw$, $.Codecs|raw$)
     
     	if config.QPS == 0 {
     		config.QPS = 5
    @@ -256,7 +254,7 @@ func setConfigDefaults(config *$.restConfig|raw$) error {
     	gv := $.SchemeGroupVersion|raw$
     	config.GroupVersion =  &gv
     	config.APIPath = $.apiPath$
    -	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
    +	config.NegotiatedSerializer = $.restCodecFactoryForGeneratedClient|raw$($.Scheme|raw$, $.Codecs|raw$).WithoutConversion()
     
     	if config.UserAgent == "" {
     		config.UserAgent = $.restDefaultKubernetesUserAgent|raw$()
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_type.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_type.go
    index fe63dd198956..00b949a776e5 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_type.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/generator_for_type.go
    @@ -19,32 +19,37 @@ package generators
     import (
     	"io"
     	"path"
    -	"path/filepath"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"golang.org/x/text/cases"
    +	"golang.org/x/text/language"
    +
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     )
     
     // genClientForType produces a file for each top-level type.
     type genClientForType struct {
    -	generator.DefaultGen
    -	outputPackage             string
    +	generator.GoGenerator
    +	outputPackage             string // must be a Go import-path
     	inputPackage              string
    -	clientsetPackage          string
    -	applyConfigurationPackage string
    +	clientsetPackage          string // must be a Go import-path
    +	applyConfigurationPackage string // must be a Go import-path
     	group                     string
     	version                   string
     	groupGoName               string
    +	prefersProtobuf           bool
     	typeToMatch               *types.Type
     	imports                   namer.ImportTracker
     }
     
     var _ generator.Generator = &genClientForType{}
     
    +var titler = cases.Title(language.Und)
    +
     // Filter ignores all but one type because we're making a single file per type.
     func (g *genClientForType) Filter(c *generator.Context, t *types.Type) bool {
     	return t == g.typeToMatch
    @@ -81,7 +86,7 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
     	defaultVerbTemplates := buildDefaultVerbTemplates(generateApply)
     	subresourceDefaultVerbTemplates := buildSubresourceDefaultVerbTemplates(generateApply)
     	sw := generator.NewSnippetWriter(w, c, "$", "$")
    -	pkg := filepath.Base(t.Name.Package)
    +	pkg := path.Base(t.Name.Package)
     	tags, err := util.ParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
     	if err != nil {
     		return err
    @@ -120,9 +125,9 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
     		}
     		var updatedVerbtemplate string
     		if _, exists := subresourceDefaultVerbTemplates[e.VerbType]; e.IsSubresource() && exists {
    -			updatedVerbtemplate = e.VerbName + "(" + strings.TrimPrefix(subresourceDefaultVerbTemplates[e.VerbType], strings.Title(e.VerbType)+"(")
    +			updatedVerbtemplate = e.VerbName + "(" + strings.TrimPrefix(subresourceDefaultVerbTemplates[e.VerbType], titler.String(e.VerbType)+"(")
     		} else {
    -			updatedVerbtemplate = e.VerbName + "(" + strings.TrimPrefix(defaultVerbTemplates[e.VerbType], strings.Title(e.VerbType)+"(")
    +			updatedVerbtemplate = e.VerbName + "(" + strings.TrimPrefix(defaultVerbTemplates[e.VerbType], titler.String(e.VerbType)+"(")
     		}
     		extendedMethod := extendedInterfaceMethod{
     			template: updatedVerbtemplate,
    @@ -136,7 +141,8 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
     				"UpdateOptions": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "UpdateOptions"}),
     				"ApplyOptions":  c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ApplyOptions"}),
     				"PatchType":     c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "PatchType"}),
    -				"jsonMarshal":   c.Universe.Type(types.Name{Package: "encoding/json", Name: "Marshal"}),
    +				"PatchOptions":  c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "PatchOptions"}),
    +				"context":       c.Universe.Type(types.Name{Package: "context", Name: "Context"}),
     			},
     		}
     		if e.HasVerb("apply") {
    @@ -145,30 +151,47 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
     		extendedMethods = append(extendedMethods, extendedMethod)
     	}
     	m := map[string]interface{}{
    -		"type":                 t,
    -		"inputType":            t,
    -		"resultType":           t,
    -		"package":              pkg,
    -		"Package":              namer.IC(pkg),
    -		"namespaced":           !tags.NonNamespaced,
    -		"Group":                namer.IC(g.group),
    -		"subresource":          false,
    -		"subresourcePath":      "",
    -		"GroupGoName":          g.groupGoName,
    -		"Version":              namer.IC(g.version),
    -		"CreateOptions":        c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "CreateOptions"}),
    -		"DeleteOptions":        c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "DeleteOptions"}),
    -		"GetOptions":           c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "GetOptions"}),
    -		"ListOptions":          c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ListOptions"}),
    -		"PatchOptions":         c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "PatchOptions"}),
    -		"ApplyOptions":         c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ApplyOptions"}),
    -		"UpdateOptions":        c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "UpdateOptions"}),
    -		"PatchType":            c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "PatchType"}),
    -		"ApplyPatchType":       c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "ApplyPatchType"}),
    -		"watchInterface":       c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/watch", Name: "Interface"}),
    -		"RESTClientInterface":  c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
    -		"schemeParameterCodec": c.Universe.Variable(types.Name{Package: filepath.Join(g.clientsetPackage, "scheme"), Name: "ParameterCodec"}),
    -		"jsonMarshal":          c.Universe.Type(types.Name{Package: "encoding/json", Name: "Marshal"}),
    +		"type":                             t,
    +		"inputType":                        t,
    +		"resultType":                       t,
    +		"package":                          pkg,
    +		"Package":                          namer.IC(pkg),
    +		"namespaced":                       !tags.NonNamespaced,
    +		"Group":                            namer.IC(g.group),
    +		"subresource":                      false,
    +		"subresourcePath":                  "",
    +		"GroupGoName":                      g.groupGoName,
    +		"prefersProtobuf":                  g.prefersProtobuf,
    +		"Version":                          namer.IC(g.version),
    +		"CreateOptions":                    c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "CreateOptions"}),
    +		"DeleteOptions":                    c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "DeleteOptions"}),
    +		"GetOptions":                       c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "GetOptions"}),
    +		"ListOptions":                      c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ListOptions"}),
    +		"PatchOptions":                     c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "PatchOptions"}),
    +		"ApplyOptions":                     c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ApplyOptions"}),
    +		"UpdateOptions":                    c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "UpdateOptions"}),
    +		"PatchType":                        c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "PatchType"}),
    +		"watchInterface":                   c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/watch", Name: "Interface"}),
    +		"RESTClientInterface":              c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
    +		"schemeParameterCodec":             c.Universe.Variable(types.Name{Package: path.Join(g.clientsetPackage, "scheme"), Name: "ParameterCodec"}),
    +		"fmtErrorf":                        c.Universe.Function(types.Name{Package: "fmt", Name: "Errorf"}),
    +		"klogWarningf":                     c.Universe.Function(types.Name{Package: "k8s.io/klog/v2", Name: "Warningf"}),
    +		"context":                          c.Universe.Type(types.Name{Package: "context", Name: "Context"}),
    +		"timeDuration":                     c.Universe.Type(types.Name{Package: "time", Name: "Duration"}),
    +		"timeSecond":                       c.Universe.Type(types.Name{Package: "time", Name: "Second"}),
    +		"resourceVersionMatchNotOlderThan": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ResourceVersionMatchNotOlderThan"}),
    +		"CheckListFromCacheDataConsistencyIfRequested":      c.Universe.Function(types.Name{Package: "k8s.io/client-go/util/consistencydetector", Name: "CheckListFromCacheDataConsistencyIfRequested"}),
    +		"CheckWatchListFromCacheDataConsistencyIfRequested": c.Universe.Function(types.Name{Package: "k8s.io/client-go/util/consistencydetector", Name: "CheckWatchListFromCacheDataConsistencyIfRequested"}),
    +		"PrepareWatchListOptionsFromListOptions":            c.Universe.Function(types.Name{Package: "k8s.io/client-go/util/watchlist", Name: "PrepareWatchListOptionsFromListOptions"}),
    +		"applyNewRequest":                                   c.Universe.Function(types.Name{Package: "k8s.io/client-go/util/apply", Name: "NewRequest"}),
    +		"Client":                                            c.Universe.Type(types.Name{Package: "k8s.io/client-go/gentype", Name: "Client"}),
    +		"ClientWithList":                                    c.Universe.Type(types.Name{Package: "k8s.io/client-go/gentype", Name: "ClientWithList"}),
    +		"ClientWithApply":                                   c.Universe.Type(types.Name{Package: "k8s.io/client-go/gentype", Name: "ClientWithApply"}),
    +		"ClientWithListAndApply":                            c.Universe.Type(types.Name{Package: "k8s.io/client-go/gentype", Name: "ClientWithListAndApply"}),
    +		"NewClient":                                         c.Universe.Function(types.Name{Package: "k8s.io/client-go/gentype", Name: "NewClient"}),
    +		"NewClientWithApply":                                c.Universe.Function(types.Name{Package: "k8s.io/client-go/gentype", Name: "NewClientWithApply"}),
    +		"NewClientWithList":                                 c.Universe.Function(types.Name{Package: "k8s.io/client-go/gentype", Name: "NewClientWithList"}),
    +		"NewClientWithListAndApply":                         c.Universe.Function(types.Name{Package: "k8s.io/client-go/gentype", Name: "NewClientWithListAndApply"}),
     	}
     
     	if generateApply {
    @@ -203,53 +226,31 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
     	}
     	sw.Do(interfaceTemplate4, m)
     
    +	structNamespaced := namespaced
     	if tags.NonNamespaced {
    -		sw.Do(structNonNamespaced, m)
    -		sw.Do(newStructNonNamespaced, m)
    -	} else {
    -		sw.Do(structNamespaced, m)
    -		sw.Do(newStructNamespaced, m)
    +		structNamespaced = nonNamespaced
     	}
     
     	if tags.NoVerbs {
    +		sw.Do(structType[noList|noApply], m)
    +		sw.Do(newStruct[structNamespaced|noList|noApply], m)
    +
     		return sw.Error()
     	}
     
    -	if tags.HasVerb("get") {
    -		sw.Do(getTemplate, m)
    -	}
    +	listableOrAppliable := noList | noApply
    +
     	if tags.HasVerb("list") {
    -		sw.Do(listTemplate, m)
    -	}
    -	if tags.HasVerb("watch") {
    -		sw.Do(watchTemplate, m)
    +		listableOrAppliable |= withList
     	}
     
    -	if tags.HasVerb("create") {
    -		sw.Do(createTemplate, m)
    -	}
    -	if tags.HasVerb("update") {
    -		sw.Do(updateTemplate, m)
    -	}
    -	if tags.HasVerb("updateStatus") {
    -		sw.Do(updateStatusTemplate, m)
    -	}
    -	if tags.HasVerb("delete") {
    -		sw.Do(deleteTemplate, m)
    -	}
    -	if tags.HasVerb("deleteCollection") {
    -		sw.Do(deleteCollectionTemplate, m)
    -	}
    -	if tags.HasVerb("patch") {
    -		sw.Do(patchTemplate, m)
    -	}
     	if tags.HasVerb("apply") && generateApply {
    -		sw.Do(applyTemplate, m)
    -	}
    -	if tags.HasVerb("applyStatus") && generateApply {
    -		sw.Do(applyStatusTemplate, m)
    +		listableOrAppliable |= withApply
     	}
     
    +	sw.Do(structType[listableOrAppliable], m)
    +	sw.Do(newStruct[structNamespaced|listableOrAppliable], m)
    +
     	// generate expansion methods
     	for _, e := range tags.Extensions {
     		if e.HasVerb("apply") && !generateApply {
    @@ -278,62 +279,65 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
     		m["inputType"] = &inputType
     		m["resultType"] = &resultType
     		m["subresourcePath"] = e.SubResourcePath
    +		m["verb"] = e.VerbName
     		if e.HasVerb("apply") {
     			m["inputApplyConfig"] = types.Ref(path.Join(g.applyConfigurationPackage, inputGVString), inputType.Name.Name+"ApplyConfiguration")
     		}
     
     		if e.HasVerb("get") {
     			if e.IsSubresource() {
    -				sw.Do(adjustTemplate(e.VerbName, e.VerbType, getSubresourceTemplate), m)
    +				sw.Do(getSubresourceTemplate, m)
     			} else {
    -				sw.Do(adjustTemplate(e.VerbName, e.VerbType, getTemplate), m)
    +				sw.Do(getTemplate, m)
     			}
     		}
     
     		if e.HasVerb("list") {
     			if e.IsSubresource() {
    -				sw.Do(adjustTemplate(e.VerbName, e.VerbType, listSubresourceTemplate), m)
    +				sw.Do(listSubresourceTemplate, m)
     			} else {
    -				sw.Do(adjustTemplate(e.VerbName, e.VerbType, listTemplate), m)
    +				sw.Do(listTemplate, m)
    +				sw.Do(privateListTemplate, m)
    +				sw.Do(watchListTemplate, m)
     			}
     		}
     
     		// TODO: Figure out schemantic for watching a sub-resource.
     		if e.HasVerb("watch") {
    -			sw.Do(adjustTemplate(e.VerbName, e.VerbType, watchTemplate), m)
    +			sw.Do(watchTemplate, m)
     		}
     
     		if e.HasVerb("create") {
     			if e.IsSubresource() {
    -				sw.Do(adjustTemplate(e.VerbName, e.VerbType, createSubresourceTemplate), m)
    +				sw.Do(createSubresourceTemplate, m)
     			} else {
    -				sw.Do(adjustTemplate(e.VerbName, e.VerbType, createTemplate), m)
    +				sw.Do(createTemplate, m)
     			}
     		}
     
     		if e.HasVerb("update") {
     			if e.IsSubresource() {
    -				sw.Do(adjustTemplate(e.VerbName, e.VerbType, updateSubresourceTemplate), m)
    +				sw.Do(updateSubresourceTemplate, m)
     			} else {
    -				sw.Do(adjustTemplate(e.VerbName, e.VerbType, updateTemplate), m)
    +				sw.Do(updateTemplate, m)
     			}
     		}
     
     		// TODO: Figure out schemantic for deleting a sub-resource (what arguments
     		// are passed, does it need two names? etc.
     		if e.HasVerb("delete") {
    -			sw.Do(adjustTemplate(e.VerbName, e.VerbType, deleteTemplate), m)
    +			sw.Do(deleteTemplate, m)
     		}
     
     		if e.HasVerb("patch") {
    -			sw.Do(adjustTemplate(e.VerbName, e.VerbType, patchTemplate), m)
    +			sw.Do(patchTemplate, m)
     		}
     
     		if e.HasVerb("apply") {
     			if e.IsSubresource() {
    -				sw.Do(adjustTemplate(e.VerbName, e.VerbType, applySubresourceTemplate), m)
    +				sw.Do(applySubresourceTemplate, m)
     			} else {
    -				sw.Do(adjustTemplate(e.VerbName, e.VerbType, applyTemplate), m)
    +				sw.Do(applyTemplate, m)
     			}
     		}
     	}
    @@ -341,13 +345,6 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
     	return sw.Error()
     }
     
    -// adjustTemplate adjust the origin verb template using the expansion name.
    -// TODO: Make the verbs in templates parametrized so the strings.Replace() is
    -// not needed.
    -func adjustTemplate(name, verbType, template string) string {
    -	return strings.Replace(template, " "+strings.Title(verbType), " "+name, -1)
    -}
    -
     func generateInterface(defaultVerbTemplates map[string]string, tags util.Tags) string {
     	// need an ordered list here to guarantee order of generated methods.
     	out := []string{}
    @@ -361,32 +358,34 @@ func generateInterface(defaultVerbTemplates map[string]string, tags util.Tags) s
     
     func buildSubresourceDefaultVerbTemplates(generateApply bool) map[string]string {
     	m := map[string]string{
    -		"create": `Create(ctx context.Context, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (*$.resultType|raw$, error)`,
    -		"list":   `List(ctx context.Context, $.type|private$Name string, opts $.ListOptions|raw$) (*$.resultType|raw$List, error)`,
    -		"update": `Update(ctx context.Context, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (*$.resultType|raw$, error)`,
    -		"get":    `Get(ctx context.Context, $.type|private$Name string, options $.GetOptions|raw$) (*$.resultType|raw$, error)`,
    +		"create": `Create(ctx $.context|raw$, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (*$.resultType|raw$, error)`,
    +		"list":   `List(ctx $.context|raw$, $.type|private$Name string, opts $.ListOptions|raw$) (*$.resultType|raw$List, error)`,
    +		"update": `Update(ctx $.context|raw$, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (*$.resultType|raw$, error)`,
    +		"get":    `Get(ctx $.context|raw$, $.type|private$Name string, options $.GetOptions|raw$) (*$.resultType|raw$, error)`,
     	}
     	if generateApply {
    -		m["apply"] = `Apply(ctx context.Context, $.type|private$Name string, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (*$.resultType|raw$, error)`
    +		m["apply"] = `Apply(ctx $.context|raw$, $.type|private$Name string, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (*$.resultType|raw$, error)`
     	}
     	return m
     }
     
     func buildDefaultVerbTemplates(generateApply bool) map[string]string {
     	m := map[string]string{
    -		"create":           `Create(ctx context.Context, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (*$.resultType|raw$, error)`,
    -		"update":           `Update(ctx context.Context, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (*$.resultType|raw$, error)`,
    -		"updateStatus":     `UpdateStatus(ctx context.Context, $.inputType|private$ *$.type|raw$, opts $.UpdateOptions|raw$) (*$.type|raw$, error)`,
    -		"delete":           `Delete(ctx context.Context, name string, opts $.DeleteOptions|raw$) error`,
    -		"deleteCollection": `DeleteCollection(ctx context.Context, opts $.DeleteOptions|raw$, listOpts $.ListOptions|raw$) error`,
    -		"get":              `Get(ctx context.Context, name string, opts $.GetOptions|raw$) (*$.resultType|raw$, error)`,
    -		"list":             `List(ctx context.Context, opts $.ListOptions|raw$) (*$.resultType|raw$List, error)`,
    -		"watch":            `Watch(ctx context.Context, opts $.ListOptions|raw$) ($.watchInterface|raw$, error)`,
    -		"patch":            `Patch(ctx context.Context, name string, pt $.PatchType|raw$, data []byte, opts $.PatchOptions|raw$, subresources ...string) (result *$.resultType|raw$, err error)`,
    +		"create": `Create(ctx $.context|raw$, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (*$.resultType|raw$, error)`,
    +		"update": `Update(ctx $.context|raw$, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (*$.resultType|raw$, error)`,
    +		"updateStatus": `// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    +UpdateStatus(ctx $.context|raw$, $.inputType|private$ *$.type|raw$, opts $.UpdateOptions|raw$) (*$.type|raw$, error)`,
    +		"delete":           `Delete(ctx $.context|raw$, name string, opts $.DeleteOptions|raw$) error`,
    +		"deleteCollection": `DeleteCollection(ctx $.context|raw$, opts $.DeleteOptions|raw$, listOpts $.ListOptions|raw$) error`,
    +		"get":              `Get(ctx $.context|raw$, name string, opts $.GetOptions|raw$) (*$.resultType|raw$, error)`,
    +		"list":             `List(ctx $.context|raw$, opts $.ListOptions|raw$) (*$.resultType|raw$List, error)`,
    +		"watch":            `Watch(ctx $.context|raw$, opts $.ListOptions|raw$) ($.watchInterface|raw$, error)`,
    +		"patch":            `Patch(ctx $.context|raw$, name string, pt $.PatchType|raw$, data []byte, opts $.PatchOptions|raw$, subresources ...string) (result *$.resultType|raw$, err error)`,
     	}
     	if generateApply {
    -		m["apply"] = `Apply(ctx context.Context, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error)`
    -		m["applyStatus"] = `ApplyStatus(ctx context.Context, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error)`
    +		m["apply"] = `Apply(ctx $.context|raw$, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error)`
    +		m["applyStatus"] = `// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    +ApplyStatus(ctx $.context|raw$, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error)`
     	}
     	return m
     }
    @@ -418,51 +417,221 @@ var interfaceTemplate4 = `
     }
     `
     
    -// template for the struct that implements the type's interface
    -var structNamespaced = `
    -// $.type|privatePlural$ implements $.type|public$Interface
    -type $.type|privatePlural$ struct {
    -	client $.RESTClientInterface|raw$
    -	ns     string
    -}
    -`
    -
    -// template for the struct that implements the type's interface
    -var structNonNamespaced = `
    -// $.type|privatePlural$ implements $.type|public$Interface
    -type $.type|privatePlural$ struct {
    -	client $.RESTClientInterface|raw$
    -}
    -`
    +// struct and constructor variants
    +const (
    +	// The following values are bits in a bitmask.
    +	// The values which can be set indicate namespace support, list support, and apply support;
    +	// to make the declarations easier to read (like a truth table), corresponding zero-values
    +	// are also declared.
    +	namespaced    = 0
    +	noList        = 0
    +	noApply       = 0
    +	nonNamespaced = 1 << iota
    +	withList
    +	withApply
    +)
     
    -var newStructNamespaced = `
    -// new$.type|publicPlural$ returns a $.type|publicPlural$
    -func new$.type|publicPlural$(c *$.GroupGoName$$.Version$Client, namespace string) *$.type|privatePlural$ {
    -	return &$.type|privatePlural${
    -		client: c.RESTClient(),
    -		ns:     namespace,
    +// The following string slices are similar to maps, but with combinable keys used as indices.
    +// Each entry defines whether it supports lists and/or apply, and if namespacedness matters,
    +// namespaces; each bit is then toggled:
    +// * noList, noApply: index 0;
    +// * withList, noApply: index 2;
    +// * noList, withApply: index 4;
    +// * withList, withApply: index 6.
    +// When namespacedness matters, the namespaced variants are the same as the above, and
    +// the non-namespaced variants are offset by 1.
    +// Go enforces index unicity in these kinds of declarations.
    +
    +// struct declarations
    +// Namespacedness does not matter
    +var structType = []string{
    +	noList | noApply: `
    +	// $.type|privatePlural$ implements $.type|public$Interface
    +	type $.type|privatePlural$ struct {
    +		*$.Client|raw$[*$.resultType|raw$]
    +	}
    +	`,
    +	withList | noApply: `
    +	// $.type|privatePlural$ implements $.type|public$Interface
    +	type $.type|privatePlural$ struct {
    +		*$.ClientWithList|raw$[*$.resultType|raw$, *$.resultType|raw$List]
    +	}
    +	`,
    +	noList | withApply: `
    +	// $.type|privatePlural$ implements $.type|public$Interface
    +	type $.type|privatePlural$ struct {
    +		*$.ClientWithApply|raw$[*$.resultType|raw$, *$.inputApplyConfig|raw$]
    +	}
    +	`,
    +	withList | withApply: `
    +	// $.type|privatePlural$ implements $.type|public$Interface
    +	type $.type|privatePlural$ struct {
    +		*$.ClientWithListAndApply|raw$[*$.resultType|raw$, *$.resultType|raw$List, *$.inputApplyConfig|raw$]
    +	}
    +	`,
    +}
    +
    +// Constructors for the struct, in all variants
    +// Namespacedness matters
    +var newStruct = []string{
    +	namespaced | noList | noApply: `
    +	// new$.type|publicPlural$ returns a $.type|publicPlural$
    +	func new$.type|publicPlural$(c *$.GroupGoName$$.Version$Client, namespace string) *$.type|privatePlural$ {
    +		return &$.type|privatePlural${
    +			$.NewClient|raw$[*$.resultType|raw$](
    +				"$.type|resource$",
    +				c.RESTClient(),
    +				$.schemeParameterCodec|raw$,
    +				namespace,
    +				func() *$.resultType|raw$ { return &$.resultType|raw${} },
    +				$if .prefersProtobuf$gentype.PrefersProtobuf[*$.resultType|raw$](),$end$
    +			),
    +		}
    +	}
    +	`,
    +	namespaced | noList | withApply: `
    +	// new$.type|publicPlural$ returns a $.type|publicPlural$
    +	func new$.type|publicPlural$(c *$.GroupGoName$$.Version$Client, namespace string) *$.type|privatePlural$ {
    +		return &$.type|privatePlural${
    +			$.NewClientWithApply|raw$[*$.resultType|raw$, *$.inputApplyConfig|raw$](
    +				"$.type|resource$",
    +				c.RESTClient(),
    +				$.schemeParameterCodec|raw$,
    +				namespace,
    +				func() *$.resultType|raw$ { return &$.resultType|raw${} },
    +				$if .prefersProtobuf$gentype.PrefersProtobuf[*$.resultType|raw$](),$end$
    +			),
    +		}
    +	}
    +	`,
    +	namespaced | withList | noApply: `
    +	// new$.type|publicPlural$ returns a $.type|publicPlural$
    +	func new$.type|publicPlural$(c *$.GroupGoName$$.Version$Client, namespace string) *$.type|privatePlural$ {
    +		return &$.type|privatePlural${
    +			$.NewClientWithList|raw$[*$.resultType|raw$, *$.resultType|raw$List](
    +				"$.type|resource$",
    +				c.RESTClient(),
    +				$.schemeParameterCodec|raw$,
    +				namespace,
    +				func() *$.resultType|raw$ { return &$.resultType|raw${} },
    +				func() *$.resultType|raw$List { return &$.resultType|raw$List{} },
    +				$if .prefersProtobuf$gentype.PrefersProtobuf[*$.resultType|raw$](),$end$
    +			),
    +		}
    +	}
    +	`,
    +	namespaced | withList | withApply: `
    +	// new$.type|publicPlural$ returns a $.type|publicPlural$
    +	func new$.type|publicPlural$(c *$.GroupGoName$$.Version$Client, namespace string) *$.type|privatePlural$ {
    +		return &$.type|privatePlural${
    +			$.NewClientWithListAndApply|raw$[*$.resultType|raw$, *$.resultType|raw$List, *$.inputApplyConfig|raw$](
    +				"$.type|resource$",
    +				c.RESTClient(),
    +				$.schemeParameterCodec|raw$,
    +				namespace,
    +				func() *$.resultType|raw$ { return &$.resultType|raw${} },
    +				func() *$.resultType|raw$List { return &$.resultType|raw$List{} },
    +				$if .prefersProtobuf$gentype.PrefersProtobuf[*$.resultType|raw$](),$end$
    +			),
    +		}
    +	}
    +	`,
    +	nonNamespaced | noList | noApply: `
    +	// new$.type|publicPlural$ returns a $.type|publicPlural$
    +	func new$.type|publicPlural$(c *$.GroupGoName$$.Version$Client) *$.type|privatePlural$ {
    +		return &$.type|privatePlural${
    +			$.NewClient|raw$[*$.resultType|raw$](
    +				"$.type|resource$",
    +				c.RESTClient(),
    +				$.schemeParameterCodec|raw$,
    +				"",
    +				func() *$.resultType|raw$ { return &$.resultType|raw${} },
    +				$if .prefersProtobuf$gentype.PrefersProtobuf[*$.resultType|raw$](),$end$
    +			),
    +		}
    +	}
    +	`,
    +	nonNamespaced | noList | withApply: `
    +	// new$.type|publicPlural$ returns a $.type|publicPlural$
    +	func new$.type|publicPlural$(c *$.GroupGoName$$.Version$Client) *$.type|privatePlural$ {
    +		return &$.type|privatePlural${
    +			$.NewClientWithApply|raw$[*$.resultType|raw$, *$.inputApplyConfig|raw$](
    +				"$.type|resource$",
    +				c.RESTClient(),
    +				$.schemeParameterCodec|raw$,
    +				"",
    +				func() *$.resultType|raw$ { return &$.resultType|raw${} },
    +				$if .prefersProtobuf$gentype.PrefersProtobuf[*$.resultType|raw$](),$end$
    +			),
    +		}
     	}
    +	`,
    +	nonNamespaced | withList | noApply: `
    +	// new$.type|publicPlural$ returns a $.type|publicPlural$
    +	func new$.type|publicPlural$(c *$.GroupGoName$$.Version$Client) *$.type|privatePlural$ {
    +		return &$.type|privatePlural${
    +			$.NewClientWithList|raw$[*$.resultType|raw$, *$.resultType|raw$List](
    +				"$.type|resource$",
    +				c.RESTClient(),
    +				$.schemeParameterCodec|raw$,
    +				"",
    +				func() *$.resultType|raw$ { return &$.resultType|raw${} },
    +				func() *$.resultType|raw$List { return &$.resultType|raw$List{} },
    +				$if .prefersProtobuf$gentype.PrefersProtobuf[*$.resultType|raw$](),$end$
    +			),
    +		}
    +	}
    +	`,
    +	nonNamespaced | withList | withApply: `
    +	// new$.type|publicPlural$ returns a $.type|publicPlural$
    +	func new$.type|publicPlural$(c *$.GroupGoName$$.Version$Client) *$.type|privatePlural$ {
    +		return &$.type|privatePlural${
    +			$.NewClientWithListAndApply|raw$[*$.resultType|raw$, *$.resultType|raw$List, *$.inputApplyConfig|raw$](
    +				"$.type|resource$",
    +				c.RESTClient(),
    +				$.schemeParameterCodec|raw$,
    +				"",
    +				func() *$.resultType|raw$ { return &$.resultType|raw${} },
    +				func() *$.resultType|raw$List { return &$.resultType|raw$List{} },
    +				$if .prefersProtobuf$gentype.PrefersProtobuf[*$.resultType|raw$](),$end$
    +			),
    +		}
    +	}
    +	`,
     }
    -`
     
    -var newStructNonNamespaced = `
    -// new$.type|publicPlural$ returns a $.type|publicPlural$
    -func new$.type|publicPlural$(c *$.GroupGoName$$.Version$Client) *$.type|privatePlural$ {
    -	return &$.type|privatePlural${
    -		client: c.RESTClient(),
    -	}
    +var listTemplate = `
    +// $.verb$ takes label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, opts $.ListOptions|raw$) (*$.resultType|raw$List, error) {
    +    if watchListOptions, hasWatchListOptionsPrepared, watchListOptionsErr  := $.PrepareWatchListOptionsFromListOptions|raw$(opts); watchListOptionsErr  != nil {
    +        $.klogWarningf|raw$("Failed preparing watchlist options for $.type|resource$, falling back to the standard LIST semantics, err = %v", watchListOptionsErr )
    +    } else if hasWatchListOptionsPrepared {
    +        result, err := c.watchList(ctx, watchListOptions)
    +        if err == nil {
    +            $.CheckWatchListFromCacheDataConsistencyIfRequested|raw$(ctx, "watchlist request for $.type|resource$", c.list, opts, result)
    +            return result, nil
    +        }
    +        $.klogWarningf|raw$("The watchlist request for $.type|resource$ ended with an error, falling back to the standard LIST semantics, err = %v", err)
    +    }
    +    result, err := c.list(ctx, opts)
    +    if err == nil {
    +        $.CheckListFromCacheDataConsistencyIfRequested|raw$(ctx, "list request for $.type|resource$", c.list, opts, result)
    +    }
    +    return result, err
     }
     `
    -var listTemplate = `
    -// List takes label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
    -func (c *$.type|privatePlural$) List(ctx context.Context, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
    -	var timeout time.Duration
    +
    +var privateListTemplate = `
    +// list takes label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
    +func (c *$.type|privatePlural$) list(ctx $.context|raw$, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
    +	var timeout $.timeDuration|raw$
     	if opts.TimeoutSeconds != nil{
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    +		timeout = $.timeDuration|raw$(*opts.TimeoutSeconds) * $.timeSecond|raw$
     	}
     	result = &$.resultType|raw$List{}
    -	err = c.client.Get().
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = c.GetClient().Get().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		VersionedParams(&opts, $.schemeParameterCodec|raw$).
     		Timeout(timeout).
    @@ -473,15 +642,16 @@ func (c *$.type|privatePlural$) List(ctx context.Context, opts $.ListOptions|raw
     `
     
     var listSubresourceTemplate = `
    -// List takes $.type|raw$ name, label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
    -func (c *$.type|privatePlural$) List(ctx context.Context, $.type|private$Name string, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
    -	var timeout time.Duration
    +// $.verb$ takes $.type|raw$ name, label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.type|private$Name string, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
    +	var timeout $.timeDuration|raw$
     	if opts.TimeoutSeconds != nil{
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    +		timeout = $.timeDuration|raw$(*opts.TimeoutSeconds) * $.timeSecond|raw$
     	}
     	result = &$.resultType|raw$List{}
    -	err = c.client.Get().
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = c.GetClient().Get().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		Name($.type|private$Name).
     		SubResource("$.subresourcePath$").
    @@ -494,11 +664,12 @@ func (c *$.type|privatePlural$) List(ctx context.Context, $.type|private$Name st
     `
     
     var getTemplate = `
    -// Get takes name of the $.type|private$, and returns the corresponding $.resultType|private$ object, and an error if there is any.
    -func (c *$.type|privatePlural$) Get(ctx context.Context, name string, options $.GetOptions|raw$) (result *$.resultType|raw$, err error) {
    +// $.verb$ takes name of the $.type|private$, and returns the corresponding $.resultType|private$ object, and an error if there is any.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, name string, options $.GetOptions|raw$) (result *$.resultType|raw$, err error) {
     	result = &$.resultType|raw${}
    -	err = c.client.Get().
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = c.GetClient().Get().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		Name(name).
     		VersionedParams(&options, $.schemeParameterCodec|raw$).
    @@ -509,11 +680,12 @@ func (c *$.type|privatePlural$) Get(ctx context.Context, name string, options $.
     `
     
     var getSubresourceTemplate = `
    -// Get takes name of the $.type|private$, and returns the corresponding $.resultType|raw$ object, and an error if there is any.
    -func (c *$.type|privatePlural$) Get(ctx context.Context, $.type|private$Name string, options $.GetOptions|raw$) (result *$.resultType|raw$, err error) {
    +// $.verb$ takes name of the $.type|private$, and returns the corresponding $.resultType|raw$ object, and an error if there is any.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.type|private$Name string, options $.GetOptions|raw$) (result *$.resultType|raw$, err error) {
     	result = &$.resultType|raw${}
    -	err = c.client.Get().
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = c.GetClient().Get().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		Name($.type|private$Name).
     		SubResource("$.subresourcePath$").
    @@ -525,10 +697,11 @@ func (c *$.type|privatePlural$) Get(ctx context.Context, $.type|private$Name str
     `
     
     var deleteTemplate = `
    -// Delete takes name of the $.type|private$ and deletes it. Returns an error if one occurs.
    -func (c *$.type|privatePlural$) Delete(ctx context.Context, name string, opts $.DeleteOptions|raw$) error {
    -	return c.client.Delete().
    -		$if .namespaced$Namespace(c.ns).$end$
    +// $.verb$ takes name of the $.type|private$ and deletes it. Returns an error if one occurs.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, name string, opts $.DeleteOptions|raw$) error {
    +	return c.GetClient().Delete().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		Name(name).
     		Body(&opts).
    @@ -537,30 +710,13 @@ func (c *$.type|privatePlural$) Delete(ctx context.Context, name string, opts $.
     }
     `
     
    -var deleteCollectionTemplate = `
    -// DeleteCollection deletes a collection of objects.
    -func (c *$.type|privatePlural$) DeleteCollection(ctx context.Context, opts $.DeleteOptions|raw$, listOpts $.ListOptions|raw$) error {
    -	var timeout time.Duration
    -	if listOpts.TimeoutSeconds != nil{
    -		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
    -	}
    -	return c.client.Delete().
    -		$if .namespaced$Namespace(c.ns).$end$
    -		Resource("$.type|resource$").
    -		VersionedParams(&listOpts, $.schemeParameterCodec|raw$).
    -		Timeout(timeout).
    -		Body(&opts).
    -		Do(ctx).
    -		Error()
    -}
    -`
    -
     var createSubresourceTemplate = `
    -// Create takes the representation of a $.inputType|private$ and creates it.  Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    -func (c *$.type|privatePlural$) Create(ctx context.Context, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (result *$.resultType|raw$, err error) {
    +// $.verb$ takes the representation of a $.inputType|private$ and creates it.  Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (result *$.resultType|raw$, err error) {
     	result = &$.resultType|raw${}
    -	err = c.client.Post().
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = c.GetClient().Post().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		Name($.type|private$Name).
     		SubResource("$.subresourcePath$").
    @@ -573,11 +729,12 @@ func (c *$.type|privatePlural$) Create(ctx context.Context, $.type|private$Name
     `
     
     var createTemplate = `
    -// Create takes the representation of a $.inputType|private$ and creates it.  Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    -func (c *$.type|privatePlural$) Create(ctx context.Context, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (result *$.resultType|raw$, err error) {
    +// $.verb$ takes the representation of a $.inputType|private$ and creates it.  Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.inputType|private$ *$.inputType|raw$, opts $.CreateOptions|raw$) (result *$.resultType|raw$, err error) {
     	result = &$.resultType|raw${}
    -	err = c.client.Post().
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = c.GetClient().Post().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		VersionedParams(&opts, $.schemeParameterCodec|raw$).
     		Body($.inputType|private$).
    @@ -588,11 +745,12 @@ func (c *$.type|privatePlural$) Create(ctx context.Context, $.inputType|private$
     `
     
     var updateSubresourceTemplate = `
    -// Update takes the top resource name and the representation of a $.inputType|private$ and updates it. Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    -func (c *$.type|privatePlural$) Update(ctx context.Context, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (result *$.resultType|raw$, err error) {
    +// $.verb$ takes the top resource name and the representation of a $.inputType|private$ and updates it. Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.type|private$Name string, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (result *$.resultType|raw$, err error) {
     	result = &$.resultType|raw${}
    -	err = c.client.Put().
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = c.GetClient().Put().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		Name($.type|private$Name).
     		SubResource("$.subresourcePath$").
    @@ -605,11 +763,12 @@ func (c *$.type|privatePlural$) Update(ctx context.Context, $.type|private$Name
     `
     
     var updateTemplate = `
    -// Update takes the representation of a $.inputType|private$ and updates it. Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    -func (c *$.type|privatePlural$) Update(ctx context.Context, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (result *$.resultType|raw$, err error) {
    +// $.verb$ takes the representation of a $.inputType|private$ and updates it. Returns the server's representation of the $.resultType|private$, and an error, if there is any.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.inputType|private$ *$.inputType|raw$, opts $.UpdateOptions|raw$) (result *$.resultType|raw$, err error) {
     	result = &$.resultType|raw${}
    -	err = c.client.Put().
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = c.GetClient().Put().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		Name($.inputType|private$.Name).
     		VersionedParams(&opts, $.schemeParameterCodec|raw$).
    @@ -620,47 +779,50 @@ func (c *$.type|privatePlural$) Update(ctx context.Context, $.inputType|private$
     }
     `
     
    -var updateStatusTemplate = `
    -// UpdateStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
    -func (c *$.type|privatePlural$) UpdateStatus(ctx context.Context, $.type|private$ *$.type|raw$, opts $.UpdateOptions|raw$) (result *$.type|raw$, err error) {
    -	result = &$.type|raw${}
    -	err = c.client.Put().
    -		$if .namespaced$Namespace(c.ns).$end$
    -		Resource("$.type|resource$").
    -		Name($.type|private$.Name).
    -		SubResource("status").
    +var watchTemplate = `
    +// $.verb$ returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, opts $.ListOptions|raw$) ($.watchInterface|raw$, error) {
    +	var timeout $.timeDuration|raw$
    +	if opts.TimeoutSeconds != nil{
    +		timeout = $.timeDuration|raw$(*opts.TimeoutSeconds) * $.timeSecond|raw$
    +	}
    +	opts.Watch = true
    +	return c.GetClient().Get().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		VersionedParams(&opts, $.schemeParameterCodec|raw$).
    -		Body($.type|private$).
    -		Do(ctx).
    -		Into(result)
    -	return
    +		Timeout(timeout).
    +		Watch(ctx)
     }
     `
     
    -var watchTemplate = `
    -// Watch returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
    -func (c *$.type|privatePlural$) Watch(ctx context.Context, opts $.ListOptions|raw$) ($.watchInterface|raw$, error) {
    -	var timeout time.Duration
    +var watchListTemplate = `
    +// watchList establishes a watch stream with the server and returns the list of $.resultType|publicPlural$
    +func (c *$.type|privatePlural$) watchList(ctx $.context|raw$, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
    +	var timeout $.timeDuration|raw$
     	if opts.TimeoutSeconds != nil{
    -		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
    +		timeout = $.timeDuration|raw$(*opts.TimeoutSeconds) * $.timeSecond|raw$
     	}
    -	opts.Watch = true
    -	return c.client.Get().
    -		$if .namespaced$Namespace(c.ns).$end$
    +    result = &$.resultType|raw$List{}
    +	err = c.GetClient().Get().
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		VersionedParams(&opts, $.schemeParameterCodec|raw$).
     		Timeout(timeout).
    -		Watch(ctx)
    +		WatchList(ctx).
    +        Into(result)
    +    return
     }
     `
     
     var patchTemplate = `
    -// Patch applies the patch and returns the patched $.resultType|private$.
    -func (c *$.type|privatePlural$) Patch(ctx context.Context, name string, pt $.PatchType|raw$, data []byte, opts $.PatchOptions|raw$, subresources ...string) (result *$.resultType|raw$, err error) {
    +// $.verb$ applies the patch and returns the patched $.resultType|private$.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, name string, pt $.PatchType|raw$, data []byte, opts $.PatchOptions|raw$, subresources ...string) (result *$.resultType|raw$, err error) {
     	result = &$.resultType|raw${}
    -	err = c.client.Patch(pt).
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = c.GetClient().Patch(pt).
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		Name(name).
     		SubResource(subresources...).
    @@ -673,59 +835,27 @@ func (c *$.type|privatePlural$) Patch(ctx context.Context, name string, pt $.Pat
     `
     
     var applyTemplate = `
    -// Apply takes the given apply declarative configuration, applies it and returns the applied $.resultType|private$.
    -func (c *$.type|privatePlural$) Apply(ctx context.Context, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error) {
    +// $.verb$ takes the given apply declarative configuration, applies it and returns the applied $.resultType|private$.
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error) {
     	if $.inputType|private$ == nil {
    -		return nil, fmt.Errorf("$.inputType|private$ provided to Apply must not be nil")
    +		return nil, $.fmtErrorf|raw$("$.inputType|private$ provided to $.verb$ must not be nil")
     	}
     	patchOpts := opts.ToPatchOptions()
    -	data, err := $.jsonMarshal|raw$($.inputType|private$)
    -	if err != nil {
    -		return nil, err
    -	}
    -    name := $.inputType|private$.Name
    +	name := $.inputType|private$.Name
     	if name == nil {
    -		return nil, fmt.Errorf("$.inputType|private$.Name must be provided to Apply")
    -	}
    -	result = &$.resultType|raw${}
    -	err = c.client.Patch($.ApplyPatchType|raw$).
    -		$if .namespaced$Namespace(c.ns).$end$
    -		Resource("$.type|resource$").
    -		Name(*name).
    -		VersionedParams(&patchOpts, $.schemeParameterCodec|raw$).
    -		Body(data).
    -		Do(ctx).
    -		Into(result)
    -	return
    -}
    -`
    -
    -var applyStatusTemplate = `
    -// ApplyStatus was generated because the type contains a Status member.
    -// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
    -func (c *$.type|privatePlural$) ApplyStatus(ctx context.Context, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error) {
    -	if $.inputType|private$ == nil {
    -		return nil, fmt.Errorf("$.inputType|private$ provided to Apply must not be nil")
    +		return nil, $.fmtErrorf|raw$("$.inputType|private$.Name must be provided to $.verb$")
     	}
    -	patchOpts := opts.ToPatchOptions()
    -	data, err := $.jsonMarshal|raw$($.inputType|private$)
    +	request, err := $.applyNewRequest|raw$(c.GetClient(), $.inputType|private$)
     	if err != nil {
     		return nil, err
     	}
    -
    -	name := $.inputType|private$.Name
    -	if name == nil {
    -		return nil, fmt.Errorf("$.inputType|private$.Name must be provided to Apply")
    -	}
    -
     	result = &$.resultType|raw${}
    -	err = c.client.Patch($.ApplyPatchType|raw$).
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = request.
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		Name(*name).
    -		SubResource("status").
     		VersionedParams(&patchOpts, $.schemeParameterCodec|raw$).
    -		Body(data).
     		Do(ctx).
     		Into(result)
     	return
    @@ -733,26 +863,26 @@ func (c *$.type|privatePlural$) ApplyStatus(ctx context.Context, $.inputType|pri
     `
     
     var applySubresourceTemplate = `
    -// Apply takes top resource name and the apply declarative configuration for $.subresourcePath$,
    +// $.verb$ takes top resource name and the apply declarative configuration for $.subresourcePath$,
     // applies it and returns the applied $.resultType|private$, and an error, if there is any.
    -func (c *$.type|privatePlural$) Apply(ctx context.Context, $.type|private$Name string, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error) {
    +func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.type|private$Name string, $.inputType|private$ *$.inputApplyConfig|raw$, opts $.ApplyOptions|raw$) (result *$.resultType|raw$, err error) {
     	if $.inputType|private$ == nil {
    -		return nil, fmt.Errorf("$.inputType|private$ provided to Apply must not be nil")
    +		return nil, $.fmtErrorf|raw$("$.inputType|private$ provided to $.verb$ must not be nil")
     	}
     	patchOpts := opts.ToPatchOptions()
    -	data, err := $.jsonMarshal|raw$($.inputType|private$)
    +	request, err := $.applyNewRequest|raw$(c.GetClient(), $.inputType|private$)
     	if err != nil {
     		return nil, err
     	}
     
     	result = &$.resultType|raw${}
    -	err = c.client.Patch($.ApplyPatchType|raw$).
    -		$if .namespaced$Namespace(c.ns).$end$
    +	err = request.
    +		$if .prefersProtobuf$UseProtobufAsDefault().$end$
    +		$if .namespaced$Namespace(c.GetNamespace()).$end$
     		Resource("$.type|resource$").
     		Name($.type|private$Name).
     		SubResource("$.subresourcePath$").
     		VersionedParams(&patchOpts, $.schemeParameterCodec|raw$).
    -		Body(data).
     		Do(ctx).
     		Into(result)
     	return
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/scheme/generator_for_scheme.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/scheme/generator_for_scheme.go
    index a87d7571eb65..7229055799fb 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/scheme/generator_for_scheme.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/scheme/generator_for_scheme.go
    @@ -20,24 +20,24 @@ import (
     	"fmt"
     	"io"
     	"os"
    +	"path"
     	"path/filepath"
     	"strings"
     
    -	"k8s.io/code-generator/cmd/client-gen/path"
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     // GenScheme produces a package for a clientset with the scheme, codecs and parameter codecs.
     type GenScheme struct {
    -	generator.DefaultGen
    -	OutputPackage   string
    +	generator.GoGenerator
    +	OutputPkg       string // Must be a Go import-path
    +	OutputPath      string // optional
     	Groups          []clientgentypes.GroupVersions
     	GroupGoNames    map[clientgentypes.GroupVersion]string
     	InputPackages   map[clientgentypes.GroupVersion]string
    -	OutputPath      string
     	ImportTracker   namer.ImportTracker
     	PrivateScheme   bool
     	CreateRegistry  bool
    @@ -46,7 +46,7 @@ type GenScheme struct {
     
     func (g *GenScheme) Namers(c *generator.Context) namer.NameSystems {
     	return namer.NameSystems{
    -		"raw": namer.NewRawNamer(g.OutputPackage, g.ImportTracker),
    +		"raw": namer.NewRawNamer(g.OutputPkg, g.ImportTracker),
     	}
     }
     
    @@ -66,14 +66,14 @@ func (g *GenScheme) Imports(c *generator.Context) (imports []string) {
     			if g.CreateRegistry {
     				// import the install package for internal clientsets instead of the type package with register.go
     				if version.Version != "" {
    -					packagePath = filepath.Dir(packagePath)
    +					packagePath = path.Dir(packagePath)
     				}
    -				packagePath = filepath.Join(packagePath, "install")
    +				packagePath = path.Join(packagePath, "install")
     
    -				imports = append(imports, fmt.Sprintf("%s \"%s\"", groupAlias, path.Vendorless(packagePath)))
    +				imports = append(imports, fmt.Sprintf("%s \"%s\"", groupAlias, packagePath))
     				break
     			} else {
    -				imports = append(imports, fmt.Sprintf("%s%s \"%s\"", groupAlias, strings.ToLower(version.Version.NonEmpty()), path.Vendorless(packagePath)))
    +				imports = append(imports, fmt.Sprintf("%s%s \"%s\"", groupAlias, strings.ToLower(version.Version.NonEmpty()), packagePath))
     			}
     		}
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/generators/util/tags.go b/vendor/k8s.io/code-generator/cmd/client-gen/generators/util/tags.go
    index e74de0776297..5218dfad3b10 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/generators/util/tags.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/generators/util/tags.go
    @@ -21,7 +21,7 @@ import (
     	"fmt"
     	"strings"
     
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
     )
     
     var supportedTags = []string{
    @@ -192,7 +192,7 @@ func MustParseClientGenTags(lines []string) Tags {
     // tags are provided.
     func ParseClientGenTags(lines []string) (Tags, error) {
     	ret := Tags{}
    -	values := types.ExtractCommentTags("+", lines)
    +	values := gengo.ExtractCommentTags("+", lines)
     	var value []string
     	value, ret.GenerateClient = values["genclient"]
     	// Check the old format and error when used to avoid generating client when //+genclient=false
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/main.go b/vendor/k8s.io/code-generator/cmd/client-gen/main.go
    index 64a1274dfc0c..09866e93c36f 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/main.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/main.go
    @@ -23,40 +23,44 @@ import (
     	"github.com/spf13/pflag"
     	"k8s.io/klog/v2"
     
    -	generatorargs "k8s.io/code-generator/cmd/client-gen/args"
    +	"k8s.io/code-generator/cmd/client-gen/args"
     	"k8s.io/code-generator/cmd/client-gen/generators"
     	"k8s.io/code-generator/pkg/util"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
     )
     
     func main() {
     	klog.InitFlags(nil)
    -	genericArgs, customArgs := generatorargs.NewDefaults()
    +	args := args.New()
     
    -	// Override defaults.
    -	// TODO: move this out of client-gen
    -	genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/clientset_generated/"
    -
    -	genericArgs.AddFlags(pflag.CommandLine)
    -	customArgs.AddFlags(pflag.CommandLine, "k8s.io/kubernetes/pkg/apis") // TODO: move this input path out of client-gen
    +	args.AddFlags(pflag.CommandLine, "k8s.io/kubernetes/pkg/apis") // TODO: move this input path out of client-gen
     	flag.Set("logtostderr", "true")
     	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
     	pflag.Parse()
     
     	// add group version package as input dirs for gengo
    -	for _, pkg := range customArgs.Groups {
    +	inputPkgs := []string{}
    +	for _, pkg := range args.Groups {
     		for _, v := range pkg.Versions {
    -			genericArgs.InputDirs = append(genericArgs.InputDirs, v.Package)
    +			inputPkgs = append(inputPkgs, v.Package)
     		}
     	}
     
    -	if err := generatorargs.Validate(genericArgs); err != nil {
    +	if err := args.Validate(); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
     
    -	if err := genericArgs.Execute(
    -		generators.NameSystems(util.PluralExceptionListToMapOrDie(customArgs.PluralExceptions)),
    +	myTargets := func(context *generator.Context) []generator.Target {
    +		return generators.GetTargets(context, args)
    +	}
    +
    +	if err := gengo.Execute(
    +		generators.NameSystems(util.PluralExceptionListToMapOrDie(args.PluralExceptions)),
     		generators.DefaultNameSystem(),
    -		generators.Packages,
    +		myTargets,
    +		gengo.StdBuildTag,
    +		inputPkgs,
     	); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/path/path.go b/vendor/k8s.io/code-generator/cmd/client-gen/path/path.go
    deleted file mode 100644
    index 19b269bdf28a..000000000000
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/path/path.go
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -/*
    -Copyright 2017 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -package path
    -
    -import "strings"
    -
    -// Vendorless removes the longest match of "*/vendor/" from the front of p.
    -// It is useful if a package locates in vendor/, e.g.,
    -// k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1, because gengo
    -// indexes the package with its import path, e.g.,
    -// k8s.io/apimachinery/pkg/apis/meta/v1,
    -func Vendorless(p string) string {
    -	if pos := strings.LastIndex(p, "/vendor/"); pos != -1 {
    -		return p[pos+len("/vendor/"):]
    -	}
    -	return p
    -}
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/types/helpers.go b/vendor/k8s.io/code-generator/cmd/client-gen/types/helpers.go
    index 59f2fd4449bd..c84a7753177c 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/types/helpers.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/types/helpers.go
    @@ -22,7 +22,7 @@ import (
     	"sort"
     	"strings"
     
    -	"k8s.io/gengo/namer"
    +	"k8s.io/gengo/v2/namer"
     )
     
     // ToGroupVersion turns "group/version" string into a GroupVersion struct. It reports error
    @@ -116,6 +116,6 @@ func ToGroupInstallPackages(groups []GroupVersions, groupGoNames map[GroupVersio
     }
     
     // NormalizeGroupVersion calls normalizes the GroupVersion.
    -//func NormalizeGroupVersion(gv GroupVersion) GroupVersion {
    -//	return GroupVersion{Group: gv.Group.NonEmpty(), Version: gv.Version, NonEmptyVersion: normalization.Version(gv.Version)}
    -//}
    +// func NormalizeGroupVersion(gv GroupVersion) GroupVersion {
    +// 	 return GroupVersion{Group: gv.Group.NonEmpty(), Version: gv.Version, NonEmptyVersion: normalization.Version(gv.Version)}
    +// }
    diff --git a/vendor/k8s.io/code-generator/cmd/client-gen/types/types.go b/vendor/k8s.io/code-generator/cmd/client-gen/types/types.go
    index a5cc37cf7fc8..df030e8459cb 100644
    --- a/vendor/k8s.io/code-generator/cmd/client-gen/types/types.go
    +++ b/vendor/k8s.io/code-generator/cmd/client-gen/types/types.go
    @@ -42,7 +42,7 @@ func (g Group) String() string {
     }
     
     func (g Group) NonEmpty() string {
    -	if g == "api" {
    +	if g == "" {
     		return "core"
     	}
     	return string(g)
    @@ -56,6 +56,8 @@ func (g Group) PackageName() string {
     	return strings.ToLower(parts[0])
     }
     
    +type Kind string
    +
     type PackageVersion struct {
     	Version
     	// The fully qualified package, e.g. k8s.io/kubernetes/pkg/apis/apps, where the types.go is found.
    @@ -67,14 +69,24 @@ type GroupVersion struct {
     	Version Version
     }
     
    +type GroupVersionKind struct {
    +	Group   Group
    +	Version Version
    +	Kind    Kind
    +}
    +
     func (gv GroupVersion) ToAPIVersion() string {
    -	if len(gv.Group) > 0 && gv.Group.NonEmpty() != "core" {
    +	if len(gv.Group) > 0 && gv.Group != "" {
     		return gv.Group.String() + "/" + gv.Version.String()
     	} else {
     		return gv.Version.String()
     	}
     }
     
    +func (gv GroupVersion) WithKind(kind Kind) GroupVersionKind {
    +	return GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: kind}
    +}
    +
     type GroupVersions struct {
     	// The name of the package for this group, e.g. apps.
     	PackageName string
    diff --git a/vendor/k8s.io/code-generator/cmd/conversion-gen/args/args.go b/vendor/k8s.io/code-generator/cmd/conversion-gen/args/args.go
    index c69280b10632..eaadaa1b93ff 100644
    --- a/vendor/k8s.io/code-generator/cmd/conversion-gen/args/args.go
    +++ b/vendor/k8s.io/code-generator/cmd/conversion-gen/args/args.go
    @@ -20,7 +20,8 @@ import (
     	"fmt"
     
     	"github.com/spf13/pflag"
    -	"k8s.io/gengo/args"
    +
    +	"k8s.io/gengo/v2"
     )
     
     // DefaultBasePeerDirs are the peer-dirs nearly everybody will use, i.e. those coming from
    @@ -31,8 +32,10 @@ var DefaultBasePeerDirs = []string{
     	"k8s.io/apimachinery/pkg/runtime",
     }
     
    -// CustomArgs is used by the gengo framework to pass args specific to this generator.
    -type CustomArgs struct {
    +type Args struct {
    +	// The filename of the generated results.
    +	OutputFile string
    +
     	// Base peer dirs which nearly everybody will use, i.e. outside of Kubernetes core. Peer dirs
     	// are declared to make the generator pick up manually written conversion funcs from external
     	// packages.
    @@ -42,49 +45,51 @@ type CustomArgs struct {
     	// generator pick up manually written conversion funcs from external packages.
     	ExtraPeerDirs []string
     
    -	// Additional dirs to parse and load, but not consider for peers.  This is
    -	// useful when packages depend on other packages and want to call
    -	// conversions across them.
    -	ExtraDirs []string
    -
     	// SkipUnsafe indicates whether to generate unsafe conversions to improve the efficiency
     	// of these operations. The unsafe operation is a direct pointer assignment via unsafe
     	// (within the allowed uses of unsafe) and is equivalent to a proposed Golang change to
     	// allow structs that are identical to be assigned to each other.
     	SkipUnsafe bool
    +
    +	// GoHeaderFile is the path to a boilerplate header file for generated
    +	// code.
    +	GoHeaderFile string
    +
    +	// GeneratedBuildTag is the tag used to identify code generated by execution
    +	// of this type. Each generator should use a different tag, and different
    +	// groups of generators (external API that depends on Kube generations) should
    +	// keep tags distinct as well.
    +	GeneratedBuildTag string
     }
     
    -// NewDefaults returns default arguments for the generator.
    -func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
    -	genericArgs := args.Default().WithoutDefaultFlagParsing()
    -	customArgs := &CustomArgs{
    -		BasePeerDirs: DefaultBasePeerDirs,
    -		SkipUnsafe:   false,
    +// New returns default arguments for the generator.
    +func New() *Args {
    +	return &Args{
    +		BasePeerDirs:      DefaultBasePeerDirs,
    +		SkipUnsafe:        false,
    +		GeneratedBuildTag: gengo.StdBuildTag,
     	}
    -	genericArgs.CustomArgs = customArgs
    -	genericArgs.OutputFileBaseName = "conversion_generated"
    -	return genericArgs, customArgs
     }
     
     // AddFlags add the generator flags to the flag set.
    -func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) {
    -	pflag.CommandLine.StringSliceVar(&ca.BasePeerDirs, "base-peer-dirs", ca.BasePeerDirs,
    +func (args *Args) AddFlags(fs *pflag.FlagSet) {
    +	fs.StringVar(&args.OutputFile, "output-file", "generated.conversion.go",
    +		"the name of the file to be generated")
    +	fs.StringSliceVar(&args.BasePeerDirs, "base-peer-dirs", args.BasePeerDirs,
     		"Comma-separated list of apimachinery import paths which are considered, after tag-specified peers, for conversions. Only change these if you have very good reasons.")
    -	pflag.CommandLine.StringSliceVar(&ca.ExtraPeerDirs, "extra-peer-dirs", ca.ExtraPeerDirs,
    +	fs.StringSliceVar(&args.ExtraPeerDirs, "extra-peer-dirs", args.ExtraPeerDirs,
     		"Application specific comma-separated list of import paths which are considered, after tag-specified peers and base-peer-dirs, for conversions.")
    -	pflag.CommandLine.StringSliceVar(&ca.ExtraDirs, "extra-dirs", ca.ExtraDirs,
    -		"Application specific comma-separated list of import paths which are loaded and considered for callable conversions, but are not considered peers for conversion.")
    -	pflag.CommandLine.BoolVar(&ca.SkipUnsafe, "skip-unsafe", ca.SkipUnsafe,
    +	fs.BoolVar(&args.SkipUnsafe, "skip-unsafe", args.SkipUnsafe,
     		"If true, will not generate code using unsafe pointer conversions; resulting code may be slower.")
    +	fs.StringVar(&args.GoHeaderFile, "go-header-file", "",
    +		"the path to a file containing boilerplate header text; the string \"YEAR\" will be replaced with the current 4-digit year")
    +	fs.StringVar(&args.GeneratedBuildTag, "build-tag", args.GeneratedBuildTag, "A Go build tag to use to identify files generated by this command. Should be unique.")
     }
     
     // Validate checks the given arguments.
    -func Validate(genericArgs *args.GeneratorArgs) error {
    -	_ = genericArgs.CustomArgs.(*CustomArgs)
    -
    -	if len(genericArgs.OutputFileBaseName) == 0 {
    -		return fmt.Errorf("output file base name cannot be empty")
    +func (args *Args) Validate() error {
    +	if len(args.OutputFile) == 0 {
    +		return fmt.Errorf("--output-file must be specified")
     	}
    -
     	return nil
     }
    diff --git a/vendor/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go b/vendor/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go
    index 5b7347971f16..a5f1b0cfb43c 100644
    --- a/vendor/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go
    +++ b/vendor/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go
    @@ -20,20 +20,17 @@ import (
     	"bytes"
     	"fmt"
     	"io"
    -	"path/filepath"
    +	"path"
     	"reflect"
     	"sort"
     	"strings"
     
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    -
    +	"k8s.io/code-generator/cmd/conversion-gen/args"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     	"k8s.io/klog/v2"
    -
    -	conversionargs "k8s.io/code-generator/cmd/conversion-gen/args"
    -	genutil "k8s.io/code-generator/pkg/util"
     )
     
     // These are the comment tags that carry parameters for conversion generation.
    @@ -52,24 +49,24 @@ const (
     )
     
     func extractTag(comments []string) []string {
    -	return types.ExtractCommentTags("+", comments)[tagName]
    +	return gengo.ExtractCommentTags("+", comments)[tagName]
     }
     
     func extractExplicitFromTag(comments []string) []string {
    -	return types.ExtractCommentTags("+", comments)[explicitFromTagName]
    +	return gengo.ExtractCommentTags("+", comments)[explicitFromTagName]
     }
     
     func extractExternalTypesTag(comments []string) []string {
    -	return types.ExtractCommentTags("+", comments)[externalTypesTagName]
    +	return gengo.ExtractCommentTags("+", comments)[externalTypesTagName]
     }
     
     func isCopyOnly(comments []string) bool {
    -	values := types.ExtractCommentTags("+", comments)["k8s:conversion-fn"]
    +	values := gengo.ExtractCommentTags("+", comments)["k8s:conversion-fn"]
     	return len(values) == 1 && values[0] == "copy-only"
     }
     
     func isDrop(comments []string) bool {
    -	values := types.ExtractCommentTags("+", comments)["k8s:conversion-fn"]
    +	values := gengo.ExtractCommentTags("+", comments)["k8s:conversion-fn"]
     	return len(values) == 1 && values[0] == "drop"
     }
     
    @@ -136,7 +133,7 @@ func getManualConversionFunctions(context *generator.Context, pkg *types.Package
     		klog.Warning("Skipping nil package passed to getManualConversionFunctions")
     		return
     	}
    -	klog.V(5).Infof("Scanning for conversion functions in %v", pkg.Name)
    +	klog.V(3).Infof("Scanning for conversion functions in %v", pkg.Path)
     
     	scopeName := types.Ref(conversionPackagePath, "Scope").Name
     	errorName := types.Ref("", "error").Name
    @@ -152,27 +149,27 @@ func getManualConversionFunctions(context *generator.Context, pkg *types.Package
     			klog.Errorf("Function without signature: %#v", f)
     			continue
     		}
    -		klog.V(8).Infof("Considering function %s", f.Name)
    +		klog.V(6).Infof("Considering function %s", f.Name)
     		signature := f.Underlying.Signature
     		// Check whether the function is conversion function.
     		// Note that all of them have signature:
     		// func Convert_inType_To_outType(inType, outType, conversion.Scope) error
     		if signature.Receiver != nil {
    -			klog.V(8).Infof("%s has a receiver", f.Name)
    +			klog.V(6).Infof("%s has a receiver", f.Name)
     			continue
     		}
    -		if len(signature.Parameters) != 3 || signature.Parameters[2].Name != scopeName {
    -			klog.V(8).Infof("%s has wrong parameters", f.Name)
    +		if len(signature.Parameters) != 3 || signature.Parameters[2].Type.Name != scopeName {
    +			klog.V(6).Infof("%s has wrong parameters", f.Name)
     			continue
     		}
    -		if len(signature.Results) != 1 || signature.Results[0].Name != errorName {
    -			klog.V(8).Infof("%s has wrong results", f.Name)
    +		if len(signature.Results) != 1 || signature.Results[0].Type.Name != errorName {
    +			klog.V(6).Infof("%s has wrong results", f.Name)
     			continue
     		}
    -		inType := signature.Parameters[0]
    -		outType := signature.Parameters[1]
    +		inType := signature.Parameters[0].Type
    +		outType := signature.Parameters[1].Type
     		if inType.Kind != types.Pointer || outType.Kind != types.Pointer {
    -			klog.V(8).Infof("%s has wrong parameter types", f.Name)
    +			klog.V(6).Infof("%s has wrong parameter types", f.Name)
     			continue
     		}
     		// Now check if the name satisfies the convention.
    @@ -180,7 +177,7 @@ func getManualConversionFunctions(context *generator.Context, pkg *types.Package
     		args := argsFromType(inType.Elem, outType.Elem)
     		sw.Do("Convert_$.inType|public$_To_$.outType|public$", args)
     		if f.Name.Name == buffer.String() {
    -			klog.V(4).Infof("Found conversion function %s", f.Name)
    +			klog.V(2).Infof("Found conversion function %s", f.Name)
     			key := conversionPair{inType.Elem, outType.Elem}
     			// We might scan the same package twice, and that's OK.
     			if v, ok := manualMap[key]; ok && v != nil && v.Name.Package != pkg.Path {
    @@ -192,20 +189,19 @@ func getManualConversionFunctions(context *generator.Context, pkg *types.Package
     			if strings.HasPrefix(f.Name.Name, "Convert_") {
     				klog.Errorf("Rename function %s %s -> %s to match expected conversion signature", f.Name.Package, f.Name.Name, buffer.String())
     			}
    -			klog.V(8).Infof("%s has wrong name", f.Name)
    +			klog.V(3).Infof("%s has wrong name", f.Name)
     		}
     		buffer.Reset()
     	}
     }
     
    -func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	boilerplate, err := arguments.LoadGoBoilerplate()
    +func GetTargets(context *generator.Context, args *args.Args) []generator.Target {
    +	boilerplate, err := gengo.GoBoilerplate(args.GoHeaderFile, args.GeneratedBuildTag, gengo.StdGeneratedBy)
     	if err != nil {
     		klog.Fatalf("Failed loading boilerplate: %v", err)
     	}
     
    -	packages := generator.Packages{}
    -	header := append([]byte(fmt.Sprintf("// +build !%s\n\n", arguments.GeneratedBuildTag)), boilerplate...)
    +	targets := []generator.Target{}
     
     	// Accumulate pre-existing conversion functions.
     	// TODO: This is too ad-hoc.  We need a better way.
    @@ -219,131 +215,122 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     	//   have non-trivial conversion
     	memoryEquivalentTypes := equalMemoryTypes{}
     
    -	// We are generating conversions only for packages that are explicitly
    -	// passed as InputDir.
    -	processed := map[string]bool{}
    +	// First load other "input" packages.  We do this as a single call because
    +	// it is MUCH faster.
    +	filteredInputs := make([]string, 0, len(context.Inputs))
    +	otherPkgs := make([]string, 0, len(context.Inputs))
    +	pkgToPeers := map[string][]string{}
    +	pkgToExternal := map[string]string{}
     	for _, i := range context.Inputs {
    -		// skip duplicates
    -		if processed[i] {
    -			continue
    -		}
    -		processed[i] = true
    +		klog.V(3).Infof("pre-processing pkg %q", i)
     
    -		klog.V(5).Infof("considering pkg %q", i)
     		pkg := context.Universe[i]
    -		// typesPkg is where the versioned types are defined. Sometimes it is
    -		// different from pkg. For example, kubernetes core/v1 types are defined
    -		// in vendor/k8s.io/api/core/v1, while pkg is at pkg/api/v1.
    -		typesPkg := pkg
    -		if pkg == nil {
    -			// If the input had no Go files, for example.
    -			continue
    -		}
    -
    -		// Add conversion and defaulting functions.
    -		getManualConversionFunctions(context, pkg, manualConversions)
     
     		// Only generate conversions for packages which explicitly request it
     		// by specifying one or more "+k8s:conversion-gen="
     		// in their doc.go file.
     		peerPkgs := extractTag(pkg.Comments)
    -		if peerPkgs != nil {
    -			klog.V(5).Infof("  tags: %q", peerPkgs)
    -			if len(peerPkgs) == 1 && peerPkgs[0] == "false" {
    -				// If a single +k8s:conversion-gen=false tag is defined, we still want
    -				// the generator to fire for this package for explicit conversions, but
    -				// we are clearing the peerPkgs to not generate any standard conversions.
    -				peerPkgs = nil
    -			}
    -		} else {
    -			klog.V(5).Infof("  no tag")
    +		if peerPkgs == nil {
    +			klog.V(3).Infof("  no tag")
     			continue
     		}
    -		skipUnsafe := false
    -		extraDirs := []string{}
    -		if customArgs, ok := arguments.CustomArgs.(*conversionargs.CustomArgs); ok {
    -			if len(peerPkgs) > 0 {
    -				peerPkgs = append(peerPkgs, customArgs.BasePeerDirs...)
    -				peerPkgs = append(peerPkgs, customArgs.ExtraPeerDirs...)
    -			}
    -			extraDirs = customArgs.ExtraDirs
    -			skipUnsafe = customArgs.SkipUnsafe
    +		klog.V(3).Infof("  tags: %q", peerPkgs)
    +		if len(peerPkgs) == 1 && peerPkgs[0] == "false" {
    +			// If a single +k8s:conversion-gen=false tag is defined, we still want
    +			// the generator to fire for this package for explicit conversions, but
    +			// we are clearing the peerPkgs to not generate any standard conversions.
    +			peerPkgs = nil
    +		} else {
    +			// Save peers for each input
    +			pkgToPeers[i] = peerPkgs
     		}
    +		otherPkgs = append(otherPkgs, peerPkgs...)
    +		// Keep this one for further processing.
    +		filteredInputs = append(filteredInputs, i)
     
    -		// if the external types are not in the same package where the conversion functions to be generated
    +		// if the external types are not in the same package where the
    +		// conversion functions to be generated
     		externalTypesValues := extractExternalTypesTag(pkg.Comments)
     		if externalTypesValues != nil {
     			if len(externalTypesValues) != 1 {
     				klog.Fatalf("  expect only one value for %q tag, got: %q", externalTypesTagName, externalTypesValues)
     			}
     			externalTypes := externalTypesValues[0]
    -			klog.V(5).Infof("  external types tags: %q", externalTypes)
    -			var err error
    -			typesPkg, err = context.AddDirectory(externalTypes)
    -			if err != nil {
    -				klog.Fatalf("cannot import package %s", externalTypes)
    -			}
    -			// update context.Order to the latest context.Universe
    -			orderer := namer.Orderer{Namer: namer.NewPublicNamer(1)}
    -			context.Order = orderer.OrderUniverse(context.Universe)
    +			klog.V(3).Infof("  external types tags: %q", externalTypes)
    +			otherPkgs = append(otherPkgs, externalTypes)
    +			pkgToExternal[i] = externalTypes
    +		} else {
    +			pkgToExternal[i] = i
     		}
    +	}
     
    -		// if the source path is within a /vendor/ directory (for example,
    -		// k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1), allow
    -		// generation to output to the proper relative path (under vendor).
    -		// Otherwise, the generator will create the file in the wrong location
    -		// in the output directory.
    -		// TODO: build a more fundamental concept in gengo for dealing with modifications
    -		// to vendored packages.
    -		for i := range peerPkgs {
    -			peerPkgs[i] = genutil.Vendorless(peerPkgs[i])
    +	// Make sure explicit peer-packages are added.
    +	peers := args.BasePeerDirs
    +	peers = append(peers, args.ExtraPeerDirs...)
    +	if expanded, err := context.FindPackages(peers...); err != nil {
    +		klog.Fatalf("cannot find peer packages: %v", err)
    +	} else {
    +		otherPkgs = append(otherPkgs, expanded...)
    +		// for each pkg, add these extras, too
    +		for k := range pkgToPeers {
    +			pkgToPeers[k] = append(pkgToPeers[k], expanded...)
     		}
    -		for i := range extraDirs {
    -			extraDirs[i] = genutil.Vendorless(extraDirs[i])
    +	}
    +
    +	if len(otherPkgs) > 0 {
    +		if _, err := context.LoadPackages(otherPkgs...); err != nil {
    +			klog.Fatalf("cannot load packages: %v", err)
     		}
    +	}
    +	// update context.Order to the latest context.Universe
    +	orderer := namer.Orderer{Namer: namer.NewPublicNamer(1)}
    +	context.Order = orderer.OrderUniverse(context.Universe)
     
    -		// Make sure our peer-packages are added and fully parsed.
    -		for _, pp := range append(peerPkgs, extraDirs...) {
    -			context.AddDir(pp)
    -			p := context.Universe[pp]
    -			if nil == p {
    -				klog.Fatalf("failed to find pkg: %s", pp)
    -			}
    -			getManualConversionFunctions(context, p, manualConversions)
    +	// Look for conversion functions in the peer-packages.
    +	for _, pp := range otherPkgs {
    +		p := context.Universe[pp]
    +		if p == nil {
    +			klog.Fatalf("failed to find pkg: %s", pp)
     		}
    +		getManualConversionFunctions(context, p, manualConversions)
    +	}
    +
    +	// We are generating conversions only for packages that are explicitly
    +	// passed as InputDir.
    +	for _, i := range filteredInputs {
    +		klog.V(3).Infof("considering pkg %q", i)
    +		pkg := context.Universe[i]
    +		// typesPkg is where the versioned types are defined. Sometimes it is
    +		// different from pkg. For example, kubernetes core/v1 types are defined
    +		// in k8s.io/api/core/v1, while pkg is at pkg/api/v1.
    +		typesPkg := pkg
    +
    +		// Add conversion and defaulting functions.
    +		getManualConversionFunctions(context, pkg, manualConversions)
    +
    +		// Find the right input pkg, which might not be this one.
    +		externalTypes := pkgToExternal[i]
    +		typesPkg = context.Universe[externalTypes]
     
     		unsafeEquality := TypesEqual(memoryEquivalentTypes)
    -		if skipUnsafe {
    +		if args.SkipUnsafe {
     			unsafeEquality = noEquality{}
     		}
     
    -		path := pkg.Path
    -		// if the source path is within a /vendor/ directory (for example,
    -		// k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1), allow
    -		// generation to output to the proper relative path (under vendor).
    -		// Otherwise, the generator will create the file in the wrong location
    -		// in the output directory.
    -		// TODO: build a more fundamental concept in gengo for dealing with modifications
    -		// to vendored packages.
    -		if strings.HasPrefix(pkg.SourcePath, arguments.OutputBase) {
    -			expandedPath := strings.TrimPrefix(pkg.SourcePath, arguments.OutputBase)
    -			if strings.Contains(expandedPath, "/vendor/") {
    -				path = expandedPath
    -			}
    -		}
    -		packages = append(packages,
    -			&generator.DefaultPackage{
    -				PackageName: filepath.Base(pkg.Path),
    -				PackagePath: path,
    -				HeaderText:  header,
    -				GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    -					return []generator.Generator{
    -						NewGenConversion(arguments.OutputFileBaseName, typesPkg.Path, pkg.Path, manualConversions, peerPkgs, unsafeEquality),
    -					}
    -				},
    +		targets = append(targets,
    +			&generator.SimpleTarget{
    +				PkgName:       path.Base(pkg.Path),
    +				PkgPath:       pkg.Path,
    +				PkgDir:        pkg.Dir, // output pkg is the same as the input
    +				HeaderComment: boilerplate,
     				FilterFunc: func(c *generator.Context, t *types.Type) bool {
     					return t.Name.Package == typesPkg.Path
     				},
    +				GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
    +					return []generator.Generator{
    +						NewGenConversion(args.OutputFile, typesPkg.Path, pkg.Path, manualConversions, pkgToPeers[pkg.Path], unsafeEquality),
    +					}
    +				},
     			})
     	}
     
    @@ -351,14 +338,14 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     	// from being a candidate for unsafe conversion
     	for k, v := range manualConversions {
     		if isCopyOnly(v.CommentLines) {
    -			klog.V(5).Infof("Conversion function %s will not block memory copy because it is copy-only", v.Name)
    +			klog.V(4).Infof("Conversion function %s will not block memory copy because it is copy-only", v.Name)
     			continue
     		}
     		// this type should be excluded from all equivalence, because the converter must be called.
     		memoryEquivalentTypes.Skip(k.inType, k.outType)
     	}
     
    -	return packages
    +	return targets
     }
     
     type equalMemoryTypes map[conversionPair]bool
    @@ -466,7 +453,7 @@ type TypesEqual interface {
     
     // genConversion produces a file with a autogenerated conversions.
     type genConversion struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	// the package that contains the types that conversion func are going to be
     	// generated for
     	typesPackage string
    @@ -482,16 +469,16 @@ type genConversion struct {
     	useUnsafe           TypesEqual
     }
     
    -func NewGenConversion(sanitizedName, typesPackage, outputPackage string, manualConversions conversionFuncMap, peerPkgs []string, useUnsafe TypesEqual) generator.Generator {
    +func NewGenConversion(outputFilename, typesPackage, outputPackage string, manualConversions conversionFuncMap, peerPkgs []string, useUnsafe TypesEqual) generator.Generator {
     	return &genConversion{
    -		DefaultGen: generator.DefaultGen{
    -			OptionalName: sanitizedName,
    +		GoGenerator: generator.GoGenerator{
    +			OutputFilename: outputFilename,
     		},
     		typesPackage:        typesPackage,
     		outputPackage:       outputPackage,
     		peerPackages:        peerPkgs,
     		manualConversions:   manualConversions,
    -		imports:             generator.NewImportTracker(),
    +		imports:             generator.NewImportTrackerForPackage(outputPackage),
     		types:               []*types.Type{},
     		explicitConversions: []conversionPair{},
     		skippedFields:       map[*types.Type][]string{},
    @@ -538,7 +525,7 @@ func (g *genConversion) convertibleOnlyWithinPackage(inType, outType *types.Type
     		if tagvals[0] != "false" {
     			klog.Fatalf("Type %v: unsupported %s value: %q", t, tagName, tagvals[0])
     		}
    -		klog.V(5).Infof("type %v requests no conversion generation, skipping", t)
    +		klog.V(2).Infof("type %v requests no conversion generation, skipping", t)
     		return false
     	}
     	// TODO: Consider generating functions for other kinds too.
    @@ -553,7 +540,8 @@ func (g *genConversion) convertibleOnlyWithinPackage(inType, outType *types.Type
     }
     
     func getExplicitFromTypes(t *types.Type) []types.Name {
    -	comments := append(t.SecondClosestCommentLines, t.CommentLines...)
    +	comments := t.SecondClosestCommentLines
    +	comments = append(comments, t.CommentLines...)
     	paths := extractExplicitFromTag(comments)
     	result := []types.Name{}
     	for _, path := range paths {
    @@ -638,7 +626,7 @@ func (g *genConversion) preexists(inType, outType *types.Type) (*types.Type, boo
     }
     
     func (g *genConversion) Init(c *generator.Context, w io.Writer) error {
    -	klogV := klog.V(5)
    +	klogV := klog.V(6)
     	if klogV.Enabled() {
     		if m, ok := g.useUnsafe.(equalMemoryTypes); ok {
     			var result []string
    @@ -694,10 +682,7 @@ func (g *genConversion) Init(c *generator.Context, w io.Writer) error {
     	}
     	// sort by name of the conversion function
     	sort.Slice(pairs, func(i, j int) bool {
    -		if g.manualConversions[pairs[i]].Name.Name < g.manualConversions[pairs[j]].Name.Name {
    -			return true
    -		}
    -		return false
    +		return g.manualConversions[pairs[i]].Name.Name < g.manualConversions[pairs[j]].Name.Name
     	})
     	for _, pair := range pairs {
     		args := argsFromType(pair.inType, pair.outType).With("Scope", types.Ref(conversionPackagePath, "Scope")).With("fn", g.manualConversions[pair])
    @@ -731,7 +716,7 @@ func (g *genConversion) GenerateType(c *generator.Context, t *types.Type, w io.W
     		}
     		switch {
     		case inType.Name.Package == "net/url" && inType.Name.Name == "Values":
    -			g.generateFromUrlValues(inType, t, sw)
    +			g.generateFromURLValues(inType, t, sw)
     		default:
     			klog.Errorf("Not supported input type: %#v", inType.Name)
     		}
    @@ -771,7 +756,7 @@ func (g *genConversion) generateConversion(inType, outType *types.Type, sw *gene
     // at any nesting level. This makes the autogenerator easy to understand, and
     // the compiler shouldn't care.
     func (g *genConversion) generateFor(inType, outType *types.Type, sw *generator.SnippetWriter) {
    -	klog.V(5).Infof("generating %v -> %v", inType, outType)
    +	klog.V(4).Infof("generating %v -> %v", inType, outType)
     	var f func(*types.Type, *types.Type, *generator.SnippetWriter)
     
     	switch inType.Kind {
    @@ -948,7 +933,7 @@ func (g *genConversion) doStruct(inType, outType *types.Type, sw *generator.Snip
     				sw.Do("}\n", nil)
     				continue
     			}
    -			klog.V(5).Infof("Skipped function %s because it is copy-only and we can use direct assignment", function.Name)
    +			klog.V(2).Infof("Skipped function %s because it is copy-only and we can use direct assignment", function.Name)
     		}
     
     		// If we can't auto-convert, punt before we emit any code.
    @@ -1087,7 +1072,7 @@ func (g *genConversion) doUnknown(inType, outType *types.Type, sw *generator.Sni
     	sw.Do("// FIXME: Type $.|raw$ is unsupported.\n", inType)
     }
     
    -func (g *genConversion) generateFromUrlValues(inType, outType *types.Type, sw *generator.SnippetWriter) {
    +func (g *genConversion) generateFromURLValues(inType, outType *types.Type, sw *generator.SnippetWriter) {
     	args := generator.Args{
     		"inType":  inType,
     		"outType": outType,
    diff --git a/vendor/k8s.io/code-generator/cmd/conversion-gen/main.go b/vendor/k8s.io/code-generator/cmd/conversion-gen/main.go
    index 5a461d270903..5aec5025d58a 100644
    --- a/vendor/k8s.io/code-generator/cmd/conversion-gen/main.go
    +++ b/vendor/k8s.io/code-generator/cmd/conversion-gen/main.go
    @@ -102,36 +102,34 @@ import (
     
     	generatorargs "k8s.io/code-generator/cmd/conversion-gen/args"
     	"k8s.io/code-generator/cmd/conversion-gen/generators"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
     )
     
     func main() {
     	klog.InitFlags(nil)
    -	genericArgs, customArgs := generatorargs.NewDefaults()
    +	args := generatorargs.New()
     
    -	genericArgs.AddFlags(pflag.CommandLine)
    -	customArgs.AddFlags(pflag.CommandLine)
    +	args.AddFlags(pflag.CommandLine)
     	flag.Set("logtostderr", "true")
     	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
     	pflag.Parse()
     
    -	// k8s.io/apimachinery/pkg/runtime contains a number of manual conversions,
    -	// that we need to generate conversions.
    -	// Packages being dependencies of explicitly requested packages are only
    -	// partially scanned - only types explicitly used are being traversed.
    -	// Not used functions or types are omitted.
    -	// Adding this explicitly to InputDirs ensures that the package is fully
    -	// scanned and all functions are parsed and processed.
    -	genericArgs.InputDirs = append(genericArgs.InputDirs, "k8s.io/apimachinery/pkg/runtime")
    -
    -	if err := generatorargs.Validate(genericArgs); err != nil {
    +	if err := args.Validate(); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
     
    +	myTargets := func(context *generator.Context) []generator.Target {
    +		return generators.GetTargets(context, args)
    +	}
    +
     	// Run it.
    -	if err := genericArgs.Execute(
    +	if err := gengo.Execute(
     		generators.NameSystems(),
     		generators.DefaultNameSystem(),
    -		generators.Packages,
    +		myTargets,
    +		args.GeneratedBuildTag,
    +		pflag.Args(),
     	); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/deepcopy-gen/args/args.go b/vendor/k8s.io/code-generator/cmd/deepcopy-gen/args/args.go
    index 789713012adc..f5207a980e3e 100644
    --- a/vendor/k8s.io/code-generator/cmd/deepcopy-gen/args/args.go
    +++ b/vendor/k8s.io/code-generator/cmd/deepcopy-gen/args/args.go
    @@ -20,35 +20,33 @@ import (
     	"fmt"
     
     	"github.com/spf13/pflag"
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/examples/deepcopy-gen/generators"
     )
     
    -// CustomArgs is used by the gengo framework to pass args specific to this generator.
    -type CustomArgs generators.CustomArgs
    +type Args struct {
    +	OutputFile   string
    +	BoundingDirs []string // Only deal with types rooted under these dirs.
    +	GoHeaderFile string
    +}
     
    -// NewDefaults returns default arguments for the generator.
    -func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
    -	genericArgs := args.Default().WithoutDefaultFlagParsing()
    -	customArgs := &CustomArgs{}
    -	genericArgs.CustomArgs = (*generators.CustomArgs)(customArgs) // convert to upstream type to make type-casts work there
    -	genericArgs.OutputFileBaseName = "deepcopy_generated"
    -	return genericArgs, customArgs
    +// New returns default arguments for the generator.
    +func New() *Args {
    +	return &Args{}
     }
     
     // AddFlags add the generator flags to the flag set.
    -func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) {
    -	pflag.CommandLine.StringSliceVar(&ca.BoundingDirs, "bounding-dirs", ca.BoundingDirs,
    +func (args *Args) AddFlags(fs *pflag.FlagSet) {
    +	fs.StringVar(&args.OutputFile, "output-file", "generated.deepcopy.go",
    +		"the name of the file to be generated")
    +	fs.StringSliceVar(&args.BoundingDirs, "bounding-dirs", args.BoundingDirs,
     		"Comma-separated list of import paths which bound the types for which deep-copies will be generated.")
    +	fs.StringVar(&args.GoHeaderFile, "go-header-file", "",
    +		"the path to a file containing boilerplate header text; the string \"YEAR\" will be replaced with the current 4-digit year")
     }
     
     // Validate checks the given arguments.
    -func Validate(genericArgs *args.GeneratorArgs) error {
    -	_ = genericArgs.CustomArgs.(*generators.CustomArgs)
    -
    -	if len(genericArgs.OutputFileBaseName) == 0 {
    -		return fmt.Errorf("output file base name cannot be empty")
    +func (args *Args) Validate() error {
    +	if len(args.OutputFile) == 0 {
    +		return fmt.Errorf("--output-file must be specified")
     	}
    -
     	return nil
     }
    diff --git a/vendor/k8s.io/gengo/examples/deepcopy-gen/generators/deepcopy.go b/vendor/k8s.io/code-generator/cmd/deepcopy-gen/generators/deepcopy.go
    similarity index 85%
    rename from vendor/k8s.io/gengo/examples/deepcopy-gen/generators/deepcopy.go
    rename to vendor/k8s.io/code-generator/cmd/deepcopy-gen/generators/deepcopy.go
    index 8d5942081ecd..e1a8e4c166ac 100644
    --- a/vendor/k8s.io/gengo/examples/deepcopy-gen/generators/deepcopy.go
    +++ b/vendor/k8s.io/code-generator/cmd/deepcopy-gen/generators/deepcopy.go
    @@ -19,24 +19,18 @@ package generators
     import (
     	"fmt"
     	"io"
    -	"path/filepath"
    +	"path"
     	"sort"
     	"strings"
     
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    -
    +	"k8s.io/code-generator/cmd/deepcopy-gen/args"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     	"k8s.io/klog/v2"
     )
     
    -// CustomArgs is used tby the go2idl framework to pass args specific to this
    -// generator.
    -type CustomArgs struct {
    -	BoundingDirs []string // Only deal with types rooted under these dirs.
    -}
    -
     // This is the comment tag that carries parameters for deep-copy generation.
     const (
     	tagEnabledName              = "k8s:deepcopy-gen"
    @@ -59,7 +53,7 @@ func extractEnabledTypeTag(t *types.Type) *enabledTagValue {
     }
     
     func extractEnabledTag(comments []string) *enabledTagValue {
    -	tagVals := types.ExtractCommentTags("+", comments)[tagEnabledName]
    +	tagVals := gengo.ExtractCommentTags("+", comments)[tagEnabledName]
     	if tagVals == nil {
     		// No match for the tag.
     		return nil
    @@ -124,34 +118,28 @@ func DefaultNameSystem() string {
     	return "public"
     }
     
    -func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	boilerplate, err := arguments.LoadGoBoilerplate()
    +func GetTargets(context *generator.Context, args *args.Args) []generator.Target {
    +	boilerplate, err := gengo.GoBoilerplate(args.GoHeaderFile, gengo.StdBuildTag, gengo.StdGeneratedBy)
     	if err != nil {
     		klog.Fatalf("Failed loading boilerplate: %v", err)
     	}
     
    -	packages := generator.Packages{}
    -	header := append([]byte(fmt.Sprintf("//go:build !%s\n// +build !%s\n\n", arguments.GeneratedBuildTag, arguments.GeneratedBuildTag)), boilerplate...)
    -
     	boundingDirs := []string{}
    -	if customArgs, ok := arguments.CustomArgs.(*CustomArgs); ok {
    -		if customArgs.BoundingDirs == nil {
    -			customArgs.BoundingDirs = context.Inputs
    -		}
    -		for i := range customArgs.BoundingDirs {
    -			// Strip any trailing slashes - they are not exactly "correct" but
    -			// this is friendlier.
    -			boundingDirs = append(boundingDirs, strings.TrimRight(customArgs.BoundingDirs[i], "/"))
    -		}
    +	if args.BoundingDirs == nil {
    +		args.BoundingDirs = context.Inputs
     	}
    +	for i := range args.BoundingDirs {
    +		// Strip any trailing slashes - they are not exactly "correct" but
    +		// this is friendlier.
    +		boundingDirs = append(boundingDirs, strings.TrimRight(args.BoundingDirs[i], "/"))
    +	}
    +
    +	targets := []generator.Target{}
     
     	for _, i := range context.Inputs {
    -		klog.V(5).Infof("Considering pkg %q", i)
    +		klog.V(3).Infof("Considering pkg %q", i)
    +
     		pkg := context.Universe[i]
    -		if pkg == nil {
    -			// If the input had no Go files, for example.
    -			continue
    -		}
     
     		ptag := extractEnabledTag(pkg.Comments)
     		ptagValue := ""
    @@ -162,9 +150,9 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     				klog.Fatalf("Package %v: unsupported %s value: %q", i, tagEnabledName, ptagValue)
     			}
     			ptagRegister = ptag.register
    -			klog.V(5).Infof("  tag.value: %q, tag.register: %t", ptagValue, ptagRegister)
    +			klog.V(3).Infof("  tag.value: %q, tag.register: %t", ptagValue, ptagRegister)
     		} else {
    -			klog.V(5).Infof("  no tag")
    +			klog.V(3).Infof("  no tag")
     		}
     
     		// If the pkg-scoped tag says to generate, we can skip scanning types.
    @@ -175,10 +163,10 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     			// can be copied.
     			var uncopyable []string
     			for _, t := range pkg.Types {
    -				klog.V(5).Infof("  considering type %q", t.Name.String())
    +				klog.V(3).Infof("  considering type %q", t.Name.String())
     				ttag := extractEnabledTypeTag(t)
     				if ttag != nil && ttag.value == "true" {
    -					klog.V(5).Infof("    tag=true")
    +					klog.V(3).Infof("    tag=true")
     					if !copyableType(t) {
     						uncopyable = append(uncopyable, fmt.Sprintf("%v", t))
     					} else {
    @@ -194,42 +182,29 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     
     		if pkgNeedsGeneration {
     			klog.V(3).Infof("Package %q needs generation", i)
    -			path := pkg.Path
    -			// if the source path is within a /vendor/ directory (for example,
    -			// k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1), allow
    -			// generation to output to the proper relative path (under vendor).
    -			// Otherwise, the generator will create the file in the wrong location
    -			// in the output directory.
    -			// TODO: build a more fundamental concept in gengo for dealing with modifications
    -			// to vendored packages.
    -			if strings.HasPrefix(pkg.SourcePath, arguments.OutputBase) {
    -				expandedPath := strings.TrimPrefix(pkg.SourcePath, arguments.OutputBase)
    -				if strings.Contains(expandedPath, "/vendor/") {
    -					path = expandedPath
    -				}
    -			}
    -			packages = append(packages,
    -				&generator.DefaultPackage{
    -					PackageName: strings.Split(filepath.Base(pkg.Path), ".")[0],
    -					PackagePath: path,
    -					HeaderText:  header,
    -					GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    -						return []generator.Generator{
    -							NewGenDeepCopy(arguments.OutputFileBaseName, pkg.Path, boundingDirs, (ptagValue == tagValuePackage), ptagRegister),
    -						}
    -					},
    +			targets = append(targets,
    +				&generator.SimpleTarget{
    +					PkgName:       strings.Split(path.Base(pkg.Path), ".")[0],
    +					PkgPath:       pkg.Path,
    +					PkgDir:        pkg.Dir, // output pkg is the same as the input
    +					HeaderComment: boilerplate,
     					FilterFunc: func(c *generator.Context, t *types.Type) bool {
     						return t.Name.Package == pkg.Path
     					},
    +					GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
    +						return []generator.Generator{
    +							NewGenDeepCopy(args.OutputFile, pkg.Path, boundingDirs, (ptagValue == tagValuePackage), ptagRegister),
    +						}
    +					},
     				})
     		}
     	}
    -	return packages
    +	return targets
     }
     
     // genDeepCopy produces a file with autogenerated deep-copy functions.
     type genDeepCopy struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	targetPackage string
     	boundingDirs  []string
     	allTypes      bool
    @@ -238,16 +213,16 @@ type genDeepCopy struct {
     	typesForInit  []*types.Type
     }
     
    -func NewGenDeepCopy(sanitizedName, targetPackage string, boundingDirs []string, allTypes, registerTypes bool) generator.Generator {
    +func NewGenDeepCopy(outputFilename, targetPackage string, boundingDirs []string, allTypes, registerTypes bool) generator.Generator {
     	return &genDeepCopy{
    -		DefaultGen: generator.DefaultGen{
    -			OptionalName: sanitizedName,
    +		GoGenerator: generator.GoGenerator{
    +			OutputFilename: outputFilename,
     		},
     		targetPackage: targetPackage,
     		boundingDirs:  boundingDirs,
     		allTypes:      allTypes,
     		registerTypes: registerTypes,
    -		imports:       generator.NewImportTracker(),
    +		imports:       generator.NewImportTrackerForPackage(targetPackage),
     		typesForInit:  make([]*types.Type, 0),
     	}
     }
    @@ -272,32 +247,24 @@ func (g *genDeepCopy) Filter(c *generator.Context, t *types.Type) bool {
     		return false
     	}
     	if !copyableType(t) {
    -		klog.V(2).Infof("Type %v is not copyable", t)
    +		klog.V(3).Infof("Type %v is not copyable", t)
     		return false
     	}
    -	klog.V(4).Infof("Type %v is copyable", t)
    +	klog.V(3).Infof("Type %v is copyable", t)
     	g.typesForInit = append(g.typesForInit, t)
     	return true
     }
     
    -func (g *genDeepCopy) copyableAndInBounds(t *types.Type) bool {
    -	if !copyableType(t) {
    -		return false
    -	}
    -	// Only packages within the restricted range can be processed.
    -	if !isRootedUnder(t.Name.Package, g.boundingDirs) {
    -		return false
    -	}
    -	return true
    -}
    -
     // deepCopyMethod returns the signature of a DeepCopy() method, nil or an error
     // if the type does not match. This allows more efficient deep copy
     // implementations to be defined by the type's author.  The correct signature
     // for a type T is:
    -//    func (t T) DeepCopy() T
    +//
    +//	func (t T) DeepCopy() T
    +//
     // or:
    -//    func (t *T) DeepCopy() *T
    +//
    +//	func (t *T) DeepCopy() *T
     func deepCopyMethod(t *types.Type) (*types.Signature, error) {
     	f, found := t.Methods["DeepCopy"]
     	if !found {
    @@ -310,8 +277,8 @@ func deepCopyMethod(t *types.Type) (*types.Signature, error) {
     		return nil, fmt.Errorf("type %v: invalid DeepCopy signature, expected exactly one result", t)
     	}
     
    -	ptrResult := f.Signature.Results[0].Kind == types.Pointer && f.Signature.Results[0].Elem.Name == t.Name
    -	nonPtrResult := f.Signature.Results[0].Name == t.Name
    +	ptrResult := f.Signature.Results[0].Type.Kind == types.Pointer && f.Signature.Results[0].Type.Elem.Name == t.Name
    +	nonPtrResult := f.Signature.Results[0].Type.Name == t.Name
     
     	if !ptrResult && !nonPtrResult {
     		return nil, fmt.Errorf("type %v: invalid DeepCopy signature, expected to return %s or *%s", t, t.Name.Name, t.Name.Name)
    @@ -344,9 +311,12 @@ func deepCopyMethodOrDie(t *types.Type) *types.Signature {
     // if the type is wrong. DeepCopyInto allows more efficient deep copy
     // implementations to be defined by the type's author.  The correct signature
     // for a type T is:
    -//    func (t T) DeepCopyInto(t *T)
    +//
    +//	func (t T) DeepCopyInto(t *T)
    +//
     // or:
    -//    func (t *T) DeepCopyInto(t *T)
    +//
    +//	func (t *T) DeepCopyInto(t *T)
     func deepCopyIntoMethod(t *types.Type) (*types.Signature, error) {
     	f, found := t.Methods["DeepCopyInto"]
     	if !found {
    @@ -359,7 +329,7 @@ func deepCopyIntoMethod(t *types.Type) (*types.Signature, error) {
     		return nil, fmt.Errorf("type %v: invalid DeepCopy signature, expected no result type", t)
     	}
     
    -	ptrParam := f.Signature.Parameters[0].Kind == types.Pointer && f.Signature.Parameters[0].Elem.Name == t.Name
    +	ptrParam := f.Signature.Parameters[0].Type.Kind == types.Pointer && f.Signature.Parameters[0].Type.Elem.Name == t.Name
     
     	if !ptrParam {
     		return nil, fmt.Errorf("type %v: invalid DeepCopy signature, expected parameter of type *%s", t, t.Name.Name)
    @@ -386,18 +356,6 @@ func deepCopyIntoMethodOrDie(t *types.Type) *types.Signature {
     	return ret
     }
     
    -func isRootedUnder(pkg string, roots []string) bool {
    -	// Add trailing / to avoid false matches, e.g. foo/bar vs foo/barn.  This
    -	// assumes that bounding dirs do not have trailing slashes.
    -	pkg = pkg + "/"
    -	for _, root := range roots {
    -		if strings.HasPrefix(pkg, root+"/") {
    -			return true
    -		}
    -	}
    -	return false
    -}
    -
     func copyableType(t *types.Type) bool {
     	// If the type opts out of copy-generation, stop.
     	ttag := extractEnabledTypeTag(t)
    @@ -479,12 +437,12 @@ func (g *genDeepCopy) needsGeneration(t *types.Type) bool {
     	}
     	if g.allTypes && tv == "false" {
     		// The whole package is being generated, but this type has opted out.
    -		klog.V(5).Infof("Not generating for type %v because type opted out", t)
    +		klog.V(2).Infof("Not generating for type %v because type opted out", t)
     		return false
     	}
     	if !g.allTypes && tv != "true" {
     		// The whole package is NOT being generated, and this type has NOT opted in.
    -		klog.V(5).Infof("Not generating for type %v because type did not opt in", t)
    +		klog.V(2).Infof("Not generating for type %v because type did not opt in", t)
     		return false
     	}
     	return true
    @@ -493,7 +451,7 @@ func (g *genDeepCopy) needsGeneration(t *types.Type) bool {
     func extractInterfacesTag(t *types.Type) []string {
     	var result []string
     	comments := append(append([]string{}, t.SecondClosestCommentLines...), t.CommentLines...)
    -	values := types.ExtractCommentTags("+", comments)[interfacesTagName]
    +	values := gengo.ExtractCommentTags("+", comments)[interfacesTagName]
     	for _, v := range values {
     		if len(v) == 0 {
     			continue
    @@ -511,7 +469,7 @@ func extractInterfacesTag(t *types.Type) []string {
     
     func extractNonPointerInterfaces(t *types.Type) (bool, error) {
     	comments := append(append([]string{}, t.SecondClosestCommentLines...), t.CommentLines...)
    -	values := types.ExtractCommentTags("+", comments)[interfacesNonPointerTagName]
    +	values := gengo.ExtractCommentTags("+", comments)[interfacesNonPointerTagName]
     	if len(values) == 0 {
     		return false, nil
     	}
    @@ -534,7 +492,8 @@ func (g *genDeepCopy) deepCopyableInterfacesInner(c *generator.Context, t *types
     	var ts []*types.Type
     	for _, intf := range intfs {
     		t := types.ParseFullyQualifiedName(intf)
    -		err := c.AddDir(t.Package)
    +		klog.V(3).Infof("Loading package for interface %v", intf)
    +		_, err := c.LoadPackages(t.Package)
     		if err != nil {
     			return nil, err
     		}
    @@ -590,7 +549,7 @@ func (g *genDeepCopy) GenerateType(c *generator.Context, t *types.Type, w io.Wri
     	if !g.needsGeneration(t) {
     		return nil
     	}
    -	klog.V(5).Infof("Generating deepcopy function for type %v", t)
    +	klog.V(2).Infof("Generating deepcopy functions for type %v", t)
     
     	sw := generator.NewSnippetWriter(w, c, "$", "$")
     	args := argsFromType(t)
    @@ -737,7 +696,7 @@ func (g *genDeepCopy) doMap(t *types.Type, sw *generator.SnippetWriter) {
     		leftPointer := ut.Elem.Kind == types.Pointer
     		rightPointer := !isReference(ut.Elem)
     		if dc != nil {
    -			rightPointer = dc.Results[0].Kind == types.Pointer
    +			rightPointer = dc.Results[0].Type.Kind == types.Pointer
     		}
     		if leftPointer == rightPointer {
     			sw.Do("(*out)[key] = val.DeepCopy()\n", nil)
    @@ -853,7 +812,7 @@ func (g *genDeepCopy) doStruct(t *types.Type, sw *generator.SnippetWriter) {
     			leftPointer := ft.Kind == types.Pointer
     			rightPointer := !isReference(ft)
     			if dc != nil {
    -				rightPointer = dc.Results[0].Kind == types.Pointer
    +				rightPointer = dc.Results[0].Type.Kind == types.Pointer
     			}
     			if leftPointer == rightPointer {
     				sw.Do("out.$.name$ = in.$.name$.DeepCopy()\n", args)
    @@ -891,7 +850,7 @@ func (g *genDeepCopy) doStruct(t *types.Type, sw *generator.SnippetWriter) {
     			sw.Do(fmt.Sprintf("out.$.name$ = in.$.name$.DeepCopy%s()\n", uft.Name.Name), args)
     			sw.Do("}\n", nil)
     		default:
    -			klog.Fatalf("Hit an unsupported type %v for %v, from %v", uft, ft, t)
    +			klog.Fatalf("Hit an unsupported type '%v' for '%v', from %v.%v", uft, ft, t, m.Name)
     		}
     	}
     }
    @@ -907,7 +866,7 @@ func (g *genDeepCopy) doPointer(t *types.Type, sw *generator.SnippetWriter) {
     	case dc != nil || dci != nil:
     		rightPointer := !isReference(ut.Elem)
     		if dc != nil {
    -			rightPointer = dc.Results[0].Kind == types.Pointer
    +			rightPointer = dc.Results[0].Type.Kind == types.Pointer
     		}
     		if rightPointer {
     			sw.Do("*out = (*in).DeepCopy()\n", nil)
    diff --git a/vendor/k8s.io/code-generator/cmd/deepcopy-gen/main.go b/vendor/k8s.io/code-generator/cmd/deepcopy-gen/main.go
    index 5622c1a1bebd..aaa3155a010e 100644
    --- a/vendor/k8s.io/code-generator/cmd/deepcopy-gen/main.go
    +++ b/vendor/k8s.io/code-generator/cmd/deepcopy-gen/main.go
    @@ -16,14 +16,24 @@ limitations under the License.
     
     // deepcopy-gen is a tool for auto-generating DeepCopy functions.
     //
    -// Given a list of input directories, it will generate functions that
    -// efficiently perform a full deep-copy of each type.  For any type that
    -// offers a `.DeepCopy()` method, it will simply call that.  Otherwise it will
    -// use standard value assignment whenever possible.  If that is not possible it
    -// will try to call its own generated copy function for the type, if the type is
    -// within the allowed root packages.  Failing that, it will fall back on
    -// `conversion.Cloner.DeepCopy(val)` to make the copy.  The resulting file will
    -// be stored in the same directory as the processed source package.
    +// Given a list of input directories, it will generate DeepCopy and
    +// DeepCopyInto methods that efficiently perform a full deep-copy of each type.
    +// If these methods already exist (are predefined by the developer), they are
    +// used instead of generating new ones.  Generated code will use standard value
    +// assignment whenever possible.  If that is not possible it will try to call
    +// its own generated copy function for the type.  Failing that, it will fall
    +// back on `conversion.Cloner.DeepCopy(val)` to make the copy.  The resulting
    +// file will be stored in the same directory as the processed source package.
    +//
    +// If interfaces are referenced in types, it is expected that corresponding
    +// DeepCopyInterfaceName methods exist, e.g. DeepCopyObject for runtime.Object.
    +// These can be predefined by the developer or generated through tags, see
    +// below.  They must be added to the interfaces themselves manually, e.g.
    +//
    +//	type Object interface {
    +//	  ...
    +//	  DeepCopyObject() Object
    +//	}
     //
     // Generation is governed by comment tags in the source.  Any package may
     // request DeepCopy generation by including a comment in the file-comments of
    @@ -32,48 +42,67 @@ limitations under the License.
     //	// +k8s:deepcopy-gen=package
     //
     // DeepCopy functions can be generated for individual types, rather than the
    -// entire package by specifying a comment on the type definion of the form:
    +// entire package by specifying a comment on the type definition of the form:
     //
     //	// +k8s:deepcopy-gen=true
     //
     // When generating for a whole package, individual types may opt out of
    -// DeepCopy generation by specifying a comment on the of the form:
    +// DeepCopy generation by specifying a comment on the type definition of the
    +// form:
     //
     //	// +k8s:deepcopy-gen=false
     //
    -// Note that registration is a whole-package option, and is not available for
    -// individual types.
    +// Additional DeepCopyInterfaceName methods can be generated by specifying a
    +// comment on the type definition of the form:
    +//
    +//	// +k8s:deepcopy-gen:interfaces=k8s.io/kubernetes/runtime.Object,k8s.io/kubernetes/runtime.List
    +//
    +// This leads to the generation of DeepCopyObject and DeepCopyList with the given
    +// interfaces as return types. We say that the tagged type implements deepcopy for the
    +// interfaces.
    +//
    +// The deepcopy funcs for interfaces using "+k8s:deepcopy-gen:interfaces" use the pointer
    +// of the type as receiver. For those special cases where the non-pointer object should
    +// implement the interface, this can be done with:
    +//
    +//	// +k8s:deepcopy-gen:nonpointer-interfaces=true
     package main
     
     import (
     	"flag"
     
     	"github.com/spf13/pflag"
    -	"k8s.io/gengo/examples/deepcopy-gen/generators"
    +	"k8s.io/code-generator/cmd/deepcopy-gen/args"
    +	"k8s.io/code-generator/cmd/deepcopy-gen/generators"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
     	"k8s.io/klog/v2"
    -
    -	generatorargs "k8s.io/code-generator/cmd/deepcopy-gen/args"
     )
     
     func main() {
     	klog.InitFlags(nil)
    -	genericArgs, customArgs := generatorargs.NewDefaults()
    +	args := args.New()
     
    -	genericArgs.AddFlags(pflag.CommandLine)
    -	customArgs.AddFlags(pflag.CommandLine)
    +	args.AddFlags(pflag.CommandLine)
     	flag.Set("logtostderr", "true")
     	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
     	pflag.Parse()
     
    -	if err := generatorargs.Validate(genericArgs); err != nil {
    +	if err := args.Validate(); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
     
    +	myTargets := func(context *generator.Context) []generator.Target {
    +		return generators.GetTargets(context, args)
    +	}
    +
     	// Run it.
    -	if err := genericArgs.Execute(
    +	if err := gengo.Execute(
     		generators.NameSystems(),
     		generators.DefaultNameSystem(),
    -		generators.Packages,
    +		myTargets,
    +		gengo.StdBuildTag,
    +		pflag.Args(),
     	); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/defaulter-gen/args/args.go b/vendor/k8s.io/code-generator/cmd/defaulter-gen/args/args.go
    index 3c5a042c7ca3..8d8dfe97f422 100644
    --- a/vendor/k8s.io/code-generator/cmd/defaulter-gen/args/args.go
    +++ b/vendor/k8s.io/code-generator/cmd/defaulter-gen/args/args.go
    @@ -20,34 +20,44 @@ import (
     	"fmt"
     
     	"github.com/spf13/pflag"
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/examples/defaulter-gen/generators"
    +
    +	"k8s.io/gengo/v2"
     )
     
    -// CustomArgs is used by the gengo framework to pass args specific to this generator.
    -type CustomArgs generators.CustomArgs
    +type Args struct {
    +	OutputFile    string
    +	ExtraPeerDirs []string // Always consider these as last-ditch possibilities for conversions.
    +	GoHeaderFile  string
     
    -// NewDefaults returns default arguments for the generator.
    -func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
    -	genericArgs := args.Default().WithoutDefaultFlagParsing()
    -	customArgs := &CustomArgs{}
    -	genericArgs.CustomArgs = (*generators.CustomArgs)(customArgs) // convert to upstream type to make type-casts work there
    -	genericArgs.OutputFileBaseName = "zz_generated.defaults"
    -	return genericArgs, customArgs
    +	// GeneratedBuildTag is the tag used to identify code generated by execution
    +	// of this type. Each generator should use a different tag, and different
    +	// groups of generators (external API that depends on Kube generations) should
    +	// keep tags distinct as well.
    +	GeneratedBuildTag string
    +}
    +
    +// New returns default arguments for the generator.
    +func New() *Args {
    +	return &Args{
    +		GeneratedBuildTag: gengo.StdBuildTag,
    +	}
     }
     
     // AddFlags add the generator flags to the flag set.
    -func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) {
    -	pflag.CommandLine.StringSliceVar(&ca.ExtraPeerDirs, "extra-peer-dirs", ca.ExtraPeerDirs,
    +func (args *Args) AddFlags(fs *pflag.FlagSet) {
    +	fs.StringVar(&args.OutputFile, "output-file", "generated.defaults.go",
    +		"the name of the file to be generated")
    +	fs.StringSliceVar(&args.ExtraPeerDirs, "extra-peer-dirs", args.ExtraPeerDirs,
     		"Comma-separated list of import paths which are considered, after tag-specified peers, for conversions.")
    +	fs.StringVar(&args.GoHeaderFile, "go-header-file", "",
    +		"the path to a file containing boilerplate header text; the string \"YEAR\" will be replaced with the current 4-digit year")
    +	fs.StringVar(&args.GeneratedBuildTag, "build-tag", args.GeneratedBuildTag, "A Go build tag to use to identify files generated by this command. Should be unique.")
     }
     
     // Validate checks the given arguments.
    -func Validate(genericArgs *args.GeneratorArgs) error {
    -	_ = genericArgs.CustomArgs.(*generators.CustomArgs)
    -
    -	if len(genericArgs.OutputFileBaseName) == 0 {
    -		return fmt.Errorf("output file base name cannot be empty")
    +func (args *Args) Validate() error {
    +	if len(args.OutputFile) == 0 {
    +		return fmt.Errorf("--output-file must be specified")
     	}
     
     	return nil
    diff --git a/vendor/k8s.io/gengo/examples/defaulter-gen/generators/defaulter.go b/vendor/k8s.io/code-generator/cmd/defaulter-gen/generators/defaulter.go
    similarity index 87%
    rename from vendor/k8s.io/gengo/examples/defaulter-gen/generators/defaulter.go
    rename to vendor/k8s.io/code-generator/cmd/defaulter-gen/generators/defaulter.go
    index c31d09f7b534..82e1cdd20703 100644
    --- a/vendor/k8s.io/gengo/examples/defaulter-gen/generators/defaulter.go
    +++ b/vendor/k8s.io/code-generator/cmd/defaulter-gen/generators/defaulter.go
    @@ -21,26 +21,20 @@ import (
     	"encoding/json"
     	"fmt"
     	"io"
    -	"path/filepath"
    +	"path"
     	"reflect"
     	"regexp"
     	"strconv"
     	"strings"
     
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    -
    +	"k8s.io/code-generator/cmd/defaulter-gen/args"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     	"k8s.io/klog/v2"
     )
     
    -// CustomArgs is used tby the go2idl framework to pass args specific to this
    -// generator.
    -type CustomArgs struct {
    -	ExtraPeerDirs []string // Always consider these as last-ditch possibilities for conversions.
    -}
    -
     var typeZeroValue = map[string]interface{}{
     	"uint":        0.,
     	"uint8":       0.,
    @@ -71,19 +65,19 @@ const inputTagName = "k8s:defaulter-gen-input"
     const defaultTagName = "default"
     
     func extractDefaultTag(comments []string) []string {
    -	return types.ExtractCommentTags("+", comments)[defaultTagName]
    +	return gengo.ExtractCommentTags("+", comments)[defaultTagName]
     }
     
     func extractTag(comments []string) []string {
    -	return types.ExtractCommentTags("+", comments)[tagName]
    +	return gengo.ExtractCommentTags("+", comments)[tagName]
     }
     
     func extractInputTag(comments []string) []string {
    -	return types.ExtractCommentTags("+", comments)[inputTagName]
    +	return gengo.ExtractCommentTags("+", comments)[inputTagName]
     }
     
     func checkTag(comments []string, require ...string) bool {
    -	values := types.ExtractCommentTags("+", comments)[tagName]
    +	values := gengo.ExtractCommentTags("+", comments)[tagName]
     	if len(require) == 0 {
     		return len(values) == 1 && values[0] == ""
     	}
    @@ -171,7 +165,7 @@ func getManualDefaultingFunctions(context *generator.Context, pkg *types.Package
     		if len(signature.Results) != 0 {
     			continue
     		}
    -		inType := signature.Parameters[0]
    +		inType := signature.Parameters[0].Type
     		if inType.Kind != types.Pointer {
     			continue
     		}
    @@ -227,14 +221,13 @@ func getManualDefaultingFunctions(context *generator.Context, pkg *types.Package
     	}
     }
     
    -func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	boilerplate, err := arguments.LoadGoBoilerplate()
    +func GetTargets(context *generator.Context, args *args.Args) []generator.Target {
    +	boilerplate, err := gengo.GoBoilerplate(args.GoHeaderFile, args.GeneratedBuildTag, gengo.StdGeneratedBy)
     	if err != nil {
     		klog.Fatalf("Failed loading boilerplate: %v", err)
     	}
     
    -	packages := generator.Packages{}
    -	header := append([]byte(fmt.Sprintf("// +build !%s\n\n", arguments.GeneratedBuildTag)), boilerplate...)
    +	targets := []generator.Target{}
     
     	// Accumulate pre-existing default functions.
     	// TODO: This is too ad-hoc.  We need a better way.
    @@ -243,36 +236,77 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     	buffer := &bytes.Buffer{}
     	sw := generator.NewSnippetWriter(buffer, context, "$", "$")
     
    -	// We are generating defaults only for packages that are explicitly
    -	// passed as InputDir.
    +	// First load other "input" packages.  We do this as a single call because
    +	// it is MUCH faster.
    +	inputPkgs := make([]string, 0, len(context.Inputs))
    +	pkgToInput := map[string]string{}
     	for _, i := range context.Inputs {
     		klog.V(5).Infof("considering pkg %q", i)
    +
     		pkg := context.Universe[i]
    -		if pkg == nil {
    -			// If the input had no Go files, for example.
    -			continue
    +
    +		// if the types are not in the same package where the defaulter functions to be generated
    +		inputTags := extractInputTag(pkg.Comments)
    +		if len(inputTags) > 1 {
    +			panic(fmt.Sprintf("there may only be one input tag, got %#v", inputTags))
     		}
    +		if len(inputTags) == 1 {
    +			inputPath := inputTags[0]
    +			if strings.HasPrefix(inputPath, "./") || strings.HasPrefix(inputPath, "../") {
    +				// this is a relative dir, which will not work under gomodules.
    +				// join with the local package path, but warn
    +				klog.Warningf("relative path %s=%s will not work under gomodule mode; use full package path (as used by 'import') instead", inputTagName, inputPath)
    +				inputPath = path.Join(pkg.Path, inputTags[0])
    +			}
    +
    +			klog.V(5).Infof("  input pkg %v", inputPath)
    +			inputPkgs = append(inputPkgs, inputPath)
    +			pkgToInput[i] = inputPath
    +		} else {
    +			pkgToInput[i] = i
    +		}
    +	}
    +
    +	// Make sure explicit peer-packages are added.
    +	var peerPkgs []string
    +	for _, pkg := range args.ExtraPeerDirs {
    +		// In case someone specifies a peer as a path into vendor, convert
    +		// it to its "real" package path.
    +		if i := strings.Index(pkg, "/vendor/"); i != -1 {
    +			pkg = pkg[i+len("/vendor/"):]
    +		}
    +		peerPkgs = append(peerPkgs, pkg)
    +	}
    +	if expanded, err := context.FindPackages(peerPkgs...); err != nil {
    +		klog.Fatalf("cannot find peer packages: %v", err)
    +	} else {
    +		peerPkgs = expanded // now in fully canonical form
    +	}
    +	inputPkgs = append(inputPkgs, peerPkgs...)
    +
    +	if len(inputPkgs) > 0 {
    +		if _, err := context.LoadPackages(inputPkgs...); err != nil {
    +			klog.Fatalf("cannot load packages: %v", err)
    +		}
    +	}
    +	// update context.Order to the latest context.Universe
    +	orderer := namer.Orderer{Namer: namer.NewPublicNamer(1)}
    +	context.Order = orderer.OrderUniverse(context.Universe)
    +
    +	for _, i := range context.Inputs {
    +		pkg := context.Universe[i]
    +
     		// typesPkg is where the types that needs defaulter are defined.
     		// Sometimes it is different from pkg. For example, kubernetes core/v1
    -		// types are defined in vendor/k8s.io/api/core/v1, while pkg is at
    -		// pkg/api/v1.
    +		// types are defined in k8s.io/api/core/v1, while the pkg which holds
    +		// defaulter code is at k/k/pkg/api/v1.
     		typesPkg := pkg
     
     		// Add defaulting functions.
     		getManualDefaultingFunctions(context, pkg, existingDefaulters)
     
    -		var peerPkgs []string
    -		if customArgs, ok := arguments.CustomArgs.(*CustomArgs); ok {
    -			for _, pkg := range customArgs.ExtraPeerDirs {
    -				if i := strings.Index(pkg, "/vendor/"); i != -1 {
    -					pkg = pkg[i+len("/vendor/"):]
    -				}
    -				peerPkgs = append(peerPkgs, pkg)
    -			}
    -		}
    -		// Make sure our peer-packages are added and fully parsed.
    +		// Also look for defaulting functions in peer-packages.
     		for _, pp := range peerPkgs {
    -			context.AddDir(pp)
     			getManualDefaultingFunctions(context, context.Universe[pp], existingDefaulters)
     		}
     
    @@ -312,30 +346,9 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     			return false
     		}
     
    -		// if the types are not in the same package where the defaulter functions to be generated
    -		inputTags := extractInputTag(pkg.Comments)
    -		if len(inputTags) > 1 {
    -			panic(fmt.Sprintf("there could only be one input tag, got %#v", inputTags))
    -		}
    -		if len(inputTags) == 1 {
    -			var err error
    -
    -			inputPath := inputTags[0]
    -			if strings.HasPrefix(inputPath, "./") || strings.HasPrefix(inputPath, "../") {
    -				// this is a relative dir, which will not work under gomodules.
    -				// join with the local package path, but warn
    -				klog.Warningf("relative path %s=%s will not work under gomodule mode; use full package path (as used by 'import') instead", inputTagName, inputPath)
    -				inputPath = filepath.Join(pkg.Path, inputTags[0])
    -			}
    -
    -			typesPkg, err = context.AddDirectory(inputPath)
    -			if err != nil {
    -				klog.Fatalf("cannot import package %s", inputPath)
    -			}
    -			// update context.Order to the latest context.Universe
    -			orderer := namer.Orderer{Namer: namer.NewPublicNamer(1)}
    -			context.Order = orderer.OrderUniverse(context.Universe)
    -		}
    +		// Find the right input pkg, which might not be this one.
    +		inputPath := pkgToInput[i]
    +		typesPkg = context.Universe[inputPath]
     
     		newDefaulters := defaulterFuncMap{}
     		for _, t := range typesPkg.Types {
    @@ -394,37 +407,25 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     			klog.V(5).Infof("no defaulters in package %s", pkg.Name)
     		}
     
    -		path := pkg.Path
    -		// if the source path is within a /vendor/ directory (for example,
    -		// k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1), allow
    -		// generation to output to the proper relative path (under vendor).
    -		// Otherwise, the generator will create the file in the wrong location
    -		// in the output directory.
    -		// TODO: build a more fundamental concept in gengo for dealing with modifications
    -		// to vendored packages.
    -		if strings.HasPrefix(pkg.SourcePath, arguments.OutputBase) {
    -			expandedPath := strings.TrimPrefix(pkg.SourcePath, arguments.OutputBase)
    -			if strings.Contains(expandedPath, "/vendor/") {
    -				path = expandedPath
    -			}
    -		}
    +		targets = append(targets,
    +			&generator.SimpleTarget{
    +				PkgName:       path.Base(pkg.Path),
    +				PkgPath:       pkg.Path,
    +				PkgDir:        pkg.Dir, // output pkg is the same as the input
    +				HeaderComment: boilerplate,
     
    -		packages = append(packages,
    -			&generator.DefaultPackage{
    -				PackageName: filepath.Base(pkg.Path),
    -				PackagePath: path,
    -				HeaderText:  header,
    -				GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    -					return []generator.Generator{
    -						NewGenDefaulter(arguments.OutputFileBaseName, typesPkg.Path, pkg.Path, existingDefaulters, newDefaulters, peerPkgs),
    -					}
    -				},
     				FilterFunc: func(c *generator.Context, t *types.Type) bool {
     					return t.Name.Package == typesPkg.Path
     				},
    +
    +				GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
    +					return []generator.Generator{
    +						NewGenDefaulter(args.OutputFile, typesPkg.Path, pkg.Path, existingDefaulters, newDefaulters, peerPkgs),
    +					}
    +				},
     			})
     	}
    -	return packages
    +	return targets
     }
     
     // callTreeForType contains fields necessary to build a tree for types.
    @@ -516,13 +517,13 @@ func getNestedDefault(t *types.Type) string {
     var refRE = regexp.MustCompile(`^ref\((?P[^"]+)\)$`)
     var refREIdentIndex = refRE.SubexpIndex("reference")
     
    -// ParseSymbolReference looks for strings that match one of the following:
    +// parseSymbolReference looks for strings that match one of the following:
     //   - ref(Ident)
     //   - ref(pkgpath.Ident)
     //     If the input string matches either of these, it will return the (optional)
     //     pkgpath, the Ident, and true.  Otherwise it will return empty strings and
     //     false.
    -func ParseSymbolReference(s, sourcePackage string) (types.Name, bool) {
    +func parseSymbolReference(s, sourcePackage string) (types.Name, bool) {
     	matches := refRE.FindStringSubmatch(s)
     	if len(matches) < refREIdentIndex || matches[refREIdentIndex] == "" {
     		return types.Name{}, false
    @@ -555,7 +556,7 @@ func populateDefaultValue(node *callNode, t *types.Type, tags string, commentLin
     	}
     	var symbolReference types.Name
     	var defaultValue interface{}
    -	if id, ok := ParseSymbolReference(defaultString, commentPackage); ok {
    +	if id, ok := parseSymbolReference(defaultString, commentPackage); ok {
     		symbolReference = id
     		defaultString = ""
     	} else if err := json.Unmarshal([]byte(defaultString), &defaultValue); err != nil {
    @@ -602,7 +603,7 @@ func (c *callTreeForType) build(t *types.Type, root bool) *callNode {
     		parent.elem = true
     	}
     
    -	defaults, _ := c.existingDefaulters[t]
    +	defaults := c.existingDefaulters[t]
     	newDefaults, generated := c.newDefaulters[t]
     	switch {
     	case !root && generated && newDefaults.object != nil:
    @@ -695,7 +696,7 @@ func (c *callTreeForType) build(t *types.Type, root bool) *callNode {
     		}
     	}
     	if len(parent.children) == 0 && len(parent.call) == 0 {
    -		//klog.V(6).Infof("decided type %s needs no generation", t.Name)
    +		// klog.V(6).Infof("decided type %s needs no generation", t.Name)
     		return nil
     	}
     	return parent
    @@ -708,7 +709,7 @@ const (
     
     // genDefaulter produces a file with a autogenerated conversions.
     type genDefaulter struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	typesPackage       string
     	outputPackage      string
     	peerPackages       []string
    @@ -718,10 +719,10 @@ type genDefaulter struct {
     	typesForInit       []*types.Type
     }
     
    -func NewGenDefaulter(sanitizedName, typesPackage, outputPackage string, existingDefaulters, newDefaulters defaulterFuncMap, peerPkgs []string) generator.Generator {
    +func NewGenDefaulter(outputFilename, typesPackage, outputPackage string, existingDefaulters, newDefaulters defaulterFuncMap, peerPkgs []string) generator.Generator {
     	return &genDefaulter{
    -		DefaultGen: generator.DefaultGen{
    -			OptionalName: sanitizedName,
    +		GoGenerator: generator.GoGenerator{
    +			OutputFilename: outputFilename,
     		},
     		typesPackage:       typesPackage,
     		outputPackage:      outputPackage,
    @@ -822,7 +823,7 @@ func (g *genDefaulter) GenerateType(c *generator.Context, t *types.Type, w io.Wr
     	})
     
     	sw := generator.NewSnippetWriter(w, c, "$", "$")
    -	g.generateDefaulter(t, callTree, sw)
    +	g.generateDefaulter(c, t, callTree, sw)
     	return sw.Error()
     }
     
    @@ -832,9 +833,9 @@ func defaultingArgsFromType(inType *types.Type) generator.Args {
     	}
     }
     
    -func (g *genDefaulter) generateDefaulter(inType *types.Type, callTree *callNode, sw *generator.SnippetWriter) {
    +func (g *genDefaulter) generateDefaulter(c *generator.Context, inType *types.Type, callTree *callNode, sw *generator.SnippetWriter) {
     	sw.Do("func $.inType|objectdefaultfn$(in *$.inType|raw$) {\n", defaultingArgsFromType(inType))
    -	callTree.WriteMethod("in", 0, nil, sw)
    +	callTree.WriteMethod(c, "in", 0, nil, sw)
     	sw.Do("}\n\n", nil)
     }
     
    @@ -985,7 +986,7 @@ func (n *callNode) writeCalls(varName string, isVarPointer bool, sw *generator.S
     func getTypeZeroValue(t string) (interface{}, error) {
     	defaultZero, ok := typeZeroValue[t]
     	if !ok {
    -		return nil, fmt.Errorf("Cannot find zero value for type %v in typeZeroValue", t)
    +		return nil, fmt.Errorf("cannot find zero value for type %v in typeZeroValue", t)
     	}
     
     	// To generate the code for empty string, they must be quoted
    @@ -995,15 +996,19 @@ func getTypeZeroValue(t string) (interface{}, error) {
     	return defaultZero, nil
     }
     
    -func (n *callNode) writeDefaulter(varName string, index string, isVarPointer bool, sw *generator.SnippetWriter) {
    +func (n *callNode) writeDefaulter(c *generator.Context, varName string, index string, isVarPointer bool, sw *generator.SnippetWriter) {
     	if n.defaultValue.IsEmpty() {
     		return
     	}
    +
    +	jsonUnmarshalType := c.Universe.Type(types.Name{Package: "encoding/json", Name: "Unmarshal"})
    +
     	args := generator.Args{
    -		"defaultValue": n.defaultValue.Resolved(),
    -		"varName":      varName,
    -		"index":        index,
    -		"varTopType":   n.defaultTopLevelType,
    +		"defaultValue":  n.defaultValue.Resolved(),
    +		"varName":       varName,
    +		"index":         index,
    +		"varTopType":    n.defaultTopLevelType,
    +		"jsonUnmarshal": jsonUnmarshalType,
     	}
     
     	variablePlaceholder := ""
    @@ -1100,13 +1105,13 @@ func (n *callNode) writeDefaulter(varName string, index string, isVarPointer boo
     		// This applies to maps with non-primitive values (eg: map[string]SubStruct)
     		if n.key {
     			sw.Do("$.mapDefaultVar$ := $.varName$[$.index$]\n", args)
    -			sw.Do("if err := json.Unmarshal([]byte(`$.defaultValue$`), &$.mapDefaultVar$); err != nil {\n", args)
    +			sw.Do("if err := $.jsonUnmarshal|raw$([]byte(`$.defaultValue$`), &$.mapDefaultVar$); err != nil {\n", args)
     		} else {
     			variablePointer := variablePlaceholder
     			if !isVarPointer {
     				variablePointer = "&" + variablePointer
     			}
    -			sw.Do(fmt.Sprintf("if err := json.Unmarshal([]byte(`$.defaultValue$`), %s); err != nil {\n", variablePointer), args)
    +			sw.Do(fmt.Sprintf("if err := $.jsonUnmarshal|raw$([]byte(`$.defaultValue$`), %s); err != nil {\n", variablePointer), args)
     		}
     		sw.Do("panic(err)\n", nil)
     		sw.Do("}\n", nil)
    @@ -1120,7 +1125,7 @@ func (n *callNode) writeDefaulter(varName string, index string, isVarPointer boo
     // WriteMethod performs an in-order traversal of the calltree, generating loops and if blocks as necessary
     // to correctly turn the call tree into a method body that invokes all calls on all child nodes of the call tree.
     // Depth is used to generate local variables at the proper depth.
    -func (n *callNode) WriteMethod(varName string, depth int, ancestors []*callNode, sw *generator.SnippetWriter) {
    +func (n *callNode) WriteMethod(c *generator.Context, varName string, depth int, ancestors []*callNode, sw *generator.SnippetWriter) {
     	// if len(n.call) > 0 {
     	// 	sw.Do(fmt.Sprintf("// %s\n", callPath(append(ancestors, n)).String()), nil)
     	// }
    @@ -1152,10 +1157,10 @@ func (n *callNode) WriteMethod(varName string, depth int, ancestors []*callNode,
     			}
     		}
     
    -		n.writeDefaulter(varName, index, isPointer, sw)
    +		n.writeDefaulter(c, varName, index, isPointer, sw)
     		n.writeCalls(local, true, sw)
     		for i := range n.children {
    -			n.children[i].WriteMethod(local, depth+1, append(ancestors, n), sw)
    +			n.children[i].WriteMethod(c, local, depth+1, append(ancestors, n), sw)
     		}
     		sw.Do("}\n", nil)
     	case n.key:
    @@ -1164,14 +1169,14 @@ func (n *callNode) WriteMethod(varName string, depth int, ancestors []*callNode,
     			index = index + "_" + ancestors[len(ancestors)-1].field
     			vars["index"] = index
     			sw.Do("for $.index$ := range $.var$ {\n", vars)
    -			n.writeDefaulter(varName, index, isPointer, sw)
    +			n.writeDefaulter(c, varName, index, isPointer, sw)
     			sw.Do("}\n", nil)
     		}
     	default:
    -		n.writeDefaulter(varName, index, isPointer, sw)
    +		n.writeDefaulter(c, varName, index, isPointer, sw)
     		n.writeCalls(varName, isPointer, sw)
     		for i := range n.children {
    -			n.children[i].WriteMethod(varName, depth, append(ancestors, n), sw)
    +			n.children[i].WriteMethod(c, varName, depth, append(ancestors, n), sw)
     		}
     	}
     
    @@ -1200,13 +1205,13 @@ func (path callPath) String() string {
     			}
     		case p.index:
     			if len(parts) > 0 {
    -				parts[last] = parts[last] + "[i]"
    +				parts[last] += "[i]"
     			} else {
     				parts = append(parts, "[i]")
     			}
     		case p.key:
     			if len(parts) > 0 {
    -				parts[last] = parts[last] + "[key]"
    +				parts[last] += "[key]"
     			} else {
     				parts = append(parts, "[key]")
     			}
    diff --git a/vendor/k8s.io/code-generator/cmd/defaulter-gen/main.go b/vendor/k8s.io/code-generator/cmd/defaulter-gen/main.go
    index 23d5d3271bb0..0250c1328fd9 100644
    --- a/vendor/k8s.io/code-generator/cmd/defaulter-gen/main.go
    +++ b/vendor/k8s.io/code-generator/cmd/defaulter-gen/main.go
    @@ -45,31 +45,37 @@ import (
     	"flag"
     
     	"github.com/spf13/pflag"
    -	"k8s.io/gengo/examples/defaulter-gen/generators"
    +	"k8s.io/code-generator/cmd/defaulter-gen/args"
    +	"k8s.io/code-generator/cmd/defaulter-gen/generators"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
     	"k8s.io/klog/v2"
    -
    -	generatorargs "k8s.io/code-generator/cmd/defaulter-gen/args"
     )
     
     func main() {
     	klog.InitFlags(nil)
    -	genericArgs, customArgs := generatorargs.NewDefaults()
    +	args := args.New()
     
    -	genericArgs.AddFlags(pflag.CommandLine)
    -	customArgs.AddFlags(pflag.CommandLine)
    +	args.AddFlags(pflag.CommandLine)
     	flag.Set("logtostderr", "true")
     	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
     	pflag.Parse()
     
    -	if err := generatorargs.Validate(genericArgs); err != nil {
    +	if err := args.Validate(); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
     
    +	myTargets := func(context *generator.Context) []generator.Target {
    +		return generators.GetTargets(context, args)
    +	}
    +
     	// Run it.
    -	if err := genericArgs.Execute(
    +	if err := gengo.Execute(
     		generators.NameSystems(),
     		generators.DefaultNameSystem(),
    -		generators.Packages,
    +		myTargets,
    +		args.GeneratedBuildTag,
    +		pflag.Args(),
     	); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/cmd.go b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/cmd.go
    index ff267e2610ea..ca21c76c3442 100644
    --- a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/cmd.go
    +++ b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/cmd.go
    @@ -22,7 +22,6 @@ import (
     	"bytes"
     	"fmt"
     	"log"
    -	"os"
     	"os/exec"
     	"path/filepath"
     	"sort"
    @@ -30,19 +29,18 @@ import (
     
     	flag "github.com/spf13/pflag"
     
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/parser"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/parser"
    +	"k8s.io/gengo/v2/types"
     )
     
     type Generator struct {
    -	Common               args.GeneratorArgs
    +	GoHeaderFile         string
     	APIMachineryPackages string
     	Packages             string
    -	OutputBase           string
    -	VendorOutputBase     string
    +	OutputDir            string
     	ProtoImport          []string
     	Conditional          string
     	Clean                bool
    @@ -50,24 +48,12 @@ type Generator struct {
     	KeepGogoproto        bool
     	SkipGeneratedRewrite bool
     	DropEmbeddedFields   string
    -	TrimPathPrefix       string
     }
     
     func New() *Generator {
    -	sourceTree := args.DefaultSourceTree()
    -	common := args.GeneratorArgs{
    -		OutputBase: sourceTree,
    -	}
    -	defaultProtoImport := filepath.Join(sourceTree, "k8s.io", "kubernetes", "vendor", "github.com", "gogo", "protobuf", "protobuf")
    -	cwd, err := os.Getwd()
    -	if err != nil {
    -		log.Fatalf("Cannot get current directory.")
    -	}
    +	defaultSourceTree := "."
     	return &Generator{
    -		Common:           common,
    -		OutputBase:       sourceTree,
    -		VendorOutputBase: filepath.Join(cwd, "vendor"),
    -		ProtoImport:      []string{defaultProtoImport},
    +		OutputDir: defaultSourceTree,
     		APIMachineryPackages: strings.Join([]string{
     			`+k8s.io/apimachinery/pkg/util/intstr`,
     			`+k8s.io/apimachinery/pkg/api/resource`,
    @@ -83,74 +69,56 @@ func New() *Generator {
     }
     
     func (g *Generator) BindFlags(flag *flag.FlagSet) {
    -	flag.StringVarP(&g.Common.GoHeaderFilePath, "go-header-file", "h", g.Common.GoHeaderFilePath, "File containing boilerplate header text. The string YEAR will be replaced with the current 4-digit year.")
    -	flag.BoolVar(&g.Common.VerifyOnly, "verify-only", g.Common.VerifyOnly, "If true, only verify existing output, do not write anything.")
    +	flag.StringVarP(&g.GoHeaderFile, "go-header-file", "h", "", "File containing boilerplate header text. The string YEAR will be replaced with the current 4-digit year.")
     	flag.StringVarP(&g.Packages, "packages", "p", g.Packages, "comma-separated list of directories to get input types from. Directories prefixed with '-' are not generated, directories prefixed with '+' only create types with explicit IDL instructions.")
     	flag.StringVar(&g.APIMachineryPackages, "apimachinery-packages", g.APIMachineryPackages, "comma-separated list of directories to get apimachinery input types from which are needed by any API. Directories prefixed with '-' are not generated, directories prefixed with '+' only create types with explicit IDL instructions.")
    -	flag.StringVarP(&g.OutputBase, "output-base", "o", g.OutputBase, "Output base; defaults to $GOPATH/src/")
    -	flag.StringVar(&g.VendorOutputBase, "vendor-output-base", g.VendorOutputBase, "The vendor/ directory to look for packages in; defaults to $PWD/vendor/.")
    -	flag.StringSliceVar(&g.ProtoImport, "proto-import", g.ProtoImport, "The search path for the core protobuf .protos, required; defaults $GOPATH/src/k8s.io/kubernetes/vendor/github.com/gogo/protobuf/protobuf.")
    +	flag.StringVar(&g.OutputDir, "output-dir", g.OutputDir, "The base directory under which to generate results.")
    +	flag.StringSliceVar(&g.ProtoImport, "proto-import", g.ProtoImport, "A search path for imported protobufs (may be repeated).")
     	flag.StringVar(&g.Conditional, "conditional", g.Conditional, "An optional Golang build tag condition to add to the generated Go code")
     	flag.BoolVar(&g.Clean, "clean", g.Clean, "If true, remove all generated files for the specified Packages.")
     	flag.BoolVar(&g.OnlyIDL, "only-idl", g.OnlyIDL, "If true, only generate the IDL for each package.")
     	flag.BoolVar(&g.KeepGogoproto, "keep-gogoproto", g.KeepGogoproto, "If true, the generated IDL will contain gogoprotobuf extensions which are normally removed")
     	flag.BoolVar(&g.SkipGeneratedRewrite, "skip-generated-rewrite", g.SkipGeneratedRewrite, "If true, skip fixing up the generated.pb.go file (debugging only).")
     	flag.StringVar(&g.DropEmbeddedFields, "drop-embedded-fields", g.DropEmbeddedFields, "Comma-delimited list of embedded Go types to omit from generated protobufs")
    -	flag.StringVar(&g.TrimPathPrefix, "trim-path-prefix", g.TrimPathPrefix, "If set, trim the specified prefix from --output-package when generating files.")
     }
     
    +// This roughly models gengo/v2.Execute.
     func Run(g *Generator) {
    -	if g.Common.VerifyOnly {
    -		g.OnlyIDL = true
    -		g.Clean = false
    -	}
    -
    -	b := parser.New()
    -	b.AddBuildTags("proto")
    -
    -	omitTypes := map[types.Name]struct{}{}
    -	for _, t := range strings.Split(g.DropEmbeddedFields, ",") {
    -		name := types.Name{}
    -		if i := strings.LastIndex(t, "."); i != -1 {
    -			name.Package, name.Name = t[:i], t[i+1:]
    -		} else {
    -			name.Name = t
    -		}
    -		if len(name.Name) == 0 {
    -			log.Fatalf("--drop-embedded-types requires names in the form of [GOPACKAGE.]TYPENAME: %v", t)
    -		}
    -		omitTypes[name] = struct{}{}
    -	}
    -
    -	boilerplate, err := g.Common.LoadGoBoilerplate()
    -	if err != nil {
    -		log.Fatalf("Failed loading boilerplate (consider using the go-header-file flag): %v", err)
    -	}
    +	// Roughly models gengo/v2.newBuilder.
     
    -	protobufNames := NewProtobufNamer()
    -	outputPackages := generator.Packages{}
    -	nonOutputPackages := map[string]struct{}{}
    +	p := parser.NewWithOptions(parser.Options{BuildTags: []string{"proto"}})
     
    -	var packages []string
    +	var allInputs []string
     	if len(g.APIMachineryPackages) != 0 {
    -		packages = append(packages, strings.Split(g.APIMachineryPackages, ",")...)
    +		allInputs = append(allInputs, strings.Split(g.APIMachineryPackages, ",")...)
     	}
     	if len(g.Packages) != 0 {
    -		packages = append(packages, strings.Split(g.Packages, ",")...)
    +		allInputs = append(allInputs, strings.Split(g.Packages, ",")...)
     	}
    -	if len(packages) == 0 {
    +	if len(allInputs) == 0 {
     		log.Fatalf("Both apimachinery-packages and packages are empty. At least one package must be specified.")
     	}
     
    -	for _, d := range packages {
    -		generateAllTypes, outputPackage := true, true
    +	// Build up a list of packages to load from all the inputs.  Track the
    +	// special modifiers for each.  NOTE: This does not support pkg/... syntax.
    +	type modifier struct {
    +		allTypes bool
    +		output   bool
    +		name     string
    +	}
    +	inputModifiers := map[string]modifier{}
    +	packages := make([]string, 0, len(allInputs))
    +
    +	for _, d := range allInputs {
    +		modifier := modifier{allTypes: true, output: true}
    +
     		switch {
     		case strings.HasPrefix(d, "+"):
     			d = d[1:]
    -			generateAllTypes = false
    +			modifier.allTypes = false
     		case strings.HasPrefix(d, "-"):
     			d = d[1:]
    -			outputPackage = false
    +			modifier.output = false
     		}
     		name := protoSafePackage(d)
     		parts := strings.SplitN(d, "=", 2)
    @@ -158,41 +126,21 @@ func Run(g *Generator) {
     			d = parts[0]
     			name = parts[1]
     		}
    -		p := newProtobufPackage(d, name, generateAllTypes, omitTypes)
    -		header := append([]byte{}, boilerplate...)
    -		header = append(header, p.HeaderText...)
    -		p.HeaderText = header
    -		protobufNames.Add(p)
    -		if outputPackage {
    -			outputPackages = append(outputPackages, p)
    -		} else {
    -			nonOutputPackages[name] = struct{}{}
    -		}
    -	}
    +		modifier.name = name
     
    -	if !g.Common.VerifyOnly {
    -		for _, p := range outputPackages {
    -			if err := p.(*protobufPackage).Clean(g.OutputBase); err != nil {
    -				log.Fatalf("Unable to clean package %s: %v", p.Name(), err)
    -			}
    -		}
    -	}
    -
    -	if g.Clean {
    -		return
    +		packages = append(packages, d)
    +		inputModifiers[d] = modifier
     	}
     
    -	for _, p := range protobufNames.List() {
    -		if err := b.AddDir(p.Path()); err != nil {
    -			log.Fatalf("Unable to add directory %q: %v", p.Path(), err)
    -		}
    +	// Load all the packages at once.
    +	if err := p.LoadPackages(packages...); err != nil {
    +		log.Fatalf("Unable to load packages: %v", err)
     	}
     
     	c, err := generator.NewContext(
    -		b,
    +		p,
     		namer.NameSystems{
     			"public": namer.NewPublicNamer(3),
    -			"proto":  protobufNames,
     		},
     		"public",
     	)
    @@ -200,9 +148,62 @@ func Run(g *Generator) {
     		log.Fatalf("Failed making a context: %v", err)
     	}
     
    -	c.Verify = g.Common.VerifyOnly
     	c.FileTypes["protoidl"] = NewProtoFile()
    -	c.TrimPathPrefix = g.TrimPathPrefix
    +
    +	// Roughly models gengo/v2.Execute calling the
    +	// tool-provided Targets() callback.
    +
    +	boilerplate, err := gengo.GoBoilerplate(g.GoHeaderFile, "", "")
    +	if err != nil {
    +		log.Fatalf("Failed loading boilerplate (consider using the go-header-file flag): %v", err)
    +	}
    +
    +	omitTypes := map[types.Name]struct{}{}
    +	for _, t := range strings.Split(g.DropEmbeddedFields, ",") {
    +		name := types.Name{}
    +		if i := strings.LastIndex(t, "."); i != -1 {
    +			name.Package, name.Name = t[:i], t[i+1:]
    +		} else {
    +			name.Name = t
    +		}
    +		if len(name.Name) == 0 {
    +			log.Fatalf("--drop-embedded-types requires names in the form of [GOPACKAGE.]TYPENAME: %v", t)
    +		}
    +		omitTypes[name] = struct{}{}
    +	}
    +
    +	protobufNames := NewProtobufNamer()
    +	outputPackages := []generator.Target{}
    +	nonOutputPackages := map[string]struct{}{}
    +
    +	for _, input := range c.Inputs {
    +		mod, found := inputModifiers[input]
    +		if !found {
    +			log.Fatalf("BUG: can't find input modifiers for %q", input)
    +		}
    +		pkg := c.Universe[input]
    +		protopkg := newProtobufPackage(pkg.Path, pkg.Dir, mod.name, mod.allTypes, omitTypes)
    +		header := append([]byte{}, boilerplate...)
    +		header = append(header, protopkg.HeaderComment...)
    +		protopkg.HeaderComment = header
    +		protobufNames.Add(protopkg)
    +		if mod.output {
    +			outputPackages = append(outputPackages, protopkg)
    +		} else {
    +			nonOutputPackages[mod.name] = struct{}{}
    +		}
    +	}
    +	c.Namers["proto"] = protobufNames
    +
    +	for _, p := range outputPackages {
    +		if err := p.(*protobufPackage).Clean(); err != nil {
    +			log.Fatalf("Unable to clean package %s: %v", p.Name(), err)
    +		}
    +	}
    +
    +	if g.Clean {
    +		return
    +	}
     
     	// order package by imports, importees first
     	deps := deps(c, protobufNames.packages)
    @@ -216,28 +217,20 @@ func Run(g *Generator) {
     	}
     	sort.Sort(positionOrder{topologicalPos, protobufNames.packages})
     
    -	var vendoredOutputPackages, localOutputPackages generator.Packages
    +	var localOutputPackages []generator.Target
     	for _, p := range protobufNames.packages {
     		if _, ok := nonOutputPackages[p.Name()]; ok {
     			// if we're not outputting the package, don't include it in either package list
     			continue
     		}
    -		p.Vendored = strings.Contains(c.Universe[p.PackagePath].SourcePath, "/vendor/")
    -		if p.Vendored {
    -			vendoredOutputPackages = append(vendoredOutputPackages, p)
    -		} else {
    -			localOutputPackages = append(localOutputPackages, p)
    -		}
    +		localOutputPackages = append(localOutputPackages, p)
     	}
     
     	if err := protobufNames.AssignTypesToPackages(c); err != nil {
     		log.Fatalf("Failed to identify Common types: %v", err)
     	}
     
    -	if err := c.ExecutePackages(g.VendorOutputBase, vendoredOutputPackages); err != nil {
    -		log.Fatalf("Failed executing vendor generator: %v", err)
    -	}
    -	if err := c.ExecutePackages(g.OutputBase, localOutputPackages); err != nil {
    +	if err := c.ExecuteTargets(localOutputPackages); err != nil {
     		log.Fatalf("Failed executing local generator: %v", err)
     	}
     
    @@ -249,13 +242,24 @@ func Run(g *Generator) {
     		log.Fatalf("Unable to find 'protoc': %v", err)
     	}
     
    -	searchArgs := []string{"-I", ".", "-I", g.OutputBase}
    +	searchArgs := []string{"-I", ".", "-I", g.OutputDir}
     	if len(g.ProtoImport) != 0 {
     		for _, s := range g.ProtoImport {
     			searchArgs = append(searchArgs, "-I", s)
     		}
     	}
    -	args := append(searchArgs, fmt.Sprintf("--gogo_out=%s", g.OutputBase))
    +	// Despite docs saying that `--gogo_out=paths=source_relative:.` will
    +	// output the .pb.go file to the same directory as the .proto file, it
    +	// doesn't. Given example.com/foo/bar.proto (found in one of the -I paths
    +	// above), the output becomes
    +	// $output_base/example.com/foo/example.com/foo/bar.pb.go - basically
    +	// useless.  Users should set the output-dir to a single dir under which
    +	// all the packages in question live (e.g. staging/src in kubernetes).
    +	// Alternately, we could generate into a temp path and then move the
    +	// resulting file back to the input dir, but that seems brittle in other
    +	// ways.
    +	args := searchArgs
    +	args = append(args, fmt.Sprintf("--gogo_out=%s", g.OutputDir))
     
     	buf := &bytes.Buffer{}
     	if len(g.Conditional) > 0 {
    @@ -266,28 +270,8 @@ func Run(g *Generator) {
     	for _, outputPackage := range outputPackages {
     		p := outputPackage.(*protobufPackage)
     
    -		path := filepath.Join(g.OutputBase, p.ImportPath())
    -		outputPath := filepath.Join(g.OutputBase, p.OutputPath())
    -		if p.Vendored {
    -			path = filepath.Join(g.VendorOutputBase, p.ImportPath())
    -			outputPath = filepath.Join(g.VendorOutputBase, p.OutputPath())
    -		}
    -
    -		// When working outside of GOPATH, we typically won't want to generate the
    -		// full path for a package. For example, if our current project's root/base
    -		// package is github.com/foo/bar, outDir=., p.Path()=github.com/foo/bar/generated,
    -		// then we really want to be writing files to ./generated, not ./github.com/foo/bar/generated.
    -		// The following will trim a path prefix (github.com/foo/bar) from p.Path() to arrive at
    -		// a relative path that works with projects not in GOPATH.
    -		if g.TrimPathPrefix != "" {
    -			separator := string(filepath.Separator)
    -			if !strings.HasSuffix(g.TrimPathPrefix, separator) {
    -				g.TrimPathPrefix += separator
    -			}
    -
    -			path = strings.TrimPrefix(path, g.TrimPathPrefix)
    -			outputPath = strings.TrimPrefix(outputPath, g.TrimPathPrefix)
    -		}
    +		path := filepath.Join(g.OutputDir, p.ImportPath())
    +		outputPath := filepath.Join(g.OutputDir, p.OutputPath())
     
     		// generate the gogoprotobuf protoc
     		cmd := exec.Command("protoc", append(args, path)...)
    @@ -295,7 +279,7 @@ func Run(g *Generator) {
     		if err != nil {
     			log.Println(strings.Join(cmd.Args, " "))
     			log.Println(string(out))
    -			log.Fatalf("Unable to generate protoc on %s: %v", p.PackageName, err)
    +			log.Fatalf("Unable to run protoc on %s: %v", p.Name(), err)
     		}
     
     		if g.SkipGeneratedRewrite {
    @@ -316,7 +300,7 @@ func Run(g *Generator) {
     		}
     		if err != nil {
     			log.Println(strings.Join(cmd.Args, " "))
    -			log.Fatalf("Unable to rewrite imports for %s: %v", p.PackageName, err)
    +			log.Fatalf("Unable to rewrite imports for %s: %v", p.Name(), err)
     		}
     
     		// format and simplify the generated file
    @@ -327,7 +311,7 @@ func Run(g *Generator) {
     		}
     		if err != nil {
     			log.Println(strings.Join(cmd.Args, " "))
    -			log.Fatalf("Unable to apply gofmt for %s: %v", p.PackageName, err)
    +			log.Fatalf("Unable to apply gofmt for %s: %v", p.Name(), err)
     		}
     	}
     
    @@ -341,10 +325,7 @@ func Run(g *Generator) {
     			p := outputPackage.(*protobufPackage)
     			p.OmitGogo = true
     		}
    -		if err := c.ExecutePackages(g.VendorOutputBase, vendoredOutputPackages); err != nil {
    -			log.Fatalf("Failed executing vendor generator: %v", err)
    -		}
    -		if err := c.ExecutePackages(g.OutputBase, localOutputPackages); err != nil {
    +		if err := c.ExecuteTargets(localOutputPackages); err != nil {
     			log.Fatalf("Failed executing local generator: %v", err)
     		}
     	}
    @@ -356,10 +337,7 @@ func Run(g *Generator) {
     			continue
     		}
     
    -		pattern := filepath.Join(g.OutputBase, p.PackagePath, "*.go")
    -		if p.Vendored {
    -			pattern = filepath.Join(g.VendorOutputBase, p.PackagePath, "*.go")
    -		}
    +		pattern := filepath.Join(g.OutputDir, p.Path(), "*.go")
     		files, err := filepath.Glob(pattern)
     		if err != nil {
     			log.Fatalf("Can't glob pattern %q: %v", pattern, err)
    @@ -379,13 +357,13 @@ func Run(g *Generator) {
     func deps(c *generator.Context, pkgs []*protobufPackage) map[string][]string {
     	ret := map[string][]string{}
     	for _, p := range pkgs {
    -		pkg, ok := c.Universe[p.PackagePath]
    +		pkg, ok := c.Universe[p.Path()]
     		if !ok {
    -			log.Fatalf("Unrecognized package: %s", p.PackagePath)
    +			log.Fatalf("Unrecognized package: %s", p.Path())
     		}
     
     		for _, d := range pkg.Imports {
    -			ret[p.PackagePath] = append(ret[p.PackagePath], d.Path)
    +			ret[p.Path()] = append(ret[p.Path()], d.Path)
     		}
     	}
     	return ret
    @@ -414,9 +392,9 @@ func importOrder(deps map[string][]string) ([]string, error) {
     	if len(remainingNodes) > 0 {
     		return nil, fmt.Errorf("cycle: remaining nodes: %#v, remaining edges: %#v", remainingNodes, graph)
     	}
    -	//for _, n := range sorted {
    -	//	fmt.Println("topological order", n)
    -	//}
    +	// for _, n := range sorted {
    +	// 	 fmt.Println("topological order", n)
    +	// }
     	return sorted, nil
     }
     
    @@ -470,11 +448,9 @@ func (o positionOrder) Len() int {
     }
     
     func (o positionOrder) Less(i, j int) bool {
    -	return o.pos[o.elements[i].PackagePath] < o.pos[o.elements[j].PackagePath]
    +	return o.pos[o.elements[i].Path()] < o.pos[o.elements[j].Path()]
     }
     
     func (o positionOrder) Swap(i, j int) {
    -	x := o.elements[i]
    -	o.elements[i] = o.elements[j]
    -	o.elements[j] = x
    +	o.elements[i], o.elements[j] = o.elements[j], o.elements[i]
     }
    diff --git a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/generator.go b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/generator.go
    index c480a8a62eab..c9eadd812f85 100644
    --- a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/generator.go
    +++ b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/generator.go
    @@ -25,16 +25,18 @@ import (
     	"strconv"
     	"strings"
     
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     	"k8s.io/klog/v2"
    -
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
     )
     
     // genProtoIDL produces a .proto IDL.
     type genProtoIDL struct {
    -	generator.DefaultGen
    +	// This base type is close enough to what we need, if we redefine some
    +	// methods.
    +	generator.GoGenerator
     	localPackage   types.Name
     	localGoPackage types.Name
     	imports        namer.ImportTracker
    @@ -63,8 +65,11 @@ func (g *genProtoIDL) PackageVars(c *generator.Context) []string {
     		fmt.Sprintf("option go_package = %q;", g.localGoPackage.Package),
     	}
     }
    -func (g *genProtoIDL) Filename() string { return g.OptionalName + ".proto" }
    +
    +func (g *genProtoIDL) Filename() string { return g.OutputFilename + ".proto" }
    +
     func (g *genProtoIDL) FileType() string { return "protoidl" }
    +
     func (g *genProtoIDL) Namers(c *generator.Context) namer.NameSystems {
     	return namer.NameSystems{
     		// The local namer returns the correct protobuf name for a proto type
    @@ -75,7 +80,7 @@ func (g *genProtoIDL) Namers(c *generator.Context) namer.NameSystems {
     
     // Filter ignores types that are identified as not exportable.
     func (g *genProtoIDL) Filter(c *generator.Context, t *types.Type) bool {
    -	tagVals := types.ExtractCommentTags("+", t.CommentLines)["protobuf"]
    +	tagVals := gengo.ExtractCommentTags("+", t.CommentLines)["protobuf"]
     	if tagVals != nil {
     		if tagVals[0] == "false" {
     			// Type specified "false".
    @@ -140,10 +145,7 @@ func isOptionalAlias(t *types.Type) bool {
     	if t.Underlying == nil || (t.Underlying.Kind != types.Map && t.Underlying.Kind != types.Slice) {
     		return false
     	}
    -	if extractBoolTagOrDie("protobuf.nullable", t.CommentLines) == false {
    -		return false
    -	}
    -	return true
    +	return extractBoolTagOrDie("protobuf.nullable", t.CommentLines)
     }
     
     func (g *genProtoIDL) Imports(c *generator.Context) (imports []string) {
    @@ -182,7 +184,7 @@ func (g *genProtoIDL) GenerateType(c *generator.Context, t *types.Type, w io.Wri
     	case types.Struct:
     		return b.doStruct(sw)
     	default:
    -		return b.unknown(sw)
    +		return b.unknown()
     	}
     }
     
    @@ -224,9 +226,8 @@ func (p protobufLocator) GoTypeForName(name types.Name) *types.Type {
     
     // ProtoTypeFor locates a Protobuf type for the provided Go type (if possible).
     func (p protobufLocator) ProtoTypeFor(t *types.Type) (*types.Type, error) {
    -	switch {
     	// we've already converted the type, or it's a map
    -	case t.Kind == types.Protobuf || t.Kind == types.Map:
    +	if t.Kind == types.Protobuf || t.Kind == types.Map {
     		p.tracker.AddType(t)
     		return t, nil
     	}
    @@ -258,7 +259,7 @@ type bodyGen struct {
     	t *types.Type
     }
     
    -func (b bodyGen) unknown(sw *generator.SnippetWriter) error {
    +func (b bodyGen) unknown() error {
     	return fmt.Errorf("not sure how to generate: %#v", b.t)
     }
     
    @@ -304,7 +305,7 @@ func (b bodyGen) doStruct(sw *generator.SnippetWriter) error {
     	var alias *types.Type
     	var fields []protoField
     	options := []string{}
    -	allOptions := types.ExtractCommentTags("+", b.t.CommentLines)
    +	allOptions := gengo.ExtractCommentTags("+", b.t.CommentLines)
     	for k, v := range allOptions {
     		switch {
     		case strings.HasPrefix(k, "protobuf.options."):
    @@ -554,11 +555,11 @@ func protobufTagToField(tag string, field *protoField, m types.Member, t *types.
     	// protobuf:"bytes,3,opt,name=Id,customtype=github.com/gogo/protobuf/test.Uuid"
     	parts := strings.Split(tag, ",")
     	if len(parts) < 3 {
    -		return fmt.Errorf("member %q of %q malformed 'protobuf' tag, not enough segments\n", m.Name, t.Name)
    +		return fmt.Errorf("member %q of %q malformed 'protobuf' tag, not enough segments", m.Name, t.Name)
     	}
     	protoTag, err := strconv.Atoi(parts[1])
     	if err != nil {
    -		return fmt.Errorf("member %q of %q malformed 'protobuf' tag, field ID is %q which is not an integer: %v\n", m.Name, t.Name, parts[1], err)
    +		return fmt.Errorf("member %q of %q malformed 'protobuf' tag, field ID is %q which is not an integer: %w", m.Name, t.Name, parts[1], err)
     	}
     	field.Tag = protoTag
     
    @@ -579,7 +580,7 @@ func protobufTagToField(tag string, field *protoField, m types.Member, t *types.
     			name = types.Name{
     				Name:    parts[0][last+1:],
     				Package: prefix,
    -				Path:    strings.Replace(prefix, ".", "/", -1),
    +				Path:    strings.ReplaceAll(prefix, ".", "/"),
     			}
     		} else {
     			name = types.Name{
    @@ -598,7 +599,7 @@ func protobufTagToField(tag string, field *protoField, m types.Member, t *types.
     	for i, extra := range parts[3:] {
     		parts := strings.SplitN(extra, "=", 2)
     		if len(parts) != 2 {
    -			return fmt.Errorf("member %q of %q malformed 'protobuf' tag, tag %d should be key=value, got %q\n", m.Name, t.Name, i+4, extra)
    +			return fmt.Errorf("member %q of %q malformed 'protobuf' tag, tag %d should be key=value, got %q", m.Name, t.Name, i+4, extra)
     		}
     		switch parts[0] {
     		case "name":
    diff --git a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/import_tracker.go b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/import_tracker.go
    index 08a991b15544..0031c9bd831f 100644
    --- a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/import_tracker.go
    +++ b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/import_tracker.go
    @@ -17,8 +17,8 @@ limitations under the License.
     package protobuf
     
     import (
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     type ImportTracker struct {
    diff --git a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/namer.go b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/namer.go
    index e3b21c6703f6..2ad0a9537e4d 100644
    --- a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/namer.go
    +++ b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/namer.go
    @@ -21,9 +21,9 @@ import (
     	"reflect"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     type localNamer struct {
    @@ -37,11 +37,17 @@ func (n localNamer) Name(t *types.Type) string {
     	if len(n.localPackage.Package) != 0 && n.localPackage.Package == t.Name.Package {
     		return t.Name.Name
     	}
    +	// For non-local and non-fundamental types, use an absolute reference
    +	// see https://protobuf.com/docs/language-spec#type-references
    +	if strings.Contains(t.Name.Package, ".") {
    +		return fmt.Sprintf(".%s", t.Name)
    +	}
     	return t.Name.String()
     }
     
     type protobufNamer struct {
    -	packages       []*protobufPackage
    +	packages []*protobufPackage
    +	// The key here is a Go import-path.
     	packagesByPath map[string]*protobufPackage
     }
     
    @@ -58,17 +64,9 @@ func (n *protobufNamer) Name(t *types.Type) string {
     	return t.Name.String()
     }
     
    -func (n *protobufNamer) List() []generator.Package {
    -	packages := make([]generator.Package, 0, len(n.packages))
    -	for i := range n.packages {
    -		packages = append(packages, n.packages[i])
    -	}
    -	return packages
    -}
    -
     func (n *protobufNamer) Add(p *protobufPackage) {
    -	if _, ok := n.packagesByPath[p.PackagePath]; !ok {
    -		n.packagesByPath[p.PackagePath] = p
    +	if _, ok := n.packagesByPath[p.Path()]; !ok {
    +		n.packagesByPath[p.Path()] = p
     		n.packages = append(n.packages, p)
     	}
     }
    @@ -77,7 +75,7 @@ func (n *protobufNamer) GoNameToProtoName(name types.Name) types.Name {
     	if p, ok := n.packagesByPath[name.Package]; ok {
     		return types.Name{
     			Name:    name.Name,
    -			Package: p.PackageName,
    +			Package: p.Name(),
     			Path:    p.ImportPath(),
     		}
     	}
    @@ -85,7 +83,7 @@ func (n *protobufNamer) GoNameToProtoName(name types.Name) types.Name {
     		if _, ok := p.FilterTypes[name]; ok {
     			return types.Name{
     				Name:    name.Name,
    -				Package: p.PackageName,
    +				Package: p.Name(),
     				Path:    p.ImportPath(),
     			}
     		}
    @@ -94,8 +92,8 @@ func (n *protobufNamer) GoNameToProtoName(name types.Name) types.Name {
     }
     
     func protoSafePackage(name string) string {
    -	pkg := strings.Replace(name, "/", ".", -1)
    -	return strings.Replace(pkg, "-", "_", -1)
    +	pkg := strings.ReplaceAll(name, "/", ".")
    +	return strings.ReplaceAll(pkg, "-", "_")
     }
     
     type typeNameSet map[types.Name]*protobufPackage
    @@ -116,7 +114,7 @@ func assignGoTypeToProtoPackage(p *protobufPackage, t *types.Type, local, global
     		}
     		return
     	}
    -	if t.Name.Package == p.PackagePath {
    +	if t.Name.Package == p.Path() {
     		// Associate types only to their own package
     		global[t.Name] = p
     	}
    @@ -182,7 +180,7 @@ func (n *protobufNamer) AssignTypesToPackages(c *generator.Context) error {
     		optional := make(map[types.Name]struct{})
     		p.Imports = NewImportTracker(p.ProtoTypeName())
     		for _, t := range c.Order {
    -			if t.Name.Package != p.PackagePath {
    +			if t.Name.Package != p.Path() {
     				continue
     			}
     			if !isTypeApplicableToProtobuf(t) {
    diff --git a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/package.go b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/package.go
    index bed4c3e30617..b31a7c4dd792 100644
    --- a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/package.go
    +++ b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/package.go
    @@ -25,41 +25,31 @@ import (
     	"reflect"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/types"
     )
     
    -func newProtobufPackage(packagePath, packageName string, generateAll bool, omitFieldTypes map[types.Name]struct{}) *protobufPackage {
    +func newProtobufPackage(packagePath, packageDir, packageName string, generateAll bool, omitFieldTypes map[types.Name]struct{}) *protobufPackage {
     	pkg := &protobufPackage{
    -		DefaultPackage: generator.DefaultPackage{
    +		SimpleTarget: generator.SimpleTarget{
     			// The protobuf package name (foo.bar.baz)
    -			PackageName: packageName,
    -			// A path segment relative to the GOPATH root (foo/bar/baz)
    -			PackagePath: packagePath,
    -			HeaderText: []byte(
    -				`
    -// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    -
    -`),
    -			PackageDocumentation: []byte(fmt.Sprintf(
    -				`// Package %s is an autogenerated protobuf IDL.
    -`, packageName)),
    +			PkgName:       packageName,
    +			PkgPath:       packagePath,
    +			PkgDir:        packageDir,
    +			HeaderComment: []byte("// This file was autogenerated by go-to-protobuf. Do not edit it manually!\n\n"),
    +			PkgDocComment: []byte(fmt.Sprintf("// Package %s is an autogenerated protobuf IDL.\n", packageName)),
     		},
     		GenerateAll:    generateAll,
     		OmitFieldTypes: omitFieldTypes,
     	}
     	pkg.FilterFunc = pkg.filterFunc
    -	pkg.GeneratorFunc = pkg.generatorFunc
    +	pkg.GeneratorsFunc = pkg.generatorsFunc
     	return pkg
     }
     
     // protobufPackage contains the protobuf implementation of Package.
     type protobufPackage struct {
    -	generator.DefaultPackage
    -
    -	// If true, this package has been vendored into our source tree and thus can
    -	// only be generated by changing the vendor tree.
    -	Vendored bool
    +	generator.SimpleTarget
     
     	// If true, generate protobuf serializations for all public types.
     	// If false, only generate protobuf serializations for structs that
    @@ -89,9 +79,9 @@ type protobufPackage struct {
     	Imports *ImportTracker
     }
     
    -func (p *protobufPackage) Clean(outputBase string) error {
    +func (p *protobufPackage) Clean() error {
     	for _, s := range []string{p.ImportPath(), p.OutputPath()} {
    -		if err := os.Remove(filepath.Join(outputBase, s)); err != nil && !os.IsNotExist(err) {
    +		if err := os.Remove(filepath.Join(p.Dir(), filepath.Base(s))); err != nil && !os.IsNotExist(err) {
     			return err
     		}
     	}
    @@ -179,17 +169,17 @@ func (p *protobufPackage) ExtractGeneratedType(t *ast.TypeSpec) bool {
     	return true
     }
     
    -func (p *protobufPackage) generatorFunc(c *generator.Context) []generator.Generator {
    +func (p *protobufPackage) generatorsFunc(c *generator.Context) []generator.Generator {
     	generators := []generator.Generator{}
     
     	p.Imports.AddNullable()
     
     	generators = append(generators, &genProtoIDL{
    -		DefaultGen: generator.DefaultGen{
    -			OptionalName: "generated",
    +		GoGenerator: generator.GoGenerator{
    +			OutputFilename: "generated", // the extension is added later
     		},
    -		localPackage:   types.Name{Package: p.PackageName, Path: p.PackagePath},
    -		localGoPackage: types.Name{Package: p.PackagePath, Name: p.GoPackageName()},
    +		localPackage:   types.Name{Package: p.Name(), Path: p.Path()},
    +		localGoPackage: types.Name{Package: p.Path(), Name: p.GoPackageName()},
     		imports:        p.Imports,
     		generateAll:    p.GenerateAll,
     		omitGogo:       p.OmitGogo,
    @@ -199,17 +189,17 @@ func (p *protobufPackage) generatorFunc(c *generator.Context) []generator.Genera
     }
     
     func (p *protobufPackage) GoPackageName() string {
    -	return filepath.Base(p.PackagePath)
    +	return filepath.Base(p.Path())
     }
     
     func (p *protobufPackage) ImportPath() string {
    -	return filepath.Join(p.PackagePath, "generated.proto")
    +	return filepath.Join(p.Path(), "generated.proto")
     }
     
     func (p *protobufPackage) OutputPath() string {
    -	return filepath.Join(p.PackagePath, "generated.pb.go")
    +	return filepath.Join(p.Path(), "generated.pb.go")
     }
     
     var (
    -	_ = generator.Package(&protobufPackage{})
    +	_ = generator.Target(&protobufPackage{})
     )
    diff --git a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/parser.go b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/parser.go
    index c4cf66e74475..32f9e0da2740 100644
    --- a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/parser.go
    +++ b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/parser.go
    @@ -111,8 +111,7 @@ func RewriteGeneratedGogoProtobufFile(name string, extractFn ExtractFunc, option
     // TODO: move into upstream gogo-protobuf once https://github.com/gogo/protobuf/issues/181
     // has agreement
     func rewriteOptionalMethods(decl ast.Decl, isOptional OptionalFunc) {
    -	switch t := decl.(type) {
    -	case *ast.FuncDecl:
    +	if t, ok := decl.(*ast.FuncDecl); ok {
     		ident, ptr, ok := receiver(t)
     		if !ok {
     			return
    @@ -150,8 +149,7 @@ type optionalAssignmentVisitor struct {
     // Visit walks the provided node, transforming field initializations of the form
     // m.Field = &OptionalType{} -> m.Field = OptionalType{}
     func (v optionalAssignmentVisitor) Visit(n ast.Node) ast.Visitor {
    -	switch t := n.(type) {
    -	case *ast.AssignStmt:
    +	if t, ok := n.(*ast.AssignStmt); ok {
     		if len(t.Lhs) == 1 && len(t.Rhs) == 1 {
     			if !isFieldSelector(t.Lhs[0], "m", "") {
     				return nil
    @@ -195,13 +193,11 @@ func (v *optionalItemsVisitor) Visit(n ast.Node) ast.Visitor {
     					t.Lhs[0] = &ast.StarExpr{X: &ast.Ident{Name: "m"}}
     				}
     			}
    -			switch rhs := t.Rhs[0].(type) {
    -			case *ast.CallExpr:
    +			if rhs, ok := t.Rhs[0].(*ast.CallExpr); ok {
     				if ident, ok := rhs.Fun.(*ast.Ident); ok && ident.Name == "append" {
     					ast.Walk(v, rhs)
     					if len(rhs.Args) > 0 {
    -						switch arg := rhs.Args[0].(type) {
    -						case *ast.Ident:
    +						if arg, ok := rhs.Args[0].(*ast.Ident); ok {
     							if arg.Name == "m" {
     								rhs.Args[0] = &ast.StarExpr{X: &ast.Ident{Name: "m"}}
     							}
    @@ -212,8 +208,7 @@ func (v *optionalItemsVisitor) Visit(n ast.Node) ast.Visitor {
     			}
     		}
     	case *ast.IfStmt:
    -		switch cond := t.Cond.(type) {
    -		case *ast.BinaryExpr:
    +		if cond, ok := t.Cond.(*ast.BinaryExpr); ok {
     			if cond.Op == token.EQL {
     				if isFieldSelector(cond.X, "m", "Items") && isIdent(cond.Y, "nil") {
     					cond.X = &ast.StarExpr{X: &ast.Ident{Name: "m"}}
    @@ -225,8 +220,7 @@ func (v *optionalItemsVisitor) Visit(n ast.Node) ast.Visitor {
     			// if err := m[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil {
     			// 	return err
     			// }
    -			switch s := t.Init.(type) {
    -			case *ast.AssignStmt:
    +			if s, ok := t.Init.(*ast.AssignStmt); ok {
     				if call, ok := s.Rhs[0].(*ast.CallExpr); ok {
     					if sel, ok := call.Fun.(*ast.SelectorExpr); ok {
     						if x, ok := sel.X.(*ast.IndexExpr); ok {
    @@ -302,15 +296,13 @@ func receiver(f *ast.FuncDecl) (ident *ast.Ident, pointer bool, ok bool) {
     // dropExistingTypeDeclarations removes any type declaration for which extractFn returns true. The function
     // returns true if the entire declaration should be dropped.
     func dropExistingTypeDeclarations(decl ast.Decl, extractFn ExtractFunc) bool {
    -	switch t := decl.(type) {
    -	case *ast.GenDecl:
    +	if t, ok := decl.(*ast.GenDecl); ok {
     		if t.Tok != token.TYPE {
     			return false
     		}
     		specs := []ast.Spec{}
     		for _, s := range t.Specs {
    -			switch spec := s.(type) {
    -			case *ast.TypeSpec:
    +			if spec, ok := s.(*ast.TypeSpec); ok {
     				if extractFn(spec) {
     					continue
     				}
    @@ -329,15 +321,13 @@ func dropExistingTypeDeclarations(decl ast.Decl, extractFn ExtractFunc) bool {
     // to prevent generation from being able to define side-effects.  The function returns true
     // if the entire declaration should be dropped.
     func dropEmptyImportDeclarations(decl ast.Decl) bool {
    -	switch t := decl.(type) {
    -	case *ast.GenDecl:
    +	if t, ok := decl.(*ast.GenDecl); ok {
     		if t.Tok != token.IMPORT {
     			return false
     		}
     		specs := []ast.Spec{}
     		for _, s := range t.Specs {
    -			switch spec := s.(type) {
    -			case *ast.ImportSpec:
    +			if spec, ok := s.(*ast.ImportSpec); ok {
     				if spec.Name != nil && spec.Name.Name == "_" {
     					continue
     				}
    diff --git a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/tags.go b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/tags.go
    index 6cfa37886b44..44ca07d1a841 100644
    --- a/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/tags.go
    +++ b/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protobuf/tags.go
    @@ -17,7 +17,7 @@ limitations under the License.
     package protobuf
     
     import (
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
     	"k8s.io/klog/v2"
     )
     
    @@ -25,7 +25,7 @@ import (
     // it exists, the value is boolean.  If the tag did not exist, it returns
     // false.
     func extractBoolTagOrDie(key string, lines []string) bool {
    -	val, err := types.ExtractSingleBoolCommentTag("+", key, false, lines)
    +	val, err := gengo.ExtractSingleBoolCommentTag("+", key, false, lines)
     	if err != nil {
     		klog.Fatal(err)
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/import-boss/.gitignore b/vendor/k8s.io/code-generator/cmd/import-boss/.gitignore
    deleted file mode 100644
    index a5c47b66f833..000000000000
    --- a/vendor/k8s.io/code-generator/cmd/import-boss/.gitignore
    +++ /dev/null
    @@ -1 +0,0 @@
    -import-boss
    diff --git a/vendor/k8s.io/code-generator/cmd/import-boss/README.md b/vendor/k8s.io/code-generator/cmd/import-boss/README.md
    deleted file mode 100644
    index 88dc010ef687..000000000000
    --- a/vendor/k8s.io/code-generator/cmd/import-boss/README.md
    +++ /dev/null
    @@ -1,97 +0,0 @@
    -## Purpose
    -
    -- `import-boss` enforces import restrictions against all pull requests submitted to the [k/k](https://github.com/kubernetes/kubernetes) repository. There are a number of `.import-restrictions` files that in the [k/k](https://github.com/kubernetes/kubernetes) repository, all of which are defined in `YAML` (or `JSON`) format.
    -
    -## How does it work?
    -
    -- When a directory is verified, `import-boss` looks for a file called `.import-restrictions`. If this file is not found, `import-boss` will go up to the parent directory until it finds this `.import-restrictions` file.
    -
    -- Adding `.import-restrictions` files does not add them to CI runs. They need to be explicitly added to `hack/verify-import-boss.sh`. Once an `.import-restrictions` file is added, all of the sub-packages of this file's directory are added as well.
    -
    -### What are Rules?
    -
    -- If an `.import-restrictions` file is found, then all imports of the package are checked against each `rule` in the file. A `rule` consists of three parts:
    -  - A `SelectorRegexp`, to select the import paths that the rule applies to.
    -  - A list of `AllowedPrefixes`
    -  - A list of `ForbiddenPrefixes`
    -
    -- An import is allowed if it matches at least one allowed prefix and does not match any forbidden prefixes. An example `.import-restrictions` file looks like this:
    -
    -```json
    -{
    -  "Rules": [
    -    {
    -      "SelectorRegexp": "k8s[.]io",
    -      "AllowedPrefixes": [
    -        "k8s.io/gengo/examples",
    -        "k8s.io/kubernetes/third_party"
    -      ],
    -      "ForbiddenPrefixes": [
    -        "k8s.io/kubernetes/pkg/third_party/deprecated"
    -      ]
    -    },
    -    {
    -      "SelectorRegexp": "^unsafe$",
    -      "AllowedPrefixes": [
    -      ],
    -      "ForbiddenPrefixes": [
    -        ""
    -      ]
    -    }
    -  ]
    -}
    -```
    -- Take note of `"SelectorRegexp": "k8s[.]io"` in the first block. This specifies that we are applying these rules to the `"k8s.io"` import path.
    -- The second block explicitly matches the "unsafe" package, and forbids it ("" is a prefix of everything).
    -
    -### What are Inverse Rules?
    -
    -- In contrast to non-inverse rules, which are defined in importing packages, inverse rules are defined in imported packages.
    -
    -- Inverse rules allow for fine-grained import restrictions for "private packages" where we don't want to spread use inside of [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes).
    -
    -- If an `.import-restrictions` file is found, then all imports of the package are checked against each `inverse rule` in the file. This check will continue, climbing up the directory tree, until a match is found and accepted.
    -
    -- Inverse rules also have a boolean `transitive` option. When this option is true, the import rule is also applied to `transitive` imports.
    -  - `transitive` imports are dependencies not directly depended on by the code, but are needed to run the application. Use this option if you want to apply restrictions to those indirect dependencies.
    -
    -```yaml
    -rules:
    -  - selectorRegexp: k8s[.]io
    -    allowedPrefixes:
    -      - k8s.io/gengo/examples
    -      - k8s.io/kubernetes/third_party
    -    forbiddenPrefixes:
    -      - k8s.io/kubernetes/pkg/third_party/deprecated
    -  - selectorRegexp: ^unsafe$
    -    forbiddenPrefixes:
    -      - ""
    -inverseRules:
    -  - selectorRegexp: k8s[.]io
    -    allowedPrefixes:
    -      - k8s.io/same-repo
    -      - k8s.io/kubernetes/pkg/legacy
    -    forbiddenPrefixes:
    -      - k8s.io/kubernetes/pkg/legacy/subpkg
    -  - selectorRegexp: k8s[.]io
    -    transitive: true
    -    forbiddenPrefixes:
    -      - k8s.io/kubernetes/cmd/kubelet
    -      - k8s.io/kubernetes/cmd/kubectl
    -```
    -
    -## How do I run import-boss within the k/k repo?
    -
    -- In order to include _test.go files, make sure to pass in the `include-test-files` flag:
    -  ```sh
    -  hack/verify-import-boss.sh --include-test-files=true
    -  ```
    -
    -- To include other directories, pass in a directory or directories using the `input-dirs` flag:
    -  ```sh
    -  hack/verify-import-boss.sh --input-dirs="k8s.io/kubernetes/test/e2e/framework/..."
    -  ```
    -
    -## Reference
    -
    -- [import-boss](https://github.com/kubernetes/gengo/tree/master/examples/import-boss)
    \ No newline at end of file
    diff --git a/vendor/k8s.io/code-generator/cmd/import-boss/main.go b/vendor/k8s.io/code-generator/cmd/import-boss/main.go
    deleted file mode 100644
    index 34373c541174..000000000000
    --- a/vendor/k8s.io/code-generator/cmd/import-boss/main.go
    +++ /dev/null
    @@ -1,45 +0,0 @@
    -/*
    -Copyright 2016 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// import-boss enforces import restrictions in a given repository.
    -package main
    -
    -import (
    -	"os"
    -
    -	"github.com/spf13/pflag"
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/examples/import-boss/generators"
    -
    -	"k8s.io/klog/v2"
    -)
    -
    -func main() {
    -	klog.InitFlags(nil)
    -	arguments := args.Default()
    -
    -	pflag.CommandLine.BoolVar(&arguments.IncludeTestFiles, "include-test-files", false, "If true, include *_test.go files.")
    -
    -	if err := arguments.Execute(
    -		generators.NameSystems(),
    -		generators.DefaultNameSystem(),
    -		generators.Packages,
    -	); err != nil {
    -		klog.Errorf("Error: %v", err)
    -		os.Exit(1)
    -	}
    -	klog.V(2).Info("Completed successfully.")
    -}
    diff --git a/vendor/k8s.io/code-generator/cmd/informer-gen/args/args.go b/vendor/k8s.io/code-generator/cmd/informer-gen/args/args.go
    index ffd073a86b41..8052578c5436 100644
    --- a/vendor/k8s.io/code-generator/cmd/informer-gen/args/args.go
    +++ b/vendor/k8s.io/code-generator/cmd/informer-gen/args/args.go
    @@ -18,18 +18,18 @@ package args
     
     import (
     	"fmt"
    -	"path"
     
     	"github.com/spf13/pflag"
    -	codegenutil "k8s.io/code-generator/pkg/util"
    -	"k8s.io/gengo/args"
     )
     
    -// CustomArgs is used by the gengo framework to pass args specific to this generator.
    -type CustomArgs struct {
    -	VersionedClientSetPackage string
    -	InternalClientSetPackage  string
    -	ListersPackage            string
    +// Args is used by the gengo framework to pass args specific to this generator.
    +type Args struct {
    +	OutputDir                 string // must be a directory path
    +	OutputPkg                 string // must be a Go import-path
    +	GoHeaderFile              string
    +	VersionedClientSetPackage string // must be a Go import-path
    +	InternalClientSetPackage  string // must be a Go import-path
    +	ListersPackage            string // must be a Go import-path
     	SingleDirectory           bool
     
     	// PluralExceptions define a list of pluralizer exceptions in Type:PluralType format.
    @@ -37,47 +37,46 @@ type CustomArgs struct {
     	PluralExceptions []string
     }
     
    -// NewDefaults returns default arguments for the generator.
    -func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
    -	genericArgs := args.Default().WithoutDefaultFlagParsing()
    -	customArgs := &CustomArgs{
    -		SingleDirectory:  false,
    -		PluralExceptions: []string{"Endpoints:Endpoints"},
    +// New returns default arguments for the generator.
    +func New() *Args {
    +	return &Args{
    +		SingleDirectory: false,
     	}
    -	genericArgs.CustomArgs = customArgs
    -
    -	if pkg := codegenutil.CurrentPackage(); len(pkg) != 0 {
    -		genericArgs.OutputPackagePath = path.Join(pkg, "pkg/client/informers")
    -		customArgs.VersionedClientSetPackage = path.Join(pkg, "pkg/client/clientset/versioned")
    -		customArgs.InternalClientSetPackage = path.Join(pkg, "pkg/client/clientset/internalversion")
    -		customArgs.ListersPackage = path.Join(pkg, "pkg/client/listers")
    -	}
    -
    -	return genericArgs, customArgs
     }
     
     // AddFlags add the generator flags to the flag set.
    -func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) {
    -	fs.StringVar(&ca.InternalClientSetPackage, "internal-clientset-package", ca.InternalClientSetPackage, "the full package name for the internal clientset to use")
    -	fs.StringVar(&ca.VersionedClientSetPackage, "versioned-clientset-package", ca.VersionedClientSetPackage, "the full package name for the versioned clientset to use")
    -	fs.StringVar(&ca.ListersPackage, "listers-package", ca.ListersPackage, "the full package name for the listers to use")
    -	fs.BoolVar(&ca.SingleDirectory, "single-directory", ca.SingleDirectory, "if true, omit the intermediate \"internalversion\" and \"externalversions\" subdirectories")
    -	fs.StringSliceVar(&ca.PluralExceptions, "plural-exceptions", ca.PluralExceptions, "list of comma separated plural exception definitions in Type:PluralizedType format")
    +func (args *Args) AddFlags(fs *pflag.FlagSet) {
    +	fs.StringVar(&args.OutputDir, "output-dir", "",
    +		"the base directory under which to generate results")
    +	fs.StringVar(&args.OutputPkg, "output-pkg", args.OutputPkg,
    +		"the Go import-path of the generated results")
    +	fs.StringVar(&args.GoHeaderFile, "go-header-file", "",
    +		"the path to a file containing boilerplate header text; the string \"YEAR\" will be replaced with the current 4-digit year")
    +	fs.StringVar(&args.InternalClientSetPackage, "internal-clientset-package", args.InternalClientSetPackage,
    +		"the Go import-path of the internal clientset to use")
    +	fs.StringVar(&args.VersionedClientSetPackage, "versioned-clientset-package", args.VersionedClientSetPackage,
    +		"the Go import-path of the versioned clientset to use")
    +	fs.StringVar(&args.ListersPackage, "listers-package", args.ListersPackage,
    +		"the Go import-path of the listers to use")
    +	fs.BoolVar(&args.SingleDirectory, "single-directory", args.SingleDirectory,
    +		"if true, omit the intermediate \"internalversion\" and \"externalversions\" subdirectories")
    +	fs.StringSliceVar(&args.PluralExceptions, "plural-exceptions", args.PluralExceptions,
    +		"list of comma separated plural exception definitions in Type:PluralizedType format")
     }
     
     // Validate checks the given arguments.
    -func Validate(genericArgs *args.GeneratorArgs) error {
    -	customArgs := genericArgs.CustomArgs.(*CustomArgs)
    -
    -	if len(genericArgs.OutputPackagePath) == 0 {
    -		return fmt.Errorf("output package cannot be empty")
    +func (args *Args) Validate() error {
    +	if len(args.OutputDir) == 0 {
    +		return fmt.Errorf("--output-dir must be specified")
     	}
    -	if len(customArgs.VersionedClientSetPackage) == 0 {
    -		return fmt.Errorf("versioned clientset package cannot be empty")
    +	if len(args.OutputPkg) == 0 {
    +		return fmt.Errorf("--output-pkg must be specified")
     	}
    -	if len(customArgs.ListersPackage) == 0 {
    -		return fmt.Errorf("listers package cannot be empty")
    +	if len(args.VersionedClientSetPackage) == 0 {
    +		return fmt.Errorf("--versioned-clientset-package must be specified")
    +	}
    +	if len(args.ListersPackage) == 0 {
    +		return fmt.Errorf("--listers-package must be specified")
     	}
    -
     	return nil
     }
    diff --git a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/factory.go b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/factory.go
    index 4875393913b9..b27cfeb0a3ce 100644
    --- a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/factory.go
    +++ b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/factory.go
    @@ -21,9 +21,9 @@ import (
     	"path"
     
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     
     	"k8s.io/klog/v2"
     )
    @@ -31,7 +31,7 @@ import (
     // factoryGenerator produces a file of listers for a given GroupVersion and
     // type.
     type factoryGenerator struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage             string
     	imports                   namer.ImportTracker
     	groupVersions             map[string]clientgentypes.GroupVersions
    @@ -299,7 +299,8 @@ type SharedInformerFactory interface {
     
     	// Start initializes all requested informers. They are handled in goroutines
     	// which run until the stop channel gets closed.
    -        Start(stopCh <-chan struct{})
    +	// Warning: Start does not block. When run in a go-routine, it will race with a later WaitForCacheSync.
    +	Start(stopCh <-chan struct{})
     
     	// Shutdown marks a factory as shutting down. At that point no new
     	// informers can be started anymore and Start will return without
    diff --git a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/factoryinterface.go b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/factoryinterface.go
    index 70826ebaad50..278f8ed915c0 100644
    --- a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/factoryinterface.go
    +++ b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/factoryinterface.go
    @@ -19,9 +19,9 @@ package generators
     import (
     	"io"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     
     	"k8s.io/klog/v2"
     )
    @@ -29,7 +29,7 @@ import (
     // factoryInterfaceGenerator produces a file of interfaces used to break a dependency cycle for
     // informer registration
     type factoryInterfaceGenerator struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage    string
     	imports          namer.ImportTracker
     	clientSetPackage string
    diff --git a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/generic.go b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/generic.go
    index a5a42953d225..e863b1d2fde4 100644
    --- a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/generic.go
    +++ b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/generic.go
    @@ -23,14 +23,14 @@ import (
     
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
     	codegennamer "k8s.io/code-generator/pkg/namer"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     // genericGenerator generates the generic informer.
     type genericGenerator struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage        string
     	imports              namer.ImportTracker
     	groupVersions        map[string]clientgentypes.GroupVersions
    @@ -61,7 +61,6 @@ func (g *genericGenerator) Namers(c *generator.Context) namer.NameSystems {
     
     func (g *genericGenerator) Imports(c *generator.Context) (imports []string) {
     	imports = append(imports, g.imports.ImportLines()...)
    -	imports = append(imports, "fmt")
     	return
     }
     
    @@ -127,6 +126,7 @@ func (g *genericGenerator) GenerateType(c *generator.Context, t *types.Type, w i
     		"cacheGenericLister":         c.Universe.Type(cacheGenericLister),
     		"cacheNewGenericLister":      c.Universe.Function(cacheNewGenericLister),
     		"cacheSharedIndexInformer":   c.Universe.Type(cacheSharedIndexInformer),
    +		"fmtErrorf":                  c.Universe.Type(fmtErrorfFunc),
     		"groups":                     groups,
     		"schemeGVs":                  schemeGVs,
     		"schemaGroupResource":        c.Universe.Type(schemaGroupResource),
    @@ -179,6 +179,6 @@ func (f *sharedInformerFactory) ForResource(resource {{.schemaGroupVersionResour
     		{{end -}}
     	}
     
    -	return nil, fmt.Errorf("no informer found for %v", resource)
    +	return nil, {{.fmtErrorf|raw}}("no informer found for %v", resource)
     }
     `
    diff --git a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/groupinterface.go b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/groupinterface.go
    index 0bba93c4b2ec..5342e25d97ea 100644
    --- a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/groupinterface.go
    +++ b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/groupinterface.go
    @@ -18,18 +18,18 @@ package generators
     
     import (
     	"io"
    -	"path/filepath"
    +	"path"
     	"strings"
     
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     // groupInterfaceGenerator generates the per-group interface file.
     type groupInterfaceGenerator struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage             string
     	imports                   namer.ImportTracker
     	groupVersions             clientgentypes.GroupVersions
    @@ -70,7 +70,7 @@ func (g *groupInterfaceGenerator) GenerateType(c *generator.Context, t *types.Ty
     	versions := make([]versionData, 0, len(g.groupVersions.Versions))
     	for _, version := range g.groupVersions.Versions {
     		gv := clientgentypes.GroupVersion{Group: g.groupVersions.Group, Version: version.Version}
    -		versionPackage := filepath.Join(g.outputPackage, strings.ToLower(gv.Version.NonEmpty()))
    +		versionPackage := path.Join(g.outputPackage, strings.ToLower(gv.Version.NonEmpty()))
     		iface := c.Universe.Type(types.Name{Package: versionPackage, Name: "Interface"})
     		versions = append(versions, versionData{
     			Name:      namer.IC(version.Version.NonEmpty()),
    diff --git a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/informer.go b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/informer.go
    index da00e6e61fe5..4034695ddf0f 100644
    --- a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/informer.go
    +++ b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/informer.go
    @@ -21,9 +21,9 @@ import (
     	"io"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    @@ -34,7 +34,7 @@ import (
     // informerGenerator produces a file of listers for a given GroupVersion and
     // type.
     type informerGenerator struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage             string
     	groupPkgName              string
     	groupVersion              clientgentypes.GroupVersion
    @@ -86,6 +86,7 @@ func (g *informerGenerator) GenerateType(c *generator.Context, t *types.Type, w
     		"cacheNewSharedIndexInformer":     c.Universe.Function(cacheNewSharedIndexInformer),
     		"cacheSharedIndexInformer":        c.Universe.Type(cacheSharedIndexInformer),
     		"clientSetInterface":              clientSetInterface,
    +		"contextTODO":                     c.Universe.Type(contextTODOFunc),
     		"group":                           namer.IC(g.groupGoName),
     		"informerFor":                     informerFor,
     		"interfacesTweakListOptionsFunc":  c.Universe.Type(types.Name{Package: g.internalInterfacesPackage, Name: "TweakListOptionsFunc"}),
    @@ -151,13 +152,13 @@ func NewFiltered$.type|public$Informer(client $.clientSetInterface|raw$$if .name
     				if tweakListOptions != nil {
     					tweakListOptions(&options)
     				}
    -				return client.$.group$$.version$().$.type|publicPlural$($if .namespaced$namespace$end$).List(context.TODO(), options)
    +				return client.$.group$$.version$().$.type|publicPlural$($if .namespaced$namespace$end$).List($.contextTODO|raw$(), options)
     			},
     			WatchFunc: func(options $.v1ListOptions|raw$) ($.watchInterface|raw$, error) {
     				if tweakListOptions != nil {
     					tweakListOptions(&options)
     				}
    -				return client.$.group$$.version$().$.type|publicPlural$($if .namespaced$namespace$end$).Watch(context.TODO(), options)
    +				return client.$.group$$.version$().$.type|publicPlural$($if .namespaced$namespace$end$).Watch($.contextTODO|raw$(), options)
     			},
     		},
     		&$.type|raw${},
    diff --git a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/packages.go b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/targets.go
    similarity index 53%
    rename from vendor/k8s.io/code-generator/cmd/informer-gen/generators/packages.go
    rename to vendor/k8s.io/code-generator/cmd/informer-gen/generators/targets.go
    index dd2c9cceb93d..2e886d4e00c5 100644
    --- a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/packages.go
    +++ b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/targets.go
    @@ -22,16 +22,15 @@ import (
     	"path/filepath"
     	"strings"
     
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    -	"k8s.io/klog/v2"
    -
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    -	informergenargs "k8s.io/code-generator/cmd/informer-gen/args"
    +	"k8s.io/code-generator/cmd/informer-gen/args"
     	genutil "k8s.io/code-generator/pkg/util"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
    +	"k8s.io/klog/v2"
     )
     
     // NameSystems returns the name system used by the generators in this package.
    @@ -85,37 +84,34 @@ func isInternal(m types.Member) bool {
     	return !strings.Contains(m.Tags, "json")
     }
     
    -func packageForInternalInterfaces(base string) string {
    -	return filepath.Join(base, "internalinterfaces")
    -}
    +const subdirForInternalInterfaces = "internalinterfaces"
     
    -// Packages makes the client package definition.
    -func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	boilerplate, err := arguments.LoadGoBoilerplate()
    +// GetTargets makes the client target definition.
    +func GetTargets(context *generator.Context, args *args.Args) []generator.Target {
    +	boilerplate, err := gengo.GoBoilerplate(args.GoHeaderFile, "", gengo.StdGeneratedBy)
     	if err != nil {
     		klog.Fatalf("Failed loading boilerplate: %v", err)
     	}
     
    -	customArgs, ok := arguments.CustomArgs.(*informergenargs.CustomArgs)
    -	if !ok {
    -		klog.Fatalf("Wrong CustomArgs type: %T", arguments.CustomArgs)
    +	internalVersionOutputDir := args.OutputDir
    +	internalVersionOutputPkg := args.OutputPkg
    +	externalVersionOutputDir := args.OutputDir
    +	externalVersionOutputPkg := args.OutputPkg
    +	if !args.SingleDirectory {
    +		internalVersionOutputDir = filepath.Join(internalVersionOutputDir, "internalversion")
    +		internalVersionOutputPkg = path.Join(internalVersionOutputPkg, "internalversion")
    +		externalVersionOutputDir = filepath.Join(externalVersionOutputDir, "externalversions")
    +		externalVersionOutputPkg = path.Join(externalVersionOutputPkg, "externalversions")
     	}
     
    -	internalVersionPackagePath := filepath.Join(arguments.OutputPackagePath)
    -	externalVersionPackagePath := filepath.Join(arguments.OutputPackagePath)
    -	if !customArgs.SingleDirectory {
    -		internalVersionPackagePath = filepath.Join(arguments.OutputPackagePath, "internalversion")
    -		externalVersionPackagePath = filepath.Join(arguments.OutputPackagePath, "externalversions")
    -	}
    -
    -	var packageList generator.Packages
    +	var targetList []generator.Target
     	typesForGroupVersion := make(map[clientgentypes.GroupVersion][]*types.Type)
     
     	externalGroupVersions := make(map[string]clientgentypes.GroupVersions)
     	internalGroupVersions := make(map[string]clientgentypes.GroupVersions)
     	groupGoNames := make(map[string]string)
    -	for _, inputDir := range arguments.InputDirs {
    -		p := context.Universe.Package(genutil.Vendorless(inputDir))
    +	for _, inputPkg := range context.Inputs {
    +		p := context.Universe.Package(inputPkg)
     
     		objectMeta, internal, err := objectMetaForPackage(p)
     		if err != nil {
    @@ -148,14 +144,14 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     		// If there's a comment of the form "// +groupName=somegroup" or
     		// "// +groupName=somegroup.foo.bar.io", use the first field (somegroup) as the name of the
     		// group when generating.
    -		if override := types.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
    +		if override := gengo.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
     			gv.Group = clientgentypes.Group(override[0])
     		}
     
     		// If there's a comment of the form "// +groupGoName=SomeUniqueShortName", use that as
     		// the Go group identifier in CamelCase. It defaults
     		groupGoNames[groupPackageName] = namer.IC(strings.Split(gv.Group.NonEmpty(), ".")[0])
    -		if override := types.ExtractCommentTags("+", p.Comments)["groupGoName"]; override != nil {
    +		if override := gengo.ExtractCommentTags("+", p.Comments)["groupGoName"]; override != nil {
     			groupGoNames[groupPackageName] = namer.IC(override[0])
     		}
     
    @@ -191,58 +187,81 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     		typesToGenerate = orderer.OrderTypes(typesToGenerate)
     
     		if internal {
    -			packageList = append(packageList, versionPackage(internalVersionPackagePath, groupPackageName, gv, groupGoNames[groupPackageName], boilerplate, typesToGenerate, customArgs.InternalClientSetPackage, customArgs.ListersPackage))
    +			targetList = append(targetList,
    +				versionTarget(
    +					internalVersionOutputDir, internalVersionOutputPkg,
    +					groupPackageName, gv, groupGoNames[groupPackageName],
    +					boilerplate, typesToGenerate,
    +					args.InternalClientSetPackage, args.ListersPackage))
     		} else {
    -			packageList = append(packageList, versionPackage(externalVersionPackagePath, groupPackageName, gv, groupGoNames[groupPackageName], boilerplate, typesToGenerate, customArgs.VersionedClientSetPackage, customArgs.ListersPackage))
    +			targetList = append(targetList,
    +				versionTarget(
    +					externalVersionOutputDir, externalVersionOutputPkg,
    +					groupPackageName, gv, groupGoNames[groupPackageName],
    +					boilerplate, typesToGenerate,
    +					args.VersionedClientSetPackage, args.ListersPackage))
     		}
     	}
     
     	if len(externalGroupVersions) != 0 {
    -		packageList = append(packageList, factoryInterfacePackage(externalVersionPackagePath, boilerplate, customArgs.VersionedClientSetPackage))
    -		packageList = append(packageList, factoryPackage(externalVersionPackagePath, boilerplate, groupGoNames, genutil.PluralExceptionListToMapOrDie(customArgs.PluralExceptions), externalGroupVersions,
    -			customArgs.VersionedClientSetPackage,
    -			typesForGroupVersion))
    +		targetList = append(targetList,
    +			factoryInterfaceTarget(
    +				externalVersionOutputDir, externalVersionOutputPkg,
    +				boilerplate, args.VersionedClientSetPackage))
    +		targetList = append(targetList,
    +			factoryTarget(
    +				externalVersionOutputDir, externalVersionOutputPkg,
    +				boilerplate, groupGoNames, genutil.PluralExceptionListToMapOrDie(args.PluralExceptions),
    +				externalGroupVersions, args.VersionedClientSetPackage, typesForGroupVersion))
     		for _, gvs := range externalGroupVersions {
    -			packageList = append(packageList, groupPackage(externalVersionPackagePath, gvs, boilerplate))
    +			targetList = append(targetList,
    +				groupTarget(externalVersionOutputDir, externalVersionOutputPkg, gvs, boilerplate))
     		}
     	}
     
     	if len(internalGroupVersions) != 0 {
    -		packageList = append(packageList, factoryInterfacePackage(internalVersionPackagePath, boilerplate, customArgs.InternalClientSetPackage))
    -		packageList = append(packageList, factoryPackage(internalVersionPackagePath, boilerplate, groupGoNames, genutil.PluralExceptionListToMapOrDie(customArgs.PluralExceptions), internalGroupVersions, customArgs.InternalClientSetPackage, typesForGroupVersion))
    +		targetList = append(targetList,
    +			factoryInterfaceTarget(internalVersionOutputDir, internalVersionOutputPkg, boilerplate, args.InternalClientSetPackage))
    +		targetList = append(targetList,
    +			factoryTarget(
    +				internalVersionOutputDir, internalVersionOutputPkg,
    +				boilerplate, groupGoNames, genutil.PluralExceptionListToMapOrDie(args.PluralExceptions),
    +				internalGroupVersions, args.InternalClientSetPackage, typesForGroupVersion))
     		for _, gvs := range internalGroupVersions {
    -			packageList = append(packageList, groupPackage(internalVersionPackagePath, gvs, boilerplate))
    +			targetList = append(targetList,
    +				groupTarget(internalVersionOutputDir, internalVersionOutputPkg, gvs, boilerplate))
     		}
     	}
     
    -	return packageList
    +	return targetList
     }
     
    -func factoryPackage(basePackage string, boilerplate []byte, groupGoNames, pluralExceptions map[string]string, groupVersions map[string]clientgentypes.GroupVersions, clientSetPackage string,
    -	typesForGroupVersion map[clientgentypes.GroupVersion][]*types.Type) generator.Package {
    -	return &generator.DefaultPackage{
    -		PackageName: filepath.Base(basePackage),
    -		PackagePath: basePackage,
    -		HeaderText:  boilerplate,
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +func factoryTarget(outputDirBase, outputPkgBase string, boilerplate []byte, groupGoNames, pluralExceptions map[string]string, groupVersions map[string]clientgentypes.GroupVersions, clientSetPackage string,
    +	typesForGroupVersion map[clientgentypes.GroupVersion][]*types.Type) generator.Target {
    +	return &generator.SimpleTarget{
    +		PkgName:       path.Base(outputDirBase),
    +		PkgPath:       outputPkgBase,
    +		PkgDir:        outputDirBase,
    +		HeaderComment: boilerplate,
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = append(generators, &factoryGenerator{
    -				DefaultGen: generator.DefaultGen{
    -					OptionalName: "factory",
    +				GoGenerator: generator.GoGenerator{
    +					OutputFilename: "factory.go",
     				},
    -				outputPackage:             basePackage,
    -				imports:                   generator.NewImportTracker(),
    +				outputPackage:             outputPkgBase,
    +				imports:                   generator.NewImportTrackerForPackage(outputPkgBase),
     				groupVersions:             groupVersions,
     				clientSetPackage:          clientSetPackage,
    -				internalInterfacesPackage: packageForInternalInterfaces(basePackage),
    +				internalInterfacesPackage: path.Join(outputPkgBase, subdirForInternalInterfaces),
     				gvGoNames:                 groupGoNames,
     			})
     
     			generators = append(generators, &genericGenerator{
    -				DefaultGen: generator.DefaultGen{
    -					OptionalName: "generic",
    +				GoGenerator: generator.GoGenerator{
    +					OutputFilename: "generic.go",
     				},
    -				outputPackage:        basePackage,
    -				imports:              generator.NewImportTracker(),
    +				outputPackage:        outputPkgBase,
    +				imports:              generator.NewImportTrackerForPackage(outputPkgBase),
     				groupVersions:        groupVersions,
     				pluralExceptions:     pluralExceptions,
     				typesForGroupVersion: typesForGroupVersion,
    @@ -254,20 +273,22 @@ func factoryPackage(basePackage string, boilerplate []byte, groupGoNames, plural
     	}
     }
     
    -func factoryInterfacePackage(basePackage string, boilerplate []byte, clientSetPackage string) generator.Package {
    -	packagePath := packageForInternalInterfaces(basePackage)
    +func factoryInterfaceTarget(outputDirBase, outputPkgBase string, boilerplate []byte, clientSetPackage string) generator.Target {
    +	outputDir := filepath.Join(outputDirBase, subdirForInternalInterfaces)
    +	outputPkg := path.Join(outputPkgBase, subdirForInternalInterfaces)
     
    -	return &generator.DefaultPackage{
    -		PackageName: filepath.Base(packagePath),
    -		PackagePath: packagePath,
    -		HeaderText:  boilerplate,
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +	return &generator.SimpleTarget{
    +		PkgName:       path.Base(outputDir),
    +		PkgPath:       outputPkg,
    +		PkgDir:        outputDir,
    +		HeaderComment: boilerplate,
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = append(generators, &factoryInterfaceGenerator{
    -				DefaultGen: generator.DefaultGen{
    -					OptionalName: "factory_interfaces",
    +				GoGenerator: generator.GoGenerator{
    +					OutputFilename: "factory_interfaces.go",
     				},
    -				outputPackage:    packagePath,
    -				imports:          generator.NewImportTracker(),
    +				outputPackage:    outputPkg,
    +				imports:          generator.NewImportTrackerForPackage(outputPkg),
     				clientSetPackage: clientSetPackage,
     			})
     
    @@ -276,23 +297,25 @@ func factoryInterfacePackage(basePackage string, boilerplate []byte, clientSetPa
     	}
     }
     
    -func groupPackage(basePackage string, groupVersions clientgentypes.GroupVersions, boilerplate []byte) generator.Package {
    -	packagePath := filepath.Join(basePackage, groupVersions.PackageName)
    +func groupTarget(outputDirBase, outputPackageBase string, groupVersions clientgentypes.GroupVersions, boilerplate []byte) generator.Target {
    +	outputDir := filepath.Join(outputDirBase, groupVersions.PackageName)
    +	outputPkg := path.Join(outputPackageBase, groupVersions.PackageName)
     	groupPkgName := strings.Split(string(groupVersions.PackageName), ".")[0]
     
    -	return &generator.DefaultPackage{
    -		PackageName: groupPkgName,
    -		PackagePath: packagePath,
    -		HeaderText:  boilerplate,
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +	return &generator.SimpleTarget{
    +		PkgName:       groupPkgName,
    +		PkgPath:       outputPkg,
    +		PkgDir:        outputDir,
    +		HeaderComment: boilerplate,
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = append(generators, &groupInterfaceGenerator{
    -				DefaultGen: generator.DefaultGen{
    -					OptionalName: "interface",
    +				GoGenerator: generator.GoGenerator{
    +					OutputFilename: "interface.go",
     				},
    -				outputPackage:             packagePath,
    +				outputPackage:             outputPkg,
     				groupVersions:             groupVersions,
    -				imports:                   generator.NewImportTracker(),
    -				internalInterfacesPackage: packageForInternalInterfaces(basePackage),
    +				imports:                   generator.NewImportTrackerForPackage(outputPkg),
    +				internalInterfacesPackage: path.Join(outputPackageBase, subdirForInternalInterfaces),
     			})
     			return generators
     		},
    @@ -303,38 +326,41 @@ func groupPackage(basePackage string, groupVersions clientgentypes.GroupVersions
     	}
     }
     
    -func versionPackage(basePackage string, groupPkgName string, gv clientgentypes.GroupVersion, groupGoName string, boilerplate []byte, typesToGenerate []*types.Type, clientSetPackage, listersPackage string) generator.Package {
    -	packagePath := filepath.Join(basePackage, groupPkgName, strings.ToLower(gv.Version.NonEmpty()))
    -
    -	return &generator.DefaultPackage{
    -		PackageName: strings.ToLower(gv.Version.NonEmpty()),
    -		PackagePath: packagePath,
    -		HeaderText:  boilerplate,
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +func versionTarget(outputDirBase, outputPkgBase string, groupPkgName string, gv clientgentypes.GroupVersion, groupGoName string, boilerplate []byte, typesToGenerate []*types.Type, clientSetPackage, listersPackage string) generator.Target {
    +	subdir := []string{groupPkgName, strings.ToLower(gv.Version.NonEmpty())}
    +	outputDir := filepath.Join(outputDirBase, filepath.Join(subdir...))
    +	outputPkg := path.Join(outputPkgBase, path.Join(subdir...))
    +
    +	return &generator.SimpleTarget{
    +		PkgName:       strings.ToLower(gv.Version.NonEmpty()),
    +		PkgPath:       outputPkg,
    +		PkgDir:        outputDir,
    +		HeaderComment: boilerplate,
    +		GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     			generators = append(generators, &versionInterfaceGenerator{
    -				DefaultGen: generator.DefaultGen{
    -					OptionalName: "interface",
    +				GoGenerator: generator.GoGenerator{
    +					OutputFilename: "interface.go",
     				},
    -				outputPackage:             packagePath,
    -				imports:                   generator.NewImportTracker(),
    +				outputPackage:             outputPkg,
    +				imports:                   generator.NewImportTrackerForPackage(outputPkg),
     				types:                     typesToGenerate,
    -				internalInterfacesPackage: packageForInternalInterfaces(basePackage),
    +				internalInterfacesPackage: path.Join(outputPkgBase, subdirForInternalInterfaces),
     			})
     
     			for _, t := range typesToGenerate {
     				generators = append(generators, &informerGenerator{
    -					DefaultGen: generator.DefaultGen{
    -						OptionalName: strings.ToLower(t.Name.Name),
    +					GoGenerator: generator.GoGenerator{
    +						OutputFilename: strings.ToLower(t.Name.Name) + ".go",
     					},
    -					outputPackage:             packagePath,
    +					outputPackage:             outputPkg,
     					groupPkgName:              groupPkgName,
     					groupVersion:              gv,
     					groupGoName:               groupGoName,
     					typeToGenerate:            t,
    -					imports:                   generator.NewImportTracker(),
    +					imports:                   generator.NewImportTrackerForPackage(outputPkg),
     					clientSetPackage:          clientSetPackage,
     					listersPackage:            listersPackage,
    -					internalInterfacesPackage: packageForInternalInterfaces(basePackage),
    +					internalInterfacesPackage: path.Join(outputPkgBase, subdirForInternalInterfaces),
     				})
     			}
     			return generators
    diff --git a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/types.go b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/types.go
    index fc1f7786f663..b717adfd3ec5 100644
    --- a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/types.go
    +++ b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/types.go
    @@ -16,7 +16,7 @@ limitations under the License.
     
     package generators
     
    -import "k8s.io/gengo/types"
    +import "k8s.io/gengo/v2/types"
     
     var (
     	apiScheme                   = types.Name{Package: "k8s.io/kubernetes/pkg/api/legacyscheme", Name: "Scheme"}
    @@ -29,6 +29,8 @@ var (
     	cacheNewSharedIndexInformer = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "NewSharedIndexInformer"}
     	cacheSharedIndexInformer    = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "SharedIndexInformer"}
     	cacheTransformFunc          = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "TransformFunc"}
    +	contextTODOFunc             = types.Name{Package: "context", Name: "TODO"}
    +	fmtErrorfFunc               = types.Name{Package: "fmt", Name: "Errorf"}
     	listOptions                 = types.Name{Package: "k8s.io/kubernetes/pkg/apis/core", Name: "ListOptions"}
     	reflectType                 = types.Name{Package: "reflect", Name: "Type"}
     	runtimeObject               = types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "Object"}
    diff --git a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/versioninterface.go b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/versioninterface.go
    index 3b51f8dc826d..5f9a0c218d60 100644
    --- a/vendor/k8s.io/code-generator/cmd/informer-gen/generators/versioninterface.go
    +++ b/vendor/k8s.io/code-generator/cmd/informer-gen/generators/versioninterface.go
    @@ -19,16 +19,16 @@ package generators
     import (
     	"io"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     )
     
     // versionInterfaceGenerator generates the per-version interface file.
     type versionInterfaceGenerator struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage             string
     	imports                   namer.ImportTracker
     	types                     []*types.Type
    diff --git a/vendor/k8s.io/code-generator/cmd/informer-gen/main.go b/vendor/k8s.io/code-generator/cmd/informer-gen/main.go
    index 1247c35b37aa..b0fc48517bfb 100644
    --- a/vendor/k8s.io/code-generator/cmd/informer-gen/main.go
    +++ b/vendor/k8s.io/code-generator/cmd/informer-gen/main.go
    @@ -20,39 +20,38 @@ import (
     	"flag"
     
     	"github.com/spf13/pflag"
    +	"k8s.io/code-generator/cmd/informer-gen/args"
     	"k8s.io/code-generator/cmd/informer-gen/generators"
     	"k8s.io/code-generator/pkg/util"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
     	"k8s.io/klog/v2"
    -
    -	generatorargs "k8s.io/code-generator/cmd/informer-gen/args"
     )
     
     func main() {
     	klog.InitFlags(nil)
    -	genericArgs, customArgs := generatorargs.NewDefaults()
    -
    -	// Override defaults.
    -	// TODO: move out of informer-gen
    -	genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/informers/informers_generated"
    -	customArgs.VersionedClientSetPackage = "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
    -	customArgs.InternalClientSetPackage = "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
    -	customArgs.ListersPackage = "k8s.io/kubernetes/pkg/client/listers"
    +	args := args.New()
     
    -	genericArgs.AddFlags(pflag.CommandLine)
    -	customArgs.AddFlags(pflag.CommandLine)
    +	args.AddFlags(pflag.CommandLine)
     	flag.Set("logtostderr", "true")
     	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
     	pflag.Parse()
     
    -	if err := generatorargs.Validate(genericArgs); err != nil {
    +	if err := args.Validate(); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
     
    +	myTargets := func(context *generator.Context) []generator.Target {
    +		return generators.GetTargets(context, args)
    +	}
    +
     	// Run it.
    -	if err := genericArgs.Execute(
    -		generators.NameSystems(util.PluralExceptionListToMapOrDie(customArgs.PluralExceptions)),
    +	if err := gengo.Execute(
    +		generators.NameSystems(util.PluralExceptionListToMapOrDie(args.PluralExceptions)),
     		generators.DefaultNameSystem(),
    -		generators.Packages,
    +		myTargets,
    +		gengo.StdBuildTag,
    +		pflag.Args(),
     	); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/lister-gen/args/args.go b/vendor/k8s.io/code-generator/cmd/lister-gen/args/args.go
    index 170334505abc..e6b9e00ab924 100644
    --- a/vendor/k8s.io/code-generator/cmd/lister-gen/args/args.go
    +++ b/vendor/k8s.io/code-generator/cmd/lister-gen/args/args.go
    @@ -18,47 +18,45 @@ package args
     
     import (
     	"fmt"
    -	"path"
     
     	"github.com/spf13/pflag"
    -	codegenutil "k8s.io/code-generator/pkg/util"
    -	"k8s.io/gengo/args"
     )
     
    -// CustomArgs is used by the gengo framework to pass args specific to this generator.
    -type CustomArgs struct {
    +// Args is used by the gengo framework to pass args specific to this generator.
    +type Args struct {
    +	OutputDir    string // must be a directory path
    +	OutputPkg    string // must be a Go import-path
    +	GoHeaderFile string
    +
     	// PluralExceptions specify list of exceptions used when pluralizing certain types.
     	// For example 'Endpoints:Endpoints', otherwise the pluralizer will generate 'Endpointes'.
     	PluralExceptions []string
     }
     
    -// NewDefaults returns default arguments for the generator.
    -func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
    -	genericArgs := args.Default().WithoutDefaultFlagParsing()
    -	customArgs := &CustomArgs{
    -		PluralExceptions: []string{"Endpoints:Endpoints"},
    -	}
    -	genericArgs.CustomArgs = customArgs
    -
    -	if pkg := codegenutil.CurrentPackage(); len(pkg) != 0 {
    -		genericArgs.OutputPackagePath = path.Join(pkg, "pkg/client/listers")
    -	}
    -
    -	return genericArgs, customArgs
    +// New returns default arguments for the generator.
    +func New() *Args {
    +	return &Args{}
     }
     
     // AddFlags add the generator flags to the flag set.
    -func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) {
    -	fs.StringSliceVar(&ca.PluralExceptions, "plural-exceptions", ca.PluralExceptions, "list of comma separated plural exception definitions in Type:PluralizedType format")
    +func (args *Args) AddFlags(fs *pflag.FlagSet) {
    +	fs.StringVar(&args.OutputDir, "output-dir", "",
    +		"the base directory under which to generate results")
    +	fs.StringVar(&args.OutputPkg, "output-pkg", "",
    +		"the base Go import-path under which to generate results")
    +	fs.StringSliceVar(&args.PluralExceptions, "plural-exceptions", args.PluralExceptions,
    +		"list of comma separated plural exception definitions in Type:PluralizedType format")
    +	fs.StringVar(&args.GoHeaderFile, "go-header-file", "",
    +		"the path to a file containing boilerplate header text; the string \"YEAR\" will be replaced with the current 4-digit year")
     }
     
     // Validate checks the given arguments.
    -func Validate(genericArgs *args.GeneratorArgs) error {
    -	_ = genericArgs.CustomArgs.(*CustomArgs)
    -
    -	if len(genericArgs.OutputPackagePath) == 0 {
    -		return fmt.Errorf("output package cannot be empty")
    +func (args *Args) Validate() error {
    +	if len(args.OutputDir) == 0 {
    +		return fmt.Errorf("--output-dir must be specified")
    +	}
    +	if len(args.OutputPkg) == 0 {
    +		return fmt.Errorf("--output-pkg must be specified")
     	}
    -
     	return nil
     }
    diff --git a/vendor/k8s.io/code-generator/cmd/lister-gen/generators/expansion.go b/vendor/k8s.io/code-generator/cmd/lister-gen/generators/expansion.go
    index dd45d7749c7d..4755f2ed1e69 100644
    --- a/vendor/k8s.io/code-generator/cmd/lister-gen/generators/expansion.go
    +++ b/vendor/k8s.io/code-generator/cmd/lister-gen/generators/expansion.go
    @@ -22,17 +22,18 @@ import (
     	"path/filepath"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/types"
    +	"k8s.io/klog/v2"
     
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     )
     
     // expansionGenerator produces a file for a expansion interfaces.
     type expansionGenerator struct {
    -	generator.DefaultGen
    -	packagePath string
    -	types       []*types.Type
    +	generator.GoGenerator
    +	outputPath string
    +	types      []*types.Type
     }
     
     // We only want to call GenerateType() once per group.
    @@ -44,11 +45,16 @@ func (g *expansionGenerator) GenerateType(c *generator.Context, t *types.Type, w
     	sw := generator.NewSnippetWriter(w, c, "$", "$")
     	for _, t := range g.types {
     		tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
    -		if _, err := os.Stat(filepath.Join(g.packagePath, strings.ToLower(t.Name.Name+"_expansion.go"))); os.IsNotExist(err) {
    +		manualFile := filepath.Join(g.outputPath, strings.ToLower(t.Name.Name+"_expansion.go"))
    +		if _, err := os.Stat(manualFile); err == nil {
    +			klog.V(4).Infof("file %q exists, not generating", manualFile)
    +		} else if os.IsNotExist(err) {
     			sw.Do(expansionInterfaceTemplate, t)
     			if !tags.NonNamespaced {
     				sw.Do(namespacedExpansionInterfaceTemplate, t)
     			}
    +		} else {
    +			return err
     		}
     	}
     	return sw.Error()
    diff --git a/vendor/k8s.io/code-generator/cmd/lister-gen/generators/lister.go b/vendor/k8s.io/code-generator/cmd/lister-gen/generators/lister.go
    index 8ada49469031..a5beb2a7f18d 100644
    --- a/vendor/k8s.io/code-generator/cmd/lister-gen/generators/lister.go
    +++ b/vendor/k8s.io/code-generator/cmd/lister-gen/generators/lister.go
    @@ -19,17 +19,17 @@ package generators
     import (
     	"fmt"
     	"io"
    +	"path"
     	"path/filepath"
     	"strings"
     
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    -
     	"k8s.io/code-generator/cmd/client-gen/generators/util"
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    -
    +	"k8s.io/code-generator/cmd/lister-gen/args"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     	"k8s.io/klog/v2"
     )
     
    @@ -59,16 +59,16 @@ func DefaultNameSystem() string {
     	return "public"
     }
     
    -// Packages makes the client package definition.
    -func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	boilerplate, err := arguments.LoadGoBoilerplate()
    +// GetTargets makes the client target definition.
    +func GetTargets(context *generator.Context, args *args.Args) []generator.Target {
    +	boilerplate, err := gengo.GoBoilerplate(args.GoHeaderFile, "", gengo.StdGeneratedBy)
     	if err != nil {
     		klog.Fatalf("Failed loading boilerplate: %v", err)
     	}
     
    -	var packageList generator.Packages
    -	for _, inputDir := range arguments.InputDirs {
    -		p := context.Universe.Package(inputDir)
    +	var targetList []generator.Target
    +	for _, inputPkg := range context.Inputs {
    +		p := context.Universe.Package(inputPkg)
     
     		objectMeta, internal, err := objectMetaForPackage(p)
     		if err != nil {
    @@ -101,7 +101,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     		// If there's a comment of the form "// +groupName=somegroup" or
     		// "// +groupName=somegroup.foo.bar.io", use the first field (somegroup) as the name of the
     		// group when generating.
    -		if override := types.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
    +		if override := gengo.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
     			gv.Group = clientgentypes.Group(strings.SplitN(override[0], ".", 2)[0])
     		}
     
    @@ -119,43 +119,46 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     		orderer := namer.Orderer{Namer: namer.NewPrivateNamer(0)}
     		typesToGenerate = orderer.OrderTypes(typesToGenerate)
     
    -		packagePath := filepath.Join(arguments.OutputPackagePath, groupPackageName, strings.ToLower(gv.Version.NonEmpty()))
    -		packageList = append(packageList, &generator.DefaultPackage{
    -			PackageName: strings.ToLower(gv.Version.NonEmpty()),
    -			PackagePath: packagePath,
    -			HeaderText:  boilerplate,
    -			GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +		subdir := []string{groupPackageName, strings.ToLower(gv.Version.NonEmpty())}
    +		outputDir := filepath.Join(args.OutputDir, filepath.Join(subdir...))
    +		outputPkg := path.Join(args.OutputPkg, path.Join(subdir...))
    +		targetList = append(targetList, &generator.SimpleTarget{
    +			PkgName:       strings.ToLower(gv.Version.NonEmpty()),
    +			PkgPath:       outputPkg,
    +			PkgDir:        outputDir,
    +			HeaderComment: boilerplate,
    +			FilterFunc: func(c *generator.Context, t *types.Type) bool {
    +				tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
    +				return tags.GenerateClient && tags.HasVerb("list") && tags.HasVerb("get")
    +			},
    +			GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     				generators = append(generators, &expansionGenerator{
    -					DefaultGen: generator.DefaultGen{
    -						OptionalName: "expansion_generated",
    +					GoGenerator: generator.GoGenerator{
    +						OutputFilename: "expansion_generated.go",
     					},
    -					packagePath: filepath.Join(arguments.OutputBase, packagePath),
    -					types:       typesToGenerate,
    +					outputPath: outputDir,
    +					types:      typesToGenerate,
     				})
     
     				for _, t := range typesToGenerate {
     					generators = append(generators, &listerGenerator{
    -						DefaultGen: generator.DefaultGen{
    -							OptionalName: strings.ToLower(t.Name.Name),
    +						GoGenerator: generator.GoGenerator{
    +							OutputFilename: strings.ToLower(t.Name.Name) + ".go",
     						},
    -						outputPackage:  arguments.OutputPackagePath,
    +						outputPackage:  outputPkg,
     						groupVersion:   gv,
     						internalGVPkg:  internalGVPkg,
     						typeToGenerate: t,
    -						imports:        generator.NewImportTracker(),
    +						imports:        generator.NewImportTrackerForPackage(outputPkg),
     						objectMeta:     objectMeta,
     					})
     				}
     				return generators
     			},
    -			FilterFunc: func(c *generator.Context, t *types.Type) bool {
    -				tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
    -				return tags.GenerateClient && tags.HasVerb("list") && tags.HasVerb("get")
    -			},
     		})
     	}
     
    -	return packageList
    +	return targetList
     }
     
     // objectMetaForPackage returns the type of ObjectMeta used by package p.
    @@ -187,7 +190,7 @@ func isInternal(m types.Member) bool {
     // listerGenerator produces a file of listers for a given GroupVersion and
     // type.
     type listerGenerator struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage  string
     	groupVersion   clientgentypes.GroupVersion
     	internalGVPkg  string
    @@ -210,10 +213,6 @@ func (g *listerGenerator) Namers(c *generator.Context) namer.NameSystems {
     
     func (g *listerGenerator) Imports(c *generator.Context) (imports []string) {
     	imports = append(imports, g.imports.ImportLines()...)
    -	imports = append(imports, "k8s.io/apimachinery/pkg/api/errors")
    -	imports = append(imports, "k8s.io/apimachinery/pkg/labels")
    -	// for Indexer
    -	imports = append(imports, "k8s.io/client-go/tools/cache")
     	return
     }
     
    @@ -222,9 +221,14 @@ func (g *listerGenerator) GenerateType(c *generator.Context, t *types.Type, w io
     
     	klog.V(5).Infof("processing type %v", t)
     	m := map[string]interface{}{
    -		"Resource":   c.Universe.Function(types.Name{Package: t.Name.Package, Name: "Resource"}),
    -		"type":       t,
    -		"objectMeta": g.objectMeta,
    +		"Resource":               c.Universe.Function(types.Name{Package: t.Name.Package, Name: "Resource"}),
    +		"labelsSelector":         c.Universe.Function(types.Name{Package: "k8s.io/apimachinery/pkg/labels", Name: "Selector"}),
    +		"listersResourceIndexer": c.Universe.Function(types.Name{Package: "k8s.io/client-go/listers", Name: "ResourceIndexer"}),
    +		"listersNew":             c.Universe.Function(types.Name{Package: "k8s.io/client-go/listers", Name: "New"}),
    +		"listersNewNamespaced":   c.Universe.Function(types.Name{Package: "k8s.io/client-go/listers", Name: "NewNamespaced"}),
    +		"cacheIndexer":           c.Universe.Type(types.Name{Package: "k8s.io/client-go/tools/cache", Name: "Indexer"}),
    +		"type":                   t,
    +		"objectMeta":             g.objectMeta,
     	}
     
     	tags, err := util.ParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
    @@ -233,25 +237,21 @@ func (g *listerGenerator) GenerateType(c *generator.Context, t *types.Type, w io
     	}
     
     	if tags.NonNamespaced {
    -		sw.Do(typeListerInterface_NonNamespaced, m)
    +		sw.Do(typeListerInterfaceNonNamespaced, m)
     	} else {
     		sw.Do(typeListerInterface, m)
     	}
     
     	sw.Do(typeListerStruct, m)
     	sw.Do(typeListerConstructor, m)
    -	sw.Do(typeLister_List, m)
     
     	if tags.NonNamespaced {
    -		sw.Do(typeLister_NonNamespacedGet, m)
     		return sw.Error()
     	}
     
    -	sw.Do(typeLister_NamespaceLister, m)
    +	sw.Do(typeListerNamespaceLister, m)
     	sw.Do(namespaceListerInterface, m)
     	sw.Do(namespaceListerStruct, m)
    -	sw.Do(namespaceLister_List, m)
    -	sw.Do(namespaceLister_Get, m)
     
     	return sw.Error()
     }
    @@ -262,20 +262,20 @@ var typeListerInterface = `
     type $.type|public$Lister interface {
     	// List lists all $.type|publicPlural$ in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*$.type|raw$, err error)
    +	List(selector $.labelsSelector|raw$) (ret []*$.type|raw$, err error)
     	// $.type|publicPlural$ returns an object that can list and get $.type|publicPlural$.
     	$.type|publicPlural$(namespace string) $.type|public$NamespaceLister
     	$.type|public$ListerExpansion
     }
     `
     
    -var typeListerInterface_NonNamespaced = `
    +var typeListerInterfaceNonNamespaced = `
     // $.type|public$Lister helps list $.type|publicPlural$.
     // All objects returned here must be treated as read-only.
     type $.type|public$Lister interface {
     	// List lists all $.type|publicPlural$ in the indexer.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*$.type|raw$, err error)
    +	List(selector $.labelsSelector|raw$) (ret []*$.type|raw$, err error)
     	// Get retrieves the $.type|public$ from the index for a given name.
     	// Objects returned here must be treated as read-only.
     	Get(name string) (*$.type|raw$, error)
    @@ -283,48 +283,27 @@ type $.type|public$Lister interface {
     }
     `
     
    +// This embeds a typed resource indexer instead of aliasing, so that the struct
    +// is available as a receiver for methods specific to the generated type
    +// (from the corresponding expansion interface).
     var typeListerStruct = `
     // $.type|private$Lister implements the $.type|public$Lister interface.
     type $.type|private$Lister struct {
    -	indexer cache.Indexer
    +	$.listersResourceIndexer|raw$[*$.type|raw$]
     }
     `
     
     var typeListerConstructor = `
     // New$.type|public$Lister returns a new $.type|public$Lister.
    -func New$.type|public$Lister(indexer cache.Indexer) $.type|public$Lister {
    -	return &$.type|private$Lister{indexer: indexer}
    -}
    -`
    -
    -var typeLister_List = `
    -// List lists all $.type|publicPlural$ in the indexer.
    -func (s *$.type|private$Lister) List(selector labels.Selector) (ret []*$.type|raw$, err error) {
    -	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
    -		ret = append(ret, m.(*$.type|raw$))
    -	})
    -	return ret, err
    +func New$.type|public$Lister(indexer $.cacheIndexer|raw$) $.type|public$Lister {
    +	return &$.type|private$Lister{$.listersNew|raw$[*$.type|raw$](indexer, $.Resource|raw$("$.type|lowercaseSingular$"))}
     }
     `
     
    -var typeLister_NamespaceLister = `
    +var typeListerNamespaceLister = `
     // $.type|publicPlural$ returns an object that can list and get $.type|publicPlural$.
     func (s *$.type|private$Lister) $.type|publicPlural$(namespace string) $.type|public$NamespaceLister {
    -	return $.type|private$NamespaceLister{indexer: s.indexer, namespace: namespace}
    -}
    -`
    -
    -var typeLister_NonNamespacedGet = `
    -// Get retrieves the $.type|public$ from the index for a given name.
    -func (s *$.type|private$Lister) Get(name string) (*$.type|raw$, error) {
    -  obj, exists, err := s.indexer.GetByKey(name)
    -  if err != nil {
    -    return nil, err
    -  }
    -  if !exists {
    -    return nil, errors.NewNotFound($.Resource|raw$("$.type|lowercaseSingular$"), name)
    -  }
    -  return obj.(*$.type|raw$), nil
    +	return $.type|private$NamespaceLister{$.listersNewNamespaced|raw$[*$.type|raw$](s.ResourceIndexer, namespace)}
     }
     `
     
    @@ -334,7 +313,7 @@ var namespaceListerInterface = `
     type $.type|public$NamespaceLister interface {
     	// List lists all $.type|publicPlural$ in the indexer for a given namespace.
     	// Objects returned here must be treated as read-only.
    -	List(selector labels.Selector) (ret []*$.type|raw$, err error)
    +	List(selector $.labelsSelector|raw$) (ret []*$.type|raw$, err error)
     	// Get retrieves the $.type|public$ from the indexer for a given namespace and name.
     	// Objects returned here must be treated as read-only.
     	Get(name string) (*$.type|raw$, error)
    @@ -342,35 +321,13 @@ type $.type|public$NamespaceLister interface {
     }
     `
     
    +// This embeds a typed namespaced resource indexer instead of aliasing, so that the struct
    +// is available as a receiver for methods specific to the generated type
    +// (from the corresponding expansion interface).
     var namespaceListerStruct = `
     // $.type|private$NamespaceLister implements the $.type|public$NamespaceLister
     // interface.
     type $.type|private$NamespaceLister struct {
    -	indexer cache.Indexer
    -	namespace string
    -}
    -`
    -
    -var namespaceLister_List = `
    -// List lists all $.type|publicPlural$ in the indexer for a given namespace.
    -func (s $.type|private$NamespaceLister) List(selector labels.Selector) (ret []*$.type|raw$, err error) {
    -	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
    -		ret = append(ret, m.(*$.type|raw$))
    -	})
    -	return ret, err
    -}
    -`
    -
    -var namespaceLister_Get = `
    -// Get retrieves the $.type|public$ from the indexer for a given namespace and name.
    -func (s $.type|private$NamespaceLister) Get(name string) (*$.type|raw$, error) {
    -	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
    -	if err != nil {
    -		return nil, err
    -	}
    -	if !exists {
    -		return nil, errors.NewNotFound($.Resource|raw$("$.type|lowercaseSingular$"), name)
    -	}
    -	return obj.(*$.type|raw$), nil
    +	$.listersResourceIndexer|raw$[*$.type|raw$]
     }
     `
    diff --git a/vendor/k8s.io/code-generator/cmd/lister-gen/main.go b/vendor/k8s.io/code-generator/cmd/lister-gen/main.go
    index a7d7b610878f..8dde18bab98d 100644
    --- a/vendor/k8s.io/code-generator/cmd/lister-gen/main.go
    +++ b/vendor/k8s.io/code-generator/cmd/lister-gen/main.go
    @@ -20,36 +20,38 @@ import (
     	"flag"
     
     	"github.com/spf13/pflag"
    +	"k8s.io/code-generator/cmd/lister-gen/args"
     	"k8s.io/code-generator/cmd/lister-gen/generators"
     	"k8s.io/code-generator/pkg/util"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
     	"k8s.io/klog/v2"
    -
    -	generatorargs "k8s.io/code-generator/cmd/lister-gen/args"
     )
     
     func main() {
     	klog.InitFlags(nil)
    -	genericArgs, customArgs := generatorargs.NewDefaults()
    -
    -	// Override defaults.
    -	// TODO: move this out of lister-gen
    -	genericArgs.OutputPackagePath = "k8s.io/kubernetes/pkg/client/listers"
    +	args := args.New()
     
    -	genericArgs.AddFlags(pflag.CommandLine)
    -	customArgs.AddFlags(pflag.CommandLine)
    +	args.AddFlags(pflag.CommandLine)
     	flag.Set("logtostderr", "true")
     	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
     	pflag.Parse()
     
    -	if err := generatorargs.Validate(genericArgs); err != nil {
    +	if err := args.Validate(); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
     
    +	myTargets := func(context *generator.Context) []generator.Target {
    +		return generators.GetTargets(context, args)
    +	}
    +
     	// Run it.
    -	if err := genericArgs.Execute(
    -		generators.NameSystems(util.PluralExceptionListToMapOrDie(customArgs.PluralExceptions)),
    +	if err := gengo.Execute(
    +		generators.NameSystems(util.PluralExceptionListToMapOrDie(args.PluralExceptions)),
     		generators.DefaultNameSystem(),
    -		generators.Packages,
    +		myTargets,
    +		gengo.StdBuildTag,
    +		pflag.Args(),
     	); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/openapi-gen/main.go b/vendor/k8s.io/code-generator/cmd/openapi-gen/main.go
    deleted file mode 100644
    index c446e80b8a02..000000000000
    --- a/vendor/k8s.io/code-generator/cmd/openapi-gen/main.go
    +++ /dev/null
    @@ -1,57 +0,0 @@
    -/*
    -Copyright 2018 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// This package generates openAPI definition file to be used in open API spec generation on API servers. To generate
    -// definition for a specific type or package add "+k8s:openapi-gen=true" tag to the type/package comment lines. To
    -// exclude a type from a tagged package, add "+k8s:openapi-gen=false" tag to the type comment lines.
    -
    -package main
    -
    -import (
    -	"flag"
    -	"log"
    -
    -	generatorargs "k8s.io/kube-openapi/cmd/openapi-gen/args"
    -	"k8s.io/kube-openapi/pkg/generators"
    -
    -	"github.com/spf13/pflag"
    -
    -	"k8s.io/klog/v2"
    -)
    -
    -func main() {
    -	klog.InitFlags(nil)
    -	genericArgs, customArgs := generatorargs.NewDefaults()
    -
    -	genericArgs.AddFlags(pflag.CommandLine)
    -	customArgs.AddFlags(pflag.CommandLine)
    -	flag.Set("logtostderr", "true")
    -	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
    -	pflag.Parse()
    -
    -	if err := generatorargs.Validate(genericArgs); err != nil {
    -		log.Fatalf("Arguments validation error: %v", err)
    -	}
    -
    -	// Generates the code for the OpenAPIDefinitions.
    -	if err := genericArgs.Execute(
    -		generators.NameSystems(),
    -		generators.DefaultNameSystem(),
    -		generators.Packages,
    -	); err != nil {
    -		log.Fatalf("OpenAPI code generation error: %v", err)
    -	}
    -}
    diff --git a/vendor/k8s.io/code-generator/cmd/register-gen/args/args.go b/vendor/k8s.io/code-generator/cmd/register-gen/args/args.go
    index 2e3ab084e201..cc1fdafc83dc 100644
    --- a/vendor/k8s.io/code-generator/cmd/register-gen/args/args.go
    +++ b/vendor/k8s.io/code-generator/cmd/register-gen/args/args.go
    @@ -19,19 +19,30 @@ package args
     import (
     	"fmt"
     
    -	"k8s.io/gengo/args"
    +	"github.com/spf13/pflag"
     )
     
    -// NewDefaults returns default arguments for the generator.
    -func NewDefaults() *args.GeneratorArgs {
    -	genericArgs := args.Default().WithoutDefaultFlagParsing()
    -	genericArgs.OutputFileBaseName = "zz_generated.register"
    -	return genericArgs
    +type Args struct {
    +	OutputFile   string
    +	GoHeaderFile string
    +}
    +
    +// New returns default arguments for the generator.
    +func New() *Args {
    +	return &Args{}
    +}
    +
    +// AddFlags add the generator flags to the flag set.
    +func (args *Args) AddFlags(fs *pflag.FlagSet) {
    +	fs.StringVar(&args.OutputFile, "output-file", "generated.register.go",
    +		"the name of the file to be generated")
    +	fs.StringVar(&args.GoHeaderFile, "go-header-file", "",
    +		"the path to a file containing boilerplate header text; the string \"YEAR\" will be replaced with the current 4-digit year")
     }
     
     // Validate checks the given arguments.
    -func Validate(genericArgs *args.GeneratorArgs) error {
    -	if len(genericArgs.OutputFileBaseName) == 0 {
    +func (args *Args) Validate() error {
    +	if len(args.OutputFile) == 0 {
     		return fmt.Errorf("output file base name cannot be empty")
     	}
     
    diff --git a/vendor/k8s.io/code-generator/cmd/register-gen/generators/register_external.go b/vendor/k8s.io/code-generator/cmd/register-gen/generators/register_external.go
    index c831c575d6d6..7eb7793e4087 100644
    --- a/vendor/k8s.io/code-generator/cmd/register-gen/generators/register_external.go
    +++ b/vendor/k8s.io/code-generator/cmd/register-gen/generators/register_external.go
    @@ -21,13 +21,13 @@ import (
     	"sort"
     
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     type registerExternalGenerator struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	outputPackage   string
     	gv              clientgentypes.GroupVersion
     	typesToGenerate []*types.Type
    @@ -91,7 +91,7 @@ var (
     	// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
     	SchemeBuilder      runtime.SchemeBuilder
     	localSchemeBuilder = &SchemeBuilder
    -    // Depreciated: use Install instead
    +    // Deprecated: use Install instead
     	AddToScheme        = localSchemeBuilder.AddToScheme
     	Install            = localSchemeBuilder.AddToScheme
     )
    diff --git a/vendor/k8s.io/code-generator/cmd/register-gen/generators/packages.go b/vendor/k8s.io/code-generator/cmd/register-gen/generators/targets.go
    similarity index 73%
    rename from vendor/k8s.io/code-generator/cmd/register-gen/generators/packages.go
    rename to vendor/k8s.io/code-generator/cmd/register-gen/generators/targets.go
    index fa8e3f1c356c..952e276f7b5f 100644
    --- a/vendor/k8s.io/code-generator/cmd/register-gen/generators/packages.go
    +++ b/vendor/k8s.io/code-generator/cmd/register-gen/generators/targets.go
    @@ -25,10 +25,11 @@ import (
     	"k8s.io/klog/v2"
     
     	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/code-generator/cmd/register-gen/args"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     // NameSystems returns the name system used by the generators in this package.
    @@ -42,29 +43,29 @@ func DefaultNameSystem() string {
     	return "public"
     }
     
    -// Packages makes packages to generate.
    -func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	boilerplate, err := arguments.LoadGoBoilerplate()
    +// GetTargets makes targets to generate.
    +func GetTargets(context *generator.Context, args *args.Args) []generator.Target {
    +	boilerplate, err := gengo.GoBoilerplate(args.GoHeaderFile, gengo.StdBuildTag, gengo.StdGeneratedBy)
     	if err != nil {
     		klog.Fatalf("Failed loading boilerplate: %v", err)
     	}
     
    -	packages := generator.Packages{}
    -	for _, inputDir := range arguments.InputDirs {
    -		pkg := context.Universe.Package(inputDir)
    +	targets := []generator.Target{}
    +	for _, input := range context.Inputs {
    +		pkg := context.Universe.Package(input)
     		internal, err := isInternal(pkg)
     		if err != nil {
    -			klog.V(5).Infof("skipping the generation of %s file, due to err %v", arguments.OutputFileBaseName, err)
    +			klog.V(5).Infof("skipping the generation of %s file, due to err %v", args.OutputFile, err)
     			continue
     		}
     		if internal {
    -			klog.V(5).Infof("skipping the generation of %s file because %s package contains internal types, note that internal types don't have \"json\" tags", arguments.OutputFileBaseName, pkg.Name)
    +			klog.V(5).Infof("skipping the generation of %s file because %s package contains internal types, note that internal types don't have \"json\" tags", args.OutputFile, pkg.Name)
     			continue
     		}
     		registerFileName := "register.go"
    -		searchPath := path.Join(args.DefaultSourceTree(), inputDir, registerFileName)
    +		searchPath := path.Join(pkg.Dir, registerFileName)
     		if _, err := os.Stat(path.Join(searchPath)); err == nil {
    -			klog.V(5).Infof("skipping the generation of %s file because %s already exists in the path %s", arguments.OutputFileBaseName, registerFileName, searchPath)
    +			klog.V(5).Infof("skipping the generation of %s file because %s already exists in the path %s", args.OutputFile, registerFileName, searchPath)
     			continue
     		} else if err != nil && !os.IsNotExist(err) {
     			klog.Fatalf("an error %v has occurred while checking if %s exists", err, registerFileName)
    @@ -82,7 +83,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     
     			// if there is a comment of the form "// +groupName=somegroup" or "// +groupName=somegroup.foo.bar.io",
     			// extract the fully qualified API group name from it and overwrite the group inferred from the package path
    -			if override := types.ExtractCommentTags("+", pkg.Comments)["groupName"]; override != nil {
    +			if override := gengo.ExtractCommentTags("+", pkg.Comments)["groupName"]; override != nil {
     				groupName := override[0]
     				klog.V(5).Infof("overriding the group name with = %s", groupName)
     				gv.Group = clientgentypes.Group(groupName)
    @@ -99,28 +100,29 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
     			}
     		}
     
    -		packages = append(packages,
    -			&generator.DefaultPackage{
    -				PackageName: pkg.Name,
    -				PackagePath: pkg.Path,
    -				HeaderText:  boilerplate,
    -				GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +		targets = append(targets,
    +			&generator.SimpleTarget{
    +				PkgName:       pkg.Name,
    +				PkgPath:       pkg.Path, // output to same pkg as input
    +				PkgDir:        pkg.Dir,  // output to same pkg as input
    +				HeaderComment: boilerplate,
    +				GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     					return []generator.Generator{
     						®isterExternalGenerator{
    -							DefaultGen: generator.DefaultGen{
    -								OptionalName: arguments.OutputFileBaseName,
    +							GoGenerator: generator.GoGenerator{
    +								OutputFilename: args.OutputFile,
     							},
     							gv:              gv,
     							typesToGenerate: typesToRegister,
     							outputPackage:   pkg.Path,
    -							imports:         generator.NewImportTracker(),
    +							imports:         generator.NewImportTrackerForPackage(pkg.Path),
     						},
     					}
     				},
     			})
     	}
     
    -	return packages
    +	return targets
     }
     
     // isInternal determines whether the given package
    diff --git a/vendor/k8s.io/code-generator/cmd/register-gen/main.go b/vendor/k8s.io/code-generator/cmd/register-gen/main.go
    index dc29144481bd..ac28f87fb728 100644
    --- a/vendor/k8s.io/code-generator/cmd/register-gen/main.go
    +++ b/vendor/k8s.io/code-generator/cmd/register-gen/main.go
    @@ -20,28 +20,35 @@ import (
     	"flag"
     
     	"github.com/spf13/pflag"
    -	"k8s.io/klog/v2"
    -
    -	generatorargs "k8s.io/code-generator/cmd/register-gen/args"
    +	"k8s.io/code-generator/cmd/register-gen/args"
     	"k8s.io/code-generator/cmd/register-gen/generators"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/klog/v2"
     )
     
     func main() {
     	klog.InitFlags(nil)
    -	genericArgs := generatorargs.NewDefaults()
    -	genericArgs.AddFlags(pflag.CommandLine)
    +	args := args.New()
    +	args.AddFlags(pflag.CommandLine)
     	flag.Set("logtostderr", "true")
     	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
     
     	pflag.Parse()
    -	if err := generatorargs.Validate(genericArgs); err != nil {
    +	if err := args.Validate(); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
     
    -	if err := genericArgs.Execute(
    +	myTargets := func(context *generator.Context) []generator.Target {
    +		return generators.GetTargets(context, args)
    +	}
    +
    +	if err := gengo.Execute(
     		generators.NameSystems(),
     		generators.DefaultNameSystem(),
    -		generators.Packages,
    +		myTargets,
    +		gengo.StdBuildTag,
    +		pflag.Args(),
     	); err != nil {
     		klog.Fatalf("Error: %v", err)
     	}
    diff --git a/vendor/k8s.io/code-generator/cmd/set-gen/.gitignore b/vendor/k8s.io/code-generator/cmd/set-gen/.gitignore
    deleted file mode 100644
    index ffe6458c963c..000000000000
    --- a/vendor/k8s.io/code-generator/cmd/set-gen/.gitignore
    +++ /dev/null
    @@ -1 +0,0 @@
    -set-gen
    diff --git a/vendor/k8s.io/code-generator/cmd/set-gen/main.go b/vendor/k8s.io/code-generator/cmd/set-gen/main.go
    deleted file mode 100644
    index 0968ce762b91..000000000000
    --- a/vendor/k8s.io/code-generator/cmd/set-gen/main.go
    +++ /dev/null
    @@ -1,53 +0,0 @@
    -/*
    -Copyright 2015 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// set-gen is an example usage of gengo.
    -//
    -// Structs in the input directories with the below line in their comments will
    -// have sets generated for them.
    -// // +genset
    -//
    -// Any builtin type referenced anywhere in the input directories will have a
    -// set generated for it.
    -package main
    -
    -import (
    -	"os"
    -
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/examples/set-gen/generators"
    -
    -	"k8s.io/klog/v2"
    -)
    -
    -func main() {
    -	klog.InitFlags(nil)
    -	arguments := args.Default()
    -
    -	// Override defaults.
    -	arguments.InputDirs = []string{"k8s.io/kubernetes/pkg/util/sets/types"}
    -	arguments.OutputPackagePath = "k8s.io/apimachinery/pkg/util/sets"
    -
    -	if err := arguments.Execute(
    -		generators.NameSystems(),
    -		generators.DefaultNameSystem(),
    -		generators.Packages,
    -	); err != nil {
    -		klog.Errorf("Error: %v", err)
    -		os.Exit(1)
    -	}
    -	klog.V(2).Info("Completed successfully.")
    -}
    diff --git a/vendor/k8s.io/code-generator/generate-groups.sh b/vendor/k8s.io/code-generator/generate-groups.sh
    index a21d2184f0b6..65b0abda5a6f 100644
    --- a/vendor/k8s.io/code-generator/generate-groups.sh
    +++ b/vendor/k8s.io/code-generator/generate-groups.sh
    @@ -14,53 +14,7 @@
     # See the License for the specific language governing permissions and
     # limitations under the License.
     
    -set -o errexit
    -set -o nounset
    -set -o pipefail
    -
    -# generate-groups generates everything for a project with external types only, e.g. a project based
    -# on CustomResourceDefinitions.
    -
    -if [ "$#" -lt 4 ] || [ "${1}" == "--help" ]; then
    -  cat <    ...
    -
    -          the generators comma separated to run (deepcopy,defaulter,applyconfiguration,client,lister,informer).
    -      the output package name (e.g. github.com/example/project/pkg/generated).
    -        the external types dir (e.g. github.com/example/api or github.com/example/project/pkg/apis).
    -     the groups and their versions in the format "groupA:v1,v2 groupB:v1 groupC:v2", relative
    -                      to .
    -  ...                 arbitrary flags passed to all generator binaries.
    -
    -
    -Example:
    -  $(basename "$0") \
    -      deepcopy,client \
    -      github.com/example/project/pkg/client \
    -      github.com/example/project/pkg/apis \
    -      "foo:v1 bar:v1alpha1,v1beta1"
    -EOF
    -  exit 0
    -fi
    -
    -GENS="$1"
    -OUTPUT_PKG="$2"
    -APIS_PKG="$3"
    -GROUPS_WITH_VERSIONS="$4"
    -shift 4
    -
    -echo "WARNING: $(basename "$0") is deprecated."
    -echo "WARNING: Please use k8s.io/code-generator/kube_codegen.sh instead."
    +echo "ERROR: $(basename "$0") has been removed."
    +echo "ERROR: Please use k8s.io/code-generator/kube_codegen.sh instead."
     echo
    -
    -if [ "${GENS}" = "all" ] || grep -qw "all" <<<"${GENS}"; then
    -    ALL="applyconfiguration,client,deepcopy,informer,lister"
    -    echo "WARNING: Specifying \"all\" as a generator is deprecated."
    -    echo "WARNING: Please list the specific generators needed."
    -    echo "WARNING: \"all\" is now an alias for \"${ALL}\"; new code generators WILL NOT be added to this set"
    -    echo
    -    GENS="${ALL}"
    -fi
    -
    -INT_APIS_PKG=""
    -exec "$(dirname "${BASH_SOURCE[0]}")/generate-internal-groups.sh" "${GENS}" "${OUTPUT_PKG}" "${INT_APIS_PKG}" "${APIS_PKG}" "${GROUPS_WITH_VERSIONS}" "$@"
    +exit 1
    diff --git a/vendor/k8s.io/code-generator/generate-internal-groups.sh b/vendor/k8s.io/code-generator/generate-internal-groups.sh
    index 9676fac313b6..65b0abda5a6f 100644
    --- a/vendor/k8s.io/code-generator/generate-internal-groups.sh
    +++ b/vendor/k8s.io/code-generator/generate-internal-groups.sh
    @@ -14,259 +14,7 @@
     # See the License for the specific language governing permissions and
     # limitations under the License.
     
    -set -o errexit
    -set -o nounset
    -set -o pipefail
    -
    -# generate-internal-groups generates everything for a project with internal types, e.g. an
    -# user-provided API server based on k8s.io/apiserver.
    -
    -if [ "$#" -lt 5 ] || [ "${1}" == "--help" ]; then
    -  cat <     ...
    -
    -          the generators comma separated to run (applyconfiguration,client,conversion,deepcopy,defaulter,informer,lister,openapi).
    -      the output package name (e.g. github.com/example/project/pkg/generated).
    -    the internal types dir (e.g. github.com/example/project/pkg/apis) or "" if none.
    -    the external types dir (e.g. github.com/example/project/pkg/apis or githubcom/example/apis).
    -     the groups and their versions in the format "groupA:v1,v2 groupB:v1 groupC:v2", relative
    -                      to .
    -  ...                 arbitrary flags passed to all generator binaries.
    -
    -Example:
    -  $(basename "$0") \
    -      deepcopy,defaulter,conversion \
    -      github.com/example/project/pkg/client \
    -      github.com/example/project/pkg/apis \
    -      github.com/example/project/apis \
    -      "foo:v1 bar:v1alpha1,v1beta1"
    -EOF
    -  exit 0
    -fi
    -
    -GENS="$1"
    -OUTPUT_PKG="$2"
    -INT_APIS_PKG="$3"
    -EXT_APIS_PKG="$4"
    -GROUPS_WITH_VERSIONS="$5"
    -shift 5
    -
    -echo "WARNING: $(basename "$0") is deprecated."
    -echo "WARNING: Please use k8s.io/code-generator/kube_codegen.sh instead."
    +echo "ERROR: $(basename "$0") has been removed."
    +echo "ERROR: Please use k8s.io/code-generator/kube_codegen.sh instead."
     echo
    -
    -if [ "${GENS}" = "all" ] || grep -qw "all" <<<"${GENS}"; then
    -    ALL="client,conversion,deepcopy,defaulter,informer,lister,openapi"
    -    echo "WARNING: Specifying \"all\" as a generator is deprecated."
    -    echo "WARNING: Please list the specific generators needed."
    -    echo "WARNING: \"all\" is now an alias for \"${ALL}\"; new code generators WILL NOT be added to this set"
    -    echo
    -    GENS="${ALL}"
    -fi
    -
    -(
    -  # To support running this script from anywhere, first cd into this directory,
    -  # and then install with forced module mode on and fully qualified name.
    -  cd "$(dirname "${0}")"
    -  BINS=(
    -      applyconfiguration-gen
    -      client-gen
    -      conversion-gen
    -      deepcopy-gen
    -      defaulter-gen
    -      informer-gen
    -      lister-gen
    -      openapi-gen
    -  )
    -  # Compile all the tools at once - it's slightly faster but also just simpler.
    -  # shellcheck disable=2046 # printf word-splitting is intentional
    -  GO111MODULE=on go install $(printf "k8s.io/code-generator/cmd/%s " "${BINS[@]}")
    -)
    -
    -# Go installs the above commands to get installed in $GOBIN if defined, and $GOPATH/bin otherwise:
    -GOBIN="$(go env GOBIN)"
    -gobin="${GOBIN:-$(go env GOPATH)/bin}"
    -
    -function git_find() {
    -    # Similar to find but faster and easier to understand.  We want to include
    -    # modified and untracked files because this might be running against code
    -    # which is not tracked by git yet.
    -    git ls-files -cmo --exclude-standard "$@"
    -}
    -
    -function git_grep() {
    -    # We want to include modified and untracked files because this might be
    -    # running against code which is not tracked by git yet.
    -    git grep --untracked "$@"
    -}
    -function codegen::join() { local IFS="$1"; shift; echo "$*"; }
    -
    -# enumerate group versions
    -ALL_FQ_APIS=() # e.g. k8s.io/kubernetes/pkg/apis/apps k8s.io/api/apps/v1
    -EXT_FQ_APIS=() # e.g. k8s.io/api/apps/v1
    -GROUP_VERSIONS=() # e.g. apps/v1
    -for GVs in ${GROUPS_WITH_VERSIONS}; do
    -  IFS=: read -r G Vs <<<"${GVs}"
    -
    -  if [ -n "${INT_APIS_PKG}" ]; then
    -    ALL_FQ_APIS+=("${INT_APIS_PKG}/${G}")
    -  fi
    -
    -  # enumerate versions
    -  for V in ${Vs//,/ }; do
    -    ALL_FQ_APIS+=("${EXT_APIS_PKG}/${G}/${V}")
    -    EXT_FQ_APIS+=("${EXT_APIS_PKG}/${G}/${V}")
    -    GROUP_VERSIONS+=("${G}/${V}")
    -  done
    -done
    -
    -CLIENTSET_PKG="${CLIENTSET_PKG_NAME:-clientset}"
    -CLIENTSET_NAME="${CLIENTSET_NAME_VERSIONED:-versioned}"
    -
    -if grep -qw "deepcopy" <<<"${GENS}"; then
    -  # Nuke existing files
    -  for dir in $(GO111MODULE=on go list -f '{{.Dir}}' "${ALL_FQ_APIS[@]}"); do
    -    pushd "${dir}" >/dev/null
    -    git_find -z ':(glob)**'/zz_generated.deepcopy.go | xargs -0 rm -f
    -    popd >/dev/null
    -  done
    -
    -  echo "Generating deepcopy funcs"
    -  "${gobin}/deepcopy-gen" \
    -      --input-dirs "$(codegen::join , "${ALL_FQ_APIS[@]}")" \
    -      -O zz_generated.deepcopy \
    -      "$@"
    -fi
    -
    -if grep -qw "defaulter" <<<"${GENS}"; then
    -  # Nuke existing files
    -  for dir in $(GO111MODULE=on go list -f '{{.Dir}}' "${ALL_FQ_APIS[@]}"); do
    -    pushd "${dir}" >/dev/null
    -    git_find -z ':(glob)**'/zz_generated.defaults.go | xargs -0 rm -f
    -    popd >/dev/null
    -  done
    -
    -  echo "Generating defaulters"
    -  "${gobin}/defaulter-gen"  \
    -      --input-dirs "$(codegen::join , "${EXT_FQ_APIS[@]}")" \
    -      -O zz_generated.defaults \
    -      "$@"
    -fi
    -
    -if grep -qw "conversion" <<<"${GENS}"; then
    -  # Nuke existing files
    -  for dir in $(GO111MODULE=on go list -f '{{.Dir}}' "${ALL_FQ_APIS[@]}"); do
    -    pushd "${dir}" >/dev/null
    -    git_find -z ':(glob)**'/zz_generated.conversion.go | xargs -0 rm -f
    -    popd >/dev/null
    -  done
    -
    -  echo "Generating conversions"
    -  "${gobin}/conversion-gen" \
    -      --input-dirs "$(codegen::join , "${ALL_FQ_APIS[@]}")" \
    -      -O zz_generated.conversion \
    -      "$@"
    -fi
    -
    -if grep -qw "applyconfiguration" <<<"${GENS}"; then
    -  APPLY_CONFIGURATION_PACKAGE="${OUTPUT_PKG}/${APPLYCONFIGURATION_PKG_NAME:-applyconfiguration}"
    -
    -  # Nuke existing files
    -  root="$(GO111MODULE=on go list -f '{{.Dir}}' "${APPLY_CONFIGURATION_PACKAGE}" 2>/dev/null || true)"
    -  if [ -n "${root}" ]; then
    -    pushd "${root}" >/dev/null
    -    git_grep -l --null \
    -      -e '^// Code generated by applyconfiguration-gen. DO NOT EDIT.$' \
    -      ':(glob)**/*.go' \
    -      | xargs -0 rm -f
    -    popd >/dev/null
    -  fi
    -
    -  echo "Generating apply configuration for ${GROUPS_WITH_VERSIONS} at ${APPLY_CONFIGURATION_PACKAGE}"
    -  "${gobin}/applyconfiguration-gen" \
    -      --input-dirs "$(codegen::join , "${EXT_FQ_APIS[@]}")" \
    -      --output-package "${APPLY_CONFIGURATION_PACKAGE}" \
    -      "$@"
    -fi
    -
    -if grep -qw "client" <<<"${GENS}"; then
    -  # Nuke existing files
    -  root="$(GO111MODULE=on go list -f '{{.Dir}}' "${OUTPUT_PKG}/${CLIENTSET_PKG}/${CLIENTSET_NAME}" 2>/dev/null || true)"
    -  if [ -n "${root}" ]; then
    -    pushd "${root}" >/dev/null
    -    git_grep -l --null \
    -      -e '^// Code generated by client-gen. DO NOT EDIT.$' \
    -      ':(glob)**/*.go' \
    -      | xargs -0 rm -f
    -    popd >/dev/null
    -  fi
    -
    -  echo "Generating clientset for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/${CLIENTSET_PKG}"
    -  "${gobin}/client-gen" \
    -      --clientset-name "${CLIENTSET_NAME}" \
    -      --input-base "" \
    -      --input "$(codegen::join , "${EXT_FQ_APIS[@]}")" \
    -      --output-package "${OUTPUT_PKG}/${CLIENTSET_PKG}" \
    -      --apply-configuration-package "${APPLY_CONFIGURATION_PACKAGE:-}" \
    -      "$@"
    -fi
    -
    -if grep -qw "lister" <<<"${GENS}"; then
    -  # Nuke existing files
    -  for gv in "${GROUP_VERSIONS[@]}"; do
    -    root="$(GO111MODULE=on go list -f '{{.Dir}}' "${OUTPUT_PKG}/listers/${gv}" 2>/dev/null || true)"
    -    if [ -n "${root}" ]; then
    -      pushd "${root}" >/dev/null
    -      git_grep -l --null \
    -        -e '^// Code generated by lister-gen. DO NOT EDIT.$' \
    -        ':(glob)**/*.go' \
    -        | xargs -0 rm -f
    -      popd >/dev/null
    -    fi
    -  done
    -
    -  echo "Generating listers for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/listers"
    -  "${gobin}/lister-gen" \
    -      --input-dirs "$(codegen::join , "${EXT_FQ_APIS[@]}")" \
    -      --output-package "${OUTPUT_PKG}/listers" \
    -      "$@"
    -fi
    -
    -if grep -qw "informer" <<<"${GENS}"; then
    -  # Nuke existing files
    -  root="$(GO111MODULE=on go list -f '{{.Dir}}' "${OUTPUT_PKG}/informers/externalversions" 2>/dev/null || true)"
    -  if [ -n "${root}" ]; then
    -    pushd "${root}" >/dev/null
    -    git_grep -l --null \
    -      -e '^// Code generated by informer-gen. DO NOT EDIT.$' \
    -      ':(glob)**/*.go' \
    -      | xargs -0 rm -f
    -    popd >/dev/null
    -  fi
    -
    -  echo "Generating informers for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/informers"
    -  "${gobin}/informer-gen" \
    -      --input-dirs "$(codegen::join , "${EXT_FQ_APIS[@]}")" \
    -      --versioned-clientset-package "${OUTPUT_PKG}/${CLIENTSET_PKG}/${CLIENTSET_NAME}" \
    -      --listers-package "${OUTPUT_PKG}/listers" \
    -      --output-package "${OUTPUT_PKG}/informers" \
    -      "$@"
    -fi
    -
    -if grep -qw "openapi" <<<"${GENS}"; then
    -  # Nuke existing files
    -  for dir in $(GO111MODULE=on go list -f '{{.Dir}}' "${FQ_APIS[@]}"); do
    -    pushd "${dir}" >/dev/null
    -    git_find -z ':(glob)**'/zz_generated.openapi.go | xargs -0 rm -f
    -    popd >/dev/null
    -  done
    -
    -  echo "Generating OpenAPI definitions for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/openapi"
    -  declare -a OPENAPI_EXTRA_PACKAGES
    -  "${gobin}/openapi-gen" \
    -      --input-dirs "$(codegen::join , "${EXT_FQ_APIS[@]}" "${OPENAPI_EXTRA_PACKAGES[@]+"${OPENAPI_EXTRA_PACKAGES[@]}"}")" \
    -      --input-dirs "k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/runtime,k8s.io/apimachinery/pkg/version" \
    -      --output-package "${OUTPUT_PKG}/openapi" \
    -      -O zz_generated.openapi \
    -      "$@"
    -fi
    +exit 1
    diff --git a/vendor/k8s.io/code-generator/kube_codegen.sh b/vendor/k8s.io/code-generator/kube_codegen.sh
    index 6ded2048368f..8207da5eddd1 100644
    --- a/vendor/k8s.io/code-generator/kube_codegen.sh
    +++ b/vendor/k8s.io/code-generator/kube_codegen.sh
    @@ -17,35 +17,43 @@
     # This presents several functions for packages which want to use kubernetes
     # code-generation tools.
     
    +# These functions insist that your input IDL (commented go) files be located in
    +# go packages following the pattern $input_pkg_root/$something_sans_slash/$api_version .
    +# Those $something_sans_slash will be propagated into the output directory structure.
    +
     set -o errexit
     set -o nounset
     set -o pipefail
     
     KUBE_CODEGEN_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
     
    -function kube::codegen::internal::git_find() {
    -    # Similar to find but faster and easier to understand.  We want to include
    -    # modified and untracked files because this might be running against code
    -    # which is not tracked by git yet.
    -    git ls-files -cmo --exclude-standard "$@"
    +function kube::codegen::internal::findz() {
    +    # We use `find` rather than `git ls-files` because sometimes external
    +    # projects use this across repos.  This is an imperfect wrapper of find,
    +    # but good enough for this script.
    +    find "$@" -print0
     }
     
    -function kube::codegen::internal::git_grep() {
    -    # We want to include modified and untracked files because this might be
    -    # running against code which is not tracked by git yet.
    -    git grep --untracked "$@"
    +function kube::codegen::internal::grep() {
    +    # We use `grep` rather than `git grep` because sometimes external projects
    +    # use this across repos.
    +    grep "$@" \
    +        --exclude-dir .git \
    +        --exclude-dir _output \
    +        --exclude-dir vendor
     }
     
     # Generate tagged helper code: conversions, deepcopy, and defaults
     #
    -# Args:
    -#   --input-pkg-root 
    -#     The root package under which to search for files which request code to be
    -#     generated.  This must be Go package syntax, e.g.  "k8s.io/foo/bar".
    +# USAGE: kube::codegen::gen_helpers [FLAGS] 
    +#
    +# 
    +#   The root directory under which to search for Go files which request code to
    +#   be generated.  This must be a local path, not a Go package.
     #
    -#   --output-base 
    -#     The root directory under which to emit code.  The concatenation of
    -#      +  must be valid.
    +#   See note at the top about package structure below that.
    +#
    +# FLAGS:
     #
     #   --boilerplate 
     #     An optional override for the header file to insert into generated files.
    @@ -55,22 +63,13 @@ function kube::codegen::internal::git_grep() {
     #     directories to consider during conversion generation.
     #
     function kube::codegen::gen_helpers() {
    -    local in_pkg_root=""
    -    local out_base="" # gengo needs the output dir must be $out_base/$out_pkg_root
    +    local in_dir=""
         local boilerplate="${KUBE_CODEGEN_ROOT}/hack/boilerplate.go.txt"
         local v="${KUBE_VERBOSE:-0}"
         local extra_peers=()
     
         while [ "$#" -gt 0 ]; do
             case "$1" in
    -            "--input-pkg-root")
    -                in_pkg_root="$2"
    -                shift 2
    -                ;;
    -            "--output-base")
    -                out_base="$2"
    -                shift 2
    -                ;;
                 "--boilerplate")
                     boilerplate="$2"
                     shift 2
    @@ -80,18 +79,22 @@ function kube::codegen::gen_helpers() {
                     shift 2
                     ;;
                 *)
    -                echo "unknown argument: $1" >&2
    -                return 1
    +                if [[ "$1" =~ ^-- ]]; then
    +                    echo "unknown argument: $1" >&2
    +                    return 1
    +                fi
    +                if [ -n "$in_dir" ]; then
    +                    echo "too many arguments: $1 (already have $in_dir)" >&2
    +                    return 1
    +                fi
    +                in_dir="$1"
    +                shift
                     ;;
             esac
         done
     
    -    if [ -z "${in_pkg_root}" ]; then
    -        echo "--input-pkg-root is required" >&2
    -        return 1
    -    fi
    -    if [ -z "${out_base}" ]; then
    -        echo "--output-base is required" >&2
    +    if [ -z "${in_dir}" ]; then
    +        echo "input-dir argument is required" >&2
             return 1
         fi
     
    @@ -110,136 +113,125 @@ function kube::codegen::gen_helpers() {
         # Go installs in $GOBIN if defined, and $GOPATH/bin otherwise
         gobin="${GOBIN:-$(go env GOPATH)/bin}"
     
    -    # These tools all assume out-dir == in-dir.
    -    root="${out_base}/${in_pkg_root}"
    -    mkdir -p "${root}"
    -    root="$(cd "${root}" && pwd -P)"
    -
         # Deepcopy
         #
         local input_pkgs=()
    -    while read -r file; do
    -        dir="$(dirname "${file}")"
    +    while read -r dir; do
             pkg="$(cd "${dir}" && GO111MODULE=on go list -find .)"
             input_pkgs+=("${pkg}")
         done < <(
    -        ( kube::codegen::internal::git_grep -l \
    -            -e '+k8s:deepcopy-gen=' \
    -            ":(glob)${root}"/'**/*.go' \
    +        ( kube::codegen::internal::grep -l --null \
    +            -e '^\s*//\s*+k8s:deepcopy-gen=' \
    +            -r "${in_dir}" \
    +            --include '*.go' \
                 || true \
    -        ) | LC_ALL=C sort -u
    +        ) | while read -r -d $'\0' F; do dirname "${F}"; done \
    +          | LC_ALL=C sort -u
         )
     
         if [ "${#input_pkgs[@]}" != 0 ]; then
             echo "Generating deepcopy code for ${#input_pkgs[@]} targets"
     
    -        kube::codegen::internal::git_find -z \
    -            ":(glob)${root}"/'**/zz_generated.deepcopy.go' \
    +        kube::codegen::internal::findz \
    +            "${in_dir}" \
    +            -type f \
    +            -name zz_generated.deepcopy.go \
                 | xargs -0 rm -f
     
    -        local input_args=()
    -        for arg in "${input_pkgs[@]}"; do
    -            input_args+=("--input-dirs" "$arg")
    -        done
             "${gobin}/deepcopy-gen" \
                 -v "${v}" \
    -            -O zz_generated.deepcopy \
    +            --output-file zz_generated.deepcopy.go \
                 --go-header-file "${boilerplate}" \
    -            --output-base "${out_base}" \
    -            "${input_args[@]}"
    +            "${input_pkgs[@]}"
         fi
     
         # Defaults
         #
         local input_pkgs=()
    -    while read -r file; do
    -        dir="$(dirname "${file}")"
    +    while read -r dir; do
             pkg="$(cd "${dir}" && GO111MODULE=on go list -find .)"
             input_pkgs+=("${pkg}")
         done < <(
    -        ( kube::codegen::internal::git_grep -l \
    -            -e '+k8s:defaulter-gen=' \
    -            ":(glob)${root}"/'**/*.go' \
    +        ( kube::codegen::internal::grep -l --null \
    +            -e '^\s*//\s*+k8s:defaulter-gen=' \
    +            -r "${in_dir}" \
    +            --include '*.go' \
                 || true \
    -        ) | LC_ALL=C sort -u
    +        ) | while read -r -d $'\0' F; do dirname "${F}"; done \
    +          | LC_ALL=C sort -u
         )
     
         if [ "${#input_pkgs[@]}" != 0 ]; then
             echo "Generating defaulter code for ${#input_pkgs[@]} targets"
     
    -        kube::codegen::internal::git_find -z \
    -            ":(glob)${root}"/'**/zz_generated.defaults.go' \
    +        kube::codegen::internal::findz \
    +            "${in_dir}" \
    +            -type f \
    +            -name zz_generated.defaults.go \
                 | xargs -0 rm -f
     
    -        local input_args=()
    -        for arg in "${input_pkgs[@]}"; do
    -            input_args+=("--input-dirs" "$arg")
    -        done
             "${gobin}/defaulter-gen" \
                 -v "${v}" \
    -            -O zz_generated.defaults \
    +            --output-file zz_generated.defaults.go \
                 --go-header-file "${boilerplate}" \
    -            --output-base "${out_base}" \
    -            "${input_args[@]}"
    +            "${input_pkgs[@]}"
         fi
     
         # Conversions
         #
         local input_pkgs=()
    -    while read -r file; do
    -        dir="$(dirname "${file}")"
    +    while read -r dir; do
             pkg="$(cd "${dir}" && GO111MODULE=on go list -find .)"
             input_pkgs+=("${pkg}")
         done < <(
    -        ( kube::codegen::internal::git_grep -l \
    -            -e '+k8s:conversion-gen=' \
    -            ":(glob)${root}"/'**/*.go' \
    +        ( kube::codegen::internal::grep -l --null \
    +            -e '^\s*//\s*+k8s:conversion-gen=' \
    +            -r "${in_dir}" \
    +            --include '*.go' \
                 || true \
    -        ) | LC_ALL=C sort -u
    +        ) | while read -r -d $'\0' F; do dirname "${F}"; done \
    +          | LC_ALL=C sort -u
         )
     
         if [ "${#input_pkgs[@]}" != 0 ]; then
             echo "Generating conversion code for ${#input_pkgs[@]} targets"
     
    -        kube::codegen::internal::git_find -z \
    -            ":(glob)${root}"/'**/zz_generated.conversion.go' \
    +        kube::codegen::internal::findz \
    +            "${in_dir}" \
    +            -type f \
    +            -name zz_generated.conversion.go \
                 | xargs -0 rm -f
     
    -        local input_args=()
    -        for arg in "${input_pkgs[@]}"; do
    -            input_args+=("--input-dirs" "$arg")
    -        done
             local extra_peer_args=()
             for arg in "${extra_peers[@]:+"${extra_peers[@]}"}"; do
                 extra_peer_args+=("--extra-peer-dirs" "$arg")
             done
             "${gobin}/conversion-gen" \
                 -v "${v}" \
    -            -O zz_generated.conversion \
    +            --output-file zz_generated.conversion.go \
                 --go-header-file "${boilerplate}" \
    -            --output-base "${out_base}" \
                 "${extra_peer_args[@]:+"${extra_peer_args[@]}"}" \
    -            "${input_args[@]}"
    +            "${input_pkgs[@]}"
         fi
     }
     
     # Generate openapi code
     #
    -# Args:
    -#   --input-pkg-root 
    -#     The root package under which to search for files which request openapi to
    -#     be generated.  This must be Go package syntax, e.g.  "k8s.io/foo/bar".
    +# USAGE: kube::codegen::gen_openapi [FLAGS] 
    +#
    +# 
    +#   The root directory under which to search for Go files which request openapi
    +#   to be generated.  This must be a local path, not a Go package.
    +#
    +#   See note at the top about package structure below that.
     #
    -#   --output-pkg-root 
    -#     The root package under which generated directories and files
    -#     will be placed.  This must be go package syntax, e.g. "k8s.io/foo/bar".
    +# FLAGS:
     #
    -#   --output-base 
    -#     The root directory under which to emit code.  The concatenation of
    -#      +  must be valid.
    +#   --output-dir 
    +#     The directory into which to emit code.
     #
    -#   --openapi-name 
    -#     An optional override for the leaf name of the generated directory.
    +#   --output-pkg 
    +#     The Go package path (import path) of the --output-dir.
     #
     #   --extra-pkgs 
     #     An optional list of additional packages to be imported during openapi
    @@ -258,10 +250,9 @@ function kube::codegen::gen_helpers() {
     #     An optional override for the header file to insert into generated files.
     #
     function kube::codegen::gen_openapi() {
    -    local in_pkg_root=""
    -    local out_pkg_root=""
    -    local out_base="" # gengo needs the output dir must be $out_base/$out_pkg_root
    -    local openapi_subdir="openapi"
    +    local in_dir=""
    +    local out_dir=""
    +    local out_pkg=""
         local extra_pkgs=()
         local report="/dev/null"
         local update_report=""
    @@ -270,20 +261,12 @@ function kube::codegen::gen_openapi() {
     
         while [ "$#" -gt 0 ]; do
             case "$1" in
    -            "--input-pkg-root")
    -                in_pkg_root="$2"
    -                shift 2
    -                ;;
    -            "--output-pkg-root")
    -                out_pkg_root="$2"
    -                shift 2
    -                ;;
    -            "--output-base")
    -                out_base="$2"
    +            "--output-dir")
    +                out_dir="$2"
                     shift 2
                     ;;
    -            "--openapi-name")
    -                openapi_subdir="$2"
    +            "--output-pkg")
    +                out_pkg="$2"
                     shift 2
                     ;;
                 "--extra-pkgs")
    @@ -303,22 +286,30 @@ function kube::codegen::gen_openapi() {
                     shift 2
                     ;;
                 *)
    -                echo "unknown argument: $1" >&2
    -                return 1
    +                if [[ "$1" =~ ^-- ]]; then
    +                    echo "unknown argument: $1" >&2
    +                    return 1
    +                fi
    +                if [ -n "$in_dir" ]; then
    +                    echo "too many arguments: $1 (already have $in_dir)" >&2
    +                    return 1
    +                fi
    +                in_dir="$1"
    +                shift
                     ;;
             esac
         done
     
    -    if [ -z "${in_pkg_root}" ]; then
    -        echo "--input-pkg-root is required" >&2
    +    if [ -z "${in_dir}" ]; then
    +        echo "input-dir argument is required" >&2
             return 1
         fi
    -    if [ -z "${out_pkg_root}" ]; then
    -        echo "--output-pkg-root is required" >&2
    +    if [ -z "${out_dir}" ]; then
    +        echo "--output-dir is required" >&2
             return 1
         fi
    -    if [ -z "${out_base}" ]; then
    -        echo "--output-base is required" >&2
    +    if [ -z "${out_pkg}" ]; then
    +        echo "--output-pkg is required" >&2
             return 1
         fi
     
    @@ -336,51 +327,45 @@ function kube::codegen::gen_openapi() {
                 openapi-gen
             )
             # shellcheck disable=2046 # printf word-splitting is intentional
    -        GO111MODULE=on go install $(printf "k8s.io/code-generator/cmd/%s " "${BINS[@]}")
    +        GO111MODULE=on go install $(printf "k8s.io/kube-openapi/cmd/%s " "${BINS[@]}")
         )
         # Go installs in $GOBIN if defined, and $GOPATH/bin otherwise
         gobin="${GOBIN:-$(go env GOPATH)/bin}"
     
    -    # These tools all assume out-dir == in-dir.
    -    root="${out_base}/${in_pkg_root}"
    -    mkdir -p "${root}"
    -    root="$(cd "${root}" && pwd -P)"
    -
         local input_pkgs=( "${extra_pkgs[@]:+"${extra_pkgs[@]}"}")
    -    while read -r file; do
    -        dir="$(dirname "${file}")"
    +    while read -r dir; do
             pkg="$(cd "${dir}" && GO111MODULE=on go list -find .)"
             input_pkgs+=("${pkg}")
         done < <(
    -        ( kube::codegen::internal::git_grep -l \
    -            -e '+k8s:openapi-gen=' \
    -            ":(glob)${root}"/'**/*.go' \
    +        ( kube::codegen::internal::grep -l --null \
    +            -e '^\s*//\s*+k8s:openapi-gen=' \
    +            -r "${in_dir}" \
    +            --include '*.go' \
                 || true \
    -        ) | LC_ALL=C sort -u
    +        ) | while read -r -d $'\0' F; do dirname "${F}"; done \
    +          | LC_ALL=C sort -u
         )
     
         if [ "${#input_pkgs[@]}" != 0 ]; then
             echo "Generating openapi code for ${#input_pkgs[@]} targets"
     
    -        kube::codegen::internal::git_find -z \
    -            ":(glob)${root}"/'**/zz_generated.openapi.go' \
    +        kube::codegen::internal::findz \
    +            "${in_dir}" \
    +            -type f \
    +            -name zz_generated.openapi.go \
                 | xargs -0 rm -f
     
    -        local inputs=()
    -        for arg in "${input_pkgs[@]}"; do
    -            inputs+=("--input-dirs" "$arg")
    -        done
             "${gobin}/openapi-gen" \
                 -v "${v}" \
    -            -O zz_generated.openapi \
    +            --output-file zz_generated.openapi.go \
                 --go-header-file "${boilerplate}" \
    -            --output-base "${out_base}" \
    -            --output-package "${out_pkg_root}/${openapi_subdir}" \
    +            --output-dir "${out_dir}" \
    +            --output-pkg "${out_pkg}" \
                 --report-filename "${new_report}" \
    -            --input-dirs "k8s.io/apimachinery/pkg/apis/meta/v1" \
    -            --input-dirs "k8s.io/apimachinery/pkg/runtime" \
    -            --input-dirs "k8s.io/apimachinery/pkg/version" \
    -            "${inputs[@]}"
    +            "k8s.io/apimachinery/pkg/apis/meta/v1" \
    +            "k8s.io/apimachinery/pkg/runtime" \
    +            "k8s.io/apimachinery/pkg/version" \
    +            "${input_pkgs[@]}"
         fi
     
         touch "${report}" # in case it doesn't exist yet
    @@ -394,19 +379,27 @@ function kube::codegen::gen_openapi() {
     
     # Generate client code
     #
    -# Args:
    -#   --input-pkg-root 
    -#     The root package under which to search for types.go files which request
    -#     clients to be generated.  This must be Go package syntax, e.g.
    -#     "k8s.io/foo/bar".
    +# USAGE: kube::codegen::gen_client [FLAGS] 
    +#
    +# 
    +#   The root package under which to search for Go files which request clients
    +#   to be generated. This must be a local path, not a Go package.
     #
    -#   --output-pkg-root 
    -#     The root package into which generated directories and files will be
    -#     placed.  This must be Go package syntax, e.g. "k8s.io/foo/bar".
    +#   See note at the top about package structure below that.
     #
    -#   --output-base 
    -#     The root directory under which to emit code.  The concatenation of
    -#      +  must be valid.
    +# FLAGS:
    +#   --one-input-api 
    +#     A specific API (a directory) under the input-dir for which to generate a
    +#     client.  If this is not set, clients for all APIs under the input-dir
    +#     will be generated (under the --output-pkg).
    +#
    +#   --output-dir 
    +#     The root directory under which to emit code.  Each aspect of client
    +#     generation will make one or more subdirectories.
    +#
    +#   --output-pkg 
    +#     The Go package path (import path) of the --output-dir.  Each aspect of
    +#     client generation will make one or more sub-packages.
     #
     #   --boilerplate 
     #     An optional override for the header file to insert into generated files.
    @@ -424,6 +417,10 @@ function kube::codegen::gen_openapi() {
     #   --applyconfig-name 
     #     An optional override for the leaf name of the generated "applyconfiguration" directory.
     #
    +#   --applyconfig-externals 
    +#     An optional list of comma separated external apply configurations locations
    +#     in .: form.
    +#
     #   --with-watch
     #     Enables generation of listers and informers for APIs which support WATCH.
     #
    @@ -433,32 +430,43 @@ function kube::codegen::gen_openapi() {
     #   --informers-name 
     #     An optional override for the leaf name of the generated "informers" directory.
     #
    +#   --plural-exceptions 
    +#     An optional list of comma separated plural exception definitions in Type:PluralizedType form.
    +#
    +#   --prefers-protobuf
    +#     Enables generation of clientsets that use protobuf for API requests.
    +#
     function kube::codegen::gen_client() {
    -    local in_pkg_root=""
    -    local out_pkg_root=""
    -    local out_base="" # gengo needs the output dir must be $out_base/$out_pkg_root
    +    local in_dir=""
    +    local one_input_api=""
    +    local out_dir=""
    +    local out_pkg=""
         local clientset_subdir="clientset"
         local clientset_versioned_name="versioned"
         local applyconfig="false"
         local applyconfig_subdir="applyconfiguration"
    +    local applyconfig_external=""
    +    local applyconfig_openapi_schema=""
         local watchable="false"
         local listers_subdir="listers"
         local informers_subdir="informers"
         local boilerplate="${KUBE_CODEGEN_ROOT}/hack/boilerplate.go.txt"
    +    local plural_exceptions=""
         local v="${KUBE_VERBOSE:-0}"
    +    local prefers_protobuf="false"
     
         while [ "$#" -gt 0 ]; do
             case "$1" in
    -            "--input-pkg-root")
    -                in_pkg_root="$2"
    +            "--one-input-api")
    +                one_input_api="/$2"
                     shift 2
                     ;;
    -            "--output-pkg-root")
    -                out_pkg_root="$2"
    +            "--output-dir")
    +                out_dir="$2"
                     shift 2
                     ;;
    -            "--output-base")
    -                out_base="$2"
    +            "--output-pkg")
    +                out_pkg="$2"
                     shift 2
                     ;;
                 "--boilerplate")
    @@ -481,6 +489,14 @@ function kube::codegen::gen_client() {
                     applyconfig_subdir="$2"
                     shift 2
                     ;;
    +            "--applyconfig-externals")
    +                applyconfig_external="$2"
    +                shift 2
    +                ;;
    +            "--applyconfig-openapi-schema")
    +                applyconfig_openapi_schema="$2"
    +                shift 2
    +                ;;
                 "--with-watch")
                     watchable="true"
                     shift
    @@ -493,26 +509,43 @@ function kube::codegen::gen_client() {
                     informers_subdir="$2"
                     shift 2
                     ;;
    +            "--plural-exceptions")
    +                plural_exceptions="$2"
    +                shift 2
    +                ;;
    +            "--prefers-protobuf")
    +                prefers_protobuf="true"
    +                shift
    +                ;;
                 *)
    -                echo "unknown argument: $1" >&2
    -                return 1
    +                if [[ "$1" =~ ^-- ]]; then
    +                    echo "unknown argument: $1" >&2
    +                    return 1
    +                fi
    +                if [ -n "$in_dir" ]; then
    +                    echo "too many arguments: $1 (already have $in_dir)" >&2
    +                    return 1
    +                fi
    +                in_dir="$1"
    +                shift
                     ;;
             esac
         done
     
    -    if [ -z "${in_pkg_root}" ]; then
    -        echo "--input-pkg-root is required" >&2
    +    if [ -z "${in_dir}" ]; then
    +        echo "input-dir argument is required" >&2
             return 1
         fi
    -    if [ -z "${out_pkg_root}" ]; then
    -        echo "--output-pkg-root is required" >&2
    +    if [ -z "${out_dir}" ]; then
    +        echo "--output-dir is required" >&2
             return 1
         fi
    -    if [ -z "${out_base}" ]; then
    -        echo "--output-base is required" >&2
    -        return 1
    +    if [ -z "${out_pkg}" ]; then
    +        echo "--output-pkg is required" >&2
         fi
     
    +    mkdir -p "${out_dir}"
    +
         (
             # To support running this from anywhere, first cd into this directory,
             # and then install with forced module mode on and fully qualified name.
    @@ -529,17 +562,9 @@ function kube::codegen::gen_client() {
         # Go installs in $GOBIN if defined, and $GOPATH/bin otherwise
         gobin="${GOBIN:-$(go env GOPATH)/bin}"
     
    -    in_root="${out_base}/${in_pkg_root}"
    -    mkdir -p "${in_root}"
    -    in_root="$(cd "${in_root}" && pwd -P)"
    -    out_root="${out_base}/${out_pkg_root}"
    -    mkdir -p "${out_root}"
    -    out_root="$(cd "${out_root}" && pwd -P)"
    -
         local group_versions=()
         local input_pkgs=()
    -    while read -r file; do
    -        dir="$(dirname "${file}")"
    +    while read -r dir; do
             pkg="$(cd "${dir}" && GO111MODULE=on go list -find .)"
             leaf="$(basename "${dir}")"
             if grep -E -q '^v[0-9]+((alpha|beta)[0-9]+)?$' <<< "${leaf}"; then
    @@ -550,11 +575,13 @@ function kube::codegen::gen_client() {
                 group_versions+=("${leaf2}/${leaf}")
             fi
         done < <(
    -        ( kube::codegen::internal::git_grep -l \
    -            -e '+genclient' \
    -            ":(glob)${in_root}"/'**/types.go' \
    +        ( kube::codegen::internal::grep -l --null \
    +            -e '^\s*//\s*+genclient' \
    +            -r "${in_dir}${one_input_api}" \
    +            --include '*.go' \
                 || true \
    -        ) | LC_ALL=C sort -u
    +        ) | while read -r -d $'\0' F; do dirname "${F}"; done \
    +          | LC_ALL=C sort -u
         )
     
         if [ "${#group_versions[@]}" == 0 ]; then
    @@ -563,33 +590,33 @@ function kube::codegen::gen_client() {
     
         applyconfig_pkg="" # set this for later use, iff enabled
         if [ "${applyconfig}" == "true" ]; then
    -        applyconfig_pkg="${out_pkg_root}/${applyconfig_subdir}"
    +        applyconfig_pkg="${out_pkg}/${applyconfig_subdir}"
     
             echo "Generating applyconfig code for ${#input_pkgs[@]} targets"
     
    -        ( kube::codegen::internal::git_grep -l --null \
    +        ( kube::codegen::internal::grep -l --null \
                 -e '^// Code generated by applyconfiguration-gen. DO NOT EDIT.$' \
    -            ":(glob)${out_root}/${applyconfig_subdir}"/'**/*.go' \
    +            -r "${out_dir}/${applyconfig_subdir}" \
    +            --include '*.go' \
                 || true \
             ) | xargs -0 rm -f
     
    -        local inputs=()
    -        for arg in "${input_pkgs[@]}"; do
    -            inputs+=("--input-dirs" "$arg")
    -        done
             "${gobin}/applyconfiguration-gen" \
                 -v "${v}" \
                 --go-header-file "${boilerplate}" \
    -            --output-base "${out_base}" \
    -            --output-package "${out_pkg_root}/${applyconfig_subdir}" \
    -            "${inputs[@]}"
    +            --output-dir "${out_dir}/${applyconfig_subdir}" \
    +            --output-pkg "${applyconfig_pkg}" \
    +            --external-applyconfigurations "${applyconfig_external}" \
    +            --openapi-schema "${applyconfig_openapi_schema}" \
    +            "${input_pkgs[@]}"
         fi
     
         echo "Generating client code for ${#group_versions[@]} targets"
     
    -    ( kube::codegen::internal::git_grep -l --null \
    +    ( kube::codegen::internal::grep -l --null \
             -e '^// Code generated by client-gen. DO NOT EDIT.$' \
    -        ":(glob)${out_root}/${clientset_subdir}"/'**/*.go' \
    +        -r "${out_dir}/${clientset_subdir}" \
    +        --include '*.go' \
             || true \
         ) | xargs -0 rm -f
     
    @@ -597,55 +624,145 @@ function kube::codegen::gen_client() {
         for arg in "${group_versions[@]}"; do
             inputs+=("--input" "$arg")
         done
    -    "${gobin}/client-gen" \
    +     "${gobin}/client-gen" \
             -v "${v}" \
             --go-header-file "${boilerplate}" \
    +        --output-dir "${out_dir}/${clientset_subdir}" \
    +        --output-pkg "${out_pkg}/${clientset_subdir}" \
             --clientset-name "${clientset_versioned_name}" \
    -        --input-base "${in_pkg_root}" \
    -        --output-base "${out_base}" \
    -        --output-package "${out_pkg_root}/${clientset_subdir}" \
             --apply-configuration-package "${applyconfig_pkg}" \
    +        --input-base "$(cd "${in_dir}" && pwd -P)" `# must be absolute path or Go import path"` \
    +        --plural-exceptions "${plural_exceptions}" \
    +        --prefers-protobuf="${prefers_protobuf}" \
             "${inputs[@]}"
     
         if [ "${watchable}" == "true" ]; then
             echo "Generating lister code for ${#input_pkgs[@]} targets"
     
    -        ( kube::codegen::internal::git_grep -l --null \
    +        ( kube::codegen::internal::grep -l --null \
                 -e '^// Code generated by lister-gen. DO NOT EDIT.$' \
    -            ":(glob)${out_root}/${listers_subdir}"/'**/*.go' \
    +            -r "${out_dir}/${listers_subdir}" \
    +            --include '*.go' \
                 || true \
             ) | xargs -0 rm -f
     
    -        local inputs=()
    -        for arg in "${input_pkgs[@]}"; do
    -            inputs+=("--input-dirs" "$arg")
    -        done
             "${gobin}/lister-gen" \
                 -v "${v}" \
                 --go-header-file "${boilerplate}" \
    -            --output-base "${out_base}" \
    -            --output-package "${out_pkg_root}/${listers_subdir}" \
    -            "${inputs[@]}"
    +            --output-dir "${out_dir}/${listers_subdir}" \
    +            --output-pkg "${out_pkg}/${listers_subdir}" \
    +            --plural-exceptions "${plural_exceptions}" \
    +            "${input_pkgs[@]}"
     
             echo "Generating informer code for ${#input_pkgs[@]} targets"
     
    -        ( kube::codegen::internal::git_grep -l --null \
    +        ( kube::codegen::internal::grep -l --null \
                 -e '^// Code generated by informer-gen. DO NOT EDIT.$' \
    -            ":(glob)${out_root}/${informers_subdir}"/'**/*.go' \
    +            -r "${out_dir}/${informers_subdir}" \
    +            --include '*.go' \
                 || true \
             ) | xargs -0 rm -f
     
    -        local inputs=()
    -        for arg in "${input_pkgs[@]}"; do
    -            inputs+=("--input-dirs" "$arg")
    -        done
             "${gobin}/informer-gen" \
                 -v "${v}" \
                 --go-header-file "${boilerplate}" \
    -            --output-base "${out_base}" \
    -            --output-package "${out_pkg_root}/${informers_subdir}" \
    -            --versioned-clientset-package "${out_pkg_root}/${clientset_subdir}/${clientset_versioned_name}" \
    -            --listers-package "${out_pkg_root}/${listers_subdir}" \
    -            "${inputs[@]}"
    +            --output-dir "${out_dir}/${informers_subdir}" \
    +            --output-pkg "${out_pkg}/${informers_subdir}" \
    +            --versioned-clientset-package "${out_pkg}/${clientset_subdir}/${clientset_versioned_name}" \
    +            --listers-package "${out_pkg}/${listers_subdir}" \
    +            --plural-exceptions "${plural_exceptions}" \
    +            "${input_pkgs[@]}"
    +    fi
    +}
    +
    +# Generate register code
    +#
    +# USAGE: kube::codegen::gen_register [FLAGS] 
    +#
    +# 
    +#   The root directory under which to search for Go files which request code to
    +#   be generated.  This must be a local path, not a Go package.
    +#
    +#   See note at the top about package structure below that.
    +#
    +# FLAGS:
    +#
    +#   --boilerplate 
    +#     An optional override for the header file to insert into generated files.
    +#
    +function kube::codegen::gen_register() {
    +    local in_dir=""
    +    local boilerplate="${KUBE_CODEGEN_ROOT}/hack/boilerplate.go.txt"
    +    local v="${KUBE_VERBOSE:-0}"
    +
    +    while [ "$#" -gt 0 ]; do
    +        case "$1" in
    +            "--boilerplate")
    +                boilerplate="$2"
    +                shift 2
    +                ;;
    +            *)
    +                if [[ "$1" =~ ^-- ]]; then
    +                    echo "unknown argument: $1" >&2
    +                    return 1
    +                fi
    +                if [ -n "$in_dir" ]; then
    +                    echo "too many arguments: $1 (already have $in_dir)" >&2
    +                    return 1
    +                fi
    +                in_dir="$1"
    +                shift
    +                ;;
    +        esac
    +    done
    +
    +    if [ -z "${in_dir}" ]; then
    +        echo "input-dir argument is required" >&2
    +        return 1
    +    fi
    +
    +    (
    +        # To support running this from anywhere, first cd into this directory,
    +        # and then install with forced module mode on and fully qualified name.
    +        cd "${KUBE_CODEGEN_ROOT}"
    +        BINS=(
    +            register-gen
    +        )
    +        # shellcheck disable=2046 # printf word-splitting is intentional
    +        GO111MODULE=on go install $(printf "k8s.io/code-generator/cmd/%s " "${BINS[@]}")
    +    )
    +    # Go installs in $GOBIN if defined, and $GOPATH/bin otherwise
    +    gobin="${GOBIN:-$(go env GOPATH)/bin}"
    +
    +    # Register
    +    #
    +    local input_pkgs=()
    +    while read -r dir; do
    +        pkg="$(cd "${dir}" && GO111MODULE=on go list -find .)"
    +        input_pkgs+=("${pkg}")
    +    done < <(
    +        ( kube::codegen::internal::grep -l --null \
    +            -e '^\s*//\s*+groupName' \
    +            -r "${in_dir}" \
    +            --include '*.go' \
    +            || true \
    +        ) | while read -r -d $'\0' F; do dirname "${F}"; done \
    +          | LC_ALL=C sort -u
    +    )
    +
    +    if [ "${#input_pkgs[@]}" != 0 ]; then
    +        echo "Generating register code for ${#input_pkgs[@]} targets"
    +
    +        kube::codegen::internal::findz \
    +            "${in_dir}" \
    +            -type f \
    +            -name zz_generated.register.go \
    +            | xargs -0 rm -f
    +
    +        "${gobin}/register-gen" \
    +            -v "${v}" \
    +            --output-file zz_generated.register.go \
    +            --go-header-file "${boilerplate}" \
    +            "${input_pkgs[@]}"
         fi
     }
    diff --git a/vendor/k8s.io/code-generator/pkg/namer/tag-override.go b/vendor/k8s.io/code-generator/pkg/namer/tag-override.go
    index fd8c3a8553ce..59ee489f0f76 100644
    --- a/vendor/k8s.io/code-generator/pkg/namer/tag-override.go
    +++ b/vendor/k8s.io/code-generator/pkg/namer/tag-override.go
    @@ -17,8 +17,9 @@ limitations under the License.
     package namer
     
     import (
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     )
     
     // TagOverrideNamer is a namer which pulls names from a given tag, if specified,
    @@ -49,7 +50,7 @@ func NewTagOverrideNamer(tagName string, fallback namer.Namer) namer.Namer {
     // extractTag gets the comment-tags for the key.  If the tag did not exist, it
     // returns the empty string.
     func extractTag(key string, lines []string) string {
    -	val, present := types.ExtractCommentTags("+", lines)[key]
    +	val, present := gengo.ExtractCommentTags("+", lines)[key]
     	if !present || len(val) < 1 {
     		return ""
     	}
    diff --git a/vendor/k8s.io/code-generator/pkg/util/build.go b/vendor/k8s.io/code-generator/pkg/util/build.go
    deleted file mode 100644
    index 53f93afe3493..000000000000
    --- a/vendor/k8s.io/code-generator/pkg/util/build.go
    +++ /dev/null
    @@ -1,60 +0,0 @@
    -/*
    -Copyright 2017 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -package util
    -
    -import (
    -	gobuild "go/build"
    -	"path/filepath"
    -	"strings"
    -)
    -
    -// CurrentPackage returns the go package of the current directory, or "" if it cannot
    -// be derived from the GOPATH.
    -func CurrentPackage() string {
    -	for _, root := range gobuild.Default.SrcDirs() {
    -		if pkg, ok := hasSubdir(root, "."); ok {
    -			return pkg
    -		}
    -	}
    -	return ""
    -}
    -
    -func hasSubdir(root, dir string) (rel string, ok bool) {
    -	// ensure a tailing separator to properly compare on word-boundaries
    -	const sep = string(filepath.Separator)
    -	root = filepath.Clean(root)
    -	if !strings.HasSuffix(root, sep) {
    -		root += sep
    -	}
    -
    -	// check whether root dir starts with root
    -	dir = filepath.Clean(dir)
    -	if !strings.HasPrefix(dir, root) {
    -		return "", false
    -	}
    -
    -	// cut off root
    -	return filepath.ToSlash(dir[len(root):]), true
    -}
    -
    -// Vendorless trims vendor prefix from a package path to make it canonical
    -func Vendorless(p string) string {
    -	if pos := strings.LastIndex(p, "/vendor/"); pos != -1 {
    -		return p[pos+len("/vendor/"):]
    -	}
    -	return p
    -}
    diff --git a/vendor/k8s.io/code-generator/tools.go b/vendor/k8s.io/code-generator/tools.go
    index 90b942b07036..4080b2c5907b 100644
    --- a/vendor/k8s.io/code-generator/tools.go
    +++ b/vendor/k8s.io/code-generator/tools.go
    @@ -28,10 +28,8 @@ import (
     	_ "k8s.io/code-generator/cmd/deepcopy-gen"
     	_ "k8s.io/code-generator/cmd/defaulter-gen"
     	_ "k8s.io/code-generator/cmd/go-to-protobuf"
    -	_ "k8s.io/code-generator/cmd/import-boss"
     	_ "k8s.io/code-generator/cmd/informer-gen"
     	_ "k8s.io/code-generator/cmd/lister-gen"
    -	_ "k8s.io/code-generator/cmd/openapi-gen"
     	_ "k8s.io/code-generator/cmd/register-gen"
    -	_ "k8s.io/code-generator/cmd/set-gen"
    +	_ "k8s.io/kube-openapi/cmd/openapi-gen"
     )
    diff --git a/vendor/k8s.io/gengo/examples/import-boss/generators/import_restrict.go b/vendor/k8s.io/gengo/examples/import-boss/generators/import_restrict.go
    deleted file mode 100644
    index f0e1a0ad7a95..000000000000
    --- a/vendor/k8s.io/gengo/examples/import-boss/generators/import_restrict.go
    +++ /dev/null
    @@ -1,443 +0,0 @@
    -/*
    -Copyright 2016 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Package generators has the generators for the import-boss utility.
    -package generators
    -
    -import (
    -	"encoding/json"
    -	"errors"
    -	"fmt"
    -	"io"
    -	"io/ioutil"
    -	"os"
    -	"path/filepath"
    -	"regexp"
    -	"sort"
    -	"strings"
    -
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    -	"sigs.k8s.io/yaml"
    -
    -	"k8s.io/klog/v2"
    -)
    -
    -const (
    -	goModFile          = "go.mod"
    -	importBossFileType = "import-boss"
    -)
    -
    -// NameSystems returns the name system used by the generators in this package.
    -func NameSystems() namer.NameSystems {
    -	return namer.NameSystems{
    -		"raw": namer.NewRawNamer("", nil),
    -	}
    -}
    -
    -// DefaultNameSystem returns the default name system for ordering the types to be
    -// processed by the generators in this package.
    -func DefaultNameSystem() string {
    -	return "raw"
    -}
    -
    -// Packages makes the import-boss package definition.
    -func Packages(c *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	pkgs := generator.Packages{}
    -	c.FileTypes = map[string]generator.FileType{
    -		importBossFileType: importRuleFile{c},
    -	}
    -
    -	for _, p := range c.Universe {
    -		if !inputIncludes(arguments.InputDirs, p) {
    -			// Don't run on e.g. third party dependencies.
    -			continue
    -		}
    -		savedPackage := p
    -		pkgs = append(pkgs, &generator.DefaultPackage{
    -			PackageName: p.Name,
    -			PackagePath: p.Path,
    -			Source:      p.SourcePath,
    -			// GeneratorFunc returns a list of generators. Each generator makes a
    -			// single file.
    -			GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    -				return []generator.Generator{&importRules{
    -					myPackage: savedPackage,
    -				}}
    -			},
    -			FilterFunc: func(c *generator.Context, t *types.Type) bool {
    -				return false
    -			},
    -		})
    -	}
    -
    -	return pkgs
    -}
    -
    -// inputIncludes returns true if the given package is a (sub) package of one of
    -// the InputDirs.
    -func inputIncludes(inputs []string, p *types.Package) bool {
    -	// TODO: This does not handle conversion of local paths (./foo) into
    -	// canonical packages (github.com/example/project/foo).
    -	for _, input := range inputs {
    -		// Normalize paths
    -		input := strings.TrimSuffix(input, "/")
    -		input = strings.TrimPrefix(input, "./vendor/")
    -		seek := strings.TrimSuffix(p.Path, "/")
    -
    -		if input == seek {
    -			return true
    -		}
    -		if strings.HasSuffix(input, "...") {
    -			input = strings.TrimSuffix(input, "...")
    -			if strings.HasPrefix(seek+"/", input) {
    -				return true
    -			}
    -		}
    -	}
    -	return false
    -}
    -
    -// A single import restriction rule.
    -type Rule struct {
    -	// All import paths that match this regexp...
    -	SelectorRegexp string
    -	// ... must have one of these prefixes ...
    -	AllowedPrefixes []string
    -	// ... and must not have one of these prefixes.
    -	ForbiddenPrefixes []string
    -}
    -
    -type InverseRule struct {
    -	Rule
    -	// True if the rule is to be applied to transitive imports.
    -	Transitive bool
    -}
    -
    -type fileFormat struct {
    -	CurrentImports []string
    -
    -	Rules        []Rule
    -	InverseRules []InverseRule
    -
    -	path string
    -}
    -
    -func readFile(path string) (*fileFormat, error) {
    -	currentBytes, err := ioutil.ReadFile(path)
    -	if err != nil {
    -		return nil, fmt.Errorf("couldn't read %v: %v", path, err)
    -	}
    -
    -	var current fileFormat
    -	err = yaml.Unmarshal(currentBytes, ¤t)
    -	if err != nil {
    -		return nil, fmt.Errorf("couldn't unmarshal %v: %v", path, err)
    -	}
    -	current.path = path
    -	return ¤t, nil
    -}
    -
    -func writeFile(path string, ff *fileFormat) error {
    -	raw, err := json.MarshalIndent(ff, "", "\t")
    -	if err != nil {
    -		return fmt.Errorf("couldn't format data for file %v.\n%#v", path, ff)
    -	}
    -	f, err := os.Create(path)
    -	if err != nil {
    -		return fmt.Errorf("couldn't open %v for writing: %v", path, err)
    -	}
    -	defer f.Close()
    -	_, err = f.Write(raw)
    -	return err
    -}
    -
    -// This does the actual checking, since it knows the literal destination file.
    -type importRuleFile struct {
    -	context *generator.Context
    -}
    -
    -func (irf importRuleFile) AssembleFile(f *generator.File, path string) error {
    -	return irf.VerifyFile(f, path)
    -}
    -
    -// TODO: make a flag to enable this, or expose this information in some other way.
    -func (importRuleFile) listEntireImportTree(f *generator.File, path string) error {
    -	// If the file exists, populate its current imports. This is mostly to help
    -	// humans figure out what they need to fix.
    -	if _, err := os.Stat(path); err != nil {
    -		// Ignore packages which haven't opted in by adding an .import-restrictions file.
    -		return nil
    -	}
    -
    -	current, err := readFile(path)
    -	if err != nil {
    -		return err
    -	}
    -
    -	current.CurrentImports = []string{}
    -	for v := range f.Imports {
    -		current.CurrentImports = append(current.CurrentImports, v)
    -	}
    -	sort.Strings(current.CurrentImports)
    -
    -	return writeFile(path, current)
    -}
    -
    -// removeLastDir removes the last directory, but leaves the file name
    -// unchanged. It returns the new path and the removed directory. So:
    -// "a/b/c/file" -> ("a/b/file", "c")
    -func removeLastDir(path string) (newPath, removedDir string) {
    -	dir, file := filepath.Split(path)
    -	dir = strings.TrimSuffix(dir, string(filepath.Separator))
    -	return filepath.Join(filepath.Dir(dir), file), filepath.Base(dir)
    -}
    -
    -// isGoModRoot checks if a directory is the root directory for a package
    -// by checking for the existence of a 'go.mod' file in that directory.
    -func isGoModRoot(path string) bool {
    -	_, err := os.Stat(filepath.Join(filepath.Dir(path), goModFile))
    -	return err == nil
    -}
    -
    -// recursiveRead collects all '.import-restriction' files, between the current directory,
    -// and the package root when Go modules are enabled, or $GOPATH/src when they are not.
    -func recursiveRead(path string) ([]*fileFormat, error) {
    -	restrictionFiles := make([]*fileFormat, 0)
    -
    -	for {
    -		if _, err := os.Stat(path); err == nil {
    -			rules, err := readFile(path)
    -			if err != nil {
    -				return nil, err
    -			}
    -
    -			restrictionFiles = append(restrictionFiles, rules)
    -		}
    -
    -		nextPath, removedDir := removeLastDir(path)
    -		if nextPath == path || isGoModRoot(path) || removedDir == "src" {
    -			break
    -		}
    -
    -		path = nextPath
    -	}
    -
    -	return restrictionFiles, nil
    -}
    -
    -func (irf importRuleFile) VerifyFile(f *generator.File, path string) error {
    -	restrictionFiles, err := recursiveRead(filepath.Join(f.PackageSourcePath, f.Name))
    -	if err != nil {
    -		return fmt.Errorf("error finding rules file: %v", err)
    -	}
    -
    -	if err := irf.verifyRules(restrictionFiles, f); err != nil {
    -		return err
    -	}
    -
    -	return irf.verifyInverseRules(restrictionFiles, f)
    -}
    -
    -func (irf importRuleFile) verifyRules(restrictionFiles []*fileFormat, f *generator.File) error {
    -	selectors := make([][]*regexp.Regexp, len(restrictionFiles))
    -	for i, restrictionFile := range restrictionFiles {
    -		for _, r := range restrictionFile.Rules {
    -			re, err := regexp.Compile(r.SelectorRegexp)
    -			if err != nil {
    -				return fmt.Errorf("regexp `%s` in file %q doesn't compile: %v", r.SelectorRegexp, restrictionFile.path, err)
    -			}
    -
    -			selectors[i] = append(selectors[i], re)
    -		}
    -	}
    -
    -	forbiddenImports := map[string]string{}
    -	allowedMismatchedImports := []string{}
    -
    -	for v := range f.Imports {
    -		explicitlyAllowed := false
    -
    -	NextRestrictionFiles:
    -		for i, rules := range restrictionFiles {
    -			for j, r := range rules.Rules {
    -				matching := selectors[i][j].MatchString(v)
    -				klog.V(5).Infof("Checking %v matches %v: %v\n", r.SelectorRegexp, v, matching)
    -				if !matching {
    -					continue
    -				}
    -				for _, forbidden := range r.ForbiddenPrefixes {
    -					klog.V(4).Infof("Checking %v against %v\n", v, forbidden)
    -					if strings.HasPrefix(v, forbidden) {
    -						forbiddenImports[v] = forbidden
    -					}
    -				}
    -				for _, allowed := range r.AllowedPrefixes {
    -					klog.V(4).Infof("Checking %v against %v\n", v, allowed)
    -					if strings.HasPrefix(v, allowed) {
    -						explicitlyAllowed = true
    -						break
    -					}
    -				}
    -
    -				if !explicitlyAllowed {
    -					allowedMismatchedImports = append(allowedMismatchedImports, v)
    -				} else {
    -					klog.V(2).Infof("%v importing %v allowed by %v\n", f.PackagePath, v, restrictionFiles[i].path)
    -					break NextRestrictionFiles
    -				}
    -			}
    -		}
    -	}
    -
    -	if len(forbiddenImports) > 0 || len(allowedMismatchedImports) > 0 {
    -		var errorBuilder strings.Builder
    -		for i, f := range forbiddenImports {
    -			fmt.Fprintf(&errorBuilder, "import %v has forbidden prefix %v\n", i, f)
    -		}
    -		if len(allowedMismatchedImports) > 0 {
    -			sort.Strings(allowedMismatchedImports)
    -			fmt.Fprintf(&errorBuilder, "the following imports did not match any allowed prefix:\n")
    -			for _, i := range allowedMismatchedImports {
    -				fmt.Fprintf(&errorBuilder, "  %v\n", i)
    -			}
    -		}
    -		return errors.New(errorBuilder.String())
    -	}
    -
    -	return nil
    -}
    -
    -// verifyInverseRules checks that all packages that import a package are allowed to import it.
    -func (irf importRuleFile) verifyInverseRules(restrictionFiles []*fileFormat, f *generator.File) error {
    -	// compile all Selector regex in all restriction files
    -	selectors := make([][]*regexp.Regexp, len(restrictionFiles))
    -	for i, restrictionFile := range restrictionFiles {
    -		for _, r := range restrictionFile.InverseRules {
    -			re, err := regexp.Compile(r.SelectorRegexp)
    -			if err != nil {
    -				return fmt.Errorf("regexp `%s` in file %q doesn't compile: %v", r.SelectorRegexp, restrictionFile.path, err)
    -			}
    -
    -			selectors[i] = append(selectors[i], re)
    -		}
    -	}
    -
    -	directImport := map[string]bool{}
    -	for _, imp := range irf.context.IncomingImports()[f.PackagePath] {
    -		directImport[imp] = true
    -	}
    -
    -	forbiddenImports := map[string]string{}
    -	allowedMismatchedImports := []string{}
    -
    -	for _, v := range irf.context.TransitiveIncomingImports()[f.PackagePath] {
    -		explicitlyAllowed := false
    -
    -	NextRestrictionFiles:
    -		for i, rules := range restrictionFiles {
    -			for j, r := range rules.InverseRules {
    -				if !r.Transitive && !directImport[v] {
    -					continue
    -				}
    -
    -				re := selectors[i][j]
    -				matching := re.MatchString(v)
    -				klog.V(4).Infof("Checking %v matches %v (importing %v: %v\n", r.SelectorRegexp, v, f.PackagePath, matching)
    -				if !matching {
    -					continue
    -				}
    -				for _, forbidden := range r.ForbiddenPrefixes {
    -					klog.V(4).Infof("Checking %v against %v\n", v, forbidden)
    -					if strings.HasPrefix(v, forbidden) {
    -						forbiddenImports[v] = forbidden
    -					}
    -				}
    -				for _, allowed := range r.AllowedPrefixes {
    -					klog.V(4).Infof("Checking %v against %v\n", v, allowed)
    -					if strings.HasPrefix(v, allowed) {
    -						explicitlyAllowed = true
    -						break
    -					}
    -				}
    -				if !explicitlyAllowed {
    -					allowedMismatchedImports = append(allowedMismatchedImports, v)
    -				} else {
    -					klog.V(2).Infof("%v importing %v allowed by %v\n", v, f.PackagePath, restrictionFiles[i].path)
    -					break NextRestrictionFiles
    -				}
    -			}
    -		}
    -	}
    -
    -	if len(forbiddenImports) > 0 || len(allowedMismatchedImports) > 0 {
    -		var errorBuilder strings.Builder
    -		for i, f := range forbiddenImports {
    -			fmt.Fprintf(&errorBuilder, "(inverse): import %v has forbidden prefix %v\n", i, f)
    -		}
    -		if len(allowedMismatchedImports) > 0 {
    -			sort.Strings(allowedMismatchedImports)
    -			fmt.Fprintf(&errorBuilder, "(inverse): the following imports did not match any allowed prefix:\n")
    -			for _, i := range allowedMismatchedImports {
    -				fmt.Fprintf(&errorBuilder, "  %v\n", i)
    -			}
    -		}
    -		return errors.New(errorBuilder.String())
    -	}
    -
    -	return nil
    -}
    -
    -// importRules produces a file with a set for a single type.
    -type importRules struct {
    -	myPackage *types.Package
    -	imports   namer.ImportTracker
    -}
    -
    -var (
    -	_ = generator.Generator(&importRules{})
    -	_ = generator.FileType(importRuleFile{})
    -)
    -
    -func (r *importRules) Name() string                                                  { return "import rules" }
    -func (r *importRules) Filter(*generator.Context, *types.Type) bool                   { return false }
    -func (r *importRules) Namers(*generator.Context) namer.NameSystems                   { return nil }
    -func (r *importRules) PackageVars(*generator.Context) []string                       { return []string{} }
    -func (r *importRules) PackageConsts(*generator.Context) []string                     { return []string{} }
    -func (r *importRules) GenerateType(*generator.Context, *types.Type, io.Writer) error { return nil }
    -func (r *importRules) Filename() string                                              { return ".import-restrictions" }
    -func (r *importRules) FileType() string                                              { return importBossFileType }
    -func (r *importRules) Init(c *generator.Context, w io.Writer) error                  { return nil }
    -func (r *importRules) Finalize(*generator.Context, io.Writer) error                  { return nil }
    -
    -func dfsImports(dest *[]string, seen map[string]bool, p *types.Package) {
    -	for _, p2 := range p.Imports {
    -		if seen[p2.Path] {
    -			continue
    -		}
    -		seen[p2.Path] = true
    -		dfsImports(dest, seen, p2)
    -		*dest = append(*dest, p2.Path)
    -	}
    -}
    -
    -func (r *importRules) Imports(*generator.Context) []string {
    -	all := []string{}
    -	dfsImports(&all, map[string]bool{}, r.myPackage)
    -	return all
    -}
    diff --git a/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go b/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go
    deleted file mode 100644
    index e89f5ad76162..000000000000
    --- a/vendor/k8s.io/gengo/examples/set-gen/generators/sets.go
    +++ /dev/null
    @@ -1,378 +0,0 @@
    -/*
    -Copyright 2015 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Package generators has the generators for the set-gen utility.
    -package generators
    -
    -import (
    -	"io"
    -
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    -
    -	"k8s.io/klog/v2"
    -)
    -
    -// NameSystems returns the name system used by the generators in this package.
    -func NameSystems() namer.NameSystems {
    -	return namer.NameSystems{
    -		"public":  namer.NewPublicNamer(0),
    -		"private": namer.NewPrivateNamer(0),
    -		"raw":     namer.NewRawNamer("", nil),
    -	}
    -}
    -
    -// DefaultNameSystem returns the default name system for ordering the types to be
    -// processed by the generators in this package.
    -func DefaultNameSystem() string {
    -	return "public"
    -}
    -
    -// Packages makes the sets package definition.
    -func Packages(_ *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	boilerplate, err := arguments.LoadGoBoilerplate()
    -	if err != nil {
    -		klog.Fatalf("Failed loading boilerplate: %v", err)
    -	}
    -
    -	return generator.Packages{&generator.DefaultPackage{
    -		PackageName: "sets",
    -		PackagePath: arguments.OutputPackagePath,
    -		HeaderText:  boilerplate,
    -		PackageDocumentation: []byte(
    -			`// Package sets has auto-generated set types.
    -`),
    -		// GeneratorFunc returns a list of generators. Each generator makes a
    -		// single file.
    -		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    -			generators = []generator.Generator{
    -				// Always generate a "doc.go" file.
    -				generator.DefaultGen{OptionalName: "doc"},
    -				// Make a separate file for the Empty type, since it's shared by every type.
    -				generator.DefaultGen{
    -					OptionalName: "empty",
    -					OptionalBody: []byte(emptyTypeDecl),
    -				},
    -			}
    -			// Since we want a file per type that we generate a set for, we
    -			// have to provide a function for this.
    -			for _, t := range c.Order {
    -				generators = append(generators, &genSet{
    -					DefaultGen: generator.DefaultGen{
    -						// Use the privatized version of the
    -						// type name as the file name.
    -						//
    -						// TODO: make a namer that converts
    -						// camelCase to '-' separation for file
    -						// names?
    -						OptionalName: c.Namers["private"].Name(t),
    -					},
    -					outputPackage: arguments.OutputPackagePath,
    -					typeToMatch:   t,
    -					imports:       generator.NewImportTracker(),
    -				})
    -			}
    -			return generators
    -		},
    -		FilterFunc: func(c *generator.Context, t *types.Type) bool {
    -			// It would be reasonable to filter by the type's package here.
    -			// It might be necessary if your input directory has a big
    -			// import graph.
    -			switch t.Kind {
    -			case types.Map, types.Slice, types.Pointer:
    -				// These types can't be keys in a map.
    -				return false
    -			case types.Builtin:
    -				return true
    -			case types.Struct:
    -				// Only some structs can be keys in a map. This is triggered by the line
    -				// // +genset
    -				// or
    -				// // +genset=true
    -				return extractBoolTagOrDie("genset", t.CommentLines) == true
    -			}
    -			return false
    -		},
    -	}}
    -}
    -
    -// genSet produces a file with a set for a single type.
    -type genSet struct {
    -	generator.DefaultGen
    -	outputPackage string
    -	typeToMatch   *types.Type
    -	imports       namer.ImportTracker
    -}
    -
    -// Filter ignores all but one type because we're making a single file per type.
    -func (g *genSet) Filter(c *generator.Context, t *types.Type) bool { return t == g.typeToMatch }
    -
    -func (g *genSet) Namers(c *generator.Context) namer.NameSystems {
    -	return namer.NameSystems{
    -		"raw": namer.NewRawNamer(g.outputPackage, g.imports),
    -	}
    -}
    -
    -func (g *genSet) Imports(c *generator.Context) (imports []string) {
    -	return append(g.imports.ImportLines(), "reflect", "sort")
    -}
    -
    -// args constructs arguments for templates. Usage:
    -// g.args(t, "key1", value1, "key2", value2, ...)
    -//
    -// 't' is loaded with the key 'type'.
    -//
    -// We could use t directly as the argument, but doing it this way makes it easy
    -// to mix in additional parameters. This feature is not used in this set
    -// generator, but is present as an example.
    -func (g *genSet) args(t *types.Type, kv ...interface{}) interface{} {
    -	m := map[interface{}]interface{}{"type": t}
    -	for i := 0; i < len(kv)/2; i++ {
    -		m[kv[i*2]] = kv[i*2+1]
    -	}
    -	return m
    -}
    -
    -// GenerateType makes the body of a file implementing a set for type t.
    -func (g *genSet) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
    -	sw := generator.NewSnippetWriter(w, c, "$", "$")
    -	sw.Do(setCode, g.args(t))
    -	sw.Do("func less$.type|public$(lhs, rhs $.type|raw$) bool {\n", g.args(t))
    -	g.lessBody(sw, t)
    -	sw.Do("}\n", g.args(t))
    -	return sw.Error()
    -}
    -
    -func (g *genSet) lessBody(sw *generator.SnippetWriter, t *types.Type) {
    -	// TODO: make this recursive, handle pointers and multiple nested structs...
    -	switch t.Kind {
    -	case types.Struct:
    -		for _, m := range types.FlattenMembers(t.Members) {
    -			sw.Do("if lhs.$.Name$ < rhs.$.Name$ { return true }\n", m)
    -			sw.Do("if lhs.$.Name$ > rhs.$.Name$ { return false }\n", m)
    -		}
    -		sw.Do("return false\n", nil)
    -	default:
    -		sw.Do("return lhs < rhs\n", nil)
    -	}
    -}
    -
    -// written to the "empty.go" file.
    -var emptyTypeDecl = `
    -// Empty is public since it is used by some internal API objects for conversions between external
    -// string arrays and internal sets, and conversion logic requires public types today.
    -type Empty struct{}
    -`
    -
    -// Written for every type. If you've never used text/template before:
    -// $.type$ refers to the source type; |public means to
    -// call the function giving the public name, |raw the raw type name.
    -var setCode = `// sets.$.type|public$ is a set of $.type|raw$s, implemented via map[$.type|raw$]struct{} for minimal memory consumption.
    -type $.type|public$ map[$.type|raw$]Empty
    -
    -// New$.type|public$ creates a $.type|public$ from a list of values.
    -func New$.type|public$(items ...$.type|raw$) $.type|public$ {
    -	ss := make($.type|public$, len(items))
    -	ss.Insert(items...)
    -	return ss
    -}
    -
    -// $.type|public$KeySet creates a $.type|public$ from a keys of a map[$.type|raw$](? extends interface{}).
    -// If the value passed in is not actually a map, this will panic.
    -func $.type|public$KeySet(theMap interface{}) $.type|public$ {
    -	v := reflect.ValueOf(theMap)
    -	ret := $.type|public${}
    -
    -	for _, keyValue := range v.MapKeys() {
    -		ret.Insert(keyValue.Interface().($.type|raw$))
    -	}
    -	return ret
    -}
    -
    -// Insert adds items to the set.
    -func (s $.type|public$) Insert(items ...$.type|raw$) $.type|public$ {
    -	for _, item := range items {
    -		s[item] = Empty{}
    -	}
    -	return s
    -}
    -
    -// Delete removes all items from the set.
    -func (s $.type|public$) Delete(items ...$.type|raw$) $.type|public$ {
    -	for _, item := range items {
    -		delete(s, item)
    -	}
    -	return s
    -}
    -
    -// Has returns true if and only if item is contained in the set.
    -func (s $.type|public$) Has(item $.type|raw$) bool {
    -	_, contained := s[item]
    -	return contained
    -}
    -
    -// HasAll returns true if and only if all items are contained in the set.
    -func (s $.type|public$) HasAll(items ...$.type|raw$) bool {
    -	for _, item := range items {
    -		if !s.Has(item) {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// HasAny returns true if any items are contained in the set.
    -func (s $.type|public$) HasAny(items ...$.type|raw$) bool {
    -	for _, item := range items {
    -		if s.Has(item) {
    -			return true
    -		}
    -	}
    -	return false
    -}
    -
    -// Clone returns a new set which is a copy of the current set.
    -func (s $.type|public$) Clone() $.type|public$ {
    -	result := make($.type|public$, len(s))
    -	for key := range s {
    -		result.Insert(key)
    -	}
    -	return result
    -}
    -
    -// Difference returns a set of objects that are not in s2.
    -// For example:
    -// s1 = {a1, a2, a3}
    -// s2 = {a1, a2, a4, a5}
    -// s1.Difference(s2) = {a3}
    -// s2.Difference(s1) = {a4, a5}
    -func (s1 $.type|public$) Difference(s2 $.type|public$) $.type|public$ {
    -	result := New$.type|public$()
    -	for key := range s1 {
    -		if !s2.Has(key) {
    -			result.Insert(key)
    -		}
    -	}
    -	return result
    -}
    -
    -// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
    -// For example:
    -// s1 = {a1, a2, a3}
    -// s2 = {a1, a2, a4, a5}
    -// s1.SymmetricDifference(s2) = {a3, a4, a5}
    -// s2.SymmetricDifference(s1) = {a3, a4, a5}
    -func (s1 $.type|public$) SymmetricDifference(s2 $.type|public$) $.type|public$ {
    -	return s1.Difference(s2).Union(s2.Difference(s1))
    -}
    -
    -// Union returns a new set which includes items in either s1 or s2.
    -// For example:
    -// s1 = {a1, a2}
    -// s2 = {a3, a4}
    -// s1.Union(s2) = {a1, a2, a3, a4}
    -// s2.Union(s1) = {a1, a2, a3, a4}
    -func (s1 $.type|public$) Union(s2 $.type|public$) $.type|public$ {
    -	result := s1.Clone()
    -	for key := range s2 {
    -		result.Insert(key)
    -	}
    -	return result
    -}
    -
    -// Intersection returns a new set which includes the item in BOTH s1 and s2
    -// For example:
    -// s1 = {a1, a2}
    -// s2 = {a2, a3}
    -// s1.Intersection(s2) = {a2}
    -func (s1 $.type|public$) Intersection(s2 $.type|public$) $.type|public$ {
    -	var walk, other $.type|public$
    -	result := New$.type|public$()
    -	if s1.Len() < s2.Len() {
    -		walk = s1
    -		other = s2
    -	} else {
    -		walk = s2
    -		other = s1
    -	}
    -	for key := range walk {
    -		if other.Has(key) {
    -			result.Insert(key)
    -		}
    -	}
    -	return result
    -}
    -
    -// IsSuperset returns true if and only if s1 is a superset of s2.
    -func (s1 $.type|public$) IsSuperset(s2 $.type|public$) bool {
    -	for item := range s2 {
    -		if !s1.Has(item) {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// Equal returns true if and only if s1 is equal (as a set) to s2.
    -// Two sets are equal if their membership is identical.
    -// (In practice, this means same elements, order doesn't matter)
    -func (s1 $.type|public$) Equal(s2 $.type|public$) bool {
    -	return len(s1) == len(s2) && s1.IsSuperset(s2)
    -}
    -
    -type sortableSliceOf$.type|public$ []$.type|raw$
    -
    -func (s sortableSliceOf$.type|public$) Len() int { return len(s) }
    -func (s sortableSliceOf$.type|public$) Less(i, j int) bool { return less$.type|public$(s[i], s[j]) }
    -func (s sortableSliceOf$.type|public$) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
    -
    -// List returns the contents as a sorted $.type|raw$ slice.
    -func (s $.type|public$) List() []$.type|raw$ {
    -	res := make(sortableSliceOf$.type|public$, 0, len(s))
    -	for key := range s {
    -		res = append(res, key)
    -	}
    -	sort.Sort(res)
    -	return []$.type|raw$(res)
    -}
    -
    -// UnsortedList returns the slice with contents in random order.
    -func (s $.type|public$) UnsortedList() []$.type|raw$ {
    -	res :=make([]$.type|raw$, 0, len(s))
    -	for key := range s {
    -		res = append(res, key)
    -	}
    -	return res
    -}
    -
    -// Returns a single element from the set.
    -func (s $.type|public$) PopAny() ($.type|raw$, bool) {
    -	for key := range s {
    -		s.Delete(key)
    -		return key, true
    -	}
    -	var zeroValue $.type|raw$
    -	return zeroValue, false
    -}
    -
    -// Len returns the size of the set.
    -func (s $.type|public$) Len() int {
    -	return len(s)
    -}
    -
    -`
    diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go b/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go
    deleted file mode 100644
    index e9660c2f3a94..000000000000
    --- a/vendor/k8s.io/gengo/examples/set-gen/sets/byte.go
    +++ /dev/null
    @@ -1,221 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by set-gen. DO NOT EDIT.
    -
    -package sets
    -
    -import (
    -	"reflect"
    -	"sort"
    -)
    -
    -// sets.Byte is a set of bytes, implemented via map[byte]struct{} for minimal memory consumption.
    -type Byte map[byte]Empty
    -
    -// NewByte creates a Byte from a list of values.
    -func NewByte(items ...byte) Byte {
    -	ss := make(Byte, len(items))
    -	ss.Insert(items...)
    -	return ss
    -}
    -
    -// ByteKeySet creates a Byte from a keys of a map[byte](? extends interface{}).
    -// If the value passed in is not actually a map, this will panic.
    -func ByteKeySet(theMap interface{}) Byte {
    -	v := reflect.ValueOf(theMap)
    -	ret := Byte{}
    -
    -	for _, keyValue := range v.MapKeys() {
    -		ret.Insert(keyValue.Interface().(byte))
    -	}
    -	return ret
    -}
    -
    -// Insert adds items to the set.
    -func (s Byte) Insert(items ...byte) Byte {
    -	for _, item := range items {
    -		s[item] = Empty{}
    -	}
    -	return s
    -}
    -
    -// Delete removes all items from the set.
    -func (s Byte) Delete(items ...byte) Byte {
    -	for _, item := range items {
    -		delete(s, item)
    -	}
    -	return s
    -}
    -
    -// Has returns true if and only if item is contained in the set.
    -func (s Byte) Has(item byte) bool {
    -	_, contained := s[item]
    -	return contained
    -}
    -
    -// HasAll returns true if and only if all items are contained in the set.
    -func (s Byte) HasAll(items ...byte) bool {
    -	for _, item := range items {
    -		if !s.Has(item) {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// HasAny returns true if any items are contained in the set.
    -func (s Byte) HasAny(items ...byte) bool {
    -	for _, item := range items {
    -		if s.Has(item) {
    -			return true
    -		}
    -	}
    -	return false
    -}
    -
    -// Clone returns a new set which is a copy of the current set.
    -func (s Byte) Clone() Byte {
    -	result := make(Byte, len(s))
    -	for key := range s {
    -		result.Insert(key)
    -	}
    -	return result
    -}
    -
    -// Difference returns a set of objects that are not in s2.
    -// For example:
    -// s1 = {a1, a2, a3}
    -// s2 = {a1, a2, a4, a5}
    -// s1.Difference(s2) = {a3}
    -// s2.Difference(s1) = {a4, a5}
    -func (s1 Byte) Difference(s2 Byte) Byte {
    -	result := NewByte()
    -	for key := range s1 {
    -		if !s2.Has(key) {
    -			result.Insert(key)
    -		}
    -	}
    -	return result
    -}
    -
    -// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
    -// For example:
    -// s1 = {a1, a2, a3}
    -// s2 = {a1, a2, a4, a5}
    -// s1.SymmetricDifference(s2) = {a3, a4, a5}
    -// s2.SymmetricDifference(s1) = {a3, a4, a5}
    -func (s1 Byte) SymmetricDifference(s2 Byte) Byte {
    -	return s1.Difference(s2).Union(s2.Difference(s1))
    -}
    -
    -// Union returns a new set which includes items in either s1 or s2.
    -// For example:
    -// s1 = {a1, a2}
    -// s2 = {a3, a4}
    -// s1.Union(s2) = {a1, a2, a3, a4}
    -// s2.Union(s1) = {a1, a2, a3, a4}
    -func (s1 Byte) Union(s2 Byte) Byte {
    -	result := s1.Clone()
    -	for key := range s2 {
    -		result.Insert(key)
    -	}
    -	return result
    -}
    -
    -// Intersection returns a new set which includes the item in BOTH s1 and s2
    -// For example:
    -// s1 = {a1, a2}
    -// s2 = {a2, a3}
    -// s1.Intersection(s2) = {a2}
    -func (s1 Byte) Intersection(s2 Byte) Byte {
    -	var walk, other Byte
    -	result := NewByte()
    -	if s1.Len() < s2.Len() {
    -		walk = s1
    -		other = s2
    -	} else {
    -		walk = s2
    -		other = s1
    -	}
    -	for key := range walk {
    -		if other.Has(key) {
    -			result.Insert(key)
    -		}
    -	}
    -	return result
    -}
    -
    -// IsSuperset returns true if and only if s1 is a superset of s2.
    -func (s1 Byte) IsSuperset(s2 Byte) bool {
    -	for item := range s2 {
    -		if !s1.Has(item) {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// Equal returns true if and only if s1 is equal (as a set) to s2.
    -// Two sets are equal if their membership is identical.
    -// (In practice, this means same elements, order doesn't matter)
    -func (s1 Byte) Equal(s2 Byte) bool {
    -	return len(s1) == len(s2) && s1.IsSuperset(s2)
    -}
    -
    -type sortableSliceOfByte []byte
    -
    -func (s sortableSliceOfByte) Len() int           { return len(s) }
    -func (s sortableSliceOfByte) Less(i, j int) bool { return lessByte(s[i], s[j]) }
    -func (s sortableSliceOfByte) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
    -
    -// List returns the contents as a sorted byte slice.
    -func (s Byte) List() []byte {
    -	res := make(sortableSliceOfByte, 0, len(s))
    -	for key := range s {
    -		res = append(res, key)
    -	}
    -	sort.Sort(res)
    -	return []byte(res)
    -}
    -
    -// UnsortedList returns the slice with contents in random order.
    -func (s Byte) UnsortedList() []byte {
    -	res := make([]byte, 0, len(s))
    -	for key := range s {
    -		res = append(res, key)
    -	}
    -	return res
    -}
    -
    -// Returns a single element from the set.
    -func (s Byte) PopAny() (byte, bool) {
    -	for key := range s {
    -		s.Delete(key)
    -		return key, true
    -	}
    -	var zeroValue byte
    -	return zeroValue, false
    -}
    -
    -// Len returns the size of the set.
    -func (s Byte) Len() int {
    -	return len(s)
    -}
    -
    -func lessByte(lhs, rhs byte) bool {
    -	return lhs < rhs
    -}
    diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/int.go b/vendor/k8s.io/gengo/examples/set-gen/sets/int.go
    deleted file mode 100644
    index f614f06e1f97..000000000000
    --- a/vendor/k8s.io/gengo/examples/set-gen/sets/int.go
    +++ /dev/null
    @@ -1,221 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by set-gen. DO NOT EDIT.
    -
    -package sets
    -
    -import (
    -	"reflect"
    -	"sort"
    -)
    -
    -// sets.Int is a set of ints, implemented via map[int]struct{} for minimal memory consumption.
    -type Int map[int]Empty
    -
    -// NewInt creates a Int from a list of values.
    -func NewInt(items ...int) Int {
    -	ss := make(Int, len(items))
    -	ss.Insert(items...)
    -	return ss
    -}
    -
    -// IntKeySet creates a Int from a keys of a map[int](? extends interface{}).
    -// If the value passed in is not actually a map, this will panic.
    -func IntKeySet(theMap interface{}) Int {
    -	v := reflect.ValueOf(theMap)
    -	ret := Int{}
    -
    -	for _, keyValue := range v.MapKeys() {
    -		ret.Insert(keyValue.Interface().(int))
    -	}
    -	return ret
    -}
    -
    -// Insert adds items to the set.
    -func (s Int) Insert(items ...int) Int {
    -	for _, item := range items {
    -		s[item] = Empty{}
    -	}
    -	return s
    -}
    -
    -// Delete removes all items from the set.
    -func (s Int) Delete(items ...int) Int {
    -	for _, item := range items {
    -		delete(s, item)
    -	}
    -	return s
    -}
    -
    -// Has returns true if and only if item is contained in the set.
    -func (s Int) Has(item int) bool {
    -	_, contained := s[item]
    -	return contained
    -}
    -
    -// HasAll returns true if and only if all items are contained in the set.
    -func (s Int) HasAll(items ...int) bool {
    -	for _, item := range items {
    -		if !s.Has(item) {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// HasAny returns true if any items are contained in the set.
    -func (s Int) HasAny(items ...int) bool {
    -	for _, item := range items {
    -		if s.Has(item) {
    -			return true
    -		}
    -	}
    -	return false
    -}
    -
    -// Clone returns a new set which is a copy of the current set.
    -func (s Int) Clone() Int {
    -	result := make(Int, len(s))
    -	for key := range s {
    -		result.Insert(key)
    -	}
    -	return result
    -}
    -
    -// Difference returns a set of objects that are not in s2.
    -// For example:
    -// s1 = {a1, a2, a3}
    -// s2 = {a1, a2, a4, a5}
    -// s1.Difference(s2) = {a3}
    -// s2.Difference(s1) = {a4, a5}
    -func (s1 Int) Difference(s2 Int) Int {
    -	result := NewInt()
    -	for key := range s1 {
    -		if !s2.Has(key) {
    -			result.Insert(key)
    -		}
    -	}
    -	return result
    -}
    -
    -// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
    -// For example:
    -// s1 = {a1, a2, a3}
    -// s2 = {a1, a2, a4, a5}
    -// s1.SymmetricDifference(s2) = {a3, a4, a5}
    -// s2.SymmetricDifference(s1) = {a3, a4, a5}
    -func (s1 Int) SymmetricDifference(s2 Int) Int {
    -	return s1.Difference(s2).Union(s2.Difference(s1))
    -}
    -
    -// Union returns a new set which includes items in either s1 or s2.
    -// For example:
    -// s1 = {a1, a2}
    -// s2 = {a3, a4}
    -// s1.Union(s2) = {a1, a2, a3, a4}
    -// s2.Union(s1) = {a1, a2, a3, a4}
    -func (s1 Int) Union(s2 Int) Int {
    -	result := s1.Clone()
    -	for key := range s2 {
    -		result.Insert(key)
    -	}
    -	return result
    -}
    -
    -// Intersection returns a new set which includes the item in BOTH s1 and s2
    -// For example:
    -// s1 = {a1, a2}
    -// s2 = {a2, a3}
    -// s1.Intersection(s2) = {a2}
    -func (s1 Int) Intersection(s2 Int) Int {
    -	var walk, other Int
    -	result := NewInt()
    -	if s1.Len() < s2.Len() {
    -		walk = s1
    -		other = s2
    -	} else {
    -		walk = s2
    -		other = s1
    -	}
    -	for key := range walk {
    -		if other.Has(key) {
    -			result.Insert(key)
    -		}
    -	}
    -	return result
    -}
    -
    -// IsSuperset returns true if and only if s1 is a superset of s2.
    -func (s1 Int) IsSuperset(s2 Int) bool {
    -	for item := range s2 {
    -		if !s1.Has(item) {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// Equal returns true if and only if s1 is equal (as a set) to s2.
    -// Two sets are equal if their membership is identical.
    -// (In practice, this means same elements, order doesn't matter)
    -func (s1 Int) Equal(s2 Int) bool {
    -	return len(s1) == len(s2) && s1.IsSuperset(s2)
    -}
    -
    -type sortableSliceOfInt []int
    -
    -func (s sortableSliceOfInt) Len() int           { return len(s) }
    -func (s sortableSliceOfInt) Less(i, j int) bool { return lessInt(s[i], s[j]) }
    -func (s sortableSliceOfInt) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
    -
    -// List returns the contents as a sorted int slice.
    -func (s Int) List() []int {
    -	res := make(sortableSliceOfInt, 0, len(s))
    -	for key := range s {
    -		res = append(res, key)
    -	}
    -	sort.Sort(res)
    -	return []int(res)
    -}
    -
    -// UnsortedList returns the slice with contents in random order.
    -func (s Int) UnsortedList() []int {
    -	res := make([]int, 0, len(s))
    -	for key := range s {
    -		res = append(res, key)
    -	}
    -	return res
    -}
    -
    -// Returns a single element from the set.
    -func (s Int) PopAny() (int, bool) {
    -	for key := range s {
    -		s.Delete(key)
    -		return key, true
    -	}
    -	var zeroValue int
    -	return zeroValue, false
    -}
    -
    -// Len returns the size of the set.
    -func (s Int) Len() int {
    -	return len(s)
    -}
    -
    -func lessInt(lhs, rhs int) bool {
    -	return lhs < rhs
    -}
    diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go b/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go
    deleted file mode 100644
    index 995d99bd90db..000000000000
    --- a/vendor/k8s.io/gengo/examples/set-gen/sets/int64.go
    +++ /dev/null
    @@ -1,221 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by set-gen. DO NOT EDIT.
    -
    -package sets
    -
    -import (
    -	"reflect"
    -	"sort"
    -)
    -
    -// sets.Int64 is a set of int64s, implemented via map[int64]struct{} for minimal memory consumption.
    -type Int64 map[int64]Empty
    -
    -// NewInt64 creates a Int64 from a list of values.
    -func NewInt64(items ...int64) Int64 {
    -	ss := make(Int64, len(items))
    -	ss.Insert(items...)
    -	return ss
    -}
    -
    -// Int64KeySet creates a Int64 from a keys of a map[int64](? extends interface{}).
    -// If the value passed in is not actually a map, this will panic.
    -func Int64KeySet(theMap interface{}) Int64 {
    -	v := reflect.ValueOf(theMap)
    -	ret := Int64{}
    -
    -	for _, keyValue := range v.MapKeys() {
    -		ret.Insert(keyValue.Interface().(int64))
    -	}
    -	return ret
    -}
    -
    -// Insert adds items to the set.
    -func (s Int64) Insert(items ...int64) Int64 {
    -	for _, item := range items {
    -		s[item] = Empty{}
    -	}
    -	return s
    -}
    -
    -// Delete removes all items from the set.
    -func (s Int64) Delete(items ...int64) Int64 {
    -	for _, item := range items {
    -		delete(s, item)
    -	}
    -	return s
    -}
    -
    -// Has returns true if and only if item is contained in the set.
    -func (s Int64) Has(item int64) bool {
    -	_, contained := s[item]
    -	return contained
    -}
    -
    -// HasAll returns true if and only if all items are contained in the set.
    -func (s Int64) HasAll(items ...int64) bool {
    -	for _, item := range items {
    -		if !s.Has(item) {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// HasAny returns true if any items are contained in the set.
    -func (s Int64) HasAny(items ...int64) bool {
    -	for _, item := range items {
    -		if s.Has(item) {
    -			return true
    -		}
    -	}
    -	return false
    -}
    -
    -// Clone returns a new set which is a copy of the current set.
    -func (s Int64) Clone() Int64 {
    -	result := make(Int64, len(s))
    -	for key := range s {
    -		result.Insert(key)
    -	}
    -	return result
    -}
    -
    -// Difference returns a set of objects that are not in s2.
    -// For example:
    -// s1 = {a1, a2, a3}
    -// s2 = {a1, a2, a4, a5}
    -// s1.Difference(s2) = {a3}
    -// s2.Difference(s1) = {a4, a5}
    -func (s1 Int64) Difference(s2 Int64) Int64 {
    -	result := NewInt64()
    -	for key := range s1 {
    -		if !s2.Has(key) {
    -			result.Insert(key)
    -		}
    -	}
    -	return result
    -}
    -
    -// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
    -// For example:
    -// s1 = {a1, a2, a3}
    -// s2 = {a1, a2, a4, a5}
    -// s1.SymmetricDifference(s2) = {a3, a4, a5}
    -// s2.SymmetricDifference(s1) = {a3, a4, a5}
    -func (s1 Int64) SymmetricDifference(s2 Int64) Int64 {
    -	return s1.Difference(s2).Union(s2.Difference(s1))
    -}
    -
    -// Union returns a new set which includes items in either s1 or s2.
    -// For example:
    -// s1 = {a1, a2}
    -// s2 = {a3, a4}
    -// s1.Union(s2) = {a1, a2, a3, a4}
    -// s2.Union(s1) = {a1, a2, a3, a4}
    -func (s1 Int64) Union(s2 Int64) Int64 {
    -	result := s1.Clone()
    -	for key := range s2 {
    -		result.Insert(key)
    -	}
    -	return result
    -}
    -
    -// Intersection returns a new set which includes the item in BOTH s1 and s2
    -// For example:
    -// s1 = {a1, a2}
    -// s2 = {a2, a3}
    -// s1.Intersection(s2) = {a2}
    -func (s1 Int64) Intersection(s2 Int64) Int64 {
    -	var walk, other Int64
    -	result := NewInt64()
    -	if s1.Len() < s2.Len() {
    -		walk = s1
    -		other = s2
    -	} else {
    -		walk = s2
    -		other = s1
    -	}
    -	for key := range walk {
    -		if other.Has(key) {
    -			result.Insert(key)
    -		}
    -	}
    -	return result
    -}
    -
    -// IsSuperset returns true if and only if s1 is a superset of s2.
    -func (s1 Int64) IsSuperset(s2 Int64) bool {
    -	for item := range s2 {
    -		if !s1.Has(item) {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// Equal returns true if and only if s1 is equal (as a set) to s2.
    -// Two sets are equal if their membership is identical.
    -// (In practice, this means same elements, order doesn't matter)
    -func (s1 Int64) Equal(s2 Int64) bool {
    -	return len(s1) == len(s2) && s1.IsSuperset(s2)
    -}
    -
    -type sortableSliceOfInt64 []int64
    -
    -func (s sortableSliceOfInt64) Len() int           { return len(s) }
    -func (s sortableSliceOfInt64) Less(i, j int) bool { return lessInt64(s[i], s[j]) }
    -func (s sortableSliceOfInt64) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
    -
    -// List returns the contents as a sorted int64 slice.
    -func (s Int64) List() []int64 {
    -	res := make(sortableSliceOfInt64, 0, len(s))
    -	for key := range s {
    -		res = append(res, key)
    -	}
    -	sort.Sort(res)
    -	return []int64(res)
    -}
    -
    -// UnsortedList returns the slice with contents in random order.
    -func (s Int64) UnsortedList() []int64 {
    -	res := make([]int64, 0, len(s))
    -	for key := range s {
    -		res = append(res, key)
    -	}
    -	return res
    -}
    -
    -// Returns a single element from the set.
    -func (s Int64) PopAny() (int64, bool) {
    -	for key := range s {
    -		s.Delete(key)
    -		return key, true
    -	}
    -	var zeroValue int64
    -	return zeroValue, false
    -}
    -
    -// Len returns the size of the set.
    -func (s Int64) Len() int {
    -	return len(s)
    -}
    -
    -func lessInt64(lhs, rhs int64) bool {
    -	return lhs < rhs
    -}
    diff --git a/vendor/k8s.io/gengo/examples/set-gen/sets/string.go b/vendor/k8s.io/gengo/examples/set-gen/sets/string.go
    deleted file mode 100644
    index 4a4a92fd21fd..000000000000
    --- a/vendor/k8s.io/gengo/examples/set-gen/sets/string.go
    +++ /dev/null
    @@ -1,221 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by set-gen. DO NOT EDIT.
    -
    -package sets
    -
    -import (
    -	"reflect"
    -	"sort"
    -)
    -
    -// sets.String is a set of strings, implemented via map[string]struct{} for minimal memory consumption.
    -type String map[string]Empty
    -
    -// NewString creates a String from a list of values.
    -func NewString(items ...string) String {
    -	ss := make(String, len(items))
    -	ss.Insert(items...)
    -	return ss
    -}
    -
    -// StringKeySet creates a String from a keys of a map[string](? extends interface{}).
    -// If the value passed in is not actually a map, this will panic.
    -func StringKeySet(theMap interface{}) String {
    -	v := reflect.ValueOf(theMap)
    -	ret := String{}
    -
    -	for _, keyValue := range v.MapKeys() {
    -		ret.Insert(keyValue.Interface().(string))
    -	}
    -	return ret
    -}
    -
    -// Insert adds items to the set.
    -func (s String) Insert(items ...string) String {
    -	for _, item := range items {
    -		s[item] = Empty{}
    -	}
    -	return s
    -}
    -
    -// Delete removes all items from the set.
    -func (s String) Delete(items ...string) String {
    -	for _, item := range items {
    -		delete(s, item)
    -	}
    -	return s
    -}
    -
    -// Has returns true if and only if item is contained in the set.
    -func (s String) Has(item string) bool {
    -	_, contained := s[item]
    -	return contained
    -}
    -
    -// HasAll returns true if and only if all items are contained in the set.
    -func (s String) HasAll(items ...string) bool {
    -	for _, item := range items {
    -		if !s.Has(item) {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// HasAny returns true if any items are contained in the set.
    -func (s String) HasAny(items ...string) bool {
    -	for _, item := range items {
    -		if s.Has(item) {
    -			return true
    -		}
    -	}
    -	return false
    -}
    -
    -// Clone returns a new set which is a copy of the current set.
    -func (s String) Clone() String {
    -	result := make(String, len(s))
    -	for key := range s {
    -		result.Insert(key)
    -	}
    -	return result
    -}
    -
    -// Difference returns a set of objects that are not in s2.
    -// For example:
    -// s1 = {a1, a2, a3}
    -// s2 = {a1, a2, a4, a5}
    -// s1.Difference(s2) = {a3}
    -// s2.Difference(s1) = {a4, a5}
    -func (s1 String) Difference(s2 String) String {
    -	result := NewString()
    -	for key := range s1 {
    -		if !s2.Has(key) {
    -			result.Insert(key)
    -		}
    -	}
    -	return result
    -}
    -
    -// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
    -// For example:
    -// s1 = {a1, a2, a3}
    -// s2 = {a1, a2, a4, a5}
    -// s1.SymmetricDifference(s2) = {a3, a4, a5}
    -// s2.SymmetricDifference(s1) = {a3, a4, a5}
    -func (s1 String) SymmetricDifference(s2 String) String {
    -	return s1.Difference(s2).Union(s2.Difference(s1))
    -}
    -
    -// Union returns a new set which includes items in either s1 or s2.
    -// For example:
    -// s1 = {a1, a2}
    -// s2 = {a3, a4}
    -// s1.Union(s2) = {a1, a2, a3, a4}
    -// s2.Union(s1) = {a1, a2, a3, a4}
    -func (s1 String) Union(s2 String) String {
    -	result := s1.Clone()
    -	for key := range s2 {
    -		result.Insert(key)
    -	}
    -	return result
    -}
    -
    -// Intersection returns a new set which includes the item in BOTH s1 and s2
    -// For example:
    -// s1 = {a1, a2}
    -// s2 = {a2, a3}
    -// s1.Intersection(s2) = {a2}
    -func (s1 String) Intersection(s2 String) String {
    -	var walk, other String
    -	result := NewString()
    -	if s1.Len() < s2.Len() {
    -		walk = s1
    -		other = s2
    -	} else {
    -		walk = s2
    -		other = s1
    -	}
    -	for key := range walk {
    -		if other.Has(key) {
    -			result.Insert(key)
    -		}
    -	}
    -	return result
    -}
    -
    -// IsSuperset returns true if and only if s1 is a superset of s2.
    -func (s1 String) IsSuperset(s2 String) bool {
    -	for item := range s2 {
    -		if !s1.Has(item) {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// Equal returns true if and only if s1 is equal (as a set) to s2.
    -// Two sets are equal if their membership is identical.
    -// (In practice, this means same elements, order doesn't matter)
    -func (s1 String) Equal(s2 String) bool {
    -	return len(s1) == len(s2) && s1.IsSuperset(s2)
    -}
    -
    -type sortableSliceOfString []string
    -
    -func (s sortableSliceOfString) Len() int           { return len(s) }
    -func (s sortableSliceOfString) Less(i, j int) bool { return lessString(s[i], s[j]) }
    -func (s sortableSliceOfString) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
    -
    -// List returns the contents as a sorted string slice.
    -func (s String) List() []string {
    -	res := make(sortableSliceOfString, 0, len(s))
    -	for key := range s {
    -		res = append(res, key)
    -	}
    -	sort.Sort(res)
    -	return []string(res)
    -}
    -
    -// UnsortedList returns the slice with contents in random order.
    -func (s String) UnsortedList() []string {
    -	res := make([]string, 0, len(s))
    -	for key := range s {
    -		res = append(res, key)
    -	}
    -	return res
    -}
    -
    -// Returns a single element from the set.
    -func (s String) PopAny() (string, bool) {
    -	for key := range s {
    -		s.Delete(key)
    -		return key, true
    -	}
    -	var zeroValue string
    -	return zeroValue, false
    -}
    -
    -// Len returns the size of the set.
    -func (s String) Len() int {
    -	return len(s)
    -}
    -
    -func lessString(lhs, rhs string) bool {
    -	return lhs < rhs
    -}
    diff --git a/vendor/github.com/docker/docker/LICENSE b/vendor/k8s.io/gengo/v2/LICENSE
    similarity index 93%
    rename from vendor/github.com/docker/docker/LICENSE
    rename to vendor/k8s.io/gengo/v2/LICENSE
    index 6d8d58fb676b..00b2401109fd 100644
    --- a/vendor/github.com/docker/docker/LICENSE
    +++ b/vendor/k8s.io/gengo/v2/LICENSE
    @@ -1,7 +1,7 @@
     
                                      Apache License
                                Version 2.0, January 2004
    -                        https://www.apache.org/licenses/
    +                        http://www.apache.org/licenses/
     
        TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
     
    @@ -176,13 +176,24 @@
     
        END OF TERMS AND CONDITIONS
     
    -   Copyright 2013-2018 Docker, Inc.
    +   APPENDIX: How to apply the Apache License to your work.
    +
    +      To apply the Apache License to your work, attach the following
    +      boilerplate notice, with the fields enclosed by brackets "[]"
    +      replaced with your own identifying information. (Don't include
    +      the brackets!)  The text should be enclosed in the appropriate
    +      comment syntax for the file format. We also recommend that a
    +      file or class name and description of purpose be included on the
    +      same "printed page" as the copyright notice for easier
    +      identification within third-party archives.
    +
    +   Copyright 2014 The Kubernetes Authors.
     
        Licensed under the Apache License, Version 2.0 (the "License");
        you may not use this file except in compliance with the License.
        You may obtain a copy of the License at
     
    -       https://www.apache.org/licenses/LICENSE-2.0
    +       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,
    diff --git a/vendor/k8s.io/gengo/v2/Makefile b/vendor/k8s.io/gengo/v2/Makefile
    new file mode 100644
    index 000000000000..8d0fbdaa8a8a
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/Makefile
    @@ -0,0 +1,14 @@
    +all:
    +	go build ./...
    +
    +test:
    +	GODEBUG=gotypesalias=0 go test -race ./... -count=1
    +	GODEBUG=gotypesalias=1 go test -race ./... -count=1
    +
    +# We verify for the maximum version of the go directive as 1.20
    +# here because the oldest go directive that exists on our supported
    +# release branches in k/k is 1.20.
    +verify:
    +	GODEBUG=gotypesalias=0 ./hack/verify-examples.sh
    +	GODEBUG=gotypesalias=1 ./hack/verify-examples.sh
    +	./hack/verify-go-directive.sh 1.20
    diff --git a/vendor/k8s.io/gengo/v2/README.md b/vendor/k8s.io/gengo/v2/README.md
    new file mode 100644
    index 000000000000..79d1070d15f6
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/README.md
    @@ -0,0 +1,53 @@
    +[![GoDoc Widget]][GoDoc]  [![GoReport]][GoReportStatus]
    +
    +[GoDoc]: https://godoc.org/k8s.io/gengo
    +[GoDoc Widget]: https://godoc.org/k8s.io/gengo?status.svg
    +[GoReport]: https://goreportcard.com/badge/github.com/kubernetes/gengo
    +[GoReportStatus]: https://goreportcard.com/report/github.com/kubernetes/gengo
    +
    +# Gengo: a framework for building simple code generators
    +
    +This repo is used by Kubernetes to build some codegen tooling.  It is not
    +intended to be general-purpose and makes some assumptions that may not hold
    +outside of Kubernetes.
    +
    +In the past this repo was partially supported for external use (outside of the
    +Kubernetes project overall), but that is no longer true.  We may change the API
    +in incompatible ways, without warning.
    +
    +If you are not building something that is part of Kubernetes, DO NOT DEPEND ON
    +THIS REPO.
    +
    +## New usage within Kubernetes
    +
    +Gengo is a very opinionated framework.  It is primarily aimed at generating Go
    +code derived from types defined in other Go code, but it is possible to use it
    +for other things (e.g. proto files).  Net new tools should consider using
    +`golang.org/x/tools/go/packages` directly.  Gengo can serve as an example of
    +how to do that.
    +
    +If you still decide you want to use gengo, see the
    +[simple examples](./examples) in this repo or the more extensive tools in the
    +Kubernetes [code-generator](https://github.com/kubernetes/code-generator/)
    +repo.
    +
    +## Overview
    +
    +Gengo is used to build tools (generally a tool is a binary).  Each tool
    +describes some number of `Targets`. A target is a single output package, which
    +may be the same as the inputs (if the tool generates code alongside the inputs)
    +or different.  Each `Target` describes some number of `Generators`.  A
    +generator is responsible for emitting a single file into the target directory.
    +
    +Gengo helps the tool to load and process input packages, e.g. extracting type
    +information and associating comments.  Each target will be offered every known
    +type, and can filter that down to the set of types it cares about.  Each
    +generator will be offered the result of the target's filtering, and can filter
    +the set of types further.  Finally, the generator will be called to emit code
    +for all of the remaining types.
    +
    +The `tracer` example in this repo can be used to examine all of the hooks.
    +
    +## Contributing
    +
    +Please see [CONTRIBUTING.md](CONTRIBUTING.md) for instructions on how to contribute.
    diff --git a/vendor/k8s.io/gengo/v2/comments.go b/vendor/k8s.io/gengo/v2/comments.go
    new file mode 100644
    index 000000000000..ba49c432be74
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/comments.go
    @@ -0,0 +1,83 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package gengo
    +
    +import (
    +	"fmt"
    +	"strings"
    +)
    +
    +// ExtractCommentTags parses comments for lines of the form:
    +//
    +//	'marker' + "key=value".
    +//
    +// Values are optional; "" is the default.  A tag can be specified more than
    +// one time and all values are returned.  If the resulting map has an entry for
    +// a key, the value (a slice) is guaranteed to have at least 1 element.
    +//
    +// Example: if you pass "+" for 'marker', and the following lines are in
    +// the comments:
    +//
    +//	+foo=value1
    +//	+bar
    +//	+foo=value2
    +//	+baz="qux"
    +//
    +// Then this function will return:
    +//
    +//	map[string][]string{"foo":{"value1, "value2"}, "bar": {""}, "baz": {"qux"}}
    +func ExtractCommentTags(marker string, lines []string) map[string][]string {
    +	out := map[string][]string{}
    +	for _, line := range lines {
    +		line = strings.Trim(line, " ")
    +		if len(line) == 0 {
    +			continue
    +		}
    +		if !strings.HasPrefix(line, marker) {
    +			continue
    +		}
    +		// TODO: we could support multiple values per key if we split on spaces
    +		kv := strings.SplitN(line[len(marker):], "=", 2)
    +		if len(kv) == 2 {
    +			out[kv[0]] = append(out[kv[0]], kv[1])
    +		} else if len(kv) == 1 {
    +			out[kv[0]] = append(out[kv[0]], "")
    +		}
    +	}
    +	return out
    +}
    +
    +// ExtractSingleBoolCommentTag parses comments for lines of the form:
    +//
    +//	'marker' + "key=value1"
    +//
    +// If the tag is not found, the default value is returned.  Values are asserted
    +// to be boolean ("true" or "false"), and any other value will cause an error
    +// to be returned.  If the key has multiple values, the first one will be used.
    +func ExtractSingleBoolCommentTag(marker string, key string, defaultVal bool, lines []string) (bool, error) {
    +	values := ExtractCommentTags(marker, lines)[key]
    +	if values == nil {
    +		return defaultVal, nil
    +	}
    +	if values[0] == "true" {
    +		return true, nil
    +	}
    +	if values[0] == "false" {
    +		return false, nil
    +	}
    +	return false, fmt.Errorf("tag value for %q is not boolean: %q", key, values[0])
    +}
    diff --git a/vendor/k8s.io/gengo/v2/execute.go b/vendor/k8s.io/gengo/v2/execute.go
    new file mode 100644
    index 000000000000..c4aba2b11347
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/execute.go
    @@ -0,0 +1,98 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Package gengo is a code-generation framework.
    +package gengo
    +
    +import (
    +	"bytes"
    +	"fmt"
    +	"os"
    +	"path/filepath"
    +	"strconv"
    +	"strings"
    +	"time"
    +
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/parser"
    +)
    +
    +// StdBuildTag is a suggested build-tag which tools can use both as an argument
    +// to GoBoilerplate and to Execute.
    +const StdBuildTag = "ignore_autogenerated"
    +
    +// StdGeneratedBy is a suggested "generated by" line which tools can use as an
    +// argument to GoBoilerplate.
    +const StdGeneratedBy = "// Code generated by GENERATOR_NAME. DO NOT EDIT."
    +
    +// GoBoilerplate returns the Go file header:
    +// - an optional build tag (negative, set it to ignore generated code)
    +// - an optional boilerplate file
    +// - an optional "generated by" comment
    +func GoBoilerplate(headerFile, buildTag, generatedBy string) ([]byte, error) {
    +	buf := bytes.Buffer{}
    +
    +	if buildTag != "" {
    +		buf.WriteString(
    +			fmt.Sprintf("//go:build !%s\n// +build !%s\n\n", buildTag, buildTag))
    +	}
    +
    +	if headerFile != "" {
    +		b, err := os.ReadFile(headerFile)
    +		if err != nil {
    +			return nil, err
    +		}
    +		b = bytes.ReplaceAll(b, []byte("YEAR"), []byte(strconv.Itoa(time.Now().UTC().Year())))
    +		buf.Write(b)
    +		buf.WriteByte('\n')
    +	}
    +
    +	if generatedBy != "" {
    +		generatorName := filepath.Base(os.Args[0])
    +		// Strip the extension from the name to normalize output between *nix and Windows.
    +		generatorName = generatorName[:len(generatorName)-len(filepath.Ext(generatorName))]
    +		generatedByComment := strings.ReplaceAll(generatedBy, "GENERATOR_NAME", generatorName)
    +		buf.WriteString(fmt.Sprintf("%s\n\n", generatedByComment))
    +	}
    +
    +	return buf.Bytes(), nil
    +}
    +
    +// Execute implements most of a tool's main loop.
    +func Execute(nameSystems namer.NameSystems, defaultSystem string, getTargets func(*generator.Context) []generator.Target, buildTag string, patterns []string) error {
    +	var buildTags []string
    +	if buildTag != "" {
    +		buildTags = append(buildTags, buildTag)
    +	}
    +
    +	p := parser.NewWithOptions(parser.Options{BuildTags: buildTags})
    +	if err := p.LoadPackages(patterns...); err != nil {
    +		return fmt.Errorf("failed making a parser: %v", err)
    +	}
    +
    +	c, err := generator.NewContext(p, nameSystems, defaultSystem)
    +	if err != nil {
    +		return fmt.Errorf("failed making a context: %v", err)
    +	}
    +
    +	targets := getTargets(c)
    +	if err := c.ExecuteTargets(targets); err != nil {
    +		return fmt.Errorf("failed executing generator: %v", err)
    +	}
    +
    +	return nil
    +}
    diff --git a/vendor/k8s.io/gengo/v2/generator/doc.go b/vendor/k8s.io/gengo/v2/generator/doc.go
    new file mode 100644
    index 000000000000..ef0031cd6b6f
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/generator/doc.go
    @@ -0,0 +1,31 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Package generator defines an interface for code generators to implement.
    +//
    +// To use this package, you'll implement the "Package" and "Generator"
    +// interfaces; you'll call NewContext to load up the types you want to work
    +// with, and then you'll call one or more of the Execute methods. See the
    +// interface definitions for explanations. All output will have gofmt called on
    +// it automatically, so you do not need to worry about generating correct
    +// indentation.
    +//
    +// This package also exposes SnippetWriter. SnippetWriter reduces to a minimum
    +// the boilerplate involved in setting up a template from go's text/template
    +// package. Additionally, all naming systems in the Context will be added as
    +// functions to the parsed template, so that they can be called directly from
    +// your templates!
    +package generator // import "k8s.io/gengo/v2/generator"
    diff --git a/vendor/k8s.io/gengo/v2/generator/error_tracker.go b/vendor/k8s.io/gengo/v2/generator/error_tracker.go
    new file mode 100644
    index 000000000000..964dae37ba55
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/generator/error_tracker.go
    @@ -0,0 +1,50 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package generator
    +
    +import (
    +	"io"
    +)
    +
    +// ErrorTracker tracks errors to the underlying writer, so that you can ignore
    +// them until you're ready to return.
    +type ErrorTracker struct {
    +	io.Writer
    +	err error
    +}
    +
    +// NewErrorTracker makes a new error tracker; note that it implements io.Writer.
    +func NewErrorTracker(w io.Writer) *ErrorTracker {
    +	return &ErrorTracker{Writer: w}
    +}
    +
    +// Write intercepts calls to Write.
    +func (et *ErrorTracker) Write(p []byte) (n int, err error) {
    +	if et.err != nil {
    +		return 0, et.err
    +	}
    +	n, err = et.Writer.Write(p)
    +	if err != nil {
    +		et.err = err
    +	}
    +	return n, err
    +}
    +
    +// Error returns nil if no error has occurred, otherwise it returns the error.
    +func (et *ErrorTracker) Error() error {
    +	return et.err
    +}
    diff --git a/vendor/k8s.io/gengo/v2/generator/execute.go b/vendor/k8s.io/gengo/v2/generator/execute.go
    new file mode 100644
    index 000000000000..a1e052f5cc67
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/generator/execute.go
    @@ -0,0 +1,273 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package generator
    +
    +import (
    +	"bytes"
    +	"errors"
    +	"fmt"
    +	"io"
    +	"os"
    +	"path/filepath"
    +	"strings"
    +
    +	"golang.org/x/tools/imports"
    +
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
    +	"k8s.io/klog/v2"
    +)
    +
    +// ExecuteTargets runs the generators for the provided targets.
    +func (c *Context) ExecuteTargets(targets []Target) error {
    +	klog.V(5).Infof("ExecuteTargets: %d targets", len(targets))
    +
    +	var errs []error
    +	for _, tgt := range targets {
    +		if err := c.ExecuteTarget(tgt); err != nil {
    +			errs = append(errs, err)
    +		}
    +	}
    +	if len(errs) > 0 {
    +		return fmt.Errorf("some targets had errors: %w", errors.Join(errs...))
    +	}
    +	return nil
    +}
    +
    +type DefaultFileType struct {
    +	Format   func([]byte) ([]byte, error)
    +	Assemble func(io.Writer, *File)
    +}
    +
    +func (ft DefaultFileType) AssembleFile(f *File, pathname string) error {
    +	klog.V(5).Infof("Assembling file %q", pathname)
    +
    +	destFile, err := os.Create(pathname)
    +	if err != nil {
    +		return err
    +	}
    +	defer destFile.Close()
    +
    +	b := &bytes.Buffer{}
    +	et := NewErrorTracker(b)
    +	ft.Assemble(et, f)
    +	if et.Error() != nil {
    +		return et.Error()
    +	}
    +	if formatted, err := ft.Format(b.Bytes()); err != nil {
    +		err = fmt.Errorf("unable to format file %q (%v)", pathname, err)
    +		// Write the file anyway, so they can see what's going wrong and fix the generator.
    +		if _, err2 := destFile.Write(b.Bytes()); err2 != nil {
    +			return err2
    +		}
    +		return err
    +	} else {
    +		_, err = destFile.Write(formatted)
    +		return err
    +	}
    +}
    +
    +func assembleGoFile(w io.Writer, f *File) {
    +	w.Write(f.Header)
    +	fmt.Fprintf(w, "package %v\n\n", f.PackageName)
    +
    +	if len(f.Imports) > 0 {
    +		fmt.Fprint(w, "import (\n")
    +		for i := range f.Imports {
    +			if strings.Contains(i, "\"") {
    +				// they included quotes, or are using the
    +				// `name "path/to/pkg"` format.
    +				fmt.Fprintf(w, "\t%s\n", i)
    +			} else {
    +				fmt.Fprintf(w, "\t%q\n", i)
    +			}
    +		}
    +		fmt.Fprint(w, ")\n\n")
    +	}
    +
    +	if f.Vars.Len() > 0 {
    +		fmt.Fprint(w, "var (\n")
    +		w.Write(f.Vars.Bytes())
    +		fmt.Fprint(w, ")\n\n")
    +	}
    +
    +	if f.Consts.Len() > 0 {
    +		fmt.Fprint(w, "const (\n")
    +		w.Write(f.Consts.Bytes())
    +		fmt.Fprint(w, ")\n\n")
    +	}
    +
    +	w.Write(f.Body.Bytes())
    +}
    +
    +func importsWrapper(src []byte) ([]byte, error) {
    +	opt := imports.Options{
    +		Comments:   true,
    +		TabIndent:  true,
    +		TabWidth:   8,
    +		FormatOnly: true, // Disable the insertion and deletion of imports
    +	}
    +	return imports.Process("", src, &opt)
    +}
    +
    +func NewGoFile() *DefaultFileType {
    +	return &DefaultFileType{
    +		Format:   importsWrapper,
    +		Assemble: assembleGoFile,
    +	}
    +}
    +
    +// format should be one line only, and not end with \n.
    +func addIndentHeaderComment(b *bytes.Buffer, format string, args ...interface{}) {
    +	if b.Len() > 0 {
    +		fmt.Fprintf(b, "\n// "+format+"\n", args...)
    +	} else {
    +		fmt.Fprintf(b, "// "+format+"\n", args...)
    +	}
    +}
    +
    +func (c *Context) filteredBy(f func(*Context, *types.Type) bool) *Context {
    +	c2 := *c
    +	c2.Order = []*types.Type{}
    +	for _, t := range c.Order {
    +		if f(c, t) {
    +			c2.Order = append(c2.Order, t)
    +		}
    +	}
    +	return &c2
    +}
    +
    +// make a new context; inheret c.Namers, but add on 'namers'. In case of a name
    +// collision, the namer in 'namers' wins.
    +func (c *Context) addNameSystems(namers namer.NameSystems) *Context {
    +	if namers == nil {
    +		return c
    +	}
    +	c2 := *c
    +	// Copy the existing name systems so we don't corrupt a parent context
    +	c2.Namers = namer.NameSystems{}
    +	for k, v := range c.Namers {
    +		c2.Namers[k] = v
    +	}
    +
    +	for name, namer := range namers {
    +		c2.Namers[name] = namer
    +	}
    +	return &c2
    +}
    +
    +// ExecuteTarget runs the generators for a single target.
    +func (c *Context) ExecuteTarget(tgt Target) error {
    +	tgtDir := tgt.Dir()
    +	if tgtDir == "" {
    +		return fmt.Errorf("no directory for target %s", tgt.Path())
    +	}
    +	klog.V(5).Infof("Executing target %q (%q)", tgt.Name(), tgtDir)
    +
    +	// Filter out any types the *package* doesn't care about.
    +	packageContext := c.filteredBy(tgt.Filter)
    +
    +	if err := os.MkdirAll(tgtDir, 0755); err != nil {
    +		return err
    +	}
    +
    +	files := map[string]*File{}
    +	for _, g := range tgt.Generators(packageContext) {
    +		// Filter out types the *generator* doesn't care about.
    +		genContext := packageContext.filteredBy(g.Filter)
    +		// Now add any extra name systems defined by this generator
    +		genContext = genContext.addNameSystems(g.Namers(genContext))
    +
    +		fileType := g.FileType()
    +		if len(fileType) == 0 {
    +			return fmt.Errorf("generator %q must specify a file type", g.Name())
    +		}
    +		f := files[g.Filename()]
    +		if f == nil {
    +			// This is the first generator to reference this file, so start it.
    +			f = &File{
    +				Name:        g.Filename(),
    +				FileType:    fileType,
    +				PackageName: tgt.Name(),
    +				PackagePath: tgt.Path(),
    +				PackageDir:  tgt.Dir(),
    +				Header:      tgt.Header(g.Filename()),
    +				Imports:     map[string]struct{}{},
    +			}
    +			files[f.Name] = f
    +		} else if f.FileType != g.FileType() {
    +			return fmt.Errorf("file %q already has type %q, but generator %q wants to use type %q", f.Name, f.FileType, g.Name(), g.FileType())
    +		}
    +
    +		if vars := g.PackageVars(genContext); len(vars) > 0 {
    +			addIndentHeaderComment(&f.Vars, "Package-wide variables from generator %q.", g.Name())
    +			for _, v := range vars {
    +				if _, err := fmt.Fprintf(&f.Vars, "%s\n", v); err != nil {
    +					return err
    +				}
    +			}
    +		}
    +		if consts := g.PackageConsts(genContext); len(consts) > 0 {
    +			addIndentHeaderComment(&f.Consts, "Package-wide consts from generator %q.", g.Name())
    +			for _, v := range consts {
    +				if _, err := fmt.Fprintf(&f.Consts, "%s\n", v); err != nil {
    +					return err
    +				}
    +			}
    +		}
    +		if err := genContext.executeBody(&f.Body, g); err != nil {
    +			return err
    +		}
    +		if imports := g.Imports(genContext); len(imports) > 0 {
    +			for _, i := range imports {
    +				f.Imports[i] = struct{}{}
    +			}
    +		}
    +	}
    +
    +	var errs []error
    +	for _, f := range files {
    +		finalPath := filepath.Join(tgtDir, f.Name)
    +		assembler, ok := c.FileTypes[f.FileType]
    +		if !ok {
    +			return fmt.Errorf("the file type %q registered for file %q does not exist in the context", f.FileType, f.Name)
    +		}
    +		if err := assembler.AssembleFile(f, finalPath); err != nil {
    +			errs = append(errs, err)
    +		}
    +	}
    +	if len(errs) > 0 {
    +		return fmt.Errorf("errors in target %q: %w", tgt.Path(), errors.Join(errs...))
    +	}
    +	return nil
    +}
    +
    +func (c *Context) executeBody(w io.Writer, generator Generator) error {
    +	et := NewErrorTracker(w)
    +	if err := generator.Init(c, et); err != nil {
    +		return err
    +	}
    +	for _, t := range c.Order {
    +		if err := generator.GenerateType(c, t, et); err != nil {
    +			return err
    +		}
    +	}
    +	if err := generator.Finalize(c, et); err != nil {
    +		return err
    +	}
    +	return et.Error()
    +}
    diff --git a/vendor/k8s.io/gengo/v2/generator/generator.go b/vendor/k8s.io/gengo/v2/generator/generator.go
    new file mode 100644
    index 000000000000..7dfb1b2beca6
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/generator/generator.go
    @@ -0,0 +1,214 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package generator
    +
    +import (
    +	"bytes"
    +	"io"
    +
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/parser"
    +	"k8s.io/gengo/v2/types"
    +)
    +
    +// Target describes a Go package into which code will be generated.  A single
    +// Target may have many Generators, each of which emits one file.
    +type Target interface {
    +	// Name returns the package short name (as in `package foo`).
    +	Name() string
    +	// Path returns the package import path (as in `import "example.com/foo"`).
    +	Path() string
    +	// Dir returns the location of the resulting package on disk.  This may be
    +	// the same directory as an input package (when generating code in-place)
    +	// or a different directory entirely.
    +	Dir() string
    +
    +	// Filter should return true if this package cares about this type.
    +	// Otherwise, this type will be omitted from the type ordering for
    +	// this package.
    +	Filter(*Context, *types.Type) bool
    +
    +	// Header should return a header for the file, including comment markers.
    +	// Useful for copyright notices and doc strings. Include an
    +	// autogeneration notice! Do not include the "package x" line.
    +	Header(filename string) []byte
    +
    +	// Generators returns the list of generators for this package. It is
    +	// allowed for more than one generator to write to the same file.
    +	// A Context is passed in case the list of generators depends on the
    +	// input types.
    +	Generators(*Context) []Generator
    +}
    +
    +type File struct {
    +	Name        string
    +	FileType    string
    +	PackageName string
    +	Header      []byte
    +	PackagePath string
    +	PackageDir  string
    +	Imports     map[string]struct{}
    +	Vars        bytes.Buffer
    +	Consts      bytes.Buffer
    +	Body        bytes.Buffer
    +}
    +
    +type FileType interface {
    +	AssembleFile(f *File, path string) error
    +}
    +
    +// Generator is the contract for anything that wants to do auto-generation.
    +// It's expected that the io.Writers passed to the below functions will be
    +// ErrorTrackers; this allows implementations to not check for io errors,
    +// making more readable code.
    +//
    +// The call order for the functions that take a Context is:
    +// 1. Filter()        // Subsequent calls see only types that pass this.
    +// 2. Namers()        // Subsequent calls see the namers provided by this.
    +// 3. PackageVars()
    +// 4. PackageConsts()
    +// 5. Init()
    +// 6. GenerateType()  // Called N times, once per type in the context's Order.
    +// 7. Imports()
    +//
    +// You may have multiple generators for the same file.
    +type Generator interface {
    +	// The name of this generator. Will be included in generated comments.
    +	Name() string
    +
    +	// Filter should return true if this generator cares about this type.
    +	// (otherwise, GenerateType will not be called.)
    +	//
    +	// Filter is called before any of the generator's other functions;
    +	// subsequent calls will get a context with only the types that passed
    +	// this filter.
    +	Filter(*Context, *types.Type) bool
    +
    +	// If this generator needs special namers, return them here. These will
    +	// override the original namers in the context if there is a collision.
    +	// You may return nil if you don't need special names. These names will
    +	// be available in the context passed to the rest of the generator's
    +	// functions.
    +	//
    +	// A use case for this is to return a namer that tracks imports.
    +	Namers(*Context) namer.NameSystems
    +
    +	// Init should write an init function, and any other content that's not
    +	// generated per-type. (It's not intended for generator specific
    +	// initialization! Do that when your Target constructs the
    +	// Generators.)
    +	Init(*Context, io.Writer) error
    +
    +	// Finalize should write finish up functions, and any other content that's not
    +	// generated per-type.
    +	Finalize(*Context, io.Writer) error
    +
    +	// PackageVars should emit an array of variable lines. They will be
    +	// placed in a var ( ... ) block. There's no need to include a leading
    +	// \t or trailing \n.
    +	PackageVars(*Context) []string
    +
    +	// PackageConsts should emit an array of constant lines. They will be
    +	// placed in a const ( ... ) block. There's no need to include a leading
    +	// \t or trailing \n.
    +	PackageConsts(*Context) []string
    +
    +	// GenerateType should emit the code for a particular type.
    +	GenerateType(*Context, *types.Type, io.Writer) error
    +
    +	// Imports should return a list of necessary imports. They will be
    +	// formatted correctly. You do not need to include quotation marks,
    +	// return only the package name; alternatively, you can also return
    +	// imports in the format `name "path/to/pkg"`. Imports will be called
    +	// after Init, PackageVars, PackageConsts, and GenerateType, to allow
    +	// you to keep track of what imports you actually need.
    +	Imports(*Context) []string
    +
    +	// Preferred file name of this generator, not including a path. It is
    +	// allowed for multiple generators to use the same filename, but it's
    +	// up to you to make sure they don't have colliding import names.
    +	// TODO: provide per-file import tracking, removing the requirement
    +	// that generators coordinate..
    +	Filename() string
    +
    +	// A registered file type in the context to generate this file with. If
    +	// the FileType is not found in the context, execution will stop.
    +	FileType() string
    +}
    +
    +// Context is global context for individual generators to consume.
    +type Context struct {
    +	// A map from the naming system to the names for that system. E.g., you
    +	// might have public names and several private naming systems.
    +	Namers namer.NameSystems
    +
    +	// All the types, in case you want to look up something.
    +	Universe types.Universe
    +
    +	// All the user-specified packages.  This is after recursive expansion.
    +	Inputs []string
    +
    +	// The canonical ordering of the types (will be filtered by both the
    +	// Target's and Generator's Filter methods).
    +	Order []*types.Type
    +
    +	// A set of types this context can process. If this is empty or nil,
    +	// the default "go" filetype will be provided.
    +	FileTypes map[string]FileType
    +
    +	// Allows generators to add packages at runtime.
    +	parser *parser.Parser
    +}
    +
    +// NewContext generates a context from the given parser, naming systems, and
    +// the naming system you wish to construct the canonical ordering from.
    +func NewContext(p *parser.Parser, nameSystems namer.NameSystems, canonicalOrderName string) (*Context, error) {
    +	universe, err := p.NewUniverse()
    +	if err != nil {
    +		return nil, err
    +	}
    +
    +	c := &Context{
    +		Namers:   namer.NameSystems{},
    +		Universe: universe,
    +		Inputs:   p.UserRequestedPackages(),
    +		FileTypes: map[string]FileType{
    +			GoFileType: NewGoFile(),
    +		},
    +		parser: p,
    +	}
    +
    +	for name, systemNamer := range nameSystems {
    +		c.Namers[name] = systemNamer
    +		if name == canonicalOrderName {
    +			orderer := namer.Orderer{Namer: systemNamer}
    +			c.Order = orderer.OrderUniverse(universe)
    +		}
    +	}
    +	return c, nil
    +}
    +
    +// LoadPackages adds Go packages to the context.
    +func (c *Context) LoadPackages(patterns ...string) ([]*types.Package, error) {
    +	return c.parser.LoadPackagesTo(&c.Universe, patterns...)
    +}
    +
    +// FindPackages expands Go package patterns into a list of package import
    +// paths, akin to `go list -find`.
    +func (c *Context) FindPackages(patterns ...string) ([]string, error) {
    +	return c.parser.FindPackages(patterns...)
    +}
    diff --git a/vendor/k8s.io/gengo/v2/generator/go_generator.go b/vendor/k8s.io/gengo/v2/generator/go_generator.go
    new file mode 100644
    index 000000000000..14d2148b9992
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/generator/go_generator.go
    @@ -0,0 +1,61 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package generator
    +
    +import (
    +	"io"
    +
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
    +)
    +
    +const (
    +	GoFileType = "go"
    +)
    +
    +// GoGenerator implements a do-nothing Generator for Go files.  It can be
    +// used as a base for custom Generators, which embed it and then define the
    +// methods they need to specialize.
    +type GoGenerator struct {
    +	// OutputFilename is used as the Generator's name, and filename.
    +	OutputFilename string
    +
    +	// Body, if present, will be used as the return from the "Init" method.
    +	// This causes it to be static content for the entire file if no other
    +	// generator touches the file.
    +	OptionalBody []byte
    +}
    +
    +func (gg GoGenerator) Name() string                                        { return gg.OutputFilename }
    +func (gg GoGenerator) Filter(*Context, *types.Type) bool                   { return true }
    +func (gg GoGenerator) Namers(*Context) namer.NameSystems                   { return nil }
    +func (gg GoGenerator) Imports(*Context) []string                           { return []string{} }
    +func (gg GoGenerator) PackageVars(*Context) []string                       { return []string{} }
    +func (gg GoGenerator) PackageConsts(*Context) []string                     { return []string{} }
    +func (gg GoGenerator) GenerateType(*Context, *types.Type, io.Writer) error { return nil }
    +func (gg GoGenerator) Filename() string                                    { return gg.OutputFilename }
    +func (gg GoGenerator) FileType() string                                    { return GoFileType }
    +func (gg GoGenerator) Finalize(*Context, io.Writer) error                  { return nil }
    +
    +func (gg GoGenerator) Init(c *Context, w io.Writer) error {
    +	_, err := w.Write(gg.OptionalBody)
    +	return err
    +}
    +
    +var (
    +	_ = Generator(GoGenerator{})
    +)
    diff --git a/vendor/k8s.io/gengo/v2/generator/import_tracker.go b/vendor/k8s.io/gengo/v2/generator/import_tracker.go
    new file mode 100644
    index 000000000000..22393e4d4939
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/generator/import_tracker.go
    @@ -0,0 +1,96 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package generator
    +
    +import (
    +	"go/token"
    +	"path/filepath"
    +	"strings"
    +
    +	"k8s.io/klog/v2"
    +
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
    +)
    +
    +// NewImportTrackerForPackage creates a new import tracker which is aware
    +// of a generator's output package. The tracker will not add import lines
    +// when symbols or types are added from the same package, and LocalNameOf
    +// will return empty string for the output package.
    +//
    +// e.g.:
    +//
    +//	tracker := NewImportTrackerForPackage("bar.com/pkg/foo")
    +//	tracker.AddSymbol(types.Name{"bar.com/pkg/foo.MyType"})
    +//	tracker.AddSymbol(types.Name{"bar.com/pkg/baz.MyType"})
    +//	tracker.AddSymbol(types.Name{"bar.com/pkg/baz/baz.MyType"})
    +//
    +//	tracker.LocalNameOf("bar.com/pkg/foo") -> ""
    +//	tracker.LocalNameOf("bar.com/pkg/baz") -> "baz"
    +//	tracker.LocalNameOf("bar.com/pkg/baz/baz") -> "bazbaz"
    +//	tracker.ImportLines() -> {`baz "bar.com/pkg/baz"`, `bazbaz "bar.com/pkg/baz/baz"`}
    +func NewImportTrackerForPackage(local string, typesToAdd ...*types.Type) *namer.DefaultImportTracker {
    +	tracker := namer.NewDefaultImportTracker(types.Name{Package: local})
    +	tracker.IsInvalidType = func(*types.Type) bool { return false }
    +	tracker.LocalName = func(name types.Name) string { return goTrackerLocalName(&tracker, local, name) }
    +	tracker.PrintImport = func(path, name string) string { return name + " \"" + path + "\"" }
    +
    +	tracker.AddTypes(typesToAdd...)
    +	return &tracker
    +}
    +
    +func NewImportTracker(typesToAdd ...*types.Type) *namer.DefaultImportTracker {
    +	return NewImportTrackerForPackage("", typesToAdd...)
    +}
    +
    +func goTrackerLocalName(tracker namer.ImportTracker, localPkg string, t types.Name) string {
    +	path := t.Package
    +
    +	// Using backslashes in package names causes gengo to produce Go code which
    +	// will not compile with the gc compiler. See the comment on GoSeperator.
    +	if strings.ContainsRune(path, '\\') {
    +		klog.Warningf("Warning: backslash used in import path '%v', this is unsupported.\n", path)
    +	}
    +	localLeaf := filepath.Base(localPkg)
    +
    +	dirs := strings.Split(path, namer.GoSeperator)
    +	for n := len(dirs) - 1; n >= 0; n-- {
    +		// follow kube convention of not having anything between directory names
    +		name := strings.Join(dirs[n:], "")
    +		name = strings.ReplaceAll(name, "_", "")
    +		// These characters commonly appear in import paths for go
    +		// packages, but aren't legal go names. So we'll sanitize.
    +		name = strings.ReplaceAll(name, ".", "")
    +		name = strings.ReplaceAll(name, "-", "")
    +		if _, found := tracker.PathOf(name); found || name == localLeaf {
    +			// This name collides with some other package.
    +			// Or, this name is tne same name as the local package,
    +			// which we avoid because it can be confusing. For example,
    +			// if the local package is v1, we to avoid importing
    +			// another package using the v1 name, and instead import
    +			// it with a more qualified name, such as metav1.
    +			continue
    +		}
    +
    +		// If the import name is a Go keyword, prefix with an underscore.
    +		if token.Lookup(name).IsKeyword() {
    +			name = "_" + name
    +		}
    +		return name
    +	}
    +	panic("can't find import for " + path)
    +}
    diff --git a/vendor/k8s.io/gengo/v2/generator/simple_target.go b/vendor/k8s.io/gengo/v2/generator/simple_target.go
    new file mode 100644
    index 000000000000..34df8245daeb
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/generator/simple_target.go
    @@ -0,0 +1,77 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package generator
    +
    +import (
    +	"k8s.io/gengo/v2/types"
    +)
    +
    +// SimpleTarget is implements Target in terms of static configuration.
    +// The package name, path, and dir are required to be non-empty.
    +type SimpleTarget struct {
    +	// PkgName is the name of the resulting package (as in "package xxxx").
    +	// Required.
    +	PkgName string
    +	// PkgPath is the canonical Go import-path of the resulting package (as in
    +	// "import example.com/xxxx/yyyy"). Required.
    +	PkgPath string
    +	// PkgDir is the location of the resulting package on disk (which may not
    +	// exist yet). It may be absolute or relative to CWD. Required.
    +	PkgDir string
    +
    +	// HeaderComment is emitted at the top of every output file. Optional.
    +	HeaderComment []byte
    +
    +	// PkgDocComment is emitted after the header comment for a "doc.go" file.
    +	// Optional.
    +	PkgDocComment []byte
    +
    +	// FilterFunc will be called to implement Target.Filter. Optional.
    +	FilterFunc func(*Context, *types.Type) bool
    +
    +	// GeneratorsFunc will be called to implement Target.Generators. Optional.
    +	GeneratorsFunc func(*Context) []Generator
    +}
    +
    +func (st SimpleTarget) Name() string { return st.PkgName }
    +func (st SimpleTarget) Path() string { return st.PkgPath }
    +func (st SimpleTarget) Dir() string  { return st.PkgDir }
    +
    +func (st SimpleTarget) Filter(c *Context, t *types.Type) bool {
    +	if st.FilterFunc != nil {
    +		return st.FilterFunc(c, t)
    +	}
    +	return true
    +}
    +
    +func (st SimpleTarget) Generators(c *Context) []Generator {
    +	if st.GeneratorsFunc != nil {
    +		return st.GeneratorsFunc(c)
    +	}
    +	return nil
    +}
    +
    +func (st SimpleTarget) Header(filename string) []byte {
    +	if filename == "doc.go" {
    +		return append(st.HeaderComment, st.PkgDocComment...)
    +	}
    +	return st.HeaderComment
    +}
    +
    +var (
    +	_ = Target(SimpleTarget{})
    +)
    diff --git a/vendor/k8s.io/gengo/v2/generator/snippet_writer.go b/vendor/k8s.io/gengo/v2/generator/snippet_writer.go
    new file mode 100644
    index 000000000000..550214e1635d
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/generator/snippet_writer.go
    @@ -0,0 +1,170 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package generator
    +
    +import (
    +	"fmt"
    +	"io"
    +	"runtime"
    +	"text/template"
    +)
    +
    +// SnippetWriter is an attempt to make the template library usable.
    +// Methods are chainable, and you don't have to check Error() until you're all
    +// done.
    +type SnippetWriter struct {
    +	w       io.Writer
    +	context *Context
    +	// Left & right delimiters. text/template defaults to "{{" and "}}"
    +	// which is totally unusable for go code based templates.
    +	left, right string
    +	funcMap     template.FuncMap
    +	err         error
    +}
    +
    +// w is the destination; left and right are the delimiters; @ and $ are both
    +// reasonable choices.
    +//
    +// c is used to make a function for every naming system, to which you can pass
    +// a type and get the corresponding name.
    +func NewSnippetWriter(w io.Writer, c *Context, left, right string) *SnippetWriter {
    +	sw := &SnippetWriter{
    +		w:       w,
    +		context: c,
    +		left:    left,
    +		right:   right,
    +		funcMap: template.FuncMap{},
    +	}
    +	for name, namer := range c.Namers {
    +		sw.funcMap[name] = namer.Name
    +	}
    +	return sw
    +}
    +
    +// Do parses format and runs args through it. You can have arbitrary logic in
    +// the format (see the text/template documentation), but consider running many
    +// short templates with ordinary go logic in between--this may be more
    +// readable. Do is chainable. Any error causes every other call to do to be
    +// ignored, and the error will be returned by Error(). So you can check it just
    +// once, at the end of your function.
    +//
    +// 'args' can be quite literally anything; read the text/template documentation
    +// for details. Maps and structs work particularly nicely. Conveniently, the
    +// types package is designed to have structs that are easily referencable from
    +// the template language.
    +//
    +// Example:
    +//
    +// sw := generator.NewSnippetWriter(outBuffer, context, "$", "$")
    +// sw.Do(`The public type name is: $.type|public$`, map[string]interface{}{"type": t})
    +// return sw.Error()
    +//
    +// Where:
    +//   - "$" starts a template directive
    +//   - "." references the entire thing passed as args
    +//   - "type" therefore sees a map and looks up the key "type"
    +//   - "|" means "pass the thing on the left to the thing on the right"
    +//   - "public" is the name of a naming system, so the SnippetWriter has given
    +//     the template a function called "public" that takes a *types.Type and
    +//     returns the naming system's name. E.g., if the type is "string" this might
    +//     return "String".
    +//   - the second "$" ends the template directive.
    +//
    +// The map is actually not necessary. The below does the same thing:
    +//
    +// sw.Do(`The public type name is: $.|public$`, t)
    +//
    +// You may or may not find it more readable to use the map with a descriptive
    +// key, but if you want to pass more than one arg, the map or a custom struct
    +// becomes a requirement. You can do arbitrary logic inside these templates,
    +// but you should consider doing the logic in go and stitching them together
    +// for the sake of your readers.
    +//
    +// TODO: Change Do() to optionally take a list of pairs of parameters (key, value)
    +// and have it construct a combined map with that and args.
    +func (s *SnippetWriter) Do(format string, args interface{}) *SnippetWriter {
    +	if s.err != nil {
    +		return s
    +	}
    +	// Name the template by source file:line so it can be found when
    +	// there's an error.
    +	_, file, line, _ := runtime.Caller(1)
    +	tmpl, err := template.
    +		New(fmt.Sprintf("%s:%d", file, line)).
    +		Delims(s.left, s.right).
    +		Funcs(s.funcMap).
    +		Parse(format)
    +	if err != nil {
    +		s.err = err
    +		return s
    +	}
    +	err = tmpl.Execute(s.w, args)
    +	if err != nil {
    +		s.err = err
    +	}
    +	return s
    +}
    +
    +// Args exists to make it convenient to construct arguments for
    +// SnippetWriter.Do.
    +type Args map[interface{}]interface{}
    +
    +// With makes a copy of a and adds the given key, value pair. If key overlaps,
    +// the new value wins.
    +func (a Args) With(key, value interface{}) Args {
    +	result := Args{}
    +	for k, v := range a {
    +		result[k] = v
    +	}
    +	result[key] = value
    +	return result
    +}
    +
    +// WithArgs makes a copy of a and adds the given arguments. If any keys
    +// overlap, the values from rhs win.
    +func (a Args) WithArgs(rhs Args) Args {
    +	result := Args{}
    +	for k, v := range a {
    +		result[k] = v
    +	}
    +	for k, v := range rhs {
    +		result[k] = v
    +	}
    +	return result
    +}
    +
    +func (s *SnippetWriter) Out() io.Writer {
    +	return s.w
    +}
    +
    +// Error returns any encountered error.
    +func (s *SnippetWriter) Error() error {
    +	return s.err
    +}
    +
    +// Dup creates an exact duplicate SnippetWriter with a different io.Writer.
    +func (s *SnippetWriter) Dup(w io.Writer) *SnippetWriter {
    +	ret := *s
    +	ret.w = w
    +	return &ret
    +}
    +
    +// Append adds the contents of the io.Reader to this SnippetWriter's buffer.
    +func (s *SnippetWriter) Append(r io.Reader) error {
    +	_, err := io.Copy(s.w, r)
    +	return err
    +}
    diff --git a/vendor/k8s.io/gengo/v2/namer/doc.go b/vendor/k8s.io/gengo/v2/namer/doc.go
    new file mode 100644
    index 000000000000..76309ebb0075
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/namer/doc.go
    @@ -0,0 +1,31 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Package namer has support for making different type naming systems.
    +//
    +// This is because sometimes you want to refer to the literal type, sometimes
    +// you want to make a name for the thing you're generating, and you want to
    +// make the name based on the type. For example, if you have `type foo string`,
    +// you want to be able to generate something like `func FooPrinter(f *foo) {
    +// Print(string(*f)) }`; that is, you want to refer to a public name, a literal
    +// name, and the underlying literal name.
    +//
    +// This package supports the idea of a "Namer" and a set of "NameSystems" to
    +// support these use cases.
    +//
    +// Additionally, a "RawNamer" can optionally keep track of what needs to be
    +// imported.
    +package namer // import "k8s.io/gengo/v2/namer"
    diff --git a/vendor/k8s.io/gengo/v2/namer/import_tracker.go b/vendor/k8s.io/gengo/v2/namer/import_tracker.go
    new file mode 100644
    index 000000000000..f8c5a9411dde
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/namer/import_tracker.go
    @@ -0,0 +1,121 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package namer
    +
    +import (
    +	"sort"
    +
    +	"k8s.io/gengo/v2/types"
    +)
    +
    +// ImportTracker may be passed to a namer.RawNamer, to track the imports needed
    +// for the types it names.
    +//
    +// TODO: pay attention to the package name (instead of renaming every package).
    +type DefaultImportTracker struct {
    +	pathToName map[string]string
    +	// forbidden names are in here. (e.g. "go" is a directory in which
    +	// there is code, but "go" is not a legal name for a package, so we put
    +	// it here to prevent us from naming any package "go")
    +	nameToPath map[string]string
    +	local      types.Name
    +
    +	// Returns true if a given types is an invalid type and should be ignored.
    +	IsInvalidType func(*types.Type) bool
    +	// Returns the final local name for the given name
    +	LocalName func(types.Name) string
    +	// Returns the "import" line for a given (path, name).
    +	PrintImport func(string, string) string
    +}
    +
    +func NewDefaultImportTracker(local types.Name) DefaultImportTracker {
    +	return DefaultImportTracker{
    +		pathToName: map[string]string{},
    +		nameToPath: map[string]string{},
    +		local:      local,
    +	}
    +}
    +
    +func (tracker *DefaultImportTracker) AddTypes(types ...*types.Type) {
    +	for _, t := range types {
    +		tracker.AddType(t)
    +	}
    +}
    +func (tracker *DefaultImportTracker) AddSymbol(symbol types.Name) {
    +	if tracker.local.Package == symbol.Package {
    +		return
    +	}
    +
    +	if len(symbol.Package) == 0 {
    +		return
    +	}
    +	path := symbol.Path
    +	if len(path) == 0 {
    +		path = symbol.Package
    +	}
    +	if _, ok := tracker.pathToName[path]; ok {
    +		return
    +	}
    +
    +	name := tracker.LocalName(symbol)
    +	tracker.nameToPath[name] = path
    +	tracker.pathToName[path] = name
    +}
    +
    +func (tracker *DefaultImportTracker) AddType(t *types.Type) {
    +	if tracker.local.Package == t.Name.Package {
    +		return
    +	}
    +
    +	if tracker.IsInvalidType(t) {
    +		if t.Kind == types.Builtin {
    +			return
    +		}
    +		if _, ok := tracker.nameToPath[t.Name.Package]; !ok {
    +			tracker.nameToPath[t.Name.Package] = ""
    +		}
    +		return
    +	}
    +
    +	tracker.AddSymbol(t.Name)
    +}
    +
    +func (tracker *DefaultImportTracker) ImportLines() []string {
    +	importPaths := []string{}
    +	for path := range tracker.pathToName {
    +		importPaths = append(importPaths, path)
    +	}
    +	sort.Strings(importPaths)
    +	out := []string{}
    +	for _, path := range importPaths {
    +		out = append(out, tracker.PrintImport(path, tracker.pathToName[path]))
    +	}
    +	return out
    +}
    +
    +// LocalNameOf returns the name you would use to refer to the package at the
    +// specified path within the body of a file.
    +func (tracker *DefaultImportTracker) LocalNameOf(path string) string {
    +	return tracker.pathToName[path]
    +}
    +
    +// PathOf returns the path that a given localName is referring to within the
    +// body of a file.
    +func (tracker *DefaultImportTracker) PathOf(localName string) (string, bool) {
    +	name, ok := tracker.nameToPath[localName]
    +	return name, ok
    +}
    diff --git a/vendor/k8s.io/gengo/v2/namer/namer.go b/vendor/k8s.io/gengo/v2/namer/namer.go
    new file mode 100644
    index 000000000000..37877eb4921b
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/namer/namer.go
    @@ -0,0 +1,395 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package namer
    +
    +import (
    +	"fmt"
    +	"path/filepath"
    +	"strconv"
    +	"strings"
    +
    +	"k8s.io/gengo/v2/types"
    +)
    +
    +const (
    +	// GoSeperator is used to split go import paths.
    +	// Forward slash is used instead of filepath.Seperator because it is the
    +	// only universally-accepted path delimiter and the only delimiter not
    +	// potentially forbidden by Go compilers. (In particular gc does not allow
    +	// the use of backslashes in import paths.)
    +	// See https://golang.org/ref/spec#Import_declarations.
    +	// See also https://github.com/kubernetes/gengo/issues/83#issuecomment-367040772.
    +	GoSeperator = "/"
    +)
    +
    +// Returns whether a name is a private Go name.
    +func IsPrivateGoName(name string) bool {
    +	return len(name) == 0 || strings.ToLower(name[:1]) == name[:1]
    +}
    +
    +// NewPublicNamer is a helper function that returns a namer that makes
    +// CamelCase names. See the NameStrategy struct for an explanation of the
    +// arguments to this constructor.
    +func NewPublicNamer(prependPackageNames int, ignoreWords ...string) *NameStrategy {
    +	n := &NameStrategy{
    +		Join:                Joiner(IC, IC),
    +		IgnoreWords:         map[string]bool{},
    +		PrependPackageNames: prependPackageNames,
    +	}
    +	for _, w := range ignoreWords {
    +		n.IgnoreWords[w] = true
    +	}
    +	return n
    +}
    +
    +// NewPrivateNamer is a helper function that returns a namer that makes
    +// camelCase names. See the NameStrategy struct for an explanation of the
    +// arguments to this constructor.
    +func NewPrivateNamer(prependPackageNames int, ignoreWords ...string) *NameStrategy {
    +	n := &NameStrategy{
    +		Join:                Joiner(IL, IC),
    +		IgnoreWords:         map[string]bool{},
    +		PrependPackageNames: prependPackageNames,
    +	}
    +	for _, w := range ignoreWords {
    +		n.IgnoreWords[w] = true
    +	}
    +	return n
    +}
    +
    +// NewRawNamer will return a Namer that makes a name by which you would
    +// directly refer to a type, optionally keeping track of the import paths
    +// necessary to reference the names it provides. Tracker may be nil.
    +// The 'pkg' is the full package name, in which the Namer is used - all
    +// types from that package will be referenced by just type name without
    +// referencing the package.
    +//
    +// For example, if the type is map[string]int, a raw namer will literally
    +// return "map[string]int".
    +//
    +// Or if the type, in package foo, is "type Bar struct { ... }", then the raw
    +// namer will return "foo.Bar" as the name of the type, and if 'tracker' was
    +// not nil, will record that package foo needs to be imported.
    +func NewRawNamer(pkg string, tracker ImportTracker) *rawNamer {
    +	return &rawNamer{pkg: pkg, tracker: tracker}
    +}
    +
    +// Names is a map from Type to name, as defined by some Namer.
    +type Names map[*types.Type]string
    +
    +// Namer takes a type, and assigns a name.
    +//
    +// The purpose of this complexity is so that you can assign coherent
    +// side-by-side systems of names for the types. For example, you might want a
    +// public interface, a private implementation struct, and also to reference
    +// literally the type name.
    +//
    +// Note that it is safe to call your own Name() function recursively to find
    +// the names of keys, elements, etc. This is because anonymous types can't have
    +// cycles in their names, and named types don't require the sort of recursion
    +// that would be problematic.
    +type Namer interface {
    +	Name(*types.Type) string
    +}
    +
    +// NameSystems is a map of a system name to a namer for that system.
    +type NameSystems map[string]Namer
    +
    +// NameStrategy is a general Namer. The easiest way to use it is to copy the
    +// Public/PrivateNamer variables, and modify the members you wish to change.
    +//
    +// The Name method produces a name for the given type, of the forms:
    +// Anonymous types: 
    +// Named types: 
    +//
    +// In all cases, every part of the name is run through the capitalization
    +// functions.
    +//
    +// The IgnoreWords map can be set if you have directory names that are
    +// semantically meaningless for naming purposes, e.g. "proto".
    +//
    +// Prefix and Suffix can be used to disambiguate parallel systems of type
    +// names. For example, if you want to generate an interface and an
    +// implementation, you might want to suffix one with "Interface" and the other
    +// with "Implementation". Another common use-- if you want to generate private
    +// types, and one of your source types could be "string", you can't use the
    +// default lowercase private namer. You'll have to add a suffix or prefix.
    +type NameStrategy struct {
    +	Prefix, Suffix string
    +	Join           func(pre string, parts []string, post string) string
    +
    +	// Add non-meaningful package directory names here (e.g. "proto") and
    +	// they will be ignored.
    +	IgnoreWords map[string]bool
    +
    +	// If > 0, prepend exactly that many package directory names (or as
    +	// many as there are).  Package names listed in "IgnoreWords" will be
    +	// ignored.
    +	//
    +	// For example, if Ignore words lists "proto" and type Foo is in
    +	// pkg/server/frobbing/proto, then a value of 1 will give a type name
    +	// of FrobbingFoo, 2 gives ServerFrobbingFoo, etc.
    +	PrependPackageNames int
    +
    +	// A cache of names thus far assigned by this namer.
    +	Names
    +}
    +
    +// IC ensures the first character is uppercase.
    +func IC(in string) string {
    +	if in == "" {
    +		return in
    +	}
    +	return strings.ToUpper(in[:1]) + in[1:]
    +}
    +
    +// IL ensures the first character is lowercase.
    +func IL(in string) string {
    +	if in == "" {
    +		return in
    +	}
    +	return strings.ToLower(in[:1]) + in[1:]
    +}
    +
    +// Joiner lets you specify functions that preprocess the various components of
    +// a name before joining them. You can construct e.g. camelCase or CamelCase or
    +// any other way of joining words. (See the IC and IL convenience functions.)
    +func Joiner(first, others func(string) string) func(pre string, in []string, post string) string {
    +	return func(pre string, in []string, post string) string {
    +		tmp := []string{others(pre)}
    +		for i := range in {
    +			tmp = append(tmp, others(in[i]))
    +		}
    +		tmp = append(tmp, others(post))
    +		return first(strings.Join(tmp, ""))
    +	}
    +}
    +
    +func (ns *NameStrategy) removePrefixAndSuffix(s string) string {
    +	// The join function may have changed capitalization.
    +	lowerIn := strings.ToLower(s)
    +	lowerP := strings.ToLower(ns.Prefix)
    +	lowerS := strings.ToLower(ns.Suffix)
    +	b, e := 0, len(s)
    +	if strings.HasPrefix(lowerIn, lowerP) {
    +		b = len(ns.Prefix)
    +	}
    +	if strings.HasSuffix(lowerIn, lowerS) {
    +		e -= len(ns.Suffix)
    +	}
    +	return s[b:e]
    +}
    +
    +var (
    +	importPathNameSanitizer = strings.NewReplacer("-", "_", ".", "")
    +)
    +
    +// filters out unwanted directory names and sanitizes remaining names.
    +func (ns *NameStrategy) filterDirs(path string) []string {
    +	allDirs := strings.Split(path, GoSeperator)
    +	dirs := make([]string, 0, len(allDirs))
    +	for _, p := range allDirs {
    +		if ns.IgnoreWords == nil || !ns.IgnoreWords[p] {
    +			dirs = append(dirs, importPathNameSanitizer.Replace(p))
    +		}
    +	}
    +	return dirs
    +}
    +
    +// See the comment on NameStrategy.
    +func (ns *NameStrategy) Name(t *types.Type) string {
    +	if ns.Names == nil {
    +		ns.Names = Names{}
    +	}
    +	if s, ok := ns.Names[t]; ok {
    +		return s
    +	}
    +
    +	if t.Name.Package != "" {
    +		dirs := append(ns.filterDirs(t.Name.Package), t.Name.Name)
    +		i := ns.PrependPackageNames + 1
    +		dn := len(dirs)
    +		if i > dn {
    +			i = dn
    +		}
    +		name := ns.Join(ns.Prefix, dirs[dn-i:], ns.Suffix)
    +		ns.Names[t] = name
    +		return name
    +	}
    +
    +	// Only anonymous types remain.
    +	var name string
    +	switch t.Kind {
    +	case types.Builtin:
    +		name = ns.Join(ns.Prefix, []string{t.Name.Name}, ns.Suffix)
    +	case types.Map:
    +		name = ns.Join(ns.Prefix, []string{
    +			"Map",
    +			ns.removePrefixAndSuffix(ns.Name(t.Key)),
    +			"To",
    +			ns.removePrefixAndSuffix(ns.Name(t.Elem)),
    +		}, ns.Suffix)
    +	case types.Slice:
    +		name = ns.Join(ns.Prefix, []string{
    +			"Slice",
    +			ns.removePrefixAndSuffix(ns.Name(t.Elem)),
    +		}, ns.Suffix)
    +	case types.Array:
    +		name = ns.Join(ns.Prefix, []string{
    +			"Array",
    +			ns.removePrefixAndSuffix(fmt.Sprintf("%d", t.Len)),
    +			ns.removePrefixAndSuffix(ns.Name(t.Elem)),
    +		}, ns.Suffix)
    +	case types.Pointer:
    +		name = ns.Join(ns.Prefix, []string{
    +			"Pointer",
    +			ns.removePrefixAndSuffix(ns.Name(t.Elem)),
    +		}, ns.Suffix)
    +	case types.Struct:
    +		names := []string{"Struct"}
    +		for _, m := range t.Members {
    +			names = append(names, ns.removePrefixAndSuffix(ns.Name(m.Type)))
    +		}
    +		name = ns.Join(ns.Prefix, names, ns.Suffix)
    +	case types.Chan:
    +		name = ns.Join(ns.Prefix, []string{
    +			"Chan",
    +			ns.removePrefixAndSuffix(ns.Name(t.Elem)),
    +		}, ns.Suffix)
    +	case types.Interface:
    +		// TODO: add to name test
    +		names := []string{"Interface"}
    +		for _, m := range t.Methods {
    +			// TODO: include function signature
    +			names = append(names, m.Name.Name)
    +		}
    +		name = ns.Join(ns.Prefix, names, ns.Suffix)
    +	case types.Func:
    +		// TODO: add to name test
    +		parts := []string{"Func"}
    +		for _, param := range t.Signature.Parameters {
    +			parts = append(parts, ns.removePrefixAndSuffix(ns.Name(param.Type)))
    +		}
    +		parts = append(parts, "Returns")
    +		for _, result := range t.Signature.Results {
    +			parts = append(parts, ns.removePrefixAndSuffix(ns.Name(result.Type)))
    +		}
    +		name = ns.Join(ns.Prefix, parts, ns.Suffix)
    +	default:
    +		name = "unnameable_" + string(t.Kind)
    +	}
    +	ns.Names[t] = name
    +	return name
    +}
    +
    +// ImportTracker allows a raw namer to keep track of the packages needed for
    +// import. You can implement yourself or use the one in the generation package.
    +type ImportTracker interface {
    +	AddType(*types.Type)
    +	AddSymbol(types.Name)
    +	LocalNameOf(packagePath string) string
    +	PathOf(localName string) (string, bool)
    +	ImportLines() []string
    +}
    +
    +type rawNamer struct {
    +	pkg     string
    +	tracker ImportTracker
    +	Names
    +}
    +
    +// Name makes a name the way you'd write it to literally refer to type t,
    +// making ordinary assumptions about how you've imported t's package (or using
    +// r.tracker to specifically track the package imports).
    +func (r *rawNamer) Name(t *types.Type) string {
    +	if r.Names == nil {
    +		r.Names = Names{}
    +	}
    +	if name, ok := r.Names[t]; ok {
    +		return name
    +	}
    +	if t.Name.Package != "" {
    +		var name string
    +		if r.tracker != nil {
    +			r.tracker.AddType(t)
    +			if t.Name.Package == r.pkg {
    +				name = t.Name.Name
    +			} else {
    +				name = r.tracker.LocalNameOf(t.Name.Package) + "." + t.Name.Name
    +			}
    +		} else {
    +			if t.Name.Package == r.pkg {
    +				name = t.Name.Name
    +			} else {
    +				name = filepath.Base(t.Name.Package) + "." + t.Name.Name
    +			}
    +		}
    +		r.Names[t] = name
    +		return name
    +	}
    +	var name string
    +	switch t.Kind {
    +	case types.Builtin:
    +		name = t.Name.Name
    +	case types.Map:
    +		name = "map[" + r.Name(t.Key) + "]" + r.Name(t.Elem)
    +	case types.Slice:
    +		name = "[]" + r.Name(t.Elem)
    +	case types.Array:
    +		l := strconv.Itoa(int(t.Len))
    +		name = "[" + l + "]" + r.Name(t.Elem)
    +	case types.Pointer:
    +		name = "*" + r.Name(t.Elem)
    +	case types.Struct:
    +		elems := []string{}
    +		for _, m := range t.Members {
    +			elems = append(elems, m.Name+" "+r.Name(m.Type))
    +		}
    +		name = "struct{" + strings.Join(elems, "; ") + "}"
    +	case types.Chan:
    +		// TODO: include directionality
    +		name = "chan " + r.Name(t.Elem)
    +	case types.Interface:
    +		// TODO: add to name test
    +		elems := []string{}
    +		for _, m := range t.Methods {
    +			// TODO: include function signature
    +			elems = append(elems, m.Name.Name)
    +		}
    +		name = "interface{" + strings.Join(elems, "; ") + "}"
    +	case types.Func:
    +		// TODO: add to name test
    +		params := []string{}
    +		for _, param := range t.Signature.Parameters {
    +			params = append(params, r.Name(param.Type))
    +		}
    +		results := []string{}
    +		for _, result := range t.Signature.Results {
    +			results = append(results, r.Name(result.Type))
    +		}
    +		name = "func(" + strings.Join(params, ",") + ")"
    +		if len(results) == 1 {
    +			name += " " + results[0]
    +		} else if len(results) > 1 {
    +			name += " (" + strings.Join(results, ",") + ")"
    +		}
    +	default:
    +		name = "unnameable_" + string(t.Kind)
    +	}
    +	r.Names[t] = name
    +	return name
    +}
    diff --git a/vendor/k8s.io/gengo/v2/namer/order.go b/vendor/k8s.io/gengo/v2/namer/order.go
    new file mode 100644
    index 000000000000..e676f0115df4
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/namer/order.go
    @@ -0,0 +1,72 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package namer
    +
    +import (
    +	"sort"
    +
    +	"k8s.io/gengo/v2/types"
    +)
    +
    +// Orderer produces an ordering of types given a Namer.
    +type Orderer struct {
    +	Namer
    +}
    +
    +// OrderUniverse assigns a name to every type in the Universe, including Types,
    +// Functions and Variables, and returns a list sorted by those names.
    +func (o *Orderer) OrderUniverse(u types.Universe) []*types.Type {
    +	list := tList{
    +		namer: o.Namer,
    +	}
    +	for _, p := range u {
    +		for _, t := range p.Types {
    +			list.types = append(list.types, t)
    +		}
    +		for _, f := range p.Functions {
    +			list.types = append(list.types, f)
    +		}
    +		for _, v := range p.Variables {
    +			list.types = append(list.types, v)
    +		}
    +		for _, v := range p.Constants {
    +			list.types = append(list.types, v)
    +		}
    +	}
    +	sort.Sort(list)
    +	return list.types
    +}
    +
    +// OrderTypes assigns a name to every type, and returns a list sorted by those
    +// names.
    +func (o *Orderer) OrderTypes(typeList []*types.Type) []*types.Type {
    +	list := tList{
    +		namer: o.Namer,
    +		types: typeList,
    +	}
    +	sort.Sort(list)
    +	return list.types
    +}
    +
    +type tList struct {
    +	namer Namer
    +	types []*types.Type
    +}
    +
    +func (t tList) Len() int           { return len(t.types) }
    +func (t tList) Less(i, j int) bool { return t.namer.Name(t.types[i]) < t.namer.Name(t.types[j]) }
    +func (t tList) Swap(i, j int)      { t.types[i], t.types[j] = t.types[j], t.types[i] }
    diff --git a/vendor/k8s.io/gengo/v2/namer/plural_namer.go b/vendor/k8s.io/gengo/v2/namer/plural_namer.go
    new file mode 100644
    index 000000000000..6bded6a043a0
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/namer/plural_namer.go
    @@ -0,0 +1,120 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package namer
    +
    +import (
    +	"strings"
    +
    +	"k8s.io/gengo/v2/types"
    +)
    +
    +var consonants = "bcdfghjklmnpqrstvwxyz"
    +
    +type pluralNamer struct {
    +	// key is the case-sensitive type name, value is the case-insensitive
    +	// intended output.
    +	exceptions map[string]string
    +	finalize   func(string) string
    +}
    +
    +// NewPublicPluralNamer returns a namer that returns the plural form of the input
    +// type's name, starting with a uppercase letter.
    +func NewPublicPluralNamer(exceptions map[string]string) *pluralNamer {
    +	return &pluralNamer{exceptions, IC}
    +}
    +
    +// NewPrivatePluralNamer returns a namer that returns the plural form of the input
    +// type's name, starting with a lowercase letter.
    +func NewPrivatePluralNamer(exceptions map[string]string) *pluralNamer {
    +	return &pluralNamer{exceptions, IL}
    +}
    +
    +// NewAllLowercasePluralNamer returns a namer that returns the plural form of the input
    +// type's name, with all letters in lowercase.
    +func NewAllLowercasePluralNamer(exceptions map[string]string) *pluralNamer {
    +	return &pluralNamer{exceptions, strings.ToLower}
    +}
    +
    +// Name returns the plural form of the type's name. If the type's name is found
    +// in the exceptions map, the map value is returned.
    +func (r *pluralNamer) Name(t *types.Type) string {
    +	singular := t.Name.Name
    +	var plural string
    +	var ok bool
    +	if plural, ok = r.exceptions[singular]; ok {
    +		return r.finalize(plural)
    +	}
    +	if len(singular) < 2 {
    +		return r.finalize(singular)
    +	}
    +
    +	switch rune(singular[len(singular)-1]) {
    +	case 's', 'x', 'z':
    +		plural = esPlural(singular)
    +	case 'y':
    +		sl := rune(singular[len(singular)-2])
    +		if isConsonant(sl) {
    +			plural = iesPlural(singular)
    +		} else {
    +			plural = sPlural(singular)
    +		}
    +	case 'h':
    +		sl := rune(singular[len(singular)-2])
    +		if sl == 'c' || sl == 's' {
    +			plural = esPlural(singular)
    +		} else {
    +			plural = sPlural(singular)
    +		}
    +	case 'e':
    +		sl := rune(singular[len(singular)-2])
    +		if sl == 'f' {
    +			plural = vesPlural(singular[:len(singular)-1])
    +		} else {
    +			plural = sPlural(singular)
    +		}
    +	case 'f':
    +		plural = vesPlural(singular)
    +	default:
    +		plural = sPlural(singular)
    +	}
    +	return r.finalize(plural)
    +}
    +
    +func iesPlural(singular string) string {
    +	return singular[:len(singular)-1] + "ies"
    +}
    +
    +func vesPlural(singular string) string {
    +	return singular[:len(singular)-1] + "ves"
    +}
    +
    +func esPlural(singular string) string {
    +	return singular + "es"
    +}
    +
    +func sPlural(singular string) string {
    +	return singular + "s"
    +}
    +
    +func isConsonant(char rune) bool {
    +	for _, c := range consonants {
    +		if char == c {
    +			return true
    +		}
    +	}
    +	return false
    +}
    diff --git a/vendor/k8s.io/gengo/v2/parser/doc.go b/vendor/k8s.io/gengo/v2/parser/doc.go
    new file mode 100644
    index 000000000000..8dc84facf85c
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/parser/doc.go
    @@ -0,0 +1,19 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Package parser provides code to parse go files, type-check them, extract the
    +// types.
    +package parser // import "k8s.io/gengo/v2/parser"
    diff --git a/vendor/k8s.io/gengo/v2/parser/parse.go b/vendor/k8s.io/gengo/v2/parser/parse.go
    new file mode 100644
    index 000000000000..d4de19e7699b
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/parser/parse.go
    @@ -0,0 +1,876 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package parser
    +
    +import (
    +	"errors"
    +	"fmt"
    +	"go/ast"
    +	"go/constant"
    +	"go/token"
    +	gotypes "go/types"
    +	"path/filepath"
    +	"sort"
    +	"strings"
    +	"time"
    +
    +	"golang.org/x/tools/go/packages"
    +
    +	"k8s.io/gengo/v2/types"
    +	"k8s.io/klog/v2"
    +)
    +
    +// Parser lets you add all the go files in all the packages that you care
    +// about, then constructs the type source data.
    +type Parser struct {
    +	// Map of package paths to definitions.  These keys should be canonical
    +	// Go import paths (example.com/foo/bar) and not local paths (./foo/bar).
    +	goPkgs map[string]*packages.Package
    +
    +	// Keep track of which packages were directly requested (as opposed to
    +	// those which are transitively loaded).
    +	userRequested map[string]bool
    +
    +	// Keep track of which packages have already been scanned for types.
    +	fullyProcessed map[string]bool
    +
    +	// Build tags to set when loading packages.
    +	buildTags []string
    +
    +	// Tracks accumulated parsed files, so we can do position lookups later.
    +	fset *token.FileSet
    +
    +	// All comments from everywhere in every parsed file.  This map is keyed by
    +	// the file-line on which the comment block ends, which makes it easy to
    +	// look up comments which immediately precede a given obect (e.g. a type or
    +	// function definition), which is what we almost always want.  We need this
    +	// because Go's own ast package does a very poor job of handling comments.
    +	endLineToCommentGroup map[fileLine]*ast.CommentGroup
    +}
    +
    +// key type for finding comments.
    +type fileLine struct {
    +	file string
    +	line int
    +}
    +
    +// New constructs a new Parser.
    +func New() *Parser {
    +	return NewWithOptions(Options{})
    +}
    +
    +func NewWithOptions(opts Options) *Parser {
    +	return &Parser{
    +		goPkgs:                map[string]*packages.Package{},
    +		userRequested:         map[string]bool{},
    +		fullyProcessed:        map[string]bool{},
    +		fset:                  token.NewFileSet(),
    +		endLineToCommentGroup: map[fileLine]*ast.CommentGroup{},
    +		buildTags:             opts.BuildTags,
    +	}
    +}
    +
    +// Options holds optional settings for the Parser.
    +type Options struct {
    +	// BuildTags is a list of optional tags to be specified when loading
    +	// packages.
    +	BuildTags []string
    +}
    +
    +// FindPackages expands the provided patterns into a list of Go import-paths,
    +// much like `go list -find`.
    +func (p *Parser) FindPackages(patterns ...string) ([]string, error) {
    +	return p.findPackages(nil, patterns...)
    +}
    +
    +// baseCfg is an optional (may be nil) config which might be injected by tests.
    +func (p *Parser) findPackages(baseCfg *packages.Config, patterns ...string) ([]string, error) {
    +	toFind := make([]string, 0, len(patterns))
    +	results := make([]string, 0, len(patterns))
    +	for _, pat := range patterns {
    +		if pkg := p.goPkgs[pat]; pkg != nil {
    +			results = append(results, pkg.PkgPath)
    +		} else {
    +			toFind = append(toFind, pat)
    +		}
    +	}
    +	if len(toFind) == 0 {
    +		return results, nil
    +	}
    +
    +	cfg := packages.Config{
    +		Mode:       packages.NeedName | packages.NeedFiles,
    +		BuildFlags: []string{"-tags", strings.Join(p.buildTags, ",")},
    +		Tests:      false,
    +	}
    +	if baseCfg != nil {
    +		// This is to support tests, e.g. to inject a fake GOPATH or CWD.
    +		cfg.Dir = baseCfg.Dir
    +		cfg.Env = baseCfg.Env
    +	}
    +
    +	pkgs, err := packages.Load(&cfg, toFind...)
    +	if err != nil {
    +		return nil, fmt.Errorf("error loading packages: %w", err)
    +	}
    +	var allErrs []error
    +	for _, pkg := range pkgs {
    +		results = append(results, pkg.PkgPath)
    +
    +		// pkg.Errors is not a slice of `error`, but concrete types.  We have
    +		// to iteratively convert each one into `error`.
    +		var errs []error
    +		for _, e := range pkg.Errors {
    +			errs = append(errs, e)
    +		}
    +		if len(errs) > 0 {
    +			allErrs = append(allErrs, fmt.Errorf("error(s) in %q:\n%w", pkg.PkgPath, errors.Join(errs...)))
    +		}
    +	}
    +	if len(allErrs) != 0 {
    +		return nil, errors.Join(allErrs...)
    +	}
    +	return results, nil
    +}
    +
    +// LoadPackages loads and parses the specified Go packages.  Specifically
    +// named packages (without a trailing "/...") which do not exist or have no Go
    +// files are an error.
    +func (p *Parser) LoadPackages(patterns ...string) error {
    +	_, err := p.loadPackages(patterns...)
    +	return err
    +}
    +
    +// LoadPackagesWithConfigForTesting loads and parses the specified Go packages with the
    +// specified packages.Config as a starting point.  This is for testing, and
    +// only the .Dir and .Env fields of the Config will be considered.
    +func (p *Parser) LoadPackagesWithConfigForTesting(cfg *packages.Config, patterns ...string) error {
    +	_, err := p.loadPackagesWithConfig(cfg, patterns...)
    +	return err
    +}
    +
    +// LoadPackagesTo loads and parses the specified Go packages, and inserts them
    +// into the specified Universe. It returns the packages which match the
    +// patterns, but loads all packages and their imports, recursively, into the
    +// universe.  See NewUniverse for more.
    +func (p *Parser) LoadPackagesTo(u *types.Universe, patterns ...string) ([]*types.Package, error) {
    +	// Load Packages.
    +	pkgs, err := p.loadPackages(patterns...)
    +	if err != nil {
    +		return nil, err
    +	}
    +
    +	// Load types in all packages (it will internally filter).
    +	if err := p.addPkgsToUniverse(pkgs, u); err != nil {
    +		return nil, err
    +	}
    +
    +	// Return the results as gengo types.Packages.
    +	ret := make([]*types.Package, 0, len(pkgs))
    +	for _, pkg := range pkgs {
    +		ret = append(ret, u.Package(pkg.PkgPath))
    +	}
    +
    +	return ret, nil
    +}
    +
    +func (p *Parser) loadPackages(patterns ...string) ([]*packages.Package, error) {
    +	return p.loadPackagesWithConfig(nil, patterns...)
    +}
    +
    +// baseCfg is an optional (may be nil) config which might be injected by tests.
    +func (p *Parser) loadPackagesWithConfig(baseCfg *packages.Config, patterns ...string) ([]*packages.Package, error) {
    +	klog.V(5).Infof("loadPackages %q", patterns)
    +
    +	// Loading packages is slow - only do ones we know we have not already done
    +	// (e.g. if a tool calls LoadPackages itself).
    +	existingPkgs, netNewPkgs, err := p.alreadyLoaded(baseCfg, patterns...)
    +	if err != nil {
    +		return nil, err
    +	}
    +	if vlog := klog.V(5); vlog.Enabled() {
    +		if len(existingPkgs) > 0 {
    +			keys := make([]string, 0, len(existingPkgs))
    +			for _, p := range existingPkgs {
    +				keys = append(keys, p.PkgPath)
    +			}
    +			vlog.Infof("  already have: %q", keys)
    +		}
    +		if len(netNewPkgs) > 0 {
    +			vlog.Infof("  to be loaded: %q", netNewPkgs)
    +		}
    +	}
    +
    +	// If these were not user-requested before, they are now.
    +	for _, pkg := range existingPkgs {
    +		if !p.userRequested[pkg.PkgPath] {
    +			p.userRequested[pkg.PkgPath] = true
    +		}
    +	}
    +	for _, pkg := range netNewPkgs {
    +		if !p.userRequested[pkg] {
    +			p.userRequested[pkg] = true
    +		}
    +	}
    +
    +	if len(netNewPkgs) == 0 {
    +		return existingPkgs, nil
    +	}
    +
    +	cfg := packages.Config{
    +		Mode: packages.NeedName |
    +			packages.NeedFiles | packages.NeedImports | packages.NeedDeps |
    +			packages.NeedModule | packages.NeedTypes | packages.NeedSyntax,
    +		BuildFlags: []string{"-tags", strings.Join(p.buildTags, ",")},
    +		Fset:       p.fset,
    +		Tests:      false,
    +	}
    +	if baseCfg != nil {
    +		// This is to support tests, e.g. to inject a fake GOPATH or CWD.
    +		cfg.Dir = baseCfg.Dir
    +		cfg.Env = baseCfg.Env
    +	}
    +
    +	tBefore := time.Now()
    +	pkgs, err := packages.Load(&cfg, netNewPkgs...)
    +	if err != nil {
    +		return nil, fmt.Errorf("error loading packages: %w", err)
    +	}
    +	klog.V(5).Infof("  loaded %d pkg(s) in %v", len(pkgs), time.Since(tBefore))
    +
    +	// Handle any errors.
    +	collectErrors := func(pkg *packages.Package) error {
    +		var errs []error
    +		for _, e := range pkg.Errors {
    +			if e.Kind == packages.ListError || e.Kind == packages.ParseError {
    +				errs = append(errs, e)
    +			}
    +		}
    +		if len(errs) > 0 {
    +			return fmt.Errorf("error(s) in %q:\n%w", pkg.PkgPath, errors.Join(errs...))
    +		}
    +		return nil
    +	}
    +	if err := forEachPackageRecursive(pkgs, collectErrors); err != nil {
    +		return nil, err
    +	}
    +
    +	// Finish integrating packages into our state.
    +	absorbPkg := func(pkg *packages.Package) error {
    +		p.goPkgs[pkg.PkgPath] = pkg
    +
    +		for _, f := range pkg.Syntax {
    +			for _, c := range f.Comments {
    +				// We need to do this on _every_ pkg, not just user-requested
    +				// ones, because some generators look at tags in other
    +				// packages.
    +				//
    +				// TODO: It would be nice if we only did this on user-requested
    +				// packages.  The problem is that we don't always know which
    +				// other packages will need this information, and even when we
    +				// do we may have already loaded the package (as a transitive
    +				// dep) and might have stored pointers into it.  Doing a
    +				// thorough "reload" without invalidating all those pointers is
    +				// a problem for another day.
    +				position := p.fset.Position(c.End()) // Fset is synchronized
    +				p.endLineToCommentGroup[fileLine{position.Filename, position.Line}] = c
    +			}
    +		}
    +
    +		return nil
    +	}
    +	if err := forEachPackageRecursive(pkgs, absorbPkg); err != nil {
    +		return nil, err
    +	}
    +
    +	return append(existingPkgs, pkgs...), nil
    +}
    +
    +// alreadyLoaded figures out which of the specified patterns have already been loaded
    +// and which have not, and returns those respectively.
    +// baseCfg is an optional (may be nil) config which might be injected by tests.
    +func (p *Parser) alreadyLoaded(baseCfg *packages.Config, patterns ...string) ([]*packages.Package, []string, error) {
    +	existingPkgs := make([]*packages.Package, 0, len(patterns))
    +	netNewPkgs := make([]string, 0, len(patterns))
    +
    +	// Expand and canonicalize the requested patterns.  This should be fast.
    +	if pkgPaths, err := p.findPackages(baseCfg, patterns...); err != nil {
    +		return nil, nil, err
    +	} else {
    +		for _, pkgPath := range pkgPaths {
    +			if pkg := p.goPkgs[pkgPath]; pkg != nil {
    +				existingPkgs = append(existingPkgs, pkg)
    +			} else {
    +				netNewPkgs = append(netNewPkgs, pkgPath)
    +			}
    +		}
    +	}
    +	return existingPkgs, netNewPkgs, nil
    +}
    +
    +// forEachPackageRecursive will run the provided function on all of the specified
    +// packages, and on their imports recursively.  Errors are accumulated and
    +// returned as via errors.Join.
    +func forEachPackageRecursive(pkgs []*packages.Package, fn func(pkg *packages.Package) error) error {
    +	seen := map[string]bool{} // PkgPaths we have already visited
    +	var errs []error
    +	for _, pkg := range pkgs {
    +		errs = append(errs, recursePackage(pkg, fn, seen)...)
    +	}
    +	if len(errs) > 0 {
    +		return errors.Join(errs...)
    +	}
    +	return nil
    +}
    +
    +func recursePackage(pkg *packages.Package, fn func(pkg *packages.Package) error, seen map[string]bool) []error {
    +	if seen[pkg.PkgPath] {
    +		return nil
    +	}
    +	var errs []error
    +	seen[pkg.PkgPath] = true
    +	if err := fn(pkg); err != nil {
    +		errs = append(errs, err)
    +	}
    +	for _, imp := range pkg.Imports {
    +		errs = append(errs, recursePackage(imp, fn, seen)...)
    +	}
    +	return errs
    +}
    +
    +// UserRequestedPackages fetches a list of the user-imported packages.
    +func (p *Parser) UserRequestedPackages() []string {
    +	// Iterate packages in a predictable order.
    +	pkgPaths := make([]string, 0, len(p.userRequested))
    +	for k := range p.userRequested {
    +		pkgPaths = append(pkgPaths, string(k))
    +	}
    +	sort.Strings(pkgPaths)
    +	return pkgPaths
    +}
    +
    +// NewUniverse finalizes the loaded packages, searches through them for types
    +// and produces a new Universe. The returned Universe has one types.Package
    +// entry for each Go package that has been loaded, including all of their
    +// dependencies, recursively.  It also has one entry, whose key is "", which
    +// represents "builtin" types.
    +func (p *Parser) NewUniverse() (types.Universe, error) {
    +	u := types.Universe{}
    +
    +	pkgs := []*packages.Package{}
    +	for _, path := range p.UserRequestedPackages() {
    +		pkgs = append(pkgs, p.goPkgs[path])
    +	}
    +	if err := p.addPkgsToUniverse(pkgs, &u); err != nil {
    +		return nil, err
    +	}
    +
    +	return u, nil
    +}
    +
    +// addCommentsToType takes any accumulated comment lines prior to obj and
    +// attaches them to the type t.
    +func (p *Parser) addCommentsToType(obj gotypes.Object, t *types.Type) {
    +	t.CommentLines = p.docComment(obj.Pos())
    +	t.SecondClosestCommentLines = p.priorDetachedComment(obj.Pos())
    +}
    +
    +// packageDir tries to figure out the directory of the specified package.
    +func packageDir(pkg *packages.Package) (string, error) {
    +	// Sometimes Module is present but has no Dir, e.g. when it is vendored.
    +	if pkg.Module != nil && pkg.Module.Dir != "" {
    +		// NOTE: this will not work if tests are loaded, because Go mutates the
    +		// Package.PkgPath.
    +		subdir := strings.TrimPrefix(pkg.PkgPath, pkg.Module.Path)
    +		return filepath.Join(pkg.Module.Dir, subdir), nil
    +	}
    +	if len(pkg.GoFiles) > 0 {
    +		return filepath.Dir(pkg.GoFiles[0]), nil
    +	}
    +	if len(pkg.IgnoredFiles) > 0 {
    +		return filepath.Dir(pkg.IgnoredFiles[0]), nil
    +	}
    +	return "", fmt.Errorf("can't find package dir for %q - no module info and no Go files", pkg.PkgPath)
    +}
    +
    +// addPkgsToUniverse adds the packages, and all of their deps, recursively, to
    +// the universe and (if needed) searches through them for types.
    +func (p *Parser) addPkgsToUniverse(pkgs []*packages.Package, u *types.Universe) error {
    +	addOne := func(pkg *packages.Package) error {
    +		if err := p.addPkgToUniverse(pkg, u); err != nil {
    +			return err
    +		}
    +		return nil
    +	}
    +	if err := forEachPackageRecursive(pkgs, addOne); err != nil {
    +		return err
    +	}
    +	return nil
    +}
    +
    +// addPkgToUniverse adds one package to the universe and (if needed) searches
    +// through it for types.
    +func (p *Parser) addPkgToUniverse(pkg *packages.Package, u *types.Universe) error {
    +	pkgPath := pkg.PkgPath
    +	if p.fullyProcessed[pkgPath] {
    +		return nil
    +	}
    +
    +	// This will get-or-create the Package.
    +	gengoPkg := u.Package(pkgPath)
    +
    +	if gengoPkg.Dir == "" {
    +		// We're keeping this package, though we might not fully process it.
    +		if vlog := klog.V(5); vlog.Enabled() {
    +			why := "user-requested"
    +			if !p.userRequested[pkgPath] {
    +				why = "dependency"
    +			}
    +			vlog.Infof("addPkgToUniverse %q (%s)", pkgPath, why)
    +		}
    +
    +		absPath := ""
    +		if dir, err := packageDir(pkg); err != nil {
    +			return err
    +		} else {
    +			absPath = dir
    +		}
    +
    +		gengoPkg.Path = pkg.PkgPath
    +		gengoPkg.Dir = absPath
    +	}
    +
    +	// If the package was not user-requested, we can stop here.
    +	if !p.userRequested[pkgPath] {
    +		return nil
    +	}
    +
    +	// Mark it as done, so we don't ever re-process it.
    +	p.fullyProcessed[pkgPath] = true
    +	gengoPkg.Name = pkg.Name
    +
    +	// For historical reasons we treat files named "doc.go" specially.
    +	// TODO: It would be nice to not do this and instead treat package
    +	// doc-comments as the "global" config place.  This would require changing
    +	// most generators and input files.
    +	for _, f := range pkg.Syntax {
    +		// This gets the filename for the ast.File.  Iterating pkg.GoFiles is
    +		// documented as unreliable.
    +		pos := p.fset.Position(f.FileStart)
    +		if filepath.Base(pos.Filename) == "doc.go" {
    +			gengoPkg.Comments = []string{}
    +			for i := range f.Comments {
    +				gengoPkg.Comments = append(gengoPkg.Comments, splitLines(f.Comments[i].Text())...)
    +			}
    +			if f.Doc != nil {
    +				gengoPkg.DocComments = splitLines(f.Doc.Text())
    +			}
    +		}
    +	}
    +
    +	// Walk all the types, recursively and save them for later access.
    +	s := pkg.Types.Scope()
    +	for _, n := range s.Names() {
    +		switch obj := s.Lookup(n).(type) {
    +		case *gotypes.TypeName:
    +			t := p.walkType(*u, nil, obj.Type())
    +			p.addCommentsToType(obj, t)
    +		case *gotypes.Func:
    +			// We only care about functions, not concrete/abstract methods.
    +			if obj.Type() != nil && obj.Type().(*gotypes.Signature).Recv() == nil {
    +				t := p.addFunction(*u, nil, obj)
    +				p.addCommentsToType(obj, t)
    +			}
    +		case *gotypes.Var:
    +			if !obj.IsField() {
    +				t := p.addVariable(*u, nil, obj)
    +				p.addCommentsToType(obj, t)
    +			}
    +		case *gotypes.Const:
    +			t := p.addConstant(*u, nil, obj)
    +			p.addCommentsToType(obj, t)
    +		default:
    +			klog.Infof("addPkgToUniverse %q: unhandled object of type %T: %v", pkgPath, obj, obj)
    +		}
    +	}
    +
    +	// Add all of this package's imports.
    +	importedPkgs := []string{}
    +	for _, imp := range pkg.Imports {
    +		if err := p.addPkgToUniverse(imp, u); err != nil {
    +			return err
    +		}
    +		importedPkgs = append(importedPkgs, imp.PkgPath)
    +	}
    +	sort.Strings(importedPkgs)
    +	u.AddImports(pkg.PkgPath, importedPkgs...)
    +
    +	return nil
    +}
    +
    +// If the specified position has a "doc comment", return that.
    +func (p *Parser) docComment(pos token.Pos) []string {
    +	// An object's doc comment always ends on the line before the object's own
    +	// declaration.
    +	c1 := p.priorCommentLines(pos, 1)
    +	return splitLines(c1.Text()) // safe even if c1 is nil
    +}
    +
    +// If there is a detached (not immediately before a declaration) comment,
    +// return that.
    +func (p *Parser) priorDetachedComment(pos token.Pos) []string {
    +	// An object's doc comment always ends on the line before the object's own
    +	// declaration.
    +	c1 := p.priorCommentLines(pos, 1)
    +
    +	// Using a literal "2" here is brittle in theory (it means literally 2
    +	// lines), but in practice Go code is gofmt'ed (which elides repeated blank
    +	// lines), so it works.
    +	var c2 *ast.CommentGroup
    +	if c1 == nil {
    +		c2 = p.priorCommentLines(pos, 2)
    +	} else {
    +		c2 = p.priorCommentLines(c1.List[0].Slash, 2)
    +	}
    +	return splitLines(c2.Text()) // safe even if c1 is nil
    +}
    +
    +// If there's a comment block which ends nlines before pos, return it.
    +func (p *Parser) priorCommentLines(pos token.Pos, lines int) *ast.CommentGroup {
    +	position := p.fset.Position(pos)
    +	key := fileLine{position.Filename, position.Line - lines}
    +	return p.endLineToCommentGroup[key]
    +}
    +
    +func splitLines(str string) []string {
    +	return strings.Split(strings.TrimRight(str, "\n"), "\n")
    +}
    +
    +func goFuncNameToName(in string) types.Name {
    +	name := strings.TrimPrefix(in, "func ")
    +	nameParts := strings.Split(name, "(")
    +	return goNameToName(nameParts[0])
    +}
    +
    +func goVarNameToName(in string) types.Name {
    +	nameParts := strings.Split(in, " ")
    +	// nameParts[0] is "var".
    +	// nameParts[2:] is the type of the variable, we ignore it for now.
    +	return goNameToName(nameParts[1])
    +}
    +
    +// goNameToName converts a go name string to a gengo types.Name.
    +// It operates solely on the string on a best effort basis. The name may be updated
    +// in walkType for generics.
    +func goNameToName(in string) types.Name {
    +	// Detect anonymous type names. (These may have '.' characters because
    +	// embedded types may have packages, so we detect them specially.)
    +	if strings.HasPrefix(in, "struct{") ||
    +		strings.HasPrefix(in, "<-chan") ||
    +		strings.HasPrefix(in, "chan<-") ||
    +		strings.HasPrefix(in, "chan ") ||
    +		strings.HasPrefix(in, "func(") ||
    +		strings.HasPrefix(in, "func (") ||
    +		strings.HasPrefix(in, "*") ||
    +		strings.HasPrefix(in, "map[") ||
    +		strings.HasPrefix(in, "[") {
    +		return types.Name{Name: in}
    +	}
    +
    +	// There may be '.' characters within a generic. Temporarily remove
    +	// the generic.
    +	genericIndex := strings.IndexRune(in, '[')
    +	if genericIndex == -1 {
    +		genericIndex = len(in)
    +	}
    +
    +	// Otherwise, if there are '.' characters present, the name has a
    +	// package path in front.
    +	nameParts := strings.Split(in[:genericIndex], ".")
    +	name := types.Name{Name: in}
    +	if n := len(nameParts); n >= 2 {
    +		// The final "." is the name of the type--previous ones must
    +		// have been in the package path.
    +		name.Package, name.Name = strings.Join(nameParts[:n-1], "."), nameParts[n-1]
    +		// Add back the generic component now that the package and type name have been separated.
    +		if genericIndex != len(in) {
    +			name.Name = name.Name + in[genericIndex:]
    +		}
    +	}
    +	return name
    +}
    +
    +func (p *Parser) convertSignature(u types.Universe, t *gotypes.Signature) *types.Signature {
    +	signature := &types.Signature{}
    +	for i := 0; i < t.Params().Len(); i++ {
    +		signature.Parameters = append(signature.Parameters, &types.ParamResult{
    +			Name: t.Params().At(i).Name(),
    +			Type: p.walkType(u, nil, t.Params().At(i).Type()),
    +		})
    +	}
    +	for i := 0; i < t.Results().Len(); i++ {
    +		signature.Results = append(signature.Results, &types.ParamResult{
    +			Name: t.Results().At(i).Name(),
    +			Type: p.walkType(u, nil, t.Results().At(i).Type()),
    +		})
    +	}
    +	if r := t.Recv(); r != nil {
    +		signature.Receiver = p.walkType(u, nil, r.Type())
    +	}
    +	signature.Variadic = t.Variadic()
    +	return signature
    +}
    +
    +// walkType adds the type, and any necessary child types.
    +func (p *Parser) walkType(u types.Universe, useName *types.Name, in gotypes.Type) *types.Type {
    +	// Most of the cases are underlying types of the named type.
    +	name := goNameToName(in.String())
    +	if useName != nil {
    +		name = *useName
    +	}
    +
    +	// Handle alias types conditionally on go1.22+.
    +	// Inline this once the minimum supported version is go1.22
    +	if out := p.walkAliasType(u, in); out != nil {
    +		return out
    +	}
    +
    +	switch t := in.(type) {
    +	case *gotypes.Struct:
    +		out := u.Type(name)
    +		if out.Kind != types.Unknown {
    +			return out
    +		}
    +		out.Kind = types.Struct
    +		for i := 0; i < t.NumFields(); i++ {
    +			f := t.Field(i)
    +			m := types.Member{
    +				Name:         f.Name(),
    +				Embedded:     f.Anonymous(),
    +				Tags:         t.Tag(i),
    +				Type:         p.walkType(u, nil, f.Type()),
    +				CommentLines: p.docComment(f.Pos()),
    +			}
    +			out.Members = append(out.Members, m)
    +		}
    +		return out
    +	case *gotypes.Map:
    +		out := u.Type(name)
    +		if out.Kind != types.Unknown {
    +			return out
    +		}
    +		out.Kind = types.Map
    +		out.Elem = p.walkType(u, nil, t.Elem())
    +		out.Key = p.walkType(u, nil, t.Key())
    +		return out
    +	case *gotypes.Pointer:
    +		out := u.Type(name)
    +		if out.Kind != types.Unknown {
    +			return out
    +		}
    +		out.Kind = types.Pointer
    +		out.Elem = p.walkType(u, nil, t.Elem())
    +		return out
    +	case *gotypes.Slice:
    +		out := u.Type(name)
    +		if out.Kind != types.Unknown {
    +			return out
    +		}
    +		out.Kind = types.Slice
    +		out.Elem = p.walkType(u, nil, t.Elem())
    +		return out
    +	case *gotypes.Array:
    +		out := u.Type(name)
    +		if out.Kind != types.Unknown {
    +			return out
    +		}
    +		out.Kind = types.Array
    +		out.Elem = p.walkType(u, nil, t.Elem())
    +		out.Len = in.(*gotypes.Array).Len()
    +		return out
    +	case *gotypes.Chan:
    +		out := u.Type(name)
    +		if out.Kind != types.Unknown {
    +			return out
    +		}
    +		out.Kind = types.Chan
    +		out.Elem = p.walkType(u, nil, t.Elem())
    +		// TODO: need to store direction, otherwise raw type name
    +		// cannot be properly written.
    +		return out
    +	case *gotypes.Basic:
    +		out := u.Type(types.Name{
    +			Package: "", // This is a magic package name in the Universe.
    +			Name:    t.Name(),
    +		})
    +		if out.Kind != types.Unknown {
    +			return out
    +		}
    +		out.Kind = types.Unsupported
    +		return out
    +	case *gotypes.Signature:
    +		out := u.Type(name)
    +		if out.Kind != types.Unknown {
    +			return out
    +		}
    +		out.Kind = types.Func
    +		out.Signature = p.convertSignature(u, t)
    +		return out
    +	case *gotypes.Interface:
    +		out := u.Type(name)
    +		if out.Kind != types.Unknown {
    +			return out
    +		}
    +		out.Kind = types.Interface
    +		t.Complete()
    +		for i := 0; i < t.NumMethods(); i++ {
    +			if out.Methods == nil {
    +				out.Methods = map[string]*types.Type{}
    +			}
    +			method := t.Method(i)
    +			name := goNameToName(method.String())
    +			mt := p.walkType(u, &name, method.Type())
    +			mt.CommentLines = p.docComment(method.Pos())
    +			out.Methods[method.Name()] = mt
    +		}
    +		return out
    +	case *gotypes.Named:
    +		var out *types.Type
    +		switch t.Underlying().(type) {
    +		case *gotypes.Named, *gotypes.Basic, *gotypes.Map, *gotypes.Slice:
    +			name := goNameToName(t.String())
    +			out = u.Type(name)
    +			if out.Kind != types.Unknown {
    +				return out
    +			}
    +			out.Kind = types.Alias
    +			out.Underlying = p.walkType(u, nil, t.Underlying())
    +		case *gotypes.Struct, *gotypes.Interface:
    +			name := goNameToName(t.String())
    +			tpMap := map[string]*types.Type{}
    +			if t.TypeParams().Len() != 0 {
    +				// Remove generics, then readd them without the encoded
    +				// type, e.g. Foo[T any] => Foo[T]
    +				var tpNames []string
    +				for i := 0; i < t.TypeParams().Len(); i++ {
    +					tp := t.TypeParams().At(i)
    +					tpName := tp.Obj().Name()
    +					tpNames = append(tpNames, tpName)
    +					tpMap[tpName] = p.walkType(u, nil, tp.Constraint())
    +				}
    +				name.Name = fmt.Sprintf("%s[%s]", strings.SplitN(name.Name, "[", 2)[0], strings.Join(tpNames, ","))
    +			}
    +
    +			if out := u.Type(name); out.Kind != types.Unknown {
    +				return out // short circuit if we've already made this.
    +			}
    +			out = p.walkType(u, &name, t.Underlying())
    +			out.TypeParams = tpMap
    +		default:
    +			// gotypes package makes everything "named" with an
    +			// underlying anonymous type--we remove that annoying
    +			// "feature" for users. This flattens those types
    +			// together.
    +			name := goNameToName(t.String())
    +			if out := u.Type(name); out.Kind != types.Unknown {
    +				return out // short circuit if we've already made this.
    +			}
    +			out = p.walkType(u, &name, t.Underlying())
    +		}
    +		// If the underlying type didn't already add methods, add them.
    +		// (Interface types will have already added methods.)
    +		if len(out.Methods) == 0 {
    +			for i := 0; i < t.NumMethods(); i++ {
    +				if out.Methods == nil {
    +					out.Methods = map[string]*types.Type{}
    +				}
    +				method := t.Method(i)
    +				name := goNameToName(method.String())
    +				mt := p.walkType(u, &name, method.Type())
    +				mt.CommentLines = p.docComment(method.Pos())
    +				out.Methods[method.Name()] = mt
    +			}
    +		}
    +		return out
    +	case *gotypes.TypeParam:
    +		// DO NOT retrieve the type from the universe. The default type-param name is only the
    +		// generic variable name. Ideally, it would be namespaced by package and struct but it is
    +		// not. Thus, if we try to use the universe, we would start polluting it.
    +		// e.g. if Foo[T] and Bar[T] exists, we'd mistakenly use the same type T for both.
    +		return &types.Type{
    +			Name: name,
    +			Kind: types.TypeParam,
    +		}
    +	default:
    +		out := u.Type(name)
    +		if out.Kind != types.Unknown {
    +			return out
    +		}
    +		out.Kind = types.Unsupported
    +		klog.Warningf("Making unsupported type entry %q for: %#v\n", out, t)
    +		return out
    +	}
    +}
    +
    +func (p *Parser) addFunction(u types.Universe, useName *types.Name, in *gotypes.Func) *types.Type {
    +	name := goFuncNameToName(in.String())
    +	if useName != nil {
    +		name = *useName
    +	}
    +	out := u.Function(name)
    +	out.Kind = types.DeclarationOf
    +	out.Underlying = p.walkType(u, nil, in.Type())
    +	return out
    +}
    +
    +func (p *Parser) addVariable(u types.Universe, useName *types.Name, in *gotypes.Var) *types.Type {
    +	name := goVarNameToName(in.String())
    +	if useName != nil {
    +		name = *useName
    +	}
    +	out := u.Variable(name)
    +	out.Kind = types.DeclarationOf
    +	out.Underlying = p.walkType(u, nil, in.Type())
    +	return out
    +}
    +
    +func (p *Parser) addConstant(u types.Universe, useName *types.Name, in *gotypes.Const) *types.Type {
    +	name := goVarNameToName(in.String())
    +	if useName != nil {
    +		name = *useName
    +	}
    +	out := u.Constant(name)
    +	out.Kind = types.DeclarationOf
    +	out.Underlying = p.walkType(u, nil, in.Type())
    +
    +	var constval string
    +
    +	// For strings, we use `StringVal()` to get the un-truncated,
    +	// un-quoted string. For other values, `.String()` is preferable to
    +	// get something relatively human readable (especially since for
    +	// floating point types, `ExactString()` will generate numeric
    +	// expressions using `big.(*Float).Text()`.
    +	switch in.Val().Kind() {
    +	case constant.String:
    +		constval = constant.StringVal(in.Val())
    +	default:
    +		constval = in.Val().String()
    +	}
    +
    +	out.ConstValue = &constval
    +	return out
    +}
    diff --git a/vendor/k8s.io/gengo/v2/parser/parse_122.go b/vendor/k8s.io/gengo/v2/parser/parse_122.go
    new file mode 100644
    index 000000000000..ec2064958a90
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/parser/parse_122.go
    @@ -0,0 +1,33 @@
    +//go:build go1.22
    +// +build go1.22
    +
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +	http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package parser
    +
    +import (
    +	gotypes "go/types"
    +
    +	"k8s.io/gengo/v2/types"
    +)
    +
    +func (p *Parser) walkAliasType(u types.Universe, in gotypes.Type) *types.Type {
    +	if t, isAlias := in.(*gotypes.Alias); isAlias {
    +		return p.walkType(u, nil, gotypes.Unalias(t))
    +	}
    +	return nil
    +}
    diff --git a/vendor/k8s.io/gengo/v2/parser/parse_pre_122.go b/vendor/k8s.io/gengo/v2/parser/parse_pre_122.go
    new file mode 100644
    index 000000000000..6f62100c0a77
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/parser/parse_pre_122.go
    @@ -0,0 +1,30 @@
    +//go:build !go1.22
    +// +build !go1.22
    +
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +	http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package parser
    +
    +import (
    +	gotypes "go/types"
    +
    +	"k8s.io/gengo/v2/types"
    +)
    +
    +func (p *Parser) walkAliasType(u types.Universe, in gotypes.Type) *types.Type {
    +	return nil
    +}
    diff --git a/vendor/k8s.io/gengo/v2/types/doc.go b/vendor/k8s.io/gengo/v2/types/doc.go
    new file mode 100644
    index 000000000000..23acb879ce76
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/types/doc.go
    @@ -0,0 +1,19 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Package types contains go type information, packaged in a way that makes
    +// auto-generation convenient, whether by template or straight go functions.
    +package types // import "k8s.io/gengo/v2/types"
    diff --git a/vendor/k8s.io/gengo/v2/types/types.go b/vendor/k8s.io/gengo/v2/types/types.go
    new file mode 100644
    index 000000000000..7bbca017332d
    --- /dev/null
    +++ b/vendor/k8s.io/gengo/v2/types/types.go
    @@ -0,0 +1,549 @@
    +/*
    +Copyright 2015 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package types
    +
    +import "strings"
    +
    +// Ref makes a reference to the given type. It can only be used for e.g.
    +// passing to namers.
    +func Ref(packageName, typeName string) *Type {
    +	return &Type{Name: Name{
    +		Name:    typeName,
    +		Package: packageName,
    +	}}
    +}
    +
    +// A type name may have a package qualifier.
    +type Name struct {
    +	// Empty if embedded or builtin. This is the package path unless Path is specified.
    +	Package string
    +	// The type name.
    +	Name string
    +	// An optional location of the type definition for languages that can have disjoint
    +	// packages and paths.
    +	Path string
    +}
    +
    +// String returns the name formatted as a string.
    +func (n Name) String() string {
    +	if n.Package == "" {
    +		return n.Name
    +	}
    +	return n.Package + "." + n.Name
    +}
    +
    +// ParseFullyQualifiedName parses a name like k8s.io/kubernetes/pkg/api.Pod into a Name.
    +func ParseFullyQualifiedName(fqn string) Name {
    +	cs := strings.Split(fqn, ".")
    +	pkg := ""
    +	if len(cs) > 1 {
    +		pkg = strings.Join(cs[0:len(cs)-1], ".")
    +	}
    +	return Name{
    +		Name:    cs[len(cs)-1],
    +		Package: pkg,
    +	}
    +}
    +
    +// The possible classes of types.
    +type Kind string
    +
    +const (
    +	// Builtin is a primitive, like bool, string, int.
    +	Builtin Kind = "Builtin"
    +	Struct  Kind = "Struct"
    +	Map     Kind = "Map"
    +	Slice   Kind = "Slice"
    +	Pointer Kind = "Pointer"
    +
    +	// Alias is an alias of another type, e.g. in:
    +	//   type Foo string
    +	//   type Bar Foo
    +	// Bar is an alias of Foo.
    +	//
    +	// In the real go type system, Foo is a "Named" string; but to simplify
    +	// generation, this type system will just say that Foo *is* a builtin.
    +	// We then need "Alias" as a way for us to say that Bar *is* a Foo.
    +	Alias Kind = "Alias"
    +
    +	// Interface is any type that could have differing types at run time.
    +	Interface Kind = "Interface"
    +
    +	// Array is just like slice, but has a fixed length.
    +	Array Kind = "Array"
    +
    +	// The remaining types are included for completeness, but are not well
    +	// supported.
    +	Chan Kind = "Chan"
    +	Func Kind = "Func"
    +
    +	// DeclarationOf is different from other Kinds; it indicates that instead of
    +	// representing an actual Type, the type is a declaration of an instance of
    +	// a type. E.g., a top-level function, variable, or constant. See the
    +	// comment for Type.Name for more detail.
    +	DeclarationOf Kind = "DeclarationOf"
    +	Unknown       Kind = ""
    +	Unsupported   Kind = "Unsupported"
    +	TypeParam     Kind = "TypeParam"
    +
    +	// Protobuf is protobuf type.
    +	Protobuf Kind = "Protobuf"
    +)
    +
    +// Package holds package-level information.
    +// Fields are public, as everything in this package, to enable consumption by
    +// templates (for example). But it is strongly encouraged for code to build by
    +// using the provided functions.
    +type Package struct {
    +	// Canonical import-path of this package.
    +	Path string
    +
    +	// The location (on disk) of this package.
    +	Dir string
    +
    +	// Short name of this package, as in the 'package x' line.
    +	Name string
    +
    +	// The comment right above the package declaration in doc.go, if any.
    +	DocComments []string
    +
    +	// All comments from doc.go, if any.
    +	// TODO: remove Comments and use DocComments everywhere.
    +	Comments []string
    +
    +	// Types within this package, indexed by their name (*not* including
    +	// package name).
    +	Types map[string]*Type
    +
    +	// Functions within this package, indexed by their name (*not* including
    +	// package name).
    +	Functions map[string]*Type
    +
    +	// Global variables within this package, indexed by their name (*not* including
    +	// package name).
    +	Variables map[string]*Type
    +
    +	// Global constants within this package, indexed by their name (*not* including
    +	// package name).
    +	Constants map[string]*Type
    +
    +	// Packages imported by this package, indexed by (canonicalized)
    +	// package path.
    +	Imports map[string]*Package
    +}
    +
    +// Has returns true if the given name references a type known to this package.
    +func (p *Package) Has(name string) bool {
    +	_, has := p.Types[name]
    +	return has
    +}
    +
    +// Type gets the given Type in this Package.  If the Type is not already
    +// defined, this will add it and return the new Type value.  The caller is
    +// expected to finish initialization.
    +func (p *Package) Type(typeName string) *Type {
    +	if t, ok := p.Types[typeName]; ok {
    +		return t
    +	}
    +	if p.Path == "" {
    +		// Import the standard builtin types!
    +		if t, ok := builtins.Types[typeName]; ok {
    +			p.Types[typeName] = t
    +			return t
    +		}
    +	}
    +	t := &Type{Name: Name{Package: p.Path, Name: typeName}}
    +	p.Types[typeName] = t
    +	return t
    +}
    +
    +// Function gets the given function Type in this Package. If the function is
    +// not already defined, this will add it.  If a function is added, it's the
    +// caller's responsibility to finish construction of the function by setting
    +// Underlying to the correct type.
    +func (p *Package) Function(funcName string) *Type {
    +	if t, ok := p.Functions[funcName]; ok {
    +		return t
    +	}
    +	t := &Type{Name: Name{Package: p.Path, Name: funcName}}
    +	t.Kind = DeclarationOf
    +	p.Functions[funcName] = t
    +	return t
    +}
    +
    +// Variable gets the given variable Type in this Package. If the variable is
    +// not already defined, this will add it. If a variable is added, it's the caller's
    +// responsibility to finish construction of the variable by setting Underlying
    +// to the correct type.
    +func (p *Package) Variable(varName string) *Type {
    +	if t, ok := p.Variables[varName]; ok {
    +		return t
    +	}
    +	t := &Type{Name: Name{Package: p.Path, Name: varName}}
    +	t.Kind = DeclarationOf
    +	p.Variables[varName] = t
    +	return t
    +}
    +
    +// Constant gets the given constant Type in this Package. If the constant is
    +// not already defined, this will add it. If a constant is added, it's the caller's
    +// responsibility to finish construction of the constant by setting Underlying
    +// to the correct type.
    +func (p *Package) Constant(constName string) *Type {
    +	if t, ok := p.Constants[constName]; ok {
    +		return t
    +	}
    +	t := &Type{Name: Name{Package: p.Path, Name: constName}}
    +	t.Kind = DeclarationOf
    +	p.Constants[constName] = t
    +	return t
    +}
    +
    +// HasImport returns true if p imports packageName. Package names include the
    +// package directory.
    +func (p *Package) HasImport(packageName string) bool {
    +	_, has := p.Imports[packageName]
    +	return has
    +}
    +
    +// Universe is a map of all packages. The key is the package name, but you
    +// should use Package(), Type(), Function(), or Variable() instead of direct
    +// access.
    +type Universe map[string]*Package
    +
    +// Type returns the canonical type for the given fully-qualified name. Builtin
    +// types will always be found, even if they haven't been explicitly added to
    +// the map. If a non-existing type is requested, this will create (a marker for)
    +// it.
    +func (u Universe) Type(n Name) *Type {
    +	return u.Package(n.Package).Type(n.Name)
    +}
    +
    +// Function returns the canonical function for the given fully-qualified name.
    +// If a non-existing function is requested, this will create (a marker for) it.
    +// If a marker is created, it's the caller's responsibility to finish
    +// construction of the function by setting Underlying to the correct type.
    +func (u Universe) Function(n Name) *Type {
    +	return u.Package(n.Package).Function(n.Name)
    +}
    +
    +// Variable returns the canonical variable for the given fully-qualified name.
    +// If a non-existing variable is requested, this will create (a marker for) it.
    +// If a marker is created, it's the caller's responsibility to finish
    +// construction of the variable by setting Underlying to the correct type.
    +func (u Universe) Variable(n Name) *Type {
    +	return u.Package(n.Package).Variable(n.Name)
    +}
    +
    +// Constant returns the canonical constant for the given fully-qualified name.
    +// If a non-existing constant is requested, this will create (a marker for) it.
    +// If a marker is created, it's the caller's responsibility to finish
    +// construction of the constant by setting Underlying to the correct type.
    +func (u Universe) Constant(n Name) *Type {
    +	return u.Package(n.Package).Constant(n.Name)
    +}
    +
    +// AddImports registers import lines for packageName. May be called multiple times.
    +// You are responsible for canonicalizing all package paths.
    +func (u Universe) AddImports(packagePath string, importPaths ...string) {
    +	p := u.Package(packagePath)
    +	for _, i := range importPaths {
    +		p.Imports[i] = u.Package(i)
    +	}
    +}
    +
    +// Package returns the Package for the given path.
    +// If a non-existing package is requested, this will create (a marker for) it.
    +// If a marker is created, it's the caller's responsibility to finish
    +// construction of the package.
    +func (u Universe) Package(packagePath string) *Package {
    +	if p, ok := u[packagePath]; ok {
    +		return p
    +	}
    +	p := &Package{
    +		Path:      packagePath,
    +		Types:     map[string]*Type{},
    +		Functions: map[string]*Type{},
    +		Variables: map[string]*Type{},
    +		Constants: map[string]*Type{},
    +		Imports:   map[string]*Package{},
    +	}
    +	u[packagePath] = p
    +	return p
    +}
    +
    +// Type represents a subset of possible go types.
    +type Type struct {
    +	// There are two general categories of types, those explicitly named
    +	// and those anonymous. Named ones will have a non-empty package in the
    +	// name field.
    +	//
    +	// An exception: If Kind == DeclarationOf, then this name is the name of a
    +	// top-level function, variable, or const, and the type can be found in Underlying.
    +	// We do this to allow the naming system to work against these objects, even
    +	// though they aren't strictly speaking types.
    +	Name Name
    +
    +	// The general kind of this type.
    +	Kind Kind
    +
    +	// If there are comment lines immediately before the type definition,
    +	// they will be recorded here.
    +	CommentLines []string
    +
    +	// If there are comment lines preceding the `CommentLines`, they will be
    +	// recorded here. There are two cases:
    +	// ---
    +	// SecondClosestCommentLines
    +	// a blank line
    +	// CommentLines
    +	// type definition
    +	// ---
    +	//
    +	// or
    +	// ---
    +	// SecondClosestCommentLines
    +	// a blank line
    +	// type definition
    +	// ---
    +	SecondClosestCommentLines []string
    +
    +	// If Kind == Struct
    +	Members []Member
    +
    +	// If Kind == Struct
    +	TypeParams map[string]*Type
    +
    +	// If Kind == Map, Slice, Pointer, or Chan
    +	Elem *Type
    +
    +	// If Kind == Map, this is the map's key type.
    +	Key *Type
    +
    +	// If Kind == Alias, this is the underlying type.
    +	// If Kind == DeclarationOf, this is the type of the declaration.
    +	Underlying *Type
    +
    +	// If Kind == Interface, this is the set of all required functions.
    +	// Otherwise, if this is a named type, this is the list of methods that
    +	// type has. (All elements will have Kind=="Func")
    +	Methods map[string]*Type
    +
    +	// If Kind == func, this is the signature of the function.
    +	Signature *Signature
    +
    +	// ConstValue contains a stringified constant value if
    +	// Kind == DeclarationOf and this is a constant value
    +	// declaration. For string constants, this field contains
    +	// the entire, un-quoted value. For other types, it contains
    +	// a human-readable literal.
    +	ConstValue *string
    +
    +	// TODO: Add:
    +	// * channel direction
    +
    +	// If Kind == Array
    +	Len int64
    +}
    +
    +// String returns the name of the type.
    +func (t *Type) String() string {
    +	if t == nil {
    +		return "" // makes tests easier
    +	}
    +	return t.Name.String()
    +}
    +
    +// IsPrimitive returns whether the type is a built-in type or is an alias to a
    +// built-in type.  For example: strings and aliases of strings are primitives,
    +// structs are not.
    +func (t *Type) IsPrimitive() bool {
    +	if t.Kind == Builtin || (t.Kind == Alias && t.Underlying.Kind == Builtin) {
    +		return true
    +	}
    +	return false
    +}
    +
    +// IsAssignable returns whether the type is deep-assignable.  For example,
    +// slices and maps and pointers are shallow copies, but ints and strings are
    +// complete.
    +func (t *Type) IsAssignable() bool {
    +	if t.IsPrimitive() {
    +		return true
    +	}
    +	if t.Kind == Struct {
    +		for _, m := range t.Members {
    +			if !m.Type.IsAssignable() {
    +				return false
    +			}
    +		}
    +		return true
    +	}
    +	return false
    +}
    +
    +// IsAnonymousStruct returns true if the type is an anonymous struct or an alias
    +// to an anonymous struct.
    +func (t *Type) IsAnonymousStruct() bool {
    +	return (t.Kind == Struct && t.Name.Name == "struct{}") || (t.Kind == Alias && t.Underlying.IsAnonymousStruct())
    +}
    +
    +// A single struct member
    +type Member struct {
    +	// The name of the member.
    +	Name string
    +
    +	// If the member is embedded (anonymous) this will be true, and the
    +	// Name will be the type name.
    +	Embedded bool
    +
    +	// If there are comment lines immediately before the member in the type
    +	// definition, they will be recorded here.
    +	CommentLines []string
    +
    +	// If there are tags along with this member, they will be saved here.
    +	Tags string
    +
    +	// The type of this member.
    +	Type *Type
    +}
    +
    +// String returns the name and type of the member.
    +func (m Member) String() string {
    +	return m.Name + " " + m.Type.String()
    +}
    +
    +// ParamResult represents a parameter or a result of a method's signature.
    +type ParamResult struct {
    +	// The name of the parameter or result.
    +	Name string
    +	// The type of this parameter or result.
    +	Type *Type
    +}
    +
    +// Signature is a function's signature.
    +type Signature struct {
    +	// If a method of some type, this is the type it's a member of.
    +	Receiver   *Type
    +	Parameters []*ParamResult
    +	Results    []*ParamResult
    +
    +	// True if the last in parameter is of the form ...T.
    +	Variadic bool
    +
    +	// If there are comment lines immediately before this
    +	// signature/method/function declaration, they will be recorded here.
    +	CommentLines []string
    +}
    +
    +// Built in types.
    +var (
    +	String = &Type{
    +		Name: Name{Name: "string"},
    +		Kind: Builtin,
    +	}
    +	Int64 = &Type{
    +		Name: Name{Name: "int64"},
    +		Kind: Builtin,
    +	}
    +	Int32 = &Type{
    +		Name: Name{Name: "int32"},
    +		Kind: Builtin,
    +	}
    +	Int16 = &Type{
    +		Name: Name{Name: "int16"},
    +		Kind: Builtin,
    +	}
    +	Int = &Type{
    +		Name: Name{Name: "int"},
    +		Kind: Builtin,
    +	}
    +	Uint64 = &Type{
    +		Name: Name{Name: "uint64"},
    +		Kind: Builtin,
    +	}
    +	Uint32 = &Type{
    +		Name: Name{Name: "uint32"},
    +		Kind: Builtin,
    +	}
    +	Uint16 = &Type{
    +		Name: Name{Name: "uint16"},
    +		Kind: Builtin,
    +	}
    +	Uint = &Type{
    +		Name: Name{Name: "uint"},
    +		Kind: Builtin,
    +	}
    +	Uintptr = &Type{
    +		Name: Name{Name: "uintptr"},
    +		Kind: Builtin,
    +	}
    +	Float64 = &Type{
    +		Name: Name{Name: "float64"},
    +		Kind: Builtin,
    +	}
    +	Float32 = &Type{
    +		Name: Name{Name: "float32"},
    +		Kind: Builtin,
    +	}
    +	Float = &Type{
    +		Name: Name{Name: "float"},
    +		Kind: Builtin,
    +	}
    +	Bool = &Type{
    +		Name: Name{Name: "bool"},
    +		Kind: Builtin,
    +	}
    +	Byte = &Type{
    +		Name: Name{Name: "byte"},
    +		Kind: Builtin,
    +	}
    +
    +	builtins = &Package{
    +		Types: map[string]*Type{
    +			"bool":    Bool,
    +			"string":  String,
    +			"int":     Int,
    +			"int64":   Int64,
    +			"int32":   Int32,
    +			"int16":   Int16,
    +			"int8":    Byte,
    +			"uint":    Uint,
    +			"uint64":  Uint64,
    +			"uint32":  Uint32,
    +			"uint16":  Uint16,
    +			"uint8":   Byte,
    +			"uintptr": Uintptr,
    +			"byte":    Byte,
    +			"float":   Float,
    +			"float64": Float64,
    +			"float32": Float32,
    +		},
    +		Imports: map[string]*Package{},
    +		Path:    "",
    +		Name:    "",
    +	}
    +)
    +
    +func IsInteger(t *Type) bool {
    +	switch t {
    +	case Int, Int64, Int32, Int16, Uint, Uint64, Uint32, Uint16, Byte:
    +		return true
    +	default:
    +		return false
    +	}
    +}
    diff --git a/vendor/k8s.io/klog/v2/klog.go b/vendor/k8s.io/klog/v2/klog.go
    index 026be9e3b195..47ec9466a6ff 100644
    --- a/vendor/k8s.io/klog/v2/klog.go
    +++ b/vendor/k8s.io/klog/v2/klog.go
    @@ -404,13 +404,6 @@ func (t *traceLocation) Set(value string) error {
     	return nil
     }
     
    -// flushSyncWriter is the interface satisfied by logging destinations.
    -type flushSyncWriter interface {
    -	Flush() error
    -	Sync() error
    -	io.Writer
    -}
    -
     var logging loggingT
     var commandLine flag.FlagSet
     
    @@ -486,7 +479,7 @@ type settings struct {
     	// Access to all of the following fields must be protected via a mutex.
     
     	// file holds writer for each of the log types.
    -	file [severity.NumSeverity]flushSyncWriter
    +	file [severity.NumSeverity]io.Writer
     	// flushInterval is the interval for periodic flushing. If zero,
     	// the global default will be used.
     	flushInterval time.Duration
    @@ -831,32 +824,12 @@ func (l *loggingT) printS(err error, s severity.Severity, depth int, msg string,
     	buffer.PutBuffer(b)
     }
     
    -// redirectBuffer is used to set an alternate destination for the logs
    -type redirectBuffer struct {
    -	w io.Writer
    -}
    -
    -func (rb *redirectBuffer) Sync() error {
    -	return nil
    -}
    -
    -func (rb *redirectBuffer) Flush() error {
    -	return nil
    -}
    -
    -func (rb *redirectBuffer) Write(bytes []byte) (n int, err error) {
    -	return rb.w.Write(bytes)
    -}
    -
     // SetOutput sets the output destination for all severities
     func SetOutput(w io.Writer) {
     	logging.mu.Lock()
     	defer logging.mu.Unlock()
     	for s := severity.FatalLog; s >= severity.InfoLog; s-- {
    -		rb := &redirectBuffer{
    -			w: w,
    -		}
    -		logging.file[s] = rb
    +		logging.file[s] = w
     	}
     }
     
    @@ -868,10 +841,7 @@ func SetOutputBySeverity(name string, w io.Writer) {
     	if !ok {
     		panic(fmt.Sprintf("SetOutputBySeverity(%q): unrecognized severity name", name))
     	}
    -	rb := &redirectBuffer{
    -		w: w,
    -	}
    -	logging.file[sev] = rb
    +	logging.file[sev] = w
     }
     
     // LogToStderr sets whether to log exclusively to stderr, bypassing outputs
    @@ -1011,7 +981,8 @@ func (l *loggingT) exit(err error) {
     		logExitFunc(err)
     		return
     	}
    -	l.flushAll()
    +	needToSync := l.flushAll()
    +	l.syncAll(needToSync)
     	OsExit(2)
     }
     
    @@ -1028,10 +999,6 @@ type syncBuffer struct {
     	maxbytes uint64 // The max number of bytes this syncBuffer.file can hold before cleaning up.
     }
     
    -func (sb *syncBuffer) Sync() error {
    -	return sb.file.Sync()
    -}
    -
     // CalculateMaxSize returns the real max size in bytes after considering the default max size and the flag options.
     func CalculateMaxSize() uint64 {
     	if logging.logFile != "" {
    @@ -1223,24 +1190,45 @@ func StartFlushDaemon(interval time.Duration) {
     // lockAndFlushAll is like flushAll but locks l.mu first.
     func (l *loggingT) lockAndFlushAll() {
     	l.mu.Lock()
    -	l.flushAll()
    +	needToSync := l.flushAll()
     	l.mu.Unlock()
    +	// Some environments are slow when syncing and holding the lock might cause contention.
    +	l.syncAll(needToSync)
     }
     
    -// flushAll flushes all the logs and attempts to "sync" their data to disk.
    +// flushAll flushes all the logs
     // l.mu is held.
    -func (l *loggingT) flushAll() {
    +//
    +// The result is the number of files which need to be synced and the pointers to them.
    +func (l *loggingT) flushAll() fileArray {
    +	var needToSync fileArray
    +
     	// Flush from fatal down, in case there's trouble flushing.
     	for s := severity.FatalLog; s >= severity.InfoLog; s-- {
     		file := l.file[s]
    -		if file != nil {
    -			_ = file.Flush() // ignore error
    -			_ = file.Sync()  // ignore error
    +		if sb, ok := file.(*syncBuffer); ok && sb.file != nil {
    +			_ = sb.Flush() // ignore error
    +			needToSync.files[needToSync.num] = sb.file
    +			needToSync.num++
     		}
     	}
     	if logging.loggerOptions.flush != nil {
     		logging.loggerOptions.flush()
     	}
    +	return needToSync
    +}
    +
    +type fileArray struct {
    +	num   int
    +	files [severity.NumSeverity]*os.File
    +}
    +
    +// syncAll attempts to "sync" their data to disk.
    +func (l *loggingT) syncAll(needToSync fileArray) {
    +	// Flush from fatal down, in case there's trouble flushing.
    +	for i := 0; i < needToSync.num; i++ {
    +		_ = needToSync.files[i].Sync() // ignore error
    +	}
     }
     
     // CopyStandardLogTo arranges for messages written to the Go "log" package's
    diff --git a/vendor/k8s.io/kube-openapi/cmd/openapi-gen/args/args.go b/vendor/k8s.io/kube-openapi/cmd/openapi-gen/args/args.go
    index 19783370e993..153784ed9b08 100644
    --- a/vendor/k8s.io/kube-openapi/cmd/openapi-gen/args/args.go
    +++ b/vendor/k8s.io/kube-openapi/cmd/openapi-gen/args/args.go
    @@ -18,59 +18,61 @@ package args
     
     import (
     	"fmt"
    -	"path/filepath"
     
     	"github.com/spf13/pflag"
    -	"k8s.io/gengo/args"
     )
     
    -// CustomArgs is used by the gengo framework to pass args specific to this generator.
    -type CustomArgs struct {
    -	// ReportFilename is added to CustomArgs for specifying name of report file used
    +type Args struct {
    +	OutputDir  string // must be a directory path
    +	OutputPkg  string // must be a Go import-path
    +	OutputFile string
    +
    +	GoHeaderFile string
    +
    +	// ReportFilename is added to Args for specifying name of report file used
     	// by API linter. If specified, API rule violations will be printed to report file.
     	// Otherwise default value "-" will be used which indicates stdout.
     	ReportFilename string
     }
     
    -// NewDefaults returns default arguments for the generator. Returning the arguments instead
    +// New returns default arguments for the generator. Returning the arguments instead
     // of using default flag parsing allows registering custom arguments afterwards
    -func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
    -	// Default() sets a couple of flag default values for example the boilerplate.
    -	// WithoutDefaultFlagParsing() disables implicit addition of command line flags and parsing,
    -	// which allows registering custom arguments afterwards
    -	genericArgs := args.Default().WithoutDefaultFlagParsing()
    -	genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kube-openapi/boilerplate/boilerplate.go.txt")
    -
    -	customArgs := &CustomArgs{}
    -	genericArgs.CustomArgs = customArgs
    +func New() *Args {
    +	args := &Args{}
     
     	// Default value for report filename is "-", which stands for stdout
    -	customArgs.ReportFilename = "-"
    -	// Default value for output file base name
    -	genericArgs.OutputFileBaseName = "openapi_generated"
    +	args.ReportFilename = "-"
     
    -	return genericArgs, customArgs
    +	return args
     }
     
     // AddFlags add the generator flags to the flag set.
    -func (c *CustomArgs) AddFlags(fs *pflag.FlagSet) {
    -	fs.StringVarP(&c.ReportFilename, "report-filename", "r", c.ReportFilename, "Name of report file used by API linter to print API violations. Default \"-\" stands for standard output. NOTE that if valid filename other than \"-\" is specified, API linter won't return error on detected API violations. This allows further check of existing API violations without stopping the OpenAPI generation toolchain.")
    +func (args *Args) AddFlags(fs *pflag.FlagSet) {
    +	fs.StringVar(&args.OutputDir, "output-dir", "",
    +		"the base directory under which to generate results")
    +	fs.StringVar(&args.OutputPkg, "output-pkg", "",
    +		"the base Go import-path under which to generate results")
    +	fs.StringVar(&args.OutputFile, "output-file", "generated.openapi.go",
    +		"the name of the file to be generated")
    +	fs.StringVar(&args.GoHeaderFile, "go-header-file", "",
    +		"the path to a file containing boilerplate header text; the string \"YEAR\" will be replaced with the current 4-digit year")
    +	fs.StringVarP(&args.ReportFilename, "report-filename", "r", args.ReportFilename,
    +		"Name of report file used by API linter to print API violations. Default \"-\" stands for standard output. NOTE that if valid filename other than \"-\" is specified, API linter won't return error on detected API violations. This allows further check of existing API violations without stopping the OpenAPI generation toolchain.")
     }
     
     // Validate checks the given arguments.
    -func Validate(genericArgs *args.GeneratorArgs) error {
    -	c, ok := genericArgs.CustomArgs.(*CustomArgs)
    -	if !ok {
    -		return fmt.Errorf("input arguments don't contain valid custom arguments")
    +func (args *Args) Validate() error {
    +	if len(args.OutputDir) == 0 {
    +		return fmt.Errorf("--output-dir must be specified")
     	}
    -	if len(c.ReportFilename) == 0 {
    -		return fmt.Errorf("report filename cannot be empty. specify a valid filename or use \"-\" for stdout")
    +	if len(args.OutputPkg) == 0 {
    +		return fmt.Errorf("--output-pkg must be specified")
     	}
    -	if len(genericArgs.OutputFileBaseName) == 0 {
    -		return fmt.Errorf("output file base name cannot be empty")
    +	if len(args.OutputFile) == 0 {
    +		return fmt.Errorf("--output-file must be specified")
     	}
    -	if len(genericArgs.OutputPackagePath) == 0 {
    -		return fmt.Errorf("output package cannot be empty")
    +	if len(args.ReportFilename) == 0 {
    +		return fmt.Errorf("--report-filename must be specified (use \"-\" for stdout)")
     	}
     	return nil
     }
    diff --git a/vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go b/vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go
    index c446e80b8a02..b466019ad686 100644
    --- a/vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go
    +++ b/vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go
    @@ -24,33 +24,38 @@ import (
     	"flag"
     	"log"
     
    -	generatorargs "k8s.io/kube-openapi/cmd/openapi-gen/args"
    -	"k8s.io/kube-openapi/pkg/generators"
    -
     	"github.com/spf13/pflag"
    -
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
     	"k8s.io/klog/v2"
    +	"k8s.io/kube-openapi/cmd/openapi-gen/args"
    +	"k8s.io/kube-openapi/pkg/generators"
     )
     
     func main() {
     	klog.InitFlags(nil)
    -	genericArgs, customArgs := generatorargs.NewDefaults()
    +	args := args.New()
     
    -	genericArgs.AddFlags(pflag.CommandLine)
    -	customArgs.AddFlags(pflag.CommandLine)
    +	args.AddFlags(pflag.CommandLine)
     	flag.Set("logtostderr", "true")
     	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
     	pflag.Parse()
     
    -	if err := generatorargs.Validate(genericArgs); err != nil {
    +	if err := args.Validate(); err != nil {
     		log.Fatalf("Arguments validation error: %v", err)
     	}
     
    +	myTargets := func(context *generator.Context) []generator.Target {
    +		return generators.GetTargets(context, args)
    +	}
    +
     	// Generates the code for the OpenAPIDefinitions.
    -	if err := genericArgs.Execute(
    +	if err := gengo.Execute(
     		generators.NameSystems(),
     		generators.DefaultNameSystem(),
    -		generators.Packages,
    +		myTargets,
    +		gengo.StdBuildTag,
    +		pflag.Args(),
     	); err != nil {
     		log.Fatalf("OpenAPI code generation error: %v", err)
     	}
    diff --git a/vendor/k8s.io/kube-openapi/pkg/common/common.go b/vendor/k8s.io/kube-openapi/pkg/common/common.go
    index 2e15e163c50b..e4ce843b0c91 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/common/common.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/common/common.go
    @@ -164,6 +164,9 @@ type OpenAPIV3Config struct {
     	// It is an optional function to customize model names.
     	GetDefinitionName func(name string) (string, spec.Extensions)
     
    +	// PostProcessSpec runs after the spec is ready to serve. It allows a final modification to the spec before serving.
    +	PostProcessSpec func(*spec3.OpenAPI) (*spec3.OpenAPI, error)
    +
     	// SecuritySchemes is list of all security schemes for OpenAPI service.
     	SecuritySchemes spec3.SecuritySchemes
     
    diff --git a/vendor/k8s.io/kube-openapi/pkg/generators/api_linter.go b/vendor/k8s.io/kube-openapi/pkg/generators/api_linter.go
    index 2763cf8847b8..5deff4d5a1f1 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/generators/api_linter.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/generators/api_linter.go
    @@ -25,8 +25,8 @@ import (
     
     	"k8s.io/kube-openapi/pkg/generators/rules"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/types"
     	"k8s.io/klog/v2"
     )
     
    @@ -94,7 +94,7 @@ func newAPIViolationGen() *apiViolationGen {
     }
     
     type apiViolationGen struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     
     	linter *apiLinter
     }
    diff --git a/vendor/k8s.io/kube-openapi/pkg/generators/config.go b/vendor/k8s.io/kube-openapi/pkg/generators/config.go
    index d728f2a32ac3..1fbd775985c5 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/generators/config.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/generators/config.go
    @@ -17,16 +17,14 @@ limitations under the License.
     package generators
     
     import (
    -	"fmt"
    -	"path/filepath"
    +	"path"
     
    -	"k8s.io/gengo/args"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     	"k8s.io/klog/v2"
    -
    -	generatorargs "k8s.io/kube-openapi/cmd/openapi-gen/args"
    +	"k8s.io/kube-openapi/cmd/openapi-gen/args"
     )
     
     type identityNamer struct{}
    @@ -51,36 +49,31 @@ func DefaultNameSystem() string {
     	return "sorting_namer"
     }
     
    -func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
    -	boilerplate, err := arguments.LoadGoBoilerplate()
    +func GetTargets(context *generator.Context, args *args.Args) []generator.Target {
    +	boilerplate, err := gengo.GoBoilerplate(args.GoHeaderFile, gengo.StdBuildTag, gengo.StdGeneratedBy)
     	if err != nil {
     		klog.Fatalf("Failed loading boilerplate: %v", err)
     	}
    -	header := append([]byte(fmt.Sprintf("// +build !%s\n\n", arguments.GeneratedBuildTag)), boilerplate...)
    -	header = append(header, []byte(
    -		`
    -// This file was autogenerated by openapi-gen. Do not edit it manually!
    -
    -`)...)
     
     	reportPath := "-"
    -	if customArgs, ok := arguments.CustomArgs.(*generatorargs.CustomArgs); ok {
    -		reportPath = customArgs.ReportFilename
    +	if args.ReportFilename != "" {
    +		reportPath = args.ReportFilename
     	}
     	context.FileTypes[apiViolationFileType] = apiViolationFile{
     		unmangledPath: reportPath,
     	}
     
    -	return generator.Packages{
    -		&generator.DefaultPackage{
    -			PackageName: filepath.Base(arguments.OutputPackagePath),
    -			PackagePath: arguments.OutputPackagePath,
    -			HeaderText:  header,
    -			GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
    +	return []generator.Target{
    +		&generator.SimpleTarget{
    +			PkgName:       path.Base(args.OutputPkg), // `path` vs. `filepath` because packages use '/'
    +			PkgPath:       args.OutputPkg,
    +			PkgDir:        args.OutputDir,
    +			HeaderComment: boilerplate,
    +			GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
     				return []generator.Generator{
     					newOpenAPIGen(
    -						arguments.OutputFileBaseName,
    -						arguments.OutputPackagePath,
    +						args.OutputFile,
    +						args.OutputPkg,
     					),
     					newAPIViolationGen(),
     				}
    diff --git a/vendor/k8s.io/kube-openapi/pkg/generators/enum.go b/vendor/k8s.io/kube-openapi/pkg/generators/enum.go
    index 292a3c762ae2..3db034d6c6f3 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/generators/enum.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/generators/enum.go
    @@ -22,8 +22,9 @@ import (
     	"sort"
     	"strings"
     
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/types"
     )
     
     const tagEnumType = "enum"
    @@ -121,7 +122,7 @@ func parseEnums(c *generator.Context) enumMap {
     					Value:   *c.ConstValue,
     					Comment: strings.Join(c.CommentLines, " "),
     				}
    -				enumTypes[enumType.Name].appendValue(value)
    +				enumTypes[enumType.Name].addIfNotPresent(value)
     			}
     		}
     	}
    @@ -129,7 +130,21 @@ func parseEnums(c *generator.Context) enumMap {
     	return enumTypes
     }
     
    -func (et *enumType) appendValue(value *enumValue) {
    +func (et *enumType) addIfNotPresent(value *enumValue) {
    +	// If we already have an enum case with the same value, then ignore this new
    +	// one. This can happen if an enum aliases one from another package and
    +	// re-exports the cases.
    +	for i, existing := range et.Values {
    +		if existing.Value == value.Value {
    +
    +			// Take the value of the longer comment (or some other deterministic tie breaker)
    +			if len(existing.Comment) < len(value.Comment) || (len(existing.Comment) == len(value.Comment) && existing.Comment > value.Comment) {
    +				et.Values[i] = value
    +			}
    +
    +			return
    +		}
    +	}
     	et.Values = append(et.Values, value)
     }
     
    @@ -155,7 +170,7 @@ func isEnumType(stringType *types.Type, t *types.Type) bool {
     }
     
     func hasEnumTag(t *types.Type) bool {
    -	return types.ExtractCommentTags("+", t.CommentLines)[tagEnumType] != nil
    +	return gengo.ExtractCommentTags("+", t.CommentLines)[tagEnumType] != nil
     }
     
     // whitespaceRegex is the regex for consecutive whitespaces.
    diff --git a/vendor/k8s.io/kube-openapi/pkg/generators/extension.go b/vendor/k8s.io/kube-openapi/pkg/generators/extension.go
    index e37d93ef733b..42d385416fba 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/generators/extension.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/generators/extension.go
    @@ -21,8 +21,9 @@ import (
     	"sort"
     	"strings"
     
    -	"k8s.io/gengo/examples/set-gen/sets"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/types"
    +	"k8s.io/kube-openapi/pkg/util/sets"
     )
     
     const extensionPrefix = "x-kubernetes-"
    @@ -171,7 +172,7 @@ func parseExtensions(comments []string) ([]extension, []error) {
     		}
     	}
     	// Next, generate extensions from "idlTags" (e.g. +listType)
    -	tagValues := types.ExtractCommentTags("+", comments)
    +	tagValues := gengo.ExtractCommentTags("+", comments)
     	for _, idlTag := range sortedMapKeys(tagValues) {
     		xAttrs, exists := tagToExtension[idlTag]
     		if !exists {
    diff --git a/vendor/k8s.io/kube-openapi/pkg/generators/markers.go b/vendor/k8s.io/kube-openapi/pkg/generators/markers.go
    new file mode 100644
    index 000000000000..a8af60b6cf89
    --- /dev/null
    +++ b/vendor/k8s.io/kube-openapi/pkg/generators/markers.go
    @@ -0,0 +1,799 @@
    +/*
    +Copyright 2022 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +	http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package generators
    +
    +import (
    +	"encoding/json"
    +	"errors"
    +	"fmt"
    +	"reflect"
    +	"regexp"
    +	"strconv"
    +	"strings"
    +	"sync"
    +
    +	"k8s.io/gengo/v2/types"
    +	openapi "k8s.io/kube-openapi/pkg/common"
    +	"k8s.io/kube-openapi/pkg/validation/spec"
    +)
    +
    +type CELTag struct {
    +	Rule              string `json:"rule,omitempty"`
    +	Message           string `json:"message,omitempty"`
    +	MessageExpression string `json:"messageExpression,omitempty"`
    +	OptionalOldSelf   *bool  `json:"optionalOldSelf,omitempty"`
    +	Reason            string `json:"reason,omitempty"`
    +	FieldPath         string `json:"fieldPath,omitempty"`
    +}
    +
    +func (c *CELTag) Validate() error {
    +	if c == nil || *c == (CELTag{}) {
    +		return fmt.Errorf("empty CEL tag is not allowed")
    +	}
    +
    +	var errs []error
    +	if c.Rule == "" {
    +		errs = append(errs, fmt.Errorf("rule cannot be empty"))
    +	}
    +	if c.Message == "" && c.MessageExpression == "" {
    +		errs = append(errs, fmt.Errorf("message or messageExpression must be set"))
    +	}
    +	if c.Message != "" && c.MessageExpression != "" {
    +		errs = append(errs, fmt.Errorf("message and messageExpression cannot be set at the same time"))
    +	}
    +
    +	if len(errs) > 0 {
    +		return errors.Join(errs...)
    +	}
    +
    +	return nil
    +}
    +
    +// isKnownTagCommentKey returns true if the given key is a known comment tag key.
    +// Known keys are identified by the json field tags in the commentTags struct.
    +// If the key is a composite key, only the first key part is checked, and is
    +// expected to be separated by the remainder of the key by a ':' or '[' delimiter.
    +func isKnownTagCommentKey(key string) bool {
    +	split := func(r rune) bool { return r == ':' || r == '[' }
    +	commentTags := strings.FieldsFunc(key, split)
    +	if len(commentTags) == 0 {
    +		return false
    +	}
    +	_, ok := tagKeys()[commentTags[0]]
    +	return ok
    +}
    +
    +var tagKeys = sync.OnceValue(func() map[string]struct{} {
    +	result := map[string]struct{}{}
    +	t := reflect.TypeOf(commentTags{})
    +	for i := 0; i < t.NumField(); i++ {
    +		field := t.Field(i)
    +		if jsonTag := field.Tag.Get("json"); jsonTag != "" {
    +			if key, _, _ := strings.Cut(jsonTag, ","); key != "" {
    +				result[key] = struct{}{}
    +			}
    +		}
    +	}
    +	return result
    +})
    +
    +// commentTags represents the parsed comment tags for a given type. These types are then used to generate schema validations.
    +// These only include the newer prefixed tags. The older tags are still supported,
    +// but are not included in this struct. Comment Tags are transformed into a
    +// *spec.Schema, which is then combined with the older marker comments to produce
    +// the generated OpenAPI spec.
    +//
    +// List of tags not included in this struct:
    +//
    +// - +optional
    +// - +default
    +// - +listType
    +// - +listMapKeys
    +// - +mapType
    +type commentTags struct {
    +	Nullable         *bool         `json:"nullable,omitempty"`
    +	Format           *string       `json:"format,omitempty"`
    +	Maximum          *float64      `json:"maximum,omitempty"`
    +	ExclusiveMaximum *bool         `json:"exclusiveMaximum,omitempty"`
    +	Minimum          *float64      `json:"minimum,omitempty"`
    +	ExclusiveMinimum *bool         `json:"exclusiveMinimum,omitempty"`
    +	MaxLength        *int64        `json:"maxLength,omitempty"`
    +	MinLength        *int64        `json:"minLength,omitempty"`
    +	Pattern          *string       `json:"pattern,omitempty"`
    +	MaxItems         *int64        `json:"maxItems,omitempty"`
    +	MinItems         *int64        `json:"minItems,omitempty"`
    +	UniqueItems      *bool         `json:"uniqueItems,omitempty"`
    +	MultipleOf       *float64      `json:"multipleOf,omitempty"`
    +	Enum             []interface{} `json:"enum,omitempty"`
    +	MaxProperties    *int64        `json:"maxProperties,omitempty"`
    +	MinProperties    *int64        `json:"minProperties,omitempty"`
    +
    +	// Nested commentTags for extending the schemas of subfields at point-of-use
    +	// when you cant annotate them directly. Cannot be used to add properties
    +	// or remove validations on the overridden schema.
    +	Items                *commentTags            `json:"items,omitempty"`
    +	Properties           map[string]*commentTags `json:"properties,omitempty"`
    +	AdditionalProperties *commentTags            `json:"additionalProperties,omitempty"`
    +
    +	CEL []CELTag `json:"cel,omitempty"`
    +
    +	// Future markers can all be parsed into this centralized struct...
    +	// Optional bool `json:"optional,omitempty"`
    +	// Default  any  `json:"default,omitempty"`
    +}
    +
    +// Returns the schema for the given CommentTags instance.
    +// This is the final authoritative schema for the comment tags
    +func (c *commentTags) ValidationSchema() (*spec.Schema, error) {
    +	if c == nil {
    +		return nil, nil
    +	}
    +
    +	isNullable := c.Nullable != nil && *c.Nullable
    +	format := ""
    +	if c.Format != nil {
    +		format = *c.Format
    +	}
    +	isExclusiveMaximum := c.ExclusiveMaximum != nil && *c.ExclusiveMaximum
    +	isExclusiveMinimum := c.ExclusiveMinimum != nil && *c.ExclusiveMinimum
    +	isUniqueItems := c.UniqueItems != nil && *c.UniqueItems
    +	pattern := ""
    +	if c.Pattern != nil {
    +		pattern = *c.Pattern
    +	}
    +
    +	var transformedItems *spec.SchemaOrArray
    +	var transformedProperties map[string]spec.Schema
    +	var transformedAdditionalProperties *spec.SchemaOrBool
    +
    +	if c.Items != nil {
    +		items, err := c.Items.ValidationSchema()
    +		if err != nil {
    +			return nil, fmt.Errorf("failed to transform items: %w", err)
    +		}
    +		transformedItems = &spec.SchemaOrArray{Schema: items}
    +	}
    +
    +	if c.Properties != nil {
    +		properties := make(map[string]spec.Schema)
    +		for key, value := range c.Properties {
    +			property, err := value.ValidationSchema()
    +			if err != nil {
    +				return nil, fmt.Errorf("failed to transform property %q: %w", key, err)
    +			}
    +			properties[key] = *property
    +		}
    +		transformedProperties = properties
    +	}
    +
    +	if c.AdditionalProperties != nil {
    +		additionalProperties, err := c.AdditionalProperties.ValidationSchema()
    +		if err != nil {
    +			return nil, fmt.Errorf("failed to transform additionalProperties: %w", err)
    +		}
    +		transformedAdditionalProperties = &spec.SchemaOrBool{Schema: additionalProperties, Allows: true}
    +	}
    +
    +	res := spec.Schema{
    +		SchemaProps: spec.SchemaProps{
    +			Nullable:         isNullable,
    +			Format:           format,
    +			Maximum:          c.Maximum,
    +			ExclusiveMaximum: isExclusiveMaximum,
    +			Minimum:          c.Minimum,
    +			ExclusiveMinimum: isExclusiveMinimum,
    +			MaxLength:        c.MaxLength,
    +			MinLength:        c.MinLength,
    +			Pattern:          pattern,
    +			MaxItems:         c.MaxItems,
    +			MinItems:         c.MinItems,
    +			UniqueItems:      isUniqueItems,
    +			MultipleOf:       c.MultipleOf,
    +			Enum:             c.Enum,
    +			MaxProperties:    c.MaxProperties,
    +			MinProperties:    c.MinProperties,
    +		},
    +	}
    +
    +	if len(c.CEL) > 0 {
    +		// Convert the CELTag to a map[string]interface{} via JSON
    +		celTagJSON, err := json.Marshal(c.CEL)
    +		if err != nil {
    +			return nil, fmt.Errorf("failed to marshal CEL tag: %w", err)
    +		}
    +		var celTagMap []interface{}
    +		if err := json.Unmarshal(celTagJSON, &celTagMap); err != nil {
    +			return nil, fmt.Errorf("failed to unmarshal CEL tag: %w", err)
    +		}
    +
    +		res.VendorExtensible.AddExtension("x-kubernetes-validations", celTagMap)
    +	}
    +
    +	// Dont add structural properties directly to this schema. This schema
    +	// is used only for validation.
    +	if transformedItems != nil || len(transformedProperties) > 0 || transformedAdditionalProperties != nil {
    +		res.AllOf = append(res.AllOf, spec.Schema{
    +			SchemaProps: spec.SchemaProps{
    +				Items:                transformedItems,
    +				Properties:           transformedProperties,
    +				AdditionalProperties: transformedAdditionalProperties,
    +			},
    +		})
    +	}
    +
    +	return &res, nil
    +}
    +
    +// validates the parameters in a CommentTags instance. Returns any errors encountered.
    +func (c commentTags) Validate() error {
    +
    +	var err error
    +
    +	if c.MinLength != nil && *c.MinLength < 0 {
    +		err = errors.Join(err, fmt.Errorf("minLength cannot be negative"))
    +	}
    +	if c.MaxLength != nil && *c.MaxLength < 0 {
    +		err = errors.Join(err, fmt.Errorf("maxLength cannot be negative"))
    +	}
    +	if c.MinItems != nil && *c.MinItems < 0 {
    +		err = errors.Join(err, fmt.Errorf("minItems cannot be negative"))
    +	}
    +	if c.MaxItems != nil && *c.MaxItems < 0 {
    +		err = errors.Join(err, fmt.Errorf("maxItems cannot be negative"))
    +	}
    +	if c.MinProperties != nil && *c.MinProperties < 0 {
    +		err = errors.Join(err, fmt.Errorf("minProperties cannot be negative"))
    +	}
    +	if c.MaxProperties != nil && *c.MaxProperties < 0 {
    +		err = errors.Join(err, fmt.Errorf("maxProperties cannot be negative"))
    +	}
    +	if c.Minimum != nil && c.Maximum != nil && *c.Minimum > *c.Maximum {
    +		err = errors.Join(err, fmt.Errorf("minimum %f is greater than maximum %f", *c.Minimum, *c.Maximum))
    +	}
    +	if (c.ExclusiveMinimum != nil || c.ExclusiveMaximum != nil) && c.Minimum != nil && c.Maximum != nil && *c.Minimum == *c.Maximum {
    +		err = errors.Join(err, fmt.Errorf("exclusiveMinimum/Maximum cannot be set when minimum == maximum"))
    +	}
    +	if c.MinLength != nil && c.MaxLength != nil && *c.MinLength > *c.MaxLength {
    +		err = errors.Join(err, fmt.Errorf("minLength %d is greater than maxLength %d", *c.MinLength, *c.MaxLength))
    +	}
    +	if c.MinItems != nil && c.MaxItems != nil && *c.MinItems > *c.MaxItems {
    +		err = errors.Join(err, fmt.Errorf("minItems %d is greater than maxItems %d", *c.MinItems, *c.MaxItems))
    +	}
    +	if c.MinProperties != nil && c.MaxProperties != nil && *c.MinProperties > *c.MaxProperties {
    +		err = errors.Join(err, fmt.Errorf("minProperties %d is greater than maxProperties %d", *c.MinProperties, *c.MaxProperties))
    +	}
    +	if c.Pattern != nil {
    +		_, e := regexp.Compile(*c.Pattern)
    +		if e != nil {
    +			err = errors.Join(err, fmt.Errorf("invalid pattern %q: %v", *c.Pattern, e))
    +		}
    +	}
    +	if c.MultipleOf != nil && *c.MultipleOf == 0 {
    +		err = errors.Join(err, fmt.Errorf("multipleOf cannot be 0"))
    +	}
    +
    +	for i, celTag := range c.CEL {
    +		celError := celTag.Validate()
    +		if celError == nil {
    +			continue
    +		}
    +		err = errors.Join(err, fmt.Errorf("invalid CEL tag at index %d: %w", i, celError))
    +	}
    +
    +	return err
    +}
    +
    +// Performs type-specific validation for CommentTags porameters. Accepts a Type instance and returns any errors encountered during validation.
    +func (c commentTags) ValidateType(t *types.Type) error {
    +	var err error
    +
    +	resolvedType := resolveAliasAndPtrType(t)
    +	typeString, _ := openapi.OpenAPITypeFormat(resolvedType.String()) // will be empty for complicated types
    +
    +	// Structs and interfaces may dynamically be any type, so we cant validate them
    +	// easily.
    +	if resolvedType.Kind == types.Interface || resolvedType.Kind == types.Struct {
    +		// Skip validation for structs and interfaces which implement custom
    +		// overrides
    +		//
    +		// Only check top-level t type without resolving alias to mirror generator
    +		// behavior. Generator only checks the top level type without resolving
    +		// alias. The `has*Method` functions can be changed to add this behavior in the
    +		// future if needed.
    +		elemT := resolvePtrType(t)
    +		if hasOpenAPIDefinitionMethod(elemT) ||
    +			hasOpenAPIDefinitionMethods(elemT) ||
    +			hasOpenAPIV3DefinitionMethod(elemT) ||
    +			hasOpenAPIV3OneOfMethod(elemT) {
    +
    +			return nil
    +		}
    +	}
    +
    +	isArray := resolvedType.Kind == types.Slice || resolvedType.Kind == types.Array
    +	isMap := resolvedType.Kind == types.Map
    +	isString := typeString == "string"
    +	isInt := typeString == "integer"
    +	isFloat := typeString == "number"
    +	isStruct := resolvedType.Kind == types.Struct
    +
    +	if c.MaxItems != nil && !isArray {
    +		err = errors.Join(err, fmt.Errorf("maxItems can only be used on array types"))
    +	}
    +	if c.MinItems != nil && !isArray {
    +		err = errors.Join(err, fmt.Errorf("minItems can only be used on array types"))
    +	}
    +	if c.UniqueItems != nil && !isArray {
    +		err = errors.Join(err, fmt.Errorf("uniqueItems can only be used on array types"))
    +	}
    +	if c.MaxProperties != nil && !(isMap || isStruct) {
    +		err = errors.Join(err, fmt.Errorf("maxProperties can only be used on map types"))
    +	}
    +	if c.MinProperties != nil && !(isMap || isStruct) {
    +		err = errors.Join(err, fmt.Errorf("minProperties can only be used on map types"))
    +	}
    +	if c.MinLength != nil && !isString {
    +		err = errors.Join(err, fmt.Errorf("minLength can only be used on string types"))
    +	}
    +	if c.MaxLength != nil && !isString {
    +		err = errors.Join(err, fmt.Errorf("maxLength can only be used on string types"))
    +	}
    +	if c.Pattern != nil && !isString {
    +		err = errors.Join(err, fmt.Errorf("pattern can only be used on string types"))
    +	}
    +	if c.Minimum != nil && !isInt && !isFloat {
    +		err = errors.Join(err, fmt.Errorf("minimum can only be used on numeric types"))
    +	}
    +	if c.Maximum != nil && !isInt && !isFloat {
    +		err = errors.Join(err, fmt.Errorf("maximum can only be used on numeric types"))
    +	}
    +	if c.MultipleOf != nil && !isInt && !isFloat {
    +		err = errors.Join(err, fmt.Errorf("multipleOf can only be used on numeric types"))
    +	}
    +	if c.ExclusiveMinimum != nil && !isInt && !isFloat {
    +		err = errors.Join(err, fmt.Errorf("exclusiveMinimum can only be used on numeric types"))
    +	}
    +	if c.ExclusiveMaximum != nil && !isInt && !isFloat {
    +		err = errors.Join(err, fmt.Errorf("exclusiveMaximum can only be used on numeric types"))
    +	}
    +	if c.AdditionalProperties != nil && !isMap {
    +		err = errors.Join(err, fmt.Errorf("additionalProperties can only be used on map types"))
    +
    +		if err == nil {
    +			err = errors.Join(err, c.AdditionalProperties.ValidateType(t))
    +		}
    +	}
    +	if c.Items != nil && !isArray {
    +		err = errors.Join(err, fmt.Errorf("items can only be used on array types"))
    +
    +		if err == nil {
    +			err = errors.Join(err, c.Items.ValidateType(t))
    +		}
    +	}
    +	if c.Properties != nil {
    +		if !isStruct && !isMap {
    +			err = errors.Join(err, fmt.Errorf("properties can only be used on struct types"))
    +		} else if isStruct && err == nil {
    +			for key, tags := range c.Properties {
    +				if member := memberWithJSONName(resolvedType, key); member == nil {
    +					err = errors.Join(err, fmt.Errorf("property used in comment tag %q not found in struct %s", key, resolvedType.String()))
    +				} else if nestedErr := tags.ValidateType(member.Type); nestedErr != nil {
    +					err = errors.Join(err, fmt.Errorf("failed to validate property %q: %w", key, nestedErr))
    +				}
    +			}
    +		}
    +	}
    +
    +	return err
    +}
    +
    +func memberWithJSONName(t *types.Type, key string) *types.Member {
    +	for _, member := range t.Members {
    +		tags := getJsonTags(&member)
    +		if len(tags) > 0 && tags[0] == key {
    +			return &member
    +		} else if member.Embedded {
    +			if embeddedMember := memberWithJSONName(member.Type, key); embeddedMember != nil {
    +				return embeddedMember
    +			}
    +		}
    +	}
    +	return nil
    +}
    +
    +// ParseCommentTags parses the given comments into a CommentTags type. Validates the parsed comment tags, and returns the result.
    +// Accepts an optional type to validate against, and a prefix to filter out markers not related to validation.
    +// Accepts a prefix to filter out markers not related to validation.
    +// Returns any errors encountered while parsing or validating the comment tags.
    +func ParseCommentTags(t *types.Type, comments []string, prefix string) (*spec.Schema, error) {
    +	markers, err := parseMarkers(comments, prefix)
    +	if err != nil {
    +		return nil, fmt.Errorf("failed to parse marker comments: %w", err)
    +	}
    +	nested, err := nestMarkers(markers)
    +	if err != nil {
    +		return nil, fmt.Errorf("invalid marker comments: %w", err)
    +	}
    +
    +	// Parse the map into a CommentTags type by marshalling and unmarshalling
    +	// as JSON in leiu of an unstructured converter.
    +	out, err := json.Marshal(nested)
    +	if err != nil {
    +		return nil, fmt.Errorf("failed to marshal marker comments: %w", err)
    +	}
    +
    +	var commentTags commentTags
    +	if err = json.Unmarshal(out, &commentTags); err != nil {
    +		return nil, fmt.Errorf("failed to unmarshal marker comments: %w", err)
    +	}
    +
    +	// Validate the parsed comment tags
    +	validationErrors := commentTags.Validate()
    +
    +	if t != nil {
    +		validationErrors = errors.Join(validationErrors, commentTags.ValidateType(t))
    +	}
    +
    +	if validationErrors != nil {
    +		return nil, fmt.Errorf("invalid marker comments: %w", validationErrors)
    +	}
    +
    +	return commentTags.ValidationSchema()
    +}
    +
    +var (
    +	allowedKeyCharacterSet = `[:_a-zA-Z0-9\[\]\-]`
    +	valueEmpty             = regexp.MustCompile(fmt.Sprintf(`^(%s*)$`, allowedKeyCharacterSet))
    +	valueAssign            = regexp.MustCompile(fmt.Sprintf(`^(%s*)=(.*)$`, allowedKeyCharacterSet))
    +	valueRawString         = regexp.MustCompile(fmt.Sprintf(`^(%s*)>(.*)$`, allowedKeyCharacterSet))
    +)
    +
    +// extractCommentTags parses comments for lines of the form:
    +//
    +//	'marker' + "key=value"
    +//
    +//	or to specify truthy boolean keys:
    +//
    +//	'marker' + "key"
    +//
    +// Values are optional; "" is the default.  A tag can be specified more than
    +// one time and all values are returned.  Returns a map with an entry for
    +// for each key and a value.
    +//
    +// Similar to version from gengo, but this version support only allows one
    +// value per key (preferring explicit array indices), supports raw strings
    +// with concatenation, and limits the usable characters allowed in a key
    +// (for simpler parsing).
    +//
    +// Assignments and empty values have the same syntax as from gengo. Raw strings
    +// have the syntax:
    +//
    +//	'marker' + "key>value"
    +//	'marker' + "key>value"
    +//
    +// Successive usages of the same raw string key results in concatenating each
    +// line with `\n` in between. It is an error to use `=` to assing to a previously
    +// assigned key
    +// (in contrast to types.ExtractCommentTags which allows array-typed
    +// values to be specified using `=`).
    +func extractCommentTags(marker string, lines []string) (map[string]string, error) {
    +	out := map[string]string{}
    +
    +	// Used to track the the line immediately prior to the one being iterated.
    +	// If there was an invalid or ignored line, these values get reset.
    +	lastKey := ""
    +	lastIndex := -1
    +	lastArrayKey := ""
    +
    +	var lintErrors []error
    +
    +	for _, line := range lines {
    +		line = strings.Trim(line, " ")
    +
    +		// Track the current value of the last vars to use in this loop iteration
    +		// before they are reset for the next iteration.
    +		previousKey := lastKey
    +		previousArrayKey := lastArrayKey
    +		previousIndex := lastIndex
    +
    +		// Make sure last vars gets reset if we `continue`
    +		lastIndex = -1
    +		lastArrayKey = ""
    +		lastKey = ""
    +
    +		if len(line) == 0 {
    +			continue
    +		} else if !strings.HasPrefix(line, marker) {
    +			continue
    +		}
    +
    +		line = strings.TrimPrefix(line, marker)
    +
    +		key := ""
    +		value := ""
    +
    +		if matches := valueAssign.FindStringSubmatch(line); matches != nil {
    +			key = matches[1]
    +			value = matches[2]
    +
    +			// If key exists, throw error.
    +			// Some of the old kube open-api gen marker comments like
    +			// `+listMapKeys` allowed a list to be specified by writing key=value
    +			// multiple times.
    +			//
    +			// This is not longer supported for the prefixed marker comments.
    +			// This is to prevent confusion with the new array syntax which
    +			// supports lists of objects.
    +			//
    +			// The old marker comments like +listMapKeys will remain functional,
    +			// but new markers will not support it.
    +			if _, ok := out[key]; ok {
    +				return nil, fmt.Errorf("cannot have multiple values for key '%v'", key)
    +			}
    +
    +		} else if matches := valueEmpty.FindStringSubmatch(line); matches != nil {
    +			key = matches[1]
    +			value = ""
    +
    +		} else if matches := valueRawString.FindStringSubmatch(line); matches != nil {
    +			toAdd := strings.Trim(string(matches[2]), " ")
    +
    +			key = matches[1]
    +
    +			// First usage as a raw string.
    +			if existing, exists := out[key]; !exists {
    +
    +				// Encode the raw string as JSON to ensure that it is properly escaped.
    +				valueBytes, err := json.Marshal(toAdd)
    +				if err != nil {
    +					return nil, fmt.Errorf("invalid value for key %v: %w", key, err)
    +				}
    +
    +				value = string(valueBytes)
    +			} else if key != previousKey {
    +				// Successive usages of the same key of a raw string must be
    +				// consecutive
    +				return nil, fmt.Errorf("concatenations to key '%s' must be consecutive with its assignment", key)
    +			} else {
    +				// If it is a consecutive repeat usage, concatenate to the
    +				// existing value.
    +				//
    +				// Decode JSON string, append to it, re-encode JSON string.
    +				// Kinda janky but this is a code-generator...
    +				var unmarshalled string
    +				if err := json.Unmarshal([]byte(existing), &unmarshalled); err != nil {
    +					return nil, fmt.Errorf("invalid value for key %v: %w", key, err)
    +				} else {
    +					unmarshalled += "\n" + toAdd
    +					valueBytes, err := json.Marshal(unmarshalled)
    +					if err != nil {
    +						return nil, fmt.Errorf("invalid value for key %v: %w", key, err)
    +					}
    +
    +					value = string(valueBytes)
    +				}
    +			}
    +		} else {
    +			// Comment has the correct prefix, but incorrect syntax, so it is an
    +			// error
    +			return nil, fmt.Errorf("invalid marker comment does not match expected `+key=` pattern: %v", line)
    +		}
    +
    +		out[key] = value
    +		lastKey = key
    +
    +		// Lint the array subscript for common mistakes. This only lints the last
    +		// array index used, (since we do not have a need for nested arrays yet
    +		// in markers)
    +		if arrayPath, index, hasSubscript, err := extractArraySubscript(key); hasSubscript {
    +			// If index is non-zero, check that that previous line was for the same
    +			// key and either the same or previous index
    +			if err != nil {
    +				lintErrors = append(lintErrors, fmt.Errorf("error parsing %v: expected integer index in key '%v'", line, key))
    +			} else if previousArrayKey != arrayPath && index != 0 {
    +				lintErrors = append(lintErrors, fmt.Errorf("error parsing %v: non-consecutive index %v for key '%v'", line, index, arrayPath))
    +			} else if index != previousIndex+1 && index != previousIndex {
    +				lintErrors = append(lintErrors, fmt.Errorf("error parsing %v: non-consecutive index %v for key '%v'", line, index, arrayPath))
    +			}
    +
    +			lastIndex = index
    +			lastArrayKey = arrayPath
    +		}
    +	}
    +
    +	if len(lintErrors) > 0 {
    +		return nil, errors.Join(lintErrors...)
    +	}
    +
    +	return out, nil
    +}
    +
    +// Extracts and parses the given marker comments into a map of key -> value.
    +// Accepts a prefix to filter out markers not related to validation.
    +// The prefix is removed from the key in the returned map.
    +// Empty keys and invalid values will return errors, refs are currently unsupported and will be skipped.
    +func parseMarkers(markerComments []string, prefix string) (map[string]any, error) {
    +	markers, err := extractCommentTags(prefix, markerComments)
    +	if err != nil {
    +		return nil, err
    +	}
    +
    +	// Parse the values as JSON
    +	result := map[string]any{}
    +	for key, value := range markers {
    +		var unmarshalled interface{}
    +
    +		if len(key) == 0 {
    +			return nil, fmt.Errorf("cannot have empty key for marker comment")
    +		} else if !isKnownTagCommentKey(key) {
    +			continue
    +		} else if _, ok := parseSymbolReference(value, ""); ok {
    +			// Skip ref markers
    +			continue
    +		} else if len(value) == 0 {
    +			// Empty value means key is implicitly a bool
    +			result[key] = true
    +		} else if err := json.Unmarshal([]byte(value), &unmarshalled); err != nil {
    +			// Not valid JSON, throw error
    +			return nil, fmt.Errorf("failed to parse value for key %v as JSON: %w", key, err)
    +		} else {
    +			// Is is valid JSON, use as a JSON value
    +			result[key] = unmarshalled
    +		}
    +	}
    +	return result, nil
    +}
    +
    +// Converts a map of:
    +//
    +//	"a:b:c": 1
    +//	"a:b:d": 2
    +//	"a:e": 3
    +//	"f": 4
    +//
    +// Into:
    +//
    +//	 map[string]any{
    +//	   "a": map[string]any{
    +//		      "b": map[string]any{
    +//		          "c": 1,
    +//				  "d": 2,
    +//			   },
    +//			   "e": 3,
    +//		  },
    +//		  "f": 4,
    +//	 }
    +//
    +// Returns a list of joined errors for any invalid keys. See putNestedValue for more details.
    +func nestMarkers(markers map[string]any) (map[string]any, error) {
    +	nested := make(map[string]any)
    +	var errs []error
    +	for key, value := range markers {
    +		var err error
    +		keys := strings.Split(key, ":")
    +
    +		if err = putNestedValue(nested, keys, value); err != nil {
    +			errs = append(errs, err)
    +		}
    +	}
    +
    +	if len(errs) > 0 {
    +		return nil, errors.Join(errs...)
    +	}
    +
    +	return nested, nil
    +}
    +
    +// Recursively puts a value into the given keypath, creating intermediate maps
    +// and slices as needed. If a key is of the form `foo[bar]`, then bar will be
    +// treated as an index into the array foo. If bar is not a valid integer, putNestedValue returns an error.
    +func putNestedValue(m map[string]any, k []string, v any) error {
    +	if len(k) == 0 {
    +		return nil
    +	}
    +
    +	key := k[0]
    +	rest := k[1:]
    +
    +	// Array case
    +	if arrayKeyWithoutSubscript, index, hasSubscript, err := extractArraySubscript(key); err != nil {
    +		return fmt.Errorf("error parsing subscript for key %v: %w", key, err)
    +	} else if hasSubscript {
    +		key = arrayKeyWithoutSubscript
    +		var arrayDestination []any
    +		if existing, ok := m[key]; !ok {
    +			arrayDestination = make([]any, index+1)
    +		} else if existing, ok := existing.([]any); !ok {
    +			// Error case. Existing isn't of correct type. Can happen if
    +			// someone is subscripting a field that was previously not an array
    +			return fmt.Errorf("expected []any at key %v, got %T", key, existing)
    +		} else if index >= len(existing) {
    +			// Ensure array is big enough
    +			arrayDestination = append(existing, make([]any, index-len(existing)+1)...)
    +		} else {
    +			arrayDestination = existing
    +		}
    +
    +		m[key] = arrayDestination
    +		if arrayDestination[index] == nil {
    +			// Doesn't exist case, create the destination.
    +			// Assumes the destination is a map for now. Theoretically could be
    +			// extended to support arrays of arrays, but that's not needed yet.
    +			destination := make(map[string]any)
    +			arrayDestination[index] = destination
    +			if err = putNestedValue(destination, rest, v); err != nil {
    +				return err
    +			}
    +		} else if dst, ok := arrayDestination[index].(map[string]any); ok {
    +			// Already exists case, correct type
    +			if putNestedValue(dst, rest, v); err != nil {
    +				return err
    +			}
    +		} else {
    +			// Already exists, incorrect type. Error
    +			// This shouldn't be possible.
    +			return fmt.Errorf("expected map at %v[%v], got %T", key, index, arrayDestination[index])
    +		}
    +
    +		return nil
    +	} else if len(rest) == 0 {
    +		// Base case. Single key. Just set into destination
    +		m[key] = v
    +		return nil
    +	}
    +
    +	if existing, ok := m[key]; !ok {
    +		destination := make(map[string]any)
    +		m[key] = destination
    +		return putNestedValue(destination, rest, v)
    +	} else if destination, ok := existing.(map[string]any); ok {
    +		return putNestedValue(destination, rest, v)
    +	} else {
    +		// Error case. Existing isn't of correct type. Can happen if prior comment
    +		// referred to value as an error
    +		return fmt.Errorf("expected map[string]any at key %v, got %T", key, existing)
    +	}
    +}
    +
    +// extractArraySubscript extracts the left array subscript from a key of
    +// the form  `foo[bar][baz]` -> "bar".
    +// Returns the key without the subscript, the index, and a bool indicating if
    +// the key had a subscript.
    +// If the key has a subscript, but the subscript is not a valid integer, returns an error.
    +//
    +// This can be adapted to support multidimensional subscripts probably fairly
    +// easily by retuning a list of ints
    +func extractArraySubscript(str string) (string, int, bool, error) {
    +	subscriptIdx := strings.Index(str, "[")
    +	if subscriptIdx == -1 {
    +		return "", -1, false, nil
    +	}
    +
    +	subscript := strings.Split(str[subscriptIdx+1:], "]")[0]
    +	if len(subscript) == 0 {
    +		return "", -1, false, fmt.Errorf("empty subscript not allowed")
    +	}
    +
    +	index, err := strconv.Atoi(subscript)
    +	if err != nil {
    +		return "", -1, false, fmt.Errorf("expected integer index in key %v", str)
    +	} else if index < 0 {
    +		return "", -1, false, fmt.Errorf("subscript '%v' is invalid. index must be positive", subscript)
    +	}
    +
    +	return str[:subscriptIdx], index, true, nil
    +}
    diff --git a/vendor/k8s.io/kube-openapi/pkg/generators/openapi.go b/vendor/k8s.io/kube-openapi/pkg/generators/openapi.go
    index a4bbe8b5e115..c5c009381836 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/generators/openapi.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/generators/openapi.go
    @@ -21,23 +21,27 @@ import (
     	"encoding/json"
     	"fmt"
     	"io"
    -	"path/filepath"
    +	"path"
     	"reflect"
    +	"regexp"
     	"sort"
     	"strings"
     
    -	defaultergen "k8s.io/gengo/examples/defaulter-gen/generators"
    -	"k8s.io/gengo/generator"
    -	"k8s.io/gengo/namer"
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/generator"
    +	"k8s.io/gengo/v2/namer"
    +	"k8s.io/gengo/v2/types"
     	openapi "k8s.io/kube-openapi/pkg/common"
    +	"k8s.io/kube-openapi/pkg/validation/spec"
     
     	"k8s.io/klog/v2"
     )
     
     // This is the comment tag that carries parameters for open API generation.
     const tagName = "k8s:openapi-gen"
    +const markerPrefix = "+k8s:validation:"
     const tagOptional = "optional"
    +const tagRequired = "required"
     const tagDefault = "default"
     
     // Known values for the tag.
    @@ -54,11 +58,11 @@ var tempPatchTags = [...]string{
     }
     
     func getOpenAPITagValue(comments []string) []string {
    -	return types.ExtractCommentTags("+", comments)[tagName]
    +	return gengo.ExtractCommentTags("+", comments)[tagName]
     }
     
     func getSingleTagsValue(comments []string, tag string) (string, error) {
    -	tags, ok := types.ExtractCommentTags("+", comments)[tag]
    +	tags, ok := gengo.ExtractCommentTags("+", comments)[tag]
     	if !ok || len(tags) == 0 {
     		return "", nil
     	}
    @@ -78,14 +82,25 @@ func hasOpenAPITagValue(comments []string, value string) bool {
     	return false
     }
     
    -// hasOptionalTag returns true if the member has +optional in its comments or
    -// omitempty in its json tags.
    -func hasOptionalTag(m *types.Member) bool {
    -	hasOptionalCommentTag := types.ExtractCommentTags(
    +// isOptional returns error if the member has +optional and +required in
    +// its comments. If +optional is present it returns true. If +required is present
    +// it returns false. Otherwise, it returns true if `omitempty` JSON tag is present
    +func isOptional(m *types.Member) (bool, error) {
    +	hasOptionalCommentTag := gengo.ExtractCommentTags(
     		"+", m.CommentLines)[tagOptional] != nil
    -	hasOptionalJsonTag := strings.Contains(
    -		reflect.StructTag(m.Tags).Get("json"), "omitempty")
    -	return hasOptionalCommentTag || hasOptionalJsonTag
    +	hasRequiredCommentTag := gengo.ExtractCommentTags(
    +		"+", m.CommentLines)[tagRequired] != nil
    +	if hasOptionalCommentTag && hasRequiredCommentTag {
    +		return false, fmt.Errorf("member %s cannot be both optional and required", m.Name)
    +	} else if hasRequiredCommentTag {
    +		return false, nil
    +	} else if hasOptionalCommentTag {
    +		return true, nil
    +	}
    +
    +	// If neither +optional nor +required is present in the comments,
    +	// infer optional from the json tags.
    +	return strings.Contains(reflect.StructTag(m.Tags).Get("json"), "omitempty"), nil
     }
     
     func apiTypeFilterFunc(c *generator.Context, t *types.Type) bool {
    @@ -110,16 +125,16 @@ const (
     
     // openApiGen produces a file with auto-generated OpenAPI functions.
     type openAPIGen struct {
    -	generator.DefaultGen
    +	generator.GoGenerator
     	// TargetPackage is the package that will get GetOpenAPIDefinitions function returns all open API definitions.
     	targetPackage string
     	imports       namer.ImportTracker
     }
     
    -func newOpenAPIGen(sanitizedName string, targetPackage string) generator.Generator {
    +func newOpenAPIGen(outputFilename string, targetPackage string) generator.Generator {
     	return &openAPIGen{
    -		DefaultGen: generator.DefaultGen{
    -			OptionalName: sanitizedName,
    +		GoGenerator: generator.GoGenerator{
    +			OutputFilename: outputFilename,
     		},
     		imports:       generator.NewImportTrackerForPackage(targetPackage),
     		targetPackage: targetPackage,
    @@ -141,16 +156,6 @@ func (g *openAPIGen) Namers(c *generator.Context) namer.NameSystems {
     	}
     }
     
    -func (g *openAPIGen) isOtherPackage(pkg string) bool {
    -	if pkg == g.targetPackage {
    -		return false
    -	}
    -	if strings.HasSuffix(pkg, "\""+g.targetPackage+"\"") {
    -		return false
    -	}
    -	return true
    -}
    -
     func (g *openAPIGen) Imports(c *generator.Context) []string {
     	importLines := []string{}
     	for _, singleImport := range g.imports.ImportLines() {
    @@ -244,7 +249,7 @@ func methodReturnsValue(mt *types.Type, pkg, name string) bool {
     		return false
     	}
     	r := mt.Signature.Results[0]
    -	return r.Name.Name == name && r.Name.Package == pkg
    +	return r.Type.Name.Name == name && r.Type.Name.Package == pkg
     }
     
     func hasOpenAPIV3DefinitionMethod(t *types.Type) bool {
    @@ -292,7 +297,8 @@ func hasOpenAPIV3OneOfMethod(t *types.Type) bool {
     
     // typeShortName returns short package name (e.g. the name x appears in package x definition) dot type name.
     func typeShortName(t *types.Type) string {
    -	return filepath.Base(t.Name.Package) + "." + t.Name.Name
    +	// `path` vs. `filepath` because packages use '/'
    +	return path.Base(t.Name.Package) + "." + t.Name.Name
     }
     
     func (g openAPITypeWriter) generateMembers(t *types.Type, required []string) ([]string, error) {
    @@ -315,7 +321,10 @@ func (g openAPITypeWriter) generateMembers(t *types.Type, required []string) ([]
     		if name == "" {
     			continue
     		}
    -		if !hasOptionalTag(&m) {
    +		if isOptional, err := isOptional(&m); err != nil {
    +			klog.Errorf("Error when generating: %v, %v\n", name, m)
    +			return required, err
    +		} else if !isOptional {
     			required = append(required, name)
     		}
     		if err = g.generateProperty(&m, t); err != nil {
    @@ -353,10 +362,170 @@ func (g openAPITypeWriter) generateCall(t *types.Type) error {
     	return g.Error()
     }
     
    +// Generates Go code to represent an OpenAPI schema. May be refactored in
    +// the future to take more responsibility as we transition from an on-line
    +// approach to parsing the comments to spec.Schema
    +func (g openAPITypeWriter) generateSchema(s *spec.Schema) error {
    +	if !reflect.DeepEqual(s.SchemaProps, spec.SchemaProps{}) {
    +		g.Do("SchemaProps: spec.SchemaProps{\n", nil)
    +		err := g.generateValueValidations(&s.SchemaProps)
    +		if err != nil {
    +			return err
    +		}
    +
    +		if len(s.Properties) > 0 {
    +			g.Do("Properties: map[string]spec.Schema{\n", nil)
    +
    +			// Sort property names to generate deterministic output
    +			keys := []string{}
    +			for k := range s.Properties {
    +				keys = append(keys, k)
    +			}
    +			sort.Strings(keys)
    +
    +			for _, k := range keys {
    +				v := s.Properties[k]
    +				g.Do("$.$: {\n", fmt.Sprintf("%#v", k))
    +				err := g.generateSchema(&v)
    +				if err != nil {
    +					return err
    +				}
    +				g.Do("},\n", nil)
    +			}
    +			g.Do("},\n", nil)
    +		}
    +
    +		if s.AdditionalProperties != nil && s.AdditionalProperties.Schema != nil {
    +			g.Do("AdditionalProperties: &spec.SchemaOrBool{\n", nil)
    +			g.Do("Allows: true,\n", nil)
    +			g.Do("Schema: &spec.Schema{\n", nil)
    +			err := g.generateSchema(s.AdditionalProperties.Schema)
    +			if err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +			g.Do("},\n", nil)
    +		}
    +
    +		if s.Items != nil && s.Items.Schema != nil {
    +			g.Do("Items: &spec.SchemaOrArray{\n", nil)
    +			g.Do("Schema: &spec.Schema{\n", nil)
    +			err := g.generateSchema(s.Items.Schema)
    +			if err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +			g.Do("},\n", nil)
    +		}
    +
    +		g.Do("},\n", nil)
    +	}
    +
    +	if len(s.Extensions) > 0 {
    +		g.Do("VendorExtensible: spec.VendorExtensible{\nExtensions: spec.Extensions{\n", nil)
    +
    +		// Sort extension keys to generate deterministic output
    +		keys := []string{}
    +		for k := range s.Extensions {
    +			keys = append(keys, k)
    +		}
    +		sort.Strings(keys)
    +
    +		for _, k := range keys {
    +			v := s.Extensions[k]
    +			g.Do("$.key$: $.value$,\n", map[string]interface{}{
    +				"key":   fmt.Sprintf("%#v", k),
    +				"value": fmt.Sprintf("%#v", v),
    +			})
    +		}
    +		g.Do("},\n},\n", nil)
    +	}
    +
    +	return nil
    +}
    +
    +func (g openAPITypeWriter) generateValueValidations(vs *spec.SchemaProps) error {
    +
    +	if vs == nil {
    +		return nil
    +	}
    +	args := generator.Args{
    +		"ptrTo": &types.Type{
    +			Name: types.Name{
    +				Package: "k8s.io/utils/ptr",
    +				Name:    "To",
    +			}},
    +		"spec": vs,
    +	}
    +	if vs.Minimum != nil {
    +		g.Do("Minimum: $.ptrTo|raw$[float64]($.spec.Minimum$),\n", args)
    +	}
    +	if vs.Maximum != nil {
    +		g.Do("Maximum: $.ptrTo|raw$[float64]($.spec.Maximum$),\n", args)
    +	}
    +	if vs.ExclusiveMinimum {
    +		g.Do("ExclusiveMinimum: true,\n", args)
    +	}
    +	if vs.ExclusiveMaximum {
    +		g.Do("ExclusiveMaximum: true,\n", args)
    +	}
    +	if vs.MinLength != nil {
    +		g.Do("MinLength: $.ptrTo|raw$[int64]($.spec.MinLength$),\n", args)
    +	}
    +	if vs.MaxLength != nil {
    +		g.Do("MaxLength: $.ptrTo|raw$[int64]($.spec.MaxLength$),\n", args)
    +	}
    +
    +	if vs.MinProperties != nil {
    +		g.Do("MinProperties: $.ptrTo|raw$[int64]($.spec.MinProperties$),\n", args)
    +	}
    +	if vs.MaxProperties != nil {
    +		g.Do("MaxProperties: $.ptrTo|raw$[int64]($.spec.MaxProperties$),\n", args)
    +	}
    +	if len(vs.Pattern) > 0 {
    +		p, err := json.Marshal(vs.Pattern)
    +		if err != nil {
    +			return err
    +		}
    +		g.Do("Pattern: $.$,\n", string(p))
    +	}
    +	if vs.MultipleOf != nil {
    +		g.Do("MultipleOf: $.ptrTo|raw$[float64]($.spec.MultipleOf$),\n", args)
    +	}
    +	if vs.MinItems != nil {
    +		g.Do("MinItems: $.ptrTo|raw$[int64]($.spec.MinItems$),\n", args)
    +	}
    +	if vs.MaxItems != nil {
    +		g.Do("MaxItems: $.ptrTo|raw$[int64]($.spec.MaxItems$),\n", args)
    +	}
    +	if vs.UniqueItems {
    +		g.Do("UniqueItems: true,\n", nil)
    +	}
    +
    +	if len(vs.AllOf) > 0 {
    +		g.Do("AllOf: []spec.Schema{\n", nil)
    +		for _, s := range vs.AllOf {
    +			g.Do("{\n", nil)
    +			if err := g.generateSchema(&s); err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +		}
    +		g.Do("},\n", nil)
    +	}
    +
    +	return nil
    +}
    +
     func (g openAPITypeWriter) generate(t *types.Type) error {
     	// Only generate for struct type and ignore the rest
     	switch t.Kind {
     	case types.Struct:
    +		validationSchema, err := ParseCommentTags(t, t.CommentLines, markerPrefix)
    +		if err != nil {
    +			return fmt.Errorf("failed parsing comment tags for %v: %w", t.String(), err)
    +		}
    +
     		hasV2Definition := hasOpenAPIDefinitionMethod(t)
     		hasV2DefinitionTypeAndFormat := hasOpenAPIDefinitionMethods(t)
     		hasV3OneOfTypes := hasOpenAPIV3OneOfMethod(t)
    @@ -376,10 +545,17 @@ func (g openAPITypeWriter) generate(t *types.Type) error {
     				"SchemaProps: spec.SchemaProps{\n", args)
     			g.generateDescription(t.CommentLines)
     			g.Do("Type:$.type|raw${}.OpenAPISchemaType(),\n"+
    -				"Format:$.type|raw${}.OpenAPISchemaFormat(),\n"+
    -				"},\n"+
    -				"},\n"+
    -				"})\n}\n\n", args)
    +				"Format:$.type|raw${}.OpenAPISchemaFormat(),\n", args)
    +			err = g.generateValueValidations(&validationSchema.SchemaProps)
    +			if err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +			if err := g.generateStructExtensions(t, validationSchema.Extensions); err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +			g.Do("})\n}\n\n", args)
     			return nil
     		case hasV2DefinitionTypeAndFormat && hasV3OneOfTypes:
     			// generate v3 def.
    @@ -388,20 +564,34 @@ func (g openAPITypeWriter) generate(t *types.Type) error {
     				"SchemaProps: spec.SchemaProps{\n", args)
     			g.generateDescription(t.CommentLines)
     			g.Do("OneOf:common.GenerateOpenAPIV3OneOfSchema($.type|raw${}.OpenAPIV3OneOfTypes()),\n"+
    -				"Format:$.type|raw${}.OpenAPISchemaFormat(),\n"+
    -				"},\n"+
    -				"},\n"+
    -				"},", args)
    +				"Format:$.type|raw${}.OpenAPISchemaFormat(),\n", args)
    +			err = g.generateValueValidations(&validationSchema.SchemaProps)
    +			if err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +			if err := g.generateStructExtensions(t, validationSchema.Extensions); err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +			g.Do("},", args)
     			// generate v2 def.
     			g.Do("$.OpenAPIDefinition|raw${\n"+
     				"Schema: spec.Schema{\n"+
     				"SchemaProps: spec.SchemaProps{\n", args)
     			g.generateDescription(t.CommentLines)
     			g.Do("Type:$.type|raw${}.OpenAPISchemaType(),\n"+
    -				"Format:$.type|raw${}.OpenAPISchemaFormat(),\n"+
    -				"},\n"+
    -				"},\n"+
    -				"})\n}\n\n", args)
    +				"Format:$.type|raw${}.OpenAPISchemaFormat(),\n", args)
    +			err = g.generateValueValidations(&validationSchema.SchemaProps)
    +			if err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +			if err := g.generateStructExtensions(t, validationSchema.Extensions); err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +			g.Do("})\n}\n\n", args)
     			return nil
     		case hasV2DefinitionTypeAndFormat:
     			g.Do("return $.OpenAPIDefinition|raw${\n"+
    @@ -409,18 +599,30 @@ func (g openAPITypeWriter) generate(t *types.Type) error {
     				"SchemaProps: spec.SchemaProps{\n", args)
     			g.generateDescription(t.CommentLines)
     			g.Do("Type:$.type|raw${}.OpenAPISchemaType(),\n"+
    -				"Format:$.type|raw${}.OpenAPISchemaFormat(),\n"+
    -				"},\n"+
    -				"},\n"+
    -				"}\n}\n\n", args)
    +				"Format:$.type|raw${}.OpenAPISchemaFormat(),\n", args)
    +			err = g.generateValueValidations(&validationSchema.SchemaProps)
    +			if err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +			if err := g.generateStructExtensions(t, validationSchema.Extensions); err != nil {
    +				return err
    +			}
    +			g.Do("},\n", nil)
    +			g.Do("}\n}\n\n", args)
     			return nil
     		case hasV3OneOfTypes:
     			// having v3 oneOf types without custom v2 type or format does not make sense.
     			return fmt.Errorf("type %q has v3 one of types but not v2 type or format", t.Name)
     		}
    +
     		g.Do("return $.OpenAPIDefinition|raw${\nSchema: spec.Schema{\nSchemaProps: spec.SchemaProps{\n", args)
     		g.generateDescription(t.CommentLines)
     		g.Do("Type: []string{\"object\"},\n", nil)
    +		err = g.generateValueValidations(&validationSchema.SchemaProps)
    +		if err != nil {
    +			return err
    +		}
     
     		// write members into a temporary buffer, in order to postpone writing out the Properties field. We only do
     		// that if it is not empty.
    @@ -441,7 +643,7 @@ func (g openAPITypeWriter) generate(t *types.Type) error {
     			g.Do("Required: []string{\"$.$\"},\n", strings.Join(required, "\",\""))
     		}
     		g.Do("},\n", nil)
    -		if err := g.generateStructExtensions(t); err != nil {
    +		if err := g.generateStructExtensions(t, validationSchema.Extensions); err != nil {
     			return err
     		}
     		g.Do("},\n", nil)
    @@ -474,7 +676,7 @@ func (g openAPITypeWriter) generate(t *types.Type) error {
     	return nil
     }
     
    -func (g openAPITypeWriter) generateStructExtensions(t *types.Type) error {
    +func (g openAPITypeWriter) generateStructExtensions(t *types.Type, otherExtensions map[string]interface{}) error {
     	extensions, errors := parseExtensions(t.CommentLines)
     	// Initially, we will only log struct extension errors.
     	if len(errors) > 0 {
    @@ -490,11 +692,11 @@ func (g openAPITypeWriter) generateStructExtensions(t *types.Type) error {
     	}
     
     	// TODO(seans3): Validate struct extensions here.
    -	g.emitExtensions(extensions, unions)
    +	g.emitExtensions(extensions, unions, otherExtensions)
     	return nil
     }
     
    -func (g openAPITypeWriter) generateMemberExtensions(m *types.Member, parent *types.Type) error {
    +func (g openAPITypeWriter) generateMemberExtensions(m *types.Member, parent *types.Type, otherExtensions map[string]interface{}) error {
     	extensions, parseErrors := parseExtensions(m.CommentLines)
     	validationErrors := validateMemberExtensions(extensions, m)
     	errors := append(parseErrors, validationErrors...)
    @@ -505,13 +707,13 @@ func (g openAPITypeWriter) generateMemberExtensions(m *types.Member, parent *typ
     			klog.V(2).Infof("%s %s\n", errorPrefix, e)
     		}
     	}
    -	g.emitExtensions(extensions, nil)
    +	g.emitExtensions(extensions, nil, otherExtensions)
     	return nil
     }
     
    -func (g openAPITypeWriter) emitExtensions(extensions []extension, unions []union) {
    +func (g openAPITypeWriter) emitExtensions(extensions []extension, unions []union, otherExtensions map[string]interface{}) {
     	// If any extensions exist, then emit code to create them.
    -	if len(extensions) == 0 && len(unions) == 0 {
    +	if len(extensions) == 0 && len(unions) == 0 && len(otherExtensions) == 0 {
     		return
     	}
     	g.Do("VendorExtensible: spec.VendorExtensible{\nExtensions: spec.Extensions{\n", nil)
    @@ -534,6 +736,24 @@ func (g openAPITypeWriter) emitExtensions(extensions []extension, unions []union
     		}
     		g.Do("},\n", nil)
     	}
    +
    +	if len(otherExtensions) > 0 {
    +		// Sort extension keys to generate deterministic output
    +		keys := []string{}
    +		for k := range otherExtensions {
    +			keys = append(keys, k)
    +		}
    +		sort.Strings(keys)
    +
    +		for _, k := range keys {
    +			v := otherExtensions[k]
    +			g.Do("$.key$: $.value$,\n", map[string]interface{}{
    +				"key":   fmt.Sprintf("%#v", k),
    +				"value": fmt.Sprintf("%#v", v),
    +			})
    +		}
    +	}
    +
     	g.Do("},\n},\n", nil)
     }
     
    @@ -585,8 +805,8 @@ func defaultFromComments(comments []string, commentPath string, t *types.Type) (
     	}
     
     	var i interface{}
    -	if id, ok := defaultergen.ParseSymbolReference(tag, commentPath); ok {
    -		klog.Errorf("%v, %v", id, commentPath)
    +	if id, ok := parseSymbolReference(tag, commentPath); ok {
    +		klog.V(5).Infof("%v, %v", id, commentPath)
     		return nil, &id, nil
     	} else if err := json.Unmarshal([]byte(tag), &i); err != nil {
     		return nil, nil, fmt.Errorf("failed to unmarshal default: %v", err)
    @@ -594,6 +814,31 @@ func defaultFromComments(comments []string, commentPath string, t *types.Type) (
     	return i, nil, nil
     }
     
    +var refRE = regexp.MustCompile(`^ref\((?P[^"]+)\)$`)
    +var refREIdentIndex = refRE.SubexpIndex("reference")
    +
    +// parseSymbolReference looks for strings that match one of the following:
    +//   - ref(Ident)
    +//   - ref(pkgpath.Ident)
    +//     If the input string matches either of these, it will return the (optional)
    +//     pkgpath, the Ident, and true.  Otherwise it will return empty strings and
    +//     false.
    +//
    +// This is borrowed from k8s.io/code-generator.
    +func parseSymbolReference(s, sourcePackage string) (types.Name, bool) {
    +	matches := refRE.FindStringSubmatch(s)
    +	if len(matches) < refREIdentIndex || matches[refREIdentIndex] == "" {
    +		return types.Name{}, false
    +	}
    +
    +	contents := matches[refREIdentIndex]
    +	name := types.ParseFullyQualifiedName(contents)
    +	if len(name.Package) == 0 {
    +		name.Package = sourcePackage
    +	}
    +	return name, true
    +}
    +
     func implementsCustomUnmarshalling(t *types.Type) bool {
     	switch t.Kind {
     	case types.Pointer:
    @@ -701,15 +946,9 @@ func (g openAPITypeWriter) generateDescription(CommentLines []string) {
     		}
     	}
     
    -	postDoc := strings.TrimLeft(buffer.String(), "\n")
    -	postDoc = strings.TrimRight(postDoc, "\n")
    -	postDoc = strings.Replace(postDoc, "\\\"", "\"", -1) // replace user's \" to "
    -	postDoc = strings.Replace(postDoc, "\"", "\\\"", -1) // Escape "
    -	postDoc = strings.Replace(postDoc, "\n", "\\n", -1)
    -	postDoc = strings.Replace(postDoc, "\t", "\\t", -1)
    -	postDoc = strings.Trim(postDoc, " ")
    -	if postDoc != "" {
    -		g.Do("Description: \"$.$\",\n", postDoc)
    +	postDoc := strings.TrimSpace(buffer.String())
    +	if len(postDoc) > 0 {
    +		g.Do("Description: $.$,\n", fmt.Sprintf("%#v", postDoc))
     	}
     }
     
    @@ -718,11 +957,15 @@ func (g openAPITypeWriter) generateProperty(m *types.Member, parent *types.Type)
     	if name == "" {
     		return nil
     	}
    +	validationSchema, err := ParseCommentTags(m.Type, m.CommentLines, markerPrefix)
    +	if err != nil {
    +		return err
    +	}
     	if err := g.validatePatchTags(m, parent); err != nil {
     		return err
     	}
     	g.Do("\"$.$\": {\n", name)
    -	if err := g.generateMemberExtensions(m, parent); err != nil {
    +	if err := g.generateMemberExtensions(m, parent, validationSchema.Extensions); err != nil {
     		return err
     	}
     	g.Do("SchemaProps: spec.SchemaProps{\n", nil)
    @@ -741,6 +984,10 @@ func (g openAPITypeWriter) generateProperty(m *types.Member, parent *types.Type)
     	if err := g.generateDefault(m.CommentLines, m.Type, omitEmpty, parent); err != nil {
     		return fmt.Errorf("failed to generate default in %v: %v: %v", parent, m.Name, err)
     	}
    +	err = g.generateValueValidations(&validationSchema.SchemaProps)
    +	if err != nil {
    +		return err
    +	}
     	t := resolveAliasAndPtrType(m.Type)
     	// If we can get a openAPI type and format for this type, we consider it to be simple property
     	typeString, format := openapi.OpenAPITypeFormat(t.String())
    @@ -783,6 +1030,17 @@ func (g openAPITypeWriter) generateReferenceProperty(t *types.Type) {
     	g.Do("Ref: ref(\"$.$\"),\n", t.Name.String())
     }
     
    +func resolvePtrType(t *types.Type) *types.Type {
    +	var prev *types.Type
    +	for prev != t {
    +		prev = t
    +		if t.Kind == types.Pointer {
    +			t = t.Elem
    +		}
    +	}
    +	return t
    +}
    +
     func resolveAliasAndPtrType(t *types.Type) *types.Type {
     	var prev *types.Type
     	for prev != t {
    @@ -814,6 +1072,10 @@ func (g openAPITypeWriter) generateMapProperty(t *types.Type) error {
     	typeString, format := openapi.OpenAPITypeFormat(elemType.String())
     	if typeString != "" {
     		g.generateSimpleProperty(typeString, format)
    +		if enumType, isEnum := g.enumContext.EnumType(t.Elem); isEnum {
    +			// original type is an enum, add "Enum: " and the values
    +			g.Do("Enum: []interface{}{$.$},\n", strings.Join(enumType.ValueStrings(), ", "))
    +		}
     		g.Do("},\n},\n},\n", nil)
     		return nil
     	}
    @@ -847,6 +1109,10 @@ func (g openAPITypeWriter) generateSliceProperty(t *types.Type) error {
     	typeString, format := openapi.OpenAPITypeFormat(elemType.String())
     	if typeString != "" {
     		g.generateSimpleProperty(typeString, format)
    +		if enumType, isEnum := g.enumContext.EnumType(t.Elem); isEnum {
    +			// original type is an enum, add "Enum: " and the values
    +			g.Do("Enum: []interface{}{$.$},\n", strings.Join(enumType.ValueStrings(), ", "))
    +		}
     		g.Do("},\n},\n},\n", nil)
     		return nil
     	}
    diff --git a/vendor/k8s.io/kube-openapi/pkg/generators/rules/idl_tag.go b/vendor/k8s.io/kube-openapi/pkg/generators/rules/idl_tag.go
    index 474d79e89dce..e4b0f7cd3964 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/generators/rules/idl_tag.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/generators/rules/idl_tag.go
    @@ -1,7 +1,8 @@
     package rules
     
     import (
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/types"
     )
     
     const ListTypeIDLTag = "listType"
    @@ -24,7 +25,7 @@ func (l *ListTypeMissing) Validate(t *types.Type) ([]string, error) {
     	switch t.Kind {
     	case types.Struct:
     		for _, m := range t.Members {
    -			hasListType := types.ExtractCommentTags("+", m.CommentLines)[ListTypeIDLTag] != nil
    +			hasListType := gengo.ExtractCommentTags("+", m.CommentLines)[ListTypeIDLTag] != nil
     
     			if m.Name == "Items" && m.Type.Kind == types.Slice && hasNamedMember(t, "ListMeta") {
     				if hasListType {
    @@ -33,7 +34,8 @@ func (l *ListTypeMissing) Validate(t *types.Type) ([]string, error) {
     				continue
     			}
     
    -			if m.Type.Kind == types.Slice && !hasListType {
    +			// All slice fields must have a list-type tag except []byte
    +			if m.Type.Kind == types.Slice && m.Type.Elem != types.Byte && !hasListType {
     				fields = append(fields, m.Name)
     				continue
     			}
    diff --git a/vendor/k8s.io/kube-openapi/pkg/generators/rules/names_match.go b/vendor/k8s.io/kube-openapi/pkg/generators/rules/names_match.go
    index 581722257f06..d7655f0d92c3 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/generators/rules/names_match.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/generators/rules/names_match.go
    @@ -22,7 +22,7 @@ import (
     
     	"k8s.io/kube-openapi/pkg/util/sets"
     
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/types"
     )
     
     var (
    @@ -32,14 +32,6 @@ var (
     		"-",
     	)
     
    -	// Blacklist of JSON names that should skip match evaluation
    -	jsonNameBlacklist = sets.NewString(
    -		// Empty name is used for inline struct field (e.g. metav1.TypeMeta)
    -		"",
    -		// Special case for object and list meta
    -		"metadata",
    -	)
    -
     	// List of substrings that aren't allowed in Go name and JSON name
     	disallowedNameSubstrings = sets.NewString(
     		// Underscore is not allowed in either name
    @@ -73,12 +65,11 @@ is also considered matched.
     
     	HTTPJSONSpec   httpjsonSpec   true
     
    -NOTE: JSON names in jsonNameBlacklist should skip evaluation
    +NOTE: an empty JSON name is valid only for inlined structs or pointer to structs.
    +It cannot be empty for anything else because capitalization must be set explicitly.
     
    -	                              true
    -	podSpec                       true
    -	podSpec        -              true
    -	podSpec        metadata       true
    +NOTE: metav1.ListMeta and metav1.ObjectMeta by convention must have "metadata" as name.
    +Other fields may have that JSON name if the field name matches.
     */
     type NamesMatch struct{}
     
    @@ -109,7 +100,7 @@ func (n *NamesMatch) Validate(t *types.Type) ([]string, error) {
     				continue
     			}
     			jsonName := strings.Split(jsonTag, ",")[0]
    -			if !namesMatch(goName, jsonName) {
    +			if !nameIsOkay(m, jsonName) {
     				fields = append(fields, goName)
     			}
     		}
    @@ -117,6 +108,22 @@ func (n *NamesMatch) Validate(t *types.Type) ([]string, error) {
     	return fields, nil
     }
     
    +func nameIsOkay(member types.Member, jsonName string) bool {
    +	if jsonName == "" {
    +		return member.Type.Kind == types.Struct ||
    +			member.Type.Kind == types.Pointer && member.Type.Elem.Kind == types.Struct
    +	}
    +
    +	typeName := member.Type.String()
    +	switch typeName {
    +	case "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta",
    +		"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta":
    +		return jsonName == "metadata"
    +	}
    +
    +	return namesMatch(member.Name, jsonName)
    +}
    +
     // namesMatch evaluates if goName and jsonName match the API rule
     // TODO: Use an off-the-shelf CamelCase solution instead of implementing this logic. The following existing
     //
    @@ -129,13 +136,10 @@ func (n *NamesMatch) Validate(t *types.Type) ([]string, error) {
     //		 about why they don't satisfy our need. What we need can be a function that detects an acronym at the
     //		 beginning of a string.
     func namesMatch(goName, jsonName string) bool {
    -	if jsonNameBlacklist.Has(jsonName) {
    -		return true
    -	}
     	if !isAllowedName(goName) || !isAllowedName(jsonName) {
     		return false
     	}
    -	if strings.ToLower(goName) != strings.ToLower(jsonName) {
    +	if !strings.EqualFold(goName, jsonName) {
     		return false
     	}
     	// Go field names must be CamelCase. JSON field names must be camelCase.
    diff --git a/vendor/k8s.io/kube-openapi/pkg/generators/rules/omitempty_match_case.go b/vendor/k8s.io/kube-openapi/pkg/generators/rules/omitempty_match_case.go
    index dd37ad8a578a..d83875964000 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/generators/rules/omitempty_match_case.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/generators/rules/omitempty_match_case.go
    @@ -20,7 +20,7 @@ import (
     	"reflect"
     	"strings"
     
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2/types"
     )
     
     // OmitEmptyMatchCase implements APIRule interface.
    diff --git a/vendor/k8s.io/kube-openapi/pkg/generators/union.go b/vendor/k8s.io/kube-openapi/pkg/generators/union.go
    index a0281fe4706f..bfcba1ad703b 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/generators/union.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/generators/union.go
    @@ -20,7 +20,8 @@ import (
     	"fmt"
     	"sort"
     
    -	"k8s.io/gengo/types"
    +	"k8s.io/gengo/v2"
    +	"k8s.io/gengo/v2/types"
     )
     
     const tagUnionMember = "union"
    @@ -141,7 +142,7 @@ func parseEmbeddedUnion(t *types.Type) ([]union, []error) {
     // embedded types.
     func parseUnionStruct(t *types.Type) (*union, []error) {
     	errors := []error{}
    -	if types.ExtractCommentTags("+", t.CommentLines)[tagUnionMember] == nil {
    +	if gengo.ExtractCommentTags("+", t.CommentLines)[tagUnionMember] == nil {
     		return nil, nil
     	}
     
    @@ -156,14 +157,14 @@ func parseUnionStruct(t *types.Type) (*union, []error) {
     			errors = append(errors, fmt.Errorf("union structures can't have embedded fields: %v.%v", t.Name, m.Name))
     			continue
     		}
    -		if types.ExtractCommentTags("+", m.CommentLines)[tagUnionDeprecated] != nil {
    +		if gengo.ExtractCommentTags("+", m.CommentLines)[tagUnionDeprecated] != nil {
     			errors = append(errors, fmt.Errorf("union struct can't have unionDeprecated members: %v.%v", t.Name, m.Name))
     			continue
     		}
    -		if types.ExtractCommentTags("+", m.CommentLines)[tagUnionDiscriminator] != nil {
    +		if gengo.ExtractCommentTags("+", m.CommentLines)[tagUnionDiscriminator] != nil {
     			errors = append(errors, u.setDiscriminator(jsonName)...)
     		} else {
    -			if !hasOptionalTag(&m) {
    +			if optional, err := isOptional(&m); !optional || err != nil {
     				errors = append(errors, fmt.Errorf("union members must be optional: %v.%v", t.Name, m.Name))
     			}
     			u.addMember(jsonName, m.Name)
    @@ -186,15 +187,15 @@ func parseUnionMembers(t *types.Type) (*union, []error) {
     		if shouldInlineMembers(&m) {
     			continue
     		}
    -		if types.ExtractCommentTags("+", m.CommentLines)[tagUnionDiscriminator] != nil {
    +		if gengo.ExtractCommentTags("+", m.CommentLines)[tagUnionDiscriminator] != nil {
     			errors = append(errors, u.setDiscriminator(jsonName)...)
     		}
    -		if types.ExtractCommentTags("+", m.CommentLines)[tagUnionMember] != nil {
    +		if gengo.ExtractCommentTags("+", m.CommentLines)[tagUnionMember] != nil {
     			errors = append(errors, fmt.Errorf("union tag is not accepted on struct members: %v.%v", t.Name, m.Name))
     			continue
     		}
    -		if types.ExtractCommentTags("+", m.CommentLines)[tagUnionDeprecated] != nil {
    -			if !hasOptionalTag(&m) {
    +		if gengo.ExtractCommentTags("+", m.CommentLines)[tagUnionDeprecated] != nil {
    +			if optional, err := isOptional(&m); !optional || err != nil {
     				errors = append(errors, fmt.Errorf("union members must be optional: %v.%v", t.Name, m.Name))
     			}
     			u.addMember(jsonName, m.Name)
    diff --git a/vendor/k8s.io/kube-openapi/pkg/handler3/handler.go b/vendor/k8s.io/kube-openapi/pkg/handler3/handler.go
    index fc45634887b1..10f0b385fa10 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/handler3/handler.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/handler3/handler.go
    @@ -29,10 +29,10 @@ import (
     	"sync"
     	"time"
     
    -	"github.com/golang/protobuf/proto"
     	openapi_v3 "github.com/google/gnostic-models/openapiv3"
     	"github.com/google/uuid"
     	"github.com/munnerz/goautoneg"
    +	"google.golang.org/protobuf/proto"
     
     	"k8s.io/klog/v2"
     	"k8s.io/kube-openapi/pkg/cached"
    diff --git a/vendor/k8s.io/kube-openapi/pkg/schemaconv/smd.go b/vendor/k8s.io/kube-openapi/pkg/schemaconv/smd.go
    index 799d866d51f3..9887d185b264 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/schemaconv/smd.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/schemaconv/smd.go
    @@ -214,9 +214,6 @@ func makeUnion(extensions map[string]interface{}) (schema.Union, error) {
     		}
     	}
     
    -	if union.Discriminator != nil && len(union.Fields) == 0 {
    -		return schema.Union{}, fmt.Errorf("discriminator set to %v, but no fields in union", *union.Discriminator)
    -	}
     	return union, nil
     }
     
    diff --git a/vendor/k8s.io/kube-openapi/pkg/util/proto/document.go b/vendor/k8s.io/kube-openapi/pkg/util/proto/document.go
    index 5789e67ab7d9..1b758ab25a28 100644
    --- a/vendor/k8s.io/kube-openapi/pkg/util/proto/document.go
    +++ b/vendor/k8s.io/kube-openapi/pkg/util/proto/document.go
    @@ -22,7 +22,7 @@ import (
     	"strings"
     
     	openapi_v2 "github.com/google/gnostic-models/openapiv2"
    -	"gopkg.in/yaml.v2"
    +	yaml "sigs.k8s.io/yaml/goyaml.v2"
     )
     
     func newSchemaError(path *Path, format string, a ...interface{}) error {
    diff --git a/vendor/k8s.io/utils/clock/testing/fake_clock.go b/vendor/k8s.io/utils/clock/testing/fake_clock.go
    index 79e11deb6596..462c40c2c8f1 100644
    --- a/vendor/k8s.io/utils/clock/testing/fake_clock.go
    +++ b/vendor/k8s.io/utils/clock/testing/fake_clock.go
    @@ -48,7 +48,6 @@ type fakeClockWaiter struct {
     	stepInterval  time.Duration
     	skipIfBlocked bool
     	destChan      chan time.Time
    -	fired         bool
     	afterFunc     func()
     }
     
    @@ -198,12 +197,10 @@ func (f *FakeClock) setTimeLocked(t time.Time) {
     			if w.skipIfBlocked {
     				select {
     				case w.destChan <- t:
    -					w.fired = true
     				default:
     				}
     			} else {
     				w.destChan <- t
    -				w.fired = true
     			}
     
     			if w.afterFunc != nil {
    @@ -305,44 +302,48 @@ func (f *fakeTimer) C() <-chan time.Time {
     	return f.waiter.destChan
     }
     
    -// Stop stops the timer and returns true if the timer has not yet fired, or false otherwise.
    +// Stop prevents the Timer from firing. It returns true if the call stops the
    +// timer, false if the timer has already expired or been stopped.
     func (f *fakeTimer) Stop() bool {
     	f.fakeClock.lock.Lock()
     	defer f.fakeClock.lock.Unlock()
     
    +	active := false
     	newWaiters := make([]*fakeClockWaiter, 0, len(f.fakeClock.waiters))
     	for i := range f.fakeClock.waiters {
     		w := f.fakeClock.waiters[i]
     		if w != &f.waiter {
     			newWaiters = append(newWaiters, w)
    +			continue
     		}
    +		// If timer is found, it has not been fired yet.
    +		active = true
     	}
     
     	f.fakeClock.waiters = newWaiters
     
    -	return !f.waiter.fired
    +	return active
     }
     
    -// Reset resets the timer to the fake clock's "now" + d. It returns true if the timer has not yet
    -// fired, or false otherwise.
    +// Reset changes the timer to expire after duration d. It returns true if the
    +// timer had been active, false if the timer had expired or been stopped.
     func (f *fakeTimer) Reset(d time.Duration) bool {
     	f.fakeClock.lock.Lock()
     	defer f.fakeClock.lock.Unlock()
     
    -	active := !f.waiter.fired
    +	active := false
     
    -	f.waiter.fired = false
     	f.waiter.targetTime = f.fakeClock.time.Add(d)
     
    -	var isWaiting bool
     	for i := range f.fakeClock.waiters {
     		w := f.fakeClock.waiters[i]
     		if w == &f.waiter {
    -			isWaiting = true
    +			// If timer is found, it has not been fired yet.
    +			active = true
     			break
     		}
     	}
    -	if !isWaiting {
    +	if !active {
     		f.fakeClock.waiters = append(f.fakeClock.waiters, &f.waiter)
     	}
     
    diff --git a/vendor/k8s.io/utils/integer/integer.go b/vendor/k8s.io/utils/integer/integer.go
    deleted file mode 100644
    index e0811e8344c5..000000000000
    --- a/vendor/k8s.io/utils/integer/integer.go
    +++ /dev/null
    @@ -1,73 +0,0 @@
    -/*
    -Copyright 2016 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -package integer
    -
    -import "math"
    -
    -// IntMax returns the maximum of the params
    -func IntMax(a, b int) int {
    -	if b > a {
    -		return b
    -	}
    -	return a
    -}
    -
    -// IntMin returns the minimum of the params
    -func IntMin(a, b int) int {
    -	if b < a {
    -		return b
    -	}
    -	return a
    -}
    -
    -// Int32Max returns the maximum of the params
    -func Int32Max(a, b int32) int32 {
    -	if b > a {
    -		return b
    -	}
    -	return a
    -}
    -
    -// Int32Min returns the minimum of the params
    -func Int32Min(a, b int32) int32 {
    -	if b < a {
    -		return b
    -	}
    -	return a
    -}
    -
    -// Int64Max returns the maximum of the params
    -func Int64Max(a, b int64) int64 {
    -	if b > a {
    -		return b
    -	}
    -	return a
    -}
    -
    -// Int64Min returns the minimum of the params
    -func Int64Min(a, b int64) int64 {
    -	if b < a {
    -		return b
    -	}
    -	return a
    -}
    -
    -// RoundToInt32 rounds floats into integer numbers.
    -// Deprecated: use math.Round() and a cast directly.
    -func RoundToInt32(a float64) int32 {
    -	return int32(math.Round(a))
    -}
    diff --git a/vendor/k8s.io/utils/lru/lru.go b/vendor/k8s.io/utils/lru/lru.go
    index 47f135281348..40c22ece13ee 100644
    --- a/vendor/k8s.io/utils/lru/lru.go
    +++ b/vendor/k8s.io/utils/lru/lru.go
    @@ -16,6 +16,7 @@ limitations under the License.
     package lru
     
     import (
    +	"fmt"
     	"sync"
     
     	groupcache "k8s.io/utils/internal/third_party/forked/golang/golang-lru"
    @@ -44,6 +45,17 @@ func NewWithEvictionFunc(size int, f EvictionFunc) *Cache {
     	return c
     }
     
    +// SetEvictionFunc updates the eviction func
    +func (c *Cache) SetEvictionFunc(f EvictionFunc) error {
    +	c.lock.Lock()
    +	defer c.lock.Unlock()
    +	if c.cache.OnEvicted != nil {
    +		return fmt.Errorf("lru cache eviction function is already set")
    +	}
    +	c.cache.OnEvicted = f
    +	return nil
    +}
    +
     // Add adds a value to the cache.
     func (c *Cache) Add(key Key, value interface{}) {
     	c.lock.Lock()
    diff --git a/vendor/k8s.io/utils/net/multi_listen.go b/vendor/k8s.io/utils/net/multi_listen.go
    new file mode 100644
    index 000000000000..7cb7795beca7
    --- /dev/null
    +++ b/vendor/k8s.io/utils/net/multi_listen.go
    @@ -0,0 +1,195 @@
    +/*
    +Copyright 2024 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package net
    +
    +import (
    +	"context"
    +	"fmt"
    +	"net"
    +	"sync"
    +)
    +
    +// connErrPair pairs conn and error which is returned by accept on sub-listeners.
    +type connErrPair struct {
    +	conn net.Conn
    +	err  error
    +}
    +
    +// multiListener implements net.Listener
    +type multiListener struct {
    +	listeners []net.Listener
    +	wg        sync.WaitGroup
    +
    +	// connCh passes accepted connections, from child listeners to parent.
    +	connCh chan connErrPair
    +	// stopCh communicates from parent to child listeners.
    +	stopCh chan struct{}
    +}
    +
    +// compile time check to ensure *multiListener implements net.Listener
    +var _ net.Listener = &multiListener{}
    +
    +// MultiListen returns net.Listener which can listen on and accept connections for
    +// the given network on multiple addresses. Internally it uses stdlib to create
    +// sub-listener and multiplexes connection requests using go-routines.
    +// The network must be "tcp", "tcp4" or "tcp6".
    +// It follows the semantics of net.Listen that primarily means:
    +//  1. If the host is an unspecified/zero IP address with "tcp" network, MultiListen
    +//     listens on all available unicast and anycast IP addresses of the local system.
    +//  2. Use "tcp4" or "tcp6" to exclusively listen on IPv4 or IPv6 family, respectively.
    +//  3. The host can accept names (e.g, localhost) and it will create a listener for at
    +//     most one of the host's IP.
    +func MultiListen(ctx context.Context, network string, addrs ...string) (net.Listener, error) {
    +	var lc net.ListenConfig
    +	return multiListen(
    +		ctx,
    +		network,
    +		addrs,
    +		func(ctx context.Context, network, address string) (net.Listener, error) {
    +			return lc.Listen(ctx, network, address)
    +		})
    +}
    +
    +// multiListen implements MultiListen by consuming stdlib functions as dependency allowing
    +// mocking for unit-testing.
    +func multiListen(
    +	ctx context.Context,
    +	network string,
    +	addrs []string,
    +	listenFunc func(ctx context.Context, network, address string) (net.Listener, error),
    +) (net.Listener, error) {
    +	if !(network == "tcp" || network == "tcp4" || network == "tcp6") {
    +		return nil, fmt.Errorf("network %q not supported", network)
    +	}
    +	if len(addrs) == 0 {
    +		return nil, fmt.Errorf("no address provided to listen on")
    +	}
    +
    +	ml := &multiListener{
    +		connCh: make(chan connErrPair),
    +		stopCh: make(chan struct{}),
    +	}
    +	for _, addr := range addrs {
    +		l, err := listenFunc(ctx, network, addr)
    +		if err != nil {
    +			// close all the sub-listeners and exit
    +			_ = ml.Close()
    +			return nil, err
    +		}
    +		ml.listeners = append(ml.listeners, l)
    +	}
    +
    +	for _, l := range ml.listeners {
    +		ml.wg.Add(1)
    +		go func(l net.Listener) {
    +			defer ml.wg.Done()
    +			for {
    +				// Accept() is blocking, unless ml.Close() is called, in which
    +				// case it will return immediately with an error.
    +				conn, err := l.Accept()
    +				// This assumes that ANY error from Accept() will terminate the
    +				// sub-listener. We could maybe be more precise, but it
    +				// doesn't seem necessary.
    +				terminate := err != nil
    +
    +				select {
    +				case ml.connCh <- connErrPair{conn: conn, err: err}:
    +				case <-ml.stopCh:
    +					// In case we accepted a connection AND were stopped, and
    +					// this select-case was chosen, just throw away the
    +					// connection.  This avoids potentially blocking on connCh
    +					// or leaking a connection.
    +					if conn != nil {
    +						_ = conn.Close()
    +					}
    +					terminate = true
    +				}
    +				// Make sure we don't loop on Accept() returning an error and
    +				// the select choosing the channel case.
    +				if terminate {
    +					return
    +				}
    +			}
    +		}(l)
    +	}
    +	return ml, nil
    +}
    +
    +// Accept implements net.Listener. It waits for and returns a connection from
    +// any of the sub-listener.
    +func (ml *multiListener) Accept() (net.Conn, error) {
    +	// wait for any sub-listener to enqueue an accepted connection
    +	connErr, ok := <-ml.connCh
    +	if !ok {
    +		// The channel will be closed only when Close() is called on the
    +		// multiListener. Closing of this channel implies that all
    +		// sub-listeners are also closed, which causes a "use of closed
    +		// network connection" error on their Accept() calls. We return the
    +		// same error for multiListener.Accept() if multiListener.Close()
    +		// has already been called.
    +		return nil, fmt.Errorf("use of closed network connection")
    +	}
    +	return connErr.conn, connErr.err
    +}
    +
    +// Close implements net.Listener. It will close all sub-listeners and wait for
    +// the go-routines to exit.
    +func (ml *multiListener) Close() error {
    +	// Make sure this can be called repeatedly without explosions.
    +	select {
    +	case <-ml.stopCh:
    +		return fmt.Errorf("use of closed network connection")
    +	default:
    +	}
    +
    +	// Tell all sub-listeners to stop.
    +	close(ml.stopCh)
    +
    +	// Closing the listeners causes Accept() to immediately return an error in
    +	// the sub-listener go-routines.
    +	for _, l := range ml.listeners {
    +		_ = l.Close()
    +	}
    +
    +	// Wait for all the sub-listener go-routines to exit.
    +	ml.wg.Wait()
    +	close(ml.connCh)
    +
    +	// Drain any already-queued connections.
    +	for connErr := range ml.connCh {
    +		if connErr.conn != nil {
    +			_ = connErr.conn.Close()
    +		}
    +	}
    +	return nil
    +}
    +
    +// Addr is an implementation of the net.Listener interface.  It always returns
    +// the address of the first listener.  Callers should  use conn.LocalAddr() to
    +// obtain the actual local address of the sub-listener.
    +func (ml *multiListener) Addr() net.Addr {
    +	return ml.listeners[0].Addr()
    +}
    +
    +// Addrs is like Addr, but returns the address for all registered listeners.
    +func (ml *multiListener) Addrs() []net.Addr {
    +	var ret []net.Addr
    +	for _, l := range ml.listeners {
    +		ret = append(ret, l.Addr())
    +	}
    +	return ret
    +}
    diff --git a/vendor/k8s.io/utils/strings/slices/slices.go b/vendor/k8s.io/utils/strings/slices/slices.go
    deleted file mode 100644
    index 8e21838f24c5..000000000000
    --- a/vendor/k8s.io/utils/strings/slices/slices.go
    +++ /dev/null
    @@ -1,82 +0,0 @@
    -/*
    -Copyright 2021 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Package slices defines various functions useful with slices of string type.
    -// The goal is to be as close as possible to
    -// https://github.com/golang/go/issues/45955. Ideal would be if we can just
    -// replace "stringslices" if the "slices" package becomes standard.
    -package slices
    -
    -// Equal reports whether two slices are equal: the same length and all
    -// elements equal. If the lengths are different, Equal returns false.
    -// Otherwise, the elements are compared in index order, and the
    -// comparison stops at the first unequal pair.
    -func Equal(s1, s2 []string) bool {
    -	if len(s1) != len(s2) {
    -		return false
    -	}
    -	for i, n := range s1 {
    -		if n != s2[i] {
    -			return false
    -		}
    -	}
    -	return true
    -}
    -
    -// Filter appends to d each element e of s for which keep(e) returns true.
    -// It returns the modified d. d may be s[:0], in which case the kept
    -// elements will be stored in the same slice.
    -// if the slices overlap in some other way, the results are unspecified.
    -// To create a new slice with the filtered results, pass nil for d.
    -func Filter(d, s []string, keep func(string) bool) []string {
    -	for _, n := range s {
    -		if keep(n) {
    -			d = append(d, n)
    -		}
    -	}
    -	return d
    -}
    -
    -// Contains reports whether v is present in s.
    -func Contains(s []string, v string) bool {
    -	return Index(s, v) >= 0
    -}
    -
    -// Index returns the index of the first occurrence of v in s, or -1 if
    -// not present.
    -func Index(s []string, v string) int {
    -	// "Contains" may be replaced with "Index(s, v) >= 0":
    -	// https://github.com/golang/go/issues/45955#issuecomment-873377947
    -	for i, n := range s {
    -		if n == v {
    -			return i
    -		}
    -	}
    -	return -1
    -}
    -
    -// Functions below are not in https://github.com/golang/go/issues/45955
    -
    -// Clone returns a new clone of s.
    -func Clone(s []string) []string {
    -	// https://github.com/go101/go101/wiki/There-is-not-a-perfect-way-to-clone-slices-in-Go
    -	if s == nil {
    -		return nil
    -	}
    -	c := make([]string, len(s))
    -	copy(c, s)
    -	return c
    -}
    diff --git a/vendor/k8s.io/utils/trace/trace.go b/vendor/k8s.io/utils/trace/trace.go
    index 187eb5d8c5e9..559aebb59a54 100644
    --- a/vendor/k8s.io/utils/trace/trace.go
    +++ b/vendor/k8s.io/utils/trace/trace.go
    @@ -192,7 +192,7 @@ func (t *Trace) Log() {
     	t.endTime = &endTime
     	t.lock.Unlock()
     	// an explicit logging request should dump all the steps out at the higher level
    -	if t.parentTrace == nil { // We don't start logging until Log or LogIfLong is called on the root trace
    +	if t.parentTrace == nil && klogV(2) { // We don't start logging until Log or LogIfLong is called on the root trace
     		t.logTrace()
     	}
     }
    diff --git a/vendor/modules.txt b/vendor/modules.txt
    index 477e294fde9a..2903a224ff27 100644
    --- a/vendor/modules.txt
    +++ b/vendor/modules.txt
    @@ -1,5 +1,5 @@
    -# cloud.google.com/go/auth v0.5.1
    -## explicit; go 1.20
    +# cloud.google.com/go/auth v0.9.4
    +## explicit; go 1.21
     cloud.google.com/go/auth
     cloud.google.com/go/auth/credentials
     cloud.google.com/go/auth/credentials/internal/externalaccount
    @@ -13,11 +13,11 @@ cloud.google.com/go/auth/internal/credsfile
     cloud.google.com/go/auth/internal/jwt
     cloud.google.com/go/auth/internal/transport
     cloud.google.com/go/auth/internal/transport/cert
    -# cloud.google.com/go/auth/oauth2adapt v0.2.2
    -## explicit; go 1.19
    +# cloud.google.com/go/auth/oauth2adapt v0.2.4
    +## explicit; go 1.20
     cloud.google.com/go/auth/oauth2adapt
    -# cloud.google.com/go/compute/metadata v0.3.0
    -## explicit; go 1.19
    +# cloud.google.com/go/compute/metadata v0.6.0
    +## explicit; go 1.21
     cloud.google.com/go/compute/metadata
     # contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d
     ## explicit; go 1.13
    @@ -61,12 +61,15 @@ github.com/Azure/go-autorest/tracing
     ## explicit; go 1.15
     github.com/ahmetb/gen-crd-api-reference-docs
     github.com/ahmetb/gen-crd-api-reference-docs/template
    -# github.com/aws/aws-sdk-go-v2 v1.16.16
    -## explicit; go 1.15
    -github.com/aws/aws-sdk-go-v2
    +# github.com/apapsch/go-jsonmerge/v2 v2.0.0
    +## explicit; go 1.12
    +github.com/apapsch/go-jsonmerge/v2
    +# github.com/aws/aws-sdk-go-v2 v1.31.0
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/aws
     github.com/aws/aws-sdk-go-v2/aws/defaults
     github.com/aws/aws-sdk-go-v2/aws/middleware
    +github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics
     github.com/aws/aws-sdk-go-v2/aws/protocol/query
     github.com/aws/aws-sdk-go-v2/aws/protocol/restjson
     github.com/aws/aws-sdk-go-v2/aws/protocol/xml
    @@ -75,17 +78,24 @@ github.com/aws/aws-sdk-go-v2/aws/retry
     github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4
     github.com/aws/aws-sdk-go-v2/aws/signer/v4
     github.com/aws/aws-sdk-go-v2/aws/transport/http
    +github.com/aws/aws-sdk-go-v2/internal/auth
    +github.com/aws/aws-sdk-go-v2/internal/auth/smithy
    +github.com/aws/aws-sdk-go-v2/internal/context
    +github.com/aws/aws-sdk-go-v2/internal/endpoints
    +github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn
    +github.com/aws/aws-sdk-go-v2/internal/middleware
     github.com/aws/aws-sdk-go-v2/internal/rand
     github.com/aws/aws-sdk-go-v2/internal/sdk
     github.com/aws/aws-sdk-go-v2/internal/sdkio
    +github.com/aws/aws-sdk-go-v2/internal/shareddefaults
     github.com/aws/aws-sdk-go-v2/internal/strings
     github.com/aws/aws-sdk-go-v2/internal/sync/singleflight
     github.com/aws/aws-sdk-go-v2/internal/timeconv
    -# github.com/aws/aws-sdk-go-v2/config v1.17.8
    -## explicit; go 1.15
    +# github.com/aws/aws-sdk-go-v2/config v1.27.36
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/config
    -# github.com/aws/aws-sdk-go-v2/credentials v1.12.21
    -## explicit; go 1.15
    +# github.com/aws/aws-sdk-go-v2/credentials v1.17.34
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/credentials
     github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds
     github.com/aws/aws-sdk-go-v2/credentials/endpointcreds
    @@ -93,18 +103,18 @@ github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client
     github.com/aws/aws-sdk-go-v2/credentials/processcreds
     github.com/aws/aws-sdk-go-v2/credentials/ssocreds
     github.com/aws/aws-sdk-go-v2/credentials/stscreds
    -# github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17
    -## explicit; go 1.15
    +# github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/feature/ec2/imds
     github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
    -# github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23
    -## explicit; go 1.15
    +# github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/internal/configsources
    -# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17
    -## explicit; go 1.15
    +# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/internal/endpoints/v2
    -# github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24
    -## explicit; go 1.15
    +# github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/internal/ini
     # github.com/aws/aws-sdk-go-v2/service/ecr v1.17.18
     ## explicit; go 1.15
    @@ -116,27 +126,31 @@ github.com/aws/aws-sdk-go-v2/service/ecr/types
     github.com/aws/aws-sdk-go-v2/service/ecrpublic
     github.com/aws/aws-sdk-go-v2/service/ecrpublic/internal/endpoints
     github.com/aws/aws-sdk-go-v2/service/ecrpublic/types
    -# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17
    -## explicit; go 1.15
    +# github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5
    +## explicit; go 1.21
    +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding
    +# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/service/internal/presigned-url
    -# github.com/aws/aws-sdk-go-v2/service/sso v1.11.23
    -## explicit; go 1.15
    +# github.com/aws/aws-sdk-go-v2/service/sso v1.23.0
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/service/sso
     github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints
     github.com/aws/aws-sdk-go-v2/service/sso/types
    -# github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.6
    -## explicit; go 1.15
    +# github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/service/ssooidc
     github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints
     github.com/aws/aws-sdk-go-v2/service/ssooidc/types
    -# github.com/aws/aws-sdk-go-v2/service/sts v1.16.19
    -## explicit; go 1.15
    +# github.com/aws/aws-sdk-go-v2/service/sts v1.31.0
    +## explicit; go 1.21
     github.com/aws/aws-sdk-go-v2/service/sts
     github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
     github.com/aws/aws-sdk-go-v2/service/sts/types
    -# github.com/aws/smithy-go v1.13.3
    -## explicit; go 1.15
    +# github.com/aws/smithy-go v1.21.0
    +## explicit; go 1.21
     github.com/aws/smithy-go
    +github.com/aws/smithy-go/auth
     github.com/aws/smithy-go/auth/bearer
     github.com/aws/smithy-go/context
     github.com/aws/smithy-go/document
    @@ -144,13 +158,17 @@ github.com/aws/smithy-go/encoding
     github.com/aws/smithy-go/encoding/httpbinding
     github.com/aws/smithy-go/encoding/json
     github.com/aws/smithy-go/encoding/xml
    +github.com/aws/smithy-go/endpoints
     github.com/aws/smithy-go/internal/sync/singleflight
     github.com/aws/smithy-go/io
     github.com/aws/smithy-go/logging
    +github.com/aws/smithy-go/metrics
     github.com/aws/smithy-go/middleware
    +github.com/aws/smithy-go/private/requestcompression
     github.com/aws/smithy-go/ptr
     github.com/aws/smithy-go/rand
     github.com/aws/smithy-go/time
    +github.com/aws/smithy-go/tracing
     github.com/aws/smithy-go/transport/http
     github.com/aws/smithy-go/transport/http/internal/io
     github.com/aws/smithy-go/waiter
    @@ -170,7 +188,7 @@ github.com/blang/semver/v4
     # github.com/blendle/zapdriver v1.3.1
     ## explicit; go 1.12
     github.com/blendle/zapdriver
    -# github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b
    +# github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500
     ## explicit
     github.com/c2h5oh/datasize
     # github.com/census-instrumentation/opencensus-proto v0.4.1
    @@ -181,8 +199,8 @@ github.com/census-instrumentation/opencensus-proto/gen-go/agent/trace/v1
     github.com/census-instrumentation/opencensus-proto/gen-go/metrics/v1
     github.com/census-instrumentation/opencensus-proto/gen-go/resource/v1
     github.com/census-instrumentation/opencensus-proto/gen-go/trace/v1
    -# github.com/cert-manager/cert-manager v1.13.3
    -## explicit; go 1.20
    +# github.com/cert-manager/cert-manager v1.17.1
    +## explicit; go 1.23.0
     github.com/cert-manager/cert-manager/pkg/apis/acme
     github.com/cert-manager/cert-manager/pkg/apis/acme/v1
     github.com/cert-manager/cert-manager/pkg/apis/certmanager
    @@ -197,43 +215,33 @@ github.com/cespare/xxhash/v2
     github.com/chrismellard/docker-credential-acr-env/pkg/credhelper
     github.com/chrismellard/docker-credential-acr-env/pkg/registry
     github.com/chrismellard/docker-credential-acr-env/pkg/token
    -# github.com/containerd/stargz-snapshotter/estargz v0.12.1
    -## explicit; go 1.16
    +# github.com/containerd/stargz-snapshotter/estargz v0.16.3
    +## explicit; go 1.22.0
     github.com/containerd/stargz-snapshotter/estargz
     github.com/containerd/stargz-snapshotter/estargz/errorutil
     # github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
     ## explicit
     github.com/davecgh/go-spew/spew
    -# github.com/deepmap/oapi-codegen v1.8.2
    -## explicit; go 1.14
    -github.com/deepmap/oapi-codegen/pkg/runtime
    -github.com/deepmap/oapi-codegen/pkg/types
     # github.com/dimchansky/utfbom v1.1.1
     ## explicit
     github.com/dimchansky/utfbom
    -# github.com/docker/cli v20.10.20+incompatible
    +# github.com/docker/cli v27.5.0+incompatible
     ## explicit
     github.com/docker/cli/cli/config
     github.com/docker/cli/cli/config/configfile
     github.com/docker/cli/cli/config/credentials
     github.com/docker/cli/cli/config/types
    -# github.com/docker/distribution v2.8.2+incompatible
    +# github.com/docker/distribution v2.8.3+incompatible
     ## explicit
     github.com/docker/distribution/registry/client/auth/challenge
    -# github.com/docker/docker v25.0.6+incompatible
    -## explicit
    -github.com/docker/docker/pkg/homedir
    -# github.com/docker/docker-credential-helpers v0.7.0
    -## explicit; go 1.18
    +# github.com/docker/docker-credential-helpers v0.8.2
    +## explicit; go 1.19
     github.com/docker/docker-credential-helpers/client
     github.com/docker/docker-credential-helpers/credentials
    -# github.com/emicklei/go-restful/v3 v3.11.0
    +# github.com/emicklei/go-restful/v3 v3.12.1
     ## explicit; go 1.13
     github.com/emicklei/go-restful/v3
     github.com/emicklei/go-restful/v3/log
    -# github.com/evanphx/json-patch v5.6.0+incompatible
    -## explicit
    -github.com/evanphx/json-patch
     # github.com/evanphx/json-patch/v5 v5.9.0
     ## explicit; go 1.18
     github.com/evanphx/json-patch/v5
    @@ -241,6 +249,9 @@ github.com/evanphx/json-patch/v5/internal/json
     # github.com/felixge/httpsnoop v1.0.4
     ## explicit; go 1.13
     github.com/felixge/httpsnoop
    +# github.com/fxamacker/cbor/v2 v2.7.0
    +## explicit; go 1.17
    +github.com/fxamacker/cbor/v2
     # github.com/ghodss/yaml v1.0.0
     ## explicit
     github.com/ghodss/yaml
    @@ -251,22 +262,22 @@ github.com/go-kit/log/level
     # github.com/go-logfmt/logfmt v0.5.1
     ## explicit; go 1.17
     github.com/go-logfmt/logfmt
    -# github.com/go-logr/logr v1.4.1
    +# github.com/go-logr/logr v1.4.2
     ## explicit; go 1.18
     github.com/go-logr/logr
     github.com/go-logr/logr/funcr
     # github.com/go-logr/stdr v1.2.2
     ## explicit; go 1.16
     github.com/go-logr/stdr
    -# github.com/go-openapi/jsonpointer v0.20.2
    -## explicit; go 1.19
    +# github.com/go-openapi/jsonpointer v0.21.0
    +## explicit; go 1.20
     github.com/go-openapi/jsonpointer
    -# github.com/go-openapi/jsonreference v0.20.4
    -## explicit; go 1.19
    +# github.com/go-openapi/jsonreference v0.21.0
    +## explicit; go 1.20
     github.com/go-openapi/jsonreference
     github.com/go-openapi/jsonreference/internal
    -# github.com/go-openapi/swag v0.22.7
    -## explicit; go 1.19
    +# github.com/go-openapi/swag v0.23.0
    +## explicit; go 1.20
     github.com/go-openapi/swag
     # github.com/gobuffalo/flect v1.0.2
     ## explicit; go 1.16
    @@ -284,27 +295,24 @@ github.com/golang/groupcache/lru
     # github.com/golang/protobuf v1.5.4
     ## explicit; go 1.17
     github.com/golang/protobuf/proto
    -github.com/golang/protobuf/ptypes
    -github.com/golang/protobuf/ptypes/any
    -github.com/golang/protobuf/ptypes/duration
     github.com/golang/protobuf/ptypes/timestamp
    -# github.com/google/gnostic-models v0.6.8
    -## explicit; go 1.18
    +# github.com/google/gnostic-models v0.6.9
    +## explicit; go 1.21
     github.com/google/gnostic-models/compiler
     github.com/google/gnostic-models/extensions
     github.com/google/gnostic-models/jsonschema
     github.com/google/gnostic-models/openapiv2
     github.com/google/gnostic-models/openapiv3
    -# github.com/google/go-cmp v0.6.0
    -## explicit; go 1.13
    +# github.com/google/go-cmp v0.7.0
    +## explicit; go 1.21
     github.com/google/go-cmp/cmp
     github.com/google/go-cmp/cmp/cmpopts
     github.com/google/go-cmp/cmp/internal/diff
     github.com/google/go-cmp/cmp/internal/flags
     github.com/google/go-cmp/cmp/internal/function
     github.com/google/go-cmp/cmp/internal/value
    -# github.com/google/go-containerregistry v0.13.0
    -## explicit; go 1.18
    +# github.com/google/go-containerregistry v0.20.3
    +## explicit; go 1.23.0
     github.com/google/go-containerregistry/internal/and
     github.com/google/go-containerregistry/internal/compression
     github.com/google/go-containerregistry/internal/estargz
    @@ -340,8 +348,8 @@ github.com/google/go-containerregistry/pkg/authn/kubernetes
     ## explicit; go 1.12
     github.com/google/gofuzz
     github.com/google/gofuzz/bytesource
    -# github.com/google/s2a-go v0.1.7
    -## explicit; go 1.19
    +# github.com/google/s2a-go v0.1.8
    +## explicit; go 1.20
     github.com/google/s2a-go
     github.com/google/s2a-go/fallback
     github.com/google/s2a-go/internal/authinfo
    @@ -366,22 +374,22 @@ github.com/google/s2a-go/stream
     # github.com/google/uuid v1.6.0
     ## explicit
     github.com/google/uuid
    -# github.com/googleapis/enterprise-certificate-proxy v0.3.2
    +# github.com/googleapis/enterprise-certificate-proxy v0.3.4
     ## explicit; go 1.19
     github.com/googleapis/enterprise-certificate-proxy/client
     github.com/googleapis/enterprise-certificate-proxy/client/util
    -# github.com/googleapis/gax-go/v2 v2.12.4
    -## explicit; go 1.19
    +# github.com/googleapis/gax-go/v2 v2.13.0
    +## explicit; go 1.20
     github.com/googleapis/gax-go/v2
     github.com/googleapis/gax-go/v2/apierror
     github.com/googleapis/gax-go/v2/apierror/internal/proto
     github.com/googleapis/gax-go/v2/callctx
     github.com/googleapis/gax-go/v2/internal
    -# github.com/gorilla/websocket v1.5.1 => github.com/gorilla/websocket v1.5.0
    +# github.com/gorilla/websocket v1.5.3 => github.com/gorilla/websocket v1.5.0
     ## explicit; go 1.12
     github.com/gorilla/websocket
    -# github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0
    -## explicit; go 1.17
    +# github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1
    +## explicit; go 1.22.0
     github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule
     github.com/grpc-ecosystem/grpc-gateway/v2/runtime
     github.com/grpc-ecosystem/grpc-gateway/v2/utilities
    @@ -389,10 +397,7 @@ github.com/grpc-ecosystem/grpc-gateway/v2/utilities
     ## explicit; go 1.12
     github.com/hashicorp/golang-lru
     github.com/hashicorp/golang-lru/simplelru
    -# github.com/imdario/mergo v0.3.12
    -## explicit; go 1.13
    -github.com/imdario/mergo
    -# github.com/influxdata/influxdb-client-go/v2 v2.9.0
    +# github.com/influxdata/influxdb-client-go/v2 v2.14.0
     ## explicit; go 1.17
     github.com/influxdata/influxdb-client-go/v2
     github.com/influxdata/influxdb-client-go/v2/api
    @@ -423,8 +428,8 @@ github.com/json-iterator/go
     # github.com/kelseyhightower/envconfig v1.4.0
     ## explicit
     github.com/kelseyhightower/envconfig
    -# github.com/klauspost/compress v1.17.8
    -## explicit; go 1.20
    +# github.com/klauspost/compress v1.17.11
    +## explicit; go 1.21
     github.com/klauspost/compress
     github.com/klauspost/compress/fse
     github.com/klauspost/compress/huff0
    @@ -432,8 +437,8 @@ github.com/klauspost/compress/internal/cpuinfo
     github.com/klauspost/compress/internal/snapref
     github.com/klauspost/compress/zstd
     github.com/klauspost/compress/zstd/internal/xxhash
    -# github.com/mailru/easyjson v0.7.7
    -## explicit; go 1.12
    +# github.com/mailru/easyjson v0.9.0
    +## explicit; go 1.20
     github.com/mailru/easyjson
     github.com/mailru/easyjson/buffer
     github.com/mailru/easyjson/jlexer
    @@ -450,11 +455,15 @@ github.com/modern-go/reflect2
     # github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
     ## explicit
     github.com/munnerz/goautoneg
    +# github.com/oapi-codegen/runtime v1.0.0
    +## explicit; go 1.20
    +github.com/oapi-codegen/runtime
    +github.com/oapi-codegen/runtime/types
     # github.com/opencontainers/go-digest v1.0.0
     ## explicit; go 1.13
     github.com/opencontainers/go-digest
    -# github.com/opencontainers/image-spec v1.1.0-rc2
    -## explicit; go 1.17
    +# github.com/opencontainers/image-spec v1.1.0
    +## explicit; go 1.18
     github.com/opencontainers/image-spec/specs-go
     github.com/opencontainers/image-spec/specs-go/v1
     # github.com/openzipkin/zipkin-go v0.4.3
    @@ -469,21 +478,22 @@ github.com/openzipkin/zipkin-go/reporter/recorder
     # github.com/pkg/errors v0.9.1
     ## explicit
     github.com/pkg/errors
    -# github.com/prometheus/client_golang v1.19.1
    +# github.com/prometheus/client_golang v1.20.5
     ## explicit; go 1.20
    +github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil
    +github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header
     github.com/prometheus/client_golang/prometheus
     github.com/prometheus/client_golang/prometheus/internal
     github.com/prometheus/client_golang/prometheus/promhttp
     # github.com/prometheus/client_model v0.6.1
     ## explicit; go 1.19
     github.com/prometheus/client_model/go
    -# github.com/prometheus/common v0.54.0
    -## explicit; go 1.20
    +# github.com/prometheus/common v0.61.0
    +## explicit; go 1.21
     github.com/prometheus/common/expfmt
    -github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg
     github.com/prometheus/common/model
    -# github.com/prometheus/procfs v0.12.0
    -## explicit; go 1.19
    +# github.com/prometheus/procfs v0.15.1
    +## explicit; go 1.20
     github.com/prometheus/procfs
     github.com/prometheus/procfs/internal/fs
     github.com/prometheus/procfs/internal/util
    @@ -492,7 +502,7 @@ github.com/prometheus/procfs/internal/util
     github.com/prometheus/statsd_exporter/pkg/level
     github.com/prometheus/statsd_exporter/pkg/mapper
     github.com/prometheus/statsd_exporter/pkg/mapper/fsm
    -# github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417
    +# github.com/rs/dnscache v0.0.0-20230804202142-fc85eb664529
     ## explicit; go 1.12
     github.com/rs/dnscache
     # github.com/russross/blackfriday/v2 v2.1.0
    @@ -508,17 +518,20 @@ github.com/spf13/pflag
     ## explicit
     github.com/tsenart/go-tsz
     github.com/tsenart/go-tsz/testdata
    -# github.com/tsenart/vegeta/v12 v12.11.1
    -## explicit; go 1.20
    +# github.com/tsenart/vegeta/v12 v12.12.0
    +## explicit; go 1.22
     github.com/tsenart/vegeta/v12
     github.com/tsenart/vegeta/v12/internal/resolver
     github.com/tsenart/vegeta/v12/lib
     github.com/tsenart/vegeta/v12/lib/lttb
     github.com/tsenart/vegeta/v12/lib/plot
     github.com/tsenart/vegeta/v12/lib/prom
    -# github.com/vbatts/tar-split v0.11.2
    -## explicit; go 1.15
    +# github.com/vbatts/tar-split v0.11.6
    +## explicit; go 1.17
     github.com/vbatts/tar-split/archive/tar
    +# github.com/x448/float16 v0.8.4
    +## explicit; go 1.11
    +github.com/x448/float16
     # go.opencensus.io v0.24.0
     ## explicit; go 1.13
     go.opencensus.io
    @@ -540,12 +553,18 @@ go.opencensus.io/trace
     go.opencensus.io/trace/internal
     go.opencensus.io/trace/propagation
     go.opencensus.io/trace/tracestate
    -# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0
    -## explicit; go 1.20
    +# go.opentelemetry.io/auto/sdk v1.1.0
    +## explicit; go 1.22.0
    +go.opentelemetry.io/auto/sdk
    +go.opentelemetry.io/auto/sdk/internal/telemetry
    +# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0
    +## explicit; go 1.22.0
     go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
    +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request
    +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv
     go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil
    -# go.opentelemetry.io/otel v1.24.0
    -## explicit; go 1.20
    +# go.opentelemetry.io/otel v1.33.0
    +## explicit; go 1.22.0
     go.opentelemetry.io/otel
     go.opentelemetry.io/otel/attribute
     go.opentelemetry.io/otel/baggage
    @@ -556,19 +575,22 @@ go.opentelemetry.io/otel/internal/baggage
     go.opentelemetry.io/otel/internal/global
     go.opentelemetry.io/otel/propagation
     go.opentelemetry.io/otel/semconv/v1.20.0
    -# go.opentelemetry.io/otel/metric v1.24.0
    -## explicit; go 1.20
    +go.opentelemetry.io/otel/semconv/v1.26.0
    +# go.opentelemetry.io/otel/metric v1.33.0
    +## explicit; go 1.22.0
     go.opentelemetry.io/otel/metric
     go.opentelemetry.io/otel/metric/embedded
    -# go.opentelemetry.io/otel/trace v1.24.0
    -## explicit; go 1.20
    +go.opentelemetry.io/otel/metric/noop
    +# go.opentelemetry.io/otel/trace v1.33.0
    +## explicit; go 1.22.0
     go.opentelemetry.io/otel/trace
     go.opentelemetry.io/otel/trace/embedded
    -# go.uber.org/atomic v1.10.0
    +go.opentelemetry.io/otel/trace/noop
    +# go.uber.org/atomic v1.11.0
     ## explicit; go 1.18
     go.uber.org/atomic
    -# go.uber.org/automaxprocs v1.5.3
    -## explicit; go 1.18
    +# go.uber.org/automaxprocs v1.6.0
    +## explicit; go 1.20
     go.uber.org/automaxprocs/internal/cgroups
     go.uber.org/automaxprocs/internal/runtime
     go.uber.org/automaxprocs/maxprocs
    @@ -588,8 +610,8 @@ go.uber.org/zap/internal/stacktrace
     go.uber.org/zap/internal/ztest
     go.uber.org/zap/zapcore
     go.uber.org/zap/zaptest
    -# golang.org/x/crypto v0.32.0
    -## explicit; go 1.20
    +# golang.org/x/crypto v0.37.0
    +## explicit; go 1.23.0
     golang.org/x/crypto/chacha20
     golang.org/x/crypto/chacha20poly1305
     golang.org/x/crypto/cryptobyte
    @@ -599,22 +621,23 @@ golang.org/x/crypto/internal/alias
     golang.org/x/crypto/internal/poly1305
     golang.org/x/crypto/pkcs12
     golang.org/x/crypto/pkcs12/internal/rc2
    -# golang.org/x/mod v0.19.0
    -## explicit; go 1.18
    +# golang.org/x/mod v0.22.0
    +## explicit; go 1.22.0
     golang.org/x/mod/internal/lazyregexp
     golang.org/x/mod/module
     golang.org/x/mod/semver
    -# golang.org/x/net v0.34.0
    -## explicit; go 1.18
    +# golang.org/x/net v0.39.0
    +## explicit; go 1.23.0
     golang.org/x/net/http/httpguts
     golang.org/x/net/http2
     golang.org/x/net/http2/h2c
     golang.org/x/net/http2/hpack
     golang.org/x/net/idna
    +golang.org/x/net/internal/httpcommon
     golang.org/x/net/internal/timeseries
     golang.org/x/net/publicsuffix
     golang.org/x/net/trace
    -# golang.org/x/oauth2 v0.21.0
    +# golang.org/x/oauth2 v0.25.0
     ## explicit; go 1.18
     golang.org/x/oauth2
     golang.org/x/oauth2/authhandler
    @@ -626,36 +649,43 @@ golang.org/x/oauth2/google/internal/stsexchange
     golang.org/x/oauth2/internal
     golang.org/x/oauth2/jws
     golang.org/x/oauth2/jwt
    -# golang.org/x/sync v0.10.0
    -## explicit; go 1.18
    +# golang.org/x/sync v0.13.0
    +## explicit; go 1.23.0
     golang.org/x/sync/errgroup
     golang.org/x/sync/semaphore
     golang.org/x/sync/singleflight
    -# golang.org/x/sys v0.29.0
    -## explicit; go 1.18
    +# golang.org/x/sys v0.32.0
    +## explicit; go 1.23.0
     golang.org/x/sys/cpu
    -golang.org/x/sys/execabs
     golang.org/x/sys/plan9
     golang.org/x/sys/unix
     golang.org/x/sys/windows
    -# golang.org/x/term v0.28.0
    -## explicit; go 1.18
    +golang.org/x/sys/windows/registry
    +# golang.org/x/term v0.31.0
    +## explicit; go 1.23.0
     golang.org/x/term
    -# golang.org/x/text v0.21.0
    -## explicit; go 1.18
    +# golang.org/x/text v0.24.0
    +## explicit; go 1.23.0
    +golang.org/x/text/cases
    +golang.org/x/text/internal
    +golang.org/x/text/internal/language
    +golang.org/x/text/internal/language/compact
    +golang.org/x/text/internal/tag
    +golang.org/x/text/language
     golang.org/x/text/secure/bidirule
     golang.org/x/text/transform
     golang.org/x/text/unicode/bidi
     golang.org/x/text/unicode/norm
    -# golang.org/x/time v0.5.0
    +# golang.org/x/time v0.8.0
     ## explicit; go 1.18
     golang.org/x/time/rate
    -# golang.org/x/tools v0.23.0
    -## explicit; go 1.19
    +# golang.org/x/tools v0.29.0
    +## explicit; go 1.22.0
     golang.org/x/tools/go/ast/astutil
     golang.org/x/tools/go/gcexportdata
     golang.org/x/tools/go/packages
     golang.org/x/tools/go/types/objectpath
    +golang.org/x/tools/go/types/typeutil
     golang.org/x/tools/imports
     golang.org/x/tools/internal/aliases
     golang.org/x/tools/internal/event
    @@ -666,17 +696,18 @@ golang.org/x/tools/internal/gcimporter
     golang.org/x/tools/internal/gocommand
     golang.org/x/tools/internal/gopathwalk
     golang.org/x/tools/internal/imports
    +golang.org/x/tools/internal/modindex
     golang.org/x/tools/internal/packagesinternal
     golang.org/x/tools/internal/pkgbits
     golang.org/x/tools/internal/stdlib
    -golang.org/x/tools/internal/tokeninternal
    +golang.org/x/tools/internal/typeparams
     golang.org/x/tools/internal/typesinternal
     golang.org/x/tools/internal/versions
     # gomodules.xyz/jsonpatch/v2 v2.4.0
     ## explicit; go 1.20
     gomodules.xyz/jsonpatch/v2
    -# google.golang.org/api v0.183.0
    -## explicit; go 1.20
    +# google.golang.org/api v0.198.0
    +## explicit; go 1.21
     google.golang.org/api/dns/v1
     google.golang.org/api/googleapi
     google.golang.org/api/googleapi/transport
    @@ -690,16 +721,16 @@ google.golang.org/api/option/internaloption
     google.golang.org/api/support/bundler
     google.golang.org/api/transport/http
     google.golang.org/api/transport/http/internal/propagation
    -# google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117
    -## explicit; go 1.20
    +# google.golang.org/genproto/googleapis/api v0.0.0-20241219192143-6b3ec007d9bb
    +## explicit; go 1.21
     google.golang.org/genproto/googleapis/api/httpbody
    -# google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157
    -## explicit; go 1.20
    +# google.golang.org/genproto/googleapis/rpc v0.0.0-20241219192143-6b3ec007d9bb
    +## explicit; go 1.21
     google.golang.org/genproto/googleapis/rpc/code
     google.golang.org/genproto/googleapis/rpc/errdetails
     google.golang.org/genproto/googleapis/rpc/status
    -# google.golang.org/grpc v1.65.0
    -## explicit; go 1.21
    +# google.golang.org/grpc v1.69.2
    +## explicit; go 1.22
     google.golang.org/grpc
     google.golang.org/grpc/attributes
     google.golang.org/grpc/backoff
    @@ -707,6 +738,8 @@ google.golang.org/grpc/balancer
     google.golang.org/grpc/balancer/base
     google.golang.org/grpc/balancer/grpclb/state
     google.golang.org/grpc/balancer/pickfirst
    +google.golang.org/grpc/balancer/pickfirst/internal
    +google.golang.org/grpc/balancer/pickfirst/pickfirstleaf
     google.golang.org/grpc/balancer/roundrobin
     google.golang.org/grpc/binarylog/grpc_binarylog_v1
     google.golang.org/grpc/channelz
    @@ -716,7 +749,9 @@ google.golang.org/grpc/credentials
     google.golang.org/grpc/credentials/insecure
     google.golang.org/grpc/encoding
     google.golang.org/grpc/encoding/proto
    +google.golang.org/grpc/experimental/stats
     google.golang.org/grpc/grpclog
    +google.golang.org/grpc/grpclog/internal
     google.golang.org/grpc/health
     google.golang.org/grpc/health/grpc_health_v1
     google.golang.org/grpc/internal
    @@ -740,11 +775,13 @@ google.golang.org/grpc/internal/resolver/dns/internal
     google.golang.org/grpc/internal/resolver/passthrough
     google.golang.org/grpc/internal/resolver/unix
     google.golang.org/grpc/internal/serviceconfig
    +google.golang.org/grpc/internal/stats
     google.golang.org/grpc/internal/status
     google.golang.org/grpc/internal/syscall
     google.golang.org/grpc/internal/transport
     google.golang.org/grpc/internal/transport/networktype
     google.golang.org/grpc/keepalive
    +google.golang.org/grpc/mem
     google.golang.org/grpc/metadata
     google.golang.org/grpc/peer
     google.golang.org/grpc/resolver
    @@ -753,8 +790,8 @@ google.golang.org/grpc/serviceconfig
     google.golang.org/grpc/stats
     google.golang.org/grpc/status
     google.golang.org/grpc/tap
    -# google.golang.org/protobuf v1.34.1
    -## explicit; go 1.17
    +# google.golang.org/protobuf v1.36.3
    +## explicit; go 1.21
     google.golang.org/protobuf/encoding/protodelim
     google.golang.org/protobuf/encoding/protojson
     google.golang.org/protobuf/encoding/prototext
    @@ -777,6 +814,7 @@ google.golang.org/protobuf/internal/genid
     google.golang.org/protobuf/internal/impl
     google.golang.org/protobuf/internal/order
     google.golang.org/protobuf/internal/pragma
    +google.golang.org/protobuf/internal/protolazy
     google.golang.org/protobuf/internal/set
     google.golang.org/protobuf/internal/strs
     google.golang.org/protobuf/internal/version
    @@ -795,6 +833,9 @@ google.golang.org/protobuf/types/known/fieldmaskpb
     google.golang.org/protobuf/types/known/structpb
     google.golang.org/protobuf/types/known/timestamppb
     google.golang.org/protobuf/types/known/wrapperspb
    +# gopkg.in/evanphx/json-patch.v4 v4.12.0
    +## explicit
    +gopkg.in/evanphx/json-patch.v4
     # gopkg.in/inf.v0 v0.9.1
     ## explicit
     gopkg.in/inf.v0
    @@ -804,12 +845,13 @@ gopkg.in/yaml.v2
     # gopkg.in/yaml.v3 v3.0.1
     ## explicit
     gopkg.in/yaml.v3
    -# k8s.io/api v0.29.2
    -## explicit; go 1.21
    +# k8s.io/api v0.32.0
    +## explicit; go 1.23.0
     k8s.io/api/admission/v1
     k8s.io/api/admissionregistration/v1
     k8s.io/api/admissionregistration/v1alpha1
     k8s.io/api/admissionregistration/v1beta1
    +k8s.io/api/apidiscovery/v2
     k8s.io/api/apidiscovery/v2beta1
     k8s.io/api/apiserverinternal/v1alpha1
     k8s.io/api/apps/v1
    @@ -830,6 +872,7 @@ k8s.io/api/certificates/v1
     k8s.io/api/certificates/v1alpha1
     k8s.io/api/certificates/v1beta1
     k8s.io/api/coordination/v1
    +k8s.io/api/coordination/v1alpha2
     k8s.io/api/coordination/v1beta1
     k8s.io/api/core/v1
     k8s.io/api/discovery/v1
    @@ -841,6 +884,7 @@ k8s.io/api/flowcontrol/v1
     k8s.io/api/flowcontrol/v1beta1
     k8s.io/api/flowcontrol/v1beta2
     k8s.io/api/flowcontrol/v1beta3
    +k8s.io/api/imagepolicy/v1alpha1
     k8s.io/api/networking/v1
     k8s.io/api/networking/v1alpha1
     k8s.io/api/networking/v1beta1
    @@ -852,15 +896,17 @@ k8s.io/api/policy/v1beta1
     k8s.io/api/rbac/v1
     k8s.io/api/rbac/v1alpha1
     k8s.io/api/rbac/v1beta1
    -k8s.io/api/resource/v1alpha2
    +k8s.io/api/resource/v1alpha3
    +k8s.io/api/resource/v1beta1
     k8s.io/api/scheduling/v1
     k8s.io/api/scheduling/v1alpha1
     k8s.io/api/scheduling/v1beta1
     k8s.io/api/storage/v1
     k8s.io/api/storage/v1alpha1
     k8s.io/api/storage/v1beta1
    -# k8s.io/apiextensions-apiserver v0.29.2
    -## explicit; go 1.21
    +k8s.io/api/storagemigration/v1alpha1
    +# k8s.io/apiextensions-apiserver v0.32.0
    +## explicit; go 1.23.0
     k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
     k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1
     k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1
    @@ -870,18 +916,20 @@ k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset
     k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme
     k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1
     k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1
    -# k8s.io/apimachinery v0.29.2
    -## explicit; go 1.21
    +# k8s.io/apimachinery v0.32.0
    +## explicit; go 1.23.0
     k8s.io/apimachinery/pkg/api/apitesting
     k8s.io/apimachinery/pkg/api/apitesting/fuzzer
     k8s.io/apimachinery/pkg/api/apitesting/roundtrip
     k8s.io/apimachinery/pkg/api/equality
     k8s.io/apimachinery/pkg/api/errors
     k8s.io/apimachinery/pkg/api/meta
    +k8s.io/apimachinery/pkg/api/meta/testrestmapper
     k8s.io/apimachinery/pkg/api/resource
     k8s.io/apimachinery/pkg/api/validation
     k8s.io/apimachinery/pkg/apis/meta/fuzzer
     k8s.io/apimachinery/pkg/apis/meta/internalversion
    +k8s.io/apimachinery/pkg/apis/meta/internalversion/validation
     k8s.io/apimachinery/pkg/apis/meta/v1
     k8s.io/apimachinery/pkg/apis/meta/v1/unstructured
     k8s.io/apimachinery/pkg/apis/meta/v1/validation
    @@ -893,6 +941,9 @@ k8s.io/apimachinery/pkg/labels
     k8s.io/apimachinery/pkg/runtime
     k8s.io/apimachinery/pkg/runtime/schema
     k8s.io/apimachinery/pkg/runtime/serializer
    +k8s.io/apimachinery/pkg/runtime/serializer/cbor
    +k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct
    +k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes
     k8s.io/apimachinery/pkg/runtime/serializer/json
     k8s.io/apimachinery/pkg/runtime/serializer/protobuf
     k8s.io/apimachinery/pkg/runtime/serializer/recognizer
    @@ -924,8 +975,9 @@ k8s.io/apimachinery/pkg/version
     k8s.io/apimachinery/pkg/watch
     k8s.io/apimachinery/third_party/forked/golang/json
     k8s.io/apimachinery/third_party/forked/golang/reflect
    -# k8s.io/client-go v0.29.2
    -## explicit; go 1.21
    +# k8s.io/client-go v0.32.0
    +## explicit; go 1.23.0
    +k8s.io/client-go/applyconfigurations
     k8s.io/client-go/applyconfigurations/admissionregistration/v1
     k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1
     k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1
    @@ -943,6 +995,7 @@ k8s.io/client-go/applyconfigurations/certificates/v1
     k8s.io/client-go/applyconfigurations/certificates/v1alpha1
     k8s.io/client-go/applyconfigurations/certificates/v1beta1
     k8s.io/client-go/applyconfigurations/coordination/v1
    +k8s.io/client-go/applyconfigurations/coordination/v1alpha2
     k8s.io/client-go/applyconfigurations/coordination/v1beta1
     k8s.io/client-go/applyconfigurations/core/v1
     k8s.io/client-go/applyconfigurations/discovery/v1
    @@ -954,6 +1007,7 @@ k8s.io/client-go/applyconfigurations/flowcontrol/v1
     k8s.io/client-go/applyconfigurations/flowcontrol/v1beta1
     k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2
     k8s.io/client-go/applyconfigurations/flowcontrol/v1beta3
    +k8s.io/client-go/applyconfigurations/imagepolicy/v1alpha1
     k8s.io/client-go/applyconfigurations/internal
     k8s.io/client-go/applyconfigurations/meta/v1
     k8s.io/client-go/applyconfigurations/networking/v1
    @@ -967,17 +1021,21 @@ k8s.io/client-go/applyconfigurations/policy/v1beta1
     k8s.io/client-go/applyconfigurations/rbac/v1
     k8s.io/client-go/applyconfigurations/rbac/v1alpha1
     k8s.io/client-go/applyconfigurations/rbac/v1beta1
    -k8s.io/client-go/applyconfigurations/resource/v1alpha2
    +k8s.io/client-go/applyconfigurations/resource/v1alpha3
    +k8s.io/client-go/applyconfigurations/resource/v1beta1
     k8s.io/client-go/applyconfigurations/scheduling/v1
     k8s.io/client-go/applyconfigurations/scheduling/v1alpha1
     k8s.io/client-go/applyconfigurations/scheduling/v1beta1
     k8s.io/client-go/applyconfigurations/storage/v1
     k8s.io/client-go/applyconfigurations/storage/v1alpha1
     k8s.io/client-go/applyconfigurations/storage/v1beta1
    +k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
     k8s.io/client-go/discovery
     k8s.io/client-go/discovery/fake
     k8s.io/client-go/dynamic
     k8s.io/client-go/dynamic/fake
    +k8s.io/client-go/features
    +k8s.io/client-go/gentype
     k8s.io/client-go/informers
     k8s.io/client-go/informers/admissionregistration
     k8s.io/client-go/informers/admissionregistration/v1
    @@ -1003,6 +1061,7 @@ k8s.io/client-go/informers/certificates/v1alpha1
     k8s.io/client-go/informers/certificates/v1beta1
     k8s.io/client-go/informers/coordination
     k8s.io/client-go/informers/coordination/v1
    +k8s.io/client-go/informers/coordination/v1alpha2
     k8s.io/client-go/informers/coordination/v1beta1
     k8s.io/client-go/informers/core
     k8s.io/client-go/informers/core/v1
    @@ -1036,7 +1095,8 @@ k8s.io/client-go/informers/rbac/v1
     k8s.io/client-go/informers/rbac/v1alpha1
     k8s.io/client-go/informers/rbac/v1beta1
     k8s.io/client-go/informers/resource
    -k8s.io/client-go/informers/resource/v1alpha2
    +k8s.io/client-go/informers/resource/v1alpha3
    +k8s.io/client-go/informers/resource/v1beta1
     k8s.io/client-go/informers/scheduling
     k8s.io/client-go/informers/scheduling/v1
     k8s.io/client-go/informers/scheduling/v1alpha1
    @@ -1045,6 +1105,8 @@ k8s.io/client-go/informers/storage
     k8s.io/client-go/informers/storage/v1
     k8s.io/client-go/informers/storage/v1alpha1
     k8s.io/client-go/informers/storage/v1beta1
    +k8s.io/client-go/informers/storagemigration
    +k8s.io/client-go/informers/storagemigration/v1alpha1
     k8s.io/client-go/kubernetes
     k8s.io/client-go/kubernetes/fake
     k8s.io/client-go/kubernetes/scheme
    @@ -1092,6 +1154,8 @@ k8s.io/client-go/kubernetes/typed/certificates/v1beta1
     k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake
     k8s.io/client-go/kubernetes/typed/coordination/v1
     k8s.io/client-go/kubernetes/typed/coordination/v1/fake
    +k8s.io/client-go/kubernetes/typed/coordination/v1alpha2
    +k8s.io/client-go/kubernetes/typed/coordination/v1alpha2/fake
     k8s.io/client-go/kubernetes/typed/coordination/v1beta1
     k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake
     k8s.io/client-go/kubernetes/typed/core/v1
    @@ -1136,8 +1200,10 @@ k8s.io/client-go/kubernetes/typed/rbac/v1alpha1
     k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake
     k8s.io/client-go/kubernetes/typed/rbac/v1beta1
     k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake
    -k8s.io/client-go/kubernetes/typed/resource/v1alpha2
    -k8s.io/client-go/kubernetes/typed/resource/v1alpha2/fake
    +k8s.io/client-go/kubernetes/typed/resource/v1alpha3
    +k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake
    +k8s.io/client-go/kubernetes/typed/resource/v1beta1
    +k8s.io/client-go/kubernetes/typed/resource/v1beta1/fake
     k8s.io/client-go/kubernetes/typed/scheduling/v1
     k8s.io/client-go/kubernetes/typed/scheduling/v1/fake
     k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1
    @@ -1150,6 +1216,9 @@ k8s.io/client-go/kubernetes/typed/storage/v1alpha1
     k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake
     k8s.io/client-go/kubernetes/typed/storage/v1beta1
     k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake
    +k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
    +k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake
    +k8s.io/client-go/listers
     k8s.io/client-go/listers/admissionregistration/v1
     k8s.io/client-go/listers/admissionregistration/v1alpha1
     k8s.io/client-go/listers/admissionregistration/v1beta1
    @@ -1167,6 +1236,7 @@ k8s.io/client-go/listers/certificates/v1
     k8s.io/client-go/listers/certificates/v1alpha1
     k8s.io/client-go/listers/certificates/v1beta1
     k8s.io/client-go/listers/coordination/v1
    +k8s.io/client-go/listers/coordination/v1alpha2
     k8s.io/client-go/listers/coordination/v1beta1
     k8s.io/client-go/listers/core/v1
     k8s.io/client-go/listers/discovery/v1
    @@ -1189,13 +1259,15 @@ k8s.io/client-go/listers/policy/v1beta1
     k8s.io/client-go/listers/rbac/v1
     k8s.io/client-go/listers/rbac/v1alpha1
     k8s.io/client-go/listers/rbac/v1beta1
    -k8s.io/client-go/listers/resource/v1alpha2
    +k8s.io/client-go/listers/resource/v1alpha3
    +k8s.io/client-go/listers/resource/v1beta1
     k8s.io/client-go/listers/scheduling/v1
     k8s.io/client-go/listers/scheduling/v1alpha1
     k8s.io/client-go/listers/scheduling/v1beta1
     k8s.io/client-go/listers/storage/v1
     k8s.io/client-go/listers/storage/v1alpha1
     k8s.io/client-go/listers/storage/v1beta1
    +k8s.io/client-go/listers/storagemigration/v1alpha1
     k8s.io/client-go/openapi
     k8s.io/client-go/pkg/apis/clientauthentication
     k8s.io/client-go/pkg/apis/clientauthentication/install
    @@ -1225,15 +1297,18 @@ k8s.io/client-go/tools/record
     k8s.io/client-go/tools/record/util
     k8s.io/client-go/tools/reference
     k8s.io/client-go/transport
    +k8s.io/client-go/util/apply
     k8s.io/client-go/util/cert
     k8s.io/client-go/util/connrotation
    +k8s.io/client-go/util/consistencydetector
     k8s.io/client-go/util/flowcontrol
     k8s.io/client-go/util/homedir
     k8s.io/client-go/util/keyutil
     k8s.io/client-go/util/retry
    +k8s.io/client-go/util/watchlist
     k8s.io/client-go/util/workqueue
    -# k8s.io/code-generator v0.29.2
    -## explicit; go 1.21
    +# k8s.io/code-generator v0.32.0
    +## explicit; go 1.23.0
     k8s.io/code-generator
     k8s.io/code-generator/cmd/applyconfiguration-gen
     k8s.io/code-generator/cmd/applyconfiguration-gen/args
    @@ -1244,48 +1319,48 @@ k8s.io/code-generator/cmd/client-gen/generators
     k8s.io/code-generator/cmd/client-gen/generators/fake
     k8s.io/code-generator/cmd/client-gen/generators/scheme
     k8s.io/code-generator/cmd/client-gen/generators/util
    -k8s.io/code-generator/cmd/client-gen/path
     k8s.io/code-generator/cmd/client-gen/types
     k8s.io/code-generator/cmd/conversion-gen
     k8s.io/code-generator/cmd/conversion-gen/args
     k8s.io/code-generator/cmd/conversion-gen/generators
     k8s.io/code-generator/cmd/deepcopy-gen
     k8s.io/code-generator/cmd/deepcopy-gen/args
    +k8s.io/code-generator/cmd/deepcopy-gen/generators
     k8s.io/code-generator/cmd/defaulter-gen
     k8s.io/code-generator/cmd/defaulter-gen/args
    +k8s.io/code-generator/cmd/defaulter-gen/generators
     k8s.io/code-generator/cmd/go-to-protobuf
     k8s.io/code-generator/cmd/go-to-protobuf/protobuf
    -k8s.io/code-generator/cmd/import-boss
     k8s.io/code-generator/cmd/informer-gen
     k8s.io/code-generator/cmd/informer-gen/args
     k8s.io/code-generator/cmd/informer-gen/generators
     k8s.io/code-generator/cmd/lister-gen
     k8s.io/code-generator/cmd/lister-gen/args
     k8s.io/code-generator/cmd/lister-gen/generators
    -k8s.io/code-generator/cmd/openapi-gen
     k8s.io/code-generator/cmd/register-gen
     k8s.io/code-generator/cmd/register-gen/args
     k8s.io/code-generator/cmd/register-gen/generators
    -k8s.io/code-generator/cmd/set-gen
     k8s.io/code-generator/pkg/namer
     k8s.io/code-generator/pkg/util
     k8s.io/code-generator/third_party/forked/golang/reflect
     # k8s.io/gengo v0.0.0-20240129211411-f967bbeff4b4
     ## explicit; go 1.13
     k8s.io/gengo/args
    -k8s.io/gengo/examples/deepcopy-gen/generators
    -k8s.io/gengo/examples/defaulter-gen/generators
    -k8s.io/gengo/examples/import-boss/generators
    -k8s.io/gengo/examples/set-gen/generators
    -k8s.io/gengo/examples/set-gen/sets
     k8s.io/gengo/generator
     k8s.io/gengo/namer
     k8s.io/gengo/parser
     k8s.io/gengo/types
    +# k8s.io/gengo/v2 v2.0.0-20240911193312-2b36238f13e9
    +## explicit; go 1.20
    +k8s.io/gengo/v2
    +k8s.io/gengo/v2/generator
    +k8s.io/gengo/v2/namer
    +k8s.io/gengo/v2/parser
    +k8s.io/gengo/v2/types
     # k8s.io/klog v1.0.0
     ## explicit; go 1.12
     k8s.io/klog
    -# k8s.io/klog/v2 v2.120.1
    +# k8s.io/klog/v2 v2.130.1
     ## explicit; go 1.18
     k8s.io/klog/v2
     k8s.io/klog/v2/internal/buffer
    @@ -1294,8 +1369,8 @@ k8s.io/klog/v2/internal/dbg
     k8s.io/klog/v2/internal/serialize
     k8s.io/klog/v2/internal/severity
     k8s.io/klog/v2/internal/sloghandler
    -# k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00
    -## explicit; go 1.19
    +# k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7
    +## explicit; go 1.21
     k8s.io/kube-openapi/cmd/openapi-gen
     k8s.io/kube-openapi/cmd/openapi-gen/args
     k8s.io/kube-openapi/pkg/cached
    @@ -1310,19 +1385,17 @@ k8s.io/kube-openapi/pkg/spec3
     k8s.io/kube-openapi/pkg/util/proto
     k8s.io/kube-openapi/pkg/util/sets
     k8s.io/kube-openapi/pkg/validation/spec
    -# k8s.io/utils v0.0.0-20240102154912-e7106e64919e
    +# k8s.io/utils v0.0.0-20241210054802-24370beab758
     ## explicit; go 1.18
     k8s.io/utils/buffer
     k8s.io/utils/clock
     k8s.io/utils/clock/testing
    -k8s.io/utils/integer
     k8s.io/utils/internal/third_party/forked/golang/golang-lru
     k8s.io/utils/internal/third_party/forked/golang/net
     k8s.io/utils/lru
     k8s.io/utils/net
     k8s.io/utils/pointer
     k8s.io/utils/ptr
    -k8s.io/utils/strings/slices
     k8s.io/utils/trace
     # knative.dev/caching v0.0.0-20240716132144-989f54c83776
     ## explicit; go 1.22
    @@ -1504,14 +1577,14 @@ knative.dev/pkg/webhook/resourcesemantics
     knative.dev/pkg/webhook/resourcesemantics/defaulting
     knative.dev/pkg/webhook/resourcesemantics/validation
     knative.dev/pkg/websocket
    -# sigs.k8s.io/gateway-api v0.8.0
    -## explicit; go 1.20
    -sigs.k8s.io/gateway-api/apis/v1beta1
    -# sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
    -## explicit; go 1.18
    +# sigs.k8s.io/gateway-api v1.1.0
    +## explicit; go 1.22.0
    +sigs.k8s.io/gateway-api/apis/v1
    +# sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8
    +## explicit; go 1.23
     sigs.k8s.io/json
     sigs.k8s.io/json/internal/golang/encoding/json
    -# sigs.k8s.io/structured-merge-diff/v4 v4.4.1
    +# sigs.k8s.io/structured-merge-diff/v4 v4.5.0
     ## explicit; go 1.13
     sigs.k8s.io/structured-merge-diff/v4/fieldpath
     sigs.k8s.io/structured-merge-diff/v4/merge
    diff --git a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/doc.go b/vendor/sigs.k8s.io/gateway-api/apis/v1/doc.go
    similarity index 83%
    rename from vendor/sigs.k8s.io/gateway-api/apis/v1beta1/doc.go
    rename to vendor/sigs.k8s.io/gateway-api/apis/v1/doc.go
    index 328100aee812..f2c7aa2b5515 100644
    --- a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/doc.go
    +++ b/vendor/sigs.k8s.io/gateway-api/apis/v1/doc.go
    @@ -14,9 +14,10 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -// Package v1beta1 contains API Schema definitions for the
    -// gateway.networking.k8s.io API group.
    +// Package v1 contains API Schema definitions for the gateway.networking.k8s.io
    +// API group.
     //
    +// +k8s:openapi-gen=true
     // +kubebuilder:object:generate=true
     // +groupName=gateway.networking.k8s.io
    -package v1beta1
    +package v1
    diff --git a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/gateway_types.go b/vendor/sigs.k8s.io/gateway-api/apis/v1/gateway_types.go
    similarity index 70%
    rename from vendor/sigs.k8s.io/gateway-api/apis/v1beta1/gateway_types.go
    rename to vendor/sigs.k8s.io/gateway-api/apis/v1/gateway_types.go
    index 033c1c2a16a7..caa5e96bf3a6 100644
    --- a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/gateway_types.go
    +++ b/vendor/sigs.k8s.io/gateway-api/apis/v1/gateway_types.go
    @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -package v1beta1
    +package v1
     
     import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    @@ -23,8 +23,8 @@ import (
     // +genclient
     // +kubebuilder:object:root=true
     // +kubebuilder:resource:categories=gateway-api,shortName=gtw
    -// +kubebuilder:storageversion
     // +kubebuilder:subresource:status
    +// +kubebuilder:storageversion
     // +kubebuilder:printcolumn:name="Class",type=string,JSONPath=`.spec.gatewayClassName`
     // +kubebuilder:printcolumn:name="Address",type=string,JSONPath=`.status.addresses[*].value`
     // +kubebuilder:printcolumn:name="Programmed",type=string,JSONPath=`.status.conditions[?(@.type=="Programmed")].status`
    @@ -57,8 +57,8 @@ type GatewayList struct {
     // GatewaySpec defines the desired state of Gateway.
     //
     // Not all possible combinations of options specified in the Spec are
    -// valid. Some invalid configurations can be caught synchronously via a
    -// webhook, but there are many cases that will require asynchronous
    +// valid. Some invalid configurations can be caught synchronously via CRD
    +// validation, but there are many cases that will require asynchronous
     // signaling via the GatewayStatus block.
     type GatewaySpec struct {
     	// GatewayClassName used for this Gateway. This is the name of a
    @@ -69,54 +69,117 @@ type GatewaySpec struct {
     	// logical endpoints that are bound on this Gateway's addresses.
     	// At least one Listener MUST be specified.
     	//
    -	// Each listener in a Gateway must have a unique combination of Hostname,
    -	// Port, and Protocol.
    -	//
    -	// Within the HTTP Conformance Profile, the below combinations of port and
    -	// protocol are considered Core and MUST be supported:
    -	//
    -	// 1. Port: 80, Protocol: HTTP
    -	// 2. Port: 443, Protocol: HTTPS
    -	//
    -	// Within the TLS Conformance Profile, the below combinations of port and
    -	// protocol are considered Core and MUST be supported:
    -	//
    -	// 1. Port: 443, Protocol: TLS
    -	//
    -	// Port and protocol combinations not listed above are considered Extended.
    -	//
    -	// An implementation MAY group Listeners by Port and then collapse each
    -	// group of Listeners into a single Listener if the implementation
    -	// determines that the Listeners in the group are "compatible". An
    -	// implementation MAY also group together and collapse compatible
    -	// Listeners belonging to different Gateways.
    -	//
    -	// For example, an implementation might consider Listeners to be
    -	// compatible with each other if all of the following conditions are
    -	// met:
    -	//
    -	// 1. Either each Listener within the group specifies the "HTTP"
    -	//    Protocol or each Listener within the group specifies either
    -	//    the "HTTPS" or "TLS" Protocol.
    -	//
    -	// 2. Each Listener within the group specifies a Hostname that is unique
    -	//    within the group.
    -	//
    -	// 3. As a special case, one Listener within a group may omit Hostname,
    -	//    in which case this Listener matches when no other Listener
    -	//    matches.
    -	//
    -	// If the implementation does collapse compatible Listeners, the
    -	// hostname provided in the incoming client request MUST be
    -	// matched to a Listener to find the correct set of Routes.
    -	// The incoming hostname MUST be matched using the Hostname
    -	// field for each Listener in order of most to least specific.
    -	// That is, exact matches must be processed before wildcard
    -	// matches.
    -	//
    -	// If this field specifies multiple Listeners that have the same
    -	// Port value but are not compatible, the implementation must raise
    -	// a "Conflicted" condition in the Listener status.
    +	// Each Listener in a set of Listeners (for example, in a single Gateway)
    +	// MUST be _distinct_, in that a traffic flow MUST be able to be assigned to
    +	// exactly one listener. (This section uses "set of Listeners" rather than
    +	// "Listeners in a single Gateway" because implementations MAY merge configuration
    +	// from multiple Gateways onto a single data plane, and these rules _also_
    +	// apply in that case).
    +	//
    +	// Practically, this means that each listener in a set MUST have a unique
    +	// combination of Port, Protocol, and, if supported by the protocol, Hostname.
    +	//
    +	// Some combinations of port, protocol, and TLS settings are considered
    +	// Core support and MUST be supported by implementations based on their
    +	// targeted conformance profile:
    +	//
    +	// HTTP Profile
    +	//
    +	// 1. HTTPRoute, Port: 80, Protocol: HTTP
    +	// 2. HTTPRoute, Port: 443, Protocol: HTTPS, TLS Mode: Terminate, TLS keypair provided
    +	//
    +	// TLS Profile
    +	//
    +	// 1. TLSRoute, Port: 443, Protocol: TLS, TLS Mode: Passthrough
    +	//
    +	// "Distinct" Listeners have the following property:
    +	//
    +	// The implementation can match inbound requests to a single distinct
    +	// Listener. When multiple Listeners share values for fields (for
    +	// example, two Listeners with the same Port value), the implementation
    +	// can match requests to only one of the Listeners using other
    +	// Listener fields.
    +	//
    +	// For example, the following Listener scenarios are distinct:
    +	//
    +	// 1. Multiple Listeners with the same Port that all use the "HTTP"
    +	//    Protocol that all have unique Hostname values.
    +	// 2. Multiple Listeners with the same Port that use either the "HTTPS" or
    +	//    "TLS" Protocol that all have unique Hostname values.
    +	// 3. A mixture of "TCP" and "UDP" Protocol Listeners, where no Listener
    +	//    with the same Protocol has the same Port value.
    +	//
    +	// Some fields in the Listener struct have possible values that affect
    +	// whether the Listener is distinct. Hostname is particularly relevant
    +	// for HTTP or HTTPS protocols.
    +	//
    +	// When using the Hostname value to select between same-Port, same-Protocol
    +	// Listeners, the Hostname value must be different on each Listener for the
    +	// Listener to be distinct.
    +	//
    +	// When the Listeners are distinct based on Hostname, inbound request
    +	// hostnames MUST match from the most specific to least specific Hostname
    +	// values to choose the correct Listener and its associated set of Routes.
    +	//
    +	// Exact matches must be processed before wildcard matches, and wildcard
    +	// matches must be processed before fallback (empty Hostname value)
    +	// matches. For example, `"foo.example.com"` takes precedence over
    +	// `"*.example.com"`, and `"*.example.com"` takes precedence over `""`.
    +	//
    +	// Additionally, if there are multiple wildcard entries, more specific
    +	// wildcard entries must be processed before less specific wildcard entries.
    +	// For example, `"*.foo.example.com"` takes precedence over `"*.example.com"`.
    +	// The precise definition here is that the higher the number of dots in the
    +	// hostname to the right of the wildcard character, the higher the precedence.
    +	//
    +	// The wildcard character will match any number of characters _and dots_ to
    +	// the left, however, so `"*.example.com"` will match both
    +	// `"foo.bar.example.com"` _and_ `"bar.example.com"`.
    +	//
    +	// If a set of Listeners contains Listeners that are not distinct, then those
    +	// Listeners are Conflicted, and the implementation MUST set the "Conflicted"
    +	// condition in the Listener Status to "True".
    +	//
    +	// Implementations MAY choose to accept a Gateway with some Conflicted
    +	// Listeners only if they only accept the partial Listener set that contains
    +	// no Conflicted Listeners. To put this another way, implementations may
    +	// accept a partial Listener set only if they throw out *all* the conflicting
    +	// Listeners. No picking one of the conflicting listeners as the winner.
    +	// This also means that the Gateway must have at least one non-conflicting
    +	// Listener in this case, otherwise it violates the requirement that at
    +	// least one Listener must be present.
    +	//
    +	// The implementation MUST set a "ListenersNotValid" condition on the
    +	// Gateway Status when the Gateway contains Conflicted Listeners whether or
    +	// not they accept the Gateway. That Condition SHOULD clearly
    +	// indicate in the Message which Listeners are conflicted, and which are
    +	// Accepted. Additionally, the Listener status for those listeners SHOULD
    +	// indicate which Listeners are conflicted and not Accepted.
    +	//
    +	// A Gateway's Listeners are considered "compatible" if:
    +	//
    +	// 1. They are distinct.
    +	// 2. The implementation can serve them in compliance with the Addresses
    +	//    requirement that all Listeners are available on all assigned
    +	//    addresses.
    +	//
    +	// Compatible combinations in Extended support are expected to vary across
    +	// implementations. A combination that is compatible for one implementation
    +	// may not be compatible for another.
    +	//
    +	// For example, an implementation that cannot serve both TCP and UDP listeners
    +	// on the same address, or cannot mix HTTPS and generic TLS listens on the same port
    +	// would not consider those cases compatible, even though they are distinct.
    +	//
    +	// Note that requests SHOULD match at most one Listener. For example, if
    +	// Listeners are defined for "foo.example.com" and "*.example.com", a
    +	// request to "foo.example.com" SHOULD only be routed using routes attached
    +	// to the "foo.example.com" Listener (and not the "*.example.com" Listener).
    +	// This concept is known as "Listener Isolation". Implementations that do
    +	// not support Listener Isolation MUST clearly document this.
    +	//
    +	// Implementations MAY merge separate Gateways onto a single set of
    +	// Addresses if all Listeners across all Gateways are compatible.
     	//
     	// Support: Core
     	//
    @@ -124,11 +187,11 @@ type GatewaySpec struct {
     	// +listMapKey=name
     	// +kubebuilder:validation:MinItems=1
     	// +kubebuilder:validation:MaxItems=64
    -	// +kubebuilder:validation:XValidation:message="tls must be specified for protocols ['HTTPS', 'TLS']",rule="self.all(l, l.protocol in ['HTTPS', 'TLS'] ? has(l.tls) : true)"
     	// +kubebuilder:validation:XValidation:message="tls must not be specified for protocols ['HTTP', 'TCP', 'UDP']",rule="self.all(l, l.protocol in ['HTTP', 'TCP', 'UDP'] ? !has(l.tls) : true)"
    +	// +kubebuilder:validation:XValidation:message="tls mode must be Terminate for protocol HTTPS",rule="self.all(l, (l.protocol == 'HTTPS' && has(l.tls)) ? (l.tls.mode == '' || l.tls.mode == 'Terminate') : true)"
     	// +kubebuilder:validation:XValidation:message="hostname must not be specified for protocols ['TCP', 'UDP']",rule="self.all(l, l.protocol in ['TCP', 'UDP']  ? (!has(l.hostname) || l.hostname == '') : true)"
     	// +kubebuilder:validation:XValidation:message="Listener name must be unique within the Gateway",rule="self.all(l1, self.exists_one(l2, l1.name == l2.name))"
    -	// +kubebuilder:validation:XValidation:message="Combination of port, protocol and hostname must be unique for each listener",rule="self.all(l1, self.exists_one(l2, l1.port == l2.port && l1.protocol == l2.protocol && (has(l1.hostname) && has(l2.hostname) ? l1.hostname == l2.hostname : true)))"
    +	// +kubebuilder:validation:XValidation:message="Combination of port, protocol and hostname must be unique for each listener",rule="self.all(l1, self.exists_one(l2, l1.port == l2.port && l1.protocol == l2.protocol && (has(l1.hostname) && has(l2.hostname) ? l1.hostname == l2.hostname : !has(l1.hostname) && !has(l2.hostname))))"
     	Listeners []Listener `json:"listeners"`
     
     	// Addresses requested for this Gateway. This is optional and behavior can
    @@ -142,9 +205,6 @@ type GatewaySpec struct {
     	// other networking infrastructure, or some other address that traffic will
     	// be sent to.
     	//
    -	// The .listener.hostname field is used to route traffic that has already
    -	// arrived at the Gateway to the correct in-cluster destination.
    -	//
     	// If no Addresses are specified, the implementation MAY schedule the
     	// Gateway in an implementation-specific manner, assigning an appropriate
     	// set of Addresses.
    @@ -161,6 +221,14 @@ type GatewaySpec struct {
     	// +kubebuilder:validation:XValidation:message="IPAddress values must be unique",rule="self.all(a1, a1.type == 'IPAddress' ? self.exists_one(a2, a2.type == a1.type && a2.value == a1.value) : true )"
     	// +kubebuilder:validation:XValidation:message="Hostname values must be unique",rule="self.all(a1, a1.type == 'Hostname' ? self.exists_one(a2, a2.type == a1.type && a2.value == a1.value) : true )"
     	Addresses []GatewayAddress `json:"addresses,omitempty"`
    +
    +	// Infrastructure defines infrastructure level attributes about this Gateway instance.
    +	//
    +	// Support: Core
    +	//
    +	// 
    +	// +optional
    +	Infrastructure *GatewayInfrastructure `json:"infrastructure,omitempty"`
     }
     
     // Listener embodies the concept of a logical endpoint where a Gateway accepts
    @@ -308,18 +376,19 @@ const (
     
     // GatewayTLSConfig describes a TLS configuration.
     //
    -// +kubebuilder:validation:XValidation:message="certificateRefs must be specified when TLSModeType is Terminate",rule="self.mode == 'Terminate' ? size(self.certificateRefs) > 0 : true"
    +// +kubebuilder:validation:XValidation:message="certificateRefs or options must be specified when mode is Terminate",rule="self.mode == 'Terminate' ? size(self.certificateRefs) > 0 || size(self.options) > 0 : true"
     type GatewayTLSConfig struct {
     	// Mode defines the TLS behavior for the TLS session initiated by the client.
     	// There are two possible modes:
     	//
    -	// - Terminate: The TLS session between the downstream client
    -	//   and the Gateway is terminated at the Gateway. This mode requires
    -	//   certificateRefs to be set and contain at least one element.
    +	// - Terminate: The TLS session between the downstream client and the
    +	//   Gateway is terminated at the Gateway. This mode requires certificates
    +	//   to be specified in some way, such as populating the certificateRefs
    +	//   field.
     	// - Passthrough: The TLS session is NOT terminated by the Gateway. This
     	//   implies that the Gateway can't decipher the TLS stream except for
    -	//   the ClientHello message of the TLS protocol.
    -	//   CertificateRefs field is ignored in this mode.
    +	//   the ClientHello message of the TLS protocol. The certificateRefs field
    +	//   is ignored in this mode.
     	//
     	// Support: Core
     	//
    @@ -356,6 +425,18 @@ type GatewayTLSConfig struct {
     	// +kubebuilder:validation:MaxItems=64
     	CertificateRefs []SecretObjectReference `json:"certificateRefs,omitempty"`
     
    +	// FrontendValidation holds configuration information for validating the frontend (client).
    +	// Setting this field will require clients to send a client certificate
    +	// required for validation during the TLS handshake. In browsers this may result in a dialog appearing
    +	// that requests a user to specify the client certificate.
    +	// The maximum depth of a certificate chain accepted in verification is Implementation specific.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	// 
    +	FrontendValidation *FrontendTLSValidation `json:"frontendValidation,omitempty"`
    +
     	// Options are a list of key/value pairs to enable extended TLS
     	// configuration for each implementation. For example, configuring the
     	// minimum TLS version or supported cipher suites.
    @@ -390,6 +471,36 @@ const (
     	TLSModePassthrough TLSModeType = "Passthrough"
     )
     
    +// FrontendTLSValidation holds configuration information that can be used to validate
    +// the frontend initiating the TLS connection
    +type FrontendTLSValidation struct {
    +	// CACertificateRefs contains one or more references to
    +	// Kubernetes objects that contain TLS certificates of
    +	// the Certificate Authorities that can be used
    +	// as a trust anchor to validate the certificates presented by the client.
    +	//
    +	// A single CA certificate reference to a Kubernetes ConfigMap
    +	// has "Core" support.
    +	// Implementations MAY choose to support attaching multiple CA certificates to
    +	// a Listener, but this behavior is implementation-specific.
    +	//
    +	// Support: Core - A single reference to a Kubernetes ConfigMap
    +	// with the CA certificate in a key named `ca.crt`.
    +	//
    +	// Support: Implementation-specific (More than one reference, or other kinds
    +	// of resources).
    +	//
    +	// References to a resource in a different namespace are invalid UNLESS there
    +	// is a ReferenceGrant in the target namespace that allows the certificate
    +	// to be attached. If a ReferenceGrant does not allow this reference, the
    +	// "ResolvedRefs" condition MUST be set to False for this listener with the
    +	// "RefNotPermitted" reason.
    +	//
    +	// +kubebuilder:validation:MaxItems=8
    +	// +kubebuilder:validation:MinItems=1
    +	CACertificateRefs []ObjectReference `json:"caCertificateRefs,omitempty"`
    +}
    +
     // AllowedRoutes defines which Routes may be attached to this Listener.
     type AllowedRoutes struct {
     	// Namespaces indicates namespaces from which Routes may be attached to this
    @@ -493,7 +604,7 @@ type GatewayAddress struct {
     	Value string `json:"value"`
     }
     
    -// GatewayStatusAddress describes an address that is bound to a Gateway.
    +// GatewayStatusAddress describes a network address that is bound to a Gateway.
     //
     // +kubebuilder:validation:XValidation:message="Hostname value must only contain valid characters (matching ^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)",rule="self.type == 'Hostname' ? self.value.matches(r\"\"\"^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\"\"\"): true"
     type GatewayStatusAddress struct {
    @@ -515,10 +626,15 @@ type GatewayStatusAddress struct {
     
     // GatewayStatus defines the observed state of Gateway.
     type GatewayStatus struct {
    -	// Addresses lists the IP addresses that have actually been
    -	// bound to the Gateway. These addresses may differ from the
    -	// addresses in the Spec, e.g. if the Gateway automatically
    -	// assigns an address from a reserved pool.
    +	// Addresses lists the network addresses that have been bound to the
    +	// Gateway.
    +	//
    +	// This list may differ from the addresses provided in the spec under some
    +	// conditions:
    +	//
    +	//   * no addresses are specified, all addresses are dynamically assigned
    +	//   * a combination of specified and dynamic addresses are assigned
    +	//   * a specified address was unusable (e.g. already in use)
     	//
     	// +optional
     	// 
    @@ -554,6 +670,66 @@ type GatewayStatus struct {
     	Listeners []ListenerStatus `json:"listeners,omitempty"`
     }
     
    +// GatewayInfrastructure defines infrastructure level attributes about a Gateway instance.
    +type GatewayInfrastructure struct {
    +	// Labels that SHOULD be applied to any resources created in response to this Gateway.
    +	//
    +	// For implementations creating other Kubernetes objects, this should be the `metadata.labels` field on resources.
    +	// For other implementations, this refers to any relevant (implementation specific) "labels" concepts.
    +	//
    +	// An implementation may chose to add additional implementation-specific labels as they see fit.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxProperties=8
    +	Labels map[AnnotationKey]AnnotationValue `json:"labels,omitempty"`
    +
    +	// Annotations that SHOULD be applied to any resources created in response to this Gateway.
    +	//
    +	// For implementations creating other Kubernetes objects, this should be the `metadata.annotations` field on resources.
    +	// For other implementations, this refers to any relevant (implementation specific) "annotations" concepts.
    +	//
    +	// An implementation may chose to add additional implementation-specific annotations as they see fit.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxProperties=8
    +	Annotations map[AnnotationKey]AnnotationValue `json:"annotations,omitempty"`
    +
    +	// ParametersRef is a reference to a resource that contains the configuration
    +	// parameters corresponding to the Gateway. This is optional if the
    +	// controller does not require any additional configuration.
    +	//
    +	// This follows the same semantics as GatewayClass's `parametersRef`, but on a per-Gateway basis
    +	//
    +	// The Gateway's GatewayClass may provide its own `parametersRef`. When both are specified,
    +	// the merging behavior is implementation specific.
    +	// It is generally recommended that GatewayClass provides defaults that can be overridden by a Gateway.
    +	//
    +	// Support: Implementation-specific
    +	//
    +	// +optional
    +	ParametersRef *LocalParametersReference `json:"parametersRef,omitempty"`
    +}
    +
    +// LocalParametersReference identifies an API object containing controller-specific
    +// configuration resource within the namespace.
    +type LocalParametersReference struct {
    +	// Group is the group of the referent.
    +	Group Group `json:"group"`
    +
    +	// Kind is kind of the referent.
    +	Kind Kind `json:"kind"`
    +
    +	// Name is the name of the referent.
    +	//
    +	// +kubebuilder:validation:MinLength=1
    +	// +kubebuilder:validation:MaxLength=253
    +	Name string `json:"name"`
    +}
    +
     // GatewayConditionType is a type of condition associated with a
     // Gateway. This type should be used with the GatewayStatus.Conditions
     // field.
    @@ -599,8 +775,10 @@ const (
     	// true.
     	GatewayReasonProgrammed GatewayConditionReason = "Programmed"
     
    -	// This reason is used with the "Programmed" and "Accepted" conditions when the Gateway is
    -	// syntactically or semantically invalid.
    +	// This reason is used with the "Programmed" and "Accepted" conditions when
    +	// the Gateway is syntactically or semantically invalid. For example, this
    +	// could include unspecified TLS configuration, or some unrecognized or
    +	// invalid values in the TLS configuration.
     	GatewayReasonInvalid GatewayConditionReason = "Invalid"
     
     	// This reason is used with the "Programmed" condition when the
    @@ -608,11 +786,34 @@ const (
     	// resources are available.
     	GatewayReasonNoResources GatewayConditionReason = "NoResources"
     
    -	// This reason is used with the "Programmed" condition when none of the requested
    -	// addresses have been assigned to the Gateway. This reason can be used to
    -	// express a range of circumstances, including (but not limited to) IPAM
    -	// address exhaustion, address not yet allocated, or a named address not being found.
    +	// This reason is used with the "Programmed" condition when the underlying
    +	// implementation and network have yet to dynamically assign addresses for a
    +	// Gateway.
    +	//
    +	// Some example situations where this reason can be used:
    +	//
    +	//   * IPAM address exhaustion
    +	//   * Address not yet allocated
    +	//
    +	// When this reason is used the implementation SHOULD provide a clear
    +	// message explaining the underlying problem, ideally with some hints as to
    +	// what actions can be taken that might resolve the problem.
     	GatewayReasonAddressNotAssigned GatewayConditionReason = "AddressNotAssigned"
    +
    +	// This reason is used with the "Programmed" condition when the underlying
    +	// implementation (and possibly, network) are unable to use an address that
    +	// was provided in the Gateway specification.
    +	//
    +	// Some example situations where this reason can be used:
    +	//
    +	//   * a named address not being found
    +	//   * a provided static address can't be used
    +	//   * the address is already in use
    +	//
    +	// When this reason is used the implementation SHOULD provide prescriptive
    +	// information on which address is causing the problem and how to resolve it
    +	// in the condition message.
    +	GatewayReasonAddressNotUsable GatewayConditionReason = "AddressNotUsable"
     )
     
     const (
    @@ -629,6 +830,7 @@ const (
     	// Possible reasons for this condition to be False are:
     	//
     	// * "Invalid"
    +	// * "InvalidParameters"
     	// * "NotReconciled"
     	// * "UnsupportedAddress"
     	// * "ListenersNotValid"
    @@ -658,13 +860,15 @@ const (
     	// the Gateway.
     	GatewayReasonPending GatewayConditionReason = "Pending"
     
    -	// This reason is used with the "Accepted" condition when the Gateway could not be configured
    -	// because the requested address is not supported. This reason could be used in a number of
    -	// instances, including:
    -	//
    -	// * The address is already in use.
    -	// * The type of address is not supported by the implementation.
    +	// This reason is used with the "Accepted" condition to indicate that the
    +	// Gateway could not be accepted because an address that was provided is a
    +	// type which is not supported by the implementation.
     	GatewayReasonUnsupportedAddress GatewayConditionReason = "UnsupportedAddress"
    +
    +	// This reason is used with the "Accepted" condition when the
    +	// Gateway was not accepted because the parametersRef field
    +	// was invalid, with more detail in the message.
    +	GatewayReasonInvalidParameters GatewayConditionReason = "InvalidParameters"
     )
     
     const (
    @@ -721,8 +925,23 @@ type ListenerStatus struct {
     	// +kubebuilder:validation:MaxItems=8
     	SupportedKinds []RouteGroupKind `json:"supportedKinds"`
     
    -	// AttachedRoutes represents the total number of accepted Routes that have been
    +	// AttachedRoutes represents the total number of Routes that have been
     	// successfully attached to this Listener.
    +	//
    +	// Successful attachment of a Route to a Listener is based solely on the
    +	// combination of the AllowedRoutes field on the corresponding Listener
    +	// and the Route's ParentRefs field. A Route is successfully attached to
    +	// a Listener when it is selected by the Listener's AllowedRoutes field
    +	// AND the Route has a valid ParentRef selecting the whole Gateway
    +	// resource or a specific Listener as a parent resource (more detail on
    +	// attachment semantics can be found in the documentation on the various
    +	// Route kinds ParentRefs fields). Listener or Route status does not impact
    +	// successful attachment, i.e. the AttachedRoutes field count MUST be set
    +	// for Listeners with condition Accepted: false and MUST count successfully
    +	// attached Routes that may themselves have Accepted: false conditions.
    +	//
    +	// Uses for this field include troubleshooting Route attachment and
    +	// measuring blast radius/impact of changes to a Listener.
     	AttachedRoutes int32 `json:"attachedRoutes"`
     
     	// Conditions describe the current condition of this listener.
    diff --git a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/gatewayclass_types.go b/vendor/sigs.k8s.io/gateway-api/apis/v1/gatewayclass_types.go
    similarity index 74%
    rename from vendor/sigs.k8s.io/gateway-api/apis/v1beta1/gatewayclass_types.go
    rename to vendor/sigs.k8s.io/gateway-api/apis/v1/gatewayclass_types.go
    index 9d166700d02d..21875dce196f 100644
    --- a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/gatewayclass_types.go
    +++ b/vendor/sigs.k8s.io/gateway-api/apis/v1/gatewayclass_types.go
    @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -package v1beta1
    +package v1
     
     import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    @@ -24,8 +24,8 @@ import (
     // +genclient:nonNamespaced
     // +kubebuilder:object:root=true
     // +kubebuilder:resource:categories=gateway-api,scope=Cluster,shortName=gc
    -// +kubebuilder:storageversion
     // +kubebuilder:subresource:status
    +// +kubebuilder:storageversion
     // +kubebuilder:printcolumn:name="Controller",type=string,JSONPath=`.spec.controllerName`
     // +kubebuilder:printcolumn:name="Accepted",type=string,JSONPath=`.status.conditions[?(@.type=="Accepted")].status`
     // +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`
    @@ -96,6 +96,10 @@ type GatewayClassSpec struct {
     	// If the referent cannot be found, the GatewayClass's "InvalidParameters"
     	// status condition will be true.
     	//
    +	// A Gateway for this GatewayClass may provide its own `parametersRef`. When both are specified,
    +	// the merging behavior is implementation specific.
    +	// It is generally recommended that GatewayClass provides defaults that can be overridden by a Gateway.
    +	//
     	// Support: Implementation-specific
     	//
     	// +optional
    @@ -158,6 +162,7 @@ const (
     	// Possible reasons for this condition to be False are:
     	//
     	// * "InvalidParameters"
    +	// * "UnsupportedVersion"
     	//
     	// Possible reasons for this condition to be Unknown are:
     	//
    @@ -186,6 +191,51 @@ const (
     	GatewayClassReasonWaiting GatewayClassConditionReason = "Waiting"
     )
     
    +const (
    +	// This condition indicates whether the GatewayClass supports the version(s)
    +	// of Gateway API CRDs present in the cluster. This condition MUST be set by
    +	// a controller when it marks a GatewayClass "Accepted".
    +	//
    +	// The version of a Gateway API CRD is defined by the
    +	// gateway.networking.k8s.io/bundle-version annotation on the CRD. If
    +	// implementations detect any Gateway API CRDs that either do not have this
    +	// annotation set, or have it set to a version that is not recognized or
    +	// supported by the implementation, this condition MUST be set to false.
    +	//
    +	// Implementations MAY choose to either provide "best effort" support when
    +	// an unrecognized CRD version is present. This would be communicated by
    +	// setting the "Accepted" condition to true and the "SupportedVersion"
    +	// condition to false.
    +	//
    +	// Alternatively, implementations MAY choose not to support CRDs with
    +	// unrecognized versions. This would be communicated by setting the
    +	// "Accepted" condition to false with the reason "UnsupportedVersions".
    +	//
    +	// Possible reasons for this condition to be true are:
    +	//
    +	// * "SupportedVersion"
    +	//
    +	// Possible reasons for this condition to be False are:
    +	//
    +	// * "UnsupportedVersion"
    +	//
    +	// Controllers should prefer to use the values of GatewayClassConditionReason
    +	// for the corresponding Reason, where appropriate.
    +	//
    +	// 
    +	GatewayClassConditionStatusSupportedVersion GatewayClassConditionType = "SupportedVersion"
    +
    +	// This reason is used with the "SupportedVersion" condition when the
    +	// condition is true.
    +	GatewayClassReasonSupportedVersion GatewayClassConditionReason = "SupportedVersion"
    +
    +	// This reason is used with the "SupportedVersion" or "Accepted" condition
    +	// when the condition is false. A message SHOULD be included in this
    +	// condition that includes the detected CRD version(s) present in the
    +	// cluster and the CRD version(s) that are supported by the GatewayClass.
    +	GatewayClassReasonUnsupportedVersion GatewayClassConditionReason = "UnsupportedVersion"
    +)
    +
     // GatewayClassStatus is the current status for the GatewayClass.
     type GatewayClassStatus struct {
     	// Conditions is the current status from the controller for
    @@ -200,6 +250,14 @@ type GatewayClassStatus struct {
     	// +kubebuilder:validation:MaxItems=8
     	// +kubebuilder:default={{type: "Accepted", status: "Unknown", message: "Waiting for controller", reason: "Pending", lastTransitionTime: "1970-01-01T00:00:00Z"}}
     	Conditions []metav1.Condition `json:"conditions,omitempty"`
    +
    +	// SupportedFeatures is the set of features the GatewayClass support.
    +	// It MUST be sorted in ascending alphabetical order.
    +	// +optional
    +	// +listType=set
    +	// 
    +	// +kubebuilder:validation:MaxItems=64
    +	SupportedFeatures []SupportedFeature `json:"supportedFeatures,omitempty"`
     }
     
     // +kubebuilder:object:root=true
    @@ -210,3 +268,7 @@ type GatewayClassList struct {
     	metav1.ListMeta `json:"metadata,omitempty"`
     	Items           []GatewayClass `json:"items"`
     }
    +
    +// SupportedFeature is used to describe distinct features that are covered by
    +// conformance tests.
    +type SupportedFeature string
    diff --git a/vendor/sigs.k8s.io/gateway-api/apis/v1/grpcroute_types.go b/vendor/sigs.k8s.io/gateway-api/apis/v1/grpcroute_types.go
    new file mode 100644
    index 000000000000..91a8a3d26857
    --- /dev/null
    +++ b/vendor/sigs.k8s.io/gateway-api/apis/v1/grpcroute_types.go
    @@ -0,0 +1,627 @@
    +/*
    +Copyright 2022 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1
    +
    +import (
    +	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +)
    +
    +// +genclient
    +// +kubebuilder:object:root=true
    +// +kubebuilder:resource:categories=gateway-api
    +// +kubebuilder:subresource:status
    +// +kubebuilder:storageversion
    +// +kubebuilder:printcolumn:name="Hostnames",type=string,JSONPath=`.spec.hostnames`
    +// +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`
    +
    +// GRPCRoute provides a way to route gRPC requests. This includes the capability
    +// to match requests by hostname, gRPC service, gRPC method, or HTTP/2 header.
    +// Filters can be used to specify additional processing steps. Backends specify
    +// where matching requests will be routed.
    +//
    +// GRPCRoute falls under extended support within the Gateway API. Within the
    +// following specification, the word "MUST" indicates that an implementation
    +// supporting GRPCRoute must conform to the indicated requirement, but an
    +// implementation not supporting this route type need not follow the requirement
    +// unless explicitly indicated.
    +//
    +// Implementations supporting `GRPCRoute` with the `HTTPS` `ProtocolType` MUST
    +// accept HTTP/2 connections without an initial upgrade from HTTP/1.1, i.e. via
    +// ALPN. If the implementation does not support this, then it MUST set the
    +// "Accepted" condition to "False" for the affected listener with a reason of
    +// "UnsupportedProtocol".  Implementations MAY also accept HTTP/2 connections
    +// with an upgrade from HTTP/1.
    +//
    +// Implementations supporting `GRPCRoute` with the `HTTP` `ProtocolType` MUST
    +// support HTTP/2 over cleartext TCP (h2c,
    +// https://www.rfc-editor.org/rfc/rfc7540#section-3.1) without an initial
    +// upgrade from HTTP/1.1, i.e. with prior knowledge
    +// (https://www.rfc-editor.org/rfc/rfc7540#section-3.4). If the implementation
    +// does not support this, then it MUST set the "Accepted" condition to "False"
    +// for the affected listener with a reason of "UnsupportedProtocol".
    +// Implementations MAY also accept HTTP/2 connections with an upgrade from
    +// HTTP/1, i.e. without prior knowledge.
    +type GRPCRoute struct {
    +	metav1.TypeMeta   `json:",inline"`
    +	metav1.ObjectMeta `json:"metadata,omitempty"`
    +
    +	// Spec defines the desired state of GRPCRoute.
    +	Spec GRPCRouteSpec `json:"spec,omitempty"`
    +
    +	// Status defines the current state of GRPCRoute.
    +	Status GRPCRouteStatus `json:"status,omitempty"`
    +}
    +
    +// +kubebuilder:object:root=true
    +
    +// GRPCRouteList contains a list of GRPCRoute.
    +type GRPCRouteList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	metav1.ListMeta `json:"metadata,omitempty"`
    +	Items           []GRPCRoute `json:"items"`
    +}
    +
    +// GRPCRouteStatus defines the observed state of GRPCRoute.
    +type GRPCRouteStatus struct {
    +	RouteStatus `json:",inline"`
    +}
    +
    +// GRPCRouteSpec defines the desired state of GRPCRoute
    +type GRPCRouteSpec struct {
    +	CommonRouteSpec `json:",inline"`
    +
    +	// Hostnames defines a set of hostnames to match against the GRPC
    +	// Host header to select a GRPCRoute to process the request. This matches
    +	// the RFC 1123 definition of a hostname with 2 notable exceptions:
    +	//
    +	// 1. IPs are not allowed.
    +	// 2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard
    +	//    label MUST appear by itself as the first label.
    +	//
    +	// If a hostname is specified by both the Listener and GRPCRoute, there
    +	// MUST be at least one intersecting hostname for the GRPCRoute to be
    +	// attached to the Listener. For example:
    +	//
    +	// * A Listener with `test.example.com` as the hostname matches GRPCRoutes
    +	//   that have either not specified any hostnames, or have specified at
    +	//   least one of `test.example.com` or `*.example.com`.
    +	// * A Listener with `*.example.com` as the hostname matches GRPCRoutes
    +	//   that have either not specified any hostnames or have specified at least
    +	//   one hostname that matches the Listener hostname. For example,
    +	//   `test.example.com` and `*.example.com` would both match. On the other
    +	//   hand, `example.com` and `test.example.net` would not match.
    +	//
    +	// Hostnames that are prefixed with a wildcard label (`*.`) are interpreted
    +	// as a suffix match. That means that a match for `*.example.com` would match
    +	// both `test.example.com`, and `foo.test.example.com`, but not `example.com`.
    +	//
    +	// If both the Listener and GRPCRoute have specified hostnames, any
    +	// GRPCRoute hostnames that do not match the Listener hostname MUST be
    +	// ignored. For example, if a Listener specified `*.example.com`, and the
    +	// GRPCRoute specified `test.example.com` and `test.example.net`,
    +	// `test.example.net` MUST NOT be considered for a match.
    +	//
    +	// If both the Listener and GRPCRoute have specified hostnames, and none
    +	// match with the criteria above, then the GRPCRoute MUST NOT be accepted by
    +	// the implementation. The implementation MUST raise an 'Accepted' Condition
    +	// with a status of `False` in the corresponding RouteParentStatus.
    +	//
    +	// If a Route (A) of type HTTPRoute or GRPCRoute is attached to a
    +	// Listener and that listener already has another Route (B) of the other
    +	// type attached and the intersection of the hostnames of A and B is
    +	// non-empty, then the implementation MUST accept exactly one of these two
    +	// routes, determined by the following criteria, in order:
    +	//
    +	// * The oldest Route based on creation timestamp.
    +	// * The Route appearing first in alphabetical order by
    +	//   "{namespace}/{name}".
    +	//
    +	// The rejected Route MUST raise an 'Accepted' condition with a status of
    +	// 'False' in the corresponding RouteParentStatus.
    +	//
    +	// Support: Core
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxItems=16
    +	Hostnames []Hostname `json:"hostnames,omitempty"`
    +
    +	// Rules are a list of GRPC matchers, filters and actions.
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxItems=16
    +	Rules []GRPCRouteRule `json:"rules,omitempty"`
    +}
    +
    +// GRPCRouteRule defines the semantics for matching a gRPC request based on
    +// conditions (matches), processing it (filters), and forwarding the request to
    +// an API object (backendRefs).
    +type GRPCRouteRule struct {
    +	// Matches define conditions used for matching the rule against incoming
    +	// gRPC requests. Each match is independent, i.e. this rule will be matched
    +	// if **any** one of the matches is satisfied.
    +	//
    +	// For example, take the following matches configuration:
    +	//
    +	// ```
    +	// matches:
    +	// - method:
    +	//     service: foo.bar
    +	//   headers:
    +	//     values:
    +	//       version: 2
    +	// - method:
    +	//     service: foo.bar.v2
    +	// ```
    +	//
    +	// For a request to match against this rule, it MUST satisfy
    +	// EITHER of the two conditions:
    +	//
    +	// - service of foo.bar AND contains the header `version: 2`
    +	// - service of foo.bar.v2
    +	//
    +	// See the documentation for GRPCRouteMatch on how to specify multiple
    +	// match conditions to be ANDed together.
    +	//
    +	// If no matches are specified, the implementation MUST match every gRPC request.
    +	//
    +	// Proxy or Load Balancer routing configuration generated from GRPCRoutes
    +	// MUST prioritize rules based on the following criteria, continuing on
    +	// ties. Merging MUST not be done between GRPCRoutes and HTTPRoutes.
    +	// Precedence MUST be given to the rule with the largest number of:
    +	//
    +	// * Characters in a matching non-wildcard hostname.
    +	// * Characters in a matching hostname.
    +	// * Characters in a matching service.
    +	// * Characters in a matching method.
    +	// * Header matches.
    +	//
    +	// If ties still exist across multiple Routes, matching precedence MUST be
    +	// determined in order of the following criteria, continuing on ties:
    +	//
    +	// * The oldest Route based on creation timestamp.
    +	// * The Route appearing first in alphabetical order by
    +	//   "{namespace}/{name}".
    +	//
    +	// If ties still exist within the Route that has been given precedence,
    +	// matching precedence MUST be granted to the first matching rule meeting
    +	// the above criteria.
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxItems=8
    +	Matches []GRPCRouteMatch `json:"matches,omitempty"`
    +
    +	// Filters define the filters that are applied to requests that match
    +	// this rule.
    +	//
    +	// The effects of ordering of multiple behaviors are currently unspecified.
    +	// This can change in the future based on feedback during the alpha stage.
    +	//
    +	// Conformance-levels at this level are defined based on the type of filter:
    +	//
    +	// - ALL core filters MUST be supported by all implementations that support
    +	//   GRPCRoute.
    +	// - Implementers are encouraged to support extended filters.
    +	// - Implementation-specific custom filters have no API guarantees across
    +	//   implementations.
    +	//
    +	// Specifying the same filter multiple times is not supported unless explicitly
    +	// indicated in the filter.
    +	//
    +	// If an implementation can not support a combination of filters, it must clearly
    +	// document that limitation. In cases where incompatible or unsupported
    +	// filters are specified and cause the `Accepted` condition to be set to status
    +	// `False`, implementations may use the `IncompatibleFilters` reason to specify
    +	// this configuration error.
    +	//
    +	// Support: Core
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxItems=16
    +	// +kubebuilder:validation:XValidation:message="RequestHeaderModifier filter cannot be repeated",rule="self.filter(f, f.type == 'RequestHeaderModifier').size() <= 1"
    +	// +kubebuilder:validation:XValidation:message="ResponseHeaderModifier filter cannot be repeated",rule="self.filter(f, f.type == 'ResponseHeaderModifier').size() <= 1"
    +	Filters []GRPCRouteFilter `json:"filters,omitempty"`
    +
    +	// BackendRefs defines the backend(s) where matching requests should be
    +	// sent.
    +	//
    +	// Failure behavior here depends on how many BackendRefs are specified and
    +	// how many are invalid.
    +	//
    +	// If *all* entries in BackendRefs are invalid, and there are also no filters
    +	// specified in this route rule, *all* traffic which matches this rule MUST
    +	// receive an `UNAVAILABLE` status.
    +	//
    +	// See the GRPCBackendRef definition for the rules about what makes a single
    +	// GRPCBackendRef invalid.
    +	//
    +	// When a GRPCBackendRef is invalid, `UNAVAILABLE` statuses MUST be returned for
    +	// requests that would have otherwise been routed to an invalid backend. If
    +	// multiple backends are specified, and some are invalid, the proportion of
    +	// requests that would otherwise have been routed to an invalid backend
    +	// MUST receive an `UNAVAILABLE` status.
    +	//
    +	// For example, if two backends are specified with equal weights, and one is
    +	// invalid, 50 percent of traffic MUST receive an `UNAVAILABLE` status.
    +	// Implementations may choose how that 50 percent is determined.
    +	//
    +	// Support: Core for Kubernetes Service
    +	//
    +	// Support: Implementation-specific for any other resource
    +	//
    +	// Support for weight: Core
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxItems=16
    +	BackendRefs []GRPCBackendRef `json:"backendRefs,omitempty"`
    +
    +	// SessionPersistence defines and configures session persistence
    +	// for the route rule.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	// 
    +	SessionPersistence *SessionPersistence `json:"sessionPersistence,omitempty"`
    +}
    +
    +// GRPCRouteMatch defines the predicate used to match requests to a given
    +// action. Multiple match types are ANDed together, i.e. the match will
    +// evaluate to true only if all conditions are satisfied.
    +//
    +// For example, the match below will match a gRPC request only if its service
    +// is `foo` AND it contains the `version: v1` header:
    +//
    +// ```
    +// matches:
    +//   - method:
    +//     type: Exact
    +//     service: "foo"
    +//     headers:
    +//   - name: "version"
    +//     value "v1"
    +//
    +// ```
    +type GRPCRouteMatch struct {
    +	// Method specifies a gRPC request service/method matcher. If this field is
    +	// not specified, all services and methods will match.
    +	//
    +	// +optional
    +	Method *GRPCMethodMatch `json:"method,omitempty"`
    +
    +	// Headers specifies gRPC request header matchers. Multiple match values are
    +	// ANDed together, meaning, a request MUST match all the specified headers
    +	// to select the route.
    +	//
    +	// +listType=map
    +	// +listMapKey=name
    +	// +optional
    +	// +kubebuilder:validation:MaxItems=16
    +	Headers []GRPCHeaderMatch `json:"headers,omitempty"`
    +}
    +
    +// GRPCMethodMatch describes how to select a gRPC route by matching the gRPC
    +// request service and/or method.
    +//
    +// At least one of Service and Method MUST be a non-empty string.
    +//
    +// +kubebuilder:validation:XValidation:message="One or both of 'service' or 'method' must be specified",rule="has(self.type) ? has(self.service) || has(self.method) : true"
    +// +kubebuilder:validation:XValidation:message="service must only contain valid characters (matching ^(?i)\\.?[a-z_][a-z_0-9]*(\\.[a-z_][a-z_0-9]*)*$)",rule="(!has(self.type) || self.type == 'Exact') && has(self.service) ? self.service.matches(r\"\"\"^(?i)\\.?[a-z_][a-z_0-9]*(\\.[a-z_][a-z_0-9]*)*$\"\"\"): true"
    +// +kubebuilder:validation:XValidation:message="method must only contain valid characters (matching ^[A-Za-z_][A-Za-z_0-9]*$)",rule="(!has(self.type) || self.type == 'Exact') && has(self.method) ? self.method.matches(r\"\"\"^[A-Za-z_][A-Za-z_0-9]*$\"\"\"): true"
    +type GRPCMethodMatch struct {
    +	// Type specifies how to match against the service and/or method.
    +	// Support: Core (Exact with service and method specified)
    +	//
    +	// Support: Implementation-specific (Exact with method specified but no service specified)
    +	//
    +	// Support: Implementation-specific (RegularExpression)
    +	//
    +	// +optional
    +	// +kubebuilder:default=Exact
    +	Type *GRPCMethodMatchType `json:"type,omitempty"`
    +
    +	// Value of the service to match against. If left empty or omitted, will
    +	// match any service.
    +	//
    +	// At least one of Service and Method MUST be a non-empty string.
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxLength=1024
    +	Service *string `json:"service,omitempty"`
    +
    +	// Value of the method to match against. If left empty or omitted, will
    +	// match all services.
    +	//
    +	// At least one of Service and Method MUST be a non-empty string.
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxLength=1024
    +	Method *string `json:"method,omitempty"`
    +}
    +
    +// MethodMatchType specifies the semantics of how gRPC methods and services are compared.
    +// Valid MethodMatchType values, along with their conformance levels, are:
    +//
    +// * "Exact" - Core
    +// * "RegularExpression" - Implementation Specific
    +//
    +// Exact methods MUST be syntactically valid:
    +//
    +// - Must not contain `/` character
    +//
    +// +kubebuilder:validation:Enum=Exact;RegularExpression
    +type GRPCMethodMatchType string
    +
    +const (
    +	// Matches the method or service exactly and with case sensitivity.
    +	GRPCMethodMatchExact GRPCMethodMatchType = "Exact"
    +
    +	// Matches if the method or service matches the given regular expression with
    +	// case sensitivity.
    +	//
    +	// Since `"RegularExpression"` has implementation-specific conformance,
    +	// implementations can support POSIX, PCRE, RE2 or any other regular expression
    +	// dialect.
    +	// Please read the implementation's documentation to determine the supported
    +	// dialect.
    +	GRPCMethodMatchRegularExpression GRPCMethodMatchType = "RegularExpression"
    +)
    +
    +// GRPCHeaderMatch describes how to select a gRPC route by matching gRPC request
    +// headers.
    +type GRPCHeaderMatch struct {
    +	// Type specifies how to match against the value of the header.
    +	//
    +	// +optional
    +	// +kubebuilder:default=Exact
    +	Type *HeaderMatchType `json:"type,omitempty"`
    +
    +	// Name is the name of the gRPC Header to be matched.
    +	//
    +	// If multiple entries specify equivalent header names, only the first
    +	// entry with an equivalent name MUST be considered for a match. Subsequent
    +	// entries with an equivalent header name MUST be ignored. Due to the
    +	// case-insensitivity of header names, "foo" and "Foo" are considered
    +	// equivalent.
    +	Name GRPCHeaderName `json:"name"`
    +
    +	// Value is the value of the gRPC Header to be matched.
    +	//
    +	// +kubebuilder:validation:MinLength=1
    +	// +kubebuilder:validation:MaxLength=4096
    +	Value string `json:"value"`
    +}
    +
    +// GRPCHeaderMatchType specifies the semantics of how GRPC header values should
    +// be compared. Valid GRPCHeaderMatchType values, along with their conformance
    +// levels, are:
    +//
    +// * "Exact" - Core
    +// * "RegularExpression" - Implementation Specific
    +//
    +// Note that new values may be added to this enum in future releases of the API,
    +// implementations MUST ensure that unknown values will not cause a crash.
    +//
    +// Unknown values here MUST result in the implementation setting the Accepted
    +// Condition for the Route to `status: False`, with a Reason of
    +// `UnsupportedValue`.
    +//
    +// +kubebuilder:validation:Enum=Exact;RegularExpression
    +type GRPCHeaderMatchType string
    +
    +// GRPCHeaderMatchType constants.
    +const (
    +	GRPCHeaderMatchExact             GRPCHeaderMatchType = "Exact"
    +	GRPCHeaderMatchRegularExpression GRPCHeaderMatchType = "RegularExpression"
    +)
    +
    +type GRPCHeaderName HeaderName
    +
    +// GRPCRouteFilterType identifies a type of GRPCRoute filter.
    +type GRPCRouteFilterType string
    +
    +const (
    +	// GRPCRouteFilterRequestHeaderModifier can be used to add or remove a gRPC
    +	// header from a gRPC request before it is sent to the upstream target.
    +	//
    +	// Support in GRPCRouteRule: Core
    +	//
    +	// Support in GRPCBackendRef: Extended
    +	GRPCRouteFilterRequestHeaderModifier GRPCRouteFilterType = "RequestHeaderModifier"
    +
    +	// GRPCRouteFilterRequestHeaderModifier can be used to add or remove a gRPC
    +	// header from a gRPC response before it is sent to the client.
    +	//
    +	// Support in GRPCRouteRule: Core
    +	//
    +	// Support in GRPCBackendRef: Extended
    +	GRPCRouteFilterResponseHeaderModifier GRPCRouteFilterType = "ResponseHeaderModifier"
    +
    +	// GRPCRouteFilterRequestMirror can be used to mirror gRPC requests to a
    +	// different backend. The responses from this backend MUST be ignored by
    +	// the Gateway.
    +	//
    +	// Support in GRPCRouteRule: Extended
    +	//
    +	// Support in GRPCBackendRef: Extended
    +	GRPCRouteFilterRequestMirror GRPCRouteFilterType = "RequestMirror"
    +
    +	// GRPCRouteFilterExtensionRef should be used for configuring custom
    +	// gRPC filters.
    +	//
    +	// Support in GRPCRouteRule: Implementation-specific
    +	//
    +	// Support in GRPCBackendRef: Implementation-specific
    +	GRPCRouteFilterExtensionRef GRPCRouteFilterType = "ExtensionRef"
    +)
    +
    +// GRPCRouteFilter defines processing steps that must be completed during the
    +// request or response lifecycle. GRPCRouteFilters are meant as an extension
    +// point to express processing that may be done in Gateway implementations. Some
    +// examples include request or response modification, implementing
    +// authentication strategies, rate-limiting, and traffic shaping. API
    +// guarantee/conformance is defined based on the type of the filter.
    +//
    +// +kubebuilder:validation:XValidation:message="filter.requestHeaderModifier must be nil if the filter.type is not RequestHeaderModifier",rule="!(has(self.requestHeaderModifier) && self.type != 'RequestHeaderModifier')"
    +// +kubebuilder:validation:XValidation:message="filter.requestHeaderModifier must be specified for RequestHeaderModifier filter.type",rule="!(!has(self.requestHeaderModifier) && self.type == 'RequestHeaderModifier')"
    +// +kubebuilder:validation:XValidation:message="filter.responseHeaderModifier must be nil if the filter.type is not ResponseHeaderModifier",rule="!(has(self.responseHeaderModifier) && self.type != 'ResponseHeaderModifier')"
    +// +kubebuilder:validation:XValidation:message="filter.responseHeaderModifier must be specified for ResponseHeaderModifier filter.type",rule="!(!has(self.responseHeaderModifier) && self.type == 'ResponseHeaderModifier')"
    +// +kubebuilder:validation:XValidation:message="filter.requestMirror must be nil if the filter.type is not RequestMirror",rule="!(has(self.requestMirror) && self.type != 'RequestMirror')"
    +// +kubebuilder:validation:XValidation:message="filter.requestMirror must be specified for RequestMirror filter.type",rule="!(!has(self.requestMirror) && self.type == 'RequestMirror')"
    +// +kubebuilder:validation:XValidation:message="filter.extensionRef must be nil if the filter.type is not ExtensionRef",rule="!(has(self.extensionRef) && self.type != 'ExtensionRef')"
    +// +kubebuilder:validation:XValidation:message="filter.extensionRef must be specified for ExtensionRef filter.type",rule="!(!has(self.extensionRef) && self.type == 'ExtensionRef')"
    +type GRPCRouteFilter struct {
    +	// Type identifies the type of filter to apply. As with other API fields,
    +	// types are classified into three conformance levels:
    +	//
    +	// - Core: Filter types and their corresponding configuration defined by
    +	//   "Support: Core" in this package, e.g. "RequestHeaderModifier". All
    +	//   implementations supporting GRPCRoute MUST support core filters.
    +	//
    +	// - Extended: Filter types and their corresponding configuration defined by
    +	//   "Support: Extended" in this package, e.g. "RequestMirror". Implementers
    +	//   are encouraged to support extended filters.
    +	//
    +	// - Implementation-specific: Filters that are defined and supported by specific vendors.
    +	//   In the future, filters showing convergence in behavior across multiple
    +	//   implementations will be considered for inclusion in extended or core
    +	//   conformance levels. Filter-specific configuration for such filters
    +	//   is specified using the ExtensionRef field. `Type` MUST be set to
    +	//   "ExtensionRef" for custom filters.
    +	//
    +	// Implementers are encouraged to define custom implementation types to
    +	// extend the core API with implementation-specific behavior.
    +	//
    +	// If a reference to a custom filter type cannot be resolved, the filter
    +	// MUST NOT be skipped. Instead, requests that would have been processed by
    +	// that filter MUST receive a HTTP error response.
    +	//
    +	// +unionDiscriminator
    +	// +kubebuilder:validation:Enum=ResponseHeaderModifier;RequestHeaderModifier;RequestMirror;ExtensionRef
    +	// 
    +	Type GRPCRouteFilterType `json:"type"`
    +
    +	// RequestHeaderModifier defines a schema for a filter that modifies request
    +	// headers.
    +	//
    +	// Support: Core
    +	//
    +	// +optional
    +	RequestHeaderModifier *HTTPHeaderFilter `json:"requestHeaderModifier,omitempty"`
    +
    +	// ResponseHeaderModifier defines a schema for a filter that modifies response
    +	// headers.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	ResponseHeaderModifier *HTTPHeaderFilter `json:"responseHeaderModifier,omitempty"`
    +
    +	// RequestMirror defines a schema for a filter that mirrors requests.
    +	// Requests are sent to the specified destination, but responses from
    +	// that destination are ignored.
    +	//
    +	// This filter can be used multiple times within the same rule. Note that
    +	// not all implementations will be able to support mirroring to multiple
    +	// backends.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	RequestMirror *HTTPRequestMirrorFilter `json:"requestMirror,omitempty"`
    +
    +	// ExtensionRef is an optional, implementation-specific extension to the
    +	// "filter" behavior.  For example, resource "myroutefilter" in group
    +	// "networking.example.net"). ExtensionRef MUST NOT be used for core and
    +	// extended filters.
    +	//
    +	// Support: Implementation-specific
    +	//
    +	// This filter can be used multiple times within the same rule.
    +	// +optional
    +	ExtensionRef *LocalObjectReference `json:"extensionRef,omitempty"`
    +}
    +
    +// GRPCBackendRef defines how a GRPCRoute forwards a gRPC request.
    +//
    +// Note that when a namespace different than the local namespace is specified, a
    +// ReferenceGrant object is required in the referent namespace to allow that
    +// namespace's owner to accept the reference. See the ReferenceGrant
    +// documentation for details.
    +//
    +// 
    +//
    +// When the BackendRef points to a Kubernetes Service, implementations SHOULD
    +// honor the appProtocol field if it is set for the target Service Port.
    +//
    +// Implementations supporting appProtocol SHOULD recognize the Kubernetes
    +// Standard Application Protocols defined in KEP-3726.
    +//
    +// If a Service appProtocol isn't specified, an implementation MAY infer the
    +// backend protocol through its own means. Implementations MAY infer the
    +// protocol from the Route type referring to the backend Service.
    +//
    +// If a Route is not able to send traffic to the backend using the specified
    +// protocol then the backend is considered invalid. Implementations MUST set the
    +// "ResolvedRefs" condition to "False" with the "UnsupportedProtocol" reason.
    +//
    +// 
    +type GRPCBackendRef struct {
    +	// BackendRef is a reference to a backend to forward matched requests to.
    +	//
    +	// A BackendRef can be invalid for the following reasons. In all cases, the
    +	// implementation MUST ensure the `ResolvedRefs` Condition on the Route
    +	// is set to `status: False`, with a Reason and Message that indicate
    +	// what is the cause of the error.
    +	//
    +	// A BackendRef is invalid if:
    +	//
    +	// * It refers to an unknown or unsupported kind of resource. In this
    +	//   case, the Reason MUST be set to `InvalidKind` and Message of the
    +	//   Condition MUST explain which kind of resource is unknown or unsupported.
    +	//
    +	// * It refers to a resource that does not exist. In this case, the Reason MUST
    +	//   be set to `BackendNotFound` and the Message of the Condition MUST explain
    +	//   which resource does not exist.
    +	//
    +	// * It refers a resource in another namespace when the reference has not been
    +	//   explicitly allowed by a ReferenceGrant (or equivalent concept). In this
    +	//   case, the Reason MUST be set to `RefNotPermitted` and the Message of the
    +	//   Condition MUST explain which cross-namespace reference is not allowed.
    +	//
    +	// Support: Core for Kubernetes Service
    +	//
    +	// Support: Extended for Kubernetes ServiceImport
    +	//
    +	// Support: Implementation-specific for any other resource
    +	//
    +	// Support for weight: Core
    +	//
    +	// +optional
    +	BackendRef `json:",inline"`
    +
    +	// Filters defined at this level MUST be executed if and only if the
    +	// request is being forwarded to the backend defined here.
    +	//
    +	// Support: Implementation-specific (For broader support of filters, use the
    +	// Filters field in GRPCRouteRule.)
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxItems=16
    +	// +kubebuilder:validation:XValidation:message="RequestHeaderModifier filter cannot be repeated",rule="self.filter(f, f.type == 'RequestHeaderModifier').size() <= 1"
    +	// +kubebuilder:validation:XValidation:message="ResponseHeaderModifier filter cannot be repeated",rule="self.filter(f, f.type == 'ResponseHeaderModifier').size() <= 1"
    +	Filters []GRPCRouteFilter `json:"filters,omitempty"`
    +}
    diff --git a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/httproute_types.go b/vendor/sigs.k8s.io/gateway-api/apis/v1/httproute_types.go
    similarity index 89%
    rename from vendor/sigs.k8s.io/gateway-api/apis/v1beta1/httproute_types.go
    rename to vendor/sigs.k8s.io/gateway-api/apis/v1/httproute_types.go
    index e8216ed33cb5..736e80982a0e 100644
    --- a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/httproute_types.go
    +++ b/vendor/sigs.k8s.io/gateway-api/apis/v1/httproute_types.go
    @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -package v1beta1
    +package v1
     
     import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    @@ -23,8 +23,8 @@ import (
     // +genclient
     // +kubebuilder:object:root=true
     // +kubebuilder:resource:categories=gateway-api
    -// +kubebuilder:storageversion
     // +kubebuilder:subresource:status
    +// +kubebuilder:storageversion
     // +kubebuilder:printcolumn:name="Hostnames",type=string,JSONPath=`.spec.hostnames`
     // +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`
     
    @@ -197,8 +197,19 @@ type HTTPRouteRule struct {
     	// Filters define the filters that are applied to requests that match
     	// this rule.
     	//
    -	// The effects of ordering of multiple behaviors are currently unspecified.
    -	// This can change in the future based on feedback during the alpha stage.
    +	// Wherever possible, implementations SHOULD implement filters in the order
    +	// they are specified.
    +	//
    +	// Implementations MAY choose to implement this ordering strictly, rejecting
    +	// any combination or order of filters that can not be supported. If implementations
    +	// choose a strict interpretation of filter ordering, they MUST clearly document
    +	// that behavior.
    +	//
    +	// To reject an invalid combination or order of filters, implementations SHOULD
    +	// consider the Route Rules with this configuration invalid. If all Route Rules
    +	// in a Route are invalid, the entire Route would be considered invalid. If only
    +	// a portion of Route Rules are invalid, implementations MUST set the
    +	// "PartiallyInvalid" condition for the Route.
     	//
     	// Conformance-levels at this level are defined based on the type of filter:
     	//
    @@ -263,6 +274,75 @@ type HTTPRouteRule struct {
     	// +optional
     	// +kubebuilder:validation:MaxItems=16
     	BackendRefs []HTTPBackendRef `json:"backendRefs,omitempty"`
    +
    +	// Timeouts defines the timeouts that can be configured for an HTTP request.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	// 
    +	Timeouts *HTTPRouteTimeouts `json:"timeouts,omitempty"`
    +
    +	// SessionPersistence defines and configures session persistence
    +	// for the route rule.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	// 
    +	SessionPersistence *SessionPersistence `json:"sessionPersistence,omitempty"`
    +}
    +
    +// HTTPRouteTimeouts defines timeouts that can be configured for an HTTPRoute.
    +// Timeout values are represented with Gateway API Duration formatting.
    +//
    +// +kubebuilder:validation:XValidation:message="backendRequest timeout cannot be longer than request timeout",rule="!(has(self.request) && has(self.backendRequest) && duration(self.request) != duration('0s') && duration(self.backendRequest) > duration(self.request))"
    +type HTTPRouteTimeouts struct {
    +	// Request specifies the maximum duration for a gateway to respond to an HTTP request.
    +	// If the gateway has not been able to respond before this deadline is met, the gateway
    +	// MUST return a timeout error.
    +	//
    +	// For example, setting the `rules.timeouts.request` field to the value `10s` in an
    +	// `HTTPRoute` will cause a timeout if a client request is taking longer than 10 seconds
    +	// to complete.
    +	//
    +	// Setting a timeout to the zero duration (e.g. "0s") SHOULD disable the timeout
    +	// completely. Implementations that cannot completely disable the timeout MUST
    +	// instead interpret the zero duration as the longest possible value to which
    +	// the timeout can be set.
    +	//
    +	// This timeout is intended to cover as close to the whole request-response transaction
    +	// as possible although an implementation MAY choose to start the timeout after the entire
    +	// request stream has been received instead of immediately after the transaction is
    +	// initiated by the client.
    +	//
    +	// When this field is unspecified, request timeout behavior is implementation-specific.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	Request *Duration `json:"request,omitempty"`
    +
    +	// BackendRequest specifies a timeout for an individual request from the gateway
    +	// to a backend. This covers the time from when the request first starts being
    +	// sent from the gateway to when the full response has been received from the backend.
    +	//
    +	// Setting a timeout to the zero duration (e.g. "0s") SHOULD disable the timeout
    +	// completely. Implementations that cannot completely disable the timeout MUST
    +	// instead interpret the zero duration as the longest possible value to which
    +	// the timeout can be set.
    +	//
    +	// An entire client HTTP transaction with a gateway, covered by the Request timeout,
    +	// may result in more than one call from the gateway to the destination backend,
    +	// for example, if automatic retries are supported.
    +	//
    +	// Because the Request timeout encompasses the BackendRequest timeout, the value of
    +	// BackendRequest must be <= the value of Request timeout.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	BackendRequest *Duration `json:"backendRequest,omitempty"`
     }
     
     // PathMatchType specifies the semantics of how HTTP paths should be compared.
    @@ -771,7 +851,7 @@ type HTTPHeader struct {
     // HTTPHeaderFilter defines a filter that modifies the headers of an HTTP
     // request or response. Only one action for a given header name is permitted.
     // Filters specifying multiple actions of the same or different type for any one
    -// header name are invalid and will be rejected by the webhook if installed.
    +// header name are invalid and will be rejected by CRD validation.
     // Configuration to set or add multiple values for a header must use RFC 7230
     // header value formatting, separating each value with a comma.
     type HTTPHeaderFilter struct {
    @@ -1059,7 +1139,30 @@ type HTTPRequestMirrorFilter struct {
     	BackendRef BackendObjectReference `json:"backendRef"`
     }
     
    -// HTTPBackendRef defines how a HTTPRoute should forward an HTTP request.
    +// HTTPBackendRef defines how a HTTPRoute forwards a HTTP request.
    +//
    +// Note that when a namespace different than the local namespace is specified, a
    +// ReferenceGrant object is required in the referent namespace to allow that
    +// namespace's owner to accept the reference. See the ReferenceGrant
    +// documentation for details.
    +//
    +// 
    +//
    +// When the BackendRef points to a Kubernetes Service, implementations SHOULD
    +// honor the appProtocol field if it is set for the target Service Port.
    +//
    +// Implementations supporting appProtocol SHOULD recognize the Kubernetes
    +// Standard Application Protocols defined in KEP-3726.
    +//
    +// If a Service appProtocol isn't specified, an implementation MAY infer the
    +// backend protocol through its own means. Implementations MAY infer the
    +// protocol from the Route type referring to the backend Service.
    +//
    +// If a Route is not able to send traffic to the backend using the specified
    +// protocol then the backend is considered invalid. Implementations MUST set the
    +// "ResolvedRefs" condition to "False" with the "UnsupportedProtocol" reason.
    +//
    +// 
     type HTTPBackendRef struct {
     	// BackendRef is a reference to a backend to forward matched requests to.
     	//
    @@ -1083,12 +1186,25 @@ type HTTPBackendRef struct {
     	//   case, the Reason must be set to `RefNotPermitted` and the Message of the
     	//   Condition must explain which cross-namespace reference is not allowed.
     	//
    +	// * It refers to a Kubernetes Service that has an incompatible appProtocol
    +	//   for the given Route type
    +	//
    +	// * The BackendTLSPolicy object is installed in the cluster, a BackendTLSPolicy
    +	//   is present that refers to the Service, and the implementation is unable
    +	//   to meet the requirement. At the time of writing, BackendTLSPolicy is
    +	//   experimental, but once it becomes standard, this will become a MUST
    +	//   requirement.
    +	//
     	// Support: Core for Kubernetes Service
     	//
     	// Support: Implementation-specific for any other resource
     	//
     	// Support for weight: Core
     	//
    +	// Support for Kubernetes Service appProtocol: Extended
    +	//
    +	// Support for BackendTLSPolicy: Experimental and ImplementationSpecific
    +	//
     	// +optional
     	BackendRef `json:",inline"`
     
    diff --git a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/object_reference_types.go b/vendor/sigs.k8s.io/gateway-api/apis/v1/object_reference_types.go
    similarity index 80%
    rename from vendor/sigs.k8s.io/gateway-api/apis/v1beta1/object_reference_types.go
    rename to vendor/sigs.k8s.io/gateway-api/apis/v1/object_reference_types.go
    index 4ef1c37891a9..421572acebfe 100644
    --- a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/object_reference_types.go
    +++ b/vendor/sigs.k8s.io/gateway-api/apis/v1/object_reference_types.go
    @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -package v1beta1
    +package v1
     
     // LocalObjectReference identifies an API object within the namespace of the
     // referrer.
    @@ -62,7 +62,7 @@ type SecretObjectReference struct {
     	// Name is the name of the referent.
     	Name ObjectName `json:"name"`
     
    -	// Namespace is the namespace of the backend. When unspecified, the local
    +	// Namespace is the namespace of the referenced object. When unspecified, the local
     	// namespace is inferred.
     	//
     	// Note that when a namespace different than the local namespace is specified,
    @@ -145,3 +145,36 @@ type BackendObjectReference struct {
     	// +optional
     	Port *PortNumber `json:"port,omitempty"`
     }
    +
    +// ObjectReference identifies an API object including its namespace.
    +//
    +// The API object must be valid in the cluster; the Group and Kind must
    +// be registered in the cluster for this reference to be valid.
    +//
    +// References to objects with invalid Group and Kind are not valid, and must
    +// be rejected by the implementation, with appropriate Conditions set
    +// on the containing object.
    +type ObjectReference struct {
    +	// Group is the group of the referent. For example, "gateway.networking.k8s.io".
    +	// When unspecified or empty string, core API group is inferred.
    +	Group Group `json:"group"`
    +
    +	// Kind is kind of the referent. For example "ConfigMap" or "Service".
    +	Kind Kind `json:"kind"`
    +
    +	// Name is the name of the referent.
    +	Name ObjectName `json:"name"`
    +
    +	// Namespace is the namespace of the referenced object. When unspecified, the local
    +	// namespace is inferred.
    +	//
    +	// Note that when a namespace different than the local namespace is specified,
    +	// a ReferenceGrant object is required in the referent namespace to allow that
    +	// namespace's owner to accept the reference. See the ReferenceGrant
    +	// documentation for details.
    +	//
    +	// Support: Core
    +	//
    +	// +optional
    +	Namespace *Namespace `json:"namespace,omitempty"`
    +}
    diff --git a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/shared_types.go b/vendor/sigs.k8s.io/gateway-api/apis/v1/shared_types.go
    similarity index 73%
    rename from vendor/sigs.k8s.io/gateway-api/apis/v1beta1/shared_types.go
    rename to vendor/sigs.k8s.io/gateway-api/apis/v1/shared_types.go
    index b18af1d0e065..bed2cc8b8ea6 100644
    --- a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/shared_types.go
    +++ b/vendor/sigs.k8s.io/gateway-api/apis/v1/shared_types.go
    @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    -package v1beta1
    +package v1
     
     import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    @@ -25,7 +25,7 @@ import (
     // with "Core" support:
     //
     // * Gateway (Gateway conformance profile)
    -// * Service (Mesh conformance profile, experimental, ClusterIP Services only)
    +// * Service (Mesh conformance profile, ClusterIP Services only)
     //
     // This API may be extended in the future to support additional kinds of parent
     // resources.
    @@ -49,7 +49,7 @@ type ParentReference struct {
     	// There are two kinds of parent resources with "Core" support:
     	//
     	// * Gateway (Gateway conformance profile)
    -	// * Service (Mesh conformance profile, experimental, ClusterIP Services only)
    +	// * Service (Mesh conformance profile, ClusterIP Services only)
     	//
     	// Support for other resources is Implementation-Specific.
     	//
    @@ -66,6 +66,7 @@ type ParentReference struct {
     	// Gateway has the AllowedRoutes field, and ReferenceGrant provides a
     	// generic way to enable any other kind of cross-namespace reference.
     	//
    +	// 
     	// ParentRefs from a Route to a Service in the same namespace are "producer"
     	// routes, which apply default routing rules to inbound connections from
     	// any namespace to the Service.
    @@ -75,6 +76,7 @@ type ParentReference struct {
     	// connections originating from the same namespace as the Route, for which
     	// the intended destination of the connections are a Service targeted as a
     	// ParentRef of the Route.
    +	// 
     	//
     	// Support: Core
     	//
    @@ -89,14 +91,12 @@ type ParentReference struct {
     	// SectionName is the name of a section within the target resource. In the
     	// following resources, SectionName is interpreted as the following:
     	//
    -	// * Gateway: Listener Name. When both Port (experimental) and SectionName
    +	// * Gateway: Listener name. When both Port (experimental) and SectionName
     	// are specified, the name and port of the selected listener must match
     	// both specified values.
    -	// * Service: Port Name. When both Port (experimental) and SectionName
    +	// * Service: Port name. When both Port (experimental) and SectionName
     	// are specified, the name and port of the selected listener must match
    -	// both specified values. Note that attaching Routes to Services as Parents
    -	// is part of experimental Mesh support and is not supported for any other
    -	// purpose.
    +	// both specified values.
     	//
     	// Implementations MAY choose to support attaching Routes to other resources.
     	// If that is the case, they MUST clearly document how SectionName is
    @@ -127,9 +127,11 @@ type ParentReference struct {
     	// and SectionName are specified, the name and port of the selected listener
     	// must match both specified values.
     	//
    +	// 
     	// When the parent resource is a Service, this targets a specific port in the
     	// Service spec. When both Port (experimental) and SectionName are specified,
     	// the name and port of the selected port must match both specified values.
    +	// 
     	//
     	// Implementations MAY choose to support other parent resources.
     	// Implementations supporting other types of parent resources MUST clearly
    @@ -146,7 +148,6 @@ type ParentReference struct {
     	// Support: Extended
     	//
     	// +optional
    -	// 
     	Port *PortNumber `json:"port,omitempty"`
     }
     
    @@ -167,15 +168,30 @@ type CommonRouteSpec struct {
     	// There are two kinds of parent resources with "Core" support:
     	//
     	// * Gateway (Gateway conformance profile)
    -	// * Service (Mesh conformance profile, experimental, ClusterIP Services only)
    +	// * Service (Mesh conformance profile, ClusterIP Services only)
     	//
     	// This API may be extended in the future to support additional kinds of parent
     	// resources.
     	//
    -	// It is invalid to reference an identical parent more than once. It is
    -	// valid to reference multiple distinct sections within the same parent
    -	// resource, such as two separate Listeners on the same Gateway or two separate
    -	// ports on the same Service.
    +	// ParentRefs must be _distinct_. This means either that:
    +	//
    +	// * They select different objects.  If this is the case, then parentRef
    +	//   entries are distinct. In terms of fields, this means that the
    +	//   multi-part key defined by `group`, `kind`, `namespace`, and `name` must
    +	//   be unique across all parentRef entries in the Route.
    +	// * They do not select different objects, but for each optional field used,
    +	//   each ParentRef that selects the same object must set the same set of
    +	//   optional fields to different values. If one ParentRef sets a
    +	//   combination of optional fields, all must set the same combination.
    +	//
    +	// Some examples:
    +	//
    +	// * If one ParentRef sets `sectionName`, all ParentRefs referencing the
    +	//   same object must also set `sectionName`.
    +	// * If one ParentRef sets `port`, all ParentRefs referencing the same
    +	//   object must also set `port`.
    +	// * If one ParentRef sets `sectionName` and `port`, all ParentRefs
    +	//   referencing the same object must also set `sectionName` and `port`.
     	//
     	// It is possible to separately reference multiple distinct objects that may
     	// be collapsed by an implementation. For example, some implementations may
    @@ -189,6 +205,7 @@ type CommonRouteSpec struct {
     	// Gateway has the AllowedRoutes field, and ReferenceGrant provides a
     	// generic way to enable other kinds of cross-namespace reference.
     	//
    +	// 
     	// ParentRefs from a Route to a Service in the same namespace are "producer"
     	// routes, which apply default routing rules to inbound connections from
     	// any namespace to the Service.
    @@ -198,12 +215,13 @@ type CommonRouteSpec struct {
     	// connections originating from the same namespace as the Route, for which
     	// the intended destination of the connections are a Service targeted as a
     	// ParentRef of the Route.
    +	// 
     	//
     	// +optional
     	// +kubebuilder:validation:MaxItems=32
    -	// 
    +	// 
     	// 
    -	// 
    +	// 
     	// 
     	ParentRefs []ParentReference `json:"parentRefs,omitempty"`
     }
    @@ -221,6 +239,28 @@ type PortNumber int32
     // ReferenceGrant object is required in the referent namespace to allow that
     // namespace's owner to accept the reference. See the ReferenceGrant
     // documentation for details.
    +//
    +// 
    +//
    +// When the BackendRef points to a Kubernetes Service, implementations SHOULD
    +// honor the appProtocol field if it is set for the target Service Port.
    +//
    +// Implementations supporting appProtocol SHOULD recognize the Kubernetes
    +// Standard Application Protocols defined in KEP-3726.
    +//
    +// If a Service appProtocol isn't specified, an implementation MAY infer the
    +// backend protocol through its own means. Implementations MAY infer the
    +// protocol from the Route type referring to the backend Service.
    +//
    +// If a Route is not able to send traffic to the backend using the specified
    +// protocol then the backend is considered invalid. Implementations MUST set the
    +// "ResolvedRefs" condition to "False" with the "UnsupportedProtocol" reason.
    +//
    +// 
    +//
    +// Note that when the BackendTLSPolicy object is enabled by the implementation,
    +// there are some extra rules about validity to consider here. See the fields
    +// where this struct is used for more information about the exact behavior.
     type BackendRef struct {
     	// BackendObjectReference references a Kubernetes object.
     	BackendObjectReference `json:",inline"`
    @@ -256,7 +296,7 @@ const (
     	// This condition indicates whether the route has been accepted or rejected
     	// by a Gateway, and why.
     	//
    -	// Possible reasons for this condition to be true are:
    +	// Possible reasons for this condition to be True are:
     	//
     	// * "Accepted"
     	//
    @@ -307,19 +347,22 @@ const (
     	// are incompatible filters present on a route rule (for example if
     	// the URLRewrite and RequestRedirect are both present on an HTTPRoute).
     	RouteReasonIncompatibleFilters RouteConditionReason = "IncompatibleFilters"
    +)
     
    +const (
     	// This condition indicates whether the controller was able to resolve all
     	// the object references for the Route.
     	//
    -	// Possible reasons for this condition to be true are:
    +	// Possible reasons for this condition to be True are:
     	//
     	// * "ResolvedRefs"
     	//
    -	// Possible reasons for this condition to be false are:
    +	// Possible reasons for this condition to be False are:
     	//
     	// * "RefNotPermitted"
     	// * "InvalidKind"
     	// * "BackendNotFound"
    +	// * "UnsupportedProtocol"
     	//
     	// Controllers may raise this condition with other reasons,
     	// but should prefer to use the reasons listed above to improve
    @@ -344,6 +387,48 @@ const (
     	// This reason is used with the "ResolvedRefs" condition when one of the
     	// Route's rules has a reference to a resource that does not exist.
     	RouteReasonBackendNotFound RouteConditionReason = "BackendNotFound"
    +
    +	// This reason is used with the "ResolvedRefs" condition when one of the
    +	// Route's rules has a reference to a resource with an app protocol that
    +	// is not supported by this implementation.
    +	RouteReasonUnsupportedProtocol RouteConditionReason = "UnsupportedProtocol"
    +)
    +
    +const (
    +	// This condition indicates that the Route contains a combination of both
    +	// valid and invalid rules.
    +	//
    +	// When this happens, implementations MUST take one of the following
    +	// approaches:
    +	//
    +	// 1) Drop Rule(s): With this approach, implementations will drop the
    +	//    invalid Route Rule(s) until they are fully valid again. The message
    +	//    for this condition MUST start with the prefix "Dropped Rule" and
    +	//    include information about which Rules have been dropped. In this
    +	//    state, the "Accepted" condition MUST be set to "True" with the latest
    +	//    generation of the resource.
    +	// 2) Fall Back: With this approach, implementations will fall back to the
    +	//    last known good state of the entire Route. The message for this
    +	//    condition MUST start with the prefix "Fall Back" and include
    +	//    information about why the current Rule(s) are invalid. To represent
    +	//    this, the "Accepted" condition MUST be set to "True" with the
    +	//    generation of the last known good state of the resource.
    +	//
    +	// Reverting to the last known good state should only be done by
    +	// implementations that have a means of restoring that state if/when they
    +	// are restarted.
    +	//
    +	// This condition MUST NOT be set if a Route is fully valid, fully invalid,
    +	// or not accepted. By extension, that means that this condition MUST only
    +	// be set when it is "True".
    +	//
    +	// Possible reasons for this condition to be True are:
    +	//
    +	// * "UnsupportedValue"
    +	//
    +	// Controllers may raise this condition with other reasons, but should
    +	// prefer to use the reasons listed above to improve interoperability.
    +	RouteConditionPartiallyInvalid RouteConditionType = "PartiallyInvalid"
     )
     
     // RouteParentStatus describes the status of a route with respect to an
    @@ -487,7 +572,7 @@ type Group string
     type Kind string
     
     // ObjectName refers to the name of a Kubernetes object.
    -// Object names can have a variety of forms, including RFC1123 subdomains,
    +// Object names can have a variety of forms, including RFC 1123 subdomains,
     // RFC 1123 labels, or RFC 1035 labels.
     //
     // +kubebuilder:validation:MinLength=1
    @@ -517,11 +602,22 @@ type Namespace string
     
     // SectionName is the name of a section in a Kubernetes resource.
     //
    +// In the following resources, SectionName is interpreted as the following:
    +//
    +// * Gateway: Listener name
    +// * HTTPRoute: HTTPRouteRule name
    +// * Service: Port name
    +//
    +// Section names can have a variety of forms, including RFC 1123 subdomains,
    +// RFC 1123 labels, or RFC 1035 labels.
    +//
     // This validation is based off of the corresponding Kubernetes validation:
     // https://github.com/kubernetes/apimachinery/blob/02cfb53916346d085a6c6c7c66f882e3c6b0eca6/pkg/util/validation/validation.go#L208
     //
     // Valid values include:
     //
    +// * "example"
    +// * "foo-example"
     // * "example.com"
     // * "foo.example.com"
     //
    @@ -610,6 +706,12 @@ type AddressType string
     // +k8s:deepcopy-gen=false
     type HeaderName string
     
    +// Duration is a string value representing a duration in time. The format is as specified
    +// in GEP-2257, a strict subset of the syntax parsed by Golang time.ParseDuration.
    +//
    +// +kubebuilder:validation:Pattern=`^([0-9]{1,5}(h|m|s|ms)){1,4}$`
    +type Duration string
    +
     const (
     	// A textual representation of a numeric IP address. IPv4
     	// addresses must be in dotted-decimal form. IPv6 addresses
    @@ -641,3 +743,115 @@ const (
     	// Support: Implementation-specific
     	NamedAddressType AddressType = "NamedAddress"
     )
    +
    +// SessionPersistence defines the desired state of SessionPersistence.
    +// +kubebuilder:validation:XValidation:message="AbsoluteTimeout must be specified when cookie lifetimeType is Permanent",rule="!has(self.cookieConfig.lifetimeType) || self.cookieConfig.lifetimeType != 'Permanent' || has(self.absoluteTimeout)"
    +type SessionPersistence struct {
    +	// SessionName defines the name of the persistent session token
    +	// which may be reflected in the cookie or the header. Users
    +	// should avoid reusing session names to prevent unintended
    +	// consequences, such as rejection or unpredictable behavior.
    +	//
    +	// Support: Implementation-specific
    +	//
    +	// +optional
    +	// +kubebuilder:validation:MaxLength=128
    +	SessionName *string `json:"sessionName,omitempty"`
    +
    +	// AbsoluteTimeout defines the absolute timeout of the persistent
    +	// session. Once the AbsoluteTimeout duration has elapsed, the
    +	// session becomes invalid.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	AbsoluteTimeout *Duration `json:"absoluteTimeout,omitempty"`
    +
    +	// IdleTimeout defines the idle timeout of the persistent session.
    +	// Once the session has been idle for more than the specified
    +	// IdleTimeout duration, the session becomes invalid.
    +	//
    +	// Support: Extended
    +	//
    +	// +optional
    +	IdleTimeout *Duration `json:"idleTimeout,omitempty"`
    +
    +	// Type defines the type of session persistence such as through
    +	// the use a header or cookie. Defaults to cookie based session
    +	// persistence.
    +	//
    +	// Support: Core for "Cookie" type
    +	//
    +	// Support: Extended for "Header" type
    +	//
    +	// +optional
    +	// +kubebuilder:default=Cookie
    +	Type *SessionPersistenceType `json:"type,omitempty"`
    +
    +	// CookieConfig provides configuration settings that are specific
    +	// to cookie-based session persistence.
    +	//
    +	// Support: Core
    +	//
    +	// +optional
    +	CookieConfig *CookieConfig `json:"cookieConfig,omitempty"`
    +}
    +
    +// +kubebuilder:validation:Enum=Cookie;Header
    +type SessionPersistenceType string
    +
    +const (
    +	// CookieBasedSessionPersistence specifies cookie-based session
    +	// persistence.
    +	//
    +	// Support: Core
    +	CookieBasedSessionPersistence SessionPersistenceType = "Cookie"
    +
    +	// HeaderBasedSessionPersistence specifies header-based session
    +	// persistence.
    +	//
    +	// Support: Extended
    +	HeaderBasedSessionPersistence SessionPersistenceType = "Header"
    +)
    +
    +// CookieConfig defines the configuration for cookie-based session persistence.
    +type CookieConfig struct {
    +	// LifetimeType specifies whether the cookie has a permanent or
    +	// session-based lifetime. A permanent cookie persists until its
    +	// specified expiry time, defined by the Expires or Max-Age cookie
    +	// attributes, while a session cookie is deleted when the current
    +	// session ends.
    +	//
    +	// When set to "Permanent", AbsoluteTimeout indicates the
    +	// cookie's lifetime via the Expires or Max-Age cookie attributes
    +	// and is required.
    +	//
    +	// When set to "Session", AbsoluteTimeout indicates the
    +	// absolute lifetime of the cookie tracked by the gateway and
    +	// is optional.
    +	//
    +	// Support: Core for "Session" type
    +	//
    +	// Support: Extended for "Permanent" type
    +	//
    +	// +optional
    +	// +kubebuilder:default=Session
    +	LifetimeType *CookieLifetimeType `json:"lifetimeType,omitempty"`
    +}
    +
    +// +kubebuilder:validation:Enum=Permanent;Session
    +type CookieLifetimeType string
    +
    +const (
    +	// SessionCookieLifetimeType specifies the type for a session
    +	// cookie.
    +	//
    +	// Support: Core
    +	SessionCookieLifetimeType CookieLifetimeType = "Session"
    +
    +	// PermanentCookieLifetimeType specifies the type for a permanent
    +	// cookie.
    +	//
    +	// Support: Extended
    +	PermanentCookieLifetimeType CookieLifetimeType = "Permanent"
    +)
    diff --git a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/zz_generated.deepcopy.go b/vendor/sigs.k8s.io/gateway-api/apis/v1/zz_generated.deepcopy.go
    similarity index 73%
    rename from vendor/sigs.k8s.io/gateway-api/apis/v1beta1/zz_generated.deepcopy.go
    rename to vendor/sigs.k8s.io/gateway-api/apis/v1/zz_generated.deepcopy.go
    index d1d46269d269..ddb9bb9d4971 100644
    --- a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/zz_generated.deepcopy.go
    +++ b/vendor/sigs.k8s.io/gateway-api/apis/v1/zz_generated.deepcopy.go
    @@ -18,11 +18,11 @@ limitations under the License.
     
     // Code generated by controller-gen. DO NOT EDIT.
     
    -package v1beta1
    +package v1
     
     import (
    -	"k8s.io/apimachinery/pkg/apis/meta/v1"
    -	"k8s.io/apimachinery/pkg/runtime"
    +	metav1 "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.
    @@ -130,6 +130,327 @@ func (in *CommonRouteSpec) DeepCopy() *CommonRouteSpec {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *CookieConfig) DeepCopyInto(out *CookieConfig) {
    +	*out = *in
    +	if in.LifetimeType != nil {
    +		in, out := &in.LifetimeType, &out.LifetimeType
    +		*out = new(CookieLifetimeType)
    +		**out = **in
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CookieConfig.
    +func (in *CookieConfig) DeepCopy() *CookieConfig {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(CookieConfig)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *FrontendTLSValidation) DeepCopyInto(out *FrontendTLSValidation) {
    +	*out = *in
    +	if in.CACertificateRefs != nil {
    +		in, out := &in.CACertificateRefs, &out.CACertificateRefs
    +		*out = make([]ObjectReference, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FrontendTLSValidation.
    +func (in *FrontendTLSValidation) DeepCopy() *FrontendTLSValidation {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(FrontendTLSValidation)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *GRPCBackendRef) DeepCopyInto(out *GRPCBackendRef) {
    +	*out = *in
    +	in.BackendRef.DeepCopyInto(&out.BackendRef)
    +	if in.Filters != nil {
    +		in, out := &in.Filters, &out.Filters
    +		*out = make([]GRPCRouteFilter, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GRPCBackendRef.
    +func (in *GRPCBackendRef) DeepCopy() *GRPCBackendRef {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GRPCBackendRef)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *GRPCHeaderMatch) DeepCopyInto(out *GRPCHeaderMatch) {
    +	*out = *in
    +	if in.Type != nil {
    +		in, out := &in.Type, &out.Type
    +		*out = new(HeaderMatchType)
    +		**out = **in
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GRPCHeaderMatch.
    +func (in *GRPCHeaderMatch) DeepCopy() *GRPCHeaderMatch {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GRPCHeaderMatch)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *GRPCMethodMatch) DeepCopyInto(out *GRPCMethodMatch) {
    +	*out = *in
    +	if in.Type != nil {
    +		in, out := &in.Type, &out.Type
    +		*out = new(GRPCMethodMatchType)
    +		**out = **in
    +	}
    +	if in.Service != nil {
    +		in, out := &in.Service, &out.Service
    +		*out = new(string)
    +		**out = **in
    +	}
    +	if in.Method != nil {
    +		in, out := &in.Method, &out.Method
    +		*out = new(string)
    +		**out = **in
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GRPCMethodMatch.
    +func (in *GRPCMethodMatch) DeepCopy() *GRPCMethodMatch {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GRPCMethodMatch)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *GRPCRoute) DeepCopyInto(out *GRPCRoute) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	in.Status.DeepCopyInto(&out.Status)
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GRPCRoute.
    +func (in *GRPCRoute) DeepCopy() *GRPCRoute {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GRPCRoute)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *GRPCRoute) 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 *GRPCRouteFilter) DeepCopyInto(out *GRPCRouteFilter) {
    +	*out = *in
    +	if in.RequestHeaderModifier != nil {
    +		in, out := &in.RequestHeaderModifier, &out.RequestHeaderModifier
    +		*out = new(HTTPHeaderFilter)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.ResponseHeaderModifier != nil {
    +		in, out := &in.ResponseHeaderModifier, &out.ResponseHeaderModifier
    +		*out = new(HTTPHeaderFilter)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.RequestMirror != nil {
    +		in, out := &in.RequestMirror, &out.RequestMirror
    +		*out = new(HTTPRequestMirrorFilter)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.ExtensionRef != nil {
    +		in, out := &in.ExtensionRef, &out.ExtensionRef
    +		*out = new(LocalObjectReference)
    +		**out = **in
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GRPCRouteFilter.
    +func (in *GRPCRouteFilter) DeepCopy() *GRPCRouteFilter {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GRPCRouteFilter)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *GRPCRouteList) DeepCopyInto(out *GRPCRouteList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]GRPCRoute, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GRPCRouteList.
    +func (in *GRPCRouteList) DeepCopy() *GRPCRouteList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GRPCRouteList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *GRPCRouteList) 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 *GRPCRouteMatch) DeepCopyInto(out *GRPCRouteMatch) {
    +	*out = *in
    +	if in.Method != nil {
    +		in, out := &in.Method, &out.Method
    +		*out = new(GRPCMethodMatch)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.Headers != nil {
    +		in, out := &in.Headers, &out.Headers
    +		*out = make([]GRPCHeaderMatch, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GRPCRouteMatch.
    +func (in *GRPCRouteMatch) DeepCopy() *GRPCRouteMatch {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GRPCRouteMatch)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *GRPCRouteRule) DeepCopyInto(out *GRPCRouteRule) {
    +	*out = *in
    +	if in.Matches != nil {
    +		in, out := &in.Matches, &out.Matches
    +		*out = make([]GRPCRouteMatch, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.Filters != nil {
    +		in, out := &in.Filters, &out.Filters
    +		*out = make([]GRPCRouteFilter, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.BackendRefs != nil {
    +		in, out := &in.BackendRefs, &out.BackendRefs
    +		*out = make([]GRPCBackendRef, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.SessionPersistence != nil {
    +		in, out := &in.SessionPersistence, &out.SessionPersistence
    +		*out = new(SessionPersistence)
    +		(*in).DeepCopyInto(*out)
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GRPCRouteRule.
    +func (in *GRPCRouteRule) DeepCopy() *GRPCRouteRule {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GRPCRouteRule)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *GRPCRouteSpec) DeepCopyInto(out *GRPCRouteSpec) {
    +	*out = *in
    +	in.CommonRouteSpec.DeepCopyInto(&out.CommonRouteSpec)
    +	if in.Hostnames != nil {
    +		in, out := &in.Hostnames, &out.Hostnames
    +		*out = make([]Hostname, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.Rules != nil {
    +		in, out := &in.Rules, &out.Rules
    +		*out = make([]GRPCRouteRule, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GRPCRouteSpec.
    +func (in *GRPCRouteSpec) DeepCopy() *GRPCRouteSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GRPCRouteSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *GRPCRouteStatus) DeepCopyInto(out *GRPCRouteStatus) {
    +	*out = *in
    +	in.RouteStatus.DeepCopyInto(&out.RouteStatus)
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GRPCRouteStatus.
    +func (in *GRPCRouteStatus) DeepCopy() *GRPCRouteStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GRPCRouteStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *Gateway) DeepCopyInto(out *Gateway) {
     	*out = *in
    @@ -266,11 +587,16 @@ func (in *GatewayClassStatus) DeepCopyInto(out *GatewayClassStatus) {
     	*out = *in
     	if in.Conditions != nil {
     		in, out := &in.Conditions, &out.Conditions
    -		*out = make([]v1.Condition, len(*in))
    +		*out = make([]metav1.Condition, len(*in))
     		for i := range *in {
     			(*in)[i].DeepCopyInto(&(*out)[i])
     		}
     	}
    +	if in.SupportedFeatures != nil {
    +		in, out := &in.SupportedFeatures, &out.SupportedFeatures
    +		*out = make([]SupportedFeature, len(*in))
    +		copy(*out, *in)
    +	}
     }
     
     // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayClassStatus.
    @@ -283,6 +609,40 @@ func (in *GatewayClassStatus) DeepCopy() *GatewayClassStatus {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *GatewayInfrastructure) DeepCopyInto(out *GatewayInfrastructure) {
    +	*out = *in
    +	if in.Labels != nil {
    +		in, out := &in.Labels, &out.Labels
    +		*out = make(map[AnnotationKey]AnnotationValue, len(*in))
    +		for key, val := range *in {
    +			(*out)[key] = val
    +		}
    +	}
    +	if in.Annotations != nil {
    +		in, out := &in.Annotations, &out.Annotations
    +		*out = make(map[AnnotationKey]AnnotationValue, len(*in))
    +		for key, val := range *in {
    +			(*out)[key] = val
    +		}
    +	}
    +	if in.ParametersRef != nil {
    +		in, out := &in.ParametersRef, &out.ParametersRef
    +		*out = new(LocalParametersReference)
    +		**out = **in
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayInfrastructure.
    +func (in *GatewayInfrastructure) DeepCopy() *GatewayInfrastructure {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(GatewayInfrastructure)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *GatewayList) DeepCopyInto(out *GatewayList) {
     	*out = *in
    @@ -332,6 +692,11 @@ func (in *GatewaySpec) DeepCopyInto(out *GatewaySpec) {
     			(*in)[i].DeepCopyInto(&(*out)[i])
     		}
     	}
    +	if in.Infrastructure != nil {
    +		in, out := &in.Infrastructure, &out.Infrastructure
    +		*out = new(GatewayInfrastructure)
    +		(*in).DeepCopyInto(*out)
    +	}
     }
     
     // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewaySpec.
    @@ -356,7 +721,7 @@ func (in *GatewayStatus) DeepCopyInto(out *GatewayStatus) {
     	}
     	if in.Conditions != nil {
     		in, out := &in.Conditions, &out.Conditions
    -		*out = make([]v1.Condition, len(*in))
    +		*out = make([]metav1.Condition, len(*in))
     		for i := range *in {
     			(*in)[i].DeepCopyInto(&(*out)[i])
     		}
    @@ -415,6 +780,11 @@ func (in *GatewayTLSConfig) DeepCopyInto(out *GatewayTLSConfig) {
     			(*in)[i].DeepCopyInto(&(*out)[i])
     		}
     	}
    +	if in.FrontendValidation != nil {
    +		in, out := &in.FrontendValidation, &out.FrontendValidation
    +		*out = new(FrontendTLSValidation)
    +		(*in).DeepCopyInto(*out)
    +	}
     	if in.Options != nil {
     		in, out := &in.Options, &out.Options
     		*out = make(map[AnnotationKey]AnnotationValue, len(*in))
    @@ -815,6 +1185,16 @@ func (in *HTTPRouteRule) DeepCopyInto(out *HTTPRouteRule) {
     			(*in)[i].DeepCopyInto(&(*out)[i])
     		}
     	}
    +	if in.Timeouts != nil {
    +		in, out := &in.Timeouts, &out.Timeouts
    +		*out = new(HTTPRouteTimeouts)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.SessionPersistence != nil {
    +		in, out := &in.SessionPersistence, &out.SessionPersistence
    +		*out = new(SessionPersistence)
    +		(*in).DeepCopyInto(*out)
    +	}
     }
     
     // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPRouteRule.
    @@ -871,6 +1251,31 @@ func (in *HTTPRouteStatus) DeepCopy() *HTTPRouteStatus {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *HTTPRouteTimeouts) DeepCopyInto(out *HTTPRouteTimeouts) {
    +	*out = *in
    +	if in.Request != nil {
    +		in, out := &in.Request, &out.Request
    +		*out = new(Duration)
    +		**out = **in
    +	}
    +	if in.BackendRequest != nil {
    +		in, out := &in.BackendRequest, &out.BackendRequest
    +		*out = new(Duration)
    +		**out = **in
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPRouteTimeouts.
    +func (in *HTTPRouteTimeouts) DeepCopy() *HTTPRouteTimeouts {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(HTTPRouteTimeouts)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *HTTPURLRewriteFilter) DeepCopyInto(out *HTTPURLRewriteFilter) {
     	*out = *in
    @@ -938,7 +1343,7 @@ func (in *ListenerStatus) DeepCopyInto(out *ListenerStatus) {
     	}
     	if in.Conditions != nil {
     		in, out := &in.Conditions, &out.Conditions
    -		*out = make([]v1.Condition, len(*in))
    +		*out = make([]metav1.Condition, len(*in))
     		for i := range *in {
     			(*in)[i].DeepCopyInto(&(*out)[i])
     		}
    @@ -970,6 +1375,41 @@ func (in *LocalObjectReference) DeepCopy() *LocalObjectReference {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *LocalParametersReference) DeepCopyInto(out *LocalParametersReference) {
    +	*out = *in
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalParametersReference.
    +func (in *LocalParametersReference) DeepCopy() *LocalParametersReference {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(LocalParametersReference)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ObjectReference) DeepCopyInto(out *ObjectReference) {
    +	*out = *in
    +	if in.Namespace != nil {
    +		in, out := &in.Namespace, &out.Namespace
    +		*out = new(Namespace)
    +		**out = **in
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectReference.
    +func (in *ObjectReference) DeepCopy() *ObjectReference {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ObjectReference)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *ParametersReference) DeepCopyInto(out *ParametersReference) {
     	*out = *in
    @@ -1030,126 +1470,6 @@ func (in *ParentReference) DeepCopy() *ParentReference {
     	return out
     }
     
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ReferenceGrant) DeepCopyInto(out *ReferenceGrant) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    -	in.Spec.DeepCopyInto(&out.Spec)
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceGrant.
    -func (in *ReferenceGrant) DeepCopy() *ReferenceGrant {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ReferenceGrant)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *ReferenceGrant) 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 *ReferenceGrantFrom) DeepCopyInto(out *ReferenceGrantFrom) {
    -	*out = *in
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceGrantFrom.
    -func (in *ReferenceGrantFrom) DeepCopy() *ReferenceGrantFrom {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ReferenceGrantFrom)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ReferenceGrantList) DeepCopyInto(out *ReferenceGrantList) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ListMeta.DeepCopyInto(&out.ListMeta)
    -	if in.Items != nil {
    -		in, out := &in.Items, &out.Items
    -		*out = make([]ReferenceGrant, len(*in))
    -		for i := range *in {
    -			(*in)[i].DeepCopyInto(&(*out)[i])
    -		}
    -	}
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceGrantList.
    -func (in *ReferenceGrantList) DeepCopy() *ReferenceGrantList {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ReferenceGrantList)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *ReferenceGrantList) 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 *ReferenceGrantSpec) DeepCopyInto(out *ReferenceGrantSpec) {
    -	*out = *in
    -	if in.From != nil {
    -		in, out := &in.From, &out.From
    -		*out = make([]ReferenceGrantFrom, len(*in))
    -		copy(*out, *in)
    -	}
    -	if in.To != nil {
    -		in, out := &in.To, &out.To
    -		*out = make([]ReferenceGrantTo, len(*in))
    -		for i := range *in {
    -			(*in)[i].DeepCopyInto(&(*out)[i])
    -		}
    -	}
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceGrantSpec.
    -func (in *ReferenceGrantSpec) DeepCopy() *ReferenceGrantSpec {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ReferenceGrantSpec)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ReferenceGrantTo) DeepCopyInto(out *ReferenceGrantTo) {
    -	*out = *in
    -	if in.Name != nil {
    -		in, out := &in.Name, &out.Name
    -		*out = new(ObjectName)
    -		**out = **in
    -	}
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceGrantTo.
    -func (in *ReferenceGrantTo) DeepCopy() *ReferenceGrantTo {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ReferenceGrantTo)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *RouteGroupKind) DeepCopyInto(out *RouteGroupKind) {
     	*out = *in
    @@ -1180,7 +1500,7 @@ func (in *RouteNamespaces) DeepCopyInto(out *RouteNamespaces) {
     	}
     	if in.Selector != nil {
     		in, out := &in.Selector, &out.Selector
    -		*out = new(v1.LabelSelector)
    +		*out = new(metav1.LabelSelector)
     		(*in).DeepCopyInto(*out)
     	}
     }
    @@ -1201,7 +1521,7 @@ func (in *RouteParentStatus) DeepCopyInto(out *RouteParentStatus) {
     	in.ParentRef.DeepCopyInto(&out.ParentRef)
     	if in.Conditions != nil {
     		in, out := &in.Conditions, &out.Conditions
    -		*out = make([]v1.Condition, len(*in))
    +		*out = make([]metav1.Condition, len(*in))
     		for i := range *in {
     			(*in)[i].DeepCopyInto(&(*out)[i])
     		}
    @@ -1269,3 +1589,43 @@ func (in *SecretObjectReference) DeepCopy() *SecretObjectReference {
     	in.DeepCopyInto(out)
     	return out
     }
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *SessionPersistence) DeepCopyInto(out *SessionPersistence) {
    +	*out = *in
    +	if in.SessionName != nil {
    +		in, out := &in.SessionName, &out.SessionName
    +		*out = new(string)
    +		**out = **in
    +	}
    +	if in.AbsoluteTimeout != nil {
    +		in, out := &in.AbsoluteTimeout, &out.AbsoluteTimeout
    +		*out = new(Duration)
    +		**out = **in
    +	}
    +	if in.IdleTimeout != nil {
    +		in, out := &in.IdleTimeout, &out.IdleTimeout
    +		*out = new(Duration)
    +		**out = **in
    +	}
    +	if in.Type != nil {
    +		in, out := &in.Type, &out.Type
    +		*out = new(SessionPersistenceType)
    +		**out = **in
    +	}
    +	if in.CookieConfig != nil {
    +		in, out := &in.CookieConfig, &out.CookieConfig
    +		*out = new(CookieConfig)
    +		(*in).DeepCopyInto(*out)
    +	}
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SessionPersistence.
    +func (in *SessionPersistence) DeepCopy() *SessionPersistence {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(SessionPersistence)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    diff --git a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/zz_generated.register.go b/vendor/sigs.k8s.io/gateway-api/apis/v1/zz_generated.register.go
    similarity index 93%
    rename from vendor/sigs.k8s.io/gateway-api/apis/v1beta1/zz_generated.register.go
    rename to vendor/sigs.k8s.io/gateway-api/apis/v1/zz_generated.register.go
    index 05d7898b385c..9c8db216af7e 100644
    --- a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/zz_generated.register.go
    +++ b/vendor/sigs.k8s.io/gateway-api/apis/v1/zz_generated.register.go
    @@ -1,3 +1,6 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
     /*
     Copyright The Kubernetes Authors.
     
    @@ -16,7 +19,7 @@ limitations under the License.
     
     // Code generated by register-gen. DO NOT EDIT.
     
    -package v1beta1
    +package v1
     
     import (
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    @@ -28,11 +31,11 @@ import (
     const GroupName = "gateway.networking.k8s.io"
     
     // GroupVersion specifies the group and the version used to register the objects.
    -var GroupVersion = v1.GroupVersion{Group: GroupName, Version: "v1beta1"}
    +var GroupVersion = v1.GroupVersion{Group: GroupName, Version: "v1"}
     
     // SchemeGroupVersion is group version used to register these objects
     // Deprecated: use GroupVersion instead.
    -var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"}
    +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"}
     
     // Resource takes an unqualified resource and returns a Group qualified GroupResource
     func Resource(resource string) schema.GroupResource {
    @@ -43,7 +46,7 @@ var (
     	// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
     	SchemeBuilder      runtime.SchemeBuilder
     	localSchemeBuilder = &SchemeBuilder
    -	// Depreciated: use Install instead
    +	// Deprecated: use Install instead
     	AddToScheme = localSchemeBuilder.AddToScheme
     	Install     = localSchemeBuilder.AddToScheme
     )
    @@ -58,14 +61,14 @@ func init() {
     // Adds the list of known types to Scheme.
     func addKnownTypes(scheme *runtime.Scheme) error {
     	scheme.AddKnownTypes(SchemeGroupVersion,
    +		&GRPCRoute{},
    +		&GRPCRouteList{},
     		&Gateway{},
     		&GatewayClass{},
     		&GatewayClassList{},
     		&GatewayList{},
     		&HTTPRoute{},
     		&HTTPRouteList{},
    -		&ReferenceGrant{},
    -		&ReferenceGrantList{},
     	)
     	// AddToGroupVersion allows the serialization of client types like ListOptions.
     	v1.AddToGroupVersion(scheme, SchemeGroupVersion)
    diff --git a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/referencegrant_types.go b/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/referencegrant_types.go
    deleted file mode 100644
    index 0b0caf70882a..000000000000
    --- a/vendor/sigs.k8s.io/gateway-api/apis/v1beta1/referencegrant_types.go
    +++ /dev/null
    @@ -1,143 +0,0 @@
    -/*
    -Copyright 2021 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -package v1beta1
    -
    -import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -
    -// +genclient
    -// +kubebuilder:object:root=true
    -// +kubebuilder:resource:categories=gateway-api,shortName=refgrant
    -// +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`
    -// +kubebuilder:storageversion
    -
    -// ReferenceGrant identifies kinds of resources in other namespaces that are
    -// trusted to reference the specified kinds of resources in the same namespace
    -// as the policy.
    -//
    -// Each ReferenceGrant can be used to represent a unique trust relationship.
    -// Additional Reference Grants can be used to add to the set of trusted
    -// sources of inbound references for the namespace they are defined within.
    -//
    -// All cross-namespace references in Gateway API (with the exception of cross-namespace
    -// Gateway-route attachment) require a ReferenceGrant.
    -//
    -// ReferenceGrant is a form of runtime verification allowing users to assert
    -// which cross-namespace object references are permitted. Implementations that
    -// support ReferenceGrant MUST NOT permit cross-namespace references which have
    -// no grant, and MUST respond to the removal of a grant by revoking the access
    -// that the grant allowed.
    -type ReferenceGrant struct {
    -	metav1.TypeMeta   `json:",inline"`
    -	metav1.ObjectMeta `json:"metadata,omitempty"`
    -
    -	// Spec defines the desired state of ReferenceGrant.
    -	Spec ReferenceGrantSpec `json:"spec,omitempty"`
    -
    -	// Note that `Status` sub-resource has been excluded at the
    -	// moment as it was difficult to work out the design.
    -	// `Status` sub-resource may be added in future.
    -}
    -
    -// +kubebuilder:object:root=true
    -// ReferenceGrantList contains a list of ReferenceGrant.
    -type ReferenceGrantList struct {
    -	metav1.TypeMeta `json:",inline"`
    -	metav1.ListMeta `json:"metadata,omitempty"`
    -	Items           []ReferenceGrant `json:"items"`
    -}
    -
    -// ReferenceGrantSpec identifies a cross namespace relationship that is trusted
    -// for Gateway API.
    -type ReferenceGrantSpec struct {
    -	// From describes the trusted namespaces and kinds that can reference the
    -	// resources described in "To". Each entry in this list MUST be considered
    -	// to be an additional place that references can be valid from, or to put
    -	// this another way, entries MUST be combined using OR.
    -	//
    -	// Support: Core
    -	//
    -	// +kubebuilder:validation:MinItems=1
    -	// +kubebuilder:validation:MaxItems=16
    -	From []ReferenceGrantFrom `json:"from"`
    -
    -	// To describes the resources that may be referenced by the resources
    -	// described in "From". Each entry in this list MUST be considered to be an
    -	// additional place that references can be valid to, or to put this another
    -	// way, entries MUST be combined using OR.
    -	//
    -	// Support: Core
    -	//
    -	// +kubebuilder:validation:MinItems=1
    -	// +kubebuilder:validation:MaxItems=16
    -	To []ReferenceGrantTo `json:"to"`
    -}
    -
    -// ReferenceGrantFrom describes trusted namespaces and kinds.
    -type ReferenceGrantFrom struct {
    -	// Group is the group of the referent.
    -	// When empty, the Kubernetes core API group is inferred.
    -	//
    -	// Support: Core
    -	Group Group `json:"group"`
    -
    -	// Kind is the kind of the referent. Although implementations may support
    -	// additional resources, the following types are part of the "Core"
    -	// support level for this field.
    -	//
    -	// When used to permit a SecretObjectReference:
    -	//
    -	// * Gateway
    -	//
    -	// When used to permit a BackendObjectReference:
    -	//
    -	// * GRPCRoute
    -	// * HTTPRoute
    -	// * TCPRoute
    -	// * TLSRoute
    -	// * UDPRoute
    -	Kind Kind `json:"kind"`
    -
    -	// Namespace is the namespace of the referent.
    -	//
    -	// Support: Core
    -	Namespace Namespace `json:"namespace"`
    -}
    -
    -// ReferenceGrantTo describes what Kinds are allowed as targets of the
    -// references.
    -type ReferenceGrantTo struct {
    -	// Group is the group of the referent.
    -	// When empty, the Kubernetes core API group is inferred.
    -	//
    -	// Support: Core
    -	Group Group `json:"group"`
    -
    -	// Kind is the kind of the referent. Although implementations may support
    -	// additional resources, the following types are part of the "Core"
    -	// support level for this field:
    -	//
    -	// * Secret when used to permit a SecretObjectReference
    -	// * Service when used to permit a BackendObjectReference
    -	Kind Kind `json:"kind"`
    -
    -	// Name is the name of the referent. When unspecified, this policy
    -	// refers to all resources of the specified Group and Kind in the local
    -	// namespace.
    -	//
    -	// +optional
    -	Name *ObjectName `json:"name,omitempty"`
    -}
    diff --git a/vendor/sigs.k8s.io/json/Makefile b/vendor/sigs.k8s.io/json/Makefile
    index 07b8bfa857f5..fb6cf040f5c8 100644
    --- a/vendor/sigs.k8s.io/json/Makefile
    +++ b/vendor/sigs.k8s.io/json/Makefile
    @@ -19,7 +19,7 @@ vet:
     	go vet sigs.k8s.io/json
     
     	@echo "checking for external dependencies"
    -	@deps=$$(go mod graph); \
    +	@deps=$$(go list -f '{{ if not (or .Standard .Module.Main) }}{{.ImportPath}}{{ end }}' -deps sigs.k8s.io/json/... || true); \
     	if [ -n "$${deps}" ]; then \
     		echo "only stdlib dependencies allowed, found:"; \
     		echo "$${deps}"; \
    diff --git a/vendor/sigs.k8s.io/json/internal/golang/encoding/json/decode.go b/vendor/sigs.k8s.io/json/internal/golang/encoding/json/decode.go
    index 6a13cf2df0a0..d538ac119b7e 100644
    --- a/vendor/sigs.k8s.io/json/internal/golang/encoding/json/decode.go
    +++ b/vendor/sigs.k8s.io/json/internal/golang/encoding/json/decode.go
    @@ -21,10 +21,10 @@ import (
     
     // Unmarshal parses the JSON-encoded data and stores the result
     // in the value pointed to by v. If v is nil or not a pointer,
    -// Unmarshal returns an InvalidUnmarshalError.
    +// Unmarshal returns an [InvalidUnmarshalError].
     //
     // Unmarshal uses the inverse of the encodings that
    -// Marshal uses, allocating maps, slices, and pointers as necessary,
    +// [Marshal] uses, allocating maps, slices, and pointers as necessary,
     // with the following additional rules:
     //
     // To unmarshal JSON into a pointer, Unmarshal first handles the case of
    @@ -33,28 +33,28 @@ import (
     // the value pointed at by the pointer. If the pointer is nil, Unmarshal
     // allocates a new value for it to point to.
     //
    -// To unmarshal JSON into a value implementing the Unmarshaler interface,
    -// Unmarshal calls that value's UnmarshalJSON method, including
    +// To unmarshal JSON into a value implementing [Unmarshaler],
    +// Unmarshal calls that value's [Unmarshaler.UnmarshalJSON] method, including
     // when the input is a JSON null.
    -// Otherwise, if the value implements encoding.TextUnmarshaler
    -// and the input is a JSON quoted string, Unmarshal calls that value's
    -// UnmarshalText method with the unquoted form of the string.
    +// Otherwise, if the value implements [encoding.TextUnmarshaler]
    +// and the input is a JSON quoted string, Unmarshal calls
    +// [encoding.TextUnmarshaler.UnmarshalText] with the unquoted form of the string.
     //
     // To unmarshal JSON into a struct, Unmarshal matches incoming object
    -// keys to the keys used by Marshal (either the struct field name or its tag),
    +// keys to the keys used by [Marshal] (either the struct field name or its tag),
     // preferring an exact match but also accepting a case-insensitive match. By
     // default, object keys which don't have a corresponding struct field are
    -// ignored (see Decoder.DisallowUnknownFields for an alternative).
    +// ignored (see [Decoder.DisallowUnknownFields] for an alternative).
     //
     // To unmarshal JSON into an interface value,
     // Unmarshal stores one of these in the interface value:
     //
    -//	bool, for JSON booleans
    -//	float64, for JSON numbers
    -//	string, for JSON strings
    -//	[]interface{}, for JSON arrays
    -//	map[string]interface{}, for JSON objects
    -//	nil for JSON null
    +//   - bool, for JSON booleans
    +//   - float64, for JSON numbers
    +//   - string, for JSON strings
    +//   - []interface{}, for JSON arrays
    +//   - map[string]interface{}, for JSON objects
    +//   - nil for JSON null
     //
     // To unmarshal a JSON array into a slice, Unmarshal resets the slice length
     // to zero and then appends each element to the slice.
    @@ -72,16 +72,15 @@ import (
     // use. If the map is nil, Unmarshal allocates a new map. Otherwise Unmarshal
     // reuses the existing map, keeping existing entries. Unmarshal then stores
     // key-value pairs from the JSON object into the map. The map's key type must
    -// either be any string type, an integer, implement json.Unmarshaler, or
    -// implement encoding.TextUnmarshaler.
    +// either be any string type, an integer, or implement [encoding.TextUnmarshaler].
     //
    -// If the JSON-encoded data contain a syntax error, Unmarshal returns a SyntaxError.
    +// If the JSON-encoded data contain a syntax error, Unmarshal returns a [SyntaxError].
     //
     // If a JSON value is not appropriate for a given target type,
     // or if a JSON number overflows the target type, Unmarshal
     // skips that field and completes the unmarshaling as best it can.
     // If no more serious errors are encountered, Unmarshal returns
    -// an UnmarshalTypeError describing the earliest such error. In any
    +// an [UnmarshalTypeError] describing the earliest such error. In any
     // case, it's not guaranteed that all the remaining fields following
     // the problematic one will be unmarshaled into the target object.
     //
    @@ -119,7 +118,7 @@ func Unmarshal(data []byte, v any, opts ...UnmarshalOpt) error {
     // a JSON value. UnmarshalJSON must copy the JSON data
     // if it wishes to retain the data after returning.
     //
    -// By convention, to approximate the behavior of Unmarshal itself,
    +// By convention, to approximate the behavior of [Unmarshal] itself,
     // Unmarshalers implement UnmarshalJSON([]byte("null")) as a no-op.
     type Unmarshaler interface {
     	UnmarshalJSON([]byte) error
    @@ -157,8 +156,8 @@ func (e *UnmarshalFieldError) Error() string {
     	return "json: cannot unmarshal object key " + strconv.Quote(e.Key) + " into unexported field " + e.Field.Name + " of type " + e.Type.String()
     }
     
    -// An InvalidUnmarshalError describes an invalid argument passed to Unmarshal.
    -// (The argument to Unmarshal must be a non-nil pointer.)
    +// An InvalidUnmarshalError describes an invalid argument passed to [Unmarshal].
    +// (The argument to [Unmarshal] must be a non-nil pointer.)
     type InvalidUnmarshalError struct {
     	Type reflect.Type
     }
    @@ -573,17 +572,10 @@ func (d *decodeState) array(v reflect.Value) error {
     			break
     		}
     
    -		// Get element of array, growing if necessary.
    +		// Expand slice length, growing the slice if necessary.
     		if v.Kind() == reflect.Slice {
    -			// Grow slice if necessary
     			if i >= v.Cap() {
    -				newcap := v.Cap() + v.Cap()/2
    -				if newcap < 4 {
    -					newcap = 4
    -				}
    -				newv := reflect.MakeSlice(v.Type(), v.Len(), newcap)
    -				reflect.Copy(newv, v)
    -				v.Set(newv)
    +				v.Grow(1)
     			}
     			if i >= v.Len() {
     				v.SetLen(i + 1)
    @@ -620,13 +612,11 @@ func (d *decodeState) array(v reflect.Value) error {
     
     	if i < v.Len() {
     		if v.Kind() == reflect.Array {
    -			// Array. Zero the rest.
    -			z := reflect.Zero(v.Type().Elem())
     			for ; i < v.Len(); i++ {
    -				v.Index(i).Set(z)
    +				v.Index(i).SetZero() // zero remainder of array
     			}
     		} else {
    -			v.SetLen(i)
    +			v.SetLen(i) // truncate the slice
     		}
     	}
     	if i == 0 && v.Kind() == reflect.Slice {
    @@ -636,7 +626,7 @@ func (d *decodeState) array(v reflect.Value) error {
     }
     
     var nullLiteral = []byte("null")
    -var textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem()
    +var textUnmarshalerType = reflect.TypeFor[encoding.TextUnmarshaler]()
     
     // object consumes an object from d.data[d.off-1:], decoding into v.
     // The first byte ('{') of the object has been read already.
    @@ -776,7 +766,7 @@ func (d *decodeState) object(v reflect.Value) error {
     			if !mapElem.IsValid() {
     				mapElem = reflect.New(elemType).Elem()
     			} else {
    -				mapElem.Set(reflect.Zero(elemType))
    +				mapElem.SetZero()
     			}
     			subv = mapElem
     			if checkDuplicateField != nil {
    @@ -784,28 +774,14 @@ func (d *decodeState) object(v reflect.Value) error {
     			}
     			d.appendStrictFieldStackKey(string(key))
     		} else {
    -			var f *field
    -			if i, ok := fields.nameIndex[string(key)]; ok {
    -				// Found an exact name match.
    -				f = &fields.list[i]
    -				if checkDuplicateField != nil {
    -					checkDuplicateField(i, f.name)
    -				}
    -			} else if !d.caseSensitive {
    -				// Fall back to the expensive case-insensitive
    -				// linear search.
    -				for i := range fields.list {
    -					ff := &fields.list[i]
    -					if ff.equalFold(ff.nameBytes, key) {
    -						f = ff
    -						if checkDuplicateField != nil {
    -							checkDuplicateField(i, f.name)
    -						}
    -						break
    -					}
    -				}
    +			f := fields.byExactName[string(key)]
    +			if f == nil && !d.caseSensitive {
    +				f = fields.byFoldedName[string(foldName(key))]
     			}
     			if f != nil {
    +				if checkDuplicateField != nil {
    +					checkDuplicateField(f.listIndex, f.name)
    +				}
     				subv = v
     				destring = f.quoted
     				for _, i := range f.index {
    @@ -874,33 +850,35 @@ func (d *decodeState) object(v reflect.Value) error {
     		if v.Kind() == reflect.Map {
     			kt := t.Key()
     			var kv reflect.Value
    -			switch {
    -			case reflect.PointerTo(kt).Implements(textUnmarshalerType):
    +			if reflect.PointerTo(kt).Implements(textUnmarshalerType) {
     				kv = reflect.New(kt)
     				if err := d.literalStore(item, kv, true); err != nil {
     					return err
     				}
     				kv = kv.Elem()
    -			case kt.Kind() == reflect.String:
    -				kv = reflect.ValueOf(key).Convert(kt)
    -			default:
    +			} else {
     				switch kt.Kind() {
    +				case reflect.String:
    +					kv = reflect.New(kt).Elem()
    +					kv.SetString(string(key))
     				case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
     					s := string(key)
     					n, err := strconv.ParseInt(s, 10, 64)
    -					if err != nil || reflect.Zero(kt).OverflowInt(n) {
    +					if err != nil || kt.OverflowInt(n) {
     						d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: kt, Offset: int64(start + 1)})
     						break
     					}
    -					kv = reflect.ValueOf(n).Convert(kt)
    +					kv = reflect.New(kt).Elem()
    +					kv.SetInt(n)
     				case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
     					s := string(key)
     					n, err := strconv.ParseUint(s, 10, 64)
    -					if err != nil || reflect.Zero(kt).OverflowUint(n) {
    +					if err != nil || kt.OverflowUint(n) {
     						d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: kt, Offset: int64(start + 1)})
     						break
     					}
    -					kv = reflect.ValueOf(n).Convert(kt)
    +					kv = reflect.New(kt).Elem()
    +					kv.SetUint(n)
     				default:
     					panic("json: Unexpected key type") // should never occur
     				}
    @@ -950,12 +928,12 @@ func (d *decodeState) convertNumber(s string) (any, error) {
     
     	f, err := strconv.ParseFloat(s, 64)
     	if err != nil {
    -		return nil, &UnmarshalTypeError{Value: "number " + s, Type: reflect.TypeOf(0.0), Offset: int64(d.off)}
    +		return nil, &UnmarshalTypeError{Value: "number " + s, Type: reflect.TypeFor[float64](), Offset: int64(d.off)}
     	}
     	return f, nil
     }
     
    -var numberType = reflect.TypeOf(Number(""))
    +var numberType = reflect.TypeFor[Number]()
     
     // literalStore decodes a literal stored in item into v.
     //
    @@ -965,7 +943,7 @@ var numberType = reflect.TypeOf(Number(""))
     func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool) error {
     	// Check for unmarshaler.
     	if len(item) == 0 {
    -		//Empty string given
    +		// Empty string given.
     		d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()))
     		return nil
     	}
    @@ -1012,7 +990,7 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool
     		}
     		switch v.Kind() {
     		case reflect.Interface, reflect.Pointer, reflect.Map, reflect.Slice:
    -			v.Set(reflect.Zero(v.Type()))
    +			v.SetZero()
     			// otherwise, ignore null for primitives/string
     		}
     	case 't', 'f': // true, false
    @@ -1064,10 +1042,11 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool
     			}
     			v.SetBytes(b[:n])
     		case reflect.String:
    -			if v.Type() == numberType && !isValidNumber(string(s)) {
    +			t := string(s)
    +			if v.Type() == numberType && !isValidNumber(t) {
     				return fmt.Errorf("json: invalid number literal, trying to unmarshal %q into Number", item)
     			}
    -			v.SetString(string(s))
    +			v.SetString(t)
     		case reflect.Interface:
     			if v.NumMethod() == 0 {
     				v.Set(reflect.ValueOf(string(s)))
    @@ -1083,13 +1062,12 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool
     			}
     			panic(phasePanicMsg)
     		}
    -		s := string(item)
     		switch v.Kind() {
     		default:
     			if v.Kind() == reflect.String && v.Type() == numberType {
     				// s must be a valid number, because it's
     				// already been tokenized.
    -				v.SetString(s)
    +				v.SetString(string(item))
     				break
     			}
     			if fromQuoted {
    @@ -1097,7 +1075,7 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool
     			}
     			d.saveError(&UnmarshalTypeError{Value: "number", Type: v.Type(), Offset: int64(d.readIndex())})
     		case reflect.Interface:
    -			n, err := d.convertNumber(s)
    +			n, err := d.convertNumber(string(item))
     			if err != nil {
     				d.saveError(err)
     				break
    @@ -1109,25 +1087,25 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool
     			v.Set(reflect.ValueOf(n))
     
     		case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
    -			n, err := strconv.ParseInt(s, 10, 64)
    +			n, err := strconv.ParseInt(string(item), 10, 64)
     			if err != nil || v.OverflowInt(n) {
    -				d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: v.Type(), Offset: int64(d.readIndex())})
    +				d.saveError(&UnmarshalTypeError{Value: "number " + string(item), Type: v.Type(), Offset: int64(d.readIndex())})
     				break
     			}
     			v.SetInt(n)
     
     		case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
    -			n, err := strconv.ParseUint(s, 10, 64)
    +			n, err := strconv.ParseUint(string(item), 10, 64)
     			if err != nil || v.OverflowUint(n) {
    -				d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: v.Type(), Offset: int64(d.readIndex())})
    +				d.saveError(&UnmarshalTypeError{Value: "number " + string(item), Type: v.Type(), Offset: int64(d.readIndex())})
     				break
     			}
     			v.SetUint(n)
     
     		case reflect.Float32, reflect.Float64:
    -			n, err := strconv.ParseFloat(s, v.Type().Bits())
    +			n, err := strconv.ParseFloat(string(item), v.Type().Bits())
     			if err != nil || v.OverflowFloat(n) {
    -				d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: v.Type(), Offset: int64(d.readIndex())})
    +				d.saveError(&UnmarshalTypeError{Value: "number " + string(item), Type: v.Type(), Offset: int64(d.readIndex())})
     				break
     			}
     			v.SetFloat(n)
    diff --git a/vendor/sigs.k8s.io/json/internal/golang/encoding/json/encode.go b/vendor/sigs.k8s.io/json/internal/golang/encoding/json/encode.go
    index 5b67251fbb85..eb73bff58b02 100644
    --- a/vendor/sigs.k8s.io/json/internal/golang/encoding/json/encode.go
    +++ b/vendor/sigs.k8s.io/json/internal/golang/encoding/json/encode.go
    @@ -12,12 +12,13 @@ package json
     
     import (
     	"bytes"
    +	"cmp"
     	"encoding"
     	"encoding/base64"
     	"fmt"
     	"math"
     	"reflect"
    -	"sort"
    +	"slices"
     	"strconv"
     	"strings"
     	"sync"
    @@ -28,29 +29,30 @@ import (
     // Marshal returns the JSON encoding of v.
     //
     // Marshal traverses the value v recursively.
    -// If an encountered value implements the Marshaler interface
    -// and is not a nil pointer, Marshal calls its MarshalJSON method
    -// to produce JSON. If no MarshalJSON method is present but the
    -// value implements encoding.TextMarshaler instead, Marshal calls
    -// its MarshalText method and encodes the result as a JSON string.
    +// If an encountered value implements [Marshaler]
    +// and is not a nil pointer, Marshal calls [Marshaler.MarshalJSON]
    +// to produce JSON. If no [Marshaler.MarshalJSON] method is present but the
    +// value implements [encoding.TextMarshaler] instead, Marshal calls
    +// [encoding.TextMarshaler.MarshalText] and encodes the result as a JSON string.
     // The nil pointer exception is not strictly necessary
     // but mimics a similar, necessary exception in the behavior of
    -// UnmarshalJSON.
    +// [Unmarshaler.UnmarshalJSON].
     //
     // Otherwise, Marshal uses the following type-dependent default encodings:
     //
     // Boolean values encode as JSON booleans.
     //
    -// Floating point, integer, and Number values encode as JSON numbers.
    +// Floating point, integer, and [Number] values encode as JSON numbers.
    +// NaN and +/-Inf values will return an [UnsupportedValueError].
     //
     // String values encode as JSON strings coerced to valid UTF-8,
     // replacing invalid bytes with the Unicode replacement rune.
     // So that the JSON will be safe to embed inside HTML